[
  {
    "path": ".gitignore",
    "content": ".idea\n.aws-credentials\n.terraform\n*terraform.tfvars\n*.tfstate\n*.tfstate.backup\n*.terraform.tfstate.lock.info\ncredentials.txt\n.terraform.lock.hcl\n*.tfvars\n*.pem\n\n### docker-compose kitchen\n.data\nhsperfdata_root\n\n### Ignore till reviewd\nto-be-reviewed\n\n\n\n\n### coding-tasks\n\nnode_modules\npackage-lock.json\n\n\n### ansible-kitchen\n\n.vagrant\n*.retry\n.venv\n\n# pre and post tasks folders (user defined)\npre_tasks/\npost_tasks/\n.kitchen/\n.kitchen.local.yml\n.bundle\n\n\n## python\n__pycache__\n\n\n## go\npkg\nbin\n\n## node\n.env\n\n## python\nvenv\n\n## Temp\nhome/infrastructure-as-code/terraform/oci/task-004-kubernetes-cluster/\nhome/infrastructure-as-code/terraform/oci/task-005-set-up-resource-discovery/\n\n## tmp\ntmp\n\n## Private\n.private"
  },
  {
    "path": "README.md",
    "content": "# Home\n\n> [Auto](https://github.com/codeaprendiz/learn_fullstack/blob/main/home/php/intermediate/taskset_intermediate_php/task_004_createGlobalMarkdownTable/generate-readme.php) generated ReadMe. Number of tasks: 473\n\n- [cloud certifications](#cloud_certifications)\n- [cloud providers](#cloud_providers)\n- [containers](#containers)\n- [databases](#databases)\n- [devops blogs](#devops_blogs)\n- [infrastructure as code](#infrastructure_as_code)\n- [interview](#interview)\n- [observability](#observability)\n- [os and concepts](#os_and_concepts)\n- [productivity tools](#productivity_tools)\n- [security](#security)\n- [web servers](#web_servers)\n\n## cloud_certifications\n\n| aws                                       |\n|-------------------------------------------|\n| [Tasks: 1](home/cloud_certifications/aws) |\n\n## cloud_providers\n\n| aws                                  | azure                                   | gcp                                   | oci                                  |\n|--------------------------------------|-----------------------------------------|---------------------------------------|--------------------------------------|\n| [Tasks: 9](home/cloud_providers/aws) | [Tasks: 11](home/cloud_providers/azure) | [Tasks: 42](home/cloud_providers/gcp) | [Tasks: 3](home/cloud_providers/oci) |\n\n## containers\n\n| docker                              | docker_compose                              | kubernetes                              |\n|-------------------------------------|---------------------------------------------|-----------------------------------------|\n| [Tasks: 33](home/containers/docker) | [Tasks: 16](home/containers/docker_compose) | [Tasks: 67](home/containers/kubernetes) |\n\n## databases\n\n| mongo                            | mssql                             | mysql                            | oracle19c                            | postgreSQL                            |\n|----------------------------------|-----------------------------------|----------------------------------|--------------------------------------|---------------------------------------|\n| [Tasks: 4](home/databases/mongo) | [Tasks: 38](home/databases/mssql) | [Tasks: 6](home/databases/mysql) | [Tasks: 1](home/databases/oracle19c) | [Tasks: 7](home/databases/postgreSQL) |\n\n## devops_blogs\n\n\n## infrastructure_as_code\n\n| ansible                                          | aws_terraform                                          | gcp_terraform                                         | oci_terraform                                         |\n|--------------------------------------------------|--------------------------------------------------------|-------------------------------------------------------|-------------------------------------------------------|\n| [Tasks: 10](home/infrastructure_as_code/ansible) | [Tasks: 31](home/infrastructure_as_code/terraform/aws) | [Tasks: 8](home/infrastructure_as_code/terraform/gcp) | [Tasks: 4](home/infrastructure_as_code/terraform/oci) |\n\n## interview\n\n| coding_assignments                             |\n|------------------------------------------------|\n| [Tasks: 11](home/interview/coding_assignments) |\n\n## observability\n\n| metrics                                | opentelemetry                                | prometheus                                |\n|----------------------------------------|----------------------------------------------|-------------------------------------------|\n| [Tasks: 3](home/observability/metrics) | [Tasks: 2](home/observability/opentelemetry) | [Tasks: 3](home/observability/prometheus) |\n\n## os_and_concepts\n\n| commands_linux                                    | commands_windows                                  | concepts_linux                                   |\n|---------------------------------------------------|---------------------------------------------------|--------------------------------------------------|\n| [Tasks: 131](home/os_and_concepts/commands_linux) | [Tasks: 7](home/os_and_concepts/commands_windows) | [Tasks: 14](home/os_and_concepts/concepts_linux) |\n\n## productivity_tools\n\n|                                     |\n|-------------------------------------|\n| [Tasks: 6](home/productivity_tools) |\n\n## security\n\n| trivy                           |\n|---------------------------------|\n| [Tasks: 1](home/security/trivy) |\n\n## web_servers\n\n| nginx                              |\n|------------------------------------|\n| [Tasks: 4](home/web_servers/nginx) |\n"
  },
  {
    "path": "ReadMe_static.md",
    "content": "# ToDos\n\n- SAST\n- DAST\n- IAST\n\n- Checkmarx\n- Trivy\n- SonarQube\n"
  },
  {
    "path": "_config.yml",
    "content": "theme: jekyll-theme-cayman"
  },
  {
    "path": "home/cloud_certifications/aws/ReadMe.md",
    "content": "# taskset_aws_cloud_certifications\n\n> [Auto](https://github.com/codeaprendiz/learn_fullstack/blob/main/home/php/intermediate/taskset_intermediate_php/task_004_createGlobalMarkdownTable/generate-readme.php) generated ReadMe. Number of tasks: 1\n\n| Task     | Description                                                                                                                                         |\n|----------|-----------------------------------------------------------------------------------------------------------------------------------------------------|\n| task_001 | [task_001_aws_certified_solutions_architect_professional](taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional) |\n"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/ReadMe.md",
    "content": "[Cheat Sheet - AWS Pro Path](https://tutorialsdojo.com/aws-certified-solutions-architect-professional)\n\n[Free AWS Learning Plan](https://explore.skillbuilder.aws/learn/signin)\n\n[Comparision of AWS Services](https://tutorialsdojo.com/comparison-of-aws-services)\n\n- [API Gateway](apiGateway.md)\n- [Application DiscoveryService](applicationDiscoveryService.md)\n- [Aurora](aurora.md)\n- [Backup](backup.md)\n- [Batch](batch.md)\n- [Best Practices](bestPractices.md)\n- [Billing And Cost Management](billingAndCostManagement.md)\n- [Certificate Manager](certificateManager.md)\n- [Cloud Adoption Readiness Tool  CART](cloudAdoptionReadinessTool.md)\n- [Cloud Formation](cloudFormation.md)\n- [Cloud Front](cloudFront.md)\n- [CloudHSM](cloudHSM.md)\n- [CloudSearch](cloudSearch.md)\n- [CloudTrail](cloudTrail.md)\n- [CloudWatch](cloudwatch.md)\n- [CloudWatchLogs](cloudWatchLogs.md)\n- [CodeBuild](codeBuild.md)\n- [CodeCommit](codeCommit.md)\n- [CodeDeploy](codeDeploy.md)\n- [CodePipeline](codePipeline.md)\n- [Cognito](cognito.md)\n- [Command Line Interface](commandLineInterface.md)\n- [Config](config.md)\n- [Connect](connect.md)\n- [ControlTower](awsControlTower.md)\n- [Data Migration Service](dataMigrationService.md)\n- [DeveloperToolsConsole](developerToolsConsole.md)\n- [Direct Connect](directConnect.md)\n- [Dynamo DB](dynamodb.md)\n- [EC2](ec2.md)\n- [EC2 Autoscaling](ec2AutoScaling.md)\n- [ECS](ecs.md)\n- [ElasticBeanStalk](elasticBeanStalk.md)\n- [Event Bridge](eventBridge.md)\n- [Elastic Cache](elasticCache.md)\n- [Elastic File System](elasticFileSystem.md)\n- [Elastic Load Balancing](elasticLoadBalancing.md)\n- [Guard Duty](guardDuty.md)\n- [IAM](iam.md)\n- [Inspector](inspector.md)\n- [Kinesis](kinesis.md)\n- [Lambda](lambda.md)\n- [Lex](lex.md)\n- [Macie](macie.md)\n- [Mechanical Turk](mechanicalTurk.md)\n- [Migration Hub](migrationHub.md)\n- [OpsWorks](opsworks.md)\n- [Organization](organizations.md)\n- [Quick Sight](quickSight.md)\n- [RDS](rds.md)\n- [Redshift](redShift.md)\n- [Rekognition](rekognition.md)\n- [Resource Access Manager](resourceAccessManager.md)\n- [Route53](route53.md)\n- [S3](s3.md)\n- [SageMaker](sageMaker.md)\n- [Schema Conversion Tool](schemaConversionTool.md)\n- [Secrets Manager](secretsManager.md)\n- [Security Token Service](securityTokenService.md)\n- [Serverless Application Model](serverlessApplicationModel.md)\n- [Server Migration Service](serverMigrationService.md)\n- [Service Catalog](serviceCatalog.md)\n- [Shield](shield.md)\n- [Simple Notification Service](simpleNotificationService.md)\n- [Simple Queue Service](simpleQueueService.md)\n- [Simple Workflow Service](simpleWorkflowService.md)\n- [Single Sing-On](singleSignOn.md)\n- [Snowball](snowball.md)\n- [Snowball Edge](snowballEdge.md)\n- [Storage Gatway](storageGateway.md)\n- [System Manager](systemManager.md)\n- [Transcribe](transcribe.md)\n- [VPC](vpc.md)\n- [WAF](waf.md)\n- [Web Identify Federation](webIdentifyFederation.md)\n- [Well-Architected](wellArchitected.md)\n- [Whitepapers](whitepapers.md)"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/apiGateway.md",
    "content": "# API Gateway\n\n- [CheatSheet - API Gateway](https://tutorialsdojo.com/amazon-api-gateway)\n- [CheatSheet - How to invalidate API gateway cache](https://tutorialsdojo.com/how-to-invalidate-api-gateway-cache)\n- [FAQs - API Gateway](https://aws.amazon.com/api-gateway/faqs)\n\n## Enabling API caching to enhance responsiveness\n\n[Enabling API caching to enhance responsiveness](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-caching.html)\n\n- You can enable API caching in Amazon API Gateway to cache your endpoint's responses.\n- With caching, you can reduce the number of calls made to your endpoint and also improve the latency of requests to your API.\n- When you enable caching for a stage, API Gateway caches responses from your endpoint for a specified time-to-live (TTL) period, in seconds.\n- API Gateway then responds to the request by looking up the endpoint response from the cache instead of making a request to your endpoint\n- The default TTL value for API caching is 300 seconds. The maximum TTL value is 3600 seconds. TTL=0 means caching is disabled.\n\n## Working with WebSocket APIs\n\n[Working with WebSocket APIs](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api.html)\n\n- A WebSocket API in API Gateway is a collection of WebSocket routes that are integrated with backend HTTP endpoints, Lambda functions, or other AWS services.\n- API Gateway WebSocket APIs are bidirectional. A client can send messages to a service, and services can independently send messages to clients\n- This bidirectional behavior enables richer client/service interactions because services can push data to clients without requiring clients to make an explicit request\n- WebSocket APIs are often used in real-time applications such as chat applications, collaboration platforms, multiplayer games, and financial trading platforms.\n\n\n### Use @connections commands in your backend service\n\n[Use @connections commands in your backend service](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-how-to-call-websocket-api-connections.html)\n\nYour backend service can use the following WebSocket connection HTTP requests to send a callback message to a connected client, get connection information, or disconnect the client\n\n```bash\nPOST https://{api-id}.execute-api.us-east-1.amazonaws.com/{stage}/@connections/{connection_id}\n```\n\n### Lambda Integration\n\n#### Understand API Gateway Lambda proxy integration\n\n[Understand API Gateway Lambda proxy integration](https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html)\n\n- Amazon API Gateway Lambda proxy integration is a simple, powerful, and nimble mechanism to build an API with a setup of a single API method\n- The Lambda proxy integration allows the client to call a single Lambda function in the backend. \n- The function accesses many resources or features of other AWS services, including calling other Lambda functions.\n\n\n## Tutorials\n\n### Tutorial: Create a REST API as an Amazon Kinesis proxy in API Gateway\n\n[Tutorial: Create a REST API as an Amazon Kinesis proxy in API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/integrating-api-with-aws-services-kinesis.html)\n\n\n## Notes\n\n- Lambda can scale faster than the regular Auto Scaling feature of Amazon EC2, Amazon Elastic Beanstalk, or Amazon ECS. This is because AWS Lambda is more lightweight than other computing services"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/applicationDiscoveryService.md",
    "content": "# AWS Application Discovery Service\n\n[What Is AWS Application Discovery Service?](https://docs.aws.amazon.com/application-discovery/latest/userguide/what-is-appdiscovery.html)\n\n- AWS Application Discovery Service helps you plan your migration to the AWS cloud by collecting usage and configuration data about your on-premises servers.\n- Application Discovery Service is integrated with AWS Migration Hub, which simplifies your migration tracking as it aggregates your migration status information into a single console. \n- You can view the discovered servers, group them into applications, and then track the migration status of each application from the Migration Hub console in your home region.\n- All discovered data is stored in your AWS Migration Hub home region. \n- Therefore, you must set your home region in the Migration Hub console or with CLI commands before performing any discovery and migration activities. \n- Your data can be exported for analysis in Microsoft Excel or AWS analysis tools such as Amazon Athena and Amazon QuickSight.\n- Application Discovery Service offers two ways of performing discovery and collecting data about your on-premises servers:\n  - Agentless discovery can be performed by deploying the AWS Agentless Discovery Connector (OVA file) through your VMware vCenter\n  - Agent-based discovery can be performed by deploying the AWS Application Discovery Agent on each of your VMs and physical servers.\n"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/aurora.md",
    "content": "# Aurora\n\n[Cheat Sheet - RDS](https://tutorialsdojo.com/amazon-relational-database-service-amazon-rds)\n\n[What is Amazon Aurora?](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)\n\n- Amazon Aurora (Aurora) is a fully managed relational database engine that's compatible with MySQL and PostgreSQL\n- The code, tools, and applications you use today with your existing MySQL and PostgreSQL databases can be used with Aurora.\n- With some workloads, Aurora can deliver up to five times the throughput of MySQL and up to three times the throughput of PostgreSQL without requiring changes to most of your existing applications.\n\n## Amazon Aurora DB clusters\n\n[Amazon Aurora DB clusters](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Overview.html)\n\n- An Amazon Aurora DB cluster consists of one or more DB instances and a cluster volume that manages the data for those DB instances.\n- An Aurora cluster volume is a virtual database storage volume that spans multiple Availability Zones, with each Availability Zone having a copy of the DB cluster data.\n  - Primary DB instance – Supports read and write operations, and performs all of the data modifications to the cluster volume. Each Aurora DB cluster has one primary DB instance.\n  - Aurora Replica – Connects to the same storage volume as the primary DB instance and supports only read operations. Each Aurora DB cluster can have up to 15 Aurora Replicas in addition to the primary DB instance\n\n### Amazon Aurora storage and reliability\n\n[Amazon Aurora storage and reliability](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Overview.StorageReliability.html)\n\n- Aurora data is stored in the cluster volume, which is a single, virtual volume that uses solid state drives (SSDs).\n- A cluster volume consists of copies of the data across three Availability Zones in a single AWS Region\n- Aurora cluster volumes automatically grow as the amount of data in your database increases. \n- An Aurora cluster volume can grow to a maximum size of 128 tebibytes (TiB). \n- Even though an Aurora cluster volume can grow up to 128 tebibytes (TiB), you are only charged for the space that you use in an Aurora cluster volume.\n\n### High availability for Amazon Aurora\n\n[High availability for Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.AuroraHighAvailability.html)\n\n- The Amazon Aurora architecture involves separation of storage and compute\n- The data remains safe even if some or all of the DB instances in the cluster become unavailable.\n\n\n## Managing DB instance\n\n[Working with storage for Amazon RDS DB instances](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIOPS.StorageTypes.html)\n\n- To specify how you want your data stored in Amazon RDS, choose a storage type and provide a storage size when you create or modify a DB instance.\n- Later, you can increase the amount or change the type of storage by modifying the DB instance.\n\n### Overview of Amazon Aurora global databases\n\n[Overview of Amazon Aurora global databases](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database.html#aurora-global-database-overview)\n\n- Amazon Aurora global databases span multiple AWS Regions, enabling low latency global reads and providing fast recovery from the rare outage that might affect an entire AWS Region. \n- An Aurora global database has a primary DB cluster in one Region, and up to five secondary DB clusters in different Regions.\n\n### Connecting to an Amazon Aurora global database\n\nHow you connect to an Aurora global database depends on whether you need to write to the database or read from the database:\n- For read-only requests or queries, you connect to the reader endpoint for the Aurora cluster in your AWS Region.\n- To run data manipulation language (DML) or data definition language (DDL) statements, you connect to the cluster endpoint for the primary cluster. This endpoint might be in a different AWS Region than your application."
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/awsControlTower.md",
    "content": "# ControlTower\n\n- AWS Organizations is an account management service that lets you consolidate multiple AWS accounts into an organization that you create and centrally manage\n- With Organizations, you can create member accounts and invite existing accounts to join your organization. \n- You can organize those accounts into groups and attach policy-based controls\n- In AWS Control Tower, Organizations helps centrally manage billing; control access, compliance, and security; and share resources across your member AWS accounts. \n- Accounts are grouped into logical groups, called organizational units (OUs)"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/backup.md",
    "content": "# AWS Backup\n\n## Restoring a Storage Gateway volume\n\n[Restoring a Storage Gateway volume](https://docs.aws.amazon.com/aws-backup/latest/devguide/restoring-storage-gateway.html)\n\n- If you are restoring an AWS Storage Gateway volume snapshot, you can choose to restore the snapshot as an Storage Gateway volume or as an Amazon EBS volume."
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/batch.md",
    "content": "# Batch\n\n[What Is AWS Batch?](https://docs.aws.amazon.com/batch/latest/userguide/what-is-batch.html)\n\n[Cheat Sheet - AWS Batch](https://tutorialsdojo.com/aws-batch)\n\n- helps you to run batch computing workloads on the AWS Cloud\n- is a common way for developers, scientists, and engineers to access large amounts of compute resources\n- removes the undifferentiated heavy lifting of configuring and managing the required infrastructure, similar to traditional batch computing software\n- This service can efficiently provision resources in response to jobs submitted in order to eliminate capacity constraints, reduce compute costs, and deliver results quickly.\n\n\n## Compute environment\n\n[Compute environment](https://docs.aws.amazon.com/batch/latest/userguide/compute_environments.html)\n\n- Job queues are mapped to one or more compute environments. \n- Compute environments contain the Amazon ECS container instances that are used to run containerized batch jobs\n\n\n\n## Use Cases\n\n[AWS Batch Use cases](https://aws.amazon.com/batch/use-cases)\n"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/bestPractices.md",
    "content": "# Best Practices\n\n## Migration Strategies\n\n[CheatSheet - aws-migration-strategies-the-6-rs](https://tutorialsdojo.com/aws-migration-strategies-the-6-rs)\n\n[Phase 2: Plan](https://docs.aws.amazon.com/prescriptive-guidance/latest/strategy-database-migration/planning-phase.html)\n\n\n6 Application Migration Strategies: “The 6 R’s”\n\n- Rehosting : Otherwise known as `lift-and-shift`.\n  - large legacy migration scenario where the organization is looking to scale its migration quickly to meet a business case, we find that the majority of applications are rehosted.\n- Replatforming : I sometimes call this `lift-tinker-and-shift`.\n  - Here you might make a few cloud (or other) optimizations in order to achieve some tangible benefit, but you aren’t otherwise changing the core architecture of the application.\n  - You may be looking to reduce the amount of time you spend managing database instances by migrating to a database-as-a-service platform like Amazon Relational Database Service (Amazon RDS), or migrating your application to a fully managed platform like Amazon Elastic Beanstalk.\n\n- Repurchasing : Moving to a different product.\n  - I most commonly see repurchasing as a move to a SaaS platform. \n- Refactoring / Re-architecting : Re-imagining how the application is architected and developed, typically using cloud-native features.\n  - This is typically driven by a strong business need to add features, scale, or performance that would otherwise be difficult to achieve in the application’s existing environment.\n- Retire : Get rid of.\n  - Once you’ve discovered everything in your environment, you might ask each functional area who owns each application. \n  - We’ve found that as much as 10% (I’ve seen 20%) of an enterprise IT portfolio is no longer useful, and can simply be turned off. \n- Retain : Usually this means “revisit” or do nothing (for now).\n  - Maybe you’re still riding out some depreciation, aren’t ready to prioritize an application that was recently upgraded, or are otherwise not inclined to migrate some applications. \n  - You should only migrate what makes sense for the business;\n\n## Disaster Recovery\n\n[Disaster Recovery Slides](https://www.slideshare.net/AmazonWebServices/disaster-recovery-options-with-aws)"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/billingAndCostManagement.md",
    "content": "# Billing And Cost Management\n\n[What is AWS Billing?](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/billing-what-is.html)\n\n[CheatSheet - AWS Billing And Cost Management](https://tutorialsdojo.com/aws-billing-and-cost-management)\n\n\n## Consolidated billing for AWS Organization\n\n### Reserved Instances\n\n#### Turning off reserved instances and Savings Plans discount sharing\n\n- The management account of an organization can turn off Reserved Instance (RI) discount and Savings Plans discount sharing for any accounts in that organization, including the management account\n- This means that RIs and Savings Plans discounts aren't shared between any accounts that have sharing turned off. \n- To share an RI or Savings Plans discount with an account, both accounts must have sharing turned on\n\n[Cost Alloc Tags](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html)\n- After you activate cost allocation tags, AWS uses the cost allocation tags\n"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/certificateManager.md",
    "content": "# Certificate Manager\n\n[AWS Certificate Manager](https://aws.amazon.com/certificate-manager)\n\n- AWS Certificate Manager is a service that lets you easily provision, manage, and deploy public and private Secure Sockets Layer/Transport Layer Security (SSL/TLS) certificates for use with AWS services and your internal connected resources. \n- SSL/TLS certificates are used to secure network communications and establish the identity of websites over the Internet as well as resources on private networks.\n\n\n> To use a certificate with Elastic Load Balancing for the same site (the same fully qualified domain name, or FQDN, or set of FQDNs) in a different Region, you must request a new certificate for each Region in which you plan to use it.\n\n> Two use an ACM certificate with Amazon CloudFront, you must request the certificate in the US East (N. Virginia) region.\n\n\n### Services integrated with AWS Certificate Manager\n\n\n[Services integrated with AWS Certificate Manager](https://docs.aws.amazon.com/acm/latest/userguide/acm-services.html)\n\n## FAQs\n\n[FAQs](https://aws.amazon.com/certificate-manager/faqs)"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/cloudAdoptionReadinessTool.md",
    "content": "# AWS Cloud Adoption Readiness Tool (CART)\n\n[AWS Cloud Adoption Readiness Tool (CART)](https://cloudreadiness.amazonaws.com/#/cart)\n\n\n- Assess your organization’s cloud migration readiness with sixteen questions and set a path for cloud adoption success.\n- The AWS Cloud Adoption Readiness Tool (CART) helps organizations of all sizes develop efficient and effective plans for cloud adoption and enterprise cloud migrations. \n- This 16-question online survey and assessment report details your cloud migration readiness across six perspectives including business, people, process, platform, operations, and security.\n"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/cloudFormation.md",
    "content": "# CloudFormation\n\n[What is AWS CloudFormation?](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)\n\n[Cheat Sheet - AWS CloudFormation](https://tutorialsdojo.com/aws-cloudformation)\n\n[Cheat Sheet - aws-cloudformation-stacksets-and-nested-stacks](https://tutorialsdojo.com/aws-cloudformation-stacksets-and-nested-stacks)\n\n[Cheat Sheet - Elastic Beanstalk vs CloudFormation vs OpsWorks vs CodeDeploy](https://tutorialsdojo.com/elastic-beanstalk-vs-cloudformation-vs-opsworks-vs-codedeploy)\n\n- AWS CloudFormation is a service that helps you model and set up your AWS resources so that you can spend less time managing those resources and more time focusing on your applications that run in AWS.\n- You create a template that describes all the AWS resources that you want (like Amazon EC2 instances or Amazon RDS DB instances), and CloudFormation takes care of provisioning and configuring those resources for you.\n\n\n\n### Working with AWS CloudFormation StackSets\n\n[AWS CloudFormation StackSets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html)\n\n- AWS CloudFormation StackSets extends the functionality of stacks by enabling you to create, update, or delete stacks across multiple accounts and Regions with a single operation.\n\n### Updating stacks using change sets\n\n[Updating stacks using change sets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-changesets.html)\n\n- When you need to update a stack, understanding how your changes will affect running resources before you implement them can help you update stacks with confidence\n- Change sets allow you to preview how proposed changes to a stack might impact your running resources, for example, whether your changes will delete or replace any critical resources, AWS CloudFormation makes the changes to your stack only when you decide to execute the change set, allowing you to decide whether to proceed with your proposed changes or explore other changes by creating another change set.\n\n```bash\n CloudFormation CLI create-change-set\n```\n\n### Conditionally create resources for a production, development, or test stack\n\n[Conditionally create resources for a production, development, or test stack](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/conditions-sample-templates.html)\n\n- In some cases, you might want to create stacks that are similar but with minor tweaks. \n- For example, you might have a template that you use for production applications. \n- You want to create the same production stack so that you can use it for development or testing.\n\n### Exporting stack output values\n\n[Exporting stack output values](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-stack-exports.html)\n\n- To share information between stacks, export a stack's output values. \n- Other stacks that are in the same AWS account and region can import the exported values.\n\n### Listing stacks that import an exported output value\n\n[Listing stacks that import an exported output value](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-stack-imports.html)\n\n- When you export an output value, stacks that are in the same AWS account and region can import that value. \n- To see which stacks are importing a particular output value, use the list import action.\n\n\n### DeletionPolicy attribute\n\n[DeletionPolicy](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html)\n\n- With the DeletionPolicy attribute you can preserve, and in some cases, backup a resource when its stack is deleted. \n- You specify a DeletionPolicy attribute for each resource that you want to control. \n- If a resource has no DeletionPolicy attribute, AWS CloudFormation deletes the resource by default.\n\n> The default policy is Snapshot for AWS::RDS::DBCluster resources and for AWS::RDS::DBInstance resources that don't specify the DBClusterIdentifier property.\n\n\n**DeletionPolicy options**\n\n- Delete\n  - CloudFormation deletes the resource and all its content if applicable during stack deletion\n  - By default, if you don't specify a DeletionPolicy, CloudFormation deletes your resources.\n- Retain\n  - CloudFormation keeps the resource without deleting the resource or its contents when its stack is deleted.\n- Snapshot\n  - For resources that support snapshots, CloudFormation creates a snapshot for the resource before deleting it\n\n\n### UpdateReplacePolicy attribute\n\n[UpdateReplacePolicy](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatereplacepolicy.html)\n\n- Use the UpdateReplacePolicy attribute to retain or, in some cases, backup the existing physical instance of a resource when it's replaced during a stack update operation.\n- When you initiate a stack update, AWS CloudFormation updates resources based on differences between what you submit and the stack's current template and parameters. \n- If you update a resource property that requires that the resource be replaced, CloudFormation recreates the resource during the update. \n- Recreating the resource generates a new physical ID.\n\n\n### Walkthrough: Refer to resource outputs in another AWS CloudFormation stack\n\n[Walkthrough: Refer to resource outputs in another AWS CloudFormation stack](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/walkthrough-crossstackref.html)\n\n- To export resources from one AWS CloudFormation stack to another, create a cross-stack reference. Cross-stack references let you use a layered or service-oriented architecture. \n- Instead of including all resources in a single stack, you create related AWS resources in separate stacks; then you can refer to required resource outputs from other stacks. \n- By restricting cross-stack references to outputs, you control the parts of a stack that are referenced by other stacks.\n\n\n- There are some limitations if there is a cross-stack reference\n  between two CloudFormation stacks. Stack A cannot be deleted if it has a resource output\n  that is referenced by stack B.\n- You cannot modify the output value that is referenced by\n  another stack\n- you can update stack B to remove the cross-stack reference.\n\n\n### Custom resources\n\n[Custom resources](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-custom-resources.html)\n\n\n- Custom resources enable you to write custom provisioning logic in templates that AWS CloudFormation runs anytime you create, update (if you changed the custom resource), or delete stacks. \n-  For example, you might want to include resources that aren't available as AWS CloudFormation resource types. \n- You can include those resources by using custom resources.\n\n**How custom resources work**\n\n- The template developer defines a custom resource in their template, which includes a service token and any input data parameters. Depending on the custom resource, the input data might be required; however, the service token is always required.\n- The service token specifies where AWS CloudFormation sends requests to, such as an Amazon SNS topic ARN or an AWS Lambda function ARN\n\n\n  \n## Intrinsic Functions\n\n[Intrinsic function reference](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference.html)\n\n- AWS CloudFormation provides several built-in functions that help you manage your stacks. Use intrinsic functions in your templates to assign values to properties that are not available until runtime.\n\n\n### Using dynamic references to specify template values\n\n\n[Using dynamic references to specify template values](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/dynamic-references.html)\n\n- Dynamic references provide a compact, powerful way for you to specify external values that are stored and managed in other services, such as the Systems Manager Parameter Store, in your stack templates. \n- When you use a dynamic reference, CloudFormation retrieves the value of the specified reference when necessary during stack and change set operations.\n- CloudFormation currently supports the following dynamic reference patterns:\n  - ssm, for plaintext values stored in AWS Systems Manager Parameter Store.\n  - ssm-secure, for secure strings stored in AWS Systems Manager Parameter Store.\n  - secretsmanager, for entire secrets or specific secret values that are stored in AWS Secrets Manager.\n\n\n\n### Fn::GetAtt\n\n[Fn::GetAtt](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-getatt.html)\n\n- The Fn::GetAtt intrinsic function returns the value of an attribute from a resource in the template\n\n## Blogs\n\n[Use CloudFormation StackSets to Provision Resources Across Multiple AWS Accounts and Regions](https://aws.amazon.com/blogs/aws/use-cloudformation-stacksets-to-provision-resources-across-multiple-aws-accounts-and-regions)\n\n\n"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/cloudFront.md",
    "content": "# Cloudfront\n\n[Cheat Sheet - Cloudfront](https://tutorialsdojo.com/amazon-cloudfront)\n\n[geoproximity-routing-vs-geolocation-routing](https://tutorialsdojo.com/latency-routing-vs-geoproximity-routing-vs-geolocation-routing)\n\n## What is Amazon CloudFront?\n\n[What is Amazon CloudFront?](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html)\n\n- Amazon CloudFront is a web service that speeds up distribution of your static and dynamic web content, such as .html, .css, .js, and image files, to your users. \n- CloudFront delivers your content through a worldwide network of data centers called edge locations. \n- When a user requests content that you're serving with CloudFront, the request is routed to the edge location that provides the lowest latency (time delay), so that content is delivered with the best possible performance.\n\n- If the content is already in the edge location with the lowest latency, CloudFront delivers it immediately.\n\n- If the content is not in that edge location, CloudFront retrieves it from an origin that you've defined—such as an Amazon S3 bucket, a MediaPackage channel, or an HTTP server (for example, a web server) that you have identified as the source for the definitive version of your content.\n\n\n## Restricting the geographic distribution of your content\n\n[Restricting the geographic distribution of your content](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/georestrictions.html)\n\n- You can use geo restriction, also known as geo blocking, to prevent users in specific geographic locations from accessing content that you're distributing through a CloudFront distribution. \n- To use geo restriction, you have two options:\n\n  - Use the CloudFront geo restriction feature. \n  - Use this option to restrict access to all of the files that are associated with a distribution and to restrict access at the country level.\n\n  - Use a third-party geolocation service. Use this option to restrict access to a subset of the files that are associated with a distribution or to restrict access at a finer granularity than the country level.\n\n## Optimizing Caching and availability\n\n### Optimizing high availability with CloudFront origin failover\n\n[Optimizing high availability with CloudFront origin failover](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/high_availability_origin_failover.html)\n\n\n- You can set up CloudFront with origin failover for scenarios that require high availability. \n- To get started, you create an origin group with two origins: a primary and a secondary. \n- If the primary origin is unavailable, or returns specific HTTP response status codes that indicate a failure, CloudFront automatically switches to the secondary origin.\n\n\n## Configuring secure access and restricting access to content\n\n### Using field-level encryption to help protect sensitive data\n\n[Using field-level encryption to help protect sensitive data](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/field-level-encryption.html)\n\n- With Amazon CloudFront, you can enforce secure end-to-end connections to origin servers by using HTTPS\n- Field-level encryption adds an additional layer of security that lets you protect specific data throughout system processing so that only certain applications can see it.\n- Field-level encryption allows you to enable your users to securely upload sensitive information to your web servers.\n- The sensitive information provided by your users is encrypted at the edge, close to the user, and remains encrypted throughout your entire application stack. \n- This encryption ensures that only applications that need the data and have the credentials to decrypt it are able to do so.\n- To use field-level encryption, when you configure your CloudFront distribution, specify the set of fields in POST requests that you want to be encrypted, and the public key to use to encrypt them. \n- You can encrypt up to 10 data fields in a request\n\n\n### Using AWS WAF to control access to your content\n\n[Using AWS WAF to control access to your content](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-awswaf.html)\n\n- AWS WAF is a web application firewall that lets you monitor the HTTP and HTTPS requests that are forwarded to CloudFront, and lets you control access to your content\n- Based on conditions that you specify, such as the values of query strings or the IP addresses that requests originate from, CloudFront responds to requests either with the requested content or with an HTTP status code 403 (Forbidden). \n\n### Restricting access to Amazon S3 content by using an origin access identity (OAI)\n\n[Restricting access to Amazon S3 content by using an origin access identity (OAI)](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html)\n\nTo restrict access to content that you serve from Amazon S3 buckets, follow these steps:\n- Create a special CloudFront user called an origin access identity (OAI) and associate it with your distribution\n- Configure your S3 bucket permissions so that CloudFront can use the OAI to access the files in your bucket and serve them to your users. Make sure that users can’t use a direct URL to the S3 bucket to access a file there.\n\n### Restricting access to files on custom origins\n\n[Restricting access to files on custom origins](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-overview.html#forward-custom-headers-restrict-access)\n\n- If you use a custom origin, you can optionally set up custom headers to restrict access. \n- But by using custom headers, you can further restrict access to your content so that users can access it only through CloudFront, not directly. \n- To require that users access content through CloudFront, change the following settings in your CloudFront distributions:\n  - Origin Custom Headers: Configure CloudFront to forward custom headers to your origin.\n\n## Serving private content with signed URLs and signed cookies\n\n[Serving private content with signed URLs and signed cookies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html)\n\n- Many companies that distribute content over the internet want to restrict access to documents, business data, media streams, or content that is intended for selected users, for example, users who have paid a fee.\n  - Require that your users access your private content by using special CloudFront signed URLs or signed cookies.\n  - Require that your users access your content by using CloudFront URLs, not URLs that access content directly on the origin server (for example, Amazon S3 or a private HTTP server).\n\n## Optimizing caching and availability\n\n### Increasing the proportion of requests that are served directly from the CloudFront caches (cache hit ratio)\n\n[Increasing the proportion of requests that are served directly from the CloudFront caches (cache hit ratio)](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cache-hit-ratio.html)\n\n- You can improve performance by increasing the proportion of your viewer requests that are served directly from the CloudFront cache instead of going to your origin servers for content. \n- This is known as improving the cache hit ratio.\n\n- Specifying how long CloudFront caches your objects\n  - To increase your cache hit ratio, you can configure your origin to add a Cache-Control max-age directive to your objects, and specify the longest practical value for max-age\n\n\n### Requiring HTTPS for communication between viewers and CloudFront\n\n[Requiring HTTPS for communication between viewers and CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-https-viewers-to-cloudfront.html)\n\n- You can configure one or more cache behaviors in your CloudFront distribution to require HTTPS for communication between viewers and CloudFront. \n- You also can configure one or more cache behaviors to allow both HTTP and HTTPS, so that CloudFront requires HTTPS for some objects but not for others. \n- The configuration steps depend on which domain name you're using in object URLs:\n\n  - If you're using the domain name that CloudFront assigned to your distribution, such as d111111abcdef8.cloudfront.net, you change the Viewer Protocol Policy setting for one or more cache behaviors to require HTTPS communication. In that configuration, CloudFront provides the SSL/TLS certificate.\n  - If you're using your own domain name, such as example.com, you need to change several CloudFront settings. You also need to use an SSL/TLS certificate provided by AWS Certificate Manager (ACM), or import a certificate from a third-party certificate authority into ACM or the IAM certificate store.\n\n\n### Managing how long content stays in the cache (expiration)\n\n[Managing how long content stays in the cache (expiration)](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html)\n\n- You can control how long your files stay in a CloudFront cache before CloudFront forwards another request to your origin\n  - If the CloudFront cache already has the latest version, the origin returns a status code 304 Not Modified.\n  - If the CloudFront cache does not have the latest version, the origin returns a status code 200 OK and the latest version of the file.\n\n\n\n## Customizing at the edge with Lambda@Edge\n\n[Customizing at the edge with Lambda@Edge](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-at-the-edge.html)\n\n- Lambda@Edge is an extension of AWS Lambda, a compute service that lets you execute functions that customize the content that CloudFront delivers.\n\n- When you associate a CloudFront distribution with a Lambda@Edge function, CloudFront intercepts requests and responses at CloudFront edge locations. You can execute Lambda functions when the following CloudFront events occur:\n  - When CloudFront receives a request from a viewer (viewer request)\n  - Before CloudFront forwards a request to the origin (origin request)\n  - When CloudFront receives a response from the origin (origin response)\n  - Before CloudFront returns the response to the viewer (viewer response)\n\n[Get started creating and using Lambda@Edge functions](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-edge-how-it-works.html)\n\n\n## Request and response behavior for custom origins\n\n### User-Agent header\n\n[User-Agent header](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/RequestAndResponseBehaviorCustomOrigin.html#request-custom-user-agent-header)\n\n- If you want CloudFront to cache different versions of your objects based on the device that a user is using to view your content, we recommend that you configure CloudFront to forward one or more of the following headers to your custom origin:\n  - CloudFront-Is-Desktop-Viewer\n  - CloudFront-Is-Mobile-Viewer\n  - CloudFront-Is-SmartTV-Viewer\n  - CloudFront-Is-Tablet-Viewer\n\n## Blogs\n\n[How do I use CloudFront to serve a static website hosted on Amazon S3?](https://aws.amazon.com/premiumsupport/knowledge-center/cloudfront-serve-static-website)\n\n"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/cloudHSM.md",
    "content": "# CloudHSM\n\n[AWS CloudHSM](https://aws.amazon.com/cloudhsm)\n\n\n- AWS CloudHSM is a cloud-based hardware security module (HSM) that enables you to easily generate and use your own encryption keys on the AWS Cloud\n\n\n## Improve Your Web Server's Security with SSL/TLS Offload in AWS CloudHSM\n\n[Improve Your Web Server's Security with SSL/TLS Offload in AWS CloudHSM](https://docs.aws.amazon.com/cloudhsm/latest/userguide/ssl-offload.html)\n\n- Web servers and their clients (web browsers) can use Secure Sockets Layer (SSL) or Transport Layer Security (TLS). \n- These protocols confirm the identity of the web server and establish a secure connection to send and receive webpages or other data over the internet. This is commonly known as HTTPS.\n\n\n### How SSL/TLS Offload with AWS CloudHSM Works\n\n\n[How SSL/TLS Offload with AWS CloudHSM Works](https://docs.aws.amazon.com/cloudhsm/latest/userguide/ssl-offload-overview.html)\n\n"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/cloudTrail.md",
    "content": "# CloudTrail\n\n[Cheat Sheet - AWS CloudTrail](https://tutorialsdojo.com/aws-cloudtrail)\n\n## What Is AWS CloudTrail?\n\n\n[What Is AWS CloudTrail?](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)\n\n- AWS CloudTrail is an AWS service that helps you enable governance, compliance, and operational and risk auditing of your AWS account. \n- Actions taken by a user, role, or an AWS service are recorded as events in CloudTrail. \n- Events include actions taken in the AWS Management Console, AWS Command Line Interface, and AWS SDKs and APIs.\n\n\n### Global service events \n\n[Global service events](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-concepts.html#cloudtrail-concepts-global-service-events)\n\n- For most services, events are recorded in the region where the action occurred. \n- For global services such as AWS Identity and Access Management (IAM), AWS STS, and Amazon CloudFront, events are delivered to any trail **that includes global services**.\n\n## Identities\n\n### Logging IAM and AWS STS API calls with AWS CloudTrail\n\n[Logging IAM and AWS STS API calls with AWS CloudTrail](https://docs.aws.amazon.com/IAM/latest/UserGuide/cloudtrail-integration.html)\n\n- IAM and AWS STS are integrated with AWS CloudTrail, a service that provides a record of actions taken by an IAM user or role. \n- CloudTrail captures all API calls for IAM and AWS STS as events, including calls from the console and from API calls. \n- If you create a trail, you can enable continuous delivery of CloudTrail events to an Amazon S3 bucket. \n- If you don't configure a trail, you can still view the most recent events in the CloudTrail console in Event history\n\n## Blogs\n\n- [How to Audit Cross-Account Roles Using AWS CloudTrail and Amazon CloudWatch Events](https://aws.amazon.com/blogs/security/how-to-audit-cross-account-roles-using-aws-cloudtrail-and-amazon-cloudwatch-events)"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/cloudWatchLogs.md",
    "content": "# CloudWatch Logs\n\n- You can use Amazon CloudWatch Logs to monitor, store, and access your log files from Amazon Elastic Compute Cloud (Amazon EC2) instances, AWS CloudTrail, Route 53, and other sources.\n- CloudWatch Logs enables you to centralize the logs from all of your systems, applications, and AWS services that you use, in a single, highly scalable service. \n- CloudWatch Logs enables you to see all of your logs, regardless of their source, as a single and consistent flow of events ordered by time, and you can query them and sort them based on other dimensions, group them by specific fields, create custom computations with a powerful query language, and visualize log data in dashboards.\n"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/cloudsearch.md",
    "content": "# CloudSearch\n\n[Amazon CloudSearch](https://aws.amazon.com/cloudsearch)\n\n[Cheat Sheet - Amazon CloudSearch](https://tutorialsdojo.com/amazon-cloudsearch)\n\n- Amazon CloudSearch is a managed service in the AWS Cloud that makes it simple and cost-effective to set up, manage, and scale a search solution for your website or application."
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/cloudwatch.md",
    "content": "# CloudWatch\n\n[Cheat Sheet - CloudWatch](https://tutorialsdojo.com/amazon-cloudwatch)\n\n[cloudwatch-agent-vs-ssm-agent-vs-custom-daemon-scripts](https://tutorialsdojo.com/cloudwatch-agent-vs-ssm-agent-vs-custom-daemon-scripts)\n\n## Schedule Expressions for Rules\n\n[Schedule Expressions for Rules](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html)\n\n- You can create rules that self-trigger on an automated schedule in CloudWatch Events using cron or rate expressions. \n- All scheduled events use UTC time zone and the minimum precision for schedules is 1 minute.\n\n## Analyzing log data with CloudWatch Logs Insights\n\n[Analyzing log data with CloudWatch Logs Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html)\n\n- CloudWatch Logs Insights enables you to interactively search and analyze your log data in Amazon CloudWatch Logs\n- You can perform queries to help you more efficiently and effectively respond to operational issues\n-  If an issue occurs, you can use CloudWatch Logs Insights to identify potential causes and validate deployed fixes\n\n\n### Installing the CloudWatch agent on on-premises servers\n\n[Installing the CloudWatch agent on on-premises servers](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/install-CloudWatch-Agent-on-premise.html)\n\n- If you have downloaded the CloudWatch agent on one computer and created the agent configuration file you want, you can use that configuration file to install the agent on other on-premises servers.\n\n## Using Amazon CloudWatch alarms\n\n[Using Amazon CloudWatch alarms](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html)\n\n- You can create both metric alarms and composite alarms in CloudWatch.\n  - A metric alarm \n    - watches a single CloudWatch metric or the result of a math expression based on CloudWatch metrics. \n    - The alarm performs one or more actions based on the value of the metric or expression relative to a threshold over a number of time periods. \n    - The action can be sending a notification to an Amazon SNS topic, performing an Amazon EC2 action or an Amazon EC2 Auto Scaling action, or creating an OpsItem or incident in Systems Manager\n  - A composite alarm \n    - includes a rule expression that takes into account the alarm states of other alarms that you have created. \n    - The composite alarm goes into ALARM state only if all conditions of the rule are met. \n    - The alarms specified in a composite alarm's rule expression can include metric alarms and other composite alarms.\n\n\n## Creating metrics from log events using filters\n\n- You can search and filter the log data coming into CloudWatch Logs by creating one or more metric filters. \n- Metric filters define the terms and patterns to look for in log data as it is sent to CloudWatch Logs. \n- CloudWatch Logs uses these metric filters to turn log data into numerical CloudWatch metrics that you can graph or set an alarm on.\n\n### Creating metric filters\n\n[Creating metric filters](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/MonitoringPolicyExamples.html)\n\n\n\n[Monitoring deployments with Amazon CloudWatch Events](https://docs.aws.amazon.com/codedeploy/latest/userguide/monitoring-cloudwatch-events.html)\n\n\n- You can use Amazon CloudWatch Events to detect and react to changes in the state of an instance or a deployment (an \"event\") in your CodeDeploy operations. \n- Then, based on rules you create, CloudWatch Events will invoke one or more target actions when a deployment or instance enters the state you specify in a rule. \n- Depending on the type of state change, you might want to send notifications, capture state information, take corrective action, initiate events, or take other actions. \n- You can select the following types of targets when using CloudWatch Events as part of your CodeDeploy operations:\n  - AWS Lambda functions\n  - Kinesis streams\n  - Amazon SQS queues\n  \nBuilt-in targets (EC2 CreateSnapshot API call, EC2 RebootInstances API call, EC2 StopInstances API call , and EC2 TerminateInstances API call)\n\nAmazon SNS topics\n\n\n```bash\nThe following are some use cases:\nUse a Lambda function to pass a notification to a Slack channel whenever deployments fail.\nPush data about deployments or instances to a Kinesis stream to support comprehensive, real-time status monitoring.\nUse CloudWatch alarm actions to automatically stop, terminate, reboot, or recover Amazon EC2 instances when a deployment or instance event you specify occurs.\n```\n\n[dynamic-dns-for-route-53](https://aws.amazon.com/blogs/compute/building-a-dynamic-dns-for-route-53-using-cloudwatch-events-and-lambda/)\n\n[Real-time processing of log data with subscriptions](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Subscriptions.html)\n\n- You can use subscriptions to get access to a real-time feed of log events from CloudWatch Logs and have it delivered to other services such as an Amazon Kinesis stream, an Amazon Kinesis Data Firehose stream, or AWS Lambda for custom processing, analysis, or loading to other systems\n\n[Sending and Receiving Events Between AWS Accounts](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/CloudWatchEvents-CrossAccountEventDelivery.html)\n\n\nThe overall process is as follows:\n\n- On the receiver account, edit the permissions on the default event bus to allow specified AWS accounts, an organization, or all AWS accounts to send events to the receiver account.\n- On the sender account, set up one or more rules that have the receiver account's default event bus as the target.\n- On the receiver account, set up one or more rules that match events that come from the sender account.\n\n\n#### Creating metrics for log events using filter\n\n##### Filter and Pattern Syntax\n\n[Filter and pattern syntax](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html)\n\n- You can use metric filters to search for and match terms, phrases, or values in your log events. When a metric filter finds one of the terms, phrases, or values in your log events, you can increment the value of a CloudWatch metric. For example, you can create a metric filter to search for and count the occurrence of the word ERROR in your log events.\n- When a metric filter finds one of the matching terms, phrases, or values in your log events, it increments the count in the CloudWatch metric by the amount you specify for Metric Value. The metric value is aggregated and reported every minute.\n\n##### Example: Count HTTP 404 codes\n\n- Example: Count HTTP 404 codes\n```bash\nFor Filter Pattern, type [IP, UserInfo, User, Timestamp, RequestInfo, StatusCode=404, Bytes]. \n```\n\n\n#### Publishing custom metrics\n\n[Publishing custom metrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/publishingMetrics.html)\n\n[put-metric-data¶](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/put-metric-data.html)\n\n- You can publish your own metrics to CloudWatch using the AWS CLI or an API. You can view statistical graphs of your published metrics with the AWS Management Console.\n\n- instead of calling put-metric-data multiple times for three data points that are within 3 seconds of each other, you can aggregate the data into a statistic set that you publish with one call, using the --statistic-values parameter.\n\n```bash\naws cloudwatch put-metric-data --metric-name PageViewCount --namespace MyService --statistic-values Sum=11,Minimum=2,Maximum=5,SampleCount=3 --timestamp 2016-10-14T12:00:00.000Z\n```\n"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/codeBuild.md",
    "content": "\n### CodeBuild\n\n[Create a build project (console)](https://docs.aws.amazon.com/codebuild/latest/userguide/create-project-console.html)\n\n- We recommend that you store an environment variable with a sensitive value, such as an AWS access key ID, an AWS secret access key, or a password as a parameter in Amazon EC2 Systems Manager Parameter Store or AWS Secrets Manager.\n\n[Docker images provided by CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-available.html)\n\n[Extending AWS CodeBuild with Custom Build Environments](https://aws.amazon.com/blogs/devops/extending-aws-codebuild-with-custom-build-environments/)\n\n- Build environments are Docker images that include a complete file system with everything required to build and test your project.\n  To use a custom build environment in a CodeBuild project, you build a container image for your platform that contains your build tools,\n  push it to a Docker container registry such as Amazon EC2 Container Registry (ECR), and reference it in the project configuration. When\n  building your application, CodeBuild will retrieve the Docker image from the container registry specified in the project configuration\n  and use the environment to compile your source code, run your tests, and package your application."
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/codeCommit.md",
    "content": "> Revision Count: 1\n\n# CodeCommit\n\n[Cheat Sheet -  AWS CodeCommit](https://tutorialsdojo.com/aws-codecommit)\n\n## Manage triggers for a repository\n\n[Manage triggers for an AWS CodeCommit repository](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-notify.html)\n\n- You can configure a CodeCommit repository so that code pushes or other events trigger actions, such as sending a notification from Amazon Simple Notification Service (Amazon SNS) or invoking a function in AWS Lambda. \n- You can create up to 10 triggers for each CodeCommit repository.\n- Data in AWS CodeCommit repositories is already encrypted in transit as well as at rest.\n\n### Example: Create an AWS CodeCommit trigger for an Amazon SNS topic\n\n[Example: Create an AWS CodeCommit trigger for an Amazon SNS topic](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-notify-sns.html)\n\n- You can create a trigger for a CodeCommit repository so that events in that repository trigger notifications from an Amazon Simple Notification Service (Amazon SNS) topic\n\n\n### Example: Create an AWS CodeCommit trigger for an AWS Lambda function\n\n[Example: Create an AWS CodeCommit trigger for an AWS Lambda function](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-notify-lambda.html)\n\n- You can create a trigger for a CodeCommit repository so that events in the repository invoke a Lambda function. \n\n\n### Example: auth-and-access-control-iam-identity-based-access-control\n\n[auth-and-access-control-iam-identity-based-access-control](https://docs.aws.amazon.com/codecommit/latest/userguide/auth-and-access-control-iam-identity-based-access-control.html#identity-based-policies-example-4)\n\n- To restrict push to master\n\n```json\n{ \"Effect\": \"Allow\",\n\"Action\": [\n\"codecommit:GitPush\",\n\"codecommit:Merge*\" ],\n\"Resource\": [ \"arn:aws:codecommit:*:*:the-repo-name\" ],\n\"Condition\": {\n\"StringNotEquals\": {\n\"codecommit:References\": [ \"refs/heads/master\" ] }\n}\n}\n```\n\n\n### Migrate a Git repository to AWS CodeCommit\n\n\n[Share the CodeCommit repository](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-migrate-repository-existing.html#how-to-migrate-existing-share)\n\n- When you create a repository in CodeCommit, two endpoints are generated: one for HTTPS connections and one for SSH connections. \n- Both provide secure connections over a network\n\n### Using identity-based policies (IAM Policies) for CodeCommit\n\n[Using identity-based policies (IAM Policies) for CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/auth-and-access-control-iam-identity-based-access-control.html)\n- An account administrator can attach permissions policies to IAM identities (users, groups, and roles) to grant permissions to perform operations on CodeCommit resources.\n- AWS manage policy AWSCodeCommitPowerUser allows users access to CodeCommit but disallows the action of deleting\n  CodeCommit repositories.\n\n### Cross-account repository access: Actions for the administrator in AccountA\n\n\n[Cross-account repository access: Actions for the administrator in AccountA](https://docs.aws.amazon.com/codecommit/latest/userguide/cross-account-administrator-a.html)\n\nTo allow users or groups in AccountB to access a repository in AccountA, an AccountA administrator must:\n- Create a policy in AccountA that grants access to the repository.\n- Create a role in AccountA that can be assumed by IAM users and groups in AccountB.\n- Attach the policy to the role.\n\n[Cross-account repository access: Actions for the administrator in AccountB](https://docs.aws.amazon.com/codecommit/latest/userguide/cross-account-administrator-b.html)\n\nTo allow users or groups in AccountB to access a repository in AccountA, the AccountB\nadministrator must create a group in AccountB. This group must be configured with a policy having\naction `\"sts:AssumeRole` that allows group members to assume the role created by the AccountA administrator\n\n### Setup steps for SSH connections to AWS CodeCommit repositories on Linux, macOS, or Unix\n\n[Setup steps for SSH connections to AWS CodeCommit repositories on Linux, macOS, or Unix](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-ssh-unixes.html)\n\n- After you upload the SSH public key for the IAM user, the user can establish SSH connections to the CodeCommit repositories:\n\n#### Supported Operations\n\n[Change branch settings in AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-change-branch.html)\n\n- You can change which branch to use as the default branch in the AWS CodeCommit console or with the AWS CLI. \n- For example, if you created your first commit using a Git client that set the default branch to master, you could create a branch named main, and then change the branch settings so that the new branch is set as the default branch for the repository.\n- To change other branch settings, you can use Git from a local repo connected to the CodeCommit repository.\n\n### Merge a pull request in an AWS CodeCommit repository\n\n[Merge a pull request in an AWS CodeCommit repository](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-merge-pull-request.html)\n\n- After your code has been reviewed and all approval rules (if any) on the pull request have been satisfied, you can merge a pull request in one of several ways:  \n  - You can use the console to merge your source branch to the destination branch using one of the available merge strategies, which also closes the pull request.\n  - You can use the AWS CLI to merge and close the pull request using the fast-forward, squash, or 3-way merge strategy.\n  - On your local computer, you can use the git merge command to merge the source branch into the destination branch, and then push your merged code to the destination branch\n\n#### Working with pull requests\n\n[Edit or delete an approval rule for a pull request](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-edit-delete-pull-request-approval-rule.html)\n\n- When you have an approval rule on a pull request, you cannot merge that pull request until its conditions have been met. \n- You can change the approval rules for pull requests to make it easier to satisfy their conditions, or to increase the rigor of reviews. You can change the number of users who must approve a pull request.\n\n#### Working with approval rule templates\n\n[Working with approval rule templates](https://docs.aws.amazon.com/codecommit/latest/userguide/approval-rule-templates.html)\n\n- You can create approval rules for pull requests. To automatically apply approval rules to some or all of the pull requests created in repositories, use approval rule templates. Approval rule templates help you customize your development workflows across repositories so that different branches have appropriate levels of approvals and control. You can define different rules for production and development branches. Those rules are applied every time a pull request that matches the rule conditions is created.\n\n#### Working with branches\n\n[Limit pushes and merges to branches in AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-conditional-branch.html)\n\n- By default, any CodeCommit repository user who has sufficient permissions to push code to the repository can contribute to any branch in that repository.\n\n- For example, this policy denies pushing commits, merging branches, deleting branches, merging pull requests, and adding files to a branch named main and a branch named prod in a repository named MyDemoRepo:\n\n```json\n{\n    \"Version\": \"2012-10-17\",\n    \"Statement\": [\n        {\n            \"Effect\": \"Deny\",\n            \"Action\": [\n                \"codecommit:GitPush\",\n                \"codecommit:DeleteBranch\",\n                \"codecommit:PutFile\",\n                \"codecommit:MergeBranchesByFastForward\",\n                \"codecommit:MergeBranchesBySquash\",\n                \"codecommit:MergeBranchesByThreeWay\",\n                \"codecommit:MergePullRequestByFastForward\",\n                \"codecommit:MergePullRequestBySquash\",\n                \"codecommit:MergePullRequestByThreeWay\"\n            ],\n            \"Resource\": \"arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo\",\n            \"Condition\": {\n                \"StringEqualsIfExists\": {\n                    \"codecommit:References\": [\n                        \"refs/heads/main\", \n                        \"refs/heads/prod\"\n                     ]\n                },\n                \"Null\": {\n                    \"codecommit:References\": \"false\"\n                }\n            }\n        }\n    ]\n}\n```\n\n\n\n\n##### Configuring notifications for events in an AWS CodeCommit repository\n\n[Configuring notifications for events in an AWS CodeCommit repository](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-repository-email.html)\n\n- You can set up notification rules for a repository so that repository users receive emails about the repository event types you specify. \n- Notifications are sent when events match the notification rule settings. \n- You can create an Amazon SNS topic to use for notifications or use an existing one in your Amazon Web Services account\n\n#### Security\n\n[Using identity-based policies (IAM Policies) for CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/auth-and-access-control-iam-identity-based-access-control.html#identity-based-policies-example-4)\n\n- identity-based policies demonstrate how an account administrator can attach permissions policies to IAM identities (users, groups, and roles) to grant permissions to perform operations on CodeCommit resources.\n\n- Example\n\n```josn\n{\n  \"Version\": \"2012-10-17\",\n  \"Statement\" : [\n    {\n      \"Effect\" : \"Allow\",\n      \"Action\" : [\n        \"codecommit:BatchGetRepositories\"\n      ],\n      \"Resource\" : [\n        \"arn:aws:codecommit:us-east-2:111111111111:MyDestinationRepo\",\n        \"arn:aws:codecommit:us-east-2:111111111111:MyDemo*\"\n      ]\n    }\n  ]\n}\n```\n\n"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/codeDeploy.md",
    "content": "## Code Deploy\n\n[Register an on-premises instance with CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/on-premises-instances-register.html)\n\n[Use the register command (IAM user ARN) to register an on-premises instance](https://docs.aws.amazon.com/codedeploy/latest/userguide/instances-on-premises-register-instance.html)\n\nThe register command can create an IAM user for the server and register the server with CodeDeploy\n\n```bash\naws deploy register --instance-name AssetTag234AESDD --tags\nKey=Name,Value=CodeDeployDemo-OnPremise --region eu-west-1\n```\n\n[Manually remove on-premises instance tags from an on-premises instance](https://docs.aws.amazon.com/codedeploy/latest/userguide/on-premises-instances-operations-remove-tags.html)\n\nTypically, you remove an on-premises instance tag from an on-premises instance when that tag is no longer being used, or you want to remove the on-premises instance from any deployment groups that rely on that tag. You can use the AWS CLI or the AWS CodeDeploy console to remove on-premises instance tags from on-premises instances.\n\n[Create a deployment group for an in-place deployment (console)]()\n\n[Deployment configurations on an AWS Lambda compute platform](https://docs.aws.amazon.com/codedeploy/latest/userguide/deployment-configurations.html#deployment-configuration-lambda)\n\nThere are three ways traffic can shift during a deployment:\n\n- Canary: Traffic is shifted in two increments. You can choose from predefined canary options that specify the percentage of traffic shifted to your updated Lambda function version in the first increment and the interval, in minutes, before the remaining traffic is shifted in the second increment.\n- Linear: Traffic is shifted in equal increments with an equal number of minutes between each increment. You can choose from predefined linear options that specify the percentage of traffic shifted in each increment and the number of minutes between each increment.\n- All-at-once: All traffic is shifted from the original Lambda function to the updated Lambda function version all at once.\n\n\n### Working with Deployments\n\n[Stop a deployment with CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/deployments-stop.html)\n\n- You can use the CodeDeploy console, the AWS CLI, or the CodeDeploy APIs to stop deployments associated with your AWS account.\n\n[Redeploy and roll back a deployment with CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/deployments-rollback-and-redeploy.html#deployments-rollback-and-redeploy-manual-rollbacks)\n\n- CodeDeploy rolls back deployments by redeploying a previously deployed revision of an application as a new deployment. These rolled-back deployments are technically new deployments, with new deployment IDs, rather than restored versions of a previous deployment.\n- For an ongoing deployment, you can choose “Stop deployment” or “Stop and roll back deployment” for a deployment.\n\n[Working with deployment configurations in CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/deployment-configurations.html)\n\n- A deployment configuration is a set of rules and success and failure conditions used by CodeDeploy during a deployment. These rules and conditions are different, depending on whether you deploy to an EC2/On-Premises compute platform, AWS Lambda compute platform, or Amazon ECS compute platform.\n\n**Predefined deployment configurations for an EC2/on-premises compute platform**\n- Consider an example of 9 instances\n  - CodeDeployDefault.AllAtOnce\t\n    - In-place deployments: \n      - attempts to deploy to all nine instances at once\n      - The overall deployment succeeds if deployment to even a single instance is successful.\n      - It fails only if deployments to all nine instances fail.\n    - BlueGreen\n      - Deployment to replacement environment: Follows the same deployment rules as CodeDeployDefault.AllAtOnce for in-place deployments.\n      - Traffic rerouting: \n        - Routes traffic to all instances in the replacement environment at once. \n        - Succeeds if traffic is successfully rerouted to at least one instance. \n        - Fails after rerouting to all instances fails.\n  - CodeDeployDefault.HalfAtATime\t\n  - CodeDeployDefault.OneAtATime\t\n\n**Deployment configurations on an AWS Lambda compute platform**\n\n- When you deploy to an AWS Lambda compute platform, the deployment configuration specifies the way traffic is shifted to the new Lambda function versions in your application\n  - Canary: Traffic is shifted in two increments. You can choose from predefined canary options that specify the percentage of traffic shifted to your updated Lambda function version in the first increment and the interval, in minutes, before the remaining traffic is shifted in the second increment. \n  - Linear: Traffic is shifted in equal increments with an equal number of minutes between each increment. You can choose from predefined linear options that specify the percentage of traffic shifted in each increment and the number of minutes between each increment. \n  - All-at-once: All traffic is shifted from the original Lambda function to the updated Lambda function version all at once.\n\nPredefined deployment configurations for an AWS Lambda compute platform (for all please refer the documentation)\n- CodeDeployDefault.LambdaCanary10Percent5Minutes: Shifts 10 percent of traffic in the first increment. The remaining 90 percent is deployed five minutes later.\n- CodeDeployDefault.LambdaLinear10PercentEvery3Minutes : Shifts 10 percent of traffic every three minutes until all traffic is shifted.\n- CodeDeployDefault.LambdaAllAtOnce: Shifts all traffic to the updated Lambda functions at once.\n\n\n### Supported By\n\n**CanaryDeployment**\n- AWS Lambda\n- ECS\n"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/codePipeline.md",
    "content": "\n### CodePipeline\n\n[Grant approval permissions to an IAM user in CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/approvals-iam-permissions.html)\n\n- attaching the AWSCodePipelineApproverAccess managed policy to an IAM user\n\n[Approve or reject an approval action in CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/approvals-approve-or-reject.html)\n\n[Invoke an AWS Lambda function in a pipeline in CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/actions-invoke-lambda-function.html)\n\n- Do not log the JSON event that CodePipeline sends to Lambda because this can result in user credentials being logged in CloudWatch Logs. The CodePipeline role uses a JSON event to pass temporary credentials to Lambda in the artifactCredentials field.\n\n[CodePipeline pipeline structure reference](https://docs.aws.amazon.com/codepipeline/latest/userguide/reference-pipeline-structure.html)\n\n- To specify parallel actions, use the same integer for each action you want to run in parallel. In the console, you can specify a serial sequence for an action by choosing Add action group at the level in the stage where you want it to run, or you can specify a parallel sequence by choosing Add action. Action group refers to a run order of one or more actions at the same level\n- different action groups have different runOrder values and their actions do not run in parallel.\n\n[Configure server-side encryption for artifacts stored in Amazon S3 for CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/S3-artifact-encryption.html)\n\n```json\n{\n    \"Version\": \"2012-10-17\",\n    \"Id\": \"SSEAndSSLPolicy\",\n    \"Statement\": [\n        {\n            \"Sid\": \"DenyUnEncryptedObjectUploads\",\n            \"Effect\": \"Deny\",\n            \"Principal\": \"*\",\n            \"Action\": \"s3:PutObject\",\n            \"Resource\": \"arn:aws:s3:::codepipeline-us-west-2-89050EXAMPLE/*\",\n            \"Condition\": {\n                \"StringNotEquals\": {\n                    \"s3:x-amz-server-side-encryption\": \"aws:kms\"\n                }\n            }\n        },\n        {\n            \"Sid\": \"DenyInsecureConnections\",\n            \"Effect\": \"Deny\",\n            \"Principal\": \"*\",\n            \"Action\": \"s3:*\",\n            \"Resource\": \"arn:aws:s3:::codepipeline-us-west-2-89050EXAMPLE/*\",\n            \"Condition\": {\n                \"Bool\": {\n                    \"aws:SecureTransport\": \"false\"\n                }\n            }\n        }\n    ]\n}\n```\n\n\n[FAQ](https://aws.amazon.com/codepipeline/faqs/)\n\n- Pipeline actions occur in a specified order, in serial or in parallel, as determined in the configuration of the stage\n"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/cognito.md",
    "content": "> Revision Count: 0\n\n# AWS Cognito\n\n[What Is Amazon Cognito?](https://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html)\n\n[Cheat Sheet - Cognito](https://tutorialsdojo.com/amazon-cognito)\n\n[Cheat Sheet - Amazon Cognito User and Identity Pools Explained](https://tutorialsdojo.com/amazon-cognito-user-pools-and-identity-pools-explained)\n\n- Amazon Cognito provides authentication, authorization, and user management for your web and mobile apps. \n- Your users can sign in directly with a user name and password, or through a third party such as Facebook, Amazon, Google or Apple.\n- The two main components of Amazon Cognito are user pools and identity pools. \n  - User pools are user directories that provide sign-up and sign-in options for your app users. \n  - Identity pools enable you to grant your users access to other AWS services. \n- You can use identity pools and user pools separately or together.\n\n\n## Amazon Cognito Identity Pools (Federated Identities)\n\n[Amazon Cognito Identity Pools (Federated Identities)](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-identity.html)\n\n- Amazon Cognito identity pools (federated identities) enable you to create unique identities for your users and federate them with identity providers.\n- With an identity pool, you can obtain temporary, limited-privilege AWS credentials to access other AWS services\n\n### Identity Pools (Federated Identities) External Identity Providers\n\n[Identity Pools (Federated Identities) External Identity Providers](https://docs.aws.amazon.com/cognito/latest/developerguide/external-identity-providers.html)\n\n- Using the logins property, you can set credentials received from an identity provider. \n- Moreover, you can associate an identity pool with multiple identity providers.\n- For example, you could set both the Facebook and Google tokens in the logins property, so that the unique Amazon Cognito identity would be associated with both identity provider logins\n- No matter which account the end user uses for authentication, Amazon Cognito returns the same user identifier.\n\n#### Open ID Connect Providers (Identity Pools)\n\n[Open ID Connect Providers (Identity Pools](https://docs.aws.amazon.com/cognito/latest/developerguide/open-id.html)\n\n- OpenID Connect is an open standard for authentication that is supported by a number of login providers\n- Amazon Cognito supports linking of identities with OpenID Connect providers that are configured through AWS Identity and Access Management.\n\n## Integrating Amazon Cognito with web and mobile apps\n\n[Integrating Amazon Cognito with web and mobile apps](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-integrate-apps.html)\n\n[simplifying-token-vending-machine-deployment-with-aws-cloudformation](https://aws.amazon.com/blogs/mobile/simplifying-token-vending-machine-deployment-with-aws-cloudformation)\n\n- By integrating Amazon Cognito with your client code, you connect your app to backend AWS functionality that aids authentication and authorization workflows.\n- Your app will use the Amazon Cognito API to, for example, create new users in your user pool, retrieve user pool tokens, and obtain temporary credentials from your identity pool. \n- To integrate Amazon Cognito with your web or mobile app, use the SDKs and libraries that the AWS Amplify framework provides.\n\n\n### Amazon Cognito user pools\n\n[Amazon Cognito user pools](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools.html)\n\n- A user pool is a user directory in Amazon Cognito. \n- With a user pool, your users can sign in to your web or mobile app through Amazon Cognito. \n- Your users can also sign in through social identity providers like Google, Facebook, Amazon, or Apple, and through SAML identity providers. \n- Whether your users sign in directly or through a third party, all members of the user pool have a directory profile that you can access through a Software Development Kit (SDK).\n\n## SSO FAQs\n\n[Single Sign On FAQs](https://aws.amazon.com/single-sign-on/faqs)\n"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/commandLineInterface.md",
    "content": "# Command Line Interface\n\n\n## Configuration AWS CLI\n\n### Using an HTTP proxy\n\n[Using an HTTP proxy](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-proxy.html)\n\n- To access AWS through proxy servers, you can configure the HTTP_PROXY and HTTPS_PROXY environment variables with either the DNS domain names or IP addresses and port numbers that your proxy servers use."
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/config.md",
    "content": "# Config\n\n[What Is AWS Config?](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html)\n\n- AWS Config provides a detailed view of the configuration of AWS resources in your AWS account. This includes how the resources are related to one another and how they were configured in the past so that you can see how the configurations and relationships change over time\n\n[Cheat Sheet - AWS Config](https://tutorialsdojo.com/aws-config)\n\n- AWS Config provides a detailed view of the configuration of AWS resources in your AWS account.\n- This includes how the resources are related to one another and how they were configured in the past so that you can see how the configurations and relationships change over time.\n- An AWS resource is an entity you can work with in AWS, such as an Amazon Elastic Compute Cloud (EC2) instance, an Amazon Elastic Block Store (EBS) volume, a security group, or an Amazon Virtual Private Cloud (VPC). \n\nWith AWS Config, you can do the following:\n\n- Evaluate your AWS resource configurations for desired settings.\n- Get a snapshot of the current configurations of the supported resources that are associated with your AWS account.\n- Retrieve configurations of one or more resources that exist in your account.\n- Retrieve historical configurations of one or more resources.\n- Receive a notification whenever a resource is created, modified, or deleted.\n- View relationships between resources. For example, you might want to find all resources that use a particular security group.\n\n[AWS Config](https://aws.amazon.com/config/)\n\n- AWS Config is a service that enables you to assess, audit, and evaluate the configurations of your AWS resources.\n- Config continuously monitors and records your AWS resource configurations and allows you to automate the evaluation of recorded configurations against desired configurations. \n- With Config, you can review changes in configurations and relationships between AWS resources, dive into detailed resource configuration histories, and determine your overall compliance against the configurations specified in your internal guidelines.\n\n## AWS Config Managed Rules\n\n[AWS Config Managed Rules](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config_use-managed-rules.html)\n\n- AWS Config provides AWS managed rules, which are predefined, customizable rules that AWS Config uses to evaluate whether your AWS resources comply with common best practices.\n- For example, you could use a managed rule to quickly start assessing whether your Amazon Elastic Block Store (Amazon EBS) volumes are encrypted or whether specific tags are applied to your resources\n- You can set up and activate these rules without writing the code to create an AWS Lambda function, which is required if you want to create custom rules.\n- The AWS Config console guides you through the process of configuring and activating a managed rule.\n\nThe evaluation triggers are defined as part of the rule, and they can include the following types:\n\n- Configuration changes\n    - AWS Config triggers the evaluation when any resource that matches the rule's scope changes in configuration. The evaluation runs after AWS Config sends a configuration item change notification.\n- Periodic\n    - AWS Config runs evaluations for the rule at a frequency that you choose (for example, every 24 hours).\n\n\n### Managed Rules\n\n[List of AWS Config Managed Rules](https://docs.aws.amazon.com/config/latest/developerguide/managed-rules-by-aws-config.html)\n\n- [approved-amis-by-id](https://docs.aws.amazon.com/config/latest/developerguide/approved-amis-by-id.html)\n  - Checks if running instances are using specified AMIs. Specify a list of approved AMI IDs. Running instances with AMIs that are not on this list are NON_COMPLIANT.\n\n\n---\n\n\n\n\n\n\n\n### Viewing Compliance History Timeline for Resources\n\n[Viewing Compliance History Timeline for Resources](https://docs.aws.amazon.com/config/latest/developerguide/view-compliance-history.html)\n\n- AWS Config supports storing compliance state changes of resources as evaluated by AWS Config Rules. The resource compliance history is presented in the form of a timeline. The timeline captures changes as ConfigurationItems over a period of time for a specific resource.\n\n### AWS Config Rules\n\n#### Specifying Triggers\n\n[Specifying Triggers for AWS Config Rules](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config-rules.html)\n\n- When you add a rule to your account, you can specify when you want AWS Config to run the rule; this is called a trigger. AWS Config evaluates your resource configurations against the rule when the trigger occurs.\n- There are two types of triggers:\n  - Configuration changes\n  - Periodic\n\n#### Managing Rules\n\n##### restricted-ssh\n\n[restricted-ssh](https://docs.aws.amazon.com/config/latest/developerguide/restricted-ssh.html)\n\n- Checks if the incoming SSH traffic for the security groups is accessible. The rule is COMPLIANT when IP addresses of the incoming SSH traffic in the security groups are restricted (CIDR other than 0.0.0.0/0). This rule applies only to IPv4.\n\n#### Remediating Noncompliant AWS Resources by AWS Config Rules\n\n[Remediating Noncompliant AWS Resources by AWS Config Rules](https://docs.aws.amazon.com/config/latest/developerguide/remediation.html)\n\n- AWS Config allows you to remediate noncompliant resources that are evaluated by AWS Config Rules. AWS Config applies remediation using AWS Systems Manager Automation documents. These documents define the actions to be performed on noncompliant AWS resources evaluated by AWS Config Rules.\n\n"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/connect.md",
    "content": "# Connect\n\n\n[Amazon Connect](https://aws.amazon.com/connect)\n\n- Provide superior customer service at a lower cost with an easy-to-use omnichannel cloud contact center\n\n\n## Blogs\n\n[Easily set up interactive messages for your Amazon Connect chatbot](https://aws.amazon.com/blogs/contact-center/easily-set-up-interactive-messages-for-your-amazon-connect-chatbot)"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/dataMigrationService.md",
    "content": "# Data Migration Service\n\n[AWS Data Migration Service](https://aws.amazon.com/dms)\n\n\n[Cheatsheet - AWS Data Migration Service](https://tutorialsdojo.com/aws-database-migration-service)\n\n- AWS Database Migration Service (AWS DMS) helps you migrate databases to AWS quickly and securely. \n- The source database remains fully operational during the migration, minimizing downtime to applications that rely on the database. \n- The AWS Database Migration Service can migrate your data to and from the most widely used commercial and open-source databases.\n- AWS Database Migration Service supports homogeneous migrations such as Oracle to Oracle, as well as heterogeneous migrations between different database platforms, such as Oracle or Microsoft SQL Server to Amazon Aurora\n\n\n## How AWS Database Migration Service works\n\n[How AWS Database Migration Service works](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Introduction.html)\n\n- AWS Database Migration Service (AWS DMS) is a web service that you can use to migrate data from a source data store to a target data store. \n- These two data stores are called endpoints. \n- You can migrate between source and target endpoints that use the same database engine, such as from an Oracle database to an Oracle database. \n- You can also migrate between source and target endpoints that use different database engines, such as from an Oracle database to a PostgreSQL database. \n- The only requirement to use AWS DMS is that one of your endpoints must be on an AWS service."
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/developerToolsConsole.md",
    "content": "### DeveloperToolsConsole\n\n[Security for features of the Developer Tools console](https://docs.aws.amazon.com/dtconsole/latest/userguide/security.html#security-notifications)\n\n- You can choose to limit the details included in notifications to only what is included in an event. This is referred to as the Basic detail type. These events contain exactly the same information as is sent to Amazon EventBridge and Amazon CloudWatch Events.\n\n[Create a notification rule for a repository](https://docs.aws.amazon.com/dtconsole/latest/userguide/getting-started-repository.html)\n\n- You can create notification rules to send notifications about repository events that are important to you.\n"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/directConnect.md",
    "content": "# Direct Connect\n\n[Cheat Sheet - Direct Connect](https://tutorialsdojo.com/aws-direct-connect)\n\n[AWS Whitepapaer - AWS Direct Connect](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/aws-direct-connect.html)\n\n[How can I configure VPN as a backup for my AWS Direct Connect connection?](https://aws.amazon.com/premiumsupport/knowledge-center/configure-vpn-backup-dx)\n\n- AWS Direct Connect makes it easy to establish a dedicated connection from an on-premises network to one or more VPCs in the same region\n\n### Working with Direct Connect gateways\n\n[Working with Direct Connect gateways](https://docs.aws.amazon.com/directconnect/latest/UserGuide/direct-connect-gateways.html)\n\n\n## Blogs\n\n\n[Which type of virtual interface should I use to connect different resources in AWS?](https://aws.amazon.com/premiumsupport/knowledge-center/public-private-interface-dx)\n\n- AWS Direct Connect (DX) provides three types of virtual interfaces: public, private, and transit. How do I determine which type I should use to connect different resources (public or private) in AWS?\n\n  - To connect to AWS resources that are reachable by a public IP address (such as an Amazon Simple Storage Service bucket) or AWS public endpoints, use a public virtual interface\n  - To connect to your resources hosted in an Amazon Virtual Private Cloud (Amazon VPC) using their private IP addresses, use a private virtual interface. \n  - To connect to your resources hosted in an Amazon VPC (using their private IP addresses) through a transit gateway, use a transit virtual interface\n\n\n  [New – AWS Direct Connect Gateway – Inter-Region VPC Access](https://aws.amazon.com/blogs/aws/new-aws-direct-connect-gateway-inter-region-vpc-access/)\n\n"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/dynamodb.md",
    "content": "> Revision Count: 0\n\n# Dynamodb\n\n[Cheatsheet - Dynamodb](https://tutorialsdojo.com/amazon-dynamodb)\n\n- fast\n- highly scalable\n- highly available, \n- cost-effective \n- non-relational database service\n\n\n\n[Introduction](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html)\n\nWhat Is Amazon DynamoDB?\n\nAmazon DynamoDB is a fully managed NoSQL database service that provides fast and predictable performance with seamless scalability. DynamoDB lets you offload the administrative burdens of operating and scaling a distributed database so that you don't have to worry about hardware provisioning, setup and configuration, replication, software patching, or cluster scaling. DynamoDB also offers encryption at rest, which eliminates the operational burden and complexity involved in protecting sensitive data\n\n[Best Practices for Storing Large Items and Attributes](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-use-s3-too.html)\n\n- Amazon DynamoDB currently limits the size of each item that you store in a table (see Service, Account, and Table Quotas in Amazon DynamoDB). If your application needs to store more data in an item than the DynamoDB size limit permits, you can try compressing one or more large attributes or breaking the item into multiple items (efficiently indexed by sort keys). You can also store the item as an object in Amazon Simple Storage Service (Amazon S3) and store the Amazon S3 object identifier in your DynamoDB item.\n\n\n**High Availability and Durability**\n\n- DynamoDB automatically spreads the data and traffic for your tables over a sufficient number of servers to handle your throughput and storage requirements, while maintaining consistent and fast performance. All of your data is stored on solid-state disks (SSDs) and is automatically replicated across multiple Availability Zones in an AWS Region, providing built-in high availability and data durability\n- You can use global tables to keep DynamoDB tables in sync across AWS Regions\n\n\n\n[Dynamodb best practices](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/best-practices.html)\n\n\n### Global Tables\n\n\n[Global Tables: Multi-Region Replication with DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GlobalTables.html)\n\n- Amazon DynamoDB global tables provide a fully managed solution for deploying a multiregion, multi-active database, without having to build and maintain your own replication solution.\n- With global tables you can specify the AWS Regions where you want the table to be available.\n- DynamoDB performs all of the necessary tasks to create identical tables in these Regions and propagate ongoing data changes to all of them.\n\n[Amazon DynamoDB global tables](https://aws.amazon.com/dynamodb/global-tables/)\n\n## Security\n\n### Identity and Access Management in Amazon DynamoDB\n\n[Identity and Access Management in Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/authentication-and-access-control.html)\n\n- Access to Amazon DynamoDB requires credentials. Those credentials must have permissions to access AWS resources, such as an Amazon DynamoDB table or an Amazon Elastic Compute Cloud (Amazon EC2) instance.\n  - Authentication\n  - Access Control\n\n\n## Error Handling with DynamoDB\n\n[Error Handling with DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.Errors.html)\n\n\n\n\n## Note\n\n- RDS MySQL is not as scalable and cost-effective as DynamoDB.\n- It is not recommended to store authorization tokens permanently on DynamoDB tables. These tokens should be generated upon user authentication and then temporarily saved on a DynamoDB for a fixed session length.\n\n\n## Blogs\n\n[New – Auto Scaling for Amazon DynamoDB](https://aws.amazon.com/blogs/aws/new-auto-scaling-for-amazon-dynamodb)"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/ec2.md",
    "content": "# EC2\n\n[Cheat Sheet - EBS](https://tutorialsdojo.com/amazon-ebs)\n\n[EC2](https://tutorialsdojo.com/amazon-elastic-compute-cloud-amazon-ec2)\n\n\n[dedicated-hosts](https://aws.amazon.com/ec2/dedicated-hosts)\n\n- Network Load Balancers do not use security groups.\n\n[iam-roles-for-amazon-ec2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html)\n\n- The AWS SDKs assume the IAM roles attached in the instances and get temporary credentials by interacting with the AWS STS service.\n\n[security-group-load-balancer](https://aws.amazon.com/premiumsupport/knowledge-center/security-group-load-balancer/)\n\n[How do I stop and start Amazon EC2 instances at regular intervals using Lambda?](https://aws.amazon.com/premiumsupport/knowledge-center/start-stop-lambda-cloudwatch)\n\nTo stop and start EC2 instances at regular intervals using Lambda, do the following:\n- Create a custom AWS Identity and Access Management (IAM) policy and execution role for your Lambda function. \n- Create Lambda functions that stop and start your EC2 instances. \n- Test your Lambda functions. \n- Create CloudWatch Events rules that trigger your function on a schedule.\n\nThis example setup is a simple solution. For a more robust solution, use the AWS Instance Scheduler\n\n\n## EC2 Spot\n\n### Getting Started with Amazon EC2 Spot Instances\n\n[Getting Started with Amazon EC2 Spot Instances](https://aws.amazon.com/ec2/spot/getting-started/)\n\n\n#### No Spot capacity available\n\n[Why am I receiving a \"no Spot capacity available\" error when trying to launch an Amazon EC2 Spot Instance?](https://aws.amazon.com/premiumsupport/knowledge-center/ec2-spot-instance-insufficient-capacity/)\n\n- Be flexible about which instance types you request and which Availability Zones you deploy your workload in\n\n\n[Spot Instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-spot-instances.html)\n\n\n### Elastic network interfaces\n\n[Elastic network interfaces](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html)\n\n- An elastic network interface is a logical networking component in a VPC that represents a virtual network card.\n\n### Multiple IP addresses\n\n[Multiple IP addresses](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/MultipleIP.html)\n\n- You can specify multiple private IPv4 and IPv6 addresses for your instances. \n- The number of network interfaces and private IPv4 and IPv6 addresses that you can specify for an instance depends on the instance type.\n\n## Fleets\n\n### Example 5: Launch a Spot Fleet using the diversified allocation strategy\n\n[Example 5: Launch a Spot Fleet using the diversified allocation strategy](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-fleet-examples.html#fleet-config5)\n\n- A best practice to increase the chance that a spot request can be fulfilled by EC2 capacity in the event of an outage in one of the Availability Zones is to diversify across zones.\n- For this scenario, include each Availability Zone available to you in the launch specification. And, instead of using the same subnet each time, use three unique subnets (each mapping to a different zone).\n\n### Dedicated Instances\n\n[Dedicated Instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-instance.html)\n\n- Dedicated Instances are Amazon EC2 instances that run in a virtual private cloud (VPC) on hardware that's dedicated to a single customer. \n\n```bash\nTenancy type to be dedicated host.\n```\n\n## Storage\n\n### Amazon EBS volume types\n\n[Amazon EBS volume types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html)\n\n- Solid state drives (SSD) — Optimized for transactional workloads involving frequent read/write operations with small I/O size, where the dominant performance attribute is IOPS.\n- Hard disk drives (HDD) — Optimized for large streaming workloads where the dominant performance attribute is throughput.\n- Previous generation — Hard disk drives that can be used for workloads with small datasets where data is accessed infrequently and performance is not of primary importance\n\nThere are several factors that can affect the performance of EBS volumes, such as instance configuration, I/O characteristics, and workload demand\n\n\n[Comparision of varios block storage types](https://aws.amazon.com/ebs/features)\n\n\n## Instances\n\n### Reserved Instances\n\n[Reserved Instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-reserved-instances.html)\n\n- Reserved Instances provide you with significant savings on your Amazon EC2 costs compared to On-Demand Instance pricing. \n- Reserved Instances are not physical instances, but rather a billing discount applied to the use of On-Demand Instances in your account.\n\n\n## Security\n\n#### Supported resource-level permissions for Amazon EC2 API actions\n\n[Supported resource-level permissions for Amazon EC2 API actions](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-policy-structure.html#ec2-supported-iam-actions-resources)\n\n- Resource-level permissions refers to the ability to specify which resources users are allowed to perform actions on. \n- Amazon EC2 has partial support for resource-level permissions. \n- This means that for certain Amazon EC2 actions, you can control when users are allowed to use those actions based on conditions that have to be fulfilled, or specific resources that users are allowed to use. \n- For example, you can grant users permissions to launch instances, but only of a specific type, and only using a specific AMI.\n\n\n## VM Import/Export\n\n[VM Import/Export](https://aws.amazon.com/ec2/vm-import)\n\n- VM Import/Export enables you to easily import virtual machine images from your existing environment to Amazon EC2 instances and export them back to your on-premises environment\n\n\n## Dynamic Scaling\n\n### Scaling based on Amazon SQS\n\n[Scaling based on Amazon SQS](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-using-sqs-queue.html)\n"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/ec2AutoScaling.md",
    "content": "# EC2 Autoscaling\n\n\n[Scheduled scaling for Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/schedule_time.html)\n\n- cooldown timer does not influence the scheduled activity\n\n[Cooldown](https://docs.aws.amazon.com/autoscaling/ec2/userguide/Cooldown.html)\n\n- even if the cooldown timer is running, the scheduled action takes high priority and executes immediately\n\n[Amazon EC2 Auto Scaling lifecycle hooks](https://docs.aws.amazon.com/autoscaling/ec2/userguide/lifecycle-hooks.html)\n\n- When a scale-out event occurs, your newly launched instance completes its startup sequence and transitions to a wait state. \n- While the instance is in a wait state, it runs a script to download and install the needed software packages for your application, \n  making sure that your instance is fully ready before it starts receiving traffic. \n- When the script is finished installing software, it sends the complete-lifecycle-action command to continue.\n\n[AutoScalingReplacingUpdate policy](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatepolicy.html)\n\nTo specify how AWS CloudFormation handles replacement updates for an Auto Scaling group, use the AutoScalingReplacingUpdate policy. This policy enables you to specify whether AWS CloudFormation replaces an Auto Scaling group with a new one or replaces only the instances in the Auto Scaling group.\n\n### Supports Following Deployment Methods\n\n- AllAtOnce\n- HalfAtATime\n- OneAtATime. \n\n\nBut it does not support the canary type.\n\n### Auto Scaling groups with multiple instance types and purchase options\n\n- You can launch and automatically scale a fleet of On-Demand Instances and Spot Instances within a single Auto Scaling group. In addition to receiving discounts for using Spot Instances, you can use Reserved Instances or a Savings Plan to receive discounted rates of the regular On-Demand Instance pricing.\n\n\n\n\n## Autoscaling Groups\n\n[What is Amazon EC2 Auto Scaling?](https://docs.aws.amazon.com/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html)\n\n- Amazon EC2 Auto Scaling helps you ensure that you have the correct number of Amazon EC2 instances available to handle the load for your application. \n- You create collections of EC2 instances, called Auto Scaling groups\n- You can specify the minimum number of instances in each Auto Scaling group, and Amazon EC2 Auto Scaling ensures that your group never goes below this size. \n- You can specify the maximum number of instances in each Auto Scaling group, and Amazon EC2 Auto Scaling ensures that your group never goes above this size.\n\n\n### Elastic Load Balancing and Amazon EC2 Auto Scaling\n\n[Elastic Load Balancing and Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-load-balancer.html)\n\n- Elastic Load Balancing automatically distributes your incoming application traffic across all the EC2 instances that you are running. \n- Elastic Load Balancing helps to manage incoming requests by optimally routing traffic so that no one instance is overwhelmed.\n- To use Elastic Load Balancing with your Auto Scaling group, attach the load balancer to your Auto Scaling group.\n- This registers the group with the load balancer, which acts as a single point of contact for all incoming web traffic to your Auto Scaling group.\n\n## Elastic Load Balancing\n\n### Attaching a load balancer to your Auto Scaling group\n\n[Attaching a load balancer to your Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/attach-load-balancer-asg.html)\n\n- Amazon EC2 Auto Scaling integrates with Elastic Load Balancing to help you to insert an Application Load Balancer, Network Load Balancer, Classic Load Balancer, or Gateway Load Balancer in front of your Auto Scaling group.\n- When you attach an Application Load Balancer, Network Load Balancer, or Gateway Load Balancer, you attach a target group. \n- Amazon EC2 Auto Scaling adds instances to the attached target group when they are launched. \n- You can attach one or multiple target groups, and configure health checks on a per target group basis.\n\n### Scaling based on Amazon SQS\n\n[Scaling based on Amazon SQS](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-using-sqs-queue.html)\n\n- There are some scenarios where you might think about scaling in response to activity in an Amazon SQS queue. \n- For example, suppose that you have a web app that lets users upload images and use them online.\n\n### Temporarily removing instances from your Auto Scaling group\n\n[Temporarily removing instances from your Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-enter-exit-standby.html)\n\n- You can put an instance that is in the InService state into the Standby state, update or troubleshoot the instance, and then return the instance to service. Instances that are on standby are still part of the Auto Scaling group, but they do not actively handle load balancer traffic.\n- Amazon EC2 Auto Scaling does not perform health checks on instances that are in a standby state.\n\n```bash\naws autoscaling enter-standby --instance-ids i-05b4f7d5be44822a6 \\\n  --auto-scaling-group-name my-asg --should-decrement-desired-capacity\n```\n\n\n### Monitoring\n\n#### Health checks for Auto Scaling instances\n\n[Health checks for Auto Scaling instances](https://docs.aws.amazon.com/autoscaling/ec2/userguide/healthcheck.html)\n\nThe health status of an Auto Scaling instance is either healthy or unhealthy. All instances in your Auto Scaling group start in the healthy state. Instances are assumed to be healthy unless Amazon EC2 Auto Scaling receives notification that they are unhealthy. This notification can come from one or more of the following sources: Amazon EC2, Elastic Load Balancing (ELB), or a custom health check.\n\n**Instance health status**\n\nAmazon EC2 Auto Scaling can determine the health status of an instance using one or more of the following:\n\n- Status checks provided by Amazon EC2 to identify hardware and software issues that may impair an instance. The default health checks for an Auto Scaling group are EC2 status checks only.\n- Health checks provided by Elastic Load Balancing (ELB). These health checks are disabled by default but can be enabled.\n- Your custom health checks.\n\nUsing custom health checks\n\n```bash\naws autoscaling set-instance-health --instance-id i-123abc45d --health-status Unhealthy\n```\n\nHealth check grace period\n\n- By default, the health check grace period is 300 seconds when you create an Auto Scaling group from the AWS Management Console. Its default value is 0 seconds when you create an Auto Scaling group using the AWS CLI or an SDK.\n- If you add a lifecycle hook, the grace period does not start until the lifecycle hook actions are completed and the instance enters the InService state.\n\n\n"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/ecs.md",
    "content": "# ECS\n\n[Cheetsheet - ECS](https://tutorialsdojo.com/amazon-elastic-container-service-amazon-ecs/)\n\n[CheatSheet - Elastic Container Service (ECS) vs Lambda](https://tutorialsdojo.com/ec2-container-service-ecs-vs-lambda)\n\n[CheatSheet - AWS Fargate](https://tutorialsdojo.com/aws-fargate)\n\n[What is Amazon Elastic Container Service?](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html)\n\n- highly scalable, fast container management service that makes it easy to run, stop, and manage containers on a cluster\n- Your containers are defined in a task definition that you use to run individual tasks or tasks within a service\n- In this context, a service is a configuration that enables you to run and maintain a specified number of tasks simultaneously in a cluster. \n- You can run your tasks and services on a serverless infrastructure that is managed by AWS Fargate. Alternatively, for more control over your infrastructure, you can run your tasks and services on a cluster of Amazon EC2 instances that you manage.\n\n[What is ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html)\n\n[Target tracking scaling policies](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-autoscaling-targettracking.html)\n\n[How do I troubleshoot Amazon ECS tasks that take a long time to stop when the container instance is set to DRAINING?](https://aws.amazon.com/premiumsupport/knowledge-center/ecs-tasks-stop-delayed-draining/)\n\n[service_definition_parameters](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service_definition_parameters.html)\n\n- If a service is using the rolling update (ECS) deployment type, the minimumHealthyPercent represents a lower limit on the number of your service's tasks that must remain in the RUNNING state during a deployment\n- Minimum healthy percent represents a lower limit on the tasks. When the parameter is set to 100, the number of the service's running tasks would be equal or\n  more than the desired count of tasks during a rolling update.\n\n[Blue/Green deployment with CodeDeploy](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-bluegreen.html)\n\n- You must configure the service to use either an Application Load Balancer or Network Load Balancer. Classic Load Balancers aren't supported\n\n> The Fargate launch type is unnecessary for the blue/green deployment type. The EC2 launch type is also supported.\n\n- When you initially create a CodeDeploy application and deployment group, you must specify the following:\n  You must define two target groups for the load balancer\n\n## Using Spot Instances\n\n- A Spot Instance is an unused Amazon EC2 instance that is available for less than the On-Demand price.\n- The hourly price for a Spot Instance is called a Spot price\n\n\n### Spot Instance Draining\n\n- Amazon EC2 terminates, stops, or hibernates your Spot Instance when the Spot price exceeds the maximum price for your request or capacity is no longer available\n- Amazon EC2 provides a Spot Instance interruption notice, which gives the instance a two-minute warning before it is interrupted.\n- If Amazon ECS Spot Instance draining is enabled on the instance, ECS receives the Spot Instance interruption notice and places the instance in DRAINING status.\n- When a container instance is set to DRAINING, Amazon ECS prevents new tasks from being scheduled for placement on the container instance. \n- Service tasks on the draining container instance that are in the PENDING state are stopped immediately\n- If there are container instances in the cluster that are available, replacement service tasks are started on them.\n\n```bash\n# To enable Spot Instance draining for an existing container instance\n# Edit the /etc/ecs/ecs.config file and add the following:\n\nECS_ENABLE_SPOT_INSTANCE_DRAINING=true\n```\n\n\n[Four Steps to Run ECS Clusters on EC2 Spot Instances](https://aws.amazon.com/ec2/spot/containers-for-less/get-started/)\n\n\n## Task Definations\n\nAmazon ECS enables you to inject sensitive data into your containers by storing your sensitive data in either AWS Secrets Manager secrets or AWS Systems Manager Parameter Store parameters and then referencing them in your container definition.\n\n- Store the database credentials using the AWS Secrets Manager\n- encrypt them using AWS KMS\n- Create an IAM Role for your Amazon ECS task execution role\n  - and reference it with your task definition which allows access to both KMS and AWS Secrets Manager\n- Within your container definition, specify secrets with the name of the environment variable to set in the container and the full ARN of the Secrets Manager secret which contains the sensitive data, to present to the container.\n> Systems Manager Parameter Store service doesn't provide dedicated storage with lifecycle management and key rotation, unlike Secrets Manager.\n\n\n### Amazon ECS task networking\n\n[Amazon ECS task networking](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html)\n\n- The networking behavior of Amazon ECS tasks hosted on Amazon EC2 instances is dependent on the network mode defined in the task definition. The following are the available network modes. Amazon ECS recommends using the awsvpc network mode unless you have a specific need to use a different network mode.\n  - awsvpc — The task is allocated its own elastic network interface (ENI) and a primary private IPv4 address. This gives the task the same networking properties as Amazon EC2 instances.\n  - bridge — The task utilizes Docker's built-in virtual network which runs inside each Amazon EC2 instance hosting the task.\n  - host — The task bypasses Docker's built-in virtual network and maps container ports directly to the ENI of the Amazon EC2 instance hosting the task. As a result, you can't run multiple instantiations of the same task on a single Amazon EC2 instance when port mappings are used.\n  - none — The task has no external network connectivity.\n\n- In order for you to use security groups and network monitoring tools at a more granular level within your ECS tasks, you have to use the awsvpc network mode\n\n## Troubleshooting\n\n### CannotPullContainer task errors\n\n[CannotPullContainer task errors](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_cannot_pull_image.html)\n\n[How can I resolve the Amazon ECR error \"CannotPullContainerError: API error\" in Amazon ECS?\n](https://aws.amazon.com/premiumsupport/knowledge-center/ecs-pull-container-api-error-ecr)\n\n- One reason : because a route to the internet doesn't exist:\n\n\n## Amazon ECS on AWS Fargate\n\n[Amazon ECS on AWS Fargate](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html)\n\n- AWS Fargate is a technology that you can use with Amazon ECS to run containers without having to manage servers or clusters of Amazon EC2 instances. \n- With AWS Fargate, you no longer have to provision, configure, or scale clusters of virtual machines to run containers"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/elasticBeanStalk.md",
    "content": "# ElasticBeanStalk\n\n\n[using-features.rolling-version-deploy](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.rolling-version-deploy.html)\n\n- AWS Elastic Beanstalk provides several options for how deployments are processed, including deployment policies (All at once, Rolling, Rolling with additional batch, Immutable, and Traffic splitting)\n- If you use blue/green deployment stratergy then two environments are required.\n\n[Blue/Green deployments with Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.CNAMESwap.html)\n"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/elasticCache.md",
    "content": "# Elastic Cache\n\n[Cheat Sheet - ElasticCache](https://tutorialsdojo.com/amazon-elasticache)\n\n\n## What is Amazon ElastiCache for Memcached?\n\n[What is Amazon ElastiCache for Memcached?](https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/WhatIs.html)\n\n- Amazon ElastiCache is a web service that makes it easy to set up, manage, and scale a distributed in-memory data store or cache environment in the cloud. \n- It provides a high-performance, scalable, and cost-effective caching solution. At the same time, it helps remove the complexity associated with deploying and managing a distributed cache environment.\n\n\n[Elastic Cache - How it works](https://aws.amazon.com/elasticache/)\n\n- fully managed, in-memory caching service supporting flexible, real-time use cases.\n- You can use ElastiCache for caching, which accelerates application and database performance, or as a primary data store for use cases that don't require durability like session stores, gaming leaderboards, streaming, and analytics.\n- ElastiCache is compatible with Redis and Memcached. "
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/elasticFileSystem.md",
    "content": "# Elastic File System\n\n[Cheat Sheet - AWS Elastic File System](https://tutorialsdojo.com/amazon-efs)\n\n[What is Amazon Elastic File System?](https://docs.aws.amazon.com/efs/latest/ug/whatisefs.html)\n\n- Amazon Elastic File System (Amazon EFS) provides a simple, serverless, set-and-forget elastic file system for use with AWS Cloud services and on-premises resources\n- It is built to scale on demand to petabytes without disrupting applications, growing and shrinking automatically as you add and remove files, eliminating the need to provision and manage capacity to accommodate growth\n- Amazon EFS supports the Network File System version 4 (NFSv4.1 and NFSv4.0) protocol, so the applications and tools that you use today work seamlessly with Amazon EFS. \n- Multiple compute instances, including Amazon EC2, Amazon ECS, and AWS Lambda, can access an Amazon EFS file system at the same time, providing a common data source for workloads and applications running on more than one compute instance or server."
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/elasticLoadBalancing.md",
    "content": "# Elastic Load Balancing\n\n[Cheat Sheet - ALB vs NLB vs CLB](https://tutorialsdojo.com/application-load-balancer-vs-network-load-balancer-vs-classic-load-balancer)\n\n### Health checks for your target groups\n\n[Health checks for your target groups](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/target-group-health-checks.html)\n\n- Your Application Load Balancer periodically sends requests to its registered targets to test their status. These tests are called health checks.\n\n> If a target group contains only unhealthy registered targets, the load balancer routes requests to all those targets, regardless of their health status.\n\n## Network LoadBalancer\n\n[Troubleshoot your Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-troubleshooting.html)\n\n\n### Target security groups\n\n[Target security groups](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/target-group-register-targets.html#target-security-groups)\n\n- When you register EC2 instances as targets, you must ensure that the security groups for these instances allow traffic on both the listener port and the health check port.\n\n\n[Deregistration delay](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-target-groups.html#deregistration-delay)\n\n\n\n## Notes\n\n-  Network Load Balancers don't have associated security groups.\n\n\n## Blogs\n\n- [How do I attach a security group to my Elastic Load Balancer?](https://aws.amazon.com/premiumsupport/knowledge-center/security-group-load-balancer)\n\n- [AWS Elastic Load Balancing: Support for SSL Termination](https://aws.amazon.com/blogs/aws/elastic-load-balancer-support-for-ssl-termination)\n\n"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/eventBridge.md",
    "content": "# Event Bridge\n\n### What is event bridge\n[What Is Amazon EventBridge?](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html)\n[Video - Intro to Event Bridge](https://youtu.be/TXh5oU_yo9M)\n\nAmazon EventBridge is a serverless event bus service that you can use to connect your applications with data from a variety of sources. EventBridge delivers a stream of real-time data from your applications, software as a service (SaaS) applications, and AWS services to targets such as AWS Lambda functions, HTTP invocation endpoints using API destinations, or event buses in other AWS accounts.\n\n#### Getting started with Amazon EventBridge\n\n[Getting started with Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-get-started.html)\n\nTo create a rule for events, you specify an action to take when EventBridge receives an event that matches the event pattern in the rule. When an event matches, EventBridge sends the event to the specified target and triggers the action defined in the rule.\n\n#### Event buses\n[Amazon EventBridge event buses](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-bus.html)\n\nAn event bus is a pipeline that receives events. Rules associated with the event bus evaluate events as they arrive. Each rule checks whether an event matches the rule's criteria. You associate a rule with a specific event bus, so the rule only applies to events received by that event bus.\n\n[Video - The following video describes what event buses are and explains some of the basics of them](https://youtu.be/LkEBBgWRKkI)\n\n[The following video covers the different event buses and when to use them](https://youtu.be/cB5-GTSJNqc)\n\n#### Receiving events from a SaaS partner\n[Receiving events from a SaaS partner with Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-saas.html)\n\n[Video - The following video covers SaaS integrations with EventBridge](https://youtu.be/zxFrM6z8Wdg)\n\n#### Targets\n\n[Sending and receiving Amazon EventBridge events between AWS accounts](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-cross-account.html)\n\nYou can configure EventBridge to send and receive events between AWS accounts. When you configure EventBridge to send or receive events between accounts, you can specify which AWS accounts can send events to or receive events from the event bus in your account. \n\n[Video - The following video covers routing events between accounts](https://youtu.be/pX_xIW_EuCE)\n\n\n#### Decoupling larger applications with Amazon EventBridge\n[Decoupling larger applications with Amazon EventBridge](https://aws.amazon.com/blogs/compute/decoupling-larger-applications-with-amazon-eventbridge/)\n\n- you can use an event-based architecture to decouple services and functional areas of applications.\n"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/guardDuty.md",
    "content": "# AWS GuardDuty\n\n\n[What is Amazon GuardDuty?](https://docs.aws.amazon.com/guardduty/latest/ug/what-is-guardduty.html)\n\n- Amazon GuardDuty is a continuous security monitoring service that analyzes and processes the following Data sources: VPC Flow Logs, AWS CloudTrail management event logs, CloudTrail S3 data event logs, and DNS logs. It uses threat intelligence feeds, such as lists of malicious IP addresses and domains, and machine learning to identify unexpected and potentially unauthorized and malicious activity within your AWS environment. This can include issues like escalations of privileges, uses of exposed credentials, or communication with malicious IP addresses, or domains. For example, GuardDuty can detect compromised EC2 instances serving malware or mining bitcoin.\n\n[How to get started with security response automation on AWS](https://aws.amazon.com/blogs/security/how-get-started-security-response-automation-aws/)\n\n\n### Finding Types\n\n#### EC2 finding types\n\n- Recon:EC2/Portscan\n  - Data source: VPC Flow Logs : This finding informs you that the listed EC2 instance in your AWS environment is engaged in a possible port scan attack because it is trying to connect to multiple ports over a short period of time. \n\n"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/iam.md",
    "content": "> Revision Count: 1\n\n\n# Identify And Access Management\n\n[Cheat Sheet - Identify And Access Management](https://tutorialsdojo.com/aws-identity-and-access-management-iam)\n\n[Cheat Sheet - SCP vs IAM](https://tutorialsdojo.com/service-control-policies-scp-vs-iam-policies)\n\n[Cheat Sheet - security-identity-services](https://tutorialsdojo.com/aws-cheat-sheets-security-identity-services)\n\n### Identity providers and federation\n\n[Enabling SAML 2.0 federated users to access the AWS Management Console](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_enable-console-saml.html)\n\n- You can use a role to configure your SAML 2.0-compliant identity provider (IdP) and AWS to permit your federated users to access the AWS Management Console. \n- The role grants the user permissions to carry out tasks in the console.\n\n### Enabling custom identity broker access to the AWS console\n\n[Enabling custom identity broker access to the AWS console](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_enable-console-custom-url.html)\n\n- You can write and run code to create a URL that lets users who sign in to your organization's network securely access the AWS Management Console. \n- The URL includes a sign-in token that you get from AWS and that authenticates the user to AWS.\n\n## Logging IAM and AWS STS API calls with AWS CloudTrail\n\n[Logging IAM and AWS STS API calls with AWS CloudTrail](https://docs.aws.amazon.com/IAM/latest/UserGuide/cloudtrail-integration.html)\n\n- IAM and AWS STS are integrated with AWS CloudTrail, a service that provides a record of actions taken by an IAM user or role.\n- CloudTrail captures all API calls for IAM and AWS STS as events, including calls from the console and from API calls. \n- If you create a trail, you can enable continuous delivery of CloudTrail events to an Amazon S3 bucket. \n- If you don't configure a trail, you can still view the most recent events in the CloudTrail console in Event history\n\n\n\n## How IAM roles differ from resource-based policies\n\n[How IAM roles differ from resource-based policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_compare-resource-policies.html)\n\n- For some AWS services, you can grant cross-account access to your resources.\n- To do this, you attach a policy directly to the resource that you want to share, instead of using a role as a proxy.\n- The resource that you want to share must support resource-based policies. \n-  Unlike an identity-based policy, a resource-based policy specifies who (which principal) can access that resource.\n\n\n### Temporary security credentials in IAM\n\n[Temporary security credentials in IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)\n\n- You can use the AWS Security Token Service (AWS STS) to create and provide trusted users with temporary security credentials that can control access to your AWS resources.\n  - Temporary security credentials are short-term, as the name implies. They can be configured to last for anywhere from a few minutes to several hours\n  - Temporary security credentials are not stored with the user but are generated dynamically and provided to the user when requested.\n\n\n## Actions\n\n[UploadServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UploadServerCertificate.html)\n\n- Uploads a server certificate entity for the AWS account. The server certificate entity includes a public key certificate, a private key, and an optional certificate chain, which should all be PEM-encoded.\n\n## Using an IAM role to grant permissions to applications running on Amazon EC2 instances\n\n[Using an IAM role to grant permissions to applications running on Amazon EC2 instances](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html#roles-usingrole-ec2instance-roles)\n- The administrator uses IAM to create the Get-pics role. \n- In the role's trust policy, the administrator specifies that only EC2 instances can assume the role\n- In the role's permission policy, the administrator specifies read-only permissions for the photos bucket.\n- A developer launches an EC2 instance and assigns the Get-pics role to that instance.\n- When the application runs, it obtains temporary security credentials from Amazon EC2 instance metadata,\n- Using the retrieved temporary credentials, the application accesses the photo bucket. \n- Because of the policy attached to the Get-pics role, the application has read-only permissions.\n\n## Tutorials\n\n### IAM tutorial: Delegate access across AWS accounts using IAM roles\n\n[IAM tutorial: Delegate access across AWS accounts using IAM roles](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html)\n\nThe above tutorial teaches you how to use a role to delegate access to resources in different AWS accounts that you own called Production and Development\n\n- Step 1: Create a role in the Production Account\n  - First, you use the AWS Management Console to establish trust between the Production account (ID number 999999999999) and the Development account (ID number 111111111111). \n  - You start by creating an IAM role named UpdateApp. \n  - When you create the role, you define the Development account as a trusted entity and specify a permissions policy that allows trusted users to update the productionapp bucket.\n  \n\n### Providing access to an IAM user in another AWS account that you own\n\n[Providing access to an IAM user in another AWS account that you own](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html)\n\n- You can grant your IAM users permission to switch to roles within your AWS account or to roles defined in other AWS accounts that you own.\n\n\n## Controlling access to AWS resources using tags\n\n[Controlling access to AWS resources using tags](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html)\n\n- You can use tags to control access to your AWS resources that support tagging, including IAM resources. \n- Imagine that you have Amazon EC2 instances that are critical to your organization. \n- Instead of directly granting your users permission to terminate the instances, you can create a role with those privileges.\n\n- Example scenario using separate development and production accounts\n  - In the production account, an administrator uses IAM to create the UpdateApp role in that account. \n    - In the role, the administrator defines a trust policy that specifies the development account as a Principal, meaning that authorized users from the development account can use the UpdateApp role. \n    - The administrator also defines a permissions policy for the role that specifies the read and write permissions to the Amazon S3 bucket named productionapp.\n  - In the development account, an administrator grants members of the Developers group permission to switch to the role. \n    - This is done by granting the Developers group permission to call the AWS Security Token Service (AWS STS) AssumeRole API for the UpdateApp role.\n  - The user requests switches to the role\n  - AWS STS returns temporary credentials\n  - The temporary credentials allow access to the AWS resource\n\n\n## Using an IAM role to grant permissions to applications running on Amazon EC2 instances\n\n### Using instance profiles\n\n[Using instance profiles](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html)\n\n- Use an instance profile to pass an IAM role to an EC2 instance.\n- you can and should use an IAM role to manage temporary credentials for applications that run on an EC2 instance\n\n## Identity federation in AWS\n\n[Identity federation in AWS](https://aws.amazon.com/identity/federation)\n\n- Identity federation is a system of trust between two parties for the purpose of authenticating users and conveying information needed to authorize their access to resources. \n- In this system, an identity provider (IdP) is responsible for user authentication, and a service provider (SP), such as a service or an application, controls access to resources.\n- By administrative agreement and configuration, the SP trusts the IdP to authenticate users and relies on the information provided by the IdP about them. \n- After authenticating a user, the IdP sends the SP a message, called an assertion, containing the user's sign-in name and other attributes that the SP needs to establish a session with the user and to determine the scope of resource access that the SP should grant. \n \n\n## Identity providers and federation\n\n- If you already manage user identities outside of AWS, you can use IAM identity providers instead of creating IAM users in your AWS account. \n- With an identity provider (IdP), you can manage your user identities outside of AWS and give these external user identities permissions to use AWS resources in your account\n\n\n## Providing access to externally authenticated users (identity federation)\n\n[Providing access to externally authenticated users (identity federation)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_federated-users.html)\n\n- Your users might already have identities outside of AWS, such as in your corporate directory. \n- If those users need to work with AWS resources (or work with applications that access those resources), then those users also need AWS security credentials. \n- You can use an IAM role to specify permissions for users whose identity is federated from your organization or a third-party identity provider (IdP).\n\n### Federating users of a mobile or web-based app with Amazon Cognito\n\n- If you create a mobile or web-based app that accesses AWS resources, the app needs security credentials in order to make programmatic requests to AWS. \n- For most mobile application scenarios, we recommend that you use Amazon Cognito.\n- for more advanced scenarios, you can work directly with a third-party service like Login with Amazon, Facebook, Google, or any IdP that is compatible with OpenID Connect (OIDC).\n\n\n### Federating users with SAML 2.0\n\n- If your organization already uses an identity provider software package that supports SAML 2.0 (Security Assertion Markup Language 2.0), you can create trust between your organization as an identity provider (IdP) and AWS as the service provider.\n- You can then use SAML to provide your users with federated single-sign on (SSO) to the AWS Management Console or federated access to call AWS API operations.\n\n### Federating users by creating a custom identity broker application\n\n- If your identity store is not compatible with SAML 2.0, then you can build a custom identity broker application to perform a similar function. \n- The broker application authenticates users, requests temporary credentials for users from AWS, and then provides them to the user to access AWS resources.\n\n\n\n## Premium Support\n\n[What's the difference between an AWS Organizations service control policy and an IAM policy?](https://console.aws.amazon.com/console/home?nc2=h_ct&src=header-signin&hashArgs=%23)\n\n## Blog\n\n[How to Establish Federated Access to Your AWS Resources by Using Active Directory User Attributes](https://aws.amazon.com/blogs/security/how-to-establish-federated-access-to-your-aws-resources-by-using-active-directory-user-attributes)\n\n\n\n\n\n\n"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/inspector.md",
    "content": "# AWS Inspector\n\n### Amazon Inspector rules packages and rules\n\n#### Common vulnerabilities and exposures\n\n[Common vulnerabilities and exposures](https://docs.aws.amazon.com/inspector/latest/userguide/inspector_cves.html)\n\n- The rules in this package help verify whether the EC2 instances in your assessment targets are exposed to common vulnerabilities and exposures (CVEs). Attacks can exploit unpatched vulnerabilities to compromise the confidentiality, integrity, or availability of your service or data. The CVE system provides a reference method for publicly known information security vulnerabilities and exposures.\n\n\n[Security best practices for Amazon Inspector](https://docs.aws.amazon.com/inspector/latest/userguide/inspector_security-best-practices.html)\n\n- Use Amazon Inspector rules to help determine whether your systems are configured securely.\n\n"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/kinesis.md",
    "content": "# Kinesis\n\n[CheatSheet - Amazon Kinesis](https://tutorialsdojo.com/amazon-kinesis)\n\n## Getting started with Amazon Kinesis Data Streams\n\n[Getting started with Amazon Kinesis Data Streams\n](https://aws.amazon.com/kinesis/data-streams/getting-started)\n\n- Amazon Kinesis Data Streams is a massively scalable, highly durable data ingestion and processing service optimized for streaming data. \n- You can configure hundreds of thousands of data producers to continuously put data into a Kinesis data stream. \n- Data will be available within milliseconds to your Amazon Kinesis applications, and those applications will receive data records in the order they were generated.\n\n## What Is Amazon Kinesis Data Streams?\n\n[What Is Amazon Kinesis Data Streams?](https://docs.aws.amazon.com/streams/latest/dev/introduction.html)\n\n- You can use Amazon Kinesis Data Streams to collect and process large streams of data records in real time.\n- You can create data-processing applications, known as Kinesis Data Streams applications. A typical Kinesis Data Streams application reads data from a data stream as data records.\n- You can send the processed records to dashboards, use them to generate alerts, dynamically change pricing and advertising strategies, or send data to a variety of other AWS services. \n\n\n### What Can I Do with Kinesis Data Streams?\n\n[What Can I Do with Kinesis Data Streams?](https://docs.aws.amazon.com/streams/latest/dev/introduction.html)\n\n- Accelerated log and data feed intake and processing\n  - You can have producers push data directly into a stream. \n  - For example, push system and application logs and they are available for processing in seconds. \n  - This prevents the log data from being lost if the front end or application server fails\n\n\n  ## Examples\n\n  - [Capturing Web Page Scroll Progress with Amazon Kinesis](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/kinesis-examples-capturing-page-scrolling.html)"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/lambda.md",
    "content": "# Lambda\n\n[Cheat Sheet - AWS Lambda](https://tutorialsdojo.com/aws-lambda)\n\n[What is AWS Lambda?](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)\n\n- Lambda is a compute service that lets you run code without provisioning or managing servers. \n- Lambda runs your code on a high-availability compute infrastructure and performs all of the administration of the compute resources, including server and operating system maintenance, capacity provisioning and automatic scaling, code monitoring and logging. \n- With Lambda, you can run code for virtually any type of application or backend service. \n- All you need to do is supply your code in one of the languages that Lambda supports.\n\n\n## Using AWS Lambda with CloudFront Lambda@Edge\n\n[Using AWS Lambda with CloudFront Lambda@Edge](https://docs.aws.amazon.com/lambda/latest/dg/lambda-edge.html)\n\n- Lambda@Edge lets you run Node.js and Python Lambda functions to customize content that CloudFront delivers, executing the functions in AWS locations closer to the viewer. \n- The functions run in response to CloudFront events, without provisioning or managing servers. You can use Lambda functions to change CloudFront requests and responses at the following points:\n  - After CloudFront receives a request from a viewer (viewer request)\n  - Before CloudFront forwards the request to the origin (origin request)\n  - After CloudFront receives the response from the origin (origin response)\n  - Before CloudFront forwards the response to the viewer (viewer respo\n\n\n## AWS Lambda Pricing\n\n[AWS Lambda Pricing](https://aws.amazon.com/lambda/pricing)\n\n- Lambda counts a request each time it starts executing in response to an event notification trigger, such as from Amazon Simple Notification Service (SNS) or Amazon EventBridge, or an invoke call, such as from Amazon API Gateway, or via the AWS SDK, including test invokes from the AWS Console.\n- Duration is calculated from the time your code begins executing until it returns or otherwise terminates, rounded up to the nearest 1 ms*. The price depends on the amount of memory you allocate to your function.\n\n## Lambda function scaling\n\n[Lambda function scaling](https://docs.aws.amazon.com/lambda/latest/dg/invocation-scaling.html#concurrent-execution-safety-limit)\n\n- The first time you invoke your function, AWS Lambda creates an instance of the function and runs its handler method to process the event.\n- When the function returns a response, it stays active and waits to process additional events.\n- If you invoke the function again while the first event is being processed, Lambda initializes another instance, and the function processes the two events concurrently\n- As more events come in, Lambda routes them to available instances and creates new instances as needed. \n- When the number of requests decreases, Lambda stops unused instances to free up scaling capacity for other functions.\n- The default regional concurrency limit starts at 1,000\n\n## Managing function\n\n### Managing Lambda reserved concurrency\n\n[Managing Lambda reserved concurrency](https://docs.aws.amazon.com/lambda/latest/dg/configuration-concurrency.html)\n\n- Concurrency is the number of requests that your function is serving at any given time. \n- When your function is invoked, Lambda allocates an instance of it to process the event. \n- When the function code finishes running, it can handle another request. \n- If the function is invoked again while a request is still being processed, another instance is allocated, which increases the function's concurrency. \n- The total concurrency for all of the functions in your account is subject to a per-region quota.\n\nThere are two types of concurrency controls available:\n- Reserved concurrency – Reserved concurrency guarantees the maximum number of concurrent instances for the function. When a function has reserved concurrency, no other function can use that concurrency. No charge for this\n- Provisioned concurrency – Provisioned concurrency initializes a requested number of execution environments so that they are prepared to respond immediately to your function's invocations. Note that configuring provisioned concurrency incurs charges to your AWS account.\n\n## Notes\n\n- AWS Lambda is suited for creating serverless/stateless APIs and costs cheaper than AWS Fargate.\n\n## Blogs\n\n[How do I troubleshoot Lambda function throttling with \"Rate exceeded\" and 429 \"TooManyRequestsException\" errors?](https://aws.amazon.com/premiumsupport/knowledge-center/lambda-troubleshoot-throttling)\n\n- Lambda functions are sometimes throttled to protect your resources and downstream applications. Even though Lambda automatically scales to accommodate incoming traffic, your function can still be throttled for various reasons\n\n\n[Understanding and Managing AWS Lambda Function Concurrency](https://aws.amazon.com/blogs/compute/managing-aws-lambda-function-concurrency)\n"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/lex.md",
    "content": "# Lex\n\n[Amazon Lex](https://aws.amazon.com/lex)\n\n[Cheat Sheet - Amazon Lex](https://tutorialsdojo.com/amazon-lex)\n\n- Build chatbots with conversational AI\n"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/macie.md",
    "content": "\n> Revision Count: 1\n\n# Macie\n\n[Macie](https://aws.amazon.com/macie/)\n\n[Cheat Sheet - Macie](https://tutorialsdojo.com/amazon-macie)\n\n- Amazon Macie is a fully managed data security and data privacy service that uses machine learning and pattern matching to discover and protect your sensitive data in AWS.\n\n- As organizations manage growing volumes of data, identifying and protecting their sensitive data at scale can become increasingly complex, expensive, and time-consuming. \n- Amazon Macie automates the discovery of sensitive data at scale and lowers the cost of protecting your data. \n- Macie automatically provides an inventory of Amazon S3 buckets including a list of unencrypted buckets, publicly accessible buckets, and buckets shared with AWS accounts outside those you have defined in AWS Organizations. \n- Then, Macie applies machine learning and pattern matching techniques to the buckets you select to identify and alert you to sensitive data, such as personally identifiable information (PII). "
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/mechanicalTurk.md",
    "content": "# Mechanical Turk\n\n[What is Mechanical Turk](https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMechanicalTurkRequester/WhatIs.html)\n\n[Cheat Sheet - Mechanical Turk](https://tutorialsdojo.com/amazon-mechanical-turk)\n\n- Is a crowdsourcing marketplace that connects you with an on-demand, scalable, human workforce to complete tasks.\n- Using Mechanical Turk, you can programmatically direct tasks to the Mechanical Turk marketplace, where they can be completed by workers around the world.\n- Mechanical Turk allows you to access the intelligence, skills, and insights of a global workforce for tasks as varied as data categorization, moderation, data collection and analysis, behavioral studies, and image annotation.\n- Mechanical Turk is built around the concept of microtasks, which are small, atomic tasks that workers can complete in their web browser.\n- When you submit work to Mechanical Turk, you typically start by breaking it into smaller tasks on which workers can work independently. \n- In this way, a project involving categorizing 10,000 images becomes 10,000 individual microtasks that workers can complete."
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/migrationHub.md",
    "content": "# AWS Migration Hub\n\n[AWS Migration Services](https://tutorialsdojo.com/aws-cheat-sheets-migration-services)\n\n[What Is AWS Migration Hub?](https://docs.aws.amazon.com/migrationhub/latest/ug/whatishub.html)\n\n- AWS Migration Hub (Migration Hub) provides a single place to discover your existing servers, plan migrations, and track the status of each application migration. \n- The Migration Hub provides visibility into your application portfolio and streamlines planning and tracking. \n- You can visualize the connections and the status of the servers and databases that make up each of the applications you are migrating, regardless of which migration tool you are using.\n- Migration Hub supports migration status updates from the following tools:\n  - AWS Application Migration Service (AWS MGN)–AWS Application Migration Service is the primary migration service recommended for lift-and-shift migrations to AWS\n  - AWS Server Migration Service (AWS SMS)\n  - AWS Database Migration Service (AWS DMS)\n  - The ATADATA ATAmotion partner tool\n[Getting started with AWS Migration Hub](https://docs.aws.amazon.com/migrationhub/latest/ug/getting-started.html)\n\n"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/opswork.md",
    "content": ""
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/opsworks.md",
    "content": "# OpsWorks\n\n[Cheat Sheet - AWS OpsWorks](https://tutorialsdojo.com/aws-opsworks/)\n\n- AWS OpsWorks is a configuration management service that provides managed instances of Chef and Puppet. \n- Chef and Puppet are automation platforms that allow you to use code to automate the configurations of your servers. \n- OpsWorks lets you use Chef and Puppet to automate how servers are configured, deployed, and managed across your Amazon EC2 instances or on-premises compute environments.\n\n\n\n[How to set up AWS OpsWorks Stacks auto healing notifications in Amazon CloudWatch Events](https://aws.amazon.com/blogs/mt/how-to-set-up-aws-opsworks-stacks-auto-healing-notifications-in-amazon-cloudwatch-events/)\n\n- Save the following event pattern as a file named OpsWorksAutoHealingPattern.json\n\n```json\n{\n  \"source\": [\n    \"aws.opsworks\"\n  ],\n  \"detail\": {\n    \"initiated_by\": [\n      \"auto-healing\"\n    ]\n  }\n}\n```"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/organizations.md",
    "content": "# Organizations\n\n[Cheat Sheet - AWS Organization](https://tutorialsdojo.com/aws-organizations)\n\n[Cheat Sheet - Multi-Account Multi-Region Data Aggregation On AWS Config\n](https://tutorialsdojo.com/multi-account-multi-region-data-aggregation-on-aws-config)\n\n[service-control-policies-scp-vs-iam-policies](https://tutorialsdojo.com/service-control-policies-scp-vs-iam-policies/)\n\n[What is AWS Organizations?](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html)\n\n- AWS Organizations is an account management service that enables you to consolidate multiple AWS accounts into an organization that you create and centrally manage. \n- AWS Organizations includes account management and consolidated billing capabilities that enable you to better meet the budgetary, security, and compliance needs of your business. \n- As an administrator of an organization, you can create accounts in your organization and invite existing accounts to join the organization.\n\n\n## Using AWS Services\n\n\n### Using AWS Organizations with other AWS services\n\n[Using AWS Organizations with other AWS services](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_integrate_services.html)\n\n- You can use trusted access to enable a supported AWS service that you specify, called the trusted service, to perform tasks in your organization and its accounts on your behalf. \n- This involves granting permissions to the trusted service but does not otherwise affect the permissions for IAM users or roles. \n- When you enable access, the trusted service can create an IAM role called a service-linked role in every account in your organization whenever that role is needed. \n- That role has a permissions policy that allows the trusted service to do the tasks that are described in that service's documentation\n- The trusted service only creates service-linked roles when it needs to perform management actions on accounts, and not necessarily in all accounts of the organization.\n\n#### AWS Resource Access Manager and AWS Organizations\n\n- AWS Resource Access Manager (AWS RAM) enables you to share specified AWS resources that you own with other AWS accounts. \n- It's a centralized service that provides a consistent experience for sharing different types of AWS resources across multiple accounts.\n\nService-linked roles created when you enable integration\n\n- The following service-linked role is automatically created in your organization's management account when you enable trusted access. \n- This role allows AWS RAM to perform supported operations within your organization's accounts in your organization.\n- You can delete or modify this role only if you disable trusted access between AWS RAM and Organizations, or if you remove the member account from the organization.\n\n```bash\n  AWSServiceRoleForResourceAccessManager\n```  \n\n\n## Managing Policies\n\n### Service control policies\n\n[Service control policies (SCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)\n\n- Service control policies (SCPs) are a type of organization policy that you can use to manage permissions in your organization.\n- SCPs offer central control over the maximum available permissions for all accounts in your organization.\n- SCPs help you to ensure your accounts stay within your organization’s access control guidelines. \n- SCPs are available only in an organization that has all features enabled\n- An SCP defines a guardrail, or sets limits, on the actions that the account's administrator can delegate to the IAM users and roles in the affected accounts. \n- The administrator must still attach identity-based or resource-based policies to IAM users or roles, or to the resources in your accounts to actually grant permissions\n\n> AWS strongly recommends that you don't attach SCPs to the root of your organization without thoroughly testing the impact that the policy has on accounts.\n\n> SCPs do not affect any service-linked role. Service-linked roles enable other AWS services to integrate with AWS Organizations and can't be restricted by SCPs.\n\n\n## Tutorial: Monitor important changes to your organization with CloudWatch Events\n\n[Tutorial: Monitor important changes to your organization with CloudWatch Events](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_tutorials_cwe.html)\n\n- You start by configuring a rule that is triggered when users invoke specific AWS Organizations operations. \n- Next, you configure CloudWatch Events to run an AWS Lambda function when the rule is triggered, \n- and you configure Amazon SNS to send an email with details about the event.\n\n\n## Using other AWS Services\n\n### AWS Config and AWS Organizations\n\n[AWS Config and AWS Organizations\n](https://docs.aws.amazon.com/organizations/latest/userguide/services-that-can-integrate-config.html)\n\n- Multi-account, multi-region data aggregation in AWS Config enables you to aggregate AWS Config data from multiple accounts and AWS Regions into a single account.\n- An aggregator is a resource type in AWS Config that collects AWS Config data from multiple source accounts and Regions. \n- Create an aggregator in the Region where you want to see the aggregated AWS Config data. \n- While creating an aggregator, you can choose to add either individual account IDs or your organization\n\n## Managing organizational units (OUs)\n\n[Managing organizational units (OUs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_ous.html)\n\n- You can use organizational units (OUs) to group accounts together to administer as a single unit.\n- you can attach a policy-based control to an OU, and all accounts within the OU automatically inherit the policy. \n- You can create multiple OUs within a single organization, and you can create OUs within other OUs. \n- Each OU can contain multiple accounts, and you can move accounts from one OU to another. \n- However, OU names must be unique within a parent OU or root.\n\n\n## Blogs\n\n[What's the difference between an AWS Organizations service control policy and an IAM policy?](https://aws.amazon.com/premiumsupport/knowledge-center/iam-policy-service-control-policy)\n"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/quickSight.md",
    "content": "\n\n\n### Quicksight\n\n[Quicksight](https://aws.amazon.com/quicksight/)\n\nQuickSight lets you easily create and publish interactive BI dashboards as well as receive answers in seconds through natural langauge queries. QuickSight dashboards can be accessed from any device, and seamlessly embedded into your applications, portals, and websites.\n"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/rds.md",
    "content": "# RDS\n\n[Cheat Sheet - RDS](https://tutorialsdojo.com/amazon-relational-database-service-amazon-rds)\n\n[RDS Read Replicas](https://aws.amazon.com/rds/features/read-replicas)\n\n- provide enhanced performance and durability for RDS database (DB) instances\n- They make it easy to elastically scale out beyond the capacity constraints of a single DB instance for read-heavy database workloads.\n- You can create one or more replicas of a given source DB Instance and serve high-volume application read traffic from multiple copies of your data\n- Read replicas can also be promoted when needed to become standalone DB instances\n- Read replicas are available in Amazon RDS for MySQL, MariaDB, PostgreSQL, Oracle, and SQL Server as well as Amazon Aurora.\n- You can reduce the load on your source DB instance by routing read queries from your applications to the read replica\n\n[Working with read replicas](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ReadRepl.html)\n\n\n### Multi-AZ deployments for high availability\n\n[Multi-AZ deployments for high availability](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.MultiAZ.html)\n\n- Multi-AZ deployments can have one standby or two standby DB instances. \n- When the deployment has one standby DB instance, it's called a Multi-AZ DB instance deployment. \n  - A Multi-AZ DB instance deployment has one standby DB instance that provides failover support, but doesn't serve read traffic. \n- When the deployment has two standby DB instances, it's called a Multi-AZ DB cluster deployment. \n  - A Multi-AZ DB cluster deployment has standby DB instances that provide failover support and can also serve read traffic.\n\n\n## Backing up and restoring an Amazon RDS DB instance\n\n[Backing up and restoring an Amazon RDS DB instance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_CommonTasks.BackupRestore.html)\n\n### Restoring a DB instance to a specified time\n\n- You can restore a DB instance to a specific point in time, creating a new DB instance.\n- RDS uploads transaction logs for DB instances to Amazon S3 every 5 minutes.\n- To see the latest restorable time for a DB instance, use the AWS CLI describe-db-instances command and look at the value returned in the LatestRestorableTime field for the DB instance.\n- To see the latest restorable time for each DB instance in the Amazon RDS console, choose Automated backups.\n\n### Amazon RDS DB instance storage\n\n[Amazon RDS DB instance storage](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html)\n\n- DB instances for Amazon RDS for MySQL, MariaDB, PostgreSQL, Oracle, and Microsoft SQL Server use Amazon Elastic Block Store (Amazon EBS) volumes for database and log storage.\n- Amazon RDS provides three storage types: General Purpose SSD (also known as gp2), Provisioned IOPS SSD (also known as io1), and magnetic (also known as standard)\n  - General Purpose SSD – General Purpose SSD volumes offer cost-effective storage that is ideal for a broad range of workloads. \n  - Provisioned IOPS – Provisioned IOPS storage is designed to meet the needs of I/O-intensive workloads, particularly database workloads, that require low I/O latency and consistent I/O throughput.\n  - Magnetic – Amazon RDS also supports magnetic storage for backward compatibility. We recommend that you use General Purpose SSD or Provisioned IOPS for any new storage needs.\n\n### Setting the JVM TTL for DNS name lookups\n\n- The failover mechanism automatically changes the Domain Name System (DNS) record of the DB instance to point to the standby DB instance. As a result, you need to re-establish any existing connections to your DB instance. In a Java virtual machine (JVM) environment, due to how the Java DNS caching mechanism works, you might need to reconfigure JVM settings.\n- Because AWS resources use DNS name entries that occasionally change, we recommend that you configure your JVM with a TTL value of no more than 60 seconds.\n\n## NOTES\n\n- The Amazon RDS MySQL does not have a single reader endpoint for read replicas. You must use Amazon Aurora for MySQL to support this. Creating read replicas is recommended to increase the read performance of an RDS cluster.\n- Amazon RDS does not support certain features in Oracle such as Multitenant Database, Real Application Clusters (RAC), Unified Auditing, Database Vault, Recovery Manager (RMAN)\n\n## Blogs\n\n- [Understanding Burst vs. Baseline Performance with Amazon RDS and GP2](https://aws.amazon.com/blogs/database/understanding-burst-vs-baseline-performance-with-amazon-rds-and-gp2/)\n\n- [How to use CloudWatch metrics to decide between General Purpose or Provisioned IOPS for your RDS database](https://aws.amazon.com/blogs/database/how-to-use-cloudwatch-metrics-to-decide-between-general-purpose-or-provisioned-iops-for-your-rds-database)\n\n- [Amazon RDS Multi-AZ Deployments](https://aws.amazon.com/rds/features/multi-az)\n\n- [Amazon RDS – Multi-AZ Deployments For Enhanced Availability & Reliability](https://aws.amazon.com/blogs/aws/amazon-rds-multi-az-deployment)\n\n- [Implementing a disaster recovery strategy with Amazon RDS](https://aws.amazon.com/blogs/database/implementing-a-disaster-recovery-strategy-with-amazon-rds)"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/redShift.md",
    "content": "# RedShift\n\n"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/rekognition.md",
    "content": "# Rekognition\n\n[CheatSheet - AWS Rekognition](https://tutorialsdojo.com/amazon-rekognition)\n\n[What is Amazon Rekognition?](https://docs.aws.amazon.com/rekognition/latest/dg/what-is.html)\n\n\n## What is Amazon Rekognition?\n\n- Amazon Rekognition makes it easy to add image and video analysis to your applications. You just provide an image or video to the Amazon Rekognition API, and the service can identify objects, people, text, scenes, and activities. \n- It can detect any inappropriate content as well\n\n## Searching faces in a collection\n\n[Searching faces in a collection](https://docs.aws.amazon.com/rekognition/latest/dg/collections.html)\n\n- Amazon Rekognition can store information about detected faces in server-side containers known as collections\n-  You can use the facial information that's stored in a collection to search for known faces in images, stored videos, and streaming videos. \n\n## Text detection\n\n- Extract skewed and distorted text from images and videos of street signs, social media posts, and product packaging.\n"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/resourceAccessManager.md",
    "content": "# Resource Access Manager\n\n[What is AWS Resource Access Manager?](https://docs.aws.amazon.com/ram/latest/userguide/what-is.html)\n\n- AWS Resource Access Manager (AWS RAM) helps you securely share the AWS resources that you create in one AWS account with other AWS accounts\n- If you have multiple AWS accounts, you can create a resource once and use AWS RAM to make that resource accessible to those other accounts.\n- If your account is managed by AWS Organizations, then you can share resources with all of the other accounts in the organization, or only those contained by one or more specified organizational units (OUs).\n- You can also share with specific AWS accounts by account ID, regardless of whether the account is part of an organization.\n\n## Sharing your AWS resources\n\n[Sharing your AWS resources](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-sharing.html)\n\n- Enable resource sharing within AWS Organizations (optional)\n```bash\naws ram enable-sharing-with-aws-organization\n```"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/route53.md",
    "content": "# Route53\n\n[Cheat Sheet - AWS Route53](https://tutorialsdojo.com/amazon-route-53)\n\n[Cheat Sheet - AWS Database Migration Service](https://tutorialsdojo.com/aws-database-migration-service)\n\n\n## Working with hosted zones\n\n[Working with hosted zones](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-working-with.html)\n\n- A hosted zone is a container for records, and records contain information about how you want to route traffic for a specific domain, such as example.com, and its subdomains (acme.example.com, zenith.example.com). A hosted zone and the corresponding domain have the same name. \n\n  - Public hosted zones contain records that specify how you want to route traffic on the internet.\n  - Private hosted zones contain records that specify how you want to route traffic in an Amazon VPC\n\n[How do I associate a Route 53 private hosted zone with a VPC in a different AWS account or Region?\n](https://aws.amazon.com/premiumsupport/knowledge-center/route53-private-hosted-zone)\n\n### Working with a private hosted zone\n\n#### Associating more VPCs with a private hosted zone\n\n[Associating more VPCs with a private hosted zone](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zone-private-associate-vpcs.html)\n\n- You can use the Amazon Route 53 console to associate more VPCs with a private hosted zone if you created the hosted zone and the VPCs by using the same AWS account.\n\n#### Associating an Amazon VPC and a private hosted zone that you created with different AWS accounts\n\n[Associating an Amazon VPC and a private hosted zone that you created with different AWS accounts](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zone-private-associate-vpcs-different-accounts.html)\n\n\n\n## Routing internet traffic to your AWS resources\n\n### Routing traffic to an ELB load balancer\n\n- To route domain traffic to an ELB load balancer, use Amazon Route 53 to create an alias record that points to your load balancer.\n- An alias record is a Route 53 extension to DNS. It's similar to a CNAME record, but you can create an alias record both for the root domain, such as example.com, and for subdomains, such as www.example.com.\n\n\n### Routing traffic to a website that is hosted in an Amazon S3 bucket\n\n[Routing traffic to a website that is hosted in an Amazon S3 bucket](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/RoutingToS3Bucket.html)\n\n- To route domain traffic to an S3 bucket, use Amazon Route 53 to create an alias record that points to your bucket.\n\n\n### Configuring a static website using a custom domain registered with Route 53\n\n[Configuring a static website using a custom domain registered with Route 53](https://docs.aws.amazon.com/AmazonS3/latest/userguide/website-hosting-custom-domain-walkthrough.html)\n\n\n## Creating Amazon Route 53 health checks and configuring DNS failover\n\n[Creating Amazon Route 53 health checks and configuring DNS failover](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover.html)\n\n- Amazon Route 53 health checks monitor the health and performance of your web applications, web servers, and other resources. Each health check that you create can monitor one of the following:\n  - The health of a specified resource, such as a web server.\n  - The status of other health checks.\n  - The status of an Amazon CloudWatch alarm.\n  - With Amazon Route 53 Application Recovery Controller, you can set up routing control health checks with DNS failover records to manage traffic failover for your application. \n\n\n## Choosing a routing policy\n\n[Choosing a routing policy](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy.html)\n\n- Simple routing policy – Use for a single resource that performs a given function for your domain, for example, a web server that serves content for the example.com website.\n- Failover routing policy – Use when you want to configure active-passive failover.\n- Geolocation routing policy – Use when you want to route traffic based on the location of your users.\n- Geoproximity routing policy – Use when you want to route traffic based on the location of your resources and, optionally, shift traffic from resources in one location to resources in another.\n- Latency routing policy – Use when you have resources in multiple AWS Regions and you want to route traffic to the Region that provides the best latency with less round-trip time.\n- Multivalue answer routing policy – Use when you want Route 53 to respond to DNS queries with up to eight healthy records selected at random.\n- Weighted routing policy – Use to route traffic to multiple resources in proportions that you specify\n\n\n\n\n\n### Configuring DNSSEC for a domain\n\n[Configuring DNSSEC for a domain](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/domain-configure-dnssec.html)\n\n- Attackers sometimes hijack traffic to internet endpoints such as web servers by intercepting DNS queries and returning their own IP addresses to DNS resolvers in place of the actual IP addresses for those endpoints\n- Users are then routed to the IP addresses provided by the attackers in the spoofed response, for example, to fake websites.\n- You can protect your domain from this type of attack, known as DNS spoofing or a man-in-the-middle attack, by configuring Domain Name System Security Extensions (DNSSEC), a protocol for securing DNS traffic.\n\n\n## Configuring DNS Failover\n\n### Active-active and active-passive failover\n\n[Active-active and active-passive failover](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-types.html)\n\n- You can use Route 53 health checking to configure active-active and active-passive failover configurations. \n  - You configure active-active failover using any routing policy (or combination of routing policies) other than failover, \n  - and you configure active-passive failover using the failover routing policy.\n\n## Resolving DNS queries between VPCs and your network\n\n[Resolving DNS queries between VPCs and your network](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver.html)\n\n- When you create a VPC using Amazon VPC, Route 53 Resolver automatically uses a Resolver on the VPC to answer DNS queries for local Amazon VPC domain names for EC2 instances (ec2-192-0-2-44.compute-1.amazonaws.com) and records in private hosted zones (acme.example.com). \n- For all other domain names, Resolver performs recursive lookups against public name servers.\n\n- You also can integrate DNS resolution between Resolver and DNS resolvers on your network by configuring forwarding rules. Your network can include any network that is reachable from your VPC, such as the following:\n  - The VPC itself\n  - Another peered VPC\n  - An on-premises network that is connected to AWS with AWS Direct Connect, a VPN, or a network address translation (NAT) gateway\n- Before you start to forward queries, you create Resolver inbound and/or outbound endpoints in the connected VPC. These endpoints provide a path for inbound or outbound queries:\n  - Inbound endpoint: DNS resolvers on your network can forward DNS queries to Route 53 Resolver via this endpoint\n    - This allows your DNS resolvers to easily resolve domain names for AWS resources such as EC2 instances or records in a Route 53 private hosted zone.\n  - Outbound endpoint: Resolver conditionally forwards queries to resolvers on your network via this endpoint\n    - To forward selected queries, you create Resolver rules that specify the domain names for the DNS queries that you want to forward (such as example.com), and the IP addresses of the DNS resolvers on your network that you want to forward the queries to\n\n[How do I configure a Route 53 Resolver inbound endpoint to resolve DNS records in my private hosted zone from my remote network?](https://aws.amazon.com/premiumsupport/knowledge-center/route53-resolve-with-inbound-endpoint)\n\n\n### Values specific for simple alias records\n\n[Values specific for simple alias records](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-values-alias.html)\n\n- When you create alias records, you specify the following values\n  - Routing policy\n  - Record name\n  - Value/route traffic to\n  - Record type\n  - Evaluate target health\n\n\n### Choosing between alias and non-alias records\n\n[Choosing between alias and non-alias records](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-choosing-alias-non-alias.html)\n\n- Amazon Route 53 alias records provide a Route 53–specific extension to DNS functionality. \n- Alias records let you route traffic to selected AWS resources, such as CloudFront distributions and Amazon S3 buckets. \n- They also let you route traffic from one record in a hosted zone to another record.\n- Unlike a CNAME record, you can create an alias record at the top node of a DNS namespace, also known as the zone apex.\n\n\n## Blogs\n\n[Simplify DNS management in a multi-account environment with Route 53 Resolver](https://aws.amazon.com/blogs/security/simplify-dns-management-in-a-multiaccount-environment-with-route-53-resolver)"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/s3.md",
    "content": "# S3\n\n[Cheat Sheet - AWS S3](https://tutorialsdojo.com/amazon-s3)\n\n[Cheat Sheet - Amazon Glacier](https://tutorialsdojo.com/amazon-sqs)\n\n[Cheat Sheet - s3-pre-signed-urls-vs-cloudfront-signed-urls-vs-origin-access-identity-oai](https://tutorialsdojo.com/s3-pre-signed-urls-vs-cloudfront-signed-urls-vs-origin-access-identity-oai)\n\n[Cheat Sheet - s3-transfer-acceleration-vs-direct-connect-vs-vpn-vs-snowball-vs-snowmobile](https://tutorialsdojo.com/s3-transfer-acceleration-vs-direct-connect-vs-vpn-vs-snowball-vs-snowmobile)\n\n[What is Amazon S3?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)\n\n- Amazon Simple Storage Service (Amazon S3) is an object storage service that offers industry-leading scalability, data availability, security, and performance. \n\n[object-lifecycle-mgmt](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html)\n\n- storing logs in Amazon S3, and use lifecycle policies to archive to Amazon\n  Glacier\n\n## Amazon S3 Event Notifications\n\n[Amazon S3 Event Notifications](https://docs.aws.amazon.com/AmazonS3/latest/userguide/NotificationHowTo.html)\n\n- You can use the Amazon S3 Event Notifications feature to receive notifications when certain events happen in your S3 bucket.\n- To enable notifications, you must first add a notification configuration that identifies the events you want Amazon S3 to publish and the destinations where you want Amazon S3 to send the notifications.\n- You store this configuration in the notification subresource that is associated with a bucket.\n\n[Tutorial: Using an Amazon S3 trigger to invoke a Lambda function](https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html#with-s3-example-configure-event-source)\n\n\n### Replicating objects\n\n[Replicating objects](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication.html)\n\n- Replication enables automatic, asynchronous copying of objects across Amazon S3 buckets\n- Buckets that are configured for object replication can be owned by the same AWS account or by different accounts.\n- Objects may be replicated to a single destination bucket or multiple destination buckets. \n- By default, replication only supports copying new Amazon S3 objects after it is enabled. \n- You can use replication to copy existing objects and clone them to a different bucket, but in order to do so, you must contact AWS Support Center\n\n\n\n## Hosting a static website using Amazon S3\n\n[Hosting a static website using Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteHosting.html)\n\n- You can use Amazon S3 to host a static website. On a static website, individual webpages include static content. They might also contain client-side scripts.\n\n\n## Server Side Encryption\n\n### Protecting data using server-side encryption\n\n[Protecting data using server-side encryption](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)\n\n- Server-side encryption is the encryption of data at its destination by the application or service that receives it.\n- Amazon S3 encrypts your data at the object level as it writes it to disks in its data centers and decrypts it for you when you access it. \n- As long as you authenticate your request and you have access permissions, there is no difference in the way you access encrypted or unencrypted objects. \n\nYou have three mutually exclusive options, depending on how you choose to manage the encryption keys.\n- Server-Side Encryption with Amazon S3-Managed Keys (SSE-S3)\n- Server-Side Encryption with KMS keys Stored in AWS Key Management Service (SSE-KMS)\n- Server-Side Encryption with Customer-Provided Keys (SSE-C)\n\n\n\n### Protecting data using server-side encryption with customer-provided encryption keys (SSE-C)\n\n[Protecting data using server-side encryption with customer-provided encryption keys (SSE-C)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ServerSideEncryptionCustomerKeys.html)\n\n- Server-side encryption is about protecting data at rest. \n- Server-side encryption encrypts only the object data, not object metadata.\n- Using server-side encryption with customer-provided encryption keys (SSE-C) allows you to set your own encryption keys\n- The only thing you do is manage the encryption keys you provide.\n\n### Protecting data using server-side encryption with Amazon S3-managed encryption keys (SSE-S3)\n\n[Protecting data using server-side encryption with Amazon S3-managed encryption keys (SSE-S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingServerSideEncryption.html)\n\n- Server-side encryption protects data at rest. \n- Amazon S3 encrypts each object with a unique key. \n- As an additional safeguard, it encrypts the key itself with a key that it rotates regularly. \n\n## Working with Buckets\n\n### Using Requester Pays buckets for storage transfers and usage\n\n[Using Requester Pays buckets for storage transfers and usage](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RequesterPaysBuckets.html)\n\n- In general, bucket owners pay for all Amazon S3 storage and data transfer costs that are associated with their bucket. \n- However, you can configure a bucket to be a Requester Pays bucket. \n- With Requester Pays buckets, the requester instead of the bucket owner pays the cost of the request and the data download from the bucket.\n\n\n### Using versioning in S3 buckets\n\n[Using versioning in S3 buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html)\n\n- Versioning in Amazon S3 is a means of keeping multiple variants of an object in the same bucket. \n- You can use the S3 Versioning feature to preserve, retrieve, and restore every version of every object stored in your buckets. \n\n### Configuring fast, secure file transfers using Amazon S3 Transfer Acceleration\n\n[Configuring fast, secure file transfers using Amazon S3 Transfer Acceleration](https://docs.aws.amazon.com/AmazonS3/latest/userguide/transfer-acceleration.html)\n\n- Amazon S3 Transfer Acceleration is a bucket-level feature that enables fast, easy, and secure transfers of files over long distances between your client and an S3 bucket. \n- Transfer Acceleration takes advantage of the globally distributed edge locations in Amazon CloudFront. \n- As the data arrives at an edge location, the data is routed to Amazon S3 over an optimized network path.\n\n**Why use Transfer Acceleration?**\n- Your customers upload to a centralized bucket from all over the world.\n- You transfer gigabytes to terabytes of data on a regular basis across continents.\n- You can't use all of your available bandwidth over the internet when uploading to Amazon S3.\n\n\n### Uploading and copying objects using multipart upload\n\n[Uploading and copying objects using multipart upload](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html)\n\n[How can I optimize performance when I upload large files to Amazon S3?](https://aws.amazon.com/premiumsupport/knowledge-center/s3-upload-large-files)\n\n- Multipart upload allows you to upload a single object as a set of parts. \n- Each part is a contiguous portion of the object's data. \n- You can upload these object parts independently and in any order\n- If transmission of any part fails, you can retransmit that part without affecting other parts. \n- After all parts of your object are uploaded, Amazon S3 assembles these parts and creates the object. \n- In general, when your object size reaches 100 MB, you should consider using multipart uploads instead of uploading the object in a single operation.\n\n## Uploading objects using presigned URLs\n\n[Uploading objects using presigned URLs](https://docs.aws.amazon.com/AmazonS3/latest/userguide/PresignedUrlUploadObject.html)\n\n\n- A presigned URL gives you access to the object identified in the URL, provided that the creator of the presigned URL has permissions to access that object.\n- All objects and buckets by default are private. \n- The presigned URLs are useful if you want your user/customer to be able to upload a specific object to your bucket, but you don't require them to have AWS security credentials or permissions.\n\n## Managing your storage lifecycle\n\n[Managing your storage lifecycle](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html)\n\n\n## Amazon S3 Glacier storage classes\n\n[Amazon S3 Glacier storage classes](https://aws.amazon.com/s3/storage-classes/glacier)\n\n- The Amazon S3 Glacier storage classes are purpose-built for data archiving, providing you with the highest performance, most retrieval flexibility, and the lowest cost archive storage in the cloud\n\n## Notes\n\n[I accidentally denied everyone access to my Amazon S3 bucket. How do I regain access?](https://aws.amazon.com/premiumsupport/knowledge-center/s3-accidentally-denied-access/)\n\n- To get access to your bucket again, sign in to the Amazon S3 console as the AWS account root user, and then delete the bucket policy.\n\n\n#### put-bucket-policy\n\n[put-bucket-policy](https://docs.aws.amazon.com/cli/latest/reference/s3api/put-bucket-policy.html)\n\n- This example allows all users to retrieve any object in MyBucket except those in the MySecretFolder. It also grants put and delete permission to the root user of the AWS account 1234-5678-9012\n\n```bash\naws s3api put-bucket-policy --bucket MyBucket --policy file://policy.json\n```\n\n\n```json\n{\n   \"Statement\": [\n      {\n         \"Effect\": \"Allow\",\n         \"Principal\": \"*\",\n         \"Action\": \"s3:GetObject\",\n         \"Resource\": \"arn:aws:s3:::MyBucket/*\"\n      },\n      {\n         \"Effect\": \"Deny\",\n         \"Principal\": \"*\",\n         \"Action\": \"s3:GetObject\",\n         \"Resource\": \"arn:aws:s3:::MyBucket/MySecretFolder/*\"\n      },\n      {\n         \"Effect\": \"Allow\",\n         \"Principal\": {\n            \"AWS\": \"arn:aws:iam::123456789012:root\"\n         },\n         \"Action\": [\n            \"s3:DeleteObject\",\n            \"s3:PutObject\"\n         ],\n         \"Resource\": \"arn:aws:s3:::MyBucket/*\"\n      }\n   ]\n}\n```\n\n### Managing Storage\n\n#### \n\n[How can I retrieve an Amazon S3 object that was deleted in a versioning-enabled bucket?](https://aws.amazon.com/premiumsupport/knowledge-center/s3-undelete-configuration/)\n\n- When you delete an object from a version-enabled bucket, Amazon S3 creates a delete marker for the object. The delete marker becomes the current version of the object, and the actual object becomes the previous version. With a delete marker, Amazon S3 responds to requests for the object as though the object was deleted. For example, if you send a GET request for the object, then Amazon S3 returns an error.\n\n\n## Blogs\n\n- [Building and Maintaining an Amazon S3 Metadata Index without Servers](https://aws.amazon.com/blogs/big-data/building-and-maintaining-an-amazon-s3-metadata-index-without-servers)\n\n  - Amazon S3 is a simple key-based object store whose scalability and low cost make it ideal for storing large datasets\n  - Its design enables S3 to provide excellent performance for storing and retrieving objects based on a known key.\n  - Finding objects based on other attributes, however, requires doing a linear search using the LIST operation. \n  - Because each listing can return at most 1000 keys, it may require many requests before finding the object. \n  - Because of these additional requests, implementing attribute-based queries in S3 alone can be challenging.\n  - A common solution is to build an external index that maps queryable attributes to the S3 object key\n  - approach for building such an index using Amazon DynamoDB and AWS Lambda"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/sageMaker.md",
    "content": "# SageMaker\n\n[Cheat Sheet - SageMaker](https://tutorialsdojo.com/amazon-sagemaker)\n## What Is Amazon SageMaker?\n\n[What Is Amazon SageMaker?](https://docs.aws.amazon.com/sagemaker/latest/dg/whatis.html)\n\n- Amazon SageMaker is a fully managed machine learning service. \n- With SageMaker, data scientists and developers can quickly and easily build and train machine learning models, and then directly deploy them into a production-ready hosted environment\n- It provides an integrated Jupyter authoring notebook instance for easy access to your data sources for exploration and analysis, so you don't have to manage servers. - It also provides common machine learning algorithms that are optimized to run efficiently against extremely large data in a distributed environment. \n\n\n\n\n## Blogs\n\n- [Enable self-service, secured data science using Amazon SageMaker notebooks and AWS Service Catalog](https://aws.amazon.com/blogs/mt/enable-self-service-secured-data-science-using-amazon-sagemaker-notebooks-and-aws-service-catalog)\n\n"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/schemaConversionTool.md",
    "content": "# Schema Conversion Tool\n\n[What Is the AWS Schema Conversion Tool?](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)\n\n- You can use the AWS Schema Conversion Tool (AWS SCT) to convert your existing database schema from one database engine to another. \n- You can convert relational OLTP schema, or data warehouse schema. \n- Your converted schema is suitable for an Amazon Relational Database Service (Amazon RDS) MySQL, MariaDB, Oracle, SQL Server, PostgreSQL DB, an Amazon Aurora DB cluster, or an Amazon Redshift cluster. \n- The converted schema can also be used with a database on an Amazon EC2 instance or stored as data on an Amazon S3 bucket.\n\n## Migrating data from an on-premises data warehouse to Amazon Redshift\n\n- You can use an AWS SCT agent to extract data from your on-premises data warehouse and migrate it to Amazon Redshift. The agent extracts your data and uploads the data to either Amazon S3 \n- or, for large-scale migrations, an AWS Snowball Edge device. \n- You can then use AWS SCT to copy the data to Amazon Redshift."
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/secretsManager.md",
    "content": "# Secrets Manager\n\n[Cheat Sheet - Secrets Manager](https://tutorialsdojo.com/aws-secrets-manager/)\n\n\n- AWS Secrets Manager helps you protect secrets needed to access your applications, services, and IT resources. \n- The service enables you to easily rotate, manage, and retrieve database credentials, API keys, and other secrets throughout their lifecycle. \n- Users and applications retrieve secrets with a call to Secrets Manager APIs, eliminating the need to hardcode sensitive information in plain text. \n- Secrets Manager offers secret rotation with built-in integration for Amazon RDS, Amazon Redshift, and Amazon DocumentDB. \n- Also, the service is extensible to other types of secrets, including API keys and OAuth tokens\n\n\n## Automate secret creation in AWS CloudFormation\n\n[Automate secret creation in AWS CloudFormation](https://docs.aws.amazon.com/secretsmanager/latest/userguide/integrating_cloudformation.html)\n\n[How to create and retrieve secrets managed in AWS Secrets Manager using AWS CloudFormation templates](https://aws.amazon.com/blogs/security/how-to-create-and-retrieve-secrets-managed-in-aws-secrets-manager-using-aws-cloudformation-template)\n\n- You can use AWS CloudFormation to create and reference secrets from within your AWS CloudFormation stack template. \n- You can create a secret and then reference it from another part of the template. \n- For example, you can retrieve the user name and password from the new secret and then use that to define the user name and password for a new database. \n- You can create and attach resource-based policies to a secret. \n- You can also configure rotation by defining a Lambda function in your template and associating the function with your new secret as its rotation Lambda function.\n\n- Secrets Manager provides the following resource types that you can use to create secrets in an AWS CloudFormation template:\n\n  - AWS::SecretsManager::Secret – Creates a secret and stores it in Secrets Manager. You can specify a password or Secrets Manager can generate one for you.\n  - AWS::SecretsManager::ResourcePolicy – Creates a resource-based policy and attaches it to the secret. A resource-based policy controls who can perform actions on the secret.\n  - AWS::SecretsManager::RotationSchedule – Configures a secret to perform automatic periodic rotation using the specified Lambda rotation function.\n  - AWS::SecretsManager::SecretTargetAttachment – Configures the secret with the details about the service or database that Secrets Manager needs to rotate the secret. For example, for an Amazon RDS DB instance, Secrets Manager adds the connection details and database engine type as entries in the SecureString property of the secret.\n\n  "
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/securityTokenService.md",
    "content": "# Security Token Service\n\n## Actions\n\n### AssumeRole\n\n[AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)\n\n- Returns a set of temporary security credentials that you can use to access AWS resources that you might not normally have access to. \n- These temporary credentials consist of an access key ID, a secret access key, and a security token."
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/serverMigrationService.md",
    "content": "# Server Migration Service\n\n[Cheat Sheet - SMS](https://tutorialsdojo.com/aws-server-migration-service-sms)\n\n[What is AWS Server Migration Service?](https://docs.aws.amazon.com/server-migration-service/latest/userguide/server-migration.html)\n\n[AWS Server Migration Service – Server Migration to the Cloud Made Easy](https://aws.amazon.com/blogs/apn/aws-server-migration-service-server-migration-to-the-cloud-made-easy)\n\n- AWS Server Migration Service (AWS SMS) automates the migration of your on-premises VMware vSphere, Microsoft Hyper-V/SCVMM, and Azure virtual machines to the AWS Cloud.\n- AWS SMS incrementally replicates your server VMs as cloud-hosted Amazon Machine Images (AMIs) ready for deployment on Amazon EC2. Working with AMIs, you can easily test and update your cloud-based images before deploying them in production.\n\n\n## Migrate Application\n\n[Migrate applications using AWS SMS](https://docs.aws.amazon.com/server-migration-service/latest/userguide/application-migration.html)\n\n- AWS Server Migration Service supports the automated migration of multi-server application stacks from your on-premises data center to Amazon EC2\n- Where server migration is accomplished by replicating a single server as an Amazon Machine Image (AMI), application migration replicates all of the servers in an application as AMIs and generates an AWS CloudFormation template to launch them in a coordinated fashion.\n\n\n\n[Using Amazon CloudWatch Events and AWS Lambda with AWS SMS](https://docs.aws.amazon.com/server-migration-service/latest/userguide/cwe-sms.html)\n"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/serverlessApplicationModel.md",
    "content": "# Serverless Applicaton Model\n\n\n[CheatSheet - AWS Serverless Application Model](https://tutorialsdojo.com/aws-serverless-application-model-sam)\n\n\n## What is the AWS Serverless Application Model (AWS SAM)?\n\n[What is the AWS Serverless Application Model (AWS SAM)?](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/what-is-sam.html)\n\n- The AWS Serverless Application Model (AWS SAM) is an open-source framework that you can use to build serverless applications on AWS.\n\n### Deploying serverless applications gradually\n\n- If you use AWS SAM to create your serverless application, it comes built-in with CodeDeploy to provide gradual Lambda deployments. With just a few lines of configuration, AWS SAM does the following for you:\n\n  - Deploys new versions of your Lambda function, and automatically creates aliases that point to the new version.\n  - Gradually shifts customer traffic to the new version until you're satisfied that it's working as expected, or you roll back the update.\n  - Defines pre-traffic and post-traffic test functions to verify that the newly deployed code is configured correctly and your application operates as expected.\n  - Rolls back the deployment if CloudWatch alarms are triggered.\n"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/serviceCatalog.md",
    "content": "# AWS Service Catalog\n\n[What Is AWS Service Catalog?](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html)\n\n[Cheat Sheet - AWS Service Catalog](https://tutorialsdojo.com/aws-service-catalog)\n\n- AWS Service Catalog enables organizations to create and manage catalogs of IT services that are approved for AWS. \n- These IT services can include everything from virtual machine images, servers, software, databases, and more to complete multi-tier application architectures.\n- AWS Service Catalog allows organizations to centrally manage commonly deployed IT services, and helps organizations achieve consistent governance and meet compliance requirements. \n- End users can quickly deploy only the approved IT services they need, following the constraints set by your organization."
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/shield.md",
    "content": "# Shield\n\n[AWS Shield](https://docs.aws.amazon.com/waf/latest/developerguide/shield-chapter.html)\n\n[Cheat Sheet - AWS Shield](https://tutorialsdojo.com/aws-shield)\n\n- AWS Shield is a managed Distributed Denial of Service (DDoS) protection service that safeguards applications running on AWS.\n- AWS Shield provides always-on detection and automatic inline mitigations that minimize application downtime and latency\n- There are two tiers of AWS Shield - Standard and Advanced.\n\n- All AWS customers benefit from the automatic protections of AWS Shield Standard, at no additional charge\n- AWS Shield Standard defends against most common, frequently occurring network and transport layer DDoS attacks that target your web site or applications. \n- When you use AWS Shield Standard with Amazon CloudFront and Amazon Route 53, you receive comprehensive availability protection against all known infrastructure (Layer 3 and 4) attacks.\n- For higher levels of protection against attacks targeting your applications running on Amazon Elastic Compute Cloud (EC2), Elastic Load Balancing (ELB), Amazon CloudFront, AWS Global Accelerator and Amazon Route 53 resources, you can subscribe to AWS Shield Advanced. \n\n[AWS Shield - Managed DDoS protection](https://aws.amazon.com/shield/?whats-new-cards.sort-by=item.additionalFields.postDateTime&whats-new-cards.sort-order=desc)\n\n- AWS provides AWS Shield Standard and AWS Shield Advanced for protection against DDoS attacks. \n- AWS Shield Standard is automatically included at no extra cost beyond what you already pay for AWS WAF and your other AWS services.\n- You can add Shield Advanced protection for any of the following resource types:\n  - Amazon CloudFront distributions\n  - Amazon Route 53 hosted zones\n  - AWS Global Accelerator accelerators\n  - Application Load Balancers\n  - Elastic Load Balancing (ELB) load balancers\n  - Amazon Elastic Compute Cloud (Amazon EC2) Elastic IP addresses\n\n\n> There are two types of AWS Shield: the Standard one which is free and the Advanced type which has an additional cost of around $3,000 per month.\n\n"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/simpleNotificationService.md",
    "content": "# Simple Notification Service\n\n[Cheat Sheet - Simple Notification Service](https://tutorialsdojo.com/amazon-sns)\n\n[Mobile push notifications](https://docs.aws.amazon.com/sns/latest/dg/sns-mobile-application-as-subscriber.html)\n\n- With Amazon SNS, you have the ability to send push notification messages directly to apps on mobile devices. \n- Push notification messages sent to a mobile endpoint can appear in the mobile app as message alerts, badge updates, or even sound alerts.\n\n\n## What is Amazon SNS?\n\n[What is Amazon SNS?](https://docs.aws.amazon.com/sns/latest/dg/welcome.html)\n\n- Amazon Simple Notification Service (Amazon SNS) is a managed service that provides message delivery from publishers to subscribers (also known as producers and consumers). Publishers communicate asynchronously with subscribers by sending messages to a topic, which is a logical access point and communication channel. Clients can subscribe to the SNS topic and receive published messages using a supported endpoint type, such as Amazon Kinesis Data Firehose, Amazon SQS, AWS Lambda, HTTP, email, mobile push notifications, and mobile text messages (SMS).\n\n\n\n## Message Filtering\n\n[SNS message filtering](https://docs.aws.amazon.com/sns/latest/dg/sns-message-filtering.html)\n\n- By default, an Amazon SNS topic subscriber receives every message published to the topic. To receive a subset of the messages, a subscriber must assign a filter policy to the topic subscription.\n- A filter policy is a simple JSON object containing attributes that define which messages the subscriber receives. When you publish a message to a topic, Amazon SNS compares the message attributes to the attributes in the filter policy for each of the topic's subscriptions. If any of the attributes match, Amazon SNS sends the message to the subscriber\n\n### Subscription Filter Policies\n\n[Amazon SNS subscription filter policies](https://docs.aws.amazon.com/sns/latest/dg/sns-subscription-filter-policies.html)\n\n[Enriching Event-Driven Architectures with AWS Event Fork Pipelines](https://aws.amazon.com/blogs/compute/enriching-event-driven-architectures-with-aws-event-fork-pipelines/)\n\n- A subscription filter policy allows you to specify attribute names and assign a list of values to each attribute name. For more information, see Amazon SNS message filtering.\n\n"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/simpleQueueService.md",
    "content": "# Simple Queue Service\n\n[Cheat Sheet - Simple Queue Service](https://tutorialsdojo.com/amazon-sqs)\n\n## What is Amazon Simple Queue Service?\n\n[What is Amazon Simple Queue Service?](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html)\n\n- Amazon Simple Queue Service (Amazon SQS) offers a secure, durable, and available hosted queue that lets you integrate and decouple distributed software systems and components."
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/simpleWorkflowService.md",
    "content": "# Simple Workflow Service\n\n[Simple Workflow Service](https://aws.amazon.com/swf/)\n\n[Cheat Sheet - SWF](https://tutorialsdojo.com/amazon-simple-workflow-amazon-swf)\n\n- Amazon SWF helps developers build, run, and scale background jobs that have parallel or sequential steps\n- You can think of Amazon SWF as a fully-managed state tracker and task coordinator in the Cloud.\n\n\n\n## FAQs\n\n[FAQ - SWF](https://aws.amazon.com/swf/faqs/)\n\n[](https://aws.amazon.com/swf/faqs/#:~:text=Processing%20large%20product%20catalogs%20using%20Amazon%20Mechanical%20Turk)"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/singleSignOn.md",
    "content": "> Revision Count: 1\n\n# Single Sign-On\n\n## What is AWS Single Sign-On?\n\n[What is AWS Single Sign-On?](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)\n\n- AWS Single Sign-On is a cloud-based single sign-on (SSO) service that makes it easy to centrally manage SSO access to all of your AWS accounts and cloud applications\n- Specifically, it helps you manage SSO access and user permissions across all your AWS accounts in AWS Organizations. \n- AWS SSO-integrated applications as well as custom applications that support Security Assertion Markup Language (SAML) 2.0.\n\n## Connect to your Microsoft AD directory\n\n[Connect to your Microsoft AD directory](https://docs.aws.amazon.com/singlesignon/latest/userguide/manage-your-identity-source-ad.html)\n\n- With AWS Single Sign-On, administrators can connect their self-managed Active Directory (AD) or their AWS Managed Microsoft AD directory using AWS Directory Service. \n- This Microsoft AD directory defines the pool of identities that administrators can pull from when using the AWS SSO console to assign single sign-on (SSO) access. \n- After connecting their corporate directory to AWS SSO, administrators can then grant their AD users or groups access to AWS accounts, cloud applications, or both.\n\n\n## Notes\n\n- AWS SSO supports single sign-on to business applications through web browsers only.\n- AWS SSO supports only SAML 2.0–based applications so an OpenID Connect-compatible solution will not work here"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/snowball.md",
    "content": "# Snowball\n\n[Migrate Petabyte-Scale Data to the Cloud](https://aws.amazon.com/getting-started/projects/migrate-petabyte-scale-data/services-costs)\n\n- Snowball is a petabyte-scale data transport solution that uses secure appliances to transfer large amounts of data into and out of the AWS cloud. \n\n\n[Performance for AWS Snowball](https://docs.aws.amazon.com/snowball/latest/ug/performance.html)\n\n- Speeding Up Data Transfer\n\n"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/snowballEdge.md",
    "content": "# Snowball Edge\n\n[Cheat Sheet - AWS Snowball Edge](https://tutorialsdojo.com/aws-snowball-edge)\n\n## Transferring Files Using the Amazon S3 Interface\n\n### Batching Small Files\n\n[Batching Small Files](https://docs.aws.amazon.com/snowball/latest/developer-guide/batching-small-files.html)\n\n- Each copy operation has some overhead because of encryption\n- To speed up the process of transferring small files to your AWS Snowball Edge device, you can batch them together in a single archive.\n- When you batch files together, they can be auto-extracted when they are imported into Amazon S3, if they were batched in one of the supported archive formats.\n\n## Best Practices\n\n[Best Practices](https://docs.aws.amazon.com/snowball/latest/developer-guide/BestPractices.html)\n\nSpeeding Up Data Transfer\n\n"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/storageGateway.md",
    "content": "# Storage Gateway\n\n[Cheat Sheet - AWS Storage Gateway](https://tutorialsdojo.com/aws-storage-gateway)\n\n[How Storage Gateway works (architecture)](https://docs.aws.amazon.com/storagegateway/latest/userguide/StorageGatewayConcepts.html)\n\n\n- AWS Storage Gateway connects an on-premises software appliance with cloud-based storage to provide seamless integration with data security features between your on-premises IT environment and the AWS storage infrastructure.\n- You can use the service to store data in the Amazon Web Services Cloud for scalable and cost-effective storage that helps maintain data security.\n- AWS Storage Gateway offers file-based file gateways (Amazon S3 File and Amazon FSx File), volume-based (Cached and Stored), and tape-based storage solutions\n\n\n\n[Storage Gateway](https://aws.amazon.com/storagegateway)\n\n- AWS Storage Gateway is a set of hybrid cloud storage services that provide on-premises access to virtually unlimited cloud storage.\n- Deliver low-latency data access to on-premises applications while leveraging the agility, economics and security capabilities of AWS in the cloud.\n- Provide on-premises applications access to cloud-backed storage without disruption to your business by maintaining user and application workflows.\n- Offer virtually unlimited cloud storage to users and applications without deploying new storage hardware.\n\n\n\n### Amazon S3 File Gateway\n\n[Amazon S3 File Gateway](https://docs.aws.amazon.com/storagegateway/latest/userguide/WhatIsStorageGateway.html)\n\n- Amazon S3 File Gateway supports a file interface into Amazon Simple Storage Service (Amazon S3) and combines a service and a virtual software appliance\n- By using this combination, you can store and retrieve objects in Amazon S3 using industry-standard file protocols such as Network File System (NFS) and Server Message Block (SMB).\n-  The software appliance, or gateway, is deployed into your on-premises environment as a virtual machine (VM) running on VMware ESXi, Microsoft Hyper-V, or Linux Kernel-based Virtual Machine (KVM) hypervisor. \n- The gateway provides access to objects in S3 as files or file share mount points.\n\n### Amazon FSx File Gateway\n\n[Amazon FSx File Gateway](https://docs.aws.amazon.com/storagegateway/latest/userguide/WhatIsStorageGateway.html)\n\n- Amazon FSx File Gateway (FSx File) is a new file gateway type that provides low latency, and efficient access to in-cloud Amazon FSx for Windows File Server file shares from your on-premises facility.\n\n\n### File Gateway\n\n[File Gateway](https://aws.amazon.com/storagegateway/file/)\n\n- Nearly all enterprises, regardless of industry, have to store files, whether they are backups, media content, or files generated by specialized industry applications.\n- You can choose from two file gateway types for your latency-sensitive applications and workloads that require local caching and file protocol access. \n  - Amazon S3 File Gateway enables you to store file data as objects in Amazon S3 cloud storage for data lakes, backups, and ML workflows. \n  - For user or team file shares, and file-based application migrations, Amazon FSx File Gateway provides low-latency, on-premises access to fully managed file shares in Amazon FSx for Windows File Server.\n\n### Tape Gateway\n\n[Tape Gateway](https://docs.aws.amazon.com/storagegateway/latest/userguide/WhatIsStorageGateway.html)\n\n- A tape gateway provides cloud-backed virtual tape storage. \n- The tape gateway is deployed into your on-premises environment as a VM running on VMware ESXi, KVM, or Microsoft Hyper-V hypervisor.\n\n\n[Tape Gateway](https://aws.amazon.com/storagegateway/vtl/)\n\n- Tape Gateway enables you to replace using physical tapes on premises with virtual tapes in AWS without changing existing backup workflows.\n- Tape Gateway encrypts data between the gateway and AWS for secure data transfer, and compresses data and transitions virtual tapes between Amazon S3 and Amazon S3 Glacier, or Amazon S3 Glacier Deep Archive, to minimize storage costs.\n- you can't directly fetch the media files from your tape gateway in real-time since this is backed up using Glacier.\n\n> Set up a tape gateway appliance on-premises and connect it to your AWS Storage Gateway\n\n\n### Volume Gateway\n\n[Volume Gateway](https://docs.aws.amazon.com/storagegateway/latest/userguide/WhatIsStorageGateway.html)\n\n-  A volume gateway provides cloud-backed storage volumes that you can mount as Internet Small Computer System Interface (iSCSI) devices from your on-premises application servers.\n- The volume gateway is deployed into your on-premises environment as a VM running on VMware ESXi, KVM, or Microsoft Hyper-V hypervisor.\n\n- The gateway supports the following volume configurations:\n  - Cached volumes\n    - You store your data in Amazon Simple Storage Service (Amazon S3) and retain a copy of frequently accessed data subsets locally\n  - Stored volumes\n    - If you need low-latency access to your entire dataset, first configure your on-premises gateway to store all your data locally. Then asynchronously back up point-in-time snapshots of this data to Amazon S3.\n\n\n## How Storage Gateway works (architecture)\n\n[How Storage Gateway works (architecture)](https://docs.aws.amazon.com/storagegateway/latest/userguide/StorageGatewayConcepts.html#volume-gateway-concepts)\n\n\n## AWS Storage Gateway quotas\n\n[AWS Storage Gateway quotas](https://docs.aws.amazon.com/storagegateway/latest/userguide/resource-gateway-limits.html#resource-volume-limits)\n\n\n\n\n## Security\n\n### Configuring CHAP authentication for your volumes\n\n[Configuring CHAP authentication for your volumes](https://docs.aws.amazon.com/storagegateway/latest/userguide/GettingStartedConfigureChap.html)\n\n- In Storage Gateway, your iSCSI (Internet Small Computer System Interface) initiators connect to your volumes as iSCSI targets. \n- Storage Gateway uses Challenge-Handshake Authentication Protocol (CHAP) to authenticate iSCSI and initiator connections.\n- CHAP provides protection against playback attacks by requiring authentication to access storage volume targets.\n\n\n"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/systemManager.md",
    "content": "> Revision Count: 1\n\n# System Manager\n\n[What is AWS Systems Manager?](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html)\n\n[Cheat Sheet - AWS Systems Manager](https://tutorialsdojo.com/aws-systems-manager)\n\n- AWS Systems Manager (formerly known as SSM)\n- you can use to view and control your infrastructure on AWS\n- you can view operational data from multiple AWS services and automate operational tasks across your AWS resources.\n- helps you maintain security and compliance by scanning your managed instances and reporting on (or taking corrective action on) any policy violations it detects.\n- Systems Manager is comprised of individual capabilities, which are grouped into five categories: \n  - Operations Management, \n  - Application Management, \n  - Change Management, \n  - Node Management, \n  - and Shared Resources.\n\n\n## Systems Manager Patch Manager\n\n[AWS Systems Manager Patch Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-patch.html)\n\n- Patch Manager, a capability of AWS Systems Manager, automates the process of patching managed instances with both security related and other types of updates\n- You can use Patch Manager to apply patches for both operating systems and applications. (On Windows Server, application support is limited to updates for applications released by Microsoft.) \n- You can use Patch Manager to install Service Packs on Windows instances and perform minor version upgrades on Linux instances. \n- You can patch fleets of Amazon Elastic Compute Cloud (Amazon EC2) instances, edge devices, or your on-premises servers and virtual machines (VMs) by operating system type. \n- You can install patches on a regular basis by scheduling patching to run as a Systems Manager maintenance window task.\n- Patch Manager integrates with AWS Identity and Access Management (IAM), AWS CloudTrail, and Amazon EventBridge to provide a secure patching experience that includes event notifications and the ability to audit usage.\n- Patch Manager uses `patch baselines`, which include rules for auto-approving patches within days of their release, in addition to a list of approved and rejected patches. \n- You can install patches on a regular basis by scheduling patching to run as a Systems Manager maintenance window task. You can also install patches individually or to large groups of managed nodes by using tags. (Tags are keys that help identify and sort your resources within your organization.) \n- You can add tags to your patch baselines themselves when you create or update them.\n\n\n\n\n## Monitoring\n\n### Sending SSM Agent logs to CloudWatch Logs\n\n[Sending SSM Agent logs to CloudWatch Logs](https://docs.aws.amazon.com/systems-manager/latest/userguide/monitoring-ssm-agent.html)\n\n- AWS Systems Manager Agent (SSM Agent) is Amazon software that runs on your EC2 instances and your hybrid instances (on-premises instances and virtual machines) that are configured for Systems Manager\n- SSM Agent processes requests from the Systems Manager service in the cloud and configures your machine as specified in the request\n\n\n## Application Management\n\n### AWS Systems Manager Parameter Store\n\n[AWS Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html)\n\n- Parameter Store, a capability of AWS Systems Manager, provides secure, hierarchical storage for configuration data management and secrets management\n- You can store data such as passwords, database strings, Amazon Machine Image (AMI) IDs, and license codes as parameter values\n- You can store values as plain text or encrypted data\n- Parameter Store is also integrated with Secrets Manager\n\n### Setting up AWS Systems Manager for hybrid environments\n\n[Setting up AWS Systems Manager for hybrid environments](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-managedinstances.html)\n\nConfiguring your hybrid environment for Systems Manager allows you to do the following:\n- Create a consistent and secure way to remotely manage your hybrid workloads from one location using the same tools or scripts.\n- Centralize access control for actions that can be performed on your servers and VMs by using AWS Identity and Access Management (IAM).\n- Centralize auditing and your view into the actions performed on your servers and VMs by recording all actions in AWS CloudTrail.\n- Centralize monitoring by configuring Amazon EventBridge and Amazon Simple Notification Service (Amazon SNS) to send notifications about service execution success.\n\n\n#### Step 7: (Optional) Create Systems Manager service roles\n\n[Step 7: (Optional) Create Systems Manager service roles](https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-service-role.html)\n\n- This topic explains the difference between a service role and a service-linked role for AWS Systems Manager. It also explains when you need to create or use either type of role.\n- Service role: \n  - A service role is an AWS Identity and Access Management (IAM) that grants permissions to an AWS service so that the service can access AWS resources. \n  - Only a few Systems Manager scenarios require a service role. \n  - When you create a service role for Systems Manager, you choose the permissions to grant in order for it to access or interact with other AWS resources.\n- Service-linked role: \n  - A service-linked role is predefined by Systems Manager and includes all the permissions that the service requires to call other AWS services on your behalf.\n\n\n### About SSM documents for patching managed nodes\n\n[About SSM documents for patching managed nodes](https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-ssm-documents.html)\n\nThe five recommended SSM documents include:\n- AWS-ConfigureWindowsUpdate\n- AWS-InstallWindowsUpdates\n- AWS-RunPatchBaseline\n- AWS-RunPatchBaselineAssociation\n- AWS-RunPatchBaselineWithHooks\n\n### About patching schedules using maintenance windows\n\n[About patching schedules using maintenance windows](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-patch-scheduletasks.html)\n\n- After you configure a patch baseline (and optionally a patch group), you can apply patches to your node by using a maintenance window. \n- A maintenance window can reduce the impact on server availability by letting you specify a time to perform the patching process that doesn't interrupt business operations.\n\n### AWS Systems Manager Automation\n\n[AWS Systems Manager Automation](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-automation.html)\n\n- Automation, a capability of AWS Systems Manager, simplifies common maintenance and deployment tasks of Amazon Elastic Compute Cloud (Amazon EC2) instances and other AWS resources.\n  - Build automations to configure and manage instances and AWS resources.\n  - Create custom runbooks or use pre-defined runbooks maintained by AWS.\n  - Receive notifications about Automation tasks and runbooks by using Amazon EventBridge.\n  - Monitor Automation progress and details by using the Systems Manager console.\n\n\n\n### Actions\n\n#### DeleteParameter\n\n- Delete a parameter from the system. After deleting a parameter, wait for at least 30 seconds to create a parameter with the same name.\n\n\n\n## Notes\n\n- The AWS Systems Manager Run Command is primarily used to remotely manage the configuration of your managed instances while AWS Systems Manager State Manager is just a configuration management service that automates the process of keeping your Amazon EC2 and hybrid infrastructure in a state that you define\n\n\n## Blogs\n\n- [Patching your Windows EC2 instances using AWS Systems Manager Patch Manager](https://aws.amazon.com/blogs/mt/patching-your-windows-ec2-instances-using-aws-systems-manager-patch-manager)\n  - For example, you can create patch groups for different environments/tagged instances such as development, test, and production\n  - you can install patches on a regular basis by scheduling patching to run as a Maintenance Windows task\n  - A patch baseline defines which patches should and shouldn’t be installed on your instances. \n  - You can individually specify approved or rejected patches, or you can use auto-approval rules to specify that certain types of updates (for example, critical updates), should automatically be approved for patching.\n  - AWS Systems Manager Maintenance Windows let you define a schedule for when to perform potentially disruptive actions on your instances such as patching an operating system (OS), updating drivers, or installing software. \n  - Each Maintenance Window has a schedule, a duration, a set of registered targets, and a set of registered tasks. "
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/transcribe.md",
    "content": "# Transcribe\n\n[Cheat Sheet - Transcribe](https://tutorialsdojo.com/amazon-transcribe)\n\n- Amazon Transcribe is an AWS service that makes it easy for customers to convert speech-to-text. \n\n## How Amazon Transcribe works\n\n[How Amazon Transcribe works](https://docs.aws.amazon.com/transcribe/latest/dg/how-it-works.html)\n\n- Amazon Transcribe analyzes audio files that contain speech and uses advanced machine learning techniques to transcribe the voice data into text\n\n\n## Actions\n\n### StartTranscriptionJob\n\n[StartTranscriptionJob](https://docs.aws.amazon.com/transcribe/latest/dg/API_StartTranscriptionJob.html)\n\n- Starts an asynchronous job to transcribe speech to text.\n\n\n\n\n\n\n## FAQs\n\n[FAQs](https://aws.amazon.com/transcribe/faqs)"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/vpc.md",
    "content": "# VPC\n\n[Cheat Sheet - AWS VPC](https://tutorialsdojo.com/amazon-vpc)\n[Cheat Sheet - VPC Peering](https://tutorialsdojo.com/vpc-peering)\n[Cheat Sheet - AWS Transit Gateway](https://tutorialsdojo.com/aws-transit-gateway)\n\n\n\n\n## Network ACLs\n\n[Network ACLs](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html)\n\n- A network access control list (ACL) is an optional layer of security for your VPC that acts as a firewall for controlling traffic in and out of one or more subnets. \n- You might set up network ACLs with rules similar to your security groups in order to add an additional layer of security to your VPC.\n\n## VPC Networking Components\n\n## NAT gateways\n\n[NAT gateways](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html)\n\n- A NAT gateway is a Network Address Translation (NAT) service. \n- You can use a NAT gateway so that instances in a private subnet can connect to services outside your VPC but external services cannot initiate a connection with those instances.\n\n- When you create a NAT gateway, you specify one of the following connectivity types:\n  - Public – (Default) Instances in private subnets can connect to the internet through a public NAT gateway, but cannot receive unsolicited inbound connections from the internet.\n  - Private – Instances in private subnets can connect to other VPCs or your on-premises network through a private NAT gateway. \n    - You can route traffic from the NAT gateway through a transit gateway or a virtual private gateway. \n    - You cannot associate an elastic IP address with a private NAT gateway.\n    \n\n### NAT instances\n\n[NAT instances](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_NAT_Instance.html)\n\n- You can create your own AMI that provides network address translation and use your AMI to launch an EC2 instance as a NAT instance. \n- You launch a NAT instance in a public subnet to enable instances in the private subnet to initiate outbound IPv4 traffic to the internet or other AWS services, but prevent the instances from receiving inbound traffic initiated on the internet.\n\n### NAT devices for your VPC\n\n[NAT devices for your VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat.html)\n\n\n\n### Compare NAT gateways and NAT instances\n\n[Compare NAT gateways and NAT instances](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-comparison.html)\n\n\n\n## VPC peering\n\n[VPC peering](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-peering.html)\n\n- A VPC peering connection is a networking connection between two VPCs that enables you to route traffic between them privately. \n- Instances in either VPC can communicate with each other as if they are within the same network. \n- You can create a VPC peering connection between your own VPCs, with a VPC in another AWS account, or with a VPC in a different AWS Region.\n\n\n### Configurations with specific routes\n\n[Configurations with specific routes](https://docs.aws.amazon.com/vpc/latest/peering/peering-configurations-partial-access.html)\n\n[One VPC peered with two VPCs using longest prefix match](https://docs.aws.amazon.com/vpc/latest/peering/peering-configurations-partial-access.html#one-to-two-vpcs-lpm)\n\n\n## Route Tables\n\n### Example routing options\n\n[Example routing options](https://docs.aws.amazon.com/vpc/latest/userguide/route-table-options.html)\n\n\n\n\n\n## VPC Flow Logs\n\n[VPC Flow Logs](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html)\n\n- VPC Flow Logs is a feature that enables you to capture information about the IP traffic going to and from network interfaces in your VPC.\n- Flow log data can be published to Amazon CloudWatch Logs or Amazon S3.\n- After you create a flow log, you can retrieve and view its data in the chosen destination.\n\n- Flow logs can help you with a number of tasks, such as:\n  - Diagnosing overly restrictive security group rules\n  - Monitoring the traffic that is reaching your instance\n  - Determining the direction of the traffic to and from the network interfaces\n\n## VPC Endpoints\n\n### Interface VPC endpoints (AWS PrivateLink)\n\n[Interface VPC endpoints (AWS PrivateLink)](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-interface.html)\n\n- An interface VPC endpoint (interface endpoint) allows you to connect to services powered by AWS PrivateLink\n- These services include some AWS services, services hosted by other AWS customers and Partners in their own VPCs (referred to as endpoint services), and supported AWS Marketplace Partner services. \n- The owner of the service is the service provider, and you, as the principal creating the interface endpoint, are the service consumer.\n\n[How do I configure security and network ACLs for my interface-based Amazon VPC endpoint for endpoint services?](https://aws.amazon.com/premiumsupport/knowledge-center/security-network-acl-vpc-endpoint)\n\n> When you create an Amazon VPC endpoint interface with AWS PrivateLink, an Elastic Network Interface is created inside of the subnet that you specify. This interface VPC endpoint (interface endpoint) inherits the network ACL of the associated subnet. You must associate a security group with the interface endpoint to protect incoming and outgoing requests.\n\n## DNS support for your VPC\n\n[DNS attributes in your VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-dns-support)\n\nDNS attributes in your VPC\n\n- enableDnsHostnames\t\n- enableDnsSupport\n\n>  IF both attributes are enabled, an instance launched into the VPC receives a public DNS hostname IF it is assigned a public IPv4 address or an Elastic IP address at creation.\n\n## DHCP options sets for your VPC\n\n[DHCP options sets for your VPC](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_DHCP_Options.html)\n\n- The Dynamic Host Configuration Protocol (DHCP) provides a standard for passing configuration information to hosts on a TCP/IP network. \n- The options field of a DHCP message contains configuration parameters, including the domain name, domain name server, and the netbios-node-type.\n- When you create a VPC, we automatically create a set of DHCP options and associate them with the VPC. You can configure your own DHCP options set for your VPC.\n\n\n### Work with shared VPCs\n\n[Blog - VPC sharing: A new approach to multiple accounts and VPC management](https://aws.amazon.com/blogs/networking-and-content-delivery/vpc-sharing-a-new-approach-to-multiple-accounts-and-vpc-management)\n\n[Work with shared VPCs](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-sharing.html)\n\n- VPC sharing allows multiple AWS accounts to create their application resources, such as Amazon EC2 instances, Amazon Relational Database Service (RDS) databases, Amazon Redshift clusters, and AWS Lambda functions, into shared, centrally-managed virtual private clouds (VPCs)\n- In this model, the account that owns the VPC (owner) shares one or more subnets with other accounts (participants) that belong to the same organization from AWS Organizations\n- After a subnet is shared, the participants can view, create, modify, and delete their application resources in the subnets shared with them. \n- Participants cannot view, modify, or delete resources that belong to other participants or the VPC owner.\n\n\n[VPC Flow Logs](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html)\n\nVPC Flow Logs is a feature that enables you to capture information about the IP traffic going to and from network interfaces in your VPC. Flow log data can be published to Amazon CloudWatch Logs or Amazon S3. \n\n\n### Internetwork traffic privacy in Amazon VPC\n\n[Internetwork traffic privacy in Amazon VPC](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Security.html)\n\n- Security groups: Security groups act as a firewall for associated Amazon EC2 instances, controlling both inbound and outbound traffic at the instance level.\n- Network access control lists (ACLs): Network ACLs act as a firewall for associated subnets, controlling both inbound and outbound traffic at the subnet level.\n- Flow logs: Flow logs capture information about the IP traffic going to and from network interfaces in your VPC.\n- Traffic mirroring: You can copy network traffic from an elastic network interface of an Amazon EC2 instance.\n\n\n## Blogs\n\n- [How to set up an outbound VPC proxy with domain whitelisting and content filtering](https://aws.amazon.com/blogs/security/how-to-set-up-an-outbound-vpc-proxy-with-domain-whitelisting-and-content-filtering)\n\n- [How to set up an outbound VPC proxy with domain whitelisting and content filtering](https://aws.amazon.com/blogs/security/how-to-set-up-an-outbound-vpc-proxy-with-domain-whitelisting-and-content-filtering)\n\n  - Controlling outbound communication from your Amazon Virtual Private Cloud (Amazon VPC) to the internet is an important part of your overall preventive security controls. \n  - By limiting outbound traffic to certain trusted domains (called “whitelisting”) you help prevent instances from downloading malware, communicating with bot networks, or attacking internet hosts."
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/waf.md",
    "content": "# WAF\n\n[AWS WAF](https://aws.amazon.com/waf/)\n\n[Cheat Sheet - AWS WAF](https://tutorialsdojo.com/aws-waf)\n\n- AWS WAF is a web application firewall that helps protect your web applications or APIs against common web exploits and bots that may affect availability, compromise security, or consume excessive resources.\n- AWS WAF gives you control over how traffic reaches your applications by enabling you to create security rules that control bot traffic and block common attack patterns, such as SQL injection or cross-site scripting.\n- You can also customize rules that filter out specific traffic patterns.\n\n## What are AWS WAF, AWS Shield, and AWS Firewall Manager?\n\n[What are AWS WAF, AWS Shield, and AWS Firewall Manager?](https://docs.aws.amazon.com/waf/latest/developerguide/what-is-aws-waf.html)\n\n- AWS WAF is a web application firewall that lets you monitor the HTTP and HTTPS requests that are forwarded to an Amazon CloudFront distribution, an Amazon API Gateway REST API, an Application Load Balancer, or an AWS AppSync GraphQL API.\n- AWS WAF also lets you control access to your content. Based on conditions that you specify, such as the IP addresses that requests originate from or the values of query strings, Amazon CloudFront, Amazon API Gateway, Application Load Balancer, or AWS AppSync responds to requests either with the requested content or with an HTTP 403 status code (Forbidden).\n\n\n\n\n[White paper - aws-waf-owasp](https://d0.awsstatic.com/whitepapers/Security/aws-waf-owasp.pdf)\n\n[Prepare for the OWASP Top 10 Web Application Vulnerabilities Using AWS WAF](https://aws.amazon.com/blogs/aws/prepare-for-the-owasp-top-10-web-application-vulnerabilities-using-aws-waf-and-our-new-white-paper/)"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/webIdentifyFederation.md",
    "content": "# Web Identify Federation\n\n[web identity federation](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc.html)\n\n- Imagine that you are creating a mobile app that accesses AWS resources, such as a game that runs on a mobile device and stores player and score information using Amazon S3 and DynamoDB.\n- build your app so that it requests temporary AWS security credentials dynamically when needed using web identity federation. The supplied temporary credentials map to an AWS role that has only the permissions needed to perform the tasks required by the mobile app.\n- With web identity federation, you don't need to create custom sign-in code or manage your own user identities. Instead, users of your app can sign in using a well-known external identity provider (IdP), such as Login with Amazon, Facebook, Google, or any other OpenID Connect (OIDC)-compatible IdP. They can receive an authentication token, and then exchange that token for temporary security credentials in AWS that map to an IAM role with permissions to use the resources in your AWS account"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/wellArchitected.md",
    "content": "# Well-Architected\n\n## Plan for Disaster Recovery (DR)\n\n[Cheat Sheet - backup-and-restore-vs-pilot-light-vs-warm-standby-vs-multi-site](https://tutorialsdojo.com/backup-and-restore-vs-pilot-light-vs-warm-standby-vs-multi-site)\n\n[Plan for Disaster Recovery (DR)](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/plan-for-disaster-recovery-dr.html)\n\n- Having backups and redundant workload components in place is the start of your DR strategy. RTO and RPO are your objectives for restoration of your workload\n  - Recovery Time Objective (RTO) is defined by the organization. RTO is the maximum acceptable delay between the interruption of service and restoration of service. This determines what is considered an acceptable time window when service is unavailable.\n  - Recovery Point Objective (RPO) is defined by the organization. RPO is the maximum acceptable amount of time since the last data recovery point. This determines what is considered an acceptable loss of data between the last recovery point and the interruption of service.\n\nWhen architecting a multi-region disaster recovery strategy for your workload, you should choose one of the following multi-region strategies.\n- Backup and restore (RPO in hours, RTO in 24 hours or less): \n- Pilot light (RPO in minutes, RTO in hours)\n- Warm standby (RPO in seconds, RTO in minutes)\n- Multi-region (multi-site) active-active (RPO near zero, RTO potentially zero)\n"
  },
  {
    "path": "home/cloud_certifications/aws/taskset_aws_cloud_certifications/task_001_aws_certified_solutions_architect_professional/whitepapers.md",
    "content": "# Whitepapers\n\n[Network-to-Amazon VPC connectivity options](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/network-to-amazon-vpc-connectivity-options.html)\n\n[AWS Direct Connect + VPN](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/aws-direct-connect-vpn.html)\n\n- With AWS Direct Connect + VPN, you can combine AWS Direct Connect dedicated network connections with the Amazon VPC VPN. AWS Direct Connect **public VIF** established a dedicated network connection between your network to public AWS resources, such as an Amazon virtual private gateway IPsec endpoint. The following figure illustrates this option.\n- You must use a public virtual interface for your AWS Direct Connect (DX) connection and not a private one\n\n\n- [Blue Green Deployments](https://d0.awsstatic.com/whitepapers/AWS_Blue_Green_Deployments.pdf)\n- [Clone a Stack in AWS OpsWorks and Update DNS](https://docs.aws.amazon.com/whitepapers/latest/blue-green-deployments/clone-a-stack-in-aws-opsworks-and-update-dns.html)\n  - AWS OpsWorks utilizes the concept of stacks, which are logical groupings of AWS resources (EC2 instances, Amazon RDS, Elastic Load Balancing, and so on) that have a common purpose and should be logically managed together\n- [Building a Scalable and Secure Multi-VPC AWS Network Infrastructure](https://d1.awsstatic.com/whitepapers/building-a-scalable-and-secure-multi-vpc-aws-network-infrastructure.pdf)\n\n- [Centralized egress to internet](https://docs.aws.amazon.com/whitepapers/latest/building-scalable-secure-multi-vpc-network-infrastructure/centralized-egress-to-internet.html)\n\n  - Deploying a NAT Gateway in every spoke VPC can become expensive because you pay an hourly charge for every NAT Gateway you deploy (see Amazon VPC pricing), so centralizing it could be a viable option. \n  - To centralize, we create an egress VPC in the network services account and route all egress traffic from the spoke VPCs via a NAT Gateway sitting in this VPC leveraging Transit Gateway\n\n- [Transit Gateway](https://docs.aws.amazon.com/whitepapers/latest/building-scalable-secure-multi-vpc-network-infrastructure/transit-gateway.html)\n  - AWS Transit Gateway provides a hub and spoke design for connecting VPCs and on-premises networks as a fully managed service without requiring you to provision virtual appliances like the Cisco CSRs.\n\n- [AWS Transit Gateway](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/aws-transit-gateway.html)\n\n  - AWS Transit Gateway is a highly available and scalable service to consolidate the AWS VPC routing configuration for a region with a hub-and- spoke architecture. \n  - Each spoke VPC only needs to connect to the Transit Gateway to gain access to other connected VPCs. \n  - Transit Gateway across different regions can peer with each other to enable VPC communications across regions. \n  - With large number of VPCs, Transit Gateway provides simpler VPC-to-VPC communication management over VPC Peering\n\n- [Security Groups and Network Access Control Lists (Network ACLs) (BP5)](https://docs.aws.amazon.com/whitepapers/latest/aws-best-practices-ddos-resiliency/security-groups-and-network-access-control-lists-nacls-bp5.html)\n- [Using AWS for Disaster Recovery](https://aws.amazon.com/blogs/aws/new-whitepaper-use-aws-for-disaster-recovery)\n- [Overview of Deployment Options on AWS](https://docs.aws.amazon.com/whitepapers/latest/overview-deployment-options/aws-deployment-services.html)\n- [AWS Best Practices for DDoS Resiliency](https://docs.aws.amazon.com/whitepapers/latest/aws-best-practices-ddos-resiliency/welcome.html)\n\n"
  },
  {
    "path": "home/cloud_providers/aws/ReadMe-static.md",
    "content": "# AWS Taskset\nReferences\n\n- [copy-data-from-an-s3-bucket-in-one-account-and-region-to-another-account-and-region](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/copy-data-from-an-s3-bucket-in-one-account-and-region-to-another-account-and-region.html)\n"
  },
  {
    "path": "home/cloud_providers/aws/ReadMe.md",
    "content": "# taskset_aws_cloud_providers\n\n> [Auto](https://github.com/codeaprendiz/learn_fullstack/blob/main/home/php/intermediate/taskset_intermediate_php/task_004_createGlobalMarkdownTable/generate-readme.php) generated ReadMe. Number of tasks: 9\n\n| Task     | Description                                                                                                                                                                            |\n|----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| task_001 | [task_001_kms](taskset_aws_cloud_providers/task_001_kms)                                                                                                                               |\n| task_002 | [task_002_monitoring_msk](taskset_aws_cloud_providers/task_002_monitoring_msk)                                                                                                         |\n| task_003 | [task_003_redirection_using_s3_cloudfront](taskset_aws_cloud_providers/task_003_redirection_using_s3_cloudfront)                                                                       |\n| task_004 | [task_004_trigger_codebuild_PR_events__eventbridge__static_branc](taskset_aws_cloud_providers/task_004_trigger_codebuild_PR_events__eventbridge__static_branc)                         |\n| task_005 | [task_005_trigger_codebuild_PR_events__eventbridge__lambda__dynamic_branches](taskset_aws_cloud_providers/task_005_trigger_codebuild_PR_events__eventbridge__lambda__dynamic_branches) |\n| task_006 | [task_006_codebuild_codecommit_test_reports_gradle](taskset_aws_cloud_providers/task_006_codebuild_codecommit_test_reports_gradle)                                                     |\n| task_007 | [task_007_codebuild_codecommit_test_reports_mvn](taskset_aws_cloud_providers/task_007_codebuild_codecommit_test_reports_mvn)                                                           |\n| task_008 | [task_008_trigger_lambda_from_codecommit_using_event_bridge](taskset_aws_cloud_providers/task_008_trigger_lambda_from_codecommit_using_event_bridge)                                   |\n| task_009 | [task_009_pass_vars_dynamically_from_codebuild_to_codepipeline](taskset_aws_cloud_providers/task_009_pass_vars_dynamically_from_codebuild_to_codepipeline)                             |\n"
  },
  {
    "path": "home/cloud_providers/aws/taskset_aws_cloud_providers/task_001_kms/ReadMe.md",
    "content": "### Objective\n\nTo use the AWS KMS to encrypt and decrypt data using the aws kms\n\nInputs : \n1) You have already created a CUSTOMER MANAGER KEY using the AWS console with the alias\nname as `master`\n2) You have also created an IAM user with policy `AWSKeyManagementServicePowerUser`\n\n\nDocs and Links referred\n\n[aws kms generate-data-key](https://docs.aws.amazon.com/cli/latest/reference/kms/generate-data-key.html)\n\n[youtube](https://www.youtube.com/watch?v=f3APF1dP8w0&t=604s&ab_channel=EnlearAcademy)\n\n#### Step 1\n\nConfigure the AWS account using the right region and correct access keys\n\n```bash\n$ aws configure                                                            \nAWS Access Key ID [****************]: \nAWS Secret Access Key [****************]: \nDefault region name [ap-south-1]: \nDefault output format [None]: \n```\n\n#### Step 2\n\nLet's list the aliases first to validate\n\n```bash\n$ aws kms list-aliases | grep master | grep -v \"arn\"\n            \"AliasName\": \"alias/master\",\n```\n\n#### Step 3\n\nGenerate the symmetric keys using  `generate-data-key` method. Note that these\nkeys are base64 encoded.\n\n```bash\n$ aws kms generate-data-key --key-id alias/master --key-spec AES_256 --region ap-south-1\n{\n    \"CiphertextBlob\": \"your_key_in_cipher_text\",\n    \"Plaintext\": \"your_key_in_plain_text\",\n    \"KeyId\": \"your_key_aws_arn\"\n}\n```\n\n#### Step 4\n\nDecode you keys and save them in files\n\n```bash\n$ echo \"your_key_in_cipher_text\" | base64 --decode > ciphertextblob\n\n$ echo \"your_key_in_plain_text\" | base64 --decode > plaintext\n```\n\n#### Step 5\n\nLet's create a sensitive datafile\n\n```bash\n$ cat sensitivedatafile.txt          \nThis is very sensitive data\nplease do not copy\ncopying the data is strictly prohibited\nokay you can copy the data.\n```\n\n#### Step 6\n\nEncrypt the sensitive data file\n\n```bash\n$ openssl enc -in ./sensitivedatafile.txt -out ./sensitivedatafile_encrypted.txt -e -aes256 -k ./plaintext\n```\n\n> NOTE: Delete your plaintext symmetric key now. We will only store the encrypted version of the plaintext key\n\n```bash\n$ mv plaintext ~/tmp/\n$ mv sensitivedatafile.txt /tmp/                                                            \n```\n\nOkay, I moved it to `/tmp` just in case. But we need to remove! Very Important!\n\n#### Step 7\n\nNow the task is to decrypt the `sensitivedatafile_encrypted.txt` using the `ciphertextblob`.\nBoth of them are encrypted files.\n\nSo first we will get the plaintext version of our datakey using the aws cli\n\n```bash\n$ aws kms decrypt --ciphertext-blob fileb://ciphertextblob --region ap-south-1\n{\n    \"KeyId\": \"aws_arn\",\n    \"Plaintext\": \"your_plaintext_key\",\n    \"EncryptionAlgorithm\": \"SYMMETRIC_DEFAULT\"\n}\n```\n\nDecode the key\n\n```bash\n$ echo \"your_plaintext_key\" | base64 --decode > plaintext\n```\n\n#### Step 8\n \nFinally decrypt the `sensitivedatafile_encrypted.txt` using the `plaintext` key you just obtained.\nWe will use the openssl library for the same\n\n```bash\n$ openssl enc -in ./sensitivedatafile_encrypted.txt -out ./sensitivedatafile_final.txt -d  -aes256 -k ./plaintext \n\n$ cat sensitivedatafile_final.txt\nThis is very sensitive data\nplease do not copy\ncopying the data is strictly prohibited\nokay you can copy the data.\n```"
  },
  {
    "path": "home/cloud_providers/aws/taskset_aws_cloud_providers/task_002_monitoring_msk/ReadMe.md",
    "content": "### Monitoring AWS MSK\nYou cannot know what you cannot see.\n\nYou can enable monitoring while setting up MSK. Check out their official documentation \nwhich is more than enough\n\n[AWS Docs](https://docs.aws.amazon.com/msk/latest/developerguide/monitoring.html)\n\n[Official Docs](https://kafka.apache.org/documentation/#monitoring)\n\n[Confluent Docs](https://docs.confluent.io/platform/current/kafka/monitoring.html)\n\n[kafka-lag-monitoring-and-metrics-at-appsflyer](https://www.confluent.io/blog/kafka-lag-monitoring-and-metrics-at-appsflyer/)\n\n#### What metrics we need to monitor\n\n[metrics-details.html#default-metric](https://docs.aws.amazon.com/msk/latest/developerguide/metrics-details.html#default-metrics)\n\n- Number of active controllers : Should always be one\n\n- Number of UnderReplicatedPartions : Should always be zero\n\n- Number of Offline Partitions : Should always be zero\n\n\n\n#### Why does lag matter?\nWhy does lag matter and why does it need to be treated differently than other metrics in the system?\nLag is a key performance indicator (KPI) for Kafka. When building an event streaming platform, the consumer group lag is one of the crucial metrics to monitor.\nAs mentioned earlier, when an application consumes messages from Kafka, it commits its offset in order to keep its position in the partition. When a consumer gets stuck for any reason—for example, an error, rebalance, or even a complete stop—it can resume from the last committed offset and continue from the same point in time.\nTherefore, lag is the delta between the last committed message to the last produced message. In other words, lag indicates how far behind your application is in processing up-to-date information.\nTo make matters worse, remember that Kafka persistence is based on retention, meaning that if your lag persists, you will lose data at some point in time. The goal is to keep lag to a minimum.\n\n"
  },
  {
    "path": "home/cloud_providers/aws/taskset_aws_cloud_providers/task_003_redirection_using_s3_cloudfront/ReadMe.md",
    "content": "### Redirect Apex domain to another domain's subdomain with browser change in URL\n\nRequirements\n\n- firstdomain.com should be redirected to https://sub.seconddomain.com\n- http://firstdomain.com should be redirected to https://sub.seconddomain.com\n- https://firstdomain.com should be redirected to https://sub.seconddomain.com\n\n\nDocuments Referred\n\n[https://aws.amazon.com/premiumsupport/knowledge-center/route-53-redirect-to-another-domain](https://aws.amazon.com/premiumsupport/knowledge-center/route-53-redirect-to-another-domain)\n\n[stackoverflow](https://stackoverflow.com/questions/10115799/set-up-dns-based-url-forwarding-in-amazon-route53/14289082#14289082)\n\n\n#### S3 configuraton\n\n- Name of the bucket : firstdomain.com\n- Enable the static website hosting and Redirect requests for an object and set the `Hostname` to `sub.seconddomain.com`. Protocol should be `https`\n- Keep a copy of the website endpoint `http://firstdomain.com.s3-website.ap-south-1.amazonaws.com`\n\n\n### CloudFront configuration\n\n- Create cloudfront distribution with alternamte domain name as `firstdomain.com`\n- You will need to create an ACM certificate in `us-east-1` for the CloudFront, ensure that the \n  ACM certificate supports the domians `*.firstdomain.com`, `firstdomain.com`, `www.firstdomain.com`, `*.seconddomain.com`, `seconddomain.com`, `www.seconddomain.com`\n- Keep the origin domain as `firstdomain.com.s3-website.ap-south-1.amazonaws.com`, what noted in previous step without the `http`\n- Origin Protocol should be `http` as for S3-website configuration only supports http requests. So the http port will also be 80\n- Viewer, protocol policy `Redirect HTTP to HTTPS`\n- You can keep all the HTTP methods as allowed\n- Make a not of the distribution domain name `https://something.cloudfront.net`\n\n\n### Route53 configuration\n\n- Go to the hosted zone `firstdomain.com` \n- Create an `Alias A IPv4` record for `firstdomain.com` pointing to `something.cloudfront.net`\n\n\n### Validation\n\n- When there is `cache miss` from the cloudfront\n\n```bash\n$ curl -I http://something.cloudfront.net -L\nHTTP/1.1 301 Moved Permanently\nServer: CloudFront\nDate: Thu, 12 Aug 2021 12:12:04 GMT\nContent-Type: text/html\nContent-Length: 183\nConnection: keep-alive\nLocation: https://something.cloudfront.net/\nX-Cache: Redirect from cloudfront\nVia: 1.1 5dd0dcc9e0464f63fa9f8c3a40.cloudfront.net (CloudFront)\nX-Amz-Cf-Pop: DEL54-C4\nX-Amz-Cf-Id: 5kX-_t55pHGTMaZt046sbSyS9geMsw8RagPXNGdiqthnV9HEJc18Rw==\n\nHTTP/2 301\ncontent-length: 0\nlocation: https://sub.seconddomain.com/\ndate: Thu, 12 Aug 2021 12:12:05 GMT\nserver: AmazonS3\nx-cache: Miss from cloudfront\nvia: 1.1 5ef0432e6c0ac31f0b8bdb72d3755f66.cloudfront.net (CloudFront)\nx-amz-cf-pop: DEL54-C4\nx-amz-cf-id: nZGDaK7tSmo4hwC6jlT9fLV5rjNglbNajvLtj0y54vROJg18Qislrg==\n\nHTTP/1.1 404 Not Found\nContent-Length: 19\nContent-Type: text/plain; charset=utf-8\nDate: Thu, 12 Aug 2021 12:12:04 GMT\nX-Content-Type-Options: nosniff\nConnection: keep-alive\n```\n\n- When there is `hit` from the cloudfront\n\n```bash\n$ curl -I http://something.cloudfront.net -L\nHTTP/1.1 301 Moved Permanently\nServer: CloudFront\nDate: Fri, 13 Aug 2021 11:17:07 GMT\nContent-Type: text/html\nContent-Length: 183\nConnection: keep-alive\nLocation: https://something.cloudfront.net/\nX-Cache: Redirect from cloudfront\nVia: 1.1 637fcf134a6acd248c904995685d8a65.cloudfront.net (CloudFront)\nX-Amz-Cf-Pop: DEL54-C4\nX-Amz-Cf-Id: MZa1056r6UIWlshM0FzGsVoAMtdVtkW8-5JMSb2JxngFIkC2kdNT4g==\n\nHTTP/2 301\ncontent-length: 0\nlocation: https://sub.seconddomain.com/\ndate: Thu, 12 Aug 2021 12:12:05 GMT\nserver: AmazonS3\nx-cache: Hit from cloudfront\nvia: 1.1 d074672a93d4cecfc24649b988ca81dc.cloudfront.net (CloudFront)\nx-amz-cf-pop: DEL54-C4\nx-amz-cf-id: lQyKipnkYjneJ27p1ox3-bLEbnrrV49dOIMq8iXyZtP1Q402rPBKEw==\nage: 83103\n\nHTTP/1.1 404 Not Found\nContent-Length: 19\nContent-Type: text/plain; charset=utf-8\nDate: Fri, 13 Aug 2021 11:17:07 GMT\nX-Content-Type-Options: nosniff\nConnection: keep-alive\n```\n\n\n### Issues you might face\n\n- Note that the CNAME is added to the CDN and is supported by the ACM certificate\n- Sometimes its just the cloudfront, because it take sometime to reflect the values. You can invalidate the cloudfront cache \n  by using `Cache invalidation` for `*/`\n"
  },
  {
    "path": "home/cloud_providers/aws/taskset_aws_cloud_providers/task_004_trigger_codebuild_PR_events__eventbridge__static_branc/ReadMe.md",
    "content": "# Trigger Codebuild on PR events using EventBridge (the hardcoded branch get's triggered)\n\n- [Trigger Codebuild on PR events using EventBridge (the hardcoded branch get's triggered)](#trigger-codebuild-on-pr-events-using-eventbridge-the-hardcoded-branch-gets-triggered)\n  - [Docs Referred](#docs-referred)\n  - [Existing Issue](#existing-issue)\n  - [Create a repository in AWS CodeCommit](#create-a-repository-in-aws-codecommit)\n  - [Create a CodeBuild project - codebuild-app](#create-a-codebuild-project---codebuild-app)\n  - [Create Pipeline in CodePipeline](#create-pipeline-in-codepipeline)\n  - [Commit to the repository and check if build get's triggered](#commit-to-the-repository-and-check-if-build-gets-triggered)\n  - [Create EventBridge Rule](#create-eventbridge-rule)\n  - [Create a PR and check if build gets triggered](#create-a-pr-and-check-if-build-gets-triggered)\n\n## Docs Referred\n\n[Automated Code Review on Pull Requests using AWS CodeCommit and AWS CodeBuild](https://aws.amazon.com/blogs/devops/automated-code-review-on-pull-requests-using-aws-codecommit-and-aws-codebuild/)\n\n## Existing Issue\n\nThe codebuild always runs against the same branch which is hardcoded in the codebuild project. We want to trigger the codebuild on PR events with the source branch as the PR branch.\n\n## Create a repository in AWS CodeCommit\n\n```bash\nmkdir tmp # tmp is added to .gitignore\ncd tmp\n```\n\n```bash\n# Make sure you upload your public key to AWS IAM user security credentials section\ncat ~/.ssh/config            \nHost git-codecommit.*.amazonaws.com\n  User <Add-Your-AWS-KEY-ID-Here> \n  IdentityFile ~/.ssh/id_rsa\n```\n\n## Create a CodeBuild project - codebuild-app\n\nRole Created automatically - `codebuild-app-codebuild-service-Role`\n\n## Create Pipeline in CodePipeline\n\nNew Role created `AWSCodePipelineServiceRole-xx-region-y-app-pipeline`\n\n## Commit to the repository and check if build get's triggered\n\n## Create EventBridge Rule\n\nRole created `Amazon_EventBridge_Invoke_CodeBuild_5492177`\n\nCreate a rule in default event bus\n\n## Create a PR and check if build gets triggered\n\n```bash\ngco -b \"feat_pr_3\"\necho \"test\" >> ReadMe.md\n```\n\n> Note: The submitted is rule/pr_event_rule but the branch name is `ref/heads/master`\n"
  },
  {
    "path": "home/cloud_providers/aws/taskset_aws_cloud_providers/task_005_trigger_codebuild_PR_events__eventbridge__lambda__dynamic_branches/ReadMe.md",
    "content": "# Trigger codebuild PR events using EventBridge (Lambda, Dynamic Branches)\n\n- [Trigger codebuild PR events using EventBridge (Lambda, Dynamic Branches)](#trigger-codebuild-pr-events-using-eventbridge-lambda-dynamic-branches)\n  - [Objective](#objective)\n  - [Reasearch Links and docs with relevant information](#reasearch-links-and-docs-with-relevant-information)\n  - [Create repo-a in Codecommit](#create-repo-a-in-codecommit)\n  - [Create repo-b in Codecommit](#create-repo-b-in-codecommit)\n  - [Create a codebuild project for repo-a - codebuild-repo-a](#create-a-codebuild-project-for-repo-a---codebuild-repo-a)\n  - [Create a codebuild project for repo-b - codebuild-repo-b](#create-a-codebuild-project-for-repo-b---codebuild-repo-b)\n  - [Create codepipeline for repo-a - codepipeline-repo-a](#create-codepipeline-for-repo-a---codepipeline-repo-a)\n  - [Create codepipeline for repo-b - codepipeline-repo-b](#create-codepipeline-for-repo-b---codepipeline-repo-b)\n  - [Create a lambda function to trigger respetive codebuilds](#create-a-lambda-function-to-trigger-respetive-codebuilds)\n  - [Create a rule for repo-a in EventBridge to trigger the lambda function](#create-a-rule-for-repo-a-in-eventbridge-to-trigger-the-lambda-function)\n  - [Create PR for repo-a](#create-pr-for-repo-a)\n    - [Check logs for lambda in cloudwatch when PR is created](#check-logs-for-lambda-in-cloudwatch-when-pr-is-created)\n    - [Logs in codebuild-repo-a](#logs-in-codebuild-repo-a)\n  - [Create a rule for repo-b in EventBridge to trigger the lambda function](#create-a-rule-for-repo-b-in-eventbridge-to-trigger-the-lambda-function)\n  - [Create PR for repo-b](#create-pr-for-repo-b)\n\n## Objective\n\n- The PR in codebuild get's raised always with the branch hardcoded in build project.\n- We want to trigger codebuild with PR branches which requires involvement of lambda function.\n\n## Reasearch Links and docs with relevant information\n\n[aws . codebuild . start-build](https://docs.aws.amazon.com/cli/latest/reference/codebuild/start-build.html)\n\nYou can start codebuild using commands dynamically. You can use the same command in lambda function to trigger the codebuild project.\n\n[docs.aws.amazon.com » Monitoring CodeCommit events in Amazon EventBridge and Amazon CloudWatch Events](https://docs.aws.amazon.com/codecommit/latest/userguide/monitoring-events.html#pullRequestStatusChanged)\n\nYou can get the payload from the event and use it in the lambda function for testing.\n\n[stackoverflow.com » Creating Lambda Function to Trigger Codebuild Project using Nodejs](https://stackoverflow.com/questions/56568921/creating-lambda-function-to-trigger-codebuild-project-using-nodejs)\n\nTrigger lambda using nodejs\n\n[docs.aws.amazon.com » Environment variables in build environments](https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html)\n\nYou can use environment variables in the buildspec.yaml file to get the source branch and use it in the buildspec.yaml file\n\n## Create repo-a in Codecommit\n\n## Create repo-b in Codecommit\n\n## Create a codebuild project for repo-a - codebuild-repo-a\n\n## Create a codebuild project for repo-b - codebuild-repo-b\n\n## Create codepipeline for repo-a - codepipeline-repo-a\n\n## Create codepipeline for repo-b - codepipeline-repo-b\n\n## Create a lambda function to trigger respetive codebuilds\n\nCopy the code `lambda.py` to the lambda function\n\nClick on deploy to deploy the lambda function (your code get updated in the function)\n\nClick on Test and it should ask you to create a sample event using which we can test the lambda function\n\nGet the event from [docs.aws.amazon.com » Monitoring CodeCommit events in Amazon EventBridge and Amazon CloudWatch Events](https://docs.aws.amazon.com/codecommit/latest/userguide/monitoring-events.html#pullRequestStatusChanged) and paste it in the event\n\nClick on Test\n\nYou will get error\n\nAdd the permissions w.r.t to lambda_service_role (`codebuild-dynamic-communicator-role-py375219`) to trigger the codebuild project\n\n```json\n\t\t{\n            \"Effect\": \"Allow\",\n            \"Action\": \"codebuild:StartBuild\",\n            \"Resource\": \"arn:aws:codebuild:xx-region-y:xxxxxxxxxxxxxx:project/*\"\n        }\n```\n\n## Create a rule for repo-a in EventBridge to trigger the lambda function\n\nSelect default event bus and create rule\n\nGive the arn of codecommit repo-a as source with events as PR_STATUS_CHANGE\n\nSelect the target as lambda function\n\nCreate rule\n\n## Create PR for repo-a\n\nAdd a `buildspec.yaml` file in repo-a to know the latest commit changes and update the codebuild-project-a\n\n```bash\n$ gst\nOn branch feat_pr_from_repo_a\nChanges not staged for commit:\n        deleted:    repo_a__commit_4\nUntracked files:\n        repo_a__commit_5\n```\n\nCreate the pull request\n\n### Check logs for lambda in cloudwatch when PR is created\n\n### Logs in codebuild-repo-a\n\nAdd commits to PR\n\n```bash\n$ gst\nOn branch feat_pr_from_repo_a\nChanges not staged for commit:\n        deleted:    repo_a__commit_5\n\nUntracked files:\n        repo_a__commit_6\n\n# Push the changes as new commit\n```\n\nSee the build is triggered against PR branch\n\nLatest commit information is available in build logs\n\n```bash\n[Container] 2024/04/27 04:19:26.605628 Running command ls -ltrh\ntotal 4.0K\n-rw-r--r-- 1 root root   0 Apr 27 04:19 repo_a__commit_6\n-rw-r--r-- 1 root root 273 Apr 27 04:19 buildspec.yaml\n```\n\n> Note: The branch name is refs/heads/feat_pr_from_repo_a\n\n## Create a rule for repo-b in EventBridge to trigger the lambda function\n\n## Create PR for repo-b\n\n```bash\n$ git branch --show-current\nfeat_pr_from_repo_b_branch1\n\n$ gst                      \nOn branch feat_pr_from_repo_b_branch1\nChanges not staged for commit:\n        deleted:    repo_a__test5\nUntracked files:\n        repo_a__test6\n# commit the changes\n```\n\nLogs of codebuild-repo-b\n\n```bash\n[Container] 2024/04/27 04:38:28.453263 Running command ls -ltrh\ntotal 4.0K\n-rw-r--r-- 1 root root   0 Apr 27 04:38 repo_a__test6\n-rw-r--r-- 1 root root 273 Apr 27 04:38 buildspec.yaml\n```\n\n> Note: The branch name is refs/heads/feat_pr_from_repo_b_branch1 and has latest commit\n"
  },
  {
    "path": "home/cloud_providers/aws/taskset_aws_cloud_providers/task_005_trigger_codebuild_PR_events__eventbridge__lambda__dynamic_branches/buildspec.yaml",
    "content": "version: 0.2\n\nphases:\n  install:\n    commands:\n      - echo \"Installing dependencies\"\n\n  pre_build:\n    commands:\n      - echo \"Pre-build step\"\n\n  build:\n    commands:\n      - echo \"Build phase\"\n      - ls -ltrh\n\n  post_build:\n    commands:\n      - echo \"Post-build step\"\n\n"
  },
  {
    "path": "home/cloud_providers/aws/taskset_aws_cloud_providers/task_005_trigger_codebuild_PR_events__eventbridge__lambda__dynamic_branches/lambda.py",
    "content": "import json\nimport boto3\n\ndef lambda_handler(event, context):\n    # Initialize the CodeBuild client\n    codebuild = boto3.client('codebuild')\n\n    # Print the raw event data\n    print(\"Raw Event Data: for repob : 1\")\n    print(json.dumps(event))\n\n    detail = event.get(\"detail\", {})\n    repository_names = detail.get(\"repositoryNames\", [])\n    source_version = detail.get(\"sourceReference\", \"\")\n    if source_version and repository_names:\n        try:\n            # If codecommit reponame is repo-a then codebuild project name will be codebuild-repo-a\n            project_name = \"codebuild-\" + repository_names[0]\n            print(f\"Project Name: {project_name}\")\n            # Trigger the build\n            response = codebuild.start_build(\n                projectName=project_name,\n                sourceVersion=source_version\n            )\n            print(\"CodeBuild Triggered Successfully\")\n            print(response)\n        except Exception as e:\n            print(\"Failed to trigger CodeBuild\")\n            print(str(e))\n    else:\n        print(\"No source version or project name provided, cannot trigger CodeBuild.\")\n\n    # Return a successful response\n    return {\n        \"statusCode\": 200,\n        \"body\": json.dumps(\"Event processed successfully\")\n    }\n"
  },
  {
    "path": "home/cloud_providers/aws/taskset_aws_cloud_providers/task_006_codebuild_codecommit_test_reports_gradle/ReadMe-static.md",
    "content": "# Building an Application with Spring Boot with Gradle Groovy, Unit Tests, and Reports\n\n- [Building an Application with Spring Boot with Gradle Groovy, Unit Tests, and Reports](#building-an-application-with-spring-boot-with-gradle-groovy-unit-tests-and-reports)\n  - [Run the application](#run-the-application)\n  - [Run Unit Tests](#run-unit-tests)\n  - [Show reports directory](#show-reports-directory)\n\nFor more info about the project check in folder `learn_java/task_006` in repo `learn_fullstack`.\n\n> If you are getting import package errors then you can try opening only specific task in VS Code by running `code .` in the terminal. Every task is a separate project and has its own dependencies.\n\n```bash\n$ java --version\nopenjdk 21.0.2 2024-01-16\nOpenJDK Runtime Environment Homebrew (build 21.0.2)\nOpenJDK 64-Bit Server VM Homebrew (build 21.0.2, mixed mode, sharing)\n```\n\n## Run the application\n\n```bash\n# Install the dependencies using gradle kotlin\n./gradlew build\n# Run the application\n./gradlew bootRun\n```\n\nOutput\n\n```bash\n...\nwelcomePageNotAcceptableHandlerMapping\n<==========---> 80% EXECUTING [6m 2s]\n> :bootRun\n```\n\nValidate the application is running\n\n```bash\ncurl http://localhost:8080\n```\n\nOutput\n\n```bash\nGreetings from Spring Boot!\n```\n\n## Run Unit Tests\n\nRun the tests\n\n```bash\n# Run the tests\n./gradlew test\n# In a typical development workflow with Gradle, if the source code or tests have not been modified since the last build, Gradle will consider the tasks up-to-date and will not rerun them\n# To force Gradle to rerun the tests, you can use the --rerun-tasks option\n./gradlew test --rerun-tasks\n```\n\nOutput\n\n```bash\nBUILD SUCCESSFUL in 567ms\n4 actionable tasks: 4 up-to-date\n```\n\n## Show reports directory\n\n```bash\n./gradlew showDirs\n```\n\n```bash\n$ ./gradlew showDirs\n\n\n> Task :showDirs\nReports directory: .../learn_java/taskset/task_006_building_an_application_with_spring_boot__gradle_groovy__unit_tests__reports/build/reports\nTest results directory: .../learn_java/taskset/task_006_building_an_application_with_spring_boot__gradle_groovy__unit_tests__reports/build/test-results\n\nBUILD SUCCESSFUL in 522ms\n1 actionable task: 1 executed\n```\n"
  },
  {
    "path": "home/cloud_providers/aws/taskset_aws_cloud_providers/task_006_codebuild_codecommit_test_reports_gradle/ReadMe.md",
    "content": "# Codebuild Codecommit Gradle Project Unit Tests Reports\n\n- [Codebuild Codecommit Gradle Project Unit Tests Reports](#codebuild-codecommit-gradle-project-unit-tests-reports)\n  - [Create a repository in CodeCommit : repo-d](#create-a-repository-in-codecommit--repo-d)\n  - [Create a codebuild project : repo-d](#create-a-codebuild-project--repo-d)\n  - [Go to the Report Groups section](#go-to-the-report-groups-section)\n\n[docs.aws.amazon.com » Create a test report](https://docs.aws.amazon.com/codebuild/latest/userguide/report-create.html)\n\n[Test Reports with AWS CodeBuild](https://aws.amazon.com/blogs/devops/test-reports-with-aws-codebuild)\n\n[docs.aws.amazon.com » Working with reports](https://docs.aws.amazon.com/codebuild/latest/userguide/test-report.html)\n\n[docs.aws.amazon.com » View test reports](https://docs.aws.amazon.com/codebuild/latest/userguide/test-view-reports.html)\n\n[docs.gradle.org » Test reporting](https://docs.gradle.org/current/userguide/java_testing.html#test_reporting)\n\n## Create a repository in CodeCommit : repo-d\n\n## Create a codebuild project : repo-d\n\nUse the `buildspec.yml` file in the root of the project. Make sure you give the right path to the test reports in the `buildspec.yml` file.\nThe files get generated in the project in directory `build/test-results`.\n\nTrigger build manually using `Start build` button.\n\n```yaml\nreports:\n  GradleReports:\n    files:\n      - '**/*.xml'\n    base-directory: 'build/test-results'\n```\n\n## Go to the Report Groups section\n\nYou should see `repo-d-GradleReports` group.\n\n[aws cli » list-report-groups](https://docs.aws.amazon.com/cli/latest/reference/codebuild/list-report-groups.html)\n[stackoverflow » turn off pager](https://stackoverflow.com/questions/60122188/how-to-turn-off-the-pager-for-aws-cli-return-value)\n\n```bash\nAWS_PAGER=\"\" aws codebuild list-report-groups \n```\n\nGet the reports\n\n```bash\nAWS_PAGER=\"\" aws codebuild list-reports-for-report-group --report-group-arn <>\n```\n"
  },
  {
    "path": "home/cloud_providers/aws/taskset_aws_cloud_providers/task_006_codebuild_codecommit_test_reports_gradle/buildspec.yaml",
    "content": "version: 0.2\n\nphases:\n  install:\n    runtime-versions:\n      java: corretto21  # Assuming corretto21 is available, replace with the specific version available in AWS CodeBuild\n    commands:\n      - echo \"Checking Java version...\"\n      - java -version\n      - echo \"Checking Gradle version...\"\n      - gradle -v\n\n  pre_build:\n    commands:\n      - echo \"Preparing build...\"\n      - echo \"Setting up JAVA_HOME...\"\n      - export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which javac))))\n      - echo $JAVA_HOME\n\n  build:\n    commands:\n      - echo \"Build started on `date`\"\n      - echo \"Running Gradle tasks...\"\n      - gradle clean build\n      - gradle test\n\n  post_build:\n    commands:\n      - echo \"Build and test steps completed\"\n\n\nreports:\n  GradleReports:\n    files:\n      - '**/*.xml'\n    base-directory: 'build/test-results'"
  },
  {
    "path": "home/cloud_providers/aws/taskset_aws_cloud_providers/task_007_codebuild_codecommit_test_reports_mvn/ReadMe.md",
    "content": "# AWS Codebuild Test Reports\n\n- [AWS Codebuild Test Reports](#aws-codebuild-test-reports)\n  - [Docs](#docs)\n  - [Create a repository in CodeCommit : repo-d](#create-a-repository-in-codecommit--repo-d)\n  - [Create a codebuild project : repo-d](#create-a-codebuild-project--repo-d)\n  - [Go to the Report Groups section](#go-to-the-report-groups-section)\n\n## Docs\n\n[stackoverflow.com » Viewing Unit Test and Coverage Reports Generated in AWS CodeBuild](https://stackoverflow.com/questions/49664524/viewing-unit-test-and-coverage-reports-generated-in-aws-codebuild)\n\n[docs.aws.amazon.com » View test reports](https://docs.aws.amazon.com/codebuild/latest/userguide/test-view-reports.html)\n\n[docs.aws.amazon.com » Working with reports](https://docs.aws.amazon.com/codebuild/latest/userguide/test-report.html)\n\n[aws.amazon.com » Test Reports with AWS CodeBuild](https://aws.amazon.com/blogs/devops/test-reports-with-aws-codebuild/)\n\n## Create a repository in CodeCommit : repo-d\n\n## Create a codebuild project : repo-d\n\nUse the `buildspec.yml` file in the root of the project. Make sure you give the right path to the test reports in the `buildspec.yml` file.\nThe files get generated in the project in directory `target/surefire-reports`.\n\n```yaml\nreports: #New\n  SurefireReports: # CodeBuild will create a report group called \"SurefireReports\".\n    files: #Store all of the files\n      - '**/*'\n    base-directory: 'target/surefire-reports' # Location of the report\n```\n\nTrigger build manually using `Start build` button.\n\n## Go to the Report Groups section\n\nYou should see `repo-d-SurefireReports` group.\n\n[aws cli » list-report-groups](https://docs.aws.amazon.com/cli/latest/reference/codebuild/list-report-groups.html)\n\n[stackoverflow » turn off pager](https://stackoverflow.com/questions/60122188/how-to-turn-off-the-pager-for-aws-cli-return-value)\n\n```bash\nAWS_PAGER=\"\" aws codebuild list-report-groups \n```\n\nGet the reports\n\n```bash\nAWS_PAGER=\"\" aws codebuild list-reports-for-report-group --report-group-arn <>\n```\n"
  },
  {
    "path": "home/cloud_providers/aws/taskset_aws_cloud_providers/task_007_codebuild_codecommit_test_reports_mvn/buildspec.yaml",
    "content": "version: 0.2\n\nphases:\n  install:\n    runtime-versions:\n      java: corretto21  # Assuming corretto21 is available, replace with the specific version available in AWS CodeBuild\n    commands:\n      - echo \"Checking Java version...\"\n      - java -version\n      - echo \"Checking mvn version...\"\n      - mvn -v\n  build:\n    commands:\n      - java -version\n      - echo Build started on `date`\n      - mvn surefire-report:report #Running this task to execute unit tests and generate report.\nreports: #New\n  SurefireReports: # CodeBuild will create a report group called \"SurefireReports\".\n    files: #Store all of the files\n      - '**/*'\n    base-directory: 'target/surefire-reports' # Location of the report"
  },
  {
    "path": "home/cloud_providers/aws/taskset_aws_cloud_providers/task_008_trigger_lambda_from_codecommit_using_event_bridge/ReadMe.md",
    "content": "# Trigger Lambda from Codecommit\n\n[https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-notify-lambda-cc.html](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-notify-lambda-cc.html)"
  },
  {
    "path": "home/cloud_providers/aws/taskset_aws_cloud_providers/task_009_pass_vars_dynamically_from_codebuild_to_codepipeline/ReadMe.md",
    "content": "# Pass variables dynamically from CodePipeline to CodeBuild\n\n[https://docs.aws.amazon.com/codepipeline/latest/userguide/tutorials-pipeline-variables.html](https://docs.aws.amazon.com/codepipeline/latest/userguide/tutorials-pipeline-variables.html)\n\n```bash\naws codepipeline start-pipeline-execution --name MyVariablesPipeline --variables name=timeout,value=2000\n```\n"
  },
  {
    "path": "home/cloud_providers/azure/ReadMe.md",
    "content": "# taskset_azure_cloud_providers\n\n> [Auto](https://github.com/codeaprendiz/learn_fullstack/blob/main/home/php/intermediate/taskset_intermediate_php/task_004_createGlobalMarkdownTable/generate-readme.php) generated ReadMe. Number of tasks: 11\n\n| Task     | Description                                                                                                                                                                      |\n|----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| task_001 | [task_001_capture_web_app_logs_with_app_service_diagnostics_logging](taskset_azure_cloud_providers/task_001_capture_web_app_logs_with_app_service_diagnostics_logging)           |\n| task_002 | [task_002_devbox](taskset_azure_cloud_providers/task_002_devbox)                                                                                                                 |\n| task_003 | [task_003_create_a_windows_virtual_machine](taskset_azure_cloud_providers/task_003_create_a_windows_virtual_machine)                                                             |\n| task_004 | [task_004_connect_to_windows_virtual_machine_via_rdp](taskset_azure_cloud_providers/task_004_connect_to_windows_virtual_machine_via_rdp)                                         |\n| task_005 | [task_005_create_a_generalized_image](taskset_azure_cloud_providers/task_005_create_a_generalized_image)                                                                         |\n| task_006 | [task_006_create_a_new_virtual_machine_from_a_managed_image](taskset_azure_cloud_providers/task_006_create_a_new_virtual_machine_from_a_managed_image)                           |\n| task_007 | [task_007_create_an_image_of_azure_vm_from_az_cli_and_provision_a_new_vm](taskset_azure_cloud_providers/task_007_create_an_image_of_azure_vm_from_az_cli_and_provision_a_new_vm) |\n| task_008 | [task_008_create_an_azure_virtual_machine](taskset_azure_cloud_providers/task_008_create_an_azure_virtual_machine)                                                               |\n| task_009 | [task_009_configure_network_access](taskset_azure_cloud_providers/task_009_configure_network_access)                                                                             |\n| task_010 | [task_010_create_a_storage_blob](taskset_azure_cloud_providers/task_010_create_a_storage_blob)                                                                                   |\n| task_011 | [task_011_deploy_a_container_app](taskset_azure_cloud_providers/task_011_deploy_a_container_app)                                                                                 |\n"
  },
  {
    "path": "home/cloud_providers/azure/taskset_azure_cloud_providers/task_001_capture_web_app_logs_with_app_service_diagnostics_logging/ReadMe.md",
    "content": "# Capture Web Application Logs with App Service Diagnostics Logging\n\n- [Capture Web Application Logs with App Service Diagnostics Logging](#capture-web-application-logs-with-app-service-diagnostics-logging)\n  - [Learning objectives](#learning-objectives)\n    - [Exercise - Enable and configure App Service application logging using the Azure portal](#exercise---enable-and-configure-app-service-application-logging-using-the-azure-portal)\n      - [Use Azure CLI to deploy the webapp](#use-azure-cli-to-deploy-the-webapp)\n      - [View live application logging with the log streaming service](#view-live-application-logging-with-the-log-streaming-service)\n    - [View live application logging with the log streaming service using Azure CLI](#view-live-application-logging-with-the-log-streaming-service-using-azure-cli)\n    - [Retrieve application log files](#retrieve-application-log-files)\n    - [Exercise - Retrieve Application Log Files using Azure CLI and Kudu](#exercise---retrieve-application-log-files-using-azure-cli-and-kudu)\n\n[learn.microsoft.com » Capture Web Application Logs with App Service Diagnostics Logging](https://learn.microsoft.com/en-us/training/modules/capture-application-logs-app-service/)\n\n## Learning objectives\n\n- Enable app logging on an Azure Web App.\n- View live app logging activity with the log streaming service.\n- Retrieve app log files from an app with Kudu or the Azure CLI.\n\n### [Exercise - Enable and configure App Service application logging using the Azure portal](https://learn.microsoft.com/en-us/training/modules/capture-application-logs-app-service/3-enable-and-configure-app-service-application-logging-using-the-azure-portal)\n\n#### Use Azure CLI to deploy the webapp\n\nSet the variables\n\n```bash\ngitRepo=https://github.com/MicrosoftDocs/mslearn-capture-application-logs-app-service\nappName=\"contosofashions$RANDOM\"\nappPlan=\"contosofashionsAppPlan\"\nresourceGroup=learn-73039af5-5f45-4665-837f-e4523655e6cd\nstorageAccount=sa$appName\nappLocation=southeastasia\n```\n\nDeploy the webapp\n\n```bash\naz appservice plan create --name $appPlan --resource-group $resourceGroup --location $appLocation --sku FREE\naz webapp create --name $appName --resource-group $resourceGroup --plan $appPlan --deployment-source-url $gitRepo\n```\n\nCreate Storage Account\n\n```bash\naz storage account create -n $storageAccount -g $resourceGroup -l $appLocation --sku Standard_LRS\n```\n\n#### View live application logging with the log streaming service\n\nTo open the log stream, run the following command.\n\n```bash\naz webapp log tail --name <app name> --resource-group <resource group name>\n```\n\nReset user-level credentials\n\n```bash\naz webapp deployment user set --user-name <name-of-user-to create> --password <new-password>\n```\n\nAfter you have created a set of credentials, run the following command to open the log stream. You're then prompted for the password.\n\n```bash\n# curl -u {username} https://{sitename}.scm.azurewebsites.net/api/logstream\n```\n\n### [View live application logging with the log streaming service using Azure CLI](https://learn.microsoft.com/en-us/training/modules/capture-application-logs-app-service/5-view-live-application-logging-activity-with-the-log-streaming-service-using-azure-cli)\n\nUse Azure CLI to view the live log stream\n\n```bash\n# az webapp log tail  --resource-group learn-73039af5-5f45-4665-837f-e4523655e6cd --name contosofashions<NNNNNN>\naz webapp log tail  --resource-group learn-73039af5-5f45-4665-837f-e4523655e6cd --name contosofashions10908\n2023-12-06T08:34:47  Welcome, you are now connected to log-streaming service. The default timeout is 2 hours. Change the timeout with the App Setting SCM_LOGSTREAM_TIMEOUT (in seconds). \n2023-12-06T08:35:16  PID[8672] Error       Error message, in the Page_Load method for About.aspx\n2023-12-06T08:35:34  PID[8672] Error       Error message, in the Page_Load method for Default.aspx\n\n# expetect logs\n```\n\n### Retrieve application log files\n\n- To download file system log files using the Azure CLI,\n\n```bash\naz webapp log download --log-file \\<_filename_\\>.zip  --resource-group \\<_resource group name_\\> --name \\<_app name_\\>\n```\n\n### [Exercise - Retrieve Application Log Files using Azure CLI and Kudu](https://learn.microsoft.com/en-us/training/modules/capture-application-logs-app-service/7-retrieve-application-log-files-from-an-application-using-azure-cli-and-kudu)\n\n- In Cloud Shell, to download the logs to contosofashions.zip in the cloud share storage,\n\n```bash\n# az webapp log download --log-file contosofashions.zip  --resource-group learn-73039af5-5f45-4665-837f-e4523655e6cd --name contosofashions<your-number>\naz webapp log download --log-file contosofashions.zip  --resource-group learn-73039af5-5f45-4665-837f-e4523655e6cd --name contosofashions10908\n```\n\n- In Cloud Shell, to show the log files contained in the downloaded contosofashions.zip file, run the following command.\n\n```bash\nzipinfo -1 contosofashions.zip\n```\n\n- In Cloud Shell, to extract just the app log file from the downloaded contosofashions.zip file, run the following command.\n\n```bash\nunzip -j contosofashions.zip LogFiles/Application/*.txt\n```\n\n- In Cloud Shell, to display the application log file, run the following command.\n\n```bash\ncode *.txt\n```\n\n"
  },
  {
    "path": "home/cloud_providers/azure/taskset_azure_cloud_providers/task_002_devbox/ReadMe.md",
    "content": "# Devbox\n\n- [Devbox](#devbox)\n  - [What is Microsoft Dev Box?](#what-is-microsoft-dev-box)\n  - [Key concepts for Microsoft Dev Box](#key-concepts-for-microsoft-dev-box)\n  - [Quickstart: Configure Microsoft Dev Box](#quickstart-configure-microsoft-dev-box)\n    - [Create a dev center](#create-a-dev-center)\n    - [Create a project](#create-a-project)\n    - [Create a dev box definition](#create-a-dev-box-definition)\n    - [Create a dev box pool](#create-a-dev-box-pool)\n    - [Provide access to a dev box project](#provide-access-to-a-dev-box-project)\n  - [Quickstart: Create and connect to a dev box by using the Microsoft Dev Box developer portal](#quickstart-create-and-connect-to-a-dev-box-by-using-the-microsoft-dev-box-developer-portal)\n    - [Create a dev box](#create-a-dev-box)\n    - [Connect to a dev box](#connect-to-a-dev-box)\n  - [Microsoft Dev Box architecture overview](#microsoft-dev-box-architecture-overview)\n    - [How does Microsoft Dev Box work?](#how-does-microsoft-dev-box-work)\n    - [Microsoft Dev Box architecture](#microsoft-dev-box-architecture)\n    - [Network connectivity](#network-connectivity)\n    - [Microsoft Intune integration](#microsoft-intune-integration)\n    - [Identity services](#identity-services)\n\n## [What is Microsoft Dev Box?](https://learn.microsoft.com/en-us/azure/dev-box/overview-what-is-microsoft-dev-box)\n\n- gives developers self-service access to ready-to-code cloud workstations called dev boxes\n- configure dev boxes with tools, source code, and prebuilt binaries\n- create your own customized image, or use a preconfigured image from Azure Marketplace\n- was designed with three organizational roles in mind: platform engineers, development team leads, and developers\n\n> A dev box is a virtual machine (VM) preconfigured with the tools and resources the developer needs for a project.\n\n![img](https://learn.microsoft.com/en-us/azure/dev-box/media/overview-what-is-microsoft-dev-box/dev-box-roles.png#lightbox)\n\n## [Key concepts for Microsoft Dev Box](https://learn.microsoft.com/en-us/azure/dev-box/concept-dev-box-concepts)\n\n## [Quickstart: Configure Microsoft Dev Box](https://learn.microsoft.com/en-us/azure/dev-box/quickstart-configure-dev-box-service)\n\nTwo phases\n\n- platform engineers configure the necessary Microsoft Dev Box resources through the Azure portal\n- users can proceed to the next phase, creating and managing their dev boxes through the developer portal\n\nsteps required to configure Microsoft Dev Box in the Azure portal.\n\n![img](https://learn.microsoft.com/en-us/azure/dev-box/media/quickstart-configure-dev-box-service/dev-box-build-stages.png#lightbox)\n\n### [Create a dev center](https://learn.microsoft.com/en-us/azure/dev-box/quickstart-configure-dev-box-service#create-a-dev-center)\n\nprovides a centralized place to manage a\n\n- collection of projects,\n- the configuration of available dev box images and sizes, and\n- the networking settings to enable access to organizational resources\n\n### [Create a project](https://learn.microsoft.com/en-us/azure/dev-box/quickstart-configure-dev-box-service#create-a-project)\n\n- Dev box projects enable you to manage team-level settings\n- These settings include providing access to development teams so developers can create dev boxes.\n\n### [Create a dev box definition](https://learn.microsoft.com/en-us/azure/dev-box/quickstart-configure-dev-box-service#create-a-dev-box-definition)\n\n- A dev box definition defines the VM image and the VM SKU (compute size + storage) that are used in the creation of the dev boxes.\n- The dev box definitions you create in a dev center are available for all projects associated with that dev center\n\n### [Create a dev box pool](https://learn.microsoft.com/en-us/azure/dev-box/quickstart-configure-dev-box-service#create-a-dev-box-pool)\n\n- A dev box pool is the collection of dev boxes that have the same settings, such as the dev box definition and network connection.\n- Developers that have access to the project in the dev center, can then choose to create a dev box from a dev box pool.\n- Dev box pools define the location of the dev boxes through the specified network connection\n\n### [Provide access to a dev box project](https://learn.microsoft.com/en-us/azure/dev-box/quickstart-configure-dev-box-service#provide-access-to-a-dev-box-project)\n\n- you must provide access for users through role assignments\n- Dev Box User role enables dev box users to create, manage, and delete their own dev boxes\n- You grant access for the user at the level of the project.\n\n## [Quickstart: Create and connect to a dev box by using the Microsoft Dev Box developer portal](https://learn.microsoft.com/en-us/azure/dev-box/quickstart-create-dev-box)\n\n### [Create a dev box](https://learn.microsoft.com/en-us/azure/dev-box/quickstart-create-dev-box#create-a-dev-box)\n\n### [Connect to a dev box](https://learn.microsoft.com/en-us/azure/dev-box/quickstart-create-dev-box#connect-to-a-dev-box)\n\n## [Microsoft Dev Box architecture overview](https://learn.microsoft.com/en-us/azure/dev-box/concept-dev-box-architecture)\n\n### [How does Microsoft Dev Box work?](https://learn.microsoft.com/en-us/azure/dev-box/concept-dev-box-architecture)\n\nThe following diagram gives an overview of the relationship between the different components in Microsoft Dev Box.\n\n![img](https://learn.microsoft.com/en-us/azure/dev-box/media/concept-dev-box-architecture/dev-box-concepts-overview.png#lightbox)\n\n- dev center\n  - dev center is the top-level resource for Microsoft Dev Box\n  - dev center contains the collection of projects and the shared resources for these projects, such as dev box definitions and network connections\n- project\n  - A dev box project is the point of access for development teams.\n  - You assign a developer the Dev Box User role to a project to grant the developer permissions to create dev boxes.\n- dev box definition\n  - dev box definition specifies the configuration of the dev boxes, such as the virtual machine image and compute resources for the dev boxes.\n  - can either choose a VM image from the Azure Marketplace, or use an Azure compute gallery to use custom VM images.\n- dev box pools\n  - project contains the collection of dev box pools\n  - dev box pool specifies the configuration for dev boxes, such as the dev box definition, the network connection, and other settings\n  - The network connection that is associated with a dev box pool determines where the dev box is hosted\n- dev box\n  - Developers can create a dev box from a dev box pool by using the developer portal.\n\n### [Microsoft Dev Box architecture](https://learn.microsoft.com/en-us/azure/dev-box/concept-dev-box-architecture#microsoft-dev-box-architecture)\n\nThe following diagrams show the logical architecture of Microsoft Dev Box.\n\n![img](https://learn.microsoft.com/en-us/azure/dev-box/media/concept-dev-box-architecture/dev-box-architecture-diagram.png#lightbox)\n\nFor the network connection, you can also choose between a Microsoft-hosted network connection, and an Azure network connection that you create in your own subscription\n\n### [Network connectivity](https://learn.microsoft.com/en-us/azure/dev-box/concept-dev-box-architecture#network-connectivity)\n\n- Network connections control where dev boxes are created and hosted, and enable you to connect to other Azure or corporate resources.\n- Depending on your level of control, you can use Microsoft-hosted network connections or bring your own Azure network connections.\n\n### [Microsoft Intune integration](https://learn.microsoft.com/en-us/azure/dev-box/concept-dev-box-architecture#microsoft-intune-integration)\n\n- Microsoft Intune is used to manage your dev boxes.\n- Every Dev Box user needs one Microsoft Intune license and can create multiple dev boxes.\n\n### [Identity services](https://learn.microsoft.com/en-us/azure/dev-box/concept-dev-box-architecture#identity-services)\n\nMicrosoft Dev Box uses Microsoft Entra ID and, optionally, on-premises Active Directory Domain Services (AD DS)."
  },
  {
    "path": "home/cloud_providers/azure/taskset_azure_cloud_providers/task_003_create_a_windows_virtual_machine/ReadMe.md",
    "content": "# [Create a Windows virtual machine](https://learn.microsoft.com/en-us/training/modules/create-windows-virtual-machine-in-azure/3-exercise-create-a-vm)\n\n[Training Module » Create a Windows virtual machine in Azure](https://learn.microsoft.com/en-us/training/modules/create-windows-virtual-machine-in-azure/)\n"
  },
  {
    "path": "home/cloud_providers/azure/taskset_azure_cloud_providers/task_004_connect_to_windows_virtual_machine_via_rdp/ReadMe.md",
    "content": "# [Connect to a Windows virtual machine using RDP](https://learn.microsoft.com/en-us/training/modules/create-windows-virtual-machine-in-azure/5-exercise-connect-to-a-windows-vm-using-rdp)\n\n[Training Module » Create a Windows virtual machine in Azure](https://learn.microsoft.com/en-us/training/modules/create-windows-virtual-machine-in-azure/)\n\nTo connect to an Azure VM with an RDP client, you'll need:\n\n- Public IP address of the VM (or private if the VM is configured to connect to your network)\n- Port number\n"
  },
  {
    "path": "home/cloud_providers/azure/taskset_azure_cloud_providers/task_005_create_a_generalized_image/ReadMe.md",
    "content": "# [Create a generalized image](https://learn.microsoft.com/en-us/training/modules/customize-windows-server-iaas-virtual-machine-images/2-create-generalized-image)\n\n[Training Module » Customize Windows Server IaaS Virtual Machine images](https://learn.microsoft.com/en-us/training/modules/customize-windows-server-iaas-virtual-machine-images/)\n\n[Video Reference : Create a managed image of a generalized virtual machine in Azure](https://learn.microsoft.com/en-us/training/modules/customize-windows-server-iaas-virtual-machine-images/4-create-managed-image-generalized-virtual-machine-azure)\n\n[what's the difference between deallocated and stopped ?](https://learn.microsoft.com/en-us/answers/questions/574969/whats-the-difference-between-deallocated-and-stopp)\n\n## What are VM images?\n\n- When you create a VM, you must specify a VM image that contains a generalized operating system and optionally, other preconfigured software.\n- Azure uses the image to create a new virtual hard disk (VHD) from which it can start your VM\n\n## What is a generalized image?\n\n- After you create a VM and customize it by configuring and installing additional applications according to your requirements, you can save it as a new image.\n- The new image will be a set of VHDs from which you can create additional VMs.\n- However, you need to clean up the image first, because when you create a VM the operating system data is updated with several items, including:\n\n  - The host name of your VM.\n  - The administrator username and credentials.\n  - Log files.\n  - Security identifiers for various operating system services.\n\nThese items must be reset to their default settings before you capture an image. When you reset these items in a VM, you generalize the VM.\n\n## Generalize a VM\n\n- Use the Sysprep.exe tool to generalize a Windows VM\n\n![img](https://learn.microsoft.com/en-us/training/wwl-azure/customize-windows-server-iaas-virtual-machine-images/media/m6-system-preparation.png)\n\n- After the VM has been shut down, you should deallocate it while it's in this clean state.\n\n> [!NOTE]  \n> The VM might display a state of Stopped, but it isn't deallocated.\n\nIf you're using the Azure CLI, run the following command instead:\n\n```bash\naz vm deallocate \\\n    --resource-group <resource group> \\\n    --name <virtual machine name>\n```\n\n> [!TIP]\n> When you use the Azure portal to create an image from a VM it automatically deallocates the VM.\n\n> [!IMPORTANT]\n> Keep in mind that you continue to pay for compute resources if your VM is stopped but not deallocated.\n"
  },
  {
    "path": "home/cloud_providers/azure/taskset_azure_cloud_providers/task_006_create_a_new_virtual_machine_from_a_managed_image/ReadMe.md",
    "content": "# [Create a new Virtual Machine from a managed image](https://learn.microsoft.com/en-us/training/modules/customize-windows-server-iaas-virtual-machine-images/3-create-new-virtual-machine-managed-image)\n\n[Video Reference - Create a Virtual Machine from a managed image](https://learn.microsoft.com/en-us/training/modules/customize-windows-server-iaas-virtual-machine-images/5-demonstration-create-virtual-machine-managed-image)\n\nAfter you have generalized the VM, you can create a managed image. You can then create new VMs from this managed image.\n\n> [!CAUTION]\n> Capturing a VM image from a VM will make the VM unusable. Furthermore, this action can't be undone.\n\n## Create a managed image from a generalized VM\n\nThe managed image you create will include all of the disks associated with the generalized VM\n\n> [!NOTE]\n> The VM is in stopped (deallocated) state before you create the image.\n\n```bash\naz image create \\\n    --name <image name> \\\n    --resource-group <resource group> \\\n    --source <generalized virtual machine>\n```\n\n## Create a new VM from a managed image\n\nTo create a new VM using Azure CLI, use the following command:\n\n```bash\naz vm create \\\n    --resource-group <resource group> \\\n    --name <new virtual machine name> \\\n    --image <image name> \\\n    --location <location of image>\n```\n\nIf you review your list of VMs in the Azure portal, after creating your new VM from your managed image you'll notice that the new VM displays the source as Image.\n"
  },
  {
    "path": "home/cloud_providers/azure/taskset_azure_cloud_providers/task_007_create_an_image_of_azure_vm_from_az_cli_and_provision_a_new_vm/ReadMe.md",
    "content": "# [Exercise - Create an image of an Azure VM from the Azure CLI and provision a new VM](https://learn.microsoft.com/en-us/training/modules/deploy-vms-from-vhd-templates/4-exercise-create-image-provision-vm?pivots=windows-cloud)\n\n## Set your default resource group\n\n```bash\naz configure --defaults group=\"learn-fcd3cc98-3fab-45d5-b679-f2ddfaf86f6c\"\n```\n\n## Create a virtual machine\n\nCreate\n\n```bash\naz vm create --name MyWindowsVM --image Win2019Datacenter --admin-username azureuser\n```\n\ninstall IIS and set up a default webpage:\n\n```bash\naz vm extension set --name CustomScriptExtension --vm-name MyWindowsVM --publisher Microsoft.Compute --settings '{\"commandToExecute\":\"powershell Add-WindowsFeature Web-Server; Add-Content -Path \\\"C:\\\\inetpub\\\\wwwroot\\\\Default.htm\\\" -Value $(hostname)\"}'\n```\n\nopen port 80 to the web server:\n\n```bash\naz vm open-port --name MyWindowsVM --port 80\n```\n\nget public ip\n\n```bash\necho http://$(az vm list-ip-addresses --name MyWindowsVM --query \"[].virtualMachine.network.publicIpAddresses[*].ipAddress\" --output tsv)\n```\n\n## Generalize the virtual machine\n\n![img](https://learn.microsoft.com/en-us/training/modules/deploy-vms-from-vhd-templates/media/4-sysprep.png)\n\ndeallocate the virtual machine\n\n```bash\naz vm deallocate --name MyWindowsVM\n```\n\ngeneralize the virtual machine:\n\n```bash\naz vm generalize --name MyWindowsVM\n```\n\n## Create a virtual machine image\n\n```bash\naz image create --name MyVMIMage --source MyWindowsVM\n```\n\n## Create a virtual machine by using the new image\n\nCreate a new virtual machine from the image:\n\n```bash\naz vm create --name MyVMFromImage --computer-name MyVMFromImage --image MyVMImage --admin-username azureuser\n```\n\nupdate the default web page with the server name:\n\n```bash\naz vm extension set --name CustomScriptExtension --vm-name MyVMFromImage --publisher Microsoft.Compute --settings '{\"commandToExecute\":\"powershell Clear-Content -Path \\\"C:\\\\inetpub\\\\wwwroot\\\\Default.htm\\\"; Add-Content -Path \\\"C:\\\\inetpub\\\\wwwroot\\\\Default.htm\\\" -Value $(hostname)\"}'\n```\n\nopen port 80 to the web server:\n\n```bash\naz vm open-port --name MyVMFromImage --port 80\n```\n\nget public ip\n\n```bash\necho http://$(az vm list-ip-addresses --name MyVMFromImage --query \"[].virtualMachine.network.publicIpAddresses[*].ipAddress\" --output tsv)\n```\n\n"
  },
  {
    "path": "home/cloud_providers/azure/taskset_azure_cloud_providers/task_008_create_an_azure_virtual_machine/ReadMe.md",
    "content": "# [Create an Azure virtual machine](https://learn.microsoft.com/en-us/training/modules/describe-azure-compute-networking-services/3-exercise-create-azure-virtual-machine)\n\nrun the following az vm create command to create a Linux VM:\n\n```bash\naz vm create --resource-group \"<resource_group>\" --name my-vm --public-ip-sku Standard --image Ubuntu2204 --admin-username azureuser --generate-ssh-keys\n```\n\nRun the following az vm extension set command to configure Nginx on your VM:\n\n```bash\naz vm extension set --resource-group \"<resource_group>\" --vm-name my-vm --name customScript --publisher Microsoft.Azure.Extensions --version 2.1 --settings '{\"fileUris\":[\"https://raw.githubusercontent.com/MicrosoftDocs/mslearn-welcome-to-azure/master/configure-nginx.sh\"]}' --protected-settings '{\"commandToExecute\": \"./configure-nginx.sh\"}'\n```"
  },
  {
    "path": "home/cloud_providers/azure/taskset_azure_cloud_providers/task_009_configure_network_access/ReadMe.md",
    "content": "# [Configure Network Access](https://learn.microsoft.com/en-us/training/modules/describe-azure-compute-networking-services/9-exercise-configure-network-access)\n\n> [!NOTE]\n> you can associate same NSG for multiple network interfaces and/or subnets\n\n> [!TIP]\n> A network interface (NIC) enables an Azure virtual machine (VM) to communicate with internet, Azure, and on-premises resources.\n\n[Create, change, or delete a network interface](https://learn.microsoft.com/en-us/azure/virtual-network/virtual-network-network-interface?tabs=azure-portal)\n\n[Network security groups](https://learn.microsoft.com/en-us/azure/virtual-network/network-security-groups-overview)\n\n[NSG-Can i assigned 1 NSG to multiple Instance , what is the limit](https://learn.microsoft.com/en-us/answers/questions/1353503/nsg-can-i-assigned-1-nsg-to-multiple-instance-what)\n\n## Access your web server\n\nList VMs\n\n```bash\naz vm list\n```\n\nGet VM IP\n\n```bash\nIPADDRESS=\"$(az vm list-ip-addresses --resource-group \"<resource_group>\" --name my-vm --query \"[].virtualMachine.network.publicIpAddresses[*].ipAddress\" --output tsv)\"\n```\n\ncurl to download homepage\n\n```bash\ncurl --connect-timeout 5 http://$IPADDRESS\n```\n\nOutput\n\n```bash\ncurl: (28) Failed to connect to 13.64.199.115 port 80 after 5002 ms: Timeout was reached\n```\n\n## List the current network security group rules\n\nRun the following az network nsg list command to list the network security groups that are associated with your VM:\n\n```bash\naz network nsg list --resource-group \"<resource_group>\" --query '[].name' --output tsv\n```\n\nOutput\n\n```bash\nmy-vmNSG\n```\n\nRun the following az network nsg rule list command to list the rules associated with the NSG named my-vmNSG:\n\n```bash\naz network nsg rule list --resource-group \"<resource_group>\" --nsg-name my-vmNSG\n```\n\n## Create the network security rule\n\nRun the following az network nsg rule create command to create a rule called allow-http that allows inbound access on port 80:\n\n```bash\naz network nsg rule create --resource-group \"<resource_group>\" --nsg-name my-vmNSG --name allow-http --protocol tcp --priority 100 --destination-port-range 80 --access Allow\n```\n\nValidate\n\n```bash\naz network nsg rule list --resource-group \"<resource_group>\" --nsg-name my-vmNSG --query '[].{Name:name, Priority:priority, Port:destinationPortRange, Access:access}' --output table\n```\n\nOutput\n\n```bash\nName               Priority    Port    Access\n-----------------  ----------  ------  --------\ndefault-allow-ssh  1000        22      Allow\nallow-http         100         80      Allow\n```\n\n## Access your web server again\n\n```bash\ncurl --connect-timeout 5 http://$IPADDRESS\n```\n\nOutput\n\n```bash\n<html><body><h2>Welcome to Azure! My name is my-vm.</h2></body></html>\n```\n\n## Resources created in security group\n\n```bash\naz resource list --resource-group <resource_group> --query \"[].type\" -o tsv\nMicrosoft.Storage/storageAccounts\nMicrosoft.Network/publicIPAddresses\nMicrosoft.Network/networkSecurityGroups\nMicrosoft.Network/virtualNetworks\nMicrosoft.Network/networkInterfaces\nMicrosoft.Compute/virtualMachines\nMicrosoft.Compute/disks\nMicrosoft.Compute/virtualMachines/extensions\n```\n"
  },
  {
    "path": "home/cloud_providers/azure/taskset_azure_cloud_providers/task_010_create_a_storage_blob/ReadMe.md",
    "content": "# [Create a storage blob](https://learn.microsoft.com/en-us/training/modules/describe-azure-storage-services/5-exercise-create-storage-blob)\n\n## Create a storage account\n\n## Work with blob storage\n\n## Change the access level of your blob\n"
  },
  {
    "path": "home/cloud_providers/azure/taskset_azure_cloud_providers/task_011_deploy_a_container_app/ReadMe.md",
    "content": "# [Exercise - Deploy a container app](https://learn.microsoft.com/en-us/training/modules/implement-azure-container-apps/3-exercise-deploy-app)\n\n## Prepare your environment\n\nInstall the Azure Container Apps extension for the CLI.\n\n```bash\naz extension add --name containerapp --upgrade\n```\n\nRegister the Microsoft.App namespace.\n\n```bash\naz provider register --namespace Microsoft.App\n```\n\nRegister the Microsoft.OperationalInsights provider for the Azure Monitor Log Analytics workspace\n\n```bash\naz provider register --namespace Microsoft.OperationalInsights\n```\n\nSet environment variables used later in this exercise. Replace <location> with a region near you.\n\n```bash\nRANOM=22388202393912\nmyRG=az204-appcont-rg\nmyLocation=eastus\nmyAppContEnv=az204-env-$RANDOM\n```\n\nCreate the resource group for your container app.\n\n```bash\naz group create \\\n    --name $myRG \\\n    --location $myLocation\n```\n\n## Create an environment\n\n```bash\naz containerapp env create \\\n    --name $myAppContEnv \\\n    --resource-group $myRG \\\n    --location $myLocation\n```\n\n## Create a container app\n\n```bash\naz containerapp create \\\n    --name my-container-app \\\n    --resource-group $myRG \\\n    --environment $myAppContEnv \\\n    --image mcr.microsoft.com/azuredocs/containerapps-helloworld:latest \\\n    --target-port 80 \\\n    --ingress 'external' \\\n    --query properties.configuration.ingress.fqdn\n```\n\n## Verify deployment\n\nSelect the link returned by the az containerapp create command to verify the container app is running.\n\n## Clean up resources\n\n```bash\naz group delete --name $myRG\n```"
  },
  {
    "path": "home/cloud_providers/gcp/ReadMe-static.md",
    "content": "# GCP Taskset\n\nReferences\n\n- [docs/regions-zones](https://cloud.google.com/compute/docs/regions-zones)\n- [https://cloud.google.com/about/locations](https://cloud.google.com/about/locations)\n- [docs/creating-managing-projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects)\n- [docs/grant-role-console](https://cloud.google.com/iam/docs/grant-role-console)\n- [shell/docs](https://cloud.google.com/shell/docs)\n- [architecture/identity](https://cloud.google.com/architecture/identity)\n- [docs/cloud-platform-resource-hierarchy](https://cloud.google.com/resource-manager/docs/cloud-platform-resource-hierarchy)\n- [https://cloud.google.com/products/calculator](https://cloud.google.com/products/calculator)\n- [service-accounts](https://www.cloudskillsboost.google/course_sessions/2028816/video/343131)\n- [cloud identify](https://www.cloudskillsboost.google/course_sessions/2028816/video/343132)\n"
  },
  {
    "path": "home/cloud_providers/gcp/ReadMe.md",
    "content": "# taskset_gcp_cloud_providers\n\n> [Auto](https://github.com/codeaprendiz/learn_fullstack/blob/main/home/php/intermediate/taskset_intermediate_php/task_004_createGlobalMarkdownTable/generate-readme.php) generated ReadMe. Number of tasks: 42\n\n| Task     | Description                                                                                                                                                                                                |\n|----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| task_001 | [task_001_create_budget__and_alerts](taskset_gcp_cloud_providers/task_001_create_budget__and_alerts)                                                                                                       |\n| task_001 | [task_001_intro_console_projects_iam_apis](taskset_gcp_cloud_providers/task_001_intro_console_projects_iam_apis)                                                                                           |\n| task_002 | [task_002_getting_started_with_cloud_market_place](taskset_gcp_cloud_providers/task_002_getting_started_with_cloud_market_place)                                                                           |\n| task_002 | [task_002_getting_started_with_cloud_market_place__lamp_stack](taskset_gcp_cloud_providers/task_002_getting_started_with_cloud_market_place__lamp_stack)                                                   |\n| task_003 | [task_003_vpc_networking_and_google_compute_engine](taskset_gcp_cloud_providers/task_003_vpc_networking_and_google_compute_engine)                                                                         |\n| task_004 | [task_004_getting_started_with_cloud_storage_and_cloud_sql__php](taskset_gcp_cloud_providers/task_004_getting_started_with_cloud_storage_and_cloud_sql__php)                                               |\n| task_005 | [task_005_getting_started_with_gke__nginx](taskset_gcp_cloud_providers/task_005_getting_started_with_gke__nginx)                                                                                           |\n| task_006 | [task_006_hello_cloud_run__node](taskset_gcp_cloud_providers/task_006_hello_cloud_run__node)                                                                                                               |\n| task_007 | [task_007_building_a_devops_pipeline__python](taskset_gcp_cloud_providers/task_007_building_a_devops_pipeline__python)                                                                                     |\n| task_008 | [task_008_deploying_app_to_app_engine_and_gke_and_cloudrun](taskset_gcp_cloud_providers/task_008_deploying_app_to_app_engine_and_gke_and_cloudrun)                                                         |\n| task_008 | [task_008_deploying_app_to_app_engine_and_gke_and_cloudrun__python](taskset_gcp_cloud_providers/task_008_deploying_app_to_app_engine_and_gke_and_cloudrun__python)                                         |\n| task_009 | [task_009_monitoring_applications_in_gcp__python](taskset_gcp_cloud_providers/task_009_monitoring_applications_in_gcp__python)                                                                             |\n| task_010 | [task_010_alerting_in_google_cloud](taskset_gcp_cloud_providers/task_010_alerting_in_google_cloud)                                                                                                         |\n| task_010 | [task_010_alerting_in_google_cloud__python](taskset_gcp_cloud_providers/task_010_alerting_in_google_cloud__python)                                                                                         |\n| task_011 | [task_011_service_monitoring__node](taskset_gcp_cloud_providers/task_011_service_monitoring__node)                                                                                                         |\n| task_011 | [task_011_service_monitoring__node_app](taskset_gcp_cloud_providers/task_011_service_monitoring__node_app)                                                                                                 |\n| task_012 | [task_012_monitoring_and_dashboarding_multiple_projects_from_a_single_workspace](taskset_gcp_cloud_providers/task_012_monitoring_and_dashboarding_multiple_projects_from_a_single_workspace)               |\n| task_012 | [task_012_monitoring_and_dashboarding_multiple_projects_from_a_single_workspace__nginx](taskset_gcp_cloud_providers/task_012_monitoring_and_dashboarding_multiple_projects_from_a_single_workspace__nginx) |\n| task_013 | [task_013_compute_logging_and_monitoring](taskset_gcp_cloud_providers/task_013_compute_logging_and_monitoring)                                                                                             |\n| task_014 | [task_014_log_analysis](taskset_gcp_cloud_providers/task_014_log_analysis)                                                                                                                                 |\n| task_014 | [task_014_log_analysis_cloud_run__node](taskset_gcp_cloud_providers/task_014_log_analysis_cloud_run__node)                                                                                                 |\n| task_015 | [task_015_cloud_audit_logs](taskset_gcp_cloud_providers/task_015_cloud_audit_logs)                                                                                                                         |\n| task_015 | [task_015_cloud_storage_audit_logs](taskset_gcp_cloud_providers/task_015_cloud_storage_audit_logs)                                                                                                         |\n| task_016 | [task_016_analyzing_network_traffic_with_vpc_flow_logs](taskset_gcp_cloud_providers/task_016_analyzing_network_traffic_with_vpc_flow_logs)                                                                 |\n| task_017 | [task_017_application_performance_management](taskset_gcp_cloud_providers/task_017_application_performance_management)                                                                                     |\n| task_017 | [task_017_application_performance_management__python_and_nodejs](taskset_gcp_cloud_providers/task_017_application_performance_management__python_and_nodejs)                                               |\n| task_018 | [task_018_2inst_2buckets_2iam](taskset_gcp_cloud_providers/task_018_2inst_2buckets_2iam)                                                                                                                   |\n| task_019 | [task_019_working_with_cloud_build](taskset_gcp_cloud_providers/task_019_working_with_cloud_build)                                                                                                         |\n| task_020 | [task_020_deploying_google_kubernetes_engine](taskset_gcp_cloud_providers/task_020_deploying_google_kubernetes_engine)                                                                                     |\n| task_021 | [task_021_creating_google_kubernetes_engine_deployments](taskset_gcp_cloud_providers/task_021_creating_google_kubernetes_engine_deployments)                                                               |\n| task_022 | [task_022_configuring_persistent_storage_for_google_kubernetes_engine](taskset_gcp_cloud_providers/task_022_configuring_persistent_storage_for_google_kubernetes_engine)                                   |\n| task_023 | [task_023_anthos_service_mesh_walkthrough](taskset_gcp_cloud_providers/task_023_anthos_service_mesh_walkthrough)                                                                                           |\n| task_024 | [task_024_observing_anthos_services](taskset_gcp_cloud_providers/task_024_observing_anthos_services)                                                                                                       |\n| task_025 | [task_025_managing_traffic_with_anthos_service_mesh](taskset_gcp_cloud_providers/task_025_managing_traffic_with_anthos_service_mesh)                                                                       |\n| task_026 | [task_026_securing_traffic_through_anthos_service_mesh](taskset_gcp_cloud_providers/task_026_securing_traffic_through_anthos_service_mesh)                                                                 |\n| task_027 | [task_027_cloud_source_repositories_overview](taskset_gcp_cloud_providers/task_027_cloud_source_repositories_overview)                                                                                     |\n| task_028 | [task_028_managing_deployments_using_kubernetes_engine](taskset_gcp_cloud_providers/task_028_managing_deployments_using_kubernetes_engine)                                                                 |\n| task_029 | [task_029_trouble_shooting_workloads_on_gke_for_sre](taskset_gcp_cloud_providers/task_029_trouble_shooting_workloads_on_gke_for_sre)                                                                       |\n| task_030 | [task_030_minimal_nodejs_app_dockerize_google_artifact_registry](taskset_gcp_cloud_providers/task_030_minimal_nodejs_app_dockerize_google_artifact_registry)                                               |\n| task_031 | [task_031_hello_node_kubernetes__node](taskset_gcp_cloud_providers/task_031_hello_node_kubernetes__node)                                                                                                   |\n| task_032 | [task_032_setting_up_jenkins_on_kubernetes_engine](taskset_gcp_cloud_providers/task_032_setting_up_jenkins_on_kubernetes_engine)                                                                           |\n| task_033 | [task_033_continuous_delivery_with_jenkins_in_kubernetes_engine](taskset_gcp_cloud_providers/task_033_continuous_delivery_with_jenkins_in_kubernetes_engine)                                               |\n"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_001_create_budget__and_alerts/ReadMe.md",
    "content": "## Create budget and alerts\n\n[billing/docs/how-to/budgets](https://cloud.google.com/billing/docs/how-to/budgets)\n\n"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_001_intro_console_projects_iam_apis/ReadMe.md",
    "content": "# Get Familiar With Console, Projects, Roles And Permissions, APIs And Services\n\n\n[https://www.cloudskillsboost.google](https://www.cloudskillsboost.google)\n\n[Select - DevOps Engineer, SRE Learning Path](https://www.cloudskillsboost.google/paths)\n\n**High Level Objectives**\n- Searching though available products and services in the GCP console.\n- Accessing projects in console.\n- Accessing roles and permissions in console i.e. Identify and Access Management\n- Enable specific API for any product\n\n\n\n**Skills**\n- gcp\n- gcp-console\n- gcp-projects\n- gcp-iam\n- gcp-apis\n\n\n\n> Task : Searching through the available products and services\n\n## Project\n\n\n- A Google Cloud [project](https://cloud.google.com/docs/overview/#projects) is an organizing entity for your Google Cloud resources. It often contains resources and services.\n- Your project has a name, number, and ID\n\n> Task : How do we see all the projects\n\n## Roles and permissions\n\n[IAM Overview](https://cloud.google.com/iam/docs/overview)\n[course_sessions/2028816/video/343130](https://www.cloudskillsboost.google/course_sessions/2028816/video/343130)\n\n- Google Cloud also contains a collection of permissions and roles that define who has access to what resources\n- You can use the [CloudIAM](https://cloud.google.com/iam/) console for the same.\n\n> Task : How do we navigate to CloudIAM console\n\n\n## APIs And Services\n\n- When you create your own Google Cloud projects outside of the lab environment, you will have to enable APIs yourself.\n\n> Task : Enable the Dialogflow API\n\n\n\n\n"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_002_getting_started_with_cloud_market_place/ReadMe.md",
    "content": "# Getting Started With Cloud Marketplace\n\n\n[https://www.cloudskillsboost.google](https://www.cloudskillsboost.google)\n\n[Select - DevOps Engineer, SRE Learning Path](https://www.cloudskillsboost.google/paths)\n\n> Task :  We will use the Cloud MarketPlace to deploy a LAMP stack\n\n## High Level Tasks\n\n- Search for \"LAMP Packaged by Bitnami\" in the Marketplace\n- Launch\n- You should see the status as deployed as it is completed\n- Go to the site address\n- SSH\n- In the created SSH window\n\n```bash\ncd /opt/bitnami\n\nsudo sh -c 'echo \"<?php phpinfo(); ?>\" > apache2/htdocs/phpinfo.php'\n```\n\n- Open the `SITE_ADDRESS` again to view your changes"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_002_getting_started_with_cloud_market_place__lamp_stack/ReadMe.md",
    "content": "# Getting Started With Cloud Marketplace\n\n[https://www.cloudskillsboost.google](https://www.cloudskillsboost.google)\n\n[Select - DevOps Engineer, SRE Learning Path](https://www.cloudskillsboost.google/paths)\n\n**High Level Objectives**\n- To launch a LAMP stack from GCP marketplace\n- Validate the changes by going to the public endpoint created\n\n\n\n**Skills**\n- gcp\n- cloud-marketplace\n\n\n\n\n\n> Task :  We will use the Cloud MarketPlace to deploy a LAMP stack\n\n## High Level Tasks\n\n- Search for \"LAMP Packaged by Bitnami\" in the Marketplace\n- Launch\n- You should see the status as deployed as it is completed\n- Go to the site address\n- SSH\n- In the created SSH window\n\n```bash\ncd /opt/bitnami\n\nsudo sh -c 'echo \"<?php phpinfo(); ?>\" > apache2/htdocs/phpinfo.php'\n```\n\n- Open the `SITE_ADDRESS` again to view your changes"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_003_vpc_networking_and_google_compute_engine/ReadMe.md",
    "content": "# Getting started with VPC Networking and Google Compute Engine\n\n[https://www.cloudskillsboost.google](https://www.cloudskillsboost.google)\n\n[Select - DevOps Engineer, SRE Learning Path](https://www.cloudskillsboost.google/paths)\n\n**High Level Objectives**\n- Explore the default network\n- Delete the firewall rules and default network\n- Create VPC network and VM instances\n- Explore the connectivity for VM instances\n\n\n\n**Skills**\n- gcp\n- gcp-networking\n- gcp-compute-engine\n- gcp-vpc-networking\n- gcp-vm-instance\n- gcp-ssh\n\n\n\n## Explore the default network\n\n\n- View the subnets\n- View the routes\n  - Notice that there is a route for each subnet and one for the Default internet gateway (0.0.0.0/0)\n- View the Firewall rules\n  - there are 4 Ingress firewall rules for the default network:\n     - default-allow-icmp\n     - default-allow-rdp\n     - default-allow-ssh\n     - default-allow-internal\n     - Note: These firewall rules allow ICMP, RDP, and SSH ingress traffic from anywhere (0.0.0.0/0) and all TCP, UDP, and ICMP traffic within the network (10.128.0.0/9). The Targets, Filters, Protocols/ports, and Action columns explain these rules.\n\n## Delete the Firewall Rules and Default Network (only for testing, don't do it in production :) )\n\n- Delete the Firewall rules\n- Delete the default network\n- Try to create a VM instance\n  - Notice the error\n\n\n## Create a VPC network and VM instances\n\n- Create a VPC using automode `mynetwork`\n- Create a VM instance in us-central1\n\n| Property | Value         |\n|----------|---------------|\n| Name     | mynet-us-vm   |\n| Region   | us-central1   |\n| Zone     | us-central1-c |\n\n- The Internal IP should be 10.128.0.2 because 10.128.0.1 is reserved for the gateway and you have not configured any other instances in that subnet.\n\n- Create a VM instance in europe-central2\n\n| Property | Value             |\n|----------|-------------------|\n| Name     | mynet-eu-vm       |\n| Region   | europe-central2   |\n| Zone     | europe-central2-a |\n\n- The Internal IP should be 10.186.0.2 because 10.186.0.1 is reserved for the gateway and you have not configured any other instances in that subnet.\n\n## Explore the connectivity for VM instances\n\n- For mynet-us-vm, click SSH to launch a terminal and connect.\n\n```bash\nping -c 3 <Enter mynet-eu-vm's internal IP here>\nping -c 3 <Enter mynet-eu-vm's external IP here>\n```\n\n- Remove the allow-icmp firewall rules\n\n```bash\nping -c 3 <Enter mynet-eu-vm's internal IP here>\n# The 100% packet loss indicates that you cannot ping mynet-eu-vm's external IP. This is expected because you deleted the allow-icmp firewall rule!\nping -c 3 <Enter mynet-eu-vm's external IP here>\n```\n\n- Remove the allow-custom firewall rules\n\n```bash\n# Note: The 100% packet loss indicates that you cannot ping mynet-eu-vm's internal IP. This is expected because you deleted the allow-custom firewall rule!\nping -c 3 <Enter mynet-eu-vm's internal IP here>\n```\n\n- Remove the allow-ssh firewall rules\n  - Note: The Connection failed message indicates that you cannot SSH to mynet-us-vm because you deleted the allow-ssh firewall rule!\n"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_004_getting_started_with_cloud_storage_and_cloud_sql__php/ReadMe.md",
    "content": "# Getting Started with Cloud Storage and Cloud SQL\n\n[https://www.cloudskillsboost.google](https://www.cloudskillsboost.google)\n\n[Select - DevOps Engineer, SRE Learning Path](https://www.cloudskillsboost.google/paths)\n\n**High Level Objectives**\n- Deploy a webserver VM instance\n- Create a Cloud Storage bucket using gsutil command line\n- Create a Cloud SQL instance\n- Configure the application in compute engine instance to use Cloud SQL\n- Configure the application in compute engine instance to use Cloud  Storage Object\n\n\n\n**Skills**\n- gcp\n- cloud storage\n- cloud sql\n- php\n- cloud storage object\n- vm instance\n\n## Deploy a WebServer VM instance\n\n- Create instance `bloghost` with `Debian GNU/Linux 11 (bullseye)` image and ensure that you allow `http` traffic\n- Add the following startup script\n\n```bash\napt-get update\napt-get install apache2 php php-mysql -y\nservice apache2 restart\n```\n\n## Create a Cloud Storage bucket using the gsutil command line\n\n- Use cloudshell for the following\n\n```bash\nexport LOCATION=US\n\necho $DEVSHELL_PROJECT_ID \n\n## Create bucket\ngsutil mb -l $LOCATION gs://$DEVSHELL_PROJECT_ID\n\n## Copy image from public bucket to your local i.e. cloudshell\ngsutil cp gs://cloud-training/gcpfci/my-excellent-blog.png my-excellent-blog.png\n\n## Copy from cloudshell to new bucket\ngsutil cp my-excellent-blog.png gs://$DEVSHELL_PROJECT_ID/my-excellent-blog.png\n\n## Modify the Access Control List of the object you just created so that it is readable by everyone\ngsutil acl ch -u allUsers:R gs://$DEVSHELL_PROJECT_ID/my-excellent-blog.png\n```\n\n## Create the Cloud SQL instance\n\n- Create SQL instance with db engine as MySQL, instance id as `blog-db`, password as `rootpass`\n- Use Single Zone\n- Wait for it to get created\n- Go to `Users` and add user `blogdbuser` and give password as `blogdbuserpassword`\n- Go to `Connections`. Give name as `web front end`. For external IP give `bloghostVM_public_ip/32`\n\n\n## Configure an application in a Compute Engine instance to use Cloud SQL\n\n- SSH to bloghost\n- Run the following\n\n```bash\ncd /var/www/html\nsudo vi index.php\n```\n- and paste content into the file\n\n```php\n<html>\n<head><title>Welcome to my excellent blog</title></head>\n<body>\n<h1>Welcome to my excellent blog</h1>\n<?php\n $dbserver = \"CLOUDSQLIP\";\n$dbuser = \"blogdbuser\";\n$dbpassword = \"DBPASSWORD\";\n// In a production blog, we would not store the MySQL\n// password in the document root. Instead, we would store it in a\n// configuration file elsewhere on the web server VM instance.\n$conn = new mysqli($dbserver, $dbuser, $dbpassword);\nif (mysqli_connect_error()) {\n        echo (\"Database connection failed: \" . mysqli_connect_error());\n} else {\n        echo (\"Database connection succeeded.\");\n}\n?>\n</body></html>\n```\n\n- Save and restart\n\n```bash\nsudo service apache2 restart\n```\n\n- Visit `bloghostVM_publicIP/index.php`\n- Edit the file and add `CLOUDSQLIP` and `DBPASSWORD`\n- Restart and visit again\n\n## Configure an application in a Compute Engine instance to use a Cloud Storage object\n\n- Go to buckets and copy public url of `my-excellent-blog.png`\n- Add this to index.php\n\n```html\n <img src='PUBLIC_URL'>\n```\n- Restart and visit again\n\n"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_004_getting_started_with_cloud_storage_and_cloud_sql__php/index.php",
    "content": "<html>\n<head><title>Welcome to my excellent blog</title></head>\n<body>\n<h1>Welcome to my excellent blog</h1>\n<?php\n$dbserver = \"CLOUDSQLIP\";\n$dbuser = \"blogdbuser\";\n$dbpassword = \"DBPASSWORD\";\n// In a production blog, we would not store the MySQL\n// password in the document root. Instead, we would store it in a\n// configuration file elsewhere on the web server VM instance.\n$conn = new mysqli($dbserver, $dbuser, $dbpassword);\nif (mysqli_connect_error()) {\n        echo (\"Database connection failed: \" . mysqli_connect_error());\n} else {\n        echo (\"Database connection succeeded.\");\n}\n?>\n</body></html>"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_005_getting_started_with_gke__nginx/ReadMe.md",
    "content": "# Getting started with GKE\n\n[https://www.cloudskillsboost.google](https://www.cloudskillsboost.google)\n\n[Select - DevOps Engineer, SRE Learning Path](https://www.cloudskillsboost.google/paths)\n\n**High Level Objectives**\n- Check if required APIs are enabled\n- Start a Kubernetes Engine Cluster \n- Run and deploy nginx container\n- Expose deployment via LB\n- Validate the changes by going to the external IP created.\n\n\n\n**Skills**\n- gcp\n- gke\n- kubernetes\n- container\n- nginx\n- loadbalancer\n- cloudshell\n- external ip\n\n\n## Check if the APIs are enabled\n\n- Kubernetes Engine API\n- Container Registry API\n\n## Start a Kubernetes Engine cluster \n\n- Run the following commands in cloudshell\n\n```bash\n# Set the zone\nexport MY_ZONE=us-central1-a\n\n# Create k8s cluster\ngcloud container clusters create webfrontend --zone $MY_ZONE --num-nodes 2\n```\n\n- Once completed\n\n```bash\nkubectl get nodes\n```\n\n## Run and deploy a container\n\n```bash\n# Deploy nginx container\nkubectl create deploy nginx --image=nginx:1.17.10\n\n# Check the pods\nkubectl get pods\n\n# Expose the deployment to the internet by creating the LoadBalancer type of Service\nkubectl expose deployment nginx --port 80 --type LoadBalancer\n\n# Check the services\nkubectl get services\n\n# Note no external IP is created yet.\n```\n\n- Once the external IP is created, visit the pubic IP. You should see the nginx page.\n"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_006_hello_cloud_run__node/ReadMe.md",
    "content": "# Hello Cloud Run\n\n[https://www.cloudskillsboost.google](https://www.cloudskillsboost.google)\n\n[Select - DevOps Engineer, SRE Learning Path](https://www.cloudskillsboost.google/paths)\n\n**High Level Objectives**\n- Enable CloudRun API, configure Shell env\n- Write a sample minimal node application\n- Containerize app using CloudBuild\n- Upload to container Registry\n- Deploy the application to CloudRun\n\n\n\n**Skills**\n- gcp\n- cloudrun\n- nodejs\n- docker\n- cloudbuild\n- artifactregistry\n- cloudshell\n- webpreview\n- cloudshelleditor\n\n\n## Enable the Cloud Run API and configure your Shell environment\n\n- Run the following in cloud shell\n\n```bash\ngcloud services enable run.googleapis.com\n\n## Set the compute region\ngcloud config set compute/region us-central1\n\n## Set the LOCATION ENV variable\nLOCATION=\"us-central1\"\n```\n\n\n## Write the sample node application\n\n- Run the following in cloud shell\n\n```bash\nmkdir helloworld && cd helloworld\ntouch package.json\n```\n\n- package.json\n\n```json\n{\n  \"name\": \"helloworld\",\n  \"description\": \"Simple hello world sample in Node\",\n  \"version\": \"1.0.0\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"start\": \"node index.js\"\n  },\n  \"dependencies\": {\n    \"express\": \"^4.17.1\"\n  }\n}\n```\n\n- Create file `index.js`\n\n```bash\ntouch index.js\n```\n\n- index.js\n\n```\nconst express = require('express');\nconst app = express();\nconst port = process.env.PORT || 8080;\napp.get('/', (req, res) => {\n  const name = process.env.NAME || 'World';\n  res.send(`Hello ${name}!`);\n});\napp.listen(port, () => {\n  console.log(`helloworld: listening on port ${port}`);\n});\n```\n\n## Containerize your app using CloudBuild and upload it to Artifact Registry\n\n- Create a docker file\n\n- Dockerfile\n\n```\n# Use the official lightweight Node.js 12 image.\n# https://hub.docker.com/_/node\nFROM node:12-slim\n# Create and change to the app directory.\nWORKDIR /usr/src/app\n# Copy application dependency manifests to the container image.\n# A wildcard is used to ensure copying both package.json AND package-lock.json (when available).\n# Copying this first prevents re-running npm install on every code change.\nCOPY package*.json ./\n# Install production dependencies.\n# If you add a package-lock.json, speed your build by switching to 'npm ci'.\n# RUN npm ci --only=production\nRUN npm install --only=production\n# Copy local code to the container image.\nCOPY . ./\n# Run the web service on container startup.\nCMD [ \"npm\", \"start\" ]\n```\n\n\n- Let's build the container using `CloudBuild` \n\n```bash\ngcloud builds submit --tag gcr.io/$GOOGLE_CLOUD_PROJECT/helloworld\n\n## List the images\ngcloud container images list\n```\n\n- You can go to `CloudBuild` on the console as well and check\n\n- Run the image locally\n\n```bash\ndocker run -d -p 8080:8080 gcr.io/$GOOGLE_CLOUD_PROJECT/helloworld\n```\n\n- Preview the same in the WebPreview\n\n## Deploy to Cloud Run\n\n- Run the following in cloud shell\n\n```bash\n# allow-unauthenticated flag in the command above makes your service publicly accessible.\n# When prompted confirm the service name by pressing Enter\ngcloud run deploy --image gcr.io/$GOOGLE_CLOUD_PROJECT/helloworld --allow-unauthenticated --region=$LOCATION\n\n# On success, the command line displays the service URL\n```\n\n- You can now visit your deployed container by opening the service URL in any browser window.\n\n\n## Clean up\n\n```bash\n# Delete the helloworld container image\ngcloud container images delete gcr.io/$GOOGLE_CLOUD_PROJECT/helloworld\n\n# delete the cloudrun service\ngcloud run services delete helloworld --region=us-central1\n```"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_006_hello_cloud_run__node/hello-world-node/Dockerfile",
    "content": "# Use the official lightweight Node.js 12 image.\n# https://hub.docker.com/_/node\nFROM node:12-slim\n# Create and change to the app directory.\nWORKDIR /usr/src/app\n# Copy application dependency manifests to the container image.\n# A wildcard is used to ensure copying both package.json AND package-lock.json (when available).\n# Copying this first prevents re-running npm install on every code change.\nCOPY package*.json ./\n# Install production dependencies.\n# If you add a package-lock.json, speed your build by switching to 'npm ci'.\n# RUN npm ci --only=production\nRUN npm install --only=production\n# Copy local code to the container image.\nCOPY . ./\n# Run the web service on container startup.\nCMD [ \"npm\", \"start\" ]"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_006_hello_cloud_run__node/hello-world-node/index.js",
    "content": "const express = require('express');\nconst app = express();\nconst port = process.env.PORT || 8080;\napp.get('/', (req, res) => {\n  const name = process.env.NAME || 'World';\n  res.send(`Hello ${name}!`);\n});\napp.listen(port, () => {\n  console.log(`helloworld: listening on port ${port}`);\n});"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_006_hello_cloud_run__node/hello-world-node/package.json",
    "content": "{\n  \"name\": \"helloworld\",\n  \"description\": \"Simple hello world sample in Node\",\n  \"version\": \"1.0.0\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"start\": \"node index.js\"\n  },\n  \"dependencies\": {\n    \"express\": \"^4.17.1\"\n  }\n}"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_007_building_a_devops_pipeline__python/Dockerfile",
    "content": "FROM python:3.7\nWORKDIR /app\nCOPY . .\nRUN pip install gunicorn\nRUN pip install -r requirements.txt\nENV PORT=80\nCMD exec gunicorn --bind :$PORT --workers 1 --threads 8 main:app"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_007_building_a_devops_pipeline__python/ReadMe.md",
    "content": "# Building a DevOps Pipeline\n\n[https://www.cloudskillsboost.google](https://www.cloudskillsboost.google)\n\n[Select - DevOps Engineer, SRE Learning Path](https://www.cloudskillsboost.google/paths)\n\n**High Level Objectives**\n- Create a Git repository\n- Create a simple Python application\n- Test Your web application in Cloud Shell\n- Define a Docker build\n- Manage Docker images with Cloud Build and Container Registry\n- Automate builds with triggers\n- Test your build changes\n\n\n\n**Skills**\n- gcp\n- devops\n- python\n- docker\n- cloud-build\n- cloud-shell\n- cloud-registry\n\n\n\n\n\n![.images/devops-pipeline.png](.images/devops-pipeline.png)\n\n\n\n\n### Create a Git repository\n\n- Use service `Source Repositories`\n- Name : `devops-repo`\n- Create\n- Activate CloudShell\n- Clone the repo\n\n```bash\nmkdir gcp-course\ncd gcp-course\ngcloud source repos clone devops-repo\ncd devops-repo\n```\n\n### Create a simple Python application\n\n- Create the req files and folders\n- Run the following\n\n\n```bash\ncd ~/gcp-course/devops-repo\ngit add --all\n\ngit config --global user.email \"you@example.com\"\ngit config --global user.name \"Your Name\"\n\ngit commit -a -m \"Initial Commit\"\n\ngit push origin master\n```\n\n- Create Dockerfile\n\n### Manage Docker images with Cloud Build and Container Registry\n\n```bash\ncd ~/gcp-course/devops-repo\necho $DEVSHELL_PROJECT_ID\ngcloud builds submit --tag gcr.io/$DEVSHELL_PROJECT_ID/devops-image:v0.1 .\n```\n\n- Check the CloudBuild and ContainerRegistry now\n\n- Let's deploy the container to compute\n\n> Container Image : gcr.io/<your-project-id-here>/devops-image:v0.1\n\n- Allow http traffic\n\n```bash\ncd ~/gcp-course/devops-repo\ngit add --all\n\ngit commit -am \"Added Docker Support\"\n\ngit push origin master\n```\n\n- Visit the public IP now\n\n\n### Automate builds with triggers\n\n- Go to the CloudBuild\n- Create Trigger\n- Select `devops-repo` and `.*(any branch)`\n- Choose `Dockerfile` for configuration\n- Create\n- Manually run the trigger once\n- Go to history and check the builds \n- Check the container registry for the new folder `devops-repo`\n- Make changes in the `main.py` file and commit again.\n\n```bash\ncd ~/gcp-course/devops-repo\ngit commit -a -m \"Testing Build Trigger\"\ngit push origin master\n```\n\n###  Test your build changes\n\n- Check the build history in CloudBuilds and copy the Image link, format should be gcr.io/qwiklabs-gcp-00-f23112/devops-repoxx34345xx.\n- Create a new compute engine with the new tag and allow http traffic"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_007_building_a_devops_pipeline__python/main.py",
    "content": "from flask import Flask, render_template, request\napp = Flask(__name__)\n@app.route(\"/\")\ndef main():\n    model = {\"title\": \"Hello DevOps Fans.\"}\n    return render_template('index.html', model=model)\nif __name__ == \"__main__\":\n    app.run(host='0.0.0.0', port=8080, debug=True, threaded=True)"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_007_building_a_devops_pipeline__python/requirements.txt",
    "content": "Flask==2.0.3"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_007_building_a_devops_pipeline__python/templates/index.html",
    "content": "{% extends \"layout.html\" %}\n{% block content %}\n<div class=\"jumbotron\">\n    <div class=\"container\">\n        <h1>{{model.title}}</h1>\n    </div>\n</div>\n{% endblock %}"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_007_building_a_devops_pipeline__python/templates/layout.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n    <title>{{model.title}}</title>\n    <!-- Bootstrap CSS -->\n    <link rel=\"stylesheet\" href=\"https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css\">\n</head>\n<body>\n<div class=\"container\">\n    {% block content %}{% endblock %}\n    <footer></footer>\n</div>\n</body>\n</html>"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_008_deploying_app_to_app_engine_and_gke_and_cloudrun/Dockerfile",
    "content": "FROM python:3.7\nWORKDIR /app\nCOPY . .\nRUN pip install gunicorn\nRUN pip install -r requirements.txt\nENV PORT=8080\nCMD exec gunicorn --bind :$PORT --workers 1 --threads 8 main:app"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_008_deploying_app_to_app_engine_and_gke_and_cloudrun/ReadMe.md",
    "content": "# Deploying same Python app to AppEngine, GKE, CloudRun\n\n[https://www.cloudskillsboost.google](https://www.cloudskillsboost.google)\n\n[Select - DevOps Engineer, SRE Learning Path](https://www.cloudskillsboost.google/paths)\n\n## Objective\n\n![img.png](.images/arch-objective.png)\n\n```bash\ndocker build -t test-python .\n\ndocker run --rm -p 8080:8080 test-python\n```\n\n- Web Preview\n\n## Deploy to App Engine\n\n- Create file app.yaml\n\n```bash\n# create App Engine application \ngcloud app create --region=us-central\n\n# Deploy the app using\ngcloud app deploy --version=one --quiet\n```\n\n- Navigate to App Engine dashboard\n- Click on the URL\n- Make changes in the `main.py` and run the following\n\n```bash\n# The --no-promote parameter tells App Engine to continue serving requests with the old version\ngcloud app deploy --version=two --no-promote --quiet\n```\n\n- Now visit the URL again. You should see the same version of code.\n- Go to versions in the console \n- Click on version 2 link to test it.\n\n- Select split traffic and change to version 2 and save\n- Visit the URL again and refresh\n\n## Deploy the Kubernetes\n\n- Create Manual k8s cluster with all defaults set\n- Connect to the cluster\n\n```bash\nkubectl get nodes\n```\n\n- Make changes in `main.py` and run the following\n\n- Create the k8s-manifests.yaml file\n\n- Enter the following commands to use Cloud Build to create the image and store it in Container Registry\n\n```bash\n# Check the image tag created in the output\ngcloud builds submit --tag gcr.io/$DEVSHELL_PROJECT_ID/devops-image:v0.2 .\n\n# Replace this tag in the k8s-manifests.yaml\n```\n\n- Apply the changes\n\n```bash\nkubectl apply -f k8s-manifests.yaml\n\nkubectl get pods\n\nkubectl get svc\n```\n\n- Visit the external IP created by the service\n\n## Deploy to CloudRun\n\n- Make changes in the `main.py` file\n\n- Trigger build in CloudBuild\n\n```bash\ngcloud builds submit --tag gcr.io/$DEVSHELL_PROJECT_ID/cloud-run-image:v0.1 .\n```\n\n- Go to Cloudrun in the console\n\n- Give `Service name` as `hello-cloud-run` \n- Autoscaling max 6\n- Authentication as `Allow unauthenticated invocations`\n- Keep the `Container, Connections, Security ` as Default\n- Create\n- Visit the URL created\n\n\n\n\n"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_008_deploying_app_to_app_engine_and_gke_and_cloudrun/app.yaml",
    "content": "# For AppEngine\nruntime: python37"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_008_deploying_app_to_app_engine_and_gke_and_cloudrun/k8s-manifests.yaml",
    "content": "---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: devops-deployment\n  labels:\n    app: devops\n    tier: frontend\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: devops\n      tier: frontend\n  template:\n    metadata:\n      labels:\n        app: devops\n        tier: frontend\n    spec:\n      containers:\n        - name: devops-demo\n          image: <YOUR IMAGE PATH HERE>\n          ports:\n            - containerPort: 8080\n---\napiVersion: v1\nkind: Service\nmetadata:\n  name: devops-deployment-lb\n  labels:\n    app: devops\n    tier: frontend-lb\nspec:\n  type: LoadBalancer\n  ports:\n    - port: 80\n      targetPort: 8080\n  selector:\n    app: devops\n    tier: frontend"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_008_deploying_app_to_app_engine_and_gke_and_cloudrun/main.py",
    "content": "from flask import Flask, render_template, request\napp = Flask(__name__)\n@app.route(\"/\")\ndef main():\n    model = {\"title\": \"Hello DevOps Fans.\"}\n    return render_template('index.html', model=model)\nif __name__ == \"__main__\":\n    app.run(host='0.0.0.0', port=8080, debug=True, threaded=True)"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_008_deploying_app_to_app_engine_and_gke_and_cloudrun/requirements.txt",
    "content": "Flask==2.0.3"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_008_deploying_app_to_app_engine_and_gke_and_cloudrun/templates/index.html",
    "content": "{% extends \"layout.html\" %}\n{% block content %}\n<div class=\"jumbotron\">\n    <div class=\"container\">\n        <h1>{{model.title}}</h1>\n    </div>\n</div>\n{% endblock %}"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_008_deploying_app_to_app_engine_and_gke_and_cloudrun/templates/layout.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n    <title>{{model.title}}</title>\n    <!-- Bootstrap CSS -->\n    <link rel=\"stylesheet\" href=\"https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css\">\n</head>\n<body>\n<div class=\"container\">\n    {% block content %}{% endblock %}\n    <footer></footer>\n</div>\n</body>\n</html>"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_008_deploying_app_to_app_engine_and_gke_and_cloudrun__python/Dockerfile",
    "content": "FROM python:3.7\nWORKDIR /app\nCOPY . .\nRUN pip install gunicorn\nRUN pip install -r requirements.txt\nENV PORT=8080\nCMD exec gunicorn --bind :$PORT --workers 1 --threads 8 main:app"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_008_deploying_app_to_app_engine_and_gke_and_cloudrun__python/ReadMe.md",
    "content": "# Deploying same Python app to AppEngine, GKE, CloudRun\n\n[https://www.cloudskillsboost.google](https://www.cloudskillsboost.google)\n\n[Select - DevOps Engineer, SRE Learning Path](https://www.cloudskillsboost.google/paths)\n\n**High Level Objectives**\n- Create a minimal python app, dockerize the app \n- Deploy to App Engine \n- Deploy to Kubernetes Engine \n- Deploy to Cloud Run\n\n\n\n**Skills**\n- gcp\n- python\n- docker\n- kubernetes\n- cloud run\n- app engine\n- cloud build\n\n\n![img.png](.images/arch-objective.png)\n\n```bash\ndocker build -t test-python .\n\ndocker run --rm -p 8080:8080 test-python\n```\n\n- Web Preview\n\n## Deploy to App Engine\n\n- Create file app.yaml\n\n```bash\n# create App Engine application \ngcloud app create --region=us-central\n\n# Deploy the app using\ngcloud app deploy --version=one --quiet\n```\n\n- Navigate to App Engine dashboard\n- Click on the URL\n- Make changes in the `main.py` and run the following\n\n```bash\n# The --no-promote parameter tells App Engine to continue serving requests with the old version\ngcloud app deploy --version=two --no-promote --quiet\n```\n\n- Now visit the URL again. You should see the same version of code.\n- Go to versions in the console \n- Click on version 2 link to test it.\n\n- Select split traffic and change to version 2 and save\n- Visit the URL again and refresh\n\n## Deploy the Kubernetes\n\n- Create Manual k8s cluster with all defaults set\n- Connect to the cluster\n\n```bash\nkubectl get nodes\n```\n\n- Make changes in `main.py` and run the following\n\n- Create the k8s-manifests.yaml file\n\n- Enter the following commands to use Cloud Build to create the image and store it in Container Registry\n\n```bash\n# Check the image tag created in the output\ngcloud builds submit --tag gcr.io/$DEVSHELL_PROJECT_ID/devops-image:v0.2 .\n\n# Replace this tag in the k8s-manifests.yaml\n```\n\n- Apply the changes\n\n```bash\nkubectl apply -f k8s-manifests.yaml\n\nkubectl get pods\n\nkubectl get svc\n```\n\n- Visit the external IP created by the service\n\n## Deploy to CloudRun\n\n- Make changes in the `main.py` file\n\n- Trigger build in CloudBuild\n\n```bash\ngcloud builds submit --tag gcr.io/$DEVSHELL_PROJECT_ID/cloud-run-image:v0.1 .\n```\n\n- Go to Cloudrun in the console\n\n- Give `Service name` as `hello-cloud-run` \n- Autoscaling max 6\n- Authentication as `Allow unauthenticated invocations`\n- Keep the `Container, Connections, Security ` as Default\n- Create\n- Visit the URL created\n\n\n\n\n"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_008_deploying_app_to_app_engine_and_gke_and_cloudrun__python/app.yaml",
    "content": "# For AppEngine\nruntime: python37"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_008_deploying_app_to_app_engine_and_gke_and_cloudrun__python/k8s-manifests.yaml",
    "content": "---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: devops-deployment\n  labels:\n    app: devops\n    tier: frontend\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: devops\n      tier: frontend\n  template:\n    metadata:\n      labels:\n        app: devops\n        tier: frontend\n    spec:\n      containers:\n        - name: devops-demo\n          image: <YOUR IMAGE PATH HERE>\n          ports:\n            - containerPort: 8080\n---\napiVersion: v1\nkind: Service\nmetadata:\n  name: devops-deployment-lb\n  labels:\n    app: devops\n    tier: frontend-lb\nspec:\n  type: LoadBalancer\n  ports:\n    - port: 80\n      targetPort: 8080\n  selector:\n    app: devops\n    tier: frontend"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_008_deploying_app_to_app_engine_and_gke_and_cloudrun__python/main.py",
    "content": "from flask import Flask, render_template, request\napp = Flask(__name__)\n@app.route(\"/\")\ndef main():\n    model = {\"title\": \"Hello DevOps Fans.\"}\n    return render_template('index.html', model=model)\nif __name__ == \"__main__\":\n    app.run(host='0.0.0.0', port=8080, debug=True, threaded=True)"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_008_deploying_app_to_app_engine_and_gke_and_cloudrun__python/requirements.txt",
    "content": "Flask==2.0.3"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_008_deploying_app_to_app_engine_and_gke_and_cloudrun__python/templates/index.html",
    "content": "{% extends \"layout.html\" %}\n{% block content %}\n<div class=\"jumbotron\">\n    <div class=\"container\">\n        <h1>{{model.title}}</h1>\n    </div>\n</div>\n{% endblock %}"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_008_deploying_app_to_app_engine_and_gke_and_cloudrun__python/templates/layout.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n    <title>{{model.title}}</title>\n    <!-- Bootstrap CSS -->\n    <link rel=\"stylesheet\" href=\"https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css\">\n</head>\n<body>\n<div class=\"container\">\n    {% block content %}{% endblock %}\n    <footer></footer>\n</div>\n</body>\n</html>"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_009_monitoring_applications_in_gcp__python/Dockerfile",
    "content": "FROM python:3.7\nWORKDIR /app\nCOPY . .\nRUN pip install gunicorn\nRUN pip install -r requirements.txt\nENV PORT=8080\nCMD exec gunicorn --bind :$PORT --workers 1 --threads 8 main:app"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_009_monitoring_applications_in_gcp__python/ReadMe.md",
    "content": "# Monitoring Applications in GCP\n\n[https://www.cloudskillsboost.google](https://www.cloudskillsboost.google)\n\n[Select - DevOps Engineer, SRE Learning Path](https://www.cloudskillsboost.google/paths)\n\n**High Level Objectives**\n- Deploy and test the python app locally on gcp console \n- Deploy an application to App Engine and examine the Cloud logs\n- View the Profiler Information\n- Explore Cloud Trace\n- Monitor resources using Dashboards\n- Create uptime checks and alerts\n\n**Skills**\n- gcp\n- python\n- docker\n- app engine\n- cloud build\n- cloud profiler\n- cloud trace\n- cloud monitoring\n- cloud logging\n- cloud uptime checks\n- cloud alerting\n- cloud dashboards\n\n\n### Deploy and test the python app locally on gcp console\n\n\n- Run the following in google cloud shell\n\n```bash\n# confirm that you are authenticated\ngcloud auth list\n\n# to confirm that you are using the correct project for this lab\ngcloud config list project\n```\n\n- Create folder\n\n```bash\nmkdir gcp-logging\ncd gcp-logging\n\n# Create the required files over here \n```\n\n- Enable API\n\n```bash\n# Profiler has to be enabled in the project\ngcloud services enable cloudprofiler.googleapis.com\n```\n\n- Build and test locally\n\n```bash\ndocker build -t test-python .\n\ndocker run --rm -p 8080:8080 test-python\n\n# Check the web Preview now\n```\n\n\n### Deploy an application to App Engine and examine the Cloud logs\n\n\n```bash\n# Create app engine\ngcloud app create --region=us-central\n\n# deploy your app\ngcloud app deploy --version=one --quiet\n```\n\n- Check the App Engine URL\n- Go to `Tools` and check the `Logs`. Logs should indicate that Profiler has started and profiles are being generated\n\n\n### View the Profiler Information\n\n- Go the `Profiler`. Check the current insights.\n- Start compute instance in any region other than `us-central1`\n- SSH\n\n```bash\nsudo apt update\nsudo apt install apache2-utils -y\nnohup ab -n 1000 -c 10 https://<your-project-id>.appspot.com/ > nohup1.out &\nnohup ab -n 1000 -c 10 https://<your-project-id>.appspot.com/ > nohup2.out &\nnohup ab -n 1000 -c 10 https://<your-project-id>.appspot.com/ > nohup3.out &\n```\n\n- Now go back to `Profiler` and check again\n\n### Explore Cloud Trace\n\n- Go to `Trace`\n- SSH\n\n```bash\nnohup ab -n 1000 -c 10 https://<your-project-id>.appspot.com/ > nohup4.out &\nnohup ab -n 1000 -c 10 https://<your-project-id>.appspot.com/ > nohup5.out &\nnohup ab -n 1000 -c 10 https://<your-project-id>.appspot.com/ > nohup6.out &\n```\n\n### Monitor resources using Dashboards\n\n- Go to `Monitoring` -> `Dashboards`\n- Check `App Engine` dashboard\n- Check `VM Instances` dashboard\n- Click on `Create Dashboard`\n\n### Create uptime checks and alerts\n\n- Select `Uptime Checks`\n\n| Property                | Value                         |\n|-------------------------|-------------------------------|\n| Title                   | App Engine Uptime Check       |\n| App Engine Uptime Check | HTTPS                         |\n| Hostname                | <your-project-id>.appspot.com |\n| Resource Type           | URL                           |\n| Path                    | /                             |\n| Check Frequency         | 1 minute                      |\n\n\n- `Test`\n- Alert and Notification `Uptime Check Alert`\n- Create `Notification channels`\n- Create one with `temp-email` [https://temp-mail.org/en/](https://temp-mail.org/en)\n- Save\n- Navigate to `App Engine` and `Disable application`. Check URL, it should work anymore\n- Return to `Monitoring` and click `Uptime checks`. It should be `Failing`\n- Click `Alerting`, An incident should be fired. Check your email.\n- Now enable application in `AppEngine`. Everything should be resolved. Check your email."
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_009_monitoring_applications_in_gcp__python/app.yaml",
    "content": "# For AppEngine\nruntime: python37"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_009_monitoring_applications_in_gcp__python/main.py",
    "content": "from flask import Flask, render_template, request\nimport googlecloudprofiler\n\n\napp = Flask(__name__)\n@app.route(\"/\")\ndef main():\n    model = {\"title\": \"Hello DevOps Fans.\"}\n    return render_template('index.html', model=model)\n\n#  This code simply turns Profiler on. Once on, Profiler starts reporting application metrics to Google Cloud\ntry:\n    googlecloudprofiler.start(verbose=3)\nexcept (ValueError, NotImplementedError) as exc:\n    print(exc)\n\nif __name__ == \"__main__\":\n    app.run(host='0.0.0.0', port=8080, debug=True, threaded=True)\n\n"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_009_monitoring_applications_in_gcp__python/requirements.txt",
    "content": "Flask==2.0.3\nitsdangerous==2.0.1\nJinja2==3.0.3\ngoogle-cloud-profiler==3.0.6\nprotobuf==3.20.1"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_009_monitoring_applications_in_gcp__python/templates/index.html",
    "content": "{% extends \"layout.html\" %}\n{% block content %}\n<div class=\"jumbotron\">\n    <div class=\"container\">\n        <h1>{{model.title}}</h1>\n    </div>\n</div>\n{% endblock %}"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_009_monitoring_applications_in_gcp__python/templates/layout.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n    <title>{{model.title}}</title>\n    <!-- Bootstrap CSS -->\n    <link rel=\"stylesheet\" href=\"https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css\">\n</head>\n<body>\n<div class=\"container\">\n    {% block content %}{% endblock %}\n    <footer></footer>\n</div>\n</body>\n</html>"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_010_alerting_in_google_cloud/ReadMe.md",
    "content": "# Alerting in Google Cloud\n\n[https://www.cloudskillsboost.google](https://www.cloudskillsboost.google)\n\n[Select - DevOps Engineer, SRE Learning Path](https://www.cloudskillsboost.google/paths)\n\n## Objectives\n\nDownload a sample app from GitHub.\n\nDeploy an application to App Engine.\n\nCreate uptime checks and alerts.\n\nCreate an alerting policy with the CLI."
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_010_alerting_in_google_cloud__python/Dockerfile",
    "content": "FROM python:3.7\nWORKDIR /app\nCOPY . .\nRUN pip install gunicorn\nRUN pip install -r requirements.txt\nENV PORT=8080\nCMD exec gunicorn --bind :$PORT --workers 1 --threads 8 main:app"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_010_alerting_in_google_cloud__python/ReadMe.md",
    "content": "# Alerting in Google Cloud - Python App - App Engine\n\n[https://www.cloudskillsboost.google](https://www.cloudskillsboost.google)\n\n[Select - DevOps Engineer, SRE Learning Path](https://www.cloudskillsboost.google/paths)\n\n**High Level Objectives**\n- Run the app locally on gcp console\n- Deploy to App Engine\n- Examine the App Engine Logs\n- Create an App Engine latency alert\n- Creating an Alerting Policy with the CLI\n\n\n\n**Skills**\n- gcp\n- python\n- app engine\n- app engine logs\n- alerting\n- alerting policy\n\n\n\n### Run the app locally on gcp console\n\n```bash\nsudo pip3 install -r requirements.txt\npython3 main.py\n```\n\n- Web Preview\n\n### Deploy to App Engine\n\n- Create file app.yaml\n\n```bash\n# create App Engine application \ngcloud app create --region=us-central\n\n# Deploy the app using\ngcloud app deploy --version=one --quiet\n```\n\n- Navigate to App Engine dashboard\n- Click on the URL\n\n\n### Examine the App Engine Logs\n\n- `Tools` -> `Logs`\n\n### Create an App Engine latency alert\n\n#### Check current application latency in Metrics explorer\n\n\n- `Monitoring` > `Metrics explorer` \n- `Resource & Metric` > `GAE Application` > `Http` > `Response latency`    (Wait and hard refresh the page if required)\n- `Aggregator` to `mean`\n- Advanced options : `Aligner` to `99th percentile`\n\nThis show the average time it took our application to return a response to the fastest 99% of requests, cutting off 1% of anomalies.\n\n\n#### Create an alert based on the same metric\n\n- `Monitoring` > `Alerting`\n- Add new notification channel. Give temporary email [temp-mail.org](https://temp-mail.org/en/)\n- `Alerting` > `Create Policy`\n- `Select a metric` > `Resource & Metric` > `GAE Application` > `Http` > `Response latency`    (Wait and hard refresh the page if required)\n- `Apply` > Set `rolling window` to `1 min`\n- `Any time series violates` the `Condition` `is above` a Threshold of `8000`ms, it should trigger an alert.\n- Set `condition name` to `Response latency [MEAN] for 99th% over 8s`\n- Next and select notification channel\n- Name the alert `Hello too slow` > `Next` > `Create Policy`\n\n- Run this on the gcp console\n\n```bash\nwhile true; do curl -s https://$DEVSHELL_PROJECT_ID.appspot.com/sleepy200 | grep -e \"<title>\" -e \"sleep\";sleep .$[( $RANDOM % 10 )]s;done\n```\n- Check after 5 mins - `Monitoring` > `Alerting`\n- Check temp email. \n- `Acknowledge Incident` and see the difference\n\n\n### Creating an Alerting Policy with the CLI\n\n- Run on gcp console\n\n```bash\ngcloud alpha monitoring policies create --policy-from-file=\"app-engine-error-percent-policy.json\"\n```\n- Check the new policy created in console\n- Run \n\n```bash\nwhile true; do curl -s https://$DEVSHELL_PROJECT_ID.appspot.com/random500error | grep -e \"<title>\" -e \"error\";sleep .$[( $RANDOM % 10 )]s;done\n```\n\n- `Monitoring` > `Alerting`, wait another few minutes.\n- Check your temp email agin"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_010_alerting_in_google_cloud__python/app-engine-error-percent-policy.json",
    "content": "{\n  \"displayName\": \"HTTP error count exceeds 1 percent for App Engine apps\",\n  \"combiner\": \"OR\",\n  \"conditions\": [\n    {\n      \"displayName\": \"Ratio: HTTP 500s error-response counts / All HTTP response counts\",\n      \"conditionThreshold\": {\n        \"filter\": \"metric.label.response_code>=\\\"500\\\" AND metric.label.response_code<\\\"600\\\" AND metric.type=\\\"appengine.googleapis.com/http/server/response_count\\\" AND resource.type=\\\"gae_app\\\"\",\n        \"aggregations\": [\n          {\n            \"alignmentPeriod\": \"60s\",\n            \"crossSeriesReducer\": \"REDUCE_SUM\",\n            \"groupByFields\": [\n              \"project\",\n              \"resource.label.module_id\",\n              \"resource.label.version_id\"\n            ],\n            \"perSeriesAligner\": \"ALIGN_DELTA\"\n          }\n        ],\n        \"denominatorFilter\": \"metric.type=\\\"appengine.googleapis.com/http/server/response_count\\\" AND resource.type=\\\"gae_app\\\"\",\n        \"denominatorAggregations\": [\n          {\n            \"alignmentPeriod\": \"60s\",\n            \"crossSeriesReducer\": \"REDUCE_SUM\",\n            \"groupByFields\": [\n              \"project\",\n              \"resource.label.module_id\",\n              \"resource.label.version_id\"\n            ],\n            \"perSeriesAligner\": \"ALIGN_DELTA\"\n          }\n        ],\n        \"comparison\": \"COMPARISON_GT\",\n        \"thresholdValue\": 0.01,\n        \"duration\": \"0s\",\n        \"trigger\": {\n          \"count\": 1\n        }\n      }\n    }\n  ]\n}"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_010_alerting_in_google_cloud__python/app.yaml",
    "content": "# For AppEngine\nruntime: python37"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_010_alerting_in_google_cloud__python/main.py",
    "content": "import time\nimport random\nimport json\nfrom flask import Flask, render_template, request\n\napp = Flask(__name__)\n\n@app.route(\"/\")\ndef home():\n    model = {\"title\": \"Hello DevOps Fans.\"}\n    return render_template('index.html', model=model)\n\n#  when you want to have 10 seconds delay in response\n@app.route(\"/sleepy200\")\ndef sleepy200():\n    model = {\"title\": \"Hello DevOps Fans. I just woke up from sleep\"}\n    time.sleep(10)\n    return render_template('index.html', model=model)\n\n\n# The route should give random 500 error\n@app.route(\"/random500error\")\ndef random500():\n    num = random.randrange(20)\n    if num == 0:\n        return json.dumps({\"error\": 'Error thrown randomly'}), 500\n    else:\n        model = {\"title\": \"Still 200 OK, try again :) .\"}\n        return render_template('index.html', model=model)\n\nif __name__ == \"__main__\":\n    app.run(host='0.0.0.0', port=8080, debug=True, threaded=True)"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_010_alerting_in_google_cloud__python/requirements.txt",
    "content": "Flask==2.0.3"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_010_alerting_in_google_cloud__python/templates/index.html",
    "content": "{% extends \"layout.html\" %}\n{% block content %}\n<div class=\"jumbotron\">\n    <div class=\"container\">\n        <h1>{{model.title}}</h1>\n    </div>\n</div>\n{% endblock %}"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_010_alerting_in_google_cloud__python/templates/layout.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n    <title>{{model.title}}</title>\n    <!-- Bootstrap CSS -->\n    <link rel=\"stylesheet\" href=\"https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css\">\n</head>\n<body>\n<div class=\"container\">\n    {% block content %}{% endblock %}\n    <footer></footer>\n</div>\n</body>\n</html>"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_011_service_monitoring__node/ReadMe.md",
    "content": "# Service Monitoring\n\n\n[https://www.cloudskillsboost.google](https://www.cloudskillsboost.google)\n\n[Select - DevOps Engineer, SRE Learning Path](https://www.cloudskillsboost.google/paths)\n\n[haggman/HelloLoggingNodeJS.git](https://github.com/haggman/HelloLoggingNodeJS.git)\n\n**High Level Objectives**\n- Deploy the test nodejs app \n- Use Service Monitoring to create an availability SLO\n- Create an alert tied to your SLO\n- Trigger the alert\n\n**Skills**\n- gcp\n- nodejs\n- app engine\n- app engine logs\n- alerting\n- service monitoring\n- service level objective\n- error budget\n- error reporting\n- monitoring\n\n\n### Deploy the test nodejs app\n\n- Clone the repo\n\n```bash\ngit clone https://github.com/haggman/HelloLoggingNodeJS.git\n\ncd HelloLoggingNodeJS\n```\n\n- Create new App Engine app\n\n```bash\ngcloud app create --region=us-central\n```\n- Deploy the Hello Logging app to App Engine\n\n```bash\ngcloud app deploy\n```\n\n- Test the URL\n\n### Use Service Monitoring to create an availability SLO, Create an alert tied to your SLO\n\n- Place some load on application\n\n```bash\n# The loop generates ten requests per second. \n# The URL is to the /random-error route, which generates an error about every 1000 requests, \n# so you should see approximately 1 error every 100s.\nwhile true; \\\ndo curl -s https://$DEVSHELL_PROJECT_ID.appspot.com/random-error \\\n-w '\\n' ;sleep .1s;done\n```\n\n- `App Engine` > `Dashboard`\n- Check `Server Errors`\n- Navigation menu to go to `Error Reporting`. Notice the error is also being caught here\n- Navigation menu to go to `Monitoring` > `Services` > `default` > `+Create SLO` \n  - `Availability` to `Request based`\n  - `Period type` to `Rolling` and `Period Length` to `7 days`\n  - Set `Goal` to `99.5%`\n  - Create\n\n\n\n### Create an alert tied to your SLO\n\n- Expand the new SLO and investigate the information it displays\n- Check three tabs, `Service level indicator`, `Error budget`, and `Alerts firing`\n- `Alerts firing` > `CREATE SLO ALERT`\n- `Display Name` to `Really short window test`\n- `Lookback duration` to `10` minutes and `burn rate threshold` to `1.5`\n- Create notification channel and select it\n- Next and create\n\n\n\n### Trigger the alert\n\n- In the `index.js` file\n  - Scroll to the /random-error route found at approximately line 126 and modify the value next to Math.random from 1000 to 20\n- Run\n\n```bash\ngcloud app deploy\n\nwhile true; \\\ndo curl -s https://$DEVSHELL_PROJECT_ID.appspot.com/random-error \\\n-w '\\n' ;sleep .1s;done\n```\n\n- Wait for sometime and notice the new alert triggered."
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_011_service_monitoring__node_app/ReadMe.md",
    "content": "# Service Monitoring\n\n\n[https://www.cloudskillsboost.google](https://www.cloudskillsboost.google)\n\n[Select - DevOps Engineer, SRE Learning Path](https://www.cloudskillsboost.google/paths)\n\n[haggman/HelloLoggingNodeJS.git](https://github.com/haggman/HelloLoggingNodeJS.git)\n\n## High Level Objectives\n\n- Deploy the test nodejs app \n- Use Service Monitoring to create an availability SLO\n- Create an alert tied to your SLO\n- Trigger the alert\n\n### Deploy the test nodejs app\n\n- Clone the repo\n\n```bash\ngit clone https://github.com/haggman/HelloLoggingNodeJS.git\n\ncd HelloLoggingNodeJS\n```\n\n- Create new App Engine app\n\n```bash\ngcloud app create --region=us-central\n```\n- Deploy the Hello Logging app to App Engine\n\n```bash\ngcloud app deploy\n```\n\n- Test the URL\n\n### Use Service Monitoring to create an availability SLO, Create an alert tied to your SLO\n\n- Place some load on application\n\n```bash\n# The loop generates ten requests per second. \n# The URL is to the /random-error route, which generates an error about every 1000 requests, \n# so you should see approximately 1 error every 100s.\nwhile true; \\\ndo curl -s https://$DEVSHELL_PROJECT_ID.appspot.com/random-error \\\n-w '\\n' ;sleep .1s;done\n```\n\n- `App Engine` > `Dashboard`\n- Check `Server Errors`\n- Navigation menu to go to `Error Reporting`. Notice the error is also being caught here\n- Navigation menu to go to `Monitoring` > `Services` > `default` > `+Create SLO` \n  - `Availability` to `Request based`\n  - `Period type` to `Rolling` and `Period Length` to `7 days`\n  - Set `Goal` to `99.5%`\n  - Create\n\n\n\n### Create an alert tied to your SLO\n\n- Expand the new SLO and investigate the information it displays\n- Check three tabs, `Service level indicator`, `Error budget`, and `Alerts firing`\n- `Alerts firing` > `CREATE SLO ALERT`\n- `Display Name` to `Really short window test`\n- `Lookback duration` to `10` minutes and `burn rate threshold` to `1.5`\n- Create notification channel and select it\n- Next and create\n\n\n\n### Trigger the alert\n\n- In the `index.js` file\n  - Scroll to the /random-error route found at approximately line 126 and modify the value next to Math.random from 1000 to 20\n- Run\n\n```bash\ngcloud app deploy\n\nwhile true; \\\ndo curl -s https://$DEVSHELL_PROJECT_ID.appspot.com/random-error \\\n-w '\\n' ;sleep .1s;done\n```\n\n- Wait for sometime and notice the new alert triggered."
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_012_monitoring_and_dashboarding_multiple_projects_from_a_single_workspace/ReadMe.md",
    "content": "# Monitoring and Dashboarding Multiple Projects from a Single Workspace\n\n[https://www.cloudskillsboost.google](https://www.cloudskillsboost.google)\n\n[Select - DevOps Engineer, SRE Learning Path](https://www.cloudskillsboost.google/paths)\n\n## High Level Objectives\n\n- Configure Resource Projects\n- Create a Monitoring Workspace and link the two worker projects into it\n- Create and configure Monitoring groups\n- Create and test an uptime check\n\n\nWe need to have 3 different Projects.\nThe first project (ID 1) will be the monitoring workspace host project. \nProjects ID 2 and ID 3 will be the monitored/resource projects. \nPer Google's recommended best practices, the project we use to host the monitoring workspace will not be one of the projects actually housing monitored resources.\n\n\n### Configure Resource Projects\n\n- Label Project ID 1 as Monitoring Project.\n- Label Project ID 2 as Worker 1.\n- Label Project ID 3 as Worker 2.\n\n- Launch `NGINX Open Source Packaged by Bitnami` from `Marketplace` in `Worker 1` and `Worker 2` projects\n\n### Create a Monitoring Workspace and link the two worker projects into it\n\n- Go to `Monitoring Project`\n- `Monitoring` > `Overview` > `Settings`\n- Add `Worker 1` and `Worker 2`\n- Choose `Use this project as the scoping project`\n- Save and go to `Dashboards`. Take few minutes for explore.\n\n### Create and configure Monitoring groups\n- Go to each `Worker` Project\n- Assign labels to both VMs in `Worker 1` and `Worker 2`\n  - `component:frontend`\n  - `stage:dev/test`\n\n- Create Resource Group\n- `Monitoring` > `Groups` > `Create` > Name : Frontend Servers\n- Give `component` = `frontend` criteria. You should see 2 instances\n- Create a `Sub Group`, Keep the first criteria as same. Give second as `stage` = `dev`\n- Check the UI when done\n\n### Create and test an uptime check\n\n- Create an uptime check for the Frontend Servers group\n- Check out how an uptime check handles failure\n- What can Cloud Monitoring, Logging, and Alerting tell us?\n\n### Create a custom dashboard\n\n- Create a developer dashboard and add an uptime chart to it\n- Add and test a CPU utilization chart to the dashboard\n\n"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_012_monitoring_and_dashboarding_multiple_projects_from_a_single_workspace__nginx/ReadMe.md",
    "content": "# Monitoring and Dashboarding Multiple Projects from a Single Workspace\n\n[https://www.cloudskillsboost.google](https://www.cloudskillsboost.google)\n\n[Select - DevOps Engineer, SRE Learning Path](https://www.cloudskillsboost.google/paths)\n\n**High Level Objectives**\n- Configure Resource Projects\n- Create a Monitoring Workspace and link the two worker projects into it\n- Create and configure Monitoring groups\n- Create and test an uptime check\n\n\n**Skills**\n- gcp\n- monitoring\n- dashboarding\n- multiple projects\n- monitoring groups\n- uptime check\n\n\nWe need to have 3 different Projects.\nThe first project (ID 1) will be the monitoring workspace host project. \nProjects ID 2 and ID 3 will be the monitored/resource projects. \nPer Google's recommended best practices, the project we use to host the monitoring workspace will not be one of the projects actually housing monitored resources.\n\n\n### Configure Resource Projects\n\n- Label Project ID 1 as Monitoring Project.\n- Label Project ID 2 as Worker 1.\n- Label Project ID 3 as Worker 2.\n\n- Launch `NGINX Open Source Packaged by Bitnami` from `Marketplace` in `Worker 1` and `Worker 2` projects\n\n### Create a Monitoring Workspace and link the two worker projects into it\n\n- Go to `Monitoring Project`\n- `Monitoring` > `Overview` > `Settings`\n- Add `Worker 1` and `Worker 2`\n- Choose `Use this project as the scoping project`\n- Save and go to `Dashboards`. Take few minutes for explore.\n\n### Create and configure Monitoring groups\n- Go to each `Worker` Project\n- Assign labels to both VMs in `Worker 1` and `Worker 2`\n  - `component:frontend`\n  - `stage:dev/test`\n\n- Create Resource Group\n- `Monitoring` > `Groups` > `Create` > Name : Frontend Servers\n- Give `component` = `frontend` criteria. You should see 2 instances\n- Create a `Sub Group`, Keep the first criteria as same. Give second as `stage` = `dev`\n- Check the UI when done\n\n### Create and test an uptime check\n\n- Create an uptime check for the Frontend Servers group\n- Check out how an uptime check handles failure\n- What can Cloud Monitoring, Logging, and Alerting tell us?\n\n### Create a custom dashboard\n\n- Create a developer dashboard and add an uptime chart to it\n- Add and test a CPU utilization chart to the dashboard\n\n"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_013_compute_logging_and_monitoring/ReadMe.md",
    "content": "# Compute Logging And Monitoring\n\n[https://www.cloudskillsboost.google](https://www.cloudskillsboost.google)\n\n[Select - DevOps Engineer, SRE Learning Path](https://www.cloudskillsboost.google/paths)\n\n**High Level Objectives**\n- Set up a VM and a GKE cluster.\n- Install and use the logging and monitoring agents for Compute Engine.\n- Add a service to the GKE cluster and examine its logs and metrics.\n\n**Skills**\n- gcp\n- vm\n- gke\n- logging agent\n- monitoring agent\n- logs and metrics\n\n\n### Set up a VM and a GKE cluster\n\nCreate VM\n\n- Name : `web-server-vm`\n- Boot Disk : `Debian GNU/Linux 10 (buster)`\n- `Allow HTTP traffic`\n- SSH\n\n```bash\nsudo apt-get update\nsudo apt-get install nginx\nsudo nginx -v\n\nURL=URL_to_your_server\n\nwhile true; do curl -s $URL | grep -oP \"<title>.*</title>\"; \\\nsleep .1s;done\n\n# Check to make sure you have the requisite scopes to perform logging and monitoring.\n\n# We need logging.write and monitoring.write\ncurl --silent --connect-timeout 1 -f -H \"Metadata-Flavor: Google\" \\\nhttp://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/scopes\n\n# Download the script, add the monitoring agent repo to apt, and install the agent.\ncurl -sSO https://dl.google.com/cloudagents/add-monitoring-agent-repo.sh\nsudo bash add-monitoring-agent-repo.sh --also-install\n\n# Start the monitoring agent:\nsudo service stackdriver-agent start\n\n# Install the logging agent:\ncurl -sSO https://dl.google.com/cloudagents/add-logging-agent-repo.sh\nsudo bash add-logging-agent-repo.sh --also-install\n\n# Check status of both\nsudo service google-fluentd status\nsudo service stackdriver-agent status\n\n# To fully integrate the server, you enable the status information handler in \n\n# Nginx by adding a configuration file to the Nginx configuration directory:\n(cd /etc/nginx/conf.d/ && sudo curl -O https://raw.githubusercontent.com/Stackdriver/stackdriver-agent-service-configs/master/etc/nginx/conf.d/status.conf)\n\n# Reload nginx service\nsudo service nginx reload\n\n# Enable the Nginx monitoring plugin:\n(cd /opt/stackdriver/collectd/etc/collectd.d/ && sudo curl -O https://raw.githubusercontent.com/Stackdriver/stackdriver-agent-service-configs/master/etc/collectd.d/nginx.conf)\n\n# Restart the monitoring agent\nsudo service stackdriver-agent restart\n```\n\nCreate GKE Cluster\n\n- Name : `gke-cluster`\n\n### Use the logging and monitoring agents for Compute Engine\n\n- Monitoring > Metrics Explorer\n- Resource & Metric : VM Instance > Instance > CPU utilization\n  - Filter instance_name = web-server-vm       : Apply\n\n- Resource & Metric : VM Instance > nginx > Requests : Apply\n\n### Add a service to the GKE cluster and examine its logs and metrics\n\n- Cloud Shell\n\n```bash\n# Enable the Cloud Build API as it is needed in a few steps\ngcloud services enable cloudbuild.googleapis.com\n\ngit clone https://github.com/haggman/HelloLoggingNodeJS.git\n\n# Take a few mins to check the code\n\n# Submit the Dockerfile to Google's Cloud Build to generate a container and store it in your Container Registry:\ngcloud builds submit --tag gcr.io/$DEVSHELL_PROJECT_ID/hello-logging-js .\n\n# Edit k8sapp.yaml and replace the $GCLOUD_PROJECT with actual ID\n\n# Connect to cluster and\nkubectl apply -f k8sapp.yaml\n\nkubectl get services\n\nURL=url_to_k8s_app\nwhile true; do curl -s $URL -w \"\\n\"; sleep .1s;done\n```\n\n\n- Monitoring > Dashboards > GKE > VIEW ALL and enable Sparklines and click Apply\n- Switch to the Workloads tab. This is focused on the deployed workloads, grouped by namespace\n- Finally, scroll to the Kubernetes Services tab and expand hello-logging-service\n\n"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_014_log_analysis/ReadMe.md",
    "content": "# Log Analysis\n\n[https://www.cloudskillsboost.google](https://www.cloudskillsboost.google)\n\n[Select - DevOps Engineer, SRE Learning Path](https://www.cloudskillsboost.google/paths)\n\n## High Level Objectives\n\n- Set up and deploy a test application.\n- Explore the log entries generated by the test application.\n- Create and use a logs-based metric.\n- Export application logs to BigQuery.\n\n### Set up and deploy a test application.\n\n- Enable APIs\n\n```bash\ngcloud services enable cloudbuild.googleapis.com \\\nrun.googleapis.com \\\ncompute.googleapis.com \\\ncloudprofiler.googleapis.com\n```\n\n\n- Clone\n\n```bash\ngit clone https://github.com/haggman/HelloLoggingNodeJS.git\n```\n\n- Change error rate\n\n```node\n//Generates an uncaught exception every 20 requests\napp.get('/random-error', (req, res) => {\n  error_rate = parseInt(req.query.error_rate) || 20\n  let errorNum = (Math.floor(Math.random() * error_rate) + 1);\n  if (errorNum==1) {\n    console.log(\"Called /random-error, and it's about to error\");\n    doesNotExist();\n  }\n console.log(\"Called /random-error, and it worked\");\n res.send(\"Worked this time.\");\n});\n```\n\n- Build and deploy\n\n```bash\nsh rebuildService.sh\n\n# Set URL ENV\nURL=$(gcloud run services list --platform managed --format=\"value(URL)\" | grep hello-logging)\n\necho $URL\n\n# Add some traffic\nwhile true; \\\ndo curl -s $URL/random-error \\\n-w '\\n' ;sleep .1s;done\n```\n\n\n### Explore the log files for a test application\n\n- Cloud Run Revision > hello-logging\n\n\n### Create and use a logs-based metric\n\n- Modify while loop to hit different endpoint\n\n```bash\nwhile true; \\\ndo curl -s $URL/score \\\n-w '\\n' ;sleep .1s;done\n```\n\n- Explore the logs generated\n  - Cloud Run Revision > hello-logging\n\n- Change the `/score` route with below code.\n  - Notice how the message contents are now properties of the output object, and how the printed message is the JSON object stringified.\n\n```node\n//Basic NodeJS app built with the express server\napp.get('/score', (req, res) => {\n  //Random score, the contaierID is a UUID unique to each\n  //runtime container (testing was done in Cloud Run).\n  //funFactor is a random number 1-100\n  let score = Math.floor(Math.random() * 100) + 1;\n    let output = {\n      message:  '/score called',\n      score:    score,\n      containerID: containerID,\n      funFactor: funFactor\n  };\n  console.log(JSON.stringify(output));\n  //Basic message back to browser\n  res.send(`Your score is a ${score}. Happy?`);\n});\n```\n\n- Rebuild and deploy\n\n```bash\nsh rebuildService.sh\n```\n\n- Restart the loop\n\n```bash\nwhile true; \\\ndo curl -s $URL/score \\\n-w '\\n' ;sleep .1s;done\n```\n\n- Explore logs again and examine the new format.\n- Create a score logs-based metric using field `jsonPayload.score`\n- Create Dashboard using this metric\n\n\n### Export application logs to BigQuery\n\n- Modify while loop again\n\n```bash\nwhile true; \\\ndo curl -s $URL/random-error \\\n-w '\\n' ;sleep .1s;done\n```\n\n- Explore logs again and validate the change\n- Create and execute a query to pull just the textPayloads that start with ReferenceError\n\n```roomsql\nSELECT\n  textPayload\nFROM\n  `[project-id].hello_logging_logs.run_googleapis_com_stderr_[date]`\nWHERE\n  textPayload LIKE 'ReferenceError%'\n```\n\n- To do a count, modify the query to count these entries:\n```roomsql\nSELECT\n  count(textPayload)\nFROM\n  `[project-id].hello_logging_logs.run_googleapis_com_stderr_[date]`\nWHERE\n  textPayload LIKE 'ReferenceError%'\n```\n\n- To check the error percentage, build a query that compares the total requests to the ReferenceError% requests.\n\n```roomsql\nSELECT\n  errors / total_requests\nFROM (\n  SELECT\n    (\n    SELECT\n      COUNT(*)\n    FROM\n      `[project-id].hello_logging_logs.run_googleapis_com_requests_[date]`) AS total_requests,\n    (\n    SELECT\n      COUNT(textPayload)\n    FROM\n      `[project-id].hello_logging_logs.run_googleapis_com_stderr_[date]`\n    WHERE\n      textPayload LIKE 'ReferenceError%') AS errors)\n```"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_014_log_analysis_cloud_run__node/ReadMe.md",
    "content": "# Log Analysis\n\n[https://www.cloudskillsboost.google](https://www.cloudskillsboost.google)\n\n[Select - DevOps Engineer, SRE Learning Path](https://www.cloudskillsboost.google/paths)\n\n**High Level Objectives**\n- Set up and deploy a test node application to cloud run.\n- Explore the log entries generated by the test application.\n- Create and use a logs-based metric.\n- Export application logs to BigQuery.\n\n**Skills**\n- gcp\n- cloud run\n- logging\n- metrics\n- bigquery\n- nodejs\n- logs-based metrics\n\n### Set up and deploy a test application.\n\n- Enable APIs\n\n```bash\ngcloud services enable cloudbuild.googleapis.com \\\nrun.googleapis.com \\\ncompute.googleapis.com \\\ncloudprofiler.googleapis.com\n```\n\n\n- Clone\n\n```bash\ngit clone https://github.com/haggman/HelloLoggingNodeJS.git\n```\n\n- Change error rate\n\n```node\n//Generates an uncaught exception every 20 requests\napp.get('/random-error', (req, res) => {\n  error_rate = parseInt(req.query.error_rate) || 20\n  let errorNum = (Math.floor(Math.random() * error_rate) + 1);\n  if (errorNum==1) {\n    console.log(\"Called /random-error, and it's about to error\");\n    doesNotExist();\n  }\n console.log(\"Called /random-error, and it worked\");\n res.send(\"Worked this time.\");\n});\n```\n\n- Build and deploy\n\n```bash\nsh rebuildService.sh\n\n# Set URL ENV\nURL=$(gcloud run services list --platform managed --format=\"value(URL)\" | grep hello-logging)\n\necho $URL\n\n# Add some traffic\nwhile true; \\\ndo curl -s $URL/random-error \\\n-w '\\n' ;sleep .1s;done\n```\n\n\n### Explore the log files for a test application\n\n- Cloud Run Revision > hello-logging\n\n\n### Create and use a logs-based metric\n\n- Modify while loop to hit different endpoint\n\n```bash\nwhile true; \\\ndo curl -s $URL/score \\\n-w '\\n' ;sleep .1s;done\n```\n\n- Explore the logs generated\n  - Cloud Run Revision > hello-logging\n\n- Change the `/score` route with below code.\n  - Notice how the message contents are now properties of the output object, and how the printed message is the JSON object stringified.\n\n```node\n//Basic NodeJS app built with the express server\napp.get('/score', (req, res) => {\n  //Random score, the contaierID is a UUID unique to each\n  //runtime container (testing was done in Cloud Run).\n  //funFactor is a random number 1-100\n  let score = Math.floor(Math.random() * 100) + 1;\n    let output = {\n      message:  '/score called',\n      score:    score,\n      containerID: containerID,\n      funFactor: funFactor\n  };\n  console.log(JSON.stringify(output));\n  //Basic message back to browser\n  res.send(`Your score is a ${score}. Happy?`);\n});\n```\n\n- Rebuild and deploy\n\n```bash\nsh rebuildService.sh\n```\n\n- Restart the loop\n\n```bash\nwhile true; \\\ndo curl -s $URL/score \\\n-w '\\n' ;sleep .1s;done\n```\n\n- Explore logs again and examine the new format.\n- Create a score logs-based metric using field `jsonPayload.score`\n- Create Dashboard using this metric\n\n\n### Export application logs to BigQuery\n\n- Modify while loop again\n\n```bash\nwhile true; \\\ndo curl -s $URL/random-error \\\n-w '\\n' ;sleep .1s;done\n```\n\n- Explore logs again and validate the change\n- Create and execute a query to pull just the textPayloads that start with ReferenceError\n\n```roomsql\nSELECT\n  textPayload\nFROM\n  `[project-id].hello_logging_logs.run_googleapis_com_stderr_[date]`\nWHERE\n  textPayload LIKE 'ReferenceError%'\n```\n\n- To do a count, modify the query to count these entries:\n```roomsql\nSELECT\n  count(textPayload)\nFROM\n  `[project-id].hello_logging_logs.run_googleapis_com_stderr_[date]`\nWHERE\n  textPayload LIKE 'ReferenceError%'\n```\n\n- To check the error percentage, build a query that compares the total requests to the ReferenceError% requests.\n\n```roomsql\nSELECT\n  errors / total_requests\nFROM (\n  SELECT\n    (\n    SELECT\n      COUNT(*)\n    FROM\n      `[project-id].hello_logging_logs.run_googleapis_com_requests_[date]`) AS total_requests,\n    (\n    SELECT\n      COUNT(textPayload)\n    FROM\n      `[project-id].hello_logging_logs.run_googleapis_com_stderr_[date]`\n    WHERE\n      textPayload LIKE 'ReferenceError%') AS errors)\n```"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_015_cloud_audit_logs/ReadMe.md",
    "content": "# Cloud Audit Logs\n\n[https://www.cloudskillsboost.google](https://www.cloudskillsboost.google)\n\n[Select - DevOps Engineer, SRE Learning Path](https://www.cloudskillsboost.google/paths)\n\n\n## High Level Objectives\n\n- Enable data access logs on Cloud Storage.\n- Generate admin and data access activity.\n- View Audit logs.\n\n### Enable data access logs on Cloud Storage\n\n\n- Navigation Menu > IAM & Admin > Audit Logs.\n- Scroll or use Filter to locate `Google Cloud Storage`, then check the box next to it. This should display the Info Panel with options on LOG TYPE.\n- Select Admin Read, Data Read and Data Write, and then click SAVE.\n\n\n### Generate some admin and data access activity\n\n```bash\n# Use gsutil to create a Cloud Storage bucket with the same name as your project:\ngsutil mb gs://$DEVSHELL_PROJECT_ID\n\n# Make sure the bucket successfully created:\ngsutil ls\n\n# Create a simple \"Hello World\" type of text file and upload it to your bucket:\necho \"Hello World!\" > sample.txt\ngsutil cp sample.txt gs://$DEVSHELL_PROJECT_ID\n\n# Verify the file is in the bucket:\ngsutil ls gs://$DEVSHELL_PROJECT_ID\n\n# Create a new auto mode network named mynetwork, then create a new virtual machine and place it on the new network:\ngcloud compute networks create mynetwork --subnet-mode=auto\ngcloud compute instances create default-us-vm \\\n--zone=us-west4-b --network=mynetwork\n\n# Delete the storage bucket:\ngsutil rm -r gs://$DEVSHELL_PROJECT_ID\n```\n\n### Viewing audit logs\n\n- Navigation menu to navigate to Cloud overview > Activity.\n- Filters pane, click the Activity types, select all, and click OK\n- Click the Resource type > Select GCE Network > OK\n- Navigation menu to navigate to Logging > Logs Explorer.\n- Click the Log name dropdown and use the filter to locate the activity log under CLOUD AUDIT section and Apply it to the query.\n- Log fields explorer to filter to GCS Bucket entries.\n- Expand the delete entry, then drill into protoPayload > authenticationInfo field and notice you can see the email address of the user that performed this action.\n\n\n```bash\ngcloud logging read \\\n\"logName=projects/$DEVSHELL_PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access\"\n```"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_015_cloud_storage_audit_logs/ReadMe.md",
    "content": "# Cloud Audit Logs\n\n[https://www.cloudskillsboost.google](https://www.cloudskillsboost.google)\n\n[Select - DevOps Engineer, SRE Learning Path](https://www.cloudskillsboost.google/paths)\n\n\n**High Level Objectives**\n- Enable data access logs on Cloud Storage.\n- Generate admin and data access activity.\n- View Audit logs.\n\n**Skills**\n- gcp\n- gcp-logging\n- access-logs\n- audit-logs\n- cloud-storage\n\n\n### Enable data access logs on Cloud Storage\n\n\n- Navigation Menu > IAM & Admin > Audit Logs.\n- Scroll or use Filter to locate `Google Cloud Storage`, then check the box next to it. This should display the Info Panel with options on LOG TYPE.\n- Select Admin Read, Data Read and Data Write, and then click SAVE.\n\n\n### Generate some admin and data access activity\n\n```bash\n# Use gsutil to create a Cloud Storage bucket with the same name as your project:\ngsutil mb gs://$DEVSHELL_PROJECT_ID\n\n# Make sure the bucket successfully created:\ngsutil ls\n\n# Create a simple \"Hello World\" type of text file and upload it to your bucket:\necho \"Hello World!\" > sample.txt\ngsutil cp sample.txt gs://$DEVSHELL_PROJECT_ID\n\n# Verify the file is in the bucket:\ngsutil ls gs://$DEVSHELL_PROJECT_ID\n\n# Create a new auto mode network named mynetwork, then create a new virtual machine and place it on the new network:\ngcloud compute networks create mynetwork --subnet-mode=auto\ngcloud compute instances create default-us-vm \\\n--zone=us-west4-b --network=mynetwork\n\n# Delete the storage bucket:\ngsutil rm -r gs://$DEVSHELL_PROJECT_ID\n```\n\n### Viewing audit logs\n\n- Navigation menu to navigate to Cloud overview > Activity.\n- Filters pane, click the Activity types, select all, and click OK\n- Click the Resource type > Select GCE Network > OK\n- Navigation menu to navigate to Logging > Logs Explorer.\n- Click the Log name dropdown and use the filter to locate the activity log under CLOUD AUDIT section and Apply it to the query.\n- Log fields explorer to filter to GCS Bucket entries.\n- Expand the delete entry, then drill into protoPayload > authenticationInfo field and notice you can see the email address of the user that performed this action.\n\n\n```bash\ngcloud logging read \\\n\"logName=projects/$DEVSHELL_PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access\"\n```"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_016_analyzing_network_traffic_with_vpc_flow_logs/ReadMe.md",
    "content": "# Analyzing Network Traffic With VPC Flow Logs\n\n[https://www.cloudskillsboost.google](https://www.cloudskillsboost.google)\n\n[Select - DevOps Engineer, SRE Learning Path](https://www.cloudskillsboost.google/paths)\n\n**High Level Objectives**\n- Configure a custom network with VPC flow logs\n- Create an Apache web server\n- Verify that network traffic is logged\n- Export the network traffic to BigQuery to further analyze the logs\n- Add VPC flow log aggregation\n\n**Skills**\n- gcp\n- gcp-networking\n- gcp-vpc\n- gcp-vpc-flow-logs\n- gcp-bigquery\n- vpc flow logs aggregation\n- export to bigquery\n\n### Configure a custom network with VPC flow logs\n\n- In the Cloud Console, in the Navigation menu (Navigation menu icon), select VPC network > VPC networks.  `vpc-net`\n\n\n| Property | Value   |\n|----------|---------|\n| Name     | vpc-net |\n\n\n- Subnet creation mode, click Custom\n\n| Property         | Value       |\n|------------------|-------------|\n| Name             | vpc-subnet  |\n| Region           | us-central1 |\n| IP address range | 10.1.3.0/24 |\n| Flow Logs        | On          |\n\n\n- Create Firewall Rule\n\n| Property            | Value                                                           |\n|---------------------|-----------------------------------------------------------------|\n| Name                | allow-http-ssh                                                  |\n| Network             | vpc-net                                                         |\n| Targets             | Specified target tags                                           |\n| Target tags         | http-server                                                     |\n| Source filter       | IPv4 Ranges                                                     |\n| Source IPv4 ranges  | 0.0.0.0/0                                                       |\n| Protocols and ports | Specified protocols and ports, and then check tcp, type: 80, 22 |\n\n### Create an Apache web server\n\n- In the Navigation menu, select Compute Engine > VM instances.\n\n| Property     | Value         |\n|--------------|---------------|\n| Name         | web-server    |\n| Region       | us-central1   |\n| Zone         | us-central1-c |\n| Series       | N1            |\n| Machine type | f1-micro      |\n\n- Click Networking, Disks, Security, Management, Sole-tenancy.\n- For Network tags, type http-server.\n- Specify the following and leave the remaining settings as their defaults:\n\n| Property   | Value                    |\n|------------|--------------------------|\n| Network    | vpc-net                  |\n| Subnetwork | vpc-subnet (10.1.3.0/24) |\n\n\n- Install Apache\n\n```bash\n# In the web-server SSH terminal, update the package index:\nsudo apt-get update\n\n# Install the apache2 package:\nsudo apt-get install apache2 -y\n\n# To create a new default web page by overwriting the default, run the following:\necho '<!doctype html><html><body><h1>Hello World!</h1></body></html>' | sudo tee /var/www/html/index.html\n```\n\n### Verify that network traffic is logged\n\n- Find your IP address\n- In the Cloud Console, go to Navigation menu > Logging > Logs Explorer.\n\n\n### Export the network traffic to BigQuery to further analyze the logs\n\n- Create an export sink\n- Generate log traffic for BigQuery\n- Note the External IP address for the web-server instance. It will be referred to as EXTERNAL_IP.\n\n```bash\n# Store the EXTERNAL_IP in an environment variable in Cloud Shell:\nexport MY_SERVER=<Enter the EXTERNAL_IP here>\n\n# Access the web-server 50 times from Cloud Shell:\nfor ((i=1;i<=50;i++)); do curl $MY_SERVER; done\n```\n\n- Visualize the VPC flow logs in BigQuery\n\n- Add the following to the BigQuery Editor and replace your_table_id with TABLE_ID while retaining the accents (`) on both sides:\n\n```roomsql\n#standardSQL\nSELECT\njsonPayload.src_vpc.vpc_name,\nSUM(CAST(jsonPayload.bytes_sent AS INT64)) AS bytes,\njsonPayload.src_vpc.subnetwork_name,\njsonPayload.connection.src_ip,\njsonPayload.connection.src_port,\njsonPayload.connection.dest_ip,\njsonPayload.connection.dest_port,\njsonPayload.connection.protocol\nFROM\n`your_table_id`\nGROUP BY\njsonPayload.src_vpc.vpc_name,\njsonPayload.src_vpc.subnetwork_name,\njsonPayload.connection.src_ip,\njsonPayload.connection.src_port,\njsonPayload.connection.dest_ip,\njsonPayload.connection.dest_port,\njsonPayload.connection.protocol\nORDER BY\nbytes DESC\nLIMIT\n15\n```\n\n- Analyze the VPC flow logs in BigQuery\n- Create a new query in the BigQuery Editor with the following and replace your_table_id with TABLE_ID while retaining the accents (`) on both sides:\n\n```roomsql\n#standardSQL\nSELECT\njsonPayload.connection.src_ip,\njsonPayload.connection.dest_ip,\nSUM(CAST(jsonPayload.bytes_sent AS INT64)) AS bytes,\njsonPayload.connection.dest_port,\njsonPayload.connection.protocol\nFROM\n`your_table_id`\nWHERE jsonPayload.reporter = 'DEST'\nGROUP BY\njsonPayload.connection.src_ip,\njsonPayload.connection.dest_ip,\njsonPayload.connection.dest_port,\njsonPayload.connection.protocol\nORDER BY\nbytes DESC\nLIMIT\n15\n```\n\n\n\n### Add VPC flow log aggregation\n\n- In the Console, navigate to the Navigation menu (Navigation menu icon) and select VPC network > VPC networks.\n\n\n"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_017_application_performance_management/ReadMe.md",
    "content": "# Application Performance Management\n\n[https://www.cloudskillsboost.google](https://www.cloudskillsboost.google)\n\n[Select - DevOps Engineer, SRE Learning Path](https://www.cloudskillsboost.google/paths)\n\n## High Level Objectives\n\n- Download a pair of sample apps from GitHub\n- Deploy the converter application to App Engine\n- Debug the application\n- Adding log data\n- Fix the bug and deploy a new version\n- Examine an error report coming out of Cloud Run in Error Reporting\n- Examine a default and custom trace span\n\n\n### Download a pair of sample apps from GitHub\n\n- Enable APIs\n\n```bash\ngcloud services enable cloudbuild.googleapis.com\ngcloud services enable containerregistry.googleapis.com\ngcloud services enable run.googleapis.com\n\n## Clone\ncd ~/\ngit clone https://github.com/haggman/HelloLoggingNodeJS.git\n\n# Change into the HelloLoggingNodeJS folder and use the rebuildService.sh script to deploy the application into Cloud Run:\ncd ~/HelloLoggingNodeJS\nsh rebuildService.sh\n\n# New terminal session\ngit clone https://github.com/haggman/gcp-debugging\n\ncd ~/gcp-debugging\n\n# Install req and run\nsudo pip3 install -r requirements.txt\npython3 main.py\n```\n\n- Web Preview (Web preview button) in the Cloud Shell toolbar, and then select Preview on port 8080.\n\n### Deploy the converter application to App Engine\n\n- App Engine needs an application created before it can be used. This is done just once using the gcloud app create command and specifying the region where you want the app to be created. This command takes a minute or so. Please wait for it to complete before moving on:\n\n```bash\ngcloud app create --region=us-central\n```\n\n- Deploy the Flask application into App Engine. This command takes a minute or three to complete. Please wait for it before moving on:\n\n```bash\ngcloud app deploy --version=one --quiet\n```\n\n- Visit App Engine URL\n\n\n### Debug the application\n\n- Navigation menu to navigate to Debugger.\n- Authorize\n- CREATE SNAPSHOT\n\n### Adding log data\n\n- Logpoint\n\n\n### Fix the bug and deploy a new version\n\n- main.py\n- replace the if-else block on lines 24 through 29 with the following try-catch block. This is Python, so make sure you get the spacing correct:\n```python\n        try:\n            fahrenheit = float(input)\n            celsius = int((fahrenheit - 32.0) * 5.0 / 9.0)\n        except ValueError:\n            fahrenheit = 'Enter a number'\n            celsius = 'Invalid Input'\n```\n\n- Deploy\n\n```bash\ncd ~/gcp-debugging\ngcloud app deploy --version=two --quiet\n```\n\n### Examine an error report coming out of Cloud Run in Error Reporting\n\n\n```bash\ncd ~/HelloLoggingNodeJS\nedit index.js\n```\n\n- Hit `/uncaught`\n- Navigation menu to view Error Reporting.\n\n```bash\n# Create a new Google Cloud Source Repository git repo named hello-world:\ncd ~/HelloLoggingNodeJS\ngcloud source repos create hello-world\n```\n\n- Push a copy of the code into the project Git repository:\n\n```bash\ngit push --mirror \\\nhttps://source.developers.google.com/p/$GOOGLE_CLOUD_PROJECT/r/hello-world\n```\n\n### Examine a default and custom trace span\n\n- Navigation menu to select Trace.\n- Scroll down to the /slow route. Edit or replace the method so it resembles the following:\n\n```\n//Generates a slow request\napp.get('/slow', (req, res) => {\n    const span1 = tracer.createChildSpan({name: 'slowPi'});\n    let pi1=slowPi();\n    span1.endSpan();\n    const span2 = tracer.createChildSpan({name: 'slowPi2'});\n    let pi2=slowPi2();\n    span2.endSpan();\n    res.send(`Took it's time. pi to 1,000 places: ${pi1}, pi to 100,000 places: ${pi2}`);\n});\n```\n\n- Rebuild and deploy\n\n```bash\nsh rebuildService.sh\n```\n\n\n\n\n"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_017_application_performance_management__python_and_nodejs/ReadMe.md",
    "content": "# Application Performance Management\n\n[https://www.cloudskillsboost.google](https://www.cloudskillsboost.google)\n\n[Select - DevOps Engineer, SRE Learning Path](https://www.cloudskillsboost.google/paths)\n\n**High Level Objectives**\n- Download a pair of sample apps from GitHub\n- Deploy the converter application to App Engine\n- Debug the application\n- Adding log data\n- Fix the bug and deploy a new version\n- Examine an error report coming out of Cloud Run in Error Reporting\n- Examine a default and custom trace span\n\n**Skills**\n- gcp\n- gcp-cloud-run\n- gcp-app-engine\n- debug apps\n- python\n- nodejs\n- custom traces\n- trace span\n\n\n### Download a pair of sample apps from GitHub\n\n- Enable APIs\n\n```bash\ngcloud services enable cloudbuild.googleapis.com\ngcloud services enable containerregistry.googleapis.com\ngcloud services enable run.googleapis.com\n\n## Clone\ncd ~/\ngit clone https://github.com/haggman/HelloLoggingNodeJS.git\n\n# Change into the HelloLoggingNodeJS folder and use the rebuildService.sh script to deploy the application into Cloud Run:\ncd ~/HelloLoggingNodeJS\nsh rebuildService.sh\n\n# New terminal session\ngit clone https://github.com/haggman/gcp-debugging\n\ncd ~/gcp-debugging\n\n# Install req and run\nsudo pip3 install -r requirements.txt\npython3 main.py\n```\n\n- Web Preview (Web preview button) in the Cloud Shell toolbar, and then select Preview on port 8080.\n\n### Deploy the converter application to App Engine\n\n- App Engine needs an application created before it can be used. This is done just once using the gcloud app create command and specifying the region where you want the app to be created. This command takes a minute or so. Please wait for it to complete before moving on:\n\n```bash\ngcloud app create --region=us-central\n```\n\n- Deploy the Flask application into App Engine. This command takes a minute or three to complete. Please wait for it before moving on:\n\n```bash\ngcloud app deploy --version=one --quiet\n```\n\n- Visit App Engine URL\n\n\n### Debug the application\n\n- Navigation menu to navigate to Debugger.\n- Authorize\n- CREATE SNAPSHOT\n\n### Adding log data\n\n- Logpoint\n\n\n### Fix the bug and deploy a new version\n\n- main.py\n- replace the if-else block on lines 24 through 29 with the following try-catch block. This is Python, so make sure you get the spacing correct:\n```python\n        try:\n            fahrenheit = float(input)\n            celsius = int((fahrenheit - 32.0) * 5.0 / 9.0)\n        except ValueError:\n            fahrenheit = 'Enter a number'\n            celsius = 'Invalid Input'\n```\n\n- Deploy\n\n```bash\ncd ~/gcp-debugging\ngcloud app deploy --version=two --quiet\n```\n\n### Examine an error report coming out of Cloud Run in Error Reporting\n\n\n```bash\ncd ~/HelloLoggingNodeJS\nedit index.js\n```\n\n- Hit `/uncaught`\n- Navigation menu to view Error Reporting.\n\n```bash\n# Create a new Google Cloud Source Repository git repo named hello-world:\ncd ~/HelloLoggingNodeJS\ngcloud source repos create hello-world\n```\n\n- Push a copy of the code into the project Git repository:\n\n```bash\ngit push --mirror \\\nhttps://source.developers.google.com/p/$GOOGLE_CLOUD_PROJECT/r/hello-world\n```\n\n### Examine a default and custom trace span\n\n- Navigation menu to select Trace.\n- Scroll down to the /slow route. Edit or replace the method so it resembles the following:\n\n```\n//Generates a slow request\napp.get('/slow', (req, res) => {\n    const span1 = tracer.createChildSpan({name: 'slowPi'});\n    let pi1=slowPi();\n    span1.endSpan();\n    const span2 = tracer.createChildSpan({name: 'slowPi2'});\n    let pi2=slowPi2();\n    span2.endSpan();\n    res.send(`Took it's time. pi to 1,000 places: ${pi1}, pi to 100,000 places: ${pi2}`);\n});\n```\n\n- Rebuild and deploy\n\n```bash\nsh rebuildService.sh\n```\n\n\n\n\n"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_018_2inst_2buckets_2iam/ReadMe.md",
    "content": "# Cloud Shell, VMs, Buckets, Service Accounts\n\n[https://www.cloudskillsboost.google](https://www.cloudskillsboost.google)\n\n[Select - Getting Started with Google Kubernetes Engine Course](https://www.cloudskillsboost.google)\n\n**High Level Objectives**\n- Learn how to access the Cloud Console and Cloud Shell\n- Become familiar with the Cloud Console\n- Become familiar with Cloud Shell features, including the Cloud Shell code editor\n- Use the Cloud Console and Cloud Shell to create buckets and VMs and service accounts\n- Perform other commands in Cloud Shell\n\n**Skills**\n- gcp\n- gcp-console\n- gcp-storage\n- gcp-vm\n- gcp-iam\n- gcp-shell\n- gcp-cli\n- gcp-service-accounts\n\n### Use the Cloud Console and Cloud Shell to create buckets and VMs and service accounts\n\n- Create a bucket with the same name as your project ID. (Choose how to control access to objects and uncheck Enforce public access prevention on this bucket, now select Fine-grained)\n- Create a VM `first-vm`. Allow HTTP traffic\n- Create an IAM service account `test-service-account`\n- On the Grant this service account access to project page, specify the role as `Basic > Editor`.\n- Manage keys - Download JSON key\n\n### Explore Cloud Shell\n\n- Use Cloud Shell to set up the environment variables for this task\n\n```bash\nMY_BUCKET_NAME_1=[BUCKET_NAME]\n\nMY_BUCKET_NAME_2=[BUCKET_NAME_2]\n\nMY_REGION=us-central1\n```\n\n- Move the credentials file you created earlier into Cloud Shell\n- Create a second Cloud Storage bucket and verify it in the Cloud Console\n\n```bash\ngsutil mb gs://$MY_BUCKET_NAME_2\n```\n\n- Use the gcloud command line to create a second virtual machine.\n  Select a zone from the first column of the list.\n\n```bash\ngcloud compute zones list | grep $MY_REGION\n# You replace [ZONE] with your selected zone:\nMY_ZONE=[ZONE]\n\n# Set this zone to be your default zone by executing the following command:\ngcloud config set compute/zone $MY_ZONE\n\n# Execute the following command to store a name in an environment variable you will use to create a VM. You will call your second VM second-vm:\nMY_VMNAME=second-vm\n\n# Create a VM in the default zone that you set earlier in this task using the new environment variable to assign the VM name:\ngcloud compute instances create $MY_VMNAME \\\n--machine-type \"e2-standard-2\" \\\n--image-project \"debian-cloud\" \\\n--image-family \"debian-11\" \\\n--subnet \"default\"\n\n# List the virtual machine instances in your project:\ngcloud compute instances list\n\n# Look at the External IP column. Notice that the external IP address of the first VM you created is shown as a link. The Google Cloud Console offers the link because you configured this VM's firewall to allow HTTP traffic.\n```\n\n- Use the gcloud command line to create a second service account\n- In Cloud Shell, execute the following command to create a new service account:\n\n```bash\ngcloud iam service-accounts create test-service-account2 --display-name \"test-service-account2\"\n\n# In Cloud Shell, execute the following command to grant the second service account the Project viewer role:\ngcloud projects add-iam-policy-binding $GOOGLE_CLOUD_PROJECT --member serviceAccount:test-service-account2@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com --role roles/viewer\n\n```\n\n### Work with Cloud Storage in Cloud Shell\n\n```bash\n# Copy a picture of a cat from a Google-provided Cloud Storage bucket to your Cloud Shell:\ngsutil cp gs://cloud-training/ak8s/cat.jpg cat.jpg\n\n# Copy the file into the first buckets that you created earlier:\ngsutil cp cat.jpg gs://$MY_BUCKET_NAME_1\n\n# Copy the file from the first bucket into the second bucket:\ngsutil cp gs://$MY_BUCKET_NAME_1/cat.jpg gs://$MY_BUCKET_NAME_2/cat.jpg\n```\n\n- In the Cloud Console, on the Navigation menu(Navigation menu icon), click Cloud Storage > Browser, select both the buckets that you created, and verify that both contain the cat.jpg file\n\n\n- Set the access control list for a Cloud Storage object\n- Execute the following command in Cloud Shell:\n\n```bash\ngsutil acl get gs://$MY_BUCKET_NAME_1/cat.jpg  > acl.txt\ncat acl.txt\n\n# To change the object to have private access, execute the following command:\ngsutil acl set private gs://$MY_BUCKET_NAME_1/cat.jpg\n\n# To verify the new ACL that's been assigned to cat.jpg, execute the following two commands:\ngsutil acl get gs://$MY_BUCKET_NAME_1/cat.jpg  > acl-2.txt\ncat acl-2.txt\n```\n\n- In Cloud Shell, execute the following command to view the current configuration:\n\n```bash\ngcloud config list\n\n# In Cloud Shell, execute the following command to change the authenticated user to the first service account (which you created in an earlier task) through the credentials that you downloaded to your local machine and then uploaded into Cloud Shell (credentials.json):\ngcloud auth activate-service-account --key-file credentials.json\n\ngcloud config list\n\n# To verify the list of authorized accounts in Cloud Shell, execute the following command:\ngcloud auth list\n\n# To verify that the current account (test-service-account) cannot access the cat.jpg file in the first bucket that you created, execute the following command:\n# Because you restricted access to this file to the owner earlier in this task.\ngsutil cp gs://$MY_BUCKET_NAME_1/cat.jpg ./cat-copy.jpg\n\n# Verify that the current account (test-service-account) can access the cat.jpg file in the second bucket that you created:\ngsutil cp gs://$MY_BUCKET_NAME_2/cat.jpg ./cat-copy.jpg\n\n# To switch to the lab account, execute the following command, replacing [USERNAME] with the username provided in the Qwiklabs \ngcloud config set account [USERNAME]\n\n# To verify that you can access the cat.jpg file in the [BUCKET_NAME] bucket (the first bucket that you created), execute the following command.\ngsutil cp gs://$MY_BUCKET_NAME_1/cat.jpg ./copy2-of-cat.jpg\n\n# Make the first Cloud Storage bucket readable by everyone, including unauthenticated users:\ngsutil iam ch allUsers:objectViewer gs://$MY_BUCKET_NAME_1\n\n# Get the public URL of the object\n```\n\n### Explore the Cloud Shell code editor\n\n\n- On the Cloud console tab, click Open Terminal and in Cloud Shell, execute the following command to clone a git repository:\n\n```bash\ngit clone https://github.com/googlecodelabs/orchestrate-with-kubernetes.git\n\nmkdir test\n\n# Add the following text as the last line of the cleanup.sh file:\n```\n\n- Add the following text as the last line of the cleanup.sh file:\n```bash\necho Finished cleanup! \n```\n\n- In Cloud Shell, execute the following commands to change directory and display the contents of cleanup.sh:\n- Create new file. \n- Save the file in orchestrate-with-kubernetes folder and name the file index.html\n- Replace the string REPLACE_WITH_CAT_URL with the URL of the cat image from an earlier task\n\n```bash\n<html><head><title>Cat</title></head>\n<body>\n<h1>Cat</h1>\n<img src=\"REPLACE_WITH_CAT_URL\">\n</body></html>\n```\n\n- first-vm, click the SSH button.\n\n```bash\nsudo apt-get remove -y --purge man-db\nsudo touch /var/lib/man-db/auto-update\nsudo apt-get update\nsudo apt-get install nginx\n```\n\n- In your Cloud Shell window, copy the HTML file you created using the Code Editor to your virtual machine:\n\n```bash\ngcloud compute scp index.html first-vm:index.nginx-debian.html --zone=us-central1-c\n```\n\n- In the SSH login window for your VM, copy the HTML file from your home directory to the document root of the nginx Web server:\n\n```bash\nsudo cp index.nginx-debian.html /var/www/html\n```\n\n- Click the link in the External IP column for your first-vm. A new browser tab opens, containing a Web page that contains the cat image.\n\n"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_019_working_with_cloud_build/ReadMe.md",
    "content": "# Working with Cloud Build\n\n[https://www.cloudskillsboost.google](https://www.cloudskillsboost.google)\n\n[Select - Getting Started with Google Kubernetes Engine Course](https://www.cloudskillsboost.google)\n\n**High Level Objectives**\n- Confirm that needed APIs are enabled\n- Building containers with DockerFile and Cloud Build\n- Building containers with a build configuration file and Cloud Build\n- Building and testing containers with a build configuration file and Cloud Build\n\n**Skills**\n- gcp\n- cloud-build\n- cloud-shell\n- cloud-shell-editor\n- containers\n- docker\n- dockerfile\n\n### Confirm that needed APIs are enabled\n\n- Cloud Build\n- Container Registry\n\n### Building containers with DockerFile and Cloud Build\n\n```bash\n# Create file\ntouch quickstart.sh\n```\n\n```shell\n#!/bin/sh\necho \"Hello, world! The time is $(date).\"\n```\n\n- Dockerfile\n\n```Dockerfile\nFROM alpine\nCOPY quickstart.sh /\nCMD [\"/quickstart.sh\"]\n```\n\n```bash\nchmod +x quickstart.sh\n```\n\n- In Cloud Shell, run the following command to build the Docker container image in Cloud Build:\n\n```bash\ngcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/quickstart-image .\n```\n\n- In the Google Cloud Console, on the Navigation menu (Navigation menu icon), click Container Registry > Images.\n\n### Building containers with a build configuration file and Cloud Build\n\n- In Cloud Shell enter the following command to clone the repository to the lab Cloud Shell:\n\n```bash\ngit clone https://github.com/GoogleCloudPlatform/training-data-analyst\n\n# Create a soft link as a shortcut to the working directory:\nln -s ~/training-data-analyst/courses/ak8s/v1.1 ~/ak8s\n\n# Change to the directory that contains the sample files for this lab:\ncd ~/ak8s/Cloud_Build/a\n\ncat cloudbuild.yaml\n\n# In Cloud Shell, execute the following command to start a Cloud Build using cloudbuild.yaml as the build configuration file:\ngcloud builds submit --config cloudbuild.yaml .\n```\n\n- Container Registry > Images and then click quickstart-image.\n- Navigation menu (Navigation menu icon), click Cloud Build > History.\n\n### Building and testing containers with a build configuration file and Cloud Build\n\n\n- In Cloud Shell, change to the directory that contains the sample files for this lab:\n\n```bash\ncd ~/ak8s/Cloud_Build/b\n\n# In Cloud Shell, execute the following command to view the contents of cloudbuild.yaml\ncat cloudbuild.yaml\n\n\n# In Cloud Shell, execute the following command to start a Cloud Build using cloudbuild.yaml as the build configuration file:\ngcloud builds submit --config cloudbuild.yaml .\n\n# Confirm that your command shell knows that the build failed:\necho $?\n\n\n```"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_020_deploying_google_kubernetes_engine/ReadMe.md",
    "content": "# Deploying Google Kubernetes Engine\n\n[https://www.cloudskillsboost.google](https://www.cloudskillsboost.google)\n\n[Select - Getting Started with Google Kubernetes Engine Course](https://www.cloudskillsboost.google)\n\n**High Level Objectives**\n- Use the Google Cloud Console to build and manipulate GKE clusters\n- Use the Google Cloud Console to deploy a Pod\n\n**Skills**\n- GKE\n- Kubernetes\n- Pods\n- Modify Cluster\n\n\n### Deploy GKE clusters\n\n- cluster name to standard-cluster-1\n- zone to us-central1-a.\n\n\n### Modify GKE clusters\n\n- Change the number of nodes from 3 to 4 and click RESIZE\n\n### View details about workloads in the Google Cloud Console\n\n- In the Google Cloud Console, on the Kubernetes Engine > Workloads page, click nginx-1."
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_021_creating_google_kubernetes_engine_deployments/ReadMe.md",
    "content": "# Creating Google Kubernetes Engine Deployments\n\n[https://www.cloudskillsboost.google](https://www.cloudskillsboost.google)\n\n[Select - Getting Started with Google Kubernetes Engine Course](https://www.cloudskillsboost.google)\n\n**High Level Objectives**\n- Create deployment manifests, deploy to cluster\n- Trigger manual scaling up and down of Pods in deployments\n- Trigger deployment rollout (rolling update to new version) and rollbacks\n- Perform a Canary deployment\n\n**Skills**\n- gcp\n- kubernetes\n- deployments\n- pods\n- scaling\n- rollouts\n- rollbacks\n- canary\n\n\n\n### Create deployment manifests and deploy to the cluster\n\n- Connect\n\n```bash\n# set the environment variable for the zone and cluster name\nexport my_zone=us-central1-a\nexport my_cluster=standard-cluster-1\n\n# Configure kubectl tab completion in Cloud Shell:\nsource <(kubectl completion bash)\n\n# configure access to your cluster for the kubectl command-line tool, using the following command:\ngcloud container clusters get-credentials $my_cluster --zone $my_zone\n\n# In Cloud Shell enter the following command to clone the repository to the lab Cloud Shell:\ngit clone https://github.com/GoogleCloudPlatform/training-data-analyst\n\n# Create a soft link as a shortcut to the working directory:\nln -s ~/training-data-analyst/courses/ak8s/v1.1 ~/ak8s\n\n# Change to the directory that contains the sample files for this lab:\ncd ~/ak8s/Deployments/\n\n```\n\n\n- Create a deployment manifest\n\n- nginx-deployment.yaml\n```yaml\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: nginx-deployment\n  labels:\n    app: nginx\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: nginx\n  template:\n    metadata:\n      labels:\n        app: nginx\n    spec:\n      containers:\n        - name: nginx\n          image: nginx:1.7.9\n          ports:\n            - containerPort: 80\n```\n\n- Apply\n\n```bash\nkubectl apply -f ./nginx-deployment.yaml\n\nkubectl get deployments\n```\n\n### Manually scale up and down the number of Pods in deployments\n\n- Navigation menu ( Navigation menu icon), click Kubernetes Engine > Workloads.\n- nginx-deployment (your deployment) to open the Deployment details page.\n- ACTIONS > Scale > Edit Replicas.\n\n```bash\nkubectl get deployments\n\n# To scale the Pod back up to three replicas, execute the following command:\nkubectl scale --replicas=3 deployment nginx-deployment\n\n\n# View\nkubectl get deployments\n\n```\n\n### Trigger a deployment rollout and a deployment rollback\n\n\n- To update the version of nginx in the deployment, execute the following command:\n\n```bash\nkubectl set image deployment.v1.apps/nginx-deployment nginx=nginx:1.9.1 --record\n\n\n# To view the rollout status, execute the following command:\nkubectl rollout status deployment.v1.apps/nginx-deployment\n\n# To verify the change, get the list of deployments:\nkubectl get deployments\n\n# View the rollout history of the deployment:\nkubectl rollout history deployment nginx-deployment\n```\n\n- Trigger a deployment rollback\n\n```bash\n# To roll back to the previous version of the nginx deployment, execute the following command:\nkubectl rollout undo deployments nginx-deployment\n\n# View the updated rollout history of the deployment:\nkubectl rollout history deployment nginx-deployment\n\n# View the details of the latest deployment revision:\nkubectl rollout history deployment/nginx-deployment --revision=3\n```\n\n\n### Define the service type in the manifest\n\n- Define service types in the manifest\n\n- service-nginx.yaml\n\n```yaml\napiVersion: v1\nkind: Service\nmetadata:\n  name: nginx\nspec:\n  type: LoadBalancer\n  selector:\n    app: nginx\n  ports:\n  - protocol: TCP\n    port: 60000\n    targetPort: 80\n```\n\n- In the Cloud Shell, to deploy your manifest, execute the following command:\n\n```bash\nkubectl apply -f ./service-nginx.yaml\n\n# To view the details of the nginx service, execute the following command:\nkubectl get service nginx\n```\n\n- When the external IP appears, open http://[EXTERNAL_IP]:60000/ in a new browser tab to see the server being served through network load balancing.\n\n\n### Perform a canary deployment\n\n- The manifest file nginx-canary.yaml that is provided for you deploys a single pod running a newer version of nginx than your main deployment. In this task, you create a canary deployment using this new deployment file:\n\n- nginx-canary.yaml\n```yaml\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: nginx-canary\n  labels:\n    app: nginx\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: nginx\n  template:\n    metadata:\n      labels:\n        app: nginx\n        track: canary\n        Version: 1.9.1\n    spec:\n      containers:\n      - name: nginx\n        image: nginx:1.9.1\n        ports:\n        - containerPort: 80\n```\n\n\n```bash\n# Create the canary deployment based on the configuration file:\nkubectl apply -f nginx-canary.yaml\n\n# When the deployment is complete, verify that both the nginx and the nginx-canary deployments are present:\nkubectl get deployments\n\n# Switch back to the Cloud Shell and scale down the primary deployment to 0 replicas:\nkubectl scale --replicas=0 deployment nginx-deployment\n\n# Verify that the only running replica is now the Canary deployment:\nkubectl get deployments\n```\n\n\n- Session affinity\n\n- This potential to switch between different versions may cause problems if there are significant changes in functionality in the canary release. To prevent this you can set the sessionAffinity field to ClientIP in the specification of the service if you need a client's first request to determine which Pod will be used for all subsequent connections.\n\n```yaml\napiVersion: v1\nkind: Service\nmetadata:\n  name: nginx\nspec:\n  type: LoadBalancer\n  sessionAffinity: ClientIP\n  selector:\n    app: nginx\n  ports:\n  - protocol: TCP\n    port: 60000\n    targetPort: 80\n```\n\n"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_021_creating_google_kubernetes_engine_deployments/nginx-canary.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: nginx-canary\n  labels:\n    app: nginx\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: nginx\n  template:\n    metadata:\n      labels:\n        app: nginx\n        track: canary\n        Version: 1.9.1\n    spec:\n      containers:\n        - name: nginx\n          image: nginx:1.9.1\n          ports:\n            - containerPort: 80"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_021_creating_google_kubernetes_engine_deployments/nginx-deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: nginx-deployment\n  labels:\n    app: nginx\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: nginx\n  template:\n    metadata:\n      labels:\n        app: nginx\n    spec:\n      containers:\n        - name: nginx\n          image: nginx:1.7.9\n          ports:\n            - containerPort: 80"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_021_creating_google_kubernetes_engine_deployments/nginx-svc-session-affinity.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: nginx\nspec:\n  type: LoadBalancer\n  sessionAffinity: ClientIP\n  selector:\n    app: nginx\n  ports:\n    - protocol: TCP\n      port: 60000\n      targetPort: 80"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_021_creating_google_kubernetes_engine_deployments/service-nginx.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: nginx\nspec:\n  type: LoadBalancer\n  selector:\n    app: nginx\n  ports:\n    - protocol: TCP\n      port: 60000\n      targetPort: 80"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_022_configuring_persistent_storage_for_google_kubernetes_engine/ReadMe.md",
    "content": "# Configuring Persistent Storage for Google Kubernetes Engine\n\n[https://www.cloudskillsboost.google](https://www.cloudskillsboost.google)\n\n[Select - Getting Started with Google Kubernetes Engine Course](https://www.cloudskillsboost.google)\n\n\n**High Level Objectives**\n- Create manifests for PersistentVolumeClaims (PVCs) for Google Cloud persistent disks (dynamically created or existing)\n- Mount Google Cloud persistent disk PVCs as volumes in Pods\n- Use manifests to create StatefulSets\n- Mount Google Cloud persistent disk PVCs as volumes in StatefulSets\n- Verify the connection of Pods in StatefulSets to particular PVs as the Pods are stopped and restarted\n\n**Skills**\n- gcp\n- kubernetes\n- persistent storage\n- persistent volumes\n- persistent volume claims\n- statefulsets\n\n### Create PVCs\n\n```bash\n# Connect to the lab GKE cluster\nexport my_zone=us-central1-a\nexport my_cluster=standard-cluster-1\n\n# Configure tab completion for the kubectl command-line tool:\nsource <(kubectl completion bash)\n\n# Configure access to your cluster for kubectl:\ngcloud container clusters get-credentials $my_cluster --zone $my_zone\n```\n\n- In Cloud Shell, enter the following command to clone the repository to the lab Cloud Shell:\n\n```bash\ngit clone https://github.com/GoogleCloudPlatform/training-data-analyst\n\n# Create a soft link as a shortcut to the working directory:\nln -s ~/training-data-analyst/courses/ak8s/v1.1 ~/ak8s\n\n# Change to the directory that contains the sample files for this lab:\ncd ~/ak8s/Storage/\n\n# To show that you currently have no PVCs, execute the following command:\nkubectl get persistentvolumeclaim\n\n# To create the PVC, execute the following command:\nkubectl apply -f pvc-demo.yaml\n\n# To show your newly created PVC, execute the following command:\nkubectl get persistentvolumeclaim\n```\n\n\n### Mount and verify Google Cloud persistent disk PVCs in Pods\n\n- To create the Pod with the volume, execute the following command:\n\n```bash\nkubectl apply -f pod-volume-demo.yaml\n\nkubectl get pods\n\n\n# To verify the PVC is accessible within the Pod, you must gain shell access to your Pod. To start the shell session, execute the following command:\nkubectl exec -it pvc-demo-pod -- sh\n\n# To create a simple text message as a web page in the Pod enter the following commands:\necho Test webpage in a persistent volume!>/var/www/html/index.html\nchmod +x /var/www/html/index.html\n\n# Verify the text file contains your message:\ncat /var/www/html/index.html\n\nexit\n```\n\n- Test the persistence of the PV\n\n```bash\n# Delete the pvc-demo-pod:\nkubectl delete pod pvc-demo-pod\n\nkubectl get pods\n\n# To show your PVC, execute the following command:\nkubectl get persistentvolumeclaim\n\n# Redeploy the pvc-demo-pod:\nkubectl apply -f pod-volume-demo.yaml\n\nkubectl get pods\n\nkubectl exec -it pvc-demo-pod -- sh\n\n# To verify that the text file still contains your message execute the following command:\ncat /var/www/html/index.html\n```\n\n\n### Create StatefulSets with PVCs\n\n\n- Before you can use the PVC with the statefulset, you must delete the Pod that is currently using it. Execute the following command to delete the Pod:\n\n```bash\nkubectl delete pod pvc-demo-pod\n```\n\n- To create the StatefulSet with the volume, execute the following command:\n\n```bash\nkubectl apply -f statefulset-demo.yaml\n\n# Use \"kubectl describe\" to view the details of the StatefulSet:\nkubectl describe statefulset statefulset-demo\n\n# List the Pods in the cluster:\nkubectl get pods\n\n# To list the PVCs, execute the following command:\nkubectl get pvc\n\n# Use \"kubectl describe\" to view the details of the first PVC in the StatefulSet:\nkubectl describe pvc hello-web-disk-statefulset-demo-0\n```\n\n### Verify the persistence of Persistent Volume connections to Pods managed by StatefulSets\n\n- To verify that the PVC is accessible within the Pod, you must gain shell access to your Pod. To start the shell session, execute the following command:\n\n```bash\nkubectl exec -it statefulset-demo-0 -- sh\n\n# Verify that there is no index.html text file in the /var/www/html directory:\ncat /var/www/html/index.html\n\n# To create a simple text message as a web page in the Pod enter the following commands:\necho Test webpage in a persistent volume!>/var/www/html/index.html\nchmod +x /var/www/html/index.html\n\n\n# Verify the text file contains your message:\ncat /var/www/html/index.html\n\nexit\n\n\n# Delete the Pod where you updated the file on the PVC:\nkubectl delete pod statefulset-demo-0\n\nkubectl get pods\n\nkubectl exec -it statefulset-demo-0 -- sh\n\n# Verify that the text file still contains your message:\ncat /var/www/html/index.html\n```"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_022_configuring_persistent_storage_for_google_kubernetes_engine/pod-volume-demo.yaml",
    "content": "kind: Pod\napiVersion: v1\nmetadata:\n  name: pvc-demo-pod\nspec:\n  containers:\n    - name: frontend\n      image: nginx\n      volumeMounts:\n        - mountPath: \"/var/www/html\"\n          name: pvc-demo-volume\n  volumes:\n    - name: pvc-demo-volume\n      persistentVolumeClaim:\n        claimName: hello-web-disk"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_022_configuring_persistent_storage_for_google_kubernetes_engine/pvc-demo.yaml",
    "content": "apiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n  name: hello-web-disk\nspec:\n  accessModes:\n    - ReadWriteOnce\n  resources:\n    requests:\n      storage: 30Gi"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_022_configuring_persistent_storage_for_google_kubernetes_engine/statefulset-demo.yaml",
    "content": "kind: Service\napiVersion: v1\nmetadata:\n  name: statefulset-demo-service\nspec:\n  ports:\n    - protocol: TCP\n      port: 80\n      targetPort: 9376\n  type: LoadBalancer\n---\napiVersion: apps/v1\nkind: StatefulSet\nmetadata:\n  name: statefulset-demo\nspec:\n  selector:\n    matchLabels:\n      app: MyApp\n  serviceName: statefulset-demo-service\n  replicas: 3\n  updateStrategy:\n    type: RollingUpdate\n  template:\n    metadata:\n      labels:\n        app: MyApp\n    spec:\n      containers:\n        - name: stateful-set-container\n          image: nginx\n          ports:\n            - containerPort: 80\n              name: http\n          volumeMounts:\n            - name: hello-web-disk\n              mountPath: \"/var/www/html\"\n  volumeClaimTemplates:\n    - metadata:\n        name: hello-web-disk\n      spec:\n        accessModes: [ \"ReadWriteOnce\" ]\n        resources:\n          requests:\n            storage: 30Gi"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_023_anthos_service_mesh_walkthrough/ReadMe.md",
    "content": "#  Anthos Service Mesh Walkthrough\n\n[https://www.cloudskillsboost.google](https://www.cloudskillsboost.google)\n\n[Select - Cloud Operations and Service Mesh with Anthos Course](https://www.cloudskillsboost.google)\n\n**High Level Objectives**\n- Navigate Google Cloud and explore Anthos clusters from the Google Cloud Console.\n- Perform east-west cross-cluster traffic routing.\n- Observe distributed services, view metrics, set up SLOs, and investigate network topology.\n- Use the Anthos Service Mesh Dashboards to verify security and encryption configuration.\n\n**Skills**\n- gcp\n- gke\n- kubernetes\n- istio\n- service mesh\n- anthos\n- SLOs\n- network topology\n- service mesh dashboard\n- cross-cluster traffic routing\n\n\nAnthos Service Mesh (ASM) on Google Kubernetes Engine. Anthos Service Mesh is a managed service based on Istio, the leading open source service mesh\n\n### Intro\n\nTwo GKE clusters called gke-central and gke-west have been provisioned in us-centra1 and us-west2. Anthos Service Mesh has been configured across these clusters to provide cross-cluster service discoverability and secure routing so that a microservice pod running on gke-central can seemlessly communicate with a pod on gke-west. Additionally, the Bank of Anthos application has been deployed across these two clusters as shown in the following diagram.\n\n![img.png](.images/arch-img.png)\n\n\n### Explore the app deployed in Anthos clusters\n\n- On the Navigation menu, click Kubernetes Engine > Clusters, and verify that two Anthos clusters are registered.\n\n- To open websites, click on the IP addresses for each of the instances of istio-ingressgateway. This will open the sign-in page for each website.\n- Deposit funds or send a payment, which will create a new transaction on the shared database.\n- Refresh the pages and confirm that both Transaction History and Current Balance are the same across clusters.\n\n> Notice that even though all services are replicated across clusters, they are both using the same database because the ledger-db is only deployed on one cluster. Anthos Service Mesh routes requests to the available pods regardless of the cluster you are ingressing from. This is called east-west routing.\n\n\n###  Force cross-cluster traffic routing\n\n- To open the dashboard, click on the frontend deployment in the gke-central cluster.\n- On the Actions dropdown, select Scale > Edit replicas.\n- Enter 0 replicas, and click Scale.\n- Return to the istio-ingressgateways IP addresses that you opened before. The application should continue to work.\n- Return to your frontend deployment and scale it back to 1 replica.\n\n### Observe distributed services\n\n- To return to the home page of the Anthos Service Mesh dashboard, on the Navigation menu, click Anthos > Service Mesh.\n\n![img.png](.images/topology.png)\n\n- Click on the frontend workload node, and note the services called by that workload.\n- Click Table view. A list of distributed services in your mesh across your two clusters is displayed.\n- Click Health\n- Click Create SLO.\n- Select Latency as the metric, and click Continue.\n- Set the latency threshhold to 350 ms, and click Continue.\n- Set the Period length to Calendar day, and set the Goal to 99.5%.\n\n### Verify service mesh security\n\n- From the frontend service ASM Dashboard, open the Security (BETA) tab. The following diagram is displayed:\n\n![img.png](.images/security.png)\n\n\n- Notice that all service to service communication has a green lock. That's because all the communication is encrypted over mutual TLS. Also, notice that an unknown source has an open red lock. That means that an unathenticated agent is accessing the frontend service that is communicating over plain text. This unathenticated agent is the browser.\n\n"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_024_observing_anthos_services/ReadMe.md",
    "content": "# Observing Anthos Services\n\n[https://www.cloudskillsboost.google](https://www.cloudskillsboost.google)\n\n[Select - Cloud Operations and Service Mesh with Anthos Course](https://www.cloudskillsboost.google)\n\n**High Level Objectives**\n- Install Anthos Service Mesh, with tracing enabled and configured to use Cloud Trace as the backend.\n- Deploy Bookinfo, an Istio-enabled multi-service application.\n- Enable external access using an Istio Ingress Gateway.\n- Use the Bookinfo application.\n- Evaluate service performance using Cloud Trace features within Google Cloud.\n- Create and monitor service-level objectives (SLOs).\n- Leverage the Anthos Service Mesh Dashboard to understand service performance.\n\n**Skills**\n- gcp\n- gke\n- kubernetes\n- istio\n- service mesh\n- anthos\n- SLOs\n- network topology\n- microservices\n- service performance\n- Istio ingress gateway\n- cloud trace\n\nAnthos Service Mesh (ASM) on Google Kubernetes Engine. Anthos Service Mesh is a managed service based on Istio, the leading open source service mesh\n\n### Install Anthos Service Mesh with tracing enabled\n\n- Set ENV\n\n```bash\nCLUSTER_NAME=gke\nCLUSTER_ZONE=us-central1-b\nPROJECT_ID=$(gcloud config get-value project)\nPROJECT_NUMBER=$(gcloud projects describe ${PROJECT_ID} \\\n  --format=\"value(projectNumber)\")\nFLEET_PROJECT_ID=${FLEET_PROJECT_ID:-$PROJECT_ID}\nIDNS=${PROJECT_ID}.svc.id.goog\nDIR_PATH=.\n```\n\n- Configure kubectl to manage your GKE cluster:\n\n```bash\ngcloud container clusters get-credentials $CLUSTER_NAME \\\n    --zone $CLUSTER_ZONE --project $PROJECT_ID\n    \n# Review your kubectl configuration:\nkubectl config view\n\n# Check that your cluster is running:\ngcloud container clusters list\n\n```\n\n- Install Anthos Service Mesh\n\n```bash\n# Download the Anthos Service Mesh installation script:\ncurl https://storage.googleapis.com/csm-artifacts/asm/asmcli_1.15 > asmcli\n\nchmod +x asmcli\n\n# Use asmcli to install Anthos Service Mesh:\n./asmcli install \\\n--project_id $PROJECT_ID \\\n--cluster_name $CLUSTER_NAME \\\n--cluster_location $CLUSTER_ZONE \\\n--fleet_id $FLEET_PROJECT_ID \\\n--output_dir $DIR_PATH \\\n--managed \\\n--enable_all \\\n--ca mesh_ca\n\n\n# Enable Anthos Service Mesh to send telemetry to Cloud Trace:\ncat <<EOF | kubectl apply -f -\napiVersion: v1\ndata:\n  mesh: |-\n    defaultConfig:\n      tracing:\n        stackdriver: {}\nkind: ConfigMap\nmetadata:\n  name: istio-asm-managed\n  namespace: istio-system\nEOF\n```\n\n### Install the microservices-demo application on the cluster\n\n- Online Boutique is a cloud-native microservices demo application. Online Boutique consists of a 10-tier microservices application. The application is a web-based ecommerce app where users can browse items, add them to the cart, and purchase them.\n- Google uses this application to demonstrate use of technologies like Kubernetes/GKE, Istio/ASM, Google Operations Suite, gRPC and OpenCensus. This application works on any Kubernetes cluster (such as a local one) and on Google Kubernetes Engine. It’s easy to deploy with little to no configuration.\n\n- Configure the mesh data plane\n- Enable Istio sidecar injection:\n\n```bash\nkubectl label namespace default istio.io/rev=asm-managed --overwrite\n```\n\n- To enable Google to manage your data plane so that the sidecar proxies will be automatically updated for you, annotate the namespace:\n\n```bash\nkubectl annotate --overwrite namespace default \\\n  mesh.cloud.google.com/proxy='{\"managed\":\"true\"}'\n```\n\n- Install the Online Boutique application on the GKE cluster\n\n```bash\nkubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/microservices-demo/master/release/kubernetes-manifests.yaml\nkubectl patch deployments/productcatalogservice -p '{\"spec\":{\"template\":{\"metadata\":{\"labels\":{\"version\":\"v1\"}}}}}'\n```\n\n- To be able to access the application from outside the cluster, install the ingress Gateway:\n\n```bash\ngit clone https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages\nkubectl apply -f anthos-service-mesh-packages/samples/gateways/istio-ingressgateway\n```\n\n- Configure the Gateway:\n\n```bash\nkubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/microservices-demo/master/release/istio-manifests.yaml\n```\n\n- Return to the Workloads and Services & Ingress pages, and verify that the new deployments and services have been created on the gke cluster.\n\n- Look on the Services & Ingress page within the console.\n\n### Review Google Cloud's operations suite functionality\n\n- On the Navigation menu, click Trace > Trace List.\n\n### Deploy a canary release that has high latency\n\n```bash\n# In Cloud Shell, clone the repository that has the configuration files you need for this part of the lab:\ngit clone https://github.com/GoogleCloudPlatform/istio-samples.git \\\n  ~/istio-samples\n  \n# Create the new resources on the gke cluster:\nkubectl apply -f ~/istio-samples/istio-canary-gke/canary/destinationrule.yaml\nkubectl apply -f ~/istio-samples/istio-canary-gke/canary/productcatalog-v2.yaml\nkubectl apply -f ~/istio-samples/istio-canary-gke/canary/vs-split-traffic.yaml  \n```\n\n### Define your service level objective\n\n- Navigation menu, click Anthos\n- In the Services list, click productcatalogservice -> Health\n- Click Create SLO.\n- In the Set your SLI slideout, for metric, select Latency.\n- Select Request-based as the method of evaluation.\n- Click Continue.\n- Set Latency Threshold to 1000, and click Continue.\n- Set Period type to Calendar.\n- Set Period length to Calendar day.\n- Performance goal to 99.5%.\n\n### Diagnose the problem\n\n- Click on your SLO entry in the SLO list.\n- From the Breakdown By dropdown, select Source service.\n\n- Use Cloud Trace to better understand where the delay is\n- In the Google Cloud Console, on the Navigation menu, click Trace > Trace List.\n- Click on a dot that charts at around 3000ms; it should represent one of the requests to the product catalog service.\n\n\n### Roll back the release and verify an improvement\n\n- In Cloud Shell, back out the canary release:\n\n```bash\nkubectl delete -f ~/istio-samples/istio-canary-gke/canary/destinationrule.yaml\nkubectl delete -f ~/istio-samples/istio-canary-gke/canary/productcatalog-v2.yaml\nkubectl delete -f ~/istio-samples/istio-canary-gke/canary/vs-split-traffic.yaml\n```\n\n- Click on productcatalogservice, and then in the menu pane, click Health.\n- Compare the current compliance metric with the one you saw earlier. It should be higher now, reflecting the fact that you are no longer seeing high-latency requests.\n\n### Visualize your mesh with the Anthos Service Mesh dashboard\n\n- On the Navigation menu, click Anthos > Service Mesh.\n- Click Topology. A chart representing your service mesh is displayed."
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_025_managing_traffic_with_anthos_service_mesh/ReadMe.md",
    "content": "# Managing Traffic Flow with Anthos Service Mesh\n\n\n\n[https://www.cloudskillsboost.google](https://www.cloudskillsboost.google)\n\n[Select - Cloud Operations and Service Mesh with Anthos Course](https://www.cloudskillsboost.google)\n\n**High Level Objectives**\n- Configure and use Istio Gateways\n- Apply default destination rules, for all available versions\n- Apply virtual services to route by default to only one version\n- Route to a specific version of a service based on user identity\n- Shift traffic gradually from one version of a microservice to another\n- Use the Anthos Service Mesh dashboard to view routing to multiple versions\n- Setup networking best practices such as retries, circuit breakers and timeouts\n\n**Skills**\n- gcp\n- gke\n- kubernetes\n- istio\n- service mesh\n- anthos\n- destination rules\n- virtual services\n- traffic management\n- retries\n- circuit breakers\n- timeouts\n\nAnthos Service Mesh’s traffic management model relies on the following two components:\n- Control plane: manages and configures the Envoy proxies to route traffic and enforce polices.\n- Data plane: encompasses all network communication between microservices performed at runtime by the Envoy proxies.\n\n![img.png](.images/img.png)\n\n\n## Review Traffic Management use cases\n\n> In Istio, when an incoming request arrives at a Kubernetes cluster, it first reaches the Gateway resource,\n> and then the VirtualService resource. The Gateway resource receives the incoming traffic and is responsible\n> for routing the traffic to the correct VirtualService based on the specified rules. The VirtualService resource\n> then applies additional routing rules to further direct the traffic to the appropriate destination service or pod.\n\n- Example: traffic splitting\n- Example: timeouts\n- Example: retries\n- Example: fault injection: inserting delays\n- Example: fault injection: inserting aborts\n- Example: conditional routing: based on request headers\n\n\n## Setup\n\n```bash\n# In Cloud Shell, set environment variables for the zone and cluster name:\nexport CLUSTER_NAME=gke\nexport CLUSTER_ZONE=us-central1-b\n\n# Configure kubectl command line access by running:\nexport GCLOUD_PROJECT=$(gcloud config get-value project)\ngcloud container clusters get-credentials $CLUSTER_NAME \\\n    --zone $CLUSTER_ZONE --project $GCLOUD_PROJECT\n    \n# Check that your cluster is up and running:\ngcloud container clusters list\n\n\n# Ensure the Kubernetes pods for the Anthos Service Mesh control plane are deployed:\nkubectl get pods -n istio-system\n\n\n# Ensure corresponding Kubernetes services for the Anthos Service Mesh control plane are deployed:\nkubectl get service -n istio-system\n\n# Ensure corresponding Kubernetes pods for the Anthos Service Mesh control plane are deployed, so that telemetry data is displayed in the ASM Dashboard:\nkubectl get pods -n asm-system\n\n   \n```\n\n- Verify the Bookinfo deployment\n\n```bash\nkubectl get pods\n\n# Review running application services:\nkubectl get services\n\n```\n\n\n## Install Gateways to enable ingress\n\nIn a Kubernetes environment, the Kubernetes Ingress Resource is used to specify services that should be exposed outside the cluster. In Anthos Service Mesh, a better approach, which also works in Kubernetes and other environments, is to use a Gateway resource. A Gateway allows mesh features such as monitoring, mTLS, and advanced routing capabilities rules to be applied to traffic entering the cluster.\n\n![img.png](.images/img2.png)\n\n\n- Install an ingress gateway in your cluster\n\n```bash\nkubectl create namespace ingress\n\n# Label the gateway namespace with a revision label for auto-injection:\nkubectl label namespace ingress \\\n  istio.io/rev=$(kubectl -n istio-system get pods -l app=istiod -o json | jq -r '.items[0].metadata.labels[\"istio.io/rev\"]') \\\n  --overwrite\n```\n\n- Download and apply the gateway configuration files. \n- These include the pods and services that will first receive the incoming requests from outside the cluster:\n\n```bash\ngit clone https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages\nkubectl apply -n ingress -f anthos-service-mesh-packages/samples/gateways/istio-ingressgateway\n```\n\n- After you create the deployment, verify that the new services are working:\n\n```bash\nkubectl get pod,service -n ingress\n\n# Notice the resource is a LoadBalancer. This ingress gateway uses an external TCP load balancer in GCP.\n```\n\n- Deploy the Gateway to specify the port and protocol to be used. In this case, the gateway enables HTTP traffic over port 80:\n- The Gateway resource must be located in the same namespace as the gateway deployment.\n\n```yaml\ncat <<EOF | kubectl apply -f -\napiVersion: networking.istio.io/v1alpha3\nkind: Gateway\nmetadata:\n  name: bookinfo-gateway\n  namespace: ingress\nspec:\n  selector:\n    istio: ingressgateway\n  servers:\n  - port:\n      number: 80\n      name: http\n      protocol: HTTP\n    hosts:\n    - \"*\"\nEOF\n```\n\n- Deploy the VirtualService to route traffic from the gateway pods and service that you just created into the BookInfo application:\n- The VirtualService resource must be located in the same namespace as the application. Notice that it establishes the productpage service as the default destination\n```bash\ncat <<EOF | kubectl apply -f -\napiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: bookinfo\nspec:\n  hosts:\n  - \"*\"\n  gateways:\n  - bookinfo-gateway\n  http:\n  - match:\n    - uri:\n        exact: /productpage\n    - uri:\n        prefix: /static\n    - uri:\n        exact: /login\n    - uri:\n        exact: /logout\n    - uri:\n        prefix: /api/v1/products\n    route:\n    - destination:\n        host: productpage\n        port:\n          number: 9080\nEOF\n```\n\n\n> In Istio, when an incoming request arrives at a Kubernetes cluster, it first reaches the Gateway resource, \n> and then the VirtualService resource. The Gateway resource receives the incoming traffic and is responsible \n> for routing the traffic to the correct VirtualService based on the specified rules. The VirtualService resource \n> then applies additional routing rules to further direct the traffic to the appropriate destination service or pod. \n> So in the example manifest, the incoming traffic will first reach the bookinfo-gateway Gateway resource and then \n> it will be directed to the bookinfo VirtualService based on the specified matching rules. The VirtualService \n> will then route the traffic to the appropriate destination based on the defined routing rules.\n\n- Verify that the Gateway and VirtualService have been created and notice that the VirtualService is pointing to the Gateway:\n\n```bash\nkubectl get gateway,virtualservice\n\n# Save this external IP in your Cloud Shell environment:\nexport GATEWAY_URL=$(kubectl get svc -n ingress istio-ingressgateway \\\n-o=jsonpath='{.status.loadBalancer.ingress[0].ip}')\necho The gateway address is $GATEWAY_URL\n```\n\n- Generate some background traffic\n\n```bash\nsudo apt install siege\n\n# Use siege to create traffic against your services:\nsiege http://${GATEWAY_URL}/productpage\n\n```\n\n- Access the BookInfo application\n\n```bash\n# Initialize the new Cloud Shell tab:\nexport CLUSTER_NAME=gke\nexport CLUSTER_ZONE=us-central1-b\nexport GCLOUD_PROJECT=$(gcloud config get-value project)\ngcloud container clusters get-credentials $CLUSTER_NAME \\\n    --zone $CLUSTER_ZONE --project $GCLOUD_PROJECT\nexport GATEWAY_URL=$(kubectl get svc istio-ingressgateway \\\n-o=jsonpath='{.status.loadBalancer.ingress[0].ip}' -n ingress)\n\n\n# Confirm that the Bookinfo application responds by sending a curl request to it from some pod, within the cluster, for example from ratings:\nkubectl exec -it \\\n$(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}') \\\n-c ratings -- curl productpage:9080/productpage \\\n| grep -o \"<title>.*</title>\"\n\n# Check that the Bookinfo app responds to a curl request sent to it from outside the cluster, using the external IP saved earlier:\ncurl -I http://${GATEWAY_URL}/productpage\n\n# Open the Bookinfo application in your browser. Run this command in the Cloud Shell to get the full URL:\necho http://${GATEWAY_URL}/productpage\n\n\n```\n\n## Use the Anthos Service Mesh dashboard view routing to multiple versions\n\n- Navigation > Anthos > Service Mesh.\n- Click on the productpage service, then select Connected Services on the left.\n- Select the OUTBOUND tab and note the two services called by the productpage pods.\n- Click on the reviews service.\n- Note the service statistics, then select the Infrastructure link on the left-hand menu.\n- You can see that there are multiple pods, running different versions of the reviews logic, that receive traffic sent to the reviews service.\n- Click on Traffic in the left-hand menu to see another view of traffic distribution.\n- You can see that there is relatively even distribution of traffic across the three backend pods running the different versions of the application logic.\n- Click on the Anthos Service Mesh logo in the upper left corner to return to the main dashboard page.\n- Click on the TOPOLOGY link in the upper-right corner\n- Rearrange the mesh graph so that you can easily view:\n   - The productpage service going to productpage deployment\n   - The productpage deployment going to reviews service\n   - The reviews service going to three version of reviews\n\n## Apply default destination rules, for all available versions\n\n- Review the configuration found in [Github](https://github.com/istio/istio/blob/master/samples/bookinfo/networking/destination-rule-all.yaml) . This configuration defines 4 DestinationRule resources, 1 for each servic\n- Apply the configuration with the following command in Cloud Shell:\n\nDestinationRule is an Istio resource that is used to configure traffic routing and policy rules for network traffic between Kubernetes services. It allows you to specify rules for how traffic should be routed to different versions of a service based on various criteria such as headers, URL paths, and user agents.\n\nHere are some common use cases for DestinationRules:\n\n- Traffic splitting: You can use DestinationRule to distribute traffic to different versions of a service based on the percentage of traffic you want to send to each version.\n- Fault injection: DestinationRule can be used to inject errors or faults into the traffic to a specific version of a service for testing purposes.\n- Circuit breaking: You can configure DestinationRule to apply circuit breaking rules to prevent cascading failures in your service mesh.\n- Traffic shaping: DestinationRule can be used to limit the amount of traffic that can be sent to a particular version of a service or to specific instances of a service.\n- Security: You can use DestinationRule to enforce mutual TLS authentication and other security policies for traffic between services. \n\nDestinationRule is a powerful tool for controlling how traffic flows between services in your Kubernetes cluster, and can help you improve the reliability, performance, and security of your applications.\n\n```bash\nkubectl apply -f https://raw.githubusercontent.com/istio/istio/master/samples/bookinfo/networking/destination-rule-all.yaml\n\n# Check that 4 DestinationRule resources were defined.\nkubectl get destinationrules\n\n# Review the details of the destination rules:\nkubectl get destinationrules -o yaml\n\n\n```\n\n- Wait for 1-2 minutes, then return to the Anthos Service Mesh dashboard.\n- Look in both the table and topology views and confirm that the traffic continues to be evenly distributed across the three backend versions.\n\n## Apply virtual services to route by default to only one version\n\n- Review the configuration found in [Github](https://github.com/istio/istio/blob/master/samples/bookinfo/networking/virtual-service-all-v1.yaml). This configuration defines 4 VirtualService resources, 1 for each service.\n- Apply the configuration with the following command in Cloud Shell:\n\n```bash\nkubectl apply -f https://raw.githubusercontent.com/istio/istio/master/samples/bookinfo/networking/virtual-service-all-v1.yaml\n\n# Check that 4 routes, VirtualService resources, were defined:\nkubectl get virtualservices\n\n# In Cloud Shell, get the external IP address of the ingress gateway:\necho $GATEWAY_URL\n```\n\n- Open the Bookinfo site in your browser. The URL is http://[GATEWAY_URL]/productpage, where GATEWAY_URL is the External IP address of the ingress.\n- Notice that the Book Reviews part of the page displays with no rating stars, no matter how many times you refresh. This is because you configured the mesh to route all traffic for the reviews service to the version reviews:v1 and this version of the service does not access the star ratings service.\n- Wait for 1-2 minutes, then return to the Anthos Service Mesh dashboard by selecting Navigation > Anthos > Service Mesh > reviews > Infrastructure.\n- Select SHOW TIMELINE and focus the chart on the last 5 minutes of traffic. You should see that the traffic goes from being evenly distributed to being routed to the version 1 workload 100% of the time.\n- You can also see the new traffic distribution by looking at the Traffic tab or the topology view - though these both take a couple extra minutes before the data is shown.\n\n\n## Route to a specific version of a service based on user identity\n\n- Review the configuration found in [Github](https://github.com/istio/istio/blob/master/samples/bookinfo/networking/virtual-service-reviews-test-v2.yaml). This configuration defines 1 VirtualService resource.\n- Apply the configuration with the following command in Cloud Shell:\n\n```bash\nkubectl apply -f https://raw.githubusercontent.com/istio/istio/master/samples/bookinfo/networking/virtual-service-reviews-test-v2.yaml\n\n# Confirm the rule is created:\nkubectl get virtualservice reviews\n```\n\n- Browse again to /productpage of the Bookinfo application.\n- This time, click Sign in, and use User Name of jason with no password.\n- Notice the UI shows stars from the rating service.\n\n- To better visualize the effect of the new traffic routing, you can create a new background load of authenticated requests to the service\n- Start a new siege session, generating only 20% of the traffic of the first, but with all requests being authenticated as jason:\n\n```bash\ncurl -c cookies.txt -F \"username=jason\" -L -X \\\n    POST http://$GATEWAY_URL/login\ncookie_info=$(grep -Eo \"session.*\" ./cookies.txt)\ncookie_name=$(echo $cookie_info | cut -d' ' -f1)\ncookie_value=$(echo $cookie_info | cut -d' ' -f2)\nsiege -c 5 http://$GATEWAY_URL/productpage \\\n    --header \"Cookie: $cookie_name=$cookie_value\"\n```\n\n- Wait for 1-2 minutes, refresh the page showing the Infrastructure telemetry, adjust the timeline to show the current time, and then check in the Anthos Dashboard and you should see that roughly 85% of requests over the last few minutes have gone to version 1 because they are unathenticated. About 15% have gone to version two because they are made as jason.\n- In Cloud Shell, cancel the siege session by typing Ctrl+c.\n- Clean up from this task by removing the application virtual services:\n\n```bash\nkubectl delete -f https://raw.githubusercontent.com/istio/istio/master/samples/bookinfo/networking/virtual-service-all-v1.yaml\n```\n\n- You can wait for 1-2 minutes, refresh the Anthos Service Mesh dashboard, adjust the timeline to show the current time, and confirm that traffic is once again evenly balanced across versions.\n\n\n## Shift traffic gradually from one version of a microservice to another\n\n\n- In Cloud Shell, route all traffic to the v1 version of each service:\n\n```bash\nkubectl apply -f https://raw.githubusercontent.com/istio/istio/master/samples/bookinfo/networking/virtual-service-all-v1.yaml \n```\n\n- Browse again to /productpage of the Bookinfo application and confirm that you do not see stars with reviews\n- Wait 1 minute, then refresh the Anthos Service Mesh dashboard, adjust the timeline to show the current time, and confirm that all traffic has been routed to the v1 backend.\n- Transfer 50% of the traffic from reviews:v1 to reviews:v3.\n\n```bash\nkubectl apply -f \\\n    https://raw.githubusercontent.com/istio/istio/master/samples/bookinfo/networking/virtual-service-reviews-50-v3.yaml\n    \n    \n```\n\n- Browse again to /productpage of the Bookinfo application.\n\n- Notice a roughly even distribution of reviews with no stars, from v1, and reviews with red stars, from v3, that accesses the ratings service.\n- Wait 1 minute, then refresh the page, adjust the timeline to show the, current time, and confirm in the Anthos Service Mesh dashboard that traffic to the reviews service is split 50/50 between v1 and v3.\n- Transfer the remaining 50% of traffic to reviews:v3.\n- Assuming you decide that the reviews:v3 service is stable, route 100% of the traffic to reviews:v3 by applying this virtual service:\n\n```bash\nkubectl apply -f https://raw.githubusercontent.com/istio/istio/master/samples/bookinfo/networking//virtual-service-reviews-v3.yaml\n```\n\n- Test the new routing configuration using the Bookinfo UI.\n- Browse again to /productpage of the Bookinfo application.\n\n- Refresh the /productpage; you will always see book reviews with red colored star ratings for each review.\n\n- Wait 1 minute, refresh the page, then confirm in the Anthos Service Mesh dashboard that all traffic to the reviews service is sent to v3.\n\n- Clean up from this exercise, by removing the application virtual services.\n\n```bash\nkubectl delete -f https://raw.githubusercontent.com/istio/istio/master/samples/bookinfo/networking/virtual-service-all-v1.yaml\n```\n\n## Add timeouts to avoid waiting indefinitelly for service replies\n\n- In Cloud Shell, route all traffic to the v1 version of each service:\n\n```bash\nkubectl apply -f https://raw.githubusercontent.com/istio/istio/master/samples/bookinfo/networking/virtual-service-all-v1.yaml\n```\n\n- Route requests to v2 of the reviews service, i.e., a version that calls the ratings service:\n\n```bash\nkubectl apply -f - <<EOF\napiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: reviews\nspec:\n  hosts:\n  - reviews\n  http:\n  - route:\n    - destination:\n        host: reviews\n        subset: v2\nEOF\n```\n\n- Add a 2 second delay to calls to the ratings service:\n\n```bash\nkubectl apply -f - <<EOF\napiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: ratings\nspec:\n  hosts:\n  - ratings\n  http:\n  - fault:\n      delay:\n        percent: 100\n        fixedDelay: 2s\n    route:\n    - destination:\n        host: ratings\n        subset: v1\nEOF\n```\n\n- Open the Bookinfo URL http://$GATEWAY_URL/productpage in your browser. You should see the Bookinfo application working normally (with ratings stars displayed), but there is a 2 second delay whenever you refresh the page. \n- Navigate to reviews / metrics to see that the latency is spiking to 2 seconds\n- Now add a half second request timeout for calls to the reviews service:\n\n```bash\nkubectl apply -f - <<EOF\napiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: reviews\nspec:\n  hosts:\n  - reviews\n  http:\n  - route:\n    - destination:\n        host: reviews\n        subset: v2\n    timeout: 0.5s\nEOF\n```\n\n- You should now see that it returns in about 1 second, instead of 2, and the reviews are unavailable.\n\n```bash\nkubectl apply -f - <<EOF\napiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: productpage\nspec:\n  hosts:\n  - productpage\n  http:\n  - route:\n    - destination:\n        host: productpage\n        subset: v1\n    retries:\n      attempts: 1\n      perTryTimeout: 2s\nEOF\n```\n\n- Clean up from this exercise, by removing the application virtual services.\n\n```bash\nkubectl delete -f https://raw.githubusercontent.com/istio/istio/master/samples/bookinfo/networking/virtual-service-all-v1.yaml \n```\n\n## Add circuit breakers to enhance your microservices' resiliency\n\n- In Cloud Shell, route all traffic to the v1 version of each service:\n\n```bash\nkubectl apply -f https://raw.githubusercontent.com/istio/istio/master/samples/bookinfo/networking/virtual-service-all-v1.yaml\n```\n\n- Create a destination rule to apply circuit breaking settings when calling the productpage service:\n\n```bash\nkubectl apply -f - <<EOF\napiVersion: networking.istio.io/v1alpha3\nkind: DestinationRule\nmetadata:\n  name: productpage\nspec:\n  host: productpage\n  subsets:\n  - name: v1\n    labels:\n      version: v1\n  trafficPolicy:\n    connectionPool:\n      tcp:\n        maxConnections: 1\n      http:\n        http1MaxPendingRequests: 1\n        maxRequestsPerConnection: 1\n    outlierDetection:\n      consecutive5xxErrors: 1\n      interval: 1s\n      baseEjectionTime: 3m\n      maxEjectionPercent: 100\nEOF\n```\n\n- In Cloud Shell, go to the first tab and run Ctl+c to stop the siege.\n\n- Create a client to send traffic to the productpage service.\n\n- The client is a simple load-testing client called fortio. Fortio lets you control the number of connections, concurrency, and delays for outgoing HTTP calls. You will use this client to “trip” the circuit breaker policies you set in the DestinationRule\n\n```bash\n  kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.9/samples/httpbin/sample-client/fortio-deploy.yaml\n```\n\n- Log in to the client pod and use the fortio tool to call the productpage. Pass in curl to indicate that you just want to make one call:\n\n```bash\nexport FORTIO_POD=$(kubectl get pods -lapp=fortio -o 'jsonpath={.items[0].metadata.name}')\nkubectl exec \"$FORTIO_POD\" -c fortio -- /usr/bin/fortio curl -quiet http://${GATEWAY_URL}/productpage\n```\n\n- Call the service with two concurrent connections (-c 2) and send 20 requests (-n 20):\n\n```bash\nkubectl exec \"$FORTIO_POD\" -c fortio -- /usr/bin/fortio load -c 2 -qps 0 -n 20 -loglevel Warning http://${GATEWAY_URL}/productpage\n\n```\n\n- Bring the number of concurrent connections up to 3:\n\n```bash\nkubectl exec \"$FORTIO_POD\" -c fortio -- /usr/bin/fortio load -c 3 -qps 0 -n 30 -loglevel Warning http://${GATEWAY_URL}/productpage\n```"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_025_managing_traffic_with_anthos_service_mesh/conditional-routing-labels.yaml",
    "content": "#  conditional routing: based on source labels\n# A rule can indicate that it only applies to calls from workloads (pods) implementing the version v2 of the reviews service.\napiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: ratings\nspec:\n  hosts:\n  - ratings\n  http:\n  - match:\n    - sourceLabels:\n        app: reviews\n        version: v2"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_025_managing_traffic_with_anthos_service_mesh/conditional-routing-req-headers.yaml",
    "content": "# conditional routing: based on request headers\n# The below rule only applies to an incoming request if it includes a custom \"end-user\" header that contains the string “atharvak”.\n\n\napiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: reviews\nspec:\n  hosts:\n    - reviews\n  http:\n  - match:\n    - headers:\n        end-user:\n          exact: atharvak"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_025_managing_traffic_with_anthos_service_mesh/fault-injection-aborts.yaml",
    "content": "# fault injection: inserting aborts\n# The below example returns an HTTP 400 error code for 10% of the requests to the ratings service \"v1\"\n\napiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\nname: ratings\nspec:\nhosts:\n  - ratings\nhttp: - fault:\nabort:\npercent: 10 httpStatus: 400\nroute:\n  - destination:\nhost: ratings subset: v1"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_025_managing_traffic_with_anthos_service_mesh/fault-injection-delays.yaml",
    "content": "# fault injection: inserting delays: Fault injection is a testing method that introduces errors into a system to ensure that it\n# can withstand and recover from error conditions.\n# This example introduces a 5 second delay in 10% of the requests to the \"v1\" version of the ratings microservice.\napiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: ratings\nspec:\n  hosts:\n  - ratings\n  http:\n  - fault:\n      delay:\n        percent: 10\n        fixedDelay: 5s\n    route:\n    - destination:\n      host: ratings\n      subset: v1"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_025_managing_traffic_with_anthos_service_mesh/manifests/destinationrule--productpage-circuit-breaker.yaml",
    "content": "# DestinationRule is an Istio resource that defines policies to apply to traffic intended\n# for a specific service instance. It is used to configure traffic management features such\n# as load balancing, circuit breaking, and fault injection.\n\napiVersion: networking.istio.io/v1alpha3\nkind: DestinationRule\nmetadata:\n  name: productpage\nspec:\n  # This specifies the host name that this DestinationRule applies to, which is the \"productpage\" service.\n  host: productpage\n  subsets:\n    # This defines a subset of the \"productpage\" service called \"v1\" that has a label of version: v1.\n    - name: v1\n      labels:\n        version: v1\n  trafficPolicy:\n    connectionPool:\n      # This defines connection pool settings for the service. Specifically, it limits the maximum\n      # number of TCP connections to 1 and the maximum number of pending HTTP requests per connection to 1.\n      tcp:\n        maxConnections: 1\n      http:\n        http1MaxPendingRequests: 1\n        maxRequestsPerConnection: 1\n    outlierDetection:\n    # This defines outlier detection settings for the service.\n    # Specifically, it specifies that if there are more than 1 consecutive 5xx HTTP responses from the \"productpage\"\n    # service within a 1-second interval, the service instance will be ejected from the pool for 3 minutes.\n    # Additionally, if all instances of the service are ejected, Istio will still allow traffic to be sent to the service,\n    # up to 100% of the total traffic.\n      consecutive5xxErrors: 1\n      interval: 1s\n      baseEjectionTime: 3m\n      maxEjectionPercent: 100"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_025_managing_traffic_with_anthos_service_mesh/manifests/destinationrule-all.yaml",
    "content": "# This is a Kubernetes manifest file for an Istio DestinationRule resource, which is used\n# to configure traffic routing and policy rules for network traffic between Kubernetes services.\n# Here's what this particular manifest is doing:\n\napiVersion: networking.istio.io/v1alpha3\nkind: DestinationRule\nmetadata:\n  name: productpage\nspec:\n  # This specifies the name of the Kubernetes service that this DestinationRule applies to. In this case, it is the \"productpage\" service.\n  host: productpage\n  subsets:\n  # This defines a subset within the \"productpage\" service, which is identified by the name \"v1\".\n    - name: v1\n      labels:\n        version: v1\n\n# Overall, this manifest is creating a DestinationRule for the \"productpage\" service with a\n# single subset named \"v1\" that has a label of \"version: v1\". This subset can be used to route traffic\n# specifically to instances of the \"productpage\" service with that label, or to apply policy rules specific to that version of the service.\n---\napiVersion: networking.istio.io/v1alpha3\nkind: DestinationRule\nmetadata:\n  name: reviews\nspec:\n  host: reviews\n  subsets:\n    - name: v1\n      labels:\n        version: v1\n    - name: v2\n      labels:\n        version: v2\n    - name: v3\n      labels:\n        version: v3\n---\napiVersion: networking.istio.io/v1alpha3\nkind: DestinationRule\nmetadata:\n  name: ratings\nspec:\n  host: ratings\n  subsets:\n    - name: v1\n      labels:\n        version: v1\n    - name: v2\n      labels:\n        version: v2\n    - name: v2-mysql\n      labels:\n        version: v2-mysql\n    - name: v2-mysql-vm\n      labels:\n        version: v2-mysql-vm\n---\napiVersion: networking.istio.io/v1alpha3\nkind: DestinationRule\nmetadata:\n  name: details\nspec:\n  host: details\n  subsets:\n    - name: v1\n      labels:\n        version: v1\n    - name: v2\n      labels:\n        version: v2\n---"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_025_managing_traffic_with_anthos_service_mesh/manifests/gateway--bookinfo-gateway-port-80-http.yaml",
    "content": "apiVersion: networking.istio.io/v1alpha3\nkind: Gateway\nmetadata:\n  name: bookinfo-gateway\n  namespace: ingress\nspec:\n  selector:\n    istio: ingressgateway\n  # This field specifies the servers that will be created for the Gateway.\n  servers:\n    # This field specifies the port that the server will listen on.\n    - port:\n        number: 80\n        name: http\n        # This field specifies the protocol used by the port. In this case, it is using HTTP.\n        protocol: HTTP\n      # This field specifies the list of hosts that this Gateway will accept traffic for. In this case, it is using the wildcard character \"*\" to accept traffic for all hosts.\n      hosts:\n        - \"*\"\n"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_025_managing_traffic_with_anthos_service_mesh/manifests/virtualService-2-or-1-second-delay-to-calls-to-ratings-service.yaml",
    "content": "apiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: ratings\nspec:\n  hosts:\n    - ratings\n  http:\n    - fault:\n        delay:\n          percent: 100\n          fixedDelay: 1s\n      route:\n        - destination:\n            host: ratings\n            subset: v1"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_025_managing_traffic_with_anthos_service_mesh/manifests/virtualservice--all-to-v1.yaml",
    "content": "apiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: productpage\nspec:\n  hosts:\n    # This specifies the host name that this VirtualService applies to, which is the \"productpage\" service.\n    - productpage\n  http:\n    - route:\n        - destination:\n            # This defines the route that the VirtualService should use for incoming HTTP traffic to the \"productpage\" service.\n            # Specifically, it routes all traffic to the \"v1\" subset of the \"productpage\" service.\n            host: productpage\n            subset: v1\n# Why both spec: hosts: - productpage and http: - route: - destination: host: productpage subset: v1 as same ?\n# It's true that both the spec.hosts and spec.http.route.destination.host fields in the Istio VirtualService resource manifest are set to productpage, which may seem redundant or confusing. However, each field serves a different purpose:\n# spec.hosts: This field specifies the list of hosts that this VirtualService applies to. In this case, there is only one host specified, which is the productpage service.\n# spec.http.route.destination.host: This field specifies the destination host to which the incoming HTTP requests should be routed by the VirtualService. In this case, it is also set to productpage, which means that all incoming HTTP requests for the productpage service will be routed to the destination host specified in the route field.\n# The reason why both fields are set to productpage in this example is because the VirtualService is intended to apply to only one Kubernetes service (productpage) and route all incoming HTTP traffic to a specific subset (v1) of that service. In more complex scenarios where a VirtualService may apply to multiple hosts, or multiple subsets of the same host, you would need to specify the spec.hosts and spec.http.route.destination.host fields differently for each host or subset.\n---\napiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: reviews\nspec:\n  hosts:\n    - reviews\n  http:\n    - route:\n        - destination:\n            host: reviews\n            subset: v1\n---\napiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: ratings\nspec:\n  hosts:\n    - ratings\n  http:\n    - route:\n        - destination:\n            host: ratings\n            subset: v1\n---\napiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: details\nspec:\n  hosts:\n    - details\n  http:\n    - route:\n        - destination:\n            host: details\n            subset: v1\n---"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_025_managing_traffic_with_anthos_service_mesh/manifests/virtualservice--bookinfo-based-on-exact-and-prefix-uri-match.yaml",
    "content": "apiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: bookinfo\nspec:\n  #  This field specifies the list of hosts that this VirtualService will apply to.\n  #  In this case, it is using the wildcard character \"*\" to match all hosts.\n  hosts:\n    - \"*\"\n  # This field specifies the list of Gateway resources that this VirtualService will apply to.\n  # In this case, it is using the Gateway resource named \"bookinfo-gateway\".\n  gateways:\n    - bookinfo-gateway\n  # This field specifies the configuration for HTTP traffic routing.\n  http:\n    # This field specifies the list of HTTP path matching rules that this VirtualService will apply to.\n    # In this case, it is using a set of URI path matching rules.\n    - match:\n        - uri:\n            # This field specifies an exact match for the URI path.\n            exact: /productpage\n        - uri:\n            # This field specifies a prefix match for the URI path.\n            prefix: /static\n        - uri:\n            exact: /login\n        - uri:\n            exact: /logout\n        - uri:\n            prefix: /api/v1/products\n      # This field specifies the list of destinations that matching traffic will be routed to.\n      route:\n        #  This field specifies the destination host and port for the matching traffic.\n        - destination:\n            # This field specifies the name of the destination host which is productpage service\n            host: productpage\n            port:\n              number: 9080"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_025_managing_traffic_with_anthos_service_mesh/manifests/virtualservice--half-second-timeout-for-calls-to-reviews.yaml",
    "content": "apiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: reviews\nspec:\n  hosts:\n    - reviews\n  http:\n    - route:\n        - destination:\n            host: reviews\n            subset: v2\n      timeout: 0.5s"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_025_managing_traffic_with_anthos_service_mesh/manifests/virtualservice--productpage-per-try-timeout-2s.yaml",
    "content": "apiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: productpage\nspec:\n  hosts:\n    - productpage\n  http:\n    - route:\n        - destination:\n            host: productpage\n            subset: v1\n      retries:\n        attempts: 1\n        perTryTimeout: 2s"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_025_managing_traffic_with_anthos_service_mesh/manifests/virtualservice--reviews-v2-based-on-header.yaml",
    "content": "apiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: reviews\nspec:\n  hosts:\n    # This specifies the host name that this VirtualService applies to, which is the \"reviews\" service.\n    - reviews\n  http:\n    - match:\n        # This specifies a matching rule based on the end-user HTTP header with the exact value of jason.\n        # This means that if the end-user header in the incoming HTTP request has a value of jason, the\n        # VirtualService will route the request to the v2 subset of the reviews service.\n        - headers:\n            end-user:\n              exact: jason\n      # This defines the destination for the incoming traffic that matches the above match rule.\n      # Specifically, it routes traffic to the v2 subset of the reviews service.\n      route:\n        - destination:\n            host: reviews\n            subset: v2\n    - route:\n        # This defines a default route for all other incoming traffic that does not match the above rule.\n        # Specifically, it routes traffic to the v1 subset of the reviews service.\n        - destination:\n            host: reviews\n            subset: v1\n\n# Overall, this manifest creates a VirtualService that applies to the reviews service,\n# and routes incoming traffic to either the v1 or v2 subset of the service based on whether\n# the end-user HTTP header has a value of jason. This is a basic example of how you can use VirtualService to\n# implement traffic routing rules based on HTTP headers in an Istio service mesh."
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_025_managing_traffic_with_anthos_service_mesh/manifests/virtualservice--reviews-v3.yaml",
    "content": "apiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: reviews\nspec:\n  hosts:\n    - reviews\n  http:\n    - route:\n        - destination:\n            host: reviews\n            subset: v3"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_025_managing_traffic_with_anthos_service_mesh/manifests/virtualservice--route-req-to-v2-reviews.yaml",
    "content": "apiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: reviews\nspec:\n  hosts:\n    - reviews\n  http:\n    - route:\n        - destination:\n            host: reviews\n            subset: v2"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_025_managing_traffic_with_anthos_service_mesh/manifests/virtualservice-reviews-50-v3-and-50-v1.yaml",
    "content": "apiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: reviews\nspec:\n  hosts:\n    - reviews\n  http:\n    - route:\n        - destination:\n            host: reviews\n            subset: v1\n          weight: 50\n        - destination:\n            host: reviews\n            subset: v3\n          weight: 50"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_025_managing_traffic_with_anthos_service_mesh/retry.yaml",
    "content": "\n# retries : A retry is an attempt to complete an operation multiple times if it fails.\n# Adjust the maximum number of retry attempts, or the number of attempts possible within the default or overridden\n# timeout period.\napiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: ratings\nspec:\n  hosts:\n    - ratings\n  http:\n  - route:\n    - destination:\n      host: ratings\n      subset: v1\n    retries:\n      attempts: 3\n      perTryTimeout: 2s"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_025_managing_traffic_with_anthos_service_mesh/timeouts.yaml",
    "content": "\n#  timeouts :  Set a timeout, the amount of time Istio waits for a response to a request.\n#  The timeout for HTTP requests is 15 seconds, but it can be overridden.\napiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: ratings\nspec:\n  hosts:\n    - ratings\n  http:\n  - route:\n    - destination:\n        host: ratings\n        subset: v1\n    timeout: 8s"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_025_managing_traffic_with_anthos_service_mesh/traffic-splitting.yaml",
    "content": "\n## traffic splitting : Route traffic to multiple versions of a service.\n# This Kubernetes manifest creates a virtual service called \"reviews\" for routing traffic to different\n# subsets of a service named \"reviews\". The service can have multiple versions, or subsets, running concurrently,\n# and traffic is split between them based on the specified weights. In this case, traffic is split between two subsets,\n# \"v1\" and \"v2\", with 75% of traffic being sent to \"v1\" and 25% of traffic being sent to \"v2\". The traffic routing\n# is based on the HTTP protocol, and the \"reviews\" service is the destination host.\n# This configuration allows for gradual deployment of new versions of the service, as well as testing and\n# experimentation with different versions by splitting traffic between them. Istio, a\n# popular service mesh for Kubernetes, provides this traffic splitting functionality through its VirtualService resource.\napiVersion: networking. istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: reviews\nspec:\n  hosts:\n    - reviews\n  http:\n  - route:\n    - destination:\n        host: reviews\n        subset: v1\n      weight: 75\n    - destination:\n        host: reviews\n        subset: v2\n      weight: 25"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_026_securing_traffic_through_anthos_service_mesh/PeerAuthentication--mesh-wide-mtls.yaml",
    "content": "apiVersion: \"security.istio.io/v1beta1\"\nkind: \"PeerAuthentication\"\nmetadata:\n  name: \"mesh-wide-mtls\"\nspec:\n  mtls:\n    # sets the mTLS mode to \"STRICT\", which requires both the client and server workloads to\n    # present valid TLS certificates and chains that can be verified by the mTLS trust anchors configured in the mesh.\n    mode: STRICT\n\n# Together, this PeerAuthentication resource specifies that all workloads in the\n# Istio service mesh must communicate over mutual TLS with strict mode enabled, which helps\n# to ensure that all communication within the mesh is encrypted and authenticated, and that the identities\n# of both client and server are verified. This provides a strong security posture for the entire\n# service mesh, and helps to protect against attacks such as man-in-the-middle attacks or eavesdropping."
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_026_securing_traffic_through_anthos_service_mesh/PeerAuthentication--restricted-mtls.yaml",
    "content": "  kubectl apply -n strict-mtls-service -f - <<EOF\n  apiVersion: \"security.istio.io/v1beta1\"\n  kind: \"PeerAuthentication\"\n  metadata:\n    name: \"restricted-mtls\"\n    namespace: strict-mtls-service\n  spec:\n    mtls:\n      mode: STRICT"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_026_securing_traffic_through_anthos_service_mesh/ReadMe.md",
    "content": "# Securing Traffic with Anthos Service Mesh\n\n\n\n[https://www.cloudskillsboost.google](https://www.cloudskillsboost.google)\n\n[Select - Cloud Operations and Service Mesh with Anthos Course](https://www.cloudskillsboost.google)\n\n**High Level Objectives**\n- Enforce STRICT mTLS mode across the service mesh\n- Enforce STRICT mTLS mode on a single namespace\n- Explore the security configurations in the Anthos Service Mesh Dashboard\n- Add authorization policies to enforce access based on a JSON Web Token (JWT)\n- Add authorization policies for HTTP traffic in an Istio mesh\n\n**Skills**\n- anthos\n- gcp\n- Strict mTLS\n- authorization policies\n- JWT\n- Istio\n- Service Mesh\n\n## Confirm Anthos Service Mesh setup\n\n### Configure cluster access for kubectl\n\n```bash\n# Set environment variables for the zone and cluster name:\nexport CLUSTER_NAME=gke\nexport CLUSTER_ZONE=us-central1-b\n\n# In Cloud Shell, configure kubectl command line access by running:\n# get the project id\nexport GCLOUD_PROJECT=$(gcloud config get-value project)\n# configure kubectl\ngcloud container clusters get-credentials $CLUSTER_NAME \\\n    --zone $CLUSTER_ZONE --project $GCLOUD_PROJECT\n```\n\n- Verify cluster and Anthos Service Mesh installation\n\n```bash\n# Check that your cluster is up and running:\ngcloud container clusters list\n\n# Ensure the following Kubernetes istiod services are deployed:\nkubectl get service -n istio-system\n\n# Ensure the corresponding Kubernetes istiod-* pods are deployed and all containers are up and running:\nkubectl get pods -n istio-system\n\n \n```\n\n\n### Deploy sleep and httpbin services\n\n- The sleep service acts as the client and will call the httpbin service, which acts as a server.\n\n![img.png](.images/mTLS-initial-setup.png)\n\n\n- In Cloud Shell, create namespaces for the example clients and services. Traffic in the legacy-* namespaces takes place over plain text, while traffic in the mtls-* namespaces happens over mTLS:\n\n```bash\nkubectl create ns mtls-client\nkubectl create ns mtls-service\nkubectl create ns legacy-client\nkubectl create ns legacy-service\nkubectl get namespaces\n```\n\n- Deploy the legacy services in the legacy-* namespaces. You call them legacy because they are not part of the mesh:\n\n```bash\n#configurations are stored in Github\nkubectl apply -f \\\nhttps://raw.githubusercontent.com/istio/istio/release-1.6/samples/sleep/sleep.yaml \\\n-n legacy-client\nkubectl apply -f \\\nhttps://raw.githubusercontent.com/istio/istio/release-1.6/samples/httpbin/httpbin.yaml \\\n-n legacy-service\n```\n\n- Enable auto-injection of the Istio sidecar proxy on the mtls-* namespaces:\n\n> We are auto-injecting the Istio sidecar proxy into the pods deployed in the mtls-client and mtls-service namespaces.\n> The Istio sidecar proxy is a container that runs alongside the application container in the same pod, \n> and it intercepts all inbound and outbound traffic to the pod. It is responsible for implementing the \n> mTLS encryption between services in the Istio service mesh, and enforcing Istio policies such as traffic management, \n> routing, and security.\n\n> By auto-injecting the sidecar proxy, we can ensure that all traffic between services in the mtls-client \n> and mtls-service namespaces is automatically encrypted and secured by Istio. This eliminates the need to \n> modify the application code or configuration, and makes it easy to deploy and manage services in a secure and scalable manner.\n\n> The labels added to the namespaces (istio.io/rev=${VERSION}) are used by Istio's automatic sidecar \n> injection feature to determine which pods should have the sidecar proxy injected into them. \n> The ${VERSION} variable is set based on the revision label of the istiod deployment in the istio-system namespace, \n> and it ensures that the correct version of the Istio sidecar proxy is injected into the pods.\n\n\n\n\n\n\n\n```bash\n# get the revision label\nexport DEPLOYMENT=$(kubectl get deployments -n istio-system | grep istiod)\nexport VERSION=asm-$(echo $DEPLOYMENT | cut -d'-' -f 3)-$(echo $DEPLOYMENT \\\n    | cut -d'-' -f 4 | cut -d' ' -f 1)\n# enable auto-injection on the namespaces\nkubectl label namespace mtls-client istio.io/rev=${VERSION} --overwrite\nkubectl label namespace mtls-service istio.io/rev=${VERSION} --overwrite\n```\n\n- Deploy the services in the mtls-* namespaces:\n\n```bash\nkubectl apply -f \\\nhttps://raw.githubusercontent.com/istio/istio/release-1.6/samples/sleep/sleep.yaml \\\n-n mtls-client\nkubectl apply -f \\\nhttps://raw.githubusercontent.com/istio/istio/release-1.6/samples/httpbin/httpbin.yaml \\\n-n mtls-service\n```\n\n- Verify that the sleep service and the httpbin service are each deployed in both the mtls-service and legacy-service namespaces:\n\n```bash\nkubectl get services --all-namespaces\n```\n\n- Verify that a sleep pod is running in the mtls-client and legacy-client namespaces and that an httpbin pod is running in the mtls-service and legacy-service namespaces:\n\n```bash\nkubectl get pods --all-namespaces\n```\n\n- Verify that the two sleep clients can communicate with the two httpbin services\n\n```bash\nfor from in \"mtls-client\" \"legacy-client\"; do\n  for to in \"mtls-service\" \"legacy-service\"; do\n    kubectl exec $(kubectl get pod -l app=sleep -n ${from} -o jsonpath={.items..metadata.name}) -c sleep -n ${from} -- curl \"http://httpbin.${to}:8000/ip\" -s -o /dev/null -w \"sleep.${from} to httpbin.${to}: %{http_code}\\n\"\n  done\ndone\n\n# Output\nsleep.mtls-client to httpbin.mtls-service: 200\nsleep.mtls-client to httpbin.legacy-service: 200\nsleep.legacy-client to httpbin.mtls-service: 200\nsleep.legacy-client to httpbin.legacy-service: 200\n```\n\n### Understand authentication and enable service to service authentication with mTLS\n\n- In the console, go to Navigation Menu > Anthos > Service Mesh.\n- Under Namespace dropdown select mtls-service namespace and then click on the httpbin service located below.\n- In the left side panel, go to Connected Services.\n- Use your mouse to hover over the lock symbol in the Request port column, and verify that green means mTLS and red means plain text.\n- Now check out the Security tab in the left side panel. It shows you that the httpbin service has received both plaintext and mTLS traffic.\n\n\n- Test auto mutual TLS\n- By default, Istio configures destination workloads in PERMISSIVE mode. When PERMISSIVE mode is enabled a service can accept both plaintext and mTLS traffic. mTLS is used when the request contains the X-Forwarded-Client-Cert header.\n\n- Use the Cloud Shell to send a request from the sleep service in the mtls-client namespace to the httpbin service in the mtls-service namespace:\n\n```bash\nkubectl exec $(kubectl get pod -l app=sleep -n mtls-client -o jsonpath={.items..metadata.name}) -c sleep -n mtls-client -- curl http://httpbin.mtls-service:8000/headers -s | grep X-Forwarded-Client-Cert\n# The traffic included the X-Forwarded-Client-Cert header and therefore was mutually authenticated and encrypted\n```\n\n- Now send a request from the sleep service in the mtls-client namespace to the httpbin service in the legacy-service namespace:\n\n```bash\nkubectl exec $(kubectl get pod -l app=sleep -n mtls-client -o jsonpath={.items..metadata.name}) -c sleep -n mtls-client -- curl http://httpbin.legacy-service:8000/headers -s | grep X-Forwarded-Client-Cert\n# The X-Forwarded-Client-Cert header isn't present so the traffic was sent and received in plaintext.\n```\n\n- Finally, send a request from the sleep service in the legacy-client namespace to the httpbin service in the mtls-service namespace:\n\n```bash\nkubectl exec $(kubectl get pod -l app=sleep -n legacy-client -o jsonpath={.items..metadata.name}) -c sleep -n legacy-client -- curl http://httpbin.mtls-service:8000/headers -s | grep X-Forwarded-Client-Cert\n# The X-Forwarded-Client-Cert header isn't present so the traffic was sent and received in plaintext\n```\n\n> Note: The httpbin service in the mtls-service namespace accepted mTLS traffic from the sleep service in the mtls-client namespace and plaintext from the sleep service in the legacy-client namespace.\n\n\n- Enforce STRICT mTLS mode across the service mesh\n\n- In STRICT mode, services injected with the Istio proxy will not accept plaintext traffic and will mutually authenticate with their clients.\n\n- You can enforce STRICT mTLS mode across the whole mesh or on a per-namespace basis by creating PeerAuthentication resources.\n\n![img.png](.images/mTLS-strict-mode.png)\n\n- Create a Peer Authentication resources for the entire Service Mesh:\n\n```bash\nkubectl apply -n istio-system -f - <<EOF\napiVersion: \"security.istio.io/v1beta1\"\nkind: \"PeerAuthentication\"\nmetadata:\n  name: \"mesh-wide-mtls\"\nspec:\n    mtls:\n        mode: STRICT\nEOF\n```\n\n- Run this nested command loop:\n\n```bash\nfor from in \"mtls-client\" \"legacy-client\"; do\n  for to in \"mtls-service\" \"legacy-service\"; do\n    kubectl exec $(kubectl get pod -l app=sleep -n ${from} -o jsonpath={.items..metadata.name}) -c sleep -n ${from} -- curl \"http://httpbin.${to}:8000/ip\" -s -o /dev/null -w \"sleep.${from} to httpbin.${to}: %{http_code}\\n\"\n  done\ndone\n\n# Output\nsleep.mtls-client to httpbin.mtls-service: 200\nsleep.mtls-client to httpbin.legacy-service: 200\nsleep.legacy-client to httpbin.mtls-service: 000\ncommand terminated with exit code 56\nsleep.legacy-client to httpbin.legacy-service: 200\n```\n\n> Note: The httpbin service in the mtls-service namespace now rejects the plaintext traffic it \n> receives from the sleep client in the legacy-client namespace.\n\n- Remove the mesh wide mTLS PeerAuthentication resource by running this command in Cloud Shell:\n\n```bash\nkubectl delete pa mesh-wide-mtls -n istio-system\n```\n\n- Enforce STRICT mTLS mode on a single namespace\n\n- In Cloud Shell create a namespace for STRICT mTLS:\n\n```bash\nkubectl create ns strict-mtls-service\n\n# Enable auto-injection of the Istio sidecar proxy on the new namespace:\n# get the revision label\nexport DEPLOYMENT=$(kubectl get deployments -n istio-system | grep istiod)\nexport VERSION=asm-$(echo $DEPLOYMENT | cut -d'-' -f 3)-$(echo $DEPLOYMENT \\\n    | cut -d'-' -f 4 | cut -d' ' -f 1)\n# enable auto-injection on the namespaces\nkubectl label namespace strict-mtls-service istio.io/rev=${VERSION} --overwrite\n\n# Use Cloud Shell to deploy another instance of the httpbin service in the strict-mtls-service namespace:\nkubectl apply -f \\\nhttps://raw.githubusercontent.com/istio/istio/release-1.6/samples/httpbin/httpbin.yaml \\\n-n strict-mtls-service\n\n\n# Create a PeerAuthentication resource for the strict-mtls-service namespace:\nkubectl apply -n strict-mtls-service -f - <<EOF\napiVersion: \"security.istio.io/v1beta1\"\nkind: \"PeerAuthentication\"\nmetadata:\n    name: \"restricted-mtls\"\n    namespace: strict-mtls-service\nspec:\n    mtls:\n        mode: STRICT\nEOF\n\n# Verify that the httpbin service in the mtls-service namespace still accepts plaintext traffic:\nkubectl exec $(kubectl get pod -l app=sleep -n legacy-client -o jsonpath={.items..metadata.name}) -c sleep -n legacy-client -- curl \"http://httpbin.mtls-service:8000/ip\" -s -o /dev/null -w \"sleep.legacy-client to httpbin.mtls-service: %{http_code}\\n\"\n\n# Output\nsleep.legacy-client to httpbin.mtls-service: 200\n\n# Now check to see that the strict-mtls-service namespace httpbin service does not accept plaintext traffic:\nkubectl exec $(kubectl get pod -l app=sleep -n legacy-client -o jsonpath={.items..metadata.name}) -c sleep -n legacy-client -- curl \"http://httpbin.strict-mtls-service:8000/ip\" -s -o /dev/null -w \"sleep.legacy-client to httpbin.strict-mtls-service: %{http_code}\\n\"\n\n# Output\nsleep.legacy-client to httpbin.strict-mtls-service: 000\ncommand terminated with exit code 56\n\n## Verify that the httpbin service in the strict-mtls-service namespace does accept mTLS traffic:\nkubectl exec $(kubectl get pod -l app=sleep -n mtls-client -o jsonpath={.items..metadata.name}) -c sleep -n mtls-client -- curl \"http://httpbin.strict-mtls-service:8000/ip\" -s -o /dev/null -w \"sleep.mtls-client to httpbin.strict-mtls-service: %{http_code}\\n\"\n\n\n# Output\nsleep.mtls-client to httpbin.strict-mtls-service: 200\n\n```\n\n\n- In the Google Cloud console, select Navigation Menu > Anthos > Service Mesh.\n\n- Under Namespace dropdown select strict-mtls-service namespace and then click on the httpbin service located below.\n\n- In the left side panel, click on Connected Services.\n\n- Use your mouse to hover over the lock symbol in the Request Port column to see that only mTLS traffic has been received.\n- Remove the strict-mtls-service peer authentication policy by running this command in Cloud Shell:\n\n```bash\nkubectl delete pa restricted-mtls -n strict-mtls-service\n```\n\n### Leverage RequestAuthentication and AuthorizationPolicy resources\n\n- This task shows you how to set up and use RequestAuthentication and AuthorizationPolicy resources. Ultimately, you will allow requests that have an approved JWT, and deny requests that don't.\n\n- A RequestAuthentication resource defines the request authentication methods that are supported by a workload. Requests with invalid authentication information will be rejected. Requests with no authentication credentials will be accepted but will not have any authenticated identity.\n\n- Create a RequestAuthentication resource for the httpbin workload in the mtls-service namespace. This policy allows the workload to accept requests with a JWT issued by testing@secure.istio.io.\n\n```bash\nkubectl apply -f - <<EOF\napiVersion: \"security.istio.io/v1beta1\"\nkind: \"RequestAuthentication\"\nmetadata:\n  name: \"jwt-example\"\n  namespace: mtls-service\nspec:\n  selector:\n    matchLabels:\n      app: httpbin\n  jwtRules:\n  - issuer: \"testing@secure.istio.io\"\n    jwksUri: \"https://raw.githubusercontent.com/istio/istio/release-1.8/security/tools/jwt/samples/jwks.json\"\nEOF\n\n## Verify that a request with an invalid JWT is denied:\nkubectl exec \"$(kubectl get pod -l app=sleep -n mtls-client -o jsonpath={.items..metadata.name})\" -c sleep -n mtls-client -- curl \"http://httpbin.mtls-service:8000/headers\" -s -o /dev/null -H \"Authorization: Bearer invalidToken\" -w \"%{http_code}\\n\"\n\n# Output\n401\n\n# Verify that a request without any JWT is allowed:\nkubectl exec \"$(kubectl get pod -l app=sleep -n mtls-client -o jsonpath={.items..metadata.name})\" -c sleep -n mtls-client -- curl \"http://httpbin.mtls-service:8000/headers\" -s -o /dev/null -w \"%{http_code}\\n\"\n\n# Output\n200\n```\n\n- AuthorizationPolicy\n- Create an AuthorizationPolicy resource for the httpbin workload in the mtls-service namespace:\n\n```bash\nkubectl apply -f - <<EOF\napiVersion: security.istio.io/v1beta1\nkind: AuthorizationPolicy\nmetadata:\n  name: require-jwt\n  namespace: mtls-service\nspec:\n  selector:\n    matchLabels:\n      app: httpbin\n  action: ALLOW\n  rules:\n  - from:\n    - source:\n       requestPrincipals: [\"testing@secure.istio.io/testing@secure.istio.io\"]\nEOF\n```\n\n- The policy requires all requests to the httpbin workload to have a valid JWT with requestPrincipal set to testing@secure.istio.io/testing@secure.istio.io. Istio constructs the requestPrincipal by combining the iss and sub of the JWT token with a / separator as shown:\n\n- Download a legitimate JWT that can be used to send accepted requests:\n\n```bash\nTOKEN=$(curl https://raw.githubusercontent.com/istio/istio/release-1.8/security/tools/jwt/samples/demo.jwt -s) && echo \"$TOKEN\" | cut -d '.' -f2 - | base64 --decode -\n\n# Output\n{\"exp\":4685989700,\"foo\":\"bar\",\"iat\":1532389700,\"iss\":\"testing@secure.istio.io\",\"sub\":\"testing@secure.istio.io\"}\n\n# Note that the iss and sub keys are set to testing@secure.istio.io. This causes Istio to generate the attribute requestPrincipal with the value testing@secure.istio.io/testing@secure.istio.io:\n\n\n```\n\n\n- Verify that a request with a valid JWT is allowed:\n\n```bash\nkubectl exec \"$(kubectl get pod -l app=sleep -n mtls-client -o jsonpath={.items..metadata.name})\" -c sleep -n mtls-client -- curl \"http://httpbin.mtls-service:8000/headers\" -s -o /dev/null -H \"Authorization: Bearer $TOKEN\" -w \"%{http_code}\\n\"\n\n# Output\n200\n\n## Verify that a request without a JWT is denied:\nkubectl exec \"$(kubectl get pod -l app=sleep -n mtls-client -o jsonpath={.items..metadata.name})\" -c sleep -n mtls-client -- curl \"http://httpbin.mtls-service:8000/headers\" -s -o /dev/null -w \"%{http_code}\\n\"\n\n# Output\n403\n```\n\n\n\n### Authorizing requests based on method and path\n\n- This task shows you how to control access to workloads by using an AuthorizationPolicy that evaluates the request type and URL.\n\n- Update the require-jwt authorization policy for the httpbin workload in the mtls-service namespace. The new policy will still have the JWT requirement that you set up in the previous task. In addition, you are going to limit the type of HTTP requests, so that clients can only perform GET requests to the /ip endpoint:\n\n```bash\nkubectl apply -f - <<EOF\napiVersion: security.istio.io/v1beta1\nkind: AuthorizationPolicy\nmetadata:\n  name: require-jwt\n  namespace: mtls-service\nspec:\n  selector:\n    matchLabels:\n      app: httpbin\n  action: ALLOW\n  rules:\n  - from:\n    - source:\n        requestPrincipals: [\"testing@secure.istio.io/testing@secure.istio.io\"]\n    to:\n    - operation:\n        methods: [\"GET\"]\n        paths: [\"/ip\"]\nEOF\n```\n\n- Verify that a request to the httpbin's /ip endpoint works:\n\n```bash\nkubectl exec \"$(kubectl get pod -l app=sleep -n mtls-client -o jsonpath={.items..metadata.name})\" -c sleep -n mtls-client -- curl \"http://httpbin.mtls-service:8000/ip\" -s -o /dev/null -H \"Authorization: Bearer $TOKEN\" -w \"%{http_code}\\n\"\n\n# Output\n200\n\n# Verify that a request to the httpbin's /headers endpoint is denied:\nkubectl exec \"$(kubectl get pod -l app=sleep -n mtls-client -o jsonpath={.items..metadata.name})\" -c sleep -n mtls-client -- curl \"http://httpbin.mtls-service:8000/headers\" -s -o /dev/null -H \"Authorization: Bearer $TOKEN\" -w \"%{http_code}\\n\"\n\n# Output\n403\n\n# Remove the require-jwt authorization policy by running this command:\nkubectl delete AuthorizationPolicy require-jwt -n mtls-service\n```"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_026_securing_traffic_through_anthos_service_mesh/manifests/AuthorizationPolicy--require-jwt-v2.yaml",
    "content": "apiVersion: security.istio.io/v1beta1\nkind: AuthorizationPolicy\nmetadata:\n  name: require-jwt\n  namespace: mtls-service\nspec:\n  selector:\n    matchLabels:\n      app: httpbin\n  # sets the default action for the policy to allow traffic.\n  action: ALLOW\n  rules:\n    - from:\n        - source:\n            requestPrincipals: [\"testing@secure.istio.io/testing@secure.istio.io\"]\n      to:\n      #  specifies the operation(s) that this rule applies to.\n        - operation:\n            # specifies the HTTP method(s) that this rule applies to. In this case, the rule applies to the HTTP GET method.\n            methods: [\"GET\"]\n            paths: [\"/ip\"]\n\n# Together, this AuthorizationPolicy specifies that requests from a source whose request\n# principal matches the given string (in this case, \"testing@secure.istio.io/testing@secure.istio.io\") are\n# allowed to access the httpbin application, but only for the HTTP GET method and the path /ip.\n# This kind of policy configuration allows for fine-grained control over access to specific operations and\n# resources within a service, and helps to enforce the principle of least privilege."
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_026_securing_traffic_through_anthos_service_mesh/manifests/AuthorizationPolicy--require-jwt.yaml",
    "content": "# This is a Kubernetes YAML configuration for an Istio AuthorizationPolicy,\n# which defines access control rules for traffic flowing through the Istio service mesh\napiVersion: security.istio.io/v1beta1\nkind: AuthorizationPolicy\nmetadata:\n  name: require-jwt\n  namespace: mtls-service\nspec:\n  # defines the target workload(s) to which the policy applies, in this case any workload with the label \"app: httpbin\".\n  selector:\n    matchLabels:\n      app: httpbin\n  #  sets the default action for the policy to allow traffic.\n  action: ALLOW\n  # specifies a list of rules for controlling access to the workload(s).\n  rules:\n    - from:\n        - source:\n            # specifies the request principal(s) that must be present in order to allow traffic.\n            # In this case, the rule allows traffic from a source whose request principal matches the given string.\n            requestPrincipals: [\"testing@secure.istio.io/testing@secure.istio.io\"]\n\n#  A request principal is a piece of identity information that identifies the entity making a request to a service.\n#  In Istio, request principals are typically represented as strings that identify a user or a service account,\n#  and can be used in access control policies to grant or deny access to resources.\n#\n#  In the example YAML configuration, the requestPrincipals field is used to specify a list of principals\n#  that are allowed to access the httpbin application. Specifically, the rule allows traffic from a source\n#  whose request principal matches the string \"testing@secure.istio.io/testing@secure.istio.io\".\n#  This means that requests originating from a client that presents a JWT (JSON Web Token) with the \"testing@secure.istio.io/testing@secure.istio.io\" principal will be allowed to access the httpbin application.\n#\n#  Using request principals in access control policies helps to ensure that only authorized clients and\n#  services are able to access resources, which is an important aspect of securing microservices-based architectures."
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_026_securing_traffic_through_anthos_service_mesh/manifests/RequestAuthentication--jwt-example.yaml",
    "content": "# This is a Kubernetes YAML configuration for an Istio RequestAuthentication resource, which specifies how to\n# authenticate incoming requests\n# based on their JWT tokens\napiVersion: \"security.istio.io/v1beta1\"\nkind: \"RequestAuthentication\"\nmetadata:\n  name: \"jwt-example\"\n  namespace: mtls-service\nspec:\n  # defines the target workload(s) to which the policy applies, in this case any workload with the label \"app: httpbin\".\n  selector:\n    matchLabels:\n      app: httpbin\n  #  specifies the rules for authenticating incoming requests based on their JWT tokens.\n  jwtRules:\n    # specifies the issuer that the JWT token must come from in order to be considered valid.\n    # In this case, the issuer is \"testing@secure.istio.io\".\n    - issuer: \"testing@secure.istio.io\"\n      # specifies the URI where the JSON Web Key Set (JWKS) containing the public keys used for verifying the\n      # JWT signatures can be obtained. In this case, the JWKS URI is a public URL hosted on GitHub.\n      jwksUri: \"https://raw.githubusercontent.com/istio/istio/release-1.8/security/tools/jwt/samples/jwks.json\"\n\n# Together, this RequestAuthentication resource specifies that requests to the httpbin application\n# must include a valid JWT token with an issuer of \"testing@secure.istio.io\", and that the signature\n# on the token must be verifiable using one of the public keys specified in the JWKS at the given URL.\n# This kind of policy configuration helps to ensure that only authenticated requests are able to access the\n# httpbin application, and that those requests are properly signed and verified."
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_026_securing_traffic_through_anthos_service_mesh/manifests/httpbin.yaml",
    "content": "##################################################################################################\n# httpbin service\n##################################################################################################\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: httpbin\n---\napiVersion: v1\nkind: Service\nmetadata:\n  name: httpbin\n  labels:\n    app: httpbin\nspec:\n  ports:\n    - name: http\n      port: 8000\n      targetPort: 80\n  selector:\n    app: httpbin\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: httpbin\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: httpbin\n      version: v1\n  template:\n    metadata:\n      labels:\n        app: httpbin\n        version: v1\n    spec:\n      serviceAccountName: httpbin\n      containers:\n        - image: docker.io/kennethreitz/httpbin\n          imagePullPolicy: IfNotPresent\n          name: httpbin\n          ports:\n            - containerPort: 80"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_026_securing_traffic_through_anthos_service_mesh/manifests/sleep.yaml",
    "content": "##################################################################################################\n# Sleep service\n##################################################################################################\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: sleep\n---\napiVersion: v1\nkind: Service\nmetadata:\n  name: sleep\n  labels:\n    app: sleep\nspec:\n  ports:\n    - port: 80\n      name: http\n  selector:\n    app: sleep\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: sleep\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: sleep\n  template:\n    metadata:\n      labels:\n        app: sleep\n    spec:\n      serviceAccountName: sleep\n      containers:\n        - name: sleep\n          image: governmentpaas/curl-ssl\n          command: [\"/bin/sleep\", \"3650d\"]\n          imagePullPolicy: IfNotPresent\n          volumeMounts:\n            - mountPath: /etc/sleep/tls\n              name: secret-volume\n      volumes:\n        - name: secret-volume\n          secret:\n            secretName: sleep-secret\n            optional: true\n---\n"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_027_cloud_source_repositories_overview/ReadMe.md",
    "content": "# Cloud Source Repositories Overview\n\n\n**High Level Objectives**\n- Create a new repository\n- Clone the new repository into your Cloud Shell session\n- Push to the Cloud Source Repository\n- Browse files in the Google Cloud Source Repository\n- View a file in the Google Cloud repository\n\n\n\n\n**Skills**\n- gcp\n- cloud-shell\n- cloud source repositories\n\n\n\n\n## Create a new repository\n\n```bash\ngcloud source repos create REPO_DEMO\n```\n\n\n\n## Clone the new repository into your Cloud Shell session\n\n```bash\ngcloud source repos clone REPO_DEMO\n```\n\n# Push to the Cloud Source Repository\n\n```bash\n# Go into the local repository you created:\ncd REPO_DEMO\n\n# Run the following command to create a file myfile.txt in your local repository:\necho 'Hello World!' > myfile.txt\n\n# Commit the file using the following Git commands:\ngit config --global user.email \"you@example.com\"\n\ngit config --global user.name \"Your Name\"\n\ngit add myfile.txt\n\ngit commit -m \"First file using Cloud Source Repositories\" myfile.txt\n\n# Once you've committed code to the local repository, add its contents to Cloud Source Repositories using the git push command:\ngit push origin master\n```\n\n## Browse files in the Google Cloud Source Repository\n\n```bash\ngcloud source repos list\n```\n\n## View a file in the Google Cloud repository\n\n- In the Console go to Navigation menu > Source Repositories.\n\n- Click REPO_DEMO > myfile.txt to view the file's contents in the source code browser.\n\n"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_028_managing_deployments_using_kubernetes_engine/ReadMe.md",
    "content": "# Managing deployments using Kubernetes Engine\n\n\n[https://www.cloudskillsboost.google](https://www.cloudskillsboost.google)\n\n[Select - Quest -  DevOps Essentials](https://www.cloudskillsboost.google/paths)\n\n\n**High Level Objectives**\n- Learn about deployment object\n- Create a deployment\n- Rolling Update\n- Canary deployments\n- Blue/Green deployments\n\n\n\n**Skills**\n- gcp\n- kubernetes\n- canary deployments\n- blue green deployment\n\n\n\n## Set the zone\n\n```bash\ngcloud config set compute/zone us-east5-b\n```\n\n## Get sample code for this lab\n\n```bash\ngsutil -m cp -r gs://spls/gsp053/orchestrate-with-kubernetes .\ncd orchestrate-with-kubernetes/kubernetes\n\n# Create a cluster with 3 nodes (this will take a few minutes to complete):\ngcloud container clusters create bootcamp \\\n  --machine-type e2-small \\\n  --num-nodes 3 \\\n  --scopes \"https://www.googleapis.com/auth/projecthosting,storage-rw\"\n```\n\n\n## Learn about the deployment object\n\n```bash\nkubectl explain deployment\n\n# We can also see all of the fields using the --recursive option:\nkubectl explain deployment --recursive\n\n# We can also see the documentation for a specific field:\nkubectl explain deployment.spec.replicas\n```\n\n## Create a deployment\n\n```bash \n# change to auth:1.0.0\nkubectl create -f deployments/auth.yaml\n\nkubectl get deployments\n\n# When you create a Deployment in Kubernetes, it automatically creates a \n#ReplicaSet as well. The ReplicaSet is responsible for maintaining a \n#specified number of replicas of the Pods defined in the Deployment.\n\n# The Deployment object provides declarative updates for Pods and \n# ReplicaSets, and manages the creation and scaling of ReplicaSets \n# based on the user's desired state. When a Deployment is updated with a \n# new desired state, it creates a new ReplicaSet and gradually scales it \n# up while scaling down the old ReplicaSet, ensuring that the transition \n# between the old and new state is smooth and does not cause downtime.\nkubectl get replicasets\n\nkubectl get pods\n\nkubectl create -f services/auth.yaml\n\n# Now, do the same thing to create and expose the hello deployment:\nkubectl create -f deployments/hello.yaml\nkubectl create -f services/hello.yaml\n\n\n# And one more time to create and expose the frontend deployment:\nkubectl create secret generic tls-certs --from-file tls/\nkubectl create configmap nginx-frontend-conf --from-file=nginx/frontend.conf\nkubectl create -f deployments/frontend.yaml\nkubectl create -f services/frontend.yaml\n\n\nkubectl get secret tls-certs -o yaml\n``` \n\n- Interact with the frontend by grabbing its external IP and then curling to it:\n\n```bash\nkubectl get services frontend\n\ncurl -ks https://<EXTERNAL-IP>\n\n# OR\ncurl -ks https://`kubectl get svc frontend -o=jsonpath=\"{.status.loadBalancer.ingress[0].ip}\"`\n```\n\n- Scale a deployment\n\n```bash\nkubectl explain deployment.spec.replicas\n\nkubectl scale deployment hello --replicas=5\n\n# verify\nkubectl get pods | grep hello- | wc -l\n\n# scale down\nkubectl scale deployment hello --replicas=3\n\n# Again, verify that you have the correct number of Pods:\nkubectl get pods | grep hello- | wc -l\n```\n\n## Rolling update\n\n![img.png](.images/rolling-update.png)\n\n```bash\nkubectl edit deployment hello\n\n# change image to hello:2.0.0\n\n# See the new ReplicaSet that Kubernetes creates.:\nkubectl get replicaset\n\n# You can also see a new entry in the rollout history:\nkubectl rollout history deployment hello\n```\n\n- Pause a rolling update\n- If you detect problems with a running rollout, pause it to stop the update.\n\n```bash\nkubectl rollout pause deployment/hello\n\n# Verify the current state of the rollout:\nkubectl rollout status deployment/hello\n\n# You can also verify this on the Pods directly:\nkubectl get pods -o jsonpath --template='{range .items[*]}{.metadata.name}{\"\\t\"}{\"\\t\"}{.spec.containers[0].image}{\"\\n\"}{end}'\n```\n\n- Resume a rolling update\n\n```bash\nkubectl rollout resume deployment/hello\n\n# When the rollout is complete, you should see the following when running the status command:\nkubectl rollout status deployment/hello\n```\n\n- Rollback an update\n\n```bash\nkubectl rollout undo deployment/hello\n\n# Verify the roll back in the history:\nkubectl rollout history deployment hello\n\n# Finally, verify that all the Pods have rolled back to their previous versions:\nkubectl get pods -o jsonpath --template='{range .items[*]}{.metadata.name}{\"\\t\"}{\"\\t\"}{.spec.containers[0].image}{\"\\n\"}{end}'\n```\n\n## Canary deployments\n\n![img.png](.images/canary-deployments.png)\n\n```bash\nkubectl create -f deployments/hello-canary.yaml\n\n# On the hello service, the selector uses the app:hello selector which will match pods in both the prod \n# deployment and canary deployment. However, because the canary deployment has a fewer number of pods, \n# it will be visible to fewer users\n\n# You can verify the hello version being served by the request:\ncurl -ks https://`kubectl get svc frontend -o=jsonpath=\"{.status.loadBalancer.ingress[0].ip}\"`/version\n\n```\n\n- Canary deployments in production - session affinity\n\n- In this lab, each request sent to the Nginx service had a chance to be served by the canary \n  deployment. But what if you wanted to ensure that a user didn't get served by \n  the Canary deployment?\n- You can do this by creating a service with session affinity. This way the same user will \n  always be served from the same version. In the example below the service is the same as before, \n  but a new sessionAffinity field has been added, and set to ClientIP. All clients \n  with the same IP address will have their requests sent to the same version of the hello application.\n\n\n```yaml\nkind: Service\napiVersion: v1\nmetadata:\n  name: \"hello\"\nspec:\n  sessionAffinity: ClientIP\n  selector:\n    app: \"hello\"\n  ports:\n    - protocol: \"TCP\"\n      port: 80\n      targetPort: 80\n```\n\n## Blue-green deployments\n\n![img.png](.images/blue-green-deployments.png)\n\n\n```bash\n# A major downside of blue-green deployments is that you will need to have at least 2x the \n# resources in your cluster necessary to host your application\nkubectl apply -f services/hello-blue.yaml\n\n\nkubectl create -f deployments/hello-green.yaml\n\n# Once you have a green deployment and it has started up properly, verify that the current version of 1.0.0 is still being used:\ncurl -ks https://`kubectl get svc frontend -o=jsonpath=\"{.status.loadBalancer.ingress[0].ip}\"`/version\n\n# Now, update the service to point to the new version:\nkubectl apply -f services/hello-green.yaml\n\n# When the service is updated, the \"green\" deployment will be used immediately. You can now verify that the new version is always being used:\ncurl -ks https://`kubectl get svc frontend -o=jsonpath=\"{.status.loadBalancer.ingress[0].ip}\"`/version\n\n```\n\n- Blue-Green rollback\n\n```bash\n# While the \"blue\" deployment is still running, just update the service back to the old version:\nkubectl apply -f services/hello-blue.yaml\n\n# Once you have updated the service, your rollback will have been successful. \n# Again, verify that the right version is now being used:\ncurl -ks https://`kubectl get svc frontend -o=jsonpath=\"{.status.loadBalancer.ingress[0].ip}\"`/version\n```"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_028_managing_deployments_using_kubernetes_engine/cleanup.sh",
    "content": "kubectl delete pods healthy-monolith monolith secure-monolith\nkubectl delete services monolith auth frontend hello\nkubectl delete deployments auth frontend hello hello-canary hello-green\nkubectl delete secrets tls-certs\nkubectl delete configmaps nginx-frontend-conf nginx-proxy-conf\n"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_028_managing_deployments_using_kubernetes_engine/deployments/auth.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: auth\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: auth\n  template:\n    metadata:\n      labels:\n        app: auth\n        track: stable\n    spec:\n      containers:\n        - name: auth\n          image: \"kelseyhightower/auth:2.0.0\"\n          ports:\n            - name: http\n              containerPort: 80\n            - name: health\n              containerPort: 81\n          resources:\n            limits:\n              cpu: 0.2\n              memory: \"10Mi\"\n          livenessProbe:\n            httpGet:\n              path: /healthz\n              port: 81\n              scheme: HTTP\n            initialDelaySeconds: 5\n            periodSeconds: 15\n            timeoutSeconds: 5\n          readinessProbe:\n            httpGet:\n              path: /readiness\n              port: 81\n              scheme: HTTP\n            initialDelaySeconds: 5\n            timeoutSeconds: 1\n"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_028_managing_deployments_using_kubernetes_engine/deployments/frontend.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: frontend\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: frontend\n  template:\n    metadata:\n      labels:\n        app: frontend\n        track: stable\n    spec:\n      containers:\n        - name: nginx\n          image: \"nginx:1.9.14\"\n          lifecycle:\n            preStop:\n              exec:\n                command: [\"/usr/sbin/nginx\",\"-s\",\"quit\"]\n          volumeMounts:\n            - name: \"nginx-frontend-conf\"\n              mountPath: \"/etc/nginx/conf.d\"\n            - name: \"tls-certs\"\n              mountPath: \"/etc/tls\"\n      volumes:\n        - name: \"tls-certs\"\n          secret:\n            secretName: \"tls-certs\"\n        - name: \"nginx-frontend-conf\"\n          configMap:\n            name: \"nginx-frontend-conf\"\n            items:\n              - key: \"frontend.conf\"\n                path: \"frontend.conf\"\n"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_028_managing_deployments_using_kubernetes_engine/deployments/hello-canary.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: hello-canary\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: hello\n  template:\n    metadata:\n      labels:\n        app: hello\n        track: canary\n        version: 2.0.0\n    spec:\n      containers:\n        - name: hello\n          image: kelseyhightower/hello:2.0.0\n          ports:\n            - name: http\n              containerPort: 80\n            - name: health\n              containerPort: 81\n          resources:\n            limits:\n              cpu: 0.2\n              memory: 10Mi\n          livenessProbe:\n            httpGet:\n              path: /healthz\n              port: 81\n              scheme: HTTP\n            initialDelaySeconds: 5\n            periodSeconds: 15\n            timeoutSeconds: 5\n          readinessProbe:\n            httpGet:\n              path: /readiness\n              port: 81\n              scheme: HTTP\n            initialDelaySeconds: 5\n            timeoutSeconds: 1\n"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_028_managing_deployments_using_kubernetes_engine/deployments/hello-green.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: hello-green\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: hello\n  template:\n    metadata:\n      labels:\n        app: hello\n        track: stable\n        version: 2.0.0\n    spec:\n      containers:\n        - name: hello\n          image: kelseyhightower/hello:2.0.0\n          ports:\n            - name: http\n              containerPort: 80\n            - name: health\n              containerPort: 81\n          resources:\n            limits:\n              cpu: 0.2\n              memory: 10Mi\n          livenessProbe:\n            httpGet:\n              path: /healthz\n              port: 81\n              scheme: HTTP\n            initialDelaySeconds: 5\n            periodSeconds: 15\n            timeoutSeconds: 5\n          readinessProbe:\n            httpGet:\n              path: /readiness\n              port: 81\n              scheme: HTTP\n            initialDelaySeconds: 5\n            timeoutSeconds: 1\n"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_028_managing_deployments_using_kubernetes_engine/deployments/hello.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: hello\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: hello\n  template:\n    metadata:\n      labels:\n        app: hello\n        track: stable\n        version: 1.0.0\n    spec:\n      containers:\n        - name: hello\n          image: \"kelseyhightower/hello:1.0.0\"\n          ports:\n            - name: http\n              containerPort: 80\n            - name: health\n              containerPort: 81\n          resources:\n            limits:\n              cpu: 0.2\n              memory: \"10Mi\"\n          livenessProbe:\n            httpGet:\n              path: /healthz\n              port: 81\n              scheme: HTTP\n            initialDelaySeconds: 5\n            periodSeconds: 15\n            timeoutSeconds: 5\n          readinessProbe:\n            httpGet:\n              path: /readiness\n              port: 81\n              scheme: HTTP\n            initialDelaySeconds: 5\n            timeoutSeconds: 1\n"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_028_managing_deployments_using_kubernetes_engine/nginx/frontend.conf",
    "content": "upstream hello {\n    server hello.default.svc.cluster.local;\n}\n\nupstream auth {\n    server auth.default.svc.cluster.local;\n}\n\nserver {\n    listen 443;\n    ssl    on;\n\n    ssl_certificate     /etc/tls/cert.pem;\n    ssl_certificate_key /etc/tls/key.pem;\n\n    location / {\n        proxy_pass http://hello;\n    }\n\n    location /login {\n        proxy_pass http://auth;\n    }\n}\n"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_028_managing_deployments_using_kubernetes_engine/nginx/proxy.conf",
    "content": "server {\n  listen 443;\n  ssl    on;\n\n  ssl_certificate     /etc/tls/cert.pem;\n  ssl_certificate_key /etc/tls/key.pem;\n\n  location / {\n    proxy_pass http://127.0.0.1:80;\n  }\n}\n"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_028_managing_deployments_using_kubernetes_engine/pods/healthy-monolith.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: \"healthy-monolith\"\n  labels:\n    app: monolith\nspec:\n  containers:\n    - name: monolith\n      image: kelseyhightower/monolith:1.0.0\n      ports:\n        - name: http\n          containerPort: 80\n        - name: health\n          containerPort: 81\n      resources:\n        limits:\n          cpu: 0.2\n          memory: \"10Mi\"\n      livenessProbe:\n        httpGet:\n          path: /healthz\n          port: 81\n          scheme: HTTP\n        initialDelaySeconds: 5\n        periodSeconds: 15\n        timeoutSeconds: 5\n      readinessProbe:\n        httpGet:\n          path: /readiness\n          port: 81\n          scheme: HTTP\n        initialDelaySeconds: 5\n        timeoutSeconds: 1\n"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_028_managing_deployments_using_kubernetes_engine/pods/monolith.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: monolith\n  labels:\n    app: monolith\nspec:\n  containers:\n    - name: monolith\n      image: kelseyhightower/monolith:1.0.0\n      args:\n        - \"-http=0.0.0.0:80\"\n        - \"-health=0.0.0.0:81\"\n        - \"-secret=secret\"\n      ports:\n        - name: http\n          containerPort: 80\n        - name: health\n          containerPort: 81\n      resources:\n        limits:\n          cpu: 0.2\n          memory: \"10Mi\"\n"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_028_managing_deployments_using_kubernetes_engine/pods/secure-monolith.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: \"secure-monolith\"\n  labels:\n    app: monolith\nspec:\n  containers:\n    - name: nginx\n      image: \"nginx:1.9.14\"\n      lifecycle:\n        preStop:\n          exec:\n            command: [\"/usr/sbin/nginx\",\"-s\",\"quit\"]\n      volumeMounts:\n        - name: \"nginx-proxy-conf\"\n          mountPath: \"/etc/nginx/conf.d\"\n        - name: \"tls-certs\"\n          mountPath: \"/etc/tls\"\n    - name: monolith\n      image: \"kelseyhightower/monolith:1.0.0\"\n      ports:\n        - name: http\n          containerPort: 80\n        - name: health\n          containerPort: 81\n      resources:\n        limits:\n          cpu: 0.2\n          memory: \"10Mi\"\n      livenessProbe:\n        httpGet:\n          path: /healthz\n          port: 81\n          scheme: HTTP\n        initialDelaySeconds: 5\n        periodSeconds: 15\n        timeoutSeconds: 5\n      readinessProbe:\n        httpGet:\n          path: /readiness\n          port: 81\n          scheme: HTTP\n        initialDelaySeconds: 5\n        timeoutSeconds: 1\n  volumes:\n    - name: \"tls-certs\"\n      secret:\n        secretName: \"tls-certs\"\n    - name: \"nginx-proxy-conf\"\n      configMap:\n        name: \"nginx-proxy-conf\"\n        items:\n          - key: \"proxy.conf\"\n            path: \"proxy.conf\"\n"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_028_managing_deployments_using_kubernetes_engine/services/auth.yaml",
    "content": "kind: Service\napiVersion: v1\nmetadata:\n  name: \"auth\"\nspec:\n  selector:\n    app: \"auth\"\n  ports:\n    - protocol: \"TCP\"\n      port: 80\n      targetPort: 80\n"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_028_managing_deployments_using_kubernetes_engine/services/frontend.yaml",
    "content": "kind: Service\napiVersion: v1\nmetadata:\n  name: \"frontend\"\nspec:\n  selector:\n    app: \"frontend\"\n  ports:\n    - protocol: \"TCP\"\n      port: 443\n      targetPort: 443\n  type: LoadBalancer\n"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_028_managing_deployments_using_kubernetes_engine/services/hello-blue.yaml",
    "content": "kind: Service\napiVersion: v1\nmetadata:\n  name: \"hello\"\nspec:\n  selector:\n    app: \"hello\"\n    version: 1.0.0\n  ports:\n    - protocol: \"TCP\"\n      port: 80\n      targetPort: 80\n"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_028_managing_deployments_using_kubernetes_engine/services/hello-green.yaml",
    "content": "kind: Service\napiVersion: v1\nmetadata:\n  name: hello\nspec:\n  selector:\n    app: hello\n    version: 2.0.0\n  ports:\n    - protocol: TCP\n      port: 80\n      targetPort: 80\n"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_028_managing_deployments_using_kubernetes_engine/services/hello.yaml",
    "content": "kind: Service\napiVersion: v1\nmetadata:\n  name: \"hello\"\nspec:\n  selector:\n    app: \"hello\"\n  ports:\n    - protocol: \"TCP\"\n      port: 80\n      targetPort: 80\n"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_028_managing_deployments_using_kubernetes_engine/services/monolith.yaml",
    "content": "kind: Service\napiVersion: v1\nmetadata:\n  name: \"monolith\"\nspec:\n  selector:\n    app: \"monolith\"\n    secure: \"enabled\"\n  ports:\n    - protocol: \"TCP\"\n      port: 443\n      targetPort: 443\n      nodePort: 31000\n  type: NodePort\n"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_029_trouble_shooting_workloads_on_gke_for_sre/ReadMe.md",
    "content": "# Troubleshooting Workloads on GKE for Site Reliability Engineers\n\n[https://www.cloudskillsboost.google](https://www.cloudskillsboost.google)\n\n[Select - Quest -  DevOps Essentials](https://www.cloudskillsboost.google/paths)\n\n\n**High Level Objectives**\n- Access operational data through GKE Dashboards\n- Proactive monitoring with logs-based metrics\n- Create a SLO\n- Define an alert on the SLO\n\n\n\n**Skills**\n- gcp\n- log based metrics\n- sre\n- gke\n- monitoring\n- slo\n- alerting\n- troubleshooting\n\n\n\n\n\n## Navigating Google Kubernetes Engine (GKE) resource pages\n\n- In Cloud Console, from the Navigation menu go to Kubernetes Engine > Clusters.\n- Confirm that you see the following Kubernetes cluster available: cloud-ops-sandbox. Validate that each cluster has a green checkbox next to it to indicate it is up and running.\n- Click on the cloud-ops-sandbox link under the Name column to navigate to the cluster's Details tab.\n\n## Accessing operational data through GKE Dashboards\n\n- Navigate to Navigation menu > Kubernetes Engine > Services & Ingress. Click on the Endpoint (an IP address) for the frontend-external service.\n- Click on any product displayed on the landing page to reproduce the error reported.\n\n\n- Navigate to Cloud Monitoring from Cloud Console, from the Navigation Menu go to Monitoring > Dashboards.\n- When the Dashboards landing page opens, click GKE.\n- Click on the Add Filter button at the top of the GKE Dashboard page.\n- From the available filters, select Workloads > recommendationservice.\n\n- You will re-deploy the recommendationservice microservice to ensure that the error is no longer present.\n\n```bash\ngit clone --depth 1 --branch csb_1220 https://github.com/GoogleCloudPlatform/cloud-ops-sandbox.git\n\n\ncd cloud-ops-sandbox/sre-recipes\n\n# Connect to cluster\n./sandboxctl sre-recipes restore \"recipe3\"\n\n# Check the service back again\n```\n\n## Proactive monitoring with logs-based metrics\n\n- From Cloud Console, click on the Navigation Menu > Logging > Logs Explorer.\n- In the Query results section click on +Create metric. This will open a new tab to create a logs based metric.\n- Enter the following options on the Create logs metric page:\n\n- Metric Type: Counter\n- Log metric name: Error_Rate_SLI\n- Filter Selection: (Copy and paste the filter below)\n\n```bash\nresource.labels.cluster_name=\"cloud-ops-sandbox\" AND resource.labels.namespace_name=\"default\" AND resource.type=\"k8s_container\" AND labels.k8s-pod/app=\"recommendationservice\" AND severity>=ERROR\n```\n\n## Creating a SLO\n\n- Navigate to Navigation menu > Monitoring > Services. The resulting page will display a list of all services deployed to GKE for the application workload.\n\n- Choose a metric: Other\n\n- Request-based or windows-based: Request Based\n- the Performance Metric must be set to the following value: custom.googleapis.com/opencensus/grpc.io/client/roundtrip_latency. This will show the roundtrip latency of requests made by the client to the recommendation service.\n- Set the Performance metric to Less than -∞ to 100 ms.\n\n- Period type: Calendar\n- Period length: Calendar month\n- Performance Goal: 99%\n\n\n## Define an alert on the SLO\n\n- Navigate to Navigation menu > Monitoring > Services.\n\n\n"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_030_minimal_nodejs_app_dockerize_google_artifact_registry/ReadMe.md",
    "content": "# Minimal NodeJS App - Dockerize - Google Artifact Registry \n\n\n[https://www.cloudskillsboost.google](https://www.cloudskillsboost.google)\n\n[Select - Lab -  Introduction to Docker](https://www.cloudskillsboost.google/paths)\n\n\n**High Level Objectives**\n- Build a minimal NodeJS app\n- Dockerize the app\n- Run locally and debug using docker\n- Push to Google Artifact Registry\n\n\n\n\n**Skills**\n- gcp\n- docker\n- nodejs\n- artifact registry\n\n\n## Build\n\n```bash\nmkdir test && cd test\n\n\ncat > Dockerfile <<EOF\n# Use an official Node runtime as the parent image\nFROM node:lts\n# Set the working directory in the container to /app\nWORKDIR /app\n# Copy the current directory contents into the container at /app\nADD . /app\n# Make the container's port 80 available to the outside world\nEXPOSE 80\n# Run app.js using node when the container launches\nCMD [\"node\", \"app.js\"]\nEOF\n\n\n\ncat > app.js <<EOF\nconst http = require('http');\nconst hostname = '0.0.0.0';\nconst port = 80;\nconst server = http.createServer((req, res) => {\n    res.statusCode = 200;\n    res.setHeader('Content-Type', 'text/plain');\n    res.end('Hello World\\n');\n});\nserver.listen(port, hostname, () => {\n    console.log('Server running at http://%s:%s/', hostname, port);\n});\nprocess.on('SIGINT', function() {\n    console.log('Caught interrupt signal and will exit');\n    process.exit();\n});\nEOF\n```\n\n- Docker build\n\n```bash\ndocker build -t node-app:0.1 .\n```\n\n- Now, run the following command to look at the images you built:\n\n```bash\ndocker images\n```\n\n## Run\n\n```bash\ndocker run -p 4000:80 --name my-app node-app:0.1\n```\n\n- Open another terminal (in Cloud Shell, click the + icon), and test the server:\n\n```bash\ncurl http://localhost:4000\n```\n\n- Close the initial terminal and then run the following command to stop and remove the container:\n\n```bash\ndocker stop my-app && docker rm my-app\n```\n\n- Now run the following command to start the container in the background:\n\n```yaml\ndocker run -p 4000:80 --name my-app -d node-app:0.1\ndocker ps\n```\n\n- Notice the container is running in the output of docker ps. You can look at the logs by executing docker logs [container_id].\n\n```bash\ndocker logs [container_id]\n```\n\n- In your Cloud Shell, open the test directory you created earlier in the lab:\n\n```bash\ncd test\n```\n\n- Edit app.js with a text editor of your choice (for example nano or vim) and replace \"Hello World\" with another string:\n\n```bash\n....\nconst server = http.createServer((req, res) => {\n    res.statusCode = 200;\n    res.setHeader('Content-Type', 'text/plain');\n    res.end('Welcome to Cloud\\n');\n});\n....\n```\n\n- Build this new image and tag it with 0.2:\n\n```bash\ndocker build -t node-app:0.2 .\n```\n\n- Run another container with the new image version.  \n  Notice how we map the host's port 8080 instead of 80. You can't use host port 4000 because it's already in use.\n\n```bash\ndocker run -p 8080:80 --name my-app-2 -d node-app:0.2\ndocker ps\n```\n\n- Test the containers:\n\n```bash\ncurl http://localhost:8080\n\n## And now test the first container you made:\ncurl http://localhost:4000\n```\n\n## Debug\n\n- You can look at the logs of a container using docker logs [container_id]. \n  If you want to follow the log's output as the container is running, use the -f option.\n\n```bash\ndocker logs -f [container_id]\n```\n\n- You can use docker exec to do this.\n\n```bash\ndocker exec -it [container_id] bash\n\n## look at dir\nls\n```\n\n- You can examine a container's metadata in Docker by using Docker inspect:\n\n```bash\ndocker inspect [container_id]\n```\n\n- Use --format to inspect specific fields from the returned JSON. For example:\n\n```bash\ndocker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' [container_id]\n```\n\n## Publish\n\n- Create the target Docker repository\n\n- From the Navigation Menu, under CI/CD navigate to Artifact Registry > Repositories.\n- Specify my-repository as the repository name.\n\n\n- Configure authentication\n\n```bash\n# To set up authentication to Docker repositories in the region us-central1, run the following command in Cloud Shell:\ngcloud auth configure-docker us-central1-docker.pkg.dev\n```\n\n- Push the container to Artifact Registry\n\n```bash\nexport PROJECT_ID=$(gcloud config get-value project)\ncd ~/test\n\n# Run the command to tag node-app:0.2.\ndocker build -t us-central1-docker.pkg.dev/$PROJECT_ID/my-repository/node-app:0.2 .\n\n\ndocker images\n\n# Push this image to Artifact Registry.\ndocker push us-central1-docker.pkg.dev/$PROJECT_ID/my-repository/node-app:0.2\n\n```\n\n- Verify the image was pushed in the Artifact Registry console.\n\n- Test the image\n\n```bash\n# Stop and remove all containers:\ndocker stop $(docker ps -q)\ndocker rm $(docker ps -aq)\n```\n\n- Run the following command to remove all of the Docker images.\n\n```bash\ndocker rmi us-central1-docker.pkg.dev/$PROJECT_ID/my-repository/node-app:0.2\ndocker rmi node:lts\ndocker rmi -f $(docker images -aq) # remove remaining images\ndocker images\n```\n\n- Pull the image and run it.\n\n```bash\ndocker pull us-central1-docker.pkg.dev/$PROJECT_ID/my-repository/node-app:0.2\ndocker run -p 4000:80 -d us-central1-docker.pkg.dev/$PROJECT_ID/my-repository/node-app:0.2\ncurl http://localhost:4000\n```\n\n\n\n\n\n"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_030_minimal_nodejs_app_dockerize_google_artifact_registry/test/Dockerfile",
    "content": "# Use an official Node runtime as the parent image\nFROM node:lts\n# Set the working directory in the container to /app\nWORKDIR /app\n# Copy the current directory contents into the container at /app\nADD . /app\n# Make the container's port 80 available to the outside world\nEXPOSE 80\n# Run app.js using node when the container launches\nCMD [\"node\", \"app.js\"]\n"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_030_minimal_nodejs_app_dockerize_google_artifact_registry/test/app.js",
    "content": "/*\nThis is a Node.js server that listens for HTTP requests on port 80 (the standard HTTP port)\nand responds with a \"Hello World\" message in plain text format\n*/\n\n// imports the Node.js http module, which provides functionality for creating an HTTP server.\nconst http = require('http');\n\n// defines two constants, hostname and port, which specify the address and port number that the server will listen on\nconst hostname = '0.0.0.0';\nconst port = 80;\n\n// creates an HTTP server using the http.createServer() method, which takes a callback\n// function as its argument.\n// This callback function is called whenever a client makes a request to the server.\nconst server = http.createServer((req, res) => {\n    // The callback function sets the HTTP response status code to 200 (OK),\n    res.statusCode = 200;\n    //sets the Content-Type header to text/plain,\n    res.setHeader('Content-Type', 'text/plain');\n    // and sends the \"Hello World\" message as the response body.\n    res.end('Hello World\\n');\n});\n\n// The server.listen() method is called to start the server listening on the\n// specified hostname and port number. It also takes a callback function that\n// is called once the server starts listening.\n// This callback function just logs a message to the console to indicate that the server is running.\nserver.listen(port, hostname, () => {\n    console.log('Server running at http://%s:%s/', hostname, port);\n});\n\n// Finally, a SIGINT event listener is added to the process object.\n// This listener is triggered when the user presses Ctrl-C to stop the server.\n// When the listener is triggered, it logs a message to the console and exits the process.\nprocess.on('SIGINT', function() {\n    console.log('Caught interrupt signal and will exit');\n    process.exit();\n});\n"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_031_hello_node_kubernetes__node/Dockerfile",
    "content": "# Use Node.js v6.9.2 as base image\nFROM node:6.9.2\n\n# Expose port 8080 for incoming traffic\nEXPOSE 8080\n\n# Copy the server.js file from the current directory to the image\nCOPY server.js .\n\n# Set the default command to run the server.js file with Node.js\nCMD node server.js\n"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_031_hello_node_kubernetes__node/ReadMe.md",
    "content": "# Hello Node Kubernetes\n\n[https://www.cloudskillsboost.google](https://www.cloudskillsboost.google)\n\n[Select - Lab -  Hello Node Kubernetes](https://www.cloudskillsboost.google/paths)\n\n\n**High Level Objectives**\n- Create a Node.js server.\n- Create a Docker container image. \n- Create a container cluster. \n- Create a Kubernetes pod. \n- Scale up your services.\n\n\n**Skills**\n- gcp\n- kubernetes\n- docker\n- nodejs\n- pods\n- deployments\n- services\n- scaling\n- load balancing\n\n\n\nhow the pieces fit together with one another\n\n![img.png](.images/moving-parts.png)\n\n\n## Create Nodejs application\n\n```bash\ntouch server.js\n\n# copy the file contents\n\n\nnode server.js    # run the server\n\n# in another terminal session \ncurl localhost:8080\n```\n\n## Create Dockerfile\n\n```Dockefile\n# Use Node.js v6.9.2 as base image\nFROM node:6.9.2\n\n# Expose port 8080 for incoming traffic\nEXPOSE 8080\n\n# Copy the server.js file from the current directory to the image\nCOPY server.js .\n\n# Set the default command to run the server.js file with Node.js\nCMD node server.js\n```\n\n- Build and Run\n\n```bash\nexport PROJECT_ID=$(gcloud config get-value project -q)\n\n# Build the image with the following, replacing PROJECT_ID with your Project ID\ndocker build -t gcr.io/$PROJECT_ID/hello-node:v1 .\n\n# Run the following command replacing PROJECT_ID with your Project ID\ndocker run -d -p 8080:8080 gcr.io/$PROJECT_ID/hello-node:v1\n\n# Test\ncurl http://localhost:8080\n\n\n# Check running containers\ndocker ps\n\n# Stop the container\ndocker stop <container-id>\n\n\n# Push\n\n# Run this command, replacing PROJECT_ID with your Project ID,\n\ngcloud auth configure-docker\ndocker push gcr.io/$PROJECT_ID/hello-node:v1\n```\n\n## Create your cluster\n\n```bash\n## Replace PROJECT_ID\ngcloud config set project $PROJECT_ID\n\n## Create a cluster with two n1-standard-1 nodes (this will take a few minutes to complete):\ngcloud container clusters create hello-world \\\n                --num-nodes 2 \\\n                --machine-type n1-standard-1 \\\n                --zone us-central1-a\n                \n# Check the cluster in the Cloud Console\n```\n\n## Create your pod\n\n```bash\n# Create a pod with the kubectl run command\n## Replace project ID\nkubectl create deployment hello-node \\\n    --image=gcr.io/$PROJECT_ID/hello-node:v1\n    \n# Check deployment\nkubectl get deployments\n\n# pods\nkubectl get pods\n\n```\n\n## Allow external traffic\n\n```bash\n# From Cloud Shell you can expose the pod to the public internet with the kubectl expose \n# command combined with the --type=\"LoadBalancer\" flag. \n# This flag is required for the creation of an externally accessible IP\nkubectl expose deployment hello-node --type=\"LoadBalancer\" --port=8080\n\n# Check services\nkubectl get services\n\n# Test application\ncurl http://<EXTERNAL-IP>:8080\n```\n\n\n## Scale up your service\n\n```bash\n# Scale up your service to four replicas\nkubectl scale deployment hello-node --replicas=4\n\n# Check deployment\nkubectl get deployment\n\n# Check pods\nkubectl get pods\n\n```\n\n\nState of our cluster\n\n![img.png](.images/state-of-cluster.png)\n\n\n## Roll out an upgrade to your service\n\n- Change the server.js file to return a different message\n\n```bash\nresponse.end(\"Hello Kubernetes World!\");\n```\n\n- Build and push the new image\n\n```bash\ndocker build -t gcr.io/$PROJECT_ID/hello-node:v2 .\n\ndocker push gcr.io/$PROJECT_ID/hello-node:v2\n```\n\n- Edit the deployment to use the new image\n\n```bash\nkubectl set image deployment/hello-node hello-node=gcr.io/$PROJECT_ID/hello-node:v2\n# OR\nkubectl edit deployment hello-node\n# change the image to gcr.io/PROJECT_ID/hello-node:v2\n```\n\n- Check the deployment\n\n```bash\nkubectl get deployments\n```\n\n\n\n"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_031_hello_node_kubernetes__node/server.js",
    "content": "/*\nThis is a basic Node.js code that creates an HTTP server and listens for\nincoming requests on port 8080. When a request is received, it responds with a HTTP\n200 status code and the message \"Hello World!\".\n*/\n\n// we are importing the Node.js http module and defining a function called handleRequest\n// which takes in two arguments, request and response. When a request is received by the server,\n// this function is called to handle the request.\nvar http = require('http');\n// Inside the handleRequest function, the response is set to return a HTTP 200\n// status code using the writeHead method of the response object, and the response\n// body is set to \"Hello World!\" using the end method of the response object.\nvar handleRequest = function(request, response) {\n  response.writeHead(200);\n  response.end(\"Hello World!\");\n}\n// The http.createServer method is used to create an HTTP server and\n// assign the handleRequest function as the request handler. Finally,\n// the server is started by calling the listen method of the server object\n// and specifying the port to listen on.\nvar www = http.createServer(handleRequest);\nwww.listen(8080);"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_032_setting_up_jenkins_on_kubernetes_engine/ReadMe.md",
    "content": "\n\n\n**High Level Objectives**\n- Prepare the environment\n- Configure Helm\n- Configure and install Jenkins\n- Connect to Jenkins\n\n\n**Skills**\n- gcp\n- kubernetes\n- docker\n- nodejs\n- pods\n- jenkins\n- helm\n- deployments\n- services\n\n\n## Prepare the environment\n\n\n```bash\n# Set the default Compute Engine zone to us-central1-c:\ngcloud config set compute/zone us-central1-c\n\n# Clone the sample code:\ngit clone https://github.com/GoogleCloudPlatform/continuous-deployment-on-kubernetes.git\n\n# Navigate to the sample code directory:\ncd continuous-deployment-on-kubernetes\n```\n\n\n- Creating a Kubernetes cluster\n\n```bash\ngcloud container clusters create jenkins-cd \\\n--num-nodes 2 \\\n--scopes \"https://www.googleapis.com/auth/projecthosting,cloud-platform\"\n```\n\n- confirm cluster is running\n\n```bash\ngcloud container clusters list\n```\n\n- Get the credentials for your cluster. Kubernetes Engine uses these credentials to access your newly provisioned cluster.\n\n```bash\ngcloud container clusters get-credentials jenkins-cd\n\n# Verify that you can access your cluster by running the following command:\nkubectl cluster-info\n```\n\n\n## Configure Helm\n\n- Add Helm's jenkins chart repository:\n\n```bash\nhelm repo add jenkins https://charts.jenkins.io\n\n# Update the repo to ensure you get the latest list of charts:\nhelm repo update\n```\n\n## Configure and install Jenkins\n\n```bash\n# Use the Helm CLI to deploy the chart with your configuration set:\nhelm upgrade --install -f jenkins/values.yaml myjenkins jenkins/jenkins\n```\n\n- Once that command completes ensure the Jenkins pod goes to the Running state and the container is in the READY state.\n\n```bash\nkubectl get pods\n```\n\n- Run the following command to setup port forwarding to the Jenkins UI from the Cloud Shell:\n\n```bash\necho http://127.0.0.1:8080\nkubectl --namespace default port-forward svc/myjenkins 8080:8080 >> /dev/null &\n```\n\n- Now, check that the Jenkins Service was created properly:\n\n```bash\nkubectl get svc\n```\n\n## Connect to Jenkins\n\n- The Jenkins chart will automatically create an admin password for you. To retrieve it, run:\n\n```bash\nkubectl exec --namespace default -it svc/myjenkins -c jenkins -- /bin/cat /run/secrets/additional/chart-admin-password && echo\n```"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_032_setting_up_jenkins_on_kubernetes_engine/values.yaml",
    "content": "controller:\n  installPlugins:\n    - kubernetes:latest\n    - workflow-job:latest\n    - workflow-aggregator:latest\n    - credentials-binding:latest\n    - git:latest\n    - google-oauth-plugin:latest\n    - google-source-plugin:latest\n    - google-kubernetes-engine:latest\n    - google-storage-plugin:latest\n  resources:\n    requests:\n      cpu: \"50m\"\n      memory: \"1024Mi\"\n    limits:\n      cpu: \"1\"\n      memory: \"3500Mi\"\n  javaOpts: \"-Xms3500m -Xmx3500m\"\n  serviceType: ClusterIP\nagent:\n  resources:\n    requests:\n      cpu: \"500m\"\n      memory: \"256Mi\"\n    limits:\n      cpu: \"1\"\n      memory: \"512Mi\"\npersistence:\n  size: 100Gi\nserviceAccount:\n  name: cd-jenkins\n"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_033_continuous_delivery_with_jenkins_in_kubernetes_engine/Jenkinsfile",
    "content": "pipeline {\n\n  environment {\n    PROJECT = \"REPLACE_WITH_YOUR_PROJECT_ID\"\n    APP_NAME = \"gceme\"\n    FE_SVC_NAME = \"${APP_NAME}-frontend\"\n    CLUSTER = \"jenkins-cd\"\n    CLUSTER_ZONE = \"us-east1-d\"\n    IMAGE_TAG = \"gcr.io/${PROJECT}/${APP_NAME}:${env.BRANCH_NAME}.${env.BUILD_NUMBER}\"\n    JENKINS_CRED = \"${PROJECT}\"\n  }\n\n  agent {\n    kubernetes {\n      label 'sample-app'\n      defaultContainer 'jnlp'\n      yaml \"\"\"\napiVersion: v1\nkind: Pod\nmetadata:\nlabels:\n  component: ci\nspec:\n  # Use service account that can deploy to all namespaces\n  serviceAccountName: cd-jenkins\n  containers:\n  - name: golang\n    image: golang:1.10\n    command:\n    - cat\n    tty: true\n  - name: gcloud\n    image: gcr.io/cloud-builders/gcloud\n    command:\n    - cat\n    tty: true\n  - name: kubectl\n    image: gcr.io/cloud-builders/kubectl\n    command:\n    - cat\n    tty: true\n\"\"\"\n}\n  }\n  stages {\n    stage('Test') {\n      steps {\n        container('golang') {\n          sh \"\"\"\n            ln -s `pwd` /go/src/sample-app\n            cd /go/src/sample-app\n            go test\n          \"\"\"\n        }\n      }\n    }\n    stage('Build and push image with Container Builder') {\n      steps {\n        container('gcloud') {\n          sh \"PYTHONUNBUFFERED=1 gcloud builds submit -t ${IMAGE_TAG} .\"\n        }\n      }\n    }\n    stage('Deploy Canary') {\n      // Canary branch\n      when { branch 'canary' }\n      steps {\n        container('kubectl') {\n          // Change deployed image in canary to the one we just built\n          sh(\"sed -i.bak 's#corelab/gceme:1.0.0#${IMAGE_TAG}#' ./k8s/canary/*.yaml\")\n          step([$class: 'KubernetesEngineBuilder', namespace:'production', projectId: env.PROJECT, clusterName: env.CLUSTER, zone: env.CLUSTER_ZONE, manifestPattern: 'k8s/services', credentialsId: env.JENKINS_CRED, verifyDeployments: false])\n          step([$class: 'KubernetesEngineBuilder', namespace:'production', projectId: env.PROJECT, clusterName: env.CLUSTER, zone: env.CLUSTER_ZONE, manifestPattern: 'k8s/canary', credentialsId: env.JENKINS_CRED, verifyDeployments: true])\n          sh(\"echo http://`kubectl --namespace=production get service/${FE_SVC_NAME} -o jsonpath='{.status.loadBalancer.ingress[0].ip}'` > ${FE_SVC_NAME}\")\n        }\n      }\n    }\n    stage('Deploy Production') {\n      // Production branch\n      when { branch 'master' }\n      steps{\n        container('kubectl') {\n        // Change deployed image in canary to the one we just built\n          sh(\"sed -i.bak 's#corelab/gceme:1.0.0#${IMAGE_TAG}#' ./k8s/production/*.yaml\")\n          step([$class: 'KubernetesEngineBuilder', namespace:'production', projectId: env.PROJECT, clusterName: env.CLUSTER, zone: env.CLUSTER_ZONE, manifestPattern: 'k8s/services', credentialsId: env.JENKINS_CRED, verifyDeployments: false])\n          step([$class: 'KubernetesEngineBuilder', namespace:'production', projectId: env.PROJECT, clusterName: env.CLUSTER, zone: env.CLUSTER_ZONE, manifestPattern: 'k8s/production', credentialsId: env.JENKINS_CRED, verifyDeployments: true])\n          sh(\"echo http://`kubectl --namespace=production get service/${FE_SVC_NAME} -o jsonpath='{.status.loadBalancer.ingress[0].ip}'` > ${FE_SVC_NAME}\")\n        }\n      }\n    }\n    stage('Deploy Dev') {\n      // Developer Branches\n      when {\n        not { branch 'master' }\n        not { branch 'canary' }\n      }\n      steps {\n        container('kubectl') {\n          // Create namespace if it doesn't exist\n          sh(\"kubectl get ns ${env.BRANCH_NAME} || kubectl create ns ${env.BRANCH_NAME}\")\n          // Don't use public load balancing for development branches\n          sh(\"sed -i.bak 's#LoadBalancer#ClusterIP#' ./k8s/services/frontend.yaml\")\n          sh(\"sed -i.bak 's#corelab/gceme:1.0.0#${IMAGE_TAG}#' ./k8s/dev/*.yaml\")\n          step([$class: 'KubernetesEngineBuilder', namespace: \"${env.BRANCH_NAME}\", projectId: env.PROJECT, clusterName: env.CLUSTER, zone: env.CLUSTER_ZONE, manifestPattern: 'k8s/services', credentialsId: env.JENKINS_CRED, verifyDeployments: false])\n          step([$class: 'KubernetesEngineBuilder', namespace: \"${env.BRANCH_NAME}\", projectId: env.PROJECT, clusterName: env.CLUSTER, zone: env.CLUSTER_ZONE, manifestPattern: 'k8s/dev', credentialsId: env.JENKINS_CRED, verifyDeployments: true])\n          echo 'To access your environment run `kubectl proxy`'\n          echo \"Then access your service via http://localhost:8001/api/v1/proxy/namespaces/${env.BRANCH_NAME}/services/${FE_SVC_NAME}:80/\"\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_033_continuous_delivery_with_jenkins_in_kubernetes_engine/ReadMe.md",
    "content": "# Continuous Delivery with Jenkins in Kubernetes Engine\n\n**High Level Objectives**\n- \n\n\n**Skills**\n- gcp\n\n\n## Download the source code\n\n- run the following command to set your zone us-east1-c:\n\n```bash\ngcloud config set compute/zone us-east1-c\n\n# Then copy the lab's sample code:\ngsutil cp gs://spls/gsp051/continuous-deployment-on-kubernetes.zip .\n\nunzip continuous-deployment-on-kubernetes.zip\n\ncd continuous-deployment-on-kubernetes\n```\n\n## Provisioning Jenkins\n\n```bash\n# command to provision a Kubernetes cluster:\ngcloud container clusters create jenkins-cd \\\n--num-nodes 2 \\\n--machine-type n1-standard-2 \\\n--scopes \"https://www.googleapis.com/auth/source.read_write,cloud-platform\"\n\n\n# confirm that your cluster is running by executing the following command:\ngcloud container clusters list\n\n# Now, get the credentials for your cluster:\ngcloud container clusters get-credentials jenkins-cd\n\n# confirm that you can connect to it by running the following command\nkubectl cluster-info\n```\n\n\n## Setup Helm\n\n```bash\n# Add Helm's stable chart repo:\nhelm repo add jenkins https://charts.jenkins.io\n\n# Ensure the repo is up to date:\nhelm repo update\n\n```\n\n## Configure and Install Jenkins\n\nvalues file to automatically configure your Kubernetes Cloud and add the following necessary plugins:\n\n- Kubernetes:latest\n- Workflow-multibranch:latest\n- Git:latest\n- Configuration-as-code:latest\n- Google-oauth-plugin:latest\n- Google-source-plugin:latest\n- Google-storage-plugin:latest\n\n```bash\n# Use the Helm CLI to deploy the chart with your configuration settings:\nhelm install cd jenkins/jenkins -f jenkins/values.yaml --wait\n\n# Check pods\nkubectl get pods\n\n# Configure the Jenkins service account to be able to deploy to the cluster:\nkubectl create clusterrolebinding jenkins-deploy --clusterrole=cluster-admin --serviceaccount=default:cd-jenkins\n\n# Run the following command to setup port forwarding to the Jenkins UI from the Cloud Shell:\nexport POD_NAME=$(kubectl get pods --namespace default -l \"app.kubernetes.io/component=jenkins-master\" -l \"app.kubernetes.io/instance=cd\" -o jsonpath=\"{.items[0].metadata.name}\")\nkubectl port-forward $POD_NAME 8080:8080 >> /dev/null &\n\n# check that the Jenkins Service was created properly:\nkubectl get svc\n\n```\n\n## Connect to Jenkins\n\n```bash\n# Jenkins chart will automatically create an admin password for you. To retrieve it, run:\nprintf $(kubectl get secret cd-jenkins -o jsonpath=\"{.data.jenkins-admin-password}\" | base64 --decode);echo\n\n# If asked, log in with username admin and your auto-generated password.\n```\n\n## Understanding the Application\n\n\n## Deploying the Application\n\nYou will deploy the application into two different environments:\n- Production: The live site that your users access.\n- Canary: A smaller-capacity site that receives only a percentage of your user traffic. Use this environment to validate \n  your software with live traffic before it's released to all of your users.\n\n\n```bash\ncd sample-app\n\n## Create the Kubernetes namespace to logically isolate the deployment:\nkubectl create ns production\n\n# Create the production and canary deployments, and the services using the kubectl apply commands:\nkubectl apply -f k8s/production -n production\n\nkubectl apply -f k8s/canary -n production\n\nkubectl apply -f k8s/services -n production\n\n# Scale up the production environment frontends by running the following command\nkubectl scale deployment gceme-frontend-production -n production --replicas 4\n\n# Now confirm that you have 5 pods running for the frontend, 4 for production traffic and 1 for canary releases \nkubectl get pods -n production -l app=gceme -l role=frontend\n\n# Also confirm that you have 2 pods for the backend, 1 for production and 1 for canary:\nkubectl get pods -n production -l app=gceme -l role=backend\n\n#Retrieve the external IP for the production services:\nkubectl get service gceme-frontend -n production\n\n# Now, store the frontend service load balancer IP in an environment variable for use later:\nexport FRONTEND_SERVICE_IP=$(kubectl get -o jsonpath=\"{.status.loadBalancer.ingress[0].ip}\" --namespace=production services gceme-frontend)\n\n# Confirm that both services are working by opening the frontend external IP address in your browser.\n\n# Check the version output of the service by running the following command (it should read 1.0.0):\ncurl http://$FRONTEND_SERVICE_IP/version\n```\n\n## Creating the Jenkins Pipeline\n\n- Creating the Jenkins Pipeline\n\n```bash\ngcloud source repos create default\n\ngit init\n\n# Initialize the sample-app directory as its own Git repository:\ngit config credential.helper gcloud.sh\n\n# Run the following command\ngit remote add origin https://source.developers.google.com/p/$DEVSHELL_PROJECT_ID/r/default\n\n# Set the username and email address for your Git commits. \n# Replace [EMAIL_ADDRESS] with your Git email address and [USERNAME] with your Git username:\ngit config --global user.email \"[EMAIL_ADDRESS]\"\n\ngit config --global user.name \"[USERNAME]\"\n\ngit add .\n\ngit commit -m \"Initial commit\"\n\ngit push origin master\n```\n\n\n- Adding your service account credentials\n\n- In the Jenkins user interface, click Manage Jenkins in the left navigation then click Manage Credentials\n  , Click Global credentials (unrestricted).\n\n- Configure Jenkins Cloud for Kubernetes\n\n- Creating the Jenkins job\n\n```bash\n\n# https://source.developers.google.com/p/[PROJECT_ID]/r/default\n```\n\n\n## Creating the development environment\n\n```bash\n# Create a development branch and push it to the Git server:\ngit checkout -b new-feature\n\n\n\n```\n\n- Modifying the pipeline definition\n- Use the Jenkinsfile\n  - Add your PROJECT_ID to the REPLACE_WITH_YOUR_PROJECT_ID value in the Jenkinsfile.\n  - CLUSTER_ZONE to to us-east1-c\n- Change the two instances of <div class=\"card blue\"> with <div class=\"card orange\"> in the html.go file.\n- main.go change the version to 2.0.0\n\n\n## Kick off Deployment\n\n\n- Commit and push your changes\n\n```bash\ngit add Jenkinsfile html.go main.go\n\ngit commit -m \"Version 2.0.0\"\n\ngit push origin new-feature\n```\n\n- Once that's all taken care of, start the proxy in the background:\n\n```bash\nkubectl proxy &\n\n# If it stalls, press Ctrl + C to exit out. Verify that your application is accessible by \n# sending a request to localhost and letting kubectl proxy forward it to your service\ncurl \\\nhttp://localhost:8001/api/v1/namespaces/new-feature/services/gceme-frontend:80/proxy/version\n\n# You should see it respond with 2.0.0, which is the version that is now running.\n\n```\n\n## Deploying a canary release\n\n- Create a canary branch and push it to the Git server:\n\n```bash\ngit checkout -b canary\n\ngit push origin canary\n\n```\n\n- In Jenkins, you should see the canary pipeline has kicked off. Once complete, \n  you can check the service URL to ensure that some of the traffic is being served by your new version. \n  You should see about 1 in 5 requests (in no particular order) returning version 2.0.0.\n\n```bash\nexport FRONTEND_SERVICE_IP=$(kubectl get -o \\\njsonpath=\"{.status.loadBalancer.ingress[0].ip}\" --namespace=production services gceme-frontend)\n\n\nwhile true; do curl http://$FRONTEND_SERVICE_IP/version; sleep 1; done\n# Output\n1.0.0\n1.0.0\n1.0.0\n2.0.0\n1.0.0\n1.0.0\n1.0.0\n```\n\n## Deploying to production\n\n- Create a canary branch and push it to the Git server:\n\n```bash\ngit checkout master\n\ngit merge canary\n\ngit push origin master\n\n# Trigger master job\nexport FRONTEND_SERVICE_IP=$(kubectl get -o \\\njsonpath=\"{.status.loadBalancer.ingress[0].ip}\" --namespace=production services gceme-frontend)\n\n# All should be 2.0\nwhile true; do curl http://$FRONTEND_SERVICE_IP/version; sleep 1; done\n# Output\n2.0.0\n2.0.0\n2.0.0\n2.0.0\n2.0.0\n2.0.0\n\n# \nkubectl get service gceme-frontend -n production\n```"
  },
  {
    "path": "home/cloud_providers/gcp/taskset_gcp_cloud_providers/task_033_continuous_delivery_with_jenkins_in_kubernetes_engine/values.yaml",
    "content": "controller:\n  installPlugins:\n    - kubernetes:latest\n    - workflow-job:latest\n    - workflow-aggregator:latest\n    - credentials-binding:latest\n    - git:latest\n    - google-oauth-plugin:latest\n    - google-source-plugin:latest\n    - google-kubernetes-engine:latest\n    - google-storage-plugin:latest\n  resources:\n    requests:\n      cpu: \"50m\"\n      memory: \"1024Mi\"\n    limits:\n      cpu: \"1\"\n      memory: \"3500Mi\"\n  javaOpts: \"-Xms3500m -Xmx3500m\"\n  serviceType: ClusterIP\nagent:\n  resources:\n    requests:\n      cpu: \"500m\"\n      memory: \"256Mi\"\n    limits:\n      cpu: \"1\"\n      memory: \"512Mi\"\npersistence:\n  size: 100Gi\nserviceAccount:\n  name: cd-jenkins\n"
  },
  {
    "path": "home/cloud_providers/oci/ReadMe.md",
    "content": "# taskset_oci_cloud_providers\n\n> [Auto](https://github.com/codeaprendiz/learn_fullstack/blob/main/home/php/intermediate/taskset_intermediate_php/task_004_createGlobalMarkdownTable/generate-readme.php) generated ReadMe. Number of tasks: 3\n\n| Task     | Description                                                                                      |\n|----------|--------------------------------------------------------------------------------------------------|\n| task_000 | [task_000_set_up_oci_cli](taskset_oci_cloud_providers/task_000_set_up_oci_cli)                   |\n| task_001 | [task_001_oci_cli_commands](taskset_oci_cloud_providers/task_001_oci_cli_commands)               |\n| task_002 | [task_002_create_k8s_quick_create](taskset_oci_cloud_providers/task_002_create_k8s_quick_create) |\n"
  },
  {
    "path": "home/cloud_providers/oci/taskset_oci_cloud_providers/task_000_set_up_oci_cli/ReadMe.md",
    "content": "# Set up OCI Cli\n\n[docs.oracle.com » Developer Resources » Required Keys and OCIDs](https://docs.oracle.com/en-us/iaas/Content/API/Concepts/apisigningkey.htm#two)\n[docs.oracle.com » Developer Resources » Working with CLI » Configuring the CLI](https://docs.oracle.com/en-us/iaas/Content/API/SDKDocs/cliconfigure.htm)\n\n- Login to oracle cloud\n\n- Go to your profile and download the API Keys\n\n- Download private and public key pairs\n\n- Create the OCI directory\n\n```bash\n╰─ mkdir -p ~/.oci/\n╰─ touch ~/.oci/config\n```\n\n- Move the downloaded keys to the OCI directory\n\n```bash\n╰─ ls\nconfig          oci-private.pem oci-public.pem\n```\n\n\n- Set up your config file and repiar the config file permissions if needed\n\n```bash\n╰─ oci setup repair-file-permissions --file ~/.oci/oci-private.pem \n```\n\n```bash\n╰─ cat config\n[DEFAULT]\nuser=<username>\nfingerprint=<key-fingerprint>\ntenancy=<tenancy>\nregion=<region>\nkey_file=~/.oci/oci-private.pem\n```\n\n- If you have created any buckets, then you can list those buckets using the following command\n\n```bash\n╰─ oci os bucket list --compartment-id <compartment-id> | jq '.data[] | {name} '\n\n# Alternatively you can pass the config file as argument as well\n╰─ oci os bucket list --compartment-id <compartment-id> --config-file </path/to/file> | jq '.data[] | {name} '\n.\n```\n"
  },
  {
    "path": "home/cloud_providers/oci/taskset_oci_cloud_providers/task_001_oci_cli_commands/ReadMe.md",
    "content": "# OCI Commands\n\n\n# oci\n\n\nCommand / Options |  Use Case        |     Example      |  \n| ------------- |-------------| -------------| \n| [create](https://docs.oracle.com/en-us/iaas/tools/oci-cli/2.9.1/oci_cli_docs/cmdref/os/bucket/create.html) | Create OCI bucket | `╰─ oci os bucket create --compartment-id <compartment-id> --name sandbox-v1-bucket`\n| [list](https://docs.oracle.com/en-us/iaas/tools/oci-cli/3.16.0/oci_cli_docs/cmdref/os/bucket/list.html)| List OCI buckets | `╰─ oci os bucket list --compartment-id <compartment-id> `|"
  },
  {
    "path": "home/cloud_providers/oci/taskset_oci_cloud_providers/task_002_create_k8s_quick_create/ReadMe.md",
    "content": "# To create a k8s cluster in OCI using Quick Create feature and understand the network topology required\n\nWe can later use this to create our own cluster using terraform\n\n## K8S created\n\n![](.images/k8s.png)\n\n## The VCN Created\n\n![img.png](.images/vcn.png)\n\noke-vcn-quick-sandbox-k8s-a4bf5e044\n\n- IPV4 CIDR `10.0.0.0/16`\n- Default route table `oke-public-routetable-sandbox-k8s-a4bf5e044`\n\n\n\n## Subnets\n\n![](.images/subnets.png)\n\n\noke-nodesubnet-quick-sandbox-k8s-a4bf5e044-regional\n- CIDR `10.0.10.0/24`\n- Private\n\n### Security List\n\noke-nodeseclist-quick-sandbox-k8s-a4bf5e044\n\n#### Ingress\n\n![](.images/ingress-subnet-pri.png)\n\n- 10.0.10.0/24\t--------------All Protocols----->\n> All traffic for all ports\t\n> Allow pods on one worker node to communicate with pods on other worker nodes. Anything from within the subnet can communicate with one another\n- 10.0.0.0/28\t--------------ICMP ------------->\n> Path discovery. Anything from API endpoint subnet can communicate over ICMP \n- 10.0.0.0/28  All Ports --------------All Protocols-----------> All Ports\n> TCP traffic for ports: All\n> TCP access from Kubernetes Control Plane. Anything coming from API endpoint subnet can communicate over TCP, all source ports to all destination ports\n- 0.0.0.0/0 All Ports ---------------TCP-----------------------> 22 \n> TCP traffic for ports: 22 SSH Remote Login Protocol. Inbound SSH traffic to worker nodes. Anything coming from Internet can communicate over TCP 22 for SSH access\n\n#### Egress\n\n![](.images/egress-subnet-pri.png)\n\n- All ports--------ALL protocols---------> 10.0.10.0/24\t(All ports).      \n> Anything from within the subnet can communicate with one another. Allow pods on one worker node to communicate with pods on other worker nodes\n- ALL Ports--------TCP -------> 10.0.0.0/28\t- Port 6443 (API subnet)\n> All ports can communicate to port 6443 of API subnet. Access to Kubernetes API Endpoint.\n- ALL Ports--------TCP -------> 10.0.0.0/28\t- Port 12250 (API subnet)\n> All ports can communicate to port 12250 of API subnet. Kubernetes worker to control plane communication\n- -----------------ICMP--------> 10.0.0.0/28\n> Path Discovery\n- All ports ----------------TCP-------------> All BOM Services In Oracle Services Network, 443 port\n> Allow nodes to communicate with OKE to ensure correct start-up and continued functioning\n-           ----------------ICMP------------> 0.0.0.0/0\n> ICMP Access from Kubernetes Control Plane\n- All ports  ----------------All protocols---------------> 0.0.0.0/0, All ports\n> Worker Nodes access to Internet\n\n### RouteTable\n\noke-private-routetable-sandbox-k8s-a4bf5e044\n\n- If -------------> 0.0.0.0/0,  go to NAT Gateway\n> traffic to the internet\n\n- If -------------> All BOM Services In Oracle Services Network, go to Service Gateway\n> traffic to OCI services\n\n\n\n\noke-k8sApiEndpoint-subnet-quick-sandbox-k8s-a4bf5e044-regional\n- CIDR `10.0.0.0/28`\n- Public\n\n### Security List\n\noke-k8sApiEndpoint-quick-sandbox-k8s-a4bf5e044\n\n#### Ingress\n\n![img.png](.images/ingress-api-subnet.png)\n\n- 0.0.0.0/0 All Ports ---------------TCP-----------------> 6443\n> TCP traffic for ports: 6443\n> External access to Kubernetes API endpoint\n\n- 10.0.10.0/24 All Ports ------------TCP-----------------> 6443\n> TCP traffic for ports: 6443\n> Kubernetes worker to Kubernetes API endpoint communication\n\n- 10.0.10.0/24 All Ports -----------TCP--------------------> 12250\n> TCP traffic for ports: 12250 \n> Kubernetes worker to control plane communication\n\n- 10.0.10.0/24           -----------ICMP-------------------> \n> Path Discovery\n\n#### Egress\n\n![img.png](.images/egress-api-subnet.png)\n\n- All Ports  ------------------------TCP----------------------->             All BOM Services In Oracle Services Network, 443\n> TCP traffic for ports: 443 HTTPS\n> Allow Kubernetes Control Plane to communicate with OKE\n\n- All Ports ------------------------TCP----------------------->  10.0.10.0/24, All Ports\n> TCP traffic for ports: All\n> All traffic to worker nodes\n\n-           ------------------------ICMP----------------------> 10.0.10.0/24\t\n> Path discovery\n\n\n### Route Table\n\n\noke-public-routetable-sandbox-k8s-a4bf5e044\n\n- If ------------> 0.0.0.0/0, then go to    Internet Gateway \n> traffic to/from internet\n\n\noke-svclbsubnet-quick-sandbox-k8s-a4bf5e044-regional\n- CIDR `10.0.20.0/24`\n- Public\n\n### Security List\n\noke-svclbseclist-quick-sandbox-k8s-a4bf5e044\n\n#### Ingress\n\n![img.png](.images/ingress-lb-sec.png)\n\n#### Egress\n\n![img.png](.images/eggress-lb-sec.png)\n\n\n### Route Table\n\n\noke-public-routetable-sandbox-k8s-a4bf5e044\n\n\n\n\n"
  },
  {
    "path": "home/containers/docker/ReadMe.md",
    "content": "# taskset_docker_containers\n\n> [Auto](https://github.com/codeaprendiz/learn_fullstack/blob/main/home/php/intermediate/taskset_intermediate_php/task_004_createGlobalMarkdownTable/generate-readme.php) generated ReadMe. Number of tasks: 33\n\n| Task     | Description                                                                                                                                                                                                |\n|----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| task_000 | [task_000_commands](taskset_docker_containers/task_000_commands)                                                                                                                                           |\n| task_001 | [task_001_docker_overview](taskset_docker_containers/task_001_docker_overview)                                                                                                                             |\n| task_002 | [task_002_docker_run__detached_vs_foreground](taskset_docker_containers/task_002_docker_run__detached_vs_foreground)                                                                                       |\n| task_003 | [task_003_getting_started](taskset_docker_containers/task_003_getting_started)                                                                                                                             |\n| task_004 | [task_004_docker_run__pid_setting_and_choosing_image_with_tag](taskset_docker_containers/task_004_docker_run__pid_setting_and_choosing_image_with_tag)                                                     |\n| task_005 | [task_005_docker_run__assign_name_and_allocate_pseudo_tty](taskset_docker_containers/task_005_docker_run__assign_name_and_allocate_pseudo_tty)                                                             |\n| task_006 | [task_006_docker_run__expose_port_and_pull_policy_and_environment_vars](taskset_docker_containers/task_006_docker_run__expose_port_and_pull_policy_and_environment_vars)                                   |\n| task_006 | [task_006_run_commands_in_container](taskset_docker_containers/task_006_run_commands_in_container)                                                                                                         |\n| task_007 | [task_007_docker_run__full_container_capabilities_and_set_working_dir_and_volume_mounts](taskset_docker_containers/task_007_docker_run__full_container_capabilities_and_set_working_dir_and_volume_mounts) |\n| task_008 | [task_008_docker_run__hostsfile_ulimit_mem_limit](taskset_docker_containers/task_008_docker_run__hostsfile_ulimit_mem_limit)                                                                               |\n| task_008 | [task_008_docker_run__metadata_and_network_and_attach_to_stdout](taskset_docker_containers/task_008_docker_run__metadata_and_network_and_attach_to_stdout)                                                 |\n| task_009 | [task_009_docker_attach](taskset_docker_containers/task_009_docker_attach)                                                                                                                                 |\n| task_010 | [task_010_docker_build](taskset_docker_containers/task_010_docker_build)                                                                                                                                   |\n| task_011 | [task_011_mongo](taskset_docker_containers/task_011_mongo)                                                                                                                                                 |\n| task_012 | [task_012_postgres](taskset_docker_containers/task_012_postgres)                                                                                                                                           |\n| task_013 | [task_013_prometheus_blackbox_exporter](taskset_docker_containers/task_013_prometheus_blackbox_exporter)                                                                                                   |\n| task_014 | [task_014_elastic_search](taskset_docker_containers/task_014_elastic_search)                                                                                                                               |\n| task_015 | [task_015_elastic_search_bkp_restore](taskset_docker_containers/task_015_elastic_search_bkp_restore)                                                                                                       |\n| task_016 | [task_016_elastic_search_backup_restore_sample_data](taskset_docker_containers/task_016_elastic_search_backup_restore_sample_data)                                                                         |\n| task_017 | [task_017_mem_and_cpu_limit_container](taskset_docker_containers/task_017_mem_and_cpu_limit_container)                                                                                                     |\n| task_018 | [task_018_mysql](taskset_docker_containers/task_018_mysql)                                                                                                                                                 |\n| task_019 | [task_019_nginx_https_domain_test](taskset_docker_containers/task_019_nginx_https_domain_test)                                                                                                             |\n| task_020 | [task_020_docker_commit](taskset_docker_containers/task_020_docker_commit)                                                                                                                                 |\n| task_021 | [task_021_kibana](taskset_docker_containers/task_021_kibana)                                                                                                                                               |\n| task_022 | [task_022_sample_app](taskset_docker_containers/task_022_sample_app)                                                                                                                                       |\n| task_023 | [task_023_update_sample_app](taskset_docker_containers/task_023_update_sample_app)                                                                                                                         |\n| task_024 | [task_024_sample_app_persist_db](taskset_docker_containers/task_024_sample_app_persist_db)                                                                                                                 |\n| task_025 | [task_025_sonarqube__keycloak__saml](taskset_docker_containers/task_025_sonarqube__keycloak__saml)                                                                                                         |\n| task_026 | [task_026_mssql](taskset_docker_containers/task_026_mssql)                                                                                                                                                 |\n| task_027 | [task_027_docker_openvpn](taskset_docker_containers/task_027_docker_openvpn)                                                                                                                               |\n| task_028 | [task_028_docker_engine__networking__overview](taskset_docker_containers/task_028_docker_engine__networking__overview)                                                                                     |\n| task_029 | [task_029_docker_engine__networking__bridge_network_tutorial](taskset_docker_containers/task_029_docker_engine__networking__bridge_network_tutorial)                                                       |\n| task_030 | [task_030_docker_engine__networking__host_networking_tutorial](taskset_docker_containers/task_030_docker_engine__networking__host_networking_tutorial)                                                     |\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_000_commands/ReadMe.md",
    "content": "# docker commands\n\nMore details at [Offical Guide](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands)\n\n- [docker commands](#docker-commands)\n  - [image](#image)\n    - [rm \\[id-of-the-image\\]](#rm-id-of-the-image)\n  - [images](#images)\n  - [run](#run)\n    - [interactive](#interactive)\n    - [tty](#tty)\n\n## image\n\n### rm [id-of-the-image]\n\nTo remove the image with specific ID\n\n```bash\n$ sudo docker images | grep ubuntu\nPassword:\nubuntu                               latest                     4e5021d210f6        2 weeks ago         64.2MB\n \n$ sudo docker image rm 4e5021d210f6\nUntagged: ubuntu:latest\nUntagged: ubuntu@sha256:bec5a2727be7fff3d308193cfde3491f8fba1a2ba392b7546b43a051853a341d\nDeleted: sha256:4e5021d210f65ebe915670c7089120120bc0a303b90208592851708c1b8c04bd\nDeleted: sha256:1d9112746e9d86157c23e426ce87cc2d7bced0ba2ec8ddbdfbcc3093e0769472\nDeleted: sha256:efcf4a93c18b5d01aa8e10a2e3b7e2b2eef0378336456d8653e2d123d6232c1e\nDeleted: sha256:1e1aa31289fdca521c403edd6b37317bf0a349a941c7f19b6d9d311f59347502\nDeleted: sha256:c8be1b8f4d60d99c281fc2db75e0f56df42a83ad2f0b091621ce19357e19d853\n```\n\n## images\n\nTo show all the images present\n\n```bash\n$ sudo docker images               \nPassword:\nREPOSITORY                           TAG                        IMAGE ID            CREATED             SIZE\nubuntu                               latest                     4e5021d210f6        2 weeks ago         64.2MB\nbusybox                              latest                     83aa35aa1c79        3 weeks ago         1.22MB\n```\n\n## run\n\n### interactive\n>--interactive , -i\t\n>\t\n>Keep STDIN open even if not attached \n\n```bash\n$ sudo docker run -i ubuntu:latest bash\npwd\n/\nexit\n\n$\n```\n\n### tty\n\n>--tty , -t\t\n>\t\n>Allocate a pseudo-TTY\n\nYou have to externally kill the container in this case\n\n```bash\n$ sudo docker run -t ubuntu:latest bash\nroot@b01ba82675f5:/# pwd\nls\nexit\n^C^C\nroot@b01ba82675f5:/# exit\n```\n\nWhen you combine -i and -t, you get a proper terminal like experience\n\n```bash\n$ sudo docker run -i -t ubuntu:latest bash\nUnable to find image 'ubuntu:latest' locally\nlatest: Pulling from library/ubuntu\n5bed26d33875: Pull complete\nf11b29a9c730: Pull complete\n930bda195c84: Pull complete\n78bf9a5ad49e: Pull complete\nDigest: sha256:bec5a2727be7fff3d308193cfde3491f8fba1a2ba392b7546b43a051853a341d\nStatus: Downloaded newer image for ubuntu:latest\nroot@e421090e426a:/#\n```\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_001_docker_overview/ReadMe.md",
    "content": "# Docker overview\n\n\n[docs.docker.com/get-started/overview](https://docs.docker.com/get-started/overview)\n\nVersion Stack\n\n| Stack  | Version  |\n|--------|----------|\n| Docker | 20.10.14 |\n\n\n## Usecase to solve actual problem\n\n### docker run\n\nThe following command runs an `ubuntu` container, attaches interactively to your local command-line session, and runs `/bin/bash`.\n\n\n\n```bash\n# Version\n❯ docker -v               \nDocker version 20.10.14, build a224086\n\n# run : Run a command in a new container\n# -i : interactively\n# -t : attached to your terminal\n# ubuntu : is the image we will be downloading\n# /bin/bash : the command that will run inside the container started with ubuntu image\n❯  docker run -i -t ubuntu /bin/bash\n\nroot@f3d2356faadc:/# ls\nbin  boot  dev  etc  home  lib  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var\n\n# exit\n\n\n❯ docker ps          # To show all running containers     \nCONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES\n\n❯ docker ps -a       # To show all containers including stopped ones\nCONTAINER ID   IMAGE     COMMAND   CREATED          STATUS                      PORTS     NAMES\n864a03e87269   ubuntu    \"sh\"      23 seconds ago   Exited (0) 17 seconds ago             unruffled_margulis\n\n❯ docker rm  unruffled_margulis    # Remove the container           \nunruffled_margulis\n\n❯ docker ps -a                 \nCONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES\n\n❯ \n```\n\nDocker starts the container and executes /bin/bash. Because the container is running interactively and attached to your terminal (due to the -i and -t flags), you can provide input using your keyboard while the output is logged to your terminal.\n\nThat's all for today!"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_002_docker_run__detached_vs_foreground/ReadMe.md",
    "content": "## Detached vs Foreground\n\n- [docs.docker.com/engine/reference/run](https://docs.docker.com/engine/reference/run)\n\n- [docs.docker.com/engine/reference/commandline/run](https://docs.docker.com/engine/reference/commandline/run)\n\nVersion Stack\n\n| Stack  | Version  |\n|--------|----------|\n| Docker | 20.10.14 |\n\nBy design, containers started in detached mode exit when the root process used to run the container exits\n\n\n\n### Detached Mode\n\n```bash\n# Note: No --rm option\n❯ docker run -d -p 80:80 nginx service nginx start \n3fdd6761951aeba2a8936a54a7fea982b1b7073a0d2892cab9a4c095d080900b\n\n# Note the container exited after starting\n❯ docker ps -a                                    \nCONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS                     PORTS     NAMES\n3fdd6761951a   nginx     \"/docker-entrypoint.…\"   4 seconds ago   Exited (0) 4 seconds ago             wonderful_fermi\n\n# Note: We added --rm option\n❯ docker run --rm -d -p 80:80 nginx service nginx start\ne836a7703057577b1aa58ac5cf9ca4e9bb85767069651f9fd8ac1972c4d041c0\n\n# The container also exited after being stopped\n❯ docker ps -a                                         \nCONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES\n❯ \n\n# You can start an ubuntu container as well in detached mode\n❯ docker run -d ubuntu  /bin/bash\n63e90449bddb96856fb2cebcb33c5b8f12859ac59bea39645d5c9877215a8cac\n\n❯ docker ps -a                   \nCONTAINER ID   IMAGE     COMMAND       CREATED             STATUS                         PORTS     NAMES\n63e90449bddb   ubuntu    \"/bin/bash\"   2 seconds ago       Exited (0) 1 second ago                  distracted_pasteur\n\n❯ docker run -d ubuntu  sleep 100\na979bd34e5c4d34e8dcc30c464ed3b432fe77938ae3df3ea3983da24d0c649c4\n\n❯ docker ps -a                   \nCONTAINER ID   IMAGE     COMMAND       CREATED             STATUS                         PORTS     NAMES\na979bd34e5c4   ubuntu    \"sleep 100\"   3 seconds ago       Up 3 seconds                             sweet_wozniak\n63e90449bddb   ubuntu    \"/bin/bash\"   30 seconds ago      Exited (0) 29 seconds ago                distracted_pasteur\n```\n\n\n### Foreground Mode\n\nIn foreground mode (the default when -d is not specified), docker run can start the process in the container and attach the console to the process’s standard input, output, and standard error\n\nFor interactive processes (like a shell), you must use -i -t together in order to allocate a tty for the container process\n\n```bash\n❯ docker run -it ubuntu  /bin/bash              \nroot@6036032b640a:/# ls\nbin   dev  home  media  opt   root  sbin  sys  usr\nboot  etc  lib   mnt    proc  run   srv   tmp  var\nroot@6036032b640a:/# exit\nexit\n\n❯ \n```"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_003_getting_started/ReadMe.md",
    "content": "[Getting Started](https://docs.docker.com/get-started/)\n\n- Run\n\n```bash\n$ docker run -d -p 80:80 docker/getting-started\nUnable to find image 'docker/getting-started:latest' locally\nlatest: Pulling from docker/getting-started\ndf9b9388f04a: Pull complete \n5867cba5fcbd: Pull complete \n4b639e65cb3b: Pull complete \n061ed9e2b976: Pull complete \nbc19f3e8eeb1: Pull complete \n4071be97c256: Pull complete \n79b586f1a54b: Pull complete \n0c9732f525d6: Pull complete \nDigest: sha256:b558be874169471bd4e65bd6eac8c303b271a7ee8553ba47481b73b2bf597aae\nStatus: Downloaded newer image for docker/getting-started:latest\n4fb7848e41a1f4135e029b438f3e0fe424dbe5d458618b625128c8f72013b1ff\n\n$ docker ps                                    \nCONTAINER ID   IMAGE                    COMMAND                  CREATED         STATUS         PORTS                NAMES\n4fb7848e41a1   docker/getting-started   \"/docker-entrypoint.…\"   2 minutes ago   Up 2 minutes   0.0.0.0:80->80/tcp   quirky_rosalind\n\n```"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_004_docker_run__pid_setting_and_choosing_image_with_tag/ReadMe.md",
    "content": "## PID Setting and choosing image with Specific Tag\n\nVersion Stack\n\n| Stack  | Version  |\n|--------|----------|\n| Docker | 20.10.14 |\n\n\n### ImageTag\n\n[imagetag](https://docs.docker.com/engine/reference/run/#imagetag)\n\n- Run image with specific tag say ubuntu:14.04\n```bash\n❯ docker run --rm -it -d ubuntu:14.04 sh\n32bd86340d4773b17d5a9ba5c2f8f448ab4d29186801a6d989ad53a2a0a48af3\n\n❯ docker ps -a                          \nCONTAINER ID   IMAGE          COMMAND   CREATED         STATUS         PORTS     NAMES\n32bd86340d47   ubuntu:14.04   \"sh\"      5 seconds ago   Up 4 seconds             practical_ishizaka\n```\n\n### PID\n\n[pid-settings---pid](https://docs.docker.com/engine/reference/run/#pid-settings---pid)\n\nLet's create two containers a1 and a2, and we want container a2 to be able to see the processes running in container a1\n\n```bash\n# Terminal session 1\n❯ docker run --rm --name=a1 -it ubuntu /bin/bash\nroot@fefc7f52750f:/# sleep 10000\n\n\n\n# Terminal session 2\n❯ docker ps -a                                  \nCONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES\nfefc7f52750f   ubuntu    \"/bin/bash\"   33 seconds ago   Up 32 seconds             a1\n\n\n# Note that a2 cannot see the processes running inside of a1 yet.\n❯ docker run --rm --name=a2 -it ubuntu /bin/bash\nroot@9630d2dd813f:/# ps -ef \nUID        PID  PPID  C STIME TTY          TIME CMD\nroot         1     0  0 10:34 pts/0    00:00:00 /bin/bash\nroot         9     1  0 10:34 pts/0    00:00:00 ps -ef\nroot@9630d2dd813f:/# #let's exit\nroot@9630d2dd813f:/# exit\nexit\n\n❯ docker ps -a                                  \nCONTAINER ID   IMAGE     COMMAND       CREATED              STATUS              PORTS     NAMES\nfefc7f52750f   ubuntu    \"/bin/bash\"   About a minute ago   Up About a minute             a1\n\n\n# Now let's start the second container a2 using pid=container:a1\n# Note that now it's able to see the process sleep running in a1\n❯ docker run --rm --name=a2 --pid=container:a1 -it ubuntu /bin/bash\nroot@0bfaed14e83d:/# ps -ef\nUID        PID  PPID  C STIME TTY          TIME CMD\nroot         1     0  0 10:33 pts/0    00:00:00 /bin/bash\nroot        10     1  0 10:33 pts/0    00:00:00 sleep 10000\nroot        11     0  0 10:35 pts/0    00:00:00 /bin/bash\nroot        20    11  0 10:35 pts/0    00:00:00 ps -ef\n\n```\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_005_docker_run__assign_name_and_allocate_pseudo_tty/ReadMe.md",
    "content": "## Assign name and allocate pseudo tty\n\n[assign-name-and-allocate-pseudo-tty---name--it](https://docs.docker.com/engine/reference/commandline/run/#assign-name-and-allocate-pseudo-tty---name--it)\n\nVersion Stack\n\n| Stack  | Version  |\n|--------|----------|\n| Docker | 20.10.14 |\n\n\n- Let's begin\n\n\n```bash\n# allocate pseudo tty : -it\n# --name for container name\n❯ docker run --name test -it debian\n\nroot@d6c0fe130dba:/# exit 13\n\n# Note the exit code is passed to the caller of docker run.\n❯ echo $?                                                                                               \n13\n❯ docker ps -a                                                          \nCONTAINER ID   IMAGE     COMMAND   CREATED              STATUS                       PORTS     NAMES\n4a94928d6520   debian    \"bash\"    About a minute ago   Exited (13) 54 seconds ago             test\n```\n\n## Capture container ID\n\n[capture-container-id---cidfile](https://docs.docker.com/engine/reference/commandline/run/#capture-container-id---cidfile)\n\n- This will create a container and print `test` to the console. The `cidfile` flag makes Docker attempt to create a new file and write the container ID to it.\n\n```bash\n❯ docker run --cidfile /tmp/docker_test.cid ubuntu echo \"test\"\ntest\n\n❯ docker ps -a                                                          \nCONTAINER ID   IMAGE     COMMAND       CREATED         STATUS                     PORTS     NAMES\nc2683f80d7bf   ubuntu    \"echo test\"   5 seconds ago   Exited (0) 4 seconds ago             youthful_hypatia\n\n# Note the container ID got captured in the file\n❯ cat /tmp/docker_test.cid              \nc2683f80d7bf613f4004911904a908377a43fb1ab556988f3aa9992647cd184a\n\n\n```\n\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_006_docker_run__expose_port_and_pull_policy_and_environment_vars/ReadMe.md",
    "content": "## Expose Port, Pull Policy And Environment Variables\n\n\nVersion Stack\n\n| Stack  | Version  |\n|--------|----------|\n| Docker | 20.10.14 |\n\n\n### Expose Port\n\n[publish-or-expose-port--p---expose](https://docs.docker.com/engine/reference/commandline/run/#publish-or-expose-port--p---expose)\n\n```bash\n❯ docker run --rm -d -p 8081:80 nginx nginx -g 'daemon off;'            \nf73315b8a038d94192802c894c72fa3957ca4db019f312e829c3a612fbf17d63\n\n❯ curl localhost:8081 -I\nHTTP/1.1 200 OK\nServer: nginx/1.23.2\nDate: Mon, 14 Nov 2022 14:59:15 GMT\nContent-Type: text/html\nContent-Length: 615\nLast-Modified: Wed, 19 Oct 2022 07:56:21 GMT\nConnection: keep-alive\nETag: \"634fada5-267\"\nAccept-Ranges: bytes\n```\n\nYou can visit the same in browser\n\n![nginx.png](.images/nginx.png)\n\n## Pull Policy\n\n[set-the-pull-policy---pull](https://docs.docker.com/engine/reference/commandline/run/#-set-the-pull-policy---pull)\n\n```bash\n❯ docker pull ubuntu            \n❯ docker images | grep ubuntu             \nubuntu       latest    3c2df5585507   2 weeks ago   69.2MB\n\n❯ docker rmi ubuntu                  \n\n\n❯ docker run --pull=never ubuntu     \ndocker: Error response from daemon: No such image: ubuntu:latest.\n\n# As there is no image with this tag locally\n❯ docker images | grep ubuntu | wc -l\n       0\n```\n\n\n## Environment \n\n[set-environment-variables--e---env---env-file](https://docs.docker.com/engine/reference/commandline/run/#set-environment-variables--e---env---env-file)\n\n```bash\n# Let's create a file\n❯ echo \"VAR3=value\" > .env                                                                              \n❯ cat .env              \nVAR3=value\n\n❯ docker run --rm -it -e MYVAR1=bar --env MYVAR2=foo --env-file ./.env ubuntu bash\nroot@9cb685c53176:/# env | grep VAR\nMYVAR2=foo\nMYVAR1=bar\nVAR3=value\nroot@9cb685c53176:/# exit\nexit\n\n❯ docker run --rm -it -e MYVAR1=bar --env MYVAR2=foo --env-file ./.env ubuntu env | grep VAR\nVAR3=value\nMYVAR1=bar\nMYVAR2=foo\n\n```"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_006_run_commands_in_container/ReadMe.md",
    "content": "# To execute command inside image containers\n\n> docker run -it [image-name:tag] [command-to-execute]\n\n```bash\n$ docker run -it ubuntu:latest bash\nUnable to find image 'ubuntu:latest' locally\nlatest: Pulling from library/ubuntu\n5bed26d33875: Pull complete\nf11b29a9c730: Pull complete\n930bda195c84: Pull complete\n78bf9a5ad49e: Pull complete\nDigest: sha256:bec5a2727be7fff3d308193cfde3491f8fba1a2ba392b7546b43a051853a341d\nStatus: Downloaded newer image for ubuntu:latest\nroot@e421090e426a:/#\n```"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_007_docker_run__full_container_capabilities_and_set_working_dir_and_volume_mounts/ReadMe.md",
    "content": "## Full container capabilities, Set working directory And Mount Volumes\n\nVersion Stack\n\n| Stack  | Version  |\n|--------|----------|\n| Docker | 20.10.14 |\n\n### Full container capabilities\n\n[full-container-capabilities---privileged](https://docs.docker.com/engine/reference/commandline/run/#full-container-capabilities---privileged)\n\n```bash\n❯ docker run -t -i --rm ubuntu bash\nroot@ae4994d93a27:/# mount -t tmpfs none /mnt\nmount: /mnt: permission denied.\nroot@ae4994d93a27:/# exit\nexit\n\n\n❯ docker run -t -i --privileged ubuntu bash\nroot@6ad992ced205:/# mount -t tmpfs none /mnt\nroot@6ad992ced205:/# df -h | egrep \"Filesystem|tmpfs\"\nFilesystem      Size  Used Avail Use% Mounted on\ntmpfs            64M     0   64M   0% /dev\n```\n\n\n### Set working directory\n\n[set-working-directory--w](https://docs.docker.com/engine/reference/commandline/run/#set-working-directory--w)\n\n```bash\n❯ docker  run -w /path/to/dir/ -i -t  ubuntu pwd   \n/path/to/dir\n```\n\n\n### Mount Volumes\n\n[mount-volume](https://docs.docker.com/engine/reference/commandline/run/#mount-volume--v---read-only)\n\n```bash\n## Terminal session 1\n❯ ls\nReadMe.md\n\n# Note that the container also see the file ReadMe.md as we have mounted the same using pwd\n❯ docker  run  -v `pwd`:`pwd` -w `pwd` -i -t  ubuntu ls\nReadMe.md\n\n## Terminal session 2\n# Let's create another directory and see\n❯ mkdir -p /tmp/test\n❯ cd /tmp/test\n❯ touch test.txt\n\n\n# Terminal session 1\n❯ docker run --rm -v /tmp/test:/foo -w /foo -i -t ubuntu bash\n# Let's see if the container can see the file\nroot@0e19af311731:/foo# ls\ntest.txt\nroot@0e19af311731:/foo# exit\nexit\n\n## The same can also be achieved using mount flag\n❯ docker run -t -i -w /foo --mount type=bind,src=/tmp/test,dst=/foo busybox sh\n/foo # ls\ntest.txt\n/foo # touch newfile.txt\n/foo # exit\n❯ ls /tmp/test        \nnewfile.txt test.txt\n```"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_008_docker_run__hostsfile_ulimit_mem_limit/ReadMe.md",
    "content": "# Hosts file, ulimit, memory limit\n\n## Hosts file\n\n[add-entries-to-container-hosts-file---add-host](https://docs.docker.com/engine/reference/commandline/run/#add-entries-to-container-hosts-file---add-host)\n\n```bash\n## get IP from ping google.com \n❯ docker run --add-host=myhost:142.250.181.78 --rm -it alpine\n/ # ping myhost\nPING myhost (142.250.181.78): 56 data bytes\n64 bytes from 142.250.181.78: seq=0 ttl=37 time=19.929 ms\n```\n\n## ulimit\n\n[set-ulimits-in-container---ulimit](https://docs.docker.com/engine/reference/commandline/run/#set-ulimits-in-container---ulimit)\n\n```bash\n❯ docker run --rm debian sh -c \"ulimit -n\" \n1048576\n\n❯ docker run --ulimit nofile=1024:1024 --rm debian sh -c \"ulimit -n\"\n1024\n```\n\n## Memory limit\n\n[specify-hard-limits-on-memory-available-to-containers--m---memory](https://docs.docker.com/engine/reference/commandline/run/#specify-hard-limits-on-memory-available-to-containers--m---memory)\n\n```bash\n## Terminal session 1\n❯ docker run --rm -it  ubuntu             \n\n## Terminal session 2\n❯ docker stats\n\n## Terminal session 1\n❯ docker run --rm -it --memory=\"2g\" ubuntu\n\n## Terminal session 2\n❯ docker stats\n```"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_008_docker_run__metadata_and_network_and_attach_to_stdout/ReadMe.md",
    "content": "## Metadata, Network and Attach to stdout/stdin/stderr\n\n### Set metadata on container\n\n[set-metadata-on-container--l---label---label-file](https://docs.docker.com/engine/reference/commandline/run/#set-metadata-on-container--l---label---label-file)\n\n```bash\n# Terminal session 1\n❯ docker run --rm -l my-label --label com.example.foo=bar -it  ubuntu bash\nroot@877169a9c393:/# \n\n# Terminal session 2\n❯ docker ps -a                                        \nCONTAINER ID   IMAGE     COMMAND   CREATED          STATUS          PORTS     NAMES\n877169a9c393   ubuntu    \"bash\"    27 seconds ago   Up 27 seconds             lucid_heyrovsky\n\n❯ docker inspect lucid_heyrovsky | egrep \"my-label|com\"              \n                \"com.example.foo\": \"bar\",\n                \"my-label\": \"\"\n                \n# Terminal session 1\nroot@877169a9c393:/# exit\nexit\n❯ \n```\n\n### Connect to network\n\nLet's create a nework. Connect two containers `a1` and `a2` to the same network.\nThen we should be able to ping `a2` from `a1`\n\n[connect-a-container-to-a-network---network](https://docs.docker.com/engine/reference/commandline/run/#connect-a-container-to-a-network---network)\n\n```bash\n# Terminal session 1\n# Create a network\n❯ docker network create mynet\n\n❯ docker network ls\nNETWORK ID     NAME      DRIVER    SCOPE\nd94bd0d8c825   bridge    bridge    local\n4173677fe745   host      host      local\n92def2900117   mynet     bridge    local\n2328a0a37fde   none      null      local\n\n❯ docker run --rm --name=a1 -it --network=mynet busybox \n\n\n# Terminal session 2\n❯ docker run --rm --name=a2 -it --network=mynet busybox\n\n## Note they are able to ping each other with just container names\n/ # ping a1\nPING a1 (172.18.0.2): 56 data bytes\n64 bytes from 172.18.0.2: seq=0 ttl=64 time=0.296 ms\n64 bytes from 172.18.0.2: seq=1 ttl=64 time=0.371 ms\n.\n/ # exit\n❯ \n```\n\n## Attach to stdout\n\n[attach-to-stdinstdoutstderr--a](https://docs.docker.com/engine/reference/commandline/run/#attach-to-stdinstdoutstderr--a)\n\nLet's do an example of attaching to container's stdout\n\n\n```bash\n# The following attaches stdout to your container.\n# So the output generated by the container will be displayed on your terminal\n❯ docker  run -a stdout --rm --name ubuntu  ubuntu ls var    \nbackups\ncache\nlib\nlocal\nlock\nlog\nmail\nopt\nrun\nspool\ntmp\n```"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_009_docker_attach/ReadMe.md",
    "content": "# docker attach\n\n[https://docs.docker.com/engine/reference/commandline/attach/](https://docs.docker.com/engine/reference/commandline/attach/)\n\nOnce you are attached to a container using docker attach\n- To stop a container, use CTRL-c. This key sequence sends SIGKILL to the container.\n- If the container was run with -i and -t, you can detach from a container and leave it running using the CTRL-p CTRL-q key sequence.\n## Attach to and detach from a running container\n\n```bash\n❯ docker run -d --name topdemo ubuntu:22.04 /usr/bin/top -b\n\n❯ docker attach topdemo\n\n# pressing CTRL-c terminates the container\n\n❯ docker ps -a\n```\n\n- Repeating the example above, but this time with the -i and -t options set;\n\n```bash\n❯ docker run -dit --name topdemo2 ubuntu:22.04 /usr/bin/top -b\n\n❯ docker attach topdemo2\n# pressing the CTRL-p CTRL-q the attach command is detached from the container\n# and the container is still running\n\n❯ docker ps -a \n```\n\n\n## Get the exit code of the container’s command\n\n- You can see the exit code returned by the bash process is returned by the docker attach command to its caller too\n\n```bash\n❯ docker run --name test -dit alpine\n❯ docker attach test\n/ # exit 13\n❯ echo $?\n13\n❯ docker ps -a --filter name=test\nCONTAINER ID   IMAGE     COMMAND     CREATED          STATUS                       PORTS     NAMES\n7828441ca97a   alpine    \"/bin/sh\"   48 seconds ago   Exited (13) 31 seconds ago             test\n\n```\n\n- In the given example, a Docker container is started with the alpine image in detached mode using the docker run command. Then, the docker attach command is used to attach to the running container.\n- Inside the container, the exit 13 command is executed, which will cause the bash process to exit with a status code of 13. The docker attach command will then return the same exit code to its caller, which in this case is the shell where the command was executed.\n- This means that the exit code returned by the docker attach command will be the same as the exit code returned by the bash process running inside the container. In other words, if the container's main process exits with a non-zero status code, the docker attach command will also return a non-zero status code to indicate that the command failed. This behavior allows you to check the exit status of a command running inside a container, which can be useful for scripting or automation purposes.\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_010_docker_build/Dockerfile",
    "content": "FROM nginx:latest\nCOPY index.html /usr/share/nginx/html/\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_010_docker_build/ReadMe.md",
    "content": "# docker build\n\n[docs.docker.com/engine/reference/commandline/build](https://docs.docker.com/engine/reference/commandline/build/)\n\n**High Level Objectives**\n- run nginx docker on port 8080\n- create a custom dockerfile with some changes\n- build an image with specific tag\n- run container that uses new image\n- understand the differences\n\n**Skills**\n- docker\n- docker build\n- tag\n- docker images\n\n**Version Stack**\n\n| Stack  | Version  |\n|--------|----------|\n| docker | 20.10.14 |\n\n## run nginx container\n\n```bash\n❯ docker run -it --rm -d -p 8080:80 --name nginx nginx\na6d8a4f9987c77a27c4f7864b82d86a1a1c0a899bf79bd3b70ef893ae74cf92d\n\n❯ docker ps -a                                        \nCONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                  NAMES\na6d8a4f9987c   nginx     \"/docker-entrypoint.…\"   4 seconds ago   Up 4 seconds   0.0.0.0:8080->80/tcp   nginx\n\n❯ curl localhost:8080                      \n<!DOCTYPE html>\n<html>\n<head>\n<title>Welcome to nginx!</title>\n<style>\nhtml { color-scheme: light dark; }\nbody { width: 35em; margin: 0 auto;\nfont-family: Tahoma, Verdana, Arial, sans-serif; }\n</style>\n</head>\n<body>\n<h1>Welcome to nginx!</h1>\n<p>If you see this page, the nginx web server is successfully installed and\nworking. Further configuration is required.</p>\n\n<p>For online documentation and support please refer to\n<a href=\"http://nginx.org/\">nginx.org</a>.<br/>\nCommercial support is available at\n<a href=\"http://nginx.com/\">nginx.com</a>.</p>\n\n<p><em>Thank you for using nginx.</em></p>\n</body>\n</html>\n\n\n❯ docker exec -it nginx bash\nroot@41e0b0f9b11b:/# ls /usr/share/nginx/html/\n50x.html  index.html\nroot@41e0b0f9b11b:/# cat /usr/share/nginx/html/index.html \n<!DOCTYPE html>\n<html>\n<head>\n<title>Welcome to nginx!</title>\n<style>\nhtml { color-scheme: light dark; }\nbody { width: 35em; margin: 0 auto;\nfont-family: Tahoma, Verdana, Arial, sans-serif; }\n</style>\n</head>\n<body>\n<h1>Welcome to nginx!</h1>\n<p>If you see this page, the nginx web server is successfully installed and\nworking. Further configuration is required.</p>\n\n<p>For online documentation and support please refer to\n<a href=\"http://nginx.org/\">nginx.org</a>.<br/>\nCommercial support is available at\n<a href=\"http://nginx.com/\">nginx.com</a>.</p>\n\n<p><em>Thank you for using nginx.</em></p>\n</body>\n</html>\n```\n\n## Create Dockerfile and index.html\n\n## Build\n\n```bash\n❯ docker build -f Dockerfile .\n\n\n```\n\n## Check images\n\n\n```bash\n❯ docker images | head -n 2   \nREPOSITORY   TAG       IMAGE ID       CREATED          SIZE\n<none>       <none>    9a69d38ae721   32 seconds ago   135MB\n\n\n```\n\n## Tag \n\n```bash\n❯ docker build -t my-docker-image -f Dockerfile .\n\n❯ docker images | head -n 2                      \nREPOSITORY        TAG       IMAGE ID       CREATED              SIZE\nmy-docker-image   latest    9a69d38ae721   About a minute ago   135MB\n```\n\n## Run image with new container\n\n```bash\n❯ docker ps -a | grep -v \"IMAGE\" |  awk '{ print $NF}' | xargs docker stop\nnginx\n\n❯ docker run -it --rm -d -p 8080:80 --name nginx my-docker-image:latest   \n1535f427e222e04b71d91c7b4ccb740ec2d1fb4624828bb4f145e303fc1815c3\n\n\n❯ curl localhost:8080\n<html>\n<head>\n    <title>Hello, Docker!</title>\n</head>\n<body>\n<h1>Hello, Docker!</h1>\n<p>Welcome to my Docker container!</p>\n</body>\n</html>\n\n\n\n❯ docker exec -it nginx bash                                           \nroot@7e144aa1d8ec:/# cat /usr/share/nginx/html/index.html \n<html>\n<head>\n    <title>Hello, Docker!</title>\n</head>\n<body>\n<h1>Hello, Docker!</h1>\n<p>Welcome to my Docker container!</p>\n</body>\n</html>\nroot@7e144aa1d8ec:/# \n\n```"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_010_docker_build/index.html",
    "content": "<html>\n<head>\n    <title>Hello, Docker!</title>\n</head>\n<body>\n<h1>Hello, Docker!</h1>\n<p>Welcome to my Docker container!</p>\n</body>\n</html>\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_011_mongo/ReadMe.md",
    "content": "\n[Referenced link](https://www.code4it.dev/blog/run-mongodb-on-docker)\n\n```bash\n$ docker run -d  --name mongo-on-docker  -p 27888:27017 -e MONGO_INITDB_ROOT_USERNAME=mongoadmin -e MONGO_INITDB_ROOT_PASSWORD=secret mongo\n0f4060b2b64f35642a4988c5dde5eb9461f87de36ac297b10142a2701269ba8f\n```\n\n- While connecting using the client, the following details are required\n```bash\nServer:   localhost\nPort:     27888\nUsername: mongoadmin\nPassword: secret\n``` \n\n- You can use the following to connect to the shell\n\n```bash\n$ mongo --username mongoadmin --password secret --port 27888 --host  127.0.0.1\nMongoDB shell version v4.4.3\nconnecting to: mongodb://127.0.0.1:27888/?compressors=disabled&gssapiServiceName=mongodb\nImplicit session: session { \"id\" : UUID(\"7e4758b6-a551-4f20-bece-584fb042996d\") }\nMongoDB server version: 4.4.4\n---\nThe server generated these startup warnings when booting: \n        2021-05-30T07:21:09.404+00:00: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem\n---\n---\n        Enable MongoDB's free cloud-based monitoring service, which will then receive and display\n        metrics about your deployment (disk utilization, CPU, operation statistics, etc).\n\n        The monitoring data will be available on a MongoDB website with a unique URL accessible to you\n        and anyone you share the URL with. MongoDB may use this information to make product\n        improvements and to suggest MongoDB products and deployment options to you.\n\n        To enable free monitoring, run the following command: db.enableFreeMonitoring()\n        To permanently disable this reminder, run the following command: db.disableFreeMonitoring()\n---\n>\n```\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_012_postgres/ReadMe.md",
    "content": "\n- Run the following command\n\n```bash\n$ docker run -d \\\n--name my_postgres \\\n-v /tmp/data:/var/lib/postgresql/data \\\n-p 54320:5432 \\\n-e POSTGRES_PASSWORD=my_password postgres\n7d93d3b28d3447f5bd4ed149a7084a7d46872b6efc7d2fc4720d25381dae9169\n```\n\n- Check the status of the container\n\n```bash\n$ docker ps -a | egrep -v \"k8s\"\nCONTAINER ID   IMAGE                  COMMAND                  CREATED          STATUS          PORTS                                         NAMES\n7d93d3b28d34   postgres               \"docker-entrypoint.s…\"   12 seconds ago   Up 11 seconds   0.0.0.0:54320->5432/tcp, :::54320->5432/tcp   my_postgres\n```\n\n\n- Try connecting to the database\n\n```bash\n$ psql -h 127.0.0.1 -p 54320 --username=postgres\nPassword for user postgres: \npsql (13.2, server 13.3 (Debian 13.3-1.pgdg100+1))\nType \"help\" for help.\n\npostgres=# \npostgres=# \\du\n                                   List of roles\n Role name |                         Attributes                         | Member of \n-----------+------------------------------------------------------------+-----------\n postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}\n\n\n```"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_013_prometheus_blackbox_exporter/ReadMe.md",
    "content": "## Black box exporter POC\n\n[Docs](https://prometheus.io/docs/guides/multi-target-exporter/)\n\n- Starting the blackbox exporter\n```bash\n$ docker run -p 9115:9115 prom/blackbox-exporter\nlevel=info ts=2020-07-27T17:37:24.916Z caller=main.go:212 msg=\"Starting blackbox_exporter\" version=\"(version=0.17.0, branch=HEAD, revision=1bc768014cf6815f7e9d694e0292e77dd10f3235)\"\nlevel=info ts=2020-07-27T17:37:24.916Z caller=main.go:213 msg=\"Build context\" (gogo1.14.4,userroot@626fb3899f41,date20200619-11:54:41)=(MISSING)\nlevel=info ts=2020-07-27T17:37:24.918Z caller=main.go:225 msg=\"Loaded config file\"\nlevel=info ts=2020-07-27T17:37:24.919Z caller=main.go:369 msg=\"Listening on address\" address=:9115\n\n```\n\n- Quering the exporter itself\n```bash\n$ curl 'localhost:9115/metrics'\n# HELP blackbox_exporter_build_info A metric with a constant '1' value labeled by version, revision, branch, and goversion from which blackbox_exporter was built.\n.\npromhttp_metric_handler_requests_total{code=\"503\"} 0\n```\n\n- to query prometheus.io in the terminal with curl:\n\n```bash\n$ docker \\\n>   run -p 9115:9115 \\\n>   --mount type=bind,source=\"$(pwd)\"/blackbox.yml,target=/blackbox.yml,readonly \\\n>   prom/blackbox-exporter \\\n>   --config.file=\"/blackbox.yml\"\nlevel=info ts=2020-07-27T18:06:49.187Z caller=main.go:212 msg=\"Starting blackbox_exporter\" version=\"(version=0.17.0, branch=HEAD, revision=1bc768014cf6815f7e9d694e0292e77dd10f3235)\"\nlevel=info ts=2020-07-27T18:06:49.187Z caller=main.go:213 msg=\"Build context\" (gogo1.14.4,userroot@626fb3899f41,date20200619-11:54:41)=(MISSING)\nlevel=info ts=2020-07-27T18:06:49.190Z caller=main.go:225 msg=\"Loaded config file\"\nlevel=info ts=2020-07-27T18:06:49.190Z caller=main.go:369 msg=\"Listening on address\" address=:9115\n```\n\nWith this command, you told docker to:\n\n- run a container with the port 9115 outside the container mapped to the port 9115 inside of the container.\n- mount from your current directory ($(pwd) stands for print working directory) the file blackbox.yml into /blackbox.yml in readonly mode.\n- use the image prom/blackbox-exporter from Docker hub.\n- run the blackbox-exporter with the flag --config.file telling it to use /blackbox.yml as config file.\n\nNow you can try our new IPv4-using module http_2xx in a terminal:\n```bash\n$ curl 'localhost:9115/probe?target=prometheus.io&module=http_2xx'\n# HELP probe_dns_lookup_time_seconds Returns the time taken for probe dns lookup in seconds\n.\nprobe_success 1\n# HELP probe_tls_version_info Contains the TLS version used\n# TYPE probe_tls_version_info gauge\nprobe_tls_version_info{version=\"TLS 1.3\"} 1\n```\n\nRun Prometheus on MacOS\n```bash\n$ docker \\\n>   run -p 9090:9090 \\\n>   --mount type=bind,source=\"$(pwd)\"/prometheus.yml,target=/prometheus.yml,readonly \\\n>   prom/prometheus \\\n>   --config.file=\"/prometheus.yml\"\nlevel=info ts=2020-07-27T18:23:09.768Z caller=main.go:302 msg=\"No time or size retention was set so using the default time retention\" duration=15d\n.\nlevel=info ts=2020-07-27T18:23:09.791Z caller=main.go:646 msg=\"Server is ready to receive web requests.\"\n```\n\nIf everything works fine, you can check the targets at [localhost:9090/targets](localhost:9090/targets)\n\n\n![img](./.images/localhost-targets-prometheus.png)\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_013_prometheus_blackbox_exporter/blackbox.yml",
    "content": "modules:\n  http_2xx:\n    prober: http\n    http:\n      preferred_ip_protocol: \"ip4\"\n  http_post_2xx:\n    prober: http\n    http:\n      method: POST\n  tcp_connect:\n    prober: tcp\n  pop3s_banner:\n    prober: tcp\n    tcp:\n      query_response:\n      - expect: \"^+OK\"\n      tls: true\n      tls_config:\n        insecure_skip_verify: false\n  ssh_banner:\n    prober: tcp\n    tcp:\n      query_response:\n      - expect: \"^SSH-2.0-\"\n  irc_banner:\n    prober: tcp\n    tcp:\n      query_response:\n      - send: \"NICK prober\"\n      - send: \"USER prober prober prober :prober\"\n      - expect: \"PING :([^ ]+)\"\n        send: \"PONG ${1}\"\n      - expect: \"^:[^ ]+ 001\"\n  icmp:\n    prober: icmp\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_013_prometheus_blackbox_exporter/prometheus.yml",
    "content": "global:\n  scrape_interval: 5s\n\nscrape_configs:\n  - job_name: blackbox # To get metrics about the exporter itself\n    metrics_path: /metrics\n    static_configs:\n      - targets:\n          - host.docker.internal:9115   # For Windows and macOS replace with - host.docker.internal:9115\n\n  - job_name: blackbox-http # To get metrics about the exporter’s targets\n    metrics_path: /probe\n    params:\n      module: [http_2xx]\n    static_configs:\n      - targets:\n          - http://prometheus.io    # Target to probe with http\n          - https://prometheus.io   # Target to probe with https\n          - http://example.com:8080 # Target to probe with http on port 8080\n    relabel_configs:\n      - source_labels: [__address__]\n        target_label: __param_target\n      - source_labels: [__param_target]\n        target_label: instance\n      - target_label: __address__\n        replacement: host.docker.internal:9115  # The blackbox exporter’s real hostname:port. For Windows and macOS replace with - host.docker.internal:9115"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_014_elastic_search/ReadMe.md",
    "content": "To start docker-elastic-search on single node\n\n[Docs](https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html)\n\n- Start docker-elastic-search\n\n```bash\n$ $ docker run -p 9200:9200 -p 9300:9300 -e \"discovery.type=single-node\" docker.elastic.co/elasticsearch/elasticsearch:7.8.1\n\n```\n\n- Check the health\n\n```bash\n$ curl -X GET \"localhost:9200/_cat/nodes?v&pretty\"\nip         heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name\n172.17.0.3           49          96   6    0.56    0.38     0.40 dilmrt    *      7fc9a4e5361c\n```\n\n\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_015_elastic_search_bkp_restore/Dockerfile",
    "content": "FROM docker.elastic.co/elasticsearch/elasticsearch:7.7.0\n\n#this is to tell that we are passing these arguments at runtime\nARG ENV_VAR_AWS_ACCESS_KEY_ID\nARG ENV_VAR_AWS_SECRET_ACCESS_KEY\n\nENV AWS_ACCESS_KEY_ID ${ENV_VAR_AWS_ACCESS_KEY_ID}\nENV AWS_SECRET_ACCESS_KEY ${ENV_VAR_AWS_SECRET_ACCESS_KEY}\nENV xpack.security.enabled 'false'\nENV  xpack.monitoring.enabled 'false'\nENV xpack.graph.enabled 'false'\nENV xpack.watcher.enabled 'false'\nENV discovery.type 'single-node'\nENV bootstrap.memory_lock 'true'\nENV indices.memory.index_buffer_size '30%'\n\nRUN /usr/share/elasticsearch/bin/elasticsearch-plugin install --batch repository-s3\nRUN /usr/share/elasticsearch/bin/elasticsearch-keystore create\nRUN echo $AWS_ACCESS_KEY_ID | /usr/share/elasticsearch/bin/elasticsearch-keystore add --stdin s3.client.default.access_key\nRUN echo $AWS_SECRET_ACCESS_KEY | /usr/share/elasticsearch/bin/elasticsearch-keystore add --stdin s3.client.default.secret_key"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_015_elastic_search_bkp_restore/ReadMe.md",
    "content": "\n- Docs Referred\n    - [elasticsearch-backup-snapshot-and-restore-on-aws-s3](https://medium.com/@federicopanini/elasticsearch-backup-snapshot-and-restore-on-aws-s3-f1fc32fbca7f)\n    - [opendistro](https://opendistro.github.io/for-elasticsearch-docs/docs/elasticsearch/snapshot-restore/#amazon-s3)\n\n\n### Build image and deploy\n\n\n- Build new image\n```bash\ndocker build  \\\n--build-arg ENV_VAR_AWS_ACCESS_KEY_ID=<YOUR_ACCESS_KEY_ID> \\\n--build-arg ENV_VAR_AWS_SECRET_ACCESS_KEY=<YOUR_SECRET_ACCESS_KEY> \\\n--tag=codeaprendiz/elasticsearch .\n```\n\n- Check the images present\n```bash\n$ docker images | grep \"codeaprendiz/elasticsearch\"\ncodeaprendiz/elasticsearch                      latest              f06a06d5fd8a        36 seconds ago      796MB\n```\n\n- Running the image\n```bash\ndocker run -p 9200:9200 -p 9600:9600  codeaprendiz/elasticsearch\n```\n\n### Register\n- Register your repo at S3\n\n```bash\n$ curl -X PUT -H \"Content-Type: application/json\" -d @register.json \"http://localhost:9200/_snapshot/my-s3-repository\"\n{\"acknowledged\":true}\n```\n\n\n### Taking Snapshots\n\n- Taking a snapshot\n```bash\n$ curl -X PUT -H \"Content-Type: application/json\" -d @snapshotsetting.json \"http://localhost:9200/_snapshot/my-s3-repository/firstsnap?wait_for_completion=true\"\n{\"snapshot\":{\"snapshot\":\"firstsnap\",\"uuid\":\"VpRaTS-eRr6TLqIOi9Zw2w\",\"version_id\":7060299,\"version\":\"7.6.2\",\"indices\":[],\"include_global_state\":false,\"state\":\"SUCCESS\",\"start_time\":\"2020-05-16T14:13:06.219Z\",\"start_time_in_millis\":1589638386219,\"end_time\":\"2020-05-16T14:13:06.624Z\",\"end_time_in_millis\":1589638386624,\"duration_in_millis\":405,\"failures\":[],\"shards\":{\"total\":0,\"failed\":0,\"successful\":0}}}\n```\n\n- Corresponding docker logs\n\n```bash\n$ docker logs -f friendly_fermi\n{\"type\": \"server\", \"timestamp\": \"2020-05-16T14:13:06,646Z\", \"level\": \"INFO\", \"component\": \"o.e.s.SnapshotsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"676c35dac6af\", \"message\": \"snapshot [my-s3-repository:firstsnap/VpRaTS-eRr6TLqIOi9Zw2w] started\", \"cluster.uuid\": \"Crq-wvoIQmuzm920sZr8MA\", \"node.id\": \"Q_xnc6qyRxy-BbvRLQNwlg\"  }\n{\"type\": \"server\", \"timestamp\": \"2020-05-16T14:13:08,852Z\", \"level\": \"INFO\", \"component\": \"o.e.s.SnapshotsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"676c35dac6af\", \"message\": \"snapshot [my-s3-repository:firstsnap/VpRaTS-eRr6TLqIOi9Zw2w] completed with state [SUCCESS]\", \"cluster.uuid\": \"Crq-wvoIQmuzm920sZr8MA\", \"node.id\": \"Q_xnc6qyRxy-BbvRLQNwlg\"  }\n```\n\n\n- Request your snapshot \n```bash\n$ curl -X GET  \"http://localhost:9200/_snapshot/my-s3-repository/firstsnap\"\n{\"snapshots\":[{\"snapshot\":\"firstsnap\",\"uuid\":\"VpRaTS-eRr6TLqIOi9Zw2w\",\"version_id\":7060299,\"version\":\"7.6.2\",\"indices\":[],\"include_global_state\":false,\"state\":\"SUCCESS\",\"start_time\":\"2020-05-16T14:13:06.219Z\",\"start_time_in_millis\":1589638386219,\"end_time\":\"2020-05-16T14:13:06.624Z\",\"end_time_in_millis\":1589638386624,\"duration_in_millis\":405,\"failures\":[],\"shards\":{\"total\":0,\"failed\":0,\"successful\":0}}]}\n```\n\n\n- To check the status of snapshot\n```bash\n$ curl -X GET \"http://localhost:9200/_snapshot/_status\"                \n{\"snapshots\":[]}\n```\n\n- To check all the snapshots\n```bash\n$ curl -X GET \"http://localhost:9200/_snapshot/_all\"\n{\"my-s3-repository\":{\"type\":\"s3\",\"settings\":{\"bucket\":\"elk-backup-codeaprendiz\"}}}\n```\n\n- To see all the snapshots in a repository\n```bash\n$ curl -X GET \"http://localhost:9200/_snapshot/my-s3-repository/_all\"\n{\"snapshots\":[{\"snapshot\":\"firstsnap\",\"uuid\":\"VwFvTv3nSKOD5K8J3EBE2A\",\"version_id\":7060299,\"version\":\"7.6.2\",\"indices\":[],\"include_global_state\":false,\"state\":\"SUCCESS\",\"start_time\":\"2020-05-14T14:45:46.358Z\",\"start_time_in_millis\":1589467546358,\"end_time\":\"2020-05-14T14:45:46.561Z\",\"end_time_in_millis\":1589467546561,\"duration_in_millis\":203,\"failures\":[],\"shards\":{\"total\":0,\"failed\":0,\"successful\":0}}]}\n```\n\n\n### Restore your snapshot\n\n- To restore a snapshot\n```bash\n$ curl -X POST -H \"Content-Type: application/json\" -d @restoresnapshot.json \"http://localhost:9200/_snapshot/my-s3-repository/firstsnap/_restore\"\n{\"snapshot\":{\"snapshot\":\"firstsnap\",\"indices\":[],\"shards\":{\"total\":0,\"failed\":0,\"successful\":0}}}\n```\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_015_elastic_search_bkp_restore/register.json",
    "content": "{\n  \"type\": \"s3\",\n  \"settings\": {\n    \"bucket\": \"elk-backup-codeaprendiz\"\n  }\n}\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_015_elastic_search_bkp_restore/restoresnapshot.json",
    "content": "{\n  \"indices\": \"kibana*,my-index*\",\n  \"ignore_unavailable\": true,\n  \"include_global_state\": false,\n  \"include_aliases\": false,\n  \"partial\": false,\n  \"rename_pattern\": \"kibana(.+)\",\n  \"rename_replacement\": \"restored-kibana$1\",\n  \"index_settings\": {\n    \"index.blocks.read_only\": false\n  },\n  \"ignore_index_settings\": [\n    \"index.refresh_interval\"\n  ]\n}\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_015_elastic_search_bkp_restore/snapshotsetting.json",
    "content": "{\n  \"indices\": \"kibana*,my-index*,-my-index-2016\",\n  \"ignore_unavailable\": true,\n  \"include_global_state\": false,\n  \"partial\": false\n}\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_016_elastic_search_backup_restore_sample_data/Dockerfile",
    "content": "FROM docker.elastic.co/elasticsearch/elasticsearch:7.7.0\n\n#this is to tell that we are passing these arguments at runtime\nARG ENV_VAR_AWS_ACCESS_KEY_ID\nARG ENV_VAR_AWS_SECRET_ACCESS_KEY\n\nENV AWS_ACCESS_KEY_ID ${ENV_VAR_AWS_ACCESS_KEY_ID}\nENV AWS_SECRET_ACCESS_KEY ${ENV_VAR_AWS_SECRET_ACCESS_KEY}\nENV xpack.security.enabled 'false'\nENV  xpack.monitoring.enabled 'false'\nENV xpack.graph.enabled 'false'\nENV xpack.watcher.enabled 'false'\nENV discovery.type 'single-node'\nENV bootstrap.memory_lock 'true'\nENV indices.memory.index_buffer_size '30%'\n\nRUN /usr/share/elasticsearch/bin/elasticsearch-plugin install --batch repository-s3\nRUN /usr/share/elasticsearch/bin/elasticsearch-keystore create\nRUN echo $AWS_ACCESS_KEY_ID | /usr/share/elasticsearch/bin/elasticsearch-keystore add --stdin s3.client.default.access_key\nRUN echo $AWS_SECRET_ACCESS_KEY | /usr/share/elasticsearch/bin/elasticsearch-keystore add --stdin s3.client.default.secret_key\n\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_016_elastic_search_backup_restore_sample_data/ReadMe.md",
    "content": "\n- Docs Referred\n    - [elasticsearch-backup-snapshot-and-restore-on-aws-s3](https://medium.com/@federicopanini/elasticsearch-backup-snapshot-and-restore-on-aws-s3-f1fc32fbca7f)\n    - [opendistro](https://opendistro.github.io/for-elasticsearch-docs/docs/elasticsearch/snapshot-restore/#amazon-s3)\n    - [elasticsearch](https://www.elastic.co/guide/en/kibana/7.7/tutorial-build-dashboard.html#load-dataset)\n\n### Build image and deploy\n\n- Build new image\n```bash\ndocker build  \\\n--build-arg ENV_VAR_AWS_ACCESS_KEY_ID=<YOUR_ACCESS_KEY_ID> \\\n--build-arg ENV_VAR_AWS_SECRET_ACCESS_KEY=<YOUR_SECRET_ACCESS_KEY> \\\n--tag=codeaprendiz/elasticsearch .\n```\n\n- Running the image\n```bash\ndocker run -p 9200:9200 -p 9600:9600  codeaprendiz/elasticsearch\n```\n\n### Register\n- Register your repo at S3\n\n```bash\n$ curl -X PUT -H \"Content-Type: application/json\" -d @register.json \"http://localhost:9200/_snapshot/my-s3-repository\"\n{\"acknowledged\":true}\n```\n\n\n### Download data\n```bash\ncurl -O https://download.elastic.co/demos/kibana/gettingstarted/8.x/shakespeare.json\ncurl -O https://download.elastic.co/demos/kibana/gettingstarted/8.x/accounts.zip\ncurl -O https://download.elastic.co/demos/kibana/gettingstarted/8.x/logs.jsonl.gz\n```\n\n\n### Set Up Mapping\n\n\n- Set up mapping shakespeare\n```bash\ncurl -X PUT \"localhost:9200/shakespeare?pretty\" -H 'Content-Type: application/json' -d'\n{\n  \"mappings\": {\n    \"properties\": {\n    \"speaker\": {\"type\": \"keyword\"},\n    \"play_name\": {\"type\": \"keyword\"},\n    \"line_id\": {\"type\": \"integer\"},\n    \"speech_number\": {\"type\": \"integer\"}\n    }\n  }\n}\n'\n\n```\n\n\n\n\n- set up mapping logs index1\n```\ncurl -X PUT \"localhost:9200/logstash-2015.05.18?pretty\" -H 'Content-Type: application/json' -d'\n{\n  \"mappings\": {\n    \"properties\": {\n      \"geo\": {\n        \"properties\": {\n          \"coordinates\": {\n            \"type\": \"geo_point\"\n          }\n        }\n      }\n    }\n  }\n}\n'\n\n```\n\n- set up mapping logs index2\n\n```bash\ncurl -X PUT \"localhost:9200/logstash-2015.05.19?pretty\" -H 'Content-Type: application/json' -d'\n{\n  \"mappings\": {\n    \"properties\": {\n      \"geo\": {\n        \"properties\": {\n          \"coordinates\": {\n            \"type\": \"geo_point\"\n          }\n        }\n      }\n    }\n  }\n}\n'\n\n```\n\n- set up mapping logs index3\n\n```bash\ncurl -X PUT \"localhost:9200/logstash-2015.05.20?pretty\" -H 'Content-Type: application/json' -d'\n{\n  \"mappings\": {\n    \"properties\": {\n      \"geo\": {\n        \"properties\": {\n          \"coordinates\": {\n            \"type\": \"geo_point\"\n          }\n        }\n      }\n    }\n  }\n}\n'\n```\n\n\n### Load the dataset\n\n- accounts.json\n```bash\n$ ls accounts.json\naccounts.json\n\ncurl -u elastic -H 'Content-Type: application/x-ndjson' -XPOST 'http://localhost:9200/bank/_bulk?pretty' --data-binary @accounts.json\nEnter host password for user 'elastic': changeit\n```\n\n\n- shakespeare.json\n\n```bash\n$ ls shakespeare.json\nshakespeare.json\n\n$ curl -u elastic -H 'Content-Type: application/x-ndjson' -XPOST 'http://localhost:9200/shakespeare/_bulk?pretty' --data-binary @shakespeare.json\nEnter host password for user 'elastic': changeit\n```\n\n\n\n- logs.jsonl\n\n```bash\n$ ls logs.jsonl\nlogs.jsonl\n\n$ curl -u elastic -H 'Content-Type: application/x-ndjson' -XPOST 'http://localhost:9200/_bulk?pretty' --data-binary @logs.jsonl\n\nEnter host password for user 'elastic': changeit\n```\n\n\n- Verify successful loading \n\n```bash\n$ curl -X GET \"localhost:9200/_cat/indices?v&pretty\"\nhealth status index               uuid                   pri rep docs.count docs.deleted store.size pri.store.size\nyellow open   bank                D3IZamRJTSaMiQalyytz9Q   1   1       1000            0    381.8kb        381.8kb\nyellow open   shakespeare         eRGAw6pgRnyScN5kIH6ZzQ   1   1          0            0      5.9mb          5.9mb\nyellow open   logstash-2015.05.20 qjAB6tF1Q2azhnE6e_NoxQ   1   1          0            0      5.7mb          5.7mb\nyellow open   logstash-2015.05.18 sg3cCzaVQyunHmwDpWK7gQ   1   1          0            0      5.5mb          5.5mb\nyellow open   logstash-2015.05.19 BOvYmnU6QB-Wp0ITC0wN1g   1   1          0            0      5.6mb          5.6mb\n\n```\n\n- Check after 15 minutes (CHECK THE STATE HERE. LATER WE WILL RESTORE THE DATA FROM S3 and COMPARE ITS STATE)\n\n```bash\n$ curl -X GET \"localhost:9200/_cat/indices?v&pretty\"\nhealth status index               uuid                   pri rep docs.count docs.deleted store.size pri.store.size\nyellow open   bank                D3IZamRJTSaMiQalyytz9Q   1   1       1000            0    381.9kb        381.9kb\nyellow open   shakespeare         eRGAw6pgRnyScN5kIH6ZzQ   1   1     111396            0     18.2mb         18.2mb\nyellow open   logstash-2015.05.20 qjAB6tF1Q2azhnE6e_NoxQ   1   1       4750            0       14mb           14mb\nyellow open   logstash-2015.05.18 sg3cCzaVQyunHmwDpWK7gQ   1   1       4631            0     13.7mb         13.7mb\nyellow open   logstash-2015.05.19 BOvYmnU6QB-Wp0ITC0wN1g   1   1       4624            0     13.8mb         13.8mb\n```\n\n### Index Mapping before restore\n\n```bash\n$ curl -X GET \"http://localhost:9200/bank/_mapping\"\n{\"bank\":{\"mappings\":{\"properties\":{\"account_number\":{\"type\":\"long\"},\"address\":{\"type\":\"text\",\"fields\":{\"keyword\":{\"type\":\"keyword\",\"ignore_above\":256}}},\"age\":{\"type\":\"long\"},\"balance\":{\"type\":\"long\"},\"city\":{\"type\":\"text\",\"fields\":{\"keyword\":{\"type\":\"keyword\",\"ignore_above\":256}}},\"email\":{\"type\":\"text\",\"fields\":{\"keyword\":{\"type\":\"keyword\",\"ignore_above\":256}}},\"employer\":{\"type\":\"text\",\"fields\":{\"keyword\":{\"type\":\"keyword\",\"ignore_above\":256}}},\"firstname\":{\"type\":\"text\",\"fields\":{\"keyword\":{\"type\":\"keyword\",\"ignore_above\":256}}},\"gender\":{\"type\":\"text\",\"fields\":{\"keyword\":{\"type\":\"keyword\",\"ignore_above\":256}}},\"lastname\":{\"type\":\"text\",\"fields\":{\"keyword\":{\"type\":\"keyword\",\"ignore_above\":256}}},\"state\":{\"type\":\"text\",\"fields\":{\"keyword\":{\"type\":\"keyword\",\"ignore_above\":256}}}}}}}\n```\n\n```bash\n$ curl -X GET \"http://localhost:9200/shakespeare/_mapping\"\n{\"shakespeare\":{\"mappings\":{\"properties\":{\"line_id\":{\"type\":\"integer\"},\"line_number\":{\"type\":\"text\",\"fields\":{\"keyword\":{\"type\":\"keyword\",\"ignore_above\":256}}},\"play_name\":{\"type\":\"keyword\"},\"speaker\":{\"type\":\"keyword\"},\"speech_number\":{\"type\":\"integer\"},\"text_entry\":{\"type\":\"text\",\"fields\":{\"keyword\":{\"type\":\"keyword\",\"ignore_above\":256}}},\"type\":{\"type\":\"text\",\"fields\":{\"keyword\":{\"type\":\"keyword\",\"ignore_above\":256}}}}}}}\n```\n\n\n### Taking Snapshots\n\n- Taking a snapshot (this may take some time. be patient!)\n```bash\ncurl -X PUT -H \"Content-Type: application/json\" -d @snapshotsetting.json \"http://localhost:9200/_snapshot/my-s3-repository/finalsnap?wait_for_completion=true\"\n{\"snapshot\":{\"snapshot\":\"finalsnap\",\"uuid\":\"rWvtq0cBQIqFoUDc8pYFNA\",\"version_id\":7070099,\"version\":\"7.7.0\",\"indices\":[\"logstash-2015.05.20\",\"logstash-2015.05.19\",\"shakespeare\",\"logstash-2015.05.18\",\"bank\"],\"include_global_state\":false,\"state\":\"SUCCESS\",\"start_time\":\"2020-05-17T20:16:14.563Z\",\"start_time_in_millis\":1589746574563,\"end_time\":\"2020-05-17T20:17:38.094Z\",\"end_time_in_millis\":1589746658094,\"duration_in_millis\":83531,\"failures\":[],\"shards\":{\"total\":5,\"failed\":0,\"successful\":5}}}\n```\n\n\n- To check the status of snapshot\n```bash\n$ curl -X GET \"http://localhost:9200/_snapshot/_status\"\n{\"snapshots\":[{\"snapshot\":\"finalsnap\",\"repository\":\"my-s3-repository\",\"uuid\":\"rWvtq0cBQIqFoUDc8pYFNA\",\"state\":\"STARTED\",\"include_global_state\":false,\"shards_stats\":{\"initializing\":0,\"started\":5,\"finalizing\":0,\"done\":0,\"failed\":0,\"total\":5},\"stats\":{\"incremental\":{\"file_count\":20,\"size_in_bytes\":63273242},\"processed\":{\"file_count\":4,\"size_in_bytes\":1704},\"total\":{\"file_count\":20,\"size_in_bytes\":63273242},\"start_time_in_millis\":1589746574563,\"time_in_millis\":41848},\"indices\":{\"bank\":{\"shards_stats\":{\"initializing\":0,\"started\":1,\"finalizing\":0,\"done\":0,\"failed\":0,\"total\":1},\"stats\":{\"incremental\":{\"file_count\":4,\"size_in_bytes\":391085},\"processed\":{\"file_count\":0,\"size_in_bytes\":0},\"total\":{\"file_count\":4,\"size_in_bytes\":391085},\"start_time_in_millis\":1589746576366,\"time_in_millis\":0},\"shards\":{\"0\":{\"stage\":\"STARTED\",\"stats\":{\"incremental\":{\"file_count\":4,\"size_in_bytes\":391085},\"processed\":{\"file_count\":0,\"size_in_bytes\":0},\"total\":{\"file_count\":4,\"size_in_bytes\":391085},\"start_time_in_millis\":1589746576366,\"time_in_millis\":0},\"node\":\"vp977yjVTHW5915UCPRBYA\"}}},\"shakespeare\":{\"shards_stats\":{\"initializing\":0,\"started\":1,\"finalizing\":0,\"done\":0,\"failed\":0,\"total\":1},\"stats\":{\"incremental\":{\"file_count\":4,\"size_in_bytes\":19179417},\"processed\":{\"file_count\":1,\"size_in_bytes\":426},\"total\":{\"file_count\":4,\"size_in_bytes\":19179417},\"start_time_in_millis\":1589746576366,\"time_in_millis\":0},\"shards\":{\"0\":{\"stage\":\"STARTED\",\"stats\":{\"incremental\":{\"file_count\":4,\"size_in_bytes\":19179417},\"processed\":{\"file_count\":1,\"size_in_bytes\":426},\"total\":{\"file_count\":4,\"size_in_bytes\":19179417},\"start_time_in_millis\":1589746576366,\"time_in_millis\":0},\"node\":\"vp977yjVTHW5915UCPRBYA\"}}},\"logstash-2015.05.20\":{\"shards_stats\":{\"initializing\":0,\"started\":1,\"finalizing\":0,\"done\":0,\"failed\":0,\"total\":1},\"stats\":{\"incremental\":{\"file_count\":4,\"size_in_bytes\":14772605},\"processed\":{\"file_count\":1,\"size_in_bytes\":426},\"total\":{\"file_count\":4,\"size_in_bytes\":14772605},\"start_time_in_millis\":1589746576366,\"time_in_millis\":0},\"shards\":{\"0\":{\"stage\":\"STARTED\",\"stats\":{\"incremental\":{\"file_count\":4,\"size_in_bytes\":14772605},\"processed\":{\"file_count\":1,\"size_in_bytes\":426},\"total\":{\"file_count\":4,\"size_in_bytes\":14772605},\"start_time_in_millis\":1589746576366,\"time_in_millis\":0},\"node\":\"vp977yjVTHW5915UCPRBYA\"}}},\"logstash-2015.05.18\":{\"shards_stats\":{\"initializing\":0,\"started\":1,\"finalizing\":0,\"done\":0,\"failed\":0,\"total\":1},\"stats\":{\"incremental\":{\"file_count\":4,\"size_in_bytes\":14394696},\"processed\":{\"file_count\":1,\"size_in_bytes\":426},\"total\":{\"file_count\":4,\"size_in_bytes\":14394696},\"start_time_in_millis\":1589746576366,\"time_in_millis\":0},\"shards\":{\"0\":{\"stage\":\"STARTED\",\"stats\":{\"incremental\":{\"file_count\":4,\"size_in_bytes\":14394696},\"processed\":{\"file_count\":1,\"size_in_bytes\":426},\"total\":{\"file_count\":4,\"size_in_bytes\":14394696},\"start_time_in_millis\":1589746576366,\"time_in_millis\":0},\"node\":\"vp977yjVTHW5915UCPRBYA\"}}},\"logstash-2015.05.19\":{\"shards_stats\":{\"initializing\":0,\"started\":1,\"finalizing\":0,\"done\":0,\"failed\":0,\"total\":1},\"stats\":{\"incremental\":{\"file_count\":4,\"size_in_bytes\":14535439},\"processed\":{\"file_count\":1,\"size_in_bytes\":426},\"total\":{\"file_count\":4,\"size_in_bytes\":14535439},\"start_time_in_millis\":1589746576366,\"time_in_millis\":0},\"shards\":{\"0\":{\"stage\":\"STARTED\",\"stats\":{\"incremental\":{\"file_count\":4,\"size_in_bytes\":14535439},\"processed\":{\"file_count\":1,\"size_in_bytes\":426},\"total\":{\"file_count\":4,\"size_in_bytes\":14535439},\"start_time_in_millis\":1589746576366,\"time_in_millis\":0},\"node\":\"vp977yjVTHW5915UCPRBYA\"}}}}}]}\n\n$ curl -X GET \"http://localhost:9200/_snapshot/_status\"\n{\"snapshots\":[]}\n```\n\n\n\n- Request your snapshot \n```bash\n$ curl -X GET  \"http://localhost:9200/_snapshot/my-s3-repository/finalsnap\"\ncurl -X GET  \"http://localhost:9200/_snapshot/my-s3-repository/finalsnap\"\n{\"snapshots\":[{\"snapshot\":\"finalsnap\",\"uuid\":\"rWvtq0cBQIqFoUDc8pYFNA\",\"version_id\":7070099,\"version\":\"7.7.0\",\"indices\":[\"logstash-2015.05.20\",\"logstash-2015.05.19\",\"shakespeare\",\"logstash-2015.05.18\",\"bank\"],\"include_global_state\":false,\"state\":\"SUCCESS\",\"start_time\":\"2020-05-17T20:16:14.563Z\",\"start_time_in_millis\":1589746574563,\"end_time\":\"2020-05-17T20:17:38.094Z\",\"end_time_in_millis\":1589746658094,\"duration_in_millis\":83531,\"failures\":[],\"shards\":{\"total\":5,\"failed\":0,\"successful\":5}}]}\n```\n\n- To check all the snapshots\n```bash\n$ curl -X GET \"http://localhost:9200/_snapshot/_all\"   \n{\"my-s3-repository\":{\"type\":\"s3\",\"settings\":{\"bucket\":\"elk-backup-codeaprendiz\"}}}                                                                                                                                                                  \n```\n\n- To see all the snapshots in a repository\n```bash\n$ curl -X GET \"http://localhost:9200/_snapshot/my-s3-repository/_all\"\n{\"snapshots\":[{\"snapshot\":\"firstsnap\",\"uuid\":\"VpRaTS-eRr6TLqIOi9Zw2w\",\"version_id\":7060299,\"version\":\"7.6.2\",\"indices\":[],\"include_global_state\":false,\"state\":\"SUCCESS\",\"start_time\":\"2020-05-16T14:13:06.219Z\",\"start_time_in_millis\":1589638386219,\"end_time\":\"2020-05-16T14:13:06.624Z\",\"end_time_in_millis\":1589638386624,\"duration_in_millis\":405,\"failures\":[],\"shards\":{\"total\":0,\"failed\":0,\"successful\":0}},{\"snapshot\":\"finalsnap\",\"uuid\":\"rWvtq0cBQIqFoUDc8pYFNA\",\"version_id\":7070099,\"version\":\"7.7.0\",\"indices\":[\"logstash-2015.05.20\",\"logstash-2015.05.19\",\"shakespeare\",\"logstash-2015.05.18\",\"bank\"],\"include_global_state\":false,\"state\":\"SUCCESS\",\"start_time\":\"2020-05-17T20:16:14.563Z\",\"start_time_in_millis\":1589746574563,\"end_time\":\"2020-05-17T20:17:38.094Z\",\"end_time_in_millis\":1589746658094,\"duration_in_millis\":83531,\"failures\":[],\"shards\":{\"total\":5,\"failed\":0,\"successful\":5}}]}\n```\n\n\n### Restore your snapshot after creating a new docker container\n\n- Kill the previous(ctr+D) docker container and start a new container. You will need to register you S3 bucket again. See the command given at the begining.\n\n- After the new container is started and registered. The state before\n```bash\n$ curl -X GET \"localhost:9200/_cat/indices?v&pretty\"\nhealth status index uuid pri rep docs.count docs.deleted store.size pri.store.size\n```\n\n- To restore a snapshot\n```bash\n$ curl -X POST -H \"Content-Type: application/json\" -d @restoresnapshot.json \"http://localhost:9200/_snapshot/my-s3-repository/finalsnap/_restore\"\n{\"accepted\":true}\n```\n\n- Now check the state after (COMPARE WITH PREVIOUS STATE)\n```bash\n$ curl -X GET \"localhost:9200/_cat/indices?v&pretty\"\nhealth status index               uuid                   pri rep docs.count docs.deleted store.size pri.store.size\nyellow open   bank                smFJpJJ-S9KiGyw8Ysc5Vw   1   1       1000            0    381.9kb        381.9kb\nyellow open   shakespeare         cs8TZUIPStyjL5_92lcPqw   1   1     111396            0     18.2mb         18.2mb\nyellow open   logstash-2015.05.20 lOdp-I-wRt-DTK3GxDHbuw   1   1       4750            0       14mb           14mb\nyellow open   logstash-2015.05.18 i8P-GUM_S_CYMwBh-nO4pQ   1   1       4631            0     13.7mb         13.7mb\nyellow open   logstash-2015.05.19 XStCeqfgRSSxbNEo9Gdy9w   1   1       4624            0     13.8mb         13.8mb\n\n```\n\n### Index Mapping after restore\n\n```bash\n$ curl -X GET \"http://localhost:9200/bank/_mapping\"\n{\"bank\":{\"mappings\":{\"properties\":{\"account_number\":{\"type\":\"long\"},\"address\":{\"type\":\"text\",\"fields\":{\"keyword\":{\"type\":\"keyword\",\"ignore_above\":256}}},\"age\":{\"type\":\"long\"},\"balance\":{\"type\":\"long\"},\"city\":{\"type\":\"text\",\"fields\":{\"keyword\":{\"type\":\"keyword\",\"ignore_above\":256}}},\"email\":{\"type\":\"text\",\"fields\":{\"keyword\":{\"type\":\"keyword\",\"ignore_above\":256}}},\"employer\":{\"type\":\"text\",\"fields\":{\"keyword\":{\"type\":\"keyword\",\"ignore_above\":256}}},\"firstname\":{\"type\":\"text\",\"fields\":{\"keyword\":{\"type\":\"keyword\",\"ignore_above\":256}}},\"gender\":{\"type\":\"text\",\"fields\":{\"keyword\":{\"type\":\"keyword\",\"ignore_above\":256}}},\"lastname\":{\"type\":\"text\",\"fields\":{\"keyword\":{\"type\":\"keyword\",\"ignore_above\":256}}},\"state\":{\"type\":\"text\",\"fields\":{\"keyword\":{\"type\":\"keyword\",\"ignore_above\":256}}}}}}}\n```\n\n```bash\n$ curl -X GET \"http://localhost:9200/shakespeare/_mapping\"\n{\"shakespeare\":{\"mappings\":{\"properties\":{\"line_id\":{\"type\":\"integer\"},\"line_number\":{\"type\":\"text\",\"fields\":{\"keyword\":{\"type\":\"keyword\",\"ignore_above\":256}}},\"play_name\":{\"type\":\"keyword\"},\"speaker\":{\"type\":\"keyword\"},\"speech_number\":{\"type\":\"integer\"},\"text_entry\":{\"type\":\"text\",\"fields\":{\"keyword\":{\"type\":\"keyword\",\"ignore_above\":256}}},\"type\":{\"type\":\"text\",\"fields\":{\"keyword\":{\"type\":\"keyword\",\"ignore_above\":256}}}}}}}\n```\n\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_016_elastic_search_backup_restore_sample_data/createdata.json",
    "content": "{\n  \"mappings\":{\n    \"employees\":{\n      \"properties\":{\n        \"FirstName\":{\n          \"type\":\"text\"\n        },\n        \"LastName\":{\n          \"type\":\"text\"\n        },\n        \"Designation\":{\n          \"type\":\"text\"\n        },\n        \"Salary\":{\n          \"type\":\"integer\"\n        },\n        \"DateOfJoining\":{\n          \"type\":\"date\",\n          \"format\":\"yyyy-MM-dd\"\n        },\n        \"Address\":{\n          \"type\":\"text\"\n        },\n        \"Gender\":{\n          \"type\":\"text\"\n        },\n        \"Age\":{\n          \"type\":\"integer\"\n        },\n        \"MaritalStatus\":{\n          \"type\":\"text\"\n        },\n        \"Interests\":{\n          \"type\":\"text\"\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_016_elastic_search_backup_restore_sample_data/register.json",
    "content": "{\n  \"type\": \"s3\",\n  \"settings\": {\n    \"bucket\": \"elk-backup-codeaprendiz\"\n  }\n}\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_016_elastic_search_backup_restore_sample_data/restoresnapshot.json",
    "content": "{\n  \"indices\": \"bank*,shakespeare*,logstash*\",\n  \"ignore_unavailable\": true,\n  \"include_global_state\": false,\n  \"include_aliases\": false,\n  \"partial\": false,\n  \"rename_pattern\": \"kibana(.+)\",\n  \"rename_replacement\": \"restored-kibana$1\",\n  \"index_settings\": {\n    \"index.blocks.read_only\": false\n  },\n  \"ignore_index_settings\": [\n    \"index.refresh_interval\"\n  ]\n}\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_016_elastic_search_backup_restore_sample_data/snapshotsetting.json",
    "content": "{\n  \"indices\": \"bank*,shakespeare*,logstash*\",\n  \"ignore_unavailable\": true,\n  \"include_global_state\": false,\n  \"partial\": false\n}\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_017_mem_and_cpu_limit_container/ReadMe.md",
    "content": "\n### To set the upper limit on memory to 512 megabytes used by nginx container\n```bash\n$ docker run -m 512m nginx\n\n$ docker ps | egrep -v \"k8s\"     \nCONTAINER ID   IMAGE                  COMMAND                  CREATED              STATUS              PORTS                  NAMES\n6959c8b602ba   nginx                  \"/docker-entrypoint.…\"   About a minute ago   Up About a minute   80/tcp                 intelligent_bartik\n\n$ docker stats intelligent_bartik\nCONTAINER ID   NAME                 CPU %     MEM USAGE / LIMIT   MEM %     NET I/O       BLOCK I/O         PIDS\n6959c8b602ba   intelligent_bartik   0.00%     4.316MiB / 512MiB   0.84%     1.17kB / 0B   7.42MB / 8.19kB   2\n```\n\n### To set the upper limit on the number of CPUs used by nginx container\n\nBy default, access to the computing power of the host machine is unlimited. We can set the CPUs limit using the cpus parameter. For example, let's constrain our container to use at most two CPUs:\n\n\n```bash\n$ docker run --cpus=2 nginx\n```"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_018_mysql/ReadMe.md",
    "content": "\n[Link](https://medium.com/@crmcmullen/how-to-run-mysql-in-a-docker-container-on-macos-with-persistent-local-data-58b89aec496a)\n\n- To stop the mysql process on mac OS\n```bash\n$ sudo launchctl unload -w /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist\n/Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist: Operation now in progress\n```\n\n\n- Create persistent directory\n```bash\n$ mkdir /Users/[your_username]/Develop\n$ mkdir /Users/[your_username]/Develop/mysql_data\n$ mkdir /Users/[your_username]/Develop/mysql_data/8.0\n```\n\n- Create docker network\n```bash\n$ docker network create dev-network\n```\n\n- Starting the docker container on local\n```bash\n$ docker run --restart always --name mysql8.0 --net dev-network -v /Users/ankitsinghrathi/Develop/mysql_data/8.0:/var/lib/mysql -p 3306:3306 -d -e MYSQL_ROOT_PASSWORD=password mysql:8.0\n```\n\n- Connecting to mysql\n\n```bash\n$ mysql -h127.0.0.1 -uroot -ppassword                   \nmysql: [Warning] Using a password on the command line interface can be insecure.\nWelcome to the MySQL monitor.  Commands end with ; or \\g.\nYour MySQL connection id is 10\nServer version: 8.0.23 MySQL Community Server - GPL\n\nCopyright (c) 2000, 2021, Oracle and/or its affiliates.\n\nOracle is a registered trademark of Oracle Corporation and/or its\naffiliates. Other names may be trademarks of their respective\nowners.\n\nType 'help;' or '\\h' for help. Type '\\c' to clear the current input statement.\n\nmysql> \n```\n\n- Connecting to mysql using python\n```bash\n$ pip3 install mysql-connector-python\n```\n\n```python\nimport mysql.connector\nmydb = mysql.connector.connect(\n    host=\"localhost\",\n    user=\"root\",\n    password=\"password\"\n)\nmycursor = mydb.cursor()\nmycursor.execute(\"CREATE DATABASE mydatabase\")\nmycursor.execute(\"show databases\")\nfor x in mycursor:\n    print(x)\n...\n('information_schema',)\n('mydatabase',)\n('mysql',)\n('performance_schema',)\n('sys',)\n```\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_019_nginx_https_domain_test/ReadMe.md",
    "content": "\n\nTo test the certificates are working\n\n- nslookup to domain\n```bash\n$ nslookup server.domain.com\nServer:         127.0.0.53\nAddress:        127.0.0.53#53\n\nNon-authoritative answer:\nName:   server.domain.com\nAddress: 23.12.43.56\n```\n\n- Login to the server  23.12.43.56. Assuming the certificates and key are valid for `*.domain.com`\n\n```bash\n$ ls -ltrh\ntotal 20K\n-rwxrwxrwx 1 server server 3.2K Aug 20 16:10 star_domain.com.key\n-rwxrwxrwx 1 server server 8.5K Aug 20 16:10 star_domain_com.chained.crt\n-rwxrwxrwx 1 server server  335 Aug 20 16:45 nginx.conf\n```\n\n- Contents of nginx.conf\n```bash\n$ cat nginx.conf                \nserver {\n    listen 443 ssl;\n    server_name  prod.domain.com;\n    ssl_certificate /etc/nginx/certs/star_domain_com.chained.crt;\n    ssl_certificate_key /etc/nginx/certs/star_domain.com.key;\n    location / {\n        allow all;\n        root /usr/share/nginx/html;\n    }\n\n    root /usr/share/nginx/html;\n    index index.html;\n}\n```\n\n\n- Start the docker container\n```bash\n$ docker run --rm -p 80:80 -p 443:443  \\\n--name nginx_service \\\n-v $PWD/star_domain.com.key:/etc/nginx/certs/star_domain.com.key \\\n-v $PWD/star_domain_com.chained.crt:/etc/nginx/certs/star_domain_com.chained.crt \\\n-v $PWD/nginx.conf:/etc/nginx/conf.d/default.conf \\\n  nginx:latest\n```\n\n- Visit `https://server.domain.com/` on browser and validate if its being loaded\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_020_docker_commit/ReadMe.md",
    "content": "# docker commit\n\nIt can be useful to commit a container’s file changes or settings into a new image. \nThis allows you to debug a container by running an interactive shell, or to export a working dataset to another server\n\n[docs.docker.com/engine/reference/commandline/commit](https://docs.docker.com/engine/reference/commandline/commit)\n\n**High Level Objectives**\n- start ubuntu container with bash. Make some changes\n- commit the container state to image\n- start new container with our new image, validate our changes\n- add env using --change and repeat validation process\n\n**Skills**\n- docker\n- docker commit\n- commit\n- docker images\n- docker inspect\n- docker commit --change\n\n\n**Version Stack**\n\n| Stack  | Version  |\n|--------|----------|\n| docker | 20.10.14 |\n\n\n# run ubuntu container\n\n```bash\n# Terminal session t1\n❯ docker run -it --rm --name ubuntu ubuntu bash\nroot@4d74a15a73eb:/# cd /home\nroot@4d74a15a73eb:/home# ls\nroot@4d74a15a73eb:/home# echo \"I am new file\" > file.txt\nroot@4d74a15a73eb:/home# ls\nfile.txt\nroot@4d74a15a73eb:/home#\n\n\n## New Terminal session t2\n❯ docker ps -a\nCONTAINER ID   IMAGE     COMMAND   CREATED          STATUS          PORTS     NAMES\n4d74a15a73eb   ubuntu    \"bash\"    45 seconds ago   Up 44 seconds             ubuntu\n\n❯ docker commit 4d74a15a73eb my-ubuntu:v1                             \nsha256:9fec4fd33de4966790bb4b2920abeefc4d33513c8c2bbb3641d6609caab2086f\n\n❯ docker images | head -n 2              \nREPOSITORY        TAG       IMAGE ID       CREATED             SIZE\nmy-ubuntu         v1        9fec4fd33de4   12 seconds ago      69.2MB\n\n\n# terminal session t1\nroot@4d74a15a73eb:/home#\nroot@4d74a15a73eb:/home# exit\nexit\n\n❯ docker ps -a                                 \nCONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES\n\n❯ docker run -it --rm --name ubuntu my-ubuntu:v1 bash\nroot@8d61e1d9a312:/# cd /home\nroot@8d61e1d9a312:/home# ls\nfile.txt\n\n\n\n\n# terminal session t2\n❯ docker ps -a             \nCONTAINER ID   IMAGE          COMMAND   CREATED         STATUS         PORTS     NAMES\n8d61e1d9a312   my-ubuntu:v1   \"bash\"    6 minutes ago   Up 6 minutes             ubuntu\n\n❯ docker inspect -f \"{{ .Config.Env }}\" 8d61e1d9a312\n[PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin]\n\n❯ docker commit --change \"ENV DEBUG=true\" 8d61e1d9a312 my-ubuntu:v2\nsha256:e7eb352de7b38ae12046552925d2ff9ef61d1dc14894a709dd28c499dda50243\n\n❯ docker images | head -n 2                                        \nREPOSITORY        TAG       IMAGE ID       CREATED              SIZE\nmy-ubuntu         v2        e7eb352de7b3   About a minute ago   214MB\n\n\n\n\n# Terminal session t1\nroot@4d74a15a73eb:/home#\nroot@8d61e1d9a312:/home# exit\nexit\n\n❯ docker ps -a                                       \nCONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES\n\n❯ docker run -it --rm --name ubuntu my-ubuntu:v2 bash\nroot@072729702c8b:/# env | grep DEBUG\nDEBUG=true\n\n\n# Terminal session t2\n❯ docker ps -a             \nCONTAINER ID   IMAGE          COMMAND   CREATED         STATUS         PORTS     NAMES\n072729702c8b   my-ubuntu:v2   \"bash\"    2 minutes ago   Up 2 minutes             ubuntu\n\n❯ docker inspect -f \"{{ .Config.Env }}\" 072729702c8b            \n[PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin DEBUG=true]\n```"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_021_kibana/ReadMe.md",
    "content": "To Start Kibana on local and connect it to local docker-elastic-search on local\n\n- For starting elastic search refer to the [task-005-elastic-search](../task-005-elastic-search)\n\n- Check if elastic-search is running on local\n```bash\n$ docker ps | egrep elastic                                 \n7fc9a4e5361c        docker.elastic.co/elasticsearch/elasticsearch:7.8.1   \"/tini -- /usr/local…\"   7 minutes ago       Up 7 minutes        0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp   docker run --link dreamy_borg:elasticsearch -p 5601:5601 docker.elastic.co/kibana/kibana:7.8.1\n```\n\n\n- Start the docker-kibanan on local\n```bash\n$ docker run --link dreamy_borg:elasticsearch -p 5601:5601 docker.elastic.co/kibana/kibana:7.8.1\n```\n\n\n- Kibana will not come up if its unable to connect to elastic search. You will see the following in logs\n```bash\n{\"type\":\"log\",\"@timestamp\":\"2020-07-30T09:37:59Z\",\"tags\":[\"warning\",\"elasticsearch\",\"admin\"],\"pid\":7,\"message\":\"Unable to revive connection: http://elasticsearch:9200/\"}\n``` \n\n- Once the Kibana is up you can visit the dashboard at [http://0.0.0.0:5601/app/kibana](http://0.0.0.0:5601/app/kibana)\n  You can verify the elastic search connection by checking Index Pattern settings page.\n  \n\n![img](./.images/kibana-dashboard.png)"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_022_sample_app/ReadMe.md",
    "content": "- [Sample APP](https://docs.docker.com/get-started/02_our_app/)\n\n\n- Build \n\n```bash\n$ docker build -t getting-started .\n```\n\n- Start the app container\n\n```bash\n$ docker run -dp 3000:3000 getting-started\nec25cae23f5fa1d421c7a750b70d1ba914286eee2e46f464db8fbb8d1f7314ba\n```\n\n- Then visit the app on localhost:3000\n\n![](.images/2022-07-24-11-00-29.png)"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_022_sample_app/app/Dockerfile",
    "content": "# syntax=docker/dockerfile:1\nFROM node:12-alpine\nRUN apk add --no-cache python2 g++ make\nWORKDIR /app\nCOPY . .\nRUN yarn install --production\nCMD [\"node\", \"src/index.js\"]\nEXPOSE 3000"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_022_sample_app/app/package.json",
    "content": "{\n  \"name\": \"101-app\",\n  \"version\": \"1.0.0\",\n  \"main\": \"index.js\",\n  \"license\": \"MIT\",\n  \"scripts\": {\n    \"prettify\": \"prettier -l --write \\\"**/*.js\\\"\",\n    \"test\": \"jest\",\n    \"dev\": \"nodemon src/index.js\"\n  },\n  \"dependencies\": {\n    \"express\": \"^4.17.1\",\n    \"mysql\": \"^2.17.1\",\n    \"sqlite3\": \"^5.0.0\",\n    \"uuid\": \"^3.3.3\",\n    \"wait-port\": \"^0.2.2\"\n  },\n  \"resolutions\": {\n    \"ansi-regex\": \"5.0.1\"\n  },\n  \"prettier\": {\n    \"trailingComma\": \"all\",\n    \"tabWidth\": 4,\n    \"useTabs\": false,\n    \"semi\": true,\n    \"singleQuote\": true\n  },\n  \"devDependencies\": {\n    \"jest\": \"^27.2.5\",\n    \"nodemon\": \"^2.0.13\",\n    \"prettier\": \"^1.18.2\"\n  }\n}\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_022_sample_app/app/spec/persistence/sqlite.spec.js",
    "content": "const db = require('../../src/persistence/sqlite');\nconst fs = require('fs');\nconst location = process.env.SQLITE_DB_LOCATION || '/etc/todos/todo.db';\n\nconst ITEM = {\n    id: '7aef3d7c-d301-4846-8358-2a91ec9d6be3',\n    name: 'Test',\n    completed: false,\n};\n\nbeforeEach(() => {\n    if (fs.existsSync(location)) {\n        fs.unlinkSync(location);\n    }\n});\n\ntest('it initializes correctly', async () => {\n    await db.init();\n});\n\ntest('it can store and retrieve items', async () => {\n    await db.init();\n\n    await db.storeItem(ITEM);\n\n    const items = await db.getItems();\n    expect(items.length).toBe(1);\n    expect(items[0]).toEqual(ITEM);\n});\n\ntest('it can update an existing item', async () => {\n    await db.init();\n\n    const initialItems = await db.getItems();\n    expect(initialItems.length).toBe(0);\n\n    await db.storeItem(ITEM);\n\n    await db.updateItem(\n        ITEM.id,\n        Object.assign({}, ITEM, { completed: !ITEM.completed }),\n    );\n\n    const items = await db.getItems();\n    expect(items.length).toBe(1);\n    expect(items[0].completed).toBe(!ITEM.completed);\n});\n\ntest('it can remove an existing item', async () => {\n    await db.init();\n    await db.storeItem(ITEM);\n\n    await db.removeItem(ITEM.id);\n\n    const items = await db.getItems();\n    expect(items.length).toBe(0);\n});\n\ntest('it can get a single item', async () => {\n    await db.init();\n    await db.storeItem(ITEM);\n\n    const item = await db.getItem(ITEM.id);\n    expect(item).toEqual(ITEM);\n});\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_022_sample_app/app/spec/routes/addItem.spec.js",
    "content": "const db = require('../../src/persistence');\nconst addItem = require('../../src/routes/addItem');\nconst ITEM = { id: 12345 };\nconst uuid = require('uuid/v4');\n\njest.mock('uuid/v4', () => jest.fn());\n\njest.mock('../../src/persistence', () => ({\n    removeItem: jest.fn(),\n    storeItem: jest.fn(),\n    getItem: jest.fn(),\n}));\n\ntest('it stores item correctly', async () => {\n    const id = 'something-not-a-uuid';\n    const name = 'A sample item';\n    const req = { body: { name } };\n    const res = { send: jest.fn() };\n\n    uuid.mockReturnValue(id);\n\n    await addItem(req, res);\n\n    const expectedItem = { id, name, completed: false };\n\n    expect(db.storeItem.mock.calls.length).toBe(1);\n    expect(db.storeItem.mock.calls[0][0]).toEqual(expectedItem);\n    expect(res.send.mock.calls[0].length).toBe(1);\n    expect(res.send.mock.calls[0][0]).toEqual(expectedItem);\n});\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_022_sample_app/app/spec/routes/deleteItem.spec.js",
    "content": "const db = require('../../src/persistence');\nconst deleteItem = require('../../src/routes/deleteItem');\nconst ITEM = { id: 12345 };\n\njest.mock('../../src/persistence', () => ({\n    removeItem: jest.fn(),\n    getItem: jest.fn(),\n}));\n\ntest('it removes item correctly', async () => {\n    const req = { params: { id: 12345 } };\n    const res = { sendStatus: jest.fn() };\n\n    await deleteItem(req, res);\n\n    expect(db.removeItem.mock.calls.length).toBe(1);\n    expect(db.removeItem.mock.calls[0][0]).toBe(req.params.id);\n    expect(res.sendStatus.mock.calls[0].length).toBe(1);\n    expect(res.sendStatus.mock.calls[0][0]).toBe(200);\n});\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_022_sample_app/app/spec/routes/getItems.spec.js",
    "content": "const db = require('../../src/persistence');\nconst getItems = require('../../src/routes/getItems');\nconst ITEMS = [{ id: 12345 }];\n\njest.mock('../../src/persistence', () => ({\n    getItems: jest.fn(),\n}));\n\ntest('it gets items correctly', async () => {\n    const req = {};\n    const res = { send: jest.fn() };\n    db.getItems.mockReturnValue(Promise.resolve(ITEMS));\n\n    await getItems(req, res);\n\n    expect(db.getItems.mock.calls.length).toBe(1);\n    expect(res.send.mock.calls[0].length).toBe(1);\n    expect(res.send.mock.calls[0][0]).toEqual(ITEMS);\n});\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_022_sample_app/app/spec/routes/updateItem.spec.js",
    "content": "const db = require('../../src/persistence');\nconst updateItem = require('../../src/routes/updateItem');\nconst ITEM = { id: 12345 };\n\njest.mock('../../src/persistence', () => ({\n    getItem: jest.fn(),\n    updateItem: jest.fn(),\n}));\n\ntest('it updates items correctly', async () => {\n    const req = {\n        params: { id: 1234 },\n        body: { name: 'New title', completed: false },\n    };\n    const res = { send: jest.fn() };\n\n    db.getItem.mockReturnValue(Promise.resolve(ITEM));\n\n    await updateItem(req, res);\n\n    expect(db.updateItem.mock.calls.length).toBe(1);\n    expect(db.updateItem.mock.calls[0][0]).toBe(req.params.id);\n    expect(db.updateItem.mock.calls[0][1]).toEqual({\n        name: 'New title',\n        completed: false,\n    });\n\n    expect(db.getItem.mock.calls.length).toBe(1);\n    expect(db.getItem.mock.calls[0][0]).toBe(req.params.id);\n\n    expect(res.send.mock.calls[0].length).toBe(1);\n    expect(res.send.mock.calls[0][0]).toEqual(ITEM);\n});\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_022_sample_app/app/src/index.js",
    "content": "const express = require('express');\nconst app = express();\nconst db = require('./persistence');\nconst getItems = require('./routes/getItems');\nconst addItem = require('./routes/addItem');\nconst updateItem = require('./routes/updateItem');\nconst deleteItem = require('./routes/deleteItem');\n\napp.use(express.json());\napp.use(express.static(__dirname + '/static'));\n\napp.get('/items', getItems);\napp.post('/items', addItem);\napp.put('/items/:id', updateItem);\napp.delete('/items/:id', deleteItem);\n\ndb.init().then(() => {\n    app.listen(3000, () => console.log('Listening on port 3000'));\n}).catch((err) => {\n    console.error(err);\n    process.exit(1);\n});\n\nconst gracefulShutdown = () => {\n    db.teardown()\n        .catch(() => {})\n        .then(() => process.exit());\n};\n\nprocess.on('SIGINT', gracefulShutdown);\nprocess.on('SIGTERM', gracefulShutdown);\nprocess.on('SIGUSR2', gracefulShutdown); // Sent by nodemon\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_022_sample_app/app/src/persistence/index.js",
    "content": "if (process.env.MYSQL_HOST) module.exports = require('./mysql');\nelse module.exports = require('./sqlite');\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_022_sample_app/app/src/persistence/mysql.js",
    "content": "const waitPort = require('wait-port');\nconst fs = require('fs');\nconst mysql = require('mysql');\n\nconst {\n    MYSQL_HOST: HOST,\n    MYSQL_HOST_FILE: HOST_FILE,\n    MYSQL_USER: USER,\n    MYSQL_USER_FILE: USER_FILE,\n    MYSQL_PASSWORD: PASSWORD,\n    MYSQL_PASSWORD_FILE: PASSWORD_FILE,\n    MYSQL_DB: DB,\n    MYSQL_DB_FILE: DB_FILE,\n} = process.env;\n\nlet pool;\n\nasync function init() {\n    const host = HOST_FILE ? fs.readFileSync(HOST_FILE) : HOST;\n    const user = USER_FILE ? fs.readFileSync(USER_FILE) : USER;\n    const password = PASSWORD_FILE ? fs.readFileSync(PASSWORD_FILE) : PASSWORD;\n    const database = DB_FILE ? fs.readFileSync(DB_FILE) : DB;\n\n    await waitPort({ host, port : 3306});\n\n    pool = mysql.createPool({\n        connectionLimit: 5,\n        host,\n        user,\n        password,\n        database,\n        charset: 'utf8mb4',\n    });\n\n    return new Promise((acc, rej) => {\n        pool.query(\n            'CREATE TABLE IF NOT EXISTS todo_items (id varchar(36), name varchar(255), completed boolean) DEFAULT CHARSET utf8mb4',\n            err => {\n                if (err) return rej(err);\n\n                console.log(`Connected to mysql db at host ${HOST}`);\n                acc();\n            },\n        );\n    });\n}\n\nasync function teardown() {\n    return new Promise((acc, rej) => {\n        pool.end(err => {\n            if (err) rej(err);\n            else acc();\n        });\n    });\n}\n\nasync function getItems() {\n    return new Promise((acc, rej) => {\n        pool.query('SELECT * FROM todo_items', (err, rows) => {\n            if (err) return rej(err);\n            acc(\n                rows.map(item =>\n                    Object.assign({}, item, {\n                        completed: item.completed === 1,\n                    }),\n                ),\n            );\n        });\n    });\n}\n\nasync function getItem(id) {\n    return new Promise((acc, rej) => {\n        pool.query('SELECT * FROM todo_items WHERE id=?', [id], (err, rows) => {\n            if (err) return rej(err);\n            acc(\n                rows.map(item =>\n                    Object.assign({}, item, {\n                        completed: item.completed === 1,\n                    }),\n                )[0],\n            );\n        });\n    });\n}\n\nasync function storeItem(item) {\n    return new Promise((acc, rej) => {\n        pool.query(\n            'INSERT INTO todo_items (id, name, completed) VALUES (?, ?, ?)',\n            [item.id, item.name, item.completed ? 1 : 0],\n            err => {\n                if (err) return rej(err);\n                acc();\n            },\n        );\n    });\n}\n\nasync function updateItem(id, item) {\n    return new Promise((acc, rej) => {\n        pool.query(\n            'UPDATE todo_items SET name=?, completed=? WHERE id=?',\n            [item.name, item.completed ? 1 : 0, id],\n            err => {\n                if (err) return rej(err);\n                acc();\n            },\n        );\n    });\n}\n\nasync function removeItem(id) {\n    return new Promise((acc, rej) => {\n        pool.query('DELETE FROM todo_items WHERE id = ?', [id], err => {\n            if (err) return rej(err);\n            acc();\n        });\n    });\n}\n\nmodule.exports = {\n    init,\n    teardown,\n    getItems,\n    getItem,\n    storeItem,\n    updateItem,\n    removeItem,\n};\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_022_sample_app/app/src/persistence/sqlite.js",
    "content": "const sqlite3 = require('sqlite3').verbose();\nconst fs = require('fs');\nconst location = process.env.SQLITE_DB_LOCATION || '/etc/todos/todo.db';\n\nlet db, dbAll, dbRun;\n\nfunction init() {\n    const dirName = require('path').dirname(location);\n    if (!fs.existsSync(dirName)) {\n        fs.mkdirSync(dirName, { recursive: true });\n    }\n\n    return new Promise((acc, rej) => {\n        db = new sqlite3.Database(location, err => {\n            if (err) return rej(err);\n\n            if (process.env.NODE_ENV !== 'test')\n                console.log(`Using sqlite database at ${location}`);\n\n            db.run(\n                'CREATE TABLE IF NOT EXISTS todo_items (id varchar(36), name varchar(255), completed boolean)',\n                (err, result) => {\n                    if (err) return rej(err);\n                    acc();\n                },\n            );\n        });\n    });\n}\n\nasync function teardown() {\n    return new Promise((acc, rej) => {\n        db.close(err => {\n            if (err) rej(err);\n            else acc();\n        });\n    });\n}\n\nasync function getItems() {\n    return new Promise((acc, rej) => {\n        db.all('SELECT * FROM todo_items', (err, rows) => {\n            if (err) return rej(err);\n            acc(\n                rows.map(item =>\n                    Object.assign({}, item, {\n                        completed: item.completed === 1,\n                    }),\n                ),\n            );\n        });\n    });\n}\n\nasync function getItem(id) {\n    return new Promise((acc, rej) => {\n        db.all('SELECT * FROM todo_items WHERE id=?', [id], (err, rows) => {\n            if (err) return rej(err);\n            acc(\n                rows.map(item =>\n                    Object.assign({}, item, {\n                        completed: item.completed === 1,\n                    }),\n                )[0],\n            );\n        });\n    });\n}\n\nasync function storeItem(item) {\n    return new Promise((acc, rej) => {\n        db.run(\n            'INSERT INTO todo_items (id, name, completed) VALUES (?, ?, ?)',\n            [item.id, item.name, item.completed ? 1 : 0],\n            err => {\n                if (err) return rej(err);\n                acc();\n            },\n        );\n    });\n}\n\nasync function updateItem(id, item) {\n    return new Promise((acc, rej) => {\n        db.run(\n            'UPDATE todo_items SET name=?, completed=? WHERE id = ?',\n            [item.name, item.completed ? 1 : 0, id],\n            err => {\n                if (err) return rej(err);\n                acc();\n            },\n        );\n    });\n} \n\nasync function removeItem(id) {\n    return new Promise((acc, rej) => {\n        db.run('DELETE FROM todo_items WHERE id = ?', [id], err => {\n            if (err) return rej(err);\n            acc();\n        });\n    });\n}\n\nmodule.exports = {\n    init,\n    teardown,\n    getItems,\n    getItem,\n    storeItem,\n    updateItem,\n    removeItem,\n};\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_022_sample_app/app/src/routes/addItem.js",
    "content": "const db = require('../persistence');\nconst uuid = require('uuid/v4');\n\nmodule.exports = async (req, res) => {\n    const item = {\n        id: uuid(),\n        name: req.body.name,\n        completed: false,\n    };\n\n    await db.storeItem(item);\n    res.send(item);\n};\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_022_sample_app/app/src/routes/deleteItem.js",
    "content": "const db = require('../persistence');\n\nmodule.exports = async (req, res) => {\n    await db.removeItem(req.params.id);\n    res.sendStatus(200);\n};\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_022_sample_app/app/src/routes/getItems.js",
    "content": "const db = require('../persistence');\n\nmodule.exports = async (req, res) => {\n    const items = await db.getItems();\n    res.send(items);\n};\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_022_sample_app/app/src/routes/updateItem.js",
    "content": "const db = require('../persistence');\n\nmodule.exports = async (req, res) => {\n    await db.updateItem(req.params.id, {\n        name: req.body.name,\n        completed: req.body.completed,\n    });\n    const item = await db.getItem(req.params.id);\n    res.send(item);\n};\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_022_sample_app/app/src/static/css/font-awesome/fa-brands-400.svg#fontawesome",
    "content": "<?xml version=\"1.0\" standalone=\"no\"?>\n<!--\nFont Awesome Free 5.10.2 by @fontawesome - https://fontawesome.com\nLicense - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n-->\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\" >\n<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\">\n<metadata>\nCreated by FontForge 20190801 at Thu Aug 22 14:41:09 2019\n By Robert Madole\nCopyright (c) Font Awesome\n</metadata>\n<defs>\n<font id=\"FontAwesome5Brands-Regular\" horiz-adv-x=\"448\" >\n  <font-face \n    font-family=\"Font Awesome 5 Brands Regular\"\n    font-weight=\"400\"\n    font-stretch=\"normal\"\n    units-per-em=\"512\"\n    panose-1=\"2 0 5 3 0 0 0 0 0 0\"\n    ascent=\"448\"\n    descent=\"-64\"\n    bbox=\"-0.200195 -66.9505 641.5 448.3\"\n    underline-thickness=\"25\"\n    underline-position=\"-50\"\n    unicode-range=\"U+0020-F89E\"\n  />\n    <missing-glyph />\n    <glyph glyph-name=\"twitter-square\" unicode=\"&#xf081;\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM351.1 257.2c12.8008 9.2998 24 20.8994 32.9004 34c-11.7998 -5.10059 -24.5996 -8.7998 -37.7998 -10.2002\nc13.5996 8.09961 23.8994 20.9004 28.7998 36.0996c-12.5996 -7.5 -26.7998 -13 -41.5996 -15.7998c-12 12.7998 -29 20.7002 -47.9004 20.7002c-40 0 -73.2998 -36.0996 -64 -80.5996c-54.4004 2.7998 -102.9 28.7998 -135.2 68.5996\nc-5.7002 -9.7002 -8.89941 -20.9004 -8.89941 -33.0996v-0.107422c0 -19.3584 13.0811 -43.7715 29.1992 -54.4932c-10.6992 0.400391 -20.8994 3.40039 -29.5996 8.2998v-0.799805c0 -31.8994 22.5 -58.2998 52.5 -64.3994\nc-10.4004 -2.7002 -19.5 -2.7002 -29.5996 -1.2002c8.2998 -26 32.5 -44.9004 61.2998 -45.5c-22.5 -17.6006 -50.7002 -28 -81.4004 -28c-5.39941 0 -10.5 0.200195 -15.7998 0.799805c29 -18.5996 63.5 -29.4004 100.7 -29.4004c120.6 0 186.6 99.9004 186.6 186.601\nc0 2.7998 0 5.7002 -0.200195 8.5z\" />\n    <glyph glyph-name=\"facebook-square\" unicode=\"&#xf082;\" \nd=\"M400 416c26.4961 0 48 -21.5039 48 -48v-352c0 -26.4961 -21.5039 -48 -48 -48h-137.25v152.31h57.7803l11 71.6904h-68.7803v46.5498c0 19.6104 9.61035 38.7305 40.4199 38.7305h31.2705v61s-28.3809 4.83984 -55.5205 4.83984\nc-56.6699 0 -93.6699 -34.3301 -93.6699 -96.4805v-54.6396h-63v-71.6904h63v-152.31h-137.25c-26.4961 0 -48 21.5039 -48 48v352c0 26.4961 21.5039 48 48 48h352z\" />\n    <glyph glyph-name=\"linkedin\" unicode=\"&#xf08c;\" \nd=\"M416 416c17.5996 0 32 -14.5 32 -32.2998v-383.4c0 -17.7998 -14.4004 -32.2998 -32 -32.2998h-384.1c-17.6006 0 -31.9004 14.5 -31.9004 32.2998v383.4c0 17.7998 14.2998 32.2998 31.9004 32.2998h384.1zM135.4 32h0.0996094v213.8h-66.5v-213.8h66.4004zM102.2 275\nc21.2998 0 38.5 17.2002 38.5 38.5c0 21.2002 -17.2998 38.5 -38.5 38.5c-21.2998 0 -38.5 -17.2998 -38.5 -38.5s17.2002 -38.5 38.5 -38.5zM384.3 32v117.2c0 57.5996 -12.5 101.899 -79.7002 101.899c-32.2998 0 -54 -17.6992 -62.8994 -34.5h-0.900391v29.2002h-63.7002\nv-213.8h66.4004v105.8c0 27.9004 5.2998 54.9004 39.9004 54.9004c34 0 34.5 -31.9004 34.5 -56.7002v-104h66.3994z\" />\n    <glyph glyph-name=\"github-square\" unicode=\"&#xf092;\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM277.3 32.2998c66 22 110.8 84.9004 110.7 158.3c0 91.8008 -74.4004 161.5 -166.2 161.5s-162 -69.6992 -162 -161.5\nc0 -73.3994 46.2002 -136.199 112.2 -158.3c8.5 -1.5 11.5 3.7002 11.5 8c0 4.10059 -0.200195 26.7002 -0.200195 40.6006c0 0 -46.3994 -10 -56.0996 19.6992c0 0 -7.60059 19.2002 -18.4004 24.2002c0 0 -15.0996 10.4004 1.10059 10.2002\nc0 0 16.3994 -1.2998 25.5 -17.0996c14.5 -25.6006 38.7998 -18.2002 48.2998 -13.9004c1.5 10.5996 5.7998 18 10.5996 22.2998c-37 4.10059 -74.2998 9.5 -74.2998 73.1006c0 18.1992 5 27.2998 15.5996 39c-1.7998 4.39941 -7.39941 22.0996 1.7002 45\nc13.9004 4.2998 45.7002 -17.9004 45.7002 -17.9004c13.2002 3.7002 27.5 5.59961 41.5996 5.59961c14.1006 0 28.4004 -1.89941 41.6006 -5.59961c0 0 31.7998 22.2002 45.7002 17.9004c9.09961 -23 3.39941 -40.7002 1.69922 -45\nc10.6006 -11.7002 17.1006 -20.8008 17.1006 -39c0 -63.9004 -39 -69 -76 -73.1006c6.09961 -5.2002 11.2998 -15.0996 11.2998 -30.7002c0 -22.2998 -0.200195 -49.8994 -0.200195 -55.2998c0 -4.2998 3.10059 -9.5 11.5 -8zM179.2 93.4004\nc-1.90039 -0.400391 -3.7002 0.399414 -3.90039 1.69922c-0.200195 1.5 1.10059 2.80078 3 3.2002c1.90039 0.200195 3.7002 -0.599609 3.90039 -1.89941c0.299805 -1.30078 -1 -2.60059 -3 -3zM169.7 94.2998c0 1.5 -1.7998 2.60059 -3.7002 2.40039\nc-2 0 -3.5 -1.10059 -3.5 -2.40039c0 -1.5 1.5 -2.59961 3.7002 -2.39941c2 0 3.5 1.09961 3.5 2.39941zM156 95.4004c-0.400391 -1.30078 -2.40039 -1.90039 -4.09961 -1.30078c-1.90039 0.400391 -3.2002 1.90039 -2.80078 3.2002\nc0.400391 1.2998 2.40039 1.90039 4.10059 1.5c2 -0.599609 3.2998 -2.09961 2.7998 -3.39941zM143.7 100.8c0.899414 0.799805 0.399414 2.7998 -0.900391 4.10059c-1.5 1.5 -3.39941 1.69922 -4.2998 0.599609c-1 -0.900391 -0.599609 -2.7998 0.900391 -4.09961\nc1.5 -1.5 3.39941 -1.7002 4.2998 -0.600586zM134.6 109.9c1.10059 0.799805 1.10059 2.59961 0 4.09961c-0.899414 1.5 -2.59961 2.2002 -3.69922 1.2998c-1.10059 -0.700195 -1.10059 -2.39941 0 -3.89941c1.09961 -1.5 2.7998 -2.10059 3.69922 -1.5zM128.1 119.6\nc0.900391 0.700195 0.700195 2.2002 -0.399414 3.5c-1.10059 1 -2.60059 1.5 -3.5 0.600586c-0.900391 -0.700195 -0.700195 -2.2002 0.399414 -3.5c1.10059 -1 2.60059 -1.5 3.5 -0.600586zM121.4 127c0.399414 0.799805 -0.200195 1.90039 -1.5 2.59961\nc-1.30078 0.5 -2.40039 0.200195 -2.80078 -0.399414c-0.399414 -0.900391 0.200195 -2 1.5 -2.60059c1.10059 -0.699219 2.40039 -0.5 2.80078 0.400391z\" />\n    <glyph glyph-name=\"twitter\" unicode=\"&#xf099;\" horiz-adv-x=\"512\" \nd=\"M459.37 296.284c0.325195 -4.54785 0.325195 -9.09766 0.325195 -13.6455c0 -138.72 -105.583 -298.558 -298.559 -298.558c-59.4521 0 -114.68 17.2188 -161.137 47.1055c8.44727 -0.973633 16.5684 -1.29883 25.3398 -1.29883\nc49.0547 0 94.2129 16.5684 130.274 44.832c-46.1318 0.975586 -84.792 31.1885 -98.1123 72.7725c6.49805 -0.974609 12.9951 -1.62402 19.8184 -1.62402c9.4209 0 18.8428 1.2998 27.6133 3.57324c-48.0811 9.74707 -84.1426 51.9795 -84.1426 102.984v1.29883\nc13.9688 -7.79688 30.2139 -12.6699 47.4307 -13.3184c-28.2637 18.8428 -46.7803 51.0049 -46.7803 87.3906c0 19.4922 5.19629 37.3604 14.2939 52.9541c51.6543 -63.6748 129.3 -105.258 216.364 -109.807c-1.62402 7.79688 -2.59863 15.918 -2.59863 24.04\nc0 57.8271 46.7822 104.934 104.934 104.934c30.2139 0 57.502 -12.6699 76.6709 -33.1367c23.7148 4.54785 46.4551 13.3193 66.5986 25.3398c-7.79785 -24.3662 -24.3662 -44.833 -46.1318 -57.8271c21.1172 2.27344 41.584 8.12207 60.4258 16.2432\nc-14.292 -20.791 -32.1611 -39.3086 -52.6279 -54.2529z\" />\n    <glyph glyph-name=\"facebook\" unicode=\"&#xf09a;\" horiz-adv-x=\"512\" \nd=\"M504 192c0 -123.78 -90.6904 -226.38 -209.25 -245v173.31h57.7803l11 71.6904h-68.7803v46.5498c0 19.6104 9.61035 38.7305 40.4102 38.7305h31.2803v61s-28.3809 4.83984 -55.5205 4.83984c-56.6699 0 -93.6699 -34.3301 -93.6699 -96.4805v-54.6396h-63v-71.6904h63\nv-173.31c-118.56 18.6201 -209.25 121.22 -209.25 245c0 137 111 248 248 248s248 -111 248 -248z\" />\n    <glyph glyph-name=\"github\" unicode=\"&#xf09b;\" horiz-adv-x=\"496\" \nd=\"M165.9 50.5996c0 -2 -2.30078 -3.59961 -5.2002 -3.59961c-3.2998 -0.299805 -5.60059 1.2998 -5.60059 3.59961c0 2 2.30078 3.60059 5.2002 3.60059c3 0.299805 5.60059 -1.2998 5.60059 -3.60059zM134.8 55.0996c0.700195 2 3.60059 3 6.2002 2.30078\nc3 -0.900391 4.90039 -3.2002 4.2998 -5.2002c-0.599609 -2 -3.59961 -3 -6.2002 -2c-3 0.599609 -5 2.89941 -4.2998 4.89941zM179 56.7998c2.90039 0.299805 5.59961 -1 5.90039 -2.89941c0.299805 -2 -1.7002 -3.90039 -4.60059 -4.60059\nc-3 -0.700195 -5.59961 0.600586 -5.89941 2.60059c-0.300781 2.2998 1.69922 4.19922 4.59961 4.89941zM244.8 440c138.7 0 251.2 -105.3 251.2 -244c0 -110.9 -67.7998 -205.8 -167.8 -239c-12.7002 -2.2998 -17.2998 5.59961 -17.2998 12.0996\nc0 8.2002 0.299805 49.9004 0.299805 83.6006c0 23.5 -7.7998 38.5 -17 46.3994c55.8994 6.30078 114.8 14 114.8 110.5c0 27.4004 -9.7998 41.2002 -25.7998 58.9004c2.59961 6.5 11.0996 33.2002 -2.60059 67.9004c-20.8994 6.59961 -69 -27 -69 -27\nc-20 5.59961 -41.5 8.5 -62.7998 8.5s-42.7998 -2.90039 -62.7998 -8.5c0 0 -48.0996 33.5 -69 27c-13.7002 -34.6006 -5.2002 -61.4004 -2.59961 -67.9004c-16 -17.5996 -23.6006 -31.4004 -23.6006 -58.9004c0 -96.1992 56.4004 -104.3 112.3 -110.5\nc-7.19922 -6.59961 -13.6992 -17.6992 -16 -33.6992c-14.2998 -6.60059 -51 -17.7002 -72.8994 20.8994c-13.7002 23.7998 -38.6006 25.7998 -38.6006 25.7998c-24.5 0.300781 -1.59961 -15.3994 -1.59961 -15.3994c16.4004 -7.5 27.7998 -36.6006 27.7998 -36.6006\nc14.7002 -44.7998 84.7002 -29.7998 84.7002 -29.7998c0 -21 0.299805 -55.2002 0.299805 -61.3994c0 -6.5 -4.5 -14.4004 -17.2998 -12.1006c-99.7002 33.4004 -169.5 128.3 -169.5 239.2c0 138.7 106.1 244 244.8 244zM97.2002 95.0996\nc1.2998 1.30078 3.59961 0.600586 5.2002 -1c1.69922 -1.89941 2 -4.19922 0.699219 -5.19922c-1.2998 -1.30078 -3.59961 -0.600586 -5.19922 1c-1.7002 1.89941 -2 4.19922 -0.700195 5.19922zM86.4004 103.2c0.699219 1 2.2998 1.2998 4.2998 0.700195\nc2 -1 3 -2.60059 2.2998 -3.90039c-0.700195 -1.40039 -2.7002 -1.7002 -4.2998 -0.700195c-2 1 -3 2.60059 -2.2998 3.90039zM118.8 67.5996c1.2998 1.60059 4.2998 1.30078 6.5 -1c2 -1.89941 2.60059 -4.89941 1.2998 -6.19922\nc-1.2998 -1.60059 -4.19922 -1.30078 -6.5 1c-2.2998 1.89941 -2.89941 4.89941 -1.2998 6.19922zM107.4 82.2998c1.59961 1.2998 4.19922 0.299805 5.59961 -2c1.59961 -2.2998 1.59961 -4.89941 0 -6.2002c-1.2998 -1 -4 0 -5.59961 2.30078\nc-1.60059 2.2998 -1.60059 4.89941 0 5.89941z\" />\n    <glyph glyph-name=\"pinterest\" unicode=\"&#xf0d2;\" horiz-adv-x=\"496\" \nd=\"M496 192c0 -137 -111 -248 -248 -248c-25.5996 0 -50.2002 3.90039 -73.4004 11.0996c10.1006 16.5 25.2002 43.5 30.8008 65c3 11.6006 15.3994 59 15.3994 59c8.10059 -15.3994 31.7002 -28.5 56.7998 -28.5c74.8008 0 128.7 68.8008 128.7 154.301\nc0 81.8994 -66.8994 143.199 -152.899 143.199c-107 0 -163.9 -71.7998 -163.9 -150.1c0 -36.4004 19.4004 -81.7002 50.2998 -96.0996c4.7002 -2.2002 7.2002 -1.2002 8.2998 3.2998c0.800781 3.39941 5 20.2998 6.90039 28.0996\nc0.599609 2.5 0.299805 4.7002 -1.7002 7.10059c-10.0996 12.5 -18.2998 35.2998 -18.2998 56.5996c0 54.7002 41.4004 107.6 112 107.6c60.9004 0 103.6 -41.5 103.6 -100.899c0 -67.1006 -33.8994 -113.601 -78 -113.601c-24.2998 0 -42.5996 20.1006 -36.6992 44.8008\nc7 29.5 20.5 61.2998 20.5 82.5996c0 19 -10.2002 34.9004 -31.4004 34.9004c-24.9004 0 -44.9004 -25.7002 -44.9004 -60.2002c0 -22 7.40039 -36.7998 7.40039 -36.7998s-24.5 -103.801 -29 -123.2c-5 -21.4004 -3 -51.6006 -0.900391 -71.2002\nc-92.1992 36.0996 -157.6 125.9 -157.6 231c0 137 111 248 248 248s248 -111 248 -248z\" />\n    <glyph glyph-name=\"pinterest-square\" unicode=\"&#xf0d3;\" \nd=\"M448 368v-352c0 -26.5 -21.5 -48 -48 -48h-245.6c9.7998 16.4004 22.3994 40 27.3994 59.2998c3 11.5 15.2998 58.4004 15.2998 58.4004c8 -15.2998 31.4004 -28.2002 56.3008 -28.2002c74.0996 0 127.399 68.0996 127.399 152.7\nc0 81.0996 -66.2002 141.8 -151.399 141.8c-106 0 -162.2 -71.0996 -162.2 -148.6c0 -36 19.2002 -80.8008 49.7998 -95.1006c4.7002 -2.2002 7.09961 -1.2002 8.2002 3.2998c0.799805 3.40039 5 20.1006 6.7998 27.8008c0.599609 2.5 0.299805 4.59961 -1.7002 7\nc-10.0996 12.2998 -18.2998 34.8994 -18.2998 56c0 54.1992 41 106.6 110.9 106.6c60.2998 0 102.6 -41.0996 102.6 -99.9004c0 -66.3994 -33.5 -112.399 -77.2002 -112.399c-24.0996 0 -42.0996 19.8994 -36.3994 44.3994c6.89941 29.2002 20.2998 60.7002 20.2998 81.8008\nc0 53 -75.5 45.6992 -75.5 -25c0 -21.7002 7.2998 -36.5 7.2998 -36.5c-31.4004 -132.801 -36.0996 -134.5 -29.5996 -192.601l2.19922 -0.799805h-88.5996c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48z\" />\n    <glyph glyph-name=\"google-plus-square\" unicode=\"&#xf0d4;\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM164 92c57.7002 0 96 40.5 96 97.5996c0 6.5 -0.599609 11.6006 -1.59961 16.6006h-94.4004v-34.4004h56.9004\nc-2.40039 -14.5996 -17.2002 -43.0996 -56.8008 -43.0996c-34.0996 0 -61.8994 28.2998 -61.8994 63.2002c0 35 27.7998 63.1992 61.8994 63.1992c19.5 0 32.4004 -8.2998 39.8008 -15.3994l27.0996 26.0996c-17.5 16.4004 -40 26.2002 -67 26.2002\nc-55.2998 0 -100 -44.7002 -100 -100s44.7002 -100 100 -100zM384 173.8v29.2002h-29v29h-29.2002v-29h-29v-29.2002h29v-29h29.2002v29h29z\" />\n    <glyph glyph-name=\"google-plus-g\" unicode=\"&#xf0d5;\" horiz-adv-x=\"640\" \nd=\"M386.061 219.504c1.83398 -9.69238 3.14355 -19.3838 3.14355 -31.9561c0 -109.753 -73.6055 -187.548 -184.404 -187.548c-106.084 0 -192 85.915 -192 192s85.916 192 192 192c51.8643 0 95.083 -18.8594 128.611 -50.292l-52.126 -50.0303\nc-14.1455 13.6211 -39.0283 29.5996 -76.4854 29.5996c-65.4834 0 -118.92 -54.2217 -118.92 -121.277s53.4365 -121.277 118.92 -121.277c75.9609 0 104.514 54.7451 108.965 82.7734h-108.965v66.0088h181.261v-0.000976562zM571.467 213.067h55.7334v-56.001h-55.7334\nv-55.7334h-56.001v55.7334h-55.7324v56.001h55.7324v55.7324h56.001v-55.7324z\" />\n    <glyph glyph-name=\"linkedin-in\" unicode=\"&#xf0e1;\" \nd=\"M100.28 0h-92.8799v299.1h92.8799v-299.1zM53.79 339.9c-29.7002 0 -53.79 24.5996 -53.79 54.2998c0 29.6914 24.0977 53.79 53.79 53.79s53.79 -24.0986 53.79 -53.79c0 -29.7002 -24.0996 -54.2998 -53.79 -54.2998zM447.9 0h-92.6807v145.6\nc0 34.7002 -0.700195 79.2002 -48.29 79.2002c-48.29 0 -55.6895 -37.7002 -55.6895 -76.7002v-148.1h-92.7803v299.1h89.0801v-40.7998h1.2998c12.4004 23.5 42.6904 48.2998 87.8799 48.2998c94 0 111.28 -61.8994 111.28 -142.3v-164.3h-0.0996094z\" />\n    <glyph glyph-name=\"github-alt\" unicode=\"&#xf113;\" horiz-adv-x=\"480\" \nd=\"M186.1 119.3c0 -20.8994 -10.8994 -55.0996 -36.6992 -55.0996c-25.8008 0 -36.7002 34.2002 -36.7002 55.0996c0 20.9004 10.8994 55.1006 36.7002 55.1006c25.7998 0 36.6992 -34.2002 36.6992 -55.1006zM480 169.8c0 -31.8994 -3.2002 -65.7002 -17.5 -95\nc-37.9004 -76.5996 -142.1 -74.7998 -216.7 -74.7998c-75.7998 0 -186.2 -2.7002 -225.6 74.7998c-14.6006 29 -20.2002 63.1006 -20.2002 95c0 41.9004 13.9004 81.5 41.5 113.601c-5.2002 15.7998 -7.7002 32.3994 -7.7002 48.7998\nc0 21.5 4.90039 32.2998 14.6006 51.7998c45.2998 0 74.2998 -9 108.8 -36c29 6.90039 58.7998 10 88.7002 10c27 0 54.1992 -2.90039 80.3994 -9.2002c34 26.7002 63 35.2002 107.8 35.2002c9.80078 -19.5 14.6006 -30.2998 14.6006 -51.7998\nc0 -16.4004 -2.60059 -32.7002 -7.7002 -48.2002c27.5 -32.4004 39 -72.2998 39 -114.2zM415.7 119.3c0 43.9004 -26.7002 82.6006 -73.5 82.6006c-18.9004 0 -37 -3.40039 -56 -6c-14.9004 -2.30078 -29.7998 -3.2002 -45.1006 -3.2002\nc-15.1992 0 -30.0996 0.899414 -45.0996 3.2002c-18.7002 2.59961 -37 6 -56 6c-46.7998 0 -73.5 -38.7002 -73.5 -82.6006c0 -87.7998 80.4004 -101.3 150.4 -101.3h48.1992c70.3008 0 150.601 13.4004 150.601 101.3zM333.1 174.4\nc25.8008 0 36.7002 -34.2002 36.7002 -55.1006c0 -20.8994 -10.8994 -55.0996 -36.7002 -55.0996c-25.7998 0 -36.6992 34.2002 -36.6992 55.0996c0 20.9004 10.8994 55.1006 36.6992 55.1006z\" />\n    <glyph glyph-name=\"maxcdn\" unicode=\"&#xf136;\" horiz-adv-x=\"512\" \nd=\"M461.1 5.2998h-97.3994l51.8994 242.7c2.30078 10.2002 0.900391 19.5 -4.39941 25.7002c-5 6.09961 -13.7002 9.59961 -24.2002 9.59961h-49.2998l-59.5 -278h-97.4004l59.5 278h-83.3994l-59.5 -278h-97.4004l59.5 278l-44.5996 95.4004h372.1\nc39.4004 0 75.2998 -16.2998 98.2998 -44.9004c23.2998 -28.5996 31.7998 -67.3994 23.6006 -105.899z\" />\n    <glyph glyph-name=\"html5\" unicode=\"&#xf13b;\" horiz-adv-x=\"384\" \nd=\"M0 416h384l-34.9004 -395.8l-157.6 -52.2002l-156.6 52.2002zM308.2 288.1l4.39941 47.7002h-241.1l12.7998 -145.6h166.9l-6 -62.2002l-53.7002 -14.5l-53.5 14.5l-3.5 38.0996h-47.7002l6 -75.7998l98.7002 -27.2998h1.09961v0.299805l97.9004 27l13.5996 148.4h-175.6\nl-4.09961 49.3994h183.8z\" />\n    <glyph glyph-name=\"css3\" unicode=\"&#xf13c;\" horiz-adv-x=\"512\" \nd=\"M480 416l-64 -368l-223.3 -80l-192.7 80l19.5996 94.7998h82l-8 -40.5996l116.4 -44.4004l134.1 44.4004l18.8008 97.0996h-333.4l16 82h333.7l10.5 52.7002h-333.4l16.2998 82h407.4z\" />\n    <glyph glyph-name=\"btc\" unicode=\"&#xf15a;\" horiz-adv-x=\"384\" \nd=\"M310.204 205.362c46.0059 -11.0283 74.9971 -38.4443 69.3262 -99.8906c-7.24805 -76.5723 -61.5967 -97.0547 -142.896 -101.467v-68.0049h-48.5273v66.7451c-12.29 0 -25.21 0 -38.4443 0.314453v-67.0596h-48.5283v68.0049s-8.88867 0.31543 -97.3701 0.31543\nl9.76758 57.666c34.7305 -0.614258 50.3301 -3.4209 53.2549 16.0703v217.43c-4.60645 24.5664 -24.709 22.1045 -63.0234 21.4268v51.6777c58.748 -0.275391 79.5283 -0.539062 97.3701 0v79.4092h48.5283v-77.833c12.9189 0.31543 25.8389 0.629883 38.4443 0.629883\nv77.2031h48.5273v-79.4092c62.3926 -5.35547 109.492 -24.5781 114.851 -81.9287c4.09668 -41.9102 -13.5508 -67.1201 -41.2803 -81.2998zM150.608 313.447v-96.7402c27.416 0 113.126 -6.30273 113.126 48.2119c0 57.0352 -85.7109 48.5283 -113.126 48.5283z\nM150.608 61.6709c32.7715 0 133.126 -6.93262 133.127 53.2529c0 62.3936 -100.355 53.2549 -133.127 53.2549v-106.508z\" />\n    <glyph glyph-name=\"youtube\" unicode=\"&#xf167;\" horiz-adv-x=\"576\" \nd=\"M549.655 323.917c11.4121 -42.8672 11.4121 -132.305 11.4121 -132.305s0 -89.4385 -11.4121 -132.306c-6.28125 -23.6494 -24.7871 -41.5 -48.2842 -47.8203c-42.5908 -11.4863 -213.371 -11.4863 -213.371 -11.4863s-170.78 0 -213.371 11.4863\nc-23.4971 6.32031 -42.0029 24.1709 -48.2842 47.8203c-11.4121 42.8672 -11.4121 132.306 -11.4121 132.306s0 89.4375 11.4121 132.305c6.28125 23.6504 24.7871 42.2754 48.2842 48.5967c42.5908 11.4863 213.371 11.4863 213.371 11.4863s170.781 0 213.371 -11.4863\nc23.4971 -6.32031 42.0029 -24.9463 48.2842 -48.5967zM232.145 110.409l142.739 81.2012l-142.739 81.2051v-162.406z\" />\n    <glyph glyph-name=\"xing\" unicode=\"&#xf168;\" horiz-adv-x=\"384\" \nd=\"M162.7 238c-1.7998 -3.2998 -25.2002 -44.4004 -70.1006 -123.5c-4.89941 -8.2998 -10.7998 -12.5 -17.6992 -12.5h-65.1006c-7.7002 0 -12.0996 7.5 -8.5 14.4004l69 121.3c0.200195 0 0.200195 0.0996094 0 0.299805l-43.8994 75.5996\nc-4.30078 7.80078 0.299805 14.1006 8.5 14.1006h65.0996c7.2998 0 13.2998 -4.10059 18 -12.2002zM382.6 401.9l-144 -253v-0.300781l91.6006 -166.6c3.89941 -7.09961 0.200195 -14.0996 -8.5 -14.0996h-65.2002c-7.59961 0 -13.5996 4 -18 12.1992l-92.4004 168.5\nc3.30078 5.80078 51.5 90.8008 144.801 255.2c4.59961 8.10059 10.3994 12.2002 17.5 12.2002h65.6992c8 0 12.3008 -6.7002 8.5 -14.0996z\" />\n    <glyph glyph-name=\"xing-square\" unicode=\"&#xf169;\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM140.4 127.8c4.89941 0 9.09961 2.90039 12.5996 9.10059c32.0996 56.5 48.7998 85.8994 50.0996 88.1992l-31.8994 55.3008\nc-3.40039 5.7998 -7.7002 8.69922 -12.9004 8.69922h-46.5996c-5.7998 0 -9 -4.5 -6 -10.0996l31.3994 -54c0.100586 -0.0996094 0.100586 -0.200195 0 -0.200195l-49.2998 -86.7002c-2.7002 -5 0.5 -10.2998 6 -10.2998h46.6006zM360.1 341.9\nc2.80078 5.2998 -0.299805 10.0996 -6 10h-46.8994c-5.10059 0 -9.2002 -2.90039 -12.5 -8.7002c-66.6006 -117.4 -101.101 -178.2 -103.4 -182.3l66 -120.301c3.2002 -5.7998 7.40039 -8.69922 12.9004 -8.69922h46.5996c6.10059 0 8.7998 5 6 10.0996l-65.5 119v0.200195z\n\" />\n    <glyph glyph-name=\"dropbox\" unicode=\"&#xf16b;\" horiz-adv-x=\"528\" \nd=\"M264.4 331.7l-132 -84.2998l132 -84.3008l-132 -84.2998l-132.4 85.1006l132.3 84.2998l-132.3 83.5l132.3 84.2998zM131.6 52.2998l132 84.2998l132 -84.2998l-132 -84.2998zM264.4 163.9l132 84.2998l-132 83.5996l131.3 84.2002l132.3 -84.2998l-132.3 -84.2998\nl132.3 -84.2002l-132.3 -84.2998z\" />\n    <glyph glyph-name=\"stack-overflow\" unicode=\"&#xf16c;\" horiz-adv-x=\"384\" \nd=\"M290.7 137l-8.2002 -39l-195.7 41l8.2002 39.2998zM341.7 224l-25.5 -30.7998l-153.5 128.3l25.5 30.7998zM310.5 184.3l-16.7998 -36.2998l-181.2 84.5l16.7002 36.5zM262 416l119.3 -160.3l-32 -24l-119.3 160.3zM282.5 88v-39.7002h-200v39.7002h200zM322.2 8v120h40\nv-160h-359.5v160h40v-120h279.5z\" />\n    <glyph glyph-name=\"instagram\" unicode=\"&#xf16d;\" \nd=\"M224.1 307c63.6006 0 114.9 -51.2998 114.9 -114.9c0 -63.5996 -51.2998 -114.899 -114.9 -114.899c-63.5996 0 -114.899 51.2998 -114.899 114.899c0 63.6006 51.2998 114.9 114.899 114.9zM224.1 117.4c41.1006 0 74.7002 33.5 74.7002 74.6992\nc0 41.2002 -33.5 74.7002 -74.7002 74.7002c-41.1992 0 -74.6992 -33.5 -74.6992 -74.7002c0 -41.1992 33.5996 -74.6992 74.6992 -74.6992zM370.5 311.7c0 -14.9004 -12 -26.7998 -26.7998 -26.7998c-14.9004 0 -26.7998 12 -26.7998 26.7998s12 26.7998 26.7998 26.7998\ns26.7998 -12 26.7998 -26.7998zM446.6 284.5c2.10059 -37 2.10059 -147.8 0 -184.8c-1.7998 -35.9004 -10 -67.7002 -36.1992 -93.9004c-26.2002 -26.2998 -58 -34.5 -93.9004 -36.2002c-37 -2.09961 -147.9 -2.09961 -184.9 0\nc-35.8994 1.80078 -67.5996 10 -93.8994 36.2002s-34.5 58 -36.2002 93.9004c-2.09961 37 -2.09961 147.899 0 184.899c1.7998 35.9004 9.90039 67.7002 36.2002 93.9004s58.0996 34.4004 93.8994 36.0996c37 2.10059 147.9 2.10059 184.9 0\nc35.9004 -1.7998 67.7002 -10 93.9004 -36.1992c26.2998 -26.2002 34.5 -58 36.1992 -93.9004zM398.8 60c11.7002 29.4004 9 99.5 9 132.1c0 32.6006 2.7002 102.601 -9 132.101c-7.89941 19.7002 -23 34.7998 -42.5996 42.5996c-29.4004 11.6006 -99.5 9 -132.101 9\nc-32.5996 0 -102.6 2.7002 -132.1 -9c-19.7002 -7.89941 -34.7998 -23 -42.5996 -42.5996c-11.6006 -29.4004 -9 -99.5 -9 -132.101c0 -32.5996 -2.7002 -102.6 9 -132.1c7.89941 -19.7002 23 -34.7998 42.5996 -42.5996c29.4004 -11.6006 99.5 -9 132.1 -9\nc32.6006 0 102.601 -2.7002 132.101 9c19.7002 7.89941 34.7998 23 42.5996 42.5996z\" />\n    <glyph glyph-name=\"flickr\" unicode=\"&#xf16e;\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM144.5 129c35.0996 0 63.5 28.4004 63.5 63.5s-28.4004 63.5 -63.5 63.5s-63.5 -28.4004 -63.5 -63.5s28.4004 -63.5 63.5 -63.5z\nM303.5 129c35.0996 0 63.5 28.4004 63.5 63.5s-28.4004 63.5 -63.5 63.5s-63.5 -28.4004 -63.5 -63.5s28.4004 -63.5 63.5 -63.5z\" />\n    <glyph glyph-name=\"adn\" unicode=\"&#xf170;\" horiz-adv-x=\"496\" \nd=\"M248 280.5l64.9004 -98.7998h-129.801zM496 192c0 -136.9 -111.1 -248 -248 -248s-248 111.1 -248 248s111.1 248 248 248s248 -111.1 248 -248zM396.2 109.3l-148.2 223.2l-148.2 -223.2h30.4004l33.5996 51.7002h168.601l33.5996 -51.7002h30.2002z\" />\n    <glyph glyph-name=\"bitbucket\" unicode=\"&#xf171;\" horiz-adv-x=\"512\" \nd=\"M22.2002 416l466.8 -0.200195c0.776367 -0.0107422 2.03027 -0.100586 2.7998 -0.200195c7.39648 -1.21875 13.3984 -8.29102 13.3984 -15.7871c0 -0.697266 -0.0888672 -1.82324 -0.198242 -2.5127l-67.9004 -416.8\nc-1.2168 -7.39746 -8.29004 -13.4014 -15.7871 -13.4014c-0.0585938 0 -0.154297 0.000976562 -0.212891 0.000976562h-325.699c-10.1016 0.0820312 -19.6445 8.23535 -21.3008 18.2002l-67.8994 412.101c-0.0966797 0.769531 -0.186523 2.02344 -0.200195 2.7998\nc0.108398 8.72168 7.27539 15.8008 15.999 15.8008c0.0556641 0 0.145508 0 0.201172 -0.000976562zM308.1 118.2l25.2002 147h-157.3l28.0996 -147h104z\" />\n    <glyph glyph-name=\"tumblr\" unicode=\"&#xf173;\" horiz-adv-x=\"320\" \nd=\"M309.8 -32.2998c-13.5996 -14.5 -50 -31.7002 -97.3994 -31.7002c-120.801 0 -147 88.7998 -147 140.6v144h-47.5c-5.5 0 -10 4.5 -10 10v68c0 7.2002 4.5 13.6006 11.2998 16c62 21.8008 81.5 76 84.2998 117.101c0.799805 11 6.5 16.2998 16.0996 16.2998h70.9004\nc5.5 0 10 -4.5 10 -10v-115.2h83c5.5 0 10 -4.39941 10 -9.89941v-81.7002c0 -5.5 -4.5 -10 -10 -10h-83.4004v-133.2c0 -34.2002 23.7002 -53.5996 68 -35.7998c4.80078 1.89941 9 3.2002 12.7002 2.2002c3.5 -0.900391 5.7998 -3.40039 7.40039 -7.90039l22 -64.2998\nc1.7998 -5 3.2998 -10.6006 -0.400391 -14.5z\" />\n    <glyph glyph-name=\"tumblr-square\" unicode=\"&#xf174;\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM317.7 51.7998c2.2998 2.40039 1.2998 5.90039 0.299805 9.10059l-13.7998 40.1992c-1 2.80078 -2.40039 4.40039 -4.60059 4.90039\nc-2.39941 0.599609 -5 -0.200195 -8 -1.40039c-27.6992 -11.0996 -42.5 1 -42.5 22.4004v83.2998h52.1006c3.39941 0 6.2002 2.7998 6.2002 6.2002v51.0996c0 3.40039 -2.80078 6.2002 -6.2002 6.2002h-51.9004v72c0 3.40039 -2.7998 6.2002 -6.2002 6.2002h-44.2998\nc-5.89941 0 -9.5 -3.2998 -10 -10.2002c-1.7998 -25.7002 -13.8994 -59.5 -52.7002 -73.2002c-4.2998 -1.5 -7.09961 -5.5 -7.09961 -10v-42.5c0 -3.39941 2.7998 -6.19922 6.2002 -6.19922h29.7002v-90c0 -32.4004 16.3994 -87.9004 91.8994 -87.9004\nc29.7002 0 52.4004 10.7002 60.9004 19.7998z\" />\n    <glyph glyph-name=\"apple\" unicode=\"&#xf179;\" horiz-adv-x=\"384\" \nd=\"M318.7 179.3c0 -1.89941 -3.5 -61.2002 61.7002 -91.8994c-12.2002 -36.8008 -54 -118.601 -102.601 -119.301c-28.0996 0 -44.5996 17.9004 -76.3994 17.9004c-32.8008 0 -50.6006 -17.2998 -75.8008 -17.9004c-48.1992 -1.5 -94.3994 88.5 -107.199 125.2\nc-9.60059 27.9336 -14.4004 55 -14.4004 81.2002c0 88.7002 59.2998 132.3 115.1 133.2c27 0 61.4004 -19.7002 76.4004 -19.7002c14.2002 0 53 23.5 88.5 20.7002c37.5 -2.90039 65.9004 -17.7002 84.7002 -44.6006c-33.6006 -20.3994 -50.2002 -48.0996 -50 -84.7998z\nM262.1 343.5c-19.5996 -22.9004 -43.3994 -36.2998 -69.5 -34.2998c-2.19922 27.5996 8.10059 52.0996 25.6006 71.8994c15.8994 18.5 43.7998 33.5 67.8994 34.9004c0.800781 -10.5996 3.30078 -40.0996 -24 -72.5z\" />\n    <glyph glyph-name=\"windows\" unicode=\"&#xf17a;\" \nd=\"M0 354.3l183.6 25.2998v-177.399h-183.6v152.1zM0 29.7002v149.899h183.6v-175.199zM203.8 1.7002v177.899h244.2v-211.6zM203.8 382.3l244.2 33.7002v-213.8h-244.2v180.1z\" />\n    <glyph glyph-name=\"android\" unicode=\"&#xf17b;\" \nd=\"M89.5996 243.5v-115.8c0 -15.4004 -12.0996 -27.7002 -27.5 -27.7002c-15.2998 0 -30.0996 12.4004 -30.0996 27.7002v115.8c0 15.0996 14.7998 27.5 30.0996 27.5c15.1006 0 27.5 -12.4004 27.5 -27.5zM100.4 86.5v179.4h247.3v-179.4\nc0 -16.4004 -13.2002 -29.5996 -29.4004 -29.5996h-20.2002v-61.1006c0 -36.7998 -55.5 -36.7002 -55.5 0v61.1006h-37.1992v-61.1006c0 -36.5996 -55.2002 -36.8994 -55.2002 0l-0.299805 61.1006h-19.9004c-16.4004 0 -29.5996 13.1992 -29.5996 29.5996zM348.4 275.6\nh-249.101c0 42.8008 25.6006 80 63.6006 99.4004l-19.1006 35.2998c-2.7998 4.90039 4.2998 8 6.7002 3.7998l19.4004 -35.5996c34.8994 15.5 75 14.7002 108.3 0l19.2998 35.5c2.5 4.2998 9.5 1.09961 6.7002 -3.7998l-19.1006 -35.2002\nc37.7002 -19.4004 63.3008 -56.5996 63.3008 -99.4004zM177.7 331.1c0 5.7002 -4.60059 10.5 -10.5 10.5c-5.7002 0 -10.2002 -4.7998 -10.2002 -10.5c0 -5.69922 4.59961 -10.5 10.2002 -10.5c5.89941 0 10.5 4.80078 10.5 10.5zM291.1 331.1\nc0 5.7002 -4.59961 10.5 -10.1992 10.5c-5.90039 0 -10.5 -4.7998 -10.5 -10.5c0 -5.69922 4.59961 -10.5 10.5 -10.5c5.59961 0 10.1992 4.80078 10.1992 10.5zM385.9 271c15.2998 0 30.0996 -12.0996 30.0996 -27.5v-115.8\nc0 -15.2998 -14.7002 -27.7002 -30.0996 -27.7002c-15.1006 0 -27.5 12.2998 -27.5 27.7002v115.8c0 15.4004 12.3994 27.5 27.5 27.5z\" />\n    <glyph glyph-name=\"linux\" unicode=\"&#xf17c;\" \nd=\"M220.8 324.7c-1.09961 0.599609 -3.09961 0.399414 -3.39941 1.7002c-0.200195 0.399414 0.199219 0.899414 0.599609 1.09961c1.59961 0.900391 3.7998 0.599609 5.5 -0.0996094c1.2998 -0.600586 3.40039 -1.5 3.2002 -2.90039\nc-0.100586 -1.09961 -1.7998 -1.5 -2.90039 -1.5c-1.2002 0 -2 1.2002 -3 1.7002zM198.9 323c-1 -0.0996094 -2.7002 0.400391 -2.80078 1.40039c-0.199219 1.39941 1.90039 2.2998 3.2002 2.89941c1.7002 0.700195 3.90039 1 5.5 0.100586\nc0.400391 -0.200195 0.799805 -0.700195 0.600586 -1.10059c-0.400391 -1.2002 -2.40039 -1 -3.5 -1.59961c-1 -0.5 -1.80078 -1.7002 -3 -1.7002zM420 44.2002c11.0996 -12.4004 15.9004 -21.5 15.5 -29.7002c-0.5 -8.2002 -6.5 -13.7998 -13.9004 -18.2998\nc-14.8994 -9 -37.2998 -15.7998 -50.8994 -32.2002c-14.2002 -16.9004 -31.7002 -26.5996 -48.2998 -27.9004c-16.5 -1.2998 -32 6.30078 -40.3008 23v0.100586c-1.09961 2.09961 -1.89941 4.39941 -2.5 6.7002c-21.5 -1.2002 -40.1992 5.2998 -55.0996 4.09961\nc-22 -1.2002 -35.7998 -6.5 -48.2998 -6.59961c-4.7998 -10.6006 -14.2998 -17.6006 -25.9004 -20.2002c-16 -3.7002 -36.0996 0 -55.8994 10.3994c-18.5 9.80078 -42 8.90039 -59.3008 12.5c-8.69922 1.80078 -16.2998 5 -20.0996 12.3008\nc-3.7002 7.2998 -3 17.2998 2.2002 31.6992c1.7002 5.10059 0.399414 12.7002 -0.799805 20.8008c-0.600586 3.89941 -1.2002 7.89941 -1.2002 11.7998c0 4.2998 0.700195 8.5 2.7998 12.3994c4.5 8.5 11.7998 12.1006 18.5 14.5c6.7002 2.40039 12.7998 4 17 8.30078\nc5.2002 5.5 10.0996 14.3994 16.5996 20.1992c-2.59961 17.2002 0.200195 35.4004 6.2002 53.3008c12.6006 37.8994 39.2002 74.1992 58.1006 96.6992c16.0996 22.9004 20.7998 41.3008 22.5 64.7002c1.09961 31.7998 -24.5 135.4 77.8994 135.2\nc80.9004 -0.0996094 76.2998 -85.4004 75.7998 -131.3c-0.299805 -30.1006 16.3008 -50.5 33.4004 -72c15.2002 -18 35.0996 -44.2998 46.5 -74.4004c9.2998 -24.5996 12.9004 -51.7998 3.7002 -79.0996c1.39941 -0.5 2.7998 -1.2002 4.09961 -2\nc1.40039 -0.799805 2.7002 -1.7998 4 -2.90039c6.60059 -5.59961 8.7002 -14.2998 10.5 -22.3994c1.90039 -8.10059 3.60059 -15.7002 7.2002 -19.7002zM223.7 360.7c-3.2002 -7.2002 -3.90039 -14.9004 -2.90039 -21.7998c3.60059 -0.900391 8.90039 -2.40039 13 -4.40039\nc-2.09961 12.2002 4.5 23.5 11.7998 23c8.90039 -0.299805 13.9004 -15.5 9.10059 -27.2998c-0.799805 -1.90039 -2.7998 -3.40039 -3.90039 -4.60059c6.7002 -2.2998 11 -4.09961 12.6006 -4.89941c7.89941 9.5 10.7998 26.2002 4.2998 40.3994\nc-9.7998 21.4004 -34.2002 21.8008 -44 -0.399414zM183 372.2c-18.9004 0 -24 -37.5 -8.40039 -52.1006c7.80078 5.7002 6.90039 4.7002 5.90039 5.5c-8 6.90039 -6.59961 27.4004 1.7998 28.1006c6.2998 0.5 10.7998 -10.7002 9.60059 -19.6006\nc3.09961 2.10059 6.69922 3.60059 10.1992 4.60059c1.7002 19.2998 -9 33.5 -19.0996 33.5zM169.4 311.5c-4.2002 -3.2998 -5.60059 -7.40039 -4.2002 -12.2998c1.5 -4.90039 6.09961 -10.5 14.7002 -15.2998c7.7998 -4.60059 12 -11.5 20 -15\nc2.59961 -1.10059 5.69922 -1.90039 9.59961 -2.10059c18.4004 -1.09961 27.0996 11.2998 38.2002 14.9004c11.7002 3.7002 20.0996 11 22.7002 18.0996c3.19922 8.5 -2.10059 14.7002 -10.5 18.2002c-11.3008 4.90039 -16.3008 5.2002 -22.6006 9.2998\nc-10.2998 6.60059 -18.7998 8.90039 -25.8994 8.90039c-14.4004 0 -23.2002 -9.7998 -27.9004 -14.2002c-0.5 -0.5 -7.90039 -5.90039 -14.0996 -10.5zM172.7 -22.5c2.09961 20.5 -31.5 49 -41 68.9004l-19.6006 35.5996c-6.7998 9.2002 -13.7998 14.7998 -21.8994 16\nc-7.7002 1.2002 -12.6006 -1.40039 -17.7002 -6.90039c-4.7998 -5.09961 -8.7998 -12.2998 -14.2998 -18c-7.7998 -6.5 -9.2998 -6.19922 -19.6006 -9.89941c-6.2998 -2.2002 -11.2998 -4.60059 -14.7998 -11.2998c-2.7002 -5 -2.09961 -12.2002 -0.899414 -20\nc1.19922 -7.90039 3 -16.3008 0.599609 -23.9004v-0.200195c-5 -13.7002 -5 -21.7002 -2.59961 -26.3994c7.89941 -15.4004 46.5996 -6.10059 76.5 -21.9004c31.3994 -16.4004 72.5996 -17.0996 75.2998 18zM171.3 3.40039c37.6006 -25.7002 82.2002 -15.7002 114.3 7.19922\nc3.2002 11 6.30078 21.3008 6.80078 29c0.799805 15.2002 1.59961 28.7002 4.39941 39.9004c3.10059 12.5996 9.2998 23.0996 21.4004 27.2998c2.2998 21.1006 18.7002 21.1006 38.2998 12.5c18.9004 -8.5 26 -16 22.7998 -26.0996c1 0 2 0.0996094 4.2002 0\nc5.2002 16.8994 -14.2998 28 -30.7002 34.7998c2.90039 12 2.40039 24.0996 -0.399414 35.7002c-6 25.2998 -22.6006 47.7998 -35.2002 59c-2.2998 0.0996094 -2.10059 -1.90039 2.59961 -6.5c11.6006 -10.7002 37.1006 -49.2002 23.2998 -84.9004\nc-3.89941 1 -7.59961 1.5 -10.8994 1.40039c-5.2998 29.0996 -17.5 53.2002 -23.6006 64.5996c-11.5 21.4004 -29.5 65.2998 -37.1992 95.7002c-4.5 -6.40039 -12.4004 -11.9004 -22.3008 -15c-4.69922 -1.5 -9.69922 -5.5 -15.8994 -9\nc-13.9004 -8 -30 -8.7998 -42.4004 1.2002c-4.5 3.59961 -8 7.59961 -12.5996 10.2998c-1.60059 0.900391 -5.10059 3.2998 -6.2002 4.09961c-2 -37.7998 -27.2998 -85.2998 -39.2998 -112.699c-8.2998 -19.7002 -13.2002 -40.8008 -13.7998 -61.5\nc-21.8008 29.0996 -5.90039 66.2998 2.59961 82.3994c9.5 17.6006 11 22.5 8.7002 20.7998c-8.60059 -14 -22 -36.2998 -27.2002 -59.1992c-2.7002 -11.9004 -3.2002 -24 0.299805 -35.2002s11.1006 -21.5 24.6006 -29.9004c0 0 24.7998 -14.2998 38.2998 -32.5\nc7.39941 -10 9.7002 -18.7002 7.39941 -24.8994c-2.5 -6.7002 -9.59961 -8.90039 -16.6992 -8.90039c4.7998 -6 10.2998 -13 14.3994 -19.5996zM428.7 14.9004c0.299805 5.09961 -3.10059 13 -13.7002 24.5996c-10 11.2998 -7.2002 33.0996 -17.0996 41.5996\nc-6.90039 6 -13.6006 5.40039 -22.6006 5.10059c-7.7002 -8.7998 -25.7998 -19.6006 -38.3994 -16.2998c-11.5 2.89941 -18 16.2998 -18.8008 29.5c-0.299805 -0.200195 -0.699219 -0.300781 -1 -0.5c-7.09961 -3.90039 -11.0996 -10.8008 -13.6992 -21.1006\nc-2.5 -10.2002 -3.40039 -23.5 -4.2002 -38.7002c-0.700195 -11.7998 -6.2002 -26.3994 -9.90039 -40.5996c-3.5 -13.2002 -5.7998 -25.2002 -1.09961 -36.2998c7.2002 -14.5 19.5 -20.4004 33.7002 -19.2998c14.1992 1.09961 30.3994 9.7998 43.5996 25.5\nc22 26.5996 62.2998 29.6992 63.2002 46.5zM173.3 299.3c-3.5 2.7998 -3.09961 6.60059 -1.7002 6.5c2.40039 -0.299805 2.80078 -3.5 4.30078 -4.89941c2 -1.90039 4.59961 -4.40039 7.69922 -6.90039c6.2002 -4.90039 14.5 -9.7002 24.9004 -9.7002\ns22.5 6 29.9004 10.2002c4.19922 2.40039 9.5 6.59961 13.8994 9.7998c3.40039 2.5 3.2002 5.40039 6 5.10059c2.7998 -0.300781 0.799805 -3.2002 -3.09961 -6.60059c-3.90039 -3.39941 -9.90039 -7.7998 -14.7998 -10.3994\nc-9.30078 -4.90039 -20.2002 -10.8008 -31.8008 -10.8008c-11.5 0 -20.6992 5.40039 -27.2998 10.6006c-3.2998 2.59961 -6 5.2002 -8 7.09961z\" />\n    <glyph glyph-name=\"dribbble\" unicode=\"&#xf17d;\" horiz-adv-x=\"512\" \nd=\"M256 440c136.748 0 248 -111.252 248 -248s-111.252 -248 -248 -248s-248 111.252 -248 248s111.252 248 248 248zM419.97 325.634c-4.46582 -6.04102 -39.9629 -51.5459 -118.284 -83.5225c7.43652 -15.2217 12.8652 -27.5732 18.6172 -41.6143\nc70.4844 8.86426 140.519 -5.34082 147.502 -6.81836c-0.46582 49.998 -18.332 95.9092 -47.835 131.955zM396.421 350.13c-52.0947 46.2188 -122.885 63.6816 -190.061 47.4893c5.85449 -7.83984 44.3281 -60.2324 79.04 -124.008\nc75.3232 28.2324 107.211 71.0918 111.021 76.5186zM165.941 383.38c-59.2637 -27.9531 -103.562 -82.585 -117.298 -148.318c9.47461 -0.125 96.7471 -0.503906 195.834 25.8096c-35.0986 62.3926 -72.9512 114.85 -78.5361 122.509zM44.1699 191.677\nc0 -54.4072 20.624 -104.082 54.457 -141.636c34.3369 58.7793 103.932 120.731 180.531 142.306c-5.31738 12.0342 -11.1104 24.0811 -17.1738 35.9492c-105.786 -31.6592 -208.438 -30.3359 -217.706 -30.1455c-0.0654297 -2.15137 -0.108398 -4.30762 -0.108398 -6.47363\nzM125.977 24.5645c62.7539 -48.9355 144.656 -56.8955 212.769 -27.8828c-3.15039 18.585 -15.4492 83.3555 -45.1895 160.639c-85.4004 -29.1348 -145.452 -87.5234 -167.579 -132.756zM374.357 16.0752c47.5215 32.1338 81.3525 83.0371 90.7949 141.978\nc-7.24707 2.28711 -65.5674 19.6816 -131.947 9.05566c27.7061 -76.1367 38.9805 -138.147 41.1523 -151.033z\" />\n    <glyph glyph-name=\"skype\" unicode=\"&#xf17e;\" \nd=\"M424.7 148.2c14.5996 -18.9004 23.2998 -42.5 23.2002 -68.1006c0 -61.7998 -50.2002 -112 -112 -112c-25.6006 0 -49.2002 8.7002 -68.2002 23.3008c-14.1006 -3 -28.9004 -4.7002 -43.7998 -4.7002c-113.4 0 -205.301 91.7998 -205.301 205.3\nc0 14.9004 1.80078 29.7998 4.7002 43.7998c-14.5996 18.9004 -23.2998 42.5 -23.2998 68.2002c0 61.7998 50.2002 112 112 112c25.7002 0 49.2998 -8.7002 68.2998 -23.4004c14.1006 3 28.9004 4.7002 43.7998 4.7002c113.4 0 205.301 -91.7998 205.301 -205.3\nc0 -14.9004 -1.80078 -29.7998 -4.7002 -43.7998zM230.1 56.7002c54.9004 0 112 27.3994 112 86.5c0 50.7998 -49.2998 68.2998 -90.6992 77.5996c-48.3008 11.2002 -69.1006 13.2002 -69.1006 33c0 15.5 16.2998 22.5 42 22.5c45.7998 0 46.7002 -33.5 75 -33.5\nc18.9004 0 30.2998 14.9004 30.2998 31.7998c0 33.5 -55.6992 55.4004 -110.8 55.4004c-50.5 0 -109.1 -21.9004 -109.1 -81.0996c0 -65.2002 55.2998 -71.8008 117.8 -87.2002c26 -6.40039 42 -9.2998 42 -28c0 -14.9004 -16.5996 -26.2998 -42.2998 -26.2998\nc-54 0 -56.9004 44.8994 -88.1006 44.8994c-20.5 0 -29.5 -14.5996 -29.5 -30.5996c0 -35.7998 54.9004 -65 120.5 -65z\" />\n    <glyph glyph-name=\"foursquare\" unicode=\"&#xf180;\" horiz-adv-x=\"368\" \nd=\"M323.1 445c40 0 50.7002 -22.7998 42.2002 -65.2002l-48.5996 -243c-3.7002 -14.5 -9.2002 -39.7002 -44.2998 -39.7002h-83.4004c-3.40039 0 -3.7002 0.300781 -6.7998 -3.09961c0 0 -2.2002 -2.5 -131.101 -151.9\nc-10.0996 -11.6992 -26.6992 -9.59961 -32.8994 -7.09961c-6.10059 2.40039 -18.2002 9.7998 -18.2002 30.0996v433.801c0 17.7998 12.4004 46.0996 49.9004 46.0996h273.199zM306.8 371.2c2.10059 9.7998 -5.2998 17.5 -13.5 17.5h-219\nc-9.7998 0 -16.5996 -8.90039 -16.5996 -16.6006v-338.8c0 -0.899414 0.899414 -1.2002 1.7998 -0.299805c80.5996 96.9004 89.5 108.3 89.5 108.3c9.2998 10.7998 13 12.6006 26.5 12.6006h73.5c10.0996 0 16 8.59961 16.9004 13.5\nc0.899414 5 9.59961 49.8994 11.3994 58.7998c1.7998 9 -6.5 18.2002 -14.7998 18.2002h-90.4004c-12 0 -20.5996 8.59961 -20.5996 20.5996v13c0 12 8.59961 20.2998 20.5996 20.2998h106.4c7.40039 0 15.7002 6.7002 16.9004 13.2002z\" />\n    <glyph glyph-name=\"trello\" unicode=\"&#xf181;\" \nd=\"M392.3 416c30.7998 -0.200195 55.7002 -25.2002 55.6006 -56v-336c0 -30.7998 -24.9004 -55.7998 -55.7002 -56h-336.2c-30.9004 0 -56 25.0996 -56 56c0 340 -0.0996094 336 0 336c0 30.9004 25.0996 56 56.0996 56h336.2zM197 76.7002h0.0996094v254.2\nc0 14.8994 -12.0996 26.8994 -26.8994 26.8994h-82.9004c-14.8994 0 -26.8994 -12.0996 -26.8994 -26.8994v-254.2c0.0996094 -14.7998 12.1992 -26.7002 27 -26.6006h82.6992c14.8008 0 26.7002 11.9004 26.9004 26.6006zM390.1 188.7v142.1\nc0 14.9004 -12.0996 26.9004 -26.8994 26.9004h-81.1006c-14.7998 0 -26.7998 -12.1006 -26.7998 -26.9004v-142.1c0 -14.9004 12.1006 -26.9004 26.9004 -26.9004h81c14.8994 0 26.8994 12.1006 26.8994 26.9004z\" />\n    <glyph glyph-name=\"gratipay\" unicode=\"&#xf184;\" horiz-adv-x=\"496\" \nd=\"M248 440c136.9 0 248 -111.1 248 -248s-111.1 -248 -248 -248s-248 111.1 -248 248s111.1 248 248 248zM362.6 213.6c8.80078 12 19.1006 50.4004 -13.7998 72c-27.7002 18.1006 -54.2002 4.2002 -68.0996 -11.8994c-15.1006 -16.9004 -45.7998 -17.9004 -61.7002 0\nc-13.9004 16.0996 -40.4004 30 -68.5 11.8994c-32.7002 -21.5996 -22.2998 -60.0996 -13.5996 -72l112.699 -152.699z\" />\n    <glyph glyph-name=\"vk\" unicode=\"&#xf189;\" horiz-adv-x=\"576\" \nd=\"M545 330.3c-7.40039 -34.2998 -79.2998 -135.5 -79.4004 -135.6c-6.19922 -10 -8.69922 -15 0 -26.2002c3.40039 -4.7998 79.1006 -76.5996 90.3008 -111.5c4.89941 -16.5996 -3.60059 -25 -20.4004 -25h-58.9004c-22.3994 0 -29 17.9004 -69 57.9004\nc-35 33.6992 -50 38.0996 -58.6992 38.0996c-18.8008 0 -15.4004 -6.2998 -15.4004 -73.0996c0 -14.5 -4.59961 -22.9004 -42.0996 -22.9004c-62.4004 0 -131 37.9004 -179.7 107.8c-73.1006 102.4 -93.1006 179.9 -93.1006 195.5c0 8.7998 3.40039 16.7002 20.2002 16.7002\nh58.9004c15.0996 0 20.7998 -6.59961 26.5996 -22.9004c28.7998 -84 77.4004 -157.399 97.4004 -157.399c7.5 0 10.8994 3.5 10.8994 22.5v86.7998c-2.19922 40 -23.3994 43.2998 -23.3994 57.5c0 6.5 5.59961 13.5 15 13.5h92.5996\nc12.4004 0 16.6006 -6.7002 16.6006 -21.7002v-116.7c0 -12.5 5.69922 -16.8994 9.39941 -16.8994c7.5 0 13.7998 4.39941 27.5 18.0996c42.4004 47.4004 72.4004 120.5 72.4004 120.5c3.7002 8.7998 10.5996 16.7002 25.5996 16.7002h58.9004\nc17.7998 0 21.5 -9.2002 17.7998 -21.7002z\" />\n    <glyph glyph-name=\"weibo\" unicode=\"&#xf18a;\" horiz-adv-x=\"512\" \nd=\"M407 270.4c7.59961 24 -13.4004 46.7998 -37.4004 41.6992c-22 -4.7998 -28.7998 28.1006 -7.09961 32.8008c50.0996 10.8994 92.2998 -37.1006 76.5 -84.8008c-6.7998 -21.1992 -38.7998 -10.7998 -32 10.3008zM214.8 1.2998c-106.3 0 -214.8 51.4004 -214.8 136.3\nc0 44.3008 28 95.4004 76.2998 143.7c99.7002 99.7002 203.2 100.9 173.601 5.7002c-4 -13.0996 12.2998 -5.7002 12.2998 -6c79.5 33.5996 140.5 16.7998 114 -51.4004c-3.7002 -9.39941 1.09961 -10.8994 8.2998 -13.0996c135.7 -42.2998 34.7998 -215.2 -169.7 -215.2z\nM358.5 147.6c-5.40039 55.7002 -78.5 94 -163.4 85.7002c-84.7998 -8.59961 -148.8 -60.2998 -143.399 -116c5.39941 -55.7002 78.5 -94 163.399 -85.7002c84.8008 8.60059 148.801 60.3008 143.4 116zM347.9 412.9c102.3 21.5996 189.3 -74.5 157.399 -174.301\nc-8.2998 -25 -44.7998 -12.1992 -37.3994 12c23.0996 71.2002 -39.4004 139.2 -111.7 124c-25.1006 -5.39941 -34.2002 32.7002 -8.2998 38.3008zM269.4 101.9c-17.1006 -38.8008 -66.8008 -60 -109.101 -46.3008c-40.7998 13.1006 -58 53.4004 -40.2998 89.7002\nc17.7002 35.4004 63.0996 55.4004 103.4 45.1006c42 -10.8008 63.0996 -50.2002 46 -88.5zM183.1 131.9c-12.8994 5.39941 -30 -0.300781 -38 -12.9004c-8.2998 -12.9004 -4.2998 -28 8.60059 -34c13.0996 -6 30.7998 -0.299805 39.0996 12.9004\nc8 13.0996 3.7002 28.2998 -9.7002 34zM215.7 145.3c-5.10059 1.7002 -11.4004 -0.599609 -14.2998 -5.39941c-2.90039 -5.10059 -1.40039 -10.6006 3.69922 -12.9004c5.10059 -2 11.7002 0.299805 14.6006 5.40039c2.7998 5.19922 1.09961 10.8994 -4 12.8994z\" />\n    <glyph glyph-name=\"renren\" unicode=\"&#xf18b;\" horiz-adv-x=\"512\" \nd=\"M214 278.9c0 -110.4 -61 -205.4 -147.6 -247.4c-36.4004 43.2998 -58.4004 98.7998 -58.4004 159.9c0 122.699 89.0996 224.399 206 244.1v-156.6zM255 -56c-42.9004 0 -83.2998 11 -118.5 30.4004c57.2002 36.0996 103.4 90.6992 118.5 154.6\nc15.5 -63.9004 61.7002 -118.5 118.8 -154.7c-35.0996 -19.2998 -75.5 -30.2998 -118.8 -30.2998zM445.6 31.5c-86.5996 42 -147.6 136.9 -147.6 247.4v156.6c116.9 -19.7002 206 -121.4 206 -244.1c0 -61.1006 -22 -116.601 -58.4004 -159.9z\" />\n    <glyph glyph-name=\"pagelines\" unicode=\"&#xf18c;\" horiz-adv-x=\"384\" \nd=\"M384 135.3c-55.0996 -136.7 -187.1 -54 -187.1 -54c-40.5 -81.7998 -107.4 -134.399 -184.601 -134.7c-16.0996 0 -16.5996 24.4004 0 24.4004c64.4004 0.299805 120.5 42.7002 157.2 110.1c-41.0996 -15.8994 -118.6 -27.8994 -161.6 82.2002\nc109 44.9004 159.1 -11.2002 178.3 -45.5c9.89941 24.4004 17 50.9004 21.5996 79.7002c0 0 -139.7 -21.9004 -149.5 98.0996c119.101 47.9004 152.601 -76.6992 152.601 -76.6992c1.59961 16.6992 3.2998 52.5996 3.2998 53.3994c0 0 -106.3 73.7002 -38.1006 165.2\nc124.601 -43 61.4004 -162.4 61.4004 -162.4c0.5 -1.59961 0.5 -23.7998 0 -33.3994c0 0 45.2002 89 136.4 57.5c-4.2002 -134 -141.9 -106.4 -141.9 -106.4c-4.40039 -27.3994 -11.2002 -53.3994 -20 -77.5c0 0 83 91.7998 172 20z\" />\n    <glyph glyph-name=\"stack-exchange\" unicode=\"&#xf18d;\" \nd=\"M17.7002 115.7h412.7v-22c0 -37.7002 -29.3008 -68 -65.3008 -68h-19l-86.7998 -89.7002v89.7002h-176.3c-36 0 -65.2998 30.2998 -65.2998 68v22zM17.7002 139.3v85h412.7v-85h-412.7zM17.7002 248.7v85h412.7v-85h-412.7zM365 448\nc36 0 65.2998 -30.2998 65.4004 -67.7002v-22.2998h-412.7v22.2998c0 37.4004 29.2998 67.7002 65.2998 67.7002h282z\" />\n    <glyph glyph-name=\"vimeo-square\" unicode=\"&#xf194;\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM383.8 266.4c1.90039 41.5996 -13.5996 63 -46.5 64c-44.2998 1.39941 -74.3994 -23.6006 -90.0996 -75.1006\nc19.5996 8.40039 48.5996 10.6006 45.2002 -22.2002c-0.900391 -11.0996 -8.10059 -27.0996 -21.5 -48.2998c-37.2002 -58.7002 -46.3008 -39.0996 -66.8008 90.5c-5.7998 36.5 -21.0996 53.5 -46 51.1006c-22 -2 -57.1992 -38 -94.0996 -70.4004l15 -19.4004\nc14.2998 10.1006 22.7002 15.1006 25.0996 15.1006c20.8008 0 31.5 -54.1006 56.7002 -146.4c12.9004 -34.3994 28.6006 -51.5996 47.2998 -51.5996c30.1006 0 66.9004 28.2998 110.4 84.7998c42.0996 54.0996 63.9004 96.7998 65.2998 127.9z\" />\n    <glyph glyph-name=\"slack\" unicode=\"&#xf198;\" \nd=\"M94.1201 132.9c0 -25.9004 -21.1602 -47.0605 -47.0605 -47.0605c-25.8994 0 -47.0596 21.1602 -47.0596 47.0605c0 25.8994 21.1602 47.0596 47.0596 47.0596h47.0605v-47.0596zM117.84 132.9c0 25.8994 21.1602 47.0596 47.0605 47.0596\nc25.8994 0 47.0596 -21.1602 47.0596 -47.0596v-117.841c0 -25.8994 -21.1602 -47.0596 -47.0596 -47.0596c-25.9004 0 -47.0605 21.1602 -47.0605 47.0596v117.841zM164.9 321.88c-25.9004 0 -47.0605 21.1602 -47.0605 47.0605c0 25.8994 21.1602 47.0596 47.0605 47.0596\nc25.8994 0 47.0596 -21.1602 47.0596 -47.0596v-47.0605h-47.0596zM164.9 298.16c25.8994 0 47.0596 -21.1602 47.0596 -47.0605c0 -25.8994 -21.1602 -47.0596 -47.0596 -47.0596h-117.841c-25.8994 0 -47.0596 21.1602 -47.0596 47.0596\nc0 25.9004 21.1602 47.0605 47.0596 47.0605h117.841zM353.88 251.1c0 25.9004 21.1602 47.0605 47.0605 47.0605c25.8994 0 47.0596 -21.1602 47.0596 -47.0605c0 -25.8994 -21.1602 -47.0596 -47.0596 -47.0596h-47.0605v47.0596zM330.16 251.1\nc0 -25.8994 -21.1602 -47.0596 -47.0605 -47.0596c-25.8994 0 -47.0596 21.1602 -47.0596 47.0596v117.841c0 25.8994 21.1602 47.0596 47.0596 47.0596c25.9004 0 47.0605 -21.1602 47.0605 -47.0596v-117.841zM283.1 62.1201c25.9004 0 47.0605 -21.1602 47.0605 -47.0605\nc0 -25.8994 -21.1602 -47.0596 -47.0605 -47.0596c-25.8994 0 -47.0596 21.1602 -47.0596 47.0596v47.0605h47.0596zM283.1 85.8398c-25.8994 0 -47.0596 21.1602 -47.0596 47.0605c0 25.8994 21.1602 47.0596 47.0596 47.0596h117.841\nc25.8994 0 47.0596 -21.1602 47.0596 -47.0596c0 -25.9004 -21.1602 -47.0605 -47.0596 -47.0605h-117.841z\" />\n    <glyph glyph-name=\"wordpress\" unicode=\"&#xf19a;\" horiz-adv-x=\"512\" \nd=\"M61.7002 278.6l101.5 -278c-71 34.4004 -119.9 107.2 -119.9 191.4c0 30.9004 6.60059 60.0996 18.4004 86.5996zM399.6 202.7c0 -18.2002 -7 -39.2998 -16 -68.7002l-21.1992 -70.9004l-76.9004 228.7c12.7998 0.700195 24.2998 2 24.2998 2\nc11.4004 1.2998 10.1006 18.2002 -1.39941 17.5c0 0 -34.5 -2.7002 -56.7002 -2.7002c-20.9004 0 -56 2.7002 -56 2.7002c-11.4004 0.700195 -12.7998 -16.7998 -1.2998 -17.5c0 0 10.7998 -1.2998 22.2998 -2l33.0996 -90.7998l-46.5996 -139.6l-77.5 230.399\nc12.7998 0.700195 24.2998 2 24.2998 2c11.4004 1.2998 10.0996 18.2002 -1.40039 17.5c0 0 -34.5 -2.7002 -56.6992 -2.7002c-4 0 -8.7002 0.100586 -13.7002 0.300781c38.0996 57.7998 103.5 95.8994 177.8 95.8994c55.4004 0 105.8 -21.2002 143.7 -55.8994\nc-1 0.0996094 -1.90039 0.199219 -2.7998 0.199219c-20.9004 0 -35.7002 -18.1992 -35.7002 -37.7998c0 -17.5 10.0996 -32.3994 20.8994 -49.8994c8.10059 -14.2002 17.5 -32.4004 17.5 -58.7002zM259.7 173.4l65.3994 -179.2c0.400391 -1 0.900391 -2 1.5 -2.90039\nc-22.0996 -7.7998 -45.7998 -12.0996 -70.5996 -12.0996c-20.9004 0 -41 3.09961 -60.0996 8.7002zM442.7 294.1c16.5996 -30.2998 26 -65.0996 26 -102.1c0 -78.5 -42.5 -147 -105.8 -183.9l65 187.9c12.1992 30.4004 16.1992 54.5996 16.1992 76.2002\nc0 7.89941 -0.5 15.0996 -1.39941 21.8994zM504 192c0 -136.8 -111.3 -248 -248 -248c-136.8 0 -248 111.3 -248 248c0 136.8 111.2 248 248 248c136.7 0 248 -111.2 248 -248zM492.6 192c0 130.5 -106.199 236.6 -236.6 236.6c-130.5 0 -236.6 -106.1 -236.6 -236.6\ns106.199 -236.6 236.6 -236.6c130.5 0 236.6 106.1 236.6 236.6z\" />\n    <glyph glyph-name=\"openid\" unicode=\"&#xf19b;\" \nd=\"M271.5 16l-68 -32c-115 10.2998 -203.5 71.5 -203.5 145.8c0 71.5 82.5 131 191.7 144.3v-43c-71.5 -12.5 -124 -53 -124 -101.3c0 -51 58.5 -93.2998 135.7 -103v340l68 33.2002v-384h0.0996094zM448 157l-131.3 28.5l36.7998 20.7002c-19.5 11.5 -43.5 20 -70 24.7998\nv43c46.2002 -5.5 87.7002 -19.5 120.3 -39.2998l35 19.7998z\" />\n    <glyph glyph-name=\"yahoo\" unicode=\"&#xf19e;\" \nd=\"M252 156l4 -220c-12.7002 2.2002 -23.5 3.90039 -32.2998 3.90039c-8.40039 0 -19.2002 -1.7002 -32.2998 -3.90039l4 220c-55 94.7998 -110.4 196.8 -174 292c11.8994 -3.09961 23 -3.90039 33.1992 -3.90039c9 0 20.4004 0.800781 34.1006 3.90039\nc40.8994 -72.2002 82.0996 -138.7 135 -225.5c37.2998 61.5996 91.0996 144.1 134.899 225.5c11.1006 -2.90039 22 -3.90039 32.9004 -3.90039c11.5 0 23.2002 1 35 3.90039c-34.4004 -47.9004 -131.6 -216.9 -174.5 -292z\" />\n    <glyph glyph-name=\"google\" unicode=\"&#xf1a0;\" horiz-adv-x=\"488\" \nd=\"M488 186.2c0 -141.5 -96.9004 -242.2 -240 -242.2c-137.2 0 -248 110.8 -248 248s110.8 248 248 248c66.7998 0 123 -24.5 166.3 -64.9004l-67.5 -64.8994c-88.2998 85.2002 -252.5 21.2002 -252.5 -118.2c0 -86.5 69.1006 -156.6 153.7 -156.6\nc98.2002 0 135 70.3994 140.8 106.899h-140.8v85.2998h236.1c2.30078 -12.6992 3.90039 -24.8994 3.90039 -41.3994z\" />\n    <glyph glyph-name=\"reddit\" unicode=\"&#xf1a1;\" horiz-adv-x=\"512\" \nd=\"M201.5 142.5c-13.7998 0 -24.9004 11.0996 -24.9004 24.5996c0 13.8008 11.1006 24.9004 24.9004 24.9004c13.5996 0 24.5996 -11.0996 24.5996 -24.9004c0 -13.5996 -11.0996 -24.5996 -24.5996 -24.5996zM504 192c0 -137 -111 -248 -248 -248s-248 111 -248 248\ns111 248 248 248s248 -111 248 -248zM371.7 233.2c-9.40039 0 -17.7002 -3.90039 -23.7998 -10c-22.4004 15.5 -52.6006 25.5 -86.1006 26.5996l17.4004 78.2998l55.3994 -12.5c0 -13.5996 11.1006 -24.5996 24.6006 -24.5996c13.7998 0 24.8994 11.2998 24.8994 24.9004\nc0 13.5996 -11.0996 24.8994 -24.8994 24.8994c-9.7002 0 -18 -5.7998 -22.1006 -13.7998l-61.1992 13.5996c-3 0.800781 -6.10059 -1.39941 -6.90039 -4.39941l-19.0996 -86.4004c-33.2002 -1.39941 -63.1006 -11.2998 -85.5 -26.7998\nc-6.10059 6.40039 -14.7002 10.2002 -24.1006 10.2002c-34.8994 0 -46.2998 -46.9004 -14.3994 -62.7998c-1.10059 -5 -1.7002 -10.2002 -1.7002 -15.5c0 -52.6006 59.2002 -95.2002 132 -95.2002c73.0996 0 132.3 42.5996 132.3 95.2002\nc0 5.2998 -0.599609 10.7998 -1.90039 15.7998c31.3008 16 19.8008 62.5 -14.8994 62.5zM302.8 117c2.2002 2.2002 6.10059 2.2002 8.2998 0c2.5 -2.5 2.5 -6.40039 0 -8.59961c-22.8994 -22.8008 -87.3994 -22.8008 -110.199 0c-2.5 2.19922 -2.5 6.09961 0 8.59961\nc2.19922 2.2002 6.09961 2.2002 8.2998 0c17.5 -17.9004 75.3994 -18.2002 93.5996 0zM310.5 192c13.9004 0 24.9004 -11.0996 24.9004 -24.9004c0 -13.5 -11.1006 -24.5996 -24.9004 -24.5996c-13.5 0 -24.5996 11 -24.5996 24.5996c0 13.8008 11 24.9004 24.5996 24.9004z\n\" />\n    <glyph glyph-name=\"reddit-square\" unicode=\"&#xf1a2;\" \nd=\"M283.2 102.5c2.7002 -2.7002 2.7002 -6.7998 0 -9.2002c-24.5 -24.5 -93.7998 -24.5996 -118.4 0c-2.7002 2.40039 -2.7002 6.5 0 9.2002c2.40039 2.40039 6.5 2.40039 8.90039 0c18.7002 -19.2002 81 -19.5996 100.5 0c2.39941 2.2998 6.59961 2.2998 9 0zM191.9 156.3\nc0 -14.5996 -11.9004 -26.5 -26.5 -26.5c-14.9004 0 -26.8008 11.9004 -26.8008 26.5c0 14.9004 11.9004 26.7998 26.8008 26.7998c14.5996 0 26.5 -11.8994 26.5 -26.7998zM282.6 183.1c14.9004 0 26.8008 -11.8994 26.8008 -26.7998\nc0 -14.5996 -11.9004 -26.5 -26.8008 -26.5c-14.5996 0 -26.5 11.9004 -26.5 26.5c0 14.9004 11.9004 26.7998 26.5 26.7998zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM348.3 227.4\nc-10.0996 0 -19 -4.2002 -25.5996 -10.7002c-24.1006 16.7002 -56.5 27.3994 -92.5 28.5996l18.7002 84.2002l59.5 -13.4004c0 -14.5996 11.8994 -26.5 26.5 -26.5c14.8994 0 26.7998 12.2002 26.7998 26.8008c0 14.5996 -11.9004 26.7998 -26.7998 26.7998\nc-10.4004 0 -19.3008 -6.2002 -23.8008 -14.9004l-65.6992 14.6006c-3.30078 0.899414 -6.5 -1.5 -7.40039 -4.80078l-20.5 -92.7998c-35.7002 -1.5 -67.7998 -12.2002 -91.9004 -28.8994c-6.5 6.7998 -15.7998 11 -25.8994 11c-37.5 0 -49.7998 -50.4004 -15.5 -67.5\nc-1.2002 -5.40039 -1.7998 -11 -1.7998 -16.7002c0 -56.5 63.6992 -102.3 141.899 -102.3c78.5 0 142.2 45.7998 142.2 102.3c0 5.7002 -0.599609 11.5996 -2.09961 17c33.5996 17.2002 21.1992 67.2002 -16.1006 67.2002z\" />\n    <glyph glyph-name=\"stumbleupon-circle\" unicode=\"&#xf1a3;\" horiz-adv-x=\"496\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM256 262.5c9.7998 0 17.7998 -8 17.7002 -17.5996v-20.6006l22.8994 -10.7002l34.1006 10.1006v23.7002c0 40.2998 -34 72.5996 -74.7002 72.5996\nc-40.5 0 -74.7002 -32.0996 -74.7002 -72.0996v-108.4c0 -9.90039 -8 -17.7998 -17.7998 -17.7998s-17.7998 7.7998 -17.7998 17.7998v45.7998h-57.2998v-46.5c0 -41.3994 33.5 -74.8994 74.8994 -74.8994c41 0 74.9004 33 74.9004 73.8994v106.9\nc0 9.7998 8 17.7998 17.7998 17.7998zM423.6 138.9c0 0 0 0.5 0.100586 46.3994h-57.2998v-48c0 -9.7002 -8 -17.5996 -17.8008 -17.5996c-9.7998 0 -17.7998 7.7998 -17.7998 17.5996v47.1006l-34.0996 -10.1006l-22.9004 10.7002v-46.7998\nc0 -41 33.7002 -74.2002 74.9004 -74.2002c41.3994 0 74.8994 33.5 74.8994 74.9004z\" />\n    <glyph glyph-name=\"stumbleupon\" unicode=\"&#xf1a4;\" horiz-adv-x=\"512\" \nd=\"M502.9 182v-69.7002c0 -62.0996 -50.3008 -112.399 -112.4 -112.399c-61.7998 0 -112.4 49.7998 -112.4 111.3v70.2002l34.3008 -16l51.0996 15.1992v-70.5996c0 -14.7002 12 -26.5 26.7002 -26.5s26.7998 11.7998 26.7998 26.5v72h85.9004zM278.2 240.2v30.8994\nc0 14.7002 -12 26.7002 -26.7002 26.7002s-26.7002 -12 -26.7002 -26.7002v-160.3c0 -61.2998 -50.7998 -110.8 -112.399 -110.8c-62.1006 0 -112.4 50.2998 -112.4 112.3v69.7002h86v-68.5996c0 -14.9004 12 -26.7002 26.7002 -26.7002s26.7002 11.7998 26.7002 26.7002\nv162.399c0 60 51.2998 108.2 112.1 108.2c61 0 112.1 -48.5 112.1 -109v-35.5996l-51.0996 -15.2002z\" />\n    <glyph glyph-name=\"delicious\" unicode=\"&#xf1a5;\" \nd=\"M446.5 380c1 -3.7998 1.5 -7.90039 1.59961 -12v-352.1c0 -26.5 -21.5 -48 -48 -48h-352c-4.09961 0 -8.19922 0.5 -12 1.5c-7.69922 2 -14.5996 5.7998 -20.2998 11c-1.2002 1.09961 -2.2998 2.19922 -3.2998 3.2998c-5.2002 5.7002 -9 12.5996 -11 20.2998\nc-1 3.7998 -1.5 7.90039 -1.5 12v352c0 26.5 21.5 48 48 47.9004h352c4.09961 0 8.2002 -0.5 12 -1.5c1.90039 -0.400391 3.7002 -1 5.40039 -1.7002c1.89941 -0.700195 3.69922 -1.5 5.5 -2.5c1.39941 -0.700195 2.69922 -1.5 4 -2.40039\nc1.09961 -0.799805 2.19922 -1.59961 3.2998 -2.5c2.5 -2 4.7998 -4.2998 6.89941 -6.7998c1.7002 -2.09961 3.30078 -4.5 4.7002 -6.90039c1.2998 -2.2998 2.40039 -4.59961 3.2998 -7.09961c0.5 -1.5 1 -3 1.40039 -4.5zM416 16v176h-192v192h-176\nc-8.7998 0 -16 -7.2002 -16 -16v-176h192v-192h176c8.7998 0 16 7.2002 16 16z\" />\n    <glyph glyph-name=\"digg\" unicode=\"&#xf1a6;\" horiz-adv-x=\"512\" \nd=\"M81.7002 275.7v76.2998h51v-250.7h-132.7v174.4h81.7002zM81.7002 142.3v92.2998h-30.7998v-92.2998h30.7998zM378.9 275.7h133.1v-243.7h-133.1v40.7998h81.7998v28.5h-81.7998v174.4zM460.7 142.3v92.2998h-30.7998v-92.2998h30.7998zM225.1 101.3v174.4h133.301\nv-243.7h-133.301v40.7998h82.1006v28.5h-82.1006zM276.3 234.6v-92.2998h30.7998v92.2998h-30.7998zM153.3 352h51.2998v-51h-51.2998v51zM153.3 275.7h51.2998v-174.4h-51.2998v174.4z\" />\n    <glyph glyph-name=\"pied-piper-pp\" unicode=\"&#xf1a7;\" \nd=\"M205.3 273.4c0 -21.1006 -14.2002 -38.1006 -31.7002 -38.1006c-7.09961 0 -12.7998 1.2002 -17.1992 3.7002v68c4.39941 2.7002 10.0996 4.2002 17.1992 4.2002c17.5 0 31.7002 -16.9004 31.7002 -37.7998zM257.9 206.4c17.3994 0 31.6992 -17 31.6992 -38.1006\nc0 -20.8994 -14.2998 -37.7998 -31.6992 -37.7998c-7.10059 0 -12.8008 1.2002 -17.2002 3.7002v68c4.39941 2.7002 10.0996 4.2002 17.2002 4.2002zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352\nc26.5 0 48 -21.5 48 -48zM185 192.9c41 0 74.2002 35.5996 74.2002 79.5996s-33.2002 79.5996 -74.2002 79.5996c-12 0 -24.0996 -3.19922 -34.5996 -8.7998h-45.7002v-206.3l51.7998 10.0996v50.6006c8.59961 -3.10059 18.0996 -4.7998 28.5 -4.7998zM343.4 167.6\nc0 44 -33.2002 79.6006 -73.9004 79.6006c-3.2002 0 -6.40039 -0.200195 -9.59961 -0.700195c-3.7002 -12.5 -10.1006 -23.7998 -19.2002 -33.4004c-13.7998 -15 -32.2002 -23.7998 -51.7998 -24.7998v-156.3l51.7998 10.0996v50.6006\nc8.59961 -3.2002 18.2002 -4.7002 28.7002 -4.7002c40.7998 0 74 35.5996 74 79.5996z\" />\n    <glyph glyph-name=\"pied-piper-alt\" unicode=\"&#xf1a8;\" horiz-adv-x=\"576\" \nd=\"M244 202l-27.7002 -5.7002l-1.7002 4.90039c6.7002 0.5 12.7002 3.7002 19.3008 3.7002c3.7998 0 6.89941 -0.900391 10.0996 -2.90039zM379.9 4.09961c9.5 0 28.1992 -45.0996 33 -55.0996c-35.9004 -13.4004 -70.3008 -15.9004 -106 -9.7998l-6.90039 45.0996\nc15.7998 10.2998 60.9004 19.7998 79.9004 19.7998zM340.8 271c-7.59961 3.5 -63.8994 6.40039 -98.7998 -10c6.2998 11.7998 13.2002 17 25.9004 21.7998c27.2998 10.2998 40.1992 30.5 58.8994 51.1006c11.9004 -8.40039 12 -24.6006 31.6006 -23v-21.8008\nl6.2998 -0.299805c37.3994 14.4004 74.7002 30.2002 106.6 54.6006c48.2998 36.7998 52.9004 50 81.2998 100l2 2.59961c-0.599609 -14.0996 -6.2998 -27.2998 -12.3994 -39.9004c-30.5 -63.7998 -78.7002 -100.3 -146.8 -116.699\nc-12.4004 -2.90039 -26.4004 -3.2002 -37.6006 -8.90039c1.40039 -9.7998 13.2002 -18.0996 13.2002 -23c0 -3.40039 -5.5 -7.2002 -7.5 -8.59961c-11.2002 12.8994 -16.0996 19.2998 -22.7002 22.0996zM555.5 448l-0.299805 -1.40039l-0.600586 -0.599609\nl0.300781 0.900391zM496.3 65.9004c20.1006 -34.2002 43.7002 -54.3008 72.7002 -79.9004c-31 -19.2998 -70.4004 -32.2002 -103.5 -47.2002c-55.2002 46.2998 -23 229.9 -111.5 229.9c-3.5 -0.700195 -2.40039 -0.299805 -4.59961 -1.7002\nc1.09961 -1.40039 2.59961 -2.90039 3.69922 -4c23.9004 -20.0996 33.4004 -24.4004 34.8008 -58.5996l0.299805 -9.5c0.799805 -21.6006 -5.5 -42.5 -9.7998 -63.5c-25.9004 0.699219 -51.2002 -11 -77.9004 -2.90039c-0.700195 5.90039 -1.09961 30.9004 0.299805 41.0996\nc1.40039 9.5 33.6006 29.9004 33 43.7002c-5.5 0.600586 -9.2002 -2.59961 -12.3994 -6.89941c-13.3008 -19.5 -47.2002 -41.9004 -71.3008 -41.9004c-16.5996 0 -56.2998 71.5 -76.3994 85.9004c-3.2002 2.2998 -5.2002 5.39941 -7.7998 8.59961\nc-16.1006 -3.7998 -139.4 -32.2002 -147.4 -32.2002c-6 0 -11.5 4.90039 -11.5 10.9004c0 5.5 3.40039 10.7002 8.90039 11.7998l139.6 30.4004c-9.5 17.1992 12.2998 17.5 21.5 20.0996c3.2002 0.799805 6.2998 4 9.5 4c6.2998 0 11.7998 -8.90039 13.7998 -14.0996\nc6.2998 1.39941 45.7002 10.5996 49.4004 10.5996c15.2002 0 15.8994 -20.0996 2.89941 -22.7002l-52.2998 -11.5l-0.299805 -4.59961c-0.299805 -10.1006 45.4004 -60.1006 53.4004 -60.1006c18.0996 0 54.8994 41.7002 54.8994 60.1006\nc0 30.7002 -42.7998 12.5996 -42.7998 33.5996c0 3.5 1.2002 6.60059 2.90039 9.7998l-19.5 5.5c13.0996 13.6006 13.7998 31.7002 10.8994 50.3008c14.7002 2.89941 26.7002 4.59961 41.4004 4.59961c56.8994 0 45.7002 -8.59961 65.5 -54.2998l14.3994 7.2002\nc-2.2998 -34.2002 -36.1992 -17.5 -35.0996 -31l0.299805 -6c74.7002 2.89941 116.101 -58.6006 150 -115.5zM300.1 19.7998h8.90039l2.90039 -23.7998l-11.8008 -3.40039v27.2002zM231.4 170.2l13.7998 3.5l31.2998 -50.9004l-21 -13.7998zM315.8 15.2998\nc22.6006 2.5 32.7002 6.2998 59.5 6.2998c0.299805 -1.39941 0.900391 -3.19922 0.900391 -4.59961c0 -7.5 -49.4004 -12.5996 -58.4004 -14.0996z\" />\n    <glyph glyph-name=\"drupal\" unicode=\"&#xf1a9;\" \nd=\"M319.5 333.3c13.5 -8.2998 96.5 -67 96.5 -179.3c0 -112 -88.5 -186 -190.2 -186c-102 0 -193.8 80.2998 -193.8 189.5c0 109 85 167.5 100.8 175.8c18.7002 10.1006 32.2002 15.2998 53.5 32.2998c10.5 8.30078 19.2998 20.2002 22 49.5\nc15.2002 -18.2998 33.5 -39.5 46.5 -48.2998c21.2002 -14 42.5 -19.5 64.7002 -33.5zM322 7.7002c4.2002 4.2002 1.90039 13.0996 -4.2002 8.5c-8.5 -6.2998 -27.5 -14 -54.5 -14c-34.5 0 -51.5 13.2998 -51.5 13.2998c-6.2002 0 -11.2998 -7.2002 -6.5 -12\nc26.6006 -24.5 96.6006 -15.9004 116.7 4.2002zM267.5 60.2998c-6.5 -2.7002 -28.4004 -16.7998 -22.4004 -25c2.40039 -3.2998 5.2002 -1.2998 12.2002 4.7002c7.2002 5.7998 12 11 26.7002 11c25.2998 0 18.0996 -19.9004 26.5 -15.7002\nc9.90039 4.90039 -2.09961 20.9004 -6.2002 23.7002c-7.7998 5.09961 -28.0996 4.90039 -36.7998 1.2998zM360 43c39.0996 -3.2998 64.5 106 15.7998 106c-20 0 -60.5 -41.5 -81.7998 -41.7998c-24.7002 -0.5 -59 49 -108.5 48.5\nc-66.4004 -0.400391 -90.5996 -78.6006 -51.7998 -105.2c57.2002 -38.7002 130.399 42.9004 161.3 42c19.5 -0.700195 49.7998 -48.5 65 -49.5z\" />\n    <glyph glyph-name=\"joomla\" unicode=\"&#xf1aa;\" \nd=\"M0.599609 355.9c0 33.2998 26.8008 60.0996 59.8008 60.0996c30 0 54.5 -21.9004 59.1992 -50.2002c32.6006 7.60059 67.1006 -0.599609 96.5 -30l-44.2998 -44.2998c-20.5 20.5 -42.5996 16.2998 -55.3994 3.5c-14.3008 -14.2998 -14.3008 -37.9004 0 -52.2002\nl99.5 -99.5l-44 -44.2998c-87.7002 87.2002 -49.7002 49.7002 -99.8008 99.7002c-26.7998 26.5 -35 64.7998 -24.7998 98.8994c-26.8994 5.80078 -46.7002 29.7002 -46.7002 58.3008zM130.1 239.5c28.5 28.4004 81.3008 80.7998 99.6006 99.9004\nc26.5996 26.5996 64.5 35 98.2998 25.0996c4.09961 29.0996 29.2002 51.5996 59.5 51.5996c33 0 59.7998 -26.8994 59.7998 -60.0996c0 -30.2998 -22.7002 -55.4004 -51.8994 -59.5c9.59961 -33.5996 2.2998 -70 -28.9004 -101.2l-44 44.2998\nc20.5 20.4004 16.2998 42.6006 3.5 55.4004c-14.2998 14.2998 -37.5996 14.2998 -51.9004 0c-10 -10.0996 -89.6992 -89.7998 -99.6992 -99.7998zM396.4 87.2998c29.0996 -4.09961 51.5996 -28.8994 51.5996 -59.0996c0 -33.2998 -26.7998 -60.1006 -59.7998 -60.1006\nc-29.2002 0 -53.4004 20.7002 -58.9004 48.1006c-34.7002 -10.7998 -75.0996 -2.2002 -102.7 28l44 44.2998c20.4004 -20.5 42.6006 -16.2998 55.4004 -3.5c14.2998 14.2998 14.2998 37.5996 0 51.9004l-99.7002 99.6992l44.2998 44.3008\nc104.5 -104.4 87.7002 -87.5 99.5 -99.7002c25.4004 -25.4004 34.5 -61.2002 26.3008 -93.9004zM312.1 140.4c-87.2998 -87.3008 -67.3994 -67.7002 -99.5 -99.7002c-25.6992 -25.4004 -61.5 -34.2002 -94.1992 -26c-6.10059 -26.9004 -30 -46.7002 -58.6006 -46.7002\nc-33 0 -59.7998 26.7998 -59.7998 60.0996c0 28.3008 19.5 52.2002 46.2002 58.2002c-8.5 33.1006 -0.700195 68.1006 29.5 98.2998l44 -44.2998c-20.1006 -20.0996 -16.2998 -42 -3.2002 -55.3994c14.2998 -14.3008 37.5996 -14.3008 51.9004 0\nc49.2998 49.3994 12.6992 13.3994 99.6992 99.7998z\" />\n    <glyph glyph-name=\"behance\" unicode=\"&#xf1b4;\" horiz-adv-x=\"576\" \nd=\"M232 210.8c43.5996 -12.2998 64.7002 -45.2002 64.7002 -89.7002c0 -72 -60.5 -102.899 -124.9 -102.899h-171.8v354.399h167.1c60.7002 0 113.301 -17.1992 113.301 -87.7998c0 -35.7998 -16.6006 -58.7998 -48.4004 -74zM77.9004 312.1v-82.6992h79\nc27.7998 0 47.5 12.0996 47.5 42.1992c0 32.6006 -25.3008 40.5 -53.4004 40.5h-73.0996zM161.2 78.4004c31.7002 0 57.5996 11.1992 57.5996 47c0 36.2998 -21.7002 50.5996 -56 50.5996h-84.8994v-97.5996h83.2998zM519.7 319.1h-143.7v34.9004h143.7v-34.9004zM576 142.8\nc0 -4.5 -0.299805 -9 -0.599609 -13.2002h-185.101c0 -41.0996 21.7002 -65.2998 63 -65.2998c21.4004 0 49 11.6006 55.7002 33.5h62.2002c-19.1006 -58.7002 -58.7998 -86.2998 -120.101 -86.2998c-81 0 -131.3 54.7998 -131.3 134.7c0 77 53.1006 135.8 131.3 135.8\nc80.5 0 124.9 -63.2998 124.9 -139.2zM390.4 174h114.699c-3 34 -20.7998 54.7998 -56.1992 54.7998c-33.8008 0 -56.2002 -21.0996 -58.5 -54.7998z\" />\n    <glyph glyph-name=\"behance-square\" unicode=\"&#xf1b5;\" \nd=\"M186.5 155c0 -19.2998 -14 -25.4004 -31.2002 -25.4004h-45.0996v52.9004h46c18.5996 -0.0996094 30.2998 -7.7998 30.2998 -27.5zM178.8 237.3c0 -16.2998 -10.7002 -22.8994 -25.7998 -22.8994h-42.7002v44.7998h39.6006c15.1992 0 28.8994 -4.2002 28.8994 -21.9004z\nM311.1 214.1c19.2002 0 28.8008 -11.1992 30.5 -29.6992h-62.1992c1.19922 18.2998 13.3994 29.6992 31.6992 29.6992zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM271.7 263h77.7998\nv18.9004h-77.7998v-18.9004zM228.7 152.7c0 24.0996 -11.4004 44.8994 -35 51.5996c17.2002 8.2002 26.2002 17.7002 26.2002 37c0 38.2002 -28.5 47.5 -61.4004 47.5h-90.5v-192h93.0996c34.9004 0.200195 67.6006 16.9004 67.6006 55.9004zM380 167.5\nc0 41.0996 -24.0996 75.4004 -67.5996 75.4004c-42.4004 0 -71.1006 -31.8008 -71.1006 -73.6006c0 -43.2998 27.2998 -73 71.1006 -73c33.1992 0 54.6992 14.9004 65.0996 46.7998h-33.7002c-3.7002 -11.8994 -18.5996 -18.0996 -30.2002 -18.0996\nc-22.3994 0 -34.0996 13.0996 -34.0996 35.2998h100.2c0.0996094 2.2998 0.299805 4.7998 0.299805 7.2002z\" />\n    <glyph glyph-name=\"steam\" unicode=\"&#xf1b6;\" horiz-adv-x=\"496\" \nd=\"M496 192c0 -137 -111.2 -248 -248.4 -248c-113.8 0 -209.6 76.2998 -239 180.4l95.2002 -39.3008c6.40039 -32.0996 34.9004 -56.3994 68.9004 -56.3994c39.2002 0 71.8994 32.3994 70.2002 73.5l84.5 60.2002c52.0996 -1.30078 95.7998 40.8994 95.7998 93.5\nc0 51.5996 -42 93.5 -93.7002 93.5s-93.7002 -42 -93.7002 -93.5v-1.2002l-59.2002 -85.7002c-15.5 0.900391 -30.6992 -3.40039 -43.5 -12.0996l-133.1 55c10.2002 127.699 117.1 228.1 247.6 228.1c137.2 0 248.4 -111 248.4 -248zM155.7 63.7002\nc19.7998 -8.2002 42.5 1.09961 50.7998 21c8.2998 19.7998 -1.09961 42.5 -20.9004 50.7002l-31.5 13c12.2002 4.59961 26 4.7998 38.9004 -0.600586c13 -5.39941 23.0996 -15.5996 28.5 -28.5996s5.2998 -27.2998 -0.0996094 -40.2998\nc-11.2002 -26.8008 -42.1006 -39.6006 -69 -28.4004c-10.2119 4.26953 -22.3975 15.8281 -27.2002 25.7998zM329.5 193.6c-34.4004 0 -62.4004 28 -62.4004 62.3008c0 34.2998 28 62.2998 62.4004 62.2998s62.4004 -28 62.4004 -62.2998\nc0 -34.3008 -27.9004 -62.3008 -62.4004 -62.3008zM329.6 209.2c25.9004 0 46.9004 21 46.9004 46.7998c0 25.9004 -21 46.7998 -46.9004 46.7998c-25.8994 0 -46.8994 -21 -46.8994 -46.7998c0.0996094 -25.7998 21.0996 -46.7998 46.8994 -46.7998z\" />\n    <glyph glyph-name=\"steam-square\" unicode=\"&#xf1b7;\" \nd=\"M185.2 91.5c7.7002 18.5 -1 39.7002 -19.6006 47.4004l-29.5 12.1992c11.4004 4.30078 24.3008 4.5 36.4004 -0.5c12.2002 -5.09961 21.5996 -14.5996 26.7002 -26.6992c5 -12.2002 5 -25.6006 -0.100586 -37.7002c-10.5 -25.1006 -39.3994 -37 -64.5996 -26.5\nc-11.5996 4.7998 -20.4004 13.5996 -25.4004 24.2002l28.5 -11.8008c18.6006 -7.7998 39.9004 0.900391 47.6006 19.4004zM400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v112.8l89.0996 -36.8994\nc6 -30 32.7002 -52.7002 64.5 -52.7002c36.6006 0 67.3008 30.2998 65.7002 68.7998l79 56.2998c48.7002 -1.2002 89.6006 38.2998 89.6006 87.5c0 48.2002 -39.3008 87.5 -87.6006 87.5s-87.5996 -39.2998 -87.5996 -87.5v-1.09961l-55.4004 -80.2002\nc-14.5 0.799805 -28.7002 -3.09961 -40.7002 -11.2998l-116.6 48.0996v160.7c0 26.5 21.5 48 48 48h352zM300.3 193.5c-32.2002 0 -58.3994 26.0996 -58.3994 58.2998s26.1992 58.2998 58.3994 58.2998s58.4004 -26.1992 58.4004 -58.2998\nc0 -32.0996 -26.2002 -58.2998 -58.4004 -58.2998zM300.4 208.1c24.1992 0 43.8994 19.6006 43.8994 43.8008c0 24.1992 -19.5996 43.7998 -43.8994 43.7998c-24.2002 0 -43.9004 -19.6006 -43.9004 -43.7998c0 -24.2002 19.7002 -43.8008 43.9004 -43.8008z\" />\n    <glyph glyph-name=\"spotify\" unicode=\"&#xf1bc;\" horiz-adv-x=\"496\" \nd=\"M248 440c136.9 0 248 -111.1 248 -248s-111.1 -248 -248 -248s-248 111.1 -248 248s111.1 248 248 248zM348.7 75.0996c8.09961 0 15.2002 6.30078 15.2002 15.4004s-3.60059 12.5996 -9.7002 16.5c-71.4004 42.7002 -155.101 44.2998 -237 26.2002\nc-7.5 -1.60059 -13.6006 -6.5 -13.6006 -16.7998c0 -8.10059 6.10059 -15.8008 15.8008 -15.8008c2.89941 0 8 1.60059 11.8994 2.60059c71.7002 14.7002 144.3 13.0996 206.7 -24.5c3.90039 -2.2998 6.5 -3.60059 10.7002 -3.60059zM375.6 140.7\nc10.9004 0 19.3008 8.7002 19.4004 19.5c0 8.7002 -3.2002 14.8994 -11.2998 19.7002c-49.4004 29.3994 -112.101 45.5 -177 45.5c-41.6006 0 -70 -5.80078 -97.7998 -13.6006c-10.3008 -2.89941 -15.5 -10 -15.5 -20.7002c0 -10.6992 8.69922 -19.3994 19.3994 -19.3994\nc4.5 0 7.10059 1.2998 11.9004 2.59961c82.8994 22.5 176.1 7.60059 238.6 -29.3994c3.60059 -1.90039 7.10059 -4.2002 12.2998 -4.2002zM406.6 216.9c12.2002 0 23.2002 9.69922 23.2002 23.2998c0 11.8994 -5.09961 18.0996 -12.8994 22.5996\nc-55.9004 32.6006 -132.4 47.7998 -205.4 47.7998c-42.9004 0 -82.2998 -4.89941 -117.5 -15.1992c-9 -2.60059 -17.4004 -10.3008 -17.4004 -23.9004c0 -13.2998 10.1006 -23.5996 23.3008 -23.5996c4.7998 0 9.2998 1.59961 12.8994 2.59961\nc82.4004 23 209.7 12.7998 280.9 -29.7002c4.5 -2.59961 7.7002 -3.89941 12.8994 -3.89941z\" />\n    <glyph glyph-name=\"deviantart\" unicode=\"&#xf1bd;\" horiz-adv-x=\"320\" \nd=\"M320 354.8l-98.2002 -179.1l7.40039 -9.5h90.7998v-127.7h-160.9l-13.5 -9.2002l-43.6992 -84c-0.300781 0 -8.60059 -8.59961 -9.2002 -9.2002h-92.7002v93.2002l93.2002 179.4l-7.40039 9.2002h-85.7998v127.6h156l13.5 9.2002l43.7002 84\nc0.299805 0 8.59961 8.59961 9.2002 9.2002h97.5996v-93.1006z\" />\n    <glyph glyph-name=\"soundcloud\" unicode=\"&#xf1be;\" horiz-adv-x=\"640\" \nd=\"M111.4 191.7l5.7998 -65l-5.7998 -68.2998c-0.300781 -2.5 -2.2002 -4.40039 -4.40039 -4.40039s-4.2002 1.90039 -4.2002 4.40039l-5.59961 68.2998l5.59961 65c0 2.2002 1.90039 4.2002 4.2002 4.2002c2.2002 0 4.09961 -2 4.40039 -4.2002zM132.8 237.3\nc2.5 0 4.7002 -2.2002 4.7002 -5l5.7998 -105.6l-5.7998 -68.2998c0 -2.80078 -2.2002 -5 -4.7002 -5c-2.7998 0 -4.7002 2.19922 -5 5l-5 68.2998l5 105.6c0.299805 2.7998 2.2002 5 5 5zM158.3 261.4c2.7998 0 5.2998 -2.2002 5.2998 -5.30078l5.30078 -130\nl-5.30078 -67.7998c0 -3.09961 -2.5 -5.2998 -5.2998 -5.2998c-3.09961 0 -5.2998 2.2002 -5.59961 5.2998l-4.40039 67.7998l4.40039 130c0.299805 3.10059 2.5 5.30078 5.59961 5.30078zM7.2002 164.8c1.39941 0 2.2002 -1.09961 2.5 -2.5l5.59961 -35.5996l-5.59961 -35\nc-0.299805 -1.40039 -1.10059 -2.5 -2.5 -2.5c-1.40039 0 -2.2002 1.09961 -2.5 2.5l-4.7002 35l4.7002 35.5996c0.299805 1.40039 1.09961 2.5 2.5 2.5zM30.7998 186.7c1.40039 0 2.5 -1.10059 2.7998 -2.5l7.2002 -57.5l-7.2002 -56.4004\nc-0.299805 -1.39941 -1.39941 -2.5 -2.7998 -2.5c-1.39941 0 -2.5 1.10059 -2.5 2.7998l-6.39941 56.1006l6.39941 57.5c0 1.39941 1.10059 2.5 2.5 2.5zM56.0996 198.1c1.7002 0 3.10059 -1.39941 3.10059 -3.2998l6.89941 -68.0996l-6.89941 -65.7998\nc0 -1.7002 -1.40039 -3.10059 -3.10059 -3.10059c-1.59961 0 -3 1.40039 -3.2998 3.10059l-5.7998 65.7998l5.7998 68.0996c0.200195 1.90039 1.60059 3.2998 3.2998 3.2998zM81.4004 200.3c1.89941 0 3.59961 -1.39941 3.89941 -3.59961l6.40039 -70l-6.40039 -67.7998\nc-0.299805 -2.2002 -2 -3.60059 -3.89941 -3.60059c-1.90039 0 -3.60059 1.40039 -3.60059 3.60059l-5.7998 67.7998l5.7998 70c0 2.2002 1.7002 3.59961 3.60059 3.59961zM322.8 311.2c2.5 -1.40039 4.10059 -4.2002 4.5 -7.2002l3.90039 -177.5l-3.90039 -64.2002\nc0 -4.7002 -3.89941 -8.59961 -8.59961 -8.59961s-8.60059 3.89941 -8.90039 8.59961l-1.7002 31.7002l-1.69922 32.5l3.2998 176.7v0.799805c0.200195 2.5 1.39941 5 3.2998 6.7002c1.40039 1.09961 3.40039 1.89941 5.59961 1.89941\nc1.40039 0 3.10059 -0.599609 4.2002 -1.39941zM296.1 295.9c2.2002 -1.40039 3.60059 -3.90039 3.90039 -6.7002l3.2998 -162.8l-3.09961 -58.6006l-0.299805 -6.7002c0 -2.2998 -0.800781 -4.19922 -2.5 -5.59961c-1.40039 -1.40039 -3.40039 -2.5 -5.60059 -2.5\nc-2.5 0 -4.7002 1.2002 -6.39941 3.09961c-1.10059 1.40039 -1.7002 3 -1.7002 4.7002v0.299805c-3.10059 65.3008 -3.10059 65.6006 -3.10059 65.6006l2.80078 160.8l0.299805 1.7002c0 2.7998 1.39941 5.2998 3.59961 6.7002\nc1.2998 0.799805 2.7998 1.39941 4.40039 1.39941c1.59961 0 3 -0.599609 4.39941 -1.39941zM184.7 273.4c3.39941 0 5.89941 -2.80078 6.09961 -6.10059l5 -140.6l-5 -67.2002c-0.299805 -3.2998 -2.7998 -5.7998 -6.09961 -5.7998c-3 0 -5.5 2.5 -5.7998 5.7998\nl-4.40039 67.2002l4.40039 140.6c0 3.2998 2.69922 6.10059 5.7998 6.10059zM561.4 210.6c43.2998 0 78.5996 -35.2998 78.5 -78.8994c0 -43.2998 -35.3008 -78.2998 -78.6006 -78.2998h-218.3c-4.7002 0.599609 -8.59961 4.19922 -8.59961 9.19922v249.7\nc0 4.7998 1.69922 7 7.7998 9.2002c15.2998 6.09961 32.5 9.40039 50.2998 9.40039c72.5 0 131.9 -55.6006 138.3 -126.4c9.5 3.90039 19.7998 6.09961 30.6006 6.09961zM264.7 270.9c4.2002 0 7.2002 -3.30078 7.5 -7.80078l3.89941 -136.699l-3.89941 -65.6006\nc0 -4.2002 -3.2998 -7.5 -7.5 -7.5s-7.5 3.2998 -7.7998 7.5l-3.30078 65.6006l3.30078 136.699c0.299805 4.5 3.59961 7.80078 7.7998 7.80078zM211.1 278.7c3.60059 0 6.40039 -3.10059 6.7002 -6.7002l4.40039 -145.3l-4.40039 -66.9004\nc-0.299805 -3.59961 -3.09961 -6.39941 -6.7002 -6.39941c-3.2998 0 -6.09961 2.7998 -6.39941 6.39941l-3.90039 66.9004l3.90039 145.3c0 3.59961 3.09961 6.7002 6.39941 6.7002zM237.8 275.3c3.90039 0 6.90039 -3 6.90039 -6.89941l4.2002 -141.7l-4.2002 -66.4004\nc0 -3.7998 -3.10059 -6.89941 -6.90039 -6.89941s-6.59961 3 -6.89941 6.89941l-3.90039 66.4004l3.90039 141.7c0 3.7998 3 6.89941 6.89941 6.89941z\" />\n    <glyph glyph-name=\"vine\" unicode=\"&#xf1ca;\" horiz-adv-x=\"384\" \nd=\"M384 193.3v-52.0996c-18.4004 -4.2002 -36.9004 -6.10059 -52.0996 -6.10059c-36.9004 -77.3994 -103 -143.8 -125.101 -156.199c-14 -7.90039 -27.0996 -8.40039 -42.7002 0.799805c-27.0996 16.2998 -129.899 100.6 -164.1 365.6h74.5\nc18.7002 -159.1 64.5 -240.7 114.8 -301.8c27.9004 27.9004 54.7998 65.0996 75.6006 106.9c-49.8008 25.2998 -80.1006 80.8994 -80.1006 145.6c0 65.5996 37.7002 115.1 102.2 115.1c114.9 0 106.2 -127.899 81.5996 -181.5c0 0 -46.3994 -9.19922 -63.5 20.5\nc3.40039 11.3008 8.2002 30.8008 8.2002 48.5c0 31.3008 -11.2998 46.6006 -28.3994 46.6006c-18.2002 0 -30.8008 -17.1006 -30.8008 -50c0.100586 -79.2002 59.4004 -118.7 129.9 -101.9z\" />\n    <glyph glyph-name=\"codepen\" unicode=\"&#xf1cb;\" horiz-adv-x=\"512\" \nd=\"M502.285 288.296c6.00098 -3.99902 9.71484 -11.1426 9.71582 -18.2852v-155.999c0 -7.14258 -3.71484 -14.2871 -9.71484 -18.2861l-234 -156.021c-8.06055 -4.95996 -16.584 -4.91504 -24.5713 0l-234 156.021c-6.00098 4 -9.71484 11.1436 -9.71484 18.2861v155.999\nc0 7.14258 3.71387 14.2861 9.71387 18.2852l234 156c8.06055 4.95996 16.584 4.91504 24.5713 0zM278 384.869v-102.572l95.4287 -63.7148l76.8574 51.4287zM234 384.869l-172.286 -114.858l76.8574 -51.4287l95.4287 63.7148v102.572zM44 228.868v-73.7139\nl55.1426 36.8564zM234 -0.84668v102.571l-95.4287 63.7158l-76.8574 -51.4297zM256 140.011l77.7148 52l-77.7148 52l-77.7148 -52zM278 -0.84668l172.286 114.857l-76.8574 51.4297l-95.4287 -63.7158v-102.571zM468 155.154v73.7139l-55.1426 -36.8574z\" />\n    <glyph glyph-name=\"jsfiddle\" unicode=\"&#xf1cc;\" horiz-adv-x=\"576\" \nd=\"M510.634 210.538c45.6885 -25.334 68.3721 -74.5605 56.832 -122.634c-12.1035 -50.4199 -55.5479 -86.6592 -108.212 -87.293c-84.0303 -1.01172 -168.079 -0.458984 -252.12 -0.480469c-30.3223 -0.00683594 -60.668 -0.492188 -90.959 0.539062\nc-48.0938 1.63672 -91.7764 35.8643 -105.607 81.4326c-14.1289 46.5508 2.18945 94.623 41.9014 124.615c2.54688 1.92383 4.86914 6.52051 4.51465 9.54492c-3.74609 31.8604 7.14453 57.6709 32.6758 76.4082c26.2822 19.2881 55.2285 21.5879 85.3311 9.16699\nc2.36621 -0.975586 4.63965 -2.17773 7.82422 -3.68555c16.5215 27.5332 38.1221 48.6523 65.4922 63.9023c92.8594 51.7402 210.954 8.31152 246.85 -91.6455c5.55762 -15.4766 6.74512 -32.6074 9.09668 -49.0947c0.716797 -5.02832 1.6543 -8.15527 6.38086 -10.7764z\nM531.741 53.6582c39.3135 48.375 22.418 117.668 -35.1426 144.497c-7.43555 3.46582 -9.72559 7.74414 -9.84766 15.8936c-1.87012 125.129 -132.78 187.063 -230.24 132.697c-26.1133 -14.5674 -46.4492 -34.8955 -60.6709 -61.2939\nc-7.59082 -14.0908 -11.9287 -7.97754 -22.1982 -2.52734c-24.6113 13.0635 -49.0469 12.6406 -72.0332 -3.08301c-21.9678 -15.0244 -31.9102 -36.6201 -26.4199 -62.9805c2.4082 -11.5703 -0.914062 -17.0635 -10.0967 -23.1367\nc-38.1895 -25.2578 -53.0879 -74.8604 -34.1855 -116.105c18.4355 -40.2295 51.3135 -59.6631 95.1748 -59.9951c0.700195 -0.00488281 163.728 -0.545898 163.728 0.154297c56.8857 0 113.778 -0.551758 170.652 0.229492\nc28.9375 0.397461 53.0498 13.2178 71.2803 35.6504zM443.952 134.157c-5.84863 -31.1572 -34.6221 -55.0967 -66.666 -55.0957c-16.9531 0.00195312 -32.0586 6.5459 -44.0791 17.7051c-27.6973 25.7139 -71.1406 74.9805 -95.9375 93.3877\nc-20.0557 14.8877 -41.9893 12.333 -60.2715 -3.78223c-49.9961 -44.0713 15.8594 -121.775 67.0625 -77.1885c4.54883 3.95996 7.84082 9.54297 12.7441 12.8447c8.18457 5.50879 20.7666 0.883789 13.168 -10.6221c-17.3574 -26.2842 -49.3301 -38.1973 -78.8623 -29.3008\nc-28.8975 8.70312 -48.8408 35.9678 -48.626 70.1787c1.22461 22.4844 12.3633 43.0596 35.4141 55.9648c22.5742 12.6377 46.3682 13.1455 66.9902 -2.47363c50.791 -38.4756 75.5781 -81.7451 107.296 -101.245c24.5586 -15.0996 54.2549 -7.36328 68.8232 17.5059\nc28.8301 49.209 -34.5918 105.016 -78.8682 63.46c-3.98828 -3.74414 -6.91699 -8.93164 -11.4092 -11.7197c-10.9756 -6.81152 -17.333 4.1123 -12.8096 10.3525c20.7031 28.5537 50.4639 40.4404 83.2715 28.2139c31.4287 -11.7139 49.1074 -44.3662 42.7598 -78.1855z\n\" />\n    <glyph glyph-name=\"rebel\" unicode=\"&#xf1d0;\" horiz-adv-x=\"512\" \nd=\"M256.5 -56c-139.3 0 -247.5 116.2 -243.3 254.1c2.7998 79.2002 43.2002 152.2 116.5 200.4c0.299805 0 1.89941 0.599609 1.09961 -0.799805c-5.7998 -5.5 -111.3 -129.8 -14.0996 -226.4c49.7998 -49.5 90 -2.5 90 -2.5c38.5 50.1006 -0.600586 125.9 -0.600586 125.9\nc-10 24.8994 -45.6992 40.0996 -45.6992 40.0996l28.7998 31.7998c24.3994 -10.5 43.2002 -38.6992 43.2002 -38.6992c0.799805 29.5996 -21.9004 61.3994 -21.9004 61.3994l44.5996 50.7002l44.3008 -50.0996c-20.5 -28.8008 -21.9004 -62.6006 -21.9004 -62.6006\nc13.7998 23 43.5 39.2998 43.5 39.2998l28.5 -31.7998c-27.4004 -8.89941 -45.4004 -39.8994 -45.4004 -39.8994c-15.7998 -28.5 -27.0996 -89.4004 0.600586 -127.301c32.3994 -44.5996 87.7002 2.80078 87.7002 2.80078c102.699 91.8994 -10.5 225 -10.5 225\nc-6.10059 5.5 0.799805 2.7998 0.799805 2.7998c50.0996 -36.5 114.6 -84.4004 116.2 -204.8c2 -145.601 -99.9004 -249.4 -242.4 -249.4z\" />\n    <glyph glyph-name=\"empire\" unicode=\"&#xf1d1;\" horiz-adv-x=\"496\" \nd=\"M287.6 393.8c-10.7998 2.2002 -22.0996 3.2998 -33.5 3.60059v18.1992c78.1006 -2.19922 146.101 -44 184.601 -106.6l-15.7998 -9.09961c-6.10059 9.69922 -12.7002 18.7998 -20.2002 27.0996l-18 -15.5c-26 29.5996 -61.4004 50.7002 -101.9 58.4004zM53.4004 125.6\nc3.89941 -10.7998 8.2998 -21.0996 13.5996 -31.0996l-15.7998 -9.09961c-17.1006 31.5996 -27.1006 68.0996 -27.1006 106.6s9.90039 75 27.1006 106.5l15.7998 -9.09961c-5.2998 -9.7002 -10 -20.2002 -13.5996 -31l22.6992 -7.7002\nc-6.39941 -18.2998 -9.69922 -38.2002 -9.69922 -58.7002s3.59961 -40.4004 10 -58.7002zM213.1 14l-4.69922 -23.7998c10.7998 -1.90039 22.1992 -3.2998 33.5 -3.60059v-18.2998c-78.1006 2.2998 -146.4 44.2998 -184.9 106.601l16 9.39941\nc5.7998 -9.7002 12.7002 -18.7998 20.2002 -27.3994l18 15.7998c26.0996 -29.6006 61.5 -50.7002 101.899 -58.7002zM93.2998 327.1c-7.5 -8.2998 -14.0996 -17.5 -20.0996 -27.1992l-15.7998 9.09961c38.5 62.5996 106.5 104.4 184.6 106.6v-18.1992\nc-11.4004 -0.300781 -22.7002 -1.40039 -33.5 -3.60059l4.7002 -23.7998c-40.5 -7.7002 -75.9004 -28.7998 -101.9 -58.4004zM402.7 56.9004c7.5 8.59961 14.3994 17.6992 20.0996 27.3994l16.1006 -9.39941c-38.5 -62.3008 -106.801 -104.4 -184.9 -106.601v18.2998\nc11.4004 0.300781 22.7002 1.7002 33.5 3.60059l-4.7002 23.7998c40.5 8 75.9004 29.0996 101.9 58.7002zM496 192c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248s248 -111 248 -248zM483.8 192c0 130.1 -105.7 235.8 -235.8 235.8\ns-235.8 -105.7 -235.8 -235.8s105.7 -235.8 235.8 -235.8s235.8 105.7 235.8 235.8zM444.8 298.6c17.2002 -31.5996 27.1006 -68.0996 27.1006 -106.6s-9.90039 -75 -27.1006 -106.4l-15.7998 9.10059c5.2998 10 9.7002 20.2002 13.5996 31l-23 7.7002\nc6.40039 18.2998 10 38.1992 10 58.6992s-3.2998 40.4004 -9.69922 58.7002l22.6992 7.7002c-3.59961 10.7998 -8.2998 21.2998 -13.5996 31zM261.8 120.9l13.2998 -66.7002c-8.59961 -1.7002 -17.6992 -2.7998 -27.0996 -2.7998s-18.5 1.09961 -27.0996 2.7998\nl13.2998 66.7002c-16.2998 3.2998 -30.5 11.5996 -40.7002 23.5l-51.2002 -44.8008c-11.8994 13.6006 -21.2998 29.4004 -27.0996 46.8008l64.2002 22.0996c-2.5 7.40039 -3.90039 15.2002 -3.90039 23.5s1.40039 16 3.90039 23.5l-64.5 22.0996\nc6.09961 17.5 15.5 33.2002 27.3994 46.8008l51.2002 -44.8008c10.2998 11.9004 24.4004 20.5 40.7002 23.8008l-13.2998 66.3994c8.59961 2 17.6992 2.7998 27.0996 2.7998s18.5 -0.899414 27.0996 -2.7998l-13.2998 -66.3994\nc16.2998 -3.30078 30.5 -11.9004 40.7002 -23.8008l51.2002 44.8008c11.8994 -13.6006 21.2998 -29.4004 27.3994 -46.8008l-64.5 -22.0996c2.5 -7.40039 3.90039 -15.2002 3.90039 -23.5s-1.40039 -16 -3.90039 -23.5l64.2002 -22.0996\nc-5.7998 -17.5 -15.2002 -33.2002 -27.0996 -46.8008l-51.2002 44.8008c-10.2998 -11.9004 -24.4004 -20.2002 -40.7002 -23.5z\" />\n    <glyph glyph-name=\"git-square\" unicode=\"&#xf1d2;\" \nd=\"M100.59 113.76c48.5703 -3.30957 58.9502 -2.10938 58.9502 -11.9395c0 -20 -65.5498 -20.0605 -65.5498 -1.52051c0.00976562 5.08984 3.29004 9.40039 6.59961 13.46zM128.54 230.4c30.96 0 31.7598 -44.4707 -0.75 -44.4707c-33 0 -31.54 44.4707 0.75 44.4707z\nM448 368v-352c0 -26.4961 -21.5039 -48 -48 -48h-352c-26.4961 0 -48 21.5039 -48 48v352c0 26.4961 21.5039 48 48 48h352c26.4961 0 48 -21.5039 48 -48zM221 298.69c0 -14.4902 8.37988 -22.8809 22.8604 -22.8809c14.7393 0 23.1299 8.39062 23.1299 22.8809\nc0 14.4893 -8.37012 22.3096 -23.1104 22.3096c-14.4795 0 -22.8799 -7.83984 -22.8799 -22.3096zM199.18 253h-49.5498c-25 6.5498 -81.5596 4.84961 -81.5596 -46.75c0 -18.7998 9.39941 -32 21.8496 -38.1104c-15.6895 -14.3701 -23.1201 -21.1396 -23.1201 -30.7393\nc0 -6.87012 2.79004 -13.2207 11.1807 -16.7607c-8.90039 -8.39941 -14 -14.4795 -14 -25.9199c0.0195312 -20.0693 17.5498 -31.7197 63.5391 -31.7197c44.2207 0 69.8701 16.5098 69.8701 45.7305c0 36.6699 -28.2295 35.3193 -94.7695 39.3799l8.37988 13.4297\nc17 -4.74023 74.1904 -6.23047 74.1904 42.4297c0 11.6904 -4.83008 19.8203 -9.40039 25.6699l23.3799 1.78027zM283.52 143.16l-13 1.78027c-3.81934 0.509766 -4.06934 1 -4.06934 5.08984v105.45h-52.6006l-2.79004 -20.5703c15.75 -5.5498 17 -4.86035 17 -10.1699\nv-74.7402c0 -5.62012 -0.30957 -4.58008 -17 -6.87012v-20.0596h72.4209zM384 133l-6.87012 22.3701c-40.9297 -15.3701 -37.8496 12.4102 -37.8496 16.7295v60.7207h37.8496v25.4102h-35.8203c-2.86914 0 -2 -2.52051 -2 38.6299h-24.1797\nc-2.79004 -27.7002 -11.6797 -38.8799 -34 -41.4199v-22.6201c20.4697 0 19.8203 0.849609 19.8203 -2.54004v-66.5703c0 -28.7197 11.4297 -40.9102 41.6699 -40.9102c14.4502 0 30.4502 4.83008 41.3799 10.2002z\" />\n    <glyph glyph-name=\"git\" unicode=\"&#xf1d3;\" horiz-adv-x=\"512\" \nd=\"M216.29 289.61l0.0400391 -34.5508l-37.4102 -2.83984c7.27051 -9.35938 15 -22.3701 15 -41.0693c0 -77.8906 -91.4297 -75.4707 -118.7 -67.8906l-13.4297 -21.5498c106.47 -6.5 151.63 -4.33984 151.63 -63c0 -46.7598 -41.04 -73.1797 -111.79 -73.1797\nc-73.5801 0 -101.63 18.71 -101.63 50.8193c0 18.3008 8.12988 28.04 22.4004 41.4502c-13.4199 5.66992 -17.8906 15.8105 -17.8906 26.8105c0 15.3594 11.9004 26.21 37 49.21c-20 9.76953 -35 30.9102 -35 61c0 82.5498 90.4902 85.2793 130.49 74.79h79.29z\nM152.87 47.71c0 15.7402 -16.6104 13.8096 -94.3203 19.1104c-5.2998 -6.54004 -10.5693 -13.4004 -10.5693 -21.54c0 -29.6699 104.89 -29.6299 104.89 2.42969zM102.06 182.29c52.0205 0 50.7402 71.1602 1.2002 71.1602c-51.6602 0 -54 -71.1602 -1.2002 -71.1602z\nM235.36 81.7803v32.0996c26.75 3.66016 27.2393 2 27.2393 11v119.51c0 8.5 -2.0498 7.37988 -27.2393 16.2607l4.46973 32.9199h84.1699v-168.71c0 -6.51074 0.400391 -7.32031 6.50977 -8.14062l20.7305 -2.83984v-32.0996h-115.88zM287.81 326.09\nc-23.1699 0 -36.5898 13.4297 -36.5898 36.6104c0 23.1797 13.4199 35.7695 36.5898 35.7695c23.5801 0 37 -12.6201 37 -35.7695c0 -23.1504 -13.4199 -36.6104 -37 -36.6104zM512 97.54c-17.4902 -8.53027 -43.0996 -16.2598 -66.2803 -16.2598\nc-48.3799 0 -66.6699 19.5 -66.6699 65.46v106.51c0 5.41992 1.0498 4.05957 -31.71 4.05957v36.1904c35.7803 4.07031 50 22 54.4697 66.2695h38.6309c0 -65.8291 -1.34082 -61.8096 3.25977 -61.8096h57.2998v-40.6504h-60.5596v-97.1494\nc0 -6.91992 -4.9209 -51.4102 60.5693 -26.8398z\" />\n    <glyph glyph-name=\"hacker-news\" unicode=\"&#xf1d4;\" \nd=\"M0 416h448v-448h-448v448zM21.2002 218.8h-0.200195c0.0996094 0.100586 0.200195 0.299805 0.299805 0.400391c0 -0.100586 0 -0.299805 -0.0996094 -0.400391zM239.2 164.9l80.7998 155.1h-34.7998c-54.7998 -101.2 -48.2998 -98.5996 -60.6006 -125.6\nc-10.0996 24.3994 -6.7998 27.2998 -59.2998 125.6h-37.2998l79.7998 -153.3v-102.7h31.4004v100.9z\" />\n    <glyph glyph-name=\"tencent-weibo\" unicode=\"&#xf1d5;\" horiz-adv-x=\"384\" \nd=\"M72.2998 -47.7998c1.40039 -19.9004 -27.5996 -22.2002 -29.7002 -2.90039c-11.5996 129.9 31.1006 239.5 101.4 313.2c-15.5996 34 9.2002 77.0996 50.5996 77.0996c30.3008 0 55.1006 -24.5996 55.1006 -55.0996c0 -44 -49.5 -70.7998 -86.9004 -45.0996\nc-65.7002 -71.3008 -101.399 -169.801 -90.5 -287.2zM192 447.9c92 0 166.6 -74.6006 166.6 -166.5c0 -102.301 -93.2998 -185.5 -204 -162.301c-19 4.7002 -12.5 33.2002 6.60059 29.1006c80.7998 -20.7998 167.7 42.2998 167.7 133.1c0 75.5 -61.5 136.9 -136.9 136.9\nc-101 0 -168.3 -106.601 -122 -199.2c9 -17.9004 -17.5996 -30.7998 -26.2998 -13.4004c-56 108.101 22.3994 242.301 148.3 242.301z\" />\n    <glyph glyph-name=\"qq\" unicode=\"&#xf1d6;\" \nd=\"M433.754 27.5547c-11.5264 -1.39258 -44.8604 52.7412 -44.8604 52.7412c0 -31.3447 -16.1357 -72.2471 -51.0508 -101.786c16.8418 -5.19141 54.8428 -19.167 45.8037 -34.4209c-7.31641 -12.3428 -125.511 -7.88086 -159.633 -4.03711\nc-34.1221 -3.84375 -152.315 -8.30566 -159.632 4.03711c-9.04492 15.25 28.918 29.2139 45.7832 34.415c-34.9199 29.5391 -51.0586 70.4453 -51.0586 101.792c0 0 -33.334 -54.1338 -44.8594 -52.7412c-5.37012 0.650391 -12.4238 29.6445 9.34668 99.7041\nc10.2617 33.0244 21.9951 60.4785 40.1445 105.779c-3.05566 116.898 45.2441 214.956 160.262 214.962c113.737 -0.00585938 163.156 -96.1328 160.264 -214.963c18.1182 -45.2227 29.9121 -72.8506 40.1445 -105.778c21.7676 -70.0596 14.7158 -99.0527 9.3457 -99.7041z\n\" />\n    <glyph glyph-name=\"weixin\" unicode=\"&#xf1d7;\" horiz-adv-x=\"576\" \nd=\"M385.2 280.4c-92.4004 0 -165.4 -69.1006 -165.3 -154c0 -14.2002 2.19922 -27.9004 6.19922 -40.8008c-6.19922 -0.5 -12.0996 -0.799805 -18.2998 -0.799805c-24.3994 0 -43.7998 4.90039 -68.2002 9.7002l-68 -34.0996l19.3008 58.5996\nc-48.6006 34.0996 -77.9004 78.2002 -77.9004 131.6c0 92.6006 87.5 165.4 194.7 165.4c95.5996 0 179.7 -58.2998 196.3 -136.7c-6.2002 0.799805 -12.4004 1.10059 -18.7998 1.10059zM280.7 333.3c-14.7002 0 -29.2002 -9.7002 -29.2998 -24.3994\nc0 -14.5 14.5 -24.2002 29.2998 -24.2002c14.5 0 24.2002 9.7002 24.2002 24.2002c0 14.6992 -9.7002 24.3994 -24.2002 24.3994zM144.3 284.7c14.7998 0 24.4004 9.59961 24.4004 24.2002c0 14.6992 -9.60059 24.3994 -24.4004 24.3994\nc-14.5 0 -29.2998 -9.59961 -29.2998 -24.3994c0 -14.5 14.7998 -24.2002 29.2998 -24.2002zM563 128.6c0 -43.7998 -29 -82.6992 -68.2002 -112.1l14.7998 -48.5996l-53.3994 29.2998c-19.7002 -4.7998 -39.2998 -9.90039 -58.6006 -9.90039\nc-92.5996 0 -165.399 63.4004 -165.399 141.3c0 77.9004 72.7002 141.301 165.399 141.301c87.5 0 165.4 -63.4004 165.4 -141.301zM343.9 153.1c14.6992 0 24.3994 9.60059 24.3994 19.6006c0 9.59961 -9.59961 19.2998 -24.3994 19.2998\nc-9.60059 0 -19.3008 -9.59961 -19.3008 -19.2998c0 -9.90039 9.60059 -19.6006 19.3008 -19.6006zM451 153.1c14.5 0 24.5 9.60059 24.4004 19.6006c0 9.59961 -9.90039 19.2998 -24.4004 19.2998c-9.59961 0 -19.2998 -9.59961 -19.2998 -19.2998\nc0 -9.90039 9.59961 -19.6006 19.2998 -19.6006z\" />\n    <glyph glyph-name=\"slideshare\" unicode=\"&#xf1e7;\" horiz-adv-x=\"512\" \nd=\"M187.7 294.3c34 0 61.7002 -25.7002 61.7002 -57.7002c0 -31.6992 -27.7002 -57.6992 -61.7002 -57.6992s-61.7002 26 -61.7002 57.6992c0 32 27.7002 57.7002 61.7002 57.7002zM331.1 294.3c34.3008 0 61.8008 -25.7002 61.7002 -57.7002\nc0 -31.6992 -27.3994 -57.6992 -61.7002 -57.6992c-34 0 -61.6992 26 -61.6992 57.6992c0 32 27.6992 57.7002 61.6992 57.7002zM487.7 204.3c15.2002 10.5 25.2002 -4 16.0996 -17.7998c-18.2998 -22.5996 -53.2002 -50.2998 -106.3 -72\nc56.2998 -191.7 -137.4 -222.3 -134.3 -124c0 0.700195 -0.299805 53.7998 -0.299805 93.5c-4.30078 0.799805 -8.60059 2 -13.7002 3.09961c0 -40 -0.299805 -95.8994 -0.299805 -96.5996c3.09961 -98.2002 -190.601 -67.5996 -134.301 124.1\nc-53.1992 21.7002 -88 49.4004 -106.3 72c-9.09961 13.7002 0.900391 28.3008 16 17.7002c2 -1.39941 4.2998 -2.89941 6.2998 -4.2998v198.3c0 27.4004 20.6006 49.7002 46 49.7002h359.101c25.3994 0 46 -22.2998 46 -49.7002v-198.3zM457.2 185.1h0.0996094v190.601\nc0 32.7998 -10.5996 45.7002 -40.8994 45.7002h-317.7c-31.7002 0 -40.6006 -10.8008 -40.6006 -45.7002v-192.4c67.7002 -35.3994 125.7 -29.0996 157.4 -28c13.4004 0.299805 22 -2.2998 27.0996 -7.7002c1.7002 -1.59961 10 -9.39941 20.3008 -17.0996\nc1.09961 15.7998 10 25.7998 33.6992 24.9004c32.3008 -1.40039 91.7002 -7.7002 160.601 29.6992z\" />\n    <glyph glyph-name=\"twitch\" unicode=\"&#xf1e8;\" \nd=\"M40.0996 416h397.9v-274.2l-117 -117h-87l-56.7998 -56.7998h-60.2002v56.7998h-107v314.3zM397.9 161.9v214h-321v-280.9h90.2998v-56.7998l56.7998 56.7998h107zM331 299v-116.9h-40.0996v116.9h40.0996zM224 299v-116.9h-40.0996v116.9h40.0996z\" />\n    <glyph glyph-name=\"yelp\" unicode=\"&#xf1e9;\" horiz-adv-x=\"384\" \nd=\"M42.9004 207.68l99.6191 -48.6094c19.2002 -9.40039 16.2002 -37.5107 -4.5 -42.71l-107.52 -26.8105c-1.51074 -0.379883 -4 -0.6875 -5.55762 -0.6875c-11.2676 0 -21.415 9.08887 -22.6523 20.2881c-0.708984 6.18164 -1.28516 16.25 -1.28516 22.4727\nc0 17.8105 4.60742 45.9658 10.2852 62.8467c2.88574 8.56836 12.5664 15.5215 21.6074 15.5215c2.9082 0 7.38867 -1.03516 10.0029 -2.31152zM86.9004 -31.5703c-5.48535 3.75195 -9.92773 12.1904 -9.92773 18.8359c0 4.8291 2.61914 11.6631 5.84766 15.2539\nl74.21 82.4004c14.3096 15.8105 40.5098 5.2002 39.8096 -16.0996l-3.89941 -110.82c-0.412109 -12.1484 -10.6123 -22.0078 -22.7676 -22.0078c-1.07129 0 -2.79688 0.146484 -3.85254 0.328125c-23.8691 4.04199 -59.4492 18.4277 -79.4199 32.1094zM232.24 78.3496\nc-11.2998 18.1104 6.2002 40.4102 26.5098 33.9102l105.42 -34.2598c8.69043 -2.88965 15.7422 -12.667 15.7422 -21.8252c0 -2.8125 -0.963867 -7.16504 -2.15234 -9.71484c-10.418 -21.8799 -34.0322 -52.1689 -52.71 -67.6104\nc-3.50586 -2.88867 -10.0391 -5.2334 -14.582 -5.2334c-6.99707 0 -15.6963 4.80859 -19.418 10.7334zM380.57 210.58c1.04688 -2.41602 1.93652 -6.5127 1.93652 -9.14551c0 -9.49805 -7.39551 -19.3828 -16.5068 -22.0645l-106.64 -30.5098\nc-20.5 -5.90039 -37.1006 17.0098 -25.2002 34.71l62 91.9199c3.75 5.55664 12.2354 10.0654 18.9385 10.0654c4.74512 0 11.4932 -2.53809 15.0615 -5.66602c18.166 -16.0361 40.75 -47.0869 50.4102 -69.3096zM62.1104 417.82\nc29.4697 14.0293 79.793 27.5137 112.33 30.0996c0.503906 0.0410156 1.32422 0.0742188 1.83008 0.0742188c12.5146 0 22.6709 -10.1562 22.6709 -22.6699c0 -0.0566406 -0.000976562 -0.147461 -0.000976562 -0.204102v-208.34\nc0 -23.2998 -30.9102 -31.6006 -42.6104 -11.4004l-104.12 180.44c-1.68164 2.92188 -3.0459 8.0293 -3.0459 11.4014c0 7.93066 5.7998 17.1592 12.9463 20.5986z\" />\n    <glyph glyph-name=\"paypal\" unicode=\"&#xf1ed;\" horiz-adv-x=\"384\" \nd=\"M111.4 152.1c-3.5 -19.1992 -17.4004 -108.699 -21.5 -134c-0.300781 -1.7998 -1 -2.5 -3 -2.5h-74.6006c-7.59961 0 -13.0996 6.60059 -12.0996 13.9004l58.5996 371.9c1.5 9.59961 10.1006 16.8994 20 16.8994c152.3 0 165.101 3.7002 204 -11.3994\nc60.1006 -23.3008 65.6006 -79.5 44 -140.301c-21.5 -62.5996 -72.5 -89.5 -140.1 -90.2998c-43.4004 -0.700195 -69.5 7 -75.2998 -24.2002zM357.1 296c28.4004 -21.2002 30.3008 -57.7998 23.8008 -92.5996c-16.5 -83.5 -71.9004 -112.301 -142.9 -112.301\nc-15 0 -24.7002 2.30078 -29.2998 -19.6992c-15.5 -97.4004 -13.7002 -85.9004 -14.4004 -91.3008c-1.7002 -8.59961 -8.7998 -14.8994 -17.3994 -14.8994h-63.5c-7.10059 0 -11.6006 5.7998 -10.6006 12.8994c0 0 4.5 29.3008 27.1006 169.7\nc0.799805 6.10059 4.7998 9.40039 10.8994 9.40039c54 0 164.601 -9.90039 204.5 103.899c3.7002 11.1006 6.7998 22.2002 8.7998 33.6006c0.5 3.09961 1.2002 2.59961 3 1.2998z\" />\n    <glyph glyph-name=\"google-wallet\" unicode=\"&#xf1ee;\" \nd=\"M156.8 321.2c37.6006 -60.6006 64.2002 -113.101 84.2998 -162.5c-8.2998 -33.7998 -18.7998 -66.5 -31.2998 -98.2998c-13.2002 52.2998 -26.5 101.3 -56 148.5c6.5 36.3994 2.2998 73.5996 3 112.3zM109.3 248c5 0 10 -2.5 13 -6.5\nc43.7998 -59.7998 66.2998 -123.8 82.5 -193.5h-103.5c-20 69.5 -49.5 133 -91.7002 187.3c-4 5.2002 0 12.7002 6.5 12.7002h93.2002zM157.1 336h108.7c74.7998 -103 131.2 -230 143.2 -368h-113.7c-8.2002 133.5 -69.7002 260 -138.2 368zM408.9 404.5\nc19 -67.5 31.0996 -139 31.0996 -212.6c0 -69.5 -9.5 -142.5 -25.2998 -203c-10.9004 92.5 -42.4004 184.6 -90.6006 270.8c-4.19922 50.5 -13.2998 99.5 -26.5 146c-1.19922 5.2998 2.5 10.2998 7.80078 10.2998h88.2998c7 0 13.3994 -4.7002 15.2002 -11.5z\" />\n    <glyph glyph-name=\"cc-visa\" unicode=\"&#xf1f0;\" horiz-adv-x=\"576\" \nd=\"M470.1 216.7c0 0 7.60059 -37.2002 9.30078 -45h-33.4004c3.2998 8.89941 16 43.5 16 43.5c-0.200195 -0.299805 3.2998 9.09961 5.2998 14.8994zM576 368v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h480\nc26.5 0 48 -21.5 48 -48zM152.5 116.8l63.2002 155.2h-42.5l-39.2998 -106l-4.30078 21.5l-14 71.4004c-2.2998 9.89941 -9.39941 12.6992 -18.1992 13.0996h-64.7002l-0.700195 -3.09961c15.7998 -4 29.9004 -9.80078 42.2002 -17.1006l35.7998 -135h42.5zM246.9 116.6\nl25.1992 155.4h-40.1992l-25.1006 -155.4h40.1006zM386.8 167.4c0.200195 17.6992 -10.5996 31.1992 -33.7002 42.2998c-14.0996 7.09961 -22.6992 11.8994 -22.6992 19.2002c0.199219 6.59961 7.2998 13.3994 23.0996 13.3994\nc13.0996 0.299805 22.7002 -2.7998 29.9004 -5.89941l3.59961 -1.7002l5.5 33.5996c-7.90039 3.10059 -20.5 6.60059 -36 6.60059c-39.7002 0 -67.5996 -21.2002 -67.7998 -51.4004c-0.299805 -22.2998 20 -34.7002 35.2002 -42.2002\nc15.5 -7.59961 20.7998 -12.5996 20.7998 -19.2998c-0.200195 -10.4004 -12.6006 -15.2002 -24.1006 -15.2002c-16 0 -24.5996 2.5 -37.6992 8.2998l-5.30078 2.5l-5.59961 -34.8994c9.40039 -4.2998 26.7998 -8.10059 44.7998 -8.2998\nc42.2002 -0.100586 69.7002 20.7998 70 53zM528 116.6l-32.4004 155.4h-31.0996c-9.59961 0 -16.9004 -2.7998 -21 -12.9004l-59.7002 -142.5h42.2002s6.90039 19.2002 8.40039 23.3008h51.5996c1.2002 -5.5 4.7998 -23.3008 4.7998 -23.3008h37.2002z\" />\n    <glyph glyph-name=\"cc-mastercard\" unicode=\"&#xf1f1;\" horiz-adv-x=\"576\" \nd=\"M482.9 37.7002c0 -6.7998 -4.60059 -11.7002 -11.2002 -11.7002c-6.7998 0 -11.2002 5.2002 -11.2002 11.7002s4.40039 11.7002 11.2002 11.7002c6.59961 0 11.2002 -5.2002 11.2002 -11.7002zM172.1 49.4004c6.5 0 10.8008 -5.2002 10.9004 -11.7002\nc0 -6.7998 -4.40039 -11.7002 -10.9004 -11.7002c-7.09961 0 -11.1992 5.2002 -11.1992 11.7002s4.09961 11.7002 11.1992 11.7002zM289.6 49.7002c5.2002 0 8.7002 -3 9.60059 -8.7002h-19.1006c0.800781 5.2002 4.10059 8.7002 9.5 8.7002zM397.4 49.4004\nc6.7998 0 11.1992 -5.2002 11.1992 -11.7002c0 -6.7998 -4.39941 -11.7002 -11.1992 -11.7002c-6.80078 0 -10.9004 5.2002 -10.9004 11.7002s4.09961 11.7002 10.9004 11.7002zM503.3 23.2998c0 -0.299805 0.299805 -0.5 0.299805 -1.09961\nc0 -0.299805 -0.299805 -0.5 -0.299805 -1.10059c-0.299805 -0.299805 -0.299805 -0.5 -0.5 -0.799805c-0.299805 -0.299805 -0.5 -0.5 -1.09961 -0.5c-0.299805 -0.299805 -0.5 -0.299805 -1.10059 -0.299805c-0.299805 0 -0.5 0 -1.09961 0.299805\nc-0.299805 0 -0.5 0.299805 -0.799805 0.5c-0.299805 0.299805 -0.5 0.5 -0.5 0.799805c-0.299805 0.5 -0.299805 0.800781 -0.299805 1.10059c0 0.5 0 0.799805 0.299805 1.09961c0 0.5 0.299805 0.799805 0.5 1.10059c0.299805 0.299805 0.5 0.299805 0.799805 0.5\nc0.5 0.299805 0.799805 0.299805 1.09961 0.299805c0.5 0 0.800781 0 1.10059 -0.299805c0.5 -0.300781 0.799805 -0.300781 1.09961 -0.5c0.299805 -0.200195 0.200195 -0.600586 0.5 -1.10059zM501.1 21.9004c0.5 0 0.5 0.299805 0.800781 0.299805\nc0.299805 0.299805 0.299805 0.5 0.299805 0.799805s0 0.5 -0.299805 0.799805c-0.300781 0 -0.5 0.299805 -1.10059 0.299805h-1.59961v-3.5h0.799805v1.40039h0.299805l1.10059 -1.40039h0.799805zM576 367v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48\nv352c0 26.5 21.5 48 48 48h480c26.5 0 48 -21.5 48 -48zM64 227.4c0 -76.5 62.0996 -138.5 138.5 -138.5c27.2002 0 53.9004 8.19922 76.5 23.0996c-72.9004 59.2998 -72.4004 171.2 0 230.5c-22.5996 15 -49.2998 23.0996 -76.5 23.0996\nc-76.4004 0.100586 -138.5 -62 -138.5 -138.199zM288 118.6c70.5 55 70.2002 162.2 0 217.5c-70.2002 -55.2998 -70.5 -162.6 0 -217.5zM145.7 42.2998c0 8.7002 -5.7002 14.4004 -14.7002 14.7002c-4.59961 0 -9.5 -1.40039 -12.7998 -6.5\nc-2.40039 4.09961 -6.5 6.5 -12.2002 6.5c-3.7998 0 -7.59961 -1.40039 -10.5996 -5.40039v4.40039h-8.2002v-36.7002h8.2002c0 18.9004 -2.5 30.2002 9 30.2002c10.1992 0 8.19922 -10.2002 8.19922 -30.2002h7.90039c0 18.2998 -2.5 30.2002 9 30.2002\nc10.2002 0 8.2002 -10 8.2002 -30.2002h8.2002v23h-0.200195zM190.6 56h-7.89941v-4.40039c-2.7002 3.30078 -6.5 5.40039 -11.7002 5.40039c-10.2998 0 -18.2002 -8.2002 -18.2002 -19.2998c0 -11.2002 7.90039 -19.2998 18.2002 -19.2998\nc5.2002 0 9 1.89941 11.7002 5.39941v-4.59961h7.89941v36.7998zM231.1 30.4004c0 15 -22.8994 8.19922 -22.8994 15.1992c0 5.7002 11.8994 4.80078 18.5 1.10059l3.2998 6.5c-9.40039 6.09961 -30.2002 6 -30.2002 -8.2002c0 -14.2998 22.9004 -8.2998 22.9004 -15\nc0 -6.2998 -13.5 -5.7998 -20.7002 -0.799805l-3.5 -6.2998c11.2002 -7.60059 32.5996 -6 32.5996 7.5zM266.5 21.0996l-2.2002 6.80078c-3.7998 -2.10059 -12.2002 -4.40039 -12.2002 4.09961v16.5996h13.1006v7.40039h-13.1006v11.2002h-8.19922v-11.2002h-7.60059\nv-7.2998h7.60059v-16.7002c0 -17.5996 17.2998 -14.4004 22.5996 -10.9004zM279.8 34.5h27.5c0 16.2002 -7.39941 22.5996 -17.3994 22.5996c-10.6006 0 -18.2002 -7.89941 -18.2002 -19.2998c0 -20.5 22.5996 -23.8994 33.7998 -14.2002l-3.7998 6\nc-7.7998 -6.39941 -19.6006 -5.7998 -21.9004 4.90039zM338.9 56c-4.60059 2 -11.6006 1.7998 -15.2002 -4.40039v4.40039h-8.2002v-36.7002h8.2002v20.7002c0 11.5996 9.5 10.0996 12.7998 8.40039zM349.5 37.7002c0 11.3994 11.5996 15.0996 20.7002 8.39941l3.7998 6.5\nc-11.5996 9.10059 -32.7002 4.10059 -32.7002 -15c0 -19.7998 22.4004 -23.7998 32.7002 -15l-3.7998 6.5c-9.2002 -6.5 -20.7002 -2.59961 -20.7002 8.60059zM416.2 56h-8.2002v-4.40039c-8.2998 11 -29.9004 4.80078 -29.9004 -13.8994\nc0 -19.2002 22.4004 -24.7002 29.9004 -13.9004v-4.59961h8.2002v36.7998zM449.9 56c-2.40039 1.2002 -11 2.90039 -15.2002 -4.40039v4.40039h-7.90039v-36.7002h7.90039v20.7002c0 11 9 10.2998 12.7998 8.40039zM490.2 70.9004h-7.90039v-19.3008\nc-8.2002 10.9004 -29.8994 5.10059 -29.8994 -13.8994c0 -19.4004 22.5 -24.6006 29.8994 -13.9004v-4.59961h7.90039v51.7002zM497.8 146v-4.59961h0.799805v4.59961h1.90039v0.799805h-4.59961v-0.799805h1.89941zM504.4 22.2002c0 0.5 0 1.09961 -0.300781 1.59961\nc-0.299805 0.299805 -0.5 0.799805 -0.799805 1.10059c-0.299805 0.299805 -0.799805 0.5 -1.09961 0.799805c-0.5 0 -1.10059 0.299805 -1.60059 0.299805c-0.299805 0 -0.799805 -0.299805 -1.39941 -0.299805c-0.5 -0.299805 -0.799805 -0.5 -1.10059 -0.799805\nc-0.5 -0.300781 -0.799805 -0.800781 -0.799805 -1.10059c-0.299805 -0.5 -0.299805 -1.09961 -0.299805 -1.59961c0 -0.299805 0 -0.799805 0.299805 -1.40039c0 -0.299805 0.299805 -0.799805 0.799805 -1.09961c0.300781 -0.299805 0.5 -0.5 1.10059 -0.799805\nc0.5 -0.300781 1.09961 -0.300781 1.39941 -0.300781c0.5 0 1.10059 0 1.60059 0.300781c0.299805 0.299805 0.799805 0.5 1.09961 0.799805s0.5 0.799805 0.799805 1.09961c0.300781 0.600586 0.300781 1.10059 0.300781 1.40039zM507.6 146.9h-1.39941l-1.60059 -3.5\nl-1.59961 3.5h-1.40039v-5.40039h0.800781v4.09961l1.59961 -3.5h1.09961l1.40039 3.5v-4.09961h1.09961v5.40039zM512 227.4c0 76.1992 -62.0996 138.3 -138.5 138.3c-27.2002 0 -53.9004 -8.2002 -76.5 -23.1006c72.0996 -59.2998 73.2002 -171.5 0 -230.5\nc22.5996 -15 49.5 -23.0996 76.5 -23.0996c76.4004 -0.0996094 138.5 61.9004 138.5 138.4z\" />\n    <glyph glyph-name=\"cc-discover\" unicode=\"&#xf1f2;\" horiz-adv-x=\"576\" \nd=\"M520.4 251.9c0 -8.40039 -5.5 -12.8008 -15.8008 -12.8008h-4.69922v24.9004h4.89941c10.1006 0 15.6006 -4.2002 15.6006 -12.0996zM528 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h480z\nM483.9 277.1v-82h16v32.8008h2.19922l22.2002 -32.8008h19.6006l-25.8008 34.4004c12.1006 2.5 18.7002 10.5996 18.7002 23.2002c0 28.5 -30.2998 24.3994 -52.8994 24.3994zM428 277v-82h45.2998v13.7998h-29.2998v22.2002h28.2998v13.7998h-28.2998v18.2002h29.2998v14\nh-45.2998zM359.3 277h-17.5l35 -84.2002h8.60059l35.5 84.2002h-17.5l-22.2002 -55.2002zM303.4 280c-24.6006 0 -44.6006 -19.9004 -44.6006 -44.5996c0 -24.6006 19.9004 -44.6006 44.6006 -44.6006c24.5996 0 44.5996 19.9004 44.5996 44.6006\nc0 24.5996 -19.9004 44.5996 -44.5996 44.5996zM254.1 273.9c-30.1992 15 -63.2998 -6.80078 -63.2998 -38c0 -32.5 33.6006 -52.5 63.2998 -38.2002v19c-19.2998 -19.2998 -46.7998 -5.7998 -46.7998 19.2002c0 23.6992 26.7002 39.0996 46.7998 19v19zM156.9 207.6\nc-7.60059 0 -13.8008 3.7002 -17.5 10.8008l-10.3008 -9.90039c17.8008 -26.0996 56.6006 -18.2002 56.6006 11.2998c0 13.1006 -5.40039 19 -23.6006 25.6006c-9.59961 3.39941 -12.2998 5.89941 -12.2998 10.2998c0 8.7002 14.5 14.0996 24.9004 2.5l8.39941 10.7998\nc-19.0996 17.0996 -49.6992 8.90039 -49.6992 -14.2998c0 -11.2998 5.19922 -17.2002 20.1992 -22.7002c25.7002 -9.09961 14.7002 -24.4004 3.30078 -24.4004zM55.4004 195c30.8994 0 44.0996 22.4004 44.0996 40.9004c0 24.0996 -18 41.0996 -44.0996 41.0996h-23.4004\nv-82h23.4004zM122.9 195v82h-16v-82h16zM544 15v145c-33.2998 -20.7998 -226.4 -124.4 -416 -160h401c8.2002 0 15 6.7998 15 15zM74.0996 256.4c5.7002 -5 8.90039 -12.6006 8.90039 -20.5c0 -7.90039 -3.2002 -15.5 -8.90039 -20.7002\nc-4.89941 -4.40039 -11.5996 -6.40039 -21.8994 -6.40039h-4.2002v54.2002h4.2002c10.2998 0 16.7002 -1.7002 21.8994 -6.59961z\" />\n    <glyph glyph-name=\"cc-amex\" unicode=\"&#xf1f3;\" horiz-adv-x=\"576\" \nd=\"M325.1 280.2c0.100586 -8 -4.2998 -15.7002 -11.6992 -18.7002c9.5 -3.2998 11 -9.2002 11 -18.4004v-13.5h-16.6006c-0.299805 14.8008 3.60059 25.1006 -14.7998 25.1006h-18v-25.1006h-16.4004v69.3008l39.1006 -0.300781c13.2998 0 27.3994 -2 27.3994 -18.3994z\nM295.7 268.9c5.7002 0 11 1.2998 11 7.89941c0 6.40039 -5.60059 7.40039 -10.7002 7.40039h-21v-15.2998h20.7002zM279 179.4c15.5996 0 27.9004 -5.40039 27.9004 -22.7002c0 -27.9004 -30.4004 -23.2998 -49.3008 -23.2998l-0.0996094 -23.3008h-32.2002l-20.3994 23\nl-21.3008 -23h-65.3994l0.0996094 69.3008h66.5l20.5 -22.8008l21 22.8008h52.7002zM175.2 124.7l19 20.2002l-17.9004 20.1992h-41.7002v-12.5h36.3008v-14.0996h-36.3008v-13.7998h40.6006zM241 116.5v55.5l-25.2998 -27.4004zM278.8 147.5\nc5.90039 0 10.5 2.7998 10.5 9.2002c0 6.09961 -4.59961 8.39941 -10.2002 8.39941h-21.5v-17.5996h21.2002zM247.2 284.2h-38.9004v-12.5h37.7998v-14.1006h-37.7998v-13.7998h38.9004v-14.2998h-55.5v69.2998h55.5v-14.5996zM576 192.6h-0.200195h0.200195zM381.4 160.7\nc-0.100586 -7.60059 -4.2002 -15.2998 -11.9004 -18.4004c9.2002 -3.2998 11 -9.5 11 -18.3994l-0.0996094 -13.8008h-16.6006l0.100586 11.5c0 11.8008 -3.80078 13.8008 -14.8008 13.8008h-17.5996l-0.0996094 -25.3008h-16.6006l0.100586 69.3008h39.3994\nc13 0 27.1006 -2.30078 27.1006 -18.7002zM352.2 149.5c5.59961 0 11 1.2998 11 8.2002c0 6.39941 -5.60059 7.39941 -10.7002 7.39941h-21v-15.5996h20.7002zM179.4 229.5h-16.8008v54.2002l-24 -54.2002h-14.5996l-24 54.2002v-54.2002h-33.7998l-6.40039 15.2998h-34.5\nl-6.39941 -15.2998h-17.9004l29.7002 69.2998h24.5l28.0996 -65.7002v65.7002h27.1006l21.6992 -47l19.7002 47h27.6006v-69.2998zM31.2002 259.2h22.7002l-11.5 27.5996zM508.6 100.3c34.8008 0 54.8008 -2.2002 67.5 6.10059v-90.4004c0 -26.5 -21.5 -48 -48 -48h-480.1\nc-26.5 0 -48 21.5 -48 48v203.7h26.5996c4.2002 10.0996 2.2002 5.2998 6.40039 15.2998h19.2002c4.2002 -10 2.2002 -5.2002 6.39941 -15.2998h52.9004v11.3994c2.2002 -5 1.09961 -2.5 5.09961 -11.3994h29.5c2.40039 5.5 2.60059 5.7998 5.10059 11.3994v-11.3994h135.5\nv25.0996c6.39941 0 8 0.100586 9.7998 -0.200195c0 0 -0.200195 -10.8994 0.0996094 -24.7998h66.5v8.90039c7.40039 -5.90039 17.4004 -8.90039 29.7002 -8.90039h26.7998c4.2002 10.1006 2.2002 5.2998 6.40039 15.2998h19c6.5 -15 0.200195 -0.5 6.59961 -15.2998\nh52.8008v21.9004c11.7998 -19.7002 7.7998 -12.9004 13.1992 -21.9004h41.6006v92h-39.9004v-18.3994c-12.2002 20.1992 -6.2998 10.3994 -11.2002 18.3994h-43.2998v-20.5996c-6.2002 14.5996 -4.59961 10.7998 -8.7998 20.5996h-32.4004\nc-0.399414 0 -2.2998 -0.200195 -2.2998 0.299805h-27.5996c-12.7998 0 -23.1006 -3.19922 -30.7002 -9.2998v9.2998h-39.9004v-5.2998c-10.7998 6.10059 -20.6992 5.10059 -64.3994 5.2998c-0.100586 0 -11.6006 0.100586 -11.6006 0h-103\nc-2.5 -6.09961 -6.7998 -16.3994 -12.5996 -30c-2.7998 6 -11 23.8008 -13.9004 30h-46v-21.0996c-7.39941 17.4004 -4.69922 11 -9 21.0996h-39.6992c-3.40039 -7.89941 -13.7002 -32 -23.1006 -53.8994v109.8c0 26.5 21.5 48 48 48h480c26.5 0 48 -21.5 48 -48v-175.4\nc-37.7002 0.200195 -44 0.900391 -54.2998 -5v5c-45.2998 0 -53.5 1.7002 -64.9004 -5.19922v5.19922h-78.1992v-5.09961c-11.4004 6.5 -21.4004 5.09961 -75.7002 5.09961v-5.59961c-6.2998 3.7002 -14.5 5.59961 -24.2998 5.59961h-58\nc-3.5 -3.7998 -12.5 -13.6992 -15.7002 -17.1992c-12.7002 14.0996 -10.5 11.5996 -15.5 17.1992h-83.1006v-92.2998h82c3.30078 3.5 12.9004 13.9004 16.1006 17.4004c12.7002 -14.2998 10.2998 -11.7002 15.3994 -17.4004h48.9004\nc0 14.7002 0.0996094 8.2998 0.0996094 23c11.5 -0.200195 24.3008 0.200195 34.3008 6.2002c0 -13.9004 -0.100586 -17.0996 -0.100586 -29.2002h39.6006c0 18.5 0.0996094 7.40039 0.0996094 25.2998c6.2002 0 7.7002 0 9.40039 -0.0996094\nc0.0996094 -1.2998 0 0 0 -25.2002c152.8 0 145.899 -1.09961 156.699 4.5v-4.5zM544.9 164.8c-4.60059 0 -9.2002 -0.700195 -9.2002 -6.5c0 -12.2002 28.7998 0.299805 39.2998 -13.5v-25.7998c-4.90039 -7.09961 -14.0996 -8.90039 -22.5 -8.90039h-32l0.0996094 14.8008\nh32c4.10059 0 8.40039 1.2998 8.40039 6.39941c0 14.6006 -42.7002 -5.59961 -42.7002 27.4004c0 14.0996 11 20.7002 23.7998 20.7002h32.9004v-14.6006h-30.0996zM487.9 125c4.09961 0 8.69922 1 8.7998 6.40039c0 14.8994 -42.7002 -5.60059 -42.7002 27.3994\nc0 14.1006 10.7002 20.7002 23.5 20.7002h33.2002v-14.5996h-30.4004c-4.2998 0 -9.2002 -0.800781 -9.2002 -6.40039c0 -15.0996 42.9004 6.90039 42.9004 -26.2998c0 -16.4004 -11.4004 -22 -26.2002 -22h-32.2002l0.100586 14.7998h32.2002zM445.7 165.1h-38.5v-12.5\nh37.7998v-14.0996h-37.9004v-13.7998l38.6006 -0.299805l-0.100586 -14.3008h-55.1992l0.0996094 69.3008h55.2002v-14.3008zM389.4 273.2c0.299805 0.299805 1.69922 1 7.2998 1c1 0 2 -0.100586 3.09961 -0.100586l-7.2998 -16.8994\nc-2.2998 0 -3.2002 0.399414 -3.40039 0.5c-0.199219 0.200195 -1.09961 1.89941 -1.09961 7.89941c0 5.40039 1.09961 7.40039 1.40039 7.60059zM409.8 283.7h-0.0996094h0.0996094zM393.6 298.9h16.1006v-15.2002c-17.4004 0.299805 -33.1006 4.09961 -33.1006 -19.7002\nc0 -11.7998 2.80078 -19.9004 16.1006 -19.9004h7.39941l23.5 54.5h24.8008l27.8994 -65.3994v65.3994h25.2998l29.1006 -48.0996v48.0996h16.8994v-69h-23.5996l-31.2002 51.9004v-51.9004h-33.7002l-6.59961 15.3008h-34.2998l-6.40039 -15.3008h-19.2002\nc-22.7998 0 -33 11.8008 -33 34c0 23.3008 10.5 35.3008 34 35.3008zM435.7 286.8l-11.6006 -27.5996h22.8008zM334.6 298.8h16.9004v-69.2998h-16.9004v69.2998z\" />\n    <glyph glyph-name=\"cc-paypal\" unicode=\"&#xf1f4;\" horiz-adv-x=\"576\" \nd=\"M186.3 189.8c0 -12.2002 -9.7002 -21.5 -22 -21.5c-9.2002 0 -16 5.2002 -16 15c0 12.2002 9.5 22 21.7002 22c9.2998 0 16.2998 -5.7002 16.2998 -15.5zM80.5 238.3c11.2998 0 19.7998 -1.5 17.5 -14.8994c-2 -12.7002 -10.5 -14.2002 -21.5 -14.2002l-8.2002 -0.299805\nl4.2998 26.6992c0.200195 1.7002 1.7002 2.7002 3.2002 2.7002h4.7002zM364.5 238.3c8.5 0 18 -0.5 18.0996 -11.0996c0 -15 -9 -18 -22 -18l-8 -0.299805l4.2002 26.6992c0.200195 1.7002 1.40039 2.7002 3.2002 2.7002h4.5zM576 368v-352c0 -26.5 -21.5 -48 -48 -48h-480\nc-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h480c26.5 0 48 -21.5 48 -48zM128.3 232.6c0 21 -16.2002 28 -34.7002 28h-40c-2.5 0 -5 -2 -5.19922 -4.69922l-16.4004 -102.101c-0.299805 -2 1.2002 -4 3.2002 -4h19c2.7002 0 5.2002 2.90039 5.5 5.7002l4.5 26.5996\nc1 7.2002 13.2002 4.7002 18 4.7002c28.5996 0 46.0996 17 46.0996 45.7998zM212.5 223.8h-19c-3.7998 0 -4 -5.5 -4.2002 -8.2002c-5.7998 8.5 -14.2002 10 -23.7002 10c-24.5 0 -43.1992 -21.5 -43.1992 -45.1992c0 -19.5 12.1992 -32.2002 31.6992 -32.2002\nc9 0 20.2002 4.89941 26.5 11.8994c-0.5 -1.5 -1 -4.69922 -1 -6.19922c0 -2.30078 1 -4 3.2002 -4h17.2002c2.7002 0 5 2.89941 5.5 5.69922l10.2002 64.3008c0.299805 1.89941 -1.2002 3.89941 -3.2002 3.89941zM253 125.9l63.7002 92.5996c0.5 0.5 0.5 1 0.5 1.7002\nc0 1.7002 -1.5 3.5 -3.2002 3.5h-19.2002c-1.7002 0 -3.5 -1 -4.5 -2.5l-26.5 -39l-11 37.5c-0.799805 2.2002 -3 4 -5.5 4h-18.7002c-1.69922 0 -3.19922 -1.7998 -3.19922 -3.5c0 -1.2002 19.5 -56.7998 21.1992 -62.1006c-2.69922 -3.7998 -20.5 -28.5996 -20.5 -31.5996\nc0 -1.7998 1.5 -3.2002 3.2002 -3.2002h19.2002c1.7998 0.100586 3.5 1.10059 4.5 2.60059zM412.3 232.6c0 21 -16.2002 28 -34.7002 28h-39.6992c-2.7002 0 -5.2002 -2 -5.5 -4.69922l-16.2002 -102c-0.200195 -2 1.2998 -4 3.2002 -4h20.5c2 0 3.5 1.5 4 3.19922l4.5 29\nc1 7.2002 13.1992 4.7002 18 4.7002c28.3994 0 45.8994 17 45.8994 45.7998zM496.5 223.8h-19c-3.7998 0 -4 -5.5 -4.2998 -8.2002c-5.5 8.5 -14 10 -23.7002 10c-24.5 0 -43.2002 -21.5 -43.2002 -45.1992c0 -19.5 12.2002 -32.2002 31.7002 -32.2002\nc9.2998 0 20.5 4.89941 26.5 11.8994c-0.299805 -1.5 -1 -4.69922 -1 -6.19922c0 -2.30078 1 -4 3.2002 -4h17.2998c2.7002 0 5 2.89941 5.5 5.69922l10.2002 64.3008c0.299805 1.89941 -1.2002 3.89941 -3.2002 3.89941zM544 257.1c0 2 -1.5 3.5 -3.2002 3.5h-18.5\nc-1.5 0 -3 -1.19922 -3.2002 -2.69922l-16.1992 -104l-0.300781 -0.5c0 -1.80078 1.5 -3.5 3.5 -3.5h16.5c2.5 0 5 2.89941 5.2002 5.69922l16.2002 101.2v0.299805zM454 205.3c9.2998 0 16.2998 -5.7002 16.2002 -15.5c0 -12.2998 -9.7002 -21.5 -21.7002 -21.5\nc-9.2002 0 -16.2002 5.2998 -16.2002 15c0 12.2998 9.5 22 21.7002 22z\" />\n    <glyph glyph-name=\"cc-stripe\" unicode=\"&#xf1f5;\" horiz-adv-x=\"576\" \nd=\"M492.4 227.2c8.69922 0 18 -6.7002 18 -22.7002h-36.7002c0 16 9.7998 22.7002 18.7002 22.7002zM375 224.6c12.9004 0.100586 21.9004 -14.5 21.9004 -33.0996c0 -19.0996 -8.80078 -33.4004 -21.9004 -33.4004c-8.2998 0 -13.2998 3 -16.7998 6.7002l-0.200195 52.7998\nc3.7002 4.10059 8.7998 7 17 7zM528 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h480zM122.2 166.9c0 42.2998 -54.2998 34.6992 -54.2998 50.6992c0 5.5 4.59961 7.7002 12.0996 7.7002\nc10.7998 0 24.5 -3.2998 35.2998 -9.09961v33.3994c-11.7998 4.7002 -23.5 6.5 -35.2998 6.5c-28.7998 0 -48 -15 -48 -40.1992c0 -39.3008 54 -32.9004 54 -49.9004c0 -6.59961 -5.7002 -8.7002 -13.5996 -8.7002c-11.8008 0 -26.9004 4.90039 -38.9004 11.2998v-33.8994\nc13.2002 -5.7002 26.5996 -8.10059 38.7998 -8.10059c29.6006 0.200195 49.9004 14.7002 49.9004 40.3008zM191 223.5v30.2998h-26.9004v30.7998l-34.6992 -7.39941l-0.200195 -113.9c0 -21 15.7998 -36.5 36.8994 -36.5c11.6006 0 20.2002 2.10059 24.9004 4.7002v28.9004\nc-4.5 -1.80078 -27 -8.30078 -27 12.5996v50.5h27zM265 221.1v32.7002h-0.0996094c-4.7002 1.7002 -21.3008 4.7998 -29.6006 -10.5l-2.2002 10.5h-30.6992v-124.5h35.5v84.4004c8.39941 11 22.5996 8.89941 27.0996 7.39941zM309.1 129.3v124.5h-35.6992v-124.5h35.6992z\nM309.1 272.2v28.8994l-35.6992 -7.59961v-28.9004zM383.2 126.7c25.3994 0.0996094 48.5996 20.5 48.5996 65.5996c0 41.2998 -23.5 63.7998 -48.3994 63.7998c-13.9004 0 -22.9004 -6.59961 -27.8008 -11.0996l-1.7998 8.7998h-31.2998v-165.8l35.5 7.5l0.0996094 40.2002\nc5.10059 -3.7002 12.7002 -9 25.1006 -9zM543.6 178.2c0.100586 2 0.400391 9.39941 0.400391 12.8994c0 36.4004 -17.5996 65.1006 -51.2998 65.1006c-33.7998 0 -54.2998 -28.7002 -54.2998 -64.9004c0 -42.7998 24.1992 -64.5 58.7998 -64.5\nc17 0 29.7002 3.90039 39.3994 9.2002v28.5996c-9.69922 -4.89941 -20.7998 -7.89941 -34.8994 -7.89941c-13.7998 0 -26 4.89941 -27.6006 21.5h69.5z\" />\n    <glyph glyph-name=\"lastfm\" unicode=\"&#xf202;\" horiz-adv-x=\"512\" \nd=\"M225.8 80.9004c0 0 -31.7002 -31.1006 -97.8994 -31.1006c-82.2002 0 -127.9 48.1006 -127.9 137.2c0 92.7002 45.7002 147.2 131.8 147.2c117.7 0 129.3 -66.2002 161.3 -163c14 -42.7998 38.7002 -73.9004 97.9004 -73.9004c39.9004 0 61 8.7998 61 30.5\nc0 31.9004 -34.9004 35.1006 -79.7998 45.7002c-48.6006 11.7002 -68 36.9004 -68 76.7998c0 64 51.5996 83.9004 104.399 83.9004c59.8008 0 96.2002 -21.7002 100.9 -74.5l-58.5996 -7c-2.30078 25.2002 -17.5 35.7998 -45.7002 35.7998\nc-25.7998 0 -41.6006 -11.7998 -41.6006 -31.7002c0 -17.5996 7.60059 -28.0996 33.4004 -34c52.2998 -11.5 115 -19.2002 115 -92.0996c0 -58.6006 -49.2998 -80.9004 -122 -80.9004c-101.4 0 -136.6 45.7002 -155.4 102.601\nc-26.0996 81.5996 -34.3994 134.899 -100.899 134.899c-35.7002 0 -72.1006 -25.7998 -72.1006 -97.8994c0 -56.3008 28.7002 -91.5 69.2002 -91.5c45.7002 0 76.2002 34 76.2002 34z\" />\n    <glyph glyph-name=\"lastfm-square\" unicode=\"&#xf203;\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM307.8 103.1c45.4004 0 76.2002 13.9004 76.1006 50.6006c0 45.5 -39.1006 50.3994 -71.8008 57.5\nc-16.0996 3.7002 -20.8994 10.2998 -20.8994 21.2998c0 12.5 9.89941 19.7998 26 19.7998c17.5996 0 27.0996 -6.59961 28.5996 -22.3994l36.7002 4.39941c-2.90039 33 -25.5996 46.6006 -63 46.6006c-32.9004 0 -65.2002 -12.4004 -65.2002 -52.4004\nc0 -24.9004 12.1006 -40.7002 42.5 -48c28.1006 -6.59961 49.9004 -8.7002 49.9004 -28.5996c0 -13.6006 -13.2002 -19.1006 -38.1006 -19.1006c-37 0 -52.3994 19.4004 -61.1992 46.2002c-20 60.5 -27.3008 101.9 -100.801 101.9c-53.8994 0 -82.5 -34.1006 -82.5 -92\nc0 -55.7002 28.6006 -85.8008 79.9004 -85.8008c41.4004 0 61.2002 19.4004 61.2002 19.4004l-11.7002 31.9004s-19 -21.3008 -47.5996 -21.3008c-25.3008 0 -43.3008 22 -43.3008 57.2002c0 45.1006 22.7002 61.2002 45.1006 61.2002c41.5 0 46.7002 -33.2998 63 -84.2998\nc11.7002 -35.5 33.7002 -64.1006 97.0996 -64.1006z\" />\n    <glyph glyph-name=\"ioxhost\" unicode=\"&#xf208;\" horiz-adv-x=\"640\" \nd=\"M616 288c13.2998 0 24 -10.7002 24 -24c0 -13.2002 -10.7002 -24 -24 -24h-52.7002c3.10059 -15.5 4.7002 -31.5996 4.7002 -48c0 -137 -111 -248 -248 -248c-102.9 0 -191.2 62.7002 -228.7 152h-67.2998c-13.2998 0 -24 10.7002 -24 24c0 13.2002 10.7002 24 24 24\nh52.7002c-3.10059 15.5 -4.7002 31.5996 -4.7002 48c0 137 111 248 248 248c102.9 0 191.2 -62.7002 228.7 -152h67.2998zM520 192c0 16.5996 -2 32.5996 -5.7998 48h-298.2c-13.2998 0 -24 10.7002 -24 24c0 13.2002 10.7002 24 24 24h279.5\nc-33.9004 62 -99.7998 104 -175.5 104c-110.5 0 -200 -89.5 -200 -200c0 -16.5996 2 -32.5996 5.7998 -48h298.2c13.2998 0 24 -10.7002 24 -24c0 -13.2002 -10.7002 -24 -24 -24h-279.5c33.9004 -62 99.7998 -104 175.5 -104c110.5 0 200 89.5 200 200zM216 216h208\nc13.2998 0 24 -10.7002 24 -24c0 -13.2002 -10.7002 -24 -24 -24h-208c-13.2998 0 -24 10.7002 -24 24c0 13.2002 10.7002 24 24 24z\" />\n    <glyph glyph-name=\"angellist\" unicode=\"&#xf209;\" \nd=\"M347.1 232.6c48 -11.6992 54.9004 -50.5996 54.9004 -93.6992c0 -114.301 -73.4004 -202.9 -191.4 -202.9c-96.1992 0 -164.6 76.4004 -164.5 148.6c0 37.1006 14.2002 61.7002 51.1006 71.7002c-3.10059 8.2998 -8 20.7998 -8 29.7002\nc0 23.5 24.8994 52.5996 48.2998 52.5996c6.90039 0 13.7002 -2 20 -4.2998c-12.4004 35.2002 -46.5996 126.7 -46.5996 162c0 28.7998 14.5996 51.7002 45.6992 51.7002c40 0 85.4004 -144 95.1006 -172.5c12.5 31.4004 52.5 163.1 97.0996 163.1\nc28 0 43.7002 -22.2998 43.7002 -48.8994c0 -30.2002 -33.7002 -124.5 -45.4004 -157.101zM311.7 340l-33.1006 -93.7002l34 -6c8.5 23.4004 47.1006 128.9 47.1006 148c0 7.10059 -2.2998 16 -10.9004 16c-16 0 -33.0996 -52 -37.0996 -64.2998zM142.3 399.7\nc0 -29.1006 34.6006 -120 45.5 -148.8c7.7002 4.39941 19.7998 2.69922 35.4004 1.39941l-34.6006 100.3c-31.7998 92.8008 -46.2998 59 -46.2998 47.1006zM140 204c-7.7002 0 -20.2998 -13.4004 -20.4004 -21.0996c0 -20.8008 56 -97.7002 76.9004 -97.7002\nc5.7002 0 10.5996 6.2998 10.5996 11.3994c0 12.8008 -37.7998 107.4 -67.0996 107.4zM324.3 17.7002c55.2998 61.5 49.1006 158.6 31 174.7c-24 21.0996 -106 29.0996 -138.3 29.0996c-17.2998 0 -17.4004 -6.40039 -17.4004 -13.0996\nc0 -43.7002 92.9004 -39.7002 120.601 -39.7002c11.2002 0 15.7998 -9.90039 16.8994 -21.1006c-7.39941 -7.39941 -17.6992 -11.6992 -27.3994 -15.3994c-9.40039 -3.40039 -19.1006 -7.10059 -27.1006 -13.1006c-22 -16 -43.6992 -43.3994 -43.6992 -71.6992\nc0 -17.7002 10.5996 -32.9004 10.5996 -50.3008c0 -0.299805 -2 -6.5 -2 -7.39941c-32.5996 2.2998 -40.5996 34.5996 -41.7002 61.7002c-3.39941 -0.900391 -8 -0.600586 -11.7002 -0.600586c5.10059 -17.7998 -11.8994 -42 -38 -42\nc-37.7998 0 -88 57.2002 -58.2998 86.9004c28.7002 -35.9004 35 -51.4004 51.1006 -51.4004c4 0 11.6992 3.40039 11.6992 8.2998c0 12.8008 -42.8994 73.1006 -54.2998 73.1006c-16.7998 0 -37.7002 -24.9004 -20.5996 -68.2998\nc22.5996 -55.7002 69.5 -88.3008 128.899 -88.3008c43.4004 0 80.6006 16.6006 109.7 48.6006zM225.7 143.7c3.2002 -8.2998 6.59961 -16.6006 9.39941 -25.1006c6.30078 7.10059 12.9004 13.7002 20.3008 19.1006c-10 2 -20 2.89941 -29.7002 6z\" />\n    <glyph glyph-name=\"buysellads\" unicode=\"&#xf20d;\" \nd=\"M224 297.3l42.9004 -160.7h-85.8008zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM382.7 42.7002l-94.5 298.7h-128.4l-94.5 -298.7h90.7002l111.7 91.5996l24.2002 -91.5996h90.7998z\n\" />\n    <glyph glyph-name=\"connectdevelop\" unicode=\"&#xf20e;\" horiz-adv-x=\"576\" \nd=\"M550.5 207c6.69629 -1.33887 11.7861 -7.5 11.7881 -14.7324c0 -7.5 -5.3584 -13.6602 -12.3223 -15l-54.9111 -95.3574c0.536133 -1.60742 0.804688 -3.21387 0.804688 -4.82129c0 -7.23145 -5.09082 -13.3926 -12.0547 -14.7314l-51.6963 -90.2686\nc0.535156 -1.33887 0.802734 -2.67773 0.802734 -4.28516c0 -8.30371 -6.69727 -15.2676 -15.2686 -15.2676c-4.28516 0 -8.30371 1.875 -10.9814 4.82129h-107.144c-2.67871 -3.21484 -6.96484 -5.35742 -11.5176 -5.35742s-8.83887 2.14258 -11.5166 5.35645h-106.875\nc-2.67969 -3.21484 -6.69727 -5.35742 -11.5186 -5.35742c-8.30371 0 -15.2676 6.69727 -15.2676 15.2676c0 1.875 0.535156 3.75 1.07031 5.35742l-51.6963 89.7324c-6.96484 1.33887 -12.0547 7.5 -12.0547 14.7314c0 1.875 0.268555 3.21387 0.804688 4.82129\nl-55.1797 95.3574c-6.96484 1.60742 -12.0537 7.76855 -12.0537 15c0 7.5 5.3584 13.6611 12.5898 15l53.3047 92.1436c0 0.536133 -0.268555 1.07227 -0.268555 1.60645c0 6.16113 3.75098 11.251 9.10742 13.6611l55.9824 97.2334\nc-0.536133 1.33887 -1.07129 3.21387 -1.07129 4.82129c0 8.57129 6.96484 15.2676 15.2676 15.2676c4.82227 0 8.83887 -2.14258 11.7861 -5.625h106.071c2.67871 3.48242 6.69629 5.625 11.5176 5.625s8.83887 -2.14258 11.5176 -5.62402h106.606\nc2.94727 3.48242 6.96484 5.625 11.7861 5.625c8.30371 0 15.2676 -6.69727 15.2676 -15.2676c0 -1.60742 -0.535156 -3.21484 -1.07031 -4.82129l55.4463 -95.8936c8.03613 -0.267578 14.7324 -6.96484 14.7324 -15.001c0 -2.67871 -0.803711 -5.08984 -1.875 -7.23145z\nM153.535 -2.73242v75.8037h-43.6602zM153.535 81.1074v50.624l-44.999 -47.4102c0.535156 -1.07227 1.07129 -2.14355 1.33887 -3.21387h43.6602zM153.535 143.518l0.000976562 92.9463l-50.0889 51.9648c-2.41113 -1.60645 -5.08887 -2.41113 -7.76855 -2.67871\nl-51.9648 -90c0.268555 -1.07227 0.268555 -2.14258 0.268555 -3.48242c0 -1.33887 0 -2.67871 -0.535156 -4.01758l55.7129 -96.4287c1.33887 -0.267578 2.67871 -1.07129 4.01758 -1.60742zM153.535 245.84v72.0527l-43.9277 -15.8037\nc0 -0.267578 0.267578 -0.803711 0.267578 -1.07227c0 -2.94531 -0.803711 -5.62402 -2.14258 -7.7666zM153.535 326.465v59.7324l-43.6602 -75.5361zM480.054 287.357l-0.267578 0.267578l-98.0361 -101.518l63.75 -67.2324l35.3584 167.143zM291.75 92.8926\nl-11.25 -11.7852h22.7676zM291.482 104.143l79.2852 82.2324l-83.0352 87.5889l-79.5537 -84.375zM296.839 98.25l16.875 -17.1426h124.02l5.8916 28.125l-67.5 71.25zM410.411 403.607l-117.053 -124.019l83.0342 -87.5889l97.5 101.25\nc-1.33984 2.14258 -2.14258 4.82129 -2.14258 7.7666v0.536133l-57.8574 100.714c-1.33984 0.268555 -2.41016 0.804688 -3.48145 1.34082zM401.304 405.75h-4.28711l-166.339 -60l57.0547 -60.2676zM277.821 405.75h-103.929l50.8936 -53.5713l148.393 53.5713h-75\nc-2.67871 -2.67773 -6.16016 -4.28516 -10.1787 -4.28516s-7.50098 1.60742 -10.1787 4.28516zM161.572 400.125v-70.7148l54.9111 19.8213l-51.1611 53.8398c-0.730469 -0.25293 -1.93066 -0.613281 -2.67969 -0.804688zM161.572 320.839v-83.3037l40.9814 -42.0527\nl79.5537 84.1064l-59.7324 63.2139zM161.572 228.161v-76.0723l36.4277 38.3037zM161.572 140.303v-59.1953h107.678l17.1426 17.6777l-82.7676 85.9814zM168.536 -21.75h1.33887l91.6074 94.8213h-99.9102v-89.7324l1.07031 -1.60645\nc2.41113 -0.804688 4.28613 -1.875 5.89355 -3.48242zM298.447 -21.75h104.194l-91.6064 94.8213h-38.3037l-91.6074 -94.8213h96.4287c2.68066 2.41016 6.42871 4.28516 10.4473 4.28516s7.76758 -1.875 10.4473 -4.28516zM418.447 -9.96387l17.4121 83.0361h-114.376\nl89.1953 -91.875c1.07227 0.536133 2.14355 1.07031 3.48242 1.33887zM431.303 12.2676l34.8223 60.8037h-21.9639zM466.125 81.1074c0.267578 1.07129 0.803711 2.14258 1.33887 2.94531l-17.1426 18.2139l-4.55371 -21.1592h20.3574zM532.286 188.518\nc-0.268555 1.33984 -0.536133 2.41113 -0.536133 3.75c0 1.60742 0.536133 2.94629 0.802734 4.28516l-45.8027 79.2861l-34.5537 -163.928l20.625 -21.9639c1.33887 0.802734 2.67871 1.33887 4.01758 1.87402z\" />\n    <glyph glyph-name=\"dashcube\" unicode=\"&#xf210;\" \nd=\"M326.6 344l102.2 104v-427c0 -50.5 -40.0996 -85 -91.2002 -85h-227.199c-51.1006 0 -91.2002 34.5 -91.2002 85v229.5c0 50.2002 40.0996 93.5 91.2002 93.5h216.199zM153.9 31.5v-0.0996094h223.8l-51.1006 52.2998v123.5c0 17.7002 -14.2998 32.5 -32 32.5h-140.699\nc-17.7002 0 -32.4004 -14.7998 -32.4004 -32.5v-142.9c0 -17.7002 14.7002 -32.7998 32.4004 -32.7998z\" />\n    <glyph glyph-name=\"forumbee\" unicode=\"&#xf211;\" \nd=\"M5.7998 138.3c-3.7998 17 -5.7998 34.2002 -5.7998 51.4004c0 123.3 99.7998 223.3 223.1 223.3c16.6006 0 33.3008 -2 49.3008 -5.5c-123.4 -47 -220.5 -145.5 -266.601 -269.2zM398.7 327.5c-151.101 -44 -269.2 -164.4 -312.3 -315.7\nc-17.2002 13.4004 -32.7002 30.9004 -45.2002 49c43.3994 149.9 160.1 267.7 309.7 312c18.0996 -12.5996 34.0996 -27.7998 47.7998 -45.2998zM414.5 74.7998c13.0996 -35.2998 24.2002 -73.2998 33.5 -109.8c-36.0996 9.2998 -72 20.5 -107 33.5996\nc-25.7002 -16 -54.5996 -26.8994 -84.5996 -31.2998c42.5996 79.7002 108.199 147.4 187.6 190.3c-4.09961 -29.0996 -14.2998 -57.6992 -29.5 -82.7998zM444.2 220.3c-113.7 -46.7002 -204.2 -139.399 -250.5 -253.5c-19.6006 2.7002 -38.5 7.60059 -56.6006 15.2002\nc44.9004 138.5 153.4 249.3 291.301 295.1c7.89941 -18.0996 13.1992 -37.2998 15.7998 -56.7998z\" />\n    <glyph glyph-name=\"leanpub\" unicode=\"&#xf212;\" horiz-adv-x=\"576\" \nd=\"M386.539 336.515l15.0957 -248.955l-10.9785 0.275391c-36.2324 0.824219 -71.6406 -8.7832 -102.657 -27.9971c-31.0156 19.2139 -66.4238 27.9971 -102.657 27.9971c-45.5635 0 -82.0693 -10.7051 -123.516 -27.7227l31.291 258.288\nc28.5459 11.8027 61.4834 18.1143 92.2256 18.1143c41.1729 0 73.8359 -13.1748 102.657 -42.5439c27.7227 28.2715 59.0127 41.7217 98.5391 42.5439zM569.07 0c-25.5264 0 -47.4854 5.21484 -70.542 15.6445c-34.3105 15.6455 -69.9932 24.9785 -107.871 24.9785\nc-38.9775 0 -74.9346 -12.9014 -102.657 -40.623c-27.7227 27.7227 -63.6797 40.623 -102.657 40.623c-37.8779 0 -73.5605 -9.33301 -107.871 -24.9785c-22.2324 -9.88086 -44.7402 -15.6445 -69.1689 -15.6445h-1.37305l42.5449 349.141\nc39.251 22.2334 87.0117 34.8594 132.301 34.8594c37.0547 0 75.209 -7.68457 106.225 -29.0947c31.0156 21.4102 69.1699 29.0947 106.225 29.0947c45.2891 0 93.0498 -12.626 132.301 -34.8594zM525.702 44.7412l-34.0361 280.246\nc-30.7422 13.999 -67.248 21.4102 -101.009 21.4102c-38.4287 0 -74.3848 -12.0771 -102.657 -38.7021c-28.2725 26.625 -64.2275 38.7021 -102.657 38.7021c-33.7607 0 -70.2666 -7.41113 -101.009 -21.4102l-34.0361 -280.246\nc47.2109 19.4863 82.8945 33.4854 135.045 33.4854c37.6045 0 70.8174 -9.60547 102.657 -29.6436c31.8398 20.0381 65.0518 29.6436 102.657 29.6436c52.1504 0 87.834 -13.999 135.045 -33.4854z\" />\n    <glyph glyph-name=\"sellsy\" unicode=\"&#xf213;\" horiz-adv-x=\"640\" \nd=\"M539.71 210.692c55.1572 -13.4834 94.0742 -63.124 94.0732 -119.509c0 -68.0264 -55.4639 -123.184 -123.185 -123.184h-381.197c-67.7217 0 -123.186 55.1572 -123.185 123.185c0 47.4961 27.8848 91.0098 70.7852 111.234\nc-2.14453 7.35449 -3.06543 15.0146 -3.06543 22.3691c0 46.2705 37.6914 83.9609 83.9629 83.9609c20.2227 0 39.835 -7.35449 55.1562 -20.5303c18.3867 74.7695 85.8008 127.781 163.021 127.781c92.542 0 167.924 -75.3818 167.924 -167.924\nc0 -12.5635 -1.22559 -25.127 -4.29004 -37.3838zM199.88 46.4463v110.928c0 8.27344 -7.04688 15.3213 -15.3213 15.3213h-30.9482c-8.27344 0 -15.3213 -7.04785 -15.3213 -15.3213v-110.928c0 -8.27344 7.04688 -15.3213 15.3213 -15.3213h30.9482\nc8.27344 0 15.3213 7.04688 15.3213 15.3213zM289.357 46.4463v131.458c0 8.27246 -7.04883 15.3203 -15.3223 15.3203h-30.9492c-8.27246 0 -15.3213 -7.04688 -15.3213 -15.3203v-131.458c0 -8.27344 7.04688 -15.3213 15.3213 -15.3213h30.9492\nc8.27344 0 15.3223 7.04688 15.3223 15.3213zM378.834 46.4463v162.714c0 8.27246 -7.04688 15.3213 -15.3213 15.3213h-30.9482c-8.27441 0 -15.3223 -7.04785 -15.3223 -15.3213v-162.714c0 -8.27344 7.04785 -15.3213 15.3223 -15.3213h30.9482\nc8.27441 0 15.3213 7.04688 15.3213 15.3213zM465.861 46.4463v224.612c0 8.58008 -7.04785 15.6279 -15.3223 15.6279h-28.4971c-8.27441 0 -15.3213 -7.04883 -15.3213 -15.6279v-224.612c0 -8.27344 7.04688 -15.3213 15.3213 -15.3213h28.4971\nc8.27441 0 15.3223 7.04688 15.3223 15.3213z\" />\n    <glyph glyph-name=\"shirtsinbulk\" unicode=\"&#xf214;\" \nd=\"M100 37.7002l4.40039 9.89941l30.5996 -13.3994l-4.40039 -9.90039zM139.4 20.2002l4.39941 9.89941l30.6006 -13.3994l-4.40039 -9.90039zM311.5 34.2002l30.5996 13.3994l4.40039 -9.89941l-30.5996 -13.4004zM179.1 3l4.40039 9.59961l30.2998 -13.3994\nl-4.39941 -9.90039zM60.4004 55.2002l4.39941 9.89941l30.6006 -13.6992l-4.40039 -9.60059zM271.8 16.7002l30.6006 13.3994l4.39941 -9.89941l-30.5996 -13.4004zM232.5 -0.799805l30.5996 13.3994l4.40039 -9.59961l-30.5996 -13.7002zM350.9 51.4004l30.5996 13.6992\nl4.40039 -9.89941l-30.6006 -13.4004zM170 401.4v-10.5h-33.5v10.5h33.5zM122.8 401.4l-0.0996094 -10.5h-33.5v10.5h33.5996zM75.5 401.4l0.0996094 -10.5h-33.2998v10.5h33.2002zM217 401.4v-10.5h-33.2002v10.5h33.2002zM311.5 401.4v-10.5h-33.5v10.5h33.5zM358.8 401.4\nv-10.5h-33.5v10.5h33.5zM264.2 401.4v-10.5h-33.2002v10.5h33.2002zM405.7 401.4v-10.5h-33.2998v10.5h33.2998zM52.7998 96.9004v-33.5h-10.7998v33.5h10.7998zM122.8 312.8l-0.0996094 -10.5h-33.5v10.5h33.5996zM52.7998 302.2v-23h-10.7998v33.5h33.5996v-10.5h-22.7998\nzM221.7 73.5996c-50.2002 0 -91.2998 40.8008 -91.2998 91.3008c0 50.1992 41.0996 91.2998 91.2998 91.2998c50.5 0 91.2998 -41.1006 91.2998 -91.2998c0 -50.5 -40.7998 -91.3008 -91.2998 -91.3008zM173.5 184.7c0 -44.2998 77.5996 -11.9004 77.5996 -38\nc0 -13.1006 -24 -14.2998 -32.6992 -14.2998c-12.3008 0 -29.8008 2.69922 -35.9004 14.8994h-0.900391l-9 -18.3994c14.8008 -9.30078 29.1006 -12.2002 47.2002 -12.2002c19.5 0 51 5.7998 51 31.2002c0 48.0996 -78.5 16.2998 -78.5 37.8994\nc0 13.1006 20.7998 14.9004 29.7998 14.9004c10.8008 0 29.2002 -3.2002 35.6006 -13.1006h0.899414l8.80078 16.9004c-15.1006 6.2002 -27.4004 12 -44.3008 12c-20.0996 0 -49.5996 -6.40039 -49.5996 -31.7998zM52.7998 269.6v-33.5996h-10.7998v33.5996h10.7998z\nM395.2 63.4004v33.5h10.7998v-33.5h-10.7998zM52.7998 140.1v-33.5h-10.7998v33.5h10.7998zM0 444.3h448v-406l-226.3 -98.5996l-221.7 98.5996v406zM418.8 57.2002h0.100586v270.1h-389.7v-270.1l192.8 -85.7002zM418.8 356.5h0.100586v58.5996h-389.7v-58.5996h389.6z\nM52.7998 226.4v-33.5h-10.7998v33.5h10.7998zM52.7998 183.2v-33.5h-10.7998v33.5h10.7998zM170 312.8v-10.5h-33.5v10.5h33.5zM395.2 149.7v33.5h10.7998v-33.5h-10.7998zM395.2 192.9v33.5h10.7998v-33.5h-10.7998zM217 312.8v-10.5h-33.2002v10.5h33.2002zM395.2 236\nv33.5h10.7998v-33.5h-10.7998zM395.2 106.5v33.5h10.7998v-33.5h-10.7998zM264.2 312.8v-10.5h-33.2002v10.5h33.2002zM311.5 312.8v-10.5h-33.5v10.5h33.5zM395.2 279.2l0.0996094 23h-22.7998v10.5h33.5v-33.5h-10.7998zM358.8 312.8v-10.5h-33.5v10.5h33.5z\" />\n    <glyph glyph-name=\"simplybuilt\" unicode=\"&#xf215;\" horiz-adv-x=\"512\" \nd=\"M481.2 384c14.7002 0 26.5 -11.7998 26.7002 -26.2998v-331.4c0 -14.5 -11.8008 -26.2998 -26.6006 -26.2998h-450.399c-14.8008 0 -26.6006 11.7998 -26.6006 26.2998v331.4c0 14.5 11.7998 26.2998 26.4004 26.2998h106c14.5996 0 26.5996 -11.7998 26.5996 -26.2998\nv-39.6006h185.3v39.6006c0 14.5 12.1006 26.2998 26.6006 26.2998h106zM149.8 92.2002c36.9004 0 66.6006 29.7002 66.6006 66.3994c0 36.9004 -29.7002 66.6006 -66.6006 66.6006c-36.7002 0 -66.3994 -29.7002 -66.3994 -66.6006\nc0 -36.6992 29.7998 -66.3994 66.3994 -66.3994zM362.2 92.2002c36.5996 0 66.3994 29.7002 66.3994 66.5996c0 36.7002 -29.7998 66.4004 -66.3994 66.4004c-36.9004 0 -66.6006 -29.7998 -66.6006 -66.4004c0 -36.8994 29.7002 -66.5996 66.6006 -66.5996z\" />\n    <glyph glyph-name=\"skyatlas\" unicode=\"&#xf216;\" horiz-adv-x=\"640\" \nd=\"M640 118.7c0 -65.9004 -52.5 -114.4 -117.5 -114.4c-165.9 0 -196.6 249.7 -359.7 249.7c-146.899 0 -147.1 -212.2 5.60059 -212.2c42.5 0 90.8994 17.7998 125.3 42.5c5.59961 4.10059 16.8994 16.2998 22.7998 16.2998s10.9004 -5 10.9004 -10.8994\nc0 -7.7998 -13.1006 -19.1006 -18.7002 -24.1006c-40.9004 -35.5996 -100.3 -61.1992 -154.7 -61.1992c-83.4004 -0.100586 -154 59 -154 144.899c0 85.9004 67.5 149.101 152.8 149.101c185.3 0 222.5 -245.9 361.9 -245.9c99.8994 0 94.7998 139.7 3.39941 139.7\nc-17.5 0 -35 -11.6006 -46.8994 -11.6006c-8.40039 0 -15.9004 7.2002 -15.9004 15.6006c0 11.5996 5.2998 23.7002 5.2998 36.2998c0 66.5996 -50.8994 114.7 -116.899 114.7c-53.1006 0 -80 -36.9004 -88.7998 -36.9004c-6.2002 0 -11.2002 5 -11.2002 11.2002\nc0 5.59961 4.09961 10.2998 7.7998 14.4004c25.2998 28.7998 64.7002 43.6992 102.8 43.6992c79.4004 0 139.101 -58.3994 139.101 -137.8c0 -6.89941 -0.300781 -13.7002 -1.2002 -20.5996c11.8994 3.09961 24.0996 4.7002 35.8994 4.7002\nc60.7002 0 111.9 -45.3008 111.9 -107.2z\" />\n    <glyph glyph-name=\"pinterest-p\" unicode=\"&#xf231;\" horiz-adv-x=\"384\" \nd=\"M204 441.5c94.2002 0 180 -64.7998 180 -164.1c0 -93.3008 -47.7002 -196.801 -153.9 -196.801c-25.1992 0 -57 12.6006 -69.2998 36c-22.7998 -90.2998 -21 -103.8 -71.3994 -172.8c-5.2002 -1.89941 -3.5 -2.2998 -6.90039 1.5c-1.7998 18.9004 -4.5 37.5 -4.5 56.4004\nc0 61.2002 28.2002 149.7 42 209.1c-7.5 15.2998 -9.59961 33.9004 -9.59961 50.7002c0 80 93.8994 92 93.8994 25.7998c0 -39 -26.3994 -75.5996 -26.3994 -113.399c0 -25.8008 21.2998 -43.8008 46.1992 -43.8008c69 0 90.3008 99.6006 90.3008 152.7\nc0 71.1006 -50.4004 109.8 -118.5 109.8c-79.2002 0 -140.4 -57 -140.4 -137.399c0 -38.7002 23.7002 -58.5 23.7002 -67.7998c0 -7.80078 -5.7002 -35.4004 -15.6006 -35.4004c-24 0 -63.5996 40 -63.5996 110.4c0 110.699 101.4 179.1 204 179.1z\" />\n    <glyph glyph-name=\"whatsapp\" unicode=\"&#xf232;\" \nd=\"M380.9 350.9c41.8994 -42 67.0996 -97.7002 67.0996 -157c0 -122.4 -101.8 -222 -224.1 -222h-0.100586c-37.2002 0 -73.7002 9.2998 -106.1 27l-117.7 -30.9004l31.5 115c-19.4004 33.7002 -29.5996 71.9004 -29.5996 111c0 122.4 99.5996 222 222 222\nc59.2998 0 115.1 -23.0996 157 -65.0996zM223.9 9.2998c101.699 0 186.6 82.7998 186.6 184.601c0.0996094 49.2998 -21.2998 95.5996 -56.0996 130.5c-34.8008 34.8994 -81.1006 54.0996 -130.4 54.0996c-101.8 0 -184.6 -82.7998 -184.6 -184.5\nc0 -34.9004 9.69922 -68.7998 28.1992 -98.2002l4.40039 -7l-18.5996 -68.0996l69.7998 18.2998l6.7002 -4c28.2998 -16.7998 60.7998 -25.7002 94 -25.7002zM325.1 147.5c5.5 -2.7002 9.2002 -4.09961 10.5 -6.59961c1.40039 -2.30078 1.40039 -13.4004 -3.19922 -26.4004\nc-4.60059 -13 -26.7002 -24.7998 -37.4004 -26.4004c-17.5996 -2.59961 -31.4004 -1.2998 -66.5996 13.9004c-55.7002 24.0996 -92 80.0996 -94.8008 83.7998c-2.69922 3.7002 -22.5996 30.1006 -22.5996 57.4004s14.2998 40.7002 19.4004 46.2998\nc5.09961 5.5 11.0996 6.90039 14.7998 6.90039s7.39941 0 10.5996 -0.200195c3.40039 -0.200195 8 1.2998 12.5 -9.5c4.60059 -11.1006 15.7002 -38.4004 17.1006 -41.2002c1.39941 -2.7998 2.2998 -6 0.5 -9.7002c-10.6006 -21.2002 -22 -20.5 -16.3008 -30.2998\nc21.5 -36.9004 42.9004 -49.7002 75.5 -66c5.5 -2.7998 8.80078 -2.2998 12 1.40039c3.30078 3.7998 13.9004 16.1992 17.6006 21.7998c3.7002 5.59961 7.39941 4.7002 12.5 2.7998c5.09961 -1.7998 32.3994 -15.2002 37.8994 -18z\" />\n    <glyph glyph-name=\"viacoin\" unicode=\"&#xf237;\" horiz-adv-x=\"384\" \nd=\"M384 416l-48 -112h48v-48h-68.5l-13.7998 -32h82.2998v-48h-102.8l-89.2002 -208l-89.2002 208h-102.8v48h82.2998l-13.7998 32h-68.5v48h48l-48 112h64l80.7998 -192h94.5l80.7002 192h64zM192 112l27 64h-54z\" />\n    <glyph glyph-name=\"medium\" unicode=\"&#xf23a;\" \nd=\"M0 416h448v-448h-448v448zM372.2 309.9v5h-83.2002l-59.2998 -147.9l-67.4004 148h-87.2998v-5.09961l28.0996 -33.9004c2.80078 -2.5 4.2002 -6.09961 3.80078 -9.7998v-133c0.799805 -4.7998 -0.700195 -9.7002 -4.10059 -13.2002l-31.5996 -38.2998v-5.10059h89.7998\nv5.10059l-31.5996 38.2998c-3.40039 3.5 -5.10059 8.40039 -4.40039 13.2002v115l78.7002 -171.601h9.09961l67.6006 171.601v-136.9c0 -3.59961 0 -4.2998 -2.40039 -6.7002l-24.2998 -23.5996v-4.90039h118v5.10059l-23.5 23\nc-2.10059 1.5 -3.10059 4.09961 -2.7002 6.7002v169.3c-0.400391 2.5 0.599609 5.09961 2.7002 6.7002z\" />\n    <glyph glyph-name=\"y-combinator\" unicode=\"&#xf23b;\" \nd=\"M448 416v-448h-448v448h448zM236 160.5l77.5 145.5h-32.7002l-45.7998 -91c-4.7002 -9.2998 -9 -18.2998 -12.7998 -26.7998l-12.2002 26.7998l-45.2002 91h-35l76.7002 -143.8v-94.5h29.5v92.7998z\" />\n    <glyph glyph-name=\"optin-monster\" unicode=\"&#xf23c;\" horiz-adv-x=\"576\" \nd=\"M572.6 26.5996c1 -3.5 1.90039 -7 1.7002 -10.6992c0.799805 -31.6006 -44.2998 -64 -73.5 -65.1006c-17.2998 -0.799805 -34.5996 8.40039 -42.7002 23.5c-113.5 -4.09961 -227 -4.89941 -340.199 0c-8.40039 -15.0996 -25.7002 -24 -43 -23.5\nc-28.9004 1.10059 -74 33.5 -73.5 65.1006c0.299805 3.7998 0.799805 7.2998 1.89941 10.7998c-5.59961 9.39941 -4.7998 15.2998 5.40039 11.5996c3.2998 5.2002 7 9.5 11.0996 13.7998c-2.5 10.9004 1.2998 14.1006 11.1006 9.2002c4.5 3.2998 10 6.5 15.8994 9.2002\nc0 15.7998 11.7998 11.2002 17.2998 5.7002c12.5 1.7998 20.2002 -0.700195 26.8008 -5.7002v19.7002c-12.9004 0 -40.6006 11.3994 -45.9004 36.2002c-5 20.7998 2.59961 38.0996 25.0996 47.5996c0.800781 5.90039 8.10059 14 14.9004 15.9004\nc7.59961 1.89941 12.5 -4.60059 14.0996 -10.3008c7.40039 0 17.8008 -1.5 21.1006 -8.09961c5.39941 0.5 11.0996 1.40039 16.5 1.90039c-2.40039 1.89941 -5.10059 3.5 -8.10059 4.59961c-5.09961 8.90039 -13.7998 11.0996 -24.5996 11.5996\nc0 0.800781 0 1.60059 0.299805 2.7002c-19.7998 0.5 -44.0996 5.60059 -54.8994 17.7998c-21.3008 23.6006 -15.9004 83.6006 12.1992 103.5c8.40039 5.7002 21.6006 0.800781 22.7002 -9.69922c2.40039 -20.6006 0.400391 -26.8008 26.2002 -25.9004\nc8.09961 7.7998 16.7998 14.5996 26.5 20c-14.9004 1.2998 -28.9004 -1.59961 -43.7998 -3.7998c12.7002 12.5 23.8994 25.3994 56.7002 42.3994c23.5 11.9004 50 20.8008 76.1992 23.2002c-18.5996 7.90039 -40 11.9004 -59.6992 16.5\nc76.5 16.2002 174.6 22.1006 244.199 -37.5996c18.1006 -15.4004 32.4004 -36.2002 42.7002 -60c39.7998 -4.90039 36.4004 5.5 38.6006 25.0996c1.09961 10.2998 14.2998 15.4004 22.6992 9.5c14.9004 -10.5 22.2002 -30.7998 24.6006 -48.0996\nc2.2002 -17.7998 0.299805 -41.2998 -12.4004 -55.1006c-10.7998 -12.1992 -34.2998 -17.5996 -53.7998 -18.0996v-2.7998c-11.0996 -0.200195 -20.2998 -2.40039 -25.7002 -11.6006c-3 -1.09961 -5.7002 -2.69922 -8.39941 -4.59961\nc5.69922 -0.5 11.3994 -1.40039 16.7998 -1.90039c1.89941 5.60059 12.5996 8.40039 21.0996 8.40039c1.7002 5.40039 6.7998 11.9004 14.1006 10.2998c7.2998 -1.59961 14.0996 -10 14.8994 -15.8994c10.7998 -4.40039 22.1006 -12.2002 25.1006 -25.7002\nc1.89941 -8.10059 1.69922 -15.1006 0.299805 -21.9004c-5.7002 -25.2002 -33.2998 -36.2002 -45.9004 -36.2002c0 -6.69922 0 -13.1992 -0.299805 -19.6992c8.09961 6 16.4004 7.19922 26.7998 5.69922c6 5.90039 17.6006 9.40039 17.6006 -5.69922\nc5.59961 -2.7002 11.2998 -6 15.8994 -9.2002c10.1006 5 13.7002 0.5 10.7998 -9.2002c4.10059 -4.2998 8.10059 -8.90039 11.1006 -13.7998c10.0996 3.59961 11 -2.10059 5.39941 -11.6006zM498.8 280.6c17.2998 -6.69922 26.2002 -22.0996 30.2998 -35.6992\nc1.10059 10.5996 -2.69922 39.5 -13.7998 51.0996c-7.2998 7.2998 -14.0996 5.09961 -14.0996 -0.799805c0 -6.2002 -1.2998 -11.6006 -2.40039 -14.6006zM494.2 273.9c-3.2002 -3.30078 -9.2002 -4.90039 -14.1006 -5.7002c13 -15.7002 17 -41.7002 12.7002 -63\nc10.7998 2.2002 20.5 6.2998 26.2002 12.2002c1.90039 2.19922 3.7998 4.89941 4.90039 7.59961c-1.10059 21.2998 -10.2002 42.7002 -29.7002 48.9004zM470.1 267.1c-3.69922 0 -8.09961 0 -11.7998 0.300781c7.5 -20.6006 12.4004 -42.7002 14.2998 -64.6006\nc3.5 0 7.5 0.299805 11.6006 0.799805c5.89941 24.3008 -0.299805 51.6006 -14.1006 63.5zM47.5 245c4.09961 13.5 13 28.9004 30.2998 35.7002c-1 3 -2.39941 8.39941 -2.39941 14.5996c0 5.90039 -7.10059 8.10059 -14.1006 0.799805\nc-11.3994 -11.5996 -14.8994 -40.5996 -13.7998 -51.0996zM57.2002 217.4c5.7002 -6.2002 15.3994 -10 26.2002 -12.2002c-4.30078 21.3994 -0.300781 47.2998 12.6992 63c-4.89941 0.799805 -10.8994 2.5 -14.0996 5.7002\nc-19.4004 -6.2002 -28.2998 -27.6006 -29.7002 -48.9004c1.40039 -2.7002 3 -5.40039 4.90039 -7.59961zM105.1 202.8c2.40039 22.2002 9.10059 43.7998 19.8008 63.5c-5.2002 -1.09961 -10 -3 -14.9004 -4.89941l-12.2002 -5.10059v0.299805\nc-7.2998 -14.0996 -10 -34.3994 -5.39941 -53c4.59961 -0.5 8.59961 -0.799805 12.6992 -0.799805zM289.1 365.5c-41.8994 0 -76.1992 -34.0996 -76.1992 -75.9004c0 -42.1992 34.2998 -76.1992 76.1992 -76.1992c41.9004 0 76.2002 34 76.2002 76.1992\nc0 41.9004 -34.2998 75.9004 -76.2002 75.9004zM404.7 191.2c-12.9004 0.799805 -26.2002 0.799805 -39.5 1.09961c10 -50.5996 3.2998 -64.7002 16.5 -58.0996c16 8.09961 22.7002 39.2002 23 57zM350.7 192.8c-18.9004 0.299805 -38.1006 0.299805 -57 0v0.299805\nc-0.299805 -5.19922 0.200195 -38.0996 4.2998 -41.0996c11.0996 -5.40039 39.5 -4.59961 51.0996 -1.09961c5.40039 1.59961 2.40039 37 1.60059 41.8994zM278.3 139c4.60059 2.5 2.40039 45.4004 1.2998 53.7002v0.299805\nc-19.3994 -0.299805 -38.5996 -0.299805 -57.7998 -0.799805c-1.89941 -9.2002 -4.59961 -48.9004 1.90039 -51.6006c13 -5.69922 41.5996 -5.09961 54.5996 -1.59961zM171.8 190.1c-5.39941 -19.6992 0.299805 -45.0996 22.2002 -54.8994\nc5.40039 -2.5 8.59961 -2.5 9.7002 4.2998c1.89941 8.7002 2.5 36.7998 4.89941 52.2002c-12.1992 -0.200195 -24.5996 -0.799805 -36.7998 -1.60059zM136.4 158.8c2.39941 -3.7002 1.59961 -9.09961 -8 -12.5c43.7998 -47 92.6992 -85.7002 155.899 -106.5\nc67.5 19.2002 115.601 60 163.2 107c-11.0996 4.2998 -7.7002 10.2998 -7.2998 11.6006c-8.90039 0.799805 -17.9004 1.89941 -26.5 2.69922c-9.5 -33 -36 -52.8994 -46.7998 -31.5996c-2.7002 5.2002 -3.5 11.7002 -4.60059 16.7998\nc-3.7998 -8.39941 -13.2998 -8.09961 -24.5996 -8.89941c-13.2002 -1.10059 -31.6006 -1.30078 -44 3c-3 -12.9004 -11.1006 -12.9004 -26.7998 -14.3008c-14.1006 -1.39941 -48.7002 -4.09961 -54.9004 10.8008c-1.09961 -28.7002 -35.0996 -10 -45.0996 7\nc-3.2002 5.69922 -5.40039 11.3994 -7 17.5996c-7.80078 -0.799805 -15.7002 -1.59961 -23.5 -2.7002zM114.8 -13.7002c0.5 2.5 0.799805 5.2002 0.799805 8.2002c-5.69922 23.2002 -18.5996 49.7002 -33.5 54c-22.3994 6.7002 -68.8994 -23.5 -66.1992 -54.5996\nc12.6992 -19.5 40 -35.7002 59.1992 -36.5c17.8008 -0.800781 35.9004 11.0996 39.7002 28.8994zM106.1 52.2998c9 -16 15.5 -33.2998 16.7002 -51.8994c33.5 19.3994 69.1006 35.6992 105.9 47c-38.7002 20.5 -68.1006 47.7998 -97.2998 77\nc-2.10059 -1.30078 -5.10059 -2.40039 -7.80078 -3.5c-1.59961 -4.90039 8.7002 -5.30078 5.40039 -12.4004c-2.09961 -4.09961 -8.59961 -7.59961 -15.0996 -9.2002c-2.10059 -2.7002 -5.10059 -4.89941 -7.80078 -6.5h-0.299805\nc-0.200195 -13.5 -0.200195 -27 0.299805 -40.5zM443.7 -12.2998c-36.7998 21.2998 -74.1006 41.2998 -115.601 53c-13.7998 -6.2002 -27.8994 -11.2998 -42.1992 -15.4004c-2.10059 -0.799805 -2.10059 -0.799805 -4.30078 0\nc-11.8994 3.7002 -23.2998 8.10059 -34.8994 13.2002c-40.2002 -11.5996 -77.2998 -29.2002 -112.4 -50.7998h-0.299805v-0.299805c0.299805 0 0.299805 0 0.299805 0.299805c103.2 -4.10059 206.4 -3.5 309.4 0zM454.2 0.0996094c1 14.7002 7.2002 35.8008 16.5 51.7002\nl-0.299805 -0.299805c0.5 13.7002 0.799805 27.5 0.799805 41.2998c-3 1.7002 -5.7002 4.10059 -8.10059 6.7998c-6.5 1.30078 -12.8994 5.10059 -15.0996 8.90039c-1.90039 4.09961 1.2998 7.59961 5.90039 10.2998c-0.200195 0.5 -0.5 1.60059 -0.5 2.40039\nc-3 0.799805 -5.40039 1.7998 -7.60059 3.2002c-31.5996 -29.4004 -65.3994 -56.7002 -103.5 -76.7002c38.9004 -11.7002 76 -28.1006 111.9 -47.6006zM560.1 -6.09961c3 31.0996 -43.5 61.3994 -66.1992 54.5c-14.6006 -4.30078 -27.8008 -30.8008 -33.5 -54\nc0 -23.8008 21.1992 -37.9004 40.5 -37c19.1992 0.799805 46.5 17 59.1992 36.5zM372.9 372.8c-35.7002 39.2002 -81.4004 47.7998 -126 23.5c25.1992 56.2002 122.199 48.6006 126 -23.5zM74.7998 40.9004c14.9004 1.89941 24.6006 -19.2002 18.6006 -30.8008\nc-4.80078 -9.69922 -23.7002 -24.0996 -35.9004 -27.2998c-16.5 -4.59961 -32.2002 3.2998 -32.2002 14.9004c0 17.7998 33.7998 41.5996 49.5 43.2002zM290.7 217.1c-30.9004 0 -57.6006 25.7002 -50.2998 59.8008c13.1992 -20.7002 46.5 -12 46.5 11.2998\nc0 10 -7 18.5996 -16.5 21.5996c31.6992 13.7998 72.1992 -8.2002 72.1992 -44.2998c0 -26.7998 -23.2998 -48.4004 -51.8994 -48.4004zM68 -26.0996c-0.5 8.39941 20.2998 23.5 29.2002 25.0996c8.59961 1.59961 12.7002 -11.4004 9.7002 -18.4004\nc-2.7002 -5.69922 -10.5 -13.5 -17.3008 -16.1992c-9.39941 -3.2002 -21.0996 3 -21.5996 9.5zM501.2 40.9004c15.7002 -1.60059 49.5 -25.4004 49.5 -43.2002c0 -11.7002 -15.7002 -19.5 -32.2002 -14.9004c-12.0996 3.2002 -31.2998 17.6006 -36.2002 27.2998\nc-5.7002 11.6006 4 32.7002 18.9004 30.8008zM478.8 -1c8.90039 -1.59961 30 -16.7002 29.1006 -25.0996c-0.200195 -6.5 -12.1006 -12.7002 -21.3008 -9.5c-7 2.69922 -14.8994 10.5 -17.2998 16.1992c-2.89941 7.10059 1.10059 20 9.5 18.4004z\" />\n    <glyph glyph-name=\"opencart\" unicode=\"&#xf23d;\" horiz-adv-x=\"640\" \nd=\"M423.3 7.2998c0 -25.2998 -20.2998 -45.5996 -45.5996 -45.5996s-45.7998 20.2998 -45.7998 45.5996s20.5996 45.7998 45.7998 45.7998c25.3994 0 45.5996 -20.5 45.5996 -45.7998zM169.4 53.0996c25.2998 0 45.7998 -20.5 45.7998 -45.7998\ns-20.5 -45.5996 -45.7998 -45.5996c-25.3008 0 -45.6006 20.3994 -45.6006 45.5996s20.2998 45.7998 45.6006 45.7998zM461.1 323.1c302.2 0 169.5 -67.1992 -17.1992 -233.899c59.1992 102.8 262.5 193.899 -70.8008 188.899c-319.8 -4.69922 -338.699 92.5 -373.1 144.2\nc81.9004 -86.3994 158.9 -99.2002 461.1 -99.2002z\" />\n    <glyph glyph-name=\"expeditedssl\" unicode=\"&#xf23e;\" horiz-adv-x=\"496\" \nd=\"M248 404.6c117.4 0 212.6 -95.1992 212.6 -212.6s-95.1992 -212.6 -212.6 -212.6s-212.6 95.1992 -212.6 212.6s95.1992 212.6 212.6 212.6zM150.6 271.7h-0.199219v-26.6006c0 -5 3.89941 -8.89941 8.89941 -8.89941h17.7002c5 0 8.90039 3.89941 8.90039 8.89941\nv26.6006c0 82.0996 124 82.0996 124 0v-26.6006c0 -5 3.89941 -8.89941 8.89941 -8.89941h17.7002c5 0 8.90039 3.89941 8.90039 8.89941v26.6006c0 53.7002 -43.7002 97.3994 -97.4004 97.3994s-97.4004 -43.6992 -97.4004 -97.3994zM389.7 68v141.7\nc0 9.7002 -8 17.7002 -17.7002 17.7002h-248c-9.7002 0 -17.7002 -8 -17.7002 -17.7002v-141.7c0 -9.7002 8 -17.7002 17.7002 -17.7002h248c9.7002 0 17.7002 8 17.7002 17.7002zM141.7 205.3v-132.899c0 -2.5 -1.90039 -4.40039 -4.40039 -4.40039h-8.89941\nc-2.5 0 -4.40039 1.90039 -4.40039 4.40039v132.899c0 2.5 1.90039 4.40039 4.40039 4.40039h8.89941c2.5 0 4.40039 -1.90039 4.40039 -4.40039zM283.4 156.6c0 -13 -7.2002 -24.3994 -17.7002 -30.3994v-31.6006c0 -5 -3.90039 -8.89941 -8.90039 -8.89941h-17.7002\nc-5 0 -8.89941 3.89941 -8.89941 8.89941v31.6006c-10.5 6.09961 -17.7002 17.3994 -17.7002 30.3994c0 19.7002 15.7998 35.4004 35.4004 35.4004c19.5996 0 35.5 -15.7998 35.5 -35.4004zM248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248\ns111 248 248 248zM248 -38.2998c127 0 230.3 103.3 230.3 230.3s-103.3 230.3 -230.3 230.3s-230.3 -103.3 -230.3 -230.3s103.3 -230.3 230.3 -230.3z\" />\n    <glyph glyph-name=\"cc-jcb\" unicode=\"&#xf24b;\" horiz-adv-x=\"576\" \nd=\"M431.5 203.7v32.2998c41.2002 0 38.5 -0.200195 38.5 -0.200195c7.2998 -1.2998 13.2998 -7.2998 13.2998 -16c0 -8.7998 -6 -14.5 -13.2998 -15.7998c-1.2002 -0.400391 -3.2998 -0.299805 -38.5 -0.299805zM474.3 183.5c7.5 -1.5 13.5 -8.2998 13.5 -17\nc0 -9 -6 -15.5 -13.5 -17c-2.7998 -0.700195 -3.2002 -0.5 -42.7998 -0.5v35c39.5 0 40 0.200195 42.7998 -0.5zM576 368v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h480c26.5 0 48 -21.5 48 -48zM182 255.7h-57\nc0 -67.1006 10.7002 -109.7 -35.7998 -109.7c-19.5 0 -38.7998 5.7002 -57.2002 14.7998v-28c30 -8.2998 68 -8.2998 68 -8.2998c97.9004 0 82 47.7002 82 131.2zM360.5 251.2c-63.4004 16 -165 14.8994 -165 -59.2998c0 -77.1006 108.2 -73.6006 165 -59.2002v28.2998\nc-47.5996 -24.7002 -107.5 -22 -107.5 31s59.7998 55.5996 107.5 31.2002v28zM544 161.5c0 18.5 -16.5 30.5 -38 32v0.799805c19.5 2.7002 30.2998 15.5 30.2998 30.2002c0 19 -15.7002 30 -37 31c0 0 6.2998 0.299805 -120.3 0.299805v-127.5h122.7\nc24.2998 -0.0996094 42.2998 12.9004 42.2998 33.2002z\" />\n    <glyph glyph-name=\"cc-diners-club\" unicode=\"&#xf24c;\" horiz-adv-x=\"576\" \nd=\"M239.7 368.1c97.2002 0 175.8 -78.5996 175.8 -175.8c0 -96.8994 -78.5996 -175.8 -175.8 -175.8c-96.9004 0 -175.8 78.9004 -175.8 175.8c0 97.2002 78.8994 175.8 175.8 175.8zM199.8 88.5v207.9c-41.7002 -16.2002 -71.3994 -56.7002 -71.3994 -104.101\nc0 -47.3994 29.6992 -87.8994 71.3994 -103.8zM279.6 88.2002c41.7002 16.2002 71.4004 56.7002 71.4004 104.1c0 47.4004 -29.7002 87.9004 -71.4004 104.101v-208.2zM528 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48v352\nc0 26.5 21.5 48 48 48h480zM329.7 0c105 0 200.7 85.5 200.7 190.2c0 114.6 -95.7002 193.8 -200.7 193.8h-90.2998c-106.2 0 -193.801 -79.2002 -193.801 -193.8c0 -104.7 87.6006 -190.2 193.801 -190.2h90.2998z\" />\n    <glyph glyph-name=\"creative-commons\" unicode=\"&#xf25e;\" horiz-adv-x=\"496\" \nd=\"M245.83 233.13l-33.2197 -17.2803c-9.43066 19.5801 -25.2402 19.9307 -27.46 19.9307c-22.1309 0 -33.2207 -14.6104 -33.2207 -43.8398c0 -23.5703 9.20996 -43.8408 33.2207 -43.8408c14.4697 0 24.6494 7.09082 30.5693 21.2607l30.5498 -15.5\nc-6.16992 -11.5107 -25.6895 -38.9805 -65.0996 -38.9805c-22.5996 0 -73.96 10.3203 -73.96 77.0498c0 58.6904 43 77.0605 72.6299 77.0605c30.7197 0.00976562 52.7002 -11.9502 65.9902 -35.8604zM388.88 233.13l-32.7803 -17.2803\nc-9.5 19.7705 -25.7197 19.9307 -27.8994 19.9307c-22.1406 0 -33.2197 -14.6104 -33.2197 -43.8398c0 -23.5508 9.22949 -43.8408 33.2197 -43.8408c14.4502 0 24.6494 7.09082 30.54 21.2607l31 -15.5c-2.10059 -3.75 -21.3906 -38.9805 -65.0898 -38.9805\nc-22.6904 0 -73.96 9.87012 -73.96 77.0498c0 58.6699 42.9697 77.0605 72.6299 77.0605c30.71 0.00976562 52.5801 -11.9502 65.5596 -35.8604zM247.56 439.95c141.82 0 248.44 -110.13 248.44 -248c0 -147.13 -118.51 -248 -248.44 -248\nc-133.96 0 -247.56 109.51 -247.56 248c0 132.939 104.74 248 247.56 248zM248.43 -10.8604c103.16 0 202.83 81.1299 202.84 202.82c0 113.8 -90.2891 203.26 -202.819 203.26c-118.29 0 -203.72 -97.8496 -203.72 -203.27c0 -109.771 91.1592 -202.811 203.699 -202.811z\n\" />\n    <glyph glyph-name=\"gg\" unicode=\"&#xf260;\" horiz-adv-x=\"512\" \nd=\"M179.2 217.6l102.399 -102.399l-102.399 -102.4l-179.2 179.2l179.2 179.2l44.7998 -44.7998l-25.5996 -25.6006l-19.2002 19.2002l-128 -128l128 -128l51.5 51.5l-77.1006 76.5zM332.8 371.2l179.2 -179.2l-179.2 -179.2l-44.7998 44.7998l25.5996 25.6006\nl19.2002 -19.2002l128 128l-128 128l-51.5 -51.5l77.1006 -76.5l-25.6006 -25.5996l-102.399 102.399z\" />\n    <glyph glyph-name=\"gg-circle\" unicode=\"&#xf261;\" horiz-adv-x=\"512\" \nd=\"M257 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM207.5 65.2002l75 75.2002l-77.2002 77.1992l-24.3994 -24.3994l53.0996 -52.9004l-26.5996 -26.5996l-77.2002 77.2002l77.2002 77.1992l11.0996 -11.0996l24.2002 24.2002\nl-35.2002 35.3994l-125.7 -125.699zM306.5 67.4004l125.7 125.6l-125.7 125.7l-75 -75l77.2002 -77.2002l24.3994 24.4004l-53.0996 52.8994l26.5 26.5l77.2002 -77.2002l-77.2002 -77.1992l-11.0996 11.0996l-24.1006 -24.4004z\" />\n    <glyph glyph-name=\"tripadvisor\" unicode=\"&#xf262;\" horiz-adv-x=\"576\" \nd=\"M166.4 167.479c0 -13.2354 -10.7305 -23.9658 -23.9668 -23.9658c-13.2354 0 -23.9658 10.7305 -23.9658 23.9658c0 13.2363 10.7305 23.9668 23.9658 23.9668c13.2363 0 23.9668 -10.7295 23.9668 -23.9668zM431.362 191.435\nc13.2295 0 23.9551 -10.7246 23.9561 -23.9561c0 -13.2305 -10.7266 -23.9551 -23.9561 -23.9551c-13.2314 0 -23.9561 10.7256 -23.9561 23.9551c0 13.2314 10.7256 23.9561 23.9561 23.9561zM520.75 51.9453c-62.667 -49.1045 -153.276 -38.1094 -202.379 24.5586\nl-30.9795 -46.3252l-30.6826 45.9395c-48.2773 -60.3906 -135.622 -71.8916 -197.885 -26.0547c-64.0586 47.1572 -77.7588 137.315 -30.6016 201.373c-5.05762 17.1221 -17.7021 42.7236 -28.2227 57.1475l90.2861 0.0498047\nc48.0039 29.8701 132.851 54.1123 189.389 54.1123c2.11914 0 5.55762 -0.0371094 7.67578 -0.0820312c1.72363 0.0302734 4.52246 0.0556641 6.24609 0.0556641c55.5518 0 138.851 -23.9258 185.936 -53.4043l96.2178 -0.0742188\nc-10.6191 -14.5371 -23.3213 -40.3643 -28.3516 -57.6494c46.793 -62.7471 34.9639 -151.37 -26.6484 -199.646zM259.366 166.239c-0.00683594 63.5566 -51.5352 115.075 -115.092 115.067c-63.5576 -0.00683594 -115.074 -51.5342 -115.068 -115.092\nc0.00683594 -63.5566 51.5352 -115.075 115.092 -115.067c63.5127 0.0742188 114.984 51.5381 115.068 115.052v0.0400391zM287.957 176.694c5.43262 73.4395 65.5098 130.884 139.12 133.021c-35.5576 15.374 -95.8555 27.8506 -134.594 27.8506\nc-1.41699 0 -3.7168 -0.0166016 -5.13379 -0.0380859c-0.953125 0.00878906 -2.50098 0.0166016 -3.45508 0.0166016c-39.2324 0 -100.479 -12.2168 -136.709 -27.2695c74.3447 -1.58203 135.3 -59.4248 140.771 -133.581zM539.663 205.461\nc-21.9922 59.6338 -88.1621 90.1484 -147.795 68.1572c-59.6338 -21.9922 -90.1484 -88.1621 -68.1572 -147.795v-0.0322266c22.0381 -59.6074 88.1982 -90.0908 147.827 -68.1133c59.6152 22.0039 90.1133 88.1621 68.125 147.783zM213.624 167.486v-0.115234\nc-0.0566406 -39.3281 -31.9863 -71.1631 -71.3145 -71.1064c-39.3271 0.0576172 -71.1621 31.9863 -71.1055 71.3145s31.9863 71.1631 71.3135 71.1055c39.2598 -0.115234 71.042 -31.9395 71.1064 -71.1982zM189.112 167.486v0.0839844\nc-0.0517578 25.7832 -20.9941 46.6445 -46.7783 46.5938s-46.6445 -20.9941 -46.5938 -46.7773c0.0507812 -25.7842 20.9941 -46.6445 46.7764 -46.5938c25.7266 0.113281 46.5371 20.9678 46.5957 46.6934zM502.535 167.486\nc-0.0205078 -39.3281 -31.918 -71.2422 -71.2471 -71.2217c-39.3291 0.0214844 -71.1943 31.918 -71.1729 71.2471c0.0195312 39.3281 31.918 71.1943 71.2471 71.1729c39.29 -0.0654297 71.1211 -31.9082 71.1729 -71.1982zM478.031 167.494\nc-0.00878906 25.7842 -20.918 46.6787 -46.7021 46.6699s-46.6787 -20.918 -46.6699 -46.7021s20.918 -46.6777 46.7021 -46.6699c25.7646 0.0458984 46.6357 20.9277 46.6699 46.6934v0.00878906z\" />\n    <glyph glyph-name=\"odnoklassniki\" unicode=\"&#xf263;\" horiz-adv-x=\"320\" \nd=\"M275.1 114c-27.3994 -17.4004 -65.0996 -24.2998 -90 -26.9004l20.9004 -20.5996l76.2998 -76.2998c27.9004 -28.6006 -17.5 -73.2998 -45.7002 -45.7002c-19.0996 19.4004 -47.0996 47.4004 -76.2998 76.5996l-76.2998 -76.5\nc-28.2002 -27.5 -73.5996 17.6006 -45.4004 45.7002c19.4004 19.4004 47.1006 47.4004 76.3008 76.2998l20.5996 20.6006c-24.5996 2.59961 -62.9004 9.09961 -90.5996 26.8994c-32.6006 21 -46.9004 33.3008 -34.3008 59c7.40039 14.6006 27.7002 26.9004 54.6006 5.7002\nc0 0 36.2998 -28.8994 94.8994 -28.8994c58.6006 0 94.9004 28.8994 94.9004 28.8994c26.9004 21.1006 47.0996 8.90039 54.5996 -5.7002c12.4004 -25.6992 -1.89941 -38 -34.5 -59.0996zM30.2998 318.3c0 71.7002 58.2998 129.7 129.7 129.7s129.7 -58 129.7 -129.7\nc0 -71.3994 -58.2998 -129.399 -129.7 -129.399s-129.7 58 -129.7 129.399zM96.2998 318.3c0 -35.0996 28.6006 -63.7002 63.7002 -63.7002s63.7002 28.6006 63.7002 63.7002c0 35.4004 -28.6006 64 -63.7002 64s-63.7002 -28.5996 -63.7002 -64z\" />\n    <glyph glyph-name=\"odnoklassniki-square\" unicode=\"&#xf264;\" \nd=\"M184.2 270.9c0 22.0996 17.8994 40 39.7998 40s39.7998 -17.9004 39.7998 -40c0 -22 -17.8994 -39.8008 -39.7998 -39.8008s-39.7998 17.9004 -39.7998 39.8008zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352\nc26.5 0 48 -21.5 48 -48zM142.9 270.9c0 -44.6006 36.3994 -80.9004 81.0996 -80.9004s81.0996 36.2002 81.0996 80.9004c0 44.7998 -36.3994 81.0996 -81.0996 81.0996s-81.0996 -36.2002 -81.0996 -81.0996zM317.4 180.2\nc-4.60059 9.09961 -17.3008 16.7998 -34.1006 3.59961c0 0 -22.7002 -18 -59.2998 -18s-59.2998 18 -59.2998 18c-16.7998 13.2002 -29.5 5.5 -34.1006 -3.59961c-7.89941 -16.1006 1.10059 -23.7002 21.4004 -37c17.2998 -11.1006 41.2002 -15.2002 56.5996 -16.7998\nl-12.8994 -12.9004c-18.2002 -18 -35.5 -35.5 -47.7002 -47.7002c-17.5996 -17.5996 10.7002 -45.7998 28.4004 -28.5996l47.6992 47.8994c18.2002 -18.1992 35.7002 -35.6992 47.7002 -47.8994c17.6006 -17.2002 46 10.7002 28.6006 28.5996l-47.7002 47.7002l-13 12.9004\nc15.5 1.59961 39.0996 5.89941 56.2002 16.7998c20.3994 13.2998 29.2998 21 21.5 37z\" />\n    <glyph glyph-name=\"get-pocket\" unicode=\"&#xf265;\" \nd=\"M407.6 384c22.7002 0 40.4004 -18.2002 40.4004 -40.5996v-135.2c0 -124.7 -99.7998 -224.2 -223.8 -224.2c-124.5 0 -224.2 99.5 -224.2 224.2v135.2c0 22.0996 18.5 40.5996 40.5996 40.5996h367zM245.6 115.5c111.9 107.5 114.801 105.4 114.801 123.2\nc0 16.8994 -13.8008 30.7002 -30.7002 30.7002c-16.9004 0 -14.9004 -2.40039 -105.5 -89.3008c-89.1006 85.5 -88.2002 89.3008 -105.2 89.3008c-16.9004 0 -30.7002 -13.8008 -30.7002 -30.7002c0 -18.1006 1.2002 -14.2998 114.9 -123.2\nc11 -11.0996 30 -11.7998 42.3994 0z\" />\n    <glyph glyph-name=\"wikipedia-w\" unicode=\"&#xf266;\" horiz-adv-x=\"640\" \nd=\"M640 396.8l-0.299805 -12.2002c-28.1006 -0.799805 -45 -15.7998 -55.7998 -40.2998c-25 -57.7998 -103.301 -240 -155.301 -358.6h-13.5996l-81.9004 193.1c-32.5 -63.5996 -68.2998 -130 -99.1992 -193.1c-0.300781 -0.299805 -15 0 -15 0.299805\nc-46.9004 109.7 -96.1006 218.6 -143.101 328.6c-11.3994 26.7002 -49.3994 70 -75.5996 69.7002c0 3.10059 -0.299805 10 -0.299805 14.2002h161.899v-13.9004c-19.2002 -1.09961 -52.7998 -13.2998 -43.2998 -34.1992c21.9004 -49.7002 103.6 -240.301 125.6 -288.601\nc15 29.7002 57.8008 109.2 75.3008 142.8c-13.9004 28.3008 -58.6006 133.9 -72.8008 160c-9.69922 17.8008 -36.0996 19.4004 -55.7998 19.7002v13.9004l142.5 -0.299805v-13.1006c-19.3994 -0.599609 -38.0996 -7.7998 -29.3994 -26.0996\nc18.8994 -40 30.5996 -68.1006 48.0996 -104.7c5.59961 10.7998 34.7002 69.4004 48.0996 100.8c8.90039 20.6006 -3.89941 28.6006 -38.5996 29.4004c0.299805 3.59961 0 10.2998 0.299805 13.5996c44.4004 0.299805 111.101 0.299805 123.101 0.600586v-13.6006\nc-22.5 -0.799805 -45.8008 -12.7998 -58.1006 -31.7002l-59.2002 -122.8c6.40039 -16.0996 63.3008 -142.8 69.2002 -156.7l122.4 282.601c-8.60059 23.0996 -36.4004 28.0996 -47.2002 28.2998v13.9004l127.8 -1.10059z\" />\n    <glyph glyph-name=\"safari\" unicode=\"&#xf267;\" horiz-adv-x=\"512\" \nd=\"M236.9 191.2c0 9.09961 6.59961 17.7002 16.2998 17.7002c8.89941 0 17.3994 -6.40039 17.3994 -16.1006c0 -9.09961 -6.39941 -17.7002 -16.0996 -17.7002c-9 0 -17.5996 6.7002 -17.5996 16.1006zM504 192c0 -137 -111 -248 -248 -248s-248 111 -248 248\ns111 248 248 248s248 -111 248 -248zM477.4 192c0 122.3 -99.1006 221.4 -221.4 221.4s-221.4 -99.1006 -221.4 -221.4s99.1006 -221.4 221.4 -221.4s221.4 99.1006 221.4 221.4zM404.9 95.4004c0 -3.60059 13 -10.2002 16.2998 -12.2002\nc-27.4004 -41.5 -69.7998 -71.4004 -117.9 -83.2998l-4.39941 18.5c-0.300781 2.5 -1.90039 2.7998 -4.2002 2.7998c-1.90039 0 -3 -2.7998 -2.7998 -4.2002l4.39941 -18.7998c-13.2998 -2.7998 -26.7998 -4.2002 -40.3994 -4.2002c-36.3008 0 -72 10.2002 -103 29.0996\nc1.69922 2.80078 12.1992 18 12.1992 20.2002c0 1.90039 -1.69922 3.60059 -3.59961 3.60059c-3.90039 0 -12.2002 -16.6006 -14.7002 -19.9004c-41.7998 27.7002 -72 70.5996 -83.5996 119.6l19.0996 4.2002c2.2002 0.600586 2.7998 2.2002 2.7998 4.2002\nc0 1.90039 -2.7998 3 -4.39941 2.7998l-18.7002 -4.2998c-2.5 12.7002 -3.90039 25.5 -3.90039 38.5c0 37.0996 10.5 73.5996 30.2002 104.9c2.7998 -1.7002 16.1006 -10.8008 18.2998 -10.8008c1.90039 0 3.60059 1.40039 3.60059 3.30078\nc0 3.89941 -14.7002 11.2998 -18 13.5996c28.2002 41.2002 71.0996 70.9004 119.8 81.9004l4.2002 -18.5c0.599609 -2.2002 2.2002 -2.80078 4.2002 -2.80078s3 2.80078 2.7998 4.40039l-4.2002 18.2998c12.2002 2.2002 24.5996 3.60059 37.0996 3.60059\nc37.1006 0 73.3008 -10.5 104.9 -30.2002c-1.90039 -2.7998 -10.7998 -15.7998 -10.7998 -18c0 -1.90039 1.39941 -3.60059 3.2998 -3.60059c3.90039 0 11.2998 14.4004 13.2998 17.7002c41 -27.7002 70.2998 -70 81.7002 -118.2l-15.5 -3.2998\nc-2.5 -0.599609 -2.7998 -2.2002 -2.7998 -4.39941c0 -1.90039 2.7998 -3 4.2002 -2.80078l15.7998 3.60059c2.5 -12.7002 3.89941 -25.7002 3.89941 -38.7002c0 -36.2998 -10 -72 -28.7998 -102.7c-2.7998 1.40039 -14.3994 9.7002 -16.5996 9.7002\nc-2.10059 0 -3.7998 -1.7002 -3.7998 -3.59961zM371.7 337.6c-13 -12.1992 -134.2 -123.699 -137.601 -129.5l-96.5996 -160.5c12.7002 11.9004 134.2 124 137.3 129.301z\" />\n    <glyph glyph-name=\"chrome\" unicode=\"&#xf268;\" horiz-adv-x=\"496\" \nd=\"M131.5 230.5l-76.4004 117.4c47.6006 59.1992 119 91.7998 192 92.0996c42.3008 0.299805 85.5 -10.5 124.801 -33.2002c43.3994 -25.2002 76.3994 -61.3994 97.3994 -103l-205.3 10.7998c-58.0996 3.40039 -113.4 -29.2998 -132.5 -84.0996zM164.4 192\nc0 46.2998 37.3994 83.5996 83.5996 83.5996s83.5996 -37.3994 83.5996 -83.5996s-37.3994 -83.5996 -83.5996 -83.5996s-83.5996 37.3994 -83.5996 83.5996zM479.3 281.2c43.5 -111.9 0 -241.9 -107.399 -303.9c-43.4004 -25.2002 -91.3008 -35.3994 -137.801 -32.8994\nl112.101 172.399c31.8994 49 31.2998 112.9 -6.60059 157.2zM133.7 144.4c26.2998 -51.7002 81.8994 -83.3008 139.5 -72.5l-63.7002 -124.801c-118.7 18.2002 -209.5 120.9 -209.5 244.9c0 50.0996 14.9004 96.9004 40.4004 135.9z\" />\n    <glyph glyph-name=\"firefox\" unicode=\"&#xf269;\" horiz-adv-x=\"480\" \nd=\"M478.1 212.7c1.30078 -7.10059 1.90039 -14.2998 1.90039 -21.6006v-2.7998c-1.40039 -34 -11.5996 -67 -29.5996 -95.8994c-1 -1.5 -1.80078 -2.90039 -2.7002 -4.30078c2.7002 -7.19922 2.59961 -15.0996 -0.400391 -22.1992\nc-5 -19.4004 -16.5996 -36.4004 -32.8994 -48.1006c-10.8008 -8.7002 -22.7002 -16.2002 -35.3008 -22.0996l-1.89941 -0.900391l-1 -0.5c-1.7002 -0.700195 -3.2998 -1.39941 -4.90039 -2.09961c-2.39941 -5.10059 -5.7998 -9.60059 -9.89941 -13.2998\nc-2.5 -3.10059 -30.1006 -35 -113.801 -35c-23.5996 0 -47.1992 3.5 -69.7998 10.2998c0.799805 -0.299805 1.60059 -0.700195 2.40039 -1c-2.60059 0.899414 -5.2002 1.7998 -7.7002 2.7002c-19.0996 5.89941 -37.2002 14.5996 -53.7998 25.7998\nc-40.7002 24.7002 -72.9004 61.2002 -92.2998 104.7c-14.5 31.3994 -21.1006 65.7998 -19.4004 100.3c-2.7998 -8.2998 -5.2002 -16.7002 -7 -25.2998c0 29.1992 5.5 58.0996 16.2002 85.1992c-5.5 -7.89941 -10.2998 -16.2998 -14.2998 -25.0996\nc5.69922 23.0996 14.6992 45.2002 26.7998 65.5996c3.7002 6.10059 7.89941 11.9004 12.7002 17.1006v0.200195c-0.100586 2.69922 0.0996094 5.5 0.5 8.2998c1.5 16.2998 5.69922 32.2002 12.3994 47.0996l0.299805 0.700195c0.100586 0.299805 0 -1 0 -1.7002\ns-0.0996094 -1.2998 0 -1c0.600586 2 1.40039 4 2.30078 5.90039c1 2.09961 2.39941 4.09961 3.89941 5.7998c0.100586 0.0996094 0.200195 0.200195 0.299805 0.400391c0.100586 0.199219 -0.399414 -2 -0.5 -3.10059v-0.5c0.600586 1.2002 1.30078 2.40039 2.2002 4.5\nc2.10059 5.90039 6 11 11.1006 14.5l0.199219 0.100586c-0.299805 -9 1.2002 -17.9004 4.40039 -26.2002v-0.100586c0.299805 -0.399414 0.5 1.30078 0.900391 1.30078c0.0996094 0 0.199219 -0.100586 0.199219 -0.200195\nc0.900391 -1.7998 1.80078 -3.60059 2.7002 -5.2002c1.2998 -2.2002 2.5 -4.2002 3.7002 -6l0.400391 -0.200195l0.199219 0.100586c2.60059 -4.2002 5.90039 -7.80078 9.7002 -10.9004h-0.200195l0.200195 -0.0996094c18.2998 3.59961 37.2002 2 54.6006 -4.7002\nl0.0996094 0.0996094c2.09961 2.60059 4.59961 4.90039 7.2998 6.90039c0 -0.900391 -0.0996094 -1.7998 -0.200195 -2.7002c4 5 9.10059 9 15 11.5c-0.399414 -0.700195 -0.5 -1.40039 -0.5 -2.2002c7.40039 4.2998 15.5 7.40039 23.9004 9\nc1.09961 0 -3.5 -1.7998 -5.09961 -3.09961c3.69922 1.59961 7.69922 2.59961 11.6992 2.7998c6.60059 0.700195 14 -2.09961 12.6006 -2.7002c-2.7998 -1 -5.5 -2.2002 -8.2002 -3.5c-0.799805 -0.700195 3.2002 0.200195 2.40039 -0.5\nc-14 -9.2002 -24.8008 -22.5996 -30.8008 -38.2998v-0.0996094c2.5 -11 11.4004 -19.3008 22.5 -21.1006c31.5 -3 37.5 -5.59961 38.4004 -9.09961v-1.5c-0.0996094 -1 -0.200195 -1.90039 -0.299805 -2.7998c-1.2002 -6.90039 -4.90039 -13.2002 -10.2002 -17.7002\nc-1.40039 -1.2998 -2.90039 -2.5 -4.5 -3.5c-1.09961 -0.700195 -6.40039 -2.7998 -12.7998 -5.60059c-7.90039 -3.19922 -15.5 -7.09961 -22.7002 -11.5996c-1.2998 -0.799805 -2.40039 -1.7002 -3.40039 -2.7002c-0.399414 -0.399414 -1.19922 -1.5 -1.19922 -1.5\nv-0.0996094c0.5 -1.2002 1 -2.40039 1.19922 -3.7002c-1.39941 1.7002 -2.69922 1.09961 -1.89941 -0.5c0.899414 -2.5 1.2998 -5.2002 1.09961 -7.7998c0.200195 -4.7998 -0.700195 -9.60059 -2.59961 -14c-2.10059 1.5 -4.2998 2.89941 -6.60059 4.09961h-0.199219\nc2.5 -1.59961 4.2998 -3.89941 5.39941 -6.59961c0.700195 -2.2002 -0.299805 -2.7002 -0.299805 -2.7002c-1.40039 2 -3.09961 3.59961 -5.2002 4.7002c-3.09961 1.7998 -8.7998 4.7002 -11.3994 5.7998c-0.300781 -0.200195 -0.5 -0.0996094 -0.800781 -0.200195\nc0.800781 -1.2998 2.10059 -3.7998 2.10059 -3.7998s-1.7998 1.09961 -4.7998 2.59961c-3.90039 -1.7998 -7.2002 -4.89941 -9.30078 -8.69922c-3.5 -7.7002 -3.09961 -16.7002 1 -24.1006c4 -6 9.10059 -11.2002 15 -15.2002\nc0.400391 -0.299805 -3.39941 1.10059 -3.09961 0.800781c4.59961 -3.2002 9.40039 -6.10059 14.4004 -8.60059c1.5 -1 -5 1.2002 -3.40039 0.299805c1.40039 -0.899414 2.7998 -1.69922 4.2998 -2.5c22.9004 -12.0996 38.9004 0.400391 56.4004 2.90039\nc16.7998 3 33.7998 -3.59961 44.2002 -17c6 -8.5 -0.600586 -16.7002 -9 -14h-0.200195c-8.60059 2.90039 -19.1006 -4.2998 -36.6006 -14c-17.2998 -8.2998 -36.8994 -10.5996 -55.5996 -6.59961c-4.7998 0.899414 -9.40039 2.09961 -14 3.69922l-2 0.700195\nl0.200195 -0.299805c8.7998 -12.2002 19.8994 -22.5 32.7998 -30.2998c8.7002 -4.40039 17.9004 -7.5 27.4004 -9.2998c8 -1.90039 16.1992 -2.80078 24.5 -2.80078c61 -0.0996094 110.6 49.4004 110.6 110.4c0.0996094 15.9004 -3.09961 31.7998 -9.2998 46.5\nc20.7002 -12.2998 37.5996 -30.2002 48.7998 -51.5c-13.9004 40.5996 -40.2998 56.4004 -64.7002 76.5996c-19.5996 14.8008 -34.7002 34.9004 -43.3994 57.9004c-25.2002 67.7998 33.0996 132.9 33.0996 132.9s-3.59961 -15.1006 27.4004 -44.3008\nc6.39941 -5.89941 16.7998 -14.5 28.8994 -26.6992c1.7002 9.2998 4.2002 18.3994 7.40039 27.2998c2.5 -14.7002 7.7998 -28.7998 15.3994 -41.6006c11.7002 -16.6992 21.9004 -25.5996 30.7002 -40c1.90039 -2.5 3.7998 -5.19922 5.60059 -7.89941\nc5.09961 -7.2002 9.5 -14.7998 13.2998 -22.7998c6 -12 10.7998 -24.5 14.5 -37.4004c3 -10.4004 4.89941 -20.9004 5.7998 -31.5996c2.90039 3.89941 4.7002 5.89941 4.7002 5.89941s0.700195 -2.59961 1.39941 -7.09961zM179.1 310.3\nc-0.5 -1.2002 -0.899414 -2.2998 -1.2998 -3.5c0.400391 1.2002 0.900391 2.40039 1.2998 3.5z\" />\n    <glyph glyph-name=\"opera\" unicode=\"&#xf26a;\" horiz-adv-x=\"496\" \nd=\"M313.9 415.3c-170.2 0 -252.601 -223.8 -147.5 -355.1c36.5 -45.4004 88.5996 -75.6006 147.5 -75.6006c36.2998 0 70.2998 11.1006 99.3994 30.4004c-43.7998 -39.2002 -101.899 -63 -165.3 -63c-3.90039 0 -8 0 -11.9004 0.299805\nc-131.5 6.10059 -236.1 114.601 -236.1 247.7c0 137 111 248 248 248h0.799805c63.1006 -0.299805 120.7 -24.0996 164.4 -63.0996c-29 19.3994 -63.1006 30.3994 -99.2998 30.3994zM415.7 17.5996c-40.9004 -24.6992 -90.7002 -23.5996 -132 5.80078\nc56.2002 20.5 97.7002 91.5996 97.7002 176.6c0 84.7002 -41.2002 155.8 -97.4004 176.6c41.7998 29.2002 91.2002 30.3008 132.9 5c105.899 -98.6992 105.5 -265.699 -1.2002 -364z\" />\n    <glyph glyph-name=\"internet-explorer\" unicode=\"&#xf26b;\" horiz-adv-x=\"512\" \nd=\"M483.049 288.294c25.1963 -45.4473 33.2578 -97.5811 26.8516 -141.162h-328.792c0 -100.432 144.31 -136.029 196.818 -47.4355h120.833c-32.5645 -91.7285 -119.689 -146.022 -216.813 -146.022c-35.1367 0 -70.2725 0.143555 -101.695 15.5732\nc-87.3975 -44.4941 -180.251 -56.5693 -180.251 42.0059c0 45.8066 23.2461 107.096 43.9922 145.022c35.1357 63.7227 81.4121 124.875 135.687 173.168c-43.7061 -18.8604 -91.125 -66.2959 -121.977 -101.158c25.877 112.787 129.466 193.638 237.098 186.457\nc130.032 59.7939 209.673 34.1445 209.673 -38.5771c0 -27.4326 -10.5684 -63.2959 -21.4238 -87.8711zM64.5586 101.123c-73.001 -152.4 11.5254 -172.244 100.267 -123.304c-46.5635 27.4326 -82.5557 72.1533 -100.267 123.304zM180.536 209.996h207.961\nc-2 55.1514 -50.5635 94.8711 -103.981 94.8711c-53.7041 0 -101.979 -39.7197 -103.979 -94.8711zM365.072 397.596c46.2764 -18.002 85.9824 -57.2939 112.263 -99.5859c7.1416 18.8604 14.5693 47.8643 14.5693 67.8672c0 32.0049 -22.8525 53.7217 -54.2744 53.7217\nc-23.9951 0 -51.1328 -11.7158 -72.5576 -22.0029z\" />\n    <glyph glyph-name=\"contao\" unicode=\"&#xf26d;\" horiz-adv-x=\"512\" \nd=\"M45.4004 143c14.3994 -67.0996 26.3994 -129 68.1992 -175h-79.5996c-18.7002 0 -34 15.2002 -34 34v380c0 18.7002 15.2002 34 34 34h57.7002c-13.7998 -12.5996 -26.1006 -27.2002 -36.9004 -43.5996c-45.3994 -70 -27 -146.801 -9.39941 -229.4zM478 416\nc18.7998 0 34 -15.2002 34 -34v-380.1c0 -18.8008 -15.2998 -34 -34 -34h-52.0996c38.6992 38.3994 60.5996 92.0996 57.3994 163.6l-137.399 -29.5996c-1.7002 -32.5 -12.9004 -63.8008 -57.4004 -73.2002c-24.9004 -5.2998 -45.4004 0.599609 -58.2998 11.7002\nc-15.7998 13.5 -28.4004 31 -49.5 131.199c-21.4004 100.5 -17 121.601 -8.2002 140.301c7.2998 15.2998 23.7002 29.2998 48.2998 34.5996c44.7998 9.40039 67.7002 -14.9004 82.6006 -43.9004l137.1 29.3008c-13.5 34.5996 -31.2998 62.6992 -52.7002 84.0996h90.2002z\n\" />\n    <glyph glyph-name=\"500px\" unicode=\"&#xf26e;\" \nd=\"M103.3 103.7c-6.5 14.2002 -6.89941 18.2998 7.40039 23.0996c25.5996 8 8 -9.2002 43.2002 -49.2002h0.299805v93.9004c1.2002 50.2002 44 92.2002 97.7002 92.2002c53.8994 0 97.6992 -43.5 97.6992 -96.7998c0 -63.4004 -60.7998 -113.2 -128.5 -93.3008\nc-10.5 4.2002 -2.09961 31.7002 8.5 28.6006c53 0 89.4004 10.0996 89.4004 64.3994c0 61 -77.0996 89.6006 -116.9 44.6006c-23.5 -26.4004 -17.5996 -42.1006 -17.5996 -157.601c50.7002 -31 118.3 -22 160.4 20.1006c24.7998 24.7998 38.5 58 38.5 93\nc0 35.2002 -13.8008 68.2002 -38.8008 93.2998c-24.7998 24.7998 -57.7998 38.5 -93.2998 38.5s-68.7998 -13.7998 -93.5 -38.5c-0.299805 -0.299805 -16 -16.5 -21.2002 -23.9004l-0.5 -0.599609c-3.2998 -4.7002 -6.2998 -9.09961 -20.0996 -6.09961\nc-6.90039 1.69922 -14.2998 5.7998 -14.2998 11.7998v186.8c0 5 3.89941 10.5 10.5 10.5h241.3c8.2998 0 8.2998 -11.5996 8.2998 -15.0996c0 -3.90039 0 -15.1006 -8.2998 -15.1006h-223.2v-132.899h0.299805c104.2 109.8 282.801 36 282.801 -108.9\nc0 -178.1 -244.801 -220.3 -310.101 -62.7998zM166.6 364.5c3.80078 18.7998 145.101 50.7998 238.301 -38.2002c8.5 -7.5 -9.5 -22.7998 -14.3008 -22.7998c-6.59961 0 -84.5996 87.9004 -209.399 40.4004c-10 -3.90039 -15.1006 16.3994 -14.6006 20.5996zM393 33.2998\nc8.09961 8 27.5996 -12.5996 20.7002 -20.3994c-135.601 -135.601 -357.601 -52.1006 -381.601 121.3c-1.5 10.7002 28.9004 15.5 28.9004 3.2998c33 -165 222 -214.1 332 -104.2zM213.6 141.4c0 3.39941 2.30078 4.69922 20.4004 22.5996l-18.2002 18.2002\nc-5.59961 5.59961 7.40039 17.2998 12.4004 17.2998c3.09961 0 2.89941 -0.700195 21.5 -19.5l17.8994 17.9004c6.10059 6.09961 22.5 -8.90039 16.2002 -15.7002l-18.2002 -18.2002l17.3008 -17.2998c7.7998 -7.7998 -5.30078 -18.2002 -10.7002 -18.2002\nc-3.2002 0 -2.7002 0.200195 -22.2998 19.5c-19.7002 -19.7002 -18.5 -19.5 -22.3008 -19.5c-2.39941 0 -5.5 1.40039 -8.5 4.40039c-1.19922 1.19922 -5.5 4.5 -5.5 8.5z\" />\n    <glyph glyph-name=\"amazon\" unicode=\"&#xf270;\" \nd=\"M257.2 285.3c0 39.2998 5.2002 69.2002 -35.5 69.1006c0 0 -37.9004 0 -54.2002 -49.5l-73.5 6.7998c0 49.2998 46.7002 104.3 134.7 104.3c87.7998 0 112.3 -57 112.3 -82.2998v-147.101c0 -27.5 32.2998 -52.7998 32.2998 -52.7998l-56.7998 -56\nc-9.90039 9.2998 -38.7998 36.6006 -45.2998 46.7998c-45.2002 -70.7998 -183.5 -66.2998 -183.5 43.2002c0 102 120.8 115.7 169.5 117.5zM257.2 198.5v40.5996c-33.7002 -1.09961 -84.2002 -10.5996 -84.2002 -57.7998c0 -50.7998 84.2002 -62.7998 84.2002 17.2002z\nM393.2 35c-7.7002 -10 -70 -67 -174.5 -67s-184.5 71.5 -209 101c-6.7998 7.7002 1 11.2998 5.5 8.2998c73.2998 -44.5 187.8 -117.8 372.5 -30.2998c7.5 3.7002 13.2998 -2 5.5 -12zM433 32.7998c-6.5 -15.7998 -16 -26.7998 -21.2002 -31\nc-5.5 -4.5 -9.5 -2.7002 -6.5 3.7998s19.2998 46.5 12.7002 55c-6.5 8.30078 -37 4.30078 -48 3.2002c-10.7998 -1 -13 -2 -14 0.299805c-2.2998 5.7002 21.7002 15.5 37.5 17.5c15.7002 1.80078 41 0.800781 46 -5.69922c3.7002 -5.10059 0 -27.1006 -6.5 -43.1006z\" />\n    <glyph glyph-name=\"houzz\" unicode=\"&#xf27c;\" \nd=\"M275.9 117.3h-104.601v-149.3h-154.3v448h109.5v-104.5l305.1 -85.5996v-257.9h-155.699v149.3z\" />\n    <glyph glyph-name=\"vimeo-v\" unicode=\"&#xf27d;\" \nd=\"M447.8 294.4c-2 -43.6006 -32.3994 -103.301 -91.3994 -179.101c-60.9004 -79.2002 -112.4 -118.8 -154.601 -118.8c-26.0996 0 -48.2002 24.0996 -66.2998 72.2998c-35.2002 129.2 -50.2002 204.9 -79.2998 204.9c-3.40039 0 -15.1006 -7.10059 -35.2002 -21.1006\nl-21 27.2002c51.5996 45.2998 100.9 95.7002 131.8 98.5c34.9004 3.40039 56.2998 -20.5 64.4004 -71.5c28.7002 -181.5 41.3994 -208.899 93.5996 -126.7c18.7002 29.6006 28.7998 52.1006 30.2002 67.6006c4.7998 45.8994 -35.7998 42.7998 -63.2998 31\nc22 72.0996 64.0996 107.1 126.2 105.1c45.7998 -1.2002 67.5 -31.0996 64.8994 -89.3994z\" />\n    <glyph glyph-name=\"black-tie\" unicode=\"&#xf27e;\" \nd=\"M0 416h448v-448h-448v448zM316.5 90.7998l-64.5 184l64.4004 86.6006h-184.9l64.5 -86.6006l-64.5 -184l92.5 -88.7002z\" />\n    <glyph glyph-name=\"fonticons\" unicode=\"&#xf280;\" \nd=\"M0 416h448v-448h-448v448zM187 275.1c11.9004 0 16.5996 -4.2998 16.2998 -23l50.7002 6.10059c0 44.5996 -30.5996 52.7998 -64.7002 52.7998c-50.7998 0 -77.2998 -20.4004 -77.2998 -70v-21h-28v-37.4004h22.2002c2.89941 0 5.7998 0 5.7998 -2.2998v-111.399\nc0 -5.60059 -1.5 -7.30078 -6.7002 -7.90039l-21.2998 -2v-25.7002h130.7v25.1006l-43.5 4.09961c-5.2002 0.599609 -3.2002 1.5 -3.2002 7.2998v112.9h55.7002l11.0996 37.2998h-67.3994c-2.90039 0 0.599609 2 0.599609 4.40039v23.2998\nc0 17.5 0.599609 27.3994 19 27.3994zM261.3 33.2998h102.601v25.1006l-15.7002 2.59961c-5.5 0.900391 -2.90039 1.5 -2.90039 7.2998v151.7h-80.2002l-6.69922 -29.5l24.1992 -6.40039c3.80078 -1.19922 6.7002 -3.7998 6.7002 -7.89941v-107.9\nc0 -5.59961 -2.39941 -6.7002 -7.59961 -7.2998l-20.4004 -2.59961v-25.1006zM342.1 288.8l21.9004 24.2002l-3.5 9.59961h-27.7002l-15.5 28h-9.2998l-15.5 -28h-27.7002l-3.5 -9.59961l21.7998 -24.2002l-9 -33.2002l7.30078 -7.2998l31.1992 16.6006l31.2002 -16.6006\nl7.2998 7.2998z\" />\n    <glyph glyph-name=\"reddit-alien\" unicode=\"&#xf281;\" horiz-adv-x=\"512\" \nd=\"M440.3 244.5c55.2998 0 73.7002 -74.0996 23.7998 -99.7002c2.2002 -7.89941 3.10059 -16.7002 3.10059 -25.0996c0 -83.7998 -94.4004 -151.7 -210.8 -151.7c-115.9 0 -210.301 67.9004 -210.301 151.7c0 8.39941 0.800781 16.7998 2.60059 24.7002\nc-50.9004 25.5 -32.7002 100.1 22.8994 100.1c15 0 28.7002 -6.2002 38.4004 -16.2998c35.7998 24.7002 83.4004 40.5996 136.3 42.7998l30.4004 137.6c1.2998 4.90039 6.09961 8.40039 11 7.10059l97.3994 -21.6006c6.60059 12.7002 19.9004 22 35.3008 22\nc22.0996 0 39.6992 -18.0996 39.6992 -39.6992c0 -21.6006 -17.6992 -39.7002 -39.6992 -39.7002c-21.6006 0 -39.2002 17.5996 -39.2002 39.2002l-88.2002 19.7998l-27.7002 -124.8c53.2998 -1.7002 101.4 -17.6006 137.101 -42.3008\nc9.69922 9.7002 22.8994 15.9004 37.8994 15.9004zM129.4 139.1c0 -21.5996 17.6992 -39.2998 39.6992 -39.1992c21.6006 0 39.2002 17.5996 39.2002 39.1992c0 22.1006 -17.5996 39.7002 -39.2002 39.7002c-22.0996 0 -39.6992 -17.7002 -39.6992 -39.7002zM343.7 45.5996\nc4 3.5 4 9.7002 -0.100586 13.7002c-3.5 3.5 -9.69922 3.5 -13.1992 0c-29 -29 -121.2 -28.5 -149 0c-3.5 3.5 -9.7002 3.5 -13.2002 0c-4 -4 -4 -10.2002 0 -13.7002c36.3994 -36.3994 139.1 -36.3994 175.5 0zM342.9 99.7998c22 0 39.5996 17.7002 39.6992 39.2002\nc0 22.0996 -17.6992 39.7002 -39.6992 39.7002c-21.6006 0 -39.2002 -17.7002 -39.2002 -39.7002c0 -21.5996 17.5996 -39.2002 39.2002 -39.2002z\" />\n    <glyph glyph-name=\"edge\" unicode=\"&#xf282;\" horiz-adv-x=\"512\" \nd=\"M25.7139 219.837c0.111328 0.162109 0.230469 0.323242 0.341797 0.485352c-0.0205078 -0.162109 -0.0449219 -0.323242 -0.0644531 -0.485352h-0.277344zM486.286 204.329l0.000976562 -52.0645h-314.073c1.38379 -128.497 191.392 -124.065 272.255 -67.5713v-104.404\nc-47.3555 -28.5244 -156.774 -53.1709 -240.132 -21.3242c-70.6191 27.1406 -119.913 100.528 -120.743 171.977c-1.10742 92.2188 45.6943 153.422 120.742 188.314c-15.7852 -19.9395 -27.9697 -41.54 -34.3389 -78.9258h175.853\nc10.2471 104.957 -99.4189 104.957 -99.4189 104.957c-103.302 -3.58984 -177.945 -63.6543 -220.375 -124.966c14.5615 114.465 92.9062 219.955 232.837 219.678c85.0195 0 157.605 -39.8779 198.593 -113.265c21.0469 -37.9404 28.8008 -78.373 28.8008 -122.405z\" />\n    <glyph glyph-name=\"codiepie\" unicode=\"&#xf284;\" horiz-adv-x=\"472\" \nd=\"M422.5 245.1c30.7002 0 33.5 -53.0996 -0.299805 -53.0996h-10.7998v-44.2998h-26.6006v97.3994h37.7002zM472 95.4004c-42.0996 -91.9004 -121.6 -151.4 -224 -151.4c-137 0 -248 111 -248 248s111 248 248 248c97.4004 0 172.8 -53.7002 218.2 -138.4l-186 -108.8z\nM433.5 82.9004l-60.2998 30.6992c-27.1006 -44.2998 -70.4004 -71.3994 -122.4 -71.3994c-82.5 0 -149.2 66.7002 -149.2 148.899c0 82.5 66.7002 149.2 149.2 149.2c48.4004 0 88.9004 -23.5 116.9 -63.3994l59.5 34.5996c-40.7002 62.5996 -104.7 100 -179.2 100\nc-121.2 0 -219.5 -98.2998 -219.5 -219.5s98.2998 -219.5 219.5 -219.5c78.5996 0 146.5 42.0996 185.5 110.4z\" />\n    <glyph glyph-name=\"modx\" unicode=\"&#xf285;\" \nd=\"M356 206.2l36.7002 -23.7002v-214.5l-133 83.7998zM440 373l-83.2002 -134.3l-153.5 96.5l23 37.7998h213.7zM351 230.2l-249.8 -57.7002l-46 29v214.5zM97 153.8l249.7 57.7002l-125 -200.5h-213.7z\" />\n    <glyph glyph-name=\"fort-awesome\" unicode=\"&#xf286;\" horiz-adv-x=\"512\" \nd=\"M489.2 160.1c2.59961 0 4.59961 -2 4.5 -4.59961v-219.5h-182.9v96c0 72.5996 -109.7 72.5996 -109.7 0v-96h-182.899v219.5c0 2.59961 2 4.59961 4.59961 4.59961h27.4004c2.59961 0 4.59961 -2 4.59961 -4.59961v-32h36.6006v178.3\nc0 2.60059 2 4.60059 4.59961 4.60059h27.4004c2.59961 0 4.59961 -2 4.59961 -4.60059v-32h36.2998v32c0 2.60059 2 4.60059 4.60059 4.60059h27.3994c2.60059 0 4.60059 -2 4.60059 -4.60059v-32h36.5996v32c0 6 8 4.60059 11.7002 4.60059v111.699\nc-5.40039 2.60059 -9.10059 8.30078 -9.10059 14.3008c0 20.7998 31.4004 20.6992 31.4004 0c0 -6 -3.7002 -11.7002 -9.09961 -14.3008v-4.89941c7.69922 1.7998 15.6992 2.89941 23.6992 2.89941c11.7002 0 22.9004 -4.2998 32.6006 -4.2998\nc8.89941 0 18.8994 4.2998 24 4.2998c2.59961 0 4.59961 -2 4.59961 -4.59961v-60c0 -6.90039 -23.0996 -8 -27.7002 -8c-10.5 0 -20.5 4.2998 -31.3994 4.2998c-8.60059 0 -17.4004 -1.39941 -25.7002 -3.39941v-38c3.7002 0 11.7002 1.39941 11.7002 -4.60059v-32h36.5996\nv32c0 2.60059 2 4.60059 4.60059 4.60059h27.3994c2.60059 0 4.60059 -2 4.60059 -4.60059v-32h36.5996v32c0 2.60059 2 4.60059 4.59961 4.60059h27.4004c2.59961 0 4.59961 -2 4.59961 -4.60059v-178.3h36.6006v32c0 2.59961 2 4.59961 4.59961 4.59961h27.4004z\nM201.1 164.6v64c0 2.60059 -2 4.60059 -4.59961 4.60059h-27.4004c-2.59961 0 -4.59961 -2 -4.59961 -4.60059v-64c0 -2.59961 2 -4.59961 4.59961 -4.59961h27.4004c2.59961 0 4.59961 2 4.59961 4.59961zM347.5 164.6v64c0 2.60059 -2 4.60059 -4.59961 4.60059h-27.4004\nc-2.59961 0 -4.59961 -2 -4.59961 -4.60059v-64c0 -2.59961 2 -4.59961 4.59961 -4.59961h27.4004c2.59961 0 4.59961 2 4.59961 4.59961z\" />\n    <glyph glyph-name=\"usb\" unicode=\"&#xf287;\" horiz-adv-x=\"640\" \nd=\"M641.5 192c0 -3.09961 -1.7002 -6.09961 -4.5 -7.5l-89.0996 -53.5c-1.40039 -0.799805 -2.80078 -1.40039 -4.5 -1.40039c-1.40039 0 -3.10059 0.300781 -4.5 1.10059c-2.80078 1.7002 -4.5 4.5 -4.5 7.7998v35.5996h-238.7\nc25.2998 -39.5996 40.5 -106.899 69.5996 -106.899h26.7002v26.7998c0 5 3.90039 8.90039 8.90039 8.90039h89.0996c5 0 8.90039 -3.90039 8.90039 -8.90039v-89.0996c0 -5 -3.90039 -8.90039 -8.90039 -8.90039h-89.0996c-5 0 -8.90039 3.90039 -8.90039 8.90039v26.6992\nh-26.7002c-75.3994 0 -81.0996 142.5 -124.7 142.5h-100.3c-8.09961 -30.5996 -35.8994 -53.5 -69 -53.5c-39.2998 0.100586 -71.2998 32.1006 -71.2998 71.4004s32 71.2998 71.2998 71.2998c33.1006 0 61 -22.7998 69 -53.5c39.1006 0 43.9004 -9.5 74.6006 60.4004\nc40.0996 89.0996 58.0996 82.0996 108.899 82.0996c7.5 20.9004 27 35.6006 50.4004 35.6006c29.5 0 53.5 -23.9004 53.5 -53.5c0 -29.6006 -23.9004 -53.5 -53.5 -53.5c-23.4004 0 -42.9004 14.7998 -50.4004 35.5996h-29.7998\nc-29.0996 0 -44.2998 -67.4004 -69.5996 -106.9h310.1v35.6006c0 3.2998 1.7002 6.09961 4.5 7.7998s6.40039 1.40039 8.90039 -0.299805l89.0996 -53.5c2.7998 -1.10059 4.5 -4.10059 4.5 -7.2002z\" />\n    <glyph glyph-name=\"product-hunt\" unicode=\"&#xf288;\" horiz-adv-x=\"512\" \nd=\"M326.3 229.2c0 -20.5 -16.7002 -37.2002 -37.2002 -37.2002h-70.2998v74.4004h70.2998c20.5 0 37.2002 -16.7002 37.2002 -37.2002zM504 192c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248s248 -111 248 -248zM375.9 229.2\nc0 47.8994 -38.9004 86.7998 -86.8008 86.7998h-119.899v-248h49.5996v74.4004h70.2998c47.9004 0 86.8008 38.8994 86.8008 86.7998z\" />\n    <glyph glyph-name=\"mixcloud\" unicode=\"&#xf289;\" horiz-adv-x=\"640\" \nd=\"M424.43 228.271c42.3623 -9.1377 74.4805 -47.0693 74.4805 -92.2002c0 -52.3311 -42.6406 -94.6934 -94.9688 -94.6934h-289.614c-62.5752 0 -113.243 50.668 -113.243 112.966c0 56.7598 42.085 103.554 96.6299 111.582\nc22.9814 67.5586 86.9395 114.074 159.205 114.074c87.2158 0 159.205 -66.7266 167.511 -151.729zM403.941 83.7412c29.0713 0 52.6064 23.5352 52.6064 52.3301c0 22.1494 -14.1211 40.9766 -33.502 48.4531c-1.38477 -8.58301 -3.59961 -17.166 -6.36914 -25.4727\nc-8.01367 -25.6484 -49.0898 -14.2266 -40.1465 13.29c4.15332 12.7373 6.36914 26.0264 6.36914 39.5938c0 69.2197 -56.4834 125.702 -125.979 125.702c-49.8379 0 -94.6934 -29.626 -114.628 -73.9258c19.3809 -4.98438 37.3779 -14.9512 52.0527 -29.3486\nc19.9531 -19.9531 -10.2168 -50.1436 -30.1797 -30.1807c-13.29 13.291 -31.0107 20.7666 -49.8379 20.7666c-39.04 0 -70.8809 -31.5645 -70.8809 -70.6045s31.8408 -70.6035 70.8809 -70.6035h289.614zM639.01 136.071c0 -44.0244 -12.7363 -86.3867 -37.1016 -122.657\nc-4.15332 -6.0918 -10.7979 -9.41406 -17.7197 -9.41406c-16.3174 0 -27.1279 18.8262 -17.4434 32.9492c19.3809 29.3486 29.9033 63.6816 29.9033 99.1221c0 35.4395 -10.5215 69.7725 -29.9033 98.8447c-15.6553 22.8311 19.3613 47.2402 35.1631 23.5342\nc24.3662 -35.9932 37.1016 -78.3564 37.1016 -122.379zM568.13 136.071c0 -31.5654 -9.13672 -62.0215 -26.8564 -88.3252c-4.15332 -6.09082 -10.7988 -9.13574 -17.7207 -9.13574c-17.2012 0 -27.0215 18.9785 -17.4424 32.9473\nc13.0127 19.1045 19.6572 41.2559 19.6572 64.5137c0 22.9805 -6.64453 45.4072 -19.6572 64.5117c-15.7617 22.9863 19.0078 47.0947 35.1631 23.5352c17.7188 -26.0264 26.8564 -56.4834 26.8564 -88.0469z\" />\n    <glyph glyph-name=\"scribd\" unicode=\"&#xf28a;\" horiz-adv-x=\"384\" \nd=\"M42.2998 195.3c-16.0996 19 -24.7002 45.9004 -24.7998 79.9004c0 100.399 75.2002 153.1 167.2 153.1c98.5996 1.60059 156.8 -49 184.3 -70.5996l-50.5 -72.1006l-37.2998 24.6006l26.8994 38.5996c-36.5 24 -79.3994 36.5 -123 35.7998\nc-50.6992 0.800781 -111.699 -27.1992 -111.699 -76.1992c0 -18.7002 11.1992 -20.7002 28.5996 -15.6006c23.2998 5.2998 41.9004 -0.599609 55.7998 -14c26.4004 -24.2998 23.2002 -67.5996 -0.700195 -91.8994c-29.1992 -29.5 -85.1992 -27.3008 -114.8 8.39941z\nM360 189.4c33.9004 -40.4004 36.7998 -138.2 -20.2998 -189.601c-39.2002 -33.5996 -82.2002 -44.0996 -133.601 -44.0996c-70.2998 -0.299805 -138.199 25.3994 -190.699 72.2002l-15.4004 13.7998l60.7998 71.7998l35.6006 -27.4004l-33.7002 -39.3994\nc41.7002 -30.9004 92.2002 -47.5 144.1 -47.2998c61.9004 0 104.7 23.5 121.4 64.3994c0.899414 4.2002 1.39941 8.40039 1.39941 12.7002c0 18.7002 -11.1992 20.7002 -28.5996 15.5996c-23.2998 -5.2998 -42.2002 0.5 -56.2998 14.4004\nc-12.4004 11.2998 -19.1006 27.5 -18.4004 44.2998c-0.599609 39.2002 32.4004 69.2002 70.5 67.2002c24.2998 0.799805 47.7002 -9.7998 63.2002 -28.5996z\" />\n    <glyph glyph-name=\"bluetooth\" unicode=\"&#xf293;\" \nd=\"M292.6 276.9l-42.8994 -42.9004l-0.299805 86zM249.4 57.0996l0.199219 86l42.9004 -42.8994zM416 188.6c0 -205.6 -71.9004 -252.6 -185.1 -252.6c-113.2 0 -198.9 47 -198.9 252.6c0 205.601 83.4004 259.4 196.6 259.4c113.2 0 187.4 -53.9004 187.4 -259.4z\nM257.5 188.6l79.4004 88.6006l-125.101 134.3v-176.9l-73.7998 73.8008l-27 -26.9004l92.7002 -93l-92.7002 -93l26.9004 -26.9004l73.7998 73.8008l2.2998 -170l127.4 127.5z\" />\n    <glyph glyph-name=\"bluetooth-b\" unicode=\"&#xf294;\" horiz-adv-x=\"320\" \nd=\"M196.48 187.977l97.9111 -103.333l-148.552 -148.644l-2.71484 198.284l-86.1113 -86.1113l-31.4053 31.4053l108.061 108.398l-108.061 108.399l31.4053 31.4053l86.1113 -86.1113v206.33l145.981 -156.69zM237.34 290.973l-50.3145 50.3174l0.337891 -100.295z\nM187.363 134.96l-0.337891 -100.294l50.3145 50.3164z\" />\n    <glyph glyph-name=\"gitlab\" unicode=\"&#xf296;\" horiz-adv-x=\"512\" \nd=\"M105.2 423.1c0 0 56.5 -174.8 56.5996 -174.8h-132l56.5 174.8c3.2002 8.90039 15.7998 8.90039 18.9004 0zM0.900391 160.3l28.7998 88l226.2 -294l-247.9 184c-6.7998 5.10059 -9.7002 14 -7.09961 22zM161.7 248.3h188.6l-94.2998 -294zM511.1 160.3\nc2.5 -8 -0.299805 -16.8994 -7.19922 -22l-247.9 -184l226.3 294zM425.7 423.1l56.5 -174.8h-132l56.5996 174.8c3.2002 8.90039 15.7998 8.90039 18.9004 0z\" />\n    <glyph glyph-name=\"wpbeginner\" unicode=\"&#xf297;\" horiz-adv-x=\"512\" \nd=\"M462.799 125.626c56.2109 -64.3076 4.16211 -157.626 -91.8545 -157.626c-39.6025 0 -78.8242 17.6865 -100.143 50.04c-6.88672 -0.356445 -22.7021 -0.356445 -29.5898 0c-21.3643 -32.4209 -60.624 -50.04 -100.143 -50.04\nc-95.4902 0 -148.349 92.9961 -91.8555 157.626c-79.1387 131.851 31.2646 290.374 206.792 290.374c175.632 0 285.87 -158.626 206.793 -290.374zM123.152 208.598h41.5283v58.0752h-41.5283v-58.0752zM340.332 122.526v23.8389\nc-60.5059 -20.915 -132.355 -9.19824 -187.589 33.9707l0.246094 -24.8965c51.1006 -46.3672 131.746 -57.875 187.343 -32.9131zM189.579 208.598h166.058v58.0752h-166.058v-58.0752z\" />\n    <glyph glyph-name=\"wpforms\" unicode=\"&#xf298;\" \nd=\"M448 372.8v-361.7c0 -24.2998 -19 -43.1992 -43.2002 -43.1992h-361.6c-23.9004 0.0996094 -43.2002 18.6992 -43.2002 43.2998v361.6c0 24.1006 18.7998 43.2002 43.2002 43.2002h361.7c24 0 43.0996 -18.7998 43.0996 -43.2002zM410.7 11.2002v361.6\nc0 3 -2.60059 5.7998 -5.7998 5.7998h-9.30078l-110.3 -74.5996l-61.2998 49.9004l-61.2002 -49.9004l-110.3 74.7002h-9.2998c-3.2002 0 -5.7998 -2.7998 -5.7998 -5.7998v-361.7c0 -3 2.59961 -5.7998 5.7998 -5.7998h361.7\nc3.19922 -0.100586 5.7998 2.69922 5.7998 5.7998zM150.2 262v-37h-73.5v37h73.5zM150.2 187.6v-37.2998h-73.5v37.2998h73.5zM161.3 334.9l54 43.6992h-118.5zM371.3 262v-37h-196v37h196zM371.3 187.6v-37.2998h-196v37.2998h196zM286.7 334.9l64.5 43.6992h-118.4z\nM371.3 113v-37.2998h-99.3994v37.2998h99.3994z\" />\n    <glyph glyph-name=\"envira\" unicode=\"&#xf299;\" \nd=\"M0 416c477.6 0 366.6 -317.3 367.1 -366.3l80.9004 -81.7002h-26l-70.4004 71.2002c-39 -4.2002 -124.399 -34.5 -214.399 37c-90.2002 71.5 -85.2002 157.1 -137.2 339.8zM79.7002 370c-49.7002 23.5 -5.2002 -9.2002 -5.2002 -9.2002\nc45.2002 -31.2002 66 -73.7002 90.2002 -119.899c31.5 -60.2002 79 -139.7 144.2 -167.7c65 -28 34.1992 -12.5 6 8.5c-28.2002 21.2002 -68.2002 87 -91 130.2c-31.7002 60 -61 118.6 -144.2 158.1z\" />\n    <glyph glyph-name=\"glide\" unicode=\"&#xf2a5;\" \nd=\"M252.8 299.4c0 -8.80078 -1.59961 -17.7002 -3.39941 -26.4004c-5.80078 -27.7998 -11.6006 -55.7998 -17.3008 -83.5996c-1.39941 -6.30078 -8.2998 -4.90039 -13.6992 -4.90039c-23.8008 0 -30.5 26 -30.5 45.5c0 29.2998 11.1992 68.0996 38.5 83.0996\nc4.2998 2.5 9.19922 4.2002 14.0996 4.2002c11.4004 0 12.2998 -8.2998 12.2998 -17.8994zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM384 181c0 5.09961 -20.7998 37.7002 -25.5 39.5\nc-2.2002 0.900391 -7.2002 2.2998 -9.59961 2.2998c-23.1006 0 -38.7002 -10.5 -58.2002 -21.5l-0.5 0.5c4.2998 29.4004 14.5996 57.2002 14.5996 87.4004c0 44.5996 -23.7998 62.7002 -67.5 62.7002c-71.7002 0 -108 -70.8008 -108 -123.5c0 -54.7002 32 -85 86.2998 -85\nc7.5 0 6.90039 0.599609 6.90039 -2.30078c-10.5 -80.2998 -56.5 -82.8994 -56.5 -58.8994c0 24.3994 28 36.5 28.2998 38c-0.200195 7.59961 -29.2998 17.2002 -36.7002 17.2002c-21.0996 0 -32.6992 -33 -32.6992 -50.6006c0 -32.2998 20.3994 -54.7002 53.2998 -54.7002\nc48.2002 0 83.3994 49.7002 94.2998 91.7002c9.40039 37.7002 7 39.4004 12.2998 42.1006c20 10.0996 35.7998 16.7998 58.4004 16.7998c11.0996 0 19 -2.2998 36.7002 -5.2002c1.7998 -0.0996094 4.09961 1.7002 4.09961 3.5z\" />\n    <glyph glyph-name=\"glide-g\" unicode=\"&#xf2a6;\" \nd=\"M407.1 236.8c7.5 -2.89941 40.9004 -55.3994 40.9004 -63.3994c0 -2.90039 -3.7998 -5.80078 -6.7002 -5.80078c-28.3994 4.7002 -41.0996 8.40039 -58.8994 8.40039c-36.3008 0 -61.6006 -10.7998 -93.8008 -27c-8.5 -4.2998 -4.59961 -7.09961 -19.6992 -67.5996\nc-17.4004 -67.6006 -74 -145.4 -151.4 -145.4c-52.7002 0 -85.5 36 -85.5 87.9004c0 28.0996 18.5 79.1992 52.4004 79.2998c11.8994 0 58.5996 -15.4004 58.8994 -27.6006c-0.5 -2.39941 -45.5 -21.7998 -45.5 -61c0 -38.5 73.9004 -34.2998 90.7998 94.6006\nc0 4.7998 1 3.7998 -11 3.7998c-87.2998 0 -138.6 48.7002 -138.6 136.6c0 84.7002 58.2998 198.4 173.4 198.4c70.1992 0 108.399 -29.0996 108.399 -100.6c0 -48.5 -16.5 -93.1006 -23.5 -140.4l0.900391 -0.900391c31.2998 17.7002 56.3994 34.5 93.5 34.5\nc3.7998 0 11.8994 -2.39941 15.3994 -3.7998zM231.8 321.2c2.90039 13.8994 5.5 28.0996 5.60059 42.3994c0 15.4004 -1.40039 28.7002 -20 28.7002c-7.80078 0 -15.6006 -2.59961 -22.6006 -6.7002c-43.7998 -24.0996 -61.7998 -86.3994 -61.7998 -133.399\nc0 -31.2998 10.7002 -73.1006 49 -73.1006c8.7002 0 19.7002 -2.39941 22 7.80078c9.2002 44.6992 18.5 89.5996 27.7998 134.3z\" />\n    <glyph glyph-name=\"viadeo\" unicode=\"&#xf2a9;\" \nd=\"M276.2 297.5v-0.700195c-17.9004 52.6006 -42.6006 103.4 -70.7998 151.2c43.2998 -29.2002 67 -100 70.7998 -150.5zM308.9 175.8c15.0996 3.10059 29.5 9 42.1992 17c24.5 -58.5996 20.2002 -139.7 -36.3994 -201c-67.7998 -73.8994 -191.9 -74.5996 -259.8 0\nc-108.801 117.8 -31.6006 313.7 129.899 313.7c21.2998 0 42.6006 -3.5 62.5 -10.7002c-6.89941 -13.3994 -11.7002 -28.2002 -13.3994 -43.2998c-15.4004 6.5 -32.3008 9.59961 -49.1006 9.59961c-78 0 -135.399 -66.6992 -135.399 -142.3\nc0 -68.7998 45.5996 -126 111.3 -137.399c98.5 38.3994 116.6 188.199 116.6 280c0 11.6992 0 23.6992 -1 35.3994c12.4004 -36.0996 18.9004 -73.8994 18.9004 -112c0 -86.5 -35.1006 -158.399 -109.3 -205.1l-3.80078 -0.299805\nc80 -1.60059 137.801 61.6992 137.801 139.399c0 19.5 -3.40039 38.7998 -11 57zM418.1 436.3c52 -74 20.9004 -208.6 -58.0996 -208.6c-21.2998 0 -40.2002 11.3994 -55 25.7998c35.0996 19.2998 79.4004 49.2002 99.7002 84.9004\nc2.39941 4.7998 6.5 13.6992 7.2002 19.1992c-19.9004 -44.6992 -70.8008 -79.6992 -118.2 -90.6992c-7.5 11.6992 -12 24.6992 -12 38.7998c0 16.5 8.2002 38.5 20.5996 50.5c34.5 32.8994 84.7998 13.5996 115.8 80.0996z\" />\n    <glyph glyph-name=\"viadeo-square\" unicode=\"&#xf2aa;\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM280.7 66.7998c35.3994 38.2998 38.0996 89 22.7998 125.601c-7.90039 -4.90039 -16.9004 -8.60059 -26.4004 -10.5\nc4.80078 -11.4004 6.90039 -23.5 6.90039 -35.7002c0 -48.6006 -36.2002 -88.2002 -86.2002 -87.2002l2.40039 0.200195c46.3994 29.2002 68.2998 74.0996 68.2998 128.2c0 23.7998 -4.09961 47.5 -11.7998 70v0.399414c-2.2998 31.6006 -17.1006 75.7998 -44.2002 94.1006\nc17.5996 -29.9004 33 -61.6006 44.2002 -94.5c0.599609 -7.30078 0.599609 -14.8008 0.599609 -22.1006c0 -57.3994 -11.3994 -151 -72.8994 -175c-41 7.2002 -69.5 42.9004 -69.5 85.9004c0 47.2002 35.7998 88.8994 84.5996 88.8994c10.5 0 21 -1.89941 30.7002 -6\nc1.09961 9.5 4.09961 18.7002 8.39941 27.1006c-12.5 4.59961 -25.7998 6.7002 -39.0996 6.7002c-101 0 -149.2 -122.5 -81.2002 -196.101c42.4004 -46.5996 120 -46.2002 162.4 0zM309 214.3c49.4004 0 68.7998 84.1006 36.2998 130.3\nc-19.3994 -41.5 -50.7998 -29.5 -72.3994 -50c-7.7002 -7.5 -12.9004 -21.2998 -12.9004 -31.5996c0 -8.7998 2.7998 -17 7.5 -24.2998c29.7002 6.89941 61.4004 28.7998 73.9004 56.7002c-0.400391 -3.40039 -3 -9 -4.5 -12c-12.7002 -22.3008 -40.4004 -41 -62.3008 -53\nc9.30078 -9 21.1006 -16.1006 34.4004 -16.1006z\" />\n    <glyph glyph-name=\"snapchat\" unicode=\"&#xf2ab;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM417.5 101.1c2.2002 5.30078 -0.900391 9.80078 -4.90039 10.8008c-46.2998 7.59961 -67.0996 55.0996 -68 57.0996\nc-0.0996094 0.0996094 -0.0996094 0.200195 -0.199219 0.299805c-2.40039 5 -3 9.2002 -1.60059 12.5c2.60059 6.2998 12.5 9.40039 19 11.5c1.7998 0.600586 3.5 1.10059 4.90039 1.7002c11.5 4.5 17.2998 10.0996 17.2002 16.5996\nc-0.100586 5.10059 -4.10059 9.60059 -10.4004 11.9004c-4 1.59961 -9.59961 1.90039 -13.5996 0c-5.5 -2.59961 -10.4004 -4 -14.7002 -4.2002c-2.7998 0.100586 -4.60059 0.799805 -5.7002 1.40039c1.40039 24 4.7002 58 -3.7998 77.0996\nc-16.2998 36.5 -49.6006 54.2998 -84.2998 54.2998c-0.600586 0 -6.10059 -0.0996094 -6.7002 -0.0996094c-14 0 -61.6006 -4 -84.1006 -54.2998c-8.5 -19.1006 -5.19922 -53.2002 -3.7998 -77.1006c-1.09961 -0.599609 -3.2998 -1.39941 -6.59961 -1.39941\nc-4.5 0 -9.7998 1.39941 -15.7002 4.2002c-7.5 3.5 -20.2998 -1.80078 -21.9004 -10.3008c-1 -4.89941 1.2002 -12.0996 17 -18.2998c6.10059 -2.5 20.6006 -5.2998 24 -13.2002c1.40039 -3.2998 0.900391 -7.5 -1.59961 -12.5\nc-0.0996094 -0.0996094 -0.200195 -0.199219 -0.200195 -0.299805c-0.899414 -2 -21.7002 -49.5 -68 -57.0996c-3.59961 -0.600586 -6.09961 -3.7998 -5.89941 -7.40039c0.699219 -13.8994 31.6992 -19.2998 45.5 -21.3994c1.39941 -1.90039 2.5 -9.90039 4.2998 -16\nc0.799805 -2.7002 2.89941 -6 8.2998 -6s13.2998 3.09961 25.7998 3.09961c17.6006 0 23.6006 -4 37.4004 -13.7002c9.89941 -7 27.5 -19.7998 48.5 -18.2002c20.7998 -0.899414 34.7002 7.90039 49.2002 18.2002c13.6992 9.7002 19.7998 13.7002 37.3994 13.7002\nc13 0 19.6006 -2.90039 25.7998 -2.90039h0.200195c4.40039 0 7 2.2002 8.10059 5.90039c1.7998 6.09961 2.89941 14 4.2998 15.9004c26.7002 4.19922 41.2998 10.0996 44.7998 18.1992z\" />\n    <glyph glyph-name=\"snapchat-ghost\" unicode=\"&#xf2ac;\" horiz-adv-x=\"512\" \nd=\"M510.846 55.3271c-5.21094 -12.1572 -27.2383 -21.0889 -67.3594 -27.3184c-2.06445 -2.78613 -3.77539 -14.6855 -6.50781 -23.9561c-1.625 -5.56543 -5.62207 -8.86914 -12.1279 -8.86914l-0.296875 0.00585938c-9.39453 0 -19.2031 4.32227 -38.8516 4.32227\nc-26.5215 0 -35.6621 -6.04297 -56.2539 -20.5879c-21.832 -15.4375 -42.7715 -28.7637 -74.0273 -27.3984c-31.6455 -2.33398 -58.0244 16.9072 -72.8711 27.4033c-20.7139 14.6436 -29.8281 20.582 -56.2412 20.582c-18.8633 0 -30.7354 -4.71973 -38.8516 -4.71973\nc-8.07324 0 -11.2129 4.92188 -12.4219 9.04004c-2.70312 9.18848 -4.4043 21.2627 -6.52344 24.1299c-20.6787 3.20898 -67.3096 11.3438 -68.498 32.1504c-0.00878906 0.161133 -0.015625 0.422852 -0.015625 0.583984c0 4.97559 3.98438 9.67285 8.89258 10.4844\nc69.583 11.4551 100.925 82.9014 102.228 85.9346c0.0742188 0.175781 0.155273 0.34375 0.237305 0.514648c3.71289 7.53711 4.54395 13.8486 2.46289 18.7529c-5.05078 11.8965 -26.8721 16.1641 -36.0537 19.7959c-23.7148 9.36621 -27.0146 20.1279 -25.6113 27.5039\nc2.43652 12.8359 21.7246 20.7354 33.002 15.4531c8.91895 -4.18066 16.8428 -6.29688 23.5469 -6.29688c5.02148 0 8.21191 1.2041 9.95996 2.1709c-2.04297 35.9365 -7.10156 87.29 5.68652 115.969c33.7734 75.7188 105.356 81.6025 126.478 81.6025\nc0.943359 0 9.14062 0.0888672 10.1094 0.0888672c52.1484 0 102.255 -26.7803 126.724 -81.6426c12.7764 -28.6504 7.74902 -79.792 5.69434 -116.01c1.58203 -0.87207 4.35742 -1.94141 8.59961 -2.13867c6.39648 0.286133 13.8145 2.38867 22.0693 6.25684\nc6.08496 2.84668 14.4053 2.46094 20.4795 -0.0576172l0.0292969 -0.00976562c9.47559 -3.38574 15.4385 -10.2158 15.5889 -17.8701c0.183594 -9.74707 -8.52246 -18.165 -25.8779 -25.0186c-2.11816 -0.834961 -4.69434 -1.6543 -7.43457 -2.52441\nc-9.79688 -3.10645 -24.5996 -7.80566 -28.6152 -17.2715c-2.0791 -4.9043 -1.25684 -11.2109 2.45996 -18.748c0.0869141 -0.167969 0.166016 -0.341797 0.238281 -0.514648c1.30176 -3.03027 32.6152 -74.46 102.23 -85.9346\nc6.42676 -1.05762 11.1631 -7.87695 7.72461 -15.8584z\" />\n    <glyph glyph-name=\"snapchat-square\" unicode=\"&#xf2ad;\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM393.5 101.1c2.2002 5.30078 -0.900391 9.80078 -4.90039 10.8008c-46.2998 7.59961 -67.0996 55.0996 -68 57.0996\nc-0.0996094 0.0996094 -0.0996094 0.200195 -0.199219 0.299805c-2.40039 5 -3 9.2002 -1.60059 12.5c2.60059 6.2998 12.5 9.40039 19 11.5c1.7998 0.600586 3.5 1.10059 4.90039 1.7002c11.5 4.5 17.2998 10.0996 17.2002 16.5996\nc-0.100586 5.10059 -4.10059 9.60059 -10.4004 11.9004c-4 1.59961 -9.59961 1.90039 -13.5996 0c-5.5 -2.59961 -10.4004 -4 -14.7002 -4.2002c-2.7998 0.100586 -4.60059 0.799805 -5.7002 1.40039c1.40039 24 4.7002 58 -3.7998 77.0996\nc-16.2998 36.5 -49.6006 54.2998 -84.2998 54.2998c-0.600586 0 -6.10059 -0.0996094 -6.7002 -0.0996094c-14 0 -61.6006 -4 -84.1006 -54.2998c-8.5 -19.1006 -5.19922 -53.2002 -3.7998 -77.1006c-1.09961 -0.599609 -3.2998 -1.39941 -6.59961 -1.39941\nc-4.5 0 -9.7998 1.39941 -15.7002 4.2002c-7.5 3.5 -20.2998 -1.80078 -21.9004 -10.3008c-1 -4.89941 1.2002 -12.0996 17 -18.2998c6.10059 -2.5 20.6006 -5.2998 24 -13.2002c1.40039 -3.2998 0.900391 -7.5 -1.59961 -12.5\nc-0.0996094 -0.0996094 -0.200195 -0.199219 -0.200195 -0.299805c-0.899414 -2 -21.7002 -49.5 -68 -57.0996c-3.59961 -0.600586 -6.09961 -3.7998 -5.89941 -7.40039c0.699219 -13.8994 31.6992 -19.2998 45.5 -21.3994c1.39941 -1.90039 2.5 -9.90039 4.2998 -16\nc0.799805 -2.7002 2.89941 -6 8.2998 -6s13.2998 3.09961 25.7998 3.09961c17.6006 0 23.6006 -4 37.4004 -13.7002c9.89941 -7 27.5 -19.7998 48.5 -18.2002c20.7998 -0.899414 34.7002 7.90039 49.2002 18.2002c13.6992 9.7002 19.7998 13.7002 37.3994 13.7002\nc13 0 19.6006 -2.90039 25.7998 -2.90039h0.200195c4.40039 0 7 2.2002 8.10059 5.90039c1.7998 6.09961 2.89941 14 4.2998 15.9004c26.7002 4.19922 41.2998 10.0996 44.7998 18.1992z\" />\n    <glyph glyph-name=\"pied-piper\" unicode=\"&#xf2ae;\" \nd=\"M32 29l-32 -60.2002l0.799805 328c0 65.9004 53.2002 119.2 119.2 119.2h327.2c-93 -28.9004 -189.9 -94.2002 -253.9 -168.6c-70.5996 -81.4004 -110.7 -137.4 -161.3 -218.4zM448 416c0 0 0 -328.8 0.0996094 -328.8c0 -65.9004 -53.2998 -119.2 -119.3 -119.2\nh-328.399c18.5 25.5 61.6992 54 84.8994 66c35.5 18.0996 76.4004 28.5 105.3 56.2998c42.1006 40.5 47.8008 105 71 158.601c43.6006 100.3 186.4 167.1 186.4 167.1z\" />\n    <glyph glyph-name=\"first-order\" unicode=\"&#xf2b0;\" \nd=\"M12.9004 218.8c0.0996094 0.100586 0.199219 0.299805 0.299805 0.400391c0 -0.100586 0 -0.299805 -0.100586 -0.400391h-0.199219zM224 351.4c7.40039 0 14.5996 -0.5 21.7002 -1.7002l-4 -67.7002l22.2998 64.2998c14.2998 -3.7998 27.7002 -9.5 40 -16.8994\nl-29.4004 -61.1006l45.1006 50.9004c11.5 -8.90039 21.7002 -19.2002 30.5996 -30.9004l-50.5996 -45.3994l60.8994 29.6992c7.5 -12.2998 12.9004 -26 16.6006 -40.2998l-64 -22.2998l67.7002 4c1.09961 -7.09961 1.39941 -14.5996 1.39941 -22\ns-0.299805 -14.5996 -1.39941 -21.7002l-67.4004 4l64 -22.2998c-3.7002 -14.5996 -9.5 -28 -16.5996 -40.2998l-61.1006 29.3994l50.6006 -45.0996c-8.60059 -11.7998 -18.9004 -22 -30.6006 -30.9004l-44.8994 50.9004l29.3994 -61.2998\nc-12.2998 -7.5 -25.7002 -12.9004 -40 -16.9004l-22.5996 65.1006l4 -68.6006c-7.10059 -1.09961 -14.2998 -1.7002 -21.7002 -1.7002c-7.09961 0 -14.5996 0.600586 -21.7002 1.7002l4 68l-22.2998 -64.5996c-14.2998 3.7998 -27.7002 9.5 -40 16.8994l29.5 61.4004\nl-44.9004 -50.9004c-11.7998 8.60059 -22 19.2002 -30.8994 30.9004l50.8994 45.0996l-61.0996 -29.6992c-7.2002 12.5996 -12.9004 26 -16.5996 40.2998l64 22.5996l-67.7002 -4c-0.799805 7.10059 -1.40039 14.2998 -1.40039 21.7002s0.5 14.9004 1.40039 22l68 -4\nl-64.2998 22.5996c3.69922 14.3008 9.5 27.7002 16.5996 40l61.0996 -29.6992l-50.5996 45.3994c8.90039 11.7998 19.2002 22 30.5996 30.9004l45.1006 -50.9004l-29.4004 61.4004c12.2998 7.2002 25.7002 12.8994 40 16.5996l22 -64l-3.7002 67.4004\nc6.80078 1.09961 14.3008 1.7002 21.4004 1.7002zM443.4 320v-256l-219.4 -128l-219.4 128v256l219.4 128zM426.3 309.7l-202.3 117.399l-202.3 -117.399v-235.101l202.3 -117.699l202.3 117.699v235.101zM224 410.9l187.7 -109.4v-218.9l-187.7 -109.5l-187.7 109.5\nv218.801zM224 360c-92.2998 0 -166.9 -75.0996 -166.9 -168c0 -92.5996 74.6006 -167.7 166.9 -167.7c92 0 166.9 75.1006 166.9 167.7c0 92.9004 -74.9004 168 -166.9 168z\" />\n    <glyph glyph-name=\"yoast\" unicode=\"&#xf2b1;\" \nd=\"M91.2998 372h186l-7 -18.9004h-179c-39.7002 0 -71.8994 -31.5996 -71.8994 -70.2998v-205.399c0 -35.4004 24.8994 -70.3008 84 -70.3008v-19.0996h-12.1006c-50.0996 0 -91.2998 40.2002 -91.2998 89.5v205.3c0 49.2998 40.7002 89.2002 91.2998 89.2002zM320.4 428\nh66.5c-143.801 -378.1 -145.7 -398.9 -184.7 -439.3c-20.7998 -21.6006 -49.2998 -31.7002 -78.2998 -32.7002v51.0996c49.1992 7.7002 64.5996 49.9004 64.5996 75.3008c0 20.0996 0.599609 12.5996 -82.0996 223.199h61.3994l50.4004 -156.6zM448 286.5v-298.5h-214\nc6.59961 9.59961 10.7002 16.2998 12.0996 19.4004h182.5v279.1c0 32.5 -17.0996 51.9004 -48.1992 62.9004l6.69922 17.5996c41.7002 -13.5996 60.9004 -43.0996 60.9004 -80.5z\" />\n    <glyph glyph-name=\"themeisle\" unicode=\"&#xf2b2;\" horiz-adv-x=\"512\" \nd=\"M208 359.714c0 10 6.28613 21.7139 17.7148 21.7139c11.1426 0 17.7139 -11.7139 17.7139 -21.7139c0 -10.2852 -6.57129 -21.7139 -17.7139 -21.7139c-11.4287 0 -17.7148 11.4287 -17.7148 21.7139zM512 199.714c0 -36.001 -11.4287 -102.286 -36.2861 -129.714\nc-22.8574 -24.8584 -87.4277 -61.1426 -120.856 -70.5723l-1.14355 -0.286133v-32.5703c0 -16.2861 -12.5723 -30.5713 -29.1426 -30.5713c-10 0 -19.4297 5.71387 -24.5723 14.2861c-5.42676 -8.57227 -14.8564 -14.2861 -24.8564 -14.2861\ns-19.4287 5.71387 -24.8574 14.2861c-5.14258 -8.57227 -14.5713 -14.2861 -24.5703 -14.2861c-10.2861 0 -19.4287 5.71387 -24.8574 14.2861c-5.14355 -8.57227 -14.5713 -14.2861 -24.5713 -14.2861c-18.8574 0 -29.4287 15.7139 -29.4287 32.8574\nc-16.2861 -12.2852 -35.7158 -19.4287 -56.5713 -19.4287c-22 0 -43.4287 8.28516 -60.2861 22.8574c10.2852 0.286133 20.5713 2.28613 30.2852 5.71387c-20.8574 5.71387 -39.4277 18.8574 -52 36.2861c21.3701 -4.64551 46.209 -1.67285 67.1426 11.1426\nc-22 22 -56.5703 58.8574 -68.5713 87.4287c-5.71387 13.4287 -6.85645 31.4287 -6.85645 45.7139c0 49.7139 20.2861 160 86.2861 160c10.5713 0 18.8564 -4.8584 23.1426 -14.8574c3.0498 4.46289 8.42578 11.374 12 15.4277c2 2.57227 5.71387 5.42969 7.14355 8.28613\nc7.99902 12.5713 11.7139 21.1426 21.7139 34c32.2852 41.1445 81.7139 69.4297 134.856 69.4297c6 0 12 -0.285156 17.7148 -1.14355c10.8564 11.7148 26 18.2861 41.7148 18.2861c14.5703 0 29.7139 -6 40 -16.2861c0.856445 -0.857422 1.42773 -2.28613 1.42773 -3.42773\nc0 -3.71387 -10.2852 -13.4287 -12.8574 -16.2861c4.28613 -1.42871 15.7148 -6.8584 15.7148 -12c0 -2.85742 -2.85742 -5.14258 -4.57129 -7.14258c31.4287 -27.7148 49.4287 -67.1436 56.2861 -108c4.28613 5.14258 10.2852 8.57129 17.1426 8.57129\nc10.5713 0 20.8574 -7.14355 28.5713 -14.001c20.8564 -18.5703 25.7139 -53.1416 25.7139 -79.7139zM188 358.572c0 -18.2861 12.5713 -37.1436 32.2861 -37.1436c19.7139 0 32.2852 18.8574 32.2852 37.1436c0 18 -12.5713 36.8564 -32.2852 36.8564\nc-19.7148 0 -32.2861 -18.8574 -32.2861 -36.8564zM237.714 254c0 19.7139 3.71387 39.1426 8.57129 58.2861c-52.0391 -79.5342 -13.5312 -184.571 68.8574 -184.571c21.4287 0 42.5713 7.71387 60 20c2 7.42871 3.71484 14.8574 3.71484 22.5723\nc0 14.2861 -6.28613 21.4277 -20.5723 21.4277c-4.57129 0 -9.14355 -0.856445 -13.4287 -1.71387c-63.3438 -12.668 -107.143 -3.66895 -107.143 63.999zM196.572 -0.858398c0 11.1436 -8.8584 20.8574 -20.2861 20.8574c-11.4287 0 -20 -9.71484 -20 -20.8574v-32.5703\nc0 -11.1436 8.57129 -21.1426 20 -21.1426c11.4277 0 20.2861 9.71484 20.2861 21.1426v32.5703zM245.715 -0.858398c0 11.1436 -8.57227 20.8574 -20 20.8574c-11.4287 0 -20.2861 -9.71484 -20.2861 -20.8574v-32.5703c0 -11.1436 8.85742 -21.1426 20.2861 -21.1426\nc11.4277 0 20 10 20 21.1426v32.5703zM295.428 -0.858398c0 11.1436 -8.85645 20.8574 -20.2852 20.8574s-20.2852 -9.71484 -20.2852 -20.8574v-32.5703c0 -11.1436 8.85645 -21.1426 20.2852 -21.1426s20.2852 9.71484 20.2852 21.1426v32.5703zM345.143 -0.858398\nc0 11.1436 -8.85645 20.8574 -20.2852 20.8574s-20.2861 -9.71484 -20.2861 -20.8574v-32.5703c0 -11.1436 8.85742 -21.1426 20.2861 -21.1426s20.2852 10 20.2852 21.1426v32.5703zM421.714 162c-30.8564 -59.1416 -90.2852 -102.572 -158.571 -102.572\nc-96.5703 0 -160.57 84.5723 -160.57 176.572c0 16.8574 2 33.4287 6 49.7139c-20 -33.7148 -29.7139 -72.5723 -29.7139 -111.429c0 -60.2861 24.8564 -121.715 71.4287 -160.857c5.14258 9.71387 14.8564 16.2861 26 16.2861c10 0 19.4277 -5.71387 24.5713 -14.2861\nc5.42871 8.57129 14.5703 14.2861 24.8574 14.2861c10 0 19.4277 -5.71387 24.5713 -14.2861c5.42871 8.57129 14.8564 14.2861 24.8574 14.2861c10 0 19.4287 -5.71387 24.8574 -14.2861c5.14258 8.57129 14.5713 14.2861 24.5723 14.2861\nc10.8564 0 20.8564 -6.57227 25.7139 -16c43.4268 36.2861 68.5693 92 71.4258 148.286zM432.286 261.714c0 53.7139 -34.5713 105.714 -92.5723 105.714c-30.2852 0 -58.5713 -15.1426 -78.8564 -36.8564c-19.9951 -66.3828 -27.4473 -136.571 41.4287 -136.571\nc28.8047 0 97.3564 28.5381 84.2861 -36.8574c28.8564 26 45.7139 65.7148 45.7139 104.571z\" />\n    <glyph glyph-name=\"google-plus\" unicode=\"&#xf2b3;\" horiz-adv-x=\"496\" \nd=\"M248 440c136.9 0 248 -111.1 248 -248s-111.1 -248 -248 -248s-248 111.1 -248 248s111.1 248 248 248zM177.3 68c71.2998 0 118.8 50.4004 118.8 121.2c0 7.09961 -0.599609 13.8994 -1.89941 20.7002h-116.9v-42.6006h70.1006\nc-5.2002 -34.2002 -37.5 -53.2998 -70.1006 -53.2998c-43 0 -77.2002 35.5 -77.2002 78.0996c0 42.6006 34.3008 78.1006 77.2002 78.1006c18.1006 0 36.2002 -6.2002 49.4004 -19.1006l33.5996 32.6006c-22.8994 21.2998 -51.7002 32.2998 -83 32.2998\nc-68.7998 0 -124 -55.5 -124 -124s55.2002 -124 124 -124zM407.5 174.2h35.2002v35.5h-35.2002v35.5h-35.5v-35.5h-35.5v-35.5h35.5v-35.5h35.5v35.5z\" />\n    <glyph glyph-name=\"font-awesome\" unicode=\"&#xf2b4;\" \nd=\"M397.8 416c27.5 0 50.2002 -22.7002 50.2002 -50.2002v-347.6c0 -27.5 -22.7002 -50.2002 -50.2002 -50.2002h-347.6c-27.5 0 -50.2002 22.7002 -50.2002 50.2002v347.6c0 27.5 22.7002 50.2002 50.2002 50.2002h347.6zM352.4 131.7h0.0996094v140.3\nc0 4.2002 -4.2002 7.7998 -9 7.7998c-6 0 -31.0996 -16.0996 -53.7998 -16.0996c-4.7002 0 -8.90039 0.599609 -13.1006 2.39941c-20.2998 7.7002 -38.1992 13.7002 -60.8994 13.7002c-20.9004 0 -43 -6.5 -61.5 -14.2998\nc-1.7998 -1.2002 -3.60059 -1.7998 -5.40039 -2.40039v18.5c8.2998 6 13.1006 15.5 13.1006 26.3008c0 18.5996 -15 33.5 -33.5 33.5c-18.6006 0 -33.5 -15 -33.5 -33.5c0 -10.8008 5.2998 -20.3008 13.0996 -26.3008v-218.6c0 -11.2998 9 -20.2998 20.2998 -20.2998\nc8.90039 0 16.7002 5.89941 19.1006 14.2998v1.2002c0.599609 1.2002 0.599609 3 0.599609 4.7998v45.4004c1.2002 0.599609 2.40039 0.599609 3.59961 1.19922c19.7002 8.90039 44.2002 17.3008 67.5 17.3008c32.3008 0 44.8008 -16.7002 71.7002 -16.7002\nc19.2002 0 37.1006 6.5 53.7998 13.7002c4.2002 1.7998 7.80078 3.59961 7.80078 7.7998z\" />\n    <glyph glyph-name=\"linode\" unicode=\"&#xf2b8;\" \nd=\"M437.4 221.7c0.599609 -2 -8.80078 -66.2998 -9.7002 -72.7998c0 -0.900391 -0.5 -1.7002 -1.10059 -2l-54.5996 -43.7002c-1.09961 -0.900391 -2.59961 -0.900391 -3.7002 0l-20.2998 14l-2.2998 -33.4004c0 -0.899414 -0.200195 -1.7002 -1.10059 -2.2998\nl-66.8994 -53.4004c-1.10059 -0.899414 -2.90039 -0.899414 -4 0l-28 23.7002l2 -46c0 -0.899414 -0.200195 -1.7002 -1.10059 -2.2998l-83.6992 -66.9004c-0.600586 -0.299805 -1.10059 -0.599609 -1.7002 -0.599609c-0.900391 0.299805 -1.7002 0.299805 -2.2998 0.900391\nl-65.1006 69.0996c-1.5 1.40039 -15.5 72 -16.8994 79.0996c-0.300781 1.10059 0.5 2.5 1.39941 3.10059l17.4004 10.5996c-3.40039 3.2002 -26.5 23.4004 -27.1006 26.2998l-20.5996 100.301c-0.299805 1.09961 0.299805 2.5 1.7002 3.39941l26.8994 12.9004\nc-4.59961 3.5 -37.6992 27.5 -38.5996 30.8994l-27.4004 133.101c-0.299805 1.7002 0.600586 3.09961 2 3.7002l123.7 38.5996c0.600586 0 1.40039 0 2.2998 -0.299805l90.6006 -43.7002c0.799805 -0.599609 1.7002 -1.7002 1.7002 -2.59961l5.69922 -132.301\nc0 -1.19922 -0.599609 -2.2998 -1.69922 -2.89941l-33.7002 -17.4004l36 -24.2998c0.799805 -0.299805 1.39941 -1.40039 1.39941 -2.2998l1.40039 -35.1006l34.5996 21.2002c0.800781 0.600586 2.2002 0.600586 3.10059 0l24 -16l0.899414 31.4004\nc0 0.899414 0.5 2 1.40039 2.59961l58.9004 36c1.09961 0.600586 2.19922 0.600586 3.09961 0l70 -38.5996c0.5 -0.600586 1.09961 -1.10059 1.40039 -2zM232.6 216.9l-100.6 -57.2002l14 -96.6006l90.5996 61.2002zM224.9 396.9l-120.9 -46.6006l19.7002 -134.8\nl106.6 55.4004zM44 274.9l73.0996 -57.2002l-19.3994 132.899l-79.7002 49.4004zM74.5996 127.1l64.8008 -60.7998l-13.7002 93.4004l-70 58.2998zM98.9004 9.40039l57.6992 -61.2002l-9.69922 67.3994l-61.7002 60.9004zM163.4 -55.0996l78.1992 62.2998l-3.09961 70\nl-85.7002 -61.4004zM245.4 60l27.0996 -22.9004l-0.599609 68.3008l-29.4004 22.5996c0 -2.2998 1.2002 -6.2998 -1.09961 -8l-22.3008 -14.9004l24.3008 -20c2.89941 -2.19922 2 -21.6992 2 -25.0996zM339.7 85.4004l4.2002 66.8994l-65.7002 -46.8994l0.599609 -68.6006z\nM367.4 111.1l5.7998 66.6006l-64.6006 40.5996l-0.599609 -30l41.2002 -27.2002c0.799805 -0.599609 1.39941 -1.69922 1.09961 -2.59961l-2 -34zM422 150.9l8.5 63.3994l-51.0996 -36.5996l-5.7002 -65.1006z\" />\n    <glyph glyph-name=\"quora\" unicode=\"&#xf2c4;\" \nd=\"M440.5 61.2998c1.7998 -18 -7.2002 -93.2998 -89 -93.2998c-49.5 0 -75.5 28.7002 -95.2002 62.2998c-117.7 -32.5996 -249 54.9004 -249 189c0 117 98 196.7 197.7 196.7c101.8 0 198.5 -79.2002 198.4 -196.7c0 -65.5 -30.5 -118.8 -74.7002 -153\nc14.2002 -21.5996 29 -35.7998 49.5 -35.7998c22.5 0 31.5 17.2998 33 30.7998h29.2998zM297 118.8c11.2998 24.9004 16.7998 58.7002 16.7002 100.5c0 104.2 -32.5 157.7 -108.7 157.7c-75 0 -107.5 -53.5 -107.5 -157.9c0 -103.699 32.5 -156.699 107.5 -156.699\nc12 0 22.7002 1.19922 32.7002 4.19922c-15.5 30.5 -33.7002 61.3008 -69.2002 61.3008c-6.7998 0 -13.5996 -1 -19.7998 -4l-12.2002 24.2998c14.7002 12.7998 38.5 22.7998 69 22.7998c47.7998 0 72 -23 91.5 -52.2002z\" />\n    <glyph glyph-name=\"free-code-camp\" unicode=\"&#xf2c5;\" horiz-adv-x=\"576\" \nd=\"M69.2998 303.5c-41 -68.5 -36.3994 -163 1 -227c22.2002 -38.2002 49.7002 -52.4004 49.7002 -66.5c0 -6.7998 -6 -13 -12.7998 -13c-19.5 0 -99.2002 75.5 -99.2002 197.8c0 111.5 78 186 97.0996 186c6 0 14.9004 -4.7998 14.9004 -11.0996\nc0 -12.7002 -28.2998 -28.6006 -50.7002 -66.2002zM265.1 89.7002c-37.1992 13.5996 -65.5 45.8994 -65.2998 86.2002c0 48 57.7002 90.0996 57.7002 136.199c0 16.8008 -10.4004 32.6006 -19.5996 38.2002c-1.90039 1 -4.60059 2.7002 -4.60059 5.10059\nc0 9.59961 26.1006 2.7998 36.5 -2.2002c33.6006 -15.9004 40.6006 -40.2998 46.4004 -74.1006c1.39941 -7.89941 4.2998 -33.2998 15.8994 -33.2998c7.5 0 12.3008 5.10059 12.3008 12.2998c0 12.6006 -15.4004 31.2002 -7.2002 31.2002\nc6.09961 0 18.5996 -12.7998 22.5 -16.8994c23.3994 -24.9004 32.0996 -49 32.0996 -82.6006c0 -42.2002 -23.3994 -74.7002 -53.0996 -89.7998c-9.2002 -5.7998 -12.1006 0.900391 -12.1006 1.90039c0 7 29.5 23.5996 29.5 56c0 10.5996 -2.69922 22.5 -8.5 31.3994\nc-1.69922 2.40039 -7.69922 10.1006 -11.0996 10.1006c-0.700195 0 -0.700195 -0.5 -0.700195 -1.2002c0 -5.7998 3.60059 -11.4004 3.60059 -17.4004c0 -13 -31.9004 -20.2002 -31.9004 6.7998c0 7.10059 0.700195 14.3008 0.700195 21.3008\nc0 5.09961 -0.200195 6.5 -2.40039 11.0996c-3.39941 6.5 -14.5 19.7998 -22.5 19.7998c-2.2002 0 -2.89941 0 -2.89941 -2.2002c0 -3.39941 7.69922 -7 7.69922 -19.2998c0 -32.0996 -44.1992 -37.8994 -44.1992 -70c0 -14.3994 1.89941 -26.5 10.0996 -38.5996\nc5.09961 -7.5 10.5996 -11.7998 19.0996 -15.2002c2.10059 -0.700195 4.30078 -0.900391 4.30078 -3.59961c0 -6.40039 -7.80078 -3 -12.3008 -1.2002zM470.4 381c21.3994 0 97.5996 -78.9004 97.5 -198.2c0 -104.899 -73.4004 -185.7 -98.8008 -185.7\nc-5 0 -13.1992 6.30078 -13.1992 11.4004c0 8.2002 28.2998 34.5996 35.2998 43.5c61 76.7002 64 205.9 -17.6006 291c-5.5 5.7998 -17.5996 16.7002 -17.5996 25.4004c0 6.09961 8.40039 12.5996 14.4004 12.5996zM428.1 57.9004c8.40039 0 11.9004 -7 11.9004 -15.5\nc0 -8.90039 -2.5 -16.4004 -11.9004 -16.4004h-261.1c-8.5 0 -15.5 7 -15.5 15.5c0 8.90039 6.09961 16.4004 15.5 16.4004h261.1z\" />\n    <glyph glyph-name=\"telegram\" unicode=\"&#xf2c6;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM369.8 270.1c3.60059 16.8008 -6.09961 23.5 -17.2002 19.5l-239.1 -92.1992c-16.4004 -6.40039 -16.0996 -15.5 -2.7998 -19.7002l61.2002 -19.1006l142 89.4004\nc6.59961 4.40039 12.6992 1.90039 7.69922 -2.5l-114.899 -103.8l-4.40039 -63.1006c6.40039 0 9.2002 2.80078 12.5 6.10059l29.9004 28.7998l62 -45.7002c11.2998 -6.39941 19.3994 -3.09961 22.3994 10.5z\" />\n    <glyph glyph-name=\"bandcamp\" unicode=\"&#xf2d5;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM296.2 113.9l84.7002 156.1h-181l-84.7002 -156.1h181z\" />\n    <glyph glyph-name=\"grav\" unicode=\"&#xf2d6;\" horiz-adv-x=\"512\" \nd=\"M301.1 236c4.40039 -4.40039 4.40039 -11.9004 0 -16.2998l-9.69922 -9.7002c-4.40039 -4.7002 -11.9004 -4.7002 -16.6006 0l-10.5 10.5c-4.39941 4.7002 -4.39941 11.9004 0 16.5996l9.7002 9.7002c4.40039 4.40039 11.9004 4.40039 16.5996 0zM270.9 255.7\nc-2.7002 -2.7998 -7.40039 -2.7998 -10.5 0c-2.80078 3 -2.80078 7.7002 0 10.5c3 3 7.69922 3 10.5 0c3 -2.7002 3 -7.5 0 -10.5zM244.9 250.4c2.7998 3 7.5 3 10.5 0c2.7998 -2.7002 2.7998 -7.40039 0 -10.2002c-3 -3 -7.7002 -3 -10.5 0c-3 2.7002 -3 7.39941 0 10.2002\nzM317.4 263.7c-19.9004 14.3994 -33.8008 43.2002 -11.9004 68.0996c21.5996 24.9004 40.7002 17.2002 59.7998 -0.799805c11.9004 -11.2998 29.2998 -24.9004 17.2002 -48.2002c-12.5 -23.5 -45.0996 -33.2002 -65.0996 -19.0996zM365.1 308.2\nc-8.89941 10 -23.2998 -6.90039 -15.5 -16.1006c7.40039 -9 32.1006 -2.39941 15.5 16.1006zM504 192c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248s248 -111 248 -248zM437.8 149.4c2.5 16.0996 -20.2002 16.5996 -25.2002 25.6992\nc-13.5996 24.1006 -27.6992 36.8008 -54.5 30.4004c11.6006 8 23.5 6.09961 23.5 6.09961c0.300781 6.40039 0 13 -9.39941 24.9004c3.89941 12.5 0.299805 22.4004 0.299805 22.4004c15.5 8.59961 26.7998 24.3994 29.0996 43.1992\nc3.60059 31 -18.7998 59.2002 -49.7998 62.8008c-22.0996 2.5 -43.7002 -7.7002 -54.2998 -25.7002c-23.2002 -40.1006 1.40039 -70.9004 22.4004 -81.4004c-14.4004 1.40039 -34.3008 11.9004 -40.1006 34.2998c-6.59961 25.7002 2.7998 49.8008 8.90039 61.4004\nc0 0 -4.40039 5.7998 -8 8.90039c0 0 -13.7998 0 -24.6006 -5.30078c11.9004 15.2002 25.2002 14.4004 25.2002 14.4004c0 6.40039 -0.599609 14.9004 -3.59961 21.5996c-5.40039 11 -23.7998 12.9004 -31.7002 -2.7998c0.0996094 0.200195 0.299805 0.400391 0.400391 0.5\nc-5 -11.8994 -1.10059 -55.8994 16.8994 -87.2002c-2.5 -1.39941 -9.09961 -6.09961 -13 -10c-21.5996 -9.69922 -56.2002 -60.2998 -56.2002 -60.2998c-28.1992 -10.7998 -77.1992 -50.8994 -70.5996 -79.7002c0.299805 -3 1.40039 -5.5 3 -7.5\nc-2.7998 -2.19922 -5.5 -5 -8.2998 -8.2998c-11.9004 -13.7998 -5.2998 -35.2002 17.7002 -24.3994c15.7998 7.19922 29.5996 20.1992 36.2998 30.3994c0 0 -5.5 5 -16.2998 4.40039c27.6992 6.59961 34.2998 9.39941 46.1992 9.09961c8 -3.89941 8 34.2998 8 34.2998\nc0 14.7002 -2.19922 31 -11.0996 41.5c12.5 -12.1992 29.0996 -32.6992 28 -60.5996c-0.799805 -18.2998 -15.2002 -23 -15.2002 -23c-9.09961 -16.5996 -43.2002 -65.9004 -30.3994 -106c0 0 -9.7002 14.9004 -10.2002 22.0996\nc-17.4004 -19.3994 -46.5 -52.2998 -24.6006 -64.5c26.6006 -14.6992 108.801 88.6006 126.2 142.301c34.6006 20.7998 55.4004 47.2998 63.9004 65c22 -43.5 95.2998 -94.5 101.1 -59z\" />\n    <glyph glyph-name=\"etsy\" unicode=\"&#xf2d7;\" horiz-adv-x=\"384\" \nd=\"M384 100c-1.75 -10.75 -13.75 -110 -15.5 -132c-117.879 4.29883 -219.895 4.74316 -368.5 0v25.5c45.457 8.94824 60.627 8.01855 61 35.25c1.79297 72.3223 3.52441 244.143 0 322c-1.0293 28.46 -12.1299 26.7646 -61 36v25.5\nc73.8857 -2.3584 255.933 -8.55078 362.999 3.75c-3.5 -38.25 -7.75 -126.5 -7.75 -126.5h-23.249c-11.0527 42.835 -18.7588 90.5 -54.75 90.5h-137c-10.25 0 -10.75 -3.5 -10.75 -9.75v-163.75c58 -0.5 88.5 2.5 88.5 2.5c29.7695 0.951172 27.5596 8.50195 40.75 65.251\nh25.75c-4.40723 -101.351 -3.91016 -61.8291 -1.75 -160.25h-25.75c-9.15527 40.0859 -9.06543 61.0449 -39.501 61.5c0 0 -21.5 2 -88 2v-139c0 -26 14.25 -38.25 44.25 -38.25h89.251c63.6357 0 66.5645 24.9961 98.751 99.75h22.249v-0.000976562z\" />\n    <glyph glyph-name=\"imdb\" unicode=\"&#xf2d8;\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM21.2998 218.8h-0.299805c0.0996094 0.100586 0.200195 0.299805 0.299805 0.400391v-0.400391zM97 128.2v127.8h-33v-127.8h33z\nM210.2 128.2v127.8h-43l-7.60059 -59.9004c-2.69922 20 -5.39941 40.1006 -8.69922 59.9004h-42.8008v-127.8h29v84.5l12.2002 -84.5h20.6006l11.5996 86.3994v-86.3994h28.7002zM221.6 128.2c86.1006 -0.100586 75 -6 75 82.5c0 8.09961 0.300781 16.7998 -1.39941 24.3994\nc-4.2998 22.5 -31.4004 20.9004 -49 20.9004h-24.6006v-127.8zM382.5 157.4v36c0 17.2998 -0.799805 30.0996 -22.2002 30.0996c-8.89941 0 -14.8994 -2.7002 -20.8994 -9.2002v41.7002h-31.7002v-127.8h29.7998l1.90039 8.09961\nc5.69922 -6.7998 11.8994 -9.7998 20.8994 -9.7998c19.7998 0 22.2002 15.2002 22.2002 30.9004zM265 218.1v-49.2998c0 -9.7002 1.90039 -18.7002 -10.2998 -18.3994v83.6992c11.8994 0 10.2998 -6.2998 10.2998 -16zM350.5 192v-32.7002\nc0 -5.39941 1.59961 -14.3994 -6.2002 -14.3994c-1.59961 0 -3 0.799805 -3.7998 2.39941c-2.2002 5.10059 -1.09961 44.1006 -1.09961 44.7002c0 3.7998 -1.10059 12.7002 4.89941 12.7002c7.2998 0 6.2002 -7.2998 6.2002 -12.7002z\" />\n    <glyph glyph-name=\"ravelry\" unicode=\"&#xf2d9;\" horiz-adv-x=\"512\" \nd=\"M407.4 386.5c72.6992 -37.9004 112 -117.2 103.3 -199.5c-1.7002 -16.7002 -4.40039 -36.2002 -9.7998 -52.2002c-22.2002 -65.7002 -52.9004 -108.6 -123.101 -147.7c-6.39941 -4.39941 -13.2998 -8.59961 -20.2002 -10.7998\nc-12.5 -4.39941 -26.0996 -5.39941 -40.0996 -3.89941c-5.90039 -0.5 -11.7998 -0.700195 -18 -0.700195c-93.7002 0 -173 64 -196.9 151.399c-0.699219 0 -1.5 0.200195 -2.19922 0.200195c-5.60059 -44.2998 27.0996 -104.1 27.0996 -104.1s2 -3 13.2998 -20.2002\nc-62.7998 33.2002 -64.5 131.2 -64.5 131.2c-15 5.59961 -67.2002 23.3994 -76.2998 37.8994c0 0 40.9004 -22.3994 76.2002 -27c-0.200195 0.300781 0.5 7.90039 0.5 7.90039c2.2002 30 12.5 53.4004 23.0996 71.4004c6.90039 33.7998 22.1006 64.2998 43.2998 89.8994\nc3.7002 15.2998 9.60059 33.5 19.9004 52.7002c4.40039 8.40039 8.59961 13.7998 19.9004 19c74.8994 35 148.699 43.9004 224.5 4.5zM138.8 284.8c-7.59961 -11.2998 -13.7002 -23.5996 -18.8994 -36.3994c8.09961 8.59961 14.7998 14.1992 18.1992 16.6992\nc-0.5 7.40039 0.700195 19.7002 0.700195 19.7002zM107.6 162.9c0.700195 -9.60059 2 -18.9004 4.2002 -28.1006l41.4004 -6.89941c-14.1006 42.0996 -15.7998 90.0996 -15.7998 90.0996c-16.5 -16 -25.4004 -37.9004 -29.8008 -55.0996zM115.5 120.1\nc21.4004 -69.6992 81 -122.8 154.1 -134.399c-1 0.299805 -1.69922 0.5 -2.69922 1c0 0 -81 47.5 -108.301 124.3c-9.09961 1.5 -28.2998 5.90039 -43.0996 9.09961zM386 3.90039c63 32 106.6 98 106.8 174c0 107.399 -86.5996 194.5 -193 194.5\nc-49.2998 0 -94.0996 -18.7002 -128.3 -49.5c-5.2002 -10.1006 -8.59961 -22.9004 -11.0996 -39.4004c52.5 44.5996 146 33.5 146 33.5c23.3994 -1 20.5996 -21.7002 20.3994 -28.0996c-85.2002 7.19922 -127 -17.2002 -168.399 -52.4004\nc0 0 8.09961 -78.7998 26.7998 -110.8c107.8 -4.90039 189.8 53.7002 189.8 53.7002c10.2998 7.39941 19.4004 8.09961 21.4004 -4.7002c1.5 -10.4004 2.19922 -24.4004 -9.60059 -29.7998c-36 -16.8008 -75.5996 -27.3008 -115 -33\nc-25.5996 -3.7002 -39.7998 -4.60059 -78 -3.90039c36.4004 -84.7002 127.5 -107.8 127.5 -107.8c28.5 -4.7002 50.2002 -1 64.7002 3.7002z\" />\n    <glyph glyph-name=\"sellcast\" unicode=\"&#xf2da;\" \nd=\"M353.4 416c52.0996 0 94.6992 -42.5996 94.6992 -94.5996v-258.801c0 -52 -42.5996 -94.5996 -94.6992 -94.5996h-258.7c-52.1006 0 -94.7002 42.5996 -94.7002 94.7002v258.7c0 52 42.5996 94.5996 94.7002 94.5996h258.7zM303.4 99.5996\nc27.8994 48.2002 11.1992 110.5 -37.2002 138.5c-18.6006 10.8008 0.0996094 -0.0996094 -18.5 10.7002c-25 14.4004 -46.2002 -23.2998 -21.6006 -37.5c18 -10.2002 0.800781 -0.399414 18.6006 -10.5996c27.5996 -16 37.2002 -51.7998 21.2998 -79.4004\nc-16 -27.5996 -51.7998 -37.2002 -79.4004 -21.2998c-18.5996 10.7998 0.100586 -0.0996094 -18.5 10.7002c-10.2998 6 -23.5996 2.39941 -29.5 -7.90039l-15.6992 -27.2002c-12.6006 -21.7998 19.3994 -53 42.2998 -13.1992c48.2998 -27.7002 110.3 -11 138.2 37.1992z\nM325.2 308.4c14.2998 24.7998 -23.4004 46.3994 -37.7002 21.5l-4.7998 -8.40039c-48.2998 27.7002 -110.3 11 -138.2 -37.2002c-27.7998 -48.2998 -11.0996 -110.6 37.0996 -138.399c18.6006 -10.8008 -0.0996094 0.0996094 18.5 -10.7002\nc25 -14.4004 46.2002 23.2998 21.6006 37.5c-0.100586 0 -18.6006 10.5996 -18.6006 10.5996c-27.5996 16 -37.2998 51.7998 -21.2998 79.4004c16 27.5996 51.7998 37.2002 79.4004 21.2998c18.5996 -10.7998 -0.100586 0.0996094 18.5 -10.7002\nc10.2002 -5.09961 20 -2.89941 26.5 3.60059c2.7002 2.69922 2 2 19 31.5z\" />\n    <glyph glyph-name=\"superpowers\" unicode=\"&#xf2dd;\" \nd=\"M448 416l-87.2002 -87c39.7002 -38.7002 61.2002 -92.7002 57.7002 -148.2c-5.40039 -93 -76.9004 -167.3 -168.7 -179.8c-83.2998 -11 -166.5 -22 -249.8 -33l86.7998 86.7998c-39.7998 38.7002 -61.0996 92.7002 -57.7998 148.2c5.7002 93.2998 77 167.5 169 180\nc83.2002 11 166.7 22 250 33zM368.3 183.7c4.40039 80 -56.7998 146.3 -136.1 151c-78.7002 4.7998 -148.5 -55.2998 -153 -134.5c-4.40039 -80 56.7998 -146.3 136.3 -151c78.7998 -4.7002 148.6 55 152.8 134.5z\" />\n    <glyph glyph-name=\"wpexplorer\" unicode=\"&#xf2de;\" horiz-adv-x=\"512\" \nd=\"M512 192c0 -141.2 -114.7 -256 -256 -256c-141.2 0 -256 114.7 -256 256s114.7 256 256 256s256 -114.7 256 -256zM480 192c0 123.2 -100.3 224 -224 224c-123.5 0 -224 -100.5 -224 -224s100.5 -224 224 -224s224 100.5 224 224zM160.9 323.4l86.8994 -37.1006\nl-37.0996 -86.8994l-86.9004 37.0996zM270.9 154.3l46.5996 -94h-14.5996l-50 100l-48.9004 -100h-14l51.0996 106.9l-22.2998 9.39941l6 14l68.6006 -29.0996l-6 -14.2998zM259.1 270.6l68.6006 -29.3994l-29.4004 -68.2998l-68.2998 29.0996zM339.4 227.7\nl54.5996 -23.1006l-23.4004 -54.2998l-54.2998 23.1006z\" />\n    <glyph glyph-name=\"meetup\" unicode=\"&#xf2e0;\" horiz-adv-x=\"512\" \nd=\"M99 33.7002c1.09961 -5.7002 -2.2998 -11.1006 -8 -12.2998c-5.40039 -1.10059 -10.9004 2.2998 -12 8c-1.09961 5.39941 2.2998 11.0996 7.7002 12.2998c5.39941 1.2002 11.0996 -2.2998 12.2998 -8zM242.1 -37.7002c6.60059 4.60059 15.5 2.7998 19.7002 -3.7002\nc4.60059 -6.59961 2.90039 -15.3994 -3.39941 -20c-6.60059 -4.59961 -15.4004 -2.89941 -20 3.7002c-4.30078 6.60059 -2.60059 15.4004 3.69922 20zM156.1 424.6c-6.2998 -1.5 -12.5 2.5 -13.8994 9.10059c-1.2002 6.2998 2.7998 12.5996 9.09961 14\nc6.2998 1.5 12.6006 -2.5 13.7002 -9.10059c1.40039 -6.2998 -2.59961 -12.5996 -8.90039 -14zM34.4004 221.7c10 -7.10059 12.5996 -20.7998 5.69922 -31.2002c-6.89941 -10.2998 -20.5996 -12.7998 -30.5996 -5.7002c-10 6.90039 -12.5996 20.9004 -5.7002 30.9004\nc6.90039 10.2998 20.6006 12.8994 30.6006 6zM306.4 392.6c-10.3008 -6.2998 -23.7002 -2.89941 -29.7002 7.40039c-6.2998 10.5996 -2.90039 24.2998 7.39941 30.5996c10.3008 6.30078 23.7002 2.90039 30 -7.69922c6 -10.3008 2.90039 -24 -7.69922 -30.3008zM115.3 334.6\nc-7.5 -5.19922 -18 -3.5 -23.0996 4.30078c-5.10059 7.69922 -3.40039 18.2998 4.2998 23.6992c7.40039 5.10059 18 3.40039 23.0996 -4.2998c5.10059 -7.7002 3.40039 -18.2998 -4.2998 -23.7002zM487.6 178.6c7.40039 1.40039 14.8008 -3.5 16.3008 -10.8994\nc1.69922 -7.7002 -3.2002 -15.2002 -10.6006 -16.6006c-7.39941 -1.69922 -14.8994 3.2002 -16.2998 10.6006c-1.7002 7.7998 3.2002 15.2002 10.5996 16.8994zM527.3 235.4c1.40039 -5.7002 -2.2998 -11.1006 -7.7002 -12.6006\nc-5.69922 -1.09961 -11.1992 2.60059 -12.2998 8c-1.09961 5.7002 2.2998 11.5 8 12.6006c5.40039 1.09961 10.9004 -2.30078 12 -8zM447 309.1c8.2998 6 20 3.80078 25.7002 -4.89941c5.7002 -8.60059 3.7002 -20.2998 -4.60059 -26.2998\nc-8.59961 -5.7002 -20.2998 -3.7002 -26 4.89941c-5.69922 8.60059 -3.69922 20.2998 4.90039 26.2998zM440.7 169.7c26.2998 -43.1006 15.0996 -100 -26.2998 -129.101c-17.4004 -12.2998 -37.1006 -17.6992 -56.9004 -17.0996\nc-12 -47.0996 -69.4004 -64.5996 -105.1 -32.5996c-1.10059 -0.900391 -2.60059 -1.7002 -3.7002 -2.90039c-39.1006 -27.0996 -92.2998 -17.4004 -119.4 22.2998c-9.7002 14.2998 -14.5996 30.6006 -15.0996 46.9004c-65.4004 10.8994 -90 94 -41.1006 139.7\nc-28.2998 46.8994 0.600586 107.399 53.4004 114.899c25.0996 66.2002 107.6 97.6006 163.6 54.2002c67.4004 22.2998 136.301 -29.4004 130.9 -101.1c41.0996 -12.6006 52.7998 -66.9004 19.7002 -95.2002zM370.7 95.4004\nc-3.10059 20.5996 -40.9004 4.59961 -43.1006 27.0996c-3.09961 32 43.7002 101.1 40 128c-3.39941 24 -19.3994 29.0996 -33.3994 29.4004c-13.4004 0.299805 -16.9004 -2 -21.4004 -4.60059c-2.89941 -1.7002 -6.59961 -4.89941 -11.7002 0.299805\nc-6.2998 6 -11.0996 11.7002 -19.3994 12.9004c-12.2998 2 -17.7002 -2 -26.6006 -9.7002c-3.39941 -2.89941 -12 -12.8994 -20 -9.09961c-3.39941 1.7002 -15.3994 7.7002 -24 11.3994c-16.2998 7.10059 -40 -4.59961 -48.5996 -20\nc-12.9004 -22.8994 -38 -113.1 -41.7002 -125.1c-8.59961 -26.5996 10.9004 -48.5996 36.9004 -47.0996c11.0996 0.599609 18.2998 4.59961 25.3994 17.3994c4 7.40039 41.7002 107.7 44.6006 112.601c2 3.39941 8.89941 8 14.5996 5.09961\nc5.7002 -3.09961 6.90039 -9.40039 6 -15.0996c-1.09961 -9.7002 -28 -70.9004 -28.8994 -77.7002c-3.40039 -22.9004 26.8994 -26.6006 38.5996 -4c3.7002 7.09961 45.7002 92.5996 49.4004 98.2998c4.2998 6.2998 7.39941 8.2998 11.6992 8\nc3.10059 0 8.30078 -0.900391 7.10059 -10.9004c-1.40039 -9.39941 -35.1006 -72.2998 -38.9004 -87.6992c-4.59961 -20.6006 6.60059 -41.4004 24.9004 -50.6006c11.3994 -5.7002 62.5 -15.7002 58.5 11.1006zM376.4 3.09961c10.5996 7.5 24.8994 4.60059 32.2998 -6\nc7.09961 -10.5996 4.59961 -25.1992 -6 -32.5996c-10.6006 -7.09961 -24.9004 -4.59961 -32 6c-7.2002 10.5996 -4.60059 25.2002 5.7002 32.5996z\" />\n    <glyph glyph-name=\"font-awesome-alt\" unicode=\"&#xf35c;\" \nd=\"M339.3 276.8c5.40039 0 9.5 -3 7.7002 -7.09961v-134.4c0 -4.2002 -3 -6 -7.2002 -7.7998c-15.5996 -7.09961 -33.5 -13.7002 -52 -13.7002c-26.2998 0 -38.2002 16.1006 -69.2998 16.1006c-22.7002 0 -46 -8.30078 -65.7002 -16.7002\nc-0.599609 -0.600586 -1.7998 -1.2002 -3 -1.2002v-44.2002c0 -1.7998 0 -3 -0.599609 -4.7998v-1.2998c-2.40039 -7.7002 -9.5 -13.7002 -18.5 -13.7002c-10.7002 0 -19.7002 8.90039 -19.7002 19.7002v212.1c-7.7002 6 -12.5 15.5 -12.5 25.7002\nc0 18 14.2998 32.2998 32.2998 32.2998s32.2998 -14.3994 32.2998 -32.2998c0 -10.7998 -4.69922 -19.7002 -12.5 -25.7002v-17.8994c1.2002 0.599609 3 1.19922 4.80078 1.7998c17.8994 7.09961 39.3994 13.7002 59.6992 13.7002\nc22.1006 0 39.4004 -5.90039 59.1006 -13.7002c4.09961 -1.7998 8.2998 -2.40039 12.5 -2.40039c22.7002 0 46.5996 15.5 52.5996 15.5zM397.8 416c27.5 0 50.2002 -22.7002 50.2002 -50.2002v-347.6c0 -27.5 -22.7002 -50.2002 -50.2002 -50.2002h-347.6\nc-27.5 0 -50.2002 22.7002 -50.2002 50.2002v347.6c0 27.5 22.7002 50.2002 50.2002 50.2002h347.6zM412.1 18.2998v347.601c0 7.69922 -6.5 14.2998 -14.2998 14.2998v-0.100586h-347.6c-7.7002 0 -14.2998 -6.5 -14.2998 -14.2998v-347.5\nc0 -7.7002 6.5 -14.2998 14.2998 -14.2998h347.6c7.7002 0 14.2998 6.5 14.2998 14.2998z\" />\n    <glyph glyph-name=\"accessible-icon\" unicode=\"&#xf368;\" \nd=\"M423.9 192.2l-12.9004 -157.3c-3.2998 -40.7002 -63.9004 -35.1006 -60.5996 4.89941l10 122.5l-41.1006 -2.2998c10.1006 -20.7002 15.7998 -43.9004 15.7998 -68.5c0 -41.2002 -16.0996 -78.7002 -42.2998 -106.5l-39.2998 39.2998\nc57.9004 63.7002 13.0996 167.2 -74 167.2c-25.9004 0 -49.5 -9.90039 -67.2002 -26l-39.2998 39.2998c22 20.7002 50.0996 35.1006 81.4004 40.2002l75.2998 85.7002l-42.6006 24.7998l-51.5996 -46c-30 -26.7998 -70.5996 18.5 -40.5 45.4004l68 60.6992\nc9.7998 8.80078 24.0996 10.2002 35.5 3.60059c0 0 139.3 -80.9004 139.5 -81.1006c16.2002 -10.0996 20.7002 -36 6.09961 -52.5996l-58.3994 -66.5l106.1 5.90039c18.5 1.09961 33.6006 -14.4004 32.1006 -32.7002zM359 346.2\nc-28.0996 0 -50.9004 22.7998 -50.9004 50.8994c0 28.1006 22.8008 50.9004 50.9004 50.9004s50.9004 -22.7998 50.9004 -50.9004c0 -28.0996 -22.8008 -50.8994 -50.9004 -50.8994zM179.6 -8.5c20.8008 0 40.1006 6.40039 56.1006 17.2998l39.7002 -39.7002\nc-100.7 -78.8994 -251.4 -8.19922 -251.4 122.5c0 36.1006 12.4004 69.4004 33.2002 95.7002l39.7002 -39.7002c-44.7002 -65.5 2.09961 -156.1 82.6992 -156.1z\" />\n    <glyph glyph-name=\"accusoft\" unicode=\"&#xf369;\" horiz-adv-x=\"640\" \nd=\"M322.1 196c-1.69922 -1.59961 -89.5996 -82.5 -90.1992 -83.2998l-92.6006 -33.7998c-4.7998 -2 -7.59961 -3.7002 -7 -8.90039c0.200195 -1.5 0.600586 -22.5996 1 -27.7002c-0.700195 -0.5 -0.0996094 0 -0.599609 -0.599609c0 0 -113.7 -36.6006 -114.5 -36.6006\nc-14.1006 -5.09961 -22.7002 -8.2998 -15.7002 1.7002c1.2998 1.7998 234.4 231.601 243.4 240.9c13 13.5 25 15.0996 25 15.0996l51.1992 -65.7998v-1zM482.2 75.9004c-5.7002 6.89941 -232.2 297.1 -239.9 306.6c-13.7002 17.2002 0 16.7998 19.2002 16.9004\nc9.7002 0.0996094 106.3 0.599609 116.5 0.599609c24.0996 0.0996094 28.7002 -0.599609 38.4004 -12.7998c2.09961 -2.7002 205.1 -245.8 207.199 -248.3c5.5 -6.7002 15.2002 -19.1006 7.2002 -23.4004c-2.39941 -1.2998 -114.6 -47.7002 -117.8 -48.9004\nc-10.0996 -4 -17.5 -6.7998 -30.7998 9.30078zM634.9 74.2998c6 -1.39941 7.09961 -4.2002 1.69922 -8.2002c-2 -1.39941 -123.699 -76.5996 -125.8 -77.7998c-15.0996 -8.7998 -38 -1.59961 -53.5996 1.7002c-7.10059 1.5 -305.3 68.2998 -308 69.0996\nc-2.60059 0.900391 -4.40039 1 -4.60059 3.5c-0.299805 4 6 5.60059 11.1006 7.60059c5 1.89941 145.3 52.5996 150.2 54.7002c4.7998 2.09961 11.2998 2.69922 14.3994 2.89941c4.90039 0.299805 59.9004 -8.39941 65.2998 -9.2998l57.1006 -74\nc9.7998 -11.4004 20.7002 -21.9004 36.7002 -14.5996c2.5 1.19922 117.5 51.5996 117.5 51.5996c13.3994 -2.5 35.6992 -6.90039 38 -7.2002z\" />\n    <glyph glyph-name=\"adversal\" unicode=\"&#xf36a;\" horiz-adv-x=\"512\" \nd=\"M482.1 416c24.5 0 29.9004 -5.59961 29.9004 -30.2002v-388.1c0 -24.5 -5.5 -29.7002 -29.9004 -29.7002h-453.399c-22.9004 0 -28.7002 5.59961 -28.7002 28.9004v390.199c0 23 5.7998 28.9004 28.7002 28.9004h453.399zM178.4 227.7\nc9.39941 -7.2002 12.3994 -17.1006 11.2998 -27.2998c-1.7998 -19.1006 -75.7998 -11.4004 -114 -30.9004c-27.2002 -13.9004 -42.7002 -41.7002 -39.6006 -71c6.7002 -64.7002 89.6006 -79.7002 147 -43.2998c4.60059 3.2002 8.30078 4.89941 11.9004 1\nc2.09961 -2.60059 2 -4 3.90039 -6.2002c7.2998 -9.59961 38.1992 -14.0996 46.5996 -7.40039c3.09961 2.80078 4.59961 6.30078 2.7002 10.7002c-13.6006 30.5 -6.60059 63 -9.2998 88.7998c0 69.3008 6.39941 111.7 -34.5 128.5\nc-41.9004 17.4004 -84.2002 16.6006 -125.301 -4.7998c-16.2998 -9 -53.6992 -52.8994 -24.8994 -64.2998c5.2998 -2.2998 12.7998 -4 22.5 -5.5c8.2002 -1.2002 13.2002 -2.7998 17.5 8.2998c12.0996 32.1006 56.7002 43.6006 84.2002 23.4004zM465.1 5.7002\nc0 14.2998 -9.7998 9.89941 -16.5996 9.89941c-132.3 0.400391 -264.5 0.400391 -396.8 0c-6.60059 0 -16.7002 4.80078 -17.1006 -9.09961c-0.399414 -15.5 10.4004 -10.7002 17.8008 -10.7002h394.899c6.7002 0 17.7998 -5.2002 17.7998 9.90039zM468.9 346.2\nc0 0.200195 0 0.299805 0.0996094 0.5c0 9.89941 -3.5 15.0996 -13.5996 14.2998c-3.10059 -0.400391 -6.60059 0 -9.7002 0c-26.1006 0 -26 0 -26 -26.2002v-71c-79.2002 45.6006 -124.3 -6.59961 -136.101 -30.5c-16.3994 -32.8994 -21.7998 -66.5996 -15.6992 -100\nc16.2998 -92.2998 91 -114.899 144.399 -85.2002c4.60059 2.80078 6.60059 7.5 12.4004 -1.19922c8.59961 -12.7002 23.7002 -5.2002 36.0996 -5.60059c7.40039 0 8.10059 8.2002 8.10059 13.9004v291zM417.4 113.9c-19.5 -47.6006 -72.9004 -43.3008 -90 -5.2002\nc-15.1006 33.2998 -15.5 68.2002 0.399414 101.5c16.2998 34.0996 59.7002 35.7002 81.5 4.7998c20.6006 -28.7998 14.9004 -84.5996 8.10059 -101.1zM122.6 78.5996c-7.5 1.30078 -33 3.30078 -33.6992 27.8008c-0.400391 13.8994 7.7998 23 19.7998 25.7998\nc24.3994 5.89941 49.2998 9.89941 73.7002 14.7002c8.89941 2 7.39941 -4.40039 7.7998 -9.5c1.39941 -33 -26.1006 -59.2002 -67.6006 -58.8008z\" />\n    <glyph glyph-name=\"affiliatetheme\" unicode=\"&#xf36b;\" horiz-adv-x=\"512\" \nd=\"M159.7 210.6c-51.2998 -70.8994 -116.601 -110.8 -145.7 -89.1992c-29.2002 21.6992 -11.2002 96.5996 40.2002 167.5c51.2998 70.8994 116.6 110.8 145.7 89.1992c29.0996 -21.5996 11.0996 -96.5996 -40.2002 -167.5zM510.9 267.9\nc0.699219 -8.2002 1.09961 -16.5 1 -25c0 -151.801 -121.601 -274.9 -271.601 -274.9c-82.8994 0 -157.2 37.5996 -207 96.9004c71.2998 19.3994 130.5 68.3994 164.101 133.199c7.69922 -32.5996 24 -58.5996 49 -73.7998c72.5996 -44.0996 190.699 20.2002 264.5 143.601z\n\" />\n    <glyph glyph-name=\"algolia\" unicode=\"&#xf36c;\" \nd=\"M229.3 265.4c49.2002 0 89.2002 -39.9004 89.2002 -89.2002s-39.9004 -89.2002 -89.2002 -89.2002s-89.2002 39.9004 -89.2002 89.2002s39.9004 89.2002 89.2002 89.2002zM292 208.8c1.2998 0.700195 1.7998 2.40039 1.09961 3.7002\nc-12.1992 21.4004 -34.8994 36.0996 -61.0996 37.0996c-1.40039 0.100586 -2.7002 -1.09961 -2.7002 -2.59961v-66.5c0 -1.90039 2 -3.2002 3.7998 -2.2998zM389.1 416c32.5 0 58.9004 -26.4004 58.8008 -58.9004v-330.199c0 -32.5 -26.3008 -58.9004 -58.9004 -58.9004\nh-330.1c-32.5 0 -58.9004 26.4004 -58.9004 59v330.1c0 32.5 26.4004 58.9004 58.9004 58.9004h330.199zM186.5 331.3h0.0996094v-15.7998c0 -1.7002 1.7002 -3 3.40039 -2.5c12.7002 3.7002 25.9004 5.5 39.4004 5.5c13 0 25.7998 -1.7002 38.0996 -5.09961\nc1.59961 -0.5 3.2998 0.699219 3.2998 2.5v15.3994c0 10.7998 -8.7002 19.5 -19.5 19.5h-45.2998c-10.7998 0 -19.5 -8.7002 -19.5 -19.5zM102.1 294.3c-7.59961 -7.59961 -7.59961 -19.8994 0 -27.3994l7.7002 -7.7002c1.10059 -1.2002 3 -1 4 0.299805\nc4.40039 6.09961 9.40039 12 14.7998 17.4004c5.5 5.5 11.4004 10.3994 17.6006 14.8994c1.2998 1 1.39941 2.90039 0.299805 4l-7.7002 7.7002c-7.59961 7.59961 -19.8994 7.59961 -27.5 0zM229.3 49.5c69.9004 0 126.601 56.7998 126.601 126.6\nc0 70 -56.6006 126.601 -126.601 126.601c-69.8994 0 -126.6 -56.7002 -126.6 -126.601c0 -69.8994 56.5996 -126.6 126.6 -126.6z\" />\n    <glyph glyph-name=\"amilia\" unicode=\"&#xf36d;\" \nd=\"M240.1 416c134.101 0 191.9 -55.7002 192 -136v-296.6c0 -3 -1 -8.10059 -5.09961 -9.10059c-4 -1 -57.2998 -0.700195 -66.5 -0.700195s-56.7998 1 -59.9004 2c-4 0.900391 -6.09961 6.10059 -6.09961 9.10059v25.3994\nc-39.5996 -21.3994 -105.5 -42.0996 -153.3 -42.0996c-109.7 0 -124.9 85.7002 -124.9 104s-5.09961 95.5 30.4004 111.8c31.5 13.2002 156.3 36.5 243.7 47.7998v38.5c0 44.7002 -1 73.1006 -58.9004 73.1006c-55.7998 0 -119.8 -25.4004 -152.3 -47.7002\nc-6.10059 -4.09961 -16.2002 -4.09961 -20.2998 6.09961c-5.10059 12.2002 -9.10059 34.5 -10.2002 39.6006c-1.90039 10.2002 2.09961 16.2998 7.2002 19.3994c52.6992 38.5 122.3 55.4004 184.199 55.4004zM290.3 68v106.7c-44.7002 -4.10059 -95.5 -20.2998 -119.8 -33.5\nc-21.2998 -10.2002 -18.2998 -40.7002 -18.2998 -52.9004c0.0996094 -11.2002 6.2002 -44.7002 59 -44.7002c30.3994 0 57.7002 11.2002 79.0996 24.4004z\" />\n    <glyph glyph-name=\"angrycreative\" unicode=\"&#xf36e;\" horiz-adv-x=\"640\" \nd=\"M640 209.8l-3.2002 -28.2002l-34.5 -2.2998l-2 -18.0996l34.5 2.2998l-3.2002 -28.2002l-34.3994 -2.2002l-2.2998 -20.0996l34.3994 2.2002l-3 -26.1006l-64.7002 -4.09961l12.7002 113.2l-47.2998 -115.4l-31.9004 -2l-23.7998 117.8l30.2998 2l13.6006 -79.3994\nl31.7002 82.3994zM426.8 76.5l12.7998 120l28.4004 1.90039l-12.9004 -120.101zM162 59.9004l-19.4004 36l-3.5 -37.4004l-28.1992 -1.7002l2.69922 29.1006c-11 -18 -32 -34.3008 -56.8994 -35.8008c-32.7998 -2 -59.7002 20.9004 -56.4004 58.2002\nc2.60059 29.2998 26.7002 62.7998 67.5 65.4004c37.7002 2.39941 47.6006 -23.2002 51.2998 -28.7998l2.80078 30.7998l38.8994 2.5c20.1006 1.2998 38.7002 -3.7002 42.5 -23.7002l2.60059 26.5996l64.7998 4.2002l-2.7002 -27.8994l-36.4004 -2.40039l-1.69922 -17.9004\nl36.3994 2.30078l-2.7002 -27.9004l-36.3994 -2.2998l-1.90039 -19.9004l36.2998 2.2998l-2.09961 -20.7998l55 117.2l23.7998 1.59961l32.1006 -110.6l8.89941 85.5996l-22.2998 -1.39941l2.90039 27.8994l75 4.90039l-3 -28l-24.3008 -1.59961l-9.69922 -91.9004\nl-58 -3.7002l-4.30078 15.6006l-39.3994 -2.5l-8 -16.3008zM117.7 130.1l-26.4004 -1.69922c-6.7002 12.3994 -14.3994 16.5996 -26.2998 15.7998c-19 -1.2002 -33.2998 -17.5 -34.5996 -33.2998c-1.40039 -16 7.2998 -32.5 28.6992 -31.2002\nc12.8008 0.799805 21.3008 8.59961 28.9004 18.8994l27 1.7002zM173.8 137.8c1.2002 12.9004 -7.59961 13.6006 -26.0996 12.4004l-2.7002 -28.5c14.2002 0.899414 27.5 2.09961 28.7998 16.0996zM194.9 67l5.7998 60c-5 -13.5 -14.7002 -21.0996 -27.9004 -26.5996z\nM330.3 112l-7.89941 37.7998l-15.8008 -39.2998zM160.2 186.6l-4.2998 17.5l-39.6006 -2.59961l-8.09961 -18.2002l-31.9004 -2.09961l57 121.899l23.9004 1.60059l30.7002 -102l9.89941 104.7l27 1.7998l37.7998 -63.6006l6.5 66.6006l28.5 1.89941l-4 -41.1992\nc7.40039 13.5 22.9004 44.6992 63.6006 47.5c40.5 2.7998 52.3994 -29.3008 53.3994 -30.3008l3.30078 32l39.2998 2.7002c12.7002 0.900391 27.7998 -0.299805 36.2998 -9.7002l-4.40039 11.9004l32.2002 2.2002l12.9004 -43.2002l23 45.7002l31 2.2002l-43.6006 -78.4004\nl-4.7998 -44.2998l-28.3994 -1.90039l4.7998 44.2998l-15.7998 43c1 -22.2998 -9.2002 -40.0996 -32 -49.5996l25.1992 -38.7998l-36.3994 -2.40039l-19.2002 36.7998l-4 -38.2998l-28.4004 -1.89941l3.30078 31.5c-6.7002 -9.30078 -19.7002 -35.4004 -59.6006 -38\nc-26.2002 -1.7002 -45.5996 10.2998 -55.3994 39.1992l-4 -40.2998l-25 -1.59961l-37.6006 63.2998l-6.2998 -66.2002zM436.8 268.7c10.2002 0.700195 17.5 2.09961 21.6006 4.2998c4.5 2.40039 7 6.40039 7.59961 12.0996\nc0.599609 5.30078 -0.599609 8.80078 -3.40039 10.4004c-3.59961 2.09961 -10.5996 2.7998 -22.8994 2zM327.7 234c5.59961 -5.90039 12.7002 -8.5 21.2998 -7.90039c4.7002 0.300781 9.09961 1.80078 13.2998 4.10059c5.5 3 10.6006 8 15.1006 14.2998l-34.2002 -2.2998\nl2.39941 23.8994l63.1006 4.30078l1.2002 12l-31.2002 -2.10059c-4.10059 3.7002 -7.7998 6.60059 -11.1006 8.10059c-4 1.69922 -8.09961 2.7998 -12.1992 2.5c-8 -0.5 -15.3008 -3.60059 -22 -9.2002c-7.7002 -6.40039 -12 -14.5 -12.9004 -24.4004\nc-1.09961 -9.59961 1.40039 -17.2998 7.2002 -23.2998zM126.4 225.8l23.7998 1.60059l-8.2998 37.5996z\" />\n    <glyph glyph-name=\"app-store\" unicode=\"&#xf36f;\" horiz-adv-x=\"512\" \nd=\"M255.9 327.1l9.09961 15.7002c5.59961 9.7998 18.0996 13.1006 27.9004 7.5c9.7998 -5.59961 13.0996 -18.0996 7.5 -27.8994l-87.5 -151.5h63.2998c20.5 0 32 -24.1006 23.0996 -40.8008h-185.5c-11.2998 0 -20.3994 9.10059 -20.3994 20.4004\ns9.09961 20.4004 20.3994 20.4004h52l66.6006 115.399l-20.8008 36.1006c-5.59961 9.7998 -2.2998 22.1992 7.5 27.8994c9.80078 5.60059 22.2002 2.2998 27.9004 -7.5zM177.2 109.1l-19.6006 -34c-5.59961 -9.7998 -18.0996 -13.0996 -27.8994 -7.5\nc-9.7998 5.60059 -13.1006 18.1006 -7.5 27.9004l14.5996 25.2002c16.4004 5.09961 29.7998 1.2002 40.4004 -11.6006zM346.1 170.8h53.1006c11.2998 0 20.3994 -9.09961 20.3994 -20.3994c0 -11.3008 -9.09961 -20.4004 -20.3994 -20.4004h-29.5l19.8994 -34.5\nc5.60059 -9.7998 2.30078 -22.2002 -7.5 -27.9004c-9.7998 -5.59961 -22.1992 -2.2998 -27.8994 7.5c-33.5 58.1006 -58.7002 101.601 -75.4004 130.601c-17.0996 29.5 -4.89941 59.0996 7.2002 69.0996c13.4004 -23 33.4004 -57.7002 60.0996 -104zM256 440\nc137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM472 192c0 119.9 -97.2998 216 -216 216c-119.9 0 -216 -97.2998 -216 -216c0 -119.9 97.2998 -216 216 -216c119.9 0 216 97.2998 216 216z\" />\n    <glyph glyph-name=\"app-store-ios\" unicode=\"&#xf370;\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM127 63.5l19.2998 33.2998c-10.2998 12.5 -23.5 16.2998 -39.5996 11.4004l-14.2998 -24.7002\nc-5.5 -9.5 -2.30078 -21.7998 7.2998 -27.2998c9.5 -5.5 21.7998 -2.2998 27.2998 7.2998zM265.9 117.4c8.7998 16.2998 -2.5 40 -22.7002 40h-62.1006l85.8008 148.6c5.5 9.5 2.2998 21.7998 -7.30078 27.2998c-9.5 5.5 -21.7998 2.2998 -27.2998 -7.2998\nl-8.89941 -15.4004l-8.90039 15.4004c-5.5 9.5 -17.7002 12.7998 -27.2998 7.2998c-9.5 -5.5 -12.7998 -17.7002 -7.2998 -27.2998l20.5 -35.4004l-65.4004 -113.199h-51c-11 0 -20 -9 -20 -20s9 -20 20 -20h181.9zM364 117.4c11 0 20 8.89941 20 20c0 11 -9 20 -20 20h-52\nc-26.2002 45.2998 -45.7998 79.2998 -58.9004 102c-11.8994 -9.80078 -23.7998 -38.8008 -7.09961 -67.8008c16.5 -28.3994 41.0996 -71.1992 74 -128.1c5.5 -9.5 17.7002 -12.7998 27.2998 -7.2998c9.5 5.5 12.7998 17.7002 7.2998 27.2998l-19.5996 33.9004h29z\" />\n    <glyph glyph-name=\"apper\" unicode=\"&#xf371;\" horiz-adv-x=\"640\" \nd=\"M42.0996 208.9c22.2002 0 29 -2.80078 33.5 -14.6006h0.800781v22.9004c0 11.2998 -4.80078 15.3994 -17.9004 15.3994c-11.2998 0 -14.4004 -2.5 -15.0996 -12.7998h-38.6006c0.299805 13.9004 1.5 19.1006 5.7998 24.4004\nc7.30078 8.7998 18.9004 11.7998 46.1006 11.7998c33 0 47.0996 -5 53.8994 -18.9004c2 -4.2998 4 -15.5996 4 -23.6992v-76.3008h-38.2998l1.2998 19.1006h-1c-5.2998 -15.6006 -13.5996 -20.4004 -35.5 -20.4004c-30.2998 0 -41.0996 10.1006 -41.0996 37.2998\nc0 25.2002 12.2998 35.8008 42.0996 35.8008zM59.2002 160.8c13.0996 0 16.8994 3 16.8994 13.4004c0 9.09961 -4.2998 11.5996 -19.5996 11.5996c-13.0996 0 -17.9004 -3 -17.9004 -12.0996c-0.0996094 -10.4004 3.7002 -12.9004 20.6006 -12.9004zM137 255.7h38.2998\nl-1.5 -20.6006h0.799805c9.10059 17.1006 15.9004 20.9004 37.5 20.9004c14.4004 0 24.7002 -3 31.5 -9.09961c9.80078 -8.60059 12.8008 -20.4004 12.8008 -48.1006c0 -30 -3 -43.0996 -12.1006 -52.8994c-6.7998 -7.30078 -16.3994 -10.1006 -33.2002 -10.1006\nc-20.3994 0 -29.1992 5.5 -33.7998 21.2002h-0.799805v-70.2998h-39.5v169zM217.9 195c0 27.5 -3.30078 32.5 -20.7002 32.5c-16.9004 0 -20.7002 -5 -20.7002 -28.7002c0 -28 3.5 -33.5 21.2002 -33.5c16.3994 0 20.2002 5.60059 20.2002 29.7002zM275.8 255.7h38.2998\nl-1.5 -20.6006h0.800781c9.09961 17.1006 15.8994 20.9004 37.5 20.9004c14.3994 0 24.6992 -3 31.5 -9.09961c9.7998 -8.60059 12.7998 -20.4004 12.7998 -48.1006c0 -30 -3 -43.0996 -12.1006 -52.8994c-6.7998 -7.30078 -16.3994 -10.1006 -33.2998 -10.1006\nc-20.3994 0 -29.2002 5.5 -33.7998 21.2002h-0.799805v-70.2998h-39.5v169h0.0996094zM356.7 195c0 27.5 -3.2998 32.5 -20.7002 32.5c-16.9004 0 -20.7002 -5 -20.7002 -28.7002c0 -28 3.5 -33.5 21.2002 -33.5c16.4004 0 20.2002 5.60059 20.2002 29.7002zM410.5 198.8\nc0 25.4004 3.2998 37.7998 12.2998 45.7998c8.7998 8.10059 22.2002 11.3008 45.1006 11.3008c42.7998 0 55.6992 -12.8008 55.6992 -55.7002v-11.1006h-75.2998c-0.299805 -2 -0.299805 -4 -0.299805 -4.7998c0 -16.8994 4.5 -21.8994 20.0996 -21.8994\nc13.9004 0 17.9004 3 17.9004 13.8994h37.5v-2.2998c0 -9.7998 -2.5 -18.9004 -6.7998 -24.7002c-7.2998 -9.7998 -19.6006 -13.5996 -44.2998 -13.5996c-27.5 0 -41.6006 3.2998 -50.6006 12.2998c-8.5 8.5 -11.2998 21.2998 -11.2998 50.7998zM486.9 210.4\nc-0.300781 1.7998 -0.300781 3.2998 -0.300781 3.7998c0 12.2998 -3.2998 14.5996 -19.5996 14.5996c-14.4004 0 -17.0996 -3 -18.0996 -15.0996l-0.300781 -3.2998h38.3008zM542.5 255.7h38.2998l-1.7998 -19.9004h0.700195\nc6.7998 14.9004 14.3994 20.2002 29.7002 20.2002c10.7998 0 19.0996 -3.2998 23.3994 -9.2998c5.2998 -7.2998 6.7998 -14.4004 6.7998 -34c0 -1.5 0 -5 0.200195 -9.2998h-35c0.299805 1.7998 0.299805 3.2998 0.299805 4c0 15.3994 -2 19.3994 -10.2998 19.3994\nc-6.2998 0 -10.7998 -3.2998 -13.0996 -9.2998c-1 -3 -1 -4.2998 -1 -12.2998v-68h-38.2998v118.5h0.0996094z\" />\n    <glyph glyph-name=\"asymmetrik\" unicode=\"&#xf372;\" horiz-adv-x=\"576\" \nd=\"M517.5 138.8c-13.9004 -14.2998 -30.4004 -27.7002 -48.9004 -39.7998l73.4004 -110.4h-101.6l-45.9004 71.8008c-17.5996 -7.2002 -35.9004 -13.4004 -54.5 -18.7002l32.5996 -53.1006h-135.5l22.8008 37.1006c-23.3008 -2.7002 -46.4004 -3.7002 -68.6006 -2.7002\nl-22 -34.4004h-101.6l34.5 51.7002c-45 17.9004 -68.9004 47.9004 -68.4004 83c0.299805 25.7998 14 54.2998 41.7002 82.9004c38.9004 40 96.5 72.5996 161.6 92.8994c-22.2998 -8.09961 -42 -18.5 -62 -30.6992c-31.1992 -16.2002 -58.6992 -35.9004 -79.5 -58.1006\nc-57.3994 -61 -46.5 -121.8 19.1006 -151.2l190.2 285.5l150.899 -226.399c13 9.5 24.7998 19.7998 35 30.5996c98 104.2 53.7002 207.9 -98.7998 231.7c-68.2998 10.5996 -146.8 5.7002 -221.3 -14.7998c-60.1006 -10 -118.7 -31.7002 -170.7 -58.2002\nc118.1 66.9004 277.9 102.1 406.6 82.4004c110 -16.8008 170.2 -69.5 169.4 -135c-0.400391 -36.1006 -19.7002 -76.1006 -58.5 -116.101zM329.9 58.2998c18.3994 5.2998 36.5 11.7998 53.6992 19.2002l-78.6992 123l-101.9 -159.3\nc22.5 -0.700195 45.7998 0.899414 69.2002 4.39941l32.7002 53.3008z\" />\n    <glyph glyph-name=\"audible\" unicode=\"&#xf373;\" horiz-adv-x=\"640\" \nd=\"M640 248.1v-54l-320 -200l-320 199.9v54l320 -200zM445.5 176.1c-70.7998 94.4004 -200.5 110.7 -290.2 36.3008c-2.59961 -2.2002 -5.2002 -4.40039 -7.7002 -6.7002h-0.299805c37.1006 55.7002 100.601 92.3994 172.601 92.3994s135.5 -36.7998 172.699 -92.5996z\nM225.4 157.3c21 29.6006 55.5 49 94.3994 49c39.2002 0 73.9004 -19.5996 94.7998 -49.5l-45.3994 -28.3994c-21.2002 29.1992 -52 47.5996 -86.4004 47.5996c-20.8994 0 -40.5 -6.7998 -57.3994 -18.7002zM103.6 286.9c-11.5 -9.10059 -24.2998 -22.1006 -34.1992 -32.6006\nc53.8994 82.1006 147 135.601 250.5 135.601c104.899 0 197.199 -54 250.699 -135.7l-48.7998 -30.4004l-0.700195 1c-99.2998 138.5 -285.699 166.4 -417.5 62.1006zM570.6 254.2z\" />\n    <glyph glyph-name=\"avianex\" unicode=\"&#xf374;\" horiz-adv-x=\"512\" \nd=\"M453.1 416c39 0 64.8008 -31.2002 57.8008 -69.7998l-56.7002 -308.5c-7.10059 -38.5 -44.4004 -69.7002 -83.2998 -69.7002h-312c-39 0 -64.8008 31.2002 -57.7002 69.7002l56.5996 308.6c7.10059 38.5 44.4004 69.7002 83.2998 69.7002h312zM394.9 68.7002\nl6.2998 7.89941l-94.9004 119.4l-4.5 7.2998c19.7998 14.2002 33.5 24.2998 35.2998 25.6006c7.90039 6.59961 6.30078 20.7998 -2.69922 31.2998c-9.2002 10.7998 -23 14.3994 -30.7002 7.89941c0 0 -14.4004 -13.5996 -33.7998 -32.3994l-4.90039 4.5l-103.1 112.399\nl-8.90039 -4.7998l-18.7998 -28.8994l68.7998 -99.8008l20.5 -29.5996c-12 -12.2998 -23.5 -24.4004 -32.7998 -34.9004l-58 31.1006l-15.7002 -15.4004l52.4004 -48.0996l40.5996 -61l17.9004 12.7002l-22.1006 64.1992c12.5 7.60059 27 17.1006 41.7002 27.1006\nl115.4 -110z\" />\n    <glyph glyph-name=\"aws\" unicode=\"&#xf375;\" horiz-adv-x=\"640\" \nd=\"M180.41 244.99c-0.719727 -22.6504 10.5996 -32.6807 10.8799 -39.0498c-0.238281 -2.31543 -2.0752 -5.12402 -4.09961 -6.27051l-12.8008 -8.95996c-1.39941 -0.981445 -3.92188 -1.8418 -5.62988 -1.91992c-0.429688 0.0195312 -8.18945 -1.83008 -20.4795 25.6104\nc-13.0283 -16.2627 -40.5127 -29.4609 -61.3496 -29.4609c-0.347656 0 -0.913086 0.00488281 -1.26074 0.0107422c-16.2803 -0.890625 -60.4004 9.24023 -58.1299 56.21c-1.58984 38.2803 34.0596 62.0596 70.9297 60.0498\nc7.10059 -0.0195312 21.6006 -0.370117 46.9902 -6.26953v15.6191c2.69043 26.46 -14.7002 46.9902 -44.8096 43.9102c-2.40039 -0.00976562 -19.4004 0.5 -45.8408 -10.1094c-7.35938 -3.37988 -8.2998 -2.82031 -10.75 -2.82031\nc-7.40918 0 -4.35938 21.4795 -2.93945 24.2002c5.20996 6.39941 35.8604 18.3496 65.9395 18.1797c1.86523 0.165039 4.89844 0.298828 6.77148 0.298828c15.2451 0 37.1611 -7.875 48.9189 -17.5791c9.87305 -11.0439 17.8867 -32.0303 17.8867 -46.8438\nc0 -1.52539 -0.0966797 -3.99609 -0.216797 -5.51562zM93.9902 212.6c32.4297 0.470703 46.1602 19.9707 49.29 30.4707c2.45996 10.0498 2.0498 16.4102 2.0498 27.3994c-9.66992 2.32031 -23.5898 4.85059 -39.5605 4.87012\nc-15.1494 1.14062 -42.8193 -5.62988 -41.7393 -32.2598c-1.24023 -16.79 11.1201 -31.4004 29.96 -30.4805zM264.91 189.55c-7.86035 -0.719727 -11.5205 4.86035 -12.6797 10.3701l-49.8008 164.65c-0.969727 2.7793 -1.60938 5.64941 -1.91992 8.58008\nc-0.0283203 0.189453 -0.0517578 0.5 -0.0517578 0.692383c0 2.18555 1.75195 4.22656 3.91211 4.55762h22.25c8.78027 0.879883 11.6396 -6.03027 12.5498 -10.3701l35.7197 -140.83l33.1602 140.83c0.530273 3.21973 2.94043 11.0693 12.7998 10.2393h17.1602\nc2.16992 0.180664 11.1104 0.5 12.6807 -10.3691l33.4199 -142.631l36.8701 142.631c0.479492 2.17969 2.71973 11.3691 12.6797 10.3691h19.7197c0.850586 0.130859 6.15039 0.810547 5.25 -8.5791c-0.429688 -1.85059 3.41016 10.6592 -52.75 -169.9\nc-1.14941 -5.50977 -4.82031 -11.0898 -12.6797 -10.3701h-18.6904c-10.9395 -1.15039 -12.5098 9.66016 -12.6797 10.75l-33.1602 137.13l-32.7803 -136.99c-0.15918 -1.08984 -1.72949 -11.8994 -12.6797 -10.75h-18.2998v-0.00976562zM538.39 183.92\nc-5.87988 -0.00976562 -33.9199 0.299805 -57.3594 12.29c-4.31152 1.8252 -7.81055 7.10645 -7.81055 11.7891v0.121094v10.75c0 8.4502 6.2002 6.89941 8.83008 5.88965c10.04 -4.05957 16.4805 -7.13965 28.8105 -9.59961\nc36.6494 -7.53027 52.7695 2.2998 56.7197 4.47949c13.1504 7.81055 14.1895 25.6807 5.25 34.9502c-10.4805 8.79004 -15.4805 9.12012 -53.1299 21c-4.64062 1.29004 -43.7002 13.6104 -43.79 52.3604c-0.610352 28.2402 25.0498 56.1797 69.5195 55.9502\nc12.6699 0.00976562 46.4307 -4.13086 55.5703 -15.6201c1.34961 -2.08984 2.01953 -4.5498 1.91992 -7.04004v-10.1104c0 -4.43945 -1.62012 -6.66016 -4.87012 -6.66016c-7.70996 0.860352 -21.3896 11.1699 -49.1602 10.75\nc-6.88965 0.360352 -39.8896 -0.910156 -38.4092 -24.9697c-0.430664 -18.96 26.6094 -26.0703 29.6992 -26.8896c36.46 -10.9707 48.6504 -12.79 63.1201 -29.5801c17.1406 -22.25 7.90039 -48.2998 4.35059 -55.4404\nc-19.0801 -37.4902 -68.4199 -34.4395 -69.2607 -34.4199zM578.59 79.0596c-70.0303 -51.7197 -171.689 -79.25 -258.49 -79.25c-0.853516 -0.00488281 -2.23926 -0.00976562 -3.09277 -0.00976562c-99.5195 0 -240.271 54.0918 -314.177 120.74\nc-6.53027 5.88965 -0.770508 13.96 7.16992 9.46973c81.1748 -46.4336 222.955 -84.1201 316.473 -84.1201h0.407227c69.4072 0.373047 177.64 22.5713 241.59 49.5508c11.7803 5 21.7705 -7.80078 10.1201 -16.3809zM607.78 112.35\nc-8.95996 11.5205 -59.2803 5.38086 -81.8105 2.69043c-6.79004 -0.770508 -7.93945 5.12012 -1.79004 9.46973c40.0703 28.1699 105.88 20.1006 113.44 10.6299c7.5498 -9.46973 -2.0498 -75.4092 -39.5605 -106.909c-5.75977 -4.87012 -11.2695 -2.30078 -8.70996 4.09961\nc8.44043 21.25 27.3906 68.4902 18.4307 80.0195z\" />\n    <glyph glyph-name=\"bimobject\" unicode=\"&#xf378;\" \nd=\"M416 416c17.5996 0 32 -14.4004 32 -32v-384c0 -17.5996 -14.4004 -32 -32 -32h-384c-17.5996 0 -32 14.4004 -32 32v384c0 17.5996 14.4004 32 32 32h384zM352 158.6h-0.0996094v35c0 49.4004 -11.4004 82.5 -103.801 82.5h-17.2998\nc-30 0 -65.0996 -8.2998 -69.7002 -38.7998h-1.09961v74.7002h-64v-232h64v34.7998h0.900391c8 -23.8994 26.2998 -38.7998 70.3994 -38.7998h16.9004c92.3994 0 103.8 33.2002 103.8 82.5996zM288 187.5v-22.9004c0 -21.6992 -3.40039 -33.7998 -38.4004 -33.7998h-45.2998\nc-28.8994 0 -44.0996 6.5 -44.0996 35.7002v19c0 29.2998 15.2002 35.7002 44.0996 35.7002h45.2998c35 0.200195 38.4004 -12 38.4004 -33.7002z\" />\n    <glyph glyph-name=\"bitcoin\" unicode=\"&#xf379;\" horiz-adv-x=\"512\" \nd=\"M504 192c0 -136.967 -111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248s248 -111.033 248 -248zM362.349 227.33c4.9375 32.999 -20.1904 50.7393 -54.5498 62.5732l11.1465 44.7021l-27.2129 6.78027l-10.8516 -43.5234\nc-7.1543 1.78223 -14.502 3.46387 -21.8027 5.12988l10.9287 43.8096l-27.1982 6.78125l-11.1523 -44.6855c-5.92188 1.34863 -11.7354 2.68164 -17.377 4.08398l0.0302734 0.139648l-37.5293 9.37012l-7.23926 -29.0625s20.1914 -4.62695 19.7646 -4.91309\nc11.0225 -2.75098 13.0146 -10.0439 12.6807 -15.8242l-12.6963 -50.9258c0.759766 -0.193359 1.74414 -0.472656 2.8291 -0.90625c-0.907227 0.224609 -1.87598 0.472656 -2.87598 0.712891l-17.7959 -71.3379c-1.34961 -3.34863 -4.76758 -8.37012 -12.4717 -6.46484\nc0.271484 -0.394531 -19.7793 4.9375 -19.7793 4.9375l-13.5107 -31.1475l35.4141 -8.82617c6.58887 -1.65137 13.0449 -3.37988 19.4004 -5.00684l-11.2617 -45.2129l27.1816 -6.78027l11.1533 44.7324c5.96875 -1.61719 15.6846 -4.13867 21.6865 -5.62695\nl-11.1152 -44.5225l27.2139 -6.78125l11.2617 45.1279c46.4043 -8.78125 81.2988 -5.23926 95.9863 36.7266c11.8359 33.79 -0.589844 53.2812 -25.0049 65.9912c17.7803 4.09766 31.1748 15.792 34.7471 39.9492zM300.172 140.151\nc-8.41016 -33.79 -65.3076 -15.5234 -83.7549 -10.9434l14.9443 59.8994c18.4453 -4.60352 77.5996 -13.7178 68.8105 -48.9561zM308.589 227.818c-7.67285 -30.7363 -55.0312 -15.1201 -70.3926 -11.292l13.5479 54.3262\nc15.3633 -3.82715 64.8359 -10.9727 56.8447 -43.0342z\" />\n    <glyph glyph-name=\"bity\" unicode=\"&#xf37a;\" horiz-adv-x=\"496\" \nd=\"M78.4004 380.8c95.3994 89.2002 246.1 91.2002 343.1 -3.7998c14.2998 -14.0996 -6.40039 -37.0996 -22.4004 -21.5c-84.7998 82.4004 -215.8 80.2998 -298.899 3.2002c-16.2998 -15.1006 -36.5 8.2998 -21.7998 22.0996zM177.3 -37.7998\nc-128.7 38.2998 -201.899 170.7 -169.8 298.1c5.2998 21 35.2002 12.5 30.2002 -7.09961c-28.2998 -111.3 35.2998 -227.101 147.5 -261c21.3994 -6.40039 11.3994 -35.7002 -7.90039 -30zM325.4 -35.7998c-19.2002 -6.2998 -30 22.7002 -8.80078 29.7002\nc106.101 35.5 167.4 145.699 143.2 253.399c-4.89941 21.7002 25.5 27.6006 30 7.90039c28.5 -124.101 -42.5 -250.8 -164.399 -291zM262.5 43.2002c0 -8.2002 -6.59961 -14.7998 -14.7998 -14.7998s-14.7998 6.59961 -14.7998 14.7998l0.199219 71.7998\nc0 8.09961 6.60059 14.7998 14.8008 14.7998c8.19922 0 14.7998 -6.59961 14.7998 -14.7998zM333.5 312.2c0 21.7998 32.5 19.5996 32.5 0v-71.6006c0 -69.2998 -60.7002 -90.8994 -118 -90.0996c-57.2998 -0.799805 -118 20.7998 -118 90.0996v71.6006\nc0 19.5996 32.5 21.7998 32.5 0c-1.40039 -88.2002 -7 -131.8 85.5 -132.5c90.2002 0.599609 87.5996 41.5996 85.5 132.5z\" />\n    <glyph glyph-name=\"blackberry\" unicode=\"&#xf37b;\" horiz-adv-x=\"512\" \nd=\"M166 331.1c0 -23.3994 -16.4004 -49.0996 -72.5 -49.0996h-70.0996l21 88.7998h67.7998c42.0996 0 53.7998 -23.2998 53.7998 -39.7002zM292.2 370.8c42.0996 0 53.7998 -23.2998 53.7002 -39.7002c0 -23.3994 -16.3008 -49.0996 -70.1006 -49.0996h-70.0996\nl18.7002 88.7998h67.7998zM88.7998 239.9c42.1006 0 53.7998 -23.4004 53.7998 -39.7002c0 -25.7002 -16.3994 -49.1006 -72.5 -49.1006h-70.0996l21 88.8008h67.7998zM268.9 239.9c42 0 53.6992 -23.4004 53.6992 -39.7002c0 -25.7002 -16.2998 -49.1006 -70.0996 -49.1006\nh-70.0996l18.6992 88.8008h67.8008zM458.2 293.7c42.0996 0 53.7998 -23.4004 53.7002 -39.7002c0 -25.7002 -16.3008 -49.0996 -70.1006 -49.0996h-70.0996l18.7002 88.7998h67.7998zM430.2 155.8c42.0996 0 53.7002 -23.3994 53.7002 -39.7002\nc0 -25.6992 -14 -49.0996 -70.1006 -49.0996h-70.0996l18.7002 88.7998h67.7998zM240.8 102c42.1006 0 53.7998 -23.4004 53.7002 -39.7002c0 -23.3994 -14 -49.0996 -70.0996 -49.0996h-70.1006l18.7002 88.7998h67.7998z\" />\n    <glyph glyph-name=\"blogger\" unicode=\"&#xf37c;\" \nd=\"M162.4 252c4.7998 4.90039 6.19922 5.09961 36.3994 5.09961c27.2002 0 28.1006 -0.0996094 32.1006 -2.09961c5.7998 -2.90039 8.2998 -7 8.2998 -13.5996c0 -5.90039 -2.40039 -10 -7.60059 -13.4004c-2.7998 -1.7998 -4.5 -1.90039 -31.0996 -2.09961\nc-16.4004 -0.100586 -29.5 0.199219 -31.5 0.799805c-10.2998 2.89941 -14.0996 17.7002 -6.59961 25.2998zM223.8 157.5c55.4004 0 55.1006 0 60.4004 -4.7002c7.39941 -7 5.89941 -19.2998 -3.10059 -24.3994l-9.19922 -1.5l-47.9004 -0.600586\nc-42.2002 -0.5 -54.0996 0.200195 -56.2998 1.2002c-4.40039 1.90039 -8.5 7.2998 -9.2002 12c-0.599609 4.5 1.59961 10.7998 5.09961 13.9004c4.40039 3.89941 6.30078 4.09961 60.2002 4.09961zM447.2 27.4004c-3.5 -28.4004 -23 -50.4004 -51.1006 -57.5\nc-7.19922 -1.80078 -9.69922 -1.90039 -172.899 -1.80078c-157.8 0 -165.9 0.100586 -172 1.80078c-8.40039 2.19922 -15.6006 5.5 -22.2998 10c-5.60059 3.7998 -13.9004 11.7998 -17 16.3994c-3.80078 5.60059 -8.2002 15.2998 -10 22\nc-1.80078 6.7002 -1.90039 9.40039 -1.90039 173.4c0 163.1 0 166.6 1.7998 173.7c6.2998 24.6992 25.9004 43.5996 51.2002 49.1992c7.2998 1.60059 332.1 1.90039 340 0.300781c21.2002 -4.30078 37.9004 -17.1006 47.5996 -36.4004c7.7002 -15.2998 7 1.5 7.30078 -180.6\nc0.199219 -115.801 0 -164.5 -0.700195 -170.5zM361.8 212.6c-1.09961 5 -4.2002 9.60059 -7.7002 11.5c-1.09961 0.600586 -8 1.30078 -15.5 1.7002c-12.3994 0.600586 -13.7998 0.799805 -17.7998 3.10059c-6.2002 3.59961 -7.89941 7.59961 -8 18.2998\nc0 20.3994 -8.5 39.3994 -25.2998 56.5c-12 12.2002 -25.2998 20.5 -40.5996 25.0996c-3.60059 1.10059 -11.8008 1.5 -39.2002 1.7998c-42.9004 0.5 -52.5 -0.399414 -67.1006 -6.19922c-27 -10.7002 -46.2998 -33.4004 -53.3994 -62.4004\nc-1.2998 -5.40039 -1.60059 -14.2002 -1.90039 -64.2998c-0.399414 -62.7998 0 -72.1006 4 -84.5c9.7002 -30.7002 37.1006 -53.4004 64.6006 -58.4004c9.19922 -1.7002 122.199 -2.09961 133.699 -0.5c20.1006 2.7002 35.9004 10.7998 50.7002 25.9004\nc10.7002 10.8994 17.4004 22.7998 21.7998 38.5c3.2002 10.8994 2.90039 88.3994 1.7002 93.8994z\" />\n    <glyph glyph-name=\"blogger-b\" unicode=\"&#xf37d;\" \nd=\"M446.6 225.3c2 -8.89941 2.40039 -134.1 -2.5 -151.7c-7.09961 -25.2998 -17.8994 -44.3994 -35.1992 -62.0996c-23.9004 -24.4004 -49.4004 -37.5 -81.9004 -41.9004c-18.7002 -2.5 -201.2 -1.89941 -216 0.800781c-44.5 8 -88.7998 44.6992 -104.4 94.2998\nc-6.2998 20.0996 -7 35 -6.39941 136.5c0.5 81 1 95.0996 3.09961 103.899c11.4004 46.8008 42.6006 83.4004 86.1006 100.601c23.5996 9.39941 39 10.7998 108.399 10c44.2002 -0.5 57.4004 -1.10059 63.2998 -2.90039c24.6006 -7.5 46.2002 -20.7998 65.5 -40.5\nc27.1006 -27.5996 40.8008 -58.2998 40.9004 -91.2998c0.0996094 -17.2002 2.7998 -23.5996 12.9004 -29.5c6.39941 -3.7002 8.59961 -4.09961 28.6992 -5c12 -0.5 23.2002 -1.7002 25 -2.7002c5.7002 -3.09961 10.7002 -10.5 12.5 -18.5zM124.5 288.9\nc-12.2002 -12.3008 -6 -36.1006 10.5996 -40.8008c3.10059 -0.799805 24.3008 -1.39941 50.8008 -1.19922c43 0.199219 45.6992 0.399414 50.2998 3.2998c8.5 5.39941 12.2998 12.0996 12.2998 21.5996c0 10.6006 -4.09961 17.2002 -13.4004 21.9004\nc-6.39941 3.2998 -7.89941 3.39941 -51.7998 3.39941c-48.7998 0 -51 -0.299805 -58.7998 -8.19922zM316.3 89.0996c14.4004 8.2002 17 28.1006 4.90039 39.4004c-8.5 7.90039 -8 7.90039 -97.6006 7.7998c-87.0996 -0.0996094 -90.1992 -0.299805 -97.2998 -6.7002\nc-5.59961 -5.09961 -9.2998 -15.0996 -8.2002 -22.3994c1.10059 -7.7002 7.80078 -16.2998 14.9004 -19.4004c3.59961 -1.59961 22.7998 -2.7998 90.9004 -2l77.5 0.900391z\" />\n    <glyph glyph-name=\"buromobelexperte\" unicode=\"&#xf37f;\" \nd=\"M0 416h128v-128h-128v128zM120 296v112h-112v-112h112zM160 416h128v-128h-128v128zM280 296v112h-112v-112h112zM320 416h128v-128h-128v128zM440 296v112h-112v-112h112zM0 256h128v-128h-128v128zM120 136v112h-112v-112h112zM160 256h128v-128h-128v128zM280 136v112\nh-112v-112h112zM320 256h128v-128h-128v128zM440 136v112h-112v-112h112zM0 96h128v-128h-128v128zM120 -24v112h-112v-112h112zM160 96h128v-128h-128v128zM280 -24v112h-112v-112h112zM320 96h128v-128h-128v128z\" />\n    <glyph glyph-name=\"centercode\" unicode=\"&#xf380;\" horiz-adv-x=\"512\" \nd=\"M329.2 179.4c-3.7998 -35.2002 -35.4004 -60.6006 -70.6006 -56.8008c-35.1992 3.80078 -60.5996 35.4004 -56.7998 70.6006s35.4004 60.5996 70.6006 56.7998c35.0996 -3.7998 60.5996 -35.4004 56.7998 -70.5996zM243.4 -55.7002\nc-146.7 7.7002 -251.601 138.2 -233.301 279.4c11.2002 86.5996 65.8008 156.899 139.101 192c161 77.0996 349.7 -37.4004 354.7 -216.601c4.09961 -147 -118.4 -262.199 -260.5 -254.8zM423.3 124.3c27.9004 118 -160.5 205.9 -237.2 234.2\nc-57.5 -56.2998 -69.0996 -188.6 -33.7998 -344.4c68.7998 -15.7998 169.101 26.4004 271 110.2z\" />\n    <glyph glyph-name=\"cloudscale\" unicode=\"&#xf383;\" \nd=\"M318.1 294c6.2002 6.2998 15.8008 -3.09961 9.5 -9.59961l-75.1992 -88.8008c0.899414 -8.19922 -1.80078 -16.7998 -8.10059 -23.0996c-11.0996 -11 -28.8994 -11 -40 0c-11.0996 11.0996 -11.0996 29 0 40c6.2998 6.2998 14.7998 9 23.1006 8.09961l25.1992 20.4004\nc-16.3994 15.2998 -38.3994 24.7002 -62.5996 24.7002c-50.7998 0 -94.5996 -41.4004 -92.5996 -97.4004c-1 6.2998 -1.40039 12.7998 -1.40039 19.4004c0 71.5 57.7998 132.3 129.4 132.3c31.7998 0 60.7998 -14.2998 83.2998 -33.5996zM234.3 182.5\nc5.60059 5.5 5.60059 14.5996 0 20.2002c-5.59961 5.59961 -14.5996 5.59961 -20.2002 0c-5.59961 -5.60059 -5.59961 -14.6006 0 -20.2002c5.60059 -5.5 14.6006 -5.5 20.2002 0zM224 416c123.5 0 224 -100.5 224 -224s-100.5 -224 -224 -224s-224 100.5 -224 224\ns100.5 224 224 224zM224 32c88.2002 0 160 71.7998 160 160s-71.7998 160 -160 160s-160 -71.7998 -160 -160s71.7998 -160 160 -160z\" />\n    <glyph glyph-name=\"cloudsmith\" unicode=\"&#xf384;\" horiz-adv-x=\"332\" \nd=\"M332.5 28.0996c0 -46.3994 -37.5996 -84.0996 -84 -84.0996s-84 37.7002 -84 84.0996c0 46.4004 37.5996 84 84 84s84 -37.5996 84 -84zM248.5 272c-46.4004 0 -80 -33.5996 -80 -80s-37.5996 -80 -84 -80s-84 33.5996 -84 80s37.5996 88 84 88s76 29.5996 76 76\ns41.5996 84 88 84s80 -37.5996 80 -84s-33.5996 -84 -80 -84z\" />\n    <glyph glyph-name=\"cloudversify\" unicode=\"&#xf385;\" horiz-adv-x=\"616\" \nd=\"M148.6 144v-0.0996094h-48.8994c-6.40039 0 -11.7002 5.39941 -11.7002 11.7998v40.3994c0 7.60059 7 11.9004 10.7998 11.9004h46.7998v-6.59961c0 -10.7002 8.80078 -16.7002 19.5 -16.7002h20.2002c10.7998 0 19.5 8.7998 19.5 19.5v20.3994\nc0 10.6006 -3.5 19.5 -15.2002 19.5c18.5 15.2002 37.2002 21.4004 45 24.1006c15 56.5 42 92.3994 99.3008 109.7c55.0996 16.5 153.5 3.09961 186.5 -85c73.8994 -22.6006 106.899 -92.6006 92.0996 -155.101c-13 -54.8994 -62.2998 -100.6 -131.5 -99.5\nc-49.5996 -51.3994 -135.2 -48.8994 -186.4 -5.59961c-78.5996 -4.2002 -137.8 42.7998 -146 111.3zM376 136c8.7002 -54.0996 59.7002 -65.5 91.7998 -59.2002c39.1006 7.7002 70.5 37.5 79.7002 76.5c5.7998 24.4004 2.40039 50 -9.40039 72l-10.5 19.6006\nc1.2002 -22.5 -12.5 -60.6006 -47.5 -76.9004c65.5 67.7002 2.10059 141.2 -67.6992 150.5c-49.8008 6.59961 -83.3008 -13 -114.2 -43.7002c48 -4.7002 87.7002 -26.7998 101.8 -74.7998c-30.0996 49.2998 -103 56.5996 -133.6 40.7998\nc-35.5 -18.2002 -60 -54 -57 -93.8994c3.59961 -47.4004 39.5 -67.4004 57.3994 -79.8008c-4.5 21.7002 -4 71.3008 29.2002 92.9004c-36.2998 -60 28.0996 -144.6 135.3 -110.8c-33.5996 14.3994 -66 40.5 -55.2998 86.7998zM128 240h-39.7998\nc-8.90039 0 -16.2002 7.2998 -16.2002 16.2002v39.5996c0 8.90039 7.2998 16.2002 16.2002 16.2002h39.7998c8.90039 0 16.2002 -7.2998 16.2002 -16.2002v-39.5996c0 -8.90039 -7.2998 -16.2002 -16.2002 -16.2002zM10.0996 280c-5.59961 0 -10.0996 4.5 -10.0996 10.0996\nv27.8008c0 5.59961 4.5 10.0996 10.0996 10.0996h27.7002c5.5 0 10.1006 -4.5 10.1006 -10.0996v-27.8008c0 -5.59961 -4.5 -10.0996 -10.1006 -10.0996h-27.7002zM168 305.3v21.4004c0 5.09961 4.2002 9.2998 9.2998 9.2998h21.4004\nc5.09961 0 9.2998 -4.2002 9.2998 -9.2998v-21.4004c0 -5.09961 -4.2002 -9.2998 -9.2998 -9.2998h-21.4004c-5.09961 0 -9.2998 4.2002 -9.2998 9.2998zM56 212.5v-25c0 -6.2998 -5.09961 -11.5 -11.4004 -11.5h-25.1992c-6.30078 0 -11.4004 5.2002 -11.4004 11.5v25\nc0 6.2998 5.09961 11.5 11.4004 11.5h25.0996c6.40039 0 11.5 -5.2002 11.5 -11.5z\" />\n    <glyph glyph-name=\"cpanel\" unicode=\"&#xf388;\" horiz-adv-x=\"640\" \nd=\"M210.3 227.8c6.60059 -29.0996 -14.5 -65.2998 -51.7002 -65.2998h-32l6.40039 23.7998c1.7998 6.2002 7.2998 10.7998 14.2998 10.7998h10.2998c12.4004 0 20.8008 11.7002 18.3008 22.6006c-2.10059 9.2002 -9.90039 14.7998 -18.3008 14.7998h-19.7998\nl-25.7998 -95.7002c-1.90039 -6.2002 -7.40039 -10.7002 -14.2002 -10.7002l-24.7002 -0.0996094l34.9004 130.1c1.7998 6.40039 7.2002 10.9004 14.2998 10.9004h37c24.1006 0 45.4004 -16.4004 51 -41.2002zM53.7998 199.8c-24.8994 0 -24.7002 -37.3994 0 -37.3994\nh11.2998c4.2002 0 7.60059 -3.90039 6.40039 -8.30078l-7.09961 -26.0996h-12.4004c-33.5 0 -59 31.4004 -50.2998 65.2002c7.2998 27 28.2998 41.0996 51.2002 41.0996h40l-6.2002 -23.5996c-1.90039 -6.5 -7.40039 -10.9004 -14.2998 -10.9004h-18.6006zM301.3 234.6\nc18.7998 0 33.2998 -17.5996 28.5 -36.7998l-14 -51.7998c-2.7998 -10.5996 -12.2002 -17.7998 -23.3994 -17.7998l-57.5 0.200195c-42.9004 0 -38.5 63.7998 0.699219 63.7998h48.4004l-3.5 -13.2002c-1.90039 -6.2002 -7.40039 -10.7998 -14.2002 -10.7998h-21.5996\nc-5.2998 0 -5.2998 -7.90039 0 -7.90039h34.8994c4.60059 0 5.10059 3.90039 5.5 5.2998l8.60059 31.8008c0.299805 1 1.89941 5.2998 -2.10059 5.2998h-57.5c-9.69922 0 -16.5996 8.89941 -14.1992 18.5l3.5 13.3994h77.8994zM633.1 269c4.5 0 7.7002 -4 6.5 -8.2998\nl-26.5 -98.2002c-5.09961 -20.7002 -24.1992 -34.5 -44.8994 -34.5l35.5996 133.1c1.2002 4.7002 5.5 7.90039 10.4004 7.90039h18.8994zM396.8 234.3c34.4004 0 59.2998 -32.2998 50.2998 -65.3994l-8.7998 -33.1006c-1.2002 -4.89941 -5.7002 -7.7998 -10.2998 -7.7998\nh-19.0996c-4.5 0 -7.60059 4 -6.40039 8.2998l10.5996 40c3.30078 11.6006 -5.59961 23.4004 -18.0996 23.4004h-19.7998l-17.2002 -64c-1.2002 -4.7998 -5.59961 -7.7998 -10.4004 -7.7998h-18.8994c-4.2002 0 -7.60059 3.89941 -6.40039 8.2998l26.2002 98h48.2998\nv0.0996094zM495.1 159.7h73.3008l-5.7002 -21c-1.90039 -6.2002 -7.40039 -10.7002 -14.2002 -10.7002h-66.7002c-20 0 -33.2998 19 -28.2998 36.7002l10.7998 40c4.7998 17.5996 20.7002 29.5996 38.6006 29.5996h47.2998c19 0 33.2002 -17.7002 28.2998 -36.7998\nl-3.2002 -12c-2.89941 -11 -12.7002 -17.5996 -23.2002 -17.5996h-53.3994l3.5 13c1.59961 6.19922 7.2002 10.7998 14.2002 10.7998h21.5996c2 0 3.2998 1 3.90039 3l0.699219 2.59961c0.700195 2.7002 -1.2998 5.10059 -3.89941 5.10059h-32.9004\nc-4.09961 0 -6.89941 -2.10059 -7.7998 -6l-8 -30c-0.900391 -3.30078 1.5 -6.7002 5.09961 -6.7002z\" />\n    <glyph glyph-name=\"css3-alt\" unicode=\"&#xf38b;\" horiz-adv-x=\"384\" \nd=\"M0 416h384l-34.9004 -395.8l-157.1 -52.2002l-157.1 52.2002zM313.1 336h-242.199l5.7998 -47.2998h122.899l-6.5 -2.7002l-112.1 -46.7002l3.59961 -46.2998l0.200195 0.0996094v-0.0996094l166.3 -0.5l-3.69922 -61.5996l-54.7002 -15.4004l-52.6006 13.2998\nl-3.19922 38.2998h-48.9004l6.40039 -73.8994l98.7998 -29.2002l98.2002 28.7002l12.7998 146.6h-111.5l0.299805 0.100586l115.3 49.2998z\" />\n    <glyph glyph-name=\"cuttlefish\" unicode=\"&#xf38c;\" horiz-adv-x=\"440\" \nd=\"M344 142.5c13.7002 -50.9004 41.7002 -93.2998 87 -117.8c-45.2998 -49.6006 -110.5 -80.7002 -183 -80.7002c-137 0 -248 111 -248 248s111 248 248 248c72.5 0 137.7 -31.0996 183 -80.7002c-45.2998 -24.5 -73.2998 -66.8994 -87 -117.8\nc-17.5 31.5996 -57.4004 54.5 -96 54.5c-56.5996 0 -104 -47.4004 -104 -104s47.4004 -104 104 -104c38.5996 0 78.5 22.9004 96 54.5z\" />\n    <glyph glyph-name=\"d-and-d\" unicode=\"&#xf38d;\" horiz-adv-x=\"576\" \nd=\"M82.5 349.1c-0.599609 17.2002 2 33.8008 12.7002 48.2002c0.299805 -7.39941 1.2002 -14.5 4.2002 -21.5996c5.89941 27.5 19.6992 49.2998 42.2998 65.5c-1.90039 -5.90039 -3.5 -11.7998 -3 -17.7002c8.7002 7.40039 18.7998 17.7998 44.3994 22.7002\nc14.7002 2.7998 29.7002 2 42.1006 -1c38.5 -9.2998 61 -34.2998 69.7002 -72.2998c5.2998 -23.1006 0.699219 -45 -8.30078 -66.4004c-5.19922 -12.4004 -12 -24.4004 -20.6992 -35.0996c-2 1.89941 -3.90039 3.7998 -5.80078 5.59961\nc-42.7998 40.7998 -26.7998 25.2002 -37.3994 37.4004c-1.10059 1.19922 -1 2.19922 -0.100586 3.59961c8.30078 13.5 11.8008 28.2002 10 44c-1.09961 9.7998 -4.2998 18.9004 -11.2998 26.2002c-14.5 15.2998 -39.2002 15 -53.5 -0.600586\nc-11.3994 -12.5 -14.0996 -27.3994 -10.8994 -43.5996c0.199219 -1.2998 0.399414 -2.7002 0 -3.90039c-3.40039 -13.6992 -4.60059 -27.5996 -2.5 -41.5996c0.0996094 -0.5 0.0996094 -1.09961 0.0996094 -1.59961c0 -0.300781 -0.0996094 -0.5 -0.200195 -1.10059\nc-21.7998 11 -36 28.2998 -43.2002 52.2002c-8.2998 -17.7998 -11.0996 -35.5 -6.59961 -54.0996c-15.5996 15.1992 -21.2998 34.2998 -22 55.1992zM552.1 225.9c0.5 -0.600586 1.2002 -1 1.7002 -1.40039v-0.5c-15 3.59961 -29.7998 1.7998 -44.5 -1.2998\nc-9.2998 -2 -18.2998 -4.7002 -26.7002 -9c-2.89941 -1.5 -5.69922 -3.2998 -8 -4.7002c-5.7998 2.40039 -11.2998 5.5 -17.1992 6.7998c-24.5 5.2998 -45.8008 -1.2002 -62.5 -20c-19.7002 -22.2002 -34.5 -47.5996 -46.7002 -74.5l-1.2002 -2.7002\nc-0.0996094 -0.199219 -0.200195 -0.299805 -0.400391 -0.399414c-12.0996 8.2998 -21.5996 20.2998 -36.0996 25.5996c0.299805 0.400391 0.400391 0.900391 0.700195 1.2998c20.5996 28.2002 44.8994 52.5 75.0996 70.4004c16 9.5 33 16.0996 51.5 18.5\nc1.7998 0.200195 3.5 0.400391 5.2998 1.09961c-4.39941 0 -8.7998 0.300781 -13.0996 -0.0996094c-21.2002 -1.90039 -40.5 -9.59961 -58.7002 -20.2002c-13.7998 -8 -26.2002 -17.7002 -36.5996 -29.7998c-0.400391 -0.5 -0.600586 -1.09961 -0.900391 -1.7002\nc-0.299805 0.299805 -0.700195 0.600586 -1 0.900391c11 30.8994 30.7002 55 57.7002 73.2998c0.200195 -0.200195 0.5 -0.299805 0.700195 -0.5c-1.2002 -1.7002 -2.5 -3.2998 -3.5 -5.09961c-1.7998 -3.30078 -3.7002 -6.5 -5.10059 -10\nc-1.7998 -4.30078 1.60059 -8.60059 12 -0.5c18.2002 14.0996 29.6006 26.2998 48.9004 29.5996c0.700195 0.0996094 1.2998 0.299805 1.90039 0.299805h2.5c-1 -0.700195 -1.60059 -1.09961 -2.2002 -1.5c-11.6006 -7.7998 -11.7998 -7.39941 -15 -12\nc-2.60059 -3.7002 -0.200195 -8 4.7002 -6.7998c2.59961 0.599609 5.19922 1.2998 7.69922 2.2002c9.40039 3.2998 19 5.7998 29 6.39941c13.9004 0.800781 27.1006 -1.89941 39.9004 -7.09961c15.0996 -6.2002 28.5 -15 40.0996 -26.5996zM316.7 50.4004\nc1.5 -1.30078 1.89941 -2.40039 0.899414 -4.2002c-25.2998 -50.2002 -61.0996 -89.1006 -116 -98.7998c-26.7998 -4.7002 -52.8994 -2.7002 -77.8994 8.59961c-18.5 8.2002 -34.6006 19.5996 -47.2002 35.5996c-2 2.60059 -3.7002 5.40039 -5.90039 8.60059\nc-0.699219 -7.7998 0.100586 -14.9004 1.5 -21.9004c-0.199219 -0.200195 -0.399414 -0.299805 -0.599609 -0.5c-3.2002 3.40039 -6.59961 6.60059 -9.5 10.2998c-12.2002 15.5 -19.5 33.3008 -24.0996 52.3008c-11.8008 48.2998 -0.5 78.7998 7.7998 101.1\nc-8.7002 -4.7998 -16.2002 -10.2998 -23.6006 -16.2002c11.6006 32.7998 31.9004 59.9004 56.1006 84.6006c2.39941 -2.10059 3.2998 -4.7002 3 -7.40039c-0.200195 -1 -5.90039 -38.9004 -5.60059 -44.7002c18.9004 18.9004 40.5 33.2998 64.8008 43.9004\nc-7.5 -11.1006 -11 -23.4004 -11.8008 -37.2998c13.4004 12.1992 27.7002 20.0996 46.4004 13.8994c-8.5 -9.09961 -30.7998 -30.5 -38.5996 -64.2998c-5.10059 -21.9004 -3.80078 -43.0996 8.19922 -62.5996c11.2002 -18.3008 27.8008 -27.8008 49.4004 -27.8008\nc12.5996 0 23.7998 5 34.0996 11.8008c18.5 12.2998 32.8008 28.5 44 47.5996c1.90039 3.2002 1.10059 2.09961 1.90039 3c19.9004 -16.0996 3.2998 -2.59961 42.7002 -35.5996zM488.7 96.7998c20.2002 -6.59961 35.5 -18.7998 43.7998 -38.8994\nc9.2002 -23.1006 2.09961 -49.4004 -17.4004 -66c-16.3994 -14 -35.6992 -19.2002 -57 -17.4004c-0.599609 0 -1.19922 0 -1.89941 -0.299805c15.0996 -10.7002 31.5996 -15.2002 50.8994 -10.6006c-2.19922 -2.39941 -3.89941 -4.69922 -5.89941 -6.5\nc-12.2998 -10.8994 -26.9004 -16.8994 -42.9004 -19.7998c-39.5996 -7.2998 -75.5996 12.7998 -85 56.9004c-0.5 2.09961 -0.599609 4.2002 -0.899414 6.39941c-10.8008 -8.19922 -16.4004 -34.0996 -0.700195 -52.2998c-1.60059 0.5 -2.60059 0.700195 -3.60059 1.10059\nc-21.2998 8.2998 -34.3994 28.2998 -33.5 51.1992c0.900391 23.2002 4.90039 41 -13 56c-16.5 13.8008 -33 27.4004 -49.5 41.1006c-8.09961 6.7002 -14.7998 14.5 -17 25.0996c-1 4.60059 -1.39941 9.40039 -1.7998 14.1006c-0.5 6.09961 -3.2998 11 -7.89941 14.7998\nc-4.5 3.89941 -9.30078 7.39941 -13.8008 11.2002c-8.89941 7.5 -12.2998 18.8994 -7.2998 29.8994c2.7998 -12.8994 9.60059 -18.8994 22.6006 -20.2998c4.39941 -0.5 8.89941 -0.799805 13.2998 -1.5c8.09961 -1.2002 12.7998 -6.09961 14.2998 -14.2002\nc0.700195 -3.39941 1.2998 -6.7998 2.2002 -10.2002c1.59961 -5.59961 4.5 -8 10.3994 -8.39941c4.60059 -0.299805 9.30078 -0.5 13.9004 -0.900391c7.59961 -0.599609 14.2002 -3.7998 20.0996 -8.7002c19.4004 -16.1992 39 -32.1992 58.5 -48.2998\nc5.7002 -4.7002 12 -8.2002 19.6006 -8.5c16.7002 -0.599609 29 15.2002 24.7998 31.7998c-0.200195 0.700195 -0.400391 1.5 -0.0996094 2.80078c2.39941 -2 4.89941 -3.80078 7 -5.90039c14.0996 -14 18.0996 -39.2998 8.69922 -56.0996\nc-2.09961 -3.80078 -5.2998 -7.10059 -8.09961 -10.8008c0.700195 -0.199219 1.7998 -0.5 3 -0.599609c14 -1.40039 27.2002 1 38.9004 9.09961c15.7998 10.9004 18 31.2002 5.39941 45.6006c-4.7002 5.39941 -8.89941 8 -18.7998 12\nc6.5 1.2998 19.2002 0.200195 28.7002 -2.90039zM99.4004 268.7c-5.30078 9.2002 -13.2002 15.5996 -22.1006 21.2998c13.7002 0.5 26.6006 -0.200195 39.6006 -3.7002c-7 12.2002 -8.5 24.7002 -5 38.7002c5.2998 -11.9004 13.6992 -20.0996 23.5996 -26.7998\nc19.7002 -13.2002 35.7002 -19.6006 46.7002 -30.2002c3.39941 -3.2998 6.2998 -7.09961 9.59961 -10.9004c-0.799805 2.10059 -1.39941 4.10059 -2.2002 6c-5 10.6006 -13 18.6006 -22.5996 25c-1.7998 1.2002 -2.7998 2.5 -3.40039 4.5\nc-3.2998 12.5 -3 25.1006 -0.699219 37.6006c1 5.5 2.7998 10.8994 4.5 16.2998c0.799805 2.40039 2.2998 4.59961 4 6.59961c0.599609 -6.89941 0 -25.5 19.5996 -46c10.7998 -11.2998 22.4004 -21.8994 33.9004 -32.6992c9 -8.5 18.2998 -16.7002 25.5 -26.8008\nc1.09961 -1.59961 2.19922 -3.2998 3.7998 -4.69922c-5 13 -14.2002 24.0996 -24.2002 33.7998c-9.59961 9.2998 -19.4004 18.3994 -29.2002 27.3994c-3.2998 3 -4.59961 6.7002 -5.09961 10.9004c-1.2002 10.4004 0 20.5996 4.2998 30.2002c0.5 1 1.09961 2 1.90039 3.2998\nc0.5 -4.2002 0.599609 -7.90039 1.39941 -11.5996c4.7998 -23.1006 20.4004 -36.3008 49.2998 -63.5c10 -9.40039 19.3008 -19.2002 25.6006 -31.6006c4.7998 -9.2998 7.2998 -19 5.7002 -29.5996c-0.100586 -0.600586 0.5 -1.7002 1.09961 -2\nc6.2002 -2.60059 10 -6.90039 9.7002 -14.2998c7.7002 2.59961 12.5 8 16.3994 14.5c4.2002 -20.2002 -9.09961 -50.3008 -27.1992 -58.7002c0.399414 4.5 5 23.3994 -16.5 27.7002c-6.80078 1.2998 -12.8008 1.2998 -22.9004 2.09961c4.7002 9 10.4004 20.5996 0.5 22.4004\nc-24.9004 4.59961 -52.7998 -1.90039 -57.7998 -4.60059c8.2002 -0.399414 16.2998 -1 23.5 -3.2998c-2 -6.5 -4 -12.7002 -5.7998 -18.9004c-1.90039 -6.5 2.09961 -14.5996 9.2998 -9.59961c1.2002 0.900391 2.2998 1.90039 3.2998 2.7002\nc-3.09961 -17.9004 -2.90039 -15.9004 -2.7998 -18.2998c0.299805 -10.2002 9.5 -7.80078 15.7002 -7.30078c-2.5 -11.7998 -29.5 -27.2998 -45.4004 -25.7998c7 4.7002 12.7002 10.2998 15.9004 17.9004c-6.5 -0.799805 -12.9004 -1.60059 -19.2002 -2.40039\nl-0.299805 0.900391c4.69922 3.39941 8 7.7998 10.1992 13.0996c8.7002 21.1006 -3.59961 38 -25 39.9004c-9.09961 0.799805 -17.7998 -0.799805 -25.8994 -5.5c6.2002 15.5996 17.2002 26.5996 32.5996 34.5c-15.2002 4.2998 -8.89941 2.7002 -24.5996 6.2998\nc14.5996 9.2998 30.2002 13.2002 46.5 14.5996c-5.2002 3.2002 -48.1006 3.60059 -70.2002 -20.8994c7.90039 -1.40039 15.5 -2.7998 23.2002 -4.2002c-23.7998 -7 -44 -19.7002 -62.4004 -35.5996c1.10059 4.7998 2.7002 9.5 3.2998 14.2998\nc0.600586 4.5 0.800781 9.2002 0.100586 13.5996c-1.5 9.40039 -8.90039 15.1006 -19.7002 16.2998c-7.90039 0.900391 -15.5996 -0.0996094 -23.2998 -1.2998c-0.900391 -0.0996094 -1.7002 -0.299805 -2.90039 0c15.7998 14.7998 36 21.7002 53.1006 33.5\nc6 4.5 6.7998 8.2002 3 14.9004zM227.8 241.9c3.2998 -16 12.6006 -25.5 23.7998 -24.3008c-4.59961 11.3008 -12.0996 19.5 -23.7998 24.3008z\" />\n    <glyph glyph-name=\"deploydog\" unicode=\"&#xf38e;\" horiz-adv-x=\"512\" \nd=\"M382.2 312h51.7002v-239.6h-51.7002v20.6992c-19.7998 -24.7998 -52.7998 -24.0996 -73.7998 -14.6992c-26.2002 11.6992 -44.3008 38.0996 -44.3008 71.7998c0 29.7998 14.8008 57.8994 43.3008 70.7998c20.1992 9.09961 52.6992 10.5996 74.7998 -12.9004v103.9z\nM317.5 150.2c0 -18.2002 13.5996 -33.5 33.2002 -33.5c19.7998 0 33.2002 16.3994 33.2002 32.8994c0 17.1006 -13.7002 33.2002 -33.2002 33.2002c-19.6006 0 -33.2002 -16.3994 -33.2002 -32.5996zM188.5 312h51.7002v-239.6h-51.7002v20.6992\nc-19.7998 -24.7998 -52.7998 -24.0996 -73.7998 -14.6992c-26.2002 11.6992 -44.2998 38.0996 -44.2998 71.7998c0 29.7998 14.7998 57.8994 43.2998 70.7998c20.2002 9.09961 52.7002 10.5996 74.7998 -12.9004v103.9zM123.8 150.2c0 -18.2002 13.6006 -33.5 33.2002 -33.5\nc19.7998 0 33.2002 16.3994 33.2002 32.8994c0 17.1006 -13.7002 33.2002 -33.2002 33.2002c-19.7002 0 -33.2002 -16.3994 -33.2002 -32.5996zM448 352h-384c-17.5996 0 -32 -14.5 -32 -32v-256c0 -17.5996 14.5 -32 32 -32h384c17.5996 0 32 14.5 32 32v256\nc0 17.5996 -14.5 32 -32 32zM448 384c35.2002 0 64 -28.7998 64 -64v-256c0 -35.2002 -28.7998 -64 -64 -64h-384c-35.2002 0 -64 28.7998 -64 64v256c0 35.2002 28.7998 64 64 64h384z\" />\n    <glyph glyph-name=\"deskpro\" unicode=\"&#xf38f;\" horiz-adv-x=\"480\" \nd=\"M205.9 -64l31.0996 38.4004c12.2998 0.199219 25.5996 1.39941 36.5 6.59961c38.9004 18.5996 38.4004 61.9004 38.2998 63.7998c-0.0996094 5 -0.799805 4.40039 -28.8994 37.4004h79.0996c-0.200195 -50.1006 -7.2998 -68.5 -10.2002 -75.7002\nc-9.39941 -23.7002 -43.8994 -62.7998 -95.2002 -69.4004c-8.69922 -1.09961 -32.7998 -1.19922 -50.6992 -1.09961zM406.3 103.7l-119.2 -0.100586l17.4004 31.3008l175.5 -0.300781c-15.2002 -17.2998 -35.0996 -30.8994 -73.7002 -30.8994zM362.7 327.6v-168.3h-73.5\nl-32.7002 -55.5h-6.5c-52.2998 0 -58.0996 56.5 -58.2998 58.9004c-1.2002 13.2002 -21.2998 11.5996 -20.1006 -1.7998c1.40039 -15.8008 8.80078 -40 26.4004 -57.1006h-91c-25.5 0 -110.8 26.7998 -107 114v213.3c0 16 9.7002 16.6006 15 16.8008h82\nc0.200195 0 0.299805 -0.100586 0.5 -0.100586c4.2998 0.400391 50.0996 2.10059 50.0996 -43.7002c0 -13.2998 20.2002 -13.3994 20.2002 0c0 18.2002 -5.5 32.8008 -15.7998 43.7002h84.2002c108.7 0.400391 126.5 -79.3994 126.5 -120.2zM230.2 271.6l64 -29.2998\nc13.2998 45.5 -42.2002 71.7002 -64 29.2998z\" />\n    <glyph glyph-name=\"digital-ocean\" unicode=\"&#xf391;\" horiz-adv-x=\"512\" \nd=\"M87 -33.7998v73.5996h73.7002v-73.5996h-73.7002zM25.4004 101.4h61.5996v-61.6006h-61.5996v61.6006zM491.6 271.1c53.2002 -170.3 -73 -327.1 -235.6 -327.1v95.7998h0.299805v0.299805c101.7 0.200195 180.5 101 141.4 208\nc-14.2998 39.6006 -46.1006 71.4004 -85.7998 85.7002c-107.101 38.7998 -208.101 -39.8994 -208.101 -141.7h-95.7998c0 162.2 156.9 288.7 327 235.601c74.2002 -23.2998 133.6 -82.4004 156.6 -156.601zM256.3 40.0996h-0.299805v-0.299805h-95.2998v95.6006h95.5996\nv-95.3008z\" />\n    <glyph glyph-name=\"discord\" unicode=\"&#xf392;\" \nd=\"M297.216 204.8c0 -15.6162 -11.5195 -28.416 -26.1123 -28.416c-14.3359 0 -26.1113 12.7998 -26.1113 28.416s11.5195 28.416 26.1113 28.416c14.5928 0 26.1123 -12.7998 26.1123 -28.416zM177.664 233.216c14.5918 0 26.3682 -12.7998 26.1123 -28.416\nc0 -15.6162 -11.5205 -28.416 -26.1123 -28.416c-14.3359 0 -26.1123 12.7998 -26.1123 28.416s11.5205 28.416 26.1123 28.416zM448 395.264v-459.264c-64.4941 56.9941 -43.8682 38.1279 -118.784 107.776l13.5684 -47.3604h-290.304\nc-28.9287 0 -52.4805 23.5518 -52.4805 52.7363v346.111c0 29.1846 23.5518 52.7363 52.4805 52.7363h343.039c28.9287 0 52.4805 -23.5518 52.4805 -52.7363zM375.04 152.576c0 82.4316 -36.8643 149.248 -36.8643 149.248\nc-36.8643 27.6475 -71.9355 26.8799 -71.9355 26.8799l-3.58398 -4.0957c43.5195 -13.3125 63.7441 -32.5127 63.7441 -32.5127c-60.8115 33.3291 -132.244 33.335 -191.232 7.42383c-9.47168 -4.35156 -15.1035 -7.42383 -15.1035 -7.42383\ns21.2471 20.2246 67.3271 33.5361l-2.55957 3.07227s-35.0723 0.767578 -71.9355 -26.8799c0 0 -36.8643 -66.8164 -36.8643 -149.248c0 0 21.5039 -37.1201 78.0801 -38.9121c0 0 9.47168 11.5195 17.1514 21.248c-32.5117 9.72754 -44.7998 30.208 -44.7998 30.208\nc3.7666 -2.63574 9.97656 -6.05273 10.4961 -6.40039c43.21 -24.1973 104.588 -32.126 159.744 -8.95996c8.95996 3.32812 18.9443 8.19238 29.4395 15.1045c0 0 -12.7998 -20.9922 -46.3359 -30.4639c7.68066 -9.72852 16.8965 -20.7363 16.8965 -20.7363\nc56.5762 1.79199 78.3359 38.9121 78.3359 38.9121z\" />\n    <glyph glyph-name=\"discourse\" unicode=\"&#xf393;\" \nd=\"M225.9 416c122.699 0 222.1 -102.3 222.1 -223.9c0 -121.6 -99.4004 -223.899 -222.1 -223.899l-225.801 -0.200195s-0.0996094 224 -0.0996094 227.9c0 121.6 103.3 220.1 225.9 220.1zM224 64c70.7002 0 128 57.2998 128 128s-57.2998 128 -128 128\ns-128 -57.2998 -128 -128c0 -22.0996 5.59961 -42.9004 15.4004 -61l-22.9004 -75l81.0996 20.0996c16.5 -7.7998 35 -12.0996 54.4004 -12.0996z\" />\n    <glyph glyph-name=\"dochub\" unicode=\"&#xf394;\" horiz-adv-x=\"416\" \nd=\"M397.9 288h-141.9v140.4zM304 256h96v-126.1c0 -129.301 -70.2998 -193.9 -210.8 -193.9h-189.2v512h189.2c12.2002 0 23.7002 -1.09961 34.5996 -3.2998v-84c-10 1.7002 -21.0996 2.5 -33.0996 2.5h-94.7002v-337.3h94.7002c76.7998 0 113.3 33.2998 113.3 100.1v130z\n\" />\n    <glyph glyph-name=\"docker\" unicode=\"&#xf395;\" horiz-adv-x=\"640\" \nd=\"M349.9 211.7h-66.1006v59.3994h66.1006v-59.3994zM349.9 416v-60.7002h-66.1006v60.7002h66.1006zM428.1 271.2v-59.4004h-66.0996v59.4004h66.0996zM271.8 343.3v-60.0996h-66.0996v60.0996h66.0996zM349.9 343.3v-60.0996h-66.1006v60.0996h66.1006zM626.7 243.3\nl13.2998 -8.89941c-1.90039 -3.90039 -7 -14.6006 -8.5 -17.1006c-23.7002 -45.2998 -69.9004 -45.5996 -91.2998 -45.2002c-54.5 -131.699 -171 -204.199 -328.4 -204.199c-72.7002 0 -128.3 22.2998 -165.399 66.1992c-38.2002 45.3008 -52.7002 111.301 -44 162.101\nh434.699c22.6006 -0.400391 39.7002 6 48.4004 10.7002c-19.7002 30.1992 -14.7002 76 3.7002 103.8l9.2998 14l14 -9.2998c24.4004 -18.8008 37.7998 -39.7002 41.0996 -63.7002c25.5 4.7998 58.7002 1.2998 73.1006 -8.40039zM115.6 271.2h0.100586v-59.4004h-66.1006\nv59.4004h66zM193.7 271.2v-59.4004h-66.1006v59.4004h66.1006zM271.8 271.2v-59.4004h-66.0996v59.4004h66.0996zM193.7 343.3v-60.0996h-66.1006v60.0996h66.1006z\" />\n    <glyph glyph-name=\"draft2digital\" unicode=\"&#xf396;\" horiz-adv-x=\"480\" \nd=\"M480 49.9004l-144 -81.9004v64.2002l-336 -0.100586c18.2998 19.1006 84.5 87.8008 161.1 174.801c32.6006 37.1992 78 83.2998 69.7002 127.6c-5.2998 28.2998 -42.2002 50.7998 -83.2998 33.5c-8.59961 -3.59961 -24.5 -17.4004 -26.2998 -24.7002\nc28.2998 -4.7002 48 -29.7002 48 -56.7998c0 -31.7002 -25.6006 -57.4004 -57.2998 -57.4004c-37.3008 0 -62.2002 34.1006 -56.7002 67.1006c1.2002 7.89941 5.09961 26.7998 18.2002 47.7002c14.8994 23.8994 45.1992 54.8994 104.3 67.2998\nc103.8 21.7002 161.6 -36.6006 166 -41.2002c28.8994 -29.9004 48 -90.7002 12.7998 -153.3c-30 -53.4004 -81 -114.3 -111.8 -149.3h91.2998v64.6992zM369.9 77v-54.4004l47.0996 27.2002zM134.2 286.6c0 12.3008 -10 22.4004 -22.4004 22.4004\nc-12.3994 0 -22.3994 -10 -22.3994 -22.4004c0 -12.3994 10 -22.3994 22.3994 -22.3994c12.4004 0 22.4004 10 22.4004 22.3994zM82.5 67.5h114.4c17.5996 19.2002 91.5 100.8 128.5 166.7c36.5996 65.0996 -5.80078 113.3 -5.80078 113.3\nc-14.1992 14.9004 -36.8994 36.2002 -82.1992 38.2998c6.7998 -5.5 16.8994 -16.8994 24.2998 -35.7002c11.8994 -30.2998 6.7002 -69.5996 -28.4004 -112.699c-53.0996 -65.2002 -125.2 -142.5 -150.8 -169.9z\" />\n    <glyph glyph-name=\"dribbble-square\" unicode=\"&#xf397;\" \nd=\"M90.2002 219.8c8.89941 42.4004 37.3994 77.7002 75.7002 95.7002c3.59961 -4.90039 28 -38.7998 50.6992 -79c-64 -17 -120.3 -16.7998 -126.399 -16.7002zM314.6 294c-2.5 -3.5 -23 -31.0996 -71.5996 -49.4004c-22.4004 41.1006 -47.2002 74.9004 -51 80\nc43.2998 10.5 89 -0.799805 122.6 -30.5996zM140.1 84c14.3008 29.2002 53 66.7998 108.101 85.5996c19.2002 -49.7998 27.2002 -91.5996 29.2002 -103.6c-44 -18.7002 -96.8008 -13.5996 -137.301 18zM238.9 192.2c-49.4004 -13.9004 -94.3008 -53.9004 -116.5 -91.7998\nc-21.8008 24.2998 -35.1006 56.2998 -35.1006 91.3994c0 1.40039 0.100586 2.7998 0.100586 4.2002c6 -0.200195 72.1992 -1 140.399 19.4004c3.90039 -7.7002 7.7002 -15.4004 11.1006 -23.2002zM273.8 175.9c42.7998 6.89941 80.5 -4.30078 85.1006 -5.80078\nc-6.10059 -38 -27.9004 -70.8994 -58.6006 -91.5996c-1.39941 8.2998 -8.59961 48.2998 -26.5 97.4004zM253.5 224.3c50.5 20.7002 73.4004 50 76.2998 53.9004c19.1006 -23.2002 30.6006 -52.7998 30.9004 -85.1006c-4.5 1 -49.7002 10.1006 -95.2002 4.40039\nc-3.7002 9 -7.2002 17 -12 26.7998zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM384 192c0 88.2002 -71.7998 160 -160 160s-160 -71.7998 -160 -160s71.7998 -160 160 -160\ns160 71.7998 160 160z\" />\n    <glyph glyph-name=\"dyalog\" unicode=\"&#xf399;\" horiz-adv-x=\"416\" \nd=\"M0 416h171.2c74.5 0 137.7 -24 182.5 -69.5996c40.2002 -40.9004 62.2998 -95.6006 62.2998 -154.301c0 -111.399 -84.0996 -224.1 -244.8 -224.1h-171.2v64h171.2c122.2 0 180.8 84 180.8 160.1c0 79.7002 -67.4004 159.9 -180.8 159.9h-107.2v-55.2002h-64v119.2z\" />\n    <glyph glyph-name=\"earlybirds\" unicode=\"&#xf39a;\" horiz-adv-x=\"480\" \nd=\"M313.2 400.5c1.2002 13 21.2998 14 36.5996 8.7002c0.900391 -0.299805 26.2002 -9.7002 19 -15.2002c-27.8994 7.40039 -56.3994 -18.2002 -55.5996 6.5zM112.2 393.6c-7.7998 6.2002 19.8994 16.4004 20.8994 16.7002c16.8008 5.7002 38.9004 4.60059 40.2002 -9.59961\nc0.900391 -27.1006 -30.3994 1 -61.0996 -7.10059zM319.4 288c8.7998 0 16 -7.2002 16 -16s-7.2002 -16 -16 -16c-8.80078 0 -16 7.2002 -16 16s7.19922 16 16 16zM159.7 288c8.7998 0 16 -7.2002 16 -16s-7.2002 -16 -16 -16s-16 7.2002 -16 16s7.2002 16 16 16z\nM478.2 124.8c-9.90039 -24 -40.7002 -11 -63.9004 1.2002c-13.5 -69.0996 -58.0996 -111.4 -126.3 -124.2c0.299805 -0.899414 -2 0.100586 24 -1c33.5996 -1.39941 63.7998 3.10059 97.4004 8c-19.8008 13.7998 -11.4004 37.1006 -9.80078 38.1006\nc1.40039 0.899414 14.7002 -1.7002 21.6006 -11.5c8.59961 12.5 28.3994 14.7998 30.2002 13.5996c1.59961 -1.09961 6.59961 -20.9004 -6.90039 -34.5996c4.7002 0.899414 8.2002 1.59961 9.7998 2.09961c2.60059 0.799805 17.7002 -11.2998 3.10059 -13.2998\nc-14.3008 -2.2998 -22.6006 -5.10059 -47.1006 -10.7998c-45.8994 -10.7002 -85.8994 -11.8008 -117.7 -12.8008l1 -11.5996c3.80078 -18.0996 -23.3994 -24.2998 -27.5996 -6.2002c0.799805 -17.8994 -27.0996 -21.7998 -28.4004 1l-0.5 -5.2998\nc-0.699219 -18.4004 -28.3994 -17.9004 -28.2998 0.599609c-7.5 -13.5 -28.0996 -6.7998 -26.3994 8.5l1.19922 12.4004c-36.6992 -0.900391 -59.6992 -3.09961 -61.7998 -3.09961c-20.8994 0 -20.8994 31.5996 0 31.5996c2.40039 0 27.7002 -1.2998 63.2002 -2.7998\nc-61.0996 15.5 -103.7 55 -114.9 118.2c-25 -12.8008 -57.5 -26.8008 -68.1992 -0.800781c-10.5 25.4004 21.5 42.6006 66.7998 73.4004c0.700195 6.59961 1.59961 13.2998 2.7002 19.7998c-14.4004 19.6006 -11.6006 36.2998 -16.1006 60.4004\nc-16.7998 -2.40039 -23.2002 9.09961 -23.5996 23.0996c0.299805 7.2998 2.09961 14.9004 2.39941 15.4004c1.10059 1.7998 10.1006 2 12.7002 2.59961c6 31.7002 50.6006 33.2002 90.9004 34.5c19.7002 21.7998 45.2002 41.5 80.8994 48.2998\nc-15.2998 19.4004 -3.39941 39.9004 -2.39941 40.4004c1.7002 0.799805 21.2002 -4.2998 26.2998 -23.2002c5.2002 8.7998 18.2998 11.4004 19.5996 10.7002c1.10059 -0.599609 6.40039 -15 -4.89941 -25.9004c40.2998 -3.5 72.2002 -24.6992 96 -50.6992\nc36.0996 -1.5 71.7998 -5.90039 77.0996 -34c2.7002 -0.600586 11.6006 -0.800781 12.7002 -2.60059c0.299805 -0.5 2.09961 -8.09961 2.40039 -15.3994c-0.5 -13.9004 -6.80078 -25.4004 -23.6006 -23.1006c-3.2002 -17.2998 -2.7002 -32.8994 -8.7002 -47.7002\nc2.40039 -11.6992 4 -23.7998 4.80078 -36.3994c37 -25.4004 70.2998 -42.5 60.2998 -66.9004zM207.4 288.1c0.899414 44 -37.9004 42.2002 -78.6006 40.3008c-21.7002 -1 -38.8994 -1.90039 -45.5 -13.9004c-11.3994 -20.9004 5.90039 -92.9004 23.2002 -101.2\nc9.7998 -4.7002 73.4004 -7.89941 86.2998 7.10059c8.2002 9.39941 15 49.3994 14.6006 67.6992zM259.4 229.8c-4.30078 12.4004 -6 30.1006 -15.3008 32.7002c-2 0.5 -9 0.5 -11 0c-10 -2.7998 -10.7998 -22.0996 -17 -37.2002c15.4004 0 19.3008 -9.7002 23.7002 -9.7002\nc4.2998 0 6.2998 11.3008 19.6006 14.2002zM395.1 314.5c-6.59961 12.0996 -24.7998 12.9004 -46.5 13.9004c-40.1992 1.89941 -78.1992 3.7998 -77.2998 -40.3008c-0.5 -18.2998 5 -58.2998 13.2002 -67.7998c13 -14.8994 76.5996 -11.7998 86.2998 -7.09961\nc15.7998 7.59961 36.5 78.8994 24.2998 101.3z\" />\n    <glyph glyph-name=\"erlang\" unicode=\"&#xf39d;\" horiz-adv-x=\"640\" \nd=\"M87.2002 394.5c-41.5 -50.2002 -65.6006 -116.2 -65.5 -192.9c-0.100586 -86.7998 29 -159.5 78.7002 -212.1h-100.4v405h87.2002zM325.4 384.8c46.1992 -0.0996094 79.5996 -33.5 80.6992 -83.2002h-169.899c4.09961 49.7002 43.2998 83.1006 89.2002 83.2002z\nM556.1 394.4h0.300781l-0.100586 0.0996094zM556.4 394.4h83.5996v-405h-80.7998c21.3994 23 40.5 49.8994 57.8994 80.7998l-96.3994 48.2002c-33.9004 -55.1006 -83.4004 -105.801 -151.9 -106.101c-99.7002 0.400391 -138.8 85.6006 -138.6 195.3h372.399\nc0.5 12.4004 0.5 18.1006 0 24.1006c2.5 65.2002 -14.7998 120 -46.1992 162.7z\" />\n    <glyph glyph-name=\"facebook-f\" unicode=\"&#xf39e;\" horiz-adv-x=\"320\" \nd=\"M279.14 160h-74.6895v-224h-100.17v224h-81.3906v92.6602h81.3906v70.6201c0 80.3398 47.8594 124.72 121.08 124.72c35.0693 0 71.75 -6.25977 71.75 -6.25977v-78.8906h-40.4199c-39.8203 0 -52.2402 -24.71 -52.2402 -50.0596v-60.1299h88.9102z\" />\n    <glyph glyph-name=\"facebook-messenger\" unicode=\"&#xf39f;\" horiz-adv-x=\"512\" \nd=\"M256.55 440c140.04 0 247.45 -102.34 247.45 -240.57c0 -175.13 -166.15 -273.229 -319.44 -231.04c-8.96973 2.44043 -9.64941 0.600586 -62.5596 -22.6992c-2.10449 -0.918945 -5.67578 -1.66504 -7.97168 -1.66504c-10.624 0 -19.543 8.61719 -19.9082 19.2344\nc-1.41992 46.3701 0.299805 50.7207 -8.0498 58.2305c-48.3604 43.1602 -78.0703 105.64 -78.0703 177.939c0 138.23 108.52 240.57 248.55 240.57zM405.79 254.87c7.0498 11.0801 -6.65039 23.5996 -17.0898 15.6201l-78.4102 -59.3799\nc-2.20801 -1.65625 -6.24023 -3 -9 -3s-6.79199 1.34375 -9 3l-58.0596 43.46c-5.48926 4.09961 -15.5049 7.42676 -22.3564 7.42676c-11.3438 0 -25.4805 -7.77637 -31.5537 -17.3574l-73 -115.569c-7.05078 -11.0703 6.64941 -23.6006 17.1094 -15.6699l78.3701 59.4395\nc2.20801 1.65625 6.24023 3 9 3s6.79199 -1.34375 9 -3l58.0801 -43.4697c5.48926 -4.09766 15.5039 -7.42285 22.3535 -7.42285c11.3428 0 25.4805 7.77441 31.5566 17.3525z\" />\n    <glyph glyph-name=\"firstdraft\" unicode=\"&#xf3a1;\" horiz-adv-x=\"384\" \nd=\"M384 256h-64v-128h-128v-128h-192v25.5996h166.4v128h128v128h89.5996v-25.5996zM358.4 217.6h25.5996v-153.6h-128v-128h-192v25.5996h166.4v128h128v128zM384 25.5996v-25.5996h-64v-64h-25.5996v89.5996h89.5996zM0 448h384v-128h-128v-128h-128v-128h-128v384z\" />\n    <glyph glyph-name=\"fonticons-fi\" unicode=\"&#xf3a2;\" horiz-adv-x=\"384\" \nd=\"M114.4 224h92.3994l-15.2002 -51.2002h-76.3994v-157.8c0 -8 -2.7998 -9.2002 4.39941 -10l59.6006 -5.59961v-34.4004h-179.2v35.2002l29.2002 2.7998c7.2002 0.799805 9.2002 3.2002 9.2002 10.7998v155.8c0 3.2002 -4 3.2002 -8 3.2002h-30.4004v51.2002h38.4004\nv28.7998c0 68 36.3994 96 106 96c46.7998 0 88.7998 -11.2002 88.7998 -72.3994l-69.6006 -8.40039c0.400391 25.5996 -6 31.5996 -22.3994 31.5996c-25.2002 0 -26 -13.5996 -26 -37.5996v-32c0 -3.2002 -4.7998 -6 -0.799805 -6zM384 -35h-140.8v34.4004l28 3.59961\nc7.2002 0.799805 10.3994 2.40039 10.3994 10v148c0 5.59961 -4 9.2002 -9.19922 10.7998l-33.2002 8.7998l9.2002 40.4004h110v-208c0 -8 -3.60059 -8.7998 4 -10l21.5996 -3.59961v-34.4004zM354 312.2l12.4004 -45.6006l-10 -10l-42.8008 22.8008l-42.7998 -22.8008\nl-10 10l12.4004 45.6006l-30 36.3994l4.7998 10h38l21.2002 38.4004h12.7998l21.2002 -38.4004h38l4.7998 -13.1992z\" />\n    <glyph glyph-name=\"fort-awesome-alt\" unicode=\"&#xf3a3;\" horiz-adv-x=\"512\" \nd=\"M208 210.6c2.09961 0 3.7002 -1.59961 3.7002 -3.69922v-51.7002c0 -2.10059 -1.60059 -3.7002 -3.7002 -3.7002h-22.2002c-2.09961 0 -3.7002 1.59961 -3.7002 3.7002v51.7002c0 2.09961 1.60059 3.69922 3.7002 3.69922h22.2002zM326.2 210.6\nc2 0 3.59961 -1.59961 3.7002 -3.69922v-51.7002c0 -2.10059 -1.60059 -3.7002 -3.7002 -3.7002h-22.2002c-2.09961 0 -3.7002 1.59961 -3.7002 3.7002v51.7002c0 2.09961 1.60059 3.69922 3.7002 3.69922h22.2002zM458.2 335.7\nc28.8994 -40.7002 45.7998 -90.2002 45.7998 -143.7c0 -2 0 -4 -0.0996094 -6c0 -0.700195 0 -1.2998 -0.100586 -2c0 -1.2998 -0.0996094 -2.7002 -0.200195 -4c0 -0.799805 -0.0996094 -1.5 -0.0996094 -2.2998\nc-0.0996094 -1.2002 -0.0996094 -2.40039 -0.200195 -0.700195c-0.0996094 -0.799805 -0.0996094 -1.59961 -0.200195 -2.40039c-0.0996094 -1.19922 -0.199219 -2.39941 -0.299805 -3.5c-0.0996094 -0.799805 -0.200195 -1.59961 -0.200195 -2.39941\nc-0.0996094 -1.2002 -0.299805 -2.40039 -0.399414 -3.60059c-0.100586 -0.799805 -0.200195 -1.5 -0.299805 -2.2998c-0.200195 -1.2998 -0.400391 -2.59961 -0.5 -3.89941c-0.100586 -0.600586 -0.200195 -1.30078 -0.300781 -1.90039l-0.899414 -5.7002\nc-0.100586 -0.599609 -0.200195 -1.09961 -0.299805 -1.7002c-0.200195 -1.2998 -0.5 -2.69922 -0.800781 -4c-0.199219 -0.799805 -0.299805 -1.59961 -0.5 -2.39941c-0.199219 -1.10059 -0.5 -2.2002 -0.699219 -3.2002\nc-0.200195 -0.900391 -0.400391 -1.7002 -0.600586 -2.59961c-0.200195 -1 -0.5 -2 -0.700195 -3c-0.199219 -0.900391 -0.5 -1.80078 -0.699219 -2.7002c-0.300781 -1 -0.5 -1.90039 -0.800781 -2.90039c-0.199219 -0.899414 -0.5 -1.7998 -0.799805 -2.7002\nc-0.299805 -0.899414 -0.599609 -1.89941 -0.799805 -2.7998c-0.299805 -0.899414 -0.5 -1.7998 -0.799805 -2.7002c-0.299805 -0.899414 -0.600586 -1.7998 -0.900391 -2.7998c-0.5 -1.59961 -1.09961 -3.2998 -1.7002 -4.89941\nc-0.299805 -0.900391 -0.599609 -1.80078 -1 -2.80078c-0.399414 -1 -0.699219 -2 -1.09961 -3c-0.299805 -0.799805 -0.599609 -1.5 -0.900391 -2.2998l-1.19922 -3c-0.300781 -0.700195 -0.600586 -1.5 -0.900391 -2.2002c-0.400391 -1 -0.799805 -2 -1.2998 -3\nl-0.900391 -2.09961c-0.399414 -1 -0.899414 -2 -1.39941 -3c-0.300781 -0.700195 -0.600586 -1.2998 -0.900391 -2c-0.5 -1 -1 -2.09961 -1.5 -3.09961c-0.299805 -0.600586 -0.599609 -1.10059 -0.799805 -1.7002c-0.600586 -1.10059 -1.10059 -2.2002 -1.7002 -3.2998\nc-0.0996094 -0.200195 -0.200195 -0.300781 -0.299805 -0.5c-2.2002 -4.10059 -4.40039 -8.2002 -6.7998 -12.2002c-0.200195 -0.400391 -0.5 -0.799805 -0.700195 -1.2002c-0.700195 -1.09961 -1.2998 -2.2002 -2 -3.2998\nc-0.299805 -0.5 -0.600586 -0.900391 -0.900391 -1.40039c-0.700195 -1.09961 -1.39941 -2.09961 -2 -3.2002c-0.299805 -0.5 -0.599609 -0.899414 -0.899414 -1.39941c-0.700195 -1.10059 -1.40039 -2.10059 -2.10059 -3.2002\nc-0.299805 -0.400391 -0.599609 -0.799805 -0.799805 -1.2002c-0.799805 -1.09961 -1.5 -2.2002 -2.2998 -3.2998c-0.200195 -0.200195 -0.299805 -0.5 -0.5 -0.700195c-37.6006 -54.7002 -94.5 -91.3994 -160.101 -102.399\nc-0.899414 -0.100586 -1.69922 -0.300781 -2.59961 -0.400391c-1 -0.200195 -2.09961 -0.299805 -3.09961 -0.5c-0.900391 -0.0996094 -1.80078 -0.299805 -2.80078 -0.400391c-1 -0.0996094 -2 -0.299805 -3 -0.399414c-1 -0.100586 -2 -0.200195 -2.89941 -0.299805\nc-1 -0.100586 -1.90039 -0.200195 -2.90039 -0.300781c-1 -0.0996094 -2.09961 -0.199219 -3.09961 -0.299805c-0.900391 -0.0996094 -1.7998 -0.200195 -2.7002 -0.200195c-1.09961 -0.0996094 -2.2998 -0.0996094 -3.40039 -0.199219\nc-0.799805 0 -1.69922 -0.100586 -2.5 -0.100586c-1.2998 -0.0996094 -2.59961 -0.0996094 -3.89941 -0.0996094c-0.700195 0 -1.40039 -0.100586 -2.10059 -0.100586c-2 0 -4 -0.0996094 -6 -0.0996094s-4 0 -6 0.0996094c-0.699219 0 -1.39941 0 -2.09961 0.100586\nc-1.2998 0 -2.59961 0.0996094 -3.90039 0.0996094c-0.799805 0 -1.69922 0.100586 -2.5 0.100586c-1.09961 0.0996094 -2.2998 0.0996094 -3.39941 0.199219c-0.900391 0.100586 -1.7998 0.100586 -2.7002 0.200195c-1 0.100586 -2.09961 0.200195 -3.09961 0.299805\nc-1 0.100586 -1.90039 0.200195 -2.90039 0.300781c-1 0.0996094 -2 0.199219 -2.90039 0.299805c-1 0.0996094 -2 0.200195 -3 0.399414c-0.899414 0.100586 -1.7998 0.300781 -2.7998 0.400391s-2.09961 0.299805 -3.09961 0.5\nc-0.900391 0.0996094 -1.7002 0.299805 -2.60059 0.400391c-65.5996 10.8994 -122.5 47.6992 -160 99.3994c-0.199219 0.200195 -0.299805 0.5 -0.5 0.700195c-0.799805 1.09961 -1.59961 2.2002 -2.2998 3.2998c-0.299805 0.400391 -0.599609 0.799805 -0.799805 1.2002\nc-0.700195 1.09961 -1.40039 2.09961 -2.09961 3.2002c-0.300781 0.5 -0.600586 0.899414 -0.900391 1.39941c-0.700195 1.10059 -1.40039 2.10059 -2 3.2002c-0.299805 0.5 -0.599609 0.900391 -0.900391 1.40039c-0.699219 1.09961 -1.2998 2.2002 -2 3.2998\nc-0.199219 0.400391 -0.5 0.799805 -0.699219 1.2002c-2.40039 4 -4.60059 8.09961 -6.80078 12.2002c-0.0996094 0.199219 -0.199219 0.299805 -0.299805 0.5c-0.599609 1.09961 -1.09961 2.19922 -1.7002 3.2998c-0.299805 0.599609 -0.599609 1.09961 -0.799805 1.7002\nc-0.5 1 -1 2.09961 -1.5 3.09961c-0.299805 0.700195 -0.599609 1.2998 -0.899414 2c-0.5 1 -0.900391 2 -1.40039 3l-0.900391 2.09961c-0.399414 1 -0.899414 2 -1.2998 3c-0.299805 0.700195 -0.599609 1.5 -0.899414 2.2002l-1.2002 3\nc-0.299805 0.799805 -0.600586 1.5 -0.900391 2.2998c-0.399414 1 -0.799805 2 -1.09961 3c-0.299805 0.900391 -0.600586 1.80078 -1 2.80078c-0.600586 1.59961 -1.10059 3.2998 -1.7002 4.89941c-0.299805 0.900391 -0.599609 1.7998 -0.900391 2.7998\nc-0.299805 0.900391 -0.5 1.80078 -0.799805 2.7002c-0.299805 0.900391 -0.599609 1.90039 -0.799805 2.7998c-0.299805 0.900391 -0.5 1.80078 -0.799805 2.7002c-0.299805 1 -0.5 1.90039 -0.799805 2.90039c-0.200195 0.899414 -0.5 1.7998 -0.700195 2.7002\nc-0.299805 1 -0.5 2 -0.700195 3c-0.200195 0.899414 -0.400391 1.69922 -0.599609 2.59961c-0.200195 1.09961 -0.5 2.2002 -0.700195 3.2002c-0.200195 0.799805 -0.299805 1.59961 -0.5 2.39941c-0.299805 1.30078 -0.5 2.7002 -0.799805 4\nc-0.100586 0.600586 -0.200195 1.10059 -0.300781 1.7002l-0.899414 5.7002c-0.100586 0.599609 -0.200195 1.2998 -0.299805 1.90039c-0.200195 1.2998 -0.400391 2.59961 -0.5 3.89941c-0.100586 0.799805 -0.200195 1.5 -0.300781 2.2998\nc-0.0996094 1.2002 -0.299805 2.40039 -0.399414 3.60059c-0.100586 0.799805 -0.200195 1.59961 -0.200195 2.39941c-0.0996094 1.2002 -0.200195 2.40039 -0.299805 3.5c-0.100586 0.800781 -0.100586 1.60059 -0.200195 2.40039\nc-0.0996094 1.2002 -0.200195 2.40039 -0.200195 3.7002c0 0.799805 -0.0996094 1.5 -0.0996094 2.2998c-0.100586 1.2998 -0.100586 2.7002 -0.200195 4c0 0.700195 0 1.2998 -0.0996094 2c0 2 -0.100586 4 -0.100586 6c0 53.5 16.9004 103 45.7998 143.6\nc2.30078 3.2002 4.7002 6.40039 7.10059 9.5c4.89941 6.2002 10.0996 12.3008 15.5996 18c2.7002 2.90039 5.5 5.7002 8.40039 8.40039c2.89941 2.7002 5.7998 5.40039 8.7998 8c4.5 3.90039 9.09961 7.59961 13.9004 11.2002c1.59961 1.2002 3.19922 2.39941 4.7998 3.5\nc27.2998 19.5996 59 33.7002 93.2998 40.7998c16.0996 3.2998 32.9004 5 50 5s33.7998 -1.7002 50 -5c34.2998 -7 66 -21.0996 93.5996 -40.7002c1.60059 -1.2002 3.2002 -2.2998 4.80078 -3.5c4.7998 -3.59961 9.39941 -7.2998 13.8994 -11.2002\nc12 -10.3994 23 -21.8994 32.7998 -34.3994c2.5 -3.10059 4.80078 -6.2998 7.10059 -9.5zM448 76.5v71.2998c0 2.10059 -1.59961 3.7002 -3.7002 3.7002h-22.2002c-2.09961 0 -3.69922 -1.59961 -3.69922 -3.7002v-25.7998h-29.5v144\nc0 2.09961 -1.60059 3.7002 -3.7002 3.7002h-22.1006c-2.09961 0 -3.69922 -1.60059 -3.69922 -3.7002v-25.9004h-29.5v25.9004c0 2.09961 -1.60059 3.7002 -3.7002 3.7002h-22.2002c-2.09961 0 -3.7002 -1.60059 -3.7002 -3.7002v-25.9004h-29.5v25.9004\nc0 4.7998 -6.5 3.7002 -9.5 3.7002v30.7002c6.7002 1.59961 13.7998 2.7998 20.7998 2.7998c8.80078 0 16.8008 -3.5 25.4004 -3.5c3.7002 0 22.4004 0.899414 22.4004 6.5v48.3994c0 2.10059 -1.60059 3.7002 -3.7002 3.7002c-4.2002 0 -12.2002 -3.5 -19.4004 -3.5\nc-7.89941 0 -16.8994 3.5 -26.2998 3.5c-6.5 0 -12.9004 -0.899414 -19.2002 -2.2998v3.90039c4.40039 2.09961 7.40039 6.69922 7.40039 11.5c0 16.7998 -25.4004 16.7998 -25.4004 0c0 -4.80078 3 -9.5 7.40039 -11.5v-90.2002c-3 0 -9.5 1.09961 -9.5 -3.7002v-25.9004\nh-29.5v25.9004c0 2.09961 -1.60059 3.7002 -3.7002 3.7002h-22.2002c-2.09961 0 -3.7002 -1.60059 -3.7002 -3.7002v-25.9004h-29.5v25.9004c0 2.09961 -1.59961 3.7002 -3.69922 3.7002h-22.1006c-2.09961 0 -3.7002 -1.60059 -3.7002 -3.7002v-144h-29.5996v25.7998\nc0 2.10059 -1.59961 3.7002 -3.7002 3.7002h-22.0996c-2.10059 0 -3.7002 -1.59961 -3.7002 -3.7002v-71.2998c9.40039 -15.5 20.5996 -29.9004 33.5996 -42.9004c20.6006 -20.5996 44.5 -36.6992 71.2002 -48c13.9004 -5.89941 28.2002 -10.2998 42.9004 -13.1992v75.7998\nc0 58.5996 88.5996 58.5996 88.5996 0v-75.7998c14.7002 2.89941 29 7.39941 42.9004 13.1992c26.7002 11.3008 50.5996 27.4004 71.2002 48c13 13 24.1992 27.4004 33.5996 42.9004z\" />\n    <glyph glyph-name=\"freebsd\" unicode=\"&#xf3a4;\" \nd=\"M303.7 351.8c11.0996 11.1006 115.5 77 139.2 53.2002c23.6992 -23.7002 -42.1006 -128.1 -53.2002 -139.2c-11.1006 -11.0996 -39.4004 -0.899414 -63.1006 22.9004c-23.7998 23.7002 -34.0996 52 -22.8994 63.0996zM109.9 379.9\nc-31.6006 -19.4004 -57.9004 -46.5 -76.4004 -78.7002c-20.7998 36.2998 -44.5 89.0996 -27.9004 105.7c16.4004 16.5 68 -6.40039 104.301 -27zM406.7 274c3.2998 5.5 7 11.7998 10.8994 18.7998c17.6006 -31.2998 27.7002 -67.3994 27.7002 -105.8\nc0 -119.1 -96.5 -215.6 -215.6 -215.6c-119.101 0 -215.601 96.5996 -215.601 215.6c0 119.1 96.5 215.6 215.601 215.6c35.8994 0 69.7002 -8.7998 99.5 -24.2998c-7.2998 -4 -13.9004 -8 -19.6006 -11.5996c-26 4.7002 -32.8994 -16.4004 -14.8994 -48.7002\nc21.7998 -43.0996 89 -90.4004 109.3 -70.0996c5.40039 5.39941 6 14.7998 2.7002 26.0996z\" />\n    <glyph glyph-name=\"gitkraken\" unicode=\"&#xf3a6;\" horiz-adv-x=\"592\" \nd=\"M565.7 329.9c11.7998 -31.6006 18.2998 -65.7002 18.2998 -101.4c0 -155.1 -122.6 -281.6 -276.3 -287.7v145.8c-8.40039 -0.5 -16.6006 -0.399414 -23.4004 0v-145.899c-153.7 6.2002 -276.3 132.7 -276.3 287.8c0 35.7002 6.5 69.7998 18.2998 101.3\nc2.2998 6.2002 9.2998 9.2002 15.2998 6.60059c5.7002 -2.40039 8.5 -8.80078 6.30078 -14.6006c-10.9004 -29 -16.9004 -60.5 -16.9004 -93.2998c0 -134.6 100.4 -245.7 230.2 -262.7v123.7c-7.90039 1.59961 -15.4004 3.7002 -23 6.2002v-104\nc-106.7 26 -185.9 122.1 -185.9 236.8c0 91.7998 50.7998 171.8 125.8 213.3c5.80078 3.2002 13 0.900391 15.9004 -5c2.7002 -5.5 0.700195 -12.0996 -4.7002 -15.0996c-67.8994 -37.7002 -113.899 -110.101 -113.899 -193.2c0 -93.4004 57.8994 -173.2 139.8 -205.4\nv92.2002c-14.2002 4.5 -24.7998 17.7002 -24.7998 33.5c0 13.1006 6.69922 24.4004 17.2998 30.5c-8.2002 79.6006 -44.5 58.6006 -44.5 83.9004v14.7998c0 38 87.8994 161.7 129.1 164.7c2.60059 0.200195 5.10059 0.200195 7.60059 0\nc41.0996 -2.90039 129 -126.7 129 -164.7v-14.7002c0 -25.2998 -36.2002 -4.39941 -44.5 -83.8994c10.5 -6.10059 17.2998 -17.4004 17.2998 -30.5c0 -15.8008 -10.7002 -29 -24.9004 -33.5v-92.2002c81.9004 32.2998 139.8 112.1 139.8 205.399\nc0 83.2002 -46 155.601 -113.899 193.2c-5.2998 2.90039 -7.40039 9.60059 -4.7002 15.1006c2.90039 5.89941 10.2002 8.19922 15.9004 5c75 -41.5 125.8 -121.5 125.8 -213.301c0 -114.699 -79.2002 -210.899 -185.9 -236.8v104\nc-7.5 -2.59961 -15.0996 -4.7002 -23 -6.2002v-123.699c129.9 17 230.2 128.1 230.2 262.699c0 32.8008 -6 64.3008 -16.9004 93.3008c-2.19922 5.69922 0.600586 12.1992 6.30078 14.5996c6 2.59961 13 -0.5 15.2998 -6.59961zM365.9 172.5\nc-13.1006 0 -23.7002 -10.5996 -23.7002 -23.7002c0 -13.2002 10.7002 -23.7002 23.7002 -23.7002c13.0996 0 23.6992 10.6006 23.6992 23.7002c0 13.2002 -10.6992 23.7002 -23.6992 23.7002zM226.1 125.2c13.2002 0 23.7002 10.7002 23.7002 23.7002\nc0 13.0996 -10.5996 23.6992 -23.7002 23.6992c-13.1992 0 -23.6992 -10.6992 -23.6992 -23.6992s10.5 -23.7002 23.6992 -23.7002z\" />\n    <glyph glyph-name=\"gofore\" unicode=\"&#xf3a7;\" horiz-adv-x=\"400\" \nd=\"M324 128.2c54.2998 0 65.7002 -50.1006 67.7002 -77.7002c-46.5 -56.2998 -107.8 -82.5 -171 -82.5c-123.7 0 -220.7 101.5 -220.7 224c0 123.4 98 224 220.7 224c59 0 114.3 -23.2998 156.1 -65.5996l-62.2998 -63.3008c-25 25.4004 -58.2998 39.4004 -93.5996 39.4004\nc-73.2002 0 -132.4 -60.2998 -132.4 -134.4c0 -74.1992 59.2002 -134.399 132.4 -134.399c33.5996 0 65.3994 12.7002 89.8994 35.7998v34.7002h13.2002zM311.9 240.7c47.6992 0 88.0996 -35 88.0996 -100.2v-30.5996c-15.5 26.6992 -42.5 41.7998 -76 41.7998h-118.4v89\nh106.301z\" />\n    <glyph glyph-name=\"goodreads\" unicode=\"&#xf3a8;\" \nd=\"M299.9 256.8c5.09961 -37.2998 -4.7002 -79 -35.9004 -100.7c-22.2998 -15.5 -52.7998 -14.0996 -70.7998 -5.69922c-37.1006 17.2998 -49.5 58.5996 -46.7998 97.1992c4.2998 60.9004 40.8994 87.9004 75.2998 87.5c46.8994 0.200195 71.7998 -31.7998 78.2002 -78.2998\nzM448 360v-336c0 -30.9004 -25.0996 -56 -56 -56h-336c-30.9004 0 -56 25.0996 -56 56v336c0 30.9004 25.0996 56 56 56h336c30.9004 0 56 -25.0996 56 -56zM330 134.8c0 0 -0.0996094 34 -0.0996094 217.3h-29v-40.2998c-0.800781 -0.299805 -1.2002 0.5 -1.60059 1.2002\nc-9.59961 20.7002 -35.8994 46.2998 -76 46c-51.8994 -0.400391 -87.2002 -31.2002 -100.6 -77.7998c-4.2998 -14.9004 -5.7998 -30.1006 -5.5 -45.6006c1.7002 -77.8994 45.0996 -117.8 112.399 -115.199c28.9004 1.09961 54.5 17 69 45.1992\nc0.5 1 1.10059 1.90039 1.7002 2.90039c0.200195 -0.0996094 0.400391 -0.0996094 0.600586 -0.200195c0.299805 -3.7998 0.199219 -30.7002 0.0996094 -34.5c-0.200195 -14.7998 -2 -29.5 -7.2002 -43.5c-7.7998 -21 -22.2998 -34.7002 -44.5 -39.5\nc-17.7998 -3.89941 -35.5996 -3.7998 -53.2002 1.2002c-21.5 6.09961 -36.5 19 -41.0996 41.7998c-0.299805 1.60059 -1.2998 1.2998 -2.2998 1.2998h-26.7998c0.799805 -10.5996 3.19922 -20.2998 8.5 -29.1992c24.1992 -40.5 82.6992 -48.5 128.199 -37.4004\nc49.9004 12.2998 67.3008 54.9004 67.4004 106.3z\" />\n    <glyph glyph-name=\"goodreads-g\" unicode=\"&#xf3a9;\" horiz-adv-x=\"384\" \nd=\"M42.5996 44.7002h2.80078c12.6992 0 25.5 0 38.1992 -0.100586c1.60059 0 3.10059 0.400391 3.60059 -2.09961c7.09961 -34.9004 30 -54.5996 62.8994 -63.9004c26.9004 -7.59961 54.1006 -7.7998 81.3008 -1.7998c33.7998 7.40039 56 28.2998 68 60.4004\nc8 21.5 10.6992 43.7998 11 66.5c0.0996094 5.7998 0.299805 47 -0.200195 52.7998l-0.900391 0.299805c-0.799805 -1.5 -1.7002 -2.89941 -2.5 -4.39941c-22.0996 -43.1006 -61.2998 -67.4004 -105.399 -69.1006c-103 -4 -169.4 57 -172 176.2\nc-0.5 23.7002 1.7998 46.9004 8.2998 69.7002c20.5996 71.0996 74.5996 118.2 153.899 118.8c61.3008 0.400391 101.5 -38.7002 116.2 -70.2998c0.5 -1.10059 1.2998 -2.2998 2.40039 -1.90039v61.6006h44.2998c0 -280.301 0.0996094 -332.2 0.0996094 -332.2\nc-0.0996094 -78.5 -26.6992 -143.7 -103 -162.2c-69.5 -16.9004 -159 -4.7998 -196 57.2002c-8 13.5 -11.7998 28.2998 -13 44.5zM188.9 411.5c-52.5 0.5 -108.5 -40.7002 -115 -133.8c-4.10059 -59 14.7998 -122.2 71.5 -148.601\nc27.5996 -12.8994 74.2998 -15 108.3 8.7002c47.5996 33.2002 62.7002 97 54.7998 154c-9.7002 71.1006 -47.7998 120 -119.6 119.7z\" />\n    <glyph glyph-name=\"google-drive\" unicode=\"&#xf3aa;\" horiz-adv-x=\"512\" \nd=\"M339 133.1l-163.6 282.9h161.199l163.601 -282.9h-161.2zM201.5 109.5h310.5l-80.5996 -141.5h-310.5zM154.1 380.6l82.9004 -141.399l-156.4 -271.2l-80.5996 141.5z\" />\n    <glyph glyph-name=\"google-play\" unicode=\"&#xf3ab;\" horiz-adv-x=\"512\" \nd=\"M325.3 213.7l-220.7 221.3l280.801 -161.2zM47 448l256.6 -255.9l-256.6 -256c-13 6.80078 -21.7002 19.2002 -21.7002 35.3008v441.3c0 16.0996 8.7002 28.5 21.7002 35.2998zM472.2 222.4c19.2002 -14.3008 19.2002 -46.5 1.2002 -60.8008l-60.1006 -34.0996\nl-65.7002 64.5l65.7002 64.5zM104.6 -51l220.7 221.3l60.1006 -60.0996z\" />\n    <glyph glyph-name=\"gripfire\" unicode=\"&#xf3ac;\" horiz-adv-x=\"384\" \nd=\"M112.5 146.6c0 -26.8994 16.5996 -47.1992 32.5996 -69.5c22.5 -30.1992 44.2002 -56.8994 44.2002 -86.5c-0.0996094 -14.5 -4.39941 -29.6992 -17.5 -46.3994c0 5.2998 4.7998 12.2002 4.7998 22.2998c0 15.2002 -13 39.9004 -78.0996 86.5996\nc-34.2998 29.1006 -66.5 58.5 -66.5 108.301c0 114.699 147.1 176.5 147.1 268.6c0 3.2998 -0.199219 6.7002 -0.599609 10c5.09961 -2.40039 39.0996 -43.2998 39.0996 -90.4004c0 -80.5 -105.1 -129.199 -105.1 -203zM317.8 185.6\nc1.5 -8.39941 2.2002 -16.5996 2.2002 -24.5996c0 -51.7998 -29.4004 -97.5 -67.2998 -136.8c-1 -1 -2.2002 -2.40039 -3.2002 -2.40039c-3.59961 0 -35.5 41.6006 -35.5 53.2002c0 0 41.7998 55.7002 41.7998 96.9004c0 10.7998 -2.7002 21.6992 -9.09961 33.3994\nc-1.5 -32.2998 -55.7002 -87.7002 -58.1006 -87.7002c-2.69922 0 -17.8994 22 -17.8994 42.1006c0 5.2998 1 10.7002 3.2002 15.7998c2.39941 5.5 56.5996 72 56.5996 116.7c0 6.2002 -1 12 -3.40039 17.0996l-4 7.2002c16.7002 -6.5 82.6006 -64.0996 94.7002 -130.9z\" />\n    <glyph glyph-name=\"grunt\" unicode=\"&#xf3ad;\" horiz-adv-x=\"384\" \nd=\"M61.2998 258.7c0.5 4.89941 2.7998 10 7 12h0.100586c-4.60059 1.7002 -9.2002 3.09961 -13.5 4.09961c42.1992 10.2002 73.3994 -20.5996 83.0996 -31.7998c16.5996 -19.2002 35.5 -8.7998 35.5 -8.7998c0.299805 -11.1006 -10.2998 -19 -21.0996 -19.5\nc1.19922 -15.4004 -13.9004 -32.5 -13.9004 -32.5s5.59961 15 2.7002 25.2998c-0.900391 3.2002 -2 6.09961 -3 8.5c-19.2998 -17.2002 -48 -1.5 -54.9004 6.09961c-9.59961 10.6006 -12.3994 23.8008 -12.7998 34.1006c-1.7998 -3.7998 -3.2998 -9.10059 -4 -16.6006\nc0 0 -6.2998 9.10059 -5.2002 19.1006zM89.5996 260.5c-2.89941 -9.09961 -3.39941 -27.7002 6.90039 -35.2998c16.2998 -12.1006 32.2998 -5 38 -1.7002c-7.5 11.2998 -25.4004 26 -44.9004 37zM231.7 214.7c-10.7998 0.399414 -21.4004 8.39941 -21.2002 19.2998\nc0 0 18.7998 -10.4004 35.5 8.7998c9.7002 11.2002 40.7998 42 83.0996 31.7998c-4.2998 -0.899414 -8.89941 -2.2998 -13.5 -4.09961h0.100586c4.09961 -1.7998 6.39941 -6.7998 7 -11.7998c1.2002 -10 -5.2002 -19.1006 -5.2002 -19.1006\nc-0.599609 7.5 -2.2002 12.8008 -4 16.6006c-0.5 -10.2998 -3.2002 -23.5 -12.7998 -34.1006c-6.7998 -7.59961 -35.5 -23.3994 -54.7998 -6.09961c-1 -2.5 -2.10059 -5.2998 -3 -8.5c-2.90039 -10.2998 2.69922 -25.2998 2.69922 -25.2998s-15.0996 17 -13.8994 32.5z\nM294.4 260.5c-19.5 -11 -37.4004 -25.5996 -44.9004 -37c5.7002 -3.40039 21.5996 -10.5 37.9004 1.59961c10.3994 7.7002 10 26.3008 7 35.4004zM160 29.5c4.09961 0 7 -0.900391 8.7998 -2.7002c2.2002 -2.2998 1.5 -5.2998 0.900391 -6.7998\nc-1.10059 -2.7002 -5.5 -11.5996 -13 -19.7998c-2.7002 -2.90039 -6.60059 -4.60059 -11 -4.60059c-4.2998 0 -8.7002 1.60059 -11.7998 4.30078c-2.30078 2.09961 -10.2002 9.5 -13.7002 18.5996c-1.2998 3.40039 -1 6.09961 0.899414 8.09961\nc1.30078 1.30078 4 2.90039 9.5 2.90039h29.4004zM349.2 130.7c0 0 29.2998 -22.5 21.0996 -70.9004c-5.2998 -29.5 -23.2002 -46 -47 -54.7002c-8.7998 -19.0996 -29.3994 -45.6992 -67.2998 -49.5996c-14.5 -11.7998 -34.5 -19.5 -63.5996 -19.5h-0.200195\nc-29.2002 0 -49.2002 7.7002 -63.6006 19.5c-37.8994 3.90039 -58.5 30.5 -67.2998 49.5996c-23.7998 8.60059 -41.7998 25.2002 -47 54.7002c-8.59961 48.2002 20.6006 70.7998 20.6006 70.7998c2.39941 -17.8994 13 -33.8994 24.5996 -43.7998\nc3.09961 22.7002 3.7002 55.5 3.7002 62.4004c0 14.7002 -9.5 24.5 -12.2002 26.0996c-2.5 1.5 -5.2998 3 -8.2998 4.60059c-18 9.59961 -40.4004 21.5996 -40.4004 43.6992c0 16.1006 9.2998 23.2002 15.4004 27.8008c0.799805 0.599609 1.5 1.19922 2.2002 1.69922\nc2.09961 1.7002 3.69922 3 4.2998 4.40039c4.39941 9.7998 3.59961 34.2002 1.7002 37.5996c-0.600586 0.700195 -16.8008 21 -11.8008 39.2002c2 7.40039 6.90039 13.2998 14.1006 17c5.2998 2.7002 11.7998 4.2002 19.5 4.5c0.0996094 2 0.5 4 0.899414 5.90039\nc0.5 2.59961 1.10059 5.2998 0.900391 8.09961c-0.400391 4.7002 -0.799805 9.10059 -2.2002 11.2998c-8.39941 13.3008 -28.7998 17.6006 -29 17.6006l-12.2998 2.39941l8.09961 9.40039c0.200195 0.200195 17.3008 17.5 46.3008 17.5c7.89941 0 16 -1.2998 23.8994 -3.5\nc24.2998 -7.7998 42.9004 -30.5 49.4004 -39.2998c2 0.599609 3.89941 1.2002 5.89941 1.7002c-1 26.3994 20.7002 47.3994 28.2002 48.2998c0.5 -4.5 -0.399414 -22.2002 7.2002 -27.6006c2.2002 14.4004 9.59961 30.3008 39.0996 40.7002\nc-6.2998 -16.7002 -0.799805 -30.7002 1.80078 -37.2002c20.0996 18.2002 33.6992 15.2002 33.6992 15.2002s-13.1992 -22.7002 -9 -38.5c3.30078 -0.799805 6.5 -1.7002 9.60059 -2.7002c6.5 8.80078 25.2002 31.5 49.3994 39.3008\nc8.10059 2.59961 16.2002 3.89941 24.1006 3.89941c29 0 46.2002 -17.2998 46.2998 -17.5l8.09961 -9.5l-12.2998 -2.39941c-0.200195 0 -20.5996 -4.30078 -29 -17.6006c-1.39941 -2.2998 -1.7998 -6.59961 -2.2002 -11.2998\nc-0.199219 -2.7998 0.300781 -5.5 0.900391 -8.09961c0.400391 -2 0.799805 -3.90039 0.900391 -5.90039c7.59961 -0.299805 14.1992 -1.7998 19.5 -4.5c7.19922 -3.7002 12.0996 -9.59961 14.0996 -17c4.90039 -18.2998 -11.2002 -38.5996 -11.7998 -39.2002\nc-1.90039 -3.39941 -2.7002 -27.7998 1.7002 -37.5996c0.599609 -1.40039 2.19922 -2.7002 4.2998 -4.40039c0.700195 -0.599609 1.39941 -1.09961 2.2002 -1.7002c6.09961 -4.59961 15.3994 -11.5996 15.3994 -27.7998c0 -22.0996 -22.3994 -34.0996 -40.3994 -43.7002\nc-2.90039 -1.59961 -5.80078 -3.09961 -8.30078 -4.59961c-2.69922 -1.59961 -12.1992 -11.4004 -12.1992 -26.0996c0 -6.90039 0.599609 -39.7002 3.69922 -62.4004c11.6006 9.90039 22.2002 25.7998 24.6006 43.7002zM305.7 410.3\nc-17.7998 -5.7002 -31.6006 -23.0996 -37.7002 -32.2002c1.59961 -0.699219 3.09961 -1.39941 4.7002 -2.19922c2.59961 -1.2002 4.89941 -2.40039 7.09961 -3.7002c2.7002 5.5 8.40039 13.7002 20.7002 22.3994c8.2002 5.80078 18.2002 8.90039 28.7002 8.90039\nc3.59961 0 6.7998 -0.400391 9.2002 -0.799805c3.2998 2.09961 6.59961 3.89941 9.69922 5.2998c-4.7998 2 -13.6992 5 -24.6992 5c-6.10059 0 -12.1006 -0.900391 -17.7002 -2.7002zM326.7 392.1c-7.40039 -0.299805 -14 -2.69922 -19.6006 -7\nc-8 -6.39941 -12.0996 -17.6992 -13.5 -22.5c4.90039 -4.19922 8.2002 -8.09961 10.5 -11.1992c3.40039 1 7.30078 1.89941 11.5 2.69922c3.30078 4.5 3.90039 10.6006 4.40039 17c0.5 6.2002 1.09961 12.6006 4.40039 17.8008c0.699219 1.09961 1.5 2.19922 2.2998 3.19922\nzM45.5996 402.7c2.40039 0.399414 5.60059 0.799805 9 0.899414c10.6006 0 20.5 -3.09961 28.8008 -8.89941c12.3994 -8.7002 18.0996 -17 20.6992 -22.4004c2.2002 1.2002 4.60059 2.5 7.10059 3.7002c1.59961 0.799805 3.2002 1.5 4.7998 2.2002\nc-6.09961 8.89941 -19.9004 26.2998 -37.7002 32.0996c-5.7002 1.7998 -11.5996 2.7002 -17.7002 2.7002c-11 0 -19.8994 -3 -24.6992 -5c3.09961 -1.2998 6.39941 -3.09961 9.69922 -5.2998zM90.2998 362.6c-1.39941 4.80078 -5.5 16.1006 -13.5 22.4004\nc-5.5 4.40039 -12.0996 6.7002 -19.5 7c0.799805 -1 1.60059 -2.09961 2.2998 -3.2002c3.30078 -5.2002 3.90039 -11.5996 4.40039 -17.7998c0.5 -6.40039 1 -12.5 4.2998 -16.9004c4.2002 -0.799805 8.10059 -1.7998 11.5 -2.69922c2.2002 3.19922 5.60059 7 10.5 11.1992z\nM58.0996 188.1c8.7002 -5 18.1006 -16.7998 19 -34.1992c0.900391 -14.7002 -0.899414 -49.9004 -3.39941 -75.9004c12.5 -4.7998 26.7002 -6.40039 39.7002 -6.7998c2 4.09961 3.89941 8.5 5.5 13.0996c0.699219 1.90039 19.5996 51 26.3994 62.2002\nc-5.39941 -39 -17.5 -73.7002 -23.5 -89.5996c3.40039 0.399414 7.2998 0.699219 11.7002 0.699219h117c4.40039 0 8.2002 -0.199219 11.7002 -0.699219c-6 15.8994 -18 50.5996 -23.5 89.5996c6.7998 -11.0996 25.7002 -60.2002 26.3994 -62.2002\nc1.60059 -4.59961 3.5 -9 5.5 -13.0996c13 0.399414 27.3008 2 39.7002 6.7998c-2.5 26 -4.2998 61.2998 -3.39941 75.9004c1.09961 17.5 10.3994 29.1992 19.0996 34.1992c2.7002 1.5 5.5 3.10059 8.40039 4.60059c14.7998 8 30.1992 16.2998 30.1992 30.5\nc0 11.0996 -4.2998 14.5 -8.89941 18.2002l-0.5 0.399414c-0.700195 0.600586 -1.5 1.2002 -2.2002 1.7998c0.900391 -7.19922 1.90039 -13.2998 2.7002 -14.8994c0 0 -12.1006 15 -15.7002 44.2998c-1.40039 11.5 1.09961 34.2002 5.09961 43\nc-0.199219 -4.90039 0 -9.7998 0.300781 -14.4004c0.399414 0.900391 0.799805 1.60059 1.2998 2.2002c3.2998 4 11.8994 17.5 9.39941 26.6006c-1 3.39941 -3.19922 6 -6.69922 7.7998c-3.80078 1.89941 -8.80078 2.89941 -15.1006 2.89941\nc-12.2998 0 -25.8994 -3.7998 -32.8994 -6c-25.1006 -7.89941 -55.4004 -30.8994 -64.1006 -37.6992c-0.200195 -0.200195 -0.399414 -0.300781 -0.399414 -0.300781l-5.60059 -3.89941l3.5 5.7998c0.200195 0.299805 19.1006 31.4004 53.1006 46.5\nc-2 2.90039 -7.40039 8.2002 -21.6006 15.0996c-21.3994 10.5 -46.3994 15.8008 -74.2998 15.8008c-27.7998 0 -52.9004 -5.30078 -74.2998 -15.8008c-14.2002 -7 -19.6006 -12.1992 -21.6006 -15.0996c34.1006 -15.0996 53 -46.2002 53.2002 -46.5l3.5 -5.7998\nl-5.59961 3.89941s-0.200195 0.100586 -0.400391 0.300781c-8.7002 6.7998 -39 29.6992 -64.0996 37.6992c-7 2.30078 -20.6006 6 -32.9004 6c-6.2998 0 -11.2998 -1 -15.0996 -2.89941c-3.60059 -1.7998 -5.7998 -4.2998 -6.7002 -7.7998\nc-2.40039 -9.10059 6.2002 -22.6006 9.40039 -26.6006c0.5 -0.599609 0.899414 -1.39941 1.2998 -2.2002c0.299805 4.60059 0.5 9.5 0.299805 14.4004c4 -8.7002 6.5 -31.5 5.09961 -43c-3.59961 -29.2998 -15.6992 -44.2998 -15.6992 -44.2998\nc0.799805 1.59961 1.7998 7.7002 2.69922 14.8994c-0.799805 -0.599609 -1.5 -1.19922 -2.19922 -1.7998l-0.5 -0.399414c-4.60059 -3.60059 -8.90039 -7.10059 -8.90039 -18.2002c0 -14.2002 15.2998 -22.5 30.2002 -30.5c2.7998 -1.5 5.7002 -3 8.39941 -4.60059z\nM34.7998 43.4004c11.9004 -19.7002 35.5 -29.4004 58.2002 -29.5c-4.5 13.2998 -3.09961 24 4.09961 31.7998l1.40039 1.39941c1.7998 2.40039 4.2998 5.80078 7 10c-27.2002 1.10059 -63.5 11 -74.4004 45.4004c-5 -5 -8.39941 -39.0996 3.7002 -59.0996zM80.5 -0.0996094\nc6.5 -9.5 16.5 -19.6006 30.9004 -25.5c-4.90039 7.19922 -8.80078 15.0996 -12.3008 23.0996c-6.39941 0.5 -12.5996 1.2998 -18.5996 2.40039zM192 -50.2002c60.5996 0.100586 78.2998 45.9004 84.9004 64.7002c3.59961 10.5 3.2998 18.2998 -0.900391 23.0996\nc-2.7998 3.30078 -9.5 7.2002 -24.5996 7.2002h-118.801c-15.0996 0 -21.6992 -3.89941 -24.5996 -7.2002c-4.2998 -4.89941 -4.59961 -12.5996 -0.900391 -23.0996c6.60059 -18.9004 24.3008 -64.5996 84.9004 -64.7002zM272.6 -25.5996\nc14.4004 5.89941 24.4004 16 30.9004 25.5c-6 -1.10059 -12.2002 -1.90039 -18.5996 -2.40039c-3.5 -8 -7.40039 -15.9004 -12.3008 -23.0996zM349.2 43.4004c12.2002 19.8994 8.7998 54 3.7998 59c-10.9004 -34.4004 -47.2002 -44.2002 -74.4004 -45.4004\nc2.7002 -4.2002 5.2002 -7.59961 7 -10c0.5 -0.5 1 -1 1.40039 -1.5c7.2002 -7.7002 8.59961 -18.5 4.09961 -31.7998c22.5 0.399414 46.1006 10 58.1006 29.7002zM191.9 260.3c-12.7002 0.200195 -27.2002 17.7998 -27.2002 17.7998\nc9.89941 -6 18.7998 -8.09961 27.2998 -8.2998c8.5 0.200195 17.4004 2.2998 27.2998 8.2998c0 0 -14.5 -17.6992 -27.2002 -17.7998h-0.199219zM253.6 29.5996c5.40039 -0.0996094 8.10059 -1.69922 9.40039 -3c1.90039 -1.89941 2.2002 -4.59961 0.900391 -7.89941\nc-3.5 -8.90039 -11.4004 -16.1006 -13.7002 -18.1006c-3.10059 -2.59961 -7.40039 -4.19922 -11.7998 -4.19922c-4.40039 0 -8.30078 1.59961 -11 4.5c-7.5 8 -12 16.6992 -13 19.2998c-0.600586 1.5 -1.30078 4.39941 0.899414 6.7002\nc1.7002 1.7998 4.7002 2.69922 8.90039 2.69922h29.3994z\" />\n    <glyph glyph-name=\"gulp\" unicode=\"&#xf3ae;\" horiz-adv-x=\"256\" \nd=\"M209.8 56.9004l-14.0996 -24.6006l-4.60059 -80.2002c0 -8.89941 -28.2998 -16.0996 -63.0996 -16.0996s-63.0996 7.2002 -63.0996 16.0996l-5.80078 79.4004l-14.8994 25.4004c41.2002 -17.3008 126 -16.7002 165.6 0zM13.7998 310.2\nc30.7002 -17 197.8 -16.9004 228.3 0.200195l-14.7998 -136.801c-4.7998 -4.19922 -11.5996 -10.1992 -16.5996 -14.0996c-1.60059 -1.2002 -6 -4.7002 -8 -4.7002c-1.2998 0 -2.2002 0.5 -2.2002 1.7998c0.0996094 1 3.40039 4.5 5 6.40039\nc4.90039 5.7002 13.7998 16 13.7998 23.4004c0 7 -10.7002 14.0996 -25.7002 0.199219c-1.59961 -1.5 -3.09961 -3 -4.5 -4.5c0.400391 1.10059 1.10059 5.10059 1.10059 6.2002c0 2.7998 -1.40039 4 -4.2002 4c-1 0 -1.90039 -0.599609 -2.7002 -1.59961\nc-2.59961 -3.10059 -3.89941 -7.5 -5.2998 -11.2998c-0.5 -1.80078 -1.09961 -3.60059 -1.7002 -5.5c-0.399414 -0.200195 -0.700195 -0.300781 -0.899414 -0.600586c-3.80078 -3.89941 -17.7002 -17 -23.1006 -17c-2.2998 0 -1.59961 3.60059 -1 5.7998\nc1 3.40039 6.7998 17.7002 8.7002 22.3008c4.59961 11.0996 8 19.7998 13.2002 31.8994c3.89941 9.2002 3.7998 8.60059 4.5 10.5c0.700195 2.10059 0.700195 4.90039 -1 6.2002c-1 0.700195 -2 1.09961 -3.2002 1.09961c-2.40039 0 -4.7998 -1.39941 -6.09961 -4.69922\nc-25.5 -64.4004 -25.2002 -63.3008 -26.4004 -68.2002c-2 -1.7002 -4.40039 -3.40039 -6.7998 -4.5c-3.10059 -1.40039 -6.7998 -2.2002 -6.7998 1.2002c0 3.69922 1.39941 8.19922 2.69922 11.6992c2.2002 6.10059 4.90039 11.1006 6.90039 16.7002\nc0.900391 2.40039 1.2998 4.7002 -0.400391 6.90039c-0.799805 1 -1.89941 1.5 -3.19922 1.5c-2.60059 0 -4.10059 -2.60059 -5.2002 -5.10059c-0.700195 -1.5 -1.2998 -3.09961 -1.7998 -4.7998c-1.2002 -4 -3.60059 -8.7002 -5.60059 -12.2998\nc-2.7998 -5 -6.5 -10.0996 -11.0996 -13.5c-2.2002 -1.59961 -4.5 -2.40039 -6.90039 -2.40039c-3.5 0 -2.39941 5.7002 -1.5 9c2.2002 7.80078 5.5 13.3008 9.2998 20.8008c1.30078 2.69922 2.30078 5.39941 -0.299805 7.19922c-0.5 0.300781 -1 0.5 -1.59961 0.700195\nc-3.40039 0.900391 -6 -1.09961 -7.60059 -4.5c-3.09961 -6.2998 -5.39941 -11.7002 -7.09961 -16.2002c-3.2998 -8.89941 -6.90039 -18.2998 -4.59961 -23.7998c1.5 -3.7002 4.5 -5.09961 8.59961 -5.09961c9.7998 0 17.7998 6.7002 22.4004 14.8994\nc-4.30078 -19.7998 8.19922 -17.2998 20 -8.09961c0.0996094 -0.400391 0.0996094 -0.799805 0.199219 -1.2002c1.5 -6.7002 8.7002 -6.7002 14.5 -4.09961c3.5 1.59961 8.2002 4.5 14.4004 10.5c0.200195 0.299805 0.799805 1.39941 -0.799805 -2.2998\nc-7.2002 -16.2002 -13.5 -28.2002 -15 -34.3008c-0.200195 -0.899414 -0.299805 -1.7998 -0.299805 -2.69922c0 -1.80078 0.399414 -3.10059 1.2998 -3.7002c1.59961 -1.2002 4.2002 -1.2998 6.09961 -0.299805c1.7998 1 3.10059 2.59961 4 4.5\nc1 2.19922 0.200195 0.699219 5.2002 14c5 13.3994 2.90039 7.7998 9.09961 22c1.90039 4.2998 4.2002 9.5 8.5 15.5c2.5 3.39941 5.5 7 8.7002 9.69922c5.7002 4.7002 11.7002 5.40039 11.7002 2.5c0 -2.19922 -3.2998 -6.39941 -4.7002 -8.09961\nc-5.2998 -6.7002 -14.3994 -16.2998 -14.3994 -21.5c0 -9.5 12 -8 17.3994 -5.7002c7.2998 3.2002 13.9004 9.60059 19.6006 14.7998l-10.9004 -94.5996c-1.90039 -4.90039 -39.0996 -17.0996 -88.2002 -17.0996c-49 0 -86.2002 12.0996 -88.2002 17.0996l-7.59961 79.5996\nc2.09961 -1.5 4.2998 -2.39941 7.7002 -2.39941c7.39941 0 16.0996 6.7002 21.5 11.7998c2.2998 2.2002 4.39941 4.40039 6.39941 6.59961c-1 -3 -7.09961 -22 -7.2998 -25.1992c-0.0996094 -1 -0.200195 -4.90039 0.799805 -6.30078\nc0.5 -0.799805 1.40039 -1.19922 2.60059 -1.19922c2.89941 0 5.59961 4.69922 6.2998 7.5c0 0 1.7998 6.2998 7.59961 25.7998c6.30078 21.0996 10 24.5 10 34.7002c0 5.59961 -7.2998 6.7998 -9.89941 0l-5.2002 -15.5c-2.2002 -4.5 -8 -11.5 -12.5 -16\nc-3.5 -3.5 -10.7998 -10.1006 -15.7998 -10.1006c-2.40039 0 -3.90039 1.40039 -4.90039 3.60059c-2.2998 5.2998 -0.899414 14.2998 0.600586 19.8994c2.59961 9.7002 6.89941 19.4004 12 28.2002c4.19922 7.2998 10.1992 15.7002 17.0996 20.7002\nc6.59961 4.7998 12.7998 4.5 16.9004 -2.7998c1.5 -2.7002 3.7998 -7.30078 6.7998 -7.30078c2.5 0 5.7002 2.60059 4.5 9.10059c-0.5 2.5 -4.90039 8.7998 -10.1006 11.7998c-6 3.59961 -12.3994 3.59961 -18.6992 0.900391\nc-19.2002 -8.2002 -34.1006 -35.2002 -40 -55.2002zM243.5 318.7c0 -21 -231.2 -21 -231.2 0c0 8.7998 51.7998 15.8994 115.601 15.8994c9 0 17.7998 -0.0996094 26.2998 -0.399414l12.5996 48.7002l61.2998 64.5c1.40039 1.39941 5.80078 0.199219 9.90039 -3.5\nc4.09961 -3.7002 6.59961 -7.90039 5.2998 -9.30078l-0.0996094 -0.0996094l-57.2998 -60.5l-10 -40.7002c39.8994 -2.59961 67.5996 -8.09961 67.5996 -14.5996zM174.1 314.1c0 0.800781 -0.899414 1.5 -2.5 2.10059l-0.199219 -0.799805\nc0 -1.30078 -5 -2.40039 -11.1006 -2.40039c-6.09961 0 -11.0996 1.09961 -11.0996 2.40039c0 0.0996094 0 0.199219 0.0996094 0.299805l0.200195 0.700195c-1.7998 -0.600586 -3 -1.40039 -3 -2.30078c0 -2.09961 6.2002 -3.69922 13.7002 -3.69922\nc7.7002 -0.100586 13.8994 1.59961 13.8994 3.69922z\" />\n    <glyph glyph-name=\"hacker-news-square\" unicode=\"&#xf3af;\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM21.2002 218.8h-0.200195c0.0996094 0.100586 0.200195 0.299805 0.299805 0.400391c0 -0.100586 0 -0.299805 -0.0996094 -0.400391z\nM239.2 164.9l80.7998 155.1h-34.7998c-54.7998 -101.2 -48.2998 -98.5996 -60.6006 -125.6c-10.0996 24.3994 -6.7998 27.2998 -59.2998 125.6h-37.2998l79.7998 -153.3v-102.7h31.4004v100.9z\" />\n    <glyph glyph-name=\"hire-a-helper\" unicode=\"&#xf3b0;\" horiz-adv-x=\"512\" \nd=\"M443.1 448c3.90039 -36.4004 32.5 -65.7998 68.9004 -71.7002v-370.5c-35.4004 -4 -64.9004 -33.3994 -67.9004 -69.7998h-372.199c-5.90039 36.4004 -34.5 63.9004 -71.9004 68.7998v371.5c37.4004 3.90039 67.9004 34.4004 71.9004 71.7002h371.199zM406.1 43.0996\nc7.80078 0 5.80078 10.8008 0 10.8008c-10.2998 3.39941 -13.5 3.59961 -21.6992 13.7998c-7.80078 12.8994 -7.90039 44.3994 -7.90039 127.8v101.2c0 22.0996 12.2002 28.2998 28.5996 32.3994c8.90039 2.2002 3.90039 11.8008 -1 11.8008\nc-36.5 0 -20.5996 -2 -57.0996 -2c-32.7002 0 -16.5 2 -49.2002 2c-3.2998 0 -8.5 -8.30078 -1 -10.8008c4.90039 -1.59961 27.6006 -3.69922 27.6006 -39.2998c0 -45.5996 0.199219 -55.7998 -1 -68.7998c0 -1.2998 -2.30078 -12.7998 -12.8008 -12.7998h-109.199\nc-10.5 0 -12.8008 11.5 -12.8008 12.7998c-1.19922 13 -1 23.2002 -1 68.7998c0 35.6006 22.7002 37.7002 27.6006 39.2998c7.5 2.5 2.2998 10.8008 -1 10.8008c-32.7002 0 -16.5 -2 -49.2002 -2c-36.5 0 -20.5996 2 -57.0996 2c-5 0 -9.80078 -9.60059 -1 -11.8008\nc16.3994 -4.09961 28.5996 -10.1992 28.5996 -32.3994v-101.2c0 -83.4004 -0.200195 -114.9 -7.90039 -127.8c-8.19922 -10.2998 -11.5 -10.4004 -21.6992 -13.7998c-5.80078 0 -7.90039 -10.8008 0 -10.8008c36.2998 0 18.7998 2 55.0996 2c35.7998 0 21 -2 56.0996 -2\nc6 0 4.90039 8.2002 0 9.80078c-22.7998 7.59961 -22.8994 10.2998 -24.5996 12.7998c-10.4004 15.5996 -5.90039 83 -5.90039 113c0 5.2998 6.40039 12.7998 13.8008 12.7998h111.199c7.40039 0 13.8008 -7.5 13.8008 -12.7998c0 -30 4.5 -97.4004 -5.90039 -113\nc-1.7002 -2.60059 -1.7998 -5.2002 -24.5996 -12.7998c-4.90039 -1.60059 -5.90039 -9.80078 0 -9.80078c35.0996 0 20.2998 2 56.0996 2c36.2998 0 18.7998 -2 55.0996 -2z\" />\n    <glyph glyph-name=\"hotjar\" unicode=\"&#xf3b1;\" \nd=\"M414.9 286.5c30 -53 41.7998 -121.6 26.2998 -180.9c-14.7002 -56.6992 -68.2998 -120.3 -148.8 -145.6c54.5 76.9004 43.8994 200.1 -27.1006 215.5c54.2002 -93.9004 -53.7002 -180.3 -110.8 -93.9004c-2.5 -7.19922 -25.0996 -74.5 4.09961 -129.6\nc-61.0996 9.09961 -117.8 33.5 -144.6 93.4004c-35 78.1992 -2.7002 149.8 79 204.899c129.2 87.2998 28.0996 197.7 28.0996 197.7s219.101 -29 293.801 -161.5z\" />\n    <glyph glyph-name=\"hubspot\" unicode=\"&#xf3b2;\" horiz-adv-x=\"512\" \nd=\"M267.4 236.4l-163.2 114.699c-7.90039 -4.69922 -17 -7.59961 -26.7998 -7.59961c-28.8008 0 -52.2002 23.4004 -52.2002 52.2998c0 28.7998 23.3994 52.2002 52.2002 52.2002c28.8994 0 52.3994 -23.4004 52.3994 -52.2002c0 -4.7998 -0.799805 -9.39941 -2 -13.7998\nc51.4004 -39.0996 141.3 -103.9 168.9 -124.8c13.0996 6.89941 27.5 11.5 42.7002 13.5996v61.2002c-17.5 7.40039 -28.2002 23.7998 -28.2002 42.9004c0 26.0996 20.5996 47.8994 46.7002 47.8994c26.0996 0 47 -21.7998 47 -47.8994\nc0 -19.1006 -10.7002 -35.5 -28.2002 -42.9004v-61.5996c62.5 -9.5 110.2 -63.5 110.2 -128.7c0 -71.9004 -58.1006 -130.2 -130 -130.2c-29.9004 0 -57.3008 10 -79.3008 26.9004l-50 -50.2002c1.30078 -3.90039 1.90039 -7.90039 1.90039 -12.1006\nc0 -10.6992 -4.2002 -20.8994 -11.7998 -28.5c-7.7002 -7.69922 -17.7998 -11.5996 -28.6006 -11.5996c-10.6992 0 -20.8994 4 -28.5 11.5996c-7.59961 7.60059 -11.7998 17.7002 -11.7998 28.5c0 10.8008 4.2002 21 11.7998 28.6006\nc7.60059 7.59961 17.7002 11.7998 28.5 11.7998c4.90039 0 9.60059 -0.900391 14 -2.5l49.5 49.7998c-16.2998 21.7002 -26 48.7002 -26 78c0 37.2998 15.7002 70.9004 40.8008 94.6006zM356.9 72.7998c38.0996 0 69 30.9004 69 69c0 38.1006 -30.9004 69 -69 69\nc-38.1006 0 -69 -30.8994 -69 -69c0 -38.0996 30.8994 -69 69 -69z\" />\n    <glyph glyph-name=\"itunes\" unicode=\"&#xf3b4;\" \nd=\"M223.6 367.7c94.5 0 171.2 -76.7002 171.2 -171.3c0 -94.5 -76.5996 -171.2 -171.2 -171.2c-94.5996 0 -171.1 76.7998 -171.1 171.3s76.5 171.2 171.1 171.2zM303 127.7c1.40039 6.2002 0.900391 -3 1 167.6c0 5.7002 -3.2998 9.10059 -9 8.7002\nc-1.7998 0 -14.0996 -2.40039 -115.1 -21.4004c-0.900391 0 -4.60059 -1 -6.7002 -2.69922c-2 -1.60059 -3.10059 -3.80078 -3.5 -6.40039c-1.7002 -6.7002 2.39941 -128 -2.60059 -133.7c-2.09961 -2.5 -4.69922 -3.2002 -7.69922 -3.7002\nc-17.7002 -3.19922 -29.6006 -4.7998 -38 -12.7998c-14.5 -14.2002 -7 -38.8994 14.3994 -42.8994c8 -1.40039 23.1006 0.599609 31.4004 5.19922c7.2998 3.80078 12.7998 10.6006 14.8994 19.6006c1.7002 7.7002 1.2002 2.39941 1.2002 118.5\nc0 5.7002 1.7002 7.2002 6.7002 8.2998c0 0 87.9004 16.4004 91.9004 17.0996c5.69922 1 8.39941 -0.5 8.39941 -6.09961c0 -78.7998 1 -77.2002 -2.2002 -80.7998c-2.09961 -2.5 -4.69922 -3.2002 -7.69922 -3.7002c-17.7002 -3.2002 -29.6006 -4.7998 -38 -12.7998\nc-10.6006 -10.4004 -10.4004 -26.7998 1.39941 -36.7998c9.7002 -7.80078 19.7998 -7.2002 31.9004 -5c13.7998 2.59961 24.0996 10.1992 27.2998 23.7998zM345.2 416c56.8994 0 102.8 -45.9004 102.8 -102.8v-242.4c0 -56.8994 -45.7998 -102.8 -102.8 -102.8h-242.4\nc-56.8994 0 -102.8 45.9004 -102.8 102.8v242.4c0 56.8994 45.9004 102.8 102.8 102.8h242.4zM223.6 4c106.301 0 192.5 86.2002 192.5 192.5s-86.1992 192.5 -192.5 192.5c-106.3 0 -192.5 -86.2002 -192.5 -192.5s86.2002 -192.5 192.5 -192.5z\" />\n    <glyph glyph-name=\"itunes-note\" unicode=\"&#xf3b5;\" horiz-adv-x=\"384\" \nd=\"M381.9 59.7998c-6.40039 -27.3994 -27.2002 -42.7998 -55.1006 -48c-24.5 -4.5 -44.8994 -5.59961 -64.5 10.2002c-23.8994 20.0996 -24.2002 53.4004 -2.7002 74.4004c17 16.1992 40.9004 19.5 76.8008 25.7998c6 1.09961 11.1992 2.5 15.5996 7.39941\nc6.40039 7.2002 4.40039 4.10059 4.40039 163.2c0 11.2002 -5.5 14.2998 -17 12.2998c-8.2002 -1.39941 -185.7 -34.5996 -185.7 -34.5996c-10.2002 -2.2002 -13.4004 -5.2002 -13.4004 -16.7002c0 -234.7 1.10059 -223.899 -2.5 -239.5\nc-4.2002 -18.2002 -15.3994 -31.8994 -30.2002 -39.5c-16.7998 -9.2998 -47.1992 -13.3994 -63.3994 -10.3994c-43.2002 8.09961 -58.4004 58 -29.1006 86.5996c17 16.2002 40.9004 19.5 76.8008 25.7998c6 1.10059 11.1992 2.5 15.5996 7.40039\nc10.0996 11.5 1.7998 256.6 5.2002 270.2c0.799805 5.19922 3 9.59961 7.09961 12.8994c4.2002 3.5 11.7998 5.5 13.4004 5.5c204 38.2002 228.899 43.1006 232.399 43.1006c11.5 0.799805 18.1006 -6 18.1006 -17.6006c0.200195 -344.5 1.09961 -326 -1.7998 -338.5z\" />\n    <glyph glyph-name=\"jenkins\" unicode=\"&#xf3b6;\" horiz-adv-x=\"512\" \nd=\"M487.1 23c1.5 -11.9004 -5.2998 -28.2998 -8.69922 -39.7002c-4.90039 -16.2998 -9.7002 -31.8994 -14.6006 -47.2002h-422c-0.700195 1.90039 -1.39941 4 -2.09961 6c-4.60059 14.2002 -12.6006 31.7002 -14.7002 45.8008\nc-3.09961 20.8994 16.5996 22.0996 29.2002 31.0996c19.5 14 34.7998 21.7998 55.8994 34.2998c6.30078 3.7998 25.1006 13.2002 27.3008 17.6006c4.2998 8.69922 -7.30078 20.8994 -10.4004 27.6992c-4.90039 10.7002 -7.5 19.8008 -8.2002 30.4004\nc-17.7002 2.7998 -31.0996 13.2998 -39.2002 25.2002c-13.3994 19.7002 -22.6992 56 -11.0996 83.7002c0.900391 2.19922 5.40039 6.5 6.09961 9.7998c1.40039 6.59961 -2.5 15.3994 -2.69922 22.3994c-1.2002 36 6.09961 67 30.2998 77.8008\nc9.7998 39.0996 45 52.1992 78.0996 71.5996c12.2998 7.2998 26 11.9004 40.1006 17.0996c50.5 18.7002 128.1 15.1006 170.1 -16.5996c17.7998 -13.5 46.2002 -41.9004 56.4004 -62.5c26.8994 -54.2998 25 -145.1 6.19922 -211.2\nc-2.5 -8.89941 -6.19922 -21.8994 -11.2998 -32.5996c-3.59961 -7.40039 -14.7002 -22.2998 -13.2998 -28.9004c1.40039 -6.7998 25.2998 -24.8994 30.4004 -29.8994c9.19922 -8.80078 26.7998 -20.7002 28.1992 -31.9004zM205.9 414.3\nc-33.2002 -9.39941 -75.7002 -33.5 -89.3008 -63.3994c10.6006 1.5 17.9004 6.7998 28.3008 7.5c3.89941 0.299805 9.09961 -1.60059 13.5996 -0.5c9 2.2998 16.5996 22.5 23.4004 30c6.59961 7.39941 14.5996 10.5 20 17.1992c3.5 1.7002 8.69922 1.60059 8.89941 6.80078\nc-1.5 1.69922 -3.09961 2.89941 -4.89941 2.39941zM101.1 320.7c-14.6992 -16.1006 -11.5996 -46.2998 -9.7998 -67.7998c26.5 16.6992 61.6006 -1.30078 61.2998 -29.6006c12.6006 0.299805 4.7002 15.7998 2.40039 25.7002c-7.5 32.5996 12.5996 67.9004 0.900391 97.5996\nc-22.7002 -1.7998 -41.3008 -11 -54.8008 -25.8994zM137.8 120.5c4.90039 -20 15.7002 -46 26.2998 -61.4004c13.6006 -19.3994 40.1006 -22.2998 68.7002 -24.1992c5.10059 11 23.9004 10.0996 36.2002 7.19922c-14.7002 5.80078 -28.4004 19.9004 -39.7002 32.4004\nc-13 14.2998 -26.0996 29.7002 -26.7998 48.4004c24.5 -34 44.7998 -63.8008 89.5 -78.8008c33.7998 -11.2998 73.2002 5.2002 99.2002 23.4004c10.7998 7.59961 17.2002 19.5996 24.8994 30.5996c28.7002 41.2002 42 100.101 39.1006 157.101\nc-1.2002 23.5 -1.10059 47 -9 62.7998c-8.2998 16.5996 -36.2002 31.2998 -52.5 16.4004c-3 16.0996 13.5996 26.0996 33.0996 20.2998c-13.8994 18 -28.5996 39.5996 -48.2998 50.7002c-34.4004 19.5 -92.7002 34.0996 -129.3 15.7998\nc-29.6006 -14.7002 -69.5 -39.1006 -83.1006 -70c12.7002 -29.7998 -3.7998 -57.1006 -4.7998 -87.4004c-0.599609 -16.0996 7.60059 -30.2002 8.2002 -47.7002c-4.40039 -7.19922 -17.7002 -8.09961 -26.9004 -7.59961c-3.09961 15.5 -8.5 32.9004 -24.5 34.7002\nc-22.5 2.39941 -39.0996 -16.2998 -40.0996 -35.7998c-1.2002 -23 17.7002 -61 44.4004 -58.4004c10.2998 1.09961 12.7998 11.4004 24.0996 11.2998c6.09961 -12.2002 -9.40039 -16 -11 -24.7002c-0.400391 -2.19922 1.2998 -11 2.2998 -15.0996zM359.8 -3.59961\nc-1.59961 -4.40039 0.299805 -10.4004 -0.599609 -16.5c14.8994 -4.2002 31.8994 -6.40039 50.7002 -7c3.69922 4.7998 4.89941 13.7998 4.5 22.7998c-0.600586 10.7998 -3.40039 33.0996 -10.1006 37c-14.0996 8.2002 -39 -16.5 -49.5996 -20.2998\nc1.2002 -3.40039 3.09961 -6 3.2002 -10.2002c6.2998 1.5 13.8994 0.5 19.2998 -2.2002c-6.2998 -0.700195 -13.2998 -0.599609 -17.4004 -3.59961zM342.6 16.4004c7.60059 5.5 14.3008 12 22.2002 17.0996c-18.2002 -1.59961 -41 -12.9004 -59 -4.90039\nc-0.0996094 -0.899414 -1.2998 -0.599609 -1.5 -1.39941c12.2998 -9.60059 21.5 -11.6006 38.2998 -10.7998zM330.5 -16.7998c26.9004 -8.40039 22.2002 36.7998 -2.7998 20.2002c-0.700195 -8.2002 1.2002 -10.8008 2.7998 -20.2002zM226 9.40039\nc0 6.19922 3.59961 12 2.7998 16.3994c-13.7998 2.40039 -31.8994 0.799805 -41.2998 7.2998c-9.59961 -9.69922 26.9004 -23 38.5 -23.6992zM57.7002 -49.0996v-0.100586h180.7c-0.800781 2.5 -1.5 4.90039 -2.2002 7.2002c-4.7998 15.2998 -7.5 26.7002 -8.7002 35.5\nc-19.2002 9.2002 -39.7002 18.5 -56.2002 30.2002c-3 2.2002 -23.3994 28.7002 -26.2002 27.5996c-36.8994 -14.5996 -71.3994 -39.7002 -102.199 -63.5c5.59961 -11.7998 10.5 -24.2002 14.7998 -36.8994zM298.3 -54.7998h-0.799805\nc0.299805 0.200195 0.5 0.399414 0.799805 0.5v-0.5zM305.8 -49.0996h9.60059c-1 1.5 -2.10059 2.89941 -3.2002 4.2998c-2.10059 -1.5 -4.2998 -2.90039 -6.40039 -4.2998zM320.9 -24.4004c0.0996094 3.60059 0.299805 7.2002 0.399414 10.6006\nc-6.5 3.2002 -14 5.5 -23.5 5.89941c6.5 3.30078 15.9004 3.2002 21.7998 7.10059c0.100586 1.5 0.100586 2.89941 0.200195 4.2998c-10.7998 0.900391 -14.7998 5.59961 -21.8994 9.5c-11.6006 6.40039 -29 13.2002 -43.9004 16.0996\nc-18.5 3.60059 -16.7998 -25.1992 -16 -42.3994c0.700195 -13.6006 7.7002 -28 10.7998 -37c1.5 -4.2002 1.7998 -8.7002 5.40039 -9.5c6.39941 -1.5 27.3994 6.89941 33.3994 10.2002c12.7002 6.89941 22.5 17.8994 33.3008 25.1992zM374.3 -49.0996l0.600586 12.5996\nc-11.2002 -0.700195 -17.5 10.2002 -25.4004 11c-6.90039 0.700195 -12.7002 -7.90039 -21.7002 -4.2002c-2 -2.2002 -3.89941 -4.7002 -6 -6.89941c3.2002 -3.90039 6.10059 -8.10059 8.90039 -12.5h17.3994c0.200195 3.19922 2.80078 5.7998 6.10059 5.7998\ns6 -2.60059 6.09961 -5.7998h14zM383 -49.0996h36.2998c-6.7002 10.1992 -20.0996 18.7998 -35.7002 11.5c-0.199219 -3.7002 -0.399414 -7.5 -0.599609 -11.5zM466.4 -12.0996c1.19922 6.19922 4.59961 19.5996 3.7998 25.0996\nc-1.40039 9.7998 -14.6006 17.0996 -21.4004 23.0996c-12.3994 11.1006 -20.2002 21 -33.2002 31.4004c-5.19922 -7.7998 -16.5 -13 -20.7998 -19.2998c30.7002 14.8994 36.2998 -55.7998 24.2002 -78.5c1.90039 -6.7998 8.2998 -9.40039 10.9004 -15.5\nc-0.700195 -1.10059 -1.30078 -2.2002 -1.90039 -3.2998h27.9004c0.199219 0 0.399414 0 0.599609 -0.100586c4.09961 13.1006 7.59961 25.9004 9.90039 37.1006zM222.2 317.5c5.39941 14.9004 27.2002 34.7002 45 32c7.7002 -1.2002 18 -8.2002 12.2002 -17.7002\nc-30.2002 7 -45.2002 -12.5996 -54.4004 -33.0996c-8.09961 2 -4.90039 13.0996 -2.7998 18.7998zM406.3 254.4c8.2002 3.59961 22.4004 0.699219 29.6006 5.2998c-4.2002 11.5 -10.3008 21.3994 -9.30078 37.7002c0.5 0 1 0 1.40039 -0.100586\nc6.7998 -14.2002 12.7002 -29.2002 21.4004 -41.7002c-5.7002 -13.5 -43.6006 -25.3994 -43.1006 -1.19922zM309.5 251.7c-6.7998 10.8994 -19 32.5 -14.5 45.2998c6.5 -11.9004 8.59961 -24.4004 17.7998 -33.2998c4.10059 -4 12.2002 -9 8.2002 -20.2002\nc-0.900391 -2.7002 -7.7998 -8.59961 -11.7002 -9.7002c-14.3994 -4.2998 -47.8994 -0.899414 -36.5996 17.1006c11.8994 -0.700195 27.8994 -7.80078 36.7998 0.799805zM336.8 181.7c3.7998 -6.60059 1.40039 -18.7002 12.1006 -20.6006\nc20.1992 -3.39941 43.5996 12.3008 58.0996 17.8008c9 15.1992 -0.799805 20.6992 -8.90039 30.5c-16.5996 20 -38.7998 44.7998 -38 74.6992c6.7002 4.90039 7.30078 -7.39941 8.2002 -9.69922c8.7002 -20.3008 30.4004 -46.2002 46.2998 -63.5\nc3.90039 -4.30078 10.3008 -8.40039 11 -11.2002c2.10059 -8.2002 -5.39941 -18 -4.5 -23.5c-21.6992 -13.9004 -45.7998 -29.1006 -81.3994 -25.6006c-7.40039 6.7002 -10.2998 21.4004 -2.90039 31.1006zM135.5 190.9c-6.7998 3.89941 -8.40039 21 -16.4004 21.3994\nc-11.3994 0.700195 -9.2998 -22.2002 -9.2998 -35.5c-7.7998 7.10059 -9.2002 29.1006 -3.5 40.2998c-6.59961 3.2002 -9.5 -3.59961 -13.0996 -5.89941c4.7002 34.0996 49.7998 15.7998 42.2998 -20.2998zM435.1 162.1c-10.0996 -19.1992 -24.3994 -40.3994 -54 -41\nc-0.599609 6.2002 -1.09961 15.6006 0 19.4004c22.7002 2.2002 36.6006 13.7002 54 21.5996zM293.2 149.7c18.8994 -9.90039 53.5996 -11 79.2998 -10.2002c1.40039 -5.59961 1.2998 -12.5996 1.40039 -19.4004c-33 -1.7998 -72 6.40039 -80.7002 29.6006zM385.4 103\nc-1.7002 -4.2998 -5.30078 -9.2998 -9.80078 -11.0996c-12.0996 -4.90039 -45.5996 -8.7002 -62.3994 0.299805c-10.7002 5.7002 -17.5 18.5 -23.4004 26c-2.7998 3.59961 -16.8994 12.8994 -0.200195 12.8994c13.1006 -32.6992 58 -29 95.8008 -28.0996z\" />\n    <glyph glyph-name=\"joget\" unicode=\"&#xf3b7;\" horiz-adv-x=\"496\" \nd=\"M378.1 403c116.601 -71.7998 152.9 -224.6 81 -341.2c-71.8994 -116.5 -224.6 -152.8 -341.199 -80.8994c-116.601 71.8994 -152.9 224.6 -81 341.199c46.8994 76 128.1 117.9 211.3 117.9c44.3994 0 89.3994 -11.9004 129.899 -37zM429.9 79.7998\nc5.2998 8.7002 9.89941 17.6006 13.8994 26.6006c-32.0996 -1.10059 -157.1 1.5 -208.8 -17.6006c-58.4004 -21.5 -36.9004 -53.3994 -31.2002 -67.0996c3.7998 -9.10059 14.7002 -28.7998 23.7002 -42.4004c6.7998 -0.599609 13.5996 -1 20.4004 -1\nc71.5996 0 141.6 36 182 101.5zM229.1 166.1c51 -1.2998 205.4 -4.39941 230.301 -4.89941c11.8994 81.7998 -24.5 166.6 -99.3008 212.7c-100.5 61.8994 -232.1 30.6992 -294 -69.8008c-28.5996 -46.3994 -37.2998 -99.3994 -28.5 -149.1\nc11 40.9004 49.7002 131.5 178.301 140.2c50.8994 4 41.5 -19.2002 23.5996 -29.7002c-17.7998 -10.5 -45.7002 -23.7998 -68.9004 -51.2002c-23.1992 -27.3994 3 -46.7998 58.5 -48.2002zM412.9 220.9c22.6992 -6 19.0996 -15.5 19.0996 -15.5l-46.5 -23.4004\nl-169.5 -1.59961s33.7998 10.7998 65.2998 31.2998c26 16.8994 49.7002 35.5996 67.5 35.5996c3.7002 0 7.2002 -0.899414 10.4004 -2.7002c18.5 -10.5996 -2.90039 -18.1992 -13.4004 -24.5996s-50.7002 -34.5 -50.7002 -34.5s1.40039 -7.59961 31.1006 8.2002\nc29.7002 15.8994 64 33.2002 86.7002 27.2002z\" />\n    <glyph glyph-name=\"js\" unicode=\"&#xf3b8;\" \nd=\"M0 416h448v-448h-448v448zM243.8 66.5996v143.7h-42.0996v-143.1c0 -21.1006 -8.7998 -26.5 -22.6006 -26.5c-14.5 0 -20.5 9.89941 -27.0996 21.5996l-34.2998 -20.7002c10 -21.0996 29.5 -38.5 63.2002 -38.5c37.2998 0 62.8994 19.9004 62.8994 63.5zM343.4 3.09961\nc39.8994 0 69.6992 20.8008 69.6992 58.6006c0 35.2002 -20.0996 50.8994 -55.8994 66.2002l-10.5 4.5c-18.1006 7.89941 -25.9004 13 -25.9004 25.5996c0 10.2002 7.7998 18 20.1006 18c12.0996 0 19.8994 -5.09961 27.0996 -18l32.7998 21\nc-13.7998 24.4004 -33 33.7002 -59.7998 33.7002c-37.5 0 -61.5996 -24 -61.5996 -55.6006c0 -34.2998 20.0996 -50.5996 50.5 -63.5l10.5 -4.5c19.2998 -8.5 30.6992 -13.5996 30.6992 -28c0 -12.0996 -11.1992 -20.7998 -28.5996 -20.7998\nc-20.7002 0 -32.5 10.9004 -41.5 25.6006l-34.2998 -19.8008c12.2998 -24.3994 37.5996 -43 76.7002 -43z\" />\n    <glyph glyph-name=\"js-square\" unicode=\"&#xf3b9;\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM243.8 66.5996v143.7h-42.0996v-143.1c0 -21.1006 -8.7998 -26.5 -22.6006 -26.5c-14.5 0 -20.5 9.89941 -27.0996 21.5996\nl-34.2998 -20.7002c10 -21.0996 29.5 -38.5 63.2002 -38.5c37.2998 0 62.8994 19.9004 62.8994 63.5zM343.4 3.09961c39.8994 0 69.6992 20.8008 69.6992 58.6006c0 35.2002 -20.0996 50.8994 -55.8994 66.2002l-10.5 4.5c-18.1006 7.89941 -25.9004 13 -25.9004 25.5996\nc0 10.2002 7.7998 18 20.1006 18c12.0996 0 19.8994 -5.09961 27.0996 -18l32.7998 21c-13.7998 24.4004 -33 33.7002 -59.7998 33.7002c-37.5 0 -61.5996 -24 -61.5996 -55.6006c0 -34.2998 20.0996 -50.5996 50.5 -63.5l10.5 -4.5\nc19.2998 -8.5 30.6992 -13.5996 30.6992 -28c0 -12.0996 -11.1992 -20.7998 -28.5996 -20.7998c-20.7002 0 -32.5 10.9004 -41.5 25.6006l-34.2998 -19.8008c12.2998 -24.3994 37.5996 -43 76.7002 -43z\" />\n    <glyph glyph-name=\"keycdn\" unicode=\"&#xf3ba;\" horiz-adv-x=\"512\" \nd=\"M63.7998 38.7002l60.5 59c32.1006 -42.7998 71.1006 -66 126.601 -67.4004c30.5 -0.700195 60.2998 7 86.3994 22.4004c5.10059 -5.2998 18.5 -19.5 20.9004 -22c-32.2002 -20.7002 -69.6006 -31.1006 -108.101 -30.2002\nc-43.2998 1.09961 -84.5996 16.7002 -117.699 44.4004c0.299805 0.599609 -38.2002 -37.5 -38.6006 -37.9004c9.5 -29.7998 -13.0996 -62.4004 -46.2998 -62.4004c-26.7998 0.100586 -47.5 21.7002 -47.5 48.5c0 34.3008 33.0996 56.6006 63.7998 45.6006zM418.7 291.1\nc19.0996 -31.2998 29.5996 -67.3994 28.7002 -104c-1.10059 -44.7998 -19 -87.5 -48.6006 -121c0.299805 -0.299805 23.7998 -25.1992 24.1006 -25.5c9.59961 1.30078 19.1992 -2 25.8994 -9.09961c11.2998 -12 10.9004 -30.9004 -1.09961 -42.4004\nc-12 -11.2998 -30.9004 -10.8994 -42.4004 1.10059c-6.7002 7 -9.39941 16.7998 -7.59961 26.2998c-24.9004 26.5996 -44.4004 47.2002 -44.4004 47.2002c42.7002 34.0996 63.2998 79.5996 64.4004 124.2c0.700195 28.8994 -7.2002 57.1992 -21.1006 82.1992zM104 394.9\nc6.7002 -7 9.40039 -16.8008 7.59961 -26.3008l45.9004 -48.0996c-4.7002 -3.7998 -13.2998 -10.4004 -22.7998 -21.2998c-25.4004 -28.5 -39.6006 -64.7998 -40.7002 -102.9c-0.700195 -28.8994 6.09961 -57.2002 20 -82.3994l-22 -21.5\nc-19.2998 31.5996 -28.9004 67.6992 -27.7998 104.699c1 44.6006 18.2998 87.6006 47.5 121.101l-25.2998 26.3994c-9.60059 -1.2998 -19.2002 2 -25.9004 9.10059c-11.2998 12 -10.9004 30.8994 1.09961 42.3994c11.9004 11.2002 30.6006 10.9004 42.4004 -1.19922z\nM464.9 440c26 0 47.0996 -22.4004 47.0996 -48.2998c0 -25.9004 -21.0996 -47.7002 -47.0996 -47.7002c-6.30078 -0.0996094 -14 1.09961 -15.9004 1.7998l-62.9004 -59.7002c-32.6992 43.6006 -76.6992 65.9004 -126.899 67.2002\nc-30.5 0.700195 -60.2998 -6.7998 -86.2002 -22.3994l-21.0996 22c32.1992 20.7998 69.5996 31.0996 108.1 30.1992c43.2998 -1.09961 84.5996 -16.6992 117.7 -44.5996l41.0996 38.5996c-1.5 4.7002 -2.2002 9.60059 -2.2002 14.5\nc-0.0996094 26.7002 22.3008 48.4004 48.3008 48.4004zM256.7 334.6c5.5 0 10.8994 -0.399414 16.3994 -1.09961c78.1006 -9.7998 133.4 -81.0996 123.801 -159.1c-9.80078 -78.1006 -81.1006 -133.4 -159.101 -123.801c-78.0996 9.80078 -133.399 81.1006 -123.8 159.2\nc9.2998 72.4004 70.0996 124.601 142.7 124.8zM197.7 215.2c0.599609 -22.7002 12.2002 -41.7998 32.3994 -52.2002l-11 -51.7002h73.7002l-11 51.7002c20.1006 10.9004 32.1006 29 32.4004 52.2002c-0.400391 32.7998 -25.7998 57.5 -58.2998 58.2998\nc-32.1006 -0.799805 -57.3008 -24.7998 -58.2002 -58.2998zM256 288z\" />\n    <glyph glyph-name=\"kickstarter\" unicode=\"&#xf3bb;\" \nd=\"M400 -32h-352c-26.4004 0 -48 21.5996 -48 48v352c0 26.4004 21.5996 48 48 48h352c26.4004 0 48 -21.5996 48 -48v-352c0 -26.4004 -21.5996 -48 -48 -48zM199.6 269.5c0 30.7002 -17.5996 45.0996 -39.6992 45.0996c-25.8008 0 -40 -19.7998 -40 -44.5v-154.8\nc0 -25.7998 13.6992 -45.5996 40.5 -45.5996c21.5 0 39.1992 14 39.1992 45.5996v41.7998l60.6006 -75.6992c12.2998 -14.9004 39 -16.8008 55.7998 0c14.5996 15.0996 14.7998 36.7998 4 50.3994l-49.0996 62.7998l40.5 58.7002c9.39941 13.5 9.5 34.5 -5.60059 49.1006\nc-16.3994 15.8994 -44.5996 17.2998 -61.3994 -7l-44.8008 -64.7002v38.7998z\" />\n    <glyph glyph-name=\"kickstarter-k\" unicode=\"&#xf3bc;\" horiz-adv-x=\"384\" \nd=\"M147.3 333.6v-70.5996l82.7998 118.2c31.2002 44.3994 83.3008 41.7998 113.601 12.7998c27.8994 -26.7002 27.7998 -65.0996 10.3994 -89.7998l-74.8994 -107.4l90.7998 -114.8c19.9004 -24.7998 19.5996 -64.5996 -7.40039 -92.2002\nc-31.0996 -30.7002 -80.5 -27.2002 -103.199 0l-112.101 138.3v-76.5c0 -57.7998 -32.5996 -83.3994 -72.3994 -83.3994c-49.6006 0 -74.9004 36.0996 -74.9004 83.3994v283c0 45.2002 26.2002 81.4004 73.9004 81.4004c40.8994 0 73.3994 -26.2002 73.3994 -82.4004z\" />\n    <glyph glyph-name=\"laravel\" unicode=\"&#xf3bd;\" horiz-adv-x=\"640\" \nd=\"M637.5 206.4c4.2998 -4.80078 3.2002 -8.60059 -4.7002 -10.6006c-6.7002 -1.89941 -69.5996 -18.5996 -87.2998 -23.2998c25.7998 -34.5996 75.0996 -100.6 79.2998 -106.8c5.7002 -8.5 0.5 -10.9004 -7.89941 -14.4004c-8.40039 -3.39941 -195.2 -70.5996 -208 -74.5\nc-16.3008 -5 -23.7002 -7.5 -34.3008 7.40039c-8 11.0996 -51.0996 88.7002 -72.1992 127c-40 -10.5 -113.2 -29.6006 -134.301 -34.7002c-20.5996 -5 -29.3994 7.40039 -32.7998 15c-3.39941 7.59961 -124.8 269.2 -132.399 287.2c-7.60059 18 0.799805 21.3994 8.39941 22\nc7.60059 0.700195 114.5 9.59961 128.5 10.2002c14 0.699219 15.2998 -2.5 21.4004 -11.6006l154.2 -257.5l193.699 46.4004c-10.7998 15.2002 -59.5 84.2998 -64.1992 90.8994c-5.30078 7.40039 0.0996094 10.8008 8.69922 12.3008\nc8.60059 1.39941 82.7002 13.8994 89.1006 14.7998c6.2998 0.899414 11.3994 3.09961 21.7002 -9.2998c10.2998 -12.4004 68.8994 -85.7002 73.0996 -90.5zM285.3 134.4c2.2998 0.5 3.7998 1.7998 1.2002 6.09961c-2.40039 4.2998 -144.6 249.7 -144.6 249.7\nc-1.30078 2.2002 -0.900391 3 -4.5 2.7998c-3.5 -0.200195 -104.301 -9.2002 -106 -9.2002c-1.7002 0 -1.80078 -2.59961 0 -5.89941c1.7998 -3.30078 130.1 -268 130.8 -270s0.700195 -2.60059 6.5 -1.30078c5.7998 1.30078 114.3 27.3008 116.6 27.8008zM591.3 77\nc-1.7002 2.7002 -61.2002 83.4004 -64.0996 88.2002c-3 4.7002 -4.5 3.7002 -9.2002 2.2002l-188.8 -49.1006s58 -100.3 62.3994 -106.8c4.40039 -6.5 7.10059 -6 10.6006 -4.5c3.39941 1.5 181.7 61.5996 187.1 63.5996c5.5 1.90039 3.7002 3.7002 2 6.40039zM603.4 211.1\nc4.19922 1 7.39941 2.40039 5.59961 4.7002c-1.90039 2.40039 -50.9004 64.5 -54.5 69.4004c-3.59961 4.89941 -6.09961 4.09961 -9 3.39941c-2.90039 -0.599609 -67.2998 -12.2998 -71.2998 -12.7998s-2.7002 -2.7002 -1.10059 -5l56.7002 -77.7998\ns69.4004 17.2002 73.6006 18.0996z\" />\n    <glyph glyph-name=\"line\" unicode=\"&#xf3c0;\" \nd=\"M272.1 243.8v-71.0996c0 -1.7998 -1.39941 -3.2002 -3.19922 -3.2002h-11.4004c-1.09961 0 -2.09961 0.599609 -2.59961 1.2998l-32.6006 44v-42.2002c0 -1.7998 -1.39941 -3.19922 -3.2002 -3.19922h-11.3994c-1.7998 0 -3.2002 1.39941 -3.2002 3.19922v71.1006\nc0 1.7998 1.40039 3.2002 3.2002 3.2002h11.2998c1 0 2.09961 -0.5 2.59961 -1.40039l32.6006 -44v42.2002c0 1.7998 1.39941 3.2002 3.2002 3.2002h11.3994c1.7998 0.0996094 3.2998 -1.40039 3.2998 -3.10059zM190.1 247c1.80078 0 3.2002 -1.5 3.2002 -3.2002v-71.0996\nc0 -1.7998 -1.39941 -3.2002 -3.2002 -3.2002h-11.3994c-1.7998 0 -3.2002 1.40039 -3.2002 3.2002v71.0996c0 1.7998 1.40039 3.2002 3.2002 3.2002h11.3994zM162.6 187.4c1.7002 0 3.10059 -1.5 3.10059 -3.2002v-11.4004c0 -1.7998 -1.40039 -3.2002 -3.2002 -3.2002\nh-45.7002c-0.899414 0 -1.59961 0.400391 -2.2002 0.900391c-0.599609 0.599609 -0.899414 1.2998 -0.899414 2.2002v71.0996c0 1.7998 1.39941 3.2002 3.2002 3.2002h11.3994c1.7998 0 3.2002 -1.40039 3.2002 -3.2002v-56.3994h31.0996zM332.1 247\nc1.7002 0 3.10059 -1.5 3.2002 -3.2002v-11.3994c0 -1.80078 -1.39941 -3.2002 -3.2002 -3.2002h-31.0996v-12h31.0996c1.80078 0 3.2002 -1.40039 3.2002 -3.2002v-11.5c0 -1.7998 -1.39941 -3.2002 -3.2002 -3.2002h-31.0996v-12h31.0996\nc1.80078 0 3.2002 -1.39941 3.2002 -3.2002v-11.3994c0 -1.7998 -1.39941 -3.2002 -3.2002 -3.2002h-45.6992c-1.80078 0 -3.2002 1.5 -3.2002 3.2002v71.0996c0 1.7998 1.5 3.2002 3.2002 3.2002h45.6992zM448 334.3v-285.3\nc-0.0996094 -44.7998 -36.7998 -81.0996 -81.7002 -81h-285.3c-44.7998 0.0996094 -81.0996 36.9004 -81 81.7002v285.3c0.0996094 44.7998 36.9004 81.0996 81.7002 81h285.3c44.7998 -0.0996094 81.0996 -36.7998 81 -81.7002zM386.4 211.7\nc0 73 -73.2002 132.399 -163.101 132.399c-89.8994 0 -163.1 -59.3994 -163.1 -132.399c0 -65.4004 58 -120.2 136.399 -130.601c19.1006 -4.09961 16.9004 -11.0996 12.6006 -36.7998c-0.700195 -4.09961 -3.2998 -16.0996 14.0996 -8.7998\nc17.4004 7.2998 93.9004 55.2998 128.2 94.7002c23.5996 26 34.9004 52.2998 34.9004 81.5z\" />\n    <glyph glyph-name=\"lyft\" unicode=\"&#xf3c3;\" horiz-adv-x=\"512\" \nd=\"M0 366.9h77.7998v-208.7c0 -33.1006 15 -52.7998 27.2002 -61c-12.7002 -11.1006 -51.2002 -20.9004 -80.2002 2.7998c-17 14 -24.7998 37.2998 -24.7998 59v207.9zM485.9 193.4c0 -14.2002 11.5996 -25.9004 26.0996 -25.9004v-76.5\nc-56.7002 0 -102.7 46.0996 -102.7 102.7v77.0996c0 34.6006 -52.2002 34.6006 -52.2002 0v-23.2998h38.8008v-76.7998h-38.8008v-6.7002c0 -21.7998 -7.69922 -45 -24.7998 -59c-16.2998 -13.7002 -35.7002 -16.2998 -51.7002 -14v179.2\nc0 56.7002 46.1006 102.7 102.7 102.7c49.1006 0 90.2002 -34.4004 100.3 -80.7002h26.1006v-76.7998h-23.7998v-22zM191.6 292.4v0.5h77.1006v-178.2c0 -52.4004 -29.7002 -91.7002 -76.7998 -100.8c-26.1006 -5.10059 -52.5 -2.80078 -77.6006 4.69922v70.3008\nc9.7998 -4.2002 29.5 -9.40039 45 -7.80078c20.4004 2 32.7998 11.9004 34.9004 25.3008c0 0 -21.2002 -20.4004 -58.2002 -10.6006c-37 9.90039 -45 40.1006 -45 63.9004v132.7h76.7998v-113c0 -15.4004 23.7998 -15.4004 23.7998 0v113z\" />\n    <glyph glyph-name=\"magento\" unicode=\"&#xf3c4;\" \nd=\"M445.7 320.1v-256.1l-63.4004 -36.5v255.8l-158.5 91.6006l-158.6 -91.6006l0.399414 -255.899l-63.2998 36.5996v255.9l221.9 128.1zM255.6 27.5v255.9l63.4004 -36.6006v-256l-95.0996 -54.8994l-94.9004 54.8994l-0.0996094 255.9l63.2998 36.5996v-256\nl31.7998 -18.2002z\" />\n    <glyph glyph-name=\"medapps\" unicode=\"&#xf3c6;\" horiz-adv-x=\"320\" \nd=\"M118.3 209.6c3.5 12.5 6.90039 33.6006 13.2002 33.6006c8.2998 -1.7998 9.59961 -23.4004 18.5996 -36.6006c4.60059 23.5 5.30078 85.1006 14.1006 86.7002c9 0.700195 19.7002 -66.5 22 -77.5c9.89941 -4.09961 48.8994 -6.59961 48.8994 -6.59961\nc1.90039 -7.2998 -24 -7.60059 -40 -7.7998c-4.59961 -14.8008 -5.39941 -27.7002 -11.3994 -28c-4.7002 -0.200195 -8.2002 28.7998 -17.5 49.5996l-9.40039 -65.5c-4.39941 -13 -15.5 22.5 -21.8994 39.2998c-3.30078 0.100586 -62.4004 1.60059 -47.6006 7.7998zM228 0\nh-136c-21.2002 0 -21.2002 32 0 32h136c21.2002 0 21.2002 -32 0 -32zM204 -64h-88c-21.2002 0 -21.2002 32 0 32h88c21.2002 0 21.2002 -32 0 -32zM238.2 77.5c-3.60059 -21.2998 -36 -15.5 -32.6006 5.09961c3.60059 21.2002 5.60059 40.6006 15.3008 58.6006\nc32.5996 60.2998 66.0996 95.5 66.0996 151.6c0 67.9004 -57 123.2 -127 123.2s-127 -55.2998 -127 -123.2c0 -56.0996 33.5 -91.2998 66.0996 -151.7c9.7002 -17.8994 11.7002 -36.8994 15.3008 -58.5996c3.5 -20.7998 -29.1006 -26.0996 -32.6006 -5.09961\nc-3.2002 19.0996 -5.2002 36.3994 -11.8994 48.8994c-8 14.7002 -16.1006 28.1006 -24 41c-24.6006 40.4004 -45.9004 75.2998 -45.9004 125.5c0 85.6006 71.7998 155.2 160 155.2s160 -69.5996 160 -155.2c0 -50.2998 -21.2998 -85.0996 -45.9004 -125.5\nc-7.89941 -12.8994 -16.0996 -26.2998 -24 -41c-6.69922 -12.3994 -8.69922 -29.8994 -11.8994 -48.7998z\" />\n    <glyph glyph-name=\"medium-m\" unicode=\"&#xf3c7;\" horiz-adv-x=\"512\" \nd=\"M71.5 305.7c0.599609 5.89941 -1.7002 11.7998 -6.09961 15.7998l-45.1006 54.4004v8.09961h140.2l108.4 -237.7l95.2998 237.7h133.7v-8.09961l-38.6006 -37c-3.2998 -2.5 -5 -6.7002 -4.2998 -10.8008v-272c-0.700195 -4.09961 1 -8.2998 4.2998 -10.7998l37.7002 -37\nv-8.09961h-189.7v8.09961l39.1006 37.9004c3.7998 3.7998 3.7998 5 3.7998 10.7998v219.8l-108.7 -275.899h-14.7002l-126.399 275.899v-184.899c-1.10059 -7.80078 1.5 -15.6006 7 -21.2002l50.7998 -61.6006v-8.09961h-144v8l50.7998 61.7002\nc5.40039 5.59961 7.90039 13.5 6.5 21.2002v213.8z\" />\n    <glyph glyph-name=\"medrt\" unicode=\"&#xf3c8;\" horiz-adv-x=\"544\" \nd=\"M113.7 192c0 -121.8 83.8994 -222.8 193.5 -241.1c-18.7002 -4.5 -38.2002 -6.90039 -58.2002 -6.90039c-137.6 0 -249 111 -249 248s111.4 248 248.9 248c20.0996 0 39.5996 -2.40039 58.1992 -6.90039c-109.6 -18.2998 -193.399 -119.3 -193.399 -241.1zM411.1 91.7002\nc77.7002 55.3994 104.4 155.1 67 233.899c11.2002 -9.89941 21.5 -21.2998 30.5 -34.1992c61.6006 -88.3008 40.8008 -210.301 -46.5 -272.601c-87.2998 -62.2998 -208.1 -41.2002 -269.699 47c-9 12.7998 -16.2002 26.4004 -21.7002 40.5\nc60.7998 -62.0996 162.7 -70 240.399 -14.5996zM192.3 335.7c72.5 54.5996 171.601 45.7002 221.601 -19.7998c45.2998 -59.7002 34.3994 -145.601 -22.3008 -201.801c18.5 51.4004 11.3008 111 -24.3994 158c-43 56.5 -114.601 78.3008 -178.9 60.5\nc1.2998 1 2.60059 2.10059 4 3.10059zM296 224h40c4.40039 0 8 -3.59961 8 -8v-48c0 -4.40039 -3.59961 -8 -8 -8h-40c-4.40039 0 -8 -3.59961 -8 -8v-40c0 -4.40039 -3.59961 -8 -8 -8h-48c-4.40039 0 -8 3.59961 -8 8v40c0 4.40039 -3.59961 8 -8 8h-40\nc-4.40039 0 -8 3.59961 -8 8v48c0 4.40039 3.59961 8 8 8h40c4.40039 0 8 3.59961 8 8v40c0 4.40039 3.59961 8 8 8h48c4.40039 0 8 -3.59961 8 -8v-40c0 -4.40039 3.59961 -8 8 -8z\" />\n    <glyph glyph-name=\"microsoft\" unicode=\"&#xf3ca;\" \nd=\"M0 416h214.6v-214.6h-214.6v214.6zM233.4 416h214.6v-214.6h-214.6v214.6zM0 182.6h214.6v-214.6h-214.6v214.6zM233.4 182.6h214.6v-214.6h-214.6v214.6z\" />\n    <glyph glyph-name=\"mix\" unicode=\"&#xf3cb;\" \nd=\"M0 384h448v-204.1c0 -56.6006 -88 -59.9004 -88 0v23.7998c0 56.7998 -82.7002 59 -88 4.2998v-116.1c0 -58 -96 -57.9004 -96 0v175.3c0 56.8994 -80.0996 59.3994 -88 6.5v-238.601c0 -58.0996 -88 -56.1992 -88 0v348.9z\" />\n    <glyph glyph-name=\"mizuni\" unicode=\"&#xf3cc;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111.1 248 -248c0 -137 -111 -248 -248 -248s-248 111 -248 248c0 136.9 111 248 248 248zM168 88.0996v223.9c0 22.0996 -17.9004 40 -40 40s-40 -17.9004 -40 -40v-272.1c21.2002 20.8994 48.5996 37.5996 80 48.1992zM288 98v214\nc0 22.0996 -17.9004 40 -40 40s-40 -17.9004 -40 -40v-214c13 2 26.4004 3.09961 40.2002 3.09961c13.5996 0 26.8994 -1.09961 39.7998 -3.09961zM408 40.2998v271.7c0 22.0996 -17.9004 40 -40 40s-40 -17.9004 -40 -40v-223.7c31.4004 -10.5996 58.7998 -27.2002 80 -48z\n\" />\n    <glyph glyph-name=\"monero\" unicode=\"&#xf3d0;\" horiz-adv-x=\"496\" \nd=\"M352 64h108.4c-43.4004 -71.9004 -122.301 -120 -212.4 -120s-169 48.0996 -212.4 120h108.4v127.8l104 -104.8l104 105v-128zM88 112h-74.7998c-8.60059 25.0996 -13.2002 52 -13.2002 80c0 137 111 248 248 248s248 -111 248 -248c0 -28 -4.7002 -54.9004 -13.2002 -80\nh-74.7998v208l-160.6 -159.4l-159.4 159.4v-208z\" />\n    <glyph glyph-name=\"napster\" unicode=\"&#xf3d2;\" horiz-adv-x=\"496\" \nd=\"M298.3 74.4004c-14.2002 -13.6006 -31.2998 -24.1006 -50.3994 -30.5c-19 6.39941 -36.2002 16.8994 -50.3008 30.5h100.7zM342.3 274c-56.3994 39.7998 -132.1 39.9004 -188.899 -0.0996094c-19.9004 16.7998 -43.6006 29.5 -69.5 36.3994v-161.6\nc0 -217.3 328 -219.101 328 0.299805v161.2c-26 -7 -49.6006 -19.2998 -69.6006 -36.2002zM133.5 332.5c6.5 -3.2002 14.0996 -7.40039 20.4004 -11.4004c58.6992 30.5 129.199 30.6006 187.899 0.100586c6.7002 4.2002 13.5 8 20.6006 11.5\nc-64.6006 59.8994 -164.5 59.7998 -228.9 -0.200195zM43.7998 354.8c17.5 -0.5 34.2998 -3.09961 50.6006 -7.5c82 91.6006 225.5 91.6006 307.5 0.100586c16.0996 4.39941 32.7998 6.89941 50.0996 7.39941v-69.2002c58.7002 -36.5 58.5 -121.899 -0.200195 -158.199\nl-0.299805 -1.7002c-25.9004 -238.8 -381.2 -243.601 -407.6 1.5c-58.5 37.2002 -58.5 121.8 -0.100586 158.3v69.2998zM259.2 96c13.0996 59.2998 33.5 56 113 55.4004c-0.799805 -8.2002 0.0996094 -32.3008 -26.2002 -47.4004c-4.40039 -2.5 -15.2998 -6 -25.5 -6.5\nc-25.2998 -1.2002 -61.2998 -1.5 -61.2998 -1.5zM123.7 151.3c79.2998 0.700195 99.7998 4 113 -55.3994c0 0 -36 0.399414 -61.2998 1.5c-10.3008 0.5 -21.1006 4 -25.5 6.5c-26.3008 15.0996 -25.4004 39.1992 -26.2002 47.3994zM292.8 27.9004\nc3 -4.90039 3.2002 -8.80078 3.2998 -8.90039c-29.0996 -17.5996 -67.0996 -17.5996 -96.1992 0c0 0 0.899414 5.5 3.69922 9.59961c3.5 5.10059 6.40039 6.60059 6.40039 6.60059c23.7002 -6.90039 51.0996 -7.2998 75.9004 0c0 0 3.69922 -2 6.89941 -7.2998z\" />\n    <glyph glyph-name=\"node-js\" unicode=\"&#xf3d3;\" \nd=\"M224 -60c-6.7002 0 -13.5 1.7998 -19.4004 5.2002l-61.6992 36.5c-9.2002 5.2002 -4.7002 7 -1.7002 8c12.2998 4.2998 14.7998 5.2002 27.8994 12.7002c1.40039 0.799805 3.2002 0.5 4.60059 -0.400391l47.3994 -28.0996c1.7002 -1 4.10059 -1 5.7002 0l184.7 106.6\nc1.7002 1 2.7998 3 2.7998 5v213.2c0 2.09961 -1.09961 4 -2.89941 5.09961l-184.601 106.5c-1.7002 1 -4 1 -5.7002 0l-184.5 -106.6c-1.7998 -1 -2.89941 -3 -2.89941 -5.10059v-213.1c0 -2 1.09961 -4 2.89941 -4.90039l50.6006 -29.1992\nc27.5 -13.7002 44.2998 2.39941 44.2998 18.6992v210.4c0 3 2.40039 5.2998 5.40039 5.2998h23.3994c2.90039 0 5.40039 -2.2998 5.40039 -5.2998v-210.5c0 -36.5996 -20 -57.5996 -54.7002 -57.5996c-10.7002 0 -19.0996 0 -42.5 11.5996l-48.4004 27.9004\nc-12 6.89941 -19.3994 19.7998 -19.3994 33.6992v213.101c0 13.7998 7.39941 26.7998 19.3994 33.7002l184.5 106.6c11.7002 6.59961 27.2002 6.59961 38.8008 0l184.699 -106.7c12 -6.89941 19.4004 -19.7998 19.4004 -33.7002v-213.1\nc0 -13.7998 -7.40039 -26.7002 -19.4004 -33.7002l-184.699 -106.6c-5.90039 -3.40039 -12.6006 -5.2002 -19.4004 -5.2002zM373.1 150.1c0 -40.1992 -33.5996 -63.2998 -92 -63.3994c-80.8994 0 -97.7998 37.0996 -97.7998 68.2002c0 2.89941 2.2998 5.2998 5.2998 5.2998\nh23.9004c2.7002 0 4.90039 -1.90039 5.2998 -4.5c3.60059 -24.2998 14.2998 -36.6006 63.2002 -36.6006c38.9004 0 55.5 8.80078 55.5 29.4004c0 11.9004 -4.7002 20.7998 -65.2002 26.7002c-50.5 5 -81.7998 16.2002 -81.7998 56.5996c0 37.2998 31.4004 59.5 84.0996 59.5\nc59.2002 0 88.5 -20.5 92.2002 -64.5996c0.100586 -1.5 -0.399414 -3 -1.39941 -4.10059c-1 -1.09961 -2.40039 -1.69922 -3.90039 -1.69922h-24c-2.5 0 -4.7002 1.7998 -5.2002 4.19922c-5.7998 25.6006 -19.7998 33.8008 -57.7002 33.8008\nc-42.5 0 -47.3994 -14.8008 -47.3994 -25.9004c0 -13.4004 5.7998 -17.2998 63.2002 -24.9004c56.6992 -7.5 83.6992 -18.0996 83.6992 -58z\" />\n    <glyph glyph-name=\"npm\" unicode=\"&#xf3d4;\" horiz-adv-x=\"576\" \nd=\"M288 160h-32v64h32v-64zM576 288v-192h-288v-32h-128v32h-160v192h576zM160 256h-128v-128h64v96h32v-96h32v128zM320 256h-128v-160h64v32h64v128zM544 256h-192v-128h64v96h32v-96h32v96h32v-96h32v128z\" />\n    <glyph glyph-name=\"ns8\" unicode=\"&#xf3d5;\" horiz-adv-x=\"640\" \nd=\"M187.1 288.1h44.9004l-48.5 -160.1h-56.9004l-50.5996 106.5l-31.0996 -106.5h-44.9004l49 160.1h49.4004l54.5 -113.699zM639.6 289c4.60059 -28.5996 -36.0996 -44.7002 -65.6992 -50.5996h-0.100586c17.5 -29.3008 22.1006 -69.3008 3.40039 -105.5\nc-26.4004 -51.2002 -86.5 -79.9004 -135.101 -68c-29.3994 7.19922 -51.3994 29 -56.7998 59.5c-0.700195 3.5 -1 7.09961 -1.2002 10.7998c-5.5 -2.7998 -11.8994 -4.2002 -18.5 -4.90039c-15.5996 -1.7002 -21 -2.2998 -160.899 -2.2998l11.5996 39.5h126.8\nc9.10059 0 12.2002 3.2002 13.8008 7.40039c1.69922 4.59961 3.39941 10.1992 4.5 14.5996c1.09961 3.90039 0.0996094 6.59961 -7.7002 6.59961h-87.2998c-33.4004 0 -38.2002 9.2002 -32.8008 28.6006c3.2002 11.5 10.8008 37.2002 17.6006 47.0996\nc7.09961 10.2002 18.2998 13.7002 30.5996 15c15.6006 1.7002 20.4004 1.2002 160.101 1.2002l-9.7002 -31.5h-133.5c-5.5 0 -11.2002 -0.700195 -13.2998 -7.09961c-1.80078 -5.40039 -2.10059 -6.7002 -3.7002 -12.2002c-1.40039 -5.10059 2.2002 -7.40039 11.5 -7.40039\nh87.5996c20.4004 0 31 -6.7998 34 -16.5996c19.9004 21.3994 50.4004 39.5 94.2002 48.2002v0.0996094c-13.4004 42.5 43.9004 66.5996 88.5 58.7998c18.2002 -3.2002 39.2002 -13.2998 42.0996 -31.2998zM530.7 184.3c3.09961 15.7998 -0.5 33.7002 -7.2002 47.7998\nc-23.2998 -2.89941 -52.2998 -10.0996 -68.5 -26.8994c-24.4004 -25.2998 -16.7998 -60 14.0996 -64.7998c25 -3.90039 55.7002 14.3994 61.6006 43.8994zM552.5 267.4c10.5996 1.5 23.5 3.5 34.2002 9.59961c14.7998 8.5 10.3994 21 -4.90039 24.4004\nc-10.8994 2.39941 -25.0996 -0.5 -31.7998 -7.7002c-7.2998 -7.7998 -1.7002 -20.2998 2.5 -26.2998z\" />\n    <glyph glyph-name=\"nutritionix\" unicode=\"&#xf3d6;\" horiz-adv-x=\"400\" \nd=\"M88 439.9c0 0 133.4 8.19922 121 -104.4c0 0 19.0996 74.9004 103 40.5996c0 0 -17.7002 -74 -88 -56c0 0 14.5996 54.6006 66.0996 56.6006c0 0 -39.8994 10.2998 -82.0996 -48.7998c0 0 -19.7998 94.5 -93.5996 99.6992c0 0 75.1992 -19.3994 77.5996 -107.5\nc0 -0.0996094 -106.4 -7 -104 119.801zM400 124.3c0 -48.5 -9.7002 -95.2998 -32 -132.3c-42.2002 -30.9004 -105 -48 -168 -48c-62.9004 0 -125.8 17.0996 -168 48c-22.2998 37 -32 83.7998 -32 132.3c0 48.4004 17.7002 94.7002 40 131.7\nc42.2002 30.9004 97.0996 48.5996 160 48.5996c63 0 117.8 -17.5996 160 -48.5996c22.2998 -37 40 -83.2998 40 -131.7zM120 20c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28s12.5 -28 28 -28s28 12.5 28 28zM120 86.2002c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28\ns12.5 -28 28 -28s28 12.5 28 28zM120 152.4c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28s12.5 -28 28 -28s28 12.5 28 28zM192 20c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28s12.5 -28 28 -28s28 12.5 28 28zM192 86.2002c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28\ns12.5 -28 28 -28s28 12.5 28 28zM192 152.4c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28s12.5 -28 28 -28s28 12.5 28 28zM264 20c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28s12.5 -28 28 -28s28 12.5 28 28zM264 86.2002c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28\ns12.5 -28 28 -28s28 12.5 28 28zM264 152.4c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28s12.5 -28 28 -28s28 12.5 28 28zM336 20c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28s12.5 -28 28 -28s28 12.5 28 28zM336 86.2002c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28\ns12.5 -28 28 -28s28 12.5 28 28zM336 152.4c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28s12.5 -28 28 -28s28 12.5 28 28zM360 192c-4.7998 22.2998 -7.40039 36.9004 -16 56c-38.7998 19.9004 -90.5 32 -144 32s-105.2 -12.0996 -144 -32\nc-8.7998 -19.5 -11.2002 -33.9004 -16 -56c42.2002 7.90039 98.7002 14.7998 160 14.7998s117.8 -6.89941 160 -14.7998z\" />\n    <glyph glyph-name=\"page4\" unicode=\"&#xf3d7;\" horiz-adv-x=\"496\" \nd=\"M248 -56c-137 0 -248 111 -248 248s111 248 248 248c20.9004 0 41.2998 -2.59961 60.7002 -7.5l-266.4 -376.5h205.7v-112zM248 87.5996h-149.4l149.4 213.601v-213.601zM344 56h111.4c-26.9004 -41 -65.7002 -73.5 -111.4 -92.7002v92.7002zM401.4 194.2v-16.7002\nl-21.2002 8.2998zM381.1 139.7c5.90039 0 8.2002 -4.7002 8.2002 -10.6006v-10h-16.2002v7.7002c0 6.60059 1.30078 12.9004 8 12.9004zM496 192c0 -37.2998 -8.2002 -72.7002 -23 -104.4h-129v333.101c89.2998 -37.5 152 -125.8 152 -228.7zM360.4 304.4h68.1992v47.5996\nh-13.8994v-32.5996h-13.9004v29.5996h-13.8994v-29.5996h-12.7002v32.5996h-13.9004v-47.5996h0.100586zM428.5 119.1h-26.5v11c0 15.4004 -5.59961 25.2002 -20.9004 25.2002c-15.3994 0 -20.6992 -10.5996 -20.6992 -25.8994v-25.3008h68.1992v15h-0.0996094zM428.5 222.1\nl-68.2002 -29.6992v-12.4004l68.2002 -29.5v16.5996l-14.4004 5.7002v26.5l14.4004 5.90039v16.8994zM423.7 290.6h-35.6006v-26.5996h13.9004v12.2002h11c8.59961 -15.7998 1.2998 -35.2998 -18.5996 -35.2998c-22.5 0 -28.3008 25.2998 -15.5 37.6992l-11.6006 10.6006\nc-16.2002 -17.5 -12.2002 -63.9004 27.1006 -63.9004c34 0 44.6992 35.9004 29.2998 65.2998z\" />\n    <glyph glyph-name=\"palfed\" unicode=\"&#xf3d8;\" horiz-adv-x=\"576\" \nd=\"M384.9 254.1c0.0996094 -53.3994 -46.5 -96.1992 -83.3008 -96.1992c-12.5 0 -14.3994 3.39941 -15.0996 6.19922c0.5 39.1006 1.7002 80.4004 3 119.801c40.2002 14.3994 95.4004 17.5996 95.4004 -29.8008zM190.4 181.9\nc-0.200195 0.599609 -0.400391 2.09961 -0.600586 4.59961c0 25.5996 37 60.9004 58.5 75.9004c-1.2002 -36.4004 -5.5 -198.101 -1.39941 -242.5c3 -32.3008 26.7998 -32.9004 36.3994 -22.3008c5.90039 6.60059 5.5 15.7002 5.2998 19.1006v0.200195\nc-1.7998 25.5996 -2.7998 60.5996 -2.69922 100c60.7998 -14.4004 140.1 60.2998 140.1 138.199c0 71 -63 94.2002 -135.2 72c-2.89941 14.6006 -18.2998 20.1006 -29.5 11.1006c-7.5 -6.2002 -9.5 -15.7998 -10.5 -28.2002c-57.7998 -30.9004 -100.7 -84.5 -100.7 -126.5\nc0 -24.9004 15.6006 -43 37.1006 -43c35.0996 0 41 44.0996 14.3994 44.0996c-4.69922 0 -11 -2.69922 -11.1992 -2.69922zM8 266.9c0 38.5996 38.4004 37.3994 38.4004 37.3994h29c15.5 70.1006 120.5 74.2998 120.5 74.2998h28.0996v19.1006\nc0 18.3994 21.0996 18.3994 21.0996 18.3994h85.8008c18.3994 0 21.0996 -18.3994 21.0996 -18.3994v-19.1006h28c89.2002 0 112.1 -48.6992 119.4 -74.2998h30.0996c38.5 0 38.4004 -37.3994 38.4004 -37.3994c0 -38.6006 -38.4004 -37.4004 -38.4004 -37.4004h-30\nl-22.4004 -217.2c0 -43.8994 -44.6992 -44.2998 -44.6992 -44.2998h-288.9c-44.7002 0 -44.7002 44.2998 -44.7002 44.2998l-22.3994 217.2h-30c-38.5 0 -38.4004 37.4004 -38.4004 37.4004z\" />\n    <glyph glyph-name=\"patreon\" unicode=\"&#xf3d9;\" horiz-adv-x=\"512\" \nd=\"M512 253.2c0 -101.3 -82.4004 -183.8 -183.8 -183.8c-101.7 0 -184.4 82.3994 -184.4 183.8c0 101.6 82.7002 184.3 184.4 184.3c101.399 0 183.8 -82.7002 183.8 -184.3zM0 -53.5v491h90v-491h-90z\" />\n    <glyph glyph-name=\"periscope\" unicode=\"&#xf3da;\" \nd=\"M370 384.4c38.4004 -40.7002 59.5 -94.3008 59.5 -150.801c0 -74.2998 -57.4004 -159.5 -82 -192.6c-8 -10.7998 -79.2998 -105 -120.9 -105c-34 0 -88.7998 56.5 -125.399 104.9c-24.9004 32.8994 -82.7002 117.6 -82.7002 192.699c0 118.2 93.4004 214.4 208.1 214.4\nc53.9004 0 104.801 -22.5996 143.4 -63.5996zM226.6 -45.9004c37.3008 0 184.801 167.301 184.7 279.4c0 107.3 -83.8994 196.3 -184.7 196.3c-106.1 0 -190 -88.8994 -190 -196.3c0 -112.1 147.5 -279.4 190 -279.4zM338 241.2c0 -59.1006 -51.0996 -109.7 -110.8 -109.7\nc-100.601 0 -150.7 108.2 -92.9004 181.8v-0.399414c0 -24.5 20.1006 -44.4004 44.7998 -44.4004c24.7002 0 44.8008 19.9004 44.8008 44.4004c0 18.1992 -11.1006 33.7998 -26.9004 40.6992c76.5996 19.2002 141 -39.2998 141 -112.399z\" />\n    <glyph glyph-name=\"phabricator\" unicode=\"&#xf3db;\" horiz-adv-x=\"496\" \nd=\"M323 185.9c0 0 21.5996 -19.6006 20.9004 -20.7002l-8.10059 -19.7998c-0.5 -1.40039 -29.7002 -0.5 -29.7002 -0.5l-9.09961 -9.10059s1.59961 -31.5 0.200195 -32.0996l-20 -7.5c-1.2998 -0.5 -21.7998 23.2998 -21.7998 23.2998l-13.1006 0.200195\ns-19.2998 -24.1006 -20.7002 -23.5l-20.0996 8.2998c-1.40039 0.5 -1.2002 32.2998 -1.2002 32.2998l-9.39941 9.2998s-28.9004 -0.899414 -29.5 0.5l-9.5 20c-0.600586 1.40039 21.0996 21.2002 21.0996 21.2002l-0.0996094 12.9004s-21.6006 19.5996 -21 21\nl8.09961 19.7998c0.5 1.2998 29.7002 0.400391 29.7002 0.400391l9.09961 9.09961s-1.59961 28.4004 -0.200195 28.9004l20 8.2998c1.40039 0.599609 21.9004 -20.7998 21.9004 -20.7998l13.0996 -0.200195s19.3008 21.5996 20.7002 21l20.1006 -9.2002\nc1.39941 -0.599609 1.19922 -29.0996 1.19922 -29.0996l9.40039 -9.30078s28.9004 0.900391 29.5 -0.5l9.5 -20c0.599609 -1.39941 -21.0996 -21.1992 -21.0996 -21.1992zM278.1 194.6c-0.699219 17 -15.5 30.3008 -32.7998 29.5\nc-17.2998 -0.699219 -30.7998 -15.1992 -30.0996 -32.2998c0.700195 -17.0996 15.5 -30.3994 32.7998 -29.5996s30.7998 15.2998 30.0996 32.3994zM479.3 232.5c22.2998 -22.2998 22.2998 -58.7002 0 -81c-67.3994 -67.4004 -44.2998 -44.4004 -95.2998 -95.2998\nc-74.4004 -74.5 -194.7 -74.9004 -269.8 -1.60059l-0.100586 -0.0996094c-51 51 -27.5 27.5996 -97.3994 97c-22.2998 22.2998 -22.2998 58.7002 0 81c67.8994 67.4004 44.7998 44.2998 95.7002 95.2998c74.3994 74.4004 194.699 74.9004 269.8 1.60059l0.0996094 0.0996094\nzM140.4 84.2002c59.5996 -59.5 156 -59.6006 215.6 -0.100586c59.5996 59.6006 59.5 156.101 0 215.601c-59.5996 59.5 -156.1 59.5996 -215.6 0c-59.6006 -59.5 -59.6006 -156 0 -215.5z\" />\n    <glyph glyph-name=\"phoenix-framework\" unicode=\"&#xf3dc;\" horiz-adv-x=\"640\" \nd=\"M212.9 103.7c-36.7002 -1.2002 -108.7 29.2998 -127.7 106.399c-8.7002 35.3008 -2.7002 51.8008 -8 86.1006c-8.2002 53.3994 -32.1006 72.2002 -55.9004 76.5c-6.2002 1.09961 -12.3994 1.2998 -18.7002 0.299805\nc-0.799805 -0.0996094 -1.59961 -0.200195 -2.39941 -0.200195c-0.100586 0.200195 -0.100586 0.299805 -0.200195 0.5c0.700195 0.600586 1.40039 1.2002 2.2002 1.7998c36.8994 26.9004 92 38.4004 136.3 35c123.6 -9.5 141.3 -156.6 252.5 -173.1\nc6.09961 -0.900391 12.2998 -1.09961 18.5 -1.7002c0.700195 -0.0996094 1.40039 -0.0996094 2.5 -0.200195c-2.09961 -2.19922 -21.5996 -11.7998 -36.5 -14.5c-18.4004 -3.39941 -35.7002 -0.0996094 -51.2998 10.3008c-14.5 9.7998 -24.5 23.5 -38.9004 27.3994\nc-13 3.60059 -34.0996 1.7002 -35.8994 -19.5996c-1.30078 -15.9004 14.1992 -51.7998 51.7998 -74.6006c40.3994 -24.5 101.399 -26.8994 134.7 -14.7998c0.299805 0.100586 0.699219 0.200195 1.09961 0.299805c0.200195 0.100586 0.400391 0 1 -0.0996094\nc-23.5996 -28.4004 -71.2002 -49.9004 -108.2 -45.4004c-50.3994 6.2002 -77.7002 75.9004 -113.7 97.5c-19.0996 11.5 -49.0996 7 -52 -18.5c-1.09961 -10 2.10059 -19 6.40039 -27.5996c24.4004 -48.5996 65.5996 -47 68 -49.5996\nc-2.7998 -0.800781 -21.7998 -2.10059 -25.5996 -2.2002zM75.2998 383.1c13.1006 -14.5 34.2002 -7.89941 35.2998 6.80078c-12.3994 -0.700195 -24.5 -2.2002 -36.5996 -4.80078c0.400391 -0.799805 0.400391 -1 1.2998 -2zM272.2 32.5996\nc-42.7998 -1.19922 -92 26.7002 -123.5 61.4004c-4.60059 5 -16.7998 20.2002 -18.6006 23.4004l0.400391 0.399414c6.59961 -4.09961 25.7002 -18.5996 54.7998 -27c24.2002 -7 48.1006 -6.2998 71.6006 3.2998c22.6992 9.30078 41 0.5 43.0996 -2.89941\nc-18.5 -3.7998 -20.0996 -4.40039 -24 -7.90039c-5.09961 -4.39941 -4.59961 -11.7002 7 -17.2002c26.2002 -12.3994 63 2.80078 97.2002 -25.3994c2.39941 -2 8.09961 -7.7998 10.0996 -10.7002c-0.0996094 -0.200195 -0.299805 -0.299805 -0.399414 -0.5\nc-4.80078 1.5 -16.4004 7.5 -40.2002 9.2998c-24.7002 2 -46.2998 -5.2998 -77.5 -6.2002zM447 284.6c16.4004 5.2002 41.2998 13.4004 66.5 3.30078c16.0996 -6.5 26.2002 -18.7002 32.0996 -34.6006c3.5 -9.39941 5.10059 -19.7002 5.10059 -28.7002\nc-0.200195 0 -0.400391 0 -0.600586 -0.0996094c-0.199219 0.400391 -0.399414 0.900391 -0.5 1.2998c-5 22 -29.8994 43.7998 -67.5996 29.9004c-50.2002 -18.6006 -130.4 -9.7002 -176.9 48c-0.699219 0.899414 -2.39941 1.7002 -1.2998 3.2002\nc0.100586 0.199219 2.10059 -0.600586 3 -1.30078c18.1006 -13.3994 38.2998 -21.8994 60.2998 -26.1992c30.5 -6.10059 54.6006 -2.90039 79.9004 5.19922zM549.7 167.1c-32.4004 -0.199219 -33.7998 -50.0996 -103.601 -64.3994\nc-18.1992 -3.7002 -38.6992 -4.60059 -44.8994 -4.2002v0.400391c2.7998 1.5 14.7002 2.59961 29.7002 16.5996c7.89941 7.2998 15.2998 15.0996 22.7998 22.9004c19.5 20.1992 41.3994 42.1992 81.8994 39c23.1006 -1.80078 29.3008 -8.2002 36.1006 -12.7002\nc0.299805 -0.200195 0.399414 -0.5 0.700195 -0.900391c-0.5 0 -0.700195 -0.0996094 -0.900391 0c-7 2.7002 -14.2998 3.2998 -21.7998 3.2998zM537.4 191.2c-0.100586 -0.200195 -0.100586 -0.400391 -0.200195 -0.600586c-28.9004 4.40039 -48 7.90039 -68.5 -4\nc-17 -9.89941 -31.4004 -20.5 -62 -24.3994c-27.1006 -3.40039 -45.1006 -2.40039 -66.1006 8c-0.299805 0.200195 -0.599609 0.399414 -1 0.599609c0 0.200195 0.100586 0.299805 0.100586 0.5c24.8994 -3.7998 36.3994 -5.09961 55.5 5.7998\nc22.2998 12.9004 40.0996 26.6006 71.2998 31c29.5996 4.10059 51.2998 -2.5 70.9004 -16.8994zM268.6 350.7c-0.599609 0.599609 -1.09961 1.2002 -2.09961 2.2998c7.59961 0 29.7002 1.2002 53.4004 -8.40039c19.6992 -8 32.1992 -21 50.1992 -32.8994\nc11.1006 -7.2998 23.4004 -9.2998 36.4004 -8.10059c4.2998 0.400391 8.5 1.2002 12.7998 1.7002c0.400391 0.100586 0.900391 0 1.5 -0.299805c-0.599609 -0.400391 -1.2002 -0.900391 -1.7998 -1.2002c-8.09961 -4 -16.7002 -6.2998 -25.5996 -7.09961\nc-26.1006 -2.60059 -50.3008 3.7002 -73.4004 15.3994c-19.2998 9.90039 -36.4004 22.9004 -51.4004 38.6006zM640 112.3c-3.5 -3.09961 -22.7002 -11.5996 -42.7002 -5.2998c-12.2998 3.90039 -19.5 14.9004 -31.5996 24.0996\nc-10 7.60059 -20.9004 7.90039 -28.1006 8.40039c0.600586 0.799805 0.900391 1.2002 1.2002 1.40039c14.7998 9.19922 30.5 12.1992 47.2998 6.5c12.5 -4.2002 19.2002 -13.5 30.4004 -24.2002c10.7998 -10.4004 21 -9.90039 23.0996 -10.5\nc0.100586 0.0996094 0.200195 0 0.400391 -0.400391zM427.5 -24.7002c2.2002 -1.2002 1.59961 -1.5 1.5 -2c-18.5 1.40039 -33.9004 7.60059 -46.7998 22.2002c-21.7998 24.7002 -41.7002 27.9004 -48.6006 29.7002c0.5 0.200195 0.800781 0.399414 1.10059 0.399414\nc13.0996 -0.0996094 26.0996 -0.699219 38.8994 -3.89941c25.3008 -6.40039 35 -25.4004 41.6006 -35.2998c3.2002 -4.80078 7.2998 -8.30078 12.2998 -11.1006z\" />\n    <glyph glyph-name=\"playstation\" unicode=\"&#xf3df;\" horiz-adv-x=\"576\" \nd=\"M570.9 75.7002c-11.3008 -14.2002 -38.8008 -24.2998 -38.8008 -24.2998l-205.1 -73.6006v54.2998l150.9 53.8008c17.0996 6.09961 19.7998 14.7998 5.7998 19.3994c-13.9004 4.60059 -39.1006 3.2998 -56.2002 -2.89941l-100.5 -35.5v56.3994\nc23.2002 7.7998 47.0996 13.6006 75.7002 16.7998c40.8994 4.5 90.8994 -0.599609 130.2 -15.5c44.1992 -14 49.1992 -34.6992 38 -48.8994zM346.5 168.2v139c0 16.2998 -3 31.2998 -18.2998 35.5996c-11.7002 3.7998 -19 -7.09961 -19 -23.3994v-347.9l-93.7998 29.7998\nv414.7c39.8994 -7.40039 98 -24.9004 129.199 -35.4004c79.5 -27.2998 106.4 -61.2998 106.4 -137.8c0 -74.5 -46 -102.8 -104.5 -74.5996zM43.2002 37.7998c-45.4004 12.7998 -53 39.5 -32.2998 54.7998c19.0996 14.2002 51.6992 24.9004 51.6992 24.9004l134.5 47.7998\nv-54.5l-96.7998 -34.5996c-17.0996 -6.10059 -19.7002 -14.7998 -5.7998 -19.4004c13.9004 -4.59961 39.0996 -3.2998 56.2002 2.90039l46.3994 16.8994v-48.7998c-51.5996 -9.2998 -101.399 -7.2998 -153.899 10z\" />\n    <glyph glyph-name=\"pushed\" unicode=\"&#xf3e1;\" horiz-adv-x=\"432\" \nd=\"M407 336.1c21.7002 -1.89941 33.7998 -28 17.4004 -44.7998l-235.2 -231.3l-35.2998 -80.7998c-11 -17.2002 -41.2002 -14.2998 -47.7002 7l-105.101 348.3c-4.59961 18.2998 6.30078 33.9004 21.4004 36.5996l271.3 44.4004c17.9004 3.40039 39.1006 -13.5 28.7002 -37\nl-14 -33.4004zM297.6 394.4l-189 -31l177.4 -16.3008l16.7998 39.9004c2.2998 4.90039 -0.0996094 8.09961 -5.2002 7.40039zM22.7002 340.1l157.899 -244.3l96.9004 230.7l-248.7 22.7002c-5.09961 0.899414 -9.2002 -4 -6.09961 -9.10059zM136 -8.40039\nc0 0 28.2002 64.1006 35.2002 79.1006l-127.7 197.6l83.0996 -275.5c1.5 -4.2998 6.80078 -5.2002 9.40039 -1.2002zM408.8 306.1c3.10059 3.30078 1.40039 7.5 -2.59961 8.60059l-106.4 9.7002l-89.7002 -213.7z\" />\n    <glyph glyph-name=\"python\" unicode=\"&#xf3e2;\" \nd=\"M439.8 247.5c10.7002 -42.9004 11.2002 -75.0996 0 -108.6c-10.7998 -32.5 -22.2998 -54.2002 -53.3994 -54.2002h-160.2v-13.6006h106.7v-40.6992c0 -30.8008 -26.5 -46.5 -53.4004 -54.3008c-40.5 -11.6992 -73 -9.89941 -106.8 0\nc-28.2002 8.30078 -53.4004 25.3008 -53.4004 54.3008v101.8c0 29.2998 24.2002 54.2998 53.4004 54.2998h106.8c35.5996 0 66.7998 31 66.7998 67.7998v47.4004h40.1006c31.0996 0 45.6992 -23.2998 53.3994 -54.2002zM286.2 44c-11 0 -20 -9 -20.1006 -20.2998\nc0 -11.2002 9.10059 -20.4004 20.1006 -20.4004c11.0996 0 20.0996 9.10059 20.0996 20.4004c0 11.2002 -9 20.2998 -20.0996 20.2998zM167.8 199.9c-36.2998 0 -66.7998 -31.1006 -66.7998 -66.4004v-48.7998h-36.7002c-31.0996 0 -49.2002 22.5996 -56.7998 54.2002\nc-10.2002 42.5 -9.7998 67.8994 0 108.6c8.5 35.5 35.7002 54.2002 66.7998 54.2002h147v13.5996h-106.899v40.7002c0 30.9004 8.19922 47.5996 53.3994 55.5996c32.1006 5.7002 71 6 106.8 0.100586c29 -4.90039 53.4004 -26.6006 53.4004 -55.6006v-101.899\nc0 -29.7998 -23.7002 -54.2998 -53.4004 -54.2998h-106.8zM161.1 342.5c11.1006 0 20.1006 9.09961 20.1006 20.2998s-9.10059 20.4004 -20.1006 20.4004c-11.0996 0 -20 -9.10059 -20.0996 -20.4004c0 -11.2002 9 -20.2998 20.0996 -20.2998z\" />\n    <glyph glyph-name=\"red-river\" unicode=\"&#xf3e3;\" \nd=\"M353.2 416c52.3994 0 94.7998 -42.4004 94.7998 -94.7998v-258.4c0 -52.3994 -42.4004 -94.7998 -94.7998 -94.7998h-258.4c-52.3994 0 -94.7998 42.4004 -94.7998 94.7998v258.4c0 52.3994 42.4004 94.7998 94.7998 94.7998h258.4zM144.9 247.1\nc-0.600586 12.4004 11.6992 24.6006 24 24h56.2998c27 0 48.8994 21.9004 48.8994 48.9004h-154.199c-13.2002 0 -23.9004 -10.7002 -23.9004 -23.9004v-154.199c27 0 48.9004 21.8994 48.9004 48.8994v56.2998zM321.2 175.1c27 0 48.8994 21.9004 48.8994 48.9004h-154.199\nc-13.2002 0 -23.9004 -10.7002 -23.9004 -23.9004v-154.199c27 0 48.9004 21.8994 48.9004 48.8994v56.2998c-0.600586 12.4004 11.6992 24.6006 24 24h56.2998z\" />\n    <glyph glyph-name=\"wpressr\" unicode=\"&#xf3e4;\" horiz-adv-x=\"496\" \nd=\"M248 440c136.97 0 248 -111.03 248 -248s-111.03 -248 -248 -248s-248 111.03 -248 248s111.03 248 248 248zM419.33 281.4c2.41016 5.47949 0.459961 8.2793 -5.62012 8.26953c-104.8 0.00976562 -107.69 -0.0302734 -130.78 0.0302734\nc-4.31934 0.00976562 -7.10938 -1.82031 -8.83984 -5.78027c-5.70996 -13.0996 -11.5195 -26.1504 -17.2998 -39.21c-2.57031 -5.7998 -1 -8.26953 5.26953 -8.26953c25.2607 0 50.5205 -0.0107422 75.7803 0.0195312\nc10.0303 0.00976562 8.54004 -13.6602 -3.89941 -13.6396c-26.4307 0.0498047 -52.8604 0 -79.29 0.0498047c-4.91016 0.00976562 -8.33008 -1.88965 -10.3506 -6.5c-4.2998 -9.83008 -32.1494 -73.0801 -32.1895 -73.1602\nc-3.2002 -7.16016 -16.2607 -6.09961 -11.2803 5.33008c8.26953 18.9902 16.6504 37.9297 24.9795 56.8896c2.25 5.11035 -0.0996094 8.74023 -5.65918 8.75c-15.21 0.0205078 -30.4307 -0.0400391 -45.6406 0.0400391\nc-3.35938 0.0107422 -5.41016 -1.29004 -6.76953 -4.38965c-31.4307 -71.8701 -29.7803 -67.3203 -30.0098 -67.6904c-3.87012 -6.37012 -14.8604 -3.34961 -10.9502 5.60059c5.66992 13.0098 11.3701 26.0098 17.0898 39c13.5703 30.7793 27.1396 61.5596 40.7402 92.3301\nc2.54004 5.75 -0.419922 10.5801 -6.66016 10.5898c-14.2402 0.0302734 -28.4805 -0.0498047 -42.7197 0.0498047c-4.26074 0.0302734 -6.84082 -1.76953 -8.54004 -5.65039c-12.8604 -29.3896 -25.8203 -58.7295 -38.75 -88.0791\nc-8.62012 -19.5605 -17.2305 -39.1201 -25.8906 -58.6602c-1.58008 -3.55078 -1.47949 -6.78027 1.20996 -9.73047c11.2207 -12.3096 22.4707 -24.6094 33.6807 -36.9395c2.08984 -2.30078 4.58984 -3.4502 7.71973 -3.4502c45.9395 0.0195312 91.8701 0.00976562 137.81 0\nc3.86035 0 6.37988 1.78027 7.91992 5.29004c10.3203 23.5 20.7607 46.9395 30.9502 70.5c2.08984 4.83008 5.21973 6.75 10.3398 6.71973c23.0205 -0.110352 46.0303 -0.0400391 69.0508 -0.0498047c6.0791 0 10.5293 2.72949 12.9697 8.24023\nc15.2598 34.4795 30.4502 68.9893 45.6299 103.5z\" />\n    <glyph glyph-name=\"replyd\" unicode=\"&#xf3e6;\" \nd=\"M320 -32h-192c-70.4004 0 -128 57.5996 -128 128v192c0 70.4004 57.5996 128 128 128h192c70.4004 0 128 -57.5996 128 -128v-192c0 -70.4004 -57.5996 -128 -128 -128zM193.4 174.8c-6.10059 2 -11.6006 3.10059 -16.4004 3.10059\nc-7.2002 0 -13.5 -1.90039 -18.9004 -5.60059c-5.39941 -3.7002 -9.59961 -9 -12.7998 -15.7998h-1.09961l-4.2002 18.2998h-28v-138.899h36.0996v89.6992c1.5 5.40039 4.40039 9.80078 8.7002 13.2002c4.2998 3.40039 9.7998 5.10059 16.2002 5.10059\nc4.59961 0 9.7998 -1 15.5996 -3.10059zM308.6 71.4004c-3.19922 -2.40039 -7.69922 -4.80078 -13.6992 -7.10059s-12.8008 -3.5 -20.4004 -3.5c-12.2002 0 -21.0996 3 -26.5 8.90039c-5.5 5.89941 -8.5 14.7002 -9 26.3994h83.2998\nc0.900391 4.80078 1.60059 9.40039 2.10059 13.9004c0.5 4.40039 0.699219 8.59961 0.699219 12.5c0 10.7002 -1.59961 19.7002 -4.69922 26.9004c-3.2002 7.19922 -7.30078 13 -12.5 17.1992c-5.2002 4.30078 -11.1006 7.30078 -17.8008 9.2002\nc-6.69922 1.7998 -13.5 2.7998 -20.5996 2.7998c-21.0996 0 -37.5 -6.09961 -49.2002 -18.2998s-17.5 -30.5 -17.5 -55c0 -22.7998 5.2002 -40.7002 15.6006 -53.7002c10.3994 -13.0996 26.7998 -19.5996 49.1992 -19.5996c10.7002 0 20.9004 1.5 30.4004 4.59961\nc9.5 3.10059 17.0996 6.80078 22.5996 11.2002zM286.8 141.7c3.7998 -5.40039 5.2998 -13.1006 4.60059 -23.1006h-51.7002c0.899414 9.40039 3.7002 17 8.2002 22.6006c4.5 5.59961 11.5 8.5 21 8.5c8.19922 0.0996094 14.0996 -2.60059 17.8994 -8zM366.7 139.2\nc4.09961 -3.90039 9.39941 -5.7998 16.0996 -5.7998c7 0 12.6006 1.89941 16.7002 5.7998c4.09961 3.89941 6.09961 9.09961 6.09961 15.5996s-2 11.6006 -6.09961 15.4004s-9.59961 5.7002 -16.7002 5.7002c-6.7002 0 -12 -1.90039 -16.0996 -5.7002\nc-4.10059 -3.7998 -6.10059 -8.90039 -6.10059 -15.4004s2 -11.7002 6.10059 -15.5996zM366.7 38.7002c4.09961 -3.90039 9.39941 -5.7998 16.0996 -5.7998c7 0 12.6006 1.89941 16.7002 5.7998c4.09961 3.89941 6.09961 9.09961 6.09961 15.5996\ns-2 11.6006 -6.09961 15.4004s-9.59961 5.7002 -16.7002 5.7002c-6.7002 0 -12 -1.90039 -16.0996 -5.7002c-4.10059 -3.7998 -6.10059 -8.90039 -6.10059 -15.4004c0 -6.59961 2 -11.7002 6.10059 -15.5996z\" />\n    <glyph glyph-name=\"resolving\" unicode=\"&#xf3e7;\" horiz-adv-x=\"496\" \nd=\"M281.2 169.8l-197.9 -57.2002l-28.5996 98.6006l188.2 54.0996c52.6992 15.2998 65 8.10059 71.0996 -12.7998l11.2002 -39.2998c5.59961 -19.9004 2 -30.1006 -44 -43.4004zM248.5 440c137 0 248.5 -111.4 247.5 -247.7c0 -136.899 -111.5 -248.3 -248.5 -248.3\nc-46 0 -89.5 12.7002 -126.3 34.7002l-23 80.2002l286.8 -37.3008l48.0996 13.3008l-9.69922 34.1992l-220.4 27.1006l92.5996 26.5996c30.2002 8.7002 42 15.7998 61.4004 33.2002c24.5 23 31.7002 45.5 23.5 73.5996l-10.7002 37.8008\nc-8.7002 30.1992 -25.0996 49.0996 -61.3994 55.1992c-25.1006 3.5 -44.5 2 -79.3008 -8.19922l-221.899 -63.9004c26 108.8 124.2 189.5 241.3 189.5zM38.2998 59.4004c-24 38.3994 -38.2998 83.2998 -38.2998 131.8z\" />\n    <glyph glyph-name=\"rocketchat\" unicode=\"&#xf3e8;\" horiz-adv-x=\"576\" \nd=\"M486.41 340.43c119.649 -76.54 119.26 -221 0 -297.14c-77.1201 -50.9199 -179.37 -62.3896 -264.12 -47.1602c-95.5205 -91.1895 -201.72 -49.1602 -222.29 -37c0 0 73.0801 62.1006 61.21 116.49c-45.3896 46.3701 -86.5195 144.57 0 232.77\nc11.8701 54.3906 -61.21 116.49 -61.21 116.49c20.7695 12.1201 127.26 54.2803 222.29 -37.3799c84.9404 15.3301 187.19 3.75977 264.12 -47.0703zM294.18 43.7803c126.67 0 229.409 66.2197 229.409 148.22s-102.74 148.43 -229.41 148.43\ns-229.41 -66.4297 -229.41 -148.43c0 -35.79 19.4707 -68.5195 52 -94.1299c9.11426 -29.127 3.78125 -62.0234 -15.999 -98.6904c-0.889648 -1.67969 -1.76953 -3.45996 -2.76953 -5.23926c15.0498 1.33594 38.2158 7.93555 51.71 14.7295\nc11.0684 6.26562 27.46 18.5361 36.5898 27.3896l19.7705 19.0908c23.6396 -6.27734 62.6758 -11.3721 87.1348 -11.3721c0.269531 0 0.706055 0.000976562 0.974609 0.00195312zM184.119 156.7c-0.133789 -0.00195312 -0.351562 -0.00390625 -0.485352 -0.00390625\nc-18.6182 0 -33.9912 15.1084 -34.3145 33.7236c-0.700195 45.3896 67.8301 46.3799 68.5195 1.08984v-0.509766c0.000976562 -0.0888672 0.00195312 -0.232422 0.00195312 -0.321289c0 -18.6152 -15.1074 -33.8467 -33.7217 -33.999v0.0205078zM257.889 190.42\nc-0.790039 45.3896 67.7402 46.4805 68.5303 1.19043v-0.610352c0.389648 -45.0801 -67.7402 -45.5703 -68.5303 -0.580078zM401.269 156.7c-0.133789 -0.00195312 -0.350586 -0.00390625 -0.485352 -0.00390625c-18.6182 0 -33.9951 15.1084 -34.3242 33.7236\nc-0.69043 45.3896 67.8398 46.3799 68.5303 1.08984v-0.509766c0.000976562 -0.119141 0.00292969 -0.311523 0.00292969 -0.430664c0 -18.6152 -15.1084 -33.7979 -33.7236 -33.8896v0.0205078z\" />\n    <glyph glyph-name=\"rockrms\" unicode=\"&#xf3e9;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM405.4 20.5l-101.5 118.9s73.5996 0.199219 74.1992 0.199219c29.6006 -1.09961 46.6006 33.3008 27.6006 56.1006l-157.7 185.1c-13.2002 17.2998 -40.0996 18.4004 -54.5 0\nl-147.1 -172.5h90l84.2998 98.9004l84.5996 -99.2998h-75.2998c-30.5 0 -44.5 -35.7002 -26.5996 -56.1006l112 -131.3h90z\" />\n    <glyph glyph-name=\"schlix\" unicode=\"&#xf3ea;\" \nd=\"M350.5 290.3l-54.2002 46.1006l73.4004 39l78.2998 -44.2002zM192 325.9l45.7002 28.1992l34.7002 -34.5996l-55.4004 -29zM126.9 319.3l31.8994 22.1006l17.2002 -28.4004l-36.7002 -22.5zM103.6 231.1l-8.7998 34.8008l29.6006 18.2998l13.0996 -35.2998z\nM82.4004 314.8l23.8994 18.1006l8.90039 -24l-26.7002 -18.3008zM59 241.5l-3.59961 28.4004l22.2998 15.5l6.09961 -28.7002zM28.4004 224.9l20.7998 12.7998l3.2998 -33.4004l-22.9004 -12zM1.40039 180l19.1992 10.2002l0.400391 -38.2002l-21 -8.7998zM60.5 120.7\nl-28.2998 -8.2998l-1.60059 46.7998l25.1006 10.7002zM99 184.8l-31.0996 -13l-5.2002 40.7998l27.3994 14.4004zM123.2 71l-41.6006 -5.90039l-8.09961 63.5l35.2002 10.8008zM151.7 210.9l21.2002 -57.1006l-46.2002 -13.5996l-13.7002 54.0996zM237.4 -19.5996\nl-70.9004 3.2998l-24.2998 95.7998l55.2002 8.59961zM152.5 260.1l42.2002 22.4004l28 -45.9004l-50.7998 -21.2998zM193.5 165.2l61.2998 18.7002l52.7998 -86.6006l-79.7998 -11.2998zM244.9 250.8l67.2998 28.7998l65.5 -65.3994l-88.6006 -26.2002z\" />\n    <glyph glyph-name=\"searchengin\" unicode=\"&#xf3eb;\" horiz-adv-x=\"460\" \nd=\"M220.6 317.7l-67.1992 -209.3v130.3l-54.7002 -24.2002l54.7002 190.3v-115.3zM137.4 414.4l-1.30078 -4.7002l-15.1992 -52.9004c-40.3008 -15.5 -68.9004 -54.5996 -68.9004 -100.3c0 -52.2998 34.2998 -95.9004 83.4004 -105.5v-53.5996\nc-77.9004 10.5 -135.4 78.1992 -135.4 159c0 80.5 59.7998 147.199 137.4 158zM448.8 -32.7998c-11.2002 -11.2002 -23.0996 -12.2998 -28.5996 -10.5c-5.40039 1.7998 -27.1006 19.8994 -60.4004 44.3994c-33.2998 24.6006 -33.5996 35.7002 -43 56.7002\nc-9.39941 20.9004 -30.3994 42.6006 -57.5 52.4004l-9.7002 14.7002c-24.6992 -16.9004 -53 -26.9004 -81.2998 -28.7002l2.10059 6.59961l15.8994 49.5c46.5 11.9004 80.9004 54 80.9004 104.2c0 54.5 -38.4004 102.1 -96 107.1v52.1006\nc83.2002 -5.10059 148.8 -74.5 148.8 -159.3c0 -33.6006 -11.2002 -64.7002 -29 -90.4004l14.5996 -9.59961c9.80078 -27.1006 31.5 -48 52.4004 -57.4004s32.2002 -9.7002 56.7998 -43c24.6006 -33.2002 42.7002 -54.9004 44.5 -60.2998\nc1.7998 -5.40039 0.700195 -17.2998 -10.5 -28.5zM438.9 -14.9004c0 4.40039 -3.60059 8 -8 8c-4.40039 0 -8 -3.59961 -8 -8c0 -4.39941 3.59961 -8 8 -8c4.39941 0 8 3.60059 8 8z\" />\n    <glyph glyph-name=\"servicestack\" unicode=\"&#xf3ec;\" horiz-adv-x=\"496\" \nd=\"M88 232c81.7002 -10.2002 273.7 -102.3 304 -232h-392c99.5 8.09961 184.5 137 88 232zM120 384c102.8 -15.5 335.3 -167.9 376 -384h-96c-26.2998 126.7 -150.7 216.7 -233.6 250.4c1.2998 49.6992 -14.1006 98 -46.4004 133.6z\" />\n    <glyph glyph-name=\"sistrix\" unicode=\"&#xf3ee;\" \nd=\"M448 -1l-30.5 -31l-146 148.1c-28.7002 -23.6992 -65.2002 -37.8994 -105 -37.8994c-91.7998 0 -166.5 75.7998 -166.5 168.899c0 93.1006 74.7002 168.9 166.6 168.801c91.8008 0 166.5 -75.8008 166.5 -168.9c0 -37 -11.8994 -71.2998 -31.8994 -99.2002zM166.5 117.2\nc70.7002 0 128.1 58.2998 128.1 129.899c0 71.6006 -57.5 129.9 -128.1 129.9s-128.1 -58.2998 -128.1 -129.9c0 -71.5996 57.5 -129.899 128.1 -129.899z\" />\n    <glyph glyph-name=\"slack-hash\" unicode=\"&#xf3ef;\" \nd=\"M446.2 177.6c6.2002 -19 -3.90039 -39.6992 -22.9004 -45.6992l-45.3994 -15.1006l15.6992 -47c6.10059 -19.0996 -3.89941 -39.7002 -23 -45.8994c-21.2998 -6.10059 -40.0996 6 -46 22.8994l-15.6992 47l-93.6006 -31.2998l15.7002 -47\nc6.09961 -19.0996 -3.90039 -39.7002 -23 -45.9004c-21.2998 -6.09961 -40.0996 6 -46 22.9004l-15.7002 47c-45.7002 -15.2002 -50.8994 -17.7998 -57.7002 -16.7998c-14.5 0.599609 -28.5996 10.0996 -33.5996 24.5996c-6.09961 19 4 39.7002 23 45.9004l45.4004 15.0996\nl-30.3008 90c-45.6992 -15.2002 -50.8994 -17.7998 -57.6992 -16.7998c-14.5 0.599609 -28.6006 10.0996 -33.6006 24.5996c-6.09961 19.1006 3.90039 39.7002 23 45.9004l45.2998 15l-15.6992 47c-6.10059 19.0996 3.89941 39.7002 23 45.9004\nc19.0996 6.19922 39.7998 -3.90039 46 -22.9004l15.6992 -47l93.4004 31.2002l-15.7002 47c-6.09961 19.0996 3.90039 39.7002 23 45.8994c19.1006 6.2002 39.7998 -3.89941 46 -22.8994l15.7002 -47l45.4004 15.0996c19.0996 6.2002 39.7998 -3.89941 46 -22.8994\nc6.09961 -19.1006 -3.90039 -39.7002 -23 -45.9004l-45.4004 -15.0996l30.2998 -90l45.4004 15.0996c19.0996 6.2002 39.7998 -3.90039 46 -22.9004zM192.1 130.4l93.5 31.2998l-30.2998 90.2002l-93.5 -31.3008z\" />\n    <glyph glyph-name=\"speakap\" unicode=\"&#xf3f3;\" \nd=\"M64 56.2197c-79.4102 88.1904 -72 224.36 16.6396 304.141c88.6406 79.7793 224.801 73 304.21 -15.2402c79.4102 -88.2402 72 -224.36 -16.6396 -304.14c-18.7402 -16.8701 64 -43.0908 42 -52.2607c-82.0596 -34.21 -253.91 -35 -346.229 67.5h0.0195312z\nM277.31 267.82l38.5 40.8594c-9.60938 8.89062 -32 26.8301 -76.1699 27.6006c-52.3301 0.910156 -95.8594 -28.2998 -96.7695 -80c-0.200195 -11.3301 0.290039 -36.7207 29.4199 -54.8301c34.46 -21.4199 86.5195 -21.5098 86 -52.2598\nc-0.370117 -21.2803 -26.4199 -25.8105 -38.5898 -25.6006c-3 0.0498047 -30.2305 0.459961 -47.6104 24.6201l-40 -42.6104c28.1602 -27 59 -32.6191 83.4902 -33.0498c10.2295 -0.179688 96.4199 -0.330078 97.8398 81\nc0.280273 15.8105 -2.07031 39.7197 -28.8604 56.5898c-34.3594 21.6406 -85 19.4502 -84.4297 49.75c0.410156 23.25 31 25.3701 37.5303 25.2607c0.429688 0 26.6201 -0.260742 39.6201 -17.3701z\" />\n    <glyph glyph-name=\"staylinked\" unicode=\"&#xf3f5;\" horiz-adv-x=\"440\" \nd=\"M382.7 155.5l44.2998 -41.2998c3.7002 -3.5 3.2998 -9 -0.700195 -12.2002l-198 -163.9c-9.89941 -7.59961 -17.2998 -0.799805 -17.2998 -0.799805l-208.7 196.101c-3.5 3.5 -3 9 1.2002 12.1992l45.7998 34.9004c4.2002 3.2002 10.4004 3 13.9004 -0.5l151.899 -147.5\nc3.7002 -3.5 10 -3.7002 14.2002 -0.400391l93.2002 74c4.09961 3.2002 4.5 8.7002 0.900391 12.2002l-84 81.2998c-3.60059 3.5 -9.90039 3.7002 -14 0.5l-0.100586 -0.0996094c-4.09961 -3.2002 -10.3994 -3 -14 0.5l-68.0996 64.2998\nc-3.5 3.5 -3.10059 9 1.09961 12.2002l57.2998 43.5996c4.10059 3.2002 10.3008 3 13.8008 -0.5l170 -167.3zM437.2 238.9c3.7002 -3.5 3.39941 -9 -0.700195 -12.2002l-45.7998 -35.7998c-4.10059 -3.2002 -10.4004 -3 -14.1006 0.5l-160.399 159\nc-3.60059 3.5 -9.7998 3.69922 -13.9004 0.5l-92.2002 -71.5c-4.19922 -3.30078 -4.69922 -8.7002 -1.09961 -12.2002l94.5996 -91.7998c3.7002 -3.5 10 -3.60059 14.2002 -0.400391l0.100586 0.0996094c4.19922 3.2002 10.5996 3 14.1992 -0.5l57.1006 -54.3994\nc3.7002 -3.5 3.2998 -9 -0.900391 -12.2002l-7.7002 -6l0.300781 -0.299805l-50.2002 -38.7998c-4.2002 -3.30078 -10.6006 -3.10059 -14.2998 0.399414l-171.7 165.101l-42.2998 41.6992c-3.60059 3.5 -3 9 1.19922 12.2002l206.801 162.101\nc8.2998 6.59961 14.7998 2.2998 16.2998 1.09961z\" />\n    <glyph glyph-name=\"steam-symbol\" unicode=\"&#xf3f6;\" \nd=\"M395.5 270.5c0 -33.7998 -27.5 -61 -61 -61c-33.7998 0 -61 27.2998 -61 61s27.2998 61 61 61c33.5 0 61 -27.2002 61 -61zM448 270.3c0 -63 -51 -113.8 -113.7 -113.8l-109.3 -79.7998c-4 -43 -40.5 -76.7998 -84.5 -76.7998c-40.5 0 -74.7002 28.7998 -83 67\nl-57.5 23.0996v107.3l97.2002 -39.2998c15.0996 9.2002 32.2002 13.2998 52 11.5l71 101.7c0.5 62.2998 51.5 112.8 114 112.8c62.7998 0 113.8 -51 113.8 -113.7zM203 85c0 34.7002 -27.7998 62.5 -62.5 62.5c-4.5 0 -9 -0.5 -13.5 -1.5l26 -10.5\nc25.5 -10.2002 38 -39 27.7002 -64.5c-10.2002 -25.5 -39.2002 -38 -64.7002 -27.5c-10.2002 4 -20.5 8.2998 -30.7002 12.2002c10.5 -19.7002 31.2002 -33.2002 55.2002 -33.2002c34.7002 0 62.5 27.7998 62.5 62.5zM410.5 270.3c0 42 -34.2998 76.2002 -76.2002 76.2002\nc-42.2998 0 -76.5 -34.2002 -76.5 -76.2002c0 -42.2002 34.2998 -76.2002 76.5 -76.2002c41.9004 -0.0996094 76.2002 33.9004 76.2002 76.2002z\" />\n    <glyph glyph-name=\"sticker-mule\" unicode=\"&#xf3f7;\" horiz-adv-x=\"576\" \nd=\"M561.7 248.4c-1.2998 -0.300781 0.299805 0 0 0zM555.5 325.8c20.2002 -50.0996 20.5996 -45.2002 20.5996 -52.8994c0 -7.5 -4.09961 -11 -7.19922 -16.5c-1.5 -3 -4.60059 -7.5 -7.2002 -8c-0.400391 0 -3 -0.5 -13.4004 -2.5c-7.2002 -1 -13.3994 4.5 -14.8994 9.5\nc-1.60059 4.69922 2.7998 10.0996 -11.8008 22.8994c-10.2998 10 -21.0996 11.2998 -31.8994 17c-9.7998 5.7002 -11.9004 -1 -18 -8c-18 -22.8994 -34 -46.8994 -52 -69.7998c-11.7998 -15 -24.2002 -30.4004 -33.5 -47.4004\nc-3.90039 -6.7998 -9.5 -28.0996 -10.2998 -29.8994c-6.2002 -17.7002 -5.5 -25.7998 -16.5 -68.2998c-3.10059 -10 -5.7002 -21.4004 -8.7002 -32.4004c-2.2002 -6.7998 -7.40039 -49.2998 -0.5 -59.4004c2.09961 -3.5 8.7002 -4.5 11.2998 -8\nc0.0996094 -0.0996094 9.59961 -18.1992 9.2998 -20c0 -6.09961 -9.39941 -5.59961 -11.2998 -6.5c-4.7998 -2.89941 -3.7998 -5.89941 -6.40039 -7.39941c-5.89941 -2.90039 -32.0996 -3.2002 -36.5 0.5c-4.09961 3 -2.19922 11.8994 -1.5 15\nc2.2002 15 -2.5 7.89941 -9.7998 11.5c-3.09961 1.5 -4.09961 5.5 -4.59961 10c-0.5 1.5 -1 2.5 -1.5 3.5c-1.7002 10.7002 6.7998 33.5996 8.2002 43.3994c4.89941 23.7002 -0.700195 37.2002 1.5 46.9004c3.69922 16.2002 4.09961 3.5 4.09961 29.9004\nc-1.40039 25.8994 3.2998 36.8994 0.5 38.8994c-14.7998 0 -64.2998 -10.7002 -112.2 -2c-46.0996 8.90039 -59.3994 29 -65.3994 30.9004c-10.3008 4.5 -23.2002 -0.5 -27.3008 -7c-0.0996094 -0.100586 -35 -70.6006 -39.5996 -87.7998\nc-6.2002 -20.5 -0.5 -47.4004 4.09961 -66.8008c0 -0.0996094 4.5 -14.5996 10.3008 -19.5c2.09961 -1.5 5.09961 -2.5 7.19922 -4.5c2.80078 -2.69922 9.40039 -15.1992 9.80078 -16c2.59961 -4.5 3.59961 -8 -1.5 -10.5c-3.60059 -2 -9.30078 -2.5 -14.4004 -2.5\nc-2.59961 -0.5 -1.5 -3.5 -3.09961 -5c-2.90039 -2.7998 -20.7002 -6.09961 -29.9004 -2.5c-2.59961 1 -5.7002 3 -6.2002 5c-1.5 4 2.10059 9 -1 12.5c-4.5 2.90039 -13.0996 2 -17 12c-2.2002 5.40039 -2.59961 7.60059 -2.59961 49.4004\nc0 9.7002 -5.90039 38.7002 -8.2002 46.9004c-1.5 5.5 -1.5 11.5 0 16c0.299805 0.899414 4.09961 4.59961 4.09961 13c-1 1.5 -4.59961 0.5 -5.09961 1.5c-10.4004 80.5996 -5.90039 79 -7.7002 98.2998c-1.5 16 -10.8994 43.8994 -6.7002 64.2998\nc0.5 2.40039 3.40039 21 24.2002 38.9004c31 26.6992 48.4004 38.2998 159 11.5c1.10059 -0.400391 66.2998 -21.1006 110.7 9c15.5 11.2998 28.7998 11.2998 35.5 16c0.0996094 0.0996094 61.7002 52.0996 87 65.2998c47.2002 29.3994 69.9004 16.7002 75.0996 18\nc4.7002 1 13.4004 25.7998 17 25.7998c5.5 0 1.60059 -20.2002 3.60059 -25.9004c0.5 -2 3.59961 -5 6.2002 -5c2.2998 0 1.69922 0.800781 10.2998 5c8.39941 5.40039 14.8994 17.6006 20.5996 17c11.7002 -1.59961 -19 -41.5996 -19 -46.8994\nc0 -2 0.200195 -0.799805 4.60059 -9.5c2.59961 -5.5 4.59961 -13.5 6.19922 -20c8.30078 -29.7002 5.7002 -14.6006 13.4004 -36.9004z\" />\n    <glyph glyph-name=\"studiovinari\" unicode=\"&#xf3f8;\" horiz-adv-x=\"512\" \nd=\"M480.3 260.3l4.2002 -28v-28l-25.0996 -44.0996l-39.8008 -78.4004l-56.0996 -67.5l-79.0996 -37.7998l-17.7002 -24.5l-7.7002 -12l-9.59961 -4s17.2998 63.5996 19.3994 63.5996c2.10059 0 20.2998 -0.699219 20.2998 -0.699219l66.7002 38.5996l-92.5 -26.0996\nl-55.8994 -36.8008l-22.8008 -28l-6.59961 -1.39941l20.7998 73.5996l6.90039 5.5l20.7002 -12.8994l88.2998 45.1992l56.7998 51.5l14.7998 68.4004l-125.399 -23.2998l15.1992 18.2002l-173.399 53.2998l81.8994 10.5l-166 122.899l114.9 -18.0996l-101.3 108\nl252.899 -126.6l-31.5 38l124.4 -74.4004l-143.3 99l18.7002 -38.4004l-49.6006 18.1006l-45.5 84.2998l194.601 -122l-42.9004 55.7998l108 -96.3994l12 8.89941l-21 16.4004l4.2002 37.7998l37.7998 10.4004l29.2002 -24.7002l11.5 -4.2002l-7 -6.2002l8.5 -12\nl-13.1006 -7.39941l-10.2998 -20.2002z\" />\n    <glyph glyph-name=\"supple\" unicode=\"&#xf3f9;\" horiz-adv-x=\"640\" \nd=\"M640 185.5c0 -64.0996 -109 -116.1 -243.5 -116.1c-24.7998 0 -48.5996 1.7998 -71.0996 5c7.69922 -0.400391 15.5 -0.600586 23.3994 -0.600586c134.5 0 243.5 56.9004 243.5 127.101c0 29.3994 -19.0996 56.3994 -51.2002 78\nc60 -21.1006 98.9004 -55.1006 98.9004 -93.4004zM47.7002 220.1c0.0996094 -29.3994 19.2998 -56.5 51.5996 -78c-60.2002 21 -99.2002 55 -99.2998 93.3008c-0.0996094 64.0996 108.8 116.3 243.3 116.699c24.7002 0 48.5 -1.69922 71 -4.89941\nc-7.7002 0.299805 -15.3994 0.5 -23.2998 0.5c-134.5 -0.299805 -243.4 -57.4004 -243.3 -127.601zM107.9 180.2l8.7998 10.8994s8.7998 -10.0996 20.7002 -10.0996c6.5 0 12.2998 3.5 12.2998 10.0996c0 14.5 -40.2002 13.3008 -40.2002 39.9004\nc0 13.9004 12 24.0996 28.5 24.0996c10 0 25.4004 -4.69922 25.4004 -16.7998v-7.89941h-14.2002v3.89941c0 4 -5.60059 6.60059 -11.2998 6.60059c-7.2002 0 -12.5 -3.7002 -12.5 -9.10059c0 -14.5996 40.1992 -11.7002 40.1992 -39.7002\nc0 -13.5996 -10.5 -25.0996 -28.3994 -25.0996c-18.7998 0 -29.2998 13.2002 -29.2998 13.2002zM228.7 253.8h15.7002v-55c0 -18.8994 -13.3008 -31.8994 -33.4004 -31.8994c-20.2998 0 -33.7002 13 -33.7002 31.8994v55h15.7998v-54.5\nc0 -11.2002 7.10059 -17.7002 17.8008 -17.7002c10.6992 0 17.7998 6.5 17.7998 17.8008v54.3994zM263.1 168.4v72h-7.7998v13.3994h39.1006c16 0 27.1992 -11.2002 27.1992 -27.7998s-11.1992 -28.0996 -27.1992 -28.0996h-15.5v-29.5h-15.8008zM278.9 211.4h12.5996\nc8.90039 0 14 5.7998 14 14.6992c0 8.7002 -5 14.4004 -13.7002 14.4004h-12.8994v-29.0996zM335.9 168.4v72h-7.80078v13.3994h39.1006c16 0 27.2002 -11.2002 27.2002 -27.7998s-11.2002 -28.0996 -27.2002 -28.0996h-15.5v-29.5h-15.7998zM351.6 211.4h12.6006\nc9 0 14 5.7998 14 14.6992c0 8.7002 -5 14.4004 -13.7002 14.4004h-12.9004v-29.0996zM408.7 176.6h0.0996094v61.2002c0 1.60059 -0.899414 2.60059 -2.59961 2.60059h-5.2002v13.3994h15.4004c5.7998 0 8.19922 -2.5 8.19922 -8.2002v-61.1992\nc0 -1.60059 0.900391 -2.60059 2.60059 -2.60059h18.5996c1.60059 0 2.60059 0.900391 2.60059 2.60059v5.19922h14.2998v-13c0 -5.7998 -2.40039 -8.19922 -8.2002 -8.19922h-37.5996c-5.80078 0 -8.2002 2.39941 -8.2002 8.19922zM472.1 176.6h-0.0996094v63.9004h-7.7998\nv13.4004h51.5996c5.7002 0 8.2002 -2.5 8.2002 -8.2002v-13h-14.2002v5.2002c0 1.59961 -0.899414 2.59961 -2.59961 2.59961h-19.2002v-22.4004h27.7002v-13.3994h-27.7002v-20.2998c0 -1.60059 0.900391 -2.60059 2.59961 -2.60059h19.7002\nc1.60059 0 2.60059 0.900391 2.60059 2.60059v5.19922h14.2998v-13c0 -5.7998 -2.5 -8.19922 -8.2002 -8.19922h-38.7002c-5.7998 0 -8.2002 2.39941 -8.2002 8.19922zM531 252.6h-2.7002v1.2002h7v-1.2002h-2.7002v-5.89941h-1.59961v5.89941zM536.7 253.8h2.39941\nl2.10059 -5.09961l2.09961 5.09961h2.2998v-7.09961h-1.5v5.7002l-2.2998 -5.7002h-1.2998l-2.2998 5.7002v-5.7002h-1.5v7.09961z\" />\n    <glyph glyph-name=\"telegram-plane\" unicode=\"&#xf3fe;\" \nd=\"M446.7 349.4l-67.6006 -318.801c-5.09961 -22.5 -18.3994 -28.0996 -37.2998 -17.5l-103 75.9004l-49.7002 -47.7998c-5.5 -5.5 -10.0996 -10.1006 -20.6992 -10.1006l7.39941 104.9l190.9 172.5c8.2998 7.40039 -1.7998 11.5 -12.9004 4.09961l-236 -148.6\nl-101.6 31.7998c-22.1006 6.90039 -22.5 22.1006 4.59961 32.7002l397.4 153.1c18.3994 6.90039 34.5 -4.09961 28.5 -32.1992z\" />\n    <glyph glyph-name=\"uber\" unicode=\"&#xf402;\" \nd=\"M414.1 416c18.7002 0 33.9004 -15.2002 33.8008 -33.9004v-380.199c0 -18.7002 -15.2002 -33.9004 -33.9004 -33.9004h-380.1c-18.7002 0 -33.9004 15.2002 -33.9004 34v380.1c0 18.7002 15.2002 33.9004 33.9004 33.9004h380.199zM237.6 56.9004\nc74.6006 7.5 129 74.0996 121.5 148.6c-7 69.4004 -65.3994 122.2 -135.1 122.2s-128.1 -52.7998 -135.1 -122.2h94.3994v20.4004c0 3.7998 3.10059 6.7998 6.7998 6.7998h67.9004c3.7998 0 6.7998 -3.10059 6.7998 -6.7998v-67.9004\nc0 -3.7998 -3.09961 -6.7998 -6.7998 -6.7998h-67.9004c-3.7998 0 -6.7998 3.09961 -6.7998 6.7998v20.4004h-94.3994c7.5 -74.6006 74.0996 -129 148.699 -121.5z\" />\n    <glyph glyph-name=\"uikit\" unicode=\"&#xf403;\" \nd=\"M443.9 320v-256l-225.9 -128l-218 128v214.3l87.5996 -45.0996v-117l133.5 -75.5l135.801 75.5v151l-101.101 57.5996l87.6006 53.1006zM308.6 398.9l-87.3994 -53l-86 47.2998l88.5996 54.7998z\" />\n    <glyph glyph-name=\"uniregistry\" unicode=\"&#xf404;\" horiz-adv-x=\"384\" \nd=\"M192 -32c-39.5 0 -76.2002 11.7998 -106.7 32.2002h213.5c-30.5996 -20.4004 -67.2998 -32.2002 -106.8 -32.2002zM102.9 161.1c0 -2.5 0.0996094 -5 0.299805 -7.39941h-103.101c-0.0996094 2.39941 -0.0996094 4.89941 -0.0996094 7.39941v12.4004h102.9v-12.4004z\nM123.4 104.1c8.89941 -10.5996 20.0996 -19.0996 33 -24.7998h-138.301c-3.7998 8 -7 16.2998 -9.59961 24.7998h114.9zM105.7 138.8c2 -7.89941 5.2002 -15.3994 9.2002 -22.2998h-109.7c-1.7002 7.2998 -3 14.7002 -3.90039 22.2998h104.4zM102.9 208.1v-17.2998h-102.9\nv17.2998h102.9zM102.9 381.3v-4.89941h-102.9v4.89941h102.9zM102.9 416v-2.5h-102.9v2.5h102.9zM102.9 346.7v-7.40039h-102.9v7.40039h102.9zM102.9 242.7v-14.7998h-102.9v14.7998h102.9zM102.9 312v-9.90039h-102.9v9.90039h102.9zM102.9 277.4v-12.4004h-102.9v12.4004\nh102.9zM269.1 116.5c4 6.90039 7.10059 14.4004 9.2002 22.2998h104.4c-0.799805 -7.59961 -2.10059 -15 -3.90039 -22.2998h-109.7zM281.1 302.2v9.7998h102.9v-9.7998h-102.9zM281.1 265v12.4004h102.9v-12.4004h-102.9zM281.1 339.3v7.40039h102.9v-7.40039h-102.9z\nM281.1 416h102.9v-2.5h-102.9v2.5zM78.0996 5.09961c-11.7998 8.7002 -23.5996 18.7002 -33.1992 29.7002h293.1c-9.5 -11.0996 -20.4004 -21 -32.2002 -29.7002h-227.7zM281.1 376.4v4.89941h102.9v-4.89941h-102.9zM281.1 227.9v14.7998h102.9v-14.7998h-102.9z\nM38.7998 42.2998c-6.59961 8.5 -10.5996 17.6006 -15.7998 27.2002h338.9c-5.2002 -9.59961 -11.1006 -18.7002 -17.8008 -27.2002h-305.3zM227.6 79.4004c12.8008 5.59961 24.1006 14.0996 32.9004 24.7998h115c-2.7002 -8.60059 -4.7998 -16.7998 -8.5 -24.7998h-139.4z\nM281.1 161.1v12.4004h102.9v-12.4004c0 -2.5 -0.0996094 -4.89941 -0.200195 -7.39941h-103.1c0.299805 2.39941 0.399414 4.89941 0.399414 7.39941zM281.1 190.8v17.2998h102.9v-17.2998h-102.9z\" />\n    <glyph glyph-name=\"untappd\" unicode=\"&#xf405;\" horiz-adv-x=\"640\" \nd=\"M401.3 398.1c-79.7998 -160.1 -84.5996 -152.5 -87.8994 -173.199l-5.2002 -32.8008c-1.90039 -12 -6.60059 -23.5 -13.7002 -33.3994l-148.9 -207.8c-7.59961 -10.6006 -20.3994 -16.2002 -33.3994 -14.6006c-40.2998 5 -77.7998 32.2002 -95.2998 68.5\nc-5.7002 11.7998 -4.5 25.7998 3.09961 36.4004l148.9 207.899c7.09961 9.90039 16.3994 18 27.1992 23.7002l29.3008 15.5c18.5 9.7998 9.69922 11.9004 135.6 138.9c1 4.7998 1 7.2998 3.59961 8c3 0.700195 6.60059 1 6.30078 4.59961l-0.400391 4.60059\nc-0.200195 1.89941 1.2998 3.59961 3.2002 3.59961c4.5 0.0996094 13.2002 -1.2002 25.5996 -10c12.2998 -8.90039 16.4004 -16.7998 17.7002 -21.0996c0.599609 -1.80078 -0.599609 -3.7002 -2.40039 -4.2002l-4.5 -1.10059\nc-3.39941 -0.899414 -2.5 -4.39941 -2.2998 -7.39941c0.100586 -2.7998 -2.2998 -3.60059 -6.5 -6.10059zM230.1 411.6c-3.19922 0.800781 -8.19922 1.2002 -6.7998 5.40039c1.2998 4.2998 5.40039 12.2002 17.7002 21.0996c12.4004 8.90039 21.0996 10.1006 25.5996 10\nc4.2002 -0.0996094 3.10059 -4.89941 2.80078 -8.19922c-0.300781 -3.60059 3.2998 -3.80078 6.2998 -4.60059c2.59961 -0.700195 2.59961 -3.2998 3.59961 -8c9.10059 -9.2002 17.6006 -17.8994 25.6006 -26.0996c1.2998 -1.40039 1.19922 -3.5 -0.100586 -4.90039\nc-15.8994 -16.3994 -29.2998 -30.5996 -40.5 -42.5996c-1 -1 -2.59961 -0.799805 -3.2998 0.5c-6.90039 13.5 -14.2998 28.0996 -22.2002 44c-4.2998 2.5 -6.59961 3.2998 -6.39941 6c0.199219 3 1.09961 6.5 -2.30078 7.39941zM620 41.2998\nc7.7002 -10.7002 8.7998 -24.7002 3.40039 -36.5996c-17.7002 -36.6006 -55.4004 -63.7002 -95.7002 -68.6006c-12.9004 -1.5 -25.5 4.10059 -33.1006 14.7002l-148.899 207.9c-7.10059 9.89941 -11.7998 21.3994 -13.7002 33.3994\nc-1.59961 9.80078 -2 19.1006 -0.299805 29.8008c1.89941 12 2.7002 6 49 94.7998c0.700195 1.39941 2.59961 1.59961 3.59961 0.5c16.2998 -18 19.2998 -23 30.5 -28.9004c29.7998 -15.7002 43.2002 -20.5996 56.4004 -39.0996z\" />\n    <glyph glyph-name=\"ussunnah\" unicode=\"&#xf407;\" horiz-adv-x=\"512\" \nd=\"M156.8 162.9l5.7002 -14.4004h-8.2002c-1.2998 3.2002 -3.09961 7.7002 -3.7998 9.5c-2.5 6.2998 -1.09961 8.40039 0 10c1.90039 2.7002 3.2002 4.40039 3.59961 5.2002c0 -2.2002 0.800781 -5.7002 2.7002 -10.2998zM454.1 144.1\nc-2.09961 -13.7998 -5.69922 -27.0996 -10.5 -39.6992l43 -23.4004l-44.7998 18.7998c-5.2998 -13.2002 -12 -25.5996 -19.8994 -37.2002l34.1992 -30.1992l-36.7998 26.3994c-8.39941 -11.7998 -18 -22.5996 -28.7002 -32.2998l24.9004 -34.7002l-28.0996 31.7998\nc-11 -9.59961 -23.1006 -18 -36.1006 -25.0996l15.7002 -37.2002l-19.2998 35.2998c-13.1006 -6.7998 -27 -12.0996 -41.6006 -15.8994l6.7002 -38.4004l-10.5 37.4004c-14.2998 -3.40039 -29.2002 -5.2998 -44.5 -5.40039l-1.7998 -38.2998l-1.90039 38.4004\nc-15.2998 0.0996094 -30.1992 2 -44.5 5.2998l-10.5996 -37.2998l6.7002 38.1992c-14.6006 3.7002 -28.6006 9.10059 -41.7002 15.8008l-19.2002 -35.1006l15.6006 37c-13 7 -25.2002 15.4004 -36.2002 25.1006l-27.9004 -31.6006l24.7002 34.4004\nc-10.7002 9.7002 -20.4004 20.5 -28.7998 32.2998l-36.5 -26.2002l33.8994 29.9004c-7.89941 11.5996 -14.5996 24.0996 -20 37.2998l-44.3994 -18.7002l42.5996 23.2002c-4.7998 12.7002 -8.39941 26.0996 -10.5 39.9004l-51 -9l50.2998 14.1992\nc-1.09961 8.5 -1.69922 17.1006 -1.69922 25.9004c0 4.7002 0.199219 9.40039 0.5 14.0996l-55.4004 2.90039l56 2.7998c1.2998 13.1006 3.7998 25.7998 7.5 38.1006l-57.0996 16.0996l58.8994 -10.4004c4 12 9.10059 23.5 15.2002 34.4004l-55.0996 30l58.2998 -24.5996\nc6.2998 10.5996 13.5 20.3994 21.5996 29.5996l-49.5 43.5996l53.9004 -38.6992c8.09961 8.59961 17 16.5 26.5996 23.5996l-40 55.5996l45.6006 -51.5996c9.5 6.59961 19.6992 12.2998 30.2998 17.2002l-27.2998 64.8994l33.7998 -62.0996\nc10.5 4.40039 21.3994 7.90039 32.7002 10.4004l-12.4004 70.6992l19.5 -69.1992c11 2.09961 22.2998 3.19922 33.7998 3.39941l3.7002 72.2002l3.59961 -72.2002c11.5 -0.200195 22.8008 -1.39941 33.8008 -3.5l19.5996 69.2998l-12.4004 -70.6992\nc11.3008 -2.60059 22.2002 -6.10059 32.6006 -10.5l33.8994 62.1992l-27.3994 -65.0996c10.5996 -4.90039 20.7002 -10.7002 30.2002 -17.2002l45.7998 51.7998l-40.1006 -55.8994c9.5 -7.10059 18.4004 -15 26.5 -23.6006l54.2002 38.9004l-49.7002 -43.9004\nc8 -9.09961 15.2002 -18.8994 21.5 -29.3994l58.7002 24.7002l-55.5 -30.2002c6.10059 -10.9004 11.1006 -22.2998 15.1006 -34.2998l59.2998 10.3994l-57.5 -16.2002c3.7002 -12.1992 6.2002 -24.8994 7.5 -37.8994l56.2998 -2.7002l-56 -2.7998\nc0.299805 -4.60059 0.5 -9.2998 0.5 -14.1006c0 -8.69922 -0.599609 -17.2998 -1.59961 -25.7998l50.6992 -14.2998zM432.3 175.1c0 97.5 -79 176.5 -176.5 176.5s-176.5 -79 -176.5 -176.5s79 -176.5 176.5 -176.5s176.5 79 176.5 176.5zM408.3 175.1\nc0 -84.2998 -68.2998 -152.6 -152.6 -152.6s-152.601 68.2998 -152.601 152.6c0 84.3008 68.3008 152.601 152.601 152.601s152.6 -68.2998 152.6 -152.601zM195 207c0 -2.09961 1.2998 -3.7998 3.59961 -5.09961c3.30078 -1.90039 6.2002 -4.60059 8.2002 -8.2002\nc2.7998 5.7002 4.2998 9.5 4.2998 11.2002c0 2.19922 -1.09961 4.39941 -3.19922 7c-2.10059 2.5 -3.2002 5.19922 -3.30078 7.69922c-6.5 -6.7998 -9.59961 -10.8994 -9.59961 -12.5996zM154.3 226c0 -2.09961 1.2998 -3.7998 3.60059 -5.09961\nc3.5 -1.90039 6.19922 -4.60059 8.19922 -8.2002c2.80078 5.7002 4.30078 9.5 4.30078 11.2002c0 2.19922 -1.10059 4.39941 -3.2002 7c-2.10059 2.5 -3.2002 5.19922 -3.2998 7.69922c-6.5 -6.7998 -9.60059 -10.8994 -9.60059 -12.5996zM135.3 226\nc0 -2.09961 1.2998 -3.7998 3.60059 -5.09961c3.2998 -1.90039 6.19922 -4.60059 8.19922 -8.2002c2.80078 5.7002 4.30078 9.5 4.30078 11.2002c0 2.19922 -1.10059 4.39941 -3.2002 7c-2.10059 2.5 -3.2002 5.19922 -3.2998 7.69922\nc-6.40039 -6.7998 -9.60059 -10.8994 -9.60059 -12.5996zM340.2 138.1c-8.40039 3 -8.7002 6.80078 -8.7002 15.6006v112.3c-8.2002 -12.5 -14.2002 -18.5996 -18 -18.5996c6.2998 -14.4004 9.5 -23.9004 9.5 -28.3008v-64.2998c0 -2.2002 -2.2002 -6.5 -4.7002 -6.5h-18\nc-2.7998 7.5 -10.2002 26.9004 -15.2998 40.2998c-2 -2.5 -7.2002 -9.19922 -10.7002 -13.6992c2.40039 -1.60059 4.10059 -3.60059 5.2002 -6.30078c2.59961 -6.69922 6.40039 -16.5 7.90039 -20.1992h-9.2002c-3.90039 10.3994 -9.60059 25.3994 -11.7998 31.0996\nc-2 -2.5 -7.2002 -9.2002 -10.7002 -13.7002c2.39941 -1.59961 4.09961 -3.59961 5.2002 -6.2998c0.799805 -2 2.7998 -7.2998 4.2998 -10.9004h-9.2002c-1.5 4.10059 -5.59961 14.6006 -8.40039 22c-2 -2.5 -7.19922 -9.19922 -10.6992 -13.6992\nc2.5 -1.60059 4.2998 -3.60059 5.19922 -6.30078c0.200195 -0.599609 0.5 -1.39941 0.600586 -1.69922h-17.7002c-4.59961 13.8994 -11.4004 27.6992 -11.4004 34.0996c0 2.2002 0.300781 5.09961 1.10059 8.2002c-8.7998 -10.7998 -14 -15.9004 -14 -25\nc0 -7.5 10.3994 -28.2998 10.3994 -33.2998c0 -1.7002 -0.5 -3.30078 -1.39941 -4.90039c-9.60059 12.7002 -15.5 20.7002 -18.7998 20.7002h-12l-11.2002 28c-3.7998 9.59961 -5.7002 16 -5.7002 18.7998c0 3.7998 0.5 7.7002 1.7002 12.2002\nc-1 -1.2998 -3.7002 -4.7002 -5.5 -7.10059c-0.799805 2.10059 -3.10059 7.7002 -4.60059 11.5c-2.09961 -2.5 -7.5 -9.09961 -11.1992 -13.5996c0.899414 -2.2998 3.2998 -8.09961 4.89941 -12.2002c-2.5 -3.2998 -9.09961 -11.7998 -13.5996 -17.7002\nc-4 -5.2998 -5.7998 -13.2998 -2.7002 -21.7998c2.5 -6.7002 2 -7.89941 -1.7002 -14.0996h61.7002c5.5 0 14.2998 -14 15.5 -22c13.2002 16 15.4004 19.5996 16.7998 21.5996h107c3.90039 0 7.2002 1.90039 9.90039 5.7998zM360.3 164.7v101.6\nc-9 -12.5 -15.8994 -18.5996 -20.7002 -18.5996c7.10059 -14.4004 10.7002 -23.9004 10.7002 -28.2998v-66.3008c0 -17.5 8.60059 -20.3994 24 -20.3994c8.10059 0 12.5 0.799805 13.7002 2.7002c-4.2998 1.59961 -7.59961 2.5 -9.90039 3.2998\nc-8.09961 3.2002 -17.7998 7.39941 -17.7998 26z\" />\n    <glyph glyph-name=\"vaadin\" unicode=\"&#xf408;\" \nd=\"M224.5 307.3c1.5 17.6006 4.90039 52.7002 49.7998 52.7002h98.6006c20.6992 0 32.0996 7.7998 32.0996 21.5996v12.3008c0 12.1992 9.2998 22.0996 21.5 22.0996s21.5 -9.90039 21.5 -22.0996v-36.5c0 -42.9004 -21.5 -62 -66.7998 -62h-100.5\nc-30.1006 0 -33 -14.7002 -33 -27.1006c0 -1.2998 -0.100586 -2.5 -0.200195 -3.7002c-0.700195 -12.2998 -10.9004 -22.1992 -23.4004 -22.1992s-22.6992 9.7998 -23.3994 22.1992c-0.100586 1.2002 -0.200195 2.40039 -0.200195 3.7002c0 12.2998 -3 27.1006 -33 27.1006\nh-100.7c-45.2998 0 -66.7998 19.0996 -66.7998 62v36.5c0 12.1992 9.40039 22.0996 21.5996 22.0996c12.2002 0 21.5 -9.90039 21.5 -22.0996v-12.3008c0 -13.7998 11.4004 -21.5996 32.1006 -21.5996h98.5996c44.7998 0 48.2998 -35.0996 49.7998 -52.7002h0.900391z\nM224 -8c-11.5 0 -21.4004 7 -25.7002 16.2998c-1.09961 1.7998 -97.0996 169.5 -98.2002 171.4c-11.8994 19.7002 3.2002 44.2998 27.2002 44.2998c13.9004 0 23.4004 -6.40039 29.7998 -20.2998l66.9004 -117.7l66.9004 117.7c6.5 13.8994 15.8994 20.2998 29.7998 20.2998\nc24 0 39.0996 -24.7002 27.2002 -44.2998c-1.10059 -1.7998 -97.1006 -169.601 -98.2002 -171.4c-4.2998 -9.2998 -14.2002 -16.2998 -25.7002 -16.2998z\" />\n    <glyph glyph-name=\"viber\" unicode=\"&#xf409;\" horiz-adv-x=\"512\" \nd=\"M444 398.1c42.2002 -36.6992 65.5996 -117.899 49.7998 -246.5c-15.2002 -124.6 -109.1 -136.6 -125.7 -142c-7.19922 -2.2998 -70.2998 -18.0996 -152.5 -11.1992c-9.09961 -10.5 -21.0996 -24.3008 -29.7998 -33.7002\nc-15.8994 -17.1006 -25.7002 -33 -42.2998 -27.7998c-13.7998 4.19922 -13 25.0996 -13 25.0996l0.0996094 51.5996h-0.0996094c-120.1 33.8008 -118.4 158.4 -117 224.9s14.2998 120.2 50.9004 156.8c65.7998 60.4004 200.899 52.2998 200.899 52.2998\nc114.601 -0.5 166 -37.7998 178.7 -49.5zM457.9 161c13.2998 107.3 -4.90039 180.5 -40.6006 211.1c-10.7998 9.80078 -57.2002 39 -154.1 39.4004c0 0 -114.7 7.5 -170.4 -43c-31 -30.5996 -41.5 -76.0996 -42.5996 -131.6\nc-1.10059 -55.5 -7.10059 -161.601 94.7002 -189.801c-0.100586 0 -0.100586 0 0 0c0 0 -0.400391 -78.7998 -0.400391 -85.6992c-0.0996094 -10.5 5.7002 -11 11 -5.7002c16.2002 16.2998 68.2002 79 68.2002 79c69.7002 -4.5 125.2 9.2998 131.2 11.2002\nc14 4.5 90.0996 11.0996 103 115.1zM318.9 241.8c0.399414 -8.59961 -12.5 -9.2002 -12.9004 -0.599609c-1.09961 22 -11.4004 32.7002 -32.5996 33.8994c-8.60059 0.5 -7.80078 13.4004 0.699219 12.9004c27.9004 -1.5 43.4004 -17.5 44.8008 -46.2002zM339.2 230.5\nc1 42.4004 -25.5 75.5996 -75.7998 79.2998c-8.5 0.600586 -7.60059 13.5 0.899414 12.9004c58 -4.2002 88.9004 -44.1006 87.7998 -92.5c-0.0996094 -8.60059 -13.0996 -8.2002 -12.8994 0.299805zM386.2 217.1c0.0996094 -8.59961 -12.9004 -8.69922 -12.9004 -0.0996094\nc-0.599609 81.5 -54.8994 125.9 -120.8 126.4c-8.5 0.0996094 -8.5 12.8994 0 12.8994c73.7002 -0.5 133 -51.3994 133.7 -139.2zM374.9 119v-0.200195c-10.8008 -19 -31 -40 -51.8008 -33.2998l-0.199219 0.299805c-21.1006 5.90039 -70.8008 31.5 -102.2 56.5\nc-16.2002 12.7998 -31 27.9004 -42.4004 42.4004c-10.2998 12.8994 -20.7002 28.2002 -30.7998 46.5996c-21.2998 38.5 -26 55.7002 -26 55.7002c-6.7002 20.7998 14.2002 41 33.2998 51.7998h0.200195c9.2002 4.7998 18 3.2002 23.9004 -3.89941\nc0 0 12.3994 -14.8008 17.6992 -22.1006c5 -6.7998 11.7002 -17.7002 15.2002 -23.7998c6.10059 -10.9004 2.2998 -22 -3.7002 -26.5996l-12 -9.60059c-6.09961 -4.89941 -5.2998 -14 -5.2998 -14s17.7998 -67.2998 84.2998 -84.2998c0 0 9.10059 -0.799805 14 5.2998\nl9.60059 12c4.59961 6 15.7002 9.7998 26.5996 3.7002c14.7002 -8.2998 33.4004 -21.2002 45.7998 -32.9004c7 -5.69922 8.60059 -14.3994 3.80078 -23.5996z\" />\n    <glyph glyph-name=\"vimeo\" unicode=\"&#xf40a;\" \nd=\"M403.2 416c24.7002 0 44.7998 -20.0996 44.7998 -44.7998v-358.4c0 -24.7002 -20.0996 -44.7998 -44.7998 -44.7998h-358.4c-24.7002 0 -44.7998 20.0996 -44.7998 44.7998v358.4c0 24.7002 20.0996 44.7998 44.7998 44.7998h358.4zM377 267.2\nc1.90039 42.2002 -13.7998 63.7998 -47.0996 64.7002c-44.9004 1.39941 -75.3008 -23.9004 -91.2002 -76c19.8994 8.5 49.2998 10.7998 45.7998 -22.4004c-1 -11.2002 -8.2998 -27.5 -21.7998 -48.9004c-37.7002 -59.3994 -46.9004 -39.5996 -67.6006 91.6006\nc-5.7998 36.8994 -21.2998 54.0996 -46.5 51.7002c-22.2998 -2 -57.8994 -38.4004 -95.1992 -71.2002l15.1992 -19.6006c14.5 10.1006 23 15.2002 25.4004 15.2002c21 0 31.9004 -54.7002 57.4004 -148c13.0996 -34.8994 29 -52.2998 47.8994 -52.2998\nc30.4004 0 67.7002 28.5996 111.7 85.7998c42.5996 54.7002 64.5996 97.9004 66 129.4z\" />\n    <glyph glyph-name=\"vnv\" unicode=\"&#xf40b;\" horiz-adv-x=\"640\" \nd=\"M104.9 96c-34.1006 0 -46.4004 30.4004 -46.4004 30.4004l-55.9004 111.5s-10.3994 18.0996 10.4004 18.0996h32.7998c10.4004 0 13.2002 -8.7002 18.7998 -18.0996l36.7002 -74.5s5.2002 -13.1006 21.1006 -13.1006c15.8994 0 21.0996 13.1006 21.0996 13.1006\nl36.7002 74.5c5.59961 9.5 8.39941 18.0996 18.7998 18.0996h32.7998c20.7998 0 10.4004 -18.0996 10.4004 -18.0996l-55.7998 -111.5s-12.2002 -30.4004 -46.4004 -30.4004h-35.0996zM499.9 96c-34.1006 0 -46.4004 30.4004 -46.4004 30.4004l-55.9004 111.5\ns-10.3994 18.0996 10.4004 18.0996h32.7998c10.4004 0 13.2002 -8.7002 18.7998 -18.0996l36.7002 -74.5s5.2002 -13.1006 21.1006 -13.1006c15.8994 0 21.0996 13.1006 21.0996 13.1006l36.7998 74.5c5.60059 9.5 8.40039 18.0996 18.7998 18.0996h32.9004\nc20.7998 0 10.4004 -18.0996 10.4004 -18.0996l-55.9004 -111.5s-12.2002 -30.4004 -46.4004 -30.4004h-35.1992zM337.6 256c34.1006 0 46.4004 -30.4004 46.4004 -30.4004l55.9004 -111.5s10.3994 -18.0996 -10.4004 -18.0996h-32.7998\nc-10.4004 0 -13.2002 8.7002 -18.7998 18.0996l-36.7002 74.5s-5.2002 13.1006 -21.1006 13.1006c-15.8994 0 -21.0996 -13.1006 -21.0996 -13.1006l-36.7002 -74.5c-5.59961 -9.39941 -8.39941 -18.0996 -18.7998 -18.0996h-32.9004\nc-20.7998 0 -10.3994 18.0996 -10.3994 18.0996l55.8994 111.5s12.2002 30.4004 46.4004 30.4004h35.0996z\" />\n    <glyph glyph-name=\"whatsapp-square\" unicode=\"&#xf40c;\" \nd=\"M224 325.2c35.2002 0 68.2002 -13.7002 93.2002 -38.7002c24.8994 -24.9004 40.0996 -58 40.0996 -93.2002c0 -72.7002 -60.7002 -131.8 -133.3 -131.8h-0.0996094c-23.7002 0 -46.9004 6.40039 -67.1006 18.4004l-4.7998 2.89941l-49.9004 -13.0996l13.3008 48.5996\nl-3.10059 5c-13.2002 20.9004 -20.2002 45.2002 -20.2002 70.1006c0.100586 72.6992 59.2002 131.8 131.9 131.8zM301.5 136.8c3.2998 9.2002 3.2998 17.2002 2.40039 19.1006c-1 1.59961 -3.60059 2.59961 -7.60059 4.59961s-23.5 11.5996 -27.0996 12.9004\nc-3.60059 1.2998 -6.2998 2 -8.90039 -2c-2.59961 -3.90039 -10.2002 -12.9004 -12.5 -15.5c-2.2998 -2.7002 -4.59961 -3 -8.59961 -1c-23.2998 11.6992 -38.6006 20.7998 -53.9004 47.0996c-4.09961 7 4 6.40039 11.6006 21.5996\nc1.39941 2.60059 0.699219 4.90039 -0.300781 6.90039s-8.89941 21.5 -12.1992 29.4004c-3.2002 7.69922 -6.5 6.69922 -8.90039 6.7998c-2.2998 0.0996094 -5 0.0996094 -7.59961 0.0996094c-2.7002 0 -7 -1 -10.6006 -5c-3.7002 -4 -13.8994 -13.5996 -13.8994 -33.0996\ns14.1992 -38.4004 16.1992 -41c2 -2.60059 28 -42.6006 67.7002 -59.7998c25.1006 -10.8008 34.9004 -11.8008 47.5 -9.90039c7.60059 1.09961 23.4004 9.5 26.7002 18.7998zM400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48\nv352c0 26.5 21.5 48 48 48h352zM223.9 34.7998c87.3994 0 160.1 71.1006 160.1 158.5c0 42.4004 -18 82.2002 -47.9004 112.2c-30 30 -69.7998 46.5 -112.199 46.5c-87.4004 0 -158.5 -71.0996 -158.601 -158.5c0 -28 7.2998 -55.2998 21.2002 -79.2998l-22.5 -82.2002\nl84.0996 22.0996c23.1006 -12.5996 49.2002 -19.2998 75.8008 -19.2998z\" />\n    <glyph glyph-name=\"whmcs\" unicode=\"&#xf40d;\" \nd=\"M448 287l-29.0996 -7l-2.2002 -12.0996l20.8994 -18.8008l-10.2998 -20.0996l-28.7998 8.7998l-7.7998 -8.09961l8.7998 -28l-20.4004 -12.1006l-20.6992 21.6006l-11.6006 -3.5l-6.7002 -28.7998l-22.5996 0.299805l-6.7002 28.5l-11.5996 2.89941l-19.4004 -20.3994\nl-19.8994 11.5996l8.09961 26.9004l-7.2002 8.59961l-29.5996 -7.5l-10.4004 18.5l20.1006 19.9004l-2.40039 12.0996l-28.7998 7.5l0.299805 21.7002l28.5 7.7998l2.90039 10.4004l-20.7002 21l11 19.0996l28.5 -7.5l8.09961 8.40039l-8.09961 27.7002l19.3994 11\nl19.7002 -21l12.1006 3.19922l6.19922 26.4004h22.6006l7 -26.4004l10.7002 -3.19922l21.2998 21l19.0996 -11.6006l-7.5 -28.2002l7.2002 -7.5l29 7.5l10.4004 -19.3994l-20.1006 -20.7002l2.2002 -10.4004l28.5 -8.7998v-21.2998zM328.8 241.8\nc31.4004 0 56.7998 25.2998 56.7998 56.7998c0 31.4004 -25.3994 56.8008 -56.7998 56.8008c-31.3994 0 -56.7998 -25.4004 -56.7998 -56.8008c0 -31.3994 25.5 -56.7998 56.7998 -56.7998zM401.1 225.4l46.9004 -14.5v-39.9004l-55.0996 -13.4004l-4.10059 -22.6992\nl38.9004 -35.3008l-19.2002 -37.8994l-54 16.7002l-14.5996 -15.2002l16.6992 -52.5l-38.2998 -22.7002l-38.8994 40.5l-21.7002 -6.59961l-12.6006 -54l-42.3994 0.5l-12.6006 53.5996l-21.6992 5.59961l-36.4004 -38.3994l-37.4004 21.7002l15.2002 50.5l-13.7002 16.0996\nl-55.5 -14.0996l-19.6992 34.7998l37.8994 37.3994l-4.7998 22.8008l-54 14.0996l0.5 40.9004l53.5 14.6992l5.7002 19.7002l-38.9004 39.4004l20.7002 35.7998l53.5996 -14.0996l15.2002 15.6992l-15.2002 52l36.4004 20.7002l36.7998 -39.3994l22.7002 6.09961l11.5996 52\nh42.4004l11.5996 -45.9004l-22.5996 5.90039l-6.2998 1.7002l-3.2998 -5.7002l-11 -19.0996l-3.30078 -5.60059l4.60059 -4.59961l17.2002 -17.4004l-0.300781 -1l-23.7998 -6.5l-6.2002 -1.7002l-0.0996094 -6.39941l-0.200195 -12.9004\nc-47.5 -10.3994 -83.2998 -52.7998 -83.2998 -103.5c0 -58.2998 47.2998 -105.7 105.7 -105.7c50.5 0 92.7002 35.4004 103.2 82.8008l13.1992 -0.200195l6.90039 -0.100586l1.59961 6.7002l5.60059 24l1.89941 0.600586l17.1006 -17.8008l4.7002 -4.89941l5.7998 3.39941\nl20.3994 12.1006l5.80078 3.5l-2 6.5z\" />\n    <glyph glyph-name=\"wordpress-simple\" unicode=\"&#xf411;\" horiz-adv-x=\"512\" \nd=\"M256 440c136.7 0 248 -111.2 248 -248c0 -136.7 -111.3 -248 -248 -248s-248 111.3 -248 248c0 136.8 111.3 248 248 248zM33 192c0 -88.2002 51.2998 -164.5 125.7 -200.7l-106.4 291.4c-12.3994 -27.7002 -19.2998 -58.4004 -19.2998 -90.7002zM256 -31\nc26 0 50.9004 4.5 74 12.5996c-0.599609 1 -1.09961 2 -1.59961 3.10059l-68.5 187.8l-66.9004 -194.4c20 -5.89941 41.0996 -9.09961 63 -9.09961zM286.7 296.5l80.7002 -239.6l22.1992 74.2998c9.7002 30.8994 17 53 17 72.0996c0 27.6006 -9.89941 46.7002 -18.3994 61.5\nc-11.2998 18.4004 -21.9004 33.9004 -21.9004 52.2998c0 20.5 15.5 39.6006 37.4004 39.6006c1 0 1.89941 -0.100586 2.89941 -0.200195c-39.6992 36.2998 -92.5996 58.5 -150.6 58.5c-77.9004 0 -146.4 -40 -186.3 -100.5\nc5.2998 -0.200195 10.2002 -0.299805 14.3994 -0.299805c23.3008 0 59.4004 2.7998 59.4004 2.7998c12 0.700195 13.4004 -17 1.40039 -18.4004c0 0 -12.1006 -1.39941 -25.5 -2.09961l81.1992 -241.5l48.8008 146.3l-34.7002 95.2002\nc-12 0.700195 -23.4004 2.09961 -23.4004 2.09961c-12 0.700195 -10.5996 19.1006 1.40039 18.4004c0 0 36.7998 -2.7998 58.7002 -2.7998c23.2998 0 59.3994 2.7998 59.3994 2.7998c12 0.700195 13.4004 -17 1.40039 -18.4004c0 0 -12.1006 -1.39941 -25.5 -2.09961z\nM368.1 -0.700195c66.3008 38.6006 110.9 110.4 110.9 192.7c0 38.7998 -9.90039 75.2002 -27.2998 107c1 -7.09961 1.5 -14.7002 1.5 -22.9004c0 -22.6992 -4.2998 -48.0996 -17 -79.8994z\" />\n    <glyph glyph-name=\"xbox\" unicode=\"&#xf412;\" horiz-adv-x=\"512\" \nd=\"M369.9 129.8c44.2998 -54.2998 64.6992 -98.7998 54.3994 -118.7c-7.89941 -15.0996 -56.7002 -44.5996 -92.5996 -55.8994c-29.6006 -9.2998 -68.4004 -13.2998 -100.4 -10.2002c-38.2002 3.7002 -76.8994 17.4004 -110.1 39\nc-27.9004 18.2002 -34.2002 25.7002 -34.2002 40.5996c0 29.9004 32.9004 82.3008 89.2002 142.101c32 33.8994 76.5 73.7002 81.3994 72.5996c9.40039 -2.09961 84.3008 -75.0996 112.301 -109.5zM188.6 304.2c-66.3994 -81.5 -106 -155.4 -120.3 -194.4\nc-9.7998 -26.5 -13.7002 -53 -9.5 -64c2.7998 -7.39941 0.200195 -4.7002 -9.2998 9.90039c-23.2002 35.5 -34.9004 70.3994 -40.5 120.899c-1.90039 16.7002 -1.2002 26.3008 4.2002 60.5c6.7998 42.7002 31.0996 92 60.2998 122.4\nc12.4004 12.9004 13.5 13.2002 28.7002 8.09961c28.2998 -9.5 56.7002 -36.5 86.3994 -63.3994zM500.2 240.7c4.7002 -22.6006 5.09961 -70.9004 0.799805 -93.4004c-3.59961 -18.5 -11.2002 -42.5 -18.5996 -58.7002c-5.5 -12.1992 -19.3008 -35.7998 -25.4004 -43.5\nc-3.09961 -3.89941 -3.09961 -3.89941 -1.40039 4.60059c2.30078 11.2002 -0.599609 31.5996 -7.39941 52.2998c-20.7002 62.9004 -80.5 149 -122.9 202.3c23.2998 21.4004 41 38.2998 64.2998 52.7998c11.8008 7.40039 28.7002 13.9004 36 13.9004\nc7.10059 0 57.7002 -50.2998 74.6006 -130.3zM141.3 405c-14.5996 -0.700195 -14 0.0996094 9.40039 11.2002c81.2002 38.2998 170 27.5996 233.899 -11.7002c-13.3994 0.599609 -43.5 5.90039 -107.399 -25.2002c-11.2002 -5.5 -20.9004 -9.7998 -21.6006 -9.7002\nc-4.59961 0.900391 -66.5996 37.9004 -114.3 35.4004z\" />\n    <glyph glyph-name=\"yandex\" unicode=\"&#xf413;\" horiz-adv-x=\"256\" \nd=\"M153.1 132.2l-87.3994 -196.2h-63.7002l96 209.8c-45.0996 22.9004 -75.2002 64.4004 -75.2002 141.101c-0.0996094 107.399 68 161.1 148.9 161.1h82.2998v-512h-55.0996v196.2h-45.8008zM198.9 401.5h-29.4004c-44.4004 0 -87.4004 -29.4004 -87.4004 -114.6\nc0 -82.3008 39.4004 -108.801 87.4004 -108.801h29.4004v223.4z\" />\n    <glyph glyph-name=\"yandex-international\" unicode=\"&#xf414;\" horiz-adv-x=\"320\" \nd=\"M129.5 -64v166.1l-111 297.9h55.7998l81.7998 -229.7l94.1006 277.7h51.2998l-120.7 -347.8v-164.2h-51.2998z\" />\n    <glyph glyph-name=\"apple-pay\" unicode=\"&#xf415;\" horiz-adv-x=\"640\" \nd=\"M116.9 289.5c-7.5 -8.90039 -19.5 -15.9004 -31.5 -14.9004c-1.5 12 4.39941 24.8008 11.2998 32.6006c7.5 9.09961 20.5996 15.5996 31.2998 16.0996c1.2002 -12.3994 -3.7002 -24.7002 -11.0996 -33.7998zM127.8 272.3c6.7998 -0.5 26.2998 -2.5 38.7998 -21.0996\nc-1 -0.799805 -23.1992 -13.5 -22.8994 -40.2998c0.299805 -32 28 -42.6006 28.2998 -42.9004c-0.200195 -0.799805 -4.40039 -15.0996 -14.5 -29.9004c-8.90039 -13 -18 -25.6992 -32.5 -26c-14 -0.199219 -18.7002 8.40039 -34.7998 8.40039\nc-16 0 -21.2002 -8.09961 -34.5 -8.59961c-14 -0.5 -24.6006 13.7998 -33.5 26.7998c-18.2002 26.2998 -32.1006 74 -13.2998 106.3c9.09961 16.0996 25.6992 26.2002 43.5996 26.5c13.7998 0.299805 26.4004 -9.09961 34.7998 -9.09961\nc8.2002 0 23.1006 10.8994 40.5 9.89941zM228.2 308.5h73.2002c37.6992 0 64.0996 -26 64.0996 -64s-26.7998 -64.2998 -65.0996 -64.2998h-41.9004v-66.6006h-30.2998v194.9zM258.5 283v-77.4004h34.7998c26.4004 0 41.4004 14.2002 41.4004 38.8008\nc0 24.5996 -15 38.5996 -41.2998 38.5996h-34.9004zM420.7 112.1c-28.1006 0 -47.7002 16.8008 -47.7998 42c0 25 19 39.4004 54.0996 41.5l37.7998 2.30078v10.7998c0 15.8994 -10.3994 24.5 -28.8994 24.5c-15.2002 0 -26.3008 -7.90039 -28.6006 -19.9004h-27.2998\nc0.900391 25.2002 24.7002 43.6006 56.7998 43.6006c34.6006 0 57.1006 -18.2002 57.1006 -46.3008v-97h-28v23.4004h-0.600586c-8 -15.2998 -25.5996 -24.9004 -44.5996 -24.9004zM428.9 135.2c20.5 0 36 13 36 31.2002v11l-33.6006 -2.10059\nc-18.8994 -1.09961 -28.7998 -8.2002 -28.7998 -20.5c0 -11.7998 10.2998 -19.5996 26.4004 -19.5996zM531.4 60.5996c-2.30078 0 -9.80078 0.300781 -11.6006 0.700195v23.4004c1.90039 -0.200195 6.5 -0.5 8.90039 -0.5c13.3994 0 20.8994 5.7002 25.5 20.2998\nl2.7998 8.59961l-51.2002 141.9h31.6006l35.5996 -115.1h0.599609l35.6006 115.1h30.7998l-53.0996 -149c-12.1006 -34.0996 -26 -45.4004 -55.5 -45.4004z\" />\n    <glyph glyph-name=\"cc-apple-pay\" unicode=\"&#xf416;\" horiz-adv-x=\"576\" \nd=\"M302.2 229.6c0 -17.1992 -10.5 -27.0996 -29 -27.0996h-24.2998v54.2002h24.3994c18.4004 0 28.9004 -9.7998 28.9004 -27.1006zM349.7 167c0 8.59961 6.89941 13.5 20.2002 14.4004l23.5 1.5v-7.7002c0 -12.7998 -10.8008 -21.9004 -25.2002 -21.9004\nc-11.2998 0 -18.5 5.40039 -18.5 13.7002zM576 369v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h480c26.5 0 48 -21.5 48 -48zM127.8 250.8c8.40039 -0.700195 16.7998 4.2002 22.1006 10.4004\nc5.19922 6.39941 8.59961 15 7.69922 23.7002c-7.39941 -0.300781 -16.5996 -4.90039 -21.8994 -11.3008c-4.7998 -5.5 -8.90039 -14.3994 -7.90039 -22.7998zM188.4 176.3c-0.200195 0.200195 -19.6006 7.60059 -19.8008 30c-0.199219 18.7002 15.3008 27.7002 16 28.2002\nc-8.7998 13 -22.3994 14.4004 -27.0996 14.7002c-12.2002 0.700195 -22.5996 -6.90039 -28.4004 -6.90039c-5.89941 0 -14.6992 6.60059 -24.2998 6.40039c-12.5 -0.200195 -24.2002 -7.2998 -30.5 -18.6006c-13.0996 -22.5996 -3.39941 -56 9.2998 -74.3994\nc6.2002 -9.10059 13.7002 -19.1006 23.5 -18.7002c9.30078 0.400391 13 6 24.2002 6c11.2998 0 14.5 -6 24.2998 -5.90039c10.2002 0.200195 16.5 9.10059 22.8008 18.2002c6.89941 10.4004 9.7998 20.4004 10 21zM323.8 229.7c0 26.5996 -18.5 44.7998 -44.8994 44.7998\nh-51.2002v-136.4h21.2002v46.6006h29.2998c26.7998 0 45.5996 18.3994 45.5996 45zM413.8 206c0 19.7002 -15.7998 32.4004 -40 32.4004c-22.5 0 -39.0996 -12.9004 -39.7002 -30.5h19.1006c1.59961 8.39941 9.39941 13.8994 20 13.8994c13 0 20.2002 -6 20.2002 -17.2002\nv-7.5l-26.4004 -1.59961c-24.5996 -1.5 -37.9004 -11.5996 -37.9004 -29.0996c0 -17.7002 13.7002 -29.4004 33.4004 -29.4004c13.2998 0 25.5996 6.7002 31.2002 17.4004h0.399414v-16.4004h19.6006v68h0.0996094zM516 237.1h-21.5l-24.9004 -80.5996h-0.399414\nl-24.9004 80.5996h-22.2998l35.9004 -99.2998l-1.90039 -6c-3.2002 -10.2002 -8.5 -14.2002 -17.9004 -14.2002c-1.69922 0 -4.89941 0.200195 -6.19922 0.300781v-16.4004c1.19922 -0.400391 6.5 -0.5 8.09961 -0.5c20.7002 0 30.4004 7.90039 38.9004 31.7998z\" />\n    <glyph glyph-name=\"fly\" unicode=\"&#xf417;\" horiz-adv-x=\"384\" \nd=\"M197.8 20.2002c12.9004 -11.7002 33.7002 -33.2998 33.2002 -50.7002c0 -0.799805 -0.0996094 -1.59961 -0.0996094 -2.5c-1.80078 -19.7998 -18.8008 -31.0996 -39.1006 -31c-25 0.0996094 -39.8994 16.7998 -38.7002 35.7998c1 16.2002 20.5 36.7002 32.4004 47.6006\nc2.2998 2.09961 2.7002 2.69922 5.59961 3.59961c3.40039 0 3.90039 -0.299805 6.7002 -2.7998zM331.9 380.7c23.8994 -40 27.7998 -73.2998 20.7998 -112.5c-15.2002 -69.9004 -103.601 -166.5 -155.9 -215.7c-1.7002 -1.59961 -1.39941 -1.40039 -3.5 -2.09961\nl-3.2998 0.0996094c-1.7002 0.599609 -4.5 3.5 -6.2002 5.09961c-58.7998 57.8008 -148.7 151.601 -155.8 233.801c-1.5 71.3994 29.2998 113.399 82.9004 141.3c9.89941 4.09961 37 17.2998 81.0996 17.2998c22 0.200195 51.0996 -4.5 76.5996 -15.2002\nc24.7002 -11.5 47 -26.3994 63.3008 -52.0996zM186.8 96.0996v325.7c-57.8994 -5.5 -72.7002 -89.2002 -69.2998 -136.7c4.09961 -58.2998 41.2998 -137.899 69.2998 -189zM328.7 268c15.7998 54.9004 -10.9004 134.7 -99.7002 153\nc38.2002 -25.5996 49.5996 -85.5 48 -131.4c-2 -58.5996 -39.4004 -140 -67.2002 -191.899c41.6006 42.2998 102.5 113.5 118.9 170.3z\" />\n    <glyph glyph-name=\"node\" unicode=\"&#xf419;\" horiz-adv-x=\"640\" \nd=\"M316.3 -4c-2.09961 0 -4.2002 0.599609 -6.09961 1.59961l-19.2002 11.4004c-2.90039 1.59961 -1.5 2.2002 -0.5 2.5c3.7998 1.2998 4.59961 1.59961 8.7002 4c0.399414 0.200195 1 0.0996094 1.39941 -0.0996094l14.8008 -8.80078\nc0.5 -0.299805 1.2998 -0.299805 1.7998 0l57.7998 33.4004c0.5 0.299805 0.900391 0.900391 0.900391 1.59961v66.7002c0 0.700195 -0.300781 1.2998 -0.900391 1.60059l-57.7998 33.2998c-0.5 0.299805 -1.2002 0.299805 -1.7998 0l-57.8008 -33.2998\nc-0.599609 -0.300781 -0.899414 -1 -0.899414 -1.60059v-66.7002c0 -0.599609 0.399414 -1.19922 0.899414 -1.5l15.8008 -9.09961c8.59961 -4.2998 13.8994 0.799805 13.8994 5.7998v65.9004c0 0.899414 0.700195 1.7002 1.7002 1.7002h7.2998\nc0.900391 0 1.7002 -0.700195 1.7002 -1.7002v-65.9004c0 -11.5 -6.2002 -18 -17.0996 -18c-3.30078 0 -6 0 -13.3008 3.60059l-15.1992 8.69922c-3.7002 2.2002 -6.10059 6.2002 -6.10059 10.5v66.7002c0 4.2998 2.2998 8.40039 6.10059 10.5l57.7998 33.4004\nc3.7002 2.09961 8.5 2.09961 12.0996 0l57.7998 -33.4004c3.7002 -2.2002 6.10059 -6.2002 6.10059 -10.5v-66.7002c0 -4.2998 -2.2998 -8.39941 -6.10059 -10.5l-57.7998 -33.3994c-1.7002 -1.10059 -3.7998 -1.7002 -6 -1.7002zM363 61.7998\nc0 -12.5996 -10.5 -19.7998 -29 -19.7998c-25.2998 0 -30.5996 11.5996 -30.5996 21.2998c0 1 0.799805 1.7002 1.69922 1.7002h7.5c0.900391 0 1.60059 -0.599609 1.7002 -1.40039c1.10059 -7.59961 4.5 -11.3994 19.7998 -11.3994\nc12.2002 0 17.4004 2.7002 17.4004 9.2002c0 3.69922 -1.5 6.39941 -20.4004 8.2998c-15.7998 1.59961 -25.5996 5 -25.5996 17.7002c0 11.5996 9.7998 18.5996 26.2998 18.5996c18.5 0 27.6006 -6.40039 28.7998 -20.2002\nc0.100586 -0.5 -0.0996094 -0.899414 -0.399414 -1.2998c-0.299805 -0.299805 -0.700195 -0.5 -1.2002 -0.5h-7.5c-0.799805 0 -1.40039 0.5 -1.59961 1.2998c-1.80078 8 -6.2002 10.6006 -18.1006 10.6006c-13.2998 0 -14.7998 -4.60059 -14.7998 -8.10059\nc0 -4.2002 1.7998 -5.39941 19.7998 -7.7998c17.7998 -2.40039 26.2002 -5.7002 26.2002 -18.2002zM417.5 111.9c0 -6.10059 -5 -11.1006 -11.0996 -11.1006c-6.10059 0 -11.1006 5 -11.1006 11.1006c0 6.2998 5.2002 11.0996 11.1006 11.0996\nc6 0.0996094 11.0996 -4.7998 11.0996 -11.0996zM415.7 111.9c0 5.19922 -4.2002 9.2998 -9.40039 9.2998c-5.09961 0 -9.2998 -4.10059 -9.2998 -9.2998c0 -5.2002 4.2002 -9.40039 9.2998 -9.40039c5.2002 0.0996094 9.40039 4.2998 9.40039 9.40039zM411.2 105.7\nh-2.60059c-0.0996094 0.599609 -0.5 3.7998 -0.5 3.89941c-0.199219 0.700195 -0.399414 1.10059 -1.2998 1.10059h-2.2002v-5h-2.39941v12.5h4.2998c1.5 0 4.40039 0 4.40039 -3.2998c0 -2.30078 -1.5 -2.80078 -2.40039 -3.10059\nc1.7002 -0.0996094 1.7998 -1.2002 2.09961 -2.7998c0.100586 -1 0.300781 -2.7002 0.600586 -3.2998zM408.4 114.5c0 1.7002 -1.2002 1.7002 -1.80078 1.7002h-2v-3.5h1.90039c1.59961 0 1.90039 1.09961 1.90039 1.7998zM137.3 257l-0.200195 -95\nc0 -1.2998 -0.699219 -2.59961 -1.7998 -3.2002c-1.09961 -0.700195 -2.59961 -0.700195 -3.7002 0l-36.3994 20.9004c-2.2998 1.2998 -3.7002 3.7998 -3.7002 6.39941v44.4004c0 2.59961 -1.40039 5.09961 -3.7002 6.40039l-15.5 8.89941\nc-1.09961 0.700195 -2.39941 1 -3.7002 1c-1.2998 0 -2.5 -0.299805 -3.69922 -1l-15.5 -8.89941c-2.30078 -1.30078 -3.7002 -3.80078 -3.7002 -6.40039v-44.4004c0 -2.59961 -1.40039 -5 -3.7002 -6.39941l-36.4004 -20.9004\nc-1.19922 -0.700195 -2.59961 -0.700195 -3.69922 0c-1.10059 0.700195 -1.80078 1.90039 -1.80078 3.2002l-0.0996094 95c0 2.59961 1.40039 5.09961 3.7002 6.40039l61.2002 35.2998c1.09961 0.599609 2.19922 1 3.39941 1h0.600586\nc1.19922 -0.100586 2.39941 -0.400391 3.39941 -1l61.2998 -35.2998c2.30078 -1.30078 3.7002 -3.7002 3.7002 -6.40039zM472.5 360.7v-176.4c0 -2.59961 -1.40039 -5.09961 -3.7002 -6.39941l-61.2998 -35.4004c-2.2998 -1.2998 -5.09961 -1.2998 -7.40039 0\nl-61.2998 35.4004c-2.2998 1.2998 -3.7002 3.7998 -3.7002 6.39941v70.7998c0 2.60059 1.40039 5.10059 3.7002 6.40039l61.2998 35.4004c2.30078 1.2998 5.10059 1.2998 7.40039 0l15.2998 -8.80078c1.7002 -1 3.90039 0.300781 3.90039 2.2002v94\nc0 2.7998 3 4.60059 5.5 3.2002l36.5 -20.4004c2.2998 -1.19922 3.7998 -3.69922 3.7998 -6.39941zM426.5 231.8c0 0.700195 -0.400391 1.2998 -0.900391 1.60059l-21 12.1992c-0.599609 0.300781 -1.2998 0.300781 -1.89941 0l-21 -12.1992\nc-0.600586 -0.300781 -0.900391 -0.900391 -0.900391 -1.60059v-24.2998c0 -0.700195 0.400391 -1.2998 0.900391 -1.59961l21 -12.1006c0.599609 -0.299805 1.2998 -0.299805 1.7998 0l21 12.1006c0.599609 0.299805 0.900391 0.899414 0.900391 1.59961v24.2998h0.0996094\nzM636.3 232.5l-36.7002 -21.2998c-2.5 -1.40039 -5.59961 0.399414 -5.59961 3.2002v17.3994c0 1.2998 -0.799805 2.5 -1.90039 3.2002l-19.1992 11.0996c-1.10059 0.700195 -2.60059 0.700195 -3.7002 0l-19.2002 -11.0996\nc-1.2002 -0.700195 -1.90039 -1.90039 -1.90039 -3.2002v-22.2002c0 -1.2998 0.700195 -2.5 1.90039 -3.19922l61.7002 -35.4004c2.5 -1.40039 2.5 -5 0 -6.40039l-36.7998 -20.5c-2.30078 -1.2998 -5.10059 -1.2998 -7.30078 0l-60.8994 34.7002\nc-2.2998 1.2998 -3.7002 3.7002 -3.7002 6.40039v70.7998c0 2.59961 1.40039 5.09961 3.7002 6.40039l61.2998 35.3994c2.2998 1.2998 5.09961 1.2998 7.40039 0l60.8994 -35.3994c2.2998 -1.30078 3.7002 -3.80078 3.7002 -6.40039v-17.0996\nc0 -2.60059 -1.40039 -5.10059 -3.7002 -6.40039zM559 229l11.7998 6.7998c0.400391 0.299805 1 0.299805 1.40039 0l11.7998 -6.7998c0.400391 -0.200195 0.700195 -0.700195 0.700195 -1.2002v-13.5996c0 -0.5 -0.299805 -0.900391 -0.700195 -1.2002l-11.7998 -6.7998\nc-0.400391 -0.299805 -1 -0.299805 -1.40039 0l-11.7998 6.7998c-0.400391 0.200195 -0.700195 0.700195 -0.700195 1.2002v13.5996c0 0.5 0.299805 0.900391 0.700195 1.2002zM304.8 185.5c0 -0.599609 -0.0996094 -1.2002 -0.200195 -1.7002\nc-0.5 -2 -1.7998 -3.7002 -3.59961 -4.7002l-61 -35.1992c-2.2002 -1.30078 -5 -1.40039 -7.40039 0l-61.1992 35.1992c-2.10059 1.2002 -4 3.60059 -4 6.40039v70.4004c0 2.69922 1.59961 5.09961 3.89941 6.39941l61.1006 35.2002\nc2.39941 1.40039 5.2998 1.2002 7.39941 0l61.1006 -35.2002c2.2998 -1.2998 3.89941 -3.7998 3.89941 -6.39941v-70.4004zM230.5 310.4l-0.799805 -0.5h1.09961zM306.7 180.2l-0.400391 0.700195v-0.900391z\" />\n    <glyph glyph-name=\"osi\" unicode=\"&#xf41a;\" horiz-adv-x=\"512\" \nd=\"M8 181.56c2.2998 135.801 97.3994 232.441 213.799 248.102c138.8 18.5996 255.601 -75.7998 278 -201.101c21.2998 -118.8 -44 -230 -151.6 -274c-9.2998 -3.7998 -14.4004 -1.69922 -18 7.7002c-17.7998 46.2998 -35.5996 92.6328 -53.3994 138.999\nc-3.09961 8.10059 -1 13.2002 7 16.7998c24.2002 11 39.2998 29.4004 43.2998 55.8008c0.469727 3.01562 0.850586 7.94043 0.850586 10.9922c0 36.2061 -29.2764 68.1074 -65.3506 71.207c-39 3.40039 -71.7998 -23.6992 -77.5 -59.6992\nc-5.19922 -33 11.1006 -63.7002 41.9004 -77.7002c9.59961 -4.40039 11.5 -8.60059 7.7998 -18.4004c-17.8994 -46.5996 -35.7998 -93.2324 -53.7002 -139.899c-2.59961 -6.90039 -8.2998 -9.30078 -15.5 -6.5c-52.5996 20.2998 -101.399 61 -130.8 119\nc-24.8994 49.1992 -25.2002 87.6992 -26.7998 108.699zM28.8994 183.461c0.399414 -6.59961 0.599609 -14.3008 1.2998 -22.1006c6.2998 -71.9004 49.5996 -143.5 131 -183.101c3.2002 -1.5 4.39941 -0.799805 5.59961 2.2998c14.9004 39.1006 29.9004 78.2012 45 117.302\nc1.2998 3.2998 0.600586 4.7998 -2.39941 6.69922c-31.6006 19.9004 -47.3008 48.5 -45.6006 86c1 21.6006 9.2998 40.5 23.7998 56.3008c30 32.6992 77 39.7998 115.5 17.5996c25.3174 -14.5977 45.8643 -50.1641 45.8643 -79.3877\nc0 -3.05078 -0.296875 -7.98438 -0.664062 -11.0127c-3.59961 -30.5996 -19.2998 -53.8994 -45.7002 -69.7998c-2.69922 -1.59961 -3.5 -2.89941 -2.2998 -6c15.2002 -39.2002 30.2666 -78.4336 45.2002 -117.7c1.2002 -3.09961 2.40039 -3.7998 5.59961 -2.2998\nc35.5 16.6006 65.2002 40.2998 88.1006 72c34.7998 48.2002 49.0996 101.9 42.2998 161c-13.7002 117.5 -119.4 214.8 -255.5 198c-106.1 -13 -195.3 -102.5 -197.1 -225.8z\" />\n    <glyph glyph-name=\"react\" unicode=\"&#xf41b;\" horiz-adv-x=\"512\" \nd=\"M418.2 270.8c54.3994 -18.7002 93.7998 -48.0996 93.7998 -78.3994c0 -31.7002 -41.7998 -62.6006 -99.5 -81.7002c-3.09961 -1 -6.2002 -2 -9.40039 -2.90039c1.10059 -4.59961 2.10059 -9.09961 3 -13.5c11.4004 -57.5996 2.60059 -104.899 -24.3994 -120.5\nc-26.1006 -15.0996 -68.4004 -0.200195 -111.2 36.6006c-4.59961 4 -9.2002 8.09961 -13.5996 12.3994c-3.5 -3.39941 -7 -6.59961 -10.5 -9.7002c-44.2002 -38.6992 -89.6006 -54.6992 -116.601 -39.0996c-26.2002 15.0996 -34.3994 59.0996 -23.8994 114.6\nc1.19922 6.10059 2.5 12 4 18c-4.60059 1.30078 -9.10059 2.80078 -13.6006 4.30078c-55.5 19 -96.2998 50.2998 -96.2998 81.5c0 30.1992 38.2998 59.3994 91.7002 77.8994c5.89941 2.10059 12.2002 4.10059 18.5996 5.90039\nc-1.39941 5.59961 -2.59961 11.0996 -3.7002 16.7002c-11 56.3994 -3.19922 101.5 23 116.699c27.3008 15.9004 72.9004 -1.09961 118.4 -41.5c2.7998 -2.5 5.59961 -5.09961 8.2998 -7.69922c4 3.89941 8.2002 7.7998 12.5 11.5\nc43.4004 37.7998 86.2998 53.5 112.601 38.3994c27.2998 -15.7998 35.3994 -63.7002 23.0996 -123.3c-0.799805 -3.7002 -1.59961 -7.40039 -2.5 -11.0996c5.40039 -1.60059 10.7998 -3.30078 16.2002 -5.10059zM282.9 355.7c-4 -3.5 -7.80078 -7 -11.7002 -10.7002\nc15.3994 -16.7002 29.5996 -34.5 42.5996 -53.0996c22.6006 -2 45.1006 -5.60059 67.2998 -10.6006c0.900391 3.2998 1.60059 6.60059 2.30078 10c10.5996 51.5 4.09961 90.7002 -12.8008 100.4c-15.7998 9.09961 -50.5 -3.60059 -87.6992 -36zM167.2 140.5\nc-5 8.59961 -9.7002 17.2998 -14.2998 26.0996c-6.40039 -15.1992 -11.9004 -30.0996 -16.3008 -44.5c15.3008 -3.2998 30.8008 -5.7998 46.4004 -7.5c-5.5 8.5 -10.7002 17.2002 -15.7998 25.9004zM136.9 260.8c4.39941 -14.0996 9.69922 -28.7002 16 -43.5996\nc4.5 8.7998 9.2998 17.5 14.1992 26c4.90039 8.59961 10.1006 17.0996 15.4004 25.3994c-15.9004 -2 -31.2002 -4.59961 -45.5996 -7.7998zM164.3 191.9c6.7002 -13.8008 13.7998 -27.3008 21.5 -40.6006s15.9004 -26.2998 24.6006 -39\nc14.6992 -0.899414 29.8994 -1.39941 45.5996 -1.39941s31.2002 0.5 46.0996 1.59961c8.5 12.7998 16.6006 25.7002 24.2002 39c7.7002 13.4004 14.9004 27 21.6006 40.7998c-6.80078 13.7002 -14 27.2002 -21.7002 40.4004s-15.7998 26.0996 -24.2998 38.7002\nc-14.9004 1.09961 -30.3008 1.69922 -45.9004 1.69922s-30.9004 -0.599609 -45.9004 -1.69922c-8.59961 -12.7002 -16.7998 -25.6006 -24.3994 -38.9004c-7.60059 -13.2998 -14.7998 -26.7998 -21.4004 -40.5996zM344.9 140.7c-5 -8.60059 -10.1006 -17.2002 -15.5 -25.6006\nc15.7998 1.80078 31.5 4.5 47 8c-4.90039 15.1006 -10.5 29.8008 -16.9004 44.3008c-4.7002 -9 -9.5 -17.9004 -14.5996 -26.7002zM359.3 217.2c6.10059 14.2002 11.5 28.5996 16.1006 43.3994c-14.4004 3.30078 -29.8008 6 -45.9004 8\nc5.2998 -8.2998 10.4004 -16.6992 15.2998 -25.1992c5 -8.60059 9.7998 -17.4004 14.5 -26.2002zM256.2 329.7c-10 -10.9004 -20.1006 -22.9004 -29.9004 -35.7998c19.7998 0.899414 39.7002 0.899414 59.5 0c-9.2002 12.3994 -19.0996 24.3994 -29.5996 35.7998zM140.2 391\nc-15.7998 -9.09961 -22 -45.5996 -12.6006 -94c1.10059 -5.2002 2.2002 -10.4004 3.5 -15.5c22.2002 4.90039 44.6006 8.40039 67.2002 10.4004c13.1006 18.5996 27.4004 36.3994 42.9004 53.0996c-2.60059 2.40039 -5.10059 4.7998 -7.60059 7\nc-39.2998 34.7998 -76.5996 48.7998 -93.3994 39zM115.7 127.4c6.89941 22 15.2002 43.5996 24.7998 64.5c-9.5 20.5996 -17.7002 41.8994 -24.5 63.5996c-5.7998 -1.7002 -11.5996 -3.5 -17.2998 -5.5c-45.6006 -15.9004 -77.2002 -39.2998 -77.2002 -57.5996\nc1.90039 -12.1006 8.7002 -22.9004 18.7998 -29.9004c17.5 -13.9004 41.7002 -24.5 63 -31.2002c4.10059 -1.39941 8.2002 -2.7002 12.4004 -3.89941zM232.3 29.4004c3.2002 2.7998 6.40039 5.7998 9.60059 8.89941c-15.5 16.7998 -30 34.7002 -43.2002 53.4004\nc-22.9004 1.7002 -45.5 5 -67.9004 9.7998c-1.39941 -5.5 -2.59961 -11.0996 -3.7002 -16.7002c-9 -47.5 -2.39941 -82.7998 13.5 -92c11.4004 -4.5 24.2002 -4 35.3008 1.2998c20.7998 8.2002 39.8994 20.2002 56.3994 35.3008zM256.8 53.7002\nc10.5 11.5996 20.4004 23.7002 29.6006 36.3994c-10 -0.5 -20.1006 -0.699219 -30.4004 -0.699219c-10 0 -19.9004 0.199219 -29.5 0.599609c9.90039 -13.0996 20.0996 -25.2998 30.2998 -36.2998zM387.5 23.7002c3.2002 22.2002 2.40039 44.7002 -2.5 66.2998\nc-0.799805 4 -1.7002 8.09961 -2.7002 12.2002c-22.5 -5.10059 -45.2998 -8.60059 -68.2002 -10.5c-12.7998 -18.7998 -26.8994 -36.7002 -42.1992 -53.6006c4.2998 -4 8.5 -7.89941 12.6992 -11.5c36.6006 -31.3994 70.5 -43.3994 86.4004 -34.1992\nc9.59961 7.69922 15.5996 19.0996 16.5 31.2998zM405.7 131.2c49.8994 16.5 84.7998 41.7998 84.7998 61.3994c0 18.2002 -32.7002 42 -79.2998 58c-4.7998 1.60059 -9.7998 3.2002 -15 4.7002c-6.7998 -21.5 -14.9004 -42.5 -24.5 -62.8994\nc9.89941 -20.7002 18.5 -42 25.5 -63.8008c2.89941 0.800781 5.7002 1.7002 8.5 2.60059zM256 146.2c-25.2998 0 -45.7998 20.5 -45.7998 45.7998s20.5 45.7998 45.7998 45.7998s45.7998 -20.5 45.7998 -45.7998s-20.5 -45.7998 -45.7998 -45.7998z\" />\n    <glyph glyph-name=\"autoprefixer\" unicode=\"&#xf41c;\" horiz-adv-x=\"640\" \nd=\"M318.4 432l164.1 -480h-77.5l-25.2002 81.4004h-119.5l-25.3994 -81.4004h-77.5zM278.1 90.0996h83.6006l-40.9004 130.4h-1.5zM640 43l-158.5 -9.5l-19.4004 56.5l167.9 -15.5996zM177.9 90l-19.4004 -56.4004l-158.5 9.40039l10 31.2998z\" />\n    <glyph glyph-name=\"less\" unicode=\"&#xf41d;\" horiz-adv-x=\"640\" \nd=\"M612.7 229c0 -11 6.7998 -22.5996 27.2998 -23.2998v-27.2998c-20.5 -1 -27.2998 -12.6006 -27.2998 -23.6006c0 -20.3994 3.2002 -32 3.2002 -54.5996c0 -34.2002 -12.7002 -45.2002 -40.5 -45.2002h-20.5v25.2002h6.2998v0.5c13.5996 0 17.2998 4.7002 17.2998 22.5996\nc0 17.2998 -1.59961 32.6006 -1.59961 51.5c0 24.2002 7.7998 33.6006 23.5996 37.2998v1.60059c-15.7002 3.7002 -23.5996 13.0996 -23.5996 37.2998c0 18.9004 1.59961 35.2002 1.59961 51.5c0 17.4004 -3.09961 22.0996 -17.2998 22.0996h-6.2998v24.2002h20.5\nc27.8994 0 40.5 -11 40.5 -45.2002c0 -22 -3.2002 -34.0996 -3.2002 -54.5996zM507.1 197c20.5 -6.7998 43 -18.9004 43 -47.7998c0 -28.9004 -22.5996 -51 -64.5996 -51c-20 0 -44.0996 9 -59.9004 22.0996l21 30.5c14.2002 -11 27.4004 -16.2998 40.5 -16.2998\nc14.2002 0 20.5 5.2002 20.5 13.0996c0 10.5 -15.7998 15.8008 -32.0996 22.1006c-18.9004 7.2998 -41.5 20.5 -41.5 46.2002c0 28.8994 24.2002 49.3994 59.9004 49.3994c24.1992 0 42.0996 -10.5 55.1992 -20.5l-21 -27.7998c-11.5 8.40039 -22 13.0996 -33.5996 13.0996\ns-17.9004 -4.69922 -17.9004 -12.5996c0 -10.5 14.7002 -14.2002 30.5 -20.5zM148.2 137.6c1.59961 0 3.09961 0 6.2002 0.800781l5.2998 -34.2002c-5.7002 -2.10059 -13.6006 -3.7002 -23.6006 -3.7002c-32.0996 0 -43.0996 21 -43.0996 53.0996v150.801h-14.0996\nc-13.6006 0 -17.3008 -4.80078 -17.3008 -22.1006s1.60059 -32.5996 1.60059 -51.5c0 -24.2002 -7.7998 -33.5996 -23.6006 -37.2998v-1.59961c15.7002 -3.7002 23.6006 -13.1006 23.6006 -37.3008c0 -19.3994 -1.60059 -34.1992 -1.60059 -51.5\nc0 -17.2998 4.2002 -22.5996 17.3008 -22.5996h6.2998v-24.2002h-20.5c-27.9004 0 -40.5 11 -40.5 45.2002c0 22.5996 3.2002 34.2002 3.2002 53.5996c0 11 -6.80078 22.6006 -27.3008 23.1006v27.2998c20.5 1 27.3008 12.5996 27.3008 23.5996\nc0 19.4004 -3.2002 32 -3.2002 54.6006c0 34.2002 12.5996 45.2002 41 45.2002h74.5996v-178.2c0 -9.90039 4.7002 -13.1006 8.40039 -13.1006zM379.9 197c20.5 -6.7998 43.0996 -18.9004 43 -47.7998c0 -28.9004 -22.6006 -51 -64.6006 -51\nc-20 0 -44.0996 9 -59.8994 22.0996l20.5 30.5c14.1992 -11 27.3994 -16.2998 40.5 -16.2998c14.1992 0 20.5 5.2002 20.5 13.0996c0 10.5 -15.8008 15.8008 -32.1006 22.1006c-18.8994 7.2998 -41.5 20.5 -41.5 46.2002c0 28.8994 24.2002 49.3994 59.9004 49.3994\nc24.2002 0 42.0996 -10.5 55.2002 -20.5l-21 -27.7998c-11.5 8.40039 -22 13.0996 -33.6006 13.0996c-11.5996 0 -17.8994 -4.69922 -17.8994 -12.5996c0 -10.5 14.6992 -14.2002 31 -20.5zM224.9 265.8c44.0996 0 67.2998 -33.0996 66.6992 -75.7002\nc0 -8.39941 -1.09961 -15.6992 -1.59961 -19.3994h-95.2002c4.2002 -24.2002 20.5 -34.2002 41.5 -34.2002c11.6006 0 22.6006 3.2002 34.2002 10l15.7998 -27.7998c-16.2998 -11.1006 -37.2998 -17.9004 -56.2002 -17.9004c-45.0996 0 -79.2998 30.5 -79.2998 82.5\nc-1 50.4004 35.7002 82.5 74.1006 82.5zM194.9 199.6h56.7998c0 17.9004 -7.40039 31 -26.2998 31c-14.7002 0 -27.3008 -10 -30.5 -31z\" />\n    <glyph glyph-name=\"sass\" unicode=\"&#xf41e;\" horiz-adv-x=\"640\" \nd=\"M301.84 69.0801c-0.299805 -0.599609 -0.599609 -1.08008 0 0zM550.97 156.08c57.9092 0.300781 90.5703 -37.0801 88.9707 -71.0801c-1.10059 -26.9004 -25.6904 -37.9004 -30.29 -38.7002c-3.30078 -0.599609 -5.10059 -0.700195 -5.60059 1.90039\nc-0.299805 1.7998 0.900391 2.7002 4.7998 5.09961c3.90039 2.40039 15.6006 10.5 17.7002 25c2.10059 14.5 -8.7998 49.2998 -64.4795 55.7998c-26 3 -46.3906 -0.599609 -62.0898 -7.19922c2.89941 -7.60059 5.09961 -15.5 5.39941 -23.4004\nc0.799805 -17.5 -11.29 -30.4004 -23.79 -39.5996c-5.48535 -3.98535 -15.1572 -8.95801 -21.5898 -11.1006c-5.2002 -2.2002 -12.2002 -4.5 -17.0996 -3.5c-10.9004 2.2002 -16.7002 11.7998 -9.30078 33.1006c4 11.5 15.5 29 34.0908 44.0996\nc-4.30078 8.7002 -8.99023 17.5996 -11.3906 25.7002c-2.18164 7.00781 -4.95898 18.5664 -6.2002 25.7998c0 0 -15.2998 -31.7197 -35.0898 -60.6201c-1.09961 -1.7002 -2.2998 -3.39941 -3.39941 -5c3.7998 -9 6.89941 -18.5996 7.2998 -28.2002\nc0.700195 -17.3994 -6.90039 -30.5996 -19.4004 -39.7998c-5.16211 -3.70605 -14.208 -8.45508 -20.1895 -10.5996c-3.90039 -1.7998 -12 -4.60059 -23.5 -5.40039c-6.29004 -0.5 -12.29 -0.0996094 -15.6904 2.5c-4.59961 3.40039 -5.2002 7.7998 -2.7998 13.7002\nc2 5 17.21 22.4004 30 37.5996c3.5 4.2002 6.90039 8.5 9.90039 12.5c-0.0498047 0.0449219 -0.09375 0.134766 -0.100586 0.200195c0 0 2.2998 3 6.10059 8.2002c-4.7002 10.0996 -10.6006 20.5 -13.4004 30c-2.18164 7.00781 -4.95898 18.5664 -6.2002 25.7998\nc0 0 -15.4902 -39.7002 -31.6895 -71.5c-12.4902 -24.5996 -20.79 -39.5 -24.5908 -46v-0.299805s-0.5 -0.900391 -1.5 -2.40039c-0.5 -0.799805 -0.699219 -1.19922 -0.699219 -1.19922v0.0996094c-4.20996 -6.2002 -13.6104 -18.2998 -23 -18.2998\nc-25.7002 0 -16.3008 52.2002 -16.3008 52.2002s-7.5 -19.3008 -16 -35.9004c-6.88965 -13.5996 -13.0898 -25 -26.8896 -25c-3.90039 0 -10.1904 0.0996094 -15.3896 5c-11.8008 11.2002 -20.9004 39.7002 -19.1006 61.7002c1.5 18.7998 4.40039 31.7998 8.40039 42.5996\nc-7.10059 -3.89941 -15.2002 -8.39941 -23.4902 -13.2998c-4.2998 -2.5 -8.59961 -5 -12.7998 -7.5c0.0996094 -0.299805 0.299805 -0.5 0.400391 -0.799805c10.5996 -20.4004 13.3896 -65.2002 -9.60059 -99.5s-65.7803 -55.2002 -107.57 -43.6006\nc-13.3896 3.80078 -33.79 31.6006 -16.29 70.4004c15.4902 34.2002 77.3809 66.5996 93.6709 74.7002c1.39941 0.799805 2.89941 1.59961 4.5 2.5c-32.4902 28.3994 -113.671 66.7998 -125.061 125.7c-3.2002 16.5996 4.58984 56.2998 53.2803 101.899\nc40.9902 38.2998 97.9697 67.7002 150.66 86.4004c88.4297 31.3994 181.949 12.8994 196.31 -43.5c14.1006 -55.5 -33.9902 -121.8 -95.7695 -145.601c-54.9902 -21.2998 -100.471 -17.8994 -119.17 -11.7998c-21.29 7 -33.79 21 -36.79 28.9004\nc-1.2002 3.09961 -3.30078 8.2998 0 10.0996c2 1.10059 2.7998 0.799805 8.09961 -5.09961c5.09961 -5.60059 25.4902 -20.6006 64.2803 -16.2998c101.77 11.3994 163.06 90.5 143.66 133c-13.4902 29.7998 -91.8408 43.1992 -189.841 -5.60059\nc-119.569 -59.5996 -126.069 -108.7 -127.069 -127.399c-2.7998 -51.3008 63.2793 -78.3008 99.0693 -116.5c0.5 -0.5 0.900391 -1 1.40039 -1.5c6.7002 3.69922 13.7998 7.59961 20.7002 11.3994c18 9.90039 35.0996 19.2002 43 23.5\nc12.5801 18.2998 38.1797 38.5 56.5801 38.5c29.4893 0 19.3896 -42.3994 19.3896 -42.3994s0.599609 2 1.40039 2c0.799805 0 4.09961 5.5 13.1992 2.19922c9.40039 -3.5 7.2002 -10 7.30078 -10.6992c0.0996094 -1.30078 -11 -38.9004 -15.7002 -63.1006\nc-2.2002 -11.5 -0.900391 -19.8994 -0.299805 -19.8994c0.899414 0 2.7998 2.89941 4.5 6.09961v0.0996094s1.2998 2.40039 3.5 6.7002c0 0.200195 -0.200195 -0.299805 -0.5 -0.799805c0.199219 0.400391 0.5 0.900391 0.899414 1.7002\nc2.60059 5 6.2002 12.3994 10.4004 21.5996c8.18945 18.1006 39.4795 87.7002 42.0801 95.4004c2.59961 7.7002 4 15.7002 5.2998 19.0996c1.2998 3.40039 12.4102 6 25.2998 5.90039c12.8906 -0.100586 14.1904 -5.60059 14.29 -6.7002\nc0.100586 -1.09961 -6.2002 -16.4004 -7.59961 -27.2002c-1.40039 -10.7998 -0.100586 -16.2002 1.09961 -25.2998c0.799805 -6 4.5 -13.5 8.90039 -22c13.2998 21.7998 36.79 63.5996 39.0898 75.2998c1.03613 5.38965 3.41016 13.9473 5.2998 19.1006\nc1.29004 3.39941 12.3896 6 25.29 5.89941c12.9004 -0.0996094 14.2002 -5.59961 14.2998 -6.7002c0.100586 -1.09961 -6.2002 -16.3994 -7.59961 -27.1992c-1.40039 -10.8008 -0.100586 -16.2002 1.09961 -25.3008c1 -7.7998 7.10059 -18.1992 13 -30.0996\nc15.1289 7.45215 41.0938 13.5 57.958 13.5h0.0419922zM121.79 11.3799c19.4004 21.0996 27.3896 47.9199 19.0996 78.3203c-1 -0.600586 -2 -1.10059 -2.89941 -1.7002c0 0 -0.400391 -0.200195 -1.2002 -0.700195c-4.7998 -2.89941 -8.7002 -5.2998 -11.4004 -6.89941\nc-11.7998 -7.40039 -29.5898 -19.4004 -43.3896 -32.4004c-22.6904 -21.4199 -27.3896 -51 -15.4902 -57.9199c11.0898 -6.40039 36.8906 1.2002 55.2803 21.2998zM256.15 102.78c4 9.7998 19.6992 53.2998 16.1992 59.2002c-2.59961 4.5 -13.6992 0.899414 -23.79 -10.4004\nc-6.2998 -7 -16.8994 -25 -21.8994 -40.0996c-9.90039 -30 -5.60059 -60.5 1.39941 -62.3008c8.2002 -2.09961 21.6904 37.9004 28.0908 53.6006zM367.15 49.7803c7.7998 4.7998 24.96 16.8994 25.0898 34.7998c0 0.599609 -0.100586 1.09961 -0.100586 1.59961\nc-3.98926 -5.19922 -7.68945 -9.89941 -10.8896 -13.8994c-5.5 -6.7998 -19.4004 -21.7002 -19.4004 -21.7002s-2 -1.90039 -1.09961 -2.40039c1.2002 -0.699219 3.7002 0.200195 6.40039 1.60059zM452.73 69.2803c9.68945 3.5 25.7998 11.8994 25.8994 34.3994\nc-0.0673828 3.06152 -0.918945 7.90039 -1.89941 10.8008c-10.4102 -9.2002 -16.4004 -18.8008 -19 -24.5c-6.7002 -14.6006 -7 -19.3008 -5 -20.7002z\" />\n    <glyph glyph-name=\"vuejs\" unicode=\"&#xf41f;\" \nd=\"M356.9 383.7h91.0996l-224 -383.7l-224 383.7h176l48 -88.6006l56 88.6006h76.9004zM55.7002 351.7l168.3 -288.2l168.2 288.2h-53.7998l-114.4 -198.2l-114.5 198.2h-53.7998z\" />\n    <glyph glyph-name=\"angular\" unicode=\"&#xf420;\" \nd=\"M185.7 179.9l38.0996 91.5996l38.1006 -91.5996h-76.2002zM223.8 416l207.8 -74.4004l-31.7998 -275.699l-176 -97.9004l-176 97.9004l-31.7998 275.699zM354 74.2002l-130.2 292.3l-130.1 -292.3h48.7002l26.1992 65.3994h110.601l26.2002 -65.3994h48.5996z\" />\n    <glyph glyph-name=\"aviato\" unicode=\"&#xf421;\" horiz-adv-x=\"640\" \nd=\"M107.2 164.5l-19 41.7998h-52.1006l-19 -41.7998h-17.0996l62.2002 131.4l62.2002 -131.4h-17.2002zM62.2002 262.6l-19.6006 -42.5h39.2002zM174.9 160.2l-62.2002 131.399h17.0996l45.1006 -96l45.0996 96h17zM255.5 164.5v127.1h15.5v-127.1h-15.5zM464.6 280.1\nv-115.6h-17.2998v115.6h-41.2002v11.5h99.6006v-11.5h-41.1006zM640 229.2c0 -9.2002 -1.7002 -17.7998 -5.09961 -25.7998c-3.40039 -8 -8.2002 -15.1006 -14.2002 -21.1006s-13.1006 -10.7998 -21.1006 -14.2002c-8 -3.39941 -16.5996 -5.09961 -25.7998 -5.09961\ns-17.7998 1.7002 -25.7998 5.09961c-8 3.40039 -15.0996 8.2002 -21.0996 14.2002s-10.8008 13 -14.2002 21.1006c-3.40039 8 -5.10059 16.5996 -5.10059 25.7998s1.7002 17.7998 5.10059 25.7998c3.39941 8 8.2002 15.0996 14.2002 21.0996s13 8.40039 21.0996 11.9004\nc8 3.40039 16.5996 5.09961 25.7998 5.09961s17.7998 -1.69922 25.7998 -5.09961s15.1006 -5.7998 21.1006 -11.9004c6 -6 10.7002 -13.0996 14.2002 -21.0996c3.39941 -8 5.09961 -16.5996 5.09961 -25.7998zM624.5 229.2c0 7.2998 -1.2998 14 -3.90039 20.2998\nc-2.59961 6.2998 -6.19922 11.7002 -10.7998 16.2998c-4.59961 4.60059 -10 8.2002 -16.2002 10.9004c-6.19922 2.7002 -12.7998 4 -19.7998 4s-13.5996 -1.2998 -19.7998 -4s-11.5996 -6.2998 -16.2002 -10.9004c-4.59961 -4.59961 -8.2002 -10 -10.7998 -16.2998\ns-3.90039 -13.0996 -3.90039 -20.2998c0 -7.2998 1.30078 -14 3.90039 -20.2998c2.59961 -6.30078 6.2002 -11.7002 10.7998 -16.3008c4.60059 -4.59961 10 -8.19922 16.2002 -10.8994s12.7998 -4 19.7998 -4s13.6006 1.2998 19.7998 4\nc6.2002 2.7002 11.6006 6.2998 16.2002 10.8994c4.60059 4.60059 8.2002 10 10.7998 16.3008c2.60059 6.2998 3.90039 13.0996 3.90039 20.2998zM529.7 132.5c6 -0.900391 10.5 -6 10.7002 -12.2998c0 -6.7998 -5.60059 -12.4004 -12.4004 -12.4004\ns-12.4004 5.60059 -12.4004 12.4004c0 6.2002 4.60059 11.2998 10.5 12.2002v5.7998l-80.2998 -9v-5.40039c5.60059 -1.09961 9.90039 -6.09961 9.90039 -12.0996c0 -6.7998 -5.60059 -10.2002 -12.4004 -10.2002s-12.3994 3.40039 -12.3994 10.2002\nc0 5.89941 4.19922 11 9.89941 12.0996v4.90039l-28.3994 -3.2002v-23.7002h5.89941v-13.7998h-5.89941v6.59961h-5v-6.59961h-5.90039v13.7998h5.90039v23.2002l-38.3008 -4.2998c-8.09961 -11.5 -19 -13.6006 -19 -13.6006l0.100586 -6.69922l5.09961 -0.200195\nl0.100586 -12.1006h-4.10059l-0.0996094 5h-5.2002l-0.0996094 -5h-4.10059l0.100586 12.1006l5.09961 0.200195l0.0996094 6.69922s-10.8994 2.2002 -19 13.6006l-38.2998 4.2998v-23.2002h5.90039v-13.7998h-5.90039v6.59961h-5v-6.59961h-5.89941v13.9004h5.89941\nv23.6992l-28.3994 3.2002v-4.89941c5.59961 -1.10059 9.89941 -6.10059 9.89941 -12.1006c0 -6.7998 -5.59961 -10.2002 -12.3994 -10.2002c-6.80078 0 -12.4004 3.40039 -12.4004 10.2002c0 5.90039 4.2002 11 9.90039 12.1006v5.39941l-80.3008 9v-5.7998\nc5.90039 -0.900391 10.5 -6 10.5 -12.2002c0 -6.7998 -5.59961 -12.3994 -12.3994 -12.3994s-12.4004 5.59961 -12.4004 12.3994c0 6.2002 4.60059 11.2998 10.5 12.2002v6.2998l-88.8994 10l242.899 -13.5c-0.599609 2.2002 -1.09961 4.60059 -1.39941 7.2002\nc-0.300781 2.09961 -0.5 4.2002 -0.600586 6.5l-64.7998 8.09961l64.9004 -1.89941c0 0.399414 0 0.799805 0.0996094 1.09961c2.7998 17.2002 25.5 23.7002 25.5 23.7002l1.09961 26.4004h-23.5996l-19 -41.8008h-17.0996l62.1992 131.4l62.2002 -131.4h-17.0996\nl-19 41.8008h-23.7998l1.09961 -26.3008s22.7002 -6.5 25.5 -23.6992c0 -0.400391 0.0996094 -0.700195 0.0996094 -1.10059l64.9004 1.90039l-64.7998 -8.10059c-0.100586 -2.2998 -0.299805 -4.5 -0.600586 -6.5c-0.299805 -2.59961 -0.799805 -5 -1.39941 -7.19922\nl242.899 13.3994l-88.8994 -10v-6.2998zM328.9 220.1h17.8994l1.7002 40.3008l1.7002 -40.3008h17.8994l-19.5996 42.5z\" />\n    <glyph glyph-name=\"ember\" unicode=\"&#xf423;\" horiz-adv-x=\"640\" \nd=\"M639.9 193.4c1.09961 -10.8008 -5.30078 -14.3008 -5.30078 -14.3008s-26.5996 -19.5996 -47 -13.6992c-20.3994 5.89941 -21.5 43.1992 -21.5 43.1992h-1.89941l-20.7002 -57.1992s-8.2998 -27.9004 -20.7002 -22.8008\nc-12.3994 5.10059 -12.0996 18.6006 -12.0996 18.6006s-19.2998 -21.2998 -54.7998 -18.6006c-31.1006 2.30078 -41.1006 26.7002 -41.1006 26.7002s-20.7998 -14.3994 -79.0996 -25.8994c-26.1006 -2.90039 -44.6006 12.8994 -44.6006 12.8994\nc-2.39941 -2.39941 -18 -10.2002 -18 -10.2002s-22.2998 -10.2998 -30.8994 5.30078c-8.60059 15.5996 -3 63.6992 -3 63.6992h-1.60059s-12.8994 -26.2998 -19.5996 -49.8994c-6.7002 -23.6006 -15 -21.2002 -15 -21.2002s-15.2998 -1.40039 -18.7998 11.4004\nc-3.5 12.8994 5.59961 59.6992 5.59961 59.6992l-1.2998 -0.299805s-0.799805 1.40039 -12.5996 -23.5996c-20.1006 -48.9004 -24.9004 -50 -36.5 -47.9004c-11.6006 2.10059 -12.1006 16.7002 -12.1006 16.7002l-15.8994 -8.7998s-38.6006 -16.6006 -58.8008 -1.2998\nc-13.3994 10.1992 -18 22.1992 -19.5996 29.6992c0 0 -17 1.80078 -28.0996 6.10059c-11.1006 4.2998 0.0996094 18.2998 0.0996094 18.2998s3.5 5.2998 10 0s18.7998 -2.90039 18.7998 -2.90039c1 8.5 2.5 19.7002 7.7998 31.5c11 24.7002 27.6006 33 41.3008 33.3008\nc13.6992 0.199219 23.3994 -3.5 31.6992 -15.3008c18.6006 -45.8994 -49.3994 -69.1992 -49.3994 -69.1992s-1.7998 -12.1006 16.7002 -11.8008c18.5996 0.200195 46.7998 20.4004 46.7998 20.4004c1.2998 15.4004 12.0996 63.5 15 70.7002\nc2.89941 7.2002 14.2002 5.89941 14.2002 5.89941s8.89941 1.90039 10.5 -7.5c1.69922 -9.39941 -6.40039 -47.5996 -6.40039 -47.5996l1.2998 -1.59961c0.799805 3.69922 20.4004 36.5 20.4004 36.5s11.2998 19.5996 28.5 18.7998s-0.799805 -53.5 -0.799805 -53.5\nl1.2998 -1.60059l1.2998 2.40039c2.2002 5.90039 27.7002 44.5996 27.7002 44.5996s9.59961 11.3008 18.5 8.60059c8.7998 -2.60059 9.39941 -6.7002 9.89941 -14.2002s-7 -52.0996 -7 -52.0996s-4.2998 -29.2002 5.40039 -28.7002s20.2002 10.7002 20.2002 10.7002\ns7.5 57.5996 12.5996 105.1c5.10059 47.5 27.1006 79.5 27.1006 79.5s6.5 10 23.5 16.7002c11.1992 4 23.3994 1.2998 29.1992 -23.1006c9.5 -41 -23.2998 -87.8994 -36.8994 -105.199c5.89941 5.7998 15.7998 12.0996 27.2002 5.2998\nc40.2998 -25.2998 7.2998 -80.9004 7.2998 -80.9004c11.7998 3.7998 33 18 33 18s0.5 6.10059 0.700195 7.5c7.19922 41.2998 32 56.2002 36.5996 59.7002c4.7998 3.59961 47.0996 19.7998 49 -24s-52.9004 -59.0996 -52.9004 -59.0996s4.80078 -12.6006 25 -9.40039\nc20.2002 3.2002 43.3008 22.7998 43.3008 22.7998c0.799805 18 12.5996 61 15 67.2002c2.39941 6.2002 17.1992 6.5 18.7998 3c2.2002 -7 0.299805 -37.5996 0.299805 -37.5996l1.59961 0.5c5.90039 17.5 18.3008 31.1992 18.3008 31.1992s9.89941 9.7002 18 7.30078\nc8.09961 -2.30078 5.09961 -30.4004 5.09961 -30.4004s-4.2998 -30.7002 9.40039 -32c13.6992 -1.40039 29.2998 10.7002 29.2998 10.7002s9.59961 3.89941 10.7002 -6.7998zM61.9004 188.1c0 0 6.19922 -1.89941 19.8994 7.60059\nc13.7002 9.39941 16.4004 24.3994 9.10059 31.3994c-7.2002 6.90039 -28.2002 -7 -29 -39zM334.7 311.9c0 0 -15.9004 -54.5 -16.4004 -70.7002c0 0 44.5 72 40 96.2002c-4.5 24.1992 -23.5996 -25.5 -23.5996 -25.5zM357.5 173.5\nc12.5996 33.0996 -3.59961 45.5 -3.59961 45.5s-23.4004 12.9004 -33.3008 -20.2002c-9.89941 -33.0996 -6.39941 -44.8994 -6.39941 -44.8994s30.7002 -13.4004 43.2998 19.5996zM442.1 188.1c0 0 15.7002 -1.09961 26.4004 14.2002s1.2998 25.5 1.2998 25.5\ns-8.59961 11.1006 -19.5996 -9.09961c-11.1006 -20.1006 -8.10059 -30.6006 -8.10059 -30.6006z\" />\n    <glyph glyph-name=\"font-awesome-flag\" unicode=\"&#xf425;\" \nd=\"M444.373 88.5762c0 -7.16797 -6.14453 -10.2402 -13.3125 -13.3125c-28.6719 -12.2881 -59.3916 -23.5518 -92.1592 -23.5518c-46.0801 0 -67.584 28.6719 -122.88 28.6719c-39.9365 0 -81.9209 -14.3359 -115.713 -29.6953\nc-2.04785 -1.02441 -4.0957 -1.02441 -6.14355 -2.04883v-77.8232c0 -21.4053 -16.1221 -34.8164 -33.792 -34.8164c-19.4561 0 -34.8164 15.3604 -34.8164 34.8164v374.783c-13.3115 10.2402 -22.5273 26.624 -22.5273 45.0566c0 31.7441 25.5996 57.3438 57.3438 57.3438\ns57.3438 -25.5996 57.3438 -57.3438c0 -18.4326 -8.19141 -34.8164 -22.5273 -45.0566v-31.7432c4.12402 1.37402 58.7676 28.6719 114.688 28.6719c65.2705 0 97.6758 -27.6484 126.976 -27.6484c38.9121 0 81.9209 27.6484 92.1602 27.6484\nc8.19238 0 15.3604 -6.14453 15.3604 -13.3125v-240.64z\" />\n    <glyph glyph-name=\"gitter\" unicode=\"&#xf426;\" horiz-adv-x=\"384\" \nd=\"M66.4004 125.5h-50.4004v322.5h50.4004v-322.5zM166.9 371.9v-435.9h-50.4004v435.9h50.4004zM267.5 371.9v-435.9h-50.4004v435.9h50.4004zM368 372v-247h-50.4004v247h50.4004z\" />\n    <glyph glyph-name=\"hooli\" unicode=\"&#xf427;\" horiz-adv-x=\"640\" \nd=\"M144.5 96v16c12.2998 -6.59961 25.0996 -12.2002 38.2998 -16.7998zM202.2 101.3c29.5 -10.7002 55.3994 -13.5 75.2998 -13.2998c-24.7998 -7 -58.2002 -5.2998 -94.7002 7.2002l19.4004 0.799805v5.2998zM611.1 216.5c-16 0 -28.8994 13 -28.8994 28.9004\nc0 15.8994 13 24.5 28.8994 24.5c16 0 28.9004 -8.5 28.9004 -24.5s-13 -28.9004 -28.9004 -28.9004zM582.1 96v110.5h57.9004v-110.5h-57.9004zM508.4 96v168l57.8994 27.2998v-195.3h-57.8994zM477.4 215.4c18.0996 -18.1006 16.6992 -33.8008 16.7998 -52.6006\nc0 -18.7002 1.39941 -34.2998 -16.7998 -52.5c-18.1006 -18.2002 -50.4004 -17.0996 -50.4004 -17.0996s-32.2002 -1.10059 -50.4004 17.0996c-18.1992 18.2002 -16.7998 33.7998 -16.7998 52.5s-1.39941 34.4004 16.7998 52.6006\nc18.1006 18.1992 50.4004 17.0996 50.4004 17.0996s32.2002 1.09961 50.4004 -17.0996zM437.6 143.5v40.4004c0 8.7998 -7.2998 10.8994 -10.6992 10.8994c-3.40039 0 -10.7002 -2.2002 -10.7002 -10.8994v-40.4004c0 -3.59961 1.7998 -12.5 10.7002 -12.5\nc8.89941 0 10.6992 8.90039 10.6992 12.5zM331.4 215.4c18.1992 -18.1006 16.6992 -33.8008 16.6992 -52.3008c0 -18.6992 1.5 -34.2998 -16.6992 -52.5c-18.1006 -18.1992 -50.4004 -17.0996 -50.4004 -17.0996s-32.2002 -1.09961 -50.4004 17.0996\nc-18.1992 18.2002 -16.7998 33.8008 -16.7998 52.5c0 15.6006 -0.899414 29.1006 9.2998 43.7002c-16 11.7998 -58 37.4004 -99.8994 58.2998v-54.2998c8 13.7002 22.7002 22 38.5 21.9004c27.2002 0 40.5996 -18.7002 40.5996 -37.4004v-93.8994\nc-20.3994 7.5 -39.7002 17.3994 -57.7002 29.5996v48.7002c0 8.09961 -1.5 15 -10.5996 15s-10.7998 -11.2998 -10.7998 -18.2002v-29.7998l-4.5 3.59961c-22.9004 18.9004 -40.2998 35.6006 -53.4004 50.2998v-31c11 -9.7998 23.6006 -20.1992 38.4004 -31.3994\nc6.39941 -4.90039 12.8994 -9.40039 19.3994 -13.6006v-28.5996h-57.8994v73.7002c-86.7002 78 -61.7998 110.8 -61.7998 110.8c8.2998 18.2998 42.8994 22.2002 97.2998 0.0996094l22.5 10.6006v-20.7002c29.5996 -14.5996 63.8994 -31.5 102.1 -61.0996\nc1.60059 2.09961 3.40039 4.09961 5.2998 6c18.2002 18.1992 50.4004 17.0996 50.4004 17.0996s32.2002 1.09961 50.4004 -17.0996zM65.2002 264l29.2002 13.7002c-26.9004 10.0996 -50.9004 13.5 -64.4004 2.09961c-3.7002 -3.09961 -13.5 -24.5996 35.2002 -79.0996\nv63.2998zM291.7 143.5v40.4004c0 8.7998 -7.2998 10.8994 -10.7002 10.8994s-10.7002 -2.2002 -10.7002 -10.8994v-40.4004c0 -3.59961 1.7998 -12.5 10.7002 -12.5s10.7002 8.90039 10.7002 12.5z\" />\n    <glyph glyph-name=\"strava\" unicode=\"&#xf428;\" horiz-adv-x=\"384\" \nd=\"M158.4 448l150.199 -292h-88.5l-61.6992 116.1l-62.2002 -116.1h-89.2002zM308.6 156h67.6006l-111.5 -220l-112.2 220h67.5996l44.6006 -88.2002z\" />\n    <glyph glyph-name=\"stripe\" unicode=\"&#xf429;\" horiz-adv-x=\"640\" \nd=\"M165 303.3l0.0996094 -38.5h33.7002v-37.7998h-33.7002v-63.2002c0 -26.2002 28 -18 33.7002 -15.7002v-33.7998c-5.89941 -3.2002 -16.5996 -5.89941 -31.2002 -5.89941c-26.2998 0 -46.0996 17 -46.0996 43.2998l0.200195 142.399zM254.1 251.7\nc10.4004 19.0996 31.1006 15.2002 37.1006 13.0996v-40.7998c-5.7002 1.7998 -23.4004 4.5 -33.9004 -9.2998v-103.101h-44.2998v153.2h38.4004zM346.4 324v-36.2002l-44.6006 -9.5v36.2002zM44.9004 219.7c0 -20 67.8994 -10.5 67.8994 -63.4004\nc0 -32 -25.3994 -47.7998 -62.2998 -47.7998c-15.2998 0 -32 3 -48.5 10.0996v40c14.9004 -8.09961 33.9004 -14.1992 48.5996 -14.1992c9.90039 0 17 2.69922 17 10.8994c0 21.2002 -67.5 13.2002 -67.5 62.4004c0 31.3994 24 50.2002 60 50.2002\nc14.7002 0 29.4004 -2.30078 44.1006 -8.10059v-41.7998c-13.5 7.2998 -30.7002 11.4004 -44.2002 11.4004c-9.2998 -0.100586 -15.0996 -2.80078 -15.0996 -9.7002zM640 186.4c0 -4.30078 -0.400391 -13.6006 -0.599609 -15.9004h-86.9004\nc2 -20.7998 17.2002 -26.9004 34.5 -26.9004c17.5996 0 31.5 3.7002 43.5996 9.80078v-33.4004c-12.0996 -6.7002 -28 -11.5 -49.1992 -11.5c-43.2002 0 -73.5 24.7002 -73.5 78.2002c0 45.2002 25.6992 81.0996 67.8994 81.0996s64.2002 -35.8994 64.2002 -81.3994z\nM552.1 203.2h45.9004c0 20 -11.5996 28.3994 -22.5 28.3994c-11.0996 0 -23.4004 -8.39941 -23.4004 -28.3994zM439.2 267.8c31.2002 0 60.5996 -28.0996 60.5 -79.7002c0 -56.3994 -29 -79.5996 -60.7998 -79.5996c-15.5 0 -25 6.5 -31.4004 11.2002l-0.0996094 -50.2002\nl-44.4004 -9.40039v204.801h39.0996l2.30078 -11c6.19922 5.69922 17.3994 13.8994 34.7998 13.8994zM428.6 145.3c16.5 0 27.5 17.9004 27.4004 41.7998c0 23.2002 -11.2002 41.4004 -27.4004 41.4004c-10.1992 0 -16.5996 -3.7002 -21.1992 -8.7998l0.299805 -66\nc4.2998 -4.60059 10.5 -8.40039 20.8994 -8.40039zM301.9 111.6v153.2h44.5996v-153.2h-44.5996z\" />\n    <glyph glyph-name=\"stripe-s\" unicode=\"&#xf42a;\" horiz-adv-x=\"384\" \nd=\"M155.3 293.4c0 -64.2002 218 -33.7002 218 -203.9c0 -102.6 -81.7002 -153.6 -200.3 -153.6c-44.8916 0.101562 -114.78 14.6172 -156 32.3994v128.5c47.9004 -26 108.9 -45.5 156.1 -45.5c31.8008 0 54.7002 8.5 54.7002 34.9004c0 68.0996 -216.8 42.5 -216.8 200.399\nc0 101 77.0996 161.4 192.8 161.4c47.2998 0 94.5 -7.2002 141.8 -26.0996v-134.301c-43.3994 23.4004 -98.5 36.7002 -141.899 36.7002c-29.7998 0 -48.4004 -8.59961 -48.4004 -30.8994z\" />\n    <glyph glyph-name=\"typo3\" unicode=\"&#xf42b;\" \nd=\"M178.7 369.6c0 -66.3994 83.3994 -264.899 140.6 -264.899c6.90039 0 11.5 0 18.5 2.2998c-49.3994 -79.5 -110.399 -139 -146.7 -139c-77.2998 0 -184.1 234 -184.1 337.5c0 16.2998 3.90039 29.4004 9.2998 37.0996c27 32.4004 106.8 57.9004 176.3 66.4004\nc-8.5 -7 -13.8994 -14.7002 -13.8994 -39.4004zM301.5 416c71.7998 0 138.8 -11.5996 138.8 -52.5c0 -82.5996 -52.5 -182.3 -78.7998 -182.3c-47.9004 0 -101.7 132.1 -101.7 198.5c0 30.8994 11.6006 36.2998 41.7002 36.2998z\" />\n    <glyph glyph-name=\"amazon-pay\" unicode=\"&#xf42c;\" horiz-adv-x=\"640\" \nd=\"M14 122.7c2.2998 4.2002 5.2002 4.89941 9.7002 2.5c10.3994 -5.60059 20.5996 -11.4004 31.2002 -16.7002c33.6992 -16.8047 90.7744 -37.5469 127.399 -46.2998c17.2734 -4.16797 45.5869 -9.4541 63.2002 -11.7998c22.083 -2.96875 58.0898 -5.37793 80.3721 -5.37793\nc4.03809 0 10.5908 0.0800781 14.6279 0.177734c17.4004 0.399414 34.7998 1.7998 52.0996 3.7998c46.7393 5.44824 119.897 24.623 163.301 42.7998c2.89941 1.2002 5.89941 2 9.09961 1.2002c6.7002 -1.7998 9 -9 4.09961 -13.9004\nc-2.47168 -2.27246 -6.77246 -5.58789 -9.59961 -7.39941c-30.7002 -21.1006 -64.2002 -36.4004 -99.5996 -47.9004c-20.3311 -6.55176 -53.9756 -14.4365 -75.1006 -17.5996c-14.6006 -2.23633 -38.4346 -4.38672 -53.2002 -4.7998\nc-0.694336 -0.0419922 -1.81445 -0.176758 -2.5 -0.300781h-21.0996c-0.685547 0.124023 -1.80469 0.258789 -2.5 0.300781c-3.59961 0.199219 -7.2002 0.299805 -10.7002 0.399414c-13.9971 0.634766 -36.5762 3.00879 -50.3994 5.2998\nc-22.7275 3.7041 -58.7471 13.0674 -80.4004 20.9004c-44.8652 16.1797 -110.094 55.1562 -145.6 87c-1.80078 1.59961 -3 3.7998 -4.40039 5.7002v2zM172 382.9c2.7998 0 5.5 0 8.2998 -0.100586c3.2998 -0.5 6.60059 -0.799805 9.7998 -1.5\nc21.3008 -4.39941 35.4004 -17.2998 43.9004 -36.8994c6.90039 -15.9004 8.59961 -32.7002 8.09961 -49.8008c-0.399414 -15.3994 -3.2998 -30.1992 -10.2998 -44.0996c-9.2002 -18.4004 -23.3994 -30.9004 -43.7998 -34.9004c-22.5 -4.39941 -43.0996 0.5 -61 15.4004\nc-0.5 0.5 -1.09961 1 -2.2002 1.90039v-72.4004c0 -1 0 -2 -0.0996094 -3c-0.299805 -3 -2.10059 -5 -5 -5c-7 -0.0996094 -14.1006 -0.0996094 -21.1006 0c-2.89941 0.0996094 -4.69922 2 -4.89941 5c-0.100586 1 -0.100586 2 -0.100586 3v209.3\nc0 6.90039 1.30078 8.2002 8.2002 8.2002h11.5c4.60059 0 6.90039 -2 7.60059 -6.59961c0.5 -2.7002 0.899414 -5.5 1.2998 -8.2002c0.0439453 -0.405273 0.222656 -1.0332 0.399414 -1.40039c2.5 1.90039 4.7002 3.7002 7.10059 5.40039\nc9.39941 6.90625 26.4238 13.6709 38 15.0996zM124.6 341c0.100586 -14.0996 0 -28 0 -42.0996c0 -14.1006 0.100586 -28.1006 0 -42.2002c-0.00488281 -0.0703125 -0.00878906 -0.183594 -0.00878906 -0.253906c0 -1.10547 0.765625 -2.46973 1.70898 -3.0459\nc11.2002 -7.90039 23.4004 -13.3008 37.4004 -13.9004c20.2002 -0.900391 35.7998 7.2002 42.5996 28.5c3.2002 10 4 20.2002 4 30.5996c0 11.2002 -1 22.3008 -4.89941 33c-6.40039 17.5 -18.6006 24.8008 -33.5 25.9004\nc-16.8008 1.2998 -31.9004 -3.7002 -45.6006 -13.2002c-0.945312 -0.556641 -1.71289 -1.90039 -1.71289 -2.99805c0 -0.0830078 0.00585938 -0.21875 0.0126953 -0.301758zM330.3 382.9c4 0 8 0 11.9004 0.0996094c3.59961 -0.5 7.2002 -0.799805 10.7998 -1.2998\nc7.7002 -1.10059 15.0996 -3.10059 21.7998 -7.10059c11.6006 -6.89941 17.1006 -17.5 19 -30.3994c0.5 -3.29297 0.905273 -8.66895 0.905273 -12c0 -0.248047 -0.00195312 -0.651367 -0.00488281 -0.900391v-106\nc0.00195312 -0.128906 0.00390625 -0.336914 0.00390625 -0.46582c0 -0.645508 -0.046875 -1.69141 -0.104492 -2.33398c-0.0742188 -2.57422 -2.22461 -4.67969 -4.7998 -4.7002c-5.39941 -0.0996094 -10.8994 -0.0996094 -16.2998 0\nc-2.90039 0.100586 -4.7998 2.10059 -5.40039 5.2002c-0.699219 3.59961 -1.19922 7.2002 -1.7998 11c-0.481445 -0.245117 -1.19824 -0.737305 -1.59961 -1.09961c-11.7998 -9.7002 -25.2002 -16.1006 -40.2998 -18.4004c-13.1006 -2 -26 -1.2002 -37.9004 5.40039\nc-12.4004 6.89941 -19.4004 17.6992 -21.4004 31.6992c-1.5 10.5 -0.799805 20.9004 3.90039 30.7002c6.09961 12.6006 16.5 20.4004 29.4004 24.9004c10.7998 3.7998 22 4.5 33.2998 3.89941c8.95312 -0.556641 23.2891 -2.75195 32 -4.89941\nc0.399414 -0.100586 0.799805 0 1.2998 -0.100586c0.0898438 0.381836 0.179688 1.00879 0.200195 1.40039c-0.100586 8.2998 0 16.5996 -0.299805 24.9004c-0.200195 5.89941 -1.60059 11.5996 -5.30078 16.3994c-4.19922 5.5 -10.2998 7.40039 -16.7998 8.40039\nc-12.5 1.89941 -24.8994 0.899414 -37.2002 -1.40039c-7.89941 -1.5 -15.6992 -3.7002 -23.5 -5.7002c-4.69922 -1.19922 -6.69922 0.100586 -6.7998 4.90039c-0.0996094 3.2998 0.100586 6.59961 0 9.90039c-0.0996094 3.89941 1.7002 6.5 5.2998 7.69922\nc5.90039 2 11.8008 4.2002 17.9004 5.80078c7.86426 1.92188 20.8115 3.75879 28.9004 4.09961c0.899414 0.0996094 1.89941 0.299805 2.89941 0.400391zM365.3 255.2c-0.0996094 4.7002 0.100586 9.2998 0.100586 14.0996s-0.100586 9.5 0 14.2998\nc0 1.60059 -0.5 2.40039 -2.10059 2.60059c-8.39941 1.09961 -16.5996 2.7002 -25 3.39941c-1.95117 0.227539 -5.12891 0.412109 -7.09375 0.412109c-4.99316 0 -12.9258 -1.16992 -17.7061 -2.61133c-8 -2.60059 -13.9004 -7.30078 -16.4004 -15.6006\nc-0.779297 -2.57422 -1.41211 -6.84766 -1.41211 -9.53809c0 -2.78613 0.677734 -7.2041 1.5127 -9.86133c1.55762 -5.40918 7.11328 -11.3672 12.3994 -13.3008c5.40039 -2.19922 11.1006 -2.39941 16.8008 -1.7998c13.8994 1.40039 26.1992 6.7998 37.3994 14.9004\nc0.832031 0.543945 1.50684 1.79199 1.50684 2.78613c0 0.0595703 -0.00292969 0.155273 -0.00683594 0.213867zM625.2 125.8v-17.2998c-0.700195 -3.59961 -1.2998 -7.2998 -2.10059 -10.9004c-4.39941 -20.2998 -11.8994 -39.1992 -24.6992 -55.5996\nc-3.27148 -3.9209 -8.96094 -9.92383 -12.7002 -13.4004c-1.1416 -1.04102 -3.29199 -2.16113 -4.7998 -2.5c-2.90039 -0.699219 -4.60059 1.2002 -4.10059 4.10059c0.201172 0.852539 0.649414 2.19629 1 3c5.7998 14.7998 11.7002 29.7002 15.7998 45.0996\nc2.10059 7.60059 3.90039 15.2998 3.5 23.2998c-0.199219 5.2002 -2.5 9 -7.59961 10.4004c-3.89746 1.15332 -10.3486 2.36328 -14.4004 2.7002c-11.3994 0.899414 -22.8994 0.200195 -34.2998 -0.900391c-7.7998 -0.799805 -15.5 -1.7002 -23.2998 -2.5\nc-0.504883 -0.0576172 -1.32617 -0.103516 -1.83398 -0.103516c-0.100586 0 -0.264648 0.000976562 -0.366211 0.00390625c-1.5 -0.100586 -3.2002 0.299805 -3.59961 1.7998c-0.111328 0.383789 -0.201172 1.01855 -0.201172 1.41797\nc0 0.764648 0.314453 1.92188 0.701172 2.58203c0.838867 1.1582 2.49609 2.72656 3.7002 3.5c12.0996 8.2998 25.6992 12.9004 40 15.5996c7.29883 1.34375 19.2461 2.43457 26.668 2.43457c3.46484 0 9.0791 -0.239258 12.5312 -0.53418\nc5.92773 -0.371094 15.335 -2.11816 21 -3.90039c4.30078 -1.39941 8.10059 -3.2998 9.10059 -8.2998zM493.1 249c0.300781 -0.700195 0.501953 -1.2998 0.902344 -2.40039c2.59961 7.7002 5.2002 15 7.7002 22.2002l34.7998 100\nc0.5 1.40039 1.09961 2.7002 1.59961 4.10059c0.932617 2.87988 4.14648 5.21777 7.17383 5.21777c0.145508 0 0.381836 -0.0078125 0.526367 -0.0185547c6.60059 0 13.2998 0.100586 19.9004 0c2.7998 0 4.09961 -1.59961 3.7002 -4.39941\nc-0.277344 -1.56641 -0.994141 -4.03027 -1.60059 -5.5c-23.3662 -59.9336 -46.8994 -119.801 -70.5996 -179.601c-2.1416 -5.27734 -6.2627 -13.5205 -9.2002 -18.3994c-8.7998 -14.9004 -22.4004 -21.7998 -39.5 -21.4004c-4.70801 0.18457 -12.2793 1.08008 -16.9004 2\nc-5.39941 0.900391 -7.2998 3.40039 -7.39941 8.90039c-0.100586 3.2666 -0.100586 6.56641 0 9.89941c0.0996094 3.5 1.7998 5 5.2002 4.80078c2.5 -0.200195 5 -0.800781 7.5 -1c1.30664 -0.148438 3.43359 -0.268555 4.74902 -0.268555\nc2.98828 0 7.75977 0.612305 10.6504 1.36816c7.2002 1.90039 12.2002 6.7998 15.2002 13.2998c3.40039 7.2998 6 15 9.2998 22.2998c1.90039 4.2002 1.5 7.7002 -0.200195 11.8008c-19.7998 48.5 -39.5 97 -59.1006 145.5\nc-0.649414 1.64453 -1.50098 4.37695 -1.90039 6.09961c-0.5 2.5 0.700195 4.5 3.2002 4.5c7.7002 0.0996094 15.2998 0 22.9004 -0.0996094c3.2002 0 5.2998 -1.90039 6.39941 -4.80078c2.10059 -5.59961 4.30078 -11.1992 6.30078 -16.8994\nc12.8994 -35.7666 25.7988 -71.5 38.6982 -107.2z\" />\n    <glyph glyph-name=\"cc-amazon-pay\" unicode=\"&#xf42d;\" horiz-adv-x=\"576\" \nd=\"M124.7 246.2c0.0996094 11.7998 0 23.5 0 35.2998v35.2998c0 1.2998 0.399414 2 1.39941 2.7002c11.5 8 24.1006 12.0996 38.2002 11.0996c12.5 -0.899414 22.7002 -7 28.1006 -21.6992c3.2998 -8.90039 4.09961 -18.2002 4.09961 -27.7002\nc0 -8.7002 -0.700195 -17.2998 -3.40039 -25.6006c-5.69922 -17.7998 -18.6992 -24.6992 -35.6992 -23.8994c-11.7002 0.5 -21.9004 5 -31.4004 11.7002c-0.900391 0.799805 -1.40039 1.59961 -1.2998 2.7998zM279.6 231.6c-5.19922 2 -8.7998 5.7002 -10.3994 11.2002\nc-1.7002 5.40039 -1.7002 10.7998 -0.100586 16.2002c2 6.90039 7 10.9004 13.7002 13.0996c6.7998 2.2002 13.7998 2.5 20.7998 1.90039c7 -0.700195 13.9004 -2 20.9004 -2.90039c1.40039 -0.199219 1.7998 -0.799805 1.7998 -2.19922c-0.0996094 -4 0 -8 0 -12\nc0 -3.90039 -0.0996094 -7.90039 0 -11.8008c0 -1.19922 -0.399414 -1.89941 -1.2998 -2.5c-9.40039 -6.7998 -19.7002 -11.2998 -31.2998 -12.5c-4.7998 -0.5 -9.5 -0.299805 -14.1006 1.5zM576 368v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48v352\nc0 26.5 21.5 48 48 48h480c26.5 0 48 -21.5 48 -48zM368.5 344.1c0.400391 -1.69922 0.900391 -3.39941 1.59961 -5.09961c16.5 -40.5996 32.9004 -81.2998 49.5 -121.9c1.40039 -3.5 1.7002 -6.39941 0.200195 -9.89941\nc-2.7998 -6.2002 -4.89941 -12.6006 -7.7998 -18.7002c-2.59961 -5.5 -6.7002 -9.5 -12.7002 -11.2002c-4.2002 -1.09961 -8.5 -1.2998 -12.8994 -0.899414c-2.10059 0.199219 -4.2002 0.699219 -6.30078 0.799805c-2.7998 0.200195 -4.19922 -1.10059 -4.2998 -4\nc-0.0996094 -2.7998 -0.0996094 -5.60059 0 -8.2998c0.100586 -4.60059 1.60059 -6.7002 6.2002 -7.5c4.7002 -0.800781 9.40039 -1.60059 14.2002 -1.7002c14.2998 -0.299805 25.7002 5.39941 33.0996 17.8994c2.90039 4.90039 5.60059 10.1006 7.7002 15.4004\nc19.7998 50.0996 39.5 100.3 59.2002 150.5c0.599609 1.5 1.09961 3 1.2998 4.59961c0.400391 2.40039 -0.700195 3.60059 -3.09961 3.7002c-5.60059 0.100586 -11.1006 0 -16.7002 0c-3.10059 0 -5.2998 -1.39941 -6.40039 -4.2998\nc-0.399414 -1.09961 -0.899414 -2.2998 -1.2998 -3.40039l-29.0996 -83.6992c-2.10059 -6.10059 -4.2002 -12.1006 -6.5 -18.6006c-0.400391 0.900391 -0.600586 1.40039 -0.800781 1.90039c-10.7998 29.8994 -21.5996 59.8994 -32.3994 89.7998\nc-1.7002 4.7002 -3.5 9.5 -5.2998 14.2002c-0.900391 2.5 -2.7002 4 -5.40039 4c-6.40039 0.0996094 -12.7998 0.200195 -19.2002 0.0996094c-2.2002 0 -3.2998 -1.59961 -2.7998 -3.7002zM242.4 242c1.69922 -11.7002 7.59961 -20.7998 18 -26.5996\nc9.89941 -5.5 20.6992 -6.2002 31.6992 -4.60059c12.7002 1.90039 23.9004 7.2998 33.8008 15.5c0.399414 0.299805 0.799805 0.600586 1.39941 1c0.5 -3.2002 0.900391 -6.2002 1.5 -9.2002c0.5 -2.59961 2.10059 -4.2998 4.5 -4.39941\nc4.60059 -0.100586 9.10059 -0.100586 13.7002 0c2.2998 0.0996094 3.7998 1.59961 4 3.89941c0.0996094 0.800781 0.0996094 1.60059 0.0996094 2.30078v88.7998c0 3.59961 -0.199219 7.2002 -0.699219 10.7998c-1.60059 10.7998 -6.2002 19.7002 -15.9004 25.4004\nc-5.59961 3.2998 -11.7998 5 -18.2002 5.89941c-3 0.400391 -6 0.700195 -9.09961 1.10059h-10c-0.799805 -0.100586 -1.60059 -0.300781 -2.5 -0.300781c-8.2002 -0.399414 -16.2998 -1.39941 -24.2002 -3.5c-5.09961 -1.2998 -10 -3.19922 -15 -4.89941\nc-3 -1 -4.5 -3.2002 -4.40039 -6.5c0.100586 -2.7998 -0.0996094 -5.60059 0 -8.2998c0.100586 -4.10059 1.80078 -5.2002 5.7002 -4.10059c6.5 1.7002 13.1006 3.5 19.7002 4.7998c10.2998 1.90039 20.7002 2.7002 31.0996 1.2002\nc5.40039 -0.799805 10.5 -2.39941 14.1006 -7c3.09961 -4 4.2002 -8.7998 4.39941 -13.7002c0.300781 -6.89941 0.200195 -13.8994 0.300781 -20.7998c0 -0.399414 -0.100586 -0.700195 -0.200195 -1.2002c-0.400391 0 -0.799805 0 -1.10059 0.100586\nc-8.7998 2.09961 -17.6992 3.59961 -26.7998 4.09961c-9.5 0.5 -18.8994 -0.0996094 -27.8994 -3.2002c-10.8008 -3.7998 -19.5 -10.2998 -24.6006 -20.7998c-4.09961 -8.2998 -4.59961 -17 -3.39941 -25.7998zM98.7002 341.1v-175.3c0 -0.799805 0 -1.7002 0.0996094 -2.5\nc0.200195 -2.5 1.7002 -4.09961 4.10059 -4.2002c5.89941 -0.0996094 11.7998 -0.0996094 17.6992 0c2.5 0 4 1.7002 4.10059 4.10059c0.0996094 0.799805 0.0996094 1.7002 0.0996094 2.5v60.7002c0.900391 -0.700195 1.40039 -1.2002 1.90039 -1.60059\nc15 -12.5 32.2002 -16.5996 51.0996 -12.8994c17.1006 3.39941 28.9004 13.8994 36.7002 29.1992c5.7998 11.6006 8.2998 24.1006 8.7002 37c0.5 14.3008 -1 28.4004 -6.7998 41.7002c-7.10059 16.4004 -18.9004 27.2998 -36.7002 30.9004\nc-2.7002 0.599609 -5.5 0.799805 -8.2002 1.2002h-7c-1.2002 -0.200195 -2.40039 -0.300781 -3.59961 -0.5c-11.7002 -1.40039 -22.3008 -5.80078 -31.8008 -12.7002c-2 -1.40039 -3.89941 -3 -5.89941 -4.5c-0.100586 0.5 -0.299805 0.799805 -0.400391 1.2002\nc-0.399414 2.2998 -0.700195 4.59961 -1.09961 6.89941c-0.600586 3.90039 -2.5 5.5 -6.40039 5.60059h-9.7002c-5.89941 0.0996094 -6.89941 -1 -6.89941 -6.80078zM493.6 109c-2.69922 0.700195 -5.09961 0 -7.59961 -1c-43.9004 -18.4004 -89.5 -30.2002 -136.8 -35.7998\nc-14.5 -1.7002 -29.1006 -2.7998 -43.7002 -3.2002c-26.5996 -0.700195 -53.2002 0.799805 -79.5996 4.2998c-17.8008 2.40039 -35.5 5.7002 -53 9.90039c-37 8.89941 -72.7002 21.7002 -106.7 38.7998c-8.7998 4.40039 -17.4004 9.2998 -26.1006 14\nc-3.7998 2.09961 -6.19922 1.5 -8.19922 -2.09961v-1.7002c1.19922 -1.60059 2.19922 -3.40039 3.69922 -4.7998c36 -32.2002 76.6006 -56.5 122 -72.9004c21.9004 -7.90039 44.4004 -13.7002 67.3008 -17.5c14 -2.2998 28 -3.7998 42.1992 -4.5\nc3 -0.0996094 6 -0.200195 9 -0.400391c0.700195 0 1.40039 -0.199219 2.10059 -0.299805h17.7002c0.699219 0.100586 1.39941 0.299805 2.09961 0.299805c14.9004 0.400391 29.7998 1.80078 44.5996 4c21.4004 3.2002 42.4004 8.10059 62.9004 14.7002\nc29.5996 9.60059 57.7002 22.4004 83.4004 40.1006c2.7998 1.89941 5.69922 3.7998 8 6.19922c4.2998 4.40039 2.2998 10.4004 -3.30078 11.9004zM544 136.7c-0.799805 4.2002 -4 5.7998 -7.59961 7c-5.7002 1.89941 -11.6006 2.7998 -17.6006 3.2998\nc-11 0.900391 -22 0.400391 -32.7998 -1.59961c-12 -2.2002 -23.4004 -6.10059 -33.5 -13.1006c-1.2002 -0.799805 -2.40039 -1.7998 -3.09961 -3c-0.600586 -0.899414 -0.700195 -2.2998 -0.5 -3.39941c0.299805 -1.30078 1.69922 -1.60059 3 -1.5\nc0.599609 0 1.19922 0 1.7998 0.0996094l19.5 2.09961c9.59961 0.900391 19.2002 1.5 28.7998 0.800781c4.09961 -0.300781 8.09961 -1.2002 12 -2.2002c4.2998 -1.10059 6.2002 -4.40039 6.40039 -8.7002c0.299805 -6.7002 -1.2002 -13.0996 -2.90039 -19.5\nc-3.5 -12.9004 -8.2998 -25.4004 -13.2998 -37.7998c-0.299805 -0.799805 -0.700195 -1.7002 -0.799805 -2.5c-0.400391 -2.5 1 -4 3.39941 -3.5c1.40039 0.299805 3 1.09961 4 2.09961c3.7002 3.60059 7.5 7.2002 10.6006 11.2002\nc10.6992 13.7998 17 29.5996 20.6992 46.5996c0.700195 3 1.2002 6.10059 1.7002 9.10059c0.200195 4.7002 0.200195 9.59961 0.200195 14.5z\" />\n    <glyph glyph-name=\"ethereum\" unicode=\"&#xf42e;\" horiz-adv-x=\"320\" \nd=\"M311.9 187.2l-151.9 -92.7998l-152 92.7998l152 260.8zM160 64.5996l152 92.8008l-152 -221.4l-152 221.4z\" />\n    <glyph glyph-name=\"korvue\" unicode=\"&#xf42f;\" horiz-adv-x=\"446\" \nd=\"M386.5 414c32.7002 0 59.5 -26.7998 59.5996 -59.5v-327c0 -32.7002 -26.5 -59.5 -59.5 -59.5h-327.1c-32.7002 0 -59.5 26.7998 -59.5 59.4004v327.1c0 32.7002 26.7998 59.5 59.5 59.5h327zM87.0996 327.2v-132h187.5l81.2002 132h-110.899l-61.8008 -116v116h-96z\nM248.9 55.0996h118.399l-88.5996 130.801h-191.5v-130.801h96v113.601z\" />\n    <glyph glyph-name=\"elementor\" unicode=\"&#xf430;\" \nd=\"M425.6 416c12.4004 0 22.4004 -10 22.4004 -22.4004v-403.199c0 -12.4004 -10 -22.4004 -22.4004 -22.4004h-403.199c-12.4004 0 -22.4004 10 -22.4004 22.4004v403.199c0 12.4004 10 22.4004 22.4004 22.4004h403.199zM164.3 92.5v199h-39.7998v-199h39.7998z\nM323.6 92.5v39.7998h-119.5v-39.7998h119.5zM323.6 172.1v39.8008h-119.5v-39.8008h119.5zM323.6 251.8v39.7998h-119.5v-39.7998h119.5z\" />\n    <glyph glyph-name=\"youtube-square\" unicode=\"&#xf431;\" \nd=\"M186.8 245.9l95.2002 -54.1006l-95.2002 -54.0996v108.2zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM406 191.7c0 0 0 59.5996 -7.59961 88.2002\nc-4.2002 15.7998 -16.5 28.1992 -32.2002 32.3994c-28.2998 7.7002 -142.2 7.7002 -142.2 7.7002s-113.9 0 -142.2 -7.7002c-15.7002 -4.2002 -28 -16.5996 -32.2002 -32.3994c-7.59961 -28.5 -7.59961 -88.2002 -7.59961 -88.2002s0 -59.6006 7.59961 -88.2002\nc4.2002 -15.7998 16.5 -27.7002 32.2002 -31.9004c28.2998 -7.59961 142.2 -7.59961 142.2 -7.59961s113.9 0 142.2 7.7002c15.7002 4.2002 28 16.0996 32.2002 31.8994c7.59961 28.5 7.59961 88.1006 7.59961 88.1006z\" />\n    <glyph glyph-name=\"flipboard\" unicode=\"&#xf44d;\" \nd=\"M0 416h448v-448h-448v448zM358.4 236.8v89.6006h-268.801v-268.801h89.6006v89.6006h89.5996v89.5996h89.6006z\" />\n    <glyph glyph-name=\"hips\" unicode=\"&#xf452;\" horiz-adv-x=\"640\" \nd=\"M251.6 290.4v-201.801c0 -1.89941 -0.899414 -2.7998 -2.7998 -2.7998h-40.8994c-1.60059 0 -2.7002 1.40039 -2.7002 2.7998v201.801c0 1.39941 1.09961 2.7998 2.7002 2.7998h40.8994c1.90039 0 2.7998 -0.900391 2.7998 -2.7998zM156.5 280\nc18.7002 -13.5 28 -31.9004 28 -55.2998v-136.101c0 -1.89941 -0.900391 -2.7998 -2.7002 -2.7998h-27.2998c-9.09961 0 -16.4004 7.2998 -16.4004 16.2998v122.601c0 0.899414 2.7002 27 -45.7998 27c-48.5996 0 -45.7998 -26.2002 -45.7998 -27v-136.101\nc0 -1.89941 -0.900391 -2.7998 -2.7998 -2.7998h-41c-1.7998 0 -2.7002 0.900391 -2.7002 2.7998v279.2c0 1.7998 0.900391 2.7002 2.7002 2.7002h40.8994c1.90039 0 2.80078 -0.900391 2.80078 -2.7002v-81.2002c15.1992 7.7002 31.6992 11.5 49.7998 11.4004\nc24 -0.0996094 44.2002 -6.2002 60.2998 -18zM634.9 169.9c5.5 -12.6006 6.59961 -25.6006 3.09961 -39.1006c-9.59961 -36.8994 -44.9004 -45.5 -45.5996 -45.7998c-10.5 -3.09961 -23.6006 -4.2998 -36.3008 -4.2998c-16.5996 0 -32.5996 2.7002 -48.1992 8.2002\nc-9.7002 3.39941 -14.6006 10.2998 -14.6006 20.6992v34.4004c0 2.09961 2.2998 3.7002 4.40039 2.2998c13.7002 -10.2002 34.0996 -19.0996 58.3994 -19.0996c23.3008 0 32.8008 4.5 36.5 13.5996c3 7.90039 -0.599609 16.1006 -12.1992 21.2002l-53.6006 23.5\nc-21.3994 9.40039 -33.7998 24 -37.2002 43.5996c-5.69922 33.7002 22.2002 53.3008 22.7002 53.7002c13.2002 9.60059 32 15.4004 58.5 15.4004c19 0 37.4004 -3.2998 55.1006 -9.90039c1.2998 -0.5 1.89941 -1.2998 1.89941 -2.59961v-44.7002\nc0 -2.09961 -2.2998 -3.40039 -4 -2.40039c-39.7002 20.7002 -76.5996 12.3008 -84 6.80078c-6.59961 -4.90039 -6 -12.5 2.60059 -16.1006l57.5996 -25.2998c16.5 -7.09961 28.0996 -18.4004 34.9004 -34.0996zM376.2 298.2c60.3994 0 108.7 -48.2998 108.6 -108.601\nc0 -60.1992 -48.2002 -108.699 -108.7 -108.699c-21.8994 0 -41.1992 6.39941 -57.6992 19.0996v-88.7998c0 -1.7998 -0.900391 -2.7002 -2.80078 -2.7002h-40.8994c-2.10059 0 -2.7002 1.90039 -2.7002 2.7002v183.5c0 83.3994 72.5 103.5 104.2 103.5zM376.2 127.3\nc34.8994 0 62.2998 27.9004 62.2002 62.2002c0 34.5996 -27.7002 62.2002 -62.2002 62.2002c-34.6006 0 -62.2002 -27.7002 -62.2002 -62.2002c0 -17.2002 6 -31.7998 18.2002 -44c12.0996 -12.0996 26.7998 -18.2002 44 -18.2002zM228.3 375.5\nc15.9004 0 28.9004 -12.7002 28.9004 -28.9004c0 -15.7998 -12.7002 -28.8994 -28.9004 -28.8994s-28.8994 13.2998 -28.8994 28.8994c0.0996094 16 13 28.9004 28.8994 28.9004z\" />\n    <glyph glyph-name=\"php\" unicode=\"&#xf457;\" horiz-adv-x=\"640\" \nd=\"M320 343.5c-171.3 0 -303.2 -72.2002 -303.2 -151.5s131.8 -151.5 303.2 -151.5c171.3 0 303.2 72.2002 303.2 151.5s-131.8 151.5 -303.2 151.5zM320 360.3c176.7 0 320 -75.2998 320 -168.3s-143.3 -168.3 -320 -168.3s-320 75.2998 -320 168.3s143.3 168.3 320 168.3z\nM218.2 205.5c7.39941 38.4004 -18.4004 34.2998 -56.4004 34.2998l-13.7002 -70.5996c34.3008 0 62.2002 -4.2002 70.1006 36.2998zM97.4004 97.7002l32.6992 168.7h70.7002c21.2002 0 36.7998 -5.5 46.5 -16.7002c18.6006 -21.4004 11.7998 -64.1006 -14.2998 -88.1006\nc-23.5996 -22.0996 -49.0996 -19.0996 -90.2002 -19.0996l-8.7002 -44.7998h-36.6992zM283.1 311.3h36.5l-8.69922 -44.7998c31.5 0 60.6992 2.2998 74.7998 -10.7002c14.7998 -13.5996 7.7002 -31 -8.2998 -113.1h-37c15.3994 79.3994 18.2998 86 12.6992 92\nc-5.39941 5.7998 -17.6992 4.59961 -47.3994 4.59961l-18.7998 -96.5996h-36.5zM505 205.5c7.40039 38.4004 -18.2002 34.2998 -56.4004 34.2998l-13.6992 -70.5996c33.3994 0 62.0996 -4.7998 70.0996 36.2998zM384.2 97.7002l32.7998 168.7h70.7002\nc21.2002 0 36.7998 -5.5 46.5 -16.7002c18.5996 -21.4004 11.7998 -64.1006 -14.2998 -88.1006c-23.1006 -21.5996 -47 -19.0996 -90.2002 -19.0996l-8.7002 -44.7998h-36.7998z\" />\n    <glyph glyph-name=\"quinscape\" unicode=\"&#xf459;\" horiz-adv-x=\"512\" \nd=\"M313.6 -26.5996c4.40039 -4.40039 8.10059 -9 13.3008 -12.5c-18.5029 -5.58008 -49.2031 -10.1074 -68.5283 -10.1074c-0.516602 0 -1.35547 0.00292969 -1.87207 0.00683594c-135 0 -244.5 109.5 -244.5 244.601c0 135.1 109.4 244.6 244.5 244.6\ns244.6 -109.5 244.6 -244.6c0 -35.3008 -6.89941 -67.4004 -20.2998 -97.7002c-3 5.7002 -7.2002 10.2002 -11.2002 15.2998c11.2002 93.5 -62.0996 176.6 -157 176.6c-87.2705 0 -158.1 -70.8281 -158.1 -158.1s70.8291 -158.1 158.1 -158.1h1zM313.5 -26.5\nl0.400391 -0.0996094zM391.9 142.4c54.7471 0 99.1992 -44.4326 99.1992 -99.1807v-0.0195312c0 -54.7588 -44.4414 -99.2002 -99.1992 -99.2002c-54.7588 0 -99.2002 44.4414 -99.2002 99.2002c0 54.7578 44.4414 99.2002 99.2002 99.2002z\" />\n    <glyph glyph-name=\"readme\" unicode=\"&#xf4d5;\" horiz-adv-x=\"576\" \nd=\"M528.3 401.5c26.4004 -0.200195 47.7002 -21.7002 47.7002 -48.0996v-245.7c0 -26.5 -21.5 -48 -48 -48h-89.7002c-102.1 0 -132.6 -24.4004 -147.3 -75c-0.799805 -2.7998 -5.2998 -2.7998 -6 0c-14.5996 50.5996 -45.0996 75 -147.3 75h-89.7002\nc-26.5 0 -48 21.5 -48 48v245.8c0 26.5 21.5 48 48 48h139.7c48.0996 0 89.7998 -33.2998 100.399 -80.2998c10.5 47 52.3008 80.2998 100.4 80.2998h139.8zM242 136.1h0.0996094v22.9004c0 2 -1.59961 3.5 -3.5 3.5h-160.399c-2 0 -3.5 -1.59961 -3.5 -3.5v-22.9004\nc0 -2 1.59961 -3.5 3.5 -3.5h160.3c2 0 3.5 1.60059 3.5 3.5zM242 197h0.0996094v22.9004c0 2 -1.59961 3.5 -3.5 3.5h-160.399c-2 0 -3.5 -1.60059 -3.5 -3.5v-22.9004c0 -2 1.59961 -3.5 3.5 -3.5h160.3c2 0 3.5 1.59961 3.5 3.5zM242 257.9h0.0996094v22.8994\nc0 2 -1.59961 3.5 -3.5 3.5h-160.399c-2 0 -3.5 -1.59961 -3.5 -3.5v-22.8994c0 -2 1.59961 -3.5 3.5 -3.5h160.3c2 0 3.5 1.59961 3.5 3.5zM501.3 136.2h0.100586v22.8994c0 2 -1.60059 3.5 -3.5 3.5h-160.4c-2 0 -3.5 -1.59961 -3.5 -3.5v-22.8994\nc0 -2 1.59961 -3.5 3.5 -3.5h160.3c2 0 3.5 1.59961 3.5 3.5zM501.3 197.1h0.100586v22.9004c0 2 -1.60059 3.5 -3.5 3.5h-160.4c-2 0 -3.5 -1.59961 -3.5 -3.5v-22.9004c0 -2 1.59961 -3.5 3.5 -3.5h160.3c2 0 3.5 1.60059 3.5 3.5zM501.3 258h0.100586v22.7998\nc0 2 -1.60059 3.5 -3.5 3.5h-160.4c-2 0 -3.5 -1.59961 -3.5 -3.5v-22.7998c0 -2 1.59961 -3.5 3.5 -3.5h160.3c2 0 3.5 1.59961 3.5 3.5z\" />\n    <glyph glyph-name=\"java\" unicode=\"&#xf4e4;\" horiz-adv-x=\"384\" \nd=\"M277.74 135.1c-94.5 -24.8994 -277 -13.2998 -224.5 12.1006c44.5 21.3994 80.5996 19 80.5996 19s-93.0996 -22.1006 -33 -30.1006c25.4004 -3.39941 76 -2.59961 123.101 1.30078c38.5 3.19922 77.1992 10.1992 77.1992 10.1992s-13.5996 -5.7998 -23.3994 -12.5z\nM192.34 167.2c-48.5 43.7998 -84.0996 82.2998 -60.2002 118.2c35.1006 52.5 132.2 78.0996 110.7 162.6c0 0 53.1602 -53.2002 -50.5 -135c-83.0996 -65.5996 -19 -103.1 0 -145.8zM306.94 343.4c-111.601 -64.7002 -91 -83.5 -64.1006 -121.301\nc28.7998 -40.5 -33.8994 -72.8994 -33.8994 -72.8994s31.1992 25.5996 6.5 54c-83.7002 96.3994 91.5996 140.2 91.5 140.2zM300.84 72.9004c96.1006 49.8994 51.6006 97.8994 20.6006 91.3994c-3.10352 -0.581055 -8.03125 -1.92578 -11 -3\nc1.71973 2.44629 5.39258 5.26855 8.19922 6.2998c61.3008 21.6006 108.5 -63.5996 -19.7998 -97.2998c0.649414 0.642578 1.5459 1.80762 2 2.60059zM348 10.5996c53 -23.8994 -115.16 -72 -319.4 -38.7998c-74.8994 12.1006 36.1006 54.5 56.4004 40.2002\nc0 0 -6.5 0.400391 -17.7002 -2c-10.7998 -2.2998 -45.0996 -13.4004 -26.7998 -21.2998c50.7998 -22.1006 233.7 -16.7998 291.6 0.700195c30.4004 9.2998 15.9004 21.1992 15.9004 21.1992zM124.44 52c0 0 -19.6006 -11.4004 13.8994 -15.2002\nc40.6006 -4.59961 61.2998 -4 106 4.5c7.46094 -4.46777 20.0938 -10.6504 28.2002 -13.7998c-100.2 -42.9004 -226.8 2.5 -148.1 24.5zM304.24 -45.2002c69.7998 13.2002 76.2002 29.7002 76.2002 29.7002c-3.30078 -43.5996 -144.9 -52.7998 -237.101 -46.9004\nc-60.5996 3.90039 -72.3994 13.7002 -72.3994 13.6006c57.5 -9.5 154.6 -11.2002 233.3 3.59961zM260.64 95c5.08594 -4.74902 14.5391 -10.4834 21.1006 -12.7998c-121.3 -35.5 -256.3 -2.90039 -169.5 25.8994c0 0 -21.9004 -16.1992 11.5996 -19.6992\nc43.2998 -4.5 77.6006 -4.80078 136.8 6.59961z\" />\n    <glyph glyph-name=\"pied-piper-hat\" unicode=\"&#xf4e5;\" horiz-adv-x=\"640\" \nd=\"M640 423.1c-80.7998 -53.5996 -89.4004 -92.5 -96.4004 -104.399c-6.69922 -12.2002 -11.6992 -60.2998 -23.2998 -83.6006c-11.7002 -23.5996 -54.2002 -42.1992 -66.0996 -50c-11.7002 -7.7998 -28.2998 -38.0996 -41.9004 -64.1992\nc-108.1 4.39941 -167.399 -38.8008 -259.2 -93.6006c29.4004 9.7002 43.3008 16.7002 43.3008 16.7002c94.1992 36 139.3 68.2998 281.1 49.2002c1.09961 0 1.90039 -0.600586 2.7998 -0.799805c3.90039 -2.2002 5.2998 -6.90039 3.10059 -10.8008l-53.9004 -95.7998\nc-2.5 -4.7002 -7.7998 -7.2002 -13.0996 -6.09961c-126.801 23.7998 -226.9 -17.2998 -318.9 -18.6006c-73.4004 -1.09961 -97.5 33.5 -97.5 35.1006c0 1.09961 0.599609 1.7002 1.7002 1.7002c0 0 38.2998 0 103.1 15.2998c73.6006 140.3 139.2 189.399 210.601 189.399\nc0 0 71.6992 0 90.5996 -61.8994c22.7998 39.7002 28.2998 49.2002 28.2998 49.2002c5.2998 9.39941 35 77.1992 86.4004 141.399c51.5 64 90.3994 79.9004 119.3 91.7998z\" />\n    <glyph glyph-name=\"creative-commons-by\" unicode=\"&#xf4e7;\" horiz-adv-x=\"496\" \nd=\"M314.9 253.6v-101.399h-28.3008v-120.5h-77.0996v120.399h-28.2998v101.5c0 4.40039 1.59961 8.2002 4.59961 11.3008c3.10059 3.09961 6.90039 4.69922 11.2998 4.69922h101.9c4.09961 0 7.7998 -1.59961 11.0996 -4.69922\nc3.10059 -3.2002 4.80078 -6.90039 4.80078 -11.3008zM213.4 317.3c0 23.2998 11.5 35 34.5 35s34.5 -11.7002 34.5 -35c0 -23 -11.5 -34.5 -34.5 -34.5s-34.5 11.5 -34.5 34.5zM247.6 440c141.801 0 248.4 -110.1 248.4 -248c0 -147.1 -118.5 -248 -248.4 -248\nc-134 0 -247.6 109.5 -247.6 248c0 132.9 104.7 248 247.6 248zM248.4 395.3c-118.2 0 -203.7 -97.8994 -203.7 -203.3c0 -109.8 91.2002 -202.8 203.7 -202.8c103.199 0 202.8 81.0996 202.8 202.8c0.0996094 113.8 -90.2002 203.3 -202.8 203.3z\" />\n    <glyph glyph-name=\"creative-commons-nc\" unicode=\"&#xf4e8;\" horiz-adv-x=\"496\" \nd=\"M247.6 440c139.801 0 248.4 -107.9 248.4 -248c0 -147.2 -118.5 -248 -248.4 -248c-134.5 0 -247.6 110.8 -247.6 248c0 132.9 104.7 248 247.6 248zM55.7998 258.9c-7.39941 -20.4004 -11.0996 -42.7002 -11.0996 -66.9004c0 -110.9 92.0996 -202.4 203.7 -202.4\nc122.399 0 177.199 101.801 178.5 104.101l-93.4004 41.5996c-7.7002 -37.0996 -41.2002 -53 -68.2002 -55.3994v-38.1006h-28.7998v38.2002c-27.5 0.299805 -52.5996 10.2002 -75.2998 29.7002l34.0996 34.5c31.7002 -29.4004 86.4004 -31.7998 86.4004 2.2002\nc0 6.19922 -2.2002 11.1992 -6.60059 15.0996c-14.1992 6 -1.7998 0.0996094 -219.3 97.4004zM248.4 395.7c-38.4004 0 -112.4 -8.7002 -170.5 -93l94.7998 -42.5c10 31.2998 40.3994 42.8994 63.7998 44.2998v38.0996h28.7998v-38.0996\nc22.7002 -1.2002 43.4004 -8.90039 62 -23l-32.2998 -33.2002c-42.7002 29.9004 -83.5 8 -70 -11.0996c53.4004 -24.1006 43.7998 -19.7998 93 -41.6006l127.1 -56.6992c4.10059 17.3994 6.2002 35.0996 6.2002 53.0996c0 57 -19.7998 105 -59.2998 143.9\nc-39.2998 39.8994 -87.2002 59.7998 -143.6 59.7998z\" />\n    <glyph glyph-name=\"creative-commons-nc-eu\" unicode=\"&#xf4e9;\" horiz-adv-x=\"496\" \nd=\"M247.7 440c140.7 0 248.3 -109 248.3 -248c0 -147.1 -118.1 -248 -248.3 -248c-136 0 -247.7 111.7 -247.7 248c0 131.2 103.6 248 247.7 248zM248.3 -10.7002c122.601 0 177.3 102.2 178.8 104.3l-128.3 56.8008h-90.2998\nc9.2002 -39.3008 39.0996 -50.2002 67.2998 -50.2002c19.1006 0 38.6006 6.2002 47.2998 10.7998l10 -46.0996c-14.1992 -7.90039 -38.1992 -15.8008 -64.7998 -15.8008c-57.3994 0 -113.2 34.3008 -124.6 101.301h-27v29.5h22.7998\nc0 16.2998 0.400391 13.2998 0.400391 19.5h-23.3008v29.5h4.7002l-65.7002 29.0996c-7.19922 -20.7998 -10.8994 -42.7998 -10.8994 -66c0 -110.2 91.5996 -202.7 203.6 -202.7zM231.6 179.9l-0.5 0.399414l0.900391 -0.399414h-0.400391zM308.8 199.4l136.101 -60.5\nc4.19922 16.5996 6.2998 34.1992 6.2998 52.8994c0 113.2 -90 203.4 -203 203.4c-13 0 -106.101 3.2002 -170.7 -93.6006l81.5996 -36.0996c4.10059 7.2002 8.60059 14 13.9004 20.0996c23.7002 26.5 56.9004 42.3008 95.9004 42.3008\nc25.2998 0 47.2998 -5.80078 62.2998 -12.4004l-11.6006 -47.2998c-10.7998 4.59961 -27.7998 10 -46.0996 10c-20 0 -38.2002 -6.60059 -51.0996 -22.4004c-3.40039 -3.7998 -6.30078 -8.7998 -8.80078 -14.2998l28.6006 -12.5996h70.2998v-29.5h-3.7002z\" />\n    <glyph glyph-name=\"creative-commons-nc-jp\" unicode=\"&#xf4ea;\" horiz-adv-x=\"496\" \nd=\"M247.7 440c140.8 0 248.3 -109.2 248.3 -248c0 -147.2 -118.1 -248 -248.3 -248c-135.9 0 -247.7 111.6 -247.7 248c0 131.2 103.6 248 247.7 248zM248.3 -10.7002c118.101 0 173.7 96.1006 175.2 98.2998l-81 36.1006v-35.7002h-64.2002v-56h-61.7002v56h-63.7998\nv38.7002h63.7998v18.7002l-5.69922 11.7998h-58.1006v38.5996h27.9004l-127 56.5c-6 -19.0996 -9 -39.2002 -9 -60.2998c0 -110.2 91.5996 -202.7 203.6 -202.7zM335.9 126.6l-54.7002 24.3008l-2.90039 -5.60059v-18.7002h57.6006zM342.4 178l101 -45.0996\nc5.19922 18.3994 7.89941 38 7.89941 59c0 113.399 -90.2002 203.399 -203 203.399c-91.0996 0 -145.899 -54 -173.7 -98.0996l81.9004 -36.5l-27.2998 51h65.7998l39.5996 -85.7002l23 -10.2002l43.4004 96h65.7998l-63 -116h38.6006v-17.7998z\" />\n    <glyph glyph-name=\"creative-commons-nd\" unicode=\"&#xf4eb;\" horiz-adv-x=\"496\" \nd=\"M247.6 440c141.801 0 248.4 -110.1 248.4 -248c0 -147.1 -118.5 -248 -248.4 -248c-134 0 -247.6 109.5 -247.6 248c0 132.9 104.7 248 247.6 248zM248.4 395.3c-118.2 0 -203.7 -97.8994 -203.7 -203.3c0 -109.8 91.2002 -202.8 203.7 -202.8\nc103.199 0 202.8 81.0996 202.8 202.8c0.0996094 113.8 -90.2002 203.3 -202.8 203.3zM342.4 251v-42.5h-180.301v42.5h180.301zM342.4 171.2v-42.5h-180.301v42.5h180.301z\" />\n    <glyph glyph-name=\"creative-commons-pd\" unicode=\"&#xf4ec;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111.1 248 -248c0 -137 -111 -248 -248 -248s-248 111 -248 248c0 136.9 111 248 248 248zM248 -9.5c76.0996 0 142.4 42.4004 176.7 104.8c-1.40039 0.299805 12.5 -5.7998 -217.9 96.7998c0.200195 -32 16.1006 -71.8994 53.9004 -71.8994\nc18.7002 0 30.7998 10.3994 36.2998 16.7002l36.0996 -43.9004c-25.8994 -22.7998 -56.5 -29.5 -79.3994 -29.5c-46.5 0 -120.4 27.9004 -120.4 126.9c0 11.3994 1.2002 22.3994 3.2998 32.8994l-78.7998 35.1006c-45.5996 -129.9 51 -267.9 190.2 -267.9zM442.2 140.5\nc0.200195 -0.200195 0.299805 -0.299805 0.599609 -0.400391c4.40039 16.6006 6.7998 34 6.7998 52c0 111.101 -90.3994 201.5 -201.5 201.5c-70.3994 0 -132.399 -36.2998 -168.5 -91.1992l74.9004 -33.4004c19.7998 31.0996 53.2998 51.5996 100.7 51.5996\nc20.0996 0 51 -4.19922 78.0996 -27.5l-40.3994 -41.5996c-19.8008 19.7002 -55.9004 23 -74.7002 -11z\" />\n    <glyph glyph-name=\"creative-commons-pd-alt\" unicode=\"&#xf4ed;\" horiz-adv-x=\"496\" \nd=\"M247.6 440c141.801 0 248.4 -110.1 248.4 -248c0 -147.1 -118.5 -248 -248.4 -248c-134 0 -247.6 109.5 -247.6 248c0 132.9 104.7 248 247.6 248zM248.4 -10.7998c103.199 0 202.8 81.0996 202.8 202.8c0.0996094 113.8 -90.2002 203.3 -202.8 203.3\nc-118.2 0 -203.7 -97.8994 -203.7 -203.3c0 -109.8 91.2002 -202.8 203.7 -202.8zM316.7 262c21.3994 0 70 -5.2002 70 -68.5996c0 -63.5 -48.6006 -68.6006 -70 -68.6006h-53.2002v137.2h53.2002zM317.5 153.5c24 0 34.5 15.2998 34.5 39.9004\nc0 42 -31.2002 39.8994 -35 39.8994l-19.4004 -0.0996094v-79.7002h19.9004zM203.7 262c33.7002 0 50.5 -15.5 50.5 -46.5c0 -9 -3 -46.5 -57.1006 -46.5h-27v-44.2998h-34.5996v137.3h68.2002zM198.8 194.7c27.9004 0 30 41.5996 -0.899414 41.5996h-28.3008v-41.5996\nh29.2002z\" />\n    <glyph glyph-name=\"creative-commons-remix\" unicode=\"&#xf4ee;\" horiz-adv-x=\"496\" \nd=\"M247.6 440c141.801 0 248.4 -110.1 248.4 -248c0 -147.1 -118.5 -248 -248.4 -248c-134 0 -247.6 109.5 -247.6 248c0 132.9 104.7 248 247.6 248zM248.4 395.3c-118.2 0 -203.7 -97.8994 -203.7 -203.3c0 -109.8 91.2002 -202.8 203.7 -202.8\nc103.199 0 202.8 81.0996 202.8 202.8c0.0996094 113.8 -90.2002 203.3 -202.8 203.3zM410.1 187.6l4.90039 -2.19922v-70c-7.2002 -3.60059 -63.4004 -27.5 -67.2998 -28.8008c-6.5 1.80078 -113.7 46.8008 -137.3 56.2002l-64.2002 -26.5996l-63.2998 27.5v63.7998\nl59.2998 24.7998c-0.700195 0.700195 -0.400391 -5 -0.400391 70.4004l67.2998 29.7002l151.9 -62.9004v-61.5996zM339.7 106.1v43.8008h-0.400391v1.7998l-113.8 46.5v-45.2002l113.8 -46.9004v0.400391zM347.2 163.7l39.8994 16.3994l-36.7998 15.5l-39 -16.3994z\nM399.5 125.6v43l-44.2998 -18.5996v-43.4004z\" />\n    <glyph glyph-name=\"creative-commons-sa\" unicode=\"&#xf4ef;\" horiz-adv-x=\"496\" \nd=\"M247.6 440c141.801 0 248.4 -110.1 248.4 -248c0 -147.1 -118.5 -248 -248.4 -248c-134 0 -247.6 109.5 -247.6 248c0 132.9 104.7 248 247.6 248zM248.4 395.3c-118.2 0 -203.7 -97.8994 -203.7 -203.3c0 -109.8 91.2002 -202.8 203.7 -202.8\nc103.199 0 202.8 81.0996 202.8 202.8c0.0996094 113.8 -90.2002 203.3 -202.8 203.3zM137.7 227c13 83.9004 80.5 95.7002 108.899 95.7002c99.8008 0 127.5 -82.5 127.5 -134.2c0 -63.5996 -41 -132.9 -128.899 -132.9c-38.9004 0 -99.1006 20 -109.4 97h62.5\nc1.5 -30.0996 19.6006 -45.1992 54.5 -45.1992c23.2998 0 58 18.1992 58 82.7998c0 82.5 -49.0996 80.5996 -56.7002 80.5996c-33.0996 0 -51.6992 -14.5996 -55.7998 -43.7998h18.2002l-49.2002 -49.2002l-49 49.2002h19.4004z\" />\n    <glyph glyph-name=\"creative-commons-sampling\" unicode=\"&#xf4f0;\" horiz-adv-x=\"496\" \nd=\"M247.6 440c141.801 0 248.4 -110.1 248.4 -248c0 -147.1 -118.5 -248 -248.4 -248c-134 0 -247.6 109.5 -247.6 248c0 132.9 104.7 248 247.6 248zM248.4 395.3c-118.2 0 -203.7 -97.8994 -203.7 -203.3c0 -109.8 91.2002 -202.8 203.7 -202.8\nc103.199 0 202.8 81.0996 202.8 202.8c0.0996094 113.8 -90.2002 203.3 -202.8 203.3zM252 342.1c2.7998 0.300781 11.5 -1 11.5 -11.5l6.59961 -107.199l4.90039 59.2998c0 6 4.7002 10.5996 10.5996 10.5996c5.90039 0 10.6006 -4.7002 10.6006 -10.5996\nc0 -2.5 -0.5 5.7002 5.7002 -81.5l5.7998 64.2002c0.299805 2.89941 2.89941 9.2998 10.2002 9.2998c3.7998 0 9.89941 -2.2998 10.5996 -8.90039l11.5 -96.5l5.2998 12.7998c1.7998 4.40039 5.2002 6.60059 10.2002 6.60059h58v-21.2998h-50.9004l-18.1992 -44.3008\nc-3.90039 -9.89941 -19.5 -9.09961 -20.8008 3.10059l-4 31.8994l-7.5 -92.5996c-0.299805 -3 -3 -9.2998 -10.1992 -9.2998c-3 0 -9.80078 2.09961 -10.6006 9.2998c0 1.90039 0.600586 -5.7998 -6.2002 77.9004l-5.2998 -72.2002\nc-1.09961 -4.7998 -4.7998 -9.2998 -10.5996 -9.2998c-2.90039 0 -9.7998 2 -10.6006 9.2998c0 1.89941 0.5 -6.7002 -5.7998 87.7002l-5.7998 -94.8008c0 -6.2998 -3.59961 -12.3994 -10.5996 -12.3994c-5.2002 0 -10.6006 4.09961 -10.6006 12l-5.7998 87.7002\nc-5.7998 -92.5 -5.2998 -84 -5.2998 -85.9004c-1.10059 -4.7998 -4.7998 -9.2998 -10.6006 -9.2998c-3 0 -9.7998 2.09961 -10.5996 9.2998c0 0.700195 -0.400391 1.09961 -0.400391 2.59961l-6.19922 88.6006l-4.90039 -56.7002\nc-0.700195 -6.5 -6.7002 -9.2998 -10.5996 -9.2998c-5.80078 0 -9.60059 4.09961 -10.6006 8.89941l-11.0996 76.4004c-2 -4 -3.5 -8.40039 -11.1006 -8.40039h-51.3994v21.3008h44.7998l13.7002 27.8994c4.39941 9.90039 18.2002 7.2002 19.8994 -2.7002l3.10059 -20.3994\nl8.39941 97.8994c0 6 4.80078 10.6006 10.6006 10.6006c0.5 0 10.5996 0.200195 10.5996 -12.4004l4.90039 -69.0996l6.59961 92.5996c0 10.1006 9.5 10.6006 10.2002 10.6006c0.599609 0 10.5996 -0.700195 10.5996 -10.6006l5.30078 -80.5996l6.19922 97.8994\nc0.100586 1.10059 -0.599609 10.3008 9.90039 11.5z\" />\n    <glyph glyph-name=\"creative-commons-sampling-plus\" unicode=\"&#xf4f1;\" horiz-adv-x=\"496\" \nd=\"M247.6 440c141.801 0 248.4 -110.1 248.4 -248c0 -147.1 -118.5 -248 -248.4 -248c-134 0 -247.6 109.5 -247.6 248c0 132.9 104.7 248 247.6 248zM248.4 395.3c-118.2 0 -203.7 -97.8994 -203.7 -203.3c0 -109.8 91.2002 -202.8 203.7 -202.8\nc103.199 0 202.8 81.0996 202.8 202.8c0.0996094 113.8 -90.2002 203.3 -202.8 203.3zM355.4 189.7l58.3994 0.299805v-23.2002h-50.5l-18 -43.3994c-4.59961 -11 -20.8994 -8.7002 -22.2998 3.09961l-2.7002 22.2998l-6.7998 -83\nc-1.09961 -14.0996 -22 -14.2002 -23.0996 0.100586l-4.90039 64.3994l-4.59961 -58.5996c-1.10059 -14.2998 -22.3008 -14.1006 -23.2002 0.200195l-4.5 71.7998l-4.90039 -80.5c-0.899414 -14.5 -22.2998 -14.5 -23.2002 -0.100586l-4.7998 73.3008l-4.59961 -70.4004\nc-0.900391 -14.2998 -22.1006 -14.5 -23.2002 -0.0996094l-5.7002 78.2998l-3.7998 -43.6006c-1.2002 -13.6992 -21.0996 -14.1992 -23.0996 -0.699219l-10.7002 73.0996c-2 -3.90039 -6 -6.40039 -10.4004 -6.40039h-51.2998v23.2002h43.9004l13.1992 27.7002\nc4.90039 10.2998 20.3008 8.09961 22 -3.2998l1.80078 -12.2002l7.69922 89.7998c1.2002 14.1006 22.1006 14.1006 23.2002 -0.200195l4.10059 -57l5.2998 80.2002c1 14.4004 22.2998 14.4004 23.2002 0l4.2998 -66.2998l5.09961 83.7002\nc0.900391 14.3994 22.2998 14.5 23.2002 0l5.90039 -94.2998l3.5 44.8994c1.09961 14.2002 22.0996 14.2998 23.1992 0l5.2002 -68.7998l4.2998 51.4004c1.10059 13.7998 21.4004 14.2998 23.1006 0.399414l11 -92.7998l4 9.5c1.7002 4.40039 6 7.2002 10.7002 7.2002z\nM277.4 184.5c4.09961 0 7.5 3.40039 7.5 7.5c0 4.2002 -3.40039 7.5 -7.5 7.5h-21.9004v21.9004c0 4.19922 -3.40039 7.5 -7.5 7.5s-7.5 -3.40039 -7.5 -7.5v-21.9004h-21.9004c-4.09961 0 -7.5 -3.40039 -7.5 -7.5c0 -4.2002 3.40039 -7.5 7.5 -7.5h21.9004v-21.9004\nc0 -4.19922 3.40039 -7.5 7.5 -7.5c4.2002 0 7.5 3.40039 7.5 7.5v21.9004h21.9004z\" />\n    <glyph glyph-name=\"creative-commons-share\" unicode=\"&#xf4f2;\" horiz-adv-x=\"496\" \nd=\"M247.6 440c141.801 0 248.4 -110.1 248.4 -248c0 -147.1 -118.5 -248 -248.4 -248c-134 0 -247.6 109.5 -247.6 248c0 132.9 104.7 248 247.6 248zM248.4 395.3c-118.2 0 -203.7 -97.8994 -203.7 -203.3c0 -109.8 91.2002 -202.8 203.7 -202.8\nc103.199 0 202.8 81.0996 202.8 202.8c0.0996094 113.8 -90.2002 203.3 -202.8 203.3zM349.4 262.9c7.7998 0 13.6992 -6.10059 13.6992 -13.7002v-182.5c0 -7.7002 -6.09961 -13.7002 -13.6992 -13.7002h-135.101c-7.7002 0 -13.7002 6 -13.7002 13.7002v54h-54\nc-7.7998 0 -13.6992 6 -13.6992 13.7002v182.5c0 8.19922 6.59961 12.6992 12.3994 13.6992h136.4c7.7002 0 13.7002 -6 13.7002 -13.6992v-54h54zM159.9 147.7h40.6992v101.399c0 7.40039 5.80078 12.6006 12 13.7002h55.8008v40.2998h-108.5v-155.399zM336.1 235.8h-108.5\nv-155.399h108.5v155.399z\" />\n    <glyph glyph-name=\"creative-commons-zero\" unicode=\"&#xf4f3;\" horiz-adv-x=\"496\" \nd=\"M247.6 440c141.801 0 248.4 -110.1 248.4 -248c0 -147.1 -118.5 -248 -248.4 -248c-134 0 -247.6 109.5 -247.6 248c0 132.9 104.7 248 247.6 248zM248.4 395.3c-118.2 0 -203.7 -97.8994 -203.7 -203.3c0 -109.8 91.2002 -202.8 203.7 -202.8\nc103.199 0 202.8 81.0996 202.8 202.8c0.0996094 113.8 -90.2002 203.3 -202.8 203.3zM248 334.8c81.9004 0 102.5 -77.2998 102.5 -142.8s-20.5996 -142.8 -102.5 -142.8s-102.5 77.2998 -102.5 142.8s20.5996 142.8 102.5 142.8zM248 280.9\nc-42.0996 0 -44.0996 -60.1006 -44.0996 -88.9004c0 -9.2998 0.199219 -21.7002 1.89941 -34.4004l54.5 100.2c5.7002 9.7998 2.7998 16.7998 -3.09961 21.9004c-2.7998 0.700195 -5.90039 1.2002 -9.2002 1.2002zM288.8 234.7l-60.8994 -105.2\nc-12.5 -18.7002 6.59961 -26.4004 20.0996 -26.4004c42.0996 0 44.0996 60 44.0996 88.9004c0 11.2998 -0.399414 27.2998 -3.2998 42.7002z\" />\n    <glyph glyph-name=\"ebay\" unicode=\"&#xf4f4;\" horiz-adv-x=\"640\" \nd=\"M606 258.5h34l-99.2002 -194.8h-35.8994l28.5 54.0996l-61.5 116.101c3.09961 -6.60059 4.7998 -14.5 4.7998 -23.8008v-65.5996c0 -9.2998 0.299805 -18.5996 1 -26.7998h-29.7998c-0.800781 6.89941 -1.10059 13.5996 -1.10059 20.2002\nc-16.0996 -19.8008 -35.2998 -25.5 -61.8994 -25.5c-39.5 0 -60.6006 20.8994 -60.6006 45c0 3.19922 0.200195 6.19922 0.700195 9c-8.40039 -32.3008 -36.4004 -54.2002 -73.2998 -54.2002c-23.2998 0 -45.1006 8.2998 -58.7002 24.8994\nc0 -6.59961 -0.400391 -13.1992 -1.09961 -19.5h-31.5c0.5 10.2002 1.09961 22.8008 1.09961 33.1006v169.5h32.0996v-80.6006c15.7002 18.7002 37.4004 24.2002 58.7002 24.2002c35.7002 0 75.4004 -24.0996 75.4004 -76.2002c0 -5.59961 -0.5 -11 -1.5 -16.1992\nc7.09961 24.3994 34.2998 33.5 76.7002 34.3994c13.6992 0.299805 29 0.400391 41.6992 0.400391v3.39941c0 23.4004 -15 33 -41 33c-19.2998 0 -33.5996 -8 -35 -21.7998h-33.6992c3.59961 34.4004 39.6992 43.1006 71.5 43.1006c27.3994 0 51.7998 -7 63.2998 -26\nl-10.9004 20.5996h37.5l54.9004 -109.9zM243.7 134.2c29.7998 0 50.2002 21.5 50.2002 53.7998c0 32.4004 -20.4004 53.7998 -50.2002 53.7998c-29.6006 0 -50.2002 -21.3994 -50.2002 -53.7998c0 -32.2998 20.5996 -53.7998 50.2002 -53.7998zM444.6 181.5v3.2998\nc-11.7998 0 -26.2998 -0.0996094 -39.3994 -0.599609c-29.1006 -0.900391 -47.2002 -6.2002 -47.2002 -25.2998c0 -12.4004 9.90039 -25.8008 35 -25.8008c33.7002 0 51.5996 18.4004 51.5996 48.4004zM32.7002 179.9c3.5 -58.3008 79.2002 -57.4004 91.2002 -21.6006\nh33.0996c-6.40039 -34.3994 -43 -46.0996 -74.4004 -46.0996c-57.1992 0 -82.5 31.5 -82.5 74c0 46.7998 26.2002 77.5996 83 77.5996c45.3008 0 78.4004 -23.7002 78.4004 -75.3994v-8.5h-128.8zM127.7 201.3c-2.2998 54.7002 -87.5 56.6006 -94.4004 0h94.4004z\" />\n    <glyph glyph-name=\"keybase\" unicode=\"&#xf4f5;\" \nd=\"M286.17 29c9.93652 0 18 -8.06445 18 -18s-8.06348 -18 -18 -18c-9.93555 0 -18 8.06445 -18 18s8.06445 18 18 18zM398.09 176.6c22.9102 -33.46 35.9102 -72.3398 35.9102 -110.92c0 -31.6797 -5 -60.6797 -14.5996 -86.2295\nc-3.04004 -8.0498 -10.9502 -12.7197 -18.3701 -11.1504c-6.83984 1.24023 -11.1201 9.28027 -8.60059 15.7402c11.1904 28.71 14.8799 58.3398 14.8799 81.6396c-0.0517578 7.91797 -1.30566 20.6543 -2.7998 28.4307\nc-0.649414 -1.06055 -1.12988 -2.2207 -1.84961 -3.2207c-17.29 -24.5293 -50.54 -33.8896 -84.7402 -23.8398c-78.8701 23.1699 -178.02 3.81055 -236.25 -38.5898l24.6602 74.1104l-46.8203 -59.8301c2.04297 -15.3486 9.10352 -39.1504 15.7598 -53.1299\nc6.25 -13.1904 0.460938 -18.2402 -3.75 -20.1104c-4.76953 -2.12012 -13.8594 -2.7998 -19.6396 7.33008c-5.43652 9.81641 -11.96 26.6436 -14.5596 37.5596l-23.3203 -29.7998v33.6406c0 55.7695 0 125.109 62.6504 188.409c11.4258 11.5684 32.1631 27.4902 46.29 35.54\nl-8.93066 0.540039c-27.8799 1.64062 -49.2402 24.8506 -47.6299 51.8506l2.36035 36.6797c0 -6.24023 0.139648 45.8799 50.75 45.8799c2.05957 0 -0.470703 0.120117 41.0596 -2.33008c2.31641 -0.15625 6.03027 -0.71582 8.29004 -1.25\nc7.41992 11.3398 15.6504 22.8301 24.3398 34.8906l5.48047 7.55957l22.8994 -13.5195c-11.29 -24 -10 -33 -9.39941 -35c9.08008 0.229492 20 -1.6709 32.4102 -5.77051c29.6523 -9.84375 53.7188 -43.1914 53.7188 -74.4355\nc0 -8.5127 -2.61621 -21.8154 -5.83887 -29.6943c6.18652 -2.13965 12.3135 -4.56348 18.3799 -7.27051c47.8896 -21.2598 77.7598 -59.0898 87.2598 -73.71zM142.37 319.42c1.55664 5.42773 4.69336 14.0156 7 19.1699l-29.1104 1.73047\nc0.610352 -0.0507812 -12.2598 0.849609 -13.2598 -11.3203l-2.41016 -36.6602c-0.00585938 -0.143555 -0.0107422 -0.376953 -0.0107422 -0.520508c0 -6.50293 5.27344 -12 11.7705 -12.2695l22.3809 -1.33984c-0.380859 3.10645 -0.689453 8.16797 -0.689453 11.2969\nc0 2.28809 0.165039 5.99414 0.369141 8.27344l-13.1299 0.779297l1.38965 21.79zM290.79 147.24c2.06152 1.58789 3.73438 4.9873 3.73438 7.58887c0 1.80273 -0.893555 4.42383 -1.99414 5.85059l-81.0898 96.3203c-1.71484 1.99023 -5.23828 3.60547 -7.86523 3.60547\nc-1.99023 0 -4.87305 -1.00098 -6.43555 -2.23535c-2.05957 -1.58398 -3.73242 -4.97949 -3.73242 -7.57812c0 -1.7998 0.892578 -4.41699 1.99316 -5.8418c0.0898438 -0.140625 18.5996 -22.1406 18.5996 -22.1406l-16.9102 -13.29\nc-1.59473 -1.22266 -2.88867 -3.8457 -2.88867 -5.85547c0 -1.37988 0.680664 -3.38867 1.51855 -4.48438c0.0800781 -0.109375 2.52246 -3.07324 3.7998 -4.5293c1.27832 -1.45703 3.8877 -2.63867 5.8252 -2.63867c1.4707 0 3.60547 0.734375 4.76562 1.63867\nl17.0898 13.4492l14.1396 -16.7393l-34.5703 -27.1807c-1.58398 -1.22266 -2.86914 -3.83984 -2.86914 -5.84082c0 -1.38574 0.685547 -3.40039 1.5293 -4.49902l15.7803 -18.6396c1.33594 -1.55176 4.08203 -2.81055 6.12988 -2.81055\nc1.54492 0 3.78516 0.775391 5 1.73047l34.4199 27l9.68066 -11.4902c1.7334 -1.98242 5.27832 -3.5918 7.91211 -3.5918c1.98438 0 4.86816 0.986328 6.4375 2.20215zM187.44 29c9.93555 0 18 -8.06445 18 -18s-8.06445 -18 -18 -18c-9.93652 0 -18 8.06445 -18 18\ns8.06348 18 18 18z\" />\n    <glyph glyph-name=\"mastodon\" unicode=\"&#xf4f6;\" \nd=\"M433 268.89c0 0 0.799805 -71.6992 -9 -121.5c-6.23047 -31.5996 -55.1104 -66.1992 -111.23 -72.8994c-20.0996 -2.40039 -93.1191 -14.2002 -178.75 6.7002v-0.339844c0 -3.75977 0.40332 -9.83496 0.900391 -13.5605c6.62988 -49.5996 49.2197 -52.5996 89.6299 -54\nc40.8105 -1.2998 77.1201 10.0996 77.1201 10.0996l1.7002 -36.8994s-28.5098 -15.2998 -79.3203 -18.1006c-28.0098 -1.59961 -62.8193 0.700195 -103.33 11.4004c-112.229 29.7002 -105.63 173.4 -105.63 289.1c0 97.2002 63.7197 125.7 63.7197 125.7\nc61.9209 28.4004 227.96 28.7002 290.48 0c0 0 63.71 -28.5 63.71 -125.7zM357.88 143.69c0 122 5.29004 147.71 -18.4199 175.01c-25.71 28.7002 -79.7197 31 -103.83 -6.10059l-11.5996 -19.5l-11.6006 19.5c-24.0098 36.9004 -77.9297 35 -103.83 6.10059\nc-23.6094 -27.1006 -18.4092 -52.9004 -18.4092 -175h46.7295v114.2c0 49.6992 64 51.5996 64 -6.90039v-62.5098h46.3301v62.5c0 58.5 64 56.5996 64 6.89941v-114.199h46.6299z\" />\n    <glyph glyph-name=\"r-project\" unicode=\"&#xf4f7;\" horiz-adv-x=\"581\" \nd=\"M581 221.4c0 -54.8008 -33.9004 -104.301 -88.4004 -139.7l67.4004 -113.7h-112l-40.0996 75.4004c-21.8008 -6.5 -45.1006 -11.2002 -69.4004 -13.9004v-61.5h-99.0996v61.9004c-136.101 16.0996 -239.4 95.6992 -239.4 191.5c0 107.5 130.1 194.6 290.5 194.6\ns290.5 -87.0996 290.5 -194.6zM114.2 206.9c0 -52.8008 51.0996 -98.4004 125.2 -119.9v208.3h199s90.5996 -1.59961 90.5996 -87.8994c0 -86.3008 -86.5996 -92.7002 -86.5996 -92.7002s17.5996 -5.2998 27.7998 -10.5c1.7002 -0.799805 4 -2.10059 6.39941 -3.7002\nc43.8008 21.4004 70.3008 56.2998 70.3008 106.4c0 92.2998 -90 133 -211.9 133s-220.8 -59.5 -220.8 -133zM339.3 168.6c49.6006 0 87.7998 -8.19922 87.7998 28.3008c0 34.0996 -30 27.2998 -87.7998 27.2998v-55.6006zM338.4 96.0996v-22.0996\nc17.5996 0.0996094 34.5 1 50.5996 2.90039c-5.09961 7.5 -13.2002 19.1992 -24 19.1992h-26.5996z\" />\n    <glyph glyph-name=\"researchgate\" unicode=\"&#xf4f8;\" \nd=\"M0 416h448v-448h-448v448zM262.2 81.5996v7.30078c-10 0 -20 6.89941 -27.2002 14.6992c-12.2002 13.3008 -28.5996 34.7002 -42.2002 58.9004c22.5 5.2998 39.2002 26.4004 39.2002 47.5c0 31.2002 -24.2002 45.5996 -55.9004 45.5996\nc-17.7998 0 -45.0996 -1.59961 -70.8994 -0.599609v-8.09961c15.5996 -2.90039 22 -1.30078 22 -23.9004v-109.4c0 -22.5996 -6.5 -21 -22 -23.8994v-8.10059c7.5 0.200195 20.5 0.800781 33.5996 0.800781c12.5 0 28.7002 -0.5 35.6006 -0.800781v8.10059\nc-19.8008 2.7002 -25.8008 0.399414 -25.8008 23.8994v46.4004c6.7002 -0.599609 12.5 -0.599609 21.4004 -0.599609c16.9004 -30.3008 33 -53 42.2002 -63.6006c16.7998 -20.2002 43.3994 -17.2002 50 -14.2002zM285.1 216.6c38.7002 0 34 29.4004 34 49.9004h-30.3994\nv-10.7002h17.8994c0 -15.8994 -7.39941 -26.7998 -21.5 -26.7998c-11.2998 0 -17.8994 9.90039 -17.8994 23.2998v26.7998c0 12.4004 11.7998 19.7002 19.7002 19.7002c14.1992 0 19.6992 -12.5 19.6992 -12.5l10.7002 7.2002s-5.2002 17.9004 -30.3994 17.9004\nc-25.2002 0 -34 -18.2002 -34 -30.4004v-32.2002c0 -16.5 8.89941 -32.2002 32.1992 -32.2002zM168.6 171.9c-9.39941 0 -13.5996 0.299805 -20 0.799805v69.7002c6.40039 0.599609 15 0.599609 22.5 0.599609c23.3008 0 37.2002 -12.2002 37.2002 -34.5\nc0 -21.9004 -15 -36.5996 -39.7002 -36.5996z\" />\n    <glyph glyph-name=\"teamspeak\" unicode=\"&#xf4f9;\" horiz-adv-x=\"512\" \nd=\"M244.2 101.21c-2.40039 -12.5 -10.6006 -20 -22.5 -24.2998c-9.2002 -3.2002 -50.1006 -1.60059 -61.7002 -1c-18 1.2998 -33.2002 8.5 -43.4004 24c-14.5 22.5 -19.5 47.7002 -14.5 73.8994c4.60059 24.5 24.6006 34.7002 46.3008 22.7002\nc15.1992 -7.5 42.5 -27.3994 63.3994 -46.5996c20.4004 -18.7002 34.7998 -36.4004 32.4004 -48.7002zM449.2 80.4102c6.7002 -5.41016 11.2002 -22 11.5996 -32.1006c1 -50.3994 -23.8994 -68 -46.5996 -85.3994c-65.1006 -50 -295.101 -16.9004 -145.4 -6.40039\nc127.4 9 164.101 96.1006 172.101 121.5c0.647461 1.99023 2.87109 3.60547 4.96387 3.60547c1.04102 0 2.53516 -0.540039 3.33594 -1.20508zM511.2 202.81c0 -17.1992 1.89941 -34.5996 -1 -51.6992c-4 -24.7002 -29.1006 -41.7002 -53.2002 -36.7002\nc-7.2002 1.7002 -9.40039 7.2002 -9.40039 14.2002c0 28.0996 0.800781 56.3994 0 84.5996c-1.89941 75.79 -36.1992 132.79 -102.3 169.4c-111 60.3896 -253.2 -7 -277.8 -131.5c-6.09961 -30.4004 -1.7002 -48.3008 -3.7002 -125.801\nc-0.299805 -7.19922 -4.2998 -11.1992 -12 -11.5c-30.7998 -1.39941 -51.7998 18.2002 -51.7998 49v20.9004l0.799805 26.4902c2.40039 15.5 10.7002 27 24.9004 34c3.5 1.7998 5.7002 3.5 6.39941 7.7998c6.10059 33.4102 19.5 64 39.3008 91.71\nc2.2998 3.09961 4 5.2998 1 9.2998c-3.7002 5.40039 -1 10.2002 3 14.5c28.0996 31.7998 61.8994 55.1006 102 67.4004c96 29.4668 180.1 9.29688 252.3 -60.5098c6.7002 -6.40039 15.5 -12.9004 7 -24.4004c-1.2998 -1.7998 1.09961 -3.5 2.2002 -5\nc17.2246 -23.209 35.3242 -65.1367 40.3994 -93.5898c0.900391 -3.7002 3 -5.10059 5.90039 -6.40039c17.3994 -8.7998 25.7002 -23.2998 26 -42.2002zM351.6 71.3096l-51.5996 7.7002c-22.7998 5.90039 -51 32.7002 22.2002 60.7998\nc21.5996 8.5 85.7002 37.2002 87.7998 -8c0.900391 -32 -21.9004 -63.2998 -58.4004 -60.5z\" />\n    <glyph glyph-name=\"first-order-alt\" unicode=\"&#xf50a;\" horiz-adv-x=\"496\" \nd=\"M248 440c136.97 0 248 -111.03 248 -248s-111.03 -248 -248 -248s-248 111.03 -248 248s111.03 248 248 248zM248 -48.21c132.66 0 240.21 107.55 240.21 240.21s-107.55 240.21 -240.21 240.21s-240.21 -107.55 -240.21 -240.21s107.55 -240.21 240.21 -240.21z\nM248 411.71c121.34 0 219.71 -98.3701 219.71 -219.71s-98.3701 -219.71 -219.71 -219.71s-219.71 98.3701 -219.71 219.71s98.3701 219.71 219.71 219.71zM248 -19.5098c116.81 0 211.51 94.7002 211.51 211.51s-94.7002 211.51 -211.51 211.51\ns-211.51 -94.6895 -211.51 -211.51s94.7002 -211.51 211.51 -211.51zM434.23 143.47c-3.69141 -14.209 -12.709 -36.0225 -20.1309 -48.6895l-74.1299 35.8799l61.4805 -54.8203c-8.85352 -11.7021 -25.5195 -28.4082 -37.2002 -37.29l-54.7998 61.5703l35.8799 -74.2705\nc-12.6445 -7.45215 -34.4307 -16.5156 -48.6299 -20.2295l-27.29 78.4697l4.79004 -82.9297c-8.61035 -1.17969 -17.4004 -1.7998 -26.3301 -1.7998s-17.7197 0.620117 -26.3301 1.7998l4.75977 82.46l-27.1494 -78.0303c-14.2021 3.70996 -35.998 12.7588 -48.6504 20.2002\nl35.9297 74.3398l-54.8701 -61.6396c-11.6836 8.87988 -28.3584 25.582 -37.2197 37.2793l61.5898 54.9004l-74.2598 -35.9297c-7.42383 12.667 -16.4463 34.4795 -20.1396 48.6895l77.8398 27.1104l-82.2305 -4.75977c-1.15918 8.56934 -1.7793 17.3193 -1.7793 26.21\nc0 9 0.629883 17.8398 1.81934 26.5098l82.3799 -4.76953l-77.9395 27.1592c3.71973 14.208 12.7822 36.0127 20.2295 48.6699l74.2207 -35.9199l-61.5205 54.8604c8.88086 11.6836 25.582 28.3584 37.2803 37.2197l54.7598 -61.5293l-35.8301 74.1699\nc12.6562 7.41895 34.4521 16.4375 48.6504 20.1299l26.8701 -77.25l-4.70996 81.6094c8.60938 1.18066 17.3896 1.80078 26.3193 1.80078c8.93066 0 17.71 -0.620117 26.3203 -1.80078l-4.74023 -82.1592l27.0498 77.7598c17.2705 -4.5 33.6006 -11.3506 48.6309 -20.1699\nl-35.8203 -74.1201l54.7197 61.4697c11.6924 -8.86133 28.376 -25.54 37.2402 -37.2295l-61.4502 -54.7705l74.1201 35.8604c7.43945 -12.6533 16.4893 -34.4492 20.2002 -48.6504l-77.8105 -27.0996l82.2402 4.75c1.19043 -8.66016 1.82031 -17.5 1.82031 -26.4902\nc0 -8.87988 -0.610352 -17.6299 -1.78027 -26.1904l-82.1201 4.75z\" />\n    <glyph glyph-name=\"fulcrum\" unicode=\"&#xf50b;\" horiz-adv-x=\"320\" \nd=\"M95.75 283.86l-35.3799 -43.5508l-35.3701 43.5508l35.3799 43.5498zM144.23 448v-211.11l-41.0801 -44.8896l41.0801 -44.8896v-211.11l-20.5107 198.18l-51 57.8203l50.9707 57.8203zM223.9 283.86l35.3799 43.5498l35.3799 -43.5498l-35.3799 -43.5508zM175.42 236.86\nv211.14l20.5801 -198.18l51 -57.8203l-51 -57.8203l-20.5801 -198.18v211.11l41.0801 44.8896z\" />\n    <glyph glyph-name=\"galactic-republic\" unicode=\"&#xf50c;\" horiz-adv-x=\"496\" \nd=\"M248 -56c-136.75 0 -248 111.25 -248 248s111.25 248 248 248s248 -111.25 248 -248s-111.25 -248 -248 -248zM248 423.47c-127.63 0 -231.47 -103.84 -231.47 -231.47s103.84 -231.47 231.47 -231.47s231.47 103.84 231.47 231.47s-103.84 231.47 -231.47 231.47z\nM275.62 401.66c37.6602 -4.91016 72.21 -19.7402 100.96 -41.7998l-17.3896 -17.3604c-20.6758 15.3154 -58.1152 30.7891 -83.5703 34.54v24.6201zM220.25 401.59v-24.54c-30.9697 -4.60938 -59.4502 -16.8301 -83.5195 -34.6699h-0.0800781l-17.2803 17.3604\nc28.7197 22.0498 63.2402 36.9102 100.88 41.8496zM232.5 351.42h31v-82.8604c10.0498 -2.0293 19.3701 -6.00977 27.6201 -11.5l58.6699 58.6709l21.9297 -21.9307l-58.6699 -58.6699c5.46973 -8.24023 9.48047 -17.5996 11.5 -27.6201h82.8701v-31h-82.8701\nc-2.03027 -10.0195 -6.04004 -19.3096 -11.5 -27.54l58.6699 -58.6895l-21.9297 -21.9307l-58.6699 58.6904c-8.25 -5.49023 -17.5703 -9.52051 -27.6201 -11.5498v-82.9004h-31v82.9004c-8.25781 1.66895 -20.6533 6.80762 -27.6699 11.4697l-58.6201 -58.6201\nl-21.9297 21.9297l58.6699 58.6904c-5.45996 8.23047 -9.4502 17.5205 -11.4697 27.54h-82.9004v31h82.9004c2.01953 10.0303 6 19.3896 11.4697 27.6201l-58.6699 58.6699l21.9297 21.9297l58.6201 -58.5898c8.25 5.48047 17.6299 9.38965 27.6699 11.4199v82.8701z\nM415.74 320.7c22.0996 -28.7402 36.9795 -63.3398 41.9297 -101.03h-24.6201c-3.7832 25.4902 -19.3154 62.9746 -34.6699 83.6699zM80.1904 320.57l17.3896 -17.3906c-17.8301 -24.0693 -29.9902 -52.5596 -34.5898 -83.5195h-24.6504\nc4.94043 37.6494 19.79 72.1895 41.8506 100.91zM38.3398 164.33l24.6504 0.00976562c4.58984 -30.9502 16.7002 -59.4502 34.5098 -83.5195l-17.3604 -17.3906c-22.0498 28.7207 -36.8799 63.2607 -41.7998 100.9zM433.04 164.33h24.6201\nc-4.9502 -37.6699 -19.8506 -72.2197 -41.9297 -100.96l-17.3604 17.3604c17.8701 24.0996 30.0596 52.6094 34.6699 83.5996zM136.66 41.6201c24.0703 -17.8604 52.6094 -30.0205 83.5996 -34.6504v-24.6396c-37.6602 4.9502 -72.2295 19.8398 -100.96 41.9297z\nM359.19 41.5703h0.0791016l17.3105 -17.3906c-28.75 -22.0596 -63.29 -36.9297 -100.96 -41.8496v24.5703c30.9902 4.58984 59.4795 16.8301 83.5703 34.6699z\" />\n    <glyph glyph-name=\"galactic-senate\" unicode=\"&#xf50d;\" horiz-adv-x=\"512\" \nd=\"M249.86 414.52h12.2793v-26.0693c13.5801 -20.6201 23.8604 -108.59 24.4902 -215.351c-11.7402 15.6201 -19.1299 33.3301 -19.1299 48.2402v16.8799c0.0302734 5.32031 -0.75 10.5303 -2.19043 15.6504c-0.649414 2.13965 -1.38965 4.07031 -2.61914 5.82031\nc-1.23047 1.73926 -3.44043 3.79004 -6.68066 3.79004c-3.25 0 -5.4502 -2.04004 -6.67969 -3.79004c-1.23047 -1.74023 -1.96973 -3.68066 -2.62012 -5.82031c-1.44043 -5.12012 -2.21973 -10.3301 -2.19043 -15.6504v-16.8799\nc0 -14.9102 -7.38965 -32.6201 -19.1299 -48.2402c0.610352 106.761 10.8906 194.73 24.4707 215.351v26.0693zM223.52 266.75c-1.59961 -22.4004 -2.75 -46.5195 -3.47949 -72.0703c-23.2998 -11.2793 -40.7705 -33.1602 -46.3203 -59.5098\nc-7.71973 -2.25977 -22.71 -3.91992 -40.4893 -4.21973c-7.51074 3.66016 -16.5 5.85938 -26.1807 6.04004c1.90039 14.9102 5.87012 29.1699 11.6504 42.4199c15.4395 -8.10059 30.9297 -8.66016 35.4697 -0.959961c4.57031 7.74023 -3.58984 21.04 -18.3203 30.6602\nc8.68066 11.7695 18.9805 22.2998 30.5605 31.0898c9.50977 -15.5898 23.3594 -24.4404 31.3594 -19.8203c8.05078 4.65039 7.19043 21.1699 -1.70996 37.29c8.76074 3.88965 17.9404 6.92969 27.46 9.08008zM288.48 266.75\nc7.82227 -1.75977 20.1201 -5.82812 27.4492 -9.08008c-8.89941 -16.1299 -9.75977 -32.6396 -1.70996 -37.29c8 -4.62012 21.8506 4.23047 31.3604 19.8203c11.5801 -8.79004 21.8799 -19.3203 30.5596 -31.0898c-14.7197 -9.61035 -22.8896 -22.9199 -18.3193 -30.6602\nc4.54004 -7.7002 20.0293 -7.14062 35.4697 0.959961c5.79004 -13.25 9.75 -27.5098 11.6504 -42.4199c-9.68066 -0.19043 -18.6709 -2.37988 -26.1807 -6.04004c-17.7793 0.299805 -32.7695 1.95996 -40.4902 4.21973c-5.5498 26.3496 -23.0293 48.2305 -46.3193 59.5098\nc-0.719727 25.5508 -1.87988 49.6699 -3.46973 72.0703zM256 258.15c3.23047 0 5.86035 -8.81055 6.08984 -19.9307h0.0498047v-16.8799c0 -41.4199 49.0107 -95.04 93.4902 -95.04c52 0 122.76 1.4502 156.37 -29.1699v-2.50977\nc-9.41992 -17.1104 -20.5801 -33.1699 -33.1797 -47.9697c-12.5303 21.0898 -51.5898 40.96 -108.021 41.3496c-45.6797 -1.01953 -79.0195 -20.3301 -90.7598 -40.8701c-0.00976562 -0.00976562 0.00976562 -0.0400391 0 -0.0498047\nc-7.66992 -2.13965 -15.8496 -3.23047 -24.04 -3.20996c-8.19043 -0.0205078 -16.3701 1.07031 -24.04 3.20996c-0.00976562 0.00976562 0.00976562 0.0400391 0 0.0498047c-11.7295 20.54 -45.0801 39.8506 -90.7598 40.8701\nc-56.4307 -0.400391 -95.5 -20.2598 -108.021 -41.3496c-12.5996 14.7998 -23.7598 30.8496 -33.1797 47.9697v2.50977c33.6201 30.6201 104.37 29.1699 156.37 29.1699c44.4795 0 93.4902 53.6201 93.4902 95.04v16.8799h0.0498047\nc0.229492 11.1201 2.85938 19.9307 6.08984 19.9307zM256 161.56c-22.4199 0 -40.5996 -18.1797 -40.5996 -40.5996s18.1797 -40.6504 40.5996 -40.6504s40.5996 18.2305 40.5996 40.6504s-18.1797 40.5996 -40.5996 40.5996zM256 153.92\nc18.1904 0 32.96 -14.7695 32.96 -32.96s-14.7695 -32.96 -32.96 -32.96s-32.96 14.7695 -32.96 32.96s14.7695 32.96 32.96 32.96zM256 147.78c-14.8096 0 -26.8203 -12.0107 -26.8203 -26.8203s12.0107 -26.8203 26.8203 -26.8203s26.8203 12.0107 26.8203 26.8203\ns-12.0107 26.8203 -26.8203 26.8203zM141.2 81.1104c18.75 -0.419922 35.1895 -4.18066 48.6094 -9.66992c12.5508 -16.0303 29.1602 -30.04 49.5801 -33.0703c0.100586 -0.00976562 0.169922 -0.0302734 0.270508 -0.0498047\nc0.0498047 -0.0107422 0.109375 -0.0400391 0.160156 -0.0507812c5.23926 -1.06934 10.6396 -1.59961 16.1895 -1.59961c5.56055 0 10.9502 0.530273 16.1904 1.59961c0.0498047 0.0107422 0.109375 0.0400391 0.160156 0.0507812\nc0.0996094 0.00976562 0.179688 0.0292969 0.269531 0.0498047c20.4199 3.04004 37.04 17.04 49.5801 33.0703c13.4199 5.5 29.8496 9.25 48.6104 9.66992c10.1797 -0.0800781 21.5996 -0.360352 30.5 -1.66016c-0.430664 -4.41992 -1.51074 -18.6299 -7.11035 -29.7598\nc-9.11035 2.55957 -18.3604 3.89941 -27.6201 3.89941c-41.2803 -0.939453 -71.4795 -34.3496 -78.2598 -74.4697l-0.110352 -4.7002c-10.3994 -1.91992 -21.1797 -2.93945 -32.21 -2.93945c-11.0195 0 -21.8096 1.0293 -32.21 2.93945l-0.109375 4.7002\nc-6.78027 40.1201 -36.9805 73.5303 -78.2607 74.4697c-9.25977 0 -18.5098 -1.33984 -27.6201 -3.89941c-5.59961 11.1299 -6.67969 25.3398 -7.10938 29.7598c8.89941 1.2998 20.3096 1.58984 30.5 1.66016z\" />\n    <glyph glyph-name=\"jedi-order\" unicode=\"&#xf50e;\" \nd=\"M398.5 74.4004c0 0 26.2998 16.1992 49.9004 77.6992c0 0 -17 -183.3 -222 -185.699h-4.10059c-205.1 2.39941 -222 185.699 -222 185.699c23.2002 -61.5996 49.4004 -77.6992 49.4004 -77.6992c-95.9004 122.1 -17.2002 233.1 -17.2002 233.1\nc-45.4004 -85.7002 41.4004 -170.5 41.4004 -170.5c-105 171.6 60.5 271.5 60.5 271.5c-96.9004 -72.5996 10.0996 -190.7 10.0996 -190.7c-85.7998 -158.399 68.5996 -230.1 68.5996 -230.1s0.400391 16.8994 2.2002 85.7002l-34.5 -36.2002l24.2002 47.3994\nl-62.5996 9.10059l62.5996 9.09961l-20.2002 55.5l31.4004 -45.8994c2.2998 87.8994 7.89941 305.899 7.89941 306.899v2.40039v-1v1v-2.40039c0.100586 -1.7998 5.7002 -219.2 7.90039 -306.899l31.4004 45.8994l-20.2002 -55.5l62.5996 -9.09961l-62.5996 -9.10059\nl24.2002 -47.3994s-30.2002 31.7002 -34.5 36.2002c1.7998 -68.8008 2.19922 -85.7002 2.19922 -85.7002s154.4 71.7002 68.6006 230.1c0 0 107 118 10.0996 190.7c0 0 165.5 -100 60.5 -271.5c0 0 86.7998 84.7002 41.4004 170.5c0 0 78.7002 -111 -17.2002 -233.1z\" />\n    <glyph glyph-name=\"mandalorian\" unicode=\"&#xf50f;\" \nd=\"M232.27 -63.8896c-1 3.25977 -1.68945 15.8301 -1.38965 24.5801c0.549805 15.8896 1 24.7197 1.40039 28.7598c0.639648 6.2002 2.87012 20.7197 3.2793 21.3799c0.600586 1 0.400391 27.8701 -0.239258 33.1299c-0.310547 2.58008 -0.629883 11.9004 -0.69043 20.7305\nc-0.129883 16.4697 -0.530273 20.1191 -2.72949 24.7598c-1.10059 2.31934 -1.23047 3.83984 -1 11.4297c0.0449219 1.07324 0.0820312 2.81641 0.0820312 3.89062c0 2.43945 -0.189453 6.39062 -0.422852 8.81934c-2 13 -3.45996 27.7002 -3.25 33.9004\ns0.430664 7.14941 2.06055 9.66992c3.0498 4.70996 6.50977 14 8.62012 23.2695c2.25977 9.86035 3.87988 17.1807 4.58984 20.7402c0.921875 4.24121 2.90137 10.9834 4.41992 15.0498c2.26953 6.25 2.49023 15.3906 0.370117 15.3906\nc-0.299805 0 -1.37988 -1.2207 -2.41016 -2.70996c-1.03027 -1.49023 -4.75977 -4.80078 -8.29004 -7.36035c-8.37012 -6.08008 -11.7002 -9.38965 -12.6602 -12.5801s-1 -7.22949 -0.160156 -7.75977c0.34082 -0.209961 1.29004 -2.40039 2.11035 -4.87988\nc0.791992 -2.41602 1.43457 -6.43945 1.43457 -8.98145c0 -1.78223 -0.320312 -4.64062 -0.714844 -6.37891c-0.389648 -1.76953 -1 -5.46973 -1.45996 -8.22949c-0.459961 -2.76074 -1 -6.46094 -1.25 -8.2207c-0.149414 -1.27637 -0.84375 -3.18555 -1.5498 -4.25977\nc-1 -1 -1.13965 -0.910156 -2.0498 0.530273c-0.619141 1.24316 -1.26465 3.37109 -1.44043 4.75c-0.25 1.73926 -1.62988 7.10938 -3.08008 11.9297c-3.2793 10.9004 -3.51953 16.1504 -1 21c0.683594 1.19141 1.43164 3.25684 1.66992 4.61035\nc0 2.38965 -2.19922 5.31934 -7.40918 9.88965c-7 6.17969 -8.62988 7.91992 -10.2305 11.2998c-1.70996 3.60059 -3.05957 4.06055 -4.54004 1.54004c-1.78027 -3 -2.59961 -9.10938 -3 -22l-0.339844 -12.1895l2 -2.25c3.20996 -3.7002 12.0703 -16.4502 13.7803 -19.8301\nc3.41016 -6.74023 4.33984 -11.6904 4.41016 -23.5605c0.0693359 -11.8701 0.949219 -22.75 2 -24.71c0.359375 -0.660156 0.509766 -1.34961 0.339844 -1.51953s0.410156 -2.08984 1.29004 -4.27051c0.871094 -2.41406 1.79395 -6.44629 2.05957 -9\nc0.306641 -2.88867 1.07227 -7.53516 1.70996 -10.3701c2.23047 -9.55957 2.77051 -14.0801 2.39062 -20.1396c-0.200195 -3.26953 -0.530273 -11.0703 -0.730469 -17.3203c-1.30957 -41.7598 -1.84961 -58 -2 -61.21c-0.120117 -2 -0.389648 -11.5098 -0.599609 -21.0693\nc-0.360352 -16.3008 -1.30078 -27.3701 -2.41992 -28.6504c-0.640625 -0.729492 -8.07031 4.91016 -12.5205 9.49023c-3.75 3.87012 -4 4.79004 -2.83008 9.9502c0.700195 3 2.25977 18.29 3.33008 32.6191c0.360352 4.78027 0.80957 10.5 1 12.7109\nc0.830078 9.36914 1.66016 20.3496 2.61035 34.7793c0.55957 8.45996 1.33008 16.4404 1.71973 17.7305s0.889648 9.88965 1.12988 19.1094l0.429688 16.7705l-2.25977 4.2998c-1.71973 3.28027 -4.87012 6.94043 -13.2197 15.3398\nc-6 6.07031 -11.8398 12.2998 -12.9102 13.8506l-1.9502 2.80957l0.75 10.9004c1.08984 15.71 1.10059 48.5693 0 59.0596l-0.889648 8.7002l-3.28027 4.51953c-5.85938 8.08008 -5.7998 7.75 -6.21973 33.2705c-0.100586 6.07031 -0.379883 11.5 -0.629883 12.0596\nc-0.830078 1.87012 -3.0498 2.66016 -8.54004 3.05078c-8.86035 0.619141 -11 1.89941 -23.8506 14.5498c-6.14941 6 -12.3398 12 -13.75 13.1895c-2.80957 2.41992 -2.79004 2 -0.55957 9.62988l1.34961 4.65039l-1.68945 3c-0.630859 1.17676 -1.79102 3 -2.58984 4.07031\nc-1.33008 1.50977 -5.5 10.8896 -6 13.4893c-0.0859375 0.307617 -0.155273 0.816406 -0.155273 1.13574c0 0.868164 0.458984 2.10645 1.02539 2.76465c2.22949 2.86035 3.39941 5.67969 4.44922 10.7305c2.33008 11.1895 7.74023 26.0898 10.6006 29.2197\nc3.17969 3.46973 7.7002 1 9.41016 -5c1.33984 -4.79004 1.36914 -9.79004 0.0996094 -18.5498c-0.445312 -3.05176 -0.893555 -8.02832 -1 -11.1104c0 -4 0.19043 -4.69043 2.25 -7.38965c3.33008 -4.37012 7.72949 -7.41016 15.2002 -10.5205\nc1.41992 -0.591797 3.53418 -1.86914 4.71973 -2.84961c11.1699 -10.7207 18.6201 -16.1807 22.9502 -16.8506c5.17969 -0.799805 8 -4.54004 10 -13.3896c1.30957 -5.65039 4 -11.1396 5.45996 -11.1396c0.994141 0.203125 2.48633 0.826172 3.33008 1.38965\nc2 1.21973 2.25 1.73047 2.25 4.17969c-0.21875 4.96191 -1.11523 12.9541 -2 17.8398c-0.370117 1.66016 -0.780273 4.06055 -0.930664 5.35059c-0.149414 1.29004 -0.609375 3.84961 -1 5.68945c-2.5498 11.1602 -3.64941 15.46 -4.09961 16\nc-1.5498 2 -4.08008 10.2002 -4.92969 15.9209c-1.64062 11.1094 -4 14.2295 -12.9102 17.3896c-4.0791 1.50293 -10.0547 5.0332 -13.3398 7.87988c-1.15039 1 -4 3.21973 -6.35059 5.05957c-2.34961 1.84082 -4.40918 3.53027 -4.59961 3.76074\nc-0.701172 0.606445 -1.90625 1.50293 -2.69043 2c-6.23926 4.21973 -8.83984 7 -11.2598 12l-2.43945 5l-0.220703 13l-0.219727 13l6.91016 6.5498c3.9502 3.75 8.47949 7.34961 10.5898 8.42969c3.30957 1.69043 4.4502 1.89062 11.3701 2\nc8.53027 0.19043 10.1201 0 11.6602 -1.55957c1.54004 -1.56055 1.35938 -6.40039 -0.290039 -8.5c-0.501953 -0.564453 -1.10156 -1.60352 -1.33984 -2.32031c0 -0.580078 -2.61035 -4.91016 -5.41992 -9c-0.879883 -1.80371 -1.94141 -4.85938 -2.37012 -6.82031\nc20.4395 -13.3896 21.5498 -3.76953 14.0693 -29l11.3604 -2.51953c3.11035 8.66016 6.46973 17.2598 8.61035 26.2197c0.290039 7.62988 -12 4.19043 -15.4004 8.68066c-2.33008 5.92969 3.12988 14.1797 6.05957 19.1992c1.60059 2.33984 6.62012 4.7002 8.82031 4.15039\nc0.879883 -0.219727 4.16016 0.349609 7.37012 1.28027c2.04395 0.641602 5.42676 1.39453 7.5498 1.67969c1.69336 0.183594 4.38184 0.760742 6 1.29004c3.65039 1.11035 4.5 1.16992 6.35059 0.400391c1.56738 -0.539062 4.1748 -1.14844 5.81934 -1.36035\nc1.74902 -0.236328 4.43652 -1.0918 6 -1.91016c1.30762 -0.765625 3.54785 -1.73828 5 -2.16992c2.51074 -0.679688 3 -0.570312 7.05078 1.66992l4.34961 2.40039l10.7402 0.389648c10.4395 0.400391 10.8096 0.469727 15.2598 2.67969l4.58008 2.32031l2.45996 -1.42969\nc1.75977 -1 3.13965 -2.73047 4.84961 -6c2.36035 -4.51074 2.37988 -4.58008 1.37012 -7.37012c-0.879883 -2.44043 -0.889648 -3.2998 -0.0996094 -6.39062c0.435547 -1.68164 1.37695 -4.3291 2.09961 -5.90918c0.535156 -1.04785 1.12207 -2.83984 1.31055 -4\nc0.30957 -4.33008 0 -5.30078 -2.41016 -6.91992c-2.16992 -1.4707 -7 -7.91016 -7 -9.34082c-0.206055 -0.859375 -0.685547 -2.2041 -1.07031 -3c-5 -11.5098 -6.75977 -13.5596 -14.2598 -17c-9.2002 -4.19922 -12.2998 -5.18945 -16.21 -5.18945\nc-3.10059 0 -4 -0.25 -4.54004 -1.25977c-0.972656 -1.19629 -2.80566 -2.8584 -4.08984 -3.70996c-1.53223 -1.02344 -3.49512 -3.16504 -4.37988 -4.78027c-0.411133 -1.04004 -1.52734 -2.34375 -2.49023 -2.91016\nc-0.78125 -0.321289 -1.87891 -1.08789 -2.4502 -1.70996c-1.83496 -1.61133 -4.9707 -4.02148 -7 -5.37988c-3.33008 -2.33984 -6.87012 -5 -7.87012 -6c-0.560547 -0.604492 -1.62695 -1.36621 -2.37988 -1.7002c-0.697266 -0.314453 -1.65137 -1.05273 -2.12988 -1.65039\nc-1.31055 -1.38965 -1.49023 -2.10938 -1.13965 -4.59961c0.255859 -1.65527 0.892578 -4.29004 1.41992 -5.87988c1.31934 -3.7998 1.30957 -7.86035 0 -10.5703c-1.31055 -2.70996 -0.890625 -6.64941 1.34961 -9.58984c2 -2.62988 2.16016 -4.55957 0.709961 -8.83984\nc-0.587891 -2.27344 -1.06445 -6.02344 -1.06445 -8.37109c0 -0.148438 0.00195312 -0.390625 0.00488281 -0.539062c0 -4.87988 0.219727 -6.28027 1.45996 -8.37988c1.23926 -2.09961 1.81934 -2.48047 3.23926 -2.32031c2 0.230469 2.30078 1.0498 4.70996 12.1201\nc2.18066 10 3.70996 11.9199 13.7607 17.0801c2.93945 1.50977 7.45996 4 10 5.44043c2.54004 1.43945 6.79004 3.68945 9.37012 4.90918c4.99414 2.18652 11.8125 7.41504 15.2197 11.6709c7.10938 8.78906 10 16.2197 12.8496 33.2998\nc0.298828 2.31445 1.58008 5.77832 2.86035 7.72949c1.19434 1.86133 2.48828 5.13574 2.88965 7.31055c1 5.2998 2.85059 9.08008 5.58008 11.5098c4.7002 4.17969 6 1.08984 4.58984 -10.8701c-0.459961 -3.86035 -1.09961 -10.3301 -1.43945 -14.3799l-0.610352 -7.36035\nl4.4502 -4.08984l4.4502 -4.08984l0.109375 -8.41992c0.0605469 -4.62988 0.470703 -9.53027 0.919922 -10.8896l0.820312 -2.4707l-6.42969 -6.2793c-8.54004 -8.33008 -12.8799 -13.9307 -16.7598 -21.6104c-1.77051 -3.49023 -3.74023 -7.11035 -4.38086 -8\nc-2.17969 -3.11035 -6.45996 -13 -8.75977 -20.2598l-2.29004 -7.2207l-7 -6.48926c-3.83008 -3.57031 -8 -7.25 -9.16992 -8.16992c-3.0498 -2.32031 -4.25977 -5.15039 -4.25977 -10c-0.00683594 -0.166992 -0.0126953 -0.438477 -0.0126953 -0.605469\nc0 -1.94336 0.717773 -4.9248 1.60254 -6.65527c0.660156 -1.29688 1.59668 -3.45996 2.08984 -4.83008c0.290039 -0.875 0.993164 -2.16992 1.57031 -2.88965c1.40039 -1.58984 1.91992 -16.1201 0.830078 -23.2197c-0.679688 -4.48047 -3.62988 -12 -4.7002 -12\nc-1.79004 0 -4.05957 -9.27051 -5.07031 -20.7402c-0.179688 -2 -0.620117 -5.94043 -1 -8.7002s-1 -10 -1.34961 -16.0498c-0.770508 -12.2197 -0.19043 -18.7705 2 -23.1504c3.41016 -6.68945 0.519531 -12.6895 -11 -22.8398l-4 -3.49023l0.0703125 -5.18945\nc0.0439453 -2.4834 0.554688 -6.45703 1.13965 -8.87012c4.61035 -16 4.73047 -16.9199 4.37988 -37.1299c-0.459961 -26.4004 -0.259766 -40.2705 0.629883 -44.1504c0.410156 -1.91406 0.893555 -5.05078 1.08008 -7c0.169922 -2 0.660156 -5.33008 1.08008 -7.35938\nc0.469727 -2.26074 0.780273 -11 0.790039 -22.7402v-19.0605l-1.80957 -2.62988c-2.70996 -3.91016 -15.1104 -13.54 -15.4902 -12.29zM261.8 -18.7803c-0.179688 0.299805 -0.330078 6.87012 -0.330078 14.5898c0 14.0605 -0.889648 27.54 -2.25977 34.4502\nc-0.400391 2 -0.80957 9.7002 -0.900391 17.0605c-0.149414 11.9297 -1.39941 24.3701 -2.63965 26.3799c-0.660156 1.06934 -3 17.6602 -3 21.2998c0 4.23047 1 6 5.28027 9.12988s4.85938 3.13965 5.47949 0.719727c0.280273 -1.09961 1.4502 -5.61914 2.60059 -10\nc3.92969 -15.1191 4.13965 -16.2695 4.0498 -21.7393c-0.0996094 -5.78027 -0.129883 -6.12988 -1.74023 -17.7305c-1 -7.07031 -1.16992 -12.3896 -1 -28.4297c0.169922 -19.4004 -0.639648 -35.7305 -2 -41.2705c-0.709961 -2.7793 -2.7998 -5.47949 -3.42969 -4.42969z\nM190.8 18.7998c-0.638672 2.95215 -1.41406 7.78613 -1.72949 10.79s-1.09082 7.83789 -1.73047 10.79c-0.433594 1.76758 -0.880859 4.6748 -1 6.49023c-0.30957 3.18945 -0.910156 7.45996 -1.33008 9.47949c-1 4.79004 -3.34961 19.3506 -3.41992 21.0703\nc0 0.740234 -0.339844 4.0498 -0.700195 7.36035c-0.669922 6.20996 -0.839844 27.6699 -0.219727 28.29c1 1 6.62988 -2.76074 11.3301 -7.43066l5.28027 -5.25l-0.450195 -6.46973c-0.25 -3.55957 -0.599609 -10.2295 -0.780273 -14.8301\nc-0.179688 -4.59961 -0.490234 -9.87012 -0.669922 -11.71s-0.610352 -9.36035 -0.939453 -16.7197c-0.790039 -17.4102 -1.94043 -31.29 -2.65039 -32c-0.101562 -0.107422 -0.302734 -0.193359 -0.450195 -0.193359c-0.208008 0 -0.454102 0.149414 -0.549805 0.333008\nh0.00976562zM103.62 285.39c21.0703 -12.79 17.8398 -14.1494 28.4902 -17.6592c13 -4.29004 18.8701 -7.13086 23.1494 -16.8701c-43.6602 -36.1406 -69.0098 -57.8604 -76.71 -70.8604c-31 -52 -6 -101.59 62.75 -87.21c-14.1797 -29.2305 -78 -28.6299 -98.6797 4.90039\nc-24.6797 39.9492 -22.0898 118.3 61 187.659v0.0400391zM314.41 106.39c56.6602 -6.87988 82.3203 37.7402 46.54 89.2305c0 0 -26.8701 29.3398 -64.2803 68c3 15.4502 9.49023 32.1201 30.5703 53.8203c89.2002 -63.5107 92 -141.61 92.46 -149.36\nc4.2998 -70.6396 -78.7002 -91.1797 -105.29 -61.71v0.0195312z\" />\n    <glyph glyph-name=\"old-republic\" unicode=\"&#xf510;\" horiz-adv-x=\"496\" \nd=\"M235.76 437.77c7.5 0.310547 15 0.280273 22.5 0.0908203c3.61035 -0.140625 7.2002 -0.400391 10.79 -0.730469c4.91992 -0.269531 9.79004 -1.03027 14.6699 -1.62012c2.93066 -0.429688 5.83008 -0.979492 8.75 -1.45996\nc7.90039 -1.33008 15.6699 -3.28027 23.3906 -5.39941c12.2393 -3.4707 24.1895 -7.91992 35.7598 -13.21c26.5596 -12.2402 50.9395 -29.21 71.6299 -49.8809c20.0303 -20.0898 36.7197 -43.5498 48.8896 -69.1895c1.12988 -2.58984 2.44043 -5.10059 3.4707 -7.74023\nc2.80957 -6.42969 5.38965 -12.9697 7.58008 -19.6299c4.13965 -12.3301 7.33984 -24.9902 9.41992 -37.8301c0.569336 -3.13965 1.04004 -6.2998 1.39941 -9.46973c0.549805 -3.83008 0.94043 -7.69043 1.18066 -11.5605\nc0.829102 -8.33984 0.839844 -16.7295 0.769531 -25.0996c-0.0703125 -4.96973 -0.259766 -9.94043 -0.75 -14.8896c-0.240234 -3.38086 -0.509766 -6.76074 -0.979492 -10.1201c-0.390625 -2.7207 -0.630859 -5.45996 -1.11035 -8.16992\nc-0.900391 -5.15039 -1.7002 -10.3105 -2.87012 -15.4102c-4.09961 -18.5 -10.2998 -36.5498 -18.5098 -53.6299c-15.7705 -32.8301 -38.8301 -62.1699 -67.1201 -85.1201c-14.3926 -11.7676 -39.8887 -27.3848 -56.9102 -34.8604\nc-6.20996 -2.67969 -12.46 -5.25 -18.8701 -7.41016c-3.50977 -1.16016 -7.00977 -2.37988 -10.5703 -3.38965c-6.61914 -1.87988 -13.2891 -3.63965 -20.0391 -5c-4.66016 -0.910156 -9.34082 -1.73047 -14.0303 -2.48047c-5.25 -0.65918 -10.5 -1.43945 -15.79 -1.73926\nc-6.69043 -0.660156 -13.4102 -0.839844 -20.1201 -0.810547c-6.82031 -0.0292969 -13.6504 0.120117 -20.4502 0.790039c-3.29004 0.230469 -6.57031 0.5 -9.83008 0.950195c-2.71973 0.389648 -5.45996 0.629883 -8.16992 1.11035\nc-4.12012 0.719727 -8.25 1.37012 -12.3496 2.21973c-4.25 0.939453 -8.49023 1.88965 -12.6904 3.01953c-8.62988 2.16992 -17.0801 5.01074 -25.4102 8.13086c-10.4893 4.11914 -20.79 8.75 -30.6396 14.25c-2.13965 1.14941 -4.28027 2.28906 -6.34961 3.56934\nc-11.2207 6.58008 -21.8604 14.1006 -31.9199 22.3398c-34.6807 28.4102 -61.4102 66.4307 -76.3506 108.7c-3.08984 8.74023 -5.70996 17.6504 -7.7998 26.6797c-1.48047 6.16016 -2.52051 12.4209 -3.58008 18.6602\nc-0.400391 2.35059 -0.610352 4.73047 -0.950195 7.08984c-0.599609 3.96094 -0.75 7.96094 -1.16992 11.9404c-0.799805 9.46973 -0.709961 18.9902 -0.509766 28.4902c0.139648 3.50977 0.339844 7.00977 0.700195 10.5098\nc0.30957 3.16992 0.459961 6.37012 0.919922 9.52051c0.410156 2.80957 0.649414 5.64941 1.16016 8.43945c0.699219 3.94043 1.2998 7.90039 2.11914 11.8203c3.43066 16.5195 8.4707 32.7295 15.2607 48.1797c1.14941 2.91992 2.58984 5.71973 3.85938 8.58984\nc8.05078 16.71 17.9004 32.5605 29.4902 47.0605c20 25.3799 45.1006 46.6797 73.2705 62.4697c7.5 4.15039 15.1592 8.0498 23.0693 11.3701c15.8203 6.87988 32.4102 11.9502 49.3105 15.3799c3.50977 0.669922 7.04004 1.24023 10.5596 1.84961\nc2.62012 0.470703 5.28027 0.700195 7.91016 1.08008c3.53027 0.530273 7.09961 0.680664 10.6504 1.04004c2.45996 0.240234 4.90918 0.360352 7.35938 0.509766zM244.4 413.36c-9.23047 -0.100586 -18.4307 -0.990234 -27.5703 -2.23047\nc-7.2998 -1.08008 -14.5303 -2.59961 -21.71 -4.2998c-13.9102 -3.5 -27.4805 -8.33984 -40.46 -14.4199c-10.46 -4.99023 -20.5898 -10.7002 -30.1797 -17.2197c-4.18066 -2.9209 -8.40039 -5.80078 -12.3408 -9.03027\nc-5.08008 -3.96973 -9.97949 -8.16992 -14.6797 -12.5898c-2.50977 -2.24023 -4.80957 -4.7002 -7.21973 -7.06055c-28.2207 -28.79 -48.4404 -65.3896 -57.5 -104.689c-2.04004 -8.44043 -3.54004 -17.0205 -4.44043 -25.6504\nc-1.09961 -8.88965 -1.43945 -17.8496 -1.41016 -26.7998c0.110352 -7.13965 0.379883 -14.2803 1.2207 -21.3701c0.620117 -7.12012 1.87012 -14.1602 3.19922 -21.1797c1.07031 -4.65039 2.03027 -9.32031 3.33008 -13.9102\nc6.29004 -23.3799 16.5 -45.7002 30.0703 -65.75c8.63965 -12.9805 18.7803 -24.9297 29.9805 -35.7705c16.2793 -15.8193 35.0498 -29.04 55.3398 -39.2197c7.2793 -3.51953 14.6602 -6.87012 22.2695 -9.62988c5.04004 -1.75977 10.0605 -3.57031 15.2197 -4.98047\nc11.2607 -3.22949 22.7705 -5.59961 34.3906 -7.05957c2.91016 -0.290039 5.80957 -0.610352 8.71973 -0.900391c13.8203 -1.08008 27.7402 -1 41.54 0.430664c4.4502 0.599609 8.91992 0.989258 13.3496 1.7793c3.63086 0.670898 7.28027 1.25 10.8701 2.10059\nc4.12988 0.979492 8.28027 1.91016 12.3604 3.07031c26.5 7.33984 51.5801 19.71 73.5801 36.1992c15.7803 11.8203 29.96 25.7607 42.1201 41.2803c3.25977 4.02051 6.16992 8.30957 9.12988 12.5498c3.38965 5.06055 6.58008 10.25 9.59961 15.54\nc2.40039 4.44043 4.74023 8.91016 6.9502 13.4502c5.69043 12.0498 10.2803 24.6201 13.75 37.4902c2.58984 10.0098 4.75 20.1602 5.90039 30.4502c1.76953 13.4697 1.93945 27.0996 1.29004 40.6494c-0.290039 3.89062 -0.669922 7.77051 -1 11.6602\nc-2.23047 19.0801 -6.79004 37.9102 -13.8203 55.7998c-5.9502 15.1299 -13.5303 29.6299 -22.6104 43.1299c-12.6895 18.8008 -28.2393 35.6807 -45.9697 49.8301c-25.0498 20 -54.4697 34.5498 -85.6504 42.0801c-7.7793 1.92969 -15.6895 3.33984 -23.6299 4.4502\nc-3.90918 0.589844 -7.84961 0.820312 -11.7695 1.24023c-7.38965 0.569336 -14.8105 0.719727 -22.2197 0.580078zM139.26 364.47c13.2998 8.89062 28.0801 15.3799 43.2998 20.1807c-3.16992 -1.77051 -6.43945 -3.38086 -9.5293 -5.29004\nc-11.21 -6.68066 -21.5205 -14.9004 -30.3799 -24.4902c-6.80078 -7.42969 -12.7607 -15.7305 -17.0107 -24.8896c-3.29004 -6.86035 -5.63965 -14.1904 -6.85938 -21.7109c-0.930664 -4.84961 -1.2998 -9.80957 -1.16992 -14.75\nc0.129883 -13.6592 4.43945 -27.0791 11.29 -38.8193c5.91992 -10.2197 13.6299 -19.3301 22.3594 -27.2598c4.85059 -4.36035 10.2402 -8.09082 14.9502 -12.6006c2.25977 -2.18945 4.49023 -4.41992 6.42969 -6.91016c2.62012 -3.30957 4.89062 -6.98926 5.99023 -11.0996\nc0.900391 -3.02051 0.660156 -6.2002 0.69043 -9.31055c0.0195312 -4.09961 -0.0400391 -8.19922 0.0292969 -12.2998c0.140625 -3.54004 -0.0195312 -7.08984 0.110352 -10.6299c0.0800781 -2.37988 0.0205078 -4.75977 0.0498047 -7.13965\nc0.160156 -5.77051 0.0605469 -11.5303 0.150391 -17.2998c0.109375 -2.91016 0.0195312 -5.82031 0.129883 -8.74023c0.0302734 -1.62988 0.129883 -3.28027 -0.0302734 -4.91016c-0.910156 -0.120117 -1.81934 -0.179688 -2.72949 -0.160156\nc-10.9902 0 -21.8799 2.62988 -31.9502 6.92969c-6 2.7002 -11.8105 5.89062 -17.0898 9.83008c-5.75 4.19043 -11.0898 8.95996 -15.79 14.3105c-6.53027 7.24023 -11.9805 15.3896 -16.6201 23.9502c-1.07031 2.0293 -2.24023 4.01953 -3.17969 6.12012\nc-1.16016 2.63965 -2.62012 5.13965 -3.66992 7.81934c-4.05078 9.68066 -6.57031 19.9404 -8.08008 30.3105c-0.490234 4.43945 -1.09082 8.87988 -1.2002 13.3496c-0.700195 15.7305 0.839844 31.5498 4.66992 46.8203c2.12012 8.14941 4.76953 16.1797 8.30957 23.8301\nc6.32031 14.1992 15.3398 27.1797 26.3008 38.1895c6.2793 6.2002 13.1299 11.8398 20.5293 16.6699zM314.63 384.59c2.74023 -0.740234 5.41016 -1.74023 8.08984 -2.67969c6.36035 -2.33008 12.6807 -4.83984 18.71 -7.95996\nc13.1104 -6.44043 25.3105 -14.8105 35.8203 -24.9697c10.2002 -9.9502 18.7402 -21.6006 25.1396 -34.3408c1.28027 -2.75 2.64062 -5.45996 3.81055 -8.25977c6.30957 -15.0996 10 -31.2598 11.2295 -47.5703c0.410156 -4.54004 0.44043 -9.08984 0.450195 -13.6396\nc0.0703125 -11.6396 -1.49023 -23.25 -4.2998 -34.5303c-1.96973 -7.26953 -4.34961 -14.4893 -7.86035 -21.1797c-3.17969 -6.63965 -6.67969 -13.1602 -10.8398 -19.2402c-6.93945 -10.4697 -15.5996 -19.8701 -25.8203 -27.2197\nc-10.4795 -7.63965 -22.6396 -13.0195 -35.3994 -15.3799c-3.50977 -0.69043 -7.08008 -1.08008 -10.6602 -1.20996c-1.84961 -0.0605469 -3.71973 -0.160156 -5.55957 0.0996094c-0.280273 2.15039 0 4.31055 -0.0107422 6.45996\nc-0.0292969 3.73047 0.140625 7.4502 0.100586 11.1699c0.189453 7.02051 0.0195312 14.0508 0.209961 21.0703c0.0292969 2.37988 -0.0302734 4.75977 0.0292969 7.13965c0.170898 5.07031 -0.0390625 10.1406 0.140625 15.21\nc0.0996094 2.99023 -0.240234 6.04004 0.509766 8.95996c0.660156 2.5 1.78027 4.86035 3.08984 7.08008c4.45996 7.31055 11.0605 12.96 17.6807 18.2607c5.37988 4.17969 10.4697 8.76953 15.0195 13.8398c7.67969 8.37012 14.1699 17.8799 18.7803 28.2695\nc2.5 5.93066 4.51953 12.1006 5.5498 18.46c0.860352 4.37012 1.05957 8.83008 1.00977 13.2705c-0.0195312 7.84961 -1.39941 15.6494 -3.63965 23.1699c-1.75 5.72949 -4.27051 11.1797 -7.08984 16.4502c-3.87012 6.92969 -8.65039 13.3096 -13.96 19.1992\nc-9.94043 10.8506 -21.75 19.9404 -34.6006 27.1006c-1.84961 1.01953 -3.83984 1.82031 -5.62988 2.96973zM213.83 326.14c0.979492 1.18066 1.99023 2.33008 3.12012 3.37988c-0.610352 -0.929688 -1.27051 -1.80957 -1.9502 -2.67969\nc-3.09961 -3.87988 -5.54004 -8.30957 -7.03027 -13.0596c-0.870117 -3.27051 -1.67969 -6.60059 -1.72949 -10c-0.0703125 -2.52051 -0.0800781 -5.07031 0.319336 -7.57031c1.13086 -7.62988 4.33008 -14.8496 8.77051 -21.1201c2 -2.7002 4.25 -5.26953 6.91992 -7.33008\nc1.62012 -1.26953 3.53027 -2.08984 5.33984 -3.0498c3.11035 -1.67969 6.32031 -3.22949 9.07031 -5.47949c2.66992 -2.09082 4.5498 -5.33008 4.39941 -8.79004c-0.00976562 -73.6709 0 -147.341 -0.00976562 -221.021c0 -1.34961 -0.0800781 -2.7002 0.0400391 -4.04004\nc0.129883 -1.47949 0.820312 -2.83008 1.46973 -4.14941c0.860352 -1.66016 1.78027 -3.34082 3.18066 -4.62012c0.849609 -0.770508 1.96973 -1.40039 3.14941 -1.24023c1.5 0.200195 2.66016 1.34961 3.4502 2.57031c0.959961 1.50977 1.67969 3.15918 2.28027 4.84961\nc0.759766 2.12988 0.439453 4.41992 0.540039 6.62988c0.139648 4.03027 -0.0205078 8.06055 0.139648 12.0898c0.0302734 5.89062 0.0302734 11.7705 0.0605469 17.6602c0.139648 3.62012 0.0292969 7.24023 0.109375 10.8604\nc0.150391 4.0293 -0.0195312 8.05957 0.140625 12.0898c0.0292969 5.99023 0.0292969 11.9795 0.0693359 17.9697c0.140625 3.62012 0.0205078 7.24023 0.110352 10.8604c0.139648 3.92969 -0.0205078 7.85938 0.139648 11.7803\nc0.0302734 5.98926 0.0302734 11.9795 0.0605469 17.9697c0.160156 3.93945 -0.00976562 7.87988 0.189453 11.8193c0.290039 -1.43945 0.129883 -2.91992 0.220703 -4.37988c0.189453 -3.60938 0.419922 -7.22949 0.759766 -10.8398\nc0.320312 -3.43945 0.439453 -6.88965 0.859375 -10.3193c0.370117 -3.10059 0.510742 -6.2207 0.950195 -9.31055c0.570312 -4.08984 0.870117 -8.20996 1.54004 -12.29c1.45996 -9.04004 2.83008 -18.1104 5.08984 -26.9902c1.13086 -4.81934 2.40039 -9.60938 4 -14.2998\nc2.54004 -7.89941 5.7207 -15.6699 10.3105 -22.6201c1.72949 -2.63965 3.87012 -4.97949 6.09961 -7.20996c0.270508 -0.25 0.549805 -0.509766 0.879883 -0.709961c0.600586 -0.25 1.31055 0.0703125 1.7002 0.570312c0.709961 0.879883 1.16992 1.93945 1.7002 2.92969\nc4.0498 7.7998 8.17969 15.5605 12.3398 23.3105c0.700195 1.30957 1.44043 2.62012 2.56055 3.60938c1.75 1.57031 3.83984 2.69043 5.97949 3.62988c2.87988 1.2207 5.90039 2.19043 9.03027 2.41992c6.58008 0.620117 13.1094 -0.75 19.5596 -1.84961\nc3.69043 -0.580078 7.40039 -1.16992 11.1299 -1.41016c3.74023 -0.0996094 7.48047 -0.0498047 11.21 0.280273c8.55078 0.919922 16.9902 2.95996 24.9404 6.25c5.2998 2.24023 10.46 4.83008 15.3096 7.92969c11.46 7.20996 21.46 16.5703 30.04 27.0107\nc1.16992 1.41992 2.25 2.89941 3.45996 4.2793c-1.19922 -3.24023 -2.66992 -6.37012 -4.15918 -9.47949c-1.25 -2.90039 -2.84082 -5.61035 -4.27051 -8.41992c-5.16016 -9.62988 -11.0195 -18.9102 -17.75 -27.5205\nc-4.03027 -5.20996 -8.53027 -10.0498 -13.3301 -14.5703c-6.63965 -6.0498 -14.0703 -11.3691 -22.4297 -14.7598c-8.20996 -3.37012 -17.3105 -4.62988 -26.0898 -3.29004c-3.56055 0.580078 -7.01074 1.69043 -10.4102 2.87988\nc-2.79004 0.970703 -5.39062 2.38086 -8.03027 3.69043c-3.42969 1.70996 -6.63965 3.80957 -9.70996 6.08008c2.70996 -3.06055 5.69043 -5.86035 8.7002 -8.61035c4.26953 -3.75977 8.74023 -7.30957 13.6299 -10.2295c3.98047 -2.4502 8.29004 -4.40039 12.8398 -5.51074\nc1.45996 -0.369141 2.95996 -0.459961 4.4502 -0.599609c-1.25 -1.09961 -2.62988 -2.04004 -3.99023 -2.97949c-9.60938 -6.54004 -20.0098 -11.8604 -30.6895 -16.4307c-20.8604 -8.7002 -43.1699 -13.9697 -65.7402 -15.3398\nc-4.66016 -0.240234 -9.32031 -0.360352 -13.9805 -0.360352c-4.97949 0.110352 -9.96973 0.130859 -14.9199 0.650391c-11.2002 0.759766 -22.29 2.73047 -33.1699 5.42969c-10.3496 2.70996 -20.5498 6.12012 -30.2998 10.5508\nc-8.70996 3.85938 -17.1201 8.41992 -24.9902 13.79c-1.83008 1.30957 -3.74023 2.5293 -5.37012 4.0791c6.60059 1.19043 13.0303 3.39062 18.9902 6.48047c5.74023 2.86035 10.9902 6.66016 15.6299 11.0703c2.24023 2.18945 4.29004 4.58984 6.19043 7.08984\nc-3.43066 -2.12988 -6.93066 -4.15039 -10.6201 -5.78027c-4.41016 -2.16016 -9.07031 -3.76953 -13.8105 -5.01953c-5.72949 -1.52051 -11.7393 -1.73047 -17.6094 -1.14062c-8.12988 0.950195 -15.8604 4.27051 -22.5098 8.98047\nc-4.32031 2.93945 -8.2207 6.42969 -11.96 10.0596c-9.93066 10.1602 -18.2002 21.8105 -25.6602 33.8604c-3.94043 6.26953 -7.53027 12.75 -11.1201 19.2197c-1.0498 2.04004 -2.15039 4.0498 -3.17969 6.10059c2.84961 -2.9209 5.56934 -5.9707 8.42969 -8.88086\nc8.99023 -8.96973 18.5596 -17.4395 29.1602 -24.4795c7.5498 -4.90039 15.6699 -9.23047 24.5596 -11.0303c3.11035 -0.729492 6.32031 -0.469727 9.46973 -0.80957c2.77051 -0.280273 5.56055 -0.200195 8.34082 -0.299805\nc5.0498 -0.0605469 10.1094 -0.0400391 15.1592 0.15918c3.65039 0.160156 7.27051 0.660156 10.8906 1.09082c2.06934 0.25 4.10938 0.709961 6.13965 1.19922c3.87988 0.950195 8.11035 0.959961 11.8301 -0.609375c4.75977 -1.85059 8.44043 -5.64062 11.3799 -9.70996\nc2.16016 -3.02051 4.06055 -6.2207 5.66016 -9.58008c1.16016 -2.43066 2.45996 -4.79004 3.5498 -7.26074c1 -2.23926 2.15039 -4.41992 3.41992 -6.51953c0.669922 -1.01953 1.40039 -2.15039 2.62012 -2.5498c1.06055 0.75 1.70996 1.91016 2.28027 3.03027\nc2.09961 4.15918 3.41992 8.64941 4.88965 13.0498c2.02051 6.58984 3.78027 13.2695 5.19043 20.0195c2.20996 9.25 3.25 18.7197 4.54004 28.1299c0.55957 3.98047 0.830078 7.99023 1.30957 11.9707c0.870117 10.6396 1.90039 21.2695 2.24023 31.9395\nc0.0800781 1.86035 0.240234 3.70996 0.25 5.57031c0.00976562 4.34961 0.25 8.68945 0.219727 13.0303c-0.00976562 2.37988 -0.00976562 4.75977 0 7.12988c0.0498047 5.06934 -0.200195 10.1396 -0.219727 15.21c-0.200195 6.60938 -0.709961 13.2002 -1.29004 19.7793\nc-0.730469 5.88086 -1.5498 11.7803 -3.12012 17.5107c-2.0498 7.75 -5.58984 15.0293 -9.7998 21.8193c-3.16016 5.07031 -6.79004 9.87988 -11.0898 14.0303c-3.87988 3.86035 -8.58008 7.08008 -13.9404 8.4502c-1.5 0.410156 -3.05957 0.450195 -4.58984 0.639648\nc0.0703125 2.99023 0.700195 5.93066 1.25977 8.85059c1.58984 7.70996 3.7998 15.2998 6.76074 22.5996c1.51953 4.03027 3.40918 7.90039 5.38965 11.7197c3.4502 6.56055 7.62012 12.79 12.46 18.46zM245.1 324.44\nc0.350586 0.0595703 0.709961 0.119141 1.07031 0.189453c0.19043 -1.79004 0.0898438 -3.58008 0.0996094 -5.37012v-38.1299c-0.00976562 -1.74023 0.130859 -3.49023 -0.149414 -5.21973c-0.360352 0.0302734 -0.709961 0.0498047 -1.06055 0.0498047\nc-0.949219 3.75 -1.71973 7.5498 -2.61914 11.3096c-0.380859 1.53027 -0.580078 3.09082 -1.07031 4.59082c-1.7002 0.239258 -3.42969 0.169922 -5.15039 0.199219c-5.05957 0.0107422 -10.1299 0 -15.1895 0.0107422\nc-1.66016 0.00976562 -3.32031 -0.0898438 -4.98047 0.0292969c-0.0302734 0.390625 -0.259766 0.910156 0.160156 1.18066c1.28027 0.649414 2.71973 0.879883 4.05957 1.34961c3.43066 1.13965 6.88086 2.16016 10.3105 3.31055\nc1.38965 0.479492 2.90039 0.719727 4.16016 1.54004c0.0400391 0.55957 0.0195312 1.12988 -0.0498047 1.67969c-1.23047 0.549805 -2.53027 0.870117 -3.81055 1.28027c-3.12988 1.0293 -6.29004 1.95996 -9.41016 3.01953c-1.79004 0.620117 -3.66992 1 -5.41016 1.79004\nc-0.0292969 0.370117 -0.0693359 0.730469 -0.109375 1.08984c5.08984 0.19043 10.2002 -0.0595703 15.2998 0.120117c3.36035 0.129883 6.73047 -0.0800781 10.0898 0.0703125c0.120117 0.389648 0.259766 0.769531 0.370117 1.16016\nc1.08008 4.93945 2.33008 9.8291 3.38965 14.75zM251.07 324.64c0.359375 -0.0498047 0.719727 -0.120117 1.08008 -0.199219c0.979492 -3.85059 1.72949 -7.76074 2.70996 -11.6104c0.359375 -1.41992 0.55957 -2.87988 1.0293 -4.27051\nc2.53027 -0.179688 5.07031 0.0107422 7.61035 -0.0498047c5.16016 -0.120117 10.3301 -0.120117 15.4902 -0.0693359c0.759766 0.00976562 1.51953 -0.0302734 2.2793 -0.0800781c-0.0390625 -0.360352 -0.0693359 -0.720703 -0.0996094 -1.08008\nc-1.82031 -0.830078 -3.78027 -1.25 -5.66992 -1.89062c-3.73047 -1.22949 -7.48047 -2.38965 -11.2197 -3.56934c-0.570312 -0.169922 -1.12012 -0.419922 -1.66992 -0.640625c-0.150391 -0.549805 -0.180664 -1.12012 -0.120117 -1.68945\nc0.870117 -0.480469 1.81934 -0.810547 2.76953 -1.08984c4.87988 -1.52051 9.73047 -3.14062 14.6299 -4.60059c0.379883 -0.129883 0.780273 -0.269531 1.12988 -0.490234c0.400391 -0.269531 0.230469 -0.790039 0.150391 -1.17969\nc-1.66016 -0.129883 -3.30957 -0.0302734 -4.96973 -0.0400391c-5.16992 -0.00976562 -10.3301 0.00976562 -15.5 -0.00976562c-1.61035 -0.0302734 -3.21973 0.0195312 -4.82031 -0.209961c-0.519531 -1.66992 -0.719727 -3.41992 -1.16992 -5.11035\nc-0.94043 -3.56934 -1.51953 -7.24023 -2.54004 -10.7793c-0.360352 -0.0107422 -0.709961 -0.0205078 -1.05957 -0.0605469c-0.290039 1.73047 -0.150391 3.48047 -0.150391 5.21973v38.1299c0.0205078 1.78027 -0.0800781 3.58008 0.110352 5.37012zM65.0498 279.67\nc1.12012 2.15039 2.08008 4.40039 3.37012 6.45996c-1.82031 -7.55957 -2.91016 -15.2695 -3.62012 -23c-0.799805 -7.70996 -0.849609 -15.4902 -0.540039 -23.2295c1.0498 -19.9404 5.54004 -39.8301 14.2305 -57.8809c2.99023 -5.98926 6.34961 -11.8291 10.5 -17.1094\nc6.12012 -7.46973 12.5293 -14.7598 19.8398 -21.0898c4.7998 -4.10059 9.99023 -7.78027 15.54 -10.8008c3.26953 -1.64941 6.50977 -3.38965 9.93945 -4.67969c5.01074 -2.03027 10.1904 -3.60938 15.4209 -4.93945c3.8291 -0.959961 7.7793 -1.41016 11.5195 -2.70996\nc5 -1.57031 9.46973 -4.61035 13.0303 -8.43066c4.92969 -5.22949 8.08984 -11.8701 10.2002 -18.6699c0.989258 -2.89941 1.58984 -5.91016 2.16992 -8.91992c0.149414 -0.75 0.219727 -1.51953 0.15918 -2.29004c-6.5 -2.78027 -13.2598 -5.05957 -20.2598 -6.17969\nc-4.10938 -0.780273 -8.29004 -0.990234 -12.46 -1.08008c-10.25 -0.240234 -20.4697 1.75977 -30.1201 5.12012c-3.73926 1.41992 -7.48926 2.84961 -11.0293 4.71973c-8.06055 3.83984 -15.6406 8.7002 -22.46 14.46c-2.9209 2.5498 -5.83008 5.12988 -8.40039 8.03027\nc-9.16016 9.83008 -16.2998 21.4102 -21.79 33.6494c-2.38965 5.55078 -4.61035 11.1807 -6.37012 16.96c-1.16992 3.94043 -2.36035 7.89062 -3.25977 11.9102c-0.75 2.94043 -1.21973 5.9502 -1.87012 8.91992c-0.459961 2.14062 -0.69043 4.32031 -1.03027 6.48047\nc-0.849609 5.42969 -1.2793 10.9297 -1.33008 16.4297c0.110352 6.18066 0.25 12.3701 1.07031 18.5c0.400391 2.86035 0.669922 5.74023 1.15039 8.60059c0.979492 5.69922 2.13965 11.3691 3.70996 16.9297c3.08984 11.6504 7.47949 22.9502 12.6895 33.8398z\nM428.78 286.11c1.09961 -1.66016 1.91016 -3.48047 2.7793 -5.26074c2.10059 -4.44922 4.24023 -8.89941 6.02051 -13.4893c7.61035 -18.7607 12.2998 -38.79 13.04 -59.0508c0.0195312 -1.75977 0.0703125 -3.51953 0.110352 -5.29004\nc0.129883 -9.56934 -1.27051 -19.0898 -3.18066 -28.4492c-0.729492 -3.58984 -1.54004 -7.16992 -2.58008 -10.6904c-4.04004 -14.7197 -10 -29 -18.4102 -41.7803c-8.20996 -12.5693 -19.0098 -23.5498 -31.8398 -31.4092\nc-5.72949 -3.59082 -11.79 -6.64062 -18.0498 -9.19043c-5.78027 -2.19043 -11.71 -4.03027 -17.7998 -5.11035c-6.40039 -1.0498 -12.9102 -1.51953 -19.4004 -1.22949c-7.91992 0.479492 -15.7793 2.07031 -23.21 4.84961\nc-1.93945 0.799805 -3.93945 1.45996 -5.83984 2.33008c-0.209961 1.50977 0.25 2.99023 0.530273 4.45996c1.16016 5.74023 3.03027 11.3604 5.7002 16.5801c2.36914 4.50977 5.51953 8.65039 9.45996 11.9004c2.42969 2.0498 5.23926 3.60938 8.15918 4.83008\nc3.58008 1.5 7.4707 1.96973 11.2402 2.83008c7.23047 1.70996 14.3701 3.92969 21.1504 7c10.3496 4.64941 19.71 11.3799 27.6494 19.46c1.59082 1.60938 3.23047 3.17969 4.74023 4.86914c3.37012 3.76074 6.70996 7.57031 9.85059 11.5303\nc7.47949 10.0703 12.8193 21.5898 16.71 33.4805c1.58008 5.2998 3.20996 10.5996 4.20996 16.0498c0.629883 2.87012 1.04004 5.78027 1.51953 8.67969c0.870117 6.08984 1.58984 12.2207 1.67969 18.3799c0.120117 6.65039 0.140625 13.3203 -0.529297 19.9404\nc-0.730469 7.99023 -1.87012 15.96 -3.70996 23.7803z\" />\n    <glyph glyph-name=\"phoenix-squadron\" unicode=\"&#xf511;\" horiz-adv-x=\"512\" \nd=\"M96 384.62c46.4902 36.1299 105.55 56.0703 164.51 54.5703c29.5801 0.379883 59.1104 -5.37012 86.9102 -15.3301c-24.1299 4.62988 -49 6.33984 -73.3799 2.44922c-42.8701 -5.30957 -83.04 -27.1494 -111.83 -59.1797c5.66992 1 10.7803 3.66992 16 5.86035\nc18.1396 7.87012 37.4902 13.2598 57.2305 14.8301c19.7393 2.12988 39.6396 0.429688 59.2793 -1.91992c-14.4199 -2.79004 -29.1201 -4.57031 -43 -9.59082c-34.4297 -11.0693 -65.2695 -33.1592 -86.2998 -62.6299c-13.7998 -19.71 -23.6299 -42.8594 -24.6699 -67.1299\nc-0.349609 -16.4902 5.21973 -34.8096 19.8301 -44c7.01465 -4.23926 19.3594 -7.67969 27.5547 -7.67969c2.77539 0 7.23926 0.420898 9.96484 0.939453c15.4502 2.45996 30.0703 8.64062 43.6006 16.3301c11.5195 6.82031 22.6699 14.5508 32 24.25\nc3.79004 3.2207 2.53027 8.4502 2.62012 12.79c-2.12012 0.339844 -4.37988 1.11035 -6.30078 -0.299805c-9.47656 -5.19531 -25.5244 -12.0811 -35.8193 -15.3701c-20 -6.16992 -42.1602 -8.45996 -62.1006 -0.779297c12.79 -1.73047 26.0605 -0.310547 37.7402 5.43945\nc20.2305 9.71973 36.8105 25.2002 54.4404 38.7705c23.0107 17.7168 62.8379 42.4951 88.8994 55.3096c25.71 12 52.9404 22.7803 81.5703 24.1201c-15.6299 -13.7197 -32.1504 -26.5205 -46.7803 -41.3799c-14.5098 -14 -27.46 -29.5 -40.1094 -45.1807\nc-3.52051 -4.59961 -8.9502 -6.93945 -13.5801 -10.1592c-18.8516 -12.6768 -42.0986 -39.6016 -51.8906 -60.1006c-9.33008 -19.6797 -14.5 -41.8496 -11.7695 -63.6494c1.93945 -13.6904 8.70996 -27.5908 20.8994 -34.9102c12.9004 -8 29.0508 -8.07031 43.4805 -5.10059\nc32.7998 7.4502 61.4297 28.8906 81 55.8408c20.4404 27.5195 30.5195 62.1992 29.1602 96.3496c-0.520508 7.5 -1.57031 15 -1.66016 22.4902c8 -19.4805 14.8203 -39.71 16.6504 -60.8301c2 -14.2803 0.75 -28.7598 -1.62012 -42.9004\nc-1.91016 -11 -5.66992 -21.5098 -7.78027 -32.4297c17.209 19.293 34.833 55.6123 39.3398 81.0703c1.24121 7.8584 2.24902 20.6953 2.24902 28.6514c0 21.957 -7.37305 55.999 -16.459 75.9883c20.7803 -32 32.3398 -69.5801 35.71 -107.48\nc0.490234 -12.7295 0.490234 -25.5098 0 -38.2295c-2.37305 -28.7334 -15.6289 -72.5254 -29.5898 -97.75c-26.1201 -47.3398 -68 -85.6299 -117.19 -108c-78.29 -36.2305 -174.68 -31.3203 -248 14.6797c-32.9014 20.1289 -73.8711 64.3281 -91.4492 98.6602\nc-12.291 24.2021 -23.6523 65.8301 -25.3604 92.9199v31.3398c3.92969 69.7402 40.8701 135.92 96 178.36zM318 304.29c4.54688 0.770508 11.7148 2.77734 16 4.47949c5 1.77051 9.24023 5.94043 10.3203 11.2207c-8.95996 -4.99023 -17.9805 -9.91992 -26.3203 -15.7002z\n\" />\n    <glyph glyph-name=\"sith\" unicode=\"&#xf512;\" \nd=\"M0 416l118.75 -69.71l-11.5195 58.9004l91.0596 -69.8701c8.5 1.50977 17.0996 2.29004 25.71 2.29004s17.21 -0.770508 25.71 -2.29004l91.0596 69.8701l-11.5195 -58.9004l118.75 69.71l-69.71 -118.75l58.8604 11.5195l-69.8408 -91.0293\nc3.04004 -17.0098 3.03027 -34.4404 0 -51.4502l69.8408 -91.0303l-58.8604 11.5205l69.71 -118.78l-118.75 69.71l11.5195 -58.8604l-91.0293 69.8408c-17.0098 -3.04004 -34.46 -3.04004 -51.4805 0l-91.0293 -69.8408l11.5195 58.8604l-118.75 -69.71l69.71 118.78\nl-58.8604 -11.5205l69.8408 91.0303c-1.25488 7.04492 -2.27246 18.5693 -2.27246 25.7246c0 7.15625 1.01758 18.6807 2.27246 25.7256l-69.8408 91.0293l58.8604 -11.5195zM224 316.22c-31.7998 0 -63.6104 -12.0898 -87.8496 -36.3398\nc-48.4902 -48.4902 -48.5 -127.2 0 -175.7c48.5 -48.4893 127.21 -48.5195 175.699 -0.0292969c48.4902 48.4893 48.5 127.199 0 175.699c-24.25 24.25 -56.0498 36.3701 -87.8496 36.3701zM224 279.56c22.4199 0 44.8301 -8.51953 61.9199 -25.6094\nc34.1904 -34.1904 34.1797 -89.6904 0 -123.87c-34.1895 -34.1797 -89.6504 -34.1904 -123.84 0c-34.1904 34.1895 -34.1797 89.6895 0 123.87c17.0898 17.0898 39.5 25.6094 61.9199 25.6094z\" />\n    <glyph glyph-name=\"trade-federation\" unicode=\"&#xf513;\" horiz-adv-x=\"496\" \nd=\"M248 439.2c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -43.5996c129.7 0 234.8 105.1 234.8 234.8s-105.1 234.8 -234.8 234.8s-234.8 -105.1 -234.8 -234.8s105.1 -234.8 234.8 -234.8zM403.1 284.9v-0.100586h-145.699\nv-34.7998h83.2998v-47h-83.2998v-195.8h-48.8008v196.8h-117.699l-36.7002 46h155.1v81.7002h193.8v-46.7998zM329.8 239.8h-82.8994v56.2002h145v24.4004h-171.801v-80.6006h-143.899l20.0996 -23.8994h123.8v-197.4h26.8008v197.4h82.8994v23.8994zM168.5 308.8l22 9.2998\nl-15.7998 -18.0996l15.7002 -18.0996l-22.2002 9.5l-12.2998 -20.5l2.09961 24l-23.2998 5.39941l23.5 5.40039l-2.10059 23.7998zM138.9 328.5l9.5 -10.2002l-13.8008 5.2998l-6.7998 -12.1992l0.799805 14.6992l-13.6992 2.7002l14.2998 3.7998l-1.7002 13.9004\nl8 -12.4004l12.7002 5.90039zM304.3 183.3l-9.2998 -10.7998l9.40039 -10.7002l-13.1006 5.5l-7.2998 -12.2002l1.2002 14.2002l-13.9004 3.2002l13.9004 3.2002l-1.2998 14.2002l7.2998 -12.2002zM411.2 260.5l-15 -17.5996l15.0996 -17l-21.2002 8.7998l-11.5 -19.6006\nl1.80078 22.9004l-22.2002 4.90039l22.2998 5.39941l-2.2002 22.7002l12 -19.5996zM248 418.1c125.3 0 226.9 -101.6 226.9 -226.899s-101.601 -226.9 -226.9 -226.9s-226.9 101.601 -226.9 226.9s101.601 226.899 226.9 226.899zM342.6 252h-83.1992v30.9004h145.699\nv50.6992h-197.8v-81.5996h-157.399l40 -49.9004h116.699v-196.8h52.7002v195.7h83.2998v51zM248 404.8c-94.5996 0 -174.9 -61.5996 -202.9 -146.8h157.4v81.5996h199.1c-38.7998 40.2002 -93.2998 65.2002 -153.6 65.2002zM248 -22.2998c117.9 0 213.5 95.5996 213.4 213.5\nc0 51.8994 -18.5 99.5 -49.3008 136.5v-50.7998h-145.6v-19.2002h83.2002v-62.7002h-83.2998v-195.8h-64.6006v196.8h-114.7l-43.7998 56.2998c-5.7998 -19.2998 -8.89941 -39.8994 -8.89941 -61.0996c0 -117.9 95.6992 -213.5 213.6 -213.5zM178.8 173l22.7002 9.2998\nl-16.9004 -17.0996l15.8008 -18.7998l-21.5 10.7998l-13 -20.9004l3.69922 23.7998l-23.7998 5.90039l23.7002 3.90039l-1.7002 24.5z\" />\n    <glyph glyph-name=\"wolf-pack-battalion\" unicode=\"&#xf514;\" horiz-adv-x=\"512\" \nd=\"M267.73 -23.5303l-11.4404 -21.1396l-11.4404 21.1104l-10.5596 -15.8408l-5.28027 12.3203l-5.2793 -7v-29.8301c-21.0605 7.91992 -21.1104 66.8604 -25.5107 97.21c-4.62012 31.8799 0.879883 92.8105 -81.3701 149.11c8.88086 23.5996 12 49.4297 2.64062 80.0498\nc-27.8701 -3.33008 -53.9404 -10.5801 -63.3398 -54.0996l30.3496 -8.36035c-11.2002 -23.04 -17.0195 -46.7598 -13.2002 -72.1396l27.2705 7l6.16016 -33.4307l18.4697 7l8.7998 -33.4297l19.3496 7l-26.4297 -21.0596l-8.7998 28.1494l-24.6299 -5.28027l-7 35.6309\nl-26.3906 -14.5205c-0.25 20.0205 -6.95996 58.0605 8.80078 84.4502l-26.3906 -5.28027c-3.99023 22.0703 2.37988 39.21 7.91992 56.7402l-22.4297 -9.67969c0.44043 25.0693 29.9404 56.79 61.5898 58.5098c20.2197 1.08984 56.7305 25.1602 54.1006 51.8994\nc-1.95996 19.8701 -17.4502 42.6201 -43.1104 49.7002c43.9795 -36.5098 9.71973 -67.2998 -5.28027 -73.46c-4.39941 11.4404 -17.54 69.0801 0 130.2c40.4697 -22.8701 89.7002 -65.0996 93.21 -147.86l58.0605 -38.71l3.51953 -93.25l-107.33 59.8203l-7 -7\nl17.5801 -3.50977l44 -38.71l15.8398 5.2793l28.1504 -49.2598l3.51953 -119.64l-21.1094 -15.8398l32.5498 -15.8398l32.5498 15.8398l-21.1094 15.8398l3.51953 119.64l28.0996 49.25l15.8408 -5.28027l44 38.7109l17.5898 3.51953l-7 7l-107.3 -59.7695l3.51953 93.25\nl58 38.71c3.5498 82.6895 52.8096 124.92 93.2002 147.79c17.54 -61.1201 4.39941 -118.761 0 -130.2c-14.96 6.16016 -49.2803 36.9502 -5.28027 73.46c-25.6602 -7.08008 -41.1104 -29.8301 -43.1104 -49.7002c-2.63965 -26.7305 33.8809 -50.8096 54.1006 -51.9004\nc31.6396 -1.70996 61.1396 -33.4297 61.5801 -58.5l-22.4307 9.68066c5.54004 -17.5303 11.9209 -34.6699 7.9209 -56.7402l-26.3906 5.28027c15.7998 -26.3906 9.0498 -64.4502 8.7998 -84.4502l-26.3896 14.5195l-7 -35.6299l-24.5898 5.24023l-8.7998 -28.1504\nl-26.3906 21.1104l19.3506 -7l8.7998 33.3896l18.4697 -7l6.16016 33.4307l27.2803 -7.05078c3.7998 25.3809 -2.0498 49.1406 -13.2002 72.1406l30.3496 8.35938c-9.42969 43.5205 -35.4297 50.7305 -63.3398 54.1006\nc-9.35938 -30.6201 -6.24023 -56.4404 2.64062 -80.0498c-82.25 -56.3008 -76.75 -117.221 -81.3701 -149.11c-4.40039 -30.3496 -4.4502 -89.29 -25.5107 -97.21v29.9502l-5.2793 7l-5.28027 -12.3203zM346.9 71.4697l-15.8408 10.5303\nc7.4707 4.36035 13.7607 8.41992 19.3506 12.3203c-0.600586 -7.2207 -0.270508 -13.8398 -3.50977 -22.8398v-0.0107422zM375.05 120.73c-0.399414 -10.9404 -0.899414 -21.6602 -1.75977 -31.6709c-7.84961 1.86035 -15.5703 3.80078 -21.1104 7\nc8.24023 7.94043 15.5508 16.3203 22.8701 24.6807v-0.00976562zM399.68 115.45l-23.75 6.16016c5.62695 7.16797 13.9014 19.3848 18.4707 27.2695c3.22949 -9.21973 5.2793 -20 5.2793 -33.4297zM403.2 196.39c19.4395 -12.8096 27.7998 -33.6592 29.9102 -56.2998\nc-12.3203 4.53027 -24.6299 9.31055 -36.9502 10.5605c5.05957 12 6.64941 28.1396 7 45.7393h0.0400391zM401.44 242.13c18.5596 -2.62988 35.1494 -9.18945 45.7598 -28.1494c-14.2197 -4.36035 -24.7803 -5.9707 -44 -14.0801\nc0.0800781 13.4092 -0.950195 27.9297 -1.75977 42.2295zM165.68 71.4805c-3.23926 9 -2.91016 15.5791 -3.50977 22.8398c5.58984 -3.90039 11.8799 -7.95996 19.3496 -12.3203zM137.53 120.74c7.31934 -8.36035 14.6299 -16.7402 22.8701 -24.6699\nc-5.54004 -3.2002 -13.2607 -5.14062 -21.1104 -7c-0.860352 10.0098 -1.36035 20.7295 -1.75977 31.6699zM112.89 115.46c0 13.4297 2 24.21 5.28027 33.4297c4.56934 -7.88477 12.8438 -20.1016 18.4697 -27.2695zM109.37 196.4h0.0898438\nc0.349609 -17.6006 2 -33.7402 7 -45.7402c-12.3701 -1.25 -24.6797 -6.03027 -37 -10.5605c2.11035 22.6406 10.4697 43.4902 29.9102 56.3008zM111.13 242.14c-0.80957 -14.2998 -1.83984 -28.8193 -1.75977 -42.2295c-19.2197 8.10938 -29.7803 9.71973 -44 14.0801\nc10.6299 18.9502 27.2295 25.5195 45.7598 28.1494z\" />\n    <glyph glyph-name=\"hornbill\" unicode=\"&#xf592;\" horiz-adv-x=\"512\" \nd=\"M76.3799 77.7002c0.182617 -1.37207 0.331055 -3.6084 0.331055 -4.99219c0 -20.8662 -16.9346 -37.8008 -37.7998 -37.8008s-37.7998 16.9346 -37.7998 37.8008c0 20.8652 16.9346 37.7998 37.7998 37.7998c1.49805 0 3.91602 -0.173828 5.39844 -0.387695\nc-78.2793 111.35 52 190.53 52 190.53c-5.85938 -43 -8.23926 -91.1602 -8.23926 -91.1602c-67.3105 -41.4902 0.929688 -64.0605 39.8096 -72.8701c18.6445 -50.7129 77.6279 -91.9023 131.66 -91.9404c1.91992 0 3.76953 0.209961 5.66992 0.280273l0.110352 -18.8604\nc-99.2207 -1.38965 -158.7 29.1406 -188.94 51.6006zM184.38 405.4c109.75 73.9395 187.601 -54.0605 187.601 -54.0605c-43.04 5.86035 -91.1807 8.24023 -91.1807 8.24023c-43.0996 70.0098 -65.7998 -6.58008 -73.7998 -44.29\nc-48.4805 -19.5557 -87.8545 -77.8545 -87.8896 -130.13c0 -0.910156 0.139648 -1.78027 0.139648 -2.67969l-21.8398 -0.150391c-1.41016 100.43 29.8701 160.09 52.4199 190c-0.842773 -0.0683594 -2.21191 -0.123047 -3.05664 -0.123047\nc-20.9482 0 -37.9502 17.001 -37.9502 37.9492c0 20.9492 17.002 37.9502 37.9502 37.9502c13.1934 0 28.5273 -9.65723 34.2266 -21.5566c2.04199 -4.25488 3.7002 -11.5381 3.7002 -16.2578c0 -1.35547 -0.143555 -3.54785 -0.320312 -4.8916zM488.57 271.23\nc-4.21777 -2.00879 -11.3906 -3.63867 -16.0615 -3.63867c-0.886719 0 -2.32422 0.0625 -3.20898 0.138672c84.4502 -113.45 -49 -194.61 -49 -194.61c5.87012 43.0303 8.20996 91.1602 8.20996 91.1602c66.6006 40.96 0.640625 63.54 -38.46 72.54\nc-19.3633 48.9775 -77.8232 88.7422 -130.49 88.7598c-2.75 0 -5.43945 -0.259766 -8.13965 -0.410156l-0.139648 22.5c93.6094 1.33008 151.72 -25.7998 183.45 -47.7402c-0.226562 1.52539 -0.40918 4.01465 -0.40918 5.55566c0 20.9434 16.9971 37.9404 37.9395 37.9404\nc20.9434 0 37.9404 -16.9971 37.9404 -37.9404c0 -13.2236 -9.69043 -28.5703 -21.6309 -34.2549zM374.06 11.7598v-0.0595703c0.0917969 0.000976562 0.239258 0.000976562 0.330078 0.000976562c20.9375 0 37.9297 -16.9922 37.9297 -37.9297\ns-16.9922 -37.9297 -37.9297 -37.9297c-13.1963 0 -28.5273 9.66211 -34.2197 21.5684c-1.76367 3.66602 -3.39453 9.93848 -3.63965 14c-111.98 -80.3398 -191.9 51 -191.9 51c43.0703 -5.87988 91.1904 -8.21973 91.1904 -8.21973\nc41.3301 -67.1709 63.9199 0.540039 72.7695 39.4893c50.418 18.7646 91.3604 77.6543 91.3906 131.45c0 2.08008 -0.220703 4.08984 -0.300781 6.15039l19.5205 0.139648c1.28027 -89.9697 -23.71 -147.2 -45.1406 -179.66z\" />\n    <glyph glyph-name=\"mailchimp\" unicode=\"&#xf59e;\" \nd=\"M330.61 204.48c-2.50977 3.17969 -4.70996 8.31934 -5.9707 14.3193c-2.22949 10.6807 -1.98926 18.4102 4.24023 19.4199c6.23047 1.01074 9.25 -5.45996 11.4805 -16.1299c1.5 -7.17969 1.20996 -13.7803 -0.450195 -17.6094\nc-1.27832 0.165039 -3.36133 0.299805 -4.65039 0.299805c-1.28809 0 -3.37207 -0.134766 -4.64941 -0.299805zM277.05 196c-4.45996 1.95996 -10.2598 4.13965 -17.2598 3.7002c-12.5996 -0.770508 -21.75 -7.21973 -22.5996 -3.48047\nc-0.400391 1.83984 2.40918 4.87988 5.40918 7.06055c4.5791 3.35254 12.9014 6.07422 18.5762 6.07422c3.45312 0 8.84473 -1.07324 12.0342 -2.39453c8.63965 -3.7002 14.0098 -11.1504 12.1201 -13.0898c-1.08008 -1.12988 -3.81055 0.129883 -8.28027 2.12988z\nM268.05 190.87c9.68066 1.14941 16.8604 -4.62988 15.4004 -6.85059c-0.629883 -1.00977 -2.02051 -0.829102 -4.94043 -0.489258c-1.55078 0.239258 -4.08301 0.433594 -5.65234 0.433594c-3.72656 0 -9.58105 -1.06738 -13.0674 -2.38379\nc-4.04004 -1.62012 -4.30957 -1.15039 -5.20996 -0.810547c-1.53027 3.57031 4.40039 8.68066 13.4697 10.1006zM322.22 173.77c-3.40039 -6.91016 -17.7002 0.0703125 -14.2998 7c3.40039 6.93066 17.6797 -0.129883 14.2998 -7zM337.88 194.24\nc7.69922 -0.149414 7.42969 -16.0605 -0.259766 -15.9307c-7.69043 0.130859 -7.40039 16.0605 0.259766 15.9307zM119.09 115.34c4.0293 0.910156 3.40039 -1.25 3.37012 -0.359375c0.256836 -0.317383 0.46582 -0.904297 0.46582 -1.3125\nc0 -0.299805 -0.119141 -0.755859 -0.265625 -1.01758c-3.16016 -7.37012 -20.1904 -7.68066 -21.5801 9c-0.910156 10.8594 9.30957 21.0293 -2.28027 28.6191c-1.77734 1.17773 -4.95117 2.13281 -7.08301 2.13281c-3.84961 0 -8.67285 -2.62207 -10.7666 -5.85254\nc-3.2998 -5.16016 -3.11035 -12.2002 -7.37988 -11.6299c-3.7207 0.540039 -3.70996 14.4805 5 24.0801c7.22949 8 25.9492 11.9297 35.0498 -5.54004c8.11035 -15.3896 -8.2002 -27.7695 -3 -35.7695c2.46973 -3.80078 7.14941 -2.66016 8.46973 -2.35059zM418.81 132.41\nc6.44043 0 16.5605 -7.5 16.5605 -25.2705c0 -17.7695 -7.37012 -37.9092 -9.11035 -42.3799c-54.3896 -130.279 -264.56 -130.06 -322.29 3c-31.5293 -0.0400391 -64.1699 26.9805 -67.5293 60.3799c-0.256836 2.25195 -0.463867 5.91992 -0.463867 8.18652\nc0 7.21289 2.04395 18.5537 4.56348 25.3135l-14.7598 12.5107c-67.5498 57.04 143.72 291.85 211.27 232.93c0.339844 -0.299805 22.9902 -22.5205 23.0498 -22.5703l12.5508 5.33008c59.2695 24.5303 107.359 12.6904 107.42 -26.4697\nc0.0292969 -20.3604 -12.9404 -44.1006 -33.7305 -65.6504c26.1699 -24.2998 20.0205 -71.6094 21.5205 -83c7.19922 -2 30.6992 -7.62012 41.0996 -18.54c18.3604 -19.25 5.52051 -39.5801 3.07031 -43.25c4.20996 -11.2998 3.42969 -8.79004 6.7793 -20.5195z\nM102.81 84.25c29.4502 -0.680664 38.6309 28.2002 34.0908 57.8398c-9.74023 62.9404 -90.1699 48.9805 -84 -12.3301c2.44922 -24.3594 27.0898 -44.8994 49.9092 -45.5098zM84.2998 198.45c19.3105 51.8096 51.54 99.5498 94.2002 132.399\nc31.6504 26.4102 65.7998 45.3506 65.7998 45.3506s-18.3896 21.3193 -23.9395 22.8896c-34.1699 9.23047 -107.94 -41.6494 -155.051 -108.88c-19.0596 -27.21 -46.3096 -75.3604 -33.2998 -100.21c1.58984 -3 10.71 -10.9297 15.5898 -15\nc8.18066 11.9102 21.54 20.5 36.7002 23.4502zM323.18 97.2998c2.58984 0.259766 0.560547 -2.53027 0.560547 -2.53027s-27.4004 -12.75 -71 0.740234c1.20996 -10.2295 11.1699 -14.8193 15.9395 -16.6699c31.4004 -12.21 86.6904 -2.58008 128.46 26\nc0.850586 0.589844 1.41992 0 0.730469 -1c-28.9697 -41.3496 -128.73 -54.7598 -151.37 -21.3496c-12.0801 17.8301 -0.599609 43.8594 19.5498 41.1494c6.7998 -0.769531 53.7705 -8 100.48 13.6807c27.4893 12.7598 37.8701 26.79 36.3096 38.1602\nc-0.447266 3.00293 -2.57031 7.16504 -4.74023 9.28906c-5 4.83008 -12.79 8.60059 -26 12.3105c-4.35938 1.22949 -7.31934 2.00977 -10.5098 3.05957c-5.67969 1.83008 -8.47949 3.33008 -9.10938 14c-0.280273 4.62988 -1.09082 20.9102 -1.38086 27.6299\nc-0.519531 11.7607 -1.91992 27.8506 -11.9199 34.4902c-2.37305 1.51953 -6.58691 2.75195 -9.40527 2.75195c-1.1748 0 -3.05371 -0.229492 -4.19434 -0.511719c-5.69043 -0.969727 -9.06055 -4.00977 -13.2598 -7.50977\nc-12.4404 -10.3701 -22.9502 -12.0605 -34.6406 -11.5605c-6.98926 0.290039 -14.3994 1.37988 -22.8799 1.87988l-5 0.290039c-19.5801 1 -40.5693 -15.9092 -44.0693 -39.9092c-4.86035 -33.4307 19.3291 -50.7002 26.3291 -60.8301\nc0.912109 -1.0918 1.77246 -3.12598 1.9209 -4.54004c0 -1.94043 -1.25 -3.48047 -2.48047 -4.79004c-19.9805 -20.54 -26.3701 -53.1699 -18.8398 -80.3701c0.768555 -2.76562 2.35938 -7.12891 3.5498 -9.74023c17.7002 -41.2598 72.4902 -60.4795 126 -43\nc5.81152 1.89844 14.9238 5.74219 20.3398 8.58008c9.78906 4.8418 23.7441 15.2852 31.1504 23.3096c14.2002 14.8408 22.6396 30.9707 25.9297 50.8408c2.81055 18.6191 -7.78027 18.7598 -11.4395 18.0996c-1.13477 6.94531 -4.32422 17.8223 -7.12012 24.2803\nc-15.6299 -12.3506 -35.71 -20.9707 -51 -25.3506c-69.4004 -19.9102 -90.1904 6.35059 -96.4004 -13.8096c33.7705 -12.3701 69.5098 -7.07031 69.5098 -7.07031zM171.31 290.5l0.0605469 0.00976562c-0.0947266 -0.115234 -0.171875 -0.331055 -0.171875 -0.481445\nc0 -0.418945 0.34082 -0.759766 0.759766 -0.759766c0.124023 0 0.308594 0.0546875 0.412109 0.121094c11.4199 8.30078 64.9502 42.7705 134.5 26.8301c0.860352 -0.189453 1.39941 1.29004 0.639648 1.7207c-11.3398 6.33984 -28.6895 10.6494 -41 10.7393\nc-0.404297 0.00976562 -0.732422 0.345703 -0.732422 0.75c0 0.134766 0.0634766 0.332031 0.142578 0.44043c1.84668 2.41602 5.30078 5.88379 7.70996 7.74023c0.166992 0.126953 0.302734 0.401367 0.302734 0.611328c0 0.424805 -0.344727 0.770508 -0.770508 0.770508\nc-0.0146484 0 -0.0380859 -0.000976562 -0.0517578 -0.00195312c-17.5205 -1.08008 -37.5107 -9.4707 -49 -17.2998c-0.107422 -0.0751953 -0.300781 -0.136719 -0.431641 -0.136719c-0.414062 0 -0.75 0.335938 -0.75 0.75\nc0 0.0498047 0.00976562 0.12793 0.0214844 0.176758c0.899414 4.30957 3.72949 9.98926 5.18945 12.6494c0.0566406 0.0947266 0.102539 0.261719 0.102539 0.37207c0 0.402344 -0.327148 0.729492 -0.730469 0.729492\nc-0.110352 0 -0.276367 -0.0449219 -0.37207 -0.101562c-18.4697 -9.4502 -39.0898 -26.2803 -55.8301 -45.6299z\" />\n    <glyph glyph-name=\"megaport\" unicode=\"&#xf5a3;\" horiz-adv-x=\"496\" \nd=\"M214.5 238.4l33.4004 33.3994l33.3994 -33.3994v-66.4004l-33.2998 -33.2998l-33.5 33.5v66.2002zM248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM393.1 25.5996h0.100586v87.1006l-59.7002 59.7002v87.5996l-59.5 59.5\nv75.5996l-26.0996 19.2002l-26.1006 -19.2002v-75.5996l-59.5 -59.5v-87.9004l-59.5 -59.5v-87l26.1006 -19.1992l26.0996 19.1992v65.5l33.5 33.4004l33.4004 -33.4004v-65.5l26.0996 -19.1992l26.2002 19.1992v65.5l33.3994 33.4004l33.4004 -33.4004v-65.5l26 -19.1992z\n\" />\n    <glyph glyph-name=\"nimblr\" unicode=\"&#xf5a8;\" horiz-adv-x=\"384\" \nd=\"M246.6 148.71c15.5703 0 27.1504 -11.46 27.1504 -27s-11.6201 -27 -27.1504 -27c-15.6992 0 -27.1494 11.5703 -27.1494 27s11.5498 27 27.1494 27zM113 121.75c0 15.6104 11.6797 27 27.1504 27c15.4697 0 27.1494 -11.46 27.1494 -27s-11.4697 -27 -27.1494 -27\nc-15.4404 0 -27.1504 11.3096 -27.1504 27zM191.76 289c98.3701 0 177.76 -78.9102 177.76 -176.48c0 -97.5693 -79.6094 -176.52 -177.76 -176.52c-98.1494 0 -177.76 78.8701 -177.76 176.52v335.48l45.25 -227c30.2002 48.2305 97.75 68 132.51 68zM191.76 -19.1201\nc73.2402 0 132.51 58.96 132.51 131.64c0 72.6807 -59.2393 131.54 -132.51 131.54c-73.2695 0 -132.51 -58.8994 -132.51 -131.59c0 -72.6895 59.2402 -131.59 132.51 -131.59z\" />\n    <glyph glyph-name=\"rev\" unicode=\"&#xf5b2;\" \nd=\"M289.67 173.11c0 -36.1943 -29.375 -65.5801 -65.5703 -65.5801c-36.1943 0 -65.5693 29.375 -65.5693 65.5693c0 36.1953 29.375 65.5703 65.5693 65.5703h0.0107422c36.1445 -0.0439453 65.5156 -29.415 65.5596 -65.5596zM429.22 178.16v-210.16h-210.16v0.110352\nc-110.939 2.70996 -200.06 93.4092 -200.06 205c0 108.569 84.2998 197.319 191 204.569v38.3203l108.77 -62.7803l-108.77 -62.79v39.1201c-80 -7.16016 -143 -74.5498 -143 -156.43c0 -86.6201 70.4902 -157.12 157.11 -157.12s157.09 70.5 157.09 157.12\nc-0.0224609 47.1709 -32.1934 106.235 -71.8105 131.84l45.3799 26.2002c39.8018 -32.8584 73.0977 -101.402 74.3203 -153h0.129883z\" />\n    <glyph glyph-name=\"shopware\" unicode=\"&#xf5b5;\" horiz-adv-x=\"512\" \nd=\"M403.5 -7.41016c-36.0898 -26.8223 -101.875 -48.5908 -146.841 -48.5908c-0.181641 0 -0.477539 0.000976562 -0.65918 0.000976562c-137.19 0 -248 111 -248 248c0 137.19 111 248 248 248h0.211914c52.3994 0 126.538 -28.4482 165.488 -63.5\nc0.643555 -0.585938 1.16602 -1.76855 1.16602 -2.63965c0 -1.9707 -1.59961 -3.56934 -3.57031 -3.56934c-0.125977 0 -0.330078 0.0126953 -0.456055 0.0292969c-15.2227 2.03223 -40.042 3.68164 -55.4004 3.68164\nc-0.361328 0 -0.948242 -0.000976562 -1.30957 -0.00195312c-129.36 0 -222.399 -53.4697 -222.399 -155.35c0 -109 92.1299 -145.881 176.829 -178.73c33.6406 -13 65.4004 -25.3604 87 -41.5898c0.788086 -0.592773 1.42676 -1.87402 1.42676 -2.86035\nc0 -0.985352 -0.638672 -2.2666 -1.42676 -2.85938zM503 214.91c0.578125 -6.2832 1.04688 -16.5039 1.04688 -22.8135c0 -25.8613 -7.62793 -66.4043 -17.0273 -90.4971c-0.495117 -1.2373 -1.98047 -2.24316 -3.31348 -2.24316\nc-0.495117 0 -1.25 0.19043 -1.68652 0.423828c-29.4893 16.3594 -61.6094 28.3398 -92.6797 39.9297c-60.2803 22.4902 -112.34 41.8896 -112.34 84.4902c0 1.45996 -3.87988 53.6299 80.25 53.6299c50.8604 0 92.7197 -17.4805 144.48 -60.4805\nc0.625 -0.530273 1.19336 -1.62305 1.26953 -2.43945z\" />\n    <glyph glyph-name=\"squarespace\" unicode=\"&#xf5be;\" horiz-adv-x=\"512\" \nd=\"M186.12 104.66l157.22 157.2c38.5703 38.5898 101.13 38.5898 139.72 0c38.5908 -38.5801 38.5908 -101.13 0 -139.721l-119.25 -119.239l-0.0400391 -0.0400391c-19.2891 -19.2705 -50.5498 -19.25 -69.8193 0.0400391l154.149 154.14\nc19.29 19.29 19.29 50.5703 0 69.8604s-50.5693 19.29 -69.8594 0l-157.181 -157.181c-9.64941 -9.64941 -25.29 -9.64941 -34.9395 0c-9.65039 9.65039 -9.65039 25.29 0 34.9404zM430.65 209.46c9.63965 -9.63965 9.63965 -25.2803 -0.0107422 -34.9297l-157.199 -157.2\nc-38.5801 -38.5703 -101.141 -38.5703 -139.721 0l-0.0195312 0.0195312c-9.64062 9.65039 -9.62988 25.29 0.0195312 34.9307l0.0107422 0.00976562c9.64941 9.63965 25.2793 9.62988 34.9199 -0.00976562l0.0498047 -0.0498047\nc19.29 -19.2607 50.5498 -19.2402 69.8193 0.0498047l157.2 157.18c9.64062 9.65039 25.2803 9.65039 34.9307 0zM168.66 122.13c-38.6006 -38.5801 -101.13 -38.5801 -139.73 0.00976562c-38.5801 38.5801 -38.5801 101.13 0 139.721l119.23 119.25l0.0195312 0.0195312\nc19.3008 19.2803 50.5703 19.2705 69.8506 -0.0195312l-154.17 -154.17l-0.0302734 -0.0302734c-19.2803 -19.2998 -19.2598 -50.5605 0.0302734 -69.8398l0.00976562 -0.0107422c19.29 -19.29 50.5703 -19.2793 69.8496 0.0107422l157.21 157.18\nc9.64062 9.63965 25.2705 9.63965 34.9102 0c9.64062 -9.65039 9.64062 -25.29 0 -34.9404zM81.3301 174.53c-9.64062 9.64941 -9.65039 25.29 0 34.9297l157.189 157.19c38.5908 38.5898 101.131 38.5898 139.721 0c9.64941 -9.64062 9.64941 -25.2803 0 -34.9307\nc-9.64062 -9.64941 -25.2803 -9.64941 -34.9307 0l-0.0195312 0.0205078c-19.29 19.2793 -50.5596 19.2695 -69.8398 -0.0205078l-157.21 -157.189c-9.64062 -9.64062 -25.2705 -9.64062 -34.9102 0z\" />\n    <glyph glyph-name=\"themeco\" unicode=\"&#xf5c6;\" \nd=\"M202.9 439.57c9.89941 5.72949 26 5.81934 35.9492 0.209961l191.15 -107.63c10 -5.60059 18 -19.4404 18 -30.8604v-217.29c0 -11.4404 -8.05957 -25.29 -18 -31l-191.19 -108.74c-9.92969 -5.66016 -26 -5.56934 -35.8496 0.209961l-185.1 108.41\nc-9.86035 5.78027 -17.8604 19.7402 -17.8604 31.1201v217.29c0 11.4404 8 25.3604 17.9102 31.0801zM125.5 239.74c-15.9404 0 -31.8896 -0.140625 -47.8301 -0.140625v-101.449h19.1299v29.8496h28.7002c49.71 0 49.5596 71.7402 0 71.7402zM265.64 139.45\nl-30.7295 34.6396c37 7.50977 34.7998 65.2305 -10.8701 65.5098c-16.0898 0 -32.1699 0.140625 -48.2598 0.140625v-101.59h19.1299v33.9092h18.4102l29.5596 -33.9092h22.7598v1.2998zM224.05 221.77c23.3398 0 23.2598 -32.46 0 -32.46h-29.1299v32.46h29.1299z\nM128.49 223.37c21.1797 0 21.1094 -38.8506 0 -38.8506h-32.3105v38.8408zM321.14 241.62c-68.46 0 -71 -105.8 0 -105.8c69.4805 0.00976562 69.4102 105.8 0 105.8zM321.14 224.23c44.1201 0 44.8008 -70.8604 0 -70.8604c-44.7998 0 -44.4297 70.8604 0 70.8604z\" />\n    <glyph glyph-name=\"weebly\" unicode=\"&#xf5cc;\" horiz-adv-x=\"512\" \nd=\"M425.09 382.17c50.9102 0 87.5498 -35.1504 86.9199 -83.4697c0 -21.6201 -0.950195 -18.5498 -77.5 -227.2c-22.3799 -60.5703 -67.7695 -69.6699 -92.7402 -69.6699c-39.2393 0 -70.0391 19.46 -85.9297 54.29c-15.8896 -34.5205 -46.7002 -53.9805 -85.9297 -53.9805\nc-24.9697 0 -70.3701 8.78027 -92.7402 69.3506c-72.9902 200.21 -77.1699 204.52 -77.1699 233.479c0 43.3105 38.5898 77.2002 87.54 77.2002c40.21 0 73.2803 -25.7295 83.6602 -64.3301c18.4795 58.0498 65.5 64.3301 85.2803 64.3301\nc19.4492 0 66.7891 -6.26953 84.9492 -64.3301c10.3799 38.6006 43.7803 64.3301 83.6602 64.3301zM451.43 267.36c3.49023 11.1992 7.29004 19.3701 7.61035 27.2393c0 22.3906 -16.1602 35.71 -38.3301 35.71c-18.6904 0 -31.9902 -11.7998 -36.1104 -29.0498\nl-44.0293 -139.819h-0.950195l-44.6602 136.79c-6.01953 19.9697 -16.4697 32.0791 -38.96 32.0791s-32.9404 -12.4092 -38.96 -32.0791l-44.6602 -136.79h-0.950195l-44.0293 139.819c-4.12012 17.25 -17.4199 29.0498 -36.1104 29.0498\nc-22.4902 0 -38.3301 -13.0195 -38.3301 -29.3594c0 -10.5898 2.54004 -19.6699 7.91992 -34.5l64.9404 -175.23c7.91016 -21.4795 21.2197 -37.2197 46.2393 -37.2197c23.1201 0 37.0605 12.0996 44.0205 33.5996l39.2803 117.42h0.949219l39.2803 -117.42\nc6.65039 -21.4893 20.5898 -33.8994 44.0303 -33.8994c25.0195 0 38.3203 15.7295 46.2402 37.2197z\" />\n    <glyph glyph-name=\"wix\" unicode=\"&#xf5cf;\" horiz-adv-x=\"640\" \nd=\"M393.38 316.31c0 -13.0293 2.08008 -32.6895 -28.6797 -43.8291c-9.52051 -3.4502 -15.9502 -9.66016 -15.9502 -9.66016c0 31 4.71973 42.2197 17.4004 48.8594c9.75 5.11035 27.2295 4.62988 27.2295 4.62988zM277.58 280.77\nc5.47949 26.3408 30.8799 38.3408 55.2998 35.2705l-65.5703 -247.93s-21.6396 -1.56055 -32.46 3.95996c-14.2197 7.25 -20.9893 12.8398 -29.5898 46.5693c-7.66992 30.0703 -29.1494 118.4 -31.1201 124.7c-4.30957 13.8105 -10.6396 14.9404 -15.3994 0\nc-2.00977 -6.29004 -23.4502 -94.6299 -31.1201 -124.7c-8.61035 -33.7295 -15.3701 -39.3193 -29.5898 -46.5693c-10.8301 -5.52051 -32.46 -3.95996 -32.46 -3.95996l-65.5703 247.93c23.8604 3 49.7305 -8.5498 55.2803 -35.2705l34.2393 -132.659l28.4805 108.569\nc7.76953 32.3506 21.0596 48.5303 48.4297 48.5303c27.6201 0 40.7402 -16.54 48.4307 -48.5303l28.4795 -108.569zM393.36 275.56v-8.97949l0.0195312 0.00976562v-150.27c-0.129883 -30.8301 -3.33008 -37.6807 -17.2598 -44.7803\nc-10.8203 -5.52051 -27.3701 -3.42969 -27.3701 -3.42969v152.069c0 21.25 -1.95996 27.9404 13.1797 35.2002c6.19043 2.96973 11.96 5.25 17.9707 8.61035c9.35938 5.22949 13.46 11.5693 13.46 11.5693zM556.8 191.48l82.9902 -123.36s-35.9297 -4.62012 -53.3203 11.21\nc-13.9102 12.6602 -23.7393 28.3398 -53.1396 70.7197c-0.5 0.770508 -6.25977 10.5205 -13.0703 0c-34.9297 -50.3496 -41.0195 -60.2598 -52.5098 -70.7197c-17.3799 -15.8301 -53.9502 -11.21 -53.9502 -11.21l82.9697 123.36l-83.1992 123.739\ns35.1094 5.98047 52.5 -9.84961c13.3799 -12.1797 24.8896 -30.2402 54.1797 -72.4697c6.82031 -10.54 12.5996 -0.730469 13.0703 0c29.7695 42.9199 40.8799 60.3691 54.1797 72.4697c17.3896 15.8301 52.5 9.84961 52.5 9.84961z\" />\n    <glyph glyph-name=\"ello\" unicode=\"&#xf5f1;\" horiz-adv-x=\"496\" \nd=\"M248 440c136.97 0 248 -111.03 248 -248s-111.03 -248 -248 -248s-248 111.03 -248 248s111.03 248 248 248zM391.84 154.8c2.48047 7.44043 -2.47949 15.71 -9.91992 17.3604c-7.43945 2.47949 -15.71 -2.48047 -17.3604 -9.91992\nc-14.0498 -52.9102 -62 -90.1104 -116.56 -90.1104s-102.51 37.2002 -116.56 90.1104c-1.65039 7.43945 -9.9209 11.5693 -17.3604 9.91992c-7.44043 -1.65039 -11.5703 -9.91992 -9.91992 -17.3604c16.5303 -65.3096 76.0498 -111.6 143.84 -111.6\ns127.31 46.29 143.84 111.6z\" />\n    <glyph glyph-name=\"hackerrank\" unicode=\"&#xf5f7;\" horiz-adv-x=\"512\" \nd=\"M477.5 320c14.5 -25 14.4805 -230.92 -0.00976562 -256s-192.391 -128 -221.33 -128c-28.9404 0 -206.83 102.8 -221.32 128s-14.4102 230.79 0 256s192.351 128 221.32 128s206.84 -103.05 221.34 -128zM316.13 33.7803c3.95996 0 40.4404 35.7793 37.5605 38.6895\nc-0.870117 0.839844 -8.82031 1.49023 -17.6904 1.83984c0 32.4004 -3 19.0508 0.679688 210.341c0.0703125 3.65918 -1.04004 5.37988 -4.5 5.37988c-11.0801 0.0693359 -22.1602 0.0195312 -33.2295 -0.0605469c-3.25977 -0.0292969 -4.31055 -1.80957 -4.20996 -5.2002\nc1.58984 -48.8994 1.2002 -79.0898 1.2002 -83.6396h-80.2607c0.629883 25.7998 0.209961 79.6396 2.62988 105.39v3.16016c8.87012 0.350586 15.9004 0.970703 16.7705 1.83984c2.90039 2.91016 -34.3203 38.6904 -38.2705 38.6904\nc-3.94922 0 -41.4092 -35.7695 -38.4893 -38.6904c0.879883 -0.839844 7.58984 -1.48926 17.2598 -1.83984v-3.16992c3.15039 -128.67 1.07031 -179.229 0.150391 -212.67c-0.130859 -4.58008 1.63965 -6.10938 5.73926 -6.10938\nc10.1406 0.0292969 20.2803 -0.0800781 30.4102 -0.0800781c4.16016 -0.0605469 5.96973 1.39941 5.74023 5.93945c-1.83008 36.6797 -1.37012 65.7803 -1.37012 72.8799h79.9297c0 -2.41992 0.44043 -3.84961 0.44043 -5.84961\nc-0.350586 -17.7305 -0.94043 -60.0898 -0.94043 -86.3203c-11.29 -0.349609 -16.6797 -0.959961 -17.5498 -1.83008c-2.91016 -2.91992 34 -38.6895 38 -38.6895z\" />\n    <glyph glyph-name=\"kaggle\" unicode=\"&#xf5fa;\" horiz-adv-x=\"320\" \nd=\"M304.2 -53.5l1.39941 -7.59961c-0.5 -2 -2.5 -3 -6 -3h-66.8994c-4 0 -7.5 1.7998 -10.5 5.2998l-110.5 140.6l-30.7998 -29.2998v-109c0 -5 -2.5 -7.5 -7.5 -7.5h-51.9004c-5 0 -7.5 2.5 -7.5 7.5v497c0 5 2.5 7.5 7.5 7.5h51.9004c5 0 7.5 -2.5 7.5 -7.5v-306\nl132.3 133.7c3.5 3.5 7 5.2998 10.5 5.2998h69.2002c7 0 7.89941 -7.7998 5.2998 -10.5l-139.8 -135.3z\" />\n    <glyph glyph-name=\"markdown\" unicode=\"&#xf60f;\" horiz-adv-x=\"640\" \nd=\"M593.8 388.9c25.5 0 46.2002 -20.7002 46.2002 -46.1006v-301.6c0.0996094 -25.4004 -20.5996 -46.1006 -46.0996 -46.1006h-547.7c-25.5 0 -46.2002 20.7002 -46.2002 46.2002v301.5c0 25.4004 20.7002 46.1006 46.2002 46.1006h547.6zM338.5 87.4004h-0.200195v209.199\nh-61.5l-61.5 -76.8994l-61.5 76.8994h-61.5v-209.199h61.7002v120l61.5 -76.9004l61.5 76.9004v-120h61.5zM473.8 84.2998l92.2002 107.7h-61.5v104.6h-61.5v-104.6h-61.5z\" />\n    <glyph glyph-name=\"neos\" unicode=\"&#xf612;\" horiz-adv-x=\"512\" \nd=\"M415.44 -64h-95.1104l-108.21 154.54v-91.0996l-86.4297 -63.4404h-97.6904v482.18l40.4697 29.8203h108.05l123.74 -176.13v112.68l86.4307 63.4502h97.6895v-461.5zM38.7695 412.73v-460.73l72 52.8799v249.12l215.5 -307.64h84.79l52.3506 38.1699h-78.2705\nl-316.14 450.47zM121.31 -53.8799l80 58.7803v101l-79.7598 114.399v-220.939l-72.5498 -53.25h72.3398zM80.6299 437.23l310.601 -442.57h82.3691v442.57h-79.75v-317.561l-222.939 317.561h-90.2803zM311 256.35l72 -102.81v278.53l-72 -53v-122.721z\" />\n    <glyph glyph-name=\"zhihu\" unicode=\"&#xf63f;\" horiz-adv-x=\"640\" \nd=\"M170.54 299.87h122.68v-217.55h-49.5293l-42.0107 -26.3701l-7.70996 26.3701l-23.4297 0.00976562v217.54zM268.29 105.94v170.31h-72.8203v-170.31l11.9004 -0.0400391l5.08008 -17.4707l27.8994 17.5107h27.9404zM149.83 200.33\nc7.5 0 7.58984 -23.6104 7.58984 -23.6104h-61.6504c-0.879883 -13.1201 -3.50977 -26.6895 -7.86914 -40.6699l14.6191 11.6201c8.73047 -8.75 29.2109 -32.8896 36.79 -41.8096c9.15039 -13.1006 1.24023 -39.9902 1.24023 -39.9902l-53.96 64.9395\nc-12.6094 -48.3496 -35.5898 -69.25 -35.5898 -69.25c-10.0898 -8.96973 -30.5098 -15.75 -51 -9.89941c42.8301 33.2197 66.4502 75.2402 70.8496 125.1h-65.5801s3.82031 23.6201 15.5605 23.6201h52.2695c0.480469 6.56055 1.68066 62.9404 1.68066 73.4404h-28.8701\nc-2.62988 -7.87012 -3.03027 -8.64062 -5.14062 -14.5303c-11.4697 -21.0303 -30.9492 -21.5703 -36.8398 -22.21c17.4902 34.9795 27.3105 69.2197 30.7002 78.1201c8.2002 21.5693 32.2705 21.5693 32.2705 21.5693c-5.25 -14.0098 -9.63086 -27.5498 -13.1201 -40.6699\nh88.5c10.5498 0.25 8.58008 -22.3096 8.58008 -22.3096h-51.1602c0 -21.8701 -0.459961 -46.3604 -2.2002 -73.46h52.3301zM561.85 201.93l-19.2295 14.4307s30.8301 40.0498 36.8301 48.1992c8.72949 10.7402 27.3799 -4.05957 27.3799 -4.05957\ns-24.1504 -32.9297 -44.9805 -58.5703zM411.76 261.02l0.00976562 0.0107422c8.99023 -8.25 34.6602 -45.8604 34.6602 -45.8604l-19.46 -13.7295c-1.59961 2.40918 -41.1201 57.4492 -41.1201 57.4492s16.9004 10.3799 25.9102 2.12988zM640 189.65\nc0 0 0.950195 -23.79 -8.73047 -23.79h-122.359v-73.3203c0.780273 -28.0303 -15.3301 -45.3096 -44.8906 -45.3096c-9.84961 0 -16.1396 1.75977 -26.0195 6.56934c-12.9805 7.4502 -17.3203 17.8701 -19.3096 21.8398c15.6094 -0.65918 27.6094 -1.91992 41.6895 -1.80957\nc13.29 -0.870117 24.4805 7.15039 24.4805 21.1201v70.9199h-107.94c-22.6895 0.540039 -25.5098 22.8496 -25.5098 22.8496h133.47v99.8105c-12.8301 0 -31.6797 -0.830078 -56.5098 -2.43066c-26.46 -0.80957 -35.8398 -2.58984 -49.1504 0.890625\nc-8.16016 2.46973 -14.1797 10.7295 -15.7793 19.5498c67.1396 1.55957 232.359 18.0498 232.359 18.0498s20.1006 5.75977 23.1699 4.58008c12.8105 -6.25 0.589844 -33.4395 0.589844 -33.4395c-17.6396 -0.810547 -46.8896 -2.40039 -87.7695 -4.81055\nc-10.4297 -0.799805 -18.04 -1.2002 -22.8496 -1.2002v-101c0.149414 0 111.279 0.930664 131.06 0.930664z\" />\n    <glyph glyph-name=\"alipay\" unicode=\"&#xf642;\" \nd=\"M377.74 416c38.6895 0 70.0898 -31.5703 69.9297 -70.2598v-234.41c-48.6104 16.7002 -99.6895 36.04 -148.62 52.7402c23.1406 44.2998 38.3506 90.9199 38.3506 90.9199h-88.7705v31.2402h109.45v19.0098h-109.44v50.4199h-50.9199v-50.4199h-109.439v-19.0098h109.439\nv-31.2402h-92.0801v-16.7002h178.2s-9.91992 -30.25 -26.4502 -60.3398c-47.7793 14.71 -91.75 24.96 -127.13 24.96c-84.6396 0 -103.49 -42.4902 -99.5195 -81.5c3.30957 -31.0703 26.4502 -76.3701 97.04 -76.3701c64.4795 0 116.55 37.0303 148.62 81\nc61.0098 -28.0996 125.64 -62.8203 171.6 -88.4404c-0.5 -38.5195 -31.7402 -69.5996 -70.2598 -69.5996h-307.48c-38.8496 0 -70.2598 31.4102 -70.2598 70.2598v307.48c0 38.8496 31.4102 70.2598 70.2598 70.2598h307.48zM47.2803 125.05\nc-0.990234 17.5205 10.9102 50.5801 78.3594 50.5801c24.96 0 64.8105 -12.7295 109.44 -31.4102c-25.29 -33.2197 -65.7998 -72.8994 -117.87 -72.8994c-59.6797 0 -68.9404 33.5596 -69.9297 53.7295z\" />\n    <glyph glyph-name=\"the-red-yeti\" unicode=\"&#xf69d;\" horiz-adv-x=\"512\" \nd=\"M488.23 206.3c2.49805 -3.35254 5.51465 -9.31152 6.76953 -13.2998c3.37793 -9.19922 7.36523 -24.5205 8.90039 -34.2002l-2.5 -0.5l-13 14.2998c-17.9004 -28.0996 -9.90039 -15.3994 -16.7002 -25.0996c0 -124.2 -101.3 -211.5 -223 -211.5\nc-61.5 0 -113.9 20.2002 -157.5 60.2002c-64.5 60.8994 -64.9004 125 -64.9004 150.5c-0.5 1.7998 -0.700195 3.5 -1.2002 5.2002l-20.1992 -22.4004c-6.80078 43 25.6992 74.2998 33 80.7002c0.5 1 0.699219 2.2002 1.19922 3.2002l-28.7998 1l-3 3.39941\nc8.5 3.5 25.2998 13.2998 40.2998 14.2998c6.30273 12.0684 18.7568 30.123 27.8008 40.3008c1.2998 6.39941 3.2998 14.1992 6.59961 25.7998l-7.59961 -4.7002l-1.7002 1.7002l1.7002 8.39941c8.87207 21.3857 29.7939 51.5811 46.6992 67.4004l-33 14.2998h3.7002\nc20.9004 4.90039 33.2002 3.2998 49.2002 0c-2.5 4.10059 -5.40039 10.5 -8.40039 18.9004c-1.16699 3.20996 -2.11426 8.58691 -2.11426 12.0029c0 3.81152 1.1709 9.76855 2.61426 13.2969c8.90039 -7.40039 14.3008 -24.5996 15.2002 -27\nc0.700195 3.59961 2.10059 21.2998 33.7002 45.5l1.83008 -0.5l-12 -44.2002c30 17.7002 63 21.9004 97.9004 11.7998c-12.7002 -12.1992 -24.3008 -28.8994 -42.5 -33c7.39941 -2.2998 28.6992 -9.69922 34.1992 -15.1992l-24.7998 7.09961\nc6.5 -6 19.6006 -16.4004 25.1006 -25.0996c19.418 -0.893555 50.0615 -6.85254 68.3994 -13.3008l-0.5 0.5c29.4004 14.7002 37.7002 27.3008 74.7998 3c0 -30.1992 -2.2998 -23.3994 3 -29.7998c6.41602 5.42383 17.75 12.8154 25.3008 16.5\nc13 6.40039 23.0996 4.7002 30.6992 -5.89941c11.8008 0 17.8008 -15.7002 18.4004 -27c14.7998 -2.90039 2.7002 -30.7002 2.5 -30.7002l-7.09961 -18.2002c7.7998 -7.7998 22.0996 -20.9004 31.6992 -44.7998zM398 336.8c-13.0996 8.90039 -22.7002 11.9004 -28.2998 8.5\nc8.09961 -7.2002 13 -14.2998 13.5 -20.7002c1.2002 -7.59961 -2.2002 -14.7998 -10.6006 -21.8994l-4.19922 -3.40039c3.60059 -5.90918 7.36328 -16.2578 8.39941 -23.0996h2.5c-2.09961 13.8994 -2.5 11 0.700195 14.7998c11 -6.40039 14.9004 -14.5 16 -19.9004\nc21.7998 10.1006 29.5 12.7002 54.7998 20.9004l-18.2002 -16c11.4004 0 25.6006 0.299805 46.5 -8.40039c7 24.3008 7.10059 20.7002 2.5 20.7002l-4.69922 -11.2998c-1.7002 10.5 -2.90039 18.9004 -3.40039 25.2998c-0.5 6.7002 -3.90039 9.60059 -9.2998 10.1006\nc-0.00976562 -0.384766 -0.0175781 -1.00781 -0.0175781 -1.3916c0 -3.87012 0.769531 -10.0566 1.71777 -13.8086l-1.7002 -5.90039c-2.90039 10.6006 -5.90039 20.2002 -9.2998 27.7998c-9.7002 17.7002 -30.2002 -9.19922 -43 -11.2998\nc3.72266 -0.207031 9.77051 -0.375977 13.5 -0.375977c3.72852 0 9.77637 0.168945 13.5 0.375977l-22.4004 -5.39941l3.40039 -4.7002c-5.5 0 -16.9004 -0.900391 -22.4004 17.2002zM358.4 346.9l-20.3008 -11.8008c11.3008 -7.59961 20.2002 -18.1992 27.8008 -31.1992\nc6.39941 2.89941 10.0996 5.09961 11.7998 7.59961c2.5 2.7998 2.5 4.7002 3 7.09961c0.599609 1.30078 0.799805 2.7002 -3.40039 11.1006c-7.5 11.7998 -16.2002 15.2998 -18.8994 17.2002zM91 304.9c-7.7998 -24.1006 -11.7002 -49.4004 -13.2002 -74.6006l13.2002 -5\nl1.2002 27c9.5 -16.3994 11.2002 -23.2998 12.2998 -28.7998c2.7998 2.09961 7.7002 7 22.5996 11.2998l1.2002 -1.7002l-7.59961 -10.5996c10.0996 3.5 19.5 3.5 28.2998 0.5l-10.5996 -8.40039c22.7998 -8.39941 26.5996 -7.59961 38.3994 -26.0996l-11.7998 1.2002\nc34.9297 -20.5 66 -47.9004 141.2 -63.2002c15.5996 24.0996 14 21.0996 14 22.9004l0.200195 0.199219l-0.200195 0.200195c-0.700195 1.90039 -14.1006 16.6006 -18.2002 20.7002c7.2998 -1.7998 6 -0.900391 10.7998 -3.7002\nc1.7002 -0.899414 -5.39941 5.40039 -21.8994 20.2002c16.5 -6.7002 27.5996 -15.5 33 -27.7998l1.69922 30.7002l-22.3994 17.6992l6.39941 5.90039c-7.2998 0 -31 3.7002 -49.1992 -16l-2.5 0.5c5.89844 12.1807 13.0664 32.7881 16 46\nc1.61914 7.72656 2.96289 20.4053 3 28.2998c0 19.5 -4.7002 38.4004 -13.5 56.6006c-6.40039 13.5 -16.5 25.2998 -30 35.3994c-5.4707 4.09961 -14.7441 10.1475 -20.7002 13.5c3 0.700195 1 1.2002 -5.40039 1.2002c-6.39941 0.200195 -13 0.700195 -19.3994 1.2002v-3\nc-8.67773 -1.375 -20.0127 -8.18457 -25.3008 -15.2002h-1.19922l-5.40039 -3.40039c-1.2002 2.90039 0 6.30078 4.2002 9.30078l10.5996 11.2998l-3.39941 -0.5l2 3.39941c-2.30078 0.200195 -4.2002 0.5 -6.2002 0.700195l-0.5 1.2002l2.5 1.7002\nc2.2002 -0.200195 4.59961 -0.5 7.09961 -0.700195c2.52539 1.3457 6.89746 2.43848 9.75879 2.43848c1.18359 0 3.08301 -0.196289 4.24121 -0.438477l2.5 -1.2002l0.200195 -0.5c6.50488 0.421875 16.9883 1.7207 23.4004 2.90039\nc20.6992 2.89941 36.6992 11.2998 48.5 24.7998l-21.1006 0.5c-25.7998 0.5 -49.3994 -5.40039 -71.2998 -18.9004l-2.5 2.5l0.5 4.7002l1.7002 7.10059c1.37695 7.08105 4.24414 18.415 6.39941 25.2998c-1.69922 -0.700195 -4.59961 -4.90039 -9.2998 -11.2998\nc-4.7002 -6.40039 -8.39941 -13 -10.0996 -19.4004c-0.905273 -4.24512 -3.54785 -10.6514 -5.90039 -14.2998l-13.5 29l8.40039 -35.7998l-0.5 -1.7002h-0.015625c-4.51953 0 -11.6807 1.12012 -15.9844 2.5c-3.40039 0.700195 -10.6006 1.2002 -20.9004 1.2002\nc0.5 0 -0.700195 0 -3.2002 -0.5c5.40039 -1.30078 13.5 -4.2002 24.8008 -8.40039l6.39941 1.2002c-4.2002 -3.40039 -10.8994 -10.1006 -20.2002 -19.4004c-9.39941 -8.89941 -20.1992 -26.0996 -32.5 -50.2002l4.2002 1.2002l10.1006 9.2998l-5.40039 -4.69922\nl13 12.2998l-2.5 -3.40039c-5.09961 -7.59961 -8.09961 -12.2998 -9.2998 -15.2002zM367.5 -25.0996c8.2998 40.2998 3.59961 55.1992 -0.700195 89.5c-35.5 -11.8008 -20.2998 -6 -32 -10.8008l10.5 -14.1992l-1.2002 -1.2002c-20.1992 6 -23.1992 10.7998 -27.7998 15\nc6 -22.2002 13.9004 -26.4004 29.5 -31.7002c-9.5 -9.59961 -25.3994 4 -34.3994 13l2.5 -23.5996l-4.2002 -3c-5 22.0996 -22 39.0996 -25.2998 39.0996c-44 -13 -79.1006 -5.7998 -113.9 10.5996c-1.59961 -0.399414 -70.5996 -18 -120.5 37.1006\nc13.7002 -35 32.2998 -63.7002 71.2998 -82.6006c-4.13574 8.56934 -13.4102 20.4863 -20.7002 26.6006c0 0 0.700195 3.7002 1.2002 10.0996c19.4004 -19.3994 50.7002 -39.5 93.2002 -60.2002c-59.5996 24.5 -59.9004 24.8008 -69.0996 29l16 -20.6992\nc-3 -1.30078 -6.7002 -0.5 -10.1006 1.19922c-10.3359 6.03809 -26.1943 17.1484 -35.3994 24.8008c1.89941 -2.2002 80.0996 -98.5 200.899 -74.3008c-43.0996 21.8008 -52.3994 52.4004 -66.5996 73.5l17.7002 -7.59961l-11.8008 23.0996\nc20.1006 -27.7998 28.6006 -35 38.4004 -44.2998l-30 16.5c12.5996 -27.0996 33.7002 -47 63.5 -58.7998c2.90039 1.5 9.09961 -1.09961 59 23.9004zM482.8 189.3l8.93066 -12.7998l-12.3008 32.5c10.9004 0 10 -0.0996094 21.2002 -3.40039\nc-6.72168 9.44824 -18.8184 23.7842 -27 32l-26.5996 23.1006l1.2002 3l23.5996 2.5c-9.00293 1.98535 -23.7871 3.86719 -33 4.2002l-17.7002 -0.5l-0.5 2.89941l14.7998 13l-41.7998 -20.2002l-12.2998 18.9004l3.40039 -16l-2.5 -1.2002l-5.90039 4.2002h-10.0996\nl5.39941 -4.2002v-2l-13.5 -27.7998c-10.0996 -31.2002 -21.8994 -67.9004 -35.3994 -109.7l1.19922 16l-1.19922 -3v-0.5c-6.40039 -16 -13.6006 -29.5 -21.2002 -39.5996l9.2998 21.8994l-46.7002 -20.1992c11.7998 13.5 23.6006 19.3994 34.9004 18.8994\nc-71.2002 11.4004 -106.2 41 -110.4 46c3.60059 -6.2002 13.2002 -17.7998 16 -40.0996l-1.7002 -1.2002c-4.2998 15.5996 -16.3994 46.5996 -55.7998 69.5996l23.6006 -2.5c-10.5 12.6006 -36.3008 17.8008 -40.8008 16l-2.5 2.5l8.40039 8.40039l-22.2998 -5.7998\nl5.39941 13.5c-8.09961 -4.40039 -4.2998 -2.40039 -17 -8.90039l-1.69922 0.5c0.599609 0.600586 0.899414 -0.700195 -3 9.2998c-0.600586 -11 -0.400391 -8.59961 -1 -11.7998c-1.07324 -0.355469 -2.73145 -1.11719 -3.7002 -1.7002c-40 20.6006 -57.2002 11 -73 5.2002\nc36.7998 -6 29.2998 -4 38.3994 -9.2998c-25.7998 -12.2002 -31.8994 -12.5996 -51.3994 -70.0996l22.2695 22.2998l2.5 -16.4004c13.4004 -58 68.7002 -92.5 126.4 -83.3994l-26.1006 22.3994l44.8008 -22.3994l-1.2002 -3c4.59961 -1.7002 9.2998 -3 13.5 -4.2002\nc16.4727 -4.87598 43.7852 -8.83203 60.9648 -8.83203c8.94727 0 23.3887 1.08887 32.2354 2.43164l-32.5 21.2002c35.7998 -7 50.6992 -31.4004 56.7998 -39.5996l-7.60059 29l1.2002 2.5l19 -27.9004l-9.2998 26.5996l21.9004 -13.5h1.19922l-3.39941 4.2002\nl7.09961 -4.7002l-14.2998 16l1.2002 3l7.59961 -7.09961c4.2998 1.2002 41.4004 10.5 80.9004 40.2998c47.8994 35.4004 68.0996 73.7998 71.5996 79.7002l-3 9.2998zM476.7 260.6l-18.2002 -1.19922l14.2998 -11.8008zM221.9 253.5\nc2.69922 -5.09961 5.69922 -12.4004 18.3994 -18.7998c-7.5 -10.9004 -8.2998 -10.5 -20.2002 -16c-7.59961 -7.7002 -13.5 -13.1006 -17.6992 -14.7998l7.09961 13c-4.61914 -1.69336 -12.3604 -3.06641 -17.2793 -3.06641c-2.08789 0 -5.45703 0.25293 -7.52051 0.566406\nl-0.5 1.19922c19 2.10059 37.2002 9.40039 46.5 16c-4.10059 4.2002 -7.10059 11.3008 -8.7998 21.9004zM225.6 355.8c4.92578 -2.78809 11.3486 -8.9707 14.3008 -13.7998c14.6992 -24.0996 19.1992 -40.0996 11.2998 -47.7002\nc-7.90039 -7.59961 -16.7998 -7.09961 -26.1006 3c-9.2998 10.1006 -13.5 23.7002 -11.7998 39.6006c1.7002 15.8994 5.90039 22.2998 12.2998 18.8994zM220.9 309.5c7.09961 -21.2998 33.3994 -23.0996 26.8994 4.90039c-3.89941 16.5 -8.7998 27.0996 -15.2002 32.5\nc-6.59961 5.39941 -10.0996 6.69922 -11.2998 4.19922c-2.5 -2.89941 -3.5 -11.2998 -3 -24.7998c7.5 12.7998 11.6006 5.90039 12.5 4.7002l-0.5 -0.5c-0.799805 -1.7002 -2.59961 -3.09961 1.7002 -6.2002l1.2002 0.5v-4.7002\nc-1.7998 -12.5 -6.90039 -12.7998 -12.2998 -10.5996zM175.9 315c-2.09375 0.388672 -4.49707 2.27051 -5.40039 4.2002c-3.5 8.5 0 21.2002 8.09961 21.2002c2 -0.5 3.7002 -1.7002 5.40039 -4.7002c-1.5 -0.400391 -4.7002 -4.7998 0.700195 -5.90039h0.5\nc0 -13.7002 -7.7002 -15.0996 -9.2998 -14.7998zM216 365.1l-3.7002 2.40039l-0.5 2.5c18.2998 0 25.7998 -8.7998 28.2998 -14.2998c-6.0459 3.29688 -16.542 5.97266 -23.4297 5.97266c-0.737305 0 -1.93359 -0.0322266 -2.66992 -0.0732422l-0.5 3zM144.2 315.7\nc1.59961 -1.60059 0.599609 -0.299805 4.89941 -6.60059c-25.3994 -4.69922 -23.1992 -12.2998 -30 -12.2998c0.300781 0.600586 7.10059 16 23.6006 16l-7.10059 7.60059c9.40039 0.5 15.2002 2.09961 19.9004 -5.90039c0.0175781 6.60938 1.31641 17.1826 2.90039 23.5996\nc2 7.60059 3.69922 11.8008 5.39941 13.5c1 1.5 16.2998 15.7002 29 22.4004c2.05469 1.48047 5.77637 2.68262 8.30859 2.68262c1.48438 0 3.81055 -0.44043 5.19141 -0.982422c0.285156 -0.345703 0.515625 -0.989258 0.515625 -1.43652\nc0 -0.0732422 -0.00683594 -0.191406 -0.015625 -0.263672l-13 -7.59961c7.60059 -11.8008 10.5 -25.3008 8.7998 -41.3008c-0.932617 -9.45898 -7.5625 -22.1377 -14.7998 -28.2998l2.90039 -4.7002c-30 2.2002 -24.7998 6.80078 -46.5 23.6006zM162.9 334.4\nc-1.80078 -7.2002 -2.30078 -16 -3.10059 -26l5.40039 -6.40039l7.09961 -3.40039c2.01465 -0.384766 5.31445 -0.697266 7.36523 -0.697266c1.08887 0 2.85156 0.0888672 3.93457 0.197266c1 1.7002 3.5 4.2002 6.40039 7.60059c5 5.89941 7.90039 13.7998 8.40039 23.0996\nc0.0703125 1.18262 0.126953 3.10449 0.126953 4.28906c0 5.92773 -1.40137 15.3408 -3.12695 21.0107c-3 8.10059 -5.90039 11 -10.1006 9.30078c-5.39941 -1.7002 -10.5996 -5.40039 -16 -11.8008c-3 -4.19922 -5.2002 -9.59961 -6.39941 -17.1992zM204.9 278.3\nl-3.10059 -6.5c7.10059 4.2002 13.5 7.2002 19.4004 8.40039l7.09961 0.5l11.7998 -7.60059h-2.5c-8.7998 3.7002 -19.3994 1.2002 -30.6992 -7.59961c-0.5 -4.7002 1.69922 -14.7002 5.89941 -29.5l9.2002 0.5c-21.9004 -6.59961 -37.5996 -8.40039 -48.9004 -5.40039\nc-24.8994 6.7002 -27.3994 23.6006 -27.5 24.1006c-1.47754 5.69238 -2.67676 15.0869 -2.67676 20.9688c0 3.53418 0.438477 9.23828 0.977539 12.7314c-6.40039 -0.5 -11 -4.2002 -15.2002 -10.6006c-2.90039 5.90039 -5.40039 8.7998 -5.90039 9.2998\nc1.5 0.700195 12.2998 7.5 32.5 4.90039l0.5 -2.5l-5.89941 -1.2002c-0.100586 -0.399414 -1.90039 -29.5 18.8994 -24.7998c1.40039 0.299805 1.2998 -0.0996094 36.1006 14.2998z\" />\n    <glyph glyph-name=\"acquisitions-incorporated\" unicode=\"&#xf6af;\" horiz-adv-x=\"384\" \nd=\"M357.45 -20.2002c2.2002 -14.2998 4.09961 -28.7002 6.59961 -43.7002h-337.1c-4 0 -6.10059 0.700195 -5.2998 5.7002c2.09961 12.9004 3.5 25.9004 5 38.7998c0.5 4.80078 2.2998 6.80078 7.59961 6.80078c118.1 -1 114.9 -0.300781 121.4 2.39941\nc9.39941 4 14.8994 12.9004 14.8994 23.1006c-0.0996094 42.8994 -0.299805 85.8994 -0.200195 128.8c0 3.7998 -1.19922 5.89941 -4.59961 6.7998c-15.7002 3.90039 -31.2998 7.7002 -47.5996 11.7002c-5.30078 -12.2998 -10.4004 -24.4004 -15.7002 -36.7002\nc1.7998 -3.2998 28.3994 -2.90039 35.2998 -2.90039v-27.5996h-114.3c1 8.59961 1.7002 16.7998 3.2002 24.9004c0.299805 1.39941 3.59961 3.09961 5.5 3.19922c8.39941 0.400391 16.8994 0.300781 25.3994 0.100586c4 0 5.90039 1.09961 7.60059 5.2002\nc16.5996 40.6992 13.5 31.1992 67.2998 161c31.5 76.0996 33 76 32.5996 87.3994c-0.700195 18.6006 -25.3994 22.2998 -37.7002 22.1006c-30 -0.400391 -38.3994 0.5 -101.8 0.5c-7.2002 44.5 -4.2002 32.0996 -6.39941 45.2998c-0.700195 4.2002 1 5.2998 4.59961 5.2998\nl339.1 -0.200195c-0.799805 -5.39941 -1.59961 -10.7998 -2.39941 -16.0996c-1.2998 -9.7002 -2.7998 -19.4004 -4 -29.2002c-0.299805 -2.90039 -1.2002 -4.2998 -4.2998 -4.2998c-20.6006 -0.100586 -41.2002 -0.100586 -61.8008 -0.5\nc-18.6992 -0.400391 -37.5996 -0.299805 -56.1992 -2c-13.4004 -1.2002 -23.3008 -12.6006 -18.9004 -26.6006c8.59961 -27.0996 27.7002 -69.0996 36.5 -89.1992c65.7002 -154.2 61.4004 -157 84 -158.601c6.59961 -0.5 13.4004 -0.0996094 20.4004 -0.0996094\nc1.2998 -9.40039 2.59961 -18 4 -27.5h-116v27c10.3994 0 20.3994 0.0996094 30.3994 -0.100586c3.5 0 5 0.700195 3.40039 4.40039c-4.40039 10.2998 -8.7002 20.5996 -13.2002 30.9004c-1.59961 3.69922 -4.09961 4.7998 -8.40039 3.5\nc-12.3994 -3.60059 -24.7998 -6.7002 -37.2998 -9.7002c-4.2998 -1.10059 -6 -2.7998 -5.89941 -7.5c0.799805 -57.5 0.899414 -127.5 1 -129.101c0.399414 -12.5996 8.69922 -21.3994 21 -23.0996c0.899414 -0.200195 12.8994 -2.7998 112.699 -2.59961\nc8.30078 0 8.40039 0.0996094 9.60059 -7.60059zM182.55 185.5c2.46484 -0.869141 6.58691 -1.5752 9.2002 -1.5752s6.73535 0.706055 9.2002 1.5752c13 4.2002 26.2998 7.7998 39.3994 11.7002c1.1123 0.512695 2.86035 1.45312 3.90039 2.09961\nc-6.7002 17.4004 -13.0996 34.2002 -19.7002 50.9004c-8.89941 22.7002 -17.7002 60.2998 -27 82.7998c-1.5 0.799805 -1.89941 -2.40039 -9.39941 0c-17.1006 -44 -34.1006 -87.7998 -51.3008 -132.1c1.54297 -0.917969 4.1416 -2.2168 5.80078 -2.90039\nc13.2998 -4.2998 26.5996 -8.2998 39.8994 -12.5z\" />\n    <glyph glyph-name=\"critical-role\" unicode=\"&#xf6c9;\" \nd=\"M225.82 448c0.259766 -0.150391 216.569 -124.51 217.12 -124.72c3 -1.18066 3.69922 -3.45996 3.69922 -6.56055c-0.0732422 -83.4463 -0.0732422 -166.899 0 -250.359c0.00976562 -0.124023 0.0175781 -0.326172 0.0175781 -0.450195\nc0 -2.06836 -1.52148 -4.45703 -3.39746 -5.33008c-21.3701 -12 -207.859 -118.29 -218.93 -124.58h-3c-79.3301 45.6602 -218.25 125.44 -218.4 125.52c-1.04297 0.491211 -1.89062 1.8252 -1.89062 2.97754c0 0.0732422 0.00488281 0.19043 0.0107422 0.262695\nc0 0.870117 0 225.94 -0.0498047 253.101c-0.0078125 0.102539 -0.0136719 0.269531 -0.0136719 0.37207c0 1.78223 1.31836 3.82422 2.94336 4.55762c23.2607 13.0996 209.271 119.21 220.141 125.21h1.75zM215.4 427.58l-0.219727 0.158203\nc-64.7471 -36.8604 -129.474 -73.7305 -194.18 -110.61c0 -0.120117 0.0800781 -0.229492 0.129883 -0.349609l30.8604 -11.6406c-7.70996 -6 -8.32031 -6 -10.6504 -5.12988c-0.0996094 0 -24.1699 9.28027 -26.7998 10v-230.43\nc0.879883 1.41016 64.0703 110.91 64.1299 111c1.62012 2.82031 3 1.91992 9.12012 1.51953c1.40039 -0.0898438 1.47949 -0.219727 0.780273 -1.41992c-41.1904 -71.3301 -36.4004 -63 -67.4805 -116.939c-0.80957 -1.40039 -0.609375 -1.12988 1.25 -1.12988h186.5\nc1.44043 0 1.69043 0.229492 1.7002 1.63965v8.87988c0 1.33984 2.36035 0.810547 -18.3701 1c-7.45996 0.0703125 -14.1396 3.21973 -21.3799 12.7002c-7.37988 9.66016 -14.6201 19.4297 -21.8496 29.21c-2.28027 3.08008 -3.4502 2.37988 -16.7607 2.37988\nc-1.75 0 -1.7793 0 -1.75977 -1.82031c0.290039 -26.21 0.150391 -25.2695 1 -32.6592c0.520508 -4.37012 2.16016 -4.2002 9.69043 -4.81055c3.13965 -0.259766 3.87988 -4.08008 0.519531 -4.91992c-1.57031 -0.389648 -31.5996 -0.509766 -33.6699 0.0996094\nc-0.982422 0.269531 -1.78027 1.31543 -1.78027 2.33398c0 1.16016 0.931641 2.2334 2.08008 2.39648c3.29004 0.759766 6.16016 -0.80957 6.66016 4.44043c1.2998 13.6592 1.16992 9 1.09961 79.4199c0 10.8193 -0.349609 12.5801 -5.35938 13.5498\nc-1.21973 0.240234 -3.54004 0.160156 -4.69043 0.549805c-2.87988 1 -2 4.83984 1.77051 4.84961c33.6699 0 46.0801 1.07031 56.0596 -4.85938c7.74023 -4.61035 12 -11.4805 12.5098 -20.4004c0.880859 -14.5898 -6.50977 -22.3496 -15 -32.5898\nc-0.282227 -0.241211 -0.510742 -0.738281 -0.510742 -1.11035c0 -0.371094 0.228516 -0.868164 0.510742 -1.10938c2.60059 -3.25 5 -6.62988 7.70996 -9.83008c27.5605 -33.2305 24.1104 -30.54 41.2803 -33.0605c0.890625 -0.129883 1 0.419922 1 1.15039v11\nc0 1 0.320312 1.42969 1.41016 1.25977c2.98633 -0.454102 7.86133 -0.822266 10.8818 -0.822266c3.53223 0 9.2207 0.50293 12.6982 1.12207c1.08008 0.150391 1.5 -0.199219 1.47949 -1.33008c0 -0.109375 0.880859 -26.6895 0.870117 -26.7998\nc-0.0498047 -1.51953 0.669922 -1.62012 1.89062 -1.62012h186.71c-27.1533 47.0342 -54.2334 93.9746 -81.2402 140.821c2.25977 0.660156 -0.400391 0 6.69043 1.38965c2 0.390625 2.0498 0.410156 3.10938 -1.43945c7.31055 -12.6396 77.3105 -134 77.3701 -134.061\nv230.44c-1.71973 -0.5 -103.3 -38.7197 -105.76 -39.6797c-1.08008 -0.419922 -1.5498 -0.200195 -1.91016 0.879883c-0.629883 1.89941 -1.33984 3.75977 -2.08984 5.62012c-0.320312 0.790039 -0.0898438 1.12988 0.649414 1.38965\nc0.100586 0 95.5303 35.8496 103 38.7705c-65.4199 37.5693 -130.56 75 -196 112.6l86.8203 -150.39l-0.280273 -0.330078c-9.56934 0.899414 -10.46 1.59961 -11.7998 3.93945c-1 1.69043 -73.5 127.71 -82 142.16c-9.09961 -14.6699 -83.5596 -146.21 -85.3701 -146.32\nc-2.92969 -0.169922 -5.87988 -0.0800781 -9.25 -0.0800781c28.833 49.8271 57.5596 99.4941 86.1797 149.001zM267.331 297.658c1.54688 0.120117 4.02832 0.500977 5.54004 0.849609c1.68945 0.299805 2.53027 -0.200195 2.59961 -1.91992\nc0 -0.109375 0.0703125 -19.0596 -0.859375 -20.4502c-0.930664 -1.38965 -1.87988 -1.21973 -2.60059 0.19043c-5 9.68945 6.2207 9.66016 -39.1201 12c-0.699219 0 -1 -0.230469 -1 -0.929688c0 -0.130859 3.7207 -122 3.73047 -122.11\nc0 -0.889648 0.519531 -1.2002 1.20996 -1.50977c2.46484 -0.980469 6.3623 -2.79492 8.7002 -4.0498c7.30957 -4.33008 11.3799 -10.8408 12.4102 -19.3105c1.43945 -11.7998 -2.77051 -35.7695 -32.21 -37.1396c-2.75 -0.129883 -28.2607 -1.08008 -34.1406 23.25\nc-4.66016 19.2598 8.25977 32.7002 19.8906 36.3994c1.11035 0.202148 2.0127 1.28223 2.0127 2.41113c0 0.0683594 -0.00585938 0.180664 -0.0126953 0.249023c0.0996094 5.62988 3 107.101 3.70996 121.351c0.0498047 1.0791 -0.620117 1.15918 -1.35059 1.14941\nc-32.3496 -0.519531 -36.75 0.339844 -40.2197 -8.51953c-2.41992 -6.18066 -4.13965 -1.32031 -3.9502 -0.230469c1.05957 6 2.16309 12 3.31055 18c0.399414 2.11035 1.42969 2.61035 3.42969 1.86035c5.58984 -2.11035 6.71973 -1.7002 37.25 -1.91992\nc1.72949 0 1.78027 0.0800781 1.82031 1.84961c0.679688 27.4902 0.579102 22.5898 1 29.5498c0.00976562 0.0878906 0.0185547 0.231445 0.0185547 0.320312c0 0.986328 -0.738281 2.09766 -1.64941 2.48047c-5.59961 2.90918 -8.75 7.5498 -8.89941 13.8691\nc-0.350586 14.8105 17.7197 21.6699 27.3799 11.5107c6.83984 -7.19043 5.7998 -18.9102 -2.4502 -24.1504c-1.24316 -0.68457 -2.25195 -2.3916 -2.25195 -3.81055c0 -0.146484 0.0146484 -0.383789 0.0322266 -0.529297c0 -0.589844 -0.110352 4.30957 1 -30.0498\nc0 -0.900391 0.429688 -1.12012 1.24023 -1.11035c0.0996094 0 23 0.0898438 34.4697 0.370117zM68.2705 306.298c19.8408 4.50977 32.6807 0.560547 52.4902 -1.68945c2.75977 -0.310547 3.74023 -1.2207 3.62012 -4c-0.209961 -5 -1.16016 -22.3301 -1.24023 -23.1504\nc-0.0371094 -0.932617 -0.767578 -1.98145 -1.62988 -2.33984c-4.05957 -1.7002 -3.60938 4.4502 -4 7.29004c-3.12988 22.4297 -73.8701 32.7002 -74.6299 -25.4004c-0.30957 -23.9199 17 -53.6299 54.0801 -50.8799c27.2402 2 19 20.1904 24.8398 20.4697\nc0.0996094 0.0136719 0.261719 0.0244141 0.362305 0.0244141c1.50195 0 2.7207 -1.21875 2.7207 -2.71973c0 -0.186523 -0.0371094 -0.483398 -0.0830078 -0.664062c-1.83008 -10.8506 -3.41992 -18.9502 -3.4502 -19.1504\nc-1.54004 -9.16992 -86.6992 -22.0898 -93.3496 42.0605c-2.70996 25.8496 10.4404 53.3691 40.2695 60.1494zM148.271 218.628h-19.4893c-0.0576172 -0.00488281 -0.151367 -0.00878906 -0.208984 -0.00878906c-1.04102 0 -2.13867 0.805664 -2.45117 1.79883\nc2.37988 3.75 5.88965 -0.919922 5.86035 6.13965c-0.0800781 25.75 0.209961 38 0.229492 40.1006c0 3.41992 -0.530273 4.64941 -3.32031 4.93945c-7 0.720703 -3.10938 3.37012 -1.10938 3.38086c11.8398 0.0996094 22.6201 0.179688 30.0498 -0.720703\nc8.76953 -1.06934 16.71 -12.6299 7.92969 -22.6201c-2 -2.25 -4 -4.41992 -6.13965 -6.72949c0.950195 -1.15039 6.89941 -8.82031 17.2803 -19.6797c2.65918 -2.78027 6.14941 -3.51074 9.87988 -3.13086h0.0214844c1.1709 0 2.16016 0.950195 2.20801 2.12012\nc0.299805 3.41992 0.259766 -4.72949 0.450195 40.5801c0 5.65039 -0.339844 6.58008 -3.22949 6.83008c-3.9502 0.350586 -4 2.25977 -0.69043 3.37012l19.0898 0.0898438c0.320312 0 4.49023 -0.530273 1 -3.37988c0 -0.0498047 -0.160156 0 -0.240234 0\nc-3.60938 -0.259766 -3.93945 -1 -4 -4.62012c-0.269531 -43.9297 0.0703125 -40.2295 0.410156 -42.8203c0.110352 -0.839844 0.270508 -2.22949 5.10059 -2.13965c2.48926 0 3.85938 -3.37012 0 -3.39941c-10.3701 -0.0800781 -20.7402 0 -31.1104 -0.0703125\nc-10.6699 0 -13.4697 6.2002 -24.21 20.8203c-1.59961 2.17969 -8.31055 2.35938 -8.2002 0.369141c0.879883 -16.4697 0 -17.7793 4 -17.6699c4.75 0.100586 4.73047 -3.56934 0.830078 -3.5498h0.0595703zM423.271 228.778\nc-1.20996 -7.12988 0.170898 -10.3799 -5.2998 -10.3398c-61.5498 0.419922 -47.8193 0.219727 -50.7197 0.30957c-1.02246 0.100586 -2.64844 0.426758 -3.62988 0.730469c-2.53027 0.599609 1.47949 1.22949 -0.379883 5.59961\nc-1.43066 3.37012 -2.78027 6.78027 -4.11035 10.1895c-0.210938 0.797852 -1.05078 1.44434 -1.875 1.44434c-0.0351562 0 -0.0908203 -0.00195312 -0.125 -0.00390625c-1.82812 0.0878906 -4.79785 0.15918 -6.62793 0.15918\nc-2.19727 0 -5.75879 -0.102539 -7.95215 -0.229492c-0.587891 -0.0771484 -1.31348 -0.551758 -1.62012 -1.05957c-1.58008 -3.62012 -3.06934 -7.29004 -4.50977 -11c-1.26953 -3.23047 7.86035 -1.32031 12.1904 -2.16016c3 -0.570312 4.5293 -3.71973 0.65918 -3.72949\nh-26.3691c-2.91992 0 -3.09082 3.14941 -0.740234 3.20996c0.0791016 -0.00390625 0.208008 -0.00683594 0.288086 -0.00683594c2.14648 0 4.66992 1.55762 5.63184 3.47656c1.5 3 2.7998 6 4.11035 9.08984c18.1797 42.1396 17.0596 40.1699 18.4199 41.6104\nc0.300781 0.431641 0.973633 0.78125 1.5 0.78125s1.19824 -0.349609 1.5 -0.78125c2.92969 -3.33984 18.3994 -44.71 23.6201 -51.9199c2 -2.7002 5.73926 -2 6.35938 -2c3.61035 -0.130859 4 1.10938 4.12988 4.29004\nc0.0898438 1.86914 0.0800781 -1.1709 0.0703125 41.2393c0 4.45996 -2.36035 3.74023 -5.5498 4.27051c-0.259766 0 -2.56055 0.629883 -0.0800781 3.05957c0.209961 0.200195 -0.890625 0.240234 21.7002 0.150391c2.31934 0 5.31934 -2.75 -1.20996 -3.4502\nc-0.0322266 0.000976562 -0.0830078 0.00292969 -0.115234 0.00292969c-1.41309 0 -2.55957 -1.14746 -2.55957 -2.56055c0 -0.0751953 0.00683594 -0.197266 0.0146484 -0.272461c-0.0703125 -1.62988 -0.19043 -38.8896 0.290039 -41.21\nc0.27832 -1.34668 1.62109 -2.43848 2.99609 -2.43848c0.0644531 0 0.168945 0.00390625 0.233398 0.00878906c13.25 -0.430664 14.9199 -0.44043 16 3.41016c1.66992 5.7793 4.12988 2.51953 3.73047 0.189453zM318.551 164.408\nc-4.24023 0 -4.41992 3.38965 -0.609375 3.41016c35.9092 0.160156 28.1094 -0.379883 37.1895 0.649414c1.67969 0.19043 2.37988 -0.239258 2.25 -1.88965c-0.259766 -3.38965 -0.639648 -6.78027 -1 -10.1602c-0.25 -2.16016 -3.2002 -2.61035 -3.39941 0.150391\nc-0.380859 5.30957 -2.15039 4.44922 -15.6309 5.08008c-1.58008 0.0693359 -1.63965 0 -1.63965 -1.52051v-16.1299c0 -1.65039 0 -1.59961 1.62012 -1.46973c3.12012 0.25 10.3096 -0.339844 15.6895 1.51953c0.470703 0.160156 3.30078 1.79004 3.07031 -1.75977\nc0 -0.209961 -0.759766 -10.3496 -1.17969 -11.3896c-0.530273 -1.29004 -1.87988 -1.51074 -2.58008 -0.320312c-1.16992 2 0 5.08008 -3.70996 5.2998c-15.4199 0.900391 -12.9102 2.5498 -12.9102 -6c0 -12.25 -0.759766 -16.1104 3.88965 -16.2402\nc16.6406 -0.479492 14.4004 0 16.4307 5.70996c0.839844 2.37012 3.5 1.77051 3.17969 -0.580078c-0.44043 -3.20996 -0.849609 -6.42969 -1.22949 -9.63965c0 -0.360352 -0.160156 -2.39941 -4.66016 -2.38965c-37.1602 0.0800781 -34.54 0.189453 -35.21 0.30957\nc-2.7207 0.509766 -2.2002 3 0.219727 3.4502c1.09961 0.19043 4 -0.540039 4.16016 2.55957c2.43945 56.2207 -0.0703125 51.3408 -3.91016 51.3301zM318.141 273.928c2.45996 -0.609375 3.12988 -1.75977 2.9502 -4.64941\nc-0.330078 -5.2998 -0.339844 -9 -0.549805 -9.69043c-0.660156 -2.22949 -3.15039 -2.12012 -3.33984 0.270508c-0.379883 4.80957 -3.0498 7.81934 -7.57031 9.14941c-26.2803 7.73047 -32.8096 -15.46 -27.1699 -30.2197c5.87988 -15.4102 22 -15.9199 28.8604 -13.7803\nc5.91992 1.85059 5.87988 6.5 6.91016 7.58008c1.22949 1.2998 2.25 1.83984 3.11914 -1.09961c0 -0.100586 0.570312 -11.8906 -6 -12.75c-1.59961 -0.209961 -19.3799 -3.69043 -32.6797 3.38965c-21 11.1904 -16.7402 35.4697 -6.87988 45.3301\nc14 14.0596 39.9102 7.05957 42.3203 6.46973h0.0292969zM289.801 167.858c3.28027 0 3.66016 -3 0.160156 -3.43066c-2.61035 -0.319336 -5 0.419922 -5 -5.45996c0 -2 -0.19043 -29.0498 0.400391 -41.4502c0.109375 -2.28906 1.14941 -3.51953 3.43945 -3.64941\nc22 -1.20996 14.9502 1.64941 18.79 6.33984c1.83008 2.24023 2.75977 -0.839844 2.75977 -1.08008c0.350586 -13.6201 -4 -12.3896 -5.18945 -12.3994l-38.1602 0.189453c-1.92969 0.230469 -2.05957 3 -0.419922 3.37988c2 0.480469 4.93945 -0.399414 5.12988 2.7998\nc1 15.8701 0.570312 44.6504 0.339844 47.8105c-0.269531 3.76953 -2.7998 3.26953 -5.67969 3.70996c-2.46973 0.379883 -2 3.21973 0.339844 3.21973c1.4502 0.0205078 17.9697 0.0302734 23.0898 0.0205078zM258.171 225.648\nc0.0703125 -4.08008 2.86035 -3.45996 6 -3.58008c2.61035 -0.100586 2.53027 -3.41016 -0.0703125 -3.43066c-6.47949 0 -13.6992 0 -21.6094 0.0605469c-3.83984 0 -3.37988 3.34961 0 3.37012c4.49023 0 3.24023 -1.61035 3.41016 45.54\nc0 5.08008 -3.27051 3.54004 -4.7207 4.22949c-2.58008 1.23047 -1.35938 3.08984 0.410156 3.15039c1.29004 0 20.1904 0.410156 21.1699 -0.209961c0.980469 -0.620117 1.87012 -1.65039 -0.419922 -2.86035c-1 -0.519531 -3.85938 0.280273 -4.14941 -2.46973\nc0 -0.209961 -0.820312 -1.62988 -0.0703125 -43.7998h0.0498047zM221.261 -48.6221c0.408203 -0.273438 1.13867 -0.495117 1.62988 -0.495117c0.492188 0 1.22168 0.22168 1.62988 0.495117c17 9.79004 182 103.57 197.421 112.51\nc-0.140625 0.430664 11.2598 0.180664 -181.521 0.270508c-1.21973 0 -1.57031 -0.370117 -1.53027 -1.56055c0 -0.0996094 1.25 -44.5098 1.2207 -50.3799c-0.0791016 -2.17969 -0.688477 -5.63379 -1.36035 -7.70996c-0.549805 -1.83008 0.379883 0.5 -13.5 -32.2295\nc-0.730469 -1.7207 -1 -2.20996 -2 0.0800781c-4.19043 10.3398 -8.28027 20.7197 -12.5703 31c-1.12109 2.52441 -2.03125 6.81543 -2.03125 9.57812c0 0.333984 0.0146484 0.876953 0.03125 1.21191c0.160156 2.45996 0.800781 16.1191 1.51074 48c0 1.94922 0 2 -2 2\nh-183c2.5791 -1.63086 178.319 -102.57 196 -112.761zM130.361 140.128c0 -2.39941 0.359375 -2.79004 2.75977 -3c11.54 -1.16992 21 -3.74023 25.6396 7.32031c6 14.46 2.66016 34.4102 -12.4795 38.8398c-2 0.589844 -16 2.75977 -15.9404 -1.50977\nc0.0498047 -8.04004 0.00976562 -11.6104 0.0205078 -41.6504zM236.111 155.178c0 -2.12988 1.06934 -38.6797 1.08984 -39.1299c0.339844 -9.93945 -25.5801 -5.76953 -25.2305 2.58984c0.0800781 2 1.37012 37.4199 1.10059 39.4307\nc-14.1006 -7.44043 -14.4199 -40.21 6.43945 -48.8008c1.88184 -0.816406 5.0752 -1.47949 7.12695 -1.47949c5.53418 0 12.3721 3.83008 15.2637 8.5498c4.90918 7.75977 6.83984 29.4697 -5.43066 39c-0.0966797 -0.0400391 -0.257812 -0.09375 -0.359375 -0.120117\nv-0.0400391zM223.831 353.178c-9.83008 0 -9.73047 -14.75 -0.0703125 -14.8701c9.66016 -0.119141 10.1006 14.8809 0.0703125 14.9102v-0.0400391zM143.681 249.348c0 -1.7998 0.410156 -2.39941 2.16992 -2.58008c13.6201 -1.38965 12.5107 11 12.1602 13.3604\nc-1.68945 11.2197 -14.3799 10.2002 -14.3496 7.81055c0.0498047 -4.5 -0.0302734 -13.6807 0.0195312 -18.5908zM356.001 242.948l-6.09961 15.8398c-2.16016 -5.48047 -4.16016 -10.5703 -6.23047 -15.8398h12.3301z\" />\n    <glyph glyph-name=\"d-and-d-beyond\" unicode=\"&#xf6ca;\" horiz-adv-x=\"640\" \nd=\"M313.8 206.5c-9.89941 0 -16 7 -15.7002 7.09961c-4.2998 5.7002 -3 -0.299805 -2.39941 -1.89941c-10.9004 10.2998 -5.2998 25.3994 -5.10059 26c0.700195 1.89941 0 2.2002 -0.599609 1.89941c-1 -0.299805 -2.09961 -1.89941 -2.09961 -1.89941\nc0.799805 9.09961 9.2998 14.7002 9.2998 14.7002l0.200195 -0.200195c1 -1.5 -0.400391 -3.2002 -0.600586 -9c1.60059 2.2998 7.90039 6.59961 11.4004 7.89941c-1.10059 -1.5 -2.10059 -3.59961 -2.10059 -6.59961c3.7002 4.2002 7.5 2.59961 8 2.40039\nc-12.1992 -11.9004 -7 -26.6006 3.2002 -26.6006c5.7002 0 11.5 6.40039 13.9004 10.7002c2.39941 -2.40039 6.39941 -5.5 7.39941 -6.59961c-3.7998 -7.80078 -11 -17.9004 -24.7998 -17.9004zM366.2 227.6c0 -2.89941 -2.90039 -4.09961 -5.40039 -4.5\nc0.700195 1.5 1.7998 5.10059 -0.200195 9c0.700195 -0.0996094 5.60059 -0.5 5.60059 -4.5zM376.5 222.4c-0.400391 -6.5 -6.90039 -11.6006 -14.5996 -10.6006c2 -1.7002 6.59961 -3 9 -1.89941c-3.90039 -6.90039 -23.1006 -7.5 -23.1006 6.39941\nc-2.89941 -2.89941 -2.09961 -7.39941 0 -9.2998c-2.2002 0.700195 -5.7998 3.09961 -6.39941 7.40039c-1.30078 10.0996 4.39941 6.5 -10.4004 18.0996c-4.7998 3.7002 -3 6.59961 -4 8.5c-1.09961 2.2002 -7 4.09961 -4.5 8.5\nc-0.0996094 -1.59961 1 -2.90039 2.59961 -3.5c1.80078 -0.700195 3.2002 -0.200195 4.80078 -1c1.69922 -1.2002 0.899414 -3.90039 2.19922 -5c1.10059 -0.799805 4.2002 0.299805 6.60059 -1.7998c2.59961 -2 8.2002 -6.7002 10.5996 -8.60059\nc4.40039 -3.59961 8.7998 0.400391 7.40039 4.60059c4.5 -2.60059 5 -9.90039 1.2998 -12.5c10.5996 -2.40039 13 10.0996 5 11.3994c7.2998 0.700195 13.5 -4.2998 13.5 -10.6992zM337.1 240.8c4.30078 6.10059 13.3008 15.2998 23.8008 15.7998\nc-5.90039 0.800781 -15.1006 -3.19922 -19.7002 -9c0.899414 3.90039 5.09961 10.1006 10.2002 13c0 0 -2.5 -3.19922 -1.40039 -3.69922c1.59961 -0.800781 5.7998 5.69922 11.2002 5.89941c0 0 -4 -2 -3.2002 -3.39941c0.599609 -0.900391 3.2998 1.2998 8 1.2998\nc5.7998 0 10.9004 -3.5 13.2998 -6.2002c-4 1.09961 -11.5996 -0.799805 -13.7998 -2.7002c-0.299805 0.200195 -11.7998 9 -22 -15.5c-4.7998 3.7998 -4.40039 3.7002 -6.40039 4.5zM579.6 188.9c37.2002 0 60.4004 -19.6006 60.4004 -48.9004\nc0 -28.2002 -17 -48.9004 -59.0996 -48.9004c-20.7002 0 -41.2002 1.30078 -51.6006 2.10059l7.40039 8.2002v77.1992l-7.40039 8.2002c10.2998 0.799805 29.6006 2.10059 50.2998 2.10059zM564.5 113.3c25.4004 -3.2002 46.7998 1.40039 46.7998 27\nc0 22.5 -16.7002 29.6006 -46.7998 26.2998v-53.2998zM301.6 267c0.100586 -0.299805 -2.7998 2.2998 -3.2998 7.5c-0.200195 2.2998 0 19.7998 20 18.9004c11.2002 -0.600586 16.7002 -8.30078 16.7002 -16.5c0 -4.30078 -2.2998 -10.1006 -5.5 -13.8008\nc-2.2002 2.2002 -5.59961 4.60059 -7.7002 7.80078c3.7998 5.59961 2.2002 14.3994 -4.7002 14.3994c-4.2998 0 -7.7998 -4.5 -6.39941 -9.89941c-0.700195 -2.40039 -1 -5.60059 -0.5 -8c-4.90039 2.59961 -6.5 6 -7.5 9c-1.2998 -2.5 -2.10059 -6 -1.10059 -9.40039z\nM301.2 261c0.299805 1.7002 -3.10059 4.59961 -4.7998 5.2002c4.7998 0.200195 7 -0.600586 7 -0.600586c-1.30078 1.7002 -1.60059 4.5 -1 6.7002c2.5 -6.09961 11.6992 -7.09961 13.8994 -12.2002c-0.299805 2.30078 -2.39941 4.7002 -4.7998 6.10059\nc-1.2998 3.2002 -0.299805 9.39941 1.2998 11c-0.5 -8.7998 12 -13.7998 14.6006 -20.2002c-1.40039 5.5 -7.40039 9 -10.1006 12.2002c-1 2.09961 -0.200195 5.7998 0.799805 7.09961c-0.5 -9.7002 15.8008 -14.2998 14.1006 -23.8994\nc0.899414 -0.400391 2.09961 -1.2002 1.89941 -2.60059c1.30078 0.299805 2.60059 1.7002 2.90039 2.7002c0.700195 -4.5 -1.90039 -9 -4.7998 -10.4004c1.59961 4 -2.7002 5.60059 -6.7002 5.10059c0 0 1.59961 2.2998 1 3.39941\nc-0.799805 1.5 -8 0.800781 -11.2002 -0.299805c1.10059 0.100586 3.60059 -0.200195 4.60059 -0.5c-2.10059 -2.89941 -1 -7.09961 1.2998 -4.2002c0 0 -1.10059 -3.5 -0.299805 -4.2998c0.799805 -0.799805 2.59961 -0.200195 2.59961 -0.200195\nc-1.2002 -2.69922 -5.2998 -4.59961 -8.2002 -4.59961c1.10059 0.400391 2.7002 2.2998 3 3.40039c-0.799805 -0.5 -2.7002 -0.700195 -3.5 -0.5c6.10059 3 0 13.1992 -7 8.19922c1 2.7002 3.7002 5.30078 5.7998 6.10059c-1.2998 0.5 -2.69922 0.799805 -4.2998 1.09961\nc1.7998 1.5 6.2998 2.7998 8.5 2.60059c-3.5 0.799805 -9.89941 -0.300781 -12.7998 -3.7002c0.900391 0 3.2998 -0.5 4.2998 -0.799805c-4 -0.700195 -9.39941 -4.40039 -11 -6.2002c0.299805 2.2002 1 4.2002 0.5 5.59961c-0.799805 2 -3 2.7998 -7.7998 1.7998\nc3.2002 3.2002 9.7002 5.10059 10.2002 6.90039zM327.1 253.6c0 0 -0.899414 3 -4.19922 4.30078c0.699219 -2.2002 1.5 -4.30078 4.19922 -4.30078zM366 249.9l0.700195 0.699219c0.5 0.400391 1.59961 0.900391 2.7002 1.40039v-18.4004\nc-1.7002 0.800781 -3.5 1.10059 -5.60059 1.10059c-2.39941 0 -5 -0.5 -5 -0.5c-0.5 0.5 -3.59961 2.89941 -5.09961 3.2002c4.09961 -4.30078 0.5 -9.80078 -3 -7.2002v15.7002c0.700195 0.799805 1.2998 1.7998 2.09961 2.59961\nc1.7002 2.09961 4.60059 3.40039 7.5 3.40039c1.7998 0 3.60059 -0.400391 4.7002 -1.40039zM79.9004 142.1c22 -6.39941 19.3994 -20.0996 19.3994 -25.1992c0 -7.80078 -3.2002 -13.6006 -9.89941 -17.6006c-12.6006 -7.39941 -24.7002 -5.89941 -86.4004 -5.89941\nl8.40039 8.59961v32.2998l-11.4004 14.6006h11.2998v29.5l-8.2998 8.59961h56.0996c12.9004 0 37 -4.40039 37 -25c0 -1.90039 1 -15.2998 -16.1992 -19.9004zM38.5996 169.6v-20.8994c10.6006 0 29.6006 -3.2998 29.6006 8.7998v3\nc0 9.90039 -9.60059 9.09961 -29.6006 9.09961zM38.5996 110.4c20.4004 0 32.9004 -1.90039 32.9004 9.2998h-0.200195v4.5c0 11.0996 -20.5 8.7998 -32.7002 8.7998v-22.5996zM139.8 129.7v-15.4004l60.1006 0.200195l-14.1006 -21.2002h-81.2002l7.40039 8.2002v77.0996\nl-7.40039 8.2002l73.5 0.200195v-0.200195l14.1006 -21h-52.4004v-14.8994h37.2002l-14.0996 -21.2002v-0.200195zM354.5 189.8c73.7998 0 77.5996 -99.2998 -0.299805 -99.2998c-77.2002 0 -73.6006 99.2998 0.299805 99.2998zM354.2 112.3\nc39 0 37 55.2002 0.200195 55.2998c-37.1006 0 -37.6006 -55.2998 -0.200195 -55.2998zM262.9 120.6l0.199219 -19l7.2002 -8.19922h-42.5996l7.7002 8.19922l-0.200195 19.4004l-44.1006 65.7998h44.9004l-6.40039 -7.2002l21 -37.1992h0.300781l20.5 37.1992\nl-6.10059 7.2002h41.7002zM234.5 271.9c-9.09961 6.69922 -9.5 14.0996 -9.59961 14.8994c7.2998 -4.2998 9 -4 39.8994 -4c-5.7998 0 24 3.10059 32.2002 -22.8994c-0.400391 0 -8.40039 -4.80078 -10.4004 -7.90039c5.30078 1.90039 8.90039 1.09961 9 1.09961\nc-8 -5.09961 -9.59961 -14.7998 -9.59961 -20.5c0.900391 2.10059 2.7002 3.7002 2.7002 3.5c-0.600586 -2.5 -1.40039 -7 -0.799805 -12c-8.60059 -7.09961 -16 -8.59961 -26 -8.59961h-35.1006c0.400391 0.0996094 7.7998 4.5 7.90039 4.59961\nc1.89941 1.10059 2.7002 2.2002 2.7002 6.40039v38.7998c0 4.2002 -1.30078 5.2998 -2.90039 6.60059zM256 266.4v-34.6006c4.7002 0 23.0996 -3.39941 23.0996 17.2998c0 20.6006 -18.5 17.3008 -23.0996 17.3008zM484.9 186.8l39.1992 -0.0996094l-7.39941 -8.2998\nv-85.2002h-21.2998c-4 12.7002 -44.8008 45 -48.5 55.5996h-0.300781v-47.3994l7.40039 -8.2002h-39l7.2002 8.2998v76.9004l-7.40039 8.5h31.6006c2.89941 -9.40039 39.7998 -36.5 45.1992 -50.9004h0.300781v42.5zM378.2 282.9\nc32.7002 -1.60059 33.7998 -29.8008 33.7998 -33.6006c0 -6.7002 -3.2998 -34 -36.7002 -34h-0.299805c3.59961 4.2998 3.5 11.9004 -2.2002 16.2998c1.2002 0 19.7002 -3.19922 19.7002 17.3008c0 20.6992 -18.4004 17.2998 -23.0996 17.2998v-4.2998\nc-5.40039 0.799805 -7.40039 -0.300781 -7.5 -0.300781c2.09961 1.80078 4.5 2.60059 6.09961 2.90039c-7.09961 1.59961 -13.5996 -2.40039 -14.5996 -3.5c0.799805 1.7998 2.39941 3.40039 3.5 4.5c-2.30078 -0.799805 -4.30078 -1.90039 -6.10059 -3\nc0 5.2002 0.200195 7.5 -2.89941 9.5c-9.10059 6.59961 -9.5 14.2002 -9.60059 14.9004c7.10059 -4.2002 7.7002 -4 39.9004 -4z\" />\n    <glyph glyph-name=\"dev\" unicode=\"&#xf6cc;\" \nd=\"M120.12 239.71c3.87012 -2.90039 5.82031 -7.25977 5.83008 -13.0596v-69.6504c0 -5.80957 -1.94043 -10.1602 -5.82031 -13.0596c-3.87988 -2.90039 -7.76953 -4.35059 -11.6494 -4.35059h-17.4502v104.47h17.4395c3.87988 0 7.77051 -1.44922 11.6504 -4.34961z\nM404.1 416c24.2002 0 43.8408 -19.5898 43.9004 -43.7998v-360.4c-0.0595703 -24.21 -19.6904 -43.7998 -43.9004 -43.7998h-360.199c-24.2002 0 -43.8408 19.5898 -43.9004 43.7998v360.4c0.0595703 24.21 19.7002 43.7998 43.9004 43.7998h360.199zM154.2 156.81\nl-0.00976562 70.9307c-0.0107422 18.8193 -11.9307 47.2793 -47.3701 47.2793h-47.3799v-165.46h46.3994c36.75 -0.0595703 48.3604 28.4404 48.3604 47.25zM254.88 245.47l0.00976562 29.5205h-63.1895c-11.1504 -0.280273 -19.9805 -9.54004 -19.71 -20.6904v-125.109\nc0.279297 -11.1602 9.55957 -19.9805 20.7197 -19.6904h62.1797v29.5703h-53.29v38.4102h32.5703v29.5693h-32.5703v38.4199h53.2803zM358.52 130.18l38.4609 144.801h-32.5801l-29.5703 -113.721l-29.71 113.721h-32.5703l38.5303 -144.801\nc10.5898 -24.6299 34.2402 -30.75 47.4395 0z\" />\n    <glyph glyph-name=\"fantasy-flight-games\" unicode=\"&#xf6dc;\" horiz-adv-x=\"512\" \nd=\"M256 415.14l223.14 -223.14l-223.14 -223.14l-223.14 223.14zM88.3398 192.17c11.3447 -11.2461 29.7705 -29.4893 41.1299 -40.7197c20.1602 19.8799 40.46 39.8994 61.8506 60.9902c12.0596 -12.5801 24.5195 -25.5703 36.54 -38.1104\nc12.0293 11.6895 23.7393 23.0596 35.6895 34.6602c-6.99023 7.4502 -32.1494 32.8301 -35.0898 35.7793c-1.91016 1.9209 -2.29004 3.2207 -0.120117 5.35059c15.5801 15.2295 39.21 17.79 56.9805 5.09961c7.98926 -5.70996 14.2998 -11.6396 48.5098 -43.9502\nc10.8203 11.1504 22.2295 22.8506 33.5 34.6904c0.490234 0.520508 0.0996094 2.63965 -0.580078 3.37988c-0.0898438 0.100586 -37.5195 40.6006 -62.1504 59c-33.5801 25.0801 -78.3193 23.0605 -119.77 -18.6895c-84.5703 -85.1807 -94.5303 -95.4805 -96.4902 -97.4805z\nM323.16 90.5703c18.8203 18.79 80.3301 80.6396 100.5 101.5c-13.7305 13.4492 -27.1797 26.6299 -40.8604 40.0293c-20.0098 -19.7393 -40.2402 -39.6895 -61.25 -60.4199c-12.3301 12.8301 -24.8799 25.8799 -37.25 38.75\nc-1.25977 -0.689453 -1.64941 -0.80957 -1.91016 -1.06934c-10.7295 -10.7705 -21.4199 -21.5801 -32.21 -32.29c-2.22949 -2.20996 -0.519531 -3.35059 0.800781 -4.69043c10.5791 -10.7402 21.1797 -21.4502 31.7695 -32.1797\nc3.5498 -3.60059 3.54004 -3.85059 -0.139648 -7.24023c-16.8008 -15.4697 -40.8408 -16.54 -59.3203 -1.7998c-7.62012 6.08008 -11.6602 10.1797 -44.6797 42.0898c-11.5801 -11.8896 -23.3203 -23.9404 -35.3701 -36.3096\nc33.5498 -34.7607 50.8496 -53.3408 72.9297 -66.8408c28.9004 -17.6699 71.5 -14.96 106.99 20.4707zM256 448l256 -256l-256 -256l-256 256zM16 192l240 -240l240 240l-240 240z\" />\n    <glyph glyph-name=\"penny-arcade\" unicode=\"&#xf704;\" horiz-adv-x=\"640\" \nd=\"M421.91 283.73c7.33984 -16.2705 2.29004 -5.07031 24.6299 -54.6807l-39.7305 -10.6094c13.7002 59.2295 10.6104 45.8398 15.1006 65.29zM215.82 232.62c32.5 8.99023 41.9492 -37.6396 -0.350586 -47.4297c-14.2002 -3.77051 -6.64941 -1.75 -34.8193 -9.34082\nl-4.45996 46.1904c28.3193 7.5498 19.4395 5.17969 39.6299 10.5801zM541.98 258.81c75.7998 -37.9092 98 -76.3193 97.9893 -104.47c2.10059 -78.8496 -183.3 -130.33 -399.89 -84.8301c0.540039 -13 -8.00977 -24.6494 -20.5801 -28.0195\nc-125.54 -33.54 -117.35 -31.75 -122.53 -31.7598c-14.3701 -0.0107422 -26.4102 10.8896 -27.7998 25.1992l-4.2998 44.4805c-0.0683594 0.724609 -0.125 1.90332 -0.125 2.63184c0 10.5811 8.01758 22.2461 17.8945 26.0381l-1.73926 17.8799\nc-50.2305 28.2598 -80.9004 61.8701 -80.9004 95.3701c0 72.9199 144.26 113.4 309.41 98.3701c2.68945 7.54395 11.1514 15.3438 18.8896 17.4102c96.8701 25.9092 65.3203 17.4795 135.59 36.2295c13.1602 3.50977 26.9307 -2.95996 32.6201 -15.3301zM255.14 149.7\nc17.5 4.0498 40.2363 19.1562 50.75 33.7197c21.6006 32.5898 14.1104 105.561 -42.5498 104.43c-16.04 -0.229492 -8.07031 0.890625 -186.22 -46.6494l4.34961 -44.5l20.1201 5.38965l11.1104 -114.64l-20.0205 -5.35059l4.30078 -44.5195l115.31 30.7803\nl-4.50977 44.5098l-20.5303 -5.50977l-2.45996 23.5498l48.4404 12.9102zM454.32 133.08l108.55 28.96l-4.2998 44.4795l-20.79 -5.55957l-66.6699 145.47c-70.5801 -18.8301 -42.2305 -11.25 -135.591 -36.2393l4.2002 -44.4805l17.1504 4.55957l-33.0801 -126.47\nl-20.9902 -5.58984l4.45996 -44.4297l112.851 30.0693l-4.05078 39.54l-19.1992 -5.12012l4.09961 17.54l57.7598 15.4209l6.61035 -14.6807l-14.9004 -3.97949z\" />\n    <glyph glyph-name=\"wizards-of-the-coast\" unicode=\"&#xf730;\" horiz-adv-x=\"640\" \nd=\"M219.19 102.31c7.44922 5.80078 16.2598 0.680664 21.7295 -7.0791c7.08984 -10.1201 6.24023 -18.1602 -0.259766 -23.04c-7.62012 -6.24023 -17.0898 0.129883 -21.7305 6.5498c-10.8096 15.1299 -1.63965 22.1895 0.260742 23.5693zM555.94 26.3701\nc1.30957 4.4502 3.92969 10.21 3.93945 20.1699c0 34.04 -41.6299 64.4102 -100.03 68.0801c-53.1592 3.39941 -120.46 -15.4502 -184.35 -73.8506l-0.790039 0.260742c1.58008 10.4697 -0.780273 16.2295 -3.40039 21.21l0.260742 1.56934\nc64.4199 51.3203 134.069 66.5107 188.8 60.4902c61.0098 -6.54004 104.479 -39.54 101.34 -78.0303c-0.790039 -9.68945 -2.88965 -15.71 -4.97949 -19.8994c-1.34082 -1.66992 -1.13086 -1.7002 -0.790039 0zM392.28 207.58\nc-0.530273 7.07031 3.13965 11.7803 6.7998 15.46c3.66992 3.91992 14.9297 10.4697 14.9297 10.4697s-1.2998 -26.4502 -2.08984 -29.8496c-1.04004 -3.92969 -4.96973 -6.81055 -10.4697 -6.5498c-4.98047 0.259766 -8.37988 3.39941 -9.16992 10.4697zM342.26 358.68\nc147.17 0 275.48 -86.6797 291.21 -196.939c0 0 -3.66992 -1.31055 -9.68945 -4.4502c0 -0.259766 1.0498 -10.7402 0.259766 -16.5c-0.259766 -1.83008 -1.0498 -1.0498 -1.0498 0c-0.270508 5.24023 -1.57031 11.5303 -2.36035 14.9297\nc-4.70996 -2.60938 -10.21 -6.54004 -15.9697 -11.7793c0 0 4.70996 -10.21 4.70996 -25.9209c0 -21.21 -8.37988 -32.9893 -16.5 -37.9697l-0.259766 0.520508c9.16992 9.16992 12.5693 21.4795 12.5693 31.9492c0 13.8701 -6.80957 33.25 -14.3994 41.3701\nc0 0 4.4502 -8.12012 6.80957 -17.8096c0 0 -21.21 -21.4697 -26.9697 -62.3203c0 0 -3.66992 9.16992 -10.7402 16.2402c0 0 12.0498 -15.4502 12.0498 -38.2305c0 -19.3799 -12.8398 -37.4395 -27.5 -48.1797c-0.989258 0 -0.790039 -0.169922 -0.790039 0.790039\nc15.71 12.8301 22.2607 28.0205 22.2607 46.3506c0 38.2295 -49.2305 80.3896 -130.15 80.3896c-96.1104 0 -181.74 -58.1299 -236.99 -128.05l-1.0498 0.259766c-40.3203 120.979 -135.64 185.66 -196.13 202.16c-2.09961 0.519531 -1.83984 0.790039 -0.790039 1.30957\nc12.3096 14.4004 136.96 151.88 341.47 151.88zM243.02 69.0596c16.8408 14.5908 4.99023 30.7705 4.71094 31.1602c-4.08008 5.99023 -16.3105 16.8506 -31.1602 5.5c-10.9502 -8.37988 -11.6406 -22.8896 -4.19043 -32.4697\nc6.44043 -8.26953 19.5801 -13.1797 30.6396 -4.19043zM245.11 205.49l1.83008 -8.11035l-3.6709 4.4502l-14.1396 -26.71l24.6201 -28.7998l12.5703 6.01953l-11.7803 70.96zM263.7 87.9102c3.41016 2.35938 7.33984 4.97949 9.67969 6.57031l-0.259766 0.259766\nc-1.56055 -0.780273 -3.11035 -1.0498 -12.5703 15.9697v0.259766c6.87012 5.16016 8.45996 4.89062 11.5205 5.5l0.259766 0.260742c-1.31055 3.66992 -1.31055 3.66992 -1.83008 5.5h-0.259766c-3.95996 -3.31055 -1.4707 -1.58008 -11.5205 -7.86035h-0.259766\nc-1.83008 3.13965 -4.19043 7.33008 -5.75977 9.68945v1.31055c4.4502 3.91992 10.2197 6.7998 12.3096 7.58984c2.87988 1.0498 4.19043 0.520508 5.24023 0.259766l0.259766 0.520508c-1.30957 1.83008 -2.08984 2.87988 -3.39941 4.70996l-0.520508 0.259766\nc-9.9502 -5.5 -17.54 -9.9502 -25.3994 -15.71l0.259766 -0.519531c1.30957 0.259766 3.13965 -0.260742 4.4502 -2.62012c15.04 -25.0801 19.5898 -27.5908 17.54 -31.6904zM318.96 120.38v0.25c-1.99023 0 -2.34961 -1.37012 -14.6602 30.6396v0.260742\nc4.95996 1.85938 8.78027 4.37988 12.3105 2.62012l0.259766 0.519531l-3.13965 4.98047l-0.520508 0.259766c-2.22949 -0.929688 -20.4697 -8.00977 -27.7598 -12.5703l-0.259766 -0.519531l1.0498 -5.76074h0.519531c1.0498 3.68066 9.7998 7.33008 9.9502 7.33008\nl0.259766 -0.259766c12.9404 -29.7598 13.0703 -29.8799 11.7803 -32.4697l0.259766 -0.259766c3.93066 2.09961 6.81055 3.40918 9.9502 4.97949zM363.73 136.88c-0.780273 0.520508 -2.09082 1.31055 -2.63086 3.92969c-1.56934 6.02051 -4.70996 20.1709 -6.2793 26.4502\nc-0.530273 1.57031 -0.530273 3.14062 0.519531 4.4502l-0.259766 0.259766c-3.41016 -0.529297 -6.29004 -1.30957 -10.7402 -2.35938v-0.260742c1.57031 -0.529297 2.10059 -2.09961 2.62012 -3.92969l2.62012 -9.42969l-0.259766 -0.259766\nc-3.40039 -1.05078 -8.90039 -2.62012 -12.8301 -3.93066h-0.259766c-0.780273 2.10059 -1.83008 5.75977 -3.14062 9.69043l0.259766 4.70996l-0.259766 0.259766c-4.71973 -1.30957 -7.59961 -2.34961 -10.7402 -3.40039v-0.519531\nc1.05078 0 2.10059 -1.30957 2.62012 -3.13965c1.0498 -3.40039 8.12012 -24.0908 9.16992 -27.2305c0.790039 -2.09961 0.790039 -3.66992 -0.259766 -4.97949l0.259766 -0.260742c3.14062 1.31055 6.54004 2.87988 10.21 3.93066v0.519531\nc-1.0498 0.259766 -2.08984 0.780273 -2.87988 3.13965c-1.0498 3.93066 -3.39941 11.2607 -4.18945 13.8809l0.259766 0.259766c3.92969 1.30957 9.42969 3.13965 12.8301 3.92969l0.259766 -0.259766c0.530273 -2.09961 2.62012 -10.2197 3.66992 -13.6201\nl-0.519531 -4.4502l0.259766 -0.259766c4.4502 1.57031 5.5 1.83008 9.69043 2.87988zM395.94 143.69c0.529297 1.8291 1.0498 3.65918 1.5791 6.04004h-0.259766c-2.0293 -4.06055 -15.0898 -5.09082 -16.2402 -4.71094l-0.259766 0.260742\nc-0.519531 3.13965 -1.83008 10.4795 -2.08984 12.5693l0.259766 0.260742c8.06055 0.899414 5.40039 1.0293 10.21 0h0.260742c0 3.40918 0.259766 3.66992 0.259766 5.23926h-0.259766c-5.98047 -2.2998 -1.2207 -0.679688 -10.7402 -2.35938l-0.259766 0.259766\nc-0.520508 3.40039 -1.31055 8.37988 -1.57031 9.9502l0.259766 0.259766c12.9004 2.41016 15.1006 0.349609 16.2402 -0.790039l0.259766 0.259766c-0.780273 2.36035 -1.0498 3.14062 -1.57031 5.5l-0.259766 0.260742\nc-4.71973 -0.260742 -15.71 -1.05078 -24.8799 -2.62012l-0.790039 -0.520508c1.83008 -0.790039 2.36035 -1.83984 2.62012 -3.66992c1.58008 -7.59961 3.41016 -18.3301 4.98047 -26.1895l-0.790039 -4.19043l0.259766 -0.259766\nc8.37988 1.83008 17.8096 3.66992 22.5195 4.18945zM406.68 188.2c3.14062 1.56934 7.33008 5.5 7.33008 5.50977c1.95996 -4.58008 0.970703 -2.70996 4.19043 -7.86035c10.1494 -0.459961 8.60938 0.0205078 20.4297 -1.0498l0.790039 4.70996\ns-4.18945 0 -5.75977 1.83008c-1.0498 1.31055 -1.31055 3.14062 -1.57031 5.5c0 2.36035 0.270508 16.5 0.790039 20.6904c0.259766 4.18945 2.08984 20.4199 2.08984 23.04c0.260742 2.62012 1.0498 8.91016 0.260742 12.0498\nc-4.82031 19.2803 -24.4307 17.8096 -50.0205 16.2402l-5.24023 -16.2402l2.62012 -2.87988c16.5498 16.5498 37.6201 4.56934 29.5898 -5.75977c-5.18945 -6.9209 -19.7393 -8.90039 -28.54 -17.0205c-6.47949 -6.49023 -12.2393 -20.9004 -5.5 -31.6904\nc6.12988 -11.0391 17.29 -9.96973 17.54 -9.94922c2.87988 0 6.55078 0.519531 11 2.87988zM443.86 166.99c0 1.83984 0.269531 4.18945 0.269531 5.25l-0.259766 0.519531c-14.3604 8.98047 -26.8604 0.919922 -28.7998 -9.9502\nc-2.83984 -16.0898 15.3594 -25.46 25.6602 -18.5898l0.519531 0.520508c0 0.259766 1.30957 4.4502 1.83008 6.2793l-0.259766 0.260742c-6.39062 -9.58008 -23.3203 -6.87012 -20.6904 10.21c1.91016 12.6602 15.3799 16.0801 21.7305 5.5zM449.63 254.72\nc0 0 4.96973 -0.790039 4.99023 -3.66016c0 -2.08984 -4.98047 -55.25 -4.98047 -55.25c-0.109375 -1.48926 -0.339844 -6.80957 -7.58984 -6.80957l-0.790039 -4.70996c18.3906 -2.83008 19.3701 -3.04004 36.9199 -7.33008l0.520508 4.70996\nc-13.0498 3.91992 -9.74023 7.37012 -4.4502 46.0898c1.09961 0.870117 8.62012 7.14062 20.6904 0.790039l11.2598 11.2598s-9.69043 8.90039 -14.9307 7.33008c-5.23926 -1.30957 -15.4492 -10.7393 -15.4492 -10.7393l1.56934 17.54\nc-8.10938 4.0498 -27.0693 7.3291 -27.7598 7.3291v-6.5498zM460.62 140.28c9.42969 -2.35059 16.2402 2.62012 18.8496 11.5195c2.08984 7.60059 -1.56934 16.7598 -10.7393 19.3799c-6.54004 2.10059 -15.7109 -0.779297 -18.8506 -10.21\nc-3.39941 -9.68945 2.62012 -18.5996 10.7402 -20.6895zM502.78 130.59c-0.780273 1.31055 -1.04004 2.10059 -0.799805 3.91016c1.22949 27.0098 1.5293 24.6602 1.0498 25.1396c-2.08984 0.790039 -5.5 2.09082 -7.58984 2.87988l-0.520508 -0.259766v-2.08984\nc-3.92969 -6.01953 -10.4795 -15.4502 -13.8799 -20.1602l-2.62012 -1.83008v-0.259766c2.08984 -0.259766 4.70996 -1.30957 6.02051 -1.57031v0.260742l0.790039 3.39941c0.789062 1.0498 2.35938 3.66992 3.66992 5.5c0.40918 0 2.25 -0.549805 7.06934 -2.35938\nc0.330078 -0.320312 0.330078 0.649414 -0.259766 -7.59082l-1.57031 -1.8291v-0.260742c1.57031 -0.519531 6.28027 -2.35938 8.64062 -2.87988zM498.07 220.41c-13.2207 -21.1504 -9.39062 -51.6006 9.66992 -52.9004c5.75977 -0.259766 9.42969 3.93066 9.68945 3.66992\nl-2.08984 -6.80957c8.91016 -4.21973 11.4404 -5.29004 17.8105 -8.63965l1.83008 4.44922c-6.14062 3.51074 -1.29004 11.25 24.6191 84.3203c-6.13965 6.45996 -10.2998 10.0596 -22.5195 20.4297l-1.83008 -3.66992c1.62988 -1.35938 6.79004 -5.00977 4.4502 -11.2598\nl-7.58984 -26.1904c-3.28027 12.79 -22.79 14.8701 -34.04 -3.39941zM527.4 141.07l2.35938 3.39941v0.520508c-3.41016 6.83008 -11.9395 7.41992 -14.6602 2.35938c-1.83984 -3.40918 0.260742 -7.06934 1.83008 -9.68945\nc1.57031 -2.87988 3.14062 -6.29004 2.08984 -8.37988c-2.31934 -4.62988 -8.94922 -0.680664 -8.37988 4.97949l-0.790039 -0.259766c-2.09961 -4.7998 -1.83008 -4.00977 -1.83008 -4.70996c3.05078 -6.09961 12.8105 -7.12988 15.4502 -0.790039\nc1.57031 3.15039 0.520508 6.80957 -1.0498 9.42969c-1.83008 3.40039 -4.18945 6.29004 -2.87988 8.37988c1.51953 2.65039 7.86035 0.470703 7.86035 -5.23926zM548.61 127.71l1.30957 3.91016l-0.259766 0.259766c-2.36035 2.08984 -8.64062 6.54004 -12.3105 8.90039\nh-0.259766l-3.13965 -3.40039v-0.259766c4.7998 -0.320312 3.37988 0.149414 6.01953 -1.83008v-0.259766c-2.62012 -4.9707 -6.0293 -11.2607 -9.16992 -17.0205l-2.08984 -1.30957l-0.259766 -0.259766l5.75977 -4.4502l0.259766 0.259766\nc-0.259766 0.530273 -0.519531 1.57031 0.790039 3.92969c2.87988 5.77051 6.28027 12.0508 8.64062 16.2402h0.259766c3.54004 -2.57031 2.49023 -1.43945 4.4502 -4.70996zM575.84 171.97l7.85059 10.46s-9.4209 18.8604 -23.04 16.5\nc-20.8408 -4.0293 -3.15039 -34.21 -2.09082 -38.2295c4.33008 -15.1299 -16.3193 -12.5605 -13.3496 5.24023l-2.87988 2.08984l-4.98047 -14.4004s11.7803 -11.2598 20.1602 -10.4697c8.12012 0.790039 13.8799 6.29004 13.8799 16.5\nc0 8.37988 -7.85938 22.7803 -7.85938 27.7598c0 6.86035 12.2695 4.75977 11.5195 -4.97949c-0.259766 -2.61035 -1.2998 -5.23047 -2.08984 -7.59082zM611.46 182.18c0.780273 -2.35938 1.57031 -1.83008 0.790039 0.270508\nc-32.4697 98.9795 -132.76 138.78 -199.8 139.83c-50.54 0.779297 -89.5605 -11.79 -131.98 -35.8799l20.6904 61.0098l-33.7803 -65.7305l-8.89941 20.9502c3.13965 1.04004 6.2793 2.08984 6.2793 2.08984l-2.62012 8.64062s-3.13965 -0.780273 -7.33008 -2.09082\nl-12.0498 28.2803l13.6201 -61.0098c-5.12012 2.55957 -19.0996 6.83008 -6.5498 19.3799l-2.62012 11c-6.97949 -2.21973 -13.2295 -3.62012 -32.21 -9.68945l-23.0801 11.5l59.1797 -42.6807l-4.70996 -2.08984l-17.2793 13.8799\nc2.23926 -5.13965 3.2998 -12.1699 4.70996 -19.6396l-28.54 -13.0898l-30.1104 36.1396l-17.2803 -9.16992l13.6201 -42.4199l-11.2598 -4.98047l94.2695 29.3301l-3.66992 -10.4697l-0.519531 3.13965l-13.0898 -3.39941l4.97949 -24.6201l-4.4502 -12.3105\nl-25.6592 30.6406l-39.8008 -10.21l18.8506 -58.9199c-60.1299 62.3994 -67.7002 66.3994 -61.7998 75.6797c2.09961 2.87988 7.85938 7.07031 7.85938 7.07031l-4.18945 7.06934c-26.7803 -18.3496 -27.8398 -19.1494 -58.4004 -42.6797l4.98047 -6.01953\ns8.12012 5.75977 13.6201 5.5c7.81934 -0.350586 1.76953 2.93945 113.659 -98.7305l11.7803 8.37988l-27.7598 93.4805l35.8799 -42.1602l-4.70996 -13.8799l41.9004 88.5098c34.6699 -80.5098 29.1494 -66.9502 32.9893 -78.8203l-33.5195 67.2998l-2.36035 -4.44922\nc1.2998 -1.30078 -0.919922 3.05957 22.7803 -59.4404c3.22949 -8.88965 -1.10059 -9.88965 -5.5 -12.8301l2.36035 -4.70996c15.3594 6.79004 22.9395 9.54004 39.0195 14.4004l-1.0498 4.97949c-8.89062 -1.33008 -10.1006 0.169922 -12.0498 4.4502\nc-1.05078 2.09961 -14.1504 40.0703 -20.4307 58.6602l-10.21 4.97949l-2.35938 8.12012l61.54 -36.6602l-13.0908 -43.21c12.1904 3.26074 27.0303 6.74023 49.4902 9.9502l-0.259766 26.71l-4.98047 -1.0498c-0.669922 -13.7998 -6.0293 -22.0801 -19.6396 -22.7803\nl22.2598 80.3906c-27.6201 -0.450195 -59.2695 -7.19043 -66.7695 -8.90039l3.92969 -16.5l-25.1396 19.6396l91.3896 20.6904l-85.6299 -9.16992c38.4902 22.5195 79.3398 39.0195 132.76 37.9697c131.46 -2.08984 180.95 -99.2402 191.95 -129.62zM203.48 295.57\nl2.35938 -8.64062c7.82031 2.61035 10.8604 2.36035 11.2598 2.36035l-9.42969 7.58984c-2.36035 -0.790039 -4.18945 -1.30957 -4.18945 -1.30957zM347.24 257.07l-11.5303 -37.71l-21.7295 17.0195c6.7998 25.5 31.6895 21.29 33.2598 20.6904zM318.43 380.93\nc224.94 0 321.83 -143.76 321.57 -227.55c0 -11 -0.269531 -17.5498 -0.790039 -19.6396c-0.259766 -2.10059 -1.0498 -0.790039 -1.0498 0.519531v9.9502c0 106.58 -121.51 223.37 -301.67 223.37c-61.2705 0 -103.69 -12.0498 -110.24 -13.8799l-1.57031 0.259766\nc-6.80957 7.58984 -12.8301 9.69043 -21.21 11.7803v0.790039c8.91016 2.34961 56.5605 14.3994 114.96 14.3994zM529.49 211.25c-8.61035 -34.4502 -13.6504 -35.3496 -18.3301 -35.3604c-7.33008 0 -6.81055 9.43066 -6.02051 14.9307\nc0.879883 9.72949 7.40039 34.6494 17.0205 33.5195c7.33008 -0.780273 8.63965 -7.33008 7.33008 -13.0898zM467.96 168.3c3.40039 -0.780273 7.84961 -4.4502 5.23047 -14.3896c-2.88086 -11.2598 -8.11035 -11.79 -11.7803 -10.7402\nc-5.5 1.31055 -7.85059 7.84961 -6.02051 14.6602c3.14062 11.2598 9.9502 11.2598 12.5703 10.4697zM491 147.35v0.270508c1.0498 1.83008 5.5 8.63965 6.5498 9.9502c-0.269531 -3.66992 -0.790039 -10.2207 -0.790039 -12.0508\nc-2.62012 0.780273 -3.92969 1.31055 -5.75977 1.83008z\" />\n    <glyph glyph-name=\"think-peaks\" unicode=\"&#xf731;\" horiz-adv-x=\"576\" \nd=\"M465.4 38.5996l-206.2 353.801l-204.2 -352.101l-32 0.299805l236.2 407.4l206.2 -353.9l55.0996 95l32 -0.299805zM110.1 82.7002l149.601 257.899l235.8 -404.6l-32.5 0.0996094l-203.4 349.101l-117.399 -202.5h-32.1006z\" />\n    <glyph glyph-name=\"reacteurope\" unicode=\"&#xf75d;\" horiz-adv-x=\"576\" \nd=\"M250.6 236.26l2 6.7998l-5.69922 4.30078l7.19922 0.0996094l2.30078 6.7998l2.2998 -6.7998l7.09961 -0.0996094l-5.7002 -4.30078l2.10059 -6.7998l-5.7998 4.10059zM314.3 236.26l1.90039 6.7998l-5.7002 4.30078l7.2002 0.0996094l2.2998 6.7998l2.2998 -6.7998\nl7.2002 -0.0996094l-5.7002 -4.30078l2.10059 -6.7998l-5.80078 4.10059zM223 185.76c4.90039 0 3.7998 -3.89941 3.7998 -13.7598c0 -10.2998 -6.7002 -14.0996 -16.7998 -14.0996h-0.200195c-10.0996 0 -16.7998 3.69922 -16.7998 14.0996v40.0596\nc0 9.90039 6.7002 14.1006 16.7998 14.1006h0.200195c10.0996 0 16.7998 -4.2002 16.7998 -14.1006c0 -8.39941 0.900391 -12.1992 -3.7998 -12.2998h-3.40039c-4.5 0 -3.7998 3.2998 -3.7998 10.5c0 4.7002 -2.2998 6.10059 -5.7998 6.10059\ns-5.7998 -1.40039 -5.7998 -6.10059v-36.5996c0 -4.7002 2.2998 -6.10059 5.7998 -6.10059s5.7998 1.40039 5.7998 6.10059c0 8.09961 -1 12.0996 3.7998 12.0996h3.40039zM142.3 168.36c2.5 0 3.7998 -1.30078 3.7998 -3.80078v-2.09961\nc0 -2.5 -1.2998 -3.7998 -3.7998 -3.7998h-21.8994c-2.5 0 -3.80078 1.2998 -3.80078 3.7998v59.0996c0 2.5 1.30078 3.90039 3.7002 3.80078h21.7002c2.5 0 3.7998 -1.30078 3.7998 -3.80078v-2.09961c0 -2.5 -1.2998 -3.7998 -3.7998 -3.7998h-14.4004v-18.2998h11.4004\nc2.5 0 3.7998 -1.30078 3.7998 -3.80078v-2.09961c0 -2.5 -1.2998 -3.7998 -3.7998 -3.7998h-11.4004v-19.2998h14.7002zM100.3 186.86l8.10059 -23.9004c0.799805 -2.59961 -0.400391 -4.40039 -3.2002 -4.40039h-3.2998\nc-0.0820312 -0.00585938 -0.21582 -0.0107422 -0.297852 -0.0107422c-1.81543 0 -3.6084 1.43848 -4.00293 3.21094l-7.39941 23.5h-5.60059v-22.8994c0 -2.5 -1.2998 -3.80078 -3.7998 -3.80078h-3.39941c-2.5 0 -3.80078 1.30078 -3.80078 3.80078v59.0996\nc0 2.5 1.30078 3.7998 3.80078 3.7998h13.3994c10.1006 0 16.7998 -4 16.7998 -14.0996v-11.9004c0 -6.39941 -2.69922 -10.3994 -7.2998 -12.3994zM96.5 200.86v8.69922c0 4.80078 -2.5 6.10059 -6.09961 6.10059h-5.80078v-20.9004h5.80078\nc3.59961 0 6.09961 1.2998 6.09961 6.10059zM176 222l11.2002 -59.2002c0.5 -2.7002 -0.799805 -4.09961 -3.40039 -4.09961h-3.5c-0.100586 -0.00976562 -0.264648 -0.0185547 -0.366211 -0.0185547c-1.94531 0 -3.61816 1.57617 -3.7334 3.51855l-1.7998 11.2998h-12.2002\nl-1.7998 -11.2998c-0.116211 -1.94238 -1.78809 -3.51855 -3.7334 -3.51855c-0.101562 0 -0.265625 0.00878906 -0.367188 0.0185547h-3c-2.5 0 -3.89941 1.39941 -3.39941 4.09961l11 59.2002c0.135742 1.88477 1.78027 3.41504 3.66992 3.41504\nc0.0908203 0 0.239258 -0.00683594 0.330078 -0.0146484h6.89941c0.110352 0.0117188 0.290039 0.0205078 0.401367 0.0205078c1.89844 0 3.60059 -1.53223 3.79883 -3.4209zM163.7 182.7h9.39941l-4.69922 29.7002zM253 162.5c0 -2.45996 -1.2998 -3.83984 -3.7998 -3.7998\nh-3.40039c-2.5 0 -3.7998 1.2998 -3.7998 3.7998v53.2002h-7.2998c-2.5 0 -3.7998 1.2998 -3.7998 3.7998v2.09961c0 2.5 1.2998 3.80078 3.7998 3.80078h25.7998c2.5 0 3.7998 -1.30078 3.7998 -3.80078v-2.09961c0 -2.5 -1.2998 -3.7998 -3.7998 -3.7998h-7.5v-53.2002z\nM501 163.3c0.0449219 0.00390625 0.119141 -0.0322266 0.164062 -0.0322266c1.01562 0 1.84082 -0.824219 1.84082 -1.83984c0 -0.0351562 -0.00292969 -0.0927734 -0.00488281 -0.12793v-0.799805c0.00195312 -0.0273438 0.00292969 -0.0722656 0.00292969 -0.100586\nc0 -0.999023 -0.810547 -1.80957 -1.81055 -1.80957c-0.0527344 0 -0.139648 0.00488281 -0.192383 0.00976562h-22.5c-0.0527344 -0.00488281 -0.139648 -0.00976562 -0.192383 -0.00976562c-1 0 -1.81055 0.810547 -1.81055 1.80957\nc0 0.0283203 0.000976562 0.0732422 0.00292969 0.100586v63c-0.00878906 0.0625 -0.0166016 0.166016 -0.0166016 0.229492c0 0.893555 0.725586 1.62012 1.62012 1.62012c0.111328 0 0.289062 -0.0224609 0.396484 -0.0498047h22.2002\nc0.0644531 0.00878906 0.169922 0.015625 0.235352 0.015625c0.977539 0 1.77051 -0.792969 1.77051 -1.76953c0 -0.0400391 -0.00292969 -0.105469 -0.00585938 -0.145508v-0.800781c0.00195312 -0.03125 0.00292969 -0.0820312 0.00292969 -0.113281\nc0 -1.04297 -0.84668 -1.88965 -1.88965 -1.88965c-0.03125 0 -0.0820312 0.000976562 -0.113281 0.00292969h-19.1006v-25.7998h16.1006c0.03125 0.00195312 0.0820312 0.00390625 0.113281 0.00390625c1.04297 0 1.88965 -0.84668 1.88965 -1.89062\nc0 -0.03125 -0.000976562 -0.0820312 -0.00292969 -0.113281v-0.799805c0.00195312 -0.03125 0.00292969 -0.0820312 0.00292969 -0.113281c0 -1.04297 -0.84668 -1.88965 -1.88965 -1.88965c-0.03125 0 -0.0820312 0.000976562 -0.113281 0.00292969h-16.1006v-26.7002\nh19.4004zM407.9 226.2c10.0996 0 15.2998 -4.74023 15.2998 -14.1006v-40.0996c0 -9.2998 -5.2002 -14.0996 -15.2998 -14.0996h-0.800781c-10.0996 0 -15.2998 4.7998 -15.2998 14.0996v40.0996c0 9.40039 5.2002 14.1006 15.2998 14.1006h0.800781zM418.1 173.8v36.6006\nc0 7.89941 -3 11.0996 -10.5 11.0996s-10.5 -3.2002 -10.5 -11.0996v-36.6006c0 -8 3 -11.0996 10.5 -11.0996s10.4004 3.09961 10.5 11.0996zM371.6 188.3l10.6006 -27.2998c0.5 -1.2998 -0.100586 -2.2998 -1.5 -2.2998h-1.5\nc-0.0351562 -0.00195312 -0.0927734 -0.00390625 -0.128906 -0.00390625c-0.886719 0 -1.85938 0.673828 -2.1709 1.50391l-10.4004 27.2002h-11.5996v-26.9004c0.00390625 -0.0458984 0.0078125 -0.12207 0.0078125 -0.167969\nc0 -0.960938 -0.779297 -1.74023 -1.74023 -1.74023c-0.0458984 0 -0.12207 0.00390625 -0.167969 0.0078125h-1.2002c-0.0527344 -0.00488281 -0.139648 -0.00976562 -0.192383 -0.00976562c-0.999023 0 -1.81055 0.810547 -1.81055 1.80957\nc0 0.0283203 0.00195312 0.0732422 0.00292969 0.100586v63c-0.000976562 0.0273438 -0.00292969 0.0722656 -0.00292969 0.100586c0 0.999023 0.811523 1.80957 1.81055 1.80957c0.0527344 0 0.139648 -0.00488281 0.192383 -0.00976562h13.7002\nc10.0996 0 15.2998 -4.7002 15.2998 -14.1006v-9.7002c0 -7.19922 -3.09961 -11.6992 -9.2002 -13.2998zM365.2 192.2c7.5 0 10.5 3.16016 10.5 11v6.39941c0 8 -3 11.1006 -10.5 11.1006h-10.2002v-28.5h10.2002zM451.1 225.3c10.1006 0 15.3008 -4.7002 15.3008 -14.0996\nv-10.5c0 -9.2998 -5.2002 -14.1006 -15.3008 -14.1006h-10.5996v-26.0996c0.00488281 -0.0458984 0.0078125 -0.12207 0.0078125 -0.167969c0 -0.960938 -0.779297 -1.74023 -1.73926 -1.74023c-0.046875 0 -0.12207 0.00390625 -0.168945 0.0078125h-1.19922\nc-0.0537109 -0.00488281 -0.139648 -0.00976562 -0.193359 -0.00976562c-0.999023 0 -1.80957 0.810547 -1.80957 1.80957c0 0.0283203 0.000976562 0.0732422 0.00292969 0.100586v63c-0.00976562 0.0625 -0.0166016 0.166016 -0.0166016 0.229492\nc0 0.893555 0.725586 1.62012 1.62012 1.62012c0.111328 0 0.288086 -0.0224609 0.396484 -0.0498047h13.6992zM461.3 202.5v7.09961c0 7.90039 -3 11.1006 -10.5 11h-10.2002v-29.1992h10.2002c7.5 0 10.5 3.19922 10.5 11.0996zM259.5 140l7.09961 -0.0996094\nl-5.69922 -4.30078l2.09961 -6.7998l-5.7998 4.10059l-5.7998 -4.10059l2.09961 6.7998l-5.7002 4.30078l7.10059 0.0996094l2.2998 6.7998zM487.1 276.1c122.301 -46.0996 118.401 -132.54 -33.8984 -176.34c13.3994 -49.7002 18.0996 -101.899 0.0996094 -133.8\nc-3.7998 -6.7002 -16.7998 -27.7002 -47.5996 -27.7002c-41.5 0 -110.2 41.6006 -182.101 142c-42.7998 3.5 -72.1992 10.1006 -84.5996 13c-20.5 -82.2998 -6.7998 -125.3 15.5 -137.899c1.2002 -0.700195 38.4004 -27.2002 120.9 52.7998\nc3.39941 -3.5 6.79883 -6.90039 10.1982 -10.2002c-63.0996 -61.2002 -110.199 -71 -138.199 -55.2002c-32.4004 18.2998 -42.8008 72 -22.3008 153.9c-18.8994 5 -121.6 33.2002 -122.1 92.7998c-0.400391 40.9004 49.7998 74.7002 120.3 95\nc-13.3994 49.5996 -18.2002 101.8 -0.0996094 133.8c3.7998 6.74023 16.7998 27.7402 47.5996 27.7402c41.6006 0 110.3 -41.6396 182.2 -142.14c23.6113 -1.88379 61.5127 -7.70801 84.5996 -13c20.5 82 6.90039 125.1 -15.5 137.8\nc-1.2998 0.700195 -38.3994 27.2002 -120.899 -52.7998c-3.40039 3.5 -6.80078 6.89941 -10.2002 10.1992c52.2998 50.9404 103.7 74.6006 138.2 55.2402c33.8994 -19.2002 41.8994 -75.8994 22.2998 -153.899c9.98535 -2.61523 25.9346 -7.67773 35.5996 -11.3008z\nM135.901 411.16c-23.1006 -40.7998 1 -121.562 1.19922 -122.961c22.9912 5.78516 60.8018 12.3262 84.4004 14.5996c12.7793 18.6787 35.4922 47.4404 50.7002 64.2002c3.39941 -3.33301 6.7998 -6.74609 10.2002 -10.2393\nc-12.5371 -13.7451 -31.4434 -37.2207 -42.2002 -52.3994c14.8213 1.11914 38.9141 2.02734 53.7783 2.02734c11.082 0 29.0566 -0.504883 40.1211 -1.12793c-64.5 86.6006 -126.5 126.2 -163.3 126.2c-23 0 -32 -15.2002 -34.8994 -20.2998zM440.701 -27.1406\nc3.2998 6 21.5 38.5996 -1.2002 123c-4.09961 -1.10059 -37.0996 -9.90039 -84.4004 -14.6006c-12.7578 -18.6943 -35.4717 -47.4551 -50.6992 -64.2002c-3.40039 3.2998 -6.80078 6.7002 -10.2002 10.2002c12.5371 13.7461 31.4424 37.2207 42.2002 52.4004\nc-14.7715 -1.14258 -38.7842 -2.06934 -53.5996 -2.06934c-11.1328 0 -29.1875 0.524414 -40.3008 1.16895c64.5996 -86.7998 126.6 -126.2 163.3 -126.2c23.1006 0 32 15.2002 34.9004 20.3008zM449.801 111.459c25.6006 7.2998 85.9004 27.4004 105.7 62.5\nc1.40039 2.5 33.5 50.5 -72.5996 90.4004c-9.36914 3.51562 -24.8252 8.44336 -34.5 11c-3.60059 -12.9004 -7.90039 -26.1006 -12.8008 -39.5c-3.15723 -0.430664 -7.14453 -2.93945 -8.89941 -5.60059l-0.100586 0.100586\nc-1.6416 1.55762 -4.68848 3.48438 -6.7998 4.2998c5.7002 15 10.6006 29.7998 14.6006 44.2002c-7.2002 1.69922 -31.8008 7.59961 -72.2002 11.6992c16.7002 -24.5 27.8994 -44.0996 34.2998 -55.5c-3.50781 -1.14648 -8.16699 -4.46094 -10.4004 -7.39941\nc-13.5996 16.3994 -11 19.8994 -42.5 64.5c-13.752 0.96582 -36.1016 1.75 -49.8877 1.75c-17.2871 0 -45.292 -1.23145 -62.5117 -2.75c-16.9004 -25 -28.2998 -45.2002 -34.7998 -56.9004c-3.49707 -1.49023 -8.06738 -5.25391 -10.2002 -8.39941\nc-0.914062 2.88965 -3.78125 6.47363 -6.40039 8c6.10059 11.3994 16.9004 31 32.7998 55.2998c-39.5996 -4.60059 -65 -11.2002 -72 -13c4.30078 -14.1006 9.40039 -28.6006 15.2002 -43.2998c-0.71582 -0.522461 -1.74609 -1.50781 -2.2998 -2.2002\nc-1.5 1.89941 -4 5.2998 -14.4004 5.2998c-4.69922 12.2998 -8.7998 24.5 -12.3994 36.4004c-138.8 -40.3604 -158.4 -121.36 1.5 -164c3.59961 12.8994 7.7998 26 12.7002 39.3994c0.269531 -0.0146484 0.708008 -0.0273438 0.978516 -0.0273438\nc1.68359 0 4.33594 0.460938 5.9209 1.02734c3 -1.2002 5.2002 -1 8.40039 -1c-5.5 -14.5996 -10.2002 -28.8994 -14.1006 -42.8994c19.7119 -4.56055 52.0576 -9.80176 72.2002 -11.7002c-16.2998 23.8994 -27.5 43.3994 -33.7998 54.5996\nc8.7002 0 10.7002 1.60059 12.5996 3.2002c0.794922 -0.480469 2.13965 -1.15234 3 -1.5c15.3008 -26.7002 28.9004 -46.5996 36.8008 -57.7998c13.751 -0.96582 36.1006 -1.75 49.8857 -1.75c17.2871 0 45.2939 1.23145 62.5137 2.75\nc16.5 24.2998 27.7002 44 33.9004 55.2002c7.2998 0 9.7998 3 10.8994 4.19922c1.5332 -1.11426 4.2207 -2.54785 6 -3.19922c-15 -28 -28.6992 -48.9004 -32.1992 -54.2002c20.1172 2.22656 52.373 8.05078 72 13c-4.10059 13.7998 -9 27.8994 -14.7002 42.2002\nc1.65723 0.743164 4.07617 2.35645 5.39941 3.59961l0.100586 0.0996094c2.07227 -3.14648 6.8125 -5.7002 10.5811 -5.7002c0.0322266 0 0.0859375 0 0.119141 0.000976562c4.69922 -12.3008 8.7998 -24.5 12.3994 -36.4004zM335.401 225.459\nc0.0556641 0.00585938 0.145508 0.0107422 0.201172 0.0107422c1.05566 0 1.95117 -0.856445 1.99805 -1.91113v-51.5c0 -9.5 -5 -14.0996 -15.0996 -14.0996h-0.400391c-10.0996 0 -15.0996 4.5 -15.0996 14.0996v51.5\nc-0.00195312 0.0283203 -0.00292969 0.0732422 -0.00292969 0.100586c0 0.999023 0.810547 1.81055 1.81055 1.81055c0.0527344 0 0.139648 -0.00488281 0.192383 -0.0107422h1.2002c0.0615234 0.00878906 0.162109 0.0146484 0.224609 0.0146484\nc0.933594 0 1.69043 -0.756836 1.69043 -1.68945c0 -0.0625 -0.00683594 -0.163086 -0.015625 -0.225586v-49.7998c0 -8 2.60059 -11.0996 10.1006 -11.0996s10.0996 3.2002 10.0996 11.0996v49.7998c-0.00390625 0.046875 -0.0078125 0.12207 -0.0078125 0.168945\nc0 0.959961 0.779297 1.73926 1.74023 1.73926c0.0458984 0 0.121094 -0.00292969 0.167969 -0.0078125h1.2002zM321.701 139.999l7.09961 -0.0996094l-5.7002 -4.30078l2.10059 -6.7998l-5.7998 4.10059l-5.80078 -4.10059l2.10059 6.7998l-5.7002 4.30078\nl7.09961 0.0996094l2.30078 6.7998zM290.601 132.599l7.10059 -0.0996094l-5.7002 -4.2998l2.09961 -6.7998l-5.7998 4.09961l-5.7998 -4.09961l2.09961 6.7998l-5.69922 4.2998l7.09961 0.0996094l2.2998 6.80078zM295.701 163.399\nc0.0507812 0.00488281 0.133789 -0.03125 0.185547 -0.03125c1.00977 0 1.83008 -0.819336 1.83008 -1.83008c0 -0.0664062 -0.00683594 -0.172852 -0.015625 -0.239258v-0.799805c0.00292969 -0.0400391 0.00585938 -0.105469 0.00585938 -0.145508\nc0 -0.977539 -0.792969 -1.77051 -1.77051 -1.77051c-0.0654297 0 -0.170898 0.00683594 -0.235352 0.015625h-22.5c-0.0537109 -0.00488281 -0.139648 -0.00976562 -0.193359 -0.00976562c-0.999023 0 -1.80957 0.810547 -1.80957 1.80957\nc0 0.0283203 0.000976562 0.0732422 0.00292969 0.100586v63c-0.00195312 0.0273438 -0.00292969 0.0722656 -0.00292969 0.100586c0 0.999023 0.810547 1.80957 1.80957 1.80957c0.0537109 0 0.139648 -0.00488281 0.193359 -0.00976562h22.2002\nc0.0644531 0.00878906 0.169922 0.015625 0.235352 0.015625c0.977539 0 1.77051 -0.792969 1.77051 -1.77051c0 -0.0400391 -0.00292969 -0.105469 -0.00585938 -0.145508v-0.799805c0.00195312 -0.03125 0.00292969 -0.0820312 0.00292969 -0.113281\nc0 -1.04395 -0.84668 -1.89062 -1.88965 -1.89062c-0.03125 0 -0.0820312 0.00195312 -0.113281 0.00390625h-19.1006v-25.7998h16.1006c0.03125 0.00195312 0.0820312 0.00292969 0.113281 0.00292969c1.04297 0 1.88965 -0.84668 1.88965 -1.88965\nc0 -0.03125 -0.000976562 -0.0820312 -0.00292969 -0.113281v-0.800781c0.00195312 -0.03125 0.00292969 -0.0820312 0.00292969 -0.113281c0 -1.04297 -0.84668 -1.88965 -1.88965 -1.88965c-0.03125 0 -0.0820312 0.000976562 -0.113281 0.00292969h-16.1006v-26.6992\nh19.4004zM288.301 262.799l2.2998 -6.7998l7.10059 -0.0996094l-5.7002 -4.30078l2.09961 -6.7998l-5.7998 4.10059l-5.7998 -4.10059l2.09961 6.7998l-5.69922 4.30078l7.09961 0.0996094z\" />\n    <glyph glyph-name=\"adobe\" unicode=\"&#xf778;\" horiz-adv-x=\"512\" \nd=\"M315.5 384h170.9v-384zM196.5 384l-170.9 -384v384h170.9zM256 241.9l107.5 -241.9h-73l-30.7002 76.7998h-78.7002z\" />\n    <glyph glyph-name=\"artstation\" unicode=\"&#xf77a;\" horiz-adv-x=\"512\" \nd=\"M2 70.5996h315.1l59.2002 -102.6h-285.399h-0.0146484c-17.4814 0 -38.0381 12.6787 -45.8857 28.2998zM501.8 98c19 -29.4004 -0.0996094 -55.9004 -2 -59.0996l-40.7002 -70.5l-257.3 447.6h88.4004h0.0117188c17.0596 0 37.3936 -12.2305 45.3877 -27.2998zM275 143.5\nh-231l115.5 200z\" />\n    <glyph glyph-name=\"atlassian\" unicode=\"&#xf77b;\" horiz-adv-x=\"512\" \nd=\"M152.2 211.6c66.2998 -70.7998 89.0996 -189.3 51.2002 -267.1c-2.40039 -5.2002 -7.60059 -8.5 -13.4004 -8.40039h-175c-11 0 -18.4004 11.7002 -13.4004 21.7002l125.801 251c5.09961 10.5 17.0996 11 24.7998 2.7998zM244.4 439.9\nc6.7998 10.8994 20.2998 10.6992 25.5996 0.0996094c5.90039 -11.7002 240.4 -482.3 240.4 -482.3c5 -9.90039 -2.2002 -21.7002 -13.4004 -21.7002h-174.2c-5.7002 0 -10.8994 3.2998 -13.3994 8.40039c-73.5 146.899 -187.301 302.1 -65 495.5z\" />\n    <glyph glyph-name=\"canadian-maple-leaf\" unicode=\"&#xf785;\" horiz-adv-x=\"512\" \nd=\"M383.8 96.2998c-5 -5 -10 -7.5 -5 -22.5s10 -35.0996 10 -35.0996s-95.2002 20.0996 -105.2 22.5996c-8.89941 0.900391 -18.3994 -2.39941 -18.3994 -12.5c0 -10.0996 5.7998 -112.8 5.7998 -112.8h-30s5.7998 102.8 5.7998 112.8s-9.59961 13.4004 -18.2998 12.5\nc-10.0996 -2.5 -105.3 -22.5996 -105.3 -22.5996s5 20.0996 10.0996 35.0996c4.90039 15 0 17.5 -5.09961 22.5c-2.60059 2.5 -105.2 92.4004 -105.2 92.4004l17.5 7.59961c10 4.90039 7.40039 11.4004 5 17.4004c-2.5 7.59961 -20.0996 67.2998 -20.0996 67.2998\ns47.5996 -10 57.6992 -12.5c7.5 -2.40039 10 2.5 12.5 7.5s15 32.2998 15 32.2998s52.6006 -59.7998 55.1006 -62.2998c10.0996 -7.5 20.0996 0 17.5996 10c0 10 -27.5996 129.6 -27.5996 129.6s30.0996 -17.3994 40.0996 -22.3994c7.60059 -5 12.6006 -5 17.6006 5\nc5 7.5 42.5 79.7998 42.5 79.7998s37.5996 -72.2998 42.6992 -79.7998c5 -10 10.1006 -10 17.6006 -5c10 5 40.0996 22.3994 40.0996 22.3994s-27.5996 -119.6 -27.5996 -129.6c-2.5 -10 7.59961 -17.5 17.5996 -10c2.5 2.40039 55.1006 62.2998 55.1006 62.2998\ns12.5 -27.3994 15 -32.3994s5 -9.90039 12.5 -7.5c10 2.5 57.6992 12.5 57.6992 12.5s-17.6992 -59.7002 -20.0996 -67.3008c-2.40039 -5.89941 -5 -12.5 5 -17.3994l17.5 -7.5s-102.7 -89.9004 -105.2 -92.4004z\" />\n    <glyph glyph-name=\"centos\" unicode=\"&#xf789;\" \nd=\"M289.6 350.5l31.6006 -31.7002l-76.2998 -76.5v108.2h44.6992zM127.2 318.8l31.5996 31.7002h44.7002v-108.2zM168.7 360.4l55.5 55.5996l55.5 -55.5996h-44.7002v-127.9l-10.7998 -10.7998l-10.7998 10.7998v127.9h-44.7002zM194.9 192.3l-10.8008 -10.7998h-128.6\nv-44.7998l-55.5 55.5996l55.5 55.6006v-44.8008h128.6zM274.2 213l76.2998 76.5l31.5996 -31.7002v-44.7998h-107.899zM447.5 192.3l-55.5 -55.5996v44.7998h-127.7l-10.7998 10.7998l10.7998 10.7998h127.7v44.8008zM65.4004 271.8v78.7002h79.3994l-31.5996 -31.7002\nl90.2998 -90.5v-15.2998h-15.2998l-90.2998 90.5zM382.1 350.5v-78.7002l-31.5996 31.7002l-90.2998 -90.5h-15.2998v15.2998l90.2998 90.5l-31.6006 31.7002h78.5zM203.5 34.0996v-0.0996094h-44.7002l-31.5996 31.7002l76.2998 76.5v-108.101zM65.4004 213v44.7998\nl32.5 31.7002l76.2998 -76.5h-108.8zM382.1 112.8v-78.7002h-78.5l31.6006 31.7002l-90.2998 90.5v15.2998h15.2998l90.2998 -90.5zM382.1 171.6v-44.7998l-31.5996 -31.7002l-76.2998 76.5h107.899zM321.2 65.7998l-31.6006 -31.5996h-44.6992v108.1zM97.9004 95.0996\nl-32.5 31.7002v44.7998h108.8zM279.7 24.2002l-55.5 -55.6006l-55.5 55.6006h44.7002v127.899l10.7998 10.8008l10.7998 -10.8008v-127.899h44.7002zM113.2 65.7998l31.5996 -31.7002h-79.3994v78.7002l32.5 -31.7002l90.2998 90.5h15.2998v-15.2998z\" />\n    <glyph glyph-name=\"confluence\" unicode=\"&#xf78d;\" horiz-adv-x=\"512\" \nd=\"M2.2998 35.7998c42.2998 66.9004 125.2 233.2 373.101 112.601c39.6992 -19.1006 83.6992 -39.9004 105.899 -50.3008c8 -3.69922 11.7002 -13.1992 8.10059 -21.2998l-50.4004 -114.1c-0.0996094 -0.100586 -0.0996094 -0.299805 -0.200195 -0.400391\nc-3.89941 -8.09961 -13.5996 -11.5996 -21.7002 -7.7002c-200.399 95.2002 -213.8 111.5 -280.899 -0.699219c0 0 -0.100586 -0.100586 -0.100586 -0.200195c-4.69922 -7.7002 -14.6992 -10 -22.3994 -5.2998l-105.9 65.1992c-7.59961 4.7002 -10 14.6006 -5.5 22.2002z\nM509.7 347.9c-42.6006 -67.5 -125.4 -232.9 -373.4 -112.9c-39.7002 19.2002 -83.7998 40 -106 50.4004c-8 3.69922 -11.7002 13.1992 -8.09961 21.2998l50.5 114.1c0.0996094 0.100586 0.0996094 0.299805 0.200195 0.400391\nc3.89941 8.09961 13.5996 11.5996 21.6992 7.7002c199.5 -94.7002 213.301 -111.7 280.601 0.899414c0.200195 0.400391 0.399414 0.700195 0.599609 1c5 7.5 15.1006 9.40039 22.6006 4.40039l105.8 -65.1006c7.59961 -4.69922 10 -14.5996 5.5 -22.1992z\" />\n    <glyph glyph-name=\"dhl\" unicode=\"&#xf790;\" horiz-adv-x=\"640\" \nd=\"M238 146.8l22.2998 30.2002h58.7002l-22.2998 -30.2002h-58.7002zM0 165.1h86.5l-4.7002 -6.39941h-81.7998v6.39941zM172.9 177h68.1992c-5.69922 -7.7998 -24.0996 -30.2998 -57.1992 -30.2998h-100.101l41.1006 55.7998h51c5.59961 0 5.59961 -2.2002 2.7998 -5.90039\nc-2.7998 -3.69922 -7.60059 -10.2998 -10.4004 -14.0996c-1.39941 -1.90039 -4.09961 -5.5 4.60059 -5.5zM490.4 183.9h-62.2002l39.2998 53.3994h62.2002zM95.2998 177l-4.7002 -6.40039h-90.5996v6.40039h95.2998zM206.3 203.6\nc2.7998 3.7002 2.90039 5.90039 -2.7002 5.90039h-111.399l20.3994 27.7998h117.9c29.9004 0 37.5996 -23.5996 29.2002 -35c-6.2002 -8.39941 -13.5 -18.3994 -13.5 -18.3994h-45.6006c-8.69922 0 -6 3.5 -4.59961 5.5c2.7998 3.7998 7.5 10.3994 10.2998 14.1992zM0 146.8\nv6.40039h77.7998l-4.7002 -6.40039h-73.0996zM323 146.8c0 0 22.2002 30.2002 22.2998 30.2002h58.7002l-22.2998 -30.2002h-58.7002zM545 146.7l4.7002 6.39941h90.2998v-6.39941h-95zM567.3 177h72.7002v-6.40039h-77.4004zM553.8 158.7l4.7002 6.39941h81.5v-6.39941\nh-86.2002zM389.6 237.3h58.7002l-39.2998 -53.3994h-143.6l39.2998 53.3994h58.7002l-22.5 -30.5996h26.1992zM423.1 177h133.4l-22.2998 -30.2998h-94.2998c-24.1006 0 -30.6006 11.5996 -23.2002 21.5996c2.09961 2.7998 6.39941 8.7002 6.39941 8.7002z\" />\n    <glyph glyph-name=\"diaspora\" unicode=\"&#xf791;\" horiz-adv-x=\"512\" \nd=\"M251.64 93.4502c-1.39941 0 -88 -119.9 -88.6992 -119.9c-0.700195 0 -86.6006 60.4502 -86.9404 61.2002s86.5996 125.7 86.5996 127.4c0 2.19922 -129.6 44 -137.6 47.0996c-1.2998 0.5 31.4004 101.8 31.7002 102.1c0.599609 0.700195 144.399 -47 145.5 -47\nc0.399414 0 0.899414 0.600586 1 1.30078c0.399414 2 1 148.6 1.7002 149.6c0.799805 1.2002 104.5 0.700195 105.1 0.299805c1.5 -1 3.5 -156.1 6.09961 -156.1c1.40039 0 138.7 47 139.301 46.2998c0.799805 -0.900391 31.8994 -102.2 31.5 -102.6\nc-0.900391 -0.900391 -140.2 -47.1006 -140.601 -48.8008c-0.299805 -1.39941 82.7998 -122.1 82.5 -122.899s-85.5 -63.5 -86.2998 -63.5c-1 0.200195 -89 125.5 -90.9004 125.5h0.0400391z\" />\n    <glyph glyph-name=\"fedex\" unicode=\"&#xf797;\" horiz-adv-x=\"640\" \nd=\"M586 163.5l54 -60.5h-64.4004l-22.2998 25l-22.0996 -25h-212.2v11.9004h-0.5c-7.90039 -11.7002 -20.7998 -18.6006 -34.9004 -18.6006c-32.6992 0 -56.3994 26.4004 -60.0996 56.9004h-85.5c0 -23.5 31.0996 -35.5 45.7998 -14.6006h42\nc-27.5996 -67.6992 -130.2 -49.3994 -130.2 23.7002c0 6.40039 0.800781 12.5 2.30078 18.2002h-48.9004v-77.5h-49v184.4h109v-41.1006h-60v-26.2002h54.7998v-24.1992c24.5 43.5996 103.9 45.3994 121.9 -14c7.5 25.5 28.8994 44.8994 57.2998 44.8994\nc13.9004 0 25.7998 -3.7998 35.4004 -14.7998h0.5v75.5h151.199v-48.0996h-56.0996v-16h118.7l22.5 -24.8008l21.7002 24.8008h62.3994zM139.3 180.1h46.5c-4.7998 25.6006 -40.3994 26.3008 -46.5 0zM292.7 131.2c34.5 0 32.5996 62.7998 0 62.7998\nc-34 0 -34.6006 -62.7998 0 -62.7998zM460.5 112.1v29.6006h-56.0996v44.7002h56.0996v28.0996h-55.5v33.9004h56.0996v30.1992h-95v-166.5h94.4004zM414.6 151.9h56.1006v-45.6006l50.7002 57l-50.7002 57v-44h-56.1006v-24.3994zM553.2 141.6l26.2998 -29.5h40.5\nl-46 51.4004l45.4004 51h-38.5l-25.6006 -29.2998l-26.5996 29.2998h-39.7002l45.5996 -51.2002l-45.5996 -51.2002h38.0996z\" />\n    <glyph glyph-name=\"fedora\" unicode=\"&#xf798;\" \nd=\"M225 416c123.7 -0.299805 223.7 -100.9 223.4 -224.6c-0.300781 -123.7 -100.9 -223.7 -224.601 -223.4l-170.2 0.400391v0c-29.5879 0 -53.6006 24.0127 -53.6006 53.5996c0 0.0830078 0.000976562 0.216797 0.000976562 0.299805l0.400391 170.3\nc0.399414 123.7 100.899 223.7 224.6 223.4zM394.8 258.8c-0.0771484 6.26953 -1.33203 16.3047 -2.7998 22.4004l-55.2002 56.0996v-1.59961c0 -5.10059 -1.5 -9.60059 -3.7998 -14.2998zM331 353.7c1.65332 -2.31348 3.53516 -6.43555 4.2002 -9.2002l54.2998 -54.5996\nc-8.27539 24.8252 -34.4834 53.4082 -58.5 63.7998zM118.1 200.8c-4.54785 -0.369141 -11.8057 -1.66895 -16.1992 -2.89941l8.5 -8.5c1.68457 3.44336 5.13477 8.55078 7.69922 11.3994zM97 196.6c-3.91211 -1.08984 -10.0498 -3.41895 -13.7002 -5.19922l27 -27.2002\nc-1.30469 3.32617 -2.37988 8.92676 -2.39941 12.5l0.899414 8zM78.7998 189.2c-3.21484 -1.79492 -8.23242 -5.02051 -11.2002 -7.2002l35.3008 -35.9004c3.70801 1.84668 10.0254 3.95215 14.0996 4.7002zM63.5996 179.4\nc-3.06738 -2.29395 -7.5918 -6.50488 -10.0996 -9.40039l34.9004 -34.5996c2.66113 2.6377 7.36523 6.44629 10.5 8.5zM50.2998 167.1c-2.89941 -3.2998 -5.7998 -6.69922 -8.59961 -10.5l35.7998 -35.8994c1.74121 3.40527 5.19141 8.5127 7.7002 11.3994zM39.2998 152.8\nc-2.07715 -3.18457 -5.0791 -8.56055 -6.7002 -12l39.5 -39.7998c0.306641 4.3584 1.91895 11.168 3.60059 15.2002zM30.5 136.5c-1.7998 -4.90039 -3.2998 -9.59961 -4.7002 -14.5l52.7002 -53.5c-3.42578 6.82812 -6.42773 18.5654 -6.7002 26.2002zM22.5996 93.5\nc0.0380859 -6.14551 1.33789 -15.957 2.90039 -21.9004l55.4004 -55.6992v1.09961c0.0341797 4.18848 1.64746 10.5947 3.59961 14.2998zM27.9004 62.7998c8.29785 -24.8047 34.5059 -53.3867 58.5 -63.7998c-1.61816 2.33008 -3.5 6.45117 -4.2002 9.2002zM22.5996 99.7998\nl64.4004 -64.2002c2.30469 2.8877 6.74023 6.78613 9.90039 8.7002l-72.2002 72.5c-1.08105 -4.62988 -2.02148 -12.2461 -2.10059 -17zM275.9 151.6c32.5996 -0.0996094 32.6992 49.2002 0.199219 49.4004l-33.5996 0.0996094\nc-4.91309 0.0224609 -8.90039 4.02734 -8.90039 8.94043v0.0595703l0.100586 47c0.0996094 40.5 38.5996 60.8008 66 54.9004c15.3994 -3.90039 30.2998 8.40039 30.2998 23.9004c0 12.0996 -8.7002 22.1992 -19.9004 24\nc-5.39062 1.26953 -14.2617 2.30078 -19.8008 2.30078c-0.110352 0 -0.289062 -0.000976562 -0.398438 -0.000976562c-0.116211 0 -0.304688 0.000976562 -0.420898 0.000976562c-57.96 0 -105.081 -47.041 -105.18 -105.001l-0.0996094 -56l-42.6006 0.0996094\nc-32.5996 0.100586 -32.6992 -49.2002 -0.0996094 -49.2998l33.5996 -0.0996094c4.40039 0 8.90039 -4.5 8.90039 -9l-0.0996094 -47c-0.00585938 -30.8574 -25.0537 -55.9004 -55.9102 -55.9004h-0.19043c-9.39941 0 -9.39941 1.59961 -15.7002 1.59961\nc-13.3691 -0.208008 -24.3457 -11.2295 -24.5 -24.5996c0 -15.5 14.2002 -24.2002 19.9004 -24.2002c61.2998 -12.8994 125.5 33.6006 125.7 102.9l0.0996094 56zM299.4 151.9c4.50781 0.442383 11.7207 1.74219 16.0996 2.89941l-8.5 8.5\nc-1.48047 -3.55762 -4.88477 -8.66504 -7.59961 -11.3994zM320.4 156.1c3.9248 1.09082 10.0625 3.46484 13.6992 5.30078l-27 27.1992c1.30566 -3.32617 2.38086 -8.92578 2.40039 -12.5l-0.900391 -8.09961zM338.4 163.5c4 2.2002 8.09961 4.7002 11.8994 7.2002\nl-36.2002 35.8994c-4.09961 -2.2998 -8.7998 -3.59961 -13.6992 -4.69922zM353.9 173.3c2.92188 2.33301 7.44727 6.36426 10.0996 9l-34.9004 35c-2.63672 -2.66797 -7.34082 -6.47656 -10.5 -8.5zM367.1 185.6c2.52539 2.77441 6.37793 7.47852 8.60059 10.5\nl-35.7998 35.9004c-1.78125 -3.37891 -5.23047 -8.48633 -7.7002 -11.4004zM378.1 199.9c2.10938 3.16602 5.11133 8.54199 6.7002 12l-39.5 39.7998c-0.305664 -4.3584 -1.91895 -11.168 -3.59961 -15.2002zM391.6 230.8l-53.0996 53.4004\nc3.69434 -6.76172 6.875 -18.499 7.09961 -26.2002l41.3008 -41.5c1.50879 3.87695 3.61426 10.2832 4.69922 14.2998zM392.6 236.4c1.05957 4.52246 2.08984 11.959 2.30078 16.5996l-64.3008 64.7002c-2.18359 -3.12988 -6.61816 -7.25098 -9.89941 -9.2002z\" />\n    <glyph glyph-name=\"figma\" unicode=\"&#xf799;\" horiz-adv-x=\"384\" \nd=\"M277 277.3h-85.4004v-256c-0.0273438 -47.085 -38.2637 -85.2998 -85.3496 -85.2998c-47.1133 0 -85.3496 38.2363 -85.3496 85.3496s38.2363 85.3506 85.3496 85.3506h0.0498047c-47.1133 0 -85.3496 38.2363 -85.3496 85.3496s38.2363 85.3506 85.3496 85.3506\nc-47.085 0 -85.2998 38.2139 -85.2998 85.2998c0 47.085 38.2148 85.2998 85.2998 85.2998h170.7c47.1133 0 85.3496 -38.2363 85.3496 -85.3496s-38.2363 -85.3506 -85.3496 -85.3506zM277 277.3c47.0801 -0.00488281 85.2949 -38.2197 85.2998 -85.2998\nc0 -47.0859 -38.2139 -85.2998 -85.2998 -85.2998s-85.2998 38.2139 -85.2998 85.2998s38.2139 85.2998 85.2998 85.2998z\" />\n    <glyph glyph-name=\"intercom\" unicode=\"&#xf7af;\" \nd=\"M392 416c30.9004 0 56 -25.0996 56 -56v-336c0 -30.9004 -25.0996 -56 -56 -56h-336c-30.9004 0 -56 25.0996 -56 56v336c0 30.9004 25.0996 56 56 56h336zM283.7 333.9v-199.5c0 -19.8008 29.8994 -19.8008 29.8994 0v199.5c0 19.7998 -29.8994 19.7998 -29.8994 0z\nM209.1 341.4v-216.5c0 -19.8008 29.9004 -19.8008 29.9004 0v216.5c0 19.7998 -29.9004 19.7998 -29.9004 0zM134.4 333.9v-199.5c0 -19.8008 29.8994 -19.8008 29.8994 0v199.5c0 19.7998 -29.8994 19.7998 -29.8994 0zM59.7002 304v-134.3\nc0 -19.7998 29.8994 -19.7998 29.8994 0v134.3c0 19.7998 -29.8994 19.7998 -29.8994 0zM383.1 76.2002c14.9004 12.8994 -4.5 35.5996 -19.3994 22.7002c-63.2002 -53.9004 -213.4 -55.3008 -279.3 0c-15 12.7998 -34.4004 -9.90039 -19.4004 -22.7002\nc76.4004 -65.4004 245.3 -63 318.1 0zM388.3 169.7v134.3c0 19.7998 -29.8994 19.7998 -29.8994 0v-134.3c0 -19.7998 29.8994 -19.7998 29.8994 0z\" />\n    <glyph glyph-name=\"invision\" unicode=\"&#xf7b0;\" \nd=\"M407.4 416c22.3994 0 40.5996 -18.2002 40.5996 -40.5996v-366.801c0 -22.3994 -18.2002 -40.5996 -40.5996 -40.5996h-366.801c-22.3994 0 -40.5996 18.2002 -40.5996 40.5996v366.801c0 22.3994 18.2002 40.5996 40.5996 40.5996h366.801zM176.1 302.4\nc-0.599609 35.0996 -53.5996 34.7998 -53.6992 -0.400391c0 -15 12.1992 -27 27.0996 -27c4.2002 0.0996094 27 4 26.5996 27.4004zM332.8 71c23.7998 0 42.7002 15.2998 53.2002 52l-17.9004 6.7002c-14.2998 -39.5 -31.7998 -32.4004 -31.7998 -16.9004\nc0.299805 8.10059 0.700195 7.7002 14.9004 58.7998c26.0996 85.8008 -61.2998 113.5 -101.8 38l8.89941 40.5h-68.7998l-9.7002 -35.5996h32.2998l-19.7998 -79.4004c-16.5 -36.6992 -57.3994 -44.0996 -57.3994 -23.1992c0.299805 11.2998 -0.700195 4.5 32.8994 138.199\nh-76.3994l-9.7002 -35.5996h31.7998c-22.0996 -90.0996 -22.9004 -89.7998 -23 -104.1c0 -48.7002 63.0996 -56.1006 94.5996 -4.30078l-8.09961 -32.5h45.0996l25.8008 103.301c14.6992 59.6992 74 47.0996 59.8994 0.699219c-9.09961 -32.5996 -40.5996 -106.6 25 -106.6z\n\" />\n    <glyph glyph-name=\"jira\" unicode=\"&#xf7b1;\" horiz-adv-x=\"496\" \nd=\"M490 206.3c8 -7.89941 8 -20.7002 0 -28.5996c-225.8 -225 137.9 136.3 -241.5 -241.7c-180.7 180.1 -109.7 109.3 -242.5 241.6c-7.90039 8 -7.90039 20.8008 0 28.7002c0 0 77 76.7998 242.5 241.7c72.0996 -71.7998 168.6 -169 241.5 -241.7zM248.5 116.3l76 75.7002\nl-76 75.7002l-76 -75.7002z\" />\n    <glyph glyph-name=\"mendeley\" unicode=\"&#xf7b3;\" horiz-adv-x=\"640\" \nd=\"M624.6 122.8c23.1006 -22.7002 17.8008 -73.5 0 -88.2998c-36.1992 -38.9004 -100 -18.2002 -104.899 35.2002c-1 11.7002 1.09961 23 5.7002 33c47.2998 103.7 -185.9 106.1 -146.5 8.2002c0.0996094 -0.100586 0.199219 -0.200195 0.299805 -0.400391\nc26.5996 -42.5996 -6.7002 -97.2998 -58.7998 -95.2002c-52 -2.2002 -85.6006 52.4004 -58.8008 95.2002c0.100586 0.200195 0.200195 0.299805 0.300781 0.400391c39.3994 97.8994 -193.801 95.5 -146.5 -8.2002c20.3994 -44.9004 -14.1006 -93.7002 -61.2002 -87.7998\nc-61.9004 7.7998 -62.5 82.8994 -42.6006 102.6c16 16 31.8008 24.7998 53 22.5c43.3008 1 49.7002 34.9004 37.5 98.7998c-22.6992 57.5 14.5 131.601 87.4004 130.8c76.9004 -0.699219 82.7998 -82 130.9 -82c49.1992 0 53.5 81.3008 130.899 82\nc72.5 0.700195 110.2 -73.2998 87.4004 -130.8c-12.2002 -63.8994 -5.7998 -97.7998 37.5 -98.7998c18.7002 2 36.0996 -4.7998 48.3994 -17.2002zM320.7 141.9c43.5996 0 62.7998 37.7998 62.7998 62.7998c0 34.7002 -28.0996 62.7998 -62.7998 62.7998h-0.600586\nc-34.5996 0 -62.7998 -28.0996 -62.7998 -62.7998c0 -25.2998 19.4004 -62.7998 62.7998 -62.7998h0.600586z\" />\n    <glyph glyph-name=\"raspberry-pi\" unicode=\"&#xf7bb;\" horiz-adv-x=\"407\" \nd=\"M372 215.5c28.7002 -17.2002 54.5996 -72.5996 14 -117.7c-2.59961 -14.0996 -7.09961 -24.2002 -11 -35.3994c-5.90039 -45.2002 -44.4004 -66.3008 -54.5996 -68.8008c-14.9004 -11.1992 -30.7002 -21.7998 -52.2002 -29.1992\nc-20.2002 -20.6006 -42.1006 -28.4004 -64.2002 -28.4004h-1c-22 0 -44 7.7998 -64.2998 28.4004c-21.4004 7.39941 -37.2998 18 -52.2002 29.1992c-10.0996 2.5 -48.7002 23.6006 -54.5996 68.8008c-3.90039 11.1992 -8.40039 21.2998 -11 35.3994\nc-40.5 45 -14.6006 100.5 14.1992 117.7l3.7002 6.5c-0.0996094 46.4004 21.4004 65.2998 46.5 79.7002c-7.59961 2 -15.3994 3.7002 -17.5996 13.2002c-13.1006 3.39941 -15.7998 9.39941 -17.1006 15.7998c-3.39941 2.2998 -14.7998 8.7002 -13.5996 19.7002\nc-6.2998 4.39941 -9.90039 10.0996 -8.09961 18.0996c-6.90039 7.5 -8.7002 13.7002 -5.80078 19.4004c-8.2998 10.1992 -4.59961 15.5 -1.09961 20.8994c-6.2002 11.2002 -0.799805 23.2002 16.5 21.2002c6.90039 10.0996 21.9004 7.7998 24.2002 7.7998\nc2.5 3.2998 6 6 16.5 4.7002c6.7998 6.09961 14.3994 5.09961 22.2998 2.09961c3.2002 2.5 6.09961 3.40039 8.7002 3.5c5 0.100586 9.2998 -2.89941 13.8994 -4.2998c11.3008 3.60059 13.8008 -1.39941 19.4004 -3.39941c12.2998 2.59961 16.0996 -3 22 -8.90039\nl6.90039 0.0996094c18.5996 -10.7998 27.7998 -32.7998 31.0996 -44.0996c3.2998 11.2998 12.5 33.2998 31.0996 44.0996l6.90039 -0.0996094c5.90039 5.90039 9.7002 11.5 22 8.90039c5.5 2.09961 8.09961 7 19.4004 3.39941\nc7.09961 2.2002 13.2998 8.10059 22.5996 0.799805c7.90039 2.90039 15.5 4 22.2998 -2.09961c10.5 1.2998 13.9004 -1.5 16.5 -4.7002c2.2998 0 17.2998 2.2998 24.2002 -7.7998c17.2998 2 22.7998 -10 16.5996 -21.2002c3.5 -5.2998 7.2002 -10.5996 -1.09961 -20.8994\nc2.90039 -5.7002 1.09961 -11.9004 -5.7998 -19.4004c1.89941 -8 -1.7002 -13.7002 -8.10059 -18.0996c1.2002 -11 -10.1992 -17.4004 -13.5996 -19.7002c-1.2998 -6.40039 -4 -12.5 -17.0996 -15.7998c-2.2002 -9.60059 -10 -11.2002 -17.6006 -13.2002\nc25.1006 -14.4004 46.6006 -33.2998 46.5 -79.7002zM349.8 223.5c1.5 48.7002 -36.3994 75.4004 -82.0996 67.9004c-16.7998 -2.80078 80.5996 -86.6006 82.0996 -67.9004zM306.8 130.4c24.5 15.7998 28.9004 51.5996 9.90039 80\nc-19 28.3994 -54.2998 38.5996 -78.7998 22.7998s-28.9004 -51.6006 -9.90039 -80c19 -28.4004 54.2998 -38.6006 78.7998 -22.7998zM238.9 418.7c-16.6006 -15.9004 -40.1006 -55.9004 -5.80078 -71.7998c29 23.5 63.6006 40.6992 102 53.5\nc-49.2998 -25.1006 -78 -45.3008 -93.6992 -62.6006c8.09961 -31.7002 50 -33.2002 65.3994 -32.2998c-3.09961 1.40039 -5.7998 3.09961 -6.7002 5.7998c3.80078 2.7002 17.5 0.299805 27 5.60059c-3.69922 0.699219 -5.39941 1.39941 -7.09961 4.09961\nc9 2.90039 18.7002 5.2998 24.4004 10c-3.10059 0 -6 -0.599609 -10 2.09961c8.09961 4.30078 16.6992 7.7002 23.3994 14.2002c-4.2002 0.100586 -8.7002 0.100586 -10 1.60059c7.40039 4.5 13.6006 9.5 18.7998 15c-5.7998 -0.700195 -8.2998 -0.100586 -9.69922 0.899414\nc5.59961 5.60059 12.5996 10.4004 16 17.2998c-4.40039 -1.5 -8.30078 -2.09961 -11.2002 0.100586c1.89941 4.2998 10 6.7002 14.7002 16.5996c-4.60059 -0.399414 -9.40039 -1 -10.4004 0c2.09961 8.5 5.7002 13.2002 9.2998 18.2002\nc-9.7998 0.200195 -24.5996 0 -23.8994 0.799805l6 6.10059c-9.5 2.5 -19.3008 -0.400391 -26.4004 -2.60059c-3.2002 2.5 0 5.60059 3.90039 8.7998c-8.10059 -1 -15.5 -2.89941 -22.1006 -5.39941c-3.59961 3.09961 2.2998 6.2998 5.10059 9.39941\nc-12.5 -2.2998 -17.8008 -5.59961 -23.1006 -8.89941c-3.7998 3.59961 -0.200195 6.7002 2.40039 9.7998c-9.40039 -3.5 -14.2998 -7.90039 -19.4004 -12.2998c-1.7998 2.2998 -4.39941 4 -1.2002 9.59961c-6.69922 -3.7998 -11.7998 -8.2998 -15.5 -13.2998\nc-4.19922 2.59961 -2.5 6.09961 -2.5 9.40039c-7 -5.60059 -11.3994 -11.5 -16.7998 -17.3008c-1.09961 0.800781 -2.09961 3.40039 -2.89941 7.60059zM204.5 304.1c-27.2002 0.700195 -53.4004 -19.8994 -53.4004 -31.7998\nc-0.0996094 -14.5996 21.5 -29.3994 53.6006 -29.7998c32.7998 -0.200195 53.7002 11.9004 53.7998 26.9004c0.0996094 16.8994 -29.7998 35 -54 34.6992zM81.5 316.9c9.59961 -5.2002 23.2002 -2.80078 27.2002 -5.60059\nc-0.900391 -2.59961 -3.60059 -4.39941 -6.7002 -5.7998c15.4004 -0.900391 57.4004 0.5 65.4004 32.2998c-15.7002 17.2998 -44.4004 37.6006 -93.7002 62.6006c38.3994 -12.8008 73 -30 102 -53.5c34.0996 15.8994 10.5996 55.8994 -6 71.7998\nc-0.900391 -4.2002 -1.7998 -6.7998 -2.90039 -7.60059c-5.39941 5.80078 -9.7998 11.7002 -16.7998 17.3008c0 -3.2002 1.59961 -6.80078 -2.5 -9.40039c-3.7002 5 -8.7998 9.5 -15.5 13.2998c3.2002 -5.59961 0.5 -7.2998 -1.2002 -9.59961\nc-5.09961 4.39941 -10 8.89941 -19.3994 12.2998c2.59961 -3.09961 6.19922 -6.2002 2.39941 -9.7998c-5.2998 3.2998 -10.5996 6.59961 -23.0996 8.89941c2.7998 -3.09961 8.59961 -6.2998 5.09961 -9.39941c-6.7002 2.5 -14 4.2998 -22.0996 5.39941\nc3.7998 -3.19922 7.09961 -6.2998 3.89941 -8.7998c-7.09961 2.2002 -16.8994 5.10059 -26.3994 2.60059l6 -6.10059c0.700195 -0.799805 -14.1006 -0.700195 -23.9004 -0.799805c3.5 -4.90039 7.2002 -9.7002 9.2998 -18.2002c-1 -1 -5.7998 -0.399414 -10.3994 0\nc4.7002 -9.89941 12.7998 -12.3994 14.7002 -16.5996c-2.90039 -2.10059 -6.90039 -1.60059 -11.2002 -0.100586c3.2998 -6.89941 10.3994 -11.6992 16 -17.2998c-1.40039 -1 -3.90039 -1.59961 -9.7002 -0.899414c5.2002 -5.5 11.4004 -10.5 18.7998 -15\nc-1.2998 -1.60059 -5.7998 -1.5 -10 -1.60059c6.7002 -6.5 15.2998 -9.89941 23.4004 -14.2002c-4 -2.7998 -6.90039 -2.09961 -10 -2.09961c5.7002 -4.7002 15.3994 -7.2002 24.3994 -10c-1.69922 -2.59961 -3.39941 -3.40039 -7.09961 -4.09961zM141.6 292.8\nc-45.5996 7.60059 -83.5996 -19.2002 -82.0996 -67.8994c1.5 -18.6006 98.9004 65.0996 82.0996 67.8994zM38.2002 106c21.5996 -9.5 39.0996 105.3 12.5996 98.2998c-43.8994 -24.5996 -36.2998 -79.5 -12.5996 -98.2998zM129.2 7.7998\nc14.0996 10.4004 6.39941 45.7002 -10.5 65.7002c-19.4004 22.2002 -44.6006 35.4004 -60.9004 25.5996c-10.8994 -8.19922 -12.8994 -36 2.60059 -63.3994c23 -32.6006 55.5 -35.7998 68.7998 -27.9004zM102.8 127.5c24.4004 -15.7998 59.7002 -5.59961 78.7998 22.7998\nc19 28.4004 14.6006 64.2002 -9.89941 80s-59.7998 5.60059 -78.7998 -22.7998s-14.6006 -64.2002 9.89941 -80zM205 -48c28.4004 -0.5 57.7002 24.4004 57.2002 35.4004c-0.100586 11.3994 -32 19.8994 -55.7002 18.8994c-23.5 0.600586 -59.7002 -9.2998 -59.2998 -22\nc-0.400391 -8.59961 28.3994 -33.5 57.7998 -32.2998zM263.9 76.9004v0.599609c-0.200195 29.5996 -26.8008 53.5996 -59.4004 53.4004c-32.5996 -0.200195 -59 -24.3008 -58.7998 -54v-0.600586c0.200195 -29.5996 26.7998 -53.5996 59.3994 -53.3994\nc32.6006 0.199219 59 24.2998 58.8008 54zM346.1 34.2002c18.4004 23.2002 12.2002 62 1.7002 72.2998c-15.5996 11.9004 -38 -3.2998 -58.8994 -26.5996c-18.3008 -21.1006 -28.4004 -59.6006 -15.1006 -72c12.7002 -9.60059 47 -8.30078 72.2998 26.2998zM369 107.4\nc23.7002 18.6992 31.2998 73.5996 -12.5996 98.2998c-26.4004 7 -8.90039 -107.7 12.5996 -98.2998z\" />\n    <glyph glyph-name=\"redhat\" unicode=\"&#xf7bc;\" horiz-adv-x=\"512\" \nd=\"M341.52 162.59v-0.149414c33.6504 0 82.3408 6.93945 82.3408 47c0.219727 6.73926 0.859375 1.81934 -20.8799 96.2393c-4.62012 19.1504 -8.68066 27.8398 -42.3105 44.6504c-26.0898 13.3398 -82.9199 35.3701 -99.7295 35.3701\nc-15.6602 0 -20.2002 -20.1699 -38.8701 -20.1699c-18 0 -31.3105 15.0596 -48.1201 15.0596c-16.1406 0 -26.6602 -11 -34.7803 -33.6201c-27.5 -77.5498 -26.2803 -74.2695 -26.1201 -78.2695c0 -24.7998 97.6406 -106.11 228.47 -106.11zM429.07 193.19\nl-0.0703125 -0.0302734c4.65039 -22 4.65039 -24.3506 4.65039 -27.25c0 -37.6602 -42.3301 -58.5605 -98 -58.5605c-125.74 -0.0800781 -235.91 73.6504 -235.91 122.33v0.0771484c0 5.65332 1.81836 14.4531 4.05957 19.6436\nc-45.2402 -2.26074 -103.8 -10.3301 -103.8 -62.0303c0 -84.6699 200.63 -189 359.49 -189c121.79 0 152.51 55.0801 152.51 98.5801c0 34.21 -29.5898 73.0498 -82.9297 96.2402z\" />\n    <glyph glyph-name=\"sketch\" unicode=\"&#xf7c6;\" horiz-adv-x=\"512\" \nd=\"M27.5 285.8l78.9004 105.8l-6.90039 -130.699h-90.5zM396.3 402.3l7.10059 -133.5l-135.7 147.2zM112.2 229.7l122.6 -239.7l-224.899 261.7h91.0996zM114.2 260.9l142.1 154.1l60.4004 -65.5996l81.5 -88.5h-284zM411.5 251.8v-0.0996094h90.9004l-224.801 -261.7z\nM415.4 379l87.8994 -118.1h-90.2998l-6.09961 113.399l-0.900391 17.2998zM113.5 354.5l2.59961 47.7998l128.601 13.7002l-135.8 -147.1zM401.2 251.8l-144.9 -283.8l-102.7 200.9l-42.3994 82.8994h290z\" />\n    <glyph glyph-name=\"sourcetree\" unicode=\"&#xf7d3;\" \nd=\"M427.2 245c-0.0947266 -81.5225 -63.1279 -168.031 -140.7 -193.1v-101.601c0 -7.89355 -6.40625 -14.2998 -14.2998 -14.2998v0h-96.4004c-7.89355 0 -14.2998 6.40625 -14.2998 14.2998v101.7c-77.5566 25.0537 -140.5 111.535 -140.5 193.037v0.363281\nc0.200195 112 91.0996 202.8 203.2 202.6c112.1 0 203 -90.9004 203 -203zM155.6 245c0 -91 137.2 -89.9004 137.301 0c0 90.7998 -137.301 90.7998 -137.301 0z\" />\n    <glyph glyph-name=\"suse\" unicode=\"&#xf7d6;\" horiz-adv-x=\"640\" \nd=\"M471.08 345.34c0 1 1.01953 0.759766 0.919922 0.660156c4.2002 -0.599609 92.2002 -13.7002 129.2 -35.2998c12.0996 -6.90039 20.7002 -21.5 34.5 -69.6006c0.700195 -2.7998 -2.7998 -5.09961 -3.60059 -5.69922\nc-26.8994 -18.8008 -56.7998 -36.6006 -145.199 21.6992c11.0996 -26.6992 10.6992 -25.0996 11 -25.5c5.39941 -2.7998 56.2998 -28.6992 81.5996 -28.1992c20.4004 0.399414 42.2002 10.3994 50.9004 15.5996c0 0 4.5 2.7002 3.19922 -2.40039\nc-0.5 -1.89941 -3.2998 -14.5996 -7 -17.6992c-1 -1 -36.5996 -28.4004 -103.1 -28c-42.7002 1 -76.7998 16.3994 -82.4004 -17.4004c-2.7998 -17.0996 6.10059 -37.5 18.9004 -55.7998h-48.5996c-15.9004 28.3994 -23.1006 68.2998 -79.8008 68.2998\nc-51.5996 0 -48.3994 -50.7002 -42.6992 -68.2998h-45.9004c-18.7998 68.7998 -69.2002 98.5996 -102.4 104.3c-74.2998 12.7998 -113 -49.2002 -87 -98.4004c23.1006 -43.5996 81.4004 -44.0996 99.7002 -20.3994c19.2002 25 3.7998 62.8994 -28.5 65.7002\nc-12.2998 1.09961 -25.2998 -4.60059 -25.5 -16.9004v-0.0595703c0 -10.9004 10 -13.8008 12 -14c7.2998 0.399414 8.90039 1.89941 11.7998 2.39941c5.2002 0.900391 16.8008 -1.7998 16.8008 -13.8994c0 -8.40039 -6.80078 -13.1006 -13.3008 -14.9004\nc-4.2373 -1.46777 -11.3154 -2.67773 -15.7998 -2.7002c-17.2002 0 -41.2002 14.7998 -41.5 42.6006c-0.200195 15.6992 7.7002 30 21.6006 39.1992c15.8994 10.5 43.5996 14.1006 69.1992 -1.59961c31.5 -19.2998 39.7002 -57.0996 31.5 -82.9004\nc-11.8994 -37.2998 -45.5996 -57.1992 -90 -53.2998c-31.5 2.7998 -60.6992 19.4004 -78.0996 44.4004c-6.32715 9.0332 -13.7197 25.0264 -16.5 35.7002c-7.12012 28.0596 0 58.0596 5.48047 71.3994c25.6992 63.6006 80.1992 97.2998 99.5996 109.7\nc100.2 61.5996 171.1 59.0996 223 57.2998c61.2998 -2.2002 126.6 -23.2998 135.7 -26.2998c0 2 0.299805 20.2998 0.299805 20.2998zM531.48 272.54c-1.10059 -33.5 39.0996 -51.5996 63.2998 -28.9004c24.3994 22.9004 9 64 -24.4004 65.2002\nc-0.380859 0.0136719 -0.999023 0.0253906 -1.37988 0.0253906c-20.0615 0 -36.8711 -16.2734 -37.5195 -36.3252zM570.08 297.84c14.0312 -0.413086 25.4199 -12.1406 25.4199 -26.1787c0 -0.282227 -0.00878906 -0.739258 -0.0195312 -1.02148\nc-0.50293 -13.9795 -12.2646 -25.3262 -26.2539 -25.3262c-14.501 0 -26.2695 11.7695 -26.2695 26.2705s11.7686 26.2695 26.2695 26.2695c0.236328 0 0.618164 -0.00585938 0.853516 -0.0136719zM574.38 269.04c15.4004 0 15.4004 15.5996 0 15.5996\nc-15.3994 0 -15.3994 -15.5996 0 -15.5996z\" />\n    <glyph glyph-name=\"ubuntu\" unicode=\"&#xf7df;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM300.7 347c-8.7998 -15.2002 -3.60059 -34.7002 11.7002 -43.5996c15.1992 -8.80078 34.6992 -3.5 43.5 11.6992c8.7998 15.3008 3.59961 34.8008 -11.7002 43.6006\nc-15.2002 8.7998 -34.7002 3.5 -43.5 -11.7002zM87.4004 160.1c17.5996 0 31.8994 14.3008 31.8994 31.9004s-14.2998 31.9004 -31.8994 31.9004c-17.6006 0 -31.9004 -14.3008 -31.9004 -31.9004s14.2998 -31.9004 31.9004 -31.9004zM115.5 157\nc8.7002 -32.7002 29.0996 -60.7002 56.5 -79l23.7002 39.5996c-51.5 36.3008 -51.5 112.5 0 148.801l-23.7002 39.5996c-27.4004 -18.4004 -47.9004 -46.2998 -56.5 -79.0996c22.4004 -18 22.2998 -52 0 -69.9004zM344.2 25.2998\nc15.2998 8.7998 20.5 28.2998 11.7002 43.6006c-8.80078 15.2998 -28.3008 20.5 -43.5 11.6992c-15.3008 -8.7998 -20.5 -28.2998 -11.7002 -43.5996s28.2002 -20.5 43.5 -11.7002zM344.5 94.7998c23 22.9004 38 53.9004 40.2998 88.4004l-46.0996 0.700195\nc-5.5 -62.7002 -71.9004 -100.9 -128.9 -74.4004l-22.5 -40.2998c47.7998 -23.7002 91.5 -10.7998 96.7002 -9.40039c4.40039 28.4004 33.7998 45.2998 60.5 35zM338.6 200.1l46 0.600586c-2.19922 34.5996 -17.0996 65.5996 -40.1992 88.5\nc-26.7002 -10.2998 -56.1006 6.7002 -60.5 35c-5.2002 1.39941 -48.8008 14.2998 -96.7002 -9.40039l22.5 -40.2998c57.5996 26.7998 123.5 -12.4004 128.899 -74.4004z\" />\n    <glyph glyph-name=\"ups\" unicode=\"&#xf7e0;\" horiz-adv-x=\"384\" \nd=\"M103.2 145v123h32.5996v-141.6c-17.7002 -12.1006 -97.8994 -35.9004 -97.8994 39v102.6h32.6992v-104c0 -32.0996 27.4004 -22.5996 32.6006 -19zM4 373.18c93.5996 49.6006 259.1 61.6006 375.4 0v-220.899c0 -103.9 -75.3008 -135.2 -187.7 -184.101\nc-112.8 48.9004 -187.7 80.4004 -187.7 184.101v220.899zM362.1 152.28v216.2c-109.3 10.1992 -238.6 4 -340.899 -89.8008v-126.399c0 -86.6006 53 -113.5 170.5 -165.3c117.2 51.6992 170.399 78.6992 170.399 165.3zM152.5 259.68\nc23.7002 15.3203 104.4 31.8008 104.4 -65.5996c0 -75.9004 -47.3008 -85.7998 -71.7002 -78.5v-68.7002h-32.7002v212.8zM185.2 142.38c2 -0.799805 38.3994 -16.8994 38.3994 51c0 62 -30 53.5 -38.3994 49.2998v-100.3zM264.3 228.78\nc-0.200195 41.0996 51.2002 53.8994 79.7002 31.8994v-28.3994c-17.9004 18.2998 -47.9004 18.0996 -48.5 -2.2002c-0.700195 -26.5996 55.0996 -21.7002 53.4004 -73.2002c-1.30078 -41.5996 -47 -55 -83.2002 -33.5v30.1006\nc20.3994 -18.1006 51.3994 -18.6006 50.7998 4.89941c-0.599609 27.9004 -52.0996 23.1006 -52.2002 70.4004z\" />\n    <glyph glyph-name=\"usps\" unicode=\"&#xf7e1;\" horiz-adv-x=\"576\" \nd=\"M460.3 206.3c-1.39941 -2.2002 -4.2998 -4.39941 -3.7998 0.100586c2.90039 11.5996 13.9004 30.5 4.40039 32c-17.8008 3.09961 -88.1006 -4.5 -88.1006 0c0 2.39941 26.7002 3.09961 37.9004 8.69922c9.39941 9.40039 10.7998 8 10.8994 8h27\nc26.9004 0 37.5 -7.5 11.7002 -48.7998zM348.2 183.7c-62.2998 -21.2002 -124.8 -54.2002 -321.2 -151.5l52.4004 245.5c185 0 335.199 5.59961 337.899 -22.6006h-196.6l30.7002 -93.2998c35 16.7998 120.899 51.7002 172.6 53.9004\nc21.7998 0.799805 30.5996 -2.90039 26.2002 -5.7998c-4.7002 -2.30078 -38 -4.90039 -102 -26.2002zM94.7002 352h454.3l-67.7002 -319.7h-423.1s402 157.3 406.399 160.2c0 0 35.7002 48 14.6006 67.7002c-6.5 6.59961 -16 6.59961 -52.4004 6.59961\nc-2.09961 19.5 -78.7998 31.5 -332.1 85.2002z\" />\n    <glyph glyph-name=\"yarn\" unicode=\"&#xf7e3;\" horiz-adv-x=\"496\" \nd=\"M393.9 102.8c-39 -9.2998 -48.4004 -32.0996 -104 -47.3994c0 0 -2.7002 -4 -10.4004 -5.80078c-13.4004 -3.2998 -63.9004 -6 -68.5 -6.09961c-12.4004 -0.0996094 -19.9004 3.2002 -22 8.2002c-6.40039 15.2998 9.2002 22 9.2002 22\nc-8.10059 5 -9 9.89941 -9.7998 8.09961c-2.40039 -5.7998 -3.60059 -20.0996 -10.1006 -26.5c-8.7998 -8.89941 -25.5 -5.89941 -35.2998 -0.799805c-10.7998 5.7002 0.799805 19.2002 0.799805 19.2002s-5.7998 -3.40039 -10.5 3.59961\nc-6 9.2998 -17.0996 37.2998 11.5 62c-1.2998 10.1006 -4.59961 53.7002 40.6006 85.6006c0 0 -20.6006 22.7998 -12.9004 43.2998c5 13.3994 7 13.2998 8.59961 13.8994c5.7002 2.2002 11.3008 4.60059 15.4004 9.10059c20.5996 22.2002 46.7998 18 46.7998 18\ns12.4004 37.7998 23.9004 30.3994c3.5 -2.2998 16.2998 -30.5996 16.2998 -30.5996s13.5996 7.90039 15.0996 5c8.2002 -16 9.2002 -46.5 5.60059 -65.0996c-6.10059 -30.6006 -21.4004 -47.1006 -27.6006 -57.5c-1.39941 -2.40039 16.5 -10 27.8008 -41.3008\nc10.3994 -28.5996 1.09961 -52.6992 2.7998 -55.2998c0.799805 -1.39941 13.7002 -0.799805 36.3994 13.2002c12.8008 7.90039 28.1006 16.9004 45.4004 17c16.7002 0.5 17.5996 -19.2002 4.90039 -22.2002zM496 192c0 -136.9 -111.1 -248 -248 -248s-248 111.1 -248 248\ns111.1 248 248 248s248 -111.1 248 -248zM416.7 116.8c-1.7002 13.6006 -13.2002 23 -28 22.7998c-22 -0.299805 -40.5 -11.6992 -52.7998 -19.1992c-4.80078 -3 -8.90039 -5.2002 -12.4004 -6.80078c3.09961 44.5 -22.5 73.1006 -28.7002 79.4004\nc7.7998 11.2998 18.4004 27.7998 23.4004 53.2002c4.2998 21.7002 3 55.5 -6.90039 74.5c-1.59961 3.09961 -7.39941 11.2002 -21 7.39941c-9.7002 20 -13 22.1006 -15.5996 23.8008c-1.10059 0.699219 -23.6006 16.3994 -41.4004 -28\nc-12.2002 -0.900391 -31.2998 -5.30078 -47.5 -22.8008c-2 -2.19922 -5.89941 -3.7998 -10.0996 -5.39941h0.0996094c-8.39941 -3 -12.2998 -9.90039 -16.8994 -22.2998c-6.5 -17.4004 0.199219 -34.6006 6.7998 -45.7002c-17.7998 -15.9004 -37 -39.7998 -35.7002 -82.5\nc-34 -36 -11.7998 -73 -5.59961 -79.6006c-1.60059 -11.0996 3.69922 -19.3994 12 -23.7998c12.5996 -6.7002 30.2998 -9.59961 43.8994 -2.7998c4.90039 -5.2002 13.7998 -10.0996 30 -10.0996c6.7998 0 58 2.89941 72.6006 6.5c6.7998 1.59961 11.5 4.5 14.5996 7.09961\nc9.7998 3.09961 36.7998 12.2998 62.2002 28.7002c18 11.7002 24.2002 14.2002 37.5996 17.3994c12.9004 3.2002 21 15.1006 19.4004 28.2002z\" />\n    <glyph glyph-name=\"airbnb\" unicode=\"&#xf834;\" \nd=\"M224 74.8799h0.0595703c24.71 31.1797 39.5508 58.9297 45 83.1797c22.5508 88 -112.609 88 -90.0596 0c4.91992 -23.75 19.7598 -51.5098 45 -83.1797zM362.15 1.65039c35.6396 15.3496 50.1797 53.5693 37.0098 86.6396\nc-25.4902 61.6104 -78.8398 168.47 -114.84 239.09c-16.9707 33.9297 -28.0303 59.8701 -60.3701 59.8701c-33.8203 0 -43.6299 -27.3301 -59.3799 -57.4004c-4.15039 -10.3799 -100.771 -202.399 -115.87 -241.56c-17.8105 -50.0303 21.2998 -98.5205 71.2998 -91.0898\nc24.5996 2.22949 52.6201 18.8701 85.1504 54.9199c-29.2002 37.1104 -47.5 70.3096 -54.4307 99.5c-11.8799 53.9902 18.3604 100.5 73.2803 100.5c64.96 0 122.75 -69.9297 18.8496 -200c35.6309 -39.5898 77.2402 -68.7803 119.301 -50.4697zM409.15 137.77\nc0 -0.679688 16.8496 -35.6895 16.8301 -39.5791c25.2393 -69.3301 -26.7207 -130.24 -89.6104 -130.19c-11.1104 0 -53.6904 -1.37988 -112.37 62.4004c-51.7598 -56.3408 -90.6602 -62.4004 -112.37 -62.4004c-62.8896 0 -114.85 60.8604 -89.6299 130.19\nc0.889648 2.61914 11.1797 32.71 117.34 245.02c19.79 41.1201 39.1406 72.79 84.6602 72.79c49.1299 0 56.2695 -3.92969 185.15 -278.23z\" />\n    <glyph glyph-name=\"battle-net\" unicode=\"&#xf835;\" horiz-adv-x=\"512\" \nd=\"M448.61 222.38c60.75 -36.25 71.9893 -73.8096 57.3193 -93.6895c-4.70996 -6.88086 -25.1797 -36.2402 -148 -31.6406c-21.8193 -30.3994 -45.25 -53.2695 -67.4697 -69.2695c28.54 -53.7803 54.2998 -85.0303 62.54 -91.7803c0 0 -3.44043 0.160156 -8.58008 3.37012\nc-2.69434 1.61133 -6.61426 4.78809 -8.75 7.08984c-15.6299 16.1797 -35.5195 41.9404 -55.7002 74.1201c-43.9502 -28.1104 -81.1299 -29.0996 -88.4395 -9.4502c-4.83984 10.8301 1.5293 26.5 9.05957 39.3398c-31.3203 -17.5098 -61.7002 -26.8496 -86.7002 -21.1396\nc-6.79004 1.54004 -17.6299 5.50977 -23.1992 18.2598c-4.52051 9.53027 -6.02051 24.2598 -0.150391 47.1406c9.07031 35.3398 37.5801 82.2998 47.3096 97.6992c3.75 -8.62988 -20.7793 40.1904 -26 93.1904c-89.1592 0 -110.56 -8.83984 -111.56 -9.21973\nc1.54004 2.44922 7.86035 7.26953 17.7598 9.71973c22 5.47949 54.6406 9.84961 93 11.2295c-2.38965 52.0703 15.3398 84.7705 36 81.29h0.180664c11.3291 -1.2998 21.2598 -13.5801 28.5 -25.9297c0.669922 35.2002 7.7998 65.54 25 84.0703\nc4.72949 5.14941 13.5693 12.5498 27.3994 11h0.0498047c10.5205 -0.850586 24 -6.91992 40.8398 -23.4707c25.6006 -25.0693 51.54 -71.9893 60.4805 -88.9297c37.25 -3.7002 68.7695 -12.5801 93.7695 -23.7998c32.3506 51.5898 46.4805 89.5303 48.2002 100.05\nc0.640625 -1.25 2.93066 -8.41992 -0.450195 -20.25c-6.22949 -21.6201 -18.5791 -51.7197 -36.3398 -85.2998c45.79 -23.7305 65.3203 -55.0098 52.8506 -71.3301c-3.35059 -4.94043 -12.0498 -12.5498 -38.9199 -12.3701zM370.76 116.16\nc70.4102 4.37988 79.6504 20.5703 78.5098 33.5c-1.87988 21.25 -21.1992 41.2598 -49.0596 58.8301c0.889648 -24.5605 -5.63965 -54.6201 -29.4502 -92.3301zM216.9 60.3096c-19.04 -30.46 9.19922 -39.5596 49.7998 -17.6992\nc-7 12.0898 -13.9199 24.8594 -20.6006 38.1895c-9.66992 -7.37012 -19.4395 -14.2598 -29.1992 -20.4902zM431.9 231.66c36.2598 -1.23047 29.4199 27.8496 -9.64062 51.9502c-5.9707 -10.373 -16.1582 -26.9043 -22.7402 -36.9004\nc11.2207 -4.70996 22.0908 -9.70996 32.3809 -15.0498zM279.18 50c28.3799 18.2002 60.1689 48.1201 84.7695 85.4297c18.46 27.96 26.1494 56.0205 25.4102 79.5703c-30.5801 17.3203 -89.3604 42.7197 -167.23 57.21c0.350586 18.4805 2.08984 19.8799 2.16016 20.3301\nc10.9229 -1.33496 28.5693 -4.04492 39.3896 -6.0498c32.5664 -6.08984 84.2383 -20.2959 115.34 -31.71c-15.6191 33.1494 -41.4092 47.2197 -41.5195 47.2197c1.59961 0.160156 28.1299 -6 48.8604 -43.7197c8.42676 11.2061 16.2031 22.0293 23.3301 32.4697\nc-29.96 15.46 -71.75 28.04 -116.32 30.71c-33.4502 1.99023 -61.6299 -5.38965 -81.6299 -17.8096c0.240234 -35.2607 7.66992 -98.96 34 -173.431c-16.8301 -9.12988 -17.7402 -7.87012 -18.6699 -8.25c-17.1924 40.7627 -37.2041 109.235 -44.6699 152.84\nc-21.0908 -30.3994 -20.1406 -59.5 -20.1406 -59.5693c-0.919922 1.22949 -8.81934 27.4297 13.4707 64.2295c-13.5801 1.70996 -26.5508 2.9707 -38.8506 3.87988c1.57031 -33.6797 11.5703 -76.1494 31.5703 -116.069c14.8701 -29.71 35.1201 -50.3105 55.71 -61.4902\nc30.4102 17.9199 81.0498 55.6504 132.75 115.92c14.9697 -9 16.1494 -11.71 16.5098 -12c-7.91309 -10.5332 -16.2227 -20.9033 -24.9287 -31.1104c-21.542 -25.1426 -59.6494 -62.7744 -85.0605 -84c37.5303 -3.38965 62.5303 12.1807 62.5303 12.25\nc-0.860352 -1.67969 -20.0303 -21.6797 -63.2803 -20.4092c5.5 -12.9404 10.9902 -25.0908 16.5 -36.4404zM306.579 337c-1.58008 2.4502 -39.5801 58.8496 -56.4805 54.6104c-16.8994 1.09961 -36.21 -22.9805 -38.21 -75.2803\nc21.1104 13.2402 50.1299 22.3301 94.6904 20.6699zM175.929 333.9c-3.7998 6.68945 -8.66992 12.4795 -14.4297 13.5693h-0.0898438c-24.79 1.41016 -24.75 -52.8301 -24.6699 -49.5898c13.6602 -0.00976562 27.8496 -0.410156 42.3994 -1.25977\nc-1.62012 12.6602 -2.72949 25.1699 -3.20996 37.2803zM147.869 171.9c-30.7998 -61.5098 -19.8701 -76.6104 -19.6699 -76.8203c7.38965 -15.4902 38.1299 -20.25 84.9199 4.50977c-21.9502 11.7402 -44.4902 32.6104 -65.25 72.3105zM357.929 97.0996z\" />\n    <glyph glyph-name=\"bootstrap\" unicode=\"&#xf836;\" \nd=\"M292.3 136.07c0 -42.4102 -39.7197 -41.4307 -43.9199 -41.4307h-80.8896v81.6904h80.8896c42.5605 0 43.9199 -31.9004 43.9199 -40.2598zM242.15 209.2h-74.6602v72.1797h74.6602c34.9297 0 38.4395 -20.3496 38.4395 -35.8701\nc0 -37.3096 -37.7695 -36.3096 -38.4395 -36.3096zM448 341.33v-298.66c-0.120117 -41.0977 -33.5723 -74.5498 -74.6699 -74.6699h-298.66c-41.0977 0.120117 -74.5498 33.5723 -74.6699 74.6699v298.66c0.120117 41.0977 33.5723 74.5498 74.6699 74.6699h298.66\nc41.0977 -0.120117 74.5498 -33.5723 74.6699 -74.6699zM338.05 130.14c0 21.5703 -6.64941 58.29 -49.0498 67.3506v0.729492c22.9102 9.78027 37.3398 28.25 37.3398 55.6406c0 7 2 64.7793 -77.5996 64.7793h-127v-261.33c128.229 0 139.87 -1.67969 163.6 5.70996\nc14.21 4.4209 52.71 17.9805 52.71 67.1201z\" />\n    <glyph glyph-name=\"buffer\" unicode=\"&#xf837;\" \nd=\"M427.84 67.3301l-196.5 -97.8203c-1.93848 -0.832031 -5.22461 -1.50684 -7.33496 -1.50684c-2.10938 0 -5.39551 0.674805 -7.33496 1.50684l-196.51 97.8203c-4 2 -4 5.28027 0 7.29004l47.0596 23.3799c1.94238 0.832031 5.23242 1.50684 7.3457 1.50684\nc2.1123 0 5.40234 -0.674805 7.34473 -1.50684l134.76 -67c1.93848 -0.836914 5.22461 -1.51562 7.33496 -1.51562c2.11133 0 5.39746 0.678711 7.33496 1.51562l134.76 67c1.94043 0.832031 5.22949 1.50781 7.34082 1.50781s5.39941 -0.675781 7.33984 -1.50781\nl47.0596 -23.4297c4.0498 -1.95996 4.0498 -5.24023 0 -7.24023zM427.84 203.86c4.0498 -2.01074 4.0498 -5.29004 0 -7.31055l-196.5 -97.7998c-1.93848 -0.832031 -5.22461 -1.50781 -7.33496 -1.50781c-2.10938 0 -5.39551 0.675781 -7.33496 1.50781l-196.51 97.7998\nc-4 2.02051 -4 5.31055 0 7.31055l47.0596 23.4297c1.94238 0.832031 5.23242 1.50684 7.3457 1.50684c2.1123 0 5.40234 -0.674805 7.34473 -1.50684l134.76 -67.0801c1.93945 -0.828125 5.22559 -1.5 7.33496 -1.5s5.39551 0.671875 7.33496 1.5l134.76 67.0801\nc1.94043 0.832031 5.22949 1.50781 7.34082 1.50781s5.39941 -0.675781 7.33984 -1.50781zM20.1602 317.58c-4.0498 1.86035 -4.0498 4.88965 0 6.74023l196.5 90.2793c1.9502 0.774414 5.23633 1.40332 7.33496 1.40332s5.38477 -0.628906 7.33496 -1.40332\nl196.51 -90.2793c4 -1.85059 4 -4.87988 0 -6.74023l-196.51 -90.29c-1.95215 -0.765625 -5.23828 -1.3877 -7.33496 -1.3877s-5.38281 0.62207 -7.33496 1.3877z\" />\n    <glyph glyph-name=\"chromecast\" unicode=\"&#xf838;\" horiz-adv-x=\"512\" \nd=\"M447.83 384h0.169922c23.5811 0 42.7197 -19.1387 42.7197 -42.7197v-298.561c0 -23.5811 -19.1387 -42.7197 -42.7197 -42.7197v0h-149.36v42.7197h149.19v298.561h-383.83v-63.9199h-42.7197v63.9199c0 23.5811 19.1387 42.7197 42.7197 42.7197h383.83z\nM21.2803 64.4199c35.2783 0 63.9102 -28.6318 63.9102 -63.9102v-0.00976562h-63.9102v63.9199zM21.2803 149.7l0.0292969 -0.339844h0.330078c82.248 -0.105469 149 -66.9424 149 -149.19v-0.169922h-42.7197v0.339844v0.0302734c0 58.8594 -47.7705 106.63 -106.63 106.63\nh-0.00976562v42.7002zM21.2803 234.97v-0.330078c129.46 -0.370117 234.34 -105.18 234.8 -234.64h-42.7197v0.5c-0.0800781 106 -86.0801 191.85 -192.08 191.75v42.7197z\" />\n    <glyph glyph-name=\"evernote\" unicode=\"&#xf839;\" horiz-adv-x=\"384\" \nd=\"M120.82 315.79c1.59961 -22.3096 -17.5508 -21.5898 -21.6104 -21.5898c-68.9297 0 -73.6396 1 -83.5801 -3.33984c-0.55957 -0.220703 -0.740234 0 -0.370117 0.370117l108.53 110.319c0.379883 0.370117 0.599609 0.219727 0.379883 -0.370117\nc-4.34961 -9.98926 -3.34961 -15.0898 -3.34961 -85.3896zM199.82 7.79004c-14.6807 37.0801 13 76.9297 52.5195 76.6201c17.4902 0 22.6006 -23.21 7.9502 -31.4199c-6.19043 -3.2998 -24.9502 -1.74023 -25.1396 -19.2002\nc-0.0507812 -17.0898 19.6699 -25 31.1992 -24.8896h0.0107422c25.1934 0 45.6396 20.4463 45.6396 45.6396v0.00976562v0.0800781c0 11.6299 -7.79004 47.2197 -47.54 55.3398c-7.71973 1.54004 -65 6.35059 -68.3496 50.5205\nc-3.74023 -16.9307 -17.4004 -63.4902 -43.1104 -69.0898c-8.74023 -1.94043 -69.6797 -7.64062 -112.92 36.7695c0 0 -18.5703 15.2305 -28.2305 57.9502c-3.37988 15.75 -9.2793 39.7002 -11.1396 62c0 18 11.1396 30.4502 25.0703 32.2002c81 0 90 -2.32031 101 7.7998\nc9.81934 9.24023 7.7998 15.5 7.7998 102.78c1 8.2998 7.79004 30.8096 53.4102 24.1396c6 -0.860352 31.9102 -4.17969 37.4795 -30.6396l64.2607 -11.1504c20.4297 -3.70996 70.9395 -7 80.5996 -57.9404c22.6602 -121.09 8.91016 -238.46 7.7998 -238.46\nc-15.9795 -114.38 -111.07 -108.85 -111.07 -108.85c-18.9492 0.230469 -54.25 9.40039 -67.2695 39.8301zM280.76 212.63c-1 -1.91992 -2.2002 -6 0.850586 -7c14.0898 -4.92969 39.75 -6.83984 45.8799 -5.53027c3.10938 0.25 3.0498 4.43066 2.47949 6.65039\nc-3.5293 21.8496 -40.8301 26.5 -49.2393 5.91992z\" />\n    <glyph glyph-name=\"itch-io\" unicode=\"&#xf83a;\" horiz-adv-x=\"512\" \nd=\"M71.9199 413.23c19.2197 1.66992 114.32 2.76953 184.08 2.76953s116.56 -0.400391 184 -2.73047c21.7197 -12.9297 64.5195 -62.0996 64.9199 -75v-21.3398c0 -27.0596 -25.25 -50.8398 -48.25 -50.8398c-27.54 0 -50.54 22.8799 -50.54 50\nc0 -27.1494 -22.2295 -50 -49.7598 -50s-49 22.8799 -49 50c0 -27.1494 -23.5898 -50 -51.1602 -50h-0.5c-27.5703 0 -51.1602 22.8799 -51.1602 50c0 -27.1494 -21.4199 -50 -49 -50s-49.7598 22.8799 -49.7598 50c0 -27.1494 -22.9697 -50 -50.54 -50\nc-22.96 0 -48.25 23.7803 -48.25 50.8398v21.3398c0.400391 12.8906 43.2002 62.0605 64.9199 74.9609zM204.24 278.84c9.14844 -15.9902 31.5527 -28.9785 49.9746 -28.9785c0.498047 0 1.30664 0.0126953 1.80469 0.0283203c28.7109 0 44.6602 16.4502 51.7607 28.9404\nc22 -38.3398 77.8496 -38.7598 99.8496 -0.240234c13.1201 -23.0596 43.0801 -32.0996 56 -27.6602c3.57031 -37.1494 13.9004 -236.88 -17.75 -269.149c-77.6797 -18.1201 -299.76 -18.6699 -379.76 0c-31.4004 32.0195 -21.6006 229 -17.7305 269.149\nc12.8301 -4.41016 42.8301 4.52051 56 27.6602c21.9502 -38.46 77.8506 -38.1494 99.8506 0.25zM162.66 225.07l-0.0205078 -0.0703125c-52.3193 0 -65.21 -77.4502 -83.8799 -144.45c-17.2598 -62.1494 5.52051 -63.6699 33.9404 -63.7295\nc42.1494 1.56934 65.4902 32.1797 65.4902 62.79c53.6191 -8.79004 116.3 -6.43066 155.55 0c0 -30.6104 23.3398 -61.2207 65.4902 -62.79c28.4297 0.0595703 51.21 1.58008 33.9492 63.7295c-18.6494 66.9199 -31.54 144.45 -83.8701 144.45\nc-16.46 0 -31.0898 0 -49.25 -19.71c-12.1377 1.23145 -31.8896 2.23047 -44.0898 2.23047c-12.1992 0 -31.9521 -0.999023 -44.0898 -2.23047c-18.1299 19.7803 -32.75 19.7803 -49.2197 19.7803zM256 177.21l-0.0595703 -0.00976562s44.3496 -40.7598 52.3496 -55.2402\nl-29 1.16992v-25.2803c0 -1.15918 -11.6602 -0.699219 -23.3096 -0.15918c-1.99023 0 -23.3301 -1.39062 -23.3301 0.15918v25.3203l-29 -1.16992c7.96973 14.4404 52.3496 55.21 52.3496 55.21z\" />\n    <glyph glyph-name=\"salesforce\" unicode=\"&#xf83b;\" horiz-adv-x=\"640\" \nd=\"M248.89 202.36h-26.3496c0.69043 5.15918 3.32031 14.1201 13.6396 14.1201c6.75 0 11.9707 -3.82031 12.71 -14.1201zM385.55 216.24c0.450195 0 14.1104 1.75977 14.1104 -20c0 -6.45996 -1.11035 -20 -14.1104 -20c-0.479492 0 -14.1094 -1.77051 -14.1094 20\nc0 21.7695 13.6396 20 14.1094 20zM142.33 192.48c4.2002 3.60938 15.6104 2.71973 20.9297 1.64941v-16.9395c-5.85938 -1.1709 -16.2295 -2.75 -20.9297 0.949219c-1.20996 1 -3.29004 2.27051 -3.29004 7.05078\nc-0.0078125 0.137695 -0.0146484 0.361328 -0.0146484 0.499023c0 2.31738 1.48047 5.36035 3.30469 6.79102zM640 216c0 -87.5801 -80 -154.39 -165.36 -136.43c-18.3701 -33 -70.7295 -70.75 -132.199 -41.6299c-41.1602 -96.0508 -177.891 -92.1807 -213.811 5.16992\nc-119.72 -23.8906 -178.82 138.37 -75.2695 199.279c-34.75 79.4307 22.6396 173.61 114.31 173.61c33.834 -0.0214844 77.9883 -21.8389 98.5605 -48.7002c20.6992 21.4004 49.3994 34.8105 81.1494 34.8105c42.3398 0 79 -23.5205 98.7998 -58.5703\nc92.8203 40.6797 193.82 -28.2305 193.82 -127.54zM120.45 184.2c0 11.7598 -11.6904 15.1699 -17.8701 17.1699c-5.27051 2.11035 -13.4102 3.50977 -13.4102 8.93945c0 9.45996 17 6.66016 25.1699 2.12012c0 0 1.16992 -0.709961 1.64062 0.470703\nc0.239258 0.699219 2.35938 6.58008 2.58984 7.29004c0.0292969 0.0927734 0.0537109 0.24707 0.0537109 0.34375c0 0.441406 -0.337891 0.918945 -0.753906 1.06543c-12.3301 7.63086 -40.7002 8.51074 -40.7002 -12.6992c0 -12.46 11.4902 -15.4404 17.8799 -17.1699\nc4.71973 -1.58008 13.1699 -3 13.1699 -8.7002c0 -4 -3.5293 -7.06055 -9.16992 -7.06055c-5.82617 0.00976562 -14.3379 2.85449 -19 6.35059c-0.469727 0.229492 -1.41992 0.709961 -1.64941 -0.709961l-2.40039 -7.4707\nc-0.469727 -0.939453 0.230469 -1.17969 0.230469 -1.40918c1.75 -1.40039 10.2998 -6.59082 22.8193 -6.59082c13.1699 0 21.4004 7.06055 21.4004 18.1104v-0.0498047zM152.45 226.78c-10.1299 0 -18.6602 -3.16992 -21.4004 -5.18066\nc-0.237305 -0.164062 -0.430664 -0.532227 -0.430664 -0.822266c0 -0.178711 0.0859375 -0.442383 0.19043 -0.586914l2.59082 -7.06055c0.114258 -0.399414 0.544922 -0.723633 0.960938 -0.723633c0.0605469 0 0.15918 0.0107422 0.21875 0.0234375\nc0.650391 0 6.7998 4 16.9297 4c4 0 7.06055 -0.709961 9.18066 -2.35938c3.59961 -2.80078 3.05957 -8.29004 3.05957 -10.5801c-4.79004 0.299805 -19.1104 3.43945 -29.4102 -3.75977c-4.05762 -2.7832 -7.34961 -9.03418 -7.34961 -13.9541\nc0 -0.162109 0.00390625 -0.424805 0.00976562 -0.585938c0 -5.90039 1.50977 -10.4004 6.58984 -14.3506c12.2402 -8.16016 36.2803 -2 38.1006 -1.41016c1.5791 0.320312 3.5293 0.660156 3.5293 1.87988v33.8809c0.0400391 4.60938 0.320312 21.6396 -22.7793 21.6396z\nM199 247.76c0.000976562 0.0205078 0.00195312 0.0527344 0.00195312 0.0722656c0 0.613281 -0.49707 1.11035 -1.10938 1.11035c-0.0205078 0 -0.0527344 -0.000976562 -0.0722656 -0.00195312h-9.82031\nc-0.0175781 0.000976562 -0.0449219 0.000976562 -0.0625 0.000976562c-0.612305 0 -1.10938 -0.49707 -1.10938 -1.10938c0 -0.0205078 0.000976562 -0.0527344 0.00195312 -0.0722656v-79c-0.000976562 -0.0195312 -0.00195312 -0.0517578 -0.00195312 -0.0712891\nc0 -0.613281 0.49707 -1.11035 1.10938 -1.11035c0.0175781 0 0.0449219 0.000976562 0.0625 0.00195312h9.87988c0.0205078 -0.000976562 0.0527344 -0.00195312 0.0722656 -0.00195312c0.613281 0 1.11035 0.49707 1.11035 1.10938\nc0 0.0205078 -0.000976562 0.0527344 -0.00292969 0.0722656zM254.75 218.83c-2.09961 2.30957 -6.79004 7.53027 -17.6504 7.53027c-3.50977 0 -14.1592 -0.230469 -20.6992 -8.94043c-6.35059 -7.62988 -6.58008 -18.1104 -6.58008 -21.4102\nc0 -3.12012 0.149414 -14.2598 7.05957 -21.1699c2.63965 -2.91016 9.06055 -8.22949 22.8105 -8.22949c10.8193 0 16.4697 2.34961 18.5791 3.75977c0.470703 0.240234 0.710938 0.709961 0.240234 1.87988l-2.34961 6.83008\nc-0.1875 0.402344 -0.699219 0.728516 -1.14258 0.728516c-0.0751953 0 -0.194336 -0.0126953 -0.267578 -0.0283203c-2.58984 -0.94043 -6.34961 -2.82031 -15.29 -2.82031c-17.4199 0 -16.8496 14.7402 -16.9404 16.7002h37.1709\nc0.522461 0.0107422 1.04688 0.431641 1.16992 0.939453c-0.290039 0 2.06934 14.7002 -6.09082 24.2305h-0.0195312zM291.44 166.14c13.1699 0 21.4092 7.06055 21.4092 18.1104c0 11.7598 -11.6992 15.1699 -17.8799 17.1699\nc-4.13965 1.66016 -13.4102 3.37988 -13.4102 8.94043c0 3.75977 3.29004 6.34961 8.4707 6.34961c4.87988 -0.0976562 12.3613 -1.99316 16.7002 -4.22949c4.33789 -2.2373 1.17969 -0.710938 1.64941 0.469727c0.230469 0.700195 2.35059 6.58008 2.58008 7.29004\nc0.0292969 0.0927734 0.0537109 0.24707 0.0537109 0.34375c0 0.441406 -0.337891 0.918945 -0.753906 1.06641c-7.91016 4.89941 -16.7402 4.93945 -20.2295 4.93945c-12 0 -20.46 -7.29004 -20.46 -17.6396c0 -12.46 11.4795 -15.4404 17.8701 -17.1699\nc6.10938 -2 13.1699 -3.26074 13.1699 -8.7002c0 -4 -3.52051 -7.06055 -9.16992 -7.06055c-5.82617 0.0126953 -14.3379 2.85742 -19 6.35059c-0.155273 0.132812 -0.447266 0.241211 -0.651367 0.241211c-0.526367 0 -0.973633 -0.426758 -0.999023 -0.951172\nl-2.34961 -7.52051c-0.470703 -0.939453 0.229492 -1.17969 0.229492 -1.40918c1.71973 -1.40039 10.3301 -6.59082 22.79 -6.59082h-0.0195312zM357.09 224c0 0.709961 -0.240234 1.17969 -1.17969 1.17969h-11.7598c0 0.140625 0.939453 8.94043 4.46973 12.4707\nc4.16016 4.14941 11.7598 1.63965 12 1.63965c1.16992 -0.469727 1.41016 0 1.63965 0.469727l2.83008 7.77051c0.700195 0.939453 0 1.16992 -0.240234 1.41016c-5.08984 2 -17.3496 2.86914 -24.46 -4.24023c-5.47949 -5.48047 -7 -13.9199 -8 -19.5205h-8.46973\nc-0.600586 -0.0498047 -1.125 -0.578125 -1.16992 -1.17969l-1.41992 -7.75977c0 -0.700195 0.240234 -1.16992 1.17969 -1.16992h8.23047c-8.50977 -47.9004 -8.75 -50.21 -10.3506 -55.5205c-1.08008 -3.62012 -3.29004 -6.89941 -5.87988 -7.75977\nc-0.0898438 0 -3.87988 -1.67969 -9.63965 0.240234c0 0 -0.94043 0.469727 -1.41016 -0.709961c-0.240234 -0.709961 -2.58984 -6.82031 -2.83008 -7.53027s0 -1.41016 0.469727 -1.41016c5.11035 -2 13 -1.76953 17.8809 0\nc6.2793 2.28027 9.71973 7.88965 11.5293 12.9404c2.75 7.70996 2.81055 9.79004 11.7598 59.7393h12.2305c0.601562 0.0498047 1.13086 0.578125 1.17969 1.18066zM410.48 208c-0.560547 1.67969 -5.10059 18.1104 -25.1709 18.1104c-15.25 0 -23 -10 -25.1592 -18.1104\nc-1 -3 -3.18066 -14 0 -23.5195c0.0898438 -0.300781 4.40918 -18.1201 25.1592 -18.1201c14.9502 0 22.9004 9.60938 25.1709 18.1201c3.20996 9.60938 1.00977 20.5195 0 23.5195zM455.88 224.7c-5 1.64941 -16.6201 1.89941 -22.1104 -5.41016v4.46973\nc0.000976562 0.0175781 0.00195312 0.0449219 0.00195312 0.0625c0 0.612305 -0.49707 1.11035 -1.10938 1.11035c-0.0205078 0 -0.0527344 -0.000976562 -0.0722656 -0.00292969h-9.39941c-0.0205078 0.00195312 -0.0527344 0.00292969 -0.0722656 0.00292969\nc-0.612305 0 -1.11035 -0.498047 -1.11035 -1.11035c0 -0.0175781 0.000976562 -0.0449219 0.00195312 -0.0625v-55.2793c-0.000976562 -0.0175781 -0.00195312 -0.0449219 -0.00195312 -0.0625c0 -0.618164 0.501953 -1.12012 1.12012 -1.12012\nc0.0175781 0 0.0449219 0.000976562 0.0625 0.00195312h9.63965c0.0166016 -0.000976562 0.0449219 -0.00195312 0.0615234 -0.00195312c0.618164 0 1.12012 0.501953 1.12012 1.12012c0 0.0175781 -0.000976562 0.0449219 -0.00195312 0.0625v27.7695\nc0 2.91016 0.0498047 11.3701 4.45996 15.0498c4.90039 4.90039 12 3.36035 13.4102 3.06055c0.555664 0.00976562 1.1875 0.430664 1.41016 0.939453c0.972656 2.15918 2.34375 5.74316 3.05957 8c0.0449219 0.113281 0.0800781 0.302734 0.0800781 0.423828\nc0 0.356445 -0.246094 0.798828 -0.549805 0.986328v-0.00976562zM502.69 170.6l-2.12012 7.29004c-0.470703 1.18066 -1.41016 0.709961 -1.41016 0.709961c-4.23047 -1.81934 -10.1504 -1.88965 -11.29 -1.88965c-4.63965 0 -17.1699 1.12988 -17.1699 19.7598\nc0 6.23047 1.84961 19.7607 16.4697 19.7607c0.245117 0.00585938 0.643555 0.0107422 0.888672 0.0107422c3.00586 0 7.76855 -0.744141 10.6318 -1.66113c2.8623 -0.916992 0.939453 -0.469727 1.17969 0.709961c0.939453 2.58984 1.63965 4.46973 2.58984 7.53027\nc0.230469 0.939453 -0.469727 1.16992 -0.709961 1.16992c-11.5898 3.87012 -22.3398 2.5293 -27.7598 0c-1.58984 -0.740234 -16.2305 -6.49023 -16.2305 -27.5205c0 -2.89941 -0.580078 -30.1094 28.9404 -30.1094c4.42383 0.00878906 11.377 1.27637 15.5195 2.83008\nc0.290039 0.214844 0.525391 0.682617 0.525391 1.04395c0 0.105469 -0.0244141 0.274414 -0.0546875 0.375977v-0.0107422zM556.56 210.12c-0.799805 3 -5.36914 16.2295 -22.3496 16.2295c-16 0 -23.5195 -10.1094 -25.6396 -18.5898\nc-0.913086 -3.0166 -1.6543 -8.02441 -1.6543 -11.1768c0 -0.161133 0.00195312 -0.421875 0.00390625 -0.583008c0 -25.8701 18.8398 -29.4004 29.8799 -29.4004c10.8203 0 16.46 2.35059 18.5801 3.76074c0.469727 0.239258 0.709961 0.709961 0.240234 1.87988\nl-2.36035 6.83008c-0.186523 0.402344 -0.698242 0.728516 -1.14258 0.728516c-0.0742188 0 -0.194336 -0.0126953 -0.267578 -0.0292969c-2.58984 -0.939453 -6.34961 -2.81934 -15.29 -2.81934c-17.4199 0 -16.8496 14.7402 -16.9297 16.7002h37.1602\nc0.522461 0.0126953 1.05078 0.433594 1.17969 0.939453c-0.239258 0.00976562 0.94043 7.07031 -1.41016 15.54v-0.00976562zM533.27 216.47c5.11035 0 11.8506 -2.2002 12.7305 -14.1201h-26.3701c0.639648 5.12012 3.31055 14.1201 13.6396 14.1201z\" />\n    <glyph glyph-name=\"speaker-deck\" unicode=\"&#xf83c;\" horiz-adv-x=\"512\" \nd=\"M213.86 152h-113.86c-55.2002 0 -100 44.7998 -100 100s44.7998 100 100 100h132.84c22.0801 0 40 -17.9199 40 -40s-17.9199 -40 -40 -40h-134.84c-26.4697 0 -26.4502 -40 0 -40h113.82c55.1992 0 100 -44.7998 100 -100s-44.8008 -100 -100 -100h-171.82\nc-22.0801 0 -40 17.9199 -40 40s17.9199 40 40 40h173.86c26.4795 0 26.46 40 0 40zM298 32c23.5957 16.0176 46.4932 51.8574 51.1104 80h64.5498c10.8525 0.0927734 19.6602 8.97656 19.6602 19.8291v0.170898v120v0.170898c0 10.8525 -8.80762 19.7363 -19.6602 19.8291\nh-117.24c8.29199 9.4834 15.0205 27.4033 15.0205 40s-6.72852 30.5166 -15.0205 40h136.93c43.4404 0 78.6504 -35.8203 78.6504 -80v-160c0 -44.1797 -35.21 -80 -78.6504 -80h-135.35z\" />\n    <glyph glyph-name=\"symfony\" unicode=\"&#xf83d;\" horiz-adv-x=\"512\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM389.74 296.46c15.3496 0.540039 19.7695 15.4404 19.5195 23.1299c-0.639648 18.0605 -19.6699 29.46 -44.8301 28.6504\nc-1.89941 -0.0703125 -65.2598 3.46973 -102.43 -105.53c-10.0596 8.29004 -57.7695 65.1602 -110.58 25.8096c-18.9502 -14.1797 -31.4199 -47.9199 -2.9502 -79.6699c16.9502 -18.1396 26.7207 -25.3301 22.25 -39.8496c-9.14941 -29.79 -55.5596 -16.1602 -51 -1.38965\nc1.36035 4.38965 3.49023 4.46973 6.28027 13.0693c7.74023 25.3203 -27.1104 37.75 -34.6201 13.6006c-4.32031 -14.0605 2.37988 -39.5107 38.3799 -50.6201c42.1602 -12.96 77.8203 10.0098 82.8799 39.9395c3.2002 18.75 -5.29004 32.6904 -20.7998 50.6201l-12.6299 14\nc-7.66016 7.7002 -10.29 20.7002 -2.37012 30.7002c6.69043 8.45996 16.2002 12.0605 31.8105 7.83008c22.7695 -6.16992 32.9199 -21.9697 49.8496 -34.7197c-1.23047 -4 -10.04 -32.3398 -18.2305 -82c-12.1094 -63.4902 -21.3496 -98.3506 -45.3496 -118.351\nc-4.83984 -3.48926 -11.7598 -8.63965 -22.1797 -9c-1.94043 -0.0595703 -14.1406 2.83984 -2.0498 12.5508c15.2393 8.3291 7.00977 34.75 -14.8809 34c-9.85938 -0.330078 -24.8691 -9.59082 -24.3096 -26.5908c0.580078 -17.5293 16.9297 -30.6895 41.5801 -29.8398\nc13.1797 0.44043 42.5801 5.7998 71.5801 40.2598c39.8496 46.7207 47.4395 102.2 58.2002 161.721c51.6797 -6.11035 77.2393 17.8398 77.5996 35.7002c0.549805 24.2998 -28 23.46 -32 5.2998c-1.91992 -8.83984 13.4199 -16.8105 1.41992 -24.5605\nc-8.49023 -5.5 -23.71 -9.37012 -45.1396 -6.21973c10.2998 56.8496 19.1094 112.56 58.8896 113.85c2.70996 0.150391 12.6396 -0.119141 12.8701 -6.66992c0.150391 -5.41016 -6.7998 -9.66992 -6.53027 -18.8496c0.370117 -10.4199 8.2998 -17.2803 19.7705 -16.8701z\n\" />\n    <glyph glyph-name=\"waze\" unicode=\"&#xf83f;\" horiz-adv-x=\"512\" \nd=\"M502.17 246.33c14.5205 -85.8604 -30.9395 -167.92 -113.17 -208.13c13 -34.1006 -12.4004 -70.2002 -48.3203 -70.2002c-27.0625 0.0214844 -50.166 21.9736 -51.5693 49c-6.44043 -0.19043 -64.2002 0 -76.3301 0.639648\nc-1.10645 -27.3809 -24.2441 -49.6035 -51.6484 -49.6035c-0.588867 0 -1.54395 0.0195312 -2.13184 0.0439453c-33.8604 1.36035 -57.9502 34.8398 -47 67.9199c-37.21 13.1104 -72.54 34.8701 -99.6201 70.7998c-13 17.2803 -0.479492 41.7998 20.8398 41.7998\nc46.3105 0 32.2207 54.1699 43.1504 110.261c18.4297 93.9395 116.75 157.14 211.72 157.14c102.48 0 197.15 -70.6699 214.08 -169.67zM373.51 59.7197c42 19.1807 81.3301 56.71 96.29 102.141c40.4805 123.09 -64.1494 228 -181.71 228\nc-83.4502 0 -170.32 -55.4199 -186.07 -136c-9.5293 -48.9102 5 -131.351 -68.75 -131.351c24.9404 -33.1094 58.3301 -52.6201 93.7305 -64.0498c24.6602 21.7998 63.8701 15.4697 79.8301 -14.3398c14.2197 -1 79.1895 -1.17969 87.9004 -0.820312\nc7.9502 15.5303 28.5635 28.1348 46.0107 28.1348c10.2002 0 24.8799 -5.24805 32.7686 -11.7148zM205.12 260.87c0 34.7402 50.8398 34.75 50.8398 0s-50.8398 -34.7402 -50.8398 0zM321.69 260.87c0 34.7402 50.8594 34.75 50.8594 0s-50.8594 -34.75 -50.8594 0z\nM199.08 190.18c-3.44043 16.9404 22.1797 22.1807 25.6201 5.20996l0.0595703 -0.279297c4.14062 -21.4199 29.8506 -44 64.1201 -43.0703c35.6797 0.94043 59.25 22.21 64.1104 42.7695c4.45996 16.0508 28.5996 10.3604 25.4697 -6\nc-5.22949 -22.1797 -31.21 -62 -91.46 -62.8994c-42.5498 0 -80.8799 27.8398 -87.9004 64.25z\" />\n    <glyph glyph-name=\"yammer\" unicode=\"&#xf840;\" horiz-adv-x=\"512\" \nd=\"M421.78 295.83c-48.1602 -26.3896 -118.561 -58.1504 -130.2 -50s91.4395 80.3701 106.689 88.7695c0.920898 0.5 1.80078 0.970703 2.63086 1.40039c1.76562 0.521484 4.69336 0.945312 6.53516 0.945312c12.7295 0 23.0605 -10.3311 23.0605 -23.0596\nc0 -6.14453 -3.90527 -14.2334 -8.71582 -18.0557zM421.78 78.6602c4.76855 -3.82324 8.63965 -11.8877 8.63965 -18c0 -12.7344 -10.335 -23.0703 -23.0703 -23.0703c-1.81641 0 -4.70605 0.412109 -6.44922 0.919922\nc-0.830078 0.410156 -1.70996 0.900391 -2.63086 1.41016c-15.2695 8.38965 -118.25 80.6396 -106.689 88.7402c11.5596 8.09961 82.04 -23.6201 130.2 -50zM464.21 211c10.0947 -2.11328 18.2559 -12.1992 18.2559 -22.5117\nc0 -10.7881 -8.63965 -20.9561 -19.2861 -22.6982c-54.9102 0.0195312 -131.93 6.00977 -138.21 18.7598c-6.2793 12.75 118.84 26.5098 136.24 26.5098c1.0498 0 2.0498 -0.0595703 3 -0.0595703zM31 351.35c-0.699219 2.10742 -1.2666 5.61914 -1.2666 7.83887\nc0 13.7334 11.1455 24.8799 24.8799 24.8799c8.72949 0 18.8213 -6.41504 22.5264 -14.3184l81 -205.06h1.20996l77 203.529c3.22559 8.26074 13.041 14.9648 21.9092 14.9648c12.9834 0 23.5205 -10.5371 23.5205 -23.5195\nc0 -1.89258 -0.438477 -4.90137 -0.979492 -6.71484l-109.6 -273.391c-18.5498 -47.2197 -37.1201 -79.5596 -93.29 -79.5596c-0.151367 -0.000976562 -0.395508 -0.000976562 -0.545898 -0.000976562c-6.4668 0 -16.8887 0.874023 -23.2646 1.95117\nc-8.52051 2.44238 -15.4365 11.6201 -15.4365 20.4844c0 11.7637 9.54688 21.3105 21.3096 21.3105c0.28418 0 0.744141 -0.0117188 1.02734 -0.0253906c0.660156 -0.0595703 10.9102 -0.660156 13.8604 -0.660156c30.4697 0 43.7393 18.9404 58.0693 59.4102z\" />\n    <glyph glyph-name=\"git-alt\" unicode=\"&#xf841;\" \nd=\"M439.55 211.95c4.66504 -4.66602 8.45117 -13.8076 8.45117 -20.4053s-3.78613 -15.7393 -8.45117 -20.4053l-194.689 -194.689c-4.66602 -4.66211 -13.8047 -8.44629 -20.4004 -8.44629s-15.7344 3.78418 -20.4004 8.44629l-195.609 195.6\nc-4.66504 4.66602 -8.45117 13.8076 -8.45117 20.4053s3.78613 15.7393 8.45117 20.4053l134.12 134.14l50.79 -50.8496c-5.95996 -14.2607 -2.16016 -36.4902 18.6396 -45v-123c-22.3203 -9.09082 -28.8203 -38.4004 -11.25 -56\nc5.55176 -5.54883 16.4268 -10.0518 24.2754 -10.0518c7.84766 0 18.7236 4.50293 24.2744 10.0518c13.1807 13.1494 16.2197 42.46 -9.08008 55v121.85l46.3506 -46.29c-14.21 -34.4697 29.5098 -63.8301 56 -37.3398c25.71 25.6895 -1.24023 68.4902 -35.4707 56.6895\nl-49.6592 49.6602c9.29004 26.9102 -16.3301 52.8203 -43.3906 43.6807l-51.5195 51.5195l40.6602 40.6299c4.66602 4.66309 13.8076 8.44727 20.4043 8.44727s15.7383 -3.78418 20.4053 -8.44727z\" />\n    <glyph glyph-name=\"stackpath\" unicode=\"&#xf842;\" \nd=\"M244.6 215.6c0 -8.5 -4.25977 -20.4893 -21.3398 -20.4893h-19.6094v41.4697h19.6094c17.1299 0 21.3398 -12.3604 21.3398 -20.9805zM448 416v-448h-448v448h448zM151.3 160.16c0 21.2402 -12.1201 34.54 -46.7197 44.8496c-20.5703 7.41016 -26 10.9102 -26 18.6299\nc0 7.7207 7 14.6104 20.4102 14.6104c14.0898 0 20.79 -8.4502 20.79 -18.3496h30.7002l0.189453 0.569336c0.5 19.5703 -15.0596 41.6504 -51.1201 41.6504c-23.3701 0 -52.5498 -10.75 -52.5498 -38.29c0 -19.4004 9.25 -31.29 50.7402 -44.3701\nc17.2598 -6.15039 21.9102 -10.4004 21.9102 -19.4795c0 -15.2002 -19.1309 -14.2305 -19.4707 -14.2305c-20.3994 0 -25.6494 9.09961 -25.6494 21.9004h-30.7998l-0.180664 -0.560547c-0.679688 -31.3203 28.3799 -45.2197 56.6299 -45.2197\nc29.9805 0 51.1201 13.5498 51.1201 38.29zM276.68 215.79c0 25.2998 -18.4297 45.46 -53.4199 45.46h-51.7793v-138.18h32.1699v47.3594h19.6094c30.25 0 53.4199 15.9502 53.4199 45.3604zM297.94 123l49.0596 138.22h-31.0898l-47.9102 -138.22h29.9404zM404.46 261.22\nh-31.0898l-47.9102 -138.22h29.9404z\" />\n    <glyph glyph-name=\"cotton-bureau\" unicode=\"&#xf89e;\" horiz-adv-x=\"512\" \nd=\"M474.31 117.59h25.1807c-25.7998 -109.78 -111.4 -173.59 -239.67 -173.59c-154.63 -0.339844 -247.82 92.8604 -247.82 248.18c0 154.63 93 247.82 247.82 247.82c128.399 0 214.06 -63.5098 240.18 -173.61h-25.2598\nc-24.8506 95.6104 -99.9199 148.811 -214.69 148.811c-141.85 0 -223.2 -81.3799 -223.2 -223.2c0 -137.93 76.6699 -218 211.101 -223v49.2002c0 48.1602 -26.5498 74.3896 -74.5498 74.3896c-62.1309 0 -99.4004 37.2803 -99.4004 99.4102\nc0 61.3701 36.5195 98.2803 97.3799 99.0596c30.7402 64.6504 144.24 69.3203 177.24 0c60.8496 -0.779297 97.3799 -37.6895 97.3799 -99.0596c0 -62.0098 -37.2002 -99.21 -99.2002 -99.21c-47.9795 0 -74.3896 -26.3896 -74.3896 -74.3896v-49.1602\nc107.67 3.75977 178.24 56.5 201.899 148.35zM357 265.67c3.7998 -21.0801 11.2695 -104.2 -71.79 -120.75c12.2598 -17.7402 32.9805 -27.3301 61.5898 -27.3301c47.9697 0 74.4004 26.4102 74.4004 74.4102c0 44.6699 -22.8301 70.2197 -64.2002 73.6699zM275.32 168.31\nc72.7803 9.89062 58.5 86.9102 56.2295 97c-72.5596 -10 -58.6895 -86.6592 -56.2295 -97zM260 316l-0.179688 -0.259766c-28.3008 0 -49.1602 -9.66016 -61.5703 -27.3506c28.3701 -5.44922 49.3701 -20.5898 61.5996 -43.4492\nc12.2305 22.8594 33.2305 37.9697 61.5908 43.4492c-12.4404 17.9404 -32.8301 27.6104 -61.4404 27.6104zM188.48 265.28h0.239258c-2.75 -10.0498 -16.1602 -87.1602 56.25 -97c2.41992 10.1895 16.6807 86.4297 -56.4893 97zM173.2 117.59l0.330078 0.0302734\nc28.2998 0 49 9.66992 61.1396 27.2998c-73.0303 14.2197 -78.4004 83.5498 -71.6504 120.75c-41.3594 -3.66992 -64.2197 -29.3096 -64.2197 -73.6699c0 -48.0098 26.4004 -74.4102 74.4004 -74.4102zM226.41 105.2h0.269531\nc14.4902 -7.60059 25.5605 -19.3301 33.5605 -33.8301c6.36523 12.2188 21.4092 27.374 33.5801 33.8301c-14.4902 8.00977 -26.0508 19.0596 -33.8203 33.5498c-6.4248 -12.1094 -21.4736 -27.1396 -33.5898 -33.5498z\" />\n  </font>\n</defs></svg>\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_022_sample_app/app/src/static/css/font-awesome/fa-regular-400.svg#fontawesome",
    "content": "<?xml version=\"1.0\" standalone=\"no\"?>\n<!--\nFont Awesome Free 5.10.2 by @fontawesome - https://fontawesome.com\nLicense - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n-->\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\" >\n<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\">\n<metadata>\nCreated by FontForge 20190801 at Thu Aug 22 14:41:09 2019\n By Robert Madole\nCopyright (c) Font Awesome\n</metadata>\n<defs>\n<font id=\"FontAwesome5Free-Regular\" horiz-adv-x=\"512\" >\n  <font-face \n    font-family=\"Font Awesome 5 Free Regular\"\n    font-weight=\"400\"\n    font-stretch=\"normal\"\n    units-per-em=\"512\"\n    panose-1=\"2 0 5 3 0 0 0 0 0 0\"\n    ascent=\"448\"\n    descent=\"-64\"\n    bbox=\"-0.0663408 -64.0662 640.01 448.1\"\n    underline-thickness=\"25\"\n    underline-position=\"-50\"\n    unicode-range=\"U+0020-F5C8\"\n  />\n    <missing-glyph />\n    <glyph glyph-name=\"heart\" unicode=\"&#xf004;\" \nd=\"M458.4 383.7c75.2998 -63.4004 64.0996 -166.601 10.5996 -221.3l-175.4 -178.7c-10 -10.2002 -23.2998 -15.7998 -37.5996 -15.7998c-14.2002 0 -27.5996 5.69922 -37.5996 15.8994l-175.4 178.7c-53.5996 54.7002 -64.5996 157.9 10.5996 221.2\nc57.8008 48.7002 147.101 41.2998 202.4 -15c55.2998 56.2998 144.6 63.5996 202.4 15zM434.8 196.2c36.2002 36.8994 43.7998 107.7 -7.2998 150.8c-38.7002 32.5996 -98.7002 27.9004 -136.5 -10.5996l-35 -35.7002l-35 35.7002\nc-37.5996 38.2998 -97.5996 43.1992 -136.5 10.5c-51.2002 -43.1006 -43.7998 -113.5 -7.2998 -150.7l175.399 -178.7c2.40039 -2.40039 4.40039 -2.40039 6.80078 0z\" />\n    <glyph glyph-name=\"star\" unicode=\"&#xf005;\" horiz-adv-x=\"576\" \nd=\"M528.1 276.5c26.2002 -3.7998 36.7002 -36.0996 17.7002 -54.5996l-105.7 -103l25 -145.5c4.5 -26.3008 -23.1992 -45.9004 -46.3994 -33.7002l-130.7 68.7002l-130.7 -68.7002c-23.2002 -12.2998 -50.8994 7.39941 -46.3994 33.7002l25 145.5l-105.7 103\nc-19 18.5 -8.5 50.7998 17.7002 54.5996l146.1 21.2998l65.2998 132.4c11.7998 23.8994 45.7002 23.5996 57.4004 0l65.2998 -132.4zM388.6 135.7l100.601 98l-139 20.2002l-62.2002 126l-62.2002 -126l-139 -20.2002l100.601 -98l-23.7002 -138.4l124.3 65.2998\nl124.3 -65.2998z\" />\n    <glyph glyph-name=\"user\" unicode=\"&#xf007;\" horiz-adv-x=\"448\" \nd=\"M313.6 144c74.2002 0 134.4 -60.2002 134.4 -134.4v-25.5996c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v25.5996c0 74.2002 60.2002 134.4 134.4 134.4c28.7998 0 42.5 -16 89.5996 -16s60.9004 16 89.5996 16zM400 -16v25.5996\nc0 47.6006 -38.7998 86.4004 -86.4004 86.4004c-14.6992 0 -37.8994 -16 -89.5996 -16c-51.2998 0 -75 16 -89.5996 16c-47.6006 0 -86.4004 -38.7998 -86.4004 -86.4004v-25.5996h352zM224 160c-79.5 0 -144 64.5 -144 144s64.5 144 144 144s144 -64.5 144 -144\ns-64.5 -144 -144 -144zM224 400c-52.9004 0 -96 -43.0996 -96 -96s43.0996 -96 96 -96s96 43.0996 96 96s-43.0996 96 -96 96z\" />\n    <glyph glyph-name=\"clock\" unicode=\"&#xf017;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM256 -8c110.5 0 200 89.5 200 200s-89.5 200 -200 200s-200 -89.5 -200 -200s89.5 -200 200 -200zM317.8 96.4004l-84.8994 61.6992\nc-3.10059 2.30078 -4.90039 5.90039 -4.90039 9.7002v164.2c0 6.59961 5.40039 12 12 12h32c6.59961 0 12 -5.40039 12 -12v-141.7l66.7998 -48.5996c5.40039 -3.90039 6.5 -11.4004 2.60059 -16.7998l-18.8008 -25.9004c-3.89941 -5.2998 -11.3994 -6.5 -16.7998 -2.59961z\n\" />\n    <glyph glyph-name=\"list-alt\" unicode=\"&#xf022;\" \nd=\"M464 416c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h416zM458 16c3.31152 0 6 2.68848 6 6v340c0 3.31152 -2.68848 6 -6 6h-404c-3.31152 0 -6 -2.68848 -6 -6v-340\nc0 -3.31152 2.68848 -6 6 -6h404zM416 108v-24c0 -6.62695 -5.37305 -12 -12 -12h-200c-6.62695 0 -12 5.37305 -12 12v24c0 6.62695 5.37305 12 12 12h200c6.62695 0 12 -5.37305 12 -12zM416 204v-24c0 -6.62695 -5.37305 -12 -12 -12h-200c-6.62695 0 -12 5.37305 -12 12\nv24c0 6.62695 5.37305 12 12 12h200c6.62695 0 12 -5.37305 12 -12zM416 300v-24c0 -6.62695 -5.37305 -12 -12 -12h-200c-6.62695 0 -12 5.37305 -12 12v24c0 6.62695 5.37305 12 12 12h200c6.62695 0 12 -5.37305 12 -12zM164 288c0 -19.8818 -16.1182 -36 -36 -36\ns-36 16.1182 -36 36s16.1182 36 36 36s36 -16.1182 36 -36zM164 192c0 -19.8818 -16.1182 -36 -36 -36s-36 16.1182 -36 36s16.1182 36 36 36s36 -16.1182 36 -36zM164 96c0 -19.8818 -16.1182 -36 -36 -36s-36 16.1182 -36 36s16.1182 36 36 36s36 -16.1182 36 -36z\" />\n    <glyph glyph-name=\"flag\" unicode=\"&#xf024;\" \nd=\"M336.174 368c35.4668 0 73.0195 12.6914 108.922 28.1797c31.6406 13.6514 66.9043 -9.65723 66.9043 -44.1162v-239.919c0 -16.1953 -8.1543 -31.3057 -21.7129 -40.1631c-26.5762 -17.3643 -70.0693 -39.9814 -128.548 -39.9814c-68.6084 0 -112.781 32 -161.913 32\nc-56.5674 0 -89.957 -11.2803 -127.826 -28.5566v-83.4434c0 -8.83691 -7.16309 -16 -16 -16h-16c-8.83691 0 -16 7.16309 -16 16v406.438c-14.3428 8.2998 -24 23.7979 -24 41.5615c0 27.5693 23.2422 49.71 51.2012 47.8965\nc22.9658 -1.49023 41.8662 -19.4717 44.4805 -42.3379c0.177734 -1.52441 0.321289 -4.00781 0.321289 -5.54199c0 -4.30176 -1.10352 -11.1035 -2.46289 -15.1846c22.418 8.68555 49.4199 15.168 80.7207 15.168c68.6084 0 112.781 -32 161.913 -32zM464 112v240\nc-31.5059 -14.6338 -84.5547 -32 -127.826 -32c-59.9111 0 -101.968 32 -161.913 32c-41.4365 0 -80.4766 -16.5879 -102.261 -32v-232c31.4473 14.5967 84.4648 24 127.826 24c59.9111 0 101.968 -32 161.913 -32c41.4365 0 80.4775 16.5879 102.261 32z\" />\n    <glyph glyph-name=\"bookmark\" unicode=\"&#xf02e;\" horiz-adv-x=\"384\" \nd=\"M336 448c26.5098 0 48 -21.4902 48 -48v-464l-192 112l-192 -112v464c0 26.5098 21.4902 48 48 48h288zM336 19.5703v374.434c0 3.31348 -2.68555 5.99609 -6 5.99609h-276c-3.31152 0 -6 -2.68848 -6 -6v-374.43l144 84z\" />\n    <glyph glyph-name=\"image\" unicode=\"&#xf03e;\" \nd=\"M464 384c26.5098 0 48 -21.4902 48 -48v-288c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h416zM458 48c3.31152 0 6 2.68848 6 6v276c0 3.31152 -2.68848 6 -6 6h-404c-3.31152 0 -6 -2.68848 -6 -6v-276\nc0 -3.31152 2.68848 -6 6 -6h404zM128 296c22.0908 0 40 -17.9092 40 -40s-17.9092 -40 -40 -40s-40 17.9092 -40 40s17.9092 40 40 40zM96 96v48l39.5137 39.5146c4.6875 4.68652 12.2852 4.68652 16.9717 0l39.5146 -39.5146l119.514 119.515\nc4.6875 4.68652 12.2852 4.68652 16.9717 0l87.5146 -87.5146v-80h-320z\" />\n    <glyph glyph-name=\"edit\" unicode=\"&#xf044;\" horiz-adv-x=\"576\" \nd=\"M402.3 103.1l32 32c5 5 13.7002 1.5 13.7002 -5.69922v-145.4c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h273.5c7.09961 0 10.7002 -8.59961 5.7002 -13.7002l-32 -32c-1.5 -1.5 -3.5 -2.2998 -5.7002 -2.2998h-241.5v-352h352\nv113.5c0 2.09961 0.799805 4.09961 2.2998 5.59961zM558.9 304.9l-262.601 -262.601l-90.3994 -10c-26.2002 -2.89941 -48.5 19.2002 -45.6006 45.6006l10 90.3994l262.601 262.601c22.8994 22.8994 59.8994 22.8994 82.6992 0l43.2002 -43.2002\nc22.9004 -22.9004 22.9004 -60 0.100586 -82.7998zM460.1 274l-58.0996 58.0996l-185.8 -185.899l-7.2998 -65.2998l65.2998 7.2998zM524.9 353.7l-43.2002 43.2002c-4.10059 4.09961 -10.7998 4.09961 -14.7998 0l-30.9004 -30.9004l58.0996 -58.0996l30.9004 30.8994\nc4 4.2002 4 10.7998 -0.0996094 14.9004z\" />\n    <glyph glyph-name=\"times-circle\" unicode=\"&#xf057;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM256 -8c110.5 0 200 89.5 200 200s-89.5 200 -200 200s-200 -89.5 -200 -200s89.5 -200 200 -200zM357.8 254.2l-62.2002 -62.2002l62.2002 -62.2002\nc4.7002 -4.7002 4.7002 -12.2998 0 -17l-22.5996 -22.5996c-4.7002 -4.7002 -12.2998 -4.7002 -17 0l-62.2002 62.2002l-62.2002 -62.2002c-4.7002 -4.7002 -12.2998 -4.7002 -17 0l-22.5996 22.5996c-4.7002 4.7002 -4.7002 12.2998 0 17l62.2002 62.2002l-62.2002 62.2002\nc-4.7002 4.7002 -4.7002 12.2998 0 17l22.5996 22.5996c4.7002 4.7002 12.2998 4.7002 17 0l62.2002 -62.2002l62.2002 62.2002c4.7002 4.7002 12.2998 4.7002 17 0l22.5996 -22.5996c4.7002 -4.7002 4.7002 -12.2998 0 -17z\" />\n    <glyph glyph-name=\"check-circle\" unicode=\"&#xf058;\" \nd=\"M256 440c136.967 0 248 -111.033 248 -248s-111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248zM256 392c-110.549 0 -200 -89.4678 -200 -200c0 -110.549 89.4678 -200 200 -200c110.549 0 200 89.4678 200 200c0 110.549 -89.4678 200 -200 200z\nM396.204 261.733c4.66699 -4.70508 4.63672 -12.3037 -0.0673828 -16.9717l-172.589 -171.204c-4.70508 -4.66797 -12.3027 -4.63672 -16.9697 0.0683594l-90.7812 91.5156c-4.66797 4.70605 -4.63672 12.3047 0.0683594 16.9717l22.7188 22.5361\nc4.70508 4.66699 12.3027 4.63574 16.9697 -0.0693359l59.792 -60.2773l141.353 140.216c4.70508 4.66797 12.3027 4.6377 16.9697 -0.0673828z\" />\n    <glyph glyph-name=\"question-circle\" unicode=\"&#xf059;\" \nd=\"M256 440c136.957 0 248 -111.083 248 -248c0 -136.997 -111.043 -248 -248 -248s-248 111.003 -248 248c0 136.917 111.043 248 248 248zM256 -8c110.569 0 200 89.4697 200 200c0 110.529 -89.5088 200 -200 200c-110.528 0 -200 -89.5049 -200 -200\nc0 -110.569 89.4678 -200 200 -200zM363.244 247.2c0 -67.0518 -72.4209 -68.084 -72.4209 -92.8633v-6.33691c0 -6.62695 -5.37305 -12 -12 -12h-45.6475c-6.62695 0 -12 5.37305 -12 12v8.65918c0 35.7451 27.1006 50.0342 47.5791 61.5156\nc17.5615 9.84473 28.3242 16.541 28.3242 29.5791c0 17.2461 -21.999 28.6934 -39.7842 28.6934c-23.1885 0 -33.8936 -10.9775 -48.9424 -29.9697c-4.05664 -5.11914 -11.46 -6.07031 -16.666 -2.12402l-27.8232 21.0986\nc-5.10742 3.87207 -6.25098 11.0654 -2.64453 16.3633c23.627 34.6934 53.7217 54.1846 100.575 54.1846c49.0713 0 101.45 -38.3037 101.45 -88.7998zM298 80c0 -23.1592 -18.8408 -42 -42 -42s-42 18.8408 -42 42s18.8408 42 42 42s42 -18.8408 42 -42z\" />\n    <glyph glyph-name=\"eye\" unicode=\"&#xf06e;\" horiz-adv-x=\"576\" \nd=\"M288 304c0.0927734 0 0.244141 0.000976562 0.336914 0.000976562c61.6641 0 111.71 -50.0469 111.71 -111.711c0 -61.6631 -50.0459 -111.71 -111.71 -111.71s-111.71 50.0469 -111.71 111.71c0 8.71289 1.95898 22.5781 4.37305 30.9502\nc6.93066 -3.94141 19.0273 -7.18457 27 -7.24023c30.9121 0 56 25.0879 56 56c-0.0556641 7.97266 -3.29883 20.0693 -7.24023 27c8.42383 2.62207 22.4189 4.8623 31.2402 5zM572.52 206.6c1.9209 -3.79883 3.47949 -10.3379 3.47949 -14.5947\ns-1.55859 -10.7959 -3.47949 -14.5947c-54.1992 -105.771 -161.59 -177.41 -284.52 -177.41s-230.29 71.5898 -284.52 177.4c-1.9209 3.79883 -3.47949 10.3379 -3.47949 14.5947s1.55859 10.7959 3.47949 14.5947c54.1992 105.771 161.59 177.41 284.52 177.41\ns230.29 -71.5898 284.52 -177.4zM288 48c98.6602 0 189.1 55 237.93 144c-48.8398 89 -139.27 144 -237.93 144s-189.09 -55 -237.93 -144c48.8398 -89 139.279 -144 237.93 -144z\" />\n    <glyph glyph-name=\"eye-slash\" unicode=\"&#xf070;\" horiz-adv-x=\"640\" \nd=\"M634 -23c3.31738 -2.65137 6.00977 -8.25098 6.00977 -12.498c0 -3.10449 -1.57715 -7.58984 -3.51953 -10.0117l-10 -12.4902c-2.65234 -3.31152 -8.24707 -6 -12.4902 -6c-3.09961 0 -7.58008 1.57227 -10 3.50977l-598 467.49\nc-3.31738 2.65137 -6.00977 8.25098 -6.00977 12.498c0 3.10449 1.57715 7.58984 3.51953 10.0117l10 12.4902c2.65234 3.31152 8.24707 6 12.4902 6c3.09961 0 7.58008 -1.57227 10 -3.50977zM296.79 301.53c6.33496 1.35059 16.7324 2.45801 23.21 2.46973\nc60.4805 0 109.36 -47.9102 111.58 -107.85zM343.21 82.46c-6.33496 -1.34375 -16.7334 -2.44629 -23.21 -2.45996c-60.4697 0 -109.35 47.9102 -111.58 107.84zM320 336c-19.8799 0 -39.2803 -2.7998 -58.2197 -7.09961l-46.4102 36.29\nc32.9199 11.8096 67.9297 18.8096 104.63 18.8096c122.93 0 230.29 -71.5898 284.57 -177.4c1.91992 -3.79883 3.47949 -10.3379 3.47949 -14.5947s-1.55957 -10.7959 -3.47949 -14.5947c-11.7197 -22.7598 -35.4189 -56.4092 -52.9004 -75.1104l-37.7402 29.5\nc14.333 15.0156 34.0449 41.9854 44 60.2002c-48.8398 89 -139.279 144 -237.93 144zM320 48c19.8896 0 39.2803 2.7998 58.2197 7.08984l46.4102 -36.2803c-32.9199 -11.7598 -67.9297 -18.8096 -104.63 -18.8096c-122.92 0 -230.28 71.5898 -284.51 177.4\nc-1.9209 3.79883 -3.47949 10.3379 -3.47949 14.5947s1.55859 10.7959 3.47949 14.5947c11.7168 22.7568 35.4111 56.4014 52.8896 75.1006l37.7402 -29.5c-14.3467 -15.0107 -34.0811 -41.9756 -44.0498 -60.1904c48.8496 -89 139.279 -144 237.93 -144z\" />\n    <glyph glyph-name=\"calendar-alt\" unicode=\"&#xf073;\" horiz-adv-x=\"448\" \nd=\"M148 160h-40c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12zM256 172c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h40\nc6.59961 0 12 -5.40039 12 -12v-40zM352 172c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40zM256 76c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v40\nc0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40zM160 76c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40zM352 76c0 -6.59961 -5.40039 -12 -12 -12h-40\nc-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40zM448 336v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h48v52c0 6.59961 5.40039 12 12 12h40\nc6.59961 0 12 -5.40039 12 -12v-52h128v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h48c26.5 0 48 -21.5 48 -48zM400 -10v298h-352v-298c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z\" />\n    <glyph glyph-name=\"comment\" unicode=\"&#xf075;\" \nd=\"M256 416c141.4 0 256 -93.0996 256 -208s-114.6 -208 -256 -208c-32.7998 0 -64 5.2002 -92.9004 14.2998c-29.0996 -20.5996 -77.5996 -46.2998 -139.1 -46.2998c-9.59961 0 -18.2998 5.7002 -22.0996 14.5c-3.80078 8.7998 -2 19 4.59961 26\nc0.5 0.400391 31.5 33.7998 46.4004 73.2002c-33 35.0996 -52.9004 78.7002 -52.9004 126.3c0 114.9 114.6 208 256 208zM256 48c114.7 0 208 71.7998 208 160s-93.2998 160 -208 160s-208 -71.7998 -208 -160c0 -42.2002 21.7002 -74.0996 39.7998 -93.4004\nl20.6006 -21.7998l-10.6006 -28.0996c-5.5 -14.5 -12.5996 -28.1006 -19.8994 -40.2002c23.5996 7.59961 43.1992 18.9004 57.5 29l19.5 13.7998l22.6992 -7.2002c25.3008 -8 51.7002 -12.0996 78.4004 -12.0996z\" />\n    <glyph glyph-name=\"folder\" unicode=\"&#xf07b;\" \nd=\"M464 320c26.5098 0 48 -21.4902 48 -48v-224c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h146.74c8.49023 0 16.6299 -3.37012 22.6299 -9.37012l54.6299 -54.6299h192zM464 48v224h-198.62\nc-8.49023 0 -16.6299 3.37012 -22.6299 9.37012l-54.6299 54.6299h-140.12v-288h416z\" />\n    <glyph glyph-name=\"folder-open\" unicode=\"&#xf07c;\" horiz-adv-x=\"576\" \nd=\"M527.9 224c37.6992 0 60.6992 -41.5 40.6992 -73.4004l-79.8994 -128c-8.7998 -14.0996 -24.2002 -22.5996 -40.7002 -22.5996h-400c-26.5 0 -48 21.5 -48 48v288c0 26.5 21.5 48 48 48h160l64 -64h160c26.5 0 48 -21.5 48 -48v-48h47.9004zM48 330v-233.4l62.9004 104.2\nc8.69922 14.4004 24.2998 23.2002 41.0996 23.2002h280v42c0 3.2998 -2.7002 6 -6 6h-173.9l-64 64h-134.1c-3.2998 0 -6 -2.7002 -6 -6zM448 48l80 128h-378.8l-77.2002 -128h376z\" />\n    <glyph glyph-name=\"chart-bar\" unicode=\"&#xf080;\" \nd=\"M396.8 96c-6.39941 0 -12.7998 6.40039 -12.7998 12.7998v230.4c0 6.39941 6.40039 12.7998 12.7998 12.7998h22.4004c6.39941 0 12.7998 -6.40039 12.7998 -12.7998v-230.4c0 -6.39941 -6.40039 -12.7998 -12.7998 -12.7998h-22.4004zM204.8 96\nc-6.39941 0 -12.7998 6.40039 -12.7998 12.7998v198.4c0 6.39941 6.40039 12.7998 12.7998 12.7998h22.4004c6.39941 0 12.7998 -6.40039 12.7998 -12.7998v-198.4c0 -6.39941 -6.40039 -12.7998 -12.7998 -12.7998h-22.4004zM300.8 96\nc-6.39941 0 -12.7998 6.40039 -12.7998 12.7998v134.4c0 6.39941 6.40039 12.7998 12.7998 12.7998h22.4004c6.39941 0 12.7998 -6.40039 12.7998 -12.7998v-134.4c0 -6.39941 -6.40039 -12.7998 -12.7998 -12.7998h-22.4004zM496 48c8.83984 0 16 -7.16016 16 -16v-16\nc0 -8.83984 -7.16016 -16 -16 -16h-464c-17.6699 0 -32 14.3301 -32 32v336c0 8.83984 7.16016 16 16 16h16c8.83984 0 16 -7.16016 16 -16v-320h448zM108.8 96c-6.39941 0 -12.7998 6.40039 -12.7998 12.7998v70.4004c0 6.39941 6.40039 12.7998 12.7998 12.7998h22.4004\nc6.39941 0 12.7998 -6.40039 12.7998 -12.7998v-70.4004c0 -6.39941 -6.40039 -12.7998 -12.7998 -12.7998h-22.4004z\" />\n    <glyph glyph-name=\"comments\" unicode=\"&#xf086;\" horiz-adv-x=\"576\" \nd=\"M532 61.7998c15.2998 -30.7002 37.4004 -54.5 37.7998 -54.7998c6.2998 -6.7002 8 -16.5 4.40039 -25c-3.7002 -8.5 -12 -14 -21.2002 -14c-53.5996 0 -96.7002 20.2998 -125.2 38.7998c-19 -4.39941 -39 -6.7998 -59.7998 -6.7998\nc-86.2002 0 -159.9 40.4004 -191.3 97.7998c-9.7002 1.2002 -19.2002 2.7998 -28.4004 4.90039c-28.5 -18.6006 -71.7002 -38.7998 -125.2 -38.7998c-9.19922 0 -17.5996 5.5 -21.1992 14c-3.7002 8.5 -1.90039 18.2998 4.39941 25\nc0.400391 0.399414 22.4004 24.1992 37.7002 54.8994c-27.5 27.2002 -44 61.2002 -44 98.2002c0 88.4004 93.0996 160 208 160c86.2998 0 160.3 -40.5 191.8 -98.0996c99.7002 -11.8008 176.2 -77.9004 176.2 -157.9c0 -37.0996 -16.5 -71.0996 -44 -98.2002zM139.2 154.1\nl19.7998 -4.5c16 -3.69922 32.5 -5.59961 49 -5.59961c86.7002 0 160 51.2998 160 112s-73.2998 112 -160 112s-160 -51.2998 -160 -112c0 -28.7002 16.2002 -50.5996 29.7002 -64l24.7998 -24.5l-15.5 -31.0996c-2.59961 -5.10059 -5.2998 -10.1006 -8 -14.8008\nc14.5996 5.10059 29 12.3008 43.0996 21.4004zM498.3 96c13.5 13.4004 29.7002 35.2998 29.7002 64c0 49.2002 -48.2998 91.5 -112.7 106c0.299805 -3.2998 0.700195 -6.59961 0.700195 -10c0 -80.9004 -78 -147.5 -179.3 -158.3\nc29.0996 -29.6006 77.2998 -49.7002 131.3 -49.7002c16.5 0 33 1.90039 49 5.59961l19.9004 4.60059l17.0996 -11.1006c14.0996 -9.09961 28.5 -16.2998 43.0996 -21.3994c-2.69922 4.7002 -5.39941 9.7002 -8 14.7998l-15.5 31.0996z\" />\n    <glyph glyph-name=\"star-half\" unicode=\"&#xf089;\" horiz-adv-x=\"576\" \nd=\"M288 62.7002v-54.2998l-130.7 -68.6006c-23.3994 -12.2998 -50.8994 7.60059 -46.3994 33.7002l25 145.5l-105.7 103c-19 18.5 -8.5 50.7998 17.7002 54.5996l146.1 21.2002l65.2998 132.4c5.90039 11.8994 17.2998 17.7998 28.7002 17.7998v-68.0996l-62.2002 -126\nl-139 -20.2002l100.601 -98l-23.7002 -138.4z\" />\n    <glyph glyph-name=\"lemon\" unicode=\"&#xf094;\" \nd=\"M484.112 420.111c28.1221 -28.123 35.9434 -68.0039 19.0215 -97.0547c-23.0576 -39.584 50.1436 -163.384 -82.3311 -295.86c-132.301 -132.298 -256.435 -59.3594 -295.857 -82.3291c-29.0459 -16.917 -68.9219 -9.11426 -97.0576 19.0205\nc-28.1221 28.1221 -35.9434 68.0029 -19.0215 97.0547c23.0566 39.5859 -50.1436 163.386 82.3301 295.86c132.308 132.309 256.407 59.3496 295.862 82.332c29.0498 16.9219 68.9307 9.09863 97.0537 -19.0234zM461.707 347.217\nc13.5166 23.2031 -27.7578 63.7314 -50.4883 50.4912c-66.6025 -38.7939 -165.646 45.5898 -286.081 -74.8457c-120.444 -120.445 -36.0449 -219.472 -74.8447 -286.08c-13.542 -23.2471 27.8145 -63.6953 50.4932 -50.4883\nc66.6006 38.7949 165.636 -45.5996 286.076 74.8428c120.444 120.445 36.0449 219.472 74.8447 286.08zM291.846 338.481c1.37012 -10.96 -6.40332 -20.957 -17.3643 -22.3271c-54.8467 -6.85547 -135.779 -87.7871 -142.636 -142.636\nc-1.37305 -10.9883 -11.3984 -18.7334 -22.3262 -17.3643c-10.9609 1.37012 -18.7344 11.3652 -17.3643 22.3262c9.16211 73.2852 104.167 168.215 177.364 177.364c10.9531 1.36816 20.9561 -6.40234 22.3262 -17.3633z\" />\n    <glyph glyph-name=\"credit-card\" unicode=\"&#xf09d;\" horiz-adv-x=\"576\" \nd=\"M527.9 416c26.5996 0 48.0996 -21.5 48.0996 -48v-352c0 -26.5 -21.5 -48 -48.0996 -48h-479.801c-26.5996 0 -48.0996 21.5 -48.0996 48v352c0 26.5 21.5 48 48.0996 48h479.801zM54.0996 368c-3.2998 0 -6 -2.7002 -6 -6v-42h479.801v42c0 3.2998 -2.7002 6 -6 6\nh-467.801zM521.9 16c3.2998 0 6 2.7002 6 6v170h-479.801v-170c0 -3.2998 2.7002 -6 6 -6h467.801zM192 116v-40c0 -6.59961 -5.40039 -12 -12 -12h-72c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h72c6.59961 0 12 -5.40039 12 -12zM384 116v-40\nc0 -6.59961 -5.40039 -12 -12 -12h-136c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h136c6.59961 0 12 -5.40039 12 -12z\" />\n    <glyph glyph-name=\"hdd\" unicode=\"&#xf0a0;\" horiz-adv-x=\"576\" \nd=\"M567.403 212.358c5.59668 -8.04688 8.59668 -17.6113 8.59668 -27.4121v-136.946c0 -26.5098 -21.4902 -48 -48 -48h-480c-26.5098 0 -48 21.4902 -48 48v136.946c0 8.30957 3.85156 20.5898 8.59668 27.4121l105.08 151.053\nc7.90625 11.3652 25.5596 20.5889 39.4033 20.5889h0.000976562h269.838h0.000976562c13.8438 0 31.4971 -9.22363 39.4033 -20.5889zM153.081 336l-77.9131 -112h425.664l-77.9131 112h-269.838zM528 48v128h-480v-128h480zM496 112c0 -17.6729 -14.3271 -32 -32 -32\ns-32 14.3271 -32 32s14.3271 32 32 32s32 -14.3271 32 -32zM400 112c0 -17.6729 -14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32s32 -14.3271 32 -32z\" />\n    <glyph glyph-name=\"hand-point-right\" unicode=\"&#xf0a4;\" \nd=\"M428.8 310.4c45.0996 0 83.2002 -38.1016 83.2002 -83.2002c0 -45.6162 -37.7646 -83.2002 -83.2002 -83.2002h-35.6475c-1.41602 -6.36719 -4.96875 -16.252 -7.92969 -22.0645c2.50586 -22.0059 -3.50293 -44.9775 -15.9844 -62.791\nc-1.14062 -52.4863 -37.3984 -91.1445 -99.9404 -91.1445h-21.2988c-60.0635 0 -98.5117 40 -127.2 40h-2.67871c-5.74707 -4.95215 -13.5361 -8 -22.1201 -8h-64c-17.6729 0 -32 12.8936 -32 28.7998v230.4c0 15.9062 14.3271 28.7998 32 28.7998h64.001\nc8.58398 0 16.373 -3.04785 22.1201 -8h2.67871c6.96387 0 14.8623 6.19336 30.1816 23.6689l0.128906 0.148438l0.130859 0.145508c8.85645 9.93652 18.1162 20.8398 25.8506 33.2529c18.7051 30.2471 30.3936 78.7842 75.707 78.7842c56.9277 0 92 -35.2861 92 -83.2002\nv-0.0839844c0 -6.21777 -0.974609 -16.2148 -2.17578 -22.3154h86.1768zM428.8 192c18.9756 0 35.2002 16.2246 35.2002 35.2002c0 18.7002 -16.7754 35.2002 -35.2002 35.2002h-158.399c0 17.3242 26.3994 35.1992 26.3994 70.3994c0 26.4004 -20.625 35.2002 -44 35.2002\nc-8.79395 0 -20.4443 -32.7119 -34.9258 -56.0996c-9.07422 -14.5752 -19.5244 -27.2256 -30.7988 -39.875c-16.1094 -18.374 -33.8359 -36.6328 -59.0752 -39.5967v-176.753c42.79 -3.7627 74.5088 -39.6758 120 -39.6758h21.2988\nc40.5244 0 57.124 22.1973 50.6006 61.3252c14.6113 8.00098 24.1514 33.9785 12.9248 53.625c19.3652 18.2246 17.7871 46.3809 4.9502 61.0498h91.0254zM88 64c0 13.2549 -10.7451 24 -24 24s-24 -10.7451 -24 -24s10.7451 -24 24 -24s24 10.7451 24 24z\" />\n    <glyph glyph-name=\"hand-point-left\" unicode=\"&#xf0a5;\" \nd=\"M0 227.2c0 45.0986 38.1006 83.2002 83.2002 83.2002h86.1758c-1.3623 6.91016 -2.17578 14.374 -2.17578 22.3994c0 47.9141 35.0723 83.2002 92 83.2002c45.3135 0 57.002 -48.5371 75.7061 -78.7852c7.73438 -12.4121 16.9951 -23.3154 25.8506 -33.2529\nl0.130859 -0.145508l0.128906 -0.148438c15.3213 -17.4746 23.2197 -23.668 30.1836 -23.668h2.67871c5.74707 4.95215 13.5361 8 22.1201 8h64c17.6729 0 32 -12.8936 32 -28.7998v-230.4c0 -15.9062 -14.3271 -28.7998 -32 -28.7998h-64\nc-8.58398 0 -16.373 3.04785 -22.1201 8h-2.67871c-28.6885 0 -67.1367 -40 -127.2 -40h-21.2988c-62.542 0 -98.8008 38.6582 -99.9404 91.1445c-12.4814 17.8135 -18.4922 40.7852 -15.9844 62.791c-2.96094 5.8125 -6.51367 15.6973 -7.92969 22.0645h-35.6465\nc-45.4355 0 -83.2002 37.584 -83.2002 83.2002zM48 227.2c0 -18.9756 16.2246 -35.2002 35.2002 -35.2002h91.0244c-12.8369 -14.6689 -14.415 -42.8252 4.9502 -61.0498c-11.2256 -19.6465 -1.68652 -45.624 12.9248 -53.625\nc-6.52246 -39.1279 10.0771 -61.3252 50.6016 -61.3252h21.2988c45.4912 0 77.21 35.9131 120 39.6768v176.752c-25.2393 2.96289 -42.9658 21.2227 -59.0752 39.5967c-11.2744 12.6494 -21.7246 25.2998 -30.7988 39.875\nc-14.4814 23.3877 -26.1318 56.0996 -34.9258 56.0996c-23.375 0 -44 -8.7998 -44 -35.2002c0 -35.2002 26.3994 -53.0752 26.3994 -70.3994h-158.399c-18.4248 0 -35.2002 -16.5 -35.2002 -35.2002zM448 88c-13.2549 0 -24 -10.7451 -24 -24s10.7451 -24 24 -24\ns24 10.7451 24 24s-10.7451 24 -24 24z\" />\n    <glyph glyph-name=\"hand-point-up\" unicode=\"&#xf0a6;\" horiz-adv-x=\"448\" \nd=\"M105.6 364.8c0 45.0996 38.1016 83.2002 83.2002 83.2002c45.6162 0 83.2002 -37.7646 83.2002 -83.2002v-35.6465c6.36719 -1.41602 16.252 -4.96875 22.0645 -7.92969c22.0059 2.50684 44.9775 -3.50293 62.791 -15.9844\nc52.4863 -1.14062 91.1445 -37.3984 91.1445 -99.9404v-21.2988c0 -60.0635 -40 -98.5117 -40 -127.2v-2.67871c4.95215 -5.74707 8 -13.5361 8 -22.1201v-64c0 -17.6729 -12.8936 -32 -28.7998 -32h-230.4c-15.9062 0 -28.7998 14.3271 -28.7998 32v64\nc0 8.58398 3.04785 16.373 8 22.1201v2.67871c0 6.96387 -6.19336 14.8623 -23.6689 30.1816l-0.148438 0.128906l-0.145508 0.130859c-9.93652 8.85645 -20.8398 18.1162 -33.2529 25.8506c-30.2471 18.7051 -78.7842 30.3936 -78.7842 75.707\nc0 56.9277 35.2861 92 83.2002 92h0.0839844c6.21777 0 16.2148 -0.974609 22.3154 -2.17578v86.1768zM224 364.8c0 18.9756 -16.2246 35.2002 -35.2002 35.2002c-18.7002 0 -35.2002 -16.7754 -35.2002 -35.2002v-158.399c-17.3242 0 -35.1992 26.3994 -70.3994 26.3994\nc-26.4004 0 -35.2002 -20.625 -35.2002 -44c0 -8.79395 32.7119 -20.4443 56.0996 -34.9258c14.5752 -9.07422 27.2256 -19.5244 39.875 -30.7988c18.374 -16.1094 36.6328 -33.8359 39.5967 -59.0752h176.753c3.7627 42.79 39.6758 74.5088 39.6758 120v21.2988\nc0 40.5244 -22.1973 57.124 -61.3252 50.6006c-8.00098 14.6113 -33.9785 24.1514 -53.625 12.9248c-18.2246 19.3652 -46.3809 17.7871 -61.0498 4.9502v91.0254zM352 24c-13.2549 0 -24 -10.7451 -24 -24s10.7451 -24 24 -24s24 10.7451 24 24s-10.7451 24 -24 24z\" />\n    <glyph glyph-name=\"hand-point-down\" unicode=\"&#xf0a7;\" horiz-adv-x=\"448\" \nd=\"M188.8 -64c-45.0986 0 -83.2002 38.1006 -83.2002 83.2002v86.1758c-6.91016 -1.3623 -14.374 -2.17578 -22.3994 -2.17578c-47.9141 0 -83.2002 35.0723 -83.2002 92c0 45.3135 48.5371 57.002 78.7852 75.707c12.4121 7.73438 23.3154 16.9951 33.2529 25.8506\nl0.145508 0.130859l0.148438 0.128906c17.4746 15.3213 23.668 23.2197 23.668 30.1836v2.67871c-4.95215 5.74707 -8 13.5361 -8 22.1201v64c0 17.6729 12.8936 32 28.7998 32h230.4c15.9062 0 28.7998 -14.3271 28.7998 -32v-64.001\nc0 -8.58398 -3.04785 -16.373 -8 -22.1201v-2.67871c0 -28.6885 40 -67.1367 40 -127.2v-21.2988c0 -62.542 -38.6582 -98.8008 -91.1445 -99.9404c-17.8135 -12.4814 -40.7852 -18.4922 -62.791 -15.9844c-5.8125 -2.96094 -15.6973 -6.51367 -22.0645 -7.92969v-35.6465\nc0 -45.4355 -37.584 -83.2002 -83.2002 -83.2002zM188.8 -16c18.9756 0 35.2002 16.2246 35.2002 35.2002v91.0244c14.6689 -12.8369 42.8252 -14.415 61.0498 4.9502c19.6465 -11.2256 45.624 -1.68652 53.625 12.9248c39.1279 -6.52246 61.3252 10.0771 61.3252 50.6016\nv21.2988c0 45.4912 -35.9131 77.21 -39.6768 120h-176.752c-2.96289 -25.2393 -21.2227 -42.9658 -39.5967 -59.0752c-12.6494 -11.2744 -25.2998 -21.7246 -39.875 -30.7988c-23.3877 -14.4814 -56.0996 -26.1318 -56.0996 -34.9258c0 -23.375 8.7998 -44 35.2002 -44\nc35.2002 0 53.0752 26.3994 70.3994 26.3994v-158.399c0 -18.4248 16.5 -35.2002 35.2002 -35.2002zM328 384c0 -13.2549 10.7451 -24 24 -24s24 10.7451 24 24s-10.7451 24 -24 24s-24 -10.7451 -24 -24z\" />\n    <glyph glyph-name=\"copy\" unicode=\"&#xf0c5;\" horiz-adv-x=\"448\" \nd=\"M433.941 382.059c7.75977 -7.75977 14.0586 -22.9658 14.0586 -33.9404v-268.118c0 -26.5098 -21.4902 -48 -48 -48h-80v-48c0 -26.5098 -21.4902 -48 -48 -48h-224c-26.5098 0 -48 21.4902 -48 48v320c0 26.5098 21.4902 48 48 48h80v48c0 26.5098 21.4902 48 48 48\nh172.118c10.9746 0 26.1807 -6.29883 33.9404 -14.0586zM266 -16c3.31152 0 6 2.68848 6 6v42h-96c-26.5098 0 -48 21.4902 -48 48v224h-74c-3.31152 0 -6 -2.68848 -6 -6v-308c0 -3.31152 2.68848 -6 6 -6h212zM394 80c3.31152 0 6 2.68848 6 6v202h-88\nc-13.2549 0 -24 10.7451 -24 24v88h-106c-3.31152 0 -6 -2.68848 -6 -6v-308c0 -3.31152 2.68848 -6 6 -6h212zM400 336v9.63184v0.000976562c0 1.37207 -0.787109 3.27246 -1.75684 4.24219l-48.3682 48.3682c-1.12598 1.125 -2.65234 1.75684 -4.24316 1.75684h-9.63184\nv-64h64z\" />\n    <glyph glyph-name=\"save\" unicode=\"&#xf0c7;\" horiz-adv-x=\"448\" \nd=\"M433.941 318.059c7.75977 -7.75977 14.0586 -22.9658 14.0586 -33.9404v-268.118c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h268.118c10.9746 0 26.1807 -6.29883 33.9404 -14.0586zM272 368h-128v-80h128v80\nzM394 16c3.31152 0 6 2.68848 6 6v259.632v0.000976562c0 1.37207 -0.787109 3.27246 -1.75684 4.24219l-78.2432 78.2432v-100.118c0 -13.2549 -10.7451 -24 -24 -24h-176c-13.2549 0 -24 10.7451 -24 24v104h-42c-3.31152 0 -6 -2.68848 -6 -6v-340\nc0 -3.31152 2.68848 -6 6 -6h340zM224 216c48.5234 0 88 -39.4766 88 -88s-39.4766 -88 -88 -88s-88 39.4766 -88 88s39.4766 88 88 88zM224 88c22.0557 0 40 17.9443 40 40s-17.9443 40 -40 40s-40 -17.9443 -40 -40s17.9443 -40 40 -40z\" />\n    <glyph glyph-name=\"square\" unicode=\"&#xf0c8;\" horiz-adv-x=\"448\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM394 16c3.2998 0 6 2.7002 6 6v340c0 3.2998 -2.7002 6 -6 6h-340c-3.2998 0 -6 -2.7002 -6 -6v-340c0 -3.2998 2.7002 -6 6 -6h340z\" />\n    <glyph glyph-name=\"envelope\" unicode=\"&#xf0e0;\" \nd=\"M464 384c26.5098 0 48 -21.4902 48 -48v-288c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h416zM464 336h-416v-40.8047c22.4248 -18.2627 58.1797 -46.6602 134.587 -106.49\nc16.834 -13.2422 50.2051 -45.0762 73.4131 -44.7012c23.2119 -0.371094 56.5723 31.4541 73.4131 44.7012c76.4189 59.8389 112.165 88.2305 134.587 106.49v40.8047zM48 48h416v185.601c-22.915 -18.252 -55.4189 -43.8691 -104.947 -82.6523\nc-22.5439 -17.748 -60.3359 -55.1787 -103.053 -54.9473c-42.9277 -0.231445 -81.2051 37.75 -103.062 54.9551c-49.5293 38.7842 -82.0244 64.3945 -104.938 82.6455v-185.602z\" />\n    <glyph glyph-name=\"lightbulb\" unicode=\"&#xf0eb;\" horiz-adv-x=\"352\" \nd=\"M176 368c8.83984 0 16 -7.16016 16 -16s-7.16016 -16 -16 -16c-35.2803 0 -64 -28.7002 -64 -64c0 -8.83984 -7.16016 -16 -16 -16s-16 7.16016 -16 16c0 52.9404 43.0596 96 96 96zM96.0596 -11.1699l-0.0400391 43.1797h159.961l-0.0507812 -43.1797\nc-0.00976562 -3.13965 -0.939453 -6.21973 -2.67969 -8.83984l-24.5098 -36.8398c-2.95996 -4.45996 -7.95996 -7.14062 -13.3203 -7.14062h-78.8496c-5.35059 0 -10.3506 2.68066 -13.3203 7.14062l-24.5098 36.8398c-1.75 2.62012 -2.68066 5.68945 -2.68066 8.83984z\nM176 448c97.2002 0 176 -78.7998 176 -176c0 -44.3701 -16.4502 -84.8496 -43.5498 -115.79c-16.6406 -18.9795 -42.7402 -58.79 -52.4199 -92.1602v-0.0498047h-48v0.0996094c0.00390625 4.04199 0.999023 10.4482 2.21973 14.3008\nc5.67969 17.9893 22.9902 64.8496 62.0996 109.46c20.4102 23.29 31.6504 53.1699 31.6504 84.1396c0 70.5801 -57.4199 128 -128 128c-68.2803 0 -128.15 -54.3604 -127.95 -128c0.0898438 -30.9902 11.0703 -60.71 31.6104 -84.1396\nc39.3496 -44.9004 56.5801 -91.8604 62.1699 -109.67c1.42969 -4.56055 2.13965 -9.30078 2.15039 -14.0703v-0.120117h-48v0.0595703c-9.68066 33.3604 -35.7803 73.1709 -52.4209 92.1602c-27.1094 30.9307 -43.5596 71.4102 -43.5596 115.78\nc0 93.0303 73.7197 176 176 176z\" />\n    <glyph glyph-name=\"bell\" unicode=\"&#xf0f3;\" horiz-adv-x=\"448\" \nd=\"M439.39 85.71c6 -6.44043 8.66016 -14.1602 8.61035 -21.71c-0.0996094 -16.4004 -12.9805 -32 -32.0996 -32h-383.801c-19.1191 0 -31.9893 15.5996 -32.0996 32c-0.0498047 7.5498 2.61035 15.2598 8.61035 21.71c19.3193 20.7598 55.4697 51.9902 55.4697 154.29\nc0 77.7002 54.4795 139.9 127.939 155.16v20.8398c0 17.6699 14.3203 32 31.9805 32s31.9805 -14.3301 31.9805 -32v-20.8398c73.46 -15.2598 127.939 -77.46 127.939 -155.16c0 -102.3 36.1504 -133.53 55.4697 -154.29zM67.5303 80h312.939\nc-21.2197 27.96 -44.4199 74.3203 -44.5293 159.42c0 0.200195 0.0595703 0.379883 0.0595703 0.580078c0 61.8604 -50.1396 112 -112 112s-112 -50.1396 -112 -112c0 -0.200195 0.0595703 -0.379883 0.0595703 -0.580078\nc-0.109375 -85.0898 -23.3096 -131.45 -44.5293 -159.42zM224 -64c-35.3203 0 -63.9697 28.6504 -63.9697 64h127.939c0 -35.3496 -28.6494 -64 -63.9697 -64z\" />\n    <glyph glyph-name=\"hospital\" unicode=\"&#xf0f8;\" horiz-adv-x=\"448\" \nd=\"M128 204v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12zM268 192c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40\nc0 -6.62695 -5.37305 -12 -12 -12h-40zM192 108c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40zM268 96c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40\nc6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-40zM448 -28v-36h-448v36c0 6.62695 5.37305 12 12 12h19.5v378.965c0 11.6172 10.7451 21.0352 24 21.0352h88.5v40c0 13.2549 10.7451 24 24 24h112c13.2549 0 24 -10.7451 24 -24v-40h88.5\nc13.2549 0 24 -9.41797 24 -21.0352v-378.965h19.5c6.62695 0 12 -5.37305 12 -12zM79.5 -15h112.5v67c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-67h112.5v351h-64.5v-24c0 -13.2549 -10.7451 -24 -24 -24h-112c-13.2549 0 -24 10.7451 -24 24v24\nh-64.5v-351zM266 384h-26v26c0 3.31152 -2.68848 6 -6 6h-20c-3.31152 0 -6 -2.68848 -6 -6v-26h-26c-3.31152 0 -6 -2.68848 -6 -6v-20c0 -3.31152 2.68848 -6 6 -6h26v-26c0 -3.31152 2.68848 -6 6 -6h20c3.31152 0 6 2.68848 6 6v26h26c3.31152 0 6 2.68848 6 6v20\nc0 3.31152 -2.68848 6 -6 6z\" />\n    <glyph glyph-name=\"plus-square\" unicode=\"&#xf0fe;\" horiz-adv-x=\"448\" \nd=\"M352 208v-32c0 -6.59961 -5.40039 -12 -12 -12h-88v-88c0 -6.59961 -5.40039 -12 -12 -12h-32c-6.59961 0 -12 5.40039 -12 12v88h-88c-6.59961 0 -12 5.40039 -12 12v32c0 6.59961 5.40039 12 12 12h88v88c0 6.59961 5.40039 12 12 12h32c6.59961 0 12 -5.40039 12 -12\nv-88h88c6.59961 0 12 -5.40039 12 -12zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM400 22v340c0 3.2998 -2.7002 6 -6 6h-340c-3.2998 0 -6 -2.7002 -6 -6v-340\nc0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z\" />\n    <glyph glyph-name=\"circle\" unicode=\"&#xf111;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM256 -8c110.5 0 200 89.5 200 200s-89.5 200 -200 200s-200 -89.5 -200 -200s89.5 -200 200 -200z\" />\n    <glyph glyph-name=\"smile\" unicode=\"&#xf118;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM168 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32\ns32 -14.2998 32 -32s-14.2998 -32 -32 -32zM328 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32zM332 135.4c8.5 10.1992 23.7002 11.5 33.7998 3.09961c10.2002 -8.5 11.6006 -23.5996 3.10059 -33.7998\nc-30 -36 -74.1006 -56.6006 -120.9 -56.6006s-90.9004 20.6006 -120.9 56.6006c-8.39941 10.2002 -7.09961 25.2998 3.10059 33.7998c10.0996 8.40039 25.2998 7.09961 33.7998 -3.09961c20.7998 -25.1006 51.5 -39.4004 84 -39.4004s63.2002 14.4004 84 39.4004z\" />\n    <glyph glyph-name=\"frown\" unicode=\"&#xf119;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM168 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32\ns32 -14.2998 32 -32s-14.2998 -32 -32 -32zM328 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32zM248 144c40.2002 0 78 -17.7002 103.8 -48.5996c8.40039 -10.2002 7.10059 -25.3008 -3.09961 -33.8008\nc-10.7002 -8.7998 -25.7002 -6.59961 -33.7998 3.10059c-16.6006 20 -41 31.3994 -66.9004 31.3994s-50.2998 -11.5 -66.9004 -31.3994c-8.5 -10.2002 -23.5996 -11.5 -33.7998 -3.10059c-10.2002 8.5 -11.5996 23.6006 -3.09961 33.8008\nc25.7998 30.8994 63.5996 48.5996 103.8 48.5996z\" />\n    <glyph glyph-name=\"meh\" unicode=\"&#xf11a;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM168 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32\ns32 -14.2998 32 -32s-14.2998 -32 -32 -32zM328 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32zM336 128c13.2002 0 24 -10.7998 24 -24s-10.7998 -24 -24 -24h-176c-13.2002 0 -24 10.7998 -24 24s10.7998 24 24 24h176z\n\" />\n    <glyph glyph-name=\"keyboard\" unicode=\"&#xf11c;\" horiz-adv-x=\"576\" \nd=\"M528 384c26.5098 0 48 -21.4902 48 -48v-288c0 -26.5098 -21.4902 -48 -48 -48h-480c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h480zM536 48v288c0 4.41113 -3.58887 8 -8 8h-480c-4.41113 0 -8 -3.58887 -8 -8v-288c0 -4.41113 3.58887 -8 8 -8\nh480c4.41113 0 8 3.58887 8 8zM170 178c0 -6.62695 -5.37305 -12 -12 -12h-28c-6.62695 0 -12 5.37305 -12 12v28c0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM266 178c0 -6.62695 -5.37305 -12 -12 -12h-28c-6.62695 0 -12 5.37305 -12 12v28\nc0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM362 178c0 -6.62695 -5.37305 -12 -12 -12h-28c-6.62695 0 -12 5.37305 -12 12v28c0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM458 178c0 -6.62695 -5.37305 -12 -12 -12h-28\nc-6.62695 0 -12 5.37305 -12 12v28c0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM122 96c0 -6.62695 -5.37305 -12 -12 -12h-28c-6.62695 0 -12 5.37305 -12 12v28c0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM506 96\nc0 -6.62695 -5.37305 -12 -12 -12h-28c-6.62695 0 -12 5.37305 -12 12v28c0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM122 260c0 -6.62695 -5.37305 -12 -12 -12h-28c-6.62695 0 -12 5.37305 -12 12v28c0 6.62695 5.37305 12 12 12h28\nc6.62695 0 12 -5.37305 12 -12v-28zM218 260c0 -6.62695 -5.37305 -12 -12 -12h-28c-6.62695 0 -12 5.37305 -12 12v28c0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM314 260c0 -6.62695 -5.37305 -12 -12 -12h-28c-6.62695 0 -12 5.37305 -12 12v28\nc0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM410 260c0 -6.62695 -5.37305 -12 -12 -12h-28c-6.62695 0 -12 5.37305 -12 12v28c0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM506 260c0 -6.62695 -5.37305 -12 -12 -12h-28\nc-6.62695 0 -12 5.37305 -12 12v28c0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM408 102c0 -6.62695 -5.37305 -12 -12 -12h-216c-6.62695 0 -12 5.37305 -12 12v16c0 6.62695 5.37305 12 12 12h216c6.62695 0 12 -5.37305 12 -12v-16z\" />\n    <glyph glyph-name=\"calendar\" unicode=\"&#xf133;\" horiz-adv-x=\"448\" \nd=\"M400 384c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h48v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h128v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12\nv-52h48zM394 -16c3.2998 0 6 2.7002 6 6v298h-352v-298c0 -3.2998 2.7002 -6 6 -6h340z\" />\n    <glyph glyph-name=\"play-circle\" unicode=\"&#xf144;\" \nd=\"M371.7 210c16.3994 -9.2002 16.3994 -32.9004 0 -42l-176 -101c-15.9004 -8.7998 -35.7002 2.59961 -35.7002 21v208c0 18.5 19.9004 29.7998 35.7002 21zM504 192c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248s248 -111 248 -248zM56 192\nc0 -110.5 89.5 -200 200 -200s200 89.5 200 200s-89.5 200 -200 200s-200 -89.5 -200 -200z\" />\n    <glyph glyph-name=\"minus-square\" unicode=\"&#xf146;\" horiz-adv-x=\"448\" \nd=\"M108 164c-6.59961 0 -12 5.40039 -12 12v32c0 6.59961 5.40039 12 12 12h232c6.59961 0 12 -5.40039 12 -12v-32c0 -6.59961 -5.40039 -12 -12 -12h-232zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352\nc26.5 0 48 -21.5 48 -48zM400 22v340c0 3.2998 -2.7002 6 -6 6h-340c-3.2998 0 -6 -2.7002 -6 -6v-340c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z\" />\n    <glyph glyph-name=\"check-square\" unicode=\"&#xf14a;\" horiz-adv-x=\"448\" \nd=\"M400 416c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h352zM400 16v352h-352v-352h352zM364.136 257.724l-172.589 -171.204\nc-4.70508 -4.66699 -12.3027 -4.63672 -16.9697 0.0683594l-90.7812 91.5156c-4.66699 4.70508 -4.63672 12.3037 0.0693359 16.9717l22.7188 22.5361c4.70508 4.66699 12.3027 4.63672 16.9697 -0.0693359l59.792 -60.2773l141.353 140.217\nc4.70508 4.66699 12.3027 4.63672 16.9697 -0.0683594l22.5361 -22.7178c4.66699 -4.70605 4.63672 -12.3047 -0.0683594 -16.9717z\" />\n    <glyph glyph-name=\"share-square\" unicode=\"&#xf14d;\" horiz-adv-x=\"576\" \nd=\"M561.938 289.94c18.75 -18.7402 18.75 -49.1406 0 -67.8809l-143.998 -144c-29.9727 -29.9727 -81.9404 -9.05273 -81.9404 33.9404v53.7998c-101.266 -7.83691 -99.625 -31.6406 -84.1104 -78.7598c14.2285 -43.0889 -33.4736 -79.248 -71.0195 -55.7402\nc-51.6924 32.3057 -84.8701 83.0635 -84.8701 144.76c0 39.3408 12.2197 72.7402 36.3301 99.3008c19.8398 21.8398 47.7402 38.4697 82.9102 49.4199c36.7295 11.4395 78.3096 16.1094 120.76 17.9893v57.1982c0 42.9355 51.9258 63.9541 81.9404 33.9404zM384 112l144 144\nl-144 144v-104.09c-110.86 -0.90332 -240 -10.5166 -240 -119.851c0 -52.1396 32.79 -85.6094 62.3096 -104.06c-39.8174 120.65 48.999 141.918 177.69 143.84v-103.84zM408.74 27.5068c6.14844 1.75684 15.5449 5.92383 20.9736 9.30273\nc7.97656 4.95215 18.2861 -0.825195 18.2861 -10.2139v-42.5957c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h132c6.62695 0 12 -5.37305 12 -12v-4.48633c0 -4.91699 -2.9873 -9.36914 -7.56934 -11.1514\nc-13.7021 -5.33105 -26.3955 -11.5371 -38.0498 -18.585c-1.59668 -0.974609 -4.41016 -1.77051 -6.28027 -1.77734h-86.1006c-3.31152 0 -6 -2.68848 -6 -6v-340c0 -3.31152 2.68848 -6 6 -6h340c3.31152 0 6 2.68848 6 6v25.9658c0 5.37012 3.5791 10.0596 8.74023 11.541\nz\" />\n    <glyph glyph-name=\"compass\" unicode=\"&#xf14e;\" horiz-adv-x=\"496\" \nd=\"M347.94 318.14c16.6592 7.61035 33.8096 -9.54004 26.1992 -26.1992l-65.9697 -144.341c-2.73047 -5.97363 -9.7959 -13.0391 -15.7695 -15.7695l-144.341 -65.9697c-16.6592 -7.61035 -33.8096 9.5498 -26.1992 26.1992l65.9697 144.341\nc2.73047 5.97363 9.7959 13.0391 15.7695 15.7695zM270.58 169.42c12.4697 12.4697 12.4697 32.6904 0 45.1602s-32.6904 12.4697 -45.1602 0s-12.4697 -32.6904 0 -45.1602s32.6904 -12.4697 45.1602 0zM248 440c136.97 0 248 -111.03 248 -248s-111.03 -248 -248 -248\ns-248 111.03 -248 248s111.03 248 248 248zM248 -8c110.28 0 200 89.7197 200 200s-89.7197 200 -200 200s-200 -89.7197 -200 -200s89.7197 -200 200 -200z\" />\n    <glyph glyph-name=\"caret-square-down\" unicode=\"&#xf150;\" horiz-adv-x=\"448\" \nd=\"M125.1 240h197.801c10.6992 0 16.0996 -13 8.5 -20.5l-98.9004 -98.2998c-4.7002 -4.7002 -12.2002 -4.7002 -16.9004 0l-98.8994 98.2998c-7.7002 7.5 -2.2998 20.5 8.39941 20.5zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352\nc0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM400 22v340c0 3.2998 -2.7002 6 -6 6h-340c-3.2998 0 -6 -2.7002 -6 -6v-340c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z\" />\n    <glyph glyph-name=\"caret-square-up\" unicode=\"&#xf151;\" horiz-adv-x=\"448\" \nd=\"M322.9 144h-197.801c-10.6992 0 -16.0996 13 -8.5 20.5l98.9004 98.2998c4.7002 4.7002 12.2002 4.7002 16.9004 0l98.8994 -98.2998c7.7002 -7.5 2.2998 -20.5 -8.39941 -20.5zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352\nc0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM400 22v340c0 3.2998 -2.7002 6 -6 6h-340c-3.2998 0 -6 -2.7002 -6 -6v-340c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z\" />\n    <glyph glyph-name=\"caret-square-right\" unicode=\"&#xf152;\" horiz-adv-x=\"448\" \nd=\"M176 93.0996v197.801c0 10.6992 13 16.0996 20.5 8.5l98.2998 -98.9004c4.7002 -4.7002 4.7002 -12.2002 0 -16.9004l-98.2998 -98.8994c-7.5 -7.7002 -20.5 -2.2998 -20.5 8.39941zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352\nc0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM400 22v340c0 3.2998 -2.7002 6 -6 6h-340c-3.2998 0 -6 -2.7002 -6 -6v-340c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z\" />\n    <glyph glyph-name=\"file\" unicode=\"&#xf15b;\" horiz-adv-x=\"384\" \nd=\"M369.9 350.1c9 -9 14.0996 -21.2998 14.0996 -34v-332.1c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48.0996h204.1c12.7002 0 24.9004 -5.09961 33.9004 -14.0996zM332.1 320l-76.0996 76.0996v-76.0996h76.0996zM48 -16h288v288\nh-104c-13.2998 0 -24 10.7002 -24 24v104h-160v-416z\" />\n    <glyph glyph-name=\"file-alt\" unicode=\"&#xf15c;\" horiz-adv-x=\"384\" \nd=\"M288 200v-28c0 -6.59961 -5.40039 -12 -12 -12h-168c-6.59961 0 -12 5.40039 -12 12v28c0 6.59961 5.40039 12 12 12h168c6.59961 0 12 -5.40039 12 -12zM276 128c6.59961 0 12 -5.40039 12 -12v-28c0 -6.59961 -5.40039 -12 -12 -12h-168c-6.59961 0 -12 5.40039 -12 12\nv28c0 6.59961 5.40039 12 12 12h168zM384 316.1v-332.1c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48h204.1c12.7002 0 24.9004 -5.09961 33.9004 -14.0996l83.9004 -83.9004c9 -8.90039 14.0996 -21.2002 14.0996 -33.9004z\nM256 396.1v-76.0996h76.0996zM336 -16v288h-104c-13.2998 0 -24 10.7002 -24 24v104h-160v-416h288z\" />\n    <glyph glyph-name=\"thumbs-up\" unicode=\"&#xf164;\" \nd=\"M466.27 161.31c4.6748 -22.6465 0.864258 -44.5371 -8.98926 -62.9893c2.95898 -23.8682 -4.02148 -48.5654 -17.3398 -66.9902c-0.954102 -55.9072 -35.8232 -95.3301 -112.94 -95.3301c-7 0 -15 0.00976562 -22.2197 0.00976562\nc-102.742 0 -133.293 38.9395 -177.803 39.9404c-3.56934 -13.7764 -16.085 -23.9502 -30.9775 -23.9502h-64c-17.6729 0 -32 14.3271 -32 32v240c0 17.6729 14.3271 32 32 32h98.7598c19.1455 16.9531 46.0137 60.6533 68.7598 83.4004\nc13.667 13.667 10.1533 108.6 71.7607 108.6c57.5801 0 95.2695 -31.9355 95.2695 -104.73c0 -18.4092 -3.92969 -33.7295 -8.84961 -46.5391h36.4795c48.6025 0 85.8203 -41.5654 85.8203 -85.5801c0 -19.1504 -4.95996 -34.9902 -13.7305 -49.8408zM404.52 107.48\nc21.5811 20.3838 18.6992 51.0645 5.21094 65.6191c9.44922 0 22.3594 18.9102 22.2695 37.8105c-0.0898438 18.9102 -16.71 37.8203 -37.8203 37.8203h-103.989c0 37.8193 28.3594 55.3691 28.3594 94.5391c0 23.75 0 56.7305 -47.2695 56.7305\nc-18.9102 -18.9102 -9.45996 -66.1797 -37.8203 -94.54c-26.5596 -26.5703 -66.1797 -97.46 -94.54 -97.46h-10.9199v-186.17c53.6113 0 100.001 -37.8203 171.64 -37.8203h37.8203c35.5117 0 60.8203 17.1201 53.1201 65.9004\nc15.2002 8.16016 26.5 36.4395 13.9395 57.5703zM88 16c0 13.2549 -10.7451 24 -24 24s-24 -10.7451 -24 -24s10.7451 -24 24 -24s24 10.7451 24 24z\" />\n    <glyph glyph-name=\"thumbs-down\" unicode=\"&#xf165;\" \nd=\"M466.27 222.69c8.77051 -14.8506 13.7305 -30.6904 13.7305 -49.8408c0 -44.0146 -37.2178 -85.5801 -85.8203 -85.5801h-36.4795c4.91992 -12.8096 8.84961 -28.1299 8.84961 -46.5391c0 -72.7949 -37.6895 -104.73 -95.2695 -104.73\nc-61.6074 0 -58.0938 94.9326 -71.7607 108.6c-22.7461 22.7471 -49.6133 66.4473 -68.7598 83.4004h-7.05176c-5.5332 -9.56152 -15.8662 -16 -27.708 -16h-64c-17.6729 0 -32 14.3271 -32 32v240c0 17.6729 14.3271 32 32 32h64c8.11328 0 15.5146 -3.02539 21.1553 -8\nh10.8447c40.9971 0 73.1953 39.9902 176.78 39.9902c7.21973 0 15.2197 0.00976562 22.2197 0.00976562c77.1172 0 111.986 -39.4229 112.94 -95.3301c13.3184 -18.4248 20.2979 -43.1221 17.3398 -66.9902c9.85352 -18.4521 13.6641 -40.3428 8.98926 -62.9893zM64 152\nc13.2549 0 24 10.7451 24 24s-10.7451 24 -24 24s-24 -10.7451 -24 -24s10.7451 -24 24 -24zM394.18 135.27c21.1104 0 37.7305 18.9102 37.8203 37.8203c0.0898438 18.9004 -12.8203 37.8105 -22.2695 37.8105c13.4883 14.5547 16.3701 45.2354 -5.21094 65.6191\nc12.5605 21.1309 1.26074 49.4102 -13.9395 57.5703c7.7002 48.7803 -17.6084 65.9004 -53.1201 65.9004h-37.8203c-71.6387 0 -118.028 -37.8203 -171.64 -37.8203v-186.17h10.9199c28.3604 0 67.9805 -70.8896 94.54 -97.46\nc28.3604 -28.3604 18.9102 -75.6299 37.8203 -94.54c47.2695 0 47.2695 32.9805 47.2695 56.7305c0 39.1699 -28.3594 56.7197 -28.3594 94.5391h103.989z\" />\n    <glyph glyph-name=\"sun\" unicode=\"&#xf185;\" \nd=\"M494.2 226.1c11.2002 -7.59961 17.7998 -20.0996 17.8994 -33.6992c0 -13.4004 -6.69922 -26 -17.7998 -33.5l-59.7998 -40.5l13.7002 -71c2.5 -13.2002 -1.60059 -26.8008 -11.1006 -36.3008s-22.8994 -13.7998 -36.2998 -11.0996l-70.8994 13.7002l-40.4004 -59.9004\nc-7.5 -11.0996 -20.0996 -17.7998 -33.5 -17.7998s-26 6.7002 -33.5 17.9004l-40.4004 59.8994l-70.7998 -13.7002c-13.3994 -2.59961 -26.7998 1.60059 -36.2998 11.1006s-13.7002 23.0996 -11.0996 36.2998l13.6992 71l-59.7998 40.5\nc-11.0996 7.5 -17.7998 20 -17.7998 33.5s6.59961 26 17.7998 33.5996l59.7998 40.5l-13.6992 71c-2.60059 13.2002 1.59961 26.7002 11.0996 36.3008c9.5 9.59961 23 13.6992 36.2998 11.1992l70.7998 -13.6992l40.4004 59.8994c15.0996 22.2998 51.9004 22.2998 67 0\nl40.4004 -59.8994l70.8994 13.6992c13 2.60059 26.6006 -1.59961 36.2002 -11.0996c9.5 -9.59961 13.7002 -23.2002 11.0996 -36.4004l-13.6992 -71zM381.3 140.5l76.7998 52.0996l-76.7998 52l17.6006 91.1006l-91 -17.6006l-51.9004 76.9004l-51.7998 -76.7998\nl-91 17.5996l17.5996 -91.2002l-76.7998 -52l76.7998 -52l-17.5996 -91.1992l90.8994 17.5996l51.9004 -77l51.9004 76.9004l91 -17.6006zM256 296c57.2998 0 104 -46.7002 104 -104s-46.7002 -104 -104 -104s-104 46.7002 -104 104s46.7002 104 104 104zM256 136\nc30.9004 0 56 25.0996 56 56s-25.0996 56 -56 56s-56 -25.0996 -56 -56s25.0996 -56 56 -56z\" />\n    <glyph glyph-name=\"moon\" unicode=\"&#xf186;\" \nd=\"M279.135 -64c-141.424 0 -256 114.64 -256 256c0 141.425 114.641 256 256 256c13.0068 -0.00195312 33.9443 -1.91797 46.7354 -4.27734c44.0205 -8.13086 53.7666 -66.8691 15.0215 -88.9189c-41.374 -23.5439 -67.4336 -67.4121 -67.4336 -115.836\nc0 -83.5234 75.9238 -146.475 158.272 -130.792c43.6904 8.32129 74.5186 -42.5693 46.248 -77.4004c-47.8613 -58.9717 -120.088 -94.7754 -198.844 -94.7754zM279.135 400c-114.875 0 -208 -93.125 -208 -208s93.125 -208 208 -208\nc65.2314 0 123.439 30.0361 161.575 77.0244c-111.611 -21.2568 -215.252 64.0957 -215.252 177.943c0 67.5127 36.9326 126.392 91.6934 157.555c-12.3271 2.27637 -25.0312 3.47754 -38.0166 3.47754z\" />\n    <glyph glyph-name=\"caret-square-left\" unicode=\"&#xf191;\" horiz-adv-x=\"448\" \nd=\"M272 290.9v-197.801c0 -10.6992 -13 -16.0996 -20.5 -8.5l-98.2998 98.9004c-4.7002 4.7002 -4.7002 12.2002 0 16.9004l98.2998 98.8994c7.5 7.7002 20.5 2.2998 20.5 -8.39941zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352\nc0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM400 22v340c0 3.2998 -2.7002 6 -6 6h-340c-3.2998 0 -6 -2.7002 -6 -6v-340c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z\" />\n    <glyph glyph-name=\"dot-circle\" unicode=\"&#xf192;\" \nd=\"M256 392c-110.549 0 -200 -89.4678 -200 -200c0 -110.549 89.4678 -200 200 -200c110.549 0 200 89.4678 200 200c0 110.549 -89.4678 200 -200 200zM256 440c136.967 0 248 -111.033 248 -248s-111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248z\nM256 272c44.1826 0 80 -35.8174 80 -80s-35.8174 -80 -80 -80s-80 35.8174 -80 80s35.8174 80 80 80z\" />\n    <glyph glyph-name=\"building\" unicode=\"&#xf1ad;\" horiz-adv-x=\"448\" \nd=\"M128 300v40c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12zM268 288c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40\nc0 -6.59961 -5.40039 -12 -12 -12h-40zM140 192c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-40zM268 192c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h40\nc6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-40zM192 108c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40zM268 96c-6.59961 0 -12 5.40039 -12 12v40\nc0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-40zM448 -28v-36h-448v36c0 6.59961 5.40039 12 12 12h19.5v440c0 13.2998 10.7002 24 24 24h337c13.2998 0 24 -10.7002 24 -24v-440h19.5\nc6.59961 0 12 -5.40039 12 -12zM79.5 -15h112.5v67c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-67h112.5v414l-288.5 1z\" />\n    <glyph glyph-name=\"file-pdf\" unicode=\"&#xf1c1;\" horiz-adv-x=\"384\" \nd=\"M369.9 350.1c9 -9 14.0996 -21.2998 14.0996 -34v-332.1c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48.0996h204.1c12.7002 0 24.9004 -5.09961 33.9004 -14.0996zM332.1 320l-76.0996 76.0996v-76.0996h76.0996zM48 -16h288v288\nh-104c-13.2998 0 -24 10.7002 -24 24v104h-160v-416zM298.2 127.7c10.5 -10.5 8 -38.7002 -17.5 -38.7002c-14.7998 0 -36.9004 6.7998 -55.7998 17c-21.6006 -3.59961 -46 -12.7002 -68.4004 -20.0996c-50.0996 -86.4004 -79.4004 -47 -76.0996 -31.2002\nc4 20 31 35.8994 51 46.2002c10.5 18.3994 25.3994 50.5 35.3994 74.3994c-7.39941 28.6006 -11.3994 51 -7 67.1006c4.7998 17.6992 38.4004 20.2998 42.6006 -5.90039c4.69922 -15.4004 -1.5 -39.9004 -5.40039 -56c8.09961 -21.2998 19.5996 -35.7998 36.7998 -46.2998\nc17.4004 2.2002 52.2002 5.5 64.4004 -6.5zM100.1 49.9004c0 -0.700195 11.4004 4.69922 30.4004 35c-5.90039 -5.5 -25.2998 -21.3008 -30.4004 -35zM181.7 240.5c-2.5 0 -2.60059 -26.9004 1.7998 -40.7998c4.90039 8.7002 5.59961 40.7998 -1.7998 40.7998zM157.3 103.9\nc15.9004 6.09961 34 14.8994 54.7998 19.1992c-11.1992 8.30078 -21.7998 20.4004 -30.0996 35.5c-6.7002 -17.6992 -15 -37.7998 -24.7002 -54.6992zM288.9 108.9c3.59961 2.39941 -2.2002 10.3994 -37.3008 7.7998c32.3008 -13.7998 37.3008 -7.7998 37.3008 -7.7998z\" />\n    <glyph glyph-name=\"file-word\" unicode=\"&#xf1c2;\" horiz-adv-x=\"384\" \nd=\"M369.9 350.1c9 -9 14.0996 -21.2998 14.0996 -34v-332.1c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48.0996h204.1c12.7002 0 24.9004 -5.09961 33.9004 -14.0996zM332.1 320l-76.0996 76.0996v-76.0996h76.0996zM48 -16h288v288\nh-104c-13.2998 0 -24 10.7002 -24 24v104h-160v-416zM268.1 192v0.200195h15.8008c7.7998 0 13.5 -7.2998 11.5996 -14.9004c-4.2998 -17 -13.7002 -54.0996 -34.5 -136c-1.2998 -5.39941 -6.09961 -9.09961 -11.5996 -9.09961h-24.7002\nc-5.5 0 -10.2998 3.7998 -11.6006 9.09961c-5.2998 20.9004 -17.7998 71 -17.8994 71.4004l-2.90039 17.2998c-0.5 -5.2998 -1.5 -11.0996 -3 -17.2998l-17.8994 -71.4004c-1.30078 -5.39941 -6.10059 -9.09961 -11.6006 -9.09961h-25.2002\nc-5.59961 0 -10.3994 3.7002 -11.6992 9.09961c-6.5 26.5 -25.2002 103.4 -33.2002 136c-1.7998 7.5 3.89941 14.7998 11.7002 14.7998h16.7998c5.7998 0 10.7002 -4.09961 11.7998 -9.69922c5 -25.7002 18.4004 -93.8008 19.0996 -99\nc0.300781 -1.7002 0.400391 -3.10059 0.5 -4.2002c0.800781 7.5 0.400391 4.7002 24.8008 103.7c1.39941 5.2998 6.19922 9.09961 11.6992 9.09961h13.3008c5.59961 0 10.3994 -3.7998 11.6992 -9.2002c23.9004 -99.7002 22.8008 -94.3994 23.6006 -99.5\nc0.299805 -1.7002 0.5 -3.09961 0.700195 -4.2998c0.599609 8.09961 0.399414 5.7998 21 103.5c1.09961 5.5 6 9.5 11.6992 9.5z\" />\n    <glyph glyph-name=\"file-excel\" unicode=\"&#xf1c3;\" horiz-adv-x=\"384\" \nd=\"M369.9 350.1c9 -9 14.0996 -21.2998 14.0996 -34v-332.1c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48.0996h204.1c12.7002 0 24.9004 -5.09961 33.9004 -14.0996zM332.1 320l-76.0996 76.0996v-76.0996h76.0996zM48 -16h288v288\nh-104c-13.2998 0 -24 10.7002 -24 24v104h-160v-416zM260 224c9.2002 0 15 -10 10.2998 -18c-16 -27.5 -45.5996 -76.9004 -46.2998 -78l46.4004 -78c4.59961 -8 -1.10059 -18 -10.4004 -18h-28.7998c-4.40039 0 -8.5 2.40039 -10.6006 6.2998\nc-22.6992 41.7998 -13.6992 27.5 -28.5996 57.7002c-5.59961 -12.7002 -6.90039 -17.7002 -28.5996 -57.7002c-2.10059 -3.89941 -6.10059 -6.2998 -10.5 -6.2998h-28.9004c-9.2998 0 -15.0996 10 -10.4004 18l46.3008 78l-46.3008 78c-4.59961 8 1.10059 18 10.4004 18\nh28.9004c4.39941 0 8.5 -2.40039 10.5996 -6.2998c21.7002 -40.4004 14.7002 -28.6006 28.5996 -57.7002c6.40039 15.2998 10.6006 24.5996 28.6006 57.7002c2.09961 3.89941 6.09961 6.2998 10.5 6.2998h28.7998z\" />\n    <glyph glyph-name=\"file-powerpoint\" unicode=\"&#xf1c4;\" horiz-adv-x=\"384\" \nd=\"M369.9 350.1c9 -9 14.0996 -21.2998 14.0996 -34v-332.1c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48.0996h204.1c12.7002 0 24.9004 -5.09961 33.9004 -14.0996zM332.1 320l-76.0996 76.0996v-76.0996h76.0996zM48 -16h288v288\nh-104c-13.2998 0 -24 10.7002 -24 24v104h-160v-416zM120 44v168c0 6.59961 5.40039 12 12 12h69.2002c36.7002 0 62.7998 -27 62.7998 -66.2998c0 -74.2998 -68.7002 -66.5 -95.5 -66.5v-47.2002c0 -6.59961 -5.40039 -12 -12 -12h-24.5c-6.59961 0 -12 5.40039 -12 12z\nM168.5 131.4h23c7.90039 0 13.9004 2.39941 18.0996 7.19922c8.5 9.80078 8.40039 28.5 0.100586 37.8008c-4.10059 4.59961 -9.90039 7 -17.4004 7h-23.8994v-52h0.0996094z\" />\n    <glyph glyph-name=\"file-image\" unicode=\"&#xf1c5;\" horiz-adv-x=\"384\" \nd=\"M369.9 350.1c9 -9 14.0996 -21.2998 14.0996 -34v-332.1c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48.0996h204.1c12.7002 0 24.9004 -5.09961 33.9004 -14.0996zM332.1 320l-76.0996 76.0996v-76.0996h76.0996zM48 -16h288v288\nh-104c-13.2998 0 -24 10.7002 -24 24v104h-160v-416zM80 32v64l39.5 39.5c4.7002 4.7002 12.2998 4.7002 17 0l39.5 -39.5l87.5 87.5c4.7002 4.7002 12.2998 4.7002 17 0l23.5 -23.5v-128h-224zM128 272c26.5 0 48 -21.5 48 -48s-21.5 -48 -48 -48s-48 21.5 -48 48\ns21.5 48 48 48z\" />\n    <glyph glyph-name=\"file-archive\" unicode=\"&#xf1c6;\" horiz-adv-x=\"384\" \nd=\"M128.3 288h32v-32h-32v32zM192.3 384v-32h-32v32h32zM128.3 352h32v-32h-32v32zM192.3 320v-32h-32v32h32zM369.9 350.1c9 -9 14.0996 -21.2998 14.0996 -34v-332.1c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48.0996h204.1\nc12.7002 0 24.9004 -5.09961 33.9004 -14.0996zM256 396.1v-76.0996h76.0996zM336 -16v288h-104c-13.2998 0 -24 10.7002 -24 24v104h-48.2998v-16h-32v16h-79.7002v-416h288zM194.2 182.3l17.2998 -87.7002c6.40039 -32.3994 -18.4004 -62.5996 -51.5 -62.5996\nc-33.2002 0 -58 30.4004 -51.4004 62.9004l19.7002 97.0996v32h32v-32h22.1006c5.7998 0 10.6992 -4.09961 11.7998 -9.7002zM160.3 57.9004c17.9004 0 32.4004 12.0996 32.4004 27c0 14.8994 -14.5 27 -32.4004 27c-17.8994 0 -32.3994 -12.1006 -32.3994 -27\nc0 -14.9004 14.5 -27 32.3994 -27zM192.3 256v-32h-32v32h32z\" />\n    <glyph glyph-name=\"file-audio\" unicode=\"&#xf1c7;\" horiz-adv-x=\"384\" \nd=\"M369.941 350.059c7.75977 -7.75977 14.0586 -22.9658 14.0586 -33.9404v-332.118c0 -26.5098 -21.4902 -48 -48 -48h-288c-26.5098 0 -48 21.4902 -48 48v416c0 26.5098 21.4902 48 48 48h204.118c10.9746 0 26.1807 -6.29883 33.9404 -14.0586zM332.118 320\nl-76.1182 76.1182v-76.1182h76.1182zM48 -16h288v288h-104c-13.2549 0 -24 10.7451 -24 24v104h-160v-416zM192 60.0244c0 -10.6914 -12.9258 -16.0459 -20.4854 -8.48535l-35.5146 35.9746h-28c-6.62695 0 -12 5.37305 -12 12v56c0 6.62695 5.37305 12 12 12h28\nl35.5146 36.9473c7.56055 7.56055 20.4854 2.20605 20.4854 -8.48535v-135.951zM233.201 107.154c9.05078 9.29688 9.05957 24.1328 0.000976562 33.4385c-22.1494 22.752 12.2344 56.2461 34.3945 33.4814c27.1982 -27.9404 27.2119 -72.4443 0.000976562 -100.401\nc-21.793 -22.3857 -56.9463 10.3154 -34.3965 33.4814z\" />\n    <glyph glyph-name=\"file-video\" unicode=\"&#xf1c8;\" horiz-adv-x=\"384\" \nd=\"M369.941 350.059c7.75977 -7.75977 14.0586 -22.9658 14.0586 -33.9404v-332.118c0 -26.5098 -21.4902 -48 -48 -48h-288c-26.5098 0 -48 21.4902 -48 48v416c0 26.5098 21.4902 48 48 48h204.118c10.9746 0 26.1807 -6.29883 33.9404 -14.0586zM332.118 320\nl-76.1182 76.1182v-76.1182h76.1182zM48 -16h288v288h-104c-13.2549 0 -24 10.7451 -24 24v104h-160v-416zM276.687 195.303c10.0049 10.0049 27.3135 2.99707 27.3135 -11.3135v-111.976c0 -14.2939 -17.2959 -21.332 -27.3135 -11.3135l-52.6865 52.6738v-37.374\nc0 -11.0459 -8.9541 -20 -20 -20h-104c-11.0459 0 -20 8.9541 -20 20v104c0 11.0459 8.9541 20 20 20h104c11.0459 0 20 -8.9541 20 -20v-37.374z\" />\n    <glyph glyph-name=\"file-code\" unicode=\"&#xf1c9;\" horiz-adv-x=\"384\" \nd=\"M149.9 98.9004c3.5 -3.30078 3.69922 -8.90039 0.399414 -12.4004l-17.3994 -18.5996c-1.60059 -1.80078 -4 -2.80078 -6.40039 -2.80078c-2.2002 0 -4.40039 0.900391 -6 2.40039l-57.7002 54.0996c-3.7002 3.40039 -3.7002 9.30078 0 12.8008l57.7002 54.0996\nc3.40039 3.2998 9 3.2002 12.4004 -0.400391l17.3994 -18.5996l0.200195 -0.200195c3.2002 -3.59961 2.7998 -9.2002 -0.799805 -12.3994l-32.7998 -28.9004l32.7998 -28.9004zM369.9 350.1c9 -9 14.0996 -21.2998 14.0996 -34v-332.1c0 -26.5 -21.5 -48 -48 -48h-288\nc-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48.0996h204.1c12.7002 0 24.9004 -5.09961 33.9004 -14.0996zM256 396.1v-76.0996h76.0996zM336 -16v288h-104c-13.2998 0 -24 10.7002 -24 24v104h-160v-416h288zM209.6 234l24.4004 -7\nc4.7002 -1.2998 7.40039 -6.2002 6 -10.9004l-54.7002 -188.199c-1.2998 -4.60059 -6.2002 -7.40039 -10.8994 -6l-24.4004 7.09961c-4.7002 1.2998 -7.40039 6.2002 -6 10.9004l54.7002 188.1c1.39941 4.7002 6.2002 7.40039 10.8994 6zM234.1 157.1\nc-3.5 3.30078 -3.69922 8.90039 -0.399414 12.4004l17.3994 18.5996c3.30078 3.60059 8.90039 3.7002 12.4004 0.400391l57.7002 -54.0996c3.7002 -3.40039 3.7002 -9.30078 0 -12.8008l-57.7002 -54.0996c-3.5 -3.2998 -9.09961 -3.09961 -12.4004 0.400391\nl-17.3994 18.5996l-0.200195 0.200195c-3.2002 3.59961 -2.7998 9.2002 0.799805 12.3994l32.7998 28.9004l-32.7998 28.9004z\" />\n    <glyph glyph-name=\"life-ring\" unicode=\"&#xf1cd;\" \nd=\"M256 -56c-136.967 0 -248 111.033 -248 248s111.033 248 248 248s248 -111.033 248 -248s-111.033 -248 -248 -248zM152.602 20.7197c63.2178 -38.3184 143.579 -38.3184 206.797 0l-53.4111 53.4111c-31.8467 -13.5215 -68.168 -13.5059 -99.9746 0zM336 192\nc0 44.1123 -35.8877 80 -80 80s-80 -35.8877 -80 -80s35.8877 -80 80 -80s80 35.8877 80 80zM427.28 88.6016c38.3184 63.2178 38.3184 143.579 0 206.797l-53.4111 -53.4111c13.5215 -31.8467 13.5049 -68.168 0 -99.9746zM359.397 363.28\nc-63.2168 38.3184 -143.578 38.3184 -206.796 0l53.4111 -53.4111c31.8457 13.5215 68.167 13.5049 99.9736 0zM84.7197 295.398c-38.3184 -63.2178 -38.3184 -143.579 0 -206.797l53.4111 53.4111c-13.5215 31.8467 -13.5059 68.168 0 99.9746z\" />\n    <glyph glyph-name=\"paper-plane\" unicode=\"&#xf1d8;\" \nd=\"M440 441.5c34.5996 19.9004 77.5996 -8.7998 71.5 -48.9004l-59.4004 -387.199c-2.2998 -14.5 -11.0996 -27.3008 -23.8994 -34.5c-7.2998 -4.10059 -15.4004 -6.2002 -23.6006 -6.2002c-6.19922 0 -12.3994 1.2002 -18.2998 3.59961l-111.899 46.2002l-43.8008 -59.0996\nc-27.3994 -36.9004 -86.5996 -17.8008 -86.5996 28.5996v84.4004l-114.3 47.2998c-36.7998 15.0996 -40.1006 66 -5.7002 85.8994zM192 -16l36.5996 49.5l-36.5996 15.0996v-64.5996zM404.6 12.7002l59.4004 387.3l-416 -240l107.8 -44.5996l211.5 184.3\nc14.2002 12.2998 34.4004 -5.7002 23.7002 -21.2002l-140.2 -202.3z\" />\n    <glyph glyph-name=\"futbol\" unicode=\"&#xf1e3;\" horiz-adv-x=\"496\" \nd=\"M483.8 268.6c42.2998 -130.199 -29 -270.1 -159.2 -312.399c-25.5 -8.2998 -51.2998 -12.2002 -76.6992 -12.2002c-104.5 0 -201.7 66.5996 -235.7 171.4c-42.2998 130.199 29 270.1 159.2 312.399c25.5 8.2998 51.2998 12.2002 76.6992 12.2002\nc104.5 0 201.7 -66.5996 235.7 -171.4zM409.3 74.9004c6.10059 8.39941 12.1006 16.8994 16.7998 26.1992c14.3008 28.1006 21.5 58.5 21.7002 89.2002l-38.8994 36.4004l-71.1006 -22.1006l-24.3994 -75.1992l43.6992 -60.9004zM409.3 310.3\nc-24.5 33.4004 -58.7002 58.4004 -97.8994 71.4004l-47.4004 -26.2002v-73.7998l64.2002 -46.5l70.7002 22zM184.9 381.6c-39.9004 -13.2998 -73.5 -38.5 -97.8008 -71.8994l10.1006 -52.5l70.5996 -22l64.2002 46.5v73.7998zM139 68.5l43.5 61.7002l-24.2998 74.2998\nl-71.1006 22.2002l-39 -36.4004c0.5 -55.7002 23.4004 -95.2002 37.8008 -115.3zM187.2 1.5c64.0996 -20.4004 115.5 -1.7998 121.7 0l22.3994 48.0996l-44.2998 61.7002h-78.5996l-43.6006 -61.7002z\" />\n    <glyph glyph-name=\"newspaper\" unicode=\"&#xf1ea;\" horiz-adv-x=\"576\" \nd=\"M552 384c13.2549 0 24 -10.7451 24 -24v-336c0 -13.2549 -10.7451 -24 -24 -24h-496c-30.9277 0 -56 25.0723 -56 56v272c0 13.2549 10.7451 24 24 24h42.752c6.60547 18.623 24.3896 32 45.248 32h440zM48 56c0 -4.41113 3.58887 -8 8 -8s8 3.58887 8 8v248h-16v-248z\nM528 48v288h-416v-280c0 -2.7168 -0.204102 -5.38574 -0.578125 -8h416.578zM172 168c-6.62695 0 -12 5.37305 -12 12v96c0 6.62695 5.37305 12 12 12h136c6.62695 0 12 -5.37305 12 -12v-96c0 -6.62695 -5.37305 -12 -12 -12h-136zM200 248v-40h80v40h-80zM160 108v24\nc0 6.62695 5.37305 12 12 12h136c6.62695 0 12 -5.37305 12 -12v-24c0 -6.62695 -5.37305 -12 -12 -12h-136c-6.62695 0 -12 5.37305 -12 12zM352 108v24c0 6.62695 5.37305 12 12 12h104c6.62695 0 12 -5.37305 12 -12v-24c0 -6.62695 -5.37305 -12 -12 -12h-104\nc-6.62695 0 -12 5.37305 -12 12zM352 252v24c0 6.62695 5.37305 12 12 12h104c6.62695 0 12 -5.37305 12 -12v-24c0 -6.62695 -5.37305 -12 -12 -12h-104c-6.62695 0 -12 5.37305 -12 12zM352 180v24c0 6.62695 5.37305 12 12 12h104c6.62695 0 12 -5.37305 12 -12v-24\nc0 -6.62695 -5.37305 -12 -12 -12h-104c-6.62695 0 -12 5.37305 -12 12z\" />\n    <glyph glyph-name=\"bell-slash\" unicode=\"&#xf1f6;\" horiz-adv-x=\"640\" \nd=\"M633.99 -23.0195c6.91016 -5.52051 8.01953 -15.5908 2.5 -22.4902l-10 -12.4902c-5.53027 -6.88965 -15.5898 -8.00977 -22.4902 -2.49023l-598 467.51c-6.90039 5.52051 -8.01953 15.5908 -2.49023 22.4902l10 12.4902\nc5.52051 6.90039 15.5898 8.00977 22.4902 2.49023zM163.53 80h182.84l61.3994 -48h-279.659c-19.1201 0 -31.9902 15.5996 -32.1006 32c-0.0498047 7.5498 2.61035 15.2598 8.61035 21.71c18.3701 19.7402 51.5703 49.6904 54.8398 140.42l45.4697 -35.5498\nc-6.91992 -54.7803 -24.6895 -88.5498 -41.3994 -110.58zM320 352c-23.3496 0 -45 -7.17969 -62.9404 -19.4004l-38.1699 29.8408c19.6807 15.7793 43.1104 27.3096 69.1299 32.7197v20.8398c0 17.6699 14.3203 32 31.9805 32s31.9805 -14.3301 31.9805 -32v-20.8398\nc73.46 -15.2598 127.939 -77.46 127.939 -155.16c0 -41.3604 6.03027 -70.7197 14.3398 -92.8496l-59.5293 46.54c-1.63086 13.96 -2.77051 28.8896 -2.79004 45.7295c0 0.200195 0.0595703 0.379883 0.0595703 0.580078c0 61.8604 -50.1396 112 -112 112zM320 -64\nc-35.3203 0 -63.9697 28.6504 -63.9697 64h127.939c0 -35.3496 -28.6494 -64 -63.9697 -64z\" />\n    <glyph glyph-name=\"copyright\" unicode=\"&#xf1f9;\" \nd=\"M256 440c136.967 0 248 -111.033 248 -248s-111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248zM256 -8c110.549 0 200 89.4678 200 200c0 110.549 -89.4678 200 -200 200c-110.549 0 -200 -89.4688 -200 -200c0 -110.549 89.4678 -200 200 -200z\nM363.351 93.0645c-9.61328 -9.71289 -45.5293 -41.3965 -104.064 -41.3965c-82.4297 0 -140.484 61.4248 -140.484 141.567c0 79.1514 60.2754 139.4 139.763 139.4c55.5303 0 88.7373 -26.6201 97.5928 -34.7783c2.13379 -1.96289 3.86523 -5.9082 3.86523 -8.80762\nc0 -1.95508 -0.864258 -4.87402 -1.92969 -6.51465l-18.1543 -28.1133c-3.8418 -5.9502 -11.9668 -7.28223 -17.499 -2.9209c-8.5957 6.77637 -31.8145 22.5381 -61.708 22.5381c-48.3037 0 -77.916 -35.3301 -77.916 -80.082c0 -41.5889 26.8877 -83.6924 78.2764 -83.6924\nc32.6572 0 56.8428 19.0391 65.7266 27.2256c5.26953 4.85645 13.5957 4.03906 17.8193 -1.73828l19.8652 -27.1699c1.28613 -1.74512 2.33008 -4.91992 2.33008 -7.08789c0 -2.72363 -1.56055 -6.5 -3.48242 -8.42969z\" />\n    <glyph glyph-name=\"closed-captioning\" unicode=\"&#xf20a;\" \nd=\"M464 384c26.5 0 48 -21.5 48 -48v-288c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v288c0 26.5 21.5 48 48 48h416zM458 48c3.2998 0 6 2.7002 6 6v276c0 3.2998 -2.7002 6 -6 6h-404c-3.2998 0 -6 -2.7002 -6 -6v-276c0 -3.2998 2.7002 -6 6 -6h404z\nM246.9 133.7c1.69922 -2.40039 1.5 -5.60059 -0.5 -7.7002c-53.6006 -56.7998 -172.801 -32.0996 -172.801 67.9004c0 97.2998 121.7 119.5 172.5 70.0996c2.10059 -2 2.5 -3.2002 1 -5.7002l-17.5 -30.5c-1.89941 -3.09961 -6.19922 -4 -9.09961 -1.7002\nc-40.7998 32 -94.5996 14.9004 -94.5996 -31.1992c0 -48 51 -70.5 92.1992 -32.6006c2.80078 2.5 7.10059 2.10059 9.2002 -0.899414zM437.3 133.7c1.7002 -2.40039 1.5 -5.60059 -0.5 -7.7002c-53.5996 -56.9004 -172.8 -32.0996 -172.8 67.9004\nc0 97.2998 121.7 119.5 172.5 70.0996c2.09961 -2 2.5 -3.2002 1 -5.7002l-17.5 -30.5c-1.90039 -3.09961 -6.2002 -4 -9.09961 -1.7002c-40.8008 32 -94.6006 14.9004 -94.6006 -31.1992c0 -48 51 -70.5 92.2002 -32.6006c2.7998 2.5 7.09961 2.10059 9.2002 -0.899414z\n\" />\n    <glyph glyph-name=\"object-group\" unicode=\"&#xf247;\" \nd=\"M500 320h-12v-256h12c6.62695 0 12 -5.37305 12 -12v-72c0 -6.62695 -5.37305 -12 -12 -12h-72c-6.62695 0 -12 5.37305 -12 12v12h-320v-12c0 -6.62695 -5.37305 -12 -12 -12h-72c-6.62695 0 -12 5.37305 -12 12v72c0 6.62695 5.37305 12 12 12h12v256h-12\nc-6.62695 0 -12 5.37305 -12 12v72c0 6.62695 5.37305 12 12 12h72c6.62695 0 12 -5.37305 12 -12v-12h320v12c0 6.62695 5.37305 12 12 12h72c6.62695 0 12 -5.37305 12 -12v-72c0 -6.62695 -5.37305 -12 -12 -12zM448 384v-32h32v32h-32zM32 384v-32h32v32h-32zM64 0v32\nh-32v-32h32zM480 0v32h-32v-32h32zM440 64v256h-12c-6.62695 0 -12 5.37305 -12 12v12h-320v-12c0 -6.62695 -5.37305 -12 -12 -12h-12v-256h12c6.62695 0 12 -5.37305 12 -12v-12h320v12c0 6.62695 5.37305 12 12 12h12zM404 256c6.62695 0 12 -5.37207 12 -12v-168\nc0 -6.62793 -5.37305 -12 -12 -12h-200c-6.62695 0 -12 5.37207 -12 12v52h-84c-6.62695 0 -12 5.37207 -12 12v168c0 6.62793 5.37305 12 12 12h200c6.62695 0 12 -5.37207 12 -12v-52h84zM136 280v-112h144v112h-144zM376 104v112h-56v-76\nc0 -6.62793 -5.37305 -12 -12 -12h-76v-24h144z\" />\n    <glyph glyph-name=\"object-ungroup\" unicode=\"&#xf248;\" horiz-adv-x=\"576\" \nd=\"M564 224h-12v-160h12c6.62695 0 12 -5.37305 12 -12v-72c0 -6.62695 -5.37305 -12 -12 -12h-72c-6.62695 0 -12 5.37305 -12 12v12h-224v-12c0 -6.62695 -5.37305 -12 -12 -12h-72c-6.62695 0 -12 5.37305 -12 12v72c0 6.62695 5.37305 12 12 12h12v24h-88v-12\nc0 -6.62695 -5.37305 -12 -12 -12h-72c-6.62695 0 -12 5.37305 -12 12v72c0 6.62695 5.37305 12 12 12h12v160h-12c-6.62695 0 -12 5.37305 -12 12v72c0 6.62695 5.37305 12 12 12h72c6.62695 0 12 -5.37305 12 -12v-12h224v12c0 6.62695 5.37305 12 12 12h72\nc6.62695 0 12 -5.37305 12 -12v-72c0 -6.62695 -5.37305 -12 -12 -12h-12v-24h88v12c0 6.62695 5.37305 12 12 12h72c6.62695 0 12 -5.37305 12 -12v-72c0 -6.62695 -5.37305 -12 -12 -12zM352 384v-32h32v32h-32zM352 128v-32h32v32h-32zM64 96v32h-32v-32h32zM64 352v32\nh-32v-32h32zM96 136h224v12c0 6.62695 5.37305 12 12 12h12v160h-12c-6.62695 0 -12 5.37305 -12 12v12h-224v-12c0 -6.62695 -5.37305 -12 -12 -12h-12v-160h12c6.62695 0 12 -5.37305 12 -12v-12zM224 0v32h-32v-32h32zM504 64v160h-12c-6.62695 0 -12 5.37305 -12 12v12\nh-88v-88h12c6.62695 0 12 -5.37305 12 -12v-72c0 -6.62695 -5.37305 -12 -12 -12h-72c-6.62695 0 -12 5.37305 -12 12v12h-88v-24h12c6.62695 0 12 -5.37305 12 -12v-12h224v12c0 6.62695 5.37305 12 12 12h12zM544 0v32h-32v-32h32zM544 256v32h-32v-32h32z\" />\n    <glyph glyph-name=\"sticky-note\" unicode=\"&#xf249;\" horiz-adv-x=\"448\" \nd=\"M448 99.8936c0 -10.9746 -6.29883 -26.1797 -14.0586 -33.9404l-83.8828 -83.8818c-7.75977 -7.76074 -22.9658 -14.0596 -33.9404 -14.0596h-268.118c-26.5098 0 -48 21.4902 -48 48v351.988c0 26.5098 21.4902 48 48 48h352c26.5098 0 48 -21.4902 48 -48v-268.106z\nM320 19.8936l76.1182 76.1182h-76.1182v-76.1182zM400 368h-352v-351.988h224v104c0 13.2549 10.7451 24 24 24h104v223.988z\" />\n    <glyph glyph-name=\"clone\" unicode=\"&#xf24d;\" \nd=\"M464 448c26.5098 0 48 -21.4902 48 -48v-320c0 -26.5098 -21.4902 -48 -48 -48h-48v-48c0 -26.5098 -21.4902 -48 -48 -48h-320c-26.5098 0 -48 21.4902 -48 48v320c0 26.5098 21.4902 48 48 48h48v48c0 26.5098 21.4902 48 48 48h320zM362 -16c3.31152 0 6 2.68848 6 6\nv42h-224c-26.5098 0 -48 21.4902 -48 48v224h-42c-3.31152 0 -6 -2.68848 -6 -6v-308c0 -3.31152 2.68848 -6 6 -6h308zM458 80c3.31152 0 6 2.68848 6 6v308c0 3.31152 -2.68848 6 -6 6h-308c-3.31152 0 -6 -2.68848 -6 -6v-308c0 -3.31152 2.68848 -6 6 -6h308z\" />\n    <glyph glyph-name=\"hourglass\" unicode=\"&#xf254;\" horiz-adv-x=\"384\" \nd=\"M368 400c0 -80.0996 -31.8984 -165.619 -97.1797 -208c64.9912 -42.1934 97.1797 -127.436 97.1797 -208h4c6.62695 0 12 -5.37305 12 -12v-24c0 -6.62695 -5.37305 -12 -12 -12h-360c-6.62695 0 -12 5.37305 -12 12v24c0 6.62695 5.37305 12 12 12h4\nc0 80.0996 31.8994 165.619 97.1797 208c-64.9912 42.1934 -97.1797 127.436 -97.1797 208h-4c-6.62695 0 -12 5.37305 -12 12v24c0 6.62695 5.37305 12 12 12h360c6.62695 0 12 -5.37305 12 -12v-24c0 -6.62695 -5.37305 -12 -12 -12h-4zM64 400\nc0 -101.621 57.3066 -184 128 -184s128 82.3799 128 184h-256zM320 -16c0 101.62 -57.3076 184 -128 184s-128 -82.3799 -128 -184h256z\" />\n    <glyph glyph-name=\"hand-rock\" unicode=\"&#xf255;\" \nd=\"M408.864 368.948c48.8213 20.751 103.136 -15.0723 103.136 -67.9111v-114.443c0 -15.3955 -3.08887 -30.3906 -9.18262 -44.5674l-42.835 -99.6562c-4.99707 -11.625 -3.98242 -18.8574 -3.98242 -42.3701c0 -17.6729 -14.3271 -32 -32 -32h-252\nc-17.6729 0 -32 14.3271 -32 32c0 27.3301 1.1416 29.2012 -3.11035 32.9033l-97.71 85.0811c-24.8994 21.6797 -39.1797 52.8926 -39.1797 85.6338v56.9531c0 47.4277 44.8457 82.0215 91.0459 71.1807c1.96094 55.751 63.5107 87.8262 110.671 60.8057\nc29.1895 31.0713 78.8604 31.4473 108.334 -0.0214844c32.7051 18.6846 76.4121 10.3096 98.8135 -23.5879zM464 186.594v114.445c0 34.29 -52 33.8232 -52 0.676758c0 -8.83594 -7.16309 -16 -16 -16h-7c-8.83691 0 -16 7.16406 -16 16v26.751\nc0 34.457 -52 33.707 -52 0.676758v-27.4287c0 -8.83594 -7.16309 -16 -16 -16h-7c-8.83691 0 -16 7.16406 -16 16v40.4658c0 34.3525 -52 33.8115 -52 0.677734v-41.1436c0 -8.83594 -7.16406 -16 -16 -16h-7c-8.83594 0 -16 7.16406 -16 16v26.751\nc0 34.4023 -52 33.7744 -52 0.676758v-116.571c0 -8.83203 -7.16797 -16 -16 -16c-3.30664 0 -8.01367 1.7627 -10.5068 3.93359l-7 6.09473c-3.03223 2.64062 -5.49316 8.04688 -5.49316 12.0674v0v41.2275c0 34.2148 -52 33.8857 -52 0.677734v-56.9531\nc0 -18.8555 8.27441 -36.874 22.7002 -49.4365l97.71 -85.0801c12.4502 -10.8398 19.5898 -26.4463 19.5898 -42.8164v-10.2861h220v7.07617c0 13.21 2.65332 26.0791 7.88281 38.25l42.835 99.6553c2.91602 6.75391 5.28223 18.207 5.28223 25.5635v0.0488281z\" />\n    <glyph glyph-name=\"hand-paper\" unicode=\"&#xf256;\" horiz-adv-x=\"448\" \nd=\"M372.57 335.359c39.9062 5.63281 75.4297 -25.7393 75.4297 -66.3594v-131.564c-0.00195312 -12.7666 -2.33008 -33.2246 -5.19531 -45.666l-30.1836 -130.958c-3.34668 -14.5234 -16.2783 -24.8125 -31.1816 -24.8125h-222.897\nc-9.10352 0 -20.7793 6.01758 -26.0615 13.4316l-119.97 168.415c-21.2441 29.8203 -14.8047 71.3574 14.5498 93.1533c18.7754 13.9395 42.1309 16.2979 62.083 8.87109v126.13c0 44.0547 41.125 75.5439 82.4053 64.9834c23.8926 48.1963 92.3535 50.2471 117.982 0.74707\nc42.5186 11.1445 83.0391 -21.9346 83.0391 -65.5469v-10.8242zM399.997 137.437l-0.00195312 131.563c0 24.9492 -36.5703 25.5508 -36.5703 -0.691406v-76.3086c0 -8.83691 -7.16309 -16 -16 -16h-6.85645c-8.83691 0 -16 7.16309 -16 16v154.184\nc0 25.501 -36.5703 26.3633 -36.5703 0.691406v-154.875c0 -8.83691 -7.16309 -16 -16 -16h-6.85645c-8.83691 0 -16 7.16309 -16 16v188.309c0 25.501 -36.5703 26.3545 -36.5703 0.691406v-189c0 -8.83691 -7.16309 -16 -16 -16h-6.85645c-8.83691 0 -16 7.16309 -16 16\nv153.309c0 25.501 -36.5713 26.3359 -36.5713 0.691406v-206.494c0 -15.5703 -20.0352 -21.9092 -29.0303 -9.2832l-27.1279 38.0791c-14.3711 20.1709 -43.833 -2.33496 -29.3945 -22.6045l115.196 -161.697h201.92l27.3252 118.551\nc2.63086 11.417 3.96484 23.1553 3.96484 34.8857z\" />\n    <glyph glyph-name=\"hand-scissors\" unicode=\"&#xf257;\" \nd=\"M256 -32c-44.9561 0 -77.3428 43.2627 -64.0244 85.8535c-21.6484 13.71 -34.0156 38.7617 -30.3408 65.0068h-87.6348c-40.8037 0 -74 32.8105 -74 73.1406c0 40.3291 33.1963 73.1396 74 73.1396l94 -9.14062l-78.8496 18.6787\nc-38.3076 14.7422 -57.04 57.4707 -41.9424 95.1123c15.0303 37.4736 57.7549 55.7803 95.6416 41.2012l144.929 -55.7568c24.9551 30.5566 57.8086 43.9932 92.2178 24.7324l97.999 -54.8525c20.9746 -11.7393 34.0049 -33.8457 34.0049 -57.6904v-205.702\nc0 -30.7422 -21.4404 -57.5576 -51.7979 -64.5537l-118.999 -27.4268c-4.97168 -1.14648 -10.0889 -1.72949 -15.2031 -1.72949zM256 16.0127l70 -0.000976562c1.23633 0 3.21777 0.225586 4.42285 0.501953l119.001 27.4277\nc8.58203 1.97754 14.5762 9.29102 14.5762 17.7812v205.701c0 6.4873 -3.62109 12.542 -9.44922 15.8047l-98 54.8545c-8.13965 4.55566 -18.668 2.61914 -24.4873 -4.50781l-21.7646 -26.6475c-2.65039 -3.24512 -8.20215 -5.87891 -12.3926 -5.87891\nc-1.64062 0 -4.21484 0.477539 -5.74609 1.06738l-166.549 64.0908c-32.6543 12.5664 -50.7744 -34.5771 -19.2227 -46.7168l155.357 -59.7852c5.66016 -2.17773 10.2539 -8.86816 10.2539 -14.9326v0v-11.6328c0 -8.83691 -7.16309 -16 -16 -16h-182\nc-34.375 0 -34.4297 -50.2803 0 -50.2803h182c8.83691 0 16 -7.16309 16 -16v-6.85645c0 -8.83691 -7.16309 -16 -16 -16h-28c-25.1221 0 -25.1592 -36.5674 0 -36.5674h28c8.83691 0 16 -7.16211 16 -16v-6.85547c0 -8.83691 -7.16309 -16 -16 -16\nc-25.1201 0 -25.1602 -36.5674 0 -36.5674z\" />\n    <glyph glyph-name=\"hand-lizard\" unicode=\"&#xf258;\" horiz-adv-x=\"576\" \nd=\"M556.686 157.458c12.6357 -19.4863 19.3145 -42.0615 19.3145 -65.2871v-124.171h-224v71.582l-99.751 38.7871c-2.7832 1.08203 -5.70996 1.63086 -8.69727 1.63086h-131.552c-30.8789 0 -56 25.1211 -56 56c0 48.5234 39.4766 88 88 88h113.709l18.333 48h-196.042\nc-44.1123 0 -80 35.8877 -80 80v8c0 30.8779 25.1211 56 56 56h293.917c24.5 0 47.084 -12.2725 60.4111 -32.8291zM528 16v76.1709v0.0478516c0 11.7461 -5.19141 29.2734 -11.5879 39.124l-146.358 225.715c-4.44336 6.85254 -11.9707 10.9424 -20.1367 10.9424h-293.917\nc-4.41113 0 -8 -3.58887 -8 -8v-8c0 -17.6445 14.3555 -32 32 -32h213.471c25.2021 0 42.626 -25.293 33.6299 -48.8457l-24.5518 -64.2812c-7.05371 -18.4658 -25.0732 -30.873 -44.8398 -30.873h-113.709c-22.0557 0 -40 -17.9443 -40 -40c0 -4.41113 3.58887 -8 8 -8\nh131.552h0.0517578c7.44141 0 19.1074 -2.19238 26.041 -4.89355l99.752 -38.7881c18.5898 -7.22852 30.6035 -24.7881 30.6035 -44.7363v-23.582h128z\" />\n    <glyph glyph-name=\"hand-spock\" unicode=\"&#xf259;\" \nd=\"M21.0957 66.21c-26.9688 25.3818 -28.2471 67.7461 -2.87109 94.707c24.1982 25.7139 64.2881 28.2373 91.4824 5.72168l-31.04 136.509c-9.38379 41.2803 21.4336 81.0127 64.0713 81.8438c1.74414 28.9062 22.2656 54.4912 51.8818 61.2949\nc36.001 8.27539 72.0176 -14.2266 80.3037 -50.2959l21.6748 -131.99l16.9014 105.25c9.02344 36.0947 45.4473 57.7021 81.25 48.75c27.3066 -6.82715 45.7061 -29.1357 49.8496 -53.9922c43.2285 0.212891 75.6436 -40.1133 65.5439 -82.5244l-31.7295 -133.41\nc-0.938477 -3.94141 -1.41406 -7.99414 -1.41406 -12.0449v-36.8389v-0.00683594c0 -9.29102 -2.14355 -24.0596 -4.78516 -32.9668l-31.8145 -107.312c-4.02734 -13.585 -16.5107 -22.9043 -30.6807 -22.9043h-237.6c-7.00586 0 -16.8311 3.89648 -21.9316 8.69824z\nM53.1641 128.021c-7.17969 -7.62891 -6.81543 -19.6777 0.813477 -26.8574l124.487 -117.164h219.311l28.4199 95.8613c1.86133 6.27637 2.80469 12.7793 2.80469 19.3281v36.8389c0.000976562 6.48047 1.21973 16.8574 2.71973 23.1621l31.7549 133.407\nc5.83105 24.4893 -31.1445 33.25 -36.9658 8.80273l-26.9229 -113.105c-1.61523 -6.78711 -8.58887 -12.2949 -15.5645 -12.2949h-9.69434c-10.4072 0 -18.043 9.79199 -15.5225 19.8799l38.127 152.512c6.09766 24.376 -30.7607 33.6396 -36.8643 9.21777l-42.3721 -169.49\nc-1.67285 -6.68945 -8.62695 -12.1191 -15.5225 -12.1191h-13.2168v0c-7.0332 0 -14.0195 5.5625 -15.5938 12.417l-45.2207 196.828c-5.64453 24.5684 -42.6572 15.9609 -37.0342 -8.50781l41.6191 -181.153c2.30078 -10.0156 -5.31738 -19.583 -15.5938 -19.583h-8.60352\nh-0.000976562c-7.0498 0 -14.04 5.5791 -15.6025 12.4541l-30.3984 133.757c-5.55273 24.4395 -42.6504 16.1963 -37.0547 -8.4209l34.1299 -150.172c0.263672 -1.16309 0.397461 -2.35352 0.397461 -3.5459v-69.4795c0 -13.9941 -16.7754 -21.2432 -26.9658 -11.6523\nl-53.0117 49.8936c-7.61523 7.16699 -19.6377 6.85938 -26.8564 -0.8125z\" />\n    <glyph glyph-name=\"hand-pointer\" unicode=\"&#xf25a;\" horiz-adv-x=\"448\" \nd=\"M358.182 268.639c43.1934 16.6348 89.8184 -15.7949 89.8184 -62.6387v-84c-0.000976562 -4.25 -0.775391 -11.0615 -1.72754 -15.2041l-27.4297 -118.999c-6.98242 -30.2969 -33.7549 -51.7969 -64.5566 -51.7969h-178.286c-21.2588 0 -41.3682 10.4102 -53.791 27.8457\nl-109.699 154.001c-21.2432 29.8193 -14.8047 71.3574 14.5498 93.1523c18.8115 13.9658 42.1748 16.2822 62.083 8.87207v161.129c0 36.9443 29.7363 67 66.2861 67s66.2861 -30.0557 66.2861 -67v-73.6338c20.4131 2.85742 41.4678 -3.94238 56.5947 -19.6289\nc27.1934 12.8467 60.3799 5.66992 79.8721 -19.0986zM80.9854 168.303c-14.4004 20.2119 -43.8008 -2.38281 -29.3945 -22.6055l109.712 -154c3.43457 -4.81934 8.92871 -7.69727 14.6973 -7.69727h178.285c8.49219 0 15.8037 5.99414 17.7822 14.5762l27.4297 119.001\nc0.333008 1.44629 0.501953 2.93457 0.501953 4.42285v84c0 25.1602 -36.5713 25.1211 -36.5713 0c0 -8.83594 -7.16309 -16 -16 -16h-6.85645c-8.83691 0 -16 7.16406 -16 16v21c0 25.1602 -36.5713 25.1201 -36.5713 0v-21c0 -8.83594 -7.16309 -16 -16 -16h-6.85938\nc-8.83691 0 -16 7.16406 -16 16v35c0 25.1602 -36.5703 25.1201 -36.5703 0v-35c0 -8.83594 -7.16309 -16 -16 -16h-6.85742c-8.83691 0 -16 7.16406 -16 16v175c0 25.1602 -36.5713 25.1201 -36.5713 0v-241.493c0 -15.5703 -20.0352 -21.9092 -29.0303 -9.2832z\nM176.143 48v96c0 8.83691 6.26855 16 14 16h6c7.73242 0 14 -7.16309 14 -16v-96c0 -8.83691 -6.26758 -16 -14 -16h-6c-7.73242 0 -14 7.16309 -14 16zM251.571 48v96c0 8.83691 6.26758 16 14 16h6c7.73145 0 14 -7.16309 14 -16v-96c0 -8.83691 -6.26855 -16 -14 -16h-6\nc-7.73242 0 -14 7.16309 -14 16zM327 48v96c0 8.83691 6.26758 16 14 16h6c7.73242 0 14 -7.16309 14 -16v-96c0 -8.83691 -6.26758 -16 -14 -16h-6c-7.73242 0 -14 7.16309 -14 16z\" />\n    <glyph glyph-name=\"hand-peace\" unicode=\"&#xf25b;\" horiz-adv-x=\"448\" \nd=\"M362.146 256.024c42.5908 13.3184 85.8535 -19.0684 85.8535 -64.0244l-0.0117188 -70.001c-0.000976562 -4.25 -0.775391 -11.0615 -1.72949 -15.2031l-27.4268 -118.999c-6.99707 -30.3564 -33.8105 -51.7969 -64.5547 -51.7969h-205.702\nc-23.8447 0 -45.9502 13.0303 -57.6904 34.0059l-54.8525 97.999c-19.2607 34.4092 -5.82422 67.2617 24.7324 92.2178l-55.7568 144.928c-14.5791 37.8867 3.72754 80.6113 41.2012 95.6416c37.6406 15.0977 80.3691 -3.63477 95.1123 -41.9424l18.6787 -78.8496\nl-9.14062 94c0 40.8037 32.8096 74 73.1396 74s73.1406 -33.1963 73.1406 -74v-87.6348c26.2451 3.6748 51.2959 -8.69238 65.0068 -30.3408zM399.987 122l-0.000976562 70c0 25.1602 -36.5674 25.1201 -36.5674 0c0 -8.83691 -7.16309 -16 -16 -16h-6.85547\nc-8.83789 0 -16 7.16309 -16 16v28c0 25.1592 -36.5674 25.1221 -36.5674 0v-28c0 -8.83691 -7.16309 -16 -16 -16h-6.85645c-8.83691 0 -16 7.16309 -16 16v182c0 34.4297 -50.2803 34.375 -50.2803 0v-182c0 -8.83691 -7.16309 -16 -16 -16h-11.6328v0\nc-6.06445 0 -12.7549 4.59375 -14.9326 10.2539l-59.7842 155.357c-12.1396 31.5518 -59.2842 13.4326 -46.7168 -19.2227l64.0898 -166.549c0.589844 -1.53125 1.06738 -4.10547 1.06738 -5.74609c0 -4.19043 -2.63379 -9.74219 -5.87891 -12.3926l-26.6475 -21.7646\nc-7.12695 -5.81934 -9.06445 -16.3467 -4.50781 -24.4873l54.8535 -98c3.26367 -5.82812 9.31934 -9.44922 15.8057 -9.44922h205.701c8.49121 0 15.8037 5.99414 17.7812 14.5762l27.4277 119.001c0.333008 1.44629 0.501953 2.93457 0.501953 4.42285z\" />\n    <glyph glyph-name=\"registered\" unicode=\"&#xf25d;\" \nd=\"M256 440c136.967 0 248 -111.033 248 -248s-111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248zM256 -8c110.549 0 200 89.4678 200 200c0 110.549 -89.4678 200 -200 200c-110.549 0 -200 -89.4688 -200 -200c0 -110.549 89.4678 -200 200 -200z\nM366.442 73.791c4.40332 -7.99219 -1.37012 -17.791 -10.5107 -17.791h-42.8096h-0.0126953c-3.97559 0 -8.71582 2.84961 -10.5801 6.36035l-47.5156 89.3027h-31.958v-83.6631c0 -6.61719 -5.38281 -12 -12 -12h-38.5674c-6.61719 0 -12 5.38281 -12 12v248.304\nc0 6.61719 5.38281 12 12 12h78.667c71.251 0 101.498 -32.749 101.498 -85.252c0 -31.6123 -15.2148 -59.2969 -39.4824 -73.1758c3.02148 -4.61719 0.225586 0.199219 53.2715 -96.085zM256.933 208.094c20.9131 0 32.4307 11.5186 32.4316 32.4316\nc0 19.5752 -6.5127 31.709 -38.9297 31.709h-27.377v-64.1406h33.875z\" />\n    <glyph glyph-name=\"calendar-plus\" unicode=\"&#xf271;\" horiz-adv-x=\"448\" \nd=\"M336 156v-24c0 -6.59961 -5.40039 -12 -12 -12h-76v-76c0 -6.59961 -5.40039 -12 -12 -12h-24c-6.59961 0 -12 5.40039 -12 12v76h-76c-6.59961 0 -12 5.40039 -12 12v24c0 6.59961 5.40039 12 12 12h76v76c0 6.59961 5.40039 12 12 12h24c6.59961 0 12 -5.40039 12 -12\nv-76h76c6.59961 0 12 -5.40039 12 -12zM448 336v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h48v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h128v52c0 6.59961 5.40039 12 12 12h40\nc6.59961 0 12 -5.40039 12 -12v-52h48c26.5 0 48 -21.5 48 -48zM400 -10v298h-352v-298c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z\" />\n    <glyph glyph-name=\"calendar-minus\" unicode=\"&#xf272;\" horiz-adv-x=\"448\" \nd=\"M124 120c-6.59961 0 -12 5.40039 -12 12v24c0 6.59961 5.40039 12 12 12h200c6.59961 0 12 -5.40039 12 -12v-24c0 -6.59961 -5.40039 -12 -12 -12h-200zM448 336v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h48v52\nc0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h128v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h48c26.5 0 48 -21.5 48 -48zM400 -10v298h-352v-298c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z\" />\n    <glyph glyph-name=\"calendar-times\" unicode=\"&#xf273;\" horiz-adv-x=\"448\" \nd=\"M311.7 73.2998l-17 -17c-4.7002 -4.7002 -12.2998 -4.7002 -17 0l-53.7002 53.7998l-53.7002 -53.6992c-4.7002 -4.7002 -12.2998 -4.7002 -17 0l-17 17c-4.7002 4.69922 -4.7002 12.2998 0 17l53.7002 53.6992l-53.7002 53.7002c-4.7002 4.7002 -4.7002 12.2998 0 17\nl17 17c4.7002 4.7002 12.2998 4.7002 17 0l53.7002 -53.7002l53.7002 53.7002c4.7002 4.7002 12.2998 4.7002 17 0l17 -17c4.7002 -4.7002 4.7002 -12.2998 0 -17l-53.7998 -53.7998l53.6992 -53.7002c4.80078 -4.7002 4.80078 -12.2998 0.100586 -17zM448 336v-352\nc0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h48v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h128v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h48c26.5 0 48 -21.5 48 -48zM400 -10\nv298h-352v-298c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z\" />\n    <glyph glyph-name=\"calendar-check\" unicode=\"&#xf274;\" horiz-adv-x=\"448\" \nd=\"M400 384c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h48v52c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-52h128v52c0 6.62695 5.37305 12 12 12h40\nc6.62695 0 12 -5.37305 12 -12v-52h48zM394 -16c3.31152 0 6 2.68848 6 6v298h-352v-298c0 -3.31152 2.68848 -6 6 -6h340zM341.151 184.65l-142.31 -141.169c-4.70508 -4.66699 -12.3027 -4.6377 -16.9707 0.0673828l-75.0908 75.6992\nc-4.66699 4.70508 -4.6377 12.3027 0.0673828 16.9707l22.7197 22.5361c4.70508 4.66699 12.3027 4.63672 16.9697 -0.0693359l44.1035 -44.4609l111.072 110.182c4.70508 4.66699 12.3027 4.63672 16.9707 -0.0683594l22.5361 -22.7178\nc4.66699 -4.70508 4.63672 -12.3027 -0.0683594 -16.9697z\" />\n    <glyph glyph-name=\"map\" unicode=\"&#xf279;\" horiz-adv-x=\"576\" \nd=\"M560.02 416c8.4502 0 15.9805 -6.83008 15.9805 -16.0195v-346.32c0 -11.9609 -9.01367 -25.2705 -20.1201 -29.71l-151.83 -52.8105c-5.32617 -1.7334 -14.1953 -3.13965 -19.7969 -3.13965c-5.7373 0 -14.8105 1.47363 -20.2529 3.29004l-172 60.71l-170.05 -62.8398\nc-1.99023 -0.790039 -4 -1.16016 -5.95996 -1.16016c-8.45996 0 -15.9902 6.83008 -15.9902 16.0195v346.32c0.00292969 11.959 9.0166 25.2686 20.1201 29.71l151.83 52.8105c6.43945 2.08984 13.1201 3.13965 19.8096 3.13965\nc5.73242 -0.00195312 14.8008 -1.47168 20.2402 -3.28027l172 -60.7197h0.00976562l170.05 62.8398c1.98047 0.790039 4 1.16016 5.95996 1.16016zM224 357.58v-285.97l128 -45.1904v285.97zM48 29.9502l127.36 47.0801l0.639648 0.229492v286.2l-128 -44.5303v-288.979z\nM528 65.0801v288.97l-127.36 -47.0693l-0.639648 -0.240234v-286.19z\" />\n    <glyph glyph-name=\"comment-alt\" unicode=\"&#xf27a;\" \nd=\"M448 448c35.2998 0 64 -28.7002 64 -64v-288c0 -35.2998 -28.7002 -64 -64 -64h-144l-124.9 -93.5996c-2.19922 -1.7002 -4.69922 -2.40039 -7.09961 -2.40039c-6.2002 0 -12 4.90039 -12 12v84h-96c-35.2998 0 -64 28.7002 -64 64v288c0 35.2998 28.7002 64 64 64h384z\nM464 96v288c0 8.7998 -7.2002 16 -16 16h-384c-8.7998 0 -16 -7.2002 -16 -16v-288c0 -8.7998 7.2002 -16 16 -16h144v-60l67.2002 50.4004l12.7998 9.59961h160c8.7998 0 16 7.2002 16 16z\" />\n    <glyph glyph-name=\"pause-circle\" unicode=\"&#xf28b;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM256 -8c110.5 0 200 89.5 200 200s-89.5 200 -200 200s-200 -89.5 -200 -200s89.5 -200 200 -200zM352 272v-160c0 -8.7998 -7.2002 -16 -16 -16h-48\nc-8.7998 0 -16 7.2002 -16 16v160c0 8.7998 7.2002 16 16 16h48c8.7998 0 16 -7.2002 16 -16zM240 272v-160c0 -8.7998 -7.2002 -16 -16 -16h-48c-8.7998 0 -16 7.2002 -16 16v160c0 8.7998 7.2002 16 16 16h48c8.7998 0 16 -7.2002 16 -16z\" />\n    <glyph glyph-name=\"stop-circle\" unicode=\"&#xf28d;\" \nd=\"M504 192c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248s248 -111 248 -248zM56 192c0 -110.5 89.5 -200 200 -200s200 89.5 200 200s-89.5 200 -200 200s-200 -89.5 -200 -200zM352 272v-160c0 -8.7998 -7.2002 -16 -16 -16h-160\nc-8.7998 0 -16 7.2002 -16 16v160c0 8.7998 7.2002 16 16 16h160c8.7998 0 16 -7.2002 16 -16z\" />\n    <glyph glyph-name=\"handshake\" unicode=\"&#xf2b5;\" horiz-adv-x=\"640\" \nd=\"M519.2 320.1h120.8v-255.699h-64c-17.5 0 -31.7998 14.1992 -31.9004 31.6992h-57.8994c-1.7998 -8.19922 -5.2998 -16.0996 -10.9004 -23l-26.2002 -32.2998c-15.7998 -19.3994 -41.8994 -25.5 -64 -16.7998c-13.5 -16.5996 -30.5996 -24 -48.7998 -24\nc-15.0996 0 -28.5996 5.09961 -41.0996 15.9004c-31.7998 -21.9004 -74.7002 -21.3008 -105.601 3.7998l-84.5996 76.3994h-9.09961c-0.100586 -17.5 -14.3008 -31.6992 -31.9004 -31.6992h-64v255.699h118l47.5996 47.6006c10.5 10.3994 24.8008 16.2998 39.6006 16.2998\nh226.8v0c12.7812 0 30.5225 -7.30273 39.5996 -16.2998zM48 96.4004c8.7998 0 16 7.09961 16 16c0 8.7998 -7.2002 16 -16 16s-16 -7.2002 -16 -16c0 -8.80078 7.2002 -16 16 -16zM438 103.3c2.7002 3.40039 2.2002 8.5 -1.2002 11.2998l-108.2 87.8008l-8.19922 -7.5\nc-40.3008 -36.8008 -86.7002 -11.8008 -101.5 4.39941c-26.7002 29 -25 74.4004 4.39941 101.3l38.7002 35.5h-56.7002c-2 -0.799805 -3.7002 -1.5 -5.7002 -2.2998l-61.6992 -61.5996h-41.9004v-128.101h27.7002l97.2998 -88\nc16.0996 -13.0996 41.4004 -10.5 55.2998 6.60059l15.6006 19.2002l36.7998 -31.5c3 -2.40039 12 -4.90039 18 2.39941l30 36.5l23.8994 -19.3994c3.5 -2.80078 8.5 -2.2002 11.3008 1.19922zM544 144.1v128h-44.7002l-61.7002 61.6006\nc-1.39941 1.5 -3.39941 2.2998 -5.5 2.2998l-83.6992 -0.200195c-10 0 -19.6006 -3.7002 -27 -10.5l-65.6006 -60.0996c-9.7002 -8.7998 -10.5 -24 -1.2002 -33.9004c8.90039 -9.39941 25.1006 -8.7002 34.6006 0l55.2002 50.6006c6.5 5.89941 16.5996 5.5 22.5996 -1\nl10.9004 -11.7002c6 -6.5 5.5 -16.6006 -1 -22.6006l-12.5 -11.3994l102.699 -83.4004c2.80078 -2.2998 5.40039 -4.89941 7.7002 -7.7002h69.2002zM592 96.4004c8.7998 0 16 7.09961 16 16c0 8.7998 -7.2002 16 -16 16s-16 -7.2002 -16 -16c0 -8.80078 7.2002 -16 16 -16z\n\" />\n    <glyph glyph-name=\"envelope-open\" unicode=\"&#xf2b6;\" \nd=\"M494.586 283.484c9.6123 -7.94824 17.4141 -24.5205 17.4141 -36.9932v-262.491c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v262.515c0 12.5166 7.84668 29.1279 17.5146 37.0771c4.08008 3.35449 110.688 89.0996 135.15 108.549\nc22.6992 18.1426 60.1299 55.8594 103.335 55.8594c43.4365 0 81.2314 -38.1914 103.335 -55.8594c23.5283 -18.707 130.554 -104.773 135.251 -108.656zM464 -10v253.632v0.00488281c0 1.5791 -0.996094 3.66602 -2.22363 4.6582\nc-15.8633 12.8232 -108.793 87.5752 -132.366 106.316c-17.5527 14.0195 -49.7168 45.3887 -73.4102 45.3887c-23.6016 0 -55.2451 -30.8799 -73.4102 -45.3887c-23.5713 -18.7393 -116.494 -93.4795 -132.364 -106.293\nc-1.40918 -1.13965 -2.22559 -2.85254 -2.22559 -4.66504v-253.653c0 -3.31152 2.68848 -6 6 -6h404c3.31152 0 6 2.68848 6 6zM432.009 177.704c4.24902 -5.15918 3.46484 -12.7949 -1.74512 -16.9814c-28.9746 -23.2822 -59.2734 -47.5967 -70.9287 -56.8623\nc-22.6992 -18.1436 -60.1299 -55.8604 -103.335 -55.8604c-43.4521 0 -81.2871 38.2373 -103.335 55.8604c-11.2793 8.9668 -41.7441 33.4131 -70.9268 56.8643c-5.20996 4.1875 -5.99316 11.8223 -1.74512 16.9814l15.2578 18.5283\nc4.17773 5.07227 11.6572 5.84277 16.7793 1.72559c28.6182 -23.001 58.5654 -47.0352 70.5596 -56.5713c17.5527 -14.0195 49.7168 -45.3887 73.4102 -45.3887c23.6016 0 55.2461 30.8799 73.4102 45.3887c11.9941 9.53516 41.9434 33.5703 70.5625 56.5684\nc5.12207 4.11621 12.6016 3.3457 16.7783 -1.72656z\" />\n    <glyph glyph-name=\"address-book\" unicode=\"&#xf2b9;\" horiz-adv-x=\"448\" \nd=\"M436 288h-20v-64h20c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-20v-64h20c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-20v-48c0 -26.5 -21.5 -48 -48 -48h-320c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48\nh320c26.5 0 48 -21.5 48 -48v-48h20c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12zM368 -16v416h-320v-416h320zM208 192c-35.2998 0 -64 28.7002 -64 64s28.7002 64 64 64s64 -28.7002 64 -64s-28.7002 -64 -64 -64zM118.4 64\nc-12.4004 0 -22.4004 8.59961 -22.4004 19.2002v19.2002c0 31.7998 30.0996 57.5996 67.2002 57.5996c11.3994 0 17.8994 -8 44.7998 -8c26.0996 0 34 8 44.7998 8c37.1006 0 67.2002 -25.7998 67.2002 -57.5996v-19.2002c0 -10.6006 -10 -19.2002 -22.4004 -19.2002\nh-179.199z\" />\n    <glyph glyph-name=\"address-card\" unicode=\"&#xf2bb;\" horiz-adv-x=\"576\" \nd=\"M528 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h480zM528 16v352h-480v-352h480zM208 192c-35.2998 0 -64 28.7002 -64 64s28.7002 64 64 64s64 -28.7002 64 -64s-28.7002 -64 -64 -64z\nM118.4 64c-12.4004 0 -22.4004 8.59961 -22.4004 19.2002v19.2002c0 31.7998 30.0996 57.5996 67.2002 57.5996c11.3994 0 17.8994 -8 44.7998 -8c26.0996 0 34 8 44.7998 8c37.1006 0 67.2002 -25.7998 67.2002 -57.5996v-19.2002\nc0 -10.6006 -10 -19.2002 -22.4004 -19.2002h-179.199zM360 128c-4.40039 0 -8 3.59961 -8 8v16c0 4.40039 3.59961 8 8 8h112c4.40039 0 8 -3.59961 8 -8v-16c0 -4.40039 -3.59961 -8 -8 -8h-112zM360 192c-4.40039 0 -8 3.59961 -8 8v16c0 4.40039 3.59961 8 8 8h112\nc4.40039 0 8 -3.59961 8 -8v-16c0 -4.40039 -3.59961 -8 -8 -8h-112zM360 256c-4.40039 0 -8 3.59961 -8 8v16c0 4.40039 3.59961 8 8 8h112c4.40039 0 8 -3.59961 8 -8v-16c0 -4.40039 -3.59961 -8 -8 -8h-112z\" />\n    <glyph glyph-name=\"user-circle\" unicode=\"&#xf2bd;\" horiz-adv-x=\"496\" \nd=\"M248 344c53 0 96 -43 96 -96s-43 -96 -96 -96s-96 43 -96 96s43 96 96 96zM248 200c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48zM248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8\nc49.7002 0 95.0996 18.2998 130.1 48.4004c-14.8994 23 -40.3994 38.5 -69.5996 39.5c-20.7998 -6.5 -40.5996 -9.60059 -60.5 -9.60059s-39.7002 3.2002 -60.5 9.60059c-29.2002 -0.900391 -54.7002 -16.5 -69.5996 -39.5c35 -30.1006 80.3994 -48.4004 130.1 -48.4004z\nM410.7 76.0996c23.3994 32.7002 37.2998 72.7002 37.2998 115.9c0 110.3 -89.7002 200 -200 200s-200 -89.7002 -200 -200c0 -43.2002 13.9004 -83.2002 37.2998 -115.9c24.5 31.4004 62.2002 51.9004 105.101 51.9004c10.1992 0 26.0996 -9.59961 57.5996 -9.59961\nc31.5996 0 47.4004 9.59961 57.5996 9.59961c43 0 80.7002 -20.5 105.101 -51.9004z\" />\n    <glyph glyph-name=\"id-badge\" unicode=\"&#xf2c1;\" horiz-adv-x=\"384\" \nd=\"M336 448c26.5 0 48 -21.5 48 -48v-416c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48h288zM336 -16v416h-288v-416h288zM144 336c-8.7998 0 -16 7.2002 -16 16s7.2002 16 16 16h96c8.7998 0 16 -7.2002 16 -16s-7.2002 -16 -16 -16\nh-96zM192 160c-35.2998 0 -64 28.7002 -64 64s28.7002 64 64 64s64 -28.7002 64 -64s-28.7002 -64 -64 -64zM102.4 32c-12.4004 0 -22.4004 8.59961 -22.4004 19.2002v19.2002c0 31.7998 30.0996 57.5996 67.2002 57.5996c11.3994 0 17.8994 -8 44.7998 -8\nc26.0996 0 34 8 44.7998 8c37.1006 0 67.2002 -25.7998 67.2002 -57.5996v-19.2002c0 -10.6006 -10 -19.2002 -22.4004 -19.2002h-179.199z\" />\n    <glyph glyph-name=\"id-card\" unicode=\"&#xf2c2;\" horiz-adv-x=\"576\" \nd=\"M528 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h480zM528 16v288h-480v-288h32.7998c-1 4.5 -0.799805 -3.59961 -0.799805 22.4004c0 31.7998 30.0996 57.5996 67.2002 57.5996\nc11.3994 0 17.8994 -8 44.7998 -8c26.0996 0 34 8 44.7998 8c37.1006 0 67.2002 -25.7998 67.2002 -57.5996c0 -26 0.0996094 -17.9004 -0.799805 -22.4004h224.8zM360 96c-4.40039 0 -8 3.59961 -8 8v16c0 4.40039 3.59961 8 8 8h112c4.40039 0 8 -3.59961 8 -8v-16\nc0 -4.40039 -3.59961 -8 -8 -8h-112zM360 160c-4.40039 0 -8 3.59961 -8 8v16c0 4.40039 3.59961 8 8 8h112c4.40039 0 8 -3.59961 8 -8v-16c0 -4.40039 -3.59961 -8 -8 -8h-112zM360 224c-4.40039 0 -8 3.59961 -8 8v16c0 4.40039 3.59961 8 8 8h112\nc4.40039 0 8 -3.59961 8 -8v-16c0 -4.40039 -3.59961 -8 -8 -8h-112zM192 128c-35.2998 0 -64 28.7002 -64 64s28.7002 64 64 64s64 -28.7002 64 -64s-28.7002 -64 -64 -64z\" />\n    <glyph glyph-name=\"window-maximize\" unicode=\"&#xf2d0;\" \nd=\"M464 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h416zM464 22v234h-416v-234c0 -3.2998 2.7002 -6 6 -6h404c3.2998 0 6 2.7002 6 6z\" />\n    <glyph glyph-name=\"window-minimize\" unicode=\"&#xf2d1;\" \nd=\"M480 -32h-448c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32h448c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32z\" />\n    <glyph glyph-name=\"window-restore\" unicode=\"&#xf2d2;\" \nd=\"M464 448c26.5 0 48 -21.5 48 -48v-320c0 -26.5 -21.5 -48 -48 -48h-48v-48c0 -26.5 -21.5 -48 -48 -48h-320c-26.5 0 -48 21.5 -48 48v320c0 26.5 21.5 48 48 48h48v48c0 26.5 21.5 48 48 48h320zM368 -16v208h-320v-208h320zM464 80v320h-320v-48h224\nc26.5 0 48 -21.5 48 -48v-224h48z\" />\n    <glyph glyph-name=\"snowflake\" unicode=\"&#xf2dc;\" horiz-adv-x=\"448\" \nd=\"M440.1 92.7998c7.60059 -4.39941 10.1006 -14.2002 5.5 -21.7002l-7.89941 -13.8994c-4.40039 -7.7002 -14 -10.2998 -21.5 -5.90039l-39.2002 23l9.09961 -34.7002c2.30078 -8.5 -2.69922 -17.2998 -11.0996 -19.5996l-15.2002 -4.09961\nc-8.39941 -2.30078 -17.0996 2.7998 -19.2998 11.2998l-21.2998 81l-71.9004 42.2002v-84.5l58.2998 -59.3008c6.10059 -6.19922 6.10059 -16.3994 0 -22.5996l-11.0996 -11.2998c-6.09961 -6.2002 -16.0996 -6.2002 -22.2002 0l-24.8994 25.3994v-46.0996\nc0 -8.7998 -7 -16 -15.7002 -16h-15.7002c-8.7002 0 -15.7002 7.2002 -15.7002 16v45.9004l-24.8994 -25.4004c-6.10059 -6.2002 -16.1006 -6.2002 -22.2002 0l-11.1006 11.2998c-6.09961 6.2002 -6.09961 16.4004 0 22.6006l58.3008 59.2998v84.5l-71.9004 -42.2002\nl-21.2998 -81c-2.2998 -8.5 -10.9004 -13.5996 -19.2998 -11.2998l-15.2002 4.09961c-8.40039 2.2998 -13.2998 11.1006 -11.1006 19.6006l9.10059 34.6992l-39.2002 -23c-7.5 -4.39941 -17.2002 -1.7998 -21.5 5.90039l-7.90039 13.9004\nc-4.2998 7.69922 -1.69922 17.5 5.80078 21.8994l39.1992 23l-34.0996 9.2998c-8.40039 2.30078 -13.2998 11.1006 -11.0996 19.6006l4.09961 15.5c2.2998 8.5 10.9004 13.5996 19.2998 11.2998l79.7002 -21.7002l71.9004 42.2002l-71.9004 42.2002l-79.7002 -21.7002\nc-8.39941 -2.2998 -17.0996 2.7998 -19.2998 11.2998l-4.09961 15.5c-2.30078 8.5 2.69922 17.2998 11.0996 19.6006l34.0996 9.09961l-39.1992 23c-7.60059 4.5 -10.1006 14.2002 -5.80078 21.9004l7.90039 13.8994c4.40039 7.7002 14 10.2998 21.5 5.90039l39.2002 -23\nl-9.10059 34.7002c-2.2998 8.5 2.7002 17.2998 11.1006 19.5996l15.2002 4.09961c8.39941 2.30078 17.0996 -2.7998 19.2998 -11.2998l21.2998 -81l71.9004 -42.2002v84.5l-58.3008 59.3008c-6.09961 6.19922 -6.09961 16.3994 0 22.5996l11.5 11.2998\nc6.10059 6.2002 16.1006 6.2002 22.2002 0l24.9004 -25.3994v46.0996c0 8.7998 7 16 15.7002 16h15.6992c8.7002 0 15.7002 -7.2002 15.7002 -16v-45.9004l24.9004 25.4004c6.09961 6.2002 16.0996 6.2002 22.2002 0l11.0996 -11.2998\nc6.09961 -6.2002 6.09961 -16.4004 0 -22.6006l-58.2998 -59.2998v-84.5l71.8994 42.2002l21.3008 81c2.2998 8.5 10.8994 13.5996 19.2998 11.2998l15.2002 -4.09961c8.39941 -2.2998 13.2998 -11.1006 11.0996 -19.6006l-9.09961 -34.6992l39.1992 23\nc7.5 4.39941 17.2002 1.7998 21.5 -5.90039l7.90039 -13.9004c4.2998 -7.69922 1.7002 -17.5 -5.7998 -21.8994l-39.2002 -23l34.0996 -9.2998c8.40039 -2.30078 13.3008 -11.1006 11.1006 -19.6006l-4.10059 -15.5c-2.2998 -8.5 -10.8994 -13.5996 -19.2998 -11.2998\nl-79.7002 21.7002l-71.8994 -42.2002l71.7998 -42.2002l79.7002 21.7002c8.39941 2.2998 17.0996 -2.7998 19.2998 -11.2998l4.09961 -15.5c2.30078 -8.5 -2.69922 -17.2998 -11.0996 -19.6006l-34.0996 -9.2998z\" />\n    <glyph glyph-name=\"trash-alt\" unicode=\"&#xf2ed;\" horiz-adv-x=\"448\" \nd=\"M268 32c-6.62402 0 -12 5.37598 -12 12v216c0 6.62402 5.37598 12 12 12h24c6.62402 0 12 -5.37598 12 -12v-216c0 -6.62402 -5.37598 -12 -12 -12h-24zM432 368c8.83203 0 16 -7.16797 16 -16v-16c0 -8.83203 -7.16797 -16 -16 -16h-16v-336\nc0 -26.4961 -21.5039 -48 -48 -48h-288c-26.4961 0 -48 21.5039 -48 48v336h-16c-8.83203 0 -16 7.16797 -16 16v16c0 8.83203 7.16797 16 16 16h82.4102l34.0195 56.7002c7.71875 12.8613 26.1572 23.2998 41.1572 23.2998h0.00292969h100.82h0.0224609\nc15 0 33.4385 -10.4385 41.1572 -23.2998l34 -56.7002h82.4102zM171.84 397.09l-17.4502 -29.0898h139.221l-17.46 29.0898c-0.96582 1.60645 -3.26953 2.91016 -5.14355 2.91016h-0.00683594h-94h-0.0166016c-1.87402 0 -4.17871 -1.30371 -5.14355 -2.91016zM368 -16v336\nh-288v-336h288zM156 32c-6.62402 0 -12 5.37598 -12 12v216c0 6.62402 5.37598 12 12 12h24c6.62402 0 12 -5.37598 12 -12v-216c0 -6.62402 -5.37598 -12 -12 -12h-24z\" />\n    <glyph glyph-name=\"images\" unicode=\"&#xf302;\" horiz-adv-x=\"576\" \nd=\"M480 32v-16c0 -26.5098 -21.4902 -48 -48 -48h-384c-26.5098 0 -48 21.4902 -48 48v256c0 26.5098 21.4902 48 48 48h16v-48h-10c-3.31152 0 -6 -2.68848 -6 -6v-244c0 -3.31152 2.68848 -6 6 -6h372c3.31152 0 6 2.68848 6 6v10h48zM522 368h-372\nc-3.31152 0 -6 -2.68848 -6 -6v-244c0 -3.31152 2.68848 -6 6 -6h372c3.31152 0 6 2.68848 6 6v244c0 3.31152 -2.68848 6 -6 6zM528 416c26.5098 0 48 -21.4902 48 -48v-256c0 -26.5098 -21.4902 -48 -48 -48h-384c-26.5098 0 -48 21.4902 -48 48v256\nc0 26.5098 21.4902 48 48 48h384zM264 304c0 -22.0908 -17.9092 -40 -40 -40s-40 17.9092 -40 40s17.9092 40 40 40s40 -17.9092 40 -40zM192 208l39.5146 39.5146c4.68652 4.68652 12.2842 4.68652 16.9717 0l39.5137 -39.5146l103.515 103.515\nc4.68652 4.68652 12.2842 4.68652 16.9717 0l71.5137 -71.5146v-80h-288v48z\" />\n    <glyph glyph-name=\"clipboard\" unicode=\"&#xf328;\" horiz-adv-x=\"384\" \nd=\"M336 384c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h80c0 35.2998 28.7002 64 64 64s64 -28.7002 64 -64h80zM192 408c-13.2998 0 -24 -10.7002 -24 -24s10.7002 -24 24 -24s24 10.7002 24 24\ns-10.7002 24 -24 24zM336 -10v340c0 3.2998 -2.7002 6 -6 6h-42v-36c0 -6.59961 -5.40039 -12 -12 -12h-168c-6.59961 0 -12 5.40039 -12 12v36h-42c-3.2998 0 -6 -2.7002 -6 -6v-340c0 -3.2998 2.7002 -6 6 -6h276c3.2998 0 6 2.7002 6 6z\" />\n    <glyph glyph-name=\"arrow-alt-circle-down\" unicode=\"&#xf358;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM256 -8c110.5 0 200 89.5 200 200s-89.5 200 -200 200s-200 -89.5 -200 -200s89.5 -200 200 -200zM224 308c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-116\nh67c10.7002 0 16.0996 -12.9004 8.5 -20.5l-99 -99c-4.7002 -4.7002 -12.2998 -4.7002 -17 0l-99 99c-7.5 7.59961 -2.2002 20.5 8.5 20.5h67v116z\" />\n    <glyph glyph-name=\"arrow-alt-circle-left\" unicode=\"&#xf359;\" \nd=\"M8 192c0 137 111 248 248 248s248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248zM456 192c0 110.5 -89.5 200 -200 200s-200 -89.5 -200 -200s89.5 -200 200 -200s200 89.5 200 200zM384 212v-40c0 -6.59961 -5.40039 -12 -12 -12h-116v-67\nc0 -10.7002 -12.9004 -16 -20.5 -8.5l-99 99c-4.7002 4.7002 -4.7002 12.2998 0 17l99 99c7.59961 7.59961 20.5 2.2002 20.5 -8.5v-67h116c6.59961 0 12 -5.40039 12 -12z\" />\n    <glyph glyph-name=\"arrow-alt-circle-right\" unicode=\"&#xf35a;\" \nd=\"M504 192c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248s248 -111 248 -248zM56 192c0 -110.5 89.5 -200 200 -200s200 89.5 200 200s-89.5 200 -200 200s-200 -89.5 -200 -200zM128 172v40c0 6.59961 5.40039 12 12 12h116v67\nc0 10.7002 12.9004 16 20.5 8.5l99 -99c4.7002 -4.7002 4.7002 -12.2998 0 -17l-99 -99c-7.59961 -7.59961 -20.5 -2.2002 -20.5 8.5v67h-116c-6.59961 0 -12 5.40039 -12 12z\" />\n    <glyph glyph-name=\"arrow-alt-circle-up\" unicode=\"&#xf35b;\" \nd=\"M256 -56c-137 0 -248 111 -248 248s111 248 248 248s248 -111 248 -248s-111 -248 -248 -248zM256 392c-110.5 0 -200 -89.5 -200 -200s89.5 -200 200 -200s200 89.5 200 200s-89.5 200 -200 200zM276 64h-40c-6.59961 0 -12 5.40039 -12 12v116h-67\nc-10.7002 0 -16 12.9004 -8.5 20.5l99 99c4.7002 4.7002 12.2998 4.7002 17 0l99 -99c7.59961 -7.59961 2.2002 -20.5 -8.5 -20.5h-67v-116c0 -6.59961 -5.40039 -12 -12 -12z\" />\n    <glyph glyph-name=\"gem\" unicode=\"&#xf3a5;\" horiz-adv-x=\"576\" \nd=\"M464 448c4.09961 0 7.7998 -2 10.0996 -5.40039l99.9004 -147.199c2.90039 -4.40039 2.59961 -10.1006 -0.700195 -14.2002l-276 -340.8c-4.7998 -5.90039 -13.7998 -5.90039 -18.5996 0l-276 340.8c-3.2998 4 -3.60059 9.7998 -0.700195 14.2002l100 147.199\nc2.2002 3.40039 6 5.40039 10 5.40039h352zM444.7 400h-56.7998l51.6992 -96h68.4004zM242.6 400l-51.5996 -96h194l-51.7002 96h-90.7002zM131.3 400l-63.2998 -96h68.4004l51.6992 96h-56.7998zM88.2998 256l119.7 -160l-68.2998 160h-51.4004zM191.2 256l96.7998 -243.3\nl96.7998 243.3h-193.6zM368 96l119.6 160h-51.3994z\" />\n    <glyph glyph-name=\"money-bill-alt\" unicode=\"&#xf3d1;\" horiz-adv-x=\"640\" \nd=\"M320 304c53.0195 0 96 -50.1396 96 -112c0 -61.8701 -43 -112 -96 -112c-53.0195 0 -96 50.1504 -96 112c0 61.8604 42.9805 112 96 112zM360 136v16c0 4.41992 -3.58008 8 -8 8h-16v88c0 4.41992 -3.58008 8 -8 8h-13.5801h-0.000976562\nc-4.01074 0 -9.97266 -1.80566 -13.3086 -4.03027l-15.3301 -10.2197c-1.96777 -1.30957 -3.56445 -4.29004 -3.56445 -6.65332c0 -1.33691 0.601562 -3.32422 1.34375 -4.43652l8.88086 -13.3105c1.30859 -1.9668 4.29004 -3.56445 6.65332 -3.56445\nc1.33691 0 3.32422 0.602539 4.43652 1.34473l0.469727 0.310547v-55.4404h-16c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h64c4.41992 0 8 3.58008 8 8zM608 384c17.6699 0 32 -14.3301 32 -32v-320c0 -17.6699 -14.3301 -32 -32 -32h-576\nc-17.6699 0 -32 14.3301 -32 32v320c0 17.6699 14.3301 32 32 32h576zM592 112v160c-35.3496 0 -64 28.6504 -64 64h-416c0 -35.3496 -28.6504 -64 -64 -64v-160c35.3496 0 64 -28.6504 64 -64h416c0 35.3496 28.6504 64 64 64z\" />\n    <glyph glyph-name=\"window-close\" unicode=\"&#xf410;\" \nd=\"M464 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h416zM464 22v340c0 3.2998 -2.7002 6 -6 6h-404c-3.2998 0 -6 -2.7002 -6 -6v-340c0 -3.2998 2.7002 -6 6 -6h404c3.2998 0 6 2.7002 6 6z\nM356.5 253.4l-61.4004 -61.4004l61.4004 -61.4004c4.59961 -4.59961 4.59961 -12.0996 0 -16.7998l-22.2998 -22.2998c-4.60059 -4.59961 -12.1006 -4.59961 -16.7998 0l-61.4004 61.4004l-61.4004 -61.4004c-4.59961 -4.59961 -12.0996 -4.59961 -16.7998 0\nl-22.2998 22.2998c-4.59961 4.60059 -4.59961 12.1006 0 16.7998l61.4004 61.4004l-61.4004 61.4004c-4.59961 4.59961 -4.59961 12.0996 0 16.7998l22.2998 22.2998c4.60059 4.59961 12.1006 4.59961 16.7998 0l61.4004 -61.4004l61.4004 61.4004\nc4.59961 4.59961 12.0996 4.59961 16.7998 0l22.2998 -22.2998c4.7002 -4.60059 4.7002 -12.1006 0 -16.7998z\" />\n    <glyph glyph-name=\"comment-dots\" unicode=\"&#xf4ad;\" \nd=\"M144 240c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32zM256 240c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32zM368 240c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32\ns-32 14.2998 -32 32s14.2998 32 32 32zM256 416c141.4 0 256 -93.0996 256 -208s-114.6 -208 -256 -208c-32.7998 0 -64 5.2002 -92.9004 14.2998c-29.0996 -20.5996 -77.5996 -46.2998 -139.1 -46.2998c-9.59961 0 -18.2998 5.7002 -22.0996 14.5\nc-3.80078 8.7998 -2 19 4.59961 26c0.5 0.400391 31.5 33.7998 46.4004 73.2002c-33 35.0996 -52.9004 78.7002 -52.9004 126.3c0 114.9 114.6 208 256 208zM256 48c114.7 0 208 71.7998 208 160s-93.2998 160 -208 160s-208 -71.7998 -208 -160\nc0 -42.2002 21.7002 -74.0996 39.7998 -93.4004l20.6006 -21.7998l-10.6006 -28.0996c-5.5 -14.5 -12.5996 -28.1006 -19.8994 -40.2002c23.5996 7.59961 43.1992 18.9004 57.5 29l19.5 13.7998l22.6992 -7.2002c25.3008 -8 51.7002 -12.0996 78.4004 -12.0996z\" />\n    <glyph glyph-name=\"smile-wink\" unicode=\"&#xf4da;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM365.8 138.4c10.2002 -8.5 11.6006 -23.6006 3.10059 -33.8008\nc-30 -36 -74.1006 -56.5996 -120.9 -56.5996s-90.9004 20.5996 -120.9 56.5996c-8.39941 10.2002 -7.09961 25.3008 3.10059 33.8008c10.0996 8.39941 25.2998 7.09961 33.7998 -3.10059c20.7998 -25.0996 51.5 -39.3994 84 -39.3994s63.2002 14.3994 84 39.3994\nc8.5 10.2002 23.5996 11.6006 33.7998 3.10059zM168 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32zM328 268c25.7002 0 55.9004 -16.9004 59.7002 -42.0996c1.7998 -11.1006 -11.2998 -18.2002 -19.7998 -10.8008l-9.5 8.5\nc-14.8008 13.2002 -46.2002 13.2002 -61 0l-9.5 -8.5c-8.30078 -7.39941 -21.5 -0.399414 -19.8008 10.8008c4 25.1992 34.2002 42.0996 59.9004 42.0996z\" />\n    <glyph glyph-name=\"angry\" unicode=\"&#xf556;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM248 136c33.5996 0 65.2002 -14.7998 86.7998 -40.5996\nc8.40039 -10.2002 7.10059 -25.3008 -3.09961 -33.8008c-10.6006 -8.89941 -25.7002 -6.69922 -33.7998 3c-24.8008 29.7002 -75 29.7002 -99.8008 0c-8.5 -10.1992 -23.5996 -11.5 -33.7998 -3s-11.5996 23.6006 -3.09961 33.8008\nc21.5996 25.7998 53.2002 40.5996 86.7998 40.5996zM200 208c0 -17.7002 -14.2998 -32.0996 -32 -32.0996s-32 14.2998 -32 32c0 6.19922 2.2002 11.6992 5.2998 16.5996l-28.2002 8.5c-12.6992 3.7998 -19.8994 17.2002 -16.0996 29.9004\nc3.7998 12.6992 17.0996 20 29.9004 16.0996l80 -24c12.6992 -3.7998 19.8994 -17.2002 16.0996 -29.9004c-3.09961 -10.3994 -12.7002 -17.0996 -23 -17.0996zM399 262.9c3.7998 -12.7002 -3.40039 -26.1006 -16.0996 -29.8008l-28.2002 -8.5\nc3.09961 -4.89941 5.2998 -10.3994 5.2998 -16.5996c0 -17.7002 -14.2998 -32 -32 -32s-32 14.2998 -32 32c-10.2998 0 -19.9004 6.7002 -23 17.0996c-3.7998 12.7002 3.40039 26.1006 16.0996 29.9004l80 24c12.8008 3.7998 26.1006 -3.40039 29.9004 -16.0996z\" />\n    <glyph glyph-name=\"dizzy\" unicode=\"&#xf567;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM214.2 209.9\nc-7.90039 -7.90039 -20.5 -7.90039 -28.4004 -0.200195l-17.7998 17.7998l-17.7998 -17.7998c-7.7998 -7.7998 -20.5 -7.7998 -28.2998 0c-7.80078 7.7998 -7.80078 20.5 0 28.2998l17.8994 17.9004l-17.8994 17.8994c-7.80078 7.7998 -7.80078 20.5 0 28.2998\nc7.7998 7.80078 20.5 7.80078 28.2998 0l17.7998 -17.7998l17.9004 17.9004c7.7998 7.7998 20.5 7.7998 28.2998 0s7.7998 -20.5 0 -28.2998l-17.9004 -17.9004l17.9004 -17.7998c7.7998 -7.7998 7.7998 -20.5 0 -28.2998zM374.2 302.1\nc7.7002 -7.7998 7.7002 -20.3994 0 -28.1992l-17.9004 -17.9004l17.7998 -18c7.80078 -7.7998 7.80078 -20.5 0 -28.2998c-7.7998 -7.7998 -20.5 -7.7998 -28.2998 0l-17.7998 17.7998l-17.7998 -17.7998c-7.7998 -7.7998 -20.5 -7.7998 -28.2998 0\nc-7.80078 7.7998 -7.80078 20.5 0 28.2998l17.8994 17.9004l-17.8994 17.8994c-7.80078 7.7998 -7.80078 20.5 0 28.2998c7.7998 7.80078 20.5 7.80078 28.2998 0l17.7998 -17.7998l17.9004 17.7998c7.7998 7.80078 20.5 7.80078 28.2998 0zM248 176\nc35.2998 0 64 -28.7002 64 -64s-28.7002 -64 -64 -64s-64 28.7002 -64 64s28.7002 64 64 64z\" />\n    <glyph glyph-name=\"flushed\" unicode=\"&#xf579;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM344 304c44.2002 0 80 -35.7998 80 -80s-35.7998 -80 -80 -80\ns-80 35.7998 -80 80s35.7998 80 80 80zM344 176c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48zM344 248c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24s-24 10.7002 -24 24s10.7002 24 24 24zM232 224c0 -44.2002 -35.7998 -80 -80 -80\ns-80 35.7998 -80 80s35.7998 80 80 80s80 -35.7998 80 -80zM152 176c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48zM152 248c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24s-24 10.7002 -24 24s10.7002 24 24 24zM312 104\nc13.2002 0 24 -10.7998 24 -24s-10.7998 -24 -24 -24h-128c-13.2002 0 -24 10.7998 -24 24s10.7998 24 24 24h128z\" />\n    <glyph glyph-name=\"frown-open\" unicode=\"&#xf57a;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM200 240c0 -17.7002 -14.2998 -32 -32 -32s-32 14.2998 -32 32\ns14.2998 32 32 32s32 -14.2998 32 -32zM328 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32zM248 160c35.5996 0 88.7998 -21.2998 95.7998 -61.2002c2 -11.7998 -9.09961 -21.5996 -20.5 -18.0996\nc-31.2002 9.59961 -59.3994 15.2998 -75.2998 15.2998s-44.0996 -5.7002 -75.2998 -15.2998c-11.5 -3.40039 -22.5 6.2998 -20.5 18.0996c7 39.9004 60.2002 61.2002 95.7998 61.2002z\" />\n    <glyph glyph-name=\"grimace\" unicode=\"&#xf57f;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM168 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32\ns32 -14.2998 32 -32s-14.2998 -32 -32 -32zM328 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32zM344 192c26.5 0 48 -21.5 48 -48v-32c0 -26.5 -21.5 -48 -48 -48h-192c-26.5 0 -48 21.5 -48 48v32c0 26.5 21.5 48 48 48\nh192zM176 96v24h-40v-8c0 -8.7998 7.2002 -16 16 -16h24zM176 136v24h-24c-8.7998 0 -16 -7.2002 -16 -16v-8h40zM240 96v24h-48v-24h48zM240 136v24h-48v-24h48zM304 96v24h-48v-24h48zM304 136v24h-48v-24h48zM360 112v8h-40v-24h24c8.7998 0 16 7.2002 16 16zM360 136v8\nc0 8.7998 -7.2002 16 -16 16h-24v-24h40z\" />\n    <glyph glyph-name=\"grin\" unicode=\"&#xf580;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM353.6 143.4c10 3.09961 19.3008 -5.5 17.7002 -15.3008\nc-8 -47.0996 -71.2998 -80 -123.3 -80s-115.4 32.9004 -123.3 80c-1.7002 9.90039 7.7998 18.4004 17.7002 15.3008c26 -8.30078 64.3994 -13.1006 105.6 -13.1006s79.7002 4.7998 105.6 13.1006zM168 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32\ns32 -14.2998 32 -32s-14.2998 -32 -32 -32zM328 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32z\" />\n    <glyph glyph-name=\"grin-alt\" unicode=\"&#xf581;\" horiz-adv-x=\"496\" \nd=\"M200.3 200c-7.5 -11.4004 -24.5996 -12 -32.7002 0c-12.3994 18.7002 -15.1992 37.2998 -15.6992 56c0.599609 18.7002 3.2998 37.2998 15.6992 56c7.60059 11.4004 24.7002 12 32.7002 0c12.4004 -18.7002 15.2002 -37.2998 15.7002 -56\nc-0.599609 -18.7002 -3.2998 -37.2998 -15.7002 -56zM328.3 200c-7.5 -11.4004 -24.5996 -12 -32.7002 0c-12.3994 18.7002 -15.1992 37.2998 -15.6992 56c0.599609 18.7002 3.2998 37.2998 15.6992 56c7.60059 11.4004 24.7002 12 32.7002 0\nc12.4004 -18.7002 15.2002 -37.2998 15.7002 -56c-0.599609 -18.7002 -3.2998 -37.2998 -15.7002 -56zM248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200\ns-200 -89.7002 -200 -200s89.7002 -200 200 -200zM353.6 143.4c10 3.09961 19.3008 -5.5 17.7002 -15.3008c-8 -47.0996 -71.2998 -80 -123.3 -80s-115.4 32.8008 -123.3 80c-1.7002 10 7.7998 18.4004 17.7002 15.3008c26 -8.30078 64.3994 -13.1006 105.6 -13.1006\ns79.7002 4.7998 105.6 13.1006z\" />\n    <glyph glyph-name=\"grin-beam\" unicode=\"&#xf582;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM353.6 143.4c10 3.09961 19.3008 -5.5 17.7002 -15.3008\nc-8 -47.0996 -71.2998 -80 -123.3 -80s-115.4 32.9004 -123.3 80c-1.7002 10 7.89941 18.4004 17.7002 15.3008c26 -8.30078 64.3994 -13.1006 105.6 -13.1006s79.7002 4.7998 105.6 13.1006zM117.7 216.3c-3.60059 1.10059 -6 4.60059 -5.7002 8.2998\nc3.2998 42.1006 32.2002 71.4004 56 71.4004s52.7002 -29.2998 56 -71.4004c0.299805 -3.7998 -2.09961 -7.19922 -5.7002 -8.2998c-3.09961 -1 -7.2002 0 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996s-23.7998 -7.89941 -31.5 -21.5996\nl-9.5 -17c-1.90039 -3.2002 -5.7998 -4.7998 -9.2998 -3.7002zM277.7 216.3c-3.60059 1.10059 -6 4.60059 -5.7002 8.2998c3.2998 42.1006 32.2002 71.4004 56 71.4004s52.7002 -29.2998 56 -71.4004c0.299805 -3.7998 -2.09961 -7.19922 -5.7002 -8.2998\nc-3.09961 -1 -7.2002 0 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996s-23.7998 -7.89941 -31.5 -21.5996l-9.5 -17c-1.90039 -3.2002 -5.7998 -4.7998 -9.2998 -3.7002z\" />\n    <glyph glyph-name=\"grin-beam-sweat\" unicode=\"&#xf583;\" horiz-adv-x=\"496\" \nd=\"M440 288c-29.5 0 -53.2998 26.2998 -53.2998 58.7002c0 25 31.7002 75.5 46.2002 97.2998c3.5 5.2998 10.5996 5.2998 14.1992 0c14.5 -21.7998 46.2002 -72.2998 46.2002 -97.2998c0 -32.4004 -23.7998 -58.7002 -53.2998 -58.7002zM248 48\nc-51.9004 0 -115.3 32.9004 -123.3 80c-1.7002 10 7.89941 18.4004 17.7002 15.2998c26 -8.2998 64.3994 -13.0996 105.6 -13.0996s79.7002 4.7998 105.6 13.0996c10 3.2002 19.4004 -5.39941 17.7002 -15.2998c-8 -47.0996 -71.3994 -80 -123.3 -80zM378.3 216.3\nc-3.09961 -0.899414 -7.2002 0.100586 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996s-23.7998 -7.89941 -31.5 -21.5996l-9.5 -17c-1.90039 -3.2002 -5.7998 -4.7998 -9.2998 -3.7002c-3.60059 1.10059 -6 4.60059 -5.7002 8.2998\nc3.2998 42.1006 32.2002 71.4004 56 71.4004s52.7002 -29.2998 56 -71.4004c0.299805 -3.7998 -2.09961 -7.19922 -5.7002 -8.2998zM483.6 269.2c8 -24.2998 12.4004 -50.2002 12.4004 -77.2002c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248\nc45.7002 0 88.4004 -12.5996 125.2 -34.2002c-10.9004 -21.5996 -15.5 -36.2002 -17.2002 -45.7002c-31.2002 20.1006 -68.2002 31.9004 -108 31.9004c-110.3 0 -200 -89.7002 -200 -200s89.7002 -200 200 -200s200 89.7002 200 200\nc0 22.5 -3.90039 44.0996 -10.7998 64.2998c0.399414 0 21.7998 -2.7998 46.3994 12.9004zM168 258.6c-12.2998 0 -23.7998 -7.7998 -31.5 -21.5996l-9.5 -17c-1.90039 -3.2002 -5.7998 -4.7998 -9.2998 -3.7002c-3.60059 1.10059 -6 4.60059 -5.7002 8.2998\nc3.2998 42.1006 32.2002 71.4004 56 71.4004s52.7002 -29.2998 56 -71.4004c0.299805 -3.7998 -2.09961 -7.19922 -5.7002 -8.2998c-3.09961 -1 -7.2002 0 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996z\" />\n    <glyph glyph-name=\"grin-hearts\" unicode=\"&#xf584;\" horiz-adv-x=\"496\" \nd=\"M353.6 143.4c10 3.09961 19.3008 -5.5 17.7002 -15.3008c-8 -47.0996 -71.2998 -80 -123.3 -80s-115.4 32.8008 -123.3 80c-1.7002 10 7.89941 18.4004 17.7002 15.3008c26 -8.30078 64.3994 -13.1006 105.6 -13.1006s79.7002 4.7998 105.6 13.1006zM200.8 192.3\nl-70.2002 18.1006c-20.3994 5.2998 -31.8994 27 -24.1992 47.1992c6.69922 17.7002 26.6992 26.7002 44.8994 22l7.10059 -1.89941l2 7.09961c5.09961 18.1006 22.8994 30.9004 41.5 27.9004c21.3994 -3.40039 34.3994 -24.2002 28.7998 -44.5l-19.4004 -69.9004\nc-1.2998 -4.5 -6 -7.2002 -10.5 -6zM389.6 257.6c7.7002 -20.1992 -3.7998 -41.7998 -24.1992 -47.0996l-70.2002 -18.2002c-4.60059 -1.2002 -9.2998 1.5 -10.5 6l-19.4004 69.9004c-5.59961 20.2998 7.40039 41.0996 28.7998 44.5c18.7002 3 36.5 -9.7998 41.5 -27.9004\nl2 -7.09961l7.10059 1.89941c18.2002 4.7002 38.2002 -4.39941 44.8994 -22zM248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200\ns89.7002 -200 200 -200z\" />\n    <glyph glyph-name=\"grin-squint\" unicode=\"&#xf585;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM353.6 143.4c10 3.09961 19.3008 -5.5 17.7002 -15.3008\nc-8 -47.0996 -71.2998 -80 -123.3 -80s-115.4 32.9004 -123.3 80c-1.7002 9.90039 7.7998 18.4004 17.7002 15.3008c26 -8.30078 64.3994 -13.1006 105.6 -13.1006s79.7002 4.7998 105.6 13.1006zM118.9 184.2c-3.80078 4.39941 -3.90039 11 -0.100586 15.5l33.6006 40.2998\nl-33.6006 40.2998c-3.7002 4.5 -3.7002 11 0.100586 15.5c3.89941 4.40039 10.1992 5.5 15.2998 2.5l80 -48c3.59961 -2.2002 5.7998 -6.09961 5.7998 -10.2998s-2.2002 -8.09961 -5.7998 -10.2998l-80 -48c-5.40039 -3.2002 -11.7002 -1.7002 -15.2998 2.5zM361.8 181.7\nl-80 48c-3.59961 2.2002 -5.7998 6.09961 -5.7998 10.2998s2.2002 8.09961 5.7998 10.2998l80 48c5.10059 2.90039 11.5 1.90039 15.2998 -2.5c3.80078 -4.5 3.90039 -11 0.100586 -15.5l-33.6006 -40.2998l33.6006 -40.2998c3.7002 -4.5 3.7002 -11 -0.100586 -15.5\nc-3.59961 -4.2002 -9.89941 -5.7002 -15.2998 -2.5z\" />\n    <glyph glyph-name=\"grin-squint-tears\" unicode=\"&#xf586;\" \nd=\"M117.1 63.9004c6.30078 0.899414 11.7002 -4.5 10.9004 -10.9004c-3.7002 -25.7998 -13.7002 -84 -30.5996 -100.9c-22 -21.8994 -57.9004 -21.5 -80.3008 0.900391c-22.3994 22.4004 -22.7998 58.4004 -0.899414 80.2998\nc16.8994 16.9004 75.0996 26.9004 100.899 30.6006zM75.9004 105.6c-19.6006 -3.89941 -35.1006 -8.09961 -47.3008 -12.1992c-39.2998 90.5996 -22.0996 199.899 52 274c48.5 48.3994 111.9 72.5996 175.4 72.5996c38.9004 0 77.7998 -9.2002 113.2 -27.4004\nc-4 -12.1992 -8.2002 -28 -12 -48.2998c-30.4004 17.9004 -65 27.7002 -101.2 27.7002c-53.4004 0 -103.6 -20.7998 -141.4 -58.5996c-61.5996 -61.5 -74.2998 -153.4 -38.6992 -227.801zM428.2 293.2c20.2998 3.89941 36.2002 8 48.5 12\nc47.8994 -93.2002 32.8994 -210.5 -45.2002 -288.601c-48.5 -48.3994 -111.9 -72.5996 -175.4 -72.5996c-33.6992 0 -67.2998 7 -98.6992 20.5996c4.19922 12.2002 8.2998 27.7002 12.1992 47.2002c26.6006 -12.7998 55.9004 -19.7998 86.4004 -19.7998\nc53.4004 0 103.6 20.7998 141.4 58.5996c65.6992 65.7002 75.7998 166 30.7998 242.601zM394.9 320.1c-6.30078 -0.899414 -11.7002 4.5 -10.9004 10.9004c3.7002 25.7998 13.7002 84 30.5996 100.9c22 21.8994 57.9004 21.5 80.3008 -0.900391\nc22.3994 -22.4004 22.7998 -58.4004 0.899414 -80.2998c-16.8994 -16.9004 -75.0996 -26.9004 -100.899 -30.6006zM207.9 211.8c3 -3 4.19922 -7.2998 3.19922 -11.5l-22.5996 -90.5c-1.40039 -5.39941 -6.2002 -9.09961 -11.7002 -9.09961h-0.899414\nc-5.80078 0.5 -10.5 5.09961 -11 10.8994l-4.80078 52.3008l-52.2998 4.7998c-5.7998 0.5 -10.3994 5.2002 -10.8994 11c-0.400391 5.89941 3.39941 11.2002 9.09961 12.5996l90.5 22.7002c4.2002 1 8.40039 -0.200195 11.4004 -3.2002zM247.6 236.9\nc-0.0996094 0 -6.39941 -1.80078 -11.3994 3.19922c-3 3 -4.2002 7.30078 -3.2002 11.4004l22.5996 90.5c1.40039 5.7002 7 9.2002 12.6006 9.09961c5.7998 -0.5 10.5 -5.09961 11 -10.8994l4.7998 -52.2998l52.2998 -4.80078c5.7998 -0.5 10.4004 -5.19922 10.9004 -11\nc0.399414 -5.89941 -3.40039 -11.1992 -9.10059 -12.5996zM299.6 148.4c29.1006 29.0996 53 59.5996 65.3008 83.7998c4.89941 9.2998 17.5996 9.89941 23.3994 1.7002c27.7002 -38.9004 6.10059 -106.9 -30.5996 -143.7s-104.8 -58.2998 -143.7 -30.6006\nc-8.2998 5.90039 -7.5 18.6006 1.7002 23.4004c24.2002 12.5 54.7998 36.2998 83.8994 65.4004z\" />\n    <glyph glyph-name=\"grin-stars\" unicode=\"&#xf587;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM353.6 143.4c10 3.09961 19.3008 -5.5 17.7002 -15.3008\nc-8 -47.0996 -71.2998 -80 -123.3 -80s-115.4 32.8008 -123.3 80c-1.7002 10 7.89941 18.4004 17.7002 15.3008c26 -8.30078 64.3994 -13.1006 105.6 -13.1006s79.7002 4.7998 105.6 13.1006zM125.7 200.9l6.09961 34.8994l-25.3994 24.6006\nc-4.60059 4.59961 -1.90039 12.2998 4.2998 13.1992l34.8994 5l15.5 31.6006c2.90039 5.7998 11 5.7998 13.9004 0l15.5 -31.6006l34.9004 -5c6.19922 -1 8.7998 -8.69922 4.2998 -13.1992l-25.4004 -24.6006l6 -34.8994c1 -6.2002 -5.39941 -11 -11 -7.90039\nl-31.2998 16.2998l-31.2998 -16.2998c-5.60059 -3.09961 -12 1.7002 -11 7.90039zM385.4 273.6c6.19922 -1 8.89941 -8.59961 4.39941 -13.1992l-25.3994 -24.6006l6 -34.8994c1 -6.2002 -5.40039 -11 -11 -7.90039l-31.3008 16.2998l-31.2998 -16.2998\nc-5.59961 -3.09961 -12 1.7002 -11 7.90039l6 34.8994l-25.3994 24.6006c-4.60059 4.59961 -1.90039 12.2998 4.2998 13.1992l34.8994 5l15.5 31.6006c2.90039 5.7998 11 5.7998 13.9004 0l15.5 -31.6006z\" />\n    <glyph glyph-name=\"grin-tears\" unicode=\"&#xf588;\" horiz-adv-x=\"640\" \nd=\"M117.1 191.9c6.30078 0.899414 11.7002 -4.5 10.9004 -10.9004c-3.7002 -25.7998 -13.7002 -84 -30.5996 -100.9c-22 -21.8994 -57.9004 -21.5 -80.3008 0.900391c-22.3994 22.4004 -22.7998 58.4004 -0.899414 80.2998c16.8994 16.9004 75.0996 26.9004 100.899 30.6006\nzM623.8 161.3c21.9004 -21.8994 21.5 -57.8994 -0.799805 -80.2002c-22.4004 -22.3994 -58.4004 -22.7998 -80.2998 -0.899414c-16.9004 16.8994 -26.9004 75.0996 -30.6006 100.899c-0.899414 6.30078 4.5 11.7002 10.8008 10.8008\nc25.7998 -3.7002 84 -13.7002 100.899 -30.6006zM497.2 99.5996c12.3994 -37.2998 25.0996 -43.7998 28.2998 -46.5c-44.5996 -65.7998 -120 -109.1 -205.5 -109.1s-160.9 43.2998 -205.5 109.1c3.09961 2.60059 15.7998 9.10059 28.2998 46.5\nc33.4004 -63.8994 100.3 -107.6 177.2 -107.6s143.8 43.7002 177.2 107.6zM122.7 223.5c-2.40039 0.299805 -5 2.5 -49.5 -6.90039c12.3994 125.4 118.1 223.4 246.8 223.4s234.4 -98 246.8 -223.5c-44.2998 9.40039 -47.3994 7.2002 -49.5 7\nc-15.2002 95.2998 -97.7998 168.5 -197.3 168.5s-182.1 -73.2002 -197.3 -168.5zM320 48c-51.9004 0 -115.3 32.9004 -123.3 80c-1.7002 10 7.89941 18.4004 17.7002 15.2998c26 -8.2998 64.3994 -13.0996 105.6 -13.0996s79.7002 4.7998 105.6 13.0996\nc10 3.2002 19.4004 -5.39941 17.7002 -15.2998c-8 -47.0996 -71.3994 -80 -123.3 -80zM450.3 216.3c-3.09961 -0.899414 -7.2002 0.100586 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996s-23.7998 -7.89941 -31.5 -21.5996l-9.5 -17\nc-1.90039 -3.2002 -5.7998 -4.7998 -9.2998 -3.7002c-3.60059 1.10059 -6 4.60059 -5.7002 8.2998c3.2998 42.1006 32.2002 71.4004 56 71.4004s52.7002 -29.2998 56 -71.4004c0.299805 -3.7998 -2.09961 -7.19922 -5.7002 -8.2998zM240 258.6\nc-12.2998 0 -23.7998 -7.7998 -31.5 -21.5996l-9.5 -17c-1.90039 -3.2002 -5.7998 -4.7998 -9.2998 -3.7002c-3.60059 1.10059 -6 4.60059 -5.7002 8.2998c3.2998 42.1006 32.2002 71.4004 56 71.4004s52.7002 -29.2998 56 -71.4004\nc0.299805 -3.7998 -2.09961 -7.19922 -5.7002 -8.2998c-3.09961 -1 -7.2002 0 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996z\" />\n    <glyph glyph-name=\"grin-tongue\" unicode=\"&#xf589;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM312 40h0.0996094v43.7998l-17.6992 8.7998c-15.1006 7.60059 -31.5 -1.69922 -34.9004 -16.5l-2.7998 -12.0996c-2.10059 -9.2002 -15.2002 -9.2002 -17.2998 0\nl-2.80078 12.0996c-3.39941 14.8008 -19.8994 24 -34.8994 16.5l-17.7002 -8.7998v-42.7998c0 -35.2002 28 -64.5 63.0996 -65c35.8008 -0.5 64.9004 28.4004 64.9004 64zM340.2 14.7002c64 33.3994 107.8 100.3 107.8 177.3c0 110.3 -89.7002 200 -200 200\ns-200 -89.7002 -200 -200c0 -77 43.7998 -143.9 107.8 -177.3c-2.2002 8.09961 -3.7998 16.5 -3.7998 25.2998v43.5c-14.2002 12.4004 -24.4004 27.5 -27.2998 44.5c-1.7002 10 7.7998 18.4004 17.7002 15.2998c26 -8.2998 64.3994 -13.0996 105.6 -13.0996\ns79.7002 4.7998 105.6 13.0996c10 3.2002 19.4004 -5.39941 17.7002 -15.2998c-2.89941 -17 -13.0996 -32.0996 -27.2998 -44.5v-43.5c0 -8.7998 -1.59961 -17.2002 -3.7998 -25.2998zM168 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32\ns14.2998 32 32 32zM328 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32z\" />\n    <glyph glyph-name=\"grin-tongue-squint\" unicode=\"&#xf58a;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM312 40h0.0996094v43.7998l-17.6992 8.7998c-15.1006 7.60059 -31.5 -1.69922 -34.9004 -16.5l-2.7998 -12.0996c-2.10059 -9.2002 -15.2002 -9.2002 -17.2998 0\nl-2.80078 12.0996c-3.39941 14.8008 -19.8994 24 -34.8994 16.5l-17.7002 -8.7998v-42.7998c0 -35.2002 28 -64.5 63.0996 -65c35.8008 -0.5 64.9004 28.4004 64.9004 64zM340.2 14.7002c64 33.3994 107.8 100.3 107.8 177.3c0 110.3 -89.7002 200 -200 200\ns-200 -89.7002 -200 -200c0 -77 43.7998 -143.9 107.8 -177.3c-2.2002 8.09961 -3.7998 16.5 -3.7998 25.2998v43.5c-14.2002 12.4004 -24.4004 27.5 -27.2998 44.5c-1.7002 10 7.7998 18.4004 17.7002 15.2998c26 -8.2998 64.3994 -13.0996 105.6 -13.0996\ns79.7002 4.7998 105.6 13.0996c10 3.2002 19.4004 -5.39941 17.7002 -15.2998c-2.89941 -17 -13.0996 -32.0996 -27.2998 -44.5v-43.5c0 -8.7998 -1.59961 -17.2002 -3.7998 -25.2998zM377.1 295.8c3.80078 -4.39941 3.90039 -11 0.100586 -15.5l-33.6006 -40.2998\nl33.6006 -40.2998c3.7002 -4.5 3.7002 -11 -0.100586 -15.5c-3.59961 -4.2002 -9.89941 -5.7002 -15.2998 -2.5l-80 48c-3.59961 2.2002 -5.7998 6.09961 -5.7998 10.2998s2.2002 8.09961 5.7998 10.2998l80 48c5 3 11.5 1.90039 15.2998 -2.5zM214.2 250.3\nc3.59961 -2.2002 5.7998 -6.09961 5.7998 -10.2998s-2.2002 -8.09961 -5.7998 -10.2998l-80 -48c-5.40039 -3.2002 -11.7002 -1.7002 -15.2998 2.5c-3.80078 4.5 -3.90039 11 -0.100586 15.5l33.6006 40.2998l-33.6006 40.2998c-3.7002 4.5 -3.7002 11 0.100586 15.5\nc3.89941 4.5 10.2998 5.5 15.2998 2.5z\" />\n    <glyph glyph-name=\"grin-tongue-wink\" unicode=\"&#xf58b;\" horiz-adv-x=\"496\" \nd=\"M152 268c25.7002 0 55.9004 -16.9004 59.7998 -42.0996c0.799805 -5 -1.7002 -10 -6.09961 -12.4004c-5.7002 -3.09961 -11.2002 -0.599609 -13.7002 1.59961l-9.5 8.5c-14.7998 13.2002 -46.2002 13.2002 -61 0l-9.5 -8.5\nc-3.7998 -3.39941 -9.2998 -4 -13.7002 -1.59961c-4.39941 2.40039 -6.89941 7.40039 -6.09961 12.4004c3.89941 25.1992 34.0996 42.0996 59.7998 42.0996zM328 320c44.2002 0 80 -35.7998 80 -80s-35.7998 -80 -80 -80s-80 35.7998 -80 80s35.7998 80 80 80zM328 192\nc26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48zM328 264c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24s-24 10.7002 -24 24s10.7002 24 24 24zM248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248z\nM312 40h0.0996094v43.7998l-17.6992 8.7998c-15.1006 7.60059 -31.5 -1.69922 -34.9004 -16.5l-2.7998 -12.0996c-2.10059 -9.2002 -15.2002 -9.2002 -17.2998 0l-2.80078 12.0996c-3.39941 14.8008 -19.8994 24 -34.8994 16.5l-17.7002 -8.7998v-42.7998\nc0 -35.2002 28 -64.5 63.0996 -65c35.8008 -0.5 64.9004 28.4004 64.9004 64zM340.2 14.7002c64 33.3994 107.8 100.3 107.8 177.3c0 110.3 -89.7002 200 -200 200s-200 -89.7002 -200 -200c0 -77 43.7998 -143.9 107.8 -177.3\nc-2.2002 8.09961 -3.7998 16.5 -3.7998 25.2998v43.5c-14.2002 12.4004 -24.4004 27.5 -27.2998 44.5c-1.7002 10 7.7998 18.4004 17.7002 15.2998c26 -8.2998 64.3994 -13.0996 105.6 -13.0996s79.7002 4.7998 105.6 13.0996c10 3.2002 19.4004 -5.39941 17.7002 -15.2998\nc-2.89941 -17 -13.0996 -32.0996 -27.2998 -44.5v-43.5c0 -8.7998 -1.59961 -17.2002 -3.7998 -25.2998z\" />\n    <glyph glyph-name=\"grin-wink\" unicode=\"&#xf58c;\" horiz-adv-x=\"496\" \nd=\"M328 268c25.6904 0 55.8799 -16.9199 59.8701 -42.1201c1.72949 -11.0898 -11.3506 -18.2695 -19.8301 -10.8398l-9.5498 8.47949c-14.8105 13.1904 -46.1602 13.1904 -60.9707 0l-9.5498 -8.47949c-8.33008 -7.40039 -21.5801 -0.379883 -19.8301 10.8398\nc3.98047 25.2002 34.1699 42.1201 59.8604 42.1201zM168 208c-17.6699 0 -32 14.3301 -32 32s14.3301 32 32 32s32 -14.3301 32 -32s-14.3301 -32 -32 -32zM353.55 143.36c10.04 3.13965 19.3906 -5.4502 17.71 -15.3408\nc-7.92969 -47.1494 -71.3193 -80.0195 -123.26 -80.0195s-115.33 32.8701 -123.26 80.0195c-1.69043 9.9707 7.76953 18.4707 17.71 15.3408c25.9297 -8.31055 64.3994 -13.0605 105.55 -13.0605s79.6201 4.75977 105.55 13.0605zM248 440c136.97 0 248 -111.03 248 -248\ns-111.03 -248 -248 -248s-248 111.03 -248 248s111.03 248 248 248zM248 -8c110.28 0 200 89.7197 200 200s-89.7197 200 -200 200s-200 -89.7197 -200 -200s89.7197 -200 200 -200z\" />\n    <glyph glyph-name=\"kiss\" unicode=\"&#xf596;\" horiz-adv-x=\"496\" \nd=\"M168 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32zM304 140c0 -13 -13.4004 -27.2998 -35.0996 -36.4004c21.7998 -8.69922 35.1992 -23 35.1992 -36c0 -19.1992 -28.6992 -41.5 -71.5 -44h-0.5\nc-3.69922 0 -7 2.60059 -7.7998 6.2002c-0.899414 3.7998 1.10059 7.7002 4.7002 9.2002l17 7.2002c12.9004 5.5 20.7002 13.5 20.7002 21.5s-7.7998 16 -20.7998 21.5l-16.9004 7.2002c-6 2.59961 -5.7002 12.3994 0 14.7998l17 7.2002\nc12.9004 5.5 20.7002 13.5 20.7002 21.5s-7.7998 16 -20.7998 21.5l-16.9004 7.19922c-3.59961 1.5 -5.59961 5.40039 -4.7002 9.2002c0.799805 3.7998 4.40039 6.60059 8.2002 6.2002c42.7002 -2.5 71.5 -24.7998 71.5 -44zM248 440c137 0 248 -111 248 -248\ns-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM328 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32z\n\" />\n    <glyph glyph-name=\"kiss-beam\" unicode=\"&#xf597;\" horiz-adv-x=\"496\" \nd=\"M168 296c23.7998 0 52.7002 -29.2998 55.7998 -71.4004c0.299805 -3.7998 -2 -7.19922 -5.59961 -8.2998c-3.10059 -1 -7.2002 0 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996c-12.3008 0 -23.8008 -7.89941 -31.5 -21.5996l-9.5 -17\nc-1.80078 -3.2002 -5.80078 -4.7002 -9.30078 -3.7002c-3.59961 1.10059 -5.89941 4.60059 -5.59961 8.2998c3.2998 42.1006 32.2002 71.4004 56 71.4004zM248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8\nc110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM304 140c0 -13 -13.4004 -27.2998 -35.0996 -36.4004c21.7998 -8.69922 35.1992 -23 35.1992 -36c0 -19.1992 -28.6992 -41.5 -71.5 -44h-0.5\nc-3.69922 0 -7 2.60059 -7.7998 6.2002c-0.899414 3.7998 1.10059 7.7002 4.7002 9.2002l17 7.2002c12.9004 5.5 20.7002 13.5 20.7002 21.5s-7.7998 16 -20.7998 21.5l-16.9004 7.2002c-6 2.59961 -5.7002 12.3994 0 14.7998l17 7.2002\nc12.9004 5.5 20.7002 13.5 20.7002 21.5s-7.7998 16 -20.7998 21.5l-16.9004 7.19922c-3.59961 1.5 -5.59961 5.40039 -4.7002 9.2002c0.799805 3.7998 4.40039 6.60059 8.2002 6.2002c42.7002 -2.5 71.5 -24.7998 71.5 -44zM328 296\nc23.7998 0 52.7002 -29.2998 55.7998 -71.4004c0.299805 -3.7998 -2 -7.19922 -5.59961 -8.2998c-3.10059 -1 -7.2002 0 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996c-12.3008 0 -23.8008 -7.89941 -31.5 -21.5996l-9.5 -17\nc-1.80078 -3.2002 -5.80078 -4.7002 -9.30078 -3.7002c-3.59961 1.10059 -5.89941 4.60059 -5.59961 8.2998c3.2998 42.1006 32.2002 71.4004 56 71.4004z\" />\n    <glyph glyph-name=\"kiss-wink-heart\" unicode=\"&#xf598;\" horiz-adv-x=\"504\" \nd=\"M304 139.5c0 -13 -13.4004 -27.2998 -35.0996 -36.4004c21.7998 -8.69922 35.1992 -23 35.1992 -36c0 -19.1992 -28.6992 -41.5 -71.5 -44h-0.5c-3.69922 0 -7 2.60059 -7.7998 6.2002c-0.899414 3.7998 1.10059 7.7002 4.7002 9.2002l17 7.2002\nc12.9004 5.5 20.7002 13.5 20.7002 21.5s-7.7998 16 -20.7998 21.5l-16.9004 7.2002c-6 2.59961 -5.7002 12.3994 0 14.7998l17 7.2002c12.9004 5.5 20.7002 13.5 20.7002 21.5s-7.7998 16 -20.7998 21.5l-16.9004 7.19922c-3.59961 1.5 -5.59961 5.40039 -4.7002 9.2002\nc0.799805 3.7998 4.40039 6.60059 8.2002 6.2002c42.7002 -2.5 71.5 -24.7998 71.5 -44zM374.5 223c-14.7998 13.2002 -46.2002 13.2002 -61 0l-9.5 -8.5c-2.5 -2.2998 -7.90039 -4.7002 -13.7002 -1.59961c-4.39941 2.39941 -6.89941 7.39941 -6.09961 12.3994\nc3.89941 25.2002 34.2002 42.1006 59.7998 42.1006s55.7998 -16.9004 59.7998 -42.1006c0.799805 -5 -1.7002 -10 -6.09961 -12.3994c-4.40039 -2.40039 -9.90039 -1.7002 -13.7002 1.59961zM136 239.5c0 17.7002 14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32\ns-32 14.2998 -32 32zM501.1 45.5c9.2002 -23.9004 -4.39941 -49.4004 -28.5 -55.7002l-83 -21.5c-5.39941 -1.39941 -10.8994 1.7998 -12.3994 7.10059l-22.9004 82.5996c-6.59961 24 8.7998 48.5996 34 52.5996c22 3.5 43.1006 -11.5996 49 -33l2.2998 -8.39941\nl8.40039 2.2002c21.5996 5.59961 45.0996 -5.10059 53.0996 -25.9004zM334 11.7002c17.7002 -64 10.9004 -39.5 13.4004 -46.7998c-30.5 -13.4004 -64 -20.9004 -99.4004 -20.9004c-137 0 -248 111 -248 248s111 248 248 248s248 -111 247.9 -248\nc0 -31.7998 -6.2002 -62.0996 -17.1006 -90c-6 1.5 -12.2002 2.7998 -18.5996 2.90039c-5.60059 9.69922 -13.6006 17.5 -22.6006 23.8994c6.7002 19.9004 10.4004 41.1006 10.4004 63.2002c0 110.3 -89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200\nc30.7998 0 59.9004 7.2002 86 19.7002z\" />\n    <glyph glyph-name=\"laugh\" unicode=\"&#xf599;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM389.4 50.5996c37.7998 37.8008 58.5996 88 58.5996 141.4s-20.7998 103.6 -58.5996 141.4c-37.8008 37.7998 -88 58.5996 -141.4 58.5996s-103.6 -20.7998 -141.4 -58.5996\nc-37.7998 -37.8008 -58.5996 -88 -58.5996 -141.4s20.7998 -103.6 58.5996 -141.4c37.8008 -37.7998 88 -58.5996 141.4 -58.5996s103.6 20.7998 141.4 58.5996zM328 224c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32zM168 224\nc-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32zM362.4 160c8.19922 0 14.5 -7 13.5 -15c-7.5 -59.2002 -58.9004 -105 -121.101 -105h-13.5996c-62.2002 0 -113.601 45.7998 -121.101 105c-1 8 5.30078 15 13.5 15h228.801z\" />\n    <glyph glyph-name=\"laugh-beam\" unicode=\"&#xf59a;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM389.4 50.5996c37.7998 37.8008 58.5996 88 58.5996 141.4s-20.7998 103.6 -58.5996 141.4c-37.8008 37.7998 -88 58.5996 -141.4 58.5996s-103.6 -20.7998 -141.4 -58.5996\nc-37.7998 -37.8008 -58.5996 -88 -58.5996 -141.4s20.7998 -103.6 58.5996 -141.4c37.8008 -37.7998 88 -58.5996 141.4 -58.5996s103.6 20.7998 141.4 58.5996zM328 296c23.7998 0 52.7002 -29.2998 55.7998 -71.4004c0.700195 -8.5 -10.7998 -11.8994 -14.8994 -4.5\nl-9.5 17c-7.7002 13.7002 -19.2002 21.6006 -31.5 21.6006c-12.3008 0 -23.8008 -7.90039 -31.5 -21.6006l-9.5 -17c-4.10059 -7.39941 -15.6006 -4.09961 -14.9004 4.5c3.2998 42.1006 32.2002 71.4004 56 71.4004zM127 220.1c-4.2002 -7.39941 -15.7002 -4 -15.0996 4.5\nc3.2998 42.1006 32.1992 71.4004 56 71.4004c23.7998 0 52.6992 -29.2998 56 -71.4004c0.699219 -8.5 -10.8008 -11.8994 -14.9004 -4.5l-9.5 17c-7.7002 13.7002 -19.2002 21.6006 -31.5 21.6006s-23.7998 -7.90039 -31.5 -21.6006zM362.4 160c8.19922 0 14.5 -7 13.5 -15\nc-7.5 -59.2002 -58.9004 -105 -121.101 -105h-13.5996c-62.2002 0 -113.601 45.7998 -121.101 105c-1 8 5.30078 15 13.5 15h228.801z\" />\n    <glyph glyph-name=\"laugh-squint\" unicode=\"&#xf59b;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM389.4 50.5996c37.7998 37.8008 58.5996 88 58.5996 141.4s-20.7998 103.6 -58.5996 141.4c-37.8008 37.7998 -88 58.5996 -141.4 58.5996s-103.6 -20.7998 -141.4 -58.5996\nc-37.7998 -37.8008 -58.5996 -88 -58.5996 -141.4s20.7998 -103.6 58.5996 -141.4c37.8008 -37.7998 88 -58.5996 141.4 -58.5996s103.6 20.7998 141.4 58.5996zM343.6 252l33.6006 -40.2998c8.59961 -10.4004 -3.90039 -24.7998 -15.4004 -18l-80 48\nc-7.7998 4.7002 -7.7998 15.8994 0 20.5996l80 48c11.6006 6.7998 24 -7.7002 15.4004 -18zM134.2 193.7c-11.6006 -6.7998 -24.1006 7.59961 -15.4004 18l33.6006 40.2998l-33.6006 40.2998c-8.59961 10.2998 3.7998 24.9004 15.4004 18l80 -48\nc7.7998 -4.7002 7.7998 -15.8994 0 -20.5996zM362.4 160c8.19922 0 14.5 -7 13.5 -15c-7.5 -59.2002 -58.9004 -105 -121.101 -105h-13.5996c-62.2002 0 -113.601 45.7998 -121.101 105c-1 8 5.30078 15 13.5 15h228.801z\" />\n    <glyph glyph-name=\"laugh-wink\" unicode=\"&#xf59c;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM389.4 50.5996c37.7998 37.8008 58.5996 88 58.5996 141.4s-20.7998 103.6 -58.5996 141.4c-37.8008 37.7998 -88 58.5996 -141.4 58.5996s-103.6 -20.7998 -141.4 -58.5996\nc-37.7998 -37.8008 -58.5996 -88 -58.5996 -141.4s20.7998 -103.6 58.5996 -141.4c37.8008 -37.7998 88 -58.5996 141.4 -58.5996s103.6 20.7998 141.4 58.5996zM328 284c25.7002 0 55.9004 -16.9004 59.7002 -42.0996c1.7998 -11.1006 -11.2998 -18.2002 -19.7998 -10.8008\nl-9.5 8.5c-14.8008 13.2002 -46.2002 13.2002 -61 0l-9.5 -8.5c-8.30078 -7.39941 -21.5 -0.399414 -19.8008 10.8008c4 25.1992 34.2002 42.0996 59.9004 42.0996zM168 224c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32z\nM362.4 160c8.19922 0 14.5 -7 13.5 -15c-7.5 -59.2002 -58.9004 -105 -121.101 -105h-13.5996c-62.2002 0 -113.601 45.7998 -121.101 105c-1 8 5.30078 15 13.5 15h228.801z\" />\n    <glyph glyph-name=\"meh-blank\" unicode=\"&#xf5a4;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM168 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32\ns-32 14.2998 -32 32s14.2998 32 32 32zM328 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32z\" />\n    <glyph glyph-name=\"meh-rolling-eyes\" unicode=\"&#xf5a5;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM336 296c39.7998 0 72 -32.2002 72 -72s-32.2002 -72 -72 -72\ns-72 32.2002 -72 72s32.2002 72 72 72zM336 184c22.0996 0 40 17.9004 40 40c0 13.5996 -7.2998 25.0996 -17.7002 32.2998c1 -2.59961 1.7002 -5.39941 1.7002 -8.2998c0 -13.2998 -10.7002 -24 -24 -24s-24 10.7002 -24 24c0 3 0.700195 5.7002 1.7002 8.2998\nc-10.4004 -7.2002 -17.7002 -18.7002 -17.7002 -32.2998c0 -22.0996 17.9004 -40 40 -40zM232 224c0 -39.7998 -32.2002 -72 -72 -72s-72 32.2002 -72 72s32.2002 72 72 72s72 -32.2002 72 -72zM120 224c0 -22.0996 17.9004 -40 40 -40s40 17.9004 40 40\nc0 13.5996 -7.2998 25.0996 -17.7002 32.2998c1 -2.59961 1.7002 -5.39941 1.7002 -8.2998c0 -13.2998 -10.7002 -24 -24 -24s-24 10.7002 -24 24c0 3 0.700195 5.7002 1.7002 8.2998c-10.4004 -7.2002 -17.7002 -18.7002 -17.7002 -32.2998zM312 96\nc13.2002 0 24 -10.7998 24 -24s-10.7998 -24 -24 -24h-128c-13.2002 0 -24 10.7998 -24 24s10.7998 24 24 24h128z\" />\n    <glyph glyph-name=\"sad-cry\" unicode=\"&#xf5b3;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM392 53.5996c34.5996 35.9004 56 84.7002 56 138.4c0 110.3 -89.7002 200 -200 200s-200 -89.7002 -200 -200c0 -53.7002 21.4004 -102.4 56 -138.4v114.4\nc0 13.2002 10.7998 24 24 24s24 -10.7998 24 -24v-151.4c28.5 -15.5996 61.2002 -24.5996 96 -24.5996s67.5 9 96 24.5996v151.4c0 13.2002 10.7998 24 24 24s24 -10.7998 24 -24v-114.4zM205.8 213.5c-5.7998 -3.2002 -11.2002 -0.700195 -13.7002 1.59961l-9.5 8.5\nc-14.7998 13.2002 -46.1992 13.2002 -61 0l-9.5 -8.5c-3.7998 -3.39941 -9.2998 -4 -13.6992 -1.59961c-4.40039 2.40039 -6.90039 7.40039 -6.10059 12.4004c3.90039 25.1992 34.2002 42.0996 59.7998 42.0996c25.6006 0 55.8008 -16.9004 59.8008 -42.0996\nc0.799805 -5 -1.7002 -10 -6.10059 -12.4004zM344 268c25.7002 0 55.9004 -16.9004 59.7998 -42.0996c0.799805 -5 -1.7002 -10 -6.09961 -12.4004c-5.7002 -3.09961 -11.2002 -0.599609 -13.7002 1.59961l-9.5 8.5c-14.7998 13.2002 -46.2002 13.2002 -61 0l-9.5 -8.5\nc-3.7998 -3.39941 -9.2002 -4 -13.7002 -1.59961c-4.39941 2.40039 -6.89941 7.40039 -6.09961 12.4004c3.89941 25.1992 34.0996 42.0996 59.7998 42.0996zM248 176c30.9004 0 56 -28.7002 56 -64s-25.0996 -64 -56 -64s-56 28.7002 -56 64s25.0996 64 56 64z\" />\n    <glyph glyph-name=\"sad-tear\" unicode=\"&#xf5b4;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM256 144c38.0996 0 74 -16.7998 98.5 -46.0996\nc8.5 -10.2002 7.09961 -25.3008 -3.09961 -33.8008c-10.6006 -8.7998 -25.7002 -6.69922 -33.8008 3.10059c-15.2998 18.2998 -37.7998 28.7998 -61.5996 28.7998c-13.2002 0 -24 10.7998 -24 24s10.7998 24 24 24zM168 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32\ns32 -14.2998 32 -32s-14.2998 -32 -32 -32zM328 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32zM162.4 173.2c2.7998 3.7002 8.39941 3.7002 11.1992 0c11.4004 -15.2998 36.4004 -50.6006 36.4004 -68.1006\nc0 -22.6992 -18.7998 -41.0996 -42 -41.0996s-42 18.4004 -42 41.0996c0 17.5 25 52.8008 36.4004 68.1006z\" />\n    <glyph glyph-name=\"smile-beam\" unicode=\"&#xf5b8;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM332 135.4c8.5 10.1992 23.5996 11.5 33.7998 3.09961\nc10.2002 -8.5 11.6006 -23.5996 3.10059 -33.7998c-30 -36 -74.1006 -56.6006 -120.9 -56.6006s-90.9004 20.6006 -120.9 56.6006c-8.39941 10.2002 -7.09961 25.2998 3.10059 33.7998c10.2002 8.40039 25.2998 7.09961 33.7998 -3.09961\nc20.7998 -25.1006 51.5 -39.4004 84 -39.4004s63.2002 14.4004 84 39.4004zM136.5 237l-9.5 -17c-1.90039 -3.2002 -5.90039 -4.7998 -9.2998 -3.7002c-3.60059 1.10059 -6 4.60059 -5.7002 8.2998c3.2998 42.1006 32.2002 71.4004 56 71.4004s52.7002 -29.2998 56 -71.4004\nc0.299805 -3.7998 -2.09961 -7.19922 -5.7002 -8.2998c-3.09961 -1 -7.2002 0 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996s-23.7998 -7.89941 -31.5 -21.5996zM328 296c23.7998 0 52.7002 -29.2998 56 -71.4004\nc0.299805 -3.7998 -2.09961 -7.19922 -5.7002 -8.2998c-3.09961 -1 -7.2002 0 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996s-23.7998 -7.89941 -31.5 -21.5996l-9.5 -17c-1.90039 -3.2002 -5.7998 -4.7998 -9.2998 -3.7002\nc-3.60059 1.10059 -6 4.60059 -5.7002 8.2998c3.2998 42.1006 32.2002 71.4004 56 71.4004z\" />\n    <glyph glyph-name=\"surprise\" unicode=\"&#xf5c2;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM248 168c35.2998 0 64 -28.7002 64 -64s-28.7002 -64 -64 -64\ns-64 28.7002 -64 64s28.7002 64 64 64zM200 240c0 -17.7002 -14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32zM328 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32z\" />\n    <glyph glyph-name=\"tired\" unicode=\"&#xf5c8;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM377.1 295.8c3.80078 -4.39941 3.90039 -11 0.100586 -15.5\nl-33.6006 -40.2998l33.6006 -40.2998c3.7998 -4.5 3.7002 -11 -0.100586 -15.5c-3.5 -4.10059 -9.89941 -5.7002 -15.2998 -2.5l-80 48c-3.59961 2.2002 -5.7998 6.09961 -5.7998 10.2998s2.2002 8.09961 5.7998 10.2998l80 48c5 2.90039 11.5 1.90039 15.2998 -2.5z\nM220 240c0 -4.2002 -2.2002 -8.09961 -5.7998 -10.2998l-80 -48c-5.40039 -3.2002 -11.7998 -1.60059 -15.2998 2.5c-3.80078 4.5 -3.90039 11 -0.100586 15.5l33.6006 40.2998l-33.6006 40.2998c-3.7998 4.5 -3.7002 11 0.100586 15.5\nc3.7998 4.40039 10.2998 5.5 15.2998 2.5l80 -48c3.59961 -2.2002 5.7998 -6.09961 5.7998 -10.2998zM248 176c45.4004 0 100.9 -38.2998 107.8 -93.2998c1.5 -11.9004 -7 -21.6006 -15.5 -17.9004c-22.7002 9.7002 -56.2998 15.2002 -92.2998 15.2002\ns-69.5996 -5.5 -92.2998 -15.2002c-8.60059 -3.7002 -17 6.10059 -15.5 17.9004c6.89941 55 62.3994 93.2998 107.8 93.2998z\" />\n  </font>\n</defs></svg>\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_022_sample_app/app/src/static/css/font-awesome/fa-solid-900.svg#fontawesome",
    "content": "<?xml version=\"1.0\" standalone=\"no\"?>\n<!--\nFont Awesome Free 5.10.2 by @fontawesome - https://fontawesome.com\nLicense - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n-->\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\" >\n<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\">\n<metadata>\nCreated by FontForge 20190801 at Thu Aug 22 14:41:09 2019\n By Robert Madole\nCopyright (c) Font Awesome\n</metadata>\n<defs>\n<font id=\"FontAwesome5Free-Solid\" horiz-adv-x=\"512\" >\n  <font-face \n    font-family=\"Font Awesome 5 Free Solid\"\n    font-weight=\"900\"\n    font-stretch=\"normal\"\n    units-per-em=\"512\"\n    panose-1=\"2 0 5 3 0 0 0 0 0 0\"\n    ascent=\"448\"\n    descent=\"-64\"\n    bbox=\"-0.983398 -64.9834 640.104 448.427\"\n    underline-thickness=\"25\"\n    underline-position=\"-50\"\n    unicode-range=\"U+0020-F897\"\n  />\n    <missing-glyph />\n    <glyph glyph-name=\"glass-martini\" unicode=\"&#xf000;\" \nd=\"M502.05 390.4l-214.05 -214.04v-192.36h56c22.0898 0 40 -17.9102 40 -40c0 -4.41992 -3.58008 -8 -8 -8h-240c-4.41992 0 -8 3.58008 -8 8c0 22.0898 17.9102 40 40 40h56v192.36l-214.05 214.04c-21.25 21.2598 -6.2002 57.5996 23.8496 57.5996h444.4\nc30.0498 0 45.0996 -36.3398 23.8496 -57.5996z\" />\n    <glyph glyph-name=\"music\" unicode=\"&#xf001;\" \nd=\"M511.99 415.99l0.00976562 -351.99c0 -35.3496 -42.9805 -64 -96 -64s-96 28.6504 -96 64s42.9805 64 96 64c11.2803 0 21.9502 -1.54004 32 -3.91992v184.63l-256 -75.0195v-233.69c0 -35.3496 -42.9805 -64 -96 -64s-96 28.6504 -96 64s42.9805 64 96 64\nc11.2803 0 21.9502 -1.54004 32 -3.91992v261.42c0 14 9.09961 26.2998 22.4004 30.5l319.989 94.5c20.5 6.5 41.6006 -8.7998 41.6006 -30.5098z\" />\n    <glyph glyph-name=\"search\" unicode=\"&#xf002;\" \nd=\"M505 5.2998c9.2998 -9.39941 9.2998 -24.5996 -0.0996094 -34l-28.3008 -28.2998c-9.2998 -9.40039 -24.5 -9.40039 -33.8994 0l-99.7002 99.7002c-4.5 4.5 -7 10.5996 -7 17v16.2998c-35.2998 -27.5996 -79.7002 -44 -128 -44c-114.9 0 -208 93.0996 -208 208\ns93.0996 208 208 208s208 -93.0996 208 -208c0 -48.2998 -16.4004 -92.7002 -44 -128h16.2998c6.40039 0 12.5 -2.5 17 -7zM208 112c70.7998 0 128 57.2998 128 128c0 70.7998 -57.2998 128 -128 128c-70.7998 0 -128 -57.2998 -128 -128c0 -70.7998 57.2998 -128 128 -128z\n\" />\n    <glyph glyph-name=\"heart\" unicode=\"&#xf004;\" \nd=\"M462.3 385.4c62.7998 -53.6006 66.1006 -149.801 9.7998 -207.9l-193.5 -199.8c-12.5 -12.9004 -32.7998 -12.9004 -45.2998 0l-193.5 199.8c-56.2002 58.0996 -52.8994 154.3 9.90039 207.9c54.7998 46.6992 136.399 38.2998 186.6 -13.6006l19.7002 -20.2998\nl19.7002 20.2998c50.2998 51.9004 131.8 60.2998 186.6 13.6006z\" />\n    <glyph glyph-name=\"star\" unicode=\"&#xf005;\" horiz-adv-x=\"576\" \nd=\"M259.3 430.2c11.7998 23.8994 45.7002 23.5996 57.4004 0l65.2998 -132.4l146.1 -21.2998c26.2002 -3.7998 36.7002 -36.0996 17.7002 -54.5996l-105.7 -103l25 -145.5c4.5 -26.3008 -23.1992 -45.9004 -46.3994 -33.7002l-130.7 68.7002l-130.7 -68.7002\nc-23.2002 -12.2998 -50.8994 7.39941 -46.3994 33.7002l25 145.5l-105.7 103c-19 18.5 -8.5 50.7998 17.7002 54.5996l146.1 21.2998z\" />\n    <glyph glyph-name=\"user\" unicode=\"&#xf007;\" horiz-adv-x=\"448\" \nd=\"M224 192c-70.7002 0 -128 57.2998 -128 128s57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128zM313.6 160c74.2002 0 134.4 -60.2002 134.4 -134.4v-41.5996c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v41.5996\nc0 74.2002 60.2002 134.4 134.4 134.4h16.6992c22.3008 -10.2002 46.9004 -16 72.9004 -16s50.7002 5.7998 72.9004 16h16.6992z\" />\n    <glyph glyph-name=\"film\" unicode=\"&#xf008;\" \nd=\"M488 384c13.2998 0 24 -10.7002 24 -24v-336c0 -13.2998 -10.7002 -24 -24 -24h-8v20c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-20h-320v20c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-20h-8\nc-13.2998 0 -24 10.7002 -24 24v336c0 13.2998 10.7002 24 24 24h8v-20c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12v20h320v-20c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12v20h8zM96 76v40c0 6.59961 -5.40039 12 -12 12h-40\nc-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12zM96 172v40c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12zM96 268v40\nc0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12zM368 60v96c0 6.59961 -5.40039 12 -12 12h-200c-6.59961 0 -12 -5.40039 -12 -12v-96c0 -6.59961 5.40039 -12 12 -12h200\nc6.59961 0 12 5.40039 12 12zM368 228v96c0 6.59961 -5.40039 12 -12 12h-200c-6.59961 0 -12 -5.40039 -12 -12v-96c0 -6.59961 5.40039 -12 12 -12h200c6.59961 0 12 5.40039 12 12zM480 76v40c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-40\nc0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12zM480 172v40c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12zM480 268v40c0 6.59961 -5.40039 12 -12 12h-40\nc-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12z\" />\n    <glyph glyph-name=\"th-large\" unicode=\"&#xf009;\" \nd=\"M296 416h192c13.2549 0 24 -10.7451 24 -24v-160c0 -13.2549 -10.7451 -24 -24 -24h-192c-13.2549 0 -24 10.7451 -24 24v160c0 13.2549 10.7451 24 24 24zM216 416c13.2549 0 24 -10.7451 24 -24v-160c0 -13.2549 -10.7451 -24 -24 -24h-192\nc-13.2549 0 -24 10.7451 -24 24v160c0 13.2549 10.7451 24 24 24h192zM0 152c0 13.2549 10.7451 24 24 24h192c13.2549 0 24 -10.7451 24 -24v-160c0 -13.2549 -10.7451 -24 -24 -24h-192c-13.2549 0 -24 10.7451 -24 24v160zM296 -32c-13.2549 0 -24 10.7451 -24 24v160\nc0 13.2549 10.7451 24 24 24h192c13.2549 0 24 -10.7451 24 -24v-160c0 -13.2549 -10.7451 -24 -24 -24h-192z\" />\n    <glyph glyph-name=\"th\" unicode=\"&#xf00a;\" \nd=\"M149.333 392v-80c0 -13.2549 -10.7451 -24 -24 -24h-101.333c-13.2549 0 -24 10.7451 -24 24v80c0 13.2549 10.7451 24 24 24h101.333c13.2549 0 24 -10.7451 24 -24zM330.667 152c0 -13.2549 -10.7451 -24 -24.001 -24h-101.333c-13.2549 0 -24 10.7451 -24 24v80\nc0 13.2549 10.7451 24 24 24h101.334c13.2549 0 24 -10.7451 24 -24v-80zM362.667 392c0 13.2549 10.7451 24 24 24h101.333c13.2549 0 24 -10.7451 24 -24v-80c0 -13.2549 -10.7451 -24 -24 -24h-101.333c-13.2549 0 -24 10.7451 -24 24v80zM330.667 312\nc0 -13.2549 -10.7451 -24 -24.001 -24h-101.333c-13.2549 0 -24 10.7451 -24 24v80c0 13.2549 10.7451 24 24 24h101.334c13.2549 0 24 -10.7451 24 -24v-80zM125.333 256c13.2549 0 24 -10.7451 24 -24v-80c0 -13.2549 -10.7451 -24 -24 -24h-101.333\nc-13.2549 0 -24 10.7451 -24 24v80c0 13.2549 10.7451 24 24 24h101.333zM0 72c0 13.2549 10.7451 24 24 24h101.333c13.2549 0 24 -10.7451 24 -24v-80c0 -13.2549 -10.7451 -24 -24 -24h-101.333c-13.2549 0 -24 10.7451 -24 24v80zM386.667 128\nc-13.2549 0 -24 10.7451 -24 24v80c0 13.2549 10.7451 24 24 24h101.333c13.2549 0 24 -10.7451 24 -24v-80c0 -13.2549 -10.7451 -24 -24 -24h-101.333zM386.667 -32c-13.2549 0 -24 10.7451 -24 24v80c0 13.2549 10.7451 24 24 24h101.333c13.2549 0 24 -10.7451 24 -24\nv-80c0 -13.2549 -10.7451 -24 -24 -24h-101.333zM181.333 72c0 13.2549 10.7451 24 24 24h101.333c13.2549 0 24 -10.7451 24 -24v-80c0 -13.2549 -10.7451 -24 -24 -24h-101.333c-13.2549 0 -24 10.7451 -24 24v80z\" />\n    <glyph glyph-name=\"th-list\" unicode=\"&#xf00b;\" \nd=\"M149.333 232v-80c0 -13.2549 -10.7451 -24 -24 -24h-101.333c-13.2549 0 -24 10.7451 -24 24v80c0 13.2549 10.7451 24 24 24h101.333c13.2549 0 24 -10.7451 24 -24zM0 72c0 13.2549 10.7451 24 24 24h101.333c13.2549 0 24 -10.7451 24 -24v-80\nc0 -13.2549 -10.7451 -24 -24 -24h-101.333c-13.2549 0 -24 10.7451 -24 24v80zM125.333 416c13.2549 0 24 -10.7451 24 -24v-80c0 -13.2549 -10.7451 -24 -24 -24h-101.333c-13.2549 0 -24 10.7451 -24 24v80c0 13.2549 10.7451 24 24 24h101.333zM205.333 -32\nc-13.2549 0 -24 10.7451 -24 24v80c0 13.2549 10.7451 24 24 24h282.667c13.2549 0 24 -10.7451 24 -24v-80c0 -13.2549 -10.7451 -24 -24 -24h-282.667zM181.333 392c0 13.2549 10.7451 24 24 24h282.667c13.2549 0 24 -10.7451 24 -24v-80\nc0 -13.2549 -10.7451 -24 -24 -24h-282.667c-13.2549 0 -24 10.7451 -24 24v80zM205.333 128c-13.2549 0 -24 10.7451 -24 24v80c0 13.2549 10.7451 24 24 24h282.667c13.2549 0 24 -10.7451 24 -24v-80c0 -13.2549 -10.7451 -24 -24 -24h-282.667z\" />\n    <glyph glyph-name=\"check\" unicode=\"&#xf00c;\" \nd=\"M173.898 8.5957l-166.4 166.4c-9.99707 9.99707 -9.99707 26.2061 0 36.2041l36.2031 36.2041c9.99707 9.99805 26.207 9.99805 36.2041 0l112.095 -112.095l240.095 240.095c9.99707 9.99707 26.207 9.99707 36.2041 0l36.2031 -36.2041\nc9.99707 -9.99707 9.99707 -26.2061 0 -36.2041l-294.4 -294.401c-9.99805 -9.99707 -26.207 -9.99707 -36.2031 0.000976562z\" />\n    <glyph glyph-name=\"times\" unicode=\"&#xf00d;\" horiz-adv-x=\"352\" \nd=\"M242.72 192l100.07 -100.07c12.2803 -12.29 12.2803 -32.1992 0 -44.4795l-22.2402 -22.2402c-12.2803 -12.2803 -32.2002 -12.2803 -44.4795 0l-100.07 100.07l-100.07 -100.07c-12.2793 -12.2803 -32.1992 -12.2803 -44.4795 0l-22.2402 22.2402\nc-12.2803 12.29 -12.2803 32.2002 0 44.4795l100.07 100.07l-100.07 100.07c-12.2803 12.29 -12.2803 32.1992 0 44.4795l22.2402 22.2402c12.29 12.2803 32.2002 12.2803 44.4795 0l100.07 -100.07l100.07 100.07c12.29 12.2803 32.1992 12.2803 44.4795 0\nl22.2402 -22.2402c12.2803 -12.29 12.2803 -32.2002 0 -44.4795z\" />\n    <glyph glyph-name=\"search-plus\" unicode=\"&#xf00e;\" \nd=\"M304 256v-32c0 -6.59961 -5.40039 -12 -12 -12h-56v-56c0 -6.59961 -5.40039 -12 -12 -12h-32c-6.59961 0 -12 5.40039 -12 12v56h-56c-6.59961 0 -12 5.40039 -12 12v32c0 6.59961 5.40039 12 12 12h56v56c0 6.59961 5.40039 12 12 12h32c6.59961 0 12 -5.40039 12 -12\nv-56h56c6.59961 0 12 -5.40039 12 -12zM505 -28.7002l-28.2998 -28.2998c-9.40039 -9.40039 -24.6006 -9.40039 -33.9004 0l-99.7998 99.7002c-4.5 4.5 -7 10.5996 -7 17v16.2998c-35.2998 -27.5996 -79.7002 -44 -128 -44c-114.9 0 -208 93.0996 -208 208\ns93.0996 208 208 208s208 -93.0996 208 -208c0 -48.2998 -16.4004 -92.7002 -44 -128h16.2998c6.40039 0 12.5 -2.5 17 -7l99.7002 -99.7002c9.2998 -9.39941 9.2998 -24.5996 0 -34zM344 240c0 75.2002 -60.7998 136 -136 136s-136 -60.7998 -136 -136\ns60.7998 -136 136 -136s136 60.7998 136 136z\" />\n    <glyph glyph-name=\"search-minus\" unicode=\"&#xf010;\" \nd=\"M304 256v-32c0 -6.59961 -5.40039 -12 -12 -12h-168c-6.59961 0 -12 5.40039 -12 12v32c0 6.59961 5.40039 12 12 12h168c6.59961 0 12 -5.40039 12 -12zM505 -28.7002l-28.2998 -28.2998c-9.40039 -9.40039 -24.6006 -9.40039 -33.9004 0l-99.7998 99.7002\nc-4.5 4.5 -7 10.5996 -7 17v16.2998c-35.2998 -27.5996 -79.7002 -44 -128 -44c-114.9 0 -208 93.0996 -208 208s93.0996 208 208 208s208 -93.0996 208 -208c0 -48.2998 -16.4004 -92.7002 -44 -128h16.2998c6.40039 0 12.5 -2.5 17 -7l99.7002 -99.7002\nc9.2998 -9.39941 9.2998 -24.5996 0 -34zM344 240c0 75.2002 -60.7998 136 -136 136s-136 -60.7998 -136 -136s60.7998 -136 136 -136s136 60.7998 136 136z\" />\n    <glyph glyph-name=\"power-off\" unicode=\"&#xf011;\" \nd=\"M400 393.9c63 -45 104 -118.601 104 -201.9c0 -136.8 -110.8 -247.7 -247.5 -248c-136.5 -0.299805 -248.3 111 -248.5 247.6c-0.0996094 83.3008 40.9004 157.101 103.8 202.2c11.7002 8.2998 28 4.7998 35 -7.7002l15.7998 -28.0996\nc5.90039 -10.5 3.10059 -23.7998 -6.59961 -31c-41.5 -30.7998 -68 -79.5996 -68 -134.9c-0.0996094 -92.2998 74.5 -168.1 168 -168.1c91.5996 0 168.6 74.2002 168 169.1c-0.299805 51.8008 -24.7002 101.801 -68.0996 134c-9.7002 7.2002 -12.4004 20.5 -6.5 30.9004\nl15.7998 28.0996c7 12.4004 23.2002 16.1006 34.7998 7.80078zM296 184c0 -13.2998 -10.7002 -24 -24 -24h-32c-13.2998 0 -24 10.7002 -24 24v240c0 13.2998 10.7002 24 24 24h32c13.2998 0 24 -10.7002 24 -24v-240z\" />\n    <glyph glyph-name=\"signal\" unicode=\"&#xf012;\" horiz-adv-x=\"640\" \nd=\"M216 160c8.83984 0 16 -7.16016 16 -16v-192c0 -8.83984 -7.16016 -16 -16 -16h-48c-8.83984 0 -16 7.16016 -16 16v192c0 8.83984 7.16016 16 16 16h48zM88 64c8.83984 0 16 -7.16016 16 -16v-96c0 -8.83984 -7.16016 -16 -16 -16h-48c-8.83984 0 -16 7.16016 -16 16v96\nc0 8.83984 7.16016 16 16 16h48zM344 256c8.83984 0 16 -7.16016 16 -16v-288c0 -8.83984 -7.16016 -16 -16 -16h-48c-8.83984 0 -16 7.16016 -16 16v288c0 8.83984 7.16016 16 16 16h48zM472 352c8.83984 0 16 -7.16016 16 -16v-384c0 -8.83984 -7.16016 -16 -16 -16h-48\nc-8.83984 0 -16 7.16016 -16 16v384c0 8.83984 7.16016 16 16 16h48zM600 448c8.83984 0 16 -7.16016 16 -16v-480c0 -8.83984 -7.16016 -16 -16 -16h-48c-8.83984 0 -16 7.16016 -16 16v480c0 8.83984 7.16016 16 16 16h48z\" />\n    <glyph glyph-name=\"cog\" unicode=\"&#xf013;\" \nd=\"M487.4 132.3c4.89941 -2.7998 7.09961 -8.59961 5.59961 -14.0996c-11.0996 -35.7002 -30 -67.9004 -54.7002 -94.6006c-3.7998 -4.19922 -9.89941 -5.09961 -14.7998 -2.2998l-42.5996 24.6006c-18 -15.3008 -38.6006 -27.2002 -60.8008 -35.1006v-49.2002\nc0 -5.59961 -3.89941 -10.5 -9.39941 -11.6992c-34.9004 -7.80078 -72.5 -8.2002 -109.2 0c-5.5 1.19922 -9.40039 6.09961 -9.40039 11.6992v49.2002c-22.2998 7.7998 -42.8994 19.7002 -60.7998 35.1006l-42.5996 -24.6006c-4.7998 -2.7998 -11 -1.7998 -14.7998 2.2998\nc-24.7002 26.8008 -43.6006 59 -54.7002 94.6006c-1.60059 5.39941 0.599609 11.2002 5.5 14l42.5996 24.5996c-4.2998 23.2002 -4.2998 47 0 70.2002l-42.5996 24.5996c-4.90039 2.80078 -7.2002 8.60059 -5.5 14c11.0996 35.7002 30 67.9004 54.7002 94.6006\nc3.7998 4.2002 9.89941 5.09961 14.7998 2.2998l42.5 -24.5996c18 15.2998 38.5996 27.1992 60.7998 35.0996v49.2002c0 5.59961 3.90039 10.5 9.40039 11.7002c34.8994 7.7998 72.5 8.19922 109.199 0c5.5 -1.2002 9.40039 -6.10059 9.40039 -11.7002v-49.1006\nc22.2998 -7.7998 42.9004 -19.6992 60.7998 -35.0996l42.6006 24.5996c4.7998 2.80078 11 1.80078 14.7998 -2.2998c24.7002 -26.7998 43.5996 -59 54.7002 -94.5996c1.59961 -5.40039 -0.600586 -11.2002 -5.5 -14l-42.6006 -24.6006\nc4.2998 -23.1992 4.2998 -47 0 -70.1992zM256 112c44.0996 0 80 35.9004 80 80s-35.9004 80 -80 80s-80 -35.9004 -80 -80s35.9004 -80 80 -80z\" />\n    <glyph glyph-name=\"home\" unicode=\"&#xf015;\" horiz-adv-x=\"576\" \nd=\"M280.37 299.74c1.84863 1.49023 5.27539 2.69922 7.64941 2.69922c2.375 0 5.80176 -1.20898 7.65039 -2.69922l184.33 -151.74v-164c0 -8.83203 -7.16797 -16 -16 -16l-112.02 0.30957h-0.000976562c-8.83203 0 -16 7.16797 -16 16\nc0 0.0146484 0 0.0371094 0.000976562 0.0507812v95.6396c0 8.83203 -7.16895 16 -16 16h-64c-8.83203 0 -16 -7.16797 -16 -16v-95.71v0c0 -8.78809 -7.13281 -15.9561 -15.9209 -16l-112.06 -0.290039c-8.83203 0 -16 7.16797 -16 16v163.89zM571.6 196.53\nc2.44531 -1.98828 4.42969 -6.15918 4.42969 -9.31055c0 -2.37305 -1.22266 -5.78613 -2.72949 -7.62012l-25.5 -31c-1.98633 -2.40332 -6.13086 -4.35449 -9.24902 -4.35449c-2.38574 0 -5.81348 1.23438 -7.65039 2.75488l-235.23 193.74\nc-1.84863 1.49023 -5.27539 2.69922 -7.65039 2.69922c-2.37402 0 -5.80078 -1.20898 -7.64941 -2.69922l-235.22 -193.74c-1.83691 -1.5166 -5.26074 -2.74805 -7.64258 -2.74805c-3.12793 0 -7.28027 1.96191 -9.26758 4.37793l-25.5 31\nc-1.52051 1.83789 -2.75488 5.26562 -2.75488 7.65039c0 3.11914 1.95117 7.2627 4.35449 9.25l253.13 208.47c7.33594 6.03613 21 10.9355 30.5 10.9355c9.50098 0 23.1641 -4.89941 30.5 -10.9355l89.5303 -73.6602v72.6104c0 6.62402 5.37598 12 12 12h56\nc6.62402 0 12 -5.37598 12 -12v-138.51z\" />\n    <glyph glyph-name=\"clock\" unicode=\"&#xf017;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM313.1 89.9004c5.40039 -3.90039 12.9004 -2.7002 16.8008 2.59961l28.1992 38.7998c3.90039 5.40039 2.80078 12.9004 -2.59961 16.7998l-63.5 46.2002v137.7\nc0 6.59961 -5.40039 12 -12 12h-48c-6.59961 0 -12 -5.40039 -12 -12v-168.3c0 -3.7998 1.7998 -7.40039 4.90039 -9.7002z\" />\n    <glyph glyph-name=\"road\" unicode=\"&#xf018;\" horiz-adv-x=\"576\" \nd=\"M573.19 45.3301c9.25977 -21.1904 -5.5 -45.3301 -27.7305 -45.3301h-196.84l-10.3105 97.6797c-0.859375 8.14062 -7.71973 14.3203 -15.9092 14.3203h-68.8008c-8.18945 0 -15.0498 -6.17969 -15.9092 -14.3203l-10.3105 -97.6797h-196.84\nc-22.2305 0 -36.9902 24.1396 -27.7402 45.3301l139.79 320c4.96973 11.3799 15.7998 18.6699 27.7305 18.6699h97.5898l-2.4502 -23.1602c-0.5 -4.71973 3.20996 -8.83984 7.95996 -8.83984h29.1602c4.75 0 8.45996 4.12012 7.95996 8.83984l-2.4502 23.1602h97.5898\nc11.9199 0 22.75 -7.29004 27.7207 -18.6699zM260.4 312.84l-4.59082 -43.5801c-0.75 -7.08984 4.80078 -13.2598 11.9307 -13.2598h40.54c7.12012 0 12.6797 6.16992 11.9297 13.2598l-4.59961 43.5801c-0.430664 4.07031 -3.87012 7.16016 -7.95996 7.16016h-39.29\nh-0.00488281c-3.97363 0 -7.53809 -3.20801 -7.95508 -7.16016zM315.64 144c9.5 0 16.9102 8.23047 15.9102 17.6797l-5.06934 48c-0.860352 8.14062 -7.7207 14.3203 -15.9102 14.3203h-45.1504c-8.18945 0 -15.0498 -6.17969 -15.9102 -14.3203l-5.06934 -48\nc-1 -9.44922 6.40918 -17.6797 15.9092 -17.6797h55.29z\" />\n    <glyph glyph-name=\"download\" unicode=\"&#xf019;\" \nd=\"M216 448h80c13.2998 0 24 -10.7002 24 -24v-168h87.7002c17.7998 0 26.7002 -21.5 14.0996 -34.0996l-152.1 -152.2c-7.5 -7.5 -19.7998 -7.5 -27.2998 0l-152.301 152.2c-12.5996 12.5996 -3.69922 34.0996 14.1006 34.0996h87.7998v168c0 13.2998 10.7002 24 24 24z\nM512 72v-112c0 -13.2998 -10.7002 -24 -24 -24h-464c-13.2998 0 -24 10.7002 -24 24v112c0 13.2998 10.7002 24 24 24h146.7l49 -49c20.0996 -20.0996 52.5 -20.0996 72.5996 0l49 49h146.7c13.2998 0 24 -10.7002 24 -24zM388 -16c0 11 -9 20 -20 20s-20 -9 -20 -20\ns9 -20 20 -20s20 9 20 20zM452 -16c0 11 -9 20 -20 20s-20 -9 -20 -20s9 -20 20 -20s20 9 20 20z\" />\n    <glyph glyph-name=\"inbox\" unicode=\"&#xf01c;\" horiz-adv-x=\"576\" \nd=\"M567.938 204.092c4.4502 -6.6748 8.06152 -18.6025 8.06152 -26.624v-0.000976562v-129.467c0 -26.5098 -21.4902 -48 -48 -48h-480c-26.5098 0 -48 21.4902 -48 48v129.467v0.000976562c0 8.02148 3.61133 19.9492 8.06152 26.624l105.689 158.534\nc7.86621 11.7988 25.7578 21.374 39.9385 21.374h268.621c14.1807 0 32.0732 -9.57617 39.9395 -21.374zM162.252 320l-85.334 -128h123.082l32 -64h112l32 64h123.082l-85.333 128h-251.497z\" />\n    <glyph glyph-name=\"redo\" unicode=\"&#xf01e;\" \nd=\"M500.33 448c6.62402 0 12 -5.37598 12 -12v-200.34c0 -6.62402 -5.37598 -12 -12 -12h-200.33c-6.62402 0 -12 5.37598 -12 12v47.4102v0.0136719c0 6.62402 5.37598 12 12 12c0.157227 0 0.413086 -0.00683594 0.570312 -0.0136719l101.529 -4.87012\nc-28.8721 42.9609 -94.3145 77.8281 -146.076 77.8281c-97.1514 0 -176 -78.8486 -176 -176c0 -97.1523 78.8486 -176 176 -176c36.6543 0 88.7373 19.6504 116.257 43.8613c1.87207 1.63672 5.40918 2.96387 7.89551 2.96387c2.74316 0 6.54395 -1.57422 8.48438 -3.51367\nl34 -34c1.94141 -1.94043 3.51758 -5.74316 3.51758 -8.48828c0 -2.96094 -1.79102 -6.9668 -3.99805 -8.94141c-38.9707 -35.2783 -113.264 -63.9102 -165.831 -63.9102h-0.348633c-136.9 0 -247.9 110.93 -248 247.81c-0.0996094 136.66 111.34 248.19 248 248.19\nh0.272461c63.2246 0 147.739 -39.124 188.647 -87.3301l-4 82.7598c-0.0078125 0.157227 -0.0136719 0.413086 -0.0136719 0.570312c0 6.62402 5.37598 12 12 12h0.0136719h47.4102z\" />\n    <glyph glyph-name=\"sync\" unicode=\"&#xf021;\" \nd=\"M440.65 435.43c-0.0078125 0.157227 -0.0136719 0.413086 -0.0136719 0.570312c0 6.62012 5.37305 11.9961 11.9932 12h47.3701c6.62402 0 12 -5.37598 12 -12v-200.35c0 -6.62402 -5.37598 -12 -12 -12h-200.22c-6.62402 0 -12 5.37598 -12 12v47.4092v0.0136719\nc0 6.62402 5.37598 12 12 12c0.157227 0 0.412109 -0.00585938 0.569336 -0.0136719l101.46 -4.85938c-28.8584 42.9248 -94.2598 77.7627 -145.984 77.7627c-76.4834 0 -153.099 -60.3467 -171.016 -134.703c-1.19727 -5.10547 -6.4248 -9.25391 -11.6699 -9.25977\nh-49.0498c-6.62402 0 -12 5.37598 -12 12c0 0.606445 0.0898438 1.58301 0.200195 2.17969c21.6201 114.9 122.44 201.82 243.54 201.82h0.28418c63.2031 0 147.667 -39.1279 188.536 -87.3398zM255.83 16c76.4971 0 153.144 60.3633 171.03 134.74\nc1.19727 5.10547 6.4248 9.25391 11.6699 9.25977h49.0498c6.62402 0 12 -5.37598 12 -12c0 -0.606445 -0.0898438 -1.58301 -0.200195 -2.17969c-21.6201 -114.9 -122.439 -201.82 -243.55 -201.82h-0.234375c-63.1289 0 -147.53 39.0518 -188.396 87.1699\nl4.14941 -82.5703c0.00878906 -0.165039 0.015625 -0.433594 0.015625 -0.599609c0 -6.62402 -5.37598 -12 -12 -12h-0.015625h-47.3496c-6.62402 0 -12 5.37598 -12 12v200.33c0 6.62402 5.37598 12 12 12h200.2c6.62402 0 12 -5.37598 12 -12v-47.4004v-0.0136719\nc0 -6.62402 -5.37598 -12 -12 -12c-0.157227 0 -0.413086 0.00683594 -0.570312 0.0136719l-101.8 4.87012c28.7998 -42.9453 94.1406 -77.7998 145.85 -77.7998h0.150391z\" />\n    <glyph glyph-name=\"list-alt\" unicode=\"&#xf022;\" \nd=\"M464 -32h-416c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h416c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48zM128 328c-22.0908 0 -40 -17.9092 -40 -40s17.9092 -40 40 -40s40 17.9092 40 40s-17.9092 40 -40 40zM128 232\nc-22.0908 0 -40 -17.9092 -40 -40s17.9092 -40 40 -40s40 17.9092 40 40s-17.9092 40 -40 40zM128 136c-22.0908 0 -40 -17.9092 -40 -40s17.9092 -40 40 -40s40 17.9092 40 40s-17.9092 40 -40 40zM416 272v32c0 6.62695 -5.37305 12 -12 12h-200\nc-6.62695 0 -12 -5.37305 -12 -12v-32c0 -6.62695 5.37305 -12 12 -12h200c6.62695 0 12 5.37305 12 12zM416 176v32c0 6.62695 -5.37305 12 -12 12h-200c-6.62695 0 -12 -5.37305 -12 -12v-32c0 -6.62695 5.37305 -12 12 -12h200c6.62695 0 12 5.37305 12 12zM416 80v32\nc0 6.62695 -5.37305 12 -12 12h-200c-6.62695 0 -12 -5.37305 -12 -12v-32c0 -6.62695 5.37305 -12 12 -12h200c6.62695 0 12 5.37305 12 12z\" />\n    <glyph glyph-name=\"lock\" unicode=\"&#xf023;\" horiz-adv-x=\"448\" \nd=\"M400 224c26.5 0 48 -21.5 48 -48v-192c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v192c0 26.5 21.5 48 48 48h24v72c0 83.7998 68.2002 152 152 152s152 -68.2002 152 -152v-72h24zM296 224v72c0 39.7002 -32.2998 72 -72 72s-72 -32.2998 -72 -72v-72h144\nz\" />\n    <glyph glyph-name=\"flag\" unicode=\"&#xf024;\" \nd=\"M349.565 349.217c40.4951 0 82.6113 15.9062 116.949 31.8545c21.2168 9.85352 45.4854 -5.62305 45.4854 -29.0166v-243.1c0 -10.5264 -5.16016 -20.4072 -13.8428 -26.3584c-35.8379 -24.5635 -74.3359 -40.8574 -122.505 -40.8574\nc-67.373 0 -111.629 34.7832 -165.218 34.7832c-50.8525 0 -86.124 -10.0586 -114.435 -22.1221v-94.4004c0 -13.2549 -10.7451 -24 -24 -24h-16c-13.2549 0 -24 10.7451 -24 24v386.055c-14.5029 10.1201 -24 26.9189 -24 45.9453\nc0 31.7041 26.3447 57.2539 58.3379 55.9521c28.4678 -1.1582 51.7793 -23.9668 53.5508 -52.4033c0.0625 -0.980469 0.113281 -2.57324 0.113281 -3.55566c0 -5.71094 -1.65723 -14.6738 -3.69922 -20.0059c20.7363 7.62891 43.0898 12.0127 68.0449 12.0127\nc67.373 0 111.63 -34.7832 165.218 -34.7832z\" />\n    <glyph glyph-name=\"headphones\" unicode=\"&#xf025;\" \nd=\"M256 416c141.504 0 256 -114.521 256 -256v-48c0 -10.917 -7.9248 -23.7402 -17.6904 -28.6221l-14.3818 -7.19141c-2.01074 -60.0889 -51.3486 -108.187 -111.928 -108.187h-24c-13.2549 0 -24 10.7451 -24 24v176c0 13.2549 10.7451 24 24 24h24\nc31.3418 0 59.6709 -12.8789 80 -33.627v1.62695c0 105.869 -86.1309 192 -192 192s-192 -86.1309 -192 -192v-1.62695c20.3291 20.748 48.6582 33.627 80 33.627h24c13.2549 0 24 -10.7451 24 -24v-176c0 -13.2549 -10.7451 -24 -24 -24h-24\nc-60.5791 0 -109.917 48.0967 -111.928 108.187l-14.3828 7.19141c-9.76465 4.88184 -17.6895 17.7051 -17.6895 28.6221v0v48c0 141.504 114.52 256 256 256z\" />\n    <glyph glyph-name=\"volume-off\" unicode=\"&#xf026;\" horiz-adv-x=\"256\" \nd=\"M215 377c15 15 41 4.46973 41 -17v-336c0 -21.4697 -26 -32 -41 -17l-88.9404 89h-102.06c-13.248 0 -24 10.752 -24 24v144c0 13.248 10.752 24 24 24h102z\" />\n    <glyph glyph-name=\"volume-down\" unicode=\"&#xf027;\" horiz-adv-x=\"384\" \nd=\"M215.03 375.96c15.0098 15 40.9697 4.49023 40.9697 -16.9795v-335.961c0 -21.4395 -25.9404 -32 -40.9697 -16.9697l-88.9707 88.9502h-102.06c-13.2598 0 -24 10.75 -24 24v144c0 13.2598 10.7402 24 24 24h102.06zM338.23 267.88\nc28.2393 -15.5498 45.7793 -44.9902 45.7793 -76.8701s-17.54 -61.3301 -45.7695 -76.8799c-11.5605 -6.34961 -26.1807 -2.20996 -32.6104 9.4502c-6.38965 11.6104 -2.16016 26.2002 9.4502 32.6104c12.9004 7.08984 20.9199 20.4297 20.9199 34.8096\ns-8.01953 27.7197 -20.9297 34.8203c-11.6104 6.41016 -15.8398 21 -9.4502 32.6094c6.41992 11.6104 21.0303 15.7803 32.6104 9.4502z\" />\n    <glyph glyph-name=\"volume-up\" unicode=\"&#xf028;\" horiz-adv-x=\"576\" \nd=\"M215.03 376.95c15.0098 15.0098 40.9697 4.49023 40.9697 -16.9697v-335.961c0 -21.4395 -25.9404 -32 -40.9697 -16.9697l-88.9707 88.9502h-102.06c-13.2598 0 -24 10.75 -24 24v144c0 13.2598 10.7402 24 24 24h102.06zM448.35 428.03\nc79.9199 -52.46 127.65 -140.7 127.65 -236.03s-47.7305 -183.58 -127.65 -236.04c-11.5801 -7.61035 -26.4697 -3.75977 -33.5098 6.9502c-7.33984 11.1602 -4.21973 26.1797 6.9502 33.5c66.2695 43.4902 105.82 116.6 105.82 195.58\nc0 78.9795 -39.5508 152.09 -105.82 195.58c-11.1699 7.33008 -14.29 22.3398 -6.9502 33.5098c7.33008 11.1895 22.3398 14.2803 33.5098 6.9502zM480 192c0 -63.54 -32.0596 -121.94 -85.7695 -156.24c-12 -7.67969 -26.6104 -2.89941 -33.1201 7.45996\nc-7.09082 11.29 -3.78027 26.2207 7.40918 33.3604c39.75 25.3896 63.4805 68.5303 63.4805 115.42s-23.7305 90.0303 -63.4805 115.42c-11.1895 7.15039 -14.5 22.0801 -7.40918 33.3604c7.08984 11.2793 21.9297 14.5996 33.1201 7.45996\nc53.71 -34.2998 85.7695 -92.71 85.7695 -156.24zM338.23 268.87c28.2393 -15.54 45.7793 -44.9805 45.7793 -76.8604s-17.54 -61.3301 -45.7695 -76.8799c-11.5605 -6.34961 -26.1807 -2.20996 -32.6104 9.4502c-6.38965 11.6104 -2.16016 26.2002 9.4502 32.6104\nc12.9004 7.08984 20.9199 20.4297 20.9199 34.8096c0 14.3701 -8.01953 27.7197 -20.9297 34.8096c-11.6104 6.41016 -15.8398 21 -9.4502 32.6104c6.41992 11.6104 21.0303 15.7803 32.6104 9.4502z\" />\n    <glyph glyph-name=\"qrcode\" unicode=\"&#xf029;\" horiz-adv-x=\"448\" \nd=\"M0 224v192h192v-192h-192zM64 352v-64h64v64h-64zM256 416h192v-192h-192v192zM384 288v64h-64v-64h64zM0 -32v192h192v-192h-192zM64 96v-64h64v64h-64zM416 160h32v-128h-96v32h-32v-96h-64v192h96v-32h64v32zM416 0h32v-32h-32v32zM352 0h32v-32h-32v32z\" />\n    <glyph glyph-name=\"barcode\" unicode=\"&#xf02a;\" \nd=\"M0 0v384h18v-384h-18zM26.8574 0.273438v383.727h9.14258v-383.727h-9.14258zM54 0.273438v383.727h8.85742v-383.727h-8.85742zM98.8574 0.273438v383.727h8.85645v-383.727h-8.85645zM134.857 0.273438v383.727h17.7139v-383.727h-17.7139zM179.714 0.273438v383.727\nh8.85742v-383.727h-8.85742zM197.714 0.273438v383.727h8.85742v-383.727h-8.85742zM215.714 0.273438v383.727h8.85742v-383.727h-8.85742zM251.429 0.273438v383.727h18v-383.727h-18zM296.286 0.273438v383.727h18v-383.727h-18zM332.285 0.273438v383.727h18.001\nv-383.727h-18.001zM368.286 0.273438v383.727h18.001v-383.727h-18.001zM395.143 0.273438v383.727h18v-383.727h-18zM440.286 0.273438v383.727h26.8564v-383.727h-26.8564zM476 0.273438v383.727h9.14258v-383.727h-9.14258zM494 0v384h18v-384h-18z\" />\n    <glyph glyph-name=\"tag\" unicode=\"&#xf02b;\" \nd=\"M0 195.882v204.118c0 26.5098 21.4902 48 48 48h204.118c10.9746 0 26.1807 -6.29883 33.9404 -14.0586l211.883 -211.883c18.7441 -18.7441 18.7441 -49.1367 0 -67.8818l-204.118 -204.118c-18.7451 -18.7441 -49.1377 -18.7441 -67.8818 0l-211.883 211.883\nc-7.75977 7.75977 -14.0586 22.9658 -14.0586 33.9404zM112 384c-26.5098 0 -48 -21.4902 -48 -48s21.4902 -48 48 -48s48 21.4902 48 48s-21.4902 48 -48 48z\" />\n    <glyph glyph-name=\"tags\" unicode=\"&#xf02c;\" horiz-adv-x=\"640\" \nd=\"M497.941 222.059c18.7441 -18.7441 18.7441 -49.1367 0 -67.8818l-204.118 -204.118c-18.7461 -18.7451 -49.1387 -18.7441 -67.8818 0l-211.883 211.883c-7.75977 7.75977 -14.0586 22.9658 -14.0586 33.9404v204.118c0 26.5098 21.4902 48 48 48h204.118\nc10.9746 0 26.1807 -6.29883 33.9404 -14.0586zM112 288c26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48s-48 -21.4902 -48 -48s21.4902 -48 48 -48zM625.941 154.177l-204.118 -204.118c-18.7451 -18.7441 -49.1377 -18.7441 -67.8818 0l-0.360352 0.360352\nl174.059 174.059c16.999 16.999 26.3604 39.6006 26.3604 63.6406s-9.3623 46.6406 -26.3604 63.6396l-196.242 196.242h48.7207c10.9746 0 26.1807 -6.29883 33.9404 -14.0586l211.883 -211.883c18.7441 -18.7441 18.7441 -49.1367 0 -67.8818z\" />\n    <glyph glyph-name=\"book\" unicode=\"&#xf02d;\" horiz-adv-x=\"448\" \nd=\"M448 88c0 -7.5 -3.5 -14.2998 -8.90039 -18.5996c-4.19922 -15.4004 -4.19922 -59.3008 0 -74.7002c5.40039 -4.40039 8.90039 -11.2002 8.90039 -18.7002v-16c0 -13.2998 -10.7002 -24 -24 -24h-328c-53 0 -96 43 -96 96v320c0 53 43 96 96 96h328\nc13.2998 0 24 -10.7002 24 -24v-336zM128 314v-20c0 -3.2998 2.7002 -6 6 -6h212c3.2998 0 6 2.7002 6 6v20c0 3.2998 -2.7002 6 -6 6h-212c-3.2998 0 -6 -2.7002 -6 -6zM128 250v-20c0 -3.2998 2.7002 -6 6 -6h212c3.2998 0 6 2.7002 6 6v20c0 3.2998 -2.7002 6 -6 6h-212\nc-3.2998 0 -6 -2.7002 -6 -6zM381.4 0c-1.90039 17.0996 -1.90039 46.9004 0 64h-285.4c-17.5996 0 -32 -14.4004 -32 -32c0 -17.7002 14.2998 -32 32 -32h285.4z\" />\n    <glyph glyph-name=\"bookmark\" unicode=\"&#xf02e;\" horiz-adv-x=\"384\" \nd=\"M0 -64v464c0 26.5098 21.4902 48 48 48h288c26.5098 0 48 -21.4902 48 -48v-464l-192 112z\" />\n    <glyph glyph-name=\"print\" unicode=\"&#xf02f;\" \nd=\"M448 256c35.3496 0 64 -28.6504 64 -64v-112c0 -8.83984 -7.16016 -16 -16 -16h-48v-96c0 -17.6699 -14.3301 -32 -32 -32h-320c-17.6699 0 -32 14.3301 -32 32v96h-48c-8.83984 0 -16 7.16016 -16 16v112c0 35.3496 28.6504 64 64 64v160c0 17.6699 14.3301 32 32 32\nh274.74c8.49023 0 16.6299 -3.37012 22.6299 -9.37012l45.2598 -45.25c6 -6.00977 9.37012 -14.1396 9.37012 -22.6299v-114.75zM384 0v96h-256v-96h256zM384 224v96h-48c-8.83984 0 -16 7.16016 -16 16v48h-192v-160h256zM432 152c13.25 0 24 10.75 24 24\nc0 13.2598 -10.75 24 -24 24s-24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24z\" />\n    <glyph glyph-name=\"camera\" unicode=\"&#xf030;\" \nd=\"M512 304v-288c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v288c0 26.5 21.5 48 48 48h88l12.2998 32.9004c7 18.6992 24.9004 31.0996 44.9004 31.0996h125.5c20 0 37.8994 -12.4004 44.8994 -31.0996l12.4004 -32.9004h88c26.5 0 48 -21.5 48 -48zM376 160\nc0 66.2002 -53.7998 120 -120 120s-120 -53.7998 -120 -120s53.7998 -120 120 -120s120 53.7998 120 120zM344 160c0 -48.5 -39.5 -88 -88 -88s-88 39.5 -88 88s39.5 88 88 88s88 -39.5 88 -88z\" />\n    <glyph glyph-name=\"font\" unicode=\"&#xf031;\" horiz-adv-x=\"448\" \nd=\"M432 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-128c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h19.5801l-23.2998 64h-152.561l-23.2998 -64h19.5801c8.83203 0 16 -7.16797 16 -16v-32\nc0 -8.83203 -7.16797 -16 -16 -16h-128c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h23.4102l130.71 362.31c4.07422 11.9736 17.6465 21.6904 30.2939 21.6904h0.00585938h47.1602h0.00585938c12.6475 0 26.2197 -9.7168 30.2939 -21.6904\nl130.71 -362.31h23.4102zM176.85 176h94.3008l-47.1504 129.49z\" />\n    <glyph glyph-name=\"bold\" unicode=\"&#xf032;\" horiz-adv-x=\"384\" \nd=\"M333.49 210c34.4395 -27.54 55.5693 -71.1504 50.8301 -119.6c-6.86035 -70.6504 -70.2002 -122.4 -141 -122.4h-209.32c-8.83203 0 -16 7.16797 -16 16v48c0 8.83203 7.16797 16 16 16h31.8701v288h-31.8701c-8.83203 0 -16 7.16797 -16 16v48\nc0 8.83203 7.16797 16 16 16h199.42c74.5801 0 134.45 -64.4902 127.07 -140.79c-2.01367 -20.25 -14.1094 -49.4639 -27 -65.21zM145.66 336v-96h87.7598c26.4961 0 48 21.5039 48 48s-21.5039 48 -48 48h-87.7598zM233.42 48c30.9121 0 56 25.0879 56 56\ns-25.0879 56 -56 56h-87.7598v-112h87.7598z\" />\n    <glyph glyph-name=\"italic\" unicode=\"&#xf033;\" horiz-adv-x=\"320\" \nd=\"M320 400v-32c0 -8.83203 -7.16797 -16 -16 -16h-62.7598l-80 -320h46.7598c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-192c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h62.7598l80 320h-46.7598\nc-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h192c8.83203 0 16 -7.16797 16 -16z\" />\n    <glyph glyph-name=\"text-height\" unicode=\"&#xf034;\" horiz-adv-x=\"576\" \nd=\"M304 416c8.83203 0 16 -7.16797 16 -16v-96c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32h-56v-304h40c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-160c-8.83203 0 -16 7.16797 -16 16v32\nc0 8.83203 7.16797 16 16 16h40v304h-56v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v96c0 8.83203 7.16797 16 16 16h288zM560 80c15.6396 0 20.6396 -18 11.3096 -27.3096l-80 -80c-2.58594 -2.58496 -7.65332 -4.68262 -11.3096 -4.68262\ns-8.72363 2.09766 -11.3096 4.68262l-80 80c-10.0107 10 -3 27.3096 11.3096 27.3096h48v224h-48c-15.6396 0 -20.6396 18 -11.3096 27.3096l80 80c2.58594 2.58496 7.65332 4.68262 11.3096 4.68262s8.72363 -2.09766 11.3096 -4.68262l80 -80\nc10.0205 -10 3 -27.3096 -11.3096 -27.3096h-48v-224h48z\" />\n    <glyph glyph-name=\"text-width\" unicode=\"&#xf035;\" horiz-adv-x=\"448\" \nd=\"M432 416c8.83203 0 16 -7.16797 16 -16v-80c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v16h-120v-112h24c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-128c-8.83203 0 -16 7.16797 -16 16v32\nc0 8.83203 7.16797 16 16 16h24v112h-120v-16c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v80c0 8.83203 7.16797 16 16 16h416zM363.31 155.31l80 -80c2.58496 -2.58594 4.68262 -7.65332 4.68262 -11.3096s-2.09766 -8.72363 -4.68262 -11.3096\nl-80 -80c-10 -10.0205 -27.3096 -3 -27.3096 11.3096v48h-224v-48c0 -15.6396 -18 -20.6396 -27.3096 -11.3096l-80 80c-2.58496 2.58594 -4.68262 7.65332 -4.68262 11.3096s2.09766 8.72363 4.68262 11.3096l80 80c10 10.0107 27.3096 3 27.3096 -11.3096v-48h224v48\nc0 15.6396 18 20.6396 27.3096 11.3096z\" />\n    <glyph glyph-name=\"align-left\" unicode=\"&#xf036;\" horiz-adv-x=\"448\" \nd=\"M12.8301 96c-7.07715 0 -12.8301 5.74316 -12.8301 12.8203v0.00976562v38.3398v0.00976562c0 7.07715 5.74316 12.8203 12.8203 12.8203h0.00976562h262.34h0.00976562c7.07715 0 12.8203 -5.74316 12.8203 -12.8203v-0.00976562v-38.3398v-0.00976562\nc0 -7.07715 -5.74316 -12.8203 -12.8203 -12.8203h-0.00976562h-262.34zM12.8301 352c-7.07715 0 -12.8301 5.74316 -12.8301 12.8203v0.00976562v38.3398v0.00976562c0 7.07715 5.74316 12.8203 12.8203 12.8203h0.00976562h262.34h0.00976562\nc7.07715 0 12.8203 -5.74316 12.8203 -12.8203v-0.00976562v-38.3398v-0.00976562c0 -7.07715 -5.74316 -12.8203 -12.8203 -12.8203h-0.00976562h-262.34zM432 288c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16\nv32c0 8.83203 7.16797 16 16 16h416zM432 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h416z\" />\n    <glyph glyph-name=\"align-center\" unicode=\"&#xf037;\" horiz-adv-x=\"448\" \nd=\"M432 288c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h416zM432 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16\nv32c0 8.83203 7.16797 16 16 16h416zM108.1 352c-6.67871 0 -12.0996 5.4209 -12.0996 12.0996v39.8105c0 6.67383 5.41602 12.0898 12.0898 12.0898h0.00976562h231.811c6.67383 0 12.0898 -5.41602 12.0898 -12.0898v-39.8105v-0.00976562\nc0 -6.67383 -5.41602 -12.0898 -12.0898 -12.0898v0h-231.811zM339.91 96h-231.811c-6.67871 0 -12.0996 5.4209 -12.0996 12.0996v39.8105c0 6.67383 5.41602 12.0898 12.0898 12.0898h0.00976562h231.811c6.67383 0 12.0898 -5.41602 12.0898 -12.0898v-39.8105\nv-0.00976562c0 -6.67383 -5.41602 -12.0898 -12.0898 -12.0898v0z\" />\n    <glyph glyph-name=\"align-right\" unicode=\"&#xf038;\" horiz-adv-x=\"448\" \nd=\"M16 224c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h416c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-416zM432 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16\nv32c0 8.83203 7.16797 16 16 16h416zM435.17 416c7.07715 0 12.8301 -5.74316 12.8301 -12.8203v-0.00976562v-38.3398v-0.00976562c0 -7.07715 -5.74316 -12.8203 -12.8203 -12.8203h-0.00976562h-262.34h-0.00976562c-7.07715 0 -12.8203 5.74316 -12.8203 12.8203\nv0.00976562v38.3398v0.00976562c0 7.07715 5.74316 12.8203 12.8203 12.8203h0.00976562h262.34zM435.17 160c7.07715 0 12.8301 -5.74316 12.8301 -12.8203v-0.00976562v-38.3398v-0.00976562c0 -7.07715 -5.74316 -12.8203 -12.8203 -12.8203h-0.00976562h-262.34\nh-0.00976562c-7.07715 0 -12.8203 5.74316 -12.8203 12.8203v0.00976562v38.3398v0.00976562c0 7.07715 5.74316 12.8203 12.8203 12.8203h0.00976562h262.34z\" />\n    <glyph glyph-name=\"align-justify\" unicode=\"&#xf039;\" horiz-adv-x=\"448\" \nd=\"M432 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h416zM432 160c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16\nv32c0 8.83203 7.16797 16 16 16h416zM432 288c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h416zM432 416c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16\nh-416c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h416z\" />\n    <glyph glyph-name=\"list\" unicode=\"&#xf03a;\" \nd=\"M80 80c8.83203 0 16 -7.16797 16 -16v-64c0 -8.83203 -7.16797 -16 -16 -16h-64c-8.83203 0 -16 7.16797 -16 16v64c0 8.83203 7.16797 16 16 16h64zM80 400c8.83203 0 16 -7.16797 16 -16v-64c0 -8.83203 -7.16797 -16 -16 -16h-64c-8.83203 0 -16 7.16797 -16 16v64\nc0 8.83203 7.16797 16 16 16h64zM80 240c8.83203 0 16 -7.16797 16 -16v-64c0 -8.83203 -7.16797 -16 -16 -16h-64c-8.83203 0 -16 7.16797 -16 16v64c0 8.83203 7.16797 16 16 16h64zM496 64c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-320\nc-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h320zM496 384c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-320c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h320zM496 224c8.83203 0 16 -7.16797 16 -16v-32\nc0 -8.83203 -7.16797 -16 -16 -16h-320c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h320z\" />\n    <glyph glyph-name=\"outdent\" unicode=\"&#xf03b;\" horiz-adv-x=\"448\" \nd=\"M100.69 84.71l-96 95.9805c-2.58496 2.58594 -4.68262 7.65332 -4.68262 11.3096s2.09766 8.72363 4.68262 11.3096l96 96c9.97949 10 27.3096 3.01074 27.3096 -11.3096v-191.98c0 -14.2393 -17.3096 -21.3096 -27.3096 -11.3096zM432 32c8.83203 0 16 -7.16797 16 -16\nv-32c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h416zM435.17 160c7.07715 0 12.8301 -5.74316 12.8301 -12.8203v-0.00976562v-38.3398v-0.00976562c0 -7.07715 -5.74316 -12.8203 -12.8203 -12.8203h-0.00976562\nh-230.34h-0.00976562c-7.07715 0 -12.8203 5.74316 -12.8203 12.8203v0.00976562v38.3398v0.00976562c0 7.07715 5.74316 12.8203 12.8203 12.8203h0.00976562h230.34zM435.17 288c7.07715 0 12.8301 -5.74316 12.8301 -12.8203v-0.00976562v-38.3398v-0.00976562\nc0 -7.07715 -5.74316 -12.8203 -12.8203 -12.8203h-0.00976562h-230.34h-0.00976562c-7.07715 0 -12.8203 5.74316 -12.8203 12.8203v0.00976562v38.3398v0.00976562c0 7.07715 5.74316 12.8203 12.8203 12.8203h0.00976562h230.34zM432 416c8.83203 0 16 -7.16797 16 -16\nv-32c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h416z\" />\n    <glyph glyph-name=\"indent\" unicode=\"&#xf03c;\" horiz-adv-x=\"448\" \nd=\"M27.3096 84.7002c-9.97949 -10 -27.3096 -3.00977 -27.3096 11.2998v192c0 14.2197 17.2695 21.3398 27.3096 11.3203l96 -96c2.58496 -2.58691 4.68262 -7.65332 4.68262 -11.3105c0 -3.65625 -2.09766 -8.72363 -4.68262 -11.3096zM432 32\nc8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h416zM435.17 160c7.07715 0 12.8301 -5.74316 12.8301 -12.8203v-0.00976562v-38.3398v-0.00976562\nc0 -7.07715 -5.74316 -12.8203 -12.8203 -12.8203h-0.00976562h-230.34h-0.00976562c-7.07715 0 -12.8203 5.74316 -12.8203 12.8203v0.00976562v38.3398v0.00976562c0 7.07715 5.74316 12.8203 12.8203 12.8203h0.00976562h230.34zM435.17 288\nc7.07715 0 12.8301 -5.74316 12.8301 -12.8203v-0.00976562v-38.3398v-0.00976562c0 -7.07715 -5.74316 -12.8203 -12.8203 -12.8203h-0.00976562h-230.34h-0.00976562c-7.07715 0 -12.8203 5.74316 -12.8203 12.8203v0.00976562v38.3398v0.00976562\nc0 7.07715 5.74316 12.8203 12.8203 12.8203h0.00976562h230.34zM432 416c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h416z\" />\n    <glyph glyph-name=\"video\" unicode=\"&#xf03d;\" horiz-adv-x=\"576\" \nd=\"M336.2 384c26.3994 0 47.7998 -21.4004 47.7998 -47.7998v-288.4c0 -26.3994 -21.4004 -47.7998 -47.7998 -47.7998h-288.4c-26.3994 0 -47.7998 21.4004 -47.7998 47.7998v288.4c0 26.3994 21.4004 47.7998 47.7998 47.7998h288.4zM525.6 346.3\nc21.3008 14.6006 50.4004 -0.399414 50.4004 -25.7998v-256.9c0 -25.5 -29.2002 -40.3994 -50.4004 -25.7998l-109.6 75.5v157.4z\" />\n    <glyph glyph-name=\"image\" unicode=\"&#xf03e;\" \nd=\"M464 0h-416c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h416c26.5098 0 48 -21.4902 48 -48v-288c0 -26.5098 -21.4902 -48 -48 -48zM112 328c-30.9277 0 -56 -25.0723 -56 -56s25.0723 -56 56 -56s56 25.0723 56 56s-25.0723 56 -56 56zM64 64h384\nv112l-87.5146 87.5146c-4.68652 4.68652 -12.2842 4.68652 -16.9717 0l-135.514 -135.515l-55.5146 55.5146c-4.68652 4.68652 -12.2842 4.68652 -16.9717 0l-71.5137 -71.5146v-48z\" />\n    <glyph glyph-name=\"map-marker\" unicode=\"&#xf041;\" horiz-adv-x=\"384\" \nd=\"M172.268 -53.6699c-145.298 210.639 -172.268 232.257 -172.268 309.67c0 106.039 85.9609 192 192 192s192 -85.9609 192 -192c0 -77.4131 -26.9697 -99.0312 -172.268 -309.67c-9.53516 -13.7744 -29.9307 -13.7734 -39.4648 0z\" />\n    <glyph glyph-name=\"adjust\" unicode=\"&#xf042;\" \nd=\"M8 192c0 136.967 111.034 248 248 248s248 -111.034 248 -248s-111.033 -248 -248 -248s-248 111.034 -248 248zM256 8c101.689 0 184 82.2949 184 184c0 101.689 -82.2949 184 -184 184v-368z\" />\n    <glyph glyph-name=\"tint\" unicode=\"&#xf043;\" horiz-adv-x=\"352\" \nd=\"M205.22 425.91c46.9902 -158.48 146.78 -200.07 146.78 -311.82c0 -98.4395 -78.7197 -178.09 -176 -178.09s-176 79.6504 -176 178.09c0 111.19 100.01 154.061 146.78 311.82c9 30.1201 50.5 28.7803 58.4395 0zM176 0c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16\nc-44.1104 0 -80 35.8896 -80 80c0 8.83984 -7.16016 16 -16 16s-16 -7.16016 -16 -16c0 -61.75 50.25 -112 112 -112z\" />\n    <glyph glyph-name=\"edit\" unicode=\"&#xf044;\" horiz-adv-x=\"576\" \nd=\"M402.6 364.8l90.2002 -90.2002c3.7998 -3.7998 3.7998 -10 0 -13.7998l-218.399 -218.399l-92.8008 -10.3008c-12.3994 -1.39941 -22.8994 9.10059 -21.5 21.5l10.3008 92.8008l218.399 218.399c3.7998 3.7998 10 3.7998 13.7998 0zM564.6 387.7\nc15.2002 -15.2002 15.2002 -39.9004 0 -55.2002l-35.3994 -35.4004c-3.7998 -3.7998 -10 -3.7998 -13.7998 0l-90.2002 90.2002c-3.7998 3.7998 -3.7998 10 0 13.7998l35.3994 35.4004c15.3008 15.2002 40 15.2002 55.2002 0zM384 101.8c0 3.2002 1.2998 6.2002 3.5 8.5\nl40 40c7.59961 7.5 20.5 2.2002 20.5 -8.5v-157.8c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h285.8c10.7002 0 16.1006 -12.9004 8.5 -20.5l-40 -40c-2.2998 -2.2002 -5.2998 -3.5 -8.5 -3.5h-229.8v-320h320v101.8z\" />\n    <glyph glyph-name=\"step-backward\" unicode=\"&#xf048;\" horiz-adv-x=\"448\" \nd=\"M64 -20v424c0 6.59961 5.40039 12 12 12h48c6.59961 0 12 -5.40039 12 -12v-176.4l195.5 181c20.5996 17.1006 52.5 2.80078 52.5 -24.5996v-384c0 -27.4004 -31.9004 -41.7002 -52.5 -24.5996l-195.5 179.899v-175.3c0 -6.59961 -5.40039 -12 -12 -12h-48\nc-6.59961 0 -12 5.40039 -12 12z\" />\n    <glyph glyph-name=\"fast-backward\" unicode=\"&#xf049;\" \nd=\"M0 12v360c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-151.9l171.5 156.5c20.5996 17.1006 52.5 2.80078 52.5 -24.5996v-131.9l171.5 156.5c20.5996 17.1006 52.5 2.80078 52.5 -24.5996v-320c0 -27.4004 -31.9004 -41.7002 -52.5 -24.5996\nl-171.5 155.3v-130.7c0 -27.4004 -31.9004 -41.7002 -52.5 -24.5996l-171.5 155.3v-150.7c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12z\" />\n    <glyph glyph-name=\"backward\" unicode=\"&#xf04a;\" \nd=\"M11.5 167.4c-15.2998 12.7998 -15.2998 36.3994 0 49.1992l192 160c20.5996 17.2002 52.5 2.80078 52.5 -24.5996v-320c0 -27.4004 -31.9004 -41.7998 -52.5 -24.5996zM267.5 167.4c-15.2998 12.7998 -15.2998 36.3994 0 49.1992l192 160\nc20.5996 17.2002 52.5 2.80078 52.5 -24.5996v-320c0 -27.4004 -31.9004 -41.7998 -52.5 -24.5996z\" />\n    <glyph glyph-name=\"play\" unicode=\"&#xf04b;\" horiz-adv-x=\"448\" \nd=\"M424.4 233.3c31.5 -18.5 31.3994 -64.0996 0 -82.5996l-352 -208c-31.7002 -18.7998 -72.4004 3.7998 -72.4004 41.2998v416.1c0 41.8008 43.7998 58.2002 72.4004 41.3008z\" />\n    <glyph glyph-name=\"pause\" unicode=\"&#xf04c;\" horiz-adv-x=\"448\" \nd=\"M144 -31h-96c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h96c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48zM448 17c0 -26.5 -21.5 -48 -48 -48h-96c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h96c26.5 0 48 -21.5 48 -48v-352z\" />\n    <glyph glyph-name=\"stop\" unicode=\"&#xf04d;\" horiz-adv-x=\"448\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352z\" />\n    <glyph glyph-name=\"forward\" unicode=\"&#xf04e;\" \nd=\"M500.5 216.6c15.2998 -12.7998 15.2998 -36.3994 0 -49.1992l-192 -160c-20.5996 -17.2002 -52.5 -2.80078 -52.5 24.5996v320c0 27.4004 31.9004 41.7002 52.5 24.5996zM244.5 216.6c15.2998 -12.7998 15.2998 -36.3994 0 -49.1992l-192 -160\nc-20.5996 -17.2002 -52.5 -2.80078 -52.5 24.5996v320c0 27.4004 31.9004 41.7002 52.5 24.5996z\" />\n    <glyph glyph-name=\"fast-forward\" unicode=\"&#xf050;\" \nd=\"M512 372v-360c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v151.9l-171.5 -156.5c-20.5996 -17.2002 -52.5 -2.80078 -52.5 24.5996v131.9l-171.5 -156.5c-20.5996 -17.2002 -52.5 -2.80078 -52.5 24.5996v320\nc0 27.4004 31.9004 41.7002 52.5 24.5996l171.5 -155.399v130.8c0 27.4004 31.9004 41.7002 52.5 24.5996l171.5 -155.399v150.8c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12z\" />\n    <glyph glyph-name=\"step-forward\" unicode=\"&#xf051;\" horiz-adv-x=\"448\" \nd=\"M384 404v-424c0 -6.59961 -5.40039 -12 -12 -12h-48c-6.59961 0 -12 5.40039 -12 12v176.4l-195.5 -181c-20.5996 -17.1006 -52.5 -2.80078 -52.5 24.5996v384c0 27.4004 31.9004 41.7002 52.5 24.5996l195.5 -179.899v175.3c0 6.59961 5.40039 12 12 12h48\nc6.59961 0 12 -5.40039 12 -12z\" />\n    <glyph glyph-name=\"eject\" unicode=\"&#xf052;\" horiz-adv-x=\"448\" \nd=\"M448 64v-64c0 -17.6729 -14.3271 -32 -32 -32h-384c-17.6729 0 -32 14.3271 -32 32v64c0 17.6729 14.3271 32 32 32h384c17.6729 0 32 -14.3271 32 -32zM48.0527 128c-41.7285 0 -63.5273 49.7324 -35.3828 80.4346l175.946 192.008\nc19.0156 20.7432 51.7529 20.7422 70.7666 0l175.939 -192.008c28.1973 -30.7607 6.26758 -80.4346 -35.3828 -80.4346h-351.887z\" />\n    <glyph glyph-name=\"chevron-left\" unicode=\"&#xf053;\" horiz-adv-x=\"320\" \nd=\"M34.5195 208.97l194.351 194.34c9.37012 9.37012 24.5703 9.37012 33.9395 0l22.6709 -22.6699c9.35938 -9.35938 9.36914 -24.5195 0.0390625 -33.8994l-154.029 -154.74l154.02 -154.75c9.33984 -9.37988 9.32031 -24.54 -0.0400391 -33.9004l-22.6699 -22.6699\nc-9.37012 -9.37012 -24.5693 -9.37012 -33.9395 0l-194.341 194.351c-9.36914 9.37012 -9.36914 24.5693 0 33.9395z\" />\n    <glyph glyph-name=\"chevron-right\" unicode=\"&#xf054;\" horiz-adv-x=\"320\" \nd=\"M285.476 175.029l-194.344 -194.344c-9.37305 -9.37207 -24.5684 -9.37207 -33.9404 0l-22.667 22.667c-9.35742 9.35742 -9.375 24.5225 -0.0400391 33.9014l154.021 154.746l-154.021 154.745c-9.33496 9.37891 -9.31738 24.5439 0.0400391 33.9014l22.667 22.667\nc9.37305 9.37207 24.5684 9.37207 33.9404 0l194.343 -194.344c9.37305 -9.37207 9.37305 -24.5674 0.000976562 -33.9404z\" />\n    <glyph glyph-name=\"plus-circle\" unicode=\"&#xf055;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM400 164v56c0 6.59961 -5.40039 12 -12 12h-92v92c0 6.59961 -5.40039 12 -12 12h-56c-6.59961 0 -12 -5.40039 -12 -12v-92h-92c-6.59961 0 -12 -5.40039 -12 -12v-56\nc0 -6.59961 5.40039 -12 12 -12h92v-92c0 -6.59961 5.40039 -12 12 -12h56c6.59961 0 12 5.40039 12 12v92h92c6.59961 0 12 5.40039 12 12z\" />\n    <glyph glyph-name=\"minus-circle\" unicode=\"&#xf056;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM124 152h264c6.59961 0 12 5.40039 12 12v56c0 6.59961 -5.40039 12 -12 12h-264c-6.59961 0 -12 -5.40039 -12 -12v-56c0 -6.59961 5.40039 -12 12 -12z\" />\n    <glyph glyph-name=\"times-circle\" unicode=\"&#xf057;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM377.6 126.9l-65.5996 65.0996l65.7002 65c4.7002 4.7002 4.7002 12.2998 0 17l-39.6006 39.5996c-4.69922 4.7002 -12.2998 4.7002 -17 0l-65.0996 -65.5996l-65 65.7002\nc-4.7002 4.7002 -12.2998 4.7002 -17 0l-39.5996 -39.6006c-4.7002 -4.69922 -4.7002 -12.2998 0 -17l65.5996 -65.0996l-65.5996 -65c-4.7002 -4.7002 -4.7002 -12.2998 0 -17l39.5 -39.5996c4.69922 -4.7002 12.2998 -4.7002 17 0l65.0996 65.5996l65 -65.5996\nc4.7002 -4.7002 12.2998 -4.7002 17 0l39.5996 39.5c4.7002 4.69922 4.7002 12.2998 0 17z\" />\n    <glyph glyph-name=\"check-circle\" unicode=\"&#xf058;\" \nd=\"M504 192c0 -136.967 -111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248s248 -111.033 248 -248zM227.314 60.6855l184 184c6.24707 6.24805 6.24707 16.3799 0 22.6279l-22.6279 22.627c-6.24707 6.24902 -16.3789 6.24902 -22.6279 0\nl-150.059 -150.059l-70.0586 70.0596c-6.24805 6.24805 -16.3799 6.24805 -22.6279 0l-22.6279 -22.627c-6.24707 -6.24805 -6.24707 -16.3799 0 -22.6279l104 -104c6.24902 -6.24805 16.3799 -6.24805 22.6289 -0.000976562z\" />\n    <glyph glyph-name=\"question-circle\" unicode=\"&#xf059;\" \nd=\"M504 192c0 -136.997 -111.043 -248 -248 -248s-248 111.003 -248 248c0 136.917 111.043 248 248 248s248 -111.083 248 -248zM262.655 358c-54.4971 0 -89.2549 -22.957 -116.549 -63.7578c-3.53613 -5.28613 -2.35352 -12.415 2.71484 -16.2578l34.6982 -26.3105\nc5.20508 -3.94727 12.6211 -3.00781 16.665 2.12207c17.8643 22.6582 30.1133 35.7969 57.3037 35.7969c20.4287 0 45.6973 -13.1475 45.6973 -32.958c0 -14.9756 -12.3623 -22.667 -32.5332 -33.9756c-23.5244 -13.1875 -54.6523 -29.6006 -54.6523 -70.6592v-4\nc0 -6.62695 5.37305 -12 12 -12h56c6.62695 0 12 5.37305 12 12v1.33301c0 28.4619 83.1855 29.6475 83.1855 106.667c0 58.002 -60.1641 102 -116.53 102zM256 110c-25.3652 0 -46 -20.6348 -46 -46c0 -25.3643 20.6348 -46 46 -46s46 20.6357 46 46\nc0 25.3652 -20.6348 46 -46 46z\" />\n    <glyph glyph-name=\"info-circle\" unicode=\"&#xf05a;\" \nd=\"M256 440c136.957 0 248 -111.083 248 -248c0 -136.997 -111.043 -248 -248 -248s-248 111.003 -248 248c0 136.917 111.043 248 248 248zM256 330c-23.1963 0 -42 -18.8037 -42 -42s18.8037 -42 42 -42s42 18.8037 42 42s-18.8037 42 -42 42zM312 76v24\nc0 6.62695 -5.37305 12 -12 12h-12v100c0 6.62695 -5.37305 12 -12 12h-64c-6.62695 0 -12 -5.37305 -12 -12v-24c0 -6.62695 5.37305 -12 12 -12h12v-64h-12c-6.62695 0 -12 -5.37305 -12 -12v-24c0 -6.62695 5.37305 -12 12 -12h88c6.62695 0 12 5.37305 12 12z\" />\n    <glyph glyph-name=\"crosshairs\" unicode=\"&#xf05b;\" \nd=\"M500 224c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-30.3643c-13.9121 -93.6748 -87.9609 -167.724 -181.636 -181.636v-30.3643c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v30.3643\nc-93.6748 13.9121 -167.724 87.9609 -181.636 181.636h-30.3643c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h30.3643c13.9121 93.6748 87.9609 167.724 181.636 181.636v30.3643c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-30.3643\nc93.6748 -13.9121 167.724 -87.9609 181.636 -181.636h30.3643zM288 43.3662c58.2432 12.417 104.232 58.46 116.634 116.634h-40.6338c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40.6338c-12.417 58.2432 -58.46 104.232 -116.634 116.634v-40.6338\nc0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40.6338c-58.2432 -12.417 -104.232 -58.46 -116.634 -116.634h40.6338c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-40.6338\nc12.417 -58.2432 58.46 -104.232 116.634 -116.634v40.6338c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40.6338zM288 192c0 -17.6729 -14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32s32 -14.3271 32 -32z\" />\n    <glyph glyph-name=\"ban\" unicode=\"&#xf05e;\" \nd=\"M256 440c136.967 0 248 -111.034 248 -248s-111.034 -248 -248 -248s-248 111.033 -248 248s111.034 248 248 248zM386.108 322.108c-65.4121 65.4102 -165.435 70.0312 -235.639 20.6758l256.315 -256.313c49.3232 70.1562 44.7705 170.189 -20.6768 235.638z\nM125.892 61.8916c65.4121 -65.4111 165.436 -70.0312 235.639 -20.6758l-256.315 256.313c-49.3232 -70.1562 -44.7705 -170.189 20.6768 -235.638z\" />\n    <glyph glyph-name=\"arrow-left\" unicode=\"&#xf060;\" horiz-adv-x=\"448\" \nd=\"M257.5 2.90039l-22.2002 -22.2002c-9.39941 -9.40039 -24.5996 -9.40039 -33.8994 0l-194.4 194.3c-9.40039 9.40039 -9.40039 24.5996 0 33.9004l194.4 194.399c9.39941 9.40039 24.5996 9.40039 33.8994 0l22.2002 -22.2002c9.5 -9.5 9.2998 -25 -0.400391 -34.2998\nl-120.5 -114.8h287.4c13.2998 0 24 -10.7002 24 -24v-32c0 -13.2998 -10.7002 -24 -24 -24h-287.4l120.5 -114.8c9.80078 -9.2998 10 -24.7998 0.400391 -34.2998z\" />\n    <glyph glyph-name=\"arrow-right\" unicode=\"&#xf061;\" horiz-adv-x=\"448\" \nd=\"M190.5 381.1l22.2002 22.2002c9.39941 9.40039 24.5996 9.40039 33.8994 0l194.4 -194.3c9.40039 -9.40039 9.40039 -24.5996 0 -33.9004l-194.4 -194.399c-9.39941 -9.40039 -24.5996 -9.40039 -33.8994 0l-22.2002 22.2002c-9.5 9.5 -9.2998 25 0.400391 34.2998\nl120.5 114.8h-287.4c-13.2998 0 -24 10.7002 -24 24v32c0 13.2998 10.7002 24 24 24h287.4l-120.5 114.8c-9.80078 9.2998 -10 24.7998 -0.400391 34.2998z\" />\n    <glyph glyph-name=\"arrow-up\" unicode=\"&#xf062;\" horiz-adv-x=\"448\" \nd=\"M34.9004 158.5l-22.2002 22.2002c-9.40039 9.39941 -9.40039 24.5996 0 33.8994l194.3 194.4c9.40039 9.40039 24.5996 9.40039 33.9004 0l194.3 -194.3c9.39941 -9.40039 9.39941 -24.6006 0 -33.9004l-22.2002 -22.2002c-9.5 -9.5 -25 -9.2998 -34.2998 0.400391\nl-114.7 120.4v-287.4c0 -13.2998 -10.7002 -24 -24 -24h-32c-13.2998 0 -24 10.7002 -24 24v287.4l-114.8 -120.5c-9.2998 -9.80078 -24.7998 -10 -34.2998 -0.400391z\" />\n    <glyph glyph-name=\"arrow-down\" unicode=\"&#xf063;\" horiz-adv-x=\"448\" \nd=\"M413.1 225.5l22.2002 -22.2002c9.40039 -9.39941 9.40039 -24.5996 0 -33.8994l-194.3 -194.4c-9.40039 -9.40039 -24.5996 -9.40039 -33.9004 0l-194.399 194.4c-9.40039 9.39941 -9.40039 24.5996 0 33.8994l22.2002 22.2002c9.5 9.5 25 9.2998 34.2998 -0.400391\nl114.8 -120.5v287.4c0 13.2998 10.7002 24 24 24h32c13.2998 0 24 -10.7002 24 -24v-287.4l114.8 120.5c9.2998 9.80078 24.7998 10 34.2998 0.400391z\" />\n    <glyph glyph-name=\"share\" unicode=\"&#xf064;\" \nd=\"M503.691 258.164c11.0859 -9.5752 11.0703 -26.7656 0 -36.3281l-176.005 -152c-15.3867 -13.2891 -39.6865 -2.53613 -39.6865 18.1641v87.915c-155.083 -2.23145 -221.934 -40.7295 -176.59 -185.742c5.03418 -16.0977 -14.4238 -28.5615 -28.0771 -18.6309\nc-43.752 31.8232 -83.333 92.6914 -83.333 154.132c0 152.227 127.371 184.419 288 186.258v80.0537c0 20.668 24.2812 31.4688 39.6865 18.1641z\" />\n    <glyph glyph-name=\"expand\" unicode=\"&#xf065;\" horiz-adv-x=\"448\" \nd=\"M0 268v124c0 13.2998 10.7002 24 24 24h124c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-84v-84c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12zM288 404c0 6.59961 5.40039 12 12 12h124c13.2998 0 24 -10.7002 24 -24\nv-124c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v84h-84c-6.59961 0 -12 5.40039 -12 12v40zM436 128c6.59961 0 12 -5.40039 12 -12v-124c0 -13.2998 -10.7002 -24 -24 -24h-124c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h84\nv84c0 6.59961 5.40039 12 12 12h40zM160 -20c0 -6.59961 -5.40039 -12 -12 -12h-124c-13.2998 0 -24 10.7002 -24 24v124c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-84h84c6.59961 0 12 -5.40039 12 -12v-40z\" />\n    <glyph glyph-name=\"compress\" unicode=\"&#xf066;\" horiz-adv-x=\"448\" \nd=\"M436 256h-124c-13.2998 0 -24 10.7002 -24 24v124c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-84h84c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12zM160 280c0 -13.2998 -10.7002 -24 -24 -24h-124\nc-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h84v84c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-124zM160 -20c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v84h-84c-6.59961 0 -12 5.40039 -12 12v40\nc0 6.59961 5.40039 12 12 12h124c13.2998 0 24 -10.7002 24 -24v-124zM352 -20c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v124c0 13.2998 10.7002 24 24 24h124c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-84v-84z\" />\n    <glyph glyph-name=\"plus\" unicode=\"&#xf067;\" horiz-adv-x=\"448\" \nd=\"M416 240c17.6699 0 32 -14.3301 32 -32v-32c0 -17.6699 -14.3301 -32 -32 -32h-144v-144c0 -17.6699 -14.3301 -32 -32 -32h-32c-17.6699 0 -32 14.3301 -32 32v144h-144c-17.6699 0 -32 14.3301 -32 32v32c0 17.6699 14.3301 32 32 32h144v144\nc0 17.6699 14.3301 32 32 32h32c17.6699 0 32 -14.3301 32 -32v-144h144z\" />\n    <glyph glyph-name=\"minus\" unicode=\"&#xf068;\" horiz-adv-x=\"448\" \nd=\"M416 240c17.6699 0 32 -14.3301 32 -32v-32c0 -17.6699 -14.3301 -32 -32 -32h-384c-17.6699 0 -32 14.3301 -32 32v32c0 17.6699 14.3301 32 32 32h384z\" />\n    <glyph glyph-name=\"asterisk\" unicode=\"&#xf069;\" \nd=\"M478.21 113.907c11.7949 -6.47754 15.96 -21.3828 9.23242 -33.0361l-19.4805 -33.7412c-6.72754 -11.6533 -21.7207 -15.499 -33.2266 -8.52246l-138.735 84.1104l3.47559 -162.204c0.288086 -13.4531 -10.5391 -24.5137 -23.9941 -24.5137h-38.9619\nc-13.4551 0 -24.2822 11.0605 -23.9941 24.5137l3.47461 162.204l-138.735 -84.1113c-11.5059 -6.97656 -26.499 -3.13086 -33.2266 8.52246l-19.4805 33.7412c-6.72852 11.6533 -2.5625 26.5596 9.23242 33.0371l142.21 78.0928l-142.209 78.0918\nc-11.7949 6.47754 -15.9609 21.3838 -9.2334 33.0371l19.4805 33.7412c6.72754 11.6533 21.7207 15.499 33.2266 8.52246l138.735 -84.1104l-3.47363 162.204c-0.289062 13.4531 10.5381 24.5137 23.9932 24.5137h38.9609c13.4561 0 24.2822 -11.0605 23.9941 -24.5137\nl-3.47461 -162.204l138.735 84.1113c11.5068 6.97656 26.499 3.13086 33.2266 -8.52246l19.4805 -33.7412c6.72852 -11.6533 2.5625 -26.5596 -9.23242 -33.0371l-142.21 -78.0928z\" />\n    <glyph glyph-name=\"exclamation-circle\" unicode=\"&#xf06a;\" \nd=\"M504 192c0 -136.997 -111.043 -248 -248 -248s-248 111.003 -248 248c0 136.917 111.043 248 248 248s248 -111.083 248 -248zM256 142c-25.4053 0 -46 -20.5947 -46 -46s20.5947 -46 46 -46s46 20.5947 46 46s-20.5947 46 -46 46zM212.327 307.346l7.41797 -136\nc0.34668 -6.36328 5.6084 -11.3457 11.9814 -11.3457h48.5469c6.37305 0 11.6348 4.98242 11.9814 11.3457l7.41797 136c0.375 6.87402 -5.09766 12.6543 -11.9814 12.6543h-63.3838c-6.88379 0 -12.3555 -5.78027 -11.9805 -12.6543z\" />\n    <glyph glyph-name=\"gift\" unicode=\"&#xf06b;\" \nd=\"M32 0v128h192v-160h-160c-17.7002 0 -32 14.2998 -32 32zM288 -32v160h192v-128c0 -17.7002 -14.2998 -32 -32 -32h-160zM480 288c17.7002 0 32 -14.2998 32 -32v-80c0 -8.7998 -7.2002 -16 -16 -16h-480c-8.7998 0 -16 7.2002 -16 16v80c0 17.7002 14.2998 32 32 32\nh44.0996c-6.2998 12.0996 -10.0996 25.5 -10.0996 40c0 48.5 39.5 88 88 88c41.5996 0 68.5 -21.2998 103 -68.2998c34.5 47 61.4004 68.2998 103 68.2998c48.5 0 88 -39.5 88 -88c0 -14.5 -3.90039 -27.9004 -10.0996 -40h42.0996zM153.9 288h86.0996\nc-51.5 76.7002 -66.2002 80 -86.0996 80c-22.1006 0 -40 -17.9004 -40 -40s17.8994 -40 40 -40zM360 288c22.0996 0 40 17.9004 40 40s-17.9004 40 -40 40c-20.4004 0 -34.7002 -3.5 -86.0996 -80h86.0996z\" />\n    <glyph glyph-name=\"leaf\" unicode=\"&#xf06c;\" horiz-adv-x=\"576\" \nd=\"M546.2 438.3c19 -42.3994 29.7998 -94.3994 29.7998 -144.6c0 -172.4 -110.5 -313.2 -267.5 -324.601c-80.9004 -8.59961 -142.5 33.3008 -174.9 77.2002c-51 -42.7002 -70.3994 -87 -71.8994 -90.5996c-6.7998 -16.2002 -25.4004 -24.1006 -41.7998 -17.2998\nc-16.3008 6.69922 -24.1006 25.2998 -17.5 41.5996c23.5996 57.9004 130.199 212 381.6 212c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16c-130.6 0 -222.7 -38.7998 -286.5 -84.5c-0.700195 6.7998 -1.5 13.5 -1.5 20.5c0 106 86 192 192 192h80\nc63.4004 0 118.9 33.5996 149.9 87.5c6.69922 11.7998 22.6992 11.2998 28.2998 -1.2002z\" />\n    <glyph glyph-name=\"fire\" unicode=\"&#xf06d;\" horiz-adv-x=\"384\" \nd=\"M216 424.14c0 -103.14 168 -125.85 168 -296.14c0 -105.87 -86.1299 -192 -192 -192s-192 86.1299 -192 192c0 58.6699 27.7998 106.84 54.5703 134.96c14.96 15.7305 41.4297 5.2002 41.4297 -16.5v-85.5098c0 -35.1699 27.9805 -64.4902 63.1504 -64.9404\nc35.7393 -0.469727 64.8496 28.3604 64.8496 63.9902c0 88 -176 96.1504 -52.1504 277.18c13.5 19.7305 44.1504 10.7607 44.1504 -13.04z\" />\n    <glyph glyph-name=\"eye\" unicode=\"&#xf06e;\" horiz-adv-x=\"576\" \nd=\"M572.52 206.6c1.9209 -3.79883 3.47949 -10.3379 3.47949 -14.5947s-1.55859 -10.7959 -3.47949 -14.5947c-54.1992 -105.771 -161.59 -177.41 -284.52 -177.41s-230.29 71.5898 -284.52 177.4c-1.9209 3.79883 -3.47949 10.3379 -3.47949 14.5947\ns1.55859 10.7959 3.47949 14.5947c54.1992 105.771 161.59 177.41 284.52 177.41s230.29 -71.5898 284.52 -177.4zM288 48h0.0703125c79.4492 0 143.93 64.4805 143.93 143.93v0.0703125c0 79.4883 -64.5117 144 -144 144s-144 -64.5117 -144 -144s64.5117 -144 144 -144z\nM288 288h0.225586c52.8701 0 95.7803 -42.9092 95.7803 -95.7793c0 -52.8711 -42.9102 -95.7803 -95.7803 -95.7803c-52.8711 0 -95.7803 42.9092 -95.7803 95.7803c0 7.04785 1.49805 18.2871 3.34473 25.0889c6.9834 -5.13867 19.6895 -9.30957 28.3604 -9.30957\nc26.4131 0 47.8496 21.4365 47.8496 47.8496c0 8.6709 -4.1709 21.377 -9.30957 28.3604c6.84375 1.99219 18.1826 3.69043 25.3096 3.79004z\" />\n    <glyph glyph-name=\"eye-slash\" unicode=\"&#xf070;\" horiz-adv-x=\"640\" \nd=\"M320 48c7.24121 0.0673828 18.8896 1.23633 26 2.61035l51.8896 -40.1504c-25.0195 -6.45996 -50.9795 -10.46 -77.8896 -10.46c-122.93 0 -230.29 71.5898 -284.52 177.4c-1.9209 3.79883 -3.47949 10.3379 -3.47949 14.5947s1.55859 10.7959 3.47949 14.5947\nc10.2393 20 22.9297 38.29 36.7197 55.5898l104.899 -81.0693c5.65039 -74.4004 67.0508 -133.11 142.9 -133.11zM633.82 -10.0996c3.41309 -2.65234 6.18359 -8.3125 6.18359 -12.6357c0 -3.02734 -1.50684 -7.42383 -3.36426 -9.81445l-19.6396 -25.2705\nc-2.65234 -3.41211 -8.31152 -6.18262 -12.6338 -6.18262c-3.03125 0 -7.43359 1.51172 -9.82617 3.37305l-588.36 454.729c-3.41016 2.65234 -6.17773 8.31055 -6.17773 12.6309c0 3.0293 1.50879 7.42773 3.36816 9.81934l19.6299 25.2705\nc2.65234 3.41211 8.31152 6.18262 12.6338 6.18262c3.03125 0 7.43359 -1.51172 9.82617 -3.37305l127.22 -98.3301c38.0117 20.7578 104.011 37.6475 147.32 37.7002c122.93 0 230.29 -71.5898 284.52 -177.4c1.9209 -3.79883 3.47949 -10.3379 3.47949 -14.5947\ns-1.55859 -10.7959 -3.47949 -14.5947c-16.7666 -32.6758 -53.166 -78.4033 -81.25 -102.07zM450.1 131.9c8.61035 18.3203 13.9004 38.4697 13.9004 60.0996v0.0800781c0 79.4434 -64.4766 143.92 -143.92 143.92h-0.0800781\nc-28.4697 -0.0214844 -69.3047 -14.8545 -91.1504 -33.1104l73.6104 -56.8896c0.726562 2.71387 1.41602 7.19336 1.54004 10c-0.015625 8.62891 -4.18652 21.2666 -9.30957 28.21c7.17969 2.09668 19.0781 3.79785 26.5576 3.79785\nc52.3076 0 94.7598 -42.4521 94.7598 -94.7598c0 -0.344727 -0.00292969 -0.90332 -0.0078125 -1.24805c-0.112305 -8.43457 -2.44238 -21.749 -5.2002 -29.7197z\" />\n    <glyph glyph-name=\"exclamation-triangle\" unicode=\"&#xf071;\" horiz-adv-x=\"576\" \nd=\"M569.517 7.9873c18.458 -31.9941 -4.71094 -71.9873 -41.5762 -71.9873h-479.887c-36.9365 0 -59.999 40.0547 -41.5771 71.9873l239.946 416.027c18.4668 32.0098 64.7197 31.9512 83.1543 0zM288 94c-25.4053 0 -46 -20.5947 -46 -46s20.5947 -46 46 -46\ns46 20.5947 46 46s-20.5947 46 -46 46zM244.327 259.346l7.41797 -136c0.34668 -6.36328 5.6084 -11.3457 11.9814 -11.3457h48.5469c6.37305 0 11.6348 4.98242 11.9814 11.3457l7.41797 136c0.375 6.87402 -5.09766 12.6543 -11.9814 12.6543h-63.3838\nc-6.88379 0 -12.3555 -5.78027 -11.9805 -12.6543z\" />\n    <glyph glyph-name=\"plane\" unicode=\"&#xf072;\" horiz-adv-x=\"576\" \nd=\"M480 256c35.3496 0 96 -28.6504 96 -64s-60.6504 -64 -96 -64h-114.29l-105.11 -183.94c-2.84961 -4.97949 -8.14941 -8.05957 -13.8896 -8.05957h-65.5c-10.6299 0 -18.2998 10.1797 -15.3799 20.4004l49.0303 171.6h-102.86l-43.2002 -57.5996\nc-3.01953 -4.03027 -7.75977 -6.40039 -12.7998 -6.40039h-39.9902c-10.4102 0 -18.0498 9.78027 -15.5195 19.8799l31.5098 108.12l-31.5098 108.12c-2.53027 10.0996 5.10938 19.8799 15.5195 19.8799h39.9902c5.03027 0 9.78027 -2.37012 12.7998 -6.40039\nl43.2002 -57.5996h102.86l-49.0303 171.61c-2.91992 10.2197 4.75 20.3896 15.3799 20.3896h65.5h0.000976562c5.12598 0 11.3525 -3.61133 13.8994 -8.05957l105.1 -183.94h114.29z\" />\n    <glyph glyph-name=\"calendar-alt\" unicode=\"&#xf073;\" horiz-adv-x=\"448\" \nd=\"M0 -16v272h448v-272c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48zM320 180v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12v40c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12zM320 52v-40\nc0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12v40c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12zM192 180v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12v40c0 6.59961 -5.40039 12 -12 12h-40\nc-6.59961 0 -12 -5.40039 -12 -12zM192 52v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12v40c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12zM64 180v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12v40\nc0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12zM64 52v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12v40c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12zM400 384c26.5 0 48 -21.5 48 -48v-48h-448v48\nc0 26.5 21.5 48 48 48h48v48c0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-48h128v48c0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-48h48z\" />\n    <glyph glyph-name=\"random\" unicode=\"&#xf074;\" \nd=\"M504.971 88.9707c9.37305 -9.37305 9.37305 -24.5684 0 -33.9404l-80 -79.9844c-15.0098 -15.0098 -40.9707 -4.49023 -40.9707 16.9707v39.9834h-58.7852c-2.87793 0 -6.80859 1.70801 -8.77246 3.81152l-70.5566 75.5967l53.333 57.1426l52.7812 -56.5508h32v39.9814\nc0 21.4375 25.9434 31.9971 40.9707 16.9707zM12 272c-6.62695 0 -12 5.37305 -12 12v56c0 6.62695 5.37305 12 12 12h110.785h0.000976562c2.87793 0 6.80762 -1.70801 8.77148 -3.81152l70.5566 -75.5967l-53.333 -57.1426l-52.7812 56.5508h-84zM384 272h-32\nl-220.442 -236.188c-2.26953 -2.43066 -5.44629 -3.81152 -8.77246 -3.81152h-110.785c-6.62695 0 -12 5.37305 -12 12v56c0 6.62695 5.37305 12 12 12h84l220.442 236.188c1.96387 2.10352 5.89453 3.81152 8.77246 3.81152h58.7852v39.9814\nc0 21.4365 25.9434 31.9971 40.9707 16.9697l80 -79.9814c9.37305 -9.37207 9.37305 -24.5674 0 -33.9404l-80 -79.9844c-15.0098 -15.0088 -40.9707 -4.48926 -40.9707 16.9707v39.9844z\" />\n    <glyph glyph-name=\"comment\" unicode=\"&#xf075;\" \nd=\"M256 416c141.4 0 256 -93.0996 256 -208s-114.6 -208 -256 -208c-38.4004 0 -74.7002 7.09961 -107.4 19.4004c-24.5996 -19.6006 -74.2998 -51.4004 -140.6 -51.4004c-3.2002 0 -6 1.7998 -7.2998 4.7998s-0.700195 6.40039 1.5 8.7002\nc0.5 0.5 42.2998 45.4004 54.7998 95.7998c-35.5996 35.7002 -57 81.1006 -57 130.7c0 114.9 114.6 208 256 208z\" />\n    <glyph glyph-name=\"magnet\" unicode=\"&#xf076;\" \nd=\"M164.07 299.9h-152.07c-6.62402 0 -12 5.37598 -12 12v80c0 19.8721 16.1279 36 36 36h104c19.8721 0 36 -16.1279 36 -36v-80c0 -0.03125 0.000976562 -0.0800781 0.000976562 -0.110352c0 -6.56348 -5.32715 -11.8896 -11.8906 -11.8896h-0.0400391zM512 311.9\nc0 -6.56348 -5.32715 -11.9014 -11.8896 -11.9014c-0.0302734 0 -0.0800781 0.000976562 -0.110352 0.000976562h-152c-6.62402 0 -12 5.37598 -12 12v80c0 19.8721 16.1279 36 36 36h104c19.8721 0 36 -16.1279 36 -36v-80.0996zM348 267.9h151.85h0.000976562\nc6.62402 0 12 -5.37598 12 -12c0 -0.0283203 0 -0.0732422 -0.000976562 -0.100586c-0.199219 -20.2002 -0.599609 -40.3994 0 -53.2002c0 -150.699 -134.42 -246.699 -255 -246.699s-256.75 96 -256.75 246.6c0.600586 13 0.100586 31.9004 0 53.2998v0.100586\nc0 6.62402 5.37598 12 12 12v0h151.9c6.62402 0 12 -5.37598 12 -12v-52c0 -127.9 160 -128.101 160 0v52c0 6.62402 5.37598 12 12 12z\" />\n    <glyph glyph-name=\"chevron-up\" unicode=\"&#xf077;\" horiz-adv-x=\"448\" \nd=\"M240.971 317.476l194.344 -194.343c9.37207 -9.37305 9.37207 -24.5684 0 -33.9404l-22.667 -22.667c-9.35742 -9.35742 -24.5225 -9.375 -33.9014 -0.0400391l-154.746 154.02l-154.745 -154.021c-9.37891 -9.33496 -24.5439 -9.31738 -33.9014 0.0400391\nl-22.667 22.667c-9.37207 9.37305 -9.37207 24.5684 0 33.9404l194.344 194.343c9.37207 9.37305 24.5674 9.37305 33.9404 0.000976562z\" />\n    <glyph glyph-name=\"chevron-down\" unicode=\"&#xf078;\" horiz-adv-x=\"448\" \nd=\"M207.029 66.5244l-194.344 194.344c-9.37207 9.37305 -9.37207 24.5684 0 33.9404l22.667 22.667c9.35742 9.35742 24.5225 9.375 33.9014 0.0400391l154.746 -154.021l154.745 154.021c9.37891 9.33496 24.5439 9.31738 33.9014 -0.0400391l22.667 -22.667\nc9.37207 -9.37305 9.37207 -24.5684 0 -33.9404l-194.343 -194.344c-9.37305 -9.37207 -24.5684 -9.37207 -33.9414 0z\" />\n    <glyph glyph-name=\"retweet\" unicode=\"&#xf079;\" horiz-adv-x=\"640\" \nd=\"M629.657 104.402l-100.687 -100.687c-9.37305 -9.37207 -24.5674 -9.37207 -33.9404 0l-100.688 100.687c-9.37305 9.37305 -9.37305 24.5684 0 33.9404l10.8232 10.8232c9.56152 9.56152 25.1328 9.33984 34.4189 -0.492188l40.415 -42.792v182.118h-187.549\nc-5.4873 0 -13.0908 3.14941 -16.9707 7.0293l-16 16c-15.1191 15.1201 -4.41113 40.9707 16.9707 40.9707h243.549c13.2549 0 24 -10.7451 24 -24v-222.118l40.416 42.792c9.28516 9.83105 24.8564 10.0537 34.4189 0.492188l10.8232 -10.8232\nc9.37207 -9.37207 9.37207 -24.5684 -0.000976562 -33.9404zM364.519 88.9707l16.001 -16c15.1191 -15.1201 4.41113 -40.9707 -16.9707 -40.9707h-243.549c-13.2549 0 -24 10.7451 -24 24v222.119l-40.416 -42.793c-9.28613 -9.83105 -24.8574 -10.0527 -34.4189 -0.491211\nl-10.8223 10.8223c-9.37305 9.37207 -9.37305 24.5674 0 33.9404l100.688 100.687c9.37207 9.37305 24.5674 9.37305 33.9404 0l100.687 -100.686c9.37305 -9.37207 9.37305 -24.5674 0 -33.9404l-10.8223 -10.8223c-9.5625 -9.5625 -25.1328 -9.33984 -34.4189 0.491211\nl-40.416 42.792v-182.119h187.548h0.000976562c5.4873 0 13.0898 -3.14941 16.9697 -7.0293z\" />\n    <glyph glyph-name=\"shopping-cart\" unicode=\"&#xf07a;\" horiz-adv-x=\"576\" \nd=\"M528.12 146.681c-2.4834 -10.9268 -12.1973 -18.6807 -23.4033 -18.6807h-293.145l6.54492 -32h268.418c15.4004 0 26.8154 -14.3008 23.4033 -29.3193l-5.51758 -24.2754c18.6914 -9.07324 31.5791 -28.2334 31.5791 -50.4053c0 -30.9277 -25.0723 -56 -56 -56\ns-56 25.0723 -56 56c0 15.6738 6.44727 29.835 16.8232 40h-209.647c10.377 -10.165 16.8242 -24.3262 16.8242 -40c0 -30.9277 -25.0723 -56 -56 -56s-56 25.0723 -56 56c0 20.7783 11.3252 38.9004 28.1309 48.5654l-70.248 343.435h-69.8828\nc-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24h102.529c11.4004 0 21.2285 -8.02148 23.5127 -19.1904l9.16602 -44.8096h392.782c15.4004 0 26.8154 -14.3008 23.4023 -29.3193z\" />\n    <glyph glyph-name=\"folder\" unicode=\"&#xf07b;\" \nd=\"M464 320c26.5098 0 48 -21.4902 48 -48v-224c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h160l64 -64h192z\" />\n    <glyph glyph-name=\"folder-open\" unicode=\"&#xf07c;\" horiz-adv-x=\"576\" \nd=\"M572.694 155.907l-72.4248 -124.155c-10.2236 -17.5273 -34.9883 -31.752 -55.2793 -31.752h-0.000976562h-399.964c-18.5234 0 -30.0645 20.0928 -20.7314 36.0928l72.4238 124.155c10.2246 17.5273 34.9902 31.752 55.2822 31.752v0h399.964\nc18.5234 0 30.0645 -20.0928 20.7305 -36.0928zM152 224c-34.0107 0 -65.7861 -18.25 -82.9229 -47.6279l-69.0771 -118.418v278.046c0 26.5098 21.4902 48 48 48h160l64 -64h160c26.5098 0 48 -21.4902 48 -48v-48h-328z\" />\n    <glyph glyph-name=\"chart-bar\" unicode=\"&#xf080;\" \nd=\"M332.8 128c-6.39941 0 -12.7998 6.40039 -12.7998 12.7998v134.4c0 6.39941 6.40039 12.7998 12.7998 12.7998h38.4004c6.39941 0 12.7998 -6.40039 12.7998 -12.7998v-134.4c0 -6.39941 -6.40039 -12.7998 -12.7998 -12.7998h-38.4004zM428.8 128\nc-6.39941 0 -12.7998 6.40039 -12.7998 12.7998v230.4c0 6.39941 6.40039 12.7998 12.7998 12.7998h38.4004c6.39941 0 12.7998 -6.40039 12.7998 -12.7998v-230.4c0 -6.39941 -6.40039 -12.7998 -12.7998 -12.7998h-38.4004zM140.8 128\nc-6.39941 0 -12.7998 6.40039 -12.7998 12.7998v70.4004c0 6.39941 6.40039 12.7998 12.7998 12.7998h38.4004c6.39941 0 12.7998 -6.40039 12.7998 -12.7998v-70.4004c0 -6.39941 -6.40039 -12.7998 -12.7998 -12.7998h-38.4004zM236.8 128\nc-6.39941 0 -12.7998 6.40039 -12.7998 12.7998v198.4c0 6.39941 6.40039 12.7998 12.7998 12.7998h38.4004c6.39941 0 12.7998 -6.40039 12.7998 -12.7998v-198.4c0 -6.39941 -6.40039 -12.7998 -12.7998 -12.7998h-38.4004zM496 64c8.83984 0 16 -7.16016 16 -16v-32\nc0 -8.83984 -7.16016 -16 -16 -16h-464c-17.6699 0 -32 14.3301 -32 32v336c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-304h432z\" />\n    <glyph glyph-name=\"camera-retro\" unicode=\"&#xf083;\" \nd=\"M48 416h416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48zM48 384c-8.7998 0 -16 -7.2002 -16 -16v-10c0 -3.2998 2.7002 -6 6 -6h116c3.2998 0 6 2.7002 6 6v20c0 3.2998 -2.7002 6 -6 6h-106z\nM474 288c3.2998 0 6 2.7002 6 6v74c0 8.7998 -7.2002 16 -16 16h-252.8c-2 0 -3.90039 -1 -5 -2.7002l-30.2002 -45.2998h-138c-3.2998 0 -6 -2.7002 -6 -6v-36c0 -3.2998 2.7002 -6 6 -6h436zM256 24c66.2002 0 120 53.7998 120 120s-53.7998 120 -120 120\ns-120 -53.7998 -120 -120s53.7998 -120 120 -120zM256 232c48.5 0 88 -39.5 88 -88s-39.5 -88 -88 -88s-88 39.5 -88 88s39.5 88 88 88zM208 128c8.7998 0 16 7.2002 16 16c0 17.5996 14.4004 32 32 32c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16\nc-35.2998 0 -64 -28.7002 -64 -64c0 -8.7998 7.2002 -16 16 -16z\" />\n    <glyph glyph-name=\"key\" unicode=\"&#xf084;\" \nd=\"M512 271.999c0 -97.2021 -78.7979 -175.999 -176 -175.999c-11.2197 0 -22.1904 1.06152 -32.8271 3.06934l-24.0117 -27.0146c-3.95215 -4.44629 -11.9883 -8.05469 -17.9375 -8.05469h-0.000976562h-37.2227v-40c0 -13.2549 -10.7451 -24 -24 -24h-40v-40\nc0 -13.2549 -10.7451 -24 -24 -24h-112c-13.2549 0 -24 10.7451 -24 24v78.0586c0 6.36523 2.5293 12.4707 7.0293 16.9717l161.802 161.802c-5.72266 17.3535 -8.83105 35.8965 -8.83105 55.168c0 97.2021 78.7969 175.999 175.999 176\nc97.4893 0.000976562 176.001 -78.5107 176.001 -176.001zM336 320c0 -26.5098 21.4902 -48 48 -48s48 21.4902 48 48s-21.4902 48 -48 48s-48 -21.4902 -48 -48z\" />\n    <glyph glyph-name=\"cogs\" unicode=\"&#xf085;\" horiz-adv-x=\"640\" \nd=\"M512.1 257l-8.19922 -14.2998c-3 -5.2998 -9.40039 -7.5 -15.1006 -5.40039c-11.7998 4.40039 -22.5996 10.7002 -32.0996 18.6006c-4.60059 3.7998 -5.7998 10.5 -2.7998 15.6992l8.19922 14.3008c-6.89941 8 -12.2998 17.2998 -15.8994 27.3994h-16.5\nc-6 0 -11.2002 4.2998 -12.2002 10.2998c-2 12 -2.09961 24.6006 0 37.1006c1 6 6.2002 10.3994 12.2002 10.3994h16.5c3.59961 10.1006 9 19.4004 15.8994 27.4004l-8.19922 14.2998c-3 5.2002 -1.90039 11.9004 2.7998 15.7002\nc9.5 7.90039 20.3994 14.2002 32.0996 18.5996c5.7002 2.10059 12.1006 -0.0996094 15.1006 -5.39941l8.19922 -14.2998c10.5 1.89941 21.2002 1.89941 31.7002 0l8.2002 14.2998c3 5.2998 9.40039 7.5 15.0996 5.39941c11.8008 -4.39941 22.6006 -10.6992 32.1006 -18.5996\nc4.59961 -3.7998 5.7998 -10.5 2.7998 -15.7002l-8.2002 -14.2998c6.90039 -8 12.2998 -17.2998 15.9004 -27.4004h16.5c6 0 11.2002 -4.2998 12.2002 -10.2998c2 -12 2.09961 -24.5996 0 -37.0996c-1 -6 -6.2002 -10.4004 -12.2002 -10.4004h-16.5\nc-3.60059 -10.0996 -9 -19.3994 -15.9004 -27.3994l8.2002 -14.3008c3 -5.19922 1.90039 -11.8994 -2.7998 -15.6992c-9.5 -7.90039 -20.4004 -14.2002 -32.1006 -18.6006c-5.69922 -2.09961 -12.0996 0.100586 -15.0996 5.40039l-8.2002 14.2998\nc-10.3994 -1.90039 -21.2002 -1.90039 -31.7002 0zM501.6 315.8c38.5 -29.5996 82.4004 14.2998 52.8008 52.7998c-38.5 29.7002 -82.4004 -14.2998 -52.8008 -52.7998zM386.3 161.9l33.7002 -16.8008c10.0996 -5.7998 14.5 -18.0996 10.5 -29.0996\nc-8.90039 -24.2002 -26.4004 -46.4004 -42.5996 -65.7998c-7.40039 -8.90039 -20.2002 -11.1006 -30.3008 -5.2998l-29.0996 16.7998c-16 -13.7002 -34.5996 -24.6006 -54.9004 -31.7002v-33.5996c0 -11.6006 -8.2998 -21.6006 -19.6992 -23.6006\nc-24.6006 -4.2002 -50.4004 -4.39941 -75.9004 0c-11.5 2 -20 11.9004 -20 23.6006v33.5996c-20.2998 7.2002 -38.9004 18 -54.9004 31.7002l-29.0996 -16.7002c-10 -5.7998 -22.9004 -3.59961 -30.2998 5.2998c-16.2002 19.4004 -33.2998 41.6006 -42.2002 65.7002\nc-4 10.9004 0.400391 23.2002 10.5 29.0996l33.2998 16.8008c-3.89941 20.8994 -3.89941 42.3994 0 63.3994l-33.2998 16.9004c-10.0996 5.7998 -14.5996 18.0996 -10.5 29c8.90039 24.2002 26 46.3994 42.2002 65.7998c7.39941 8.90039 20.2002 11.0996 30.2998 5.2998\nl29.0996 -16.7998c16 13.7002 34.6006 24.5996 54.9004 31.7002v33.7002c0 11.5 8.2002 21.5 19.5996 23.5c24.6006 4.19922 50.5 4.39941 76 0.0996094c11.5 -2 20 -11.9004 20 -23.5996v-33.6006c20.3008 -7.2002 38.9004 -18 54.9004 -31.7002l29.0996 16.8008\nc10 5.7998 22.9004 3.59961 30.3008 -5.30078c16.1992 -19.3994 33.1992 -41.5996 42.0996 -65.7998c4 -10.8994 0.0996094 -23.2002 -10 -29.0996l-33.7002 -16.7998c3.90039 -21 3.90039 -42.5 0 -63.5zM268.7 140.8c59.2002 77 -28.7002 164.9 -105.7 105.7\nc-59.2002 -77 28.7002 -164.9 105.7 -105.7zM512.1 -41.9004l-8.19922 -14.2998c-3 -5.2998 -9.40039 -7.5 -15.1006 -5.39941c-11.7998 4.39941 -22.5996 10.6992 -32.0996 18.5996c-4.60059 3.7998 -5.7998 10.5 -2.7998 15.7002l8.19922 14.2998\nc-6.89941 8 -12.2998 17.2998 -15.8994 27.4004h-16.5c-6 0 -11.2002 4.2998 -12.2002 10.2998c-2 12 -2.09961 24.5996 0 37.0996c1 6 6.2002 10.4004 12.2002 10.4004h16.5c3.59961 10.0996 9 19.3994 15.8994 27.3994l-8.19922 14.3008\nc-3 5.19922 -1.90039 11.8994 2.7998 15.6992c9.5 7.90039 20.3994 14.2002 32.0996 18.6006c5.7002 2.09961 12.1006 -0.100586 15.1006 -5.40039l8.19922 -14.2998c10.5 1.90039 21.2002 1.90039 31.7002 0l8.2002 14.2998c3 5.2998 9.40039 7.5 15.0996 5.40039\nc11.8008 -4.40039 22.6006 -10.7002 32.1006 -18.6006c4.59961 -3.7998 5.7998 -10.5 2.7998 -15.6992l-8.2002 -14.3008c6.90039 -8 12.2998 -17.2998 15.9004 -27.3994h16.5c6 0 11.2002 -4.2998 12.2002 -10.2998c2 -12 2.09961 -24.6006 0 -37.1006\nc-1 -6 -6.2002 -10.3994 -12.2002 -10.3994h-16.5c-3.60059 -10.1006 -9 -19.4004 -15.9004 -27.4004l8.2002 -14.2998c3 -5.2002 1.90039 -11.9004 -2.7998 -15.7002c-9.5 -7.90039 -20.4004 -14.2002 -32.1006 -18.5996\nc-5.69922 -2.10059 -12.0996 0.0996094 -15.0996 5.39941l-8.2002 14.2998c-10.3994 -1.89941 -21.2002 -1.89941 -31.7002 0zM501.6 17c38.5 -29.5996 82.4004 14.2998 52.8008 52.7998c-38.5 29.6006 -82.4004 -14.2998 -52.8008 -52.7998z\" />\n    <glyph glyph-name=\"comments\" unicode=\"&#xf086;\" horiz-adv-x=\"576\" \nd=\"M416 256c0 -88.4004 -93.0996 -160 -208 -160c-41 0 -79.0996 9.2998 -111.3 25c-21.7998 -12.7002 -52.1006 -25 -88.7002 -25c-3.2002 0 -6 1.7998 -7.2998 4.7998s-0.700195 6.40039 1.5 8.7002c0.299805 0.299805 22.3994 24.2998 35.7998 54.5\nc-23.9004 26.0996 -38 57.7002 -38 92c0 88.4004 93.0996 160 208 160s208 -71.5996 208 -160zM538 36c13.4004 -30.2998 35.5 -54.2002 35.7998 -54.5c2.2002 -2.40039 2.7998 -5.7998 1.5 -8.7002c-1.2002 -2.89941 -4.09961 -4.7998 -7.2998 -4.7998\nc-36.5996 0 -66.9004 12.2998 -88.7002 25c-32.2002 -15.7998 -70.2998 -25 -111.3 -25c-86.2002 0 -160.2 40.4004 -191.7 97.9004c10.4004 -1.10059 20.9004 -1.90039 31.7002 -1.90039c132.3 0 240 86.0996 240 192c0 6.7998 -0.400391 13.5 -1.2998 20.0996\nc75.7998 -23.8994 129.3 -81.1992 129.3 -148.1c0 -34.2998 -14.0996 -66 -38 -92z\" />\n    <glyph glyph-name=\"star-half\" unicode=\"&#xf089;\" horiz-adv-x=\"576\" \nd=\"M288 448v-439.6l-130.7 -68.6006c-23.3994 -12.2998 -50.8994 7.60059 -46.3994 33.7002l25 145.5l-105.7 103c-19 18.5 -8.5 50.7998 17.7002 54.5996l146.1 21.2002l65.2998 132.4c5.90039 11.8994 17.2998 17.7998 28.7002 17.7998z\" />\n    <glyph glyph-name=\"thumbtack\" unicode=\"&#xf08d;\" horiz-adv-x=\"384\" \nd=\"M298.028 233.733c47.9893 -22.3135 85.9717 -62.5508 85.9727 -113.733c0 -13.2549 -10.7451 -24 -24 -24h-136v-104.007c0 -1.04297 -0.378906 -2.64551 -0.844727 -3.57812l-24 -48c-2.94727 -5.89258 -11.3701 -5.88184 -14.3115 0l-24 48\nc-0.555664 1.11133 -0.844727 2.33594 -0.844727 3.57812v104.007h-136c-13.2549 0 -24 10.7451 -24 24c0 50.7393 37.4648 91.1797 85.9717 113.733l12.2354 118.267h-42.207c-13.2549 0 -24 10.7451 -24 24v48c0 13.2549 10.7451 24 24 24h272\nc13.2549 0 24 -10.7451 24 -24v-48c0 -13.2549 -10.7451 -24 -24 -24h-42.207z\" />\n    <glyph glyph-name=\"trophy\" unicode=\"&#xf091;\" horiz-adv-x=\"576\" \nd=\"M552 384c13.2998 0 24 -10.7002 24 -24v-56c0 -35.7002 -22.5996 -72.4004 -61.9004 -100.7c-31.3994 -22.7002 -69.6992 -37.0996 -110 -41.7002c-31.3994 -52.0996 -68.0996 -73.5996 -68.0996 -73.5996v-72h48c35.2998 0 64 -20.7002 64 -56v-12\nc0 -6.59961 -5.40039 -12 -12 -12h-296c-6.59961 0 -12 5.40039 -12 12v12c0 35.2998 28.7002 56 64 56h48v72s-36.7002 21.5 -68.0996 73.5996c-40.2002 4.60059 -78.5 19 -110 41.7002c-39.4004 28.2998 -61.9004 65 -61.9004 100.7v56c0 13.2998 10.7002 24 24 24h104v40\nc0 13.2998 10.7002 24 24 24h272c13.2998 0 24 -10.7002 24 -24v-40h104zM99.2998 255.2c12.5 -9 26.6006 -16.2002 41.7002 -21.4004c-7 25 -11.7998 53.6006 -12.7998 86.2002h-64.2002v-16c0 -11.5996 10.9004 -31.2002 35.2998 -48.7998zM512 304v16h-64.2998\nc-1 -32.5996 -5.7998 -61.2002 -12.7998 -86.2002c15.0996 5.2002 29.2998 12.4004 41.7998 21.4004c17.5996 12.7002 35.2998 32.7002 35.2998 48.7998z\" />\n    <glyph glyph-name=\"upload\" unicode=\"&#xf093;\" \nd=\"M296 64h-80c-13.2998 0 -24 10.7002 -24 24v168h-87.7002c-17.7998 0 -26.7002 21.5 -14.0996 34.0996l152.1 152.2c7.5 7.5 19.7998 7.5 27.2998 0l152.2 -152.2c12.6006 -12.5996 3.7002 -34.0996 -14.0996 -34.0996h-87.7002v-168c0 -13.2998 -10.7002 -24 -24 -24z\nM512 72v-112c0 -13.2998 -10.7002 -24 -24 -24h-464c-13.2998 0 -24 10.7002 -24 24v112c0 13.2998 10.7002 24 24 24h136v-8c0 -30.9004 25.0996 -56 56 -56h80c30.9004 0 56 25.0996 56 56v8h136c13.2998 0 24 -10.7002 24 -24zM388 -16c0 11 -9 20 -20 20s-20 -9 -20 -20\ns9 -20 20 -20s20 9 20 20zM452 -16c0 11 -9 20 -20 20s-20 -9 -20 -20s9 -20 20 -20s20 9 20 20z\" />\n    <glyph glyph-name=\"lemon\" unicode=\"&#xf094;\" \nd=\"M489.038 425.037c23.0938 -23.0938 28.8916 -54.3906 16.833 -75.0928c-34.3115 -58.9043 53.0762 -181.249 -86.7461 -321.071s-262.167 -52.4326 -321.068 -86.7432c-20.7031 -12.0586 -52 -6.2627 -75.0947 16.832c-23.0928 23.0938 -28.8916 54.3906 -16.833 75.0928\nc34.3125 58.9043 -53.0781 181.247 86.7451 321.07s262.167 52.4336 321.073 86.7461c20.7012 12.0586 51.9971 6.25879 75.0908 -16.834zM243.881 352.478c8.57227 2.14355 13.7832 10.8291 11.6416 19.4023c-2.14258 8.57324 -10.8281 13.7852 -19.4033 11.6426\nc-69.8027 -17.4521 -154.218 -101.949 -171.643 -171.643c-2.1416 -8.57324 3.07031 -17.2588 11.6426 -19.4033c1.30273 -0.324219 2.6084 -0.480469 3.89258 -0.480469c7.16895 0 13.6943 4.85352 15.5117 12.124c14.5498 58.2031 90.1689 133.811 148.357 148.357z\" />\n    <glyph glyph-name=\"phone\" unicode=\"&#xf095;\" \nd=\"M493.4 423.4c10.8994 -2.5 18.5996 -12.2002 18.5996 -23.4004c0 -256.5 -207.9 -464 -464 -464c-11.2998 0 -20.9004 7.7998 -23.4004 18.5996l-24 104c-2.59961 11.3008 3.30078 22.9004 14 27.6006l112 48c9.80078 4.2002 21.2002 1.39941 28 -6.90039\nl49.6006 -60.5996c78.2998 36.7002 141.2 100.5 177.2 177.2l-60.6006 49.5996c-8.2998 6.7002 -11.0996 18.2002 -6.89941 28l48 112c4.59961 10.5996 16.1992 16.5 27.5 13.9004z\" />\n    <glyph glyph-name=\"phone-square\" unicode=\"&#xf098;\" horiz-adv-x=\"448\" \nd=\"M400 416c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h352zM94 32c160.055 0 290 129.708 290 290v0c0 6.58691 -5.20898 13.1338 -11.6279 14.6143l-65 14.998\nc-0.918945 0.211914 -2.42969 0.383789 -3.37305 0.383789c-5.45996 0 -11.6367 -4.07324 -13.7871 -9.09082l-30 -69.998c-0.668945 -1.5625 -1.21191 -4.20898 -1.21191 -5.9082c0 -3.92383 2.46387 -9.125 5.50098 -11.6104l37.8857 -30.9971\nc-22.4834 -47.9219 -61.8369 -87.8164 -110.78 -110.779l-30.9971 37.8848c-2.48535 3.03711 -7.68652 5.50195 -11.6104 5.50195c-1.69922 0 -4.3457 -0.543945 -5.9082 -1.21289l-69.998 -29.999c-5.01855 -2.15039 -9.09082 -8.32715 -9.09082 -13.7871\nc0 -0.943359 0.171875 -2.4541 0.383789 -3.37305l14.998 -65c1.55957 -6.75391 7.58301 -11.627 14.6162 -11.627z\" />\n    <glyph glyph-name=\"unlock\" unicode=\"&#xf09c;\" horiz-adv-x=\"448\" \nd=\"M400 192c26.5 0 48 -21.5 48 -48v-160c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v160c0 26.5 21.5 48 48 48h24v102.5c0 84 67.5 153.2 151.5 153.5s152.5 -68 152.5 -152v-16c0 -13.2998 -10.7002 -24 -24 -24h-32c-13.2998 0 -24 10.7002 -24 24v16\nc0 39.9004 -32.7002 72.4004 -72.7002 72c-39.5996 -0.400391 -71.2998 -33.2998 -71.2998 -72.9004v-103.1h248z\" />\n    <glyph glyph-name=\"credit-card\" unicode=\"&#xf09d;\" horiz-adv-x=\"576\" \nd=\"M0 16v176h576v-176c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48zM192 84v-40c0 -6.59961 5.40039 -12 12 -12h136c6.59961 0 12 5.40039 12 12v40c0 6.59961 -5.40039 12 -12 12h-136c-6.59961 0 -12 -5.40039 -12 -12zM64 84v-40\nc0 -6.59961 5.40039 -12 12 -12h72c6.59961 0 12 5.40039 12 12v40c0 6.59961 -5.40039 12 -12 12h-72c-6.59961 0 -12 -5.40039 -12 -12zM576 368v-48h-576v48c0 26.5 21.5 48 48 48h480c26.5 0 48 -21.5 48 -48z\" />\n    <glyph glyph-name=\"rss\" unicode=\"&#xf09e;\" horiz-adv-x=\"448\" \nd=\"M128.081 32.041c0 -35.3691 -28.6719 -64.041 -64.041 -64.041s-64.04 28.6719 -64.04 64.041s28.6719 64.041 64.041 64.041s64.04 -28.6729 64.04 -64.041zM303.741 -15.209c0.494141 -9.13477 -6.84668 -16.791 -15.9951 -16.79h-48.0693\nc-8.41406 0 -15.4707 6.49023 -16.0176 14.8867c-7.29883 112.07 -96.9404 201.488 -208.772 208.772c-8.39648 0.545898 -14.8867 7.60254 -14.8867 16.0176v48.0693c0 9.14746 7.65625 16.4883 16.791 15.9941c154.765 -8.36328 278.596 -132.351 286.95 -286.95z\nM447.99 -15.4971c0.324219 -9.03027 -6.97168 -16.5029 -16.0049 -16.5039h-48.0684c-8.62598 0 -15.6455 6.83496 -15.999 15.4531c-7.83789 191.148 -161.286 344.626 -352.465 352.465c-8.61816 0.354492 -15.4531 7.37402 -15.4531 15.999v48.0684\nc0 9.03418 7.47266 16.3301 16.5029 16.0059c234.962 -8.43555 423.093 -197.667 431.487 -431.487z\" />\n    <glyph glyph-name=\"hdd\" unicode=\"&#xf0a0;\" horiz-adv-x=\"576\" \nd=\"M576 144v-96c0 -26.5098 -21.4902 -48 -48 -48h-480c-26.5098 0 -48 21.4902 -48 48v96c0 26.5098 21.4902 48 48 48h480c26.5098 0 48 -21.4902 48 -48zM528 224h-480h-0.0693359c-8.81738 0 -22.5742 -2.76172 -30.708 -6.16504l96.5283 144.791\nc7.86621 11.7988 25.7578 21.374 39.9385 21.374h268.621c14.1807 0 32.0732 -9.57617 39.9395 -21.374l96.5273 -144.791c-8.13379 3.40332 -21.8906 6.16504 -30.708 6.16504h-0.0693359zM480 128c-17.6729 0 -32 -14.3271 -32 -32s14.3271 -32 32 -32s32 14.3271 32 32\ns-14.3271 32 -32 32zM384 128c-17.6729 0 -32 -14.3271 -32 -32s14.3271 -32 32 -32s32 14.3271 32 32s-14.3271 32 -32 32z\" />\n    <glyph glyph-name=\"bullhorn\" unicode=\"&#xf0a1;\" horiz-adv-x=\"576\" \nd=\"M576 208c0 -23.6299 -12.9502 -44.04 -32.0098 -55.1299v-152.87c0 -9.21973 -7.08008 -32 -32 -32c-6.19336 0.00585938 -15.1445 3.15039 -19.9805 7.01953l-85.0293 68.0303c-42.7002 34.1406 -96.3203 52.9502 -150.98 52.9502h-28.0801\nc-2.79004 -10.21 -4.41016 -20.8896 -4.41016 -32c0 -29.0801 9.75 -55.9199 26.1504 -77.4404c15.79 -20.7197 0.149414 -50.5596 -25.9004 -50.5596h-74.2793c-11.8809 0 -23.2109 6.37012 -28.4004 17.0596c-16.2998 33.5908 -25.5605 71.1709 -25.5605 110.94\nc0 10.8604 0.790039 21.5195 2.18066 32h-33.7002c-35.3496 0 -64 28.6504 -64 64v96c0 35.3496 28.6504 64 64 64h192c54.6602 0 108.28 18.8096 150.99 52.9502l85.0293 68.0303c5.79004 4.63965 12.8604 7.01953 19.9805 7.01953c25.0195 0 32 -23.2598 32 -32.0098\nv-152.87c19.0498 -11.0801 32 -31.4902 32 -55.1201zM480 66.5801v282.84l-33.0498 -26.4395c-54 -43.2002 -121.83 -66.9805 -190.95 -66.9805v-96c69.1201 0 136.95 -23.7803 190.95 -66.9805z\" />\n    <glyph glyph-name=\"certificate\" unicode=\"&#xf0a3;\" \nd=\"M458.622 192.08l45.9844 -45.0039c13.7012 -12.9727 7.32227 -36.0371 -10.6641 -40.3389l-62.6504 -15.9902l17.6611 -62.0146c4.99023 -17.834 -11.8252 -34.665 -29.6611 -29.6719l-61.9941 17.667l-15.9834 -62.6709\nc-4.33887 -18.1533 -27.8252 -24.1553 -40.3252 -10.668l-44.9893 46.001l-44.9912 -46.001c-12.6289 -13.3496 -35.8857 -7.90625 -40.3252 10.668l-15.9834 62.6709l-61.9941 -17.667c-17.832 -4.99121 -34.6523 11.833 -29.6611 29.6719l17.6611 62.0146\nl-62.6504 15.9902c-17.9795 4.2998 -24.3721 27.3613 -10.6641 40.3389l45.9854 45.0039l-45.9854 45.0049c-13.7012 12.9707 -7.32227 36.0371 10.665 40.3379l62.6504 15.9902l-17.6611 62.0146c-4.99023 17.834 11.8242 34.665 29.6611 29.6709l61.9951 -17.667\nl15.9834 62.6709c4.27832 17.9023 27.6953 24.0195 40.3252 10.6689l44.9893 -46.3418l44.9902 46.3428c12.7744 13.5039 36.0947 7.03027 40.3252 -10.6689l15.9834 -62.6709l61.9941 17.667c17.832 4.99219 34.6523 -11.833 29.6611 -29.6709l-17.6611 -62.0146\nl62.6504 -15.9902c17.9795 -4.2998 24.3721 -27.3623 10.6641 -40.3389z\" />\n    <glyph glyph-name=\"hand-point-right\" unicode=\"&#xf0a4;\" \nd=\"M512 248.348c0 -23.625 -20.6504 -43.8252 -44.7998 -43.8252h-99.8516c16.3408 -17.0488 18.3467 -49.7666 -6.29883 -70.9443c14.2881 -22.8291 2.14746 -53.0176 -16.4502 -62.3154c8.97461 -49.1406 -21.9453 -71.2627 -72.5996 -71.2627\nc-2.74609 0 -13.2764 0.203125 -16 0.195312c-61.9707 -0.167969 -76.8936 31.0645 -123.731 38.3145c-11.6729 1.80762 -20.2686 11.8916 -20.2686 23.7041v171.525l0.00195312 0.000976562c0.0107422 18.3662 10.6074 35.8887 28.4639 43.8447\nc28.8857 12.9941 95.4131 49.0381 107.534 77.3232c7.79688 18.1934 21.3838 29.084 40 29.0918c34.2217 0.0136719 57.752 -35.0977 44.1191 -66.9082c-3.58301 -8.3584 -8.3125 -16.6699 -14.1533 -24.918h149.234c23.4502 0 44.7998 -20.543 44.7998 -43.8262zM96 248\nv-192c0 -13.2549 -10.7451 -24 -24 -24h-48c-13.2549 0 -24 10.7451 -24 24v192c0 13.2549 10.7451 24 24 24h48c13.2549 0 24 -10.7451 24 -24zM68 80c0 11.0459 -8.9541 20 -20 20s-20 -8.9541 -20 -20s8.9541 -20 20 -20s20 8.9541 20 20z\" />\n    <glyph glyph-name=\"hand-point-left\" unicode=\"&#xf0a5;\" \nd=\"M44.7998 292.174h149.234c-5.84082 8.24805 -10.5703 16.5586 -14.1533 24.918c-13.6328 31.8105 9.89746 66.9219 44.1191 66.9082c18.6162 -0.0078125 32.2031 -10.8975 40 -29.0918c12.1221 -28.2861 78.6484 -64.3291 107.534 -77.3232\nc17.8564 -7.95605 28.4531 -25.4785 28.4639 -43.8447l0.00195312 -0.000976562v-171.526c0 -11.8115 -8.5957 -21.8965 -20.2686 -23.7031c-46.8379 -7.25 -61.7607 -38.4824 -123.731 -38.3145c-2.72363 0.00683594 -13.2539 -0.195312 -16 -0.195312\nc-50.6543 0 -81.5742 22.1221 -72.5996 71.2627c-18.5977 9.29688 -30.7383 39.4863 -16.4502 62.3154c-24.6455 21.1768 -22.6396 53.8955 -6.29883 70.9443h-99.8516c-24.1494 0 -44.7998 20.2002 -44.7998 43.8252c0 23.2832 21.3496 43.8262 44.7998 43.8262zM440 272\nh48c13.2549 0 24 -10.7451 24 -24v-192c0 -13.2549 -10.7451 -24 -24 -24h-48c-13.2549 0 -24 10.7451 -24 24v192c0 13.2549 10.7451 24 24 24zM464 60c11.0459 0 20 8.9541 20 20s-8.9541 20 -20 20s-20 -8.9541 -20 -20s8.9541 -20 20 -20z\" />\n    <glyph glyph-name=\"hand-point-up\" unicode=\"&#xf0a6;\" horiz-adv-x=\"384\" \nd=\"M135.652 448c23.625 0 43.8252 -20.6504 43.8252 -44.7998v-99.8516c17.0488 16.3408 49.7666 18.3467 70.9443 -6.29883c22.8291 14.2881 53.0176 2.14746 62.3154 -16.4502c49.1406 8.97461 71.2627 -21.9453 71.2627 -72.5996\nc0 -2.74609 -0.203125 -13.2764 -0.195312 -16c0.167969 -61.9707 -31.0645 -76.8936 -38.3145 -123.731c-1.80762 -11.6729 -11.8916 -20.2686 -23.7041 -20.2686h-171.525l-0.000976562 0.00195312c-18.3662 0.0107422 -35.8887 10.6074 -43.8447 28.4639\nc-12.9941 28.8857 -49.0381 95.4121 -77.3232 107.534c-18.1943 7.79688 -29.084 21.3838 -29.0918 40c-0.0136719 34.2217 35.0977 57.752 66.9082 44.1191c8.3584 -3.58301 16.6699 -8.3125 24.918 -14.1533v149.234c0 23.4502 20.543 44.7998 43.8262 44.7998zM136 32\nh192c13.2549 0 24 -10.7451 24 -24v-48c0 -13.2549 -10.7451 -24 -24 -24h-192c-13.2549 0 -24 10.7451 -24 24v48c0 13.2549 10.7451 24 24 24zM304 4c-11.0459 0 -20 -8.9541 -20 -20s8.9541 -20 20 -20s20 8.9541 20 20s-8.9541 20 -20 20z\" />\n    <glyph glyph-name=\"hand-point-down\" unicode=\"&#xf0a7;\" horiz-adv-x=\"384\" \nd=\"M91.8262 -19.2002v149.234c-8.24805 -5.84082 -16.5586 -10.5703 -24.918 -14.1533c-31.8105 -13.6328 -66.9219 9.89746 -66.9082 44.1191c0.0078125 18.6162 10.8975 32.2031 29.0918 40c28.2861 12.1221 64.3291 78.6484 77.3232 107.534\nc7.95605 17.8564 25.4785 28.4531 43.8447 28.4639l0.000976562 0.00195312h171.526c11.8115 0 21.8965 -8.5957 23.7031 -20.2686c7.25 -46.8379 38.4824 -61.7607 38.3145 -123.731c-0.00683594 -2.72363 0.195312 -13.2539 0.195312 -16\nc0 -50.6543 -22.1221 -81.5742 -71.2627 -72.5996c-9.29688 -18.5977 -39.4863 -30.7383 -62.3154 -16.4502c-21.1768 -24.6455 -53.8955 -22.6396 -70.9443 -6.29883v-99.8516c0 -24.1494 -20.2002 -44.7998 -43.8252 -44.7998\nc-23.2832 0 -43.8262 21.3496 -43.8262 44.7998zM112 376v48c0 13.2549 10.7451 24 24 24h192c13.2549 0 24 -10.7451 24 -24v-48c0 -13.2549 -10.7451 -24 -24 -24h-192c-13.2549 0 -24 10.7451 -24 24zM324 400c0 11.0459 -8.9541 20 -20 20s-20 -8.9541 -20 -20\ns8.9541 -20 20 -20s20 8.9541 20 20z\" />\n    <glyph glyph-name=\"arrow-circle-left\" unicode=\"&#xf0a8;\" \nd=\"M256 -56c-137 0 -248 111 -248 248s111 248 248 248s248 -111 248 -248s-111 -248 -248 -248zM284.9 87.5996l-75.5 72.4004h182.6c13.2998 0 24 10.7002 24 24v16c0 13.2998 -10.7002 24 -24 24h-182.6l75.5 72.4004c9.69922 9.2998 9.89941 24.7998 0.399414 34.2998\nl-11 10.8994c-9.39941 9.40039 -24.5996 9.40039 -33.8994 0l-132.7 -132.6c-9.40039 -9.40039 -9.40039 -24.5996 0 -33.9004l132.7 -132.699c9.39941 -9.40039 24.5996 -9.40039 33.8994 0l11 10.8994c9.5 9.5 9.2998 25 -0.399414 34.2998z\" />\n    <glyph glyph-name=\"arrow-circle-right\" unicode=\"&#xf0a9;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM227.1 296.4l75.5 -72.4004h-182.6c-13.2998 0 -24 -10.7002 -24 -24v-16c0 -13.2998 10.7002 -24 24 -24h182.6l-75.5 -72.4004\nc-9.69922 -9.2998 -9.89941 -24.7998 -0.399414 -34.2998l11 -10.8994c9.39941 -9.40039 24.5996 -9.40039 33.8994 0l132.7 132.6c9.40039 9.40039 9.40039 24.5996 0 33.9004l-132.7 132.8c-9.39941 9.39941 -24.5996 9.39941 -33.8994 0l-11 -10.9004\nc-9.5 -9.59961 -9.2998 -25.0996 0.399414 -34.3994z\" />\n    <glyph glyph-name=\"arrow-circle-up\" unicode=\"&#xf0aa;\" \nd=\"M8 192c0 137 111 248 248 248s248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248zM151.6 163.1l72.4004 75.5v-182.6c0 -13.2998 10.7002 -24 24 -24h16c13.2998 0 24 10.7002 24 24v182.6l72.4004 -75.5c9.2998 -9.69922 24.7998 -9.89941 34.2998 -0.399414\nl10.8994 11c9.40039 9.39941 9.40039 24.5996 0 33.8994l-132.6 132.7c-9.40039 9.40039 -24.5996 9.40039 -33.9004 0l-132.8 -132.7c-9.39941 -9.39941 -9.39941 -24.5996 0 -33.8994l10.9004 -11c9.59961 -9.5 25.0996 -9.2998 34.3994 0.399414z\" />\n    <glyph glyph-name=\"arrow-circle-down\" unicode=\"&#xf0ab;\" \nd=\"M504 192c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248s248 -111 248 -248zM360.4 220.9l-72.4004 -75.5v182.6c0 13.2998 -10.7002 24 -24 24h-16c-13.2998 0 -24 -10.7002 -24 -24v-182.6l-72.4004 75.5\nc-9.2998 9.69922 -24.7998 9.89941 -34.2998 0.399414l-10.8994 -11c-9.40039 -9.39941 -9.40039 -24.5996 0 -33.8994l132.6 -132.7c9.40039 -9.40039 24.5996 -9.40039 33.9004 0l132.699 132.7c9.40039 9.39941 9.40039 24.5996 0 33.8994l-10.8994 11\nc-9.5 9.5 -25 9.2998 -34.2998 -0.399414z\" />\n    <glyph glyph-name=\"globe\" unicode=\"&#xf0ac;\" horiz-adv-x=\"496\" \nd=\"M336.5 288h-177c14.5 89.2998 48.7002 152 88.5 152s74 -62.7002 88.5 -152zM152 192c0 22.2002 1.2002 43.5 3.2998 64h185.3c2.10059 -20.5 3.30078 -41.7998 3.30078 -64s-1.2002 -43.5 -3.30078 -64h-185.3c-2.09961 20.5 -3.2998 41.7998 -3.2998 64zM476.7 288\nh-108c-8.7998 56.9004 -25.6006 107.8 -50 141.6c71.5 -21.1992 129.399 -73.6992 158 -141.6zM177.2 429.6c-24.4004 -33.7998 -41.2002 -84.6992 -49.9004 -141.6h-108c28.5 67.9004 86.5 120.4 157.9 141.6zM487.4 256c5.39941 -20.5 8.5 -41.7998 8.5 -64\ns-3.10059 -43.5 -8.60059 -64h-114.6c2.09961 21 3.2998 42.5 3.2998 64s-1.2002 43 -3.2998 64h114.7zM120 192c0 -21.5 1.2002 -43 3.2002 -64h-114.601c-5.39941 20.5 -8.59961 41.7998 -8.59961 64s3.2002 43.5 8.59961 64h114.7\nc-2.09961 -21 -3.2998 -42.5 -3.2998 -64zM159.5 96h177c-14.5 -89.2998 -48.7002 -152 -88.5 -152s-74 62.7002 -88.5 152zM318.8 -45.5996c24.4004 33.7998 41.2002 84.6992 50 141.6h108c-28.5996 -67.9004 -86.5996 -120.4 -158 -141.6zM19.2998 96h108\nc8.7998 -56.9004 25.6006 -107.8 50 -141.6c-71.5 21.1992 -129.399 73.6992 -158 141.6z\" />\n    <glyph glyph-name=\"wrench\" unicode=\"&#xf0ad;\" \nd=\"M507.73 338.9c11.7891 -47.4102 -0.84082 -99.6602 -37.9102 -136.73c-39.9004 -39.9004 -97.25 -50.9297 -147.37 -34.2197l-213.21 -213.21c-24.9902 -24.9902 -65.5098 -24.9902 -90.5 0s-24.9902 65.5098 0 90.5l213.39 213.39\nc-16.5 50.1006 -5.58984 107.561 34.0498 147.2c37.0303 37.0195 89.2002 49.6699 136.58 37.9297c9.08984 -2.25977 12.2803 -13.54 5.66016 -20.1602l-74.3604 -74.3594l11.3105 -67.8799l67.8799 -11.3105l74.3604 74.3604\nc6.58008 6.58008 17.8799 3.51953 20.1201 -5.50977zM64 -24c13.25 0 24 10.75 24 24c0 13.2598 -10.75 24 -24 24s-24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24z\" />\n    <glyph glyph-name=\"tasks\" unicode=\"&#xf0ae;\" \nd=\"M139.61 412.5l17 -16.5c1.90234 -1.94531 3.44727 -5.7334 3.44727 -8.4541c0 -2.7627 -1.58496 -6.5918 -3.53809 -8.5459l-72.1992 -72.1904l-15.5898 -15.6191c-2.04297 -1.94238 -5.9873 -3.51758 -8.80566 -3.51758c-2.81738 0 -6.7627 1.5752 -8.80469 3.51758\nl-47.5898 47.3994c-1.94824 1.94141 -3.5293 5.75 -3.5293 8.5c0 2.75098 1.58105 6.55859 3.5293 8.5l15.7002 15.7197c1.94141 1.94824 5.74902 3.53027 8.5 3.53027c2.75 0 6.55762 -1.58203 8.5 -3.53027l22.6992 -22.1191l63.6807 63.3096\nc1.94141 1.94824 5.74902 3.5293 8.5 3.5293c2.75 0 6.55859 -1.58105 8.5 -3.5293zM139.61 253.31l16.9795 -17c1.89648 -1.93164 3.43457 -5.69727 3.43457 -8.4043c0 -2.74805 -1.5791 -6.55371 -3.52441 -8.49512l-72.2002 -72.2197l-15.7002 -15.6904\nc-2.04102 -1.94141 -5.9834 -3.5166 -8.7998 -3.5166s-6.75879 1.5752 -8.7998 3.5166l-47.4697 47.5c-1.94824 1.94141 -3.5293 5.74902 -3.5293 8.5s1.58105 6.55859 3.5293 8.5l15.7002 15.6904c1.94141 1.94824 5.74902 3.5293 8.5 3.5293\nc2.75 0 6.55762 -1.58105 8.5 -3.5293l22.6992 -22.1006l63.6807 63.7197c1.94141 1.94824 5.74902 3.53027 8.5 3.53027c2.75 0 6.55859 -1.58203 8.5 -3.53027zM64 80c26.4961 0 48 -21.5039 48 -48s-21.5039 -48 -48 -48c-26.4697 0 -48.5898 21.5 -48.5898 48\ns22.0996 48 48.5898 48zM496 64c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-288c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h288zM496 384c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-288\nc-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h288zM496 224c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-288c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h288z\" />\n    <glyph glyph-name=\"filter\" unicode=\"&#xf0b0;\" \nd=\"M487.976 448c21.3623 0 32.0459 -25.8965 16.9717 -40.9707l-184.947 -184.971v-262.039c0 -19.5127 -21.9805 -30.71 -37.7627 -19.6611l-80 55.9795c-6.41602 4.49219 -10.2373 11.8311 -10.2373 19.6621v206.059l-184.942 184.971\nc-15.1045 15.1045 -4.34766 40.9707 16.9707 40.9707h463.947z\" />\n    <glyph glyph-name=\"briefcase\" unicode=\"&#xf0b1;\" \nd=\"M320 112v48h192v-144c0 -25.5996 -22.4004 -48 -48 -48h-416c-25.5996 0 -48 22.4004 -48 48v144h192v-48c0 -8.83984 7.16016 -16 16 -16h96c8.83984 0 16 7.16016 16 16zM464 320c25.5996 0 48 -22.4004 48 -48v-80h-512v80c0 25.5996 22.4004 48 48 48h80v48\nc0 25.5996 22.4004 48 48 48h160c25.5996 0 48 -22.4004 48 -48v-48h80zM320 320v32h-128v-32h128z\" />\n    <glyph glyph-name=\"arrows-alt\" unicode=\"&#xf0b2;\" \nd=\"M352.201 22.2246l-79.1963 -79.1953c-9.37305 -9.37305 -24.5684 -9.37305 -33.9404 0l-79.1963 79.1953c-15.1191 15.1191 -4.41113 40.9717 16.9707 40.9707h51.1621l-0.000976562 100.805h-100.804v-51.1621c0 -21.3818 -25.8516 -32.0898 -40.9717 -16.9707\nl-79.1953 79.1963c-9.37305 9.37207 -9.37305 24.5684 0 33.9404l79.1953 79.1963c15.1191 15.1191 40.9717 4.41113 40.9717 -16.9717v-51.2285h100.804v100.804h-51.2305c-21.3818 0 -32.0898 25.8516 -16.9707 40.9717l79.1963 79.1953\nc9.37305 9.37305 24.5684 9.37305 33.9404 0l79.1963 -79.1953c15.1191 -15.1191 4.41113 -40.9717 -16.9707 -40.9717h-51.1621v-100.804h100.804v51.1621c0 21.3818 25.8516 32.0898 40.9707 16.9707l79.1953 -79.1963c9.37305 -9.37207 9.37305 -24.5684 0 -33.9404\nl-79.1953 -79.1963c-15.1191 -15.1191 -40.9717 -4.41113 -40.9707 16.9717v51.2285h-100.803v-100.804h51.2305c21.3818 0 32.0898 -25.8516 16.9707 -40.9717z\" />\n    <glyph glyph-name=\"users\" unicode=\"&#xf0c0;\" horiz-adv-x=\"640\" \nd=\"M96 224c-35.2998 0 -64 28.7002 -64 64s28.7002 64 64 64s64 -28.7002 64 -64s-28.7002 -64 -64 -64zM544 224c-35.2998 0 -64 28.7002 -64 64s28.7002 64 64 64s64 -28.7002 64 -64s-28.7002 -64 -64 -64zM576 192c35.2998 0 64 -28.7002 64 -64v-32\nc0 -17.7002 -14.2998 -32 -32 -32h-66c-6.2002 47.4004 -34.7998 87.2998 -75.0996 109.4c11.5996 11.5 27.5 18.5996 45.0996 18.5996h64zM320 192c-61.9004 0 -112 50.0996 -112 112s50.0996 112 112 112s112 -50.0996 112 -112s-50.0996 -112 -112 -112zM396.8 160\nc63.6006 0 115.2 -51.5996 115.2 -115.2v-28.7998c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v28.7998c0 63.6006 51.5996 115.2 115.2 115.2h8.2998c20.9004 -10 43.9004 -16 68.5 -16s47.7002 6 68.5 16h8.2998zM173.1 173.4\nc-40.2998 -22.1006 -68.8994 -62 -75.1992 -109.4h-65.9004c-17.7002 0 -32 14.2998 -32 32v32c0 35.2998 28.7002 64 64 64h64c17.5996 0 33.5 -7.09961 45.0996 -18.5996z\" />\n    <glyph glyph-name=\"link\" unicode=\"&#xf0c1;\" \nd=\"M326.612 262.609c59.7471 -59.8096 58.9268 -155.698 0.359375 -214.591c-0.109375 -0.119141 -0.239258 -0.25 -0.359375 -0.369141l-67.2002 -67.2002c-59.2705 -59.2705 -155.699 -59.2627 -214.96 0c-59.2705 59.2598 -59.2705 155.7 0 214.96l37.1055 37.1055\nc9.84082 9.84082 26.7861 3.30078 27.2939 -10.6055c0.648438 -17.7227 3.82617 -35.5273 9.69043 -52.7207c1.98633 -5.82227 0.567383 -12.2627 -3.7832 -16.6123l-13.0869 -13.0869c-28.0254 -28.0264 -28.9053 -73.6602 -1.15527 -101.96\nc28.0244 -28.5791 74.0859 -28.749 102.325 -0.510742l67.2002 67.1904c28.1914 28.1914 28.0732 73.7568 0 101.83c-3.70117 3.69434 -7.42871 6.56348 -10.3408 8.56934c-3.66504 2.51562 -6.77734 8.16309 -6.94727 12.6055\nc-0.395508 10.5674 3.34766 21.4561 11.6982 29.8057l21.0537 21.0557c5.52148 5.52051 14.1826 6.19922 20.584 1.73047c6.08301 -4.24707 15.2764 -11.9512 20.5225 -17.1963zM467.547 403.551c59.2705 -59.2598 59.2705 -155.7 -0.000976562 -214.959l-37.1055 -37.1055\nc-9.84082 -9.83984 -26.7852 -3.30078 -27.2939 10.6055c-0.648438 17.7227 -3.82617 35.5273 -9.69043 52.7217c-1.98633 5.82129 -0.567383 12.2617 3.7832 16.6113l13.0869 13.0869c28.0264 28.0264 28.9053 73.6602 1.15527 101.96\nc-28.0254 28.5791 -74.0869 28.749 -102.325 0.510742l-67.2002 -67.1904c-28.1914 -28.1914 -28.0732 -73.7568 0 -101.83c3.70117 -3.69434 7.42871 -6.56348 10.3408 -8.56934c3.66504 -2.51562 6.77734 -8.16309 6.94727 -12.6055\nc0.395508 -10.5674 -3.34766 -21.4561 -11.6982 -29.8057l-21.0537 -21.0557c-5.52051 -5.51953 -14.1826 -6.19922 -20.584 -1.73047c-6.08203 4.24609 -15.2754 11.9502 -20.5215 17.1953c-59.7471 59.8096 -58.9258 155.698 -0.359375 214.591\nc0.109375 0.119141 0.239258 0.25 0.359375 0.369141l67.2002 67.2002c59.2705 59.2705 155.699 59.2627 214.96 0z\" />\n    <glyph glyph-name=\"cloud\" unicode=\"&#xf0c2;\" horiz-adv-x=\"640\" \nd=\"M537.6 221.4c58.4004 -11.8008 102.4 -63.5 102.4 -125.4c0 -70.7002 -57.2998 -128 -128 -128h-368c-79.5 0 -144 64.5 -144 144c0 62.7998 40.2002 116.2 96.2002 135.9c-0.100586 2.69922 -0.200195 5.39941 -0.200195 8.09961c0 88.4004 71.5996 160 160 160\nc59.2998 0 111 -32.2002 138.7 -80.2002c15.2002 10.2002 33.5996 16.2002 53.2998 16.2002c53 0 96 -43 96 -96c0 -12.2002 -2.2998 -23.9004 -6.40039 -34.5996z\" />\n    <glyph glyph-name=\"flask\" unicode=\"&#xf0c3;\" horiz-adv-x=\"448\" \nd=\"M437.2 44.5c29.2998 -47 -4.40039 -108.5 -60.1006 -108.5h-306.199c-55.6006 0 -89.4004 61.4004 -60.1006 108.5l117.2 188.5v151h-8c-13.2998 0 -24 10.7002 -24 24v16c0 13.2998 10.7002 24 24 24h208c13.2998 0 24 -10.7002 24 -24v-16\nc0 -13.2998 -10.7002 -24 -24 -24h-8v-151zM137.9 128h172l-48.2002 77.5996c-3.60059 5.2002 -5.7998 11.5 -5.7998 18.4004v160h-64v-160c0 -6.7998 -2.10059 -13.2002 -5.80078 -18.4004z\" />\n    <glyph glyph-name=\"cut\" unicode=\"&#xf0c4;\" horiz-adv-x=\"448\" \nd=\"M278.06 192l166.421 -166.43c4.68945 -4.69043 4.68945 -12.29 0 -16.9707c-32.8008 -32.7998 -85.9902 -32.7998 -118.79 0l-115.511 115.521l-24.8594 -24.8604c4.30957 -10.9199 6.67969 -22.8096 6.67969 -35.2598c0 -53.0195 -42.9805 -96 -96 -96\ns-96 42.9805 -96 96s42.9805 96 96 96c4.53027 0 8.99023 -0.320312 13.3604 -0.929688l32.9297 32.9297l-32.9297 32.9297c-4.37012 -0.609375 -8.82031 -0.929688 -13.3604 -0.929688c-53.0195 0 -96 42.9805 -96 96s42.9805 96 96 96s96 -42.9805 96 -96\nc0 -12.4502 -2.37012 -24.3398 -6.67969 -35.2598l24.8594 -24.8604l115.511 115.521c32.7998 32.7998 85.9893 32.7998 118.79 0c4.68945 -4.68066 4.68945 -12.2803 0 -16.9707zM96 288c17.6396 0 32 14.3604 32 32s-14.3604 32 -32 32s-32 -14.3604 -32 -32\ns14.3604 -32 32 -32zM96 32c17.6396 0 32 14.3604 32 32s-14.3604 32 -32 32s-32 -14.3604 -32 -32s14.3604 -32 32 -32z\" />\n    <glyph glyph-name=\"copy\" unicode=\"&#xf0c5;\" horiz-adv-x=\"448\" \nd=\"M320 0v-40c0 -13.2549 -10.7451 -24 -24 -24h-272c-13.2549 0 -24 10.7451 -24 24v368c0 13.2549 10.7451 24 24 24h72v-296c0 -30.8789 25.1211 -56 56 -56h168zM320 344c0 -13.2002 10.7998 -24 24 -24h104v-264c0 -13.2549 -10.7451 -24 -24 -24h-272\nc-13.2549 0 -24 10.7451 -24 24v368c0 13.2549 10.7451 24 24 24h168v-104zM440.971 375.029c3.87988 -3.88086 7.0293 -11.4834 7.0293 -16.9707v-6.05859h-96v96h6.05859c5.4873 0 13.0898 -3.14941 16.9707 -7.0293z\" />\n    <glyph glyph-name=\"paperclip\" unicode=\"&#xf0c6;\" horiz-adv-x=\"448\" \nd=\"M43.2461 -18.1416c-58.4297 60.2891 -57.3408 157.511 1.38574 217.581l209.76 214.561c44.3164 45.332 116.352 45.3359 160.672 0c43.8896 -44.8936 43.9424 -117.329 0 -162.276l-182.85 -186.852c-29.8545 -30.5371 -78.6328 -30.1113 -107.981 0.998047\nc-28.2754 29.9697 -27.3682 77.4727 1.45117 106.953l143.743 146.835c6.18262 6.31348 16.3125 6.42188 22.626 0.241211l22.8613 -22.3799c6.31445 -6.18164 6.42188 -16.3115 0.241211 -22.626l-143.729 -146.82c-4.93164 -5.04492 -5.23535 -13.4287 -0.647461 -18.292\nc4.37207 -4.63379 11.2451 -4.71094 15.6875 -0.165039l182.85 186.851c19.6123 20.0625 19.6123 52.7256 -0.0117188 72.7979c-19.1885 19.627 -49.957 19.6377 -69.1533 0l-209.762 -214.56c-34.7627 -35.5605 -35.2988 -93.1201 -1.19043 -128.313\nc34.0098 -35.0928 88.9844 -35.1367 123.058 -0.285156l172.061 175.999c6.17676 6.31836 16.3066 6.43262 22.626 0.255859l22.877 -22.3643c6.31836 -6.17676 6.43359 -16.3066 0.255859 -22.626l-172.061 -175.998c-59.5752 -60.9385 -155.942 -60.2158 -214.77 0.485352\nz\" />\n    <glyph glyph-name=\"save\" unicode=\"&#xf0c7;\" horiz-adv-x=\"448\" \nd=\"M433.941 318.059c7.75977 -7.75977 14.0586 -22.9658 14.0586 -33.9404v-268.118c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h268.118c10.9746 0 26.1807 -6.29883 33.9404 -14.0586zM224 32\nc35.3457 0 64 28.6543 64 64s-28.6543 64 -64 64s-64 -28.6543 -64 -64s28.6543 -64 64 -64zM320 336.52c0 2.74316 -1.5752 6.5459 -3.51465 8.48535l-3.48047 3.48047c-2.25 2.25098 -5.30176 3.51465 -8.48535 3.51465h-228.52c-6.62695 0 -12 -5.37305 -12 -12v-104\nc0 -6.62695 5.37305 -12 12 -12h232c6.62695 0 12 5.37305 12 12v100.52z\" />\n    <glyph glyph-name=\"square\" unicode=\"&#xf0c8;\" horiz-adv-x=\"448\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352z\" />\n    <glyph glyph-name=\"bars\" unicode=\"&#xf0c9;\" horiz-adv-x=\"448\" \nd=\"M16 316c-8.83691 0 -16 7.16309 -16 16v40c0 8.83691 7.16309 16 16 16h416c8.83691 0 16 -7.16309 16 -16v-40c0 -8.83691 -7.16309 -16 -16 -16h-416zM16 156c-8.83691 0 -16 7.16309 -16 16v40c0 8.83691 7.16309 16 16 16h416c8.83691 0 16 -7.16309 16 -16v-40\nc0 -8.83691 -7.16309 -16 -16 -16h-416zM16 -4c-8.83691 0 -16 7.16309 -16 16v40c0 8.83691 7.16309 16 16 16h416c8.83691 0 16 -7.16309 16 -16v-40c0 -8.83691 -7.16309 -16 -16 -16h-416z\" />\n    <glyph glyph-name=\"list-ul\" unicode=\"&#xf0ca;\" \nd=\"M48 400c26.4961 0 48 -21.5039 48 -48s-21.5039 -48 -48 -48s-48 21.5039 -48 48s21.5039 48 48 48zM48 240c26.4961 0 48 -21.5039 48 -48s-21.5039 -48 -48 -48s-48 21.5039 -48 48s21.5039 48 48 48zM48 80c26.4961 0 48 -21.5039 48 -48s-21.5039 -48 -48 -48\ns-48 21.5039 -48 48s21.5039 48 48 48zM496 64c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-320c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h320zM496 384c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16\nh-320c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h320zM496 224c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-320c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h320z\" />\n    <glyph glyph-name=\"list-ol\" unicode=\"&#xf0cb;\" \nd=\"M61.7695 47c19.6104 -5.12012 28.7002 -20.5 28.7305 -34.8799c0 -21.3701 -14.3398 -44.1201 -48.5 -44.1201c-16.6201 0 -29.29 4.75 -37 9.44043c-5.82031 4.21973 -6.34961 9.80957 -2.62988 15.9395l5.58984 9.31055c3.86035 6.61914 9.11035 7 15.5996 3.11914\nc4.10352 -1.68652 11.0342 -3.08496 15.4707 -3.11914c10.1602 0 14.3594 3.5 14.3594 8.21973c0 6.64941 -5.60938 9.08984 -15.9395 9.08984h-4.73047c-5.95996 0 -9.25 2.12012 -12.25 7.87988l-1.0498 1.92969c-2.4502 4.75 -1.2002 9.81055 2.7998 14.8809l5.61035 7\nc2.85742 3.55664 7.78516 9.07129 11 12.3096h-22.8301c-4.41602 0 -8 3.58398 -8 8v16c0 4.41602 3.58398 8 8 8h57c7.5 0 11.3398 -4 11.3398 -11.3496v-3.31055c0.0107422 -0.245117 0.0205078 -0.644531 0.0205078 -0.890625\nc0 -4.20801 -2.28027 -10.166 -5.09082 -13.2988zM496 224c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-320c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h320zM496 384c8.83203 0 16 -7.16797 16 -16v-32\nc0 -8.83203 -7.16797 -16 -16 -16h-320c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h320zM496 64c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-320c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h320zM16 288\nc-4.41602 0 -8 3.58398 -8 8v16c0 4.41602 3.58398 8 8 8h16v64h-8c-4.4082 0.0078125 -7.98535 3.5918 -7.98535 8c0 1.04297 0.378906 2.64746 0.845703 3.58008l8 16c1.21777 2.43457 4.41699 4.41504 7.13965 4.41992h24c4.41602 0 8 -3.58398 8 -8v-88h16\nc4.41602 0 8 -3.58398 8 -8v-16c0 -4.41602 -3.58398 -8 -8 -8h-64zM12.0898 128c-7.00977 0 -12.0898 4 -12.0898 11.4102v4c0 47.2803 51 56.3994 50.9697 69.1201c0 7.18945 -5.9502 8.75 -9.2793 8.75h-0.0546875c-3.02832 0 -7.24219 -1.7207 -9.40527 -3.83984\nc-5.12012 -4.91016 -10.5107 -7 -16.1201 -2.44043l-8.58008 6.87988c-5.7998 4.53027 -7.16992 9.78027 -2.7998 15.3701c6.65918 8.75 19.0996 18.75 40.46 18.75c19.4697 0 44.4697 -10.5 44.4697 -39.5596c0 -37.7607 -45.0498 -46.1504 -48.3398 -56.4404h38.6797\nc4.41602 0 8 -3.58398 8 -8v-16c0 -4.41602 -3.58398 -8 -8 -8h-67.9102z\" />\n    <glyph glyph-name=\"strikethrough\" unicode=\"&#xf0cc;\" \nd=\"M496 224c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-480c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h102.29c-11.6797 16.5303 -19.7803 35.4697 -21.7803 56.3604c-0.319336 3.29297 -0.579102 8.65137 -0.579102 11.96\nc0 68.2158 55.3633 123.624 123.579 123.68h68h0.0117188c43.6865 0 94.9863 -31.7188 114.509 -70.7998l0.529297 -1c0.930664 -1.86328 1.68652 -5.06641 1.68652 -7.14844c0 -5.45898 -3.96289 -11.8711 -8.8457 -14.3115l-42.9404 -21.4707\nc-1.86426 -0.931641 -5.06836 -1.6875 -7.15234 -1.6875c-5.45605 0 -11.8652 3.95996 -14.3076 8.83789c-7.61133 15.2246 -27.6025 27.5801 -44.624 27.5801h-0.0361328h-66.79c-24.0391 -0.000976562 -43.5488 -19.5107 -43.5488 -43.5498\nc0 -17.749 13.7666 -36.3945 30.7295 -41.6201l87.1699 -26.8301h202.1zM315.76 128h94.3906c2.21191 -6.56152 4.60352 -17.4746 5.33984 -24.3604c0.319336 -3.29297 0.579102 -8.65137 0.579102 -11.96c0 -68.2158 -55.3633 -123.624 -123.579 -123.68h-68h-0.0117188\nc-43.6865 0 -94.9863 31.7188 -114.509 70.7998l-0.529297 1c-0.930664 1.86328 -1.68652 5.06641 -1.68652 7.14844c0 5.45898 3.96289 11.8711 8.8457 14.3115l42.9404 21.4707c1.86426 0.931641 5.06836 1.6875 7.15234 1.6875\nc5.45605 0 11.8652 -3.95996 14.3076 -8.83789c7.61133 -15.2246 27.6025 -27.5801 44.624 -27.5801h0.0361328h66.79c24.0176 0.0224609 43.5273 19.5322 43.5498 43.5498c-0.00976562 13.1572 -9.07715 29.4863 -20.2402 36.4502z\" />\n    <glyph glyph-name=\"underline\" unicode=\"&#xf0cd;\" horiz-adv-x=\"448\" \nd=\"M32 384c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h144c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32v-160c0 -44.1602 35.8398 -80 80 -80s80 35.8398 80 80v160h-32c-8.83203 0 -16 7.16797 -16 16v32\nc0 8.83203 7.16797 16 16 16h144c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32v-160c0 -88.2197 -71.7803 -160 -160 -160s-160 71.7803 -160 160v160h-32zM432 0c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-416\nc-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h416z\" />\n    <glyph glyph-name=\"table\" unicode=\"&#xf0ce;\" \nd=\"M464 416c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h416zM224 32v96h-160v-96h160zM224 192v96h-160v-96h160zM448 32v96h-160v-96h160zM448 192v96h-160v-96h160z\" />\n    <glyph glyph-name=\"magic\" unicode=\"&#xf0d0;\" \nd=\"M224 352l-16 32l-32 16l32 16l16 32l16 -32l32 -16l-32 -16zM80 288l-26.6602 53.3301l-53.3398 26.6699l53.3398 26.6699l26.6602 53.3301l26.6602 -53.3301l53.3398 -26.6699l-53.3398 -26.6699zM432 160l26.6602 -53.3301l53.3398 -26.6699l-53.3398 -26.6699\nl-26.6602 -53.3301l-26.6602 53.3301l-53.3398 26.6699l53.3398 26.6699zM502.62 353.77c12.5 -12.4893 12.5 -32.7598 0 -45.2393l-363.14 -363.15c-6.25 -6.25 -14.4404 -9.37012 -22.6309 -9.37012c-8.17969 0 -16.3691 3.12012 -22.6191 9.37012l-84.8506 84.8506\nc-12.5 12.4893 -12.5 32.75 0 45.25l363.14 363.14c6.25 6.25977 14.4404 9.37988 22.6309 9.37988c8.18945 0 16.3799 -3.12012 22.6191 -9.37988zM359.45 244.54l86.5996 86.5996l-50.9102 50.9102l-86.5996 -86.5996z\" />\n    <glyph glyph-name=\"truck\" unicode=\"&#xf0d1;\" horiz-adv-x=\"640\" \nd=\"M624 96c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-48c0 -53 -43 -96 -96 -96s-96 43 -96 96h-128c0 -53 -43 -96 -96 -96s-96 43 -96 96h-16c-26.5 0 -48 21.5 -48 48v320c0 26.5 21.5 48 48 48h320c26.5 0 48 -21.5 48 -48v-48h44.0996\nc12.7002 0 24.9004 -5.09961 33.9004 -14.0996l99.9004 -99.9004c9 -9 14.0996 -21.2002 14.0996 -33.9004v-108.1h16zM160 -16c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48zM480 -16c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48\ns21.5 -48 48 -48zM560 192v12.0996l-99.9004 99.9004h-44.0996v-112h144z\" />\n    <glyph glyph-name=\"money-bill\" unicode=\"&#xf0d6;\" horiz-adv-x=\"640\" \nd=\"M608 384c17.6699 0 32 -14.3301 32 -32v-320c0 -17.6699 -14.3301 -32 -32 -32h-576c-17.6699 0 -32 14.3301 -32 32v320c0 17.6699 14.3301 32 32 32h576zM48 48h64c0 35.3496 -28.6504 64 -64 64v-64zM48 272c35.3496 0 64 28.6504 64 64h-64v-64zM320 96\nc44.1699 0 80 42.9697 80 96c0 53.0195 -35.8203 96 -80 96s-80 -42.9805 -80 -96c0 -53.0098 35.8096 -96 80 -96zM592 48v64c-35.3496 0 -64 -28.6504 -64 -64h64zM592 272v64h-64c0 -35.3496 28.6504 -64 64 -64z\" />\n    <glyph glyph-name=\"caret-down\" unicode=\"&#xf0d7;\" horiz-adv-x=\"320\" \nd=\"M31.2998 256h257.3c17.8008 0 26.7002 -21.5 14.1006 -34.0996l-128.601 -128.7c-7.7998 -7.7998 -20.5 -7.7998 -28.2998 0l-128.6 128.7c-12.6006 12.5996 -3.7002 34.0996 14.0996 34.0996z\" />\n    <glyph glyph-name=\"caret-up\" unicode=\"&#xf0d8;\" horiz-adv-x=\"320\" \nd=\"M288.662 96h-257.324c-17.8184 0 -26.7412 21.543 -14.1416 34.1416l128.662 128.662c7.80957 7.81055 20.4736 7.81055 28.2832 0l128.662 -128.662c12.6006 -12.5986 3.67676 -34.1416 -14.1416 -34.1416z\" />\n    <glyph glyph-name=\"caret-left\" unicode=\"&#xf0d9;\" horiz-adv-x=\"192\" \nd=\"M192 320.662v-257.324c0 -17.8184 -21.543 -26.7412 -34.1416 -14.1416l-128.662 128.662c-7.81055 7.80957 -7.81055 20.4736 0 28.2832l128.662 128.662c12.5986 12.6006 34.1416 3.67676 34.1416 -14.1416z\" />\n    <glyph glyph-name=\"caret-right\" unicode=\"&#xf0da;\" horiz-adv-x=\"192\" \nd=\"M0 63.3379v257.324c0 17.8184 21.543 26.7412 34.1416 14.1416l128.662 -128.662c7.81055 -7.80957 7.81055 -20.4736 0 -28.2832l-128.662 -128.662c-12.5986 -12.6006 -34.1416 -3.67676 -34.1416 14.1416z\" />\n    <glyph glyph-name=\"columns\" unicode=\"&#xf0db;\" \nd=\"M464 416c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h416zM224 32v256h-160v-256h160zM448 32v256h-160v-256h160z\" />\n    <glyph glyph-name=\"sort\" unicode=\"&#xf0dc;\" horiz-adv-x=\"320\" \nd=\"M41 160h238c21.4004 0 32.0996 -25.9004 17 -41l-119 -119c-9.40039 -9.40039 -24.5996 -9.40039 -33.9004 0l-119.1 119c-15.0996 15.0996 -4.40039 41 17 41zM296 265c15.0996 -15.0996 4.40039 -41 -17 -41h-238c-21.4004 0 -32.0996 25.9004 -17 41l119.1 119\nc9.30078 9.40039 24.5 9.40039 33.9004 0z\" />\n    <glyph glyph-name=\"sort-down\" unicode=\"&#xf0dd;\" horiz-adv-x=\"320\" \nd=\"M41 160h238c21.4004 0 32.0996 -25.9004 17 -41l-119 -119c-9.40039 -9.40039 -24.5996 -9.40039 -33.9004 0l-119.1 119c-15.0996 15.0996 -4.40039 41 17 41z\" />\n    <glyph glyph-name=\"sort-up\" unicode=\"&#xf0de;\" horiz-adv-x=\"320\" \nd=\"M279 224h-238c-21.4004 0 -32.0996 25.9004 -17 41l119 119c9.40039 9.40039 24.5996 9.40039 33.9004 0l119 -119c15.1992 -15.0996 4.5 -41 -16.9004 -41z\" />\n    <glyph glyph-name=\"envelope\" unicode=\"&#xf0e0;\" \nd=\"M502.3 257.2c3.90039 3.09961 9.7002 0.200195 9.7002 -4.7002v-204.5c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v204.4c0 5 5.7002 7.7998 9.7002 4.69922c22.3994 -17.3994 52.0996 -39.5 154.1 -113.6\nc21.1006 -15.4004 56.7002 -47.7998 92.2002 -47.5996c35.7002 -0.300781 72 32.7998 92.2998 47.5996c102 74.0996 131.601 96.2998 154 113.7zM256 128c-23.2002 -0.400391 -56.5996 29.2002 -73.4004 41.4004c-132.699 96.2998 -142.8 104.8 -173.399 128.699\nc-5.7998 4.60059 -9.2002 11.5 -9.2002 18.9004v19c0 26.5 21.5 48 48 48h416c26.5 0 48 -21.5 48 -48v-19c0 -7.40039 -3.40039 -14.4004 -9.2002 -18.9004c-30.5996 -24 -40.7002 -32.3994 -173.399 -128.699c-16.8008 -12.2002 -50.2002 -41.8008 -73.4004 -41.4004z\" />\n    <glyph glyph-name=\"undo\" unicode=\"&#xf0e2;\" \nd=\"M212.333 223.667h-200.333c-6.62695 0 -12 5.37305 -12 12v200.333c0 6.62695 5.37305 12 12 12h48c6.62695 0 12 -5.37305 12 -12v-78.1123c45.7734 50.833 112.26 82.6426 186.175 82.1055c136.906 -0.994141 246.448 -111.623 246.157 -248.532\nc-0.291016 -136.719 -111.212 -247.461 -247.999 -247.461c-64.0889 0 -122.496 24.3135 -166.51 64.2148c-5.09961 4.62207 -5.33398 12.5537 -0.466797 17.4199l33.9668 33.9668c4.47363 4.47461 11.6621 4.71777 16.4004 0.525391\nc31.0361 -27.4629 71.8564 -44.127 116.609 -44.127c97.2676 0 176 78.7158 176 176c0 97.2666 -78.7158 176 -176 176c-58.4961 0 -110.28 -28.4756 -142.274 -72.333h98.2744c6.62695 0 12 -5.37305 12 -12v-48c0 -6.62695 -5.37305 -12 -12 -12z\" />\n    <glyph glyph-name=\"gavel\" unicode=\"&#xf0e3;\" \nd=\"M504.971 248.638c9.37207 -9.37305 9.37207 -24.5684 0 -33.9404l-124.451 -124.451c-9.37109 -9.37305 -24.5674 -9.37305 -33.9404 0l-22.627 22.627c-9.37305 9.37207 -9.37305 24.5684 0 33.9414l5.65723 5.65625l-39.5986 39.5986l-81.04 -81.04l5.65723 -5.65723\nc12.4971 -12.4971 12.4971 -32.7578 0 -45.2549l-114.745 -114.745c-12.4971 -12.4971 -32.7578 -12.4971 -45.2549 0l-45.2549 45.2549c-12.4971 12.4971 -12.4971 32.7578 0 45.2549l114.744 114.746c12.4971 12.4971 32.7578 12.4971 45.2549 0l5.65723 -5.65723\nl81.04 81.04l-39.5986 39.5986l-5.65625 -5.65723c-9.37207 -9.37305 -24.5684 -9.37305 -33.9414 0l-22.627 22.627c-9.37305 9.37207 -9.37305 24.5684 0 33.9404l124.451 124.451c9.37207 9.37305 24.5674 9.37305 33.9404 0l22.627 -22.6279\nc9.37305 -9.37207 9.37305 -24.5674 0 -33.9404l-5.65625 -5.65723l113.138 -113.137l5.65723 5.65625c9.37207 9.37305 24.5674 9.37305 33.9404 0z\" />\n    <glyph glyph-name=\"bolt\" unicode=\"&#xf0e7;\" horiz-adv-x=\"320\" \nd=\"M296 288c18.5 0 30 -20.0996 20.7002 -36l-176 -304c-4.40039 -7.59961 -12.4004 -12 -20.7998 -12c-15.3008 0 -26.9004 14.2998 -23.3008 29.5l46.1006 194.5h-118.7c-14.5 0 -25.7002 12.7998 -23.7998 27.2002l32 240\nc1.59961 11.8994 11.7998 20.7998 23.7998 20.7998h144c15.7002 0 27.2002 -15 23.2002 -30.2002l-42.6006 -129.8h115.4z\" />\n    <glyph glyph-name=\"sitemap\" unicode=\"&#xf0e8;\" horiz-adv-x=\"640\" \nd=\"M128 96c17.6699 0 32 -14.3301 32 -32v-96c0 -17.6699 -14.3301 -32 -32 -32h-96c-17.6699 0 -32 14.3301 -32 32v96c0 17.6699 14.3301 32 32 32h96zM104 176v-48h-48v57.5898c0 21.1797 17.2305 38.4102 38.4102 38.4102h201.59v64h-40c-17.6699 0 -32 14.3301 -32 32\nv96c0 17.6699 14.3301 32 32 32h128c17.6699 0 32 -14.3301 32 -32v-96c0 -17.6699 -14.3301 -32 -32 -32h-40v-64h201.59c21.1797 0 38.4102 -17.2402 38.4102 -38.4102v-57.5898h-48v48h-192v-48h-48v48h-192zM368 96c17.6699 0 32 -14.3301 32 -32v-96\nc0 -17.6699 -14.3301 -32 -32 -32h-96c-17.6699 0 -32 14.3301 -32 32v96c0 17.6699 14.3301 32 32 32h96zM608 96c17.6699 0 32 -14.3301 32 -32v-96c0 -17.6699 -14.3301 -32 -32 -32h-96c-17.6699 0 -32 14.3301 -32 32v96c0 17.6699 14.3301 32 32 32h96z\" />\n    <glyph glyph-name=\"umbrella\" unicode=\"&#xf0e9;\" horiz-adv-x=\"576\" \nd=\"M575.7 167.2c2.2002 -10.1006 -8.40039 -21.4004 -18.7002 -11.4004c-51.5 54.4004 -107.6 52.5 -158.6 -37c-5.30078 -9.5 -14.9004 -8.59961 -19.7002 0c-2.5 4.40039 -32.2002 73.2002 -90.7002 73.2002c-45.7998 0 -70.5 -37.7998 -90.7002 -73.2002\nc-4.7998 -8.59961 -14.3994 -9.5 -19.7002 0c-50.8994 89.4004 -106.6 92 -158.6 37c-10.2002 -9.89941 -20.9004 1.2998 -18.7002 11.4004c29.2002 136.3 138 218.2 255.7 230.899v17.9004c0 17.7002 14.2998 32 32 32s32 -14.2998 32 -32v-17.9004\nc117.3 -12.6992 227.1 -94.5996 255.7 -230.899zM256 146.3c9.59961 8.90039 19.7002 13.6006 32 13.7002c12.2002 0 22.9004 -5.7002 32 -13.5996v-130.301c0 -44.0996 -35.9004 -80 -80 -80c-33.7998 0 -64.2002 21.4004 -75.4004 53.3008\nc-5.89941 16.5996 2.80078 34.8994 19.5 40.7998c16.7002 5.89941 34.9004 -2.7998 40.8008 -19.5c1.89941 -5.40039 7.2998 -10.7002 15.0996 -10.7002c8.7998 0 16 7.2002 16 16v130.3z\" />\n    <glyph glyph-name=\"paste\" unicode=\"&#xf0ea;\" horiz-adv-x=\"448\" \nd=\"M128 264v-232h-104c-13.2549 0 -24 10.7451 -24 24v336c0 13.2549 10.7451 24 24 24h80.6104c11.084 19.1104 31.7529 32 55.3896 32s44.3057 -12.8896 55.3896 -32h80.6104c13.2549 0 24 -10.7451 24 -24v-72h-136c-30.8779 0 -56 -25.1211 -56 -56zM160 408\nc-13.2549 0 -24 -10.7451 -24 -24s10.7451 -24 24 -24s24 10.7451 24 24s-10.7451 24 -24 24zM344 160h104v-200c0 -13.2549 -10.7451 -24 -24 -24h-240c-13.2549 0 -24 10.7451 -24 24v304c0 13.2549 10.7451 24 24 24h136v-104c0 -13.2002 10.7998 -24 24 -24z\nM448 198.059v-6.05859h-96v96h6.05859c5.4873 0 13.0898 -3.14941 16.9707 -7.0293l65.9404 -65.9404c3.88086 -3.88086 7.03027 -11.4834 7.03027 -16.9717z\" />\n    <glyph glyph-name=\"lightbulb\" unicode=\"&#xf0eb;\" horiz-adv-x=\"352\" \nd=\"M96.0596 -6.34961l-0.0498047 38.3496h159.98l-0.0400391 -38.3496c-0.00585938 -5.3291 -2.40723 -13.2549 -5.36035 -17.6904l-17.0898 -25.6904c-5.24023 -7.88184 -17.1748 -14.2793 -26.6396 -14.2793h-61.71c-9.46582 0 -21.4004 6.39746 -26.6406 14.2793\nl-17.0898 25.6904c-3.49023 5.24023 -5.34961 11.4004 -5.36035 17.6904zM0 272c0 93.0303 73.4404 175.69 175.45 176c97.46 0.299805 176.55 -78.6104 176.55 -176c0 -44.3701 -16.4502 -84.8496 -43.5596 -115.78c-16.5205 -18.8496 -42.3604 -58.2295 -52.21 -91.4502\nc-0.0400391 -0.269531 -0.0703125 -0.519531 -0.110352 -0.779297h-160.24c-0.0400391 0.259766 -0.0703125 0.519531 -0.110352 0.779297c-9.84961 33.2207 -35.6895 72.6006 -52.21 91.4502c-27.1094 30.9307 -43.5596 71.4102 -43.5596 115.78zM176 352\nc8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16c-61.7598 0 -112 -50.2402 -112 -112c0 -8.83984 7.16016 -16 16 -16s16 7.16016 16 16c0 44.1104 35.8896 80 80 80z\" />\n    <glyph glyph-name=\"user-md\" unicode=\"&#xf0f0;\" horiz-adv-x=\"448\" \nd=\"M224 192c-70.7002 0 -128 57.2998 -128 128s57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128zM104 24c0 13.2998 10.7002 24 24 24s24 -10.7002 24 -24s-10.7002 -24 -24 -24s-24 10.7002 -24 24zM320 159.4c71.2002 -3.5 128 -61.8008 128 -133.801\nv-44.7998c0 -24.7002 -20.0996 -44.7998 -44.7998 -44.7998h-358.4c-24.7002 0 -44.7998 20.0996 -44.7998 44.7998v44.7998c0 66.6006 48.5 121.4 112.1 132.101v-80.4004c-23.0996 -6.89941 -40 -28.0996 -40 -53.3994c0 -30.9004 25.1006 -56 56 -56\nc30.9004 0 56 25.0996 56 56c0 25.2998 -16.8994 46.5 -40 53.3994v81.6006c7.7002 -1 15.2002 -2.60059 22.6006 -5.2002c18 -6.2998 37.2998 -9.7998 57.3994 -9.7998c20.1006 0 39.4004 3.5 57.4004 9.7998c2.2002 0.799805 4.40039 1.2002 6.59961 1.89941v-45.1992\nc-36.5 -7.5 -64 -39.8008 -64 -78.4004v-43.7998c0 -8.10059 5.90039 -14.7998 13.8008 -15.9004l31.1992 -4.2002c4.30078 -0.799805 8.5 2 9.40039 6.30078l3.09961 15.6992c0.800781 4.30078 -2 8.5 -6.2998 9.40039l-19.2998 3.90039v26.6992\nc0 67 96 64.7002 96 1.90039v-28.5l-19.2998 -3.90039c-4.40039 -0.799805 -7.2002 -5.09961 -6.2998 -9.39941l3.09961 -15.7002c0.900391 -4.40039 5.09961 -7.2002 9.40039 -6.2998l32.1992 6.39941c7.5 1.5 12.9004 8.10059 12.9004 15.7002v41.7002\nc0 38.5996 -27.5 71 -64 78.4004v49z\" />\n    <glyph glyph-name=\"stethoscope\" unicode=\"&#xf0f1;\" \nd=\"M447.1 336c35.7002 0.5 64.9004 -28.2998 64.9004 -64c0 -23.7002 -12.9004 -44.2998 -32 -55.4004v-112.6c0 -92.5996 -79 -168 -176 -168c-95.4004 0 -173.3 72.7998 -175.9 163.2c-73 14.7998 -128.1 79.5 -128.1 156.8v155.4c0 11.5 8.09961 21.2998 19.2998 23.5996\nl62.7998 12.4004c13 2.59961 25.6006 -5.80078 28.2002 -18.8008l3.10059 -15.6992c2.59961 -13 -5.80078 -25.6006 -18.8008 -28.2002l-30.6992 -6.10059v-122.5c0 -53.2998 43.5 -96.5 96.8994 -96c52.9004 0.5 95.1006 44.3008 95.1006 97.2002v121.4l-30.7002 6.09961\nc-13 2.60059 -21.4004 15.2002 -18.7998 28.2002l3.19922 15.7002c2.60059 13 15.2002 21.3994 28.2002 18.7998l62.9004 -12.5996c11.2002 -2.2002 19.2998 -12.1006 19.2998 -23.5v-155.4c0 -77.2002 -55 -141.8 -127.8 -156.8\nc2.7002 -55.1006 51.8994 -99.2002 111.899 -99.2002c61.8008 0 112 46.7002 112 104v112.6c-19.5 11.2002 -32.5 32.5 -32 56.8008c0.700195 34.1992 28.8008 62.0996 63 62.5996zM448 256c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16\ns7.2002 -16 16 -16z\" />\n    <glyph glyph-name=\"suitcase\" unicode=\"&#xf0f2;\" \nd=\"M128 -32v400c0 26.5 21.5 48 48 48h160c26.5 0 48 -21.5 48 -48v-400h-256zM192 352v-32h128v32h-128zM512 272v-256c0 -26.5 -21.5 -48 -48 -48h-48v352h48c26.5 0 48 -21.5 48 -48zM96 -32h-48c-26.5 0 -48 21.5 -48 48v256c0 26.5 21.5 48 48 48h48v-352z\" />\n    <glyph glyph-name=\"bell\" unicode=\"&#xf0f3;\" horiz-adv-x=\"448\" \nd=\"M224 -64c-35.3203 0 -63.9697 28.6504 -63.9697 64h127.939c0 -35.3496 -28.6494 -64 -63.9697 -64zM439.39 85.71c6 -6.44043 8.66016 -14.1602 8.61035 -21.71c-0.0996094 -16.4004 -12.9805 -32 -32.0996 -32h-383.801c-19.1191 0 -31.9893 15.5996 -32.0996 32\nc-0.0498047 7.5498 2.61035 15.2598 8.61035 21.71c19.3193 20.7598 55.4697 51.9902 55.4697 154.29c0 77.7002 54.4795 139.9 127.939 155.16v20.8398c0 17.6699 14.3203 32 31.9805 32s31.9805 -14.3301 31.9805 -32v-20.8398\nc73.46 -15.2598 127.939 -77.46 127.939 -155.16c0 -102.3 36.1504 -133.53 55.4697 -154.29z\" />\n    <glyph glyph-name=\"coffee\" unicode=\"&#xf0f4;\" horiz-adv-x=\"640\" \nd=\"M192 64c-53 0 -96 43 -96 96v232c0 13.2998 10.7002 24 24 24h392c70.5996 0 128 -57.4004 128 -128s-57.4004 -128 -128 -128h-32c0 -53 -43 -96 -96 -96h-192zM512 352h-32v-128h32c35.2998 0 64 28.7002 64 64s-28.7002 64 -64 64zM559.7 -32h-511.4\nc-47.5996 0 -61 64 -36 64h583.3c25 0 11.8008 -64 -35.8994 -64z\" />\n    <glyph glyph-name=\"hospital\" unicode=\"&#xf0f8;\" horiz-adv-x=\"448\" \nd=\"M448 -44v-20h-448v20c0 6.62695 5.37305 12 12 12h20v360c0 13.2549 10.7451 24 24 24h88v72c0 13.2549 10.7451 24 24 24h112c13.2549 0 24 -10.7451 24 -24v-72h88c13.2549 0 24 -10.7451 24 -24v-360h20c6.62695 0 12 -5.37305 12 -12zM308 256h-40\nc-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12v40c0 6.62695 -5.37305 12 -12 12zM140 192h40c6.62695 0 12 5.37305 12 12v40c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40\nc0 -6.62695 5.37305 -12 12 -12zM244 64h-40c-6.62695 0 -12 -5.37305 -12 -12v-84h64v84c0 6.62695 -5.37305 12 -12 12zM308 160h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12v40c0 6.62695 -5.37305 12 -12 12\nzM192 148c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12v40zM182 352h26v-26c0 -3.31152 2.68848 -6 6 -6h20c3.31152 0 6 2.68848 6 6v26h26c3.31152 0 6 2.68848 6 6v20\nc0 3.31152 -2.68848 6 -6 6h-26v26c0 3.31152 -2.68848 6 -6 6h-20c-3.31152 0 -6 -2.68848 -6 -6v-26h-26c-3.31152 0 -6 -2.68848 -6 -6v-20c0 -3.31152 2.68848 -6 6 -6z\" />\n    <glyph glyph-name=\"ambulance\" unicode=\"&#xf0f9;\" horiz-adv-x=\"640\" \nd=\"M624 96c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-48c0 -53 -43 -96 -96 -96s-96 43 -96 96h-128c0 -53 -43 -96 -96 -96s-96 43 -96 96h-16c-26.5 0 -48 21.5 -48 48v320c0 26.5 21.5 48 48 48h320c26.5 0 48 -21.5 48 -48v-48h44.0996\nc12.7002 0 24.9004 -5.09961 33.9004 -14.0996l99.9004 -99.9004c9 -9 14.0996 -21.2002 14.0996 -33.9004v-108.1h16zM160 -16c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48zM304 232v48c0 4.40039 -3.59961 8 -8 8h-56v56\nc0 4.40039 -3.59961 8 -8 8h-48c-4.40039 0 -8 -3.59961 -8 -8v-56h-56c-4.40039 0 -8 -3.59961 -8 -8v-48c0 -4.40039 3.59961 -8 8 -8h56v-56c0 -4.40039 3.59961 -8 8 -8h48c4.40039 0 8 3.59961 8 8v56h56c4.40039 0 8 3.59961 8 8zM480 -16c26.5 0 48 21.5 48 48\ns-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48zM560 192v12.0996l-99.9004 99.9004h-44.0996v-112h144z\" />\n    <glyph glyph-name=\"medkit\" unicode=\"&#xf0fa;\" \nd=\"M96 -32v352h32v48c0 26.5098 21.4902 48 48 48h160c26.5098 0 48 -21.4902 48 -48v-48h32v-352h-320zM192 352v-32h128v32h-128zM512 272v-256c0 -26.5098 -21.4902 -48 -48 -48h-16v352h16c26.5098 0 48 -21.4902 48 -48zM64 -32h-16c-26.5098 0 -48 21.4902 -48 48v256\nc0 26.5098 21.4902 48 48 48h16v-352zM352 176c0 8.83691 -7.16309 16 -16 16h-48v48c0 8.83691 -7.16309 16 -16 16h-32c-8.83691 0 -16 -7.16309 -16 -16v-48h-48c-8.83691 0 -16 -7.16309 -16 -16v-32c0 -8.83691 7.16309 -16 16 -16h48v-48\nc0 -8.83691 7.16309 -16 16 -16h32c8.83691 0 16 7.16309 16 16v48h48c8.83691 0 16 7.16309 16 16v32z\" />\n    <glyph glyph-name=\"fighter-jet\" unicode=\"&#xf0fb;\" horiz-adv-x=\"640\" \nd=\"M544 224c96 -21.333 96 -26.583 96 -32s0 -10.667 -96 -32l-128 -16l-48 -16h-24l-116.842 -148h39.5088c11.666 0 21.333 -2.625 21.333 -6s-9.66602 -6 -21.333 -6h-114.667v12h16v164h-48l-66.666 -80h-34.667l-10.667 10.667v69.333h8v16h48v2.66699l-64 8v42.667\nl64 8v2.66602h-48v16h-8v69.333l10.667 10.667h34.666l66.667 -80h48v164h-16v12h114.667c11.666 0 21.333 -2.625 21.333 -6s-9.66699 -6 -21.333 -6h-39.5088l116.842 -148h24l48 -16z\" />\n    <glyph glyph-name=\"beer\" unicode=\"&#xf0fc;\" horiz-adv-x=\"448\" \nd=\"M368 352c44.1123 0 80 -35.8877 80 -80v-128.86c0 -31.5273 -18.6035 -60.2031 -47.3936 -73.0527l-80.6064 -35.9766v-42.1104c0 -13.2549 -10.7451 -24 -24 -24h-272c-13.2549 0 -24 10.7451 -24 24v400c0 13.2549 10.7451 24 24 24h272c13.2549 0 24 -10.7451 24 -24\nv-40h48zM384 143.14v128.86c0 8.82227 -7.17773 16 -16 16h-48v-183.805l54.5215 24.334c5.22754 2.33789 9.47461 8.88379 9.47852 14.6104zM208 64c8.83594 0 16 7.16406 16 16v224c0 8.83594 -7.16406 16 -16 16s-16 -7.16406 -16 -16v-224\nc0 -8.83594 7.16406 -16 16 -16zM112 64c8.83594 0 16 7.16406 16 16v224c0 8.83594 -7.16406 16 -16 16s-16 -7.16406 -16 -16v-224c0 -8.83594 7.16406 -16 16 -16z\" />\n    <glyph glyph-name=\"h-square\" unicode=\"&#xf0fd;\" horiz-adv-x=\"448\" \nd=\"M448 368v-352c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h352c26.5098 0 48 -21.4902 48 -48zM336 320h-32c-8.83691 0 -16 -7.16309 -16 -16v-80h-128v80c0 8.83691 -7.16309 16 -16 16h-32\nc-8.83691 0 -16 -7.16309 -16 -16v-224c0 -8.83691 7.16309 -16 16 -16h32c8.83691 0 16 7.16309 16 16v80h128v-80c0 -8.83691 7.16309 -16 16 -16h32c8.83691 0 16 7.16309 16 16v224c0 8.83691 -7.16309 16 -16 16z\" />\n    <glyph glyph-name=\"plus-square\" unicode=\"&#xf0fe;\" horiz-adv-x=\"448\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM368 164v56c0 6.59961 -5.40039 12 -12 12h-92v92c0 6.59961 -5.40039 12 -12 12h-56c-6.59961 0 -12 -5.40039 -12 -12v-92h-92\nc-6.59961 0 -12 -5.40039 -12 -12v-56c0 -6.59961 5.40039 -12 12 -12h92v-92c0 -6.59961 5.40039 -12 12 -12h56c6.59961 0 12 5.40039 12 12v92h92c6.59961 0 12 5.40039 12 12z\" />\n    <glyph glyph-name=\"angle-double-left\" unicode=\"&#xf100;\" horiz-adv-x=\"448\" \nd=\"M223.7 209l136 136c9.39941 9.40039 24.5996 9.40039 33.8994 0l22.6006 -22.5996c9.39941 -9.40039 9.39941 -24.6006 0 -33.9004l-96.2998 -96.5l96.3994 -96.4004c9.40039 -9.39941 9.40039 -24.5996 0 -33.8994l-22.5996 -22.7002\nc-9.40039 -9.40039 -24.6006 -9.40039 -33.9004 0l-136 136c-9.5 9.40039 -9.5 24.5996 -0.0996094 34zM31.7002 175c-9.40039 9.40039 -9.40039 24.5996 0.0996094 34l136 136c9.2998 9.40039 24.5 9.40039 33.9004 0l22.5996 -22.7002\nc9.40039 -9.2998 9.40039 -24.5 0 -33.8994l-96.3994 -96.4004l96.2998 -96.5c9.39941 -9.2998 9.39941 -24.5 0 -33.9004l-22.6006 -22.5996c-9.2998 -9.40039 -24.5 -9.40039 -33.8994 0z\" />\n    <glyph glyph-name=\"angle-double-right\" unicode=\"&#xf101;\" horiz-adv-x=\"448\" \nd=\"M224.3 175l-136 -136c-9.39941 -9.40039 -24.5996 -9.40039 -33.8994 0l-22.6006 22.5996c-9.39941 9.40039 -9.39941 24.6006 0 33.9004l96.4004 96.4004l-96.4004 96.3994c-9.39941 9.40039 -9.39941 24.6006 0 33.9004l22.5 22.7998\nc9.40039 9.40039 24.6006 9.40039 33.9004 0l136 -136c9.5 -9.40039 9.5 -24.5996 0.0996094 -34zM416.3 209c9.40039 -9.40039 9.40039 -24.5996 0 -33.7998l-136 -136c-9.2998 -9.40039 -24.5 -9.40039 -33.8994 0l-22.6006 22.5996\nc-9.39941 9.2998 -9.39941 24.5 0 33.9004l96.4004 96.3994l-96.4004 96.4004c-9.39941 9.2998 -9.39941 24.5 0 33.9004l22.6006 22.5996c9.2998 9.40039 24.5 9.40039 33.8994 0z\" />\n    <glyph glyph-name=\"angle-double-up\" unicode=\"&#xf102;\" horiz-adv-x=\"320\" \nd=\"M177 192.3l136 -136c9.40039 -9.39941 9.40039 -24.5996 0 -33.8994l-22.5996 -22.6006c-9.40039 -9.39941 -24.6006 -9.39941 -33.9004 0l-96.5 96.2998l-96.4004 -96.3994c-9.39941 -9.40039 -24.5996 -9.40039 -33.8994 0l-22.7002 22.5996\nc-9.40039 9.40039 -9.40039 24.6006 0 33.9004l136 136c9.40039 9.5 24.5996 9.5 34 0.0996094zM143 384.3c9.40039 9.40039 24.5996 9.40039 33.7998 0l136 -136c9.40039 -9.2998 9.40039 -24.5 0 -33.8994l-22.5996 -22.6006c-9.2998 -9.39941 -24.5 -9.39941 -33.9004 0\nl-96.3994 96.4004l-96.4004 -96.4004c-9.2998 -9.39941 -24.5 -9.39941 -33.9004 0l-22.5996 22.6006c-9.40039 9.2998 -9.40039 24.5 0 33.8994z\" />\n    <glyph glyph-name=\"angle-double-down\" unicode=\"&#xf103;\" horiz-adv-x=\"320\" \nd=\"M143 191.7l-136 136c-9.40039 9.39941 -9.40039 24.5996 0 33.8994l22.5996 22.6006c9.40039 9.39941 24.6006 9.39941 33.9004 0l96.4004 -96.4004l96.3994 96.4004c9.40039 9.39941 24.6006 9.39941 33.9004 0l22.7998 -22.5\nc9.40039 -9.40039 9.40039 -24.6006 0 -33.9004l-136 -136c-9.40039 -9.5 -24.5996 -9.5 -34 -0.0996094zM177 -0.299805c-9.40039 -9.40039 -24.5996 -9.40039 -34 0.0996094l-136 136c-9.40039 9.2998 -9.40039 24.5 0 33.9004l22.7002 22.5996\nc9.2998 9.40039 24.5 9.40039 33.8994 0l96.4004 -96.3994l96.5 96.2998c9.2998 9.39941 24.5 9.39941 33.9004 0l22.5996 -22.6006c9.40039 -9.2998 9.40039 -24.5 0 -33.8994z\" />\n    <glyph glyph-name=\"angle-left\" unicode=\"&#xf104;\" horiz-adv-x=\"256\" \nd=\"M31.7002 209l136 136c9.39941 9.40039 24.5996 9.40039 33.8994 0l22.6006 -22.5996c9.39941 -9.40039 9.39941 -24.6006 0 -33.9004l-96.2998 -96.5l96.3994 -96.4004c9.40039 -9.39941 9.40039 -24.5996 0 -33.8994l-22.5996 -22.7002\nc-9.40039 -9.40039 -24.6006 -9.40039 -33.9004 0l-136 136c-9.5 9.40039 -9.5 24.5996 -0.0996094 34z\" />\n    <glyph glyph-name=\"angle-right\" unicode=\"&#xf105;\" horiz-adv-x=\"256\" \nd=\"M224.3 175l-136 -136c-9.39941 -9.40039 -24.5996 -9.40039 -33.8994 0l-22.6006 22.5996c-9.39941 9.40039 -9.39941 24.6006 0 33.9004l96.4004 96.4004l-96.4004 96.3994c-9.39941 9.40039 -9.39941 24.6006 0 33.9004l22.5 22.7998\nc9.40039 9.40039 24.6006 9.40039 33.9004 0l136 -136c9.5 -9.40039 9.5 -24.5996 0.0996094 -34z\" />\n    <glyph glyph-name=\"angle-up\" unicode=\"&#xf106;\" horiz-adv-x=\"320\" \nd=\"M177 288.3l136 -136c9.40039 -9.39941 9.40039 -24.5996 0 -33.8994l-22.5996 -22.6006c-9.40039 -9.39941 -24.6006 -9.39941 -33.9004 0l-96.5 96.2998l-96.4004 -96.3994c-9.39941 -9.40039 -24.5996 -9.40039 -33.8994 0l-22.7002 22.5996\nc-9.40039 9.40039 -9.40039 24.6006 0 33.9004l136 136c9.40039 9.5 24.5996 9.5 34 0.0996094z\" />\n    <glyph glyph-name=\"angle-down\" unicode=\"&#xf107;\" horiz-adv-x=\"320\" \nd=\"M143 95.7002l-136 136c-9.40039 9.39941 -9.40039 24.5996 0 33.8994l22.5996 22.6006c9.40039 9.39941 24.6006 9.39941 33.9004 0l96.4004 -96.4004l96.3994 96.4004c9.40039 9.39941 24.6006 9.39941 33.9004 0l22.5996 -22.6006\nc9.40039 -9.39941 9.40039 -24.5996 0 -33.8994l-136 -136c-9.2002 -9.40039 -24.3994 -9.40039 -33.7998 0z\" />\n    <glyph glyph-name=\"desktop\" unicode=\"&#xf108;\" horiz-adv-x=\"576\" \nd=\"M528 448c26.5 0 48 -21.5 48 -48v-320c0 -26.5 -21.5 -48 -48 -48h-192l16 -48h72c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24h-272c-13.2998 0 -24 10.7002 -24 24s10.7002 24 24 24h72l16 48h-192c-26.5 0 -48 21.5 -48 48v320c0 26.5 21.5 48 48 48h480z\nM512 96v288h-448v-288h448z\" />\n    <glyph glyph-name=\"laptop\" unicode=\"&#xf109;\" horiz-adv-x=\"640\" \nd=\"M624 32c8.7998 0 16 -7.2002 16 -16v-16c0 -35.2002 -28.7998 -64 -64 -64h-512c-35.2002 0 -64 28.7998 -64 64v16c0 8.7998 7.2002 16 16 16h239.23c-0.25 -14.5303 14.0791 -32 32.7695 -32h60.7998c18.0303 0 32 12.1904 32.7402 32h242.46zM576 400v-336h-512v336\nc0 26.4004 21.5996 48 48 48h416c26.4004 0 48 -21.5996 48 -48zM512 128v256h-384v-256h384z\" />\n    <glyph glyph-name=\"tablet\" unicode=\"&#xf10a;\" horiz-adv-x=\"448\" \nd=\"M400 448c26.5 0 48 -21.5 48 -48v-416c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48h352zM224 -32c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32z\" />\n    <glyph glyph-name=\"mobile\" unicode=\"&#xf10b;\" horiz-adv-x=\"320\" \nd=\"M272 448c26.5 0 48 -21.5 48 -48v-416c0 -26.5 -21.5 -48 -48 -48h-224c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48h224zM160 -32c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32z\" />\n    <glyph glyph-name=\"quote-left\" unicode=\"&#xf10d;\" \nd=\"M464 192c26.5 0 48 -21.5 48 -48v-128c0 -26.5 -21.5 -48 -48 -48h-128c-26.5 0 -48 21.5 -48 48v240c0 88.4004 71.5996 160 160 160h8c13.2998 0 24 -10.7002 24 -24v-48c0 -13.2998 -10.7002 -24 -24 -24h-8c-35.2998 0 -64 -28.7002 -64 -64v-64h80zM176 192\nc26.5 0 48 -21.5 48 -48v-128c0 -26.5 -21.5 -48 -48 -48h-128c-26.5 0 -48 21.5 -48 48v240c0 88.4004 71.5996 160 160 160h8c13.2998 0 24 -10.7002 24 -24v-48c0 -13.2998 -10.7002 -24 -24 -24h-8c-35.2998 0 -64 -28.7002 -64 -64v-64h80z\" />\n    <glyph glyph-name=\"quote-right\" unicode=\"&#xf10e;\" \nd=\"M464 416c26.5 0 48 -21.5 48 -48v-240c0 -88.4004 -71.5996 -160 -160 -160h-8c-13.2998 0 -24 10.7002 -24 24v48c0 13.2998 10.7002 24 24 24h8c35.2998 0 64 28.7002 64 64v64h-80c-26.5 0 -48 21.5 -48 48v128c0 26.5 21.5 48 48 48h128zM176 416\nc26.5 0 48 -21.5 48 -48v-240c0 -88.4004 -71.5996 -160 -160 -160h-8c-13.2998 0 -24 10.7002 -24 24v48c0 13.2998 10.7002 24 24 24h8c35.2998 0 64 28.7002 64 64v64h-80c-26.5 0 -48 21.5 -48 48v128c0 26.5 21.5 48 48 48h128z\" />\n    <glyph glyph-name=\"spinner\" unicode=\"&#xf110;\" \nd=\"M304 400c0 -26.5098 -21.4902 -48 -48 -48s-48 21.4902 -48 48s21.4902 48 48 48s48 -21.4902 48 -48zM256 32c26.5098 0 48 -21.4902 48 -48s-21.4902 -48 -48 -48s-48 21.4902 -48 48s21.4902 48 48 48zM464 240c26.5098 0 48 -21.4902 48 -48s-21.4902 -48 -48 -48\ns-48 21.4902 -48 48s21.4902 48 48 48zM96 192c0 -26.5098 -21.4902 -48 -48 -48s-48 21.4902 -48 48s21.4902 48 48 48s48 -21.4902 48 -48zM108.922 92.9219c26.5088 0 48 -21.4912 48 -48c0 -26.5098 -21.4902 -48 -48 -48s-48 21.4902 -48 48s21.4902 48 48 48z\nM403.078 92.9219c26.5098 0 48 -21.4912 48 -48c0 -26.5098 -21.4902 -48 -48 -48s-48 21.4902 -48 48s21.4902 48 48 48zM108.922 387.078c26.5088 0 48 -21.4902 48 -48s-21.4902 -48 -48 -48s-48 21.4902 -48 48s21.4902 48 48 48z\" />\n    <glyph glyph-name=\"circle\" unicode=\"&#xf111;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248z\" />\n    <glyph glyph-name=\"smile\" unicode=\"&#xf118;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM328 272c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32s32 14.2998 32 32s-14.2998 32 -32 32zM168 272c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32\ns32 14.2998 32 32s-14.2998 32 -32 32zM362.8 101.8c13.5 16.2998 -11.2002 36.7002 -24.5996 20.5c-22.4004 -26.7998 -55.2002 -42.2002 -90.2002 -42.2002s-67.7998 15.3008 -90.2002 42.2002c-13.5996 16.2002 -38.2002 -4.2002 -24.5996 -20.5\nc28.5 -34.2002 70.2998 -53.7998 114.8 -53.7998s86.2998 19.5996 114.8 53.7998z\" />\n    <glyph glyph-name=\"frown\" unicode=\"&#xf119;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM328 272c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32s32 14.2998 32 32s-14.2998 32 -32 32zM168 272c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32\ns32 14.2998 32 32s-14.2998 32 -32 32zM338.2 53.7998c13.5 -16.2998 38.0996 4.2002 24.5 20.4004c-28.4004 34.2002 -70.2998 53.7998 -114.7 53.7998s-86.2998 -19.5996 -114.8 -53.7002c-13.5 -16.2998 11.0996 -36.7998 24.5996 -20.5\nc22.4004 26.7998 55.2998 42.2002 90.2002 42.2002s67.7998 -15.4004 90.2002 -42.2002z\" />\n    <glyph glyph-name=\"meh\" unicode=\"&#xf11a;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM168 272c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32s32 14.2998 32 32s-14.2998 32 -32 32zM344 80c21.2002 0 21.2002 32 0 32h-192c-21.2002 0 -21.2002 -32 0 -32\nh192zM328 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32z\" />\n    <glyph glyph-name=\"gamepad\" unicode=\"&#xf11b;\" horiz-adv-x=\"640\" \nd=\"M480 352c88.4004 0 159.9 -71.5996 159.9 -160s-71.6006 -160 -160 -160c-44.7002 0 -85.2002 18.4004 -114.2 48h-91.5c-29 -29.5996 -69.4004 -48 -114.2 -48c-88.4004 0 -160 71.5996 -160 160s71.5996 160 160 160h320zM256 172v40c0 6.59961 -5.40039 12 -12 12h-52\nv52c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-52h-52c-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h52v-52c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12v52h52c6.59961 0 12 5.40039 12 12zM440 104\nc26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48zM520 184c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48z\" />\n    <glyph glyph-name=\"keyboard\" unicode=\"&#xf11c;\" horiz-adv-x=\"576\" \nd=\"M528 0h-480c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h480c26.5098 0 48 -21.4902 48 -48v-288c0 -26.5098 -21.4902 -48 -48 -48zM128 268v40c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40\nc0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM224 268v40c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM320 268v40c0 6.62695 -5.37305 12 -12 12h-40\nc-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM416 268v40c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM512 268v40\nc0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM176 172v40c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40\nc6.62695 0 12 5.37305 12 12zM272 172v40c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM368 172v40c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40\nc0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM464 172v40c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM128 76v40c0 6.62695 -5.37305 12 -12 12h-40\nc-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM416 76v40c0 6.62695 -5.37305 12 -12 12h-232c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h232c6.62695 0 12 5.37305 12 12zM512 76v40\nc0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12z\" />\n    <glyph glyph-name=\"flag-checkered\" unicode=\"&#xf11e;\" \nd=\"M243.2 258.1c24.2002 -6.69922 47.5996 -16.3994 73.5996 -22.1992v-68.2002c-24.2998 6.7002 -47.5 16.3994 -73.5996 22.2998v68.0996zM466.5 381.1c21.2002 9.80078 45.5 -5.69922 45.4004 -29v-243.1c0 -10.5996 -5.10059 -20.4004 -13.8008 -26.4004\nc-35.7998 -24.5996 -74.2998 -40.8994 -122.5 -40.8994c-67.3994 0 -111.6 34.7998 -165.199 34.7998c-50.8008 0 -86.1006 -10 -114.4 -22.0996v-94.4004c0 -13.2998 -10.7002 -24 -24 -24h-16c-13.2998 0 -24 10.7002 -24 24v386.1c-14.5 10.1006 -24 26.9004 -24 45.9004\nc0 31.7002 26.2998 57.2998 58.2998 56c28.5 -1.2002 51.7998 -24 53.6006 -52.4004c0.5 -8.39941 -0.800781 -16.2998 -3.60059 -23.5996c20.7002 7.59961 43 12 68 12c67.4004 0 111.7 -34.7998 165.2 -34.7998c40.5 0 82.7002 16 117 31.8994zM169.6 122.5v71.2998\nc-26.0996 -2.39941 -47.3994 -8.09961 -73.5996 -17.3994v-70.5c23.5996 8.39941 47.7998 13.8994 73.5996 16.5996zM464 257v70.5c-21.2998 -8.90039 -46.5996 -17.7002 -73.5996 -22.5v-71.9004c-26 -4.19922 -49.9004 -2.59961 -73.6006 2.7002v68.4004\nc-26.3994 4.59961 -49.8994 13.8994 -73.5996 21.2998v-67.4004c-25.2002 7 -46.6006 9.40039 -73.6006 5.7002v71.6006c-23.5 -2.2002 -40.3994 -9.80078 -73.5996 -22v-70.5c29 10.6992 51.2002 17.7998 73.5996 20.8994v-70c32.8008 3 53.9004 0.600586 73.6006 -3.7998\nv-68.5c26.2998 -4.59961 49.7002 -13.9004 73.5996 -21.2998v67.3994c25.7002 -7.09961 46.6006 -9.2998 73.6006 -5.59961v-71.5996c25.0996 2.39941 48.5 11 73.5996 27.0996v70.5c-22.2002 -14.2002 -48.7998 -22.5996 -73.5996 -26v71.0996\nc27.2998 4.40039 50 14.1006 73.5996 23.9004z\" />\n    <glyph glyph-name=\"terminal\" unicode=\"&#xf120;\" horiz-adv-x=\"640\" \nd=\"M257.981 175.029l-194.344 -194.344c-9.37305 -9.37207 -24.5684 -9.37207 -33.9404 0l-22.668 22.667c-9.35742 9.35742 -9.375 24.5225 -0.0400391 33.9014l154.021 154.746l-154.021 154.745c-9.33496 9.37891 -9.31738 24.5439 0.0400391 33.9014l22.667 22.667\nc9.37305 9.37207 24.5684 9.37207 33.9404 0l194.344 -194.344c9.37207 -9.37207 9.37207 -24.5674 0 -33.9404zM640 -8c0 -13.2549 -10.7451 -24 -24 -24h-304c-13.2549 0 -24 10.7451 -24 24v32c0 13.2549 10.7451 24 24 24h304c13.2549 0 24 -10.7451 24 -24v-32z\" />\n    <glyph glyph-name=\"code\" unicode=\"&#xf121;\" horiz-adv-x=\"640\" \nd=\"M278.9 -63.5l-61 17.7002c-6.40039 1.7998 -10 8.5 -8.2002 14.8994l136.5 470.2c1.7998 6.40039 8.5 10 14.8994 8.2002l61 -17.7002c6.40039 -1.7998 10 -8.5 8.2002 -14.8994l-136.5 -470.2c-1.89941 -6.40039 -8.5 -10.1006 -14.8994 -8.2002zM164.9 48.7002\nc-4.5 -4.90039 -12.1006 -5.10059 -17 -0.5l-144.101 135.1c-5.09961 4.7002 -5.09961 12.7998 0 17.5l144.101 135c4.89941 4.60059 12.5 4.2998 17 -0.5l43.5 -46.3994c4.69922 -4.90039 4.2998 -12.7002 -0.800781 -17.2002l-90.5996 -79.7002l90.5996 -79.7002\nc5.10059 -4.5 5.40039 -12.2998 0.800781 -17.2002zM492.1 48.0996c-4.89941 -4.5 -12.5 -4.2998 -17 0.600586l-43.5 46.3994c-4.69922 4.90039 -4.2998 12.7002 0.800781 17.2002l90.5996 79.7002l-90.5996 79.7998c-5.10059 4.5 -5.40039 12.2998 -0.800781 17.2002\nl43.5 46.4004c4.60059 4.7998 12.2002 5 17 0.5l144.101 -135.2c5.09961 -4.7002 5.09961 -12.7998 0 -17.5z\" />\n    <glyph glyph-name=\"reply-all\" unicode=\"&#xf122;\" horiz-adv-x=\"576\" \nd=\"M136.309 258.164l176.005 151.985c15.4062 13.3047 39.6865 2.50293 39.6865 -18.1641v-82.7637c129.182 -10.2305 224 -52.2119 224 -183.548c0 -61.4404 -39.582 -122.309 -83.333 -154.132c-13.6533 -9.93066 -33.1113 2.5332 -28.0771 18.6309\nc38.5117 123.162 -3.92188 169.482 -112.59 182.016v-84.1758c0 -20.7012 -24.2998 -31.4531 -39.6865 -18.1641l-176.005 151.987c-11.0703 9.56152 -11.0859 26.7529 0 36.3281zM8.30859 221.836c-11.0703 9.56152 -11.0859 26.7529 0 36.3281l176.005 151.985\nc15.4062 13.3047 39.6865 2.50293 39.6865 -18.1641v-15.8174l-108.607 -93.7861c-10.7041 -9.23926 -19.3926 -28.2158 -19.3926 -42.3564v-0.0234375v-0.0244141c0 -14.1416 8.68848 -33.1191 19.3936 -42.3604l108.606 -93.7852v-15.8184\nc0 -20.7002 -24.2998 -31.4531 -39.6865 -18.1641z\" />\n    <glyph glyph-name=\"location-arrow\" unicode=\"&#xf124;\" \nd=\"M444.52 444.48c38.3809 16 79.9609 -25.5801 63.9707 -63.9707l-191.9 -415.779c-22.3896 -47.9805 -92.75 -31.9805 -92.75 19.1895v175.91h-175.91c-51.1699 0 -67.1602 70.3604 -19.1895 92.75z\" />\n    <glyph glyph-name=\"crop\" unicode=\"&#xf125;\" \nd=\"M488 96c13.25 0 24 -10.7402 24 -24v-48c0 -13.25 -10.75 -24 -24 -24h-40v-40c0 -13.25 -10.75 -24 -24 -24h-48c-13.25 0 -24 10.75 -24 24v282.75l-146.75 -146.75h114.75v-96h-232c-13.25 0 -24 10.75 -24 24v264h-40c-13.25 0 -24 10.75 -24 24v48\nc0 13.2598 10.75 24 24 24h40v40c0 13.2598 10.75 24 24 24h48c13.25 0 24 -10.7402 24 -24v-282.75l146.75 146.75h-114.75v96h210.75l59.3096 59.3096c6.25 6.25 16.3809 6.25 22.6309 0l22.6191 -22.6191c6.25 -6.25 6.25 -16.3809 0 -22.6309l-59.3096 -59.3096v-242.75\nh40z\" />\n    <glyph glyph-name=\"code-branch\" unicode=\"&#xf126;\" horiz-adv-x=\"384\" \nd=\"M384 304c0 -35.2002 -22.7998 -65.0996 -54.4004 -75.9004c-0.5 -28.0996 -7.59961 -50.5 -21.5996 -67.8994c-28.2002 -35 -76 -39.5 -118.2 -43.4004c-25.7002 -2.39941 -49.8994 -4.59961 -66.0996 -12.7998c-7.10059 -3.59961 -11.7998 -8.2002 -14.9004 -13.4004\nc30 -11.5 51.2002 -40.5996 51.2002 -74.5996c0 -44.2002 -35.7998 -80 -80 -80s-80 35.7998 -80 80c0 35.7998 23.5 66.0996 56 76.4004v199.3c-32.5 10.2002 -56 40.5 -56 76.2998c0 44.2002 35.7998 80 80 80s80 -35.7998 80 -80c0 -35.7998 -23.5 -66.0996 -56 -76.2998\nv-144c23.9004 11.5 53.0996 14.2998 81.2998 16.8994c35.9004 3.30078 69.7998 6.5 85.2002 25.7002c6.7998 8.40039 10.4004 20.7998 11 36.9004c-33.2002 9.7002 -57.5 40.3994 -57.5 76.7998c0 44.2002 35.7998 80 80 80s80 -35.7998 80 -80zM80 384\nc-8.7998 0 -16 -7.2002 -16 -16s7.2002 -16 16 -16s16 7.2002 16 16s-7.2002 16 -16 16zM80 0c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM304 320c-8.7998 0 -16 -7.2002 -16 -16s7.2002 -16 16 -16s16 7.2002 16 16\ns-7.2002 16 -16 16z\" />\n    <glyph glyph-name=\"unlink\" unicode=\"&#xf127;\" \nd=\"M304.083 42.0928c4.68555 -4.68555 4.68555 -12.2842 0 -16.9707l-44.6738 -44.6738c-59.2627 -59.2627 -155.693 -59.2666 -214.961 0c-59.2646 59.2646 -59.2646 155.695 0 214.96l44.6748 44.6748c4.68555 4.68555 12.2842 4.68555 16.9707 0l39.5986 -39.5977\nc4.68555 -4.68652 4.68555 -12.2842 0 -16.9717l-44.6758 -44.6738c-28.0713 -28.0732 -28.0713 -73.75 0 -101.823c28.0723 -28.0713 73.75 -28.0723 101.824 0l44.6738 44.6748c4.68652 4.68555 12.2842 4.68555 16.9717 0zM247.515 302.309l-39.5967 39.5986\nc-4.68555 4.68652 -4.68555 12.2852 0 16.9707l44.6738 44.6738c59.2666 59.2646 155.695 59.2646 214.961 0s59.2656 -155.694 0 -214.96l-44.6748 -44.6748c-4.68652 -4.68555 -12.2852 -4.68555 -16.9707 0l-39.5986 39.5977c-4.68555 4.6875 -4.68555 12.2852 0 16.9717\nl44.6758 44.6738c28.0713 28.0732 28.0713 73.75 0 101.823c-28.0742 28.0723 -73.752 28.0742 -101.824 0l-44.6738 -44.6748c-4.6875 -4.68555 -12.2852 -4.68555 -16.9717 0zM482.343 -56.9707c-9.37207 -9.37207 -24.5674 -9.37207 -33.9404 0l-441.373 441.373\nc-9.37305 9.37207 -9.37305 24.5674 0 33.9404l22.6279 22.6279c9.37207 9.37305 24.5674 9.37305 33.9404 0l441.372 -441.374c9.37305 -9.37207 9.37305 -24.5674 0 -33.9404z\" />\n    <glyph glyph-name=\"question\" unicode=\"&#xf128;\" horiz-adv-x=\"384\" \nd=\"M202.021 448c84.8809 0 175.482 -66.2559 175.481 -153.6c0 -115.982 -125.268 -117.768 -125.268 -160.627v-5.77344c0 -13.2549 -10.7451 -24 -24 -24h-72.4717c-13.2549 0 -24 10.7451 -24 24v9.78809c0 61.8291 46.876 86.5449 82.2998 106.405\nc30.376 17.0293 48.9922 28.6113 48.9922 51.1641c0 29.832 -38.0518 49.6309 -68.8154 49.6309c-39.127 0 -57.708 -18.0684 -82.7568 -49.4492c-8.12109 -10.1738 -22.8809 -12.0127 -33.2529 -4.14844l-43.1387 32.709c-10.2705 7.78809 -12.541 22.2939 -5.17773 32.874\nc40.5889 58.3232 92.2881 91.0264 172.107 91.0264zM192 74.541c38.1963 0 69.2715 -31.0742 69.2715 -69.2695c0 -38.1963 -31.0752 -69.2715 -69.2715 -69.2715s-69.2715 31.0752 -69.2715 69.2695c0 38.1963 31.0752 69.2715 69.2715 69.2715z\" />\n    <glyph glyph-name=\"info\" unicode=\"&#xf129;\" horiz-adv-x=\"192\" \nd=\"M20 23.7715h20v144.457h-20c-11.0459 0 -20 8.9541 -20 20v47.7715c0 11.0459 8.9541 20 20 20h112c11.0459 0 20 -8.9541 20 -20v-212.229h20c11.0459 0 20 -8.9541 20 -20v-47.7715c0 -11.0459 -8.9541 -20 -20 -20h-152c-11.0459 0 -20 8.9541 -20 20v47.7715\nc0 11.0459 8.9541 20 20 20zM96 448c39.7637 0 72 -32.2354 72 -72s-32.2354 -72 -72 -72s-72 32.2354 -72 72s32.2354 72 72 72z\" />\n    <glyph glyph-name=\"exclamation\" unicode=\"&#xf12a;\" horiz-adv-x=\"192\" \nd=\"M176 16c0 -44.1123 -35.8877 -80 -80 -80s-80 35.8877 -80 80s35.8877 80 80 80s80 -35.8877 80 -80zM25.2598 422.801c-0.68457 13.709 10.2441 25.1992 23.9707 25.1992h93.5391c13.7266 0 24.6553 -11.4902 23.9707 -25.1992l-13.6006 -272\nc-0.638672 -12.7725 -11.1807 -22.8008 -23.9697 -22.8008h-66.3398c-12.7891 0 -23.3311 10.0283 -23.9697 22.8008z\" />\n    <glyph glyph-name=\"superscript\" unicode=\"&#xf12b;\" \nd=\"M496 288c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-96c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h16v96h-16c-8.82422 0.0078125 -15.9863 7.17578 -15.9863 16c0 2.08984 0.759766 5.30176 1.69629 7.16992l16 32\nc2.44141 4.87012 8.84277 8.8252 14.29 8.83008h48c8.83203 0 16 -7.16797 16 -16v-144h16zM336 384c8.83203 0 16 -7.16797 16 -16v-48c0 -8.83203 -7.16797 -16 -16 -16h-33.4805l-77.8096 -112l77.8096 -112h33.4805c8.83203 0 16 -7.16797 16 -16v-48\nc0 -8.83203 -7.16797 -16 -16 -16h-67c-4.58984 0.0224609 -10.4404 3.10059 -13.0596 6.87012l-79.9004 115l-79.9004 -115c-2.63477 -3.79199 -8.52148 -6.87012 -13.1387 -6.87012h-0.000976562h-67c-8.83203 0 -16 7.16797 -16 16v48c0 8.83203 7.16797 16 16 16\nh33.4805l77.8096 112l-77.8096 112h-33.4805c-8.83203 0 -16 7.16797 -16 16v48c0 8.83203 7.16797 16 16 16h67c4.58984 -0.0224609 10.4404 -3.10059 13.0596 -6.87012l79.9004 -115l79.9004 115c2.63477 3.79199 8.52148 6.87012 13.1387 6.87012h0.000976562h67z\" />\n    <glyph glyph-name=\"subscript\" unicode=\"&#xf12c;\" \nd=\"M496 0c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-96c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h16v96h-16c-8.82422 0.0078125 -15.9863 7.17578 -15.9863 16c0 2.08984 0.759766 5.30176 1.69629 7.16992l16 32\nc2.44141 4.87012 8.84277 8.8252 14.29 8.83008h48c8.83203 0 16 -7.16797 16 -16v-144h16zM336 384c8.83203 0 16 -7.16797 16 -16v-48c0 -8.83203 -7.16797 -16 -16 -16h-33.4805l-77.8096 -112l77.8096 -112h33.4805c8.83203 0 16 -7.16797 16 -16v-48\nc0 -8.83203 -7.16797 -16 -16 -16h-67c-4.58984 0.0224609 -10.4404 3.10059 -13.0596 6.87012l-79.9004 115l-79.9004 -115c-2.63477 -3.79199 -8.52148 -6.87012 -13.1387 -6.87012h-0.000976562h-67c-8.83203 0 -16 7.16797 -16 16v48c0 8.83203 7.16797 16 16 16\nh33.4805l77.8096 112l-77.8096 112h-33.4805c-8.83203 0 -16 7.16797 -16 16v48c0 8.83203 7.16797 16 16 16h67c4.58984 -0.0224609 10.4404 -3.10059 13.0596 -6.87012l79.9004 -115l79.9004 115c2.63477 3.79199 8.52148 6.87012 13.1387 6.87012h0.000976562h67z\" />\n    <glyph glyph-name=\"eraser\" unicode=\"&#xf12d;\" \nd=\"M497.941 174.059l-142.059 -142.059h144.117c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-356c-10.9756 0 -26.1816 6.29883 -33.9424 14.0586l-96 96c-18.7441 18.7451 -18.7441 49.1377 0 67.8828l256 256\nc18.7471 18.7451 49.1387 18.7441 67.8838 0l160 -160c18.7441 -18.7451 18.7441 -49.1377 0 -67.8828zM195.314 236.686l-124.687 -124.686l80 -80h114.745l67.3135 67.3135z\" />\n    <glyph glyph-name=\"puzzle-piece\" unicode=\"&#xf12e;\" horiz-adv-x=\"576\" \nd=\"M519.442 159.349c37.5957 0 56.5576 -31.5928 56.5576 -65.792c0 -33.5469 -19.2881 -61.5566 -54.9229 -61.5557c-39.8848 0 -50.3457 36.1523 -86.3086 36.1523c-60.5518 0 -25.8262 -120.102 -25.8262 -120.102c-51.5557 0 -181.23 -35.0732 -181.23 25.7305\nc0 35.8271 36.2881 46.25 36.2881 85.9844c0 35.501 -28.1152 54.7178 -61.7881 54.7178c-34.3271 0 -63.5771 -18.8906 -63.5771 -56.3467c0 -41.3633 40 -58.998 40 -81.4707c0 -69.709 -178.635 -28.6621 -178.635 -28.6621v333.237s175.885 -40.9609 175.884 28.6621\nc0 22.4727 -31.7109 40.3857 -31.7109 81.75c0 37.4551 31.7119 56.3457 66.3662 56.3457c33.3457 0 61.4609 -19.2158 61.4609 -54.7178c0 -39.7354 -36.2881 -50.1582 -36.2881 -85.9854c0 -83.2969 196.288 -3.29688 196.288 -3.29688\ns-54.5908 -176.244 5.38379 -176.244c22.5586 0 40.5391 31.5928 82.0586 31.5928z\" />\n    <glyph glyph-name=\"microphone\" unicode=\"&#xf130;\" horiz-adv-x=\"352\" \nd=\"M176 96c-53.0195 0 -96 42.9805 -96 96v160c0 53.0195 42.9805 96 96 96s96 -42.9805 96 -96v-160c0 -53.0195 -42.9805 -96 -96 -96zM336 256c8.83984 0 16 -7.16016 16 -16v-48c0 -88.9004 -66.29 -162.47 -152 -174.23v-33.7695h56c8.83984 0 16 -7.16016 16 -16v-16\nc0 -8.83984 -7.16016 -16 -16 -16h-160c-8.83984 0 -16 7.16016 -16 16v16c0 8.83984 7.16016 16 16 16h56v34.1504c-88.0303 12.1396 -152 92.0498 -152 181.689v40.1602c0 8.83984 7.16016 16 16 16h16c8.83984 0 16 -7.16016 16 -16v-42.2998\nc0 -66.8105 48.71 -126.59 115.21 -133.08c76.2998 -7.44043 140.79 52.5801 140.79 127.38v48c0 8.83984 7.16016 16 16 16h16z\" />\n    <glyph glyph-name=\"microphone-slash\" unicode=\"&#xf131;\" horiz-adv-x=\"640\" \nd=\"M633.82 -10.0996c6.97949 -5.43066 8.22949 -15.4805 2.81934 -22.4502l-19.6396 -25.2705c-5.42969 -6.97949 -15.4805 -8.23926 -22.46 -2.80957l-588.36 454.729c-6.97949 5.43066 -8.22949 15.4805 -2.80957 22.4502l19.6396 25.2705\nc5.41992 6.97949 15.4805 8.22949 22.46 2.80957l178.54 -137.99v45.3604c0 53.0195 42.9805 96 96 96c53.0205 0 96 -42.9805 96 -96v-160.01c0 -10.4502 -2.17969 -20.2705 -5.2793 -29.6699l26.5498 -20.5205c6.75977 15.4004 10.7197 32.2803 10.7197 50.2002v48\nc0 8.83984 7.16016 16 16 16h16c8.83984 0 16 -7.16016 16 -16v-48c0 -29.0098 -7.38965 -56.1299 -19.9805 -80.1396zM400 -16c8.83984 0 16 -7.16016 16 -16v-16c0 -8.83984 -7.16016 -16 -16 -16h-160c-8.83984 0 -16 7.16016 -16 16v16c0 8.83984 7.16016 16 16 16h56\nv34.1504c-88.0303 12.1396 -152 92.0498 -152 181.689v6.85059l52.0303 -40.2305c12.4395 -53.2197 55.3301 -96.4004 111.18 -101.85c6.94043 -0.669922 13.6396 -0.200195 20.3496 0.199219l50.1104 -38.7295c-10.8203 -3.77051 -22.0098 -6.70996 -33.6699 -8.31055\nv-33.7695h56z\" />\n    <glyph glyph-name=\"calendar\" unicode=\"&#xf133;\" horiz-adv-x=\"448\" \nd=\"M12 256h424c6.59961 0 12 -5.40039 12 -12v-260c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v260c0 6.59961 5.40039 12 12 12zM448 300c0 -6.59961 -5.40039 -12 -12 -12h-424c-6.59961 0 -12 5.40039 -12 12v36c0 26.5 21.5 48 48 48h48v52\nc0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h128v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h48c26.5 0 48 -21.5 48 -48v-36z\" />\n    <glyph glyph-name=\"fire-extinguisher\" unicode=\"&#xf134;\" horiz-adv-x=\"448\" \nd=\"M434.027 421.671c7.31445 1.21875 13.9727 -4.4209 13.9727 -11.8369v-115.668c0 -7.41602 -6.6582 -13.0557 -13.9727 -11.8369l-168 28c-11.7305 1.95508 -10.0273 14.6973 -10.0273 17.6709h-40v-27.0303c41.4043 -10.6582 72 -48.2383 72 -92.9697v-248\nc0 -13.2549 -10.7451 -24 -24 -24h-144c-13.2549 0 -24 10.7451 -24 24v246.795c0 44.8945 30.457 83.2666 72 94.1289v27.0762c-61.0361 0 -92.9424 7.00977 -121.711 -64.9141c-4.91699 -12.2949 -18.8789 -18.2959 -31.1963 -13.3701\nc-12.3066 4.92285 -18.293 18.8906 -13.3701 31.1973c14.668 36.6709 38.0107 77.833 90.0498 90.8838c-14.1406 36.5273 12.793 76.2031 52.2275 76.2031c37.4463 0 64.3525 -36.1084 53.668 -72h58.332c0 4.2002 -1.30664 15.7822 10.0273 17.6709zM144 376\nc8.82227 0 16 7.17773 16 16s-7.17773 16 -16 16s-16 -7.17773 -16 -16s7.17773 -16 16 -16z\" />\n    <glyph glyph-name=\"rocket\" unicode=\"&#xf135;\" \nd=\"M505.05 428.9c6.9502 -32.2002 6.9502 -57.4004 6.85059 -82.6006c0 -102.689 -55.4102 -164.79 -128 -211.09v-104.41v-0.0400391c0 -16.3516 -11.8721 -35.5527 -26.5 -42.8594l-98.7002 -49.3906c-2.79004 -1.38965 -7.58398 -2.5166 -10.7002 -2.5166\nc-13.248 0 -24 10.752 -24 24v0.00683594v103.84l-22.4697 -22.4697c-5.17383 -5.1748 -15.3125 -9.375 -22.6299 -9.375c-7.31836 0 -17.4561 4.2002 -22.6309 9.375l-50.8994 50.9102c-5.17285 5.17285 -9.37012 15.3096 -9.37012 22.625s4.19727 17.4512 9.37012 22.625\nl22.4697 22.4697h-103.77h-0.0126953c-13.248 0 -24 10.752 -24 24c0 3.12012 1.12988 7.91797 2.52246 10.71l49.4199 98.7998c7.32324 14.6094 26.5283 26.4766 42.8701 26.4902h104.2c46.1895 72.7998 108.09 128 211.29 128c25.0996 0 50.29 0 82.4893 -6.90039\nc5.54395 -1.19043 11.0098 -6.65527 12.2002 -12.1992zM384 280c22.0801 0 40 17.9199 40 40s-17.9199 40 -40 40s-40 -17.9199 -40 -40s17.9199 -40 40 -40z\" />\n    <glyph glyph-name=\"chevron-circle-left\" unicode=\"&#xf137;\" \nd=\"M256 -56c-137 0 -248 111 -248 248s111 248 248 248s248 -111 248 -248s-111 -248 -248 -248zM142.1 175l135.5 -135.5c9.40039 -9.40039 24.6006 -9.40039 33.9004 0l17 17c9.40039 9.40039 9.40039 24.5996 0 33.9004l-101.6 101.6l101.6 101.6\nc9.40039 9.40039 9.40039 24.6006 0 33.9004l-17 17c-9.40039 9.40039 -24.5996 9.40039 -33.9004 0l-135.5 -135.5c-9.39941 -9.40039 -9.39941 -24.5996 0 -34z\" />\n    <glyph glyph-name=\"chevron-circle-right\" unicode=\"&#xf138;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM369.9 209l-135.5 135.5c-9.40039 9.40039 -24.6006 9.40039 -33.9004 0l-17 -17c-9.40039 -9.40039 -9.40039 -24.5996 0 -33.9004l101.6 -101.6l-101.6 -101.6\nc-9.40039 -9.40039 -9.40039 -24.6006 0 -33.9004l17 -17c9.40039 -9.40039 24.5996 -9.40039 33.9004 0l135.5 135.5c9.39941 9.40039 9.39941 24.5996 0 34z\" />\n    <glyph glyph-name=\"chevron-circle-up\" unicode=\"&#xf139;\" \nd=\"M8 192c0 137 111 248 248 248s248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248zM239 305.9l-135.5 -135.5c-9.40039 -9.40039 -9.40039 -24.6006 0 -33.9004l17 -17c9.40039 -9.40039 24.5996 -9.40039 33.9004 0l101.6 101.6l101.6 -101.6\nc9.40039 -9.40039 24.6006 -9.40039 33.9004 0l17 17c9.40039 9.40039 9.40039 24.5996 0 33.9004l-135.5 135.5c-9.40039 9.39941 -24.5996 9.39941 -34 0z\" />\n    <glyph glyph-name=\"chevron-circle-down\" unicode=\"&#xf13a;\" \nd=\"M504 192c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248s248 -111 248 -248zM273 78.0996l135.5 135.5c9.40039 9.40039 9.40039 24.6006 0 33.9004l-17 17c-9.40039 9.40039 -24.5996 9.40039 -33.9004 0l-101.6 -101.6l-101.6 101.6\nc-9.40039 9.40039 -24.6006 9.40039 -33.9004 0l-17 -17c-9.40039 -9.40039 -9.40039 -24.5996 0 -33.9004l135.5 -135.5c9.40039 -9.39941 24.5996 -9.39941 34 0z\" />\n    <glyph glyph-name=\"anchor\" unicode=\"&#xf13d;\" horiz-adv-x=\"576\" \nd=\"M12.9707 96c-10.6904 0 -16.0449 12.9258 -8.48535 20.4854l67.0283 67.0283c4.6875 4.68652 12.2852 4.68652 16.9717 0l67.0283 -67.0283c7.56055 -7.55957 2.20605 -20.4854 -8.48438 -20.4854h-35.1465c20.2969 -54.3359 85.1816 -86.6162 144.117 -94.0146v190.015\nh-52c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h52v5.46973c-37.2842 13.1807 -64 48.7324 -64 90.5303c0 53.4746 43.7227 96.7393 97.3701 95.9902c52.2354 -0.728516 94.6348 -43.7627 94.6289 -96.002\nc-0.00488281 -41.793 -26.7188 -77.3398 -64 -90.5186v-5.46973h52c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-52v-190.015c59.1543 7.42676 123.827 39.6973 144.117 94.0146h-35.1465c-10.6904 0 -16.0449 12.9248 -8.48438 20.4854\nl67.0283 67.0283c4.6875 4.68652 12.2852 4.68652 16.9717 0l67.0283 -67.0283c7.56055 -7.55957 2.20605 -20.4854 -8.48438 -20.4854h-32.3945c-21.7822 -102.62 -136.406 -160 -242.635 -160c-106.056 0 -220.828 57.2646 -242.635 160h-32.3945zM288 384\nc-17.6445 0 -32 -14.3555 -32 -32s14.3555 -32 32 -32s32 14.3555 32 32s-14.3555 32 -32 32z\" />\n    <glyph glyph-name=\"unlock-alt\" unicode=\"&#xf13e;\" horiz-adv-x=\"448\" \nd=\"M400 192c26.5 0 48 -21.5 48 -48v-160c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v160c0 26.5 21.5 48 48 48h24v102.5c0 84 67.5 153.2 151.5 153.5s152.5 -68 152.5 -152v-16c0 -13.2998 -10.7002 -24 -24 -24h-32c-13.2998 0 -24 10.7002 -24 24v16\nc0 39.9004 -32.7002 72.4004 -72.7002 72c-39.5996 -0.400391 -71.2998 -33.2998 -71.2998 -72.9004v-103.1h248zM264 40v48c0 22.0996 -17.9004 40 -40 40s-40 -17.9004 -40 -40v-48c0 -22.0996 17.9004 -40 40 -40s40 17.9004 40 40z\" />\n    <glyph glyph-name=\"bullseye\" unicode=\"&#xf140;\" horiz-adv-x=\"496\" \nd=\"M248 440c136.97 0 248 -111.03 248 -248s-111.03 -248 -248 -248s-248 111.03 -248 248s111.03 248 248 248zM248 8c101.71 0 184 82.3096 184 184c0 101.71 -82.3096 184 -184 184c-101.71 0 -184 -82.3096 -184 -184c0 -101.71 82.3096 -184 184 -184zM248 320\nc70.6904 0 128 -57.3096 128 -128s-57.3096 -128 -128 -128s-128 57.3096 -128 128s57.3096 128 128 128zM248 128c35.29 0 64 28.71 64 64s-28.71 64 -64 64s-64 -28.71 -64 -64s28.71 -64 64 -64z\" />\n    <glyph glyph-name=\"ellipsis-h\" unicode=\"&#xf141;\" \nd=\"M328 192c0 -39.7998 -32.2002 -72 -72 -72s-72 32.2002 -72 72s32.2002 72 72 72s72 -32.2002 72 -72zM432 264c39.7998 0 72 -32.2002 72 -72s-32.2002 -72 -72 -72s-72 32.2002 -72 72s32.2002 72 72 72zM80 264c39.7998 0 72 -32.2002 72 -72s-32.2002 -72 -72 -72\ns-72 32.2002 -72 72s32.2002 72 72 72z\" />\n    <glyph glyph-name=\"ellipsis-v\" unicode=\"&#xf142;\" horiz-adv-x=\"192\" \nd=\"M96 264c39.7998 0 72 -32.2002 72 -72s-32.2002 -72 -72 -72s-72 32.2002 -72 72s32.2002 72 72 72zM24 368c0 39.7998 32.2002 72 72 72s72 -32.2002 72 -72s-32.2002 -72 -72 -72s-72 32.2002 -72 72zM24 16c0 39.7998 32.2002 72 72 72s72 -32.2002 72 -72\ns-32.2002 -72 -72 -72s-72 32.2002 -72 72z\" />\n    <glyph glyph-name=\"rss-square\" unicode=\"&#xf143;\" horiz-adv-x=\"448\" \nd=\"M400 416c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h352zM112 32c26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48s-48 -21.4902 -48 -48s21.4902 -48 48 -48zM269.533 32\nc6.53516 0 11.7764 5.46777 11.4248 11.9941c-5.9668 110.428 -94.418 198.99 -204.964 204.964c-6.52637 0.351562 -11.9941 -4.88965 -11.9941 -11.4248v-34.335c0 -6.00977 4.63574 -11.0508 10.6328 -11.4414c79.8799 -5.20312 143.909 -69.0732 149.123 -149.123\nc0.391602 -5.99805 5.43066 -10.6338 11.4424 -10.6338h34.335zM372.56 32c6.4541 0 11.6641 5.33789 11.4326 11.7871c-5.99512 167.014 -140.375 302.18 -308.205 308.205c-6.44922 0.231445 -11.7871 -4.97852 -11.7871 -11.4326v-34.334\nc0 -6.16016 4.88184 -11.1748 11.0391 -11.4277c136.556 -5.59863 246.162 -115.225 251.76 -251.76c0.251953 -6.15625 5.2666 -11.0381 11.4268 -11.0381h34.334z\" />\n    <glyph glyph-name=\"play-circle\" unicode=\"&#xf144;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM371.7 168c16.3994 9.09961 16.3994 32.7998 0 42l-176 107c-15.9004 8.7998 -35.7002 -2.59961 -35.7002 -21v-208c0 -18.5 19.9004 -29.7998 35.7002 -21z\" />\n    <glyph glyph-name=\"minus-square\" unicode=\"&#xf146;\" horiz-adv-x=\"448\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM92 152h264c6.59961 0 12 5.40039 12 12v56c0 6.59961 -5.40039 12 -12 12h-264c-6.59961 0 -12 -5.40039 -12 -12v-56\nc0 -6.59961 5.40039 -12 12 -12z\" />\n    <glyph glyph-name=\"check-square\" unicode=\"&#xf14a;\" horiz-adv-x=\"448\" \nd=\"M400 -32h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h352c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48zM195.314 66.0586l184 184c6.24707 6.24805 6.24707 16.3799 0 22.627l-22.6279 22.6279\nc-6.24707 6.24707 -16.3789 6.24805 -22.6279 0l-150.059 -150.059l-70.0586 70.0596c-6.24805 6.24707 -16.3799 6.24707 -22.6279 0l-22.6279 -22.6279c-6.24707 -6.24707 -6.24707 -16.3789 0 -22.627l104 -104c6.24902 -6.25 16.3799 -6.25 22.6289 -0.000976562z\" />\n    <glyph glyph-name=\"pen-square\" unicode=\"&#xf14b;\" horiz-adv-x=\"448\" \nd=\"M400 -32h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48zM238.1 270.1l-135.699 -135.699l-6.30078 -57.1006c-0.799805 -7.59961 5.60059 -14.0996 13.3008 -13.2998l57.0996 6.2998l135.7 135.7\nc2.2998 2.2998 2.2998 6.09961 0 8.5l-55.5 55.5c-2.5 2.40039 -6.2998 2.40039 -8.60059 0.0996094zM345 282.9l-30.0996 30.0996c-9.40039 9.40039 -24.6006 9.40039 -33.9004 0l-23.0996 -23.0996c-2.30078 -2.30078 -2.30078 -6.10059 0 -8.5l55.5 -55.5\nc2.2998 -2.30078 6.09961 -2.30078 8.5 0l23.0996 23.0996c9.2998 9.2998 9.2998 24.5 0 33.9004z\" />\n    <glyph glyph-name=\"share-square\" unicode=\"&#xf14d;\" horiz-adv-x=\"576\" \nd=\"M568.482 270.552l-144.004 -135.984c-15.1787 -14.335 -40.4785 -3.70703 -40.4785 17.4473v71.9629c-144.575 -0.969727 -205.566 -35.1123 -164.775 -171.353c4.4834 -14.9727 -12.8457 -26.5674 -25.0059 -17.3301\nc-38.9668 29.5996 -74.2188 86.2168 -74.2188 143.366c0 143.937 117.599 172.5 264 173.312v72.0156c0 21.1738 25.3174 31.7676 40.4785 17.4473l144.004 -135.987c10.0195 -9.46289 10.0273 -25.4248 0 -34.8965zM384 68.8721c0 7.34473 6.53027 12.9053 13.7998 11.8594\nc2.81152 -0.405273 7.39844 -0.734375 10.2393 -0.734375c6.80469 0 17.5342 1.8418 23.9502 4.11133c7.81348 2.76367 16.0107 -3.01465 16.0107 -11.3027v-88.8057c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48\nh121.033c12.5508 0 16.6748 -16.8301 5.54492 -22.6309c-18.7773 -9.78613 -36.0615 -22.1084 -51.0137 -37.6758c-1.95312 -2.03711 -5.82715 -3.69141 -8.64844 -3.69336h-50.916v-320h320v68.8721z\" />\n    <glyph glyph-name=\"compass\" unicode=\"&#xf14e;\" horiz-adv-x=\"496\" \nd=\"M225.38 214.63c12.4902 12.4902 32.75 12.4902 45.25 0s12.5 -32.75 0 -45.25c-12.4902 -12.5 -32.7598 -12.5 -45.25 0c-12.5 12.4902 -12.5 32.75 0 45.25zM248 440c136.97 0 248 -111.03 248 -248s-111.03 -248 -248 -248s-248 111.03 -248 248s111.03 248 248 248z\nM374.14 291.95c7.61035 16.6494 -9.54004 33.7998 -26.1895 26.2002l-144.34 -65.9707c-5.97461 -2.73047 -13.04 -9.7959 -15.7705 -15.7695l-65.9795 -144.351c-7.61035 -16.6494 9.5498 -33.8096 26.1992 -26.1992l144.341 65.9697\nc5.97363 2.73047 13.0391 9.7959 15.7695 15.7695z\" />\n    <glyph glyph-name=\"caret-square-down\" unicode=\"&#xf150;\" horiz-adv-x=\"448\" \nd=\"M448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM92.5 227.5l123 -123c4.7002 -4.7002 12.2998 -4.7002 17 0l123 123c7.59961 7.59961 2.2002 20.5 -8.5 20.5h-246\nc-10.7002 0 -16.0996 -12.9004 -8.5 -20.5z\" />\n    <glyph glyph-name=\"caret-square-up\" unicode=\"&#xf151;\" horiz-adv-x=\"448\" \nd=\"M0 16v352c0 26.5098 21.4902 48 48 48h352c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48zM355.515 156.485l-123.029 123.029c-4.68652 4.68652 -12.2842 4.68652 -16.9717 0l-123.028 -123.029\nc-7.56055 -7.56055 -2.20605 -20.4854 8.48438 -20.4854h246.06c10.6904 0 16.0449 12.9258 8.48535 20.4854z\" />\n    <glyph glyph-name=\"caret-square-right\" unicode=\"&#xf152;\" horiz-adv-x=\"448\" \nd=\"M48 416h352c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48zM188.485 60.4854l123.028 123.028c4.68652 4.68652 4.68652 12.2842 0 16.9717l-123.028 123.029\nc-7.56055 7.56055 -20.4854 2.20605 -20.4854 -8.48438v-246.06c0 -10.6904 12.9258 -16.0449 20.4854 -8.48535z\" />\n    <glyph glyph-name=\"euro-sign\" unicode=\"&#xf153;\" horiz-adv-x=\"320\" \nd=\"M310.706 34.2354l8.81836 -44.4902c1.23828 -6.24902 -2.62109 -12.3623 -8.78809 -13.957c-12.5391 -3.24414 -34.8008 -7.78809 -61.1016 -7.78809c-104.371 0 -182.496 65.3076 -207.521 155.64h-30.1143c-6.62695 0 -12 5.37305 -12 12v28.3604\nc0 6.62695 5.37305 12 12 12h21.3877c-1 12.958 -0.828125 28.6377 0.181641 42.2451h-21.5693c-6.62695 0 -12 5.37305 -12 12v29.7549c0 6.62695 5.37305 12 12 12h33.0752c28.9551 83.748 107.376 144 204.56 144c21.0752 0 40.582 -2.91211 52.6865 -5.20703\nc6.86035 -1.30078 11.1475 -8.17578 9.32617 -14.917l-11.9912 -44.3682c-1.65527 -6.125 -7.78613 -9.89062 -14.002 -8.62305c-9.28711 1.89551 -23.3652 4.14551 -37.8516 4.14551c-54.9287 0 -96.9854 -30.0391 -117.619 -75.0303h138.278\nc7.66211 0 13.3613 -7.08203 11.7227 -14.5664l-6.51172 -29.7549c-1.13965 -5.20703 -6.3916 -9.43359 -11.7227 -9.43359v0h-146.593c-1.55176 -13.958 -1.34766 -27.917 -0.137695 -42.2451h134.237c7.68945 0 13.3936 -7.12891 11.708 -14.6309l-6.37305 -28.3604\nc-1.16211 -5.17188 -6.40723 -9.36914 -11.708 -9.36914h-113.689c19.5322 -50.6582 64.6982 -85.4482 121.462 -85.4482c18.0039 0 34.7334 2.97363 45.4258 5.41211c6.58887 1.50391 13.1094 -2.73828 14.4238 -9.36816z\" />\n    <glyph glyph-name=\"pound-sign\" unicode=\"&#xf154;\" horiz-adv-x=\"320\" \nd=\"M308 96c6.62695 0 12 -5.37305 12 -12v-104c0 -6.62695 -5.37305 -12 -12 -12h-296c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h36v128h-28c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h28v66.0391\nc0 73.2188 58.0264 125.961 139.931 125.961c48.6455 0 85.1934 -22.5596 101.575 -34.9277c5.39844 -4.07617 6.35254 -11.8057 2.11914 -17.0811l-28.4932 -35.5137c-3.7998 -4.73535 -10.5371 -5.89746 -15.6875 -2.68457\nc-11.7744 7.34375 -33.9941 18.8486 -57.6523 18.8486c-37.2305 0 -61.792 -24.8193 -61.792 -57.0859v-63.5557h84c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-84v-126.848h122.505v50.8477c0 6.62695 5.37305 12 12 12h45.4951z\" />\n    <glyph glyph-name=\"dollar-sign\" unicode=\"&#xf155;\" horiz-adv-x=\"288\" \nd=\"M209.2 214.6c57.8994 -16.8994 94 -80.0996 72.5 -141.699c-15.4004 -44.1006 -59.1006 -71.8008 -105.7 -72.7002v-48.2002c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v48c-31.4004 0.0996094 -62 10.7998 -86.5 30\nc-7.90039 6.09961 -8.90039 17.5996 -1.7998 24.5l34.7998 34c5.2002 5.09961 13.4004 6.09961 19.5 2c10 -6.7998 22 -10.5 34.2002 -10.5h66.2998c16.2998 0 29.5 13.2002 29.5 29.5c0 13 -8.7002 24.5996 -21.2002 28.2998l-102.5 30\nc-44.3994 13 -79.5996 50.5 -83.7998 96.6006c-5.90039 64.8994 45.2998 119.6 109 119.6h2.5v48c0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-48c31.4004 -0.0996094 62 -10.7998 86.5 -30c7.90039 -6.09961 8.90039 -17.5996 1.7998 -24.5l-34.7998 -34\nc-5.2002 -5.09961 -13.4004 -6.09961 -19.5 -2c-10 6.7998 -22 10.5 -34.2002 10.5h-66.2998c-16.2998 0 -29.5 -13.2002 -29.5 -29.5c0 -13 8.7002 -24.7002 21.2002 -28.2998z\" />\n    <glyph glyph-name=\"rupee-sign\" unicode=\"&#xf156;\" horiz-adv-x=\"320\" \nd=\"M308 352h-72.9424c5.97266 -9.75391 10.7666 -20.459 14.252 -32h58.6904c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-52.8105c-7.1748 -74.5107 -61.8193 -125.566 -138.318 -127.906l150.882 -139.275\nc8.02734 -7.41016 2.78516 -20.8184 -8.13867 -20.8184h-82.5625c-2.58984 0 -6.23535 1.42578 -8.13867 3.18164l-165.052 152.356c-2.46094 2.27148 -3.86133 5.46875 -3.86133 8.81836v53.0117c0 6.62695 5.37305 12 12 12h84c41.7959 0 68.54 22.5459 74.7568 58.6318\nh-158.757c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h146.25c-12.709 17.2939 -33.6621 27.252 -60.9697 27.252h-85.2803c-6.62695 0 -12 5.37305 -12 12v44.748c0 6.62695 5.37305 12 12 12h296c6.62695 0 12 -5.37305 12 -12v-40\nc0 -6.62695 -5.37305 -12 -12 -12z\" />\n    <glyph glyph-name=\"yen-sign\" unicode=\"&#xf157;\" horiz-adv-x=\"384\" \nd=\"M351.2 416c9.09961 0 14.8994 -9.7002 10.5996 -17.5996l-80.0996 -150.4h58.2998c6.59961 0 12 -5.40039 12 -12v-32c0 -6.59961 -5.40039 -12 -12 -12h-88.2002l-19.7998 -37.2002v-26.7998h108c6.59961 0 12 -5.40039 12 -12v-32c0 -6.59961 -5.40039 -12 -12 -12\nh-108v-92c0 -6.59961 -5.40039 -12 -12 -12h-56c-6.59961 0 -12 5.40039 -12 12v92h-108c-6.59961 0 -12 5.40039 -12 12v32c0 6.59961 5.40039 12 12 12h108v26.7998l-19.7998 37.2002h-88.2002c-6.59961 0 -12 5.40039 -12 12v32c0 6.59961 5.40039 12 12 12h58.2998\nl-80.0996 150.4c-4.2002 7.89941 1.5 17.5996 10.5996 17.5996h65.2002c4.59961 0 8.7998 -2.59961 10.7998 -6.7002l55.4004 -113.2c14.5 -34.6992 27.0996 -71.8994 27.0996 -71.8994h1.2998s12.6006 37.2002 27.1006 71.8994l55.3994 113.2\nc2 4.10059 6.2002 6.7002 10.8008 6.7002h65.2998z\" />\n    <glyph glyph-name=\"ruble-sign\" unicode=\"&#xf158;\" horiz-adv-x=\"384\" \nd=\"M239.36 128h-92.8008v-32h161.44c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-161.44v-52c0 -6.62695 -5.37305 -12 -12 -12h-58.5596c-6.62695 0 -12 5.37305 -12 12v52h-52c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h52\nv32h-52c-6.62695 0 -12 5.37305 -12 12v45.3682c0 6.62695 5.37305 12 12 12h52v206.632c0 6.62695 5.37305 12 12 12h163.36c85.1201 0 144.64 -57.5996 144.64 -143.071c0 -85.4707 -59.5195 -144.929 -144.64 -144.929zM146.56 347.252v-149.884h77.4404\nc48 0 76.1602 29.7285 76.1602 75.5605c0 45.2129 -28.1602 74.3232 -74.8799 74.3232h-78.7207z\" />\n    <glyph glyph-name=\"won-sign\" unicode=\"&#xf159;\" horiz-adv-x=\"576\" \nd=\"M564 256h-62.7002l-7.39941 -32h70.0996c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-84.9004l-42.0996 -182.7c-1.2998 -5.39941 -6.09961 -9.2998 -11.7002 -9.2998h-56.7998c-5.59961 0 -10.4004 3.90039 -11.7002 9.2998l-42.3994 182.7\nh-55.1006l-42.2998 -182.7c-1.2998 -5.39941 -6.09961 -9.2998 -11.7002 -9.2998h-56.7998c-5.59961 0 -10.5 3.90039 -11.7002 9.40039l-40.8994 182.6h-83.9004c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h69.5l-7.2002 32h-62.2998\nc-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h48l-18.0996 80.7002c-1.7002 7.5 4 14.5996 11.6992 14.5996h42.1006c5.7002 0 10.7002 -4 11.7998 -9.59961l17.5 -85.7002h108.7l20 86c1.2998 5.5 6.09961 9.2998 11.7002 9.2998h44\nc5.59961 0 10.3994 -3.7998 11.6992 -9.2998l19.7002 -86h109.9l14.3994 85.7998c1.10059 5.5 6 9.5 11.7002 9.5h46.1006c7.69922 0 13.3994 -7.2002 11.6992 -14.7002l-18.5996 -80.5996h48c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12zM183.8 106\nl12.6006 54h-38.8008l11 -54c5.10059 -25.2002 6.80078 -47.2002 6.80078 -47.2002h1.09961c0.5 0 1.09961 21.4004 7.2998 47.2002zM211.3 224l7.5 32h-80.7998l6.5 -32h66.7998zM274.2 224h25.3994l-2 8.59961c-1.89941 8 -3.5 16 -4.7998 23.4004h-11.7998\nc-1.2998 -7.40039 -2.90039 -15.4004 -4.7998 -23.4004zM405.1 106l11.5 54h-39.0996l12.4004 -54c6.19922 -25.7998 6.69922 -47.2002 7.2998 -47.2002h1.09961s1.7002 22 6.7998 47.2002zM430.3 224l6.90039 32h-81.6006l7.30078 -32h67.3994z\" />\n    <glyph glyph-name=\"file\" unicode=\"&#xf15b;\" horiz-adv-x=\"384\" \nd=\"M224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136zM384 326.1v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7l97.9004 -98\nc4.5 -4.5 7 -10.5996 7 -16.9004z\" />\n    <glyph glyph-name=\"file-alt\" unicode=\"&#xf15c;\" horiz-adv-x=\"384\" \nd=\"M224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136zM288 76v8c0 6.59961 -5.40039 12 -12 12h-168c-6.59961 0 -12 -5.40039 -12 -12v-8\nc0 -6.59961 5.40039 -12 12 -12h168c6.59961 0 12 5.40039 12 12zM288 140v8c0 6.59961 -5.40039 12 -12 12h-168c-6.59961 0 -12 -5.40039 -12 -12v-8c0 -6.59961 5.40039 -12 12 -12h168c6.59961 0 12 5.40039 12 12zM288 212c0 6.59961 -5.40039 12 -12 12h-168\nc-6.59961 0 -12 -5.40039 -12 -12v-8c0 -6.59961 5.40039 -12 12 -12h168c6.59961 0 12 5.40039 12 12v8zM384 326.1v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7l97.9004 -98c4.5 -4.5 7 -10.5996 7 -16.9004z\" />\n    <glyph glyph-name=\"sort-alpha-down\" unicode=\"&#xf15d;\" horiz-adv-x=\"448\" \nd=\"M176 96c14.2197 0 21.3496 -17.2598 11.3301 -27.3096l-80 -96c-2.58691 -2.58496 -7.65332 -4.68262 -11.3105 -4.68262c-3.65625 0 -8.72266 2.09766 -11.3096 4.68262l-80 96c-10.0703 10.0693 -2.90039 27.3096 11.29 27.3096h48v304c0 8.83203 7.16797 16 16 16h32\nc8.83203 0 16 -7.16797 16 -16v-304h48zM416 160c8.83203 0 16 -7.16797 16 -16v-17.6299v-0.00292969c0 -7.93262 -4.81152 -18.6475 -10.7402 -23.917l-61.2598 -70.4502h56c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-128\nc-8.83203 0 -16 7.16797 -16 16v17.6299v0.00292969c0 7.93262 4.81152 18.6475 10.7402 23.917l61.2598 70.4502h-56c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h128zM447.06 245.38c0.514648 -1.44043 0.931641 -3.85059 0.931641 -5.37988\nc0 -8.82715 -7.16406 -15.9951 -15.9912 -16h-24.8398h-0.0449219c-6.42773 0 -13.249 4.96387 -15.2256 11.0801l-4.40918 12.9199h-71l-4.4209 -12.9199c-1.97559 -6.11621 -8.79688 -11.0801 -15.2246 -11.0801h-0.00488281h-24.8301\nc-8.82715 0.00488281 -15.9912 7.17285 -15.9912 16c0 1.5293 0.416992 3.93945 0.931641 5.37988l59.2695 160c2.09277 5.8623 8.84375 10.6201 15.0684 10.6201h0.00195312h41.4395h0.00195312c6.22461 0 12.9756 -4.75781 15.0684 -10.6201zM335.61 304h32.7793\nl-16.3896 48z\" />\n    <glyph glyph-name=\"sort-alpha-up\" unicode=\"&#xf15e;\" horiz-adv-x=\"448\" \nd=\"M16 288c-14.2197 0 -21.3496 17.2598 -11.3096 27.3096l80 96c2.58594 2.58496 7.65332 4.68262 11.3096 4.68262s8.72363 -2.09766 11.3096 -4.68262l80 -96c10.0703 -10.0693 2.90039 -27.3096 -11.3096 -27.3096h-48v-304c0 -8.83203 -7.16797 -16 -16 -16h-32\nc-8.83203 0 -16 7.16797 -16 16v304h-48zM416 160c8.83203 0 16 -7.16797 16 -16v-17.6299v-0.00292969c0 -7.93262 -4.81152 -18.6475 -10.7402 -23.917l-61.2598 -70.4502h56c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-128\nc-8.83203 0 -16 7.16797 -16 16v17.6299v0.00292969c0 7.93262 4.81152 18.6475 10.7402 23.917l61.2598 70.4502h-56c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h128zM447.06 245.38c0.514648 -1.44043 0.931641 -3.85059 0.931641 -5.37988\nc0 -8.82715 -7.16406 -15.9951 -15.9912 -16h-24.8398h-0.0449219c-6.42773 0 -13.249 4.96387 -15.2256 11.0801l-4.40918 12.9199h-71l-4.4209 -12.9199c-1.97559 -6.11621 -8.79688 -11.0801 -15.2246 -11.0801h-0.00488281h-24.8301\nc-8.82715 0.00488281 -15.9912 7.17285 -15.9912 16c0 1.5293 0.416992 3.93945 0.931641 5.37988l59.2695 160c2.09277 5.8623 8.84375 10.6201 15.0684 10.6201h0.00195312h41.4395h0.00195312c6.22461 0 12.9756 -4.75781 15.0684 -10.6201zM335.61 304h32.7793\nl-16.3896 48z\" />\n    <glyph glyph-name=\"sort-amount-down\" unicode=\"&#xf160;\" \nd=\"M304 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-64c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h64zM176 96c14.2197 0 21.3496 -17.2598 11.3301 -27.3096l-80 -96\nc-2.58691 -2.58496 -7.65332 -4.68262 -11.3105 -4.68262c-3.65625 0 -8.72266 2.09766 -11.3096 4.68262l-80 96c-10.0801 10.0693 -2.90039 27.3096 11.29 27.3096h48v304c0 8.83203 7.16797 16 16 16h32c8.83203 0 16 -7.16797 16 -16v-304h48zM432 288\nc8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-192c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h192zM368 160c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-128c-8.83203 0 -16 7.16797 -16 16v32\nc0 8.83203 7.16797 16 16 16h128zM496 416c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-256c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h256z\" />\n    <glyph glyph-name=\"sort-amount-up\" unicode=\"&#xf161;\" \nd=\"M304 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-64c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h64zM16 288c-14.2305 0 -21.3496 17.2598 -11.3096 27.3096l80 96c2.58594 2.58496 7.65332 4.68262 11.3096 4.68262\ns8.72363 -2.09766 11.3096 -4.68262l80 -96c10.0703 -10.0693 2.90039 -27.3096 -11.3096 -27.3096h-48v-304c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v304h-48zM432 288c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16\nh-192c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h192zM368 160c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-128c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h128zM496 416c8.83203 0 16 -7.16797 16 -16v-32\nc0 -8.83203 -7.16797 -16 -16 -16h-256c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h256z\" />\n    <glyph glyph-name=\"sort-numeric-down\" unicode=\"&#xf162;\" horiz-adv-x=\"448\" \nd=\"M304 352c-8.82422 0.0078125 -15.9863 7.17578 -15.9863 16c0 2.08984 0.759766 5.30176 1.69629 7.16992l16 32c2.44141 4.87012 8.84277 8.8252 14.29 8.83008h48c8.83203 0 16 -7.16797 16 -16v-112h16c8.83203 0 16 -7.16797 16 -16v-32\nc0 -8.83203 -7.16797 -16 -16 -16h-96c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h16v64h-16zM330.15 189.09c53.4502 14.25 101.85 -25.8799 101.869 -77.0898v-10.7695c0 -70.3906 -28.25 -107.24 -86.25 -132\nc-8.36914 -3.58008 -18.0293 1.2793 -20.8994 9.90918l-9.90039 20c-2.62012 7.87012 0.610352 16.9404 8.18066 20.3408c6.2793 2.71387 15.6201 8.49805 20.8496 12.9092c-47.6396 4.76074 -83.0996 51.4805 -68.8496 102.53c6.80762 23.4512 31.4473 47.7197 55 54.1699z\nM352 92c11.04 0 20 8.95996 20 20s-8.95996 20 -20 20s-20 -8.95996 -20 -20s8.95996 -20 20 -20zM176 96c14.2197 0 21.3496 -17.2598 11.3301 -27.3096l-80 -96c-2.58691 -2.58496 -7.65332 -4.68262 -11.3105 -4.68262c-3.65625 0 -8.72266 2.09766 -11.3096 4.68262\nl-80 96c-10.0703 10.0693 -2.90039 27.3096 11.29 27.3096h48v304c0 8.83203 7.16797 16 16 16h32c8.83203 0 16 -7.16797 16 -16v-304h48z\" />\n    <glyph glyph-name=\"sort-numeric-up\" unicode=\"&#xf163;\" horiz-adv-x=\"448\" \nd=\"M330.17 189.09c53.4502 14.25 101.83 -25.8799 101.85 -77.0898v-10.7695c0 -70.3906 -28.25 -107.24 -86.25 -132c-8.36914 -3.58008 -18.0293 1.2793 -20.8994 9.90918l-9.90039 20c-2.62012 7.87012 0.610352 16.9404 8.18066 20.3408\nc6.2793 2.71387 15.6201 8.49805 20.8496 12.9092c-47.6396 4.76074 -83.0996 51.4805 -68.8301 102.53c6.80762 23.4512 31.4482 47.7197 55 54.1699zM352 92c11.04 0 20 8.95996 20 20s-8.95996 20 -20 20s-20 -8.95996 -20 -20s8.95996 -20 20 -20zM304 352\nc-8.82422 0.0078125 -15.9863 7.17578 -15.9863 16c0 2.08984 0.759766 5.30176 1.69629 7.16992l16 32c2.44141 4.87012 8.84277 8.8252 14.29 8.83008h48c8.83203 0 16 -7.16797 16 -16v-112h16c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-96\nc-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h16v64h-16zM107.31 411.31l80 -96c10.0703 -10.0693 2.90039 -27.3096 -11.3096 -27.3096h-48v-304c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v304h-48\nc-14.2197 0 -21.3496 17.2598 -11.3096 27.3096l80 96c2.58594 2.58496 7.65332 4.68262 11.3096 4.68262s8.72363 -2.09766 11.3096 -4.68262z\" />\n    <glyph glyph-name=\"thumbs-up\" unicode=\"&#xf164;\" \nd=\"M104 224c13.2549 0 24 -10.7451 24 -24v-240c0 -13.2549 -10.7451 -24 -24 -24h-80c-13.2549 0 -24 10.7451 -24 24v240c0 13.2549 10.7451 24 24 24h80zM64 -24c13.2549 0 24 10.7451 24 24s-10.7451 24 -24 24s-24 -10.7451 -24 -24s10.7451 -24 24 -24zM384 366.548\nc0 -42.416 -25.9697 -66.208 -33.2773 -94.5479h101.724c33.3965 0 59.3965 -27.7461 59.5527 -58.0977c0.0839844 -17.9385 -7.5459 -37.249 -19.4395 -49.1973l-0.109375 -0.110352c9.83594 -23.3369 8.23633 -56.0371 -9.30859 -79.4688\nc8.68164 -25.8945 -0.0683594 -57.7041 -16.3818 -74.7568c4.29785 -17.5977 2.24414 -32.5752 -6.14746 -44.6318c-20.4102 -29.3242 -70.9961 -29.7373 -113.773 -29.7373l-2.84473 0.000976562c-48.2871 0.0166016 -87.8057 17.5977 -119.561 31.7246\nc-15.957 7.09961 -36.8203 15.8877 -52.6504 16.1787c-6.54004 0.120117 -11.7832 5.45703 -11.7832 11.998v213.77c0 3.2002 1.28223 6.27148 3.55762 8.52148c39.6143 39.1436 56.6484 80.5869 89.1172 113.11c14.8037 14.832 20.1885 37.2363 25.3936 58.9023\nc4.44629 18.501 13.749 57.7939 33.9316 57.7939c24 0 72 -8 72 -81.4521z\" />\n    <glyph glyph-name=\"thumbs-down\" unicode=\"&#xf165;\" \nd=\"M0 392c0 13.2549 10.7451 24 24 24h80c13.2549 0 24 -10.7451 24 -24v-240c0 -13.2549 -10.7451 -24 -24 -24h-80c-13.2549 0 -24 10.7451 -24 24v240zM40 192c0 -13.2549 10.7451 -24 24 -24s24 10.7451 24 24s-10.7451 24 -24 24s-24 -10.7451 -24 -24zM312 -64\nc-20.1826 0 -29.4854 39.293 -33.9307 57.7949c-5.20605 21.666 -10.5889 44.0703 -25.3936 58.9023c-32.4688 32.5234 -49.5029 73.9668 -89.1172 113.11c-1.96387 1.94141 -3.55762 5.75879 -3.55762 8.52051v0.000976562v213.77\nc0 6.54102 5.24316 11.8779 11.7832 11.998c15.8311 0.290039 36.6934 9.0791 52.6504 16.1787c31.7549 14.127 71.2744 31.708 119.561 31.7246h2.84375c42.7773 0 93.3633 -0.413086 113.774 -29.7373c8.3916 -12.0566 10.4453 -27.0342 6.14746 -44.6318\nc16.3125 -17.0527 25.0635 -48.8633 16.3818 -74.7568c17.5439 -23.4316 19.1436 -56.1318 9.30859 -79.4688l0.109375 -0.110352c11.8936 -11.9492 19.5234 -31.2588 19.4395 -49.1973c-0.15625 -30.3516 -26.1572 -58.0977 -59.5527 -58.0977h-101.725\nc7.30762 -28.3398 33.2773 -52.1318 33.2773 -94.5479c0 -73.4521 -48 -81.4521 -72 -81.4521z\" />\n    <glyph glyph-name=\"female\" unicode=\"&#xf182;\" horiz-adv-x=\"256\" \nd=\"M128 448c35.3457 0 64 -28.6543 64 -64s-28.6543 -64 -64 -64s-64 28.6543 -64 64s28.6543 64 64 64zM247.283 93.8213c3.78809 -15.1504 -7.69238 -29.8213 -23.2832 -29.8213h-56v-104c0 -13.2549 -10.7451 -24 -24 -24h-32c-13.2549 0 -24 10.7451 -24 24v104h-56\nc-15.6172 0 -27.0654 14.6953 -23.2832 29.8213l48 192c2.50879 10.0342 12.9395 18.1787 23.2832 18.1787h11.3604c23.6895 -10.8936 50.5684 -10.4434 73.2793 0h11.3604c10.3438 0 20.7744 -8.14453 23.2832 -18.1787z\" />\n    <glyph glyph-name=\"male\" unicode=\"&#xf183;\" horiz-adv-x=\"192\" \nd=\"M96 448c35.3457 0 64 -28.6543 64 -64s-28.6543 -64 -64 -64s-64 28.6543 -64 64s28.6543 64 64 64zM144 304c26.5098 0 48 -21.4902 48 -48v-136c0 -13.2549 -10.7451 -24 -24 -24h-16v-136c0 -13.2549 -10.7451 -24 -24 -24h-64c-13.2549 0 -24 10.7451 -24 24v136h-16\nc-13.2549 0 -24 10.7451 -24 24v136c0 26.5098 21.4902 48 48 48h11.3604c23.6895 -10.8936 50.5684 -10.4434 73.2793 0h11.3604z\" />\n    <glyph glyph-name=\"sun\" unicode=\"&#xf185;\" \nd=\"M256 288c52.9004 0 96 -43.0996 96 -96s-43.0996 -96 -96 -96s-96 43.0996 -96 96s43.0996 96 96 96zM502.4 207.5c12.7998 -6.40039 12.7998 -24.5996 -0.200195 -31.0996l-94.7002 -47.3008l33.5 -100.399c4.59961 -13.5 -8.2998 -26.4004 -21.9004 -21.9004\nl-100.399 33.5l-47.2998 -94.7002c-6.40039 -12.7998 -24.6006 -12.7998 -31 0l-47.3008 94.7002l-100.399 -33.5c-13.5 -4.59961 -26.4004 8.2998 -21.9004 21.9004l33.5 100.5l-94.7002 47.2998c-12.7998 6.40039 -12.7998 24.5996 0 31l94.7002 47.4004l-33.5 100.399\nc-4.59961 13.5 8.2998 26.4004 21.9004 21.9004l100.5 -33.5l47.2998 94.7002c6.40039 12.7998 24.5996 12.7998 31 0l47.4004 -94.8008l100.399 33.5c13.5 4.60059 26.4004 -8.2998 21.9004 -21.8994l-33.5 -100.4zM346.5 101.5c49.9004 49.9004 49.9004 131.1 0 181\ns-131.1 49.9004 -181 0s-49.9004 -131.1 0 -181s131.1 -49.9004 181 0z\" />\n    <glyph glyph-name=\"moon\" unicode=\"&#xf186;\" \nd=\"M283.211 -64c-141.489 0 -256 114.691 -256 256c0 141.489 114.691 256 256 256c13.0176 -0.00195312 33.9727 -1.91895 46.7754 -4.28027c11.0059 -2.0332 13.4414 -16.7178 3.75586 -22.2295c-62.8359 -35.7588 -101.498 -102.172 -101.498 -174.395\nc0 -125.378 114.059 -220.607 238.262 -196.954c10.9229 2.08008 18.6299 -10.6416 11.5625 -19.3496c-47.7783 -58.8672 -119.896 -94.792 -198.857 -94.792z\" />\n    <glyph glyph-name=\"archive\" unicode=\"&#xf187;\" \nd=\"M32 0v288h448v-288c0 -17.7002 -14.2998 -32 -32 -32h-384c-17.7002 0 -32 14.2998 -32 32zM192 212v-8c0 -6.59961 5.40039 -12 12 -12h104c6.59961 0 12 5.40039 12 12v8c0 6.59961 -5.40039 12 -12 12h-104c-6.59961 0 -12 -5.40039 -12 -12zM480 416\nc17.7002 0 32 -14.2998 32 -32v-48c0 -8.7998 -7.2002 -16 -16 -16h-480c-8.7998 0 -16 7.2002 -16 16v48c0 17.7002 14.2998 32 32 32h448z\" />\n    <glyph glyph-name=\"bug\" unicode=\"&#xf188;\" \nd=\"M511.988 159.1c-0.478516 -17.4297 -15.2168 -31.0996 -32.6533 -31.0996h-55.335v-16c0 -21.8643 -4.88184 -42.584 -13.5996 -61.1445l60.2275 -60.2285c12.4961 -12.4971 12.4961 -32.7578 0 -45.2549c-12.498 -12.4971 -32.7588 -12.4961 -45.2559 0\nl-54.7363 54.7363c-24.75 -20.0732 -56.2852 -32.1084 -90.6357 -32.1084v244c0 6.62695 -5.37305 12 -12 12h-24c-6.62695 0 -12 -5.37305 -12 -12v-244c-34.3506 0 -65.8857 12.0352 -90.6357 32.1084l-54.7363 -54.7363c-12.498 -12.4971 -32.7588 -12.4961 -45.2559 0\nc-12.4961 12.4971 -12.4961 32.7578 0 45.2549l60.2275 60.2285c-8.71777 18.5605 -13.5996 39.2803 -13.5996 61.1445v16h-55.334c-17.4355 0 -32.1748 13.6699 -32.6533 31.0996c-0.49707 18.084 14.0156 32.9004 31.9873 32.9004h56v58.7451l-46.6279 46.6279\nc-12.4961 12.4971 -12.4961 32.7578 0 45.2549c12.498 12.4971 32.7578 12.4971 45.2559 0l54.627 -54.6279h229.489l54.627 54.627c12.498 12.4971 32.7578 12.4971 45.2559 0c12.4961 -12.4971 12.4961 -32.7578 0 -45.2549l-46.627 -46.627v-58.7451h56\nc17.9717 0 32.4844 -14.8164 31.9883 -32.9004zM257 448c61.8564 0 112 -50.1436 112 -112h-224c0 61.8564 50.1436 112 112 112z\" />\n    <glyph glyph-name=\"caret-square-left\" unicode=\"&#xf191;\" horiz-adv-x=\"448\" \nd=\"M400 -32h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h352c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48zM259.515 323.515l-123.029 -123.029c-4.68652 -4.68652 -4.68652 -12.2842 0 -16.9717l123.028 -123.028\nc7.56055 -7.56055 20.4854 -2.20605 20.4854 8.48438v246.06c0.000976562 10.6904 -12.9248 16.0449 -20.4844 8.48535z\" />\n    <glyph glyph-name=\"dot-circle\" unicode=\"&#xf192;\" \nd=\"M256 440c136.967 0 248 -111.033 248 -248s-111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248zM336 192c0 44.1123 -35.8877 80 -80 80s-80 -35.8877 -80 -80s35.8877 -80 80 -80s80 35.8877 80 80z\" />\n    <glyph glyph-name=\"wheelchair\" unicode=\"&#xf193;\" \nd=\"M496.101 62.3311l14.2275 -28.6631c3.92871 -7.91504 0.697266 -17.5156 -7.21777 -21.4453l-65.4658 -32.8857c-16.0488 -7.9668 -35.5557 -1.19434 -43.1885 15.0547l-62.7773 133.608h-139.679c-15.9248 0 -29.4258 11.71 -31.6787 27.4746\nc-33.8887 237.218 -31.9414 222.481 -32.3213 228.525c0 36.3584 30.3184 65.6348 67.0518 63.9287c33.2715 -1.54492 60.0479 -28.9043 60.9248 -62.2012c0.868164 -32.9326 -23.1514 -60.4229 -54.6074 -65.0381l4.66992 -32.6904h129.961c8.83691 0 16 -7.16309 16 -16\nv-32c0 -8.83691 -7.16309 -16 -16 -16h-120.818l4.57227 -32h132.246c11.2168 0 24.1924 -8.24023 28.9619 -18.3916l57.5146 -122.407l36.1787 18.3486c7.91504 3.92871 17.5166 0.697266 21.4453 -7.21777zM311.358 96l25.752 -54.8076\nc-27.3047 -61.8848 -89.2402 -105.192 -161.11 -105.192c-97.0469 0 -176 78.9531 -176 176c0 74.0371 45.9561 137.536 110.836 163.489c2.64453 -18.4736 5.77637 -40.3682 9.48828 -66.333c-33.6299 -19.3477 -56.3242 -55.6514 -56.3242 -97.1562\nc0 -61.7568 50.2432 -112 112 -112c56.3242 0 103.064 41.7959 110.852 96h24.5068z\" />\n    <glyph glyph-name=\"lira-sign\" unicode=\"&#xf195;\" horiz-adv-x=\"384\" \nd=\"M371.994 192c6.78613 0 12.2578 -5.62598 11.9971 -12.4082c-5.15332 -133.758 -94.3174 -211.592 -228.408 -211.592h-79.583c-6.62695 0 -12 5.37305 -12 12v193.442l-49.3975 -10.9775c-7.49316 -1.66602 -14.6025 4.03711 -14.6025 11.7139v40.9766\nc0 5.31348 4.20996 10.5615 9.39746 11.7139l54.6025 12.1338v30.4395l-49.3975 -10.9775c-7.49316 -1.66602 -14.6025 4.03711 -14.6025 11.7139v40.9766c0 5.31348 4.20996 10.5615 9.39746 11.7139l54.6025 12.1338v68.9971c0 6.62695 5.37305 12 12 12h56\nc6.62695 0 12 -5.37305 12 -12v-51.2188l129.397 28.7539c7.49316 1.66602 14.6025 -4.03711 14.6025 -11.7139v-40.9756c0 -5.31348 -4.20996 -10.5615 -9.39746 -11.7139l-134.603 -29.9121v-30.4385l129.397 28.7539c7.49316 1.66602 14.6025 -4.03711 14.6025 -11.7139\nv-40.9766c0 -5.31348 -4.20996 -10.5615 -9.39746 -11.7139l-134.603 -29.9121v-159.219c86.1787 0 168 48 168 148.754c0 6.33398 5.63965 11.2461 11.9746 11.2461h48.0195z\" />\n    <glyph glyph-name=\"space-shuttle\" unicode=\"&#xf197;\" horiz-adv-x=\"640\" \nd=\"M592.604 239.756c29.6787 -13.9111 47.3965 -31.7637 47.3965 -47.7559s-17.7178 -33.8447 -47.3965 -47.7559c-32.8682 -15.4082 -76.8262 -24.2441 -120.604 -24.2441h-285.674c-4.95215 -6.55469 -10.585 -11.9775 -16.7197 -16h206.394\nc-146.843 -30.2529 -156.597 -136 -279.997 -136h-0.00292969v128h-16v-128c-26.5098 0 -48 28.6543 -48 64v64c-23.1807 0 -32 10.0166 -32 24v40c0 13.9678 8.80273 24 32 24v16c-23.1807 0 -32 10.0166 -32 24v40c0 13.9678 8.80273 24 32 24v64\nc0 35.3457 21.4902 64 48 64v-128h16v128h0.00292969c123.4 0 133.154 -105.747 279.997 -136h-206.393c6.13477 -4.02246 11.7676 -9.44531 16.7197 -16h285.673c43.7773 0 87.7354 -8.83594 120.604 -24.2441zM488 152c31.9424 0 31.9092 80 0 80\nc-4.41602 0 -8 -3.58398 -8 -8v-64c0 -4.41602 3.58398 -8 8 -8z\" />\n    <glyph glyph-name=\"envelope-square\" unicode=\"&#xf199;\" horiz-adv-x=\"448\" \nd=\"M400 416c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h352zM178.117 185.896c10.5156 -7.66895 31.3799 -26.1133 45.8828 -25.8955\nc14.4912 -0.225586 35.3828 18.2393 45.8828 25.8936c90.6836 65.8145 89.7461 65.9697 114.117 84.9385v25.167c0 13.2549 -10.7451 24 -24 24h-272c-13.2549 0 -24 -10.7451 -24 -24v-25.167c24.3525 -18.9541 23.4287 -19.1201 114.117 -84.9365zM384 230.225\nc-13.958 -10.793 -33.3252 -25.2334 -95.2832 -70.1982c-13.6826 -9.98438 -37.833 -32.1592 -64.7197 -32.0254c-26.7188 -0.134766 -50.5322 21.6689 -64.6943 32.0098c-61.9736 44.9785 -81.3447 59.4199 -95.3027 70.2139v-142.225c0 -13.2549 10.7451 -24 24 -24h272\nc13.2549 0 24 10.7451 24 24v142.225z\" />\n    <glyph glyph-name=\"university\" unicode=\"&#xf19c;\" \nd=\"M496 320v-16c0 -4.41602 -3.58398 -8 -8 -8h-24v-12c0 -6.62695 -5.37305 -12 -12 -12h-392c-6.62695 0 -12 5.37305 -12 12v12h-24c-4.41602 0 -8 3.58398 -8 8v16c0 2.95215 2.21387 6.26367 4.94141 7.3916l232 88\nc0.810547 0.335938 2.18066 0.608398 3.05859 0.608398s2.24805 -0.272461 3.05859 -0.608398l232 -88c2.72754 -1.12793 4.94141 -4.43945 4.94141 -7.3916zM472 16c13.2549 0 24 -10.7451 24 -24v-16c0 -4.41602 -3.58398 -8 -8 -8h-464c-4.41602 0 -8 3.58398 -8 8v16\nc0 13.2549 10.7451 24 24 24h432zM96 256h64v-192h64v192h64v-192h64v192h64v-192h36c6.62695 0 12 -5.37305 12 -12v-20h-416v20c0 6.62695 5.37305 12 12 12h36v192z\" />\n    <glyph glyph-name=\"graduation-cap\" unicode=\"&#xf19d;\" horiz-adv-x=\"640\" \nd=\"M622.34 294.8c23.5498 -7.24023 23.5498 -38.3594 0 -45.5996l-278.95 -85.7002c-20.3496 -6.25 -37.7295 -2.78027 -46.79 0l-195.569 60.0898c-12.25 -8.41992 -19.9307 -21.7002 -20.6904 -36.7197c9.19043 -5.62012 15.6602 -15.2998 15.6602 -26.8701\nc0 -10.7803 -5.67969 -19.8496 -13.8604 -25.6504l25.5303 -114.88c2.21973 -9.98926 -5.37988 -19.4697 -15.6201 -19.4697h-56.1094c-10.2305 0 -17.8301 9.48047 -15.6104 19.4697l25.5303 114.88c-8.18066 5.80078 -13.8604 14.8701 -13.8604 25.6504\nc0 11.8896 6.78027 21.8496 16.4102 27.3701c0.649414 17.6201 7.20996 33.71 17.8799 46.8994l-48.6299 14.9404c-23.54 7.23047 -23.54 38.3604 0 45.5898l278.95 85.7002c15.1895 4.66992 31.5898 4.66992 46.79 0zM352.79 132.91l145.03 44.5596l14.1797 -113.47\nc0 -35.3496 -85.96 -64 -192 -64s-192 28.6504 -192 64l14.1797 113.46l145.021 -44.5498c12.75 -3.91992 37.0596 -8.75977 65.5898 0z\" />\n    <glyph glyph-name=\"language\" unicode=\"&#xf1ab;\" horiz-adv-x=\"640\" \nd=\"M152.1 211.8l10.9004 -37.5h-38.0996l11.0996 37.5c3.5 12.1006 7.7998 33.2002 7.7998 33.2002h0.5s4.2998 -21.0996 7.7998 -33.2002zM616 352c13.2998 0 24 -10.7002 24 -24v-272c0 -13.2998 -10.7002 -24 -24 -24h-280v320h280zM592 232v16\nc0 6.59961 -5.40039 12 -12 12h-64v16c0 6.59961 -5.40039 12 -12 12h-16c-6.59961 0 -12 -5.40039 -12 -12v-16h-64c-6.59961 0 -12 -5.40039 -12 -12v-16c0 -6.59961 5.40039 -12 12 -12h114.3c-6.2002 -14.2998 -16.5 -29 -30 -43.2002\nc-6.59961 6.90039 -12.3994 13.9004 -17.3994 20.9004c-3.60059 5.09961 -10.6006 6.59961 -16 3.39941l-7.30078 -4.2998l-6.5 -3.89941c-5.89941 -3.5 -7.69922 -11.4004 -3.69922 -17.1006c6.09961 -8.7002 13.0996 -17.2998 21 -25.7002\nc-8.10059 -6.2998 -16.8008 -12.2998 -26.1006 -18c-5.59961 -3.39941 -7.39941 -10.5996 -4.2002 -16.1992l7.90039 -13.9004c3.40039 -5.90039 10.9004 -7.7998 16.7002 -4.2998c12.7002 7.7998 24.5 16.2002 35.3994 24.8994\nc10.9004 -8.7998 22.8008 -17.0996 35.4004 -24.8994c5.7998 -3.5 13.2998 -1.60059 16.7002 4.2998l7.89941 13.9004c3.2002 5.69922 1.40039 12.7998 -4.09961 16.1992c-9 5.5 -17.7002 11.6006 -26.0996 18c21 22.5 35.7998 46.3008 42.6992 69.9004h11.4004\nc6.59961 0 12 5.40039 12 12zM0 328c0 13.2998 10.7002 24 24 24h280v-320h-280c-13.2998 0 -24 10.7002 -24 24v272zM58.9004 111.9c-2.60059 -7.80078 3.19922 -15.9004 11.3994 -15.9004h22.9004c5.2998 0 10 3.59961 11.5 8.7002l9.09961 31.7998h60.2002\nl9.40039 -31.9004c1.40137 -4.74316 6.55273 -8.59668 11.5 -8.59961h22.8994c8.2998 0 14 8.09961 11.4004 15.9004l-57.5 169.1c-1.7002 4.7998 -6.2998 8.09961 -11.4004 8.09961h-32.5c-5.2002 0 -9.7002 -3.19922 -11.3994 -8.09961z\" />\n    <glyph glyph-name=\"fax\" unicode=\"&#xf1ac;\" \nd=\"M64 320c17.6699 0 32 -14.3301 32 -32v-320c0 -17.6699 -14.3301 -32 -32 -32h-32c-17.6699 0 -32 14.3301 -32 32v320c0 17.6699 14.3301 32 32 32h32zM480 288c17.6699 0 32 -14.3301 32 -32v-288c0 -17.6699 -14.3301 -32 -32 -32h-320c-17.6699 0 -32 14.3301 -32 32\nv448c0 17.6699 14.3301 32 32 32h242.74c8.49023 0 16.6299 -3.37012 22.6299 -9.37012l45.2598 -45.25c6 -6.00977 9.37012 -14.1396 9.37012 -22.6299v-82.75zM288 16v32c0 8.83984 -7.16016 16 -16 16h-32c-8.83984 0 -16 -7.16016 -16 -16v-32\nc0 -8.83984 7.16016 -16 16 -16h32c8.83984 0 16 7.16016 16 16zM288 144v32c0 8.83984 -7.16016 16 -16 16h-32c-8.83984 0 -16 -7.16016 -16 -16v-32c0 -8.83984 7.16016 -16 16 -16h32c8.83984 0 16 7.16016 16 16zM416 16v32c0 8.83984 -7.16016 16 -16 16h-32\nc-8.83984 0 -16 -7.16016 -16 -16v-32c0 -8.83984 7.16016 -16 16 -16h32c8.83984 0 16 7.16016 16 16zM416 144v32c0 8.83984 -7.16016 16 -16 16h-32c-8.83984 0 -16 -7.16016 -16 -16v-32c0 -8.83984 7.16016 -16 16 -16h32c8.83984 0 16 7.16016 16 16zM432 256v96h-32\nc-8.83984 0 -16 7.16016 -16 16v32h-208v-144h256z\" />\n    <glyph glyph-name=\"building\" unicode=\"&#xf1ad;\" horiz-adv-x=\"448\" \nd=\"M436 -32c6.62695 0 12 -5.37305 12 -12v-20h-448v20c0 6.62695 5.37305 12 12 12h20v456c0 13.2549 10.7451 24 24 24h336c13.2549 0 24 -10.7451 24 -24v-456h20zM128 372v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12v40\nc0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12zM128 276v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12v40c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12zM180 128c6.62695 0 12 5.37305 12 12v40\nc0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40zM256 -32v84c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-84h64zM320 140v40c0 6.62695 -5.37305 12 -12 12h-40\nc-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM320 236v40c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM320 332v40\nc0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12z\" />\n    <glyph glyph-name=\"child\" unicode=\"&#xf1ae;\" horiz-adv-x=\"384\" \nd=\"M120 376c0 39.7646 32.2354 72 72 72s72 -32.2354 72 -72c0 -39.7637 -32.2354 -72 -72 -72s-72 32.2363 -72 72zM374.627 374.627c12.4971 -12.4971 12.4971 -32.7568 0 -45.2539l-94.627 -94.627v-266.746c0 -17.6729 -14.3271 -32 -32 -32h-16\nc-17.6729 0 -32 14.3271 -32 32v112h-16v-112c0 -17.6729 -14.3271 -32 -32 -32h-16c-17.6729 0 -32 14.3271 -32 32v266.746l-94.627 94.626c-12.4971 12.4971 -12.4971 32.7578 0 45.2549c12.4961 12.4971 32.7578 12.4971 45.2539 0l86.627 -86.627h101.491\nl86.6279 86.627c12.4961 12.4971 32.7578 12.4971 45.2539 0z\" />\n    <glyph glyph-name=\"paw\" unicode=\"&#xf1b0;\" \nd=\"M256 224c79.4102 0 192 -122.76 192 -200.25c0 -34.9004 -26.8096 -55.75 -71.7402 -55.75c-48.4102 0 -80.75 25.0801 -120.26 25.0801c-39.1699 0 -71.4199 -25.0801 -120.26 -25.0801c-44.9307 0 -71.7402 20.8496 -71.7402 55.75c0 77.4902 112.59 200.25 192 200.25\nzM108.72 236.61c10.4004 -34.6504 -4.76953 -68.3799 -33.8896 -75.3408c-29.1201 -6.95996 -61.1602 15.4805 -71.5605 50.1309c-10.3994 34.6494 4.77051 68.3799 33.8906 75.3398s61.1602 -15.4805 71.5596 -50.1299zM193.44 257.39\nc-30.9307 -8.14941 -65.6201 20.4502 -77.46 63.8701c-11.8408 43.4199 3.63965 85.2207 34.5791 93.3604c30.9404 8.13965 65.6201 -20.4502 77.46 -63.8701c11.8408 -43.4199 -3.63965 -85.2197 -34.5791 -93.3604zM474.83 286.73\nc29.1201 -6.96094 44.29 -40.6904 33.8896 -75.3408c-10.4102 -34.6494 -42.4395 -57.0898 -71.5596 -50.1299s-44.29 40.6904 -33.8906 75.3398c10.4102 34.6504 42.4404 57.0908 71.5605 50.1309zM318.56 257.39c-30.9395 8.14062 -46.4199 49.9404 -34.5791 93.3604\nc11.8398 43.4199 46.5195 72.0195 77.46 63.8701c30.9395 -8.15039 46.4199 -49.9404 34.5791 -93.3604c-11.8398 -43.4199 -46.5195 -72.0098 -77.46 -63.8701z\" />\n    <glyph glyph-name=\"cube\" unicode=\"&#xf1b2;\" \nd=\"M239.1 441.7c10.9004 4.09961 22.9004 4.09961 33.7002 -0.100586l208 -78c18.7002 -7 31.1006 -24.8994 31.1006 -44.8994v-225.101c0 -18.0996 -10.2002 -34.7998 -26.5 -42.8994l-208 -104c-13.5 -6.7998 -29.4004 -6.7998 -42.9004 0l-208 104\nc-16.2002 8.09961 -26.5 24.7002 -26.5 42.8994v225.101c0 20 12.4004 38 31.0996 45zM256 379.6l-192 -72v-1.09961l192 -78l192 78v1.09961zM288 23.5996l160 80v133.9l-160 -65v-148.9z\" />\n    <glyph glyph-name=\"cubes\" unicode=\"&#xf1b3;\" \nd=\"M488.6 197.8c14.1006 -5.2998 23.4004 -18.7002 23.4004 -33.7002v-110.1c0 -13.5996 -7.7002 -26.0996 -19.9004 -32.2002l-100 -50c-10.0996 -5.09961 -22.0996 -5.09961 -32.1992 0l-103.9 52l-103.9 -52c-10.0996 -5.09961 -22.0996 -5.09961 -32.1992 0l-100 50\nc-12.2002 6.10059 -19.9004 18.6006 -19.9004 32.2002v110.1c0 15 9.2998 28.4004 23.2998 33.7002l96.6006 36.2002v108.5c0 15 9.2998 28.4004 23.3994 33.7002l100 37.5c8.2002 3.09961 17.2002 3.09961 25.2998 0l100 -37.5\nc14.1006 -5.2998 23.4004 -18.7002 23.4004 -33.7002v-108.5zM358 233.2v73.2998l-85 -37v-68.2002zM154 343.9v-0.600586l102 -41.3994l102 41.3994v0.600586l-102 38.1992zM238 52.7998v75.4004l-85 -38.7998v-79.1006zM238 164.8v0.600586l-102 38.1992l-102 -38.1992\nv-0.600586l102 -41.3994zM478 52.7998v75.4004l-85 -38.7998v-79.1006zM478 164.8v0.600586l-102 38.1992l-102 -38.1992v-0.600586l102 -41.3994z\" />\n    <glyph glyph-name=\"recycle\" unicode=\"&#xf1b8;\" \nd=\"M184.561 186.097c3.23242 -13.9971 -12.1221 -24.6348 -24.0674 -17.168l-40.7363 25.4551l-50.8672 -81.4014c-13.2832 -21.2559 2.07031 -48.9824 27.1221 -48.9824h51.9883c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-51.8848\nc-75.334 0 -121.302 83.0479 -81.4082 146.88l50.8223 81.3877l-40.7256 25.4482c-12.0811 7.54688 -8.96582 25.9609 4.87891 29.1582l110.237 25.4502c8.61133 1.9873 17.2012 -3.38086 19.1895 -11.9902zM283.122 369.012\nc-12.2842 19.6543 -41.5449 20.3193 -54.2568 -0.0214844l-17.9609 -28.7432c-3.5127 -5.62012 -10.916 -7.3291 -16.5361 -3.81738l-33.9189 21.1953c-5.62012 3.51172 -7.33008 10.9131 -3.82031 16.5332l17.9629 28.7656c37.6074 60.1709 125.295 60.0332 162.816 0\nl41.2627 -66.082l40.6875 25.4238c12.0771 7.55176 27.2646 -3.32324 24.0674 -17.168l-25.4502 -110.236c-1.97363 -8.55273 -10.5166 -13.9893 -19.1885 -11.9902l-110.237 25.4502c-13.8789 3.20508 -16.9297 21.6299 -4.87891 29.1572l40.7402 25.457zM497.288 146.88\nc39.9268 -63.8828 -6.13379 -146.88 -81.4082 -146.88h-95.8799v-47.9893c0 -14.3105 -17.3105 -21.3184 -27.3135 -11.3145l-80 79.9883c-6.24805 6.24805 -6.24805 16.3799 0 22.627l80 79.9814c10.0713 10.0703 27.3135 2.90039 27.3135 -11.3125v-47.9814h95.9844\nc25.0791 0 40.3926 27.749 27.1357 48.96l-27.5645 44.1123c-3.51172 5.62109 -1.80176 13.0234 3.81836 16.5361l33.8613 21.1582c5.62207 3.51367 13.0264 1.80273 16.5381 -3.82031z\" />\n    <glyph glyph-name=\"car\" unicode=\"&#xf1b9;\" \nd=\"M499.99 272c7.80957 0 13.54 -7.33984 11.6494 -14.9102l-6 -24c-1.33008 -5.33984 -6.12988 -9.08984 -11.6396 -9.08984h-20.0703c13.4199 -11.7305 22.0703 -28.7803 22.0703 -48v-48c0 -16.1299 -6.16016 -30.6797 -16 -41.9297v-54.0703\nc0 -17.6699 -14.3301 -32 -32 -32h-32c-17.6699 0 -32 14.3301 -32 32v32h-256v-32c0 -17.6699 -14.3301 -32 -32 -32h-32c-17.6699 0 -32 14.3301 -32 32v54.0703c-9.83984 11.2598 -16 25.8096 -16 41.9297v48c0 19.2197 8.65039 36.2695 22.0801 48h-20.0703\nc-5.50977 0 -10.3096 3.75 -11.6396 9.08984l-6 24c-1.90039 7.57031 3.83008 14.9102 11.6396 14.9102h59.8604l16.6396 41.5996c17.1104 42.7705 57.9307 70.4004 103.99 70.4004h127c46.0703 0 86.8799 -27.6299 103.98 -70.4004l16.6396 -41.5996h59.8701z\nM147.93 289.83l-19.9297 -49.8301h256l-19.9297 49.8301c-7.29004 18.2197 -24.9404 30.1699 -44.5703 30.1699h-127c-19.6299 0 -37.2803 -11.9502 -44.5703 -30.1699zM96 128.2c19.2002 0 48 -3.19043 48 15.9502c0 19.1396 -28.7998 47.8496 -48 47.8496\ns-32 -12.7598 -32 -31.9004c0 -19.1396 12.7998 -31.8994 32 -31.8994zM416 128.2c19.2002 0 32 12.7598 32 31.8994c0 19.1406 -12.7998 31.9004 -32 31.9004s-48 -28.71 -48 -47.8496c0 -19.1406 28.7998 -15.9502 48 -15.9502z\" />\n    <glyph glyph-name=\"taxi\" unicode=\"&#xf1ba;\" \nd=\"M462 206.36c28.5898 -6.40039 50 -31.8301 50 -62.3604v-48c0 -23.6201 -12.9502 -44.0303 -32 -55.1201v-40.8799c0 -17.6699 -14.3301 -32 -32 -32h-32c-17.6699 0 -32 14.3301 -32 32v32h-256v-32c0 -17.6699 -14.3301 -32 -32 -32h-32c-17.6699 0 -32 14.3301 -32 32\nv40.8799c-19.0498 11.0801 -32 31.4902 -32 55.1201v48c0 30.5303 21.4102 55.96 50 62.3604l22 84.8398c9.59961 35.2002 41.5996 60.7998 76.7998 60.7998h11.2002v32c0 17.6699 14.3301 32 32 32h128c17.6699 0 32 -14.3301 32 -32v-32h11.2002\nc35.2002 0 67.2002 -25.5996 76.7998 -60.7998zM96 96c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM116.55 208h278.9l-17.3906 67.1396c-2.01953 7.37988 -9.37988 12.8604 -14.8496 12.8604h-214.4\nc-5.46973 0 -12.8291 -5.48047 -15.0596 -13.6396zM416 96c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z\" />\n    <glyph glyph-name=\"tree\" unicode=\"&#xf1bb;\" horiz-adv-x=\"384\" \nd=\"M378.31 69.5098c6 -6.79004 7.36035 -16.0898 3.56055 -24.2598c-3.75 -8.0498 -12 -13.25 -21.0098 -13.25h-136.86v-24.4502l30.29 -48.3994c5.32031 -10.6406 -2.41992 -23.1602 -14.3096 -23.1602h-95.9609c-11.8896 0 -19.6299 12.5195 -14.3096 23.1602\nl30.29 48.3994v24.4502h-136.86c-9.00977 0 -17.2598 5.2002 -21.0098 13.25c-3.7998 8.16992 -2.43945 17.4697 3.56055 24.2598l79.8896 90.4902h-30.6299c-9.02051 0 -16.9805 5 -20.7803 13.0498c-3.79004 8.0498 -2.54004 17.2598 3.27051 24.04l78.1396 90.9102\nh-28.8896c-9.10059 0 -17.3105 5.34961 -20.8701 13.6104c-3.51074 8.12988 -1.86035 17.5898 4.23926 24.0801l110.28 117.479c6.04004 6.4502 17.29 6.4502 23.3203 0l110.27 -117.479c6.10059 -6.49023 7.76074 -15.9502 4.24023 -24.0801\nc-3.55957 -8.26074 -11.7598 -13.6104 -20.8604 -13.6104h-28.8896l78.1299 -90.8896c5.83008 -6.79004 7.08008 -16.0107 3.28027 -24.0508c-3.7998 -8.05957 -11.7705 -13.0596 -20.7803 -13.0596h-30.6299z\" />\n    <glyph glyph-name=\"database\" unicode=\"&#xf1c0;\" horiz-adv-x=\"448\" \nd=\"M448 374.857v-45.7148c0 -40.2852 -100.333 -73.1426 -224 -73.1426s-224 32.8574 -224 73.1426v45.7148c0 40.2852 100.333 73.1426 224 73.1426s224 -32.8574 224 -73.1426zM448 272v-102.857c0 -40.2852 -100.333 -73.1426 -224 -73.1426s-224 32.8574 -224 73.1426\nv102.857c48.125 -33.1426 136.208 -48.5723 224 -48.5723s175.874 15.4297 224 48.5723zM448 112v-102.857c0 -40.2852 -100.333 -73.1426 -224 -73.1426s-224 32.8574 -224 73.1426v102.857c48.125 -33.1426 136.208 -48.5723 224 -48.5723s175.874 15.4297 224 48.5723z\n\" />\n    <glyph glyph-name=\"file-pdf\" unicode=\"&#xf1c1;\" horiz-adv-x=\"384\" \nd=\"M181.9 191.9c-5 16 -4.90039 46.8994 -2 46.8994c8.39941 0 7.59961 -36.8994 2 -46.8994zM180.2 144.7c9.59961 -17.4004 21.7998 -31.2002 34.5 -40.7998c-23.9004 -4.7002 -44.6006 -14.9004 -62.9004 -21.9004c11.1006 19.4004 20.7002 42.5 28.4004 62.7002z\nM86.0996 19.9004c5.80078 15.6992 28.2002 33.8994 34.9004 40.1992c-21.7002 -34.7998 -34.9004 -41 -34.9004 -40.1992zM248 288h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136\nc0 -13.2002 10.7998 -24 24 -24zM240 116.2c-20 12.2002 -33.2998 29 -42.7002 53.7998c4.5 18.5 11.6006 46.5996 6.2002 64.2002c-4.7002 29.3994 -42.4004 26.5 -47.7998 6.7998c-5 -18.2998 -0.400391 -44.0996 8.09961 -77\nc-11.5996 -27.5996 -28.7002 -64.5996 -40.7998 -85.7998c-0.0996094 0 -0.0996094 -0.100586 -0.200195 -0.100586c-27.0996 -13.8994 -73.5996 -44.5 -54.5 -68c5.60059 -6.89941 16 -10 21.5 -10c17.9004 0 35.7002 18 61.1006 61.8008\nc25.7998 8.5 54.0996 19.0996 79 23.1992c21.6992 -11.7998 47.0996 -19.5 64 -19.5c29.1992 0 31.1992 32 19.6992 43.4004c-13.8994 13.5996 -54.2998 9.7002 -73.5996 7.2002zM377 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128v128h6c6.40039 0 12.5 -2.5 17 -7z\nM302.9 87.7002c0 0 -5.7002 -6.7998 -42.8008 9c40.3008 2.89941 46.9004 -6.2998 42.8008 -9z\" />\n    <glyph glyph-name=\"file-word\" unicode=\"&#xf1c2;\" horiz-adv-x=\"384\" \nd=\"M224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136zM281.1 192c-5.59961 0 -10.5 -3.90039 -11.5 -9.5c-24.1992 -111.4 -21.7998 -118 -21.5996 -129.2\nc-0.799805 5.40039 -5.59961 29 -29.5996 129.4c-1.30078 5.39941 -6.10059 9.2002 -11.7002 9.2002h-29.1006c-5.59961 0 -10.3994 -3.7002 -11.6992 -9.10059c-22.1006 -90 -27.8008 -112.5 -29.4004 -122.7c-0.900391 12.7002 -5.40039 44.2002 -21 122.2\nc-1.09961 5.7002 -6.09961 9.7002 -11.7998 9.7002h-24.5c-7.7002 0 -13.4004 -7.09961 -11.7002 -14.5996l37.7998 -168c1.2002 -5.5 6.10059 -9.40039 11.7002 -9.40039h37.0996c5.5 0 10.3008 3.7998 11.6006 9.09961c23.2002 93.1006 24.5 96.2002 25.5996 110.5h0.5\nc4.7998 -29.2998 -0.200195 -7 25.6006 -110.5c1.2998 -5.2998 6.09961 -9.09961 11.5996 -9.09961h38c5.59961 0 10.5 3.7998 11.7002 9.2998l38 168c1.7002 7.60059 -4 14.7002 -11.7002 14.7002h-23.9004zM384 326.1v-6.09961h-128v128h6.09961\nc6.40039 0 12.5 -2.5 17 -7l97.9004 -98c4.5 -4.5 7 -10.5996 7 -16.9004z\" />\n    <glyph glyph-name=\"file-excel\" unicode=\"&#xf1c3;\" horiz-adv-x=\"384\" \nd=\"M224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136zM284.1 205.5c5.10059 8 -0.599609 18.5 -10.0996 18.4004h-34.7998\nc-4.40039 0 -8.5 -2.40039 -10.6006 -6.30078c-30.5 -56.7998 -36.5996 -68.5 -36.5996 -68.5c-16.5996 34.9004 -10.5 19.7002 -36.5996 68.5c-2.10059 3.90039 -6.2002 6.30078 -10.6006 6.30078h-34.7998c-9.5 0 -15.2998 -10.5 -10.0996 -18.5l60.2998 -93.5\nl-60.2998 -93.5c-5.10059 -8 0.599609 -18.5 10.0996 -18.5h34.9004c4.39941 0 8.39941 2.39941 10.5 6.2998c26.5996 48.7998 30.1992 54 36.5996 68.7998c0 0 16.9004 -32.5 36.5 -68.7002c2.09961 -3.89941 6.2002 -6.2998 10.5996 -6.2998h34.9004\nc9.5 0 15.2002 10.5 10.0996 18.5l-60.0996 93.5zM384 326.1v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7l97.9004 -98c4.5 -4.5 7 -10.5996 7 -16.9004z\" />\n    <glyph glyph-name=\"file-powerpoint\" unicode=\"&#xf1c4;\" horiz-adv-x=\"384\" \nd=\"M193.7 176.8c8.7998 0 15.5 -2.7002 20.2998 -8.09961c9.59961 -10.9004 9.7998 -32.7002 -0.200195 -44.1006c-4.89941 -5.59961 -11.8994 -8.5 -21.0996 -8.5h-26.9004v60.7002h27.9004zM377 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128v128h6\nc6.40039 0 12.5 -2.5 17 -7zM224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136zM277 146.8c0 44.2002 -28.4004 77 -72.9004 77h-81\nc-6.59961 0 -12 -5.39941 -12 -12v-199.8c0 -6.59961 5.40039 -12 12 -12h30.8008c6.59961 0 12 5.40039 12 12v57.2002c22.2998 0 111.1 -12.7002 111.1 77.5996z\" />\n    <glyph glyph-name=\"file-image\" unicode=\"&#xf1c5;\" horiz-adv-x=\"384\" \nd=\"M384 326.059v-6.05859h-128v128h6.05859c5.4873 0 13.0898 -3.14941 16.9707 -7.0293l97.9404 -97.9404c3.88086 -3.88086 7.03027 -11.4834 7.03027 -16.9717zM248 288h136v-328c0 -13.2549 -10.7451 -24 -24 -24h-336c-13.2549 0 -24 10.7451 -24 24v464\nc0 13.2549 10.7451 24 24 24h200v-136c0 -13.2002 10.7998 -24 24 -24zM112.545 272c-26.5088 0 -48 -21.4902 -48 -48s21.4902 -48 48 -48s48 21.4902 48 48s-21.4902 48 -48 48zM320.545 32v112l-39.5137 39.5146c-4.6875 4.68652 -12.2852 4.68652 -16.9717 0\nl-103.515 -103.515l-39.5146 39.5146c-4.68652 4.68652 -11.7988 5.1709 -16.4854 0.485352l-39.5146 -39.5146l-0.485352 -48.4854h256z\" />\n    <glyph glyph-name=\"file-archive\" unicode=\"&#xf1c6;\" horiz-adv-x=\"384\" \nd=\"M377 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7zM128.4 112c17.8994 0 32.5 -12.0996 32.5 -27s-14.5 -27 -32.4004 -27s-32.5 12 -32.5 27c0 14.9004 14.5 27 32.4004 27zM224 312c0 -13.2002 10.7998 -24 24 -24h136\nv-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h104.4v-32h32v32h63.5996v-136zM95.9004 416v-32h32v32h-32zM128.2 32c33 0 57.7998 30.2002 51.3994 62.5996l-17.2998 87.7002\nc-1.09961 5.60059 -6.09961 9.7002 -11.7998 9.7002h-22.0996v32h32v32h-32v32h32v32h-32v32h32v32h-32v-32h-32v-32h32v-32h-32v-32h32v-32h-32v-32l-19.6006 -97.0996c-6.59961 -32.5 18.2002 -62.9004 51.4004 -62.9004z\" />\n    <glyph glyph-name=\"file-audio\" unicode=\"&#xf1c7;\" horiz-adv-x=\"384\" \nd=\"M224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136zM160 44v136c0 10.7002 -12.9004 16.0996 -20.5 8.5l-35.5 -36.5h-28c-6.59961 0 -12 -5.40039 -12 -12\nv-56c0 -6.59961 5.40039 -12 12 -12h28l35.5 -36.5c7.59961 -7.5 20.5 -2.2002 20.5 8.5zM193.2 91.5996c-22.5 -23.0996 12.5996 -55.7998 34.3994 -33.5c27.2002 28 27.2002 72.5 0 100.4c-22.1992 22.7002 -56.5 -10.7002 -34.3994 -33.5\nc9.09961 -9.2998 9.09961 -24.0996 0 -33.4004zM279.2 208.7c-22.1006 22.7998 -56.5 -10.7002 -34.4004 -33.5c36.2998 -37.2998 36.2002 -96.6006 0 -133.8c-22.5996 -23.2002 12.6006 -55.9004 34.4004 -33.5c54.3994 56 54.3994 144.899 0 200.8zM384 326.1v-6.09961\nh-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7l97.9004 -98c4.5 -4.5 7 -10.5996 7 -16.9004z\" />\n    <glyph glyph-name=\"file-video\" unicode=\"&#xf1c8;\" horiz-adv-x=\"384\" \nd=\"M384 326.059v-6.05859h-128v128h6.05859c6.36523 0 12.4707 -2.5293 16.9717 -7.0293l97.9404 -97.9404c3.87988 -3.88086 7.0293 -11.4834 7.0293 -16.9717zM224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2549 -10.7451 -24 -24 -24h-336\nc-13.2549 0 -24 10.7451 -24 24v464c0 13.2549 10.7451 24 24 24h200v-136zM320 167.984c0 21.4609 -25.96 31.9795 -40.9707 16.9697l-55.0293 -55.0127v38.0586c0 13.2549 -10.7451 24 -24 24h-112c-13.2549 0 -24 -10.7451 -24 -24v-112c0 -13.2549 10.7451 -24 24 -24\nh112c13.2549 0 24 10.7451 24 24v38.0586l55.0293 -55.0088c15.0273 -15.0264 40.9707 -4.47363 40.9707 16.9717v111.963z\" />\n    <glyph glyph-name=\"file-code\" unicode=\"&#xf1c9;\" horiz-adv-x=\"384\" \nd=\"M384 326.059v-6.05859h-128v128h6.05859c6.36523 0 12.4707 -2.5293 16.9717 -7.0293l97.9404 -97.9404c3.87988 -3.88086 7.0293 -11.4834 7.0293 -16.9717zM248 288h136v-328c0 -13.2549 -10.7451 -24 -24 -24h-336c-13.2549 0 -24 10.7451 -24 24v464\nc0 13.2549 10.7451 24 24 24h200v-136c0 -13.2002 10.7998 -24 24 -24zM123.206 47.4951l19.5791 20.8838c0.805664 0.860352 1.45996 2.51465 1.45996 3.69336c0 1.34766 -0.820312 3.16309 -1.83203 4.05371l-40.7627 35.874l40.7627 35.874\nc1.01172 0.890625 1.83203 2.70605 1.83203 4.05371c0 1.17871 -0.654297 2.83301 -1.45996 3.69336l-19.5791 20.8848c-0.882812 0.942383 -2.64844 1.70703 -3.93945 1.70703c-1.17871 0 -2.83398 -0.654297 -3.69336 -1.46094l-64.8662 -60.8115\nc-0.942383 -0.883789 -1.70703 -2.64844 -1.70703 -3.93945c0 -1.29199 0.764648 -3.05664 1.70703 -3.94043l64.8662 -60.8115c0.859375 -0.806641 2.51465 -1.46094 3.69336 -1.46094c1.29102 0 3.05664 0.764648 3.93945 1.70703zM174.501 -2.98438\nc0.407227 -0.118164 1.08203 -0.213867 1.50586 -0.213867c2.23926 0 4.56152 1.74512 5.18457 3.89551l61.4395 211.626c0.118164 0.407227 0.214844 1.08203 0.214844 1.50586c0 2.23828 -1.74512 4.56152 -3.89453 5.18555l-27.4521 7.9707\nc-0.407227 0.117188 -1.08105 0.213867 -1.50488 0.213867c-2.23828 0 -4.5625 -1.74512 -5.1875 -3.89551l-61.4395 -211.626c-0.118164 -0.40625 -0.213867 -1.08105 -0.213867 -1.50391c0 -2.23926 1.74512 -4.56348 3.89453 -5.1875zM335.293 108.061\nc0.942383 0.883789 1.70703 2.64844 1.70703 3.94043c0 1.29102 -0.764648 3.05566 -1.70605 3.93945l-64.8662 60.8115c-0.859375 0.806641 -2.51465 1.46094 -3.69336 1.46094c-1.29102 0 -3.05566 -0.764648 -3.93945 -1.70703l-19.5801 -20.8848\nc-0.805664 -0.860352 -1.45996 -2.51465 -1.45996 -3.69336c0 -1.34766 0.820312 -3.16309 1.83203 -4.05371l40.7627 -35.874l-40.7637 -35.873c-1.01172 -0.890625 -1.83203 -2.70605 -1.83203 -4.05371c0 -1.17871 0.654297 -2.83301 1.45996 -3.69336l19.5801 -20.8848\nc0.882812 -0.942383 2.64844 -1.70703 3.93945 -1.70703c1.17871 0 2.83398 0.654297 3.69336 1.46094z\" />\n    <glyph glyph-name=\"life-ring\" unicode=\"&#xf1cd;\" \nd=\"M256 440c136.967 0 248 -111.033 248 -248s-111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248zM429.696 320.441c-10.6406 14.3398 -30.915 34.6143 -45.2549 45.2549l-63.3994 -63.3994c18.585 -11.0029 34.2676 -26.6963 45.2549 -45.2549zM256 96\nc53.0186 0 96 42.9814 96 96s-42.9814 96 -96 96s-96 -42.9814 -96 -96s42.9814 -96 96 -96zM127.559 365.696c-14.3398 -10.6406 -34.6143 -30.915 -45.2549 -45.2549l63.3994 -63.3994c11.0029 18.585 26.6963 34.2676 45.2549 45.2549zM82.3037 63.5586\nc10.6406 -14.3398 30.915 -34.6143 45.2549 -45.2549l63.3994 63.3994c-18.585 11.0029 -34.2676 26.6963 -45.2549 45.2549zM384.441 18.3037c14.3398 10.6406 34.6143 30.915 45.2549 45.2549l-63.3994 63.3994c-11.0029 -18.585 -26.6963 -34.2676 -45.2549 -45.2549z\n\" />\n    <glyph glyph-name=\"circle-notch\" unicode=\"&#xf1ce;\" \nd=\"M288 408.944c0 15.5996 14.6777 27.167 29.7891 23.292c107.071 -27.457 186.211 -124.604 186.211 -240.236c0 -136.788 -110.745 -247.711 -247.466 -247.999c-137.054 -0.289062 -247.812 109.615 -248.531 246.667c-0.609375 116.126 78.5996 213.85 185.951 241.502\nc15.2119 3.91895 30.0459 -7.52539 30.0459 -23.2344v-16.6475c0 -10.8047 -7.28125 -20.1621 -17.6885 -23.0693c-77.5254 -21.6543 -134.312 -92.749 -134.312 -177.219c0 -101.705 82.3105 -184 184 -184c101.705 0 184 82.3105 184 184\nc0 84.4824 -56.7959 155.566 -134.314 177.219c-10.4043 2.90723 -17.6855 12.2627 -17.6855 23.0664v16.6592z\" />\n    <glyph glyph-name=\"paper-plane\" unicode=\"&#xf1d8;\" \nd=\"M476 444.8c17.2998 10 39 -4.59961 35.5996 -24.7998l-72 -432c-2.59961 -15.2998 -18.7998 -24.2002 -33 -18.2002l-124.6 52.2002l-63.5 -77.2998c-14 -17.1006 -42.5 -7.7998 -42.5 15.7998v80.5l240.9 293.5c4.69922 5.7002 -3.10059 13.2002 -8.60059 8.2998\nl-287.3 -253.2l-106.3 44.6006c-18 7.59961 -20.2998 32.7998 -2.2002 43.2002z\" />\n    <glyph glyph-name=\"history\" unicode=\"&#xf1da;\" \nd=\"M504 192.469c0.25293 -136.64 -111.18 -248.372 -247.82 -248.468c-59.0146 -0.0419922 -113.223 20.5303 -155.821 54.9111c-11.0771 8.93945 -11.9053 25.541 -1.83984 35.6064l11.2676 11.2676c8.6084 8.6084 22.3525 9.55078 31.8906 1.9834\nc31.3848 -24.9043 71.1045 -39.7695 114.323 -39.7695c101.705 0 184 82.3105 184 184c0 101.705 -82.3105 184 -184 184c-48.8145 0 -93.1494 -18.9688 -126.068 -49.9316l50.7539 -50.7539c10.0801 -10.0801 2.94141 -27.3145 -11.3125 -27.3145h-145.373\nc-8.83691 0 -16 7.16309 -16 16v145.373c0 14.2539 17.2344 21.3926 27.3145 11.3135l49.3711 -49.3711c44.5234 42.5488 104.866 68.6846 171.314 68.6846c136.81 0 247.747 -110.78 248 -247.531zM323.088 113.685c-8.1377 -10.4629 -23.2158 -12.3467 -33.6787 -4.20996\nl-65.4092 50.874v135.651c0 13.2549 10.7451 24 24 24h16c13.2549 0 24 -10.7451 24 -24v-104.349l40.7012 -31.6572c10.4629 -8.13672 12.3477 -23.2158 4.20996 -33.6787z\" />\n    <glyph glyph-name=\"heading\" unicode=\"&#xf1dc;\" \nd=\"M448 352v-320h32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-160c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32v128h-192v-128h32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-160\nc-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32v320h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h160c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32v-128h192v128h-32c-8.83203 0 -16 7.16797 -16 16v32\nc0 8.83203 7.16797 16 16 16h160c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32z\" />\n    <glyph glyph-name=\"paragraph\" unicode=\"&#xf1dd;\" horiz-adv-x=\"448\" \nd=\"M448 400v-32c0 -8.83203 -7.16797 -16 -16 -16h-48v-368c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v368h-32v-368c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v112h-32c-88.3203 0 -160 71.6797 -160 160\ns71.6797 160 160 160h240c8.83203 0 16 -7.16797 16 -16z\" />\n    <glyph glyph-name=\"sliders-h\" unicode=\"&#xf1de;\" \nd=\"M496 64c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-336v-16c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v16h-80c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h80v16c0 8.7998 7.2002 16 16 16h32\nc8.7998 0 16 -7.2002 16 -16v-16h336zM496 224c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-80v-16c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v16h-336c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h336v16\nc0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-16h80zM496 384c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-208v-16c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v16h-208c-8.7998 0 -16 7.2002 -16 16v32\nc0 8.7998 7.2002 16 16 16h208v16c0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-16h208z\" />\n    <glyph glyph-name=\"share-alt\" unicode=\"&#xf1e0;\" horiz-adv-x=\"448\" \nd=\"M352 128c53.0186 0 96 -42.9814 96 -96s-42.9814 -96 -96 -96s-96 42.9814 -96 96v0.0283203c0 5.8125 1.01953 15.1367 2.27637 20.8125l-102.486 64.0537c-16.4033 -13.0752 -37.1816 -20.8945 -59.79 -20.8945c-53.0186 0 -96 42.9814 -96 96s42.9814 96 96 96\nc22.6084 0 43.3867 -7.81934 59.79 -20.8945l102.486 64.0537c-1.48633 6.71094 -2.27637 13.6826 -2.27637 20.8408c0 53.0186 42.9814 96 96 96s96 -42.9814 96 -96s-42.9814 -96 -96 -96c-22.6084 0 -43.3867 7.81934 -59.79 20.8965l-102.486 -64.0547\nc1.25684 -5.68359 2.27637 -15.0205 2.27637 -20.8408c0 -5.82129 -1.01953 -15.1582 -2.27637 -20.8418l102.486 -64.0537c16.4033 13.0752 37.1816 20.8945 59.79 20.8945z\" />\n    <glyph glyph-name=\"share-alt-square\" unicode=\"&#xf1e1;\" horiz-adv-x=\"448\" \nd=\"M448 368v-352c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h352c26.5098 0 48 -21.4902 48 -48zM304 152c-14.5615 0 -27.8232 -5.56055 -37.7832 -14.6709l-67.958 40.7744\nc0.960938 3.77539 1.74121 10.001 1.74121 13.8975c0 3.89551 -0.780273 10.1211 -1.74121 13.8965l67.958 40.7744c9.95996 -9.11133 23.2217 -14.6719 37.7832 -14.6719c30.9277 0 56 25.0723 56 56s-25.0723 56 -56 56s-56 -25.0723 -56 -56\nc0 -4.79688 0.605469 -9.45312 1.74023 -13.8975l-67.958 -40.7744c-9.95898 9.11133 -23.2207 14.6719 -37.7822 14.6719c-30.9277 0 -56 -25.0723 -56 -56s25.0723 -56 56 -56c14.5615 0 27.8232 5.56055 37.7832 14.6709l67.958 -40.7744\nc-0.960938 -3.7666 -1.74023 -9.97656 -1.74023 -13.8623v-0.0351562c0 -30.9277 25.0723 -56 56 -56s56 25.0723 56 56c-0.000976562 30.9287 -25.0732 56.001 -56.001 56.001z\" />\n    <glyph glyph-name=\"bomb\" unicode=\"&#xf1e2;\" \nd=\"M440.5 359.5l-52 -52l26.5 -26.5c9.40039 -9.40039 9.40039 -24.5996 0 -33.9004l-17.4004 -17.3994c11.8008 -26.1006 18.4004 -55.1006 18.4004 -85.6006c0 -114.899 -93.0996 -208 -208 -208s-208 93 -208 207.9s93.0996 208 208 208\nc30.5 0 59.5 -6.59961 85.5996 -18.4004l17.4004 17.4004c9.40039 9.40039 24.5996 9.40039 33.9004 0l26.5 -26.5l52 52zM500 388c6.59961 0 12 -5.40039 12 -12s-5.40039 -12 -12 -12h-24c-6.59961 0 -12 5.40039 -12 12s5.40039 12 12 12h24zM440 448\nc6.59961 0 12 -5.40039 12 -12v-24c0 -6.59961 -5.40039 -12 -12 -12s-12 5.40039 -12 12v24c0 6.59961 5.40039 12 12 12zM473.9 393c-4.60059 -4.7002 -12.2002 -4.7002 -17 0c-4.7002 4.7002 -4.7002 12.2998 0 17l17 17c4.69922 4.7002 12.2998 4.7002 17 0\nc4.69922 -4.7002 4.69922 -12.2998 0 -17zM406.1 393l-17 17c-4.69922 4.7002 -4.69922 12.2998 0 17c4.7002 4.7002 12.3008 4.7002 17 0l17 -17c4.7002 -4.7002 4.7002 -12.2998 0 -17c-4.69922 -4.7002 -12.2998 -4.7002 -17 0zM473.9 359l17 -17\nc4.69922 -4.7002 4.69922 -12.2998 0 -17c-4.7002 -4.7002 -12.3008 -4.7002 -17 0l-17 17c-4.7002 4.7002 -4.7002 12.2998 0 17c4.69922 4.7002 12.2998 4.7002 17 0zM112 176c0 35.2998 28.7002 64 64 64c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16\nc-52.9004 0 -96 -43.0996 -96 -96c0 -8.7998 7.2002 -16 16 -16s16 7.2002 16 16z\" />\n    <glyph glyph-name=\"futbol\" unicode=\"&#xf1e3;\" \nd=\"M504 192c0 -136.967 -111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248s248 -111.033 248 -248zM456 192l-0.00292969 0.282227l-26.0645 -22.7412l-62.6787 58.5l16.4541 84.3555l34.3027 -3.07227\nc-24.8887 34.2158 -60.0039 60.0889 -100.709 73.1406l13.6514 -31.9385l-74.9531 -41.5264l-74.9531 41.5254l13.6514 31.9385c-40.6309 -13.0283 -75.7803 -38.8701 -100.709 -73.1406l34.5645 3.07324l16.1924 -84.3555l-62.6777 -58.5l-26.0645 22.7412\nl-0.00292969 -0.282227c0 -43.0146 13.4971 -83.9521 38.4717 -117.991l7.7041 33.8975l85.1387 -10.4473l36.3008 -77.8262l-29.9023 -17.7861c40.2021 -13.1221 84.29 -13.1475 124.572 0l-29.9023 17.7861l36.3008 77.8262l85.1387 10.4473l7.7041 -33.8975\nc24.9756 34.0391 38.4727 74.9766 38.4727 117.991zM207.898 122.429l-29.8945 91.3125l77.9961 56.5264l77.9961 -56.5264l-29.6221 -91.3125h-96.4756z\" />\n    <glyph glyph-name=\"tty\" unicode=\"&#xf1e4;\" \nd=\"M5.37012 344.178c138.532 138.532 362.936 138.326 501.262 0c6.07812 -6.07812 7.07422 -15.4961 2.58301 -22.6807l-43.2139 -69.1377c-2.97266 -4.75684 -9.9375 -8.61719 -15.5459 -8.61719c-1.94922 0 -5 0.587891 -6.81055 1.31152l-86.4219 34.5693\nc-6.36133 2.54492 -11.5244 10.1719 -11.5244 17.0234c0 0.503906 0.0410156 1.32031 0.0908203 1.82227l5.95215 59.5312c-62.1455 22.4541 -130.636 21.9863 -191.483 0l5.95312 -59.5322c0.0507812 -0.501953 0.0908203 -1.32031 0.0908203 -1.8252\nc0 -6.85156 -5.16309 -14.4766 -11.5244 -17.0205l-86.4238 -34.5684c-1.80957 -0.723633 -4.85938 -1.31152 -6.80859 -1.31152c-5.60938 0 -12.5742 3.86035 -15.5469 8.61719l-43.2109 69.1387c-1.53809 2.46094 -2.78711 6.81445 -2.78711 9.7168\nc0 4.19141 2.40625 9.99902 5.37012 12.9629zM96 140c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40zM192 140c0 -6.62695 -5.37305 -12 -12 -12h-40\nc-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40zM288 140c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40zM384 140\nc0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40zM480 140c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40\nc6.62695 0 12 -5.37305 12 -12v-40zM144 44c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40zM240 44c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40\nc0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40zM336 44c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40zM432 44c0 -6.62695 -5.37305 -12 -12 -12h-40\nc-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40zM96 -52c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40zM384 -52\nc0 -6.62695 -5.37305 -12 -12 -12h-232c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h232c6.62695 0 12 -5.37305 12 -12v-40zM480 -52c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40\nc6.62695 0 12 -5.37305 12 -12v-40z\" />\n    <glyph glyph-name=\"binoculars\" unicode=\"&#xf1e5;\" \nd=\"M416 400v-48h-96v48c0 8.83984 7.16016 16 16 16h64c8.83984 0 16 -7.16016 16 -16zM63.9102 288.01c0.479492 17.6201 14.2998 31.9902 31.9297 31.9902h96.1602v-160h-32v-160c0 -17.6699 -14.3301 -32 -32 -32h-96c-17.6699 0 -32 14.3301 -32 32v44\nc3.45996 129.78 61.4004 150.16 63.9102 244.01zM448.09 288.01c2.50977 -93.8496 60.4502 -114.229 63.9102 -244.01v-44c0 -17.6699 -14.3301 -32 -32 -32h-96c-17.6699 0 -32 14.3301 -32 32v160h-32v160h96.1602c17.6299 0 31.4502 -14.3701 31.9297 -31.9902zM176 416\nc8.83984 0 16 -7.16016 16 -16v-48h-96v48c0 8.83984 7.16016 16 16 16h64zM224 160v160h64v-160h-64z\" />\n    <glyph glyph-name=\"plug\" unicode=\"&#xf1e6;\" horiz-adv-x=\"384\" \nd=\"M256 304v112c0 17.6729 14.3271 32 32 32s32 -14.3271 32 -32v-112h-64zM368 288c8.83691 0 16 -7.16309 16 -16v-32c0 -8.83691 -7.16309 -16 -16 -16h-16v-32c0 -77.4062 -54.9688 -141.971 -128 -156.796v-99.2041h-64v99.2041\nc-73.0312 14.8252 -128 79.3896 -128 156.796v32h-16c-8.83691 0 -16 7.16309 -16 16v32c0 8.83691 7.16309 16 16 16h352zM128 304h-64v112c0 17.6729 14.3271 32 32 32s32 -14.3271 32 -32v-112z\" />\n    <glyph glyph-name=\"newspaper\" unicode=\"&#xf1ea;\" horiz-adv-x=\"576\" \nd=\"M552 384c13.2549 0 24 -10.7451 24 -24v-312c0 -26.5098 -21.4902 -48 -48 -48h-472c-30.9277 0 -56 25.0723 -56 56v272c0 13.2549 10.7451 24 24 24h40v8c0 13.2549 10.7451 24 24 24h464zM56 48c4.41602 0 8 3.58398 8 8v248h-16v-248c0 -4.41602 3.58398 -8 8 -8z\nM292 64c6.62695 0 12 5.37305 12 12v8c0 6.62695 -5.37305 12 -12 12h-152c-6.62695 0 -12 -5.37305 -12 -12v-8c0 -6.62695 5.37305 -12 12 -12h152zM500 64c6.62695 0 12 5.37305 12 12v8c0 6.62695 -5.37305 12 -12 12h-152c-6.62695 0 -12 -5.37305 -12 -12v-8\nc0 -6.62695 5.37305 -12 12 -12h152zM292 160c6.62695 0 12 5.37305 12 12v8c0 6.62695 -5.37305 12 -12 12h-152c-6.62695 0 -12 -5.37305 -12 -12v-8c0 -6.62695 5.37305 -12 12 -12h152zM500 160c6.62695 0 12 5.37305 12 12v8c0 6.62695 -5.37305 12 -12 12h-152\nc-6.62695 0 -12 -5.37305 -12 -12v-8c0 -6.62695 5.37305 -12 12 -12h152zM500 256c6.62695 0 12 5.37305 12 12v40c0 6.62695 -5.37305 12 -12 12h-360c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h360z\" />\n    <glyph glyph-name=\"wifi\" unicode=\"&#xf1eb;\" horiz-adv-x=\"640\" \nd=\"M634.91 293.12c6.66016 -6.16016 6.79004 -16.5898 0.359375 -22.9805l-34.2393 -33.9697c-6.14062 -6.08984 -16.0205 -6.22949 -22.4004 -0.379883c-145.95 133.71 -371.33 133.68 -517.25 0c-6.37988 -5.84961 -16.2598 -5.71973 -22.3994 0.379883l-34.2402 33.9697\nc-6.44043 6.39062 -6.31055 16.8203 0.349609 22.9805c177.101 163.81 452.65 163.87 629.82 0zM320 96c35.3496 0 64 -28.6504 64 -64s-28.6504 -64 -64 -64s-64 28.6504 -64 64s28.6504 64 64 64zM522.67 179.59c6.88965 -6.08984 7.12012 -16.6895 0.560547 -23.1494\nl-34.4404 -33.9902c-6 -5.93066 -15.6602 -6.32031 -22.0498 -0.799805c-83.75 72.4092 -209.54 72.5693 -293.49 0c-6.38965 -5.52051 -16.0498 -5.12012 -22.0498 0.799805l-34.4404 33.9902c-6.5498 6.45996 -6.33008 17.0498 0.570312 23.1494\nc115.13 101.82 290.08 101.93 405.34 0z\" />\n    <glyph glyph-name=\"calculator\" unicode=\"&#xf1ec;\" horiz-adv-x=\"448\" \nd=\"M400 448c25.5996 0 48 -22.4004 48 -48v-416c0 -25.5996 -22.4004 -48 -48 -48h-352c-25.5996 0 -48 22.4004 -48 48v416c0 25.5996 22.4004 48 48 48h352zM128 12.7998v38.4004c0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-38.4004\nc-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998v-38.4004c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h38.4004c6.39941 0 12.7998 6.40039 12.7998 12.7998zM128 140.8v38.4004c0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-38.4004\nc-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998v-38.4004c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h38.4004c6.39941 0 12.7998 6.40039 12.7998 12.7998zM256 12.7998v38.4004c0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-38.4004\nc-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998v-38.4004c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h38.4004c6.39941 0 12.7998 6.40039 12.7998 12.7998zM256 140.8v38.4004c0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-38.4004\nc-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998v-38.4004c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h38.4004c6.39941 0 12.7998 6.40039 12.7998 12.7998zM384 12.7998v166.4c0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-38.4004\nc-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998v-166.4c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h38.4004c6.39941 0 12.7998 6.40039 12.7998 12.7998zM384 268.8v102.4c0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-294.4\nc-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998v-102.4c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h294.4c6.39941 0 12.7998 6.40039 12.7998 12.7998z\" />\n    <glyph glyph-name=\"bell-slash\" unicode=\"&#xf1f6;\" horiz-adv-x=\"640\" \nd=\"M633.82 -10.0996c6.97949 -5.43066 8.22949 -15.4805 2.80957 -22.4502l-19.6396 -25.2705c-5.43066 -6.97949 -15.4805 -8.23926 -22.46 -2.80957l-588.351 454.729c-6.97949 5.43066 -8.22949 15.4805 -2.80957 22.4502l19.6396 25.2705\nc5.41992 6.97949 15.4805 8.22949 22.46 2.80957l144.96 -112.04c22.9307 31.5 57.2607 54.1904 97.5898 62.5703v20.8398c0 17.6699 14.3203 32 31.9805 32s31.9805 -14.3301 31.9805 -32v-20.8301c73.46 -15.2598 127.939 -77.46 127.939 -155.16\nc0 -102.3 36.1504 -133.529 55.4697 -154.29c6 -6.43945 8.66016 -14.1602 8.61035 -21.71c0 -1.39941 -0.610352 -2.67969 -0.799805 -4.05957zM157.23 196.46l212.789 -164.46h-241.92c-19.1191 0 -31.9893 15.5996 -32.0996 32\nc-0.0498047 7.5498 2.61035 15.2598 8.61035 21.71c16.21 17.4199 44.0098 42.79 52.6201 110.75zM320 -64c-35.3203 0 -63.9697 28.6504 -63.9697 64h127.939c0 -35.3496 -28.6494 -64 -63.9697 -64z\" />\n    <glyph glyph-name=\"trash\" unicode=\"&#xf1f8;\" horiz-adv-x=\"448\" \nd=\"M432 416c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h120l9.40039 18.7002c3.58984 7.3418 13.1357 13.2998 21.3086 13.2998h0.0908203h114.3h0.0175781\nc8.20215 0 17.8262 -5.95801 21.4824 -13.2998l9.40039 -18.7002h120zM53.2002 -19l-21.2002 339h384l-21.2002 -339c-1.55469 -24.8369 -23.0146 -44.9971 -47.8994 -45h-245.801c-24.8848 0.00292969 -46.3447 20.1631 -47.8994 45z\" />\n    <glyph glyph-name=\"copyright\" unicode=\"&#xf1f9;\" \nd=\"M256 440c136.967 0 248 -111.033 248 -248s-111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248zM373.134 93.2471c1.58203 1.85645 2.86621 5.34375 2.86621 7.7832c0 2.16309 -1.03613 5.33594 -2.31348 7.08301l-24.5469 33.5713\nc-4.44824 6.08691 -13.376 6.61816 -18.5078 1.05371c-0.263672 -0.287109 -26.8467 -28.625 -65.5439 -28.625c-48.7627 0 -74.2773 40.0898 -74.2773 79.6914c0 42.5068 27.8008 76.082 73.916 76.082c35.3516 0 61.6475 -23.666 61.8809 -23.8799\nc5.45996 -5.05566 14.1846 -3.97168 18.2334 2.29492l22.3799 34.6553c1.05957 1.64062 1.91992 4.55762 1.91992 6.51074c0 2.57812 -1.41504 6.21191 -3.15723 8.1123c-1.45703 1.58887 -36.4658 38.9043 -103.423 38.9043\nc-81.7578 0 -143.762 -62.0986 -143.762 -143.401c0 -82.3066 59.792 -145.567 144.484 -145.567c70.0752 0 108.259 43.8643 109.851 45.7314z\" />\n    <glyph glyph-name=\"at\" unicode=\"&#xf1fa;\" \nd=\"M256 440c138.023 0 248 -87.6533 248 -224c0 -75.7979 -41.3906 -147.41 -150.299 -147.41c-30.0977 0 -61.1885 -0.000976562 -70.71 34.1035c-17.6221 -22.6963 -48.0068 -38.333 -74.9912 -38.333c-59.2148 0 -96 40.5664 -96 105.87\nc0 89.2256 63.251 151.46 137.831 151.46c19.5225 0 45.2744 -3.87402 59.9707 -21.7754l0.00976562 0.0917969c0.751953 6.62012 6.76953 11.9932 13.4326 11.9932v0h44.9805c15.083 0 26.4287 -13.75 23.5625 -28.5586l-23.4336 -121.11\nc-3.43359 -17.167 -3.87207 -29.5703 13.4766 -30.0244c37.0771 3.95117 58.1699 44.9072 58.1699 83.6934c0 102.381 -83.8613 160 -184 160c-101.458 0 -184 -82.542 -184 -184s82.542 -184 184 -184c35.3145 0 69.9199 10.2432 99.4102 29.1572\nc10.1934 6.53809 23.7021 4.24219 31.373 -5.12891l10.1768 -12.4336c9.07324 -11.084 6.45312 -27.5566 -5.55176 -35.3721c-40.0664 -26.083 -87.2539 -40.2227 -135.408 -40.2227c-137.081 0 -248 110.941 -248 248c0 137.081 110.941 248 248 248zM234.32 135.57\nc24.2861 0 58.1611 27.6689 58.1611 72.7295c0 25.5293 -13.3096 40.7705 -35.6016 40.7705c-27.8506 0 -58.6299 -27.7363 -58.6299 -72.7295c0 -25.1475 13.8213 -40.7705 36.0703 -40.7705z\" />\n    <glyph glyph-name=\"eye-dropper\" unicode=\"&#xf1fb;\" \nd=\"M50.75 114.75l126.63 126.61l128 -128l-126.64 -126.62c-12 -12 -28.2803 -18.7402 -45.25 -18.7402h-45.4902l-56 -32l-32 32l32 56v45.4902c0 16.9795 6.75 33.2598 18.75 45.2598zM483.88 419.88c37.5 -37.4902 37.5 -98.2695 -0.00976562 -135.75l-77.0898 -77.0898\nl13.0996 -13.0996c9.37012 -9.37012 9.37012 -24.5703 0 -33.9404l-40.9697 -40.96c-9.29004 -9.30957 -24.5 -9.44043 -33.9404 0l-161.939 161.94c-9.37012 9.36914 -9.37012 24.5693 0 33.9395l40.9697 40.9697c9.29004 9.31055 24.5 9.44043 33.9404 0l13.0996 -13.0996\nl77.0898 77.0898c37.4697 37.5 98.2803 37.5 135.75 0z\" />\n    <glyph glyph-name=\"paint-brush\" unicode=\"&#xf1fc;\" \nd=\"M167.02 138.66l88.0107 -73.3398c0.319336 -3.05078 0.969727 -6.02051 0.969727 -9.12988c0 -76.4209 -52.1396 -120.19 -128 -120.19c-90.0703 0 -128 72.3799 -128.01 154.73c9.79004 -6.68066 44.1396 -34.3506 55.25 -34.3506\nc6.58984 0 12.2402 3.77051 14.5898 9.98047c20.6602 54.4395 57.0703 69.7197 97.1895 72.2998zM457.89 448c28.1104 0 54.1104 -20.6396 54.1104 -49.5498c0 -16.1406 -6.51953 -31.6406 -13.9004 -45.9902c-113.05 -210.99 -149.05 -256.46 -211.159 -256.46\nc-7.75 0 -15.1807 1.23047 -22.3906 3.03027l-63.8193 53.1797c-5.48047 11.9404 -8.73047 25 -8.73047 38.7002c0 53.75 21.2695 58.04 225.68 240.64c10.8398 9.74023 25.0508 16.4502 40.21 16.4502z\" />\n    <glyph glyph-name=\"birthday-cake\" unicode=\"&#xf1fd;\" horiz-adv-x=\"448\" \nd=\"M448 64c-28.0195 0 -31.2598 32 -74.5 32c-43.4297 0 -46.8252 -32 -74.75 -32c-27.6953 0 -31.4541 32 -74.75 32c-42.8418 0 -47.2178 -32 -74.5 -32c-28.1484 0 -31.2021 32 -74.75 32c-43.5469 0 -46.6533 -32 -74.75 -32v80c0 26.5 21.5 48 48 48h16v144h64v-144h64\nv144h64v-144h64v144h64v-144h16c26.5 0 48 -21.5 48 -48v-80zM448 -64h-448v96c43.3564 0 46.7666 32 74.75 32c27.9512 0 31.2529 -32 74.75 -32c42.8428 0 47.2168 32 74.5 32c28.1484 0 31.2012 -32 74.75 -32c43.3574 0 46.7666 32 74.75 32\nc27.4883 0 31.252 -32 74.5 -32v-96zM96 352c-17.75 0 -32 14.25 -32 32c0 31 32 23 32 64c12 0 32 -29.5 32 -56s-14.25 -40 -32 -40zM224 352c-17.75 0 -32 14.25 -32 32c0 31 32 23 32 64c12 0 32 -29.5 32 -56s-14.25 -40 -32 -40zM352 352c-17.75 0 -32 14.25 -32 32\nc0 31 32 23 32 64c12 0 32 -29.5 32 -56s-14.25 -40 -32 -40z\" />\n    <glyph glyph-name=\"chart-area\" unicode=\"&#xf1fe;\" \nd=\"M500 64c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-488c-6.59961 0 -12 5.40039 -12 12v360c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-308h436zM372.7 288.5c6 4 14.2002 1.7998 17.3994 -4.7002l89.9004 -187.8h-384v104\nl86.7998 144.7c4.40039 7.2998 14.7998 7.7998 19.9004 1l85.2998 -113.7z\" />\n    <glyph glyph-name=\"chart-pie\" unicode=\"&#xf200;\" horiz-adv-x=\"544\" \nd=\"M527.79 160c9.5498 0 17.4004 -8.38965 16.0596 -17.8496c-7.80957 -55.25 -34.4297 -104.4 -73.1299 -140.86c-6.20996 -5.84961 -16.1494 -5.36035 -22.1895 0.679688l-158.03 158.03h237.29zM511.96 224.8c0.629883 -9.12012 -7.0498 -16.7998 -16.1904 -16.7998\nh-223.77v223.76c0 9.14062 7.67969 16.8301 16.7998 16.2002c119.46 -8.24023 214.92 -103.7 223.16 -223.16zM224 160l155.86 -155.87c6.84961 -6.84961 6.33008 -18.4795 -1.57031 -24.0801c-38.29 -27.1602 -84.8604 -43.3994 -135.26 -44.0303\nc-128.2 -1.60938 -238.53 103.471 -242.891 231.61c-4.23926 124.771 86.8506 228.88 206.021 245.72c9.4502 1.34082 17.8398 -6.50977 17.8398 -16.0596v-237.29z\" />\n    <glyph glyph-name=\"chart-line\" unicode=\"&#xf201;\" \nd=\"M496 64c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-464c-17.6699 0 -32 14.3301 -32 32v336c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-304h432zM464 352c8.83984 0 16 -7.16016 15.9902 -16v-118.05\nc0 -21.3799 -25.8506 -32.0898 -40.9707 -16.9697l-32.3994 32.3994l-96 -96c-12.4902 -12.5 -32.75 -12.5 -45.25 0l-73.3701 73.3701l-46.0596 -46.0703c-6.25 -6.25 -16.3809 -6.25 -22.6309 0l-22.6191 22.6201c-6.25 6.25 -6.25 16.3799 0 22.6299l68.6895 68.6904\nc12.4902 12.5 32.75 12.5 45.25 0l73.3701 -73.3701l73.3701 73.3799l-32.4004 32.4004c-15.1201 15.1201 -4.41016 40.9697 16.9707 40.9697h118.06z\" />\n    <glyph glyph-name=\"toggle-off\" unicode=\"&#xf204;\" horiz-adv-x=\"576\" \nd=\"M384 384c106.039 0 192 -85.9609 192 -192s-85.9609 -192 -192 -192h-192c-106.039 0 -192 85.9609 -192 192s85.9609 192 192 192h192zM64 192c0 -70.751 57.2588 -128 128 -128c70.751 0 128 57.2588 128 128c0 70.751 -57.2588 128 -128 128\nc-70.751 0 -128 -57.2588 -128 -128zM384 64c70.751 0 128 57.2598 128 128c0 70.751 -57.2588 128 -128 128h-48.9053c65.2363 -72.8799 65.2168 -183.142 0 -256h48.9053z\" />\n    <glyph glyph-name=\"toggle-on\" unicode=\"&#xf205;\" horiz-adv-x=\"576\" \nd=\"M384 384c106 0 192 -86 192 -192s-86 -192 -192 -192h-192c-106 0 -192 86 -192 192s86 192 192 192h192zM384 64c70.7002 0 128 57.2002 128 128c0 70.7002 -57.2002 128 -128 128c-70.7002 0 -128 -57.2002 -128 -128c0 -70.7002 57.2002 -128 128 -128z\" />\n    <glyph glyph-name=\"bicycle\" unicode=\"&#xf206;\" horiz-adv-x=\"640\" \nd=\"M512.509 255.999c70.9502 -0.276367 128.562 -59.0547 127.477 -129.996c-1.07422 -70.1934 -58.6494 -126.681 -129.255 -125.996c-68.8301 0.667969 -126.584 58.8857 -126.729 127.719c-0.078125 37.3564 15.8516 70.9893 41.3066 94.4375l-14.9375 24.0674\nl-85.9619 -138.863c-3.88477 -6.27441 -13.0264 -11.3672 -20.4062 -11.3672h-52.0332c-14.209 -55.207 -64.3252 -96 -123.967 -96c-70.9473 0 -128.415 57.7207 -128 128.764c0.410156 70.2246 58.0918 127.406 128.317 127.236\nc15.0879 -0.0371094 29.5586 -2.69043 42.9912 -7.51953l29.417 47.5195h-48.7256c-13.1191 0 -23.7627 10.5186 -23.9951 23.5635c-0.241211 13.4375 11.0947 24.4365 24.5361 24.4365h87.459c8.83691 0 16 -7.16309 16 -16v-16h113.544l-14.8955 24h-50.6494\nc-8.83691 0 -16 7.16309 -16 16v16c0 8.83691 7.16309 16 16 16h64h0.000976562c7.36914 0 16.5049 -5.08203 20.3906 -11.3428l77.6807 -125.153c14.4053 5.54004 30.0625 8.55957 46.4355 8.49512zM186.75 182.228l-23.6641 -38.2275h43.3057\nc-2.96875 14.5674 -9.91504 27.6992 -19.6416 38.2275zM128.002 48c32.7383 0 60.9297 19.7754 73.2998 48h-81.2998c-18.7891 0 -30.2871 20.6729 -20.4062 36.6318l45.5049 73.5088c-5.5127 1.20605 -11.2295 1.85938 -17.0986 1.85938c-44.1123 0 -80 -35.8877 -80 -80\ns35.8877 -80 80 -80zM290.632 144l74.2861 120h-127.547l-24.7461 -39.9736c22.8271 -20.1328 38.4229 -48.2705 42.3828 -80.0264h35.624zM507.689 48.1143c46.0605 -2.43164 84.3115 34.3447 84.3125 79.8848c0 44.1123 -35.8877 80 -80 80h-0.0390625\nc-5.55664 0 -14.4355 -1.11914 -19.8193 -2.49707l44.4688 -71.6426c4.66113 -7.50879 2.35156 -17.3721 -5.15625 -22.0322l-13.5938 -8.4375c-7.50879 -4.65918 -17.3721 -2.35156 -22.0322 5.15625l-44.4326 71.5859\nc-12.7021 -14.7451 -20.1475 -34.1416 -19.3359 -55.2627c1.57812 -41.0635 34.5918 -74.5898 75.6279 -76.7549z\" />\n    <glyph glyph-name=\"bus\" unicode=\"&#xf207;\" \nd=\"M488 320c13.25 0 24 -10.7402 24 -24v-80c0 -13.25 -10.75 -24 -24 -24h-8v-166.4c0 -12.7998 -9.59961 -25.5996 -25.5996 -25.5996h-6.40039v-32c0 -17.6699 -14.3301 -32 -32 -32h-32c-17.6699 0 -32 14.3301 -32 32v32h-192v-32c0 -17.6699 -14.3301 -32 -32 -32h-32\nc-17.6699 0 -32 14.3301 -32 32v32c-17.6699 0 -32 14.3301 -32 32v160h-8c-13.25 0 -24 10.75 -24 24v80c0 13.2598 10.75 24 24 24h8v48c0 44.7998 99.2002 80 224 80s224 -35.2002 224 -80v-48h8zM112 48c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32\ns-32 -14.3301 -32 -32s14.3301 -32 32 -32zM128 160h256c17.6699 0 32 14.3301 32 32v128c0 17.6699 -14.3301 32 -32 32h-256c-17.6699 0 -32 -14.3301 -32 -32v-128c0 -17.6699 14.3301 -32 32 -32zM400 48c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32\ns-32 -14.3301 -32 -32s14.3301 -32 32 -32z\" />\n    <glyph glyph-name=\"closed-captioning\" unicode=\"&#xf20a;\" \nd=\"M464 384c26.5 0 48 -21.5 48 -48v-288c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v288c0 26.5 21.5 48 48 48h416zM218.1 160.3c-41.1992 -37.8994 -92.1992 -15.3994 -92.2998 32.6006c0 46.0996 53.7998 63.1992 94.6006 31.1992\nc2.89941 -2.2998 7.19922 -1.39941 9.09961 1.7002l17.5 30.5c1.5 2.5 1.09961 3.7002 -1 5.7002c-50.7998 49.4004 -172.5 27.2002 -172.5 -70.0996c0 -100 119.2 -124.7 172.8 -67.9004c2 2.09961 2.2002 5.2998 0.5 7.7002l-19.5 27.7002\nc-2.09961 3 -6.39941 3.39941 -9.2002 0.899414zM408.5 160.3c-41.2002 -37.8994 -92.2002 -15.3994 -92.2002 32.6006c0 46.0996 53.7998 63.1992 94.6006 31.1992c2.89941 -2.2998 7.19922 -1.39941 9.09961 1.7002l17.5 30.5c1.5 2.5 1.09961 3.7002 -1 5.7002\nc-50.7998 49.4004 -172.5 27.2002 -172.5 -70.0996c0 -100 119.2 -124.801 172.7 -67.9004c2 2.09961 2.2002 5.2998 0.5 7.7002l-19.5 27.7002c-2.10059 3 -6.40039 3.39941 -9.2002 0.899414z\" />\n    <glyph glyph-name=\"shekel-sign\" unicode=\"&#xf20b;\" horiz-adv-x=\"448\" \nd=\"M248 280c0 30.9297 -25.0703 56 -56 56h-112v-352c0 -8.83984 -7.16016 -16 -16 -16h-48c-8.83984 0 -16 7.16016 -16 16v408c0 13.2598 10.75 24 24 24h168c75.1104 0 136 -60.8896 136 -136v-168c0 -8.83984 -7.16016 -16 -16 -16h-48c-8.83984 0 -16 7.16016 -16 16\nv168zM432 416c8.83984 0 16 -7.16016 16 -16v-296c0 -75.1104 -60.8896 -136 -136 -136h-168c-13.25 0 -24 10.75 -24 24v280c0 8.83984 7.16016 16 16 16h48c8.83984 0 16 -7.16016 16 -16v-224h112c30.9297 0 56 25.0703 56 56v296c0 8.83984 7.16016 16 16 16h48z\" />\n    <glyph glyph-name=\"cart-plus\" unicode=\"&#xf217;\" horiz-adv-x=\"576\" \nd=\"M504.717 128h-293.145l6.54492 -32h268.418c15.4004 0 26.8154 -14.3008 23.4033 -29.3193l-5.51758 -24.2754c18.6914 -9.07324 31.5791 -28.2334 31.5791 -50.4053c0 -31.2021 -25.5186 -56.4443 -56.8242 -55.9941\nc-29.8232 0.428711 -54.3496 24.6309 -55.1543 54.4473c-0.44043 16.2871 6.08496 31.0488 16.8027 41.5479h-209.648c10.377 -10.166 16.8242 -24.3271 16.8242 -40.001c0 -31.8135 -26.5283 -57.4307 -58.6699 -55.9385c-28.54 1.3252 -51.751 24.3857 -53.251 52.917\nc-1.1582 22.0342 10.4355 41.4551 28.0508 51.5869l-70.2471 343.435h-69.8828c-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24h102.529c11.4004 0 21.2275 -8.02148 23.5127 -19.1904l9.16602 -44.8096h392.782\nc15.4004 0 26.8154 -14.3008 23.4023 -29.3193l-47.2725 -208c-2.4834 -10.9268 -12.1973 -18.6807 -23.4033 -18.6807zM408 280h-48v40c0 8.83691 -7.16309 16 -16 16h-16c-8.83691 0 -16 -7.16309 -16 -16v-40h-48c-8.83691 0 -16 -7.16309 -16 -16v-16\nc0 -8.83691 7.16309 -16 16 -16h48v-40c0 -8.83691 7.16309 -16 16 -16h16c8.83691 0 16 7.16309 16 16v40h48c8.83691 0 16 7.16309 16 16v16c0 8.83691 -7.16309 16 -16 16z\" />\n    <glyph glyph-name=\"cart-arrow-down\" unicode=\"&#xf218;\" horiz-adv-x=\"576\" \nd=\"M504.717 128h-293.145l6.54492 -32h268.418c15.4004 0 26.8154 -14.3008 23.4033 -29.3193l-5.51758 -24.2754c18.6914 -9.07324 31.5791 -28.2334 31.5791 -50.4053c0 -31.2021 -25.5186 -56.4443 -56.8242 -55.9941\nc-29.8232 0.428711 -54.3496 24.6309 -55.1543 54.4473c-0.44043 16.2871 6.08496 31.0488 16.8027 41.5479h-209.648c10.377 -10.166 16.8242 -24.3271 16.8242 -40.001c0 -31.8135 -26.5283 -57.4307 -58.6699 -55.9385c-28.54 1.3252 -51.751 24.3857 -53.251 52.917\nc-1.1582 22.0342 10.4355 41.4551 28.0508 51.5869l-70.2471 343.435h-69.8828c-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24h102.529c11.4004 0 21.2275 -8.02148 23.5127 -19.1904l9.16602 -44.8096h392.782\nc15.4004 0 26.8154 -14.3008 23.4023 -29.3193l-47.2725 -208c-2.4834 -10.9268 -12.1973 -18.6807 -23.4033 -18.6807zM403.029 256h-43.0293v60c0 6.62695 -5.37305 12 -12 12h-24c-6.62695 0 -12 -5.37305 -12 -12v-60h-43.0293\nc-10.6904 0 -16.0449 -12.9258 -8.48438 -20.4854l67.0283 -67.0283c4.68652 -4.68652 12.2842 -4.68652 16.9717 0l67.0283 67.0283c7.55957 7.55957 2.20508 20.4854 -8.48535 20.4854z\" />\n    <glyph glyph-name=\"ship\" unicode=\"&#xf21a;\" horiz-adv-x=\"640\" \nd=\"M496.616 75.3613c17.8418 -44.3604 58.5664 -75.3613 119.384 -75.3613c13.2549 0 24 -10.7451 24 -24v-16c0 -13.2549 -10.7451 -24 -24 -24c-61.0322 0 -107.505 20.6162 -143.258 59.3965c-14.4189 -34.8281 -48.7637 -59.3965 -88.7422 -59.3965h-128\nc-39.9785 0 -74.3232 24.5684 -88.7422 59.3965c-35.7588 -38.7861 -82.2344 -59.3965 -143.258 -59.3965c-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24c61.5869 0 101.828 31.7129 119.384 75.3613l-70.0117 70.0117\nc-16.918 16.9189 -9.91699 45.7793 12.8359 53.0918l41.792 13.4336v140.102c0 17.6729 14.3271 32 32 32h64v40c0 13.2549 10.7451 24 24 24h144c13.2549 0 24 -10.7451 24 -24v-40h64c17.6729 0 32 -14.3271 32 -32v-140.102l41.792 -13.4336\nc22.7783 -7.32129 29.7354 -36.1914 12.8359 -53.0918zM192 320v-87.5312l118.208 37.9951c2.63574 0.847656 7.02344 1.53516 9.79199 1.53516s7.15625 -0.6875 9.79199 -1.53516l118.208 -37.9951v87.5312h-256z\" />\n    <glyph glyph-name=\"user-secret\" unicode=\"&#xf21b;\" horiz-adv-x=\"448\" \nd=\"M383.9 139.7c38.2998 -23.7002 64.0996 -65.7002 64.0996 -114.101v-44.7998c0 -24.7002 -20.0996 -44.7998 -44.7998 -44.7998h-358.4c-24.7002 0 -44.7998 20.0996 -44.7998 44.7998v44.7998c0 49.7002 27.2998 92.6006 67.4004 115.9l-25.8008 60.2002\nc-4.5 10.5996 3.2002 22.2998 14.7002 22.2998h57.5c-11 18.9004 -17.7998 40.5996 -17.7998 64v0.299805c-39.2002 7.7998 -64 19.1006 -64 31.7002c0 13.2998 27.2998 25.0996 70 33c9.2002 32.7998 27.0996 65.7998 40.5996 82.7998\nc9.5 11.9004 25.9004 15.6006 39.5 8.7998l27.6006 -13.7998c9 -4.5 19.5996 -4.5 28.5996 0l27.6006 13.7998c13.5996 6.80078 30 3.10059 39.5 -8.7998c13.5996 -17 31.3994 -50 40.5996 -82.7998c42.7998 -7.90039 70.0996 -19.7002 70.0996 -33\nc0 -12.5996 -24.7998 -23.9004 -64 -31.7002v-0.299805c0 -23.4004 -6.7998 -45.0996 -17.7998 -64h58.5c11.2998 0 19 -11.2002 15 -21.7002zM176 -32l32 120l-24 40l-49.5996 32zM272 -32l41.5996 192l-49.5996 -32l-24 -40zM313.7 266.5\nc0.799805 2.59961 6.2998 5.7002 6.39941 5.7998v10.7998c-28.2998 -3.69922 -61 -5.7998 -96 -5.7998s-67.6992 2.2002 -96 5.7998v-10.7998c0 -0.0996094 5.5 -3.2998 6.30078 -5.7998c3.7998 -11.9004 7 -24.5996 16.5 -33.4004c8 -7.39941 47 -25.1992 64 25\nc2.89941 8.40039 15.5 8.40039 18.2998 0c16 -47.3994 53.8994 -34.2998 64 -25c9.5 8.80078 12.5996 21.5 16.5 33.4004z\" />\n    <glyph glyph-name=\"motorcycle\" unicode=\"&#xf21c;\" horiz-adv-x=\"640\" \nd=\"M512.9 256c69.5996 -0.5 126.5 -57.2998 127.199 -126.9c0.600586 -71.5996 -57.5996 -129.8 -129.199 -129.1c-69.6006 0.599609 -126.301 57.5 -126.801 127.1c-0.299805 39.3008 17.2002 74.5 44.8008 98.2002l-12.5 20.7998\nc-38.7002 -31.2998 -58.3008 -77.8994 -56.2002 -125c0.599609 -13.6992 -10.2998 -25.0996 -24 -25.0996h-84.2002c-14.2998 -55.2002 -64.4004 -96 -124 -96c-71.7002 0 -129.6 58.9004 -128 131c1.59961 67.4004 55.9004 122.5 123.2 124.9\nc14.3994 0.5 28.2998 -1.30078 41.2998 -5.2002l11.2998 20.5c-9.09961 13.8994 -23.2998 24.7998 -47.7998 24.7998h-56c-13.0996 0 -23.7998 10.5 -24 23.5c-0.299805 13.5 11 24.5 24.5 24.5h55.5c55 0 82.2002 -16.9004 99.9004 -40h153.699l-19.1992 32h-66.4004\nc-8.7998 0 -16 7.2002 -16 16v16c0 8.7998 7.2002 16 16 16h80c8.40039 0 16.2002 -4.40039 20.5996 -11.5996l22.8008 -38l37.5 41.6992c4.5 5 11 7.90039 17.7998 7.90039h45.2998c13.2998 0 24 -10.7002 24 -24v-32c0 -13.2998 -10.7002 -24 -24 -24h-82.4004\nl32.9004 -54.9004c13.2998 4.60059 27.5 7 42.4004 6.90039zM128 48c32.7002 0 60.9004 19.7998 73.2998 48h-81.2998c-18.2002 0 -29.7998 19.5996 -21 35.5996l41.5 75.4004c-4.09961 0.700195 -8.2998 1 -12.5 1c-44.0996 0 -80 -35.9004 -80 -80s35.9004 -80 80 -80z\nM591.9 123.6c2.39941 46.1006 -34.3008 84.4004 -79.9004 84.3008c-5.40039 0 -10.7002 -0.5 -15.9004 -1.60059l48.6006 -80.8994c4.5 -7.60059 2.09961 -17.5 -5.5 -22l-13.7002 -8.2002c-7.59961 -4.5 -17.5 -2.10059 -22 5.5l-49.4004 82.3994\nc-13.6992 -14.2998 -22.0996 -33.6992 -22.0996 -55.0996c0 -45.5996 38.2998 -82.4004 84.4004 -79.9004c40.5 2.10059 73.2998 34.9004 75.5 75.5z\" />\n    <glyph glyph-name=\"street-view\" unicode=\"&#xf21d;\" \nd=\"M367.9 118.24c85.2295 -15.5801 144.1 -48.29 144.1 -86.2402c0 -53.0195 -114.62 -96 -256 -96s-256 42.9805 -256 96c0 37.9502 58.8701 70.6602 144.1 86.2402c4.62012 -5.2998 9.78027 -10.1006 15.9004 -13.6504v-22.9395\nc-66.5195 -9.35059 -112 -28.0508 -112 -49.6504c0 -30.9297 93.1201 -56 208 -56s208 25.0703 208 56c0 21.5996 -45.4805 40.3096 -112 49.6504v22.9395c6.12012 3.5498 11.2803 8.35059 15.9004 13.6504zM256 320c-35.3496 0 -64 28.6504 -64 64s28.6504 64 64 64\ns64 -28.6504 64 -64s-28.6504 -64 -64 -64zM192 128c-17.6699 0 -32 14.3301 -32 32v96c0 26.5098 21.4902 48 48 48h11.7998c11.0703 -5.03027 23.2598 -8 36.2002 -8s25.1299 2.96973 36.2002 8h11.7998c26.5098 0 48 -21.4902 48 -48v-96\nc0 -17.6699 -14.3301 -32 -32 -32v-96c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v96z\" />\n    <glyph glyph-name=\"heartbeat\" unicode=\"&#xf21e;\" \nd=\"M320.2 204.2l22.0996 -44.2002h109.101l-182.601 -186.5c-7.09961 -7.2998 -18.5996 -7.2998 -25.7002 0l-182.5 186.5h94.1006l30 71.7002l56.8994 -126.3c5.5 -12.3008 22.9004 -12.7002 28.9004 -0.600586zM473.7 374.1\nc48.7002 -49.7998 50.7998 -129.1 7.2998 -182.1h-118.9l-27.5996 55.2002c-5.90039 11.7998 -22.7002 11.7998 -28.5996 0l-49 -97.9004l-58.2002 129.3c-5.7998 12.8008 -24 12.5 -29.4004 -0.399414l-35.8994 -86.2002h-102.4c-43.5 53 -41.4004 132.3 7.2998 182.1\nl2.40039 2.40039c51.5 52.7002 135.899 52.7002 187.399 0l27.9004 -28.5l27.9004 28.5996c51.5996 52.6006 135.899 52.6006 187.399 0z\" />\n    <glyph glyph-name=\"venus\" unicode=\"&#xf221;\" horiz-adv-x=\"288\" \nd=\"M288 272c0 -68.5 -47.9004 -125.9 -112 -140.4v-51.5996h36c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-36v-36c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v36h-36c-6.59961 0 -12 5.40039 -12 12v40\nc0 6.59961 5.40039 12 12 12h36v51.5996c-64.0996 14.5 -112 71.9004 -112 140.4c0 79.5 64.5 144 144 144s144 -64.5 144 -144zM64 272c0 -44.0996 35.9004 -80 80 -80s80 35.9004 80 80s-35.9004 80 -80 80s-80 -35.9004 -80 -80z\" />\n    <glyph glyph-name=\"mars\" unicode=\"&#xf222;\" horiz-adv-x=\"384\" \nd=\"M372 384c6.59961 0 12 -5.40039 12 -12v-79c0 -10.7002 -12.9004 -16.0996 -20.5 -8.5l-16.9004 16.9004l-80.6992 -80.7002c14 -22.2002 22.0996 -48.5 22.0996 -76.7002c0 -79.5 -64.5 -144 -144 -144s-144 64.5 -144 144s64.5 144 144 144\nc28.2002 0 54.5 -8.09961 76.7002 -22.0996l80.7002 80.6992l-16.9004 16.9004c-7.5 7.59961 -2.2002 20.5 8.5 20.5h79zM144 64c44.0996 0 80 35.9004 80 80s-35.9004 80 -80 80s-80 -35.9004 -80 -80s35.9004 -80 80 -80z\" />\n    <glyph glyph-name=\"mercury\" unicode=\"&#xf223;\" horiz-adv-x=\"288\" \nd=\"M288 240c0 -68.5 -47.9004 -125.9 -112 -140.4v-51.5996h36c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-36v-36c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v36h-36c-6.59961 0 -12 5.40039 -12 12v40\nc0 6.59961 5.40039 12 12 12h36v51.5996c-64.0996 14.5 -112 71.9004 -112 140.4c0 44.2002 19.9004 83.7002 51.2002 110c-2.5 1.90039 -4.90039 3.7998 -7.2002 5.7998c-24.7998 21.2002 -39.7998 48.7998 -43.2002 78.9004\nc-0.899414 7.09961 4.7002 13.2998 11.9004 13.2998h40.5c5.7002 0 10.5996 -4.09961 11.7002 -9.7998c2.5 -12.5 9.59961 -24.2998 20.6992 -33.7998c15.4004 -13.2002 36.1006 -20.4004 58.4004 -20.4004s43 7.2002 58.2998 20.4004\nc11.1006 9.5 18.2998 21.2998 20.7002 33.7998c1.09961 5.7002 6 9.7998 11.7998 9.7998h40.5c7.2002 0 12.7998 -6.2002 11.9004 -13.2998c-3.40039 -30 -18.5 -57.6006 -43.2002 -78.7998c-2.2998 -2 -4.7002 -4 -7.2002 -5.80078\nc31.2998 -26.3994 51.2002 -65.8994 51.2002 -110.1zM64 240c0 -44.0996 35.9004 -80 80 -80s80 35.9004 80 80s-35.9004 80 -80 80s-80 -35.9004 -80 -80z\" />\n    <glyph glyph-name=\"transgender\" unicode=\"&#xf224;\" horiz-adv-x=\"384\" \nd=\"M372 448c6.59961 0 12 -5.40039 12 -12v-79c0 -10.7002 -12.9004 -16.0996 -20.5 -8.5l-16.9004 16.9004l-80.6992 -80.7002c14 -22.2002 22.0996 -48.5 22.0996 -76.7002c0 -68.5 -47.9004 -125.8 -112 -140.4v-27.5996h36c6.59961 0 12 -5.40039 12 -12v-40\nc0 -6.59961 -5.40039 -12 -12 -12h-36v-28c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v28h-36c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h36v27.5996c-64.0996 14.5 -112 71.9004 -112 140.4c0 79.5 64.5 144 144 144\nc28.2002 0 54.5 -8.09961 76.7002 -22.0996l80.7002 80.6992l-16.9004 16.9004c-7.5 7.59961 -2.2002 20.5 8.5 20.5h79zM144 128c44.0996 0 80 35.9004 80 80s-35.9004 80 -80 80s-80 -35.9004 -80 -80s35.9004 -80 80 -80z\" />\n    <glyph glyph-name=\"transgender-alt\" unicode=\"&#xf225;\" horiz-adv-x=\"480\" \nd=\"M468 448c6.59961 0 12 -5.40039 12 -12v-79c0 -10.7002 -12.9004 -16.0996 -20.5 -8.5l-16.9004 16.9004l-80.6992 -80.7002c14 -22.2002 22.0996 -48.5 22.0996 -76.7002c0 -68.5 -47.9004 -125.8 -112 -140.4v-27.5996h36c6.59961 0 12 -5.40039 12 -12v-40\nc0 -6.59961 -5.40039 -12 -12 -12h-36v-28c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v28h-36c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h36v27.5996c-64.0996 14.5 -112 71.9004 -112 140.4\nc0 28.2002 8.09961 54.5 22.2002 76.5996l-16.5 16.5l-19.7998 -19.7998c-4.7002 -4.7002 -12.3008 -4.7002 -17 0l-28.3008 28.2998c-4.69922 4.7002 -4.69922 12.3008 0 17l19.8008 19.8008l-19 19l-16.9004 -16.9004c-7.59961 -7.5 -20.5 -2.2002 -20.5 8.5v79\nc0 6.59961 5.40039 12 12 12h79c10.7002 0 16.0996 -12.9004 8.40039 -20.4004l-16.9004 -16.8994l19 -19l19.7998 19.7998c4.7002 4.7002 12.2998 4.7002 17 0l28.2998 -28.2998c4.7002 -4.7002 4.7002 -12.2998 0 -17l-19.7998 -19.7998l16.5 -16.5\nc22.2002 14 48.5 22.0996 76.7002 22.0996s54.5 -8.09961 76.7002 -22.0996l80.7002 80.6992l-16.9004 16.9004c-7.5 7.59961 -2.2002 20.5 8.5 20.5h79zM240 128c44.0996 0 80 35.9004 80 80s-35.9004 80 -80 80s-80 -35.9004 -80 -80s35.9004 -80 80 -80z\" />\n    <glyph glyph-name=\"venus-double\" unicode=\"&#xf226;\" \nd=\"M288 272c0 -68.5 -47.9004 -125.9 -112 -140.4v-51.5996h36c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-36v-36c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v36h-36c-6.59961 0 -12 5.40039 -12 12v40\nc0 6.59961 5.40039 12 12 12h36v51.5996c-64.0996 14.5 -112 71.9004 -112 140.4c0 79.5 64.5 144 144 144s144 -64.5 144 -144zM64 272c0 -44.0996 35.9004 -80 80 -80s80 35.9004 80 80s-35.9004 80 -80 80s-80 -35.9004 -80 -80zM400 131.6v-51.5996h36\nc6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-36v-36c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v36h-36c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h36v51.5996\nc-21.2002 4.80078 -40.5996 14.3008 -57.2002 27.3008c14 16.6992 25 36 32.1006 57.0996c14.5 -14.7998 34.6992 -24 57.0996 -24c44.0996 0 80 35.9004 80 80s-35.9004 80 -80 80c-22.2998 0 -42.5996 -9.2002 -57.0996 -24\nc-7.10059 21.0996 -18 40.4004 -32.1006 57.0996c24.6006 19.3008 55.5 30.9004 89.2002 30.9004c79.5 0 144 -64.5 144 -144c0 -68.5 -47.9004 -125.9 -112 -140.4z\" />\n    <glyph glyph-name=\"mars-double\" unicode=\"&#xf227;\" \nd=\"M340 448c6.59961 0 12 -5.40039 12 -12v-79c0 -7.2002 -5.90039 -12 -12.0996 -12c-2.90039 0 -6 1.09961 -8.40039 3.5l-16.9004 16.9004l-48.6992 -48.7002c14 -22.2002 22.0996 -48.5 22.0996 -76.7002c0 -79.5 -64.5 -144 -144 -144s-144 64.5 -144 144\ns64.5 144 144 144c28.2002 0 54.5 -8.09961 76.7002 -22.0996l48.7002 48.6992l-16.9004 16.9004c-7.5 7.59961 -2.2002 20.5 8.5 20.5h79zM144 160c44.0996 0 80 35.9004 80 80s-35.9004 80 -80 80s-80 -35.9004 -80 -80s35.9004 -80 80 -80zM500 288.1\nc6.59961 0 12 -5.39941 12 -12.0996v-79c0 -7.2002 -5.90039 -12 -12.0996 -12c-3 0 -6 1.09961 -8.40039 3.5l-16.9004 16.9004l-48.6992 -48.7002c14 -22.2002 22.0996 -48.5 22.0996 -76.7002c0 -79.5 -64.5 -144 -144 -144c-74.4004 0 -135.6 56.4004 -143.2 128.9\nc21.7998 2 43.2998 8.19922 63.2998 18.3994c-0.0996094 -1 -0.0996094 -2.09961 -0.0996094 -3.2002c0 -44.0996 35.9004 -80 80 -80s80 35.9004 80 80c0 44.1006 -35.9004 80 -80 80c-1 0 -2.09961 -0.0996094 -3.2002 -0.0996094\nc10.2002 20 16.2998 41.5 18.4004 63.2998c22.5 -2.39941 43.2998 -9.89941 61.5 -21.2998l48.7002 48.7002l-16.9004 16.8994c-7.5 7.60059 -2.2002 20.5 8.5 20.5h79z\" />\n    <glyph glyph-name=\"venus-mars\" unicode=\"&#xf228;\" horiz-adv-x=\"576\" \nd=\"M564 448c6.59961 0 12 -5.40039 12 -12v-79c0 -7.2002 -5.90039 -12 -12.0996 -12c-3 0 -6 1.09961 -8.40039 3.5l-16.9004 16.9004l-48.6992 -48.7002c14 -22.2002 22.0996 -48.5 22.0996 -76.7002c0 -79.5 -64.5 -144 -144 -144\nc-33.7002 0 -64.7002 11.5 -89.2002 30.9004c14.1006 16.6992 25 36 32.1006 57.0996c14.5 -14.7998 34.7998 -24 57.0996 -24c44.0996 0 80 35.9004 80 80s-35.9004 80 -80 80c-22.4004 0 -42.5996 -9.2002 -57.0996 -24\nc-7.10059 21.0996 -18.1006 40.4004 -32.1006 57.0996c24.6006 19.3008 55.5 30.9004 89.2002 30.9004c28.2002 0 54.5 -8.09961 76.7002 -22.0996l48.7002 48.6992l-16.9004 16.9004c-7.5 7.59961 -2.2002 20.5 8.5 20.5h79zM144 384c79.5 0 144 -64.5 144 -144\nc0 -68.5 -47.9004 -125.8 -112 -140.4v-51.5996h36c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-36v-36c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v36h-36c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12\nh36v51.5996c-64.0996 14.5 -112 71.9004 -112 140.4c0 79.5 64.5 144 144 144zM144 160c44.0996 0 80 35.9004 80 80s-35.9004 80 -80 80s-80 -35.9004 -80 -80s35.9004 -80 80 -80z\" />\n    <glyph glyph-name=\"mars-stroke\" unicode=\"&#xf229;\" horiz-adv-x=\"384\" \nd=\"M372 384c6.59961 0 12 -5.40039 12.0996 -12v-78.9004c0 -10.6992 -12.8994 -16.0996 -20.5 -8.5l-16.8994 16.9004l-17.5 -17.5l14.0996 -14.0996c4.7002 -4.7002 4.7002 -12.3008 0 -17l-28.2998 -28.3008c-4.7002 -4.69922 -12.2998 -4.69922 -17 0l-14.0996 14.1006\nl-18 -18c14 -22.2002 22.0996 -48.5 22.0996 -76.7002c0 -79.5 -64.5 -144 -144 -144s-144 64.5 -144 144s64.5 144 143.9 144c28.1992 0 54.5 -8.09961 76.6992 -22.0996l18 18l-14.0996 14.0996c-4.7002 4.7002 -4.7002 12.2998 0 17l28.2998 28.2002\nc4.7002 4.7002 12.2998 4.7002 17 0l14.1006 -14.1006l17.5 17.5l-16.9004 16.9004c-7.5 7.59961 -2.2002 20.5 8.5 20.5h79zM144 64c44.0996 0 80 35.9004 80 80s-35.9004 80 -80 80s-80 -35.9004 -80 -80s35.9004 -80 80 -80z\" />\n    <glyph glyph-name=\"mars-stroke-v\" unicode=\"&#xf22a;\" horiz-adv-x=\"288\" \nd=\"M245.8 213.8c56.2998 -56.2002 56.2998 -147.399 0 -203.6c-56.2002 -56.2002 -147.399 -56.2002 -203.6 0s-56.2002 147.399 0 203.6c19.8994 19.9004 44.2002 32.7998 69.7998 38.6006v25.3994h-20c-6.59961 0 -12 5.40039 -12 12v40c0 6.60059 5.40039 12 12 12h20\nv24.7002h-23.9004c-10.6992 0 -16.0996 12.9004 -8.5 20.5l55.9004 55.9004c4.7002 4.69922 12.2998 4.69922 17 0l55.9004 -55.8008c7.5 -7.59961 2.19922 -20.5 -8.5 -20.5h-23.9004v-24.7998h20c6.59961 0 12 -5.39941 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-20\nv-25.3994c25.5996 -5.80078 49.9004 -18.7002 69.7998 -38.6006zM200.6 55.4004c31.2002 31.1992 31.2002 82 0 113.1c-31.1992 31.2002 -81.8994 31.2002 -113.1 0s-31.2002 -81.9004 0 -113.1c31.2002 -31.2002 81.9004 -31.2002 113.1 0z\" />\n    <glyph glyph-name=\"mars-stroke-h\" unicode=\"&#xf22b;\" horiz-adv-x=\"480\" \nd=\"M476.2 200.5c4.7002 -4.7002 4.7002 -12.2998 0.0996094 -17l-55.8994 -55.9004c-7.60059 -7.5 -20.5 -2.19922 -20.5 8.5v23.9004h-23.9004v-20c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v20h-27.5996\nc-5.80078 -25.5996 -18.7002 -49.9004 -38.6006 -69.7998c-56.2002 -56.2002 -147.399 -56.2002 -203.6 0s-56.2002 147.399 0 203.6s147.399 56.2002 203.6 0c19.9004 -19.8994 32.7998 -44.2002 38.6006 -69.7998h27.5996v20c0 6.59961 5.40039 12 12 12h40\nc6.59961 0 12 -5.40039 12 -12v-20h23.7998v23.9004c0 10.6992 12.9004 16.0996 20.5 8.5zM200.6 135.4c31.2002 31.1992 31.2002 82 0 113.1c-31.1992 31.2002 -81.8994 31.2002 -113.1 0s-31.2002 -81.9004 0 -113.1c31.2002 -31.2002 81.9004 -31.2002 113.1 0z\" />\n    <glyph glyph-name=\"neuter\" unicode=\"&#xf22c;\" horiz-adv-x=\"288\" \nd=\"M288 272c0 -68.5 -47.9004 -125.9 -112 -140.4v-151.6c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v151.6c-64.0996 14.5 -112 71.9004 -112 140.4c0 79.5 64.5 144 144 144s144 -64.5 144 -144zM144 192c44.0996 0 80 35.9004 80 80\ns-35.9004 80 -80 80s-80 -35.9004 -80 -80s35.9004 -80 80 -80z\" />\n    <glyph glyph-name=\"genderless\" unicode=\"&#xf22d;\" horiz-adv-x=\"288\" \nd=\"M144 272c-44.0996 0 -80 -35.9004 -80 -80s35.9004 -80 80 -80s80 35.9004 80 80s-35.9004 80 -80 80zM144 336c79.5 0 144 -64.5 144 -144s-64.5 -144 -144 -144s-144 64.5 -144 144s64.5 144 144 144z\" />\n    <glyph glyph-name=\"server\" unicode=\"&#xf233;\" \nd=\"M480 288h-448c-17.6729 0 -32 14.3271 -32 32v64c0 17.6729 14.3271 32 32 32h448c17.6729 0 32 -14.3271 32 -32v-64c0 -17.6729 -14.3271 -32 -32 -32zM432 376c-13.2549 0 -24 -10.7451 -24 -24s10.7451 -24 24 -24s24 10.7451 24 24s-10.7451 24 -24 24zM368 376\nc-13.2549 0 -24 -10.7451 -24 -24s10.7451 -24 24 -24s24 10.7451 24 24s-10.7451 24 -24 24zM480 128h-448c-17.6729 0 -32 14.3271 -32 32v64c0 17.6729 14.3271 32 32 32h448c17.6729 0 32 -14.3271 32 -32v-64c0 -17.6729 -14.3271 -32 -32 -32zM432 216\nc-13.2549 0 -24 -10.7451 -24 -24s10.7451 -24 24 -24s24 10.7451 24 24s-10.7451 24 -24 24zM368 216c-13.2549 0 -24 -10.7451 -24 -24s10.7451 -24 24 -24s24 10.7451 24 24s-10.7451 24 -24 24zM480 -32h-448c-17.6729 0 -32 14.3271 -32 32v64\nc0 17.6729 14.3271 32 32 32h448c17.6729 0 32 -14.3271 32 -32v-64c0 -17.6729 -14.3271 -32 -32 -32zM432 56c-13.2549 0 -24 -10.7451 -24 -24s10.7451 -24 24 -24s24 10.7451 24 24s-10.7451 24 -24 24zM368 56c-13.2549 0 -24 -10.7451 -24 -24s10.7451 -24 24 -24\ns24 10.7451 24 24s-10.7451 24 -24 24z\" />\n    <glyph glyph-name=\"user-plus\" unicode=\"&#xf234;\" horiz-adv-x=\"640\" \nd=\"M624 240c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-64v-64c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v64h-64c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h64v64c0 8.7998 7.2002 16 16 16h32\nc8.7998 0 16 -7.2002 16 -16v-64h64zM224 192c-70.7002 0 -128 57.2998 -128 128s57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128zM313.6 160c74.2002 0 134.4 -60.2002 134.4 -134.4v-41.5996c0 -26.5 -21.5 -48 -48 -48h-352\nc-26.5 0 -48 21.5 -48 48v41.5996c0 74.2002 60.2002 134.4 134.4 134.4h16.6992c22.3008 -10.2002 46.9004 -16 72.9004 -16s50.7002 5.7998 72.9004 16h16.6992z\" />\n    <glyph glyph-name=\"user-times\" unicode=\"&#xf235;\" horiz-adv-x=\"640\" \nd=\"M589.6 208l45.6006 -45.5996c6.2998 -6.30078 6.2998 -16.5 0 -22.8008l-22.7998 -22.7998c-6.30078 -6.2998 -16.5 -6.2998 -22.8008 0l-45.5996 45.6006l-45.5996 -45.6006c-6.30078 -6.2998 -16.5 -6.2998 -22.8008 0l-22.7998 22.7998\nc-6.2998 6.30078 -6.2998 16.5 0 22.8008l45.6006 45.5996l-45.6006 45.5996c-6.2998 6.30078 -6.2998 16.5 0 22.8008l22.7998 22.7998c6.30078 6.2998 16.5 6.2998 22.8008 0l45.5996 -45.6006l45.5996 45.6006c6.30078 6.2998 16.5 6.2998 22.8008 0l22.7998 -22.7998\nc6.2998 -6.30078 6.2998 -16.5 0 -22.8008zM224 192c-70.7002 0 -128 57.2998 -128 128s57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128zM313.6 160c74.2002 0 134.4 -60.2002 134.4 -134.4v-41.5996c0 -26.5 -21.5 -48 -48 -48h-352\nc-26.5 0 -48 21.5 -48 48v41.5996c0 74.2002 60.2002 134.4 134.4 134.4h16.6992c22.3008 -10.2002 46.9004 -16 72.9004 -16s50.7002 5.7998 72.9004 16h16.6992z\" />\n    <glyph glyph-name=\"bed\" unicode=\"&#xf236;\" horiz-adv-x=\"640\" \nd=\"M176 192c-44.1104 0 -80 35.8896 -80 80s35.8896 80 80 80s80 -35.8896 80 -80s-35.8896 -80 -80 -80zM528 320c61.8604 0 112 -50.1396 112 -112v-192c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v48h-512v-48c0 -8.83984 -7.16016 -16 -16 -16\nh-32c-8.83984 0 -16 7.16016 -16 16v352c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-208h224v144c0 8.83984 7.16016 16 16 16h224z\" />\n    <glyph glyph-name=\"train\" unicode=\"&#xf238;\" horiz-adv-x=\"448\" \nd=\"M448 352v-256c0 -51.8154 -61.624 -96 -130.022 -96l62.9805 -49.7207c5.94727 -4.69629 2.60352 -14.2793 -4.95801 -14.2793h-304c-7.57812 0 -10.8916 9.59375 -4.95703 14.2793l62.9795 49.7207c-68.2021 0 -130.022 44.0459 -130.022 96v256c0 53.0186 64 96 128 96\nh192c65 0 128 -42.9814 128 -96zM400 216v112c0 13.2549 -10.7451 24 -24 24h-304c-13.2549 0 -24 -10.7451 -24 -24v-112c0 -13.2549 10.7451 -24 24 -24h304c13.2549 0 24 10.7451 24 24zM224 152c-30.9277 0 -56 -25.0723 -56 -56s25.0723 -56 56 -56s56 25.0723 56 56\ns-25.0723 56 -56 56z\" />\n    <glyph glyph-name=\"subway\" unicode=\"&#xf239;\" horiz-adv-x=\"448\" \nd=\"M448 352v-256c0 -51.8154 -61.624 -96 -130.022 -96l62.9805 -49.7207c5.94727 -4.69629 2.60352 -14.2793 -4.95801 -14.2793h-304c-7.57812 0 -10.8916 9.59375 -4.95703 14.2793l62.9795 49.7207c-68.2021 0 -130.022 44.0459 -130.022 96v256c0 53.0186 64 96 128 96\nh192c65 0 128 -42.9814 128 -96zM200 216v112c0 13.2549 -10.7451 24 -24 24h-104c-13.2549 0 -24 -10.7451 -24 -24v-112c0 -13.2549 10.7451 -24 24 -24h104c13.2549 0 24 10.7451 24 24zM400 216v112c0 13.2549 -10.7451 24 -24 24h-104c-13.2549 0 -24 -10.7451 -24 -24\nv-112c0 -13.2549 10.7451 -24 24 -24h104c13.2549 0 24 10.7451 24 24zM352 160c-26.5098 0 -48 -21.4902 -48 -48s21.4902 -48 48 -48s48 21.4902 48 48s-21.4902 48 -48 48zM96 160c-26.5098 0 -48 -21.4902 -48 -48s21.4902 -48 48 -48s48 21.4902 48 48\ns-21.4902 48 -48 48z\" />\n    <glyph glyph-name=\"battery-full\" unicode=\"&#xf240;\" horiz-adv-x=\"640\" \nd=\"M544 288h-480v-192h480v64h32v64h-32v64zM560 352c26.5098 0 48 -21.4902 48 -48v-16h8c13.2549 0 24 -10.7451 24 -24v-144c0 -13.2549 -10.7451 -24 -24 -24h-8v-16c0 -26.5098 -21.4902 -48 -48 -48h-512c-26.5098 0 -48 21.4902 -48 48v224\nc0 26.5098 21.4902 48 48 48h512zM512 256v-128h-416v128h416z\" />\n    <glyph glyph-name=\"battery-three-quarters\" unicode=\"&#xf241;\" horiz-adv-x=\"640\" \nd=\"M544 288h-480v-192h480v64h32v64h-32v64zM560 352c26.5098 0 48 -21.4902 48 -48v-16h8c13.2549 0 24 -10.7451 24 -24v-144c0 -13.2549 -10.7451 -24 -24 -24h-8v-16c0 -26.5098 -21.4902 -48 -48 -48h-512c-26.5098 0 -48 21.4902 -48 48v224\nc0 26.5098 21.4902 48 48 48h512zM416 256v-128h-320v128h320z\" />\n    <glyph glyph-name=\"battery-half\" unicode=\"&#xf242;\" horiz-adv-x=\"640\" \nd=\"M544 288h-480v-192h480v64h32v64h-32v64zM560 352c26.5098 0 48 -21.4902 48 -48v-16h8c13.2549 0 24 -10.7451 24 -24v-144c0 -13.2549 -10.7451 -24 -24 -24h-8v-16c0 -26.5098 -21.4902 -48 -48 -48h-512c-26.5098 0 -48 21.4902 -48 48v224\nc0 26.5098 21.4902 48 48 48h512zM320 256v-128h-224v128h224z\" />\n    <glyph glyph-name=\"battery-quarter\" unicode=\"&#xf243;\" horiz-adv-x=\"640\" \nd=\"M544 288h-480v-192h480v64h32v64h-32v64zM560 352c26.5098 0 48 -21.4902 48 -48v-16h8c13.2549 0 24 -10.7451 24 -24v-144c0 -13.2549 -10.7451 -24 -24 -24h-8v-16c0 -26.5098 -21.4902 -48 -48 -48h-512c-26.5098 0 -48 21.4902 -48 48v224\nc0 26.5098 21.4902 48 48 48h512zM224 256v-128h-128v128h128z\" />\n    <glyph glyph-name=\"battery-empty\" unicode=\"&#xf244;\" horiz-adv-x=\"640\" \nd=\"M544 288h-480v-192h480v64h32v64h-32v64zM560 352c26.5098 0 48 -21.4902 48 -48v-16h8c13.2549 0 24 -10.7451 24 -24v-144c0 -13.2549 -10.7451 -24 -24 -24h-8v-16c0 -26.5098 -21.4902 -48 -48 -48h-512c-26.5098 0 -48 21.4902 -48 48v224\nc0 26.5098 21.4902 48 48 48h512z\" />\n    <glyph glyph-name=\"mouse-pointer\" unicode=\"&#xf245;\" horiz-adv-x=\"320\" \nd=\"M302.189 118.874h-106.084l55.8301 -135.993c3.88965 -9.42773 -0.554688 -19.999 -9.44336 -23.999l-49.165 -21.4268c-9.16504 -4 -19.4434 0.571289 -23.332 9.71387l-53.0527 129.136l-86.6641 -89.1377c-11.5498 -11.877 -30.2783 -2.7207 -30.2783 12.8564v429.678\nc0 16.3994 19.9209 24.3945 30.2773 12.8555l284.412 -292.542c11.4717 -11.1787 3.00684 -31.1406 -12.5 -31.1406z\" />\n    <glyph glyph-name=\"i-cursor\" unicode=\"&#xf246;\" horiz-adv-x=\"256\" \nd=\"M256 395.952c0 -6.64648 -5.4043 -12.0098 -12.0498 -11.9922c-27.875 0.0712891 -83.9502 -3.20996 -83.9502 -48.1416v-111.818h36c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-36v-112c0 -44.9395 57.8887 -48.5527 83.8555 -48.2422\nc6.68652 0.0800781 12.1445 -5.31055 12.1445 -11.998v-39.6445c0 -6.5957 -5.31836 -11.957 -11.9131 -12c-35.0654 -0.228516 -78.3525 0.62207 -116.087 37.8447c-38.4688 -37.9482 -83.6211 -38.3027 -116.158 -37.8936\nc-6.56738 0.0820312 -11.8418 5.42969 -11.8418 11.999v39.9824c0 6.64648 5.4043 12.0098 12.0498 11.9932c27.875 -0.0722656 83.9502 3.02734 83.9502 47.959v112h-36c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h36v111.818\nc0 44.9385 -57.8887 48.7344 -83.8555 48.4248c-6.68652 -0.0800781 -12.1445 5.31055 -12.1445 11.998v39.6445c0 6.5957 5.31836 11.957 11.9131 12c35.0654 0.228516 78.3525 -0.62207 116.087 -37.8447c38.4688 37.9482 83.6211 38.3027 116.158 37.8926\nc6.56738 -0.0820312 11.8418 -5.42969 11.8418 -11.999v-39.9824z\" />\n    <glyph glyph-name=\"object-group\" unicode=\"&#xf247;\" \nd=\"M480 320v-288h20c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v20h-384v-20c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h20v320h-20\nc-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-20h384v20c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-20v-32zM96 172c0 -6.62695 5.37305 -12 12 -12h168\nc6.62695 0 12 5.37305 12 12v136c0 6.62695 -5.37305 12 -12 12h-168c-6.62695 0 -12 -5.37305 -12 -12v-136zM416 76v136c0 6.62695 -5.37305 12 -12 12h-84v-72c0 -13.2549 -10.7451 -24 -24 -24h-72v-52c0 -6.62695 5.37305 -12 12 -12h168c6.62695 0 12 5.37305 12 12z\n\" />\n    <glyph glyph-name=\"object-ungroup\" unicode=\"&#xf248;\" horiz-adv-x=\"576\" \nd=\"M64 128v-26c0 -3.31152 -2.68848 -6 -6 -6h-52c-3.31152 0 -6 2.68848 -6 6v52c0 3.31152 2.68848 6 6 6h26v192h-26c-3.31152 0 -6 2.68848 -6 6v52c0 3.31152 2.68848 6 6 6h52c3.31152 0 6 -2.68848 6 -6v-26h288v26c0 3.31152 2.68848 6 6 6h52\nc3.31152 0 6 -2.68848 6 -6v-52c0 -3.31152 -2.68848 -6 -6 -6h-26v-192h26c3.31152 0 6 -2.68848 6 -6v-52c0 -3.31152 -2.68848 -6 -6 -6h-52c-3.31152 0 -6 2.68848 -6 6v26h-288zM544 192v-160h26c3.31152 0 6 -2.68848 6 -6v-52c0 -3.31152 -2.68848 -6 -6 -6h-52\nc-3.31152 0 -6 2.68848 -6 6v26h-288v-26c0 -3.31152 -2.68848 -6 -6 -6h-52c-3.31152 0 -6 2.68848 -6 6v52c0 3.31152 2.68848 6 6 6h26v72h136v-8c0 -13.2549 10.7451 -24 24 -24h64c13.2549 0 24 10.7451 24 24v64c0 13.2549 -10.7451 24 -24 24h-8v72h104v26\nc0 3.31152 2.68848 6 6 6h52c3.31152 0 6 -2.68848 6 -6v-52c0 -3.31152 -2.68848 -6 -6 -6h-26v-32z\" />\n    <glyph glyph-name=\"sticky-note\" unicode=\"&#xf249;\" horiz-adv-x=\"448\" \nd=\"M312 128c-13.2002 0 -24 -10.7998 -24 -24v-136h-264c-13.2998 0 -24 10.7002 -24 24v400c0 13.2998 10.7002 24 24 24h400c13.2998 0 24 -10.7002 24 -24v-264h-136zM441 73l-98 -98c-4.5 -4.5 -10.5996 -7 -17 -7h-6v128h128v-6.09961\nc0 -6.30078 -2.5 -12.4004 -7 -16.9004z\" />\n    <glyph glyph-name=\"clone\" unicode=\"&#xf24d;\" \nd=\"M464 448c26.5098 0 48 -21.4902 48 -48v-288c0 -26.5098 -21.4902 -48 -48 -48h-288c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h288zM176 32h208v-48c0 -26.5098 -21.4902 -48 -48 -48h-288c-26.5098 0 -48 21.4902 -48 48v288\nc0 26.5098 21.4902 48 48 48h48v-208c0 -44.1123 35.8877 -80 80 -80z\" />\n    <glyph glyph-name=\"balance-scale\" unicode=\"&#xf24e;\" horiz-adv-x=\"640\" \nd=\"M256 112c0 -44.1797 -57.3096 -80 -128 -80s-128 35.8203 -128 80h0.0195312c0 15.6699 -2.0791 7.25 85.04 181.51c17.6807 35.3604 68.2207 35.29 85.8701 0c86.3906 -172.779 85.0508 -165.33 85.0508 -181.51h0.0195312zM128 272l-72 -144h144zM639.98 112\nc0 -44.1797 -57.29 -80 -127.98 -80s-128 35.8203 -128 80h0.0195312c0 15.6699 -2.0791 7.25 85.04 181.51c17.6807 35.3604 68.2207 35.29 85.8701 0c86.3906 -172.779 85.0508 -165.33 85.0508 -181.51zM440 128h144l-72 144zM528 0c8.83984 0 16 -7.16016 16 -16v-32\nc0 -8.83984 -7.16016 -16 -16 -16h-416c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h176v294.75c-23.5195 10.29 -41.1602 31.4902 -46.3896 57.25h-129.61c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h144.36\nc14.5996 19.3203 37.5498 32 63.6396 32s49.04 -12.6797 63.6396 -32h144.36c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-129.61c-5.22949 -25.7695 -22.8799 -46.96 -46.3896 -57.25v-294.75h176z\" />\n    <glyph glyph-name=\"hourglass-start\" unicode=\"&#xf251;\" horiz-adv-x=\"384\" \nd=\"M360 448c13.2549 0 24 -10.7451 24 -24v-16c0 -13.2549 -10.7451 -24 -24 -24c0 -90.9648 -51.0156 -167.734 -120.842 -192c69.8262 -24.2656 120.842 -101.035 120.842 -192c13.2549 0 24 -10.7451 24 -24v-16c0 -13.2549 -10.7451 -24 -24 -24h-336\nc-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24c0 90.9648 51.0156 167.734 120.842 192c-69.8262 24.2656 -120.842 101.035 -120.842 192c-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24h336zM296 0c0 77.4834 -46.2139 144 -104 144\nc-57.7959 0 -104 -66.542 -104 -144h208z\" />\n    <glyph glyph-name=\"hourglass-half\" unicode=\"&#xf252;\" horiz-adv-x=\"384\" \nd=\"M360 448c13.2549 0 24 -10.7451 24 -24v-16c0 -13.2549 -10.7451 -24 -24 -24c0 -90.9648 -51.0156 -167.734 -120.842 -192c69.8262 -24.2656 120.842 -101.035 120.842 -192c13.2549 0 24 -10.7451 24 -24v-16c0 -13.2549 -10.7451 -24 -24 -24h-336\nc-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24c0 90.9648 51.0156 167.734 120.842 192c-69.8262 24.2656 -120.842 101.035 -120.842 192c-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24h336zM284.922 64\nc-17.0596 46.8037 -52.1006 80 -92.9219 80c-40.8242 0 -75.8613 -33.2031 -92.9199 -80h185.842zM284.941 320c7.07129 19.4131 11.0586 41.1953 11.0586 64h-208c0 -22.748 3.98828 -44.5479 11.0781 -64h185.863z\" />\n    <glyph glyph-name=\"hourglass-end\" unicode=\"&#xf253;\" horiz-adv-x=\"384\" \nd=\"M360 384c0 -90.9648 -51.0156 -167.734 -120.842 -192c69.8262 -24.2656 120.842 -101.035 120.842 -192c13.2549 0 24 -10.7451 24 -24v-16c0 -13.2549 -10.7451 -24 -24 -24h-336c-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24\nc0 90.9648 51.0156 167.734 120.842 192c-69.8262 24.2656 -120.842 101.035 -120.842 192c-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24h336c13.2549 0 24 -10.7451 24 -24v-16c0 -13.2549 -10.7451 -24 -24 -24zM192 240c57.4902 0 104 66.0547 104 144\nh-208c0 -77.4824 46.2129 -144 104 -144z\" />\n    <glyph glyph-name=\"hourglass\" unicode=\"&#xf254;\" horiz-adv-x=\"384\" \nd=\"M360 384c0 -90.9648 -51.0156 -167.734 -120.842 -192c69.8262 -24.2656 120.842 -101.035 120.842 -192c13.2549 0 24 -10.7451 24 -24v-16c0 -13.2549 -10.7451 -24 -24 -24h-336c-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24\nc0 90.9648 51.0156 167.734 120.842 192c-69.8262 24.2656 -120.842 101.035 -120.842 192c-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24h336c13.2549 0 24 -10.7451 24 -24v-16c0 -13.2549 -10.7451 -24 -24 -24z\" />\n    <glyph glyph-name=\"hand-rock\" unicode=\"&#xf255;\" \nd=\"M464.8 368c26.2998 -0.400391 47.2002 -22.5 47.2002 -48.7998v-133.5c0 -12.7998 -2.5 -25.5 -7.5 -37.2998l-49 -116.301c-4.90039 -11.7998 -7.5 -24.5 -7.5 -37.2998v-2.89941c0 -13.3008 -10.7002 -24 -24 -24h-240c-13.2998 0 -24 10.6992 -24 24v6.69922\nc0 13.7002 -5.90039 26.8008 -16.0996 35.9004l-111.7 99.2998c-20.5 18.2998 -32.2002 44.4004 -32.2002 71.7998v66.4004c0 26.7998 21.9004 48.4004 48.7998 48c26.2998 -0.5 47.2002 -22.5 47.2002 -48.7998v-48.1006l8 -7.09961v136\nc0 26.7998 21.9004 48.4004 48.7998 48c26.2998 -0.5 47.2002 -22.5 47.2002 -48.7998v-31.2002h8v48c0 26.7998 21.9004 48.4004 48.7998 48c26.2998 -0.5 47.2002 -22.5 47.2002 -48.7998v-47.2002h8v32c0 26.7998 21.9004 48.4004 48.7998 48\nc26.2998 -0.5 47.2002 -22.5 47.2002 -48.7998v-31.2002h8c0 26.7998 21.9004 48.4004 48.7998 48z\" />\n    <glyph glyph-name=\"hand-paper\" unicode=\"&#xf256;\" horiz-adv-x=\"448\" \nd=\"M408.781 319.993c21.7305 -0.416016 39.2188 -18.1621 39.2178 -39.9932v-150.359c0 -12.2998 -2.28711 -32.001 -5.10449 -43.9746l-26.5078 -112.66c-5.10156 -21.6816 -24.4502 -37.0059 -46.7236 -37.0059h-197.59c-13.4922 0 -30.8838 8.85645 -38.8193 19.7676\nl-125.601 172.705c-12.9932 17.8672 -9.04297 42.8838 8.82129 55.877c17.8682 12.9941 42.8848 9.04297 55.877 -8.82227l31.6484 -43.5195v235.992c0 21.8311 17.4883 39.5771 39.2188 39.9932c22.4248 0.428711 40.7812 -18.3535 40.7812 -40.7832v-175.21h8v216\nc0 21.8311 17.4883 39.5771 39.2188 39.9932c22.4248 0.428711 40.7812 -18.3535 40.7812 -40.7832v-215.21h8v177c0 21.8311 17.4883 39.5771 39.2188 39.9932c22.4248 0.428711 40.7812 -18.3535 40.7812 -40.7832v-176.21h8v87.21\nc0 22.4297 18.3564 41.2119 40.7812 40.7832z\" />\n    <glyph glyph-name=\"hand-scissors\" unicode=\"&#xf257;\" \nd=\"M216 8c0 22.0918 17.9092 40 40 40v8h-32c-22.0908 0 -40 17.9082 -40 40s17.9092 40 40 40h32v8h-208c-26.5098 0 -48 21.4902 -48 48s21.4902 48 48 48h208v13.5723l-177.551 69.7393c-24.6738 9.69434 -36.8184 37.5557 -27.125 62.2285\nc9.69238 24.6738 37.5537 36.8174 62.2275 27.124l190.342 -74.7646l24.8721 31.0898c12.3066 15.3809 33.9785 19.5146 51.0811 9.74121l112 -64c11.125 -6.3584 20.1533 -21.917 20.1533 -34.7305v-240c0 -18.5615 -12.7695 -34.6855 -30.8379 -38.9365l-136 -32\nc-2.49414 -0.586914 -6.59668 -1.06348 -9.1582 -1.06348h-0.00390625h-80c-22.0908 0 -40 17.9082 -40 40z\" />\n    <glyph glyph-name=\"hand-lizard\" unicode=\"&#xf258;\" horiz-adv-x=\"576\" \nd=\"M384 -32v61.4609c0 7.28906 -4.99707 16.3711 -11.1543 20.2734l-111.748 70.8105c-6.49316 4.11523 -18.0029 7.45508 -25.6904 7.45508h-0.000976562h-147.406c-13.2549 0 -24 10.7451 -24 24v8c0 35.3457 28.6543 64 64 64h123.648\nc11.7754 0 25.0088 8.82227 29.5371 19.6924l21.4102 51.3848c4.94141 11.8555 -3.77051 24.9229 -16.6143 24.9229h-229.981c-30.9277 0 -56 25.0723 -56 56v16c0 13.2549 10.7451 24 24 24h333.544c14.6035 0 32.7852 -10.0205 40.583 -22.3682l163.04 -258.146\nc8.1875 -12.9639 14.833 -35.9297 14.833 -51.2627v-0.000976562v-116.222h-192z\" />\n    <glyph glyph-name=\"hand-spock\" unicode=\"&#xf259;\" \nd=\"M481.3 350.9c21.4004 -5.10059 34.7002 -26.7002 29.7002 -48.2002l-36.2998 -152.5c-1.7002 -7.2002 -2.60059 -14.7002 -2.60059 -22.2002v-42c0 -9.2998 -1.39941 -18.4004 -4 -27.2998l-26.1992 -88.2998c-6 -20.4004 -24.7002 -34.4004 -46 -34.4004h-216.7\nc-12.2002 0 -24 4.59961 -32.9004 13l-133.7 125.9c-16.0996 15.0996 -16.7998 40.3994 -1.69922 56.5c15.0996 16.0996 40.3994 16.7998 56.5 1.69922l60.5996 -57v79.4004l-39 171.6c-4.90039 21.6006 8.59961 43 30.0996 47.9004\nc21.6006 4.90039 43 -8.59961 47.9004 -30.0996l34.7998 -152.801h9.7998l-47.5996 207c-5 21.5 8.5 43 30 47.9004c21.5996 4.90039 43 -8.5 48 -30.0996l51.7002 -224.9h15.0996l48.4004 193.7c5.39941 21.3994 27.0996 34.5 48.5 29.0996\nc21.3994 -5.39941 34.5 -27.0996 29.0996 -48.5l-43.5996 -174.3h11.0996l30.7998 129.3c5.10059 21.4004 26.7002 34.7002 48.2002 29.6006z\" />\n    <glyph glyph-name=\"hand-pointer\" unicode=\"&#xf25a;\" horiz-adv-x=\"448\" \nd=\"M448 208v-96c0 -3.08398 -0.356445 -6.15918 -1.06348 -9.16211l-32 -136c-4.25098 -18.0684 -20.375 -30.8379 -38.9365 -30.8379h-208c-11.2432 0 -25.7363 7.37988 -32.3496 16.4727l-127.997 176c-12.9932 17.8662 -9.04297 42.8838 8.82129 55.876\nc17.8672 12.9941 42.8848 9.04297 55.877 -8.82227l31.6484 -43.5186v275.992c0 22.0908 17.9082 40 40 40s40 -17.9092 40 -40v-200h8v40c0 22.0908 17.9082 40 40 40s40 -17.9092 40 -40v-40h8v24c0 22.0908 17.9082 40 40 40s40 -17.9092 40 -40v-24h8\nc0 22.0908 17.9082 40 40 40s40 -17.9092 40 -40zM192 128h-8v-96h8v96zM280 128h-8v-96h8v96zM368 128h-8v-96h8v96z\" />\n    <glyph glyph-name=\"hand-peace\" unicode=\"&#xf25b;\" horiz-adv-x=\"448\" \nd=\"M408 232c22.0918 0 40 -17.9092 40 -40v-80v-0.00488281c0 -2.56152 -0.476562 -6.66406 -1.06348 -9.15723l-32 -136c-4.25098 -18.0684 -20.375 -30.8379 -38.9365 -30.8379h-240h-0.000976562c-12.8125 0 -28.3711 9.0293 -34.7275 20.1543l-64 112\nc-9.77441 17.1025 -5.64062 38.7744 9.74023 51.0811l31.0898 24.8721l-74.7646 190.342c-9.69336 24.6738 2.4502 52.5342 27.124 62.2266c24.6729 9.69434 52.5332 -2.4502 62.2275 -27.125l69.7393 -177.551h13.5723v208c0 26.5098 21.4902 48 48 48s48 -21.4902 48 -48\nv-208h8v32c0 22.0908 17.9082 40 40 40s40 -17.9092 40 -40v-32h8c0 22.0908 17.9082 40 40 40z\" />\n    <glyph glyph-name=\"trademark\" unicode=\"&#xf25c;\" horiz-adv-x=\"640\" \nd=\"M260.6 352c6.60059 0 12 -5.40039 11.9004 -12v-43.0996c0 -6.60059 -5.40039 -12 -12 -12h-85.0996v-240.9c0 -6.59961 -5.40039 -12 -12 -12h-54.3008c-6.59961 0 -12 5.40039 -12 12v240.9h-85.0996c-6.59961 0 -12 5.39941 -12 12v43.0996\nc0 6.59961 5.40039 12 12 12h248.6zM640 45c0.5 -7 -5 -13 -12 -13h-53.9004c-6.2998 0 -11.5996 4.90039 -12 11.2002l-9.09961 132.899c-1.7998 24.2002 0 53.7002 0 53.7002h-0.900391s-10.6992 -33.5996 -17.8994 -53.7002l-30.7002 -84.6992\nc-1.7002 -4.7002 -6.2002 -7.90039 -11.2998 -7.90039h-50.2998c-5.10059 0 -9.60059 3.2002 -11.3008 7.90039l-30.6992 84.6992c-7.2002 20.1006 -17.9004 53.7002 -17.9004 53.7002h-0.900391s1.80078 -29.5 0 -53.7002l-9.09961 -132.899\nc-0.5 -6.2998 -5.7002 -11.2002 -12 -11.2002h-54.5c-7.09961 0 -12.5996 6 -12 13l24.4004 296c0.599609 6.2002 5.7998 11 12 11h65.3994c5.10059 0 9.60059 -3.2998 11.2998 -8.09961l43.8008 -127.101c7.19922 -20.5996 16.0996 -52.7998 16.0996 -52.7998h0.900391\ns8.89941 32.2002 16.0996 52.7998l43.7998 127.101c1.60059 4.7998 6.2002 8.09961 11.2998 8.09961h65.4004c6.2998 0 11.5 -4.7998 12 -11z\" />\n    <glyph glyph-name=\"registered\" unicode=\"&#xf25d;\" \nd=\"M285.363 240.525c0 -18.6006 -9.83105 -28.4316 -28.4316 -28.4316h-29.876v56.1406h23.3779c28.668 0 34.9297 -8.77344 34.9297 -27.709zM504 192c0 -136.967 -111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248s248 -111.033 248 -248z\nM363.411 87.5859c-46.7295 84.8252 -43.2988 78.6357 -44.7021 80.9805c23.4316 15.1719 37.9453 42.9785 37.9453 74.4854c0 54.2441 -31.5 89.252 -105.498 89.252h-70.667c-13.2549 0 -24 -10.7451 -24 -24v-232.304c0 -13.2549 10.7451 -24 24 -24h22.5664\nc13.2549 0 24 10.7451 24 24v71.6631h25.5566l44.1289 -82.9375c3.73828 -7.02441 13.2305 -12.7266 21.1875 -12.7266h24.4639c18.2617 0.000976562 29.8291 19.5908 21.0186 35.5869z\" />\n    <glyph glyph-name=\"tv\" unicode=\"&#xf26c;\" horiz-adv-x=\"640\" \nd=\"M592 448c26.5 0 48 -21.5 48 -48v-320c0 -26.5 -21.5 -48 -48 -48h-234.9v-32h160c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32h-384c-17.6992 0 -32 14.2998 -32 32s14.3008 32 32 32h160v32h-245.1c-26.5 0 -48 21.5 -48 48v320c0 26.5 21.5 48 48 48h544z\nM576 96v288h-512v-288h512z\" />\n    <glyph glyph-name=\"calendar-plus\" unicode=\"&#xf271;\" horiz-adv-x=\"448\" \nd=\"M436 288h-424c-6.59961 0 -12 5.40039 -12 12v36c0 26.5 21.5 48 48 48h48v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h128v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h48c26.5 0 48 -21.5 48 -48v-36\nc0 -6.59961 -5.40039 -12 -12 -12zM12 256h424c6.59961 0 12 -5.40039 12 -12v-260c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v260c0 6.59961 5.40039 12 12 12zM328 116c0 6.59961 -5.40039 12 -12 12h-60v60c0 6.59961 -5.40039 12 -12 12h-40\nc-6.59961 0 -12 -5.40039 -12 -12v-60h-60c-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h60v-60c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12v60h60c6.59961 0 12 5.40039 12 12v40z\" />\n    <glyph glyph-name=\"calendar-minus\" unicode=\"&#xf272;\" horiz-adv-x=\"448\" \nd=\"M436 288h-424c-6.59961 0 -12 5.40039 -12 12v36c0 26.5 21.5 48 48 48h48v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h128v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h48c26.5 0 48 -21.5 48 -48v-36\nc0 -6.59961 -5.40039 -12 -12 -12zM12 256h424c6.59961 0 12 -5.40039 12 -12v-260c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v260c0 6.59961 5.40039 12 12 12zM316 64c6.59961 0 12 5.40039 12 12v40c0 6.59961 -5.40039 12 -12 12h-184\nc-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h184z\" />\n    <glyph glyph-name=\"calendar-times\" unicode=\"&#xf273;\" horiz-adv-x=\"448\" \nd=\"M436 288h-424c-6.59961 0 -12 5.40039 -12 12v36c0 26.5 21.5 48 48 48h48v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h128v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h48c26.5 0 48 -21.5 48 -48v-36\nc0 -6.59961 -5.40039 -12 -12 -12zM12 256h424c6.59961 0 12 -5.40039 12 -12v-260c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v260c0 6.59961 5.40039 12 12 12zM269.3 96l48.1006 48.0996c4.69922 4.7002 4.69922 12.3008 0 17l-28.3008 28.3008\nc-4.69922 4.69922 -12.2998 4.69922 -17 0l-48.0996 -48.1006l-48.0996 48.1006c-4.7002 4.69922 -12.3008 4.69922 -17 0l-28.3008 -28.3008c-4.69922 -4.69922 -4.69922 -12.2998 0 -17l48.1006 -48.0996l-48.1006 -48.0996c-4.69922 -4.7002 -4.69922 -12.3008 0 -17\nl28.3008 -28.3008c4.69922 -4.69922 12.2998 -4.69922 17 0l48.0996 48.1006l48.0996 -48.1006c4.7002 -4.69922 12.3008 -4.69922 17 0l28.3008 28.3008c4.69922 4.69922 4.69922 12.2998 0 17z\" />\n    <glyph glyph-name=\"calendar-check\" unicode=\"&#xf274;\" horiz-adv-x=\"448\" \nd=\"M436 288h-424c-6.62695 0 -12 5.37305 -12 12v36c0 26.5098 21.4902 48 48 48h48v52c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-52h128v52c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-52h48c26.5098 0 48 -21.4902 48 -48v-36\nc0 -6.62695 -5.37305 -12 -12 -12zM12 256h424c6.62695 0 12 -5.37305 12 -12v-260c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v260c0 6.62695 5.37305 12 12 12zM345.296 160.053l-28.1689 28.3984\nc-4.66699 4.70508 -12.2646 4.73535 -16.9697 0.0673828l-106.037 -105.184l-45.9805 46.3516c-4.66699 4.70508 -12.2656 4.73633 -16.9707 0.0683594l-28.3965 -28.1699c-4.70508 -4.66699 -4.73633 -12.2646 -0.0683594 -16.9697l82.6006 -83.2695\nc4.66699 -4.70508 12.2656 -4.73535 16.9707 -0.0673828l142.952 141.805c4.70508 4.66699 4.73633 12.2646 0.0683594 16.9697z\" />\n    <glyph glyph-name=\"industry\" unicode=\"&#xf275;\" \nd=\"M475.115 284.219c15.9541 10.1514 36.8848 -1.33105 36.8848 -20.248v-271.971c0 -13.2549 -10.7451 -24 -24 -24h-464c-13.2549 0 -24 10.7451 -24 24v400c0 13.2549 10.7451 24 24 24h112c13.2549 0 24 -10.7451 24 -24v-196.309l139.115 88.5273\nc15.9541 10.1514 36.8848 -1.33203 36.8848 -20.248v-68.2793z\" />\n    <glyph glyph-name=\"map-pin\" unicode=\"&#xf276;\" horiz-adv-x=\"288\" \nd=\"M112 131.06c10.3896 -1.91992 21.0596 -3.05957 32 -3.05957s21.6104 1.13965 32 3.05957v-156.689l-22.0098 -33.0205c-4.75 -7.11914 -15.2207 -7.11914 -19.9707 0l-22.0195 33.0205v156.689zM144 448c79.5303 0 144 -64.4697 144 -144s-64.4697 -144 -144 -144\ns-144 64.4697 -144 144s64.4697 144 144 144zM144 372c6.62012 0 12 5.37988 12 12s-5.37988 12 -12 12c-50.7197 0 -92 -41.2695 -92 -92c0 -6.62012 5.37988 -12 12 -12s12 5.37988 12 12c0 37.5 30.5 68 68 68z\" />\n    <glyph glyph-name=\"map-signs\" unicode=\"&#xf277;\" \nd=\"M507.31 363.31c6.25 -6.25 6.25 -16.3691 0 -22.6299l-43.3096 -43.3096c-6.00977 -6 -14.1396 -9.37012 -22.6299 -9.37012h-385.37c-13.25 0 -24 10.75 -24 24v80c0 13.25 10.75 24 24 24h168v16c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-16\nh153.37c8.49023 0 16.6299 -3.37012 22.6299 -9.37012zM224 -48v112h64v-112c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16zM456 224c13.25 0 24 -10.75 24 -24v-80c0 -13.25 -10.75 -24 -24 -24h-385.37\nc-8.49023 0 -16.6299 3.37012 -22.6299 9.37012l-43.3096 43.3096c-6.25 6.25 -6.25 16.3799 0 22.6299l43.3096 43.3203c6.00977 6 14.1396 9.37012 22.6299 9.37012h153.37v32h64v-32h168z\" />\n    <glyph glyph-name=\"map\" unicode=\"&#xf279;\" horiz-adv-x=\"576\" \nd=\"M0 330.34c0.00292969 11.959 9.0166 25.2686 20.1201 29.71l139.88 55.9502v-384l-138.06 -62.8398c-10.5107 -4.2002 -21.9404 3.54004 -21.9404 14.8594v346.32zM192 32v384l192 -64v-384zM554.06 414.84c10.5107 4.2002 21.9404 -3.54004 21.9404 -14.8594v-346.32\nc0 -11.9609 -9.01367 -25.2705 -20.1201 -29.71l-139.88 -55.9502v384z\" />\n    <glyph glyph-name=\"comment-alt\" unicode=\"&#xf27a;\" \nd=\"M448 448c35.2998 0 64 -28.7002 64 -64v-288c0 -35.2998 -28.7002 -64 -64 -64h-144l-124.9 -93.7002c-7.89941 -5.7998 -19.0996 -0.0996094 -19.0996 9.7002v84h-96c-35.2998 0 -64 28.7002 -64 64v288c0 35.2998 28.7002 64 64 64h384z\" />\n    <glyph glyph-name=\"pause-circle\" unicode=\"&#xf28b;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM240 112v160c0 8.7998 -7.2002 16 -16 16h-48c-8.7998 0 -16 -7.2002 -16 -16v-160c0 -8.7998 7.2002 -16 16 -16h48c8.7998 0 16 7.2002 16 16zM352 112v160\nc0 8.7998 -7.2002 16 -16 16h-48c-8.7998 0 -16 -7.2002 -16 -16v-160c0 -8.7998 7.2002 -16 16 -16h48c8.7998 0 16 7.2002 16 16z\" />\n    <glyph glyph-name=\"stop-circle\" unicode=\"&#xf28d;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM352 112v160c0 8.7998 -7.2002 16 -16 16h-160c-8.7998 0 -16 -7.2002 -16 -16v-160c0 -8.7998 7.2002 -16 16 -16h160c8.7998 0 16 7.2002 16 16z\" />\n    <glyph glyph-name=\"shopping-bag\" unicode=\"&#xf290;\" horiz-adv-x=\"448\" \nd=\"M352 288h96v-272c0 -44.1826 -35.8174 -80 -80 -80h-288c-44.1826 0 -80 35.8174 -80 80v272h96v32c0 70.5801 57.4199 128 128 128c70.5791 0 128 -57.4199 128 -128v-32zM160 320v-32h128v32c0 35.29 -28.71 64 -64 64s-64 -28.71 -64 -64zM320 200\nc13.2549 0 24 10.7451 24 24s-10.7451 24 -24 24s-24 -10.7451 -24 -24s10.7451 -24 24 -24zM128 200c13.2549 0 24 10.7451 24 24s-10.7451 24 -24 24s-24 -10.7451 -24 -24s10.7451 -24 24 -24z\" />\n    <glyph glyph-name=\"shopping-basket\" unicode=\"&#xf291;\" horiz-adv-x=\"576\" \nd=\"M576 232v-16c0 -13.2549 -10.7451 -24 -24 -24h-8l-26.1133 -182.788c-3.37793 -23.6465 -23.6299 -41.2119 -47.5166 -41.2119h-364.74c-23.8867 0 -44.1387 17.5654 -47.5176 41.2119l-26.1123 182.788h-8c-13.2549 0 -24 10.7451 -24 24v16\nc0 13.2549 10.7451 24 24 24h67.3408l106.78 146.821c10.3945 14.292 30.4072 17.4531 44.7012 7.05762c14.293 -10.3945 17.4531 -30.4082 7.05762 -44.7012l-79.4033 -109.178h235.047l-79.4033 109.179c-10.3955 14.292 -7.23438 34.3066 7.05859 44.7012\nc14.291 10.3955 34.3066 7.23535 44.7012 -7.05762l106.779 -146.822h67.3408c13.2549 0 24 -10.7451 24 -24zM312 56v112c0 13.2549 -10.7451 24 -24 24s-24 -10.7451 -24 -24v-112c0 -13.2549 10.7451 -24 24 -24s24 10.7451 24 24zM424 56v112\nc0 13.2549 -10.7451 24 -24 24s-24 -10.7451 -24 -24v-112c0 -13.2549 10.7451 -24 24 -24s24 10.7451 24 24zM200 56v112c0 13.2549 -10.7451 24 -24 24s-24 -10.7451 -24 -24v-112c0 -13.2549 10.7451 -24 24 -24s24 10.7451 24 24z\" />\n    <glyph glyph-name=\"hashtag\" unicode=\"&#xf292;\" horiz-adv-x=\"448\" \nd=\"M440.667 265.891c-0.974609 -5.45898 -6.2666 -9.89062 -11.8135 -9.89062h-79.0957l-22.8564 -128h74.8096c7.4707 0 13.126 -6.75391 11.8135 -14.1094l-7.14355 -40c-0.974609 -5.45898 -6.2666 -9.89062 -11.8125 -9.89062h-79.0967l-15.377 -86.1094\nc-0.974609 -5.45898 -6.2666 -9.89062 -11.8125 -9.89062h-40.6318c-7.47266 0 -13.127 6.75391 -11.8135 14.1094l14.623 81.8906h-98.6338l-15.3779 -86.1094c-0.974609 -5.45898 -6.26758 -9.89062 -11.8135 -9.89062h-40.6318\nc-7.4707 0 -13.126 6.75391 -11.8125 14.1094l14.623 81.8906h-74.8105c-7.4707 0 -13.126 6.75391 -11.8125 14.1094l7.14258 40c0.974609 5.45898 6.2666 9.89062 11.8135 9.89062h79.0957l22.8564 128h-74.8096c-7.4707 0 -13.126 6.75391 -11.8135 14.1094l7.14355 40\nc0.974609 5.45898 6.2666 9.89062 11.8125 9.89062h79.0967l15.377 86.1094c0.974609 5.45898 6.2666 9.89062 11.8125 9.89062h40.6318c7.47266 0 13.127 -6.75391 11.8135 -14.1094l-14.623 -81.8906h98.6348l15.377 86.1094\nc0.974609 5.45898 6.26758 9.89062 11.8135 9.89062h40.6318c7.4707 0 13.126 -6.75391 11.8125 -14.1094l-14.623 -81.8906h74.8105c7.4707 0 13.126 -6.75391 11.8125 -14.1094zM261.889 128l22.8574 128h-98.6338l-22.8574 -128h98.6338z\" />\n    <glyph glyph-name=\"percent\" unicode=\"&#xf295;\" horiz-adv-x=\"448\" \nd=\"M112 224c-61.9004 0 -112 50.0996 -112 112s50.0996 112 112 112s112 -50.0996 112 -112s-50.0996 -112 -112 -112zM112 384c-26.5 0 -48 -21.5 -48 -48s21.5 -48 48 -48s48 21.5 48 48s-21.5 48 -48 48zM336 160c61.9004 0 112 -50.0996 112 -112\ns-50.0996 -112 -112 -112s-112 50.0996 -112 112s50.0996 112 112 112zM336 0c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48zM392.3 447.8l31.6006 0.100586c19.3994 0.0996094 30.8994 -21.8008 19.6992 -37.8008l-366.199 -463.699\nc-3.94629 -5.62793 -12.7275 -10.1973 -19.6006 -10.2002l-33.3994 -0.100586c-19.5 0 -30.9004 21.9004 -19.7002 37.8008l368 463.699c4.5 6.40039 11.7998 10.2002 19.5996 10.2002z\" />\n    <glyph glyph-name=\"universal-access\" unicode=\"&#xf29a;\" \nd=\"M256 400c-114.971 0 -208 -93.0469 -208 -208c0 -114.971 93.0469 -208 208 -208c114.971 0 208 93.0469 208 208c0 114.971 -93.0469 208 -208 208zM256 440c136.967 0 248 -111.033 248 -248s-111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248z\nM256 384c106.039 0 192 -85.9609 192 -192s-85.9609 -192 -192 -192s-192 85.9609 -192 192s85.9609 192 192 192zM256 340c-19.8818 0 -36 -16.1182 -36 -36s16.1182 -36 36 -36s36 16.1182 36 36s-16.1182 36 -36 36zM373.741 241.977\nc8.59961 2.03027 13.9258 10.6484 11.8965 19.249c-2.03027 8.60156 -10.6494 13.9258 -19.249 11.8955c-96.4912 -22.7832 -124.089 -22.8291 -220.774 0c-8.60254 2.03125 -17.2178 -3.29395 -19.249 -11.8955c-2.03125 -8.60059 3.29492 -17.2178 11.8945 -19.249\nc28.7129 -6.7793 55.5127 -12.749 82.1416 -15.8066c-0.852539 -101.08 -12.3242 -123.08 -25.0371 -155.621c-3.61719 -9.25879 0.957031 -19.6982 10.2168 -23.3145c9.26465 -3.61914 19.7002 0.961914 23.3154 10.2168c8.72754 22.3408 17.0947 40.6982 22.2617 78.5488\nh9.68555c5.1748 -37.9131 13.5566 -56.2412 22.2617 -78.5488c3.61621 -9.25977 14.0547 -13.834 23.3154 -10.2168c9.25977 3.61621 13.834 14.0547 10.2168 23.3145c-12.7305 32.5693 -24.1855 54.5986 -25.0371 155.621c26.6299 3.05859 53.4287 9.02832 82.1406 15.8066\nz\" />\n    <glyph glyph-name=\"blind\" unicode=\"&#xf29d;\" horiz-adv-x=\"384\" \nd=\"M380.15 -62.8369c-1.05664 -0.640625 -2.91602 -1.16113 -4.15137 -1.16113c-2.48438 0 -5.54785 1.72363 -6.83789 3.84766l-125.33 206.428c4.25684 1.68848 10.0615 5.9375 12.958 9.48438l126.048 -207.607c0.641602 -1.05664 1.16211 -2.91699 1.16211 -4.15234\nc0 -2.48535 -1.72461 -5.5498 -3.84863 -6.83887zM142.803 133.662l62.8145 -153.537c6.69141 -16.3584 -1.14453 -35.042 -17.501 -41.7344c-16.3564 -6.69043 -35.04 1.1416 -41.7334 17.501l-36.1201 88.2852zM96 360c-24.3008 0 -44 19.6992 -44 44s19.6992 44 44 44\ns44 -19.6992 44 -44s-19.6992 -44 -44 -44zM250.837 190.872c8.19336 -10.374 6.44434 -25.4922 -3.96582 -33.708c-9.33984 -7.37402 -24.5635 -7.61914 -33.708 3.96484l-102.3 129.217c-0.663086 0.836914 -2.06738 1.51562 -3.13477 1.51562\nc-2.20801 0 -4 -1.79297 -4 -4.00098c0 -0.769531 0.387695 -1.88281 0.865234 -2.48535l31.4062 -39.8164v-107.196l-65.9258 -181.288c-6.04102 -16.6143 -24.4072 -25.1768 -41.0088 -19.1387c-16.6104 6.04004 -25.1787 24.4004 -19.1387 41.0098l54.0732 148.693\nv140.698l-16 -20.5713v-79.7656c0 -13.0996 -10.4951 -23.748 -23.5361 -23.9961c-13.4531 -0.254883 -24.4639 11.0811 -24.4639 24.5361v95.6943l61.0557 78.5c4.72754 6.0791 11.7979 9.23633 18.9443 9.23926v0.0263672h32v-0.015625\nc7.08691 -0.00390625 14.1035 -3.11719 18.8369 -9.1123z\" />\n    <glyph glyph-name=\"audio-description\" unicode=\"&#xf29e;\" \nd=\"M162.925 209.291l8.82227 -30.6553h-25.6064l9.04102 30.6523c1.27734 4.4209 2.65137 9.99414 3.87207 15.2451c1.2207 -5.25098 2.59473 -10.8232 3.87109 -15.2422zM329.399 241.39c28.6846 0 46.1748 -16.7656 46.1748 -49.0049\nc0 -32.0977 -16.3994 -49.7754 -46.1748 -49.7754h-14.5234v98.7803h14.5234zM512 336v-288c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h416c26.5098 0 48 -21.4902 48 -48zM245.459 111.861l-57.0967 168\nc-1.52734 4.49219 -6.61719 8.13867 -11.3623 8.13867h-35.8936c-4.74512 0 -9.83594 -3.64648 -11.3623 -8.13867l-57.0967 -168c-2.64453 -7.7832 3.1416 -15.8613 11.3613 -15.8613h29.1328c4.99219 0 10.1602 3.89453 11.5352 8.69336l8.57422 29.9053h51.3672\nl8.79297 -29.9766c1.39648 -4.75977 6.55469 -8.62207 11.5146 -8.62207v0h29.1719c8.2207 0 14.0059 8.07812 11.3613 15.8613zM430.16 192.386c0 58.9775 -37.9189 95.6143 -98.96 95.6143h-57.3662c-6.62695 0 -12 -5.37305 -12 -12v-168c0 -6.62695 5.37305 -12 12 -12\nh57.3662c61.041 0 98.96 36.9326 98.96 96.3857z\" />\n    <glyph glyph-name=\"phone-volume\" unicode=\"&#xf2a0;\" horiz-adv-x=\"384\" \nd=\"M97.333 -58.9658c-129.874 129.874 -129.681 340.252 0 469.933c5.69824 5.69824 14.5273 6.63184 21.2627 2.42188l64.8174 -40.5127c4.45898 -2.78711 8.07812 -9.31641 8.07812 -14.5752c0 -1.82715 -0.550781 -4.68652 -1.22949 -6.38281l-32.4082 -81.0205\nc-2.38477 -5.96484 -9.53418 -10.8047 -15.958 -10.8047c-0.473633 0 -1.23926 0.0380859 -1.71094 0.0849609l-55.8096 5.58008c-21.0508 -58.2607 -20.6123 -122.471 0 -179.515l55.8105 5.58105c0.47168 0.046875 1.2373 0.0849609 1.71094 0.0849609\nc6.42383 0 13.5732 -4.83984 15.959 -10.8037l32.4072 -81.0225c0.678711 -1.69629 1.22949 -4.55566 1.22949 -6.38281c0 -5.25879 -3.61914 -11.7881 -8.07812 -14.5752l-64.8174 -40.5127c-2.30762 -1.44238 -6.38867 -2.6123 -9.10938 -2.6123\nc-3.92969 0 -9.375 2.25488 -12.1543 5.03418zM247.126 352.527c11.832 -20.0469 11.832 -45.0088 0 -65.0557c-3.9502 -6.69238 -13.1084 -7.95898 -18.7178 -2.58105l-5.97559 5.72656c-3.91016 3.74805 -4.79297 9.62207 -2.26074 14.4102\nc2.04883 3.87793 3.71094 10.5859 3.71094 14.9717c0 4.38672 -1.66211 11.0947 -3.71094 14.9727c-2.5332 4.78809 -1.64941 10.6621 2.26074 14.4102l5.97559 5.72656c5.60938 5.37793 14.7676 4.11133 18.7178 -2.58105zM338.913 443.714\nc60.1396 -71.6035 60.0918 -175.882 0 -247.428c-4.47363 -5.32715 -12.5303 -5.74609 -17.5518 -0.933594l-5.79785 5.55762c-4.56055 4.37109 -4.97754 11.5293 -0.930664 16.3789c49.6875 59.5381 49.6465 145.933 0 205.422\nc-4.04688 4.84961 -3.63086 12.0078 0.930664 16.3789l5.79785 5.55762c5.02148 4.8125 13.0781 4.39355 17.5518 -0.933594zM292.941 398.773c36.0498 -46.3223 36.1074 -111.149 0 -157.547c-4.39062 -5.64062 -12.6973 -6.25098 -17.8564 -1.30371l-5.81836 5.5791\nc-4.39941 4.21875 -4.99805 11.0947 -1.28418 15.9307c26.5352 34.5645 26.5332 82.5723 0 117.135c-3.71387 4.83594 -3.11523 11.7109 1.28418 15.9307l5.81836 5.5791c5.15918 4.94727 13.4658 4.33691 17.8564 -1.30371z\" />\n    <glyph glyph-name=\"braille\" unicode=\"&#xf2a1;\" horiz-adv-x=\"640\" \nd=\"M128 192c0 -35.3457 -28.6543 -64 -64 -64s-64 28.6543 -64 64s28.6543 64 64 64s64 -28.6543 64 -64zM64 64c17.6729 0 32 -14.3271 32 -32s-14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32zM64 416c35.3457 0 64 -28.6543 64 -64s-28.6543 -64 -64 -64\ns-64 28.6543 -64 64s28.6543 64 64 64zM224 224c17.6729 0 32 -14.3271 32 -32s-14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32zM224 64c17.6729 0 32 -14.3271 32 -32s-14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32zM224 416\nc35.3457 0 64 -28.6543 64 -64s-28.6543 -64 -64 -64s-64 28.6543 -64 64s28.6543 64 64 64zM448 224c17.6729 0 32 -14.3271 32 -32s-14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32zM448 64c17.6729 0 32 -14.3271 32 -32s-14.3271 -32 -32 -32\ns-32 14.3271 -32 32s14.3271 32 32 32zM448 416c35.3457 0 64 -28.6543 64 -64s-28.6543 -64 -64 -64s-64 28.6543 -64 64s28.6543 64 64 64zM608 224c17.6729 0 32 -14.3271 32 -32s-14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32zM608 64\nc17.6729 0 32 -14.3271 32 -32s-14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32zM608 384c17.6729 0 32 -14.3271 32 -32s-14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32z\" />\n    <glyph glyph-name=\"assistive-listening-systems\" unicode=\"&#xf2a2;\" \nd=\"M216 188c0 -15.4639 -12.5361 -28 -28 -28s-28 12.5361 -28 28c0 44.1123 35.8877 80 80 80s80 -35.8877 80 -80c0 -15.4639 -12.5361 -28 -28 -28s-28 12.5361 -28 28c0 13.2344 -10.7666 24 -24 24s-24 -10.7656 -24 -24zM240 364c97.0469 0 176 -78.9531 176 -176\nc0 -95.9863 -71.4053 -109.798 -72 -144.226c-0.124023 -59.4463 -48.5254 -107.774 -108 -107.774c-15.4639 0 -28 12.5361 -28 28s12.5361 28 28 28c28.6729 0 52 23.3271 52 52l0.00292969 0.37793c0.988281 73.3115 71.9971 68.458 71.9971 143.622\nc0 66.168 -53.832 120 -120 120s-120 -53.832 -120 -120c0 -15.4639 -12.5361 -28 -28 -28s-28 12.5361 -28 28c0 97.0469 78.9531 176 176 176zM160 128c17.6729 0 32 -14.3271 32 -32s-14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32zM32 0\nc17.6729 0 32 -14.3271 32 -32s-14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32zM512 187.993c0 -15.4639 -12.5371 -28 -28.001 -28s-28 12.5361 -28 28c0 1.12695 -0.00683594 2.24512 -0.0332031 3.36328l-0.00292969 0.1875\nc-1.4668 91.4404 -60.1709 172.599 -146.077 201.953c-14.6318 5.00098 -22.4414 20.917 -17.4414 35.5498c5.00098 14.6328 20.917 22.4404 35.5498 17.4424c108.163 -36.959 182.082 -139.015 183.961 -253.965c0.0332031 -1.50684 0.0449219 -3.01367 0.0449219 -4.53125\nzM152.971 8.9707l-33.9404 -33.9404l-80 80l33.9404 33.9404z\" />\n    <glyph glyph-name=\"american-sign-language-interpreting\" unicode=\"&#xf2a3;\" horiz-adv-x=\"640\" \nd=\"M290.547 258.961c-20.2949 10.1494 -44.1465 11.1992 -64.7393 3.88965c42.6064 0 71.208 -20.4746 85.5781 -50.5752c8.57617 -17.8994 -5.14746 -38.0713 -23.6172 -38.0713c18.4297 0 32.2119 -20.1357 23.6172 -38.0713\nc-14.7246 -30.8457 -46.123 -50.8535 -80.2979 -50.8535c-0.556641 0 -94.4707 8.61426 -94.4707 8.61426l-66.4062 -33.3467c-9.38379 -4.69336 -19.8145 -0.378906 -23.8945 7.78125l-44.4561 88.9248c-4.16699 8.61523 -1.11133 18.8975 6.94531 23.6211l58.0723 33.0693\nl41.1221 74.1953c6.38965 57.2451 34.7314 109.768 79.7432 146.727c11.3906 9.44824 28.3408 7.78125 37.5098 -3.61328c9.44629 -11.3936 7.78027 -28.0674 -3.6123 -37.5156c-12.5029 -10.5596 -23.6172 -22.5098 -32.5088 -35.5703\nc21.6719 14.7285 46.6787 24.7324 74.1865 28.0674c14.7246 1.94434 28.0625 -8.33594 29.7295 -23.0654c1.94531 -14.7275 -8.33594 -28.0674 -23.0615 -29.7344c-16.1162 -1.94434 -31.1201 -7.50293 -44.1787 -15.2832c26.1143 5.71289 58.7119 3.1377 88.0791 -11.1152\nc13.3359 -6.66895 18.8936 -22.5088 12.2246 -35.8486c-6.38965 -13.0596 -22.5039 -18.6162 -35.5645 -12.2256zM263.318 189.489c-6.1123 12.5049 -18.3379 20.2861 -32.2314 20.2861h-0.105469c-19.5732 0 -35.46 -15.8867 -35.46 -35.46\nc0 -0.0302734 0 -0.0800781 0.000976562 -0.110352c0 -21.4277 17.8076 -35.5703 35.5645 -35.5703c13.8936 0 26.1191 7.78125 32.2314 20.2861c4.44531 9.44922 13.6133 15.0059 23.3389 15.2842c-9.72559 0.277344 -18.8936 5.83496 -23.3389 15.2842zM638.139 226.726\nc4.16797 -8.61426 1.11133 -18.8965 -6.94531 -23.6201l-58.0713 -33.0693l-41.1221 -74.1963c-6.38965 -57.2451 -34.7314 -109.767 -79.7432 -146.726c-10.9316 -9.1123 -27.7988 -8.14453 -37.5098 3.6123c-9.44629 11.3945 -7.78027 28.0674 3.61328 37.5166\nc12.5029 10.5586 23.6162 22.5088 32.5078 35.5703c-21.6719 -14.7295 -46.6787 -24.7324 -74.1865 -28.0674c-10.0205 -2.50586 -27.5518 5.64258 -29.7295 23.0645c-1.94531 14.7285 8.33594 28.0674 23.0615 29.7344c16.1162 1.94629 31.1201 7.50293 44.1787 15.2842\nc-26.1143 -5.71289 -58.7119 -3.1377 -88.0791 11.1152c-13.3359 6.66895 -18.8936 22.5088 -12.2246 35.8477c6.38965 13.0605 22.5049 18.6191 35.5654 12.2266c20.2949 -10.1484 44.1465 -11.1982 64.7393 -3.88965c-42.6064 0 -71.208 20.4746 -85.5781 50.5762\nc-8.57617 17.8984 5.14746 38.0713 23.6172 38.0713c-18.4297 0 -32.2109 20.1357 -23.6172 38.0703c14.0332 29.3965 44.0391 50.8877 81.9658 50.8545l92.8027 -8.61523l66.4062 33.3467c9.4082 4.7041 19.8281 0.354492 23.8936 -7.78027zM408.912 245.344\nc-13.8936 0 -26.1191 -7.78027 -32.2314 -20.2861c-4.44531 -9.44824 -13.6133 -15.0059 -23.3389 -15.2832c9.72559 -0.27832 18.8936 -5.83594 23.3389 -15.2842c6.1123 -12.5049 18.3379 -20.2861 32.2314 -20.2861h0.105469c19.5732 0 35.46 15.8857 35.46 35.46\nc0 0.0302734 0 0.0791016 -0.000976562 0.110352c0 21.4287 -17.8076 35.5693 -35.5645 35.5693z\" />\n    <glyph glyph-name=\"deaf\" unicode=\"&#xf2a4;\" \nd=\"M216 188c0 -15.4639 -12.5361 -28 -28 -28s-28 12.5361 -28 28c0 44.1123 35.8877 80 80 80s80 -35.8877 80 -80c0 -15.4639 -12.5361 -28 -28 -28s-28 12.5361 -28 28c0 13.2344 -10.7666 24 -24 24s-24 -10.7656 -24 -24zM240 364c97.0469 0 176 -78.9531 176 -176\nc0 -95.9863 -71.4053 -109.798 -72 -144.226c-0.124023 -59.4463 -48.5254 -107.774 -108 -107.774c-15.4639 0 -28 12.5361 -28 28s12.5361 28 28 28c28.6729 0 52 23.3271 52 52l0.00292969 0.37793c0.988281 73.3115 71.9971 68.458 71.9971 143.622\nc0 66.168 -53.832 120 -120 120s-120 -53.832 -120 -120c0 -15.4639 -12.5361 -28 -28 -28s-28 12.5361 -28 28c0 97.0469 78.9531 176 176 176zM508.485 416.201c4.68652 -4.68652 4.68652 -12.2842 0 -16.9727l-87.0303 -87.0283\nc-4.68652 -4.68652 -12.2842 -4.68652 -16.9697 0l-28.2852 28.2852c-4.68652 4.68652 -4.68652 12.2842 0 16.9707l87.0283 87.0293c4.6875 4.68555 12.2842 4.68555 16.9717 0zM168.97 133.255l28.2861 -28.2842c4.68652 -4.68652 4.68652 -12.2852 0 -16.9707\nl-148.484 -148.485c-4.6875 -4.68555 -12.2842 -4.68555 -16.9717 0l-28.2852 28.2842c-4.68555 4.6875 -4.68555 12.2852 0 16.9707l148.485 148.485c4.68555 4.68652 12.2842 4.68652 16.9697 0z\" />\n    <glyph glyph-name=\"sign-language\" unicode=\"&#xf2a7;\" horiz-adv-x=\"448\" \nd=\"M91.4336 -35.9873c-0.306641 16.0186 13.1094 29.1289 29.1309 29.1289h62.293v5.71484h-125.864c-16.0215 0 -29.4375 13.1104 -29.1299 29.1289c0.296875 15.5234 12.9717 28.0146 28.5645 28.0146h126.43v5.71387h-153.722\nc-16.0205 0 -29.4365 13.1113 -29.1299 29.1289c0.296875 15.5225 12.9727 28.0137 28.5664 28.0137h154.286v5.71387h-125.151c-16.0215 0 -29.4375 13.1104 -29.1299 29.1289c0.296875 15.5215 12.9727 28.0127 28.5654 28.0127h168.566l-31.085 22.6064\nc-12.7617 9.28027 -15.583 27.1484 -6.30176 39.9121c9.28027 12.7607 27.1494 15.5811 39.9121 6.30176l123.36 -89.7148c7.79395 -5.66895 14.1201 -18.0908 14.1201 -27.7285v-141.136c0 -15.9102 -10.9463 -29.7305 -26.4326 -33.374l-80.4717 -18.9346\nc-8.55176 -2.01172 -22.624 -3.64551 -31.4102 -3.64551h-107.4c-15.5928 0.000976562 -28.2686 12.4922 -28.5664 28.0137zM164.683 189.714l-36.3711 46.71c-9.5791 12.3027 -7.51172 29.9795 4.55371 39.75c12.4502 10.083 31.0371 7.55273 40.8799 -5.08789\nl13.0039 -16.7002c-17.1426 -15.6484 -15.4092 -43.0244 3.16992 -56.5361l11.1875 -8.13574h-36.4238zM447.981 191.817c0.00976562 -0.311523 0.0175781 -0.81543 0.0175781 -1.12695c0 -9.24902 -5.92188 -21.3682 -13.2197 -27.0508l-61.0645 -47.5488v16.999\nc0 13.4834 -6.51074 26.2686 -17.415 34.1982l-123.359 89.7139c-12.6357 9.18945 -29.1934 9.16113 -41.6904 0.904297l-52.0527 66.8486c-9.84375 12.6416 -7.74121 31.2822 5.08594 40.8809c12.4297 9.30273 30.0732 6.97559 39.6523 -5.32812l77.6758 -99.7539\nl4.50879 3.51172l-94.4434 121.287c-9.84277 12.6416 -7.74121 31.2822 5.08594 40.8818c12.4307 9.30176 30.0732 6.97461 39.6533 -5.32812l94.79 -121.734l4.50879 3.51074l-76.8887 98.7451c-9.84277 12.6416 -7.74121 31.2822 5.08594 40.8809\nc12.4297 9.30273 30.0732 6.97559 39.6533 -5.32715l103.562 -133.001l-1.26172 38.4141c-0.518555 15.7715 11.8457 28.9756 27.6191 29.4932c15.7705 0.517578 28.9746 -11.8477 29.4922 -27.6191z\" />\n    <glyph glyph-name=\"low-vision\" unicode=\"&#xf2a8;\" horiz-adv-x=\"576\" \nd=\"M569.344 216.369c3.67383 -6.22461 6.65625 -17.1416 6.65625 -24.3691s-2.98242 -18.1455 -6.65723 -24.3701c-31.9746 -54.2607 -79.6484 -98.3232 -136.81 -126.301l0.00683594 -0.00878906l43.1201 -58.377c7.60156 -10.8594 4.95996 -25.8252 -5.90039 -33.4268\nl-13.1133 -9.17773c-10.8594 -7.59863 -25.8223 -4.95801 -33.4238 5.90039l-251.836 356.544c-11.1797 -5.09375 -28.5518 -14.7539 -38.7764 -21.5635l189.979 -271.399c-9.52637 -1.00488 -25.0342 -1.82031 -34.6133 -1.82031\nc-12.29 0 -32.1484 1.33984 -44.3262 2.99023l-40.6309 58.04h-0.00976562l-119.399 170.58c-8.64453 -9.25391 -21.3203 -25.3428 -28.2939 -35.9121l124.19 -177.417c-73.1172 25.4863 -134.358 76.0166 -172.858 141.349c-8.96484 15.2109 -8.76562 33.8643 0 48.7393\nc0.0107422 0.0166016 0.0234375 0.0332031 0.0332031 0.0498047c33.5459 56.8984 82.7676 99.8506 136.79 126.242l-43.1309 58.3945c-7.60156 10.8604 -4.95996 25.8252 5.90039 33.4268l13.1143 9.17773c10.8584 7.59961 25.8213 4.95801 33.4229 -5.90039\nl52.7705 -72.1689c26.3496 6.79004 53.9834 10.4092 82.4512 10.4092c119.81 0 224.96 -63.9492 281.344 -159.631zM390.026 102.06c21.1406 23.9658 33.9736 55.4365 33.9736 89.9404c0 75.1738 -60.8379 136 -136 136c-17.5117 0 -34.2422 -3.30566 -49.6084 -9.32324\nl19.0684 -27.2363c25.9883 7.96289 54.7598 5.56836 79.5098 -7.68066h-0.0292969c-23.6504 0 -42.8203 -19.1699 -42.8203 -42.8193c0 -23.4717 18.9922 -42.8203 42.8203 -42.8203c23.6494 0 42.8193 19.1699 42.8193 42.8203v0.0292969\nc18.9111 -35.3271 15.8818 -79.1123 -8.7998 -111.68z\" />\n    <glyph glyph-name=\"handshake\" unicode=\"&#xf2b5;\" horiz-adv-x=\"640\" \nd=\"M434.7 384c8.5 0 16.7002 -3.40039 22.5996 -9.40039l54.6006 -54.5996v-193.5c-2.40039 2.7002 -5 5.2998 -7.90039 7.7002l-145.6 118.2l26.0996 23.8994c6.5 6 7 16.1006 1 22.6006c-5.90039 6.5 -16.0996 6.89941 -22.5996 1l-79.9004 -73.2002\nc-0.0996094 -0.100586 -0.299805 -0.100586 -0.400391 -0.200195c-16.6992 -14.9004 -43.3994 -11.2002 -56.0996 2.7002c-14.2002 15.5 -14.5 40.3994 2.09961 56c0.100586 0.0996094 0.200195 0.299805 0.300781 0.399414l98.2998 90\nc5.89941 5.40039 13.5996 8.40039 21.5996 8.40039h85.9004zM544 319.8h96v-255.899h-64c-17.7002 0 -32 14.2998 -32 32v223.899zM592 95.9004c8.7998 0 16 7.19922 16 16c0 8.7998 -7.2002 16 -16 16s-16 -7.2002 -16 -16c0 -8.80078 7.2002 -16 16 -16zM0 64v255.8h96\nv-223.8c0 -17.7002 -14.2998 -32 -32 -32h-64zM48 127.9c-8.7998 0 -16 -7.10059 -16 -16c0 -8.80078 7.2002 -16 16 -16s16 7.19922 16 16c0 8.7998 -7.2002 16 -16 16zM483.9 109.3c13.6992 -11.2002 15.7998 -31.2998 4.59961 -45.0996l-9.5 -11.7002\nc-11.0996 -13.7998 -31.2998 -15.7998 -45 -4.7002l-5.40039 4.40039l-31.3994 -38.6006c-12.9004 -15.8994 -36.4004 -18.3994 -52.2998 -5.39941l-17.9004 15.5l-0.200195 -0.200195c-22.2998 -27.4004 -62.5996 -31.5996 -90 -9.2998l-90.5 81.8994h-18.2998v223.9\nl54.7002 54.5996c6 6 14.0996 9.40039 22.5996 9.40039h83.7998l-81.7998 -74.9004c-29.2002 -26.7998 -31.2998 -72.2998 -4.39941 -101.699c26.5 -28.9004 72 -31.5 101.699 -4.40039l30 27.5z\" />\n    <glyph glyph-name=\"envelope-open\" unicode=\"&#xf2b6;\" \nd=\"M512 -16c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v263.276c0 12.8955 8.2373 29.8193 18.3867 37.7754c24.9131 19.5293 45.501 35.3652 164.2 121.512c16.8252 12.2666 50.21 41.7832 73.4131 41.4336\nc23.1982 0.353516 56.5957 -29.1719 73.4131 -41.4326c118.687 -86.1377 139.303 -101.995 164.2 -121.513c10.1494 -7.95605 18.3867 -24.8799 18.3867 -37.7754v-263.276zM446.334 180.605c-2.5625 3.72754 -7.7002 4.59473 -11.3389 1.90625\nc-22.8447 -16.873 -55.4619 -40.7051 -105.582 -77.0791c-16.8252 -12.2656 -50.21 -41.7803 -73.4131 -41.4297c-23.2109 -0.34375 -56.5586 29.1436 -73.4131 41.4297c-50.1143 36.3701 -82.7344 60.2041 -105.582 77.0791\nc-3.63867 2.68848 -8.77637 1.82129 -11.3389 -1.90625l-9.07227 -13.1963c-0.777344 -1.13086 -1.4082 -3.16113 -1.4082 -4.5332c0 -2.22754 1.45508 -5.11035 3.24707 -6.43359c22.8877 -16.8994 55.4541 -40.6904 105.304 -76.8682\nc20.2734 -14.7812 56.5234 -47.8135 92.2637 -47.5732c35.7236 -0.242188 71.9609 32.7715 92.2627 47.5732c49.8506 36.1787 82.418 59.9697 105.304 76.8682c1.79199 1.32324 3.24707 4.20605 3.24707 6.43359c0 1.37207 -0.630859 3.40234 -1.4082 4.5332z\" />\n    <glyph glyph-name=\"address-book\" unicode=\"&#xf2b9;\" horiz-adv-x=\"448\" \nd=\"M436 288h-20v-64h20c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-20v-64h20c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-20v-48c0 -26.5 -21.5 -48 -48 -48h-320c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48\nh320c26.5 0 48 -21.5 48 -48v-48h20c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12zM208 320c-35.2998 0 -64 -28.7002 -64 -64s28.7002 -64 64 -64s64 28.7002 64 64s-28.7002 64 -64 64zM320 83.2002v19.2002\nc0 31.7998 -30.0996 57.5996 -67.2002 57.5996h-5c-12.2002 -5.09961 -25.7002 -8 -39.7998 -8s-27.5 2.90039 -39.7998 8h-5c-37.1006 0 -67.2002 -25.7998 -67.2002 -57.5996v-19.2002c0 -10.6006 10 -19.2002 22.4004 -19.2002h179.199\nc12.4004 0 22.4004 8.59961 22.4004 19.2002z\" />\n    <glyph glyph-name=\"address-card\" unicode=\"&#xf2bb;\" horiz-adv-x=\"576\" \nd=\"M528 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h480zM176 320c-35.2998 0 -64 -28.7002 -64 -64s28.7002 -64 64 -64s64 28.7002 64 64s-28.7002 64 -64 64zM288 83.2002v19.2002\nc0 31.7998 -30.0996 57.5996 -67.2002 57.5996h-5c-12.2002 -5.09961 -25.7002 -8 -39.7998 -8s-27.5 2.90039 -39.7998 8h-5c-37.1006 0 -67.2002 -25.7998 -67.2002 -57.5996v-19.2002c0 -10.6006 10 -19.2002 22.4004 -19.2002h179.199\nc12.4004 0 22.4004 8.59961 22.4004 19.2002zM512 136v16c0 4.40039 -3.59961 8 -8 8h-144c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h144c4.40039 0 8 3.59961 8 8zM512 200v16c0 4.40039 -3.59961 8 -8 8h-144c-4.40039 0 -8 -3.59961 -8 -8v-16\nc0 -4.40039 3.59961 -8 8 -8h144c4.40039 0 8 3.59961 8 8zM512 264v16c0 4.40039 -3.59961 8 -8 8h-144c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h144c4.40039 0 8 3.59961 8 8z\" />\n    <glyph glyph-name=\"user-circle\" unicode=\"&#xf2bd;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 344c-48.5996 0 -88 -39.4004 -88 -88s39.4004 -88 88 -88s88 39.4004 88 88s-39.4004 88 -88 88zM248 0c58.7002 0 111.3 26.5996 146.5 68.2002\nc-18.7998 35.3994 -55.5996 59.7998 -98.5 59.7998c-2.40039 0 -4.7998 -0.400391 -7.09961 -1.09961c-12.9004 -4.2002 -26.6006 -6.90039 -40.9004 -6.90039s-27.9004 2.7002 -40.9004 6.90039c-2.2998 0.699219 -4.69922 1.09961 -7.09961 1.09961\nc-42.9004 0 -79.7002 -24.4004 -98.5 -59.7998c35.2002 -41.6006 87.7998 -68.2002 146.5 -68.2002z\" />\n    <glyph glyph-name=\"id-badge\" unicode=\"&#xf2c1;\" horiz-adv-x=\"384\" \nd=\"M336 448c26.5 0 48 -21.5 48 -48v-416c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48h288zM144 416c-8.7998 0 -16 -7.2002 -16 -16s7.2002 -16 16 -16h96c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16h-96zM192 288\nc-35.2998 0 -64 -28.7002 -64 -64s28.7002 -64 64 -64s64 28.7002 64 64s-28.7002 64 -64 64zM304 51.2002v19.2002c0 31.7998 -30.0996 57.5996 -67.2002 57.5996h-5c-12.2002 -5.09961 -25.7002 -8 -39.7998 -8s-27.5 2.90039 -39.7998 8h-5\nc-37.1006 0 -67.2002 -25.7998 -67.2002 -57.5996v-19.2002c0 -10.6006 10 -19.2002 22.4004 -19.2002h179.199c12.4004 0 22.4004 8.59961 22.4004 19.2002z\" />\n    <glyph glyph-name=\"id-card\" unicode=\"&#xf2c2;\" horiz-adv-x=\"576\" \nd=\"M528 416c26.5 0 48 -21.5 48 -48v-16h-576v16c0 26.5 21.5 48 48 48h480zM0 16v304h576v-304c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48zM352 248v-16c0 -4.40039 3.59961 -8 8 -8h144c4.40039 0 8 3.59961 8 8v16c0 4.40039 -3.59961 8 -8 8h-144\nc-4.40039 0 -8 -3.59961 -8 -8zM352 184v-16c0 -4.40039 3.59961 -8 8 -8h144c4.40039 0 8 3.59961 8 8v16c0 4.40039 -3.59961 8 -8 8h-144c-4.40039 0 -8 -3.59961 -8 -8zM352 120v-16c0 -4.40039 3.59961 -8 8 -8h144c4.40039 0 8 3.59961 8 8v16\nc0 4.40039 -3.59961 8 -8 8h-144c-4.40039 0 -8 -3.59961 -8 -8zM176 256c-35.2998 0 -64 -28.7002 -64 -64s28.7002 -64 64 -64s64 28.7002 64 64s-28.7002 64 -64 64zM67.0996 51.7998c-3.19922 -9.7998 5.2002 -19.7998 15.6006 -19.7998h186.6\nc10.4004 0 18.7998 9.90039 15.6006 19.7998c-8.40039 25.7002 -32.5 44.2002 -60.9004 44.2002h-8.2002c-12.2002 -5.09961 -25.7002 -8 -39.7998 -8s-27.5 2.90039 -39.7998 8h-8.2002c-28.4004 0 -52.5 -18.5 -60.9004 -44.2002z\" />\n    <glyph glyph-name=\"thermometer-full\" unicode=\"&#xf2c7;\" horiz-adv-x=\"256\" \nd=\"M224 352v-203.347c19.9121 -22.5635 32 -52.1943 32 -84.6533c0 -70.6963 -57.3018 -128 -128 -128c-0.298828 0 -0.610352 0.000976562 -0.90918 0.00292969c-70.3018 0.488281 -127.448 58.3613 -127.089 128.664c0.164062 32.1973 12.2227 61.5771 31.998 83.9863\nv203.347c0 53.0186 42.9814 96 96 96s96 -42.9814 96 -96zM128 -16c44.1123 0 80 35.8877 80 80c0 34.3379 -19.3701 52.1904 -32 66.502v221.498c0 26.4668 -21.5332 48 -48 48s-48 -21.5332 -48 -48v-221.498c-12.7334 -14.4277 -31.8262 -32.0996 -31.999 -66.0801\nc-0.223633 -43.876 35.5635 -80.1162 79.4229 -80.4199zM192 64c0 -35.3457 -28.6543 -64 -64 -64s-64 28.6543 -64 64c0 23.6846 12.876 44.3486 32 55.417v232.583c0 17.6729 14.3271 32 32 32s32 -14.3271 32 -32v-232.583c19.124 -11.0684 32 -31.7324 32 -55.417z\" />\n    <glyph glyph-name=\"thermometer-three-quarters\" unicode=\"&#xf2c8;\" horiz-adv-x=\"256\" \nd=\"M192 64c0 -35.3457 -28.6543 -64 -64 -64s-64 28.6543 -64 64c0 23.6846 12.876 44.3486 32 55.417v168.583c0 17.6729 14.3271 32 32 32s32 -14.3271 32 -32v-168.583c19.124 -11.0684 32 -31.7324 32 -55.417zM224 148.653c19.9121 -22.5635 32 -52.1943 32 -84.6533\nc0 -70.6963 -57.3027 -128 -128 -128c-0.298828 0 -0.609375 0.000976562 -0.90918 0.00292969c-70.3018 0.488281 -127.448 58.3613 -127.089 128.664c0.164062 32.1982 12.2227 61.5781 31.998 83.9863v203.347c0 53.0186 42.9814 96 96 96s96 -42.9814 96 -96v-203.347z\nM208 64c0 34.3389 -19.3701 52.1904 -32 66.502v221.498c0 26.4668 -21.5332 48 -48 48s-48 -21.5332 -48 -48v-221.498c-12.7324 -14.4277 -31.8252 -32.0996 -31.999 -66.0801c-0.223633 -43.876 35.5635 -80.1162 79.4229 -80.4199l0.576172 -0.00195312\nc44.1123 0 80 35.8877 80 80z\" />\n    <glyph glyph-name=\"thermometer-half\" unicode=\"&#xf2c9;\" horiz-adv-x=\"256\" \nd=\"M192 64c0 -35.3457 -28.6543 -64 -64 -64s-64 28.6543 -64 64c0 23.6846 12.876 44.3486 32 55.417v104.583c0 17.6729 14.3271 32 32 32s32 -14.3271 32 -32v-104.583c19.124 -11.0684 32 -31.7324 32 -55.417zM224 148.653c19.9121 -22.5635 32 -52.1943 32 -84.6533\nc0 -70.6963 -57.3027 -128 -128 -128c-0.298828 0 -0.609375 0.000976562 -0.90918 0.00292969c-70.3018 0.488281 -127.448 58.3613 -127.089 128.664c0.164062 32.1982 12.2227 61.5781 31.998 83.9863v203.347c0 53.0186 42.9814 96 96 96s96 -42.9814 96 -96v-203.347z\nM208 64c0 34.3389 -19.3701 52.1904 -32 66.502v221.498c0 26.4668 -21.5332 48 -48 48s-48 -21.5332 -48 -48v-221.498c-12.7324 -14.4277 -31.8252 -32.0996 -31.999 -66.0801c-0.223633 -43.876 35.5635 -80.1162 79.4229 -80.4199l0.576172 -0.00195312\nc44.1123 0 80 35.8877 80 80z\" />\n    <glyph glyph-name=\"thermometer-quarter\" unicode=\"&#xf2ca;\" horiz-adv-x=\"256\" \nd=\"M192 64c0 -35.3457 -28.6543 -64 -64 -64s-64 28.6543 -64 64c0 23.6846 12.876 44.3486 32 55.417v40.583c0 17.6729 14.3271 32 32 32s32 -14.3271 32 -32v-40.583c19.124 -11.0684 32 -31.7324 32 -55.417zM224 148.653c19.9121 -22.5635 32 -52.1943 32 -84.6533\nc0 -70.6963 -57.3027 -128 -128 -128c-0.298828 0 -0.609375 0.000976562 -0.90918 0.00292969c-70.3018 0.488281 -127.448 58.3613 -127.089 128.664c0.164062 32.1982 12.2227 61.5781 31.998 83.9863v203.347c0 53.0186 42.9814 96 96 96s96 -42.9814 96 -96v-203.347z\nM208 64c0 34.3389 -19.3701 52.1904 -32 66.502v221.498c0 26.4668 -21.5332 48 -48 48s-48 -21.5332 -48 -48v-221.498c-12.7324 -14.4277 -31.8252 -32.0996 -31.999 -66.0801c-0.223633 -43.876 35.5635 -80.1162 79.4229 -80.4199l0.576172 -0.00195312\nc44.1123 0 80 35.8877 80 80z\" />\n    <glyph glyph-name=\"thermometer-empty\" unicode=\"&#xf2cb;\" horiz-adv-x=\"256\" \nd=\"M192 64c0 -35.3457 -28.6543 -64 -64 -64s-64 28.6543 -64 64s28.6543 64 64 64s64 -28.6543 64 -64zM224 148.653c19.9121 -22.5635 32 -52.1943 32 -84.6533c0 -70.6963 -57.3027 -128 -128 -128c-0.298828 0 -0.609375 0.000976562 -0.90918 0.00292969\nc-70.3018 0.488281 -127.448 58.3613 -127.089 128.664c0.164062 32.1982 12.2227 61.5781 31.998 83.9863v203.347c0 53.0186 42.9814 96 96 96s96 -42.9814 96 -96v-203.347zM208 64c0 34.3389 -19.3701 52.1904 -32 66.502v221.498c0 26.4668 -21.5332 48 -48 48\ns-48 -21.5332 -48 -48v-221.498c-12.7324 -14.4277 -31.8252 -32.0996 -31.999 -66.0801c-0.223633 -43.876 35.5635 -80.1162 79.4229 -80.4199l0.576172 -0.00195312c44.1123 0 80 35.8877 80 80z\" />\n    <glyph glyph-name=\"shower\" unicode=\"&#xf2cc;\" \nd=\"M389.66 312.4l-158.061 -158.061c-9.36914 -9.37012 -24.5693 -9.37012 -33.9395 0l-11.3203 11.3203c-9.37012 9.37012 -9.37012 24.5703 0 33.9395l0.110352 0.110352c-34.0303 40.21 -35.1602 98.9404 -3.39062 140.38\nc-11.9697 7.5498 -26.1396 11.9102 -41.2998 11.9102c-42.8799 0 -77.7598 -34.8799 -77.7598 -77.7598v-306.24h-64v306.24c0 78.1699 63.5898 141.76 141.76 141.76c36.9307 0 70.6104 -14.2002 95.8604 -37.4199c35.8994 11.5098 76.5 4.5 106.67 -21.0303\nl0.110352 0.110352c9.36914 9.37012 24.5693 9.37012 33.9395 0l11.3203 -11.3203c9.37012 -9.37012 9.37012 -24.5703 0 -33.9395zM384 240c0 -8.83691 -7.16309 -16 -16 -16s-16 7.16309 -16 16s7.16309 16 16 16s16 -7.16309 16 -16zM416 240c0 8.83691 7.16309 16 16 16\ns16 -7.16309 16 -16s-7.16309 -16 -16 -16s-16 7.16309 -16 16zM512 240c0 -8.83691 -7.16309 -16 -16 -16s-16 7.16309 -16 16s7.16309 16 16 16s16 -7.16309 16 -16zM352 208c0 -8.83691 -7.16309 -16 -16 -16s-16 7.16309 -16 16s7.16309 16 16 16s16 -7.16309 16 -16z\nM400 224c8.83691 0 16 -7.16309 16 -16s-7.16309 -16 -16 -16s-16 7.16309 -16 16s7.16309 16 16 16zM480 208c0 -8.83691 -7.16309 -16 -16 -16s-16 7.16309 -16 16s7.16309 16 16 16s16 -7.16309 16 -16zM320 176c0 -8.83691 -7.16309 -16 -16 -16s-16 7.16309 -16 16\ns7.16309 16 16 16s16 -7.16309 16 -16zM352 176c0 8.83691 7.16309 16 16 16s16 -7.16309 16 -16s-7.16309 -16 -16 -16s-16 7.16309 -16 16zM448 176c0 -8.83691 -7.16309 -16 -16 -16s-16 7.16309 -16 16s7.16309 16 16 16s16 -7.16309 16 -16zM320 144\nc0 8.83691 7.16309 16 16 16s16 -7.16309 16 -16s-7.16309 -16 -16 -16s-16 7.16309 -16 16zM416 144c0 -8.83691 -7.16309 -16 -16 -16s-16 7.16309 -16 16s7.16309 16 16 16s16 -7.16309 16 -16zM320 112c0 -8.83691 -7.16309 -16 -16 -16s-16 7.16309 -16 16\ns7.16309 16 16 16s16 -7.16309 16 -16zM384 112c0 -8.83691 -7.16309 -16 -16 -16s-16 7.16309 -16 16s7.16309 16 16 16s16 -7.16309 16 -16zM352 80c0 -8.83691 -7.16309 -16 -16 -16s-16 7.16309 -16 16s7.16309 16 16 16s16 -7.16309 16 -16zM320 48\nc0 -8.83691 -7.16309 -16 -16 -16s-16 7.16309 -16 16s7.16309 16 16 16s16 -7.16309 16 -16z\" />\n    <glyph glyph-name=\"bath\" unicode=\"&#xf2cd;\" \nd=\"M488 192c13.2549 0 24 -10.7451 24 -24v-16c0 -13.2549 -10.7451 -24 -24 -24h-8v-32c0 -28.4297 -12.3623 -53.9688 -32 -71.5469v-32.4531c0 -13.2549 -10.7451 -24 -24 -24h-16c-13.2549 0 -24 10.7451 -24 24v8h-256v-8c0 -13.2549 -10.7451 -24 -24 -24h-16\nc-13.2549 0 -24 10.7451 -24 24v32.4531c-19.6377 17.5781 -32 43.1172 -32 71.5469v32h-8c-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24h8v144c0 44.1123 35.8877 80 80 80c27.2119 0 51.2812 -13.667 65.7393 -34.4873\nc21.8838 6.06445 46.2285 1.10449 64.1777 -15.3643c4.71289 4.1748 11.916 4.02051 16.4277 -0.491211l11.3145 -11.3145c4.68555 -4.68652 4.68555 -12.2852 0 -16.9707l-95.0303 -95.0293c-4.68652 -4.68555 -12.2852 -4.68555 -16.9707 0l-11.3145 11.3145\nc-4.51172 4.51172 -4.66699 11.7148 -0.491211 16.4277c-21.5244 23.459 -23.3291 57.8281 -6.83789 83.0352c-5.68262 8.93457 -15.6641 14.8799 -27.0146 14.8799c-17.6445 0 -32 -14.3555 -32 -32v-144h408z\" />\n    <glyph glyph-name=\"podcast\" unicode=\"&#xf2ce;\" horiz-adv-x=\"448\" \nd=\"M267.429 -40.5635c-5.14258 -19.0098 -24.5703 -23.4365 -43.4287 -23.4365c-18.8574 0 -38.2861 4.42676 -43.4277 23.4365c-7.64551 28.4297 -20.5723 99.665 -20.5723 132.813c0 35.1562 31.1416 43.75 64 43.75s64 -8.59375 64 -43.75\nc0 -32.9492 -12.8711 -104.179 -20.5713 -132.813zM156.867 159.446c2.6748 -2.61914 2.39941 -6.98535 -0.628906 -9.18555c-9.3125 -6.76465 -16.4609 -15.3418 -21.2354 -25.3623c-1.74219 -3.65723 -6.5 -4.6582 -9.45312 -1.8877\nc-28.0176 26.2891 -45.5498 63.6279 -45.5498 104.989c0 80.7852 66.8691 146.247 148.163 143.941c76.1982 -2.16113 137.938 -64.1631 139.793 -140.369c1.04199 -42.7822 -16.6846 -81.5225 -45.5107 -108.565c-2.95215 -2.76855 -7.70801 -1.7627 -9.44922 1.8916\nc-4.77441 10.0195 -11.9219 18.5977 -21.2344 25.3623c-3.02832 2.20117 -3.30273 6.56738 -0.62793 9.1875c17.8018 17.4355 28.8662 41.7246 28.8662 68.5518c0 54.1934 -45.1377 98.042 -99.793 95.9258c-49.7295 -1.9248 -90.0703 -42.1572 -92.124 -91.8809\nc-1.17383 -28.4258 10.0908 -54.291 28.7842 -72.5986zM224 448c123.815 0 224 -100.205 224 -224c0 -90.1865 -52.7734 -165.727 -125.739 -201.407c-4.33203 -2.11914 -9.2666 1.54297 -8.53516 6.31055c2.55566 16.6416 4.625 33.1924 5.62402 47.2295\nc48.4922 31.377 80.6504 85.9355 80.6504 147.867c0 97.2031 -79.207 176.253 -176.468 175.999c-96.2393 -0.250977 -174.938 -78.6621 -175.529 -174.899c-0.376953 -61.3311 30.7871 -115.541 78.1875 -147.347c1.52832 -1.02637 2.53125 -2.67578 2.67773 -4.51172\nc1.06348 -13.3936 3.02344 -28.8271 5.40625 -44.3389c0.731445 -4.7666 -4.20215 -8.42871 -8.53516 -6.31055c-73.1377 35.7607 -125.739 111.416 -125.739 201.408c0 123.815 100.204 224 224 224zM224 288c35.3457 0 64 -28.6543 64 -64s-28.6543 -64 -64 -64\ns-64 28.6543 -64 64s28.6543 64 64 64z\" />\n    <glyph glyph-name=\"window-maximize\" unicode=\"&#xf2d0;\" \nd=\"M464 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h416zM448 256v84c0 6.59961 -5.40039 12 -12 12h-360c-6.59961 0 -12 -5.40039 -12 -12v-84h384z\" />\n    <glyph glyph-name=\"window-minimize\" unicode=\"&#xf2d1;\" \nd=\"M464 96c26.5 0 48 -21.5 48 -48v-32c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v32c0 26.5 21.5 48 48 48h416z\" />\n    <glyph glyph-name=\"window-restore\" unicode=\"&#xf2d2;\" \nd=\"M512 400v-288c0 -26.5 -21.5 -48 -48 -48h-48v208c0 44.0996 -35.9004 80 -80 80h-208v48c0 26.5 21.5 48 48 48h288c26.5 0 48 -21.5 48 -48zM384 272v-288c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v288c0 26.5 21.5 48 48 48h288\nc26.5 0 48 -21.5 48 -48zM316 244c0 6.59961 -5.40039 12 -12 12h-228c-6.59961 0 -12 -5.40039 -12 -12v-52h252v52z\" />\n    <glyph glyph-name=\"microchip\" unicode=\"&#xf2db;\" \nd=\"M416 400v-416c0 -26.5098 -21.4902 -48 -48 -48h-224c-26.5098 0 -48 21.4902 -48 48v416c0 26.5098 21.4902 48 48 48h224c26.5098 0 48 -21.4902 48 -48zM512 342v-12c0 -3.31152 -2.68848 -6 -6 -6h-18v-6c0 -3.31152 -2.68848 -6 -6 -6h-42v48h42\nc3.31152 0 6 -2.68848 6 -6v-6h18c3.31152 0 6 -2.68848 6 -6zM512 246v-12c0 -3.31152 -2.68848 -6 -6 -6h-18v-6c0 -3.31152 -2.68848 -6 -6 -6h-42v48h42c3.31152 0 6 -2.68848 6 -6v-6h18c3.31152 0 6 -2.68848 6 -6zM512 150v-12c0 -3.31152 -2.68848 -6 -6 -6h-18v-6\nc0 -3.31152 -2.68848 -6 -6 -6h-42v48h42c3.31152 0 6 -2.68848 6 -6v-6h18c3.31152 0 6 -2.68848 6 -6zM512 54v-12c0 -3.31152 -2.68848 -6 -6 -6h-18v-6c0 -3.31152 -2.68848 -6 -6 -6h-42v48h42c3.31152 0 6 -2.68848 6 -6v-6h18c3.31152 0 6 -2.68848 6 -6zM30 72h42\nv-48h-42c-3.31152 0 -6 2.68848 -6 6v6h-18c-3.31152 0 -6 2.68848 -6 6v12c0 3.31152 2.68848 6 6 6h18v6c0 3.31152 2.68848 6 6 6zM30 168h42v-48h-42c-3.31152 0 -6 2.68848 -6 6v6h-18c-3.31152 0 -6 2.68848 -6 6v12c0 3.31152 2.68848 6 6 6h18v6\nc0 3.31152 2.68848 6 6 6zM30 264h42v-48h-42c-3.31152 0 -6 2.68848 -6 6v6h-18c-3.31152 0 -6 2.68848 -6 6v12c0 3.31152 2.68848 6 6 6h18v6c0 3.31152 2.68848 6 6 6zM30 360h42v-48h-42c-3.31152 0 -6 2.68848 -6 6v6h-18c-3.31152 0 -6 2.68848 -6 6v12\nc0 3.31152 2.68848 6 6 6h18v6c0 3.31152 2.68848 6 6 6z\" />\n    <glyph glyph-name=\"snowflake\" unicode=\"&#xf2dc;\" horiz-adv-x=\"448\" \nd=\"M440.3 102.8c7.40039 -4.2002 9.90039 -13.7002 5.60059 -21l-15.5 -26.7998c-4.30078 -7.40039 -13.7002 -10 -21.1006 -5.7002l-33.7998 19.5l7 -26c2.2002 -8.2002 -2.7002 -16.7002 -10.9004 -18.8994l-14.8994 -4\nc-8.2002 -2.2002 -16.7002 2.69922 -18.9004 10.8994l-19 70.7998l-62.7998 36.2002v-77.5l53.4004 -53.7002c6.19922 -6.19922 6.19922 -16.3994 0 -22.5996l-11.3008 -11.2998c-6.19922 -6.2002 -16.3994 -6.2002 -22.5996 0l-19.7002 19.7002v-40.4004\nc0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v40.2998l-19.7002 -19.7002c-6.19922 -6.19922 -16.3994 -6.19922 -22.5996 0l-11.2998 11.3008c-6.2998 6.19922 -6.2998 16.3994 0 22.5996l53.7002 53.7002v77.5l-62.8008 -36.2002l-19 -70.7998\nc-2.19922 -8.2002 -10.6992 -13.1006 -18.8994 -10.9004l-14.9004 4c-8.2002 2.2002 -13.0996 10.7002 -10.8994 18.9004l7 26l-33.8008 -19.5c-7.39941 -4.2002 -16.7998 -1.7002 -21.0996 5.7002l-15.5 26.7998c-4.2002 7.39941 -1.7002 16.7998 5.7002 21.0996\nl33.7998 19.6006l-26 7c-8.2002 2.19922 -13.0996 10.6992 -10.9004 18.8994l4 14.9004c2.2002 8.2002 10.7002 13.0996 18.9004 10.8994l70.7998 -19l63.7998 36.9004l-63.7998 36.9004l-70.7998 -19c-8.2002 -2.2002 -16.7002 2.69922 -18.9004 10.8994l-4 14.9004\nc-2.19922 8.2998 2.7002 16.7998 11 19l26 7l-33.7998 19.5c-7.39941 4.2998 -10 13.7002 -5.7002 21.0996l15.5 26.7002c4.30078 7.40039 13.7002 10 21.1006 5.7002l33.7998 -19.5l-7 26c-2.2002 8.2002 2.7002 16.7002 10.9004 18.8994l14.8994 4\nc8.2002 2.2002 16.7002 -2.69922 18.9004 -10.8994l19 -70.7998l62.7998 -36.2002v77.5l-53.7002 53.7002c-6.2998 6.19922 -6.2998 16.3994 0 22.5996l11.4004 11.2998c6.2002 6.2002 16.3994 6.2002 22.5996 0l19.7002 -19.7002v40.4004c0 8.7998 7.2002 16 16 16h32\nc8.7998 0 16 -7.2002 16 -16v-40.4004l19.7998 19.7002c6.2002 6.2002 16.4004 6.2002 22.6006 0l11.2998 -11.2998c6.2002 -6.2002 6.2002 -16.4004 0 -22.5996l-53.7002 -53.7002v-77.5l62.7998 36.2002l19 70.7998c2.2002 8.2002 10.7002 13.0996 18.9004 10.8994\nl14.8994 -4c8.2002 -2.19922 13.1006 -10.6992 10.9004 -18.8994l-7 -26l33.7998 19.5c7.40039 4.2002 16.7998 1.7002 21.1006 -5.7002l15.5 -26.7998c4.19922 -7.40039 1.69922 -16.7998 -5.7002 -21.1006l-33.7998 -19.5l26 -7\nc8.19922 -2.19922 13.0996 -10.6992 10.8994 -18.8994l-4 -14.9004c-2.2002 -8.2002 -10.7002 -13.0996 -18.8994 -10.8994l-70.8008 19l-63.7998 -36.9004l63.9004 -37l70.7998 19c8.2002 2.2002 16.7002 -2.7002 18.9004 -10.9004l4 -14.8994\nc2.19922 -8.2002 -2.7002 -16.7002 -10.9004 -18.9004l-26 -7z\" />\n    <glyph glyph-name=\"utensil-spoon\" unicode=\"&#xf2e5;\" \nd=\"M480.1 416.1c55.1006 -55 34.5 -164.899 -28.5 -227.8c-49.2998 -49.2998 -110 -55.0996 -160.399 -28.7998l-192.4 -214.4c-10.3994 -11.5996 -28.5 -12.0996 -39.5 -1.09961l-51.2998 51.2998c-11.0996 11 -10.5996 29 1 39.5l214.5 192.4\nc-26.2998 50.3994 -20.5 111.1 28.7998 160.399c62.9004 63 172.8 83.6006 227.8 28.5z\" />\n    <glyph glyph-name=\"utensils\" unicode=\"&#xf2e7;\" horiz-adv-x=\"416\" \nd=\"M207.9 432.8c0.799805 -4.7002 16.0996 -94.5 16.0996 -128.8c0 -52.2998 -27.7998 -89.5996 -68.9004 -104.6l12.9004 -238.101c0.700195 -13.7002 -10.2002 -25.2998 -24 -25.2998h-64c-13.7002 0 -24.7002 11.5 -24 25.2998l12.9004 238.101\nc-41.2002 15 -68.9004 52.3994 -68.9004 104.6c0 34.4004 15.2998 124.1 16.0996 128.8c3.2002 20.2998 45.3008 20.6006 47.9004 -1.09961v-141.2c1.2998 -3.40039 15.0996 -3.2002 16 0c1.40039 25.2998 7.90039 139.2 8 141.8c3.2998 20.7998 44.7002 20.7998 47.9004 0\nc0.199219 -2.7002 6.59961 -116.5 8 -141.8c0.899414 -3.2002 14.7998 -3.40039 16 0v141.2c2.59961 21.5996 44.7998 21.3994 48 1.09961zM327.1 147.1c-156.5 122.4 -17.5996 300.9 64.9004 300.9c13.2998 0 24 -10.7998 24 -24v-464c0 -13.2998 -10.7002 -24 -24 -24h-56\nc-14 0 -25.0996 12 -23.9004 26z\" />\n    <glyph glyph-name=\"undo-alt\" unicode=\"&#xf2ea;\" \nd=\"M255.545 440c136.809 0.245117 248.456 -111.193 248.455 -248.002c-0.000976562 -136.965 -111.034 -247.998 -248 -247.998c-63.9258 0 -122.202 24.1865 -166.178 63.9082c-5.11328 4.61816 -5.35449 12.5605 -0.482422 17.4326l39.6621 39.6621\nc4.46191 4.46094 11.625 4.71387 16.3682 0.552734c30.6328 -26.8779 69.5029 -41.5557 110.63 -41.5557c93.8164 0 167.236 75.9912 167.994 166.552c0.798828 95.4648 -77.0859 170.24 -169.484 169.442c-42.4287 -0.366211 -82.3662 -16.374 -113.229 -45.2734\nl41.75 -41.75c15.1191 -15.1201 4.41113 -40.9707 -16.9717 -40.9707h-134.059c-13.2549 0 -24 10.7451 -24 24v134.059c0 21.3828 25.8506 32.0908 40.9707 16.9707l35.7139 -35.7139c44.4229 42.4512 104.592 68.5654 170.86 68.6846z\" />\n    <glyph glyph-name=\"trash-alt\" unicode=\"&#xf2ed;\" horiz-adv-x=\"448\" \nd=\"M32 -16v336h384v-336c0 -26.4961 -21.5039 -48 -48 -48h-288c-26.4961 0 -48 21.5039 -48 48zM304 240v-224c0 -8.83203 7.16797 -16 16 -16s16 7.16797 16 16v224c0 8.83203 -7.16797 16 -16 16s-16 -7.16797 -16 -16zM208 240v-224c0 -8.83203 7.16797 -16 16 -16\ns16 7.16797 16 16v224c0 8.83203 -7.16797 16 -16 16s-16 -7.16797 -16 -16zM112 240v-224c0 -8.83203 7.16797 -16 16 -16s16 7.16797 16 16v224c0 8.83203 -7.16797 16 -16 16s-16 -7.16797 -16 -16zM432 416c8.83203 0 16 -7.16797 16 -16v-32\nc0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h120l9.40039 18.7002c3.58984 7.3418 13.1357 13.2998 21.3086 13.2998h0.0908203h114.3h0.0175781c8.20215 0 17.8262 -5.95801 21.4824 -13.2998l9.40039 -18.7002\nh120z\" />\n    <glyph glyph-name=\"sync-alt\" unicode=\"&#xf2f1;\" \nd=\"M370.72 314.72c-31.2617 29.2725 -71.832 45.3184 -114.872 45.2803c-77.458 -0.0683594 -144.328 -53.1777 -162.791 -126.85c-1.34375 -5.36328 -6.12207 -9.15039 -11.6504 -9.15039h-57.3037c-7.49707 0 -13.1934 6.80664 -11.8066 14.1758\nc21.6367 114.9 122.518 201.824 243.704 201.824c66.4482 0 126.791 -26.1357 171.315 -68.6846l35.7148 35.7148c15.1191 15.1191 40.9697 4.41113 40.9697 -16.9717v-134.059c0 -13.2549 -10.7451 -24 -24 -24h-134.059c-21.3828 0 -32.0908 25.8506 -16.9717 40.9707z\nM32 152h134.059c21.3828 0 32.0908 -25.8506 16.9717 -40.9707l-41.75 -41.75c31.2617 -29.2734 71.835 -45.3193 114.876 -45.2803c77.418 0.0703125 144.314 53.1436 162.787 126.849c1.34375 5.36328 6.12207 9.15039 11.6504 9.15039h57.3047\nc7.49805 0 13.1934 -6.80664 11.8066 -14.1758c-21.6377 -114.898 -122.519 -201.822 -243.705 -201.822c-66.4482 0 -126.791 26.1357 -171.315 68.6846l-35.7148 -35.7148c-15.1191 -15.1191 -40.9697 -4.41113 -40.9697 16.9717v134.059c0 13.2549 10.7451 24 24 24z\" />\n    <glyph glyph-name=\"stopwatch\" unicode=\"&#xf2f2;\" horiz-adv-x=\"448\" \nd=\"M432 144c0 -114.9 -93.0996 -208 -208 -208s-208 93.0996 -208 208c0 104 76.2998 190.2 176 205.5v34.5h-28c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h120c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-28v-34.5\nc37.5 -5.7998 71.7002 -21.5996 99.7002 -44.5996l27.5 27.5c4.7002 4.69922 12.2998 4.69922 17 0l28.2998 -28.3008c4.7002 -4.69922 4.7002 -12.2998 0 -17l-29.4004 -29.3994l-0.599609 -0.600586c21.2002 -32.3994 33.5 -71.2998 33.5 -113.1zM256 108v151.5\nc0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-151.5c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12z\" />\n    <glyph glyph-name=\"sign-out-alt\" unicode=\"&#xf2f5;\" \nd=\"M497 175l-168 -168c-15 -15 -41 -4.5 -41 17v96h-136c-13.2998 0 -24 10.7002 -24 24v96c0 13.2998 10.7002 24 24 24h136v96c0 21.4004 25.9004 32 41 17l168 -168c9.2998 -9.40039 9.2998 -24.5996 0 -34zM192 12c0 -6.59961 -5.40039 -12 -12 -12h-84\nc-53 0 -96 43 -96 96v192c0 53 43 96 96 96h84c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-84c-17.7002 0 -32 -14.2998 -32 -32v-192c0 -17.7002 14.2998 -32 32 -32h84c6.59961 0 12 -5.40039 12 -12v-40z\" />\n    <glyph glyph-name=\"sign-in-alt\" unicode=\"&#xf2f6;\" \nd=\"M416 0h-84c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h84c17.7002 0 32 14.2998 32 32v192c0 17.7002 -14.2998 32 -32 32h-84c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h84c53 0 96 -43 96 -96v-192c0 -53 -43 -96 -96 -96z\nM369 201c9.2998 -9.40039 9.2998 -24.5996 0 -34l-168 -168c-15 -15 -41 -4.5 -41 17v96h-136c-13.2998 0 -24 10.7002 -24 24v96c0 13.2998 10.7002 24 24 24h136v96c0 21.5 26 32 41 17z\" />\n    <glyph glyph-name=\"redo-alt\" unicode=\"&#xf2f9;\" \nd=\"M256.455 440c66.2686 -0.119141 126.437 -26.2334 170.859 -68.6846l35.7148 35.7148c15.1201 15.1191 40.9707 4.41113 40.9707 -16.9717v-134.059c0 -13.2549 -10.7451 -24 -24 -24h-134.059c-21.3828 0 -32.0908 25.8506 -16.9717 40.9707l41.75 41.75\nc-30.8633 28.8994 -70.8008 44.9072 -113.229 45.2734c-92.3984 0.797852 -170.283 -73.9775 -169.484 -169.442c0.757812 -90.5605 74.1777 -166.552 167.994 -166.552c41.127 0 79.9971 14.6777 110.629 41.5557c4.74316 4.16113 11.9062 3.9082 16.3682 -0.552734\nl39.6621 -39.6621c4.87207 -4.87207 4.63086 -12.8145 -0.482422 -17.4326c-43.9746 -39.7217 -102.251 -63.9082 -166.177 -63.9082c-136.966 0 -247.999 111.033 -248 247.998c-0.000976562 136.809 111.646 248.247 248.455 248.002z\" />\n    <glyph glyph-name=\"poo\" unicode=\"&#xf2fe;\" \nd=\"M451.4 78.9004c34.2998 -5.5 60.5996 -35 60.5996 -70.9004c0 -39.7998 -32.2002 -72 -72 -72h-368c-39.7998 0 -72 32.2002 -72 72c0 35.9004 26.2998 65.4004 60.5996 70.9004c-17.2998 13.0996 -28.5996 33.6992 -28.5996 57.0996c0 39.7998 32.2002 72 72 72h14.0996\nc-13.3994 11.7002 -22.0996 28.7998 -22.0996 48c0 35.2998 28.7002 64 64 64h16c44.2002 0 80 35.7998 80 80c0 17.4004 -5.7002 33.4004 -15.0996 46.5c4.89941 0.799805 9.89941 1.5 15.0996 1.5c53 0 96 -43 96 -96c0 -11.2998 -2.2998 -21.9004 -5.90039 -32h5.90039\nc35.2998 0 64 -28.7002 64 -64c0 -19.2002 -8.7002 -36.2998 -22.0996 -48h14.0996c39.7998 0 72 -32.2002 72 -72c0 -23.4004 -11.2998 -44 -28.5996 -57.0996zM192 192c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32s32 14.2998 32 32s-14.2998 32 -32 32z\nM351.5 53c2 5.2998 -2 11 -7.7998 11h-175.4c-5.7998 0 -9.7998 -5.7002 -7.7998 -11c10.5 -27.9004 58.5 -53 95.5 -53s85 25.0996 95.5 53zM320 128c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32z\" />\n    <glyph glyph-name=\"images\" unicode=\"&#xf302;\" horiz-adv-x=\"576\" \nd=\"M480 32v-16c0 -26.5098 -21.4902 -48 -48 -48h-384c-26.5098 0 -48 21.4902 -48 48v256c0 26.5098 21.4902 48 48 48h16v-208c0 -44.1123 35.8877 -80 80 -80h336zM576 112c0 -26.5098 -21.4902 -48 -48 -48h-384c-26.5098 0 -48 21.4902 -48 48v256\nc0 26.5098 21.4902 48 48 48h384c26.5098 0 48 -21.4902 48 -48v-256zM256 320c0 26.5098 -21.4902 48 -48 48s-48 -21.4902 -48 -48s21.4902 -48 48 -48s48 21.4902 48 48zM160 176v-48h352v112l-87.5137 87.5146c-4.6875 4.68652 -12.2852 4.68652 -16.9717 0\nl-135.515 -135.515l-39.5137 39.5146c-4.6875 4.68652 -12.2852 4.68652 -16.9717 0z\" />\n    <glyph glyph-name=\"pencil-alt\" unicode=\"&#xf303;\" \nd=\"M497.9 305.9l-46.1006 -46.1006c-4.7002 -4.7002 -12.2998 -4.7002 -17 0l-111 111c-4.7002 4.7002 -4.7002 12.2998 0 17l46.1006 46.1006c18.6992 18.6992 49.0996 18.6992 67.8994 0l60.1006 -60.1006c18.7998 -18.7002 18.7998 -49.0996 0 -67.8994zM284.2 348.2\nc4.7002 4.7002 12.2998 4.7002 17.0996 0l111 -111c4.7002 -4.7002 4.7002 -12.2998 0 -17l-262.6 -262.601l-121.5 -21.2998c-16.4004 -2.7998 -30.7002 11.4004 -27.7998 27.7998l21.1992 121.5zM124.1 108.1c5.5 -5.5 14.3008 -5.5 19.8008 0l154 154\nc5.5 5.5 5.5 14.3008 0 19.8008s-14.3008 5.5 -19.8008 0l-154 -154c-5.5 -5.5 -5.5 -14.3008 0 -19.8008zM88 24v48h-36.2998l-11.2998 -64.5l31.0996 -31.0996l64.5 11.2998v36.2998h-48z\" />\n    <glyph glyph-name=\"pen\" unicode=\"&#xf304;\" \nd=\"M290.74 354.76l128.02 -128.02l-277.99 -277.99l-114.14 -12.5996c-15.2803 -1.69043 -28.1895 11.2295 -26.4902 26.5098l12.7002 114.22zM497.94 373.82c18.75 -18.75 18.75 -49.1504 0 -67.9102l-56.5508 -56.5498l-128.02 128.02l56.5498 56.5498\nc18.75 18.75 49.1602 18.75 67.9102 0z\" />\n    <glyph glyph-name=\"pen-alt\" unicode=\"&#xf305;\" \nd=\"M497.94 373.83c18.75 -18.7598 18.75 -49.1602 0 -67.9102l-56.5508 -56.5498l-128.02 128.02l56.5498 56.5508c18.75 18.75 49.1602 18.75 67.9102 0zM251.14 394.36l84.8506 -84.8506l82.7695 -82.7695l-196.79 -196.79\nc-44.8223 -44.8203 -132.335 -86.8428 -195.34 -93.7998c-15.2803 -1.69043 -28.1895 11.2295 -26.4902 26.5098l0.0302734 0.229492c7.00195 62.9189 49.0156 150.315 93.7803 195.08l151.56 151.55l-22.6299 22.6201l-101.82 -101.819\nc-6.25 -6.25 -16.3799 -6.25 -22.6299 0l-22.6299 22.6299c-6.25 6.24023 -6.25 16.3701 0 22.6201l118.78 118.79c15.6201 15.6201 40.9395 15.6201 56.5596 0z\" />\n    <glyph glyph-name=\"long-arrow-alt-down\" unicode=\"&#xf309;\" horiz-adv-x=\"256\" \nd=\"M168 102.059h46.0576c21.3828 0 32.0908 -25.8516 16.9717 -40.9707l-86.0596 -86.0586c-9.37207 -9.37305 -24.5674 -9.37305 -33.9404 0l-86.0596 86.0586c-15.1191 15.1201 -4.41113 40.9707 16.9717 40.9707h46.0586v301.941c0 6.62695 5.37305 12 12 12h56\nc6.62695 0 12 -5.37305 12 -12v-301.941z\" />\n    <glyph glyph-name=\"long-arrow-alt-left\" unicode=\"&#xf30a;\" horiz-adv-x=\"448\" \nd=\"M134.059 152v-46.0576c0 -21.3828 -25.8516 -32.0908 -40.9707 -16.9717l-86.0586 86.0596c-9.37305 9.37207 -9.37305 24.5674 0 33.9404l86.0586 86.0596c15.1201 15.1191 40.9707 4.41113 40.9707 -16.9717v-46.0586h301.941c6.62695 0 12 -5.37305 12 -12v-56\nc0 -6.62695 -5.37305 -12 -12 -12h-301.941z\" />\n    <glyph glyph-name=\"long-arrow-alt-right\" unicode=\"&#xf30b;\" horiz-adv-x=\"448\" \nd=\"M313.941 232v46.0576c0 21.3828 25.8516 32.0908 40.9707 16.9717l86.0586 -86.0596c9.37305 -9.37207 9.37305 -24.5674 0 -33.9404l-86.0586 -86.0596c-15.1201 -15.1191 -40.9707 -4.41113 -40.9707 16.9717v46.0586h-301.941c-6.62695 0 -12 5.37305 -12 12v56\nc0 6.62695 5.37305 12 12 12h301.941z\" />\n    <glyph glyph-name=\"long-arrow-alt-up\" unicode=\"&#xf30c;\" horiz-adv-x=\"256\" \nd=\"M88 281.941h-46.0576c-21.3828 0 -32.0908 25.8516 -16.9717 40.9707l86.0596 86.0586c9.37207 9.37305 24.5674 9.37305 33.9404 0l86.0596 -86.0586c15.1191 -15.1201 4.41113 -40.9707 -16.9717 -40.9707h-46.0586v-301.941c0 -6.62695 -5.37305 -12 -12 -12h-56\nc-6.62695 0 -12 5.37305 -12 12v301.941z\" />\n    <glyph glyph-name=\"expand-arrows-alt\" unicode=\"&#xf31e;\" horiz-adv-x=\"448\" \nd=\"M448 104v-112v-0.0605469c0 -13.2148 -10.7246 -23.9395 -23.9395 -23.9395h-0.0605469h-112c-21.3896 0 -32.0898 25.9004 -17 41l36.2002 36.2002l-107.2 107.2l-107.23 -107.301l36.2305 -36.0996c15.0898 -15.0996 4.38965 -41 -17 -41h-112h-0.0605469\nc-13.2148 0 -23.9395 10.7246 -23.9395 23.9395v0.0605469v112c0 21.4004 25.8896 32.0996 41 17l36.1904 -36.2002l107.27 107.2l-107.28 107.3l-36.1797 -36.2998c-15.0996 -15.0996 -41 -4.40039 -41 17v112v0.0605469c0 13.2148 10.7246 23.9395 23.9395 23.9395\nh0.0605469h112c21.3896 0 32.0898 -25.9004 17 -41l-36.2002 -36.2002l107.2 -107.2l107.23 107.301l-36.2305 36.0996c-15.0898 15.0996 -4.38965 41 17 41h112h0.0605469c13.2148 0 23.9395 -10.7246 23.9395 -23.9395v-0.0605469v-112\nc0 -21.4004 -25.8896 -32.0996 -41 -17l-36.1904 36.2002l-107.27 -107.2l107.28 -107.3l36.1797 36.2002c15.0996 15.1992 41 4.5 41 -16.9004z\" />\n    <glyph glyph-name=\"clipboard\" unicode=\"&#xf328;\" horiz-adv-x=\"384\" \nd=\"M384 336v-352c0 -26.5098 -21.4902 -48 -48 -48h-288c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h80c0 35.29 28.71 64 64 64s64 -28.71 64 -64h80c26.5098 0 48 -21.4902 48 -48zM192 408c-13.2549 0 -24 -10.7451 -24 -24s10.7451 -24 24 -24\ns24 10.7451 24 24s-10.7451 24 -24 24zM288 294v20c0 3.31152 -2.68848 6 -6 6h-180c-3.31152 0 -6 -2.68848 -6 -6v-20c0 -3.31152 2.68848 -6 6 -6h180c3.31152 0 6 2.68848 6 6z\" />\n    <glyph glyph-name=\"arrows-alt-h\" unicode=\"&#xf337;\" \nd=\"M377.941 278.059c0 21.3828 25.8516 32.0908 40.9707 16.9707l86.0586 -86.0596c9.37305 -9.37305 9.37305 -24.5674 0 -33.9404l-86.0586 -86.0596c-15.1201 -15.1191 -40.9707 -4.41113 -40.9707 16.9717v46.0586h-243.883v-46.0576\nc0 -21.3828 -25.8516 -32.0908 -40.9707 -16.9717l-86.0586 86.0596c-9.37305 9.37305 -9.37305 24.5674 0 33.9404l86.0586 86.0596c15.1201 15.1191 40.9707 4.41113 40.9707 -16.9717v-46.0586h243.883v46.0586z\" />\n    <glyph glyph-name=\"arrows-alt-v\" unicode=\"&#xf338;\" horiz-adv-x=\"256\" \nd=\"M214.059 70.0586c21.3828 0 32.0908 -25.8516 16.9707 -40.9707l-86.0596 -86.0586c-9.37305 -9.37305 -24.5674 -9.37305 -33.9404 0l-86.0596 86.0586c-15.1191 15.1201 -4.41113 40.9707 16.9717 40.9707h46.0586v243.883h-46.0576\nc-21.3828 0 -32.0908 25.8516 -16.9717 40.9707l86.0596 86.0586c9.37305 9.37305 24.5674 9.37305 33.9404 0l86.0596 -86.0586c15.1191 -15.1201 4.41113 -40.9707 -16.9717 -40.9707h-46.0586v-243.883h46.0586z\" />\n    <glyph glyph-name=\"arrow-alt-circle-down\" unicode=\"&#xf358;\" \nd=\"M504 192c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248s248 -111 248 -248zM212 308v-116h-70.9004c-10.6992 0 -16.0996 -13 -8.5 -20.5l114.9 -114.3c4.7002 -4.7002 12.2002 -4.7002 16.9004 0l114.899 114.3c7.60059 7.59961 2.2002 20.5 -8.5 20.5\nh-70.7998v116c0 6.59961 -5.40039 12 -12 12h-64c-6.59961 0 -12 -5.40039 -12 -12z\" />\n    <glyph glyph-name=\"arrow-alt-circle-left\" unicode=\"&#xf359;\" \nd=\"M256 -56c-137 0 -248 111 -248 248s111 248 248 248s248 -111 248 -248s-111 -248 -248 -248zM372 236h-116v70.9004c0 10.6992 -13 16.0996 -20.5 8.5l-114.3 -114.9c-4.7002 -4.7002 -4.7002 -12.2002 0 -16.9004l114.3 -114.899\nc7.59961 -7.60059 20.5 -2.2002 20.5 8.5v70.7998h116c6.59961 0 12 5.40039 12 12v64c0 6.59961 -5.40039 12 -12 12z\" />\n    <glyph glyph-name=\"arrow-alt-circle-right\" unicode=\"&#xf35a;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM140 148h116v-70.9004c0 -10.6992 13 -16.0996 20.5 -8.5l114.3 114.9c4.7002 4.7002 4.7002 12.2002 0 16.9004l-114.3 115c-7.59961 7.59961 -20.5 2.19922 -20.5 -8.5\nv-70.9004h-116c-6.59961 0 -12 -5.40039 -12 -12v-64c0 -6.59961 5.40039 -12 12 -12z\" />\n    <glyph glyph-name=\"arrow-alt-circle-up\" unicode=\"&#xf35b;\" \nd=\"M8 192c0 137 111 248 248 248s248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248zM300 76v116h70.9004c10.6992 0 16.0996 13 8.5 20.5l-114.9 114.3c-4.7002 4.7002 -12.2002 4.7002 -16.9004 0l-115 -114.3c-7.59961 -7.59961 -2.19922 -20.5 8.5 -20.5\nh70.9004v-116c0 -6.59961 5.40039 -12 12 -12h64c6.59961 0 12 5.40039 12 12z\" />\n    <glyph glyph-name=\"external-link-alt\" unicode=\"&#xf35d;\" horiz-adv-x=\"576\" \nd=\"M576 424v-127.984c0 -21.4609 -25.96 -31.9795 -40.9707 -16.9707l-35.707 35.709l-243.523 -243.522c-9.37305 -9.37305 -24.5674 -9.37305 -33.9404 0l-22.627 22.627c-9.37305 9.37305 -9.37305 24.5684 0 33.9404l243.524 243.525l-35.7031 35.7051\nc-15.0703 15.0703 -4.39648 40.9707 16.9717 40.9707h127.976c13.2549 0 24 -10.7451 24 -24zM407.029 177.206c15.1191 15.1201 40.9707 4.41211 40.9707 -16.9697v-176.236c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352\nc0 26.5098 21.4902 48 48 48h296c21.3809 0 32.0889 -25.8506 16.9697 -40.9707l-16 -16c-3.87988 -3.87988 -11.4824 -7.0293 -16.9697 -7.0293h-264v-320h320v144.235v0.000976562c0 5.4873 3.14941 13.0898 7.0293 16.9697z\" />\n    <glyph glyph-name=\"external-link-square-alt\" unicode=\"&#xf360;\" horiz-adv-x=\"448\" \nd=\"M448 368v-352c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h352c26.5098 0 48 -21.4902 48 -48zM360 352h-111.971c-21.3135 0 -32.0801 -25.8613 -16.9717 -40.9707l31.9844 -31.9873l-195.527 -195.527\nc-4.68555 -4.68555 -4.68555 -12.2832 0 -16.9707l31.0293 -31.0293c4.6875 -4.68555 12.2852 -4.68555 16.9707 0l195.526 195.526l31.9883 -31.9912c15.0283 -15.0264 40.9707 -4.47461 40.9707 16.9717v111.979c0 13.2549 -10.7451 24 -24 24z\" />\n    <glyph glyph-name=\"exchange-alt\" unicode=\"&#xf362;\" \nd=\"M0 280v16c0 13.2549 10.7451 24 24 24h360v48c0 21.3672 25.8994 32.042 40.9707 16.9707l80 -80c9.37207 -9.37305 9.37207 -24.5684 0 -33.9404l-80 -80c-15.0146 -15.0127 -40.9707 -4.48633 -40.9707 16.9697v48h-360c-13.2549 0 -24 10.7451 -24 24zM488 128\nc13.2549 0 24 -10.7451 24 -24v-16c0 -13.2549 -10.7451 -24 -24 -24h-360v-48c0 -21.4365 -25.9434 -31.9971 -40.9707 -16.9697l-80 80c-9.37207 9.37207 -9.37207 24.5674 0 33.9404l80 80c15.1084 15.1094 40.9707 4.34375 40.9707 -16.9707v-48h360z\" />\n    <glyph glyph-name=\"cloud-download-alt\" unicode=\"&#xf381;\" horiz-adv-x=\"640\" \nd=\"M537.6 221.4c58.4004 -11.8008 102.4 -63.5 102.4 -125.4c0 -70.7002 -57.2998 -128 -128 -128h-368c-79.5 0 -144 64.5 -144 144c0 62.7998 40.2002 116.2 96.2002 135.9c-0.100586 2.69922 -0.200195 5.39941 -0.200195 8.09961c0 88.4004 71.5996 160 160 160\nc59.2998 0 111 -32.2002 138.7 -80.2002c15.2002 10.2002 33.5996 16.2002 53.2998 16.2002c53 0 96 -43 96 -96c0 -12.2002 -2.2998 -23.9004 -6.40039 -34.5996zM404.7 132.7c10.0996 10.0996 2.89941 27.2998 -11.2998 27.2998h-65.4004v112c0 8.7998 -7.2002 16 -16 16\nh-48c-8.7998 0 -16 -7.2002 -16 -16v-112h-65.4004c-14.1992 0 -21.3994 -17.2002 -11.2998 -27.2998l105.4 -105.4c6.2002 -6.2002 16.3994 -6.2002 22.5996 0z\" />\n    <glyph glyph-name=\"cloud-upload-alt\" unicode=\"&#xf382;\" horiz-adv-x=\"640\" \nd=\"M537.6 221.4c58.4004 -11.8008 102.4 -63.5 102.4 -125.4c0 -70.7002 -57.2998 -128 -128 -128h-368c-79.5 0 -144 64.5 -144 144c0 62.7998 40.2002 116.2 96.2002 135.9c-0.100586 2.69922 -0.200195 5.39941 -0.200195 8.09961c0 88.4004 71.5996 160 160 160\nc59.2998 0 111 -32.2002 138.7 -80.2002c15.2002 10.2002 33.5996 16.2002 53.2998 16.2002c53 0 96 -43 96 -96c0 -12.2002 -2.2998 -23.9004 -6.40039 -34.5996zM393.4 160c14.1992 0 21.3994 17.2002 11.2998 27.2998l-105.4 105.4\nc-6.2002 6.2002 -16.3994 6.2002 -22.5996 0l-105.4 -105.4c-10.0996 -10.0996 -3 -27.2998 11.2998 -27.2998h65.4004v-112c0 -8.7998 7.2002 -16 16 -16h48c8.7998 0 16 7.2002 16 16v112h65.4004z\" />\n    <glyph glyph-name=\"gem\" unicode=\"&#xf3a5;\" horiz-adv-x=\"576\" \nd=\"M485.5 448l90.5 -160h-101.1l-69.2002 160h79.7998zM357.5 448l69.2002 -160h-277.4l69.2002 160h139zM90.5 448h79.7998l-69.2002 -160h-101.1zM0 256h100.7l123 -251.7c1.5 -3.09961 -2.7002 -5.89941 -5 -3.2998zM148.2 256h279.6l-137 -318.2\nc-1 -2.39941 -4.5 -2.39941 -5.5 0zM352.3 4.2998l123 251.7h100.7l-218.7 -254.9c-2.2998 -2.69922 -6.5 0.100586 -5 3.2002z\" />\n    <glyph glyph-name=\"level-down-alt\" unicode=\"&#xf3be;\" horiz-adv-x=\"320\" \nd=\"M313.553 55.6689l-103.966 -112.003c-9.48535 -10.2139 -25.6758 -10.2295 -35.1738 0l-103.975 112.003c-14.2061 15.2998 -3.37695 40.3311 17.5869 40.3311h63.9746v272h-83.9756h-0.00195312c-2.74316 0 -6.54395 1.5752 -8.4834 3.51465l-56 56\nc-7.56055 7.55957 -2.20605 20.4854 8.48535 20.4854h195.976c13.2549 0 24 -10.7451 24 -24v-328h63.9658c20.8779 0 31.8516 -24.9688 17.5869 -40.3311z\" />\n    <glyph glyph-name=\"level-up-alt\" unicode=\"&#xf3bf;\" horiz-adv-x=\"320\" \nd=\"M313.553 328.331c14.2646 -15.3623 3.29102 -40.3311 -17.5869 -40.3311h-63.9658v-328c0 -13.2549 -10.7451 -24 -24 -24h-195.976c-10.6914 0 -16.0459 12.9258 -8.48535 20.4854l56 56c1.93945 1.93945 5.74023 3.51465 8.4834 3.51465h0.00195312h83.9756v272\nh-63.9746c-20.9639 0 -31.793 25.0312 -17.5869 40.3311l103.975 112.003c9.49805 10.2295 25.6885 10.2139 35.1738 0z\" />\n    <glyph glyph-name=\"lock-open\" unicode=\"&#xf3c1;\" horiz-adv-x=\"576\" \nd=\"M423.5 448c84 0.299805 152.5 -68 152.5 -152v-80c0 -13.2998 -10.7002 -24 -24 -24h-32c-13.2998 0 -24 10.7002 -24 24v80c0 39.9004 -32.7002 72.4004 -72.7002 72c-39.5996 -0.400391 -71.2998 -33.2998 -71.2998 -72.9004v-71.0996h48c26.5 0 48 -21.5 48 -48v-192\nc0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v192c0 26.5 21.5 48 48 48h224v70.5c0 84 67.5 153.2 151.5 153.5z\" />\n    <glyph glyph-name=\"map-marker-alt\" unicode=\"&#xf3c5;\" horiz-adv-x=\"384\" \nd=\"M172.268 -53.6699c-145.298 210.639 -172.268 232.257 -172.268 309.67c0 106.039 85.9609 192 192 192s192 -85.9609 192 -192c0 -77.4131 -26.9697 -99.0312 -172.268 -309.67c-9.53516 -13.7744 -29.9307 -13.7734 -39.4648 0zM192 176c44.1826 0 80 35.8174 80 80\ns-35.8174 80 -80 80s-80 -35.8174 -80 -80s35.8174 -80 80 -80z\" />\n    <glyph glyph-name=\"microphone-alt\" unicode=\"&#xf3c9;\" horiz-adv-x=\"352\" \nd=\"M336 256c8.83984 0 16 -7.16016 16 -16v-48c0 -88.9004 -66.29 -162.47 -152 -174.23v-33.7695h56c8.83984 0 16 -7.16016 16 -16v-16c0 -8.83984 -7.16016 -16 -16 -16h-160c-8.83984 0 -16 7.16016 -16 16v16c0 8.83984 7.16016 16 16 16h56v34.1504\nc-88.0303 12.1396 -152 92.0498 -152 181.689v40.1602c0 8.83984 7.16016 16 16 16h16c8.83984 0 16 -7.16016 16 -16v-42.2998c0 -66.8105 48.71 -126.59 115.21 -133.08c76.2998 -7.44043 140.79 52.5801 140.79 127.38v48c0 8.83984 7.16016 16 16 16h16zM176 96\nc-53.0195 0 -96 42.9805 -96 96v160c0 53.0195 42.9805 96 96 96s96 -42.9805 96 -96h-85.3301c-5.88965 0 -10.6699 -3.58008 -10.6699 -8v-16c0 -4.41992 4.78027 -8 10.6699 -8h85.3301v-32h-85.3301c-5.88965 0 -10.6699 -3.58008 -10.6699 -8v-16\nc0 -4.41992 4.78027 -8 10.6699 -8h85.3301v-32h-85.3301c-5.88965 0 -10.6699 -3.58008 -10.6699 -8v-16c0 -4.41992 4.78027 -8 10.6699 -8h85.3301c0 -53.0195 -42.9805 -96 -96 -96z\" />\n    <glyph glyph-name=\"mobile-alt\" unicode=\"&#xf3cd;\" horiz-adv-x=\"320\" \nd=\"M272 448c26.5 0 48 -21.5 48 -48v-416c0 -26.5 -21.5 -48 -48 -48h-224c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48h224zM160 -32c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM272 76v312\nc0 6.59961 -5.40039 12 -12 12h-200c-6.59961 0 -12 -5.40039 -12 -12v-312c0 -6.59961 5.40039 -12 12 -12h200c6.59961 0 12 5.40039 12 12z\" />\n    <glyph glyph-name=\"money-bill-alt\" unicode=\"&#xf3d1;\" horiz-adv-x=\"640\" \nd=\"M352 160c4.41992 0 8 -3.58008 8 -8v-16c0 -4.41992 -3.58008 -8 -8 -8h-64c-4.41992 0 -8 3.58008 -8 8v16c0 4.41992 3.58008 8 8 8h16v55.4404l-0.469727 -0.310547c-1.1123 -0.741211 -3.09961 -1.34375 -4.43652 -1.34375\nc-2.36328 0 -5.34375 1.59668 -6.65332 3.56348l-8.88086 13.3105c-0.741211 1.1123 -1.34375 3.09961 -1.34375 4.43555c0 2.36328 1.59668 5.34473 3.56445 6.6543l15.3301 10.2197c3.93945 2.62988 8.56934 4.03027 13.3096 4.03027h13.5801c4.41992 0 8 -3.58008 8 -8\nv-88h16zM608 384c17.6699 0 32 -14.3301 32 -32v-320c0 -17.6699 -14.3301 -32 -32 -32h-576c-17.6699 0 -32 14.3301 -32 32v320c0 17.6699 14.3301 32 32 32h576zM48 48h64c0 35.3496 -28.6504 64 -64 64v-64zM48 272c35.3496 0 64 28.6504 64 64h-64v-64zM320 80\nc53 0 96 50.1299 96 112c0 61.8604 -42.9805 112 -96 112s-96 -50.1396 -96 -112c0 -61.8496 42.9805 -112 96 -112zM592 48v64c-35.3496 0 -64 -28.6504 -64 -64h64zM592 272v64h-64c0 -35.3496 28.6504 -64 64 -64z\" />\n    <glyph glyph-name=\"phone-slash\" unicode=\"&#xf3dd;\" horiz-adv-x=\"640\" \nd=\"M268.2 66.5996c11.5 5.40039 22.7002 11.6006 33.5996 18.1006l80 -61.7998c-76 -54.5 -169 -86.9004 -269.7 -86.9004c-11.2998 0 -20.8994 7.7998 -23.3994 18.5996l-24 104c-2.60059 11.4004 3.2002 22.9004 13.8994 27.5l112 48\nc9.80078 4.2002 21.2002 1.40039 28 -6.89941zM633.8 -10.0996c7 -5.40039 8.2998 -15.5 2.90039 -22.3008l-19.6006 -25.2998c-5.5 -7 -15.5 -8.2002 -22.5 -2.7998l-588.399 454.7c-7 5.39941 -8.2002 15.3994 -2.7998 22.3994l19.5996 25.2002\nc5.5 7 15.5 8.2002 22.5 2.7998l353.9 -273.5c18.0996 22.5 33.7998 46.7002 46 72.8008l-60.6006 49.5996c-8.2998 6.7002 -11.0996 18.2002 -6.89941 28l48 112c4.59961 10.5996 16.1992 16.5 27.5 13.9004l104 -24c10.8994 -2.5 18.5996 -12.2002 18.5996 -23.4004\nc0 -108.9 -38.0996 -208.4 -100.9 -287.5z\" />\n    <glyph glyph-name=\"portrait\" unicode=\"&#xf3e0;\" horiz-adv-x=\"384\" \nd=\"M336 448c26.5 0 48 -21.5 48 -48v-416c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48h288zM192 320c-35.2998 0 -64 -28.7002 -64 -64s28.7002 -64 64 -64s64 28.7002 64 64s-28.7002 64 -64 64zM304 83.2002v19.2002\nc0 31.7998 -30.0996 57.5996 -67.2002 57.5996h-5c-12.2002 -5.09961 -25.7002 -8 -39.7998 -8s-27.5 2.90039 -39.7998 8h-5c-37.1006 0 -67.2002 -25.7998 -67.2002 -57.5996v-19.2002c0 -10.6006 10 -19.2002 22.4004 -19.2002h179.199\nc12.4004 0 22.4004 8.59961 22.4004 19.2002z\" />\n    <glyph glyph-name=\"reply\" unicode=\"&#xf3e5;\" \nd=\"M8.30859 258.164l176.005 151.985c15.4053 13.3047 39.6865 2.50391 39.6865 -18.1641v-80.0537c160.629 -1.83887 288 -34.0312 288 -186.258c0 -61.4404 -39.5811 -122.309 -83.333 -154.132c-13.6533 -9.93066 -33.1113 2.5332 -28.0771 18.6309\nc45.3438 145.012 -21.5068 183.51 -176.59 185.742v-87.915c0 -20.7002 -24.2998 -31.4531 -39.6865 -18.1641l-176.005 152c-11.0703 9.5625 -11.0859 26.7529 0 36.3281z\" />\n    <glyph glyph-name=\"shield-alt\" unicode=\"&#xf3ed;\" \nd=\"M466.5 364.3c17.7998 -7.39941 29.5 -24.8994 29.5 -44.2998c0 -221.3 -135.9 -344.6 -221.6 -380.3c-11.8008 -4.90039 -25.1006 -4.90039 -36.9004 0c-107 44.5996 -221.5 181.8 -221.5 380.3c0 19.4004 11.7002 36.9004 29.5996 44.2998l192 80\nc4.89062 2.0293 13.1562 3.6748 18.4502 3.6748c5.29492 0 13.5596 -1.64551 18.4502 -3.6748zM256.1 1.7002c93.7002 46.5996 172.5 156.3 175.801 307.7l-175.9 73.2998z\" />\n    <glyph glyph-name=\"tablet-alt\" unicode=\"&#xf3fa;\" horiz-adv-x=\"448\" \nd=\"M400 448c26.5 0 48 -21.5 48 -48v-416c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48h352zM224 -32c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM400 76v312\nc0 6.59961 -5.40039 12 -12 12h-328c-6.59961 0 -12 -5.40039 -12 -12v-312c0 -6.59961 5.40039 -12 12 -12h328c6.59961 0 12 5.40039 12 12z\" />\n    <glyph glyph-name=\"tachometer-alt\" unicode=\"&#xf3fd;\" horiz-adv-x=\"576\" \nd=\"M288 416c159.06 0 288 -128.94 288 -288c0 -52.7998 -14.25 -102.26 -39.0596 -144.8c-5.61035 -9.62012 -16.3008 -15.2002 -27.4404 -15.2002h-443c-11.1396 0 -21.8301 5.58008 -27.4404 15.2002c-24.8096 42.54 -39.0596 92 -39.0596 144.8\nc0 159.06 128.94 288 288 288zM288 352c-17.6699 0 -31.9902 -14.3301 -31.9902 -32s14.3301 -32 32 -32c6.66992 0 12.5098 2.51953 17.6406 6.00977l9.21973 27.6699c0.80957 2.44043 2.33984 4.41016 3.4502 6.66992c-3.74023 13.5205 -15.6104 23.6504 -30.3203 23.6504\nzM96 64c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM144 224c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM390.77 296.41c4.18066 12.5703 -2.59961 26.1699 -15.1699 30.3594\nc-12.6299 4.28027 -26.1895 -2.60938 -30.3594 -15.1699l-61.3398 -184.01c-33.4004 -2.16016 -59.9004 -29.6494 -59.9004 -63.5898c0 -11.7197 3.37988 -22.5498 8.87988 -32h110.24c5.5 9.4502 8.87988 20.2803 8.87988 32c0 19.46 -8.87012 36.6699 -22.5596 48.4102z\nM405.43 239.21c5.68066 -8.94043 15.1904 -15.21 26.5703 -15.2197c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32c-3.91992 0 -7.58008 -0.94043 -11.0498 -2.23047zM480 64c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z\n\" />\n    <glyph glyph-name=\"ticket-alt\" unicode=\"&#xf3ff;\" horiz-adv-x=\"576\" \nd=\"M128 288h320v-192h-320v192zM528 192c0 -26.5098 21.4902 -48 48 -48v-96c0 -26.5098 -21.4902 -48 -48 -48h-480c-26.5098 0 -48 21.4902 -48 48v96c26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48v96c0 26.5098 21.4902 48 48 48h480c26.5098 0 48 -21.4902 48 -48\nv-96c-26.5098 0 -48 -21.4902 -48 -48zM480 296c0 13.2549 -10.7451 24 -24 24h-336c-13.2549 0 -24 -10.7451 -24 -24v-208c0 -13.2549 10.7451 -24 24 -24h336c13.2549 0 24 10.7451 24 24v208z\" />\n    <glyph glyph-name=\"user-alt\" unicode=\"&#xf406;\" \nd=\"M256 160c-79.5 0 -144 64.5 -144 144s64.5 144 144 144s144 -64.5 144 -144s-64.5 -144 -144 -144zM384 128c70.7002 0 128 -57.2998 128 -128v-16c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v16c0 70.7002 57.2998 128 128 128h55.0996\nc22.3008 -10.2002 46.9004 -16 72.9004 -16s50.7002 5.7998 72.9004 16h55.0996z\" />\n    <glyph glyph-name=\"window-close\" unicode=\"&#xf410;\" \nd=\"M464 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h416zM380.4 125.5l-67.1006 66.5l67.1006 66.5c4.7998 4.7998 4.7998 12.5996 0 17.4004l-40.5 40.5\nc-4.80078 4.7998 -12.6006 4.7998 -17.4004 0l-66.5 -67.1006l-66.5 67.1006c-4.7998 4.7998 -12.5996 4.7998 -17.4004 0l-40.5 -40.5c-4.7998 -4.80078 -4.7998 -12.6006 0 -17.4004l67.1006 -66.5l-67.1006 -66.5c-4.7998 -4.7998 -4.7998 -12.5996 0 -17.4004\nl40.5 -40.5c4.80078 -4.7998 12.6006 -4.7998 17.4004 0l66.5 67.1006l66.5 -67.1006c4.7998 -4.7998 12.5996 -4.7998 17.4004 0l40.5 40.5c4.7998 4.80078 4.7998 12.6006 0 17.4004z\" />\n    <glyph glyph-name=\"baseball-ball\" unicode=\"&#xf433;\" horiz-adv-x=\"496\" \nd=\"M368.5 84.0996c12.9004 -26.6992 30.2998 -50.1992 51.4004 -70.5996c-44.6006 -43 -105.101 -69.5 -171.9 -69.5c-66.9004 0 -127.5 26.5996 -172 69.7002c21.2002 20.3994 38.5996 44 51.5 70.7002l-28.7998 13.8994c-11.1006 -23 -26.1006 -43.2998 -44.2998 -61\nc-34 42.4004 -54.4004 96.1006 -54.4004 154.7s20.4004 112.3 54.4004 154.8c17.7998 -17.2998 32.5 -37.0996 43.5 -59.3994l28.6992 14.0996c-12.7998 25.9004 -30 48.9004 -50.6992 68.7998c44.5996 43.1006 105.199 69.7002 172.1 69.7002\nc67 0 127.6 -26.7002 172.2 -69.7998c-20.7998 -20 -38 -43 -50.7998 -69l28.6992 -14.1006c11 22.4004 25.8008 42.2002 43.6006 59.5c33.7998 -42.3994 54.2002 -96.0996 54.2002 -154.6c0 -58.5996 -20.5 -112.4 -54.5 -154.9c-18.1006 17.7002 -33 38 -44.1006 60.9004z\nM140.2 116.1c17.2998 53.9004 14.2998 108.2 -0.700195 153.801l-30.4004 -10c13.3008 -40.2002 15.5 -87.6006 0.600586 -134zM356.5 269.5c-15 -45.5 -18 -99.7998 -0.700195 -153.8l30.5 9.7998c-14.8994 46.5 -12.5996 93.9004 0.600586 134z\" />\n    <glyph glyph-name=\"basketball-ball\" unicode=\"&#xf434;\" horiz-adv-x=\"496\" \nd=\"M212.3 437.7c-1.5 -50 -17 -95.4004 -44.7998 -131.2l-77.4004 77.4004c36 29.6992 78.4004 47.5 122.2 53.7998zM248 226l-46.2998 46.2998c37.2002 45.4004 57.5 103.8 58.7002 167.7c51.8994 -2.59961 103.1 -21.0996 145.5 -56.0996zM56.0996 349.9l77.4004 -77.4004\nc-35.7002 -27.7998 -81.2002 -43.2998 -131.2 -44.7998c6.2998 43.7998 24.1006 86.2002 53.7998 122.2zM328.3 145.7l-46.2998 46.2998l157.9 157.9c35 -42.4004 53.5 -93.6006 56.0996 -145.5c-64 -1.30078 -122.4 -21.6006 -167.7 -58.7002zM248 158l46.2998 -46.2998\nc-37.0996 -45.2998 -57.3994 -103.7 -58.7002 -167.7c-51.8994 2.59961 -103.1 21.2002 -145.5 56.0996zM439.9 34.0996l-77.4004 77.4004c35.7002 27.7002 81.0996 43.2002 131.2 44.7998c-6.2998 -43.7998 -24.1006 -86.2002 -53.7998 -122.2zM167.7 238.3\nl46.2998 -46.2998l-157.9 -157.9c-35 42.4004 -53.5 93.6006 -56.0996 145.5c63.9004 1.10059 122.3 21.5 167.7 58.7002zM283.7 -53.7002c1.59961 50 17.0996 95.5 44.7998 131.2l77.4004 -77.4004c-36 -29.6992 -78.4004 -47.5 -122.2 -53.7998z\" />\n    <glyph glyph-name=\"bowling-ball\" unicode=\"&#xf436;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM120 256c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM184 352c0 -17.7002 14.2998 -32 32 -32s32 14.2998 32 32\ns-14.2998 32 -32 32s-32 -14.2998 -32 -32zM232 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32z\" />\n    <glyph glyph-name=\"chess\" unicode=\"&#xf439;\" \nd=\"M74 240l-33.9102 90.3799c-0.5625 1.5 -1.01953 4.01758 -1.01953 5.62012c0 8.83203 7.16797 16 16 16h0.0195312h56.9102v32h-24c-4.41602 0 -8 3.58398 -8 8v16c0 4.41602 3.58398 8 8 8h24v24c0 4.41602 3.58398 8 8 8h16c4.41602 0 8 -3.58398 8 -8v-24h24\nc4.41602 0 8 -3.58398 8 -8v-16c0 -4.41602 -3.58398 -8 -8 -8h-24v-32h56.8896h0.0195312c8.83203 0 16 -7.16797 16 -16c0 -1.60254 -0.456055 -4.12012 -1.01953 -5.62012l-33.8896 -90.3799h10c8.83203 0 16 -7.16797 16 -16v-16c0 -8.83203 -7.16797 -16 -16 -16\nh-15.9404c0.116211 -35.8613 7.25684 -93.2051 15.9404 -128h-128c8.68359 34.7949 15.8242 92.1387 15.9404 128h-15.9404c-8.83203 0 -16 7.16797 -16 16v16c0 8.83203 7.16797 16 16 16h10zM247.16 -11.5801c4.87988 -2.44141 8.83984 -8.85156 8.83984 -14.3086\nv-0.000976562v-22.1104c0 -8.83203 -7.16797 -16 -16 -16h-224c-8.83203 0 -16 7.16797 -16 16v22.1104c0.000976562 5.45898 3.96582 11.8701 8.84961 14.3096l23.1504 11.5801v16c0 8.83203 7.16797 16 16 16h160c8.83203 0 16 -7.16797 16 -16v-16zM339.93 146.2\nl-24.5693 20.7998c-6.25684 5.28125 -11.3467 16.2119 -11.3604 24.4004v58.5996c0 3.31152 2.68848 6 6 6h26.3896c3.3125 0 6 -2.68848 6 -6v-26h24.71v26c0 3.31152 2.68848 6 6 6h53.8105c3.31152 0 6 -2.68848 6 -6v-26h24.71v26c0 3.31152 2.6875 6 6 6h26.3799\nc3.31152 0 6 -2.68848 6 -6v-58.54v-0.03125c0 -8.19238 -5.07617 -19.1367 -11.3301 -24.4287l-24.5996 -20.79l3.29004 -82.21h-126.721zM384 144v-32h32v32c0 8.83203 -7.16797 16 -16 16s-16 -7.16797 -16 -16zM503.16 -11.5801\nc4.87988 -2.44141 8.83984 -8.85156 8.83984 -14.3086v-0.000976562v-22.1104c0 -8.83203 -7.16797 -16 -16 -16h-192c-8.83203 0 -16 7.16797 -16 16v22.1104c0.000976562 5.45898 3.96582 11.8701 8.84961 14.3096l23.1504 11.5801v16c0 8.83203 7.16797 16 16 16h128\nc8.83203 0 16 -7.16797 16 -16v-16z\" />\n    <glyph glyph-name=\"chess-bishop\" unicode=\"&#xf43a;\" horiz-adv-x=\"320\" \nd=\"M8 160.12c0 73.3799 59.8096 181.08 112.6 225.37c-14 3.41992 -24.5996 15.5098 -24.5996 30.5098c0 17.6641 14.3359 32 32 32h64c17.6641 0 32 -14.3359 32 -32c0 -15.0498 -10.5996 -27.0898 -24.5996 -30.5098c24.3994 -20.4902 50.0693 -54.6807 70.8691 -92.5898\nl-107.89 -107.931c-1.29199 -1.29297 -2.34082 -3.82617 -2.34082 -5.6543c0 -1.8291 1.04883 -4.3623 2.34082 -5.65527l11.3105 -11.3105c1.29297 -1.29199 3.82617 -2.34082 5.6543 -2.34082s4.3623 1.04883 5.65527 2.34082l100.31 100.33\nc15.96 -35.46 26.6904 -71.9492 26.6904 -102.56c0 -51.6006 -22.1396 -73.8301 -56 -84.6006v-43.5195h-192v43.5195c-33.8604 10.7705 -56 32.9609 -56 84.6006zM304 0c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-288\nc-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h288z\" />\n    <glyph glyph-name=\"chess-board\" unicode=\"&#xf43c;\" \nd=\"M255.9 447.8v-64h-64v64h64zM0 383.83h64v-64h-64v64zM128 447.8v-64h-64v64h64zM192 191.9h64v-64h-64v64zM0 255.88h64v-64h-64v64zM383.85 447.8v-64h-64v64h64zM511.85 447.8v-64h-64v64h64zM128 191.9v-64h-64v64h64zM511.8 0h-64v64h64v-64zM511.8 128h-64v64h64\nv-64zM383.85 -64v64h64v-64h-64zM511.85 255.88h-64v64h64v-64zM128 -64v64h64v-64h-64zM0 -64v64h64v-64h-64zM255.9 -64v64h64v-64h-64zM0 127.93h64v-64h-64v64zM319.88 319.85h-64v64h64v-64zM255.88 191.85v64h64v-64h-64zM191.88 63.8496h64v-64h-64v64z\nM319.88 127.85v64h64v-64h-64zM319.88 255.8v64h64v-64h-64zM319.88 63.8701h64v-64h-64v64zM64 63.9502h64v-64h-64v64zM192 319.85h-64v64h64v-64zM383.92 63.9502v64h64v-64h-64zM255.92 255.88h-64v64h64v-64zM383.92 383.83h64v-64h-64v64zM255.92 127.93h64v-64h-64\nv64zM191.92 255.88l0.0800781 -64h-64v64h63.9199zM383.84 191.88v64h64v-64h-64zM128 319.85v-64h-64v64h64zM128 127.93h64v-64h-64v64z\" />\n    <glyph glyph-name=\"chess-king\" unicode=\"&#xf43f;\" horiz-adv-x=\"448\" \nd=\"M400 0c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-352c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h352zM416 288c17.6504 -0.0136719 31.9756 -14.3496 31.9756 -32c0 -2.69434 -0.652344 -6.96777 -1.45605 -9.54004\nl-73.0791 -214.46h-298.881l-73.0791 214.46c-0.803711 2.57227 -1.45605 6.8457 -1.45605 9.54004c0 17.6504 14.3252 31.9863 31.9756 32h160v48h-40c-4.41602 0 -8 3.58398 -8 8v48c0 4.41602 3.58398 8 8 8h40v40c0 4.41602 3.58398 8 8 8h48c4.41602 0 8 -3.58398 8 -8\nv-40h40c4.41602 0 8 -3.58398 8 -8v-48c0 -4.41602 -3.58398 -8 -8 -8h-40v-48h160z\" />\n    <glyph glyph-name=\"chess-knight\" unicode=\"&#xf441;\" horiz-adv-x=\"384\" \nd=\"M19 175.53c-10.4883 4.66211 -19 17.7627 -19 29.2402v0.0195312v137.21v0.0585938c0 5.47461 3.13574 13.0635 7 16.9414l9 9l-14.21 28.4199c-0.988281 1.97266 -1.79004 5.36328 -1.79004 7.56934v0.0107422c0 6.62402 5.37598 12 12 12h147.94\nc106 0 191.92 -86 191.92 -192v-192h-319.86v14.5195v0.0224609c0 27.2783 19.7969 59.3271 44.1904 71.5381l57.2197 28.6504c14.6445 7.32324 26.5303 26.5566 26.5303 42.9297v0.00976562v50.3301l-22.1201 -11.0801\nc-5.45117 -2.72559 -11.0732 -9.7373 -12.5508 -15.6504l-9.21973 -30.6494c-2.4502 -8.15332 -10.8545 -17.3379 -18.7598 -20.5l-12.7803 -5.12012c-3.1582 -1.2627 -8.48145 -2.28809 -11.8828 -2.28809c-3.74902 0 -9.57129 1.23535 -12.9971 2.75781zM52 320\nc-11.04 0 -20 -8.95996 -20 -20s8.95996 -20 20 -20s20 8.95996 20 20s-8.95996 20 -20 20zM368 0c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-352c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h352z\" />\n    <glyph glyph-name=\"chess-pawn\" unicode=\"&#xf443;\" horiz-adv-x=\"320\" \nd=\"M105.1 224c-29.3896 18.3799 -49.0996 50.7803 -49.0996 88c0 57.4082 46.5918 104 104 104s104 -46.5918 104 -104c0 -37.2197 -19.71 -69.6201 -49.0996 -88h25.0996c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-16v-5.49023\nc0 -44 4.11035 -86.5996 24 -122.51h-176c19.8604 35.9102 24 78.5098 24 122.51v5.49023h-16c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h25.0996zM304 0c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-288\nc-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h288z\" />\n    <glyph glyph-name=\"chess-queen\" unicode=\"&#xf445;\" \nd=\"M256 336c-30.9121 0 -56 25.0879 -56 56s25.0879 56 56 56s56 -25.0879 56 -56s-25.0879 -56 -56 -56zM432 0c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-352c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h352zM504.87 263.84\nc3.93457 -2.62109 7.12891 -8.58691 7.12891 -13.3154c0 -2.08496 -0.756836 -5.29004 -1.68945 -7.1543l-102.55 -211.37h-303.52l-102.55 211.33c-0.932617 1.86426 -1.68945 5.06934 -1.68945 7.1543c0 4.72852 3.19434 10.6943 7.12891 13.3154l28.5703 16\nc7.35938 4.91016 16.8096 2.5498 22.0898 -4.54004c7.86035 -10.6357 24.9736 -19.2676 38.1992 -19.2676c0.922852 0 2.41992 0.0527344 3.34082 0.118164c25.6699 1.73926 44.6699 24.7998 44.6699 50.4893c0 7.39746 6.00293 13.4004 13.4004 13.4004v0h38.7695\nc6.04004 0 11.6104 -3.99023 12.8604 -9.91016c4.42969 -21.0361 25.4717 -38.1094 46.9697 -38.1094s42.54 17.0732 46.9697 38.1094c1.25 5.91016 6.86035 9.91016 12.8604 9.91016h38.7695c7.39746 0 13.4004 -6.00293 13.4004 -13.4004\nc0 -23.5293 15.7002 -45.46 38.8398 -49.75c2.48926 -0.484375 6.56738 -0.878906 9.10352 -0.878906c13.166 0 30.2471 8.56152 38.127 19.1094c5.37988 7.13965 14.8496 9.67969 22.29 4.67969z\" />\n    <glyph glyph-name=\"chess-rook\" unicode=\"&#xf447;\" horiz-adv-x=\"384\" \nd=\"M368 416c8.83203 0 16 -7.16797 16 -16v-176l-64 -32c0 -47.7197 1.54004 -95 13.21 -160h-282.42c11.6699 65 13.21 111.67 13.21 160l-64 32v176c0 8.83203 7.16797 16 16 16h56.0996c8.83203 0 16 -7.16797 16 -16v-48h47.9004v48c0 8.83203 7.16797 16 16 16h80\nc8.83203 0 16 -7.16797 16 -16v-48h48v48c0 8.83203 7.16797 16 16 16h56zM224 128v64c0 17.6641 -14.3359 32 -32 32s-32 -14.3359 -32 -32v-64h64zM368 0c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-352c-8.83203 0 -16 7.16797 -16 16v32\nc0 8.83203 7.16797 16 16 16h352z\" />\n    <glyph glyph-name=\"dumbbell\" unicode=\"&#xf44b;\" horiz-adv-x=\"640\" \nd=\"M104 352c13.2998 0 24 -10.7002 24 -24v-272c0 -13.2998 -10.7002 -24 -24 -24h-48c-13.2998 0 -24 10.7002 -24 24v104h-24c-4.40039 0 -8 3.59961 -8 8v48c0 4.40039 3.59961 8 8 8h24v104c0 13.2998 10.7002 24 24 24h48zM632 224c4.40039 0 8 -3.59961 8 -8v-48\nc0 -4.40039 -3.59961 -8 -8 -8h-24v-104c0 -13.2998 -10.7002 -24 -24 -24h-48c-13.2998 0 -24 10.7002 -24 24v272c0 13.2998 10.7002 24 24 24h48c13.2998 0 24 -10.7002 24 -24v-104h24zM456 416c13.2998 0 24 -10.7002 24 -24v-400c0 -13.2998 -10.7002 -24 -24 -24h-48\nc-13.2998 0 -24 10.7002 -24 24v168h-128v-168c0 -13.2998 -10.7002 -24 -24 -24h-48c-13.2998 0 -24 10.7002 -24 24v400c0 13.2998 10.7002 24 24 24h48c13.2998 0 24 -10.7002 24 -24v-168h128v168c0 13.2998 10.7002 24 24 24h48z\" />\n    <glyph glyph-name=\"football-ball\" unicode=\"&#xf44e;\" horiz-adv-x=\"496\" \nd=\"M481.5 387.7c6.2998 -23.9004 13.7002 -61 14.5 -104.5l-156.6 156.8c43.5996 -0.900391 80.8994 -8.5 104.8 -14.9004c18.2002 -4.89941 32.5 -19.1992 37.2998 -37.3994zM14.5 -3.7002c-6.2998 23.9004 -13.7002 61 -14.5 104.5l156.6 -156.8\nc-43.5996 0.900391 -80.8994 8.5 -104.8 14.9004c-18.2002 4.89941 -32.5 19.1992 -37.2998 37.3994zM4.2002 164.6c22.5996 152.7 138.899 252 271.399 271.4l216.301 -216.6c-22.7002 -152.7 -139 -252 -271.5 -271.4zM321.5 288.2l-28.2998 -28.5l-28.2998 28.2998\nc-3.10059 3.09961 -8.2002 3.09961 -11.3008 0l-11.2998 -11.2998c-3.09961 -3.10059 -3.09961 -8.2002 0 -11.2998l28.2998 -28.3008l-22.5996 -22.5996l-28.2998 28.2998c-3.10059 3.10059 -8.2002 3.10059 -11.2998 0l-11.3008 -11.2998\nc-3.09961 -3.09961 -3.09961 -8.2002 0 -11.2998l28.3008 -28.2998l-22.6006 -22.6006l-28.2998 28.2998c-3.09961 3.10059 -8.2002 3.10059 -11.2998 0l-11.2998 -11.2998c-3.10059 -3.09961 -3.10059 -8.2002 0 -11.2998l28.2998 -28.2002l-28.2998 -28.2998\nc-3.10059 -3.09961 -3.10059 -8.2002 0 -11.2998l11.2998 -11.2998c3.09961 -3.10059 8.2002 -3.10059 11.2998 0l28.2998 28.2998l28.2998 -28.2998c3.10059 -3.10059 8.2002 -3.10059 11.3008 0l11.2998 11.2998c3.09961 3.09961 3.09961 8.2002 0 11.2998\nl-28.2998 28.2998l22.5996 22.6006l28.2998 -28.3008c3.10059 -3.09961 8.2002 -3.09961 11.2998 0l11.3008 11.3008c3.09961 3.09961 3.09961 8.19922 0 11.2998l-28.3008 28.2998l22.6006 22.7002l28.2998 -28.2998c3.09961 -3.10059 8.2002 -3.10059 11.2998 0\nl11.2998 11.2998c3.10059 3.09961 3.10059 8.2002 0 11.2998l-28.2998 28.2998l28.2998 28.2998c3.10059 3.10059 3.10059 8.2002 0 11.3008l-11.2998 11.2998c-3.09961 3.09961 -8.2002 3.09961 -11.2998 0z\" />\n    <glyph glyph-name=\"golf-ball\" unicode=\"&#xf450;\" horiz-adv-x=\"416\" \nd=\"M96 32h224c0 -17.7002 -14.2998 -32 -32 -32h-16c-17.7002 0 -32 -14.2998 -32 -32v-20c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v20c0 17.7002 -14.2998 32 -32 32h-16c-17.7002 0 -32 14.2998 -32 32zM416 240\nc0 -74.2002 -39 -139.2 -97.5 -176h-221c-58.5 36.7998 -97.5 101.8 -97.5 176c0 114.9 93.0996 208 208 208s208 -93.0996 208 -208zM235.9 196.1c18.2998 0 33.0996 14.8008 33.0996 33.1006c0 14.3994 -9.2998 26.2998 -22.0996 30.8994\nc9.59961 -26.7998 -15.6006 -51.2998 -41.9004 -41.8994c4.59961 -12.7998 16.5 -22.1006 30.9004 -22.1006zM285 149.2c0 14.3994 -9.2998 26.2998 -22.0996 30.8994c9.59961 -26.7998 -15.6006 -51.2998 -41.9004 -41.8994\nc4.59961 -12.7998 16.5 -22.1006 30.9004 -22.1006c18.2998 0 33.0996 14.9004 33.0996 33.1006zM349 213.2c0 14.3994 -9.2998 26.2998 -22.0996 30.8994c9.59961 -26.7998 -15.6006 -51.2998 -41.9004 -41.8994c4.59961 -12.7998 16.5 -22.1006 30.9004 -22.1006\nc18.2998 0 33.0996 14.9004 33.0996 33.1006z\" />\n    <glyph glyph-name=\"hockey-puck\" unicode=\"&#xf453;\" \nd=\"M0 288c0 53 114.6 96 256 96s256 -43 256 -96s-114.6 -96 -256 -96s-256 43 -256 96zM0 205.8c113.5 -82.3994 398.6 -82.2998 512 0v-109.8c0 -53 -114.6 -96 -256 -96s-256 43 -256 96v109.8z\" />\n    <glyph glyph-name=\"quidditch\" unicode=\"&#xf458;\" horiz-adv-x=\"640\" \nd=\"M256.5 231.2l86.7002 -109.2s-16.6006 -102.4 -76.6006 -150.1c-59.8994 -47.7002 -266.6 -34.1006 -266.6 -34.1006s3.7998 23.1006 11 55.4004l94.5996 112.2c4 4.69922 -0.899414 11.5996 -6.59961 9.5l-60.4004 -22.1006c14.4004 41.7002 32.7002 80 54.6006 97.5\nc59.8994 47.7998 163.3 40.9004 163.3 40.9004zM494.5 96.2002c44 0 79.7998 -35.7002 79.7998 -79.9004c0 -44.0996 -35.7002 -79.8994 -79.7998 -79.8994s-79.7998 35.7998 -79.7998 79.8994c0 44.1006 35.7998 79.9004 79.7998 79.9004zM636.5 417\nc5.5 -6.90039 4.40039 -17 -2.5 -22.5l-232.5 -177.9l34.0996 -42.8994c5.10059 -6.40039 1.7002 -15.9004 -6.2998 -17.6006l-58.7998 -12.3994l-86.7002 109.2l25.2998 54.5996c3.5 7.40039 13.5 8.59961 18.6006 2.2002l34.0996 -43l232.5 177.899\nc6.90039 5.40039 16.9004 4.30078 22.4004 -2.59961z\" />\n    <glyph glyph-name=\"square-full\" unicode=\"&#xf45c;\" \nd=\"M512 -64h-512v512h512v-512z\" />\n    <glyph glyph-name=\"table-tennis\" unicode=\"&#xf45d;\" \nd=\"M496.2 151.5c-64.1006 43.2002 -149.5 27.9004 -195.601 -34.2002l-211.5 211.5l56 56.1006c83.9004 84.0996 220 84.0996 303.9 0c63 -63.1006 78.7002 -155.601 47.2002 -233.4zM278.3 71.7998c-3.7002 -12.7002 -6.2998 -25.8994 -6.2002 -39.7002\nc0 -19.5 3.90039 -38.0996 11 -55.0996c-25.6992 2.7998 -50.5996 13.5996 -70.2998 33.2998l-35.7002 35.7002l-89.2998 -103.3c-7.5 -8.60059 -20.7002 -9.10059 -28.7002 -1l-53.3994 53.5c-8.10059 8.09961 -7.60059 21.2998 1 28.7998l103 89.4004l-34.5 34.5996\nc-39 39.0996 -44.6006 98.7998 -17.2998 144.1zM416 128c53 0 96 -43 96 -96s-43 -96 -96 -96s-96 43 -96 96s43 96 96 96z\" />\n    <glyph glyph-name=\"volleyball-ball\" unicode=\"&#xf45f;\" \nd=\"M231.39 204.52c-60.8945 -37.4102 -126.348 -123.516 -146.1 -192.199c-20.248 19.1953 -45.7393 55.5283 -56.9004 81.0996c22.8008 94.4004 89.5 174.4 180.301 216.8c11.8887 -27.9648 22.0586 -75.3184 22.6992 -105.7zM194.49 338.92\nc-84 -39.5 -149 -108.4 -182.4 -191.5c-19.7998 109.3 34 212.4 125 262.2c19.0098 -16.9424 44.7246 -48.6162 57.4004 -70.7002zM382.09 173.82c-30.1689 3.6709 -76.2686 18.5352 -102.899 33.1797c-1.9541 71.4844 -43.8428 171.263 -93.5 222.72\nc47.2998 14 84.1992 10.2002 98.8994 8.5c70.2002 -66.8994 106.101 -164.6 97.5 -264.399zM257.39 164.32c49.7002 -26.8008 104 -40.8008 158.601 -40.9004c22.6787 0.140625 58.9219 4.7998 80.8994 10.4004c-6.55762 -27.2012 -25.4639 -67.4766 -42.1992 -89.9004\nc-93 -27.2998 -195.5 -9.5 -277.5 47.7998c18.2803 24.2959 54.21 56.8213 80.1992 72.6006zM159.09 64.6201c53.6006 -37.2998 144 -78.2002 256.9 -62.1006c-38.1611 -32.3467 -109.732 -58.5986 -159.758 -58.5986c-38.5156 0 -96.416 16.3516 -129.242 36.499\nc6.39941 29.7998 16.8994 58.2002 32.0996 84.2002zM339.39 425.22c95.9004 -34.2998 164.601 -125.6 164.601 -233.399c0 -2 -0.299805 -4 -0.299805 -6c-23.9658 -7.83887 -63.8799 -14.2012 -89.0947 -14.2012c-0.166992 0 -0.438477 0.000976562 -0.605469 0.000976562\nc7.89941 92.3994 -19.2998 183.2 -74.6006 253.6z\" />\n    <glyph glyph-name=\"allergies\" unicode=\"&#xf461;\" horiz-adv-x=\"448\" \nd=\"M416 336c17.5996 0 32 -14.4004 32 -32v-176.1c-0.200195 -14 -1.90039 -28.6006 -5.09961 -42.3008l-26.5 -112.699c-5.10059 -21.7002 -24.4004 -37 -46.7002 -37h-197.601c-15.2998 0 -29.7998 7.39941 -38.7998 19.7998l-125.6 172.7\nc-13 17.8994 -9.10059 42.8994 8.7998 55.8994s42.9004 9.10059 55.9004 -8.7998l23.5996 -32.5v241c0 17.5996 14.4004 32 32 32s32 -14.4004 32 -32v-152c0 -4.40039 3.59961 -8 8 -8h16c4.40039 0 8 3.59961 8 8v184c0 17.5996 14.4004 32 32 32s32 -14.4004 32 -32v-184\nc0 -4.40039 3.59961 -8 8 -8h16c4.40039 0 8 3.59961 8 8v152c0 17.5996 14.4004 32 32 32s32 -14.4004 32 -32v-152c0 -4.40039 3.59961 -8 8 -8h16c4.40039 0 8 3.59961 8 8v72c0 17.5996 14.4004 32 32 32zM176 32c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16\ns-16 -7.2002 -16 -16s7.2002 -16 16 -16zM176 128c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM240 0c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM240 96c8.7998 0 16 7.2002 16 16\ns-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM304 64c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM336 0c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM368 128\nc8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16z\" />\n    <glyph glyph-name=\"band-aid\" unicode=\"&#xf462;\" horiz-adv-x=\"640\" \nd=\"M0 288c0 35.2998 28.7002 64 64 64h96v-320h-96c-35.2998 0 -64 28.7002 -64 64v192zM576 352c35.2998 0 64 -28.7002 64 -64v-192c0 -35.2998 -28.7002 -64 -64 -64h-96v320h96zM192 32v320h256v-320h-256zM368 264c-13.2998 0 -24 -10.7002 -24 -24s10.7002 -24 24 -24\ns24 10.7002 24 24s-10.7002 24 -24 24zM368 168c-13.2998 0 -24 -10.7002 -24 -24s10.7002 -24 24 -24s24 10.7002 24 24s-10.7002 24 -24 24zM272 264c-13.2998 0 -24 -10.7002 -24 -24s10.7002 -24 24 -24s24 10.7002 24 24s-10.7002 24 -24 24zM272 168\nc-13.2998 0 -24 -10.7002 -24 -24s10.7002 -24 24 -24s24 10.7002 24 24s-10.7002 24 -24 24z\" />\n    <glyph glyph-name=\"box\" unicode=\"&#xf466;\" \nd=\"M509.5 263.4c0.799805 -2.40039 0.799805 -4.90039 1.2002 -7.40039h-238.7v192h141.4c20.6992 0 39 -13.2002 45.5 -32.7998zM240 448v-192h-238.7c0.400391 2.5 0.400391 5 1.2002 7.40039l50.5996 151.8c6.5 19.5996 24.8008 32.7998 45.5 32.7998h141.4zM0 224h512\nv-240c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v240z\" />\n    <glyph glyph-name=\"boxes\" unicode=\"&#xf468;\" horiz-adv-x=\"576\" \nd=\"M560 160c8.7998 0 16 -7.2002 16 -16v-192c0 -8.7998 -7.2002 -16 -16 -16h-224c-8.7998 0 -16 7.2002 -16 16v192c0 8.7998 7.2002 16 16 16h80v-96l32 21.2998l32 -21.2998v96h80zM176 224c-8.7998 0 -16 7.2002 -16 16v192c0 8.7998 7.2002 16 16 16h80v-96\nl32 21.2998l32 -21.2998v96h80c8.7998 0 16 -7.2002 16 -16v-192c0 -8.7998 -7.2002 -16 -16 -16h-224zM240 160c8.7998 0 16 -7.2002 16 -16v-192c0 -8.7998 -7.2002 -16 -16 -16h-224c-8.7998 0 -16 7.2002 -16 16v192c0 8.7998 7.2002 16 16 16h80v-96l32 21.2998\nl32 -21.2998v96h80z\" />\n    <glyph glyph-name=\"briefcase-medical\" unicode=\"&#xf469;\" \nd=\"M464 320c26.5 0 48 -21.5 48 -48v-288c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v288c0 26.5 21.5 48 48 48h80v48c0 26.5 21.5 48 48 48h160c26.5 0 48 -21.5 48 -48v-48h80zM192 352v-32h128v32h-128zM352 104v48c0 4.40039 -3.59961 8 -8 8h-56v56\nc0 4.40039 -3.59961 8 -8 8h-48c-4.40039 0 -8 -3.59961 -8 -8v-56h-56c-4.40039 0 -8 -3.59961 -8 -8v-48c0 -4.40039 3.59961 -8 8 -8h56v-56c0 -4.40039 3.59961 -8 8 -8h48c4.40039 0 8 3.59961 8 8v56h56c4.40039 0 8 3.59961 8 8z\" />\n    <glyph glyph-name=\"burn\" unicode=\"&#xf46a;\" horiz-adv-x=\"384\" \nd=\"M192 448c111.8 -100.9 192 -220.6 192 -300.5c0 -124.5 -79 -211.5 -192 -211.5s-192 87 -192 211.5c0 79.5996 79.7002 199.2 192 300.5zM192 0c56.5 0 96 39 96 94.7998c0 13.5 -4.59961 61.5 -96 161.2c-91.4004 -99.7002 -96 -147.7 -96 -161.2\nc0 -55.7998 39.5 -94.7998 96 -94.7998z\" />\n    <glyph glyph-name=\"capsules\" unicode=\"&#xf46b;\" horiz-adv-x=\"576\" \nd=\"M555.3 147.9c36.2002 -51.7002 23.7002 -123 -28 -159.2c-20 -14 -42.7998 -20.7002 -65.5 -20.7002c-36.0996 0 -71.5996 17 -93.7998 48.7998l-131.2 187.3c-5.5 7.90039 -9.5 16.4004 -12.7998 25v-149.1c0 -61.9004 -50.0996 -112 -112 -112s-112 50.0996 -112 112\nv224c0 61.9004 50.0996 112 112 112c60 0 108.5 -47.2002 111.4 -106.5c7.7998 21 21.7998 40 41.5 53.7998c20 14 42.8994 20.7002 65.5 20.7002c36 0 71.5 -17 93.7998 -48.7998zM160 192v112c0 26.5 -21.5 48 -48 48s-48 -21.5 -48 -48v-112h96zM354.8 147.1\nl82.5 57.7002l-65.5996 93.7002c-9.40039 13.5 -24.7998 21.5 -41.2998 21.5c-10.3008 0 -20.3008 -3.09961 -28.8008 -9.09961c-11 -7.7002 -18.3994 -19.3008 -20.6992 -32.5c-2.40039 -13.2002 0.599609 -26.6006 8.2998 -37.6006z\" />\n    <glyph glyph-name=\"clipboard-check\" unicode=\"&#xf46c;\" horiz-adv-x=\"384\" \nd=\"M336 384c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h80c0 35.2998 28.7002 64 64 64s64 -28.7002 64 -64h80zM192 408c-13.2998 0 -24 -10.7002 -24 -24s10.7002 -24 24 -24s24 10.7002 24 24\ns-10.7002 24 -24 24zM313.2 176.2c4.7002 4.7002 4.7998 12.2002 0.0996094 17l-28.2002 28.3994c-4.69922 4.7002 -12.2998 4.80078 -17 0.100586l-106 -105.2l-46 46.4004c-4.69922 4.69922 -12.2998 4.7998 -17 0.0996094l-28.3994 -28.2002\nc-4.7002 -4.7002 -4.7998 -12.2998 -0.100586 -17l82.6006 -83.2998c4.7002 -4.7002 12.2998 -4.7998 17 -0.0996094z\" />\n    <glyph glyph-name=\"clipboard-list\" unicode=\"&#xf46d;\" horiz-adv-x=\"384\" \nd=\"M336 384c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h80c0 35.2998 28.7002 64 64 64s64 -28.7002 64 -64h80zM96 24c13.2998 0 24 10.7002 24 24s-10.7002 24 -24 24s-24 -10.7002 -24 -24\ns10.7002 -24 24 -24zM96 120c13.2998 0 24 10.7002 24 24s-10.7002 24 -24 24s-24 -10.7002 -24 -24s10.7002 -24 24 -24zM96 216c13.2998 0 24 10.7002 24 24s-10.7002 24 -24 24s-24 -10.7002 -24 -24s10.7002 -24 24 -24zM192 408c-13.2998 0 -24 -10.7002 -24 -24\ns10.7002 -24 24 -24s24 10.7002 24 24s-10.7002 24 -24 24zM320 40v16c0 4.40039 -3.59961 8 -8 8h-144c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h144c4.40039 0 8 3.59961 8 8zM320 136v16c0 4.40039 -3.59961 8 -8 8h-144\nc-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h144c4.40039 0 8 3.59961 8 8zM320 232v16c0 4.40039 -3.59961 8 -8 8h-144c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h144c4.40039 0 8 3.59961 8 8z\" />\n    <glyph glyph-name=\"diagnoses\" unicode=\"&#xf470;\" horiz-adv-x=\"640\" \nd=\"M496 192c-8.7998 0 -16 7.2002 -16 16s7.2002 16 16 16s16 -7.2002 16 -16s-7.2002 -16 -16 -16zM320 272c-48.5 0 -88 39.5 -88 88s39.5 88 88 88s88 -39.5 88 -88s-39.5 -88 -88 -88zM59.7998 84l-17.7002 26.7002c-8.7998 13.2998 -7.59961 34.5996 10 45.0996\nc7.40039 4.40039 17.5 10 28.7002 16c31.6006 -27.2998 79 -4.2002 79.2002 36c47.0996 17.7002 103 32.2002 160 32.2002c45.0996 0 89.2998 -9.2002 129.2 -21.7998c-11.7002 -52.9004 59.5996 -81.2002 87.7002 -35.1006\nc21.3994 -10.3994 39.1992 -20.2998 51.0996 -27.3994c17.5996 -10.5 18.7998 -31.9004 10 -45.1006l-17.7998 -26.6992c-10.2002 -15.1006 -29.2998 -17.8008 -42.9004 -9.80078c-16.2002 9.60059 -56.2002 31.8008 -105.3 48.6006v-90.7002h-224v90.7998\nc-49.0996 -16.8994 -89.0996 -39 -105.3 -48.5996c-13.6006 -8 -32.7002 -5.5 -42.9004 9.7998zM368 104c-13.2998 0 -24 -10.7002 -24 -24s10.7002 -24 24 -24s24 10.7002 24 24s-10.7002 24 -24 24zM272 200c-13.2998 0 -24 -10.7002 -24 -24s10.7002 -24 24 -24\ns24 10.7002 24 24s-10.7002 24 -24 24zM112 192c-8.7998 0 -16 7.2002 -16 16s7.2002 16 16 16s16 -7.2002 16 -16s-7.2002 -16 -16 -16zM624 0c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-608c-8.7998 0 -16 7.2002 -16 16v32\nc0 8.7998 7.2002 16 16 16h608z\" />\n    <glyph glyph-name=\"dna\" unicode=\"&#xf471;\" horiz-adv-x=\"448\" \nd=\"M0.0996094 -46.0996c5.2002 42.8994 31.4004 153.899 159.9 238.1c-128.6 84.2002 -154.7 195.2 -159.9 238.1c-1.09961 9.5 6.40039 17.8008 16 17.8008l32.3008 0.0996094c8.09961 0.0996094 14.8994 -5.90039 16 -13.9004\nc0.699219 -5 1.7998 -11.0996 3.39941 -18.0996h312.4c1.59961 7 2.7002 13.2002 3.39941 18.0996c1.10059 8 7.90039 13.9004 16 13.9004l32.4004 -0.0996094c9.59961 0 17 -8.30078 15.9004 -17.8008c-5.80078 -47.8994 -37.4004 -181.199 -209.5 -266.699\nc-31.7002 -15.8008 -57.4004 -33.3008 -78.7002 -51.4004h127.6c-5.59961 4.7998 -10.7998 9.59961 -17 14.2002c21.4004 11.2002 40.9004 23 58.5 35.3994c93.2998 -78.6992 114.3 -169.8 118.9 -207.699c1.2002 -9.5 -6.2998 -17.8008 -15.9004 -17.8008\nl-32.2998 -0.0996094c-8.09961 -0.0996094 -14.9004 5.90039 -16 13.9004c-0.599609 4.89941 -1.90039 11.1992 -3.5 18.0996h-312.3c-1.60059 -7 -2.7002 -13.2002 -3.40039 -18.0996c-1.09961 -8 -7.89941 -13.9004 -16 -13.9004l-32.2998 0.0996094\nc-9.59961 0 -17 8.30078 -15.9004 17.8008zM224 228.4c25.0996 13.5996 46.4004 28.3994 64.2002 43.5996h-128.5c17.8994 -15.2002 39.2002 -29.9004 64.2998 -43.5996zM355.1 352h-262.1c5.7002 -10.4004 12.7002 -21.0996 21 -32h220.1\nc8.2002 10.9004 15.2002 21.5996 21 32zM92.9004 32h261.6c-5.7998 10.4004 -12.9004 21.0996 -21.2002 32h-219.399c-8.2002 -10.9004 -15.2002 -21.5996 -21 -32z\" />\n    <glyph glyph-name=\"dolly\" unicode=\"&#xf472;\" horiz-adv-x=\"576\" \nd=\"M294.2 170.3l-53 159.4c-2.7998 8.2998 1.7002 17.3994 10.0996 20.2002l61.6006 20.5l33.0996 -99.4004l60.7002 20.0996l-33.1006 99.4004l61.1006 20.4004c8.2998 2.7998 17.3994 -1.7002 20.2002 -10.1006l60.3994 -181.2\nc2.7998 -8.2998 -1.7002 -17.3994 -10.0996 -20.1992l-161.5 -53.8008c-14.7998 11.3008 -31.5 19.7002 -49.5 24.7002zM575.2 121.6c2.7998 -8.39941 -1.7998 -17.3994 -10.1006 -20.1992l-213.3 -71.2002c-1.09961 -57.7998 -53.2002 -103.3 -113.399 -92.6006\nc-39.4004 6.90039 -71.2002 39.8008 -77.3008 79.2002c-5.69922 36.9004 9.90039 70.1006 36 90.5l-92.1992 276.7h-88.9004c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h112c13.7998 0 26 -8.7998 30.4004 -21.9004l99.3994 -298.199\nc29.9004 -0.600586 56.2998 -15 73.5 -37l213.5 71.1992c8.2998 2.80078 17.4004 -1.69922 20.2002 -10.0996zM256 -16c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48z\" />\n    <glyph glyph-name=\"dolly-flatbed\" unicode=\"&#xf474;\" horiz-adv-x=\"640\" \nd=\"M208 128c-8.7998 0 -16 7.2002 -16 16v256c0 8.7998 7.2002 16 16 16h144v-128l48 32l48 -32v128h144c8.7998 0 16 -7.2002 16 -16v-256c0 -8.7998 -7.2002 -16 -16 -16h-384zM624 64c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-82.7998\nc1.7002 -5 2.89941 -10.4004 2.89941 -16c0 -26.5 -21.5 -48 -48 -48s-48 21.5 -48 48c0 5.59961 1.10059 11 2.90039 16h-197.9c1.7002 -5 2.90039 -10.4004 2.90039 -16c0 -26.5 -21.5 -48 -48 -48s-48 21.5 -48 48c0 5.59961 1.09961 11 2.90039 16h-82.9004\nc-8.7998 0 -16 7.2002 -16 16v368h-48c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h96c8.7998 0 16 -7.2002 16 -16v-368h496z\" />\n    <glyph glyph-name=\"file-medical\" unicode=\"&#xf477;\" horiz-adv-x=\"384\" \nd=\"M377 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7zM224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136z\nM288 152c0 4.40039 -3.59961 8 -8 8h-56v56c0 4.40039 -3.59961 8 -8 8h-48c-4.40039 0 -8 -3.59961 -8 -8v-56h-56c-4.40039 0 -8 -3.59961 -8 -8v-48c0 -4.40039 3.59961 -8 8 -8h56v-56c0 -4.40039 3.59961 -8 8 -8h48c4.40039 0 8 3.59961 8 8v56h56\nc4.40039 0 8 3.59961 8 8v48z\" />\n    <glyph glyph-name=\"file-medical-alt\" unicode=\"&#xf478;\" horiz-adv-x=\"448\" \nd=\"M288 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v168h70.0996l34.8008 -69.5c2.89941 -5.90039 11.3994 -5.90039 14.2998 0l56.7998 113.7l22.0996 -44.2002h89.9004c8.7998 0 16 7.2002 16 16\ns-7.2002 16 -16 16h-70.2002l-34.7002 69.5c-2.89941 5.90039 -11.3994 5.90039 -14.2998 0l-56.7998 -113.7l-19.9004 39.7998c-1.39941 2.7002 -4.19922 4.40039 -7.19922 4.40039h-140.9c-4.40039 0 -8 3.59961 -8 8v16c0 4.40039 3.59961 8 8 8h56v232\nc0 13.2998 10.7002 24 24 24h200v-136zM441 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7z\" />\n    <glyph glyph-name=\"first-aid\" unicode=\"&#xf479;\" horiz-adv-x=\"576\" \nd=\"M0 368c0 26.5 21.5 48 48 48h48v-448h-48c-26.5 0 -48 21.5 -48 48v352zM128 -32v448h320v-448h-320zM192 216v-48c0 -4.40039 3.59961 -8 8 -8h56v-56c0 -4.40039 3.59961 -8 8 -8h48c4.40039 0 8 3.59961 8 8v56h56c4.40039 0 8 3.59961 8 8v48\nc0 4.40039 -3.59961 8 -8 8h-56v56c0 4.40039 -3.59961 8 -8 8h-48c-4.40039 0 -8 -3.59961 -8 -8v-56h-56c-4.40039 0 -8 -3.59961 -8 -8zM528 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-48v448h48z\" />\n    <glyph glyph-name=\"hospital-alt\" unicode=\"&#xf47d;\" horiz-adv-x=\"576\" \nd=\"M544 352c17.7002 0 32 -14.2998 32 -32v-368c0 -8.7998 -7.2002 -16 -16 -16h-544c-8.7998 0 -16 7.2002 -16 16v368c0 17.7002 14.2998 32 32 32h128v64c0 17.7002 14.2998 32 32 32h192c17.7002 0 32 -14.2998 32 -32v-64h128zM160 12v40c0 6.59961 -5.40039 12 -12 12\nh-40c-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12zM160 140v40c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12zM320 12v40\nc0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12zM320 140v40c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h40\nc6.59961 0 12 5.40039 12 12zM336 310v20c0 3.2998 -2.7002 6 -6 6h-26v26c0 3.2998 -2.7002 6 -6 6h-20c-3.2998 0 -6 -2.7002 -6 -6v-26h-26c-3.2998 0 -6 -2.7002 -6 -6v-20c0 -3.2998 2.7002 -6 6 -6h26v-26c0 -3.2998 2.7002 -6 6 -6h20c3.2998 0 6 2.7002 6 6v26h26\nc3.2998 0 6 2.7002 6 6zM480 12v40c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12zM480 140v40c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-40\nc0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12z\" />\n    <glyph glyph-name=\"hospital-symbol\" unicode=\"&#xf47e;\" \nd=\"M256 448c141.4 0 256 -114.6 256 -256s-114.6 -256 -256 -256s-256 114.6 -256 256s114.6 256 256 256zM368 72v240c0 4.40039 -3.59961 8 -8 8h-48c-4.40039 0 -8 -3.59961 -8 -8v-88h-96v88c0 4.40039 -3.59961 8 -8 8h-48c-4.40039 0 -8 -3.59961 -8 -8v-240\nc0 -4.40039 3.59961 -8 8 -8h48c4.40039 0 8 3.59961 8 8v88h96v-88c0 -4.40039 3.59961 -8 8 -8h48c4.40039 0 8 3.59961 8 8z\" />\n    <glyph glyph-name=\"id-card-alt\" unicode=\"&#xf47f;\" horiz-adv-x=\"576\" \nd=\"M528 384c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h144v-96h192v96h144zM288 224c-35.2998 0 -64 -28.7002 -64 -64s28.7002 -64 64 -64s64 28.7002 64 64s-28.7002 64 -64 64zM381.3 0\nc10.4004 0 18.7998 10 15.6006 19.7998c-8.40039 25.7002 -32.5 44.2002 -60.9004 44.2002h-8.2002c-12.2002 -5.09961 -25.7002 -8 -39.7998 -8s-27.5 2.90039 -39.7998 8h-8.2002c-28.5 0 -52.5996 -18.5996 -60.9004 -44.2002\nc-3.19922 -9.7998 5.2002 -19.7998 15.6006 -19.7998h186.6zM352 416v-96h-128v96c0 17.7002 14.2998 32 32 32h64c17.7002 0 32 -14.2998 32 -32z\" />\n    <glyph glyph-name=\"notes-medical\" unicode=\"&#xf481;\" horiz-adv-x=\"384\" \nd=\"M336 384c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h80c0 35.2998 28.7002 64 64 64s64 -28.7002 64 -64h80zM192 408c-13.2998 0 -24 -10.7002 -24 -24s10.7002 -24 24 -24s24 10.7002 24 24\ns-10.7002 24 -24 24zM288 104v48c0 4.40039 -3.59961 8 -8 8h-56v56c0 4.40039 -3.59961 8 -8 8h-48c-4.40039 0 -8 -3.59961 -8 -8v-56h-56c-4.40039 0 -8 -3.59961 -8 -8v-48c0 -4.40039 3.59961 -8 8 -8h56v-56c0 -4.40039 3.59961 -8 8 -8h48c4.40039 0 8 3.59961 8 8\nv56h56c4.40039 0 8 3.59961 8 8zM288 296v16c0 4.40039 -3.59961 8 -8 8h-176c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h176c4.40039 0 8 3.59961 8 8z\" />\n    <glyph glyph-name=\"pallet\" unicode=\"&#xf482;\" horiz-adv-x=\"640\" \nd=\"M144 192c-8.7998 0 -16 7.2002 -16 16v224c0 8.7998 7.2002 16 16 16h112v-128l64 32l64 -32v128h112c8.7998 0 16 -7.2002 16 -16v-224c0 -8.7998 -7.2002 -16 -16 -16h-352zM624 64h-48v-64h48c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-608\nc-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h48v64h-48c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h608c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16zM288 0v64h-160v-64h160zM512 0v64h-160v-64h160z\" />\n    <glyph glyph-name=\"pills\" unicode=\"&#xf484;\" horiz-adv-x=\"576\" \nd=\"M112 416c61.9004 0 112 -50.0996 112 -112v-224c0 -61.9004 -50.0996 -112 -112 -112s-112 50.0996 -112 112v224c0 61.9004 50.0996 112 112 112zM160 192v112c0 26.5 -21.5 48 -48 48s-48 -21.5 -48 -48v-112h96zM299.7 221.7l210.8 -210.8\nc3.5 -3.5 3.2002 -9.40039 -0.799805 -12.3008c-62.5 -45.2998 -150.101 -40.3994 -206.4 15.9004s-61.2002 143.9 -15.8994 206.4c2.89941 3.89941 8.7998 4.2998 12.2998 0.799805zM529.5 240.7c56.4004 -56.2998 61.2002 -143.8 15.9004 -206.4\nc-2.90039 -3.89941 -8.80078 -4.2998 -12.3008 -0.799805l-210.8 210.8c-3.5 3.5 -3.2002 9.40039 0.799805 12.2998c62.5 45.3008 150.101 40.4004 206.4 -15.8994z\" />\n    <glyph glyph-name=\"prescription-bottle\" unicode=\"&#xf485;\" horiz-adv-x=\"384\" \nd=\"M32 256v64h320v-352c0 -17.5996 -14.4004 -32 -32 -32h-256c-17.5996 0 -32 14.4004 -32 32v64h120c4.40039 0 8 3.59961 8 8v16c0 4.40039 -3.59961 8 -8 8h-120v64h120c4.40039 0 8 3.59961 8 8v16c0 4.40039 -3.59961 8 -8 8h-120v64h120c4.40039 0 8 3.59961 8 8v16\nc0 4.40039 -3.59961 8 -8 8h-120zM360 448c13.2002 0 24 -10.7998 24 -24v-48c0 -13.2002 -10.7998 -24 -24 -24h-336c-13.2002 0 -24 10.7998 -24 24v48c0 13.2002 10.7998 24 24 24h336z\" />\n    <glyph glyph-name=\"prescription-bottle-alt\" unicode=\"&#xf486;\" horiz-adv-x=\"384\" \nd=\"M360 448c13.2002 0 24 -10.7998 24 -24v-48c0 -13.2002 -10.7998 -24 -24 -24h-336c-13.2002 0 -24 10.7998 -24 24v48c0 13.2002 10.7998 24 24 24h336zM32 -32v352h320v-352c0 -17.5996 -14.4004 -32 -32 -32h-256c-17.5996 0 -32 14.4004 -32 32zM96 152v-48\nc0 -4.40039 3.59961 -8 8 -8h56v-56c0 -4.40039 3.59961 -8 8 -8h48c4.40039 0 8 3.59961 8 8v56h56c4.40039 0 8 3.59961 8 8v48c0 4.40039 -3.59961 8 -8 8h-56v56c0 4.40039 -3.59961 8 -8 8h-48c-4.40039 0 -8 -3.59961 -8 -8v-56h-56c-4.40039 0 -8 -3.59961 -8 -8z\n\" />\n    <glyph glyph-name=\"procedures\" unicode=\"&#xf487;\" horiz-adv-x=\"640\" \nd=\"M528 224c61.9004 0 112 -50.0996 112 -112v-160c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v48h-512v-48c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v352c0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-240h192\nv144c0 8.7998 7.2002 16 16 16h256zM136 352c-4.40039 0 -8 3.59961 -8 8v16c0 4.40039 3.59961 8 8 8h140.9c3.09961 0 5.7998 -1.7002 7.19922 -4.40039l19.9004 -39.7998l49.7002 99.4004c5.89941 11.7998 22.7002 11.7998 28.5996 0l27.6006 -55.2002h102.1\nc8.7998 0 16 -7.2002 16 -16s-7.2002 -16 -16 -16h-121.9l-22.0996 44.2002l-49.7002 -99.4004c-5.89941 -11.7998 -22.7002 -11.7998 -28.5996 0l-27.6006 55.2002h-126.1zM160 96c-35.2998 0 -64 28.7002 -64 64s28.7002 64 64 64s64 -28.7002 64 -64\ns-28.7002 -64 -64 -64z\" />\n    <glyph glyph-name=\"shipping-fast\" unicode=\"&#xf48b;\" horiz-adv-x=\"640\" \nd=\"M624 96c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-48c0 -53 -43 -96 -96 -96s-96 43 -96 96h-128c0 -53 -43 -96 -96 -96s-96 43 -96 96v128h152c4.40039 0 8 3.59961 8 8v16c0 4.40039 -3.59961 8 -8 8h-208c-4.40039 0 -8 3.59961 -8 8v16\nc0 4.40039 3.59961 8 8 8h240c4.40039 0 8 3.59961 8 8v16c0 4.40039 -3.59961 8 -8 8h-208c-4.40039 0 -8 3.59961 -8 8v16c0 4.40039 3.59961 8 8 8h240c4.40039 0 8 3.59961 8 8v16c0 4.40039 -3.59961 8 -8 8h-272c-4.40039 0 -8 3.59961 -8 8v16\nc0 4.40039 3.59961 8 8 8h56v48c0 26.5 21.5 48 48 48h256c26.5 0 48 -21.5 48 -48v-48h44.0996c12.7002 0 24.9004 -5.09961 33.9004 -14.0996l99.9004 -99.9004c9 -9 14.0996 -21.2002 14.0996 -33.9004v-108.1h16zM160 -16c26.5 0 48 21.5 48 48s-21.5 48 -48 48\ns-48 -21.5 -48 -48s21.5 -48 48 -48zM480 -16c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48zM560 192v12.0996l-99.9004 99.9004h-44.0996v-112h144z\" />\n    <glyph glyph-name=\"smoking\" unicode=\"&#xf48d;\" horiz-adv-x=\"640\" \nd=\"M632 96c4.40039 0 8 -3.59961 8 -8v-144c0 -4.40039 -3.59961 -8 -8 -8h-48c-4.40039 0 -8 3.59961 -8 8v144c0 4.40039 3.59961 8 8 8h48zM553.3 360.9c54.2998 -36.4004 86.7002 -97.1006 86.7002 -162.601v-30.2998c0 -4.40039 -3.59961 -8 -8 -8h-48\nc-4.40039 0 -8 3.59961 -8 8v30.2998c0 50.2002 -25.2002 96.7002 -67.4004 124c-18.3994 12 -28.5996 33.4004 -28.5996 55.4004v62.2998c0 4.40039 3.59961 8 8 8h48c4.40039 0 8 -3.59961 8 -8v-62.2998c0 -6.7998 3.59961 -13 9.2998 -16.7998zM432 96\nc8.7998 0 16 -7.2002 16 -16v-128c0 -8.7998 -7.2002 -16 -16 -16h-384c-26.5 0 -48 21.5 -48 48v64c0 26.5 21.5 48 48 48h384zM400 -16v64h-176v-64h176zM487.7 306.4c35.2998 -24.7002 56.2998 -64.8008 56.2998 -108.101v-30.2998c0 -4.40039 -3.59961 -8 -8 -8h-48\nc-4.40039 0 -8 3.59961 -8 8v30.2998c0 27.4004 -13.2998 52.9004 -35.7002 68.6006c-35.7002 25.0996 -60.2998 63 -60.2998 106.699v66.4004c0 4.40039 3.59961 8 8 8h48c4.40039 0 8 -3.59961 8 -8v-62.2998c0 -29 15.7998 -54.7002 39.7002 -71.2998zM536 96\nc4.40039 0 8 -3.59961 8 -8v-144c0 -4.40039 -3.59961 -8 -8 -8h-48c-4.40039 0 -8 3.59961 -8 8v144c0 4.40039 3.59961 8 8 8h48z\" />\n    <glyph glyph-name=\"syringe\" unicode=\"&#xf48e;\" \nd=\"M201.5 273.2l64.9004 65l135.699 -135.7l-181.899 -181.9c-17.5 -17.5996 -41.5 -25.5996 -65.4004 -23l-63.5996 7.10059l-66.2998 -66.2998c-3.10059 -3.10059 -8.2002 -3.10059 -11.3008 0l-11.2998 11.2998c-3.09961 3.09961 -3.09961 8.2002 0 11.2998\nl66.4004 66.4004l-7.10059 63.5996c-2.59961 24.2998 5.7002 48.0996 23 65.4004l26.4004 26.3994l55.7998 -55.8994c3.10059 -3.10059 8.2002 -3.10059 11.2998 0l11.3008 11.2998c3.09961 3.09961 3.09961 8.2002 0 11.2998l-55.8008 55.7998l45.3008 45.2998\nl55.6992 -55.7998c3.10059 -3.09961 8.2002 -3.09961 11.3008 0l11.2998 11.2998c3.09961 3.10059 3.09961 8.2002 0 11.3008zM509.7 366.5c3.09961 -3.2002 3.09961 -8.2002 0 -11.4004l-11.2998 -11.2998c-3.10059 -3.09961 -8.2002 -3.09961 -11.3008 0l-28.2998 28.2998\nl-45.2998 -45.2998l73.5 -73.5c3.09961 -3.09961 3.09961 -8.2002 0 -11.2998l-33.9004 -34c-3.09961 -3.09961 -8.19922 -3.09961 -11.2998 0l-17 17l-135.7 135.9l-17 17c-3.09961 3.09961 -3.09961 8.19922 0 11.2998l33.9004 33.8994\nc3.09961 3.10059 8.2002 3.10059 11.2998 0l17 -17l56.6006 -56.5996l45.2998 45.2998l-28.2998 28.2998c-3.10059 3.10059 -3.10059 8.2002 0 11.3008l11.2998 11.2998c3.09961 3.09961 8.2002 3.09961 11.2998 0z\" />\n    <glyph glyph-name=\"tablets\" unicode=\"&#xf490;\" horiz-adv-x=\"640\" \nd=\"M160 256c81.0996 0 147.5 -58.5 160 -134.7c0.799805 -4.7998 -3.2998 -9.2998 -8.2998 -9.2998h-303.3c-5 0 -9.10059 4.5 -8.30078 9.2998c12.4004 76.2002 78.8008 134.7 159.9 134.7zM311.6 80c5 0 9.10059 -4.5 8.30078 -9.2998\nc-12.4004 -76.2002 -78.8008 -134.7 -159.9 -134.7s-147.5 58.5 -159.9 134.7c-0.799805 4.7998 3.30078 9.2998 8.30078 9.2998h303.199zM593.4 401.4c56.5 -56.5 61.3994 -144.2 15.8994 -206.9c-2.7998 -4 -8.7998 -4.2998 -12.2998 -0.799805l-211.3 211.399\nc-3.5 3.40039 -3.2002 9.40039 0.799805 12.3008c62.7002 45.3994 150.4 40.5 206.9 -16zM363 382.3l211.3 -211.3c3.5 -3.40039 3.2002 -9.40039 -0.799805 -12.2998c-62.7002 -45.5 -150.4 -40.6006 -206.9 15.8994c-56.3994 56.5 -61.2998 144.2 -15.8994 206.9\nc2.7998 4 8.7998 4.2998 12.2998 0.799805z\" />\n    <glyph glyph-name=\"thermometer\" unicode=\"&#xf491;\" \nd=\"M476.8 427.6c49.4004 -40.6992 42.1006 -107.3 7.2002 -142.199l-254.2 -253.301h-99.8994l-89 -89c-9.30078 -9.39941 -24.5 -9.39941 -33.9004 0c-9.40039 9.30078 -9.40039 24.5 0 33.9004l89 89v100.9l45.2998 45.6992l50.1006 -50.1992\nc3.09961 -3.10059 8.19922 -3.10059 11.2998 0l11.2998 11.2998c3.09961 3.09961 3.09961 8.2002 0 11.2998l-50.0996 50.2002l45.0996 45.3994l50.2998 -50.1992c3.10059 -3.10059 8.2002 -3.10059 11.2998 0l11.3008 11.2998c3.09961 3.09961 3.09961 8.2002 0 11.2998\nl-50.3008 50.4004l45.1006 45.3994l50.3994 -50.5c3.10059 -3.09961 8.2002 -3.09961 11.3008 0l11.2998 11.2998c3.09961 3.10059 3.09961 8.2002 0 11.3008l-50.5 50.5l45.7002 46c36.3994 36.5 94.3994 40.8994 131.899 10.1992z\" />\n    <glyph glyph-name=\"vial\" unicode=\"&#xf492;\" horiz-adv-x=\"480\" \nd=\"M477.7 261.9c3.09961 -3.10059 3.09961 -8.2002 0 -11.2002l-34 -33.9004c-3.10059 -3.09961 -8.2002 -3.09961 -11.2998 0l-11.2002 11.1006l-246.3 -245.7c-20.1006 -20.1006 -46.5 -30.1006 -72.9004 -30.1006c-28.9004 -0.0996094 -57.7998 11.9004 -78.4004 35.9004\nc-35.6992 41.5 -29.3994 104.8 9.40039 143.5l242.4 241.9l-11.2002 11.0996c-3.10059 3.09961 -3.10059 8.2002 0 11.2998l34 33.9004c3.09961 3.09961 8.2002 3.09961 11.2998 0zM318 192l69.5 69.4004l-78.5 78.2998l-148 -147.7h157z\" />\n    <glyph glyph-name=\"vials\" unicode=\"&#xf493;\" horiz-adv-x=\"640\" \nd=\"M72 384c-4.40039 0 -8 3.59961 -8 8v48c0 4.40039 3.59961 8 8 8h208c4.40039 0 8 -3.59961 8 -8v-48c0 -4.40039 -3.59961 -8 -8 -8h-24v-240c0 -44.0996 -35.9004 -80 -80 -80s-80 35.9004 -80 80v240h-24zM144 384v-96h64v96h-64zM624 0c8.7998 0 16 -7.2002 16 -16\nv-32c0 -8.7998 -7.2002 -16 -16 -16h-608c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h608zM360 384c-4.40039 0 -8 3.59961 -8 8v48c0 4.40039 3.59961 8 8 8h208c4.40039 0 8 -3.59961 8 -8v-48c0 -4.40039 -3.59961 -8 -8 -8h-24v-240\nc0 -44.0996 -35.9004 -80 -80 -80s-80 35.9004 -80 80v240h-24zM432 384v-96h64v96h-64z\" />\n    <glyph glyph-name=\"warehouse\" unicode=\"&#xf494;\" horiz-adv-x=\"640\" \nd=\"M504 96c4.40039 0 8 -3.59961 8 -8v-48c0 -4.40039 -3.59961 -8 -8 -8h-367.7c-4.39941 0 -8 3.59961 -8 8l0.100586 48c0 4.40039 3.59961 8 8 8h367.6zM504 0c4.40039 0 8 -3.59961 8 -8v-48c0 -4.40039 -3.59961 -8 -8 -8h-368c-4.40039 0 -8 3.59961 -8 8\nl0.0996094 48c0 4.40039 3.60059 8 8 8h367.9zM504 192c4.40039 0 8 -3.59961 8 -8v-48c0 -4.40039 -3.59961 -8 -8 -8h-367.5c-4.40039 0 -8 3.59961 -8 8l0.0996094 48c0 4.40039 3.60059 8 8 8h367.4zM610.5 331c17.7998 -7.5 29.5 -24.9004 29.5 -44.2998v-342.7\nc0 -4.40039 -3.59961 -8 -8 -8h-80c-4.40039 0 -8 3.59961 -8 8v248c0 17.5996 -14.5996 32 -32.5996 32h-382.801c-18 0 -32.5996 -14.4004 -32.5996 -32v-248c0 -4.40039 -3.59961 -8 -8 -8h-80c-4.40039 0 -8 3.59961 -8 8v342.7c0 19.3994 11.7002 36.7998 29.5 44.2998\nl272 113.3c4.89062 2.0293 13.1553 3.6748 18.4502 3.6748c5.29395 0 13.5596 -1.64551 18.4502 -3.6748z\" />\n    <glyph glyph-name=\"weight\" unicode=\"&#xf496;\" \nd=\"M448 384c35.29 0 64 -28.71 64 -64v-320c0 -35.29 -28.71 -64 -64 -64h-384c-35.29 0 -64 28.71 -64 64v320c0 35.29 28.71 64 64 64h25.9805c-16.4209 -28.2803 -25.9805 -61.0098 -25.9805 -96c0 -105.87 86.1299 -192 192 -192s192 86.1299 192 192\nc0 34.9902 -9.55957 67.7197 -25.9805 96h25.9805zM256 128c-88.3701 0 -160 71.6299 -160 160s71.6299 160 160 160s160 -71.6299 160 -160s-71.6299 -160 -160 -160zM255.7 279.94c-21.9404 -0.170898 -39.7002 -17.96 -39.7002 -39.9404c0 -22.0898 17.9102 -40 40 -40\ns40 17.9102 40 40c0 10.5498 -4.26953 20 -10.9502 27.1602l33.6699 78.5498c3.4707 8.11035 -0.290039 17.5205 -8.41016 21c-8.08984 3.50977 -17.5293 -0.240234 -21.0293 -8.41016z\" />\n    <glyph glyph-name=\"x-ray\" unicode=\"&#xf497;\" horiz-adv-x=\"640\" \nd=\"M240 64c8.7998 0 16 -7.2002 16 -16s-7.2002 -16 -16 -16s-16 7.2002 -16 16s7.2002 16 16 16zM400 32c-8.7998 0 -16 7.2002 -16 16s7.2002 16 16 16s16 -7.2002 16 -16s-7.2002 -16 -16 -16zM624 448c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16\nh-608c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h608zM624 0c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-608c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h48v352h512v-352h48zM480 200v16c0 4.40039 -3.59961 8 -8 8\nh-136v32h104c4.40039 0 8 3.59961 8 8v16c0 4.40039 -3.59961 8 -8 8h-104v24c0 4.40039 -3.59961 8 -8 8h-16c-4.40039 0 -8 -3.59961 -8 -8v-24h-104c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h104v-32h-136c-4.40039 0 -8 -3.59961 -8 -8v-16\nc0 -4.40039 3.59961 -8 8 -8h136v-32h-104c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h104v-32h-64c-26.5 0 -48 -21.5 -48 -48s21.5 -48 48 -48s48 21.5 48 48v16h64v-16c0 -26.5 21.5 -48 48 -48s48 21.5 48 48s-21.5 48 -48 48h-64v32h104\nc4.40039 0 8 3.59961 8 8v16c0 4.40039 -3.59961 8 -8 8h-104v32h136c4.40039 0 8 3.59961 8 8z\" />\n    <glyph glyph-name=\"box-open\" unicode=\"&#xf49e;\" horiz-adv-x=\"640\" \nd=\"M425.7 192c4.5 0 9 0.599609 13.2998 1.90039l137 39.0996v-178c0 -14.5996 -10 -27.4004 -24.2002 -31l-216.399 -54.0996c-10.1006 -2.5 -20.8008 -2.5 -31 0l-216.2 54.0996c-14.2002 3.5 -24.2002 16.2998 -24.2002 31v178l137 -39.2002\nc4.2998 -1.2998 8.7998 -1.89941 13.2998 -1.89941c16.9004 0 32.7998 9 41.5 23.5l64.2002 106.6l64.2998 -106.6c8.60059 -14.4004 24.5 -23.4004 41.4004 -23.4004zM638.3 304.2c4.5 -9.2002 -0.299805 -20.2002 -10.2002 -23.1006l-197.899 -56.5\nc-7.10059 -2 -14.7002 1 -18.5 7.30078l-91.7002 152.1l250.1 31.9004c6.90039 0.899414 13.6006 -2.7002 16.7002 -8.90039zM53.2002 407c3.09961 6.2002 9.7002 9.7002 16.5996 8.90039l250.2 -31.9004l-91.7998 -152c-3.7998 -6.2998 -11.4004 -9.2998 -18.5 -7.2998\nl-197.9 56.5c-9.7998 2.7998 -14.7002 13.7998 -10.0996 23z\" />\n    <glyph glyph-name=\"comment-dots\" unicode=\"&#xf4ad;\" \nd=\"M256 416c141.4 0 256 -93.0996 256 -208s-114.6 -208 -256 -208c-38.4004 0 -74.7002 7.09961 -107.4 19.4004c-24.5996 -19.6006 -74.2998 -51.4004 -140.6 -51.4004c-3.2002 0 -6 1.7998 -7.2998 4.7998s-0.700195 6.40039 1.5 8.7002\nc0.5 0.5 42.2998 45.4004 54.7998 95.7998c-35.5996 35.7002 -57 81.1006 -57 130.7c0 114.9 114.6 208 256 208zM128 176c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM256 176c17.7002 0 32 14.2998 32 32\ns-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM384 176c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32z\" />\n    <glyph glyph-name=\"comment-slash\" unicode=\"&#xf4b3;\" horiz-adv-x=\"640\" \nd=\"M64 208c0 18.5996 3.2998 36.5 8.90039 53.5996l325.5 -251.6c-24.7002 -6.40039 -51 -10 -78.4004 -10c-38.4004 0 -74.7002 7.09961 -107.4 19.4004c-24.5996 -19.6006 -74.2998 -51.4004 -140.6 -51.4004c-3.2002 0 -6 1.90039 -7.2998 4.7998\nc-1.2998 3 -0.700195 6.40039 1.5 8.7002c0.5 0.599609 42.2002 45.5 54.7998 95.7998c-35.5996 35.7002 -57 81.1006 -57 130.7zM633.8 -10.0996c7 -5.40039 8.2998 -15.5 2.90039 -22.3008l-19.6006 -25.2998c-5.5 -7 -15.5 -8.2002 -22.5 -2.7998l-588.399 454.7\nc-7 5.39941 -8.2002 15.3994 -2.7998 22.3994l19.5996 25.2002c5.5 7 15.5 8.2002 22.5 2.7998l105.1 -81.2998c45.2002 32.6006 104.301 52.7002 169.4 52.7002c141.4 0 256 -93.0996 256 -208c0 -49.2002 -21.4004 -94.0996 -56.5996 -129.7z\" />\n    <glyph glyph-name=\"couch\" unicode=\"&#xf4b8;\" horiz-adv-x=\"640\" \nd=\"M160 224c0 35.2998 -28.7002 64 -64 64h-32c0 53 43 96 96 96h320c53 0 96 -43 96 -96h-32c-35.2998 0 -64 -28.7002 -64 -64v-64h-320v64zM576 256c35.2998 0 64 -28.7002 64 -64c0 -23.5996 -13 -44 -32 -55.0996v-120.9c0 -8.7998 -7.2002 -16 -16 -16h-64\nc-8.7998 0 -16 7.2002 -16 16v16h-384v-16c0 -8.7998 -7.2002 -16 -16 -16h-64c-8.7998 0 -16 7.2002 -16 16v120.9c-19 11.0996 -32 31.5 -32 55.0996c0 35.2998 28.7002 64 64 64h32c17.7002 0 32 -14.2998 32 -32v-96h384v96c0 17.7002 14.2998 32 32 32h32z\" />\n    <glyph glyph-name=\"donate\" unicode=\"&#xf4b9;\" \nd=\"M256 32c-114.9 0 -208 93.0996 -208 208s93.0996 208 208 208s208 -93.0996 208 -208s-93.0996 -208 -208 -208zM233.8 350.6c-32.7002 -0.899414 -59 -28.3994 -59.0996 -62.3994c0 -27.7002 18 -52.4004 43.7002 -60.1006l62.2998 -18.6992\nc7.09961 -2.10059 12.0996 -9.40039 12.0996 -17.6006c0 -10.0996 -7.2998 -18.2998 -16.2998 -18.2998h-38.9004c-6.39941 0 -12.3994 1.7002 -17.7998 5.09961c-4.5 2.80078 -10.2002 2.7002 -14 -1l-16.2998 -15.5c-5 -4.7998 -4.40039 -13 1.2002 -17.0996\nc12.5 -9.2998 27.5 -14.5996 43 -15.4004v-17c0 -9.19922 7.39941 -16.5996 16.5996 -16.5996h11.1006c9.19922 0 16.5996 7.40039 16.5996 16.5996v16.8008c32.7002 0.899414 59.0996 28.3994 59.0996 62.3994c0 27.7002 -18 52.4004 -43.6992 60.1006l-62.3008 18.6992\nc-7.09961 2.10059 -12.0996 9.40039 -12.0996 17.6006c0 10.0996 7.2998 18.2998 16.2998 18.2998h38.9004c6.39941 0 12.3994 -1.7002 17.7998 -5.09961c4.5 -2.80078 10.2002 -2.7002 14 1l16.2998 15.5c5 4.7998 4.40039 13 -1.2002 17.0996\nc-12.5 9.2998 -27.5 14.5996 -43 15.4004v17c0 9.19922 -7.39941 16.5996 -16.5996 16.5996h-11.0996c-9.2002 0 -16.6006 -7.40039 -16.6006 -16.5996v-16.8008zM480 96c17.7002 0 32 -14.2998 32 -32v-96c0 -17.7002 -14.2998 -32 -32 -32h-448\nc-17.7002 0 -32 14.2998 -32 32v96c0 17.7002 14.2998 32 32 32h32.4004c19.6992 -26 44.5996 -47.7002 73 -64h-63.8008c-5.2998 0 -9.59961 -3.59961 -9.59961 -8v-16c0 -4.40039 4.2998 -8 9.59961 -8h364.7c5.2998 0 9.60059 3.59961 9.60059 8v16\nc0 4.40039 -4.30078 8 -9.60059 8h-63.7998c28.4004 16.2998 53.4004 38 73 64h32.5z\" />\n    <glyph glyph-name=\"dove\" unicode=\"&#xf4ba;\" \nd=\"M288 280.8c-50.7998 10.5 -96.5996 36.7998 -130.8 75.1006c11.2002 32.3994 27.7998 61.5996 48.8994 86.5c8.80078 10.5 25.7002 5.19922 27.8008 -8.30078c7 -45.8994 25.8994 -88.8994 54.0996 -125.199v-28.1006zM400 384h112l-32 -64v-160.1\nc0 -88.4004 -71.5996 -159.9 -160 -159.9h-76.9004l-65.1992 -56.0996c-6.10059 -5.30078 -14.1006 -8.2002 -22.1006 -7.90039c-92.7998 3.7998 -135.8 49.4004 -153.2 76.2998c-6 9.2998 -1.19922 21.7002 9.5 24.4004l143.9 36\nc-12.7998 9.59961 -25.7002 20.0996 -38.9004 32.7998c-51 49 -85.0996 115.1 -85.0996 185.9c0 41.3994 9.40039 80.5996 26 115.699c5.7998 12.3008 23.5 11.6006 29 -0.899414c40 -91.2002 128.6 -155.5 233 -161.7v59.4004c0 44.1992 35.7998 80.0996 80 80.0996z\nM400 287.9c8.7998 0 16 7.19922 16 16c0 8.7998 -7.2002 16 -16 16s-16 -7.2002 -16 -16c0 -8.80078 7.2002 -16 16 -16z\" />\n    <glyph glyph-name=\"hand-holding\" unicode=\"&#xf4bd;\" horiz-adv-x=\"576\" \nd=\"M565.3 119.9c15.1006 -13.6006 13.9004 -36.8008 -1.2998 -48.9004l-151.2 -121c-11.3994 -9.09961 -25.5 -14 -40 -14h-356.8c-8.7998 0 -16 7.2002 -16 16v96c0 8.7998 7.2002 16 16 16h55.4004l46.5 37.7002c21 17 47.0996 26.2998 74.0996 26.2998h160\nc19.5 0 34.9004 -17.4004 31.5996 -37.4004c-2.59961 -15.6992 -17.3994 -26.5996 -33.2998 -26.5996h-78.2998c-8.7998 0 -16 -7.2002 -16 -16s7.2002 -16 16 -16h118.3c14.6006 0 28.7002 4.90039 40 14l92.4004 73.9004c12.3994 10 30.7998 10.6992 42.5996 0z\" />\n    <glyph glyph-name=\"hand-holding-heart\" unicode=\"&#xf4be;\" horiz-adv-x=\"576\" \nd=\"M275.3 197.5l-108.899 114.2c-31.6006 33.2002 -29.7002 88.2002 5.59961 118.8c30.7998 26.7002 76.7002 21.9004 104.9 -7.7998l11.0996 -11.6006l11.2002 11.7002c28.2002 29.6006 74.0996 34.4004 104.899 7.7002c35.4004 -30.5996 37.2002 -85.5996 5.60059 -118.8\nl-108.9 -114.2c-7.09961 -7.40039 -18.5 -7.40039 -25.5 0zM565.3 119.9c15.1006 -13.6006 13.9004 -36.8008 -1.2998 -48.9004l-151.2 -121c-11.3994 -9.09961 -25.5 -14 -40 -14h-356.8c-8.7998 0 -16 7.2002 -16 16v96c0 8.7998 7.2002 16 16 16h55.4004l46.5 37.7002\nc21 17 47.0996 26.2998 74.0996 26.2998h160c19.5 0 34.9004 -17.4004 31.5996 -37.4004c-2.59961 -15.6992 -17.3994 -26.5996 -33.2998 -26.5996h-78.2998c-8.7998 0 -16 -7.2002 -16 -16s7.2002 -16 16 -16h118.3c14.6006 0 28.7002 4.90039 40 14l92.4004 73.9004\nc12.3994 10 30.7998 10.6992 42.5996 0z\" />\n    <glyph glyph-name=\"hand-holding-usd\" unicode=\"&#xf4c0;\" horiz-adv-x=\"544\" \nd=\"M257.6 303.7c-22.1992 6.39941 -40 24.7002 -42.8994 47.7002c-4 32 19 59.3994 49.2998 63v17.5996c0 8.7998 7.2002 16 16 16h16c8.7998 0 16 -7.2002 16 -16v-17.7002c11.5 -1.39941 22.2998 -5.2002 31.7998 -11.5c6.2002 -4.09961 6.7998 -13.0996 1.5 -18.3994\nl-17.5 -17.5c-3.7002 -3.7002 -9.2998 -4.2002 -14.0996 -2c-3.2002 1.39941 -6.7002 2.19922 -10.2998 2.19922h-32.8008c-4.59961 0 -8.39941 -3.7998 -8.39941 -8.39941c0 -3.7002 2.5 -7.10059 6.09961 -8.10059l50 -14.2998\nc22.2002 -6.39941 40 -24.7002 42.9004 -47.7002c4 -32 -19 -59.3994 -49.2998 -63v-17.5996c0 -8.7998 -7.2002 -16 -16 -16h-16c-8.80078 0 -16 7.2002 -16 16v17.7002c-11.5 1.39941 -22.3008 5.2002 -31.8008 11.5c-6.19922 4.09961 -6.7998 13.0996 -1.5 18.3994\nl17.5 17.5c3.7002 3.7002 9.30078 4.2002 14.1006 2c3.2002 -1.39941 6.7002 -2.19922 10.2998 -2.19922h32.7998c4.60059 0 8.40039 3.7998 8.40039 8.39941c0 3.7002 -2.5 7.10059 -6.10059 8.10059zM533.9 119.9c14.1992 -13.6006 13.0996 -36.8008 -1.30078 -48.9004\nl-142.8 -121c-10.7998 -9.09961 -24.0996 -14 -37.7998 -14h-336.9c-8.2998 0 -15.0996 7.2002 -15.0996 16v96c0 8.7998 6.7998 16 15.0996 16h52.4004l43.9004 37.7002c19.6992 17 44.3994 26.2998 69.8994 26.2998h151.101c18.2998 0 32.8994 -17.4004 29.7998 -37.4004\nc-2.40039 -15.6992 -16.2998 -26.5996 -31.4004 -26.5996h-73.8994c-8.30078 0 -15.1006 -7.2002 -15.1006 -16s6.7998 -16 15.1006 -16h111.699c13.8008 0 27.1006 4.90039 37.8008 14l87.1992 73.9004c11.8008 10 29.1006 10.6992 40.3008 0z\" />\n    <glyph glyph-name=\"hands\" unicode=\"&#xf4c2;\" horiz-adv-x=\"640\" \nd=\"M204.8 217.6l57.6006 -76.7998c16.5996 -22.2002 25.5996 -49.0996 25.5996 -76.7998v-112c0 -8.7998 -7.2002 -16 -16 -16h-131.7c-7.2002 0 -13.5 4.7002 -15.2998 11.5996c-2 7.80078 -5.40039 15.2002 -10.4004 21.7002l-104.1 134.3\nc-6.7998 8.5 -10.5 19.1006 -10.5 30v218.4c0 17.7002 14.2998 32 32 32s32 -14.2998 32 -32v-148.4l89.7998 -107.8c6 -7.2998 16.9004 -7.7998 23.6006 -1.09961l12.7998 12.7998c5.59961 5.59961 6.2998 14.5 1.5 20.9004l-38.1006 50.7998\nc-10.5996 14.0996 -7.69922 34.2002 6.40039 44.7998s34.2002 7.7002 44.7998 -6.40039zM608 384c17.7002 0 32 -14.2998 32 -32v-218.4c0 -10.8994 -3.7002 -21.5 -10.5 -30l-104.1 -134.3c-5 -6.5 -8.40039 -13.8994 -10.4004 -21.7002\nc-1.7998 -6.89941 -8.2002 -11.5996 -15.2998 -11.5996h-131.7c-8.7998 0 -16 7.2002 -16 16v112c0 27.7002 9 54.5996 25.5996 76.7998l57.6006 76.7998c10.5996 14.1006 30.7002 17 44.7998 6.40039s17 -30.7002 6.40039 -44.7998l-38.1006 -50.7998\nc-4.7998 -6.40039 -4.09961 -15.3008 1.5 -20.9004l12.7998 -12.7998c6.60059 -6.60059 17.6006 -6.10059 23.6006 1.09961l89.7998 107.8v148.4c0 17.7002 14.2998 32 32 32z\" />\n    <glyph glyph-name=\"hands-helping\" unicode=\"&#xf4c4;\" horiz-adv-x=\"640\" \nd=\"M488 256c13.2998 0 24 -10.7002 24 -24v-48c0 -13.2998 -10.7002 -24 -24 -24h-8v-64c0 -17.7002 -14.2998 -32 -32 -32h-16c0 -35.2998 -28.7002 -64 -64 -64h-136.6l-103.4 -59.7002c-15.2998 -8.7998 -34.9004 -3.59961 -43.7002 11.7002l-80 138.6\nc-8.89941 15.3008 -3.59961 34.9004 11.7002 43.7002l80 46.2002v47.2998c0 22.4004 11.7998 43.2998 31.0996 54.7998l64.9004 39v-121.6c0 -39.7002 32.2998 -72 72 -72s72 32.2998 72 72v56h152zM635.7 293.4c8.7998 -15.3008 3.59961 -34.8008 -11.7002 -43.7002\nl-80 -46.2002v28.5c0 30.9004 -25.0996 56 -56 56h-184v-88c0 -22.0996 -17.9004 -40 -40 -40s-40 17.9004 -40 40v126.3c0 11 5.59961 21.2998 15 27.1006l33.5 20.8994c10.2002 6.2998 21.9004 9.7002 33.9004 9.7002h102.199l103.4 59.7002\nc15.2998 8.7998 34.9004 3.59961 43.7002 -11.7002z\" />\n    <glyph glyph-name=\"parachute-box\" unicode=\"&#xf4cd;\" \nd=\"M511.9 273c1.09961 -9.2002 -6.80078 -17 -16.1006 -17h-8.7002l-136.8 -151.9c0.700195 -2.69922 1.60059 -5.19922 1.60059 -8.09961v-128c0 -17.7002 -14.3008 -32 -32 -32h-128c-17.7002 0 -32 14.2998 -32 32v128c0 2.90039 0.899414 5.5 1.59961 8.09961\nl-136.7 151.9h-8.7002c-9.19922 0 -17.0996 7.90039 -16 17c9.10059 75.5 78.4004 132.3 158.301 158.7c-36.4004 -39.4004 -62.4004 -100.601 -62.4004 -175.7h-28.0996l116.6 -129.5c2.5 0.599609 4.7998 1.5 7.5 1.5h48v128h-112c0 115.2 68.9004 192 128 192\ns128 -76.7998 128 -192h-112v-128h48c2.7002 0 5 -0.900391 7.5 -1.5l116.6 129.5h-28.0996c0 75.0996 -26 136.3 -62.4004 175.7c79.9004 -26.2998 149.2 -83.1006 158.301 -158.7z\" />\n    <glyph glyph-name=\"people-carry\" unicode=\"&#xf4ce;\" horiz-adv-x=\"640\" \nd=\"M128 352c-26.5 0 -48 21.5 -48 48s21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48zM512 352c-26.5 0 -48 21.5 -48 48s21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48zM637.7 -20.0996c6.59961 -16.4004 -1.40039 -35 -17.7998 -41.6006\nc-3.90039 -1.59961 -7.90039 -2.2998 -11.9004 -2.2998c-12.7002 0 -24.7002 7.59961 -29.7002 20.0996l-27.7002 69.2002l2 18.2002l41.1006 46.4004zM603.5 189.7c4.59961 -20 -0.799805 -41.2002 -14.4004 -56.7002l-67.1992 -75.9004l-10.1006 -92.5996\nc-1.7998 -16.4004 -15.7002 -28.5 -31.7998 -28.5c-1.2002 0 -2.2998 0.0996094 -3.5 0.200195c-17.5 1.89941 -30.2002 17.7002 -28.2998 35.2998l10.0996 92.7998c1.5 13 6.90039 25.1006 15.6006 35l43.2998 49l-17.6006 70.2998l-6.7998 -20.3994\nc-4.09961 -12.6006 -11.8994 -23.4004 -24.5 -32.6006l-51.0996 -32.5c-4.60059 -2.89941 -12.1006 -4.59961 -17.2002 -5h-160c-5.09961 0.400391 -12.5996 2.10059 -17.2002 5l-51.0996 32.5c-12.6006 9.2002 -20.4004 20.1006 -24.5 32.6006l-6.7998 20.3994\nl-17.6006 -70.2998l43.2998 -49c8.7002 -9.89941 14.1006 -22 15.6006 -35l10.0996 -92.7998c1.90039 -17.5996 -10.7002 -33.4004 -28.2998 -35.2998c-1.2002 -0.100586 -2.2998 -0.200195 -3.5 -0.200195c-16.2002 0 -30 12.2002 -31.7998 28.5l-10.1006 92.5996\nl-67.1992 75.9004c-13.7002 15.5 -19 36.7002 -14.4004 56.7002l18.4004 80.2002c4.59961 20 18.5996 36.7998 37.5 44.8994c18.5 8 38.8994 6.7002 56.0996 -3.2998c22.7002 -13.4004 39.7998 -34.4004 48.0996 -59.4004l11.3008 -33.8994l16.0996 -10.2002v96\nc0 8.7998 7.2002 16 16 16h160c8.7998 0 16 -7.2002 16 -16v-96l16 10.2002l11.2998 33.8994c8.40039 24.9004 25.4004 46 48.1006 59.4004c17.0996 10 37.5996 11.2998 56.0996 3.2998c18.9004 -8.09961 32.9004 -24.8994 37.5 -44.8994zM46.2998 89.9004l41.1006 -46.4004\nl2 -18.2002l-27.7002 -69.2002c-6.5 -16.0996 -24.7998 -24.3994 -41.6006 -17.7998c-16.3994 6.60059 -24.3994 25.2002 -17.7998 41.6006z\" />\n    <glyph glyph-name=\"piggy-bank\" unicode=\"&#xf4d3;\" horiz-adv-x=\"576\" \nd=\"M560 224c8.7998 0 16 -7.2002 16 -16v-128c0 -8.7998 -7.2002 -16 -16 -16h-48.7002c-9 -11.9004 -19.5 -22.4004 -31.2998 -31.2998v-80.7002c0 -8.7998 -7.2002 -16 -16 -16h-64c-8.7998 0 -16 7.2002 -16 16v48h-128v-48c0 -8.7998 -7.2002 -16 -16 -16h-64\nc-8.7998 0 -16 7.2002 -16 16v80.7002c-38.5996 29.2002 -64 75.0996 -64 127.3h-40c-33.2998 0 -59.9004 29.2002 -55.5 63.4004c3.59961 28.1992 29 48.5996 57.5 48.5996c3.2998 0 6 -2.7002 6 -6v-20c0 -3.2998 -2.7002 -6 -6 -6h-1\nc-11.5996 0 -22.2998 -7.7998 -24.5 -19.2002c-3 -15.2998 8.7002 -28.7998 23.5 -28.7998h43.2002c14.8994 73 79.3994 128 156.8 128h128c7.90039 0 15.4004 -1.2002 23 -2.2998c17.5996 20.7998 43.5996 34.2998 73 34.2998h32l-18.9004 -75.5\nc15.8008 -14.7998 28.6006 -32.5 37.4004 -52.5h29.5zM432 160c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM256 352c-16.4004 0 -32.2002 -2.2998 -47.4004 -6.2002c-0.0996094 2.10059 -0.599609 4.10059 -0.599609 6.2002\nc0 53 43 96 96 96s96 -43 96 -96c0 -0.299805 -0.0996094 -0.5 -0.0996094 -0.799805c-5.2002 0.399414 -10.5 0.799805 -15.9004 0.799805h-128z\" />\n    <glyph glyph-name=\"ribbon\" unicode=\"&#xf4d6;\" horiz-adv-x=\"448\" \nd=\"M6.09961 3.7002l117.2 130l79.2002 -87.9004l-91.7998 -101.899c-8 -8.80078 -21.4004 -10.5 -31.2998 -3.80078l-68.8008 27.9004c-12 8.09961 -14.0996 24.9004 -4.5 35.7002zM441.9 3.7002c9.69922 -10.7998 7.59961 -27.6006 -4.30078 -35.6006l-68.7998 -27.8994\nc-9.89941 -6.7002 -23.2998 -5.10059 -31.2998 3.7998l-248.1 275.3c-48.6006 53.7998 -13 113.5 -11.5 116l43.5996 73.2002c4.2998 7.2002 9.90039 13.2998 16.7998 18c44 29.7002 130.7 27.5996 171.4 0c6.89941 -4.7002 12.5 -10.7998 16.7998 -18l43.7002 -73.5\nc21.8994 -36.9004 17.2998 -83.5996 -11.4004 -115.5l-34.2002 -38l-79.0996 87.7002s52.7002 59 56 64.5996c-15.4004 8.40039 -40.2002 17.9004 -77.5 17.9004s-62.0996 -9.5 -77.5 -17.9004c3.40039 -5.5 295.4 -330.1 295.4 -330.1z\" />\n    <glyph glyph-name=\"route\" unicode=\"&#xf4d7;\" \nd=\"M416 128c52.9004 0 96 -43.0996 96 -96s-43.0996 -96 -96 -96h-277.8c13.5 16.2998 31.2998 39.2002 47.2998 64h230.5c17.5996 0 32 14.4004 32 32s-14.4004 32 -32 32h-96c-52.9004 0 -96 43.0996 -96 96s43.0996 96 96 96h45.2998\nc-23.0996 32.5996 -45.2998 70.5 -45.2998 96c0 53 43 96 96 96s96 -43 96 -96s-96 -160 -96 -160h-96c-17.5996 0 -32 -14.4004 -32 -32s14.4004 -32 32 -32h96zM416 384c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32s32 14.2998 32 32s-14.2998 32 -32 32zM96 192\nc53 0 96 -43 96 -96s-96 -160 -96 -160s-96 107 -96 160s43 96 96 96zM96 64c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32z\" />\n    <glyph glyph-name=\"seedling\" unicode=\"&#xf4d8;\" \nd=\"M64 352c123.7 0 224 -100.3 224 -224v-144c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v144c-123.7 0 -224 100.3 -224 224h64zM448 416h64c0 -115.9 -88 -211.1 -200.7 -222.8c-10.7998 40.7002 -31.2998 77.3994 -59 107.6\nc38.2998 68.7002 111.5 115.2 195.7 115.2z\" />\n    <glyph glyph-name=\"sign\" unicode=\"&#xf4d9;\" \nd=\"M496 384c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-368v-368c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v368h-48c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h48v48c0 8.7998 7.2002 16 16 16h32\nc8.7998 0 16 -7.2002 16 -16v-48h368zM160 64v224h320v-224h-320z\" />\n    <glyph glyph-name=\"smile-wink\" unicode=\"&#xf4da;\" horiz-adv-x=\"496\" \nd=\"M0 192c0 137 111 248 248 248s248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248zM200 240c0 17.7002 -14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32s32 14.2998 32 32zM358.5 223.5l9.7002 -8.5c8.39941 -7.5 21.5 -0.299805 19.7998 10.7998\nc-4 25.2002 -34.2002 42.1006 -59.9004 42.1006c-25.6992 0 -55.8994 -16.9004 -59.8994 -42.1006c-1.7998 -11.2002 11.5 -18.2002 19.7998 -10.7998l9.5 8.5c14.7998 13.2002 46.2002 13.2002 61 0zM157.8 122.2c-13.3994 16.2998 -38.0996 -4.10059 -24.5996 -20.4004\nc28.5 -34.2002 70.2998 -53.7998 114.8 -53.7998s86.2998 19.5996 114.8 53.7002c13.5 16.2998 -11 36.7002 -24.5996 20.5c-22.4004 -26.7998 -55.2002 -42.2002 -90.2002 -42.2002s-67.7998 15.2998 -90.2002 42.2002z\" />\n    <glyph glyph-name=\"tape\" unicode=\"&#xf4db;\" horiz-adv-x=\"640\" \nd=\"M224 256c35.2998 0 64 -28.7002 64 -64s-28.7002 -64 -64 -64s-64 28.7002 -64 64s28.7002 64 64 64zM624 32c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-400c-123.7 0 -224 100.3 -224 224s100.3 224 224 224s224 -100.3 224 -224\nc0 -62.7002 -25.9004 -119.3 -67.4004 -160h243.4zM224 96c53 0 96 43 96 96s-43 96 -96 96s-96 -43 -96 -96s43 -96 96 -96z\" />\n    <glyph glyph-name=\"truck-loading\" unicode=\"&#xf4de;\" horiz-adv-x=\"640\" \nd=\"M50.2002 72.4004l-49.6006 185.5c-2.2998 8.5 2.80078 17.2998 11.3008 19.5996l77.2998 20.7002l24.7998 -92.7002l61.7998 16.5l-24.7998 92.7002l77.2002 20.7998c8.5 2.2998 17.2998 -2.7998 19.5996 -11.2998l49.7002 -185.5\nc2.2998 -8.5 -2.7998 -17.2998 -11.2998 -19.6006l-216.4 -58c-8.5 -2.2998 -17.2998 2.80078 -19.5996 11.3008zM384 448h256v-400c0 -61.9004 -50.0996 -112 -112 -112c-60.4004 0 -109.2 47.9004 -111.6 107.7l-393.7 -107.4\nc-4.2002 -1.2002 -8.60059 1.2998 -9.7998 5.60059l-12.6006 46.2998c-1.2002 4.2002 1.2998 8.59961 5.60059 9.7998l346.1 94.4004v323.6c0 17.7002 14.2998 32 32 32zM528 0c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48z\" />\n    <glyph glyph-name=\"truck-moving\" unicode=\"&#xf4df;\" horiz-adv-x=\"640\" \nd=\"M621.3 210.7c12 -12 18.7002 -28.2002 18.7002 -45.2002v-85.5c0 -8.7998 -7.2002 -16 -16 -16h-17.5996c1 -5.2002 1.59961 -10.5 1.59961 -16c0 -44.2002 -35.7998 -80 -80 -80s-80 35.7998 -80 80c0 5.5 0.5 10.7998 1.59961 16h-163.199\nc1 -5.2002 1.59961 -10.5 1.59961 -16c0 -44.2002 -35.7998 -80 -80 -80c-26.2998 0 -49.4004 12.7998 -64 32.4004c-14.5996 -19.5 -37.7002 -32.4004 -64 -32.4004c-44.2002 0 -80 35.7998 -80 80v336c0 17.7002 14.2998 32 32 32h416c17.7002 0 32 -14.2998 32 -32\nv-96.0996h37.5c17 0 33.2998 -6.7002 45.2998 -18.7002zM80 16c17.5996 0 32 14.4004 32 32s-14.4004 32 -32 32s-32 -14.4004 -32 -32s14.4004 -32 32 -32zM208 16c17.5996 0 32 14.4004 32 32s-14.4004 32 -32 32s-32 -14.4004 -32 -32s14.4004 -32 32 -32zM480 240v-48\nh92.0996l-43.2998 43.2998c-3 3 -7 4.7002 -11.2998 4.7002h-37.5zM528 16c17.5996 0 32 14.4004 32 32s-14.4004 32 -32 32s-32 -14.4004 -32 -32s14.4004 -32 32 -32z\" />\n    <glyph glyph-name=\"video-slash\" unicode=\"&#xf4e2;\" horiz-adv-x=\"640\" \nd=\"M633.8 -10.0996c7 -5.40039 8.2998 -15.5 2.7998 -22.4004l-19.5996 -25.2998c-5.5 -7 -15.5 -8.2002 -22.5 -2.7998l-178.5 138l-373.3 288.6l-36.5 28.2002c-7 5.39941 -8.2002 15.3994 -2.7998 22.3994l19.5996 25.2002c5.5 7 15.5 8.2002 22.5 2.7998\nl78.4004 -60.5996h244.3c26.3994 0 47.7998 -21.4004 47.7998 -47.7998v-178l32 -24.7002v137.2l109.6 75.5996c21.3008 14.6006 50.4004 -0.299805 50.4004 -25.7998v-257c0 -17.4004 -13.7998 -29.7002 -29.2002 -31.0996zM32 47.7998v245.5l365.8 -282.8\nc-8.2002 -6.5 -18.3994 -10.5 -29.5996 -10.5h-288.4c-26.3994 0 -47.7998 21.4004 -47.7998 47.7998z\" />\n    <glyph glyph-name=\"wine-glass\" unicode=\"&#xf4e3;\" horiz-adv-x=\"288\" \nd=\"M216 -16c22.0898 0 40 -17.9102 40 -40c0 -4.41992 -3.58008 -8 -8 -8h-208c-4.41992 0 -8 3.58008 -8 8c0 22.0898 17.9102 40 40 40h40v117.18c-68.4697 15.8906 -118.05 79.9102 -111.4 154.16l15.96 178.11c0.730469 8.24023 7.55078 14.5498 15.7002 14.5498h223.48\nc8.16016 0 14.9697 -6.30957 15.71 -14.5498l15.9502 -178.101c6.64941 -74.25 -42.9307 -138.27 -111.4 -154.159v-117.19h40z\" />\n    <glyph glyph-name=\"user-alt-slash\" unicode=\"&#xf4fa;\" horiz-adv-x=\"640\" \nd=\"M633.8 -10.0996c7 -5.40039 8.2998 -15.5 2.90039 -22.3008l-19.6006 -25.2998c-5.5 -7 -15.5 -8.2002 -22.5 -2.7998l-588.399 454.7c-7 5.39941 -8.2002 15.3994 -2.7998 22.3994l19.5996 25.2002c5.5 7 15.5 8.2002 22.5 2.7998l135.5 -104.8\nc16 62.1006 71.9004 108.2 139 108.2c79.5 0 144 -64.5 144 -144c0 -54.0996 -30.2002 -100.7 -74.4004 -125.3zM198.4 128h47.3994l248.4 -192h-382.2c-26.5 0 -48 21.5 -48 48v9.59961c0 74.2002 60.2002 134.4 134.4 134.4z\" />\n    <glyph glyph-name=\"user-astronaut\" unicode=\"&#xf4fb;\" horiz-adv-x=\"448\" \nd=\"M64 224c-8.7998 0 -16 7.2002 -16 16v96c0 8.7998 7.2002 16 16 16h13.5c24.7002 56.5 80.9004 96 146.5 96s121.8 -39.5 146.5 -96h13.5c8.7998 0 16 -7.2002 16 -16v-96c0 -8.7998 -7.2002 -16 -16 -16h-13.5c-24.7002 -56.5 -80.9004 -96 -146.5 -96\ns-121.8 39.5 -146.5 96h-13.5zM104 312v-24c0 -53 43 -96 96 -96h48c53 0 96 43 96 96v24c0 22.0996 -21.5 40 -48 40h-144c-26.5 0 -48 -17.9004 -48 -40zM176 240l-12 36l-36 12l36 12l12 36l12 -36l36 -12l-36 -12zM327.6 126.6c67.5 -7.09961 120.4 -63.5996 120.4 -133\nv-9.59961c0 -26.5 -21.5 -48 -48 -48h-80v64c0 17.7002 -14.2998 32 -32 32h-128c-17.7002 0 -32 -14.2998 -32 -32v-64h-80c-26.5 0 -48 21.5 -48 48v9.59961c0 69.4004 52.9004 125.9 120.4 133c29.8994 -19.2998 65.3994 -30.5996 103.6 -30.5996\ns73.7002 11.2998 103.6 30.5996zM272 0c8.7998 0 16 -7.2002 16 -16s-7.2002 -16 -16 -16s-16 7.2002 -16 16s7.2002 16 16 16zM176 0c8.7998 0 16 -7.2002 16 -16v-48h-32v48c0 8.7998 7.2002 16 16 16z\" />\n    <glyph glyph-name=\"user-check\" unicode=\"&#xf4fc;\" horiz-adv-x=\"640\" \nd=\"M224 192c-70.7002 0 -128 57.2998 -128 128s57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128zM313.6 160c74.2002 0 134.4 -60.2002 134.4 -134.4v-41.5996c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v41.5996\nc0 74.2002 60.2002 134.4 134.4 134.4h16.6992c22.3008 -10.2002 46.9004 -16 72.9004 -16s50.7002 5.7998 72.9004 16h16.6992zM636.6 288.4c4.60059 -4.60059 4.5 -12.1006 -0.0996094 -16.8008l-141.3 -140.199c-4.7002 -4.60059 -12.2002 -4.60059 -16.7998 0.0996094\nl-81.7002 82.2998c-4.60059 4.7002 -4.60059 12.2002 0.0996094 16.7998l28.1006 27.9004c4.69922 4.59961 12.1992 4.59961 16.7998 -0.0996094l45.5 -45.8008l104.8 104c4.7002 4.60059 12.2002 4.60059 16.7998 -0.0996094z\" />\n    <glyph glyph-name=\"user-clock\" unicode=\"&#xf4fd;\" horiz-adv-x=\"640\" \nd=\"M496 224c79.5996 0 144 -64.4004 144 -144s-64.4004 -144 -144 -144s-144 64.4004 -144 144s64.4004 144 144 144zM560 73.7002v12.5996c0 5.2998 -4.40039 9.7002 -9.7002 9.7002h-38.2998v54.2998c0 5.2998 -4.40039 9.7002 -9.7002 9.7002h-12.5996\nc-5.2998 0 -9.7002 -4.40039 -9.7002 -9.7002v-76.5996c0 -5.2998 4.40039 -9.7002 9.7002 -9.7002h60.5996c5.2998 0 9.7002 4.40039 9.7002 9.7002zM320 80c0 -59.5 29.7998 -112.1 75.0996 -144h-347.1c-26.5 0 -48 21.5 -48 48v41.5996\nc0 74.2002 60.2002 134.4 134.4 134.4h16.6992c22.3008 -10.2002 46.9004 -16 72.9004 -16s50.7002 5.7998 72.9004 16h16.6992c8.40039 0 16.6006 -1 24.6006 -2.5c-11.5 -23.4004 -18.2002 -49.7002 -18.2002 -77.5zM224 192c-70.7002 0 -128 57.2998 -128 128\ns57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128z\" />\n    <glyph glyph-name=\"user-cog\" unicode=\"&#xf4fe;\" horiz-adv-x=\"640\" \nd=\"M610.5 74.7002l25.7998 -14.9004c2.90039 -1.7002 4.2998 -5.2002 3.2998 -8.5c-6.69922 -21.5996 -18.1992 -41.2002 -33.1992 -57.3994c-2.30078 -2.5 -6.10059 -3.10059 -9 -1.40039l-25.8008 14.9004c-10.8994 -9.30078 -23.3994 -16.5 -36.8994 -21.3008v-29.7998\nc0 -3.39941 -2.40039 -6.39941 -5.7002 -7.09961c-21.2002 -4.7998 -43.9004 -5 -66.2002 0c-3.2998 0.700195 -5.7002 3.7002 -5.7002 7.09961v29.7998c-13.5 4.80078 -26 12 -36.8994 21.3008l-25.7998 -14.9004c-3 -1.7002 -6.7002 -1.09961 -9 1.40039\nc-15 16.2998 -26.5 35.7998 -33.2002 57.3994c-1 3.2998 0.299805 6.7998 3.2998 8.5l25.7998 14.9004c-2.59961 14.0996 -2.59961 28.5 0 42.5996l-25.7998 14.9004c-2.90039 1.7002 -4.2998 5.2002 -3.2998 8.5c6.7002 21.5996 18.2002 41.2002 33.2002 57.3994\nc2.2998 2.5 6.09961 3.10059 9 1.40039l25.7998 -14.9004c10.8994 9.30078 23.3994 16.5 36.8994 21.3008v29.7998c0 3.39941 2.40039 6.39941 5.7002 7.09961c21.2002 4.7998 43.9004 5 66.2002 0c3.2998 -0.700195 5.7002 -3.7002 5.7002 -7.09961v-29.7998\nc13.5 -4.80078 26 -12 36.8994 -21.3008l25.8008 14.9004c3 1.7002 6.69922 1.09961 9 -1.40039c15 -16.1992 26.5 -35.7998 33.1992 -57.3994c1 -3.2998 -0.299805 -6.7998 -3.2998 -8.5l-25.7998 -14.9004c2.59961 -14.0996 2.59961 -28.5 0 -42.5996zM496 47.5\nc26.7998 0 48.5 21.7998 48.5 48.5s-21.7998 48.5 -48.5 48.5s-48.5 -21.7998 -48.5 -48.5s21.7002 -48.5 48.5 -48.5zM224 192c-70.7002 0 -128 57.2998 -128 128s57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128zM425.2 -34.5v-9.2002\nc0 -4.09961 0.799805 -8 2 -11.7998c-7.7002 -5.2998 -17.1006 -8.5 -27.2002 -8.5h-352c-26.5 0 -48 21.5 -48 48v41.5996c0 74.2002 60.2002 134.4 134.4 134.4h16.6992c22.3008 -10.2002 46.9004 -16 72.9004 -16s50.7002 5.7998 72.9004 16h16.6992\nc3.90039 0 7.60059 -0.900391 11.4004 -1.2002c-1 -2.89941 -2.2998 -5.7998 -3.2002 -8.7002c-5.5 -17.6992 1.90039 -36.5 17.9004 -45.6992l7.89941 -4.60059c-0.0996094 -2.59961 -0.0996094 -5.2002 0 -7.7998l-7.89941 -4.59961\nc-16 -9.30078 -23.4004 -28 -17.9004 -45.7002c7.90039 -25.7002 21.9004 -49.7998 40.2002 -69.6006c7.5 -8 18 -12.5996 28.9004 -12.5996c6.7998 0 13.5996 1.90039 19.5996 5.2998l7.90039 4.60059c2.19922 -1.30078 4.5 -2.7002 6.7998 -3.90039z\" />\n    <glyph glyph-name=\"user-edit\" unicode=\"&#xf4ff;\" horiz-adv-x=\"640\" \nd=\"M224 192c-70.7002 0 -128 57.2998 -128 128s57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128zM313.6 160c39.9004 0 75.4004 -17.7998 99.9004 -45.5l-77.2998 -77.2998l-7.90039 -7.90039l-1.2002 -11.0996l-6.7998 -60.9004\nc-0.799805 -7.2998 0.200195 -14.5 2.60059 -21.2998h-274.9c-26.5 0 -48 21.5 -48 48v41.5996c0 74.2002 60.2002 134.4 134.4 134.4h16.6992c22.3008 -10.2002 46.9004 -16 72.9004 -16s50.7002 5.7998 72.9004 16h16.6992zM358.9 14.7002l137.899 137.8l71.7002 -71.7002\nl-137.9 -137.899l-60.8994 -6.80078c-10.1006 -1.19922 -18.7002 7.40039 -17.6006 17.6006zM633 179.1c9.2998 -9.39941 9.2998 -24.5 0 -33.8994l-41.7998 -41.7998l-71.7998 71.6992l4.09961 4.10059l37.7998 37.7998c9.2998 9.2998 24.5 9.2998 33.7998 0z\" />\n    <glyph glyph-name=\"user-friends\" unicode=\"&#xf500;\" horiz-adv-x=\"640\" \nd=\"M192 192c-61.9004 0 -112 50.0996 -112 112s50.0996 112 112 112s112 -50.0996 112 -112s-50.0996 -112 -112 -112zM268.8 160c63.6006 0 115.2 -51.5996 115.2 -115.2v-28.7998c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v28.7998\nc0 63.6006 51.5996 115.2 115.2 115.2h8.2998c20.9004 -10 43.9004 -16 68.5 -16s47.7002 6 68.5 16h8.2998zM480 192c-53 0 -96 43 -96 96s43 96 96 96s96 -43 96 -96s-43 -96 -96 -96zM528 160c61.9004 0 112 -50.0996 112 -112c0 -26.5 -21.5 -48 -48 -48h-176.6\nc0.0996094 2.09961 0.599609 4.2002 0.599609 6.40039v38.3994c0 38.6006 -15.2998 73.5 -39.7002 99.7998c16.5 9.5 35.2998 15.4004 55.7002 15.4004h3.7998c13.9004 -4.7998 28.6006 -8 44.2002 -8s30.2998 3.2002 44.2002 8h3.7998z\" />\n    <glyph glyph-name=\"user-graduate\" unicode=\"&#xf501;\" horiz-adv-x=\"448\" \nd=\"M319.4 127.4c71.5 -3.10059 128.6 -61.6006 128.6 -133.801v-9.59961c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v9.59961c0 72.2002 57.0996 130.7 128.6 133.801l95.4004 -95.4004zM13.5996 368.2c-18.0996 4.39941 -18.0996 27.2002 0 31.5996\nl190.601 45.9004c13 3.09961 26.7002 3.09961 39.7002 0l190.399 -46c18.2002 -4.40039 18.2002 -27.1006 0 -31.5l-96.2998 -23.2002c8.7002 -17.2002 14 -36.4004 14 -57c0 -70.7002 -57.2998 -128 -128 -128s-128 57.2998 -128 128c0 20.5996 5.40039 39.7998 14 57\nl-66 15.9004v-52.6006c7 -4.2002 12 -11.5 12 -20.2998c0 -8.40039 -4.59961 -15.4004 -11.0996 -19.7002l15.5996 -62.2998c1.7002 -6.90039 -2.09961 -14 -7.59961 -14h-41.8008c-5.5 0 -9.2998 7.09961 -7.59961 14l15.5996 62.2998\nc-6.5 4.2998 -11.0996 11.2998 -11.0996 19.7002c0 8.7998 5 16.0996 12 20.2998v58.4004z\" />\n    <glyph glyph-name=\"user-lock\" unicode=\"&#xf502;\" horiz-adv-x=\"640\" \nd=\"M224 192c-70.6562 0 -128 57.3438 -128 128s57.3438 128 128 128s128 -57.3438 128 -128s-57.3438 -128 -128 -128zM320 128v-160c0.0644531 -9.49707 4.05176 -23.833 8.90039 -32h-280.9c-26.4961 0 -48 21.5039 -48 48v41.5996\nc0.0166016 74.1729 60.2275 134.384 134.4 134.4h16.6992c19.1514 -8.83203 51.8105 -16 72.9004 -16s53.749 7.16797 72.9004 16h16.6992c5 0 9.7002 -1 14.5 -1.5c-4.41016 -7.84082 -8.03906 -21.5049 -8.09961 -30.5zM608 160c17.6641 0 32 -14.3359 32 -32v-160\nc0 -17.6641 -14.3359 -32 -32 -32h-224c-17.6641 0 -32 14.3359 -32 32v160c0 17.6641 14.3359 32 32 32h32v80c0 44.1602 35.8398 80 80 80s80 -35.8398 80 -80v-80h32zM496 16c17.6641 0 32 14.3359 32 32s-14.3359 32 -32 32s-32 -14.3359 -32 -32s14.3359 -32 32 -32z\nM528 160v80c0 17.6641 -14.3359 32 -32 32s-32 -14.3359 -32 -32v-80h64z\" />\n    <glyph glyph-name=\"user-minus\" unicode=\"&#xf503;\" horiz-adv-x=\"640\" \nd=\"M624 240c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-192c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h192zM224 192c-70.7002 0 -128 57.2998 -128 128s57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128z\nM313.6 160c74.2002 0 134.4 -60.2002 134.4 -134.4v-41.5996c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v41.5996c0 74.2002 60.2002 134.4 134.4 134.4h16.6992c22.3008 -10.2002 46.9004 -16 72.9004 -16s50.7002 5.7998 72.9004 16h16.6992z\" />\n    <glyph glyph-name=\"user-ninja\" unicode=\"&#xf504;\" horiz-adv-x=\"448\" \nd=\"M325.4 158.8c68.5996 -6.09961 122.6 -63 122.6 -133.2v-41.5996c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v41.5996c0 70.2002 54 127.101 122.6 133.2l101.4 -101.399zM32 256c0 33.4004 17.0996 62.7998 43.0996 80\nc-26 17.2002 -43.0996 46.5996 -43.0996 80c32 0 60.0996 -15.7998 77.5 -39.7998c20.9004 42.3994 64.0996 71.7998 114.5 71.7998c70.7002 0 128 -57.2998 128 -128s-57.2998 -128 -128 -128c-58.7998 0 -107.7 39.7998 -122.8 93.7002\nc-17.4004 -18.2002 -41.9004 -29.7002 -69.2002 -29.7002zM176 352c-17.7002 0 -32 -14.2998 -32 -32h160c0 17.7002 -14.2998 32 -32 32h-96z\" />\n    <glyph glyph-name=\"user-shield\" unicode=\"&#xf505;\" horiz-adv-x=\"640\" \nd=\"M622.3 176.9c10.7002 -4.2002 17.7002 -14 17.7002 -24.9004c0 -124.5 -81.5996 -193.9 -132.9 -213.9c-4.19922 -1.59961 -12.5996 -3.69922 -22.1992 0c-64.2002 25.1006 -132.9 102.301 -132.9 213.9c0 10.9004 7 20.7002 17.7002 24.9004l115.2 45\nc9.59961 3.69922 18.0996 1.59961 22.1992 0zM496 -14.4004c34.5996 16.4004 89.9004 64.7002 95.5 151.801l-95.5 37.2998v-189.101zM224 192c-70.7002 0 -128 57.2998 -128 128s57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128zM320 152\nc0 -95.2998 45.2002 -169.1 99.2002 -212c-5.90039 -2.5 -12.4004 -4 -19.2002 -4h-352c-26.5 0 -48 21.5 -48 48v41.5996c0 74.2002 60.2002 134.4 134.4 134.4h16.6992c22.3008 -10.2002 46.9004 -16 72.9004 -16s50.7002 5.7998 72.9004 16h16.6992\nc2.60059 0 5 -0.700195 7.5 -0.799805c-0.299805 -2.40039 -1.09961 -4.7002 -1.09961 -7.2002z\" />\n    <glyph glyph-name=\"user-slash\" unicode=\"&#xf506;\" horiz-adv-x=\"640\" \nd=\"M633.8 -10.0996c7 -5.40039 8.2998 -15.5 2.90039 -22.3008l-19.6006 -25.2998c-5.5 -7 -15.5 -8.2002 -22.5 -2.7998l-588.399 454.7c-7 5.39941 -8.2002 15.3994 -2.7998 22.3994l19.5996 25.2002c5.5 7 15.5 8.2002 22.5 2.7998l147.6 -114\nc5.40039 65.6006 59.8008 117.4 126.9 117.4c70.7002 0 128 -57.2998 128 -128c0 -55.7998 -35.9004 -102.7 -85.7002 -120.3zM96 25.5996c0 66.4004 48.2002 121.101 111.4 132.101l286.8 -221.7h-350.2c-26.5 0 -48 21.5 -48 48v41.5996z\" />\n    <glyph glyph-name=\"user-tag\" unicode=\"&#xf507;\" horiz-adv-x=\"640\" \nd=\"M630.6 83.0996c12.5 -12.5 12.5 -32.6992 -0.0996094 -45.1992l-92.5 -92.5c-12.5 -12.5 -32.7998 -12.5 -45.2998 0l-90.2998 90.1992c-12 12 -18.7002 28.2002 -18.7002 45.2002v79.2002c0 17.7002 14.2998 32 32 32h79.2998c17 0 33.2998 -6.7002 45.2998 -18.7002z\nM447.8 104.1c13.2998 0 24 10.8008 24 24c0 13.3008 -10.7002 24 -24 24s-24 -10.6992 -24 -24c0 -13.2998 10.7002 -24 24 -24zM224 192.1c-70.7002 0 -128 57.3008 -128 127.9c0 70.7002 57.2998 128 128 128s128 -57.2998 128 -127.9c0 -70.6992 -57.2998 -128 -128 -128\nzM351.8 80.9004c0 -25.7002 10 -49.8008 28.1006 -67.9004l58 -58c-8.80078 -11.4004 -22.4004 -18.9004 -37.9004 -18.9004h-352c-26.5 0 -48 21.5 -48 48v41.6006c0 74.2002 60.2002 134.399 134.4 134.5h16.6992c22.3008 -10.2002 46.9004 -16 72.9004 -16\ns50.7002 5.7998 72.9004 16h16.6992c13.3008 0 26 -2.60059 38.2002 -6.2002v-73.0996z\" />\n    <glyph glyph-name=\"user-tie\" unicode=\"&#xf508;\" horiz-adv-x=\"448\" \nd=\"M224 192c-70.7002 0 -128 57.2998 -128 128s57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128zM319.8 159.4c71.2998 -3.40039 128.2 -61.7002 128.2 -133.801v-41.5996c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v41.5996\nc0 72.1006 56.9004 130.4 128.2 133.801l47.7998 -191.4l32 136l-32 56h96l-32 -56l32 -136z\" />\n    <glyph glyph-name=\"users-cog\" unicode=\"&#xf509;\" horiz-adv-x=\"640\" \nd=\"M610.5 106.7l25.7998 -14.9004c2.90039 -1.7002 4.2998 -5.2002 3.2998 -8.5c-6.69922 -21.5996 -18.1992 -41.2002 -33.1992 -57.3994c-2.30078 -2.5 -6.10059 -3.10059 -9 -1.40039l-25.8008 14.9004c-10.8994 -9.30078 -23.3994 -16.5 -36.8994 -21.3008v-29.7998\nc0 -3.39941 -2.40039 -6.39941 -5.7002 -7.09961c-21.2002 -4.7998 -43.9004 -5 -66.2002 0c-3.2998 0.700195 -5.7002 3.7002 -5.7002 7.09961v29.7998c-13.5 4.80078 -26 12 -36.8994 21.3008l-25.7998 -14.9004c-3 -1.7002 -6.7002 -1.09961 -9 1.40039\nc-15 16.2998 -26.5 35.7998 -33.2002 57.3994c-1 3.2998 0.299805 6.7998 3.2998 8.5l25.7998 14.9004c-2.59961 14.0996 -2.59961 28.5 0 42.5996l-25.7998 14.9004c-2.90039 1.7002 -4.2998 5.2002 -3.2998 8.5c6.7002 21.5996 18.2002 41.2002 33.2002 57.3994\nc2.2998 2.5 6.09961 3.10059 9 1.40039l25.7998 -14.9004c10.8994 9.30078 23.3994 16.5 36.8994 21.3008v29.7998c0 3.39941 2.40039 6.39941 5.7002 7.09961c21.2002 4.7998 43.9004 5 66.2002 0c3.2998 -0.700195 5.7002 -3.7002 5.7002 -7.09961v-29.7998\nc13.5 -4.80078 26 -12 36.8994 -21.3008l25.8008 14.9004c3 1.7002 6.69922 1.09961 9 -1.40039c15 -16.1992 26.5 -35.7998 33.1992 -57.3994c1 -3.2998 -0.299805 -6.7998 -3.2998 -8.5l-25.7998 -14.9004c2.59961 -14.0996 2.59961 -28.5 0 -42.5996zM496 79.5\nc26.7998 0 48.5 21.7998 48.5 48.5s-21.7998 48.5 -48.5 48.5s-48.5 -21.7998 -48.5 -48.5s21.7002 -48.5 48.5 -48.5zM96 224c-35.2998 0 -64 28.7002 -64 64s28.7002 64 64 64s64 -28.7002 64 -64s-28.7002 -64 -64 -64zM320 192c-61.9004 0 -112 50.0996 -112 112\ns50 111.9 111.9 111.9c61.8994 0 112 -50.1006 112 -112c0 -17.2002 -4.2002 -33.4004 -11.2002 -48c-0.799805 -0.5 -1.60059 -0.900391 -2.40039 -1.40039l-7.89941 4.59961c-5.90039 3.5 -12.7002 5.30078 -19.6006 5.30078c-11 0 -21.5 -4.60059 -28.8994 -12.6006\nc-15.8008 -17.0996 -28 -37.5 -36.3008 -59.2002c-1.89941 -0.0996094 -3.69922 -0.599609 -5.59961 -0.599609zM425.2 -2.5v-9.2002c0 -7.5 2.5 -14.2998 6.2002 -20.2998h-255.4c-26.5 0 -48 21.5 -48 48v28.7998c0 63.6006 51.5996 115.2 115.3 115.2h8.2998\nc20.9004 -10 43.9004 -16 68.5 -16c3.30078 0 6.5 0.400391 9.80078 0.599609c2.7998 -3.09961 6 -5.89941 9.7998 -8.09961l7.89941 -4.59961c-0.0996094 -2.60059 -0.0996094 -5.2002 0 -7.80078c-0.899414 -0.599609 -36.5 -15.7998 -25.7998 -50.2998\nc7.90039 -25.7002 21.9004 -49.7998 40.2002 -69.5996c7.5 -8 18 -12.6006 28.9004 -12.6006c12.1992 0 19.2998 5 27.5 9.80078c2.19922 -1.30078 4.5 -2.7002 6.7998 -3.90039zM173.1 173.4c-40.2998 -22.1006 -68.8994 -62 -75.1992 -109.4h-65.9004\nc-17.7002 0 -32 14.2998 -32 32v32c0 35.2998 28.7002 64 64 64h64c17.5996 0 33.5 -7.09961 45.0996 -18.5996z\" />\n    <glyph glyph-name=\"balance-scale-left\" unicode=\"&#xf515;\" horiz-adv-x=\"640\" \nd=\"M528 0c8.83984 0 16 -7.16016 16.0098 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-224c-8.83984 0 -16 7.16016 -16 16v342.75c-4.55957 2 -8.91992 4.34961 -12.9902 7.12012l-142.05 -47.6299c-8.37988 -2.81055 -17.4502 1.7002 -20.2598 10.0801l-10.1699 30.3398\nc-2.80957 8.37988 1.7002 17.4502 10.0801 20.2598l128.39 43.0498c-0.419922 3.32031 -1.00977 6.60059 -1.00977 10.0303c0 44.1797 35.8203 80 80 80c29.6904 0 55.2998 -16.3604 69.1104 -40.3701l117.92 39.5303c8.37988 2.80957 17.4502 -1.7002 20.2598 -10.0801\nl10.1699 -30.3398c2.80957 -8.37988 -1.7002 -17.4502 -10.0801 -20.2598l-132 -44.2607c-7.28027 -21.25 -22.96 -38.5293 -43.3799 -47.4697v-294.75h176zM639.98 144c0 -44.1797 -57.29 -80 -127.98 -80s-128 35.8203 -128 80h0.0195312\nc0 15.6699 -2.0791 7.25 85.04 181.51c17.6807 35.3604 68.2207 35.29 85.8701 0c86.3906 -172.779 85.0508 -165.33 85.0508 -181.51zM440 160h144l-72 144zM170.93 197.51c86.3906 -172.779 85.0508 -165.33 85.0508 -181.51h0.0195312c0 -44.1797 -57.3096 -80 -128 -80\ns-128 35.8203 -128 80h0.0195312c0 15.6699 -2.0791 7.25 85.04 181.51c17.6807 35.3604 68.2207 35.29 85.8701 0zM56 32h144l-72 144z\" />\n    <glyph glyph-name=\"balance-scale-right\" unicode=\"&#xf516;\" horiz-adv-x=\"640\" \nd=\"M96 -16c0 8.83984 7.16016 16 16 16h175.99v294.76c-20.4199 8.93066 -36.1006 26.2207 -43.3799 47.4707l-132 44.2598c-8.37012 2.80957 -12.8906 11.8799 -10.0801 20.2598l10.1699 30.3398c2.80957 8.37012 11.8799 12.8906 20.2598 10.0801l117.93 -39.54\nc13.8105 24.0098 39.4199 40.3701 69.1104 40.3701c44.1797 0 80 -35.8203 80 -80c0 -3.42969 -0.589844 -6.70996 -1.00977 -10.0303l128.399 -43.0498c8.37012 -2.80957 12.8906 -11.8799 10.0801 -20.2598l-10.1699 -30.3398\nc-2.80957 -8.37012 -11.8799 -12.8906 -20.2598 -10.0801l-142.05 47.6299c-4.07031 -2.77051 -8.43066 -5.12012 -12.9902 -7.12012v-342.75c0 -8.83984 -7.16016 -16 -16 -16h-224c-8.83984 0 -16 7.16016 -16 16v32zM0 144c0 16.1797 -1.32031 8.73047 85.0596 181.51\nc17.6504 35.29 68.1904 35.3604 85.8701 0c87.1299 -174.26 85.0508 -165.84 85.0508 -181.51h0.0195312c0 -44.1797 -57.3096 -80 -128 -80s-128 35.8203 -128 80zM56 160h144l-72 144zM384.02 16c0 16.1797 -1.33984 8.73047 85.04 181.51\nc17.6504 35.29 68.1904 35.3604 85.8701 0c87.1299 -174.26 85.0508 -165.84 85.0508 -181.51h0.0195312c0 -44.1797 -57.3096 -80 -128 -80s-128 35.8203 -128 80h0.0195312zM440 32h144l-72 144z\" />\n    <glyph glyph-name=\"blender\" unicode=\"&#xf517;\" \nd=\"M416 64c35.3496 0 64 -28.6504 64 -64v-32c0 -17.6699 -14.3301 -32 -32 -32h-320c-17.6699 0 -32 14.3301 -32 32v32c0 35.3496 28.6504 64 64 64h256zM288 -32c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM328 384\nc-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h157.82l-17.46 -64h-140.36c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h131.64l-17.46 -64h-114.18c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h105.46l-17.46 -64\nh-256l-8.73047 96h-103.27c-26.5098 0 -48 21.4902 -48 48v160c0 26.5098 21.4902 48 48 48h464l-17.46 -64h-166.54zM64 256h81.46l-11.6396 128h-69.8203v-128z\" />\n    <glyph glyph-name=\"book-open\" unicode=\"&#xf518;\" horiz-adv-x=\"576\" \nd=\"M542.22 415.95c18.4199 1.04004 33.7803 -12.9902 33.7705 -30.7002v-337.84c0 -16.2305 -13.1299 -29.7705 -30.0205 -30.6602c-49.4697 -2.59961 -149.52 -12.0996 -218.7 -46.9199c-10.6494 -5.36035 -23.2793 1.93945 -23.2793 13.4902v363.87\nc0 5.2793 2.62988 10.3291 7.26953 13.1699c67.2402 41.1592 176.16 52.4795 230.96 55.5898zM264.73 360.36c4.64941 -2.85059 7.26953 -7.7002 7.26953 -12.9902v-364.12c0 -11.5195 -12.5898 -18.8096 -23.21 -13.46c-69.1797 34.8398 -169.28 44.3496 -218.771 46.9502\nc-16.8896 0.879883 -30.0195 14.4199 -30.0195 30.6602v337.85c0 17.71 15.3604 31.7402 33.7803 30.7002c54.7998 -3.12012 163.72 -14.4307 230.95 -55.5898z\" />\n    <glyph glyph-name=\"broadcast-tower\" unicode=\"&#xf519;\" horiz-adv-x=\"640\" \nd=\"M150.94 256c-7.01074 0 -13.46 4.5 -15.4004 11.2402c-4.90039 16.9697 -7.54004 34.6396 -7.54004 52.7598s2.63965 35.79 7.53027 52.7695c1.9502 6.74023 8.39941 11.2305 15.4102 11.2305h33.7295c11.0098 0 18.6201 -10.8301 14.8604 -21.1797\nc-4.93066 -13.5801 -7.5498 -27.9805 -7.5498 -42.8203s2.61914 -29.2402 7.5498 -42.8203c3.75 -10.3496 -3.85059 -21.1797 -14.8604 -21.1797h-33.7295zM89.9199 424.66c-16.54 -31.1406 -49.6104 -115.97 0.169922 -209.29\nc5.66016 -10.6299 -1.92969 -23.3701 -13.9502 -23.3701h-34.8398c-6.18945 0 -11.9902 3.50977 -14.6094 9.13965c-23.5703 50.5303 -26.6904 94.1104 -26.6904 118.86c0 42.3496 9.40039 82.46 25.8896 118.69c2.60059 5.71973 8.4707 9.30957 14.7402 9.30957h35.3301\nc12.0098 0 19.5996 -12.7197 13.96 -23.3398zM614.06 438.71c16.5205 -36.2295 25.9404 -76.3496 25.9404 -118.71s-9.42969 -82.4805 -25.96 -118.71c-2.59961 -5.70996 -8.45996 -9.29004 -14.7305 -9.29004h-35.2295c-12.1104 0 -19.6299 12.8398 -13.9102 23.5195\nc48.1396 89.8105 17.9902 174.94 -0.280273 209.23c-5.63965 10.5898 2.04004 23.25 14.0205 23.25h35.4199c6.26953 0 12.1299 -3.58008 14.7295 -9.29004zM489.06 384c7.01074 0 13.46 -4.49023 15.4004 -11.2402c4.90039 -16.9697 7.54004 -34.6396 7.54004 -52.7598\ns-2.62988 -35.79 -7.53027 -52.7598c-1.9502 -6.75 -8.38965 -11.2402 -15.4102 -11.2402h-33.7295c-11.0098 0 -18.6201 10.8301 -14.8604 21.1797c4.93066 13.5801 7.5498 27.9805 7.5498 42.8203s-2.61914 29.2402 -7.5498 42.8203\nc-3.75 10.3496 3.85059 21.1797 14.8604 21.1797h33.7295zM372.76 283.88l130.5 -313.41c3.39062 -8.14941 -0.459961 -17.5195 -8.60938 -20.9199l-29.5107 -12.3096c-8.14941 -3.40039 -17.5098 0.450195 -20.9092 8.60938l-49.2002 118.15h-150.07l-49.1904 -118.15\nc-3.38965 -8.14941 -12.7598 -12.0098 -20.9092 -8.60938l-29.5107 12.3096c-8.14941 3.40039 -12.0098 12.7705 -8.60938 20.9199l130.5 313.41c-7.0498 10.29 -11.2002 22.71 -11.2002 36.1201c0 35.3496 28.6396 64 63.96 64c35.3301 0 63.96 -28.6504 63.96 -64\nc0 -13.4102 -4.15039 -25.8301 -11.2002 -36.1201zM271.62 128h96.7598l-48.3799 116.19z\" />\n    <glyph glyph-name=\"broom\" unicode=\"&#xf51a;\" horiz-adv-x=\"640\" \nd=\"M256.47 231.23l86.7305 -109.181s-16.6006 -102.359 -76.5703 -150.12c-59.9697 -47.7793 -266.63 -34.1201 -266.63 -34.1201s3.7998 23.1406 11 55.4307l94.6201 112.17c3.96973 4.7002 -0.870117 11.6201 -6.65039 9.5l-60.3994 -22.0898\nc14.4395 41.6602 32.7197 80.04 54.5996 97.4697c59.9697 47.7598 163.3 40.9404 163.3 40.9404zM636.53 416.97c5.48926 -6.91016 4.33984 -16.96 -2.5498 -22.4395l-232.48 -177.8l34.0898 -42.9209c5.08008 -6.39941 1.66016 -15.9092 -6.33984 -17.5996\nl-58.7998 -12.4502l-86.7305 109.181l25.3301 54.5498c3.4502 7.41992 13.5 8.62012 18.5898 2.20996l34.1406 -42.9697l232.479 177.8c6.89062 5.48926 16.9199 4.33984 22.4102 -2.56055z\" />\n    <glyph glyph-name=\"chalkboard\" unicode=\"&#xf51b;\" horiz-adv-x=\"640\" \nd=\"M96 384v-352h-64v376c0 22.0596 17.9404 40 40 40h496c22.0596 0 40 -17.9404 40 -40v-376h-64v352h-448zM624 0c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-608c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h272v64h192v-64\nh144z\" />\n    <glyph glyph-name=\"chalkboard-teacher\" unicode=\"&#xf51c;\" horiz-adv-x=\"640\" \nd=\"M208 96c62.0596 0 112.33 -50.4805 112 -112.62c-0.139648 -26.2598 -21.7305 -47.3799 -48 -47.3799h-224c-26.2695 0 -47.8604 21.1201 -48 47.3799c-0.330078 62.1396 49.9404 112.62 112 112.62c2.38965 0 4.76953 -0.349609 7.0498 -1.08984\nc12.9697 -4.20996 26.6006 -6.91016 40.9502 -6.91016s27.9805 2.7002 40.9404 6.91016c2.2793 0.740234 4.66992 1.08984 7.05957 1.08984zM160 128c-53.0195 0 -96 42.9805 -96 96s42.9805 96 96 96s96 -42.9805 96 -96s-42.9805 -96 -96 -96zM592 448\nc26.4697 0 48 -22.25 48 -49.5898v-316.82c0 -27.3398 -21.5303 -49.5898 -48 -49.5898h-244.55c-6.57031 25.2695 -20.5898 47.3096 -39.6904 64h76.2402v64h128v-64h64v288h-352v-49.7998c-18.9004 11.0195 -40.5801 17.7998 -64 17.7998v46.4102\nc0 27.3398 21.5303 49.5898 48 49.5898h384z\" />\n    <glyph glyph-name=\"church\" unicode=\"&#xf51d;\" horiz-adv-x=\"640\" \nd=\"M464.46 201.32c9.63965 -5.78027 15.54 -16.2002 15.54 -27.4404v-237.88h-96v96c0 35.3496 -28.6504 64 -64 64s-64 -28.6504 -64 -64v-96h-96v237.88c0 10.0029 6.96191 22.2959 15.54 27.4404l112.46 67.4795v51.2002h-48c-8.83984 0 -16 7.16016 -16 16v32\nc0 8.83984 7.16016 16 16 16h48v48c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-48h48c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-48v-51.2002zM0 52.04c0.00195312 11.6455 8.68945 24.8252 19.3896 29.4199l108.61 46.54\nv-192h-112c-8.83984 0 -16 7.16016 -16 16v100.04zM620.61 81.46c11.7598 -5.0498 19.3896 -16.6201 19.3896 -29.4199v-100.04c0 -8.83984 -7.16016 -16 -16 -16h-112v192z\" />\n    <glyph glyph-name=\"coins\" unicode=\"&#xf51e;\" \nd=\"M0 42.7002c41.2998 -29.1006 116.8 -42.7002 192 -42.7002s150.7 13.5996 192 42.7002v-42.7002c0 -35.2998 -86 -64 -192 -64s-192 28.7002 -192 64v42.7002zM320 320c-106 0 -192 28.7002 -192 64s86 64 192 64s192 -28.7002 192 -64s-86 -64 -192 -64zM0 147.6\nc41.2998 -34 116.9 -51.5996 192 -51.5996s150.7 17.5996 192 51.5996v-51.5996c0 -35.2998 -86 -64 -192 -64s-192 28.7002 -192 64v51.5996zM416 136.6v63.6006c38.7002 6.89941 72.7998 18.0996 96 34.5v-42.7002c0 -23.7002 -38.7002 -44.2998 -96 -55.4004zM192 288\nc106 0 192 -35.7998 192 -80s-86 -80 -192 -80s-192 35.7998 -192 80s86 80 192 80zM411.3 231.7c-8.7998 23.7002 -30.5 42.8994 -60 57.2002c64.2002 3.19922 125.2 16.6992 160.7 41.7998v-42.7002c0 -24.2998 -40.7002 -45.5 -100.7 -56.2998z\" />\n    <glyph glyph-name=\"compact-disc\" unicode=\"&#xf51f;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM88 192c0 88.2002 71.7998 160 160 160v32c-105.9 0 -192 -86.0996 -192 -192h32zM248 96c53 0 96 43 96 96s-43 96 -96 96s-96 -43 -96 -96s43 -96 96 -96zM248 224\nc17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32z\" />\n    <glyph glyph-name=\"crow\" unicode=\"&#xf520;\" horiz-adv-x=\"640\" \nd=\"M544 416c53.0195 0 96 -28.6504 96 -64l-96 -16v-80c0 -87.2598 -58.2598 -160.8 -137.97 -184.14l41.2393 -111.53c2.27051 -6.23047 -0.939453 -13.1104 -7.16992 -15.3799l-22.5498 -8.20996c-6.22949 -2.27051 -13.1094 0.939453 -15.3799 7.16992l-44.5098 120.38\nc-1.90039 -0.0595703 -3.75 -0.290039 -5.66016 -0.290039h-39.0596l38.3291 -103.68c2.27051 -6.23047 -0.939453 -13.1104 -7.16992 -15.3799l-22.5498 -8.20996c-6.22949 -2.27051 -13.1094 0.939453 -15.3799 7.16992l-44.4102 120.1h-96.4902l-121.539 -60.7695\nc-20.0908 -10.04 -43.7305 4.56934 -43.7305 27.0293c0.00195312 8.33984 5.41797 19.168 12.0898 24.1699l371.91 292.59v20.9805c0 44.1797 35.8203 80 80 80c26.0898 0 49.04 -12.6797 63.6396 -32h16.3604zM464 344c13.25 0 24 10.75 24 24c0 13.2598 -10.75 24 -24 24\ns-24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24z\" />\n    <glyph glyph-name=\"crown\" unicode=\"&#xf521;\" horiz-adv-x=\"640\" \nd=\"M528 0c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-416c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h416zM592 320c26.5 0 48 -21.5 48 -48s-21.5 -48 -48 -48c-2.59961 0 -5.2002 0.400391 -7.7002 0.799805l-72.2998 -192.8h-384\nl-72.2998 192.8c-2.5 -0.399414 -5.10059 -0.799805 -7.7002 -0.799805c-26.5 0 -48 21.5 -48 48s21.5996 48 48.0996 48s48 -21.5 48 -48c0 -7.09961 -1.69922 -13.7998 -4.39941 -19.7998l72.2998 -43.4004c15.2998 -9.2002 35.2998 -4 44.2002 11.6006l81.5 142.6\nc-10.7002 8.7998 -17.7002 22 -17.7002 37c0 26.5 21.5 48 48 48s48 -21.5 48 -48c0 -15 -7 -28.2002 -17.7002 -37l81.5 -142.6c8.90039 -15.6006 28.7998 -20.8008 44.2002 -11.6006l72.4004 43.4004c-2.80078 6.09961 -4.40039 12.7002 -4.40039 19.7998\nc0 26.5 21.5 48 48 48z\" />\n    <glyph glyph-name=\"dice\" unicode=\"&#xf522;\" horiz-adv-x=\"640\" \nd=\"M592 256c26.5098 0 48 -21.4902 48 -48v-224c0 -26.5098 -21.4902 -48 -48 -48h-224c-26.5098 0 -48 21.4902 -48 48v46.4199l136.26 136.26c24.1201 24.1201 29.6904 59.7305 17 89.3203h118.74zM480 72c13.25 0 24 10.75 24 24c0 13.2598 -10.75 24 -24 24\ns-24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24zM433.63 258.7c19.1602 -19.1602 19.1602 -50.2305 0 -69.4004l-174.939 -174.93c-19.1602 -19.1602 -50.2305 -19.1602 -69.3906 0l-174.93 174.939c-19.1602 19.1602 -19.1602 50.2305 0 69.3906l174.939 174.93\nc19.1602 19.1602 50.2305 19.1602 69.3906 0zM96 200c13.25 0 24 10.75 24 24c0 13.2598 -10.75 24 -24 24s-24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24zM224 72c13.25 0 24 10.75 24 24c0 13.2598 -10.75 24 -24 24s-24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24z\nM224 200c13.25 0 24 10.75 24 24c0 13.2598 -10.75 24 -24 24s-24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24zM224 328c13.25 0 24 10.75 24 24c0 13.2598 -10.75 24 -24 24s-24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24zM352 200c13.25 0 24 10.75 24 24\nc0 13.2598 -10.75 24 -24 24s-24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24z\" />\n    <glyph glyph-name=\"dice-five\" unicode=\"&#xf523;\" horiz-adv-x=\"448\" \nd=\"M384 416c35.3496 0 64 -28.6504 64 -64v-320c0 -35.3496 -28.6504 -64 -64 -64h-320c-35.3496 0 -64 28.6504 -64 64v320c0 35.3496 28.6504 64 64 64h320zM128 64c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM128 256\nc17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM224 160c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM320 64c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32\ns-32 -14.3301 -32 -32s14.3301 -32 32 -32zM320 256c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z\" />\n    <glyph glyph-name=\"dice-four\" unicode=\"&#xf524;\" horiz-adv-x=\"448\" \nd=\"M384 416c35.3496 0 64 -28.6504 64 -64v-320c0 -35.3496 -28.6504 -64 -64 -64h-320c-35.3496 0 -64 28.6504 -64 64v320c0 35.3496 28.6504 64 64 64h320zM128 64c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM128 256\nc17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM320 64c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM320 256c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32\ns-32 -14.3301 -32 -32s14.3301 -32 32 -32z\" />\n    <glyph glyph-name=\"dice-one\" unicode=\"&#xf525;\" horiz-adv-x=\"448\" \nd=\"M384 416c35.3496 0 64 -28.6504 64 -64v-320c0 -35.3496 -28.6504 -64 -64 -64h-320c-35.3496 0 -64 28.6504 -64 64v320c0 35.3496 28.6504 64 64 64h320zM224 160c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z\" />\n    <glyph glyph-name=\"dice-six\" unicode=\"&#xf526;\" horiz-adv-x=\"448\" \nd=\"M384 416c35.3496 0 64 -28.6504 64 -64v-320c0 -35.3496 -28.6504 -64 -64 -64h-320c-35.3496 0 -64 28.6504 -64 64v320c0 35.3496 28.6504 64 64 64h320zM128 64c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM128 160\nc17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM128 256c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM320 64c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32\ns-32 -14.3301 -32 -32s14.3301 -32 32 -32zM320 160c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM320 256c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z\" />\n    <glyph glyph-name=\"dice-three\" unicode=\"&#xf527;\" horiz-adv-x=\"448\" \nd=\"M384 416c35.3496 0 64 -28.6504 64 -64v-320c0 -35.3496 -28.6504 -64 -64 -64h-320c-35.3496 0 -64 28.6504 -64 64v320c0 35.3496 28.6504 64 64 64h320zM128 256c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM224 160\nc17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM320 64c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z\" />\n    <glyph glyph-name=\"dice-two\" unicode=\"&#xf528;\" horiz-adv-x=\"448\" \nd=\"M384 416c35.3496 0 64 -28.6504 64 -64v-320c0 -35.3496 -28.6504 -64 -64 -64h-320c-35.3496 0 -64 28.6504 -64 64v320c0 35.3496 28.6504 64 64 64h320zM128 256c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM320 64\nc17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z\" />\n    <glyph glyph-name=\"divide\" unicode=\"&#xf529;\" horiz-adv-x=\"448\" \nd=\"M224 96c35.3496 0 64 -28.6504 64 -64s-28.6504 -64 -64 -64s-64 28.6504 -64 64s28.6504 64 64 64zM224 288c-35.3496 0 -64 28.6504 -64 64s28.6504 64 64 64s64 -28.6504 64 -64s-28.6504 -64 -64 -64zM416 240c17.6699 0 32 -14.3301 32 -32v-32\nc0 -17.6699 -14.3301 -32 -32 -32h-384c-17.6699 0 -32 14.3301 -32 32v32c0 17.6699 14.3301 32 32 32h384z\" />\n    <glyph glyph-name=\"door-closed\" unicode=\"&#xf52a;\" horiz-adv-x=\"640\" \nd=\"M624 0c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-608c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h111.99v397.2c0 28.0195 21.5293 50.7998 48 50.7998h288.01c26.4697 0 48 -22.7803 48 -50.7998v-397.2h112zM415.99 160\nc17.6797 0 32.0098 14.3301 32 32c0 17.6699 -14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z\" />\n    <glyph glyph-name=\"door-open\" unicode=\"&#xf52b;\" horiz-adv-x=\"640\" \nd=\"M624 0c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-144v384h-96v64h112c26.4697 0 48 -22.1904 48 -49.4502v-334.55h80zM312.24 446.99c20.2002 5.24023 39.7598 -10.5898 39.7598 -32.1699v-478.82h-336c-8.83984 0 -16 7.16016 -16 16v32\nc0 8.83984 7.16016 16 16 16h80v365.08c0 15.2197 9.99023 28.4795 24.2402 32.1699zM264 160c13.25 0 24 14.3301 24 32s-10.75 32 -24 32s-24 -14.3301 -24 -32s10.75 -32 24 -32z\" />\n    <glyph glyph-name=\"equals\" unicode=\"&#xf52c;\" horiz-adv-x=\"448\" \nd=\"M416 144c17.6699 0 32 -14.3301 32 -32v-32c0 -17.6699 -14.3301 -32 -32 -32h-384c-17.6699 0 -32 14.3301 -32 32v32c0 17.6699 14.3301 32 32 32h384zM416 336c17.6699 0 32 -14.3301 32 -32v-32c0 -17.6699 -14.3301 -32 -32 -32h-384c-17.6699 0 -32 14.3301 -32 32\nv32c0 17.6699 14.3301 32 32 32h384z\" />\n    <glyph glyph-name=\"feather\" unicode=\"&#xf52d;\" \nd=\"M467.14 403.16c50.5703 -50.5205 61.7002 -124.9 16.2607 -199.36l-131.54 -43.7998h97.7793c-9.92969 -10.6797 3.68066 3.07031 -46.3096 -46.8604l-147.57 -49.1396h98.1904c-74.9502 -73.1104 -194.53 -70.6504 -246.83 -54.9404l-66.1006 -66.0293\nc-9.37988 -9.37012 -24.5996 -9.37012 -33.9795 0s-9.37988 24.5693 0 33.9395l259.52 259.25c6.25 6.25 6.25 16.3799 0 22.6299s-16.3896 6.25 -22.6494 0l-178.44 -178.25c-6.75 60.3408 3.18066 150.78 63.6406 211.17c24.7695 24.7402 7.13965 7.14062 85.75 85.6602\nc90.6094 90.5107 189.729 88.21 252.279 25.7305z\" />\n    <glyph glyph-name=\"frog\" unicode=\"&#xf52e;\" horiz-adv-x=\"576\" \nd=\"M446.53 350.57c0 0 58.4297 -19.0605 98.9893 -41.2803c18.7607 -10.2803 30.4805 -29.8301 30.4805 -51.2305v-0.00292969c0 -18.8037 -13.3105 -41.5283 -29.71 -50.7266l-154.44 -86.6504l98.5205 -104.68h53.6299c17.6699 0 32 -14.3301 32 -32\nc0 -8.83984 -7.16016 -16 -16 -16h-90.3799l-118.53 125.94c5.07031 54.1494 -29.9297 85.0596 -40.7998 93.21c-36.8496 27.6191 -88.29 27.6592 -125.13 0l-34.7803 -26.0908c-7.07031 -5.2998 -8.49023 -15.3291 -3.18945 -22.4092\nc5.31934 -7.10059 15.3496 -8.5 22.4092 -3.19043l32.7607 24.5898c20.6895 15.5303 48.3496 20.8105 72.2393 10.8799c44.0605 -18.3193 57.8506 -70.3701 33.71 -106.6l-35.7998 -48.3301h79.4902c17.6699 0 32 -14.3301 32 -32c0 -8.83984 -7.16016 -16 -16 -16h-304\nc-34.9199 0 -63.8896 28.0996 -64 63.0195c-0.5 166.86 126.75 304.021 289.46 319.44c6.82031 37.25 39.3096 65.54 78.54 65.54c39.1904 0 71.6699 -28.2305 78.5303 -65.4297zM368 312c13.25 0 24 10.75 24 24c0 13.2598 -10.75 24 -24 24\nc-13.2598 0 -24 -10.7402 -24 -24c0 -13.25 10.7402 -24 24 -24z\" />\n    <glyph glyph-name=\"gas-pump\" unicode=\"&#xf52f;\" \nd=\"M336 0c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-320c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h320zM493.2 340.7c12 -12 18.7998 -28.2998 18.7998 -45.2998v-223.4c0 -42.2002 -36.5 -76 -79.5 -71.7002\nc-37.5 3.90039 -64.5 38.2002 -64.5 75.9004v27.7998c0 22.0996 -17.9004 40 -40 40h-8v-112h-288v352c0 35.2998 28.7002 64 64 64h160c35.2998 0 64 -28.7002 64 -64v-192h8c48.5996 0 88 -39.4004 88 -88v-32c0 -13.2002 10.7998 -24 24 -24s24 10.7998 24 24v160.8\nc-27.0996 3.90039 -48 27.1006 -48 55.2002v62.0996l-37.7002 37.7002c-6.2002 6.2002 -6.2002 16.4004 0 22.6006l11.2998 11.2998c6.2002 6.2002 16.4004 6.2002 22.6006 0zM256 256v128h-160v-128h160z\" />\n    <glyph glyph-name=\"glasses\" unicode=\"&#xf530;\" horiz-adv-x=\"576\" \nd=\"M574.1 167.63c1.26074 -5.07031 1.90039 -10.2695 1.90039 -15.5v-70.25c0 -62.8896 -51.5801 -113.88 -115.2 -113.88h-37.1201c-60.2793 0 -110.37 45.9404 -114.87 105.37l-2.92969 38.6299h-35.75l-2.92969 -38.6299\nc-4.50977 -59.4297 -54.6006 -105.37 -114.88 -105.37h-37.1201c-63.6201 0 -115.2 50.9902 -115.2 113.89v70.25c0.000976562 4.33984 0.852539 11.2793 1.90039 15.4902l45.3398 181.73c5.91016 23.6895 21.5898 44.0293 43 55.7998\nc21.4395 11.7402 46.9697 14.1094 70.1895 6.33008l15.25 -5.08008c8.39062 -2.79004 12.9199 -11.8604 10.1201 -20.2402l-5.05957 -15.1797c-2.79004 -8.37988 -11.8506 -12.9102 -20.2305 -10.1201l-13.1699 4.38965\nc-10.8701 3.62012 -22.9902 3.57031 -33.1494 -1.72949c-10.29 -5.36035 -17.5908 -14.5605 -20.3809 -25.8105l-38.46 -153.83c22.1904 6.81055 49.79 12.46 81.21 12.46c34.7803 0 73.9902 -7.00977 114.86 -26.75h73.1797\nc40.8701 19.7207 80.0801 26.7402 114.851 26.7402c31.4102 0 59.0098 -5.64941 81.2002 -12.46l-38.46 153.82c-2.80078 11.2598 -10.0801 20.4502 -20.3701 25.8193c-10.1602 5.30078 -22.29 5.35059 -33.1602 1.73047l-13.1797 -4.38965\nc-8.38086 -2.79004 -17.4404 1.73926 -20.2305 10.1201l-5.05957 15.1797c-2.80078 8.37988 1.72949 17.4502 10.1191 20.2402l15.25 5.08008c23.2207 7.7793 48.75 5.39941 70.1904 -6.33008c21.4102 -11.7607 37.0898 -32.1104 43 -55.8105zM203.38 78.21l3.12988 41.2197\nc-22.6699 8.58984 -46.0693 12.9199 -69.9297 12.9199c-29.1602 0 -54.46 -6.42969 -72.5801 -12.9199v-37.54c0 -27.5098 22.9697 -49.8896 51.2002 -49.8896h37.1201c26.6602 0 49.0898 20.2998 51.0596 46.21zM512 81.8799l-0.00976562 37.54\nc-18.1201 6.49023 -43.4307 12.9297 -72.5498 12.9297c-23.8701 0 -47.2803 -4.33008 -69.9502 -12.9199l3.12988 -41.2197c1.95996 -25.9102 24.3896 -46.21 51.0596 -46.21h37.1201c28.2305 0 51.2002 22.3701 51.2002 49.8799z\" />\n    <glyph glyph-name=\"greater-than\" unicode=\"&#xf531;\" horiz-adv-x=\"384\" \nd=\"M365.52 238.15c11.2803 -5.25 18.4805 -16.5605 18.4902 -29.0107v-34.2295c-0.00195312 -11.2529 -8.28027 -24.2451 -18.4795 -29l-306.471 -142.91c-16.0195 -7.46973 -35.0596 -0.540039 -42.5293 15.4805l-13.5205 29\nc-7.46973 16.0195 -0.540039 35.0596 15.4805 42.5293l218.47 101.891l-218.43 101.85c-16.0605 7.49023 -23.0107 26.5801 -15.5205 42.6396l13.5703 29.0801c7.49023 16.0605 26.5801 23.0107 42.6396 15.5205z\" />\n    <glyph glyph-name=\"greater-than-equal\" unicode=\"&#xf532;\" horiz-adv-x=\"448\" \nd=\"M55.2197 340.31c-18.29 6 -27.7393 24.2607 -21.0996 40.79l12.0303 29.9199c6.63965 16.5303 26.8594 25.0605 45.1494 19.0605l301.72 -119.98c13.7705 -4.51953 22.9805 -16.6094 22.9805 -30.1699v-15.96c0 -13.5596 -9.20996 -25.6494 -22.9805 -30.1699\nl-301.409 -119.859c-18.3906 -6.04004 -38.7002 2.54004 -45.3799 19.1494l-12.0908 30.0801c-6.67969 16.6104 2.81055 34.9697 21.2002 41l175.44 68.0498zM424 48c13.25 0 24 -10.7402 24 -24v-48c0 -13.25 -10.75 -24 -24 -24h-400c-13.25 0 -24 10.75 -24 24v48\nc0 13.2598 10.75 24 24 24h400z\" />\n    <glyph glyph-name=\"helicopter\" unicode=\"&#xf533;\" horiz-adv-x=\"640\" \nd=\"M304 64c-8.83105 0 -20.3018 5.73438 -25.5996 12.7998l-86.4004 115.2l-160 64l-31.5098 108.12c-2.53027 10.0996 5.10938 19.8799 15.5195 19.8799h39.9902c5.03027 0 9.78027 -2.37012 12.7998 -6.40039l43.2002 -57.5996h208v64h-176c-8.83984 0 -16 7.16016 -16 16\nv32c0 8.83984 7.16016 16 16 16h416c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-176v-64c123.71 0 224 -100.29 224 -224c0 -17.6699 -14.3301 -32 -32 -32h-272zM416 252.49v-124.49h124.79c-12.7598 62.5596 -62.2402 111.7 -124.79 124.49z\nM635.37 -10.8096c6.58984 -6.61035 6.04004 -17.5205 -0.980469 -23.6602c-33.1494 -29.0498 -53.5693 -29.5205 -68.4492 -29.5205h-325.94c-8.83984 0 -16 7.18066 -16 16.0303v32.0596c0 8.85059 7.16016 16.0303 16 16.0303h325.94\nc10.7998 0 17.5498 4.48047 24.6396 11.25c6.40039 6.11035 16.3896 6.27051 22.6396 0.00976562z\" />\n    <glyph glyph-name=\"infinity\" unicode=\"&#xf534;\" horiz-adv-x=\"640\" \nd=\"M471.1 352c93.1006 0 168.9 -71.7998 168.9 -160s-75.7998 -160 -168.9 -160c-66.0996 0 -117.8 41.2998 -151.1 78.5996c-33.2998 -37.2998 -85 -78.5996 -151.1 -78.5996c-93.1006 0 -168.9 71.7998 -168.9 160s75.7998 160 168.9 160\nc66.0996 0 117.8 -41.2998 151.1 -78.5996c33.2998 37.2998 85 78.5996 151.1 78.5996zM168.9 128c38.0996 0 73.5996 36.4004 94 64c-20.6006 27.9004 -55.8008 64 -94 64c-40.2002 0 -72.9004 -28.7002 -72.9004 -64s32.7002 -64 72.9004 -64zM471.1 128\nc40.2002 0 72.9004 28.7002 72.9004 64s-32.7002 64 -72.9004 64c-38.0996 0 -73.5996 -36.4004 -94 -64c20.6006 -27.9004 55.8008 -64 94 -64z\" />\n    <glyph glyph-name=\"kiwi-bird\" unicode=\"&#xf535;\" horiz-adv-x=\"576\" \nd=\"M575.81 230.02c0.300781 -5.7793 0.160156 -246.02 0.160156 -246.02c0 -7.30957 -4.95996 -13.7002 -12.0498 -15.5c-1.30957 -0.339844 -2.63965 -0.5 -3.9502 -0.5c-5.75 0 -11.1895 3.11035 -14.0498 8.33984l-74.4102 136.44\nc-7.04004 -0.470703 2.43066 -0.780273 -23.0498 -0.780273c-54.5996 0 -106.39 -19.25 -152.13 -49.0596c-12.46 -8.12012 -26.0996 -14.4502 -40.3398 -19.5107v-59.4297c0 -8.83984 -7.16016 -16 -16 -16h-16c-8.83984 0 -16 7.16016 -16 16v49.1797\nc-5.32031 -0.449219 -10.5605 -1.17969 -16 -1.17969c-16.6006 0 -32.6406 2.2998 -48 6.25977v-54.2598c0 -8.83984 -7.16016 -16 -16 -16h-16c-8.83984 0 -16 7.16016 -16 16v73.9902c-57.3105 33.21 -95.9502 95.0596 -95.9902 166.01\nc-0.0800781 145.76 129.3 182.88 147.31 186.94c57.1709 12.9199 111.221 0.259766 153.21 -28.7002c43.4902 -29.9902 94.9209 -46.2402 147.74 -46.2402h9.37012c60.6504 0 115.01 -45.4102 118.18 -105.98zM463.97 200c13.25 0 24 10.75 24 24\nc0 13.2598 -10.75 24 -24 24s-24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24zM543.97 46.75v99.0596c-11.1299 -11.3799 -24.7393 -20.1494 -39.8594 -25.9795z\" />\n    <glyph glyph-name=\"less-than\" unicode=\"&#xf536;\" horiz-adv-x=\"384\" \nd=\"M365.46 90.2598c16.0703 -7.49023 23.0205 -26.5801 15.5303 -42.6396l-13.5605 -29.0801c-7.48926 -16.0596 -26.5801 -23.0098 -42.6396 -15.5205l-306.31 142.83c-11.2705 5.25 -18.4805 16.5605 -18.4805 29v34.2402c0.00488281 11.252 8.2832 24.2432 18.4805 29\nl306.46 142.91c16.0195 7.46973 35.0596 0.540039 42.5293 -15.4805l13.5205 -29c7.46973 -16.0195 0.540039 -35.0596 -15.4805 -42.5293l-218.47 -101.88z\" />\n    <glyph glyph-name=\"less-than-equal\" unicode=\"&#xf537;\" horiz-adv-x=\"448\" \nd=\"M54.9805 233.8c-13.7705 4.52051 -22.9805 16.6104 -22.9805 30.1699v15.96c0 13.5703 9.20996 25.6602 22.9805 30.1807l301.71 119.96c18.29 6 38.5098 -2.53027 45.1494 -19.0605l12.0303 -29.9199c6.63965 -16.5195 -2.81055 -34.79 -21.1006 -40.79\nl-175.56 -68.0898l175.44 -68.0498c18.3896 -6.03027 27.8896 -24.3906 21.21 -41l-12.0908 -30.0801c-6.66992 -16.6104 -26.9893 -25.1797 -45.3799 -19.1504zM424 48c13.25 0 24 -10.7402 24 -24v-48c0 -13.25 -10.75 -24 -24 -24h-400c-13.25 0 -24 10.75 -24 24v48\nc0 13.2598 10.75 24 24 24h400z\" />\n    <glyph glyph-name=\"memory\" unicode=\"&#xf538;\" horiz-adv-x=\"640\" \nd=\"M640 317.06c-18.5996 -6.60938 -32 -24.1895 -32 -45.0596s13.4004 -38.4502 32 -45.0596v-98.9404h-640v98.9404c18.5996 6.60938 32 24.1895 32 45.0596s-13.4004 38.4502 -32 45.0596v34.9404c0 17.6699 14.3301 32 32 32h576c17.6699 0 32 -14.3301 32 -32v-34.9404z\nM224 192v128h-64v-128h64zM352 192v128h-64v-128h64zM480 192v128h-64v-128h64zM0 0v96h640v-96h-64v26.6699c0 8.83984 -7.16016 16 -16 16s-16 -7.16016 -16 -16v-26.6699h-128v26.6699c0 8.83984 -7.16016 16 -16 16s-16 -7.16016 -16 -16v-26.6699h-128v26.6699\nc0 8.83984 -7.16016 16 -16 16s-16 -7.16016 -16 -16v-26.6699h-128v26.6699c0 8.83984 -7.16016 16 -16 16s-16 -7.16016 -16 -16v-26.6699h-64z\" />\n    <glyph glyph-name=\"microphone-alt-slash\" unicode=\"&#xf539;\" horiz-adv-x=\"640\" \nd=\"M633.82 -10.0996c6.97949 -5.43066 8.22949 -15.4805 2.81934 -22.4502l-19.6396 -25.2705c-5.42969 -6.97949 -15.4805 -8.23926 -22.46 -2.80957l-588.36 454.729c-6.97949 5.43066 -8.22949 15.4805 -2.80957 22.4502l19.6396 25.2705\nc5.41992 6.97949 15.4805 8.22949 22.46 2.80957l178.53 -138v45.3604c0 53.0195 42.9805 96 96 96s96 -42.9805 96 -96h-85.3301c-5.88965 0 -10.6699 -3.58008 -10.6699 -8v-16c0 -4.41992 4.78027 -8 10.6699 -8h85.3301v-32h-85.3301\nc-5.88965 0 -10.6699 -3.58008 -10.6699 -8v-16c0 -4.41992 4.78027 -8 10.6699 -8h85.3301v-32h-85.0596l41.3994 -32h43.6699c0 -10.4502 -2.17969 -20.2705 -5.2793 -29.6699l26.5498 -20.5205c6.75977 15.4004 10.7197 32.2803 10.7197 50.2002v48\nc0 8.83984 7.16016 16 16 16h16c8.83984 0 16 -7.16016 16 -16v-48c0 -28.9805 -7.25977 -56.21 -19.7402 -80.3301zM400 -16c8.83984 0 16 -7.16016 16 -16v-16c0 -8.83984 -7.16016 -16 -16 -16h-160c-8.83984 0 -16 7.16016 -16 16v16c0 8.83984 7.16016 16 16 16h56\nv34.1504c-88.0303 12.1396 -152 92.0498 -152 181.689v6.85059l52.0303 -40.2207c12.4395 -53.2197 55.3301 -96.3994 111.18 -101.85c6.94043 -0.669922 13.6396 -0.200195 20.3496 0.200195l50.4004 -38.96c-10.8604 -3.80078 -22.25 -6.45996 -33.96 -8.08008v-33.7803\nh56z\" />\n    <glyph glyph-name=\"money-bill-wave\" unicode=\"&#xf53a;\" horiz-adv-x=\"640\" \nd=\"M621.16 393.54c11.6094 -4.87012 18.8398 -16.8301 18.8496 -29.4697v-317.25c0 -18.4902 -15.04 -31.8105 -32.25 -31.8105c-3.39941 0 -6.87988 0.520508 -10.3496 1.62012c-30.8906 9.7998 -61.7598 13.7197 -92.6504 13.7197\nc-123.17 0 -246.34 -62.3496 -369.51 -62.3496c-38.7998 0 -77.6201 6.19043 -116.41 22.4697c-11.6094 4.86035 -18.8398 16.8301 -18.8398 29.46v317.261c0 18.4893 15.04 31.8096 32.25 31.8096c3.40039 0 6.87988 -0.519531 10.3496 -1.62012\nc30.8906 -9.7998 61.7607 -13.7197 92.6504 -13.7197c123.17 0 246.33 62.3496 369.5 62.3398c38.7998 0 77.6201 -6.19043 116.41 -22.46zM48 315.78v-60.4707c31 0 56.8398 22.1504 62.7197 51.54c-21.5996 1.36035 -42.5996 3.89062 -62.7197 8.93066zM48 30.7803\nc20.1201 -7.31055 41.1797 -11.8105 63.71 -13.6201c-1.53027 34.1299 -29.3398 61.3994 -63.71 61.3994v-47.7793zM320 96c44.1699 0 80 42.9697 80 96c0 53.0195 -35.8203 96 -80 96s-80 -42.9805 -80 -96c0 -53.0098 35.8096 -96 80 -96zM592 68.2197v57.7207\nc-26.8203 -3.40039 -48.4502 -23.2002 -54.3203 -49.2803c18.6104 -1.58984 36.8008 -4.0498 54.3203 -8.44043zM592 304.33v48.8896c-17.7197 6.43066 -36.2695 10.4902 -55.8096 12.6602c0.949219 -31.8496 24.9199 -57.6396 55.8096 -61.5498z\" />\n    <glyph glyph-name=\"money-bill-wave-alt\" unicode=\"&#xf53b;\" horiz-adv-x=\"640\" \nd=\"M621.16 393.54c11.6094 -4.87012 18.8398 -16.8301 18.8496 -29.4697v-317.25c0 -18.4902 -15.04 -31.8105 -32.25 -31.8105c-3.39941 0 -6.87988 0.520508 -10.3496 1.62012c-30.8906 9.7998 -61.7598 13.7197 -92.6504 13.7197\nc-123.17 0 -246.34 -62.3496 -369.51 -62.3496c-38.7998 0 -77.6201 6.19043 -116.41 22.4697c-11.6094 4.86035 -18.8398 16.8301 -18.8398 29.46v317.261c0 18.4893 15.04 31.8096 32.25 31.8096c3.40039 0 6.87988 -0.519531 10.3496 -1.62012\nc30.8906 -9.7998 61.7607 -13.7197 92.6504 -13.7197c123.17 0 246.33 62.3496 369.5 62.3398c38.7998 0 77.6201 -6.19043 116.41 -22.46zM320 96c44.1699 0 80 42.9697 80 96c0 53.0195 -35.8203 96 -80 96s-80 -42.9805 -80 -96c0 -53.0098 35.8096 -96 80 -96z\" />\n    <glyph glyph-name=\"money-check\" unicode=\"&#xf53c;\" horiz-adv-x=\"640\" \nd=\"M0 0v320h640v-320c0 -17.6699 -14.3301 -32 -32 -32h-576c-17.6699 0 -32 14.3301 -32 32zM448 208v-32c0 -8.83984 7.16016 -16 16 -16h96c8.83984 0 16 7.16016 16 16v32c0 8.83984 -7.16016 16 -16 16h-96c-8.83984 0 -16 -7.16016 -16 -16zM448 88v-16\nc0 -4.41992 3.58008 -8 8 -8h112c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-112c-4.41992 0 -8 -3.58008 -8 -8zM64 184v-16c0 -4.41992 3.58008 -8 8 -8h304c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-304c-4.41992 0 -8 -3.58008 -8 -8z\nM64 88v-16c0 -4.41992 3.58008 -8 8 -8h176c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-176c-4.41992 0 -8 -3.58008 -8 -8zM624 416c8.83984 0 16 -7.16016 16 -16v-48h-640v48c0 8.83984 7.16016 16 16 16h608z\" />\n    <glyph glyph-name=\"money-check-alt\" unicode=\"&#xf53d;\" horiz-adv-x=\"640\" \nd=\"M608 416c17.6699 0 32 -14.3301 32 -32v-384c0 -17.6699 -14.3301 -32 -32 -32h-576c-17.6699 0 -32 14.3301 -32 32v384c0 17.6699 14.3301 32 32 32h576zM176 120.12c23.6201 0.629883 42.6699 20.54 42.6699 45.0703c0 19.9697 -12.9902 37.8096 -31.5801 43.3896\nl-45 13.5c-5.16016 1.54004 -8.76953 6.78027 -8.76953 12.7295c0 7.27051 5.2998 13.1904 11.7998 13.1904h28.1104c4.55957 0 8.94922 -1.29004 12.8193 -3.71973c3.24023 -2.03027 7.36035 -1.91016 10.1299 0.729492l11.75 11.21\nc3.53027 3.37012 3.33008 9.20996 -0.569336 12.1406c-9.10059 6.83984 -20.0801 10.7695 -31.3701 11.3496v16.29c0 4.41992 -3.58008 8 -8 8h-16c-4.41992 0 -8 -3.58008 -8 -8v-16.1201c-23.6201 -0.629883 -42.6699 -20.5498 -42.6699 -45.0703\nc0 -19.9697 12.9893 -37.8096 31.5801 -43.3896l45 -13.5c5.15918 -1.54004 8.76953 -6.78027 8.76953 -12.7295c0 -7.27051 -5.2998 -13.1904 -11.7998 -13.1904h-28.1104c-4.55957 0 -8.9502 1.2998 -12.8193 3.71973\nc-3.24023 2.03027 -7.36035 1.91016 -10.1309 -0.729492l-11.75 -11.21c-3.5293 -3.37012 -3.3291 -9.20996 0.570312 -12.1406c9.10059 -6.83008 20.0801 -10.7695 31.3701 -11.3496v-16.29c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v16.1201zM416 136v16\nc0 4.41992 -3.58008 8 -8 8h-112c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h112c4.41992 0 8 3.58008 8 8zM576 136v16c0 4.41992 -3.58008 8 -8 8h-80c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h80c4.41992 0 8 3.58008 8 8z\nM576 232v16c0 4.41992 -3.58008 8 -8 8h-272c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h272c4.41992 0 8 3.58008 8 8z\" />\n    <glyph glyph-name=\"not-equal\" unicode=\"&#xf53e;\" horiz-adv-x=\"448\" \nd=\"M416 240h-98.4199l-74.5303 -96h172.95c17.6699 0 32 -14.3301 32 -32v-32c0 -17.6699 -14.3301 -32 -32 -32h-247.48l-82.0898 -105.73c-5.37012 -7.00977 -15.4102 -8.34961 -22.4297 -2.96973l-25.4102 19.46c-7.00977 5.37988 -8.33984 15.4199 -2.96973 22.4307\nl51.8701 66.8096h-55.4902c-17.6699 0 -32 14.3301 -32 32v32c0 17.6699 14.3301 32 32 32h130.03l74.5293 96h-204.56c-17.6699 0 -32 14.3301 -32 32v32c0 17.6699 14.3301 32 32 32h279.09l82.0801 105.73c5.37988 7.00977 15.4199 8.34961 22.4404 2.96973\nl25.4092 -19.46c7.01074 -5.37012 8.34082 -15.4102 2.9707 -22.4307l-51.8701 -66.8096h23.8799c17.6699 0 32 -14.3301 32 -32v-32c0 -17.6699 -14.3301 -32 -32 -32z\" />\n    <glyph glyph-name=\"palette\" unicode=\"&#xf53f;\" \nd=\"M204.3 443c163.8 31.9004 307.2 -92.0996 307.7 -249.7c-0.0996094 -35.7002 -29.0996 -65.2998 -64.9004 -65.2998h-79.6992c-51 0 -84 -53 -60.9004 -98.4004c18.9004 -37.0996 -1.2998 -85.2998 -42.5 -91.6992c-127.1 -19.7002 -295.8 119.699 -258.8 306.699\nc19.5996 99.1006 99.7002 179 199.1 198.4zM96 128c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM128 256c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM256 320\nc17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM384 256c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32z\" />\n    <glyph glyph-name=\"parking\" unicode=\"&#xf540;\" horiz-adv-x=\"448\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM240 128c52.9004 0 96 43.0996 96 96s-43.0996 96 -96 96h-96c-8.7998 0 -16 -7.2002 -16 -16v-224c0 -8.7998 7.2002 -16 16 -16h32\nc8.7998 0 16 7.2002 16 16v48h48zM240 256c17.5996 0 32 -14.4004 32 -32s-14.4004 -32 -32 -32h-48v64h48z\" />\n    <glyph glyph-name=\"percentage\" unicode=\"&#xf541;\" horiz-adv-x=\"384\" \nd=\"M109.25 274.75c-24.9902 -25 -65.5098 -25 -90.5098 0c-24.9902 24.9902 -24.9902 65.5195 0 90.5098s65.5195 24.9902 90.5098 0s24.9902 -65.5195 0 -90.5098zM365.25 109.26c25 -25 25 -65.5195 0 -90.5098c-24.9902 -24.9902 -65.5195 -24.9902 -90.5098 0\ns-24.9902 65.5195 0 90.5098s65.5195 24.9902 90.5098 0zM363.31 340.69c12.5 -12.5 12.5 -32.7607 0 -45.25l-274.75 -274.75c-12.4893 -12.5 -32.75 -12.5 -45.25 0l-22.6191 22.6191c-12.5 12.4902 -12.5 32.75 0 45.25l274.75 274.75c12.4893 12.5 32.75 12.5 45.25 0z\n\" />\n    <glyph glyph-name=\"project-diagram\" unicode=\"&#xf542;\" horiz-adv-x=\"640\" \nd=\"M384 128c17.6699 0 32 -14.3301 32 -32v-128c0 -17.6699 -14.3301 -32 -32 -32h-128c-17.6699 0 -32 14.3301 -32 32v128c0 17.6699 14.3301 32 32 32h128zM192 416v-32h224v-64h-224v-47.5098l64.2803 -112.49h-0.280273c-23.5996 0 -44.0195 -12.9805 -55.1201 -32.04\nl-73.1602 128.04h-95.7197c-17.6699 0 -32 14.3301 -32 32v128c0 17.6699 14.3301 32 32 32h128c17.6699 0 32 -14.3301 32 -32zM608 448c17.6699 0 32 -14.3301 32 -32v-128c0 -17.6699 -14.3301 -32 -32 -32h-128c-17.6699 0 -32 14.3301 -32 32v128\nc0 17.6699 14.3301 32 32 32h128z\" />\n    <glyph glyph-name=\"receipt\" unicode=\"&#xf543;\" horiz-adv-x=\"384\" \nd=\"M358.4 444.8c10.5996 7.90039 25.5996 0.400391 25.5996 -12.7998v-480c0 -13.2002 -15.0996 -20.7002 -25.5996 -12.7998l-38.4004 44.7998l-54.4004 -44.7998c-2.35059 -1.78027 -6.65137 -3.22559 -9.59961 -3.22559s-7.24902 1.44531 -9.59961 3.22559\nl-54.4004 44.7998l-54.4004 -44.7998c-2.35059 -1.78027 -6.65137 -3.22559 -9.59961 -3.22559s-7.24902 1.44531 -9.59961 3.22559l-54.4004 44.7998l-38.4004 -44.7998c-10.5996 -7.90039 -25.5996 -0.400391 -25.5996 12.7998v480c0 13.2002 15 20.7002 25.5996 12.7998\nl38.4004 -44.7998l54.4004 44.7998c2.35059 1.78027 6.65137 3.22559 9.59961 3.22559s7.24902 -1.44531 9.59961 -3.22559l54.4004 -44.7998l54.4004 44.7998c2.35059 1.78027 6.65137 3.22559 9.59961 3.22559s7.24902 -1.44531 9.59961 -3.22559l54.4004 -44.7998z\nM320 88v16c0 4.40039 -3.59961 8 -8 8h-240c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h240c4.40039 0 8 3.59961 8 8zM320 184v16c0 4.40039 -3.59961 8 -8 8h-240c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h240\nc4.40039 0 8 3.59961 8 8zM320 280v16c0 4.40039 -3.59961 8 -8 8h-240c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h240c4.40039 0 8 3.59961 8 8z\" />\n    <glyph glyph-name=\"robot\" unicode=\"&#xf544;\" horiz-adv-x=\"640\" \nd=\"M0 192c0 17.7002 14.2998 32 32 32h32v-192h-32c-17.7002 0 -32 14.2998 -32 32v128zM464 352c44.2002 0 80 -35.7998 80 -80v-272c0 -35.2998 -28.7002 -64 -64 -64h-320c-35.2998 0 -64 28.7002 -64 64v272c0 44.2002 35.7998 80 80 80h112v64\nc0 17.7002 14.2998 32 32 32s32 -14.2998 32 -32v-64h112zM256 32v32h-64v-32h64zM224 152c22.0996 0 40 17.9004 40 40s-17.9004 40 -40 40s-40 -17.9004 -40 -40s17.9004 -40 40 -40zM352 32v32h-64v-32h64zM448 32v32h-64v-32h64zM416 152c22.0996 0 40 17.9004 40 40\ns-17.9004 40 -40 40s-40 -17.9004 -40 -40s17.9004 -40 40 -40zM608 224c17.7002 0 32 -14.2998 32 -32v-128c0 -17.7002 -14.2998 -32 -32 -32h-32v192h32z\" />\n    <glyph glyph-name=\"ruler\" unicode=\"&#xf545;\" horiz-adv-x=\"640\" \nd=\"M635.7 280.8c8.7998 -15 3.59961 -34.2002 -11.6006 -42.7998l-496.8 -281.9c-15.2002 -8.59961 -34.7002 -3.5 -43.5 11.5l-79.5996 135.601c-8.7998 15 -3.5 34.0996 11.7002 42.7998l69 39.0996l59.6992 -101.399c2.2002 -3.7998 7.10059 -5.10059 10.9004 -2.90039\nl13.7998 7.7998c3.7998 2.2002 5.10059 7 2.90039 10.7002l-59.7002 101.7l55.2002 31.2998l27.8994 -47.5c2.2002 -3.7998 7.10059 -5.09961 10.9004 -2.89941l13.7998 7.7998c3.7998 2.2002 5.10059 6.89941 2.90039 10.7002l-27.9004 47.3994l55.2002 31.2998\nl59.7002 -101.699c2.2002 -3.80078 7.09961 -5.10059 10.8994 -2.90039l13.8008 7.7998c3.7998 2.2002 5.09961 7 2.89941 10.7002l-59.7998 101.7l55.2002 31.2998l27.8994 -47.2998c2.2002 -3.7998 7.10059 -5.10059 10.9004 -2.90039l13.7998 7.7998\nc3.7998 2.2002 5.10059 6.90039 2.90039 10.7002l-27.9004 47.4004l55.2002 31.2998l59.7002 -101.6c2.2002 -3.80078 7.09961 -5.10059 10.8994 -2.90039l13.8008 7.7998c3.7998 2.2002 5.09961 6.90039 2.89941 10.7002l-59.7002 101.7l69 39.0996\nc15.2002 8.60059 34.7002 3.5 43.5 -11.5z\" />\n    <glyph glyph-name=\"ruler-combined\" unicode=\"&#xf546;\" \nd=\"M160 160v-41.3799l-158.43 -158.42c-0.660156 2.55957 -1.57031 5.03027 -1.57031 7.7998v448c0 17.6699 14.3301 32 32 32h96c17.6699 0 32 -14.3301 32 -32v-32h-56c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h56v-64h-56\nc-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h56v-64h-56c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h56zM480 96c17.6699 0 32 -14.3301 32 -32v-96c0 -17.6699 -14.3301 -32 -32 -32h-448\nc-2.75977 0 -5.24023 0.910156 -7.7998 1.57031l158.43 158.43h41.3701v-56c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v56h64v-56c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v56h64v-56c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8\nv56h32z\" />\n    <glyph glyph-name=\"ruler-horizontal\" unicode=\"&#xf547;\" horiz-adv-x=\"576\" \nd=\"M544 320c17.6699 0 32 -14.3301 32 -32v-192c0 -17.6699 -14.3301 -32 -32 -32h-512c-17.6699 0 -32 14.3301 -32 32v192c0 17.6699 14.3301 32 32 32h48v-88c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v88h64v-88c0 -4.41992 3.58008 -8 8 -8h16\nc4.41992 0 8 3.58008 8 8v88h64v-88c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v88h64v-88c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v88h64v-88c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v88h48z\" />\n    <glyph glyph-name=\"ruler-vertical\" unicode=\"&#xf548;\" horiz-adv-x=\"256\" \nd=\"M168 32h88v-64c0 -17.6699 -14.3301 -32 -32 -32h-192c-17.6699 0 -32 14.3301 -32 32v448c0 17.6699 14.3301 32 32 32h192c17.6699 0 32 -14.3301 32 -32v-64h-88c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h88v-64h-88\nc-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h88v-64h-88c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h88v-64h-88c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8z\" />\n    <glyph glyph-name=\"school\" unicode=\"&#xf549;\" horiz-adv-x=\"640\" \nd=\"M0 224c0 17.6699 14.3301 32 32 32h64v-320h-80c-8.83984 0 -16 7.16016 -16 16v272zM360 272c4.41992 0 8 -3.58008 8 -8v-16c0 -4.41992 -3.58008 -8 -8 -8h-48c-4.41992 0 -8 3.58008 -8 8v64c0 4.41992 3.58008 8 8 8h16c4.41992 0 8 -3.58008 8 -8v-40h24z\nM497.75 335.96c8.90039 -5.92969 14.25 -15.9297 14.25 -26.6299v-373.33h-128v144c0 8.83984 -7.16016 16 -16 16h-96c-8.83984 0 -16 -7.16016 -16 -16v-144h-128v373.34c0.00195312 9.45117 6.38574 21.377 14.25 26.6201l160 106.67\nc4.4502 2.96484 12.4023 5.37012 17.75 5.37012s13.2998 -2.40527 17.75 -5.37012zM320 192c44.1797 0 80 35.8203 80 80s-35.8203 80 -80 80s-80 -35.8203 -80 -80s35.8203 -80 80 -80zM608 256c17.6699 0 32 -14.3301 32 -32v-272c0 -8.83984 -7.16016 -16 -16 -16h-80\nv320h64z\" />\n    <glyph glyph-name=\"screwdriver\" unicode=\"&#xf54a;\" \nd=\"M448 448l64 -64l-96 -128h-62.0596l-83.0303 -83.0303c-4.25 6.79004 -9.07031 13.2705 -14.8701 19.0703c-5.7998 5.80957 -12.2803 10.6201 -19.0703 14.8701l83.0303 83.0303v62.0596zM128 169.41c29.1104 29.1094 76.2998 29.1094 105.41 0\nc29.1094 -29.1104 29.1094 -76.2998 0 -105.41l-117.08 -117.08c-14.5605 -14.5596 -38.1504 -14.5596 -52.71 0l-52.7002 52.7002c-14.5498 14.5596 -14.5498 38.1602 0 52.71z\" />\n    <glyph glyph-name=\"shoe-prints\" unicode=\"&#xf54b;\" horiz-adv-x=\"640\" \nd=\"M192 288c-35.3496 0 -64 28.6504 -64 64s28.6504 64 64 64h32v-128h-32zM0 32c0 35.3496 28.6504 64 64 64h32v-128h-32c-35.3496 0 -64 28.6504 -64 64zM337.46 160c90.3604 0 174.54 -32 174.54 -96c0 -45.2197 -39.0996 -97.2998 -148.58 -120.82\nc-31.9795 -6.87012 -64.8896 -8.50977 -97.5801 -6.19922c-27.2998 1.92969 -54.0996 7.76953 -80.3096 15.0498l-57.5303 15.9697v128c60.21 0 79.9404 15.6201 104.73 32c28.5693 18.8799 69.8193 32 104.729 32zM491.42 440.81\nc109.48 -23.5098 148.58 -75.5898 148.58 -120.81c0 -64 -84.1797 -96 -174.54 -96c-34.9102 0 -76.1602 13.1201 -104.729 32c-24.79 16.3799 -44.5303 32 -104.73 32v128l57.5303 15.9697c26.21 7.27051 53.0098 13.1104 80.3096 15.04\nc32.6904 2.32031 65.6006 0.669922 97.5801 -6.2002z\" />\n    <glyph glyph-name=\"skull\" unicode=\"&#xf54c;\" \nd=\"M256 448c141.4 0 256 -100.3 256 -224c0 -70.0996 -36.9004 -132.6 -94.5 -173.7c-9.7002 -6.89941 -15.2002 -18.2002 -13.5 -29.8994l9.40039 -66.2002c1.39941 -9.60059 -6 -18.2002 -15.7002 -18.2002h-77.7002v56c0 4.40039 -3.59961 8 -8 8h-16\nc-4.40039 0 -8 -3.59961 -8 -8v-56h-64v56c0 4.40039 -3.59961 8 -8 8h-16c-4.40039 0 -8 -3.59961 -8 -8v-56h-77.7002c-9.7002 0 -17.0996 8.59961 -15.7002 18.2002l9.40039 66.2002c1.7002 11.7998 -3.90039 23 -13.5 29.8994\nc-57.5996 41.1006 -94.5 103.601 -94.5 173.7c0 123.7 114.6 224 256 224zM160 128c35.2998 0 64 28.7002 64 64s-28.7002 64 -64 64s-64 -28.7002 -64 -64s28.7002 -64 64 -64zM352 128c35.2998 0 64 28.7002 64 64s-28.7002 64 -64 64s-64 -28.7002 -64 -64\ns28.7002 -64 64 -64z\" />\n    <glyph glyph-name=\"smoking-ban\" unicode=\"&#xf54d;\" \nd=\"M96 144v64c0 8.7998 7.2002 16 16 16h21.5l96 -96h-117.5c-8.7998 0 -16 7.2002 -16 16zM256 448c141.4 0 256 -114.6 256 -256s-114.6 -256 -256 -256s-256 114.6 -256 256s114.6 256 256 256zM256 0c41.4004 0 79.7002 13.2998 111.1 35.7002l-267.399 267.399\nc-22.4004 -31.3994 -35.7002 -69.6992 -35.7002 -111.1c0 -105.9 86.0996 -192 192 -192zM301.2 192l32 -32h50.7998v32h-82.7998zM412.3 80.9004c22.4004 31.3994 35.7002 69.6992 35.7002 111.1c0 105.9 -86.0996 192 -192 192\nc-41.4004 0 -79.7002 -13.2998 -111.1 -35.7002l124.3 -124.3h130.8c8.7998 0 16 -7.2002 16 -16v-64c0 -8.7998 -7.2002 -16 -16 -16h-34.7998zM320.6 320c32.1006 0 58.7002 -23.7002 63.3008 -54.5996c0.699219 -4.90039 -3 -9.40039 -8 -9.40039h-16.2002\nc-3.7002 0 -7 2.5 -7.7002 6.09961c-2.7998 14.7002 -15.7998 25.9004 -31.4004 25.9004c-32.0996 0 -58.6992 23.7002 -63.2998 54.5996c-0.700195 4.90039 3 9.40039 8 9.40039h16.2002c3.7002 0 7 -2.5 7.7002 -6.09961\nc2.7998 -14.7002 15.7998 -25.9004 31.3994 -25.9004z\" />\n    <glyph glyph-name=\"store\" unicode=\"&#xf54e;\" horiz-adv-x=\"616\" \nd=\"M602 329.4c33.5996 -53.6006 3.7998 -128 -59 -136.4c-4.5 -0.599609 -9 -0.900391 -13.7002 -0.900391c-29.5 0 -55.7002 13 -73.7998 33.1006c-18 -20.1006 -44.2002 -33.1006 -73.7998 -33.1006c-29.5 0 -55.7998 13 -73.7998 33.1006\nc-18 -20.1006 -44.2002 -33.1006 -73.8008 -33.1006c-29.5 0 -55.7998 13 -73.7998 33.1006c-18 -20.1006 -44.2002 -33.1006 -73.7998 -33.1006c-4.59961 0 -9.2002 0.300781 -13.7002 0.900391c-62.5996 8.5 -92.2998 82.9004 -58.7998 136.4l64.9004 103.6\nc5.7998 9.2998 16.0996 15 27.0996 15h404c11 0 21.2998 -5.7002 27.0996 -15zM529.5 160c6.09961 0 12.0996 0.400391 18.2002 1.2002c5.59961 0.700195 11 2 16.3994 3.59961v-196.8c0 -17.7002 -14.2998 -32 -32 -32h-448c-17.6992 0 -32 14.2998 -32 32v196.8\nc5.30078 -1.5 10.8008 -2.7998 16.4004 -3.59961c5.90039 -0.799805 12 -1.2002 18 -1.2002c10 0 19.9004 1.59961 29.5 3.7998v-99.7998h384v99.7998c9.59961 -2.2998 19.5 -3.7998 29.5 -3.7998z\" />\n    <glyph glyph-name=\"store-alt\" unicode=\"&#xf54f;\" horiz-adv-x=\"640\" \nd=\"M320 64v160h64v-256c0 -17.7002 -14.2998 -32 -32 -32h-256c-17.7002 0 -32 14.2998 -32 32v256h64v-160h192zM634.6 305.8c14.1006 -21.2998 -1.09961 -49.7998 -26.5996 -49.7998h-575.9c-25.5996 0 -40.7998 28.5 -26.5996 49.7998l85.2998 128\nc5.90039 8.90039 15.9004 14.2002 26.6006 14.2002h405.199c10.7002 0 20.7002 -5.2998 26.7002 -14.2002zM512 -48v272h64v-272c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16z\" />\n    <glyph glyph-name=\"stream\" unicode=\"&#xf550;\" \nd=\"M16 320c-8.83984 0 -16 7.16016 -16 16v64c0 8.83984 7.16016 16 16 16h416c8.83984 0 16 -7.16016 16 -16v-64c0 -8.83984 -7.16016 -16 -16 -16h-416zM496 240c8.83984 0 16 -7.16016 16 -16v-64c0 -8.83984 -7.16016 -16 -16 -16h-416c-8.83984 0 -16 7.16016 -16 16\nv64c0 8.83984 7.16016 16 16 16h416zM432 64c8.83984 0 16 -7.16016 16 -16v-64c0 -8.83984 -7.16016 -16 -16 -16h-416c-8.83984 0 -16 7.16016 -16 16v64c0 8.83984 7.16016 16 16 16h416z\" />\n    <glyph glyph-name=\"stroopwafel\" unicode=\"&#xf551;\" \nd=\"M188.12 237.26l45.25 -45.2598l-45.2598 -45.25l-45.25 45.25zM301.25 259.88l-45.25 -45.25l-45.25 45.2598l45.25 45.25zM210.75 124.12l45.25 45.25l45.2598 -45.25l-45.2598 -45.2598zM256 448c141.38 0 256 -114.62 256 -256s-114.62 -256 -256 -256\ns-256 114.62 -256 256s114.62 256 256 256zM442.68 152.4c1.29199 1.29492 2.34082 3.83008 2.34082 5.65918c0 1.83008 -1.04883 4.36523 -2.34082 5.66016l-28.29 28.2803l28.2705 28.3096c3.12012 3.12012 3.12012 8.19043 0 11.3105l-11.3105 11.3096\nc-3.11914 3.12012 -8.18945 3.12012 -11.3096 0l-28.29 -28.29l-45.25 45.2607l33.9404 33.9395l16.9697 -16.9697c3.12012 -3.12012 8.18945 -3.12012 11.3096 0l11.3105 11.3096c3.12012 3.12012 3.12012 8.19043 0 11.3105l-16.9707 16.9697l16.9707 16.9697\nc3.12012 3.12012 3.12012 8.19043 0 11.3105l-11.3105 11.3096c-3.12012 3.12012 -8.18945 3.12012 -11.3096 0l-16.9697 -16.9697l-16.9707 16.9697c-3.12012 3.12012 -8.18945 3.12012 -11.3096 0l-11.3105 -11.3096c-3.11914 -3.12012 -3.11914 -8.19043 0 -11.3105\nl16.9707 -16.9697l-33.9404 -33.9404l-45.2598 45.25l28.29 28.29c3.12012 3.12012 3.12012 8.19043 0 11.3105l-11.3105 11.3096c-3.11914 3.12012 -8.18945 3.12012 -11.3096 0l-28.29 -28.29l-28.3096 28.2705c-3.12012 3.12012 -8.19043 3.12012 -11.3105 0\nl-11.3096 -11.3105c-3.12012 -3.11914 -3.12012 -8.18945 0 -11.3096l28.29 -28.29l-45.2607 -45.25l-33.9395 33.9404l16.9697 16.9697c3.12012 3.12012 3.12012 8.18945 0 11.3096l-11.3096 11.3105c-3.12012 3.12012 -8.19043 3.12012 -11.3105 0l-16.9697 -16.9707\nl-16.9697 16.9707c-3.12012 3.12012 -8.19043 3.12012 -11.3105 0l-11.3096 -11.3105c-3.12012 -3.12012 -3.12012 -8.18945 0 -11.3096l16.9697 -16.9697l-16.9697 -16.9707c-3.12012 -3.12012 -3.12012 -8.18945 0 -11.3096l11.3096 -11.3105\nc3.12012 -3.11914 8.19043 -3.11914 11.3105 0l16.9697 16.9707l33.9404 -33.9404l-45.25 -45.2598l-28.29 28.29c-3.12012 3.12012 -8.19043 3.12012 -11.3105 0l-11.3096 -11.3105c-3.12012 -3.11914 -3.12012 -8.18945 0 -11.3096l28.29 -28.29l-28.29 -28.29\nc-3.12012 -3.12012 -3.12012 -8.19043 0 -11.3096l11.3398 -11.3301c3.12012 -3.12012 8.18945 -3.12012 11.3096 0l28.29 28.29l45.25 -45.25l-33.9395 -33.9404l-16.9707 16.9697c-3.11914 3.12012 -8.18945 3.12012 -11.3096 0l-11.3096 -11.3096\nc-3.12012 -3.12012 -3.12012 -8.19043 0 -11.3105l16.9697 -16.9697l-16.9697 -16.9697c-3.12012 -3.12012 -3.12012 -8.19043 0 -11.3105l11.3096 -11.3096c3.12012 -3.12012 8.19043 -3.12012 11.3096 0l16.9707 16.9697l16.9697 -16.9697\nc3.12012 -3.12012 8.19043 -3.12012 11.3096 0l11.3105 11.3096c3.12012 3.12012 3.12012 8.19043 0 11.3105l-16.9697 16.9697l33.9395 33.9404l45.25 -45.2598l-28.29 -28.29c-3.12012 -3.12012 -3.12012 -8.19043 0 -11.3105l11.3105 -11.3096\nc3.11914 -3.12012 8.18945 -3.12012 11.3096 0l28.29 28.29l28.3096 -28.2705c3.12012 -3.12012 8.19043 -3.12012 11.3105 0l11.3096 11.3105c3.12012 3.11914 3.12012 8.18945 0 11.3096l-28.29 28.29l45.2607 45.2598l33.9395 -33.9395l-16.9697 -16.9707\nc-3.12012 -3.11914 -3.12012 -8.18945 0 -11.3096l11.3096 -11.3096c3.12012 -3.12012 8.19043 -3.12012 11.3105 0l16.9697 16.9697l16.9697 -16.9697c3.12012 -3.12012 8.19043 -3.12012 11.3105 0l11.3096 11.3096c3.12012 3.12012 3.12012 8.19043 0 11.3096\nl-16.9697 16.9707l16.9697 16.9697c3.12012 3.12012 3.12012 8.19043 0 11.3096l-11.3096 11.3105c-3.12012 3.12012 -8.19043 3.12012 -11.3105 0l-16.9697 -16.9697l-33.9404 33.9395l45.25 45.25l28.29 -28.29c3.12012 -3.12012 8.19043 -3.12012 11.3105 0zM278.63 192\nl45.2598 45.2598l45.25 -45.2598l-45.25 -45.25z\" />\n    <glyph glyph-name=\"toolbox\" unicode=\"&#xf552;\" \nd=\"M502.63 233.37c6 -6 9.37012 -14.1396 9.37012 -22.6201v-82.75h-128v16c0 8.83984 -7.16016 16 -16 16h-32c-8.83984 0 -16 -7.16016 -16 -16v-16h-128v16c0 8.83984 -7.16016 16 -16 16h-32c-8.83984 0 -16 -7.16016 -16 -16v-16h-128v82.7402\nc0 8.49023 3.37012 16.6299 9.37012 22.6299l45.25 45.2598c6.00977 6 14.1396 9.37012 22.6299 9.37012h50.75v80c0 26.5098 21.4902 48 48 48h160c26.5098 0 48 -21.4902 48 -48v-80.0098h50.75c8.49023 0 16.6299 -3.37012 22.6299 -9.37012zM320 288v64h-128v-64h128z\nM384 80v16h128v-96c0 -17.6699 -14.3301 -32 -32 -32h-448c-17.6699 0 -32 14.3301 -32 32v96h128v-16c0 -8.83984 7.16016 -16 16 -16h32c8.83984 0 16 7.16016 16 16v16h128v-16c0 -8.83984 7.16016 -16 16 -16h32c8.83984 0 16 7.16016 16 16z\" />\n    <glyph glyph-name=\"tshirt\" unicode=\"&#xf553;\" horiz-adv-x=\"640\" \nd=\"M631.2 351.5c7.89941 -3.90039 11.0996 -13.5996 7.09961 -21.5l-57.2998 -114.4c-4 -8 -13.5996 -11.1992 -21.5 -7.19922l-56.5996 27.6992c-10.6006 5.2002 -23 -2.59961 -23 -14.3994v-253.7c0 -17.7002 -14.3008 -32 -32 -32h-256c-17.7002 0 -32 14.2998 -32 32\nv253.6c0 11.9004 -12.4004 19.6006 -23 14.4004l-56.6006 -27.7002c-7.89941 -3.89941 -17.5 -0.700195 -21.5 7.2002l-57.2002 114.5c-3.89941 7.90039 -0.699219 17.5 7.2002 21.5l194.7 96.5c20.0996 -27.7998 64.5996 -47.2002 116.5 -47.2002\ns96.4004 19.4004 116.5 47.2002z\" />\n    <glyph glyph-name=\"walking\" unicode=\"&#xf554;\" horiz-adv-x=\"320\" \nd=\"M208 352c-26.5 0 -48 21.5 -48 48s21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48zM302.5 202.9c15.7002 -7.90039 22 -27.3008 14.2998 -43c-7.89941 -15.8008 -26.8994 -22.2002 -42.5 -14.3008l-23.2998 11.8008c-15 7.59961 -26.4004 20.8994 -31.7002 37\nl-5.5 16.5l-17.2002 -68.7002l45.5 -49.7002c7.2002 -7.7998 12.3008 -17.4004 14.9004 -27.7002l22.2002 -89c4.2998 -17.0996 -6.2002 -34.5 -23.2998 -38.7998c-17.1006 -4.2998 -34.5 6.2002 -38.8008 23.2998l-18.2998 73.2998\nc-2.59961 10.3008 -7.7002 19.8008 -14.8994 27.7002l-59.9004 65.4004c-14.5 15.8994 -20.0996 38 -14.9004 58.7998l15.2002 60.7002l-26.7998 -10.7998c-7.2002 -2.90039 -13 -8.40039 -16.5 -15.4004l-6.7002 -13.5996\nc-7.89941 -15.8008 -26.8994 -22.2002 -42.5 -14.3008c-15.7002 7.90039 -22 27.1006 -14.2002 42.9004l6.7002 13.5996c10.4004 21 28.1006 37.5 49.7002 46.2002c37.4004 15.1006 57.2998 25.2998 93.2998 25.2002c46.5 -0.0996094 87.5 -31.2998 102.2 -75.9004\nl9.7002 -29.3994zM73.5996 62.2002l20.7002 51.5c8.7002 -11.9004 -7.89941 6.59961 47.4004 -53.7002l-13.5 -33.7998c-3.2998 -8.10059 -8.10059 -15.4004 -14.2002 -21.5l-59.4004 -59.4004c-12.5 -12.5 -32.6992 -12.5 -45.1992 0s-12.5 32.7998 0 45.2998l50 50.1006\nc6.19922 6.09961 11 13.3994 14.1992 21.5z\" />\n    <glyph glyph-name=\"wallet\" unicode=\"&#xf555;\" \nd=\"M461.2 320c28.0195 0 50.7998 -21.5303 50.7998 -48v-256c0 -26.4697 -22.7803 -48 -50.7998 -48h-397.2c-35.3496 0 -64 28.6504 -64 64v320c0 35.3496 28.6504 64 64 64h368c26.5098 0 48 -21.4902 48 -48c0 -8.83984 -7.16016 -16 -16 -16h-384\nc-8.83984 0 -16 -7.16016 -16 -16s7.16016 -16 16 -16h381.2zM416 112c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z\" />\n    <glyph glyph-name=\"angry\" unicode=\"&#xf556;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM136 208c0 -17.7002 14.4004 -32 32.0996 -32c17.7002 0 32 14.2998 32 32c0 2.90039 -1 5.5 -1.69922 8.2002c0.599609 0 1.19922 -0.200195 1.69922 -0.200195\nc6.90039 0 13.2002 4.5 15.3008 11.4004c2.59961 8.39941 -2.2002 17.3994 -10.7002 19.8994l-80 24c-8.5 2.5 -17.4004 -2.2002 -19.9004 -10.7002c-2.59961 -8.39941 2.2002 -17.3994 10.7002 -19.8994l31 -9.2998c-6.40039 -5.90039 -10.5 -14.1006 -10.5 -23.4004z\nM304 53.7998c13.4004 -16.0996 38.2998 4 24.5 20.5c-20 24 -49.4004 37.7998 -80.5996 37.7998c-31.2002 0 -60.6006 -13.7998 -80.6006 -37.7998c-13.5996 -16.2998 11.1006 -36.7998 24.6006 -20.5c27.8994 33.4004 84.2998 33.4004 112.1 0zM380.6 240.7\nc8.5 2.5 13.3008 11.3994 10.8008 19.8994c-2.5 8.40039 -11.5 13.2002 -19.9004 10.7002l-80 -24c-8.40039 -2.5 -13.2002 -11.3994 -10.7002 -19.8994c2.10059 -6.90039 8.40039 -11.4004 15.2998 -11.4004c0.600586 0 1.10059 0.0996094 1.7002 0.200195\nc-0.799805 -2.60059 -1.7002 -5.2998 -1.7002 -8.2002c0 -17.7002 14.3008 -32 32 -32c17.7002 0 32 14.2998 32 32c0 9.2998 -4.19922 17.5996 -10.5 23.4004z\" />\n    <glyph glyph-name=\"archway\" unicode=\"&#xf557;\" horiz-adv-x=\"576\" \nd=\"M560 0c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-159.98c-8.83984 0 -16 7.16016 -16 16v16l-0.0195312 160c0 53.0195 -42.9805 96 -96 96s-96 -42.9805 -96 -96v-176c0 -8.83984 -7.16016 -16 -16 -16h-159.98\nc-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h15.9805v352h512v-352h16zM560 448c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-544c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h544z\" />\n    <glyph glyph-name=\"atlas\" unicode=\"&#xf558;\" horiz-adv-x=\"448\" \nd=\"M318.38 240c-5.28027 -31.2197 -25.5898 -57.1699 -53.2998 -70.4102c7.66992 19.0605 12.7197 43.3799 14.21 70.4102h39.0898zM318.38 272h-39.0898c-1.49023 27.0303 -6.53027 51.3496 -14.21 70.4102c27.71 -13.2402 48.0098 -39.1904 53.2998 -70.4102zM224 350.69\nc7.69043 -7.4502 20.7695 -34.4307 23.4404 -78.6904h-46.8701c2.66016 44.2695 15.7393 71.2402 23.4297 78.6904zM182.92 342.41c-7.67969 -19.0605 -12.7197 -43.3799 -14.21 -70.4102h-39.0898c5.28027 31.2197 25.5898 57.1699 53.2998 70.4102zM182.92 169.59\nc-27.71 13.2402 -48.0195 39.1904 -53.2998 70.4102h39.0898c1.49023 -27.0303 6.53027 -51.3496 14.21 -70.4102zM247.43 240c-2.66016 -44.2598 -15.7393 -71.2402 -23.4395 -78.6904c-7.69043 7.4502 -20.7705 34.4307 -23.4307 78.6904h46.8701zM448 89.5996\nc0 -9.59961 -3.2002 -16 -9.59961 -19.1992c-3.2002 -12.8008 -3.2002 -57.6006 0 -73.6006c6.39941 -6.39941 9.59961 -12.7998 9.59961 -19.2002v-16c0 -16 -12.7998 -25.5996 -25.5996 -25.5996h-326.4c-54.4004 0 -96 41.5996 -96 96v320c0 54.4004 41.5996 96 96 96\nh326.4c16 0 25.5996 -9.59961 25.5996 -25.5996v-332.801zM224 384c-70.6904 0 -128 -57.3096 -128 -128s57.3096 -128 128 -128s128 57.3096 128 128s-57.3096 128 -128 128zM384 0v64h-288c-16 0 -32 -12.7998 -32 -32s12.7998 -32 32 -32h288z\" />\n    <glyph glyph-name=\"award\" unicode=\"&#xf559;\" horiz-adv-x=\"384\" \nd=\"M97.1201 85.3701c13.79 -13.7803 32.1104 -21.3701 51.6104 -21.3701c12.4395 0 24.4697 3.54004 35.3096 9.58008l-52.0498 -127.62c-4.39062 -10.7695 -18.4307 -13.4004 -26.4307 -4.95996l-36.2393 38.2803l-52.6904 -2.01074\nc-11.6201 -0.439453 -19.8203 11.2607 -15.4297 22.0303l45.3701 111.24c7.55957 -5.87012 15.9199 -10.7705 25.4297 -13.3203c20.96 -5.60938 16.4297 -3.16016 25.1201 -11.8496zM382.8 -0.700195c4.39062 -10.7598 -3.80957 -22.4697 -15.4297 -22.0303\nl-52.6904 2.01074l-36.25 -38.2803c-7.98926 -8.44043 -22.04 -5.80957 -26.4297 4.95996l-52.0498 127.62c10.8398 -6.03027 22.8701 -9.58008 35.3096 -9.58008c19.5 0 37.8301 7.58984 51.6201 21.3701c8.66992 8.66992 4.0498 6.20996 25.1201 11.8496\nc9.50977 2.5498 17.8701 7.44043 25.4297 13.3203zM263 108c-13.2305 -13.4697 -33.8398 -15.8799 -49.7305 -5.82031c-5.37305 3.41211 -14.8994 6.18066 -21.2646 6.18066c-6.36426 0 -15.8916 -2.76855 -21.2646 -6.18066\nc-15.9004 -10.0596 -36.5098 -7.64941 -49.7402 5.82031c-14.7305 15 -16.4004 14.04 -38.7803 20.1396c-13.8896 3.79004 -24.75 14.8408 -28.4697 28.9805c-7.48047 28.3994 -5.54004 24.9697 -25.9502 45.75c-10.1699 10.3604 -14.1396 25.4502 -10.4199 39.5898\nc7.48047 28.4199 7.46973 24.46 0 52.8203c-3.72949 14.1396 0.25 29.2295 10.4199 39.5801c20.4102 20.7793 18.4805 17.3594 25.9502 45.75c3.71973 14.1396 14.5801 25.1895 28.4697 28.9795c27.8906 7.61035 24.5303 5.62988 44.9404 26.4102\nc10.1699 10.3604 25 14.4004 38.8896 10.6104c27.9199 -7.61035 24.0303 -7.60059 51.9004 0c13.8896 3.79004 28.7197 -0.260742 38.8896 -10.6104c20.4297 -20.79 17.0703 -18.7998 44.9502 -26.4102c13.8896 -3.79004 24.75 -14.8398 28.4697 -28.9795\nc7.48047 -28.3906 5.54004 -24.9707 25.9502 -45.75c10.1699 -10.3506 14.1396 -25.4404 10.4199 -39.5801c-7.47949 -28.4102 -7.46973 -24.4502 0 -52.8301c3.71973 -14.1406 -0.25 -29.2305 -10.4199 -39.5801c-20.4102 -20.7803 -18.4697 -17.3506 -25.9502 -45.75\nc-3.71973 -14.1396 -14.5801 -25.1904 -28.4697 -28.9805c-21.7598 -5.92969 -23.5098 -4.58984 -38.79 -20.1396zM97.6602 272.04c0 -53.0303 42.2402 -96.0205 94.3398 -96.0205s94.3398 42.9902 94.3398 96.0205s-42.2402 96.0195 -94.3398 96.0195\ns-94.3398 -42.9893 -94.3398 -96.0195z\" />\n    <glyph glyph-name=\"backspace\" unicode=\"&#xf55a;\" horiz-adv-x=\"640\" \nd=\"M576 384c35.3496 0 64 -28.6504 64 -64v-256c0 -35.3496 -28.6504 -64 -64 -64h-370.75c-16.9697 0 -33.25 6.75 -45.25 18.75l-150.63 150.63c-12.5 12.4902 -12.5 32.75 0 45.25l150.63 150.62c10.3438 10.3496 30.6143 18.75 45.2471 18.75h0.0126953h370.74z\nM491.31 129.94l-62.0596 62.0596l62.0596 62.0596c6.25 6.25 6.25 16.3809 0 22.6309l-22.6191 22.6191c-6.25 6.25 -16.3809 6.25 -22.6309 0l-62.0596 -62.0596l-62.0596 62.0596c-6.25 6.25 -16.3809 6.25 -22.6309 0l-22.6191 -22.6191\nc-6.25 -6.25 -6.25 -16.3809 0 -22.6309l62.0596 -62.0596l-62.0596 -62.0596c-6.25 -6.25 -6.25 -16.3809 0 -22.6309l22.6191 -22.6191c6.25 -6.25 16.3809 -6.25 22.6309 0l62.0596 62.0596l62.0596 -62.0596c6.25 -6.25 16.3809 -6.25 22.6309 0l22.6191 22.6191\nc6.25 6.25 6.25 16.3809 0 22.6309z\" />\n    <glyph glyph-name=\"bezier-curve\" unicode=\"&#xf55b;\" horiz-adv-x=\"640\" \nd=\"M368 416c17.6699 0 32 -14.3301 32 -32v-96c0 -17.6699 -14.3301 -32 -32 -32h-96c-17.6699 0 -32 14.3301 -32 32v96c0 17.6699 14.3301 32 32 32h96zM208 360v-72c0 -9.4502 2.17969 -18.3604 5.87988 -26.4404c-34.2695 -24.3496 -59.7402 -59.9492 -71.04 -101.56\nh-49.3994c13.6797 64.6797 54.1699 119.48 109.54 152h-79.7305c-9.5 -23.4404 -32.4102 -40 -59.25 -40c-35.3398 0 -64 28.6504 -64 64s28.6602 64 64 64c26.8398 0 49.75 -16.5596 59.25 -40h84.75zM160 128c17.6699 0 32 -14.3301 32 -32v-96\nc0 -17.6699 -14.3301 -32 -32 -32h-96c-17.6699 0 -32 14.3301 -32 32v96c0 17.6699 14.3301 32 32 32h96zM576 400c35.3398 0 64 -28.6504 64 -64s-28.6602 -64 -64 -64c-26.8398 0 -49.75 16.5596 -59.25 40h-79.7305c55.3701 -32.5195 95.8604 -87.3203 109.54 -152\nh-49.3994c-11.2998 41.6104 -36.7705 77.21 -71.04 101.56c3.68945 8.08008 5.87988 16.9902 5.87988 26.4404v72h84.75c9.5 23.4404 32.4102 40 59.25 40zM576 128c17.6699 0 32 -14.3301 32 -32v-96c0 -17.6699 -14.3301 -32 -32 -32h-96c-17.6699 0 -32 14.3301 -32 32\nv96c0 17.6699 14.3301 32 32 32h96z\" />\n    <glyph glyph-name=\"bong\" unicode=\"&#xf55c;\" horiz-adv-x=\"448\" \nd=\"M302.5 -64h-221c-23.1699 0 -44.4199 12.5801 -56 32.6602c-16.1904 28.0703 -25.5 60.5898 -25.5 95.3398c0 71.0303 38.6699 132.9 96 166.11v153.93l-15.9697 -0.0205078c-8.85059 -0.00976562 -16.0303 7.16016 -16.0205 16.0107l0.0400391 31.7295\nc0.00976562 8.82031 7.16016 15.9707 15.9805 15.9805l223.939 0.259766c8.85059 0.00976562 16.0303 -7.16992 16.0205 -16.0195l-0.0400391 -31.7207c-0.00976562 -8.81934 -7.16016 -15.9697 -15.9805 -15.9795l-15.9697 -0.0205078v-154.16\nc14.1201 -8.17969 27.0898 -18.1396 38.6504 -29.5098l39.4092 39.4102l-9.37988 9.37988c-6.25 6.25 -6.25 16.3799 0 22.6299l11.3105 11.3105c6.25 6.25 16.3799 6.25 22.6299 0l52.6895 -52.6904c6.25 -6.25 6.25 -16.3799 0 -22.6299l-11.2998 -11.3203\nc-6.25 -6.25 -16.3799 -6.25 -22.6299 0l-9.37988 9.37988l-43.4404 -43.4395c17.3604 -28.8105 27.4404 -62.5 27.4404 -98.6201c0 -34.75 -9.30957 -67.2598 -25.5 -95.3398c-11.5703 -20.0801 -32.8203 -32.6602 -56 -32.6602zM120.06 188.57\nc-24.8096 -14.3701 -44.1094 -35.7305 -56.5596 -60.5703h257c-12.4404 24.8398 -31.75 46.2002 -56.5596 60.5703l-23.9404 13.8701v181.76l-96 -0.110352v-181.649z\" />\n    <glyph glyph-name=\"brush\" unicode=\"&#xf55d;\" horiz-adv-x=\"384\" \nd=\"M352 448c17.6699 0 32 -14.3301 32 -32v-224h-384v224c0 17.6699 14.3301 32 32 32h320zM0 128v32h384v-32c0 -35.3496 -28.6602 -64 -64 -64h-64v-64c0 -35.3496 -28.6602 -64 -64 -64s-64 28.6504 -64 64v64h-64c-35.3398 0 -64 28.6504 -64 64zM192 24\nc-13.25 0 -24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24s24 10.75 24 24c0 13.2598 -10.75 24 -24 24z\" />\n    <glyph glyph-name=\"bus-alt\" unicode=\"&#xf55e;\" \nd=\"M488 320c13.25 0 24 -10.7402 24 -24v-80c0 -13.25 -10.75 -24 -24 -24h-8v-166.4c0 -12.7998 -9.59961 -25.5996 -25.5996 -25.5996h-6.40039v-32c0 -17.6699 -14.3301 -32 -32 -32h-32c-17.6699 0 -32 14.3301 -32 32v32h-192v-32c0 -17.6699 -14.3301 -32 -32 -32h-32\nc-17.6699 0 -32 14.3301 -32 32v32c-17.6699 0 -32 14.3301 -32 32v160h-8c-13.25 0 -24 10.75 -24 24v80c0 13.2598 10.75 24 24 24h8v48c0 44.7998 99.2002 80 224 80s224 -35.2002 224 -80v-48h8zM160 376v-16c0 -4.41992 3.58008 -8 8 -8h176c4.41992 0 8 3.58008 8 8\nv16c0 4.41992 -3.58008 8 -8 8h-176c-4.41992 0 -8 -3.58008 -8 -8zM112 48c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM240 160v160h-112c-17.6699 0 -32 -14.3301 -32 -32v-96c0 -17.6699 14.3301 -32 32 -32h112zM272 160\nh112c17.6699 0 32 14.3301 32 32v96c0 17.6699 -14.3301 32 -32 32h-112v-160zM400 48c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z\" />\n    <glyph glyph-name=\"cannabis\" unicode=\"&#xf55f;\" \nd=\"M503.47 87.75c5.24023 -2.75977 8.52051 -8.20996 8.53027 -14.1504c0.00976562 -5.92969 -3.26953 -11.3691 -8.50977 -14.1494c-2.4502 -1.29004 -60.7705 -31.7197 -133.49 -31.7197c-6.12988 0 -11.96 0.0996094 -17.5 0.30957\nc11.3604 -22.2305 16.5195 -38.3096 16.8096 -39.2197c1.80078 -5.68066 0.290039 -11.8906 -3.90918 -16.1104c-2.5918 -2.60059 -7.67578 -4.71094 -11.3467 -4.71094c-1.34277 0 -3.47168 0.322266 -4.75391 0.720703c-1.83008 0.580078 -37.7197 11.9902 -77.2998 39.29\nv-64.0098c0 -4.41992 -3.58008 -8 -8 -8h-16c-4.41992 0 -8 3.58008 -8 8v64.0195c-39.5801 -27.2998 -75.4697 -38.7197 -77.2998 -39.2891c-1.28223 -0.398438 -3.41113 -0.72168 -4.75391 -0.72168c-3.6709 0 -8.75488 2.11035 -11.3467 4.71094\nc-4.19922 4.2207 -5.70996 10.4307 -3.90918 16.1104c0.290039 0.910156 5.43945 16.9902 16.8096 39.2197c-5.54004 -0.209961 -11.3604 -0.30957 -17.5 -0.30957c-72.7305 0 -131.04 30.4297 -133.49 31.7197c-4.69629 2.48926 -8.50879 8.82422 -8.50879 14.1396\nc0 5.32422 3.82129 11.6641 8.5293 14.1504c1.56934 0.820312 32.3896 16.8896 76.7793 25.8096c-64.25 75.1201 -84.0498 161.671 -84.9297 165.641c-0.210938 0.947266 -0.382812 2.50488 -0.382812 3.47559c0 3.65039 2.09375 8.71094 4.67285 11.2939\nc3.03027 3.04004 7.12012 4.7002 11.3203 4.7002c1.14941 0 2.2998 -0.129883 3.43945 -0.379883c3.89062 -0.860352 86.5508 -19.5996 160.58 -79.7598c0 1.45996 -0.00976562 2.92969 -0.00976562 4.39941c0 118.79 59.9805 213.721 62.5303 217.7\nc2.93945 4.58984 8.01953 7.37012 13.4697 7.37012h0.00195312c4.82812 0 10.8574 -3.30176 13.458 -7.37012c2.5498 -3.97949 62.5303 -98.9102 62.5303 -217.7c0 -1.46973 0 -2.93945 -0.00976562 -4.39941c74.0391 60.1699 156.699 78.9102 160.579 79.7598\nc1.15039 0.259766 2.30078 0.379883 3.44043 0.379883c4.2002 0 8.29004 -1.66016 11.3203 -4.7002c3.85938 -3.87012 5.47949 -9.43945 4.2998 -14.7695c-0.879883 -3.96973 -20.6797 -90.5205 -84.9297 -165.641c44.3896 -8.91992 75.2197 -24.9893 76.7793 -25.8096z\" />\n    <glyph glyph-name=\"check-double\" unicode=\"&#xf560;\" \nd=\"M505 273.2c9.2998 -9.2998 9.2998 -24.5 -0.0996094 -34l-296 -296.2c-9.30078 -9.40039 -24.5 -9.40039 -33.9004 0l-168 168.1c-9.40039 9.40039 -9.40039 24.6006 0 34l39.7002 39.7002c9.2998 9.40039 24.5 9.40039 33.8994 0l111.4 -111.5l239.5 239.5\nc9.2998 9.40039 24.5 9.40039 33.9004 0zM180.7 167.2l-112 112.2c-6.2002 6.19922 -6.2002 16.2998 0 22.5996l45.2998 45.2998c6.2002 6.2998 16.4004 6.2998 22.5996 0l55.4004 -55.5l151.5 151.5c6.2002 6.2998 16.4004 6.2998 22.5996 0l45.2002 -45.2998\nc6.2002 -6.2002 6.2002 -16.2998 0 -22.5996l-208 -208.2c-6.2002 -6.2998 -16.3994 -6.2998 -22.5996 0z\" />\n    <glyph glyph-name=\"cocktail\" unicode=\"&#xf561;\" horiz-adv-x=\"576\" \nd=\"M296 -16c22.0898 0 40 -17.9102 40 -40c0 -4.41992 -3.58008 -8 -8 -8h-240c-4.41992 0 -8 3.58008 -8 8c0 22.0898 17.9102 40 40 40h56v125.22l-168.74 168.73c-15.5195 15.5195 -4.5293 42.0498 17.4199 42.0498h366.641c21.9492 0 32.9395 -26.5303 17.4199 -42.0498\nl-168.74 -168.73v-125.22h56zM432 448c79.5303 0 144 -64.4697 144 -144s-64.4697 -144 -144 -144c-27.4102 0 -52.7695 8.08008 -74.5801 21.3799l35.2598 35.2598c12.0303 -5.43945 25.2803 -8.63965 39.3203 -8.63965c52.9297 0 96 43.0596 96 96s-43.0703 96 -96 96\nc-35.3701 0 -65.9902 -19.4502 -82.6396 -48h-52.54c19.8301 55.7998 72.5693 96 135.18 96z\" />\n    <glyph glyph-name=\"concierge-bell\" unicode=\"&#xf562;\" \nd=\"M288 317.46c108.51 -15.5703 192 -108.64 192 -221.46h-448c0 112.82 83.4902 205.89 192 221.46v18.54h-16c-8.83984 0 -16 7.16016 -16 16v16c0 8.83984 7.16016 16 16 16h96c8.83984 0 16 -7.16016 16 -16v-16c0 -8.83984 -7.16016 -16 -16 -16h-16v-18.54zM496 64\nc8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-480c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h480z\" />\n    <glyph glyph-name=\"cookie\" unicode=\"&#xf563;\" \nd=\"M510.37 193.21c4.37988 -27.6602 -0.110352 -56 -12.8203 -80.96l-35.0996 -68.8701c-10.7695 -21.1328 -36.6592 -47.0273 -57.79 -57.7998l-69.1201 -35.21c-24.8301 -12.6396 -53.0098 -17.1104 -80.5205 -12.75l-76.6992 12.1396\nc-23.3896 3.70801 -55.9639 20.3066 -72.71 37.0498l-54.7607 54.75c-16.7959 16.8027 -33.4443 49.4844 -37.1592 72.9502l-12.0801 76.2705c-0.901367 5.68848 -1.63281 14.9805 -1.63281 20.7412c0 17.5723 6.47461 44.541 14.4521 60.1982l35.1006 68.8799\nc10.7666 21.1357 36.6562 47.0303 57.79 57.8008l69.1201 35.21c24.8291 12.6494 53.0098 17.1201 80.5195 12.7598l76.7002 -12.1504c27.5303 -4.34961 52.9795 -17.3301 72.71 -37.0498l54.7598 -54.75c16.7969 -16.8027 33.4443 -49.4844 37.1602 -72.9502zM176 80\nc17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM208 240c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM368 112c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32\ns-32 -14.3301 -32 -32s14.3301 -32 32 -32z\" />\n    <glyph glyph-name=\"cookie-bite\" unicode=\"&#xf564;\" \nd=\"M510.52 192.18c4.10059 -27.3301 -0.349609 -55.2695 -12.9092 -79.9102l-35.1006 -68.8799c-10.7656 -21.1367 -36.6562 -47.0361 -57.79 -57.8096l-69.1299 -35.21c-24.8301 -12.6504 -53.0195 -17.1201 -80.5303 -12.7598l-76.71 12.1494\nc-23.3916 3.70801 -55.9658 20.3105 -72.71 37.0605l-54.7695 54.7598c-16.7969 16.8057 -33.4443 49.4912 -37.1602 72.96l-12.0801 76.2695c-0.900391 5.68945 -1.63184 14.9824 -1.63184 20.7422c0 17.5752 6.47461 44.5479 14.4521 60.208l35.0996 68.8799\nc10.7646 21.1396 36.6543 47.0391 57.79 57.8105l69.1299 35.2197c24.5898 12.5205 52.46 16.96 79.7207 12.8203c0.859375 -69.96 57.6895 -126.45 127.859 -126.45c0 -70.1699 56.5 -127.01 126.47 -127.86zM176 80c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32\ns-32 -14.3301 -32 -32s14.3301 -32 32 -32zM208 240c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM368 112c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z\" />\n    <glyph glyph-name=\"crop-alt\" unicode=\"&#xf565;\" \nd=\"M488 96c13.25 0 24 -10.7402 24 -24v-48c0 -13.25 -10.75 -24 -24 -24h-40v-40c0 -13.25 -10.75 -24 -24 -24h-48c-13.25 0 -24 10.75 -24 24v328h-160v96h224c17.6699 0 32 -14.3301 32 -32v-256h40zM160 424v-328h160v-96h-224c-17.6699 0 -32 14.3301 -32 32v256h-40\nc-13.25 0 -24 10.75 -24 24v48c0 13.2598 10.75 24 24 24h40v40c0 13.2598 10.75 24 24 24h48c13.25 0 24 -10.7402 24 -24z\" />\n    <glyph glyph-name=\"digital-tachograph\" unicode=\"&#xf566;\" horiz-adv-x=\"640\" \nd=\"M608 352c17.6699 0 32 -14.3301 32 -32v-256c0 -17.6699 -14.3301 -32 -32 -32h-576c-17.6699 0 -32 14.3301 -32 32v256c0 17.6699 14.3301 32 32 32h576zM304 96v8c0 4.41992 -3.58008 8 -8 8h-224c-4.41992 0 -8 -3.58008 -8 -8v-8c0 -4.41992 3.58008 -8 8 -8h224\nc4.41992 0 8 3.58008 8 8zM72 160c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-16c-4.41992 0 -8 -3.58008 -8 -8v-16zM136 160c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-16\nc-4.41992 0 -8 -3.58008 -8 -8v-16zM200 160c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-16c-4.41992 0 -8 -3.58008 -8 -8v-16zM264 160c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8\nh-16c-4.41992 0 -8 -3.58008 -8 -8v-16zM304 224v48c0 8.83984 -7.16016 16 -16 16h-208c-8.83984 0 -16 -7.16016 -16 -16v-48c0 -8.83984 7.16016 -16 16 -16h208c8.83984 0 16 7.16016 16 16zM576 96v8c0 4.41992 -3.58008 8 -8 8h-224c-4.41992 0 -8 -3.58008 -8 -8v-8\nc0 -4.41992 3.58008 -8 8 -8h224c4.41992 0 8 3.58008 8 8z\" />\n    <glyph glyph-name=\"dizzy\" unicode=\"&#xf567;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM152 233.4l28.7002 -28.7002c14.7002 -14.7998 37.7998 7.39941 22.5996 22.5996l-28.7002 28.7002l28.7002 28.7002c15 14.8994 -7.59961 37.5996 -22.5996 22.5996\nl-28.7002 -28.7002l-28.7002 28.7002c-14.8994 15 -37.5996 -7.59961 -22.5996 -22.5996l28.7002 -28.7002l-28.7002 -28.7002c-15.2002 -15.0996 7.7998 -37.3994 22.5996 -22.5996zM248 32c35.2998 0 64 28.7002 64 64s-28.7002 64 -64 64s-64 -28.7002 -64 -64\ns28.7002 -64 64 -64zM395.3 227.3l-28.7002 28.7002l28.7002 28.7002c15 14.8994 -7.59961 37.5996 -22.5996 22.5996l-28.7002 -28.7002l-28.7002 28.7002c-14.8994 15 -37.5996 -7.59961 -22.5996 -22.5996l28.7002 -28.7002l-28.7002 -28.7002\nc-15.2002 -15.0996 7.7998 -37.3994 22.5996 -22.5996l28.7002 28.7002l28.7002 -28.7002c14.7002 -14.7998 37.7998 7.39941 22.5996 22.5996z\" />\n    <glyph glyph-name=\"drafting-compass\" unicode=\"&#xf568;\" \nd=\"M457.01 103.58l54.9805 -95.2305l-7.02051 -58.25c-1.2793 -10.5898 -12.3594 -16.9893 -22.1699 -12.7998l-53.9502 23.04l-54.3799 94.1904c29.9102 11.8701 57.4902 28.7197 82.54 49.0498zM499.5 198.14c-52.6201 -83.1299 -144.45 -134.14 -243.5 -134.14\nc-35.3799 0 -69.8701 6.71973 -102.06 18.96l-70.8008 -122.63l-53.9492 -23.04c-9.81055 -4.19043 -20.8906 2.20996 -22.1709 12.7998l-7.01953 58.25l71.2803 123.46c-21.29 17.8105 -40.4102 38.3799 -55.9805 62.0205\nc-4.99023 7.56934 -2.20996 17.9297 5.64062 22.4697l27.75 16.0703c7.40918 4.29004 16.5898 1.76953 21.3799 -5.33008c9.71973 -14.4102 21.1299 -27.3906 33.6797 -39l68.2998 118.31c-7.43945 13.6299 -12.0498 29.0303 -12.0498 45.6602c0 53.0195 42.9805 96 96 96\ns96 -42.9805 96 -96c0 -16.6299 -4.61035 -32.0303 -12.0596 -45.6602l51.79 -89.71c-23.0508 -23.1699 -51.3809 -39.96 -82.6104 -48.9199l-51.0898 88.5c-0.69043 -0.0195312 -1.33984 -0.209961 -2.04004 -0.209961s-1.33984 0.19043 -2.04004 0.209961\nl-67.3604 -116.68c22.1797 -7.28027 45.4805 -11.5303 69.4102 -11.5303c76.25 0 147.01 38.8496 188.12 102.38c4.64941 7.17969 13.7803 9.87012 21.2598 5.71973l28.0703 -15.5693c7.93945 -4.40039 10.9102 -14.7207 6.0498 -22.3906zM256 384\nc-17.6699 0 -32 -14.3301 -32 -32s14.3301 -32 32 -32s32 14.3301 32 32s-14.3301 32 -32 32z\" />\n    <glyph glyph-name=\"drum\" unicode=\"&#xf569;\" horiz-adv-x=\"576\" \nd=\"M458.08 327.12c71.3799 -23.29 117.91 -60.75 117.92 -103.13v-160.83c0 -30.46 -24.0303 -58.4004 -64 -80.3701v96.3701c0 17.5996 -14.4004 32 -32 32s-32 -14.4004 -32 -32v-122.41c-37.4004 -11.1299 -81 -18.4404 -128 -20.75v111.16c0 17.5996 -14.4004 32 -32 32\ns-32 -14.4004 -32 -32v-111.15c-47 2.31055 -90.5996 9.62012 -128 20.75v122.41c0 17.5996 -14.4004 32 -32 32s-32 -14.4004 -32 -32v-96.3701c-39.9697 21.9697 -64 49.9102 -64 80.3701v160.83c0 70.6904 128.94 128 288 128\nc21.8467 -0.00585938 57.167 -2.2373 78.8398 -4.98047l160.69 96.4102c15.1699 9.10059 34.8096 4.18066 43.9102 -10.9697c9.08984 -15.1602 4.18945 -34.8203 -10.9707 -43.9102zM288 144c132.54 0 240 35.8096 240 79.9902c0 30.2695 -50.4502 56.5996 -124.82 70.1895\nl-162.71 -97.6201c-14.3994 -8.63965 -34.3496 -4.95996 -43.9102 10.9707c-9.08984 15.1602 -4.18945 34.8193 10.9707 43.9102l87.4102 52.4395c-2.32031 0.0205078 -4.60059 0.120117 -6.94043 0.120117c-132.55 0 -240 -35.8203 -240 -80s107.45 -80 240 -80z\" />\n    <glyph glyph-name=\"drum-steelpan\" unicode=\"&#xf56a;\" horiz-adv-x=\"576\" \nd=\"M288 416c159.06 0 288 -57.3096 288 -128v-192c0 -70.6904 -128.94 -128 -288 -128s-288 57.3096 -288 128v192c0 70.6904 128.94 128 288 128zM205.01 257.64c5.11035 19.0605 2.49023 38.96 -7.37012 56.0508l-25.5996 44.3398\nc-73.9297 -13.6406 -124.04 -39.8701 -124.04 -70.0303c0 -30.7803 52.2305 -57.46 128.7 -70.8398c13.7695 9.91016 23.8594 23.8701 28.3096 40.4795zM288 208c21.0801 0 41.4102 1 60.8896 2.7002c-8.05957 26.1299 -32.1494 45.2998 -60.8896 45.2998\ns-52.8301 -19.1699 -60.8896 -45.2998c19.4795 -1.7002 39.8096 -2.7002 60.8896 -2.7002zM352 352v13.04c-20.4004 1.87988 -41.7998 2.95996 -64 2.95996s-43.5996 -1.08008 -64 -2.95996v-13.04c0 -35.29 28.71 -64 64 -64s64 28.71 64 64zM398.93 217.1\nc76.6699 13.3604 129.07 40.0703 129.07 70.9004c0 30.21 -50.2803 56.5 -124.44 70.0996l-25.6494 -44.4199c-9.87012 -17.0801 -12.4902 -36.9795 -7.37988 -56.04c4.45996 -16.6396 14.5898 -30.6299 28.3994 -40.54z\" />\n    <glyph glyph-name=\"feather-alt\" unicode=\"&#xf56b;\" \nd=\"M512 448c-1.80957 -26.2598 -11.71 -132.86 -53.6201 -234.79l-106.54 -53.21h81.1406c-9.08008 -16.4102 -19.2002 -32.2305 -30.4502 -47.1201l-146.79 -48.8799h100.95c-35.5605 -30.0703 -79.1006 -51.0996 -132.58 -56.54\nc-41.8105 -4.83008 -83.8701 -7.21973 -125.96 -7.36035l-57.1309 -57.0693c-9.38965 -9.37012 -24.5996 -9.37012 -33.9795 0s-9.37988 24.5693 0 33.9395l259.5 259.24c6.25 6.25 6.25 16.3799 0 22.6299s-16.4004 6.25 -22.6504 0l-178.87 -178.689\nc1.15039 26.7998 2.90039 53.5801 5.99023 80.2393c25.4307 249.41 389.21 284.051 440.99 287.61z\" />\n    <glyph glyph-name=\"file-contract\" unicode=\"&#xf56c;\" horiz-adv-x=\"384\" \nd=\"M224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136zM64 376v-16c0 -4.41992 3.58008 -8 8 -8h80c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8\nh-80c-4.41992 0 -8 -3.58008 -8 -8zM64 312v-16c0 -4.41992 3.58008 -8 8 -8h80c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-80c-4.41992 0 -8 -3.58008 -8 -8zM256.81 64c-4.19922 0 -8.13965 2.44043 -10.1592 6.5\nc-11.9502 23.8604 -46.2305 30.3496 -66 14.1602l-13.8809 41.6396c-3.28906 9.82031 -12.4297 16.4102 -22.7695 16.4102s-19.4805 -6.59961 -22.7803 -16.4102l-18.1895 -54.6396c-1.53027 -4.58008 -5.81055 -7.66016 -10.6406 -7.66016h-12.3896\nc-8.83984 0 -16 -7.16016 -16 -16s7.16016 -16 16 -16h12.3896c18.6201 0 35.1104 11.8701 41 29.5303l10.6104 31.8799l16.8301 -50.46c2.03027 -6.14062 7.58008 -10.4404 14.0303 -10.8906c0.389648 -0.0292969 0.759766 -0.0498047 1.13965 -0.0498047h0.00976562\nc5.45508 0 11.8613 3.96094 14.2998 8.83984l7.6709 15.3408c2.7998 5.59961 7.93945 6.18945 10.0195 6.18945s7.21973 -0.599609 10.1699 -6.51953c7.37012 -14.7207 22.1904 -23.8604 38.6396 -23.8604h47.1904c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16h-47.1904z\nM377 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7z\" />\n    <glyph glyph-name=\"file-download\" unicode=\"&#xf56d;\" horiz-adv-x=\"384\" \nd=\"M224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136zM300.45 100.64c10.1299 10.0703 3.00977 27.3604 -11.2705 27.3604h-65.1797v80\nc0 8.83984 -7.16016 16 -16 16h-32c-8.83984 0 -16 -7.16016 -16 -16v-80h-65.1797c-14.2803 0 -21.4004 -17.29 -11.25 -27.3604l96.4199 -95.6992c6.64941 -6.61035 17.3896 -6.61035 24.04 0zM377 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128v128h6.09961\nc6.40039 0 12.5 -2.5 17 -7z\" />\n    <glyph glyph-name=\"file-export\" unicode=\"&#xf56e;\" horiz-adv-x=\"576\" \nd=\"M384 326.1v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7l97.9004 -98c4.5 -4.5 7 -10.5996 7 -16.9004zM571 140c6.59961 -6.59961 6.59961 -17.4004 0 -24l-95.7002 -96.5c-10.0996 -10.0996 -27.3994 -3 -27.3994 11.2998v65.2002h-64v64h64v65.0996\nc0 14.3008 17.2998 21.4004 27.3994 11.3008zM192 112c0 -8.7998 7.2002 -16 16 -16h176v-136c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136c0 -13.2002 10.7998 -24 24 -24h136v-128h-176\nc-8.7998 0 -16 -7.2002 -16 -16v-32z\" />\n    <glyph glyph-name=\"file-import\" unicode=\"&#xf56f;\" \nd=\"M16 160h112v-64h-112c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16zM505 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7zM352 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24\nh-336c-13.2998 0 -24 10.7002 -24 24v136h127.9v-65.0996c0 -14.3008 17.2998 -21.4004 27.3994 -11.3008l95.7002 96.4004c6.59961 6.59961 6.59961 17.2998 0 24l-95.5996 96.5c-10.1006 10.0996 -27.4004 3 -27.4004 -11.2998v-65.2002h-128v264\nc0 13.2998 10.7002 24 24 24h200v-136z\" />\n    <glyph glyph-name=\"file-invoice\" unicode=\"&#xf570;\" horiz-adv-x=\"384\" \nd=\"M288 192v-64h-192v64h192zM377 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7zM224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464\nc0 13.2998 10.7002 24 24 24h200v-136zM64 376v-16c0 -4.41992 3.58008 -8 8 -8h80c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-80c-4.41992 0 -8 -3.58008 -8 -8zM64 312v-16c0 -4.41992 3.58008 -8 8 -8h80c4.41992 0 8 3.58008 8 8v16\nc0 4.41992 -3.58008 8 -8 8h-80c-4.41992 0 -8 -3.58008 -8 -8zM320 8v16c0 4.41992 -3.58008 8 -8 8h-80c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h80c4.41992 0 8 3.58008 8 8zM320 208c0 8.83984 -7.16016 16 -16 16h-224\nc-8.83984 0 -16 -7.16016 -16 -16v-96c0 -8.83984 7.16016 -16 16 -16h224c8.83984 0 16 7.16016 16 16v96z\" />\n    <glyph glyph-name=\"file-invoice-dollar\" unicode=\"&#xf571;\" horiz-adv-x=\"384\" \nd=\"M377 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7zM224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136z\nM64 376v-16c0 -4.41992 3.58008 -8 8 -8h80c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-80c-4.41992 0 -8 -3.58008 -8 -8zM64 296c0 -4.41992 3.58008 -8 8 -8h80c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-80c-4.41992 0 -8 -3.58008 -8 -8\nv-16zM208 32.1201c23.6201 0.629883 42.6699 20.54 42.6699 45.0703c0 19.9697 -12.9902 37.8096 -31.5801 43.3896l-45 13.5c-5.16016 1.54004 -8.76953 6.78027 -8.76953 12.7295c0 7.27051 5.2998 13.1904 11.7998 13.1904h28.1104\nc4.55957 0 8.94922 -1.29004 12.8193 -3.71973c3.24023 -2.03027 7.36035 -1.91016 10.1299 0.729492l11.75 11.21c3.53027 3.37012 3.33008 9.20996 -0.569336 12.1406c-9.10059 6.83984 -20.0801 10.7695 -31.3701 11.3496v24.29c0 4.41992 -3.58008 8 -8 8h-16\nc-4.41992 0 -8 -3.58008 -8 -8v-24.1201c-23.6201 -0.629883 -42.6699 -20.5498 -42.6699 -45.0703c0 -19.9697 12.9893 -37.8096 31.5801 -43.3896l45 -13.5c5.15918 -1.54004 8.76953 -6.78027 8.76953 -12.7295c0 -7.27051 -5.2998 -13.1904 -11.7998 -13.1904h-28.1104\nc-4.55957 0 -8.9502 1.2998 -12.8193 3.71973c-3.24023 2.03027 -7.36035 1.91016 -10.1309 -0.729492l-11.75 -11.21c-3.5293 -3.37012 -3.3291 -9.20996 0.570312 -12.1406c9.10059 -6.83008 20.0801 -10.7695 31.3701 -11.3496v-24.29c0 -4.41992 3.58008 -8 8 -8h16\nc4.41992 0 8 3.58008 8 8v24.1201z\" />\n    <glyph glyph-name=\"file-prescription\" unicode=\"&#xf572;\" horiz-adv-x=\"384\" \nd=\"M224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136zM292.53 132.52c-6.25 6.25 -16.3799 6.25 -22.6299 0l-29.9004 -29.8994l-33.46 33.46\nc19.8398 10.8701 33.46 31.7002 33.46 55.9199c0 35.3496 -28.6504 64 -64 64h-80c-8.83984 0 -16 -7.16016 -16 -16v-160c0 -8.83984 7.16016 -16 16 -16h16c8.83984 0 16 7.16016 16 16v48h18.7402l59.3193 -59.3096l-30.0596 -30.0605\nc-6.25 -6.25 -6.25 -16.3799 0 -22.6299l11.3096 -11.3096c6.25 -6.25 16.3809 -6.25 22.6309 0l30.0596 30.0596l30.0596 -30.0703c6.25 -6.25 16.3809 -6.25 22.6309 0l11.3096 11.3105c6.25 6.25 6.25 16.3799 0 22.6299l-30.0596 30.0596l29.8994 29.9004\nc6.25 6.25 6.25 16.3799 0 22.6299zM176 176h-48v32h48c8.82031 0 16 -7.17969 16 -16s-7.17969 -16 -16 -16zM384 326.1v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7l97.9004 -98c4.5 -4.5 7 -10.5996 7 -16.9004z\" />\n    <glyph glyph-name=\"file-signature\" unicode=\"&#xf573;\" horiz-adv-x=\"576\" \nd=\"M218.17 23.8604c7.25 -14.4707 21.71 -23.4404 37.8301 -23.75l128 -0.110352v-40c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136c0 -13.2002 10.7998 -24 24 -24h136.01v-46.5498l-128 -127.09\nv-82.1201c-3.87012 0.30957 -7.46973 2.47949 -9.35938 6.25977c-11.9404 23.8604 -46.25 30.3496 -66 14.1602l-13.8809 41.6396c-3.28906 9.82031 -12.4297 16.4102 -22.7695 16.4102s-19.4805 -6.59961 -22.7803 -16.4102l-18.1895 -54.6396\nc-1.53027 -4.58008 -5.81055 -7.66016 -10.6406 -7.66016h-12.3896c-8.83984 0 -16 -7.16016 -16 -16s7.16016 -16 16 -16h12.3896c18.6201 0 35.1104 11.8701 41 29.5303l10.6104 31.8799l16.8301 -50.4697c4.4502 -13.46 23.1104 -14.8701 29.4795 -2.09082\nl7.6709 15.3408c2.7998 5.59961 7.93945 6.18945 10.0195 6.18945s7.21973 -0.599609 10.1699 -6.51953zM384 326.1v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7l97.9004 -98c4.5 -4.5 7 -10.5996 7 -16.9004zM288 101.04l162.79 161.62l67.8799 -67.8799\nl-161.68 -162.78h-68.9902v69.04zM568.54 280.67c9.9502 -9.93945 9.9502 -26.0703 0 -36.0098l-27.25 -27.25l-67.8799 67.8799l27.25 27.25c9.93945 9.94043 26.0703 9.94043 36.0098 0z\" />\n    <glyph glyph-name=\"file-upload\" unicode=\"&#xf574;\" horiz-adv-x=\"384\" \nd=\"M224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136zM289.18 95.9902c14.2803 0 21.4004 17.29 11.25 27.3594l-96.4199 95.7002\nc-6.64941 6.61035 -17.3896 6.61035 -24.04 0l-96.4199 -95.7002c-10.1396 -10.0693 -3.00977 -27.3594 11.2705 -27.3594h65.1797v-80c0 -8.83984 7.16016 -16 16 -16h32c8.83984 0 16 7.16016 16 16v80h65.1797zM377 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128\nv128h6.09961c6.40039 0 12.5 -2.5 17 -7z\" />\n    <glyph glyph-name=\"fill\" unicode=\"&#xf575;\" \nd=\"M502.63 230.94c12.4902 -12.5 12.4902 -32.7607 0 -45.2607l-221.57 -221.569c-18.75 -18.75 -43.3096 -28.1201 -67.8799 -28.1201c-24.5596 0 -49.1201 9.37988 -67.8701 28.1201l-117.189 117.189c-37.4902 37.4902 -37.4902 98.2598 0 135.75l94.7598 94.7598\nl-86.1895 86.1807c-6.24023 6.25 -6.24023 16.3799 0 22.6299l22.6191 22.6104c6.24023 6.25 16.3809 6.25 22.6201 0l86.1807 -86.1807l81.5801 81.5801c6.23926 6.25 14.4297 9.37012 22.6191 9.37012c8.19043 0 16.3809 -3.12012 22.6309 -9.37012zM386.41 159.97\nl48.3496 48.3398l-162.45 162.44l-58.9492 -58.9502l58.6094 -58.5996c12.4902 -12.4902 12.4902 -32.75 0 -45.2402c-12.4893 -12.4902 -32.75 -12.4902 -45.2393 0l-58.6104 58.5996l-81.6104 -81.6094l-13.1494 -13.1504\nc-3.86035 -3.84961 -6.07031 -7.99023 -7.43066 -11.8301h320.48z\" />\n    <glyph glyph-name=\"fill-drip\" unicode=\"&#xf576;\" horiz-adv-x=\"576\" \nd=\"M512 128c0 0 64 -92.6504 64 -128s-28.6602 -64 -64 -64s-64 28.6504 -64 64s64 128 64 128zM502.63 230.94c12.4902 -12.5 12.4902 -32.75 -0.00976562 -45.25l-221.57 -221.57c-18.7402 -18.75 -43.2998 -28.1201 -67.8701 -28.1201\nc-24.5596 0 -49.1299 9.37988 -67.8701 28.1201l-117.189 117.189c-37.4902 37.4902 -37.4902 98.2705 0 135.75l94.7598 94.7607l-86.1895 86.1797c-6.24023 6.24023 -6.24023 16.3701 0 22.6201l22.6191 22.6201c6.24023 6.25 16.3701 6.25 22.6201 0l86.1807 -86.1904\nl81.5801 81.5801c6.23926 6.25 14.4297 9.37012 22.6191 9.37012c8.19043 0 16.3809 -3.12012 22.6309 -9.37012zM386.41 159.97l48.3398 48.3398l-162.44 162.44l-58.9492 -58.9502l58.5996 -58.5996c12.4902 -12.4902 12.4902 -32.75 0 -45.2402\ns-32.75 -12.4902 -45.2402 0l-58.5996 58.5996l-81.6104 -81.6094l-13.1494 -13.1504c-3.86035 -3.84961 -6.07031 -7.99023 -7.43066 -11.8301h320.48z\" />\n    <glyph glyph-name=\"fingerprint\" unicode=\"&#xf577;\" \nd=\"M256.12 202.04c13.2598 0 24 -10.75 23.9902 -24c1.55957 -99.1104 -15.9502 -176.61 -29.4805 -224.521c-2.97949 -10.5996 -12.6104 -17.5195 -23.0898 -17.5195c-20.9697 0 -25.8496 20.7695 -23.1201 30.4902c19.5605 69.6494 28.8398 139.3 27.7002 211.55\nc0 13.2598 10.75 24 24 24zM255.26 283.77c56.9707 -0.839844 104.03 -46.9199 104.91 -102.72c0.790039 -50.8994 -2.99023 -102.08 -11.2695 -152.109c-0.770508 -4.6709 -7.61035 -23.1006 -27.5801 -19.7705c-13.0703 2.16016 -21.9307 14.5205 -19.7607 27.5801\nc7.80078 47.2197 11.3809 95.5 10.6104 143.55c-0.469727 30.1299 -26.3096 55 -57.6201 55.4697c-34.5303 0.150391 -54.8594 -26.3896 -54.4502 -52.3398c0.800781 -51.4395 -4.0293 -102.93 -14.3691 -153.02c-2.69043 -12.9805 -15.3105 -21.3105 -28.3604 -18.6406\nc-12.9697 2.6709 -21.3301 15.3809 -18.6396 28.3604c9.61914 46.6396 14.1191 94.6104 13.3691 142.55c-0.849609 54.0205 41.9004 101.16 103.16 101.09zM144.57 303.55c10.2793 -8.37012 11.8398 -23.4795 3.48926 -33.7598\nc-18.7998 -23.0898 -28.4697 -51.0898 -28 -80.9697c0.640625 -40.6699 -2.66992 -81.4902 -9.85938 -121.33c-0.820312 -4.5498 -7.78027 -22.8604 -27.8906 -19.3604c-13.0498 2.36035 -21.6992 14.8398 -19.3594 27.8896c6.63965 36.7803 9.7002 74.4707 9.10938 112.051\nc-0.639648 40.7197 13.1309 80.5 38.75 112c8.39062 10.2793 23.46 11.8193 33.7607 3.47949zM254.04 365.88c101.09 -1.5 184.6 -83.0801 186.16 -181.83c0.0615234 -3.97852 0.111328 -10.4375 0.111328 -14.417c0 -29.1934 -2.68848 -76.4277 -6.00195 -105.433\nc-1.06934 -9.23047 -9.85938 -23.0605 -26.5791 -21.1104c-13.1602 1.5 -22.6104 13.4102 -21.1104 26.5801c4.2998 37.5205 6.16992 75.75 5.58008 113.63c-1.15039 73.0801 -63.4502 133.45 -138.88 134.58c-11.5303 0.0800781 -22.9502 -1.08008 -34 -3.68945\nc-12.8906 -3 -25.8301 4.93945 -28.8906 17.8291c-3.04004 12.9102 4.94043 25.8301 17.8301 28.8906c14.9102 3.53027 30.3701 5.37988 45.7803 4.96973zM506.11 244.43c6.22949 -28.2295 6.00977 -50.1602 5.83008 -72.3398\nc-0.110352 -13.1895 -10.8301 -23.7998 -24 -23.7998h-0.200195c-13.25 0.110352 -23.9102 10.9297 -23.7998 24.2002c0.209961 24.1895 0.00976562 40.1895 -4.7002 61.5996c-2.86035 12.9502 5.31934 25.75 18.2598 28.6104\nc13.0996 2.92969 25.75 -5.35059 28.6104 -18.2705zM465.99 335.15c7.62012 -10.8408 5 -25.8105 -5.83984 -33.4307c-10.8604 -7.58984 -25.8105 -5 -33.4199 5.86035c-39.8906 56.8301 -105.171 91.3604 -174.62 92.3896\nc-56.3408 0.810547 -108.92 -20.0596 -147.681 -58.8594c-37.1201 -37.1406 -57.1094 -86.5 -56.2793 -139l-0.160156 -23.6406c-0.379883 -13 -11.0498 -23.2998 -23.9707 -23.2998c-0.239258 0 -0.489258 0 -0.719727 0.0205078\nc-13.25 0.379883 -23.6699 11.4395 -23.2803 24.6895l0.120117 21.4697c-1.04004 65.6104 23.9502 127.28 70.3203 173.71c48.0098 48.0303 112.56 73.7607 182.35 72.9209c84.79 -1.27051 164.48 -43.4404 213.181 -112.83z\" />\n    <glyph glyph-name=\"fish\" unicode=\"&#xf578;\" horiz-adv-x=\"576\" \nd=\"M327.1 352c137.46 0 248.9 -128 248.9 -160s-111.44 -160 -248.9 -160c-89.9697 0 -168.55 54.7695 -212.279 101.62l-87.3301 -66.0498c-12.1299 -9.16992 -30.2402 0.599609 -27.1406 14.6602l24.1904 109.77l-24.1797 109.76\nc-3.10059 14.0605 15.0098 23.8398 27.1396 14.6602l87.3301 -66.0498c43.7295 46.8604 122.3 101.63 212.27 101.63zM414.53 168c13.25 0 24 10.75 24 24c0 13.2598 -10.7402 24 -24 24c-13.25 0 -24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24z\" />\n    <glyph glyph-name=\"flushed\" unicode=\"&#xf579;\" horiz-adv-x=\"496\" \nd=\"M344 248c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24s-24 10.7002 -24 24s10.7002 24 24 24zM152 248c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24s-24 10.7002 -24 24s10.7002 24 24 24zM248 440c137 0 248 -111 248 -248s-111 -248 -248 -248\ns-248 111 -248 248s111 248 248 248zM80 224c0 -39.7998 32.2002 -72 72 -72s72 32.2002 72 72s-32.2002 72 -72 72s-72 -32.2002 -72 -72zM312 48c21.2002 0 21.2002 32 0 32h-128c-21.2002 0 -21.2002 -32 0 -32h128zM344 152c39.7998 0 72 32.2002 72 72\ns-32.2002 72 -72 72s-72 -32.2002 -72 -72s32.2002 -72 72 -72z\" />\n    <glyph glyph-name=\"frown-open\" unicode=\"&#xf57a;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM136 240c0 -17.7002 14.2998 -32 32 -32s32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32zM323.3 56.7002c11.4004 -3.5 22.5 6.2002 20.5 18.0996\nc-7 39.9004 -60.0996 61.2002 -95.7998 61.2002s-88.7998 -21.2002 -95.7998 -61.2002c-2 -11.7998 9 -21.5996 20.5 -18.0996c31.2002 9.59961 59.3994 15.2998 75.2998 15.2998s44.0996 -5.7002 75.2998 -15.2998zM328 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32\ns-32 -14.2998 -32 -32s14.2998 -32 32 -32z\" />\n    <glyph glyph-name=\"glass-martini-alt\" unicode=\"&#xf57b;\" \nd=\"M502.05 390.4l-214.05 -214.04v-192.36h56c22.0898 0 40 -17.9102 40 -40c0 -4.41992 -3.58008 -8 -8 -8h-240c-4.41992 0 -8 3.58008 -8 8c0 22.0898 17.9102 40 40 40h56v192.36l-214.05 214.04c-21.25 21.2598 -6.2002 57.5996 23.8496 57.5996h444.4\nc30.0498 0 45.0996 -36.3398 23.8496 -57.5996zM443.77 400h-375.529l48 -48h279.529z\" />\n    <glyph glyph-name=\"globe-africa\" unicode=\"&#xf57c;\" horiz-adv-x=\"496\" \nd=\"M248 440c136.97 0 248 -111.03 248 -248s-111.03 -248 -248 -248s-248 111.03 -248 248s111.03 248 248 248zM408 224.5c0 8.55957 6.94043 15.5 15.5 15.5h18.4297c-19.0693 76.9805 -82.6992 136.37 -161.92 149.21v-21.7002c0 -8.55957 -6.93945 -15.5 -15.5 -15.5\nh-24.21c-5.17969 0 -10.0195 -2.58984 -12.8896 -6.89941l-8.08008 -12.1104c-2.13965 -3.20996 -5.40039 -5.5 -9.13965 -6.44043l-14.4502 -3.60938c-6.90039 -1.73047 -11.7402 -7.93066 -11.7402 -15.04v-4.40039c0 -8.55957 6.94043 -15.5 15.5 -15.5h90.0498\nh0.00292969c3.54297 0 8.45215 -2.0332 10.957 -4.54004l6.91992 -6.91992c2.91016 -2.91016 6.85059 -4.54004 10.96 -4.54004h10.0908c8.55957 0 15.5 -6.93945 15.5 -15.5c0 -6.66992 -4.27051 -12.5898 -10.6006 -14.7002l-47.3096 -15.7695\nc-3.90039 -1.2998 -8.15039 -1 -11.8301 0.839844l-14.7207 7.36035c-7.5791 3.7998 -15.9492 5.76953 -24.4297 5.76953h-0.889648c-10.0527 -0.00195312 -24.7383 -4.89941 -32.7803 -10.9297l-27.5801 -20.6904c-13.75 -10.3193 -21.8496 -26.5098 -21.8496 -43.6992\nv-14.0605c0.00195312 -12.4902 7.16992 -29.7959 16 -38.6299c10.25 -10.2402 24.1396 -16 38.6299 -16h25.8799c8.55957 0 15.5 -6.94043 15.5 -15.5v-29.8896v-0.00390625c0 -10.2822 3.73145 -26.0898 8.33008 -35.2861\nc4.7002 -9.40039 14.3096 -15.3398 24.8203 -15.3398c8.19824 0.000976562 18.542 5.53809 23.0898 12.3594l13.0293 19.5498c5.9248 8.88477 17.125 21.9482 25 29.1602c2.4707 2.27051 4.14062 5.27051 4.76074 8.56055l4.2998 22.8301\nc0.439453 2.3291 1.41016 4.5293 2.83008 6.42969l18.7402 24.9795c2.00977 2.68066 3.09961 5.9502 3.09961 9.30078v11.3398c0 8.55957 -6.94043 15.5 -15.5 15.5h-8.20996c-5.17969 0 -10.0205 2.58984 -12.8896 6.89941l-13.2402 19.8604\nc-5.66992 8.50977 -1.70996 20.0703 7.99023 23.2998l2.64941 0.879883c1.31641 0.4375 3.50977 0.792969 4.89746 0.792969c2.5918 0 6.44531 -1.16602 8.60254 -2.60254l18.21 -12.1396c2.15527 -1.43945 6.00781 -2.60742 8.59961 -2.60742\nc2.01953 0 5.125 0.733398 6.93066 1.63672l15.3896 7.7002c5.25 2.62012 8.57031 7.99023 8.57031 13.8604v6.92969z\" />\n    <glyph glyph-name=\"globe-americas\" unicode=\"&#xf57d;\" horiz-adv-x=\"496\" \nd=\"M248 440c136.97 0 248 -111.03 248 -248s-111.03 -248 -248 -248s-248 111.03 -248 248s111.03 248 248 248zM330.29 82.4004c7.56934 7.52832 13.7168 22.3037 13.7197 32.9795v0.00488281c0 6.97266 -4 16.6338 -8.92969 21.5654l-13.6904 13.6895\nc-6.00977 6 -14.1396 9.37012 -22.6299 9.37012h-66.75c-9.41016 4.70996 -21.4795 32 -32 32c-10.5195 0 -20.8994 2.4502 -30.3096 7.16016l-11.0801 5.54004c-4.0498 2.03027 -6.61035 6.16016 -6.61035 10.6904v0.00292969c0 4.75391 3.66016 9.83301 8.16992 11.3369\nl31.1699 10.3896c1.3584 0.452148 3.62305 0.818359 5.05469 0.818359c3.30078 0 8.00293 -1.75488 10.4961 -3.91797l9.2793 -8.06055c1.4502 -1.25977 3.31055 -1.95996 5.24023 -1.95996h5.63965c5.94043 0 9.81055 6.25977 7.15039 11.5801l-15.5898 31.1904\nc-0.464844 0.931641 -0.84082 2.53223 -0.84082 3.57227c0 1.86621 1.08398 4.43555 2.4209 5.7373l9.91992 9.65039c1.5 1.45996 3.5 2.26953 5.58008 2.26953h8.99023h0.00292969c1.82812 0 4.3623 1.04883 5.65625 2.33984l8 8\nc3.12012 3.12012 3.12012 8.19043 0 11.3105l-4.68945 4.68945c-3.12012 3.12012 -3.12012 8.19043 0 11.3105l10.3398 10.3398l4.69043 4.67969c6.25 6.25 6.25 16.3799 0 22.6299l-28.3008 28.3008c-8.26953 -0.310547 -16.3994 -1.12988 -24.3896 -2.41992v-11.3008\nc0 -11.8994 -12.5195 -19.6299 -23.1602 -14.3096l-24.0098 12.0098c-45.8398 -19.8496 -82.7305 -56.3896 -103.2 -101.89c9.92969 -14.7197 25.21 -37.3701 34.5898 -51.1406c4.29395 -6.3252 12.3848 -15.6172 18.0605 -20.7393l0.799805 -0.720703\nc9.5498 -8.60938 20.1699 -15.9697 31.6504 -21.75c14 -7.0498 34.4395 -18.1592 48.8096 -26.1094c10.1904 -5.62988 16.46 -16.3301 16.46 -27.9707v-32.0098c0 -8.49023 3.37012 -16.6299 9.37012 -22.6299c14.9902 -14.9902 24.3203 -38.6299 22.6299 -51.25v-27.3799\nc14.6504 0 28.8896 1.69043 42.6504 4.69043l17.3896 46.8496c2.04004 5.49023 3.25977 11.21 4.76953 16.8701c1.07031 4.00977 3.18066 7.70996 6.1709 10.71c3.31934 3.33008 7.40918 7.39941 11.3096 11.2803zM417 173.75l29.1797 -7.29004\nc1.08008 8.37988 1.82031 16.8701 1.82031 25.54c0 32.1299 -7.7998 62.4102 -21.3203 89.3301l-12.9795 -6.49023c-3.74023 -1.85938 -6.91992 -4.67969 -9.24023 -8.14941l-19.5898 -29.3809c-2.22754 -3.33594 -4.03516 -9.29883 -4.03516 -13.3096\ns1.80762 -9.97363 4.03516 -13.3096l17.9795 -26.9707c3.31055 -4.96973 8.36035 -8.51953 14.1504 -9.96973z\" />\n    <glyph glyph-name=\"globe-asia\" unicode=\"&#xf57e;\" horiz-adv-x=\"496\" \nd=\"M248 440c136.97 0 248 -111.03 248 -248s-111.03 -248 -248 -248s-248 111.03 -248 248s111.03 248 248 248zM236.66 199.77l17.3701 28.9502c1.7998 2.99023 6.2002 2.82031 7.75977 -0.299805c1.34961 -2.70996 4.12012 -4.41992 7.15039 -4.41992h3.05957\nc4.41992 0 8 3.58008 8 8v78.1201c0 6.05957 -3.41992 11.5996 -8.83984 14.3096l-10.8301 5.41016c-5.49023 2.75 -5.96973 10.4004 -0.860352 13.8105l50.1602 38.5293c-19.4297 6.31055 -40.1201 9.82031 -61.6299 9.82031c-110.28 0 -200 -89.7197 -200 -200\nc0 -10.9199 1.12012 -21.5498 2.80957 -31.9902h62.5703c4.24023 0 8.31055 1.69043 11.3105 4.69043l19.4697 19.46c3.85938 3.85938 10.3701 2.7998 12.8096 -2.08008l22.6201 -45.2305c2.70996 -5.42969 8.25 -8.84961 14.3105 -8.84961h6.10938\nc8.83984 0 16 7.16016 16 16v9.37012c0 4.24023 -1.68945 8.30957 -4.68945 11.3096l-5.66016 5.66016c-3.12012 3.12012 -3.12012 8.19043 0 11.3105l5.66016 5.65918c3 3 7.06934 4.69043 11.3096 4.69043h0.310547c5.61914 0 10.8291 2.9502 13.7197 7.76953z\nM408 89.5703l-0.00976562 24.5996c0 4.24023 -1.69043 8.31055 -4.69043 11.3105l-11.9102 11.9092c-1.5 1.5 -2.33984 3.54004 -2.33984 5.66016v12.9307c0 2.20996 -1.79004 4 -4 4h-6.05957c-1.78027 0 -3.33984 -1.1709 -3.83984 -2.88086l-4.2002 -14.4697\nc-0.490234 -1.7002 -2.06055 -2.87988 -3.83984 -2.87988h-3.80078c-1.4707 0.000976562 -3.12305 1.10254 -3.68945 2.45996l-5.35059 12.8496c-1.23926 2.99023 -4.15918 4.93066 -7.38965 4.93066h-12.0898h-0.0117188c-1.4082 0 -3.48145 -0.663086 -4.62793 -1.48047\nl-23.71 -16.8896c-1.73047 -1.23047 -3.61035 -2.25977 -5.59082 -3.0498l-39.3398 -15.7402c-3.04004 -1.21973 -5.0293 -4.16016 -5.0293 -7.42969v-10.2002v-0.00292969c0 -1.8291 1.04785 -4.36328 2.33984 -5.65723l11.9102 -11.9102\nc3 -3 7.06934 -4.68945 11.3096 -4.68945h10.3398c1.31055 0 2.61035 0.15918 3.87988 0.479492l21.2705 5.32031c1.76465 0.441406 4.67383 0.798828 6.49316 0.798828c6.12012 0 14.5986 -3.51172 18.9268 -7.83887l13.0098 -13.0098\nc3 -3 7.07031 -4.69043 11.3096 -4.69043h15.1602c4.24023 0 8.31055 1.69043 11.3105 4.69043l9.56934 9.56934c3 3 4.69043 7.07031 4.69043 11.3105z\" />\n    <glyph glyph-name=\"grimace\" unicode=\"&#xf57f;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM144 48v40h-40v-8c0 -17.7002 14.2998 -32 32 -32h8zM144 104v40h-8c-17.7002 0 -32 -14.2998 -32 -32v-8h40zM136 240c0 -17.7002 14.2998 -32 32 -32s32 14.2998 32 32\ns-14.2998 32 -32 32s-32 -14.2998 -32 -32zM208 48v40h-48v-40h48zM208 104v40h-48v-40h48zM272 48v40h-48v-40h48zM272 104v40h-48v-40h48zM336 48v40h-48v-40h48zM336 104v40h-48v-40h48zM328 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32\ns14.2998 -32 32 -32zM392 80v8h-40v-40h8c17.7002 0 32 14.2998 32 32zM392 104v8c0 17.7002 -14.2998 32 -32 32h-8v-40h40z\" />\n    <glyph glyph-name=\"grin\" unicode=\"&#xf580;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM328 272c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32s32 14.2998 32 32s-14.2998 32 -32 32zM168 272c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32\ns32 14.2998 32 32s-14.2998 32 -32 32zM248 16c60.5996 0 134.5 38.2998 143.8 93.2998c1.90039 11.7998 -9.39941 21.6006 -20.7002 17.9004c-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002s-92.9004 5.5 -123.1 15.2002\nc-11.4004 3.7002 -22.7002 -6.10059 -20.7002 -17.9004c9.2998 -55 83.2002 -93.2998 143.8 -93.2998z\" />\n    <glyph glyph-name=\"grin-alt\" unicode=\"&#xf581;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM311.7 311.3c-12.4004 -18.3994 -15.2002 -36.8994 -15.7002 -55.2998c0.599609 -18.4004 3.2998 -36.9004 15.7002 -55.2998c8 -11.7002 25.0996 -11.4004 32.7002 0\nc12.3994 18.3994 15.1992 36.8994 15.6992 55.2998c-0.599609 18.4004 -3.2998 36.9004 -15.6992 55.2998c-8 11.7002 -25.1006 11.4004 -32.7002 0zM151.7 311.3c-12.4004 -18.3994 -15.2002 -36.8994 -15.7002 -55.2998\nc0.599609 -18.4004 3.2998 -36.9004 15.7002 -55.2998c8 -11.7002 25.0996 -11.4004 32.7002 0c12.3994 18.3994 15.1992 36.8994 15.6992 55.2998c-0.599609 18.4004 -3.2998 36.9004 -15.6992 55.2998c-8 11.7002 -25.1006 11.4004 -32.7002 0zM248 16\nc60.5996 0 134.5 38.2998 143.8 93.2998c1.90039 11.7998 -9.2998 21.6006 -20.7002 17.9004c-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002s-92.9004 5.5 -123.1 15.2002c-11.4004 3.7002 -22.7002 -6.10059 -20.7002 -17.9004\nc9.2998 -55 83.2002 -93.2998 143.8 -93.2998z\" />\n    <glyph glyph-name=\"grin-beam\" unicode=\"&#xf582;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM328 296c-23.7998 0 -52.7002 -29.2998 -55.7998 -71.4004c-0.700195 -8.5 10.7998 -11.7998 14.8994 -4.5l9.5 17c7.7002 13.7002 19.2002 21.6006 31.5 21.6006\nc12.3008 0 23.8008 -7.90039 31.5 -21.6006l9.5 -17c4.10059 -7.39941 15.6006 -4.09961 14.9004 4.5c-3.2998 42.1006 -32.2002 71.4004 -56 71.4004zM168 296c-23.7998 0 -52.7002 -29.2998 -55.7998 -71.4004c-0.700195 -8.5 10.7002 -11.8994 14.8994 -4.5l9.5 17\nc7.7002 13.7002 19.2002 21.6006 31.5 21.6006c12.3008 0 23.8008 -7.90039 31.5 -21.6006l9.5 -17c4.10059 -7.39941 15.6006 -4.09961 14.9004 4.5c-3.2998 42.1006 -32.2002 71.4004 -56 71.4004zM248 16c60.5996 0 134.5 38.2998 143.8 93.2998\nc1.90039 11.7998 -9.2998 21.6006 -20.7002 17.9004c-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002s-92.9004 5.5 -123.1 15.2002c-11.3008 3.7002 -22.7002 -6 -20.7002 -17.9004c9.2998 -55 83.2002 -93.2998 143.8 -93.2998z\" />\n    <glyph glyph-name=\"grin-beam-sweat\" unicode=\"&#xf583;\" horiz-adv-x=\"504\" \nd=\"M456 320c-26.5 0 -48 21 -48 47c0 20 28.5 60.4004 41.5996 77.7998c3.2002 4.2998 9.60059 4.2998 12.8008 0c13.0996 -17.3994 41.5996 -57.7998 41.5996 -77.7998c0 -26 -21.5 -47 -48 -47zM456 288c6.7998 0 13.2002 1.09961 19.5 2.59961\nc13.0996 -30.1992 20.5 -63.5 20.5 -98.5996c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248c50.2998 0 97 -15.0996 136.1 -40.7998c-7.7998 -18 -8.09961 -27.7998 -8.09961 -32.2002c0 -43.5996 35.9004 -79 80 -79zM328 296\nc-23.7998 0 -52.7002 -29.2998 -55.7998 -71.4004c-0.700195 -8.5 10.7998 -11.8994 14.8994 -4.5l9.5 17c7.7002 13.7002 19.2002 21.6006 31.5 21.6006c12.3008 0 23.8008 -7.90039 31.5 -21.6006l9.5 -17c4.10059 -7.5 15.6006 -4.09961 14.9004 4.5\nc-3.2998 42.1006 -32.2002 71.4004 -56 71.4004zM168 296c-23.7998 0 -52.7002 -29.2998 -55.7998 -71.4004c-0.700195 -8.5 10.7002 -11.8994 14.8994 -4.5l9.5 17c7.7002 13.7002 19.2002 21.6006 31.5 21.6006c12.3008 0 23.8008 -7.90039 31.5 -21.6006l9.5 -17\nc4.10059 -7.5 15.6006 -4.09961 14.9004 4.5c-3.2998 42.1006 -32.2002 71.4004 -56 71.4004zM248 16c60.5996 0 134.5 38.2998 143.8 93.2998c1.90039 11.7002 -9.2002 21.6006 -20.7002 17.9004c-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002\ns-92.9004 5.5 -123.1 15.2002c-11.4004 3.7002 -22.7002 -6.10059 -20.7002 -17.9004c9.2998 -55 83.2002 -93.2998 143.8 -93.2998z\" />\n    <glyph glyph-name=\"grin-hearts\" unicode=\"&#xf584;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM90.4004 264.4c-7.7002 -20.2002 3.7998 -41.8008 24.1992 -47.2002l70.2002 -18.2002c4.60059 -1.2002 9.2998 1.5 10.5 6l19.4004 69.9004\nc5.59961 20.2998 -7.40039 41.0996 -28.7998 44.5c-18.7002 3 -36.5 -9.80078 -41.5 -27.9004l-2 -7.09961l-7.10059 1.89941c-18.2002 4.7998 -38.2002 -4.2998 -44.8994 -21.8994zM248 16c60.5996 0 134.5 38.2998 143.8 93.2998\nc1.90039 11.7998 -9.2998 21.5 -20.7002 17.9004c-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002s-92.9004 5.5 -123.1 15.2002c-11.5 3.59961 -22.7002 -6.10059 -20.7002 -17.9004c9.2998 -55 83.2002 -93.2998 143.8 -93.2998zM381.4 217.3\nc20.3994 5.2998 31.8994 26.9004 24.1992 47.2002c-6.69922 17.5996 -26.6992 26.5996 -44.8994 21.9004l-7.10059 -1.90039l-2 7.09961c-5.09961 18.1006 -22.8994 30.9004 -41.5 27.9004c-21.3994 -3.40039 -34.3994 -24.2002 -28.7998 -44.5l19.4004 -69.9004\nc1.2998 -4.5 6 -7.19922 10.5 -6z\" />\n    <glyph glyph-name=\"grin-squint\" unicode=\"&#xf585;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM281.8 250.3c-7.7002 -4.7002 -7.7002 -15.8994 0 -20.5996l80 -48c11.5 -6.7998 24.1006 7.59961 15.4004 18l-33.6006 40.2998l33.6006 40.2998\nc8.59961 10.2998 -3.7998 24.9004 -15.4004 18zM118.8 280.3l33.6006 -40.2998l-33.6006 -40.2998c-8.59961 -10.4004 3.90039 -24.7998 15.4004 -18l80 48c7.7998 4.7002 7.7998 15.8994 0 20.5996l-80 48c-11.6006 6.90039 -24 -7.7002 -15.4004 -18zM248 16\nc60.5996 0 134.5 38.2998 143.8 93.2998c1.90039 11.7002 -9.2002 21.6006 -20.7002 17.9004c-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002s-92.9004 5.5 -123.1 15.2002c-11.3008 3.7002 -22.7002 -6 -20.7002 -17.9004\nc9.2998 -55 83.2002 -93.2998 143.8 -93.2998z\" />\n    <glyph glyph-name=\"grin-squint-tears\" unicode=\"&#xf586;\" \nd=\"M409.6 336.1c-5.59961 -0.799805 -10.2998 3.90039 -9.5 9.40039c3.30078 22.5996 12 73.5 26.8008 88.2998c19.0996 19.2002 50.6992 18.9004 70.2998 -0.700195c19.5996 -19.5996 19.8994 -51 0.700195 -70.1992\nc-14.8008 -14.8008 -65.7002 -23.6006 -88.3008 -26.8008zM102.4 47.9004c5.59961 0.799805 10.2998 -3.90039 9.5 -9.40039c-3.30078 -22.5996 -12 -73.5 -26.8008 -88.2998c-19.1992 -19.2002 -50.5996 -18.9004 -70.1992 0.700195\nc-19.6006 19.5996 -19.9004 51.0996 -0.800781 70.1992c14.8008 14.8008 65.7002 23.6006 88.3008 26.8008zM414.1 304.4c24 3.5 42.1006 7.39941 56.5 11.5c54.8008 -94.9004 42 -218.2 -39.1992 -299.301c-81.2002 -81.0996 -204.5 -94 -299.301 -39.1992\nc4.10059 14.3994 8.10059 32.5 11.5 56.5c2.90039 20.5 -12.5 49.5996 -45.6992 45.6992c-24.1006 -3.5 -42.1006 -7.39941 -56.5 -11.5c-54.8008 94.9004 -41.9004 218.2 39.1992 299.301c81.2002 81.0996 204.5 94 299.301 39.1992\nc-4.10059 -14.3994 -8.10059 -32.5 -11.5 -56.5c-2.90039 -20.5996 12.6992 -49.5996 45.6992 -45.6992zM255.7 342l-22.5 -90.5996c-2.2002 -8.60059 5.59961 -16.7002 14.5 -14.5l90.5 22.5996c13.0996 3.2998 11.5996 22.4004 -1.7998 23.5996l-52.3008 4.80078\nl-4.7998 52.2998c-1.2002 13.2998 -20.2998 15 -23.5996 1.7998zM164.8 111.7c1.2998 -13.4004 20.4004 -14.9004 23.5 -1.7002l22.6006 90.5c2.19922 8.7002 -5.7002 16.7002 -14.5 14.5l-90.5 -22.5996c-13.1006 -3.30078 -11.6006 -22.4004 1.7998 -23.6006\nl52.2998 -4.7998zM380.5 67.5c42.7998 42.9004 68 122.3 35.7002 167.6c-7.10059 9.90039 -21.9004 8.5 -27.2998 -2c-14.6006 -28.1992 -42.4004 -63.8994 -76.3008 -97.7998c-33.8994 -33.8994 -69.5 -61.7002 -97.7998 -76.2998\nc-10.7002 -5.40039 -11.7998 -20.2998 -2 -27.2002c14.4004 -10.2002 32.1006 -14.7002 51 -14.7002c41 0 87.4004 21.1006 116.7 50.4004z\" />\n    <glyph glyph-name=\"grin-stars\" unicode=\"&#xf587;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM94.5996 279.1c-6.19922 -1 -8.89941 -8.59961 -4.2998 -13.2998l25.4004 -24.5996l-6 -34.9004c-1 -6.2002 5.2998 -11 11 -7.89941l31.2998 16.2998l31.2002 -16.2002\nc5.7002 -3.09961 12 1.7002 11 7.90039l-6 34.8994l25.3994 24.6006c4.60059 4.59961 1.90039 12.1992 -4.2998 13.1992l-34.8994 5l-15.5 31.6006c-2.90039 5.7998 -11 5.7998 -13.9004 0l-15.5 -31.6006zM248 16c60.5996 0 134.5 38.2998 143.8 93.2998\nc1.90039 11.7998 -9.2002 21.6006 -20.7002 17.9004c-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002s-92.9004 5.5 -123.1 15.2002c-11.4004 3.59961 -22.7002 -6.10059 -20.7002 -17.9004c9.2998 -55 83.2002 -93.2998 143.8 -93.2998zM405.7 265.9\nc4.59961 4.59961 1.89941 12.1992 -4.40039 13.0996l-34.8994 5l-15.5 31.5996c-2.90039 5.80078 -11 5.80078 -13.9004 0l-15.5 -31.5996l-34.9004 -5c-6.19922 -1 -8.7998 -8.59961 -4.2998 -13.2002l25.4004 -24.5996l-6 -34.9004c-1 -6.2002 5.2998 -11 11 -7.89941\nl31.2998 16.2998l31.2998 -16.2002c5.7002 -3.09961 12 1.7002 11 7.90039l-6 34.8994z\" />\n    <glyph glyph-name=\"grin-tears\" unicode=\"&#xf588;\" horiz-adv-x=\"640\" \nd=\"M102.4 191.9c5.59961 0.799805 10.2998 -3.90039 9.5 -9.40039c-3.30078 -22.5996 -12 -73.5 -26.8008 -88.2998c-19.1992 -19.2002 -50.5996 -18.9004 -70.1992 0.700195c-19.6006 19.5996 -19.9004 51.0996 -0.800781 70.1992\nc14.8008 14.8008 65.7002 23.6006 88.3008 26.8008zM625.8 165.1c19.2002 -19.0996 18.7998 -50.6992 -0.799805 -70.2998c-19.5996 -19.5996 -51 -19.8994 -70.2002 -0.700195c-14.7998 14.8008 -23.5996 65.7002 -26.7998 88.3008c-0.799805 5.59961 4 10.2998 9.5 9.5\nc22.5996 -3.30078 73.5 -12 88.2998 -26.8008zM496.4 177.9c11.7998 -82.3008 29.8994 -100.4 35.7998 -106.301c0.899414 -1 2 -1.59961 3 -2.5c-42.7002 -74.6992 -123 -125.1 -215.2 -125.1s-172.5 50.4004 -215.2 125c1 0.900391 2.10059 1.59961 3 2.5\nc5.90039 6 24 24.0996 35.7998 106.4c2.90039 20.3994 -12.5 49.5996 -45.6992 45.6992c-8.90039 -1.2998 -16.8008 -2.69922 -24.3008 -4.09961c13.7002 124 118.7 220.5 246.4 220.5s232.7 -96.5 246.4 -220.5c-7.5 1.40039 -15.4004 2.7998 -24.3008 4.09961\nc-26.5996 3.80078 -49.5 -19.0996 -45.6992 -45.6992zM400 296c-23.7998 0 -52.7002 -29.2998 -55.7998 -71.4004c-0.700195 -8.5 10.7002 -11.8994 14.8994 -4.5l9.5 17c7.7002 13.7002 19.2002 21.6006 31.5 21.6006c12.3008 0 23.8008 -7.90039 31.5 -21.6006l9.5 -17\nc4.10059 -7.5 15.6006 -4.09961 14.9004 4.5c-3.2998 42.1006 -32.2002 71.4004 -56 71.4004zM240 296c-23.7998 0 -52.7002 -29.2998 -55.7998 -71.4004c-0.700195 -8.5 10.7002 -11.8994 14.8994 -4.5l9.5 17c7.7002 13.7002 19.2002 21.6006 31.5 21.6006\nc12.3008 0 23.8008 -7.90039 31.5 -21.6006l9.5 -17c4.10059 -7.5 15.6006 -4.09961 14.9004 4.5c-3.2998 42.1006 -32.2002 71.4004 -56 71.4004zM320 16c60.5996 0 134.5 38.2998 143.8 93.2998c1.90039 11.7998 -9.2998 21.6006 -20.7002 17.9004\nc-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002s-92.9004 5.5 -123.1 15.2002c-11.5 3.7002 -22.7002 -6.2002 -20.7002 -17.9004c9.2998 -55 83.2002 -93.2998 143.8 -93.2998z\" />\n    <glyph glyph-name=\"grin-tongue\" unicode=\"&#xf589;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248c0 -106.3 -67 -196.7 -161 -232c5.59961 12.2002 9 25.7002 9 40v45.5c24.7002 16.2002 43.5 38.0996 47.7998 63.7998c1.90039 11.7998 -9.2998 21.5 -20.7002 17.9004c-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002\ns-92.9004 5.5 -123.1 15.2002c-11.4004 3.59961 -22.7002 -6.10059 -20.7002 -17.9004c4.2998 -25.7002 23.0996 -47.5996 47.7998 -63.7998v-45.5c0 -14.2998 3.40039 -27.7998 9 -40c-94 35.2998 -161 125.7 -161 232c0 137 111 248 248 248zM168 208\nc17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM328 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM293.1 73.4004c0.800781 -0.400391 -0.5 0.299805 19 -9.30078v-64\nc0 -35.5996 -29.1992 -64.5 -64.8994 -64c-35.1006 0.400391 -63.1006 29.7002 -63.1006 64.9004v63c19.2002 9.59961 18 9 18.9004 9.40039c14.4004 6.5 31.0996 -2.2002 34.5996 -17.6006l1.80078 -7.7998c2.09961 -9.2002 15.1992 -9.2002 17.2998 0l1.7998 7.7998\nc3.5 15.4004 20.2002 24.1006 34.5996 17.6006z\" />\n    <glyph glyph-name=\"grin-tongue-squint\" unicode=\"&#xf58a;\" horiz-adv-x=\"496\" \nd=\"M293.1 73.4004c0.800781 -0.400391 -0.5 0.299805 19 -9.30078v-64c0 -35.5996 -29.1992 -64.5 -64.8994 -64c-35.1006 0.400391 -63.1006 29.7002 -63.1006 64.9004v63c19.2002 9.59961 18 9 18.9004 9.40039c14.4004 6.5 31.0996 -2.2002 34.5996 -17.6006\nl1.80078 -7.7998c2.09961 -9.2002 15.1992 -9.2002 17.2998 0l1.7998 7.7998c3.5 15.4004 20.2002 24.1006 34.5996 17.6006zM248 440c137 0 248 -111 248 -248c0 -106.3 -67 -196.7 -161 -232c5.59961 12.2002 9 25.7002 9 40v45.5\nc24.7002 16.2002 43.5 38.0996 47.7998 63.7998c1.90039 11.7998 -9.2998 21.6006 -20.7002 17.9004c-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002s-92.9004 5.5 -123.1 15.2002c-11.5 3.59961 -22.7002 -6.10059 -20.7002 -17.9004\nc4.2998 -25.7002 23.0996 -47.5996 47.7998 -63.7998v-45.5c0 -14.2998 3.40039 -27.7998 9 -40c-94 35.2998 -161 125.7 -161 232c0 137 111 248 248 248zM214.2 229.7c7.7002 4.7002 7.7002 15.8994 0 20.5996l-80 48c-11.6006 6.90039 -24 -7.7002 -15.4004 -18\nl33.6006 -40.2998l-33.6006 -40.2998c-8.59961 -10.4004 3.90039 -24.7998 15.4004 -18zM377.2 199.7l-33.6006 40.2998l33.6006 40.2998c8.5 10.2998 -3.7002 24.9004 -15.4004 18l-80 -48c-7.7998 -4.7002 -7.7998 -15.8994 0 -20.5996l80 -48\nc11.5 -6.7998 24.1006 7.59961 15.4004 18z\" />\n    <glyph glyph-name=\"grin-tongue-wink\" unicode=\"&#xf58b;\" horiz-adv-x=\"496\" \nd=\"M344 264c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24s-24 10.7002 -24 24s10.7002 24 24 24zM248 440c137 0 248 -111 248 -248c0 -106.3 -67 -196.7 -161 -232c5.59961 12.2002 9 25.7002 9 40v45.5c24.7002 16.2002 43.5 38.0996 47.7998 63.7998\nc1.90039 11.7998 -9.2002 21.6006 -20.7002 17.9004c-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002s-92.9004 5.5 -123.1 15.2002c-11.4004 3.59961 -22.7002 -6.10059 -20.7002 -17.9004c4.2998 -25.7002 23.0996 -47.5996 47.7998 -63.7998v-45.5\nc0 -14.2998 3.40039 -27.7998 9 -40c-94 35.2998 -161 125.7 -161 232c0 137 111 248 248 248zM192 215c8.40039 -7.40039 21.5996 -0.299805 20 10.7998c-4 25.2002 -34.2002 42.1006 -59.9004 42.1006c-25.6992 0 -55.8994 -16.9004 -59.8994 -42.1006\nc-1.7998 -11.0996 11.2998 -18.2002 19.7998 -10.7998l9.5 8.5c14.7998 13.2002 46.2002 13.2002 61 0zM344 176c35.2998 0 64 28.7002 64 64s-28.7002 64 -64 64s-64 -28.7002 -64 -64s28.7002 -64 64 -64zM293.1 73.4004c0.800781 -0.400391 -0.5 0.299805 19 -9.30078\nv-64c0 -35.5996 -29.1992 -64.5 -64.8994 -64c-35.1006 0.400391 -63.1006 29.7002 -63.1006 64.9004v63c19.2002 9.59961 18 9 18.9004 9.40039c14.4004 6.5 31.0996 -2.2002 34.5996 -17.6006l1.80078 -7.7998c2.09961 -9.2002 15.1992 -9.2002 17.2998 0l1.7998 7.7998\nc3.5 15.4004 20.2002 24.1006 34.5996 17.6006z\" />\n    <glyph glyph-name=\"grin-wink\" unicode=\"&#xf58c;\" horiz-adv-x=\"496\" \nd=\"M0 192c0 137 111 248 248 248s248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248zM200 240c0 17.7002 -14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32s32 14.2998 32 32zM368 215c8.5 -7.40039 21.5996 -0.200195 20 10.7998\nc-4 25.2002 -34.2002 42.1006 -59.9004 42.1006c-25.6992 0 -55.8994 -16.9004 -59.8994 -42.1006c-1.7998 -11.2002 11.5 -18.2002 19.7998 -10.7998l9.5 8.5c14.7998 13.2002 46.2002 13.2002 61 0zM124.9 127.2c-11.4004 3.7002 -22.7002 -6 -20.7002 -17.9004\nc9.2998 -55 83.2002 -93.2998 143.8 -93.2998s134.6 38.2998 143.8 93.2998c1.90039 11.9004 -9.39941 21.6006 -20.7002 17.9004c-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002s-92.9004 5.5 -123.1 15.2002z\" />\n    <glyph glyph-name=\"grip-horizontal\" unicode=\"&#xf58d;\" horiz-adv-x=\"448\" \nd=\"M96 160c17.6699 0 32 -14.3301 32 -32v-64c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v64c0 17.6699 14.3301 32 32 32h64zM256 160c17.6699 0 32 -14.3301 32 -32v-64c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v64\nc0 17.6699 14.3301 32 32 32h64zM416 160c17.6699 0 32 -14.3301 32 -32v-64c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v64c0 17.6699 14.3301 32 32 32h64zM96 352c17.6699 0 32 -14.3301 32 -32v-64c0 -17.6699 -14.3301 -32 -32 -32h-64\nc-17.6699 0 -32 14.3301 -32 32v64c0 17.6699 14.3301 32 32 32h64zM256 352c17.6699 0 32 -14.3301 32 -32v-64c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v64c0 17.6699 14.3301 32 32 32h64zM416 352c17.6699 0 32 -14.3301 32 -32v-64\nc0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v64c0 17.6699 14.3301 32 32 32h64z\" />\n    <glyph glyph-name=\"grip-vertical\" unicode=\"&#xf58e;\" horiz-adv-x=\"320\" \nd=\"M96 416c17.6699 0 32 -14.3301 32 -32v-64c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v64c0 17.6699 14.3301 32 32 32h64zM96 256c17.6699 0 32 -14.3301 32 -32v-64c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v64\nc0 17.6699 14.3301 32 32 32h64zM96 96c17.6699 0 32 -14.3301 32 -32v-64c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v64c0 17.6699 14.3301 32 32 32h64zM288 416c17.6699 0 32 -14.3301 32 -32v-64c0 -17.6699 -14.3301 -32 -32 -32h-64\nc-17.6699 0 -32 14.3301 -32 32v64c0 17.6699 14.3301 32 32 32h64zM288 256c17.6699 0 32 -14.3301 32 -32v-64c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v64c0 17.6699 14.3301 32 32 32h64zM288 96c17.6699 0 32 -14.3301 32 -32v-64\nc0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v64c0 17.6699 14.3301 32 32 32h64z\" />\n    <glyph glyph-name=\"headphones-alt\" unicode=\"&#xf58f;\" \nd=\"M160 160c17.6699 0 32 -14.3496 32 -32.0596v-127.881c0 -17.6992 -14.3301 -32.0596 -32 -32.0596h-16c-35.3496 0 -64 28.71 -64 64.1201v63.7598c0 35.4199 28.6504 64.1201 64 64.1201h16zM368 160c35.3496 0 64 -28.71 64 -64.1201v-63.7598\nc0 -35.4102 -28.6504 -64.1201 -64 -64.1201h-16c-17.6699 0 -32 14.3604 -32 32.0596v127.881c0 17.71 14.3301 32.0596 32 32.0596h16zM256 416c143.09 0 251.43 -119.13 256 -256v-112c0 -8.83984 -7.16016 -16 -16 -16h-16c-8.83984 0 -16 7.16016 -16 16v112\nc0 114.67 -93.3301 207.8 -208 207.82c-114.67 -0.0205078 -208 -93.1504 -208 -207.82v-112c0 -8.83984 -7.16016 -16 -16 -16h-16c-8.83984 0 -16 7.16016 -16 16v112c4.57031 136.87 112.91 256 256 256z\" />\n    <glyph glyph-name=\"headset\" unicode=\"&#xf590;\" \nd=\"M192 240v-112c0 -17.6699 -14.3301 -32 -32 -32h-16c-35.3496 0 -64 28.6504 -64 64v48c0 35.3496 28.6504 64 64 64h16c17.6699 0 32 -14.3301 32 -32zM368 96h-16c-17.6699 0 -32 14.3301 -32 32v112c0 17.6699 14.3301 32 32 32h16c35.3496 0 64 -28.6504 64 -64v-48\nc0 -35.3496 -28.6504 -64 -64 -64zM256 448c142.82 0 251.42 -118.83 256 -256v-165.72c0 -49.8604 -40.4199 -90.2803 -90.2803 -90.2803h-181.72c-26.5098 0 -48 21.4902 -48 48s21.4902 48 48 48h32c26.5098 0 48 -21.4902 48 -48h101.72\nc23.3506 0 42.2803 18.9297 42.2803 42.2803c0 0 -0.0400391 163.29 -0.120117 165.72h0.120117c0 114.69 -93.3096 208 -208 208s-208 -93.3096 -208 -208v-16c0 -8.83984 -7.16016 -16 -16 -16h-16c-8.83984 0 -16 7.16016 -16 16v16c4.58008 137.17 113.18 256 256 256z\n\" />\n    <glyph glyph-name=\"highlighter\" unicode=\"&#xf591;\" horiz-adv-x=\"544\" \nd=\"M0 -31.9805l68.3301 70.4707l67.04 -67.04l-35.4502 -35.4502zM124.61 208.03l41.5195 35.4395l173.34 -173.34l-35.5498 -41.6396c-9.5 -10.7705 -24.4199 -14.9805 -38.1504 -10.7803l-42.7393 13.0801l-50.8604 -50.8604l-96.2295 96.2305l50.9297 50.9395\nl-13.0498 42.8301c-0.876953 2.87891 -1.58887 7.65625 -1.58887 10.665c0 9.11328 5.5459 21.4043 12.3789 27.4355zM527.92 368.73c20.5 -20.5 21.5303 -53.3906 2.34961 -75.1309l-169.949 -199.06l-169.771 169.78l199.05 169.96\nc21.7402 19.1699 54.6309 18.1396 75.1201 -2.35059z\" />\n    <glyph glyph-name=\"hot-tub\" unicode=\"&#xf593;\" \nd=\"M414.21 270.35c-3.15039 25.3906 -14.6104 47.9707 -31.9697 62.1406c-27.7305 22.6299 -45.79 58.0498 -50.1299 97.1602c-1.09082 9.7793 6.48926 18.3496 16 18.3496h16.1201c7.98926 0 14.7295 -6.13965 15.7393 -14.3398\nc3.16016 -25.4004 14.6104 -47.9805 31.9805 -62.1504c27.7295 -22.6299 45.79 -58.0498 50.1299 -97.1602c1.08008 -9.7793 -6.49023 -18.3496 -16 -18.3496h-16.1201c-8 0 -14.7295 6.13965 -15.75 14.3496zM306.21 270.35\nc-3.15039 25.3906 -14.6104 47.9707 -31.9697 62.1406c-27.7305 22.6299 -45.79 58.0498 -50.1299 97.1602c-1.09082 9.7793 6.48926 18.3496 16 18.3496h16.1201c7.98926 0 14.7295 -6.13965 15.7393 -14.3398c3.16016 -25.4004 14.6104 -47.9805 31.9805 -62.1504\nc27.7295 -22.6299 45.79 -58.0498 50.1299 -97.1602c1.08008 -9.7793 -6.49023 -18.3496 -16 -18.3496h-16.1201c-8 0 -14.7295 6.13965 -15.75 14.3496zM480 192c17.6699 0 32 -14.3301 32 -32v-160c0 -35.3496 -28.6504 -64 -64 -64h-384c-35.3496 0 -64 28.6504 -64 64\nv224c0 35.3496 28.6504 64 64 64h42.6699h0.00292969c11.7754 0 28.9775 -5.73438 38.3975 -12.7998l110.93 -83.2002h224zM128 8v112c0 4.41992 -3.58008 8 -8 8h-16c-4.41992 0 -8 -3.58008 -8 -8v-112c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8zM224 8v112\nc0 4.41992 -3.58008 8 -8 8h-16c-4.41992 0 -8 -3.58008 -8 -8v-112c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8zM320 8v112c0 4.41992 -3.58008 8 -8 8h-16c-4.41992 0 -8 -3.58008 -8 -8v-112c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8zM416 8\nv112c0 4.41992 -3.58008 8 -8 8h-16c-4.41992 0 -8 -3.58008 -8 -8v-112c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8zM64 320c-35.3496 0 -64 28.6504 -64 64s28.6504 64 64 64s64 -28.6504 64 -64s-28.6504 -64 -64 -64z\" />\n    <glyph glyph-name=\"hotel\" unicode=\"&#xf594;\" horiz-adv-x=\"576\" \nd=\"M560 384h-16v-384h16c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-240v80c0 8.7998 -7.2002 16 -16 16h-32c-8.7998 0 -16 -7.2002 -16 -16v-80h-240c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h15.9805v384h-15.9805\nc-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h544c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16zM256 339.2v-38.4004c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h38.4004c6.39941 0 12.7998 6.40039 12.7998 12.7998v38.4004\nc0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-38.4004c-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998zM256 243.2v-38.4004c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h38.4004c6.39941 0 12.7998 6.40039 12.7998 12.7998v38.4004\nc0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-38.4004c-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998zM128 339.2v-38.4004c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h38.4004c6.39941 0 12.7998 6.40039 12.7998 12.7998v38.4004\nc0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-38.4004c-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998zM179.2 192c6.39941 0 12.7998 6.40039 12.7998 12.7998v38.4004c0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-38.4004\nc-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998v-38.4004c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h38.4004zM192 64h192c0 53.0195 -42.9805 96 -96 96s-96 -42.9805 -96 -96zM448 204.8v38.4004c0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-38.4004\nc-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998v-38.4004c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h38.4004c6.39941 0 12.7998 6.40039 12.7998 12.7998zM448 300.8v38.4004c0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-38.4004\nc-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998v-38.4004c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h38.4004c6.39941 0 12.7998 6.40039 12.7998 12.7998z\" />\n    <glyph glyph-name=\"joint\" unicode=\"&#xf595;\" horiz-adv-x=\"640\" \nd=\"M444.34 266.9c-35.7803 25.0693 -60.3398 63.0098 -60.3398 106.699v66.4004c0 4.41992 3.58008 8 8 8h48c4.41992 0 8 -3.58008 8 -8v-62.3096c0 -29.0303 15.8496 -54.71 39.6602 -71.3203c35.3301 -24.6504 56.3398 -64.8203 56.3398 -108.061v-30.3096\nc0 -4.41992 -3.58008 -8 -8 -8h-48c-4.41992 0 -8 3.58008 -8 8v30.3096c0 27.4307 -13.2803 52.9102 -35.6602 68.5908zM194.97 89.0195c22.3701 3.60059 45.0801 -4.30957 59.8203 -21.5098l112.72 -131.51h-88.5693c-98.6406 0 -195.29 27.7197 -278.94 80\nc59.6904 37.3096 126.03 61.9297 194.97 73.0195zM553.28 360.91c54.3096 -36.4102 86.7197 -97.1602 86.7197 -162.601v-30.3096c0 -4.41992 -3.58008 -8 -8 -8h-48c-4.41992 0 -8 3.58008 -8 8v30.3096c0 50.1504 -25.21 96.6504 -67.3604 123.99\nc-18.4697 11.9805 -28.6396 33.3701 -28.6396 55.3906v62.3096c0 4.41992 3.58008 8 8 8h48c4.41992 0 8 -3.58008 8 -8v-62.3096c0 -6.82031 3.61035 -12.9805 9.28027 -16.7803zM360.89 95.9502h0.108398c16.2441 0 38.0049 -10.0127 48.5723 -22.3506l117.949 -137.6\nh-88.4492h-0.00292969c-16.248 0 -38.0146 10.0127 -48.5869 22.3496l-117.801 137.431c1.40039 0.0195312 53.8105 0.109375 88.21 0.169922zM616 96c13.25 0 24 -10.7402 24 -24v-112c0 -13.25 -10.75 -24 -24 -24h-17.4199h-0.00292969\nc-16.248 0 -38.0146 10.0127 -48.5869 22.3496l-117.99 137.65h184z\" />\n    <glyph glyph-name=\"kiss\" unicode=\"&#xf596;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM168 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM304 52c0 13 -13.4004 27.2998 -35.2002 36.4004\nc21.7998 8.69922 35.2002 23 35.2002 36c0 19.1992 -28.7002 41.5 -71.5 44c-8.40039 1.09961 -12.2002 -11.8008 -3.59961 -15.4004l17 -7.2002c13 -5.5 20.7998 -13.5 20.7998 -21.5s-7.7998 -16 -20.7998 -21.5l-17 -7.2002c-6.10059 -2.59961 -6 -12.2998 0 -14.7998\nl17 -7.2002c13 -5.5 20.7998 -13.5 20.7998 -21.5s-7.7998 -16 -20.7998 -21.5l-17 -7.19922c-8.5 -3.60059 -4.90039 -16.2002 3.59961 -15.4004c42.7998 2.5 71.5 24.7998 71.5 44zM328 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32\ns14.2998 -32 32 -32z\" />\n    <glyph glyph-name=\"kiss-beam\" unicode=\"&#xf597;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM209 220.1c4.2002 -7.5 15.5996 -4 15.0996 4.5c-3.2998 42.1006 -32.1992 71.4004 -56 71.4004c-23.7998 0 -52.6992 -29.2998 -56 -71.4004\nc-0.699219 -8.5 10.7002 -11.8994 14.9004 -4.5l9.5 17c7.7002 13.7002 19.2002 21.6006 31.5 21.6006s23.7998 -7.90039 31.5 -21.6006zM304 52c0 13 -13.4004 27.2998 -35.2002 36.4004c21.7998 8.69922 35.2002 23 35.2002 36c0 19.1992 -28.7002 41.5 -71.5 44\nc-8.40039 1.09961 -12.2002 -11.8008 -3.59961 -15.4004l17 -7.2002c13 -5.5 20.7998 -13.5 20.7998 -21.5s-7.7998 -16 -20.7998 -21.5l-17 -7.2002c-6.10059 -2.59961 -6 -12.2998 0 -14.7998l17 -7.2002c13 -5.5 20.7998 -13.5 20.7998 -21.5s-7.7998 -16 -20.7998 -21.5\nl-17 -7.19922c-8.5 -3.60059 -4.90039 -16.2002 3.59961 -15.4004c42.7998 2.5 71.5 24.7998 71.5 44zM369 220.1c4.2002 -7.5 15.5996 -4 15.0996 4.5c-3.2998 42.1006 -32.1992 71.4004 -56 71.4004c-23.7998 0 -52.6992 -29.2998 -56 -71.4004\nc-0.699219 -8.5 10.8008 -11.7998 14.9004 -4.5l9.5 17c7.7002 13.7002 19.2002 21.6006 31.5 21.6006s23.7998 -7.90039 31.5 -21.6006z\" />\n    <glyph glyph-name=\"kiss-wink-heart\" unicode=\"&#xf598;\" horiz-adv-x=\"504\" \nd=\"M501.1 45.5c9.2002 -23.9004 -4.39941 -49.4004 -28.5 -55.7002l-83 -21.5c-5.39941 -1.39941 -10.8994 1.7998 -12.3994 7.10059l-22.9004 82.5996c-6.59961 24 8.7998 48.5996 34 52.5996c22 3.5 43.1006 -11.5996 49 -33l2.2998 -8.39941l8.40039 2.2002\nc21.5996 5.59961 45.0996 -5.10059 53.0996 -25.9004zM323.5 49.5c0 0 23.5996 -83.9004 23.9004 -84.5996c-30.5 -13.4004 -64 -20.9004 -99.4004 -20.9004c-137 0 -248 111 -248 248s111 248 248 248s248 -111 248 -248c0 -31.7998 -6.2002 -62.0996 -17.0996 -90\nc-6 1.5 -12.2002 2.7998 -18.6006 2.90039c-29.0996 49.7998 -98.0996 50.5996 -127.8 4.2998c-11.2998 -17.7002 -14.5996 -39.4004 -9 -59.7002zM168 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM288 52\nc0 13 -13.4004 27.2998 -35.2002 36.4004c21.7998 8.69922 35.2002 23 35.2002 36c0 19.1992 -28.7002 41.5 -71.5 44c-8.2002 1.19922 -12.4004 -11.7002 -3.59961 -15.4004l17 -7.2002c13 -5.5 20.7998 -13.5 20.7998 -21.5s-7.7998 -16 -20.7998 -21.5l-17 -7.2002\nc-5.7002 -2.5 -6 -12.2998 0 -14.7998l17 -7.2002c13 -5.5 20.7998 -13.5 20.7998 -21.5s-7.7998 -16 -20.7998 -21.5l-17 -7.19922c-8.5 -3.60059 -4.90039 -16.2002 3.59961 -15.4004c42.7998 2.5 71.5 24.7998 71.5 44zM304 231l9.7002 8.5\nc14.7998 13.2002 46.2002 13.2002 61 0l9.5 -8.5c8.5 -7.5 21.5 -0.299805 19.7998 10.7998c-4 25.2002 -34.2002 42.1006 -59.9004 42.1006c-25.6992 0 -55.8994 -16.9004 -59.8994 -42.1006c-1.7998 -11.2002 11.5 -18.2002 19.7998 -10.7998z\" />\n    <glyph glyph-name=\"laugh\" unicode=\"&#xf599;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM328 288c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32s32 14.2998 32 32s-14.2998 32 -32 32zM168 288c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32\ns32 14.2998 32 32s-14.2998 32 -32 32zM256 16c73.4004 0 134 55 142.9 126c1.19922 9.59961 -6.30078 18 -15.9004 18h-270c-9.59961 0 -17.0996 -8.5 -15.9004 -18c8.90039 -71 69.5 -126 142.9 -126h16z\" />\n    <glyph glyph-name=\"laugh-beam\" unicode=\"&#xf59a;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM272 240.6c-0.700195 -8.59961 10.9004 -11.8994 15.0996 -4.5l9.5 17c7.7002 13.7002 19.2002 21.6006 31.5 21.6006c12.3008 0 23.8008 -7.90039 31.5 -21.6006l9.5 -17\nc4.10059 -7.39941 15.6006 -4.09961 14.9004 4.5c-3.2998 42.1006 -32.2002 71.4004 -56 71.4004s-52.7002 -29.2998 -56 -71.4004zM112 240.6c-0.700195 -8.5 10.7998 -11.8994 15.0996 -4.5l9.5 17c7.7002 13.7002 19.2002 21.6006 31.5 21.6006\nc12.3008 0 23.8008 -7.90039 31.5 -21.6006l9.5 -17c4.10059 -7.39941 15.6006 -4.09961 14.9004 4.5c-3.2998 42.1006 -32.2002 71.4004 -56 71.4004s-52.7002 -29.2998 -56 -71.4004zM398.9 142c1.19922 9.59961 -6.30078 18 -15.9004 18h-270\nc-9.59961 0 -17.0996 -8.5 -15.9004 -18c8.90039 -71 69.5 -126 142.9 -126h16c73.4004 0 134 55 142.9 126z\" />\n    <glyph glyph-name=\"laugh-squint\" unicode=\"&#xf59b;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM281.8 278.3c-7.7002 -4.7002 -7.7002 -15.8994 0 -20.5996l80 -48c11.5 -6.7998 24.1006 7.59961 15.4004 18l-33.6006 40.2998l33.6006 40.2998\nc8.59961 10.2998 -3.7998 24.9004 -15.4004 18zM118.8 308.3l33.6006 -40.2998l-33.6006 -40.2998c-8.59961 -10.4004 3.90039 -24.7998 15.4004 -18l80 48c7.7998 4.7002 7.7998 15.8994 0 20.5996l-80 48c-11.6006 6.90039 -24 -7.7002 -15.4004 -18zM398.9 142\nc1.19922 9.59961 -6.30078 18 -15.9004 18h-270c-9.59961 0 -17.0996 -8.5 -15.9004 -18c8.90039 -71 69.5 -126 142.9 -126h16c73.4004 0 134 55 142.9 126z\" />\n    <glyph glyph-name=\"laugh-wink\" unicode=\"&#xf59c;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM268.1 241.9c-1.69922 -11.2002 11.5 -18.3008 19.9004 -10.9004l9.59961 8.59961c14.8008 13.2002 46.2002 13.2002 61 0l9.5 -8.5\nc8.40039 -7.5 21.5 -0.299805 19.8008 10.8008c-4 25.1992 -34.2002 42.0996 -59.9004 42.0996s-55.9004 -16.9004 -59.9004 -42.0996zM168 288c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32s32 14.2998 32 32s-14.2998 32 -32 32zM398.9 142\nc1.19922 9.59961 -6.30078 18 -15.9004 18h-270c-9.59961 0 -17.0996 -8.5 -15.9004 -18c8.90039 -71 69.5 -126 142.9 -126h16c73.4004 0 134 55 142.9 126z\" />\n    <glyph glyph-name=\"luggage-cart\" unicode=\"&#xf59d;\" horiz-adv-x=\"640\" \nd=\"M224 128c-17.6699 0 -32 14.3301 -32 32v160c0 17.6699 14.3301 32 32 32h32v-224h-32zM576 160c0 -17.6699 -14.3301 -32 -32 -32h-32v224h32c17.6699 0 32 -14.3301 32 -32v-160zM624 64c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-82.9404\nc1.79004 -5.03027 2.94043 -10.3604 2.94043 -16c0 -26.5098 -21.4902 -48 -48 -48s-48 21.4902 -48 48c0 5.63965 1.15039 10.9697 2.94043 16h-197.881c1.79004 -5.03027 2.94043 -10.3604 2.94043 -16c0 -26.5098 -21.4902 -48 -48 -48s-48 21.4902 -48 48\nc0 5.63965 1.15039 10.9697 2.94043 16h-82.9404c-8.83984 0 -16 7.16016 -16 16v368h-48c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h96c8.83984 0 16 -7.16016 16 -16v-368h496zM480 352v-224h-192v272c0 26.5098 21.4902 48 48 48h96\nc26.5098 0 48 -21.4902 48 -48v-48zM432 352v48h-96v-48h96z\" />\n    <glyph glyph-name=\"map-marked\" unicode=\"&#xf59f;\" horiz-adv-x=\"576\" \nd=\"M288 448c69.5898 0 126 -56.4102 126 -126c0 -56.2598 -82.3496 -158.8 -113.9 -196.02c-6.37988 -7.54004 -17.8096 -7.54004 -24.1992 0c-31.5508 37.2197 -113.9 139.76 -113.9 196.02c0 69.5898 56.4102 126 126 126zM20.1201 232.05l118.63 47.4502\nc5.17969 -14.8799 12.4102 -30.4404 21.25 -46.4199v-233.08l-138.06 -62.8398c-10.5107 -4.2002 -21.9404 3.54004 -21.9404 14.8594v250.32c0.00292969 11.959 9.0166 25.2686 20.1201 29.71zM288 88.3301c14.0703 0 27.3799 6.17969 36.5098 16.9502\nc19.6699 23.2002 40.5703 49.6299 59.4902 76.7197v-245.99l-192 64v182c18.9199 -27.0996 39.8301 -53.5195 59.4902 -76.7197c9.12988 -10.7803 22.4395 -16.96 36.5098 -16.96zM554.06 286.84c10.5107 4.2002 21.9404 -3.54004 21.9404 -14.8594v-250.32\nc0 -11.9609 -9.01367 -25.2705 -20.1201 -29.71l-139.88 -55.9502v288z\" />\n    <glyph glyph-name=\"map-marked-alt\" unicode=\"&#xf5a0;\" horiz-adv-x=\"576\" \nd=\"M288 448c69.5898 0 126 -56.4102 126 -126c0 -56.2598 -82.3496 -158.8 -113.9 -196.02c-6.37988 -7.54004 -17.8096 -7.54004 -24.1992 0c-31.5508 37.2197 -113.9 139.76 -113.9 196.02c0 69.5898 56.4102 126 126 126zM288 280c23.2002 0 42 18.7998 42 42\ns-18.7998 42 -42 42s-42 -18.7998 -42 -42s18.7998 -42 42 -42zM20.1201 232.05l118.63 47.4502c5.17969 -14.8799 12.4102 -30.4404 21.25 -46.4199v-233.08l-138.06 -62.8398c-10.5107 -4.2002 -21.9404 3.54004 -21.9404 14.8594v250.32\nc0.00292969 11.959 9.0166 25.2686 20.1201 29.71zM288 88.3301c14.0703 0 27.3799 6.17969 36.5098 16.9502c19.6699 23.2002 40.5703 49.6299 59.4902 76.7197v-245.99l-192 64v182c18.9199 -27.0996 39.8301 -53.5195 59.4902 -76.7197\nc9.12988 -10.7803 22.4395 -16.96 36.5098 -16.96zM554.06 286.84c10.5107 4.2002 21.9404 -3.54004 21.9404 -14.8594v-250.32c0 -11.9609 -9.01367 -25.2705 -20.1201 -29.71l-139.88 -55.9502v288z\" />\n    <glyph glyph-name=\"marker\" unicode=\"&#xf5a1;\" \nd=\"M93.9502 157.97l75.3994 75.4004l128.021 -128.021l-75.4004 -75.3994c-44.8223 -44.8203 -132.335 -86.8428 -195.34 -93.7998c-15.2803 -1.69043 -28.1895 11.2295 -26.4902 26.5098l0.0302734 0.229492c7.00195 62.9189 49.0156 150.315 93.7803 195.08z\nM485.49 421.49c35.3496 -35.3604 35.3496 -92.6699 0 -128.021l-165.49 -165.489l-128.02 128.02l98.4795 98.4697l-19.5898 19.5898l-87.1504 -87.1494c-6.25 -6.25 -16.3799 -6.25 -22.6299 0l-22.6201 22.6201c-6.25 6.25 -6.25 16.3799 0 22.6299l104.12 104.12\nc15.6104 15.6201 40.9404 15.6201 56.5605 0l36.5596 -36.5498l21.7598 21.7598c35.3506 35.3496 92.6699 35.3496 128.021 0z\" />\n    <glyph glyph-name=\"medal\" unicode=\"&#xf5a2;\" \nd=\"M223.75 317.25c-42.04 -6.55957 -79.8398 -25.6201 -109.56 -53.3896l-111.271 158.96c-7.41992 10.6094 0.160156 25.1797 13.1104 25.1797h111.149c10.0029 0 22.2959 -6.96191 27.4404 -15.54zM495.97 448c12.9502 0 20.5303 -14.5703 13.1104 -25.1797\nl-111.271 -158.95c-29.7197 27.7598 -67.5195 46.8203 -109.56 53.3799l69.1299 115.21c5.78027 9.63965 16.2002 15.54 27.4404 15.54h111.149zM256 288c97.2002 0 176 -78.7998 176 -176s-78.7998 -176 -176 -176s-176 78.7998 -176 176s78.7998 176 176 176z\nM348.52 130.74c6.82031 6.63965 3.05078 18.2295 -6.34961 19.5898l-52.4297 7.63965l-23.4307 47.5205c-2.10938 4.25 -6.21973 6.38965 -10.3291 6.38965c-4.09082 0 -8.1709 -2.11035 -10.2803 -6.38965l-23.4307 -47.5205l-52.4297 -7.63965\nc-9.39941 -1.36035 -13.1699 -12.9502 -6.34961 -19.5898l37.9297 -36.96l-8.96973 -52.2207c-1.60059 -9.34961 8.25 -16.54 16.6494 -12.0898l46.9004 24.6504l46.9102 -24.6504c8.38965 -4.41992 18.25 2.73047 16.6494 12.0898l-8.96973 52.2207z\" />\n    <glyph glyph-name=\"meh-blank\" unicode=\"&#xf5a4;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM168 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM328 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32\ns-32 -14.2998 -32 -32s14.2998 -32 32 -32z\" />\n    <glyph glyph-name=\"meh-rolling-eyes\" unicode=\"&#xf5a5;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM88 224c0 -35.2998 28.7002 -64 64 -64s64 28.7002 64 64c0 24.2998 -13.7002 45.2002 -33.5996 56c0.699219 -2.59961 1.59961 -5.2002 1.59961 -8\nc0 -17.7002 -14.2998 -32 -32 -32s-32 14.2998 -32 32c0 2.7998 0.900391 5.40039 1.59961 8c-19.8994 -10.7998 -33.5996 -31.7002 -33.5996 -56zM312 48c21.2002 0 21.2002 32 0 32h-128c-21.2002 0 -21.2002 -32 0 -32h128zM344 160c35.2998 0 64 28.7002 64 64\nc0 24.2998 -13.7002 45.2002 -33.5996 56c0.699219 -2.59961 1.59961 -5.2002 1.59961 -8c0 -17.7002 -14.2998 -32 -32 -32s-32 14.2998 -32 32c0 2.7998 0.900391 5.40039 1.59961 8c-19.8994 -10.7998 -33.5996 -31.7002 -33.5996 -56c0 -35.2998 28.7002 -64 64 -64z\n\" />\n    <glyph glyph-name=\"monument\" unicode=\"&#xf5a6;\" horiz-adv-x=\"384\" \nd=\"M368 0c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-352c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h352zM289.14 347.26l30.8604 -315.26h-256l30.8701 315.26c0.625 6.27344 4.75098 14.9834 9.20996 19.4404\nl76.5996 76.6094c6.25 6.25 16.3799 6.25 22.6299 0l76.6201 -76.6094c4.45898 -4.45703 8.58496 -13.167 9.20996 -19.4404zM240 140.8v38.4004c0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-70.4004c-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998v-38.4004\nc0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h70.4004c6.39941 0 12.7998 6.40039 12.7998 12.7998z\" />\n    <glyph glyph-name=\"mortar-pestle\" unicode=\"&#xf5a7;\" \nd=\"M501.54 387.09l-99.0801 -99.0898h-151.37l203.811 152.86c5.25293 3.93848 14.8457 7.13477 21.4121 7.13477c4.64941 0 11.7988 -1.68652 15.957 -3.76465c21.7803 -10.8906 26.4902 -39.9209 9.27051 -57.1406zM496 256c8.83984 0 16 -7.16016 16 -16v-32\nc0 -8.83984 -7.16016 -16 -16 -16h-16c0 -80.9805 -50.2002 -150.11 -121.13 -178.32c12.7695 -16.8701 21.7295 -36.7998 24.9502 -58.6895c1.45996 -9.91992 -6.04004 -18.9805 -16.0703 -18.9805h-223.5c-10.0303 0 -17.5303 9.06055 -16.0703 18.9805\nc3.23047 21.8896 12.1904 41.8193 24.9502 58.6895c-70.9297 28.21 -121.13 97.3398 -121.13 178.32h-16c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h480z\" />\n    <glyph glyph-name=\"paint-roller\" unicode=\"&#xf5aa;\" \nd=\"M416 320c0 -17.6699 -14.3301 -32 -32 -32h-352c-17.6699 0 -32 14.3301 -32 32v96c0 17.6699 14.3301 32 32 32h352c17.6699 0 32 -14.3301 32 -32v-96zM448 384c35.3496 0 64 -28.6504 64 -64v-64c0 -53.0195 -42.9805 -96 -96 -96h-160v-32\nc17.6699 0 32 -14.3301 32 -32v-128c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v128c0 17.6699 14.3301 32 32 32v32c0 35.3496 28.6504 64 64 64h160c17.6699 0 32 14.3301 32 32v128z\" />\n    <glyph glyph-name=\"passport\" unicode=\"&#xf5ab;\" horiz-adv-x=\"448\" \nd=\"M129.62 272c5.28027 31.2197 25.5898 57.1699 53.2998 70.4102c-7.66992 -19.0605 -12.7197 -43.3799 -14.21 -70.4102h-39.0898zM129.62 240h39.0898c1.49023 -27.0303 6.53027 -51.3496 14.21 -70.4102c-27.71 13.2402 -48.0098 39.1904 -53.2998 70.4102zM224 161.31\nc-7.69043 7.4502 -20.7695 34.4307 -23.4404 78.6904h46.8701c-2.66016 -44.2695 -15.7393 -71.2402 -23.4297 -78.6904zM200.57 272c2.66016 44.2598 15.7393 71.2402 23.4395 78.6904c7.69043 -7.4502 20.7705 -34.4307 23.4307 -78.6904h-46.8701zM265.08 169.59\nc7.67969 19.0605 12.7197 43.3799 14.21 70.4102h39.0898c-5.28027 -31.2197 -25.5898 -57.1699 -53.2998 -70.4102zM416 448c17.6699 0 32 -14.3301 32 -32v-448c0 -17.6699 -14.3301 -32 -32 -32h-352c-35.3496 0 -64 28.6504 -64 64v384c0 35.3496 28.6504 64 64 64h352z\nM336 32c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16h-224c-8.7998 0 -16 -7.2002 -16 -16s7.2002 -16 16 -16h224zM224 128c70.6904 0 128 57.3096 128 128s-57.3096 128 -128 128s-128 -57.3096 -128 -128s57.3096 -128 128 -128zM265.08 342.41\nc27.71 -13.2402 48.0195 -39.1904 53.2998 -70.4102h-39.0898c-1.49023 27.0303 -6.53027 51.3496 -14.21 70.4102z\" />\n    <glyph glyph-name=\"pen-fancy\" unicode=\"&#xf5ac;\" \nd=\"M79.1797 165.06l84.0703 33.0703l98.8799 -98.8799l-33.0703 -84.0703c-2.79102 -8.38086 -11.8584 -17.4482 -20.2393 -20.2393l-176.82 -58.9404l-4.67969 4.67969l92.8896 92.8906c2.55957 -0.660156 5.03027 -1.57031 7.7998 -1.57031c17.6699 0 32 14.3301 32 32\ns-14.3301 32 -32 32s-32 -14.3301 -32 -32c0 -2.76953 0.910156 -5.24023 1.57031 -7.7998l-92.8896 -92.8906l-4.69043 4.69043l58.9404 176.82c2.79297 8.37891 11.8604 17.4463 20.2393 20.2393zM369.25 419.68c74.4805 84.2607 199.15 -39.1602 114.23 -114.229\nl-199.49 -183.11l-97.8506 97.8506z\" />\n    <glyph glyph-name=\"pen-nib\" unicode=\"&#xf5ad;\" \nd=\"M136.6 309.21l151.4 42.79l128 -128l-42.79 -151.4c-5.08594 -17.9932 -23.6104 -37.3965 -41.3496 -43.3096l-279.86 -93.29l-14.6904 14.6904l150.11 150.109c6.25977 -2.99023 13.1797 -4.7998 20.5801 -4.7998c26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48\ns-48 -21.4902 -48 -48c0 -7.40039 1.80957 -14.3203 4.7998 -20.5801l-150.109 -150.11l-14.6904 14.6904l93.29 279.86c5.91309 17.7393 25.3164 36.2637 43.3096 41.3496zM497.94 373.83c18.75 -18.7598 18.75 -49.1602 0 -67.9102l-56.5508 -56.5498l-128.02 128.02\nl56.5498 56.5508c18.75 18.75 49.1602 18.75 67.9102 0z\" />\n    <glyph glyph-name=\"pencil-ruler\" unicode=\"&#xf5ae;\" \nd=\"M109.46 203.96l-100.17 100.18c-12.3896 12.3906 -12.3799 32.4707 0 44.8604l89.71 89.71c12.3896 12.3896 32.4697 12.3896 44.8604 0l33.6396 -33.6504l-61.6797 -61.6797c-3.10059 -3.08984 -3.10059 -8.11035 0 -11.21l11.21 -11.21\nc1.28027 -1.2832 3.79199 -2.3252 5.60449 -2.3252c1.81348 0 4.32422 1.04199 5.60547 2.3252l61.6797 61.6797l44.1201 -44.1201zM497.93 320.76l-46.0195 -46.0293l-113.2 113.199l46.0205 46.0107c18.7695 18.7598 49.1895 18.7598 67.9492 0l45.25 -45.25\nc18.75 -18.7607 18.7607 -49.1709 0 -67.9307zM316.08 365.29l113.2 -113.19l-296.92 -296.93l-107.45 -18.8398c-14.5 -2.5498 -27.1201 10.0703 -24.5898 24.5596l18.7598 107.44zM502.71 79.8604c12.3896 -12.3906 12.3896 -32.4707 0 -44.8604l-89.71 -89.7002\nc-12.3896 -12.3896 -32.4697 -12.3896 -44.8604 0l-100.21 100.2l134.58 134.56l44.1406 -44.1396l-61.6807 -61.6797c-3.08984 -3.08984 -3.08984 -8.11035 0 -11.21l11.21 -11.21c3.08984 -3.10059 8.11035 -3.10059 11.21 0l61.6807 61.6797z\" />\n    <glyph glyph-name=\"plane-arrival\" unicode=\"&#xf5af;\" horiz-adv-x=\"640\" \nd=\"M624 0c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-608c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h608zM44.8096 242.34c-6.5498 5.91016 -12.3896 14.3398 -12.5791 23.25l-0.230469 101.78\nc0.19043 10.8799 10.3799 18.7002 20.7197 15.8799l39.7305 -10.8301c5.00977 -1.36035 9.08984 -5.04004 11.0195 -9.92969l27.5898 -67.8799l102.2 -27.8408l-47.9199 164.211c-0.189453 11.1191 10.1504 19.3193 20.71 16.4395l65.0898 -17.7295\nc5.70996 -1.56055 10.1504 -6.10059 11.6602 -11.9102l100.36 -191.851l97.5098 -26.5596c26.4805 -7.20996 51.5498 -20.1797 70.8301 -40c21.6396 -22.25 27.2002 -40.46 23.3701 -54.96c-3.81055 -14.5 -17.5801 -27.4404 -47.25 -35.71\nc-26.4404 -7.36035 -54.5205 -5.85059 -81 1.35938l-287.601 78.3506c-7.94531 2.16895 -19.3564 8.41016 -25.4697 13.9297z\" />\n    <glyph glyph-name=\"plane-departure\" unicode=\"&#xf5b0;\" horiz-adv-x=\"640\" \nd=\"M624 0c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-608c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h608zM80.5498 106.73l-76.21 82.9697c-7.62012 8.95996 -4.87012 22.7803 5.57031 28.0801l40.1299 20.3701\nc2.0957 1.0625 5.7041 1.92578 8.05469 1.92578c2.33691 0 5.92773 -0.853516 8.01562 -1.90625l72.3496 -36.4697l103.21 52.3799l-156.22 98.0996c-8.08008 8.87988 -5.5 23.1201 5.16992 28.5303l65.75 33.3701c2.0957 1.06348 5.70508 1.92676 8.05566 1.92676\nc3 0 7.45508 -1.36035 9.94434 -3.03711l218.7 -82.0596l98.5098 49.9902c26.7402 13.5596 56.4297 21.4199 86.2803 19.4795c33.5098 -2.17969 51.04 -12.8799 58.25 -27.4502c7.22949 -14.5596 5.23926 -35.1699 -13.0703 -63.6494\nc-16.3096 -25.3701 -40.2803 -44.7402 -67.0205 -58.3105l-290.96 -147.649c-7.71094 -3.91895 -20.9893 -7.1084 -29.6396 -7.12012l-130.54 -0.180664c-9.22949 -0.00976562 -18.0498 3.87012 -24.3301 10.7109z\" />\n    <glyph glyph-name=\"prescription\" unicode=\"&#xf5b1;\" horiz-adv-x=\"384\" \nd=\"M301.26 96l78.0605 -78.0498c6.25 -6.25 6.25 -16.3799 0 -22.6299l-22.6299 -22.6299c-6.25 -6.25 -16.3809 -6.25 -22.6309 0l-78.0596 78.0596l-78.0498 -78.0703c-6.25 -6.25 -16.3799 -6.25 -22.6299 0l-22.6299 22.6299c-6.25 6.25 -6.25 16.3809 0 22.6309\nl78.0596 78.0596l-128 128h-18.75v-80c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v256c0 8.83984 7.16016 16 16 16h144c53.0195 0 96 -42.9805 96 -96c0 -48.8896 -36.6904 -88.7998 -83.96 -94.7803l83.96 -83.96l78.0596 78.0605\nc6.25 6.25 16.3809 6.25 22.6309 0l22.6299 -22.6299c6.25 -6.25 6.25 -16.3809 0 -22.6309zM64 352v-64h96c17.6396 0 32 14.3604 32 32s-14.3604 32 -32 32h-96z\" />\n    <glyph glyph-name=\"sad-cry\" unicode=\"&#xf5b3;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248c0 -90 -48.2002 -168.7 -120 -212.1v180.1c0 8.7998 -7.2002 16 -16 16s-16 -7.2002 -16 -16v-196.7c-29.5 -12.3994 -62 -19.2998 -96 -19.2998s-66.5 6.90039 -96 19.2998v196.7c0 8.7998 -7.2002 16 -16 16s-16 -7.2002 -16 -16\nv-180.1c-71.7998 43.3994 -120 122 -120 212.1c0 137 111 248 248 248zM182.5 223.5l9.7002 -8.5c2.5 -2.2998 7.89941 -4.7002 13.7002 -1.59961c4.39941 2.39941 6.89941 7.39941 6.09961 12.3994c-4 25.2002 -34.2002 42.1006 -59.9004 42.1006\nc-25.6992 0 -55.8994 -16.9004 -59.8994 -42.1006c-0.799805 -5 1.7002 -10 6.09961 -12.3994c4.40039 -2.40039 9.90039 -1.7002 13.7002 1.59961l9.5 8.5c14.7998 13.2002 46.2002 13.2002 61 0zM248 32c26.5 0 48 28.7002 48 64s-21.5 64 -48 64s-48 -28.7002 -48 -64\ns21.5 -64 48 -64zM397.8 213.5c4.40039 2.40039 6.7998 7.40039 6.2002 12.2998c-4 25.2002 -34.2002 42.1006 -59.9004 42.1006c-25.6992 0 -55.8994 -16.9004 -59.8994 -42.1006c-0.799805 -5 1.7002 -10 6.09961 -12.3994\nc4.40039 -2.40039 9.90039 -1.7002 13.7002 1.59961l9.59961 8.59961c14.8008 13.2002 46.2002 13.2002 61 0l9.5 -8.5c2.5 -2.2998 7.90039 -4.69922 13.7002 -1.59961z\" />\n    <glyph glyph-name=\"sad-tear\" unicode=\"&#xf5b4;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM328 272c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32s32 14.2998 32 32s-14.2998 32 -32 32zM152 32c26.5 0 48 21 48 47c0 20 -28.5 60.4004 -41.5996 77.7998\nc-3.2002 4.2998 -9.60059 4.2998 -12.8008 0c-13.0996 -17.3994 -41.5996 -57.7998 -41.5996 -77.7998c0 -26 21.5 -47 48 -47zM168 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM338.2 53.7998\nc13.2998 -16.0996 38.2998 4 24.5 20.4004c-28.4004 34.2002 -70.2998 53.7998 -114.7 53.7998c-21.2002 0 -21.2002 -32 0 -32c34.9004 0 67.7998 -15.4004 90.2002 -42.2002z\" />\n    <glyph glyph-name=\"shuttle-van\" unicode=\"&#xf5b6;\" horiz-adv-x=\"640\" \nd=\"M628.88 237.35c7.17969 -8.62988 11.1201 -19.5 11.1201 -30.7295v-110.62c0 -17.6699 -14.3301 -32 -32 -32h-32c0 -53.0195 -42.9805 -96 -96 -96s-96 42.9805 -96 96h-128c0 -53.0195 -42.9805 -96 -96 -96s-96 42.9805 -96 96h-32c-17.6699 0 -32 14.3301 -32 32v288\nc0 17.6699 14.3301 32 32 32h425.52c12.4082 -0.00195312 28.9258 -7.73926 36.8701 -17.2695zM64 256h96v96h-96v-96zM160 16c26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48s-48 -21.4902 -48 -48s21.4902 -48 48 -48zM320 256v96h-96v-96h96zM480 16\nc26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48s-48 -21.4902 -48 -48s21.4902 -48 48 -48zM384 256h146.02l-80 96h-66.0195v-96z\" />\n    <glyph glyph-name=\"signature\" unicode=\"&#xf5b7;\" horiz-adv-x=\"640\" \nd=\"M623.2 256c9.09961 0.599609 16.7998 -7.09961 16.5996 -16.2002v-32.0996c0 -8.5 -6.7002 -15.1006 -15.2002 -15.7998c-39.3994 -3.2002 -105.399 -51 -138.399 -65.8008c-34.2998 -15.3994 -66.7002 -30 -102.3 -30c-28.2002 0 -50.2002 8.5 -65.5 25.3008\nc-22.7002 24.8994 -22.8008 55.2998 -20.6006 83.7998c-56.5 -45.1006 -169 -153.601 -211.2 -195.8c-6.09961 -6.2002 -14.2998 -9.40039 -22.5996 -9.40039c-27 0 -36.5 27 -29.7002 43.9004l98.2002 245.6c8 19.9004 -14.2998 38.7998 -32.7002 27.0996l-58 -38.8994\nc-7.5 -4.7998 -17.3994 -2.60059 -22.0996 4.89941l-17.2002 27c-4.7002 7.5 -2.5 17.4004 4.90039 22.1006l54.8994 36.8994c76.5 48.7002 160.101 -26.8994 129.7 -102.8l-41.5 -103.7c105.2 101.2 144.4 124.5 169.5 126\nc54.4004 3.10059 43.7998 -68.0996 42.7002 -76.0996c-4.7002 -35.7002 -1.2998 -51.9004 21.2998 -51.9004c21.9004 0 47 11.3008 76.0996 24.4004c37.4004 16.7998 111.301 68 163.101 71.5z\" />\n    <glyph glyph-name=\"smile-beam\" unicode=\"&#xf5b8;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM112 224.6c-0.700195 -8.5 10.7998 -11.8994 15.0996 -4.5l9.5 17c7.7002 13.7002 19.2002 21.6006 31.5 21.6006c12.3008 0 23.8008 -7.90039 31.5 -21.6006l9.5 -17\nc4.10059 -7.39941 15.6006 -4.09961 14.9004 4.5c-3.2998 42.1006 -32.2002 71.4004 -56 71.4004s-52.7002 -29.2998 -56 -71.4004zM362.8 101.8c13.5 16.2002 -11 36.7002 -24.5996 20.5c-22.4004 -26.7998 -55.2002 -42.2002 -90.2002 -42.2002\ns-67.7998 15.3008 -90.2002 42.2002c-13.5996 16.2002 -38.0996 -4.2002 -24.5996 -20.5c28.5 -34.2002 70.2998 -53.7998 114.8 -53.7998s86.2998 19.5996 114.8 53.7998zM369 220.1c4.09961 -7.39941 15.7002 -4.09961 15.0996 4.5\nc-3.2998 42.1006 -32.1992 71.4004 -56 71.4004c-23.7998 0 -52.6992 -29.2998 -56 -71.4004c-0.699219 -8.5 10.8008 -11.7998 14.9004 -4.5l9.5 17c7.7002 13.7002 19.2002 21.6006 31.5 21.6006s23.7998 -7.90039 31.5 -21.6006z\" />\n    <glyph glyph-name=\"solar-panel\" unicode=\"&#xf5ba;\" horiz-adv-x=\"640\" \nd=\"M431.98 -0.00976562c8.84961 0.00976562 16.0293 -7.16992 16.0195 -16.0205l-0.0400391 -31.7295c-0.00976562 -8.82031 -7.16016 -15.9707 -15.9795 -15.9805l-223.961 -0.259766c-8.84961 -0.00976562 -16.0293 7.16992 -16.0195 16.0195l0.0498047 31.7305\nc0.00976562 8.83008 7.16016 15.9805 15.9805 15.9902l47.9795 0.0498047v32.21h128v-32.0596zM585.2 421.26c58.1094 -342.42 54.7803 -321.39 54.7598 -325.47c-0.0800781 -17.2305 -14.3604 -31.79 -32.5898 -31.79h-574.74c-18.3096 0 -32.6299 14.6797 -32.5996 32\nc0.00976562 3.91992 -3.35059 -17.1602 54.7598 325.26c2.62012 15.4307 16.21 26.7402 32.1396 26.7402h466.13c15.9307 0 29.5205 -11.3096 32.1406 -26.7402zM259.83 384l-9.77051 -96h139.87l-9.76953 96h-120.33zM184.66 128l11.4102 112h-105.971l-19.0098 -112\nh113.57zM200.95 288l9.76953 96h-96.1895l-16.29 -96h102.71zM233.77 128h172.45l-11.3994 112h-149.65zM429.27 384l9.77051 -96h102.71l-16.29 96h-96.1904zM455.33 128h113.58l-19.0098 112h-105.971z\" />\n    <glyph glyph-name=\"spa\" unicode=\"&#xf5bb;\" horiz-adv-x=\"576\" \nd=\"M568.25 256c4.41016 0.0195312 7.79004 -3.40039 7.75 -7.82031c-0.230469 -27.9199 -7.12988 -126.13 -88.7695 -199.3c-84.04 -81.8301 -167.23 -80.8799 -199.23 -80.8799s-115.21 -0.94043 -199.23 80.8799c-81.6299 73.1602 -88.5391 171.38 -88.7695 199.3\nc-0.0400391 4.41992 3.33984 7.83984 7.75 7.82031c29.04 -0.129883 135.01 -6.16016 213.84 -83c33.1201 -29.6299 53.3604 -63.2998 66.4102 -94.8604c13.0498 31.5605 33.29 65.2305 66.4102 94.8604c78.8301 76.8398 184.8 82.8701 213.84 83zM287.98 145.4\nc-10.7012 15.7168 -30.8789 38.7705 -45.04 51.46c-18.7207 18.25 -38.8506 32.6895 -59.2207 44.3896c16.4707 70.4404 51.75 132.93 96.7402 172.07c4.12012 3.58008 11.0303 3.58008 15.1396 0c45.0107 -39.1699 80.29 -101.721 96.7305 -172.221\nc-20.6797 -11.8799 -41.1699 -26.5693 -60.2598 -45.1797c-16.4902 -14.7402 -31.2705 -31.6699 -44.0898 -50.5195z\" />\n    <glyph glyph-name=\"splotch\" unicode=\"&#xf5bc;\" \nd=\"M472.29 252.11c48.54 -16.6201 53.8301 -73.8301 8.9502 -96.79l-62 -31.7402c-17.8301 -9.12988 -29.2803 -25.2002 -30.6299 -42.9902l-4.7002 -61.8594c-3.41016 -44.79 -65.1299 -66.7803 -104.45 -37.2207l-54.3203 40.8301\nc-15.6201 11.7305 -36.96 16.1201 -57.0693 11.7305l-69.96 -15.2803c-50.6504 -11.0596 -94.0801 32.5596 -73.4902 73.8096l28.4297 56.9805c8.18066 16.3799 6.44043 35.1699 -4.63965 50.2402l-38.54 52.4199c-27.9004 37.9502 6.97949 86.8994 59.0303 82.8301\nl71.8799 -5.62012c20.6602 -1.62012 40.9395 5.59961 54.2002 19.3096l46.1396 47.6699c33.4102 34.5107 98.3994 21.1504 109.979 -22.6201l15.9902 -60.4492c4.60059 -17.3799 18.8604 -31.7002 38.1406 -38.3008z\" />\n    <glyph glyph-name=\"spray-can\" unicode=\"&#xf5bd;\" \nd=\"M224 416v-96h-128v96c0 17.6699 14.3301 32 32 32h64c17.6699 0 32 -14.3301 32 -32zM480 320c17.6699 0 32 -14.3301 32 -32s-14.3301 -32 -32 -32s-32 14.3301 -32 32s14.3301 32 32 32zM224 288c53.0195 0 96 -42.9805 96 -96v-224c0 -17.6699 -14.3301 -32 -32 -32\nh-256c-17.6699 0 -32 14.3301 -32 32v224c0 53.0195 42.9805 96 96 96h128zM160 32c44.1797 0 80 35.8203 80 80s-35.8203 80 -80 80s-80 -35.8203 -80 -80s35.8203 -80 80 -80zM480 352c-17.6699 0 -32 14.3301 -32 32s14.3301 32 32 32s32 -14.3301 32 -32\ns-14.3301 -32 -32 -32zM384 320c17.6699 0 32 -14.3301 32 -32s-14.3301 -32 -32 -32s-32 14.3301 -32 32s14.3301 32 32 32zM288 416c17.6699 0 32 -14.3301 32 -32s-14.3301 -32 -32 -32s-32 14.3301 -32 32s14.3301 32 32 32zM384 416c17.6699 0 32 -14.3301 32 -32\ns-14.3301 -32 -32 -32s-32 14.3301 -32 32s14.3301 32 32 32zM480 224c17.6699 0 32 -14.3301 32 -32s-14.3301 -32 -32 -32s-32 14.3301 -32 32s14.3301 32 32 32z\" />\n    <glyph glyph-name=\"stamp\" unicode=\"&#xf5bf;\" \nd=\"M32 -64v64h448v-64h-448zM416 192c53.0195 0 96 -42.9805 96 -96v-32c0 -17.6699 -14.3301 -32 -32 -32h-448c-17.6699 0 -32 14.3301 -32 32v32c0 53.0195 42.9805 96 96 96h66.5596c16.2607 0 29.4404 13.1797 29.4404 29.4404v0.0693359\nc0 31.79 -9.98047 62.0605 -23.3096 90.9102c-5.57031 12.04 -8.69043 25.4199 -8.69043 39.5801c0 58.6699 52.6201 105.04 113.25 94.4902c38.79 -6.75 70.4902 -38.6699 77.2598 -77.4502c3.85059 -22.0303 0.0605469 -42.8096 -9.0498 -60.4199\nc-12.5801 -24.3105 -21.46 -50.3506 -21.46 -77.7197v-9.45996c0 -16.2607 13.1797 -29.4404 29.4404 -29.4404h66.5596z\" />\n    <glyph glyph-name=\"star-half-alt\" unicode=\"&#xf5c0;\" horiz-adv-x=\"536\" \nd=\"M508.55 276.49c26.25 -3.7998 36.7705 -36.1006 17.7305 -54.6006l-105.91 -102.979l25.0303 -145.49c3.55957 -20.79 -13.0605 -37.4004 -31.6602 -37.4004c-4.91016 0 -9.9707 1.16016 -14.8301 3.71094l-130.94 68.6992l-130.95 -68.6797\nc-4.86914 -2.58008 -9.93945 -3.75 -14.8691 -3.75c-18.5801 0 -35.1699 16.6699 -31.6104 37.4502l25.0596 145.479l-105.89 103c-19.0303 18.5 -8.50977 50.79 17.7402 54.5898l146.38 21.29l65.4297 132.381c5.90039 11.9092 17.29 17.8096 28.6904 17.8096\nc11.4697 0 22.9395 -5.98047 28.8193 -17.8096l65.4102 -132.391zM386.81 153.29l82.6504 80.3799l-114.229 16.6299l-25.0107 3.64062l-11.1797 22.6299l-51.0303 103.29l-0.0292969 -317.19l22.3799 -11.7402l102.13 -53.5898l-19.5205 113.45l-4.2793 24.8799z\" />\n    <glyph glyph-name=\"suitcase-rolling\" unicode=\"&#xf5c1;\" horiz-adv-x=\"384\" \nd=\"M336 288c26.5098 0 48 -21.4902 48 -48v-224c0 -26.5098 -21.4902 -48 -48 -48h-16v-16c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v16h-128v-16c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v16h-16\nc-26.5098 0 -48 21.4902 -48 48v224c0 26.5098 21.4902 48 48 48h288zM320 72v16c0 4.41992 -3.58008 8 -8 8h-240c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h240c4.41992 0 8 3.58008 8 8zM320 168v16c0 4.41992 -3.58008 8 -8 8h-240\nc-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h240c4.41992 0 8 3.58008 8 8zM144 400v-80h-48v80c0 26.5098 21.4902 48 48 48h96c26.5098 0 48 -21.4902 48 -48v-80h-48v80h-96z\" />\n    <glyph glyph-name=\"surprise\" unicode=\"&#xf5c2;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM136 240c0 -17.7002 14.2998 -32 32 -32s32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32zM248 32c35.2998 0 64 28.7002 64 64s-28.7002 64 -64 64\ns-64 -28.7002 -64 -64s28.7002 -64 64 -64zM328 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32z\" />\n    <glyph glyph-name=\"swatchbook\" unicode=\"&#xf5c3;\" horiz-adv-x=\"511\" \nd=\"M479.06 128c17.6406 0 31.9404 -14.3301 31.9404 -32v-128c0 -17.6699 -14.2998 -32 -31.9404 -32h-299.579c2.17969 1.91016 4.60938 3.41992 6.66992 5.49023l186.14 186.51h106.77zM434.56 280.9c12.4707 -12.4902 12.4707 -32.7607 0 -45.2607l-211.869 -212.279\nc0.199219 2.90918 0.869141 5.67969 0.869141 8.63965v263.76l75.5 75.6504c12.4805 12.5 32.7002 12.5 45.1709 0zM191.62 416v-384c0 -53.0195 -42.9004 -96 -95.8105 -96c-52.9092 0 -95.8096 42.9805 -95.8096 96v384c0 17.6699 14.2998 32 31.9404 32h127.739\nc17.6406 0 31.9404 -14.3301 31.9404 -32zM95.8096 8c13.2305 0 23.96 10.75 23.9502 24c0 13.2598 -10.7295 24 -23.9502 24c-13.2197 0 -23.9492 -10.7402 -23.9492 -24c0 -13.25 10.7197 -24 23.9492 -24zM127.75 192l0.00976562 64h-63.8799v-64h63.8701zM127.75 320\nl0.00976562 64h-63.8799v-64h63.8701z\" />\n    <glyph glyph-name=\"swimmer\" unicode=\"&#xf5c4;\" horiz-adv-x=\"640\" \nd=\"M189.61 137.42c-5.04004 4.65039 -10.3906 8.34961 -15.8604 11.5801l68.6299 98.04c7.36035 10.5 16.3398 19.5498 26.7197 26.9404l80.0205 57.1699c25.54 18.2598 57.8301 24.96 88.5596 18.3799l100.351 -21.5303c25.9297 -5.55957 42.4297 -31.0801 36.8799 -57\nc-5.56055 -25.9102 -31.0898 -42.4102 -57 -36.8799l-100.351 21.5303c-4.33984 0.90918 -8.97949 -0.0302734 -12.6191 -2.61035l-18 -12.8604l112.84 -80.5996c-17.5107 -1.04004 -34.5303 -8.4502 -49.3906 -22.1602\nc-3.5293 -3.25977 -15.2695 -9.41992 -34.3896 -9.41992s-30.8496 6.16016 -34.3896 9.41992c-16.0107 14.7705 -34.5 22.5801 -53.46 22.5801h-16.3008c-18.96 0 -37.4395 -7.80957 -53.46 -22.5801c-3.5293 -3.25977 -15.2695 -9.41992 -34.3896 -9.41992\ns-30.8496 6.16016 -34.3896 9.41992zM624 96c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-16c-38.6201 0 -72.7197 12.1797 -96 31.8398c-23.2803 -19.6494 -57.3799 -31.8398 -96 -31.8398s-72.7197 12.1797 -96 31.8398\nc-23.2803 -19.6494 -57.3799 -31.8398 -96 -31.8398s-72.7197 12.1797 -96 31.8398c-23.2803 -19.6494 -57.3799 -31.8398 -96 -31.8398h-16c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h16c26.04 0 45.7998 8.41992 56.0703 17.9004\nc8.89941 8.20996 19.6602 14.0996 31.7695 14.0996h16.2998c12.1104 0 22.8701 -5.88965 31.7705 -14.0996c10.29 -9.48047 30.0498 -17.9004 56.0898 -17.9004s45.7998 8.41992 56.0703 17.9004c8.89941 8.20996 19.6602 14.0996 31.7695 14.0996h16.2998\nc12.1104 0 22.8701 -5.88965 31.7705 -14.0996c10.29 -9.48047 30.0498 -17.9004 56.0898 -17.9004s45.7998 8.41992 56.0703 17.9004c8.89941 8.20996 19.6602 14.0996 31.7695 14.0996h16.2998c12.1104 0 22.8701 -5.88965 31.7705 -14.0996\nc10.29 -9.48047 30.0498 -17.9004 56.0898 -17.9004h16zM112 192c-44.1797 0 -80 35.8203 -80 80s35.8203 80 80 80s80 -35.8203 80 -80s-35.8203 -80 -80 -80z\" />\n    <glyph glyph-name=\"swimming-pool\" unicode=\"&#xf5c5;\" horiz-adv-x=\"640\" \nd=\"M624 32c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-16c-38.6201 0 -72.7197 12.1797 -96 31.8398c-23.2803 -19.6494 -57.3799 -31.8398 -96 -31.8398s-72.7197 12.1797 -96 31.8398c-23.2803 -19.6494 -57.3799 -31.8398 -96 -31.8398\ns-72.7197 12.1797 -96 31.8398c-23.2803 -19.6494 -57.3799 -31.8398 -96 -31.8398h-16c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h16c26.04 0 45.7998 8.41992 56.0703 17.9004c8.89941 8.20996 19.6602 14.0996 31.7695 14.0996h16.2998\nc12.1104 0 22.8701 -5.88965 31.7705 -14.0996c10.29 -9.48047 30.0498 -17.9004 56.0898 -17.9004s45.7998 8.41992 56.0703 17.9004c8.89941 8.20996 19.6602 14.0996 31.7695 14.0996h16.2998c12.1104 0 22.8701 -5.88965 31.7705 -14.0996\nc10.29 -9.48047 30.0498 -17.9004 56.0898 -17.9004s45.7998 8.41992 56.0703 17.9004c8.89941 8.20996 19.6602 14.0996 31.7695 14.0996h16.2998c12.1104 0 22.8701 -5.88965 31.7705 -14.0996c10.29 -9.48047 30.0498 -17.9004 56.0898 -17.9004h16zM224 64\nc-19.1201 0 -30.8604 6.16016 -34.3896 9.42969c-9.16992 8.4502 -19.2002 14.3398 -29.6104 18.0703v228.5c0 52.9404 43.0596 96 96 96s96 -43.0596 96 -96v-16c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v16c0 17.6396 -14.3604 32 -32 32\ns-32 -14.3604 -32 -32v-96h192v96c0 52.9404 43.0596 96 96 96s96 -43.0596 96 -96v-16c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v16c0 17.6396 -14.3604 32 -32 32s-32 -14.3604 -32 -32v-228.51\nc-10.4102 -3.73047 -20.4404 -9.61035 -29.6104 -18.0703c-3.5293 -3.25977 -15.2695 -9.41992 -34.3896 -9.41992v96h-192v-96z\" />\n    <glyph glyph-name=\"tint-slash\" unicode=\"&#xf5c7;\" horiz-adv-x=\"640\" \nd=\"M633.82 -10.0996c6.97949 -5.43066 8.22949 -15.4805 2.81934 -22.4502l-19.6396 -25.2705c-5.42969 -6.97949 -15.4805 -8.23926 -22.46 -2.80957l-588.36 454.729c-6.97949 5.43066 -8.22949 15.4805 -2.80957 22.4502l19.6396 25.2705\nc5.41992 6.97949 15.4805 8.22949 22.46 2.80957l186.82 -144.399c21.6201 33.7197 42.9697 73.3398 58.4902 125.68c9 30.1201 50.5 28.7803 58.4395 0c46.9902 -158.48 146.78 -200.061 146.78 -311.82c0 -5.70996 -0.509766 -11.2998 -1.03027 -16.8701zM144 114.09\nc0 29.7803 7.30957 54.6299 18.7197 78.1299l273.681 -211.52c-31.0303 -27.7402 -71.6904 -44.7002 -116.4 -44.7002c-97.2803 0 -176 79.6504 -176 178.09z\" />\n    <glyph glyph-name=\"tired\" unicode=\"&#xf5c8;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM281.8 250.3c-7.7002 -4.7002 -7.7002 -15.8994 0 -20.5996l80 -48c11.5 -6.7998 24.1006 7.59961 15.4004 18l-33.6006 40.2998l33.6006 40.2998\nc8.59961 10.2998 -3.7998 24.9004 -15.4004 18zM118.8 280.3l33.6006 -40.2998l-33.6006 -40.2998c-8.59961 -10.4004 3.90039 -24.7998 15.4004 -18l80 48c7.7998 4.7002 7.7998 15.8994 0 20.5996l-80 48c-11.6006 6.90039 -24 -7.7002 -15.4004 -18zM248 160\nc-51.9004 0 -115.3 -43.7998 -123.2 -106.7c-1.7002 -13.3994 7.90039 -24.5996 17.7002 -20.3994c25.9004 11.0996 64.4004 17.3994 105.5 17.3994s79.5996 -6.2998 105.5 -17.3994c9.7002 -4.2002 19.4004 6.7998 17.7002 20.3994\nc-7.90039 62.9004 -71.2998 106.7 -123.2 106.7z\" />\n    <glyph glyph-name=\"tooth\" unicode=\"&#xf5c9;\" horiz-adv-x=\"448\" \nd=\"M443.98 351.75c10.1299 -41.6299 0.419922 -80.8203 -21.5303 -110.43c-23.3604 -31.5703 -32.6807 -68.6504 -36.29 -107.351c-4.41016 -47.1602 -10.3301 -94.1699 -20.9404 -140.319l-7.7998 -33.9502c-3.18945 -13.8701 -15.4902 -23.7002 -29.6699 -23.7002\nc-13.9697 0 -26.1504 9.5498 -29.54 23.1602l-34.4697 138.42c-4.56055 18.3096 -20.96 31.1602 -39.7598 31.1602c-18.8008 0 -35.2002 -12.8398 -39.7607 -31.1602l-34.4697 -138.42c-3.38965 -13.6104 -15.5703 -23.1602 -29.54 -23.1602\nc-14.1797 0 -26.4795 9.83008 -29.6699 23.7002l-7.7998 33.9502c-10.6104 46.1592 -16.54 93.1592 -20.9404 140.319c-3.60938 38.6904 -12.9297 75.7803 -36.29 107.351c-21.9199 29.6201 -31.6299 68.8096 -21.5 110.43c11.0098 45.2197 47.1104 82.0498 92.0098 93.7197\nc23.4307 6.08984 46.1104 0.540039 66.8105 -10.3096l100.51 -64.6201c7.83984 -5.05957 17.6504 -2.15039 22.1104 4.7998c4.78027 7.44043 2.62012 17.3398 -4.7998 22.1104l-28.3203 18.21c3.54004 1.75 7.25 3.08984 10.5 5.47949\nc26.1396 19.2305 56.9502 32.6904 89.1396 24.3301c44.9004 -11.6602 81 -48.5 92.0107 -93.7197z\" />\n    <glyph glyph-name=\"umbrella-beach\" unicode=\"&#xf5ca;\" horiz-adv-x=\"640\" \nd=\"M115.38 311.1c-10.0801 3.66992 -14.1104 16.3203 -7.41992 24.7207c59.75 74.8398 152.65 116.689 248.53 111.8c-52.79 -29.4102 -103.811 -92.1602 -139 -173.7zM247.63 262.94c44.4902 101.979 114.74 171.14 172.76 171.149c7.95996 0 15.6904 -1.2998 23.0908 -4\nc61.3291 -22.3203 78.3896 -132.6 42.6299 -253.979zM521.48 387.5c76.5293 -57.9199 120.76 -149.67 118.439 -245.36c-0.259766 -10.7393 -11.4795 -17.8398 -21.5703 -14.1699l-102.619 37.3604c17.5293 58.75 24.6895 117.09 18.9492 166.979\nc-2.37012 20.5908 -6.97949 38.8906 -13.1992 55.1904zM560 0.0195312c8.83984 0 16 -7.15918 16 -16v-32.0098c0 -8.83984 -7.16016 -16.0098 -16 -16.0098h-544c-8.83984 0 -16 7.16992 -16 16.0098v32.0098c0 8.85059 7.16016 16.0107 16 16.0107h236.96l72.9004 200.37\nl60.1396 -21.9004l-64.9404 -178.48h238.94z\" />\n    <glyph glyph-name=\"vector-square\" unicode=\"&#xf5cb;\" \nd=\"M512 320c0 -17.6699 -14.3301 -32 -32 -32v-192c17.6699 0 32 -14.3301 32 -32v-96c0 -17.6699 -14.3301 -32 -32 -32h-96c-17.6699 0 -32 14.3301 -32 32h-192c0 -17.6699 -14.3301 -32 -32 -32h-96c-17.6699 0 -32 14.3301 -32 32v96c0 17.6699 14.3301 32 32 32v192\nc-17.6699 0 -32 14.3301 -32 32v96c0 17.6699 14.3301 32 32 32h96c17.6699 0 32 -14.3301 32 -32h192c0 17.6699 14.3301 32 32 32h96c17.6699 0 32 -14.3301 32 -32v-96zM416 384v-32h32v32h-32zM64 384v-32h32v32h-32zM96 0v32h-32v-32h32zM448 0v32h-32v-32h32zM416 96\nv192h-32c-17.6699 0 -32 14.3301 -32 32v32h-192v-32c0 -17.6699 -14.3301 -32 -32 -32h-32v-192h32c17.6699 0 32 -14.3301 32 -32v-32h192v32c0 17.6699 14.3301 32 32 32h32z\" />\n    <glyph glyph-name=\"weight-hanging\" unicode=\"&#xf5cd;\" \nd=\"M510.28 2.13965c8.33008 -33.3096 -14.6602 -66.1396 -46.2998 -66.1396h-415.95c-31.6504 0 -54.6406 32.8301 -46.3105 66.1396l73.0498 292.13c3.79004 15.1807 16.4404 25.7207 30.8701 25.7207h60.25c-3.58008 10.0498 -5.87988 20.7197 -5.87988 32\nc0 53.0195 42.9805 96 96 96c53.0205 0 96 -42.9805 96 -96c0 -11.2803 -2.30957 -21.9502 -5.87988 -32h60.25c14.4297 0 27.0703 -10.5303 30.8701 -25.7207zM256 320c17.6396 0 32 14.3604 32 32s-14.3604 32 -32 32s-32 -14.3604 -32 -32s14.3604 -32 32 -32z\" />\n    <glyph glyph-name=\"wine-glass-alt\" unicode=\"&#xf5ce;\" horiz-adv-x=\"288\" \nd=\"M216 -16c22.0898 0 40 -17.9102 40 -40c0 -4.41992 -3.58008 -8 -8 -8h-208c-4.41992 0 -8 3.58008 -8 8c0 22.0898 17.9102 40 40 40h40v117.18c-68.4697 15.8906 -118.05 79.9102 -111.4 154.16l15.96 178.11c0.730469 8.24023 7.55078 14.5498 15.7002 14.5498h223.48\nc8.16016 0 14.9697 -6.30957 15.71 -14.5498l15.9502 -178.101c6.64941 -74.25 -42.9307 -138.27 -111.4 -154.159v-117.19h40zM61.75 400l-7.16992 -80h178.84l-7.16992 80h-164.5z\" />\n    <glyph glyph-name=\"air-freshener\" unicode=\"&#xf5d0;\" horiz-adv-x=\"384\" \nd=\"M378.94 126.59c11.75 -12.1494 1.71973 -30.5898 -16.6406 -30.5898h-138.3v-32h112c8.83984 0 16 -7.16016 16 -16v-96c0 -8.83984 -7.16016 -16 -16 -16h-288c-8.83984 0 -16 7.16016 -16 16v96c0 8.83984 7.16016 16 16 16h112v32h-138.3\nc-18.3604 0 -28.3906 18.4404 -16.6406 30.5898l94.2402 97.4102h-49.2197c-15.2998 0 -23.6602 16.5996 -13.8604 27.5303l113.33 126.51c-3.42969 6.61035 -5.5498 14 -5.5498 21.96c0 26.5098 21.4902 48 48 48s48 -21.4902 48 -48\nc0 -7.95996 -2.12012 -15.3496 -5.5498 -21.96l113.33 -126.51c9.7998 -10.9307 1.43945 -27.5303 -13.8604 -27.5303h-49.2197zM192 416.02c-8.84961 0 -16.0195 -7.16992 -16.0195 -16.0195c0 -8.83984 7.16992 -16.0195 16.0195 -16.0195\ns16.0195 7.17969 16.0195 16.0195c0 8.84961 -7.16992 16.0195 -16.0195 16.0195zM304 16h-224v-32h224v32z\" />\n    <glyph glyph-name=\"apple-alt\" unicode=\"&#xf5d1;\" horiz-adv-x=\"448\" \nd=\"M350.85 319c25.9707 -4.66992 47.2705 -18.6699 63.9199 -42c14.6504 -20.6699 24.6406 -46.6699 29.9609 -78c4.66992 -28.6699 4.31934 -57.3301 -1 -86c-7.99023 -47.3301 -23.9707 -87 -47.9404 -119c-28.6396 -38.6699 -64.5898 -58 -107.87 -58\nc-10.6602 0 -22.2998 3.33008 -34.96 10c-8.66016 5.33008 -18.3096 8 -28.9697 8s-20.2998 -2.66992 -28.9707 -8c-12.6592 -6.66992 -24.2998 -10 -34.96 -10c-43.2793 0 -79.2295 19.3301 -107.869 58c-23.9707 32 -39.9502 71.6699 -47.9404 119\nc-5.32031 28.6699 -5.66992 57.3301 -1 86c5.32031 31.3301 15.3096 57.3301 29.96 78c16.6504 23.3301 37.9502 37.3301 63.9199 42c15.9805 2.66992 37.9502 0.330078 65.9199 -7c23.9697 -6.66992 44.2803 -14.6699 60.9307 -24\nc16.6494 9.33008 36.96 17.3301 60.9297 24c27.9795 7.33008 49.96 9.66992 65.9395 7zM295.91 360c-9.32031 -8.66992 -21.6504 -15 -36.96 -19c-10.6602 -3.33008 -22.2998 -5 -34.96 -5l-14.9805 1c-1.33008 9.33008 -1.33008 20 0 32\nc2.66992 24 10.3203 42.3301 22.9707 55c9.31934 8.66992 21.6494 15 36.96 19c10.6592 3.33008 22.2998 5 34.96 5l14.9795 -1l1 -15c0 -12.6699 -1.66992 -24.3301 -4.99023 -35c-3.98926 -15.3301 -10.3096 -27.6699 -18.9795 -37z\" />\n    <glyph glyph-name=\"atom\" unicode=\"&#xf5d2;\" horiz-adv-x=\"448\" \nd=\"M413.03 192c40.1396 -54.9102 41.5195 -98.5996 25.1396 -128c-29.2197 -52.3398 -101.689 -43.5801 -116.33 -41.8799c-21.4697 -51.2197 -54.2002 -86.1201 -97.8398 -86.1201s-76.3701 34.9004 -97.8398 86.1201c-14.6504 -1.7002 -87.1201 -10.46 -116.33 41.8799\nc-16.3701 29.3799 -14.9902 73.1104 25.1396 128c-40.1396 54.9102 -41.5195 98.5996 -25.1396 128c10.9004 19.5195 40.5996 50.6602 116.33 41.8799c21.4795 51.2305 54.2002 86.1201 97.8398 86.1201s76.3604 -34.8896 97.8398 -86.1201\nc75.79 8.85059 105.42 -22.3604 116.33 -41.8799c16.3701 -29.3799 14.9902 -73.1104 -25.1396 -128zM63.3799 96c3.69043 -6.59961 19.0205 -11.8604 43.5801 -10.9697c-2.75977 13 -5.0498 26.3701 -6.75977 40.0801c-7.66992 6.29004 -14.9102 12.6494 -21.8701 19.1797\nc-15.1396 -23.4902 -18.9805 -41.0801 -14.9502 -48.29zM100.2 258.88c1.39355 11.1816 4.43555 29.2002 6.79004 40.2197c-1.82031 0.0703125 -3.98047 0.370117 -5.69043 0.370117c-21.5303 0 -34.5098 -5.33008 -37.9199 -11.4697\nc-4.01953 -7.20996 -0.179688 -24.7998 14.9502 -48.2998c6.96973 6.53027 14.21 12.8896 21.8701 19.1797zM224 384c-9.46973 0 -22.2002 -13.5195 -33.8604 -37.2598c11.1904 -3.7002 22.4404 -8 33.8604 -12.8604c11.4199 4.86035 22.6699 9.16016 33.8604 12.8604\nc-11.6602 23.7402 -24.3906 37.2598 -33.8604 37.2598zM224 0c9.46973 0 22.2002 13.5195 33.8604 37.2598c-11.1904 3.7002 -22.4404 8 -33.8604 12.8604c-11.4199 -4.86035 -22.6699 -9.16016 -33.8604 -12.8604c11.6602 -23.7402 24.3906 -37.2598 33.8604 -37.2598z\nM286.5 157.33c1.99023 27.7998 1.98047 41.5498 0 69.3301c-26.6396 19.04 -46.1104 29.3096 -62.5 37.4795c-16.3701 -8.15918 -35.8301 -18.4297 -62.5 -37.4795c-1.99023 -27.79 -1.99023 -41.54 0 -69.3301c26.7002 -19.0703 46.1504 -29.3398 62.5 -37.4805\nc16.3604 8.15039 35.7998 18.4004 62.5 37.4805zM384.62 96c4.01953 7.20996 0.179688 24.7998 -14.9502 48.29c-6.96973 -6.53027 -14.21 -12.8896 -21.8701 -19.1797c-1.70996 -13.6904 -4 -27.0605 -6.75977 -40.0605c24.5801 -0.870117 39.9102 4.33008 43.5801 10.9502\nzM369.67 239.71c15.1299 23.4902 18.9697 41.0801 14.9502 48.2998c-3.41016 6.12988 -16.4004 11.4707 -37.9199 11.4707c-1.71973 0 -3.87012 -0.300781 -5.69043 -0.370117c2.35254 -11.0205 5.39453 -29.0391 6.79004 -40.2207\nc7.66992 -6.29004 14.9102 -12.6494 21.8701 -19.1797zM224 224c17.6699 0 32 -14.3301 32 -32s-14.3301 -32 -32 -32s-32 14.3301 -32 32s14.3301 32 32 32z\" />\n    <glyph glyph-name=\"bone\" unicode=\"&#xf5d7;\" horiz-adv-x=\"640\" \nd=\"M598.88 203.44c-9.42969 -4.70996 -9.42969 -18.1709 -0.00976562 -22.8809c25.2002 -12.5996 41.1201 -38.3496 41.1201 -66.5293v-7.64062c0 -41.0898 -33.2998 -74.3896 -74.3799 -74.3896c-32.0107 0 -60.4404 20.4902 -70.5703 50.8604\nc-6.53027 19.5996 -10.7305 45.1396 -38.1104 45.1396h-273.87c-26.5098 0 -30.4297 -22.1104 -38.1094 -45.1396c-10.1299 -30.3701 -38.5498 -50.8604 -70.5703 -50.8604c-41.0801 0 -74.3799 33.2998 -74.3799 74.3896v7.64062\nc0 28.1699 15.9199 53.9297 41.1201 66.5293c9.42969 4.70996 9.42969 18.1709 0 22.8809c-25.2002 12.5996 -41.1201 38.3594 -41.1201 66.5293v7.64062c0 41.0898 33.2998 74.3896 74.3896 74.3896c32.0107 0 60.4404 -20.4902 70.5605 -50.8604\nc6.53027 -19.5996 10.7295 -45.1396 38.1094 -45.1396h273.87c26.5107 0 30.4307 22.1104 38.1104 45.1396c10.1299 30.3701 38.5498 50.8604 70.5703 50.8604c41.0898 0 74.3896 -33.2998 74.3896 -74.3896v-7.64062c0 -28.1699 -15.9199 -53.9297 -41.1201 -66.5293z\" />\n    <glyph glyph-name=\"book-reader\" unicode=\"&#xf5da;\" \nd=\"M352 352c0 -53.0195 -42.9805 -96 -96 -96s-96 42.9805 -96 96s42.9805 96 96 96s96 -42.9805 96 -96zM233.59 206.9c4.10059 -2.51074 6.41016 -6.79004 6.41992 -11.46v-245.99c0 -10.1602 -11.1094 -16.5898 -20.4795 -11.8701\nc-61.0498 30.75 -149.38 39.1396 -193.04 41.4297c-14.9004 0.770508 -26.4902 12.7207 -26.4902 27.0498v222.801c0 15.6299 13.5498 28.0098 29.7998 27.0898c48.3604 -2.75 144.46 -12.7305 203.79 -49.0498zM482.2 255.95\nc16.25 0.919922 29.7998 -11.46 29.8096 -27.0898v-222.82c0 -14.3301 -11.5898 -26.2803 -26.4902 -27.0596c-43.6494 -2.29004 -131.93 -10.6807 -192.97 -41.4004c-9.39941 -4.73047 -20.54 1.70996 -20.54 11.9004v245.789c0 4.6709 2.31055 9.12012 6.41016 11.6309\nc59.3203 36.3193 155.43 46.3096 203.78 49.0498z\" />\n    <glyph glyph-name=\"brain\" unicode=\"&#xf5dc;\" horiz-adv-x=\"576\" \nd=\"M208 448c35.2998 0 64 -28.7002 64 -64v-376c0 -39.7998 -32.2002 -72 -72 -72c-31.7998 0 -58.4004 20.7002 -68 49.2002c-3.90039 -0.700195 -7.90039 -1.2002 -12 -1.2002c-39.7998 0 -72 32.2002 -72 72c0 4.7998 0.5 9.5 1.40039 14.0996\nc-29 12 -49.4004 40.6006 -49.4004 73.9004c0 29.7002 16.2998 55.2998 40.2998 69.0996c-5.09961 10.6006 -8.2998 22.3008 -8.2998 34.9004c0 33.4004 20.5 62 49.7002 74c-1.10059 4.5 -1.7002 9.2002 -1.7002 14c0 35.2998 28.7002 64 64 64\nc0.799805 0 1.40039 -0.200195 2.2002 -0.200195c7.09961 27.7002 31.8994 48.2002 61.7998 48.2002zM576 144c0 -33.2998 -20.4004 -61.9004 -49.4004 -73.9004c0.900391 -4.59961 1.40039 -9.2998 1.40039 -14.0996c0 -39.7998 -32.2002 -72 -72 -72\nc-4.09961 0 -8.09961 0.5 -12 1.2002c-9.59961 -28.5 -36.2002 -49.2002 -68 -49.2002c-39.7998 0 -72 32.2002 -72 72v376c0 35.4004 28.7002 64 64 64c29.9004 0 54.7002 -20.5 61.7998 -48.2002c0.700195 0 1.40039 0.200195 2.2002 0.200195\nc35.2998 0 64 -28.7002 64 -64c0 -4.7998 -0.700195 -9.5 -1.7002 -14c29.2002 -12 49.7002 -40.5996 49.7002 -74c0 -12.5996 -3.09961 -24.2998 -8.2998 -34.9004c24 -13.7998 40.2998 -39.3994 40.2998 -69.0996z\" />\n    <glyph glyph-name=\"car-alt\" unicode=\"&#xf5de;\" horiz-adv-x=\"480\" \nd=\"M438.66 235.67c24.1201 -9.16992 41.3398 -32.3301 41.3398 -59.6699v-48c0 -16.1299 -6.16016 -30.6797 -16 -41.9297v-54.0703c0 -17.6699 -14.3301 -32 -32 -32h-32c-17.6699 0 -32 14.3301 -32 32v32h-256v-32c0 -17.6699 -14.3301 -32 -32 -32h-32\nc-17.6699 0 -32 14.3301 -32 32v54.0703c-9.83984 11.2598 -16 25.8096 -16 41.9297v48c0 27.3398 17.2197 50.5 41.3398 59.6699l11.2402 28.0996l19.9297 49.8301c17.1104 42.7705 57.9307 70.4004 103.99 70.4004h127c46.0703 0 86.8799 -27.6299 103.99 -70.4004\nl19.9297 -49.8301zM131.93 289.83l-19.9297 -49.8301h256l-19.9297 49.8301c-7.29004 18.2197 -24.9404 30.1699 -44.5703 30.1699h-127c-19.6299 0 -37.2803 -11.9502 -44.5703 -30.1699zM80 128.2c19.2002 0 48 -3.19043 48 15.9502\nc0 19.1396 -28.7998 47.8496 -48 47.8496s-32 -12.7598 -32 -31.9004c0 -19.1396 12.7998 -31.8994 32 -31.8994zM400 128.2c19.2002 0 32 12.7598 32 31.8994c0 19.1406 -12.7998 31.9004 -32 31.9004s-48 -28.71 -48 -47.8496c0 -19.1406 28.7998 -15.9502 48 -15.9502z\n\" />\n    <glyph glyph-name=\"car-battery\" unicode=\"&#xf5df;\" \nd=\"M480 320c17.6699 0 32 -14.3301 32 -32v-256c0 -17.6699 -14.3301 -32 -32 -32h-448c-17.6699 0 -32 14.3301 -32 32v256c0 17.6699 14.3301 32 32 32h32v48c0 8.83984 7.16016 16 16 16h96c8.83984 0 16 -7.16016 16 -16v-48h128v48c0 8.83984 7.16016 16 16 16h96\nc8.83984 0 16 -7.16016 16 -16v-48h32zM192 184v16c0 4.41992 -3.58008 8 -8 8h-112c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h112c4.41992 0 8 3.58008 8 8zM448 184v16c0 4.41992 -3.58008 8 -8 8h-40v40c0 4.41992 -3.58008 8 -8 8h-16\nc-4.41992 0 -8 -3.58008 -8 -8v-40h-40c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h40v-40c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v40h40c4.41992 0 8 3.58008 8 8z\" />\n    <glyph glyph-name=\"car-crash\" unicode=\"&#xf5e1;\" horiz-adv-x=\"640\" \nd=\"M143.25 227.19l-12.4199 -46.3701c-3.00977 -11.25 -3.62988 -22.8906 -2.41016 -34.3906l-35.2002 -28.9795c-6.56934 -5.41016 -16.3096 0.429688 -14.6201 8.76953l15.4404 76.6807c1.05957 5.25977 -2.66016 10.2793 -8 10.79l-77.8604 7.5498\nc-8.46973 0.819336 -11.2295 11.8301 -4.13965 16.54l65.1504 43.2998c4.45996 2.96973 5.37988 9.15039 1.97949 13.29l-49.71 60.4102c-5.41016 6.56934 0.429688 16.2998 8.78027 14.6201l76.6797 -15.4404c5.25977 -1.05957 10.2803 2.66016 10.7998 8l7.5498 77.8604\nc0.820312 8.47949 11.8301 11.2295 16.5508 4.13965l43.2998 -65.1396c2.96973 -4.45996 9.14941 -5.37988 13.29 -1.98047l60.3994 49.71c6.57031 5.41016 16.3008 -0.429688 14.6201 -8.76953l-11.3301 -56.1602c-2.70996 -3.0498 -5.42969 -6.08984 -7.90918 -9.40039\nl-32.1504 -42.9697l-10.71 -14.3203c-32.7305 -8.75977 -59.1797 -34.5293 -68.0801 -67.7393zM637.82 94.6797l-12.4199 -46.3594c-3.13086 -11.6807 -9.38086 -21.6104 -17.5508 -29.3604c-2.25488 -2.13574 -6.17969 -5.27148 -8.75977 -7l-13.9902 -52.2295\nc-1.13965 -4.27051 -3.09961 -8.10059 -5.64941 -11.3809c-7.66992 -9.83984 -20.7402 -14.6797 -33.54 -11.25l-30.9102 8.28027c-17.0703 4.57031 -27.2002 22.1201 -22.6299 39.1904l8.28027 30.9102l-247.28 66.2598l-8.28027 -30.9102\nc-4.57031 -17.0703 -22.1201 -27.2002 -39.1895 -22.6299l-30.9102 8.28027c-12.7998 3.42969 -21.7002 14.1592 -23.4199 26.5098c-0.570312 4.12012 -0.350586 8.41992 0.790039 12.6797l13.9893 52.2305c-1.37207 2.78809 -3.2041 7.46973 -4.08984 10.4492\nc-3.2002 10.79 -3.64941 22.5205 -0.519531 34.2002l12.4199 46.3701c5.30957 19.7998 19.3594 34.8301 36.8896 42.21c4.9082 2.06836 13.1914 4.18262 18.4902 4.71973l18.1299 24.2305l32.1504 42.9697c3.44922 4.61035 7.18945 8.90039 11.1992 12.8398\nc8 7.89062 17.0303 14.4404 26.7402 19.5107c4.86035 2.54004 9.89062 4.70996 15.0498 6.48926c10.3301 3.58008 21.1904 5.62988 32.2402 6.04004s22.3105 -0.819336 33.4307 -3.7998l122.68 -32.8701c11.1201 -2.97949 21.4795 -7.54004 30.8496 -13.4297\nc11.7236 -7.36133 27.2646 -22.8174 34.6904 -34.5c8.81934 -13.8799 14.6396 -29.8398 16.6797 -46.9902l6.36035 -53.29l3.58984 -30.0498c8.79297 -6.34863 18.9805 -19.7568 22.7402 -29.9297c4.38965 -11.8799 5.29004 -25.1904 1.75 -38.3906zM255.58 213.66\nc-18.5498 4.96973 -34.21 -4.04004 -39.1699 -22.5303s4.10938 -34.1201 22.6494 -39.0898c18.5508 -4.96973 45.54 -15.5098 50.4902 2.97949c4.95996 18.4902 -15.4297 53.6709 -33.9697 58.6406zM546.19 185.49l-6.36035 53.29\nc-0.580078 4.87012 -1.88965 9.5293 -3.82031 13.8594c-5.7998 12.9902 -17.2002 23.0107 -31.4199 26.8203l-122.68 32.8701c-3.36914 0.902344 -8.93457 1.63477 -12.4229 1.63477c-13.2676 0 -30.4883 -8.62207 -38.4375 -19.2451l-32.1494 -42.9697l172 -46.0801z\nM564.68 130.84c-18.5498 4.96973 -53.7998 -15.3096 -58.75 -33.79c-4.94922 -18.4902 23.6904 -22.8594 42.2402 -27.8301c18.5498 -4.96973 34.21 4.04004 39.1699 22.5303c4.9502 18.4805 -4.10938 34.1201 -22.6602 39.0898z\" />\n    <glyph glyph-name=\"car-side\" unicode=\"&#xf5e4;\" horiz-adv-x=\"640\" \nd=\"M544 256c53.0195 0 96 -42.9805 96 -96v-80c0 -8.83984 -7.16016 -16 -16 -16h-48c0 -53.0195 -42.9805 -96 -96 -96s-96 42.9805 -96 96h-128c0 -53.0195 -42.9805 -96 -96 -96s-96 42.9805 -96 96h-48c-8.83984 0 -16 7.16016 -16 16v112\nc0 29.79 20.4404 54.5996 48 61.7402l47.9102 122.029c9.71973 24.3008 33.25 40.2305 59.4199 40.2305h213.91c16.9795 -0.00195312 39.3701 -10.7627 49.9795 -24.0195l108.78 -135.98h16zM160 16c26.4697 0 48 21.5303 48 48s-21.5303 48 -48 48s-48 -21.5303 -48 -48\ns21.5303 -48 48 -48zM232 256v96h-76.6699l-38.4004 -96h115.07zM280 256h166.04l-76.7998 96h-89.2402v-96zM480 16c26.4697 0 48 21.5303 48 48s-21.5303 48 -48 48s-48 -21.5303 -48 -48s21.5303 -48 48 -48z\" />\n    <glyph glyph-name=\"charging-station\" unicode=\"&#xf5e7;\" horiz-adv-x=\"576\" \nd=\"M336 0c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-320c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h320zM544 320h16c8.83984 0 16 -7.16016 16 -16v-32c0 -35.7598 -23.6201 -65.6904 -56 -75.9297v-120.07\nc0 -44.4102 -38.29 -80.0498 -83.5898 -75.6201c-39.4902 3.85059 -68.4102 39.3398 -68.4102 79.0098v24.6104c0 22.0898 -17.9102 40 -40 40h-8v-112h-288v352c0 35.3496 28.6504 64 64 64h160c35.3496 0 64 -28.6504 64 -64v-192h8c48.5996 0 88 -39.4004 88 -88v-28\nc0 -16.9902 15.2197 -30.5 32.7402 -27.6104c13.7598 2.27051 23.2598 15.2402 23.2598 29.1904v118.49c-32.3799 10.2393 -56 40.1699 -56 75.9297v32c0 8.83984 7.16016 16 16 16h16v48c0 8.83984 7.16016 16 16 16s16 -7.16016 16 -16v-48h32v48\nc0 8.83984 7.16016 16 16 16s16 -7.16016 16 -16v-48zM260.09 272.24c4.62012 6.97949 -1.14941 15.7598 -10.3896 15.7598h-57.7002l11.5996 50.79c2.02051 6.66992 -3.71973 13.21 -11.5996 13.21h-68c-6.01953 0 -11.0996 -3.90039 -11.8896 -9.11035l-16 -107\nc-0.959961 -6.2998 4.63965 -11.8896 11.8896 -11.8896h59.3496l-23.0195 -83.0801c-1.7998 -6.63965 4 -12.9199 11.6699 -12.9199c4.17969 0 8.19043 1.91016 10.3896 5.24023z\" />\n    <glyph glyph-name=\"directions\" unicode=\"&#xf5eb;\" \nd=\"M502.61 214.68c12.5195 -12.5293 12.5195 -32.8301 0 -45.3594l-223.931 -223.931c-12.5293 -12.5293 -32.8398 -12.5293 -45.3594 0l-223.931 223.931c-12.5195 12.5293 -12.5195 32.8301 0 45.3594l223.931 223.931c12.5293 12.5195 32.8398 12.5195 45.3594 0z\nM401.63 202.12c3.42969 3.16992 3.42969 8.58984 0 11.7598l-84.21 77.7305c-5.12988 4.72949 -13.4297 1.08984 -13.4297 -5.87988v-53.7305h-112c-17.6699 0 -32 -14.3301 -32 -32v-80c0 -4.41992 3.58008 -8 8 -8h32c4.41992 0 8 3.58008 8 8v64h96v-53.7305\nc0 -6.97949 8.30957 -10.6094 13.4297 -5.87988z\" />\n    <glyph glyph-name=\"draw-polygon\" unicode=\"&#xf5ee;\" horiz-adv-x=\"448\" \nd=\"M384 96c35.3496 0 64 -28.6504 63.9902 -64c0 -35.3496 -28.6504 -64 -64 -64c-23.6299 0 -44.0303 12.9502 -55.1201 32h-209.75c-11.0801 -19.0498 -31.4902 -32 -55.1201 -32c-35.3496 0 -64 28.6504 -64 64c0 23.6299 12.9502 44.04 32 55.1299v209.75\nc-19.0498 11.0801 -32 31.4902 -32 55.1201c0 35.3496 28.6504 64 64 64c23.6299 0 44.04 -12.9502 55.1201 -32h209.76c11.0801 19.0498 31.4902 32 55.1201 32c35.3496 0 64 -28.6504 64 -64s-28.6504 -64 -64 -64c-0.349609 0 -0.669922 0.0898438 -1.01953 0.0996094\nl-39.2002 -65.3193c5.08008 -9.16992 8.21973 -19.5605 8.21973 -30.7803s-3.15039 -21.6104 -8.21973 -30.7803l39.2002 -65.3193c0.349609 0 0.669922 0.0996094 1.01953 0.0996094zM96 87.1201c8.07422 -4.68848 18.4316 -15.0459 23.1201 -23.1201h208.36\nl-38.4609 64.0996c-0.349609 0 -0.669922 -0.0996094 -1.01953 -0.0996094c-35.3496 0 -64 28.6504 -64 64s28.6504 64 64 64c0.349609 0 0.669922 -0.0898438 1.01953 -0.0996094l38.4609 64.0996h-208.36c-4.69043 -8.07227 -15.0479 -18.4297 -23.1201 -23.1201v-209.76z\nM272 192c0 -8.82031 7.17969 -16 16 -16s16 7.17969 16 16s-7.17969 16 -16 16s-16 -7.17969 -16 -16zM400 352c0 8.82031 -7.17969 16 -16 16s-16 -7.17969 -16 -16s7.17969 -16 16 -16s16 7.17969 16 16zM64 368c-8.82031 0 -16 -7.17969 -16 -16s7.17969 -16 16 -16\ns16 7.17969 16 16s-7.17969 16 -16 16zM48 32c0 -8.82031 7.17969 -16 16 -16s16 7.17969 16 16s-7.17969 16 -16 16s-16 -7.17969 -16 -16zM384 16c8.82031 0 16 7.17969 16 16s-7.17969 16 -16 16s-16 -7.17969 -16 -16s7.17969 -16 16 -16z\" />\n    <glyph glyph-name=\"laptop-code\" unicode=\"&#xf5fc;\" horiz-adv-x=\"640\" \nd=\"M255.03 186.35l-58.3506 58.3408c-6.25 6.25 -6.25 16.3799 0 22.6299l58.3398 58.3398c6.25 6.25 16.3809 6.25 22.6309 0l11.3096 -11.3105c6.25 -6.25 6.25 -16.3799 0 -22.6299l-35.71 -35.7197l35.7197 -35.71c6.25 -6.25 6.25 -16.3799 0 -22.6299\nl-11.3096 -11.3105c-6.25 -6.25 -16.3799 -6.25 -22.6299 0zM351.04 197.65c-6.25 6.25 -6.25 16.3799 0 22.6299l35.71 35.7197l-35.71 35.71c-6.25 6.25 -6.25 16.3799 0 22.6299l11.3096 11.3105c6.25 6.25 16.3809 6.25 22.6309 0l58.3398 -58.3408\nc6.25 -6.25 6.25 -16.3799 0 -22.6299l-58.3398 -58.3398c-6.25 -6.25 -16.3809 -6.25 -22.6309 0zM624 32c8.7998 0 16 -7.2002 16 -16v-16c0 -35.2002 -28.7998 -64 -64 -64h-512c-35.2002 0 -64 28.7998 -64 64v16c0 8.7998 7.2002 16 16 16h239.23\nc-0.25 -14.5303 14.0791 -32 32.7695 -32h60.7998c18.0303 0 32 12.1904 32.7402 32h242.46zM576 400v-336h-512v336c0 26.4004 21.5996 48 48 48h416c26.4004 0 48 -21.5996 48 -48zM512 128v256h-384v-256h384z\" />\n    <glyph glyph-name=\"layer-group\" unicode=\"&#xf5fd;\" \nd=\"M12.4102 299.98c-16.5498 7.50977 -16.5498 32.5293 0 40.0391l232.95 105.671c2.79883 1.2793 7.56738 2.31738 10.6445 2.31738s7.84668 -1.03809 10.6455 -2.31738l232.93 -105.681c16.5498 -7.50977 16.5498 -32.5195 0 -40.0293l-232.94 -105.671\nc-6.7998 -3.08984 -14.4893 -3.08984 -21.29 0zM499.59 211.7c16.5498 -7.5 16.5498 -32.5 0 -40l-232.95 -105.59c-6.7998 -3.08008 -14.4893 -3.08008 -21.29 0l-232.939 105.59c-16.5498 7.5 -16.5498 32.5 0 40l58.0996 26.3301l161.63 -73.2705\nc7.57031 -3.42969 15.5908 -5.16992 23.8604 -5.16992s16.2998 1.74023 23.8604 5.16992l161.64 73.2705zM499.59 83.9004c16.5498 -7.5 16.5498 -32.5 0 -40l-232.95 -105.591c-6.7998 -3.0791 -14.4893 -3.0791 -21.29 0l-232.939 105.591\nc-16.5498 7.5 -16.5498 32.5 0 40l57.8799 26.2295l161.85 -73.3701c7.57031 -3.42969 15.5908 -5.16992 23.8604 -5.16992s16.2998 1.74023 23.8604 5.16992l161.859 73.3701z\" />\n    <glyph glyph-name=\"microscope\" unicode=\"&#xf610;\" \nd=\"M160 128c-17.6699 0 -32 14.3301 -32 32v224c0 17.6699 14.3301 32 32 32v16c0 8.83984 7.16016 16 16 16h64c8.83984 0 16 -7.16016 16 -16v-16c17.6699 0 32 -14.3301 32 -32v-224c0 -17.6699 -14.3301 -32 -32 -32h-12v-16c0 -8.83984 -7.16016 -16 -16 -16h-40\nc-8.83984 0 -16 7.16016 -16 16v16h-12zM464 0c26.5098 0 48 -21.4902 48 -48c0 -8.83984 -7.16016 -16 -16 -16h-480c-8.83984 0 -16 7.16016 -16 16c0 26.5098 21.4902 48 48 48h272c70.5801 0 128 57.4199 128 128s-57.4199 128 -128 128v64\nc105.88 0 192 -86.1201 192 -192c0 -49.2002 -18.7598 -93.9902 -49.29 -128h1.29004zM104 32c-4.41992 0 -8 3.58008 -8 8v16c0 4.41992 3.58008 8 8 8h208c4.41992 0 8 -3.58008 8 -8v-16c0 -4.41992 -3.58008 -8 -8 -8h-208z\" />\n    <glyph glyph-name=\"oil-can\" unicode=\"&#xf613;\" horiz-adv-x=\"640\" \nd=\"M629.8 287.69c5.11035 1.45996 10.2002 -2.38086 10.1904 -7.69043v-18.0801c0 -2.12012 -0.839844 -4.16016 -2.33984 -5.66016l-212.261 -214.75c-6.00977 -6.08984 -14.21 -9.50977 -22.7598 -9.50977h-274.63c-17.6699 0 -32 14.3301 -32 32v46.54l-69.7197 12.6904\nc-15.2207 2.75977 -26.2803 16.0195 -26.2803 31.4795v94.9502c0 17.9795 14.6699 32.0098 31.9297 32.0098c1.61133 0 4.20605 -0.237305 5.79004 -0.530273l138.28 -25.1396h56v48h-56c-8.83984 0 -16 7.16016 -16 16v16c0 8.83984 7.16016 16 16 16h160\nc8.83984 0 16 -7.16016 16 -16v-16c0 -8.83984 -7.16016 -16 -16 -16h-56v-48h56.8896c8.33984 -0.00292969 21.1611 -3.03125 28.6201 -6.75977l50.4902 -25.2402zM96 159.33v62.4297l-48 8.73047v-62.4307zM549.33 74.6699c0 23.5605 42.6699 85.3301 42.6699 85.3301\ns42.6699 -61.7598 42.6699 -85.3301s-19.0996 -42.6699 -42.6699 -42.6699s-42.6699 19.1104 -42.6699 42.6699z\" />\n    <glyph glyph-name=\"poop\" unicode=\"&#xf619;\" \nd=\"M451.36 78.8604c34.3301 -5.48047 60.6396 -34.9805 60.6396 -70.8604c0 -39.7598 -32.2402 -72 -72 -72h-368c-39.7598 0 -72 32.2402 -72 72c0 35.8799 26.3096 65.3799 60.6396 70.8604c-17.2998 13.1494 -28.6396 33.7295 -28.6396 57.1396\nc0 39.7695 32.2402 72 72 72h14.0703c-13.4199 11.7305 -22.0703 28.7803 -22.0703 48c0 35.3496 28.6504 64 64 64h16c44.1797 0 80 35.8203 80 80c0 17.3799 -5.69043 33.3604 -15.1104 46.4805c4.95996 0.779297 9.94043 1.51953 15.1104 1.51953\nc53.0195 0 96 -42.9805 96 -96c0 -11.2803 -2.30957 -21.9502 -5.87988 -32h5.87988c35.3496 0 64 -28.6504 64 -64c0 -19.2197 -8.65039 -36.2695 -22.0703 -48h14.0703c39.7598 0 72 -32.2305 72 -72c0 -23.4102 -11.3398 -43.9902 -28.6396 -57.1396z\" />\n    <glyph glyph-name=\"shapes\" unicode=\"&#xf61f;\" \nd=\"M512 128v-160c0 -17.6699 -14.3301 -32 -32 -32h-160c-17.6699 0 -32 14.3301 -32 32v160c0 17.6699 14.3301 32 32 32h160c17.6699 0 32 -14.3301 32 -32zM128 192c70.6904 0 128 -57.3096 128 -128s-57.3096 -128 -128 -128s-128 57.3096 -128 128s57.3096 128 128 128\nzM479.03 224h-190.061c-25.3398 0 -41.1797 26.6699 -28.5098 48l95.0303 160c12.6699 21.3301 44.3496 21.3301 57.0195 0l95.0303 -160c12.6699 -21.3301 -3.16992 -48 -28.5098 -48z\" />\n    <glyph glyph-name=\"star-of-life\" unicode=\"&#xf621;\" horiz-adv-x=\"480\" \nd=\"M471.99 113.57c7.66016 -4.41992 10.2793 -14.2002 5.85938 -21.8506l-32.0195 -55.4297c-4.41992 -7.66016 -14.21 -10.2803 -21.8701 -5.86035l-135.93 78.4307v-156.86c0 -8.83984 -7.16992 -16 -16.0107 -16h-64.0391c-8.84082 0 -16.0107 7.16016 -16.0107 16\nv156.85l-135.93 -78.4297c-7.66016 -4.41016 -17.4502 -1.79004 -21.8701 5.86035l-32.0195 55.4297c-4.41992 7.65039 -1.80078 17.4404 5.85938 21.8604l135.931 78.4297l-135.931 78.4297c-7.66016 4.41992 -10.2793 14.21 -5.85938 21.8604l32.0195 55.4199\nc4.41992 7.65039 14.21 10.2803 21.8701 5.86035l135.93 -78.4307v156.86c0 8.83984 7.16992 16 16.0107 16h64.0391c8.84082 0 16.0107 -7.16016 16.0107 -16v-156.85l135.93 78.4297c7.66016 4.41992 17.4502 1.79004 21.8701 -5.86035l32.0195 -55.4297\nc4.41992 -7.66016 1.80078 -17.4404 -5.85938 -21.8604l-135.931 -78.4297z\" />\n    <glyph glyph-name=\"teeth\" unicode=\"&#xf62e;\" horiz-adv-x=\"640\" \nd=\"M544 448c53.0195 0 96 -42.9805 96 -96v-320c0 -53.0195 -42.9805 -96 -96 -96h-448c-53.0195 0 -96 42.9805 -96 96v320c0 53.0195 42.9805 96 96 96h448zM160 80v64c0 8.83984 -7.16016 16 -16 16h-64c-8.83984 0 -16 -7.16016 -16 -16v-64\nc0 -26.5098 21.4902 -48 48 -48s48 21.4902 48 48zM160 208v64c0 26.5098 -21.4902 48 -48 48s-48 -21.4902 -48 -48v-64c0 -8.83984 7.16016 -16 16 -16h64c8.83984 0 16 7.16016 16 16zM304 88v56c0 8.83984 -7.16016 16 -16 16h-80c-8.83984 0 -16 -7.16016 -16 -16v-56\nc0 -30.9297 25.0703 -56 56 -56s56 25.0703 56 56zM304 208v88c0 30.9297 -25.0703 56 -56 56s-56 -25.0703 -56 -56v-88c0 -8.83984 7.16016 -16 16 -16h80c8.83984 0 16 7.16016 16 16zM448 88v56c0 8.83984 -7.16016 16 -16 16h-80c-8.83984 0 -16 -7.16016 -16 -16v-56\nc0 -30.9297 25.0703 -56 56 -56s56 25.0703 56 56zM448 208v88c0 30.9297 -25.0703 56 -56 56s-56 -25.0703 -56 -56v-88c0 -8.83984 7.16016 -16 16 -16h80c8.83984 0 16 7.16016 16 16zM576 80v64c0 8.83984 -7.16016 16 -16 16h-64c-8.83984 0 -16 -7.16016 -16 -16v-64\nc0 -26.5098 21.4902 -48 48 -48s48 21.4902 48 48zM576 208v64c0 26.5098 -21.4902 48 -48 48s-48 -21.4902 -48 -48v-64c0 -8.83984 7.16016 -16 16 -16h64c8.83984 0 16 7.16016 16 16z\" />\n    <glyph glyph-name=\"teeth-open\" unicode=\"&#xf62f;\" horiz-adv-x=\"640\" \nd=\"M544 448c53.0195 0 96 -42.9805 96 -96v-64c0 -35.3496 -28.6602 -64 -64 -64h-512c-35.3398 0 -64 28.6504 -64 64v64c0 53.0195 42.9805 96 96 96h448zM160 272v32c0 26.5098 -21.4902 48 -48 48s-48 -21.4902 -48 -48v-32c0 -8.83984 7.16016 -16 16 -16h64\nc8.83984 0 16 7.16016 16 16zM304 272v56c0 30.9297 -25.0703 56 -56 56s-56 -25.0703 -56 -56v-56c0 -8.83984 7.16016 -16 16 -16h80c8.83984 0 16 7.16016 16 16zM448 272v56c0 30.9297 -25.0703 56 -56 56s-56 -25.0703 -56 -56v-56c0 -8.83984 7.16016 -16 16 -16h80\nc8.83984 0 16 7.16016 16 16zM576 272v32c0 26.5098 -21.4902 48 -48 48s-48 -21.4902 -48 -48v-32c0 -8.83984 7.16016 -16 16 -16h64c8.83984 0 16 7.16016 16 16zM576 128c35.3398 0 64 -28.6504 64 -64v-32c0 -53.0195 -42.9805 -96 -96 -96h-448\nc-53.0195 0 -96 42.9805 -96 96v32c0 35.3496 28.6602 64 64 64h512zM160 48v32c0 8.83984 -7.16016 16 -16 16h-64c-8.83984 0 -16 -7.16016 -16 -16v-32c0 -26.5098 21.4902 -48 48 -48s48 21.4902 48 48zM304 56v24c0 8.83984 -7.16016 16 -16 16h-80\nc-8.83984 0 -16 -7.16016 -16 -16v-24c0 -30.9297 25.0703 -56 56 -56s56 25.0703 56 56zM448 56v24c0 8.83984 -7.16016 16 -16 16h-80c-8.83984 0 -16 -7.16016 -16 -16v-24c0 -30.9297 25.0703 -56 56 -56s56 25.0703 56 56zM576 48v32c0 8.83984 -7.16016 16 -16 16h-64\nc-8.83984 0 -16 -7.16016 -16 -16v-32c0 -26.5098 21.4902 -48 48 -48s48 21.4902 48 48z\" />\n    <glyph glyph-name=\"theater-masks\" unicode=\"&#xf630;\" horiz-adv-x=\"640\" \nd=\"M206.86 202.85l-7.62988 -43.1797c-21.0908 -7.21973 -38.5 -18.2002 -49.9004 -30.9199c-2.41992 32.9004 21.6504 63.6504 57.5303 74.0996zM95.8096 153c5.87012 -33.1699 64.3203 -71.8096 111.931 -84.79c10.5596 -27.0996 25.9795 -50.5 39.5 -67.5801\nc-3.25977 -0.339844 -6.41992 -0.799805 -10.0098 -0.799805c-68.1201 0 -190.221 61.5596 -204.45 142.08l-31.7305 179.51c-4.96973 28.0996 7.98047 56.0996 32.1504 69.5205c67.8193 37.6396 143.46 57.0596 220.12 57.0596c23.9199 0 47.9492 -1.88965 71.8594 -5.7002\nc17.29 -2.76953 31.7803 -13.0498 41.7705 -27c-19.1299 -0.769531 -38.29 -2.2998 -57.1807 -5.31934c-19.8594 -3.1709 -37.6396 -12.5303 -51.5898 -26c-1.62012 0.0195312 -3.23926 0.189453 -4.84961 0.189453c-65.8896 0 -131.25 -16.9502 -189.01 -49.0098\nc0.0400391 -0.0302734 -0.530273 -1.03027 -0.240234 -2.65039zM193.36 290.46c3.83984 -21.7002 -10.6904 -42.4004 -32.4404 -46.2197c-21.7598 -3.82031 -42.5 10.6699 -46.3398 32.3701c-0.730469 4.12012 -0.610352 8.15918 -0.0898438 12.0996\nc10.8096 -5.57031 24.8301 -7.75 39.4795 -5.16992c14.6504 2.57031 27.0703 9.41016 35.3203 18.3203c1.83984 -3.53027 3.33984 -7.28027 4.07031 -11.4004zM606.8 327.1c24.1699 -13.4092 37.1201 -41.4092 32.1504 -69.5195l-31.7305 -179.51\nc-15.3896 -87.0508 -156.83 -151.931 -219.859 -140.84c-63.0303 11.0791 -173.7 120.3 -158.311 207.35l31.7305 179.51c4.95996 28.1006 26.7295 50 54.04 54.3604c100.55 16.0596 203 -1.96973 291.979 -51.3506zM333.56 230.3\nc-0.729492 -4.12012 -0.609375 -8.16016 -0.0791016 -12.1094c10.8096 5.56934 24.8291 7.75 39.4795 5.16992c14.6504 -2.57031 27.0703 -9.41016 35.3203 -18.3203c1.83984 3.53027 3.33984 7.28027 4.06934 11.4004c3.83008 21.6992 -10.6895 42.3896 -32.4492 46.2197\nc-21.7607 3.83008 -42.5 -10.6602 -46.3408 -32.3604zM404.03 31.54c55.6699 -9.79004 108.2 23.7803 122.38 75.7197c-28.1104 -16.9697 -68.6504 -24.21 -111.93 -16.5996c-43.2803 7.60938 -78.8906 28.2402 -99.4902 53.7803\nc-4.48047 -53.6309 33.3594 -103.11 89.04 -112.9zM534.33 182.88c1.83984 3.52051 3.33984 7.27051 4.07031 11.4004c3.83008 21.7002 -10.7002 42.3896 -32.4502 46.2197c-21.7598 3.82031 -42.5 -10.6699 -46.3398 -32.3701\nc-0.730469 -4.12012 -0.610352 -8.16016 -0.0908203 -12.0996c10.8105 5.56934 24.8301 7.75 39.4805 5.16992c14.6504 -2.57031 27.0801 -9.41016 35.3301 -18.3203z\" />\n    <glyph glyph-name=\"traffic-light\" unicode=\"&#xf637;\" horiz-adv-x=\"384\" \nd=\"M384 256c0 -41.7402 -26.7998 -76.9004 -64 -90.1201v-37.8799h64c0 -42.8398 -28.25 -78.6904 -66.9902 -91.0498c-12.4297 -57.6699 -63.6094 -100.95 -125.01 -100.95s-112.58 43.2803 -125.01 100.95c-38.7402 12.3594 -66.9902 48.21 -66.9902 91.0498h64v37.8799\nc-37.2002 13.2197 -64 48.3799 -64 90.1201h64v37.8799c-37.2002 13.2197 -64 48.3799 -64 90.1201h64v32c0 17.6699 14.3301 32 32 32h192c17.6699 0 32 -14.3301 32 -32v-32h64c0 -41.7402 -26.7998 -76.9004 -64 -90.1201v-37.8799h64zM192 32\nc26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48s-48 -21.4902 -48 -48s21.4902 -48 48 -48zM192 160c26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48s-48 -21.4902 -48 -48s21.4902 -48 48 -48zM192 288c26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48\ns-48 -21.4902 -48 -48s21.4902 -48 48 -48z\" />\n    <glyph glyph-name=\"truck-monster\" unicode=\"&#xf63b;\" horiz-adv-x=\"640\" \nd=\"M624 224c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-16.71c-29.21 38.6504 -75.0996 64 -127.28 64c-52.1797 0 -98.0693 -25.3496 -127.279 -64h-65.4502c-29.21 38.6504 -75.1006 64 -127.28 64s-98.0703 -25.3496 -127.28 -64h-16.7197\nc-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h16v80c0 8.83984 7.16016 16 16 16h176v96c0 17.6699 14.3301 32 32 32h113.24c16.9795 -0.00195312 39.3701 -10.7627 49.9795 -24.0195l83.1807 -103.98h73.5996c17.6699 0 32 -14.3301 32 -32v-64h16z\nM288 320h132.44l-51.2002 64h-81.2402v-64zM592 96c8.83984 0 16 -7.16016 16.0195 -16v-32c0 -8.83984 -7.15918 -16 -16 -16h-5.19922c-1.79688 -6.01074 -5.67188 -15.3691 -8.65039 -20.8896l3.66992 -3.66992c6.25 -6.25 6.25 -16.3809 0 -22.6309l-22.6299 -22.6299\nc-6.25 -6.25 -16.3799 -6.25 -22.6299 0l-3.66992 3.66992c-6.62012 -3.58008 -13.5703 -6.44922 -20.9004 -8.64941v-5.2002c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v5.2002c-7.33008 2.2002 -14.29 5.08008 -20.8994 8.64941\nl-3.66992 -3.66992c-6.25 -6.25 -16.3809 -6.25 -22.6309 0l-22.6299 22.6299c-6.25 6.25 -6.25 16.3809 0 22.6309l3.66992 3.66992c-3.58008 6.60938 -6.44922 13.5596 -8.64941 20.8896h-5.2002c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h5.2002\nc1.7959 6.01074 5.6709 15.3691 8.64941 20.8896l-3.66992 3.66992c-6.25 6.25 -6.25 16.3809 0 22.6309l22.6299 22.6299c6.25 6.25 16.3809 6.25 22.6309 0l3.66992 -3.66992c6.60938 3.58008 13.5596 6.44922 20.8896 8.64941v5.2002c0 8.83984 7.16016 16 16 16h32\nc8.83984 0 16 -7.16016 16 -16v-5.2002c6.01074 -1.7959 15.3691 -5.6709 20.8896 -8.64941l3.66992 3.66992c6.25 6.25 16.3809 6.25 22.6309 0l22.6299 -22.6299c6.25 -6.25 6.25 -16.3809 0 -22.6309l-3.66992 -3.66992\nc3.58008 -6.60938 6.44922 -13.5596 8.64941 -20.8896h5.2002zM480 16c26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48s-48 -21.4902 -48 -48s21.4902 -48 48 -48zM272 96c8.83984 0 16 -7.16016 16.0195 -15.9902v-32c0 -8.83984 -7.15918 -16 -16 -16h-5.19922\nc-1.79688 -6.00977 -5.67188 -15.3691 -8.65039 -20.8896l3.66992 -3.66992c6.25 -6.25 6.25 -16.3799 0 -22.6299l-22.6299 -22.6299c-6.25 -6.25 -16.3799 -6.25 -22.6299 0l-3.66992 3.66992c-6.62012 -3.58008 -13.5703 -6.4502 -20.9004 -8.65039v-5.2002\nc0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v5.2002c-7.33008 2.2002 -14.29 5.08008 -20.8994 8.65039l-3.66992 -3.66992c-6.25 -6.25 -16.3809 -6.25 -22.6309 0l-22.6299 22.6299c-6.25 6.25 -6.25 16.3799 0 22.6299l3.66992 3.66992\nc-3.58008 6.61035 -6.44922 13.5596 -8.64941 20.8896h-5.2002c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h5.2002c1.7959 6.01074 5.6709 15.3691 8.64941 20.8906l-3.66992 3.66992c-6.25 6.25 -6.25 16.3799 0 22.6299l22.6299 22.6201\nc6.25 6.25 16.3809 6.25 22.6309 0l3.66992 -3.66992c6.60938 3.58008 13.5596 6.44922 20.8896 8.64941v5.2002c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-5.2002c6.01074 -1.7959 15.3691 -5.6709 20.8896 -8.64941l3.66992 3.66992\nc6.25 6.25 16.3809 6.25 22.6309 0l22.6299 -22.6299c6.25 -6.25 6.25 -16.3809 0 -22.6309l-3.66992 -3.66992c3.58008 -6.60938 6.44922 -13.5596 8.64941 -20.8896h5.2002zM160 16c26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48s-48 -21.4902 -48 -48\ns21.4902 -48 48 -48z\" />\n    <glyph glyph-name=\"truck-pickup\" unicode=\"&#xf63c;\" horiz-adv-x=\"640\" \nd=\"M624 160c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-49.5996c0.759766 -5.26953 1.60938 -10.5195 1.60938 -16c0 -61.8604 -50.1396 -112 -112 -112c-61.8594 0 -112 50.1396 -112 112c0 5.48047 0.850586 10.7305 1.61035 16h-67.2305\nc0.760742 -5.26953 1.61035 -10.5195 1.61035 -16c0 -61.8604 -50.1396 -112 -112 -112s-112 50.1396 -112 112c0 5.48047 0.849609 10.7305 1.61035 16h-49.6104c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h16v64c0 17.6699 14.3301 32 32 32h160v128\nc0 17.6699 14.3301 32 32 32h113.24c16.9795 -0.00195312 39.3701 -10.7627 49.9795 -24.0195l108.78 -135.98h48c17.6699 0 32 -14.3301 32 -32v-64h16zM288 352v-96h158.04l-76.7998 96h-81.2402zM176 32c26.4697 0 48 21.5303 48 48s-21.5303 48 -48 48\ns-48 -21.5303 -48 -48s21.5303 -48 48 -48zM464 32c26.4697 0 48 21.5303 48 48s-21.5303 48 -48 48s-48 -21.5303 -48 -48s21.5303 -48 48 -48z\" />\n    <glyph glyph-name=\"ad\" unicode=\"&#xf641;\" \nd=\"M157.52 176l18.4805 53.2197l18.4805 -53.2197h-36.9609zM352 192c13.2305 0 24 -10.7695 24 -24s-10.7695 -24 -24 -24s-24 10.7695 -24 24s10.7695 24 24 24zM464 384c26.5 0 48 -21.5 48 -48v-288c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v288\nc0 26.5 21.5 48 48 48h416zM250.58 96c11 0 18.7197 10.8496 15.1104 21.25l-53.6904 154.62c-3.08789 8.90332 -13.2422 16.1299 -22.666 16.1299h-0.00390625h-26.6602h-0.00390625c-9.41992 0 -19.5742 -7.22168 -22.666 -16.1201l-53.7002 -154.63\nc-3.60938 -10.4004 4.11035 -21.25 15.1201 -21.25h16.9404h0.00585938c6.28125 0 13.0527 4.81641 15.1143 10.75l7.37988 21.25h70.29l7.36914 -21.25c2.24023 -6.42969 8.31055 -10.75 15.1201 -10.75h16.9404zM424 112v160c0 8.83984 -7.16016 16 -16 16h-16\nc-8.83984 0 -16 -7.16016 -16 -16v-36.4199c-7.54004 2.68945 -15.54 4.41992 -24 4.41992c-39.7002 0 -72 -32.2998 -72 -72s32.2998 -72 72 -72c9.92969 0 19.4004 2.01953 28.0195 5.67969c2.94043 -3.41016 7.13086 -5.67969 11.9805 -5.67969h16\nc8.83984 0 16 7.16016 16 16z\" />\n    <glyph glyph-name=\"ankh\" unicode=\"&#xf644;\" horiz-adv-x=\"320\" \nd=\"M296 192c13.25 0 24 -10.7402 24 -24v-32c0 -13.25 -10.75 -24 -24 -24h-96v-152c0 -13.25 -10.75 -24 -24 -24h-32c-13.25 0 -24 10.75 -24 24v152h-96c-13.25 0 -24 10.75 -24 24v32c0 13.2598 10.75 24 24 24h44.6201c-21.0801 33.9902 -36.6201 74.3496 -36.6201 112\nc0 88.3701 57.3096 144 128 144s128 -55.6299 128 -144c0 -37.6504 -15.54 -78.0098 -36.6201 -112h44.6201zM160 368c-29.6104 0 -48 -24.5195 -48 -64c0 -34.6602 27.1396 -78.1504 48 -100.87c20.8604 22.7305 48 66.21 48 100.87c0 39.4805 -18.3896 64 -48 64z\" />\n    <glyph glyph-name=\"bible\" unicode=\"&#xf647;\" horiz-adv-x=\"448\" \nd=\"M448 89.5996c0 -9.59961 -3.2002 -16 -9.59961 -19.1992c-3.2002 -12.8008 -3.2002 -57.6006 0 -73.6006c6.39941 -6.39941 9.59961 -12.7998 9.59961 -19.2002v-16c0 -16 -12.7998 -25.5996 -25.5996 -25.5996h-326.4c-54.4004 0 -96 41.5996 -96 96v320\nc0 54.4004 41.5996 96 96 96h326.4c16 0 25.5996 -9.59961 25.5996 -25.5996v-332.801zM144 304v-32c0 -8.83984 7.16016 -16 16 -16h48v-112c0 -8.83984 7.16016 -16 16 -16h32c8.83984 0 16 7.16016 16 16v112h48c8.83984 0 16 7.16016 16 16v32\nc0 8.83984 -7.16016 16 -16 16h-48v48c0 8.83984 -7.16016 16 -16 16h-32c-8.83984 0 -16 -7.16016 -16 -16v-48h-48c-8.83984 0 -16 -7.16016 -16 -16zM380.8 0v64h-284.8c-16 0 -32 -12.7998 -32 -32s12.7998 -32 32 -32h284.8z\" />\n    <glyph glyph-name=\"business-time\" unicode=\"&#xf64a;\" horiz-adv-x=\"640\" \nd=\"M496 224c79.5898 0 144 -64.4102 144 -144s-64.4102 -144 -144 -144s-144 64.4102 -144 144s64.4102 144 144 144zM560 73.71v12.5801c0 5.33984 -4.37012 9.70996 -9.70996 9.70996h-38.29v54.2803c0 5.33984 -4.37012 9.70996 -9.70996 9.70996h-12.5703\nc-5.33984 0 -9.70996 -4.37012 -9.70996 -9.70996v-76.5703c0 -5.33984 4.37012 -9.70996 9.70996 -9.70996h60.5703c5.33984 0 9.70996 4.37012 9.70996 9.70996zM496 256c-37.5303 0 -72.2803 -11.9102 -100.88 -32h-395.12v80c0 25.5996 22.4004 48 48 48h80v48\nc0 25.5996 22.4004 48 48 48h160c25.5996 0 48 -22.4004 48 -48v-48h80c25.5996 0 48 -22.4004 48 -48v-48.8096c-5.28027 0.479492 -10.5996 0.80957 -16 0.80957zM320 352v32h-128v-32h128zM326.82 128c-4.33984 -15.2803 -6.82031 -31.3398 -6.82031 -48\nc0 -28.8203 7.09961 -55.96 19.4297 -80h-291.43c-25.5996 0 -48 22.4004 -48 48v144h192v-48c0 -8.83984 7.16016 -16 16 -16h118.82z\" />\n    <glyph glyph-name=\"city\" unicode=\"&#xf64f;\" horiz-adv-x=\"640\" \nd=\"M616 256c13.25 0 24 -10.7402 24 -24v-264c0 -17.6699 -14.3301 -32 -32 -32h-576c-17.6699 0 -32 14.3301 -32 32v360c0 13.2598 10.7402 24 24 24h40v80c0 8.83984 7.16016 16 16 16h16c8.83984 0 16 -7.16016 16 -16v-80h64v80c0 8.83984 7.16016 16 16 16h16\nc8.83984 0 16 -7.16016 16 -16v-80h64v72c0 13.2598 10.7402 24 24 24h144c13.2598 0 24 -10.7402 24 -24v-168h136zM128 44v40c0 6.62988 -5.37012 12 -12 12h-40c-6.62988 0 -12 -5.37012 -12 -12v-40c0 -6.62988 5.37012 -12 12 -12h40c6.62988 0 12 5.37012 12 12z\nM128 140v40c0 6.62988 -5.37012 12 -12 12h-40c-6.62988 0 -12 -5.37012 -12 -12v-40c0 -6.62988 5.37012 -12 12 -12h40c6.62988 0 12 5.37012 12 12zM128 236v40c0 6.62988 -5.37012 12 -12 12h-40c-6.62988 0 -12 -5.37012 -12 -12v-40c0 -6.62988 5.37012 -12 12 -12h40\nc6.62988 0 12 5.37012 12 12zM256 44v40c0 6.62988 -5.37012 12 -12 12h-40c-6.62988 0 -12 -5.37012 -12 -12v-40c0 -6.62988 5.37012 -12 12 -12h40c6.62988 0 12 5.37012 12 12zM256 140v40c0 6.62988 -5.37012 12 -12 12h-40c-6.62988 0 -12 -5.37012 -12 -12v-40\nc0 -6.62988 5.37012 -12 12 -12h40c6.62988 0 12 5.37012 12 12zM256 236v40c0 6.62988 -5.37012 12 -12 12h-40c-6.62988 0 -12 -5.37012 -12 -12v-40c0 -6.62988 5.37012 -12 12 -12h40c6.62988 0 12 5.37012 12 12zM416 140v40c0 6.62988 -5.37012 12 -12 12h-40\nc-6.62988 0 -12 -5.37012 -12 -12v-40c0 -6.62988 5.37012 -12 12 -12h40c6.62988 0 12 5.37012 12 12zM416 236v40c0 6.62988 -5.37012 12 -12 12h-40c-6.62988 0 -12 -5.37012 -12 -12v-40c0 -6.62988 5.37012 -12 12 -12h40c6.62988 0 12 5.37012 12 12zM416 332v40\nc0 6.62988 -5.37012 12 -12 12h-40c-6.62988 0 -12 -5.37012 -12 -12v-40c0 -6.62988 5.37012 -12 12 -12h40c6.62988 0 12 5.37012 12 12zM576 44v40c0 6.62988 -5.37012 12 -12 12h-40c-6.62988 0 -12 -5.37012 -12 -12v-40c0 -6.62988 5.37012 -12 12 -12h40\nc6.62988 0 12 5.37012 12 12zM576 140v40c0 6.62988 -5.37012 12 -12 12h-40c-6.62988 0 -12 -5.37012 -12 -12v-40c0 -6.62988 5.37012 -12 12 -12h40c6.62988 0 12 5.37012 12 12z\" />\n    <glyph glyph-name=\"comment-dollar\" unicode=\"&#xf651;\" \nd=\"M256 416c141.38 0 256 -93.1201 256 -208s-114.62 -208 -256 -208c-38.4102 0 -74.71 7.07031 -107.4 19.3799c-24.6094 -19.6299 -74.3398 -51.3799 -140.6 -51.3799h-0.00195312c-4.41309 0 -7.99512 3.58203 -7.99512 7.99512\nc0 1.76172 0.984375 4.22754 2.19727 5.50488c0.5 0.530273 42.2598 45.4502 54.8193 95.7598c-35.6094 35.7305 -57.0195 81.1807 -57.0195 130.74c0 114.88 114.62 208 256 208zM280 113.56c30.29 3.62012 53.3701 30.9805 49.3203 63.04\nc-2.90039 22.96 -20.6602 41.3105 -42.9102 47.6699l-50.0703 14.3008c-3.59961 1.0293 -6.12012 4.35938 -6.12012 8.10938c0 4.64062 3.78027 8.41992 8.44043 8.41992h32.7803h0.0654297c2.94727 0 7.51367 -0.994141 10.1943 -2.21973\nc4.7998 -2.20996 10.3701 -1.70996 14.1094 2.03027l17.5205 17.5195c5.26953 5.27051 4.66992 14.2705 -1.5498 18.3799c-9.5 6.27051 -20.3604 10.1104 -31.7803 11.46v17.7305c0 8.83984 -7.16016 16 -16 16h-16c-8.83984 0 -16 -7.16016 -16 -16v-17.5498\nc-30.29 -3.62012 -53.3701 -30.9805 -49.3203 -63.0498c2.90039 -22.96 20.6602 -41.3203 42.9102 -47.6699l50.0703 -14.3008c3.59961 -1.0293 6.12012 -4.35938 6.12012 -8.10938c0 -4.64062 -3.78027 -8.41992 -8.44043 -8.41992h-32.7803\nc-3.59961 0 -7.0791 0.759766 -10.2598 2.21973c-4.7998 2.20996 -10.3701 1.70996 -14.1094 -2.03027l-17.5205 -17.5195c-5.26953 -5.27051 -4.66992 -14.2705 1.5498 -18.3799c9.5 -6.27051 20.3604 -10.1104 31.7803 -11.46v-17.7305c0 -8.83984 7.16016 -16 16 -16h16\nc8.83984 0 16 7.16016 16 16v17.5596z\" />\n    <glyph glyph-name=\"comments-dollar\" unicode=\"&#xf653;\" horiz-adv-x=\"576\" \nd=\"M416 256c0 -88.3701 -93.1201 -160 -208 -160c-40.9805 0 -79.0703 9.24023 -111.27 24.9805c-21.8008 -12.7305 -52.1504 -24.9805 -88.7305 -24.9805h-0.00195312c-4.41309 0 -7.99512 3.58203 -7.99512 7.99512c0 1.76172 0.984375 4.22754 2.19727 5.50488\nc0.319336 0.339844 22.4102 24.2803 35.7695 54.5195c-23.8398 26.0303 -37.9697 57.7109 -37.9697 91.9805c0 88.3701 93.1201 160 208 160s208 -71.6299 208 -160zM192 160c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v16.1201\nc23.6201 0.629883 42.6699 20.54 42.6699 45.0703c0 19.9697 -12.9902 37.8096 -31.5801 43.3896l-45 13.5c-5.16016 1.54004 -8.76953 6.78027 -8.76953 12.7295c0 7.27051 5.2998 13.1904 11.7998 13.1904h28.1104c4.55957 0 8.94922 -1.29004 12.8193 -3.71973\nc3.24023 -2.03027 7.36035 -1.91016 10.1299 0.729492l11.75 11.21c3.53027 3.37012 3.33008 9.20996 -0.569336 12.1406c-9.10059 6.83984 -20.0801 10.7695 -31.3701 11.3496v16.29c0 4.41992 -3.58008 8 -8 8h-16c-4.41992 0 -8 -3.58008 -8 -8v-16.1201\nc-23.6201 -0.629883 -42.6699 -20.5498 -42.6699 -45.0703c0 -19.9697 12.9893 -37.8096 31.5801 -43.3896l45 -13.5c5.15918 -1.54004 8.76953 -6.78027 8.76953 -12.7295c0 -7.27051 -5.2998 -13.1904 -11.7998 -13.1904h-28.1104\nc-4.55957 0 -8.9502 1.2998 -12.8193 3.71973c-3.24023 2.03027 -7.36035 1.91016 -10.1309 -0.729492l-11.75 -11.21c-3.5293 -3.37012 -3.3291 -9.20996 0.570312 -12.1406c9.10059 -6.83008 20.0801 -10.7695 31.3701 -11.3496v-16.29zM538.01 36.0098\nc13.3604 -30.2598 35.4707 -54.1699 35.7803 -54.5c2.20996 -2.33008 2.82031 -5.72949 1.5498 -8.66992c-1.25 -2.92969 -4.13965 -4.83984 -7.33984 -4.83984c-36.5801 0 -66.9297 12.25 -88.7305 24.9805c-32.1992 -15.7402 -70.2891 -24.9805 -111.27 -24.9805\nc-86.2305 0 -160.2 40.3701 -191.73 97.8799c10.4102 -1.11035 20.9502 -1.87988 31.7305 -1.87988c132.34 0 240 86.1299 240 192c0 6.78027 -0.469727 13.4697 -1.33008 20.0703c75.8398 -23.8701 129.33 -81.1299 129.33 -148.07\nc0 -34.2695 -14.1299 -65.96 -37.9902 -91.9902z\" />\n    <glyph glyph-name=\"cross\" unicode=\"&#xf654;\" horiz-adv-x=\"384\" \nd=\"M352 320c17.6699 0 32 -14.3301 32 -32v-64c0 -17.6699 -14.3301 -32 -32 -32h-96v-224c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v224h-96c-17.6699 0 -32 14.3301 -32 32v64c0 17.6699 14.3301 32 32 32h96v96c0 17.6699 14.3301 32 32 32\nh64c17.6699 0 32 -14.3301 32 -32v-96h96z\" />\n    <glyph glyph-name=\"dharmachakra\" unicode=\"&#xf655;\" \nd=\"M495 222.94c9.20996 0.569336 17 -6.74023 17.0098 -15.9707v-29.9395c0 -9.23047 -7.79004 -16.5498 -17 -15.9707l-17.2197 1.08008c-5.28027 -39.4795 -20.7998 -75.6299 -43.8604 -105.83l12.9502 -11.4297c6.91992 -6.09961 7.25977 -16.7803 0.730469 -23.3096\nl-21.1699 -21.1699c-6.52051 -6.52051 -17.2002 -6.19043 -23.3105 0.729492l-11.4297 12.9502c-30.2002 -23.0703 -66.3506 -38.5898 -105.84 -43.8604l1.08008 -17.2197c0.569336 -9.20996 -6.74023 -17 -15.9707 -17h-29.9395c-9.23047 0 -16.5498 7.79004 -15.9707 17\nl1.09082 17.2197c-39.4902 5.28027 -75.6406 20.7998 -105.841 43.8604l-11.4297 -12.9502c-6.09961 -6.91992 -16.7803 -7.25977 -23.3096 -0.729492l-21.1699 21.1699c-6.52051 6.51953 -6.19043 17.1992 0.729492 23.3096l12.9502 11.4297\nc-23.0703 30.1904 -38.5898 66.3408 -43.8604 105.83l-17.2197 -1.08008c-9.20996 -0.569336 -17 6.74023 -17 15.9707v29.9395c0 9.23047 7.79004 16.5498 17 15.9707l17.2197 -1.08008c5.28027 39.4893 20.7998 75.6396 43.8604 105.84l-12.9502 11.4297\nc-6.91992 6.10059 -7.25977 16.7803 -0.729492 23.3105l21.1699 21.1592c6.51953 6.52051 17.1992 6.19043 23.3096 -0.729492l11.4297 -12.9502c30.1904 23.0703 66.3408 38.5898 105.83 43.8604l-1.08008 17.2197c-0.569336 9.20996 6.74023 17 15.9707 17h29.9395\nc9.23047 0 16.5498 -7.79004 15.9707 -17l-1.07031 -17.21c39.4795 -5.28027 75.6299 -20.7998 105.83 -43.8604l11.4297 12.9404c6.10059 6.91992 16.7803 7.25977 23.3105 0.729492l21.1592 -21.1592c6.52051 -6.52051 6.19043 -17.2002 -0.729492 -23.3105\nl-12.9502 -11.4297c23.0703 -30.2002 38.5898 -66.3506 43.8604 -105.84zM281.84 349.39l-4.00977 -64.1201c10.2998 -2.40918 19.8896 -6.50977 28.6201 -11.9492l42.6201 48.29c-19.6006 14.1201 -42.4199 23.71 -67.2305 27.7793zM230.16 349.39\nc-24.8105 -4.06934 -47.6299 -13.6592 -67.2305 -27.7793l42.6201 -48.29c8.73047 5.42969 18.3301 9.54004 28.6201 11.9492zM126.39 285.06c-14.1201 -19.5996 -23.71 -42.4092 -27.7793 -67.2197l64.1201 -4.00977c2.41992 10.29 6.51953 19.8896 11.96 28.6201z\nM98.6104 166.16c4.06934 -24.8105 13.6592 -47.6299 27.7793 -67.2305l48.29 42.6201c-5.42969 8.73047 -9.54004 18.3301 -11.9492 28.6201zM230.16 34.6104l4 64.1201c-10.29 2.41992 -19.8906 6.51953 -28.6201 11.96l-42.6104 -48.3008\nc19.6006 -14.1201 42.4199 -23.71 67.2305 -27.7793zM256 160c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM281.84 34.6104c24.8105 4.06934 47.6201 13.6592 67.2197 27.7793l-42.6094 48.3008\nc-8.73047 -5.44043 -18.3301 -9.55078 -28.6201 -11.96zM385.61 98.9404c14.1201 19.5898 23.71 42.4092 27.7793 67.2295l-64.1201 4.00977c-2.40918 -10.2998 -6.50977 -19.8896 -11.9492 -28.6201zM349.27 213.83l64.1201 4\nc-4.06934 24.8096 -13.6592 47.6299 -27.7793 67.2295l-48.3008 -42.6094c5.44043 -8.73047 9.55078 -18.3301 11.96 -28.6201z\" />\n    <glyph glyph-name=\"envelope-open-text\" unicode=\"&#xf658;\" \nd=\"M176 232c-8.83984 0 -16 7.16016 -16 16v16c0 8.83984 7.16016 16 16 16h160c8.83984 0 16 -7.16016 16 -16v-16c0 -8.83984 -7.16016 -16 -16 -16h-160zM160 152v16c0 8.83984 7.16016 16 16 16h160c8.83984 0 16 -7.16016 16 -16v-16c0 -8.83984 -7.16016 -16 -16 -16\nh-160c-8.83984 0 -16 7.16016 -16 16zM256 30.8701c16.4199 0 32.8398 5.07031 46.8604 15.1895l209.14 151.08v-213.14c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v213.14l209.14 -151.08c14.0205 -10.1299 30.4404 -15.1895 46.8604 -15.1895z\nM493.61 285.05c11.6094 -9.09961 18.3896 -23.0303 18.3896 -37.7695v-10.6504l-96 -69.3496v184.72h-320v-184.72l-96 69.3496v10.6504c0.00195312 12.8945 8.24023 29.8154 18.3896 37.7695c8.85059 6.94043 17.2402 13.4805 29.6104 22.8105v44.1396\nc0 26.5098 21.4902 48 48 48h77.5498c3.04004 2.2002 5.87012 4.25977 9.04004 6.55957c16.8203 12.2705 50.21 41.79 73.4102 41.4404c23.2002 0.349609 56.5996 -29.1699 73.4102 -41.4404c3.16992 -2.2998 6 -4.35938 9.04004 -6.55957h77.5498\nc26.5098 0 48 -21.4902 48 -48v-44.1396c12.3701 -9.34082 20.7598 -15.8701 29.6104 -22.8105z\" />\n    <glyph glyph-name=\"folder-minus\" unicode=\"&#xf65d;\" \nd=\"M464 320c26.5098 0 48 -21.4902 48 -48v-224c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h160l64 -64h192zM368 152v16c0 8.83984 -7.16016 16 -16 16h-192c-8.83984 0 -16 -7.16016 -16 -16v-16\nc0 -8.83984 7.16016 -16 16 -16h192c8.83984 0 16 7.16016 16 16z\" />\n    <glyph glyph-name=\"folder-plus\" unicode=\"&#xf65e;\" \nd=\"M464 320c26.5098 0 48 -21.4902 48 -48v-224c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h160l64 -64h192zM368 152v16c0 8.83984 -7.16016 16 -16 16h-72v72c0 8.83984 -7.16016 16 -16 16h-16\nc-8.83984 0 -16 -7.16016 -16 -16v-72h-72c-8.83984 0 -16 -7.16016 -16 -16v-16c0 -8.83984 7.16016 -16 16 -16h72v-72c0 -8.83984 7.16016 -16 16 -16h16c8.83984 0 16 7.16016 16 16v72h72c8.83984 0 16 7.16016 16 16z\" />\n    <glyph glyph-name=\"funnel-dollar\" unicode=\"&#xf662;\" horiz-adv-x=\"640\" \nd=\"M433.46 282.06c-83.4102 -20.8896 -145.46 -96.2695 -145.46 -186.06c0 -54.3496 22.7998 -103.38 59.21 -138.35c-10.75 -20.54 -38.3604 -29.21 -59.2197 -13.5703l-79.9902 60c-10.0703 7.55957 -16 19.4102 -16 32v155.92l-182.66 201.93\nc-19.9502 19.9502 -5.82031 54.0703 22.4004 54.0703h480.52c28.2207 0 42.3506 -34.1201 22.4004 -54.0703zM480 256c88.3701 0 160 -71.6299 160 -160s-71.6299 -160 -160 -160s-160 71.6299 -160 160s71.6299 160 160 160zM496 16.1201\nc23.6299 0.629883 42.6699 20.54 42.6699 45.0703c0 19.9697 -12.9902 37.8096 -31.5801 43.3896l-45 13.5c-5.16016 1.54004 -8.76953 6.78027 -8.76953 12.7295c0 7.27051 5.2998 13.1904 11.7998 13.1904h28.1104c4.55957 0 8.94922 -1.29004 12.8193 -3.71973\nc3.24023 -2.03027 7.36035 -1.91016 10.1299 0.729492l11.75 11.21c3.53027 3.37012 3.33008 9.20996 -0.569336 12.1406c-9.10059 6.83984 -20.0801 10.7695 -31.3701 11.3496v16.29c0 4.41992 -3.58008 8 -8 8h-16c-4.41992 0 -8 -3.58008 -8 -8v-16.1201\nc-23.6201 -0.629883 -42.6699 -20.5498 -42.6699 -45.0703c0 -19.9697 12.9893 -37.8096 31.5801 -43.3896l45 -13.5c5.15918 -1.54004 8.76953 -6.78027 8.76953 -12.7295c0 -7.27051 -5.2998 -13.1904 -11.7998 -13.1904h-28.1104\nc-4.55957 0 -8.9502 1.2998 -12.8193 3.71973c-3.24023 2.03027 -7.36035 1.91016 -10.1309 -0.729492l-11.75 -11.21c-3.5293 -3.37012 -3.3291 -9.20996 0.570312 -12.1406c9.10059 -6.83008 20.0801 -10.7695 31.3701 -11.3496v-16.29c0 -4.41992 3.58008 -8 8 -8h16\nc4.41992 0 8 3.58008 8 8v16.1201z\" />\n    <glyph glyph-name=\"gopuram\" unicode=\"&#xf664;\" \nd=\"M496 96c8.7998 0 16 -7.2002 16 -16v-128c0 -8.7998 -7.2002 -16 -16 -16h-80v160h-32v128h-32v96h-32v-96h32v-128h32v-160h-80v80c0 8.7998 -7.2002 16 -16 16h-64c-8.7998 0 -16 -7.2002 -16 -16v-80h-80v160h32v128h32v96h-32v-96h-32v-128h-32v-160h-80\nc-8.7998 0 -16 7.2002 -16 16v128c0 8.7998 7.2002 16 16 16h16v112c0 8.7998 7.2002 16 16 16h16v80c0 8.7998 7.2002 16 16 16h16v112c0 8.7998 7.2002 16 16 16s16 -7.2002 16 -16v-16h64v16c0 8.7998 7.2002 16 16 16s16 -7.2002 16 -16v-16h64v16\nc0 8.7998 7.2002 16 16 16s16 -7.2002 16 -16v-16h64v16c0 8.7998 7.2002 16 16 16s16 -7.2002 16 -16v-112h16c8.7998 0 16 -7.2002 16 -16v-80h16c8.7998 0 16 -7.2002 16 -16v-112h16zM232 272v-48h48v48c0 8.7998 -7.2002 16 -16 16h-16c-8.7998 0 -16 -7.2002 -16 -16z\nM288 96v64c0 8.7998 -7.2002 16 -16 16h-32c-8.7998 0 -16 -7.2002 -16 -16v-64h64z\" />\n    <glyph glyph-name=\"hamsa\" unicode=\"&#xf665;\" \nd=\"M509.34 140.75c1.46875 -3.37012 2.66016 -9.08984 2.66016 -12.7656c0 -6.95703 -3.85254 -16.7295 -8.59961 -21.8145l-102.681 -110.03c-35.6895 -38.2197 -88.4102 -60.1396 -144.72 -60.1396s-109.03 21.9199 -144.71 60.1396l-102.69 110.03\nc-4.74707 5.08496 -8.59961 14.8574 -8.59961 21.8145c0 3.67578 1.19141 9.39551 2.66016 12.7656c5.05957 11.6904 16.5898 19.25 29.3398 19.25h64v208c0 22 18 40 40 40s40 -18 40 -40v-134c0 -5.51953 4.48047 -10 10 -10h20c5.51953 0 10 4.48047 10 10v174\nc0 22 18 40 40 40s40 -18 40 -40v-174c0 -5.51953 4.48047 -10 10 -10h20c5.51953 0 10 4.48047 10 10v134c0 22 18 40 40 40s40 -18 40 -40v-208h64c12.75 0 24.2803 -7.55957 29.3398 -19.25zM256 32c53.0195 0 96 64 96 64s-42.9805 64 -96 64s-96 -64 -96 -64\ns42.9805 -64 96 -64zM256 128c17.6699 0 32 -14.3301 32 -32s-14.3301 -32 -32 -32s-32 14.3301 -32 32s14.3301 32 32 32z\" />\n    <glyph glyph-name=\"haykal\" unicode=\"&#xf666;\" \nd=\"M496.25 245.48c17.54 -2.46094 21.6797 -26.2705 6.04004 -34.6602l-98.1602 -52.6602l74.4805 -83.54c11.8594 -13.29 0.00976562 -34.25 -17.3506 -30.4902l-108.569 23.6504l4.10938 -112.55c0.430664 -11.6504 -8.87012 -19.2207 -18.4102 -19.2207\nc-5.15918 0 -10.3896 2.20996 -14.1992 7.18066l-68.1807 88.8994l-68.1797 -88.8994c-3.81055 -4.9707 -9.0498 -7.18066 -14.2002 -7.18066c-9.54004 0 -18.8398 7.57031 -18.4102 19.2207l4.11035 112.55l-108.57 -23.6504\nc-1.39941 -0.30957 -2.75977 -0.450195 -4.06934 -0.450195c-15.0107 0 -24.21 18.6807 -13.29 30.9307l74.4795 83.54l-98.1602 52.6592c-15.6494 8.40039 -11.5098 32.21 6.03027 34.6709l110 15.4297l-41.8203 104.34c-6.66016 16.6396 11.6006 32.1797 26.5898 22.6299\nl94.04 -59.8896l34.0908 107.189c2.70996 8.55078 10.0293 12.8203 17.3496 12.8203s14.6396 -4.26953 17.3496 -12.8203l34.0908 -107.18l94.04 59.8896c14.9893 9.55078 33.2598 -5.98926 26.5898 -22.6299l-41.8203 -104.34zM338.51 136.32l-35.6094 39.9297\nl46.9199 25.1699l-52.5703 7.37988l19.9902 49.8701l-44.9502 -28.6201l-16.29 51.2305l-16.3096 -51.2305l-44.9502 28.6201l19.9902 -49.8701l-52.5703 -7.37988l46.9199 -25.1699l-35.5996 -39.9297l51.8896 11.2998l-1.95996 -53.79l32.5898 42.4902l32.5898 -42.4902\nl-1.96973 53.79z\" />\n    <glyph glyph-name=\"jedi\" unicode=\"&#xf669;\" horiz-adv-x=\"544\" \nd=\"M479.99 96h39.96c-42.6299 -94.1699 -137.641 -160 -247.98 -160c-4.25977 0 -8.5498 0.0898438 -12.8496 0.290039c-103.97 4.76953 -193.851 69.4795 -235.101 159.71h39.9102l-58.5996 58.5996c-2.57031 12.8809 -4.49023 25.9805 -5.11035 39.4102\nc-0.469727 10.0801 -0.129883 20.0703 0.5 29.9902h47.21l-41.3799 41.3799c14.3701 64.7002 52.1006 122.55 107.97 162.07c2.77051 1.95996 5.9707 3 9.27051 3c5.37988 0 10.4297 -2.70996 13.5098 -7.25c3.0498 -4.5 3.64062 -10 1.62012 -15.0898\nc-6.53027 -16.4502 -9.83984 -33.7002 -9.83984 -51.2607c0 -45.1191 21.04 -86.5801 57.71 -113.739c4.00977 -2.9707 6.4502 -7.48047 6.69043 -12.3799c0.239258 -4.90039 -1.76074 -9.65039 -5.48047 -13.0107c-26.5498 -23.9795 -41.1699 -56.5 -41.1699 -91.5801\nc0 -60.0293 42.9502 -110.279 99.8896 -121.92l2.5 65.2607l-27.1602 -18.4805c-2.96973 -2 -7.40918 -1.7002 -10 0.75c-2.72949 2.61035 -3.30957 6.70996 -1.38965 9.94043l20.1299 33.7695l-42.0693 8.71973c-3.71094 0.75 -6.38086 4.05078 -6.38086 7.83008\nc0 3.78027 2.68066 7.08008 6.38086 7.83008l42.0693 8.73047l-20.1094 33.7295c-1.94043 3.27051 -1.36035 7.35059 1.35938 9.94043c2.73047 2.60938 6.86035 2.89941 10 0.779297l30.3906 -20.6592l11.5195 287.97c0.160156 4.29004 3.66992 7.66992 8 7.66992h0.0400391\nc4.25293 0 7.81934 -3.44922 7.95996 -7.7002l11.5303 -287.93l30.3896 20.6699c3.03027 2.08984 7.2998 1.75 10 -0.799805c2.71973 -2.60059 3.2998 -6.68066 1.37988 -9.91016l-20.1299 -33.7705l42.0703 -8.72949c3.68945 -0.770508 6.37988 -4.06055 6.37988 -7.83008\nc0 -3.78027 -2.67969 -7.08008 -6.37988 -7.83008l-42.0703 -8.71973l20.1104 -33.7305c0.631836 -1.05078 1.14453 -2.89844 1.14453 -4.12402c0 -1.89355 -1.11328 -4.49023 -2.48438 -5.7959c-2.63086 -2.49023 -7.04004 -2.85938 -10.0205 -0.799805l-27.1699 18.4697\nl2.5 -65.3398c48.4697 9.40039 87.5703 48.1504 97.3096 96.5c8.78027 43.5605 -5.63965 87.3203 -38.5693 117.07c-3.73047 3.37012 -5.73047 8.10938 -5.49023 13.0303c0.240234 4.89941 2.67969 9.41992 6.7002 12.3994c36.6602 27.1602 57.6895 68.6104 57.6895 113.73\nc0 17.5801 -3.30957 34.8496 -9.85938 51.3096c-2.03027 5.09961 -1.44043 10.5996 1.60938 15.0898c3.08008 4.53027 8.12012 7.24023 13.4902 7.24023c3.28027 0 6.48047 -1.03027 9.25 -2.99023c55.4805 -39.2197 93.4102 -97.4795 107.91 -162.27l-41.25 -41.2402\nh46.9502c0.370117 -5.75977 1.0498 -11.46 1.0498 -17.2695c0 -17.7402 -1.83984 -35.0605 -5.12988 -51.8604z\" />\n    <glyph glyph-name=\"journal-whills\" unicode=\"&#xf66a;\" horiz-adv-x=\"448\" \nd=\"M448 89.5996c0 -9.59961 -3.2002 -16 -9.59961 -19.1992c-3.2002 -12.8008 -3.2002 -57.6006 0 -73.6006c6.39941 -6.39941 9.59961 -12.7998 9.59961 -19.2002v-16c0 -16 -12.7998 -25.5996 -25.5996 -25.5996h-326.4c-54.4004 0 -96 41.5996 -96 96v320\nc0 54.4004 41.5996 96 96 96h326.4c16 0 25.5996 -9.59961 25.5996 -25.5996v-332.801zM133.08 303.61c-2.98047 -10.0908 -5.08008 -20.5605 -5.07031 -31.6201c0 -0.520508 0.140625 -0.990234 0.150391 -1.50977l37.1094 -32.4707\nc3.33008 -2.89941 3.6709 -7.9502 0.75 -11.2793c-1.5791 -1.81055 -3.7998 -2.73047 -6.01953 -2.73047h-0.0175781c-1.65527 0 -4.00879 0.886719 -5.25195 1.98047l-23.5908 20.6396c11.54 -49.5801 55.7705 -86.6201 108.86 -86.6201s97.3203 37.04 108.87 86.6299\nl-23.5898 -20.6396c-1.52051 -1.32031 -3.39062 -1.98047 -5.27051 -1.98047h-0.0146484c-2 0 -4.69043 1.22363 -6.00488 2.73047c-1.09668 1.24707 -1.98633 3.60645 -1.98633 5.2666c0 2.00293 1.22559 4.69727 2.73633 6.0127l37.1094 32.4707\nc0.0107422 0.519531 0.150391 0.990234 0.150391 1.50977c0 11.0498 -2.09961 21.5195 -5.07031 31.5996l-21.2598 -21.2598c-1.57031 -1.55957 -3.61035 -2.33984 -5.66016 -2.33984s-4.09961 0.780273 -5.66016 2.33984c-3.11914 3.12012 -3.11914 8.19043 0 11.3105\nl26.4199 26.4199c-10 20.8994 -26.2393 37.9795 -46.3691 49.2598c5.97949 -9.73047 9.59961 -21.0703 9.59961 -33.3301c0 -19.96 -9.33008 -37.5703 -23.6602 -49.3096c9.65039 -10.0605 15.6602 -23.6504 15.6602 -38.6904c0 -26.9404 -19.04 -49.4004 -44.3701 -54.7402\nl-1.42969 34.2803l12.6797 -8.62012c0.69043 -0.459961 1.46973 -0.689453 2.25 -0.689453c0.980469 0 1.98047 0.369141 2.75 1.08984c1.36035 1.2793 1.63965 3.33984 0.69043 4.94922l-8.54004 14.3105l17.9102 3.71973\nc1.85938 0.390625 3.18945 2.03027 3.18945 3.91992c0 1.89062 -1.33008 3.53027 -3.18945 3.91992l-17.9102 3.7207l8.54004 14.3096c0.308594 0.521484 0.55957 1.43652 0.55957 2.04297c0 0.950195 -0.55957 2.25293 -1.25 2.90723\nc-0.645508 0.59668 -1.88281 1.08105 -2.76172 1.08105c-0.672852 0 -1.67578 -0.300781 -2.23828 -0.670898l-14.2002 -9.65039l-4.67969 112.29c-0.0898438 2.13965 -1.86035 3.83008 -4 3.83008s-3.91016 -1.69043 -4 -3.83008l-4.62012 -110.81l-12.0098 8.15918\nc-1.56055 1.03027 -3.63965 0.890625 -5 -0.40918c-1.36035 -1.28027 -1.63965 -3.34082 -0.69043 -4.9502l8.54004 -14.3105l-17.9102 -3.71973c-1.85938 -0.389648 -3.18945 -2.03027 -3.18945 -3.91992s1.33008 -3.53027 3.18945 -3.91992l17.9102 -3.71973\nl-8.54004 -14.3105c-0.308594 -0.521484 -0.55957 -1.43652 -0.55957 -2.04297c0 -0.950195 0.55957 -2.25293 1.25 -2.90723c0.769531 -0.709961 1.75 -1.08984 2.75 -1.08984c0.780273 0 1.55957 0.240234 2.25 0.69043l10.3701 7.04004l-1.36035 -32.71\nc-25.3398 5.35938 -44.3799 27.8193 -44.3799 54.7598c0 15.04 6.00977 28.6299 15.6602 38.6904c-14.3301 11.7393 -23.6602 29.3496 -23.6602 49.3096c0 12.2598 3.62012 23.5996 9.61035 33.3398c-20.1299 -11.29 -36.3701 -28.3594 -46.3701 -49.2598l26.4199 -26.4199\nc3.12012 -3.12012 3.12012 -8.19043 0 -11.3105c-1.57031 -1.55957 -3.61035 -2.33984 -5.66016 -2.33984s-4.09961 0.780273 -5.66016 2.33984zM380.8 0v64h-284.8c-16 0 -32 -12.7998 -32 -32s12.7998 -32 32 -32h284.8z\" />\n    <glyph glyph-name=\"kaaba\" unicode=\"&#xf66b;\" horiz-adv-x=\"576\" \nd=\"M554.12 364.49c13.0703 -4.36035 21.8799 -16.5898 21.8799 -30.3604v-49.0098l-265 79.5098c-15.0596 4.5 -30.9502 4.5 -45.9805 0l-265.02 -79.5098v49.0098c0.000976562 12.7314 9.80273 26.332 21.8799 30.3604l235.771 78.5801\nc8.15723 2.71973 21.7559 4.92676 30.3545 4.92676s22.1982 -2.20703 30.3555 -4.92676zM274.22 333.97c9 2.7207 18.5498 2.7207 27.5898 0l274.2 -82.2598v-228.39c0 -15 -10.4199 -27.9902 -25.0596 -31.2402l-242.12 -53.7998\nc-5.67871 -1.2627 -15.0078 -2.28809 -20.8252 -2.28809s-15.1465 1.02539 -20.8252 2.28809l-242.12 53.7998c-14.6396 3.25977 -25.0596 16.2402 -25.0596 31.2402v228.38zM128 217.89v16.5801c0 5.28027 -5.01953 9.11035 -10.1104 7.7207l-80 -21.8203\nc-3.47949 -0.950195 -5.88965 -4.11035 -5.88965 -7.71973v-16.5801c0 -5.27051 5.01953 -9.10059 10.1104 -7.7207l80 21.8203c3.47949 0.950195 5.88965 4.11035 5.88965 7.71973zM272 257.17v16.5801c0 5.28027 -5.01953 9.11035 -10.1104 7.71973l-96 -26.1797\nc-3.47949 -0.950195 -5.88965 -4.11035 -5.88965 -7.71973v-16.5801c0 -5.28027 5.01953 -9.11035 10.1104 -7.7207l96 26.1807c3.47949 0.950195 5.88965 4.10938 5.88965 7.71973zM448 234.47v-16.5801v-0.00488281c0 -3.37109 2.63867 -6.82715 5.88965 -7.71484\nl80 -21.8203c5.09082 -1.38965 10.1104 2.44043 10.1104 7.7207v16.5801c0 3.60938 -2.41016 6.76953 -5.88965 7.71973l-80 21.8203c-5.09082 1.38965 -10.1104 -2.44043 -10.1104 -7.7207zM304 273.74v-16.5801v-0.00585938c0 -3.37012 2.63867 -6.82617 5.88965 -7.71387\nl96 -26.1807c5.09082 -1.38965 10.1104 2.44043 10.1104 7.7207v16.5791c0 3.61035 -2.41016 6.77051 -5.88965 7.7207l-96 26.1797c-5.09082 1.38965 -10.1104 -2.44043 -10.1104 -7.71973z\" />\n    <glyph glyph-name=\"khanda\" unicode=\"&#xf66d;\" \nd=\"M415.81 382c73.71 -40.2402 111.78 -123.85 90.1602 -207.51c-7.25 -28.0898 -22.3799 -53.5703 -41.25 -75.5898l-52.5098 -61.3105c-4.87012 -5.67969 -13.04 -7.22949 -19.6504 -3.70996l-79.3496 42.2305l-29.21 -20.3408l47.0801 -32.7793\nc1.66992 0.370117 3.22949 1.00977 5.00977 1.00977c13.25 0 23.9902 -10.7402 23.9902 -24c0 -13.25 -10.7402 -24 -23.9902 -24c-12.0898 0 -21.6797 9.11035 -23.3301 20.7598l-40.9102 28.4805v-30.1504c9.38086 -5.58008 15.9902 -15.3896 15.9902 -27.0996\nc0 -17.6699 -14.3203 -32 -31.9795 -32c-17.6602 0 -31.9805 14.3301 -31.9805 32c0 11.7197 6.60059 21.5293 15.9902 27.0996v29.9502l-40.6299 -28.2803c-1.64062 -11.6494 -11.2305 -20.7598 -23.3301 -20.7598c-13.25 0 -23.9902 10.75 -23.9902 24\nc0 13.2598 10.7402 24 23.9902 24c1.78027 0 3.33984 -0.639648 5.00977 -1.00977l47.0801 32.7793l-29.21 20.3301l-79.3496 -42.2295c-6.61035 -3.52051 -14.7803 -1.96973 -19.6504 3.71973l-55.9697 65.3604c-12.5703 14.6797 -23.3906 31.0693 -30.46 49.0596\nc-35.6602 90.6904 2.95996 186.391 81.4893 229.24c6.34082 3.5 15.0205 2.63965 20.0205 -2.7002c4.99023 -5.30957 6.45996 -12.9199 2.58984 -19.0801c-16.4902 -26.1602 -25.2002 -56.3896 -25.2002 -87.4697c0.180664 -53.1904 26.7598 -102.62 71.0303 -132.18\nl76.5898 -53.3301v19.8994l-44.0498 36.0908c-3.91016 4.20996 -5 10.0996 -2.81055 15.2793l7.85059 17.2402c-33.8506 19.2598 -56.9404 55.2402 -56.9404 96.9902c0 40.79 22.0205 76.1396 54.5898 95.7197l-5.21973 11.4404\nc-2.33008 5.5293 -0.929688 11.8301 3.57031 16.04l58.9902 52.8096l58.9893 -52.8203c4.5 -4.20996 5.91016 -10.5098 3.57031 -16.04l-5.21973 -11.4395c32.5693 -19.5801 54.5898 -54.9199 54.5898 -95.71c0 -41.7402 -23.0996 -77.7305 -56.9404 -96.9902\nl7.85059 -17.2402c2.18945 -5.18945 1.10938 -11.0801 -2.81055 -15.2793l-44.0498 -36.0908v-20.0996l76.6299 53.3496c44.5 29.7207 71.0801 79.1602 71.2705 132.41c0 31.0205 -8.70996 61.25 -25.2002 87.4102c-1.36328 2.15723 -2.46973 5.97949 -2.46973 8.53223\nc0 3.51465 1.96191 8.43652 4.37988 10.9883c4.99023 5.34961 12.9902 6.51953 19.3594 3.01953zM319.82 272c0 21.3203 -10.5801 40.1201 -26.6504 51.7695l-7.83008 -17.1797c-8.75 -24.5195 -8.75 -51.04 0 -75.5596l5.65039 -12.4102\nc17.3398 11.46 28.8301 31.0801 28.8301 53.3799zM191.89 272c0 -22.2998 11.5 -41.9297 28.8408 -53.3896l5.64941 12.4092c8.75 24.5303 8.75 51.04 0 75.5605l-7.83008 17.1797c-16.0801 -11.6396 -26.6602 -30.4395 -26.6602 -51.7598z\" />\n    <glyph glyph-name=\"landmark\" unicode=\"&#xf66f;\" \nd=\"M501.62 355.89c6.24023 -2.33984 10.3799 -8.30957 10.3799 -14.9795v-36.9102c0 -8.83984 -7.16016 -16 -16 -16h-480c-8.83984 0 -16 7.16016 -16 16v36.9102c0 6.11914 4.65039 12.8301 10.3799 14.9795l234.39 90.0703\nc2.99902 1.12598 8.03223 2.04004 11.2354 2.04004s8.23633 -0.914062 11.2354 -2.04004zM64 256h64v-160h96v160h64v-160h96v160h64v-160h16c8.83984 0 16 -7.16016 16 -16v-48h-448v48c0 8.83984 7.16016 16 16 16h16v160zM496 0c8.83984 0 16 -7.16016 16 -16v-32\nc0 -8.83984 -7.16016 -16 -16 -16h-480c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h480z\" />\n    <glyph glyph-name=\"mail-bulk\" unicode=\"&#xf674;\" horiz-adv-x=\"576\" \nd=\"M160 0c25.5996 0 51.2002 22.4004 64 32c64 44.7998 83.2002 60.7998 96 70.4004v-134.4c0 -17.6699 -14.3301 -32 -32 -32h-256c-17.6699 0 -32 14.3301 -32 32v134.4c12.7998 -9.60059 32 -25.6006 96 -70.4004c12.7998 -9.59961 38.4004 -32 64 -32zM288 192\nc17.6699 0 32 -14.3301 32 -32v-19.2002c-25.5996 -19.2002 -22.4004 -19.2002 -115.2 -86.3994c-9.59961 -3.2002 -28.7998 -22.4004 -44.7998 -22.4004s-35.2002 19.2002 -44.7998 25.5996c-92.7998 67.2002 -89.6006 67.2002 -115.2 86.4004v16\nc0 17.6699 14.3301 32 32 32h256zM544 288c17.6699 0 32 -14.3301 32 -32v-192c0 -17.6699 -14.3301 -32 -32 -32h-192v134.4l-0.290039 -0.220703c-3.12012 32.4004 -30.5 57.8203 -63.71 57.8203h-96v32c0 17.6699 14.3301 32 32 32h320zM512 160v64h-64v-64h64zM160 256\nv-32h-96v192c0 17.6699 14.3301 32 32 32h320c17.6699 0 32 -14.3301 32 -32v-96h-224c-35.29 0 -64 -28.71 -64 -64z\" />\n    <glyph glyph-name=\"menorah\" unicode=\"&#xf676;\" horiz-adv-x=\"640\" \nd=\"M144 320c8.83984 0 16 -7.16016 16 -16v-144h-64v144c0 8.83984 7.16016 16 16 16h32zM240 320c8.83984 0 16 -7.16016 16 -16v-144h-64v144c0 8.83984 7.16016 16 16 16h32zM432 320c8.83984 0 16 -7.16016 16 -16v-144h-64v144c0 8.83984 7.16016 16 16 16h32zM528 320\nc8.83984 0 16 -7.16016 16 -16v-144h-64v144c0 8.83984 7.16016 16 16 16h32zM608 352c-17.6699 0 -32 14.3301 -32 32s32 64 32 64s32 -46.3301 32 -64s-14.3301 -32 -32 -32zM512 352c-17.6699 0 -32 14.3301 -32 32s32 64 32 64s32 -46.3301 32 -64s-14.3301 -32 -32 -32\nzM416 352c-17.6699 0 -32 14.3301 -32 32s32 64 32 64s32 -46.3301 32 -64s-14.3301 -32 -32 -32zM320 352c-17.6699 0 -32 14.3301 -32 32s32 64 32 64s32 -46.3301 32 -64s-14.3301 -32 -32 -32zM224 352c-17.6699 0 -32 14.3301 -32 32s32 64 32 64s32 -46.3301 32 -64\ns-14.3301 -32 -32 -32zM128 352c-17.6699 0 -32 14.3301 -32 32s32 64 32 64s32 -46.3301 32 -64s-14.3301 -32 -32 -32zM32 352c-17.6699 0 -32 14.3301 -32 32s32 64 32 64s32 -46.3301 32 -64s-14.3301 -32 -32 -32zM576 160v144c0 8.83984 7.16016 16 16 16h32\nc8.83984 0 16 -7.16016 16 -16v-144c0 -53.0195 -42.9805 -96 -96 -96h-192v-64h176c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-416c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h176v64h-192c-53.0195 0 -96 42.9805 -96 96\nv144c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-144c0 -17.6699 14.3301 -32 32 -32h192v176c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-176h192c17.6699 0 32 14.3301 32 32z\" />\n    <glyph glyph-name=\"mosque\" unicode=\"&#xf678;\" horiz-adv-x=\"640\" \nd=\"M0 -32v320h128v-320c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32zM579.16 160h-358.32c-17.8594 17.3896 -28.8398 37.3398 -28.8398 58.9102c0 52.8594 41.79 93.79 87.9199 122.899c41.9502 26.46 80.6299 57.7705 111.96 96.2207\nl8.12012 9.96973l8.12012 -9.96973c31.3301 -38.4502 70.0195 -69.75 111.96 -96.2207c46.1299 -29.1094 87.9199 -70.04 87.9199 -122.899c0 -21.5703 -10.9805 -41.5205 -28.8398 -58.9102zM608 128c17.6699 0 32 -14.3301 32 -32v-128c0 -17.6699 -14.3301 -32 -32 -32\nh-32v64c0 17.6699 -14.3301 32 -32 32s-32 -14.3301 -32 -32v-64h-64v72c0 48 -48 72 -48 72s-48 -24 -48 -72v-72h-64v64c0 17.6699 -14.3301 32 -32 32s-32 -14.3301 -32 -32v-64h-32c-17.6699 0 -32 14.3301 -32 32v128c0 17.6699 14.3301 32 32 32h416zM64 448\nc0 0 64 -32 64 -96v-32h-128v32c0 64 64 96 64 96z\" />\n    <glyph glyph-name=\"om\" unicode=\"&#xf679;\" \nd=\"M360.6 387.06l-21.5801 21.5605c-1.68848 1.68652 -3.05957 4.99316 -3.05957 7.37988s1.37109 5.69336 3.05957 7.37988l21.5703 21.5605c4.08008 4.06934 10.6797 4.06934 14.7598 0l21.5801 -21.5605c1.68945 -1.68652 3.06055 -4.99316 3.06055 -7.37988\ns-1.37109 -5.69336 -3.06055 -7.37988l-21.5693 -21.5605c-1.6875 -1.68848 -4.99316 -3.05957 -7.37988 -3.05957c-2.3877 0 -5.69336 1.37109 -7.38086 3.05957zM412.11 256c55.0898 0 99.8896 -44.7998 99.8896 -99.8799v-100.12c0 -48.5303 -47.4805 -88 -96.0195 -88\nc-96.0205 0 -96.0205 64 -96.0205 64v37.8701c0 7.55957 9.42969 10.8896 14.2002 5.01953c15.1494 -18.6494 42.4199 -42.8896 81.8203 -42.8896c13.2393 0 32.0098 10.7695 32.0098 24v100.12c0 19.79 -16.1006 35.8799 -35.8799 35.8799\nc-9.60059 0 -18.6006 -3.73047 -25.3799 -10.5l-24.25 -24.25c-18.8701 -18.8604 -43.9502 -29.25 -70.6406 -29.25h-21.6895c11.0293 -18.9004 17.8096 -40.5801 17.8096 -64c0 -70.5801 -57.4297 -128 -128.02 -128c-118.811 0 -160.03 96 -159.94 150.81\nc0.0195312 8.80078 10.2598 12.7705 14.79 5.2207c22.7998 -38.0107 49.1299 -92.0303 145.15 -92.0303c35.2998 0 64.0098 28.7002 64.0098 64s-28.71 64 -64.0098 64h-33.0303c-5.57031 0.450195 -10.6406 3.49023 -13.1699 8.5498l-16.0898 32.1699\nc-5.35059 10.7002 2.42969 23.2803 14.3896 23.2803h31.9004c26.4697 0 48.0098 21.5303 48.0098 48s-21.54 48 -48.0098 48c-11.25 0 -21.8203 -3.80957 -30.2705 -10.71c-5.54004 -4.53027 -13.4795 -4.50977 -19.2002 -0.209961l-26.1494 19.6299\nc-8.08984 6.08008 -8.48047 17.9697 -1.12012 24.9297c25.1094 23.7402 59.8594 34.71 96.0098 28.7803c43.1602 -7.08008 79.4199 -40.6396 89.5205 -83.1895c6.43945 -27.1201 2.80957 -53.1309 -7.73047 -75.2305h46.8398c9.60059 0 18.6006 3.73047 25.3799 10.5\nl24.25 24.25c18.8701 18.8604 43.9502 29.25 70.6406 29.25zM454.29 380.73c10.5596 7.95996 25.7002 0.489258 25.7002 -12.7305v-35.5195c0 -2.36035 -0.509766 -4.71094 -1.53027 -6.83008c-2.96973 -6.30078 -21.8301 -37.6602 -101.75 -37.6602\nc-78.4297 0 -117.19 69.3896 -118.8 72.3398c-3.61035 6.62988 -2.08008 14.8799 3.66016 19.7998c5.69922 4.92969 14.1201 5.16992 20.1396 0.549805c3.53027 -2.69922 87.0303 -65.0693 172.58 0.0507812z\" />\n    <glyph glyph-name=\"pastafarianism\" unicode=\"&#xf67b;\" horiz-adv-x=\"640\" \nd=\"M624.54 100.33c12.4004 -4.71973 18.5996 -18.5801 13.8896 -30.9805c-4.69922 -12.4092 -18.5801 -18.6299 -30.9697 -13.8799c-8.11035 3.08984 -14.3398 0.19043 -31.3896 -11.3594c-13.5508 -9.15039 -30.8301 -20.8408 -52.4199 -20.8408\nc-7.16992 0 -14.8301 1.28027 -22.9707 4.39062c-32.6602 12.4395 -39.9893 41.3301 -45.3301 62.4395c-2.20996 8.7207 -3.98926 14.4902 -5.94922 18.8701c-16.6201 -13.5996 -36.9307 -25.8701 -61.6201 -34.1602c10.0098 -37 32.2793 -90.8096 60.2197 -90.8096\nc13.25 0 24 -10.75 24 -24s-10.75 -24 -24 -24c-66.7402 0 -97.0498 88.6299 -107.42 129.14c-6.69043 -0.599609 -13.4199 -1.13965 -20.5801 -1.13965s-13.8896 0.540039 -20.5801 1.13965c-10.3701 -40.5098 -40.6797 -129.14 -107.42 -129.14c-13.25 0 -24 10.75 -24 24\ns10.75 24 24 24c28.0801 0 50.2998 53.7998 60.2598 90.7998c-24.6895 8.29004 -45.0195 20.5605 -61.6396 34.1699c-1.95996 -4.37988 -3.74023 -10.1494 -5.9502 -18.8701c-5.34961 -21.1094 -12.6699 -50 -45.3301 -62.4395\nc-8.13965 -3.11035 -15.7998 -4.39062 -22.9697 -4.39062c-21.5898 -0.0195312 -38.8701 11.6807 -52.4199 20.8408c-17.0498 11.5498 -23.2305 14.4492 -31.3906 11.3594c-12.3594 -4.72949 -26.25 1.4707 -30.9697 13.8799\nc-4.71973 12.3906 1.48047 26.25 13.8701 30.9707c32.6504 12.4697 57.3398 -4.25 75.3701 -16.4502c17.0801 -11.5303 23.2998 -14.4199 31.4102 -11.3604c8.12012 3.10059 10.8301 9.37988 15.8896 29.3799c3.33008 13.1504 7.44043 29.3203 17.9502 42.6504\nc-2.24023 2.91016 -4.42969 5.78027 -6.37988 8.57031c-10.1699 -9.56055 -23.4102 -17.1104 -41.7002 -17.1104c-33.9502 0 -50.8701 25.7803 -62.0596 42.8301c-10.6006 16.1396 -15 21.1699 -21.9404 21.1699c-13.25 0 -24 10.75 -24 24s10.75 24 24 24\nc33.96 0 50.8799 -25.7803 62.0596 -42.8301c10.6006 -16.1396 15 -21.1699 21.9404 -21.1699c17.1504 0 37.6797 61.5596 97.2695 101.9l-17.25 34.5c-33.46 2.09961 -60.0195 29.6191 -60.0195 63.5996c0 35.3496 28.6504 64 64 64s64 -28.6504 64 -64\nc0 -13.0195 -3.94043 -25.0996 -10.5996 -35.21l18.1494 -36.2998c16.9697 4.59961 35.6006 7.50977 56.46 7.50977c20.8604 0 39.4805 -2.91016 56.46 -7.50977l18.1504 36.2998c-6.67969 10.1104 -10.6201 22.1904 -10.6201 35.21c0 35.3496 28.6504 64 64 64\ns64 -28.6504 64 -64c0 -33.9805 -26.5703 -61.5 -60.0098 -63.5898l-17.25 -34.5c59.7793 -40.4805 79.9502 -101.91 97.2598 -101.91c6.94043 0 11.3398 5.03027 21.9404 21.1699c11.1895 17.0498 28.1094 42.8301 62.0596 42.8301c13.25 0 24 -10.75 24 -24\ns-10.75 -24 -24 -24c-6.94043 0 -11.3496 -5.03027 -21.9404 -21.1699c-11.1895 -17.0498 -28.1094 -42.8301 -62.0596 -42.8301c-18.29 0 -31.5303 7.5498 -41.7002 17.1201c-1.9502 -2.78027 -4.13965 -5.66016 -6.37988 -8.57031\nc10.5098 -13.3301 14.6201 -29.5 17.9502 -42.6494c5.05957 -20 7.76953 -26.29 15.8896 -29.3809c8.16016 -3.05957 14.3506 -0.169922 31.4102 11.3604c18.0098 12.2002 42.6699 28.9697 75.3701 16.4502zM448 400c-8.82031 0 -16 -7.17969 -16 -16s7.17969 -16 16 -16\ns16 7.17969 16 16s-7.17969 16 -16 16zM192 400c-8.82031 0 -16 -7.17969 -16 -16s7.17969 -16 16 -16s16 7.17969 16 16s-7.17969 16 -16 16z\" />\n    <glyph glyph-name=\"peace\" unicode=\"&#xf67c;\" horiz-adv-x=\"496\" \nd=\"M248 440c136.97 0 248 -111.03 248 -248s-111.03 -248 -248 -248s-248 111.03 -248 248s111.03 248 248 248zM432 192c0 90.5303 -65.7695 165.82 -152 181.03v-165.66l129.43 -103.54c14.3701 26.2002 22.5703 56.2402 22.5703 88.1699zM216 10.9697v114.46\nl-89.29 -71.4395c24.7998 -21.8203 55.4297 -37.0498 89.29 -43.0205zM280 125.43v-114.449c33.8604 5.96973 64.4902 21.1992 89.29 43.0195zM216 373.03c-86.2305 -15.21 -152 -90.5 -152 -181.03c0 -31.9297 8.2002 -61.9697 22.5703 -88.1699l129.43 103.54v165.66z\" />\n    <glyph glyph-name=\"place-of-worship\" unicode=\"&#xf67f;\" horiz-adv-x=\"640\" \nd=\"M620.61 81.4502c10.7031 -4.58887 19.3896 -17.7646 19.3896 -29.4102v-100.04c0 -8.83984 -7.16016 -16 -16 -16h-112v192zM0 52.04c0 11.6455 8.68652 24.8213 19.3896 29.4102l108.61 46.5498v-192h-112c-8.83984 0 -16 7.16016 -16 16v100.04zM464.46 201.32\nc9.63965 -5.78027 15.54 -16.2002 15.54 -27.4404v-237.88h-96v96c0 35.3496 -28.6602 64 -64 64s-64 -28.6504 -64 -64v-96h-96v237.88c0 10.0029 6.96191 22.2959 15.54 27.4404l48.46 29.0801v114.97c0 8.49023 3.37988 16.6299 9.37988 22.6299l75.3105 75.3096\nc6.23926 6.25 16.3691 6.25 22.6191 0l75.3105 -75.3096c6.00977 -6.00977 9.37988 -14.1396 9.37988 -22.6299v-114.97z\" />\n    <glyph glyph-name=\"poll\" unicode=\"&#xf681;\" horiz-adv-x=\"448\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM160 80v128c0 8.83984 -7.16016 16 -16 16h-32c-8.83984 0 -16 -7.16016 -16 -16v-128c0 -8.83984 7.16016 -16 16 -16h32\nc8.83984 0 16 7.16016 16 16zM256 80v224c0 8.83984 -7.16016 16 -16 16h-32c-8.83984 0 -16 -7.16016 -16 -16v-224c0 -8.83984 7.16016 -16 16 -16h32c8.83984 0 16 7.16016 16 16zM352 80v64c0 8.83984 -7.16016 16 -16 16h-32c-8.83984 0 -16 -7.16016 -16 -16v-64\nc0 -8.83984 7.16016 -16 16 -16h32c8.83984 0 16 7.16016 16 16z\" />\n    <glyph glyph-name=\"poll-h\" unicode=\"&#xf682;\" horiz-adv-x=\"448\" \nd=\"M448 16c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48v-352zM112 256h128c8.83984 0 16 7.16016 16 16v32c0 8.83984 -7.16016 16 -16 16h-128c-8.83984 0 -16 -7.16016 -16 -16v-32\nc0 -8.83984 7.16016 -16 16 -16zM112 160h224c8.83984 0 16 7.16016 16 16v32c0 8.83984 -7.16016 16 -16 16h-224c-8.83984 0 -16 -7.16016 -16 -16v-32c0 -8.83984 7.16016 -16 16 -16zM112 64h64c8.83984 0 16 7.16016 16 16v32c0 8.83984 -7.16016 16 -16 16h-64\nc-8.83984 0 -16 -7.16016 -16 -16v-32c0 -8.83984 7.16016 -16 16 -16z\" />\n    <glyph glyph-name=\"pray\" unicode=\"&#xf683;\" horiz-adv-x=\"384\" \nd=\"M256 320c-35.3496 0 -64 28.6504 -64 64s28.6504 64 64 64s64 -28.6504 64 -64s-28.6504 -64 -64 -64zM225.37 150.25l-24.1504 28.7598l-34.7998 -64.8701l109.86 -109.859c25.4893 -25.4902 5.7998 -68.2803 -28.2803 -68.2803h-208c-22.0898 0 -40 17.9102 -40 40\ns17.9102 40 40 40h91.5596l-44.8096 34.8896c-42.8799 27.3799 -57.5898 80.1104 -34.1904 123.75l49.3701 92.0303c11.1201 20.6504 32.1807 34.4404 56.3701 36.9199c24.7803 2.58984 48.5605 -6.93945 64 -25.3301l38.9102 -46.3096l57.4404 47\nc17.1191 13.9697 42.3398 11.4902 56.3096 -5.62012c13.9697 -17.0898 11.4697 -42.2998 -5.62012 -56.2803l-88 -72.0195c-16.9697 -13.8701 -41.9102 -11.5 -55.9697 5.21973z\" />\n    <glyph glyph-name=\"praying-hands\" unicode=\"&#xf684;\" horiz-adv-x=\"640\" \nd=\"M272 256.09c17.5996 0 32 -14.3994 32 -32v-128c0 -51.8896 -34.8398 -98.0801 -84.75 -112.35l-179.19 -46.6201c-2.64941 -0.69043 -5.36914 -1.03027 -8.05957 -1.03027c-23.4805 0 -32 21.1797 -32 32v96v0.0117188c0 12.7285 9.80176 26.3203 21.8799 30.3389\nl90.1201 30.04v80.2295c0 18.9805 5.55957 37.3896 16.1201 53.2305l117.26 175.899c0.169922 0.270508 0.589844 0.25 0.790039 0.480469c9.58008 13.5098 27.8496 17.8799 42.2998 9.20996c15.1602 -9.10059 20.0605 -28.75 10.9707 -43.9102l-77.75 -129.59\nc-8.9707 -14.9199 -13.6904 -32 -13.6904 -49.3906v-76.5498c0 -8.83984 7.16016 -16 16 -16s16 7.16016 16 16v80c0 17.6006 14.4004 32 32 32zM618.12 94.3604c13.0703 -4.36035 21.8799 -16.5801 21.8799 -30.3506v-96c0 -10.8193 -8.51953 -32 -32 -32\nc-2.67969 0 -5.40039 0.339844 -8.05957 1.03027l-179.19 46.6201c-49.9102 14.2598 -84.75 60.4502 -84.75 112.34v128c0 17.5996 14.4004 32 32 32s32 -14.4004 32 -32v-80c0 -8.83984 7.16016 -16 16 -16s16 7.16016 16 16v76.5498\nc0 17.3906 -4.71973 34.4697 -13.6904 49.3906l-77.75 129.59c-9.08984 15.1602 -4.18945 34.8193 10.9707 43.9102c14.4502 8.66992 32.7197 4.2998 42.2998 -9.20996c0.200195 -0.240234 0.610352 -0.210938 0.790039 -0.480469l117.26 -175.89\nc10.5605 -15.8408 16.1201 -34.25 16.1201 -53.2305v-80.2295z\" />\n    <glyph glyph-name=\"quran\" unicode=\"&#xf687;\" horiz-adv-x=\"448\" \nd=\"M448 89.5996c0 -9.59961 -3.2002 -16 -9.59961 -19.1992c-3.2002 -12.8008 -3.2002 -57.6006 0 -73.6006c6.39941 -6.39941 9.59961 -12.7998 9.59961 -19.2002v-16c0 -16 -12.7998 -25.5996 -25.5996 -25.5996h-326.4c-54.4004 0 -96 41.5996 -96 96v320\nc0 54.4004 41.5996 96 96 96h326.4c16 0 25.5996 -9.59961 25.5996 -25.5996v-332.801zM301.08 302.18l-11.1904 -22.6494l-24.9893 -3.62988c-2.68066 -0.390625 -3.75 -3.66992 -1.81055 -5.56055l18.0898 -17.6299l-4.26953 -24.8896\nc-0.360352 -2.11035 1.30957 -3.82031 3.20996 -3.82031c0.5 0 1.01953 0.120117 1.51953 0.379883l22.3604 11.75l22.3604 -11.75c0.5 -0.259766 1.01953 -0.379883 1.51953 -0.379883c1.90039 0 3.57031 1.70996 3.20996 3.82031l-4.26953 24.8896l18.0898 17.6299\nc1.92969 1.89062 0.859375 5.16992 -1.81055 5.56055l-25 3.62988l-11.1797 22.6494c-0.599609 1.20996 -1.75977 1.82031 -2.91992 1.82031s-2.32031 -0.610352 -2.91992 -1.82031zM243.19 371.19c-63.5205 0 -115.19 -51.6709 -115.19 -115.19\nc0 -63.5098 51.6699 -115.19 115.18 -115.18c13.6006 0 27.1201 2.46973 40.1904 7.33984c2.67969 0.910156 4.62012 3.43945 4.62012 6.41992c0 3.63965 -2.87012 6.78027 -6.7998 6.78027c-0.650391 0 -3.10059 -0.209961 -4.13086 -0.209961\nc-52.3096 0 -94.8594 42.5596 -94.8594 94.8594c0 52.3105 42.5498 94.8604 94.8594 94.8604c1.04004 0 3.45996 -0.209961 4.13086 -0.209961c0.633789 -0.237305 1.69727 -0.429688 2.375 -0.429688c3.73926 0 6.77441 3.03516 6.77441 6.77441\nc0 3.7373 -3.03223 6.77246 -6.76953 6.77539c-13.1201 4.91992 -26.71 7.41016 -40.3799 7.41016zM380.8 0v64h-284.8c-16 0 -32 -12.7998 -32 -32s12.7998 -32 32 -32h284.8z\" />\n    <glyph glyph-name=\"search-dollar\" unicode=\"&#xf688;\" \nd=\"M505.04 5.33984c9.2998 -9.39941 9.2998 -24.5898 -0.0996094 -33.9902l-28.3008 -28.2998c-9.2998 -9.39941 -24.5 -9.39941 -33.8994 0l-99.71 99.6904c-4.5 4.5 -7 10.5996 -7 17v16.2998c-35.2998 -27.5996 -79.71 -44 -128.011 -44\nc-114.909 0 -208.02 93.0898 -208.02 207.979c0 114.891 93.1201 207.98 208.02 207.98c114.9 0 208.011 -93.0898 208.011 -207.98c0 -48.2998 -16.4004 -92.6895 -44 -127.989h16.2998c6.40039 0 12.5 -2.5 17 -7zM208.02 96.04c79.6504 0 144 64.4502 144 143.979\nc0 79.6406 -64.46 143.98 -144 143.98c-79.6494 0 -144 -64.4502 -144 -143.98c0 -79.6396 64.4609 -143.979 144 -143.979zM235.13 248.58c18.6006 -5.58008 31.5898 -23.4199 31.5898 -43.3896c0 -24.5303 -19.0498 -44.4404 -42.6797 -45.0703v-16.1201\nc0 -4.41992 -3.58008 -8 -8 -8h-16c-4.41992 0 -8 3.58008 -8 8v16.29c-11.29 0.580078 -22.2705 4.51953 -31.3701 11.3496c-3.90039 2.93066 -4.09961 8.77051 -0.570312 12.1406l11.75 11.21c2.77051 2.63965 6.89062 2.75977 10.1309 0.729492\nc3.85938 -2.42969 8.25977 -3.71973 12.8193 -3.71973h28.1006c6.5 0 11.7998 5.91992 11.7998 13.1904c0 5.94922 -3.61035 11.1797 -8.77051 12.7295l-45.0098 13.5c-18.5898 5.58008 -31.5801 23.4199 -31.5801 43.3896c0 24.5205 19.0498 44.4404 42.6797 45.0703\nv16.1201c0 4.41992 3.58008 8 8 8h16c4.4209 0 8 -3.58008 8 -8v-16.29c11.29 -0.580078 22.2705 -4.51953 31.3701 -11.3496c3.90039 -2.93066 4.10059 -8.77051 0.570312 -12.1406l-11.75 -11.21c-2.76953 -2.63965 -6.88965 -2.75977 -10.1299 -0.729492\nc-3.86035 2.42969 -8.25977 3.71973 -12.8203 3.71973h-28.1094c-6.5 0 -11.8008 -5.91992 -11.8008 -13.1904c0 -5.94922 3.61035 -11.1797 8.77051 -12.7295z\" />\n    <glyph glyph-name=\"search-location\" unicode=\"&#xf689;\" \nd=\"M505.04 5.33984c9.2998 -9.39941 9.2998 -24.5898 -0.0996094 -33.9902l-28.3008 -28.2998c-9.2998 -9.39941 -24.5 -9.39941 -33.8994 0l-99.71 99.6904c-4.5 4.5 -7 10.5996 -7 17v16.2998c-35.2998 -27.5996 -79.71 -44 -128.011 -44\nc-114.909 0 -208.02 93.0898 -208.02 207.979c0 114.891 93.1201 207.98 208.02 207.98c114.9 0 208.011 -93.0898 208.011 -207.98c0 -48.2998 -16.4004 -92.6895 -44 -127.989h16.2998c6.40039 0 12.5 -2.5 17 -7zM208.02 96.04c79.6504 0 144 64.4502 144 143.979\nc0 79.6406 -64.46 143.98 -144 143.98c-79.6494 0 -144 -64.4502 -144 -143.98c0 -79.6396 64.4609 -143.979 144 -143.979zM208.04 336c40.7803 0 73.8398 -33.0498 73.8398 -73.8301c0 -32.9697 -48.2598 -93.0498 -66.75 -114.86\nc-1.5293 -1.8291 -4.70508 -3.31445 -7.08984 -3.31445s-5.56055 1.48535 -7.08984 3.31445c-18.4902 21.8105 -66.75 81.9004 -66.75 114.86c0 40.7803 33.0596 73.8301 73.8398 73.8301zM208.04 240c13.25 0 24 10.75 24 24c0 13.2598 -10.75 24 -24 24\ns-24 -10.7402 -24 -24c0 -13.25 10.7402 -24 24 -24z\" />\n    <glyph glyph-name=\"socks\" unicode=\"&#xf696;\" \nd=\"M214.66 136.99c-52.7402 -39.5605 -69.0498 -110.021 -39.2002 -165.4l-21.8604 -16.3896c-17.2695 -12.9502 -37.4893 -19.2002 -57.5195 -19.2002c-32.8105 0 -65.6904 16.75 -83.9404 48.3301c-24.6494 42.6396 -10.1895 97.5 29.21 127.06l86.6504 64.6104v176h160\nv-160zM288 416v-32h-160v32c0 17.6699 14.3301 32 32 32h128c2.84961 0 5.40039 -0.919922 8.01953 -1.62012c-4.94922 -9.08008 -8.01953 -19.3301 -8.01953 -30.3799zM480 448c17.6699 0 32 -14.3301 32 -32v-32h-192v32c0 17.6699 14.3301 32 32 32h128zM320 176v176h192\nv-208v-0.00195312c0 -35.3271 -22.9375 -81.2021 -51.2002 -102.398l-115.2 -86.3994c-17.2695 -12.9502 -37.4893 -19.2002 -57.5195 -19.2002c-32.8105 0 -65.1699 16.75 -83.4199 48.3301c-24.6504 42.6396 -10.1904 97.5 29.21 127.06z\" />\n    <glyph glyph-name=\"square-root-alt\" unicode=\"&#xf698;\" horiz-adv-x=\"576\" \nd=\"M571.31 196.69c6.25 -6.25 6.25 -16.3809 0 -22.6309l-46.0596 -46.0596l46.0596 -46.0596c6.25 -6.25 6.25 -16.3809 0 -22.6309l-22.6191 -22.6191c-6.25 -6.25 -16.3809 -6.25 -22.6309 0l-46.0596 46.0596l-46.0596 -46.0596c-6.25 -6.25 -16.3809 -6.25 -22.6309 0\nl-22.6191 22.6191c-6.25 6.25 -6.25 16.3809 0 22.6309l46.0596 46.0596l-46.0596 46.0596c-6.25 6.25 -6.25 16.3809 0 22.6309l22.6191 22.6191c6.25 6.25 16.3809 6.25 22.6309 0l46.0596 -46.0596l46.0596 46.0596c6.25 6.25 16.3809 6.25 22.6309 0zM552 448\nc13.25 0 24 -10.7402 24 -24v-48c0 -13.25 -10.75 -24 -24 -24h-194.97l-97.8105 -374.52c-9.83984 -32.4805 -37.0098 -41.4805 -54.2793 -41.4805c-18.6406 0 -35.9502 8.5 -48.4404 28.2695l-88.8799 163.73h-43.6201c-13.25 0 -24 10.75 -24 24v48\nc0 13.2598 10.75 24 24 24h81.4697c10.4385 -0.00292969 22.9961 -7.42578 28.0303 -16.5703l58.4102 -106.1l84.79 322.8c3.68945 14.0703 16.4102 23.8701 30.9502 23.8701h244.35z\" />\n    <glyph glyph-name=\"star-and-crescent\" unicode=\"&#xf699;\" \nd=\"M340.47 -18.3604c8.74023 0 15.1299 -6.96973 15.1299 -15.0596c0 -6.62012 -4.31934 -12.2402 -10.2793 -14.2598c-29.04 -10.8301 -59.0898 -16.3203 -89.3203 -16.3203c-141.16 0 -256 114.84 -256 256s114.84 256 256 256c30.3896 0 60.5801 -5.54004 89.75 -16.4805\nc6.91992 -2.59961 10.9297 -9.83984 9.46973 -17.0898c-1.41992 -7.04004 -7.62012 -12.0693 -14.75 -12.0693c-1.47949 0 -6.85938 0.459961 -9.17969 0.459961c-116.25 0 -210.82 -94.5703 -210.82 -210.82s94.5703 -210.82 210.82 -210.82\nc2.29004 0 7.72949 0.459961 9.17969 0.459961zM503.46 234.14c8.16992 -1.17969 11.4297 -11.2197 5.52051 -16.9893l-55.2705 -53.8701l13.0498 -76.0703c1.11035 -6.42969 -4.00977 -11.6602 -9.80957 -11.6602c-1.53027 0 -3.11035 0.370117 -4.64062 1.16992\nl-68.3096 35.9102l-68.3301 -35.9102c-1.53027 -0.80957 -3.11035 -1.16992 -4.63965 -1.16992c-5.7998 0 -10.9199 5.21973 -9.81055 11.6602l13.0498 76.0703l-55.2695 53.8701c-5.91016 5.76953 -2.65039 15.8096 5.51953 16.9893l76.3809 11.1006l34.1592 69.21\nc1.83008 3.7002 5.38086 5.5498 8.93066 5.5498s7.09961 -1.84961 8.92969 -5.5498l34.1602 -69.21z\" />\n    <glyph glyph-name=\"star-of-david\" unicode=\"&#xf69a;\" horiz-adv-x=\"464\" \nd=\"M405.68 192l53.2207 -89.3896c14.4092 -24.21 -3.41016 -54.6104 -32.0107 -54.6104h-106.93l-55.9502 -93.9805c-7.14941 -12.0098 -19.5801 -18.0195 -32.0098 -18.0195s-24.8604 6.00977 -32.0098 18.0195l-55.9502 93.9805h-106.93\nc-28.6006 0 -46.4199 30.4004 -32.0107 54.6104l53.2207 89.3896l-53.2207 89.3896c-14.4092 24.21 3.41016 54.6104 32.0107 54.6104h106.93l55.9502 93.9805c7.14941 12.0098 19.5801 18.0195 32.0098 18.0195s24.8604 -6.00977 32.0098 -18.0195l55.9502 -93.9805h106.92\nc28.6006 0 46.4199 -30.4004 32.0098 -54.6104zM392.9 280h-39.6006l19.7998 -33.2598zM340.51 192l-52.3896 88h-112.25l-52.3799 -88l52.3896 -88h112.24zM232 374.28l-22.7803 -38.2803h45.5703zM71.0996 280l19.8008 -33.2598l19.7998 33.2598h-39.6006zM71.0996 104\nh39.6006l-19.7998 33.2598zM232 9.71973l22.7803 38.2803h-45.5703zM353.29 104h39.6104l-19.8105 33.2598z\" />\n    <glyph glyph-name=\"synagogue\" unicode=\"&#xf69b;\" horiz-adv-x=\"640\" \nd=\"M70 251.49c5.30957 6.00977 14.6904 6.00977 20 0l38 -43.0703v-272.42h-128v226.07v0.00683594c0 5.5625 2.98828 13.4629 6.66992 17.6328zM633.33 179.71c4.2998 -4.87012 6.66992 -11.1396 6.66992 -17.6396v-226.07h-128v272.42l38 43.0703\nc5.30957 6.01953 14.6904 6.01953 20 0zM339.99 440.99l128 -102.4c7.58984 -6.07031 12.0098 -15.2695 12.0098 -24.9902v-377.6h-96v96c0 38.8701 -34.6602 69.6504 -74.75 63.1201c-31.4697 -5.12012 -53.25 -34.6699 -53.25 -66.5498v-92.5703h-96v377.6\nc0 8.49023 5.38086 19.6865 12.0098 24.9902l128 102.4c11.6904 9.34961 28.29 9.34961 39.9805 0zM392.06 225.44l-19.1895 30.5596l19.2002 30.5703c1.97949 3.14941 -0.290039 7.23926 -4 7.23926h-38.9502l-25.1201 39.9805c-1.84961 2.9502 -6.15039 2.9502 -8 0\nl-25.1201 -40h-38.9395c-3.70996 0 -5.98047 -4.08984 -4 -7.24023l19.1992 -30.5596l-19.1992 -30.5605c-1.98047 -3.14941 0.279297 -7.23926 4 -7.23926h38.9395l25.1201 -39.9805c1.84961 -2.9502 6.15039 -2.9502 8 0l25.1201 39.9902h38.9395\nc3.70996 0 5.98047 4.08984 4 7.24023z\" />\n    <glyph glyph-name=\"torah\" unicode=\"&#xf6a0;\" horiz-adv-x=\"640\" \nd=\"M320.05 81.5195l-17.7402 29.6406h35.46zM419.26 247.52l-18.3994 -30.8193l-18.46 30.8193h36.8594zM48 448c26.5098 0 48 -14.3301 48 -32v-448c0 -17.6699 -21.4902 -32 -48 -32s-48 14.3301 -48 32v448c0 17.6699 21.4902 32 48 32zM220.74 136.5l18.3896 30.8203\nl18.46 -30.8203h-36.8496zM382.45 136.5l18.4102 30.7998l18.4492 -30.7998h-36.8594zM128 -16v416h384v-416h-384zM194.77 262.13c-1.53711 -2.65625 -2.78516 -7.30176 -2.78516 -10.3711c0 -3.20312 1.35059 -8.02246 3.01562 -10.7588l29.3604 -49l-29.21 -48.8398\nc-1.6709 -2.77344 -3.02637 -7.65234 -3.02637 -10.8906c0 -11.6523 9.45703 -21.1094 21.1104 -21.1094h0.015625h59.5l29.25 -48.8799c3.33105 -5.6416 11.3516 -10.2207 17.9023 -10.2207h0.0976562c6.64844 0.0136719 14.7842 4.67285 18.1602 10.4004l29.1299 48.7002\nh59.4697h0.0224609c6.8125 0 15.082 4.80273 18.458 10.7197c1.53418 2.65332 2.7793 7.29297 2.7793 10.3584c0 3.2041 -1.35254 8.02539 -3.01953 10.7617l-29.3701 49l29.2402 48.8496c1.66602 2.77246 3.01758 7.64648 3.01758 10.8809\nc0 11.6562 -9.46094 21.1182 -21.1182 21.1191h-59.5195l-29.25 48.8604c-3.3252 5.63574 -11.3359 10.21 -17.8799 10.21h-0.0703125h-0.0341797c-6.65137 0 -14.7988 -4.64551 -18.1855 -10.3701l-29.1299 -48.71h-59.4502h-0.0458984\nc-6.80469 0 -15.0635 -4.79785 -18.4346 -10.71zM592 448c26.5098 0 48 -14.3301 48 -32v-448c0 -17.6699 -21.4902 -32 -48 -32s-48 14.3301 -48 32v448c0 17.6699 21.4902 32 48 32zM320 302.47l17.6797 -29.6201h-35.46zM257.55 247.47l-18.3701 -30.7998\nl-18.4395 30.7998h36.8096zM287.13 136.47l-33.2295 55.5303l33.1699 55.5195h65.79l33.2295 -55.5195l-33.1699 -55.5303h-65.79z\" />\n    <glyph glyph-name=\"torii-gate\" unicode=\"&#xf6a1;\" \nd=\"M376.45 416c39.4961 0.00195312 100.223 14.3389 135.55 32v-96c0 -17.6699 -14.3301 -32 -32 -32h-32v-64h48c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-48v-240c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v240\nh-256v-240c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v240h-48c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h48v64h-32c-17.6699 0 -32 14.3301 -32 32v96c35.3271 -17.6611 96.0537 -31.998 135.55 -32h240.9zM128 320v-64h96\nv64h-96zM384 256v64h-96v-64h96z\" />\n    <glyph glyph-name=\"vihara\" unicode=\"&#xf6a7;\" horiz-adv-x=\"640\" \nd=\"M632.88 47.29c5.41992 -3.61035 7.7002 -9.62012 6.99023 -15.29c-0.620117 -5.00977 -3.56055 -9.75 -8.71973 -12.3301l-55.1504 -19.6699v-48c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v48h-160v-48c0 -8.83984 -7.16016 -16 -16 -16h-32\nc-8.83984 0 -16 7.16016 -16 16v48h-160v-48c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v48l-55.1602 19.6699c-5.14941 2.58008 -8.09961 7.32031 -8.71973 12.3301c-0.700195 5.66016 1.58008 11.6699 7 15.29l88.8799 48.71v64\nl-55.1602 17.6904c-11.79 5.89941 -11.79 22.7197 0 28.6191l119.16 49.6904v64l-27.3096 16.3096c-7.7207 7.7207 -5.61035 20.7402 4.15918 25.6201l183.15 86.0703l183.15 -86.0801c9.76953 -4.87988 11.8799 -17.9004 4.15918 -25.6201l-27.3096 -16.2998v-64\nl119.16 -49.6904c11.79 -5.89941 11.79 -22.7197 0 -28.6191l-55.1602 -17.6904v-64zM224 320v-64h192v64h-192zM160 96h320v64h-320v-64z\" />\n    <glyph glyph-name=\"volume-mute\" unicode=\"&#xf6a9;\" \nd=\"M215.03 376.95c15.0098 15.0098 40.9697 4.49023 40.9697 -16.9697v-335.961c0 -21.4395 -25.9404 -32 -40.9697 -16.9697l-88.9707 88.9502h-102.06c-13.2598 0 -24 10.75 -24 24v144c0 13.2598 10.7402 24 24 24h102.06zM461.64 192l45.6406 -45.6396\nc6.2998 -6.30078 6.2998 -16.5205 0 -22.8203l-22.8203 -22.8203c-6.2998 -6.2998 -16.5195 -6.2998 -22.8203 0l-45.6396 45.6406l-45.6299 -45.6299c-6.2998 -6.30078 -16.5205 -6.30078 -22.8203 0l-22.8193 22.8193c-6.30078 6.2998 -6.30078 16.5205 0 22.8203\nl45.6299 45.6299l-45.6406 45.6396c-6.2998 6.30078 -6.2998 16.5205 0 22.8203l22.8203 22.8203c6.2998 6.2998 16.5195 6.2998 22.8203 0l45.6396 -45.6406l45.6396 45.6406c6.30078 6.2998 16.5205 6.2998 22.8203 0l22.8203 -22.8203\nc6.2998 -6.2998 6.2998 -16.5195 0 -22.8203z\" />\n    <glyph glyph-name=\"yin-yang\" unicode=\"&#xf6ad;\" horiz-adv-x=\"496\" \nd=\"M248 440c136.97 0 248 -111.03 248 -248s-111.03 -248 -248 -248s-248 111.03 -248 248s111.03 248 248 248zM248 64c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM248 192c53.0195 0 96 42.9805 96 96s-42.9805 96 -96 96\nc-106.04 0 -192 -85.96 -192 -192s85.96 -192 192 -192c-53.0195 0 -96 42.9805 -96 96s42.9805 96 96 96zM248 320c17.6699 0 32 -14.3301 32 -32s-14.3301 -32 -32 -32s-32 14.3301 -32 32s14.3301 32 32 32z\" />\n    <glyph glyph-name=\"blender-phone\" unicode=\"&#xf6b6;\" horiz-adv-x=\"576\" \nd=\"M392 384c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h157.82l-17.46 -64h-140.36c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h131.64l-17.46 -64h-114.18c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h105.46\nl-17.46 -64h-288v352h384l-17.46 -64h-166.54zM158.8 112.99c3.00977 -7.40039 0.200195 -15.8506 -6.68945 -20.0703l-39.4102 -24.1797c-12.5303 -7.68066 -31.7803 -6 -41.6504 4.7998c-94.0996 102.94 -94.6699 258.89 -2.09961 362.49\nc11.1396 12.4697 29.5596 15.8398 43.8896 7.0498l39.2803 -24.0996c6.87988 -4.2207 9.7002 -12.6807 6.67969 -20.0703l-25.7803 -63.2598c-2.7793 -6.80078 -9.80957 -10.9902 -17.2393 -10.2607l-45.0303 4.41992c-17.6504 -47.9395 -17.2803 -100.779 0 -147.72\nl45.0303 4.41992c7.43945 0.730469 14.46 -3.4502 17.2393 -10.2598zM480 64c35.3496 0 64 -28.6504 64 -64v-32c0 -17.6699 -14.3301 -32 -32 -32h-352c-17.6699 0 -32 14.3301 -32 32v32c0 35.3496 28.6504 64 64 64h288zM336 -32c17.6699 0 32 14.3301 32 32\ns-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z\" />\n    <glyph glyph-name=\"book-dead\" unicode=\"&#xf6b7;\" horiz-adv-x=\"448\" \nd=\"M272 312c-8.7998 0 -16 7.2002 -16 16s7.2002 16 16 16s16 -7.2002 16 -16s-7.2002 -16 -16 -16zM448 89.5996c0 -9.59961 -3.2002 -16 -9.59961 -19.1992c-3.2002 -12.8008 -3.2002 -57.6006 0 -73.6006c6.39941 -6.39941 9.59961 -12.7998 9.59961 -19.2002v-16\nc0 -16 -12.7998 -25.5996 -25.5996 -25.5996h-326.4c-54.4004 0 -96 41.5996 -96 96v320c0 54.4004 41.5996 96 96 96h326.4c16 0 25.5996 -9.59961 25.5996 -25.5996v-332.801zM240 392c-44.2002 0 -80 -28.7002 -80 -64c0 -20.9004 12.7002 -39.2002 32 -50.9004v-13.0996\nc0 -8.7998 7.2002 -16 16 -16h64c8.7998 0 16 7.2002 16 16v13.0996c19.2998 11.7002 32 30 32 50.9004c0 35.2998 -35.7998 64 -80 64zM124.8 224.7c-1.7002 -4.10059 0.100586 -8.7998 4.2002 -10.5l70.5 -30.2998l-70.4004 -30.1006\nc-4.09961 -1.7002 -5.89941 -6.39941 -4.19922 -10.5l6.2998 -14.7002c1.7002 -4.09961 6.39941 -5.89941 10.5 -4.19922l98.2998 42.1992l98.2998 -42.0996c4.10059 -1.7002 8.7998 0.0996094 10.5 4.2002l6.2998 14.7002c1.7002 4.09961 -0.0996094 8.7998 -4.19922 10.5\nl-70.3008 30.0996l70.3008 30.2002c4.09961 1.7002 5.89941 6.39941 4.19922 10.5l-6.2998 14.7002c-1.7002 4.09961 -6.39941 5.89941 -10.5 4.19922l-98.3994 -42.0996l-98.3008 42.0996c-4.09961 1.7002 -8.7998 -0.0996094 -10.5 -4.19922zM380.8 0v64h-284.8\nc-16 0 -32 -12.7998 -32 -32s12.7998 -32 32 -32h284.8zM208 312c-8.7998 0 -16 7.2002 -16 16s7.2002 16 16 16s16 -7.2002 16 -16s-7.2002 -16 -16 -16z\" />\n    <glyph glyph-name=\"campground\" unicode=\"&#xf6bb;\" horiz-adv-x=\"640\" \nd=\"M624 0c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-608c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h24.6797l239.79 330.25l-53.4102 73.5498c-5.19922 7.15039 -3.60938 17.1602 3.54004 22.3506l25.8809 18.7998\nc7.14941 5.18945 17.1592 3.59961 22.3496 -3.5498l41.1699 -56.7002l41.1602 56.6895c5.2002 7.16016 15.2002 8.74023 22.3496 3.55078l25.9004 -18.79c7.14941 -5.19043 8.72949 -15.2002 3.54004 -22.3506l-53.4102 -73.5498l239.78 -330.25h24.6797zM320 160\nl-116.36 -160h232.721z\" />\n    <glyph glyph-name=\"cat\" unicode=\"&#xf6be;\" \nd=\"M290.59 256c11.8906 -58.3496 63.6006 -102.4 125.41 -102.4c11.1104 0 21.71 1.87012 32 4.54004v-206.14c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v144l-128 -96h32c17.6699 0 32 -14.3301 32 -32v-16c0 -8.83984 -7.16016 -16 -16 -16\nh-176c-35.2998 0 -64 28.7002 -64 64v256c0 17.6396 -14.3604 32 -32 32c-17.6699 0 -32 14.3301 -32 32s14.3301 32 32 32c52.9404 0 96 -43.0596 96 -96v-85.9502c55.7695 83.9697 142.41 85.9502 162.59 85.9502zM448 352l64 64v-134.4c0 -53.0195 -42.9805 -96 -96 -96\ns-96 42.9805 -96 96v134.4l64 -64h64zM376 272c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16s-16 -7.16016 -16 -16s7.16016 -16 16 -16zM456 272c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16s-16 -7.16016 -16 -16s7.16016 -16 16 -16z\" />\n    <glyph glyph-name=\"chair\" unicode=\"&#xf6c0;\" horiz-adv-x=\"448\" \nd=\"M112 320v-128h-48v128c0 70.7002 57.2998 128 128 128h64c70.7002 0 128 -57.2998 128 -128v-128h-48v128c0 29.5 -16.2002 55 -40 68.9004v-196.9h-48v208h-48v-208h-48v196.9c-23.7998 -13.9004 -40 -39.4004 -40 -68.9004zM446.3 106.1\nc6.90039 -20.6992 -8.5 -42.0996 -30.2998 -42.0996v-112c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v112h-256v-112c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v112c-21.7998 0 -37.2002 21.4004 -30.4004 42.0996l10.7002 32\nc4.40039 13.1006 16.6006 21.9004 30.4004 21.9004h362.5c13.7998 0 26 -8.7998 30.3994 -21.9004z\" />\n    <glyph glyph-name=\"cloud-moon\" unicode=\"&#xf6c3;\" horiz-adv-x=\"576\" \nd=\"M342.8 95.2998c40.9004 -3.5 73.2002 -37.3994 73.2002 -79.2998c0 -44.2002 -35.7998 -80 -80 -80h-240c-53 0 -96 43 -96 96c0 41.9004 27.0996 77.2002 64.5996 90.2998c-0.0996094 1.90039 -0.599609 3.7002 -0.599609 5.7002c0 53 43 96 96 96\nc36.2002 0 67.4004 -20.2998 83.7002 -49.9004c11.5 11 27.0996 17.9004 44.2998 17.9004c35.2998 0 64 -28.7002 64 -64c0 -12 -3.5 -23.0996 -9.2002 -32.7002zM565.3 149.6c8.2002 1.60059 14 -8 8.7002 -14.5c-33.4004 -41.0996 -82.7002 -67 -137.1 -70.3994\nc-11.1006 23.0996 -29.9004 41.7998 -53.5 52.5996c0.399414 3.5 0.599609 7.10059 0.599609 10.7002c0 52.9004 -43.0996 96 -96 96c-12.7002 0 -25 -2.5 -36.4004 -7.2002c-5.09961 5.2998 -10.7998 9.90039 -16.6992 14.2002c-1.10059 8.2002 -1.80078 16.5 -1.80078 25\nc0 106.1 86 192 191.9 192c11.7002 0 23.4004 -1.09961 35.0996 -3.2002c8.2002 -1.59961 10.1006 -12.5996 2.80078 -16.7002c-47.1006 -26.7998 -76.1006 -76.5996 -76.1006 -130.8c0 -94 85.4004 -165.399 178.5 -147.7z\" />\n    <glyph glyph-name=\"cloud-sun\" unicode=\"&#xf6c4;\" horiz-adv-x=\"640\" \nd=\"M575.2 122.3c37.5996 -13 64.7998 -48.2998 64.7998 -90.3994c0 -53 -43 -96 -96 -96h-272c-53 0 -96 43 -96 96c0 50.5996 39.2998 91.5996 88.9004 95.2998c-0.200195 2.89941 -0.900391 5.7002 -0.900391 8.7002c0 61.8994 50.2002 112 112 112\nc45.4004 0 84.2998 -27.2002 101.9 -66c9.89941 6.19922 21.5 10 34.0996 10c35.2998 0 64 -28.7002 64 -64c0 -1.90039 -0.599609 -3.7002 -0.799805 -5.60059zM144.8 144.9c10.6006 -10.6006 22.9004 -18.6006 36 -24c-9.59961 -9.80078 -17.5 -21.1006 -23.5996 -33.5\nl-76.1006 -25.3008c-11.8994 -3.89941 -23.1992 7.30078 -19.1992 19.2002l29.2998 87.7998l-82.7998 41.4004c-11.2002 5.59961 -11.2002 21.5 0 27.0996l82.7998 41.5l-29.2998 87.8008c-3.90039 11.7998 7.39941 23.0996 19.1992 19.1992l87.9004 -29.2998\nl41.4004 82.7998c5.59961 11.2002 21.5996 11.2002 27.0996 0l41.5 -82.7998l87.7998 29.2998c11.9004 3.90039 23.2002 -7.2998 19.2002 -19.1992l-29.7998 -88.9004c-10.6006 -1.5 -20.9004 -3.7998 -30.7002 -7.5c-5.40039 11.7998 -12.5996 23 -22.2998 32.7002\nc-43.7002 43.7002 -114.7 43.7002 -158.4 0c-43.7002 -43.6006 -43.7002 -114.601 0 -158.3zM140 224.1c0 46.3008 37.7002 83.9004 84 83.9004c34 0 63.2998 -20.4004 76.5 -49.5c-36.4004 -22.5 -62 -60.7002 -67.4004 -105\nc-8.89941 -2.90039 -17.1992 -7 -25.1992 -11.7002c-38.6006 7.5 -67.9004 41.5 -67.9004 82.2998z\" />\n    <glyph glyph-name=\"dice-d20\" unicode=\"&#xf6cf;\" horiz-adv-x=\"480\" \nd=\"M106.75 232.94l108.64 -190.101l-208.26 22.0703c-5.83008 0.639648 -9.00977 7.13965 -5.92969 12.1396zM7.41016 132.57c-2.12012 -3.44043 -7.41016 -1.94043 -7.41016 2.08984v162.81c0 3.11035 3.38965 5.03027 6.05957 3.43066l76.6406 -45.9805zM18.25 24.4004\nc-4.03027 1.97949 -2.25 8.06934 2.2002 7.56934l203.55 -22.2998v-65.6699c0 -5.83008 -6.0498 -9.70996 -11.3496 -7.25977zM99.4697 282.18l-81.5293 48.6904c-2.52051 1.51953 -2.60059 5.16016 -0.130859 6.78027l150.811 98.6094\nc7.18945 4.11035 15.1201 -4.08008 10.7803 -11.1396zM240 272h-109.21l95.5801 168.38c3.12988 5.08008 8.37988 7.62012 13.6299 7.62012s10.5 -2.54004 13.6299 -7.62012l95.5801 -168.38h-109.21zM473.94 300.9c2.66992 1.59961 6.05957 -0.320312 6.05957 -3.43066\nv-162.81c0 -4.04004 -5.2998 -5.54004 -7.41016 -2.10059l-75.29 122.351zM380.53 282.18l-79.9307 142.94c-4.33984 7.05957 3.59082 15.25 10.7803 11.1396l150.811 -98.5996c2.46973 -1.62012 2.39941 -5.25977 -0.130859 -6.78027zM459.55 31.9697\nc4.4502 0.5 6.23047 -5.58984 2.2002 -7.55957l-194.4 -87.6602c-5.2998 -2.4502 -11.3496 1.41992 -11.3496 7.25977v65.6699zM373.25 232.94l105.56 -155.891c3.08008 -5 -0.0996094 -11.4902 -5.92969 -12.1396l-208.26 -22.0703zM240 240h100.43l-100.43 -175.75\nl-100.43 175.75h100.43z\" />\n    <glyph glyph-name=\"dice-d6\" unicode=\"&#xf6d1;\" horiz-adv-x=\"448\" \nd=\"M422.19 338.05c5.3291 -3.24023 5.2998 -11.2695 -0.0507812 -14.46l-198.14 -118.14l-198.13 118.14c-5.35059 3.19043 -5.37988 11.2305 -0.0605469 14.46l165.971 100.88c19.9102 12.1006 44.5195 12.1006 64.4297 0zM436.03 293.42\nc5.33008 3.17969 11.9697 -0.839844 11.9697 -7.25v-197.7c0 -23.7598 -12.1104 -45.7393 -31.79 -57.7002l-152.16 -92.4795c-10.6602 -6.48047 -24.0498 1.5498 -24.0498 14.4297v223.82zM0 286.17c0 6.41016 6.63965 10.4297 11.9697 7.25l196.03 -116.88v-223.81\nc0 -12.8906 -13.3799 -20.9102 -24.0498 -14.4307l-152.16 92.4697c-19.6797 11.9609 -31.79 33.9307 -31.79 57.7002v197.7z\" />\n    <glyph glyph-name=\"dog\" unicode=\"&#xf6d3;\" \nd=\"M496 352c8.83984 0 16 -7.16016 16 -16v-32c0 -35.3496 -28.6504 -64 -64 -64h-32v-35.5801l-128 45.71v149.84c0 14.25 17.2305 21.3906 27.3203 11.3105l27.2793 -27.2803h53.6201c10.917 -0.000976562 23.7383 -7.92578 28.6201 -17.6904l7.16016 -14.3096h64z\nM384 304c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16s-16 -7.16016 -16 -16s7.16016 -16 16 -16zM96 224h170.05l149.95 -53.5498v-218.45c0 -8.83984 -7.16016 -16 -16 -16h-64c-8.83984 0 -16 7.16016 -16 16v112h-160v-112c0 -8.83984 -7.16016 -16 -16 -16h-64\nc-8.83984 0 -16 7.16016 -16 16v213.9c-37.1699 13.25 -64 48.4395 -64 90.0996c0 17.6699 14.3301 32 32 32s32 -14.3301 32 -32c0 -17.6396 14.3604 -32 32 -32z\" />\n    <glyph glyph-name=\"dragon\" unicode=\"&#xf6d5;\" horiz-adv-x=\"640\" \nd=\"M18.3203 192.22c-15.96 -2.2793 -24.8906 17.8105 -12.5107 28.1406l117.4 116.34c21.7705 18.5996 53.2402 20.4697 77.0596 4.58984l119.73 -87.5996v-42.2705c0 -28.9102 5.29004 -56.9795 14.7305 -83.3799h-222.7c-14.25 0 -21.3906 17.2295 -11.3105 27.3096\nl91.2803 68.6904zM575.19 158.12c41.9092 -20.96 67.1592 -64.0801 64.6396 -111.36c-3.37988 -63.2002 -59.7002 -110.77 -122.99 -110.76h-499.08c-9.80957 0 -17.7598 8 -17.7598 17.7998c0 8.32031 5.78027 15.5303 13.9004 17.3301\nc89.54 19.9004 238.51 54.1006 434.1 60.9102c-59.9697 39.9902 -96 107.3 -96 179.38v108.62l-59.5801 24.8496c-5.90039 2.9502 -5.90039 11.3604 0 14.3105l59.5801 24.8398l-61.6396 50.3496c-5.04004 5.04004 -1.4707 13.6104 5.65918 13.6104h237.45\nc10.0703 0 19.5498 -4.7002 25.6006 -12.7598l74.5293 -99.3799c3.53223 -4.71094 6.39844 -13.3115 6.39844 -19.1992c0 -4.16992 -1.51367 -10.5811 -3.37793 -14.3115l-14.3105 -28.6191c-4.88086 -9.76465 -17.7031 -17.6895 -28.6191 -17.6904h-30.9707\nc-8.48926 0 -16.6299 3.37012 -22.6299 9.37012l-28.0898 22.6299h-64v-36.6904c0.00195312 -16.3701 11.8877 -35.5986 26.5303 -42.9199zM489.18 381.75c-4.33008 -17.1396 8.56055 -28.96 21.5205 -29.6699c11.6602 -0.629883 21.3799 7.34961 24.1299 18.2598z\" />\n    <glyph glyph-name=\"drumstick-bite\" unicode=\"&#xf6d7;\" \nd=\"M462.8 398.43c34.3203 -34.2793 50.4307 -79.5996 49.1299 -124.56c-41.9795 22.6602 -94.3594 17.5596 -128.739 -16.7998c-40.8809 -40.8398 -40.6904 -107.181 -1.05078 -151.07c-16.2383 -5.52246 -43.3389 -10.0049 -60.4912 -10.0049\nc-0.385742 0 -1.0127 0.00195312 -1.39844 0.00488281h-85.8896l-40.6104 -40.5596c-9.71973 -9.75 -11.0898 -24.0205 -6 -36.75c2.38477 -5.95898 4.32031 -16.0049 4.32031 -22.4229c0 -33.3135 -27.0371 -60.3496 -60.3506 -60.3496\nc-13.8428 0 -33.0039 7.96191 -42.7695 17.7725c-15.2803 15.2695 -19.6006 36.5 -15.1006 56.0996c-19.6094 -4.49023 -40.8496 -0.179688 -56.1191 15.0703c-9.77148 9.75684 -17.7021 28.8828 -17.7021 42.6914c0 33.3018 27.0273 60.3301 60.3301 60.3301\nc6.40234 0 16.4248 -1.92773 22.3721 -4.30176c12.7793 -5.07031 27.0791 -3.69043 36.7793 6l40.6201 40.5898v85.8301c0 64 27.6904 107 63.1699 142.43c27.3887 27.3604 81.0371 49.5664 119.75 49.5664c38.7139 0 92.3613 -22.2061 119.75 -49.5664z\" />\n    <glyph glyph-name=\"dungeon\" unicode=\"&#xf6d9;\" \nd=\"M128.73 252.68c6.58984 -4.12012 8.89941 -12.2393 6.33984 -19.5801c-3 -8.60938 -5.15039 -17.6094 -6.24023 -26.9395c-0.929688 -7.91016 -7.0498 -14.1602 -15.0098 -14.1602h-97.1299c-9.10059 0 -16.7402 7.62988 -16.1504 16.7197\nc1.66016 25.7793 11.7178 65.7725 22.4502 89.2705c3.93945 8.62012 14.8896 11.4697 22.9297 6.4502zM319.03 440c9.16992 -2.36035 13.9102 -12.5996 10.3896 -21.3896l-37.4697 -104.03c-2.28027 -6.34961 -8.2998 -10.5801 -15.0498 -10.5801h-41.8008\nc-6.2041 0.00195312 -12.9473 4.74219 -15.0498 10.5801l-37.4697 104.03c-3.52051 8.79004 1.21973 19.04 10.3896 21.3896c20.1699 5.17969 41.2607 8 63.0303 8s42.8604 -2.82031 63.0303 -8zM112 160c8.83984 0 16 -7.16016 16 -16v-64c0 -8.83984 -7.16016 -16 -16 -16\nh-96c-8.83984 0 -16 7.16016 -16 16v64c0 8.83984 7.16016 16 16 16h96zM112 32c8.83984 0 16 -7.16016 16 -16v-64c0 -8.83984 -7.16016 -16 -16 -16h-96c-8.83984 0 -16 7.16016 -16 16v64c0 8.83984 7.16016 16 16 16h96zM189.31 315.67\nc2.85059 -7.12012 -0.0195312 -14.8799 -6.2998 -19.29c-6 -4.2002 -11.6094 -8.89941 -16.79 -14.0498c-5.4502 -5.41016 -13.5996 -6.86035 -20.1094 -2.79004l-82.9307 51.8301c-8.06934 5.04004 -10.2793 16.2002 -4.21973 23.5195\nc16.7148 20.1758 48.7969 47.0068 71.6104 59.8906c8.29004 4.67969 18.8896 0.519531 22.4199 -8.31055zM398.18 192c-7.95996 0 -14.0801 6.25 -15.0098 14.1602c-1.08984 9.32031 -3.22949 18.3301 -6.24023 26.9395c-2.55957 7.34082 -0.25 15.46 6.33984 19.5801\nl82.8105 51.7607c8.04004 5.01953 18.9902 2.16992 22.9297 -6.4502c10.7334 -23.498 20.791 -63.4902 22.4502 -89.2705c0.589844 -9.08984 -7.0498 -16.7197 -16.1504 -16.7197h-97.1299zM453.03 354.89c6.06934 -7.31934 3.84961 -18.4795 -4.2207 -23.5098\nl-82.9297 -51.8301c-6.50977 -4.06934 -14.6699 -2.62012 -20.1104 2.79004c-5.17969 5.15039 -10.7891 9.85059 -16.7891 14.0498c-6.28027 4.40039 -9.15039 12.1602 -6.30078 19.2803l36.3203 90.7998c3.54004 8.83008 14.1396 12.9902 22.4199 8.31055\nc22.8135 -12.8838 54.8945 -39.7148 71.6104 -59.8906zM496 160c8.83984 0 16 -7.16016 16 -16v-64c0 -8.83984 -7.16016 -16 -16 -16h-96c-8.83984 0 -16 7.16016 -16 16v64c0 8.83984 7.16016 16 16 16h96zM496 32c8.83984 0 16 -7.16016 16 -16v-64\nc0 -8.83984 -7.16016 -16 -16 -16h-96c-8.83984 0 -16 7.16016 -16 16v64c0 8.83984 7.16016 16 16 16h96zM240 270.38c5.23047 0.889648 10.5195 1.62012 16 1.62012s10.7695 -0.730469 16 -1.62012v-294.38c0 -4.41992 -3.58008 -8 -8 -8h-16c-4.41992 0 -8 3.58008 -8 8\nv294.38zM176 228.87c8.16016 12.2998 19.2197 22.3203 32 29.7695v-282.64c0 -4.41992 -3.58008 -8 -8 -8h-16c-4.41992 0 -8 3.58008 -8 8v252.87zM304 258.64c12.7803 -7.44922 23.8398 -17.4697 32 -29.7695v-252.87c0 -4.41992 -3.58008 -8 -8 -8h-16\nc-4.41992 0 -8 3.58008 -8 8v282.64z\" />\n    <glyph glyph-name=\"file-csv\" unicode=\"&#xf6dd;\" horiz-adv-x=\"384\" \nd=\"M224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136zM128 168v16c0 4.41992 -3.58008 8 -8 8h-8c-26.5098 0 -48 -21.4902 -48 -48v-32\nc0 -26.5098 21.4902 -48 48 -48h8c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-8c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h8c4.41992 0 8 3.58008 8 8zM172.27 64c23.3906 0 42.4004 17.3301 42.3906 38.6201\nc0 10.6602 -4.86035 20.9199 -13.3301 28.1396l-21.8896 18.7705c-1.37012 1.17969 -2.12012 2.54004 -2.12012 3.83984c0 3.12012 4.45996 6.62012 10.4102 6.62012h12.2695c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-12.25\nc-23.3896 0 -42.4102 -17.3203 -42.4102 -38.6201c0 -10.6602 4.86035 -20.9199 13.3301 -28.1396l21.8896 -18.7705c1.37012 -1.17969 2.12012 -2.54004 2.12012 -3.83984c0 -3.12012 -4.45996 -6.62012 -10.4102 -6.62012h-12.2695c-4.41992 0 -8 -3.58008 -8 -8v-16\nc0 -4.41992 3.58008 -8 8 -8h12.2695zM256 184c0 4.41992 -3.58008 8 -8 8h-16c-4.41992 0 -8 -3.58008 -8 -8v-20.7998c0 -35.4805 12.8799 -68.8906 36.2803 -94.0898c3.01953 -3.25 7.26953 -5.11035 11.7197 -5.11035s8.7002 1.86035 11.7197 5.11035\nc23.4004 25.1992 36.2803 58.6094 36.2803 94.0898v20.7998c0 4.41992 -3.58008 8 -8 8h-16c-4.41992 0 -8 -3.58008 -8 -8v-20.7998c0 -20.2705 -5.7002 -40.1807 -16 -56.8799c-10.2998 16.71 -16 36.6094 -16 56.8799v20.7998zM377 343c4.5 -4.5 7 -10.5996 7 -16.9004\nv-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7z\" />\n    <glyph glyph-name=\"fist-raised\" unicode=\"&#xf6de;\" horiz-adv-x=\"384\" \nd=\"M255.98 288h-48.0303c-5.62988 0 -10.9502 -1.15039 -15.9697 -2.92969v146.93c0 8.83984 7.15918 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-144zM383.98 192.01l0.0195312 -88.2197v-0.0107422c0 -21.9551 -12.5977 -52.373 -28.1201 -67.8994l-35.9102 -35.9199\nv-63.96h-255.979v64l-26.5 26.5098c-24.0098 24.0098 -37.4902 56.5605 -37.4902 90.5098v77.9307c5.03027 -1.7998 10.3604 -2.9502 16 -2.9502h32c12.3301 0 23.4805 4.80957 32 12.4902c8.50977 -7.66992 19.6602 -12.4805 32 -12.4805h32\nc7.91016 0 15.2803 2.11035 21.8701 5.52051c7.46973 -16.3301 21.5996 -28.9404 38.8701 -34.4502c-17.1104 -14.8203 -31.5801 -34.4805 -47.3105 -58.0801l-6.30957 -9.46973c-0.742188 -1.1123 -1.34375 -3.09961 -1.34375 -4.43652\nc0 -2.36328 1.59668 -5.34375 3.56348 -6.65332l13.3105 -8.88086c1.11133 -0.741211 3.09863 -1.34375 4.43555 -1.34375c2.36328 0 5.34473 1.59668 6.6543 3.56445l6.30957 9.46973c31.8906 47.8398 51.5303 70.2695 96.0498 72.5498\nc4.29004 0.219727 7.88086 3.70996 7.88086 8v16.2002c0 4.41992 -3.52051 8 -13.2002 8h-35.2607c-26.2695 0 -47.5693 21.3203 -47.5693 47.5898v0.560547c0 8.7793 7.12012 15.8496 15.8994 15.8496h112.141c35.3301 0 63.9795 -28.6504 63.9902 -63.9902zM351.97 282.1\nc-10.0596 3.59082 -20.7197 5.90039 -32 5.90039h-32v112c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-117.9zM16 224c-8.83984 0 -16 7.16016 -16 16v128c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-128\nc0 -8.83984 -7.16016 -16 -16 -16h-32zM111.99 224c-8.83984 0 -16 7.16016 -16 16v160c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-160c0 -8.83984 -7.16016 -16 -16 -16h-32z\" />\n    <glyph glyph-name=\"ghost\" unicode=\"&#xf6e2;\" horiz-adv-x=\"384\" \nd=\"M186.1 447.91c108.73 3.25977 197.9 -83.9102 197.9 -191.91v-271.97c0 -14.25 -17.2305 -21.3906 -27.3096 -11.3105l-24.9209 18.5303c-6.65918 4.95996 -16 3.99023 -21.5098 -2.20996l-42.9502 -48.3496c-6.25 -6.25 -16.3799 -6.25 -22.6299 0l-40.7197 45.8496\nc-6.36035 7.16992 -17.5498 7.16992 -23.9199 0l-40.7197 -45.8496c-6.25 -6.25 -16.3799 -6.25 -22.6299 0l-42.9502 48.3496c-5.50977 6.2002 -14.8506 7.16016 -21.5098 2.20996l-24.9209 -18.5303c-10.0791 -10.0801 -27.3096 -2.9502 -27.3096 11.3105v263.92\nc0 105.13 81.0098 196.81 186.1 199.96zM128 224c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM256 224c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z\" />\n    <glyph glyph-name=\"hammer\" unicode=\"&#xf6e3;\" horiz-adv-x=\"576\" \nd=\"M571.31 254.06c6.25 -6.25 6.25 -16.3799 0.0205078 -22.6191l-90.5098 -90.5107c-6.25 -6.25 -16.3799 -6.25 -22.6299 0l-22.6309 22.6299c-6.25 6.25 -6.25 16.3809 0 22.6309l11.3105 11.3096l-28.9004 28.9004\nc-21.3096 -5.63086 -44.8994 -0.360352 -61.6094 16.3496l-49.1406 49.1396c-12.0098 12 -18.75 28.2803 -18.75 45.25v18.75l-90.5098 45.25c62.4902 62.4805 163.8 62.4805 226.28 0l45.25 -45.25c16.71 -16.71 21.9795 -40.2998 16.3496 -61.6094l28.9004 -28.9004\nl11.3096 11.3105c6.25 6.25 16.3799 6.25 22.6299 0zM284.59 269.26l49.1406 -49.1396c3.53906 -3.54004 7.47949 -6.5 11.4395 -9.41016l-238.13 -255.07c-23.8799 -25.5801 -64.2002 -26.2695 -88.9297 -1.5293c-24.7305 24.7393 -24.04 65.0498 1.5293 88.9297\nl255.101 238.17c3.00977 -4.16016 6.14941 -8.25 9.84961 -11.9502z\" />\n    <glyph glyph-name=\"hanukiah\" unicode=\"&#xf6e6;\" horiz-adv-x=\"640\" \nd=\"M232 288h16c4.41992 0 8 -3.58008 8 -8v-120h-32v120c0 4.41992 3.58008 8 8 8zM168 288h16c4.41992 0 8 -3.58008 8 -8v-120h-32v120c0 4.41992 3.58008 8 8 8zM392 288h16c4.41992 0 8 -3.58008 8 -8v-120h-32v120c0 4.41992 3.58008 8 8 8zM456 288h16\nc4.41992 0 8 -3.58008 8 -8v-120h-32v120c0 4.41992 3.58008 8 8 8zM544 280v-120h-32v120c0 4.41992 3.58008 8 8 8h16c4.41992 0 8 -3.58008 8 -8zM104 288h16c4.41992 0 8 -3.58008 8 -8v-120h-32v120c0 4.41992 3.58008 8 8 8zM624 288c8.83984 0 16 -7.16016 16 -16\nv-112c0 -53.0195 -42.9805 -96 -96 -96h-192v-64h176c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-416c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h176v64h-192c-53.0195 0 -96 42.9805 -96 96v112c0 8.83984 7.16016 16 16 16\nh32c8.83984 0 16 -7.16016 16 -16v-112c0 -17.6699 14.3301 -32 32 -32h192v192c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-192h192c17.6699 0 32 14.3301 32 32v112c0 8.83984 7.16016 16 16 16h32zM608 320c-13.25 0 -24 11.9502 -24 26.6699\ns24 53.3301 24 53.3301s24 -38.5996 24 -53.3301c0 -14.7295 -10.75 -26.6699 -24 -26.6699zM32 320c-13.25 0 -24 11.9502 -24 26.6699s24 53.3301 24 53.3301s24 -38.5996 24 -53.3301c0 -14.7295 -10.75 -26.6699 -24 -26.6699zM320 368\nc-13.25 0 -24 11.9502 -24 26.6699s24 53.3301 24 53.3301s24 -38.5996 24 -53.3301c0 -14.7295 -10.75 -26.6699 -24 -26.6699zM112 320c-13.25 0 -24 11.9502 -24 26.6699s24 53.3301 24 53.3301s24 -38.5996 24 -53.3301c0 -14.7295 -10.75 -26.6699 -24 -26.6699z\nM176 320c-13.25 0 -24 11.9502 -24 26.6699s24 53.3301 24 53.3301s24 -38.5996 24 -53.3301c0 -14.7295 -10.75 -26.6699 -24 -26.6699zM240 320c-13.25 0 -24 11.9502 -24 26.6699s24 53.3301 24 53.3301s24 -38.5996 24 -53.3301\nc0 -14.7295 -10.75 -26.6699 -24 -26.6699zM400 320c-13.25 0 -24 11.9502 -24 26.6699s24 53.3301 24 53.3301s24 -38.5996 24 -53.3301c0 -14.7295 -10.75 -26.6699 -24 -26.6699zM464 320c-13.25 0 -24 11.9502 -24 26.6699s24 53.3301 24 53.3301\ns24 -38.5996 24 -53.3301c0 -14.7295 -10.75 -26.6699 -24 -26.6699zM528 320c-13.25 0 -24 11.9502 -24 26.6699s24 53.3301 24 53.3301s24 -38.5996 24 -53.3301c0 -14.7295 -10.75 -26.6699 -24 -26.6699z\" />\n    <glyph glyph-name=\"hat-wizard\" unicode=\"&#xf6e8;\" \nd=\"M496 0c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-480c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h480zM192 64l16 -32h-144l110.96 249.66c9.4043 21.1611 33.3545 47.6611 53.46 59.1494l187.58 107.19l-56.2998 -168.92\nc-1.81543 -5.43945 -3.28809 -14.5078 -3.28809 -20.2412c0 -7.25098 2.31934 -18.5449 5.17773 -25.209l86.4102 -201.63h-208l16 32l64 32l-64 32l-32 64l-32 -64l-64 -32zM256 288l-32 -16l32 -16l16 -32l16 32l32 16l-32 16l-16 32z\" />\n    <glyph glyph-name=\"hiking\" unicode=\"&#xf6ec;\" horiz-adv-x=\"384\" \nd=\"M80.9502 -24.2305l34.5596 138.221l52.7803 -52.7803l-25.2402 -100.97c-3.64941 -14.5303 -16.6895 -24.2305 -31.0195 -24.2305c-2.58008 0 -5.19043 0.290039 -7.7998 0.950195c-17.1406 4.28027 -27.5605 21.6504 -23.2803 38.8096zM95.8398 171.89\nc-2.18945 -8.41992 -11.0801 -13.54 -19.8701 -11.4395l-63.5596 15.25c-8.78027 2.10938 -14.1104 10.6396 -11.9199 19.0596l25.2695 98.1299c10.9707 42.1006 55.4404 67.6904 99.3203 57.1699c8.78027 -2.10938 14.1104 -10.6396 11.9199 -19.0596zM368 288\nc8.83984 0 16 -7.16016 15.9902 -16v-320.01c0 -8.83984 -7.16016 -16 -16 -16h-16c-8.83984 0 -16 7.16016 -16 16v240h-48c-8.48047 0 -16.6201 3.37988 -22.6201 9.37988l-22.4297 22.4297l-19.8906 -79.5693\nc-0.129883 -0.520508 -0.469727 -0.910156 -0.620117 -1.41016l46.8203 -46.8203c12.0898 -12.0898 18.75 -28.1602 18.75 -45.25v-82.75c0 -17.6699 -14.3301 -32 -32 -32s-32 14.3301 -32 32v82.75l-86.6201 86.6201c-5.17383 5.1748 -9.37402 15.3154 -9.37402 22.6338\nc0 2.17285 0.427734 5.64746 0.954102 7.75586l26.9199 107.721c6.56055 26.2197 30.0098 44.5195 57.0303 44.5195c15.7002 0 30.4697 -6.11035 41.5596 -17.2197l46.7803 -46.7803h34.75v16c0 8.83984 7.16016 16 16 16h16zM240 352c-26.5098 0 -48 21.4902 -48 48\ns21.4902 48 48 48s48 -21.4902 48 -48s-21.4902 -48 -48 -48z\" />\n    <glyph glyph-name=\"hippo\" unicode=\"&#xf6ed;\" horiz-adv-x=\"640\" \nd=\"M581.12 351.8c34.0898 -0.189453 58.8799 -33.6895 58.8799 -67.7803v-92.0195c0 -17.6699 -14.3301 -32 -32 -32v-32c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v32h-128v-176c0 -8.83984 -7.16016 -16 -16 -16h-64\nc-8.83984 0 -16 7.16016 -16 16v70.79c-32.3496 -14.3604 -70.7197 -22.79 -112 -22.79s-79.6504 8.42969 -112 22.79v-70.79c0 -8.83984 -7.16016 -16 -16 -16h-64c-8.83984 0 -16 7.16016 -16 16v240c0 88.3604 85.96 160 192 160\nc49.2402 0 94.0098 -15.5801 128 -40.9805v48.9805c0 13.2598 10.75 24 24 24h16c13.25 0 24 -10.7402 24 -24v-13.8799c10.0498 3.58008 20.7197 5.87988 32 5.87988c39.8301 0 73.9805 -24.2695 88.5195 -58.8203c24.1006 9.04004 48.9307 26.7705 76.6006 26.6201z\nM448 272c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16s-16 -7.16016 -16 -16s7.16016 -16 16 -16z\" />\n    <glyph glyph-name=\"horse\" unicode=\"&#xf6f0;\" horiz-adv-x=\"576\" \nd=\"M575.92 371.4l0.0605469 -77.71v-0.0292969c0 -11.9609 -9.01465 -25.2715 -20.1201 -29.7109l-32.5508 -13.0205c-15.4395 -6.17969 -33.04 0.5 -40.4893 15.3701l-18.9004 37.7002l-16 7.11035v-102.471c0.00976562 -0.219727 0.0800781 -0.419922 0.0800781 -0.639648\nc0 -30.4697 -12.2598 -58.0303 -32 -78.2197v-177.78c0 -8.83984 -7.16016 -16 -16 -16h-64c-8.83984 0 -16 7.16016 -16 16v150.4l-133.97 22.3301l-23.8398 -63.5908l26.3096 -105.26c2.53027 -10.0996 -5.11035 -19.8799 -15.5195 -19.8799h-65.9609h-0.000976562\nc-6.89453 0 -13.8428 5.42969 -15.5088 12.1201l-24.8496 99.4102c-1.05664 4.2207 -1.91406 11.1777 -1.91406 15.5293c0 6.40332 1.8252 16.4648 4.07422 22.46l25.7197 68.6006c-18.7002 17.5195 -30.54 42.2402 -30.54 69.8799\nc0 2.62988 0.570312 5.09961 0.780273 7.67969c-9.91016 -7.29004 -16.7803 -18.46 -16.7803 -31.6797v-56c0 -8.83984 -7.16016 -16 -16 -16h-16c-8.83984 0 -16 7.16016 -16 16v56c0 48.5303 39.4697 88 88 88v-1.11035c17.5996 20.1299 43.1602 33.1104 72 33.1104\nh159.92c0 70.6904 57.3105 128 128 128h119.98c5.05957 0 8.94922 -4.67969 7.92969 -9.63965c-2.67969 -13.1699 -11.1201 -23.8203 -22.1797 -30.6602c5.10938 -5.37988 9.90918 -10.4697 13.6895 -14.5c5.56055 -5.93066 8.57031 -13.6699 8.58008 -21.7998zM511.92 352\nc8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16s-16 -7.16016 -16 -16s7.16016 -16 16 -16z\" />\n    <glyph glyph-name=\"house-damage\" unicode=\"&#xf6f1;\" horiz-adv-x=\"576\" \nd=\"M288 333.04l218.74 -192.94c1.54004 -1.37988 3.55957 -2.04004 5.25977 -3.19922v-184.9c0 -8.83984 -7.16016 -16 -16 -16h-176.19l-39.9199 55.25l104.11 64l-148.05 136.78l60.1602 -119.221l-104.11 -64l37.2305 -72.8096h-149.23c-8.83984 0 -16 7.16016 -16 16\nv184.94c1.78027 1.20996 3.84961 1.88965 5.46973 3.34961zM570.69 211.72c6.5791 -5.89941 7.11914 -16.0195 1.21973 -22.5898l-21.4004 -23.8203c-5.91016 -6.56934 -16.0293 -7.10938 -22.5996 -1.20996l-229.32 202.271c-6.0498 5.33008 -15.1201 5.33008 -21.1699 0\nl-229.32 -202.28c-6.58008 -5.91016 -16.6992 -5.35938 -22.5996 1.20996l-21.4004 23.8203c-5.90918 6.58008 -5.35938 16.6895 1.20996 22.5996l255.99 226.011c7.60059 6.85938 17.1406 10.2793 26.7002 10.2695s19.1201 -3.4502 26.75 -10.3096l101.25 -89.3809v51.6904\nc0 8.83984 7.16016 16 16 16h64c8.83984 0 16 -7.16016 16 -16v-136.45z\" />\n    <glyph glyph-name=\"hryvnia\" unicode=\"&#xf6f2;\" horiz-adv-x=\"384\" \nd=\"M368 208h-99.7002l-34.6699 -32h134.37c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-203.7l-29.4902 -27.2197c-4.3291 -4 -6.80957 -9.66992 -6.80957 -15.5801c0 -11.6807 9.50977 -21.2002 21.2002 -21.2002h83.6299h0.00195312\nc4.79395 0 11.6748 2.49121 15.3584 5.55957l11.75 9.80078c10.1895 8.48926 25.3193 7.12012 33.8096 -3.07031l20.4902 -24.5898c8.49023 -10.1807 7.10938 -25.3105 -3.07031 -33.7998l-11.7695 -9.81055c-18.6807 -15.5596 -42.2207 -24.0898 -66.54 -24.0898h-78.8203\nc-37.1396 0 -73.3799 17.8496 -92.0498 49.9502c-17.8701 30.7197 -17.54 65.4199 -4.12988 94.0498h-41.8604c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h99.7002l34.6699 32h-134.37c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16\nh203.7l29.4902 27.21c4.3291 4 6.80957 9.66992 6.80957 15.5801c0 11.6797 -9.50977 21.2002 -21.2002 21.2002h-83.6201c-5.62012 0 -11.0693 -1.9707 -15.3896 -5.57031l-11.7305 -9.78027c-10.1895 -8.48926 -25.3193 -7.12012 -33.8096 3.07031l-20.4902 24.5898\nc-8.49023 10.1807 -7.10938 25.3105 3.07031 33.7998l11.7695 9.81055c18.6807 15.5596 42.2207 24.0898 66.54 24.0898h78.8203c37.1396 0 73.3799 -17.8398 92.0498 -49.9502c17.8701 -30.7197 17.54 -65.4199 4.12988 -94.0498h41.8604c8.83984 0 16 -7.16016 16 -16v-32\nc0 -8.83984 -7.16016 -16 -16 -16z\" />\n    <glyph glyph-name=\"mask\" unicode=\"&#xf6fa;\" horiz-adv-x=\"640\" \nd=\"M320.67 384c449.09 0 348.32 -384 158.46 -384c-39.8994 0 -77.4697 20.6904 -101.41 55.8604l-25.7295 37.79c-15.6602 22.9893 -46.9707 22.9893 -62.6299 0l-25.7305 -37.79c-23.9502 -35.1699 -61.5195 -55.8604 -101.42 -55.8604c-199.11 0 -284.14 384 158.46 384z\nM184 139.64c41.0596 0 67.7598 25.6504 80.0801 41.0508c5.22949 6.54004 5.22949 16.0996 0 22.6299c-12.3203 15.3896 -39.0098 41.0498 -80.0801 41.0498s-67.7598 -25.6504 -80.0801 -41.0498c-5.22949 -6.54004 -5.22949 -16.1006 0 -22.6299\nc12.3203 -15.3906 39.0205 -41.0508 80.0801 -41.0508zM456 139.64c41.0596 0 67.7598 25.6504 80.0801 41.0508c5.22949 6.54004 5.22949 16.0996 0 22.6299c-12.3203 15.3896 -39.0098 41.0498 -80.0801 41.0498s-67.7598 -25.6504 -80.0801 -41.0498\nc-5.22949 -6.54004 -5.22949 -16.1006 0 -22.6299c12.3203 -15.3906 39.0205 -41.0508 80.0801 -41.0508z\" />\n    <glyph glyph-name=\"mountain\" unicode=\"&#xf6fc;\" horiz-adv-x=\"640\" \nd=\"M634.92 -14.7002c2.80566 -4.3623 5.08301 -12.1133 5.08301 -17.3008c0 -4.50586 -1.75293 -11.374 -3.91309 -15.3291c-5.60938 -10.2803 -16.3799 -16.6699 -28.0898 -16.6699h-576h-0.00390625c-10.4795 0 -23.0615 7.46387 -28.0859 16.6602\nc-2.16016 3.95605 -3.91309 10.8262 -3.91309 15.334c0 5.18848 2.27734 12.9414 5.08301 17.3057l288 448c5.88965 9.16016 16.0303 14.7002 26.9199 14.7002s21.0303 -5.54004 26.9199 -14.7002zM320 356.82l-102.06 -158.761l38.0596 -38.0596l64 64h85.3896z\" />\n    <glyph glyph-name=\"network-wired\" unicode=\"&#xf6ff;\" horiz-adv-x=\"640\" \nd=\"M640 184c0 -8.83984 -7.16016 -16 -16 -16h-104v-40h56c17.6699 0 32 -14.3301 32 -32v-128c0 -17.6699 -14.3301 -32 -32 -32h-160c-17.6699 0 -32 14.3301 -32 32v128c0 17.6699 14.3301 32 32 32h56v40h-304v-40h56c17.6699 0 32 -14.3301 32 -32v-128\nc0 -17.6699 -14.3301 -32 -32 -32h-160c-17.6699 0 -32 14.3301 -32 32v128c0 17.6699 14.3301 32 32 32h56v40h-104c-8.83984 0 -16 7.16016 -16 16v16c0 8.83984 7.16016 16 16 16h280v40h-72c-17.6699 0 -32 14.3301 -32 32v128c0 17.6699 14.3301 32 32 32h192\nc17.6699 0 32 -14.3301 32 -32v-128c0 -17.6699 -14.3301 -32 -32 -32h-72v-40h280c8.83984 0 16 -7.16016 16 -16v-16zM256 320h128v64h-128v-64zM192 0v64h-96v-64h96zM544 0v64h-96v-64h96z\" />\n    <glyph glyph-name=\"otter\" unicode=\"&#xf700;\" horiz-adv-x=\"640\" \nd=\"M608 416c17.6699 0 32 -14.3301 32 -32v-32c0 -53.0195 -42.9805 -96 -96 -96h-22.8604l-92.4697 -49.79l55.1104 -110.21h28.2197c17.6699 0 32 -14.3301 32 -32v-16c0 -8.83984 -7.16016 -16 -16 -16h-80l-74.5098 144.5l-149.49 -80.5h64\nc17.6699 0 32 -14.3301 32 -32v-16c0 -8.83984 -7.16016 -16 -16 -16h-224c-8.83008 0 -16 -7.16992 -16 -16s7.16992 -16 16 -16h112c17.6699 0 32 -14.3301 32 -32s-14.3301 -32 -32 -32h-108.47c-39.3799 0 -75.5205 26.9004 -82.2803 65.7002\nc-4.91016 28.1201 5 54.2197 23.1904 71.7998c23.5596 22.75 39.5596 52.1396 39.5596 84.8896v1.61035c0 106.04 85.96 192 192 192h56l153.25 87.5703c9.66992 5.51953 20.6104 8.42969 31.75 8.42969h20.4902h0.0126953c14.6328 0 34.9033 -8.40039 45.2471 -18.75\nl13.25 -13.25h32zM512 400c-8.83984 0 -16 -7.16016 -16 -16s7.16016 -16 16 -16s16 7.16016 16 16s-7.16016 16 -16 16zM544 304c20.8301 0 38.4297 13.4199 45.0498 32h-77.0498l-118.57 -59.29l13.7705 -27.5498l101.84 54.8398h34.96z\" />\n    <glyph glyph-name=\"ring\" unicode=\"&#xf70b;\" \nd=\"M256 384c145.94 0 256 -61.9102 256 -144v-98.1299c0 -78.3506 -114.62 -141.87 -256 -141.87s-256 63.5195 -256 141.87v98.1299c0 82.0898 110.06 144 256 144zM256 320c-106.04 0 -192 -35.8203 -192 -80c0 -9.25977 3.96973 -18.1201 10.9102 -26.3896\nc44.9395 26.1797 108.859 42.3896 181.09 42.3896s136.15 -16.21 181.09 -42.3896c6.94043 8.26953 10.9102 17.1299 10.9102 26.3896c0 44.1797 -85.96 80 -192 80zM120.43 183.36c34.7305 -14.4307 82.6406 -23.3604 135.57 -23.3604s100.84 8.92969 135.57 23.3604\nc-34.6104 14.71 -81.21 24.6396 -135.57 24.6396s-100.96 -9.92969 -135.57 -24.6396z\" />\n    <glyph glyph-name=\"running\" unicode=\"&#xf70c;\" horiz-adv-x=\"416\" \nd=\"M272 352c-26.5098 0 -48 21.4902 -48 48s21.4902 48 48 48s48 -21.4902 48 -48s-21.4902 -48 -48 -48zM113.69 130.53c7.92969 -17.2402 20.6699 -32.3799 37.9893 -42.6104l10.6699 -6.2998l-8.79004 -20.5205c-7.5293 -17.6494 -24.8594 -29.0898 -44.1094 -29.0898\nh-77.4502c-17.6699 0 -32 14.3301 -32 32s14.3301 32 32 32h66.8896zM384 224.01c17.6699 0 32 -14.3193 32 -31.9902c0 -17.6699 -14.3301 -32 -32 -32h-53.9902c-18.1895 0 -35.1094 10.5508 -43.1094 26.8906l-20.2705 41.4297l-31.3096 -78.2803l61.2393 -36.1396\nc18.75 -11.3096 27.5508 -33.6201 21.6406 -54.3896l-31.6406 -101.061c-4.29004 -13.6797 -16.9092 -22.4502 -30.5195 -22.4502c-3.16992 0 -6.38965 0.480469 -9.58008 1.48047c-16.8604 5.28027 -26.25 23.2305 -20.9697 40.0898l27.4697 87.7305l-84.9795 50.1699\nc-27.6104 16.2998 -38.9209 50.8301 -26.3008 80.3096l37.46 87.3906l-14.6992 4.36914c-7.83008 1.86035 -17.6006 -0.25 -25.2705 -6.13965l-39.6895 -30.4102c-14.0205 -10.7402 -34.0908 -8.10938 -44.8604 5.91992c-10.7705 14.0303 -8.11035 34.1104 5.91992 44.8604\nl39.6699 30.4102c23.0703 17.6895 52.54 23.9395 80.8398 17.1396l71.0801 -21.1396c26.3301 -6.70996 49.2803 -25.3906 61.7803 -50.9404l26.0596 -53.25h44.0303z\" />\n    <glyph glyph-name=\"scroll\" unicode=\"&#xf70e;\" horiz-adv-x=\"640\" \nd=\"M48 448c26.4697 0 48 -21.5303 48 -48v-80h-80c-8.83984 0 -16 7.16016 -16 16v64c0 26.4697 21.5303 48 48 48zM256 35.4297c0 -31.8896 -21.7803 -61.4297 -53.25 -66.5498c-40.0996 -6.53027 -74.75 24.25 -74.75 63.1201v368c0 18.0801 -6.25977 34.5898 -16.4102 48\nh336.41c52.9404 0 96 -43.0596 96 -96v-256h-288v-60.5703zM288 64h336c8.83984 0 16 -7.16016 16 -16c0 -61.8604 -50.1396 -112 -112 -112h-336c52.9404 0 96 43.0703 96 96v32z\" />\n    <glyph glyph-name=\"skull-crossbones\" unicode=\"&#xf714;\" horiz-adv-x=\"448\" \nd=\"M439.15 -5.05957c7.89941 -3.9502 11.1094 -13.5605 7.15918 -21.4707l-14.3096 -28.6299c-3.95996 -7.89941 -13.5703 -11.0996 -21.4697 -7.14941l-186.53 90.7197l-186.52 -90.7197c-7.91016 -3.95996 -17.5205 -0.75 -21.4707 7.14941l-14.3096 28.6299\nc-3.95996 7.91016 -0.75 17.5205 7.14941 21.4707l141.98 69.0596l-141.99 69.0596c-7.89941 3.9502 -11.0996 13.5605 -7.14941 21.46l14.3096 28.6309c3.95996 7.90918 13.5703 11.1094 21.4697 7.15918l186.53 -90.7197l186.53 90.7197\nc7.91016 3.9502 17.5195 0.740234 21.4697 -7.15918l14.3096 -28.6309c3.95996 -7.89941 0.75 -17.5098 -7.14941 -21.46l-141.99 -69.0596zM150 210.72c-41.7803 22.4102 -70 62.75 -70 109.28c0 70.6904 64.4697 128 144 128s144 -57.3096 144 -128\nc0 -46.5303 -28.2197 -86.8701 -70 -109.28l5.5 -25.8701c2.66992 -12.6191 -5.41992 -24.8496 -16.4502 -24.8496h-126.08c-11.0293 0 -19.1201 12.2305 -16.4502 24.8496zM280 336c-17.6504 0 -32 -14.3496 -32 -32s14.3496 -32 32 -32s32 14.3496 32 32\ns-14.3496 32 -32 32zM168 336c-17.6504 0 -32 -14.3496 -32 -32s14.3496 -32 32 -32s32 14.3496 32 32s-14.3496 32 -32 32z\" />\n    <glyph glyph-name=\"slash\" unicode=\"&#xf715;\" horiz-adv-x=\"640\" \nd=\"M594.53 -60.6299l-588.351 454.729c-6.96973 5.41992 -8.22949 15.4707 -2.80957 22.4502l19.6396 25.2705c5.41992 6.97949 15.4805 8.23926 22.46 2.80957l588.351 -454.729c6.96973 -5.41992 8.22949 -15.4707 2.80957 -22.4502l-19.6396 -25.2705\nc-5.41992 -6.97949 -15.4805 -8.22949 -22.46 -2.80957z\" />\n    <glyph glyph-name=\"spider\" unicode=\"&#xf717;\" horiz-adv-x=\"576\" \nd=\"M151.17 280.65l-27.1504 54.2998c-1.86035 3.72949 -3.37109 10.1387 -3.37109 14.3066c0 2.86719 0.735352 7.40234 1.6416 10.123l25.8896 77.6797c2.79004 8.39062 11.8604 12.9209 20.2402 10.1201l15.1699 -5.05957\nc8.39062 -2.7998 12.9102 -11.8604 10.1201 -20.2402l-23.7998 -71.3896l20.29 -40.5801c-1.41016 -4.20996 -2.49023 -8.20996 -3.20996 -11.79l-5.2207 -26.1201h-4.66992zM573.31 98.6201c4.90039 -7.35059 2.9209 -17.2803 -4.43945 -22.1797l-13.3105 -8.88086\nc-7.34961 -4.89941 -17.29 -2.90918 -22.1895 4.44043l-48 72h-47.0605l60.8301 -97.3301c3.16992 -5.08008 4.86035 -10.96 4.86035 -16.96v-77.71c0 -8.83984 -7.16016 -16 -16 -16h-16c-8.83984 0 -16 7.16016 -16 16v73.1104l-74.0801 118.529\nc1 -14.0498 2.08008 -28.1094 2.08008 -42.21c0 -53.0693 -40.7598 -101.43 -96 -101.43s-96 48.3604 -96 101.43c0 14.1006 1.07031 28.1602 2.08008 42.21l-74.0801 -118.529v-73.1104c0 -8.83984 -7.16016 -16 -16 -16h-16c-8.83984 0 -16 7.16016 -16 16v77.7002\nv0.00976562c0 5.0625 2.17773 12.6562 4.86035 16.9502l60.8301 97.3301h-47.0605l-48 -72c-4.89941 -7.35059 -14.8398 -9.33984 -22.1895 -4.44043l-13.3105 8.87988c-7.36035 4.90039 -9.33984 14.8398 -4.43945 22.1904l52.7393 79.1299\nc5.24707 7.86426 17.1768 14.248 26.6299 14.25h77.9404l-68.9902 24.3496c-5.75 1.91895 -13.1465 7.56738 -16.5098 12.6104l-53.5996 80.4102c-4.90039 7.36035 -2.91016 17.29 4.43945 22.1895l13.3105 8.88086c7.35938 4.89941 17.29 2.90918 22.1895 -4.44043\nl50.5703 -75.8301l60.4902 -20.1699h36.0996l10.3701 51.8496c2.18945 10.9707 17.3701 60.1504 69.6299 60.1504s67.4404 -49.1797 69.6299 -60.1504l10.3701 -51.8496h36.0996l60.5 20.1699l50.5605 75.8301c4.89941 7.34961 14.8398 9.33984 22.1895 4.44043\nl13.3105 -8.88086c7.34961 -4.89941 9.33984 -14.8398 4.43945 -22.1895l-53.5996 -80.4102c-3.36328 -5.04297 -10.7598 -10.6914 -16.5098 -12.6104l-68.9902 -24.3594h77.9404c9.45117 -0.00195312 21.377 -6.38672 26.6191 -14.25zM406.09 350.49l-23.7998 71.3896\nc-2.79004 8.37988 1.74023 17.4404 10.1201 20.2402l15.1699 5.05957c8.37988 2.80078 17.4502 -1.73926 20.2402 -10.1201l25.8896 -77.6797c0.908203 -2.72168 1.64551 -7.25781 1.64551 -10.127c0 -4.16699 -1.5127 -10.5752 -3.375 -14.3027l-27.1504 -54.2998\nl-25.9297 -8.65039h-4.66992l-5.2207 26.1201c-0.719727 3.58008 -1.7998 7.58008 -3.20996 11.79z\" />\n    <glyph glyph-name=\"toilet-paper\" unicode=\"&#xf71e;\" horiz-adv-x=\"576\" \nd=\"M128 448h284.44c-36.7705 -38.4805 -60.4404 -108.4 -60.4404 -192v-172.07c0 -53.6494 -11.8799 -87.5693 -24.71 -126.05c-4.36035 -13.0703 -16.5898 -21.8799 -30.3604 -21.8799h-280.92c-10.9199 0 -18.6299 10.7002 -15.1797 21.0596\nc21.3701 64.1006 31.1699 85.75 31.1699 126.87v172.07c0 106.04 42.9805 192 96 192zM96 224c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16s-16 -7.16016 -16 -16s7.16016 -16 16 -16zM160 224c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16s-16 -7.16016 -16 -16\ns7.16016 -16 16 -16zM224 224c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16s-16 -7.16016 -16 -16s7.16016 -16 16 -16zM288 224c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16s-16 -7.16016 -16 -16s7.16016 -16 16 -16zM480 448c53.0195 0 96 -85.96 96 -192\ns-42.9805 -192 -96 -192s-96 85.96 -96 192s42.9805 192 96 192zM480 192c17.6699 0 32 28.6504 32 64s-14.3301 64 -32 64s-32 -28.6504 -32 -64s14.3301 -64 32 -64z\" />\n    <glyph glyph-name=\"tractor\" unicode=\"&#xf722;\" horiz-adv-x=\"640\" \nd=\"M528 112c48.5996 0 88 -39.4004 88 -88s-39.4004 -88 -88 -88s-88 39.4004 -88 88s39.4004 88 88 88zM528 0c13.2305 0 24 10.7695 24 24s-10.7695 24 -24 24s-24 -10.7695 -24 -24s10.7695 -24 24 -24zM608 288c17.6699 0 32 -14.3301 31.9902 -32v-50.7598\nc0 -8.49023 -3.37012 -16.6299 -9.37012 -22.6299l-50.8203 -50.8203c-15.7295 7.58984 -33.1602 12.2002 -51.7998 12.2002c-39.1396 0 -73.5498 -19.0098 -95.46 -48h-80.54v-6c0 -12.1504 -9.84961 -22 -22 -22h-7.16016\nc-2.9502 -9.90039 -6.91992 -19.46 -11.9102 -28.7207l5.06055 -5.05957c8.58984 -8.58984 8.58984 -22.5195 0 -31.1104l-31.1104 -31.1094c-8.58984 -8.58984 -22.5195 -8.58984 -31.1104 0l-5.05957 5.05957c-9.25977 -4.99023 -18.8203 -8.95996 -28.7197 -11.9102\nv-7.13965c0 -12.1504 -9.85059 -22 -22 -22h-44c-12.1504 0 -22 9.84961 -22 22v7.15039c-9.90039 2.94922 -19.46 6.91992 -28.7207 11.9092l-5.05957 -5.05957c-8.58984 -8.58984 -22.5195 -8.58984 -31.1104 0l-31.1094 31.1104\nc-8.58984 8.58984 -8.58984 22.5195 0 31.1094l5.05957 5.06055c-4.99023 9.26953 -8.9502 18.8193 -11.9102 28.7295h-7.13965c-12.1504 0 -22 9.85059 -22 22v44c0 12.1504 9.84961 22 22 22h7.15039c2.94922 9.90039 6.91992 19.46 11.9092 28.7207l-5.05957 5.05957\nc-8.58984 8.58984 -8.58984 22.5195 0 31.1104l31.1104 31.1094c7.92969 7.93066 20.2598 8.2002 28.8896 1.4707v146.52c0 26.4697 21.5303 48 48 48h133.45h0.046875c17.4834 0 37.2324 -13.0547 44.083 -29.1396l56.0898 -130.86h102.33v40.2002\nc0 29.9902 10.5801 58.8994 29.5 81.7197c6.37988 7.7002 18.04 8.23047 24.7002 0.780273l21.6299 -24.1699c4.87012 -5.43066 5.74023 -13.6904 1.32031 -19.4902c-8.4502 -11.0801 -13.1504 -24.7197 -13.1504 -38.8398v-40.2002h64zM176 32c44.1797 0 80 35.8203 80 80\ns-35.8203 80 -80 80s-80 -35.8203 -80 -80s35.8203 -80 80 -80zM198 288h110.04l-41.1504 96h-106.89v-96h38z\" />\n    <glyph glyph-name=\"user-injured\" unicode=\"&#xf728;\" horiz-adv-x=\"448\" \nd=\"M277.37 436.02l-90.6904 -68.0195h-81.1895c19.0098 46.8701 64.8193 80 118.51 80c19.1104 0 37.0801 -4.46973 53.3701 -11.9805zM342.51 368h-102.52l66.0293 49.5195c15.8203 -13.3193 28.5908 -30.0498 36.4902 -49.5195zM224 192c-70.6904 0 -128 57.3096 -128 128\nc0 5.48047 0.94043 10.7002 1.61035 16h252.779c0.660156 -5.2998 1.61035 -10.5195 1.61035 -16c0 -70.6904 -57.3096 -128 -128 -128zM80 148.3c7.92676 3.51758 21.2812 7.64844 29.8096 9.21973l98.4502 -221.52h-128.26v212.3zM0 -16v41.5996\nc0 41.1406 18.8799 77.5107 48 102.16v-191.76c-26.5098 0 -48 21.4902 -48 48zM256 32c26.4697 0 48 -21.5303 48 -48s-21.5303 -48 -48 -48h-12.71l-42.6699 96h55.3799zM313.6 160c74.2305 0 134.4 -60.1699 134.4 -134.4v-41.5996c0 -26.5098 -21.4902 -48 -48 -48\nh-80.4102c10.1504 13.4102 16.4102 29.9199 16.4102 48c0 44.1104 -35.8896 80 -80 80h-69.5898l-42.6699 96h7.37012c22.2393 -10.1797 46.8799 -16 72.8896 -16s50.6504 5.82031 72.8896 16h16.71z\" />\n    <glyph glyph-name=\"vr-cardboard\" unicode=\"&#xf729;\" horiz-adv-x=\"640\" \nd=\"M608 384c17.6699 0 32 -14.3301 32 -32v-320c0 -17.6699 -14.3301 -32 -32 -32h-160.22c-25.1807 0 -48.0303 14.7695 -58.3604 37.7402l-27.7402 61.6396c-7.88965 17.54 -24.0293 28.6201 -41.6797 28.6201s-33.79 -11.0801 -41.6797 -28.6201l-27.7402 -61.6396\nc-10.3301 -22.9707 -33.1699 -37.7402 -58.3604 -37.7402h-160.22c-17.6699 0 -32 14.3301 -32 32v320c0 17.6699 14.3301 32 32 32h576zM160 144c35.3496 0 64 28.6504 64 64s-28.6504 64 -64 64s-64 -28.6504 -64 -64s28.6504 -64 64 -64zM480 144\nc35.3496 0 64 28.6504 64 64s-28.6504 64 -64 64s-64 -28.6504 -64 -64s28.6504 -64 64 -64z\" />\n    <glyph glyph-name=\"wind\" unicode=\"&#xf72e;\" \nd=\"M156.7 192c48.7002 0 92.2998 -35 98.3994 -83.4004c7.5 -58.5 -38.0996 -108.6 -95.1992 -108.6c-46.6006 0 -85.6006 33.5 -94.2002 77.5996c-1.7998 9.60059 6.09961 18.4004 15.8994 18.4004h32.8008c6.59961 0 13.0996 -3.7998 15.1992 -10.0996\nc4.30078 -12.7002 16.3008 -21.9004 30.4004 -21.9004c19.5 0 34.9004 17.4004 31.5996 37.4004c-2.59961 15.6992 -17.5 26.5996 -33.3994 26.5996h-142.2c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h140.7zM16 224c-8.7998 0 -16 7.2002 -16 16v32\nc0 8.7998 7.2002 16 16 16h334.2c16 0 30.7998 10.9004 33.3994 26.5996c3.30078 20 -12.1992 37.4004 -31.5996 37.4004c-14.0996 0 -26.0996 -9.2002 -30.4004 -21.9004c-2.09961 -6.2998 -8.5 -10.0996 -15.1992 -10.0996h-32.8008\nc-9.69922 0 -17.6992 8.7002 -15.7998 18.2998c9.7998 50.6006 59.5 87.1006 114.9 75.5c36.2002 -7.59961 65.5 -36.8994 73.0996 -73.0996c13 -61.9004 -34.0996 -116.7 -93.7998 -116.7h-336zM400 192c70.5 0 126 -65.5 108.9 -138.7\nc-9.60059 -41.0996 -43.5 -74 -84.7002 -82.7002c-58.9004 -12.5 -111.601 21.7002 -129.4 72.3008c-3.7002 10.2998 4.40039 21.0996 15.2998 21.0996h33.8008c5.7998 0 11.5996 -2.59961 14.5 -7.59961c8.2998 -14.5 23.6992 -24.4004 41.5996 -24.4004\nc26.5 0 48 21.5 48 48s-21.5 48 -48 48h-116.5c-6.59961 25.2002 -20.5 47.4004 -39.7998 64h156.3z\" />\n    <glyph glyph-name=\"wine-bottle\" unicode=\"&#xf72f;\" \nd=\"M507.31 375.43c6.25 -6.25 6.25 -16.3799 0.0107422 -22.6201l-22.6299 -22.6299c-6.25 -6.25 -16.3809 -6.25 -22.6309 0l-76.6699 -76.6699c19.7002 -46.5801 10.7305 -102.41 -27.2295 -140.37l-158.391 -158.39c-24.9893 -24.9902 -65.5195 -24.9902 -90.5098 0\nl-90.5098 90.5098c-24.9902 24.9902 -24.9902 65.5205 0 90.5098l158.38 158.381c37.9697 37.96 93.79 46.9297 140.37 27.2295l76.6699 76.6699c-6.25 6.25 -6.25 16.3799 0 22.6299l22.6299 22.6299c6.25 6.25 16.3799 6.25 22.6299 0zM179.22 24.71l122.04 122.04\nl-90.5098 90.5098l-122.04 -122.04z\" />\n    <glyph glyph-name=\"cloud-meatball\" unicode=\"&#xf73b;\" \nd=\"M48 96c26.5 0 48 -21.5 48 -48s-21.5 -48 -48 -48s-48 21.5 -48 48s21.5 48 48 48zM464 96c26.5 0 48 -21.5 48 -48s-21.5 -48 -48 -48s-48 21.5 -48 48s21.5 48 48 48zM345 84.9004c13.5 -7 23 -20.7002 23 -36.9004s-9.5 -29.9004 -23 -36.9004\nc4.59961 -14.5 1.7002 -30.7998 -9.7998 -42.2998c-8.2002 -8.2002 -18.9004 -12.2998 -29.7002 -12.2998c-4.2998 0 -8.5 1.2002 -12.5996 2.5c-7 -13.5 -20.7002 -23 -36.9004 -23s-29.9004 9.5 -36.9004 23c-4.09961 -1.40039 -8.2998 -2.5 -12.5996 -2.5\nc-10.7998 0 -21.5 4.09961 -29.7002 12.2998c-11.5 11.5 -14.5 27.7998 -9.89941 42.2998c-13.5 7 -23 20.7002 -23 36.9004s9.5 29.9004 23 36.9004c-4.5 14.5 -1.60059 30.7998 9.89941 42.2998s27.7998 14.5 42.2998 9.89941c7 13.5 20.7002 23 36.9004 23\ns29.9004 -9.5 36.9004 -23c14.5 4.5 30.7998 1.60059 42.2998 -9.89941c11.3994 -11.5 14.3994 -27.7998 9.7998 -42.2998zM512 224c0 -53 -43 -96 -96 -96h-43.4004c-3.5 8 -8.39941 15.4004 -14.7998 21.7998c-13.5 13.5 -31.5 21.1006 -50.7998 21.2998\nc-13.5 13.2002 -31.7002 20.9004 -51 20.9004s-37.5 -7.7002 -51 -20.9004c-19.2998 -0.199219 -37.2998 -7.7998 -50.7998 -21.2998c-6.40039 -6.39941 -11.2002 -13.7998 -14.7998 -21.7998h-43.4004c-53 0 -96 43 -96 96c0 42.5 27.7998 78.2002 66.0996 90.7998\nc-1.2998 6.90039 -2.09961 13.9004 -2.09961 21.2002c0 61.9004 50.0996 112 112 112c43.2998 0 80.4004 -24.7998 99 -60.7998c14.7002 17.5 36.4004 28.7998 61 28.7998c44.2002 0 80 -35.7998 80 -80c0 -5.59961 -0.5 -11 -1.59961 -16.2002\nc0.5 0 1 0.200195 1.59961 0.200195c53 0 96 -43 96 -96z\" />\n    <glyph glyph-name=\"cloud-moon-rain\" unicode=\"&#xf73c;\" horiz-adv-x=\"576\" \nd=\"M350.5 222.5c37.2998 -6.7998 65.5 -39.2998 65.5 -78.5c0 -44.2002 -35.7998 -80 -80 -80h-256c-44.2002 0 -80 35.7998 -80 80c0 38.7998 27.5996 71.0996 64.2002 78.4004c0 0.5 -0.200195 1.09961 -0.200195 1.59961c0 53 43 96 96 96\nc32.0996 0 60.2998 -15.9004 77.7002 -40c10.3994 5 22 8 34.2998 8c39.2002 0 71.5996 -28.2998 78.5 -65.5zM567.9 224.2c6.19922 1.2002 10.5996 -6 6.39941 -10.7998c-27 -33.1006 -67.8994 -53.3008 -112.6 -53.3008c-5.2002 0 -10.1006 1 -15.2002 1.5\nc-6.2002 39.4004 -33.0996 72.5 -70.2002 86.8008c-10.7002 27.8994 -32.2002 49.7998 -58.8994 61.6992c3.2998 76.7002 66.5 137.9 144.399 137.9c8.90039 0 17.7998 -0.799805 26.5 -2.40039c6.2002 -1.09961 7.60059 -9.39941 2.10059 -12.5\nc-35.6006 -20.0996 -57.5 -57.5 -57.5 -98.0996c0 -70.5 64.5996 -124.1 135 -110.8zM364.5 29.9004c7.7002 -4.40039 10.2998 -14.1006 6 -21.8008l-36.5996 -64c-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961c-2.7002 0 -5.40039 0.700195 -7.90039 2.09961\nc-7.69922 4.40039 -10.3994 14.1006 -6 21.8008l36.6006 64c4.39941 7.7998 14.2002 10.2998 21.7998 6zM268.5 29.9004c7.7002 -4.40039 10.2998 -14.1006 6 -21.8008l-36.5996 -64c-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961\nc-2.7002 0 -5.40039 0.700195 -7.90039 2.09961c-7.69922 4.40039 -10.3994 14.1006 -6 21.8008l36.6006 64c4.39941 7.7998 14.2002 10.2998 21.7998 6zM172.5 29.9004c7.7002 -4.40039 10.2998 -14.1006 6 -21.8008l-36.5996 -64\nc-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961c-2.7002 0 -5.40039 0.700195 -7.90039 2.09961c-7.69922 4.40039 -10.3994 14.1006 -6 21.8008l36.6006 64c4.39941 7.7998 14.2002 10.2998 21.7998 6zM76.5 29.9004c7.7002 -4.40039 10.2998 -14.1006 6 -21.8008\nl-36.5996 -64c-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961c-2.7002 0 -5.40039 0.700195 -7.90039 2.09961c-7.69922 4.40039 -10.3994 14.1006 -6 21.8008l36.6006 64c4.39941 7.7998 14.2002 10.2998 21.7998 6z\" />\n    <glyph glyph-name=\"cloud-rain\" unicode=\"&#xf73d;\" \nd=\"M416 320c53 0 96 -43 96 -96s-43 -96 -96 -96h-320c-53 0 -96 43 -96 96c0 42.5 27.7998 78.2002 66.0996 90.7998c-1.2998 6.90039 -2.09961 13.9004 -2.09961 21.2002c0 61.9004 50.0996 112 112 112c43.2998 0 80.4004 -24.7998 99 -60.7998\nc14.7002 17.5 36.4004 28.7998 61 28.7998c44.2002 0 80 -35.7998 80 -80c0 -5.59961 -0.5 -11 -1.59961 -16.2002c0.5 0 1 0.200195 1.59961 0.200195zM88 73.7998c2.5 8.5 13.7998 8.10059 16 0c12.7998 -44.5996 40 -56.2998 40 -87.7002\nc0 -27.6992 -21.5 -50.0996 -48 -50.0996s-48 22.4004 -48 50.0996c0 31.3008 27.2002 43.3008 40 87.7002zM248 73.7998c2.5 8.5 13.7998 8.10059 16 0c12.7998 -44.5996 40 -56.2998 40 -87.7002c0 -27.6992 -21.5 -50.0996 -48 -50.0996s-48 22.4004 -48 50.0996\nc0 31.3008 27.2002 43.3008 40 87.7002zM408 73.7998c2.5 8.5 13.7998 8.10059 16 0c12.7998 -44.5996 40 -56.2998 40 -87.7002c0 -27.6992 -21.5 -50.0996 -48 -50.0996s-48 22.4004 -48 50.0996c0 31.3008 27.2002 43.3008 40 87.7002z\" />\n    <glyph glyph-name=\"cloud-showers-heavy\" unicode=\"&#xf740;\" \nd=\"M183.9 77.9004c7.69922 -4.40039 10.3994 -14.2002 6 -21.8008l-64 -112c-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961c-2.7002 0 -5.40039 0.700195 -7.90039 2.09961c-7.69922 4.30078 -10.3994 14.1006 -6 21.8008l64 112\nc4.40039 7.7998 14.2002 10.3994 21.8008 6zM279.9 77.9004c7.69922 -4.40039 10.3994 -14.2002 6 -21.8008l-64 -112c-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961c-2.7002 0 -5.40039 0.700195 -7.90039 2.09961c-7.69922 4.30078 -10.3994 14.1006 -6 21.8008\nl64 112c4.40039 7.7998 14.2002 10.3994 21.8008 6zM87.9004 77.9004c7.69922 -4.40039 10.3994 -14.2002 6 -21.8008l-64 -112c-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961c-2.7002 0 -5.40039 0.700195 -7.90039 2.09961\nc-7.69922 4.30078 -10.3994 14.1006 -6 21.8008l64 112c4.40039 7.7998 14.2002 10.3994 21.8008 6zM471.9 77.9004c7.69922 -4.40039 10.3994 -14.2002 6 -21.8008l-64 -112c-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961\nc-2.7002 0 -5.40039 0.700195 -7.90039 2.09961c-7.69922 4.30078 -10.3994 14.1006 -6 21.8008l64 112c4.40039 7.7998 14.2002 10.3994 21.8008 6zM375.9 77.9004c7.69922 -4.40039 10.3994 -14.2002 6 -21.8008l-64 -112\nc-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961c-2.7002 0 -5.40039 0.700195 -7.90039 2.09961c-7.69922 4.30078 -10.3994 14.1006 -6 21.8008l64 112c4.40039 7.7998 14.2002 10.3994 21.8008 6zM416 320c53 0 96 -43 96 -96s-43 -96 -96 -96h-320\nc-53 0 -96 43 -96 96c0 42.5 27.7998 78.2002 66.0996 90.7998c-1.2998 6.90039 -2.09961 13.9004 -2.09961 21.2002c0 61.9004 50.2002 112 112 112c43.2998 0 80.4004 -24.7998 99 -60.7998c14.7002 17.5 36.4004 28.7998 61 28.7998c44.2002 0 80 -35.7998 80 -80\nc0 -5.59961 -0.5 -11 -1.59961 -16.2002c0.5 0 1 0.200195 1.59961 0.200195z\" />\n    <glyph glyph-name=\"cloud-sun-rain\" unicode=\"&#xf743;\" horiz-adv-x=\"576\" \nd=\"M510.5 222.5c37.2998 -6.7998 65.5 -39.2998 65.5 -78.5c0 -44.2002 -35.7998 -80 -80 -80h-256c-44.2002 0 -80 35.7998 -80 80c0 38.7998 27.5996 71 64.2002 78.4004c0 0.5 -0.200195 1.09961 -0.200195 1.59961c0 53 43 96 96 96\nc32.0996 0 60.2998 -15.9004 77.7002 -40c10.3994 5 22 8 34.2998 8c39.2002 0 71.5996 -28.2998 78.5 -65.5zM124.1 188.1c3.10059 -3.09961 6.60059 -5.59961 10.2002 -8.2998c-3.89941 -11.3994 -6.2002 -23.3994 -6.2002 -35.8994c0 -2.5 0.5 -4.80078 0.700195 -7.2002\nl-59.2002 -19.7002c-10.1992 -3.2998 -19.8994 6.2998 -16.5 16.5l25.1006 75.2998l-71 35.5c-9.60059 4.7998 -9.60059 18.5 0 23.2998l71 35.5l-25.1006 75.3008c-3.39941 10.1992 6.2002 19.8994 16.4004 16.5l75.2998 -25.1006l35.5 71\nc4.7998 9.60059 18.5 9.60059 23.2998 0l35.5 -71l75.3008 25.1006c10.1992 3.39941 19.8994 -6.2002 16.5 -16.4004l-8.90039 -26.7002c-0.700195 0 -1.2998 0.200195 -2 0.200195c-25.5996 0 -49.2002 -7.7998 -69.2002 -20.7002\nc-37.5996 29.4004 -92.0996 27.2002 -126.7 -7.39941c-37.3994 -37.5 -37.3994 -98.4004 0 -135.801zM193.9 246.1c-18.2002 -8.2998 -33.5 -21.2998 -44.8008 -37.1992c-12.8994 11.6992 -21.0996 28.3994 -21.0996 47.0996c0 35.2998 28.7002 64 64 64\nc12.4004 0 24 -3.7002 33.7998 -9.90039c-16.0996 -17.5996 -27.5996 -39.5 -31.8994 -64zM524.5 29.9004c7.7002 -4.40039 10.2998 -14.1006 6 -21.8008l-36.5996 -64c-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961c-2.7002 0 -5.40039 0.700195 -7.90039 2.09961\nc-7.69922 4.40039 -10.3994 14.1006 -6 21.8008l36.6006 64c4.39941 7.7998 14.2002 10.2998 21.7998 6zM428.5 29.9004c7.7002 -4.40039 10.2998 -14.1006 6 -21.8008l-36.5996 -64c-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961\nc-2.7002 0 -5.40039 0.700195 -7.90039 2.09961c-7.69922 4.40039 -10.3994 14.1006 -6 21.8008l36.6006 64c4.39941 7.7998 14.2002 10.2998 21.7998 6zM332.5 29.9004c7.7002 -4.40039 10.2998 -14.1006 6 -21.8008l-36.5996 -64\nc-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961c-2.7002 0 -5.40039 0.700195 -7.90039 2.09961c-7.69922 4.40039 -10.3994 14.1006 -6 21.8008l36.6006 64c4.39941 7.7998 14.2002 10.2998 21.7998 6zM236.5 29.9004c7.7002 -4.40039 10.2998 -14.1006 6 -21.8008\nl-36.5996 -64c-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961c-2.7002 0 -5.40039 0.700195 -7.90039 2.09961c-7.69922 4.40039 -10.3994 14.1006 -6 21.8008l36.6006 64c4.39941 7.7998 14.2002 10.2998 21.7998 6z\" />\n    <glyph glyph-name=\"democrat\" unicode=\"&#xf747;\" horiz-adv-x=\"640\" \nd=\"M637.3 191.1c4.90039 -7.39941 2.90039 -17.2998 -4.39941 -22.2998l-26.6006 -17.7002c-7.39941 -4.89941 -17.2998 -3 -22.2002 4.40039c-21.7998 32.7002 -23.8994 38.0996 -40.0996 50.2998v-77.7998h-352l-54 108l-38.0996 -34.5996\nc-6 -6 -14.1006 -9.40039 -22.6006 -9.40039h-31c-12.0996 0 -23.2002 6.90039 -28.5996 17.7002l-14.2998 28.5996c-5.40039 10.7998 -4.30078 23.7998 3 33.5l74.5996 99.2998c1.7002 2.30078 4.2002 3.7002 6.40039 5.40039c-4 2.2002 -8 4.2002 -11.3008 7.5\nc-16.3994 16.4004 -18.3994 41.7998 -6.09961 60.4004c2.7998 4.19922 8.7998 4.7998 12.4004 1.19922l42.8994 -42.7998l41.7998 41.7998c4.40039 4.40039 11.8008 3.7002 15.2002 -1.5c15.1006 -22.7998 12.6006 -53.7998 -7.5 -73.8994l81.2002 -81.2002h235.6\nc50.8008 0 97.9004 -25.2002 126.101 -67.5zM296.2 204.7c3 2.89941 1.39941 7.89941 -2.60059 8.5l-22.7998 3.2998l-10.2002 20.7002c-1.89941 3.7002 -7.19922 3.7002 -9 0l-10.1992 -20.7002l-22.8008 -3.2998c-4.09961 -0.600586 -5.7998 -5.60059 -2.7998 -8.5\nl16.5 -16.1006l-3.89941 -22.6992c-0.700195 -4.10059 3.59961 -7.2002 7.19922 -5.30078l20.4004 10.7002l20.4004 -10.7002c3.59961 -1.89941 7.89941 1.2002 7.19922 5.30078l-3.89941 22.6992zM408.2 204.7c3 2.89941 1.39941 7.89941 -2.60059 8.5l-22.7998 3.2998\nl-10.2002 20.7002c-1.89941 3.7002 -7.19922 3.7002 -9 0l-10.1992 -20.7002l-22.8008 -3.2998c-4.09961 -0.600586 -5.7998 -5.60059 -2.7998 -8.5l16.5 -16.1006l-3.89941 -22.6992c-0.700195 -4.10059 3.59961 -7.2002 7.19922 -5.30078l20.4004 10.7002\nl20.4004 -10.7002c3.59961 -1.89941 7.89941 1.2002 7.19922 5.30078l-3.89941 22.6992zM520.2 204.7c3 2.89941 1.39941 7.89941 -2.60059 8.5l-22.7998 3.2998l-10.2002 20.7002c-1.89941 3.7002 -7.19922 3.7002 -9 0l-10.1992 -20.7002l-22.8008 -3.2998\nc-4.09961 -0.600586 -5.7998 -5.60059 -2.7998 -8.5l16.5 -16.1006l-3.89941 -22.6992c-0.700195 -4.10059 3.59961 -7.2002 7.19922 -5.30078l20.4004 10.7002l20.4004 -10.7002c3.59961 -1.89941 7.89941 1.2002 7.19922 5.30078l-3.89941 22.6992zM192 -48v144h352v-144\nc0 -8.7998 -7.2002 -16 -16 -16h-64c-8.7998 0 -16 7.2002 -16 16v80h-160v-80c0 -8.7998 -7.2002 -16 -16 -16h-64c-8.7998 0 -16 7.2002 -16 16z\" />\n    <glyph glyph-name=\"flag-usa\" unicode=\"&#xf74d;\" \nd=\"M32 448c17.7002 0 32 -14.2998 32 -32v-464c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v464c0 17.7002 14.2998 32 32 32zM299.9 144.4c31.0996 -8.2002 62.5996 -16.5 100 -16.6006c31.8994 0 68.5 6.7998 112.1 24.1006v-36\nc0 -12.3008 -7.09961 -23.8008 -18.5 -28.8008c-175.8 -76.3994 -211.8 69.1006 -397.5 -23.0996v69.2998c92.2002 39.9004 146.7 26.2002 203.9 11.1006zM299.9 240.4c31.0996 -8.2002 62.5996 -16.5 100 -16.5c31.8994 0 68.5 6.7998 112.1 24.0996v-61.5\nc-92.2002 -39.9004 -146.7 -26.2002 -203.9 -11.0996c-57.5 15.0996 -117.3 30 -212.1 -7.60059v61.5c92.2002 39.9004 146.7 26.2002 203.9 11.1006zM309.4 366.3c-7 2.10059 -14.1006 4.2002 -21.3008 6.2002v-33.2002c4 -1.09961 8.10059 -2.2998 12.1006 -3.5\nc26.7002 -8.09961 52.8994 -15.8994 85.7002 -15.8994c32.7998 0 72.5 7.89941 126.1 31.3994v-68.8994c-92.2002 -39.8008 -146.7 -26.1006 -203.9 -11.1006c-57.5 15.1006 -117.3 29.9004 -212.1 -7.59961v151.899c209.4 94.6006 195.3 -59.0996 366.6 28.2002\nc22.6006 11.5 49.4004 -1.5 49.4004 -26.5996v-30.7998c-105.2 -49.1006 -150.8 -35.7002 -202.6 -20.1006zM160 319.9c8.7998 0 16 7.09961 16 16c0 8.89941 -7.2002 16 -16 16s-16 -7.2002 -16 -16c0 -8.90039 7.2002 -16 16 -16zM160 375.7c8.7998 0 16 7.2002 16 16\nc0 8.89941 -7.2002 16 -16 16s-16 -7.2002 -16 -16c0 -8.90039 7.2002 -16 16 -16zM224 327.8c8.7998 0 16 7.2002 16 16c0 8.90039 -7.2002 16 -16 16s-16 -7.2002 -16 -16c0 -8.89941 7.2002 -16 16 -16zM224 383.7c8.7998 0 16 7.2002 16 16c0 8.89941 -7.2002 16 -16 16\ns-16 -7.2002 -16 -16c0 -8.90039 7.2002 -16 16 -16z\" />\n    <glyph glyph-name=\"meteor\" unicode=\"&#xf753;\" \nd=\"M491.2 447.3c12.3994 3.7002 23.7998 -7.7002 20.2002 -20.0996c-11.6006 -38.7002 -34.3008 -111.7 -61.3008 -187.7c7 -2.09961 13.4004 -4 18.6006 -5.59961c9.7002 -3 14.2002 -13.9004 9.5 -22.9004c-22.1006 -42.2998 -82.7002 -152.8 -142.5 -214.4\nc-1 -1.09961 -2 -2.5 -3 -3.5c-38.1006 -38.0996 -88 -57.0996 -137.9 -57.0996c-49.8994 -0.0996094 -99.7998 19 -137.8 57c-38 38.0996 -57 88 -57 137.8c0 49.9004 19 99.7998 57.0996 137.8c1 1 2.40039 2 3.5 3c61.6006 59.9004 172 120.4 214.4 142.5\nc9 4.7002 19.9004 0.200195 22.9004 -9.5c1.59961 -5.09961 3.5 -11.5996 5.59961 -18.5996c75.9004 27 149 49.7002 187.7 61.2998zM192 0c70.7002 0 128 57.2998 128 128s-57.2998 128 -128 128s-128 -57.2998 -128 -128s57.2998 -128 128 -128zM160 192\nc17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32zM208 96c8.7998 0 16 -7.2002 16 -16s-7.2002 -16 -16 -16s-16 7.2002 -16 16s7.2002 16 16 16z\" />\n    <glyph glyph-name=\"person-booth\" unicode=\"&#xf756;\" horiz-adv-x=\"576\" \nd=\"M192 -48v176h64v-176c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16zM224 224c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32h-57.5c-12.7998 0 -24.7998 5 -33.9004 14.0996l-20.8994 20.9004v-80.5996l41.2002 -61.3008\nc4.39941 -8.7998 6.69922 -18.6992 6.69922 -28.5996v-56.5c0 -17.7002 -14.2998 -32 -32 -32c-17.6992 0 -32 14.2998 -32 32v56l-29.0996 43c-0.900391 0.400391 -1.59961 1.2002 -2.5 1.7002l-0.0996094 -100.7c0 -17.7002 -14.4004 -32 -32 -32\nc-17.6006 0 -31.9004 14.2998 -31.9004 32l0.200195 160l-0.200195 95.9004c0 17.0996 6.7002 33.1992 18.7002 45.2998c12.0996 12.0996 28.2002 18.7998 45.2998 18.7998h18.7002c17 0 33.0996 -6.59961 45.2002 -18.7002l45.1992 -45.2998h50.9004zM64 320\nc-26.5 0 -48 21.5 -48 48s21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48zM288 416v32h192v-416c0 -17.7002 -14.2998 -32 -32 -32s-32 14.2998 -32 32c0 -17.7002 -14.2998 -32 -32 -32c-17.0996 0 -30.7998 13.5 -31.7002 30.4004\nc-4.2998 -21.3008 -17.0996 -30.4004 -32.2998 -30.4004c-18.4004 0 -35.7002 16.7002 -31.4004 38.2998l30.9004 154.601zM192 416c0 17.7002 14.2998 32 32 32h32v-192h-64v160zM544 448c17.7002 0 32 -14.2998 32 -32v-464c0 -8.7998 -7.2002 -16 -16 -16h-32\nc-8.7998 0 -16 7.2002 -16 16v496h32z\" />\n    <glyph glyph-name=\"poo-storm\" unicode=\"&#xf75a;\" horiz-adv-x=\"448\" \nd=\"M308 112c9.2002 0 15 -10 10.4004 -18l-88 -152c-2.2002 -3.7998 -6.2002 -6 -10.4004 -6c-7.7002 0 -13.5 7.2002 -11.7002 14.7998l23 97.2002h-59.2998c-7.2998 0 -12.9004 6.40039 -11.9004 13.5996l16 120c0.800781 5.90039 5.90039 10.4004 11.9004 10.4004h68\nc7.90039 0 13.5996 -7.5 11.5996 -15.0996l-17.2998 -64.9004h57.7002zM374.4 223.3c41 -3.2998 73.5996 -37.5 73.5 -79.2998c0 -44 -36 -80 -80 -80h-30l8.09961 14c7.7998 13.5 7.7998 30.4004 0 44s-22.4004 22 -38.0996 22h-16l6.59961 24.7002\nc3.59961 13.2998 0.799805 27.2002 -7.59961 38.0996c-8.40039 10.9004 -21.1006 17.2002 -34.9004 17.2002h-68c-22 0 -40.7002 -16.4004 -43.7002 -38.2002l-16 -120c0 -0.599609 0.100586 -1.2002 0 -1.7998h-48.2998c-44 0 -80 36 -80 80\nc0 41.7998 32.5996 76 73.5996 79.2998c-5.89941 9.60059 -9.59961 20.6006 -9.59961 32.7002c0 35.2998 28.7002 64 64 64h16c44.2002 0 80 35.7998 80 80c0 17.4004 -5.7002 33.4004 -15.0996 46.5c4.89941 0.799805 9.89941 1.5 15.0996 1.5c53 0 96 -43 96 -96\nc0 -11.2998 -2.2998 -21.9004 -5.90039 -32h5.90039c35.2998 0 64 -28.7002 64 -64c0 -12.0996 -3.7002 -23.0996 -9.59961 -32.7002z\" />\n    <glyph glyph-name=\"rainbow\" unicode=\"&#xf75b;\" horiz-adv-x=\"576\" \nd=\"M268.3 415.3c167.7 11.2998 307.7 -122 307.7 -287.3v-144c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v136.2c0 113.8 -81.5996 215.399 -194.5 229.899c-136.6 17.6006 -253.5 -88.8994 -253.5 -222.1v-144c0 -8.7998 -7.2002 -16 -16 -16h-32\nc-8.7998 0 -16 7.2002 -16 16v133.8c0 153.3 115.4 287.3 268.3 297.5zM262.7 318.4c117.1 15 217.3 -76.2002 217.3 -190.4v-144c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v138.3c0 66.9004 -48.7002 126.601 -115.2 133.101\nc-76.2998 7.39941 -140.8 -52.6006 -140.8 -127.4v-144c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v137.3c0 97.6006 70 184.7 166.7 197.101zM268.9 222.1c61.2998 11.9004 115.1 -34.8994 115.1 -94.0996v-144c0 -8.7998 -7.2002 -16 -16 -16h-32\nc-8.7998 0 -16 7.2002 -16 16v144c0 17.5996 -14.2998 32 -32 32s-32 -14.4004 -32 -32v-144c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v140.2c0 46.3994 31.2998 89 76.9004 97.8994z\" />\n    <glyph glyph-name=\"republican\" unicode=\"&#xf75e;\" horiz-adv-x=\"640\" \nd=\"M544 256v-64h-544v64c0 88.4004 71.5996 160 160 160h224c88.4004 0 160 -71.5996 160 -160zM176.3 277.6c3.5 3.5 1.60059 9.5 -3.39941 10.2002l-27.4004 4l-12.2002 24.7998c-2.09961 4.40039 -8.5 4.5 -10.7002 0l-12.1992 -24.7998l-27.4004 -4\nc-4.90039 -0.700195 -6.90039 -6.7002 -3.2998 -10.2002l19.7998 -19.2998l-4.7002 -27.2998c-0.799805 -4.90039 4.40039 -8.59961 8.7002 -6.2998l24.5 12.8994l24.5 -12.8994c4.40039 -2.2998 9.5 1.39941 8.7002 6.2998l-4.7002 27.2998zM320.3 277.6\nc3.5 3.5 1.60059 9.5 -3.39941 10.2002l-27.4004 4l-12.2002 24.7998c-2.09961 4.40039 -8.5 4.5 -10.7002 0l-12.1992 -24.7998l-27.4004 -4c-4.90039 -0.700195 -6.90039 -6.7002 -3.2998 -10.2002l19.7998 -19.2998l-4.7002 -27.2998\nc-0.799805 -4.90039 4.40039 -8.59961 8.7002 -6.2998l24.5 12.8994l24.5 -12.8994c4.40039 -2.2998 9.5 1.39941 8.7002 6.2998l-4.7002 27.2998zM464.3 277.6c3.5 3.5 1.60059 9.5 -3.39941 10.2002l-27.4004 4l-12.2002 24.7998c-2.09961 4.40039 -8.5 4.5 -10.7002 0\nl-12.1992 -24.7998l-27.4004 -4c-4.90039 -0.700195 -6.90039 -6.7002 -3.2998 -10.2002l19.7998 -19.2998l-4.7002 -27.2998c-0.799805 -4.90039 4.40039 -8.59961 8.7002 -6.2998l24.5 12.8994l24.5 -12.8994c4.40039 -2.2998 9.5 1.39941 8.7002 6.2998l-4.7002 27.2998z\nM624 128c8.7998 0 16 -7.2002 16 -16v-64c0 -46.9004 -40.5996 -84.5 -88.4004 -79.5996c-41.5996 4.19922 -71.5996 42.5 -71.5996 84.2998v43.2998h-32v-112c0 -8.7998 -7.2002 -16 -16 -16h-96c-8.7998 0 -16 7.2002 -16 16v80h-192v-80c0 -8.7998 -7.2002 -16 -16 -16\nh-96c-8.7998 0 -16 7.2002 -16 16v176h544v-112c0 -8.7998 7.2002 -16 16 -16s16 7.2002 16 16v64c0 8.7998 7.2002 16 16 16h32z\" />\n    <glyph glyph-name=\"smog\" unicode=\"&#xf75f;\" horiz-adv-x=\"640\" \nd=\"M624 80c8.7998 0 16 -7.2002 16 -16v-16c0 -8.7998 -7.2002 -16 -16 -16h-544c-8.7998 0 -16 7.2002 -16 16v16c0 8.7998 7.2002 16 16 16h544zM144 -16c8.7998 0 16 -7.2002 16 -16v-16c0 -8.7998 -7.2002 -16 -16 -16h-128c-8.7998 0 -16 7.2002 -16 16v16\nc0 8.7998 7.2002 16 16 16h128zM560 -16c8.7998 0 16 -7.2002 16 -16v-16c0 -8.7998 -7.2002 -16 -16 -16h-336c-8.7998 0 -16 7.2002 -16 16v16c0 8.7998 7.2002 16 16 16h336zM144 160c-79.5 0 -144 64.5 -144 144s64.5 144 144 144c41 0 77.7998 -17.2998 104 -44.7998\nc26.2002 27.5 63 44.7998 104 44.7998c54.7998 0 102 -31 126.3 -76.0996c15 7.5 31.7002 12.0996 49.7002 12.0996c61.9004 0 112 -50.0996 112 -112s-50.0996 -112 -112 -112h-60.0996c-22.6006 -19.7002 -51.6006 -32 -83.9004 -32s-61.4004 12.2998 -83.9004 32h-156.1z\n\" />\n    <glyph glyph-name=\"temperature-high\" unicode=\"&#xf769;\" \nd=\"M416 448c52.9004 0 96 -43.0996 96 -96s-43.0996 -96 -96 -96s-96 43.0996 -96 96s43.0996 96 96 96zM416 320c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM256 336v-166.5c19.7002 -24.5996 32 -55.5 32 -89.5\nc0 -79.5 -64.5 -144 -144 -144s-144 64.5 -144 144c0 34 12.2998 64.7998 32 89.5v166.5c0 61.9004 50.0996 112 112 112s112 -50.0996 112 -112zM144 0c44.0996 0 80 35.9004 80 80c0 25.5 -12.2002 49 -32 63.7998v192.2c0 26.5 -21.5 48 -48 48s-48 -21.5 -48 -48v-192.2\nc-19.7998 -14.8994 -32 -38.2998 -32 -63.7998c0 -44.0996 35.9004 -80 80 -80zM160 125.1c18.5996 -6.59961 32 -24.1992 32 -45.0996c0 -26.5 -21.5 -48 -48 -48s-48 21.5 -48 48c0 20.9004 13.4004 38.5 32 45.0996v210.9c0 8.7998 7.2002 16 16 16s16 -7.2002 16 -16\nv-210.9z\" />\n    <glyph glyph-name=\"temperature-low\" unicode=\"&#xf76b;\" \nd=\"M416 448c52.9004 0 96 -43.0996 96 -96s-43.0996 -96 -96 -96s-96 43.0996 -96 96s43.0996 96 96 96zM416 320c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM256 336v-166.5c19.7002 -24.5996 32 -55.5 32 -89.5\nc0 -79.5 -64.5 -144 -144 -144s-144 64.5 -144 144c0 34 12.2998 64.7998 32 89.5v166.5c0 61.9004 50.0996 112 112 112s112 -50.0996 112 -112zM144 0c44.0996 0 80 35.9004 80 80c0 25.5 -12.2002 49 -32 63.7998v192.2c0 26.5 -21.5 48 -48 48s-48 -21.5 -48 -48v-192.2\nc-19.7998 -14.8994 -32 -38.2998 -32 -63.7998c0 -44.0996 35.9004 -80 80 -80zM160 125.1c18.5996 -6.59961 32 -24.1992 32 -45.0996c0 -26.5 -21.5 -48 -48 -48s-48 21.5 -48 48c0 20.9004 13.4004 38.5 32 45.0996v18.9004c0 8.7998 7.2002 16 16 16s16 -7.2002 16 -16\nv-18.9004z\" />\n    <glyph glyph-name=\"vote-yea\" unicode=\"&#xf772;\" horiz-adv-x=\"640\" \nd=\"M608 128c17.7002 0 32 -14.2998 32 -32v-96c0 -17.7002 -14.2998 -32 -32 -32h-576c-17.7002 0 -32 14.2998 -32 32v96c0 17.7002 14.2998 32 32 32h64v-64h-22.4004c-5.2998 0 -9.59961 -3.59961 -9.59961 -8v-16c0 -4.40039 4.2998 -8 9.59961 -8h492.801\nc5.2998 0 9.59961 3.59961 9.59961 8v16c0 4.40039 -4.2998 8 -9.59961 8h-22.4004v64h64zM512 64h-384v319.7c0 17.7998 14.5 32.2998 32.4004 32.2998h319.3c17.7998 0 32.2998 -14.4004 32.2998 -32.2998v-319.7zM211.2 246c-4.2002 -4.2002 -4.2998 -11 0 -15.2002\nl74.0996 -74.7002c4.2002 -4.2998 11 -4.2998 15.2002 -0.0996094l128.3 127.2c4.2998 4.2002 4.2998 11 0.100586 15.2002l-25.3008 25.5c-4.19922 4.2998 -11 4.2998 -15.1992 0.0996094l-95.2002 -94.4004l-41.2998 41.6006\nc-4.2002 4.2998 -11 4.2998 -15.2002 0.0996094z\" />\n    <glyph glyph-name=\"water\" unicode=\"&#xf773;\" horiz-adv-x=\"576\" \nd=\"M562.1 64.0996c8.10059 -0.899414 13.9004 -8.2998 13.8008 -16.2998v-31.5996c0 -9.10059 -7.60059 -16.7998 -16.7002 -16c-28.2002 2.5 -55.7998 11.5996 -79.1006 25.7998c-55 -34.0996 -135.5 -34.5996 -192 0c-55 -34.0996 -135.5 -34.5996 -192 0\nc-23.2998 -14.5 -50.5996 -23.4004 -79.3994 -25.9004c-9.10059 -0.799805 -16.7002 6.90039 -16.7002 16v32.2002c0 7.90039 5.7002 14.9004 13.5996 15.7002c21.7002 2.2998 42.2002 10.2002 57.7002 22.4004c13.7998 10.8994 33.6006 13.1992 47.1006 2\nc38.2998 -31.7002 107.199 -31.8008 145.199 -1.7002c13.7002 10.8994 33.2002 13 46.7002 1.7998c38.5 -31.9004 107.8 -31.9004 145.7 -1.5c14 11.2998 34.0996 11.0996 48.2002 0c15.7998 -12.4004 36.3994 -20.5 57.8994 -22.9004zM562.1 208.1\nc8.10059 -0.899414 13.9004 -8.2998 13.8008 -16.2998v-31.5996c0 -9.10059 -7.60059 -16.7998 -16.7002 -16c-28.2002 2.5 -55.7998 11.5996 -79.1006 25.7998c-55 -34.0996 -135.5 -34.5996 -192 0c-55 -34.0996 -135.5 -34.5996 -192 0\nc-23.2998 -14.5 -50.5996 -23.4004 -79.3994 -25.9004c-9.10059 -0.799805 -16.7002 6.90039 -16.7002 16v32.2002c0 7.90039 5.7002 14.9004 13.5996 15.7002c21.7002 2.2998 42.2002 10.2002 57.7002 22.4004c13.7998 10.8994 33.6006 13.1992 47.1006 2\nc38.2998 -31.7002 107.199 -31.8008 145.199 -1.7002c13.7002 10.8994 33.2002 13 46.7002 1.7998c38.5 -31.9004 107.8 -31.9004 145.7 -1.5c14 11.2998 34.0996 11.0996 48.2002 0c15.7998 -12.4004 36.3994 -20.5 57.8994 -22.9004zM562.1 352.1\nc8.10059 -0.899414 13.9004 -8.2998 13.8008 -16.2998v-31.5996c0 -9.10059 -7.60059 -16.7998 -16.7002 -16c-28.2002 2.5 -55.7998 11.5996 -79.1006 25.7998c-55 -34.0996 -135.5 -34.5996 -192 0c-55 -34.0996 -135.5 -34.5996 -192 0\nc-23.2998 -14.5 -50.5996 -23.4004 -79.3994 -25.9004c-9.10059 -0.799805 -16.7002 6.90039 -16.7002 16v32.2002c0 7.90039 5.7002 14.9004 13.5996 15.7002c21.7002 2.2998 42.2002 10.2002 57.7002 22.4004c13.7998 10.8994 33.6006 13.1992 47.1006 2\nc38.2998 -31.7002 107.199 -31.8008 145.199 -1.7002c13.7002 10.8994 33.2002 13 46.7002 1.7998c38.5 -31.9004 107.8 -31.9004 145.7 -1.5c14 11.2998 34.0996 11.0996 48.2002 0c15.7998 -12.4004 36.3994 -20.4004 57.8994 -22.9004z\" />\n    <glyph glyph-name=\"baby\" unicode=\"&#xf77c;\" horiz-adv-x=\"384\" \nd=\"M192 288c-44.2002 0 -80 35.7998 -80 80s35.7998 80 80 80s80 -35.7998 80 -80s-35.7998 -80 -80 -80zM138.6 39.2002l29.4004 -39.2002c13.2002 -17.7002 9.7002 -42.7998 -8 -56c-7.2002 -5.40039 -15.7002 -8 -24 -8c-12.0996 0 -24.0996 5.5 -32 16l-48 64\nc-10.9004 14.5996 -10.5996 34.7998 0.799805 49l45.9004 57.4004l61.5 -51.2002zM281.3 122.4l45.9004 -57.4004c11.3994 -14.2002 11.7002 -34.4004 0.799805 -49l-48 -64c-7.7998 -10.5 -19.7998 -16 -32 -16c-8.40039 0 -16.7998 2.59961 -24 8\nc-17.7002 13.2002 -21.2002 38.2998 -8 56l29.4004 39.2002l-25.6006 32zM376.7 303c12.7002 -18.0996 8.39941 -43 -9.7002 -55.7998l-40.5996 -28.5c-17 -11.9004 -35.4004 -20.9004 -54.4004 -27.9004v-30.7998h-160v30.9004c-19 7 -37.4004 16 -54.4004 27.8994\nl-40.5996 28.5c-18 12.7002 -22.4004 37.6006 -9.7002 55.7002c12.7002 18 37.6006 22.4004 55.7002 9.7002l40.5996 -28.4004c52.6006 -37 124.101 -37 176.801 0l40.5996 28.5c18.0996 12.6006 43 8.2998 55.7002 -9.7998z\" />\n    <glyph glyph-name=\"baby-carriage\" unicode=\"&#xf77d;\" \nd=\"M144.8 431l111.2 -175h-256c0 74 35.2998 140.1 90.7998 184.4c16.7998 13.3994 42.7002 8.39941 54 -9.40039zM496 352c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-48v-64c0 -50.5996 -23 -96.4004 -60.2998 -130.7\nc34.5996 -8.89941 60.2998 -40 60.2998 -77.2998c0 -44.2002 -35.7998 -80 -80 -80s-80 35.7998 -80 80c0 8.90039 1.7002 17.2002 4.40039 25.2002c-21.5 -5.90039 -44.6006 -9.2002 -68.4004 -9.2002s-46.7998 3.2998 -68.4004 9.2002\nc2.60059 -8 4.40039 -16.2998 4.40039 -25.2002c0 -44.2002 -35.7998 -80 -80 -80s-80 35.7998 -80 80c0 37.2998 25.7002 68.4004 60.2998 77.2998c-37.2998 34.2998 -60.2998 80.1006 -60.2998 130.7h384v64c0 35.2998 28.7002 64 64 64h48zM80 -16\nc17.5996 0 32 14.4004 32 32s-14.4004 32 -32 32s-32 -14.4004 -32 -32s14.4004 -32 32 -32zM400 16c0 17.5996 -14.4004 32 -32 32s-32 -14.4004 -32 -32s14.4004 -32 32 -32s32 14.4004 32 32z\" />\n    <glyph glyph-name=\"biohazard\" unicode=\"&#xf780;\" horiz-adv-x=\"576\" \nd=\"M287.9 336c-18.5 0 -36 -3.7998 -52.5 -9.5c-13.3008 10.2998 -23.6006 24.2998 -29.5 40.7002c25.1992 10.8994 53 16.8994 82.0996 16.8994c29.2002 0 57 -6.09961 82.2002 -17c-5.90039 -16.3994 -16.2002 -30.3994 -29.5 -40.6992\nc-16.6006 5.7998 -34.2002 9.59961 -52.7998 9.59961zM163.6 9.2998c-47.5 35.5 -79.1992 90.7002 -83.2998 153.5c7.2998 2.10059 14.9004 3.10059 22.5 3.10059c9.2002 0 17.9004 -1.80078 26.4004 -4.60059c4.09961 -44.2998 26 -83.2002 58.8994 -109.6\nc-4.09961 -16 -12.5 -30.6006 -24.5 -42.4004zM387.8 51.9004c32.7002 26.3994 54.6006 65.0996 58.7002 109.3c8.59961 2.7998 17.4004 4.7002 26.5996 4.7002c7.5 0 15 -1 22.2002 -3c-3.89941 -62.8008 -35.5996 -118 -83 -153.5c-12 11.7998 -20.3994 26.5 -24.5 42.5z\nM501.3 256.9c34.6006 -20.4004 61 -53.3008 74.1006 -92.4004c1.2998 -3.7002 -0.200195 -7.7998 -3.5 -9.7998c-3.30078 -2 -7.5 -1.2998 -10 1.59961c-9.40039 10.7998 -19 19 -29.2002 25.1006c-57.2998 33.8994 -130.8 13.6992 -163.9 -45\nc-33.0996 -58.7002 -13.3994 -134 43.9004 -167.9c10.2002 -6.09961 21.8994 -10.5 35.7998 -13.4004c3.7998 -0.799805 6.40039 -4.19922 6.40039 -8.09961c-0.100586 -4 -2.7002 -7.2998 -6.5 -8c-39.7002 -7.7998 -80.6006 -0.799805 -115.2 19.7002\nc-18 10.5996 -32.9004 24.5 -45.2998 40.0996c-12.4004 -15.5996 -27.3008 -29.5 -45.3008 -40.0996c-34.5996 -20.5 -75.5 -27.5 -115.199 -19.7002c-3.80078 0.700195 -6.40039 4 -6.5 8c0 3.90039 2.69922 7.2998 6.39941 8.09961\nc13.7998 3 25.6006 7.30078 35.7998 13.4004c57.3008 33.9004 77 109.2 43.9004 167.9c-33.0996 58.6992 -106.6 78.8994 -163.9 45c-10.1992 -6 -19.7998 -14.3008 -29.1992 -25.1006c-2.5 -2.89941 -6.7002 -3.59961 -10 -1.59961\nc-3.30078 2.09961 -4.80078 6.09961 -3.5 9.7998c13.2998 39.0996 39.6992 71.9004 74.2998 92.4004c17.5996 10.3994 36.3994 16.5996 55.2998 19.8994c-6.09961 17.7002 -10 36.4004 -10 56.2002c0 41 14.5996 80.7998 41 112.2c2.5 3 6.59961 3.7002 10 1.7998\nc3.2998 -1.90039 4.7998 -6 3.59961 -9.7002c-4.39941 -13.7998 -6.59961 -26.3994 -6.59961 -38.5c0 -67.7998 53.7998 -122.899 120 -122.899s120 55.0996 120 122.899c0 12.2002 -2.09961 24.7002 -6.59961 38.5c-1.2002 3.7002 0.299805 7.7998 3.59961 9.7002\nc3.40039 1.90039 7.5 1.2002 10 -1.7998c26.5 -31.4004 41 -71.2002 41 -112.2c0 -19.7998 -4 -38.5 -10 -56.2002c19 -3.2998 37.7002 -9.5 55.2998 -19.8994zM287.9 127.9c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48z\" />\n    <glyph glyph-name=\"blog\" unicode=\"&#xf781;\" \nd=\"M172.2 221.2c75.5 -15 129.899 -89.2998 112.5 -172.2c-11.4004 -54.2998 -55.2998 -98.2998 -109.7 -109.7c-92.9004 -19.5 -175 51.2002 -175 140.7v248c0 13.2998 10.7002 24 24 24h48c13.2998 0 24 -10.7002 24 -24v-248c0 -26.5 21.5 -48 48 -48s48 21.5 48 48\nc0 20.5996 -13.0996 38.2002 -31.2998 45c-9.60059 3.59961 -16.7002 11.7998 -16.7002 22v50.4004c0 14.8994 13.5996 26.6992 28.2002 23.7998zM209 448c163.2 -8.59961 294.4 -139.8 302.9 -303c0.5 -9.2002 -6.80078 -17 -16 -17h-32.1006\nc-8.39941 0 -15.3994 6.59961 -15.8994 15c-7.5 129.5 -111.5 234.5 -240.9 241.5c-8.40039 0.400391 -15 7.40039 -15 15.9004v31.5996c0 9.2002 7.7998 16.5 17 16zM209.3 352c110.101 -8.5 198.2 -96.5996 206.601 -206.7\nc0.699219 -9.2998 -6.80078 -17.2998 -16.1006 -17.2998h-32.2002c-8.2998 0 -15.0996 6.40039 -15.8994 14.7002c-6.90039 77 -68.1006 138.899 -144.9 145.2c-8.2998 0.599609 -14.7998 7.5 -14.7998 15.8994v32.1006c0 9.39941 8 16.7998 17.2998 16.0996z\" />\n    <glyph glyph-name=\"calendar-day\" unicode=\"&#xf783;\" horiz-adv-x=\"448\" \nd=\"M0 -16v272h448v-272c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48zM64 176v-96c0 -8.7998 7.2002 -16 16 -16h96c8.7998 0 16 7.2002 16 16v96c0 8.7998 -7.2002 16 -16 16h-96c-8.7998 0 -16 -7.2002 -16 -16zM400 384c26.5 0 48 -21.5 48 -48v-48h-448v48\nc0 26.5 21.5 48 48 48h48v48c0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-48h128v48c0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-48h48z\" />\n    <glyph glyph-name=\"calendar-week\" unicode=\"&#xf784;\" horiz-adv-x=\"448\" \nd=\"M0 -16v272h448v-272c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48zM64 176v-64c0 -8.7998 7.2002 -16 16 -16h288c8.7998 0 16 7.2002 16 16v64c0 8.7998 -7.2002 16 -16 16h-288c-8.7998 0 -16 -7.2002 -16 -16zM400 384c26.5 0 48 -21.5 48 -48v-48h-448\nv48c0 26.5 21.5 48 48 48h48v48c0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-48h128v48c0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-48h48z\" />\n    <glyph glyph-name=\"candy-cane\" unicode=\"&#xf786;\" \nd=\"M497.5 356c35.7002 -75.5 2.7998 -166.1 -68.9004 -209l-347.3 -206.5c-5.2002 -3 -10.7998 -4.5 -16.3994 -4.5c-10.9004 0 -21.5 5.59961 -27.5 15.5996l-32.8008 54.9004c-9.09961 15.2002 -4.19922 34.7998 11 43.9004l353.601 210.1\nc15.0996 9.09961 20.0996 28.7998 11 43.9004c-6 10 -16.6006 15.5996 -27.5 15.5996c-5.60059 0 -11.2998 -1.40039 -16.4004 -4.5l-27.5 -16.4004c-5.2002 -3 -10.7998 -4.5 -16.3994 -4.5c-10.9004 0 -21.5 5.60059 -27.5 15.6006l-32.8008 54.8994\nc-9.09961 15.2002 -4.19922 34.8008 11 43.9004l27.5 16.4004c25.6006 15.2998 53.9004 22.5996 81.8008 22.5996c59.3994 0 117.199 -33.0996 145.1 -92zM319.8 343c8.5 5.09961 18.1006 7.59961 27.9004 8.40039l-20.6006 61.7998\nc-10.5 -2.10059 -20.5996 -5.5 -30.2998 -10.2002l20.5 -61.5zM145.9 16.2002l30.7998 18.2998l-60.5 38.5l-30.7998 -18.2998zM253.4 80.0996l30.7998 18.3008l-60.5 38.5l-30.7998 -18.3008zM364.3 146l30.7998 18.2998l-60.5 38.5l-30.7998 -18.2998zM384.7 343.3\nc9.2002 -5.39941 17.2002 -13 22.8994 -22.2998l45.7002 45.7002c-6.59961 8.5 -14.2002 16.0996 -22.5996 22.5996zM466.8 235.5c4.60059 9.7998 8 20 10.1006 30.4004l-60.4004 20.0996c-0.0996094 -4.5 -0.700195 -9.09961 -1.7998 -13.5996\nc-1.60059 -6.2002 -4.2002 -11.8008 -7.40039 -17.1006z\" />\n    <glyph glyph-name=\"carrot\" unicode=\"&#xf787;\" \nd=\"M298.2 291.4c61.7002 -30.1006 87.2998 -104.5 57.2002 -166.2c-12.6006 -25.7998 -33.1006 -45.4004 -57.1006 -57.1006l-102 -49.7998l-57 57c-6.2002 6.2002 -16.2998 6.2002 -22.5996 0s-6.2998 -16.3994 0 -22.5996l49.2002 -49.2002l-133.601 -65.2002\nc-11.0996 -5.39941 -24.5996 -0.799805 -30 10.2998c-3.09961 6.40039 -2.89941 13.7002 0 19.7002l128.101 262.7l50.1992 -50.2002c3.10059 -3.09961 7.2002 -4.7002 11.3008 -4.7002c4.09961 0 8.19922 1.60059 11.2998 4.7002c6.2998 6.2002 6.2998 16.2998 0 22.6006\nl-55.2002 55.1992c35.7002 43.3008 97.5 58.5 150.2 32.8008zM390.3 326.3c40.7002 19.5 88.7998 9.40039 121.7 -30.2998c-41.5996 -50.2998 -107.5 -52.5 -151.9 -7.90039l-8 8c-44.5996 44.4004 -42.3994 110.2 7.90039 151.9\nc39.7002 -32.9004 49.7998 -81 30.2998 -121.7z\" />\n    <glyph glyph-name=\"cash-register\" unicode=\"&#xf788;\" \nd=\"M511.1 69.2002c0.600586 -3.5 0.900391 -7 0.800781 -10.5v-90.7002c0 -17.7002 -14.3008 -32 -32 -32h-448c-17.7002 0 -32 14.2998 -32 32v90.7998c0 3.5 0.299805 7 0.899414 10.5l26.7002 160c2.59961 15.4004 16 26.7002 31.5996 26.7002h84.9004v64h-96\nc-8.7998 0 -16 7.2002 -16 16v96c0 8.7998 7.2002 16 16 16h256c8.7998 0 16 -7.2002 16 -16v-96.0996c0 -8.80078 -7.2002 -16 -16 -16h-96v-64h244.8c15.7002 0 29 -11.3008 31.6006 -26.7002zM280 200v-16c0 -8.7998 7.2002 -16 16 -16h16c8.7998 0 16 7.2002 16 16v16\nc0 8.7998 -7.2002 16 -16 16h-16c-8.7998 0 -16 -7.2002 -16 -16zM248 136c-8.7998 0 -16 -7.2002 -16 -16v-16c0 -8.7998 7.2002 -16 16 -16h16c8.7998 0 16 7.2002 16 16v16c0 8.7998 -7.2002 16 -16 16h-16zM216 216h-16c-8.7998 0 -16 -7.2002 -16 -16v-16\nc0 -8.7998 7.2002 -16 16 -16h16c8.7998 0 16 7.2002 16 16v16c0 8.7998 -7.2002 16 -16 16zM80 368h192v32h-192v-32zM120 168c8.7998 0 16 7.2002 16 16v16c0 8.7998 -7.2002 16 -16 16h-16c-8.7998 0 -16 -7.2002 -16 -16v-16c0 -8.7998 7.2002 -16 16 -16h16zM136 104\nc0 -8.7998 7.2002 -16 16 -16h16c8.7998 0 16 7.2002 16 16v16c0 8.7998 -7.2002 16 -16 16h-16c-8.7998 0 -16 -7.2002 -16 -16v-16zM352 -8v16c0 4.40039 -3.59961 8 -8 8h-176c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h176c4.40039 0 8 3.59961 8 8\nzM376 104v16c0 8.7998 -7.2002 16 -16 16h-16c-8.7998 0 -16 -7.2002 -16 -16v-16c0 -8.7998 7.2002 -16 16 -16h16c8.7998 0 16 7.2002 16 16zM424 184v16c0 8.7998 -7.2002 16 -16 16h-16c-8.7998 0 -16 -7.2002 -16 -16v-16c0 -8.7998 7.2002 -16 16 -16h16\nc8.7998 0 16 7.2002 16 16z\" />\n    <glyph glyph-name=\"compress-arrows-alt\" unicode=\"&#xf78c;\" \nd=\"M200 160c13.2998 0 24 -10.7002 24 -24v-112c0 -21.4004 -25.7998 -32.0996 -40.9004 -17l-31.0996 33l-99.2998 -99.2998c-6.2002 -6.2002 -16.4004 -6.2002 -22.6006 0l-25.3994 25.3994c-6.2002 6.2002 -6.2002 16.4004 0 22.6006l99.2002 99.2998l-32.9004 31\nc-15.0996 15.2002 -4.40039 41 17 41h112zM312 224c-13.2998 0 -24 10.7002 -24 24v112c0 21.4004 25.7998 32.0996 40.9004 17l31.0996 -33l99.2998 99.2998c6.2002 6.2002 16.4004 6.2002 22.6006 0l25.3994 -25.3994c6.2002 -6.2002 6.2002 -16.4004 0 -22.6006\nl-99.2998 -99.2998l33 -31c15.0996 -15.0996 4.40039 -41 -17 -41h-112zM408 88l99.2998 -99.4004c6.2002 -6.19922 6.2002 -16.3994 0 -22.5996l-25.3994 -25.4004c-6.2002 -6.19922 -16.4004 -6.19922 -22.6006 0l-99.2998 99.3008l-31 -32.9004\nc-15.0996 -15.0996 -41 -4.40039 -41 17v112c0 13.2998 10.7002 24 24 24h112c21.4004 0 32.0996 -25.7998 17 -40.9004zM183 376.9c15.0996 15.0996 41 4.39941 41 -16.9004v-112c0 -13.2998 -10.7002 -24 -24 -24h-112c-21.4004 0 -32.0996 25.7998 -17 40.9004\nl33 31.0996l-99.2998 99.2998c-6.2002 6.2002 -6.2002 16.4004 0 22.6006l25.3994 25.3994c6.2002 6.2002 16.4004 6.2002 22.6006 0l99.2998 -99.2998z\" />\n    <glyph glyph-name=\"dumpster\" unicode=\"&#xf793;\" horiz-adv-x=\"576\" \nd=\"M560 288h-97.2998l-25.6006 128h98.9004c7.2998 0 13.7002 -5 15.5 -12.0996l24 -96c2.5 -10.1006 -5.09961 -19.9004 -15.5 -19.9004zM272 416v-128h-126.1l25.5996 128h100.5zM404.5 416l25.5996 -128h-126.1v128h100.5zM16 288c-10.4004 0 -18 9.7998 -15.5 19.9004\nl24 96c1.7998 7.09961 8.2002 12.0996 15.5 12.0996h98.9004l-25.6006 -128h-97.2998zM560 224c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-28l-20 -160v-16c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v16h-320v-16\nc0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v16l-20 160h-28c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h20l-4 32h512l-4 -32h20z\" />\n    <glyph glyph-name=\"dumpster-fire\" unicode=\"&#xf794;\" horiz-adv-x=\"640\" \nd=\"M418.7 343.9c-19.7002 -17.6006 -37.7002 -36.5 -53.9004 -55.8008h-60.7998v128h100.5l14.4004 -72zM272 416v-128h-126.1l25.5996 128h100.5zM461.3 343.9l-11.8994 10.5996l-12.3008 61.5h98.9004c7.2998 0 13.7002 -5 15.4004 -12.0996l24 -96\nc0.199219 -0.800781 -0.100586 -1.5 0 -2.30078c-1 1 -2 2.2002 -3.10059 3.10059l-21.2998 19l-21.2998 -19c-5.90039 -5.2002 -11.6006 -10.7002 -17.2998 -16.2998c-15.6006 17.7998 -32.9004 35.1992 -51.1006 51.5zM16 288c-10.4004 0 -18 9.7998 -15.5 19.9004l24 96\nc1.7998 7.09961 8.2002 12.0996 15.5 12.0996h98.9004l-25.6006 -128h-97.2998zM340.6 256c-32.6992 -46.7002 -52.5996 -93.7002 -52.5996 -129.6c0 -48.5 18.5996 -92.7002 48.7998 -126.4h-208.8v-16c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v16\nl-20 160h-28c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h20l-4 32h308.6zM551.1 284.8c51.8008 -46.2002 88.9004 -121.8 88.8008 -158.399c0 -87.5 -71.6006 -158.4 -160 -158.4c-88.4004 0 -160 70.9004 -160 158.4c0 49.2998 49.7998 130.899 120 193.6\nc27.3994 -24.4004 51.5 -50.5996 71 -76.4004c11.8994 14 25.2998 27.9004 40.1992 41.2002zM532.5 55.4004c33.4004 24.1992 41.2002 71.0996 22.5996 107.8c-2.2998 4.5 -4.89941 9.2002 -7.69922 14l-39.8008 -47s-62.3994 82.5 -67.0996 88.0996\nc-32.9004 -40.8994 -49.4004 -64.7998 -49.4004 -91.8994c0 -54.5 39.9004 -88 88.9004 -88c19.5996 0 37.7998 6.2998 52.5 17z\" />\n    <glyph glyph-name=\"ethernet\" unicode=\"&#xf796;\" \nd=\"M496 256c8.7998 0 16 -7.2002 16 -16v-224c0 -8.7998 -7.2002 -16 -16 -16h-80v128h-32v-128h-64v128h-32v-128h-64v128h-32v-128h-64v128h-32v-128h-80c-8.7998 0 -16 7.2002 -16 16v224c0 8.7998 7.2002 16 16 16h48v48c0 8.7998 7.2002 16 16 16h48v48\nc0 8.7998 7.2002 16 16 16h224c8.7998 0 16 -7.2002 16 -16v-48h48c8.7998 0 16 -7.2002 16 -16v-48h48z\" />\n    <glyph glyph-name=\"gifts\" unicode=\"&#xf79c;\" horiz-adv-x=\"640\" \nd=\"M240.6 253.9c-27.7998 -6.90039 -48.5996 -32 -48.5996 -61.9004v-224c0 -11.7002 3.40039 -22.5 8.90039 -32h-168.9c-17.7002 0 -32 14.2998 -32 32v352c0 17.7002 14.2998 32 32 32h29.4004l-30.7002 22c-7.2002 5.09961 -8.7998 15.0996 -3.7002 22.2998l9.2998 13\nc5.10059 7.2002 15.1006 8.7998 22.2998 3.7002l32.1006 -22.7998l-11.5 30.5996c-3.2002 8.2002 1 17.5 9.2998 20.6006l15 5.59961c8.2998 3.09961 17.5 -1.09961 20.5996 -9.40039l19.9004 -53.0996l19.9004 53c3.09961 8.2998 12.2998 12.5 20.5996 9.40039l15 -5.60059\nc8.2998 -3.09961 12.5 -12.2998 9.40039 -20.5996l-11.5 -30.6006l32 22.9004c7.19922 5.2002 17.1992 3.5 22.2998 -3.7002l9.2998 -13c5.2002 -7.2002 3.5 -17.2002 -3.7002 -22.2998l-30.7002 -22h29.4004c12.7002 0 23.4004 -7.5 28.5996 -18.2998\nc-26.6992 -18.6006 -42.0996 -49 -44 -79.7998zM224 -32v96h192v-128h-160c-17.7002 0 -32 14.2998 -32 32zM448 -64v128h192v-96c0 -17.7002 -14.2998 -32 -32 -32h-160zM608 224c17.7002 0 32 -14.2998 32 -32v-96h-192v128h-15.2998l-0.700195 0.200195\nl-0.700195 -0.200195h-15.2998v-128h-192v96c0 17.7002 14.2998 32 32 32h20.4004c-2.7002 7.59961 -4.40039 15.5 -4.40039 23.7998c0 35.5 27 72.2002 72.0996 72.2002c48 0 75.8008 -47.7002 87.9004 -75.2998c12 27.5996 39.7998 75.2998 87.9004 75.2998\nc45.0996 0 72.0996 -36.7002 72.0996 -72.2002c0 -8.2998 -1.7998 -16.2002 -4.40039 -23.7998h20.4004zM336 224h52.5996c-8.89941 20.5996 -25.7998 48 -44.5 48c-17.6992 0 -24.0996 -14.5 -24.0996 -24.2002c0 -5.2002 1.5 -12.5996 8.7998 -19\nc2.10059 -1.7998 4.5 -3.39941 7.2002 -4.7998zM535.2 228.8c7.2998 6.40039 8.7998 13.7998 8.7998 19c0 9.7002 -6.40039 24.2002 -24.0996 24.2002c-18.7002 0 -35.7002 -27.7002 -44.5 -48h52.5996c2.7002 1.40039 5.09961 3 7.2002 4.7998z\" />\n    <glyph glyph-name=\"glass-cheers\" unicode=\"&#xf79f;\" horiz-adv-x=\"640\" \nd=\"M639.4 14.4004c1.69922 -4.10059 -0.300781 -8.7002 -4.30078 -10.4004l-162.399 -67.4004c-4 -1.69922 -8.7002 0.200195 -10.4004 4.30078c-8.5 20.3994 1.2002 43.7998 21.6006 52.2998l22.0996 9.2002l-39.2998 103.6\nc-4.40039 -0.5 -8.7998 -1.2998 -13.1006 -1.2998c-51.6992 0 -99.3994 33.0996 -113.399 85.2998l-20.2002 75.4004l-20.2002 -75.4004c-14 -52.2002 -61.7002 -85.2998 -113.399 -85.2998c-4.30078 0 -8.7002 0.799805 -13.1006 1.2998l-39.3994 -103.6l22.0996 -9.2002\nc20.4004 -8.5 30 -31.9004 21.5996 -52.2998c-1.69922 -4.10059 -6.2998 -6 -10.3994 -4.30078l-162.3 67.4004c-4.10059 1.7002 -6 6.40039 -4.30078 10.5c8.5 20.4004 31.8008 30.0996 52.2002 21.5996l22.1006 -9.19922l38.6992 101.899\nc-47.8994 34.9004 -64.6992 100.2 -34.5 152.7l86.6006 150.5c8 13.9004 25.0996 19.7998 40 13.5996l114.3 -47.3994l114.3 47.3994c14.9004 6.10059 32 0.300781 40 -13.5996l86.6006 -150.5c30.2998 -52.5 13.3994 -117.8 -34.5 -152.8l38.6992 -101.9l22.1006 9.2002\nc20.3994 8.5 43.7998 -1.2002 52.2002 -21.5996zM275.9 285.9l18.8994 70.6992l-94.5 39.2002l-36.5 -63.3994zM364.1 285.9l112.101 46.5l-36.5 63.3994l-94.5 -39.2002z\" />\n    <glyph glyph-name=\"glass-whiskey\" unicode=\"&#xf7a0;\" \nd=\"M480 416c19.5 0 34.4004 -17.2002 31.7002 -36.5l-55.6006 -356.5c-4.5 -31.5 -31.5996 -54.9004 -63.3994 -54.9004h-273c-31.9004 0 -58.9004 23.4004 -63.4004 54.9004l-56 356.5c-2.7002 19.2998 12.2002 36.5 31.7002 36.5h448zM442.6 352h-373.199l30.1992 -192\nh313z\" />\n    <glyph glyph-name=\"globe-europe\" unicode=\"&#xf7a2;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM448 192c0 110.3 -89.7002 200 -200.2 200c-1.89941 0 -3.7998 -0.200195 -5.7002 -0.299805l-28.8994 -21.7002c-2 -1.5 -3.2002 -3.90039 -3.2002 -6.40039v-20\nc0 -4.39941 3.59961 -8 8 -8h16c4.40039 0 8 3.60059 8 8v8l16 16h20.7002c6.2002 0 11.2998 -5.09961 11.2998 -11.2998c0 -3 -1.2002 -5.89941 -3.2998 -8l-26.7998 -26.7998c-1.2002 -1.2002 -2.7002 -2.09961 -4.40039 -2.7002l-40 -13.2998\nc-3.2998 -1.09961 -5.5 -4.2002 -5.5 -7.59961c0 -6.60059 -2.59961 -12.9004 -7.2002 -17.5l-20.0996 -20.1006c-3 -3 -4.7002 -7.09961 -4.7002 -11.2998v-25.2998c0 -8.7998 7.2002 -16 16 -16h22.0996c6.10059 0 11.6006 3.39941 14.3008 8.7998l9.39941 18.7002\nc1.40039 2.7002 4.2002 4.39941 7.2002 4.39941h3.09961c4.40039 0 8 -3.59961 8 -8c0 -4.39941 3.60059 -8 8 -8h16c4.40039 0 8 3.60059 8 8v2.2002c0 3.5 2.2002 6.5 5.5 7.60059l31.6006 10.5c6.5 2.19922 10.8994 8.2998 10.8994 15.1992v4.5\nc0 8.80078 7.2002 16 16 16h36.7002c6.2002 0 11.2998 -5.09961 11.2998 -11.2998v-9.39941c0 -6.2002 -5.09961 -11.3008 -11.2998 -11.3008h-32c-3 0 -5.89941 -1.19922 -8 -3.2998l-9.39941 -9.39941c-2.10059 -2.10059 -3.30078 -5 -3.30078 -8\nc0 -6.2002 5.10059 -11.3008 11.3008 -11.3008h16c3 0 5.89941 -1.19922 8 -3.2998l9.39941 -9.39941c2.10059 -2.10059 3.2998 -5 3.2998 -8v-8.7002l-12.5 -12.5c-4.59961 -4.60059 -4.59961 -12.1006 -0.0996094 -16.7002l32 -32.5996\nc3 -3.10059 7.09961 -4.80078 11.4004 -4.80078h20.2998c6.89941 20.2002 10.7998 41.9004 10.7998 64.4004zM130.1 298.9c0 -6.2002 5.10059 -11.3008 11.3008 -11.3008h16c3 0 5.89941 1.2002 8 3.30078l9.39941 9.39941c2.10059 2.10059 3.2998 5 3.2998 8v16\nc0 6.2002 -5.09961 11.2998 -11.2998 11.2998c-3 0 -5.89941 -1.19922 -8 -3.2998l-25.3994 -25.3994c-2.10059 -2.10059 -3.30078 -5 -3.30078 -8zM258.1 -7.5c71.1006 3.59961 132.5 44.2002 164.9 103.1h-13.4004c-4.7998 0 -9.5 1.90039 -12.8994 5.30078\nl-17.2998 17.2998c-6 6 -14.1006 9.39941 -22.6006 9.39941h-18.2998l-43.2002 37.1006c-8.2002 7 -18.7002 10.8994 -29.5996 10.8994h-31.2002c-8.2002 0 -16.2998 -2.2998 -23.4004 -6.5l-42.8994 -25.6992c-13.7002 -8.2002 -22.1006 -23 -22.1006 -39v-23.9004\nc0 -14.2998 6.7002 -27.7998 18.2002 -36.4004l22.2002 -16.6992c8.7002 -6.5 24.5996 -11.8008 35.4004 -11.8008h20.1992c8.80078 0 16 -7.19922 16 -16v-7.09961z\" />\n    <glyph glyph-name=\"grip-lines\" unicode=\"&#xf7a4;\" \nd=\"M496 160c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-480c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h480zM496 288c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-480c-8.7998 0 -16 7.2002 -16 16v32\nc0 8.7998 7.2002 16 16 16h480z\" />\n    <glyph glyph-name=\"grip-lines-vertical\" unicode=\"&#xf7a5;\" horiz-adv-x=\"256\" \nd=\"M96 -48c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v480c0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-480zM224 -48c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v480c0 8.7998 7.2002 16 16 16h32\nc8.7998 0 16 -7.2002 16 -16v-480z\" />\n    <glyph glyph-name=\"guitar\" unicode=\"&#xf7a6;\" \nd=\"M502.6 393.4c12.5 -12.5 12.5 -32.8008 0.100586 -45.2002l-67.9004 -67.9004c-12.5 -12.5 -32.7998 -12.5 -45.2998 0l-54.2002 -54.2002c28.9004 -45.3994 28.9004 -100.399 -4.2002 -133.5c-9.69922 -9.69922 -21.1992 -16.3994 -33.8994 -20.5\nc-18.7998 -6.09961 -33.1006 -23.5996 -34.9004 -42.6992c-2.2998 -24.1006 -11.5996 -46.4004 -28.7998 -63.5c-46.0996 -46.1006 -129.1 -37.9004 -185.3 18.2998s-64.5 139.2 -18.2998 185.3c17.0996 17.2002 39.3994 26.5 63.3994 28.7998\nc19.2002 1.7998 36.6006 16.1006 42.7002 34.9004c4.09961 12.7002 10.7998 24.2002 20.5 33.8994c33.0996 33.1006 88.0996 33.2002 133.5 4.2002l54.2002 54.1006c-12.5 12.5 -12.5 32.7998 0 45.2998l67.8994 67.8994c12.5 12.5 32.8008 12.5 45.3008 0zM208 96\nc26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48z\" />\n    <glyph glyph-name=\"heart-broken\" unicode=\"&#xf7a9;\" \nd=\"M473.7 374.2c48.7002 -49.7998 50.7998 -129.101 7.2998 -182.101l-212.2 -218.699c-7.09961 -7.30078 -18.5996 -7.30078 -25.7002 0l-212.1 218.6c-43.5 53.0996 -41.4004 132.4 7.2998 182.2l2.40039 2.39941c46.2998 47.4004 119 51.8008 170.7 14l28.5996 -86.5\nl-96 -64l144 -144l-48 128l96 64l-34.2998 103.4c51.5996 36.9004 123.6 32.2002 169.6 -14.7998z\" />\n    <glyph glyph-name=\"holly-berry\" unicode=\"&#xf7aa;\" horiz-adv-x=\"448\" \nd=\"M144 256c-26.5 0 -48 21.5 -48 48s21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48zM256 304c0 26.5 21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48s-48 21.5 -48 48zM224 352c-26.5 0 -48 21.5 -48 48s21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48z\nM207.8 212.9c-0.399414 -39.8008 7.40039 -78.1006 22.9004 -112.301c4 -8.89941 -2 -19.1992 -11.7002 -20.1992c-15.2002 -1.5 -30.4004 -4.60059 -45.2998 -9.10059c-14.9004 -4.5 -23.7998 -19.8994 -20.2002 -35.0996s8.5 -29.9004 14.7002 -43.7998\nc4 -8.90039 -1.90039 -19.3008 -11.6006 -20.2002c-35.8994 -3.40039 -71.5996 -14.9004 -104.8 -33.9004c-12.3994 -7.09961 -27.5 1.60059 -27.5996 16c-0.100586 38.2002 -8 74.9004 -23 107.7c-4 8.90039 2 19.2002 11.7002 20.2002\nc15.1992 1.5 30.3994 4.59961 45.2998 9.09961c14.8994 4.5 23.7998 19.9004 20.2002 35.1006c-3.60059 15.1992 -8.5 29.8994 -14.7002 43.7998c-4 8.89941 1.89941 19.2998 11.5996 20.2002c37.2998 3.5 74.4004 15.8994 108.7 36.1992\nc10.7002 6.40039 23.9004 -1.2998 23.7998 -13.6992zM435 82.4004c9.7002 -1 15.7998 -11.4004 11.5 -20.1006c-15 -32.7002 -22.7998 -69.5 -23 -107.7c0 -14.3994 -15.0996 -23.0996 -27.5996 -16c-33.2002 19 -68.9004 30.5 -104.801 33.9004\nc-9.69922 0.900391 -15.5996 11.2998 -11.5996 20.2002c6.2002 14 11.0996 28.5996 14.7002 43.7998c3.59961 15.2002 -5.2998 30.5996 -20.2002 35.0996c-4.90039 1.5 -9.90039 2.5 -14.7998 3.7002c5.7998 12.2998 6.2998 26.5 0.599609 38.9004\nc-12.8994 28.2998 -19.7002 60.7002 -19.8994 94c0 1.7002 0.199219 3.2998 0.199219 4.89941c-0.0996094 12.3008 13.1006 20 23.8008 13.7002c34.2998 -20.2998 71.3994 -32.7002 108.699 -36.2002c9.7002 -0.899414 15.6006 -11.2998 11.6006 -20.1992\nc-6.2002 -14 -11.1006 -28.6006 -14.7002 -43.8008c-3.59961 -15.1992 5.2998 -30.5996 20.2002 -35.0996c15 -4.40039 30.0996 -7.5 45.2998 -9.09961z\" />\n    <glyph glyph-name=\"horse-head\" unicode=\"&#xf7ab;\" \nd=\"M509.8 115.5c4.60059 -11.7998 1.7998 -25.2998 -7.09961 -34.4004l-45.2998 -39.7998c-6 -6 -14.1006 -9.39941 -22.6006 -9.39941h-50.2998c-10.2998 0 -20 4.89941 -26 13.2998l-46 63.8994c-13.7998 -8.09961 -29.5996 -13.1992 -46.7998 -13.1992\nc-39.2002 0 -72.6006 23.6992 -87.4004 57.3994c-2.2998 5.10059 -9 6.2998 -12.8994 2.40039l-12.1006 -12.1006c-2.5 -2.39941 -3.2002 -6.19922 -1.59961 -9.2998c19.7002 -38.8994 58.7002 -66.0996 104.3 -69.5996v-0.700195l40.7998 -81.7002\nc10.7002 -21.2998 -4.7998 -46.2998 -28.5996 -46.2998h-236.2c-17.7002 0 -32 14.2998 -32 32v81.2002c0 159.899 35.9004 275.399 166.9 322.5l202.199 75.7002c4.90039 1.7998 10.7002 -1.10059 12 -6.10059c12.1006 -46.3994 -16.1992 -71.7002 -34.1992 -82.2998\nc42.5996 -8.2002 78.0996 -38 93 -79.2002zM328 224c13.2998 0 24 10.7002 24 24s-10.7002 24 -24 24s-24 -10.7002 -24 -24s10.7002 -24 24 -24z\" />\n    <glyph glyph-name=\"icicles\" unicode=\"&#xf7ad;\" \nd=\"M511.4 410.1l-87.5 -467.699c-1.7002 -8.60059 -14 -8.60059 -15.7002 0l-66.7002 363.8l-45.7998 -172.5c-2.2998 -7.60059 -13 -7.60059 -15.2998 0l-34.1006 133.399l-46.5 -196.899c-1.89941 -8.2998 -13.7002 -8.2998 -15.5996 0l-44.2002 187.3l-36.4004 -124.1\nc-2.39941 -7.2002 -12.5996 -7.2002 -15.0996 0l-87.0996 273.399c-6.2002 20.5 9.19922 41.2002 30.5996 41.2002h448c20 0 35.0996 -18.2002 31.4004 -37.9004z\" />\n    <glyph glyph-name=\"igloo\" unicode=\"&#xf7ae;\" horiz-adv-x=\"576\" \nd=\"M320 414.1v-126.1h-271.4c51.6006 77.2002 139.601 128 239.4 128c10.7998 0 21.5 -0.700195 32 -1.90039zM96 256v-128h-96c0 46 11.0996 89.4004 30.2998 128h65.7002zM352 408.6c72.7998 -16.5 135.2 -60.5 175.4 -120.6h-175.4v120.6zM480 128v128h65.7002\nc19.2002 -38.5996 30.2998 -82 30.2998 -128h-96zM416 64c0 11.0996 -1.90039 21.7002 -4.5 32h164.5v-96c0 -17.7002 -14.2998 -32 -32 -32h-128v96zM448 256v-128h-49.7998c-22.2002 38.0996 -63 64 -110.2 64s-88 -25.9004 -110.2 -64h-49.7998v128h320zM0 0v96h164.5\nc-2.59961 -10.2998 -4.5 -20.9004 -4.5 -32v-96h-128c-17.7002 0 -32 14.2998 -32 32zM288 160c53 0 96 -43 96 -96v-96h-192v96c0 53 43 96 96 96z\" />\n    <glyph glyph-name=\"mitten\" unicode=\"&#xf7b5;\" horiz-adv-x=\"448\" \nd=\"M368 32c8.7998 0 16 -7.2002 16 -16v-64c0 -8.7998 -7.2002 -16 -16 -16h-320c-8.7998 0 -16 7.2002 -16 16v64c0 8.7998 7.2002 16 16 16h320zM425 241.1c27.0996 -22.5996 30.7998 -62.8994 8.09961 -90.0996l-72.5 -87h-309l-47.8994 207.6\nc-17.9004 77.5 30.5 154.801 107.899 172.7c77.4004 17.9004 154.801 -30.5 172.801 -108l29.5996 -128.399l20.9004 25c22.5996 27.1992 62.8994 30.7998 90.0996 8.19922z\" />\n    <glyph glyph-name=\"mug-hot\" unicode=\"&#xf7b6;\" \nd=\"M127.1 301.5c-2.69922 16.5996 -10.3994 31.9004 -22.3994 44.0996c-22.6006 23.1006 -36.7002 52.5 -40.6006 84.4004c-1.09961 9.5 6.5 18 16.3008 18h16.3994c8.2002 0 15 -5.90039 16.1006 -13.7998c2.7998 -20.2002 12 -38.7998 26.3994 -53.5\nc20.2002 -20.5 32.7998 -46.5 36.6006 -74.7002c1.2998 -9.5 -6.5 -18 -16.3008 -18h-16.5c-8 0 -14.6992 5.7998 -16 13.5zM239.1 301.5c-2.69922 16.5996 -10.3994 31.9004 -22.3994 44.0996c-22.6006 23.1006 -36.7002 52.5 -40.6006 84.4004\nc-1.19922 9.5 6.5 18 16.3008 18h16.3994c8.2002 0 15 -5.90039 16.1006 -13.7998c2.7998 -20.2002 12 -38.7998 26.3994 -53.5c20.2002 -20.5 32.7998 -46.5 36.6006 -74.7002c1.2998 -9.5 -6.5 -18 -16.3008 -18h-16.5c-8 0 -14.6992 5.7998 -16 13.5zM400 256\nc61.7998 0 112 -50.2002 112 -112s-50.2002 -112 -112 -112h-16c0 -53 -43 -96 -96 -96h-192c-53 0 -96 43 -96 96v192c0 17.7002 14.2998 32 32 32h368zM400 96c26.5 0 48 21.5 48 48s-21.5 48 -48 48h-16v-96h16z\" />\n    <glyph glyph-name=\"radiation\" unicode=\"&#xf7b9;\" horiz-adv-x=\"496\" \nd=\"M328.2 192.2c0 28.5996 -15.2002 53.5 -37.7998 67.7998l80.3994 128.4c4.7998 7.69922 15.2998 10.0996 22.7002 4.7998c58.0996 -42 97.4004 -108.4 102.5 -184.2c0.599609 -9.09961 -7.09961 -16.7998 -16.2002 -16.7998h-151.6zM290.4 124.5l80.3994 -128.5\nc4.7998 -7.59961 2.40039 -18.0996 -5.59961 -22.4004c-34.9004 -18.7998 -74.7998 -29.5996 -117.2 -29.5996s-82.2998 10.7998 -117.2 29.5996c-8 4.30078 -10.3994 14.7002 -5.59961 22.4004l80.3994 128.5c12.4004 -7.7002 26.8008 -12.4004 42.4004 -12.4004\ns30.0996 4.7002 42.4004 12.4004zM248 144.2c-26.5 0 -48 21.5 -48 48s21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48zM16.2002 192.2c-9.10059 0 -16.7998 7.7002 -16.2002 16.7002c5.09961 75.7998 44.4004 142.199 102.5 184.199\nc7.40039 5.40039 17.9004 2.90039 22.7002 -4.7998l80.3994 -128.399c-22.5996 -14.2002 -37.7998 -39.1006 -37.7998 -67.7002h-151.6z\" />\n    <glyph glyph-name=\"radiation-alt\" unicode=\"&#xf7ba;\" horiz-adv-x=\"496\" \nd=\"M312 192c0 22.7998 -12.0996 42.7998 -30.0996 54l41.6992 66.7998c5.2002 8.2998 16.4004 9.90039 24 3.7998c32.5 -26 54.9004 -64.1992 59.5 -107.8c0.900391 -9.09961 -6.7998 -16.7998 -16 -16.7998h-79.0996zM214.2 137.9\nc9.7998 -6.2002 21.5 -9.90039 33.8994 -9.90039c12.4004 0 24 3.7002 33.8008 9.90039l41.7998 -66.9004c4.7998 -7.7998 2.39941 -18.4004 -5.7998 -22.5c-21.2002 -10.4004 -44.8008 -16.5 -69.9004 -16.5s-48.7002 6.09961 -69.7998 16.5\nc-8.2002 4.09961 -10.7002 14.7002 -5.7998 22.5zM104.9 192c-9.2002 0 -17 7.7002 -15.9004 16.9004c4.59961 43.5996 26.9004 81.7998 59.5 107.8c7.59961 6.09961 18.7998 4.5 24 -3.7998l41.7002 -66.8008c-18.1006 -11.2998 -30.2002 -31.2998 -30.2002 -54.0996\nh-79.0996zM248 -56c-137 0 -248 111 -248 248s111 248 248 248s248 -111 248 -248s-111 -248 -248 -248zM248 376c-101.5 0 -184 -82.5 -184 -184s82.5 -184 184 -184s184 82.5 184 184s-82.5 184 -184 184zM248 160c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32\ns32 -14.2998 32 -32s-14.2998 -32 -32 -32z\" />\n    <glyph glyph-name=\"restroom\" unicode=\"&#xf7bd;\" horiz-adv-x=\"640\" \nd=\"M128 320c-35.2998 0 -64 28.7002 -64 64s28.7002 64 64 64s64 -28.7002 64 -64s-28.7002 -64 -64 -64zM512 320c-35.2998 0 -64 28.7002 -64 64s28.7002 64 64 64s64 -28.7002 64 -64s-28.7002 -64 -64 -64zM639.3 93.5c3.7002 -15.0996 -8.2998 -29.5 -24.5 -29.5\nh-54.7998v-104c0 -13.2998 -10.7002 -24 -24 -24h-48c-13.2998 0 -24 10.7002 -24 24v104h-54.7998c-16.2002 0 -28.2002 14.4004 -24.7002 29.5l45.5996 185.8c3.30078 13.5 15.5 23 29.8008 24.2002c15 -9.7002 32.7998 -15.5 52 -15.5c19.1992 0 37 5.7998 52 15.5\nc14.2998 -1.2002 26.5 -10.7002 29.7998 -24.2002zM336 448c8.7998 0 16 -7.2002 16 -16v-480c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v480c0 8.7998 7.2002 16 16 16h32zM180.1 303.6c24.6006 -2.09961 43.9004 -22.5 43.9004 -47.5996v-136\nc0 -13.2998 -10.7002 -24 -24 -24h-8v-136c0 -13.2998 -10.7002 -24 -24 -24h-80c-13.2998 0 -24 10.7002 -24 24v136h-8c-13.2998 0 -24 10.7002 -24 24v136c0 25.0996 19.2998 45.5 43.9004 47.5996c15 -9.7998 32.8994 -15.5996 52.0996 -15.5996\ns37.0996 5.7998 52.0996 15.5996z\" />\n    <glyph glyph-name=\"satellite\" unicode=\"&#xf7bf;\" \nd=\"M502.7 183c12.3994 -12.4004 12.3994 -32.5996 -0.100586 -45l-96.6992 -96.7002c-6.2002 -6.2002 -14.4004 -9.2998 -22.5 -9.2998c-8.10059 0 -16.3008 3.09961 -22.5 9.2998l-80.3008 80.4004l-9.89941 -9.90039c24.2998 -53.7002 22.7002 -116.2 -5.40039 -168.5\nc-4.5 -8.5 -16.3994 -9.59961 -23.2002 -2.7998l-107.5 107.5l-17.7998 -17.7998c0.700195 -2.60059 1.60059 -5 1.60059 -7.7998c0 -17.7002 -14.3008 -32 -32 -32c-17.7002 0 -32 14.2998 -32 32c0 17.6992 14.2998 32 32 32c2.7998 0 5.19922 -0.900391 7.7998 -1.60059\nl17.7998 17.7998l-107.5 107.5c-6.7998 6.80078 -5.7002 18.6006 2.7998 23.2002c52.2998 28.1006 114.8 29.7002 168.5 5.40039l9.7998 9.7998l-80.2998 80.4004c-12.3994 12.5 -12.3994 32.6992 0 45.0996l96.7002 96.7002c6.2002 6.2002 14.2998 9.2998 22.5 9.2998\ns16.2998 -3.09961 22.5996 -9.2998l80.3008 -80.2998l47.7998 47.8994c13.0996 13.1006 34.3994 13.1006 47.5 0l47.5 -47.5c13.0996 -13.0996 13.0996 -34.3994 0 -47.5l-47.7998 -47.8994zM150.7 319.5l68.8994 -68.9004l73.8008 73.8008l-68.9004 68.8994zM383.5 86.7002\nl73.7998 73.7998l-68.8994 68.9004l-73.8008 -73.8008z\" />\n    <glyph glyph-name=\"satellite-dish\" unicode=\"&#xf7c0;\" \nd=\"M188.8 102.1l116.601 -116.6c7.39941 -7.2998 6.19922 -20.0996 -3 -25c-77.7002 -41.7998 -176.7 -29.9004 -242.301 35.7002c-65.5996 65.5996 -77.5 164.5 -35.6992 242.3c4.89941 9.09961 17.6992 10.2998 25 3l116.8 -116.8l27.3994 27.3994\nc-0.699219 2.60059 -1.59961 5 -1.59961 7.80078c0 17.6992 14.2998 32 32 32s32 -14.3008 32 -32c0 -17.7002 -14.2998 -32 -32 -32c-2.7998 0 -5.2002 0.899414 -7.7998 1.59961zM209 448c163.2 -8.59961 294.4 -139.8 302.9 -303c0.5 -9.2002 -6.80078 -17 -16 -17\nh-32.1006c-8.39941 0 -15.3994 6.59961 -15.8994 15c-7.5 129.5 -111.5 234.5 -240.9 241.5c-8.40039 0.400391 -15 7.40039 -15 15.9004v31.5996c0 9.2002 7.7998 16.5 17 16zM209.3 352c110.101 -8.5 198.2 -96.5996 206.601 -206.7\nc0.699219 -9.2998 -6.80078 -17.2998 -16.1006 -17.2998h-32.2002c-8.2998 0 -15.0996 6.40039 -15.8994 14.7002c-6.90039 77 -68.1006 138.899 -144.9 145.2c-8.2998 0.599609 -14.7998 7.5 -14.7998 15.8994v32.1006c0 9.39941 8 16.7998 17.2998 16.0996z\" />\n    <glyph glyph-name=\"sd-card\" unicode=\"&#xf7c2;\" horiz-adv-x=\"384\" \nd=\"M320 448c35.2998 0 64 -28.7002 64 -64v-384c0 -35.2998 -28.7002 -64 -64 -64h-256c-35.2998 0 -64 28.7002 -64 64v320l128 128h192zM160 288v96h-48v-96h48zM240 288v96h-48v-96h48zM320 288v96h-48v-96h48z\" />\n    <glyph glyph-name=\"sim-card\" unicode=\"&#xf7c4;\" horiz-adv-x=\"384\" \nd=\"M0 384c0 35.2998 28.7002 64 64 64h192l128 -128v-320c0 -35.2998 -28.7002 -64 -64 -64h-256c-35.2998 0 -64 28.7002 -64 64v384zM224 192v64h-64v-64h64zM320 192v32c0 17.7002 -14.2998 32 -32 32h-32v-64h64zM256 64v-64h32c17.7002 0 32 14.2998 32 32v32h-64z\nM160 64v-64h64v64h-64zM64 64v-32c0 -17.7002 14.2998 -32 32 -32h32v64h-64zM64 160v-64h256v64h-256zM64 224v-32h64v64h-32c-17.7002 0 -32 -14.2998 -32 -32z\" />\n    <glyph glyph-name=\"skating\" unicode=\"&#xf7c5;\" horiz-adv-x=\"448\" \nd=\"M400 448c26.5 0 48 -21.5 48 -48s-21.5 -48 -48 -48s-48 21.5 -48 48s21.5 48 48 48zM400 0c8.7998 0 16 -7.2002 16 -16c0 -26.5 -21.5 -48 -48 -48h-96c-8.7998 0 -16 7.2002 -16 16s7.2002 16 16 16h96c8.7998 0 16 7.2002 16 16s7.2002 16 16 16zM117.8 -8.59961\nc6.2998 6.2998 16.5 6.19922 22.7002 0c6.2002 -6.2002 6.2002 -16.4004 0 -22.6006c-9.2998 -9.2998 -21.5996 -14 -33.9004 -14c-12.2998 0 -24.5996 4.60059 -34 14l-67.8994 67.9004c-6.2002 6.2002 -6.2002 16.3994 0 22.5996s16.3994 6.2002 22.5996 0\nl67.9004 -67.8994c6.2002 -6.30078 16.3994 -6.2002 22.5996 0zM173.9 171.2c3.7998 -6.10059 8.19922 -11.7998 13.1992 -16.7998l30.2002 -30.2002l-91.8994 -91.9004c-6.2002 -6.2998 -14.4004 -9.39941 -22.6006 -9.39941s-16.3994 3.19922 -22.5996 9.39941\nc-12.5 12.4004 -12.5 32.7002 0 45.2002zM128 288c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32h204.6c16.3008 0 30.8008 -9.7002 37 -24.7002c6.2002 -15 2.80078 -32.0996 -8.69922 -43.5996l-82.3008 -82.2998c-0.5 -0.5 -1.19922 -0.700195 -1.69922 -1.10059\nl61 -61c9 -8.89941 14.0996 -21.2998 14.0996 -33.8994v-89.4004c0 -17.7002 -14.2998 -32 -32 -32s-32 14.2998 -32 32v82.7998l-78.2002 78.2002c-12.5996 12.5 -19.3994 29.9004 -18.7002 47.7002c0.700195 17.7002 8.80078 34.5996 22.3008 46.0996l20.0996 17.2002\nh-105.5z\" />\n    <glyph glyph-name=\"skiing\" unicode=\"&#xf7c9;\" \nd=\"M432 352c-26.5 0 -48 21.5 -48 48s21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48zM505 -4.09961c9.2998 -9.30078 9.2998 -24.5 0 -33.8008c-17 -17 -39.7998 -26 -63 -26c-12.5996 0 -25.2002 2.60059 -37.0996 8.10059l-391.9 202.5\nc-11.7998 6 -16.4004 20.5 -10.2998 32.2998c6.09961 11.7998 20.5996 16.2998 32.2998 10.2998l197.9 -102.3l45.8994 68.7998l-75.0996 75.2002c-14.2998 14.4004 -20.6006 34.5 -17.7002 54.4004l107 -53.1006l40.4004 -40.5\nc16.1992 -16.0996 18.6992 -41.5996 6 -60.5996l-49.2002 -73.7998l135.8 -70.2002c14.5996 -6.7002 33 -3.40039 45.0996 8.7002c9.30078 9.39941 24.5 9.39941 33.9004 0zM120 356.4l-26.2002 23c-2.2002 1.89941 -2.39941 5.19922 -0.5 7.39941\nc1.2998 1.5 3.2002 2.10059 5 1.7002l34.4004 -7h0.200195l11.0996 21.7002c13.7002 -7 21.2002 -21.1006 20.9004 -35.6006l62.5 -31l81.1992 32.5c43.6006 17.4004 76.4004 -15 84.5 -39.1992l17.1006 -51.2002l52.0996 -26.1006\nc15.7998 -7.89941 22.2002 -27.0996 14.2998 -42.8994c-7.89941 -15.7998 -27 -22.2002 -42.8994 -14.2998l-58.1006 29c-11.3994 5.69922 -20 15.5996 -24 27.6992l-6.39941 19.1006l-32.4004 -13l-114.5 56.7998c0.100586 0.0996094 0.100586 0.200195 0.200195 0.299805\nl-47.2002 23.4004c-11.5996 -9.7002 -28.3994 -12.1006 -42.7998 -4.7998z\" />\n    <glyph glyph-name=\"skiing-nordic\" unicode=\"&#xf7ca;\" horiz-adv-x=\"576\" \nd=\"M336 352c-26.5 0 -48 21.5 -48 48s21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48zM552 32c13.2002 0 24 -10.7998 24 -24c0 -39.7002 -32.2998 -72 -72 -72h-480c-13.2002 0 -24 10.7002 -24 24s10.7998 24 24 24h42.9004l54.0996 270.8\nc-0.700195 0.799805 -1.7002 1.2002 -2.40039 2.10059c-10.7998 14.0996 -8.09961 34.1992 5.90039 44.8994l39.7002 30.4004c23 17.5996 52.5 23.8994 80.7998 17.0996l71.2002 -21.2002c26.2998 -6.69922 49.2998 -25.3994 61.7998 -50.8994l26.0996 -53.2002h44\nc17.7002 0 32 -14.2998 32 -32c0 -13.4004 -8.39941 -24.9004 -20.0996 -29.5996l-25.5 -178.4h69.5c13.2002 0 24 10.7998 24 24c0 13.2998 10.7998 24 24 24zM291.5 -16l25.5 81.2002l-85 50.2002c-27.5996 16.2998 -38.9004 50.7998 -26.2998 80.2998l37.5 87.3994\nl-14.7002 4.40039c-7.90039 1.90039 -17.5996 -0.200195 -25.2998 -6.09961l-39.7002 -30.4004c-3.59961 -2.7002 -7.59961 -4.59961 -11.7002 -5.59961l-52.2998 -261.4h24.2002l62.5 131.8c7.59961 -10.8994 17.3994 -20.5996 29.5 -27.7998l22 -13l-43.1006 -91h96.9004z\nM402.1 -16l25.2002 176h-33.2998c-18.2002 0 -35.0996 10.5996 -43.0996 26.9004l-20.3008 41.3994l-31.2998 -78.2998l61.2002 -36.0996c18.7002 -11.3008 27.5 -33.6006 21.5996 -54.4004l-23.5996 -75.5h43.5996z\" />\n    <glyph glyph-name=\"sleigh\" unicode=\"&#xf7cc;\" horiz-adv-x=\"640\" \nd=\"M612.7 97.2998c18.5 -14.7002 28.5996 -37.2002 27.2002 -61c-2.2002 -39 -36.9004 -68.2998 -75.9004 -68.2998h-516c-8.7998 0 -16 7.2002 -16 16v16c0 8.7998 7.2002 16 16 16h519.3c13.6006 0 24.6006 11 24.6006 24.5996c0 7.5 -3.30078 14.5 -9.2002 19.2002\nl-9.2998 7.40039c-6.90039 5.5 -8 15.5996 -2.5 22.5l10 12.5c5.5 6.89941 15.5996 8 22.5 2.5zM32 224v128c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32h20.7002c65.7002 0 125.899 -37.2002 155.3 -96s89.5 -96 155.3 -96h20.7002c35.2998 0 64 28.7002 64 64v64h96\nc17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32v-96c0 -53 -43 -96 -96 -96v-48h-64v48h-192v-48h-64v52.5c-55.0996 14.2998 -96 63.9004 -96 123.5z\" />\n    <glyph glyph-name=\"sms\" unicode=\"&#xf7cd;\" \nd=\"M256 416c141.4 0 256 -93.0996 256 -208s-114.6 -208 -256 -208c-38.4004 0 -74.7002 7.09961 -107.4 19.4004c-24.5996 -19.6006 -74.2998 -51.4004 -140.6 -51.4004c-3.2002 0 -6 1.7998 -7.2998 4.7998s-0.700195 6.40039 1.5 8.7002\nc0.5 0.5 42.2998 45.4004 54.7998 95.7998c-35.5996 35.7002 -57 81.1006 -57 130.7c0 114.9 114.6 208 256 208zM128.2 144c23.3994 0 42.5 17.2998 42.3994 38.5996c0 10.6006 -4.7998 20.9004 -13.2998 28.1006l-21.8994 18.7998\nc-1.30078 1.09961 -2.10059 2.5 -2.10059 3.7998c0 3.10059 4.40039 6.60059 10.4004 6.60059h12.2998c4.40039 0 8 3.59961 8 8v16c0 4.39941 -3.59961 8 -8 8h-12.2002c-23.3994 0 -42.3994 -17.3008 -42.3994 -38.6006c0 -10.5996 4.7998 -20.8994 13.2998 -28.0996\nl21.8994 -18.7998c1.30078 -1.10059 2.10059 -2.5 2.10059 -3.80078c0 -3.09961 -4.40039 -6.59961 -10.4004 -6.59961h-12.2998c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h12.2002zM320 152v104c0 8.7998 -7.2002 16 -16 16h-16\nc-6 0 -11.5996 -3.40039 -14.2998 -8.7998l-17.7002 -35.4004l-17.7002 35.4004c-2.7002 5.39941 -8.2002 8.7998 -14.2998 8.7998h-16c-8.7998 0 -16 -7.2002 -16 -16v-104c0 -4.40039 3.59961 -8 8 -8h16c4.40039 0 8 3.59961 8 8v68.2002l24.9004 -55.7998\nc2.89941 -5.90039 11.3994 -5.90039 14.2998 0l24.7998 55.7998v-68.2002c0 -4.40039 3.59961 -8 8 -8h16c4.40039 0 8 3.59961 8 8zM368.3 144c23.4004 0 42.4004 17.2998 42.2998 38.5996c0 10.6006 -4.7998 20.9004 -13.2998 28.1006l-21.8994 18.7998\nc-1.30078 1.09961 -2.10059 2.5 -2.10059 3.7998c0 3.10059 4.40039 6.60059 10.4004 6.60059h12.2998c4.40039 0 8 3.59961 8 8v16c0 4.39941 -3.59961 8 -8 8h-12.2002c-23.3994 0 -42.3994 -17.3008 -42.3994 -38.6006c0 -10.5996 4.7998 -20.8994 13.2998 -28.0996\nl21.8994 -18.7998c1.30078 -1.10059 2.10059 -2.5 2.10059 -3.80078c0 -3.09961 -4.40039 -6.59961 -10.4004 -6.59961h-12.2998c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h12.2998z\" />\n    <glyph glyph-name=\"snowboarding\" unicode=\"&#xf7ce;\" \nd=\"M432 352c-26.5 0 -48 21.5 -48 48s21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48zM460.8 198.4l-83.5 62.8994l-66 -30.5l52 -39c14.9004 -11.2002 22 -30.2002 18.1006 -48.3994l-21.9004 -102c-2.2002 -10.1006 -9.09961 -17.8008 -17.7998 -21.9004\nl90.7998 -33.0996c9.7002 -3.5 20.2002 -3.10059 29.5 1.2998c12 5.59961 26.2998 0.399414 31.9004 -11.6006c5.59961 -12 0.399414 -26.2998 -11.6006 -31.8994c-11.5996 -5.5 -24 -8.2002 -36.5 -8.2002c-10 0 -20 1.7998 -29.7002 5.2998l-364.8 132.7\nc-21.7998 7.90039 -39.0996 23.7998 -48.8994 44.7998c-5.60059 12 -0.400391 26.2998 11.5996 31.9004c12 5.59961 26.2998 0.399414 31.9004 -11.6006c4.39941 -9.39941 12.0996 -16.5 21.7998 -20l38.7002 -14.0996c-3.80078 3.5 -7 7.7002 -8.7002 12.9004\nc-5.60059 16.7998 3.39941 34.8994 20.2002 40.5l74.0996 24.6992v53.1006c0 24.3994 13.5996 46.2998 35.4004 57.2002l41.1992 20.5996l-16.3994 5.5c-12.1006 4.09961 -22 12.5996 -27.7002 24l-29.0996 58.0996c-7.90039 15.8008 -1.5 35 14.2998 42.9004\ns35 1.5 42.8994 -14.2998l26.1006 -52.1006l63.7002 -21.1992c16.2998 -5.40039 31.5996 -13.5 45.3994 -23.8008l111.4 -83.5c14.2002 -10.5996 17 -30.6992 6.39941 -44.7998c-6.2998 -8.39941 -15.8994 -12.7998 -25.5996 -12.7998\nc-6.7002 0 -13.4004 2.09961 -19.2002 6.40039zM316.4 146.7l-60.5 45.2998v-20.5c0 -20.7002 -13.2002 -39 -32.8008 -45.5l-85 -28.4004c-2.59961 -0.899414 -5.2998 -1.09961 -8 -1.2998l169.4 -61.5996c-2.90039 6.09961 -4.2998 12.8994 -2.7998 20z\" />\n    <glyph glyph-name=\"snowman\" unicode=\"&#xf7d0;\" \nd=\"M510.9 295.7c3.19922 -8.10059 -0.800781 -17.2002 -8.90039 -20.2998l-135.2 -55.2002c0.400391 -4.10059 1.2002 -8 1.2002 -12.2002c0 -10 -1.7002 -19.5 -4.2002 -28.7002c21.1006 -21.3994 36.1006 -48.7998 41.6006 -79\nc11.5 -63.2002 -16.4004 -120.3 -62.9004 -152.6c-10.9004 -7.60059 -23.9004 -11.7002 -37.2002 -11.7002h-99.2002c-11 0 -22 2.2998 -31.2998 8.2002c-42.3994 26.8994 -70.7998 73.7998 -70.7998 127.8c0 41.7998 16.9004 79.5996 44.2998 107.1\nc-2.5 9.30078 -4.2002 18.8008 -4.2002 28.9004c0 4.2002 0.800781 8.2002 1.2002 12.2002l-135.2 55.2002c-8.19922 3.19922 -12.1992 12.2998 -8.89941 20.2998l5.89941 14.5c3.30078 8 12.6006 11.8994 20.8008 8.7002l28.0996 -11.5v29\nc0 8.59961 7.2002 15.5996 16 15.5996h16c8.7998 0 16 -7 15.7998 -15.5996v-46.9004c0 -0.5 -0.200195 -1 -0.299805 -1.5l56.4004 -23c6 10 13.2998 18.9004 22 26.5996c-13.5 16.6006 -22 37.4004 -22 60.5c0 53 43 96 96 96s96 -43 96 -96\nc0 -23.0996 -8.40039 -43.8994 -22 -60.5c8.69922 -7.69922 16.0996 -16.5996 22 -26.5996l56.3994 23c0 0.5 -0.299805 1 -0.299805 1.5v46.9004c0 8.59961 7.2002 15.5996 16 15.5996h16c8.7998 0 16 -7 16 -15.5996v-29l28.2002 11.5\nc8.2002 3.19922 17.5 -0.700195 20.7998 -8.7002zM224 352c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM256 80c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM256 144\nc8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM256 208c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM256 296c0 0 16 23.2002 16 32s-7.2002 16 -16 16s-16 -7.2002 -16 -16s16 -32 16 -32z\nM288 352c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16z\" />\n    <glyph glyph-name=\"snowplow\" unicode=\"&#xf7d2;\" horiz-adv-x=\"640\" \nd=\"M120 72c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24s-24 10.7002 -24 24s10.7002 24 24 24zM200 72c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24s-24 10.7002 -24 24s10.7002 24 24 24zM280 72c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24\ns-24 10.7002 -24 24s10.7002 24 24 24zM360 72c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24s-24 10.7002 -24 24s10.7002 24 24 24zM598.6 22.5996l36.7002 -36.6992c6.2002 -6.2002 6.2002 -16.4004 0 -22.6006l-22.5996 -22.5996\nc-6.2002 -6.2002 -16.4004 -6.2002 -22.6006 0l-36.6992 36.7002c-26.5 26.5 -41.4004 62.3994 -41.4004 99.8994v18.7002h-43.2002c7 -14.5996 11.2002 -30.7002 11.2002 -48c0 -61.9004 -50.0996 -112 -112 -112h-256c-61.9004 0 -112 50.0996 -112 112\nc0 44.5996 26.2998 82.7998 64 100.8v91.2002c0 26.5 21.5 48 48 48h16v112c0 26.5 21.5 48 48 48h144.3c19.2998 0 36.6006 -11.4004 44.2002 -29.0996l78.2998 -182.801c3.40039 -8 5.2002 -16.5 5.2002 -25.1992v-50.9004h64v18.7002\nc0 37.5 14.9004 73.3994 41.4004 99.8994l36.6992 36.7002c6.2002 6.2002 16.4004 6.2002 22.6006 0l22.5996 -22.5996c6.2002 -6.2002 6.2002 -16.4004 0 -22.6006l-36.7002 -36.6992c-14.5 -14.5 -22.5996 -34.1006 -22.5996 -54.6006v-101.6\nc0 -20.5 8.09961 -40.1006 22.5996 -54.6006zM192 384v-96l64 -64h122.4l-68.6006 160h-117.8zM368 0c26.5 0 48 21.5 48 48s-21.5 48 -48 48h-256c-26.5 0 -48 -21.5 -48 -48s21.5 -48 48 -48h256z\" />\n    <glyph glyph-name=\"tenge\" unicode=\"&#xf7d7;\" horiz-adv-x=\"384\" \nd=\"M372 288c6.59961 0 12 -5.40039 12 -12v-56c0 -6.59961 -5.40039 -12 -12 -12h-140v-228c0 -6.59961 -5.40039 -12 -12 -12h-56c-6.59961 0 -12 5.40039 -12 12v228h-140c-6.59961 0 -12 5.40039 -12 12v56c0 6.59961 5.40039 12 12 12h360zM372 416\nc6.59961 0 12 -5.40039 12 -12v-56c0 -6.59961 -5.40039 -12 -12 -12h-360c-6.59961 0 -12 5.40039 -12 12v56c0 6.59961 5.40039 12 12 12h360z\" />\n    <glyph glyph-name=\"toilet\" unicode=\"&#xf7d8;\" horiz-adv-x=\"384\" \nd=\"M368 400h-16v-156.7c20.2002 -10.0996 32 -22.2002 32 -35.2998c0 -67.2002 -34.5996 -126.2 -86.7998 -160.5l21.3994 -70.2002c6.30078 -20.5 -9.09961 -41.2998 -30.5996 -41.2998h-192c-21.5 0 -36.9004 20.7998 -30.5996 41.2998l21.3994 70.2002\nc-52.2002 34.2998 -86.7998 93.2998 -86.7998 160.5c0 13.0996 11.7998 25.2002 32 35.2998v156.7h-16c-8.7998 0 -16 7.2002 -16 16v16c0 8.7998 7.2002 16 16 16h352c8.7998 0 16 -7.2002 16 -16v-16c0 -8.7998 -7.2002 -16 -16 -16zM80 376v-16\nc0 -4.40039 3.59961 -8 8 -8h48c4.40039 0 8 3.59961 8 8v16c0 4.40039 -3.59961 8 -8 8h-48c-4.40039 0 -8 -3.59961 -8 -8zM192 176c77.0996 0 139.6 14.2998 139.6 32s-62.5 32 -139.6 32s-139.6 -14.2998 -139.6 -32s62.5 -32 139.6 -32z\" />\n    <glyph glyph-name=\"tools\" unicode=\"&#xf7d9;\" \nd=\"M501.1 52.2998c14.5 -14.5 14.5 -38.0996 0 -52.7002l-52.6992 -52.6992c-14.5 -14.6006 -38.1006 -14.6006 -52.7002 0l-117.101 117.1c-23.0996 23.0996 -27.5 57.5996 -13.8994 85.4004l-106.601 106.6h-62.0996l-96 128l64 64l128 -96v-62.0996l106.6 -106.601\nc27.8008 13.7002 62.3008 9.2002 85.4004 -13.8994zM331.7 223c-8.2002 0 -16.6006 -1 -24.7002 -2.90039l-82.0996 82.1006c-0.700195 37.5 12.6992 75.0996 41.1992 103.6c37 37 89.2002 49.6006 136.601 37.9004c9.09961 -2.2998 12.2998 -13.6006 5.7002 -20.2002\nl-74.4004 -74.4004l11.2998 -67.8994l67.9004 -11.2998l74.3994 74.3994c6.60059 6.60059 17.9004 3.5 20.1006 -5.5c11.7998 -47.3994 -0.799805 -99.5996 -37.9004 -136.7c-13 -13 -28 -22.5996 -43.7998 -29.5l-19.4004 19.4004c-20 20 -46.5996 31 -74.8994 31z\nM227.8 141c-4.89941 -21.0996 -2.59961 -42.7998 5 -62.7002l-123.6 -123.6c-25 -25 -65.5 -25 -90.5 0s-25 65.5 0 90.5l152.399 152.5zM64 -24c13.2998 0 24 10.7998 24 24c0 13.2998 -10.7002 24 -24 24s-24 -10.7002 -24 -24c0 -13.2002 10.7998 -24 24 -24z\" />\n    <glyph glyph-name=\"tram\" unicode=\"&#xf7da;\" \nd=\"M288 384c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32zM511.5 396.1c2.2002 -8.5 -2.7998 -17.2998 -11.4004 -19.5996l-228.1 -60.7998v-91.7002h176c17.7002 0 32 -14.2998 32 -32v-224c0 -17.7002 -14.2998 -32 -32 -32\nh-384c-17.7002 0 -32 14.2998 -32 32v224c0 17.7002 14.2998 32 32 32h176v83.2002l-219.9 -58.7002c-1.2998 -0.299805 -2.69922 -0.5 -4.09961 -0.5c-7.09961 0 -13.5 4.7002 -15.4004 11.7998c-2.2998 8.60059 2.80078 17.2998 11.3008 19.6006l480 128\nc8.59961 2.2998 17.2998 -2.7002 19.5996 -11.3008zM176 64v96h-96v-96h96zM336 160v-96h96v96h-96zM304 160h-96v-96h96v96zM192 352c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32z\" />\n    <glyph glyph-name=\"fire-alt\" unicode=\"&#xf7e4;\" horiz-adv-x=\"448\" \nd=\"M323.56 396.8c72.46 -67.2598 124.44 -177.13 124.44 -230.399c0 -127.25 -100.29 -230.4 -224 -230.4s-224 103.15 -224 230.4c0 71.6396 69.7402 190.43 168 281.6c38.2803 -35.5303 72.0801 -73.6201 99.3398 -111.17\nc16.6406 20.3799 35.4199 40.6699 56.2197 59.9697zM304.09 56.1504c49.2402 34.4492 60.7803 101.229 33.4297 153.42c-3.35938 6.41992 -7.12988 13.1201 -11.2695 19.9697l-58.6299 -66.8799s-91.9004 117.359 -98.8301 125.34\nc-48.4805 -58.1201 -72.79 -92.1396 -72.79 -130.75c0 -77.5098 58.71 -125.25 130.86 -125.25c28.8594 0 55.5693 8.99023 77.2295 24.1504z\" />\n    <glyph glyph-name=\"bacon\" unicode=\"&#xf7e5;\" horiz-adv-x=\"576\" \nd=\"M218.92 111.61c-34.8604 -34.8799 -59.6504 -44.1602 -85.9199 -54c-26 -9.76074 -53 -20.1299 -88.1699 -52.7305l-35.7598 35.5098c-12.7002 12.6104 -12.0703 33.6104 1.79004 45.0605c36.3398 29.9795 66.21 41.0996 91.0693 50.3594\nc9.16992 3.41016 68.9707 19.2607 98.7207 98.0908c8.60938 22.8096 46.3496 134.58 188.979 187.72c15.8506 5.91016 27.3604 10.2002 41 20.2998c4.53516 3.35449 12.7939 6.07617 18.4346 6.07617c7.00879 0 16.751 -3.98926 21.7451 -8.90625l37.6709 -37.3896\nc-30.1504 -27.6904 -52.9102 -36.3701 -76.79 -45.3701c-28.3008 -10.6104 -57.5703 -21.5801 -97.3506 -61.3799s-50.7598 -69.0498 -61.3701 -97.3398c-9.84961 -26.3008 -19.1602 -51.1104 -54.0498 -86zM566.92 343.61\nc12.7002 -12.5996 12.0801 -33.6602 -1.80957 -45.0605c-36.3701 -30.0098 -66.2402 -41.1396 -91.1104 -50.4102c-9.2002 -3.43945 -69 -19.3193 -98.7305 -98.1094c-8.93945 -23.5898 -46.7393 -134.69 -188.939 -187.69\nc-15.8496 -5.89941 -27.3398 -10.1797 -40.9404 -20.2402c-4.53613 -3.35645 -12.7969 -6.08008 -18.4395 -6.08008c-7.00586 0 -16.7461 3.9873 -21.7402 8.90039l-37.6797 37.4297c30.1094 27.6699 52.8594 36.3301 76.7197 45.3301\nc28.2998 10.5898 57.5098 21.54 97.2998 61.3203s50.7803 69 61.4199 97.3301c9.81055 26.3096 19.1104 51.1602 54 86c34.8906 34.8398 59.6904 44.1504 85.9502 54c26.0703 9.79004 53.0605 20.1602 88.25 52.79z\" />\n    <glyph glyph-name=\"book-medical\" unicode=\"&#xf7e6;\" horiz-adv-x=\"448\" \nd=\"M448 89.5996c0 -9.59961 -3.2002 -15.999 -9.59961 -19.1992c-3.2002 -12.8008 -3.2002 -57.6006 0 -73.6006c6.39941 -6.39941 9.59961 -12.7998 9.59961 -19.2002v-16c0 -16 -12.7998 -25.5996 -25.5996 -25.5996h-326.4c-54.4004 0 -96 41.5996 -96 96v320\nc0 54.4004 41.5996 96 96 96h326.4c16 0 25.5996 -9.59961 25.5996 -25.5996v-332.801zM144 280v-48c0 -4.41602 3.58398 -8 8 -8h56v-56c0 -4.41602 3.58398 -8 8 -8h48c4.41602 0 8 3.58398 8 8v56h56c4.41602 0 8 3.58398 8 8v48c0 4.41602 -3.58398 8 -8 8h-56v56\nc0 4.41602 -3.58398 8 -8 8h-48c-4.41602 0 -8 -3.58398 -8 -8v-56h-56c-4.41602 0 -8 -3.58398 -8 -8zM380.8 0v64h-284.8c-16 0 -32 -12.7998 -32 -32s12.7998 -32 32 -32h284.8z\" />\n    <glyph glyph-name=\"bread-slice\" unicode=\"&#xf7ec;\" horiz-adv-x=\"576\" \nd=\"M288 448c180 0 288 -93.4004 288 -169.14c0 -30.3008 -24.2402 -54.8604 -64 -54.8604v-256c0 -17.6699 -16.1201 -32 -36 -32h-376c-19.8799 0 -36 14.3301 -36 32v256c-39.7598 0 -64 24.5596 -64 54.8604c0 75.7393 108 169.14 288 169.14z\" />\n    <glyph glyph-name=\"cheese\" unicode=\"&#xf7ef;\" \nd=\"M0 160h512v-160c0 -17.6641 -14.3359 -32 -32 -32h-448c-17.6641 0 -32 14.3359 -32 32v160zM299.83 416c118.17 -6.2002 212.17 -104.11 212.17 -224h-512l278.7 217c4.83984 3.875 13.7998 7.01953 20 7.01953c0.311523 0 0.818359 -0.00878906 1.12988 -0.0195312z\n\" />\n    <glyph glyph-name=\"clinic-medical\" unicode=\"&#xf7f2;\" horiz-adv-x=\"576\" \nd=\"M288 333l218.74 -192.9c1.54004 -1.37988 3.55957 -2.04004 5.25977 -3.19922v-184.9c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16v184.94c1.78027 1.20996 3.84961 1.88965 5.46973 3.34961zM384 72v48c0 4.41602 -3.58398 8 -8 8h-56v56\nc0 4.41602 -3.58398 8 -8 8h-48c-4.41602 0 -8 -3.58398 -8 -8v-56h-56c-4.41602 0 -8 -3.58398 -8 -8v-48c0 -4.41602 3.58398 -8 8 -8h56v-56c0 -4.41602 3.58398 -8 8 -8h48c4.41602 0 8 3.58398 8 8v56h56c4.41602 0 8 3.58398 8 8zM570.69 211.72\nc2.93066 -2.63184 5.31055 -7.96484 5.31055 -11.9053c0 -3.38086 -1.83301 -8.16797 -4.09082 -10.6846l-21.4004 -23.8203c-2.63184 -2.93066 -7.96484 -5.30957 -11.9043 -5.30957c-3.38574 0 -8.17773 1.83691 -10.6953 4.09961l-229.32 202.271\nc-2.50391 2.20898 -7.24609 4.00195 -10.585 4.00195s-8.08105 -1.79297 -10.585 -4.00195l-229.32 -202.28c-2.51758 -2.2627 -7.30957 -4.09961 -10.6953 -4.09961c-3.93848 0 -9.27246 2.37891 -11.9043 5.30957l-21.4102 23.8203\nc-2.2627 2.51758 -4.09961 7.30957 -4.09961 10.6953c0 3.93945 2.37891 9.27246 5.30957 11.9043l256 226c6.2832 5.68066 18.2559 10.29 26.7256 10.29c8.46875 0 20.4424 -4.60938 26.7246 -10.29z\" />\n    <glyph glyph-name=\"comment-medical\" unicode=\"&#xf7f5;\" \nd=\"M256 416c141.39 0 256 -93.1201 256 -208s-114.61 -208 -256 -208h-0.473633c-30.4814 0 -78.3838 8.68164 -106.927 19.3799c-24.5996 -19.6299 -74.3398 -51.3799 -140.6 -51.3799c-4.41113 0.00488281 -7.99023 3.58887 -7.99023 8\nc0 1.75879 0.981445 4.22266 2.19043 5.5c0.5 0.5 42.2598 45.4502 54.7998 95.7598c-35.5898 35.7402 -57 81.1807 -57 130.74c0 114.88 114.62 208 256 208zM352 184v48c0 4.41602 -3.58398 8 -8 8h-56v56c0 4.41602 -3.58398 8 -8 8h-48c-4.41602 0 -8 -3.58398 -8 -8\nv-56h-56c-4.41602 0 -8 -3.58398 -8 -8v-48c0 -4.41602 3.58398 -8 8 -8h56v-56c0 -4.41602 3.58398 -8 8 -8h48c4.41602 0 8 3.58398 8 8v56h56c4.41602 0 8 3.58398 8 8z\" />\n    <glyph glyph-name=\"crutch\" unicode=\"&#xf7f7;\" \nd=\"M507.31 262.29c2.56348 -2.58301 4.64355 -7.63184 4.64355 -11.2695c0 -3.66602 -2.10742 -8.74219 -4.70312 -11.3301l-22.6201 -22.6309c-2.58691 -2.58691 -7.65625 -4.6875 -11.3145 -4.6875c-3.65918 0 -8.72852 2.10059 -11.3154 4.6875l-181 181\nc-2.58789 2.58691 -4.6875 7.65625 -4.6875 11.3154s2.09961 8.72852 4.6875 11.3154l22.6904 22.5996c2.58594 2.58496 7.65332 4.68262 11.3096 4.68262s8.72363 -2.09766 11.3096 -4.68262zM327.77 195.88l55.1006 55.1201l45.25 -45.2695l-109.68 -109.681\nc-10.7441 -10.748 -31.4814 -22.2393 -46.29 -25.6494l-120.25 -27.75l-102 -102c-2.58691 -2.58789 -7.65625 -4.6875 -11.3154 -4.6875s-8.72754 2.09961 -11.3154 4.6875l-22.6191 22.6191c-2.58789 2.58789 -4.6875 7.65625 -4.6875 11.3154\ns2.09961 8.72852 4.6875 11.3154l102 102l27.7393 120.26c3.4248 14.8057 14.9248 35.5439 25.6699 46.29l109.671 109.67l45.25 -45.25l-55.1006 -55.1006zM273.2 141.31l9.30957 9.31055l-67.8896 67.8896l-9.31055 -9.30957\nc-3.57715 -3.59082 -7.41211 -10.5127 -8.55957 -15.4502l-18.2998 -79.2998l79.2998 18.3193c4.94043 1.13379 11.8623 4.95996 15.4502 8.54004z\" />\n    <glyph glyph-name=\"egg\" unicode=\"&#xf7fb;\" horiz-adv-x=\"384\" \nd=\"M192 448c106 0 192 -214 192 -320s-86 -192 -192 -192s-192 86 -192 192s86 320 192 320z\" />\n    <glyph glyph-name=\"hamburger\" unicode=\"&#xf805;\" \nd=\"M464 192c26.4961 0 48 -21.5039 48 -48s-21.5039 -48 -48 -48h-416c-26.4961 0 -48 21.5039 -48 48s21.5039 48 48 48h416zM480 64c8.83203 0 16 -7.16797 16 -16v-16c0 -35.3281 -28.6719 -64 -64 -64h-352c-35.3281 0 -64 28.6719 -64 64v16\nc0 8.83203 7.16797 16 16 16h448zM58.6396 224c-34.5693 0 -54.6396 43.9102 -34.8193 75.8896c40.1797 64.9102 128.64 116.011 232.18 116.11c103.55 -0.0996094 192 -51.2002 232.18 -116.12c19.8008 -31.9795 -0.25 -75.8799 -34.8193 -75.8799h-394.721zM384 336\nc-8.83203 0 -16 -7.16797 -16 -16s7.16797 -16 16 -16s16 7.16797 16 16s-7.16797 16 -16 16zM256 368c-8.83203 0 -16 -7.16797 -16 -16s7.16797 -16 16 -16s16 7.16797 16 16s-7.16797 16 -16 16zM128 336c-8.83203 0 -16 -7.16797 -16 -16s7.16797 -16 16 -16\ns16 7.16797 16 16s-7.16797 16 -16 16z\" />\n    <glyph glyph-name=\"hand-middle-finger\" unicode=\"&#xf806;\" \nd=\"M479.93 130.88l0.0703125 -82.8799v0c0 -61.7969 -50.1533 -111.973 -111.95 -112h-215c-25.6074 0.00292969 -61.084 14.7012 -79.1895 32.8096l-30.9307 30.9307c-6.0332 6.03223 -10.9297 17.8525 -10.9297 26.3838v0.00585938v73.4697v0.00292969\nc0 12.7383 9.24707 27.7002 20.6396 33.3975l27.3604 15v-76c0 -4.41602 3.58398 -8 8 -8s8 3.58398 8 8v147.04c0 15.2598 12.8701 28.3799 30.8701 31.3799l30.6797 5.12012c17.8203 2.96973 34.4502 -8.38965 34.4502 -23.54v-32c0 -4.41602 3.58398 -8 8 -8\ns8 3.58398 8 8v200v0.0224609c0 26.4961 21.5039 48 48 48c0.408203 0 1.07129 -0.00976562 1.48047 -0.0224609c26.2695 -0.799805 46.5195 -23.7197 46.5195 -50v-198c0 -4.41602 3.58398 -8 8 -8s8 3.58398 8 8v32c0 15.1396 16.6299 26.5 34.4502 23.5303\nl38.3994 -6.40039c13.46 -2.25 23.1504 -12.0996 23.1504 -23.54v-49.5898l35.6504 -8.92969c15.5986 -3.89844 28.2686 -20.1113 28.2793 -36.1904z\" />\n    <glyph glyph-name=\"hard-hat\" unicode=\"&#xf807;\" \nd=\"M480 160v-64h-448v64c0 80.25 49.2803 148.92 119.19 177.62l40.8096 -81.6201v112c0 8.83203 7.16797 16 16 16h96c8.83203 0 16 -7.16797 16 -16v-112l40.8096 81.6201c69.9102 -28.7002 119.19 -97.3701 119.19 -177.62zM496 64c8.83203 0 16 -7.16797 16 -16v-32\nc0 -8.83203 -7.16797 -16 -16 -16h-480c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h480z\" />\n    <glyph glyph-name=\"hotdog\" unicode=\"&#xf80f;\" \nd=\"M488.56 424.56c12.9297 -12.9326 23.4238 -38.2715 23.4238 -56.5596s-10.4941 -43.627 -23.4238 -56.5596l-352 -352c-13.0205 -13.4824 -38.7998 -24.4238 -57.543 -24.4238c-44.1592 0 -80 35.8408 -80 80c0 18.7432 10.9414 44.5225 24.4238 57.543l352 352\nc12.9326 12.9297 38.2715 23.4238 56.5596 23.4238s43.627 -10.4941 56.5596 -23.4238zM438.63 329.37c2.58691 2.58691 4.68652 7.65625 4.68652 11.3145c0 8.83301 -7.16797 16.002 -16.001 16.002c-3.65918 0 -8.72852 -2.09961 -11.3154 -4.68652\nc-12.4102 -12.4102 -21.7598 -14 -34.71 -16.2305c-14.4004 -2.46973 -32.3203 -5.55957 -51.9199 -25.1494c-19.6006 -19.5898 -22.6699 -37.5205 -25.1396 -51.9199c-2.24023 -12.9502 -3.84082 -22.3105 -16.2402 -34.71\nc-12.4004 -12.4004 -21.7002 -14.0098 -34.7002 -16.2305c-14.4004 -2.46973 -32.3203 -5.5498 -51.9199 -25.1396c-19.6006 -19.5898 -22.6699 -37.5205 -25.1504 -51.9199c-2.21973 -12.9502 -3.80957 -22.29 -16.2197 -34.7002s-21.71 -14.0098 -34.71 -16.2305\nc-14.4004 -2.46973 -32.3203 -5.5498 -51.9199 -25.1396c-2.58691 -2.58691 -4.68652 -7.65625 -4.68652 -11.3145c0 -8.83301 7.16797 -16.002 16.001 -16.002c3.65918 0 8.72852 2.09961 11.3154 4.68652c12.4004 12.4004 21.7598 14 34.7002 16.2305\nc14.3994 2.46973 32.3301 5.55957 51.9297 25.1494c19.6006 19.5898 22.6699 37.5205 25.1396 51.9199c2.23047 12.9502 3.83008 22.2998 16.2305 34.7002s21.75 14 34.7002 16.2197c14.3994 2.48047 32.3193 5.56055 51.9199 25.1504\nc19.5996 19.5898 22.6699 37.5195 25.1494 51.9199c2.23047 12.9502 3.83008 22.3096 16.2305 34.71s21.7598 14 34.7002 16.2305c14.4102 2.46973 32.3301 5.5498 51.9297 25.1396zM31.4404 125.82l-11.5508 11.5498c-24.9893 24.9902 -26.6592 63.8398 -3.71973 86.7803\nl207.68 207.68c22.9404 22.9395 61.79 21.2803 86.79 -3.71973l11.54 -11.5508zM480.56 258.18l11.5508 -11.54c24.9893 -25 26.6592 -63.8496 3.71973 -86.79l-207.68 -207.68c-22.9404 -22.9395 -61.79 -21.2803 -86.79 3.71973l-11.54 11.5508z\" />\n    <glyph glyph-name=\"ice-cream\" unicode=\"&#xf810;\" horiz-adv-x=\"448\" \nd=\"M368 288c26.4961 0 48 -21.5039 48 -48s-21.5039 -48 -48 -48h-288c-26.4961 0 -48 21.5039 -48 48s21.5039 48 48 48h0.94043c-0.519531 4.51855 -0.94043 11.8779 -0.94043 16.4268c0 79.4883 64.5117 144 144 144s144 -64.5117 144 -144\nc0 -4.54883 -0.420898 -11.9082 -0.94043 -16.4268h0.94043zM195.38 -45.6904l-99.3799 205.69h256l-99.3799 -205.69c-4.66504 -10.1084 -17.4863 -18.3135 -28.6201 -18.3135s-23.9551 8.20508 -28.6201 18.3135z\" />\n    <glyph glyph-name=\"laptop-medical\" unicode=\"&#xf812;\" horiz-adv-x=\"640\" \nd=\"M232 224c-4.41602 0 -8 3.58398 -8 8v48c0 4.41602 3.58398 8 8 8h56v56c0 4.41602 3.58398 8 8 8h48c4.41602 0 8 -3.58398 8 -8v-56h56c4.41602 0 8 -3.58398 8 -8v-48c0 -4.41602 -3.58398 -8 -8 -8h-56v-56c0 -4.41602 -3.58398 -8 -8 -8h-48\nc-4.41602 0 -8 3.58398 -8 8v56h-56zM576 400v-336h-512v336c0.0771484 26.4189 21.5811 47.9229 48 48h416c26.4189 -0.0771484 47.9229 -21.5811 48 -48zM512 128v256h-384v-256h384zM624 32c8.83203 0 16 -7.16797 16 -16v-16\nc-0.104492 -35.2236 -28.7764 -63.8955 -64 -64h-512c-35.2236 0.104492 -63.8955 28.7764 -64 64v16c0 8.83203 7.16797 16 16 16h239.23c-0.230469 -14.5303 14.0791 -32 32.7695 -32h60.7998c18.0303 0 32 12.1904 32.7402 32h242.46z\" />\n    <glyph glyph-name=\"pager\" unicode=\"&#xf815;\" \nd=\"M448 384c35.3281 0 64 -28.6719 64 -64v-256c0 -35.3281 -28.6719 -64 -64 -64h-384c-35.3281 0 -64 28.6719 -64 64v256c0 35.3281 28.6719 64 64 64h384zM160 80v48h-80c-8.83203 0 -16 -7.16797 -16 -16v-16c0 -8.83203 7.16797 -16 16 -16h80zM288 96v16\nc0 8.83203 -7.16797 16 -16 16h-80v-48h80c8.83203 0 16 7.16797 16 16zM448 224v64c0 17.6641 -14.3359 32 -32 32h-320c-17.6641 0 -32 -14.3359 -32 -32v-64c0 -17.6641 14.3359 -32 32 -32h320c17.6641 0 32 14.3359 32 32z\" />\n    <glyph glyph-name=\"pepper-hot\" unicode=\"&#xf816;\" \nd=\"M330.67 184.88h107.46l37.0498 -38.54c-48.5293 -87.4697 -206.54 -210.34 -419.18 -210.34c-30.9121 0 -56 25.0879 -56 56s25.0879 56 56 56c141.58 0 163.44 181.24 221.92 250.82l52.75 -24.2207v-89.7197zM461.76 313.25\nc27.7324 -25.2861 50.2402 -76.2676 50.2402 -113.798v-0.142578c0 -13.6797 -2.2998 -26.6895 -5.55957 -39.3096l-54.6807 56.8799h-89.0898v78.2402l-74.6699 34.29c22.3398 14.0498 48.3398 22.5898 76.3398 22.5898\nc16.4658 -0.00683594 42.0732 -5.36523 57.1602 -11.96c18.4502 37.2197 8.25977 61.96 1.40039 72.3203c-0.787109 1.14062 -1.42578 3.19043 -1.42578 4.57617c0 1.82227 1.03711 4.35449 2.31543 5.65332l22.9004 23c1.29688 1.31836 3.85156 2.38867 5.70117 2.38867\nc2.1123 0 4.90234 -1.33398 6.22852 -2.97852c18.5596 -23.4805 35.2998 -71.9102 3.13965 -131.75z\" />\n    <glyph glyph-name=\"pizza-slice\" unicode=\"&#xf818;\" \nd=\"M158.87 447.85c181.91 -17.1699 332.02 -164.93 352.899 -345.71c1.87012 -16.2197 -7.89941 -31.54 -23.6191 -35.8994l-56.9404 -15.7803c-7.94043 186.39 -134.86 311.51 -322.479 317l14.8096 56.2705c4.12988 15.6992 19.1699 25.6396 35.3301 24.1191z\nM100.4 335.85c176.069 -1.95996 294.88 -119.25 299.149 -294.14l-379 -105.1c-1.1709 -0.324219 -3.1084 -0.587891 -4.32422 -0.587891c-8.94824 0 -16.21 7.26172 -16.21 16.21c0 1.1582 0.239258 3.00781 0.53418 4.12793zM128 32c17.6641 0 32 14.3359 32 32\ns-14.3359 32 -32 32s-32 -14.3359 -32 -32s14.3359 -32 32 -32zM176 184c17.6641 0 32 14.3359 32 32s-14.3359 32 -32 32s-32 -14.3359 -32 -32s14.3359 -32 32 -32zM280 80c17.6641 0 32 14.3359 32 32s-14.3359 32 -32 32s-32 -14.3359 -32 -32s14.3359 -32 32 -32z\" />\n    <glyph glyph-name=\"trash-restore\" unicode=\"&#xf829;\" horiz-adv-x=\"448\" \nd=\"M53.2002 -19l-21.2002 339h384l-21.2002 -339c-1.55469 -24.8369 -23.0146 -44.9971 -47.8994 -45h-245.801c-24.8848 0.00292969 -46.3447 20.1631 -47.8994 45zM123.31 156.8c-10.0791 -10.6201 -2.93945 -28.7998 11.3203 -28.7998h57.3701v-112\nc0 -8.83203 7.16797 -16 16 -16h32c8.83203 0 16 7.16797 16 16v112h57.3701c14.2598 0 21.3994 18.1797 11.3203 28.7998l-89.3809 94.2598c-2.52441 2.72949 -7.5918 4.94336 -11.3096 4.94336s-8.78516 -2.21387 -11.3096 -4.94336zM432 416\nc8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h120l9.40039 18.7002c3.58984 7.3418 13.1357 13.2998 21.3086 13.2998h0.0908203h114.3h0.0175781\nc8.20215 0 17.8262 -5.95801 21.4824 -13.2998l9.40039 -18.7002h120z\" />\n    <glyph glyph-name=\"trash-restore-alt\" unicode=\"&#xf82a;\" horiz-adv-x=\"448\" \nd=\"M32 -16v336h384v-336c0 -26.4961 -21.5039 -48 -48 -48h-288c-26.4961 0 -48 21.5039 -48 48zM123.31 156.8c-10.0791 -10.6201 -2.93945 -28.7998 11.3203 -28.7998h57.3701v-112c0 -8.83203 7.16797 -16 16 -16h32c8.83203 0 16 7.16797 16 16v112h57.3701\nc14.2598 0 21.3994 18.1797 11.3203 28.7998l-89.3809 94.2598c-2.52441 2.72949 -7.5918 4.94336 -11.3096 4.94336s-8.78516 -2.21387 -11.3096 -4.94336zM432 416c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16\nv32c0 8.83203 7.16797 16 16 16h120l9.40039 18.7002c3.58984 7.3418 13.1357 13.2998 21.3086 13.2998h0.0908203h114.3h0.0175781c8.20215 0 17.8262 -5.95801 21.4824 -13.2998l9.40039 -18.7002h120z\" />\n    <glyph glyph-name=\"user-nurse\" unicode=\"&#xf82f;\" horiz-adv-x=\"448\" \nd=\"M57.7803 160c-8.82227 0.00976562 -15.9814 7.17773 -15.9814 16c0 2.09277 0.761719 5.30957 1.70117 7.17969c15.2305 29.8203 31.2803 62.2305 42.1699 95.54c7.58008 23.1904 10.3301 47.6904 10.3301 72.0801v49.2002l128 48l128 -48v-49.2002\nc0 -24.3896 2.78027 -48.8896 10.3496 -72.0801c10.8701 -33.3096 26.9199 -65.6895 42.1504 -95.54c0.939453 -1.87012 1.70117 -5.08691 1.70117 -7.17969c0 -8.82227 -7.15918 -15.9902 -15.9814 -16h-82.3594c-22.5107 -19.6797 -51.6201 -32 -83.8604 -32\ns-61.3496 12.3203 -83.8604 32h-82.3594zM184 376.33v-16.6602c0 -2.75977 2.24023 -5 5 -5h21.6699v-21.6699c0 -2.75977 2.24023 -5 5 -5h16.6602c2.75977 0 5 2.24023 5 5v21.6699h21.6699c2.75977 0 5 2.24023 5 5v16.6602c0 2.75977 -2.24023 5 -5 5h-21.6699v21.6699\nc0 2.75977 -2.24023 5 -5 5h-16.6602c-2.75977 0 -5 -2.24023 -5 -5v-21.6699h-21.6699c-2.75977 0 -5 -2.24023 -5 -5zM144 288v-32c0 -44.1602 35.8398 -80 80 -80s80 35.8398 80 80v32h-160zM319.41 128c71.4902 -3.09961 128.59 -61.5996 128.59 -133.79\nc0 -32.1318 -26.0781 -58.21 -58.21 -58.21v0h-331.58c-32.1318 0 -58.21 26.0781 -58.21 58.21c0 72.1904 57.0996 130.69 128.59 133.79l95.4102 -95.3896z\" />\n    <glyph glyph-name=\"wave-square\" unicode=\"&#xf83e;\" horiz-adv-x=\"640\" \nd=\"M476 -32h-152c-19.8721 0 -36 16.1279 -36 36v348h-96v-156c0 -19.8721 -16.1279 -36 -36 -36h-140c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h112v156c0 19.8721 16.1279 36 36 36h152c19.8721 0 36 -16.1279 36 -36v-348h96v156\nc0 19.8721 16.1279 36 36 36h140c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-112v-156c0 -19.8721 -16.1279 -36 -36 -36z\" />\n    <glyph glyph-name=\"biking\" unicode=\"&#xf84a;\" horiz-adv-x=\"640\" \nd=\"M400 352c-26.4961 0 -48 21.5039 -48 48s21.5039 48 48 48s48 -21.5039 48 -48s-21.5039 -48 -48 -48zM396 231l-41.3604 33.1104l-58.25 -49.9199l41.3604 -27.5703c7.86426 -5.24316 14.248 -17.1689 14.25 -26.6201v-128c0 -17.6641 -14.3359 -32 -32 -32\ns-32 14.3359 -32 32v110.88l-81.7305 54.5205c-7.86621 5.24316 -14.251 17.1719 -14.251 26.626c0 8.12305 5.00488 19.0068 11.1719 24.2939l112 96c4.95508 4.25781 14.2803 7.71289 20.8135 7.71289c6.20215 0 15.1602 -3.15039 19.9961 -7.0332l71.2197 -57h52.7803\nc17.6641 0 32 -14.3359 32 -32s-14.3359 -32 -32 -32h-64h-0.0595703c-6.18262 0 -15.1152 3.13574 -19.9404 7zM512 192c70.6562 0 128 -57.3438 128 -128s-57.3438 -128 -128 -128s-128 57.3438 -128 128s57.3438 128 128 128zM512 0c35.3281 0 64 28.6719 64 64\ns-28.6719 64 -64 64s-64 -28.6719 -64 -64s28.6719 -64 64 -64zM128 192c70.6562 0 128 -57.3438 128 -128s-57.3438 -128 -128 -128s-128 57.3438 -128 128s57.3438 128 128 128zM128 0c35.3281 0 64 28.6719 64 64s-28.6719 64 -64 64s-64 -28.6719 -64 -64\ns28.6719 -64 64 -64z\" />\n    <glyph glyph-name=\"border-all\" unicode=\"&#xf84c;\" horiz-adv-x=\"448\" \nd=\"M416 416c17.6641 0 32 -14.3359 32 -32v-384c0 -17.6641 -14.3359 -32 -32 -32h-384c-17.6641 0 -32 14.3359 -32 32v384c0 17.6641 14.3359 32 32 32h384zM384 352h-128v-128h128v128zM192 352h-128v-128h128v128zM64 32h128v128h-128v-128zM256 32h128v128h-128v-128z\n\" />\n    <glyph glyph-name=\"border-none\" unicode=\"&#xf850;\" horiz-adv-x=\"448\" \nd=\"M240 224c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM336 224c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32\nc0 8.83203 7.16797 16 16 16h32zM432 224c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM144 224c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32\nc-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM240 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM336 32c8.83203 0 16 -7.16797 16 -16v-32\nc0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM432 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM432 128\nc8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM432 320c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32\nc0 8.83203 7.16797 16 16 16h32zM240 128c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM240 320c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32\nc-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM144 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM240 416c8.83203 0 16 -7.16797 16 -16v-32\nc0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM336 416c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM432 416\nc8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM48 224c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32\nc0 8.83203 7.16797 16 16 16h32zM48 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM48 128c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32\nc-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM48 320c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM48 416c8.83203 0 16 -7.16797 16 -16v-32\nc0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM144 416c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32z\" />\n    <glyph glyph-name=\"border-style\" unicode=\"&#xf853;\" horiz-adv-x=\"448\" \nd=\"M240 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM144 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32\nc0 8.83203 7.16797 16 16 16h32zM336 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM432 224c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32\nc-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM432 128c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM432 32c8.83203 0 16 -7.16797 16 -16v-32\nc0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM432 320c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM432 416\nc8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-368v-368c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v400c0 17.6641 14.3359 32 32 32h400z\" />\n    <glyph glyph-name=\"fan\" unicode=\"&#xf863;\" \nd=\"M352.57 320c81.79 0 149.3 -61.6299 159.3 -141.33c1.30957 -10.4795 -7.17969 -19.6396 -17.6201 -18.5898l-123.11 12.4102c8.34082 -22.9707 12.8604 -48.9707 12.8604 -77.0605c0 -81.79 -61.6299 -149.3 -141.33 -159.3\nc-10.4795 -1.30957 -19.6396 7.19043 -18.5898 17.6201l12.4102 123.11c-22.9707 -8.34082 -48.9707 -12.8604 -77.0605 -12.8604c-81.79 0 -149.3 61.6299 -159.3 141.33c-1.30957 10.4795 7.17969 19.6699 17.6201 18.5898l123.11 -12.4102\nc-8.34082 22.9707 -12.8604 48.9707 -12.8604 77.0605c0 81.79 61.6299 149.3 141.33 159.3c10.4795 1.30957 19.6699 -7.17969 18.5898 -17.6201l-12.4102 -123.11c22.9707 8.34082 48.9707 12.8604 77.0605 12.8604zM256 160c17.6641 0 32 14.3359 32 32\ns-14.3359 32 -32 32s-32 -14.3359 -32 -32s14.3359 -32 32 -32z\" />\n    <glyph glyph-name=\"icons\" unicode=\"&#xf86d;\" \nd=\"M116.65 228.65l-96.79 99.8301c-28 29.0293 -26.4102 77.0996 5 103.88c27.3896 23.3398 68.1895 19.1396 93.29 -6.80078l9.84961 -10.1396l9.86035 10.1396c25.1396 25.9404 65.8896 30.1406 93.2793 6.80078c31.4102 -26.7803 33.0605 -74.8799 4.91016 -103.88\nl-96.75 -99.8301c-2.55566 -2.66992 -7.62891 -4.83594 -11.3252 -4.83594c-3.69531 0 -8.76855 2.16602 -11.3242 4.83594zM260.57 128.16c15.1406 -0.0107422 27.4297 -12.3086 27.4297 -27.4502v-0.00976562v-137.25v0c0 -15.1416 -12.2891 -27.4395 -27.4297 -27.4502\nh-233.141c-15.1406 0.00585938 -27.4297 12.2988 -27.4297 27.4404v0.00976562v137.25v0.00976562c0 15.1523 12.2979 27.4502 27.4502 27.4502h0.00976562h48l7 14.2402c3.67773 9.81445 15.168 17.7793 25.6484 17.7793h0.0117188h71.71h0.0107422\nc10.4814 0 21.9717 -7.96484 25.6494 -17.7793l7.08008 -14.2402h48zM144 -20c28.7041 0 52 23.2959 52 52s-23.2959 52 -52 52s-52 -23.2959 -52 -52s23.2959 -52 52 -52zM499.4 95.9004c9.70996 0 15.75 -8.79004 10.8691 -15.7002l-92.3994 -138.91\nc-2.19629 -2.90039 -6.93262 -5.25488 -10.5713 -5.25488c-0.0957031 0 -0.25293 0.00195312 -0.348633 0.00488281c-8.03027 0 -14.1201 6.25 -12.2305 12.9004l24.2002 83h-62.3096c-7.62012 0 -13.5 5.58984 -12.5 11.8896l16.7998 106.93\nc0.839844 5.2002 6.2002 9.10059 12.5 9.10059h75.5898c8.25 0 14.2803 -6.56055 12.1797 -13.21l-22.3594 -50.75h60.5801zM478.08 447.67c17.9199 2.75 33.9199 -12.1895 33.9199 -31.6699v-144.26c-0.269531 -26.3398 -28.7998 -47.6602 -64 -47.6602\nc-35.3496 0 -64 21.4795 -64 48c0 26.5195 28.6504 48 64 48c4.46191 -0.0400391 11.6299 -0.801758 16 -1.7002v47.1797l-112 -17.2197v-108.58c-0.269531 -26.3398 -28.7998 -47.6602 -64 -47.6602c-35.3496 0 -64 21.4805 -64 48c0 26.5205 28.6504 48 64 48\nc4.46191 -0.0400391 11.6299 -0.801758 16 -1.69922v106.77c0 15.9102 10.8701 29.4102 25.5098 31.6602z\" />\n    <glyph glyph-name=\"phone-alt\" unicode=\"&#xf879;\" \nd=\"M497.39 86.2002c8.06055 -3.50586 14.6016 -13.4844 14.6016 -22.2744c0 -1.48828 -0.264648 -3.87402 -0.59082 -5.32617l-24 -104c-2.37109 -10.2666 -12.8477 -18.5996 -23.3848 -18.5996h-0.015625c-256.1 0 -464 207.5 -464 464v0.00585938\nc0 10.5371 8.33301 21.0137 18.5996 23.3838l104 24c1.45996 0.332031 3.8584 0.601562 5.35547 0.601562c8.73242 0 18.6533 -6.49707 22.1445 -14.501l48 -112c1.06836 -2.49219 1.93457 -6.71582 1.93457 -9.42773c0 -6.28613 -3.95801 -14.6064 -8.83398 -18.5723\nl-60.6006 -49.6006c31.3398 -66.4688 110.721 -145.85 177.19 -177.189l49.5996 60.5996c3.97559 4.86914 12.3047 8.82129 18.5908 8.82129c2.70508 0 6.9209 -0.860352 9.40918 -1.9209z\" />\n    <glyph glyph-name=\"phone-square-alt\" unicode=\"&#xf87b;\" horiz-adv-x=\"448\" \nd=\"M400 416c26.4961 0 48 -21.5039 48 -48v-352c0 -26.4961 -21.5039 -48 -48 -48h-352c-26.4961 0 -48 21.5039 -48 48v352c0 26.4961 21.5039 48 48 48h352zM383.61 108.63c0.198242 0.919922 0.373047 2.42969 0.389648 3.37012\nc-0.262695 5.28613 -4.33496 11.4648 -9.08984 13.79l-70 30c-1.57422 0.613281 -4.22168 1.15527 -5.91016 1.20996c-3.82422 -0.209961 -9.02539 -2.67383 -11.6104 -5.5l-31 -37.8896c-41.5469 19.6025 -91.1768 69.2324 -110.779 110.779l37.8896 31\nc2.82617 2.58496 5.29004 7.78613 5.5 11.6104c-0.0546875 1.68848 -0.597656 4.33594 -1.20996 5.91016l-30 70c-2.32812 4.75098 -8.50586 8.82324 -13.79 9.08984c-0.94043 -0.0205078 -2.4502 -0.195312 -3.37012 -0.389648l-65 -15\nc-6.19238 -1.6582 -11.4033 -8.20312 -11.6299 -14.6104c0 -160.29 130 -290 290 -290c6.58496 0.00292969 13.1309 5.21289 14.6104 11.6299z\" />\n    <glyph glyph-name=\"photo-video\" unicode=\"&#xf87c;\" horiz-adv-x=\"640\" \nd=\"M608 448c17.6641 0 32 -14.3359 32 -32v-320c0 -17.6641 -14.3359 -32 -32 -32h-128v320h-192v-64h-160v96c0 17.6641 14.3359 32 32 32h448zM232 345v30c0 4.96777 -4.03223 9 -9 9h-30c-4.96777 0 -9 -4.03223 -9 -9v-30c0 -4.96777 4.03223 -9 9 -9h30\nc4.96777 0 9 4.03223 9 9zM584 137v30c0 4.96777 -4.03223 9 -9 9h-30c-4.96777 0 -9 -4.03223 -9 -9v-30c0 -4.96777 4.03223 -9 9 -9h30c4.96777 0 9 4.03223 9 9zM584 241v30c0 4.96777 -4.03223 9 -9 9h-30c-4.96777 0 -9 -4.03223 -9 -9v-30\nc0 -4.96777 4.03223 -9 9 -9h30c4.96777 0 9 4.03223 9 9zM584 345v30c0 4.96777 -4.03223 9 -9 9h-30c-4.96777 0 -9 -4.03223 -9 -9v-30c0 -4.96777 4.03223 -9 9 -9h30c4.96777 0 9 4.03223 9 9zM416 288c17.6641 0 32 -14.3359 32 -32v-288\nc0 -17.6641 -14.3359 -32 -32 -32h-384c-17.6641 0 -32 14.3359 -32 32v288c0 17.6641 14.3359 32 32 32h384zM96 224c-17.6641 0 -32 -14.3359 -32 -32s14.3359 -32 32 -32s32 14.3359 32 32s-14.3359 32 -32 32zM384 0v96l-96 96l-128 -128l-32 32l-64 -64v-32h320z\" />\n    <glyph glyph-name=\"remove-format\" unicode=\"&#xf87d;\" horiz-adv-x=\"640\" \nd=\"M336 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-128c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32.4902l26.5098 79.5996l67.0898 -51.8301l-9.25977 -27.7695h11.1699zM633.82 -10.0996\nc3.41309 -2.65234 6.18359 -8.3125 6.18359 -12.6357c0 -3.02734 -1.50684 -7.42383 -3.36426 -9.81445l-19.6396 -25.2705c-2.65234 -3.41211 -8.31152 -6.18262 -12.6338 -6.18262c-3.03125 0 -7.43359 1.51172 -9.82617 3.37305l-588.36 454.72\nc-3.41016 2.65234 -6.17773 8.31055 -6.17773 12.6309c0 3.02832 1.50879 7.42773 3.36816 9.81934l19.6299 25.2695c2.65234 3.41309 8.31152 6.18262 12.6338 6.18262c3.03125 0 7.43359 -1.51074 9.82617 -3.37207l114.54 -88.5205v43.9004c0 8.83203 7.16797 16 16 16\nh416c8.83203 0 16 -7.16797 16 -16v-96c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32h-117.83l-49.1699 -147.59zM309.91 240.24l31.9199 95.7598h-117.83v-29.3604z\" />\n    <glyph glyph-name=\"sort-alpha-down-alt\" unicode=\"&#xf881;\" horiz-adv-x=\"448\" \nd=\"M176 96c14.2197 0 21.3496 -17.2598 11.3301 -27.3096l-80 -96c-2.58691 -2.58496 -7.65332 -4.68262 -11.3105 -4.68262c-3.65625 0 -8.72266 2.09766 -11.3096 4.68262l-80 96c-10.0703 10.0693 -2.90039 27.3096 11.29 27.3096h48v304c0 8.83203 7.16797 16 16 16h32\nc8.83203 0 16 -7.16797 16 -16v-304h48zM288 224c-8.83203 0 -16 7.16797 -16 16v17.6299v0.00292969c0 7.93262 4.81152 18.6475 10.7402 23.917l61.2598 70.4502h-56c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h128c8.83203 0 16 -7.16797 16 -16\nv-17.6299v-0.00292969c0 -7.93262 -4.81152 -18.6475 -10.7402 -23.917l-61.2598 -70.4502h56c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-128zM447.06 -10.6201c0.514648 -1.44043 0.931641 -3.85059 0.931641 -5.37988\nc0 -8.82715 -7.16406 -15.9951 -15.9912 -16h-24.8398h-0.0449219c-6.42773 0 -13.249 4.96387 -15.2256 11.0801l-4.40918 12.9199h-71l-4.4209 -12.9199c-1.97559 -6.11621 -8.79688 -11.0801 -15.2246 -11.0801h-0.00488281h-24.8301\nc-8.82715 0.00488281 -15.9912 7.17285 -15.9912 16c0 1.5293 0.416992 3.93945 0.931641 5.37988l59.2695 160c2.09277 5.8623 8.84375 10.6201 15.0684 10.6201h0.00195312h41.4395h0.00195312c6.22461 0 12.9756 -4.75781 15.0684 -10.6201zM335.61 48h32.7793\nl-16.3896 48z\" />\n    <glyph glyph-name=\"sort-alpha-up-alt\" unicode=\"&#xf882;\" horiz-adv-x=\"448\" \nd=\"M16 288c-14.2197 0 -21.3496 17.2598 -11.3096 27.3096l80 96c2.58594 2.58496 7.65332 4.68262 11.3096 4.68262s8.72363 -2.09766 11.3096 -4.68262l80 -96c10.0703 -10.0693 2.90039 -27.3096 -11.3096 -27.3096h-48v-304c0 -8.83203 -7.16797 -16 -16 -16h-32\nc-8.83203 0 -16 7.16797 -16 16v304h-48zM288 224c-8.83203 0 -16 7.16797 -16 16v17.6299v0.00292969c0 7.93262 4.81152 18.6475 10.7402 23.917l61.2598 70.4502h-56c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h128c8.83203 0 16 -7.16797 16 -16\nv-17.6299v-0.00292969c0 -7.93262 -4.81152 -18.6475 -10.7402 -23.917l-61.2598 -70.4502h56c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-128zM447.06 -10.6201c0.514648 -1.44043 0.931641 -3.85059 0.931641 -5.37988\nc0 -8.82715 -7.16406 -15.9951 -15.9912 -16h-24.8398h-0.0449219c-6.42773 0 -13.249 4.96387 -15.2256 11.0801l-4.40918 12.9199h-71l-4.4209 -12.9199c-1.97559 -6.11621 -8.79688 -11.0801 -15.2246 -11.0801h-0.00488281h-24.8301\nc-8.82715 0.00488281 -15.9912 7.17285 -15.9912 16c0 1.5293 0.416992 3.93945 0.931641 5.37988l59.2695 160c2.09277 5.8623 8.84375 10.6201 15.0684 10.6201h0.00195312h41.4395h0.00195312c6.22461 0 12.9756 -4.75781 15.0684 -10.6201zM335.61 48h32.7793\nl-16.3896 48z\" />\n    <glyph glyph-name=\"sort-amount-down-alt\" unicode=\"&#xf884;\" \nd=\"M240 352c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h64c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-64zM240 224c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h128c8.83203 0 16 -7.16797 16 -16v-32\nc0 -8.83203 -7.16797 -16 -16 -16h-128zM496 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-256c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h256zM240 96c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h192\nc8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-192zM176 96c14.2197 0 21.3496 -17.2598 11.3301 -27.3096l-80 -96c-2.58691 -2.58496 -7.65332 -4.68262 -11.3105 -4.68262c-3.65625 0 -8.72266 2.09766 -11.3096 4.68262l-80 96\nc-10.0801 10.0693 -2.90039 27.3096 11.29 27.3096h48v304c0 8.83203 7.16797 16 16 16h32c8.83203 0 16 -7.16797 16 -16v-304h48z\" />\n    <glyph glyph-name=\"sort-amount-up-alt\" unicode=\"&#xf885;\" \nd=\"M240 352c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h64c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-64zM240 224c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h128c8.83203 0 16 -7.16797 16 -16v-32\nc0 -8.83203 -7.16797 -16 -16 -16h-128zM496 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-256c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h256zM240 96c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h192\nc8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-192zM16 288c-14.2197 0 -21.3496 17.2598 -11.3096 27.3096l80 96c2.58594 2.58496 7.65332 4.68262 11.3096 4.68262s8.72363 -2.09766 11.3096 -4.68262l80 -96\nc10.0801 -10.0693 2.90039 -27.3096 -11.3096 -27.3096h-48v-304c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v304h-48z\" />\n    <glyph glyph-name=\"sort-numeric-down-alt\" unicode=\"&#xf886;\" horiz-adv-x=\"448\" \nd=\"M176 96c14.2197 0 21.3496 -17.2598 11.3301 -27.3096l-80 -96c-2.58691 -2.58496 -7.65332 -4.68262 -11.3105 -4.68262c-3.65625 0 -8.72266 2.09766 -11.3096 4.68262l-80 96c-10.0703 10.0693 -2.90039 27.3096 11.29 27.3096h48v304c0 8.83203 7.16797 16 16 16h32\nc8.83203 0 16 -7.16797 16 -16v-304h48zM400 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-96c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h16v64h-16c-8.82422 0.0078125 -15.9863 7.17578 -15.9863 16\nc0 2.08984 0.759766 5.30176 1.69629 7.16992l16 32c2.44141 4.87012 8.84277 8.8252 14.29 8.83008h48c8.83203 0 16 -7.16797 16 -16v-112h16zM330.17 413.09c53.4502 14.25 101.83 -25.8799 101.85 -77.0898v-10.7695c0 -70.3906 -28.25 -107.23 -86.25 -132\nc-8.36914 -3.58008 -18.0293 1.2793 -20.8994 9.90918l-9.90039 20c-2.62012 7.87012 0.610352 16.9404 8.18066 20.3408c6.2793 2.71387 15.6201 8.49805 20.8496 12.9092c-47.6396 4.76074 -83.0996 51.4805 -68.8301 102.53c6.80762 23.4512 31.4482 47.7197 55 54.1699z\nM352 316c11.04 0 20 8.95996 20 20s-8.95996 20 -20 20s-20 -8.95996 -20 -20s8.95996 -20 20 -20z\" />\n    <glyph glyph-name=\"sort-numeric-up-alt\" unicode=\"&#xf887;\" horiz-adv-x=\"448\" \nd=\"M107.31 411.31l80 -96c10.0703 -10.0693 2.90039 -27.3096 -11.3096 -27.3096h-48v-304c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v304h-48c-14.2197 0 -21.3496 17.2598 -11.3096 27.3096l80 96\nc2.58594 2.58496 7.65332 4.68262 11.3096 4.68262s8.72363 -2.09766 11.3096 -4.68262zM400 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-96c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h16v64h-16\nc-8.82422 0.0078125 -15.9863 7.17578 -15.9863 16c0 2.08984 0.759766 5.30176 1.69629 7.16992l16 32c2.44141 4.87012 8.84277 8.8252 14.29 8.83008h48c8.83203 0 16 -7.16797 16 -16v-112h16zM330.17 413.09c53.4502 14.25 101.83 -25.8799 101.85 -77.0898v-10.7695\nc0 -70.3906 -28.25 -107.23 -86.25 -132c-8.36914 -3.58008 -18.0293 1.2793 -20.8994 9.90918l-9.90039 20c-2.62012 7.87012 0.610352 16.9404 8.18066 20.3408c6.2793 2.71387 15.6201 8.49805 20.8496 12.9092c-47.6396 4.76074 -83.0996 51.4805 -68.8301 102.53\nc6.80762 23.4512 31.4482 47.7197 55 54.1699zM352 316c11.04 0 20 8.95996 20 20s-8.95996 20 -20 20s-20 -8.95996 -20 -20s8.95996 -20 20 -20z\" />\n    <glyph glyph-name=\"spell-check\" unicode=\"&#xf891;\" horiz-adv-x=\"576\" \nd=\"M272 192c-8.83203 0 -16 7.16797 -16 16v224c0 8.83203 7.16797 16 16 16h75c42.2998 0 80.9004 -30.5703 84.6699 -72.6797c0.186523 -2.02051 0.337891 -5.30762 0.337891 -7.33691c0 -11.0186 -4.20996 -27.8516 -9.39746 -37.5732\nc14.0186 -13.0674 25.3965 -39.2256 25.3965 -58.3906c0 -1.29199 -0.0615234 -3.38867 -0.136719 -4.67969c-2.50977 -43.1396 -41.3105 -75.3398 -84.5098 -75.3398h-91.3604zM312 392v-48h40c13.248 0 24 10.752 24 24s-10.752 24 -24 24h-40zM312 296v-48h56\nc13.248 0 24 10.752 24 24s-10.752 24 -24 24h-56zM155.12 425.75l68.2998 -213.48c0.320312 -1.15625 0.580078 -3.06934 0.580078 -4.26953c0 -8.83203 -7.16797 -16 -16 -16v0h-24.9297h-0.000976562c-6.71875 0 -13.626 5.25488 -15.4189 11.7305l-11.9404 36.2695\nh-87.4199l-11.9404 -36.2695c-1.79297 -6.47559 -8.7002 -11.7305 -15.4189 -11.7305h-0.000976562h-24.9297c-8.82617 0.00488281 -15.9902 7.17383 -15.9902 16c0 1.2002 0.259766 3.11328 0.580078 4.26953l68.29 213.48c3.92871 12.2822 17.583 22.25 30.4785 22.25\nh0.00195312h25.2793h0.00195312c12.8955 0 26.5498 -9.96777 30.4785 -22.25zM89.3701 304h45.2598l-22.6299 68.7002zM571.37 171.52c2.58203 -2.58594 4.65723 -7.65039 4.65723 -11.3047c0 -3.64551 -2.08594 -8.70117 -4.65723 -11.2852l-208 -208.21\nc-2.5752 -2.60449 -7.6377 -4.71777 -11.2998 -4.71777c-3.66309 0 -8.72559 2.11328 -11.3008 4.71777l-112 112.21c-2.57617 2.58496 -4.66699 7.64551 -4.66699 11.2949c0 3.65039 2.09082 8.70996 4.66699 11.2949l45.3008 45.3008\nc2.57324 2.60352 7.63379 4.71777 11.2949 4.71777s8.72168 -2.11426 11.2949 -4.71777l55.4102 -55.5l151.5 151.5c2.57324 2.60352 7.63379 4.71777 11.2949 4.71777s8.72168 -2.11426 11.2949 -4.71777z\" />\n    <glyph glyph-name=\"voicemail\" unicode=\"&#xf897;\" horiz-adv-x=\"640\" \nd=\"M496 320c79.4883 0 144 -64.5117 144 -144s-64.5117 -144 -144 -144h-352c-79.4844 0.00390625 -143.993 64.5156 -143.993 144c0 79.4883 64.5117 144 144 144s144 -64.5117 144 -144c0 -24.1113 -10.8711 -59.9512 -24.2666 -80h112.52\nc-13.3955 20.0488 -24.2666 55.8887 -24.2666 80c0 79.4883 64.5117 144 144 144h0.00683594zM64 176c0 -44.1602 35.8398 -80 80 -80s80 35.8398 80 80s-35.8398 80 -80 80s-80 -35.8398 -80 -80zM496 96c44.1602 0 80 35.8398 80 80s-35.8398 80 -80 80\ns-80 -35.8398 -80 -80s35.8398 -80 80 -80z\" />\n  </font>\n</defs></svg>\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_022_sample_app/app/src/static/css/styles.css",
    "content": "body {\n    background-color: #f4f4f4;\n    margin-top: 50px;\n    font-family: 'Lato';\n}\n\n.item {\n    background-color: white;\n    padding: 15px;\n    margin-bottom: 15px;\n    border: transparent;\n    border-radius: 5px;\n    box-shadow: 0 0 1em #ccc;\n    transition: all .2s ease-in-out;\n}\n\n.item:hover {\n    box-shadow: 0 0 1em #aaa;\n}\n\n.item.completed {\n    text-decoration: line-through;\n}\n\n.toggles {\n    color: black;\n}\n\n.name {\n    padding-top: 3px;\n}\n\n.remove {\n    padding-left: 0;\n}\n\nbutton:focus {\n    border: 1px solid #333;\n}"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_022_sample_app/app/src/static/index.html",
    "content": "\n<!DOCTYPE html>\n<html>\n<head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no, maximum-scale=1.0, user-scalable=0\" />\n    <link rel=\"stylesheet\" href=\"css/bootstrap.min.css\" crossorigin=\"anonymous\" />\n    <link rel=\"stylesheet\" href=\"css/font-awesome/all.min.css\" crossorigin=\"anonymous\" />\n    <link href=\"https://fonts.googleapis.com/css?family=Lato&display=swap\" rel=\"stylesheet\" />\n    <link rel=\"stylesheet\" href=\"css/styles.css\" />\n    <title>Todo App</title>\n</head>\n<body>\n    <div id=\"root\"></div>\n    <script src=\"js/react.production.min.js\"></script>\n    <script src=\"js/react-dom.production.min.js\"></script>\n    <script src=\"js/react-bootstrap.js\"></script>\n    <script src=\"js/babel.min.js\"></script>\n    <script type=\"text/babel\" src=\"js/app.js\"></script>\n</body>\n</html>\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_022_sample_app/app/src/static/js/app.js",
    "content": "function App() {\n    const { Container, Row, Col } = ReactBootstrap;\n    return (\n        <Container>\n            <Row>\n                <Col md={{ offset: 3, span: 6 }}>\n                    <TodoListCard />\n                </Col>\n            </Row>\n        </Container>\n    );\n}\n\nfunction TodoListCard() {\n    const [items, setItems] = React.useState(null);\n\n    React.useEffect(() => {\n        fetch('/items')\n            .then(r => r.json())\n            .then(setItems);\n    }, []);\n\n    const onNewItem = React.useCallback(\n        newItem => {\n            setItems([...items, newItem]);\n        },\n        [items],\n    );\n\n    const onItemUpdate = React.useCallback(\n        item => {\n            const index = items.findIndex(i => i.id === item.id);\n            setItems([\n                ...items.slice(0, index),\n                item,\n                ...items.slice(index + 1),\n            ]);\n        },\n        [items],\n    );\n\n    const onItemRemoval = React.useCallback(\n        item => {\n            const index = items.findIndex(i => i.id === item.id);\n            setItems([...items.slice(0, index), ...items.slice(index + 1)]);\n        },\n        [items],\n    );\n\n    if (items === null) return 'Loading...';\n\n    return (\n        <React.Fragment>\n            <AddItemForm onNewItem={onNewItem} />\n            {items.length === 0 && (\n                <p className=\"text-center\">No items yet! Add one above!</p>\n            )}\n            {items.map(item => (\n                <ItemDisplay\n                    item={item}\n                    key={item.id}\n                    onItemUpdate={onItemUpdate}\n                    onItemRemoval={onItemRemoval}\n                />\n            ))}\n        </React.Fragment>\n    );\n}\n\nfunction AddItemForm({ onNewItem }) {\n    const { Form, InputGroup, Button } = ReactBootstrap;\n\n    const [newItem, setNewItem] = React.useState('');\n    const [submitting, setSubmitting] = React.useState(false);\n\n    const submitNewItem = e => {\n        e.preventDefault();\n        setSubmitting(true);\n        fetch('/items', {\n            method: 'POST',\n            body: JSON.stringify({ name: newItem }),\n            headers: { 'Content-Type': 'application/json' },\n        })\n            .then(r => r.json())\n            .then(item => {\n                onNewItem(item);\n                setSubmitting(false);\n                setNewItem('');\n            });\n    };\n\n    return (\n        <Form onSubmit={submitNewItem}>\n            <InputGroup className=\"mb-3\">\n                <Form.Control\n                    value={newItem}\n                    onChange={e => setNewItem(e.target.value)}\n                    type=\"text\"\n                    placeholder=\"New Item\"\n                    aria-describedby=\"basic-addon1\"\n                />\n                <InputGroup.Append>\n                    <Button\n                        type=\"submit\"\n                        variant=\"success\"\n                        disabled={!newItem.length}\n                        className={submitting ? 'disabled' : ''}\n                    >\n                        {submitting ? 'Adding...' : 'Add Item'}\n                    </Button>\n                </InputGroup.Append>\n            </InputGroup>\n        </Form>\n    );\n}\n\nfunction ItemDisplay({ item, onItemUpdate, onItemRemoval }) {\n    const { Container, Row, Col, Button } = ReactBootstrap;\n\n    const toggleCompletion = () => {\n        fetch(`/items/${item.id}`, {\n            method: 'PUT',\n            body: JSON.stringify({\n                name: item.name,\n                completed: !item.completed,\n            }),\n            headers: { 'Content-Type': 'application/json' },\n        })\n            .then(r => r.json())\n            .then(onItemUpdate);\n    };\n\n    const removeItem = () => {\n        fetch(`/items/${item.id}`, { method: 'DELETE' }).then(() =>\n            onItemRemoval(item),\n        );\n    };\n\n    return (\n        <Container fluid className={`item ${item.completed && 'completed'}`}>\n            <Row>\n                <Col xs={1} className=\"text-center\">\n                    <Button\n                        className=\"toggles\"\n                        size=\"sm\"\n                        variant=\"link\"\n                        onClick={toggleCompletion}\n                        aria-label={\n                            item.completed\n                                ? 'Mark item as incomplete'\n                                : 'Mark item as complete'\n                        }\n                    >\n                        <i\n                            className={`far ${\n                                item.completed ? 'fa-check-square' : 'fa-square'\n                            }`}\n                        />\n                    </Button>\n                </Col>\n                <Col xs={10} className=\"name\">\n                    {item.name}\n                </Col>\n                <Col xs={1} className=\"text-center remove\">\n                    <Button\n                        size=\"sm\"\n                        variant=\"link\"\n                        onClick={removeItem}\n                        aria-label=\"Remove Item\"\n                    >\n                        <i className=\"fa fa-trash text-danger\" />\n                    </Button>\n                </Col>\n            </Row>\n        </Container>\n    );\n}\n\nReactDOM.render(<App />, document.getElementById('root'));\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_022_sample_app/app/src/static/js/react-bootstrap.js",
    "content": "(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"), require(\"react-dom\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\", \"react-dom\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ReactBootstrap\"] = factory(require(\"react\"), require(\"react-dom\"));\n\telse\n\t\troot[\"ReactBootstrap\"] = factory(root[\"React\"], root[\"ReactDOM\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE__1__, __WEBPACK_EXTERNAL_MODULE__6__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 86);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nif (false) { var throwOnDirectAccess, ReactIs; } else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = __webpack_require__(58)();\n}\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__1__;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n  Copyright (c) 2017 Jed Watson.\n  Licensed under the MIT License (MIT), see\n  http://jedwatson.github.io/classnames\n*/\n\n/* global define */\n(function () {\n  'use strict';\n\n  var hasOwn = {}.hasOwnProperty;\n\n  function classNames() {\n    var classes = [];\n\n    for (var i = 0; i < arguments.length; i++) {\n      var arg = arguments[i];\n      if (!arg) continue;\n      var argType = typeof arg;\n\n      if (argType === 'string' || argType === 'number') {\n        classes.push(arg);\n      } else if (Array.isArray(arg) && arg.length) {\n        var inner = classNames.apply(null, arg);\n\n        if (inner) {\n          classes.push(inner);\n        }\n      } else if (argType === 'object') {\n        for (var key in arg) {\n          if (hasOwn.call(arg, key) && arg[key]) {\n            classes.push(key);\n          }\n        }\n      }\n    }\n\n    return classes.join(' ');\n  }\n\n  if ( true && module.exports) {\n    classNames.default = classNames;\n    module.exports = classNames;\n  } else if (true) {\n    // register as 'classnames', consistent with npm package name\n    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {\n      return classNames;\n    }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n  } else {}\n})();\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n\nmodule.exports = _assertThisInitialized;\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports) {\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nmodule.exports = _defineProperty;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports) {\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    \"default\": obj\n  };\n}\n\nmodule.exports = _interopRequireDefault;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__6__;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = uncontrollable;\n\nvar _react = _interopRequireDefault(__webpack_require__(1));\n\nvar _invariant = _interopRequireDefault(__webpack_require__(24));\n\nvar Utils = _interopRequireWildcard(__webpack_require__(39));\n\nfunction _interopRequireWildcard(obj) {\n  if (obj && obj.__esModule) {\n    return obj;\n  } else {\n    var newObj = {};\n\n    if (obj != null) {\n      for (var key in obj) {\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\n          var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};\n\n          if (desc.get || desc.set) {\n            Object.defineProperty(newObj, key, desc);\n          } else {\n            newObj[key] = obj[key];\n          }\n        }\n      }\n    }\n\n    newObj.default = obj;\n    return newObj;\n  }\n}\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n\nfunction uncontrollable(Component, controlledValues, methods) {\n  if (methods === void 0) {\n    methods = [];\n  }\n\n  var displayName = Component.displayName || Component.name || 'Component';\n  var canAcceptRef = Utils.canAcceptRef(Component);\n  var controlledProps = Object.keys(controlledValues);\n  var PROPS_TO_OMIT = controlledProps.map(Utils.defaultKey);\n  !(canAcceptRef || !methods.length) ?  false ? undefined : invariant(false) : void 0;\n\n  var UncontrolledComponent =\n  /*#__PURE__*/\n  function (_React$Component) {\n    _inheritsLoose(UncontrolledComponent, _React$Component);\n\n    function UncontrolledComponent() {\n      var _this;\n\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n      _this.handlers = Object.create(null);\n      controlledProps.forEach(function (propName) {\n        var handlerName = controlledValues[propName];\n\n        var handleChange = function handleChange(value) {\n          if (_this.props[handlerName]) {\n            var _this$props;\n\n            _this._notifying = true;\n\n            for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n              args[_key2 - 1] = arguments[_key2];\n            }\n\n            (_this$props = _this.props)[handlerName].apply(_this$props, [value].concat(args));\n\n            _this._notifying = false;\n          }\n\n          _this._values[propName] = value;\n          if (!_this.unmounted) _this.forceUpdate();\n        };\n\n        _this.handlers[handlerName] = handleChange;\n      });\n      if (methods.length) _this.attachRef = function (ref) {\n        _this.inner = ref;\n      };\n      return _this;\n    }\n\n    var _proto = UncontrolledComponent.prototype;\n\n    _proto.shouldComponentUpdate = function shouldComponentUpdate() {\n      //let the forceUpdate trigger the update\n      return !this._notifying;\n    };\n\n    _proto.componentWillMount = function componentWillMount() {\n      var _this2 = this;\n\n      var props = this.props;\n      this._values = Object.create(null);\n      controlledProps.forEach(function (key) {\n        _this2._values[key] = props[Utils.defaultKey(key)];\n      });\n    };\n\n    _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n      var _this3 = this;\n\n      var props = this.props;\n      controlledProps.forEach(function (key) {\n        /**\n         * If a prop switches from controlled to Uncontrolled\n         * reset its value to the defaultValue\n         */\n        if (!Utils.isProp(nextProps, key) && Utils.isProp(props, key)) {\n          _this3._values[key] = nextProps[Utils.defaultKey(key)];\n        }\n      });\n    };\n\n    _proto.componentWillUnmount = function componentWillUnmount() {\n      this.unmounted = true;\n    };\n\n    _proto.render = function render() {\n      var _this4 = this;\n\n      var _this$props2 = this.props,\n          innerRef = _this$props2.innerRef,\n          props = _objectWithoutPropertiesLoose(_this$props2, [\"innerRef\"]);\n\n      PROPS_TO_OMIT.forEach(function (prop) {\n        delete props[prop];\n      });\n      var newProps = {};\n      controlledProps.forEach(function (propName) {\n        var propValue = _this4.props[propName];\n        newProps[propName] = propValue !== undefined ? propValue : _this4._values[propName];\n      });\n      return _react.default.createElement(Component, _extends({}, props, newProps, this.handlers, {\n        ref: innerRef || this.attachRef\n      }));\n    };\n\n    return UncontrolledComponent;\n  }(_react.default.Component);\n\n  UncontrolledComponent.displayName = \"Uncontrolled(\" + displayName + \")\";\n  UncontrolledComponent.propTypes = _extends({\n    innerRef: function innerRef() {}\n  }, Utils.uncontrolledPropTypes(controlledValues, displayName));\n  methods.forEach(function (method) {\n    UncontrolledComponent.prototype[method] = function $proxiedMethod() {\n      var _this$inner;\n\n      return (_this$inner = this.inner)[method].apply(_this$inner, arguments);\n    };\n  });\n  var WrappedComponent = UncontrolledComponent;\n\n  if (_react.default.forwardRef) {\n    WrappedComponent = _react.default.forwardRef(function (props, ref) {\n      return _react.default.createElement(UncontrolledComponent, _extends({}, props, {\n        innerRef: ref\n      }));\n    });\n    WrappedComponent.propTypes = UncontrolledComponent.propTypes;\n  }\n\n  WrappedComponent.ControlledComponent = Component;\n  /**\n   * useful when wrapping a Component and you want to control\n   * everything\n   */\n\n  WrappedComponent.deferControlTo = function (newComponent, additions, nextMethods) {\n    if (additions === void 0) {\n      additions = {};\n    }\n\n    return uncontrollable(newComponent, _extends({}, controlledValues, additions), nextMethods);\n  };\n\n  return WrappedComponent;\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = useEventCallback;\n\nvar _react = __webpack_require__(1);\n\nvar _useCommittedRef = _interopRequireDefault(__webpack_require__(71));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction useEventCallback(fn) {\n  var ref = (0, _useCommittedRef.default)(fn);\n  return (0, _react.useCallback)(function () {\n    return ref.current.apply(void 0, arguments);\n  }, [ref]);\n}\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = qsa; // Zepto.js\n// (c) 2010-2015 Thomas Fuchs\n// Zepto.js may be freely distributed under the MIT license.\n\nvar simpleSelectorRE = /^[\\w-]*$/;\nvar toArray = Function.prototype.bind.call(Function.prototype.call, [].slice);\n\nfunction qsa(element, selector) {\n  var maybeID = selector[0] === '#',\n      maybeClass = selector[0] === '.',\n      nameOnly = maybeID || maybeClass ? selector.slice(1) : selector,\n      isSimple = simpleSelectorRE.test(nameOnly),\n      found;\n\n  if (isSimple) {\n    if (maybeID) {\n      element = element.getElementById ? element : document;\n      return (found = element.getElementById(nameOnly)) ? [found] : [];\n    }\n\n    if (element.getElementsByClassName && maybeClass) return toArray(element.getElementsByClassName(nameOnly));\n    return toArray(element.getElementsByTagName(selector));\n  }\n\n  return toArray(element.querySelectorAll(selector));\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _default = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = style;\n\nvar _camelizeStyle = _interopRequireDefault(__webpack_require__(40));\n\nvar _hyphenateStyle = _interopRequireDefault(__webpack_require__(60));\n\nvar _getComputedStyle2 = _interopRequireDefault(__webpack_require__(62));\n\nvar _removeStyle = _interopRequireDefault(__webpack_require__(63));\n\nvar _properties = __webpack_require__(26);\n\nvar _isTransform = _interopRequireDefault(__webpack_require__(64));\n\nfunction style(node, property, value) {\n  var css = '';\n  var transforms = '';\n  var props = property;\n\n  if (typeof property === 'string') {\n    if (value === undefined) {\n      return node.style[(0, _camelizeStyle.default)(property)] || (0, _getComputedStyle2.default)(node).getPropertyValue((0, _hyphenateStyle.default)(property));\n    } else {\n      (props = {})[property] = value;\n    }\n  }\n\n  Object.keys(props).forEach(function (key) {\n    var value = props[key];\n\n    if (!value && value !== 0) {\n      (0, _removeStyle.default)(node, (0, _hyphenateStyle.default)(key));\n    } else if ((0, _isTransform.default)(key)) {\n      transforms += key + \"(\" + value + \") \";\n    } else {\n      css += (0, _hyphenateStyle.default)(key) + \": \" + value + \";\";\n    }\n  });\n\n  if (transforms) {\n    css += _properties.transform + \": \" + transforms + \";\";\n  }\n\n  node.style.cssText += ';' + css;\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = exports.EXITING = exports.ENTERED = exports.ENTERING = exports.EXITED = exports.UNMOUNTED = void 0;\n\nvar PropTypes = _interopRequireWildcard(__webpack_require__(0));\n\nvar _react = _interopRequireDefault(__webpack_require__(1));\n\nvar _reactDom = _interopRequireDefault(__webpack_require__(6));\n\nvar _reactLifecyclesCompat = __webpack_require__(65);\n\nvar _PropTypes = __webpack_require__(66);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _interopRequireWildcard(obj) {\n  if (obj && obj.__esModule) {\n    return obj;\n  } else {\n    var newObj = {};\n\n    if (obj != null) {\n      for (var key in obj) {\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\n          var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};\n\n          if (desc.get || desc.set) {\n            Object.defineProperty(newObj, key, desc);\n          } else {\n            newObj[key] = obj[key];\n          }\n        }\n      }\n    }\n\n    newObj.default = obj;\n    return newObj;\n  }\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n\nvar UNMOUNTED = 'unmounted';\nexports.UNMOUNTED = UNMOUNTED;\nvar EXITED = 'exited';\nexports.EXITED = EXITED;\nvar ENTERING = 'entering';\nexports.ENTERING = ENTERING;\nvar ENTERED = 'entered';\nexports.ENTERED = ENTERED;\nvar EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n *   transition: `opacity ${duration}ms ease-in-out`,\n *   opacity: 0,\n * }\n *\n * const transitionStyles = {\n *   entering: { opacity: 0 },\n *   entered:  { opacity: 1 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n *   <Transition in={inProp} timeout={duration}>\n *     {state => (\n *       <div style={{\n *         ...defaultStyle,\n *         ...transitionStyles[state]\n *       }}>\n *         I'm a fade Transition!\n *       </div>\n *     )}\n *   </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n *  - `'entering'`\n *  - `'entered'`\n *  - `'exiting'`\n *  - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n *   const [inProp, setInProp] = useState(false);\n *   return (\n *     <div>\n *       <Transition in={inProp} timeout={500}>\n *         {state => (\n *           // ...\n *         )}\n *       </Transition>\n *       <button onClick={() => setInProp(true)}>\n *         Click to Enter\n *       </button>\n *     </div>\n *   );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nexports.EXITING = EXITING;\n\nvar Transition =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Transition, _React$Component);\n\n  function Transition(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n    var parentGroup = context.transitionGroup; // In the context of a TransitionGroup all enters are really appears\n\n    var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n    var initialStatus;\n    _this.appearStatus = null;\n\n    if (props.in) {\n      if (appear) {\n        initialStatus = EXITED;\n        _this.appearStatus = ENTERING;\n      } else {\n        initialStatus = ENTERED;\n      }\n    } else {\n      if (props.unmountOnExit || props.mountOnEnter) {\n        initialStatus = UNMOUNTED;\n      } else {\n        initialStatus = EXITED;\n      }\n    }\n\n    _this.state = {\n      status: initialStatus\n    };\n    _this.nextCallback = null;\n    return _this;\n  }\n\n  var _proto = Transition.prototype;\n\n  _proto.getChildContext = function getChildContext() {\n    return {\n      transitionGroup: null // allows for nested Transitions\n\n    };\n  };\n\n  Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n    var nextIn = _ref.in;\n\n    if (nextIn && prevState.status === UNMOUNTED) {\n      return {\n        status: EXITED\n      };\n    }\n\n    return null;\n  }; // getSnapshotBeforeUpdate(prevProps) {\n  //   let nextStatus = null\n  //   if (prevProps !== this.props) {\n  //     const { status } = this.state\n  //     if (this.props.in) {\n  //       if (status !== ENTERING && status !== ENTERED) {\n  //         nextStatus = ENTERING\n  //       }\n  //     } else {\n  //       if (status === ENTERING || status === ENTERED) {\n  //         nextStatus = EXITING\n  //       }\n  //     }\n  //   }\n  //   return { nextStatus }\n  // }\n\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.updateStatus(true, this.appearStatus);\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    var nextStatus = null;\n\n    if (prevProps !== this.props) {\n      var status = this.state.status;\n\n      if (this.props.in) {\n        if (status !== ENTERING && status !== ENTERED) {\n          nextStatus = ENTERING;\n        }\n      } else {\n        if (status === ENTERING || status === ENTERED) {\n          nextStatus = EXITING;\n        }\n      }\n    }\n\n    this.updateStatus(false, nextStatus);\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.cancelNextCallback();\n  };\n\n  _proto.getTimeouts = function getTimeouts() {\n    var timeout = this.props.timeout;\n    var exit, enter, appear;\n    exit = enter = appear = timeout;\n\n    if (timeout != null && typeof timeout !== 'number') {\n      exit = timeout.exit;\n      enter = timeout.enter; // TODO: remove fallback for next major\n\n      appear = timeout.appear !== undefined ? timeout.appear : enter;\n    }\n\n    return {\n      exit: exit,\n      enter: enter,\n      appear: appear\n    };\n  };\n\n  _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n    if (mounting === void 0) {\n      mounting = false;\n    }\n\n    if (nextStatus !== null) {\n      // nextStatus will always be ENTERING or EXITING.\n      this.cancelNextCallback();\n\n      var node = _reactDom.default.findDOMNode(this);\n\n      if (nextStatus === ENTERING) {\n        this.performEnter(node, mounting);\n      } else {\n        this.performExit(node);\n      }\n    } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n      this.setState({\n        status: UNMOUNTED\n      });\n    }\n  };\n\n  _proto.performEnter = function performEnter(node, mounting) {\n    var _this2 = this;\n\n    var enter = this.props.enter;\n    var appearing = this.context.transitionGroup ? this.context.transitionGroup.isMounting : mounting;\n    var timeouts = this.getTimeouts();\n    var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n    // if we are mounting and running this it means appear _must_ be set\n\n    if (!mounting && !enter) {\n      this.safeSetState({\n        status: ENTERED\n      }, function () {\n        _this2.props.onEntered(node);\n      });\n      return;\n    }\n\n    this.props.onEnter(node, appearing);\n    this.safeSetState({\n      status: ENTERING\n    }, function () {\n      _this2.props.onEntering(node, appearing);\n\n      _this2.onTransitionEnd(node, enterTimeout, function () {\n        _this2.safeSetState({\n          status: ENTERED\n        }, function () {\n          _this2.props.onEntered(node, appearing);\n        });\n      });\n    });\n  };\n\n  _proto.performExit = function performExit(node) {\n    var _this3 = this;\n\n    var exit = this.props.exit;\n    var timeouts = this.getTimeouts(); // no exit animation skip right to EXITED\n\n    if (!exit) {\n      this.safeSetState({\n        status: EXITED\n      }, function () {\n        _this3.props.onExited(node);\n      });\n      return;\n    }\n\n    this.props.onExit(node);\n    this.safeSetState({\n      status: EXITING\n    }, function () {\n      _this3.props.onExiting(node);\n\n      _this3.onTransitionEnd(node, timeouts.exit, function () {\n        _this3.safeSetState({\n          status: EXITED\n        }, function () {\n          _this3.props.onExited(node);\n        });\n      });\n    });\n  };\n\n  _proto.cancelNextCallback = function cancelNextCallback() {\n    if (this.nextCallback !== null) {\n      this.nextCallback.cancel();\n      this.nextCallback = null;\n    }\n  };\n\n  _proto.safeSetState = function safeSetState(nextState, callback) {\n    // This shouldn't be necessary, but there are weird race conditions with\n    // setState callbacks and unmounting in testing, so always make sure that\n    // we can cancel any pending setState callbacks after we unmount.\n    callback = this.setNextCallback(callback);\n    this.setState(nextState, callback);\n  };\n\n  _proto.setNextCallback = function setNextCallback(callback) {\n    var _this4 = this;\n\n    var active = true;\n\n    this.nextCallback = function (event) {\n      if (active) {\n        active = false;\n        _this4.nextCallback = null;\n        callback(event);\n      }\n    };\n\n    this.nextCallback.cancel = function () {\n      active = false;\n    };\n\n    return this.nextCallback;\n  };\n\n  _proto.onTransitionEnd = function onTransitionEnd(node, timeout, handler) {\n    this.setNextCallback(handler);\n    var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n    if (!node || doesNotHaveTimeoutOrListener) {\n      setTimeout(this.nextCallback, 0);\n      return;\n    }\n\n    if (this.props.addEndListener) {\n      this.props.addEndListener(node, this.nextCallback);\n    }\n\n    if (timeout != null) {\n      setTimeout(this.nextCallback, timeout);\n    }\n  };\n\n  _proto.render = function render() {\n    var status = this.state.status;\n\n    if (status === UNMOUNTED) {\n      return null;\n    }\n\n    var _this$props = this.props,\n        children = _this$props.children,\n        childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\"]); // filter props for Transtition\n\n\n    delete childProps.in;\n    delete childProps.mountOnEnter;\n    delete childProps.unmountOnExit;\n    delete childProps.appear;\n    delete childProps.enter;\n    delete childProps.exit;\n    delete childProps.timeout;\n    delete childProps.addEndListener;\n    delete childProps.onEnter;\n    delete childProps.onEntering;\n    delete childProps.onEntered;\n    delete childProps.onExit;\n    delete childProps.onExiting;\n    delete childProps.onExited;\n\n    if (typeof children === 'function') {\n      return children(status, childProps);\n    }\n\n    var child = _react.default.Children.only(children);\n\n    return _react.default.cloneElement(child, childProps);\n  };\n\n  return Transition;\n}(_react.default.Component);\n\nTransition.contextTypes = {\n  transitionGroup: PropTypes.object\n};\nTransition.childContextTypes = {\n  transitionGroup: function transitionGroup() {}\n};\nTransition.propTypes =  false ? undefined : {};\n\nfunction noop() {}\n\nTransition.defaultProps = {\n  in: false,\n  mountOnEnter: false,\n  unmountOnExit: false,\n  appear: false,\n  enter: true,\n  exit: true,\n  onEnter: noop,\n  onEntering: noop,\n  onEntered: noop,\n  onExit: noop,\n  onExiting: noop,\n  onExited: noop\n};\nTransition.UNMOUNTED = 0;\nTransition.EXITED = 1;\nTransition.ENTERING = 2;\nTransition.ENTERED = 3;\nTransition.EXITING = 4;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(Transition);\n\nexports.default = _default;\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = isRequiredForA11y;\n\nfunction isRequiredForA11y(validator) {\n  return function validate(props, propName, componentName, location, propFullName) {\n    var componentNameSafe = componentName || '<<anonymous>>';\n    var propFullNameSafe = propFullName || propName;\n\n    if (props[propName] == null) {\n      return new Error('The ' + location + ' `' + propFullNameSafe + '` is required to make ' + ('`' + componentNameSafe + '` accessible for users of assistive ') + 'technologies such as screen readers.');\n    }\n\n    for (var _len = arguments.length, args = Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++) {\n      args[_key - 5] = arguments[_key];\n    }\n\n    return validator.apply(undefined, [props, propName, componentName, location, propFullName].concat(args));\n  };\n}\n\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports) {\n\nfunction _extends() {\n  module.exports = _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = useUncontrolled;\n\nvar _react = __webpack_require__(1);\n\nvar Utils = _interopRequireWildcard(__webpack_require__(39));\n\nfunction _interopRequireWildcard(obj) {\n  if (obj && obj.__esModule) {\n    return obj;\n  } else {\n    var newObj = {};\n\n    if (obj != null) {\n      for (var key in obj) {\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\n          var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};\n\n          if (desc.get || desc.set) {\n            Object.defineProperty(newObj, key, desc);\n          } else {\n            newObj[key] = obj[key];\n          }\n        }\n      }\n    }\n\n    newObj.default = obj;\n    return newObj;\n  }\n}\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nfunction _toPropertyKey(arg) {\n  var key = _toPrimitive(arg, \"string\");\n\n  return typeof key === \"symbol\" ? key : String(key);\n}\n\nfunction _toPrimitive(input, hint) {\n  if (typeof input !== \"object\" || input === null) return input;\n  var prim = input[Symbol.toPrimitive];\n\n  if (prim !== undefined) {\n    var res = prim.call(input, hint || \"default\");\n    if (typeof res !== \"object\") return res;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n\n  return (hint === \"string\" ? String : Number)(input);\n}\n\nfunction useUncontrolled(props, config) {\n  return Object.keys(config).reduce(function (result, fieldName) {\n    var _extends2;\n\n    var defaultValue = result[Utils.defaultKey(fieldName)],\n        propsValue = result[fieldName],\n        rest = _objectWithoutPropertiesLoose(result, [Utils.defaultKey(fieldName), fieldName].map(_toPropertyKey));\n\n    var handlerName = config[fieldName];\n    var prevProps = (0, _react.useRef)({});\n\n    var _useState = (0, _react.useState)(defaultValue),\n        stateValue = _useState[0],\n        setState = _useState[1];\n\n    var isProp = Utils.isProp(props, fieldName);\n    var wasProp = Utils.isProp(prevProps.current, fieldName);\n    prevProps.current = props;\n    /**\n     * If a prop switches from controlled to Uncontrolled\n     * reset its value to the defaultValue\n     */\n\n    if (!isProp && wasProp) {\n      setState(defaultValue);\n    }\n\n    var propsHandler = props[handlerName];\n    var handler = (0, _react.useCallback)(function (value) {\n      for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        args[_key - 1] = arguments[_key];\n      }\n\n      if (propsHandler) propsHandler.apply(void 0, [value].concat(args));\n      setState(value);\n    }, [setState, propsHandler]);\n    return _extends({}, rest, (_extends2 = {}, _extends2[fieldName] = isProp ? propsValue : stateValue, _extends2[handlerName] = handler, _extends2));\n  }, props);\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = ownerDocument;\n\nfunction ownerDocument(node) {\n  return node && node.ownerDocument || document;\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports) {\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n\nmodule.exports = _inheritsLoose;\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = scrollbarSize;\n\nvar _inDOM = _interopRequireDefault(__webpack_require__(10));\n\nvar size;\n\nfunction scrollbarSize(recalc) {\n  if (!size && size !== 0 || recalc) {\n    if (_inDOM.default) {\n      var scrollDiv = document.createElement('div');\n      scrollDiv.style.position = 'absolute';\n      scrollDiv.style.top = '-9999px';\n      scrollDiv.style.width = '50px';\n      scrollDiv.style.height = '50px';\n      scrollDiv.style.overflow = 'scroll';\n      document.body.appendChild(scrollDiv);\n      size = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n      document.body.removeChild(scrollDiv);\n    }\n  }\n\n  return size;\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.isRequiredForA11y = exports.elementType = exports.deprecated = exports.componentOrElement = exports.all = undefined;\n\nvar _all = __webpack_require__(34);\n\nvar _all2 = _interopRequireDefault(_all);\n\nvar _componentOrElement = __webpack_require__(20);\n\nvar _componentOrElement2 = _interopRequireDefault(_componentOrElement);\n\nvar _deprecated = __webpack_require__(67);\n\nvar _deprecated2 = _interopRequireDefault(_deprecated);\n\nvar _elementType = __webpack_require__(28);\n\nvar _elementType2 = _interopRequireDefault(_elementType);\n\nvar _isRequiredForA11y = __webpack_require__(13);\n\nvar _isRequiredForA11y2 = _interopRequireDefault(_isRequiredForA11y);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nexports.all = _all2.default;\nexports.componentOrElement = _componentOrElement2.default;\nexports.deprecated = _deprecated2.default;\nexports.elementType = _elementType2.default;\nexports.isRequiredForA11y = _isRequiredForA11y2.default;\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n  return typeof obj;\n} : function (obj) {\n  return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _createChainableTypeChecker = __webpack_require__(27);\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(_createChainableTypeChecker);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction validate(props, propName, componentName, location, propFullName) {\n  var propValue = props[propName];\n  var propType = typeof propValue === 'undefined' ? 'undefined' : _typeof(propValue);\n\n  if (_react2.default.isValidElement(propValue)) {\n    return new Error('Invalid ' + location + ' `' + propFullName + '` of type ReactElement ' + ('supplied to `' + componentName + '`, expected a ReactComponent or a ') + 'DOMElement. You can usually obtain a ReactComponent or DOMElement ' + 'from a ReactElement by attaching a ref to it.');\n  }\n\n  if ((propType !== 'object' || typeof propValue.render !== 'function') && propValue.nodeType !== 1) {\n    return new Error('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected a ReactComponent or a ') + 'DOMElement.');\n  }\n\n  return null;\n}\n\nexports.default = (0, _createChainableTypeChecker2.default)(validate);\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = \"production\" !== 'production';\n\nvar warning = function () {};\n\nif (__DEV__) {\n  var printWarning = function printWarning(format, args) {\n    var len = arguments.length;\n    args = new Array(len > 1 ? len - 1 : 0);\n\n    for (var key = 1; key < len; key++) {\n      args[key - 1] = arguments[key];\n    }\n\n    var argIndex = 0;\n    var message = 'Warning: ' + format.replace(/%s/g, function () {\n      return args[argIndex++];\n    });\n\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) {}\n  };\n\n  warning = function (condition, format, args) {\n    var len = arguments.length;\n    args = new Array(len > 2 ? len - 2 : 0);\n\n    for (var key = 2; key < len; key++) {\n      args[key - 2] = arguments[key];\n    }\n\n    if (format === undefined) {\n      throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n    }\n\n    if (!condition) {\n      printWarning.apply(null, [format].concat(args));\n    }\n  };\n}\n\nmodule.exports = warning;\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = _interopRequireDefault(__webpack_require__(10));\n\nvar _default = function () {\n  // HTML DOM and SVG DOM may have different support levels,\n  // so we need to check on context instead of a document root element.\n  return _inDOM.default ? function (context, node) {\n    if (context.contains) {\n      return context.contains(node);\n    } else if (context.compareDocumentPosition) {\n      return context === node || !!(context.compareDocumentPosition(node) & 16);\n    } else {\n      return fallback(context, node);\n    }\n  } : fallback;\n}();\n\nexports.default = _default;\n\nfunction fallback(context, node) {\n  if (node) do {\n    if (node === context) return true;\n  } while (node = node.parentNode);\n  return false;\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _properties = _interopRequireDefault(__webpack_require__(26));\n\nvar _style = _interopRequireDefault(__webpack_require__(11));\n\nfunction onEnd(node, handler, duration) {\n  var fakeEvent = {\n    target: node,\n    currentTarget: node\n  },\n      backup;\n  if (!_properties.default.end) duration = 0;else if (duration == null) duration = parseDuration(node) || 0;\n\n  if (_properties.default.end) {\n    node.addEventListener(_properties.default.end, done, false);\n    backup = setTimeout(function () {\n      return done(fakeEvent);\n    }, (duration || 100) * 1.5);\n  } else setTimeout(done.bind(null, fakeEvent), 0);\n\n  function done(event) {\n    if (event.target !== event.currentTarget) return;\n    clearTimeout(backup);\n    event.target.removeEventListener(_properties.default.end, done);\n    handler.call(this);\n  }\n}\n\nonEnd._parseDuration = parseDuration;\nvar _default = onEnd;\nexports.default = _default;\n\nfunction parseDuration(node) {\n  var str = (0, _style.default)(node, _properties.default.duration),\n      mult = str.indexOf('ms') === -1 ? 1000 : 1;\n  return parseFloat(str) * mult;\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function (condition, format, a, b, c, d, e, f) {\n  if (false) {}\n\n  if (!condition) {\n    var error;\n\n    if (format === undefined) {\n      error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n    } else {\n      var args = [a, b, c, d, e, f];\n      var argIndex = 0;\n      error = new Error(format.replace(/%s/g, function () {\n        return args[argIndex++];\n      }));\n      error.name = 'Invariant Violation';\n    }\n\n    error.framesToPop = 1; // we don't care about invariant's own frame\n\n    throw error;\n  }\n};\n\nmodule.exports = invariant;\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _on = _interopRequireDefault(__webpack_require__(43));\n\nexports.on = _on.default;\n\nvar _off = _interopRequireDefault(__webpack_require__(44));\n\nexports.off = _off.default;\n\nvar _filter = _interopRequireDefault(__webpack_require__(78));\n\nexports.filter = _filter.default;\n\nvar _listen = _interopRequireDefault(__webpack_require__(30));\n\nexports.listen = _listen.default;\nvar _default = {\n  on: _on.default,\n  off: _off.default,\n  filter: _filter.default,\n  listen: _listen.default\n};\nexports.default = _default;\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = exports.animationEnd = exports.animationDelay = exports.animationTiming = exports.animationDuration = exports.animationName = exports.transitionEnd = exports.transitionDuration = exports.transitionDelay = exports.transitionTiming = exports.transitionProperty = exports.transform = void 0;\n\nvar _inDOM = _interopRequireDefault(__webpack_require__(10));\n\nvar transform = 'transform';\nexports.transform = transform;\nvar prefix, transitionEnd, animationEnd;\nexports.animationEnd = animationEnd;\nexports.transitionEnd = transitionEnd;\nvar transitionProperty, transitionDuration, transitionTiming, transitionDelay;\nexports.transitionDelay = transitionDelay;\nexports.transitionTiming = transitionTiming;\nexports.transitionDuration = transitionDuration;\nexports.transitionProperty = transitionProperty;\nvar animationName, animationDuration, animationTiming, animationDelay;\nexports.animationDelay = animationDelay;\nexports.animationTiming = animationTiming;\nexports.animationDuration = animationDuration;\nexports.animationName = animationName;\n\nif (_inDOM.default) {\n  var _getTransitionPropert = getTransitionProperties();\n\n  prefix = _getTransitionPropert.prefix;\n  exports.transitionEnd = transitionEnd = _getTransitionPropert.transitionEnd;\n  exports.animationEnd = animationEnd = _getTransitionPropert.animationEnd;\n  exports.transform = transform = prefix + \"-\" + transform;\n  exports.transitionProperty = transitionProperty = prefix + \"-transition-property\";\n  exports.transitionDuration = transitionDuration = prefix + \"-transition-duration\";\n  exports.transitionDelay = transitionDelay = prefix + \"-transition-delay\";\n  exports.transitionTiming = transitionTiming = prefix + \"-transition-timing-function\";\n  exports.animationName = animationName = prefix + \"-animation-name\";\n  exports.animationDuration = animationDuration = prefix + \"-animation-duration\";\n  exports.animationTiming = animationTiming = prefix + \"-animation-delay\";\n  exports.animationDelay = animationDelay = prefix + \"-animation-timing-function\";\n}\n\nvar _default = {\n  transform: transform,\n  end: transitionEnd,\n  property: transitionProperty,\n  timing: transitionTiming,\n  delay: transitionDelay,\n  duration: transitionDuration\n};\nexports.default = _default;\n\nfunction getTransitionProperties() {\n  var style = document.createElement('div').style;\n  var vendorMap = {\n    O: function O(e) {\n      return \"o\" + e.toLowerCase();\n    },\n    Moz: function Moz(e) {\n      return e.toLowerCase();\n    },\n    Webkit: function Webkit(e) {\n      return \"webkit\" + e;\n    },\n    ms: function ms(e) {\n      return \"MS\" + e;\n    }\n  };\n  var vendors = Object.keys(vendorMap);\n  var transitionEnd, animationEnd;\n  var prefix = '';\n\n  for (var i = 0; i < vendors.length; i++) {\n    var vendor = vendors[i];\n\n    if (vendor + \"TransitionProperty\" in style) {\n      prefix = \"-\" + vendor.toLowerCase();\n      transitionEnd = vendorMap[vendor]('TransitionEnd');\n      animationEnd = vendorMap[vendor]('AnimationEnd');\n      break;\n    }\n  }\n\n  if (!transitionEnd && 'transitionProperty' in style) transitionEnd = 'transitionend';\n  if (!animationEnd && 'animationName' in style) animationEnd = 'animationend';\n  style = null;\n  return {\n    animationEnd: animationEnd,\n    transitionEnd: transitionEnd,\n    prefix: prefix\n  };\n}\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = createChainableTypeChecker;\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n// Mostly taken from ReactPropTypes.\n\nfunction createChainableTypeChecker(validate) {\n  function checkType(isRequired, props, propName, componentName, location, propFullName) {\n    var componentNameSafe = componentName || '<<anonymous>>';\n    var propFullNameSafe = propFullName || propName;\n\n    if (props[propName] == null) {\n      if (isRequired) {\n        return new Error('Required ' + location + ' `' + propFullNameSafe + '` was not specified ' + ('in `' + componentNameSafe + '`.'));\n      }\n\n      return null;\n    }\n\n    for (var _len = arguments.length, args = Array(_len > 6 ? _len - 6 : 0), _key = 6; _key < _len; _key++) {\n      args[_key - 6] = arguments[_key];\n    }\n\n    return validate.apply(undefined, [props, propName, componentNameSafe, location, propFullNameSafe].concat(args));\n  }\n\n  var chainedCheckType = checkType.bind(null, false);\n  chainedCheckType.isRequired = checkType.bind(null, true);\n  return chainedCheckType;\n}\n\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactIs = __webpack_require__(69);\n\nvar _createChainableTypeChecker = __webpack_require__(27);\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(_createChainableTypeChecker);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction elementType(props, propName, componentName, location, propFullName) {\n  var propValue = props[propName];\n\n  if (_react2.default.isValidElement(propValue)) {\n    return new Error('Invalid ' + location + ' `' + propFullName + '` of type ReactElement ' + ('supplied to `' + componentName + '`,expected an element type (a string ') + ', component class, or function component).');\n  }\n\n  if (!(0, _reactIs.isValidElementType)(propValue)) {\n    return new Error('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected an element type (a string ') + ', component class, or function component).');\n  }\n\n  return null;\n}\n\nexports.default = (0, _createChainableTypeChecker2.default)(elementType);\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(__webpack_require__(1));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nvar DropdownContext = _react.default.createContext({\n  menuRef: function menuRef() {},\n  toggleRef: function toggleRef() {},\n  onToggle: function onToggle() {},\n  toggleNode: undefined,\n  alignEnd: null,\n  show: null,\n  drop: null\n});\n\nvar _default = DropdownContext;\nexports.default = _default;\nmodule.exports = exports.default;\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = _interopRequireDefault(__webpack_require__(10));\n\nvar _on = _interopRequireDefault(__webpack_require__(43));\n\nvar _off = _interopRequireDefault(__webpack_require__(44));\n\nvar listen = function listen() {};\n\nif (_inDOM.default) {\n  listen = function listen(node, eventName, handler, capture) {\n    (0, _on.default)(node, eventName, handler, capture);\n    return function () {\n      (0, _off.default)(node, eventName, handler, capture);\n    };\n  };\n}\n\nvar _default = listen;\nexports.default = _default;\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 31 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n\n// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js\nvar objectWithoutPropertiesLoose = __webpack_require__(53);\nvar objectWithoutPropertiesLoose_default = /*#__PURE__*/__webpack_require__.n(objectWithoutPropertiesLoose);\n\n// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/extends.js\nvar helpers_extends = __webpack_require__(14);\nvar extends_default = /*#__PURE__*/__webpack_require__.n(helpers_extends);\n\n// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/inheritsLoose.js\nvar inheritsLoose = __webpack_require__(17);\nvar inheritsLoose_default = /*#__PURE__*/__webpack_require__.n(inheritsLoose);\n\n// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/assertThisInitialized.js\nvar assertThisInitialized = __webpack_require__(3);\nvar assertThisInitialized_default = /*#__PURE__*/__webpack_require__.n(assertThisInitialized);\n\n// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/defineProperty.js\nvar defineProperty = __webpack_require__(4);\nvar defineProperty_default = /*#__PURE__*/__webpack_require__.n(defineProperty);\n\n// EXTERNAL MODULE: external {\"root\":\"React\",\"commonjs2\":\"react\",\"commonjs\":\"react\",\"amd\":\"react\"}\nvar external_root_React_commonjs2_react_commonjs_react_amd_react_ = __webpack_require__(1);\n\n// EXTERNAL MODULE: ./node_modules/popper.js/dist/esm/popper.js\nvar popper = __webpack_require__(38);\n\n// EXTERNAL MODULE: ./node_modules/react-popper/node_modules/create-react-context/lib/index.js\nvar lib = __webpack_require__(54);\nvar lib_default = /*#__PURE__*/__webpack_require__.n(lib);\n\n// CONCATENATED MODULE: ./node_modules/react-popper/lib/esm/Manager.js\n\n\n\n\n\n\nvar ManagerContext = lib_default()({\n  setReferenceNode: undefined,\n  referenceNode: undefined\n});\n\nvar Manager_Manager =\n/*#__PURE__*/\nfunction (_React$Component) {\n  inheritsLoose_default()(Manager, _React$Component);\n\n  function Manager() {\n    var _this;\n\n    _this = _React$Component.call(this) || this;\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"setReferenceNode\", function (referenceNode) {\n      if (!referenceNode || _this.state.context.referenceNode === referenceNode) {\n        return;\n      }\n\n      _this.setState(function (_ref) {\n        var context = _ref.context;\n        return {\n          context: extends_default()({}, context, {\n            referenceNode: referenceNode\n          })\n        };\n      });\n    });\n\n    _this.state = {\n      context: {\n        setReferenceNode: _this.setReferenceNode,\n        referenceNode: undefined\n      }\n    };\n    return _this;\n  }\n\n  var _proto = Manager.prototype;\n\n  _proto.render = function render() {\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_[\"createElement\"](ManagerContext.Provider, {\n      value: this.state.context\n    }, this.props.children);\n  };\n\n  return Manager;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"Component\"]);\n\n\n// CONCATENATED MODULE: ./node_modules/react-popper/lib/esm/utils.js\n/**\n * Takes an argument and if it's an array, returns the first item in the array,\n * otherwise returns the argument. Used for Preact compatibility.\n */\nvar unwrapArray = function unwrapArray(arg) {\n  return Array.isArray(arg) ? arg[0] : arg;\n};\n/**\n * Takes a maybe-undefined function and arbitrary args and invokes the function\n * only if it is defined.\n */\n\nvar safeInvoke = function safeInvoke(fn) {\n  if (typeof fn === \"function\") {\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    return fn.apply(void 0, args);\n  }\n};\n// CONCATENATED MODULE: ./node_modules/react-popper/lib/esm/Popper.js\n\n\n\n\n\n\n\n\n\nvar initialStyle = {\n  position: 'absolute',\n  top: 0,\n  left: 0,\n  opacity: 0,\n  pointerEvents: 'none'\n};\nvar initialArrowStyle = {};\nvar Popper_InnerPopper =\n/*#__PURE__*/\nfunction (_React$Component) {\n  inheritsLoose_default()(InnerPopper, _React$Component);\n\n  function InnerPopper() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"state\", {\n      data: undefined,\n      placement: undefined\n    });\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"popperInstance\", void 0);\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"popperNode\", null);\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"arrowNode\", null);\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"setPopperNode\", function (popperNode) {\n      if (!popperNode || _this.popperNode === popperNode) return;\n      safeInvoke(_this.props.innerRef, popperNode);\n      _this.popperNode = popperNode;\n\n      _this.updatePopperInstance();\n    });\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"setArrowNode\", function (arrowNode) {\n      _this.arrowNode = arrowNode;\n    });\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"updateStateModifier\", {\n      enabled: true,\n      order: 900,\n      fn: function fn(data) {\n        var placement = data.placement;\n\n        _this.setState({\n          data: data,\n          placement: placement\n        });\n\n        return data;\n      }\n    });\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"getOptions\", function () {\n      return {\n        placement: _this.props.placement,\n        eventsEnabled: _this.props.eventsEnabled,\n        positionFixed: _this.props.positionFixed,\n        modifiers: extends_default()({}, _this.props.modifiers, {\n          arrow: extends_default()({}, _this.props.modifiers && _this.props.modifiers.arrow, {\n            enabled: !!_this.arrowNode,\n            element: _this.arrowNode\n          }),\n          applyStyle: {\n            enabled: false\n          },\n          updateStateModifier: _this.updateStateModifier\n        })\n      };\n    });\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"getPopperStyle\", function () {\n      return !_this.popperNode || !_this.state.data ? initialStyle : extends_default()({\n        position: _this.state.data.offsets.popper.position\n      }, _this.state.data.styles);\n    });\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"getPopperPlacement\", function () {\n      return !_this.state.data ? undefined : _this.state.placement;\n    });\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"getArrowStyle\", function () {\n      return !_this.arrowNode || !_this.state.data ? initialArrowStyle : _this.state.data.arrowStyles;\n    });\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"getOutOfBoundariesState\", function () {\n      return _this.state.data ? _this.state.data.hide : undefined;\n    });\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"destroyPopperInstance\", function () {\n      if (!_this.popperInstance) return;\n\n      _this.popperInstance.destroy();\n\n      _this.popperInstance = null;\n    });\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"updatePopperInstance\", function () {\n      _this.destroyPopperInstance();\n\n      var _assertThisInitialize = assertThisInitialized_default()(assertThisInitialized_default()(_this)),\n          popperNode = _assertThisInitialize.popperNode;\n\n      var referenceElement = _this.props.referenceElement;\n      if (!referenceElement || !popperNode) return;\n      _this.popperInstance = new popper[\"a\" /* default */](referenceElement, popperNode, _this.getOptions());\n    });\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"scheduleUpdate\", function () {\n      if (_this.popperInstance) {\n        _this.popperInstance.scheduleUpdate();\n      }\n    });\n\n    return _this;\n  }\n\n  var _proto = InnerPopper.prototype;\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n    // If the Popper.js options have changed, update the instance (destroy + create)\n    if (this.props.placement !== prevProps.placement || this.props.referenceElement !== prevProps.referenceElement || this.props.positionFixed !== prevProps.positionFixed) {\n      this.updatePopperInstance();\n    } else if (this.props.eventsEnabled !== prevProps.eventsEnabled && this.popperInstance) {\n      this.props.eventsEnabled ? this.popperInstance.enableEventListeners() : this.popperInstance.disableEventListeners();\n    } // A placement difference in state means popper determined a new placement\n    // apart from the props value. By the time the popper element is rendered with\n    // the new position Popper has already measured it, if the place change triggers\n    // a size change it will result in a misaligned popper. So we schedule an update to be sure.\n\n\n    if (prevState.placement !== this.state.placement) {\n      this.scheduleUpdate();\n    }\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    safeInvoke(this.props.innerRef, null);\n    this.destroyPopperInstance();\n  };\n\n  _proto.render = function render() {\n    return unwrapArray(this.props.children)({\n      ref: this.setPopperNode,\n      style: this.getPopperStyle(),\n      placement: this.getPopperPlacement(),\n      outOfBoundaries: this.getOutOfBoundariesState(),\n      scheduleUpdate: this.scheduleUpdate,\n      arrowProps: {\n        ref: this.setArrowNode,\n        style: this.getArrowStyle()\n      }\n    });\n  };\n\n  return InnerPopper;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"Component\"]);\n\ndefineProperty_default()(Popper_InnerPopper, \"defaultProps\", {\n  placement: 'bottom',\n  eventsEnabled: true,\n  referenceElement: undefined,\n  positionFixed: false\n});\n\nvar placements = popper[\"a\" /* default */].placements;\n\nfunction Popper(_ref) {\n  var referenceElement = _ref.referenceElement,\n      props = objectWithoutPropertiesLoose_default()(_ref, [\"referenceElement\"]);\n\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_[\"createElement\"](ManagerContext.Consumer, null, function (_ref2) {\n    var referenceNode = _ref2.referenceNode;\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_[\"createElement\"](Popper_InnerPopper, extends_default()({\n      referenceElement: referenceElement !== undefined ? referenceElement : referenceNode\n    }, props));\n  });\n}\n// EXTERNAL MODULE: ./node_modules/warning/warning.js\nvar warning = __webpack_require__(21);\nvar warning_default = /*#__PURE__*/__webpack_require__.n(warning);\n\n// CONCATENATED MODULE: ./node_modules/react-popper/lib/esm/Reference.js\n\n\n\n\n\n\n\n\n\nvar Reference_InnerReference =\n/*#__PURE__*/\nfunction (_React$Component) {\n  inheritsLoose_default()(InnerReference, _React$Component);\n\n  function InnerReference() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"refHandler\", function (node) {\n      safeInvoke(_this.props.innerRef, node);\n      safeInvoke(_this.props.setReferenceNode, node);\n    });\n\n    return _this;\n  }\n\n  var _proto = InnerReference.prototype;\n\n  _proto.render = function render() {\n    warning_default()(Boolean(this.props.setReferenceNode), '`Reference` should not be used outside of a `Manager` component.');\n    return unwrapArray(this.props.children)({\n      ref: this.refHandler\n    });\n  };\n\n  return InnerReference;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"Component\"]);\n\nfunction Reference(props) {\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_[\"createElement\"](ManagerContext.Consumer, null, function (_ref) {\n    var setReferenceNode = _ref.setReferenceNode;\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_[\"createElement\"](Reference_InnerReference, extends_default()({\n      setReferenceNode: setReferenceNode\n    }, props));\n  });\n}\n// CONCATENATED MODULE: ./node_modules/react-popper/lib/esm/index.js\n/* concated harmony reexport Popper */__webpack_require__.d(__webpack_exports__, \"Popper\", function() { return Popper; });\n/* concated harmony reexport placements */__webpack_require__.d(__webpack_exports__, \"placements\", function() { return placements; });\n/* concated harmony reexport Manager */__webpack_require__.d(__webpack_exports__, \"Manager\", function() { return Manager_Manager; });\n/* concated harmony reexport Reference */__webpack_require__.d(__webpack_exports__, \"Reference\", function() { return Reference; });\n// Public components\n\n\n\n // Public types\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = forwardRef;\n\nvar _react = _interopRequireDefault(__webpack_require__(1));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction forwardRef(renderFn, _temp) {\n  var _ref = _temp === void 0 ? {} : _temp,\n      propTypes = _ref.propTypes,\n      defaultProps = _ref.defaultProps,\n      _ref$allowFallback = _ref.allowFallback,\n      allowFallback = _ref$allowFallback === void 0 ? false : _ref$allowFallback,\n      _ref$displayName = _ref.displayName,\n      displayName = _ref$displayName === void 0 ? renderFn.name || renderFn.displayName : _ref$displayName;\n\n  var render = function render(props, ref) {\n    return renderFn(props, ref);\n  };\n\n  return Object.assign(_react.default.forwardRef || !allowFallback ? _react.default.forwardRef(render) : function (props) {\n    return render(props, null);\n  }, {\n    displayName: displayName,\n    propTypes: propTypes,\n    defaultProps: defaultProps\n  });\n}\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = camelize;\nvar rHyphen = /-(.)/g;\n\nfunction camelize(string) {\n  return string.replace(rHyphen, function (_, chr) {\n    return chr.toUpperCase();\n  });\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = all;\n\nvar _createChainableTypeChecker = __webpack_require__(27);\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(_createChainableTypeChecker);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction all() {\n  for (var _len = arguments.length, validators = Array(_len), _key = 0; _key < _len; _key++) {\n    validators[_key] = arguments[_key];\n  }\n\n  function allPropTypes() {\n    for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n\n    var error = null;\n    validators.forEach(function (validator) {\n      if (error != null) {\n        return;\n      }\n\n      var result = validator.apply(undefined, args);\n\n      if (result != null) {\n        error = result;\n      }\n    });\n    return error;\n  }\n\n  return (0, _createChainableTypeChecker2.default)(allPropTypes);\n}\n\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(0));\n\nvar _react = _interopRequireDefault(__webpack_require__(1));\n\nvar _reactPopper = __webpack_require__(31);\n\nvar _DropdownContext = _interopRequireDefault(__webpack_require__(29));\n\nvar _RootCloseWrapper = _interopRequireDefault(__webpack_require__(42));\n\nvar _mapContextToProps = _interopRequireDefault(__webpack_require__(77));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n\nvar DropdownMenu =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(DropdownMenu, _React$Component);\n\n  function DropdownMenu() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n    _this.state = {\n      toggleId: null\n    };\n    _this.popperIsInitialized = false;\n\n    _this.handleClose = function (e) {\n      if (!_this.props.onToggle) return;\n\n      _this.props.onToggle(false, e);\n    };\n\n    return _this;\n  }\n\n  var _proto = DropdownMenu.prototype;\n\n  _proto.getSnapshotBeforeUpdate = function getSnapshotBeforeUpdate(prevProps) {\n    // If, to the best we can tell, this update won't reinitialize popper,\n    // manually schedule an update\n    var shouldUpdatePopper = !prevProps.show && this.props.show && this.popperIsInitialized && // a new reference node will already trigger this internally\n    prevProps.toggleNode === this.props.toggleNode;\n\n    if (this.props.show && this.props.usePopper && !this.popperIsInitialized) {\n      this.popperIsInitialized = true;\n    }\n\n    return !!shouldUpdatePopper;\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(_, __, shouldUpdatePopper) {\n    if (shouldUpdatePopper && this.scheduleUpdate) {\n      this.scheduleUpdate();\n    }\n  };\n\n  _proto.render = function render() {\n    var _this2 = this;\n\n    var _this$props = this.props,\n        show = _this$props.show,\n        flip = _this$props.flip,\n        menuRef = _this$props.menuRef,\n        alignEnd = _this$props.alignEnd,\n        drop = _this$props.drop,\n        usePopper = _this$props.usePopper,\n        toggleNode = _this$props.toggleNode,\n        rootCloseEvent = _this$props.rootCloseEvent,\n        _this$props$popperCon = _this$props.popperConfig,\n        popperConfig = _this$props$popperCon === void 0 ? {} : _this$props$popperCon;\n    var placement = alignEnd ? 'bottom-end' : 'bottom-start';\n    if (drop === 'up') placement = alignEnd ? 'top-end' : 'top-start';\n    if (drop === 'right') placement = alignEnd ? 'right-end' : 'right-start';\n    if (drop === 'left') placement = alignEnd ? 'left-end' : 'left-start';\n    var menu = null;\n    var menuProps = {\n      ref: menuRef,\n      'aria-labelledby': toggleNode && toggleNode.id\n    };\n    var childArgs = {\n      show: show,\n      alignEnd: alignEnd,\n      close: this.handleClose\n    };\n\n    if (!usePopper) {\n      menu = this.props.children(_extends({}, childArgs, {\n        props: menuProps\n      }));\n    } else if (this.popperIsInitialized || show) {\n      // Add it this way, so it doesn't override someones usage\n      // with react-poppers <Reference>\n      if (toggleNode) popperConfig.referenceElement = toggleNode;\n      menu = _react.default.createElement(_reactPopper.Popper, _extends({}, popperConfig, {\n        innerRef: menuRef,\n        placement: placement,\n        eventsEnabled: !!show,\n        modifiers: _extends({\n          flip: {\n            enabled: !!flip\n          }\n        }, popperConfig.modifiers)\n      }), function (_ref) {\n        var ref = _ref.ref,\n            style = _ref.style,\n            popper = _objectWithoutPropertiesLoose(_ref, [\"ref\", \"style\"]);\n\n        _this2.scheduleUpdate = popper.scheduleUpdate;\n        return _this2.props.children(_extends({}, popper, childArgs, {\n          props: _extends({}, menuProps, {\n            ref: ref,\n            style: style\n          })\n        }));\n      });\n    }\n\n    return menu && _react.default.createElement(_RootCloseWrapper.default, {\n      disabled: !show,\n      event: rootCloseEvent,\n      onRootClose: this.handleClose\n    }, menu);\n  };\n\n  return DropdownMenu;\n}(_react.default.Component);\n\nDropdownMenu.displayName = 'ReactOverlaysDropdownMenu';\nDropdownMenu.propTypes = {\n  /**\n   * A render prop that returns a Menu element. The `props`\n   * argument should spread through to **a component that can accept a ref**.\n   *\n   * @type {Function ({\n   *   show: boolean,\n   *   alignEnd: boolean,\n   *   close: (?SyntheticEvent) => void,\n   *   placement: Placement,\n   *   outOfBoundaries: ?boolean,\n   *   scheduleUpdate: () => void,\n   *   props: {\n   *     ref: (?HTMLElement) => void,\n   *     style: { [string]: string | number },\n   *     aria-labelledby: ?string\n   *   },\n   *   arrowProps: {\n   *     ref: (?HTMLElement) => void,\n   *     style: { [string]: string | number },\n   *   },\n   * }) => React.Element}\n   */\n  children: _propTypes.default.func.isRequired,\n\n  /**\n   * Controls the visible state of the menu, generally this is\n   * provided by the parent `Dropdown` component,\n   * but may also be specified as a prop directly.\n   */\n  show: _propTypes.default.bool,\n\n  /**\n   * Aligns the dropdown menu to the 'end' of it's placement position.\n   * Generally this is provided by the parent `Dropdown` component,\n   * but may also be specified as a prop directly.\n   */\n  alignEnd: _propTypes.default.bool,\n\n  /**\n   * Enables the Popper.js `flip` modifier, allowing the Dropdown to\n   * automatically adjust it's placement in case of overlap with the viewport or toggle.\n   * Refer to the [flip docs](https://popper.js.org/popper-documentation.html#modifiers..flip.enabled) for more info\n   */\n  flip: _propTypes.default.bool,\n  usePopper: _propTypes.default.oneOf([true, false]),\n\n  /**\n   * A set of popper options and props passed directly to react-popper's Popper component.\n   */\n  popperConfig: _propTypes.default.object,\n\n  /**\n   * Override the default event used by RootCloseWrapper.\n   */\n  rootCloseEvent: _propTypes.default.string,\n\n  /** @private */\n  onToggle: _propTypes.default.func,\n\n  /** @private */\n  menuRef: _propTypes.default.func,\n\n  /** @private */\n  drop: _propTypes.default.string,\n\n  /** @private */\n  toggleNode: _propTypes.default.any\n};\nDropdownMenu.defaultProps = {\n  usePopper: true\n};\nvar DecoratedDropdownMenu = (0, _mapContextToProps.default)(_DropdownContext.default, function (_ref2, props) {\n  var show = _ref2.show,\n      alignEnd = _ref2.alignEnd,\n      toggle = _ref2.toggle,\n      drop = _ref2.drop,\n      menuRef = _ref2.menuRef,\n      toggleNode = _ref2.toggleNode;\n  return {\n    drop: drop,\n    menuRef: menuRef,\n    toggleNode: toggleNode,\n    onToggle: toggle,\n    show: show == null ? props.show : show,\n    alignEnd: alignEnd == null ? props.alignEnd : alignEnd\n  };\n}, DropdownMenu);\nvar _default = DecoratedDropdownMenu;\nexports.default = _default;\nmodule.exports = exports.default;\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(0));\n\nvar _react = _interopRequireDefault(__webpack_require__(1));\n\nvar _DropdownContext = _interopRequireDefault(__webpack_require__(29));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nvar propTypes = {\n  /**\n   * A render prop that returns a Toggle element. The `props`\n   * argument should spread through to **a component that can accept a ref**. Use\n   * the `onToggle` argument to toggle the menu open or closed\n   *\n   * @type {Function ({\n   *   show: boolean,\n   *   toggle: (show: boolean) => void,\n   *   props: {\n   *     ref: (?HTMLElement) => void,\n   *     aria-haspopup: true\n   *     aria-expanded: boolean\n   *   },\n   * }) => React.Element}\n   */\n  children: _propTypes.default.func.isRequired\n};\n\nfunction DropdownToggle(_ref) {\n  var children = _ref.children;\n  return _react.default.createElement(_DropdownContext.default.Consumer, null, function (_ref2) {\n    var show = _ref2.show,\n        toggle = _ref2.toggle,\n        toggleRef = _ref2.toggleRef;\n    return children({\n      show: show,\n      toggle: toggle,\n      props: {\n        ref: toggleRef,\n        'aria-haspopup': true,\n        'aria-expanded': !!show\n      }\n    });\n  });\n}\n\nDropdownToggle.displayName = 'ReactOverlaysDropdownToggle';\nDropdownToggle.propTypes = propTypes;\nvar _default = DropdownToggle;\nexports.default = _default;\nmodule.exports = exports.default;\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _class = _interopRequireDefault(__webpack_require__(80));\n\nvar _style = _interopRequireDefault(__webpack_require__(11));\n\nvar _scrollbarSize = _interopRequireDefault(__webpack_require__(18));\n\nvar _isOverflowing = _interopRequireDefault(__webpack_require__(83));\n\nvar _manageAriaHidden = __webpack_require__(85);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction findIndexOf(arr, cb) {\n  var idx = -1;\n  arr.some(function (d, i) {\n    if (cb(d, i)) {\n      idx = i;\n      return true;\n    }\n  });\n  return idx;\n}\n/**\n * Proper state managment for containers and the modals in those containers.\n *\n * @internal Used by the Modal to ensure proper styling of containers.\n */\n\n\nvar ModalManager =\n/*#__PURE__*/\nfunction () {\n  function ModalManager(_temp) {\n    var _ref = _temp === void 0 ? {} : _temp,\n        _ref$hideSiblingNodes = _ref.hideSiblingNodes,\n        hideSiblingNodes = _ref$hideSiblingNodes === void 0 ? true : _ref$hideSiblingNodes,\n        _ref$handleContainerO = _ref.handleContainerOverflow,\n        handleContainerOverflow = _ref$handleContainerO === void 0 ? true : _ref$handleContainerO;\n\n    this.hideSiblingNodes = hideSiblingNodes;\n    this.handleContainerOverflow = handleContainerOverflow;\n    this.modals = [];\n    this.containers = [];\n    this.data = [];\n    this.scrollbarSize = (0, _scrollbarSize.default)();\n  }\n\n  var _proto = ModalManager.prototype;\n\n  _proto.isContainerOverflowing = function isContainerOverflowing(modal) {\n    var data = this.data[this.containerIndexFromModal(modal)];\n    return data && data.overflowing;\n  };\n\n  _proto.containerIndexFromModal = function containerIndexFromModal(modal) {\n    return findIndexOf(this.data, function (d) {\n      return d.modals.indexOf(modal) !== -1;\n    });\n  };\n\n  _proto.setContainerStyle = function setContainerStyle(containerState, container) {\n    var style = {\n      overflow: 'hidden' // we are only interested in the actual `style` here\n      // becasue we will override it\n\n    };\n    containerState.style = {\n      overflow: container.style.overflow,\n      paddingRight: container.style.paddingRight\n    };\n\n    if (containerState.overflowing) {\n      // use computed style, here to get the real padding\n      // to add our scrollbar width\n      style.paddingRight = parseInt((0, _style.default)(container, 'paddingRight') || 0, 10) + this.scrollbarSize + \"px\";\n    }\n\n    (0, _style.default)(container, style);\n  };\n\n  _proto.removeContainerStyle = function removeContainerStyle(containerState, container) {\n    var style = containerState.style;\n    Object.keys(style).forEach(function (key) {\n      container.style[key] = style[key];\n    });\n  };\n\n  _proto.add = function add(modal, container, className) {\n    var modalIdx = this.modals.indexOf(modal);\n    var containerIdx = this.containers.indexOf(container);\n\n    if (modalIdx !== -1) {\n      return modalIdx;\n    }\n\n    modalIdx = this.modals.length;\n    this.modals.push(modal);\n\n    if (this.hideSiblingNodes) {\n      (0, _manageAriaHidden.hideSiblings)(container, modal);\n    }\n\n    if (containerIdx !== -1) {\n      this.data[containerIdx].modals.push(modal);\n      return modalIdx;\n    }\n\n    var data = {\n      modals: [modal],\n      //right now only the first modal of a container will have its classes applied\n      classes: className ? className.split(/\\s+/) : [],\n      overflowing: (0, _isOverflowing.default)(container)\n    };\n\n    if (this.handleContainerOverflow) {\n      this.setContainerStyle(data, container);\n    }\n\n    data.classes.forEach(_class.default.addClass.bind(null, container));\n    this.containers.push(container);\n    this.data.push(data);\n    return modalIdx;\n  };\n\n  _proto.remove = function remove(modal) {\n    var modalIdx = this.modals.indexOf(modal);\n\n    if (modalIdx === -1) {\n      return;\n    }\n\n    var containerIdx = this.containerIndexFromModal(modal);\n    var data = this.data[containerIdx];\n    var container = this.containers[containerIdx];\n    data.modals.splice(data.modals.indexOf(modal), 1);\n    this.modals.splice(modalIdx, 1); // if that was the last modal in a container,\n    // clean up the container\n\n    if (data.modals.length === 0) {\n      data.classes.forEach(_class.default.removeClass.bind(null, container));\n\n      if (this.handleContainerOverflow) {\n        this.removeContainerStyle(data, container);\n      }\n\n      if (this.hideSiblingNodes) {\n        (0, _manageAriaHidden.showSiblings)(container, modal);\n      }\n\n      this.containers.splice(containerIdx, 1);\n      this.data.splice(containerIdx, 1);\n    } else if (this.hideSiblingNodes) {\n      //otherwise make sure the next top modal is visible to a SR\n      var _data$modals = data.modals[data.modals.length - 1],\n          backdrop = _data$modals.backdrop,\n          dialog = _data$modals.dialog;\n      (0, _manageAriaHidden.ariaHidden)(false, dialog);\n      (0, _manageAriaHidden.ariaHidden)(false, backdrop);\n    }\n  };\n\n  _proto.isTopModal = function isTopModal(modal) {\n    return !!this.modals.length && this.modals[this.modals.length - 1] === modal;\n  };\n\n  return ModalManager;\n}();\n\nvar _default = ModalManager;\nexports.default = _default;\nmodule.exports = exports.default;\n\n/***/ }),\n/* 38 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.15.0\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\nvar longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nvar timeoutDuration = 0;\n\nfor (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n  if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n    timeoutDuration = 1;\n    break;\n  }\n}\n\nfunction microtaskDebounce(fn) {\n  var called = false;\n  return function () {\n    if (called) {\n      return;\n    }\n\n    called = true;\n    window.Promise.resolve().then(function () {\n      called = false;\n      fn();\n    });\n  };\n}\n\nfunction taskDebounce(fn) {\n  var scheduled = false;\n  return function () {\n    if (!scheduled) {\n      scheduled = true;\n      setTimeout(function () {\n        scheduled = false;\n        fn();\n      }, timeoutDuration);\n    }\n  };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\n\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\n\nfunction isFunction(functionToCheck) {\n  var getType = {};\n  return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\n\n\nfunction getStyleComputedProperty(element, property) {\n  if (element.nodeType !== 1) {\n    return [];\n  } // NOTE: 1 DOM access here\n\n\n  var window = element.ownerDocument.defaultView;\n  var css = window.getComputedStyle(element, null);\n  return property ? css[property] : css;\n}\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\n\n\nfunction getParentNode(element) {\n  if (element.nodeName === 'HTML') {\n    return element;\n  }\n\n  return element.parentNode || element.host;\n}\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\n\n\nfunction getScrollParent(element) {\n  // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n  if (!element) {\n    return document.body;\n  }\n\n  switch (element.nodeName) {\n    case 'HTML':\n    case 'BODY':\n      return element.ownerDocument.body;\n\n    case '#document':\n      return element.body;\n  } // Firefox want us to check `-x` and `-y` variations as well\n\n\n  var _getStyleComputedProp = getStyleComputedProperty(element),\n      overflow = _getStyleComputedProp.overflow,\n      overflowX = _getStyleComputedProp.overflowX,\n      overflowY = _getStyleComputedProp.overflowY;\n\n  if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n    return element;\n  }\n\n  return getScrollParent(getParentNode(element));\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\n\nfunction isIE(version) {\n  if (version === 11) {\n    return isIE11;\n  }\n\n  if (version === 10) {\n    return isIE10;\n  }\n\n  return isIE11 || isIE10;\n}\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\n\n\nfunction getOffsetParent(element) {\n  if (!element) {\n    return document.documentElement;\n  }\n\n  var noOffsetParent = isIE(10) ? document.body : null; // NOTE: 1 DOM access here\n\n  var offsetParent = element.offsetParent || null; // Skip hidden elements which don't have an offsetParent\n\n  while (offsetParent === noOffsetParent && element.nextElementSibling) {\n    offsetParent = (element = element.nextElementSibling).offsetParent;\n  }\n\n  var nodeName = offsetParent && offsetParent.nodeName;\n\n  if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n    return element ? element.ownerDocument.documentElement : document.documentElement;\n  } // .offsetParent will return the closest TH, TD or TABLE in case\n  // no offsetParent is present, I hate this job...\n\n\n  if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n    return getOffsetParent(offsetParent);\n  }\n\n  return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n  var nodeName = element.nodeName;\n\n  if (nodeName === 'BODY') {\n    return false;\n  }\n\n  return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\n\n\nfunction getRoot(node) {\n  if (node.parentNode !== null) {\n    return getRoot(node.parentNode);\n  }\n\n  return node;\n}\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\n\n\nfunction findCommonOffsetParent(element1, element2) {\n  // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n  if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n    return document.documentElement;\n  } // Here we make sure to give as \"start\" the element that comes first in the DOM\n\n\n  var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n  var start = order ? element1 : element2;\n  var end = order ? element2 : element1; // Get common ancestor container\n\n  var range = document.createRange();\n  range.setStart(start, 0);\n  range.setEnd(end, 0);\n  var commonAncestorContainer = range.commonAncestorContainer; // Both nodes are inside #document\n\n  if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n    if (isOffsetContainer(commonAncestorContainer)) {\n      return commonAncestorContainer;\n    }\n\n    return getOffsetParent(commonAncestorContainer);\n  } // one of the nodes is inside shadowDOM, find which one\n\n\n  var element1root = getRoot(element1);\n\n  if (element1root.host) {\n    return findCommonOffsetParent(element1root.host, element2);\n  } else {\n    return findCommonOffsetParent(element1, getRoot(element2).host);\n  }\n}\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\n\n\nfunction getScroll(element) {\n  var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n  var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n  var nodeName = element.nodeName;\n\n  if (nodeName === 'BODY' || nodeName === 'HTML') {\n    var html = element.ownerDocument.documentElement;\n    var scrollingElement = element.ownerDocument.scrollingElement || html;\n    return scrollingElement[upperSide];\n  }\n\n  return element[upperSide];\n}\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\n\n\nfunction includeScroll(rect, element) {\n  var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n  var scrollTop = getScroll(element, 'top');\n  var scrollLeft = getScroll(element, 'left');\n  var modifier = subtract ? -1 : 1;\n  rect.top += scrollTop * modifier;\n  rect.bottom += scrollTop * modifier;\n  rect.left += scrollLeft * modifier;\n  rect.right += scrollLeft * modifier;\n  return rect;\n}\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\n\nfunction getBordersSize(styles, axis) {\n  var sideA = axis === 'x' ? 'Left' : 'Top';\n  var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n  return parseFloat(styles['border' + sideA + 'Width'], 10) + parseFloat(styles['border' + sideB + 'Width'], 10);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n  return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\n\nfunction getWindowSizes(document) {\n  var body = document.body;\n  var html = document.documentElement;\n  var computedStyle = isIE(10) && getComputedStyle(html);\n  return {\n    height: getSize('Height', body, html, computedStyle),\n    width: getSize('Width', body, html, computedStyle)\n  };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n};\n\nvar createClass = function () {\n  function defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  return function (Constructor, protoProps, staticProps) {\n    if (protoProps) defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) defineProperties(Constructor, staticProps);\n    return Constructor;\n  };\n}();\n\nvar defineProperty = function (obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  return target;\n};\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\n\n\nfunction getClientRect(offsets) {\n  return _extends({}, offsets, {\n    right: offsets.left + offsets.width,\n    bottom: offsets.top + offsets.height\n  });\n}\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\n\n\nfunction getBoundingClientRect(element) {\n  var rect = {}; // IE10 10 FIX: Please, don't ask, the element isn't\n  // considered in DOM in some circumstances...\n  // This isn't reproducible in IE10 compatibility mode of IE11\n\n  try {\n    if (isIE(10)) {\n      rect = element.getBoundingClientRect();\n      var scrollTop = getScroll(element, 'top');\n      var scrollLeft = getScroll(element, 'left');\n      rect.top += scrollTop;\n      rect.left += scrollLeft;\n      rect.bottom += scrollTop;\n      rect.right += scrollLeft;\n    } else {\n      rect = element.getBoundingClientRect();\n    }\n  } catch (e) {}\n\n  var result = {\n    left: rect.left,\n    top: rect.top,\n    width: rect.right - rect.left,\n    height: rect.bottom - rect.top\n  }; // subtract scrollbar size from sizes\n\n  var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n  var width = sizes.width || element.clientWidth || result.right - result.left;\n  var height = sizes.height || element.clientHeight || result.bottom - result.top;\n  var horizScrollbar = element.offsetWidth - width;\n  var vertScrollbar = element.offsetHeight - height; // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n  // we make this check conditional for performance reasons\n\n  if (horizScrollbar || vertScrollbar) {\n    var styles = getStyleComputedProperty(element);\n    horizScrollbar -= getBordersSize(styles, 'x');\n    vertScrollbar -= getBordersSize(styles, 'y');\n    result.width -= horizScrollbar;\n    result.height -= vertScrollbar;\n  }\n\n  return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n  var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n  var isIE10 = isIE(10);\n  var isHTML = parent.nodeName === 'HTML';\n  var childrenRect = getBoundingClientRect(children);\n  var parentRect = getBoundingClientRect(parent);\n  var scrollParent = getScrollParent(children);\n  var styles = getStyleComputedProperty(parent);\n  var borderTopWidth = parseFloat(styles.borderTopWidth, 10);\n  var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10); // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n\n  if (fixedPosition && isHTML) {\n    parentRect.top = Math.max(parentRect.top, 0);\n    parentRect.left = Math.max(parentRect.left, 0);\n  }\n\n  var offsets = getClientRect({\n    top: childrenRect.top - parentRect.top - borderTopWidth,\n    left: childrenRect.left - parentRect.left - borderLeftWidth,\n    width: childrenRect.width,\n    height: childrenRect.height\n  });\n  offsets.marginTop = 0;\n  offsets.marginLeft = 0; // Subtract margins of documentElement in case it's being used as parent\n  // we do this only on HTML because it's the only element that behaves\n  // differently when margins are applied to it. The margins are included in\n  // the box of the documentElement, in the other cases not.\n\n  if (!isIE10 && isHTML) {\n    var marginTop = parseFloat(styles.marginTop, 10);\n    var marginLeft = parseFloat(styles.marginLeft, 10);\n    offsets.top -= borderTopWidth - marginTop;\n    offsets.bottom -= borderTopWidth - marginTop;\n    offsets.left -= borderLeftWidth - marginLeft;\n    offsets.right -= borderLeftWidth - marginLeft; // Attach marginTop and marginLeft because in some circumstances we may need them\n\n    offsets.marginTop = marginTop;\n    offsets.marginLeft = marginLeft;\n  }\n\n  if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n    offsets = includeScroll(offsets, parent);\n  }\n\n  return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n  var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n  var html = element.ownerDocument.documentElement;\n  var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n  var width = Math.max(html.clientWidth, window.innerWidth || 0);\n  var height = Math.max(html.clientHeight, window.innerHeight || 0);\n  var scrollTop = !excludeScroll ? getScroll(html) : 0;\n  var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n  var offset = {\n    top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n    left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n    width: width,\n    height: height\n  };\n  return getClientRect(offset);\n}\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\n\n\nfunction isFixed(element) {\n  var nodeName = element.nodeName;\n\n  if (nodeName === 'BODY' || nodeName === 'HTML') {\n    return false;\n  }\n\n  if (getStyleComputedProperty(element, 'position') === 'fixed') {\n    return true;\n  }\n\n  var parentNode = getParentNode(element);\n\n  if (!parentNode) {\n    return false;\n  }\n\n  return isFixed(parentNode);\n}\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\n\nfunction getFixedPositionOffsetParent(element) {\n  // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n  if (!element || !element.parentElement || isIE()) {\n    return document.documentElement;\n  }\n\n  var el = element.parentElement;\n\n  while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n    el = el.parentElement;\n  }\n\n  return el || document.documentElement;\n}\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\n\n\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n  var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; // NOTE: 1 DOM access here\n\n  var boundaries = {\n    top: 0,\n    left: 0\n  };\n  var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference); // Handle viewport case\n\n  if (boundariesElement === 'viewport') {\n    boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n  } else {\n    // Handle other cases based on DOM element used as boundaries\n    var boundariesNode = void 0;\n\n    if (boundariesElement === 'scrollParent') {\n      boundariesNode = getScrollParent(getParentNode(reference));\n\n      if (boundariesNode.nodeName === 'BODY') {\n        boundariesNode = popper.ownerDocument.documentElement;\n      }\n    } else if (boundariesElement === 'window') {\n      boundariesNode = popper.ownerDocument.documentElement;\n    } else {\n      boundariesNode = boundariesElement;\n    }\n\n    var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition); // In case of HTML, we need a different computation\n\n    if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n      var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n          height = _getWindowSizes.height,\n          width = _getWindowSizes.width;\n\n      boundaries.top += offsets.top - offsets.marginTop;\n      boundaries.bottom = height + offsets.top;\n      boundaries.left += offsets.left - offsets.marginLeft;\n      boundaries.right = width + offsets.left;\n    } else {\n      // for all the other DOM elements, this one is good\n      boundaries = offsets;\n    }\n  } // Add paddings\n\n\n  padding = padding || 0;\n  var isPaddingNumber = typeof padding === 'number';\n  boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n  boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n  boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n  boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n  return boundaries;\n}\n\nfunction getArea(_ref) {\n  var width = _ref.width,\n      height = _ref.height;\n  return width * height;\n}\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n  var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n  if (placement.indexOf('auto') === -1) {\n    return placement;\n  }\n\n  var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n  var rects = {\n    top: {\n      width: boundaries.width,\n      height: refRect.top - boundaries.top\n    },\n    right: {\n      width: boundaries.right - refRect.right,\n      height: boundaries.height\n    },\n    bottom: {\n      width: boundaries.width,\n      height: boundaries.bottom - refRect.bottom\n    },\n    left: {\n      width: refRect.left - boundaries.left,\n      height: boundaries.height\n    }\n  };\n  var sortedAreas = Object.keys(rects).map(function (key) {\n    return _extends({\n      key: key\n    }, rects[key], {\n      area: getArea(rects[key])\n    });\n  }).sort(function (a, b) {\n    return b.area - a.area;\n  });\n  var filteredAreas = sortedAreas.filter(function (_ref2) {\n    var width = _ref2.width,\n        height = _ref2.height;\n    return width >= popper.clientWidth && height >= popper.clientHeight;\n  });\n  var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n  var variation = placement.split('-')[1];\n  return computedPlacement + (variation ? '-' + variation : '');\n}\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\n\n\nfunction getReferenceOffsets(state, popper, reference) {\n  var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n  var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);\n  return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\n\n\nfunction getOuterSizes(element) {\n  var window = element.ownerDocument.defaultView;\n  var styles = window.getComputedStyle(element);\n  var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n  var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n  var result = {\n    width: element.offsetWidth + y,\n    height: element.offsetHeight + x\n  };\n  return result;\n}\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\n\n\nfunction getOppositePlacement(placement) {\n  var hash = {\n    left: 'right',\n    right: 'left',\n    bottom: 'top',\n    top: 'bottom'\n  };\n  return placement.replace(/left|right|bottom|top/g, function (matched) {\n    return hash[matched];\n  });\n}\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\n\n\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n  placement = placement.split('-')[0]; // Get popper node sizes\n\n  var popperRect = getOuterSizes(popper); // Add position, width and height to our offsets object\n\n  var popperOffsets = {\n    width: popperRect.width,\n    height: popperRect.height\n  }; // depending by the popper placement we have to compute its offsets slightly differently\n\n  var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n  var mainSide = isHoriz ? 'top' : 'left';\n  var secondarySide = isHoriz ? 'left' : 'top';\n  var measurement = isHoriz ? 'height' : 'width';\n  var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n  popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n\n  if (placement === secondarySide) {\n    popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n  } else {\n    popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n  }\n\n  return popperOffsets;\n}\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\n\n\nfunction find(arr, check) {\n  // use native find if supported\n  if (Array.prototype.find) {\n    return arr.find(check);\n  } // use `filter` to obtain the same behavior of `find`\n\n\n  return arr.filter(check)[0];\n}\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\n\n\nfunction findIndex(arr, prop, value) {\n  // use native findIndex if supported\n  if (Array.prototype.findIndex) {\n    return arr.findIndex(function (cur) {\n      return cur[prop] === value;\n    });\n  } // use `find` + `indexOf` if `findIndex` isn't supported\n\n\n  var match = find(arr, function (obj) {\n    return obj[prop] === value;\n  });\n  return arr.indexOf(match);\n}\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\n\n\nfunction runModifiers(modifiers, data, ends) {\n  var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n  modifiersToRun.forEach(function (modifier) {\n    if (modifier['function']) {\n      // eslint-disable-line dot-notation\n      console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n    }\n\n    var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n\n    if (modifier.enabled && isFunction(fn)) {\n      // Add properties to offsets to make them a complete clientRect object\n      // we do this before each modifier to make sure the previous one doesn't\n      // mess with these values\n      data.offsets.popper = getClientRect(data.offsets.popper);\n      data.offsets.reference = getClientRect(data.offsets.reference);\n      data = fn(data, modifier);\n    }\n  });\n  return data;\n}\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\n\n\nfunction update() {\n  // if popper is destroyed, don't perform any further update\n  if (this.state.isDestroyed) {\n    return;\n  }\n\n  var data = {\n    instance: this,\n    styles: {},\n    arrowStyles: {},\n    attributes: {},\n    flipped: false,\n    offsets: {}\n  }; // compute reference element offsets\n\n  data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed); // compute auto placement, store placement inside the data object,\n  // modifiers will be able to edit `placement` if needed\n  // and refer to originalPlacement to know the original value\n\n  data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding); // store the computed placement inside `originalPlacement`\n\n  data.originalPlacement = data.placement;\n  data.positionFixed = this.options.positionFixed; // compute the popper offsets\n\n  data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n  data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute'; // run the modifiers\n\n  data = runModifiers(this.modifiers, data); // the first `update` will call `onCreate` callback\n  // the other ones will call `onUpdate` callback\n\n  if (!this.state.isCreated) {\n    this.state.isCreated = true;\n    this.options.onCreate(data);\n  } else {\n    this.options.onUpdate(data);\n  }\n}\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\n\n\nfunction isModifierEnabled(modifiers, modifierName) {\n  return modifiers.some(function (_ref) {\n    var name = _ref.name,\n        enabled = _ref.enabled;\n    return enabled && name === modifierName;\n  });\n}\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\n\n\nfunction getSupportedPropertyName(property) {\n  var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n  var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n  for (var i = 0; i < prefixes.length; i++) {\n    var prefix = prefixes[i];\n    var toCheck = prefix ? '' + prefix + upperProp : property;\n\n    if (typeof document.body.style[toCheck] !== 'undefined') {\n      return toCheck;\n    }\n  }\n\n  return null;\n}\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\n\n\nfunction destroy() {\n  this.state.isDestroyed = true; // touch DOM only if `applyStyle` modifier is enabled\n\n  if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n    this.popper.removeAttribute('x-placement');\n    this.popper.style.position = '';\n    this.popper.style.top = '';\n    this.popper.style.left = '';\n    this.popper.style.right = '';\n    this.popper.style.bottom = '';\n    this.popper.style.willChange = '';\n    this.popper.style[getSupportedPropertyName('transform')] = '';\n  }\n\n  this.disableEventListeners(); // remove the popper if user explicity asked for the deletion on destroy\n  // do not use `remove` because IE11 doesn't support it\n\n  if (this.options.removeOnDestroy) {\n    this.popper.parentNode.removeChild(this.popper);\n  }\n\n  return this;\n}\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\n\n\nfunction getWindow(element) {\n  var ownerDocument = element.ownerDocument;\n  return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n  var isBody = scrollParent.nodeName === 'BODY';\n  var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n  target.addEventListener(event, callback, {\n    passive: true\n  });\n\n  if (!isBody) {\n    attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n  }\n\n  scrollParents.push(target);\n}\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\n\n\nfunction setupEventListeners(reference, options, state, updateBound) {\n  // Resize event listener on window\n  state.updateBound = updateBound;\n  getWindow(reference).addEventListener('resize', state.updateBound, {\n    passive: true\n  }); // Scroll event listener on scroll parents\n\n  var scrollElement = getScrollParent(reference);\n  attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n  state.scrollElement = scrollElement;\n  state.eventsEnabled = true;\n  return state;\n}\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\n\n\nfunction enableEventListeners() {\n  if (!this.state.eventsEnabled) {\n    this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n  }\n}\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\n\n\nfunction removeEventListeners(reference, state) {\n  // Remove resize event listener on window\n  getWindow(reference).removeEventListener('resize', state.updateBound); // Remove scroll event listener on scroll parents\n\n  state.scrollParents.forEach(function (target) {\n    target.removeEventListener('scroll', state.updateBound);\n  }); // Reset state\n\n  state.updateBound = null;\n  state.scrollParents = [];\n  state.scrollElement = null;\n  state.eventsEnabled = false;\n  return state;\n}\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\n\n\nfunction disableEventListeners() {\n  if (this.state.eventsEnabled) {\n    cancelAnimationFrame(this.scheduleUpdate);\n    this.state = removeEventListeners(this.reference, this.state);\n  }\n}\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\n\n\nfunction isNumeric(n) {\n  return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\n\n\nfunction setStyles(element, styles) {\n  Object.keys(styles).forEach(function (prop) {\n    var unit = ''; // add unit if the value is numeric and is one of the following\n\n    if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n      unit = 'px';\n    }\n\n    element.style[prop] = styles[prop] + unit;\n  });\n}\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\n\n\nfunction setAttributes(element, attributes) {\n  Object.keys(attributes).forEach(function (prop) {\n    var value = attributes[prop];\n\n    if (value !== false) {\n      element.setAttribute(prop, attributes[prop]);\n    } else {\n      element.removeAttribute(prop);\n    }\n  });\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\n\n\nfunction applyStyle(data) {\n  // any property present in `data.styles` will be applied to the popper,\n  // in this way we can make the 3rd party modifiers add custom styles to it\n  // Be aware, modifiers could override the properties defined in the previous\n  // lines of this modifier!\n  setStyles(data.instance.popper, data.styles); // any property present in `data.attributes` will be applied to the popper,\n  // they will be set as HTML attributes of the element\n\n  setAttributes(data.instance.popper, data.attributes); // if arrowElement is defined and arrowStyles has some properties\n\n  if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n    setStyles(data.arrowElement, data.arrowStyles);\n  }\n\n  return data;\n}\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\n\n\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n  // compute reference element offsets\n  var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed); // compute auto placement, store placement inside the data object,\n  // modifiers will be able to edit `placement` if needed\n  // and refer to originalPlacement to know the original value\n\n  var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n  popper.setAttribute('x-placement', placement); // Apply `position` to popper before anything else because\n  // without the position applied we can't guarantee correct computations\n\n  setStyles(popper, {\n    position: options.positionFixed ? 'fixed' : 'absolute'\n  });\n  return options;\n}\n/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\n\n\nfunction getRoundedOffsets(data, shouldRound) {\n  var _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n  var round = Math.round,\n      floor = Math.floor;\n\n  var noRound = function noRound(v) {\n    return v;\n  };\n\n  var referenceWidth = round(reference.width);\n  var popperWidth = round(popper.width);\n  var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n  var isVariation = data.placement.indexOf('-') !== -1;\n  var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n  var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n  var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n  var verticalToInteger = !shouldRound ? noRound : round;\n  return {\n    left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n    top: verticalToInteger(popper.top),\n    bottom: verticalToInteger(popper.bottom),\n    right: horizontalToInteger(popper.right)\n  };\n}\n\nvar isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\nfunction computeStyle(data, options) {\n  var x = options.x,\n      y = options.y;\n  var popper = data.offsets.popper; // Remove this legacy support in Popper.js v2\n\n  var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n    return modifier.name === 'applyStyle';\n  }).gpuAcceleration;\n\n  if (legacyGpuAccelerationOption !== undefined) {\n    console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n  }\n\n  var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n  var offsetParent = getOffsetParent(data.instance.popper);\n  var offsetParentRect = getBoundingClientRect(offsetParent); // Styles\n\n  var styles = {\n    position: popper.position\n  };\n  var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n  var sideA = x === 'bottom' ? 'top' : 'bottom';\n  var sideB = y === 'right' ? 'left' : 'right'; // if gpuAcceleration is set to `true` and transform is supported,\n  //  we use `translate3d` to apply the position to the popper we\n  // automatically use the supported prefixed version if needed\n\n  var prefixedProperty = getSupportedPropertyName('transform'); // now, let's make a step back and look at this code closely (wtf?)\n  // If the content of the popper grows once it's been positioned, it\n  // may happen that the popper gets misplaced because of the new content\n  // overflowing its reference element\n  // To avoid this problem, we provide two options (x and y), which allow\n  // the consumer to define the offset origin.\n  // If we position a popper on top of a reference element, we can set\n  // `x` to `top` to make the popper grow towards its top instead of\n  // its bottom.\n\n  var left = void 0,\n      top = void 0;\n\n  if (sideA === 'bottom') {\n    // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\n    // and not the bottom of the html element\n    if (offsetParent.nodeName === 'HTML') {\n      top = -offsetParent.clientHeight + offsets.bottom;\n    } else {\n      top = -offsetParentRect.height + offsets.bottom;\n    }\n  } else {\n    top = offsets.top;\n  }\n\n  if (sideB === 'right') {\n    if (offsetParent.nodeName === 'HTML') {\n      left = -offsetParent.clientWidth + offsets.right;\n    } else {\n      left = -offsetParentRect.width + offsets.right;\n    }\n  } else {\n    left = offsets.left;\n  }\n\n  if (gpuAcceleration && prefixedProperty) {\n    styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n    styles[sideA] = 0;\n    styles[sideB] = 0;\n    styles.willChange = 'transform';\n  } else {\n    // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n    var invertTop = sideA === 'bottom' ? -1 : 1;\n    var invertLeft = sideB === 'right' ? -1 : 1;\n    styles[sideA] = top * invertTop;\n    styles[sideB] = left * invertLeft;\n    styles.willChange = sideA + ', ' + sideB;\n  } // Attributes\n\n\n  var attributes = {\n    'x-placement': data.placement\n  }; // Update `data` attributes, styles and arrowStyles\n\n  data.attributes = _extends({}, attributes, data.attributes);\n  data.styles = _extends({}, styles, data.styles);\n  data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n  return data;\n}\n/**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\n\n\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n  var requesting = find(modifiers, function (_ref) {\n    var name = _ref.name;\n    return name === requestingName;\n  });\n  var isRequired = !!requesting && modifiers.some(function (modifier) {\n    return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n  });\n\n  if (!isRequired) {\n    var _requesting = '`' + requestingName + '`';\n\n    var requested = '`' + requestedName + '`';\n    console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n  }\n\n  return isRequired;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction arrow(data, options) {\n  var _data$offsets$arrow; // arrow depends on keepTogether in order to work\n\n\n  if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n    return data;\n  }\n\n  var arrowElement = options.element; // if arrowElement is a string, suppose it's a CSS selector\n\n  if (typeof arrowElement === 'string') {\n    arrowElement = data.instance.popper.querySelector(arrowElement); // if arrowElement is not found, don't run the modifier\n\n    if (!arrowElement) {\n      return data;\n    }\n  } else {\n    // if the arrowElement isn't a query selector we must check that the\n    // provided DOM node is child of its popper node\n    if (!data.instance.popper.contains(arrowElement)) {\n      console.warn('WARNING: `arrow.element` must be child of its popper element!');\n      return data;\n    }\n  }\n\n  var placement = data.placement.split('-')[0];\n  var _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n  var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n  var len = isVertical ? 'height' : 'width';\n  var sideCapitalized = isVertical ? 'Top' : 'Left';\n  var side = sideCapitalized.toLowerCase();\n  var altSide = isVertical ? 'left' : 'top';\n  var opSide = isVertical ? 'bottom' : 'right';\n  var arrowElementSize = getOuterSizes(arrowElement)[len]; //\n  // extends keepTogether behavior making sure the popper and its\n  // reference have enough pixels in conjunction\n  //\n  // top/left side\n\n  if (reference[opSide] - arrowElementSize < popper[side]) {\n    data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n  } // bottom/right side\n\n\n  if (reference[side] + arrowElementSize > popper[opSide]) {\n    data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n  }\n\n  data.offsets.popper = getClientRect(data.offsets.popper); // compute center of the popper\n\n  var center = reference[side] + reference[len] / 2 - arrowElementSize / 2; // Compute the sideValue using the updated popper offsets\n  // take popper margin in account because we don't have this info available\n\n  var css = getStyleComputedProperty(data.instance.popper);\n  var popperMarginSide = parseFloat(css['margin' + sideCapitalized], 10);\n  var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width'], 10);\n  var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide; // prevent arrowElement from being placed not contiguously to its popper\n\n  sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n  data.arrowElement = arrowElement;\n  data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n  return data;\n}\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\n\n\nfunction getOppositeVariation(variation) {\n  if (variation === 'end') {\n    return 'start';\n  } else if (variation === 'start') {\n    return 'end';\n  }\n\n  return variation;\n}\n/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\n\n\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start']; // Get rid of `auto` `auto-start` and `auto-end`\n\nvar validPlacements = placements.slice(3);\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\n\nfunction clockwise(placement) {\n  var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n  var index = validPlacements.indexOf(placement);\n  var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n  return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n  FLIP: 'flip',\n  CLOCKWISE: 'clockwise',\n  COUNTERCLOCKWISE: 'counterclockwise'\n};\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\nfunction flip(data, options) {\n  // if `inner` modifier is enabled, we can't use the `flip` modifier\n  if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n    return data;\n  }\n\n  if (data.flipped && data.placement === data.originalPlacement) {\n    // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n    return data;\n  }\n\n  var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n  var placement = data.placement.split('-')[0];\n  var placementOpposite = getOppositePlacement(placement);\n  var variation = data.placement.split('-')[1] || '';\n  var flipOrder = [];\n\n  switch (options.behavior) {\n    case BEHAVIORS.FLIP:\n      flipOrder = [placement, placementOpposite];\n      break;\n\n    case BEHAVIORS.CLOCKWISE:\n      flipOrder = clockwise(placement);\n      break;\n\n    case BEHAVIORS.COUNTERCLOCKWISE:\n      flipOrder = clockwise(placement, true);\n      break;\n\n    default:\n      flipOrder = options.behavior;\n  }\n\n  flipOrder.forEach(function (step, index) {\n    if (placement !== step || flipOrder.length === index + 1) {\n      return data;\n    }\n\n    placement = data.placement.split('-')[0];\n    placementOpposite = getOppositePlacement(placement);\n    var popperOffsets = data.offsets.popper;\n    var refOffsets = data.offsets.reference; // using floor because the reference offsets may contain decimals we are not going to consider here\n\n    var floor = Math.floor;\n    var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n    var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n    var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n    var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n    var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n    var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom; // flip the variation if required\n\n    var isVertical = ['top', 'bottom'].indexOf(placement) !== -1; // flips variation if reference element overflows boundaries\n\n    var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom); // flips variation if popper content overflows boundaries\n\n    var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);\n    var flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n    if (overlapsRef || overflowsBoundaries || flippedVariation) {\n      // this boolean to detect any flip loop\n      data.flipped = true;\n\n      if (overlapsRef || overflowsBoundaries) {\n        placement = flipOrder[index + 1];\n      }\n\n      if (flippedVariation) {\n        variation = getOppositeVariation(variation);\n      }\n\n      data.placement = placement + (variation ? '-' + variation : ''); // this object contains `position`, we want to preserve it along with\n      // any additional property we may add in the future\n\n      data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n      data = runModifiers(data.instance.modifiers, data, 'flip');\n    }\n  });\n  return data;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction keepTogether(data) {\n  var _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n  var placement = data.placement.split('-')[0];\n  var floor = Math.floor;\n  var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n  var side = isVertical ? 'right' : 'bottom';\n  var opSide = isVertical ? 'left' : 'top';\n  var measurement = isVertical ? 'width' : 'height';\n\n  if (popper[side] < floor(reference[opSide])) {\n    data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n  }\n\n  if (popper[opSide] > floor(reference[side])) {\n    data.offsets.popper[opSide] = floor(reference[side]);\n  }\n\n  return data;\n}\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\n\n\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n  // separate value from unit\n  var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n  var value = +split[1];\n  var unit = split[2]; // If it's not a number it's an operator, I guess\n\n  if (!value) {\n    return str;\n  }\n\n  if (unit.indexOf('%') === 0) {\n    var element = void 0;\n\n    switch (unit) {\n      case '%p':\n        element = popperOffsets;\n        break;\n\n      case '%':\n      case '%r':\n      default:\n        element = referenceOffsets;\n    }\n\n    var rect = getClientRect(element);\n    return rect[measurement] / 100 * value;\n  } else if (unit === 'vh' || unit === 'vw') {\n    // if is a vh or vw, we calculate the size based on the viewport\n    var size = void 0;\n\n    if (unit === 'vh') {\n      size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n    } else {\n      size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n    }\n\n    return size / 100 * value;\n  } else {\n    // if is an explicit pixel unit, we get rid of the unit and keep the value\n    // if is an implicit unit, it's px, and we return just the value\n    return value;\n  }\n}\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\n\n\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n  var offsets = [0, 0]; // Use height if placement is left or right and index is 0 otherwise use width\n  // in this way the first offset will use an axis and the second one\n  // will use the other one\n\n  var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1; // Split the offset string to obtain a list of values and operands\n  // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n\n  var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n    return frag.trim();\n  }); // Detect if the offset string contains a pair of values or a single one\n  // they could be separated by comma or space\n\n  var divider = fragments.indexOf(find(fragments, function (frag) {\n    return frag.search(/,|\\s/) !== -1;\n  }));\n\n  if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n    console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n  } // If divider is found, we divide the list of values and operands to divide\n  // them by ofset X and Y.\n\n\n  var splitRegex = /\\s*,\\s*|\\s+/;\n  var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments]; // Convert the values with units to absolute pixels to allow our computations\n\n  ops = ops.map(function (op, index) {\n    // Most of the units rely on the orientation of the popper\n    var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n    var mergeWithPrevious = false;\n    return op // This aggregates any `+` or `-` sign that aren't considered operators\n    // e.g.: 10 + +5 => [10, +, +5]\n    .reduce(function (a, b) {\n      if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n        a[a.length - 1] = b;\n        mergeWithPrevious = true;\n        return a;\n      } else if (mergeWithPrevious) {\n        a[a.length - 1] += b;\n        mergeWithPrevious = false;\n        return a;\n      } else {\n        return a.concat(b);\n      }\n    }, []) // Here we convert the string values into number values (in px)\n    .map(function (str) {\n      return toValue(str, measurement, popperOffsets, referenceOffsets);\n    });\n  }); // Loop trough the offsets arrays and execute the operations\n\n  ops.forEach(function (op, index) {\n    op.forEach(function (frag, index2) {\n      if (isNumeric(frag)) {\n        offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n      }\n    });\n  });\n  return offsets;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction offset(data, _ref) {\n  var offset = _ref.offset;\n  var placement = data.placement,\n      _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n  var basePlacement = placement.split('-')[0];\n  var offsets = void 0;\n\n  if (isNumeric(+offset)) {\n    offsets = [+offset, 0];\n  } else {\n    offsets = parseOffset(offset, popper, reference, basePlacement);\n  }\n\n  if (basePlacement === 'left') {\n    popper.top += offsets[0];\n    popper.left -= offsets[1];\n  } else if (basePlacement === 'right') {\n    popper.top += offsets[0];\n    popper.left += offsets[1];\n  } else if (basePlacement === 'top') {\n    popper.left += offsets[0];\n    popper.top -= offsets[1];\n  } else if (basePlacement === 'bottom') {\n    popper.left += offsets[0];\n    popper.top += offsets[1];\n  }\n\n  data.popper = popper;\n  return data;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction preventOverflow(data, options) {\n  var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper); // If offsetParent is the reference element, we really want to\n  // go one step up and use the next offsetParent as reference to\n  // avoid to make this modifier completely useless and look like broken\n\n  if (data.instance.reference === boundariesElement) {\n    boundariesElement = getOffsetParent(boundariesElement);\n  } // NOTE: DOM access here\n  // resets the popper's position so that the document size can be calculated excluding\n  // the size of the popper element itself\n\n\n  var transformProp = getSupportedPropertyName('transform');\n  var popperStyles = data.instance.popper.style; // assignment to help minification\n\n  var top = popperStyles.top,\n      left = popperStyles.left,\n      transform = popperStyles[transformProp];\n  popperStyles.top = '';\n  popperStyles.left = '';\n  popperStyles[transformProp] = '';\n  var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed); // NOTE: DOM access here\n  // restores the original style properties after the offsets have been computed\n\n  popperStyles.top = top;\n  popperStyles.left = left;\n  popperStyles[transformProp] = transform;\n  options.boundaries = boundaries;\n  var order = options.priority;\n  var popper = data.offsets.popper;\n  var check = {\n    primary: function primary(placement) {\n      var value = popper[placement];\n\n      if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n        value = Math.max(popper[placement], boundaries[placement]);\n      }\n\n      return defineProperty({}, placement, value);\n    },\n    secondary: function secondary(placement) {\n      var mainSide = placement === 'right' ? 'left' : 'top';\n      var value = popper[mainSide];\n\n      if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n        value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n      }\n\n      return defineProperty({}, mainSide, value);\n    }\n  };\n  order.forEach(function (placement) {\n    var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n    popper = _extends({}, popper, check[side](placement));\n  });\n  data.offsets.popper = popper;\n  return data;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction shift(data) {\n  var placement = data.placement;\n  var basePlacement = placement.split('-')[0];\n  var shiftvariation = placement.split('-')[1]; // if shift shiftvariation is specified, run the modifier\n\n  if (shiftvariation) {\n    var _data$offsets = data.offsets,\n        reference = _data$offsets.reference,\n        popper = _data$offsets.popper;\n    var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n    var side = isVertical ? 'left' : 'top';\n    var measurement = isVertical ? 'width' : 'height';\n    var shiftOffsets = {\n      start: defineProperty({}, side, reference[side]),\n      end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n    };\n    data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n  }\n\n  return data;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction hide(data) {\n  if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n    return data;\n  }\n\n  var refRect = data.offsets.reference;\n  var bound = find(data.instance.modifiers, function (modifier) {\n    return modifier.name === 'preventOverflow';\n  }).boundaries;\n\n  if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n    // Avoid unnecessary DOM access if visibility hasn't changed\n    if (data.hide === true) {\n      return data;\n    }\n\n    data.hide = true;\n    data.attributes['x-out-of-boundaries'] = '';\n  } else {\n    // Avoid unnecessary DOM access if visibility hasn't changed\n    if (data.hide === false) {\n      return data;\n    }\n\n    data.hide = false;\n    data.attributes['x-out-of-boundaries'] = false;\n  }\n\n  return data;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction inner(data) {\n  var placement = data.placement;\n  var basePlacement = placement.split('-')[0];\n  var _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n  var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n  var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n  popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n  data.placement = getOppositePlacement(placement);\n  data.offsets.popper = getClientRect(popper);\n  return data;\n}\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\n\n\nvar modifiers = {\n  /**\n   * Modifier used to shift the popper on the start or end of its reference\n   * element.<br />\n   * It will read the variation of the `placement` property.<br />\n   * It can be one either `-end` or `-start`.\n   * @memberof modifiers\n   * @inner\n   */\n  shift: {\n    /** @prop {number} order=100 - Index used to define the order of execution */\n    order: 100,\n\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n\n    /** @prop {ModifierFn} */\n    fn: shift\n  },\n\n  /**\n   * The `offset` modifier can shift your popper on both its axis.\n   *\n   * It accepts the following units:\n   * - `px` or unit-less, interpreted as pixels\n   * - `%` or `%r`, percentage relative to the length of the reference element\n   * - `%p`, percentage relative to the length of the popper element\n   * - `vw`, CSS viewport width unit\n   * - `vh`, CSS viewport height unit\n   *\n   * For length is intended the main axis relative to the placement of the popper.<br />\n   * This means that if the placement is `top` or `bottom`, the length will be the\n   * `width`. In case of `left` or `right`, it will be the `height`.\n   *\n   * You can provide a single value (as `Number` or `String`), or a pair of values\n   * as `String` divided by a comma or one (or more) white spaces.<br />\n   * The latter is a deprecated method because it leads to confusion and will be\n   * removed in v2.<br />\n   * Additionally, it accepts additions and subtractions between different units.\n   * Note that multiplications and divisions aren't supported.\n   *\n   * Valid examples are:\n   * ```\n   * 10\n   * '10%'\n   * '10, 10'\n   * '10%, 10'\n   * '10 + 10%'\n   * '10 - 5vh + 3%'\n   * '-10px + 5vh, 5px - 6%'\n   * ```\n   * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n   * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n   * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  offset: {\n    /** @prop {number} order=200 - Index used to define the order of execution */\n    order: 200,\n\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n\n    /** @prop {ModifierFn} */\n    fn: offset,\n\n    /** @prop {Number|String} offset=0\n     * The offset value as described in the modifier description\n     */\n    offset: 0\n  },\n\n  /**\n   * Modifier used to prevent the popper from being positioned outside the boundary.\n   *\n   * A scenario exists where the reference itself is not within the boundaries.<br />\n   * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n   * In this case we need to decide whether the popper should either:\n   *\n   * - detach from the reference and remain \"trapped\" in the boundaries, or\n   * - if it should ignore the boundary and \"escape with its reference\"\n   *\n   * When `escapeWithReference` is set to`true` and reference is completely\n   * outside its boundaries, the popper will overflow (or completely leave)\n   * the boundaries in order to remain attached to the edge of the reference.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  preventOverflow: {\n    /** @prop {number} order=300 - Index used to define the order of execution */\n    order: 300,\n\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n\n    /** @prop {ModifierFn} */\n    fn: preventOverflow,\n\n    /**\n     * @prop {Array} [priority=['left','right','top','bottom']]\n     * Popper will try to prevent overflow following these priorities by default,\n     * then, it could overflow on the left and on top of the `boundariesElement`\n     */\n    priority: ['left', 'right', 'top', 'bottom'],\n\n    /**\n     * @prop {number} padding=5\n     * Amount of pixel used to define a minimum distance between the boundaries\n     * and the popper. This makes sure the popper always has a little padding\n     * between the edges of its container\n     */\n    padding: 5,\n\n    /**\n     * @prop {String|HTMLElement} boundariesElement='scrollParent'\n     * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n     * `viewport` or any DOM element.\n     */\n    boundariesElement: 'scrollParent'\n  },\n\n  /**\n   * Modifier used to make sure the reference and its popper stay near each other\n   * without leaving any gap between the two. Especially useful when the arrow is\n   * enabled and you want to ensure that it points to its reference element.\n   * It cares only about the first axis. You can still have poppers with margin\n   * between the popper and its reference element.\n   * @memberof modifiers\n   * @inner\n   */\n  keepTogether: {\n    /** @prop {number} order=400 - Index used to define the order of execution */\n    order: 400,\n\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n\n    /** @prop {ModifierFn} */\n    fn: keepTogether\n  },\n\n  /**\n   * This modifier is used to move the `arrowElement` of the popper to make\n   * sure it is positioned between the reference element and its popper element.\n   * It will read the outer size of the `arrowElement` node to detect how many\n   * pixels of conjunction are needed.\n   *\n   * It has no effect if no `arrowElement` is provided.\n   * @memberof modifiers\n   * @inner\n   */\n  arrow: {\n    /** @prop {number} order=500 - Index used to define the order of execution */\n    order: 500,\n\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n\n    /** @prop {ModifierFn} */\n    fn: arrow,\n\n    /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n    element: '[x-arrow]'\n  },\n\n  /**\n   * Modifier used to flip the popper's placement when it starts to overlap its\n   * reference element.\n   *\n   * Requires the `preventOverflow` modifier before it in order to work.\n   *\n   * **NOTE:** this modifier will interrupt the current update cycle and will\n   * restart it if it detects the need to flip the placement.\n   * @memberof modifiers\n   * @inner\n   */\n  flip: {\n    /** @prop {number} order=600 - Index used to define the order of execution */\n    order: 600,\n\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n\n    /** @prop {ModifierFn} */\n    fn: flip,\n\n    /**\n     * @prop {String|Array} behavior='flip'\n     * The behavior used to change the popper's placement. It can be one of\n     * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n     * placements (with optional variations)\n     */\n    behavior: 'flip',\n\n    /**\n     * @prop {number} padding=5\n     * The popper will flip if it hits the edges of the `boundariesElement`\n     */\n    padding: 5,\n\n    /**\n     * @prop {String|HTMLElement} boundariesElement='viewport'\n     * The element which will define the boundaries of the popper position.\n     * The popper will never be placed outside of the defined boundaries\n     * (except if `keepTogether` is enabled)\n     */\n    boundariesElement: 'viewport',\n\n    /**\n     * @prop {Boolean} flipVariations=false\n     * The popper will switch placement variation between `-start` and `-end` when\n     * the reference element overlaps its boundaries.\n     *\n     * The original placement should have a set variation.\n     */\n    flipVariations: false,\n\n    /**\n     * @prop {Boolean} flipVariationsByContent=false\n     * The popper will switch placement variation between `-start` and `-end` when\n     * the popper element overlaps its reference boundaries.\n     *\n     * The original placement should have a set variation.\n     */\n    flipVariationsByContent: false\n  },\n\n  /**\n   * Modifier used to make the popper flow toward the inner of the reference element.\n   * By default, when this modifier is disabled, the popper will be placed outside\n   * the reference element.\n   * @memberof modifiers\n   * @inner\n   */\n  inner: {\n    /** @prop {number} order=700 - Index used to define the order of execution */\n    order: 700,\n\n    /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n    enabled: false,\n\n    /** @prop {ModifierFn} */\n    fn: inner\n  },\n\n  /**\n   * Modifier used to hide the popper when its reference element is outside of the\n   * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n   * be used to hide with a CSS selector the popper when its reference is\n   * out of boundaries.\n   *\n   * Requires the `preventOverflow` modifier before it in order to work.\n   * @memberof modifiers\n   * @inner\n   */\n  hide: {\n    /** @prop {number} order=800 - Index used to define the order of execution */\n    order: 800,\n\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n\n    /** @prop {ModifierFn} */\n    fn: hide\n  },\n\n  /**\n   * Computes the style that will be applied to the popper element to gets\n   * properly positioned.\n   *\n   * Note that this modifier will not touch the DOM, it just prepares the styles\n   * so that `applyStyle` modifier can apply it. This separation is useful\n   * in case you need to replace `applyStyle` with a custom implementation.\n   *\n   * This modifier has `850` as `order` value to maintain backward compatibility\n   * with previous versions of Popper.js. Expect the modifiers ordering method\n   * to change in future major versions of the library.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  computeStyle: {\n    /** @prop {number} order=850 - Index used to define the order of execution */\n    order: 850,\n\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n\n    /** @prop {ModifierFn} */\n    fn: computeStyle,\n\n    /**\n     * @prop {Boolean} gpuAcceleration=true\n     * If true, it uses the CSS 3D transformation to position the popper.\n     * Otherwise, it will use the `top` and `left` properties\n     */\n    gpuAcceleration: true,\n\n    /**\n     * @prop {string} [x='bottom']\n     * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n     * Change this if your popper should grow in a direction different from `bottom`\n     */\n    x: 'bottom',\n\n    /**\n     * @prop {string} [x='left']\n     * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n     * Change this if your popper should grow in a direction different from `right`\n     */\n    y: 'right'\n  },\n\n  /**\n   * Applies the computed styles to the popper element.\n   *\n   * All the DOM manipulations are limited to this modifier. This is useful in case\n   * you want to integrate Popper.js inside a framework or view library and you\n   * want to delegate all the DOM manipulations to it.\n   *\n   * Note that if you disable this modifier, you must make sure the popper element\n   * has its position set to `absolute` before Popper.js can do its work!\n   *\n   * Just disable this modifier and define your own to achieve the desired effect.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  applyStyle: {\n    /** @prop {number} order=900 - Index used to define the order of execution */\n    order: 900,\n\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n\n    /** @prop {ModifierFn} */\n    fn: applyStyle,\n\n    /** @prop {Function} */\n    onLoad: applyStyleOnLoad,\n\n    /**\n     * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n     * @prop {Boolean} gpuAcceleration=true\n     * If true, it uses the CSS 3D transformation to position the popper.\n     * Otherwise, it will use the `top` and `left` properties\n     */\n    gpuAcceleration: undefined\n  }\n};\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overridden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n *   modifiers: {\n *     preventOverflow: { enabled: false }\n *   }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\n\nvar Defaults = {\n  /**\n   * Popper's placement.\n   * @prop {Popper.placements} placement='bottom'\n   */\n  placement: 'bottom',\n\n  /**\n   * Set this to true if you want popper to position it self in 'fixed' mode\n   * @prop {Boolean} positionFixed=false\n   */\n  positionFixed: false,\n\n  /**\n   * Whether events (resize, scroll) are initially enabled.\n   * @prop {Boolean} eventsEnabled=true\n   */\n  eventsEnabled: true,\n\n  /**\n   * Set to true if you want to automatically remove the popper when\n   * you call the `destroy` method.\n   * @prop {Boolean} removeOnDestroy=false\n   */\n  removeOnDestroy: false,\n\n  /**\n   * Callback called when the popper is created.<br />\n   * By default, it is set to no-op.<br />\n   * Access Popper.js instance with `data.instance`.\n   * @prop {onCreate}\n   */\n  onCreate: function onCreate() {},\n\n  /**\n   * Callback called when the popper is updated. This callback is not called\n   * on the initialization/creation of the popper, but only on subsequent\n   * updates.<br />\n   * By default, it is set to no-op.<br />\n   * Access Popper.js instance with `data.instance`.\n   * @prop {onUpdate}\n   */\n  onUpdate: function onUpdate() {},\n\n  /**\n   * List of modifiers used to modify the offsets before they are applied to the popper.\n   * They provide most of the functionalities of Popper.js.\n   * @prop {modifiers}\n   */\n  modifiers: modifiers\n};\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n// Utils\n// Methods\n\nvar Popper = function () {\n  /**\n   * Creates a new Popper.js instance.\n   * @class Popper\n   * @param {Element|referenceObject} reference - The reference element used to position the popper\n   * @param {Element} popper - The HTML / XML element used as the popper\n   * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n   * @return {Object} instance - The generated Popper.js instance\n   */\n  function Popper(reference, popper) {\n    var _this = this;\n\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    classCallCheck(this, Popper);\n\n    this.scheduleUpdate = function () {\n      return requestAnimationFrame(_this.update);\n    }; // make update() debounced, so that it only runs at most once-per-tick\n\n\n    this.update = debounce(this.update.bind(this)); // with {} we create a new object with the options inside it\n\n    this.options = _extends({}, Popper.Defaults, options); // init state\n\n    this.state = {\n      isDestroyed: false,\n      isCreated: false,\n      scrollParents: []\n    }; // get reference and popper elements (allow jQuery wrappers)\n\n    this.reference = reference && reference.jquery ? reference[0] : reference;\n    this.popper = popper && popper.jquery ? popper[0] : popper; // Deep merge modifiers options\n\n    this.options.modifiers = {};\n    Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n      _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n    }); // Refactoring modifiers' list (Object => Array)\n\n    this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n      return _extends({\n        name: name\n      }, _this.options.modifiers[name]);\n    }) // sort the modifiers by order\n    .sort(function (a, b) {\n      return a.order - b.order;\n    }); // modifiers have the ability to execute arbitrary code when Popper.js get inited\n    // such code is executed in the same order of its modifier\n    // they could add new properties to their options configuration\n    // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n\n    this.modifiers.forEach(function (modifierOptions) {\n      if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n        modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n      }\n    }); // fire the first update to position the popper in the right place\n\n    this.update();\n    var eventsEnabled = this.options.eventsEnabled;\n\n    if (eventsEnabled) {\n      // setup event listeners, they will take care of update the position in specific situations\n      this.enableEventListeners();\n    }\n\n    this.state.eventsEnabled = eventsEnabled;\n  } // We can't use class properties because they don't get listed in the\n  // class prototype and break stuff like Sinon stubs\n\n\n  createClass(Popper, [{\n    key: 'update',\n    value: function update$$1() {\n      return update.call(this);\n    }\n  }, {\n    key: 'destroy',\n    value: function destroy$$1() {\n      return destroy.call(this);\n    }\n  }, {\n    key: 'enableEventListeners',\n    value: function enableEventListeners$$1() {\n      return enableEventListeners.call(this);\n    }\n  }, {\n    key: 'disableEventListeners',\n    value: function disableEventListeners$$1() {\n      return disableEventListeners.call(this);\n    }\n    /**\n     * Schedules an update. It will run on the next UI update available.\n     * @method scheduleUpdate\n     * @memberof Popper\n     */\n\n    /**\n     * Collection of utilities useful when writing custom modifiers.\n     * Starting from version 1.7, this method is available only if you\n     * include `popper-utils.js` before `popper.js`.\n     *\n     * **DEPRECATION**: This way to access PopperUtils is deprecated\n     * and will be removed in v2! Use the PopperUtils module directly instead.\n     * Due to the high instability of the methods contained in Utils, we can't\n     * guarantee them to follow semver. Use them at your own risk!\n     * @static\n     * @private\n     * @type {Object}\n     * @deprecated since version 1.8\n     * @member Utils\n     * @memberof Popper\n     */\n\n  }]);\n  return Popper;\n}();\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.<br />\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n/* harmony default export */ __webpack_exports__[\"a\"] = (Popper);\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(41)))\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.uncontrolledPropTypes = uncontrolledPropTypes;\nexports.isProp = isProp;\nexports.defaultKey = defaultKey;\nexports.canAcceptRef = canAcceptRef;\n\nvar _invariant = _interopRequireDefault(__webpack_require__(24));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nvar noop = function noop() {};\n\nfunction readOnlyPropType(handler, name) {\n  return function (props, propName) {\n    if (props[propName] !== undefined) {\n      if (!props[handler]) {\n        return new Error(\"You have provided a `\" + propName + \"` prop to `\" + name + \"` \" + (\"without an `\" + handler + \"` handler prop. This will render a read-only field. \") + (\"If the field should be mutable use `\" + defaultKey(propName) + \"`. \") + (\"Otherwise, set `\" + handler + \"`.\"));\n      }\n    }\n  };\n}\n\nfunction uncontrolledPropTypes(controlledValues, displayName) {\n  var propTypes = {};\n  Object.keys(controlledValues).forEach(function (prop) {\n    // add default propTypes for folks that use runtime checks\n    propTypes[defaultKey(prop)] = noop;\n\n    if (false) { var handler; }\n  });\n  return propTypes;\n}\n\nfunction isProp(props, prop) {\n  return props[prop] !== undefined;\n}\n\nfunction defaultKey(key) {\n  return 'default' + key.charAt(0).toUpperCase() + key.substr(1);\n}\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n\nfunction canAcceptRef(component) {\n  return !!component && (typeof component !== 'function' || component.prototype && component.prototype.isReactComponent);\n}\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = camelizeStyleName;\n\nvar _camelize = _interopRequireDefault(__webpack_require__(33));\n/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/camelizeStyleName.js\n */\n\n\nvar msPattern = /^-ms-/;\n\nfunction camelizeStyleName(string) {\n  return (0, _camelize.default)(string.replace(msPattern, 'ms-'));\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports) {\n\nvar g; // This works in non-strict mode\n\ng = function () {\n  return this;\n}();\n\ntry {\n  // This works if eval is allowed (see CSP)\n  g = g || new Function(\"return this\")();\n} catch (e) {\n  // This works if the window reference is available\n  if (typeof window === \"object\") g = window;\n} // g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\n\nmodule.exports = g;\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _contains = _interopRequireDefault(__webpack_require__(22));\n\nvar _listen = _interopRequireDefault(__webpack_require__(30));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(0));\n\nvar _react = _interopRequireDefault(__webpack_require__(1));\n\nvar _reactDom = _interopRequireDefault(__webpack_require__(6));\n\nvar _ownerDocument = _interopRequireDefault(__webpack_require__(45));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n\nvar escapeKeyCode = 27;\n\nvar noop = function noop() {};\n\nfunction isLeftClickEvent(event) {\n  return event.button === 0;\n}\n\nfunction isModifiedEvent(event) {\n  return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n/**\n * The `<RootCloseWrapper/>` component registers your callback on the document\n * when rendered. Powers the `<Overlay/>` component. This is used achieve modal\n * style behavior where your callback is triggered when the user tries to\n * interact with the rest of the document or hits the `esc` key.\n */\n\n\nvar RootCloseWrapper =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(RootCloseWrapper, _React$Component);\n\n  function RootCloseWrapper(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n\n    _this.addEventListeners = function () {\n      var event = _this.props.event;\n      var doc = (0, _ownerDocument.default)(_assertThisInitialized(_assertThisInitialized(_this))); // Use capture for this listener so it fires before React's listener, to\n      // avoid false positives in the contains() check below if the target DOM\n      // element is removed in the React mouse callback.\n\n      _this.removeMouseCaptureListener = (0, _listen.default)(doc, event, _this.handleMouseCapture, true);\n      _this.removeMouseListener = (0, _listen.default)(doc, event, _this.handleMouse);\n      _this.removeKeyupListener = (0, _listen.default)(doc, 'keyup', _this.handleKeyUp);\n\n      if ('ontouchstart' in doc.documentElement) {\n        _this.mobileSafariHackListeners = [].slice.call(document.body.children).map(function (el) {\n          return (0, _listen.default)(el, 'mousemove', noop);\n        });\n      }\n    };\n\n    _this.removeEventListeners = function () {\n      if (_this.removeMouseCaptureListener) _this.removeMouseCaptureListener();\n      if (_this.removeMouseListener) _this.removeMouseListener();\n      if (_this.removeKeyupListener) _this.removeKeyupListener();\n      if (_this.mobileSafariHackListeners) _this.mobileSafariHackListeners.forEach(function (remove) {\n        return remove();\n      });\n    };\n\n    _this.handleMouseCapture = function (e) {\n      _this.preventMouseRootClose = isModifiedEvent(e) || !isLeftClickEvent(e) || (0, _contains.default)(_reactDom.default.findDOMNode(_assertThisInitialized(_assertThisInitialized(_this))), e.target);\n    };\n\n    _this.handleMouse = function (e) {\n      if (!_this.preventMouseRootClose && _this.props.onRootClose) {\n        _this.props.onRootClose(e);\n      }\n    };\n\n    _this.handleKeyUp = function (e) {\n      if (e.keyCode === escapeKeyCode && _this.props.onRootClose) {\n        _this.props.onRootClose(e);\n      }\n    };\n\n    _this.preventMouseRootClose = false;\n    return _this;\n  }\n\n  var _proto = RootCloseWrapper.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    if (!this.props.disabled) {\n      this.addEventListeners();\n    }\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    if (!this.props.disabled && prevProps.disabled) {\n      this.addEventListeners();\n    } else if (this.props.disabled && !prevProps.disabled) {\n      this.removeEventListeners();\n    }\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    if (!this.props.disabled) {\n      this.removeEventListeners();\n    }\n  };\n\n  _proto.render = function render() {\n    return this.props.children;\n  };\n\n  return RootCloseWrapper;\n}(_react.default.Component);\n\nRootCloseWrapper.displayName = 'RootCloseWrapper';\nRootCloseWrapper.propTypes = {\n  /**\n   * Callback fired after click or mousedown. Also triggers when user hits `esc`.\n   */\n  onRootClose: _propTypes.default.func,\n\n  /**\n   * Children to render.\n   */\n  children: _propTypes.default.element,\n\n  /**\n   * Disable the the RootCloseWrapper, preventing it from triggering `onRootClose`.\n   */\n  disabled: _propTypes.default.bool,\n\n  /**\n   * Choose which document mouse event to bind to.\n   */\n  event: _propTypes.default.oneOf(['click', 'mousedown'])\n};\nRootCloseWrapper.defaultProps = {\n  event: 'click'\n};\nvar _default = RootCloseWrapper;\nexports.default = _default;\nmodule.exports = exports.default;\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = _interopRequireDefault(__webpack_require__(10));\n\nvar on = function on() {};\n\nif (_inDOM.default) {\n  on = function () {\n    if (document.addEventListener) return function (node, eventName, handler, capture) {\n      return node.addEventListener(eventName, handler, capture || false);\n    };else if (document.attachEvent) return function (node, eventName, handler) {\n      return node.attachEvent('on' + eventName, function (e) {\n        e = e || window.event;\n        e.target = e.target || e.srcElement;\n        e.currentTarget = node;\n        handler.call(node, e);\n      });\n    };\n  }();\n}\n\nvar _default = on;\nexports.default = _default;\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = _interopRequireDefault(__webpack_require__(10));\n\nvar off = function off() {};\n\nif (_inDOM.default) {\n  off = function () {\n    if (document.addEventListener) return function (node, eventName, handler, capture) {\n      return node.removeEventListener(eventName, handler, capture || false);\n    };else if (document.attachEvent) return function (node, eventName, handler) {\n      return node.detachEvent('on' + eventName, handler);\n    };\n  }();\n}\n\nvar _default = off;\nexports.default = _default;\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = _default;\n\nvar _reactDom = _interopRequireDefault(__webpack_require__(6));\n\nvar _ownerDocument = _interopRequireDefault(__webpack_require__(16));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _default(componentOrElement) {\n  return (0, _ownerDocument.default)(_reactDom.default.findDOMNode(componentOrElement));\n}\n\nmodule.exports = exports.default;\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = forwardRef;\n\nvar _react = _interopRequireDefault(__webpack_require__(1));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction forwardRef(renderFn, _ref) {\n  var displayName = _ref.displayName,\n      propTypes = _ref.propTypes,\n      defaultProps = _ref.defaultProps,\n      _ref$allowFallback = _ref.allowFallback,\n      allowFallback = _ref$allowFallback === void 0 ? false : _ref$allowFallback;\n\n  var render = function render(props, ref) {\n    return renderFn(props, ref);\n  };\n\n  Object.assign(render, {\n    displayName: displayName\n  });\n  if (_react.default.forwardRef || !allowFallback) return Object.assign(_react.default.forwardRef(render), {\n    propTypes: propTypes,\n    defaultProps: defaultProps\n  });\n  return Object.assign(function (props) {\n    return render(props, null);\n  }, {\n    displayName: displayName,\n    propTypes: propTypes,\n    defaultProps: defaultProps\n  });\n}\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = hasClass;\n\nfunction hasClass(element, className) {\n  if (element.classList) return !!className && element.classList.contains(className);else return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(0));\n\nvar _componentOrElement = _interopRequireDefault(__webpack_require__(20));\n\nvar _react = _interopRequireDefault(__webpack_require__(1));\n\nvar _reactDom = _interopRequireDefault(__webpack_require__(6));\n\nvar _WaitForContainer = _interopRequireDefault(__webpack_require__(49));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n/**\n * The `<Portal/>` component renders its children into a new \"subtree\" outside of current component hierarchy.\n * You can think of it as a declarative `appendChild()`, or jQuery's `$.fn.appendTo()`.\n * The children of `<Portal/>` component will be appended to the `container` specified.\n */\n\n\nvar Portal =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Portal, _React$Component);\n\n  function Portal() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = Portal.prototype;\n\n  _proto.render = function render() {\n    var _this = this;\n\n    return this.props.children ? _react.default.createElement(_WaitForContainer.default, {\n      container: this.props.container,\n      onContainerResolved: this.props.onRendered\n    }, function (container) {\n      return _reactDom.default.createPortal(_this.props.children, container);\n    }) : null;\n  };\n\n  return Portal;\n}(_react.default.Component);\n\nPortal.displayName = 'Portal';\nPortal.propTypes = {\n  /**\n   * A Node, Component instance, or function that returns either. The `container` will have the Portal children\n   * appended to it.\n   */\n  container: _propTypes.default.oneOfType([_componentOrElement.default, _propTypes.default.func]),\n  onRendered: _propTypes.default.func\n};\nvar _default = Portal;\nexports.default = _default;\nmodule.exports = exports.default;\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(0));\n\nvar _componentOrElement = _interopRequireDefault(__webpack_require__(20));\n\nvar _inDOM = _interopRequireDefault(__webpack_require__(10));\n\nvar _ownerDocument = _interopRequireDefault(__webpack_require__(16));\n\nvar _react = _interopRequireDefault(__webpack_require__(1));\n\nvar _reactDom = _interopRequireDefault(__webpack_require__(6));\n\nvar _getContainer = _interopRequireDefault(__webpack_require__(50));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n\nvar propTypes = {\n  /**\n   * A Node, Component instance, or function that returns either. The `container` will have the Portal children\n   * appended to it.\n   */\n  container: _propTypes.default.oneOfType([_componentOrElement.default, _propTypes.default.func]),\n  onContainerResolved: _propTypes.default.func\n};\n\nvar WaitForContainer =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(WaitForContainer, _React$Component);\n\n  function WaitForContainer() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n    if (!_inDOM.default) return _assertThisInitialized(_this);\n    var container = _this.props.container;\n    if (typeof container === 'function') container = container();\n\n    if (container && !_reactDom.default.findDOMNode(container)) {\n      // The container is a React component that has not yet been rendered.\n      // Don't set the container node yet.\n      return _assertThisInitialized(_this);\n    }\n\n    _this.setContainer(container);\n\n    return _this;\n  }\n\n  var _proto = WaitForContainer.prototype;\n\n  _proto.UNSAFE_componentWillReceiveProps = function UNSAFE_componentWillReceiveProps(nextProps) {\n    if (nextProps.container !== this.props.container) {\n      this.setContainer(nextProps.container);\n    }\n  };\n\n  _proto.componentDidMount = function componentDidMount() {\n    if (!this._container) {\n      this.setContainer(this.props.container);\n      this.forceUpdate(this.props.onContainerResolved);\n    } else if (this.props.onContainerResolved) {\n      this.props.onContainerResolved();\n    }\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this._container = null;\n  };\n\n  _proto.setContainer = function setContainer(container) {\n    this._container = (0, _getContainer.default)(container, (0, _ownerDocument.default)().body);\n  };\n\n  _proto.render = function render() {\n    return this._container ? this.props.children(this._container) : null;\n  };\n\n  return WaitForContainer;\n}(_react.default.Component);\n\nWaitForContainer.propTypes = propTypes;\nvar _default = WaitForContainer;\nexports.default = _default;\nmodule.exports = exports.default;\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = getContainer;\n\nvar _reactDom = _interopRequireDefault(__webpack_require__(6));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction getContainer(container, defaultContainer) {\n  if (container == null) return defaultContainer;\n  container = typeof container === 'function' ? container() : container;\n  return _reactDom.default.findDOMNode(container) || null;\n}\n\nmodule.exports = exports.default;\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _end = _interopRequireDefault(__webpack_require__(23));\n\nexports.end = _end.default;\n\nvar _properties = _interopRequireDefault(__webpack_require__(26));\n\nexports.properties = _properties.default;\nvar _default = {\n  end: _end.default,\n  properties: _properties.default\n};\nexports.default = _default;\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _matches = _interopRequireDefault(__webpack_require__(72));\n\nvar _querySelectorAll = _interopRequireDefault(__webpack_require__(9));\n\nvar _react = _interopRequireDefault(__webpack_require__(1));\n\nvar _reactDom = _interopRequireDefault(__webpack_require__(6));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(0));\n\nvar _uncontrollable = _interopRequireDefault(__webpack_require__(7));\n\nvar Popper = _interopRequireWildcard(__webpack_require__(31));\n\nvar _DropdownContext = _interopRequireDefault(__webpack_require__(29));\n\nvar _DropdownMenu = _interopRequireDefault(__webpack_require__(35));\n\nvar _DropdownToggle = _interopRequireDefault(__webpack_require__(36));\n\nfunction _interopRequireWildcard(obj) {\n  if (obj && obj.__esModule) {\n    return obj;\n  } else {\n    var newObj = {};\n\n    if (obj != null) {\n      for (var key in obj) {\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\n          var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};\n\n          if (desc.get || desc.set) {\n            Object.defineProperty(newObj, key, desc);\n          } else {\n            newObj[key] = obj[key];\n          }\n        }\n      }\n    }\n\n    newObj.default = obj;\n    return newObj;\n  }\n}\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n\nvar propTypes = {\n  /**\n   * A render prop that returns the root dropdown element. The `props`\n   * argument should spread through to an element containing _both_ the\n   * menu and toggle in order to handle keyboard events for focus management.\n   *\n   * @type {Function ({\n   *   props: {\n   *     onKeyDown: (SyntheticEvent) => void,\n   *   },\n   * }) => React.Element}\n   */\n  children: _propTypes.default.func.isRequired,\n\n  /**\n   * Determines the direction and location of the Menu in relation to it's Toggle.\n   */\n  drop: _propTypes.default.oneOf(['up', 'left', 'right', 'down']),\n\n  /**\n   * Controls the focus behavior for when the Dropdown is opened. Set to\n   * `true` to always focus the first menu item, `keyboard` to focus only when\n   * navigating via the keyboard, or `false` to disable completely\n   *\n   * The Default behavior is `false` **unless** the Menu has a `role=\"menu\"`\n   * where it will default to `keyboard` to match the recommended [ARIA Authoring practices](https://www.w3.org/TR/wai-aria-practices-1.1/#menubutton).\n   */\n  focusFirstItemOnShow: _propTypes.default.oneOf([false, true, 'keyboard']),\n\n  /**\n   * A css slector string that will return __focusable__ menu items.\n   * Selectors should be relative to the menu component:\n   * e.g. ` > li:not('.disabled')`\n   */\n  itemSelector: _propTypes.default.string.isRequired,\n\n  /**\n   * Align the menu to the 'end' side of the placement side of the Dropdown toggle. The default placement is `top-start` or `bottom-start`.\n   */\n  alignEnd: _propTypes.default.bool,\n\n  /**\n   * Whether or not the Dropdown is visible.\n   *\n   * @controllable onToggle\n   */\n  show: _propTypes.default.bool,\n\n  /**\n   * A callback fired when the Dropdown wishes to change visibility. Called with the requested\n   * `show` value, the DOM event, and the source that fired it: `'click'`,`'keydown'`,`'rootClose'`, or `'select'`.\n   *\n   * ```js\n   * function(\n   *   isOpen: boolean,\n   *   event: SyntheticEvent,\n   * ): void\n   * ```\n   *\n   * @controllable show\n   */\n  onToggle: _propTypes.default.func\n};\nvar defaultProps = {\n  itemSelector: '* > *'\n};\n/**\n * `Dropdown` is set of structural components for building, accessible dropdown menus with close-on-click,\n * keyboard navigation, and correct focus handling. As with all the react-overlay's\n * components its BYOS (bring your own styles). Dropdown is primarily\n * built from three base components, you should compose to build your Dropdowns.\n *\n * - `Dropdown`, which wraps the menu and toggle, and handles keyboard navigation\n * - `Dropdown.Toggle` generally a button that triggers the menu opening\n * - `Dropdown.Menu` The overlaid, menu, positioned to the toggle with PopperJs\n */\n\nvar Dropdown =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Dropdown, _React$Component);\n\n  Dropdown.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n    var drop = _ref.drop,\n        alignEnd = _ref.alignEnd,\n        show = _ref.show;\n    var lastShow = prevState.context.show;\n    return {\n      lastShow: lastShow,\n      context: _extends({}, prevState.context, {\n        drop: drop,\n        show: show,\n        alignEnd: alignEnd\n      })\n    };\n  };\n\n  function Dropdown(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n\n    _this.handleClick = function (event) {\n      _this.toggleOpen(event);\n    };\n\n    _this.handleKeyDown = function (event) {\n      var key = event.key,\n          target = event.target; // Second only to https://github.com/twbs/bootstrap/blob/8cfbf6933b8a0146ac3fbc369f19e520bd1ebdac/js/src/dropdown.js#L400\n      // in inscrutability\n\n      var isInput = /input|textarea/i.test(target.tagName);\n\n      if (isInput && (key === ' ' || key !== 'Escape' && _this.menu.contains(target))) {\n        return;\n      }\n\n      _this._lastSourceEvent = event.type;\n\n      switch (key) {\n        case 'ArrowUp':\n          {\n            var next = _this.getNextFocusedChild(target, -1);\n\n            if (next && next.focus) next.focus();\n            event.preventDefault();\n            return;\n          }\n\n        case 'ArrowDown':\n          event.preventDefault();\n\n          if (!_this.props.show) {\n            _this.toggleOpen(event);\n          } else {\n            var _next = _this.getNextFocusedChild(target, 1);\n\n            if (_next && _next.focus) _next.focus();\n          }\n\n          return;\n\n        case 'Escape':\n        case 'Tab':\n          _this.props.onToggle(false, event);\n\n          break;\n\n        default:\n      }\n    };\n\n    _this._focusInDropdown = false;\n    _this.menu = null;\n    _this.state = {\n      context: {\n        close: _this.handleClose,\n        toggle: _this.handleClick,\n        menuRef: function menuRef(r) {\n          _this.menu = r;\n        },\n        toggleRef: function toggleRef(r) {\n          var toggleNode = r && _reactDom.default.findDOMNode(r);\n\n          _this.setState(function (_ref2) {\n            var context = _ref2.context;\n            return {\n              context: _extends({}, context, {\n                toggleNode: toggleNode\n              })\n            };\n          });\n        }\n      }\n    };\n    return _this;\n  }\n\n  var _proto = Dropdown.prototype;\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    var show = this.props.show;\n    var prevOpen = prevProps.show;\n\n    if (show && !prevOpen) {\n      this.maybeFocusFirst();\n    }\n\n    this._lastSourceEvent = null;\n\n    if (!show && prevOpen) {\n      // if focus hasn't already moved from the menu let's return it\n      // to the toggle\n      if (this._focusInDropdown) {\n        this._focusInDropdown = false;\n        this.focus();\n      }\n    }\n  };\n\n  _proto.getNextFocusedChild = function getNextFocusedChild(current, offset) {\n    if (!this.menu) return null;\n    var itemSelector = this.props.itemSelector;\n    var items = (0, _querySelectorAll.default)(this.menu, itemSelector);\n    var index = items.indexOf(current) + offset;\n    index = Math.max(0, Math.min(index, items.length));\n    return items[index];\n  };\n\n  _proto.hasMenuRole = function hasMenuRole() {\n    return this.menu && (0, _matches.default)(this.menu, '[role=menu]');\n  };\n\n  _proto.focus = function focus() {\n    var toggleNode = this.state.context.toggleNode;\n\n    if (toggleNode && toggleNode.focus) {\n      toggleNode.focus();\n    }\n  };\n\n  _proto.maybeFocusFirst = function maybeFocusFirst() {\n    var type = this._lastSourceEvent;\n    var focusFirstItemOnShow = this.props.focusFirstItemOnShow;\n\n    if (focusFirstItemOnShow == null) {\n      focusFirstItemOnShow = this.hasMenuRole() ? 'keyboard' : false;\n    }\n\n    if (focusFirstItemOnShow === false || focusFirstItemOnShow === 'keyboard' && !/^key.+$/.test(type)) {\n      return;\n    }\n\n    var itemSelector = this.props.itemSelector;\n    var first = (0, _querySelectorAll.default)(this.menu, itemSelector)[0];\n    if (first && first.focus) first.focus();\n  };\n\n  _proto.toggleOpen = function toggleOpen(event) {\n    var show = !this.props.show;\n    this.props.onToggle(show, event);\n  };\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        children = _this$props.children,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"children\"]);\n\n    delete props.onToggle;\n\n    if (this.menu && this.state.lastShow && !this.props.show) {\n      this._focusInDropdown = this.menu.contains(document.activeElement);\n    }\n\n    return _react.default.createElement(_DropdownContext.default.Provider, {\n      value: this.state.context\n    }, _react.default.createElement(Popper.Manager, null, children({\n      props: {\n        onKeyDown: this.handleKeyDown\n      }\n    })));\n  };\n\n  return Dropdown;\n}(_react.default.Component);\n\nDropdown.displayName = 'ReactOverlaysDropdown';\nDropdown.propTypes = propTypes;\nDropdown.defaultProps = defaultProps;\nvar UncontrolledDropdown = (0, _uncontrollable.default)(Dropdown, {\n  show: 'onToggle'\n});\nUncontrolledDropdown.Menu = _DropdownMenu.default;\nUncontrolledDropdown.Toggle = _DropdownToggle.default;\nvar _default = UncontrolledDropdown;\nexports.default = _default;\nmodule.exports = exports.default;\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports) {\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _implementation = __webpack_require__(73);\n\nvar _implementation2 = _interopRequireDefault(_implementation);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nexports.default = _react2.default.createContext || _implementation2.default;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = mapContextToProps;\n\nvar _react = _interopRequireDefault(__webpack_require__(1));\n\nvar _forwardRef = _interopRequireDefault(__webpack_require__(32));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nvar getDisplayName = function getDisplayName(Component) {\n  var name = typeof Component === 'string' ? Component : Component.name || Component.displayName;\n  return name ? \"ContextTransform(\" + name + \")\" : 'ContextTransform';\n};\n\nvar ensureConsumer = function ensureConsumer(c) {\n  return c.Consumer || c;\n};\n\nfunction $mapContextToProps(_ref, Component) {\n  var maybeArrayOfConsumers = _ref.consumers,\n      mapToProps = _ref.mapToProps,\n      displayName = _ref.displayName,\n      _ref$forwardRefAs = _ref.forwardRefAs,\n      forwardRefAs = _ref$forwardRefAs === void 0 ? 'ref' : _ref$forwardRefAs;\n  var consumers = maybeArrayOfConsumers;\n\n  if (!Array.isArray(maybeArrayOfConsumers)) {\n    consumers = [maybeArrayOfConsumers];\n  }\n\n  var SingleConsumer = ensureConsumer(consumers[0]);\n\n  function singleRender(props, ref) {\n    var _extends2;\n\n    var propsWithRef = _extends((_extends2 = {}, _extends2[forwardRefAs] = ref, _extends2), props);\n\n    return _react.default.createElement(SingleConsumer, null, function (value) {\n      return _react.default.createElement(Component, _extends({}, propsWithRef, mapToProps(value, props)));\n    });\n  }\n\n  function multiRender(props, ref) {\n    var _extends3;\n\n    var propsWithRef = _extends((_extends3 = {}, _extends3[forwardRefAs] = ref, _extends3), props);\n\n    return consumers.reduceRight(function (inner, Context) {\n      return function () {\n        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n          args[_key] = arguments[_key];\n        }\n\n        var Consumer = ensureConsumer(Context);\n        return _react.default.createElement(Consumer, null, function (value) {\n          return inner.apply(void 0, args.concat([value]));\n        });\n      };\n    }, function () {\n      for (var _len2 = arguments.length, contexts = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        contexts[_key2] = arguments[_key2];\n      }\n\n      return _react.default.createElement(Component, _extends({}, propsWithRef, mapToProps.apply(void 0, contexts.concat([props]))));\n    })();\n  }\n\n  var contextTransform = consumers.length === 1 ? singleRender : multiRender;\n  return (0, _forwardRef.default)(contextTransform, {\n    displayName: displayName || getDisplayName(Component)\n  });\n}\n\nfunction mapContextToProps(maybeOpts, mapToProps, Component) {\n  if (arguments.length === 2) return $mapContextToProps(maybeOpts, mapToProps);\n  return $mapContextToProps({\n    consumers: maybeOpts,\n    mapToProps: mapToProps\n  }, Component);\n}\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _activeElement = _interopRequireDefault(__webpack_require__(79));\n\nvar _contains = _interopRequireDefault(__webpack_require__(22));\n\nvar _inDOM = _interopRequireDefault(__webpack_require__(10));\n\nvar _listen = _interopRequireDefault(__webpack_require__(30));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(0));\n\nvar _componentOrElement = _interopRequireDefault(__webpack_require__(20));\n\nvar _elementType = _interopRequireDefault(__webpack_require__(28));\n\nvar _react = _interopRequireDefault(__webpack_require__(1));\n\nvar _reactDom = _interopRequireDefault(__webpack_require__(6));\n\nvar _ModalManager = _interopRequireDefault(__webpack_require__(37));\n\nvar _Portal = _interopRequireDefault(__webpack_require__(48));\n\nvar _getContainer = _interopRequireDefault(__webpack_require__(50));\n\nvar _ownerDocument = _interopRequireDefault(__webpack_require__(45));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n\nvar modalManager = new _ModalManager.default();\n\nfunction omitProps(props, propTypes) {\n  var keys = Object.keys(props);\n  var newProps = {};\n  keys.map(function (prop) {\n    if (!Object.prototype.hasOwnProperty.call(propTypes, prop)) {\n      newProps[prop] = props[prop];\n    }\n  });\n  return newProps;\n}\n/**\n * Love them or hate them, `<Modal />` provides a solid foundation for creating dialogs, lightboxes, or whatever else.\n * The Modal component renders its `children` node in front of a backdrop component.\n *\n * The Modal offers a few helpful features over using just a `<Portal/>` component and some styles:\n *\n * - Manages dialog stacking when one-at-a-time just isn't enough.\n * - Creates a backdrop, for disabling interaction below the modal.\n * - It properly manages focus; moving to the modal content, and keeping it there until the modal is closed.\n * - It disables scrolling of the page content while open.\n * - Adds the appropriate ARIA roles are automatically.\n * - Easily pluggable animations via a `<Transition/>` component.\n *\n * Note that, in the same way the backdrop element prevents users from clicking or interacting\n * with the page content underneath the Modal, Screen readers also need to be signaled to not to\n * interact with page content while the Modal is open. To do this, we use a common technique of applying\n * the `aria-hidden='true'` attribute to the non-Modal elements in the Modal `container`. This means that for\n * a Modal to be truly modal, it should have a `container` that is _outside_ your app's\n * React hierarchy (such as the default: document.body).\n */\n\n\nvar Modal =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Modal, _React$Component);\n\n  function Modal() {\n    var _this;\n\n    for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n      _args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(_args)) || this;\n    _this.state = {\n      exited: !_this.props.show\n    };\n\n    _this.onPortalRendered = function () {\n      if (_this.props.onShow) {\n        _this.props.onShow();\n      } // autofocus after onShow, to not trigger a focus event for previous\n      // modals before this one is shown.\n\n\n      _this.autoFocus();\n    };\n\n    _this.onShow = function () {\n      var doc = (0, _ownerDocument.default)(_assertThisInitialized(_assertThisInitialized(_this)));\n      var container = (0, _getContainer.default)(_this.props.container, doc.body);\n\n      _this.props.manager.add(_assertThisInitialized(_assertThisInitialized(_this)), container, _this.props.containerClassName);\n\n      _this.removeKeydownListener = (0, _listen.default)(doc, 'keydown', _this.handleDocumentKeyDown);\n      _this.removeFocusListener = (0, _listen.default)(doc, 'focus', // the timeout is necessary b/c this will run before the new modal is mounted\n      // and so steals focus from it\n      function () {\n        return setTimeout(_this.enforceFocus);\n      }, true);\n    };\n\n    _this.onHide = function () {\n      _this.props.manager.remove(_assertThisInitialized(_assertThisInitialized(_this)));\n\n      _this.removeKeydownListener();\n\n      _this.removeFocusListener();\n\n      if (_this.props.restoreFocus) {\n        _this.restoreLastFocus();\n      }\n    };\n\n    _this.setDialogRef = function (ref) {\n      _this.dialog = ref;\n    };\n\n    _this.setBackdropRef = function (ref) {\n      _this.backdrop = ref && _reactDom.default.findDOMNode(ref);\n    };\n\n    _this.handleHidden = function () {\n      _this.setState({\n        exited: true\n      });\n\n      _this.onHide();\n\n      if (_this.props.onExited) {\n        var _this$props;\n\n        (_this$props = _this.props).onExited.apply(_this$props, arguments);\n      }\n    };\n\n    _this.handleBackdropClick = function (e) {\n      if (e.target !== e.currentTarget) {\n        return;\n      }\n\n      if (_this.props.onBackdropClick) {\n        _this.props.onBackdropClick(e);\n      }\n\n      if (_this.props.backdrop === true) {\n        _this.props.onHide();\n      }\n    };\n\n    _this.handleDocumentKeyDown = function (e) {\n      if (_this.props.keyboard && e.keyCode === 27 && _this.isTopModal()) {\n        if (_this.props.onEscapeKeyDown) {\n          _this.props.onEscapeKeyDown(e);\n        }\n\n        _this.props.onHide();\n      }\n    };\n\n    _this.enforceFocus = function () {\n      if (!_this.props.enforceFocus || !_this._isMounted || !_this.isTopModal()) {\n        return;\n      }\n\n      var currentActiveElement = (0, _activeElement.default)((0, _ownerDocument.default)(_assertThisInitialized(_assertThisInitialized(_this))));\n\n      if (_this.dialog && !(0, _contains.default)(_this.dialog, currentActiveElement)) {\n        _this.dialog.focus();\n      }\n    };\n\n    _this.renderBackdrop = function () {\n      var _this$props2 = _this.props,\n          renderBackdrop = _this$props2.renderBackdrop,\n          Transition = _this$props2.backdropTransition;\n      var backdrop = renderBackdrop({\n        ref: _this.setBackdropRef,\n        onClick: _this.handleBackdropClick\n      });\n\n      if (Transition) {\n        backdrop = _react.default.createElement(Transition, {\n          appear: true,\n          in: _this.props.show\n        }, backdrop);\n      }\n\n      return backdrop;\n    };\n\n    return _this;\n  }\n\n  Modal.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps) {\n    if (nextProps.show) {\n      return {\n        exited: false\n      };\n    } else if (!nextProps.transition) {\n      // Otherwise let handleHidden take care of marking exited.\n      return {\n        exited: true\n      };\n    }\n\n    return null;\n  };\n\n  var _proto = Modal.prototype;\n\n  _proto.getSnapshotBeforeUpdate = function getSnapshotBeforeUpdate(prevProps) {\n    if (_inDOM.default && !prevProps.show && this.props.show) {\n      this.lastFocus = (0, _activeElement.default)();\n    }\n\n    return null;\n  };\n\n  _proto.componentDidMount = function componentDidMount() {\n    this._isMounted = true;\n\n    if (this.props.show) {\n      this.onShow();\n    }\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    var transition = this.props.transition;\n\n    if (prevProps.show && !this.props.show && !transition) {\n      // Otherwise handleHidden will call this.\n      this.onHide();\n    } else if (!prevProps.show && this.props.show) {\n      this.onShow();\n    }\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    var _this$props3 = this.props,\n        show = _this$props3.show,\n        transition = _this$props3.transition;\n    this._isMounted = false;\n\n    if (show || transition && !this.state.exited) {\n      this.onHide();\n    }\n  };\n\n  _proto.autoFocus = function autoFocus() {\n    if (!this.props.autoFocus) return;\n    var currentActiveElement = (0, _activeElement.default)((0, _ownerDocument.default)(this));\n\n    if (this.dialog && !(0, _contains.default)(this.dialog, currentActiveElement)) {\n      this.lastFocus = currentActiveElement;\n      this.dialog.focus();\n    }\n  };\n\n  _proto.restoreLastFocus = function restoreLastFocus() {\n    // Support: <=IE11 doesn't support `focus()` on svg elements (RB: #917)\n    if (this.lastFocus && this.lastFocus.focus) {\n      this.lastFocus.focus();\n      this.lastFocus = null;\n    }\n  };\n\n  _proto.isTopModal = function isTopModal() {\n    return this.props.manager.isTopModal(this);\n  };\n\n  _proto.render = function render() {\n    var _this$props4 = this.props,\n        show = _this$props4.show,\n        container = _this$props4.container,\n        children = _this$props4.children,\n        renderDialog = _this$props4.renderDialog,\n        _this$props4$role = _this$props4.role,\n        role = _this$props4$role === void 0 ? 'dialog' : _this$props4$role,\n        Transition = _this$props4.transition,\n        backdrop = _this$props4.backdrop,\n        className = _this$props4.className,\n        style = _this$props4.style,\n        onExit = _this$props4.onExit,\n        onExiting = _this$props4.onExiting,\n        onEnter = _this$props4.onEnter,\n        onEntering = _this$props4.onEntering,\n        onEntered = _this$props4.onEntered,\n        props = _objectWithoutPropertiesLoose(_this$props4, [\"show\", \"container\", \"children\", \"renderDialog\", \"role\", \"transition\", \"backdrop\", \"className\", \"style\", \"onExit\", \"onExiting\", \"onEnter\", \"onEntering\", \"onEntered\"]);\n\n    if (!(show || Transition && !this.state.exited)) {\n      return null;\n    }\n\n    var dialogProps = _extends({\n      role: role,\n      ref: this.setDialogRef,\n      // apparently only works on the dialog role element\n      'aria-modal': role === 'dialog' ? true : undefined\n    }, omitProps(props, Modal.propTypes), {\n      style: style,\n      className: className,\n      tabIndex: '-1'\n    });\n\n    var dialog = renderDialog ? renderDialog(dialogProps) : _react.default.createElement(\"div\", dialogProps, _react.default.cloneElement(children, {\n      role: 'document'\n    }));\n\n    if (Transition) {\n      dialog = _react.default.createElement(Transition, {\n        appear: true,\n        unmountOnExit: true,\n        in: show,\n        onExit: onExit,\n        onExiting: onExiting,\n        onExited: this.handleHidden,\n        onEnter: onEnter,\n        onEntering: onEntering,\n        onEntered: onEntered\n      }, dialog);\n    }\n\n    return _react.default.createElement(_Portal.default, {\n      container: container,\n      onRendered: this.onPortalRendered\n    }, _react.default.createElement(_react.default.Fragment, null, backdrop && this.renderBackdrop(), dialog));\n  };\n\n  return Modal;\n}(_react.default.Component);\n\nModal.propTypes = {\n  /**\n   * Set the visibility of the Modal\n   */\n  show: _propTypes.default.bool,\n\n  /**\n   * A Node, Component instance, or function that returns either. The Modal is appended to it's container element.\n   *\n   * For the sake of assistive technologies, the container should usually be the document body, so that the rest of the\n   * page content can be placed behind a virtual backdrop as well as a visual one.\n   */\n  container: _propTypes.default.oneOfType([_componentOrElement.default, _propTypes.default.func]),\n\n  /**\n   * A callback fired when the Modal is opening.\n   */\n  onShow: _propTypes.default.func,\n\n  /**\n   * A callback fired when either the backdrop is clicked, or the escape key is pressed.\n   *\n   * The `onHide` callback only signals intent from the Modal,\n   * you must actually set the `show` prop to `false` for the Modal to close.\n   */\n  onHide: _propTypes.default.func,\n\n  /**\n   * Include a backdrop component.\n   */\n  backdrop: _propTypes.default.oneOfType([_propTypes.default.bool, _propTypes.default.oneOf(['static'])]),\n\n  /**\n   * A function that returns the dialog component. Useful for custom\n   * rendering. **Note:** the component should make sure to apply the provided ref.\n   *\n   * ```js\n   *  renderDialog={props => <MyDialog {...props} />}\n   * ```\n   */\n  renderDialog: _propTypes.default.func,\n\n  /**\n   * A function that returns a backdrop component. Useful for custom\n   * backdrop rendering.\n   *\n   * ```js\n   *  renderBackdrop={props => <MyBackdrop {...props} />}\n   * ```\n   */\n  renderBackdrop: _propTypes.default.func,\n\n  /**\n   * A callback fired when the escape key, if specified in `keyboard`, is pressed.\n   */\n  onEscapeKeyDown: _propTypes.default.func,\n\n  /**\n   * A callback fired when the backdrop, if specified, is clicked.\n   */\n  onBackdropClick: _propTypes.default.func,\n\n  /**\n   * A css class or set of classes applied to the modal container when the modal is open,\n   * and removed when it is closed.\n   */\n  containerClassName: _propTypes.default.string,\n\n  /**\n   * Close the modal when escape key is pressed\n   */\n  keyboard: _propTypes.default.bool,\n\n  /**\n   * A `react-transition-group@2.0.0` `<Transition/>` component used\n   * to control animations for the dialog component.\n   */\n  transition: _elementType.default,\n\n  /**\n   * A `react-transition-group@2.0.0` `<Transition/>` component used\n   * to control animations for the backdrop components.\n   */\n  backdropTransition: _elementType.default,\n\n  /**\n   * When `true` The modal will automatically shift focus to itself when it opens, and\n   * replace it to the last focused element when it closes. This also\n   * works correctly with any Modal children that have the `autoFocus` prop.\n   *\n   * Generally this should never be set to `false` as it makes the Modal less\n   * accessible to assistive technologies, like screen readers.\n   */\n  autoFocus: _propTypes.default.bool,\n\n  /**\n   * When `true` The modal will prevent focus from leaving the Modal while open.\n   *\n   * Generally this should never be set to `false` as it makes the Modal less\n   * accessible to assistive technologies, like screen readers.\n   */\n  enforceFocus: _propTypes.default.bool,\n\n  /**\n   * When `true` The modal will restore focus to previously focused element once\n   * modal is hidden\n   */\n  restoreFocus: _propTypes.default.bool,\n\n  /**\n   * Callback fired before the Modal transitions in\n   */\n  onEnter: _propTypes.default.func,\n\n  /**\n   * Callback fired as the Modal begins to transition in\n   */\n  onEntering: _propTypes.default.func,\n\n  /**\n   * Callback fired after the Modal finishes transitioning in\n   */\n  onEntered: _propTypes.default.func,\n\n  /**\n   * Callback fired right before the Modal transitions out\n   */\n  onExit: _propTypes.default.func,\n\n  /**\n   * Callback fired as the Modal begins to transition out\n   */\n  onExiting: _propTypes.default.func,\n\n  /**\n   * Callback fired after the Modal finishes transitioning out\n   */\n  onExited: _propTypes.default.func,\n\n  /**\n   * A ModalManager instance used to track and manage the state of open\n   * Modals. Useful when customizing how modals interact within a container\n   */\n  manager: _propTypes.default.object.isRequired\n};\nModal.defaultProps = {\n  show: false,\n  role: 'dialog',\n  backdrop: true,\n  keyboard: true,\n  autoFocus: true,\n  enforceFocus: true,\n  restoreFocus: true,\n  onHide: function onHide() {},\n  manager: modalManager,\n  renderBackdrop: function renderBackdrop(props) {\n    return _react.default.createElement(\"div\", props);\n  }\n};\nModal.Manager = _ModalManager.default;\nvar _default = Modal;\nexports.default = _default;\nmodule.exports = exports.default;\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(0));\n\nvar _elementType = _interopRequireDefault(__webpack_require__(28));\n\nvar _componentOrElement = _interopRequireDefault(__webpack_require__(20));\n\nvar _react = _interopRequireDefault(__webpack_require__(1));\n\nvar _reactDom = _interopRequireDefault(__webpack_require__(6));\n\nvar _Portal = _interopRequireDefault(__webpack_require__(48));\n\nvar _RootCloseWrapper = _interopRequireDefault(__webpack_require__(42));\n\nvar _reactPopper = __webpack_require__(31);\n\nvar _forwardRef = _interopRequireDefault(__webpack_require__(46));\n\nvar _WaitForContainer = _interopRequireDefault(__webpack_require__(49));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n/**\n * Built on top of `<Position/>` and `<Portal/>`, the overlay component is\n * great for custom tooltip overlays.\n */\n\n\nvar Overlay =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Overlay, _React$Component);\n\n  function Overlay(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n\n    _this.handleHidden = function () {\n      _this.setState({\n        exited: true\n      });\n\n      if (_this.props.onExited) {\n        var _this$props;\n\n        (_this$props = _this.props).onExited.apply(_this$props, arguments);\n      }\n    };\n\n    _this.state = {\n      exited: !props.show\n    };\n    _this.onHiddenListener = _this.handleHidden.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n    _this._lastTarget = null;\n    return _this;\n  }\n\n  Overlay.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps) {\n    if (nextProps.show) {\n      return {\n        exited: false\n      };\n    } else if (!nextProps.transition) {\n      // Otherwise let handleHidden take care of marking exited.\n      return {\n        exited: true\n      };\n    }\n\n    return null;\n  };\n\n  var _proto = Overlay.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.setState({\n      target: this.getTarget()\n    });\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    if (this.props === prevProps) return;\n    var target = this.getTarget();\n\n    if (target !== this.state.target) {\n      this.setState({\n        target: target\n      });\n    }\n  };\n\n  _proto.getTarget = function getTarget() {\n    var target = this.props.target;\n    target = typeof target === 'function' ? target() : target;\n    return target && _reactDom.default.findDOMNode(target) || null;\n  };\n\n  _proto.render = function render() {\n    var _this2 = this;\n\n    var _this$props2 = this.props,\n        _0 = _this$props2.target,\n        container = _this$props2.container,\n        containerPadding = _this$props2.containerPadding,\n        placement = _this$props2.placement,\n        rootClose = _this$props2.rootClose,\n        children = _this$props2.children,\n        flip = _this$props2.flip,\n        _this$props2$popperCo = _this$props2.popperConfig,\n        popperConfig = _this$props2$popperCo === void 0 ? {} : _this$props2$popperCo,\n        Transition = _this$props2.transition,\n        props = _objectWithoutPropertiesLoose(_this$props2, [\"target\", \"container\", \"containerPadding\", \"placement\", \"rootClose\", \"children\", \"flip\", \"popperConfig\", \"transition\"]);\n\n    var target = this.state.target; // Don't un-render the overlay while it's transitioning out.\n\n    var mountOverlay = props.show || Transition && !this.state.exited;\n\n    if (!mountOverlay) {\n      // Don't bother showing anything if we don't have to.\n      return null;\n    }\n\n    var child = children;\n    var _popperConfig$modifie = popperConfig.modifiers,\n        modifiers = _popperConfig$modifie === void 0 ? {} : _popperConfig$modifie;\n\n    var popperProps = _extends({}, popperConfig, {\n      placement: placement,\n      referenceElement: target,\n      enableEvents: props.show,\n      modifiers: _extends({}, modifiers, {\n        preventOverflow: _extends({\n          padding: containerPadding || 5\n        }, modifiers.preventOverflow),\n        flip: _extends({\n          enabled: !!flip\n        }, modifiers.preventOverflow)\n      })\n    });\n\n    child = _react.default.createElement(_reactPopper.Popper, popperProps, function (_ref) {\n      var arrowProps = _ref.arrowProps,\n          style = _ref.style,\n          ref = _ref.ref,\n          popper = _objectWithoutPropertiesLoose(_ref, [\"arrowProps\", \"style\", \"ref\"]);\n\n      _this2.popper = popper;\n\n      var innerChild = _this2.props.children(_extends({}, popper, {\n        // popper doesn't set the initial placement\n        placement: popper.placement || placement,\n        show: props.show,\n        arrowProps: arrowProps,\n        props: {\n          ref: ref,\n          style: style\n        }\n      }));\n\n      if (Transition) {\n        var onExit = props.onExit,\n            onExiting = props.onExiting,\n            onEnter = props.onEnter,\n            onEntering = props.onEntering,\n            onEntered = props.onEntered;\n        innerChild = _react.default.createElement(Transition, {\n          in: props.show,\n          appear: true,\n          onExit: onExit,\n          onExiting: onExiting,\n          onExited: _this2.onHiddenListener,\n          onEnter: onEnter,\n          onEntering: onEntering,\n          onEntered: onEntered\n        }, innerChild);\n      }\n\n      return innerChild;\n    });\n\n    if (rootClose) {\n      child = _react.default.createElement(_RootCloseWrapper.default, {\n        onRootClose: props.onHide,\n        event: props.rootCloseEvent,\n        disabled: props.rootCloseDisabled\n      }, child);\n    }\n\n    return _react.default.createElement(_Portal.default, {\n      container: container\n    }, child);\n  };\n\n  return Overlay;\n}(_react.default.Component);\n\nOverlay.propTypes = _extends({}, _Portal.default.propTypes, {\n  /**\n   * Set the visibility of the Overlay\n   */\n  show: _propTypes.default.bool,\n\n  /** Specify where the overlay element is positioned in relation to the target element */\n  placement: _propTypes.default.oneOf(_reactPopper.placements),\n\n  /**\n   * A Node, Component instance, or function that returns either. The `container` will have the Portal children\n   * appended to it.\n   */\n  container: _propTypes.default.oneOfType([_componentOrElement.default, _propTypes.default.func]),\n\n  /**\n   * Enables the Popper.js `flip` modifier, allowing the Overlay to\n   * automatically adjust it's placement in case of overlap with the viewport or toggle.\n   * Refer to the [flip docs](https://popper.js.org/popper-documentation.html#modifiers..flip.enabled) for more info\n   */\n  flip: _propTypes.default.bool,\n\n  /**\n   * A render prop that returns an element to overlay and position. See\n   * the [react-popper documentation](https://github.com/FezVrasta/react-popper#children) for more info.\n   *\n   * @type {Function ({\n   *   show: boolean,\n   *   placement: Placement,\n   *   outOfBoundaries: ?boolean,\n   *   scheduleUpdate: () => void,\n   *   props: {\n   *     ref: (?HTMLElement) => void,\n   *     style: { [string]: string | number },\n   *     aria-labelledby: ?string\n   *   },\n   *   arrowProps: {\n   *     ref: (?HTMLElement) => void,\n   *     style: { [string]: string | number },\n   *   },\n   * }) => React.Element}\n   */\n  children: _propTypes.default.func.isRequired,\n\n  /**\n   * A set of popper options and props passed directly to react-popper's Popper component.\n   */\n  popperConfig: _propTypes.default.object,\n\n  /**\n   * Specify whether the overlay should trigger `onHide` when the user clicks outside the overlay\n   */\n  rootClose: _propTypes.default.bool,\n\n  /**\n   * Specify event for toggling overlay\n   */\n  rootCloseEvent: _RootCloseWrapper.default.propTypes.event,\n\n  /**\n   * Specify disabled for disable RootCloseWrapper\n   */\n  rootCloseDisabled: _RootCloseWrapper.default.propTypes.disabled,\n\n  /**\n   * A Callback fired by the Overlay when it wishes to be hidden.\n   *\n   * __required__ when `rootClose` is `true`.\n   *\n   * @type func\n   */\n  onHide: function onHide(props) {\n    var propType = _propTypes.default.func;\n\n    if (props.rootClose) {\n      propType = propType.isRequired;\n    }\n\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    return propType.apply(void 0, [props].concat(args));\n  },\n\n  /**\n   * A `react-transition-group@2.0.0` `<Transition/>` component\n   * used to animate the overlay as it changes visibility.\n   */\n  transition: _elementType.default,\n\n  /**\n   * Callback fired before the Overlay transitions in\n   */\n  onEnter: _propTypes.default.func,\n\n  /**\n   * Callback fired as the Overlay begins to transition in\n   */\n  onEntering: _propTypes.default.func,\n\n  /**\n   * Callback fired after the Overlay finishes transitioning in\n   */\n  onEntered: _propTypes.default.func,\n\n  /**\n   * Callback fired right before the Overlay transitions out\n   */\n  onExit: _propTypes.default.func,\n\n  /**\n   * Callback fired as the Overlay begins to transition out\n   */\n  onExiting: _propTypes.default.func,\n\n  /**\n   * Callback fired after the Overlay finishes transitioning out\n   */\n  onExited: _propTypes.default.func\n});\n\nvar _default = (0, _forwardRef.default)(function (props, ref) {\n  return (// eslint-disable-next-line react/prop-types\n    _react.default.createElement(_WaitForContainer.default, {\n      container: props.container\n    }, function (container) {\n      return _react.default.createElement(Overlay, _extends({}, props, {\n        ref: ref,\n        container: container\n      }));\n    })\n  );\n}, {\n  displayName: 'withContainer(Overlay)'\n});\n\nexports.default = _default;\nmodule.exports = exports.default;\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\nvar ReactPropTypesSecret = __webpack_require__(59);\n\nfunction emptyFunction() {}\n\nfunction emptyFunctionWithReset() {}\n\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function () {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n\n    var err = new Error('Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use PropTypes.checkPropTypes() to call them. ' + 'Read more at http://fb.me/use-check-prop-types');\n    err.name = 'Invariant Violation';\n    throw err;\n  }\n\n  ;\n  shim.isRequired = shim;\n\n  function getShim() {\n    return shim;\n  }\n\n  ; // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n\n  var ReactPropTypes = {\n    array: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n  ReactPropTypes.PropTypes = ReactPropTypes;\n  return ReactPropTypes;\n};\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\nmodule.exports = ReactPropTypesSecret;\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = hyphenateStyleName;\n\nvar _hyphenate = _interopRequireDefault(__webpack_require__(61));\n/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/hyphenateStyleName.js\n */\n\n\nvar msPattern = /^ms-/;\n\nfunction hyphenateStyleName(string) {\n  return (0, _hyphenate.default)(string).replace(msPattern, '-ms-');\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = hyphenate;\nvar rUpper = /([A-Z])/g;\n\nfunction hyphenate(string) {\n  return string.replace(rUpper, '-$1').toLowerCase();\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = _getComputedStyle;\n\nvar _camelizeStyle = _interopRequireDefault(__webpack_require__(40));\n\nvar rposition = /^(top|right|bottom|left)$/;\nvar rnumnonpx = /^([+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|))(?!px)[a-z%]+$/i;\n\nfunction _getComputedStyle(node) {\n  if (!node) throw new TypeError('No Element passed to `getComputedStyle()`');\n  var doc = node.ownerDocument;\n  return 'defaultView' in doc ? doc.defaultView.opener ? node.ownerDocument.defaultView.getComputedStyle(node, null) : window.getComputedStyle(node, null) : {\n    //ie 8 \"magic\" from: https://github.com/jquery/jquery/blob/1.11-stable/src/css/curCSS.js#L72\n    getPropertyValue: function getPropertyValue(prop) {\n      var style = node.style;\n      prop = (0, _camelizeStyle.default)(prop);\n      if (prop == 'float') prop = 'styleFloat';\n      var current = node.currentStyle[prop] || null;\n      if (current == null && style && style[prop]) current = style[prop];\n\n      if (rnumnonpx.test(current) && !rposition.test(prop)) {\n        // Remember the original values\n        var left = style.left;\n        var runStyle = node.runtimeStyle;\n        var rsLeft = runStyle && runStyle.left; // Put in the new values to get a computed value out\n\n        if (rsLeft) runStyle.left = node.currentStyle.left;\n        style.left = prop === 'fontSize' ? '1em' : current;\n        current = style.pixelLeft + 'px'; // Revert the changed values\n\n        style.left = left;\n        if (rsLeft) runStyle.left = rsLeft;\n      }\n\n      return current;\n    }\n  };\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = removeStyle;\n\nfunction removeStyle(node, key) {\n  return 'removeProperty' in node.style ? node.style.removeProperty(key) : node.style.removeAttribute(key);\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = isTransform;\nvar supportedTransforms = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;\n\nfunction isTransform(property) {\n  return !!(property && supportedTransforms.test(property));\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 65 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"polyfill\", function() { return polyfill; });\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nfunction componentWillMount() {\n  // Call this.constructor.gDSFP to support sub-classes.\n  var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n\n  if (state !== null && state !== undefined) {\n    this.setState(state);\n  }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n  // Call this.constructor.gDSFP to support sub-classes.\n  // Use the setState() updater to ensure state isn't stale in certain edge cases.\n  function updater(prevState) {\n    var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n    return state !== null && state !== undefined ? state : null;\n  } // Binding \"this\" is important for shallow renderer support.\n\n\n  this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n  try {\n    var prevProps = this.props;\n    var prevState = this.state;\n    this.props = nextProps;\n    this.state = nextState;\n    this.__reactInternalSnapshotFlag = true;\n    this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(prevProps, prevState);\n  } finally {\n    this.props = prevProps;\n    this.state = prevState;\n  }\n} // React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\n\n\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n  var prototype = Component.prototype;\n\n  if (!prototype || !prototype.isReactComponent) {\n    throw new Error('Can only polyfill class components');\n  }\n\n  if (typeof Component.getDerivedStateFromProps !== 'function' && typeof prototype.getSnapshotBeforeUpdate !== 'function') {\n    return Component;\n  } // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n  // Error if any of these lifecycles are present,\n  // Because they would work differently between older and newer (16.3+) versions of React.\n\n\n  var foundWillMountName = null;\n  var foundWillReceivePropsName = null;\n  var foundWillUpdateName = null;\n\n  if (typeof prototype.componentWillMount === 'function') {\n    foundWillMountName = 'componentWillMount';\n  } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n    foundWillMountName = 'UNSAFE_componentWillMount';\n  }\n\n  if (typeof prototype.componentWillReceiveProps === 'function') {\n    foundWillReceivePropsName = 'componentWillReceiveProps';\n  } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n    foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n  }\n\n  if (typeof prototype.componentWillUpdate === 'function') {\n    foundWillUpdateName = 'componentWillUpdate';\n  } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n    foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n  }\n\n  if (foundWillMountName !== null || foundWillReceivePropsName !== null || foundWillUpdateName !== null) {\n    var componentName = Component.displayName || Component.name;\n    var newApiName = typeof Component.getDerivedStateFromProps === 'function' ? 'getDerivedStateFromProps()' : 'getSnapshotBeforeUpdate()';\n    throw Error('Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' + componentName + ' uses ' + newApiName + ' but also contains the following legacy lifecycles:' + (foundWillMountName !== null ? '\\n  ' + foundWillMountName : '') + (foundWillReceivePropsName !== null ? '\\n  ' + foundWillReceivePropsName : '') + (foundWillUpdateName !== null ? '\\n  ' + foundWillUpdateName : '') + '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' + 'https://fb.me/react-async-component-lifecycle-hooks');\n  } // React <= 16.2 does not support static getDerivedStateFromProps.\n  // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n  // Newer versions of React will ignore these lifecycles if gDSFP exists.\n\n\n  if (typeof Component.getDerivedStateFromProps === 'function') {\n    prototype.componentWillMount = componentWillMount;\n    prototype.componentWillReceiveProps = componentWillReceiveProps;\n  } // React <= 16.2 does not support getSnapshotBeforeUpdate.\n  // As a workaround, use cWU to invoke the new lifecycle.\n  // Newer versions of React will ignore that lifecycle if gSBU exists.\n\n\n  if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n    if (typeof prototype.componentDidUpdate !== 'function') {\n      throw new Error('Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype');\n    }\n\n    prototype.componentWillUpdate = componentWillUpdate;\n    var componentDidUpdate = prototype.componentDidUpdate;\n\n    prototype.componentDidUpdate = function componentDidUpdatePolyfill(prevProps, prevState, maybeSnapshot) {\n      // 16.3+ will not execute our will-update method;\n      // It will pass a snapshot value to did-update though.\n      // Older versions will require our polyfilled will-update value.\n      // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n      // Because for <= 15.x versions this might be a \"prevContext\" object.\n      // We also can't just check \"__reactInternalSnapshot\",\n      // Because get-snapshot might return a falsy value.\n      // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n      var snapshot = this.__reactInternalSnapshotFlag ? this.__reactInternalSnapshot : maybeSnapshot;\n      componentDidUpdate.call(this, prevProps, prevState, snapshot);\n    };\n  }\n\n  return Component;\n}\n\n\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.classNamesShape = exports.timeoutsShape = void 0;\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(0));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nvar timeoutsShape =  false ? undefined : null;\nexports.timeoutsShape = timeoutsShape;\nvar classNamesShape =  false ? undefined : null;\nexports.classNamesShape = classNamesShape;\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = deprecated;\n\nvar _warning = __webpack_require__(68);\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nvar warned = {};\n\nfunction deprecated(validator, reason) {\n  return function validate(props, propName, componentName, location, propFullName) {\n    var componentNameSafe = componentName || '<<anonymous>>';\n    var propFullNameSafe = propFullName || propName;\n\n    if (props[propName] != null) {\n      var messageKey = componentName + '.' + propName;\n      (0, _warning2.default)(warned[messageKey], 'The ' + location + ' `' + propFullNameSafe + '` of ' + ('`' + componentNameSafe + '` is deprecated. ' + reason + '.'));\n      warned[messageKey] = true;\n    }\n\n    for (var _len = arguments.length, args = Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++) {\n      args[_key - 5] = arguments[_key];\n    }\n\n    return validator.apply(undefined, [props, propName, componentName, location, propFullName].concat(args));\n  };\n}\n/* eslint-disable no-underscore-dangle */\n\n\nfunction _resetWarned() {\n  warned = {};\n}\n\ndeprecated._resetWarned = _resetWarned;\n/* eslint-enable no-underscore-dangle */\n\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = function () {};\n\nif (false) {}\n\nmodule.exports = warning;\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nif (true) {\n  module.exports = __webpack_require__(70);\n} else {}\n\n/***/ }),\n/* 70 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/** @license React v16.8.6\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: !0\n});\nvar b = \"function\" === typeof Symbol && Symbol.for,\n    c = b ? Symbol.for(\"react.element\") : 60103,\n    d = b ? Symbol.for(\"react.portal\") : 60106,\n    e = b ? Symbol.for(\"react.fragment\") : 60107,\n    f = b ? Symbol.for(\"react.strict_mode\") : 60108,\n    g = b ? Symbol.for(\"react.profiler\") : 60114,\n    h = b ? Symbol.for(\"react.provider\") : 60109,\n    k = b ? Symbol.for(\"react.context\") : 60110,\n    l = b ? Symbol.for(\"react.async_mode\") : 60111,\n    m = b ? Symbol.for(\"react.concurrent_mode\") : 60111,\n    n = b ? Symbol.for(\"react.forward_ref\") : 60112,\n    p = b ? Symbol.for(\"react.suspense\") : 60113,\n    q = b ? Symbol.for(\"react.memo\") : 60115,\n    r = b ? Symbol.for(\"react.lazy\") : 60116;\n\nfunction t(a) {\n  if (\"object\" === typeof a && null !== a) {\n    var u = a.$$typeof;\n\n    switch (u) {\n      case c:\n        switch (a = a.type, a) {\n          case l:\n          case m:\n          case e:\n          case g:\n          case f:\n          case p:\n            return a;\n\n          default:\n            switch (a = a && a.$$typeof, a) {\n              case k:\n              case n:\n              case h:\n                return a;\n\n              default:\n                return u;\n            }\n\n        }\n\n      case r:\n      case q:\n      case d:\n        return u;\n    }\n  }\n}\n\nfunction v(a) {\n  return t(a) === m;\n}\n\nexports.typeOf = t;\nexports.AsyncMode = l;\nexports.ConcurrentMode = m;\nexports.ContextConsumer = k;\nexports.ContextProvider = h;\nexports.Element = c;\nexports.ForwardRef = n;\nexports.Fragment = e;\nexports.Lazy = r;\nexports.Memo = q;\nexports.Portal = d;\nexports.Profiler = g;\nexports.StrictMode = f;\nexports.Suspense = p;\n\nexports.isValidElementType = function (a) {\n  return \"string\" === typeof a || \"function\" === typeof a || a === e || a === m || a === g || a === f || a === p || \"object\" === typeof a && null !== a && (a.$$typeof === r || a.$$typeof === q || a.$$typeof === h || a.$$typeof === k || a.$$typeof === n);\n};\n\nexports.isAsyncMode = function (a) {\n  return v(a) || t(a) === l;\n};\n\nexports.isConcurrentMode = v;\n\nexports.isContextConsumer = function (a) {\n  return t(a) === k;\n};\n\nexports.isContextProvider = function (a) {\n  return t(a) === h;\n};\n\nexports.isElement = function (a) {\n  return \"object\" === typeof a && null !== a && a.$$typeof === c;\n};\n\nexports.isForwardRef = function (a) {\n  return t(a) === n;\n};\n\nexports.isFragment = function (a) {\n  return t(a) === e;\n};\n\nexports.isLazy = function (a) {\n  return t(a) === r;\n};\n\nexports.isMemo = function (a) {\n  return t(a) === q;\n};\n\nexports.isPortal = function (a) {\n  return t(a) === d;\n};\n\nexports.isProfiler = function (a) {\n  return t(a) === g;\n};\n\nexports.isStrictMode = function (a) {\n  return t(a) === f;\n};\n\nexports.isSuspense = function (a) {\n  return t(a) === p;\n};\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _react = __webpack_require__(1);\n\nfunction useCommittedRef(value) {\n  var ref = (0, _react.useRef)(value);\n  (0, _react.useEffect)(function () {\n    ref.current = value;\n  }, [value]);\n  return ref;\n}\n\nvar _default = useCommittedRef;\nexports.default = _default;\n\n/***/ }),\n/* 72 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = matches;\n\nvar _inDOM = _interopRequireDefault(__webpack_require__(10));\n\nvar _querySelectorAll = _interopRequireDefault(__webpack_require__(9));\n\nvar matchesCache;\n\nfunction matches(node, selector) {\n  if (!matchesCache && _inDOM.default) {\n    var body = document.body;\n    var nativeMatch = body.matches || body.matchesSelector || body.webkitMatchesSelector || body.mozMatchesSelector || body.msMatchesSelector;\n    matchesCache = nativeMatch ? function (node, selector) {\n      return nativeMatch.call(node, selector);\n    } : ie8MatchesSelector;\n  }\n\n  return matchesCache ? matchesCache(node, selector) : null;\n}\n\nfunction ie8MatchesSelector(node, selector) {\n  var matches = (0, _querySelectorAll.default)(node.document || node.ownerDocument, selector),\n      i = 0;\n\n  while (matches[i] && matches[i] !== node) {\n    i++;\n  }\n\n  return !!matches[i];\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 73 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(0);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _gud = __webpack_require__(74);\n\nvar _gud2 = _interopRequireDefault(_gud);\n\nvar _warning = __webpack_require__(75);\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n  if (!self) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823; // Inlined Object.is polyfill.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n\nfunction objectIs(x, y) {\n  if (x === y) {\n    return x !== 0 || 1 / x === 1 / y;\n  } else {\n    return x !== x && y !== y;\n  }\n}\n\nfunction createEventEmitter(value) {\n  var handlers = [];\n  return {\n    on: function on(handler) {\n      handlers.push(handler);\n    },\n    off: function off(handler) {\n      handlers = handlers.filter(function (h) {\n        return h !== handler;\n      });\n    },\n    get: function get() {\n      return value;\n    },\n    set: function set(newValue, changedBits) {\n      value = newValue;\n      handlers.forEach(function (handler) {\n        return handler(value, changedBits);\n      });\n    }\n  };\n}\n\nfunction onlyChild(children) {\n  return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n  var _Provider$childContex, _Consumer$contextType;\n\n  var contextProp = '__create-react-context-' + (0, _gud2.default)() + '__';\n\n  var Provider = function (_Component) {\n    _inherits(Provider, _Component);\n\n    function Provider() {\n      var _temp, _this, _ret;\n\n      _classCallCheck(this, Provider);\n\n      for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      return _ret = (_temp = (_this = _possibleConstructorReturn(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.emitter = createEventEmitter(_this.props.value), _temp), _possibleConstructorReturn(_this, _ret);\n    }\n\n    Provider.prototype.getChildContext = function getChildContext() {\n      var _ref;\n\n      return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n    };\n\n    Provider.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n      if (this.props.value !== nextProps.value) {\n        var oldValue = this.props.value;\n        var newValue = nextProps.value;\n        var changedBits = void 0;\n\n        if (objectIs(oldValue, newValue)) {\n          changedBits = 0; // No change\n        } else {\n          changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n\n          if (false) {}\n\n          changedBits |= 0;\n\n          if (changedBits !== 0) {\n            this.emitter.set(nextProps.value, changedBits);\n          }\n        }\n      }\n    };\n\n    Provider.prototype.render = function render() {\n      return this.props.children;\n    };\n\n    return Provider;\n  }(_react.Component);\n\n  Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = _propTypes2.default.object.isRequired, _Provider$childContex);\n\n  var Consumer = function (_Component2) {\n    _inherits(Consumer, _Component2);\n\n    function Consumer() {\n      var _temp2, _this2, _ret2;\n\n      _classCallCheck(this, Consumer);\n\n      for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      return _ret2 = (_temp2 = (_this2 = _possibleConstructorReturn(this, _Component2.call.apply(_Component2, [this].concat(args))), _this2), _this2.state = {\n        value: _this2.getValue()\n      }, _this2.onUpdate = function (newValue, changedBits) {\n        var observedBits = _this2.observedBits | 0;\n\n        if ((observedBits & changedBits) !== 0) {\n          _this2.setState({\n            value: _this2.getValue()\n          });\n        }\n      }, _temp2), _possibleConstructorReturn(_this2, _ret2);\n    }\n\n    Consumer.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n      var observedBits = nextProps.observedBits;\n      this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n      : observedBits;\n    };\n\n    Consumer.prototype.componentDidMount = function componentDidMount() {\n      if (this.context[contextProp]) {\n        this.context[contextProp].on(this.onUpdate);\n      }\n\n      var observedBits = this.props.observedBits;\n      this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n      : observedBits;\n    };\n\n    Consumer.prototype.componentWillUnmount = function componentWillUnmount() {\n      if (this.context[contextProp]) {\n        this.context[contextProp].off(this.onUpdate);\n      }\n    };\n\n    Consumer.prototype.getValue = function getValue() {\n      if (this.context[contextProp]) {\n        return this.context[contextProp].get();\n      } else {\n        return defaultValue;\n      }\n    };\n\n    Consumer.prototype.render = function render() {\n      return onlyChild(this.props.children)(this.state.value);\n    };\n\n    return Consumer;\n  }(_react.Component);\n\n  Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = _propTypes2.default.object, _Consumer$contextType);\n  return {\n    Provider: Provider,\n    Consumer: Consumer\n  };\n}\n\nexports.default = createReactContext;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 74 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {// @flow\n\n\nvar key = '__global_unique_id__';\n\nmodule.exports = function () {\n  return global[key] = (global[key] || 0) + 1;\n};\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(41)))\n\n/***/ }),\n/* 75 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\nvar emptyFunction = __webpack_require__(76);\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\n\nvar warning = emptyFunction;\n\nif (false) { var printWarning; }\n\nmodule.exports = warning;\n\n/***/ }),\n/* 76 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\nfunction makeEmptyFunction(arg) {\n  return function () {\n    return arg;\n  };\n}\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\n\n\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\n\nemptyFunction.thatReturnsThis = function () {\n  return this;\n};\n\nemptyFunction.thatReturnsArgument = function (arg) {\n  return arg;\n};\n\nmodule.exports = emptyFunction;\n\n/***/ }),\n/* 77 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = mapContextToProps;\n\nvar _react = _interopRequireDefault(__webpack_require__(1));\n\nvar _forwardRef = _interopRequireDefault(__webpack_require__(46));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nvar getDisplayName = function getDisplayName(Component) {\n  var name = typeof Component === 'string' ? Component : Component.name || Component.displayName;\n  return name ? \"ContextTransform(\" + name + \")\" : 'ContextTransform';\n};\n\nvar ensureConsumer = function ensureConsumer(c) {\n  return c.Consumer || c;\n};\n\nfunction $mapContextToProps(_ref, Component) {\n  var maybeArrayOfConsumers = _ref.consumers,\n      mapToProps = _ref.mapToProps,\n      displayName = _ref.displayName,\n      _ref$forwardRefAs = _ref.forwardRefAs,\n      forwardRefAs = _ref$forwardRefAs === void 0 ? 'ref' : _ref$forwardRefAs;\n  var consumers = maybeArrayOfConsumers;\n\n  if (!Array.isArray(maybeArrayOfConsumers)) {\n    consumers = [maybeArrayOfConsumers];\n  }\n\n  var SingleConsumer = ensureConsumer(consumers[0]);\n\n  function singleRender(props, ref) {\n    var _extends2;\n\n    var propsWithRef = _extends((_extends2 = {}, _extends2[forwardRefAs] = ref, _extends2), props);\n\n    return _react.default.createElement(SingleConsumer, null, function (value) {\n      return _react.default.createElement(Component, _extends({}, propsWithRef, mapToProps(value, props)));\n    });\n  }\n\n  function multiRender(props, ref) {\n    var _extends3;\n\n    var propsWithRef = _extends((_extends3 = {}, _extends3[forwardRefAs] = ref, _extends3), props);\n\n    return consumers.reduceRight(function (inner, Context) {\n      return function () {\n        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n          args[_key] = arguments[_key];\n        }\n\n        var Consumer = ensureConsumer(Context);\n        return _react.default.createElement(Consumer, null, function (value) {\n          return inner.apply(void 0, args.concat([value]));\n        });\n      };\n    }, function () {\n      for (var _len2 = arguments.length, contexts = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        contexts[_key2] = arguments[_key2];\n      }\n\n      return _react.default.createElement(Component, _extends({}, propsWithRef, mapToProps.apply(void 0, contexts.concat([props]))));\n    })();\n  }\n\n  var contextTransform = consumers.length === 1 ? singleRender : multiRender;\n  return (0, _forwardRef.default)(contextTransform, {\n    displayName: displayName || getDisplayName(Component)\n  });\n}\n\nfunction mapContextToProps(maybeOpts, mapToProps, Component) {\n  if (arguments.length === 2) return $mapContextToProps(maybeOpts, mapToProps);\n  return $mapContextToProps({\n    consumers: maybeOpts,\n    mapToProps: mapToProps\n  }, Component);\n}\n\n/***/ }),\n/* 78 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = filterEvents;\n\nvar _contains = _interopRequireDefault(__webpack_require__(22));\n\nvar _querySelectorAll = _interopRequireDefault(__webpack_require__(9));\n\nfunction filterEvents(selector, handler) {\n  return function filterHandler(e) {\n    var top = e.currentTarget,\n        target = e.target,\n        matches = (0, _querySelectorAll.default)(top, selector);\n    if (matches.some(function (match) {\n      return (0, _contains.default)(match, target);\n    })) handler.call(this, e);\n  };\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 79 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = activeElement;\n\nvar _ownerDocument = _interopRequireDefault(__webpack_require__(16));\n\nfunction activeElement(doc) {\n  if (doc === void 0) {\n    doc = (0, _ownerDocument.default)();\n  }\n\n  try {\n    return doc.activeElement;\n  } catch (e) {\n    /* ie throws if no active element */\n  }\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 80 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _addClass = _interopRequireDefault(__webpack_require__(81));\n\nexports.addClass = _addClass.default;\n\nvar _removeClass = _interopRequireDefault(__webpack_require__(82));\n\nexports.removeClass = _removeClass.default;\n\nvar _hasClass = _interopRequireDefault(__webpack_require__(47));\n\nexports.hasClass = _hasClass.default;\nvar _default = {\n  addClass: _addClass.default,\n  removeClass: _removeClass.default,\n  hasClass: _hasClass.default\n};\nexports.default = _default;\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = addClass;\n\nvar _hasClass = _interopRequireDefault(__webpack_require__(47));\n\nfunction addClass(element, className) {\n  if (element.classList) element.classList.add(className);else if (!(0, _hasClass.default)(element, className)) if (typeof element.className === 'string') element.className = element.className + ' ' + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + ' ' + className);\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction replaceClassName(origClass, classToRemove) {\n  return origClass.replace(new RegExp('(^|\\\\s)' + classToRemove + '(?:\\\\s|$)', 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n\nmodule.exports = function removeClass(element, className) {\n  if (element.classList) element.classList.remove(className);else if (typeof element.className === 'string') element.className = replaceClassName(element.className, className);else element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n};\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = isOverflowing;\n\nvar _isWindow = _interopRequireDefault(__webpack_require__(84));\n\nvar _ownerDocument = _interopRequireDefault(__webpack_require__(16));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction isBody(node) {\n  return node && node.tagName.toLowerCase() === 'body';\n}\n\nfunction bodyIsOverflowing(node) {\n  var doc = (0, _ownerDocument.default)(node);\n  var win = (0, _isWindow.default)(doc);\n  return doc.body.clientWidth < win.innerWidth;\n}\n\nfunction isOverflowing(container) {\n  var win = (0, _isWindow.default)(container);\n  return win || isBody(container) ? bodyIsOverflowing(container) : container.scrollHeight > container.clientHeight;\n}\n\nmodule.exports = exports.default;\n\n/***/ }),\n/* 84 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = getWindow;\n\nfunction getWindow(node) {\n  return node === node.window ? node : node.nodeType === 9 ? node.defaultView || node.parentWindow : false;\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.ariaHidden = ariaHidden;\nexports.hideSiblings = hideSiblings;\nexports.showSiblings = showSiblings;\nvar BLACKLIST = ['template', 'script', 'style'];\n\nvar isHidable = function isHidable(_ref) {\n  var nodeType = _ref.nodeType,\n      tagName = _ref.tagName;\n  return nodeType === 1 && BLACKLIST.indexOf(tagName.toLowerCase()) === -1;\n};\n\nvar siblings = function siblings(container, exclude, cb) {\n  exclude = [].concat(exclude);\n  [].forEach.call(container.children, function (node) {\n    if (exclude.indexOf(node) === -1 && isHidable(node)) {\n      cb(node);\n    }\n  });\n};\n\nfunction ariaHidden(show, node) {\n  if (!node) return;\n\n  if (show) {\n    node.setAttribute('aria-hidden', 'true');\n  } else {\n    node.removeAttribute('aria-hidden');\n  }\n}\n\nfunction hideSiblings(container, _ref2) {\n  var root = _ref2.root,\n      backdrop = _ref2.backdrop;\n  siblings(container, [root, backdrop], function (node) {\n    return ariaHidden(true, node);\n  });\n}\n\nfunction showSiblings(container, _ref3) {\n  var root = _ref3.root,\n      backdrop = _ref3.backdrop;\n  siblings(container, [root, backdrop], function (node) {\n    return ariaHidden(false, node);\n  });\n}\n\n/***/ }),\n/* 86 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/extends.js\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n// EXTERNAL MODULE: ./node_modules/classnames/index.js\nvar classnames = __webpack_require__(2);\nvar classnames_default = /*#__PURE__*/__webpack_require__.n(classnames);\n\n// EXTERNAL MODULE: external {\"root\":\"React\",\"commonjs2\":\"react\",\"commonjs\":\"react\",\"amd\":\"react\"}\nvar external_root_React_commonjs2_react_commonjs_react_amd_react_ = __webpack_require__(1);\nvar external_root_React_commonjs2_react_commonjs_react_amd_react_default = /*#__PURE__*/__webpack_require__.n(external_root_React_commonjs2_react_commonjs_react_amd_react_);\n\n// EXTERNAL MODULE: ./node_modules/prop-types/index.js\nvar prop_types = __webpack_require__(0);\nvar prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);\n\n// EXTERNAL MODULE: ./node_modules/uncontrollable/hook.js\nvar hook = __webpack_require__(15);\nvar hook_default = /*#__PURE__*/__webpack_require__.n(hook);\n\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n// EXTERNAL MODULE: ./node_modules/@restart/context/forwardRef.js\nvar forwardRef = __webpack_require__(32);\nvar forwardRef_default = /*#__PURE__*/__webpack_require__.n(forwardRef);\n\n// CONCATENATED MODULE: ./src/ThemeProvider.js\n\n\nvar _jsxFileName = \"/Users/jason/src/react-bootstrap/src/ThemeProvider.js\";\n\n\n\nvar ThemeContext = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createContext(new Map());\nvar Consumer = ThemeContext.Consumer,\n    Provider = ThemeContext.Provider;\n\nvar ThemeProvider_ThemeProvider =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(ThemeProvider, _React$Component);\n\n  function ThemeProvider() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n    _this.prefixes = new Map();\n    Object.keys(_this.props.prefixes).forEach(function (key) {\n      _this.prefixes.set(key, _this.props.prefixes[key]);\n    });\n    return _this;\n  }\n\n  var _proto = ThemeProvider.prototype;\n\n  _proto.render = function render() {\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Provider, {\n      value: this.prefixes,\n      __source: {\n        fileName: _jsxFileName,\n        lineNumber: 22\n      },\n      __self: this\n    }, this.props.children);\n  };\n\n  return ThemeProvider;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nThemeProvider_ThemeProvider.propTypes = {\n  prefixes: prop_types_default.a.object.isRequired\n};\nfunction useBootstrapPrefix(prefix, defaultPrefix) {\n  var prefixes = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(ThemeContext);\n  return prefix || prefixes.get(defaultPrefix) || defaultPrefix;\n}\n\nfunction createBootstrapComponent(Component, opts) {\n  if (typeof opts === 'string') opts = {\n    prefix: opts\n  };\n  var isClassy = Component.prototype && Component.prototype.isReactComponent; // If it's a functional component make sure we don't break it with a ref\n\n  var _opts = opts,\n      prefix = _opts.prefix,\n      _opts$forwardRefAs = _opts.forwardRefAs,\n      forwardRefAs = _opts$forwardRefAs === void 0 ? isClassy ? 'ref' : 'innerRef' : _opts$forwardRefAs;\n  return forwardRef_default()(function (_ref, ref) {\n    var props = _extends({}, _ref);\n\n    props[forwardRefAs] = ref;\n    var prefixes = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(ThemeContext);\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n      // eslint-disable-next-line react/prop-types\n      bsPrefix: props.bsPrefix || prefixes.get(prefix) || prefix,\n      __source: {\n        fileName: _jsxFileName,\n        lineNumber: 42\n      },\n      __self: this\n    }));\n  }, {\n    displayName: \"Bootstrap(\" + (Component.displayName || Component.name) + \")\"\n  });\n}\n\n\n/* harmony default export */ var src_ThemeProvider = (ThemeProvider_ThemeProvider);\n// CONCATENATED MODULE: ./src/SelectableContext.js\n\nvar SelectableContext = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createContext();\nvar makeEventKey = function makeEventKey(eventKey, href) {\n  if (eventKey != null) return String(eventKey);\n  return href || null;\n};\n/* harmony default export */ var src_SelectableContext = (SelectableContext);\n// CONCATENATED MODULE: ./src/AccordionToggle.js\n\n\nvar AccordionToggle_jsxFileName = \"/Users/jason/src/react-bootstrap/src/AccordionToggle.js\";\n\n\n\nvar propTypes = {\n  /** Set a custom element for this component */\n  as: prop_types_default.a.elementType,\n\n  /**\n   * A key that corresponds to the collapse component that gets triggered\n   * when this has been clicked.\n   */\n  eventKey: prop_types_default.a.string.isRequired,\n\n  /** A callback function for when this component is clicked */\n  onClick: prop_types_default.a.func,\n\n  /** Children prop should only contain a single child, and  is enforced as such */\n  children: prop_types_default.a.element\n};\nvar AccordionToggle_defaultProps = {\n  as: 'button'\n};\nvar AccordionToggle = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var Component = _ref.as,\n      children = _ref.children,\n      eventKey = _ref.eventKey,\n      _onClick = _ref.onClick,\n      props = _objectWithoutPropertiesLoose(_ref, [\"as\", \"children\", \"eventKey\", \"onClick\"]);\n\n  var onSelect = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(src_SelectableContext);\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({\n    ref: ref,\n    onClick: function onClick(e) {\n      onSelect(eventKey, e);\n      if (_onClick) _onClick(e);\n    }\n  }, props, {\n    __source: {\n      fileName: AccordionToggle_jsxFileName,\n      lineNumber: 31\n    },\n    __self: this\n  }), children);\n});\nAccordionToggle.propTypes = propTypes;\nAccordionToggle.defaultProps = AccordionToggle_defaultProps;\n/* harmony default export */ var src_AccordionToggle = (AccordionToggle);\n// EXTERNAL MODULE: ./node_modules/dom-helpers/style/index.js\nvar dom_helpers_style = __webpack_require__(11);\nvar style_default = /*#__PURE__*/__webpack_require__.n(dom_helpers_style);\n\n// EXTERNAL MODULE: ./node_modules/dom-helpers/transition/end.js\nvar end = __webpack_require__(23);\nvar end_default = /*#__PURE__*/__webpack_require__.n(end);\n\n// EXTERNAL MODULE: ./node_modules/react-transition-group/Transition.js\nvar react_transition_group_Transition = __webpack_require__(12);\nvar Transition_default = /*#__PURE__*/__webpack_require__.n(react_transition_group_Transition);\n\n// CONCATENATED MODULE: ./src/utils/triggerBrowserReflow.js\n// reading a dimension prop will cause the browser to recalculate,\n// which will let our animations work\nfunction triggerBrowserReflow(node) {\n  node.offsetHeight; // eslint-disable-line no-unused-expressions\n}\n// CONCATENATED MODULE: ./src/utils/createChainedFunction.js\n/**\n * Safe chained function\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n *\n * @param {function} functions to chain\n * @returns {function|null}\n */\nfunction createChainedFunction() {\n  for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n    funcs[_key] = arguments[_key];\n  }\n\n  return funcs.filter(function (f) {\n    return f != null;\n  }).reduce(function (acc, f) {\n    if (typeof f !== 'function') {\n      throw new Error('Invalid Argument Type, must only provide functions, undefined, or null.');\n    }\n\n    if (acc === null) return f;\n    return function chainedFunction() {\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      acc.apply(this, args);\n      f.apply(this, args);\n    };\n  }, null);\n}\n\n/* harmony default export */ var utils_createChainedFunction = (createChainedFunction);\n// CONCATENATED MODULE: ./src/Collapse.js\n\n\n\n\nvar _collapseStyles,\n    Collapse_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Collapse.js\";\n\n\n\n\n\n\n\n\n\nvar MARGINS = {\n  height: ['marginTop', 'marginBottom'],\n  width: ['marginLeft', 'marginRight']\n};\n\nfunction getDimensionValue(dimension, elem) {\n  var offset = \"offset\" + dimension[0].toUpperCase() + dimension.slice(1);\n  var value = elem[offset];\n  var margins = MARGINS[dimension];\n  return value + parseInt(style_default()(elem, margins[0]), 10) + parseInt(style_default()(elem, margins[1]), 10);\n}\n\nvar collapseStyles = (_collapseStyles = {}, _collapseStyles[react_transition_group_Transition[\"EXITED\"]] = 'collapse', _collapseStyles[react_transition_group_Transition[\"EXITING\"]] = 'collapsing', _collapseStyles[react_transition_group_Transition[\"ENTERING\"]] = 'collapsing', _collapseStyles[react_transition_group_Transition[\"ENTERED\"]] = 'collapse show', _collapseStyles);\nvar Collapse_propTypes = {\n  /**\n   * Show the component; triggers the expand or collapse animation\n   */\n  in: prop_types_default.a.bool,\n\n  /**\n   * Wait until the first \"enter\" transition to mount the component (add it to the DOM)\n   */\n  mountOnEnter: prop_types_default.a.bool,\n\n  /**\n   * Unmount the component (remove it from the DOM) when it is collapsed\n   */\n  unmountOnExit: prop_types_default.a.bool,\n\n  /**\n   * Run the expand animation when the component mounts, if it is initially\n   * shown\n   */\n  appear: prop_types_default.a.bool,\n\n  /**\n   * Duration of the collapse animation in milliseconds, to ensure that\n   * finishing callbacks are fired even if the original browser transition end\n   * events are canceled\n   */\n  timeout: prop_types_default.a.number,\n\n  /**\n   * Callback fired before the component expands\n   */\n  onEnter: prop_types_default.a.func,\n\n  /**\n   * Callback fired after the component starts to expand\n   */\n  onEntering: prop_types_default.a.func,\n\n  /**\n   * Callback fired after the component has expanded\n   */\n  onEntered: prop_types_default.a.func,\n\n  /**\n   * Callback fired before the component collapses\n   */\n  onExit: prop_types_default.a.func,\n\n  /**\n   * Callback fired after the component starts to collapse\n   */\n  onExiting: prop_types_default.a.func,\n\n  /**\n   * Callback fired after the component has collapsed\n   */\n  onExited: prop_types_default.a.func,\n\n  /**\n   * The dimension used when collapsing, or a function that returns the\n   * dimension\n   *\n   * _Note: Bootstrap only partially supports 'width'!\n   * You will need to supply your own CSS animation for the `.width` CSS class._\n   */\n  dimension: prop_types_default.a.oneOfType([prop_types_default.a.oneOf(['height', 'width']), prop_types_default.a.func]),\n\n  /**\n   * Function that returns the height or width of the animating DOM node\n   *\n   * Allows for providing some custom logic for how much the Collapse component\n   * should animate in its specified dimension. Called with the current\n   * dimension prop value and the DOM node.\n   *\n   * @default element.offsetWidth | element.offsetHeight\n   */\n  getDimensionValue: prop_types_default.a.func,\n\n  /**\n   * ARIA role of collapsible element\n   */\n  role: prop_types_default.a.string\n};\nvar Collapse_defaultProps = {\n  in: false,\n  timeout: 300,\n  mountOnEnter: false,\n  unmountOnExit: false,\n  appear: false,\n  dimension: 'height',\n  getDimensionValue: getDimensionValue\n};\n\nvar Collapse_Collapse =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Collapse, _React$Component);\n\n  function Collapse() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n    _this.handleEnter = function (elem) {\n      elem.style[_this.getDimension()] = '0';\n    };\n\n    _this.handleEntering = function (elem) {\n      var dimension = _this.getDimension();\n\n      elem.style[dimension] = _this._getScrollDimensionValue(elem, dimension);\n    };\n\n    _this.handleEntered = function (elem) {\n      elem.style[_this.getDimension()] = null;\n    };\n\n    _this.handleExit = function (elem) {\n      var dimension = _this.getDimension();\n\n      elem.style[dimension] = _this.props.getDimensionValue(dimension, elem) + \"px\";\n      triggerBrowserReflow(elem);\n    };\n\n    _this.handleExiting = function (elem) {\n      elem.style[_this.getDimension()] = '0';\n    };\n\n    return _this;\n  }\n\n  var _proto = Collapse.prototype;\n\n  _proto.getDimension = function getDimension() {\n    return typeof this.props.dimension === 'function' ? this.props.dimension() : this.props.dimension;\n  }\n  /* -- Expanding -- */\n  ;\n\n  // for testing\n  _proto._getScrollDimensionValue = function _getScrollDimensionValue(elem, dimension) {\n    var scroll = \"scroll\" + dimension[0].toUpperCase() + dimension.slice(1);\n    return elem[scroll] + \"px\";\n  };\n\n  _proto.render = function render() {\n    var _this2 = this;\n\n    var _this$props = this.props,\n        onEnter = _this$props.onEnter,\n        onEntering = _this$props.onEntering,\n        onEntered = _this$props.onEntered,\n        onExit = _this$props.onExit,\n        onExiting = _this$props.onExiting,\n        className = _this$props.className,\n        children = _this$props.children,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"className\", \"children\"]);\n\n    delete props.dimension;\n    delete props.getDimensionValue;\n    var handleEnter = utils_createChainedFunction(this.handleEnter, onEnter);\n    var handleEntering = utils_createChainedFunction(this.handleEntering, onEntering);\n    var handleEntered = utils_createChainedFunction(this.handleEntered, onEntered);\n    var handleExit = utils_createChainedFunction(this.handleExit, onExit);\n    var handleExiting = utils_createChainedFunction(this.handleExiting, onExiting);\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Transition_default.a, _extends({\n      addEndListener: end_default.a\n    }, props, {\n      \"aria-expanded\": props.role ? props.in : null,\n      onEnter: handleEnter,\n      onEntering: handleEntering,\n      onEntered: handleEntered,\n      onExit: handleExit,\n      onExiting: handleExiting,\n      __source: {\n        fileName: Collapse_jsxFileName,\n        lineNumber: 200\n      },\n      __self: this\n    }), function (state, innerProps) {\n      return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.cloneElement(children, _extends({}, innerProps, {\n        className: classnames_default()(className, children.props.className, collapseStyles[state], _this2.getDimension() === 'width' && 'width')\n      }));\n    });\n  };\n\n  return Collapse;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nCollapse_Collapse.propTypes = Collapse_propTypes;\nCollapse_Collapse.defaultProps = Collapse_defaultProps;\n/* harmony default export */ var src_Collapse = (Collapse_Collapse);\n// CONCATENATED MODULE: ./src/AccordionContext.js\n\n/* harmony default export */ var AccordionContext = (external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createContext(null));\n// CONCATENATED MODULE: ./src/AccordionCollapse.js\n\n\nvar AccordionCollapse_jsxFileName = \"/Users/jason/src/react-bootstrap/src/AccordionCollapse.js\";\n\n\n\n\nvar AccordionCollapse_propTypes = {\n  /**\n   * A key that corresponds to the toggler that triggers this collapse's expand or collapse.\n   */\n  eventKey: prop_types_default.a.string.isRequired,\n  children: prop_types_default.a.element.isRequired\n};\nvar AccordionCollapse = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var children = _ref.children,\n      eventKey = _ref.eventKey,\n      props = _objectWithoutPropertiesLoose(_ref, [\"children\", \"eventKey\"]);\n\n  var contextEventKey = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(AccordionContext);\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Collapse, _extends({\n    ref: ref,\n    in: contextEventKey === eventKey\n  }, props, {\n    __source: {\n      fileName: AccordionCollapse_jsxFileName,\n      lineNumber: 21\n    },\n    __self: this\n  }), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", {\n    __source: {\n      fileName: AccordionCollapse_jsxFileName,\n      lineNumber: 22\n    },\n    __self: this\n  }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Children.only(children)));\n});\nAccordionCollapse.propTypes = AccordionCollapse_propTypes;\n/* harmony default export */ var src_AccordionCollapse = (AccordionCollapse);\n// CONCATENATED MODULE: ./src/Accordion.js\n\n\nvar Accordion_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Accordion.js\";\n\n\n\n\n\n\n\n\n\nvar Accordion_propTypes = {\n  /** Set a custom element for this component */\n  as: prop_types_default.a.elementType,\n\n  /** @default 'accordion' */\n  bsPrefix: prop_types_default.a.string,\n\n  /** The current active key that corresponds to the currently expanded card */\n  activeKey: prop_types_default.a.string,\n\n  /** The default active key that is expanded on start */\n  defaultActiveKey: prop_types_default.a.string\n};\nvar Accordion_defaultProps = {\n  as: 'div'\n};\nvar Accordion = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (props, ref) {\n  var _useUncontrolled = hook_default()(props, {\n    activeKey: 'onSelect'\n  }),\n      Component = _useUncontrolled.as,\n      activeKey = _useUncontrolled.activeKey,\n      bsPrefix = _useUncontrolled.bsPrefix,\n      children = _useUncontrolled.children,\n      className = _useUncontrolled.className,\n      onSelect = _useUncontrolled.onSelect,\n      controlledProps = _objectWithoutPropertiesLoose(_useUncontrolled, [\"as\", \"activeKey\", \"bsPrefix\", \"children\", \"className\", \"onSelect\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'accordion');\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(AccordionContext.Provider, {\n    value: activeKey,\n    __source: {\n      fileName: Accordion_jsxFileName,\n      lineNumber: 45\n    },\n    __self: this\n  }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_SelectableContext.Provider, {\n    value: onSelect,\n    __source: {\n      fileName: Accordion_jsxFileName,\n      lineNumber: 46\n    },\n    __self: this\n  }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({\n    ref: ref\n  }, controlledProps, {\n    className: classnames_default()(className, bsPrefix),\n    __source: {\n      fileName: Accordion_jsxFileName,\n      lineNumber: 47\n    },\n    __self: this\n  }), children)));\n});\nAccordion.propTypes = Accordion_propTypes;\nAccordion.defaultProps = Accordion_defaultProps;\nAccordion.Toggle = src_AccordionToggle;\nAccordion.Collapse = src_AccordionCollapse;\n/* harmony default export */ var src_Accordion = (Accordion);\n// EXTERNAL MODULE: ./node_modules/prop-types-extra/lib/index.js\nvar lib = __webpack_require__(19);\n\n// EXTERNAL MODULE: ./node_modules/@restart/hooks/useEventCallback.js\nvar useEventCallback = __webpack_require__(8);\nvar useEventCallback_default = /*#__PURE__*/__webpack_require__.n(useEventCallback);\n\n// EXTERNAL MODULE: ./node_modules/dom-helpers/util/camelize.js\nvar camelize = __webpack_require__(33);\nvar camelize_default = /*#__PURE__*/__webpack_require__.n(camelize);\n\n// CONCATENATED MODULE: ./src/utils/createWithBsPrefix.js\n\n\nvar createWithBsPrefix_jsxFileName = \"/Users/jason/src/react-bootstrap/src/utils/createWithBsPrefix.js\";\n\n\n\n\n\nvar createWithBsPrefix_pascalCase = function pascalCase(str) {\n  return str[0].toUpperCase() + camelize_default()(str).slice(1);\n};\n\nfunction createWithBsPrefix(prefix, _temp) {\n  var _ref = _temp === void 0 ? {} : _temp,\n      _ref$displayName = _ref.displayName,\n      displayName = _ref$displayName === void 0 ? createWithBsPrefix_pascalCase(prefix) : _ref$displayName,\n      _ref$Component = _ref.Component,\n      Component = _ref$Component === void 0 ? 'div' : _ref$Component,\n      defaultProps = _ref.defaultProps;\n\n  var BsComponent = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef( // eslint-disable-next-line react/prop-types\n  function (_ref2, ref) {\n    var className = _ref2.className,\n        bsPrefix = _ref2.bsPrefix,\n        _ref2$as = _ref2.as,\n        Tag = _ref2$as === void 0 ? Component : _ref2$as,\n        props = _objectWithoutPropertiesLoose(_ref2, [\"className\", \"bsPrefix\", \"as\"]);\n\n    var resolvedPrefix = useBootstrapPrefix(bsPrefix, prefix);\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Tag, _extends({\n      ref: ref,\n      className: classnames_default()(className, resolvedPrefix)\n    }, props, {\n      __source: {\n        fileName: createWithBsPrefix_jsxFileName,\n        lineNumber: 18\n      },\n      __self: this\n    }));\n  });\n  BsComponent.defaultProps = defaultProps;\n  BsComponent.displayName = displayName;\n  return BsComponent;\n}\n// CONCATENATED MODULE: ./src/utils/divWithClassName.js\n\nvar divWithClassName_jsxFileName = \"/Users/jason/src/react-bootstrap/src/utils/divWithClassName.js\";\n\n\n/* harmony default export */ var divWithClassName = (function (className) {\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (p, ref) {\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", _extends({}, p, {\n      ref: ref,\n      className: classnames_default()(p.className, className),\n      __source: {\n        fileName: divWithClassName_jsxFileName,\n        lineNumber: 6\n      },\n      __self: this\n    }));\n  });\n});\n// CONCATENATED MODULE: ./src/Fade.js\n\n\n\n\nvar _fadeStyles,\n    Fade_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Fade.js\";\n\n\n\n\n\n\n\nvar Fade_propTypes = {\n  /**\n   * Show the component; triggers the fade in or fade out animation\n   */\n  in: prop_types_default.a.bool,\n\n  /**\n   * Wait until the first \"enter\" transition to mount the component (add it to the DOM)\n   */\n  mountOnEnter: prop_types_default.a.bool,\n\n  /**\n   * Unmount the component (remove it from the DOM) when it is faded out\n   */\n  unmountOnExit: prop_types_default.a.bool,\n\n  /**\n   * Run the fade in animation when the component mounts, if it is initially\n   * shown\n   */\n  appear: prop_types_default.a.bool,\n\n  /**\n   * Duration of the fade animation in milliseconds, to ensure that finishing\n   * callbacks are fired even if the original browser transition end events are\n   * canceled\n   */\n  timeout: prop_types_default.a.number,\n\n  /**\n   * Callback fired before the component fades in\n   */\n  onEnter: prop_types_default.a.func,\n\n  /**\n   * Callback fired after the component starts to fade in\n   */\n  onEntering: prop_types_default.a.func,\n\n  /**\n   * Callback fired after the has component faded in\n   */\n  onEntered: prop_types_default.a.func,\n\n  /**\n   * Callback fired before the component fades out\n   */\n  onExit: prop_types_default.a.func,\n\n  /**\n   * Callback fired after the component starts to fade out\n   */\n  onExiting: prop_types_default.a.func,\n\n  /**\n   * Callback fired after the component has faded out\n   */\n  onExited: prop_types_default.a.func\n};\nvar Fade_defaultProps = {\n  in: false,\n  timeout: 300,\n  mountOnEnter: false,\n  unmountOnExit: false,\n  appear: false\n};\nvar fadeStyles = (_fadeStyles = {}, _fadeStyles[react_transition_group_Transition[\"ENTERING\"]] = 'show', _fadeStyles[react_transition_group_Transition[\"ENTERED\"]] = 'show', _fadeStyles);\n\nvar Fade_Fade =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Fade, _React$Component);\n\n  function Fade() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n    _this.handleEnter = function (node) {\n      triggerBrowserReflow(node);\n      if (_this.props.onEnter) _this.props.onEnter(node);\n    };\n\n    return _this;\n  }\n\n  var _proto = Fade.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        className = _this$props.className,\n        children = _this$props.children,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"className\", \"children\"]);\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Transition_default.a, _extends({\n      addEndListener: end_default.a\n    }, props, {\n      onEnter: this.handleEnter,\n      __source: {\n        fileName: Fade_jsxFileName,\n        lineNumber: 89\n      },\n      __self: this\n    }), function (status, innerProps) {\n      return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.cloneElement(children, _extends({}, innerProps, {\n        className: classnames_default()('fade', className, children.props.className, fadeStyles[status])\n      }));\n    });\n  };\n\n  return Fade;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nFade_Fade.propTypes = Fade_propTypes;\nFade_Fade.defaultProps = Fade_defaultProps;\n/* harmony default export */ var src_Fade = (Fade_Fade);\n// CONCATENATED MODULE: ./src/CloseButton.js\nvar CloseButton_jsxFileName = \"/Users/jason/src/react-bootstrap/src/CloseButton.js\";\n\n\nvar CloseButton_propTypes = {\n  label: prop_types_default.a.string.isRequired,\n  onClick: prop_types_default.a.func\n};\nvar CloseButton_defaultProps = {\n  label: 'Close'\n};\nvar CloseButton = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var label = _ref.label,\n      onClick = _ref.onClick;\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"button\", {\n    ref: ref,\n    type: \"button\",\n    className: \"close\",\n    onClick: onClick,\n    __source: {\n      fileName: CloseButton_jsxFileName,\n      lineNumber: 14\n    },\n    __self: this\n  }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"span\", {\n    \"aria-hidden\": \"true\",\n    __source: {\n      fileName: CloseButton_jsxFileName,\n      lineNumber: 15\n    },\n    __self: this\n  }, \"\\xD7\"), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"span\", {\n    className: \"sr-only\",\n    __source: {\n      fileName: CloseButton_jsxFileName,\n      lineNumber: 16\n    },\n    __self: this\n  }, label));\n});\nCloseButton.displayName = 'CloseButton';\nCloseButton.propTypes = CloseButton_propTypes;\nCloseButton.defaultProps = CloseButton_defaultProps;\n/* harmony default export */ var src_CloseButton = (CloseButton);\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n// CONCATENATED MODULE: ./src/SafeAnchor.js\n\n\n\n\nvar SafeAnchor_jsxFileName = \"/Users/jason/src/react-bootstrap/src/SafeAnchor.js\";\n\n\n\nvar SafeAnchor_propTypes = {\n  href: prop_types_default.a.string,\n  onClick: prop_types_default.a.func,\n  onKeyDown: prop_types_default.a.func,\n  disabled: prop_types_default.a.bool,\n  role: prop_types_default.a.string,\n  tabIndex: prop_types_default.a.oneOfType([prop_types_default.a.number, prop_types_default.a.string]),\n\n  /**\n   * this is sort of silly but needed for Button\n   */\n  as: prop_types_default.a.elementType,\n\n  /** @private */\n  innerRef: prop_types_default.a.any\n};\nvar SafeAnchor_defaultProps = {\n  as: 'a'\n};\n\nfunction isTrivialHref(href) {\n  return !href || href.trim() === '#';\n}\n/**\n * There are situations due to browser quirks or Bootstrap CSS where\n * an anchor tag is needed, when semantically a button tag is the\n * better choice. SafeAnchor ensures that when an anchor is used like a\n * button its accessible. It also emulates input `disabled` behavior for\n * links, which is usually desirable for Buttons, NavItems, DropdownItems, etc.\n */\n\n\nvar SafeAnchor_SafeAnchor =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(SafeAnchor, _React$Component);\n\n  function SafeAnchor(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n    _this.handleClick = _this.handleClick.bind(_assertThisInitialized(_this));\n    _this.handleKeyDown = _this.handleKeyDown.bind(_assertThisInitialized(_this));\n    return _this;\n  }\n\n  var _proto = SafeAnchor.prototype;\n\n  _proto.handleClick = function handleClick(event) {\n    var _this$props = this.props,\n        disabled = _this$props.disabled,\n        href = _this$props.href,\n        onClick = _this$props.onClick;\n\n    if (disabled || isTrivialHref(href)) {\n      event.preventDefault();\n    }\n\n    if (disabled) {\n      event.stopPropagation();\n      return;\n    }\n\n    if (onClick) {\n      onClick(event);\n    }\n  };\n\n  _proto.handleKeyDown = function handleKeyDown(event) {\n    if (event.key === ' ') {\n      event.preventDefault();\n      this.handleClick(event);\n    }\n  };\n\n  _proto.render = function render() {\n    var _this$props2 = this.props,\n        Component = _this$props2.as,\n        disabled = _this$props2.disabled,\n        onKeyDown = _this$props2.onKeyDown,\n        innerRef = _this$props2.innerRef,\n        props = _objectWithoutPropertiesLoose(_this$props2, [\"as\", \"disabled\", \"onKeyDown\", \"innerRef\"]);\n\n    if (isTrivialHref(props.href)) {\n      props.role = props.role || 'button'; // we want to make sure there is a href attribute on the node\n      // otherwise, the cursor incorrectly styled (except with role='button')\n\n      props.href = props.href || '#';\n    }\n\n    if (disabled) {\n      props.tabIndex = -1;\n      props['aria-disabled'] = true;\n    }\n\n    if (innerRef) props.ref = innerRef;\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n      onClick: this.handleClick,\n      onKeyDown: utils_createChainedFunction(this.handleKeyDown, onKeyDown),\n      __source: {\n        fileName: SafeAnchor_jsxFileName,\n        lineNumber: 92\n      },\n      __self: this\n    }));\n  };\n\n  return SafeAnchor;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nSafeAnchor_SafeAnchor.propTypes = SafeAnchor_propTypes;\nSafeAnchor_SafeAnchor.defaultProps = SafeAnchor_defaultProps;\n/* harmony default export */ var src_SafeAnchor = (SafeAnchor_SafeAnchor);\n// CONCATENATED MODULE: ./src/Alert.js\n\n\nvar Alert_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Alert.js\";\n\n\n\n\n\n\n\n\n\n\n\n\nvar Alert_propTypes = {\n  /**\n   * @default 'alert'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * The Alert visual variant\n   *\n   * @type {'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'dark' | 'light'}\n   */\n  variant: prop_types_default.a.string,\n\n  /**\n   * Renders a properly aligned dismiss button, as well as\n   * adding extra horizontal padding to the Alert.\n   */\n  dismissible: prop_types_default.a.bool,\n\n  /**\n   * Controls the visual state of the Alert.\n   *\n   * @controllable onClose\n   */\n  show: prop_types_default.a.bool,\n\n  /**\n   * Callback fired when alert is closed.\n   *\n   * @controllable show\n   */\n  onClose: prop_types_default.a.func,\n\n  /**\n   * Sets the text for alert close button.\n   */\n  closeLabel: prop_types_default.a.string,\n\n  /** A `react-transition-group` Transition component used to animate the Alert on dismissal. */\n  transition: lib[\"elementType\"]\n};\nvar Alert_defaultProps = {\n  show: true,\n  transition: src_Fade,\n  closeLabel: 'Close alert'\n};\nvar controllables = {\n  show: 'onClose'\n};\nvar Alert = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (uncontrolledProps, ref) {\n  var _useControllable = hook_default()(uncontrolledProps, controllables),\n      bsPrefix = _useControllable.bsPrefix,\n      show = _useControllable.show,\n      closeLabel = _useControllable.closeLabel,\n      className = _useControllable.className,\n      children = _useControllable.children,\n      variant = _useControllable.variant,\n      onClose = _useControllable.onClose,\n      dismissible = _useControllable.dismissible,\n      Transition = _useControllable.transition,\n      props = _objectWithoutPropertiesLoose(_useControllable, [\"bsPrefix\", \"show\", \"closeLabel\", \"className\", \"children\", \"variant\", \"onClose\", \"dismissible\", \"transition\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'alert');\n  var handleClose = useEventCallback_default()(function (e) {\n    onClose(false, e);\n  });\n  var alert = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", _extends({\n    role: \"alert\"\n  }, Transition ? props : undefined, {\n    className: classnames_default()(className, prefix, variant && prefix + \"-\" + variant, dismissible && prefix + \"-dismissible\"),\n    __source: {\n      fileName: Alert_jsxFileName,\n      lineNumber: 87\n    },\n    __self: this\n  }), dismissible && external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_CloseButton, {\n    onClick: handleClose,\n    label: closeLabel,\n    __source: {\n      fileName: Alert_jsxFileName,\n      lineNumber: 97\n    },\n    __self: this\n  }), children);\n  if (!Transition) return show ? alert : null;\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Transition, _extends({\n    unmountOnExit: true,\n    ref: ref\n  }, props, {\n    in: show,\n    __source: {\n      fileName: Alert_jsxFileName,\n      lineNumber: 105\n    },\n    __self: this\n  }), alert);\n});\nvar DivStyledAsH4 = divWithClassName('h4');\nDivStyledAsH4.displayName = 'DivStyledAsH4';\nAlert.displayName = 'Alert';\nAlert.propTypes = Alert_propTypes;\nAlert.defaultProps = Alert_defaultProps;\nAlert.Link = createWithBsPrefix('alert-link', {\n  Component: src_SafeAnchor\n});\nAlert.Heading = createWithBsPrefix('alert-heading', {\n  Component: DivStyledAsH4\n});\n/* harmony default export */ var src_Alert = (Alert);\n// CONCATENATED MODULE: ./src/Badge.js\n\n\nvar Badge_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Badge.js\";\n\n\n\n\nvar Badge_propTypes = {\n  /** @default 'badge' */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * The visual style of the badge\n   *\n   * @type {('primary'|'secondary'|'success'|'danger'|'warning'|'info'|'light'|'dark')}\n   */\n  variant: prop_types_default.a.string,\n\n  /**\n   * Add the `pill` modifier to make badges more rounded with\n   * some additional horizontal padding\n   */\n  pill: prop_types_default.a.bool.isRequired\n};\nvar Badge_defaultProps = {\n  pill: false\n};\nvar Badge = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      variant = _ref.variant,\n      pill = _ref.pill,\n      className = _ref.className,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"variant\", \"pill\", \"className\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'badge');\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"span\", _extends({\n    ref: ref\n  }, props, {\n    className: classnames_default()(className, prefix, pill && prefix + \"-pill\", variant && prefix + \"-\" + variant),\n    __source: {\n      fileName: Badge_jsxFileName,\n      lineNumber: 33\n    },\n    __self: this\n  }));\n});\nBadge.displayName = 'Badge';\nBadge.propTypes = Badge_propTypes;\nBadge.defaultProps = Badge_defaultProps;\n/* harmony default export */ var src_Badge = (Badge);\n// CONCATENATED MODULE: ./src/BreadcrumbItem.js\n\n\nvar BreadcrumbItem_jsxFileName = \"/Users/jason/src/react-bootstrap/src/BreadcrumbItem.js\";\n\n\n\n\n\nvar BreadcrumbItem_propTypes = {\n  /**\n   * @default 'breadcrumb-item'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * Adds a visual \"active\" state to a Breadcrumb\n   * Item and disables the link.\n   */\n  active: prop_types_default.a.bool,\n\n  /**\n   * `href` attribute for the inner `a` element\n   */\n  href: prop_types_default.a.string,\n\n  /**\n   * `title` attribute for the inner `a` element\n   */\n  title: prop_types_default.a.node,\n\n  /**\n   * `target` attribute for the inner `a` element\n   */\n  target: prop_types_default.a.string,\n  as: prop_types_default.a.elementType\n};\nvar BreadcrumbItem_defaultProps = {\n  active: false,\n  as: 'li'\n};\nvar BreadcrumbItem = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      active = _ref.active,\n      className = _ref.className,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"active\", \"className\", \"as\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'breadcrumb-item');\n\n  var href = props.href,\n      title = props.title,\n      target = props.target,\n      elementProps = _objectWithoutPropertiesLoose(props, [\"href\", \"title\", \"target\"]);\n\n  var linkProps = {\n    href: href,\n    title: title,\n    target: target\n  };\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, {\n    ref: ref,\n    className: classnames_default()(prefix, className, {\n      active: active\n    }),\n    \"aria-current\": active ? 'page' : undefined,\n    __source: {\n      fileName: BreadcrumbItem_jsxFileName,\n      lineNumber: 47\n    },\n    __self: this\n  }, active ? external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"span\", _extends({}, elementProps, {\n    className: classnames_default()({\n      active: active\n    }),\n    __source: {\n      fileName: BreadcrumbItem_jsxFileName,\n      lineNumber: 53\n    },\n    __self: this\n  })) : external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_SafeAnchor, _extends({}, elementProps, linkProps, {\n    __source: {\n      fileName: BreadcrumbItem_jsxFileName,\n      lineNumber: 55\n    },\n    __self: this\n  })));\n});\nBreadcrumbItem.displayName = 'BreadcrumbItem';\nBreadcrumbItem.propTypes = BreadcrumbItem_propTypes;\nBreadcrumbItem.defaultProps = BreadcrumbItem_defaultProps;\n/* harmony default export */ var src_BreadcrumbItem = (BreadcrumbItem);\n// CONCATENATED MODULE: ./src/Breadcrumb.js\n\n\nvar Breadcrumb_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Breadcrumb.js\";\n\n\n\n\n\nvar Breadcrumb_propTypes = {\n  /**\n   * @default 'breadcrumb'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * ARIA label for the nav element\n   * https://www.w3.org/TR/wai-aria-practices/#breadcrumb\n   */\n  label: prop_types_default.a.string,\n\n  /**\n   * Additional props passed as-is to the underlying `<ul>` element\n   */\n  listProps: prop_types_default.a.object,\n  as: prop_types_default.a.elementType\n};\nvar Breadcrumb_defaultProps = {\n  label: 'breadcrumb',\n  listProps: {},\n  as: 'nav'\n};\nvar Breadcrumb = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      listProps = _ref.listProps,\n      children = _ref.children,\n      label = _ref.label,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"listProps\", \"children\", \"label\", \"as\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'breadcrumb');\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({\n    \"aria-label\": label,\n    className: className,\n    ref: ref\n  }, props, {\n    __source: {\n      fileName: Breadcrumb_jsxFileName,\n      lineNumber: 48\n    },\n    __self: this\n  }), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"ol\", _extends({}, listProps, {\n    className: classnames_default()(prefix, listProps.className),\n    __source: {\n      fileName: Breadcrumb_jsxFileName,\n      lineNumber: 49\n    },\n    __self: this\n  }), children));\n});\nBreadcrumb.displayName = 'Breadcrumb';\nBreadcrumb.propTypes = Breadcrumb_propTypes;\nBreadcrumb.defaultProps = Breadcrumb_defaultProps;\nBreadcrumb.Item = src_BreadcrumbItem;\n/* harmony default export */ var src_Breadcrumb = (Breadcrumb);\n// CONCATENATED MODULE: ./src/Button.js\n\n\nvar Button_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Button.js\";\n\n\n\n\n\nvar Button_propTypes = {\n  /**\n   * @default 'btn'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * One or more button variant combinations\n   *\n   * buttons may be one of a variety of visual variants such as:\n   *\n   * `'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light', 'link'`\n   *\n   * as well as \"outline\" versions (prefixed by 'outline-*')\n   *\n   * `'outline-primary', 'outline-secondary', 'outline-success', 'outline-danger', 'outline-warning', 'outline-info', 'outline-dark', 'outline-light'`\n   */\n  variant: prop_types_default.a.string,\n\n  /**\n   * Specifies a large or small button.\n   *\n   * @type ('sm'|'lg')\n   */\n  size: prop_types_default.a.string,\n\n  /** Spans the full width of the Button parent */\n  block: prop_types_default.a.bool,\n\n  /** Manually set the visual state of the button to `:active` */\n  active: prop_types_default.a.bool,\n\n  /**\n   * Disables the Button, preventing mouse events,\n   * even if the underlying component is an `<a>` element\n   */\n  disabled: prop_types_default.a.bool,\n\n  /** Providing a `href` will render an `<a>` element, _styled_ as a button. */\n  href: prop_types_default.a.string,\n\n  /**\n   * Defines HTML button type attribute.\n   *\n   * @default 'button'\n   */\n  type: prop_types_default.a.oneOf(['button', 'reset', 'submit', null]),\n  as: prop_types_default.a.elementType\n};\nvar Button_defaultProps = {\n  variant: 'primary',\n  active: false,\n  disabled: false,\n  type: 'button'\n};\nvar Button = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      variant = _ref.variant,\n      size = _ref.size,\n      active = _ref.active,\n      className = _ref.className,\n      block = _ref.block,\n      type = _ref.type,\n      as = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"variant\", \"size\", \"active\", \"className\", \"block\", \"type\", \"as\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'btn');\n  var classes = classnames_default()(className, prefix, active && 'active', prefix + \"-\" + variant, block && prefix + \"-block\", size && prefix + \"-\" + size);\n\n  if (props.href) {\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_SafeAnchor, _extends({}, props, {\n      as: as,\n      innerRef: ref,\n      className: classnames_default()(classes, props.disabled && 'disabled'),\n      __source: {\n        fileName: Button_jsxFileName,\n        lineNumber: 84\n      },\n      __self: this\n    }));\n  }\n\n  var Component = as || 'button';\n  if (ref) props.ref = ref;\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n    type: type,\n    className: classes,\n    __source: {\n      fileName: Button_jsxFileName,\n      lineNumber: 96\n    },\n    __self: this\n  }));\n});\nButton.displayName = 'Button';\nButton.propTypes = Button_propTypes;\nButton.defaultProps = Button_defaultProps;\n/* harmony default export */ var src_Button = (Button);\n// CONCATENATED MODULE: ./src/ButtonGroup.js\n\n\nvar ButtonGroup_jsxFileName = \"/Users/jason/src/react-bootstrap/src/ButtonGroup.js\";\n\n\n\n\nvar ButtonGroup_propTypes = {\n  /**\n   * @default 'btn-group'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * Sets the size for all Buttons in the group.\n   *\n   * @type ('sm'|'lg')\n   */\n  size: prop_types_default.a.string,\n\n  /** Make the set of Buttons appear vertically stacked. */\n  vertical: prop_types_default.a.bool,\n\n  /**\n   * Display as a button toggle group.\n   *\n   * (Generally it's better to use `ToggleButtonGroup` directly)\n   */\n  toggle: prop_types_default.a.bool,\n\n  /**\n   * An ARIA role describing the button group. Usually the default\n   * \"group\" role is fine. An `aria-label` or `aria-labelledby`\n   * prop is also recommended.\n   */\n  role: prop_types_default.a.string,\n  as: prop_types_default.a.elementType\n};\nvar ButtonGroup_defaultProps = {\n  vertical: false,\n  toggle: false,\n  role: 'group',\n  as: 'div'\n};\nvar ButtonGroup = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (props, ref) {\n  var bsPrefix = props.bsPrefix,\n      size = props.size,\n      toggle = props.toggle,\n      vertical = props.vertical,\n      className = props.className,\n      Component = props.as,\n      rest = _objectWithoutPropertiesLoose(props, [\"bsPrefix\", \"size\", \"toggle\", \"vertical\", \"className\", \"as\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'btn-group');\n  var baseClass = prefix;\n  if (vertical) baseClass = prefix + \"-vertical\";\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, rest, {\n    ref: ref,\n    className: classnames_default()(className, baseClass, size && prefix + \"-\" + size, toggle && prefix + \"-toggle\"),\n    __source: {\n      fileName: ButtonGroup_jsxFileName,\n      lineNumber: 64\n    },\n    __self: this\n  }));\n});\nButtonGroup.displayName = 'ButtonGroup';\nButtonGroup.propTypes = ButtonGroup_propTypes;\nButtonGroup.defaultProps = ButtonGroup_defaultProps;\n/* harmony default export */ var src_ButtonGroup = (ButtonGroup);\n// CONCATENATED MODULE: ./src/ButtonToolbar.js\n\n\nvar ButtonToolbar_jsxFileName = \"/Users/jason/src/react-bootstrap/src/ButtonToolbar.js\";\n\n\n\n\nvar ButtonToolbar_propTypes = {\n  /**\n   * @default 'btn-toolbar'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * The ARIA role describing the button toolbar. Generally the default\n   * \"toolbar\" role is correct. An `aria-label` or `aria-labelledby`\n   * prop is also recommended.\n   */\n  role: prop_types_default.a.string\n};\nvar ButtonToolbar_defaultProps = {\n  role: 'toolbar'\n};\nvar ButtonToolbar = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'btn-toolbar');\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", _extends({}, props, {\n    ref: ref,\n    className: classnames_default()(className, prefix),\n    __source: {\n      fileName: ButtonToolbar_jsxFileName,\n      lineNumber: 30\n    },\n    __self: this\n  }));\n});\nButtonToolbar.displayName = 'ButtonToolbar';\nButtonToolbar.propTypes = ButtonToolbar_propTypes;\nButtonToolbar.defaultProps = ButtonToolbar_defaultProps;\n/* harmony default export */ var src_ButtonToolbar = (ButtonToolbar);\n// CONCATENATED MODULE: ./src/CardContext.js\n\n/* harmony default export */ var CardContext = (external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createContext(null));\n// CONCATENATED MODULE: ./src/CardImg.js\n\n\nvar CardImg_jsxFileName = \"/Users/jason/src/react-bootstrap/src/CardImg.js\";\n\n\n\n\nvar CardImg_propTypes = {\n  /**\n   * @default 'card-img'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * Defines image position inside\n   * the card.\n   *\n   * @type {('top'|'bottom')}\n   */\n  variant: prop_types_default.a.oneOf(['top', 'bottom', null]),\n  as: prop_types_default.a.elementType\n};\nvar CardImg_defaultProps = {\n  as: 'img',\n  variant: null\n};\nvar CardImg = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      variant = _ref.variant,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"variant\", \"as\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'card-img');\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({\n    ref: ref,\n    className: classnames_default()(variant ? prefix + \"-\" + variant : prefix, className)\n  }, props, {\n    __source: {\n      fileName: CardImg_jsxFileName,\n      lineNumber: 34\n    },\n    __self: this\n  }));\n});\nCardImg.displayName = 'CardImg';\nCardImg.propTypes = CardImg_propTypes;\nCardImg.defaultProps = CardImg_defaultProps;\n/* harmony default export */ var src_CardImg = (CardImg);\n// CONCATENATED MODULE: ./src/Card.js\n\n\nvar Card_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Card.js\";\n\n\n\n\n\n\n\n\nvar DivStyledAsH5 = divWithClassName('h5');\nvar DivStyledAsH6 = divWithClassName('h6');\nvar CardBody = createWithBsPrefix('card-body');\nvar Card_propTypes = {\n  /**\n   * @default 'card'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * Sets card background\n   *\n   * @type {('primary'|'secondary'|'success'|'danger'|'warning'|'info'|'dark'|'light')}\n   */\n  bg: prop_types_default.a.string,\n\n  /**\n   * Sets card text color\n   *\n   * @type {('primary'|'secondary'|'success'|'danger'|'warning'|'info'|'dark'|'light'|'white'|'muted')}\n   */\n  text: prop_types_default.a.string,\n\n  /**\n   * Sets card border color\n   *\n   * @type {('primary'|'secondary'|'success'|'danger'|'warning'|'info'|'dark'|'light')}\n   */\n  border: prop_types_default.a.string,\n\n  /**\n   * When this prop is set, it creates a Card with a Card.Body inside\n   * passing the children directly to it\n   */\n  body: prop_types_default.a.bool,\n  as: prop_types_default.a.elementType\n};\nvar Card_defaultProps = {\n  as: 'div',\n  body: false\n};\nvar Card = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      bg = _ref.bg,\n      text = _ref.text,\n      border = _ref.border,\n      body = _ref.body,\n      children = _ref.children,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"bg\", \"text\", \"border\", \"body\", \"children\", \"as\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'card');\n  var cardContext = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useMemo\"])(function () {\n    return {\n      cardHeaderBsPrefix: prefix + \"-header\"\n    };\n  }, [prefix]);\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(CardContext.Provider, {\n    value: cardContext,\n    __source: {\n      fileName: Card_jsxFileName,\n      lineNumber: 81\n    },\n    __self: this\n  }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({\n    ref: ref\n  }, props, {\n    className: classnames_default()(className, prefix, bg && \"bg-\" + bg, text && \"text-\" + text, border && \"border-\" + border),\n    __source: {\n      fileName: Card_jsxFileName,\n      lineNumber: 82\n    },\n    __self: this\n  }), body ? external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(CardBody, {\n    __source: {\n      fileName: Card_jsxFileName,\n      lineNumber: 93\n    },\n    __self: this\n  }, children) : children));\n});\nCard.displayName = 'Card';\nCard.propTypes = Card_propTypes;\nCard.defaultProps = Card_defaultProps;\nCard.Img = src_CardImg;\nCard.Title = createWithBsPrefix('card-title', {\n  Component: DivStyledAsH5\n});\nCard.Subtitle = createWithBsPrefix('card-subtitle', {\n  Component: DivStyledAsH6\n});\nCard.Body = CardBody;\nCard.Link = createWithBsPrefix('card-link', {\n  Component: 'a'\n});\nCard.Text = createWithBsPrefix('card-text', {\n  Component: 'p'\n});\nCard.Header = createWithBsPrefix('card-header');\nCard.Footer = createWithBsPrefix('card-footer');\nCard.ImgOverlay = createWithBsPrefix('card-img-overlay');\n/* harmony default export */ var src_Card = (Card);\n// CONCATENATED MODULE: ./src/CardColumns.js\n\n/* harmony default export */ var CardColumns = (createWithBsPrefix('card-columns'));\n// CONCATENATED MODULE: ./src/CardDeck.js\n\n/* harmony default export */ var CardDeck = (createWithBsPrefix('card-deck'));\n// CONCATENATED MODULE: ./src/CardGroup.js\n\n/* harmony default export */ var CardGroup = (createWithBsPrefix('card-group'));\n// EXTERNAL MODULE: ./node_modules/dom-helpers/transition/index.js\nvar dom_helpers_transition = __webpack_require__(51);\nvar transition_default = /*#__PURE__*/__webpack_require__.n(dom_helpers_transition);\n\n// EXTERNAL MODULE: ./node_modules/uncontrollable/index.js\nvar uncontrollable = __webpack_require__(7);\nvar uncontrollable_default = /*#__PURE__*/__webpack_require__.n(uncontrollable);\n\n// CONCATENATED MODULE: ./src/CarouselCaption.js\n\n/* harmony default export */ var CarouselCaption = (createWithBsPrefix('carousel-caption', {\n  Component: 'div'\n}));\n// CONCATENATED MODULE: ./src/CarouselItem.js\n\n/* harmony default export */ var CarouselItem = (createWithBsPrefix('carousel-item'));\n// CONCATENATED MODULE: ./src/utils/ElementChildren.js\n\n/**\n * Iterates through children that are typically specified as `props.children`,\n * but only maps over children that are \"valid elements\".\n *\n * The mapFunction provided index will be normalised to the components mapped,\n * so an invalid component would not increase the index.\n *\n */\n\nfunction map(children, func) {\n  var index = 0;\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Children.map(children, function (child) {\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.isValidElement(child) ? func(child, index++) : child;\n  });\n}\n/**\n * Iterates through children that are \"valid elements\".\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child with the index reflecting the position relative to \"valid components\".\n */\n\n\nfunction forEach(children, func) {\n  var index = 0;\n  external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Children.forEach(children, function (child) {\n    if (external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.isValidElement(child)) func(child, index++);\n  });\n}\n\n\n// CONCATENATED MODULE: ./src/Carousel.js\n\n\n\nvar Carousel_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Carousel.js\";\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Carousel_countChildren = function countChildren(c) {\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Children.toArray(c).filter(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.isValidElement).length;\n}; // TODO: `slide` should be `animate`.\n\n\nvar Carousel_propTypes = {\n  /**\n   * @default 'carousel'\n   */\n  bsPrefix: prop_types_default.a.string,\n  as: prop_types_default.a.elementType,\n\n  /**\n   * Enables animation on the Carousel as it transitions between slides.\n   */\n  slide: prop_types_default.a.bool,\n\n  /** Cross fade slides instead of the default slide animation */\n  fade: prop_types_default.a.bool,\n\n  /** Slides will loop to the start when the last one transitions */\n  wrap: prop_types_default.a.bool,\n\n  /**\n   * Show a set of slide position indicators\n   */\n  indicators: prop_types_default.a.bool,\n\n  /**\n   * The amount of time to delay between automatically cycling an item.\n   * If `null`, carousel will not automatically cycle.\n   */\n  interval: prop_types_default.a.number,\n\n  /**\n   * Show the Carousel previous and next arrows for changing the current slide\n   */\n  controls: prop_types_default.a.bool,\n\n  /**\n   * Temporarily puase the slide interval when the mouse hovers over a slide.\n   */\n  pauseOnHover: prop_types_default.a.bool,\n\n  /** Enable keyboard navigation via the Arrow keys for changing slides */\n  keyboard: prop_types_default.a.bool,\n\n  /**\n   * Callback fired when the active item changes.\n   *\n   * ```js\n   * (eventKey: any, direction: 'prev' | 'next', ?event: Object) => any\n   * ```\n   *\n   * @controllable activeIndex\n   */\n  onSelect: prop_types_default.a.func,\n\n  /** A callback fired after a slide transitions in */\n  onSlideEnd: prop_types_default.a.func,\n\n  /**\n   * Controls the current visible slide\n   *\n   * @controllable onSelect\n   */\n  activeIndex: prop_types_default.a.number,\n\n  /** Override the default button icon for the \"previous\" control */\n  prevIcon: prop_types_default.a.node,\n\n  /**\n   * Label shown to screen readers only, can be used to show the previous element\n   * in the carousel.\n   * Set to null to deactivate.\n   */\n  prevLabel: prop_types_default.a.string,\n\n  /** Override the default button icon for the \"next\" control */\n  nextIcon: prop_types_default.a.node,\n\n  /**\n   * Label shown to screen readers only, can be used to show the next element\n   * in the carousel.\n   * Set to null to deactivate.\n   */\n  nextLabel: prop_types_default.a.string\n};\nvar Carousel_defaultProps = {\n  as: 'div',\n  slide: true,\n  fade: false,\n  interval: 5000,\n  keyboard: true,\n  pauseOnHover: true,\n  wrap: true,\n  indicators: true,\n  controls: true,\n  activeIndex: 0,\n  prevIcon: external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"span\", {\n    \"aria-hidden\": \"true\",\n    className: \"carousel-control-prev-icon\",\n    __source: {\n      fileName: Carousel_jsxFileName,\n      lineNumber: 116\n    },\n    __self: undefined\n  }),\n  prevLabel: 'Previous',\n  nextIcon: external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"span\", {\n    \"aria-hidden\": \"true\",\n    className: \"carousel-control-next-icon\",\n    __source: {\n      fileName: Carousel_jsxFileName,\n      lineNumber: 119\n    },\n    __self: undefined\n  }),\n  nextLabel: 'Next'\n};\n\nvar Carousel_Carousel =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Carousel, _React$Component);\n\n  function Carousel(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n\n    _this.handleSlideEnd = function () {\n      var pendingIndex = _this._pendingIndex;\n      _this._isSliding = false;\n      _this._pendingIndex = null;\n      if (pendingIndex != null) _this.to(pendingIndex);else _this.cycle();\n    };\n\n    _this.handleMouseOut = function () {\n      _this.cycle();\n    };\n\n    _this.handleMouseOver = function () {\n      if (_this.props.pauseOnHover) _this.pause();\n    };\n\n    _this.handleKeyDown = function (event) {\n      if (/input|textarea/i.test(event.target.tagName)) return;\n\n      switch (event.key) {\n        case 'ArrowLeft':\n          event.preventDefault();\n\n          _this.handlePrev(event);\n\n          break;\n\n        case 'ArrowRight':\n          event.preventDefault();\n\n          _this.handleNext(event);\n\n          break;\n\n        default:\n          break;\n      }\n    };\n\n    _this.handleNextWhenVisible = function () {\n      if (!_this.isUnmounted && !document.hidden && style_default()(_this.carousel.current, 'visibility') !== 'hidden') {\n        _this.handleNext();\n      }\n    };\n\n    _this.handleNext = function (e) {\n      if (_this._isSliding) return;\n      var _this$props = _this.props,\n          wrap = _this$props.wrap,\n          activeIndex = _this$props.activeIndex;\n      var index = activeIndex + 1;\n      var count = Carousel_countChildren(_this.props.children);\n\n      if (index > count - 1) {\n        if (!wrap) return;\n        index = 0;\n      }\n\n      _this.select(index, e, 'next');\n    };\n\n    _this.handlePrev = function (e) {\n      if (_this._isSliding) return;\n      var _this$props2 = _this.props,\n          wrap = _this$props2.wrap,\n          activeIndex = _this$props2.activeIndex;\n      var index = activeIndex - 1;\n\n      if (index < 0) {\n        if (!wrap) return;\n        index = Carousel_countChildren(_this.props.children) - 1;\n      }\n\n      _this.select(index, e, 'prev');\n    };\n\n    _this.state = {\n      prevClasses: '',\n      currentClasses: 'active'\n    };\n    _this.isUnmounted = false;\n    _this.carousel = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createRef();\n    return _this;\n  }\n\n  var _proto = Carousel.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.cycle();\n  };\n\n  Carousel.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n    var previousActiveIndex = _ref.activeIndex;\n\n    if (nextProps.activeIndex !== previousActiveIndex) {\n      var lastPossibleIndex = Carousel_countChildren(nextProps.children) - 1;\n      var nextIndex = Math.max(0, Math.min(nextProps.activeIndex, lastPossibleIndex));\n      var direction;\n\n      if (nextIndex === 0 && previousActiveIndex >= lastPossibleIndex || previousActiveIndex <= nextIndex) {\n        direction = 'next';\n      } else {\n        direction = 'prev';\n      }\n\n      return {\n        direction: direction,\n        previousActiveIndex: previousActiveIndex,\n        activeIndex: nextIndex\n      };\n    }\n\n    return null;\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(_, prevState) {\n    var _this2 = this;\n\n    var _this$props3 = this.props,\n        bsPrefix = _this$props3.bsPrefix,\n        slide = _this$props3.slide,\n        onSlideEnd = _this$props3.onSlideEnd;\n    if (!slide || this.state.activeIndex === prevState.activeIndex || this._isSliding) return;\n    var _this$state = this.state,\n        activeIndex = _this$state.activeIndex,\n        direction = _this$state.direction;\n    var orderClassName, directionalClassName;\n\n    if (direction === 'next') {\n      orderClassName = bsPrefix + \"-item-next\";\n      directionalClassName = bsPrefix + \"-item-left\";\n    } else if (direction === 'prev') {\n      orderClassName = bsPrefix + \"-item-prev\";\n      directionalClassName = bsPrefix + \"-item-right\";\n    }\n\n    this._isSliding = true;\n    this.pause(); // eslint-disable-next-line react/no-did-update-set-state\n\n    this.safeSetState({\n      prevClasses: 'active',\n      currentClasses: orderClassName\n    }, function () {\n      var items = _this2.carousel.current.children;\n      var nextElement = items[activeIndex];\n      triggerBrowserReflow(nextElement);\n\n      _this2.safeSetState({\n        prevClasses: classnames_default()('active', directionalClassName),\n        currentClasses: classnames_default()(orderClassName, directionalClassName)\n      }, function () {\n        return transition_default.a.end(nextElement, function () {\n          _this2.safeSetState({\n            prevClasses: '',\n            currentClasses: 'active'\n          }, _this2.handleSlideEnd);\n\n          if (onSlideEnd) {\n            onSlideEnd();\n          }\n        });\n      });\n    });\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    clearTimeout(this.timeout);\n    this.isUnmounted = true;\n  };\n\n  _proto.safeSetState = function safeSetState(state, cb) {\n    var _this3 = this;\n\n    if (this.isUnmounted) return;\n    this.setState(state, function () {\n      return !_this3.isUnmounted && cb();\n    });\n  } // This might be a public API.\n  ;\n\n  _proto.pause = function pause() {\n    this._isPaused = true;\n    clearInterval(this._interval);\n    this._interval = null;\n  };\n\n  _proto.cycle = function cycle() {\n    this._isPaused = false;\n    clearInterval(this._interval);\n    this._interval = null;\n\n    if (this.props.interval && !this._isPaused) {\n      this._interval = setInterval(document.visibilityState ? this.handleNextWhenVisible : this.handleNext, this.props.interval);\n    }\n  };\n\n  _proto.to = function to(index, event) {\n    var children = this.props.children;\n\n    if (index < 0 || index > Carousel_countChildren(children) - 1) {\n      return;\n    }\n\n    if (this._isSliding) {\n      this._pendingIndex = index;\n      return;\n    }\n\n    this.select(index, event);\n  };\n\n  _proto.select = function select(index, event, direction) {\n    var _this4 = this;\n\n    clearTimeout(this.selectThrottle);\n    if (event && event.persist) event.persist(); // The timeout throttles fast clicks, in order to give any pending state\n    // a chance to update and propagate back through props\n\n    this.selectThrottle = setTimeout(function () {\n      clearTimeout(_this4.timeout);\n      var _this4$props = _this4.props,\n          activeIndex = _this4$props.activeIndex,\n          onSelect = _this4$props.onSelect;\n      if (index === activeIndex || _this4._isSliding || _this4.isUnmounted) return;\n      onSelect(index, direction || (index < activeIndex ? 'prev' : 'next'), event);\n    }, 50);\n  };\n\n  _proto.renderControls = function renderControls(properties) {\n    var bsPrefix = this.props.bsPrefix;\n    var wrap = properties.wrap,\n        children = properties.children,\n        activeIndex = properties.activeIndex,\n        prevIcon = properties.prevIcon,\n        nextIcon = properties.nextIcon,\n        prevLabel = properties.prevLabel,\n        nextLabel = properties.nextLabel;\n    var count = Carousel_countChildren(children);\n    return [(wrap || activeIndex !== 0) && external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_SafeAnchor, {\n      key: \"prev\",\n      className: bsPrefix + \"-control-prev\",\n      onClick: this.handlePrev,\n      __source: {\n        fileName: Carousel_jsxFileName,\n        lineNumber: 380\n      },\n      __self: this\n    }, prevIcon, prevLabel && external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"span\", {\n      className: \"sr-only\",\n      __source: {\n        fileName: Carousel_jsxFileName,\n        lineNumber: 386\n      },\n      __self: this\n    }, prevLabel)), (wrap || activeIndex !== count - 1) && external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_SafeAnchor, {\n      key: \"next\",\n      className: bsPrefix + \"-control-next\",\n      onClick: this.handleNext,\n      __source: {\n        fileName: Carousel_jsxFileName,\n        lineNumber: 391\n      },\n      __self: this\n    }, nextIcon, nextLabel && external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"span\", {\n      className: \"sr-only\",\n      __source: {\n        fileName: Carousel_jsxFileName,\n        lineNumber: 397\n      },\n      __self: this\n    }, nextLabel))];\n  };\n\n  _proto.renderIndicators = function renderIndicators(children, activeIndex) {\n    var _this5 = this;\n\n    var bsPrefix = this.props.bsPrefix;\n    var indicators = [];\n    forEach(children, function (child, index) {\n      indicators.push(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"li\", {\n        key: index,\n        className: index === activeIndex ? 'active' : null,\n        onClick: function onClick(e) {\n          return _this5.to(index, e);\n        },\n        __source: {\n          fileName: Carousel_jsxFileName,\n          lineNumber: 409\n        },\n        __self: this\n      }), // Force whitespace between indicator elements. Bootstrap requires\n      // this for correct spacing of elements.\n      ' ');\n    });\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"ol\", {\n      className: bsPrefix + \"-indicators\",\n      __source: {\n        fileName: Carousel_jsxFileName,\n        lineNumber: 421\n      },\n      __self: this\n    }, indicators);\n  };\n\n  _proto.render = function render() {\n    var _this$props4 = this.props,\n        Component = _this$props4.as,\n        bsPrefix = _this$props4.bsPrefix,\n        slide = _this$props4.slide,\n        fade = _this$props4.fade,\n        indicators = _this$props4.indicators,\n        controls = _this$props4.controls,\n        wrap = _this$props4.wrap,\n        prevIcon = _this$props4.prevIcon,\n        prevLabel = _this$props4.prevLabel,\n        nextIcon = _this$props4.nextIcon,\n        nextLabel = _this$props4.nextLabel,\n        className = _this$props4.className,\n        children = _this$props4.children,\n        keyboard = _this$props4.keyboard,\n        _5 = _this$props4.activeIndex,\n        _4 = _this$props4.pauseOnHover,\n        _3 = _this$props4.interval,\n        _2 = _this$props4.onSelect,\n        _1 = _this$props4.onSlideEnd,\n        props = _objectWithoutPropertiesLoose(_this$props4, [\"as\", \"bsPrefix\", \"slide\", \"fade\", \"indicators\", \"controls\", \"wrap\", \"prevIcon\", \"prevLabel\", \"nextIcon\", \"nextLabel\", \"className\", \"children\", \"keyboard\", \"activeIndex\", \"pauseOnHover\", \"interval\", \"onSelect\", \"onSlideEnd\"]);\n\n    var _this$state2 = this.state,\n        activeIndex = _this$state2.activeIndex,\n        previousActiveIndex = _this$state2.previousActiveIndex,\n        prevClasses = _this$state2.prevClasses,\n        currentClasses = _this$state2.currentClasses;\n    return (// eslint-disable-next-line jsx-a11y/no-static-element-interactions\n      external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n        className: classnames_default()(className, bsPrefix, slide && 'slide', fade && bsPrefix + \"-fade\"),\n        onKeyDown: keyboard ? this.handleKeyDown : undefined,\n        onMouseOver: this.handleMouseOver,\n        onMouseOut: this.handleMouseOut,\n        __source: {\n          fileName: Carousel_jsxFileName,\n          lineNumber: 457\n        },\n        __self: this\n      }), indicators && this.renderIndicators(children, activeIndex), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", {\n        className: bsPrefix + \"-inner\",\n        ref: this.carousel,\n        __source: {\n          fileName: Carousel_jsxFileName,\n          lineNumber: 471\n        },\n        __self: this\n      }, map(children, function (child, index) {\n        var current = index === activeIndex;\n        var previous = index === previousActiveIndex;\n        return Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"cloneElement\"])(child, {\n          className: classnames_default()(child.props.className, bsPrefix + \"-item\", current && currentClasses, previous && prevClasses)\n        });\n      })), controls && this.renderControls({\n        wrap: wrap,\n        children: children,\n        activeIndex: activeIndex,\n        prevIcon: prevIcon,\n        prevLabel: prevLabel,\n        nextIcon: nextIcon,\n        nextLabel: nextLabel\n      }))\n    );\n  };\n\n  return Carousel;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nCarousel_Carousel.defaultProps = Carousel_defaultProps;\nCarousel_Carousel.propTypes = Carousel_propTypes;\nvar DecoratedCarousel = createBootstrapComponent(uncontrollable_default()(Carousel_Carousel, {\n  activeIndex: 'onSelect'\n}), 'carousel');\nDecoratedCarousel.Caption = CarouselCaption;\nDecoratedCarousel.Item = CarouselItem;\n/* harmony default export */ var src_Carousel = (DecoratedCarousel);\n// CONCATENATED MODULE: ./src/Col.js\n\n\nvar Col_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Col.js\";\n\n\n\n\nvar DEVICE_SIZES = ['xl', 'lg', 'md', 'sm', 'xs'];\nvar colSize = prop_types_default.a.oneOfType([prop_types_default.a.bool, prop_types_default.a.number, prop_types_default.a.string, prop_types_default.a.oneOf(['auto'])]);\nvar stringOrNumber = prop_types_default.a.oneOfType([prop_types_default.a.number, prop_types_default.a.string]);\nvar Col_column = prop_types_default.a.oneOfType([colSize, prop_types_default.a.shape({\n  size: colSize,\n  order: stringOrNumber,\n  offset: stringOrNumber\n})]);\nvar Col_propTypes = {\n  /**\n   * @default 'col'\n   */\n  bsPrefix: prop_types_default.a.string,\n  as: prop_types_default.a.elementType,\n\n  /**\n   * The number of columns to span on sxtra small devices (<576px)\n   *\n   * @type {(true|\"auto\"|number|{ span: true|\"auto\"|number, offset: number, order: number })}\n   */\n  xs: Col_column,\n\n  /**\n   * The number of columns to span on small devices (≥576px)\n   *\n   * @type {(true|\"auto\"|number|{ span: true|\"auto\"|number, offset: number, order: number })}\n   */\n  sm: Col_column,\n\n  /**\n   * The number of columns to span on medium devices (≥768px)\n   *\n   * @type {(true|\"auto\"|number|{ span: true|\"auto\"|number, offset: number, order: number })}\n   */\n  md: Col_column,\n\n  /**\n   * The number of columns to span on large devices (≥992px)\n   *\n   * @type {(true|\"auto\"|number|{ span: true|\"auto\"|number, offset: number, order: number })}\n   */\n  lg: Col_column,\n\n  /**\n   * The number of columns to span on extra large devices (≥1200px)\n   *\n   * @type {(true|\"auto\"|number|{ span: true|\"auto\"|number, offset: number, order: number })}\n   */\n  xl: Col_column\n};\nvar Col_defaultProps = {\n  as: 'div'\n};\nvar Col = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"as\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'col');\n  var spans = [];\n  var classes = [];\n  DEVICE_SIZES.forEach(function (brkPoint) {\n    var propValue = props[brkPoint];\n    delete props[brkPoint];\n    var span, offset, order;\n\n    if (propValue != null && typeof propValue === 'object') {\n      var _propValue$span = propValue.span;\n      span = _propValue$span === void 0 ? true : _propValue$span;\n      offset = propValue.offset;\n      order = propValue.order;\n    } else {\n      span = propValue;\n    }\n\n    var infix = brkPoint !== 'xs' ? \"-\" + brkPoint : '';\n    if (span != null) spans.push(span === true ? \"\" + prefix + infix : \"\" + prefix + infix + \"-\" + span);\n    if (order != null) classes.push(\"order\" + infix + \"-\" + order);\n    if (offset != null) classes.push(\"offset\" + infix + \"-\" + offset);\n  });\n\n  if (!spans.length) {\n    spans.push(prefix); // plain 'col'\n  }\n\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n    ref: ref,\n    className: classnames_default.a.apply(void 0, [className].concat(spans, classes)),\n    __source: {\n      fileName: Col_jsxFileName,\n      lineNumber: 110\n    },\n    __self: this\n  }));\n});\nCol.displayName = 'Col';\nCol.propTypes = Col_propTypes;\nCol.defaultProps = Col_defaultProps;\n/* harmony default export */ var src_Col = (Col);\n// EXTERNAL MODULE: ./node_modules/react-overlays/Dropdown.js\nvar Dropdown = __webpack_require__(52);\nvar Dropdown_default = /*#__PURE__*/__webpack_require__.n(Dropdown);\n\n// EXTERNAL MODULE: external {\"root\":\"ReactDOM\",\"commonjs2\":\"react-dom\",\"commonjs\":\"react-dom\",\"amd\":\"react-dom\"}\nvar external_root_ReactDOM_commonjs2_react_dom_commonjs_react_dom_amd_react_dom_ = __webpack_require__(6);\nvar external_root_ReactDOM_commonjs2_react_dom_commonjs_react_dom_amd_react_dom_default = /*#__PURE__*/__webpack_require__.n(external_root_ReactDOM_commonjs2_react_dom_commonjs_react_dom_amd_react_dom_);\n\n// EXTERNAL MODULE: ./node_modules/react-overlays/DropdownMenu.js\nvar DropdownMenu = __webpack_require__(35);\nvar DropdownMenu_default = /*#__PURE__*/__webpack_require__.n(DropdownMenu);\n\n// CONCATENATED MODULE: ./src/NavbarContext.js\n\n/* harmony default export */ var NavbarContext = (external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createContext(null));\n// CONCATENATED MODULE: ./src/DropdownMenu.js\n\n\nvar DropdownMenu_jsxFileName = \"/Users/jason/src/react-bootstrap/src/DropdownMenu.js\";\n\n\n\n\n\n\n\n\nvar DropdownMenu_wrapRef = function wrapRef(props) {\n  var ref = props.ref;\n\n  props.ref = ref.__wrapped || (ref.__wrapped = function (r) {\n    return ref(Object(external_root_ReactDOM_commonjs2_react_dom_commonjs_react_dom_amd_react_dom_[\"findDOMNode\"])(r));\n  });\n\n  return props;\n};\n\nvar DropdownMenu_propTypes = {\n  /**\n   * @default 'dropdown-menu'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /** Controls the visibility of the Dropdown menu  */\n  show: prop_types_default.a.bool,\n\n  /** Have the dropdown switch to it's opposite placement when necessary to stay on screen. */\n  flip: prop_types_default.a.bool,\n\n  /** Aligns the Dropdown menu to the right of it's container. */\n  alignRight: prop_types_default.a.bool,\n  onSelect: prop_types_default.a.func,\n\n  /**\n   * Which event when fired outside the component will cause it to be closed\n   *\n   * *Note: For custom dropdown components, you will have to pass the\n   * `rootCloseEvent` to `<RootCloseWrapper>` in your custom dropdown menu\n   * component ([similarly to how it is implemented in `<Dropdown.Menu>`](https://github.com/react-bootstrap/react-bootstrap/blob/v0.31.5/src/DropdownMenu.js#L115-L119)).*\n   */\n  rootCloseEvent: prop_types_default.a.oneOf(['click', 'mousedown']),\n\n  /**\n   * Control the rendering of the DropdownMenu. All non-menu props\n   * (listed here) are passed through to the `as` Component.\n   *\n   * If providing a custom, non DOM, component. the `show`, `close` and `alignRight` props\n   * are also injected and should be handled appropriately.\n   */\n  as: prop_types_default.a.elementType,\n\n  /**\n   * A set of popper options and props passed directly to react-popper's Popper component.\n   */\n  popperConfig: prop_types_default.a.object\n};\nvar DropdownMenu_defaultProps = {\n  alignRight: false,\n  as: 'div',\n  flip: true\n};\nvar DropdownMenu_DropdownMenu = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      alignRight = _ref.alignRight,\n      rootCloseEvent = _ref.rootCloseEvent,\n      flip = _ref.flip,\n      popperConfig = _ref.popperConfig,\n      showProps = _ref.show,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"alignRight\", \"rootCloseEvent\", \"flip\", \"popperConfig\", \"show\", \"as\"]);\n\n  var isNavbar = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(NavbarContext);\n  var prefix = useBootstrapPrefix(bsPrefix, 'dropdown-menu');\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(DropdownMenu_default.a, {\n    ref: ref // FIXME: the ref situation is out of hand here\n    ,\n    flip: flip,\n    show: showProps,\n    alignEnd: alignRight,\n    usePopper: !isNavbar,\n    popperConfig: popperConfig,\n    rootCloseEvent: rootCloseEvent,\n    __source: {\n      fileName: DropdownMenu_jsxFileName,\n      lineNumber: 83\n    },\n    __self: this\n  }, function (_ref2) {\n    var placement = _ref2.placement,\n        show = _ref2.show,\n        alignEnd = _ref2.alignEnd,\n        close = _ref2.close,\n        menuProps = _ref2.props;\n    DropdownMenu_wrapRef(menuProps); // For custom components provide additional, non-DOM, props;\n\n    if (typeof Component !== 'string') {\n      menuProps.show = show;\n      menuProps.close = close;\n      menuProps.alignRight = alignEnd;\n    }\n\n    var style = props.style;\n\n    if (placement) {\n      // we don't need the default popper style,\n      // menus are display: none when not shown.\n      style = _extends({}, style, menuProps.style);\n      props['x-placement'] = placement;\n    }\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, menuProps, {\n      style: style,\n      className: classnames_default()(className, prefix, show && 'show', alignEnd && prefix + \"-right\"),\n      __source: {\n        fileName: DropdownMenu_jsxFileName,\n        lineNumber: 108\n      },\n      __self: this\n    }));\n  });\n});\nDropdownMenu_DropdownMenu.displayName = 'DropdownMenu';\nDropdownMenu_DropdownMenu.propTypes = DropdownMenu_propTypes;\nDropdownMenu_DropdownMenu.defaultProps = DropdownMenu_defaultProps;\n/* harmony default export */ var src_DropdownMenu = (DropdownMenu_DropdownMenu);\n// EXTERNAL MODULE: ./node_modules/prop-types-extra/lib/isRequiredForA11y.js\nvar isRequiredForA11y = __webpack_require__(13);\nvar isRequiredForA11y_default = /*#__PURE__*/__webpack_require__.n(isRequiredForA11y);\n\n// EXTERNAL MODULE: ./node_modules/react-overlays/DropdownToggle.js\nvar react_overlays_DropdownToggle = __webpack_require__(36);\nvar DropdownToggle_default = /*#__PURE__*/__webpack_require__.n(react_overlays_DropdownToggle);\n\n// CONCATENATED MODULE: ./src/DropdownToggle.js\n\n\n\nvar DropdownToggle_jsxFileName = \"/Users/jason/src/react-bootstrap/src/DropdownToggle.js\";\n\n\n\n\n\n\n\n\n\nvar DropdownToggle_wrapRef = function wrapRef(props) {\n  var ref = props.ref;\n\n  props.ref = ref.__wrapped || (ref.__wrapped = function (r) {\n    return ref(Object(external_root_ReactDOM_commonjs2_react_dom_commonjs_react_dom_amd_react_dom_[\"findDOMNode\"])(r));\n  });\n\n  return props;\n};\n\nvar DropdownToggle_DropdownToggle =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(DropdownToggle, _React$Component);\n\n  function DropdownToggle() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = DropdownToggle.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        bsPrefix = _this$props.bsPrefix,\n        split = _this$props.split,\n        className = _this$props.className,\n        children = _this$props.children,\n        childBsPrefix = _this$props.childBsPrefix,\n        Component = _this$props.as,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"bsPrefix\", \"split\", \"className\", \"children\", \"childBsPrefix\", \"as\"]);\n\n    if (childBsPrefix !== undefined) {\n      props.bsPrefix = childBsPrefix;\n    } // This intentionally forwards size and variant (if set) to the\n    // underlying component, to allow it to render size and style variants.\n\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(DropdownToggle_default.a, {\n      __source: {\n        fileName: DropdownToggle_jsxFileName,\n        lineNumber: 65\n      },\n      __self: this\n    }, function (_ref) {\n      var toggle = _ref.toggle,\n          toggleProps = _ref.props;\n      return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({\n        onClick: toggle,\n        className: classnames_default()(className, bsPrefix, split && bsPrefix + \"-split\")\n      }, DropdownToggle_wrapRef(toggleProps), props, {\n        __source: {\n          fileName: DropdownToggle_jsxFileName,\n          lineNumber: 67\n        },\n        __self: this\n      }), children);\n    });\n  };\n\n  return DropdownToggle;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component); // Needs to be a class FTM, because it needs to accept a ref that can be used with findDOMNode\n\n\nDropdownToggle_DropdownToggle.propTypes = {\n  /**\n   * @default 'dropdown-toggle'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * An html id attribute, necessary for assistive technologies, such as screen readers.\n   * @type {string|number}\n   * @required\n   */\n  id: isRequiredForA11y_default()(prop_types_default.a.any),\n  split: prop_types_default.a.bool,\n  as: prop_types_default.a.elementType,\n\n  /**\n   * to passthrough to the underlying button or whatever from DropdownButton\n   * @private\n   */\n  childBsPrefix: prop_types_default.a.string\n};\nDropdownToggle_DropdownToggle.defaultProps = {\n  as: src_Button\n};\n/* harmony default export */ var src_DropdownToggle = (createBootstrapComponent(DropdownToggle_DropdownToggle, 'dropdown-toggle'));\n// CONCATENATED MODULE: ./src/NavContext.js\n\nvar NavContext = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createContext(null);\n/* harmony default export */ var src_NavContext = (NavContext);\n// CONCATENATED MODULE: ./src/DropdownItem.js\n\n\nvar DropdownItem_jsxFileName = \"/Users/jason/src/react-bootstrap/src/DropdownItem.js\";\n\n\n\n\n\n\n\n\nvar DropdownItem_propTypes = {\n  /** @default 'dropdown' */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * Highlight the menu item as active.\n   */\n  active: prop_types_default.a.bool,\n\n  /**\n   * Disable the menu item, making it unselectable.\n   */\n  disabled: prop_types_default.a.bool,\n\n  /**\n   * Value passed to the `onSelect` handler, useful for identifying the selected menu item.\n   */\n  eventKey: prop_types_default.a.any,\n\n  /**\n   * HTML `href` attribute corresponding to `a.href`.\n   */\n  href: prop_types_default.a.string,\n\n  /**\n   * Callback fired when the menu item is clicked.\n   */\n  onClick: prop_types_default.a.func,\n\n  /**\n   * Callback fired when the menu item is selected.\n   *\n   * ```js\n   * (eventKey: any, event: Object) => any\n   * ```\n   */\n  onSelect: prop_types_default.a.func,\n  as: prop_types_default.a.elementType\n};\nvar DropdownItem_defaultProps = {\n  as: src_SafeAnchor,\n  disabled: false\n};\nvar DropdownItem = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      children = _ref.children,\n      eventKey = _ref.eventKey,\n      disabled = _ref.disabled,\n      href = _ref.href,\n      onClick = _ref.onClick,\n      onSelect = _ref.onSelect,\n      propActive = _ref.active,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"children\", \"eventKey\", \"disabled\", \"href\", \"onClick\", \"onSelect\", \"active\", \"as\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'dropdown-item');\n  var onSelectCtx = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(src_SelectableContext);\n  var navContext = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(src_NavContext);\n\n  var _ref2 = navContext || {},\n      activeKey = _ref2.activeKey;\n\n  var key = makeEventKey(eventKey, href);\n  var active = propActive == null && key != null ? makeEventKey(activeKey) === key : propActive;\n  var handleClick = useEventCallback_default()(function (event) {\n    // SafeAnchor handles the disabled case, but we handle it here\n    // for other components\n    if (disabled) return;\n    if (onClick) onClick(event);\n    if (onSelectCtx) onSelectCtx(key, event);\n    if (onSelect) onSelect(key, event);\n  });\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n    ref: ref,\n    href: href,\n    disabled: disabled,\n    className: classnames_default()(className, prefix, active && 'active', disabled && 'disabled'),\n    onClick: handleClick,\n    __source: {\n      fileName: DropdownItem_jsxFileName,\n      lineNumber: 96\n    },\n    __self: this\n  }), children);\n});\nDropdownItem.displayName = 'DropdownItem';\nDropdownItem.propTypes = DropdownItem_propTypes;\nDropdownItem.defaultProps = DropdownItem_defaultProps;\n/* harmony default export */ var src_DropdownItem = (DropdownItem);\n// CONCATENATED MODULE: ./src/Dropdown.js\n\n\nvar Dropdown_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Dropdown.js\";\n\n\n\n\n\n\n\n\n\n\n\n\nvar Dropdown_propTypes = {\n  /** @default 'dropdown' */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * Determines the direction and location of the Menu in relation to it's Toggle.\n   */\n  drop: prop_types_default.a.oneOf(['up', 'left', 'right', 'down']),\n  as: prop_types_default.a.elementType,\n\n  /**\n   * Align the menu to the right side of the Dropdown toggle\n   */\n  alignRight: prop_types_default.a.bool,\n\n  /**\n   * Whether or not the Dropdown is visible.\n   *\n   * @controllable onToggle\n   */\n  show: prop_types_default.a.bool,\n\n  /**\n   * Allow Dropdown to flip in case of an overlapping on the reference element. For more information refer to\n   * Popper.js's flip [docs](https://popper.js.org/popper-documentation.html#modifiers..flip.enabled).\n   *\n   */\n  flip: prop_types_default.a.bool,\n\n  /**\n   * A callback fired when the Dropdown wishes to change visibility. Called with the requested\n   * `show` value, the DOM event, and the source that fired it: `'click'`,`'keydown'`,`'rootClose'`, or `'select'`.\n   *\n   * ```js\n   * function(\n   *   isOpen: boolean,\n   *   event: SyntheticEvent,\n   *   metadata: {\n   *     source: 'select' | 'click' | 'rootClose' | 'keydown'\n   *   }\n   * ): void\n   * ```\n   *\n   * @controllable show\n   */\n  onToggle: prop_types_default.a.func,\n\n  /**\n   * A callback fired when a menu item is selected.\n   *\n   * ```js\n   * (eventKey: any, event: Object) => any\n   * ```\n   */\n  onSelect: prop_types_default.a.func,\n\n  /**\n   * Controls the focus behavior for when the Dropdown is opened. Set to\n   * `true` to always focus the first menu item, `keyboard` to focus only when\n   * navigating via the keyboard, or `false` to disable completely\n   *\n   * The Default behavior is `false` **unless** the Menu has a `role=\"menu\"`\n   * where it will default to `keyboard` to match the recommended [ARIA Authoring practices](https://www.w3.org/TR/wai-aria-practices-1.1/#menubutton).\n   */\n  focusFirstItemOnShow: prop_types_default.a.oneOf([false, true, 'keyboard']),\n\n  /** @private */\n  navbar: prop_types_default.a.bool\n};\nvar Dropdown_defaultProps = {\n  as: 'div',\n  navbar: false\n};\nvar Dropdown_Dropdown = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (uncontrolledProps, ref) {\n  var _useUncontrolled = hook_default()(uncontrolledProps, {\n    show: 'onToggle'\n  }),\n      bsPrefix = _useUncontrolled.bsPrefix,\n      drop = _useUncontrolled.drop,\n      show = _useUncontrolled.show,\n      className = _useUncontrolled.className,\n      alignRight = _useUncontrolled.alignRight,\n      onSelect = _useUncontrolled.onSelect,\n      onToggle = _useUncontrolled.onToggle,\n      focusFirstItemOnShow = _useUncontrolled.focusFirstItemOnShow,\n      Component = _useUncontrolled.as,\n      _4 = _useUncontrolled.navbar,\n      props = _objectWithoutPropertiesLoose(_useUncontrolled, [\"bsPrefix\", \"drop\", \"show\", \"className\", \"alignRight\", \"onSelect\", \"onToggle\", \"focusFirstItemOnShow\", \"as\", \"navbar\"]);\n\n  var onSelectCtx = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(src_SelectableContext);\n  var prefix = useBootstrapPrefix(bsPrefix, 'dropdown');\n  var handleToggle = useEventCallback_default()(function (nextShow, event, source) {\n    if (source === void 0) {\n      source = event.type;\n    }\n\n    if (event.currentTarget === document) source = 'rootClose';\n    onToggle(nextShow, event, {\n      source: source\n    });\n  });\n  var handleSelect = useEventCallback_default()(function (key, event) {\n    if (onSelectCtx) onSelectCtx(key, event);\n    if (onSelect) onSelect(key, event);\n    handleToggle(false, event, 'select');\n  });\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_SelectableContext.Provider, {\n    value: handleSelect,\n    __source: {\n      fileName: Dropdown_jsxFileName,\n      lineNumber: 122\n    },\n    __self: this\n  }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Dropdown_default.a.ControlledComponent, {\n    drop: drop,\n    show: show,\n    alignEnd: alignRight,\n    onToggle: handleToggle,\n    focusFirstItemOnShow: focusFirstItemOnShow,\n    itemSelector: \".\" + prefix + \"-item:not(.disabled):not(:disabled)\",\n    __source: {\n      fileName: Dropdown_jsxFileName,\n      lineNumber: 123\n    },\n    __self: this\n  }, function (_ref) {\n    var dropdownProps = _ref.props;\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, dropdownProps, {\n      ref: ref,\n      className: classnames_default()(className, show && 'show', (!drop || drop === 'down') && prefix, drop === 'up' && 'dropup', drop === 'right' && 'dropright', drop === 'left' && 'dropleft'),\n      __source: {\n        fileName: Dropdown_jsxFileName,\n        lineNumber: 132\n      },\n      __self: this\n    }));\n  }));\n});\nDropdown_Dropdown.displayName = 'Dropdown';\nDropdown_Dropdown.propTypes = Dropdown_propTypes;\nDropdown_Dropdown.defaultProps = Dropdown_defaultProps;\nDropdown_Dropdown.Toggle = src_DropdownToggle;\nDropdown_Dropdown.Menu = src_DropdownMenu;\nDropdown_Dropdown.Item = src_DropdownItem;\nDropdown_Dropdown.Header = createWithBsPrefix('dropdown-header', {\n  defaultProps: {\n    role: 'heading'\n  }\n});\nDropdown_Dropdown.Divider = createWithBsPrefix('dropdown-divider', {\n  defaultProps: {\n    role: 'separator'\n  }\n});\n/* harmony default export */ var src_Dropdown = (Dropdown_Dropdown);\n// CONCATENATED MODULE: ./src/DropdownButton.js\n\n\nvar DropdownButton_jsxFileName = \"/Users/jason/src/react-bootstrap/src/DropdownButton.js\";\n\n\n\nvar DropdownButton_propTypes = {\n  /**\n   * An html id attribute for the Toggle button, necessary for assistive technologies, such as screen readers.\n   * @type {string|number}\n   * @required\n   */\n  id: prop_types_default.a.any,\n\n  /** An `href` passed to the Toggle component */\n  href: prop_types_default.a.string,\n\n  /** An `onClick` handler passed to the Toggle component */\n  onClick: prop_types_default.a.func,\n\n  /** The content of the non-toggle Button.  */\n  title: prop_types_default.a.node.isRequired,\n\n  /** Disables both Buttons  */\n  disabled: prop_types_default.a.bool,\n\n  /** An ARIA accessible role applied to the Menu component. When set to 'menu', The dropdown */\n  menuRole: prop_types_default.a.string,\n\n  /**\n   *  Which event when fired outside the component will cause it to be closed.\n   *\n   * _see [DropdownMenu](#menu-props) for more details_\n   */\n  rootCloseEvent: prop_types_default.a.string,\n\n  /** @ignore */\n  bsPrefix: prop_types_default.a.string,\n\n  /** @ignore */\n  variant: prop_types_default.a.string,\n\n  /** @ignore */\n  size: prop_types_default.a.string\n};\n/**\n * A convenience component for simple or general use dropdowns. Renders a `Button` toggle and all `children`\n * are passed directly to the default `Dropdown.Menu`.\n *\n * _All unknown props are passed through to the `Dropdown` component._ Only\n * the Button `variant`, `size` and `bsPrefix` props are passed to the toggle,\n * along with menu related props are passed to the `Dropdown.Menu`\n */\n\nvar DropdownButton = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var title = _ref.title,\n      children = _ref.children,\n      bsPrefix = _ref.bsPrefix,\n      rootCloseEvent = _ref.rootCloseEvent,\n      variant = _ref.variant,\n      size = _ref.size,\n      menuRole = _ref.menuRole,\n      disabled = _ref.disabled,\n      href = _ref.href,\n      id = _ref.id,\n      props = _objectWithoutPropertiesLoose(_ref, [\"title\", \"children\", \"bsPrefix\", \"rootCloseEvent\", \"variant\", \"size\", \"menuRole\", \"disabled\", \"href\", \"id\"]);\n\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Dropdown, _extends({\n    ref: ref\n  }, props, {\n    __source: {\n      fileName: DropdownButton_jsxFileName,\n      lineNumber: 69\n    },\n    __self: this\n  }), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Dropdown.Toggle, {\n    id: id,\n    href: href,\n    size: size,\n    variant: variant,\n    disabled: disabled,\n    childBsPrefix: bsPrefix,\n    __source: {\n      fileName: DropdownButton_jsxFileName,\n      lineNumber: 70\n    },\n    __self: this\n  }, title), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Dropdown.Menu, {\n    role: menuRole,\n    rootCloseEvent: rootCloseEvent,\n    __source: {\n      fileName: DropdownButton_jsxFileName,\n      lineNumber: 80\n    },\n    __self: this\n  }, children));\n});\nDropdownButton.displayName = 'DropdownButton';\nDropdownButton.propTypes = DropdownButton_propTypes;\n/* harmony default export */ var src_DropdownButton = (DropdownButton);\n// CONCATENATED MODULE: ./src/FormContext.js\n\nvar FormContext = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createContext({\n  controlId: undefined\n});\n/* harmony default export */ var src_FormContext = (FormContext);\n// CONCATENATED MODULE: ./src/FormGroup.js\n\n\nvar FormGroup_jsxFileName = \"/Users/jason/src/react-bootstrap/src/FormGroup.js\";\n\n\n\n\n\nvar FormGroup_propTypes = {\n  /**\n   * @default 'form-group'\n   */\n  bsPrefix: prop_types_default.a.string,\n  as: prop_types_default.a.elementType,\n\n  /**\n   * Sets `id` on `<FormControl>` and `htmlFor` on `<FormGroup.Label>`.\n   */\n  controlId: prop_types_default.a.string,\n\n  /**\n   * The FormGroup `ref` will be forwarded to the underlying element.\n   * Unless the FormGroup is rendered `as` a composite component,\n   * it will be a DOM node, when resolved.\n   *\n   * @type {ReactRef}\n   * @alias ref\n   */\n  _ref: prop_types_default.a.any\n};\nvar FormGroup_defaultProps = {\n  as: 'div'\n};\nvar FormGroup = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      children = _ref.children,\n      controlId = _ref.controlId,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"children\", \"controlId\", \"as\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-group');\n  var context = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useMemo\"])(function () {\n    return {\n      controlId: controlId\n    };\n  }, [controlId]);\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_FormContext.Provider, {\n    value: context,\n    __source: {\n      fileName: FormGroup_jsxFileName,\n      lineNumber: 45\n    },\n    __self: this\n  }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n    ref: ref,\n    className: classnames_default()(className, bsPrefix),\n    __source: {\n      fileName: FormGroup_jsxFileName,\n      lineNumber: 46\n    },\n    __self: this\n  }), children));\n});\nFormGroup.displayName = 'FormGroup';\nFormGroup.propTypes = FormGroup_propTypes;\nFormGroup.defaultProps = FormGroup_defaultProps;\n/* harmony default export */ var src_FormGroup = (FormGroup);\n// EXTERNAL MODULE: ./node_modules/warning/warning.js\nvar warning = __webpack_require__(21);\n\n// CONCATENATED MODULE: ./src/Feedback.js\n\n\nvar Feedback_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Feedback.js\";\n\n\n\nvar Feedback_propTypes = {\n  /**\n   * Specify whether the feedback is for valid or invalid fields\n   *\n   * @type {('valid'|'invalid')}\n   */\n  type: prop_types_default.a.string.isRequired,\n  as: prop_types_default.a.elementType\n};\nvar Feedback_defaultProps = {\n  type: 'valid',\n  as: 'div'\n};\nvar Feedback = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var Component = _ref.as,\n      className = _ref.className,\n      type = _ref.type,\n      props = _objectWithoutPropertiesLoose(_ref, [\"as\", \"className\", \"type\"]);\n\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n    ref: ref,\n    className: classnames_default()(className, type && type + \"-feedback\"),\n    __source: {\n      fileName: Feedback_jsxFileName,\n      lineNumber: 22\n    },\n    __self: this\n  }));\n});\nFeedback.displayName = 'Feedback';\nFeedback.propTypes = Feedback_propTypes;\nFeedback.defaultProps = Feedback_defaultProps;\n/* harmony default export */ var src_Feedback = (Feedback);\n// CONCATENATED MODULE: ./src/FormControl.js\n\n\nvar FormControl_jsxFileName = \"/Users/jason/src/react-bootstrap/src/FormControl.js\";\n\n\n\n\n\n\n\nvar FormControl_propTypes = {\n  /**\n   * @default {'form-control'}\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * The FormControl `ref` will be forwarded to the underlying input element,\n   * which means unless `as` is a composite component,\n   * it will be a DOM node, when resolved.\n   *\n   * @type {ReactRef}\n   * @alias ref\n   */\n  _ref: prop_types_default.a.any,\n\n  /**\n   * Input size variants\n   *\n   * @type {('sm'|'lg')}\n   */\n  size: prop_types_default.a.string,\n\n  /**\n   * The underlying HTML element to use when rendering the FormControl.\n   *\n   * @type {('input'|'textarea'|elementType)}\n   */\n  as: prop_types_default.a.elementType,\n\n  /**\n   * Render the input as plain text. Generally used along side `readOnly`.\n   */\n  plaintext: prop_types_default.a.bool,\n\n  /** Make the control readonly */\n  readOnly: prop_types_default.a.bool,\n\n  /** Make the control disabled */\n  disabled: prop_types_default.a.bool,\n\n  /**\n   * The `value` attribute of underlying input\n   *\n   * @controllable onChange\n   * */\n  value: prop_types_default.a.string,\n\n  /** A callback fired when the `value` prop changes */\n  onChange: prop_types_default.a.func,\n\n  /**\n   * The HTML input `type`, which is only relevant if `as` is `'input'` (the default).\n   */\n  type: prop_types_default.a.string,\n\n  /**\n   * Uses `controlId` from `<FormGroup>` if not explicitly specified.\n   */\n  id: prop_types_default.a.string,\n\n  /** Add \"valid\" validation styles to the control */\n  isValid: prop_types_default.a.bool,\n\n  /** Add \"invalid\" validation styles to the control and accompanying label */\n  isInvalid: prop_types_default.a.bool\n};\nvar FormControl_defaultProps = {\n  as: 'input'\n};\nvar FormControl = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      type = _ref.type,\n      size = _ref.size,\n      id = _ref.id,\n      className = _ref.className,\n      isValid = _ref.isValid,\n      isInvalid = _ref.isInvalid,\n      plaintext = _ref.plaintext,\n      readOnly = _ref.readOnly,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"type\", \"size\", \"id\", \"className\", \"isValid\", \"isInvalid\", \"plaintext\", \"readOnly\", \"as\"]);\n\n  var _useContext = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(src_FormContext),\n      controlId = _useContext.controlId;\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-control');\n  var classes;\n\n  if (plaintext) {\n    var _classes;\n\n    classes = (_classes = {}, _classes[bsPrefix + \"-plaintext\"] = true, _classes);\n  } else if (type === 'file') {\n    var _classes2;\n\n    classes = (_classes2 = {}, _classes2[bsPrefix + \"-file\"] = true, _classes2);\n  } else {\n    var _classes3;\n\n    classes = (_classes3 = {}, _classes3[bsPrefix] = true, _classes3[bsPrefix + \"-\" + size] = size, _classes3);\n  }\n\n   false ? undefined : void 0;\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n    type: type,\n    ref: ref,\n    readOnly: readOnly,\n    id: id || controlId,\n    className: classnames_default()(className, classes, isValid && \"is-valid\", isInvalid && \"is-invalid\"),\n    __source: {\n      fileName: FormControl_jsxFileName,\n      lineNumber: 120\n    },\n    __self: this\n  }));\n});\nFormControl.displayName = 'FormControl';\nFormControl.propTypes = FormControl_propTypes;\nFormControl.defaultProps = FormControl_defaultProps;\nFormControl.Feedback = src_Feedback;\n/* harmony default export */ var src_FormControl = (FormControl);\n// CONCATENATED MODULE: ./src/FormCheckInput.js\n\n\nvar FormCheckInput_jsxFileName = \"/Users/jason/src/react-bootstrap/src/FormCheckInput.js\";\n\n\n\n\n\nvar FormCheckInput_propTypes = {\n  /**\n   * @default 'form-check-input'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /** A HTML id attribute, necessary for proper form accessibility. */\n  id: prop_types_default.a.string,\n\n  /** The type of checkable. */\n  type: prop_types_default.a.oneOf(['radio', 'checkbox']).isRequired,\n\n  /**\n   * A convenience prop shortcut for adding `position-static` to the input, for\n   * correct styling when used without an FormCheckLabel\n   */\n  isStatic: prop_types_default.a.bool,\n\n  /** Manually style the input as valid */\n  isValid: prop_types_default.a.bool.isRequired,\n\n  /** Manually style the input as invalid */\n  isInvalid: prop_types_default.a.bool.isRequired\n};\nvar FormCheckInput_defaultProps = {\n  type: 'checkbox'\n};\nvar FormCheckInput = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var id = _ref.id,\n      bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      isValid = _ref.isValid,\n      isInvalid = _ref.isInvalid,\n      isStatic = _ref.isStatic,\n      props = _objectWithoutPropertiesLoose(_ref, [\"id\", \"bsPrefix\", \"className\", \"isValid\", \"isInvalid\", \"isStatic\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-check-input');\n\n  var _useContext = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(src_FormContext),\n      controlId = _useContext.controlId,\n      custom = _useContext.custom;\n\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"input\", _extends({}, props, {\n    ref: ref,\n    id: id || controlId,\n    className: classnames_default()(className, !custom && bsPrefix, custom && 'custom-control-input', isValid && 'is-valid', isInvalid && 'is-invalid', isStatic && 'position-static'),\n    __source: {\n      fileName: FormCheckInput_jsxFileName,\n      lineNumber: 47\n    },\n    __self: this\n  }));\n});\nFormCheckInput.displayName = 'FormCheckInput';\nFormCheckInput.propTypes = FormCheckInput_propTypes;\nFormCheckInput.defaultProps = FormCheckInput_defaultProps;\n/* harmony default export */ var src_FormCheckInput = (FormCheckInput);\n// CONCATENATED MODULE: ./src/FormCheckLabel.js\n\n\nvar FormCheckLabel_jsxFileName = \"/Users/jason/src/react-bootstrap/src/FormCheckLabel.js\";\n\n\n\n\n\nvar FormCheckLabel_propTypes = {\n  /**\n   * @default 'form-check-input'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /** The HTML for attribute for associating the label with an input */\n  htmlFor: prop_types_default.a.string\n};\nvar FormCheckLabel_defaultProps = {\n  type: 'checkbox'\n};\nvar FormCheckLabel = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      htmlFor = _ref.htmlFor,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"htmlFor\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-check-label');\n\n  var _useContext = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(src_FormContext),\n      controlId = _useContext.controlId,\n      custom = _useContext.custom;\n\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"label\", _extends({}, props, {\n    ref: ref,\n    htmlFor: htmlFor || controlId,\n    className: classnames_default()(className, !custom && bsPrefix, custom && 'custom-control-label'),\n    __source: {\n      fileName: FormCheckLabel_jsxFileName,\n      lineNumber: 29\n    },\n    __self: this\n  }));\n});\nFormCheckLabel.displayName = 'FormCheckLabel';\nFormCheckLabel.propTypes = FormCheckLabel_propTypes;\nFormCheckLabel.defaultProps = FormCheckLabel_defaultProps;\n/* harmony default export */ var src_FormCheckLabel = (FormCheckLabel);\n// CONCATENATED MODULE: ./src/FormCheck.js\n\n\nvar FormCheck_jsxFileName = \"/Users/jason/src/react-bootstrap/src/FormCheck.js\";\n\n\n\n\n\n\n\n\nvar FormCheck_propTypes = {\n  /**\n   * @default 'form-check'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * The FormCheck `ref` will be forwarded to the underlying input element,\n   * which means it will be a DOM node, when resolved.\n   *\n   * @type {ReactRef}\n   * @alias ref\n   */\n  _ref: prop_types_default.a.any,\n\n  /** A HTML id attribute, necessary for proper form accessibility. */\n  id: prop_types_default.a.string,\n\n  /**\n   * Provide a function child to manually handle the layout of the FormCheck's inner components.\n   *\n   * ````\n   * <FormCheck>\n   *   <FormCheck.Input isInvalid type={radio} />\n   *   <FormCheck.Label>Allow us to contact you?</FormCheck.Label>\n   *   <Feedback type=\"invalid\">Yo this is required</Feedback>\n   * </FormCheck>\n   * ```\n   */\n  children: prop_types_default.a.node,\n  inline: prop_types_default.a.bool,\n  disabled: prop_types_default.a.bool,\n  title: prop_types_default.a.string,\n  label: prop_types_default.a.node,\n\n  /** Use Bootstrap's custom form elements to replace the browser defaults */\n  custom: prop_types_default.a.bool,\n\n  /** The type of checkable. */\n  type: prop_types_default.a.oneOf(['radio', 'checkbox']).isRequired,\n\n  /** Manually style the input as valid */\n  isValid: prop_types_default.a.bool.isRequired,\n\n  /** Manually style the input as invalid */\n  isInvalid: prop_types_default.a.bool.isRequired,\n\n  /** A message to display when the input is in a validation state */\n  feedback: prop_types_default.a.node\n};\nvar FormCheck_defaultProps = {\n  type: 'checkbox',\n  inline: false,\n  disabled: false,\n  isValid: false,\n  isInvalid: false,\n  title: ''\n};\nvar FormCheck = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var id = _ref.id,\n      bsPrefix = _ref.bsPrefix,\n      inline = _ref.inline,\n      disabled = _ref.disabled,\n      isValid = _ref.isValid,\n      isInvalid = _ref.isInvalid,\n      feedback = _ref.feedback,\n      className = _ref.className,\n      style = _ref.style,\n      title = _ref.title,\n      type = _ref.type,\n      label = _ref.label,\n      children = _ref.children,\n      custom = _ref.custom,\n      props = _objectWithoutPropertiesLoose(_ref, [\"id\", \"bsPrefix\", \"inline\", \"disabled\", \"isValid\", \"isInvalid\", \"feedback\", \"className\", \"style\", \"title\", \"type\", \"label\", \"children\", \"custom\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-check');\n\n  var _useContext = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(src_FormContext),\n      controlId = _useContext.controlId;\n\n  var innerFormContext = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useMemo\"])(function () {\n    return {\n      controlId: id || controlId,\n      custom: custom\n    };\n  }, [controlId, custom, id]);\n  var hasLabel = label != null && label !== false && !children;\n  var input = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_FormCheckInput, _extends({}, props, {\n    type: type,\n    ref: ref,\n    isValid: isValid,\n    isInvalid: isInvalid,\n    isStatic: !hasLabel,\n    disabled: disabled,\n    __source: {\n      fileName: FormCheck_jsxFileName,\n      lineNumber: 107\n    },\n    __self: this\n  }));\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_FormContext.Provider, {\n    value: innerFormContext,\n    __source: {\n      fileName: FormCheck_jsxFileName,\n      lineNumber: 119\n    },\n    __self: this\n  }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", {\n    style: style,\n    className: classnames_default()(className, !custom && bsPrefix, custom && \"custom-control custom-\" + type, inline && (custom ? 'custom-control' : bsPrefix) + \"-inline\"),\n    __source: {\n      fileName: FormCheck_jsxFileName,\n      lineNumber: 120\n    },\n    __self: this\n  }, children || external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Fragment, {\n    __source: {\n      fileName: FormCheck_jsxFileName,\n      lineNumber: 130\n    },\n    __self: this\n  }, input, hasLabel && external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_FormCheckLabel, {\n    title: title,\n    __source: {\n      fileName: FormCheck_jsxFileName,\n      lineNumber: 133\n    },\n    __self: this\n  }, label), (isValid || isInvalid) && external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Feedback, {\n    type: isValid ? 'valid' : 'invalid',\n    __source: {\n      fileName: FormCheck_jsxFileName,\n      lineNumber: 136\n    },\n    __self: this\n  }, feedback))));\n});\nFormCheck.displayName = 'FormCheck';\nFormCheck.propTypes = FormCheck_propTypes;\nFormCheck.defaultProps = FormCheck_defaultProps;\nFormCheck.Input = src_FormCheckInput;\nFormCheck.Label = src_FormCheckLabel;\n/* harmony default export */ var src_FormCheck = (FormCheck);\n// CONCATENATED MODULE: ./src/FormLabel.js\n\n\nvar FormLabel_jsxFileName = \"/Users/jason/src/react-bootstrap/src/FormLabel.js\";\n\n\n\n\n\n\n\nvar FormLabel_propTypes = {\n  /**\n   * @default 'form-label'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * Uses `controlId` from `<FormGroup>` if not explicitly specified.\n   */\n  htmlFor: prop_types_default.a.string,\n\n  /**\n   * Renders the FormLabel as a `<Col>` component (accepting all the same props),\n   * as well as adding additional styling for horizontal forms.\n   */\n  column: prop_types_default.a.bool,\n\n  /**\n   * The FormLabel `ref` will be forwarded to the underlying element.\n   * Unless the FormLabel is rendered `as` a composite component,\n   * it will be a DOM node, when resolved.\n   *\n   * @type {ReactRef}\n   * @alias ref\n   */\n  _ref: prop_types_default.a.any,\n\n  /**\n   * Hides the label visually while still allowing it to be\n   * read by assistive technologies.\n   */\n  srOnly: prop_types_default.a.bool\n};\nvar FormLabel_defaultProps = {\n  column: false,\n  srOnly: false\n};\nvar FormLabel = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      column = _ref.column,\n      srOnly = _ref.srOnly,\n      className = _ref.className,\n      htmlFor = _ref.htmlFor,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"column\", \"srOnly\", \"className\", \"htmlFor\"]);\n\n  var _useContext = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(src_FormContext),\n      controlId = _useContext.controlId;\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-label');\n  var classes = classnames_default()(className, bsPrefix, srOnly && 'sr-only', column && 'col-form-label');\n  if (column) return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Col, _extends({}, props, {\n    className: classes,\n    as: \"label\",\n    __source: {\n      fileName: FormLabel_jsxFileName,\n      lineNumber: 62\n    },\n    __self: this\n  }));\n   false ? undefined : void 0;\n  return (// eslint-disable-next-line jsx-a11y/label-has-for, jsx-a11y/label-has-associated-control\n    external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"label\", _extends({}, props, {\n      htmlFor: htmlFor || controlId,\n      ref: ref,\n      className: classes,\n      __source: {\n        fileName: FormLabel_jsxFileName,\n        lineNumber: 70\n      },\n      __self: this\n    }))\n  );\n});\nFormLabel.displayName = 'FormLabel';\nFormLabel.propTypes = FormLabel_propTypes;\nFormLabel.defaultProps = FormLabel_defaultProps;\n/* harmony default export */ var src_FormLabel = (FormLabel);\n// CONCATENATED MODULE: ./src/FormText.js\n\n\nvar FormText_jsxFileName = \"/Users/jason/src/react-bootstrap/src/FormText.js\";\n\n\n\n\nvar FormText_propTypes = {\n  /** @default 'form-text' */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * The FormText `ref` will be forwarded to the underlying element.\n   * Unless the FormText is rendered `as` a composite component,\n   * it will be a DOM node, when resolved.\n   *\n   * @type {ReactRef}\n   * @alias ref\n   */\n  _ref: prop_types_default.a.any,\n\n  /**\n   * A convenience prop for add the `text-muted` class,\n   * since it's so commonly used here.\n   */\n  muted: prop_types_default.a.bool,\n  as: prop_types_default.a.elementType\n};\nvar FormText_defaultProps = {\n  as: 'small'\n};\nvar FormText = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"as\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-text');\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n    ref: ref,\n    className: classnames_default()(className, bsPrefix),\n    __source: {\n      fileName: FormText_jsxFileName,\n      lineNumber: 38\n    },\n    __self: this\n  }));\n});\nFormText.displayName = 'FormText';\nFormText.propTypes = FormText_propTypes;\nFormText.defaultProps = FormText_defaultProps;\n/* harmony default export */ var src_FormText = (FormText);\n// CONCATENATED MODULE: ./src/Form.js\n\n\nvar Form_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Form.js\";\n\n\n\n\n\n\n\n\n\n\nvar Form_propTypes = {\n  /**\n   * @default {'form'}\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * The Form `ref` will be forwarded to the underlying element,\n   * which means, unless it's rendered `as` a composite component,\n   * it will be a DOM node, when resolved.\n   *\n   * @type {ReactRef}\n   * @alias ref\n   */\n  _ref: prop_types_default.a.any,\n\n  /**\n   * Display the series of labels, form controls,\n   * and buttons on a single horizontal row\n   */\n  inline: prop_types_default.a.bool,\n\n  /**\n   * Mark a form as having been validated. Setting it to `true` will\n   * toggle any validation styles on the forms elements.\n   */\n  validated: prop_types_default.a.bool,\n  as: prop_types_default.a.elementType\n};\nvar Form_defaultProps = {\n  inline: false,\n  as: 'form'\n};\nvar Form = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      inline = _ref.inline,\n      className = _ref.className,\n      validated = _ref.validated,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"inline\", \"className\", \"validated\", \"as\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form');\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n    ref: ref,\n    className: classnames_default()(className, validated && 'was-validated', inline && bsPrefix + \"-inline\"),\n    __source: {\n      fileName: Form_jsxFileName,\n      lineNumber: 55\n    },\n    __self: this\n  }));\n});\nForm.displayName = 'Form';\nForm.propTypes = Form_propTypes;\nForm.defaultProps = Form_defaultProps;\nForm.Row = createWithBsPrefix('form-row');\nForm.Group = src_FormGroup;\nForm.Control = src_FormControl;\nForm.Check = src_FormCheck;\nForm.Label = src_FormLabel;\nForm.Text = src_FormText;\n/* harmony default export */ var src_Form = (Form);\n// CONCATENATED MODULE: ./src/Container.js\n\n\nvar Container_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Container.js\";\n\n\n\n\nvar Container_propTypes = {\n  /**\n   * @default 'container'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * Allow the Container to fill all of it's availble horizontal space.\n   */\n  fluid: prop_types_default.a.bool,\n\n  /**\n   * You can use a custom element for this component\n   */\n  as: prop_types_default.a.elementType\n};\nvar Container_defaultProps = {\n  as: 'div',\n  fluid: false\n};\nvar Container = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      fluid = _ref.fluid,\n      Component = _ref.as,\n      className = _ref.className,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"fluid\", \"as\", \"className\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'container');\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({\n    ref: ref\n  }, props, {\n    className: classnames_default()(className, fluid ? prefix + \"-fluid\" : prefix),\n    __source: {\n      fileName: Container_jsxFileName,\n      lineNumber: 32\n    },\n    __self: this\n  }));\n});\nContainer.displayName = 'Container';\nContainer.propTypes = Container_propTypes;\nContainer.defaultProps = Container_defaultProps;\n/* harmony default export */ var src_Container = (Container);\n// CONCATENATED MODULE: ./src/Image.js\n\n\n\nvar Image_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Image.js\";\n\n\n\n\n\nvar Image_Image =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Image, _React$Component);\n\n  function Image() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = Image.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        bsPrefix = _this$props.bsPrefix,\n        className = _this$props.className,\n        fluid = _this$props.fluid,\n        rounded = _this$props.rounded,\n        roundedCircle = _this$props.roundedCircle,\n        thumbnail = _this$props.thumbnail,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"bsPrefix\", \"className\", \"fluid\", \"rounded\", \"roundedCircle\", \"thumbnail\"]);\n\n    var classes = classnames_default()(fluid && bsPrefix + \"-fluid\", rounded && \"rounded\", roundedCircle && \"rounded-circle\", thumbnail && bsPrefix + \"-thumbnail\");\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"img\", _extends({}, props, {\n      className: classnames_default()(className, classes),\n      __source: {\n        fileName: Image_jsxFileName,\n        lineNumber: 60\n      },\n      __self: this\n    }));\n  };\n\n  return Image;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nImage_Image.propTypes = {\n  /**\n   * @default 'img'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * Sets image as fluid image.\n   */\n  fluid: prop_types_default.a.bool,\n\n  /**\n   * Sets image shape as rounded.\n   */\n  rounded: prop_types_default.a.bool,\n\n  /**\n   * Sets image shape as circle.\n   */\n  roundedCircle: prop_types_default.a.bool,\n\n  /**\n   * Sets image shape as thumbnail.\n   */\n  thumbnail: prop_types_default.a.bool\n};\nImage_Image.defaultProps = {\n  fluid: false,\n  rounded: false,\n  roundedCircle: false,\n  thumbnail: false\n};\n/* harmony default export */ var src_Image = (createBootstrapComponent(Image_Image, 'img'));\n// CONCATENATED MODULE: ./src/FigureImage.js\n\n\nvar FigureImage_jsxFileName = \"/Users/jason/src/react-bootstrap/src/FigureImage.js\";\n\n\n\n\nvar FigureImage_propTypes = {\n  /**\n   * @default 'img'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * Sets image as fluid image.\n   */\n  fluid: prop_types_default.a.bool,\n\n  /**\n   * Sets image shape as rounded.\n   */\n  rounded: prop_types_default.a.bool,\n\n  /**\n   * Sets image shape as circle.\n   */\n  roundedCircle: prop_types_default.a.bool,\n\n  /**\n   * Sets image shape as thumbnail.\n   */\n  thumbnail: prop_types_default.a.bool\n};\nvar FigureImage_defaultProps = {\n  fluid: true\n};\nvar FigureImage = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var className = _ref.className,\n      props = _objectWithoutPropertiesLoose(_ref, [\"className\"]);\n\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Image, _extends({\n    ref: ref\n  }, props, {\n    className: classnames_default()(className, 'figure-img'),\n    __source: {\n      fileName: FigureImage_jsxFileName,\n      lineNumber: 37\n    },\n    __self: this\n  }));\n});\nFigureImage.displayName = 'FigureImage';\nFigureImage.propTypes = FigureImage_propTypes;\nFigureImage.defaultProps = FigureImage_defaultProps;\n/* harmony default export */ var src_FigureImage = (FigureImage);\n// CONCATENATED MODULE: ./src/FigureCaption.js\n\nvar FigureCaption = createWithBsPrefix('figure-caption', {\n  Component: 'figcaption'\n});\n/* harmony default export */ var src_FigureCaption = (FigureCaption);\n// CONCATENATED MODULE: ./src/Figure.js\n\n\n\nvar Figure = createWithBsPrefix('figure', {\n  Component: 'figure'\n});\nFigure.Image = src_FigureImage;\nFigure.Caption = src_FigureCaption;\n/* harmony default export */ var src_Figure = (Figure);\n// CONCATENATED MODULE: ./src/InputGroup.js\n\n\n\nvar InputGroup_jsxFileName = \"/Users/jason/src/react-bootstrap/src/InputGroup.js\";\n\n\n\n\n\n/**\n *\n * @property {InputGroupAppend} Append\n * @property {InputGroupPrepend} Prepend\n * @property {InputGroupText} Text\n * @property {InputGroupRadio} Radio\n * @property {InputGroupCheckbox} Checkbox\n */\n\nvar InputGroup_InputGroup =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(InputGroup, _React$Component);\n\n  function InputGroup() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = InputGroup.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        bsPrefix = _this$props.bsPrefix,\n        size = _this$props.size,\n        className = _this$props.className,\n        Component = _this$props.as,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"bsPrefix\", \"size\", \"className\", \"as\"]);\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n      className: classnames_default()(className, bsPrefix, size && bsPrefix + \"-\" + size),\n      __source: {\n        fileName: InputGroup_jsxFileName,\n        lineNumber: 40\n      },\n      __self: this\n    }));\n  };\n\n  return InputGroup;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nInputGroup_InputGroup.propTypes = {\n  /** @default 'input-group' */\n  bsPrefix: prop_types_default.a.string.isRequired,\n\n  /**\n   * Control the size of buttons and form elements from the top-level .\n   *\n   * @type {('sm'|'lg')}\n   */\n  size: prop_types_default.a.string,\n  as: prop_types_default.a.elementType\n};\nInputGroup_InputGroup.defaultProps = {\n  as: 'div'\n};\nvar InputGroupAppend = createWithBsPrefix('input-group-append');\nvar InputGroupPrepend = createWithBsPrefix('input-group-prepend');\nvar InputGroupText = createWithBsPrefix('input-group-text', {\n  Component: 'span'\n});\n\nvar InputGroup_InputGroupCheckbox = function InputGroupCheckbox(props) {\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(InputGroupText, {\n    __source: {\n      fileName: InputGroup_jsxFileName,\n      lineNumber: 61\n    },\n    __self: this\n  }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"input\", _extends({\n    type: \"checkbox\"\n  }, props, {\n    __source: {\n      fileName: InputGroup_jsxFileName,\n      lineNumber: 62\n    },\n    __self: this\n  })));\n};\n\nvar InputGroup_InputGroupRadio = function InputGroupRadio(props) {\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(InputGroupText, {\n    __source: {\n      fileName: InputGroup_jsxFileName,\n      lineNumber: 67\n    },\n    __self: this\n  }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"input\", _extends({\n    type: \"radio\"\n  }, props, {\n    __source: {\n      fileName: InputGroup_jsxFileName,\n      lineNumber: 68\n    },\n    __self: this\n  })));\n};\n\nvar DecoratedInputGroup = createBootstrapComponent(InputGroup_InputGroup, 'input-group');\nDecoratedInputGroup.Text = InputGroupText;\nDecoratedInputGroup.Radio = InputGroup_InputGroupRadio;\nDecoratedInputGroup.Checkbox = InputGroup_InputGroupCheckbox;\nDecoratedInputGroup.Append = InputGroupAppend;\nDecoratedInputGroup.Prepend = InputGroupPrepend;\n/* harmony default export */ var src_InputGroup = (DecoratedInputGroup);\n// CONCATENATED MODULE: ./src/Jumbotron.js\n\n\n\nvar Jumbotron_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Jumbotron.js\";\n\n\n\n\nvar Jumbotron_propTypes = {\n  as: prop_types_default.a.elementType,\n\n  /** Make the jumbotron full width, and without rounded corners */\n  fluid: prop_types_default.a.bool,\n\n  /** @default 'jumbotron' */\n  bsPrefix: prop_types_default.a.string\n};\nvar Jumbotron_defaultProps = {\n  as: 'div',\n  fluid: false\n};\n\nvar Jumbotron_Jumbotron =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Jumbotron, _React$Component);\n\n  function Jumbotron() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = Jumbotron.prototype;\n\n  _proto.render = function render() {\n    var _classes;\n\n    var _this$props = this.props,\n        Component = _this$props.as,\n        className = _this$props.className,\n        fluid = _this$props.fluid,\n        bsPrefix = _this$props.bsPrefix,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"as\", \"className\", \"fluid\", \"bsPrefix\"]);\n\n    var classes = (_classes = {}, _classes[bsPrefix] = true, _classes[bsPrefix + \"-fluid\"] = fluid, _classes);\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n      className: classnames_default()(className, classes),\n      __source: {\n        fileName: Jumbotron_jsxFileName,\n        lineNumber: 27\n      },\n      __self: this\n    }));\n  };\n\n  return Jumbotron;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nJumbotron_Jumbotron.propTypes = Jumbotron_propTypes;\nJumbotron_Jumbotron.defaultProps = Jumbotron_defaultProps;\n/* harmony default export */ var src_Jumbotron = (createBootstrapComponent(Jumbotron_Jumbotron, 'jumbotron'));\n// EXTERNAL MODULE: ./node_modules/dom-helpers/query/querySelectorAll.js\nvar querySelectorAll = __webpack_require__(9);\nvar querySelectorAll_default = /*#__PURE__*/__webpack_require__.n(querySelectorAll);\n\n// EXTERNAL MODULE: ./node_modules/@restart/context/mapContextToProps.js\nvar mapContextToProps = __webpack_require__(55);\nvar mapContextToProps_default = /*#__PURE__*/__webpack_require__.n(mapContextToProps);\n\n// CONCATENATED MODULE: ./src/TabContext.js\n\nvar TabContext = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createContext(null);\n/* harmony default export */ var src_TabContext = (TabContext);\n// CONCATENATED MODULE: ./src/AbstractNav.js\n\n\n\nvar AbstractNav_jsxFileName = \"/Users/jason/src/react-bootstrap/src/AbstractNav.js\";\n\n\n\n\n\n\n\n\nvar noop = function noop() {};\n\nvar AbstractNav_AbstractNav =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(AbstractNav, _React$Component);\n\n  function AbstractNav() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n    _this.handleSelect = function (key, event) {\n      var _this$props = _this.props,\n          onSelect = _this$props.onSelect,\n          parentOnSelect = _this$props.parentOnSelect;\n      if (key == null) return;\n      if (onSelect) onSelect(key, event);\n      if (parentOnSelect) parentOnSelect(key, event);\n    };\n\n    _this.handleKeyDown = function (event) {\n      var onKeyDown = _this.props.onKeyDown;\n      if (onKeyDown) onKeyDown(event);\n      var nextActiveChild;\n\n      switch (event.key) {\n        case 'ArrowLeft':\n        case 'ArrowUp':\n          nextActiveChild = _this.getNextActiveChild(-1);\n          break;\n\n        case 'ArrowRight':\n        case 'ArrowDown':\n          nextActiveChild = _this.getNextActiveChild(1);\n          break;\n\n        default:\n          return;\n      }\n\n      if (!nextActiveChild) return;\n      event.preventDefault();\n\n      _this.handleSelect(nextActiveChild.dataset.rbEventKey, event);\n\n      _this._needsRefocus = true;\n    };\n\n    _this.attachRef = function (ref) {\n      _this.listNode = ref;\n    };\n\n    _this.state = {\n      navContext: null\n    };\n    return _this;\n  }\n\n  AbstractNav.getDerivedStateFromProps = function getDerivedStateFromProps(_ref) {\n    var activeKey = _ref.activeKey,\n        getControlledId = _ref.getControlledId,\n        getControllerId = _ref.getControllerId,\n        role = _ref.role;\n    return {\n      navContext: {\n        role: role,\n        // used by NavLink to determine it's role\n        activeKey: makeEventKey(activeKey),\n        getControlledId: getControlledId || noop,\n        getControllerId: getControllerId || noop\n      }\n    };\n  };\n\n  var _proto = AbstractNav.prototype;\n\n  _proto.componentDidUpdate = function componentDidUpdate() {\n    if (!this._needsRefocus || !this.listNode) return;\n    var activeChild = this.listNode.querySelector('[data-rb-event-key].active');\n    if (activeChild) activeChild.focus();\n  };\n\n  _proto.getNextActiveChild = function getNextActiveChild(offset) {\n    if (!this.listNode) return null;\n    var items = querySelectorAll_default()(this.listNode, '[data-rb-event-key]:not(.disabled)');\n    var activeChild = this.listNode.querySelector('.active');\n    var index = items.indexOf(activeChild);\n    if (index === -1) return null;\n    var nextIndex = index + offset;\n    if (nextIndex >= items.length) nextIndex = 0;\n    if (nextIndex < 0) nextIndex = items.length - 1;\n    return items[nextIndex];\n  };\n\n  _proto.render = function render() {\n    var _this$props2 = this.props,\n        Component = _this$props2.as,\n        _ = _this$props2.onSelect,\n        _0 = _this$props2.parentOnSelect,\n        _1 = _this$props2.getControlledId,\n        _2 = _this$props2.getControllerId,\n        _3 = _this$props2.activeKey,\n        props = _objectWithoutPropertiesLoose(_this$props2, [\"as\", \"onSelect\", \"parentOnSelect\", \"getControlledId\", \"getControllerId\", \"activeKey\"]);\n\n    if (props.role === 'tablist') {\n      props.onKeyDown = this.handleKeyDown;\n    }\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_SelectableContext.Provider, {\n      value: this.handleSelect,\n      __source: {\n        fileName: AbstractNav_jsxFileName,\n        lineNumber: 129\n      },\n      __self: this\n    }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_NavContext.Provider, {\n      value: this.state.navContext,\n      __source: {\n        fileName: AbstractNav_jsxFileName,\n        lineNumber: 130\n      },\n      __self: this\n    }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n      onKeyDown: this.handleKeyDown,\n      ref: this.attachRef,\n      __source: {\n        fileName: AbstractNav_jsxFileName,\n        lineNumber: 131\n      },\n      __self: this\n    }))));\n  };\n\n  return AbstractNav;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nAbstractNav_AbstractNav.propTypes = {\n  onSelect: prop_types_default.a.func.isRequired,\n  as: prop_types_default.a.elementType,\n\n  /** @private */\n  onKeyDown: prop_types_default.a.func,\n\n  /** @private */\n  parentOnSelect: prop_types_default.a.func,\n\n  /** @private */\n  getControlledId: prop_types_default.a.func,\n\n  /** @private */\n  getControllerId: prop_types_default.a.func,\n\n  /** @private */\n  activeKey: prop_types_default.a.any\n};\nAbstractNav_AbstractNav.defaultProps = {\n  as: 'ul'\n};\n/* harmony default export */ var src_AbstractNav = (mapContextToProps_default()([src_SelectableContext, src_TabContext], function (parentOnSelect, tabContext, _ref2) {\n  var role = _ref2.role;\n  if (!tabContext) return {\n    parentOnSelect: parentOnSelect\n  };\n  var activeKey = tabContext.activeKey,\n      getControllerId = tabContext.getControllerId,\n      getControlledId = tabContext.getControlledId;\n  return {\n    activeKey: activeKey,\n    parentOnSelect: parentOnSelect,\n    role: role || 'tablist',\n    // pass these two through to avoid having to listen to\n    // both Tab and Nav contexts in NavLink\n    getControllerId: getControllerId,\n    getControlledId: getControlledId\n  };\n}, AbstractNav_AbstractNav));\n// CONCATENATED MODULE: ./src/AbstractNavItem.js\n\n\nvar AbstractNavItem_jsxFileName = \"/Users/jason/src/react-bootstrap/src/AbstractNavItem.js\";\n\n\n\n\n\n\nvar AbstractNavItem_propTypes = {\n  active: prop_types_default.a.bool,\n  role: prop_types_default.a.string,\n  href: prop_types_default.a.string,\n  tabIndex: prop_types_default.a.string,\n  eventKey: prop_types_default.a.any,\n  onclick: prop_types_default.a.func,\n  as: prop_types_default.a.any,\n  onClick: prop_types_default.a.func,\n  onSelect: prop_types_default.a.func\n};\nvar AbstractNavItem_defaultProps = {\n  disabled: false\n};\nvar AbstractNavItem = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var active = _ref.active,\n      className = _ref.className,\n      tabIndex = _ref.tabIndex,\n      eventKey = _ref.eventKey,\n      onSelect = _ref.onSelect,\n      onClick = _ref.onClick,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"active\", \"className\", \"tabIndex\", \"eventKey\", \"onSelect\", \"onClick\", \"as\"]);\n\n  var navKey = makeEventKey(eventKey, props.href);\n  var parentOnSelect = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(src_SelectableContext);\n  var navContext = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(src_NavContext);\n  var isActive = active;\n\n  if (navContext) {\n    if (!props.role && navContext.role === 'tablist') props.role = 'tab';\n    props['data-rb-event-key'] = navKey;\n    props.id = navContext.getControllerId(navKey);\n    props['aria-controls'] = navContext.getControlledId(navKey);\n    isActive = active == null && navKey != null ? navContext.activeKey === navKey : active;\n  }\n\n  if (props.role === 'tab') {\n    props.tabIndex = isActive ? tabIndex : -1;\n    props['aria-selected'] = isActive;\n  }\n\n  var handleOnclick = useEventCallback_default()(function (e) {\n    if (onClick) onClick(e);\n    if (navKey == null) return;\n    if (onSelect) onSelect(navKey, e);\n    if (parentOnSelect) parentOnSelect(navKey, e);\n  });\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n    ref: ref,\n    onClick: handleOnclick,\n    className: classnames_default()(className, isActive && 'active'),\n    __source: {\n      fileName: AbstractNavItem_jsxFileName,\n      lineNumber: 72\n    },\n    __self: this\n  }));\n});\nAbstractNavItem.propTypes = AbstractNavItem_propTypes;\nAbstractNavItem.defaultProps = AbstractNavItem_defaultProps;\n/* harmony default export */ var src_AbstractNavItem = (AbstractNavItem);\n// CONCATENATED MODULE: ./src/ListGroupItem.js\n\n\n\nvar ListGroupItem_jsxFileName = \"/Users/jason/src/react-bootstrap/src/ListGroupItem.js\";\n\n\n\n\n\n\n\nvar ListGroupItem_ListGroupItem =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(ListGroupItem, _React$Component);\n\n  function ListGroupItem() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n    _this.handleClick = function (event) {\n      var _this$props = _this.props,\n          onClick = _this$props.onClick,\n          disabled = _this$props.disabled;\n\n      if (disabled) {\n        event.preventDefault();\n        event.stopPropagation();\n        return;\n      }\n\n      if (onClick) onClick(event);\n    };\n\n    return _this;\n  }\n\n  var _proto = ListGroupItem.prototype;\n\n  _proto.render = function render() {\n    var _this$props2 = this.props,\n        bsPrefix = _this$props2.bsPrefix,\n        active = _this$props2.active,\n        disabled = _this$props2.disabled,\n        className = _this$props2.className,\n        variant = _this$props2.variant,\n        action = _this$props2.action,\n        as = _this$props2.as,\n        eventKey = _this$props2.eventKey,\n        props = _objectWithoutPropertiesLoose(_this$props2, [\"bsPrefix\", \"active\", \"disabled\", \"className\", \"variant\", \"action\", \"as\", \"eventKey\"]);\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_AbstractNavItem, _extends({}, props, {\n      eventKey: makeEventKey(eventKey, props.href) // eslint-disable-next-line\n      ,\n      as: as || (action ? props.href ? 'a' : 'button' : 'div'),\n      onClick: this.handleClick,\n      className: classnames_default()(className, bsPrefix, active && 'active', disabled && 'disabled', variant && bsPrefix + \"-\" + variant, action && bsPrefix + \"-action\"),\n      __source: {\n        fileName: ListGroupItem_jsxFileName,\n        lineNumber: 80\n      },\n      __self: this\n    }));\n  };\n\n  return ListGroupItem;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nListGroupItem_ListGroupItem.propTypes = {\n  /**\n   * @default 'list-group-item'\n   */\n  bsPrefix: prop_types_default.a.string.isRequired,\n\n  /**\n   * Sets contextual classes for list item\n   * @type {('primary'|'secondary'|'success'|'danger'|'warning'|'info'|'dark'|'light')}\n   */\n  variant: prop_types_default.a.string,\n\n  /**\n   * Marks a ListGroupItem as actionable, applying additional hover, active and disabled styles\n   * for links and buttons.\n   */\n  action: prop_types_default.a.bool,\n\n  /**\n   * Sets list item as active\n   */\n  active: prop_types_default.a.bool,\n\n  /**\n   * Sets list item state as disabled\n   */\n  disabled: prop_types_default.a.bool,\n  eventKey: prop_types_default.a.string,\n  onClick: prop_types_default.a.func,\n\n  /**\n   * You can use a custom element type for this component. For none `action` items, items render as `li`.\n   * For actions the default is an achor or button element depending on whether a `href` is provided.\n   *\n   * @default {'div' | 'a' | 'button'}\n   */\n  as: prop_types_default.a.elementType\n};\nListGroupItem_ListGroupItem.defaultProps = {\n  variant: null,\n  active: false,\n  disabled: false\n};\n/* harmony default export */ var src_ListGroupItem = (createBootstrapComponent(ListGroupItem_ListGroupItem, 'list-group-item'));\n// CONCATENATED MODULE: ./src/ListGroup.js\n\n\n\nvar ListGroup_jsxFileName = \"/Users/jason/src/react-bootstrap/src/ListGroup.js\";\n\n\n\n\n\n\n\n\nvar ListGroup_ListGroup =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(ListGroup, _React$Component);\n\n  function ListGroup() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = ListGroup.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        className = _this$props.className,\n        bsPrefix = _this$props.bsPrefix,\n        variant = _this$props.variant,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"className\", \"bsPrefix\", \"variant\"]);\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_AbstractNav, _extends({}, props, {\n      className: classnames_default()(className, bsPrefix, variant && bsPrefix + \"-\" + variant),\n      __source: {\n        fileName: ListGroup_jsxFileName,\n        lineNumber: 40\n      },\n      __self: this\n    }));\n  };\n\n  return ListGroup;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nListGroup_ListGroup.propTypes = {\n  /**\n   * @default 'list-group'\n   */\n  bsPrefix: prop_types_default.a.string.isRequired,\n\n  /**\n   * Adds a variant to the list-group\n   *\n   * @type {('flush')}\n   */\n  variant: prop_types_default.a.oneOf(['flush', null]),\n\n  /**\n   * You can use a custom element type for this component.\n   */\n  as: prop_types_default.a.elementType\n};\nListGroup_ListGroup.defaultProps = {\n  as: 'div',\n  variant: null\n};\nvar DecoratedListGroup = uncontrollable_default()(createBootstrapComponent(ListGroup_ListGroup, 'list-group'), {\n  activeKey: 'onSelect'\n});\nDecoratedListGroup.Item = src_ListGroupItem;\n/* harmony default export */ var src_ListGroup = (DecoratedListGroup);\n// CONCATENATED MODULE: ./src/Media.js\n\n\nvar Media_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Media.js\";\n\n\n\n\n\nvar Media_propTypes = {\n  /**\n   * @default 'media'\n   */\n  bsPrefix: prop_types_default.a.string,\n  as: prop_types_default.a.elementType\n};\nvar Media_defaultProps = {\n  as: 'div'\n};\nvar Media = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"as\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'media');\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n    ref: ref,\n    className: classnames_default()(className, prefix),\n    __source: {\n      fileName: Media_jsxFileName,\n      lineNumber: 25\n    },\n    __self: this\n  }));\n});\nMedia.displayName = 'Media';\nMedia.propTypes = Media_propTypes;\nMedia.defaultProps = Media_defaultProps;\nMedia.Body = createWithBsPrefix('media-body');\n/* harmony default export */ var src_Media = (Media);\n// EXTERNAL MODULE: ./node_modules/dom-helpers/events/index.js\nvar events = __webpack_require__(25);\nvar events_default = /*#__PURE__*/__webpack_require__.n(events);\n\n// EXTERNAL MODULE: ./node_modules/dom-helpers/ownerDocument.js\nvar ownerDocument = __webpack_require__(16);\nvar ownerDocument_default = /*#__PURE__*/__webpack_require__.n(ownerDocument);\n\n// EXTERNAL MODULE: ./node_modules/dom-helpers/util/inDOM.js\nvar inDOM = __webpack_require__(10);\nvar inDOM_default = /*#__PURE__*/__webpack_require__.n(inDOM);\n\n// EXTERNAL MODULE: ./node_modules/dom-helpers/util/scrollbarSize.js\nvar scrollbarSize = __webpack_require__(18);\nvar scrollbarSize_default = /*#__PURE__*/__webpack_require__.n(scrollbarSize);\n\n// EXTERNAL MODULE: ./node_modules/react-overlays/Modal.js\nvar react_overlays_Modal = __webpack_require__(56);\nvar Modal_default = /*#__PURE__*/__webpack_require__.n(react_overlays_Modal);\n\n// CONCATENATED MODULE: ./src/ModalBody.js\n\n/* harmony default export */ var ModalBody = (createWithBsPrefix('modal-body'));\n// CONCATENATED MODULE: ./src/ModalDialog.js\n\n\nvar ModalDialog_jsxFileName = \"/Users/jason/src/react-bootstrap/src/ModalDialog.js\";\n\n\n\n\nvar ModalDialog_propTypes = {\n  /** @default 'modal' */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * Specifies a large or small modal.\n   *\n   * @type ('sm'|'lg')\n   */\n  size: prop_types_default.a.string,\n\n  /**\n   * Specify whether the Component should be vertically centered\n   */\n  centered: prop_types_default.a.bool,\n\n  /**\n   * Allows scrolling the `<Modal.Body>` instead of the entire Modal when overflowing.\n   */\n  scrollable: prop_types_default.a.bool\n};\nvar ModalDialog = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      centered = _ref.centered,\n      size = _ref.size,\n      children = _ref.children,\n      scrollable = _ref.scrollable,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"centered\", \"size\", \"children\", \"scrollable\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'modal');\n  var dialogClass = bsPrefix + \"-dialog\";\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", _extends({}, props, {\n    ref: ref,\n    className: classnames_default()(dialogClass, className, size && bsPrefix + \"-\" + size, centered && dialogClass + \"-centered\", scrollable && dialogClass + \"-scrollable\"),\n    __source: {\n      fileName: ModalDialog_jsxFileName,\n      lineNumber: 38\n    },\n    __self: this\n  }), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", {\n    className: classnames_default()(bsPrefix + \"-content\"),\n    __source: {\n      fileName: ModalDialog_jsxFileName,\n      lineNumber: 49\n    },\n    __self: this\n  }, children));\n});\nModalDialog.displayName = 'ModalDialog';\nModalDialog.propTypes = ModalDialog_propTypes;\n/* harmony default export */ var src_ModalDialog = (ModalDialog);\n// CONCATENATED MODULE: ./src/ModalFooter.js\n\n/* harmony default export */ var ModalFooter = (createWithBsPrefix('modal-footer'));\n// CONCATENATED MODULE: ./src/ModalContext.js\n\nvar ModalContext = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createContext({\n  onHide: function onHide() {}\n});\n/* harmony default export */ var src_ModalContext = (ModalContext);\n// CONCATENATED MODULE: ./src/ModalHeader.js\n\n\nvar ModalHeader_jsxFileName = \"/Users/jason/src/react-bootstrap/src/ModalHeader.js\";\n\n\n\n\n\n\n\nvar ModalHeader_propTypes = {\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * Provides an accessible label for the close\n   * button. It is used for Assistive Technology when the label text is not\n   * readable.\n   */\n  closeLabel: prop_types_default.a.string,\n\n  /**\n   * Specify whether the Component should contain a close button\n   */\n  closeButton: prop_types_default.a.bool,\n\n  /**\n   * A Callback fired when the close button is clicked. If used directly inside\n   * a Modal component, the onHide will automatically be propagated up to the\n   * parent Modal `onHide`.\n   */\n  onHide: prop_types_default.a.func\n};\nvar ModalHeader_defaultProps = {\n  closeLabel: 'Close',\n  closeButton: false\n};\nvar ModalHeader = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      closeLabel = _ref.closeLabel,\n      closeButton = _ref.closeButton,\n      onHide = _ref.onHide,\n      className = _ref.className,\n      children = _ref.children,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"closeLabel\", \"closeButton\", \"onHide\", \"className\", \"children\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'modal-header');\n  var context = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(src_ModalContext);\n  var handleClick = useEventCallback_default()(function () {\n    if (context) context.onHide();\n    if (onHide) onHide();\n  });\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", _extends({\n    ref: ref\n  }, props, {\n    className: classnames_default()(className, bsPrefix),\n    __source: {\n      fileName: ModalHeader_jsxFileName,\n      lineNumber: 61\n    },\n    __self: this\n  }), children, closeButton && external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_CloseButton, {\n    label: closeLabel,\n    onClick: handleClick,\n    __source: {\n      fileName: ModalHeader_jsxFileName,\n      lineNumber: 65\n    },\n    __self: this\n  }));\n});\nModalHeader.displayName = 'ModalHeader';\nModalHeader.propTypes = ModalHeader_propTypes;\nModalHeader.defaultProps = ModalHeader_defaultProps;\n/* harmony default export */ var src_ModalHeader = (ModalHeader);\n// CONCATENATED MODULE: ./src/ModalTitle.js\n\n\nvar ModalTitle_DivStyledAsH4 = divWithClassName('h4');\n/* harmony default export */ var ModalTitle = (createWithBsPrefix('modal-title', {\n  Component: ModalTitle_DivStyledAsH4\n}));\n// EXTERNAL MODULE: ./node_modules/react-overlays/ModalManager.js\nvar ModalManager = __webpack_require__(37);\nvar ModalManager_default = /*#__PURE__*/__webpack_require__.n(ModalManager);\n\n// CONCATENATED MODULE: ./src/utils/BootstrapModalManager.js\n\n\n\n\n\nvar Selector = {\n  FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n  STICKY_CONTENT: '.sticky-top',\n  NAVBAR_TOGGLER: '.navbar-toggler'\n};\n\nvar BootstrapModalManager_BootstrapModalManager =\n/*#__PURE__*/\nfunction (_ModalManager) {\n  _inheritsLoose(BootstrapModalManager, _ModalManager);\n\n  function BootstrapModalManager() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _ModalManager.call.apply(_ModalManager, [this].concat(args)) || this;\n\n    _this.adjustAndStore = function (prop, element, adjust) {\n      var actual = element.style[prop];\n      element.dataset[prop] = actual;\n      style_default()(element, prop, parseFloat(style_default()(element, prop)) + adjust + \"px\");\n    };\n\n    _this.restore = function (prop, element) {\n      var value = element.dataset[prop];\n\n      if (value !== undefined) {\n        delete element.dataset[prop];\n        style_default()(element, prop, value);\n      }\n    };\n\n    return _this;\n  }\n\n  var _proto = BootstrapModalManager.prototype;\n\n  _proto.setContainerStyle = function setContainerStyle(containerState, container) {\n    var _this2 = this;\n\n    _ModalManager.prototype.setContainerStyle.call(this, containerState, container);\n\n    if (!containerState.overflowing) return;\n    var size = scrollbarSize_default()();\n    querySelectorAll_default()(container, Selector.FIXED_CONTENT).forEach(function (el) {\n      return _this2.adjustAndStore('paddingRight', el, size);\n    });\n    querySelectorAll_default()(container, Selector.STICKY_CONTENT).forEach(function (el) {\n      return _this2.adjustAndStore('margingRight', el, -size);\n    });\n    querySelectorAll_default()(container, Selector.NAVBAR_TOGGLER).forEach(function (el) {\n      return _this2.adjustAndStore('margingRight', el, size);\n    });\n  };\n\n  _proto.removeContainerStyle = function removeContainerStyle(containerState, container) {\n    var _this3 = this;\n\n    _ModalManager.prototype.removeContainerStyle.call(this, containerState, container);\n\n    querySelectorAll_default()(container, Selector.FIXED_CONTENT).forEach(function (el) {\n      return _this3.restore('paddingRight', el);\n    });\n    querySelectorAll_default()(container, Selector.STICKY_CONTENT).forEach(function (el) {\n      return _this3.restore('margingRight', el);\n    });\n    querySelectorAll_default()(container, Selector.NAVBAR_TOGGLER).forEach(function (el) {\n      return _this3.restore('margingRight', el);\n    });\n  };\n\n  return BootstrapModalManager;\n}(ModalManager_default.a);\n\n\n// CONCATENATED MODULE: ./src/Modal.js\n\n\n\nvar Modal_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Modal.js\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Modal_propTypes = {\n  /**\n   * @default 'modal'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * Render a large or small modal.\n   *\n   * @type ('sm'|'lg')\n   */\n  size: prop_types_default.a.string,\n\n  /**\n   * vertically center the Dialog in the window\n   */\n  centered: prop_types_default.a.bool,\n\n  /**\n   * Include a backdrop component. Specify 'static' for a backdrop that doesn't\n   * trigger an \"onHide\" when clicked.\n   */\n  backdrop: prop_types_default.a.oneOf(['static', true, false]),\n\n  /**\n   * Add an optional extra class name to .modal-backdrop\n   * It could end up looking like class=\"modal-backdrop foo-modal-backdrop in\".\n   */\n  backdropClassName: prop_types_default.a.string,\n\n  /**\n   * Close the modal when escape key is pressed\n   */\n  keyboard: prop_types_default.a.bool,\n\n  /**\n   * Allows scrolling the `<Modal.Body>` instead of the entire Modal when overflowing.\n   */\n  scrollable: prop_types_default.a.bool,\n\n  /**\n   * Open and close the Modal with a slide and fade animation.\n   */\n  animation: prop_types_default.a.bool,\n\n  /**\n   * A css class to apply to the Modal dialog DOM node.\n   */\n  dialogClassName: prop_types_default.a.string,\n\n  /**\n   * A Component type that provides the modal content Markup. This is a useful\n   * prop when you want to use your own styles and markup to create a custom\n   * modal component.\n   */\n  dialogAs: prop_types_default.a.elementType,\n\n  /**\n   * When `true` The modal will automatically shift focus to itself when it\n   * opens, and replace it to the last focused element when it closes.\n   * Generally this should never be set to false as it makes the Modal less\n   * accessible to assistive technologies, like screen-readers.\n   */\n  autoFocus: prop_types_default.a.bool,\n\n  /**\n   * When `true` The modal will prevent focus from leaving the Modal while\n   * open. Consider leaving the default value here, as it is necessary to make\n   * the Modal work well with assistive technologies, such as screen readers.\n   */\n  enforceFocus: prop_types_default.a.bool,\n\n  /**\n   * When `true` The modal will restore focus to previously focused element once\n   * modal is hidden\n   */\n  restoreFocus: prop_types_default.a.bool,\n\n  /**\n   * When `true` The modal will show itself.\n   */\n  show: prop_types_default.a.bool,\n\n  /**\n   * A callback fired when the Modal is opening.\n   */\n  onShow: prop_types_default.a.func,\n\n  /**\n   * A callback fired when the header closeButton or non-static backdrop is\n   * clicked. Required if either are specified.\n   */\n  onHide: prop_types_default.a.func,\n\n  /**\n   * A callback fired when the escape key, if specified in `keyboard`, is pressed.\n   */\n  onEscapeKeyDown: prop_types_default.a.func,\n\n  /**\n   * Callback fired before the Modal transitions in\n   */\n  onEnter: prop_types_default.a.func,\n\n  /**\n   * Callback fired as the Modal begins to transition in\n   */\n  onEntering: prop_types_default.a.func,\n\n  /**\n   * Callback fired after the Modal finishes transitioning in\n   */\n  onEntered: prop_types_default.a.func,\n\n  /**\n   * Callback fired right before the Modal transitions out\n   */\n  onExit: prop_types_default.a.func,\n\n  /**\n   * Callback fired as the Modal begins to transition out\n   */\n  onExiting: prop_types_default.a.func,\n\n  /**\n   * Callback fired after the Modal finishes transitioning out\n   */\n  onExited: prop_types_default.a.func,\n\n  /**\n   * A ModalManager instance used to track and manage the state of open\n   * Modals. Useful when customizing how modals interact within a container\n   */\n  manager: prop_types_default.a.object.isRequired,\n\n  /**\n   * @private\n   */\n  container: prop_types_default.a.any\n};\nvar Modal_defaultProps = {\n  show: false,\n  backdrop: true,\n  keyboard: true,\n  autoFocus: true,\n  enforceFocus: true,\n  restoreFocus: true,\n  animation: true,\n  dialogAs: src_ModalDialog,\n  manager: new BootstrapModalManager_BootstrapModalManager()\n};\n/* eslint-disable no-use-before-define, react/no-multi-comp */\n\nfunction DialogTransition(props) {\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Fade, _extends({}, props, {\n    __source: {\n      fileName: Modal_jsxFileName,\n      lineNumber: 176\n    },\n    __self: this\n  }));\n}\n\nfunction BackdropTransition(props) {\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Fade, _extends({}, props, {\n    __source: {\n      fileName: Modal_jsxFileName,\n      lineNumber: 180\n    },\n    __self: this\n  }));\n}\n/* eslint-enable no-use-before-define */\n\n\nvar Modal_Modal =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Modal, _React$Component);\n\n  function Modal(_props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, _props, context) || this;\n\n    _this.setModalRef = function (ref) {\n      _this._modal = ref;\n    };\n\n    _this.handleDialogMouseDown = function () {\n      _this._waitingForMouseUp = true;\n    };\n\n    _this.handleMouseUp = function (e) {\n      if (_this._waitingForMouseUp && e.target === _this._modal.dialog) {\n        _this._ignoreBackdropClick = true;\n      }\n\n      _this._waitingForMouseUp = false;\n    };\n\n    _this.handleClick = function (e) {\n      if (_this._ignoreBackdropClick || e.target !== e.currentTarget) {\n        _this._ignoreBackdropClick = false;\n        return;\n      }\n\n      _this.props.onHide();\n    };\n\n    _this.handleEnter = function (node) {\n      var _this$props;\n\n      if (node) {\n        node.style.display = 'block';\n\n        _this.updateDialogStyle(node);\n      }\n\n      for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        args[_key - 1] = arguments[_key];\n      }\n\n      if (_this.props.onEnter) (_this$props = _this.props).onEnter.apply(_this$props, [node].concat(args));\n    };\n\n    _this.handleEntering = function (node) {\n      var _this$props2;\n\n      for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n        args[_key2 - 1] = arguments[_key2];\n      }\n\n      if (_this.props.onEntering) (_this$props2 = _this.props).onEntering.apply(_this$props2, [node].concat(args)); // FIXME: This should work even when animation is disabled.\n\n      events_default.a.on(window, 'resize', _this.handleWindowResize);\n    };\n\n    _this.handleExited = function (node) {\n      var _this$props3;\n\n      if (node) node.style.display = ''; // RHL removes it sometimes\n\n      for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n        args[_key3 - 1] = arguments[_key3];\n      }\n\n      if (_this.props.onExited) (_this$props3 = _this.props).onExited.apply(_this$props3, args); // FIXME: This should work even when animation is disabled.\n\n      events_default.a.off(window, 'resize', _this.handleWindowResize);\n    };\n\n    _this.handleWindowResize = function () {\n      _this.updateDialogStyle(_this._modal.dialog);\n    };\n\n    _this.renderBackdrop = function (props) {\n      var _this$props4 = _this.props,\n          bsPrefix = _this$props4.bsPrefix,\n          backdropClassName = _this$props4.backdropClassName;\n      return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", _extends({}, props, {\n        className: classnames_default()(bsPrefix + \"-backdrop\", backdropClassName),\n        __source: {\n          fileName: Modal_jsxFileName,\n          lineNumber: 282\n        },\n        __self: this\n      }));\n    };\n\n    _this.state = {\n      style: {}\n    };\n    _this.modalContext = {\n      onHide: function onHide() {\n        return _this.props.onHide();\n      }\n    };\n    return _this;\n  }\n\n  var _proto = Modal.prototype;\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    // Clean up the listener if we need to.\n    events_default.a.off(window, 'resize', this.handleWindowResize);\n  };\n\n  _proto.updateDialogStyle = function updateDialogStyle(node) {\n    if (!inDOM_default.a) return;\n    var manager = this.props.manager;\n    var containerIsOverflowing = manager.isContainerOverflowing(this._modal);\n    var modalIsOverflowing = node.scrollHeight > ownerDocument_default()(node).documentElement.clientHeight;\n    this.setState({\n      style: {\n        paddingRight: containerIsOverflowing && !modalIsOverflowing ? scrollbarSize_default()() : undefined,\n        paddingLeft: !containerIsOverflowing && modalIsOverflowing ? scrollbarSize_default()() : undefined\n      }\n    });\n  };\n\n  _proto.render = function render() {\n    var _this$props5 = this.props,\n        bsPrefix = _this$props5.bsPrefix,\n        className = _this$props5.className,\n        style = _this$props5.style,\n        dialogClassName = _this$props5.dialogClassName,\n        children = _this$props5.children,\n        Dialog = _this$props5.dialogAs,\n        show = _this$props5.show,\n        animation = _this$props5.animation,\n        backdrop = _this$props5.backdrop,\n        keyboard = _this$props5.keyboard,\n        manager = _this$props5.manager,\n        onEscapeKeyDown = _this$props5.onEscapeKeyDown,\n        onShow = _this$props5.onShow,\n        onHide = _this$props5.onHide,\n        container = _this$props5.container,\n        autoFocus = _this$props5.autoFocus,\n        enforceFocus = _this$props5.enforceFocus,\n        restoreFocus = _this$props5.restoreFocus,\n        onEntered = _this$props5.onEntered,\n        onExit = _this$props5.onExit,\n        onExiting = _this$props5.onExiting,\n        _ = _this$props5.onExited,\n        _1 = _this$props5.onEntering,\n        _6 = _this$props5.onEnter,\n        _4 = _this$props5.onEntering,\n        _2 = _this$props5.backdropClassName,\n        props = _objectWithoutPropertiesLoose(_this$props5, [\"bsPrefix\", \"className\", \"style\", \"dialogClassName\", \"children\", \"dialogAs\", \"show\", \"animation\", \"backdrop\", \"keyboard\", \"manager\", \"onEscapeKeyDown\", \"onShow\", \"onHide\", \"container\", \"autoFocus\", \"enforceFocus\", \"restoreFocus\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"onEntering\", \"onEnter\", \"onEntering\", \"backdropClassName\"]);\n\n    var clickHandler = backdrop === true ? this.handleClick : null;\n\n    var baseModalStyle = _extends({}, style, this.state.style); // Sets `display` always block when `animation` is false\n\n\n    if (!animation) baseModalStyle.display = 'block';\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_ModalContext.Provider, {\n      value: this.modalContext,\n      __source: {\n        fileName: Modal_jsxFileName,\n        lineNumber: 332\n      },\n      __self: this\n    }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Modal_default.a, _extends({\n      show: show,\n      backdrop: backdrop,\n      container: container,\n      keyboard: keyboard,\n      autoFocus: autoFocus,\n      enforceFocus: enforceFocus,\n      restoreFocus: restoreFocus,\n      onEscapeKeyDown: onEscapeKeyDown,\n      onShow: onShow,\n      onHide: onHide,\n      onEntered: onEntered,\n      onExit: onExit,\n      onExiting: onExiting,\n      manager: manager,\n      ref: this.setModalRef,\n      style: baseModalStyle,\n      className: classnames_default()(className, bsPrefix),\n      containerClassName: bsPrefix + \"-open\",\n      transition: animation ? DialogTransition : undefined,\n      backdropTransition: animation ? BackdropTransition : undefined,\n      renderBackdrop: this.renderBackdrop,\n      onClick: clickHandler,\n      onMouseUp: this.handleMouseUp,\n      onEnter: this.handleEnter,\n      onEntering: this.handleEntering,\n      onExited: this.handleExited\n    }, {\n      __source: {\n        fileName: Modal_jsxFileName,\n        lineNumber: 333\n      },\n      __self: this\n    }), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Dialog, _extends({}, props, {\n      onMouseDown: this.handleDialogMouseDown,\n      className: dialogClassName,\n      __source: {\n        fileName: Modal_jsxFileName,\n        lineNumber: 363\n      },\n      __self: this\n    }), children)));\n  };\n\n  return Modal;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nModal_Modal.propTypes = Modal_propTypes;\nModal_Modal.defaultProps = Modal_defaultProps;\nvar DecoratedModal = createBootstrapComponent(Modal_Modal, 'modal');\nDecoratedModal.Body = ModalBody;\nDecoratedModal.Header = src_ModalHeader;\nDecoratedModal.Title = ModalTitle;\nDecoratedModal.Footer = ModalFooter;\nDecoratedModal.Dialog = src_ModalDialog;\nDecoratedModal.TRANSITION_DURATION = 300;\nDecoratedModal.BACKDROP_TRANSITION_DURATION = 150;\n/* harmony default export */ var src_Modal = (DecoratedModal);\n// EXTERNAL MODULE: ./node_modules/prop-types-extra/lib/all.js\nvar lib_all = __webpack_require__(34);\nvar all_default = /*#__PURE__*/__webpack_require__.n(lib_all);\n\n// CONCATENATED MODULE: ./src/NavItem.js\n\n\nvar NavItem_jsxFileName = \"/Users/jason/src/react-bootstrap/src/NavItem.js\";\n\n\n\n\nvar NavItem_propTypes = {\n  /**\n   * @default 'nav-item'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /** The ARIA role of the component */\n  role: prop_types_default.a.string,\n  as: prop_types_default.a.elementType\n};\nvar NavItem_defaultProps = {\n  as: 'div'\n};\nvar NavItem = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      children = _ref.children,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"children\", \"as\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'nav-item');\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n    ref: ref,\n    className: classnames_default()(className, bsPrefix),\n    __source: {\n      fileName: NavItem_jsxFileName,\n      lineNumber: 27\n    },\n    __self: this\n  }), children);\n});\nNavItem.displayName = 'NavItem';\nNavItem.propTypes = NavItem_propTypes;\nNavItem.defaultProps = NavItem_defaultProps;\n/* harmony default export */ var src_NavItem = (NavItem);\n// CONCATENATED MODULE: ./src/NavLink.js\n\n\nvar NavLink_jsxFileName = \"/Users/jason/src/react-bootstrap/src/NavLink.js\";\n\n\n\n\n\n\nvar NavLink_propTypes = {\n  /**\n   * @default 'nav-link'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * The active state of the NavItem item.\n   */\n  active: prop_types_default.a.bool,\n\n  /**\n   * The disabled state of the NavItem item.\n   */\n  disabled: prop_types_default.a.bool,\n\n  /**\n   * The ARIA role for the `NavLink`, In the context of a 'tablist' parent Nav,\n   * the role defaults to 'tab'\n   * */\n  role: prop_types_default.a.string,\n\n  /** The HTML href attribute for the `NavLink` */\n  href: prop_types_default.a.string,\n\n  /** A callback fired when the `NavLink` is selected.\n   *\n   * ```js\n   * function (eventKey: any, event: SyntheticEvent) {}\n   * ```\n   */\n  onSelect: prop_types_default.a.func,\n\n  /**\n   * Uniquely idenifies the `NavItem` amoungst its siblings,\n   * used to determine and control the active state ofthe parent `Nav`\n   */\n  eventKey: prop_types_default.a.any,\n\n  /** @default 'a' */\n  as: prop_types_default.a.elementType,\n\n  /** @private */\n  innerRef: prop_types_default.a.any\n};\nvar NavLink_defaultProps = {\n  disabled: false,\n  as: src_SafeAnchor\n};\nvar NavLink = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      disabled = _ref.disabled,\n      className = _ref.className,\n      href = _ref.href,\n      eventKey = _ref.eventKey,\n      onSelect = _ref.onSelect,\n      as = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"disabled\", \"className\", \"href\", \"eventKey\", \"onSelect\", \"as\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'nav-link');\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_AbstractNavItem, _extends({}, props, {\n    href: href,\n    ref: ref,\n    eventKey: eventKey,\n    as: as,\n    disabled: disabled,\n    onSelect: onSelect,\n    className: classnames_default()(className, bsPrefix, disabled && 'disabled'),\n    __source: {\n      fileName: NavLink_jsxFileName,\n      lineNumber: 68\n    },\n    __self: this\n  }));\n});\nNavLink.displayName = 'NavLink';\nNavLink.propTypes = NavLink_propTypes;\nNavLink.defaultProps = NavLink_defaultProps;\n/* harmony default export */ var src_NavLink = (NavLink);\n// CONCATENATED MODULE: ./src/Nav.js\n\n\nvar Nav_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Nav.js\";\n\n\n\n\n\n\n\n\n\n\n\nvar Nav_propTypes = {\n  /**\n   * @default 'nav'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /** @private */\n  navbarBsPrefix: prop_types_default.a.string,\n\n  /** @private */\n  cardHeaderBsPrefix: prop_types_default.a.string,\n\n  /**\n   * The visual variant of the nav items.\n   *\n   * @type {('tabs'|'pills')}\n   */\n  variant: prop_types_default.a.string,\n\n  /**\n   * Marks the NavItem with a matching `eventKey` (or `href` if present) as active.\n   *\n   * @type {string}\n   */\n  activeKey: prop_types_default.a.any,\n\n  /**\n   * Have all `NavItem`s to proportionatly fill all available width.\n   */\n  fill: prop_types_default.a.bool,\n\n  /**\n   * Have all `NavItem`s to evenly fill all available width.\n   *\n   * @type {boolean}\n   */\n  justify: all_default()(prop_types_default.a.bool, function (_ref) {\n    var justify = _ref.justify,\n        navbar = _ref.navbar;\n    return justify && navbar ? Error('justify navbar `Nav`s are not supported') : null;\n  }),\n\n  /**\n   * A callback fired when a NavItem is selected.\n   *\n   * ```js\n   * function (\n   *  Any eventKey,\n   *  SyntheticEvent event?\n   * )\n   * ```\n   */\n  onSelect: prop_types_default.a.func,\n\n  /**\n   * ARIA role for the Nav, in the context of a TabContainer, the default will\n   * be set to \"tablist\", but can be overridden by the Nav when set explicitly.\n   *\n   * When the role is \"tablist\", NavLink focus is managed according to\n   * the ARIA authoring practices for tabs:\n   * https://www.w3.org/TR/2013/WD-wai-aria-practices-20130307/#tabpanel\n   */\n  role: prop_types_default.a.string,\n\n  /**\n   * Apply styling an alignment for use in a Navbar. This prop will be set\n   * automatically when the Nav is used inside a Navbar.\n   */\n  navbar: prop_types_default.a.bool,\n  as: prop_types_default.a.elementType,\n\n  /** @private */\n  onKeyDown: prop_types_default.a.func\n};\nvar Nav_defaultProps = {\n  justify: false,\n  fill: false,\n  as: 'div'\n};\nvar Nav = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (uncontrolledProps, ref) {\n  var _classNames;\n\n  var _useUncontrolled = hook_default()(uncontrolledProps, {\n    activeKey: 'onSelect'\n  }),\n      as = _useUncontrolled.as,\n      bsPrefix = _useUncontrolled.bsPrefix,\n      variant = _useUncontrolled.variant,\n      fill = _useUncontrolled.fill,\n      justify = _useUncontrolled.justify,\n      navbar = _useUncontrolled.navbar,\n      className = _useUncontrolled.className,\n      children = _useUncontrolled.children,\n      activeKey = _useUncontrolled.activeKey,\n      props = _objectWithoutPropertiesLoose(_useUncontrolled, [\"as\", \"bsPrefix\", \"variant\", \"fill\", \"justify\", \"navbar\", \"className\", \"children\", \"activeKey\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'nav');\n  var navbarBsPrefix, cardHeaderBsPrefix;\n  var navbarContext = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(NavbarContext);\n  var cardContext = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(CardContext);\n\n  if (navbarContext) {\n    navbarBsPrefix = navbarContext.bsPrefix;\n    navbar = navbar == null ? true : navbar;\n  } else if (cardContext) {\n    cardHeaderBsPrefix = cardContext.cardHeaderBsPrefix;\n  }\n\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_AbstractNav, _extends({\n    as: as,\n    ref: ref,\n    activeKey: activeKey,\n    className: classnames_default()(className, (_classNames = {}, _classNames[bsPrefix] = !navbar, _classNames[navbarBsPrefix + \"-nav\"] = navbar, _classNames[cardHeaderBsPrefix + \"-\" + variant] = !!cardHeaderBsPrefix, _classNames[bsPrefix + \"-\" + variant] = !!variant, _classNames[bsPrefix + \"-fill\"] = fill, _classNames[bsPrefix + \"-justified\"] = justify, _classNames))\n  }, props, {\n    __source: {\n      fileName: Nav_jsxFileName,\n      lineNumber: 123\n    },\n    __self: this\n  }), children);\n});\nNav.displayName = 'Nav';\nNav.propTypes = Nav_propTypes;\nNav.defaultProps = Nav_defaultProps;\nNav.Item = src_NavItem;\nNav.Link = src_NavLink;\nNav._Nav = Nav; // for Testing until enzyme is working with context\n\n/* harmony default export */ var src_Nav = (Nav);\n// CONCATENATED MODULE: ./src/NavbarBrand.js\n\n\nvar NavbarBrand_jsxFileName = \"/Users/jason/src/react-bootstrap/src/NavbarBrand.js\";\n\n\n\n\nvar NavbarBrand_propTypes = {\n  /** @default 'navbar' */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * An href, when provided the Brand will render as an `<a>` element (unless `as` is provided).\n   */\n  href: prop_types_default.a.string,\n\n  /**\n   * Set a custom element for this component.\n   */\n  as: prop_types_default.a.elementType\n};\nvar NavbarBrand = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      as = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"as\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'navbar-brand');\n  var Component = as || (props.href ? 'a' : 'span');\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n    ref: ref,\n    className: classnames_default()(className, bsPrefix),\n    __source: {\n      fileName: NavbarBrand_jsxFileName,\n      lineNumber: 29\n    },\n    __self: this\n  }));\n});\nNavbarBrand.displayName = 'NavbarBrand';\nNavbarBrand.propTypes = NavbarBrand_propTypes;\n/* harmony default export */ var src_NavbarBrand = (NavbarBrand);\n// CONCATENATED MODULE: ./src/NavbarCollapse.js\n\n\nvar NavbarCollapse_jsxFileName = \"/Users/jason/src/react-bootstrap/src/NavbarCollapse.js\";\n\n\n\n\n\nvar NavbarCollapse_propTypes = {\n  /** @default 'navbar-collapse' */\n  bsPrefix: prop_types_default.a.string\n};\nvar NavbarCollapse = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var children = _ref.children,\n      bsPrefix = _ref.bsPrefix,\n      props = _objectWithoutPropertiesLoose(_ref, [\"children\", \"bsPrefix\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'navbar-collapse');\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(NavbarContext.Consumer, {\n    __source: {\n      fileName: NavbarCollapse_jsxFileName,\n      lineNumber: 17\n    },\n    __self: this\n  }, function (context) {\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Collapse, _extends({\n      in: !!(context && context.expanded)\n    }, props, {\n      __source: {\n        fileName: NavbarCollapse_jsxFileName,\n        lineNumber: 19\n      },\n      __self: this\n    }), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", {\n      ref: ref,\n      className: bsPrefix,\n      __source: {\n        fileName: NavbarCollapse_jsxFileName,\n        lineNumber: 20\n      },\n      __self: this\n    }, children));\n  });\n});\nNavbarCollapse.displayName = 'NavbarCollapse';\nNavbarCollapse.propTypes = NavbarCollapse_propTypes;\n/* harmony default export */ var src_NavbarCollapse = (NavbarCollapse);\n// CONCATENATED MODULE: ./src/NavbarToggle.js\n\n\nvar NavbarToggle_jsxFileName = \"/Users/jason/src/react-bootstrap/src/NavbarToggle.js\";\n\n\n\n\n\n\nvar NavbarToggle_propTypes = {\n  /** @default 'navbar-toggler' */\n  bsPrefix: prop_types_default.a.string,\n\n  /** An accessible ARIA label for the toggler button. */\n  label: prop_types_default.a.string,\n\n  /** @private */\n  onClick: prop_types_default.a.func,\n\n  /**\n   * The toggle content. When empty, the default toggle will be rendered.\n   */\n  children: prop_types_default.a.node,\n  as: prop_types_default.a.elementType\n};\nvar NavbarToggle_defaultProps = {\n  label: 'Toggle navigation',\n  as: 'button'\n};\nvar NavbarToggle = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      children = _ref.children,\n      label = _ref.label,\n      Component = _ref.as,\n      onClick = _ref.onClick,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"children\", \"label\", \"as\", \"onClick\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'navbar-toggler');\n\n  var _ref2 = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(NavbarContext) || {},\n      onToggle = _ref2.onToggle,\n      expanded = _ref2.expanded;\n\n  var handleClick = useEventCallback_default()(function (e) {\n    if (onClick) onClick(e);\n    if (onToggle) onToggle();\n  });\n\n  if (Component === 'button') {\n    props.type = 'button';\n  }\n\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n    ref: ref,\n    onClick: handleClick,\n    \"aria-label\": label,\n    className: classnames_default()(className, bsPrefix, !!expanded && 'collapsed'),\n    __source: {\n      fileName: NavbarToggle_jsxFileName,\n      lineNumber: 51\n    },\n    __self: this\n  }), children || external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"span\", {\n    className: bsPrefix + \"-icon\",\n    __source: {\n      fileName: NavbarToggle_jsxFileName,\n      lineNumber: 58\n    },\n    __self: this\n  }));\n});\nNavbarToggle.displayName = 'NavbarToggle';\nNavbarToggle.propTypes = NavbarToggle_propTypes;\nNavbarToggle.defaultProps = NavbarToggle_defaultProps;\n/* harmony default export */ var src_NavbarToggle = (NavbarToggle);\n// CONCATENATED MODULE: ./src/Navbar.js\n\n\n\nvar Navbar_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Navbar.js\";\n\n\n\n\n\n\n\n\n\n\n\nvar Navbar_propTypes = {\n  /** @default 'navbar' */\n  bsPrefix: prop_types_default.a.string.isRequired,\n\n  /**\n   * The general visual variant a the Navbar.\n   * Use in combination with the `bg` prop, `background-color` utilities,\n   * or your own background styles.\n   *\n   * @type {('light'|'dark')}\n   */\n  variant: prop_types_default.a.string,\n\n  /**\n   * The breakpoint, below which, the Navbar will collapse.\n   * When `true` the Navbar will always be expanded regardless of screen size.\n   */\n  expand: prop_types_default.a.oneOf([true, 'sm', 'md', 'lg', 'xl']).isRequired,\n\n  /**\n   * A convenience prop for adding `bg-*` utility classes since they are so commonly used here.\n   * `light` and `dark` are common choices but any `bg-*` class is supported, including any custom ones you might define.\n   *\n   * Pairs nicely with the `variant` prop.\n   */\n  bg: prop_types_default.a.string,\n\n  /**\n   * Create a fixed navbar along the top or bottom of the screen, that scrolls with the\n   * page. A convenience prop for the `fixed-*` positioning classes.\n   */\n  fixed: prop_types_default.a.oneOf(['top', 'bottom']),\n\n  /**\n   * Position the navbar at the top or bottom of the viewport,\n   * but only after scrolling past it. . A convenience prop for the `sticky-*` positioning classes.\n   *\n   *  __Not supported in <= IE11 and other older browsers without a polyfill__\n   */\n  sticky: prop_types_default.a.oneOf(['top', 'bottom']),\n\n  /**\n   * Set a custom element for this component.\n   */\n  as: prop_types_default.a.elementType,\n\n  /**\n   * A callback fired when the `<Navbar>` body collapses or expands. Fired when\n   * a `<Navbar.Toggle>` is clicked and called with the new `expanded`\n   * boolean value.\n   *\n   * @controllable expanded\n   */\n  onToggle: prop_types_default.a.func,\n\n  /**\n   * A callback fired when a descendant of a child `<Nav>` is selected. Should\n   * be used to execute complex closing or other miscellaneous actions desired\n   * after selecting a descendant of `<Nav>`. Does nothing if no `<Nav>` or `<Nav>`\n   * descendants exist. The callback is called with an eventKey, which is a\n   * prop from the selected `<Nav>` descendant, and an event.\n   *\n   * ```js\n   * function (\n   *  eventKey: mixed,\n   *  event?: SyntheticEvent\n   * )\n   * ```\n   *\n   * For basic closing behavior after all `<Nav>` descendant onSelect events in\n   * mobile viewports, try using collapseOnSelect.\n   *\n   * Note: If you are manually closing the navbar using this `OnSelect` prop,\n   * ensure that you are setting `expanded` to false and not *toggling* between\n   * true and false.\n   */\n  onSelect: prop_types_default.a.func,\n\n  /**\n   * Toggles `expanded` to `false` after the onSelect event of a descendant of a\n   * child `<Nav>` fires. Does nothing if no `<Nav>` or `<Nav>` descendants exist.\n   *\n   * Manually controlling `expanded` via the onSelect callback is recommended instead,\n   * for more complex operations that need to be executed after\n   * the `select` event of `<Nav>` descendants.\n   */\n  collapseOnSelect: prop_types_default.a.bool,\n\n  /**\n   * Controls the visiblity of the navbar body\n   *\n   * @controllable onToggle\n   */\n  expanded: prop_types_default.a.bool,\n\n  /**\n   * The ARIA role for the navbar, will default to 'navigation' for\n   * Navbars whose `as` is something other than `<nav>`.\n   *\n   * @default 'navigation'\n   */\n  role: prop_types_default.a.string\n};\nvar Navbar_defaultProps = {\n  as: 'nav',\n  expand: true,\n  variant: 'light',\n  collapseOnSelect: false\n};\n\nvar Navbar_Navbar =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Navbar, _React$Component);\n\n  function Navbar() {\n    var _this;\n\n    for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n      _args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(_args)) || this;\n\n    _this.handleCollapse = function () {\n      var _this$props = _this.props,\n          onToggle = _this$props.onToggle,\n          expanded = _this$props.expanded,\n          collapseOnSelect = _this$props.collapseOnSelect,\n          onSelect = _this$props.onSelect;\n      if (onSelect) onSelect.apply(void 0, arguments);\n\n      if (collapseOnSelect && expanded) {\n        onToggle(false);\n      }\n    };\n\n    _this.handleToggle = function () {\n      var _this$props2 = _this.props,\n          onToggle = _this$props2.onToggle,\n          expanded = _this$props2.expanded;\n      onToggle(!expanded);\n    };\n\n    _this.state = {\n      navbarContext: {\n        onToggle: _this.handleToggle\n      }\n    };\n    return _this;\n  }\n\n  Navbar.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n    var bsPrefix = _ref.bsPrefix,\n        expanded = _ref.expanded;\n    return {\n      navbarContext: _extends({}, prevState.navbarContext, {\n        bsPrefix: bsPrefix,\n        expanded: expanded\n      })\n    };\n  };\n\n  var _proto = Navbar.prototype;\n\n  _proto.render = function render() {\n    var _this$props3 = this.props,\n        bsPrefix = _this$props3.bsPrefix,\n        expand = _this$props3.expand,\n        variant = _this$props3.variant,\n        bg = _this$props3.bg,\n        fixed = _this$props3.fixed,\n        sticky = _this$props3.sticky,\n        className = _this$props3.className,\n        children = _this$props3.children,\n        Component = _this$props3.as,\n        _1 = _this$props3.expanded,\n        _2 = _this$props3.onToggle,\n        _3 = _this$props3.onSelect,\n        _4 = _this$props3.collapseOnSelect,\n        props = _objectWithoutPropertiesLoose(_this$props3, [\"bsPrefix\", \"expand\", \"variant\", \"bg\", \"fixed\", \"sticky\", \"className\", \"children\", \"as\", \"expanded\", \"onToggle\", \"onSelect\", \"collapseOnSelect\"]); // will result in some false positives but that seems better\n    // than false negatives. strict `undefined` check allows explicit\n    // \"nulling\" of the role if the user really doesn't want one\n\n\n    if (props.role === undefined && Component !== 'nav') {\n      props.role = 'navigation';\n    }\n\n    var expandClass = bsPrefix + \"-expand\";\n    if (typeof expand === 'string') expandClass = expandClass + \"-\" + expand;\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(NavbarContext.Provider, {\n      value: this.state.navbarContext,\n      __source: {\n        fileName: Navbar_jsxFileName,\n        lineNumber: 190\n      },\n      __self: this\n    }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_SelectableContext.Provider, {\n      value: this.handleCollapse,\n      __source: {\n        fileName: Navbar_jsxFileName,\n        lineNumber: 191\n      },\n      __self: this\n    }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n      className: classnames_default()(className, bsPrefix, expand && expandClass, variant && bsPrefix + \"-\" + variant, bg && \"bg-\" + bg, sticky && \"sticky-\" + sticky, fixed && \"fixed-\" + fixed),\n      __source: {\n        fileName: Navbar_jsxFileName,\n        lineNumber: 192\n      },\n      __self: this\n    }), children)));\n  };\n\n  return Navbar;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nNavbar_Navbar.propTypes = Navbar_propTypes;\nNavbar_Navbar.defaultProps = Navbar_defaultProps;\nvar DecoratedNavbar = createBootstrapComponent(uncontrollable_default()(Navbar_Navbar, {\n  expanded: 'onToggle'\n}), 'navbar');\nDecoratedNavbar.Brand = src_NavbarBrand;\nDecoratedNavbar.Toggle = src_NavbarToggle;\nDecoratedNavbar.Collapse = src_NavbarCollapse;\nDecoratedNavbar.Text = createWithBsPrefix('navbar-text', {\n  Component: 'span'\n});\n/* harmony default export */ var src_Navbar = (DecoratedNavbar);\n// CONCATENATED MODULE: ./src/NavDropdown.js\n\n\n\nvar NavDropdown_jsxFileName = \"/Users/jason/src/react-bootstrap/src/NavDropdown.js\";\n\n\n\n\n\nvar NavDropdown_propTypes = {\n  /**\n   * An html id attribute for the Toggle button, necessary for assistive technologies, such as screen readers.\n   * @type {string|number}\n   * @required\n   */\n  id: prop_types_default.a.any,\n\n  /** An `onClick` handler passed to the Toggle component */\n  onClick: prop_types_default.a.func,\n\n  /** The content of the non-toggle Button.  */\n  title: prop_types_default.a.node.isRequired,\n\n  /** Disables the toggle NavLink  */\n  disabled: prop_types_default.a.bool,\n\n  /** Style the toggle NavLink as active  */\n  active: prop_types_default.a.bool,\n\n  /** An ARIA accessible role applied to the Menu component. When set to 'menu', The dropdown */\n  menuRole: prop_types_default.a.string,\n\n  /**\n   *  Which event when fired outside the component will cause it to be closed.\n   *\n   * _see [DropdownMenu](#menu-props) for more details_\n   */\n  rootCloseEvent: prop_types_default.a.string,\n\n  /** @ignore */\n  bsPrefix: prop_types_default.a.string\n};\n\nvar NavDropdown_NavDropdown =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(NavDropdown, _React$Component);\n\n  function NavDropdown() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = NavDropdown.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        id = _this$props.id,\n        title = _this$props.title,\n        children = _this$props.children,\n        bsPrefix = _this$props.bsPrefix,\n        rootCloseEvent = _this$props.rootCloseEvent,\n        menuRole = _this$props.menuRole,\n        disabled = _this$props.disabled,\n        active = _this$props.active,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"id\", \"title\", \"children\", \"bsPrefix\", \"rootCloseEvent\", \"menuRole\", \"disabled\", \"active\"]);\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Dropdown, _extends({}, props, {\n      as: src_NavItem,\n      __source: {\n        fileName: NavDropdown_jsxFileName,\n        lineNumber: 57\n      },\n      __self: this\n    }), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Dropdown.Toggle, {\n      id: id,\n      eventKey: null,\n      active: active,\n      disabled: disabled,\n      childBsPrefix: bsPrefix,\n      as: src_NavLink,\n      __source: {\n        fileName: NavDropdown_jsxFileName,\n        lineNumber: 58\n      },\n      __self: this\n    }, title), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Dropdown.Menu, {\n      role: menuRole,\n      rootCloseEvent: rootCloseEvent,\n      __source: {\n        fileName: NavDropdown_jsxFileName,\n        lineNumber: 69\n      },\n      __self: this\n    }, children));\n  };\n\n  return NavDropdown;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nNavDropdown_NavDropdown.propTypes = NavDropdown_propTypes;\nNavDropdown_NavDropdown.Item = src_Dropdown.Item;\nNavDropdown_NavDropdown.Divider = src_Dropdown.Divider;\nNavDropdown_NavDropdown.Header = src_Dropdown.Header;\n/* harmony default export */ var src_NavDropdown = (NavDropdown_NavDropdown);\n// EXTERNAL MODULE: ./node_modules/react-overlays/Overlay.js\nvar Overlay = __webpack_require__(57);\nvar Overlay_default = /*#__PURE__*/__webpack_require__.n(Overlay);\n\n// CONCATENATED MODULE: ./src/Overlay.js\n\n\nvar Overlay_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Overlay.js\";\n\n\n\n\n\n\n\nvar Overlay_propTypes = {\n  /**\n   * A component instance, DOM node, or function that returns either.\n   * The `container` element will have the Overlay appended to it via a React portal.\n   */\n  container: prop_types_default.a.oneOfType([lib[\"componentOrElement\"], prop_types_default.a.func]),\n\n  /**\n   * A component instance, DOM node, or function that returns either.\n   * The overlay will be positioned in relation to the `target`\n   */\n  target: prop_types_default.a.oneOfType([lib[\"componentOrElement\"], prop_types_default.a.func]),\n\n  /**\n   * Set the visibility of the Overlay\n   */\n  show: prop_types_default.a.bool,\n\n  /**\n   * A set of popper options and props passed directly to react-popper's Popper component.\n   */\n  popperConfig: prop_types_default.a.object,\n\n  /**\n   * Specify whether the overlay should trigger onHide when the user clicks outside the overlay\n   */\n  rootClose: prop_types_default.a.bool,\n\n  /**\n   * Specify event for triggering a \"root close\" toggle.\n   */\n  rootCloseEvent: prop_types_default.a.oneOf(['click', 'mousedown']),\n\n  /**\n   * A callback invoked by the overlay when it wishes to be hidden. Required if\n   * `rootClose` is specified.\n   */\n  onHide: prop_types_default.a.func,\n\n  /**\n   * Animate the entering and exiting of the Ovelay. `true` will use the `<Fade>` transition,\n   * or a custom react-transition-group `<Transition>` component can be provided.\n   */\n  transition: prop_types_default.a.oneOfType([prop_types_default.a.bool, lib[\"elementType\"]]),\n\n  /**\n   * Callback fired before the Overlay transitions in\n   */\n  onEnter: prop_types_default.a.func,\n\n  /**\n   * Callback fired as the Overlay begins to transition in\n   */\n  onEntering: prop_types_default.a.func,\n\n  /**\n   * Callback fired after the Overlay finishes transitioning in\n   */\n  onEntered: prop_types_default.a.func,\n\n  /**\n   * Callback fired right before the Overlay transitions out\n   */\n  onExit: prop_types_default.a.func,\n\n  /**\n   * Callback fired as the Overlay begins to transition out\n   */\n  onExiting: prop_types_default.a.func,\n\n  /**\n   * Callback fired after the Overlay finishes transitioning out\n   */\n  onExited: prop_types_default.a.func,\n\n  /**\n   * The placement of the OVerlay in relation to it's `target`.\n   */\n  placement: prop_types_default.a.oneOf(['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'])\n};\nvar Overlay_defaultProps = {\n  transition: src_Fade,\n  rootClose: false,\n  show: false,\n  placement: 'top'\n};\n\nfunction wrapRefs(props, arrowProps) {\n  var ref = props.ref;\n  var aRef = arrowProps.ref;\n\n  props.ref = ref.__wrapped || (ref.__wrapped = function (r) {\n    return ref(Object(external_root_ReactDOM_commonjs2_react_dom_commonjs_react_dom_amd_react_dom_[\"findDOMNode\"])(r));\n  });\n\n  arrowProps.ref = aRef.__wrapped || (aRef.__wrapped = function (r) {\n    return aRef(Object(external_root_ReactDOM_commonjs2_react_dom_commonjs_react_dom_amd_react_dom_[\"findDOMNode\"])(r));\n  });\n}\n\nfunction Overlay_Overlay(_ref) {\n  var overlay = _ref.children,\n      transition = _ref.transition,\n      outerProps = _objectWithoutPropertiesLoose(_ref, [\"children\", \"transition\"]);\n\n  transition = transition === true ? src_Fade : transition || null;\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Overlay_default.a, _extends({}, outerProps, {\n    transition: transition,\n    __source: {\n      fileName: Overlay_jsxFileName,\n      lineNumber: 127\n    },\n    __self: this\n  }), function (_ref2) {\n    var overlayProps = _ref2.props,\n        arrowProps = _ref2.arrowProps,\n        show = _ref2.show,\n        props = _objectWithoutPropertiesLoose(_ref2, [\"props\", \"arrowProps\", \"show\"]);\n\n    wrapRefs(overlayProps, arrowProps);\n    if (typeof overlay === 'function') return overlay(_extends({}, props, overlayProps, {\n      show: show,\n      arrowProps: arrowProps\n    }));\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.cloneElement(overlay, _extends({}, props, overlayProps, {\n      arrowProps: arrowProps,\n      className: classnames_default()(overlay.props.className, !transition && show && 'show'),\n      style: _extends({}, overlay.props.style, overlayProps.style)\n    }));\n  });\n}\n\nOverlay_Overlay.propTypes = Overlay_propTypes;\nOverlay_Overlay.defaultProps = Overlay_defaultProps;\n/* harmony default export */ var src_Overlay = (Overlay_Overlay);\n// EXTERNAL MODULE: ./node_modules/dom-helpers/query/contains.js\nvar contains = __webpack_require__(22);\nvar contains_default = /*#__PURE__*/__webpack_require__.n(contains);\n\n// CONCATENATED MODULE: ./src/OverlayTrigger.js\n\n\n\nvar OverlayTrigger_jsxFileName = \"/Users/jason/src/react-bootstrap/src/OverlayTrigger.js\";\n\n\n\n\n\n\n\nvar OverlayTrigger_RefHolder =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(RefHolder, _React$Component);\n\n  function RefHolder() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = RefHolder.prototype;\n\n  _proto.render = function render() {\n    return this.props.children;\n  };\n\n  return RefHolder;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nvar normalizeDelay = function normalizeDelay(delay) {\n  return delay && typeof delay === 'object' ? delay : {\n    show: delay,\n    hide: delay\n  };\n};\n\nvar triggerType = prop_types_default.a.oneOf(['click', 'hover', 'focus']);\nvar OverlayTrigger_propTypes = {\n  children: prop_types_default.a.element.isRequired,\n\n  /**\n   * Specify which action or actions trigger Overlay visibility\n   *\n   * @type {'hover' | 'click' |'focus' | Array<'hover' | 'click' |'focus'>}\n   */\n  trigger: prop_types_default.a.oneOfType([triggerType, prop_types_default.a.arrayOf(triggerType)]),\n\n  /**\n   * A millisecond delay amount to show and hide the Overlay once triggered\n   */\n  delay: prop_types_default.a.oneOfType([prop_types_default.a.number, prop_types_default.a.shape({\n    show: prop_types_default.a.number,\n    hide: prop_types_default.a.number\n  })]),\n\n  /**\n   * The initial visibility state of the Overlay. For more nuanced visibility\n   * control, consider using the Overlay component directly.\n   */\n  defaultShow: prop_types_default.a.bool,\n\n  /**\n   * An element or text to overlay next to the target.\n   */\n  overlay: prop_types_default.a.oneOfType([prop_types_default.a.func, prop_types_default.a.element.isRequired]),\n\n  /**\n   * A Popper.js config object passed to the the underlying popper instance.\n   */\n  popperConfig: prop_types_default.a.object,\n  // Overridden props from `<Overlay>`.\n\n  /**\n   * @private\n   */\n  target: prop_types_default.a.oneOf([null]),\n\n  /**\n   * @private\n   */\n  onHide: prop_types_default.a.oneOf([null]),\n\n  /**\n   * @private\n   */\n  show: prop_types_default.a.oneOf([null])\n};\nvar OverlayTrigger_defaultProps = {\n  defaultOverlayShown: false,\n  trigger: ['hover', 'focus']\n}; // eslint-disable-next-line react/no-multi-comp\n\nvar OverlayTrigger_OverlayTrigger =\n/*#__PURE__*/\nfunction (_React$Component2) {\n  _inheritsLoose(OverlayTrigger, _React$Component2);\n\n  function OverlayTrigger(props, context) {\n    var _this;\n\n    _this = _React$Component2.call(this, props, context) || this;\n\n    _this.getTarget = function () {\n      return external_root_ReactDOM_commonjs2_react_dom_commonjs_react_dom_amd_react_dom_default.a.findDOMNode(_this.trigger.current);\n    };\n\n    _this.handleShow = function () {\n      clearTimeout(_this._timeout);\n      _this._hoverState = 'show';\n      var delay = normalizeDelay(_this.props.delay);\n\n      if (!delay.show) {\n        _this.show();\n\n        return;\n      }\n\n      _this._timeout = setTimeout(function () {\n        if (_this._hoverState === 'show') _this.show();\n      }, delay.show);\n    };\n\n    _this.handleHide = function () {\n      clearTimeout(_this._timeout);\n      _this._hoverState = 'hide';\n      var delay = normalizeDelay(_this.props.delay);\n\n      if (!delay.hide) {\n        _this.hide();\n\n        return;\n      }\n\n      _this._timeout = setTimeout(function () {\n        if (_this._hoverState === 'hide') _this.hide();\n      }, delay.hide);\n    };\n\n    _this.handleFocus = function (e) {\n      var _this$getChildProps = _this.getChildProps(),\n          onFocus = _this$getChildProps.onFocus;\n\n      _this.handleShow(e);\n\n      if (onFocus) onFocus(e);\n    };\n\n    _this.handleBlur = function (e) {\n      var _this$getChildProps2 = _this.getChildProps(),\n          onBlur = _this$getChildProps2.onBlur;\n\n      _this.handleHide(e);\n\n      if (onBlur) onBlur(e);\n    };\n\n    _this.handleClick = function (e) {\n      var _this$getChildProps3 = _this.getChildProps(),\n          onClick = _this$getChildProps3.onClick;\n\n      if (_this.state.show) _this.hide();else _this.show();\n      if (onClick) onClick(e);\n    };\n\n    _this.handleMouseOver = function (e) {\n      _this.handleMouseOverOut(_this.handleShow, e, 'fromElement');\n    };\n\n    _this.handleMouseOut = function (e) {\n      return _this.handleMouseOverOut(_this.handleHide, e, 'toElement');\n    };\n\n    _this.trigger = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createRef();\n    _this.state = {\n      show: !!props.defaultShow\n    }; // We add aria-describedby in the case where the overlay is a role=\"tooltip\"\n    // for other cases describedby isn't appropriate (e.g. a popover with inputs) so we don't add it.\n\n    _this.ariaModifier = {\n      enabled: true,\n      order: 900,\n      fn: function fn(data) {\n        var popper = data.instance.popper;\n\n        var target = _this.getTarget();\n\n        if (!_this.state.show || !target) return data;\n        var role = popper.getAttribute('role') || '';\n\n        if (popper.id && role.toLowerCase() === 'tooltip') {\n          target.setAttribute('aria-describedby', popper.id);\n        }\n\n        return data;\n      }\n    };\n    return _this;\n  }\n\n  var _proto2 = OverlayTrigger.prototype;\n\n  _proto2.componentWillUnmount = function componentWillUnmount() {\n    clearTimeout(this._timeout);\n  };\n\n  _proto2.getChildProps = function getChildProps() {\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Children.only(this.props.children).props;\n  };\n\n  // Simple implementation of mouseEnter and mouseLeave.\n  // React's built version is broken: https://github.com/facebook/react/issues/4251\n  // for cases when the trigger is disabled and mouseOut/Over can cause flicker\n  // moving from one child element to another.\n  _proto2.handleMouseOverOut = function handleMouseOverOut(handler, e, relatedNative) {\n    var target = e.currentTarget;\n    var related = e.relatedTarget || e.nativeEvent[relatedNative];\n\n    if ((!related || related !== target) && !contains_default()(target, related)) {\n      handler(e);\n    }\n  };\n\n  _proto2.hide = function hide() {\n    this.setState({\n      show: false\n    });\n  };\n\n  _proto2.show = function show() {\n    this.setState({\n      show: true\n    });\n  };\n\n  _proto2.render = function render() {\n    var _this$props = this.props,\n        trigger = _this$props.trigger,\n        overlay = _this$props.overlay,\n        children = _this$props.children,\n        _this$props$popperCon = _this$props.popperConfig,\n        popperConfig = _this$props$popperCon === void 0 ? {} : _this$props$popperCon,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"trigger\", \"overlay\", \"children\", \"popperConfig\"]);\n\n    delete props.delay;\n    delete props.defaultShow;\n    var child = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Children.only(children);\n    var triggerProps = {};\n    var triggers = trigger == null ? [] : [].concat(trigger);\n\n    if (triggers.indexOf('click') !== -1) {\n      triggerProps.onClick = this.handleClick;\n    }\n\n    if (triggers.indexOf('focus') !== -1) {\n      triggerProps.onFocus = this.handleShow;\n      triggerProps.onBlur = this.handleHide;\n    }\n\n    if (triggers.indexOf('hover') !== -1) {\n       false ? undefined : void 0;\n      triggerProps.onMouseOver = this.handleMouseOver;\n      triggerProps.onMouseOut = this.handleMouseOut;\n    }\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Fragment, null, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(OverlayTrigger_RefHolder, {\n      ref: this.trigger,\n      __source: {\n        fileName: OverlayTrigger_jsxFileName,\n        lineNumber: 240\n      },\n      __self: this\n    }, Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"cloneElement\"])(child, triggerProps)), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Overlay, _extends({}, props, {\n      popperConfig: _extends({}, popperConfig, {\n        modifiers: _extends({}, popperConfig.modifiers, {\n          ariaModifier: this.ariaModifier\n        })\n      }),\n      show: this.state.show,\n      onHide: this.handleHide,\n      target: this.getTarget,\n      __source: {\n        fileName: OverlayTrigger_jsxFileName,\n        lineNumber: 243\n      },\n      __self: this\n    }), overlay));\n  };\n\n  return OverlayTrigger;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nOverlayTrigger_OverlayTrigger.propTypes = OverlayTrigger_propTypes;\nOverlayTrigger_OverlayTrigger.defaultProps = OverlayTrigger_defaultProps;\n/* harmony default export */ var src_OverlayTrigger = (OverlayTrigger_OverlayTrigger);\n// CONCATENATED MODULE: ./src/PageItem.js\n\n\n\nvar PageItem_jsxFileName = \"/Users/jason/src/react-bootstrap/src/PageItem.js\";\n\n/* eslint-disable react/no-multi-comp */\n\n\n\n\nvar PageItem_propTypes = {\n  /** Disables the PageItem */\n  disabled: prop_types_default.a.bool,\n\n  /** Styles PageItem as active, and renders a `<span>` instead of an `<a>`. */\n  active: prop_types_default.a.bool,\n\n  /** An accessible label indicating the active state.. */\n  activeLabel: prop_types_default.a.string\n};\nvar PageItem_defaultProps = {\n  active: false,\n  disabled: false,\n  activeLabel: '(current)'\n};\nfunction PageItem(_ref) {\n  var active = _ref.active,\n      disabled = _ref.disabled,\n      className = _ref.className,\n      style = _ref.style,\n      activeLabel = _ref.activeLabel,\n      children = _ref.children,\n      props = _objectWithoutPropertiesLoose(_ref, [\"active\", \"disabled\", \"className\", \"style\", \"activeLabel\", \"children\"]);\n\n  var Component = active || disabled ? 'span' : src_SafeAnchor;\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"li\", {\n    style: style,\n    className: classnames_default()(className, 'page-item', {\n      active: active,\n      disabled: disabled\n    }),\n    __source: {\n      fileName: PageItem_jsxFileName,\n      lineNumber: 36\n    },\n    __self: this\n  }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({\n    className: \"page-link\",\n    disabled: disabled\n  }, props, {\n    __source: {\n      fileName: PageItem_jsxFileName,\n      lineNumber: 40\n    },\n    __self: this\n  }), children, active && activeLabel && external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"span\", {\n    className: \"sr-only\",\n    __source: {\n      fileName: PageItem_jsxFileName,\n      lineNumber: 43\n    },\n    __self: this\n  }, activeLabel)));\n}\nPageItem.propTypes = PageItem_propTypes;\nPageItem.defaultProps = PageItem_defaultProps;\n\nfunction createButton(name, defaultValue, label) {\n  var _class, _temp;\n\n  if (label === void 0) {\n    label = name;\n  }\n\n  return _temp = _class =\n  /*#__PURE__*/\n  function (_React$Component) {\n    _inheritsLoose(_class, _React$Component);\n\n    function _class() {\n      return _React$Component.apply(this, arguments) || this;\n    }\n\n    var _proto = _class.prototype;\n\n    _proto.render = function render() {\n      var _this$props = this.props,\n          children = _this$props.children,\n          props = _objectWithoutPropertiesLoose(_this$props, [\"children\"]);\n\n      delete props.active;\n      return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(PageItem, _extends({}, props, {\n        __source: {\n          fileName: PageItem_jsxFileName,\n          lineNumber: 61\n        },\n        __self: this\n      }), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"span\", {\n        \"aria-hidden\": \"true\",\n        __source: {\n          fileName: PageItem_jsxFileName,\n          lineNumber: 62\n        },\n        __self: this\n      }, children || defaultValue), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"span\", {\n        className: \"sr-only\",\n        __source: {\n          fileName: PageItem_jsxFileName,\n          lineNumber: 63\n        },\n        __self: this\n      }, label));\n    };\n\n    return _class;\n  }(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component), _class.displayName = name, _temp;\n}\n\nvar First = createButton('First', \"\\xAB\");\nvar Prev = createButton('Prev', \"\\u2039\", 'Previous');\nvar Ellipsis = createButton('Ellipsis', \"\\u2026\", 'More');\nvar Next = createButton('Next', \"\\u203A\");\nvar Last = createButton('Last', \"\\xBB\");\n// CONCATENATED MODULE: ./src/Pagination.js\n\n\n\nvar Pagination_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Pagination.js\";\n\n\n\n\n\n/**\n * @property {PageItem} Item\n * @property {PageItem} First\n * @property {PageItem} Prev\n * @property {PageItem} Ellipsis\n * @property {PageItem} Next\n * @property {PageItem} Last\n */\n\nvar Pagination_Pagination =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Pagination, _React$Component);\n\n  function Pagination() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = Pagination.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        bsPrefix = _this$props.bsPrefix,\n        className = _this$props.className,\n        children = _this$props.children,\n        size = _this$props.size,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"bsPrefix\", \"className\", \"children\", \"size\"]);\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"ul\", _extends({}, props, {\n      className: classnames_default()(className, bsPrefix, size && bsPrefix + \"-\" + size),\n      __source: {\n        fileName: Pagination_jsxFileName,\n        lineNumber: 33\n      },\n      __self: this\n    }), children);\n  };\n\n  return Pagination;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nPagination_Pagination.propTypes = {\n  /** @default 'pagination' */\n  bsPrefix: prop_types_default.a.string.isRequired,\n\n  /**\n   * Set's the size of all PageItems.\n   *\n   * @type {('sm'|'lg')}\n   */\n  size: prop_types_default.a.string\n};\nvar DecoratedPagination = createBootstrapComponent(Pagination_Pagination, 'pagination');\nDecoratedPagination.First = First;\nDecoratedPagination.Prev = Prev;\nDecoratedPagination.Ellipsis = Ellipsis;\nDecoratedPagination.Item = PageItem;\nDecoratedPagination.Next = Next;\nDecoratedPagination.Last = Last;\n/* harmony default export */ var src_Pagination = (DecoratedPagination);\n// CONCATENATED MODULE: ./src/Popover.js\n\n\nvar Popover_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Popover.js\";\n\n\n\n\n\nvar Popover_propTypes = {\n  /**\n   * @default 'popover'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * An html id attribute, necessary for accessibility\n   * @type {string|number}\n   * @required\n   */\n  id: isRequiredForA11y_default()(prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.number])),\n\n  /**\n   * Sets the direction the Popover is positioned towards.\n   *\n   * > This is generally provided by the `Overlay` component positioning the popover\n   */\n  placement: prop_types_default.a.oneOf(['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start']),\n\n  /**\n   * An Overlay injected set of props for positioning the popover arrow.\n   *\n   * > This is generally provided by the `Overlay` component positioning the popover\n   */\n  arrowProps: prop_types_default.a.shape({\n    ref: prop_types_default.a.any,\n    style: prop_types_default.a.object\n  }),\n\n  /** @private */\n  innerRef: prop_types_default.a.any,\n\n  /** @private */\n  scheduleUpdate: prop_types_default.a.func,\n\n  /** @private */\n  outOfBoundaries: prop_types_default.a.bool,\n\n  /**\n   * Title content\n   */\n  title: prop_types_default.a.node\n};\nvar Popover_defaultProps = {\n  placement: 'right'\n};\n\nfunction Popover(_ref) {\n  var bsPrefix = _ref.bsPrefix,\n      innerRef = _ref.innerRef,\n      placement = _ref.placement,\n      className = _ref.className,\n      style = _ref.style,\n      title = _ref.title,\n      children = _ref.children,\n      arrowProps = _ref.arrowProps,\n      _ = _ref.scheduleUpdate,\n      _1 = _ref.outOfBoundaries,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"innerRef\", \"placement\", \"className\", \"style\", \"title\", \"children\", \"arrowProps\", \"scheduleUpdate\", \"outOfBoundaries\"]);\n\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", _extends({\n    role: \"tooltip\",\n    ref: innerRef,\n    style: style,\n    \"x-placement\": placement,\n    className: classnames_default()(className, bsPrefix, \"bs-popover-\" + placement)\n  }, props, {\n    __source: {\n      fileName: Popover_jsxFileName,\n      lineNumber: 86\n    },\n    __self: this\n  }), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", _extends({\n    className: \"arrow\"\n  }, arrowProps, {\n    __source: {\n      fileName: Popover_jsxFileName,\n      lineNumber: 94\n    },\n    __self: this\n  })), title && external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", {\n    className: bsPrefix + \"-header h3\",\n    __source: {\n      fileName: Popover_jsxFileName,\n      lineNumber: 96\n    },\n    __self: this\n  }, title), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", {\n    className: bsPrefix + \"-body\",\n    __source: {\n      fileName: Popover_jsxFileName,\n      lineNumber: 98\n    },\n    __self: this\n  }, children));\n}\n\nPopover.propTypes = Popover_propTypes;\nPopover.defaultProps = Popover_defaultProps;\n/* harmony default export */ var src_Popover = (createBootstrapComponent(Popover, 'popover'));\n// CONCATENATED MODULE: ./src/ProgressBar.js\n\n\n\nvar ProgressBar_jsxFileName = \"/Users/jason/src/react-bootstrap/src/ProgressBar.js\";\n\n\n\n\n\nvar ROUND_PRECISION = 1000;\n/**\n * Validate that children, if any, are instances of `<ProgressBar>`.\n */\n\nfunction onlyProgressBar(props, propName, componentName) {\n  var children = props[propName];\n\n  if (!children) {\n    return null;\n  }\n\n  var error = null;\n  external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Children.forEach(children, function (child) {\n    if (error) {\n      return;\n    }\n    /**\n     * Compare types in a way that works with libraries that patch and proxy\n     * components like react-hot-loader.\n     *\n     * see https://github.com/gaearon/react-hot-loader#checking-element-types\n     */\n\n\n    var element = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(DecoratedProgressBar, {\n      __source: {\n        fileName: ProgressBar_jsxFileName,\n        lineNumber: 33\n      },\n      __self: this\n    });\n    if (child.type === element.type) return;\n    var childIdentifier = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.isValidElement(child) ? child.type.displayName || child.type.name || child.type : child;\n    error = new Error(\"Children of \" + componentName + \" can contain only ProgressBar \" + (\"components. Found \" + childIdentifier + \".\"));\n  });\n  return error;\n}\n\nvar ProgressBar_propTypes = {\n  /**\n   * Minimum value progress can begin from\n   */\n  min: prop_types_default.a.number,\n\n  /**\n   * Current value of progress\n   */\n  now: prop_types_default.a.number,\n\n  /**\n   * Maximum value progress can reach\n   */\n  max: prop_types_default.a.number,\n\n  /**\n   * Show label that represents visual percentage.\n   * EG. 60%\n   */\n  label: prop_types_default.a.node,\n\n  /**\n   * Hide's the label visually.\n   */\n  srOnly: prop_types_default.a.bool,\n\n  /**\n   * Uses a gradient to create a striped effect.\n   */\n  striped: prop_types_default.a.bool,\n\n  /**\n   * Animate's the stripes from right to left\n   */\n  animated: prop_types_default.a.bool,\n\n  /**\n   * @private\n   * @default 'progress-bar'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * Sets the background class of the progress bar.\n   *\n   * @type ('success'|'danger'|'warning'|'info')\n   */\n  variant: prop_types_default.a.string,\n\n  /**\n   * Child elements (only allows elements of type <ProgressBar />)\n   */\n  children: onlyProgressBar,\n\n  /**\n   * @private\n   */\n  isChild: prop_types_default.a.bool\n};\nvar ProgressBar_defaultProps = {\n  min: 0,\n  max: 100,\n  animated: false,\n  isChild: false,\n  srOnly: false,\n  striped: false\n};\n\nfunction getPercentage(now, min, max) {\n  var percentage = (now - min) / (max - min) * 100;\n  return Math.round(percentage * ROUND_PRECISION) / ROUND_PRECISION;\n}\n\nvar ProgressBar_ProgressBar =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(ProgressBar, _React$Component);\n\n  function ProgressBar() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = ProgressBar.prototype;\n\n  _proto.renderProgressBar = function renderProgressBar(_ref) {\n    var _classNames;\n\n    var min = _ref.min,\n        now = _ref.now,\n        max = _ref.max,\n        label = _ref.label,\n        srOnly = _ref.srOnly,\n        striped = _ref.striped,\n        animated = _ref.animated,\n        className = _ref.className,\n        style = _ref.style,\n        variant = _ref.variant,\n        bsPrefix = _ref.bsPrefix,\n        props = _objectWithoutPropertiesLoose(_ref, [\"min\", \"now\", \"max\", \"label\", \"srOnly\", \"striped\", \"animated\", \"className\", \"style\", \"variant\", \"bsPrefix\"]);\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", _extends({}, props, {\n      role: \"progressbar\",\n      className: classnames_default()(className, bsPrefix + \"-bar\", (_classNames = {}, _classNames[\"bg-\" + variant] = variant, _classNames[bsPrefix + \"-bar-animated\"] = animated, _classNames[bsPrefix + \"-bar-striped\"] = animated || striped, _classNames)),\n      style: _extends({\n        width: getPercentage(now, min, max) + \"%\"\n      }, style),\n      \"aria-valuenow\": now,\n      \"aria-valuemin\": min,\n      \"aria-valuemax\": max,\n      __source: {\n        fileName: ProgressBar_jsxFileName,\n        lineNumber: 139\n      },\n      __self: this\n    }), srOnly ? external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"span\", {\n      className: \"sr-only\",\n      __source: {\n        fileName: ProgressBar_jsxFileName,\n        lineNumber: 152\n      },\n      __self: this\n    }, label) : label);\n  };\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        isChild = _this$props.isChild,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"isChild\"]);\n\n    if (isChild) {\n      return this.renderProgressBar(props);\n    }\n\n    var min = props.min,\n        now = props.now,\n        max = props.max,\n        label = props.label,\n        srOnly = props.srOnly,\n        striped = props.striped,\n        animated = props.animated,\n        bsPrefix = props.bsPrefix,\n        variant = props.variant,\n        className = props.className,\n        children = props.children,\n        wrapperProps = _objectWithoutPropertiesLoose(props, [\"min\", \"now\", \"max\", \"label\", \"srOnly\", \"striped\", \"animated\", \"bsPrefix\", \"variant\", \"className\", \"children\"]);\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", _extends({}, wrapperProps, {\n      className: classnames_default()(className, bsPrefix),\n      __source: {\n        fileName: ProgressBar_jsxFileName,\n        lineNumber: 180\n      },\n      __self: this\n    }), children ? map(children, function (child) {\n      return Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"cloneElement\"])(child, {\n        isChild: true\n      });\n    }) : this.renderProgressBar({\n      min: min,\n      now: now,\n      max: max,\n      label: label,\n      srOnly: srOnly,\n      striped: striped,\n      animated: animated,\n      bsPrefix: bsPrefix,\n      variant: variant\n    }));\n  };\n\n  return ProgressBar;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nProgressBar_ProgressBar.propTypes = ProgressBar_propTypes;\nProgressBar_ProgressBar.defaultProps = ProgressBar_defaultProps;\nvar DecoratedProgressBar = createBootstrapComponent(ProgressBar_ProgressBar, 'progress');\n/* harmony default export */ var src_ProgressBar = (DecoratedProgressBar);\n// CONCATENATED MODULE: ./src/ResponsiveEmbed.js\n\n\n\nvar ResponsiveEmbed_jsxFileName = \"/Users/jason/src/react-bootstrap/src/ResponsiveEmbed.js\";\n\n\n\n\nvar ResponsiveEmbed_propTypes = {\n  /**\n   * @default 'embed-responsive'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * This component requires a single child element\n   */\n  children: prop_types_default.a.element.isRequired,\n\n  /**\n   * Set the aspect ration of the embed\n   */\n  aspectRatio: prop_types_default.a.oneOf(['21by9', '16by9', '4by3', '1by1'])\n};\nvar ResponsiveEmbed_defaultProps = {\n  aspectRatio: '1by1'\n};\n\nvar ResponsiveEmbed_ResponsiveEmbed =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(ResponsiveEmbed, _React$Component);\n\n  function ResponsiveEmbed() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = ResponsiveEmbed.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        bsPrefix = _this$props.bsPrefix,\n        className = _this$props.className,\n        children = _this$props.children,\n        aspectRatio = _this$props.aspectRatio,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"bsPrefix\", \"className\", \"children\", \"aspectRatio\"]);\n\n    var child = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Children.only(children);\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", _extends({}, props, {\n      className: classnames_default()(bsPrefix, className, aspectRatio && bsPrefix + \"-\" + aspectRatio),\n      __source: {\n        fileName: ResponsiveEmbed_jsxFileName,\n        lineNumber: 33\n      },\n      __self: this\n    }), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.cloneElement(child, {\n      className: classnames_default()(child.props.className, bsPrefix + \"-item\")\n    }));\n  };\n\n  return ResponsiveEmbed;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nResponsiveEmbed_ResponsiveEmbed.propTypes = ResponsiveEmbed_propTypes;\nResponsiveEmbed_ResponsiveEmbed.defaultProps = ResponsiveEmbed_defaultProps;\n/* harmony default export */ var src_ResponsiveEmbed = (createBootstrapComponent(ResponsiveEmbed_ResponsiveEmbed, 'embed-responsive'));\n// CONCATENATED MODULE: ./src/Row.js\n\n\n\nvar Row_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Row.js\";\n\n\n\n\n\nvar Row_Row =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Row, _React$Component);\n\n  function Row() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = Row.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        bsPrefix = _this$props.bsPrefix,\n        noGutters = _this$props.noGutters,\n        Component = _this$props.as,\n        className = _this$props.className,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"bsPrefix\", \"noGutters\", \"as\", \"className\"]);\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n      className: classnames_default()(className, bsPrefix, noGutters && 'no-gutters'),\n      __source: {\n        fileName: Row_jsxFileName,\n        lineNumber: 35\n      },\n      __self: this\n    }));\n  };\n\n  return Row;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nRow_Row.propTypes = {\n  /**\n   * @default 'row'\n   */\n  bsPrefix: prop_types_default.a.string.isRequired,\n\n  /** Removes the gutter spacing between `Col`s as well as any added negative margins. */\n  noGutters: prop_types_default.a.bool.isRequired,\n  as: prop_types_default.a.elementType\n};\nRow_Row.defaultProps = {\n  as: 'div',\n  noGutters: false\n};\n/* harmony default export */ var src_Row = (createBootstrapComponent(Row_Row, 'row'));\n// CONCATENATED MODULE: ./src/Spinner.js\n\n\n\nvar Spinner_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Spinner.js\";\n\n\n\n\n\nvar Spinner_Spinner =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Spinner, _React$Component);\n\n  function Spinner() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = Spinner.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        bsPrefix = _this$props.bsPrefix,\n        variant = _this$props.variant,\n        animation = _this$props.animation,\n        size = _this$props.size,\n        children = _this$props.children,\n        as = _this$props.as,\n        className = _this$props.className,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"bsPrefix\", \"variant\", \"animation\", \"size\", \"children\", \"as\", \"className\"]);\n\n    var Component = as;\n    var bsSpinnerPrefix = bsPrefix + \"-\" + animation;\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n      className: classnames_default()(className, bsSpinnerPrefix, size && bsSpinnerPrefix + \"-\" + size, variant && \"text-\" + variant),\n      __source: {\n        fileName: Spinner_jsxFileName,\n        lineNumber: 71\n      },\n      __self: this\n    }), children);\n  };\n\n  return Spinner;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nSpinner_Spinner.propTypes = {\n  /**\n   * @default 'spinner'\n   */\n  bsPrefix: prop_types_default.a.string.isRequired,\n\n  /**\n   * The visual color style of the spinner\n   *\n   * @type {('primary'|'secondary'|'success'|'danger'|'warning'|'info'|'light'|'dark')}\n   */\n  variant: prop_types_default.a.string,\n\n  /**\n   * Changes the animation style of the spinner.\n   *\n   * @type {('border'|'grow')}\n   * @default true\n   */\n  animation: prop_types_default.a.oneOf(['border', 'grow']).isRequired,\n\n  /**\n   * Component size variations.\n   *\n   * @type {('sm')}\n   */\n  size: prop_types_default.a.string,\n\n  /**\n   * This component may be used to wrap child elements or components.\n   */\n  children: prop_types_default.a.element,\n\n  /**\n   * An ARIA accessible role applied to the Menu component. This should generally be set to 'status'\n   */\n  role: prop_types_default.a.string,\n\n  /**\n   * @default div\n   */\n  as: prop_types_default.a.elementType\n};\nSpinner_Spinner.defaultProps = {\n  as: 'div'\n};\n/* harmony default export */ var src_Spinner = (createBootstrapComponent(Spinner_Spinner, 'spinner'));\n// CONCATENATED MODULE: ./src/SplitButton.js\n\n\n\nvar SplitButton_jsxFileName = \"/Users/jason/src/react-bootstrap/src/SplitButton.js\";\n\n\n\n\n\n/**\n * @inherits Button, Dropdown\n */\n\nvar SplitButton_SplitButton =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(SplitButton, _React$Component);\n\n  function SplitButton() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = SplitButton.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        id = _this$props.id,\n        bsPrefix = _this$props.bsPrefix,\n        size = _this$props.size,\n        variant = _this$props.variant,\n        title = _this$props.title,\n        toggleLabel = _this$props.toggleLabel,\n        children = _this$props.children,\n        onClick = _this$props.onClick,\n        href = _this$props.href,\n        target = _this$props.target,\n        menuRole = _this$props.menuRole,\n        rootCloseEvent = _this$props.rootCloseEvent,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"id\", \"bsPrefix\", \"size\", \"variant\", \"title\", \"toggleLabel\", \"children\", \"onClick\", \"href\", \"target\", \"menuRole\", \"rootCloseEvent\"]);\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Dropdown, _extends({}, props, {\n      as: src_ButtonGroup,\n      __source: {\n        fileName: SplitButton_jsxFileName,\n        lineNumber: 79\n      },\n      __self: this\n    }), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Button, {\n      size: size,\n      variant: variant,\n      disabled: props.disabled,\n      bsPrefix: bsPrefix,\n      href: href,\n      target: target,\n      onClick: onClick,\n      __source: {\n        fileName: SplitButton_jsxFileName,\n        lineNumber: 80\n      },\n      __self: this\n    }, title), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Dropdown.Toggle, {\n      split: true,\n      id: id,\n      size: size,\n      variant: variant,\n      disabled: props.disabled,\n      childBsPrefix: bsPrefix,\n      __source: {\n        fileName: SplitButton_jsxFileName,\n        lineNumber: 91\n      },\n      __self: this\n    }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"span\", {\n      className: \"sr-only\",\n      __source: {\n        fileName: SplitButton_jsxFileName,\n        lineNumber: 99\n      },\n      __self: this\n    }, toggleLabel)), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Dropdown.Menu, {\n      role: menuRole,\n      rootCloseEvent: rootCloseEvent,\n      __source: {\n        fileName: SplitButton_jsxFileName,\n        lineNumber: 102\n      },\n      __self: this\n    }, children));\n  };\n\n  return SplitButton;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nSplitButton_SplitButton.propTypes = {\n  /**\n   * An html id attribute for the Toggle button, necessary for assistive technologies, such as screen readers.\n   * @type {string|number}\n   * @required\n   */\n  id: prop_types_default.a.any,\n\n  /**\n   * Accessible label for the toggle; the value of `title` if not specified.\n   */\n  toggleLabel: prop_types_default.a.string,\n\n  /** An `href` passed to the non-toggle Button */\n  href: prop_types_default.a.string,\n\n  /** An anchor `target` passed to the non-toggle Button */\n  target: prop_types_default.a.string,\n\n  /** An `onClick` handler passed to the non-toggle Button */\n  onClick: prop_types_default.a.func,\n\n  /** The content of the non-toggle Button.  */\n  title: prop_types_default.a.node.isRequired,\n\n  /** Disables both Buttons  */\n  disabled: prop_types_default.a.bool,\n\n  /** An ARIA accessible role applied to the Menu component. When set to 'menu', The dropdown */\n  menuRole: prop_types_default.a.string,\n\n  /**\n   *  Which event when fired outside the component will cause it to be closed.\n   *\n   * _see [DropdownMenu](#menu-props) for more details_\n   */\n  rootCloseEvent: prop_types_default.a.string,\n\n  /** @ignore */\n  bsPrefix: prop_types_default.a.string,\n\n  /** @ignore */\n  variant: prop_types_default.a.string,\n\n  /** @ignore */\n  size: prop_types_default.a.string\n};\nSplitButton_SplitButton.defaultProps = {\n  toggleLabel: 'Toggle dropdown'\n};\n/* harmony default export */ var src_SplitButton = (SplitButton_SplitButton);\n// CONCATENATED MODULE: ./src/TabContainer.js\n\n\nvar TabContainer_jsxFileName = \"/Users/jason/src/react-bootstrap/src/TabContainer.js\";\n\n\n\n\n\n\nvar TabContainer_TabContainer =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(TabContainer, _React$Component);\n\n  function TabContainer() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n    _this.getControlledId = function (key) {\n      return _this.getKey(key, 'tabpane');\n    };\n\n    _this.getControllerId = function (key) {\n      return _this.getKey(key, 'tab');\n    };\n\n    _this.state = {\n      tabContext: {\n        onSelect: _this.props.onSelect,\n        activeKey: _this.props.activeKey,\n        transition: _this.props.transition,\n        mountOnEnter: _this.props.mountOnEnter,\n        unmountOnExit: _this.props.unmountOnExit,\n        getControlledId: _this.getControlledId,\n        getControllerId: _this.getControllerId\n      }\n    };\n    return _this;\n  }\n\n  TabContainer.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n    var activeKey = _ref.activeKey,\n        mountOnEnter = _ref.mountOnEnter,\n        unmountOnExit = _ref.unmountOnExit,\n        transition = _ref.transition;\n    return {\n      tabContext: _extends({}, prevState.tabContext, {\n        activeKey: activeKey,\n        mountOnEnter: mountOnEnter,\n        unmountOnExit: unmountOnExit,\n        transition: transition\n      })\n    };\n  };\n\n  var _proto = TabContainer.prototype;\n\n  _proto.getKey = function getKey(key, type) {\n    var _this$props = this.props,\n        generateChildId = _this$props.generateChildId,\n        id = _this$props.id;\n    if (generateChildId) return generateChildId(key, type);\n    return id ? id + \"-\" + type + \"-\" + key : null;\n  };\n\n  _proto.render = function render() {\n    var _this$props2 = this.props,\n        children = _this$props2.children,\n        onSelect = _this$props2.onSelect;\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_TabContext.Provider, {\n      value: this.state.tabContext,\n      __source: {\n        fileName: TabContainer_jsxFileName,\n        lineNumber: 129\n      },\n      __self: this\n    }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_SelectableContext.Provider, {\n      value: onSelect,\n      __source: {\n        fileName: TabContainer_jsxFileName,\n        lineNumber: 130\n      },\n      __self: this\n    }, children));\n  };\n\n  return TabContainer;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nTabContainer_TabContainer.propTypes = {\n  /**\n   * HTML id attribute, required if no `generateChildId` prop\n   * is specified.\n   *\n   * @type {string}\n   */\n  id: function id(props) {\n    var error = null;\n\n    if (!props.generateChildId) {\n      for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n        args[_key2 - 1] = arguments[_key2];\n      }\n\n      error = prop_types_default.a.string.apply(prop_types_default.a, [props].concat(args));\n\n      if (!error && !props.id) {\n        error = new Error('In order to properly initialize Tabs in a way that is accessible ' + 'to assistive technologies (such as screen readers) an `id` or a ' + '`generateChildId` prop to TabContainer is required');\n      }\n    }\n\n    return error;\n  },\n\n  /**\n   * Sets a default animation strategy for all children `<TabPane>`s. Use\n   * `false` to disable, `true` to enable the default `<Fade>` animation or\n   * a react-transition-group v2 `<Transition/>` component.\n   *\n   * @type {{Transition | false}}\n   * @default {Fade}\n   */\n  transition: prop_types_default.a.oneOfType([prop_types_default.a.oneOf([false]), prop_types_default.a.elementType]),\n\n  /**\n   * Wait until the first \"enter\" transition to mount tabs (add them to the DOM)\n   */\n  mountOnEnter: prop_types_default.a.bool,\n\n  /**\n   * Unmount tabs (remove it from the DOM) when they are no longer visible\n   */\n  unmountOnExit: prop_types_default.a.bool,\n\n  /**\n   * A function that takes an `eventKey` and `type` and returns a unique id for\n   * child tab `<NavItem>`s and `<TabPane>`s. The function _must_ be a pure\n   * function, meaning it should always return the _same_ id for the same set\n   * of inputs. The default value requires that an `id` to be set for the\n   * `<TabContainer>`.\n   *\n   * The `type` argument will either be `\"tab\"` or `\"pane\"`.\n   *\n   * @defaultValue (eventKey, type) => `${this.props.id}-${type}-${eventKey}`\n   */\n  generateChildId: prop_types_default.a.func,\n\n  /**\n   * A callback fired when a tab is selected.\n   *\n   * @controllable activeKey\n   */\n  onSelect: prop_types_default.a.func,\n\n  /**\n   * The `eventKey` of the currently active tab.\n   *\n   * @controllable onSelect\n   */\n  activeKey: prop_types_default.a.any\n};\n/* harmony default export */ var src_TabContainer = (uncontrollable_default()(TabContainer_TabContainer, {\n  activeKey: 'onSelect'\n}));\n// CONCATENATED MODULE: ./src/TabContent.js\n\n\n\nvar TabContent_jsxFileName = \"/Users/jason/src/react-bootstrap/src/TabContent.js\";\n\n\n\n\n\nvar TabContent_TabContent =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(TabContent, _React$Component);\n\n  function TabContent() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = TabContent.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        bsPrefix = _this$props.bsPrefix,\n        Component = _this$props.as,\n        className = _this$props.className,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"bsPrefix\", \"as\", \"className\"]);\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n      className: classnames_default()(className, bsPrefix),\n      __source: {\n        fileName: TabContent_jsxFileName,\n        lineNumber: 24\n      },\n      __self: this\n    }));\n  };\n\n  return TabContent;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nTabContent_TabContent.propTypes = {\n  /**\n   * @default 'tab-content'\n   */\n  bsPrefix: prop_types_default.a.string,\n  as: prop_types_default.a.elementType\n};\nTabContent_TabContent.defaultProps = {\n  as: 'div'\n};\n/* harmony default export */ var src_TabContent = (createBootstrapComponent(TabContent_TabContent, 'tab-content'));\n// CONCATENATED MODULE: ./src/TabPane.js\n\n\nvar TabPane_jsxFileName = \"/Users/jason/src/react-bootstrap/src/TabPane.js\";\n\n\n\n\n\n\n\nvar TabPane_propTypes = {\n  /**\n   * @default 'tab-pane'\n   */\n  bsPrefix: prop_types_default.a.string,\n  as: prop_types_default.a.elementType,\n\n  /**\n   * A key that associates the `TabPane` with it's controlling `NavLink`.\n   */\n  eventKey: prop_types_default.a.any,\n\n  /**\n   * Toggles the active state of the TabPane, this is generally controlled by a\n   * TabContainer.\n   */\n  active: prop_types_default.a.bool,\n\n  /**\n   * Use animation when showing or hiding `<TabPane>`s. Use `false` to disable,\n   * `true` to enable the default `<Fade>` animation or\n   * a react-transition-group v2 `<Transition/>` component.\n   */\n  transition: prop_types_default.a.oneOfType([prop_types_default.a.bool, prop_types_default.a.elementType]),\n\n  /**\n   *\n   * @default 'tab-pane'\n   */\n  bsClass: prop_types_default.a.string,\n\n  /**\n   * Transition onEnter callback when animation is not `false`\n   */\n  onEnter: prop_types_default.a.func,\n\n  /**\n   * Transition onEntering callback when animation is not `false`\n   */\n  onEntering: prop_types_default.a.func,\n\n  /**\n   * Transition onEntered callback when animation is not `false`\n   */\n  onEntered: prop_types_default.a.func,\n\n  /**\n   * Transition onExit callback when animation is not `false`\n   */\n  onExit: prop_types_default.a.func,\n\n  /**\n   * Transition onExiting callback when animation is not `false`\n   */\n  onExiting: prop_types_default.a.func,\n\n  /**\n   * Transition onExited callback when animation is not `false`\n   */\n  onExited: prop_types_default.a.func,\n\n  /**\n   * Wait until the first \"enter\" transition to mount the tab (add it to the DOM)\n   */\n  mountOnEnter: prop_types_default.a.bool,\n\n  /**\n   * Unmount the tab (remove it from the DOM) when it is no longer visible\n   */\n  unmountOnExit: prop_types_default.a.bool,\n\n  /** @ignore * */\n  id: prop_types_default.a.string,\n\n  /** @ignore * */\n  'aria-labelledby': prop_types_default.a.string\n};\n\nfunction useTabContext(props) {\n  var context = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(src_TabContext);\n  if (!context) return props;\n\n  var activeKey = context.activeKey,\n      getControlledId = context.getControlledId,\n      getControllerId = context.getControllerId,\n      rest = _objectWithoutPropertiesLoose(context, [\"activeKey\", \"getControlledId\", \"getControllerId\"]);\n\n  var shouldTransition = props.transition !== false && rest.transition !== false;\n  var key = makeEventKey(props.eventKey);\n  return _extends({}, props, {\n    active: props.active == null && key != null ? makeEventKey(activeKey) === key : props.active,\n    id: getControlledId(props.eventKey),\n    'aria-labelledby': getControllerId(props.eventKey),\n    transition: shouldTransition && (props.transition || rest.transition || src_Fade),\n    mountOnEnter: props.mountOnEnter != null ? props.mountOnEnter : rest.mountOnEnter,\n    unmountOnExit: props.unmountOnExit != null ? props.unmountOnExit : rest.unmountOnExit\n  });\n}\n\nvar TabPane = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (props, ref) {\n  var _useTabContext = useTabContext(props),\n      bsPrefix = _useTabContext.bsPrefix,\n      className = _useTabContext.className,\n      active = _useTabContext.active,\n      onEnter = _useTabContext.onEnter,\n      onEntering = _useTabContext.onEntering,\n      onEntered = _useTabContext.onEntered,\n      onExit = _useTabContext.onExit,\n      onExiting = _useTabContext.onExiting,\n      onExited = _useTabContext.onExited,\n      mountOnEnter = _useTabContext.mountOnEnter,\n      unmountOnExit = _useTabContext.unmountOnExit,\n      Transition = _useTabContext.transition,\n      _useTabContext$as = _useTabContext.as,\n      Component = _useTabContext$as === void 0 ? 'div' : _useTabContext$as,\n      _ = _useTabContext.eventKey,\n      rest = _objectWithoutPropertiesLoose(_useTabContext, [\"bsPrefix\", \"className\", \"active\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"mountOnEnter\", \"unmountOnExit\", \"transition\", \"as\", \"eventKey\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'tab-pane');\n  if (!active && unmountOnExit) return null;\n  var pane = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, rest, {\n    ref: ref,\n    role: \"tabpanel\",\n    \"aria-hidden\": !active,\n    className: classnames_default()(className, prefix, {\n      active: active\n    }),\n    __source: {\n      fileName: TabPane_jsxFileName,\n      lineNumber: 141\n    },\n    __self: this\n  }));\n  if (Transition) pane = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Transition, {\n    in: active,\n    onEnter: onEnter,\n    onEntering: onEntering,\n    onEntered: onEntered,\n    onExit: onExit,\n    onExiting: onExiting,\n    onExited: onExited,\n    mountOnEnter: mountOnEnter,\n    unmountOnExit: mountOnEnter,\n    __source: {\n      fileName: TabPane_jsxFileName,\n      lineNumber: 152\n    },\n    __self: this\n  }, pane); // We provide an empty the TabContext so `<Nav>`s in `<TabPane>`s don't\n  // conflict with the top level one.\n\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_TabContext.Provider, {\n    value: null,\n    __source: {\n      fileName: TabPane_jsxFileName,\n      lineNumber: 170\n    },\n    __self: this\n  }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_SelectableContext.Provider, {\n    value: null,\n    __source: {\n      fileName: TabPane_jsxFileName,\n      lineNumber: 171\n    },\n    __self: this\n  }, pane));\n});\nTabPane.displayName = 'TabPane';\nTabPane.propTypes = TabPane_propTypes;\n/* harmony default export */ var src_TabPane = (TabPane);\n// CONCATENATED MODULE: ./src/Tab.js\n\n\n\n\n\n\n/* eslint-disable react/require-render-return, react/no-unused-prop-types */\n\nvar Tab_Tab =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Tab, _React$Component);\n\n  function Tab() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = Tab.prototype;\n\n  _proto.render = function render() {\n    throw new Error('ReactBootstrap: The `Tab` component is not meant to be rendered! ' + \"It's an abstract component that is only valid as a direct Child of the `Tabs` Component. \" + 'For custom tabs components use TabPane and TabsContainer directly');\n  };\n\n  return Tab;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nTab_Tab.propTypes = {\n  title: prop_types_default.a.node.isRequired\n};\nTab_Tab.Container = src_TabContainer;\nTab_Tab.Content = src_TabContent;\nTab_Tab.Pane = src_TabPane;\n/* harmony default export */ var src_Tab = (Tab_Tab);\n// CONCATENATED MODULE: ./src/Table.js\n\n\n\nvar Table_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Table.js\";\n\n\n\n\n\nvar Table_Table =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Table, _React$Component);\n\n  function Table() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = Table.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        bsPrefix = _this$props.bsPrefix,\n        className = _this$props.className,\n        striped = _this$props.striped,\n        bordered = _this$props.bordered,\n        borderless = _this$props.borderless,\n        hover = _this$props.hover,\n        size = _this$props.size,\n        variant = _this$props.variant,\n        responsive = _this$props.responsive,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"bsPrefix\", \"className\", \"striped\", \"bordered\", \"borderless\", \"hover\", \"size\", \"variant\", \"responsive\"]);\n\n    var classes = classnames_default()(bsPrefix, className, variant && bsPrefix + \"-\" + variant, size && bsPrefix + \"-\" + size, striped && bsPrefix + \"-striped\", bordered && bsPrefix + \"-bordered\", borderless && bsPrefix + \"-borderless\", hover && bsPrefix + \"-hover\");\n    var table = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"table\", _extends({}, props, {\n      className: classes,\n      __source: {\n        fileName: Table_jsxFileName,\n        lineNumber: 83\n      },\n      __self: this\n    }));\n\n    if (responsive) {\n      var responsiveClass = bsPrefix + \"-responsive\";\n\n      if (typeof responsive === 'string') {\n        responsiveClass = responsiveClass + \"-\" + responsive;\n      }\n\n      return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", {\n        className: responsiveClass,\n        __source: {\n          fileName: Table_jsxFileName,\n          lineNumber: 91\n        },\n        __self: this\n      }, table);\n    }\n\n    return table;\n  };\n\n  return Table;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nTable_Table.propTypes = {\n  /**\n   * @default 'table'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * Adds zebra-striping to any table row within the `<tbody>`.\n   */\n  striped: prop_types_default.a.bool,\n\n  /**\n   * Adds borders on all sides of the table and cells.\n   */\n  bordered: prop_types_default.a.bool,\n\n  /**\n   * Removes all borders on the table and cells, including table header.\n   */\n  borderless: prop_types_default.a.bool,\n\n  /**\n   * Enable a hover state on table rows within a `<tbody>`.\n   */\n  hover: prop_types_default.a.bool,\n\n  /**\n   * Make tables more compact by cutting cell padding in half by setting\n   * size as `sm`.\n   */\n  size: prop_types_default.a.string,\n\n  /**\n   * Invert the colors of the table — with light text on dark backgrounds\n   * by setting variant as `dark`.\n   */\n  variant: prop_types_default.a.string,\n\n  /**\n   * Responsive tables allow tables to be scrolled horizontally with ease.\n   * Across every breakpoint, use `responsive` for horizontally\n   * scrolling tables. Responsive tables are wrapped automatically in a `div`.\n   * Use `responsive=\"sm\"`, `responsive=\"md\"`, `responsive=\"lg\"`, or\n   * `responsive=\"xl\"` as needed to create responsive tables up to\n   * a particular breakpoint. From that breakpoint and up, the table will\n   * behave normally and not scroll horizontally.\n   */\n  responsive: prop_types_default.a.oneOfType([prop_types_default.a.bool, prop_types_default.a.string])\n};\n/* harmony default export */ var src_Table = (createBootstrapComponent(Table_Table, 'table'));\n// CONCATENATED MODULE: ./src/Tabs.js\n\n\n\nvar Tabs_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Tabs.js\";\n\n\n\n\n\n\n\n\n\n\n\nvar Tabs_TabContainer = src_TabContainer.ControlledComponent;\nvar Tabs_propTypes = {\n  /**\n   * Mark the Tab with a matching `eventKey` as active.\n   *\n   * @controllable onSelect\n   */\n  activeKey: prop_types_default.a.any,\n\n  /**\n   * Navigation style\n   *\n   * @type {('tabs'| 'pills')}\n   */\n  variant: prop_types_default.a.string,\n\n  /**\n   * Sets a default animation strategy for all children `<TabPane>`s. Use\n   * `false` to disable, `true` to enable the default `<Fade>` animation or\n   * a react-transition-group v2 `<Transition/>` component.\n   *\n   * @type {Transition | false}\n   * @default {Fade}\n   */\n  transition: prop_types_default.a.oneOfType([prop_types_default.a.oneOf([false]), prop_types_default.a.elementType]),\n\n  /**\n   * HTML id attribute, required if no `generateChildId` prop\n   * is specified.\n   *\n   * @type {string}\n   */\n  id: isRequiredForA11y_default()(prop_types_default.a.string),\n\n  /**\n   * Callback fired when a Tab is selected.\n   *\n   * ```js\n   * function (\n   *   Any eventKey,\n   *   SyntheticEvent event?\n   * )\n   * ```\n   *\n   * @controllable activeKey\n   */\n  onSelect: prop_types_default.a.func,\n\n  /**\n   * Wait until the first \"enter\" transition to mount tabs (add them to the DOM)\n   */\n  mountOnEnter: prop_types_default.a.bool,\n\n  /**\n   * Unmount tabs (remove it from the DOM) when it is no longer visible\n   */\n  unmountOnExit: prop_types_default.a.bool\n};\nvar Tabs_defaultProps = {\n  variant: 'tabs',\n  mountOnEnter: false,\n  unmountOnExit: false\n};\n\nfunction getDefaultActiveKey(children) {\n  var defaultActiveKey;\n  forEach(children, function (child) {\n    if (defaultActiveKey == null) {\n      defaultActiveKey = child.props.eventKey;\n    }\n  });\n  return defaultActiveKey;\n}\n\nvar Tabs_Tabs =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Tabs, _React$Component);\n\n  function Tabs() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = Tabs.prototype;\n\n  _proto.renderTab = function renderTab(child) {\n    var _child$props = child.props,\n        title = _child$props.title,\n        eventKey = _child$props.eventKey,\n        disabled = _child$props.disabled,\n        tabClassName = _child$props.tabClassName;\n\n    if (title == null) {\n      return null;\n    }\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_NavItem, {\n      as: src_NavLink,\n      eventKey: eventKey,\n      disabled: disabled,\n      className: tabClassName,\n      __source: {\n        fileName: Tabs_jsxFileName,\n        lineNumber: 104\n      },\n      __self: this\n    }, title);\n  };\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        id = _this$props.id,\n        onSelect = _this$props.onSelect,\n        transition = _this$props.transition,\n        mountOnEnter = _this$props.mountOnEnter,\n        unmountOnExit = _this$props.unmountOnExit,\n        children = _this$props.children,\n        _this$props$activeKey = _this$props.activeKey,\n        activeKey = _this$props$activeKey === void 0 ? getDefaultActiveKey(children) : _this$props$activeKey,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"id\", \"onSelect\", \"transition\", \"mountOnEnter\", \"unmountOnExit\", \"children\", \"activeKey\"]);\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Tabs_TabContainer, {\n      id: id,\n      activeKey: activeKey,\n      onSelect: onSelect,\n      transition: transition,\n      mountOnEnter: mountOnEnter,\n      unmountOnExit: unmountOnExit,\n      __source: {\n        fileName: Tabs_jsxFileName,\n        lineNumber: 128\n      },\n      __self: this\n    }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Nav, _extends({}, props, {\n      role: \"tablist\",\n      as: \"nav\",\n      __source: {\n        fileName: Tabs_jsxFileName,\n        lineNumber: 136\n      },\n      __self: this\n    }), map(children, this.renderTab)), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_TabContent, {\n      __source: {\n        fileName: Tabs_jsxFileName,\n        lineNumber: 140\n      },\n      __self: this\n    }, map(children, function (child) {\n      var childProps = _extends({}, child.props);\n\n      delete childProps.title;\n      delete childProps.disabled;\n      delete childProps.tabClassName;\n      return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_TabPane, _extends({}, childProps, {\n        __source: {\n          fileName: Tabs_jsxFileName,\n          lineNumber: 147\n        },\n        __self: this\n      }));\n    })));\n  };\n\n  return Tabs;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nTabs_Tabs.propTypes = Tabs_propTypes;\nTabs_Tabs.defaultProps = Tabs_defaultProps;\n/* harmony default export */ var src_Tabs = (uncontrollable_default()(Tabs_Tabs, {\n  activeKey: 'onSelect'\n}));\n// CONCATENATED MODULE: ./src/ToggleButton.js\n\n\n\nvar ToggleButton_jsxFileName = \"/Users/jason/src/react-bootstrap/src/ToggleButton.js\";\n\n\n\n\n\nvar ToggleButton_noop = function noop() {};\n\nvar ToggleButton_propTypes = {\n  /**\n   * The `<input>` element `type`\n   */\n  type: prop_types_default.a.oneOf(['checkbox', 'radio']),\n\n  /**\n   * The HTML input name, used to group like checkboxes or radio buttons together\n   * semantically\n   */\n  name: prop_types_default.a.string,\n\n  /**\n   * The checked state of the input, managed by `<ToggleButtonGroup>` automatically\n   */\n  checked: prop_types_default.a.bool,\n\n  /**\n   * The disabled state of both the label and input\n   */\n  disabled: prop_types_default.a.bool,\n\n  /**\n   * A callback fired when the underlying input element changes. This is passed\n   * directly to the `<input>` so shares the same signature as a native `onChange` event.\n   */\n  onChange: prop_types_default.a.func,\n\n  /**\n   * The value of the input, should be unique amoungst it's siblings when nested in a\n   * `ToggleButtonGroup`.\n   */\n  value: prop_types_default.a.any.isRequired,\n\n  /**\n   * A ref attached to the `<input>` element\n   * @type {ReactRef}\n   */\n  inputRef: prop_types_default.a.any,\n\n  /** @ignore */\n  innerRef: prop_types_default.a.any\n};\n\nvar ToggleButton_ToggleButton =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(ToggleButton, _React$Component);\n\n  function ToggleButton() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n    _this.state = {\n      focused: false\n    };\n\n    _this.handleFocus = function (e) {\n      if (e.target.tagName === 'INPUT') _this.setState({\n        focused: true\n      });\n    };\n\n    _this.handleBlur = function (e) {\n      if (e.target.tagName === 'INPUT') _this.setState({\n        focused: false\n      });\n    };\n\n    return _this;\n  }\n\n  var _proto = ToggleButton.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        children = _this$props.children,\n        name = _this$props.name,\n        className = _this$props.className,\n        checked = _this$props.checked,\n        type = _this$props.type,\n        onChange = _this$props.onChange,\n        value = _this$props.value,\n        disabled = _this$props.disabled,\n        inputRef = _this$props.inputRef,\n        innerRef = _this$props.innerRef,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"name\", \"className\", \"checked\", \"type\", \"onChange\", \"value\", \"disabled\", \"inputRef\", \"innerRef\"]);\n\n    var focused = this.state.focused;\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Button, _extends({}, props, {\n      ref: innerRef,\n      className: classnames_default()(className, focused && 'focus', disabled && 'disabled'),\n      type: null,\n      active: !!checked,\n      as: \"label\",\n      __source: {\n        fileName: ToggleButton_jsxFileName,\n        lineNumber: 80\n      },\n      __self: this\n    }), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"input\", {\n      name: name,\n      type: type,\n      value: value,\n      ref: inputRef,\n      autoComplete: \"off\",\n      checked: !!checked,\n      disabled: !!disabled,\n      onFocus: this.handleFocus,\n      onBlur: this.handleBlur,\n      onChange: onChange || ToggleButton_noop,\n      __source: {\n        fileName: ToggleButton_jsxFileName,\n        lineNumber: 92\n      },\n      __self: this\n    }), children);\n  };\n\n  return ToggleButton;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nToggleButton_ToggleButton.propTypes = ToggleButton_propTypes;\n/* harmony default export */ var src_ToggleButton = (external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (props, ref) {\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(ToggleButton_ToggleButton, _extends({\n    innerRef: ref\n  }, props, {\n    __source: {\n      fileName: ToggleButton_jsxFileName,\n      lineNumber: 114\n    },\n    __self: this\n  }));\n}));\n// EXTERNAL MODULE: ./node_modules/invariant/browser.js\nvar browser = __webpack_require__(24);\nvar browser_default = /*#__PURE__*/__webpack_require__.n(browser);\n\n// CONCATENATED MODULE: ./src/ToggleButtonGroup.js\n\n\n\nvar ToggleButtonGroup_jsxFileName = \"/Users/jason/src/react-bootstrap/src/ToggleButtonGroup.js\";\n\n\n\n\n\n\n\n\nvar ToggleButtonGroup_propTypes = {\n  /**\n   * An HTML `<input>` name for each child button.\n   *\n   * __Required if `type` is set to `'radio'`__\n   */\n  name: prop_types_default.a.string,\n\n  /**\n   * The value, or array of values, of the active (pressed) buttons\n   *\n   * @controllable onChange\n   */\n  value: prop_types_default.a.any,\n\n  /**\n   * Callback fired when a button is pressed, depending on whether the `type`\n   * is `'radio'` or `'checkbox'`, `onChange` will be called with the value or\n   * array of active values\n   *\n   * @controllable values\n   */\n  onChange: prop_types_default.a.func,\n\n  /**\n   * The input `type` of the rendered buttons, determines the toggle behavior\n   * of the buttons\n   */\n  type: prop_types_default.a.oneOf(['checkbox', 'radio']).isRequired\n};\nvar ToggleButtonGroup_defaultProps = {\n  type: 'radio'\n};\n\nvar ToggleButtonGroup_ToggleButtonGroup =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(ToggleButtonGroup, _React$Component);\n\n  function ToggleButtonGroup() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = ToggleButtonGroup.prototype;\n\n  _proto.getValues = function getValues() {\n    var value = this.props.value;\n    return value == null ? [] : [].concat(value);\n  };\n\n  _proto.handleToggle = function handleToggle(value, event) {\n    var _this$props = this.props,\n        type = _this$props.type,\n        onChange = _this$props.onChange;\n    var values = this.getValues();\n    var isActive = values.indexOf(value) !== -1;\n\n    if (type === 'radio') {\n      if (!isActive) onChange(value, event);\n      return;\n    }\n\n    if (isActive) {\n      onChange(values.filter(function (n) {\n        return n !== value;\n      }), event);\n    } else {\n      onChange([].concat(values, [value]), event);\n    }\n  };\n\n  _proto.render = function render() {\n    var _this = this;\n\n    var _this$props2 = this.props,\n        children = _this$props2.children,\n        type = _this$props2.type,\n        name = _this$props2.name,\n        props = _objectWithoutPropertiesLoose(_this$props2, [\"children\", \"type\", \"name\"]);\n\n    delete props.onChange;\n    delete props.value;\n    var values = this.getValues();\n    !(type !== 'radio' || !!name) ?  false ? undefined : browser_default()(false) : void 0;\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_ButtonGroup, _extends({}, props, {\n      toggle: true,\n      __source: {\n        fileName: ToggleButtonGroup_jsxFileName,\n        lineNumber: 84\n      },\n      __self: this\n    }), map(children, function (child) {\n      var _child$props = child.props,\n          value = _child$props.value,\n          onChange = _child$props.onChange;\n\n      var handler = function handler(e) {\n        return _this.handleToggle(value, e);\n      };\n\n      return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.cloneElement(child, {\n        type: type,\n        name: child.name || name,\n        checked: values.indexOf(value) !== -1,\n        onChange: utils_createChainedFunction(onChange, handler)\n      });\n    }));\n  };\n\n  return ToggleButtonGroup;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nToggleButtonGroup_ToggleButtonGroup.propTypes = ToggleButtonGroup_propTypes;\nToggleButtonGroup_ToggleButtonGroup.defaultProps = ToggleButtonGroup_defaultProps;\nvar UncontrolledToggleButtonGroup = uncontrollable_default()(ToggleButtonGroup_ToggleButtonGroup, {\n  value: 'onChange'\n});\nUncontrolledToggleButtonGroup.Button = src_ToggleButton;\n/* harmony default export */ var src_ToggleButtonGroup = (UncontrolledToggleButtonGroup);\n// CONCATENATED MODULE: ./src/Tooltip.js\n\n\nvar Tooltip_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Tooltip.js\";\n\n\n\n\n\nvar Tooltip_propTypes = {\n  /**\n   * @default 'tooltip'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * An html id attribute, necessary for accessibility\n   * @type {string|number}\n   * @required\n   */\n  id: isRequiredForA11y_default()(prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.number])),\n\n  /**\n   * Sets the direction the Tooltip is positioned towards.\n   *\n   * > This is generally provided by the `Overlay` component positioning the tooltip\n   */\n  placement: prop_types_default.a.oneOf(['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start']),\n\n  /**\n   * An Overlay injected set of props for positioning the tooltip arrow.\n   *\n   * > This is generally provided by the `Overlay` component positioning the tooltip\n   *\n   * @type {{ ref: ReactRef, style: Object }}\n   */\n  arrowProps: prop_types_default.a.shape({\n    ref: prop_types_default.a.any,\n    style: prop_types_default.a.object\n  }),\n\n  /** @private */\n  innerRef: prop_types_default.a.any,\n\n  /** @private */\n  scheduleUpdate: prop_types_default.a.func,\n\n  /** @private */\n  outOfBoundaries: prop_types_default.a.any\n};\nvar Tooltip_defaultProps = {\n  placement: 'right'\n};\n\nfunction Tooltip(_ref) {\n  var bsPrefix = _ref.bsPrefix,\n      innerRef = _ref.innerRef,\n      placement = _ref.placement,\n      className = _ref.className,\n      style = _ref.style,\n      children = _ref.children,\n      arrowProps = _ref.arrowProps,\n      _ = _ref.scheduleUpdate,\n      _1 = _ref.outOfBoundaries,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"innerRef\", \"placement\", \"className\", \"style\", \"children\", \"arrowProps\", \"scheduleUpdate\", \"outOfBoundaries\"]);\n\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", _extends({\n    ref: innerRef,\n    style: style,\n    role: \"tooltip\",\n    \"x-placement\": placement,\n    className: classnames_default()(className, bsPrefix, \"bs-tooltip-\" + placement)\n  }, props, {\n    __source: {\n      fileName: Tooltip_jsxFileName,\n      lineNumber: 84\n    },\n    __self: this\n  }), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", _extends({\n    className: \"arrow\"\n  }, arrowProps, {\n    __source: {\n      fileName: Tooltip_jsxFileName,\n      lineNumber: 92\n    },\n    __self: this\n  })), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", {\n    className: bsPrefix + \"-inner\",\n    __source: {\n      fileName: Tooltip_jsxFileName,\n      lineNumber: 93\n    },\n    __self: this\n  }, children));\n}\n\nTooltip.propTypes = Tooltip_propTypes;\nTooltip.defaultProps = Tooltip_defaultProps;\n/* harmony default export */ var src_Tooltip = (createBootstrapComponent(Tooltip, 'tooltip'));\n// CONCATENATED MODULE: ./src/index.js\n/* concated harmony reexport Accordion */__webpack_require__.d(__webpack_exports__, \"Accordion\", function() { return src_Accordion; });\n/* concated harmony reexport Alert */__webpack_require__.d(__webpack_exports__, \"Alert\", function() { return src_Alert; });\n/* concated harmony reexport Badge */__webpack_require__.d(__webpack_exports__, \"Badge\", function() { return src_Badge; });\n/* concated harmony reexport Breadcrumb */__webpack_require__.d(__webpack_exports__, \"Breadcrumb\", function() { return src_Breadcrumb; });\n/* concated harmony reexport BreadcrumbItem */__webpack_require__.d(__webpack_exports__, \"BreadcrumbItem\", function() { return src_BreadcrumbItem; });\n/* concated harmony reexport Button */__webpack_require__.d(__webpack_exports__, \"Button\", function() { return src_Button; });\n/* concated harmony reexport ButtonGroup */__webpack_require__.d(__webpack_exports__, \"ButtonGroup\", function() { return src_ButtonGroup; });\n/* concated harmony reexport ButtonToolbar */__webpack_require__.d(__webpack_exports__, \"ButtonToolbar\", function() { return src_ButtonToolbar; });\n/* concated harmony reexport Card */__webpack_require__.d(__webpack_exports__, \"Card\", function() { return src_Card; });\n/* concated harmony reexport CardColumns */__webpack_require__.d(__webpack_exports__, \"CardColumns\", function() { return CardColumns; });\n/* concated harmony reexport CardDeck */__webpack_require__.d(__webpack_exports__, \"CardDeck\", function() { return CardDeck; });\n/* concated harmony reexport CardImg */__webpack_require__.d(__webpack_exports__, \"CardImg\", function() { return src_CardImg; });\n/* concated harmony reexport CardGroup */__webpack_require__.d(__webpack_exports__, \"CardGroup\", function() { return CardGroup; });\n/* concated harmony reexport Carousel */__webpack_require__.d(__webpack_exports__, \"Carousel\", function() { return src_Carousel; });\n/* concated harmony reexport CarouselItem */__webpack_require__.d(__webpack_exports__, \"CarouselItem\", function() { return CarouselItem; });\n/* concated harmony reexport CloseButton */__webpack_require__.d(__webpack_exports__, \"CloseButton\", function() { return src_CloseButton; });\n/* concated harmony reexport Col */__webpack_require__.d(__webpack_exports__, \"Col\", function() { return src_Col; });\n/* concated harmony reexport Collapse */__webpack_require__.d(__webpack_exports__, \"Collapse\", function() { return src_Collapse; });\n/* concated harmony reexport Dropdown */__webpack_require__.d(__webpack_exports__, \"Dropdown\", function() { return src_Dropdown; });\n/* concated harmony reexport DropdownButton */__webpack_require__.d(__webpack_exports__, \"DropdownButton\", function() { return src_DropdownButton; });\n/* concated harmony reexport DropdownItem */__webpack_require__.d(__webpack_exports__, \"DropdownItem\", function() { return src_DropdownItem; });\n/* concated harmony reexport Fade */__webpack_require__.d(__webpack_exports__, \"Fade\", function() { return src_Fade; });\n/* concated harmony reexport Form */__webpack_require__.d(__webpack_exports__, \"Form\", function() { return src_Form; });\n/* concated harmony reexport FormControl */__webpack_require__.d(__webpack_exports__, \"FormControl\", function() { return src_FormControl; });\n/* concated harmony reexport FormCheck */__webpack_require__.d(__webpack_exports__, \"FormCheck\", function() { return src_FormCheck; });\n/* concated harmony reexport FormGroup */__webpack_require__.d(__webpack_exports__, \"FormGroup\", function() { return src_FormGroup; });\n/* concated harmony reexport FormLabel */__webpack_require__.d(__webpack_exports__, \"FormLabel\", function() { return src_FormLabel; });\n/* concated harmony reexport FormText */__webpack_require__.d(__webpack_exports__, \"FormText\", function() { return src_FormText; });\n/* concated harmony reexport Container */__webpack_require__.d(__webpack_exports__, \"Container\", function() { return src_Container; });\n/* concated harmony reexport Image */__webpack_require__.d(__webpack_exports__, \"Image\", function() { return src_Image; });\n/* concated harmony reexport Figure */__webpack_require__.d(__webpack_exports__, \"Figure\", function() { return src_Figure; });\n/* concated harmony reexport InputGroup */__webpack_require__.d(__webpack_exports__, \"InputGroup\", function() { return src_InputGroup; });\n/* concated harmony reexport Jumbotron */__webpack_require__.d(__webpack_exports__, \"Jumbotron\", function() { return src_Jumbotron; });\n/* concated harmony reexport ListGroup */__webpack_require__.d(__webpack_exports__, \"ListGroup\", function() { return src_ListGroup; });\n/* concated harmony reexport ListGroupItem */__webpack_require__.d(__webpack_exports__, \"ListGroupItem\", function() { return src_ListGroupItem; });\n/* concated harmony reexport Media */__webpack_require__.d(__webpack_exports__, \"Media\", function() { return src_Media; });\n/* concated harmony reexport Modal */__webpack_require__.d(__webpack_exports__, \"Modal\", function() { return src_Modal; });\n/* concated harmony reexport ModalBody */__webpack_require__.d(__webpack_exports__, \"ModalBody\", function() { return ModalBody; });\n/* concated harmony reexport ModalDialog */__webpack_require__.d(__webpack_exports__, \"ModalDialog\", function() { return src_ModalDialog; });\n/* concated harmony reexport ModalFooter */__webpack_require__.d(__webpack_exports__, \"ModalFooter\", function() { return ModalFooter; });\n/* concated harmony reexport ModalTitle */__webpack_require__.d(__webpack_exports__, \"ModalTitle\", function() { return ModalTitle; });\n/* concated harmony reexport Nav */__webpack_require__.d(__webpack_exports__, \"Nav\", function() { return src_Nav; });\n/* concated harmony reexport Navbar */__webpack_require__.d(__webpack_exports__, \"Navbar\", function() { return src_Navbar; });\n/* concated harmony reexport NavbarBrand */__webpack_require__.d(__webpack_exports__, \"NavbarBrand\", function() { return src_NavbarBrand; });\n/* concated harmony reexport NavDropdown */__webpack_require__.d(__webpack_exports__, \"NavDropdown\", function() { return src_NavDropdown; });\n/* concated harmony reexport NavItem */__webpack_require__.d(__webpack_exports__, \"NavItem\", function() { return src_NavItem; });\n/* concated harmony reexport Overlay */__webpack_require__.d(__webpack_exports__, \"Overlay\", function() { return src_Overlay; });\n/* concated harmony reexport OverlayTrigger */__webpack_require__.d(__webpack_exports__, \"OverlayTrigger\", function() { return src_OverlayTrigger; });\n/* concated harmony reexport PageItem */__webpack_require__.d(__webpack_exports__, \"PageItem\", function() { return PageItem; });\n/* concated harmony reexport Pagination */__webpack_require__.d(__webpack_exports__, \"Pagination\", function() { return src_Pagination; });\n/* concated harmony reexport Popover */__webpack_require__.d(__webpack_exports__, \"Popover\", function() { return src_Popover; });\n/* concated harmony reexport ProgressBar */__webpack_require__.d(__webpack_exports__, \"ProgressBar\", function() { return src_ProgressBar; });\n/* concated harmony reexport ResponsiveEmbed */__webpack_require__.d(__webpack_exports__, \"ResponsiveEmbed\", function() { return src_ResponsiveEmbed; });\n/* concated harmony reexport Row */__webpack_require__.d(__webpack_exports__, \"Row\", function() { return src_Row; });\n/* concated harmony reexport SafeAnchor */__webpack_require__.d(__webpack_exports__, \"SafeAnchor\", function() { return src_SafeAnchor; });\n/* concated harmony reexport Spinner */__webpack_require__.d(__webpack_exports__, \"Spinner\", function() { return src_Spinner; });\n/* concated harmony reexport SplitButton */__webpack_require__.d(__webpack_exports__, \"SplitButton\", function() { return src_SplitButton; });\n/* concated harmony reexport Tab */__webpack_require__.d(__webpack_exports__, \"Tab\", function() { return src_Tab; });\n/* concated harmony reexport TabContainer */__webpack_require__.d(__webpack_exports__, \"TabContainer\", function() { return src_TabContainer; });\n/* concated harmony reexport TabContent */__webpack_require__.d(__webpack_exports__, \"TabContent\", function() { return src_TabContent; });\n/* concated harmony reexport Table */__webpack_require__.d(__webpack_exports__, \"Table\", function() { return src_Table; });\n/* concated harmony reexport TabPane */__webpack_require__.d(__webpack_exports__, \"TabPane\", function() { return src_TabPane; });\n/* concated harmony reexport Tabs */__webpack_require__.d(__webpack_exports__, \"Tabs\", function() { return src_Tabs; });\n/* concated harmony reexport ThemeProvider */__webpack_require__.d(__webpack_exports__, \"ThemeProvider\", function() { return src_ThemeProvider; });\n/* concated harmony reexport ToggleButton */__webpack_require__.d(__webpack_exports__, \"ToggleButton\", function() { return src_ToggleButton; });\n/* concated harmony reexport ToggleButtonGroup */__webpack_require__.d(__webpack_exports__, \"ToggleButtonGroup\", function() { return src_ToggleButtonGroup; });\n/* concated harmony reexport Tooltip */__webpack_require__.d(__webpack_exports__, \"Tooltip\", function() { return src_Tooltip; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/***/ })\n/******/ ]);\n});"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_023_update_sample_app/ReadMe.md",
    "content": "- [Updating App](https://docs.docker.com/get-started/03_updating_app/)\n\n- Build the app again\n\n```bash\n$ docker build -t getting-started .\n```\n\n- Run the container again\n\n```bash\n$ docker run -dp 3000:3000 getting-started\n621a5b57dca2c43892d2b63810fe3d1834b709eff19b42a5c4a31767910fefe2\ndocker: Error response from daemon: driver failed programming external connectivity on endpoint admiring_chatelet (2ff9d0818c690b6ff3b86d8857d5110a595e696e5c2f4032cbf78b26c1904de1): Bind for 0.0.0.0:3000 failed: port is already allocated\n\n$ docker rm -f 621a5b57dca2c43892d2b63810fe3d1834b709eff19b42a5c4a31767910fefe2               \n621a5b57dca2c43892d2b63810fe3d1834b709eff19b42a5c4a31767910fefe2\n\n$ docker run -dp 3000:3000 getting-started                                     \n460c1d91eb69a385c27e03baee7d3c7687abf6f0c67e788c39acd9fd44ec7983\n```\n\n- Images\n\n![](.images/2022-07-24-13-49-04.png)"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_023_update_sample_app/app/Dockerfile",
    "content": "# syntax=docker/dockerfile:1\nFROM node:12-alpine\nRUN apk add --no-cache python2 g++ make\nWORKDIR /app\nCOPY . .\nRUN yarn install --production\nCMD [\"node\", \"src/index.js\"]\nEXPOSE 3000"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_023_update_sample_app/app/package.json",
    "content": "{\n  \"name\": \"101-app\",\n  \"version\": \"1.0.0\",\n  \"main\": \"index.js\",\n  \"license\": \"MIT\",\n  \"scripts\": {\n    \"prettify\": \"prettier -l --write \\\"**/*.js\\\"\",\n    \"test\": \"jest\",\n    \"dev\": \"nodemon src/index.js\"\n  },\n  \"dependencies\": {\n    \"express\": \"^4.17.1\",\n    \"mysql\": \"^2.17.1\",\n    \"sqlite3\": \"^5.0.0\",\n    \"uuid\": \"^3.3.3\",\n    \"wait-port\": \"^0.2.2\"\n  },\n  \"resolutions\": {\n    \"ansi-regex\": \"5.0.1\"\n  },\n  \"prettier\": {\n    \"trailingComma\": \"all\",\n    \"tabWidth\": 4,\n    \"useTabs\": false,\n    \"semi\": true,\n    \"singleQuote\": true\n  },\n  \"devDependencies\": {\n    \"jest\": \"^27.2.5\",\n    \"nodemon\": \"^2.0.13\",\n    \"prettier\": \"^1.18.2\"\n  }\n}\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_023_update_sample_app/app/spec/persistence/sqlite.spec.js",
    "content": "const db = require('../../src/persistence/sqlite');\nconst fs = require('fs');\nconst location = process.env.SQLITE_DB_LOCATION || '/etc/todos/todo.db';\n\nconst ITEM = {\n    id: '7aef3d7c-d301-4846-8358-2a91ec9d6be3',\n    name: 'Test',\n    completed: false,\n};\n\nbeforeEach(() => {\n    if (fs.existsSync(location)) {\n        fs.unlinkSync(location);\n    }\n});\n\ntest('it initializes correctly', async () => {\n    await db.init();\n});\n\ntest('it can store and retrieve items', async () => {\n    await db.init();\n\n    await db.storeItem(ITEM);\n\n    const items = await db.getItems();\n    expect(items.length).toBe(1);\n    expect(items[0]).toEqual(ITEM);\n});\n\ntest('it can update an existing item', async () => {\n    await db.init();\n\n    const initialItems = await db.getItems();\n    expect(initialItems.length).toBe(0);\n\n    await db.storeItem(ITEM);\n\n    await db.updateItem(\n        ITEM.id,\n        Object.assign({}, ITEM, { completed: !ITEM.completed }),\n    );\n\n    const items = await db.getItems();\n    expect(items.length).toBe(1);\n    expect(items[0].completed).toBe(!ITEM.completed);\n});\n\ntest('it can remove an existing item', async () => {\n    await db.init();\n    await db.storeItem(ITEM);\n\n    await db.removeItem(ITEM.id);\n\n    const items = await db.getItems();\n    expect(items.length).toBe(0);\n});\n\ntest('it can get a single item', async () => {\n    await db.init();\n    await db.storeItem(ITEM);\n\n    const item = await db.getItem(ITEM.id);\n    expect(item).toEqual(ITEM);\n});\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_023_update_sample_app/app/spec/routes/addItem.spec.js",
    "content": "const db = require('../../src/persistence');\nconst addItem = require('../../src/routes/addItem');\nconst ITEM = { id: 12345 };\nconst uuid = require('uuid/v4');\n\njest.mock('uuid/v4', () => jest.fn());\n\njest.mock('../../src/persistence', () => ({\n    removeItem: jest.fn(),\n    storeItem: jest.fn(),\n    getItem: jest.fn(),\n}));\n\ntest('it stores item correctly', async () => {\n    const id = 'something-not-a-uuid';\n    const name = 'A sample item';\n    const req = { body: { name } };\n    const res = { send: jest.fn() };\n\n    uuid.mockReturnValue(id);\n\n    await addItem(req, res);\n\n    const expectedItem = { id, name, completed: false };\n\n    expect(db.storeItem.mock.calls.length).toBe(1);\n    expect(db.storeItem.mock.calls[0][0]).toEqual(expectedItem);\n    expect(res.send.mock.calls[0].length).toBe(1);\n    expect(res.send.mock.calls[0][0]).toEqual(expectedItem);\n});\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_023_update_sample_app/app/spec/routes/deleteItem.spec.js",
    "content": "const db = require('../../src/persistence');\nconst deleteItem = require('../../src/routes/deleteItem');\nconst ITEM = { id: 12345 };\n\njest.mock('../../src/persistence', () => ({\n    removeItem: jest.fn(),\n    getItem: jest.fn(),\n}));\n\ntest('it removes item correctly', async () => {\n    const req = { params: { id: 12345 } };\n    const res = { sendStatus: jest.fn() };\n\n    await deleteItem(req, res);\n\n    expect(db.removeItem.mock.calls.length).toBe(1);\n    expect(db.removeItem.mock.calls[0][0]).toBe(req.params.id);\n    expect(res.sendStatus.mock.calls[0].length).toBe(1);\n    expect(res.sendStatus.mock.calls[0][0]).toBe(200);\n});\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_023_update_sample_app/app/spec/routes/getItems.spec.js",
    "content": "const db = require('../../src/persistence');\nconst getItems = require('../../src/routes/getItems');\nconst ITEMS = [{ id: 12345 }];\n\njest.mock('../../src/persistence', () => ({\n    getItems: jest.fn(),\n}));\n\ntest('it gets items correctly', async () => {\n    const req = {};\n    const res = { send: jest.fn() };\n    db.getItems.mockReturnValue(Promise.resolve(ITEMS));\n\n    await getItems(req, res);\n\n    expect(db.getItems.mock.calls.length).toBe(1);\n    expect(res.send.mock.calls[0].length).toBe(1);\n    expect(res.send.mock.calls[0][0]).toEqual(ITEMS);\n});\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_023_update_sample_app/app/spec/routes/updateItem.spec.js",
    "content": "const db = require('../../src/persistence');\nconst updateItem = require('../../src/routes/updateItem');\nconst ITEM = { id: 12345 };\n\njest.mock('../../src/persistence', () => ({\n    getItem: jest.fn(),\n    updateItem: jest.fn(),\n}));\n\ntest('it updates items correctly', async () => {\n    const req = {\n        params: { id: 1234 },\n        body: { name: 'New title', completed: false },\n    };\n    const res = { send: jest.fn() };\n\n    db.getItem.mockReturnValue(Promise.resolve(ITEM));\n\n    await updateItem(req, res);\n\n    expect(db.updateItem.mock.calls.length).toBe(1);\n    expect(db.updateItem.mock.calls[0][0]).toBe(req.params.id);\n    expect(db.updateItem.mock.calls[0][1]).toEqual({\n        name: 'New title',\n        completed: false,\n    });\n\n    expect(db.getItem.mock.calls.length).toBe(1);\n    expect(db.getItem.mock.calls[0][0]).toBe(req.params.id);\n\n    expect(res.send.mock.calls[0].length).toBe(1);\n    expect(res.send.mock.calls[0][0]).toEqual(ITEM);\n});\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_023_update_sample_app/app/src/index.js",
    "content": "const express = require('express');\nconst app = express();\nconst db = require('./persistence');\nconst getItems = require('./routes/getItems');\nconst addItem = require('./routes/addItem');\nconst updateItem = require('./routes/updateItem');\nconst deleteItem = require('./routes/deleteItem');\n\napp.use(express.json());\napp.use(express.static(__dirname + '/static'));\n\napp.get('/items', getItems);\napp.post('/items', addItem);\napp.put('/items/:id', updateItem);\napp.delete('/items/:id', deleteItem);\n\ndb.init().then(() => {\n    app.listen(3000, () => console.log('Listening on port 3000'));\n}).catch((err) => {\n    console.error(err);\n    process.exit(1);\n});\n\nconst gracefulShutdown = () => {\n    db.teardown()\n        .catch(() => {})\n        .then(() => process.exit());\n};\n\nprocess.on('SIGINT', gracefulShutdown);\nprocess.on('SIGTERM', gracefulShutdown);\nprocess.on('SIGUSR2', gracefulShutdown); // Sent by nodemon\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_023_update_sample_app/app/src/persistence/index.js",
    "content": "if (process.env.MYSQL_HOST) module.exports = require('./mysql');\nelse module.exports = require('./sqlite');\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_023_update_sample_app/app/src/persistence/mysql.js",
    "content": "const waitPort = require('wait-port');\nconst fs = require('fs');\nconst mysql = require('mysql');\n\nconst {\n    MYSQL_HOST: HOST,\n    MYSQL_HOST_FILE: HOST_FILE,\n    MYSQL_USER: USER,\n    MYSQL_USER_FILE: USER_FILE,\n    MYSQL_PASSWORD: PASSWORD,\n    MYSQL_PASSWORD_FILE: PASSWORD_FILE,\n    MYSQL_DB: DB,\n    MYSQL_DB_FILE: DB_FILE,\n} = process.env;\n\nlet pool;\n\nasync function init() {\n    const host = HOST_FILE ? fs.readFileSync(HOST_FILE) : HOST;\n    const user = USER_FILE ? fs.readFileSync(USER_FILE) : USER;\n    const password = PASSWORD_FILE ? fs.readFileSync(PASSWORD_FILE) : PASSWORD;\n    const database = DB_FILE ? fs.readFileSync(DB_FILE) : DB;\n\n    await waitPort({ host, port : 3306});\n\n    pool = mysql.createPool({\n        connectionLimit: 5,\n        host,\n        user,\n        password,\n        database,\n        charset: 'utf8mb4',\n    });\n\n    return new Promise((acc, rej) => {\n        pool.query(\n            'CREATE TABLE IF NOT EXISTS todo_items (id varchar(36), name varchar(255), completed boolean) DEFAULT CHARSET utf8mb4',\n            err => {\n                if (err) return rej(err);\n\n                console.log(`Connected to mysql db at host ${HOST}`);\n                acc();\n            },\n        );\n    });\n}\n\nasync function teardown() {\n    return new Promise((acc, rej) => {\n        pool.end(err => {\n            if (err) rej(err);\n            else acc();\n        });\n    });\n}\n\nasync function getItems() {\n    return new Promise((acc, rej) => {\n        pool.query('SELECT * FROM todo_items', (err, rows) => {\n            if (err) return rej(err);\n            acc(\n                rows.map(item =>\n                    Object.assign({}, item, {\n                        completed: item.completed === 1,\n                    }),\n                ),\n            );\n        });\n    });\n}\n\nasync function getItem(id) {\n    return new Promise((acc, rej) => {\n        pool.query('SELECT * FROM todo_items WHERE id=?', [id], (err, rows) => {\n            if (err) return rej(err);\n            acc(\n                rows.map(item =>\n                    Object.assign({}, item, {\n                        completed: item.completed === 1,\n                    }),\n                )[0],\n            );\n        });\n    });\n}\n\nasync function storeItem(item) {\n    return new Promise((acc, rej) => {\n        pool.query(\n            'INSERT INTO todo_items (id, name, completed) VALUES (?, ?, ?)',\n            [item.id, item.name, item.completed ? 1 : 0],\n            err => {\n                if (err) return rej(err);\n                acc();\n            },\n        );\n    });\n}\n\nasync function updateItem(id, item) {\n    return new Promise((acc, rej) => {\n        pool.query(\n            'UPDATE todo_items SET name=?, completed=? WHERE id=?',\n            [item.name, item.completed ? 1 : 0, id],\n            err => {\n                if (err) return rej(err);\n                acc();\n            },\n        );\n    });\n}\n\nasync function removeItem(id) {\n    return new Promise((acc, rej) => {\n        pool.query('DELETE FROM todo_items WHERE id = ?', [id], err => {\n            if (err) return rej(err);\n            acc();\n        });\n    });\n}\n\nmodule.exports = {\n    init,\n    teardown,\n    getItems,\n    getItem,\n    storeItem,\n    updateItem,\n    removeItem,\n};\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_023_update_sample_app/app/src/persistence/sqlite.js",
    "content": "const sqlite3 = require('sqlite3').verbose();\nconst fs = require('fs');\nconst location = process.env.SQLITE_DB_LOCATION || '/etc/todos/todo.db';\n\nlet db, dbAll, dbRun;\n\nfunction init() {\n    const dirName = require('path').dirname(location);\n    if (!fs.existsSync(dirName)) {\n        fs.mkdirSync(dirName, { recursive: true });\n    }\n\n    return new Promise((acc, rej) => {\n        db = new sqlite3.Database(location, err => {\n            if (err) return rej(err);\n\n            if (process.env.NODE_ENV !== 'test')\n                console.log(`Using sqlite database at ${location}`);\n\n            db.run(\n                'CREATE TABLE IF NOT EXISTS todo_items (id varchar(36), name varchar(255), completed boolean)',\n                (err, result) => {\n                    if (err) return rej(err);\n                    acc();\n                },\n            );\n        });\n    });\n}\n\nasync function teardown() {\n    return new Promise((acc, rej) => {\n        db.close(err => {\n            if (err) rej(err);\n            else acc();\n        });\n    });\n}\n\nasync function getItems() {\n    return new Promise((acc, rej) => {\n        db.all('SELECT * FROM todo_items', (err, rows) => {\n            if (err) return rej(err);\n            acc(\n                rows.map(item =>\n                    Object.assign({}, item, {\n                        completed: item.completed === 1,\n                    }),\n                ),\n            );\n        });\n    });\n}\n\nasync function getItem(id) {\n    return new Promise((acc, rej) => {\n        db.all('SELECT * FROM todo_items WHERE id=?', [id], (err, rows) => {\n            if (err) return rej(err);\n            acc(\n                rows.map(item =>\n                    Object.assign({}, item, {\n                        completed: item.completed === 1,\n                    }),\n                )[0],\n            );\n        });\n    });\n}\n\nasync function storeItem(item) {\n    return new Promise((acc, rej) => {\n        db.run(\n            'INSERT INTO todo_items (id, name, completed) VALUES (?, ?, ?)',\n            [item.id, item.name, item.completed ? 1 : 0],\n            err => {\n                if (err) return rej(err);\n                acc();\n            },\n        );\n    });\n}\n\nasync function updateItem(id, item) {\n    return new Promise((acc, rej) => {\n        db.run(\n            'UPDATE todo_items SET name=?, completed=? WHERE id = ?',\n            [item.name, item.completed ? 1 : 0, id],\n            err => {\n                if (err) return rej(err);\n                acc();\n            },\n        );\n    });\n} \n\nasync function removeItem(id) {\n    return new Promise((acc, rej) => {\n        db.run('DELETE FROM todo_items WHERE id = ?', [id], err => {\n            if (err) return rej(err);\n            acc();\n        });\n    });\n}\n\nmodule.exports = {\n    init,\n    teardown,\n    getItems,\n    getItem,\n    storeItem,\n    updateItem,\n    removeItem,\n};\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_023_update_sample_app/app/src/routes/addItem.js",
    "content": "const db = require('../persistence');\nconst uuid = require('uuid/v4');\n\nmodule.exports = async (req, res) => {\n    const item = {\n        id: uuid(),\n        name: req.body.name,\n        completed: false,\n    };\n\n    await db.storeItem(item);\n    res.send(item);\n};\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_023_update_sample_app/app/src/routes/deleteItem.js",
    "content": "const db = require('../persistence');\n\nmodule.exports = async (req, res) => {\n    await db.removeItem(req.params.id);\n    res.sendStatus(200);\n};\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_023_update_sample_app/app/src/routes/getItems.js",
    "content": "const db = require('../persistence');\n\nmodule.exports = async (req, res) => {\n    const items = await db.getItems();\n    res.send(items);\n};\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_023_update_sample_app/app/src/routes/updateItem.js",
    "content": "const db = require('../persistence');\n\nmodule.exports = async (req, res) => {\n    await db.updateItem(req.params.id, {\n        name: req.body.name,\n        completed: req.body.completed,\n    });\n    const item = await db.getItem(req.params.id);\n    res.send(item);\n};\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_023_update_sample_app/app/src/static/css/font-awesome/fa-brands-400.svg#fontawesome",
    "content": "<?xml version=\"1.0\" standalone=\"no\"?>\n<!--\nFont Awesome Free 5.10.2 by @fontawesome - https://fontawesome.com\nLicense - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n-->\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\" >\n<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\">\n<metadata>\nCreated by FontForge 20190801 at Thu Aug 22 14:41:09 2019\n By Robert Madole\nCopyright (c) Font Awesome\n</metadata>\n<defs>\n<font id=\"FontAwesome5Brands-Regular\" horiz-adv-x=\"448\" >\n  <font-face \n    font-family=\"Font Awesome 5 Brands Regular\"\n    font-weight=\"400\"\n    font-stretch=\"normal\"\n    units-per-em=\"512\"\n    panose-1=\"2 0 5 3 0 0 0 0 0 0\"\n    ascent=\"448\"\n    descent=\"-64\"\n    bbox=\"-0.200195 -66.9505 641.5 448.3\"\n    underline-thickness=\"25\"\n    underline-position=\"-50\"\n    unicode-range=\"U+0020-F89E\"\n  />\n    <missing-glyph />\n    <glyph glyph-name=\"twitter-square\" unicode=\"&#xf081;\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM351.1 257.2c12.8008 9.2998 24 20.8994 32.9004 34c-11.7998 -5.10059 -24.5996 -8.7998 -37.7998 -10.2002\nc13.5996 8.09961 23.8994 20.9004 28.7998 36.0996c-12.5996 -7.5 -26.7998 -13 -41.5996 -15.7998c-12 12.7998 -29 20.7002 -47.9004 20.7002c-40 0 -73.2998 -36.0996 -64 -80.5996c-54.4004 2.7998 -102.9 28.7998 -135.2 68.5996\nc-5.7002 -9.7002 -8.89941 -20.9004 -8.89941 -33.0996v-0.107422c0 -19.3584 13.0811 -43.7715 29.1992 -54.4932c-10.6992 0.400391 -20.8994 3.40039 -29.5996 8.2998v-0.799805c0 -31.8994 22.5 -58.2998 52.5 -64.3994\nc-10.4004 -2.7002 -19.5 -2.7002 -29.5996 -1.2002c8.2998 -26 32.5 -44.9004 61.2998 -45.5c-22.5 -17.6006 -50.7002 -28 -81.4004 -28c-5.39941 0 -10.5 0.200195 -15.7998 0.799805c29 -18.5996 63.5 -29.4004 100.7 -29.4004c120.6 0 186.6 99.9004 186.6 186.601\nc0 2.7998 0 5.7002 -0.200195 8.5z\" />\n    <glyph glyph-name=\"facebook-square\" unicode=\"&#xf082;\" \nd=\"M400 416c26.4961 0 48 -21.5039 48 -48v-352c0 -26.4961 -21.5039 -48 -48 -48h-137.25v152.31h57.7803l11 71.6904h-68.7803v46.5498c0 19.6104 9.61035 38.7305 40.4199 38.7305h31.2705v61s-28.3809 4.83984 -55.5205 4.83984\nc-56.6699 0 -93.6699 -34.3301 -93.6699 -96.4805v-54.6396h-63v-71.6904h63v-152.31h-137.25c-26.4961 0 -48 21.5039 -48 48v352c0 26.4961 21.5039 48 48 48h352z\" />\n    <glyph glyph-name=\"linkedin\" unicode=\"&#xf08c;\" \nd=\"M416 416c17.5996 0 32 -14.5 32 -32.2998v-383.4c0 -17.7998 -14.4004 -32.2998 -32 -32.2998h-384.1c-17.6006 0 -31.9004 14.5 -31.9004 32.2998v383.4c0 17.7998 14.2998 32.2998 31.9004 32.2998h384.1zM135.4 32h0.0996094v213.8h-66.5v-213.8h66.4004zM102.2 275\nc21.2998 0 38.5 17.2002 38.5 38.5c0 21.2002 -17.2998 38.5 -38.5 38.5c-21.2998 0 -38.5 -17.2998 -38.5 -38.5s17.2002 -38.5 38.5 -38.5zM384.3 32v117.2c0 57.5996 -12.5 101.899 -79.7002 101.899c-32.2998 0 -54 -17.6992 -62.8994 -34.5h-0.900391v29.2002h-63.7002\nv-213.8h66.4004v105.8c0 27.9004 5.2998 54.9004 39.9004 54.9004c34 0 34.5 -31.9004 34.5 -56.7002v-104h66.3994z\" />\n    <glyph glyph-name=\"github-square\" unicode=\"&#xf092;\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM277.3 32.2998c66 22 110.8 84.9004 110.7 158.3c0 91.8008 -74.4004 161.5 -166.2 161.5s-162 -69.6992 -162 -161.5\nc0 -73.3994 46.2002 -136.199 112.2 -158.3c8.5 -1.5 11.5 3.7002 11.5 8c0 4.10059 -0.200195 26.7002 -0.200195 40.6006c0 0 -46.3994 -10 -56.0996 19.6992c0 0 -7.60059 19.2002 -18.4004 24.2002c0 0 -15.0996 10.4004 1.10059 10.2002\nc0 0 16.3994 -1.2998 25.5 -17.0996c14.5 -25.6006 38.7998 -18.2002 48.2998 -13.9004c1.5 10.5996 5.7998 18 10.5996 22.2998c-37 4.10059 -74.2998 9.5 -74.2998 73.1006c0 18.1992 5 27.2998 15.5996 39c-1.7998 4.39941 -7.39941 22.0996 1.7002 45\nc13.9004 4.2998 45.7002 -17.9004 45.7002 -17.9004c13.2002 3.7002 27.5 5.59961 41.5996 5.59961c14.1006 0 28.4004 -1.89941 41.6006 -5.59961c0 0 31.7998 22.2002 45.7002 17.9004c9.09961 -23 3.39941 -40.7002 1.69922 -45\nc10.6006 -11.7002 17.1006 -20.8008 17.1006 -39c0 -63.9004 -39 -69 -76 -73.1006c6.09961 -5.2002 11.2998 -15.0996 11.2998 -30.7002c0 -22.2998 -0.200195 -49.8994 -0.200195 -55.2998c0 -4.2998 3.10059 -9.5 11.5 -8zM179.2 93.4004\nc-1.90039 -0.400391 -3.7002 0.399414 -3.90039 1.69922c-0.200195 1.5 1.10059 2.80078 3 3.2002c1.90039 0.200195 3.7002 -0.599609 3.90039 -1.89941c0.299805 -1.30078 -1 -2.60059 -3 -3zM169.7 94.2998c0 1.5 -1.7998 2.60059 -3.7002 2.40039\nc-2 0 -3.5 -1.10059 -3.5 -2.40039c0 -1.5 1.5 -2.59961 3.7002 -2.39941c2 0 3.5 1.09961 3.5 2.39941zM156 95.4004c-0.400391 -1.30078 -2.40039 -1.90039 -4.09961 -1.30078c-1.90039 0.400391 -3.2002 1.90039 -2.80078 3.2002\nc0.400391 1.2998 2.40039 1.90039 4.10059 1.5c2 -0.599609 3.2998 -2.09961 2.7998 -3.39941zM143.7 100.8c0.899414 0.799805 0.399414 2.7998 -0.900391 4.10059c-1.5 1.5 -3.39941 1.69922 -4.2998 0.599609c-1 -0.900391 -0.599609 -2.7998 0.900391 -4.09961\nc1.5 -1.5 3.39941 -1.7002 4.2998 -0.600586zM134.6 109.9c1.10059 0.799805 1.10059 2.59961 0 4.09961c-0.899414 1.5 -2.59961 2.2002 -3.69922 1.2998c-1.10059 -0.700195 -1.10059 -2.39941 0 -3.89941c1.09961 -1.5 2.7998 -2.10059 3.69922 -1.5zM128.1 119.6\nc0.900391 0.700195 0.700195 2.2002 -0.399414 3.5c-1.10059 1 -2.60059 1.5 -3.5 0.600586c-0.900391 -0.700195 -0.700195 -2.2002 0.399414 -3.5c1.10059 -1 2.60059 -1.5 3.5 -0.600586zM121.4 127c0.399414 0.799805 -0.200195 1.90039 -1.5 2.59961\nc-1.30078 0.5 -2.40039 0.200195 -2.80078 -0.399414c-0.399414 -0.900391 0.200195 -2 1.5 -2.60059c1.10059 -0.699219 2.40039 -0.5 2.80078 0.400391z\" />\n    <glyph glyph-name=\"twitter\" unicode=\"&#xf099;\" horiz-adv-x=\"512\" \nd=\"M459.37 296.284c0.325195 -4.54785 0.325195 -9.09766 0.325195 -13.6455c0 -138.72 -105.583 -298.558 -298.559 -298.558c-59.4521 0 -114.68 17.2188 -161.137 47.1055c8.44727 -0.973633 16.5684 -1.29883 25.3398 -1.29883\nc49.0547 0 94.2129 16.5684 130.274 44.832c-46.1318 0.975586 -84.792 31.1885 -98.1123 72.7725c6.49805 -0.974609 12.9951 -1.62402 19.8184 -1.62402c9.4209 0 18.8428 1.2998 27.6133 3.57324c-48.0811 9.74707 -84.1426 51.9795 -84.1426 102.984v1.29883\nc13.9688 -7.79688 30.2139 -12.6699 47.4307 -13.3184c-28.2637 18.8428 -46.7803 51.0049 -46.7803 87.3906c0 19.4922 5.19629 37.3604 14.2939 52.9541c51.6543 -63.6748 129.3 -105.258 216.364 -109.807c-1.62402 7.79688 -2.59863 15.918 -2.59863 24.04\nc0 57.8271 46.7822 104.934 104.934 104.934c30.2139 0 57.502 -12.6699 76.6709 -33.1367c23.7148 4.54785 46.4551 13.3193 66.5986 25.3398c-7.79785 -24.3662 -24.3662 -44.833 -46.1318 -57.8271c21.1172 2.27344 41.584 8.12207 60.4258 16.2432\nc-14.292 -20.791 -32.1611 -39.3086 -52.6279 -54.2529z\" />\n    <glyph glyph-name=\"facebook\" unicode=\"&#xf09a;\" horiz-adv-x=\"512\" \nd=\"M504 192c0 -123.78 -90.6904 -226.38 -209.25 -245v173.31h57.7803l11 71.6904h-68.7803v46.5498c0 19.6104 9.61035 38.7305 40.4102 38.7305h31.2803v61s-28.3809 4.83984 -55.5205 4.83984c-56.6699 0 -93.6699 -34.3301 -93.6699 -96.4805v-54.6396h-63v-71.6904h63\nv-173.31c-118.56 18.6201 -209.25 121.22 -209.25 245c0 137 111 248 248 248s248 -111 248 -248z\" />\n    <glyph glyph-name=\"github\" unicode=\"&#xf09b;\" horiz-adv-x=\"496\" \nd=\"M165.9 50.5996c0 -2 -2.30078 -3.59961 -5.2002 -3.59961c-3.2998 -0.299805 -5.60059 1.2998 -5.60059 3.59961c0 2 2.30078 3.60059 5.2002 3.60059c3 0.299805 5.60059 -1.2998 5.60059 -3.60059zM134.8 55.0996c0.700195 2 3.60059 3 6.2002 2.30078\nc3 -0.900391 4.90039 -3.2002 4.2998 -5.2002c-0.599609 -2 -3.59961 -3 -6.2002 -2c-3 0.599609 -5 2.89941 -4.2998 4.89941zM179 56.7998c2.90039 0.299805 5.59961 -1 5.90039 -2.89941c0.299805 -2 -1.7002 -3.90039 -4.60059 -4.60059\nc-3 -0.700195 -5.59961 0.600586 -5.89941 2.60059c-0.300781 2.2998 1.69922 4.19922 4.59961 4.89941zM244.8 440c138.7 0 251.2 -105.3 251.2 -244c0 -110.9 -67.7998 -205.8 -167.8 -239c-12.7002 -2.2998 -17.2998 5.59961 -17.2998 12.0996\nc0 8.2002 0.299805 49.9004 0.299805 83.6006c0 23.5 -7.7998 38.5 -17 46.3994c55.8994 6.30078 114.8 14 114.8 110.5c0 27.4004 -9.7998 41.2002 -25.7998 58.9004c2.59961 6.5 11.0996 33.2002 -2.60059 67.9004c-20.8994 6.59961 -69 -27 -69 -27\nc-20 5.59961 -41.5 8.5 -62.7998 8.5s-42.7998 -2.90039 -62.7998 -8.5c0 0 -48.0996 33.5 -69 27c-13.7002 -34.6006 -5.2002 -61.4004 -2.59961 -67.9004c-16 -17.5996 -23.6006 -31.4004 -23.6006 -58.9004c0 -96.1992 56.4004 -104.3 112.3 -110.5\nc-7.19922 -6.59961 -13.6992 -17.6992 -16 -33.6992c-14.2998 -6.60059 -51 -17.7002 -72.8994 20.8994c-13.7002 23.7998 -38.6006 25.7998 -38.6006 25.7998c-24.5 0.300781 -1.59961 -15.3994 -1.59961 -15.3994c16.4004 -7.5 27.7998 -36.6006 27.7998 -36.6006\nc14.7002 -44.7998 84.7002 -29.7998 84.7002 -29.7998c0 -21 0.299805 -55.2002 0.299805 -61.3994c0 -6.5 -4.5 -14.4004 -17.2998 -12.1006c-99.7002 33.4004 -169.5 128.3 -169.5 239.2c0 138.7 106.1 244 244.8 244zM97.2002 95.0996\nc1.2998 1.30078 3.59961 0.600586 5.2002 -1c1.69922 -1.89941 2 -4.19922 0.699219 -5.19922c-1.2998 -1.30078 -3.59961 -0.600586 -5.19922 1c-1.7002 1.89941 -2 4.19922 -0.700195 5.19922zM86.4004 103.2c0.699219 1 2.2998 1.2998 4.2998 0.700195\nc2 -1 3 -2.60059 2.2998 -3.90039c-0.700195 -1.40039 -2.7002 -1.7002 -4.2998 -0.700195c-2 1 -3 2.60059 -2.2998 3.90039zM118.8 67.5996c1.2998 1.60059 4.2998 1.30078 6.5 -1c2 -1.89941 2.60059 -4.89941 1.2998 -6.19922\nc-1.2998 -1.60059 -4.19922 -1.30078 -6.5 1c-2.2998 1.89941 -2.89941 4.89941 -1.2998 6.19922zM107.4 82.2998c1.59961 1.2998 4.19922 0.299805 5.59961 -2c1.59961 -2.2998 1.59961 -4.89941 0 -6.2002c-1.2998 -1 -4 0 -5.59961 2.30078\nc-1.60059 2.2998 -1.60059 4.89941 0 5.89941z\" />\n    <glyph glyph-name=\"pinterest\" unicode=\"&#xf0d2;\" horiz-adv-x=\"496\" \nd=\"M496 192c0 -137 -111 -248 -248 -248c-25.5996 0 -50.2002 3.90039 -73.4004 11.0996c10.1006 16.5 25.2002 43.5 30.8008 65c3 11.6006 15.3994 59 15.3994 59c8.10059 -15.3994 31.7002 -28.5 56.7998 -28.5c74.8008 0 128.7 68.8008 128.7 154.301\nc0 81.8994 -66.8994 143.199 -152.899 143.199c-107 0 -163.9 -71.7998 -163.9 -150.1c0 -36.4004 19.4004 -81.7002 50.2998 -96.0996c4.7002 -2.2002 7.2002 -1.2002 8.2998 3.2998c0.800781 3.39941 5 20.2998 6.90039 28.0996\nc0.599609 2.5 0.299805 4.7002 -1.7002 7.10059c-10.0996 12.5 -18.2998 35.2998 -18.2998 56.5996c0 54.7002 41.4004 107.6 112 107.6c60.9004 0 103.6 -41.5 103.6 -100.899c0 -67.1006 -33.8994 -113.601 -78 -113.601c-24.2998 0 -42.5996 20.1006 -36.6992 44.8008\nc7 29.5 20.5 61.2998 20.5 82.5996c0 19 -10.2002 34.9004 -31.4004 34.9004c-24.9004 0 -44.9004 -25.7002 -44.9004 -60.2002c0 -22 7.40039 -36.7998 7.40039 -36.7998s-24.5 -103.801 -29 -123.2c-5 -21.4004 -3 -51.6006 -0.900391 -71.2002\nc-92.1992 36.0996 -157.6 125.9 -157.6 231c0 137 111 248 248 248s248 -111 248 -248z\" />\n    <glyph glyph-name=\"pinterest-square\" unicode=\"&#xf0d3;\" \nd=\"M448 368v-352c0 -26.5 -21.5 -48 -48 -48h-245.6c9.7998 16.4004 22.3994 40 27.3994 59.2998c3 11.5 15.2998 58.4004 15.2998 58.4004c8 -15.2998 31.4004 -28.2002 56.3008 -28.2002c74.0996 0 127.399 68.0996 127.399 152.7\nc0 81.0996 -66.2002 141.8 -151.399 141.8c-106 0 -162.2 -71.0996 -162.2 -148.6c0 -36 19.2002 -80.8008 49.7998 -95.1006c4.7002 -2.2002 7.09961 -1.2002 8.2002 3.2998c0.799805 3.40039 5 20.1006 6.7998 27.8008c0.599609 2.5 0.299805 4.59961 -1.7002 7\nc-10.0996 12.2998 -18.2998 34.8994 -18.2998 56c0 54.1992 41 106.6 110.9 106.6c60.2998 0 102.6 -41.0996 102.6 -99.9004c0 -66.3994 -33.5 -112.399 -77.2002 -112.399c-24.0996 0 -42.0996 19.8994 -36.3994 44.3994c6.89941 29.2002 20.2998 60.7002 20.2998 81.8008\nc0 53 -75.5 45.6992 -75.5 -25c0 -21.7002 7.2998 -36.5 7.2998 -36.5c-31.4004 -132.801 -36.0996 -134.5 -29.5996 -192.601l2.19922 -0.799805h-88.5996c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48z\" />\n    <glyph glyph-name=\"google-plus-square\" unicode=\"&#xf0d4;\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM164 92c57.7002 0 96 40.5 96 97.5996c0 6.5 -0.599609 11.6006 -1.59961 16.6006h-94.4004v-34.4004h56.9004\nc-2.40039 -14.5996 -17.2002 -43.0996 -56.8008 -43.0996c-34.0996 0 -61.8994 28.2998 -61.8994 63.2002c0 35 27.7998 63.1992 61.8994 63.1992c19.5 0 32.4004 -8.2998 39.8008 -15.3994l27.0996 26.0996c-17.5 16.4004 -40 26.2002 -67 26.2002\nc-55.2998 0 -100 -44.7002 -100 -100s44.7002 -100 100 -100zM384 173.8v29.2002h-29v29h-29.2002v-29h-29v-29.2002h29v-29h29.2002v29h29z\" />\n    <glyph glyph-name=\"google-plus-g\" unicode=\"&#xf0d5;\" horiz-adv-x=\"640\" \nd=\"M386.061 219.504c1.83398 -9.69238 3.14355 -19.3838 3.14355 -31.9561c0 -109.753 -73.6055 -187.548 -184.404 -187.548c-106.084 0 -192 85.915 -192 192s85.916 192 192 192c51.8643 0 95.083 -18.8594 128.611 -50.292l-52.126 -50.0303\nc-14.1455 13.6211 -39.0283 29.5996 -76.4854 29.5996c-65.4834 0 -118.92 -54.2217 -118.92 -121.277s53.4365 -121.277 118.92 -121.277c75.9609 0 104.514 54.7451 108.965 82.7734h-108.965v66.0088h181.261v-0.000976562zM571.467 213.067h55.7334v-56.001h-55.7334\nv-55.7334h-56.001v55.7334h-55.7324v56.001h55.7324v55.7324h56.001v-55.7324z\" />\n    <glyph glyph-name=\"linkedin-in\" unicode=\"&#xf0e1;\" \nd=\"M100.28 0h-92.8799v299.1h92.8799v-299.1zM53.79 339.9c-29.7002 0 -53.79 24.5996 -53.79 54.2998c0 29.6914 24.0977 53.79 53.79 53.79s53.79 -24.0986 53.79 -53.79c0 -29.7002 -24.0996 -54.2998 -53.79 -54.2998zM447.9 0h-92.6807v145.6\nc0 34.7002 -0.700195 79.2002 -48.29 79.2002c-48.29 0 -55.6895 -37.7002 -55.6895 -76.7002v-148.1h-92.7803v299.1h89.0801v-40.7998h1.2998c12.4004 23.5 42.6904 48.2998 87.8799 48.2998c94 0 111.28 -61.8994 111.28 -142.3v-164.3h-0.0996094z\" />\n    <glyph glyph-name=\"github-alt\" unicode=\"&#xf113;\" horiz-adv-x=\"480\" \nd=\"M186.1 119.3c0 -20.8994 -10.8994 -55.0996 -36.6992 -55.0996c-25.8008 0 -36.7002 34.2002 -36.7002 55.0996c0 20.9004 10.8994 55.1006 36.7002 55.1006c25.7998 0 36.6992 -34.2002 36.6992 -55.1006zM480 169.8c0 -31.8994 -3.2002 -65.7002 -17.5 -95\nc-37.9004 -76.5996 -142.1 -74.7998 -216.7 -74.7998c-75.7998 0 -186.2 -2.7002 -225.6 74.7998c-14.6006 29 -20.2002 63.1006 -20.2002 95c0 41.9004 13.9004 81.5 41.5 113.601c-5.2002 15.7998 -7.7002 32.3994 -7.7002 48.7998\nc0 21.5 4.90039 32.2998 14.6006 51.7998c45.2998 0 74.2998 -9 108.8 -36c29 6.90039 58.7998 10 88.7002 10c27 0 54.1992 -2.90039 80.3994 -9.2002c34 26.7002 63 35.2002 107.8 35.2002c9.80078 -19.5 14.6006 -30.2998 14.6006 -51.7998\nc0 -16.4004 -2.60059 -32.7002 -7.7002 -48.2002c27.5 -32.4004 39 -72.2998 39 -114.2zM415.7 119.3c0 43.9004 -26.7002 82.6006 -73.5 82.6006c-18.9004 0 -37 -3.40039 -56 -6c-14.9004 -2.30078 -29.7998 -3.2002 -45.1006 -3.2002\nc-15.1992 0 -30.0996 0.899414 -45.0996 3.2002c-18.7002 2.59961 -37 6 -56 6c-46.7998 0 -73.5 -38.7002 -73.5 -82.6006c0 -87.7998 80.4004 -101.3 150.4 -101.3h48.1992c70.3008 0 150.601 13.4004 150.601 101.3zM333.1 174.4\nc25.8008 0 36.7002 -34.2002 36.7002 -55.1006c0 -20.8994 -10.8994 -55.0996 -36.7002 -55.0996c-25.7998 0 -36.6992 34.2002 -36.6992 55.0996c0 20.9004 10.8994 55.1006 36.6992 55.1006z\" />\n    <glyph glyph-name=\"maxcdn\" unicode=\"&#xf136;\" horiz-adv-x=\"512\" \nd=\"M461.1 5.2998h-97.3994l51.8994 242.7c2.30078 10.2002 0.900391 19.5 -4.39941 25.7002c-5 6.09961 -13.7002 9.59961 -24.2002 9.59961h-49.2998l-59.5 -278h-97.4004l59.5 278h-83.3994l-59.5 -278h-97.4004l59.5 278l-44.5996 95.4004h372.1\nc39.4004 0 75.2998 -16.2998 98.2998 -44.9004c23.2998 -28.5996 31.7998 -67.3994 23.6006 -105.899z\" />\n    <glyph glyph-name=\"html5\" unicode=\"&#xf13b;\" horiz-adv-x=\"384\" \nd=\"M0 416h384l-34.9004 -395.8l-157.6 -52.2002l-156.6 52.2002zM308.2 288.1l4.39941 47.7002h-241.1l12.7998 -145.6h166.9l-6 -62.2002l-53.7002 -14.5l-53.5 14.5l-3.5 38.0996h-47.7002l6 -75.7998l98.7002 -27.2998h1.09961v0.299805l97.9004 27l13.5996 148.4h-175.6\nl-4.09961 49.3994h183.8z\" />\n    <glyph glyph-name=\"css3\" unicode=\"&#xf13c;\" horiz-adv-x=\"512\" \nd=\"M480 416l-64 -368l-223.3 -80l-192.7 80l19.5996 94.7998h82l-8 -40.5996l116.4 -44.4004l134.1 44.4004l18.8008 97.0996h-333.4l16 82h333.7l10.5 52.7002h-333.4l16.2998 82h407.4z\" />\n    <glyph glyph-name=\"btc\" unicode=\"&#xf15a;\" horiz-adv-x=\"384\" \nd=\"M310.204 205.362c46.0059 -11.0283 74.9971 -38.4443 69.3262 -99.8906c-7.24805 -76.5723 -61.5967 -97.0547 -142.896 -101.467v-68.0049h-48.5273v66.7451c-12.29 0 -25.21 0 -38.4443 0.314453v-67.0596h-48.5283v68.0049s-8.88867 0.31543 -97.3701 0.31543\nl9.76758 57.666c34.7305 -0.614258 50.3301 -3.4209 53.2549 16.0703v217.43c-4.60645 24.5664 -24.709 22.1045 -63.0234 21.4268v51.6777c58.748 -0.275391 79.5283 -0.539062 97.3701 0v79.4092h48.5283v-77.833c12.9189 0.31543 25.8389 0.629883 38.4443 0.629883\nv77.2031h48.5273v-79.4092c62.3926 -5.35547 109.492 -24.5781 114.851 -81.9287c4.09668 -41.9102 -13.5508 -67.1201 -41.2803 -81.2998zM150.608 313.447v-96.7402c27.416 0 113.126 -6.30273 113.126 48.2119c0 57.0352 -85.7109 48.5283 -113.126 48.5283z\nM150.608 61.6709c32.7715 0 133.126 -6.93262 133.127 53.2529c0 62.3936 -100.355 53.2549 -133.127 53.2549v-106.508z\" />\n    <glyph glyph-name=\"youtube\" unicode=\"&#xf167;\" horiz-adv-x=\"576\" \nd=\"M549.655 323.917c11.4121 -42.8672 11.4121 -132.305 11.4121 -132.305s0 -89.4385 -11.4121 -132.306c-6.28125 -23.6494 -24.7871 -41.5 -48.2842 -47.8203c-42.5908 -11.4863 -213.371 -11.4863 -213.371 -11.4863s-170.78 0 -213.371 11.4863\nc-23.4971 6.32031 -42.0029 24.1709 -48.2842 47.8203c-11.4121 42.8672 -11.4121 132.306 -11.4121 132.306s0 89.4375 11.4121 132.305c6.28125 23.6504 24.7871 42.2754 48.2842 48.5967c42.5908 11.4863 213.371 11.4863 213.371 11.4863s170.781 0 213.371 -11.4863\nc23.4971 -6.32031 42.0029 -24.9463 48.2842 -48.5967zM232.145 110.409l142.739 81.2012l-142.739 81.2051v-162.406z\" />\n    <glyph glyph-name=\"xing\" unicode=\"&#xf168;\" horiz-adv-x=\"384\" \nd=\"M162.7 238c-1.7998 -3.2998 -25.2002 -44.4004 -70.1006 -123.5c-4.89941 -8.2998 -10.7998 -12.5 -17.6992 -12.5h-65.1006c-7.7002 0 -12.0996 7.5 -8.5 14.4004l69 121.3c0.200195 0 0.200195 0.0996094 0 0.299805l-43.8994 75.5996\nc-4.30078 7.80078 0.299805 14.1006 8.5 14.1006h65.0996c7.2998 0 13.2998 -4.10059 18 -12.2002zM382.6 401.9l-144 -253v-0.300781l91.6006 -166.6c3.89941 -7.09961 0.200195 -14.0996 -8.5 -14.0996h-65.2002c-7.59961 0 -13.5996 4 -18 12.1992l-92.4004 168.5\nc3.30078 5.80078 51.5 90.8008 144.801 255.2c4.59961 8.10059 10.3994 12.2002 17.5 12.2002h65.6992c8 0 12.3008 -6.7002 8.5 -14.0996z\" />\n    <glyph glyph-name=\"xing-square\" unicode=\"&#xf169;\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM140.4 127.8c4.89941 0 9.09961 2.90039 12.5996 9.10059c32.0996 56.5 48.7998 85.8994 50.0996 88.1992l-31.8994 55.3008\nc-3.40039 5.7998 -7.7002 8.69922 -12.9004 8.69922h-46.5996c-5.7998 0 -9 -4.5 -6 -10.0996l31.3994 -54c0.100586 -0.0996094 0.100586 -0.200195 0 -0.200195l-49.2998 -86.7002c-2.7002 -5 0.5 -10.2998 6 -10.2998h46.6006zM360.1 341.9\nc2.80078 5.2998 -0.299805 10.0996 -6 10h-46.8994c-5.10059 0 -9.2002 -2.90039 -12.5 -8.7002c-66.6006 -117.4 -101.101 -178.2 -103.4 -182.3l66 -120.301c3.2002 -5.7998 7.40039 -8.69922 12.9004 -8.69922h46.5996c6.10059 0 8.7998 5 6 10.0996l-65.5 119v0.200195z\n\" />\n    <glyph glyph-name=\"dropbox\" unicode=\"&#xf16b;\" horiz-adv-x=\"528\" \nd=\"M264.4 331.7l-132 -84.2998l132 -84.3008l-132 -84.2998l-132.4 85.1006l132.3 84.2998l-132.3 83.5l132.3 84.2998zM131.6 52.2998l132 84.2998l132 -84.2998l-132 -84.2998zM264.4 163.9l132 84.2998l-132 83.5996l131.3 84.2002l132.3 -84.2998l-132.3 -84.2998\nl132.3 -84.2002l-132.3 -84.2998z\" />\n    <glyph glyph-name=\"stack-overflow\" unicode=\"&#xf16c;\" horiz-adv-x=\"384\" \nd=\"M290.7 137l-8.2002 -39l-195.7 41l8.2002 39.2998zM341.7 224l-25.5 -30.7998l-153.5 128.3l25.5 30.7998zM310.5 184.3l-16.7998 -36.2998l-181.2 84.5l16.7002 36.5zM262 416l119.3 -160.3l-32 -24l-119.3 160.3zM282.5 88v-39.7002h-200v39.7002h200zM322.2 8v120h40\nv-160h-359.5v160h40v-120h279.5z\" />\n    <glyph glyph-name=\"instagram\" unicode=\"&#xf16d;\" \nd=\"M224.1 307c63.6006 0 114.9 -51.2998 114.9 -114.9c0 -63.5996 -51.2998 -114.899 -114.9 -114.899c-63.5996 0 -114.899 51.2998 -114.899 114.899c0 63.6006 51.2998 114.9 114.899 114.9zM224.1 117.4c41.1006 0 74.7002 33.5 74.7002 74.6992\nc0 41.2002 -33.5 74.7002 -74.7002 74.7002c-41.1992 0 -74.6992 -33.5 -74.6992 -74.7002c0 -41.1992 33.5996 -74.6992 74.6992 -74.6992zM370.5 311.7c0 -14.9004 -12 -26.7998 -26.7998 -26.7998c-14.9004 0 -26.7998 12 -26.7998 26.7998s12 26.7998 26.7998 26.7998\ns26.7998 -12 26.7998 -26.7998zM446.6 284.5c2.10059 -37 2.10059 -147.8 0 -184.8c-1.7998 -35.9004 -10 -67.7002 -36.1992 -93.9004c-26.2002 -26.2998 -58 -34.5 -93.9004 -36.2002c-37 -2.09961 -147.9 -2.09961 -184.9 0\nc-35.8994 1.80078 -67.5996 10 -93.8994 36.2002s-34.5 58 -36.2002 93.9004c-2.09961 37 -2.09961 147.899 0 184.899c1.7998 35.9004 9.90039 67.7002 36.2002 93.9004s58.0996 34.4004 93.8994 36.0996c37 2.10059 147.9 2.10059 184.9 0\nc35.9004 -1.7998 67.7002 -10 93.9004 -36.1992c26.2998 -26.2002 34.5 -58 36.1992 -93.9004zM398.8 60c11.7002 29.4004 9 99.5 9 132.1c0 32.6006 2.7002 102.601 -9 132.101c-7.89941 19.7002 -23 34.7998 -42.5996 42.5996c-29.4004 11.6006 -99.5 9 -132.101 9\nc-32.5996 0 -102.6 2.7002 -132.1 -9c-19.7002 -7.89941 -34.7998 -23 -42.5996 -42.5996c-11.6006 -29.4004 -9 -99.5 -9 -132.101c0 -32.5996 -2.7002 -102.6 9 -132.1c7.89941 -19.7002 23 -34.7998 42.5996 -42.5996c29.4004 -11.6006 99.5 -9 132.1 -9\nc32.6006 0 102.601 -2.7002 132.101 9c19.7002 7.89941 34.7998 23 42.5996 42.5996z\" />\n    <glyph glyph-name=\"flickr\" unicode=\"&#xf16e;\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM144.5 129c35.0996 0 63.5 28.4004 63.5 63.5s-28.4004 63.5 -63.5 63.5s-63.5 -28.4004 -63.5 -63.5s28.4004 -63.5 63.5 -63.5z\nM303.5 129c35.0996 0 63.5 28.4004 63.5 63.5s-28.4004 63.5 -63.5 63.5s-63.5 -28.4004 -63.5 -63.5s28.4004 -63.5 63.5 -63.5z\" />\n    <glyph glyph-name=\"adn\" unicode=\"&#xf170;\" horiz-adv-x=\"496\" \nd=\"M248 280.5l64.9004 -98.7998h-129.801zM496 192c0 -136.9 -111.1 -248 -248 -248s-248 111.1 -248 248s111.1 248 248 248s248 -111.1 248 -248zM396.2 109.3l-148.2 223.2l-148.2 -223.2h30.4004l33.5996 51.7002h168.601l33.5996 -51.7002h30.2002z\" />\n    <glyph glyph-name=\"bitbucket\" unicode=\"&#xf171;\" horiz-adv-x=\"512\" \nd=\"M22.2002 416l466.8 -0.200195c0.776367 -0.0107422 2.03027 -0.100586 2.7998 -0.200195c7.39648 -1.21875 13.3984 -8.29102 13.3984 -15.7871c0 -0.697266 -0.0888672 -1.82324 -0.198242 -2.5127l-67.9004 -416.8\nc-1.2168 -7.39746 -8.29004 -13.4014 -15.7871 -13.4014c-0.0585938 0 -0.154297 0.000976562 -0.212891 0.000976562h-325.699c-10.1016 0.0820312 -19.6445 8.23535 -21.3008 18.2002l-67.8994 412.101c-0.0966797 0.769531 -0.186523 2.02344 -0.200195 2.7998\nc0.108398 8.72168 7.27539 15.8008 15.999 15.8008c0.0556641 0 0.145508 0 0.201172 -0.000976562zM308.1 118.2l25.2002 147h-157.3l28.0996 -147h104z\" />\n    <glyph glyph-name=\"tumblr\" unicode=\"&#xf173;\" horiz-adv-x=\"320\" \nd=\"M309.8 -32.2998c-13.5996 -14.5 -50 -31.7002 -97.3994 -31.7002c-120.801 0 -147 88.7998 -147 140.6v144h-47.5c-5.5 0 -10 4.5 -10 10v68c0 7.2002 4.5 13.6006 11.2998 16c62 21.8008 81.5 76 84.2998 117.101c0.799805 11 6.5 16.2998 16.0996 16.2998h70.9004\nc5.5 0 10 -4.5 10 -10v-115.2h83c5.5 0 10 -4.39941 10 -9.89941v-81.7002c0 -5.5 -4.5 -10 -10 -10h-83.4004v-133.2c0 -34.2002 23.7002 -53.5996 68 -35.7998c4.80078 1.89941 9 3.2002 12.7002 2.2002c3.5 -0.900391 5.7998 -3.40039 7.40039 -7.90039l22 -64.2998\nc1.7998 -5 3.2998 -10.6006 -0.400391 -14.5z\" />\n    <glyph glyph-name=\"tumblr-square\" unicode=\"&#xf174;\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM317.7 51.7998c2.2998 2.40039 1.2998 5.90039 0.299805 9.10059l-13.7998 40.1992c-1 2.80078 -2.40039 4.40039 -4.60059 4.90039\nc-2.39941 0.599609 -5 -0.200195 -8 -1.40039c-27.6992 -11.0996 -42.5 1 -42.5 22.4004v83.2998h52.1006c3.39941 0 6.2002 2.7998 6.2002 6.2002v51.0996c0 3.40039 -2.80078 6.2002 -6.2002 6.2002h-51.9004v72c0 3.40039 -2.7998 6.2002 -6.2002 6.2002h-44.2998\nc-5.89941 0 -9.5 -3.2998 -10 -10.2002c-1.7998 -25.7002 -13.8994 -59.5 -52.7002 -73.2002c-4.2998 -1.5 -7.09961 -5.5 -7.09961 -10v-42.5c0 -3.39941 2.7998 -6.19922 6.2002 -6.19922h29.7002v-90c0 -32.4004 16.3994 -87.9004 91.8994 -87.9004\nc29.7002 0 52.4004 10.7002 60.9004 19.7998z\" />\n    <glyph glyph-name=\"apple\" unicode=\"&#xf179;\" horiz-adv-x=\"384\" \nd=\"M318.7 179.3c0 -1.89941 -3.5 -61.2002 61.7002 -91.8994c-12.2002 -36.8008 -54 -118.601 -102.601 -119.301c-28.0996 0 -44.5996 17.9004 -76.3994 17.9004c-32.8008 0 -50.6006 -17.2998 -75.8008 -17.9004c-48.1992 -1.5 -94.3994 88.5 -107.199 125.2\nc-9.60059 27.9336 -14.4004 55 -14.4004 81.2002c0 88.7002 59.2998 132.3 115.1 133.2c27 0 61.4004 -19.7002 76.4004 -19.7002c14.2002 0 53 23.5 88.5 20.7002c37.5 -2.90039 65.9004 -17.7002 84.7002 -44.6006c-33.6006 -20.3994 -50.2002 -48.0996 -50 -84.7998z\nM262.1 343.5c-19.5996 -22.9004 -43.3994 -36.2998 -69.5 -34.2998c-2.19922 27.5996 8.10059 52.0996 25.6006 71.8994c15.8994 18.5 43.7998 33.5 67.8994 34.9004c0.800781 -10.5996 3.30078 -40.0996 -24 -72.5z\" />\n    <glyph glyph-name=\"windows\" unicode=\"&#xf17a;\" \nd=\"M0 354.3l183.6 25.2998v-177.399h-183.6v152.1zM0 29.7002v149.899h183.6v-175.199zM203.8 1.7002v177.899h244.2v-211.6zM203.8 382.3l244.2 33.7002v-213.8h-244.2v180.1z\" />\n    <glyph glyph-name=\"android\" unicode=\"&#xf17b;\" \nd=\"M89.5996 243.5v-115.8c0 -15.4004 -12.0996 -27.7002 -27.5 -27.7002c-15.2998 0 -30.0996 12.4004 -30.0996 27.7002v115.8c0 15.0996 14.7998 27.5 30.0996 27.5c15.1006 0 27.5 -12.4004 27.5 -27.5zM100.4 86.5v179.4h247.3v-179.4\nc0 -16.4004 -13.2002 -29.5996 -29.4004 -29.5996h-20.2002v-61.1006c0 -36.7998 -55.5 -36.7002 -55.5 0v61.1006h-37.1992v-61.1006c0 -36.5996 -55.2002 -36.8994 -55.2002 0l-0.299805 61.1006h-19.9004c-16.4004 0 -29.5996 13.1992 -29.5996 29.5996zM348.4 275.6\nh-249.101c0 42.8008 25.6006 80 63.6006 99.4004l-19.1006 35.2998c-2.7998 4.90039 4.2998 8 6.7002 3.7998l19.4004 -35.5996c34.8994 15.5 75 14.7002 108.3 0l19.2998 35.5c2.5 4.2998 9.5 1.09961 6.7002 -3.7998l-19.1006 -35.2002\nc37.7002 -19.4004 63.3008 -56.5996 63.3008 -99.4004zM177.7 331.1c0 5.7002 -4.60059 10.5 -10.5 10.5c-5.7002 0 -10.2002 -4.7998 -10.2002 -10.5c0 -5.69922 4.59961 -10.5 10.2002 -10.5c5.89941 0 10.5 4.80078 10.5 10.5zM291.1 331.1\nc0 5.7002 -4.59961 10.5 -10.1992 10.5c-5.90039 0 -10.5 -4.7998 -10.5 -10.5c0 -5.69922 4.59961 -10.5 10.5 -10.5c5.59961 0 10.1992 4.80078 10.1992 10.5zM385.9 271c15.2998 0 30.0996 -12.0996 30.0996 -27.5v-115.8\nc0 -15.2998 -14.7002 -27.7002 -30.0996 -27.7002c-15.1006 0 -27.5 12.2998 -27.5 27.7002v115.8c0 15.4004 12.3994 27.5 27.5 27.5z\" />\n    <glyph glyph-name=\"linux\" unicode=\"&#xf17c;\" \nd=\"M220.8 324.7c-1.09961 0.599609 -3.09961 0.399414 -3.39941 1.7002c-0.200195 0.399414 0.199219 0.899414 0.599609 1.09961c1.59961 0.900391 3.7998 0.599609 5.5 -0.0996094c1.2998 -0.600586 3.40039 -1.5 3.2002 -2.90039\nc-0.100586 -1.09961 -1.7998 -1.5 -2.90039 -1.5c-1.2002 0 -2 1.2002 -3 1.7002zM198.9 323c-1 -0.0996094 -2.7002 0.400391 -2.80078 1.40039c-0.199219 1.39941 1.90039 2.2998 3.2002 2.89941c1.7002 0.700195 3.90039 1 5.5 0.100586\nc0.400391 -0.200195 0.799805 -0.700195 0.600586 -1.10059c-0.400391 -1.2002 -2.40039 -1 -3.5 -1.59961c-1 -0.5 -1.80078 -1.7002 -3 -1.7002zM420 44.2002c11.0996 -12.4004 15.9004 -21.5 15.5 -29.7002c-0.5 -8.2002 -6.5 -13.7998 -13.9004 -18.2998\nc-14.8994 -9 -37.2998 -15.7998 -50.8994 -32.2002c-14.2002 -16.9004 -31.7002 -26.5996 -48.2998 -27.9004c-16.5 -1.2998 -32 6.30078 -40.3008 23v0.100586c-1.09961 2.09961 -1.89941 4.39941 -2.5 6.7002c-21.5 -1.2002 -40.1992 5.2998 -55.0996 4.09961\nc-22 -1.2002 -35.7998 -6.5 -48.2998 -6.59961c-4.7998 -10.6006 -14.2998 -17.6006 -25.9004 -20.2002c-16 -3.7002 -36.0996 0 -55.8994 10.3994c-18.5 9.80078 -42 8.90039 -59.3008 12.5c-8.69922 1.80078 -16.2998 5 -20.0996 12.3008\nc-3.7002 7.2998 -3 17.2998 2.2002 31.6992c1.7002 5.10059 0.399414 12.7002 -0.799805 20.8008c-0.600586 3.89941 -1.2002 7.89941 -1.2002 11.7998c0 4.2998 0.700195 8.5 2.7998 12.3994c4.5 8.5 11.7998 12.1006 18.5 14.5c6.7002 2.40039 12.7998 4 17 8.30078\nc5.2002 5.5 10.0996 14.3994 16.5996 20.1992c-2.59961 17.2002 0.200195 35.4004 6.2002 53.3008c12.6006 37.8994 39.2002 74.1992 58.1006 96.6992c16.0996 22.9004 20.7998 41.3008 22.5 64.7002c1.09961 31.7998 -24.5 135.4 77.8994 135.2\nc80.9004 -0.0996094 76.2998 -85.4004 75.7998 -131.3c-0.299805 -30.1006 16.3008 -50.5 33.4004 -72c15.2002 -18 35.0996 -44.2998 46.5 -74.4004c9.2998 -24.5996 12.9004 -51.7998 3.7002 -79.0996c1.39941 -0.5 2.7998 -1.2002 4.09961 -2\nc1.40039 -0.799805 2.7002 -1.7998 4 -2.90039c6.60059 -5.59961 8.7002 -14.2998 10.5 -22.3994c1.90039 -8.10059 3.60059 -15.7002 7.2002 -19.7002zM223.7 360.7c-3.2002 -7.2002 -3.90039 -14.9004 -2.90039 -21.7998c3.60059 -0.900391 8.90039 -2.40039 13 -4.40039\nc-2.09961 12.2002 4.5 23.5 11.7998 23c8.90039 -0.299805 13.9004 -15.5 9.10059 -27.2998c-0.799805 -1.90039 -2.7998 -3.40039 -3.90039 -4.60059c6.7002 -2.2998 11 -4.09961 12.6006 -4.89941c7.89941 9.5 10.7998 26.2002 4.2998 40.3994\nc-9.7998 21.4004 -34.2002 21.8008 -44 -0.399414zM183 372.2c-18.9004 0 -24 -37.5 -8.40039 -52.1006c7.80078 5.7002 6.90039 4.7002 5.90039 5.5c-8 6.90039 -6.59961 27.4004 1.7998 28.1006c6.2998 0.5 10.7998 -10.7002 9.60059 -19.6006\nc3.09961 2.10059 6.69922 3.60059 10.1992 4.60059c1.7002 19.2998 -9 33.5 -19.0996 33.5zM169.4 311.5c-4.2002 -3.2998 -5.60059 -7.40039 -4.2002 -12.2998c1.5 -4.90039 6.09961 -10.5 14.7002 -15.2998c7.7998 -4.60059 12 -11.5 20 -15\nc2.59961 -1.10059 5.69922 -1.90039 9.59961 -2.10059c18.4004 -1.09961 27.0996 11.2998 38.2002 14.9004c11.7002 3.7002 20.0996 11 22.7002 18.0996c3.19922 8.5 -2.10059 14.7002 -10.5 18.2002c-11.3008 4.90039 -16.3008 5.2002 -22.6006 9.2998\nc-10.2998 6.60059 -18.7998 8.90039 -25.8994 8.90039c-14.4004 0 -23.2002 -9.7998 -27.9004 -14.2002c-0.5 -0.5 -7.90039 -5.90039 -14.0996 -10.5zM172.7 -22.5c2.09961 20.5 -31.5 49 -41 68.9004l-19.6006 35.5996c-6.7998 9.2002 -13.7998 14.7998 -21.8994 16\nc-7.7002 1.2002 -12.6006 -1.40039 -17.7002 -6.90039c-4.7998 -5.09961 -8.7998 -12.2998 -14.2998 -18c-7.7998 -6.5 -9.2998 -6.19922 -19.6006 -9.89941c-6.2998 -2.2002 -11.2998 -4.60059 -14.7998 -11.2998c-2.7002 -5 -2.09961 -12.2002 -0.899414 -20\nc1.19922 -7.90039 3 -16.3008 0.599609 -23.9004v-0.200195c-5 -13.7002 -5 -21.7002 -2.59961 -26.3994c7.89941 -15.4004 46.5996 -6.10059 76.5 -21.9004c31.3994 -16.4004 72.5996 -17.0996 75.2998 18zM171.3 3.40039c37.6006 -25.7002 82.2002 -15.7002 114.3 7.19922\nc3.2002 11 6.30078 21.3008 6.80078 29c0.799805 15.2002 1.59961 28.7002 4.39941 39.9004c3.10059 12.5996 9.2998 23.0996 21.4004 27.2998c2.2998 21.1006 18.7002 21.1006 38.2998 12.5c18.9004 -8.5 26 -16 22.7998 -26.0996c1 0 2 0.0996094 4.2002 0\nc5.2002 16.8994 -14.2998 28 -30.7002 34.7998c2.90039 12 2.40039 24.0996 -0.399414 35.7002c-6 25.2998 -22.6006 47.7998 -35.2002 59c-2.2998 0.0996094 -2.10059 -1.90039 2.59961 -6.5c11.6006 -10.7002 37.1006 -49.2002 23.2998 -84.9004\nc-3.89941 1 -7.59961 1.5 -10.8994 1.40039c-5.2998 29.0996 -17.5 53.2002 -23.6006 64.5996c-11.5 21.4004 -29.5 65.2998 -37.1992 95.7002c-4.5 -6.40039 -12.4004 -11.9004 -22.3008 -15c-4.69922 -1.5 -9.69922 -5.5 -15.8994 -9\nc-13.9004 -8 -30 -8.7998 -42.4004 1.2002c-4.5 3.59961 -8 7.59961 -12.5996 10.2998c-1.60059 0.900391 -5.10059 3.2998 -6.2002 4.09961c-2 -37.7998 -27.2998 -85.2998 -39.2998 -112.699c-8.2998 -19.7002 -13.2002 -40.8008 -13.7998 -61.5\nc-21.8008 29.0996 -5.90039 66.2998 2.59961 82.3994c9.5 17.6006 11 22.5 8.7002 20.7998c-8.60059 -14 -22 -36.2998 -27.2002 -59.1992c-2.7002 -11.9004 -3.2002 -24 0.299805 -35.2002s11.1006 -21.5 24.6006 -29.9004c0 0 24.7998 -14.2998 38.2998 -32.5\nc7.39941 -10 9.7002 -18.7002 7.39941 -24.8994c-2.5 -6.7002 -9.59961 -8.90039 -16.6992 -8.90039c4.7998 -6 10.2998 -13 14.3994 -19.5996zM428.7 14.9004c0.299805 5.09961 -3.10059 13 -13.7002 24.5996c-10 11.2998 -7.2002 33.0996 -17.0996 41.5996\nc-6.90039 6 -13.6006 5.40039 -22.6006 5.10059c-7.7002 -8.7998 -25.7998 -19.6006 -38.3994 -16.2998c-11.5 2.89941 -18 16.2998 -18.8008 29.5c-0.299805 -0.200195 -0.699219 -0.300781 -1 -0.5c-7.09961 -3.90039 -11.0996 -10.8008 -13.6992 -21.1006\nc-2.5 -10.2002 -3.40039 -23.5 -4.2002 -38.7002c-0.700195 -11.7998 -6.2002 -26.3994 -9.90039 -40.5996c-3.5 -13.2002 -5.7998 -25.2002 -1.09961 -36.2998c7.2002 -14.5 19.5 -20.4004 33.7002 -19.2998c14.1992 1.09961 30.3994 9.7998 43.5996 25.5\nc22 26.5996 62.2998 29.6992 63.2002 46.5zM173.3 299.3c-3.5 2.7998 -3.09961 6.60059 -1.7002 6.5c2.40039 -0.299805 2.80078 -3.5 4.30078 -4.89941c2 -1.90039 4.59961 -4.40039 7.69922 -6.90039c6.2002 -4.90039 14.5 -9.7002 24.9004 -9.7002\ns22.5 6 29.9004 10.2002c4.19922 2.40039 9.5 6.59961 13.8994 9.7998c3.40039 2.5 3.2002 5.40039 6 5.10059c2.7998 -0.300781 0.799805 -3.2002 -3.09961 -6.60059c-3.90039 -3.39941 -9.90039 -7.7998 -14.7998 -10.3994\nc-9.30078 -4.90039 -20.2002 -10.8008 -31.8008 -10.8008c-11.5 0 -20.6992 5.40039 -27.2998 10.6006c-3.2998 2.59961 -6 5.2002 -8 7.09961z\" />\n    <glyph glyph-name=\"dribbble\" unicode=\"&#xf17d;\" horiz-adv-x=\"512\" \nd=\"M256 440c136.748 0 248 -111.252 248 -248s-111.252 -248 -248 -248s-248 111.252 -248 248s111.252 248 248 248zM419.97 325.634c-4.46582 -6.04102 -39.9629 -51.5459 -118.284 -83.5225c7.43652 -15.2217 12.8652 -27.5732 18.6172 -41.6143\nc70.4844 8.86426 140.519 -5.34082 147.502 -6.81836c-0.46582 49.998 -18.332 95.9092 -47.835 131.955zM396.421 350.13c-52.0947 46.2188 -122.885 63.6816 -190.061 47.4893c5.85449 -7.83984 44.3281 -60.2324 79.04 -124.008\nc75.3232 28.2324 107.211 71.0918 111.021 76.5186zM165.941 383.38c-59.2637 -27.9531 -103.562 -82.585 -117.298 -148.318c9.47461 -0.125 96.7471 -0.503906 195.834 25.8096c-35.0986 62.3926 -72.9512 114.85 -78.5361 122.509zM44.1699 191.677\nc0 -54.4072 20.624 -104.082 54.457 -141.636c34.3369 58.7793 103.932 120.731 180.531 142.306c-5.31738 12.0342 -11.1104 24.0811 -17.1738 35.9492c-105.786 -31.6592 -208.438 -30.3359 -217.706 -30.1455c-0.0654297 -2.15137 -0.108398 -4.30762 -0.108398 -6.47363\nzM125.977 24.5645c62.7539 -48.9355 144.656 -56.8955 212.769 -27.8828c-3.15039 18.585 -15.4492 83.3555 -45.1895 160.639c-85.4004 -29.1348 -145.452 -87.5234 -167.579 -132.756zM374.357 16.0752c47.5215 32.1338 81.3525 83.0371 90.7949 141.978\nc-7.24707 2.28711 -65.5674 19.6816 -131.947 9.05566c27.7061 -76.1367 38.9805 -138.147 41.1523 -151.033z\" />\n    <glyph glyph-name=\"skype\" unicode=\"&#xf17e;\" \nd=\"M424.7 148.2c14.5996 -18.9004 23.2998 -42.5 23.2002 -68.1006c0 -61.7998 -50.2002 -112 -112 -112c-25.6006 0 -49.2002 8.7002 -68.2002 23.3008c-14.1006 -3 -28.9004 -4.7002 -43.7998 -4.7002c-113.4 0 -205.301 91.7998 -205.301 205.3\nc0 14.9004 1.80078 29.7998 4.7002 43.7998c-14.5996 18.9004 -23.2998 42.5 -23.2998 68.2002c0 61.7998 50.2002 112 112 112c25.7002 0 49.2998 -8.7002 68.2998 -23.4004c14.1006 3 28.9004 4.7002 43.7998 4.7002c113.4 0 205.301 -91.7998 205.301 -205.3\nc0 -14.9004 -1.80078 -29.7998 -4.7002 -43.7998zM230.1 56.7002c54.9004 0 112 27.3994 112 86.5c0 50.7998 -49.2998 68.2998 -90.6992 77.5996c-48.3008 11.2002 -69.1006 13.2002 -69.1006 33c0 15.5 16.2998 22.5 42 22.5c45.7998 0 46.7002 -33.5 75 -33.5\nc18.9004 0 30.2998 14.9004 30.2998 31.7998c0 33.5 -55.6992 55.4004 -110.8 55.4004c-50.5 0 -109.1 -21.9004 -109.1 -81.0996c0 -65.2002 55.2998 -71.8008 117.8 -87.2002c26 -6.40039 42 -9.2998 42 -28c0 -14.9004 -16.5996 -26.2998 -42.2998 -26.2998\nc-54 0 -56.9004 44.8994 -88.1006 44.8994c-20.5 0 -29.5 -14.5996 -29.5 -30.5996c0 -35.7998 54.9004 -65 120.5 -65z\" />\n    <glyph glyph-name=\"foursquare\" unicode=\"&#xf180;\" horiz-adv-x=\"368\" \nd=\"M323.1 445c40 0 50.7002 -22.7998 42.2002 -65.2002l-48.5996 -243c-3.7002 -14.5 -9.2002 -39.7002 -44.2998 -39.7002h-83.4004c-3.40039 0 -3.7002 0.300781 -6.7998 -3.09961c0 0 -2.2002 -2.5 -131.101 -151.9\nc-10.0996 -11.6992 -26.6992 -9.59961 -32.8994 -7.09961c-6.10059 2.40039 -18.2002 9.7998 -18.2002 30.0996v433.801c0 17.7998 12.4004 46.0996 49.9004 46.0996h273.199zM306.8 371.2c2.10059 9.7998 -5.2998 17.5 -13.5 17.5h-219\nc-9.7998 0 -16.5996 -8.90039 -16.5996 -16.6006v-338.8c0 -0.899414 0.899414 -1.2002 1.7998 -0.299805c80.5996 96.9004 89.5 108.3 89.5 108.3c9.2998 10.7998 13 12.6006 26.5 12.6006h73.5c10.0996 0 16 8.59961 16.9004 13.5\nc0.899414 5 9.59961 49.8994 11.3994 58.7998c1.7998 9 -6.5 18.2002 -14.7998 18.2002h-90.4004c-12 0 -20.5996 8.59961 -20.5996 20.5996v13c0 12 8.59961 20.2998 20.5996 20.2998h106.4c7.40039 0 15.7002 6.7002 16.9004 13.2002z\" />\n    <glyph glyph-name=\"trello\" unicode=\"&#xf181;\" \nd=\"M392.3 416c30.7998 -0.200195 55.7002 -25.2002 55.6006 -56v-336c0 -30.7998 -24.9004 -55.7998 -55.7002 -56h-336.2c-30.9004 0 -56 25.0996 -56 56c0 340 -0.0996094 336 0 336c0 30.9004 25.0996 56 56.0996 56h336.2zM197 76.7002h0.0996094v254.2\nc0 14.8994 -12.0996 26.8994 -26.8994 26.8994h-82.9004c-14.8994 0 -26.8994 -12.0996 -26.8994 -26.8994v-254.2c0.0996094 -14.7998 12.1992 -26.7002 27 -26.6006h82.6992c14.8008 0 26.7002 11.9004 26.9004 26.6006zM390.1 188.7v142.1\nc0 14.9004 -12.0996 26.9004 -26.8994 26.9004h-81.1006c-14.7998 0 -26.7998 -12.1006 -26.7998 -26.9004v-142.1c0 -14.9004 12.1006 -26.9004 26.9004 -26.9004h81c14.8994 0 26.8994 12.1006 26.8994 26.9004z\" />\n    <glyph glyph-name=\"gratipay\" unicode=\"&#xf184;\" horiz-adv-x=\"496\" \nd=\"M248 440c136.9 0 248 -111.1 248 -248s-111.1 -248 -248 -248s-248 111.1 -248 248s111.1 248 248 248zM362.6 213.6c8.80078 12 19.1006 50.4004 -13.7998 72c-27.7002 18.1006 -54.2002 4.2002 -68.0996 -11.8994c-15.1006 -16.9004 -45.7998 -17.9004 -61.7002 0\nc-13.9004 16.0996 -40.4004 30 -68.5 11.8994c-32.7002 -21.5996 -22.2998 -60.0996 -13.5996 -72l112.699 -152.699z\" />\n    <glyph glyph-name=\"vk\" unicode=\"&#xf189;\" horiz-adv-x=\"576\" \nd=\"M545 330.3c-7.40039 -34.2998 -79.2998 -135.5 -79.4004 -135.6c-6.19922 -10 -8.69922 -15 0 -26.2002c3.40039 -4.7998 79.1006 -76.5996 90.3008 -111.5c4.89941 -16.5996 -3.60059 -25 -20.4004 -25h-58.9004c-22.3994 0 -29 17.9004 -69 57.9004\nc-35 33.6992 -50 38.0996 -58.6992 38.0996c-18.8008 0 -15.4004 -6.2998 -15.4004 -73.0996c0 -14.5 -4.59961 -22.9004 -42.0996 -22.9004c-62.4004 0 -131 37.9004 -179.7 107.8c-73.1006 102.4 -93.1006 179.9 -93.1006 195.5c0 8.7998 3.40039 16.7002 20.2002 16.7002\nh58.9004c15.0996 0 20.7998 -6.59961 26.5996 -22.9004c28.7998 -84 77.4004 -157.399 97.4004 -157.399c7.5 0 10.8994 3.5 10.8994 22.5v86.7998c-2.19922 40 -23.3994 43.2998 -23.3994 57.5c0 6.5 5.59961 13.5 15 13.5h92.5996\nc12.4004 0 16.6006 -6.7002 16.6006 -21.7002v-116.7c0 -12.5 5.69922 -16.8994 9.39941 -16.8994c7.5 0 13.7998 4.39941 27.5 18.0996c42.4004 47.4004 72.4004 120.5 72.4004 120.5c3.7002 8.7998 10.5996 16.7002 25.5996 16.7002h58.9004\nc17.7998 0 21.5 -9.2002 17.7998 -21.7002z\" />\n    <glyph glyph-name=\"weibo\" unicode=\"&#xf18a;\" horiz-adv-x=\"512\" \nd=\"M407 270.4c7.59961 24 -13.4004 46.7998 -37.4004 41.6992c-22 -4.7998 -28.7998 28.1006 -7.09961 32.8008c50.0996 10.8994 92.2998 -37.1006 76.5 -84.8008c-6.7998 -21.1992 -38.7998 -10.7998 -32 10.3008zM214.8 1.2998c-106.3 0 -214.8 51.4004 -214.8 136.3\nc0 44.3008 28 95.4004 76.2998 143.7c99.7002 99.7002 203.2 100.9 173.601 5.7002c-4 -13.0996 12.2998 -5.7002 12.2998 -6c79.5 33.5996 140.5 16.7998 114 -51.4004c-3.7002 -9.39941 1.09961 -10.8994 8.2998 -13.0996c135.7 -42.2998 34.7998 -215.2 -169.7 -215.2z\nM358.5 147.6c-5.40039 55.7002 -78.5 94 -163.4 85.7002c-84.7998 -8.59961 -148.8 -60.2998 -143.399 -116c5.39941 -55.7002 78.5 -94 163.399 -85.7002c84.8008 8.60059 148.801 60.3008 143.4 116zM347.9 412.9c102.3 21.5996 189.3 -74.5 157.399 -174.301\nc-8.2998 -25 -44.7998 -12.1992 -37.3994 12c23.0996 71.2002 -39.4004 139.2 -111.7 124c-25.1006 -5.39941 -34.2002 32.7002 -8.2998 38.3008zM269.4 101.9c-17.1006 -38.8008 -66.8008 -60 -109.101 -46.3008c-40.7998 13.1006 -58 53.4004 -40.2998 89.7002\nc17.7002 35.4004 63.0996 55.4004 103.4 45.1006c42 -10.8008 63.0996 -50.2002 46 -88.5zM183.1 131.9c-12.8994 5.39941 -30 -0.300781 -38 -12.9004c-8.2998 -12.9004 -4.2998 -28 8.60059 -34c13.0996 -6 30.7998 -0.299805 39.0996 12.9004\nc8 13.0996 3.7002 28.2998 -9.7002 34zM215.7 145.3c-5.10059 1.7002 -11.4004 -0.599609 -14.2998 -5.39941c-2.90039 -5.10059 -1.40039 -10.6006 3.69922 -12.9004c5.10059 -2 11.7002 0.299805 14.6006 5.40039c2.7998 5.19922 1.09961 10.8994 -4 12.8994z\" />\n    <glyph glyph-name=\"renren\" unicode=\"&#xf18b;\" horiz-adv-x=\"512\" \nd=\"M214 278.9c0 -110.4 -61 -205.4 -147.6 -247.4c-36.4004 43.2998 -58.4004 98.7998 -58.4004 159.9c0 122.699 89.0996 224.399 206 244.1v-156.6zM255 -56c-42.9004 0 -83.2998 11 -118.5 30.4004c57.2002 36.0996 103.4 90.6992 118.5 154.6\nc15.5 -63.9004 61.7002 -118.5 118.8 -154.7c-35.0996 -19.2998 -75.5 -30.2998 -118.8 -30.2998zM445.6 31.5c-86.5996 42 -147.6 136.9 -147.6 247.4v156.6c116.9 -19.7002 206 -121.4 206 -244.1c0 -61.1006 -22 -116.601 -58.4004 -159.9z\" />\n    <glyph glyph-name=\"pagelines\" unicode=\"&#xf18c;\" horiz-adv-x=\"384\" \nd=\"M384 135.3c-55.0996 -136.7 -187.1 -54 -187.1 -54c-40.5 -81.7998 -107.4 -134.399 -184.601 -134.7c-16.0996 0 -16.5996 24.4004 0 24.4004c64.4004 0.299805 120.5 42.7002 157.2 110.1c-41.0996 -15.8994 -118.6 -27.8994 -161.6 82.2002\nc109 44.9004 159.1 -11.2002 178.3 -45.5c9.89941 24.4004 17 50.9004 21.5996 79.7002c0 0 -139.7 -21.9004 -149.5 98.0996c119.101 47.9004 152.601 -76.6992 152.601 -76.6992c1.59961 16.6992 3.2998 52.5996 3.2998 53.3994c0 0 -106.3 73.7002 -38.1006 165.2\nc124.601 -43 61.4004 -162.4 61.4004 -162.4c0.5 -1.59961 0.5 -23.7998 0 -33.3994c0 0 45.2002 89 136.4 57.5c-4.2002 -134 -141.9 -106.4 -141.9 -106.4c-4.40039 -27.3994 -11.2002 -53.3994 -20 -77.5c0 0 83 91.7998 172 20z\" />\n    <glyph glyph-name=\"stack-exchange\" unicode=\"&#xf18d;\" \nd=\"M17.7002 115.7h412.7v-22c0 -37.7002 -29.3008 -68 -65.3008 -68h-19l-86.7998 -89.7002v89.7002h-176.3c-36 0 -65.2998 30.2998 -65.2998 68v22zM17.7002 139.3v85h412.7v-85h-412.7zM17.7002 248.7v85h412.7v-85h-412.7zM365 448\nc36 0 65.2998 -30.2998 65.4004 -67.7002v-22.2998h-412.7v22.2998c0 37.4004 29.2998 67.7002 65.2998 67.7002h282z\" />\n    <glyph glyph-name=\"vimeo-square\" unicode=\"&#xf194;\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM383.8 266.4c1.90039 41.5996 -13.5996 63 -46.5 64c-44.2998 1.39941 -74.3994 -23.6006 -90.0996 -75.1006\nc19.5996 8.40039 48.5996 10.6006 45.2002 -22.2002c-0.900391 -11.0996 -8.10059 -27.0996 -21.5 -48.2998c-37.2002 -58.7002 -46.3008 -39.0996 -66.8008 90.5c-5.7998 36.5 -21.0996 53.5 -46 51.1006c-22 -2 -57.1992 -38 -94.0996 -70.4004l15 -19.4004\nc14.2998 10.1006 22.7002 15.1006 25.0996 15.1006c20.8008 0 31.5 -54.1006 56.7002 -146.4c12.9004 -34.3994 28.6006 -51.5996 47.2998 -51.5996c30.1006 0 66.9004 28.2998 110.4 84.7998c42.0996 54.0996 63.9004 96.7998 65.2998 127.9z\" />\n    <glyph glyph-name=\"slack\" unicode=\"&#xf198;\" \nd=\"M94.1201 132.9c0 -25.9004 -21.1602 -47.0605 -47.0605 -47.0605c-25.8994 0 -47.0596 21.1602 -47.0596 47.0605c0 25.8994 21.1602 47.0596 47.0596 47.0596h47.0605v-47.0596zM117.84 132.9c0 25.8994 21.1602 47.0596 47.0605 47.0596\nc25.8994 0 47.0596 -21.1602 47.0596 -47.0596v-117.841c0 -25.8994 -21.1602 -47.0596 -47.0596 -47.0596c-25.9004 0 -47.0605 21.1602 -47.0605 47.0596v117.841zM164.9 321.88c-25.9004 0 -47.0605 21.1602 -47.0605 47.0605c0 25.8994 21.1602 47.0596 47.0605 47.0596\nc25.8994 0 47.0596 -21.1602 47.0596 -47.0596v-47.0605h-47.0596zM164.9 298.16c25.8994 0 47.0596 -21.1602 47.0596 -47.0605c0 -25.8994 -21.1602 -47.0596 -47.0596 -47.0596h-117.841c-25.8994 0 -47.0596 21.1602 -47.0596 47.0596\nc0 25.9004 21.1602 47.0605 47.0596 47.0605h117.841zM353.88 251.1c0 25.9004 21.1602 47.0605 47.0605 47.0605c25.8994 0 47.0596 -21.1602 47.0596 -47.0605c0 -25.8994 -21.1602 -47.0596 -47.0596 -47.0596h-47.0605v47.0596zM330.16 251.1\nc0 -25.8994 -21.1602 -47.0596 -47.0605 -47.0596c-25.8994 0 -47.0596 21.1602 -47.0596 47.0596v117.841c0 25.8994 21.1602 47.0596 47.0596 47.0596c25.9004 0 47.0605 -21.1602 47.0605 -47.0596v-117.841zM283.1 62.1201c25.9004 0 47.0605 -21.1602 47.0605 -47.0605\nc0 -25.8994 -21.1602 -47.0596 -47.0605 -47.0596c-25.8994 0 -47.0596 21.1602 -47.0596 47.0596v47.0605h47.0596zM283.1 85.8398c-25.8994 0 -47.0596 21.1602 -47.0596 47.0605c0 25.8994 21.1602 47.0596 47.0596 47.0596h117.841\nc25.8994 0 47.0596 -21.1602 47.0596 -47.0596c0 -25.9004 -21.1602 -47.0605 -47.0596 -47.0605h-117.841z\" />\n    <glyph glyph-name=\"wordpress\" unicode=\"&#xf19a;\" horiz-adv-x=\"512\" \nd=\"M61.7002 278.6l101.5 -278c-71 34.4004 -119.9 107.2 -119.9 191.4c0 30.9004 6.60059 60.0996 18.4004 86.5996zM399.6 202.7c0 -18.2002 -7 -39.2998 -16 -68.7002l-21.1992 -70.9004l-76.9004 228.7c12.7998 0.700195 24.2998 2 24.2998 2\nc11.4004 1.2998 10.1006 18.2002 -1.39941 17.5c0 0 -34.5 -2.7002 -56.7002 -2.7002c-20.9004 0 -56 2.7002 -56 2.7002c-11.4004 0.700195 -12.7998 -16.7998 -1.2998 -17.5c0 0 10.7998 -1.2998 22.2998 -2l33.0996 -90.7998l-46.5996 -139.6l-77.5 230.399\nc12.7998 0.700195 24.2998 2 24.2998 2c11.4004 1.2998 10.0996 18.2002 -1.40039 17.5c0 0 -34.5 -2.7002 -56.6992 -2.7002c-4 0 -8.7002 0.100586 -13.7002 0.300781c38.0996 57.7998 103.5 95.8994 177.8 95.8994c55.4004 0 105.8 -21.2002 143.7 -55.8994\nc-1 0.0996094 -1.90039 0.199219 -2.7998 0.199219c-20.9004 0 -35.7002 -18.1992 -35.7002 -37.7998c0 -17.5 10.0996 -32.3994 20.8994 -49.8994c8.10059 -14.2002 17.5 -32.4004 17.5 -58.7002zM259.7 173.4l65.3994 -179.2c0.400391 -1 0.900391 -2 1.5 -2.90039\nc-22.0996 -7.7998 -45.7998 -12.0996 -70.5996 -12.0996c-20.9004 0 -41 3.09961 -60.0996 8.7002zM442.7 294.1c16.5996 -30.2998 26 -65.0996 26 -102.1c0 -78.5 -42.5 -147 -105.8 -183.9l65 187.9c12.1992 30.4004 16.1992 54.5996 16.1992 76.2002\nc0 7.89941 -0.5 15.0996 -1.39941 21.8994zM504 192c0 -136.8 -111.3 -248 -248 -248c-136.8 0 -248 111.3 -248 248c0 136.8 111.2 248 248 248c136.7 0 248 -111.2 248 -248zM492.6 192c0 130.5 -106.199 236.6 -236.6 236.6c-130.5 0 -236.6 -106.1 -236.6 -236.6\ns106.199 -236.6 236.6 -236.6c130.5 0 236.6 106.1 236.6 236.6z\" />\n    <glyph glyph-name=\"openid\" unicode=\"&#xf19b;\" \nd=\"M271.5 16l-68 -32c-115 10.2998 -203.5 71.5 -203.5 145.8c0 71.5 82.5 131 191.7 144.3v-43c-71.5 -12.5 -124 -53 -124 -101.3c0 -51 58.5 -93.2998 135.7 -103v340l68 33.2002v-384h0.0996094zM448 157l-131.3 28.5l36.7998 20.7002c-19.5 11.5 -43.5 20 -70 24.7998\nv43c46.2002 -5.5 87.7002 -19.5 120.3 -39.2998l35 19.7998z\" />\n    <glyph glyph-name=\"yahoo\" unicode=\"&#xf19e;\" \nd=\"M252 156l4 -220c-12.7002 2.2002 -23.5 3.90039 -32.2998 3.90039c-8.40039 0 -19.2002 -1.7002 -32.2998 -3.90039l4 220c-55 94.7998 -110.4 196.8 -174 292c11.8994 -3.09961 23 -3.90039 33.1992 -3.90039c9 0 20.4004 0.800781 34.1006 3.90039\nc40.8994 -72.2002 82.0996 -138.7 135 -225.5c37.2998 61.5996 91.0996 144.1 134.899 225.5c11.1006 -2.90039 22 -3.90039 32.9004 -3.90039c11.5 0 23.2002 1 35 3.90039c-34.4004 -47.9004 -131.6 -216.9 -174.5 -292z\" />\n    <glyph glyph-name=\"google\" unicode=\"&#xf1a0;\" horiz-adv-x=\"488\" \nd=\"M488 186.2c0 -141.5 -96.9004 -242.2 -240 -242.2c-137.2 0 -248 110.8 -248 248s110.8 248 248 248c66.7998 0 123 -24.5 166.3 -64.9004l-67.5 -64.8994c-88.2998 85.2002 -252.5 21.2002 -252.5 -118.2c0 -86.5 69.1006 -156.6 153.7 -156.6\nc98.2002 0 135 70.3994 140.8 106.899h-140.8v85.2998h236.1c2.30078 -12.6992 3.90039 -24.8994 3.90039 -41.3994z\" />\n    <glyph glyph-name=\"reddit\" unicode=\"&#xf1a1;\" horiz-adv-x=\"512\" \nd=\"M201.5 142.5c-13.7998 0 -24.9004 11.0996 -24.9004 24.5996c0 13.8008 11.1006 24.9004 24.9004 24.9004c13.5996 0 24.5996 -11.0996 24.5996 -24.9004c0 -13.5996 -11.0996 -24.5996 -24.5996 -24.5996zM504 192c0 -137 -111 -248 -248 -248s-248 111 -248 248\ns111 248 248 248s248 -111 248 -248zM371.7 233.2c-9.40039 0 -17.7002 -3.90039 -23.7998 -10c-22.4004 15.5 -52.6006 25.5 -86.1006 26.5996l17.4004 78.2998l55.3994 -12.5c0 -13.5996 11.1006 -24.5996 24.6006 -24.5996c13.7998 0 24.8994 11.2998 24.8994 24.9004\nc0 13.5996 -11.0996 24.8994 -24.8994 24.8994c-9.7002 0 -18 -5.7998 -22.1006 -13.7998l-61.1992 13.5996c-3 0.800781 -6.10059 -1.39941 -6.90039 -4.39941l-19.0996 -86.4004c-33.2002 -1.39941 -63.1006 -11.2998 -85.5 -26.7998\nc-6.10059 6.40039 -14.7002 10.2002 -24.1006 10.2002c-34.8994 0 -46.2998 -46.9004 -14.3994 -62.7998c-1.10059 -5 -1.7002 -10.2002 -1.7002 -15.5c0 -52.6006 59.2002 -95.2002 132 -95.2002c73.0996 0 132.3 42.5996 132.3 95.2002\nc0 5.2998 -0.599609 10.7998 -1.90039 15.7998c31.3008 16 19.8008 62.5 -14.8994 62.5zM302.8 117c2.2002 2.2002 6.10059 2.2002 8.2998 0c2.5 -2.5 2.5 -6.40039 0 -8.59961c-22.8994 -22.8008 -87.3994 -22.8008 -110.199 0c-2.5 2.19922 -2.5 6.09961 0 8.59961\nc2.19922 2.2002 6.09961 2.2002 8.2998 0c17.5 -17.9004 75.3994 -18.2002 93.5996 0zM310.5 192c13.9004 0 24.9004 -11.0996 24.9004 -24.9004c0 -13.5 -11.1006 -24.5996 -24.9004 -24.5996c-13.5 0 -24.5996 11 -24.5996 24.5996c0 13.8008 11 24.9004 24.5996 24.9004z\n\" />\n    <glyph glyph-name=\"reddit-square\" unicode=\"&#xf1a2;\" \nd=\"M283.2 102.5c2.7002 -2.7002 2.7002 -6.7998 0 -9.2002c-24.5 -24.5 -93.7998 -24.5996 -118.4 0c-2.7002 2.40039 -2.7002 6.5 0 9.2002c2.40039 2.40039 6.5 2.40039 8.90039 0c18.7002 -19.2002 81 -19.5996 100.5 0c2.39941 2.2998 6.59961 2.2998 9 0zM191.9 156.3\nc0 -14.5996 -11.9004 -26.5 -26.5 -26.5c-14.9004 0 -26.8008 11.9004 -26.8008 26.5c0 14.9004 11.9004 26.7998 26.8008 26.7998c14.5996 0 26.5 -11.8994 26.5 -26.7998zM282.6 183.1c14.9004 0 26.8008 -11.8994 26.8008 -26.7998\nc0 -14.5996 -11.9004 -26.5 -26.8008 -26.5c-14.5996 0 -26.5 11.9004 -26.5 26.5c0 14.9004 11.9004 26.7998 26.5 26.7998zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM348.3 227.4\nc-10.0996 0 -19 -4.2002 -25.5996 -10.7002c-24.1006 16.7002 -56.5 27.3994 -92.5 28.5996l18.7002 84.2002l59.5 -13.4004c0 -14.5996 11.8994 -26.5 26.5 -26.5c14.8994 0 26.7998 12.2002 26.7998 26.8008c0 14.5996 -11.9004 26.7998 -26.7998 26.7998\nc-10.4004 0 -19.3008 -6.2002 -23.8008 -14.9004l-65.6992 14.6006c-3.30078 0.899414 -6.5 -1.5 -7.40039 -4.80078l-20.5 -92.7998c-35.7002 -1.5 -67.7998 -12.2002 -91.9004 -28.8994c-6.5 6.7998 -15.7998 11 -25.8994 11c-37.5 0 -49.7998 -50.4004 -15.5 -67.5\nc-1.2002 -5.40039 -1.7998 -11 -1.7998 -16.7002c0 -56.5 63.6992 -102.3 141.899 -102.3c78.5 0 142.2 45.7998 142.2 102.3c0 5.7002 -0.599609 11.5996 -2.09961 17c33.5996 17.2002 21.1992 67.2002 -16.1006 67.2002z\" />\n    <glyph glyph-name=\"stumbleupon-circle\" unicode=\"&#xf1a3;\" horiz-adv-x=\"496\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM256 262.5c9.7998 0 17.7998 -8 17.7002 -17.5996v-20.6006l22.8994 -10.7002l34.1006 10.1006v23.7002c0 40.2998 -34 72.5996 -74.7002 72.5996\nc-40.5 0 -74.7002 -32.0996 -74.7002 -72.0996v-108.4c0 -9.90039 -8 -17.7998 -17.7998 -17.7998s-17.7998 7.7998 -17.7998 17.7998v45.7998h-57.2998v-46.5c0 -41.3994 33.5 -74.8994 74.8994 -74.8994c41 0 74.9004 33 74.9004 73.8994v106.9\nc0 9.7998 8 17.7998 17.7998 17.7998zM423.6 138.9c0 0 0 0.5 0.100586 46.3994h-57.2998v-48c0 -9.7002 -8 -17.5996 -17.8008 -17.5996c-9.7998 0 -17.7998 7.7998 -17.7998 17.5996v47.1006l-34.0996 -10.1006l-22.9004 10.7002v-46.7998\nc0 -41 33.7002 -74.2002 74.9004 -74.2002c41.3994 0 74.8994 33.5 74.8994 74.9004z\" />\n    <glyph glyph-name=\"stumbleupon\" unicode=\"&#xf1a4;\" horiz-adv-x=\"512\" \nd=\"M502.9 182v-69.7002c0 -62.0996 -50.3008 -112.399 -112.4 -112.399c-61.7998 0 -112.4 49.7998 -112.4 111.3v70.2002l34.3008 -16l51.0996 15.1992v-70.5996c0 -14.7002 12 -26.5 26.7002 -26.5s26.7998 11.7998 26.7998 26.5v72h85.9004zM278.2 240.2v30.8994\nc0 14.7002 -12 26.7002 -26.7002 26.7002s-26.7002 -12 -26.7002 -26.7002v-160.3c0 -61.2998 -50.7998 -110.8 -112.399 -110.8c-62.1006 0 -112.4 50.2998 -112.4 112.3v69.7002h86v-68.5996c0 -14.9004 12 -26.7002 26.7002 -26.7002s26.7002 11.7998 26.7002 26.7002\nv162.399c0 60 51.2998 108.2 112.1 108.2c61 0 112.1 -48.5 112.1 -109v-35.5996l-51.0996 -15.2002z\" />\n    <glyph glyph-name=\"delicious\" unicode=\"&#xf1a5;\" \nd=\"M446.5 380c1 -3.7998 1.5 -7.90039 1.59961 -12v-352.1c0 -26.5 -21.5 -48 -48 -48h-352c-4.09961 0 -8.19922 0.5 -12 1.5c-7.69922 2 -14.5996 5.7998 -20.2998 11c-1.2002 1.09961 -2.2998 2.19922 -3.2998 3.2998c-5.2002 5.7002 -9 12.5996 -11 20.2998\nc-1 3.7998 -1.5 7.90039 -1.5 12v352c0 26.5 21.5 48 48 47.9004h352c4.09961 0 8.2002 -0.5 12 -1.5c1.90039 -0.400391 3.7002 -1 5.40039 -1.7002c1.89941 -0.700195 3.69922 -1.5 5.5 -2.5c1.39941 -0.700195 2.69922 -1.5 4 -2.40039\nc1.09961 -0.799805 2.19922 -1.59961 3.2998 -2.5c2.5 -2 4.7998 -4.2998 6.89941 -6.7998c1.7002 -2.09961 3.30078 -4.5 4.7002 -6.90039c1.2998 -2.2998 2.40039 -4.59961 3.2998 -7.09961c0.5 -1.5 1 -3 1.40039 -4.5zM416 16v176h-192v192h-176\nc-8.7998 0 -16 -7.2002 -16 -16v-176h192v-192h176c8.7998 0 16 7.2002 16 16z\" />\n    <glyph glyph-name=\"digg\" unicode=\"&#xf1a6;\" horiz-adv-x=\"512\" \nd=\"M81.7002 275.7v76.2998h51v-250.7h-132.7v174.4h81.7002zM81.7002 142.3v92.2998h-30.7998v-92.2998h30.7998zM378.9 275.7h133.1v-243.7h-133.1v40.7998h81.7998v28.5h-81.7998v174.4zM460.7 142.3v92.2998h-30.7998v-92.2998h30.7998zM225.1 101.3v174.4h133.301\nv-243.7h-133.301v40.7998h82.1006v28.5h-82.1006zM276.3 234.6v-92.2998h30.7998v92.2998h-30.7998zM153.3 352h51.2998v-51h-51.2998v51zM153.3 275.7h51.2998v-174.4h-51.2998v174.4z\" />\n    <glyph glyph-name=\"pied-piper-pp\" unicode=\"&#xf1a7;\" \nd=\"M205.3 273.4c0 -21.1006 -14.2002 -38.1006 -31.7002 -38.1006c-7.09961 0 -12.7998 1.2002 -17.1992 3.7002v68c4.39941 2.7002 10.0996 4.2002 17.1992 4.2002c17.5 0 31.7002 -16.9004 31.7002 -37.7998zM257.9 206.4c17.3994 0 31.6992 -17 31.6992 -38.1006\nc0 -20.8994 -14.2998 -37.7998 -31.6992 -37.7998c-7.10059 0 -12.8008 1.2002 -17.2002 3.7002v68c4.39941 2.7002 10.0996 4.2002 17.2002 4.2002zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352\nc26.5 0 48 -21.5 48 -48zM185 192.9c41 0 74.2002 35.5996 74.2002 79.5996s-33.2002 79.5996 -74.2002 79.5996c-12 0 -24.0996 -3.19922 -34.5996 -8.7998h-45.7002v-206.3l51.7998 10.0996v50.6006c8.59961 -3.10059 18.0996 -4.7998 28.5 -4.7998zM343.4 167.6\nc0 44 -33.2002 79.6006 -73.9004 79.6006c-3.2002 0 -6.40039 -0.200195 -9.59961 -0.700195c-3.7002 -12.5 -10.1006 -23.7998 -19.2002 -33.4004c-13.7998 -15 -32.2002 -23.7998 -51.7998 -24.7998v-156.3l51.7998 10.0996v50.6006\nc8.59961 -3.2002 18.2002 -4.7002 28.7002 -4.7002c40.7998 0 74 35.5996 74 79.5996z\" />\n    <glyph glyph-name=\"pied-piper-alt\" unicode=\"&#xf1a8;\" horiz-adv-x=\"576\" \nd=\"M244 202l-27.7002 -5.7002l-1.7002 4.90039c6.7002 0.5 12.7002 3.7002 19.3008 3.7002c3.7998 0 6.89941 -0.900391 10.0996 -2.90039zM379.9 4.09961c9.5 0 28.1992 -45.0996 33 -55.0996c-35.9004 -13.4004 -70.3008 -15.9004 -106 -9.7998l-6.90039 45.0996\nc15.7998 10.2998 60.9004 19.7998 79.9004 19.7998zM340.8 271c-7.59961 3.5 -63.8994 6.40039 -98.7998 -10c6.2998 11.7998 13.2002 17 25.9004 21.7998c27.2998 10.2998 40.1992 30.5 58.8994 51.1006c11.9004 -8.40039 12 -24.6006 31.6006 -23v-21.8008\nl6.2998 -0.299805c37.3994 14.4004 74.7002 30.2002 106.6 54.6006c48.2998 36.7998 52.9004 50 81.2998 100l2 2.59961c-0.599609 -14.0996 -6.2998 -27.2998 -12.3994 -39.9004c-30.5 -63.7998 -78.7002 -100.3 -146.8 -116.699\nc-12.4004 -2.90039 -26.4004 -3.2002 -37.6006 -8.90039c1.40039 -9.7998 13.2002 -18.0996 13.2002 -23c0 -3.40039 -5.5 -7.2002 -7.5 -8.59961c-11.2002 12.8994 -16.0996 19.2998 -22.7002 22.0996zM555.5 448l-0.299805 -1.40039l-0.600586 -0.599609\nl0.300781 0.900391zM496.3 65.9004c20.1006 -34.2002 43.7002 -54.3008 72.7002 -79.9004c-31 -19.2998 -70.4004 -32.2002 -103.5 -47.2002c-55.2002 46.2998 -23 229.9 -111.5 229.9c-3.5 -0.700195 -2.40039 -0.299805 -4.59961 -1.7002\nc1.09961 -1.40039 2.59961 -2.90039 3.69922 -4c23.9004 -20.0996 33.4004 -24.4004 34.8008 -58.5996l0.299805 -9.5c0.799805 -21.6006 -5.5 -42.5 -9.7998 -63.5c-25.9004 0.699219 -51.2002 -11 -77.9004 -2.90039c-0.700195 5.90039 -1.09961 30.9004 0.299805 41.0996\nc1.40039 9.5 33.6006 29.9004 33 43.7002c-5.5 0.600586 -9.2002 -2.59961 -12.3994 -6.89941c-13.3008 -19.5 -47.2002 -41.9004 -71.3008 -41.9004c-16.5996 0 -56.2998 71.5 -76.3994 85.9004c-3.2002 2.2998 -5.2002 5.39941 -7.7998 8.59961\nc-16.1006 -3.7998 -139.4 -32.2002 -147.4 -32.2002c-6 0 -11.5 4.90039 -11.5 10.9004c0 5.5 3.40039 10.7002 8.90039 11.7998l139.6 30.4004c-9.5 17.1992 12.2998 17.5 21.5 20.0996c3.2002 0.799805 6.2998 4 9.5 4c6.2998 0 11.7998 -8.90039 13.7998 -14.0996\nc6.2998 1.39941 45.7002 10.5996 49.4004 10.5996c15.2002 0 15.8994 -20.0996 2.89941 -22.7002l-52.2998 -11.5l-0.299805 -4.59961c-0.299805 -10.1006 45.4004 -60.1006 53.4004 -60.1006c18.0996 0 54.8994 41.7002 54.8994 60.1006\nc0 30.7002 -42.7998 12.5996 -42.7998 33.5996c0 3.5 1.2002 6.60059 2.90039 9.7998l-19.5 5.5c13.0996 13.6006 13.7998 31.7002 10.8994 50.3008c14.7002 2.89941 26.7002 4.59961 41.4004 4.59961c56.8994 0 45.7002 -8.59961 65.5 -54.2998l14.3994 7.2002\nc-2.2998 -34.2002 -36.1992 -17.5 -35.0996 -31l0.299805 -6c74.7002 2.89941 116.101 -58.6006 150 -115.5zM300.1 19.7998h8.90039l2.90039 -23.7998l-11.8008 -3.40039v27.2002zM231.4 170.2l13.7998 3.5l31.2998 -50.9004l-21 -13.7998zM315.8 15.2998\nc22.6006 2.5 32.7002 6.2998 59.5 6.2998c0.299805 -1.39941 0.900391 -3.19922 0.900391 -4.59961c0 -7.5 -49.4004 -12.5996 -58.4004 -14.0996z\" />\n    <glyph glyph-name=\"drupal\" unicode=\"&#xf1a9;\" \nd=\"M319.5 333.3c13.5 -8.2998 96.5 -67 96.5 -179.3c0 -112 -88.5 -186 -190.2 -186c-102 0 -193.8 80.2998 -193.8 189.5c0 109 85 167.5 100.8 175.8c18.7002 10.1006 32.2002 15.2998 53.5 32.2998c10.5 8.30078 19.2998 20.2002 22 49.5\nc15.2002 -18.2998 33.5 -39.5 46.5 -48.2998c21.2002 -14 42.5 -19.5 64.7002 -33.5zM322 7.7002c4.2002 4.2002 1.90039 13.0996 -4.2002 8.5c-8.5 -6.2998 -27.5 -14 -54.5 -14c-34.5 0 -51.5 13.2998 -51.5 13.2998c-6.2002 0 -11.2998 -7.2002 -6.5 -12\nc26.6006 -24.5 96.6006 -15.9004 116.7 4.2002zM267.5 60.2998c-6.5 -2.7002 -28.4004 -16.7998 -22.4004 -25c2.40039 -3.2998 5.2002 -1.2998 12.2002 4.7002c7.2002 5.7998 12 11 26.7002 11c25.2998 0 18.0996 -19.9004 26.5 -15.7002\nc9.90039 4.90039 -2.09961 20.9004 -6.2002 23.7002c-7.7998 5.09961 -28.0996 4.90039 -36.7998 1.2998zM360 43c39.0996 -3.2998 64.5 106 15.7998 106c-20 0 -60.5 -41.5 -81.7998 -41.7998c-24.7002 -0.5 -59 49 -108.5 48.5\nc-66.4004 -0.400391 -90.5996 -78.6006 -51.7998 -105.2c57.2002 -38.7002 130.399 42.9004 161.3 42c19.5 -0.700195 49.7998 -48.5 65 -49.5z\" />\n    <glyph glyph-name=\"joomla\" unicode=\"&#xf1aa;\" \nd=\"M0.599609 355.9c0 33.2998 26.8008 60.0996 59.8008 60.0996c30 0 54.5 -21.9004 59.1992 -50.2002c32.6006 7.60059 67.1006 -0.599609 96.5 -30l-44.2998 -44.2998c-20.5 20.5 -42.5996 16.2998 -55.3994 3.5c-14.3008 -14.2998 -14.3008 -37.9004 0 -52.2002\nl99.5 -99.5l-44 -44.2998c-87.7002 87.2002 -49.7002 49.7002 -99.8008 99.7002c-26.7998 26.5 -35 64.7998 -24.7998 98.8994c-26.8994 5.80078 -46.7002 29.7002 -46.7002 58.3008zM130.1 239.5c28.5 28.4004 81.3008 80.7998 99.6006 99.9004\nc26.5996 26.5996 64.5 35 98.2998 25.0996c4.09961 29.0996 29.2002 51.5996 59.5 51.5996c33 0 59.7998 -26.8994 59.7998 -60.0996c0 -30.2998 -22.7002 -55.4004 -51.8994 -59.5c9.59961 -33.5996 2.2998 -70 -28.9004 -101.2l-44 44.2998\nc20.5 20.4004 16.2998 42.6006 3.5 55.4004c-14.2998 14.2998 -37.5996 14.2998 -51.9004 0c-10 -10.0996 -89.6992 -89.7998 -99.6992 -99.7998zM396.4 87.2998c29.0996 -4.09961 51.5996 -28.8994 51.5996 -59.0996c0 -33.2998 -26.7998 -60.1006 -59.7998 -60.1006\nc-29.2002 0 -53.4004 20.7002 -58.9004 48.1006c-34.7002 -10.7998 -75.0996 -2.2002 -102.7 28l44 44.2998c20.4004 -20.5 42.6006 -16.2998 55.4004 -3.5c14.2998 14.2998 14.2998 37.5996 0 51.9004l-99.7002 99.6992l44.2998 44.3008\nc104.5 -104.4 87.7002 -87.5 99.5 -99.7002c25.4004 -25.4004 34.5 -61.2002 26.3008 -93.9004zM312.1 140.4c-87.2998 -87.3008 -67.3994 -67.7002 -99.5 -99.7002c-25.6992 -25.4004 -61.5 -34.2002 -94.1992 -26c-6.10059 -26.9004 -30 -46.7002 -58.6006 -46.7002\nc-33 0 -59.7998 26.7998 -59.7998 60.0996c0 28.3008 19.5 52.2002 46.2002 58.2002c-8.5 33.1006 -0.700195 68.1006 29.5 98.2998l44 -44.2998c-20.1006 -20.0996 -16.2998 -42 -3.2002 -55.3994c14.2998 -14.3008 37.5996 -14.3008 51.9004 0\nc49.2998 49.3994 12.6992 13.3994 99.6992 99.7998z\" />\n    <glyph glyph-name=\"behance\" unicode=\"&#xf1b4;\" horiz-adv-x=\"576\" \nd=\"M232 210.8c43.5996 -12.2998 64.7002 -45.2002 64.7002 -89.7002c0 -72 -60.5 -102.899 -124.9 -102.899h-171.8v354.399h167.1c60.7002 0 113.301 -17.1992 113.301 -87.7998c0 -35.7998 -16.6006 -58.7998 -48.4004 -74zM77.9004 312.1v-82.6992h79\nc27.7998 0 47.5 12.0996 47.5 42.1992c0 32.6006 -25.3008 40.5 -53.4004 40.5h-73.0996zM161.2 78.4004c31.7002 0 57.5996 11.1992 57.5996 47c0 36.2998 -21.7002 50.5996 -56 50.5996h-84.8994v-97.5996h83.2998zM519.7 319.1h-143.7v34.9004h143.7v-34.9004zM576 142.8\nc0 -4.5 -0.299805 -9 -0.599609 -13.2002h-185.101c0 -41.0996 21.7002 -65.2998 63 -65.2998c21.4004 0 49 11.6006 55.7002 33.5h62.2002c-19.1006 -58.7002 -58.7998 -86.2998 -120.101 -86.2998c-81 0 -131.3 54.7998 -131.3 134.7c0 77 53.1006 135.8 131.3 135.8\nc80.5 0 124.9 -63.2998 124.9 -139.2zM390.4 174h114.699c-3 34 -20.7998 54.7998 -56.1992 54.7998c-33.8008 0 -56.2002 -21.0996 -58.5 -54.7998z\" />\n    <glyph glyph-name=\"behance-square\" unicode=\"&#xf1b5;\" \nd=\"M186.5 155c0 -19.2998 -14 -25.4004 -31.2002 -25.4004h-45.0996v52.9004h46c18.5996 -0.0996094 30.2998 -7.7998 30.2998 -27.5zM178.8 237.3c0 -16.2998 -10.7002 -22.8994 -25.7998 -22.8994h-42.7002v44.7998h39.6006c15.1992 0 28.8994 -4.2002 28.8994 -21.9004z\nM311.1 214.1c19.2002 0 28.8008 -11.1992 30.5 -29.6992h-62.1992c1.19922 18.2998 13.3994 29.6992 31.6992 29.6992zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM271.7 263h77.7998\nv18.9004h-77.7998v-18.9004zM228.7 152.7c0 24.0996 -11.4004 44.8994 -35 51.5996c17.2002 8.2002 26.2002 17.7002 26.2002 37c0 38.2002 -28.5 47.5 -61.4004 47.5h-90.5v-192h93.0996c34.9004 0.200195 67.6006 16.9004 67.6006 55.9004zM380 167.5\nc0 41.0996 -24.0996 75.4004 -67.5996 75.4004c-42.4004 0 -71.1006 -31.8008 -71.1006 -73.6006c0 -43.2998 27.2998 -73 71.1006 -73c33.1992 0 54.6992 14.9004 65.0996 46.7998h-33.7002c-3.7002 -11.8994 -18.5996 -18.0996 -30.2002 -18.0996\nc-22.3994 0 -34.0996 13.0996 -34.0996 35.2998h100.2c0.0996094 2.2998 0.299805 4.7998 0.299805 7.2002z\" />\n    <glyph glyph-name=\"steam\" unicode=\"&#xf1b6;\" horiz-adv-x=\"496\" \nd=\"M496 192c0 -137 -111.2 -248 -248.4 -248c-113.8 0 -209.6 76.2998 -239 180.4l95.2002 -39.3008c6.40039 -32.0996 34.9004 -56.3994 68.9004 -56.3994c39.2002 0 71.8994 32.3994 70.2002 73.5l84.5 60.2002c52.0996 -1.30078 95.7998 40.8994 95.7998 93.5\nc0 51.5996 -42 93.5 -93.7002 93.5s-93.7002 -42 -93.7002 -93.5v-1.2002l-59.2002 -85.7002c-15.5 0.900391 -30.6992 -3.40039 -43.5 -12.0996l-133.1 55c10.2002 127.699 117.1 228.1 247.6 228.1c137.2 0 248.4 -111 248.4 -248zM155.7 63.7002\nc19.7998 -8.2002 42.5 1.09961 50.7998 21c8.2998 19.7998 -1.09961 42.5 -20.9004 50.7002l-31.5 13c12.2002 4.59961 26 4.7998 38.9004 -0.600586c13 -5.39941 23.0996 -15.5996 28.5 -28.5996s5.2998 -27.2998 -0.0996094 -40.2998\nc-11.2002 -26.8008 -42.1006 -39.6006 -69 -28.4004c-10.2119 4.26953 -22.3975 15.8281 -27.2002 25.7998zM329.5 193.6c-34.4004 0 -62.4004 28 -62.4004 62.3008c0 34.2998 28 62.2998 62.4004 62.2998s62.4004 -28 62.4004 -62.2998\nc0 -34.3008 -27.9004 -62.3008 -62.4004 -62.3008zM329.6 209.2c25.9004 0 46.9004 21 46.9004 46.7998c0 25.9004 -21 46.7998 -46.9004 46.7998c-25.8994 0 -46.8994 -21 -46.8994 -46.7998c0.0996094 -25.7998 21.0996 -46.7998 46.8994 -46.7998z\" />\n    <glyph glyph-name=\"steam-square\" unicode=\"&#xf1b7;\" \nd=\"M185.2 91.5c7.7002 18.5 -1 39.7002 -19.6006 47.4004l-29.5 12.1992c11.4004 4.30078 24.3008 4.5 36.4004 -0.5c12.2002 -5.09961 21.5996 -14.5996 26.7002 -26.6992c5 -12.2002 5 -25.6006 -0.100586 -37.7002c-10.5 -25.1006 -39.3994 -37 -64.5996 -26.5\nc-11.5996 4.7998 -20.4004 13.5996 -25.4004 24.2002l28.5 -11.8008c18.6006 -7.7998 39.9004 0.900391 47.6006 19.4004zM400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v112.8l89.0996 -36.8994\nc6 -30 32.7002 -52.7002 64.5 -52.7002c36.6006 0 67.3008 30.2998 65.7002 68.7998l79 56.2998c48.7002 -1.2002 89.6006 38.2998 89.6006 87.5c0 48.2002 -39.3008 87.5 -87.6006 87.5s-87.5996 -39.2998 -87.5996 -87.5v-1.09961l-55.4004 -80.2002\nc-14.5 0.799805 -28.7002 -3.09961 -40.7002 -11.2998l-116.6 48.0996v160.7c0 26.5 21.5 48 48 48h352zM300.3 193.5c-32.2002 0 -58.3994 26.0996 -58.3994 58.2998s26.1992 58.2998 58.3994 58.2998s58.4004 -26.1992 58.4004 -58.2998\nc0 -32.0996 -26.2002 -58.2998 -58.4004 -58.2998zM300.4 208.1c24.1992 0 43.8994 19.6006 43.8994 43.8008c0 24.1992 -19.5996 43.7998 -43.8994 43.7998c-24.2002 0 -43.9004 -19.6006 -43.9004 -43.7998c0 -24.2002 19.7002 -43.8008 43.9004 -43.8008z\" />\n    <glyph glyph-name=\"spotify\" unicode=\"&#xf1bc;\" horiz-adv-x=\"496\" \nd=\"M248 440c136.9 0 248 -111.1 248 -248s-111.1 -248 -248 -248s-248 111.1 -248 248s111.1 248 248 248zM348.7 75.0996c8.09961 0 15.2002 6.30078 15.2002 15.4004s-3.60059 12.5996 -9.7002 16.5c-71.4004 42.7002 -155.101 44.2998 -237 26.2002\nc-7.5 -1.60059 -13.6006 -6.5 -13.6006 -16.7998c0 -8.10059 6.10059 -15.8008 15.8008 -15.8008c2.89941 0 8 1.60059 11.8994 2.60059c71.7002 14.7002 144.3 13.0996 206.7 -24.5c3.90039 -2.2998 6.5 -3.60059 10.7002 -3.60059zM375.6 140.7\nc10.9004 0 19.3008 8.7002 19.4004 19.5c0 8.7002 -3.2002 14.8994 -11.2998 19.7002c-49.4004 29.3994 -112.101 45.5 -177 45.5c-41.6006 0 -70 -5.80078 -97.7998 -13.6006c-10.3008 -2.89941 -15.5 -10 -15.5 -20.7002c0 -10.6992 8.69922 -19.3994 19.3994 -19.3994\nc4.5 0 7.10059 1.2998 11.9004 2.59961c82.8994 22.5 176.1 7.60059 238.6 -29.3994c3.60059 -1.90039 7.10059 -4.2002 12.2998 -4.2002zM406.6 216.9c12.2002 0 23.2002 9.69922 23.2002 23.2998c0 11.8994 -5.09961 18.0996 -12.8994 22.5996\nc-55.9004 32.6006 -132.4 47.7998 -205.4 47.7998c-42.9004 0 -82.2998 -4.89941 -117.5 -15.1992c-9 -2.60059 -17.4004 -10.3008 -17.4004 -23.9004c0 -13.2998 10.1006 -23.5996 23.3008 -23.5996c4.7998 0 9.2998 1.59961 12.8994 2.59961\nc82.4004 23 209.7 12.7998 280.9 -29.7002c4.5 -2.59961 7.7002 -3.89941 12.8994 -3.89941z\" />\n    <glyph glyph-name=\"deviantart\" unicode=\"&#xf1bd;\" horiz-adv-x=\"320\" \nd=\"M320 354.8l-98.2002 -179.1l7.40039 -9.5h90.7998v-127.7h-160.9l-13.5 -9.2002l-43.6992 -84c-0.300781 0 -8.60059 -8.59961 -9.2002 -9.2002h-92.7002v93.2002l93.2002 179.4l-7.40039 9.2002h-85.7998v127.6h156l13.5 9.2002l43.7002 84\nc0.299805 0 8.59961 8.59961 9.2002 9.2002h97.5996v-93.1006z\" />\n    <glyph glyph-name=\"soundcloud\" unicode=\"&#xf1be;\" horiz-adv-x=\"640\" \nd=\"M111.4 191.7l5.7998 -65l-5.7998 -68.2998c-0.300781 -2.5 -2.2002 -4.40039 -4.40039 -4.40039s-4.2002 1.90039 -4.2002 4.40039l-5.59961 68.2998l5.59961 65c0 2.2002 1.90039 4.2002 4.2002 4.2002c2.2002 0 4.09961 -2 4.40039 -4.2002zM132.8 237.3\nc2.5 0 4.7002 -2.2002 4.7002 -5l5.7998 -105.6l-5.7998 -68.2998c0 -2.80078 -2.2002 -5 -4.7002 -5c-2.7998 0 -4.7002 2.19922 -5 5l-5 68.2998l5 105.6c0.299805 2.7998 2.2002 5 5 5zM158.3 261.4c2.7998 0 5.2998 -2.2002 5.2998 -5.30078l5.30078 -130\nl-5.30078 -67.7998c0 -3.09961 -2.5 -5.2998 -5.2998 -5.2998c-3.09961 0 -5.2998 2.2002 -5.59961 5.2998l-4.40039 67.7998l4.40039 130c0.299805 3.10059 2.5 5.30078 5.59961 5.30078zM7.2002 164.8c1.39941 0 2.2002 -1.09961 2.5 -2.5l5.59961 -35.5996l-5.59961 -35\nc-0.299805 -1.40039 -1.10059 -2.5 -2.5 -2.5c-1.40039 0 -2.2002 1.09961 -2.5 2.5l-4.7002 35l4.7002 35.5996c0.299805 1.40039 1.09961 2.5 2.5 2.5zM30.7998 186.7c1.40039 0 2.5 -1.10059 2.7998 -2.5l7.2002 -57.5l-7.2002 -56.4004\nc-0.299805 -1.39941 -1.39941 -2.5 -2.7998 -2.5c-1.39941 0 -2.5 1.10059 -2.5 2.7998l-6.39941 56.1006l6.39941 57.5c0 1.39941 1.10059 2.5 2.5 2.5zM56.0996 198.1c1.7002 0 3.10059 -1.39941 3.10059 -3.2998l6.89941 -68.0996l-6.89941 -65.7998\nc0 -1.7002 -1.40039 -3.10059 -3.10059 -3.10059c-1.59961 0 -3 1.40039 -3.2998 3.10059l-5.7998 65.7998l5.7998 68.0996c0.200195 1.90039 1.60059 3.2998 3.2998 3.2998zM81.4004 200.3c1.89941 0 3.59961 -1.39941 3.89941 -3.59961l6.40039 -70l-6.40039 -67.7998\nc-0.299805 -2.2002 -2 -3.60059 -3.89941 -3.60059c-1.90039 0 -3.60059 1.40039 -3.60059 3.60059l-5.7998 67.7998l5.7998 70c0 2.2002 1.7002 3.59961 3.60059 3.59961zM322.8 311.2c2.5 -1.40039 4.10059 -4.2002 4.5 -7.2002l3.90039 -177.5l-3.90039 -64.2002\nc0 -4.7002 -3.89941 -8.59961 -8.59961 -8.59961s-8.60059 3.89941 -8.90039 8.59961l-1.7002 31.7002l-1.69922 32.5l3.2998 176.7v0.799805c0.200195 2.5 1.39941 5 3.2998 6.7002c1.40039 1.09961 3.40039 1.89941 5.59961 1.89941\nc1.40039 0 3.10059 -0.599609 4.2002 -1.39941zM296.1 295.9c2.2002 -1.40039 3.60059 -3.90039 3.90039 -6.7002l3.2998 -162.8l-3.09961 -58.6006l-0.299805 -6.7002c0 -2.2998 -0.800781 -4.19922 -2.5 -5.59961c-1.40039 -1.40039 -3.40039 -2.5 -5.60059 -2.5\nc-2.5 0 -4.7002 1.2002 -6.39941 3.09961c-1.10059 1.40039 -1.7002 3 -1.7002 4.7002v0.299805c-3.10059 65.3008 -3.10059 65.6006 -3.10059 65.6006l2.80078 160.8l0.299805 1.7002c0 2.7998 1.39941 5.2998 3.59961 6.7002\nc1.2998 0.799805 2.7998 1.39941 4.40039 1.39941c1.59961 0 3 -0.599609 4.39941 -1.39941zM184.7 273.4c3.39941 0 5.89941 -2.80078 6.09961 -6.10059l5 -140.6l-5 -67.2002c-0.299805 -3.2998 -2.7998 -5.7998 -6.09961 -5.7998c-3 0 -5.5 2.5 -5.7998 5.7998\nl-4.40039 67.2002l4.40039 140.6c0 3.2998 2.69922 6.10059 5.7998 6.10059zM561.4 210.6c43.2998 0 78.5996 -35.2998 78.5 -78.8994c0 -43.2998 -35.3008 -78.2998 -78.6006 -78.2998h-218.3c-4.7002 0.599609 -8.59961 4.19922 -8.59961 9.19922v249.7\nc0 4.7998 1.69922 7 7.7998 9.2002c15.2998 6.09961 32.5 9.40039 50.2998 9.40039c72.5 0 131.9 -55.6006 138.3 -126.4c9.5 3.90039 19.7998 6.09961 30.6006 6.09961zM264.7 270.9c4.2002 0 7.2002 -3.30078 7.5 -7.80078l3.89941 -136.699l-3.89941 -65.6006\nc0 -4.2002 -3.2998 -7.5 -7.5 -7.5s-7.5 3.2998 -7.7998 7.5l-3.30078 65.6006l3.30078 136.699c0.299805 4.5 3.59961 7.80078 7.7998 7.80078zM211.1 278.7c3.60059 0 6.40039 -3.10059 6.7002 -6.7002l4.40039 -145.3l-4.40039 -66.9004\nc-0.299805 -3.59961 -3.09961 -6.39941 -6.7002 -6.39941c-3.2998 0 -6.09961 2.7998 -6.39941 6.39941l-3.90039 66.9004l3.90039 145.3c0 3.59961 3.09961 6.7002 6.39941 6.7002zM237.8 275.3c3.90039 0 6.90039 -3 6.90039 -6.89941l4.2002 -141.7l-4.2002 -66.4004\nc0 -3.7998 -3.10059 -6.89941 -6.90039 -6.89941s-6.59961 3 -6.89941 6.89941l-3.90039 66.4004l3.90039 141.7c0 3.7998 3 6.89941 6.89941 6.89941z\" />\n    <glyph glyph-name=\"vine\" unicode=\"&#xf1ca;\" horiz-adv-x=\"384\" \nd=\"M384 193.3v-52.0996c-18.4004 -4.2002 -36.9004 -6.10059 -52.0996 -6.10059c-36.9004 -77.3994 -103 -143.8 -125.101 -156.199c-14 -7.90039 -27.0996 -8.40039 -42.7002 0.799805c-27.0996 16.2998 -129.899 100.6 -164.1 365.6h74.5\nc18.7002 -159.1 64.5 -240.7 114.8 -301.8c27.9004 27.9004 54.7998 65.0996 75.6006 106.9c-49.8008 25.2998 -80.1006 80.8994 -80.1006 145.6c0 65.5996 37.7002 115.1 102.2 115.1c114.9 0 106.2 -127.899 81.5996 -181.5c0 0 -46.3994 -9.19922 -63.5 20.5\nc3.40039 11.3008 8.2002 30.8008 8.2002 48.5c0 31.3008 -11.2998 46.6006 -28.3994 46.6006c-18.2002 0 -30.8008 -17.1006 -30.8008 -50c0.100586 -79.2002 59.4004 -118.7 129.9 -101.9z\" />\n    <glyph glyph-name=\"codepen\" unicode=\"&#xf1cb;\" horiz-adv-x=\"512\" \nd=\"M502.285 288.296c6.00098 -3.99902 9.71484 -11.1426 9.71582 -18.2852v-155.999c0 -7.14258 -3.71484 -14.2871 -9.71484 -18.2861l-234 -156.021c-8.06055 -4.95996 -16.584 -4.91504 -24.5713 0l-234 156.021c-6.00098 4 -9.71484 11.1436 -9.71484 18.2861v155.999\nc0 7.14258 3.71387 14.2861 9.71387 18.2852l234 156c8.06055 4.95996 16.584 4.91504 24.5713 0zM278 384.869v-102.572l95.4287 -63.7148l76.8574 51.4287zM234 384.869l-172.286 -114.858l76.8574 -51.4287l95.4287 63.7148v102.572zM44 228.868v-73.7139\nl55.1426 36.8564zM234 -0.84668v102.571l-95.4287 63.7158l-76.8574 -51.4297zM256 140.011l77.7148 52l-77.7148 52l-77.7148 -52zM278 -0.84668l172.286 114.857l-76.8574 51.4297l-95.4287 -63.7158v-102.571zM468 155.154v73.7139l-55.1426 -36.8574z\" />\n    <glyph glyph-name=\"jsfiddle\" unicode=\"&#xf1cc;\" horiz-adv-x=\"576\" \nd=\"M510.634 210.538c45.6885 -25.334 68.3721 -74.5605 56.832 -122.634c-12.1035 -50.4199 -55.5479 -86.6592 -108.212 -87.293c-84.0303 -1.01172 -168.079 -0.458984 -252.12 -0.480469c-30.3223 -0.00683594 -60.668 -0.492188 -90.959 0.539062\nc-48.0938 1.63672 -91.7764 35.8643 -105.607 81.4326c-14.1289 46.5508 2.18945 94.623 41.9014 124.615c2.54688 1.92383 4.86914 6.52051 4.51465 9.54492c-3.74609 31.8604 7.14453 57.6709 32.6758 76.4082c26.2822 19.2881 55.2285 21.5879 85.3311 9.16699\nc2.36621 -0.975586 4.63965 -2.17773 7.82422 -3.68555c16.5215 27.5332 38.1221 48.6523 65.4922 63.9023c92.8594 51.7402 210.954 8.31152 246.85 -91.6455c5.55762 -15.4766 6.74512 -32.6074 9.09668 -49.0947c0.716797 -5.02832 1.6543 -8.15527 6.38086 -10.7764z\nM531.741 53.6582c39.3135 48.375 22.418 117.668 -35.1426 144.497c-7.43555 3.46582 -9.72559 7.74414 -9.84766 15.8936c-1.87012 125.129 -132.78 187.063 -230.24 132.697c-26.1133 -14.5674 -46.4492 -34.8955 -60.6709 -61.2939\nc-7.59082 -14.0908 -11.9287 -7.97754 -22.1982 -2.52734c-24.6113 13.0635 -49.0469 12.6406 -72.0332 -3.08301c-21.9678 -15.0244 -31.9102 -36.6201 -26.4199 -62.9805c2.4082 -11.5703 -0.914062 -17.0635 -10.0967 -23.1367\nc-38.1895 -25.2578 -53.0879 -74.8604 -34.1855 -116.105c18.4355 -40.2295 51.3135 -59.6631 95.1748 -59.9951c0.700195 -0.00488281 163.728 -0.545898 163.728 0.154297c56.8857 0 113.778 -0.551758 170.652 0.229492\nc28.9375 0.397461 53.0498 13.2178 71.2803 35.6504zM443.952 134.157c-5.84863 -31.1572 -34.6221 -55.0967 -66.666 -55.0957c-16.9531 0.00195312 -32.0586 6.5459 -44.0791 17.7051c-27.6973 25.7139 -71.1406 74.9805 -95.9375 93.3877\nc-20.0557 14.8877 -41.9893 12.333 -60.2715 -3.78223c-49.9961 -44.0713 15.8594 -121.775 67.0625 -77.1885c4.54883 3.95996 7.84082 9.54297 12.7441 12.8447c8.18457 5.50879 20.7666 0.883789 13.168 -10.6221c-17.3574 -26.2842 -49.3301 -38.1973 -78.8623 -29.3008\nc-28.8975 8.70312 -48.8408 35.9678 -48.626 70.1787c1.22461 22.4844 12.3633 43.0596 35.4141 55.9648c22.5742 12.6377 46.3682 13.1455 66.9902 -2.47363c50.791 -38.4756 75.5781 -81.7451 107.296 -101.245c24.5586 -15.0996 54.2549 -7.36328 68.8232 17.5059\nc28.8301 49.209 -34.5918 105.016 -78.8682 63.46c-3.98828 -3.74414 -6.91699 -8.93164 -11.4092 -11.7197c-10.9756 -6.81152 -17.333 4.1123 -12.8096 10.3525c20.7031 28.5537 50.4639 40.4404 83.2715 28.2139c31.4287 -11.7139 49.1074 -44.3662 42.7598 -78.1855z\n\" />\n    <glyph glyph-name=\"rebel\" unicode=\"&#xf1d0;\" horiz-adv-x=\"512\" \nd=\"M256.5 -56c-139.3 0 -247.5 116.2 -243.3 254.1c2.7998 79.2002 43.2002 152.2 116.5 200.4c0.299805 0 1.89941 0.599609 1.09961 -0.799805c-5.7998 -5.5 -111.3 -129.8 -14.0996 -226.4c49.7998 -49.5 90 -2.5 90 -2.5c38.5 50.1006 -0.600586 125.9 -0.600586 125.9\nc-10 24.8994 -45.6992 40.0996 -45.6992 40.0996l28.7998 31.7998c24.3994 -10.5 43.2002 -38.6992 43.2002 -38.6992c0.799805 29.5996 -21.9004 61.3994 -21.9004 61.3994l44.5996 50.7002l44.3008 -50.0996c-20.5 -28.8008 -21.9004 -62.6006 -21.9004 -62.6006\nc13.7998 23 43.5 39.2998 43.5 39.2998l28.5 -31.7998c-27.4004 -8.89941 -45.4004 -39.8994 -45.4004 -39.8994c-15.7998 -28.5 -27.0996 -89.4004 0.600586 -127.301c32.3994 -44.5996 87.7002 2.80078 87.7002 2.80078c102.699 91.8994 -10.5 225 -10.5 225\nc-6.10059 5.5 0.799805 2.7998 0.799805 2.7998c50.0996 -36.5 114.6 -84.4004 116.2 -204.8c2 -145.601 -99.9004 -249.4 -242.4 -249.4z\" />\n    <glyph glyph-name=\"empire\" unicode=\"&#xf1d1;\" horiz-adv-x=\"496\" \nd=\"M287.6 393.8c-10.7998 2.2002 -22.0996 3.2998 -33.5 3.60059v18.1992c78.1006 -2.19922 146.101 -44 184.601 -106.6l-15.7998 -9.09961c-6.10059 9.69922 -12.7002 18.7998 -20.2002 27.0996l-18 -15.5c-26 29.5996 -61.4004 50.7002 -101.9 58.4004zM53.4004 125.6\nc3.89941 -10.7998 8.2998 -21.0996 13.5996 -31.0996l-15.7998 -9.09961c-17.1006 31.5996 -27.1006 68.0996 -27.1006 106.6s9.90039 75 27.1006 106.5l15.7998 -9.09961c-5.2998 -9.7002 -10 -20.2002 -13.5996 -31l22.6992 -7.7002\nc-6.39941 -18.2998 -9.69922 -38.2002 -9.69922 -58.7002s3.59961 -40.4004 10 -58.7002zM213.1 14l-4.69922 -23.7998c10.7998 -1.90039 22.1992 -3.2998 33.5 -3.60059v-18.2998c-78.1006 2.2998 -146.4 44.2998 -184.9 106.601l16 9.39941\nc5.7998 -9.7002 12.7002 -18.7998 20.2002 -27.3994l18 15.7998c26.0996 -29.6006 61.5 -50.7002 101.899 -58.7002zM93.2998 327.1c-7.5 -8.2998 -14.0996 -17.5 -20.0996 -27.1992l-15.7998 9.09961c38.5 62.5996 106.5 104.4 184.6 106.6v-18.1992\nc-11.4004 -0.300781 -22.7002 -1.40039 -33.5 -3.60059l4.7002 -23.7998c-40.5 -7.7002 -75.9004 -28.7998 -101.9 -58.4004zM402.7 56.9004c7.5 8.59961 14.3994 17.6992 20.0996 27.3994l16.1006 -9.39941c-38.5 -62.3008 -106.801 -104.4 -184.9 -106.601v18.2998\nc11.4004 0.300781 22.7002 1.7002 33.5 3.60059l-4.7002 23.7998c40.5 8 75.9004 29.0996 101.9 58.7002zM496 192c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248s248 -111 248 -248zM483.8 192c0 130.1 -105.7 235.8 -235.8 235.8\ns-235.8 -105.7 -235.8 -235.8s105.7 -235.8 235.8 -235.8s235.8 105.7 235.8 235.8zM444.8 298.6c17.2002 -31.5996 27.1006 -68.0996 27.1006 -106.6s-9.90039 -75 -27.1006 -106.4l-15.7998 9.10059c5.2998 10 9.7002 20.2002 13.5996 31l-23 7.7002\nc6.40039 18.2998 10 38.1992 10 58.6992s-3.2998 40.4004 -9.69922 58.7002l22.6992 7.7002c-3.59961 10.7998 -8.2998 21.2998 -13.5996 31zM261.8 120.9l13.2998 -66.7002c-8.59961 -1.7002 -17.6992 -2.7998 -27.0996 -2.7998s-18.5 1.09961 -27.0996 2.7998\nl13.2998 66.7002c-16.2998 3.2998 -30.5 11.5996 -40.7002 23.5l-51.2002 -44.8008c-11.8994 13.6006 -21.2998 29.4004 -27.0996 46.8008l64.2002 22.0996c-2.5 7.40039 -3.90039 15.2002 -3.90039 23.5s1.40039 16 3.90039 23.5l-64.5 22.0996\nc6.09961 17.5 15.5 33.2002 27.3994 46.8008l51.2002 -44.8008c10.2998 11.9004 24.4004 20.5 40.7002 23.8008l-13.2998 66.3994c8.59961 2 17.6992 2.7998 27.0996 2.7998s18.5 -0.899414 27.0996 -2.7998l-13.2998 -66.3994\nc16.2998 -3.30078 30.5 -11.9004 40.7002 -23.8008l51.2002 44.8008c11.8994 -13.6006 21.2998 -29.4004 27.3994 -46.8008l-64.5 -22.0996c2.5 -7.40039 3.90039 -15.2002 3.90039 -23.5s-1.40039 -16 -3.90039 -23.5l64.2002 -22.0996\nc-5.7998 -17.5 -15.2002 -33.2002 -27.0996 -46.8008l-51.2002 44.8008c-10.2998 -11.9004 -24.4004 -20.2002 -40.7002 -23.5z\" />\n    <glyph glyph-name=\"git-square\" unicode=\"&#xf1d2;\" \nd=\"M100.59 113.76c48.5703 -3.30957 58.9502 -2.10938 58.9502 -11.9395c0 -20 -65.5498 -20.0605 -65.5498 -1.52051c0.00976562 5.08984 3.29004 9.40039 6.59961 13.46zM128.54 230.4c30.96 0 31.7598 -44.4707 -0.75 -44.4707c-33 0 -31.54 44.4707 0.75 44.4707z\nM448 368v-352c0 -26.4961 -21.5039 -48 -48 -48h-352c-26.4961 0 -48 21.5039 -48 48v352c0 26.4961 21.5039 48 48 48h352c26.4961 0 48 -21.5039 48 -48zM221 298.69c0 -14.4902 8.37988 -22.8809 22.8604 -22.8809c14.7393 0 23.1299 8.39062 23.1299 22.8809\nc0 14.4893 -8.37012 22.3096 -23.1104 22.3096c-14.4795 0 -22.8799 -7.83984 -22.8799 -22.3096zM199.18 253h-49.5498c-25 6.5498 -81.5596 4.84961 -81.5596 -46.75c0 -18.7998 9.39941 -32 21.8496 -38.1104c-15.6895 -14.3701 -23.1201 -21.1396 -23.1201 -30.7393\nc0 -6.87012 2.79004 -13.2207 11.1807 -16.7607c-8.90039 -8.39941 -14 -14.4795 -14 -25.9199c0.0195312 -20.0693 17.5498 -31.7197 63.5391 -31.7197c44.2207 0 69.8701 16.5098 69.8701 45.7305c0 36.6699 -28.2295 35.3193 -94.7695 39.3799l8.37988 13.4297\nc17 -4.74023 74.1904 -6.23047 74.1904 42.4297c0 11.6904 -4.83008 19.8203 -9.40039 25.6699l23.3799 1.78027zM283.52 143.16l-13 1.78027c-3.81934 0.509766 -4.06934 1 -4.06934 5.08984v105.45h-52.6006l-2.79004 -20.5703c15.75 -5.5498 17 -4.86035 17 -10.1699\nv-74.7402c0 -5.62012 -0.30957 -4.58008 -17 -6.87012v-20.0596h72.4209zM384 133l-6.87012 22.3701c-40.9297 -15.3701 -37.8496 12.4102 -37.8496 16.7295v60.7207h37.8496v25.4102h-35.8203c-2.86914 0 -2 -2.52051 -2 38.6299h-24.1797\nc-2.79004 -27.7002 -11.6797 -38.8799 -34 -41.4199v-22.6201c20.4697 0 19.8203 0.849609 19.8203 -2.54004v-66.5703c0 -28.7197 11.4297 -40.9102 41.6699 -40.9102c14.4502 0 30.4502 4.83008 41.3799 10.2002z\" />\n    <glyph glyph-name=\"git\" unicode=\"&#xf1d3;\" horiz-adv-x=\"512\" \nd=\"M216.29 289.61l0.0400391 -34.5508l-37.4102 -2.83984c7.27051 -9.35938 15 -22.3701 15 -41.0693c0 -77.8906 -91.4297 -75.4707 -118.7 -67.8906l-13.4297 -21.5498c106.47 -6.5 151.63 -4.33984 151.63 -63c0 -46.7598 -41.04 -73.1797 -111.79 -73.1797\nc-73.5801 0 -101.63 18.71 -101.63 50.8193c0 18.3008 8.12988 28.04 22.4004 41.4502c-13.4199 5.66992 -17.8906 15.8105 -17.8906 26.8105c0 15.3594 11.9004 26.21 37 49.21c-20 9.76953 -35 30.9102 -35 61c0 82.5498 90.4902 85.2793 130.49 74.79h79.29z\nM152.87 47.71c0 15.7402 -16.6104 13.8096 -94.3203 19.1104c-5.2998 -6.54004 -10.5693 -13.4004 -10.5693 -21.54c0 -29.6699 104.89 -29.6299 104.89 2.42969zM102.06 182.29c52.0205 0 50.7402 71.1602 1.2002 71.1602c-51.6602 0 -54 -71.1602 -1.2002 -71.1602z\nM235.36 81.7803v32.0996c26.75 3.66016 27.2393 2 27.2393 11v119.51c0 8.5 -2.0498 7.37988 -27.2393 16.2607l4.46973 32.9199h84.1699v-168.71c0 -6.51074 0.400391 -7.32031 6.50977 -8.14062l20.7305 -2.83984v-32.0996h-115.88zM287.81 326.09\nc-23.1699 0 -36.5898 13.4297 -36.5898 36.6104c0 23.1797 13.4199 35.7695 36.5898 35.7695c23.5801 0 37 -12.6201 37 -35.7695c0 -23.1504 -13.4199 -36.6104 -37 -36.6104zM512 97.54c-17.4902 -8.53027 -43.0996 -16.2598 -66.2803 -16.2598\nc-48.3799 0 -66.6699 19.5 -66.6699 65.46v106.51c0 5.41992 1.0498 4.05957 -31.71 4.05957v36.1904c35.7803 4.07031 50 22 54.4697 66.2695h38.6309c0 -65.8291 -1.34082 -61.8096 3.25977 -61.8096h57.2998v-40.6504h-60.5596v-97.1494\nc0 -6.91992 -4.9209 -51.4102 60.5693 -26.8398z\" />\n    <glyph glyph-name=\"hacker-news\" unicode=\"&#xf1d4;\" \nd=\"M0 416h448v-448h-448v448zM21.2002 218.8h-0.200195c0.0996094 0.100586 0.200195 0.299805 0.299805 0.400391c0 -0.100586 0 -0.299805 -0.0996094 -0.400391zM239.2 164.9l80.7998 155.1h-34.7998c-54.7998 -101.2 -48.2998 -98.5996 -60.6006 -125.6\nc-10.0996 24.3994 -6.7998 27.2998 -59.2998 125.6h-37.2998l79.7998 -153.3v-102.7h31.4004v100.9z\" />\n    <glyph glyph-name=\"tencent-weibo\" unicode=\"&#xf1d5;\" horiz-adv-x=\"384\" \nd=\"M72.2998 -47.7998c1.40039 -19.9004 -27.5996 -22.2002 -29.7002 -2.90039c-11.5996 129.9 31.1006 239.5 101.4 313.2c-15.5996 34 9.2002 77.0996 50.5996 77.0996c30.3008 0 55.1006 -24.5996 55.1006 -55.0996c0 -44 -49.5 -70.7998 -86.9004 -45.0996\nc-65.7002 -71.3008 -101.399 -169.801 -90.5 -287.2zM192 447.9c92 0 166.6 -74.6006 166.6 -166.5c0 -102.301 -93.2998 -185.5 -204 -162.301c-19 4.7002 -12.5 33.2002 6.60059 29.1006c80.7998 -20.7998 167.7 42.2998 167.7 133.1c0 75.5 -61.5 136.9 -136.9 136.9\nc-101 0 -168.3 -106.601 -122 -199.2c9 -17.9004 -17.5996 -30.7998 -26.2998 -13.4004c-56 108.101 22.3994 242.301 148.3 242.301z\" />\n    <glyph glyph-name=\"qq\" unicode=\"&#xf1d6;\" \nd=\"M433.754 27.5547c-11.5264 -1.39258 -44.8604 52.7412 -44.8604 52.7412c0 -31.3447 -16.1357 -72.2471 -51.0508 -101.786c16.8418 -5.19141 54.8428 -19.167 45.8037 -34.4209c-7.31641 -12.3428 -125.511 -7.88086 -159.633 -4.03711\nc-34.1221 -3.84375 -152.315 -8.30566 -159.632 4.03711c-9.04492 15.25 28.918 29.2139 45.7832 34.415c-34.9199 29.5391 -51.0586 70.4453 -51.0586 101.792c0 0 -33.334 -54.1338 -44.8594 -52.7412c-5.37012 0.650391 -12.4238 29.6445 9.34668 99.7041\nc10.2617 33.0244 21.9951 60.4785 40.1445 105.779c-3.05566 116.898 45.2441 214.956 160.262 214.962c113.737 -0.00585938 163.156 -96.1328 160.264 -214.963c18.1182 -45.2227 29.9121 -72.8506 40.1445 -105.778c21.7676 -70.0596 14.7158 -99.0527 9.3457 -99.7041z\n\" />\n    <glyph glyph-name=\"weixin\" unicode=\"&#xf1d7;\" horiz-adv-x=\"576\" \nd=\"M385.2 280.4c-92.4004 0 -165.4 -69.1006 -165.3 -154c0 -14.2002 2.19922 -27.9004 6.19922 -40.8008c-6.19922 -0.5 -12.0996 -0.799805 -18.2998 -0.799805c-24.3994 0 -43.7998 4.90039 -68.2002 9.7002l-68 -34.0996l19.3008 58.5996\nc-48.6006 34.0996 -77.9004 78.2002 -77.9004 131.6c0 92.6006 87.5 165.4 194.7 165.4c95.5996 0 179.7 -58.2998 196.3 -136.7c-6.2002 0.799805 -12.4004 1.10059 -18.7998 1.10059zM280.7 333.3c-14.7002 0 -29.2002 -9.7002 -29.2998 -24.3994\nc0 -14.5 14.5 -24.2002 29.2998 -24.2002c14.5 0 24.2002 9.7002 24.2002 24.2002c0 14.6992 -9.7002 24.3994 -24.2002 24.3994zM144.3 284.7c14.7998 0 24.4004 9.59961 24.4004 24.2002c0 14.6992 -9.60059 24.3994 -24.4004 24.3994\nc-14.5 0 -29.2998 -9.59961 -29.2998 -24.3994c0 -14.5 14.7998 -24.2002 29.2998 -24.2002zM563 128.6c0 -43.7998 -29 -82.6992 -68.2002 -112.1l14.7998 -48.5996l-53.3994 29.2998c-19.7002 -4.7998 -39.2998 -9.90039 -58.6006 -9.90039\nc-92.5996 0 -165.399 63.4004 -165.399 141.3c0 77.9004 72.7002 141.301 165.399 141.301c87.5 0 165.4 -63.4004 165.4 -141.301zM343.9 153.1c14.6992 0 24.3994 9.60059 24.3994 19.6006c0 9.59961 -9.59961 19.2998 -24.3994 19.2998\nc-9.60059 0 -19.3008 -9.59961 -19.3008 -19.2998c0 -9.90039 9.60059 -19.6006 19.3008 -19.6006zM451 153.1c14.5 0 24.5 9.60059 24.4004 19.6006c0 9.59961 -9.90039 19.2998 -24.4004 19.2998c-9.59961 0 -19.2998 -9.59961 -19.2998 -19.2998\nc0 -9.90039 9.59961 -19.6006 19.2998 -19.6006z\" />\n    <glyph glyph-name=\"slideshare\" unicode=\"&#xf1e7;\" horiz-adv-x=\"512\" \nd=\"M187.7 294.3c34 0 61.7002 -25.7002 61.7002 -57.7002c0 -31.6992 -27.7002 -57.6992 -61.7002 -57.6992s-61.7002 26 -61.7002 57.6992c0 32 27.7002 57.7002 61.7002 57.7002zM331.1 294.3c34.3008 0 61.8008 -25.7002 61.7002 -57.7002\nc0 -31.6992 -27.3994 -57.6992 -61.7002 -57.6992c-34 0 -61.6992 26 -61.6992 57.6992c0 32 27.6992 57.7002 61.6992 57.7002zM487.7 204.3c15.2002 10.5 25.2002 -4 16.0996 -17.7998c-18.2998 -22.5996 -53.2002 -50.2998 -106.3 -72\nc56.2998 -191.7 -137.4 -222.3 -134.3 -124c0 0.700195 -0.299805 53.7998 -0.299805 93.5c-4.30078 0.799805 -8.60059 2 -13.7002 3.09961c0 -40 -0.299805 -95.8994 -0.299805 -96.5996c3.09961 -98.2002 -190.601 -67.5996 -134.301 124.1\nc-53.1992 21.7002 -88 49.4004 -106.3 72c-9.09961 13.7002 0.900391 28.3008 16 17.7002c2 -1.39941 4.2998 -2.89941 6.2998 -4.2998v198.3c0 27.4004 20.6006 49.7002 46 49.7002h359.101c25.3994 0 46 -22.2998 46 -49.7002v-198.3zM457.2 185.1h0.0996094v190.601\nc0 32.7998 -10.5996 45.7002 -40.8994 45.7002h-317.7c-31.7002 0 -40.6006 -10.8008 -40.6006 -45.7002v-192.4c67.7002 -35.3994 125.7 -29.0996 157.4 -28c13.4004 0.299805 22 -2.2998 27.0996 -7.7002c1.7002 -1.59961 10 -9.39941 20.3008 -17.0996\nc1.09961 15.7998 10 25.7998 33.6992 24.9004c32.3008 -1.40039 91.7002 -7.7002 160.601 29.6992z\" />\n    <glyph glyph-name=\"twitch\" unicode=\"&#xf1e8;\" \nd=\"M40.0996 416h397.9v-274.2l-117 -117h-87l-56.7998 -56.7998h-60.2002v56.7998h-107v314.3zM397.9 161.9v214h-321v-280.9h90.2998v-56.7998l56.7998 56.7998h107zM331 299v-116.9h-40.0996v116.9h40.0996zM224 299v-116.9h-40.0996v116.9h40.0996z\" />\n    <glyph glyph-name=\"yelp\" unicode=\"&#xf1e9;\" horiz-adv-x=\"384\" \nd=\"M42.9004 207.68l99.6191 -48.6094c19.2002 -9.40039 16.2002 -37.5107 -4.5 -42.71l-107.52 -26.8105c-1.51074 -0.379883 -4 -0.6875 -5.55762 -0.6875c-11.2676 0 -21.415 9.08887 -22.6523 20.2881c-0.708984 6.18164 -1.28516 16.25 -1.28516 22.4727\nc0 17.8105 4.60742 45.9658 10.2852 62.8467c2.88574 8.56836 12.5664 15.5215 21.6074 15.5215c2.9082 0 7.38867 -1.03516 10.0029 -2.31152zM86.9004 -31.5703c-5.48535 3.75195 -9.92773 12.1904 -9.92773 18.8359c0 4.8291 2.61914 11.6631 5.84766 15.2539\nl74.21 82.4004c14.3096 15.8105 40.5098 5.2002 39.8096 -16.0996l-3.89941 -110.82c-0.412109 -12.1484 -10.6123 -22.0078 -22.7676 -22.0078c-1.07129 0 -2.79688 0.146484 -3.85254 0.328125c-23.8691 4.04199 -59.4492 18.4277 -79.4199 32.1094zM232.24 78.3496\nc-11.2998 18.1104 6.2002 40.4102 26.5098 33.9102l105.42 -34.2598c8.69043 -2.88965 15.7422 -12.667 15.7422 -21.8252c0 -2.8125 -0.963867 -7.16504 -2.15234 -9.71484c-10.418 -21.8799 -34.0322 -52.1689 -52.71 -67.6104\nc-3.50586 -2.88867 -10.0391 -5.2334 -14.582 -5.2334c-6.99707 0 -15.6963 4.80859 -19.418 10.7334zM380.57 210.58c1.04688 -2.41602 1.93652 -6.5127 1.93652 -9.14551c0 -9.49805 -7.39551 -19.3828 -16.5068 -22.0645l-106.64 -30.5098\nc-20.5 -5.90039 -37.1006 17.0098 -25.2002 34.71l62 91.9199c3.75 5.55664 12.2354 10.0654 18.9385 10.0654c4.74512 0 11.4932 -2.53809 15.0615 -5.66602c18.166 -16.0361 40.75 -47.0869 50.4102 -69.3096zM62.1104 417.82\nc29.4697 14.0293 79.793 27.5137 112.33 30.0996c0.503906 0.0410156 1.32422 0.0742188 1.83008 0.0742188c12.5146 0 22.6709 -10.1562 22.6709 -22.6699c0 -0.0566406 -0.000976562 -0.147461 -0.000976562 -0.204102v-208.34\nc0 -23.2998 -30.9102 -31.6006 -42.6104 -11.4004l-104.12 180.44c-1.68164 2.92188 -3.0459 8.0293 -3.0459 11.4014c0 7.93066 5.7998 17.1592 12.9463 20.5986z\" />\n    <glyph glyph-name=\"paypal\" unicode=\"&#xf1ed;\" horiz-adv-x=\"384\" \nd=\"M111.4 152.1c-3.5 -19.1992 -17.4004 -108.699 -21.5 -134c-0.300781 -1.7998 -1 -2.5 -3 -2.5h-74.6006c-7.59961 0 -13.0996 6.60059 -12.0996 13.9004l58.5996 371.9c1.5 9.59961 10.1006 16.8994 20 16.8994c152.3 0 165.101 3.7002 204 -11.3994\nc60.1006 -23.3008 65.6006 -79.5 44 -140.301c-21.5 -62.5996 -72.5 -89.5 -140.1 -90.2998c-43.4004 -0.700195 -69.5 7 -75.2998 -24.2002zM357.1 296c28.4004 -21.2002 30.3008 -57.7998 23.8008 -92.5996c-16.5 -83.5 -71.9004 -112.301 -142.9 -112.301\nc-15 0 -24.7002 2.30078 -29.2998 -19.6992c-15.5 -97.4004 -13.7002 -85.9004 -14.4004 -91.3008c-1.7002 -8.59961 -8.7998 -14.8994 -17.3994 -14.8994h-63.5c-7.10059 0 -11.6006 5.7998 -10.6006 12.8994c0 0 4.5 29.3008 27.1006 169.7\nc0.799805 6.10059 4.7998 9.40039 10.8994 9.40039c54 0 164.601 -9.90039 204.5 103.899c3.7002 11.1006 6.7998 22.2002 8.7998 33.6006c0.5 3.09961 1.2002 2.59961 3 1.2998z\" />\n    <glyph glyph-name=\"google-wallet\" unicode=\"&#xf1ee;\" \nd=\"M156.8 321.2c37.6006 -60.6006 64.2002 -113.101 84.2998 -162.5c-8.2998 -33.7998 -18.7998 -66.5 -31.2998 -98.2998c-13.2002 52.2998 -26.5 101.3 -56 148.5c6.5 36.3994 2.2998 73.5996 3 112.3zM109.3 248c5 0 10 -2.5 13 -6.5\nc43.7998 -59.7998 66.2998 -123.8 82.5 -193.5h-103.5c-20 69.5 -49.5 133 -91.7002 187.3c-4 5.2002 0 12.7002 6.5 12.7002h93.2002zM157.1 336h108.7c74.7998 -103 131.2 -230 143.2 -368h-113.7c-8.2002 133.5 -69.7002 260 -138.2 368zM408.9 404.5\nc19 -67.5 31.0996 -139 31.0996 -212.6c0 -69.5 -9.5 -142.5 -25.2998 -203c-10.9004 92.5 -42.4004 184.6 -90.6006 270.8c-4.19922 50.5 -13.2998 99.5 -26.5 146c-1.19922 5.2998 2.5 10.2998 7.80078 10.2998h88.2998c7 0 13.3994 -4.7002 15.2002 -11.5z\" />\n    <glyph glyph-name=\"cc-visa\" unicode=\"&#xf1f0;\" horiz-adv-x=\"576\" \nd=\"M470.1 216.7c0 0 7.60059 -37.2002 9.30078 -45h-33.4004c3.2998 8.89941 16 43.5 16 43.5c-0.200195 -0.299805 3.2998 9.09961 5.2998 14.8994zM576 368v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h480\nc26.5 0 48 -21.5 48 -48zM152.5 116.8l63.2002 155.2h-42.5l-39.2998 -106l-4.30078 21.5l-14 71.4004c-2.2998 9.89941 -9.39941 12.6992 -18.1992 13.0996h-64.7002l-0.700195 -3.09961c15.7998 -4 29.9004 -9.80078 42.2002 -17.1006l35.7998 -135h42.5zM246.9 116.6\nl25.1992 155.4h-40.1992l-25.1006 -155.4h40.1006zM386.8 167.4c0.200195 17.6992 -10.5996 31.1992 -33.7002 42.2998c-14.0996 7.09961 -22.6992 11.8994 -22.6992 19.2002c0.199219 6.59961 7.2998 13.3994 23.0996 13.3994\nc13.0996 0.299805 22.7002 -2.7998 29.9004 -5.89941l3.59961 -1.7002l5.5 33.5996c-7.90039 3.10059 -20.5 6.60059 -36 6.60059c-39.7002 0 -67.5996 -21.2002 -67.7998 -51.4004c-0.299805 -22.2998 20 -34.7002 35.2002 -42.2002\nc15.5 -7.59961 20.7998 -12.5996 20.7998 -19.2998c-0.200195 -10.4004 -12.6006 -15.2002 -24.1006 -15.2002c-16 0 -24.5996 2.5 -37.6992 8.2998l-5.30078 2.5l-5.59961 -34.8994c9.40039 -4.2998 26.7998 -8.10059 44.7998 -8.2998\nc42.2002 -0.100586 69.7002 20.7998 70 53zM528 116.6l-32.4004 155.4h-31.0996c-9.59961 0 -16.9004 -2.7998 -21 -12.9004l-59.7002 -142.5h42.2002s6.90039 19.2002 8.40039 23.3008h51.5996c1.2002 -5.5 4.7998 -23.3008 4.7998 -23.3008h37.2002z\" />\n    <glyph glyph-name=\"cc-mastercard\" unicode=\"&#xf1f1;\" horiz-adv-x=\"576\" \nd=\"M482.9 37.7002c0 -6.7998 -4.60059 -11.7002 -11.2002 -11.7002c-6.7998 0 -11.2002 5.2002 -11.2002 11.7002s4.40039 11.7002 11.2002 11.7002c6.59961 0 11.2002 -5.2002 11.2002 -11.7002zM172.1 49.4004c6.5 0 10.8008 -5.2002 10.9004 -11.7002\nc0 -6.7998 -4.40039 -11.7002 -10.9004 -11.7002c-7.09961 0 -11.1992 5.2002 -11.1992 11.7002s4.09961 11.7002 11.1992 11.7002zM289.6 49.7002c5.2002 0 8.7002 -3 9.60059 -8.7002h-19.1006c0.800781 5.2002 4.10059 8.7002 9.5 8.7002zM397.4 49.4004\nc6.7998 0 11.1992 -5.2002 11.1992 -11.7002c0 -6.7998 -4.39941 -11.7002 -11.1992 -11.7002c-6.80078 0 -10.9004 5.2002 -10.9004 11.7002s4.09961 11.7002 10.9004 11.7002zM503.3 23.2998c0 -0.299805 0.299805 -0.5 0.299805 -1.09961\nc0 -0.299805 -0.299805 -0.5 -0.299805 -1.10059c-0.299805 -0.299805 -0.299805 -0.5 -0.5 -0.799805c-0.299805 -0.299805 -0.5 -0.5 -1.09961 -0.5c-0.299805 -0.299805 -0.5 -0.299805 -1.10059 -0.299805c-0.299805 0 -0.5 0 -1.09961 0.299805\nc-0.299805 0 -0.5 0.299805 -0.799805 0.5c-0.299805 0.299805 -0.5 0.5 -0.5 0.799805c-0.299805 0.5 -0.299805 0.800781 -0.299805 1.10059c0 0.5 0 0.799805 0.299805 1.09961c0 0.5 0.299805 0.799805 0.5 1.10059c0.299805 0.299805 0.5 0.299805 0.799805 0.5\nc0.5 0.299805 0.799805 0.299805 1.09961 0.299805c0.5 0 0.800781 0 1.10059 -0.299805c0.5 -0.300781 0.799805 -0.300781 1.09961 -0.5c0.299805 -0.200195 0.200195 -0.600586 0.5 -1.10059zM501.1 21.9004c0.5 0 0.5 0.299805 0.800781 0.299805\nc0.299805 0.299805 0.299805 0.5 0.299805 0.799805s0 0.5 -0.299805 0.799805c-0.300781 0 -0.5 0.299805 -1.10059 0.299805h-1.59961v-3.5h0.799805v1.40039h0.299805l1.10059 -1.40039h0.799805zM576 367v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48\nv352c0 26.5 21.5 48 48 48h480c26.5 0 48 -21.5 48 -48zM64 227.4c0 -76.5 62.0996 -138.5 138.5 -138.5c27.2002 0 53.9004 8.19922 76.5 23.0996c-72.9004 59.2998 -72.4004 171.2 0 230.5c-22.5996 15 -49.2998 23.0996 -76.5 23.0996\nc-76.4004 0.100586 -138.5 -62 -138.5 -138.199zM288 118.6c70.5 55 70.2002 162.2 0 217.5c-70.2002 -55.2998 -70.5 -162.6 0 -217.5zM145.7 42.2998c0 8.7002 -5.7002 14.4004 -14.7002 14.7002c-4.59961 0 -9.5 -1.40039 -12.7998 -6.5\nc-2.40039 4.09961 -6.5 6.5 -12.2002 6.5c-3.7998 0 -7.59961 -1.40039 -10.5996 -5.40039v4.40039h-8.2002v-36.7002h8.2002c0 18.9004 -2.5 30.2002 9 30.2002c10.1992 0 8.19922 -10.2002 8.19922 -30.2002h7.90039c0 18.2998 -2.5 30.2002 9 30.2002\nc10.2002 0 8.2002 -10 8.2002 -30.2002h8.2002v23h-0.200195zM190.6 56h-7.89941v-4.40039c-2.7002 3.30078 -6.5 5.40039 -11.7002 5.40039c-10.2998 0 -18.2002 -8.2002 -18.2002 -19.2998c0 -11.2002 7.90039 -19.2998 18.2002 -19.2998\nc5.2002 0 9 1.89941 11.7002 5.39941v-4.59961h7.89941v36.7998zM231.1 30.4004c0 15 -22.8994 8.19922 -22.8994 15.1992c0 5.7002 11.8994 4.80078 18.5 1.10059l3.2998 6.5c-9.40039 6.09961 -30.2002 6 -30.2002 -8.2002c0 -14.2998 22.9004 -8.2998 22.9004 -15\nc0 -6.2998 -13.5 -5.7998 -20.7002 -0.799805l-3.5 -6.2998c11.2002 -7.60059 32.5996 -6 32.5996 7.5zM266.5 21.0996l-2.2002 6.80078c-3.7998 -2.10059 -12.2002 -4.40039 -12.2002 4.09961v16.5996h13.1006v7.40039h-13.1006v11.2002h-8.19922v-11.2002h-7.60059\nv-7.2998h7.60059v-16.7002c0 -17.5996 17.2998 -14.4004 22.5996 -10.9004zM279.8 34.5h27.5c0 16.2002 -7.39941 22.5996 -17.3994 22.5996c-10.6006 0 -18.2002 -7.89941 -18.2002 -19.2998c0 -20.5 22.5996 -23.8994 33.7998 -14.2002l-3.7998 6\nc-7.7998 -6.39941 -19.6006 -5.7998 -21.9004 4.90039zM338.9 56c-4.60059 2 -11.6006 1.7998 -15.2002 -4.40039v4.40039h-8.2002v-36.7002h8.2002v20.7002c0 11.5996 9.5 10.0996 12.7998 8.40039zM349.5 37.7002c0 11.3994 11.5996 15.0996 20.7002 8.39941l3.7998 6.5\nc-11.5996 9.10059 -32.7002 4.10059 -32.7002 -15c0 -19.7998 22.4004 -23.7998 32.7002 -15l-3.7998 6.5c-9.2002 -6.5 -20.7002 -2.59961 -20.7002 8.60059zM416.2 56h-8.2002v-4.40039c-8.2998 11 -29.9004 4.80078 -29.9004 -13.8994\nc0 -19.2002 22.4004 -24.7002 29.9004 -13.9004v-4.59961h8.2002v36.7998zM449.9 56c-2.40039 1.2002 -11 2.90039 -15.2002 -4.40039v4.40039h-7.90039v-36.7002h7.90039v20.7002c0 11 9 10.2998 12.7998 8.40039zM490.2 70.9004h-7.90039v-19.3008\nc-8.2002 10.9004 -29.8994 5.10059 -29.8994 -13.8994c0 -19.4004 22.5 -24.6006 29.8994 -13.9004v-4.59961h7.90039v51.7002zM497.8 146v-4.59961h0.799805v4.59961h1.90039v0.799805h-4.59961v-0.799805h1.89941zM504.4 22.2002c0 0.5 0 1.09961 -0.300781 1.59961\nc-0.299805 0.299805 -0.5 0.799805 -0.799805 1.10059c-0.299805 0.299805 -0.799805 0.5 -1.09961 0.799805c-0.5 0 -1.10059 0.299805 -1.60059 0.299805c-0.299805 0 -0.799805 -0.299805 -1.39941 -0.299805c-0.5 -0.299805 -0.799805 -0.5 -1.10059 -0.799805\nc-0.5 -0.300781 -0.799805 -0.800781 -0.799805 -1.10059c-0.299805 -0.5 -0.299805 -1.09961 -0.299805 -1.59961c0 -0.299805 0 -0.799805 0.299805 -1.40039c0 -0.299805 0.299805 -0.799805 0.799805 -1.09961c0.300781 -0.299805 0.5 -0.5 1.10059 -0.799805\nc0.5 -0.300781 1.09961 -0.300781 1.39941 -0.300781c0.5 0 1.10059 0 1.60059 0.300781c0.299805 0.299805 0.799805 0.5 1.09961 0.799805s0.5 0.799805 0.799805 1.09961c0.300781 0.600586 0.300781 1.10059 0.300781 1.40039zM507.6 146.9h-1.39941l-1.60059 -3.5\nl-1.59961 3.5h-1.40039v-5.40039h0.800781v4.09961l1.59961 -3.5h1.09961l1.40039 3.5v-4.09961h1.09961v5.40039zM512 227.4c0 76.1992 -62.0996 138.3 -138.5 138.3c-27.2002 0 -53.9004 -8.2002 -76.5 -23.1006c72.0996 -59.2998 73.2002 -171.5 0 -230.5\nc22.5996 -15 49.5 -23.0996 76.5 -23.0996c76.4004 -0.0996094 138.5 61.9004 138.5 138.4z\" />\n    <glyph glyph-name=\"cc-discover\" unicode=\"&#xf1f2;\" horiz-adv-x=\"576\" \nd=\"M520.4 251.9c0 -8.40039 -5.5 -12.8008 -15.8008 -12.8008h-4.69922v24.9004h4.89941c10.1006 0 15.6006 -4.2002 15.6006 -12.0996zM528 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h480z\nM483.9 277.1v-82h16v32.8008h2.19922l22.2002 -32.8008h19.6006l-25.8008 34.4004c12.1006 2.5 18.7002 10.5996 18.7002 23.2002c0 28.5 -30.2998 24.3994 -52.8994 24.3994zM428 277v-82h45.2998v13.7998h-29.2998v22.2002h28.2998v13.7998h-28.2998v18.2002h29.2998v14\nh-45.2998zM359.3 277h-17.5l35 -84.2002h8.60059l35.5 84.2002h-17.5l-22.2002 -55.2002zM303.4 280c-24.6006 0 -44.6006 -19.9004 -44.6006 -44.5996c0 -24.6006 19.9004 -44.6006 44.6006 -44.6006c24.5996 0 44.5996 19.9004 44.5996 44.6006\nc0 24.5996 -19.9004 44.5996 -44.5996 44.5996zM254.1 273.9c-30.1992 15 -63.2998 -6.80078 -63.2998 -38c0 -32.5 33.6006 -52.5 63.2998 -38.2002v19c-19.2998 -19.2998 -46.7998 -5.7998 -46.7998 19.2002c0 23.6992 26.7002 39.0996 46.7998 19v19zM156.9 207.6\nc-7.60059 0 -13.8008 3.7002 -17.5 10.8008l-10.3008 -9.90039c17.8008 -26.0996 56.6006 -18.2002 56.6006 11.2998c0 13.1006 -5.40039 19 -23.6006 25.6006c-9.59961 3.39941 -12.2998 5.89941 -12.2998 10.2998c0 8.7002 14.5 14.0996 24.9004 2.5l8.39941 10.7998\nc-19.0996 17.0996 -49.6992 8.90039 -49.6992 -14.2998c0 -11.2998 5.19922 -17.2002 20.1992 -22.7002c25.7002 -9.09961 14.7002 -24.4004 3.30078 -24.4004zM55.4004 195c30.8994 0 44.0996 22.4004 44.0996 40.9004c0 24.0996 -18 41.0996 -44.0996 41.0996h-23.4004\nv-82h23.4004zM122.9 195v82h-16v-82h16zM544 15v145c-33.2998 -20.7998 -226.4 -124.4 -416 -160h401c8.2002 0 15 6.7998 15 15zM74.0996 256.4c5.7002 -5 8.90039 -12.6006 8.90039 -20.5c0 -7.90039 -3.2002 -15.5 -8.90039 -20.7002\nc-4.89941 -4.40039 -11.5996 -6.40039 -21.8994 -6.40039h-4.2002v54.2002h4.2002c10.2998 0 16.7002 -1.7002 21.8994 -6.59961z\" />\n    <glyph glyph-name=\"cc-amex\" unicode=\"&#xf1f3;\" horiz-adv-x=\"576\" \nd=\"M325.1 280.2c0.100586 -8 -4.2998 -15.7002 -11.6992 -18.7002c9.5 -3.2998 11 -9.2002 11 -18.4004v-13.5h-16.6006c-0.299805 14.8008 3.60059 25.1006 -14.7998 25.1006h-18v-25.1006h-16.4004v69.3008l39.1006 -0.300781c13.2998 0 27.3994 -2 27.3994 -18.3994z\nM295.7 268.9c5.7002 0 11 1.2998 11 7.89941c0 6.40039 -5.60059 7.40039 -10.7002 7.40039h-21v-15.2998h20.7002zM279 179.4c15.5996 0 27.9004 -5.40039 27.9004 -22.7002c0 -27.9004 -30.4004 -23.2998 -49.3008 -23.2998l-0.0996094 -23.3008h-32.2002l-20.3994 23\nl-21.3008 -23h-65.3994l0.0996094 69.3008h66.5l20.5 -22.8008l21 22.8008h52.7002zM175.2 124.7l19 20.2002l-17.9004 20.1992h-41.7002v-12.5h36.3008v-14.0996h-36.3008v-13.7998h40.6006zM241 116.5v55.5l-25.2998 -27.4004zM278.8 147.5\nc5.90039 0 10.5 2.7998 10.5 9.2002c0 6.09961 -4.59961 8.39941 -10.2002 8.39941h-21.5v-17.5996h21.2002zM247.2 284.2h-38.9004v-12.5h37.7998v-14.1006h-37.7998v-13.7998h38.9004v-14.2998h-55.5v69.2998h55.5v-14.5996zM576 192.6h-0.200195h0.200195zM381.4 160.7\nc-0.100586 -7.60059 -4.2002 -15.2998 -11.9004 -18.4004c9.2002 -3.2998 11 -9.5 11 -18.3994l-0.0996094 -13.8008h-16.6006l0.100586 11.5c0 11.8008 -3.80078 13.8008 -14.8008 13.8008h-17.5996l-0.0996094 -25.3008h-16.6006l0.100586 69.3008h39.3994\nc13 0 27.1006 -2.30078 27.1006 -18.7002zM352.2 149.5c5.59961 0 11 1.2998 11 8.2002c0 6.39941 -5.60059 7.39941 -10.7002 7.39941h-21v-15.5996h20.7002zM179.4 229.5h-16.8008v54.2002l-24 -54.2002h-14.5996l-24 54.2002v-54.2002h-33.7998l-6.40039 15.2998h-34.5\nl-6.39941 -15.2998h-17.9004l29.7002 69.2998h24.5l28.0996 -65.7002v65.7002h27.1006l21.6992 -47l19.7002 47h27.6006v-69.2998zM31.2002 259.2h22.7002l-11.5 27.5996zM508.6 100.3c34.8008 0 54.8008 -2.2002 67.5 6.10059v-90.4004c0 -26.5 -21.5 -48 -48 -48h-480.1\nc-26.5 0 -48 21.5 -48 48v203.7h26.5996c4.2002 10.0996 2.2002 5.2998 6.40039 15.2998h19.2002c4.2002 -10 2.2002 -5.2002 6.39941 -15.2998h52.9004v11.3994c2.2002 -5 1.09961 -2.5 5.09961 -11.3994h29.5c2.40039 5.5 2.60059 5.7998 5.10059 11.3994v-11.3994h135.5\nv25.0996c6.39941 0 8 0.100586 9.7998 -0.200195c0 0 -0.200195 -10.8994 0.0996094 -24.7998h66.5v8.90039c7.40039 -5.90039 17.4004 -8.90039 29.7002 -8.90039h26.7998c4.2002 10.1006 2.2002 5.2998 6.40039 15.2998h19c6.5 -15 0.200195 -0.5 6.59961 -15.2998\nh52.8008v21.9004c11.7998 -19.7002 7.7998 -12.9004 13.1992 -21.9004h41.6006v92h-39.9004v-18.3994c-12.2002 20.1992 -6.2998 10.3994 -11.2002 18.3994h-43.2998v-20.5996c-6.2002 14.5996 -4.59961 10.7998 -8.7998 20.5996h-32.4004\nc-0.399414 0 -2.2998 -0.200195 -2.2998 0.299805h-27.5996c-12.7998 0 -23.1006 -3.19922 -30.7002 -9.2998v9.2998h-39.9004v-5.2998c-10.7998 6.10059 -20.6992 5.10059 -64.3994 5.2998c-0.100586 0 -11.6006 0.100586 -11.6006 0h-103\nc-2.5 -6.09961 -6.7998 -16.3994 -12.5996 -30c-2.7998 6 -11 23.8008 -13.9004 30h-46v-21.0996c-7.39941 17.4004 -4.69922 11 -9 21.0996h-39.6992c-3.40039 -7.89941 -13.7002 -32 -23.1006 -53.8994v109.8c0 26.5 21.5 48 48 48h480c26.5 0 48 -21.5 48 -48v-175.4\nc-37.7002 0.200195 -44 0.900391 -54.2998 -5v5c-45.2998 0 -53.5 1.7002 -64.9004 -5.19922v5.19922h-78.1992v-5.09961c-11.4004 6.5 -21.4004 5.09961 -75.7002 5.09961v-5.59961c-6.2998 3.7002 -14.5 5.59961 -24.2998 5.59961h-58\nc-3.5 -3.7998 -12.5 -13.6992 -15.7002 -17.1992c-12.7002 14.0996 -10.5 11.5996 -15.5 17.1992h-83.1006v-92.2998h82c3.30078 3.5 12.9004 13.9004 16.1006 17.4004c12.7002 -14.2998 10.2998 -11.7002 15.3994 -17.4004h48.9004\nc0 14.7002 0.0996094 8.2998 0.0996094 23c11.5 -0.200195 24.3008 0.200195 34.3008 6.2002c0 -13.9004 -0.100586 -17.0996 -0.100586 -29.2002h39.6006c0 18.5 0.0996094 7.40039 0.0996094 25.2998c6.2002 0 7.7002 0 9.40039 -0.0996094\nc0.0996094 -1.2998 0 0 0 -25.2002c152.8 0 145.899 -1.09961 156.699 4.5v-4.5zM544.9 164.8c-4.60059 0 -9.2002 -0.700195 -9.2002 -6.5c0 -12.2002 28.7998 0.299805 39.2998 -13.5v-25.7998c-4.90039 -7.09961 -14.0996 -8.90039 -22.5 -8.90039h-32l0.0996094 14.8008\nh32c4.10059 0 8.40039 1.2998 8.40039 6.39941c0 14.6006 -42.7002 -5.59961 -42.7002 27.4004c0 14.0996 11 20.7002 23.7998 20.7002h32.9004v-14.6006h-30.0996zM487.9 125c4.09961 0 8.69922 1 8.7998 6.40039c0 14.8994 -42.7002 -5.60059 -42.7002 27.3994\nc0 14.1006 10.7002 20.7002 23.5 20.7002h33.2002v-14.5996h-30.4004c-4.2998 0 -9.2002 -0.800781 -9.2002 -6.40039c0 -15.0996 42.9004 6.90039 42.9004 -26.2998c0 -16.4004 -11.4004 -22 -26.2002 -22h-32.2002l0.100586 14.7998h32.2002zM445.7 165.1h-38.5v-12.5\nh37.7998v-14.0996h-37.9004v-13.7998l38.6006 -0.299805l-0.100586 -14.3008h-55.1992l0.0996094 69.3008h55.2002v-14.3008zM389.4 273.2c0.299805 0.299805 1.69922 1 7.2998 1c1 0 2 -0.100586 3.09961 -0.100586l-7.2998 -16.8994\nc-2.2998 0 -3.2002 0.399414 -3.40039 0.5c-0.199219 0.200195 -1.09961 1.89941 -1.09961 7.89941c0 5.40039 1.09961 7.40039 1.40039 7.60059zM409.8 283.7h-0.0996094h0.0996094zM393.6 298.9h16.1006v-15.2002c-17.4004 0.299805 -33.1006 4.09961 -33.1006 -19.7002\nc0 -11.7998 2.80078 -19.9004 16.1006 -19.9004h7.39941l23.5 54.5h24.8008l27.8994 -65.3994v65.3994h25.2998l29.1006 -48.0996v48.0996h16.8994v-69h-23.5996l-31.2002 51.9004v-51.9004h-33.7002l-6.59961 15.3008h-34.2998l-6.40039 -15.3008h-19.2002\nc-22.7998 0 -33 11.8008 -33 34c0 23.3008 10.5 35.3008 34 35.3008zM435.7 286.8l-11.6006 -27.5996h22.8008zM334.6 298.8h16.9004v-69.2998h-16.9004v69.2998z\" />\n    <glyph glyph-name=\"cc-paypal\" unicode=\"&#xf1f4;\" horiz-adv-x=\"576\" \nd=\"M186.3 189.8c0 -12.2002 -9.7002 -21.5 -22 -21.5c-9.2002 0 -16 5.2002 -16 15c0 12.2002 9.5 22 21.7002 22c9.2998 0 16.2998 -5.7002 16.2998 -15.5zM80.5 238.3c11.2998 0 19.7998 -1.5 17.5 -14.8994c-2 -12.7002 -10.5 -14.2002 -21.5 -14.2002l-8.2002 -0.299805\nl4.2998 26.6992c0.200195 1.7002 1.7002 2.7002 3.2002 2.7002h4.7002zM364.5 238.3c8.5 0 18 -0.5 18.0996 -11.0996c0 -15 -9 -18 -22 -18l-8 -0.299805l4.2002 26.6992c0.200195 1.7002 1.40039 2.7002 3.2002 2.7002h4.5zM576 368v-352c0 -26.5 -21.5 -48 -48 -48h-480\nc-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h480c26.5 0 48 -21.5 48 -48zM128.3 232.6c0 21 -16.2002 28 -34.7002 28h-40c-2.5 0 -5 -2 -5.19922 -4.69922l-16.4004 -102.101c-0.299805 -2 1.2002 -4 3.2002 -4h19c2.7002 0 5.2002 2.90039 5.5 5.7002l4.5 26.5996\nc1 7.2002 13.2002 4.7002 18 4.7002c28.5996 0 46.0996 17 46.0996 45.7998zM212.5 223.8h-19c-3.7998 0 -4 -5.5 -4.2002 -8.2002c-5.7998 8.5 -14.2002 10 -23.7002 10c-24.5 0 -43.1992 -21.5 -43.1992 -45.1992c0 -19.5 12.1992 -32.2002 31.6992 -32.2002\nc9 0 20.2002 4.89941 26.5 11.8994c-0.5 -1.5 -1 -4.69922 -1 -6.19922c0 -2.30078 1 -4 3.2002 -4h17.2002c2.7002 0 5 2.89941 5.5 5.69922l10.2002 64.3008c0.299805 1.89941 -1.2002 3.89941 -3.2002 3.89941zM253 125.9l63.7002 92.5996c0.5 0.5 0.5 1 0.5 1.7002\nc0 1.7002 -1.5 3.5 -3.2002 3.5h-19.2002c-1.7002 0 -3.5 -1 -4.5 -2.5l-26.5 -39l-11 37.5c-0.799805 2.2002 -3 4 -5.5 4h-18.7002c-1.69922 0 -3.19922 -1.7998 -3.19922 -3.5c0 -1.2002 19.5 -56.7998 21.1992 -62.1006c-2.69922 -3.7998 -20.5 -28.5996 -20.5 -31.5996\nc0 -1.7998 1.5 -3.2002 3.2002 -3.2002h19.2002c1.7998 0.100586 3.5 1.10059 4.5 2.60059zM412.3 232.6c0 21 -16.2002 28 -34.7002 28h-39.6992c-2.7002 0 -5.2002 -2 -5.5 -4.69922l-16.2002 -102c-0.200195 -2 1.2998 -4 3.2002 -4h20.5c2 0 3.5 1.5 4 3.19922l4.5 29\nc1 7.2002 13.1992 4.7002 18 4.7002c28.3994 0 45.8994 17 45.8994 45.7998zM496.5 223.8h-19c-3.7998 0 -4 -5.5 -4.2998 -8.2002c-5.5 8.5 -14 10 -23.7002 10c-24.5 0 -43.2002 -21.5 -43.2002 -45.1992c0 -19.5 12.2002 -32.2002 31.7002 -32.2002\nc9.2998 0 20.5 4.89941 26.5 11.8994c-0.299805 -1.5 -1 -4.69922 -1 -6.19922c0 -2.30078 1 -4 3.2002 -4h17.2998c2.7002 0 5 2.89941 5.5 5.69922l10.2002 64.3008c0.299805 1.89941 -1.2002 3.89941 -3.2002 3.89941zM544 257.1c0 2 -1.5 3.5 -3.2002 3.5h-18.5\nc-1.5 0 -3 -1.19922 -3.2002 -2.69922l-16.1992 -104l-0.300781 -0.5c0 -1.80078 1.5 -3.5 3.5 -3.5h16.5c2.5 0 5 2.89941 5.2002 5.69922l16.2002 101.2v0.299805zM454 205.3c9.2998 0 16.2998 -5.7002 16.2002 -15.5c0 -12.2998 -9.7002 -21.5 -21.7002 -21.5\nc-9.2002 0 -16.2002 5.2998 -16.2002 15c0 12.2998 9.5 22 21.7002 22z\" />\n    <glyph glyph-name=\"cc-stripe\" unicode=\"&#xf1f5;\" horiz-adv-x=\"576\" \nd=\"M492.4 227.2c8.69922 0 18 -6.7002 18 -22.7002h-36.7002c0 16 9.7998 22.7002 18.7002 22.7002zM375 224.6c12.9004 0.100586 21.9004 -14.5 21.9004 -33.0996c0 -19.0996 -8.80078 -33.4004 -21.9004 -33.4004c-8.2998 0 -13.2998 3 -16.7998 6.7002l-0.200195 52.7998\nc3.7002 4.10059 8.7998 7 17 7zM528 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h480zM122.2 166.9c0 42.2998 -54.2998 34.6992 -54.2998 50.6992c0 5.5 4.59961 7.7002 12.0996 7.7002\nc10.7998 0 24.5 -3.2998 35.2998 -9.09961v33.3994c-11.7998 4.7002 -23.5 6.5 -35.2998 6.5c-28.7998 0 -48 -15 -48 -40.1992c0 -39.3008 54 -32.9004 54 -49.9004c0 -6.59961 -5.7002 -8.7002 -13.5996 -8.7002c-11.8008 0 -26.9004 4.90039 -38.9004 11.2998v-33.8994\nc13.2002 -5.7002 26.5996 -8.10059 38.7998 -8.10059c29.6006 0.200195 49.9004 14.7002 49.9004 40.3008zM191 223.5v30.2998h-26.9004v30.7998l-34.6992 -7.39941l-0.200195 -113.9c0 -21 15.7998 -36.5 36.8994 -36.5c11.6006 0 20.2002 2.10059 24.9004 4.7002v28.9004\nc-4.5 -1.80078 -27 -8.30078 -27 12.5996v50.5h27zM265 221.1v32.7002h-0.0996094c-4.7002 1.7002 -21.3008 4.7998 -29.6006 -10.5l-2.2002 10.5h-30.6992v-124.5h35.5v84.4004c8.39941 11 22.5996 8.89941 27.0996 7.39941zM309.1 129.3v124.5h-35.6992v-124.5h35.6992z\nM309.1 272.2v28.8994l-35.6992 -7.59961v-28.9004zM383.2 126.7c25.3994 0.0996094 48.5996 20.5 48.5996 65.5996c0 41.2998 -23.5 63.7998 -48.3994 63.7998c-13.9004 0 -22.9004 -6.59961 -27.8008 -11.0996l-1.7998 8.7998h-31.2998v-165.8l35.5 7.5l0.0996094 40.2002\nc5.10059 -3.7002 12.7002 -9 25.1006 -9zM543.6 178.2c0.100586 2 0.400391 9.39941 0.400391 12.8994c0 36.4004 -17.5996 65.1006 -51.2998 65.1006c-33.7998 0 -54.2998 -28.7002 -54.2998 -64.9004c0 -42.7998 24.1992 -64.5 58.7998 -64.5\nc17 0 29.7002 3.90039 39.3994 9.2002v28.5996c-9.69922 -4.89941 -20.7998 -7.89941 -34.8994 -7.89941c-13.7998 0 -26 4.89941 -27.6006 21.5h69.5z\" />\n    <glyph glyph-name=\"lastfm\" unicode=\"&#xf202;\" horiz-adv-x=\"512\" \nd=\"M225.8 80.9004c0 0 -31.7002 -31.1006 -97.8994 -31.1006c-82.2002 0 -127.9 48.1006 -127.9 137.2c0 92.7002 45.7002 147.2 131.8 147.2c117.7 0 129.3 -66.2002 161.3 -163c14 -42.7998 38.7002 -73.9004 97.9004 -73.9004c39.9004 0 61 8.7998 61 30.5\nc0 31.9004 -34.9004 35.1006 -79.7998 45.7002c-48.6006 11.7002 -68 36.9004 -68 76.7998c0 64 51.5996 83.9004 104.399 83.9004c59.8008 0 96.2002 -21.7002 100.9 -74.5l-58.5996 -7c-2.30078 25.2002 -17.5 35.7998 -45.7002 35.7998\nc-25.7998 0 -41.6006 -11.7998 -41.6006 -31.7002c0 -17.5996 7.60059 -28.0996 33.4004 -34c52.2998 -11.5 115 -19.2002 115 -92.0996c0 -58.6006 -49.2998 -80.9004 -122 -80.9004c-101.4 0 -136.6 45.7002 -155.4 102.601\nc-26.0996 81.5996 -34.3994 134.899 -100.899 134.899c-35.7002 0 -72.1006 -25.7998 -72.1006 -97.8994c0 -56.3008 28.7002 -91.5 69.2002 -91.5c45.7002 0 76.2002 34 76.2002 34z\" />\n    <glyph glyph-name=\"lastfm-square\" unicode=\"&#xf203;\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM307.8 103.1c45.4004 0 76.2002 13.9004 76.1006 50.6006c0 45.5 -39.1006 50.3994 -71.8008 57.5\nc-16.0996 3.7002 -20.8994 10.2998 -20.8994 21.2998c0 12.5 9.89941 19.7998 26 19.7998c17.5996 0 27.0996 -6.59961 28.5996 -22.3994l36.7002 4.39941c-2.90039 33 -25.5996 46.6006 -63 46.6006c-32.9004 0 -65.2002 -12.4004 -65.2002 -52.4004\nc0 -24.9004 12.1006 -40.7002 42.5 -48c28.1006 -6.59961 49.9004 -8.7002 49.9004 -28.5996c0 -13.6006 -13.2002 -19.1006 -38.1006 -19.1006c-37 0 -52.3994 19.4004 -61.1992 46.2002c-20 60.5 -27.3008 101.9 -100.801 101.9c-53.8994 0 -82.5 -34.1006 -82.5 -92\nc0 -55.7002 28.6006 -85.8008 79.9004 -85.8008c41.4004 0 61.2002 19.4004 61.2002 19.4004l-11.7002 31.9004s-19 -21.3008 -47.5996 -21.3008c-25.3008 0 -43.3008 22 -43.3008 57.2002c0 45.1006 22.7002 61.2002 45.1006 61.2002c41.5 0 46.7002 -33.2998 63 -84.2998\nc11.7002 -35.5 33.7002 -64.1006 97.0996 -64.1006z\" />\n    <glyph glyph-name=\"ioxhost\" unicode=\"&#xf208;\" horiz-adv-x=\"640\" \nd=\"M616 288c13.2998 0 24 -10.7002 24 -24c0 -13.2002 -10.7002 -24 -24 -24h-52.7002c3.10059 -15.5 4.7002 -31.5996 4.7002 -48c0 -137 -111 -248 -248 -248c-102.9 0 -191.2 62.7002 -228.7 152h-67.2998c-13.2998 0 -24 10.7002 -24 24c0 13.2002 10.7002 24 24 24\nh52.7002c-3.10059 15.5 -4.7002 31.5996 -4.7002 48c0 137 111 248 248 248c102.9 0 191.2 -62.7002 228.7 -152h67.2998zM520 192c0 16.5996 -2 32.5996 -5.7998 48h-298.2c-13.2998 0 -24 10.7002 -24 24c0 13.2002 10.7002 24 24 24h279.5\nc-33.9004 62 -99.7998 104 -175.5 104c-110.5 0 -200 -89.5 -200 -200c0 -16.5996 2 -32.5996 5.7998 -48h298.2c13.2998 0 24 -10.7002 24 -24c0 -13.2002 -10.7002 -24 -24 -24h-279.5c33.9004 -62 99.7998 -104 175.5 -104c110.5 0 200 89.5 200 200zM216 216h208\nc13.2998 0 24 -10.7002 24 -24c0 -13.2002 -10.7002 -24 -24 -24h-208c-13.2998 0 -24 10.7002 -24 24c0 13.2002 10.7002 24 24 24z\" />\n    <glyph glyph-name=\"angellist\" unicode=\"&#xf209;\" \nd=\"M347.1 232.6c48 -11.6992 54.9004 -50.5996 54.9004 -93.6992c0 -114.301 -73.4004 -202.9 -191.4 -202.9c-96.1992 0 -164.6 76.4004 -164.5 148.6c0 37.1006 14.2002 61.7002 51.1006 71.7002c-3.10059 8.2998 -8 20.7998 -8 29.7002\nc0 23.5 24.8994 52.5996 48.2998 52.5996c6.90039 0 13.7002 -2 20 -4.2998c-12.4004 35.2002 -46.5996 126.7 -46.5996 162c0 28.7998 14.5996 51.7002 45.6992 51.7002c40 0 85.4004 -144 95.1006 -172.5c12.5 31.4004 52.5 163.1 97.0996 163.1\nc28 0 43.7002 -22.2998 43.7002 -48.8994c0 -30.2002 -33.7002 -124.5 -45.4004 -157.101zM311.7 340l-33.1006 -93.7002l34 -6c8.5 23.4004 47.1006 128.9 47.1006 148c0 7.10059 -2.2998 16 -10.9004 16c-16 0 -33.0996 -52 -37.0996 -64.2998zM142.3 399.7\nc0 -29.1006 34.6006 -120 45.5 -148.8c7.7002 4.39941 19.7998 2.69922 35.4004 1.39941l-34.6006 100.3c-31.7998 92.8008 -46.2998 59 -46.2998 47.1006zM140 204c-7.7002 0 -20.2998 -13.4004 -20.4004 -21.0996c0 -20.8008 56 -97.7002 76.9004 -97.7002\nc5.7002 0 10.5996 6.2998 10.5996 11.3994c0 12.8008 -37.7998 107.4 -67.0996 107.4zM324.3 17.7002c55.2998 61.5 49.1006 158.6 31 174.7c-24 21.0996 -106 29.0996 -138.3 29.0996c-17.2998 0 -17.4004 -6.40039 -17.4004 -13.0996\nc0 -43.7002 92.9004 -39.7002 120.601 -39.7002c11.2002 0 15.7998 -9.90039 16.8994 -21.1006c-7.39941 -7.39941 -17.6992 -11.6992 -27.3994 -15.3994c-9.40039 -3.40039 -19.1006 -7.10059 -27.1006 -13.1006c-22 -16 -43.6992 -43.3994 -43.6992 -71.6992\nc0 -17.7002 10.5996 -32.9004 10.5996 -50.3008c0 -0.299805 -2 -6.5 -2 -7.39941c-32.5996 2.2998 -40.5996 34.5996 -41.7002 61.7002c-3.39941 -0.900391 -8 -0.600586 -11.7002 -0.600586c5.10059 -17.7998 -11.8994 -42 -38 -42\nc-37.7998 0 -88 57.2002 -58.2998 86.9004c28.7002 -35.9004 35 -51.4004 51.1006 -51.4004c4 0 11.6992 3.40039 11.6992 8.2998c0 12.8008 -42.8994 73.1006 -54.2998 73.1006c-16.7998 0 -37.7002 -24.9004 -20.5996 -68.2998\nc22.5996 -55.7002 69.5 -88.3008 128.899 -88.3008c43.4004 0 80.6006 16.6006 109.7 48.6006zM225.7 143.7c3.2002 -8.2998 6.59961 -16.6006 9.39941 -25.1006c6.30078 7.10059 12.9004 13.7002 20.3008 19.1006c-10 2 -20 2.89941 -29.7002 6z\" />\n    <glyph glyph-name=\"buysellads\" unicode=\"&#xf20d;\" \nd=\"M224 297.3l42.9004 -160.7h-85.8008zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM382.7 42.7002l-94.5 298.7h-128.4l-94.5 -298.7h90.7002l111.7 91.5996l24.2002 -91.5996h90.7998z\n\" />\n    <glyph glyph-name=\"connectdevelop\" unicode=\"&#xf20e;\" horiz-adv-x=\"576\" \nd=\"M550.5 207c6.69629 -1.33887 11.7861 -7.5 11.7881 -14.7324c0 -7.5 -5.3584 -13.6602 -12.3223 -15l-54.9111 -95.3574c0.536133 -1.60742 0.804688 -3.21387 0.804688 -4.82129c0 -7.23145 -5.09082 -13.3926 -12.0547 -14.7314l-51.6963 -90.2686\nc0.535156 -1.33887 0.802734 -2.67773 0.802734 -4.28516c0 -8.30371 -6.69727 -15.2676 -15.2686 -15.2676c-4.28516 0 -8.30371 1.875 -10.9814 4.82129h-107.144c-2.67871 -3.21484 -6.96484 -5.35742 -11.5176 -5.35742s-8.83887 2.14258 -11.5166 5.35645h-106.875\nc-2.67969 -3.21484 -6.69727 -5.35742 -11.5186 -5.35742c-8.30371 0 -15.2676 6.69727 -15.2676 15.2676c0 1.875 0.535156 3.75 1.07031 5.35742l-51.6963 89.7324c-6.96484 1.33887 -12.0547 7.5 -12.0547 14.7314c0 1.875 0.268555 3.21387 0.804688 4.82129\nl-55.1797 95.3574c-6.96484 1.60742 -12.0537 7.76855 -12.0537 15c0 7.5 5.3584 13.6611 12.5898 15l53.3047 92.1436c0 0.536133 -0.268555 1.07227 -0.268555 1.60645c0 6.16113 3.75098 11.251 9.10742 13.6611l55.9824 97.2334\nc-0.536133 1.33887 -1.07129 3.21387 -1.07129 4.82129c0 8.57129 6.96484 15.2676 15.2676 15.2676c4.82227 0 8.83887 -2.14258 11.7861 -5.625h106.071c2.67871 3.48242 6.69629 5.625 11.5176 5.625s8.83887 -2.14258 11.5176 -5.62402h106.606\nc2.94727 3.48242 6.96484 5.625 11.7861 5.625c8.30371 0 15.2676 -6.69727 15.2676 -15.2676c0 -1.60742 -0.535156 -3.21484 -1.07031 -4.82129l55.4463 -95.8936c8.03613 -0.267578 14.7324 -6.96484 14.7324 -15.001c0 -2.67871 -0.803711 -5.08984 -1.875 -7.23145z\nM153.535 -2.73242v75.8037h-43.6602zM153.535 81.1074v50.624l-44.999 -47.4102c0.535156 -1.07227 1.07129 -2.14355 1.33887 -3.21387h43.6602zM153.535 143.518l0.000976562 92.9463l-50.0889 51.9648c-2.41113 -1.60645 -5.08887 -2.41113 -7.76855 -2.67871\nl-51.9648 -90c0.268555 -1.07227 0.268555 -2.14258 0.268555 -3.48242c0 -1.33887 0 -2.67871 -0.535156 -4.01758l55.7129 -96.4287c1.33887 -0.267578 2.67871 -1.07129 4.01758 -1.60742zM153.535 245.84v72.0527l-43.9277 -15.8037\nc0 -0.267578 0.267578 -0.803711 0.267578 -1.07227c0 -2.94531 -0.803711 -5.62402 -2.14258 -7.7666zM153.535 326.465v59.7324l-43.6602 -75.5361zM480.054 287.357l-0.267578 0.267578l-98.0361 -101.518l63.75 -67.2324l35.3584 167.143zM291.75 92.8926\nl-11.25 -11.7852h22.7676zM291.482 104.143l79.2852 82.2324l-83.0352 87.5889l-79.5537 -84.375zM296.839 98.25l16.875 -17.1426h124.02l5.8916 28.125l-67.5 71.25zM410.411 403.607l-117.053 -124.019l83.0342 -87.5889l97.5 101.25\nc-1.33984 2.14258 -2.14258 4.82129 -2.14258 7.7666v0.536133l-57.8574 100.714c-1.33984 0.268555 -2.41016 0.804688 -3.48145 1.34082zM401.304 405.75h-4.28711l-166.339 -60l57.0547 -60.2676zM277.821 405.75h-103.929l50.8936 -53.5713l148.393 53.5713h-75\nc-2.67871 -2.67773 -6.16016 -4.28516 -10.1787 -4.28516s-7.50098 1.60742 -10.1787 4.28516zM161.572 400.125v-70.7148l54.9111 19.8213l-51.1611 53.8398c-0.730469 -0.25293 -1.93066 -0.613281 -2.67969 -0.804688zM161.572 320.839v-83.3037l40.9814 -42.0527\nl79.5537 84.1064l-59.7324 63.2139zM161.572 228.161v-76.0723l36.4277 38.3037zM161.572 140.303v-59.1953h107.678l17.1426 17.6777l-82.7676 85.9814zM168.536 -21.75h1.33887l91.6074 94.8213h-99.9102v-89.7324l1.07031 -1.60645\nc2.41113 -0.804688 4.28613 -1.875 5.89355 -3.48242zM298.447 -21.75h104.194l-91.6064 94.8213h-38.3037l-91.6074 -94.8213h96.4287c2.68066 2.41016 6.42871 4.28516 10.4473 4.28516s7.76758 -1.875 10.4473 -4.28516zM418.447 -9.96387l17.4121 83.0361h-114.376\nl89.1953 -91.875c1.07227 0.536133 2.14355 1.07031 3.48242 1.33887zM431.303 12.2676l34.8223 60.8037h-21.9639zM466.125 81.1074c0.267578 1.07129 0.803711 2.14258 1.33887 2.94531l-17.1426 18.2139l-4.55371 -21.1592h20.3574zM532.286 188.518\nc-0.268555 1.33984 -0.536133 2.41113 -0.536133 3.75c0 1.60742 0.536133 2.94629 0.802734 4.28516l-45.8027 79.2861l-34.5537 -163.928l20.625 -21.9639c1.33887 0.802734 2.67871 1.33887 4.01758 1.87402z\" />\n    <glyph glyph-name=\"dashcube\" unicode=\"&#xf210;\" \nd=\"M326.6 344l102.2 104v-427c0 -50.5 -40.0996 -85 -91.2002 -85h-227.199c-51.1006 0 -91.2002 34.5 -91.2002 85v229.5c0 50.2002 40.0996 93.5 91.2002 93.5h216.199zM153.9 31.5v-0.0996094h223.8l-51.1006 52.2998v123.5c0 17.7002 -14.2998 32.5 -32 32.5h-140.699\nc-17.7002 0 -32.4004 -14.7998 -32.4004 -32.5v-142.9c0 -17.7002 14.7002 -32.7998 32.4004 -32.7998z\" />\n    <glyph glyph-name=\"forumbee\" unicode=\"&#xf211;\" \nd=\"M5.7998 138.3c-3.7998 17 -5.7998 34.2002 -5.7998 51.4004c0 123.3 99.7998 223.3 223.1 223.3c16.6006 0 33.3008 -2 49.3008 -5.5c-123.4 -47 -220.5 -145.5 -266.601 -269.2zM398.7 327.5c-151.101 -44 -269.2 -164.4 -312.3 -315.7\nc-17.2002 13.4004 -32.7002 30.9004 -45.2002 49c43.3994 149.9 160.1 267.7 309.7 312c18.0996 -12.5996 34.0996 -27.7998 47.7998 -45.2998zM414.5 74.7998c13.0996 -35.2998 24.2002 -73.2998 33.5 -109.8c-36.0996 9.2998 -72 20.5 -107 33.5996\nc-25.7002 -16 -54.5996 -26.8994 -84.5996 -31.2998c42.5996 79.7002 108.199 147.4 187.6 190.3c-4.09961 -29.0996 -14.2998 -57.6992 -29.5 -82.7998zM444.2 220.3c-113.7 -46.7002 -204.2 -139.399 -250.5 -253.5c-19.6006 2.7002 -38.5 7.60059 -56.6006 15.2002\nc44.9004 138.5 153.4 249.3 291.301 295.1c7.89941 -18.0996 13.1992 -37.2998 15.7998 -56.7998z\" />\n    <glyph glyph-name=\"leanpub\" unicode=\"&#xf212;\" horiz-adv-x=\"576\" \nd=\"M386.539 336.515l15.0957 -248.955l-10.9785 0.275391c-36.2324 0.824219 -71.6406 -8.7832 -102.657 -27.9971c-31.0156 19.2139 -66.4238 27.9971 -102.657 27.9971c-45.5635 0 -82.0693 -10.7051 -123.516 -27.7227l31.291 258.288\nc28.5459 11.8027 61.4834 18.1143 92.2256 18.1143c41.1729 0 73.8359 -13.1748 102.657 -42.5439c27.7227 28.2715 59.0127 41.7217 98.5391 42.5439zM569.07 0c-25.5264 0 -47.4854 5.21484 -70.542 15.6445c-34.3105 15.6455 -69.9932 24.9785 -107.871 24.9785\nc-38.9775 0 -74.9346 -12.9014 -102.657 -40.623c-27.7227 27.7227 -63.6797 40.623 -102.657 40.623c-37.8779 0 -73.5605 -9.33301 -107.871 -24.9785c-22.2324 -9.88086 -44.7402 -15.6445 -69.1689 -15.6445h-1.37305l42.5449 349.141\nc39.251 22.2334 87.0117 34.8594 132.301 34.8594c37.0547 0 75.209 -7.68457 106.225 -29.0947c31.0156 21.4102 69.1699 29.0947 106.225 29.0947c45.2891 0 93.0498 -12.626 132.301 -34.8594zM525.702 44.7412l-34.0361 280.246\nc-30.7422 13.999 -67.248 21.4102 -101.009 21.4102c-38.4287 0 -74.3848 -12.0771 -102.657 -38.7021c-28.2725 26.625 -64.2275 38.7021 -102.657 38.7021c-33.7607 0 -70.2666 -7.41113 -101.009 -21.4102l-34.0361 -280.246\nc47.2109 19.4863 82.8945 33.4854 135.045 33.4854c37.6045 0 70.8174 -9.60547 102.657 -29.6436c31.8398 20.0381 65.0518 29.6436 102.657 29.6436c52.1504 0 87.834 -13.999 135.045 -33.4854z\" />\n    <glyph glyph-name=\"sellsy\" unicode=\"&#xf213;\" horiz-adv-x=\"640\" \nd=\"M539.71 210.692c55.1572 -13.4834 94.0742 -63.124 94.0732 -119.509c0 -68.0264 -55.4639 -123.184 -123.185 -123.184h-381.197c-67.7217 0 -123.186 55.1572 -123.185 123.185c0 47.4961 27.8848 91.0098 70.7852 111.234\nc-2.14453 7.35449 -3.06543 15.0146 -3.06543 22.3691c0 46.2705 37.6914 83.9609 83.9629 83.9609c20.2227 0 39.835 -7.35449 55.1562 -20.5303c18.3867 74.7695 85.8008 127.781 163.021 127.781c92.542 0 167.924 -75.3818 167.924 -167.924\nc0 -12.5635 -1.22559 -25.127 -4.29004 -37.3838zM199.88 46.4463v110.928c0 8.27344 -7.04688 15.3213 -15.3213 15.3213h-30.9482c-8.27344 0 -15.3213 -7.04785 -15.3213 -15.3213v-110.928c0 -8.27344 7.04688 -15.3213 15.3213 -15.3213h30.9482\nc8.27344 0 15.3213 7.04688 15.3213 15.3213zM289.357 46.4463v131.458c0 8.27246 -7.04883 15.3203 -15.3223 15.3203h-30.9492c-8.27246 0 -15.3213 -7.04688 -15.3213 -15.3203v-131.458c0 -8.27344 7.04688 -15.3213 15.3213 -15.3213h30.9492\nc8.27344 0 15.3223 7.04688 15.3223 15.3213zM378.834 46.4463v162.714c0 8.27246 -7.04688 15.3213 -15.3213 15.3213h-30.9482c-8.27441 0 -15.3223 -7.04785 -15.3223 -15.3213v-162.714c0 -8.27344 7.04785 -15.3213 15.3223 -15.3213h30.9482\nc8.27441 0 15.3213 7.04688 15.3213 15.3213zM465.861 46.4463v224.612c0 8.58008 -7.04785 15.6279 -15.3223 15.6279h-28.4971c-8.27441 0 -15.3213 -7.04883 -15.3213 -15.6279v-224.612c0 -8.27344 7.04688 -15.3213 15.3213 -15.3213h28.4971\nc8.27441 0 15.3223 7.04688 15.3223 15.3213z\" />\n    <glyph glyph-name=\"shirtsinbulk\" unicode=\"&#xf214;\" \nd=\"M100 37.7002l4.40039 9.89941l30.5996 -13.3994l-4.40039 -9.90039zM139.4 20.2002l4.39941 9.89941l30.6006 -13.3994l-4.40039 -9.90039zM311.5 34.2002l30.5996 13.3994l4.40039 -9.89941l-30.5996 -13.4004zM179.1 3l4.40039 9.59961l30.2998 -13.3994\nl-4.39941 -9.90039zM60.4004 55.2002l4.39941 9.89941l30.6006 -13.6992l-4.40039 -9.60059zM271.8 16.7002l30.6006 13.3994l4.39941 -9.89941l-30.5996 -13.4004zM232.5 -0.799805l30.5996 13.3994l4.40039 -9.59961l-30.5996 -13.7002zM350.9 51.4004l30.5996 13.6992\nl4.40039 -9.89941l-30.6006 -13.4004zM170 401.4v-10.5h-33.5v10.5h33.5zM122.8 401.4l-0.0996094 -10.5h-33.5v10.5h33.5996zM75.5 401.4l0.0996094 -10.5h-33.2998v10.5h33.2002zM217 401.4v-10.5h-33.2002v10.5h33.2002zM311.5 401.4v-10.5h-33.5v10.5h33.5zM358.8 401.4\nv-10.5h-33.5v10.5h33.5zM264.2 401.4v-10.5h-33.2002v10.5h33.2002zM405.7 401.4v-10.5h-33.2998v10.5h33.2998zM52.7998 96.9004v-33.5h-10.7998v33.5h10.7998zM122.8 312.8l-0.0996094 -10.5h-33.5v10.5h33.5996zM52.7998 302.2v-23h-10.7998v33.5h33.5996v-10.5h-22.7998\nzM221.7 73.5996c-50.2002 0 -91.2998 40.8008 -91.2998 91.3008c0 50.1992 41.0996 91.2998 91.2998 91.2998c50.5 0 91.2998 -41.1006 91.2998 -91.2998c0 -50.5 -40.7998 -91.3008 -91.2998 -91.3008zM173.5 184.7c0 -44.2998 77.5996 -11.9004 77.5996 -38\nc0 -13.1006 -24 -14.2998 -32.6992 -14.2998c-12.3008 0 -29.8008 2.69922 -35.9004 14.8994h-0.900391l-9 -18.3994c14.8008 -9.30078 29.1006 -12.2002 47.2002 -12.2002c19.5 0 51 5.7998 51 31.2002c0 48.0996 -78.5 16.2998 -78.5 37.8994\nc0 13.1006 20.7998 14.9004 29.7998 14.9004c10.8008 0 29.2002 -3.2002 35.6006 -13.1006h0.899414l8.80078 16.9004c-15.1006 6.2002 -27.4004 12 -44.3008 12c-20.0996 0 -49.5996 -6.40039 -49.5996 -31.7998zM52.7998 269.6v-33.5996h-10.7998v33.5996h10.7998z\nM395.2 63.4004v33.5h10.7998v-33.5h-10.7998zM52.7998 140.1v-33.5h-10.7998v33.5h10.7998zM0 444.3h448v-406l-226.3 -98.5996l-221.7 98.5996v406zM418.8 57.2002h0.100586v270.1h-389.7v-270.1l192.8 -85.7002zM418.8 356.5h0.100586v58.5996h-389.7v-58.5996h389.6z\nM52.7998 226.4v-33.5h-10.7998v33.5h10.7998zM52.7998 183.2v-33.5h-10.7998v33.5h10.7998zM170 312.8v-10.5h-33.5v10.5h33.5zM395.2 149.7v33.5h10.7998v-33.5h-10.7998zM395.2 192.9v33.5h10.7998v-33.5h-10.7998zM217 312.8v-10.5h-33.2002v10.5h33.2002zM395.2 236\nv33.5h10.7998v-33.5h-10.7998zM395.2 106.5v33.5h10.7998v-33.5h-10.7998zM264.2 312.8v-10.5h-33.2002v10.5h33.2002zM311.5 312.8v-10.5h-33.5v10.5h33.5zM395.2 279.2l0.0996094 23h-22.7998v10.5h33.5v-33.5h-10.7998zM358.8 312.8v-10.5h-33.5v10.5h33.5z\" />\n    <glyph glyph-name=\"simplybuilt\" unicode=\"&#xf215;\" horiz-adv-x=\"512\" \nd=\"M481.2 384c14.7002 0 26.5 -11.7998 26.7002 -26.2998v-331.4c0 -14.5 -11.8008 -26.2998 -26.6006 -26.2998h-450.399c-14.8008 0 -26.6006 11.7998 -26.6006 26.2998v331.4c0 14.5 11.7998 26.2998 26.4004 26.2998h106c14.5996 0 26.5996 -11.7998 26.5996 -26.2998\nv-39.6006h185.3v39.6006c0 14.5 12.1006 26.2998 26.6006 26.2998h106zM149.8 92.2002c36.9004 0 66.6006 29.7002 66.6006 66.3994c0 36.9004 -29.7002 66.6006 -66.6006 66.6006c-36.7002 0 -66.3994 -29.7002 -66.3994 -66.6006\nc0 -36.6992 29.7998 -66.3994 66.3994 -66.3994zM362.2 92.2002c36.5996 0 66.3994 29.7002 66.3994 66.5996c0 36.7002 -29.7998 66.4004 -66.3994 66.4004c-36.9004 0 -66.6006 -29.7998 -66.6006 -66.4004c0 -36.8994 29.7002 -66.5996 66.6006 -66.5996z\" />\n    <glyph glyph-name=\"skyatlas\" unicode=\"&#xf216;\" horiz-adv-x=\"640\" \nd=\"M640 118.7c0 -65.9004 -52.5 -114.4 -117.5 -114.4c-165.9 0 -196.6 249.7 -359.7 249.7c-146.899 0 -147.1 -212.2 5.60059 -212.2c42.5 0 90.8994 17.7998 125.3 42.5c5.59961 4.10059 16.8994 16.2998 22.7998 16.2998s10.9004 -5 10.9004 -10.8994\nc0 -7.7998 -13.1006 -19.1006 -18.7002 -24.1006c-40.9004 -35.5996 -100.3 -61.1992 -154.7 -61.1992c-83.4004 -0.100586 -154 59 -154 144.899c0 85.9004 67.5 149.101 152.8 149.101c185.3 0 222.5 -245.9 361.9 -245.9c99.8994 0 94.7998 139.7 3.39941 139.7\nc-17.5 0 -35 -11.6006 -46.8994 -11.6006c-8.40039 0 -15.9004 7.2002 -15.9004 15.6006c0 11.5996 5.2998 23.7002 5.2998 36.2998c0 66.5996 -50.8994 114.7 -116.899 114.7c-53.1006 0 -80 -36.9004 -88.7998 -36.9004c-6.2002 0 -11.2002 5 -11.2002 11.2002\nc0 5.59961 4.09961 10.2998 7.7998 14.4004c25.2998 28.7998 64.7002 43.6992 102.8 43.6992c79.4004 0 139.101 -58.3994 139.101 -137.8c0 -6.89941 -0.300781 -13.7002 -1.2002 -20.5996c11.8994 3.09961 24.0996 4.7002 35.8994 4.7002\nc60.7002 0 111.9 -45.3008 111.9 -107.2z\" />\n    <glyph glyph-name=\"pinterest-p\" unicode=\"&#xf231;\" horiz-adv-x=\"384\" \nd=\"M204 441.5c94.2002 0 180 -64.7998 180 -164.1c0 -93.3008 -47.7002 -196.801 -153.9 -196.801c-25.1992 0 -57 12.6006 -69.2998 36c-22.7998 -90.2998 -21 -103.8 -71.3994 -172.8c-5.2002 -1.89941 -3.5 -2.2998 -6.90039 1.5c-1.7998 18.9004 -4.5 37.5 -4.5 56.4004\nc0 61.2002 28.2002 149.7 42 209.1c-7.5 15.2998 -9.59961 33.9004 -9.59961 50.7002c0 80 93.8994 92 93.8994 25.7998c0 -39 -26.3994 -75.5996 -26.3994 -113.399c0 -25.8008 21.2998 -43.8008 46.1992 -43.8008c69 0 90.3008 99.6006 90.3008 152.7\nc0 71.1006 -50.4004 109.8 -118.5 109.8c-79.2002 0 -140.4 -57 -140.4 -137.399c0 -38.7002 23.7002 -58.5 23.7002 -67.7998c0 -7.80078 -5.7002 -35.4004 -15.6006 -35.4004c-24 0 -63.5996 40 -63.5996 110.4c0 110.699 101.4 179.1 204 179.1z\" />\n    <glyph glyph-name=\"whatsapp\" unicode=\"&#xf232;\" \nd=\"M380.9 350.9c41.8994 -42 67.0996 -97.7002 67.0996 -157c0 -122.4 -101.8 -222 -224.1 -222h-0.100586c-37.2002 0 -73.7002 9.2998 -106.1 27l-117.7 -30.9004l31.5 115c-19.4004 33.7002 -29.5996 71.9004 -29.5996 111c0 122.4 99.5996 222 222 222\nc59.2998 0 115.1 -23.0996 157 -65.0996zM223.9 9.2998c101.699 0 186.6 82.7998 186.6 184.601c0.0996094 49.2998 -21.2998 95.5996 -56.0996 130.5c-34.8008 34.8994 -81.1006 54.0996 -130.4 54.0996c-101.8 0 -184.6 -82.7998 -184.6 -184.5\nc0 -34.9004 9.69922 -68.7998 28.1992 -98.2002l4.40039 -7l-18.5996 -68.0996l69.7998 18.2998l6.7002 -4c28.2998 -16.7998 60.7998 -25.7002 94 -25.7002zM325.1 147.5c5.5 -2.7002 9.2002 -4.09961 10.5 -6.59961c1.40039 -2.30078 1.40039 -13.4004 -3.19922 -26.4004\nc-4.60059 -13 -26.7002 -24.7998 -37.4004 -26.4004c-17.5996 -2.59961 -31.4004 -1.2998 -66.5996 13.9004c-55.7002 24.0996 -92 80.0996 -94.8008 83.7998c-2.69922 3.7002 -22.5996 30.1006 -22.5996 57.4004s14.2998 40.7002 19.4004 46.2998\nc5.09961 5.5 11.0996 6.90039 14.7998 6.90039s7.39941 0 10.5996 -0.200195c3.40039 -0.200195 8 1.2998 12.5 -9.5c4.60059 -11.1006 15.7002 -38.4004 17.1006 -41.2002c1.39941 -2.7998 2.2998 -6 0.5 -9.7002c-10.6006 -21.2002 -22 -20.5 -16.3008 -30.2998\nc21.5 -36.9004 42.9004 -49.7002 75.5 -66c5.5 -2.7998 8.80078 -2.2998 12 1.40039c3.30078 3.7998 13.9004 16.1992 17.6006 21.7998c3.7002 5.59961 7.39941 4.7002 12.5 2.7998c5.09961 -1.7998 32.3994 -15.2002 37.8994 -18z\" />\n    <glyph glyph-name=\"viacoin\" unicode=\"&#xf237;\" horiz-adv-x=\"384\" \nd=\"M384 416l-48 -112h48v-48h-68.5l-13.7998 -32h82.2998v-48h-102.8l-89.2002 -208l-89.2002 208h-102.8v48h82.2998l-13.7998 32h-68.5v48h48l-48 112h64l80.7998 -192h94.5l80.7002 192h64zM192 112l27 64h-54z\" />\n    <glyph glyph-name=\"medium\" unicode=\"&#xf23a;\" \nd=\"M0 416h448v-448h-448v448zM372.2 309.9v5h-83.2002l-59.2998 -147.9l-67.4004 148h-87.2998v-5.09961l28.0996 -33.9004c2.80078 -2.5 4.2002 -6.09961 3.80078 -9.7998v-133c0.799805 -4.7998 -0.700195 -9.7002 -4.10059 -13.2002l-31.5996 -38.2998v-5.10059h89.7998\nv5.10059l-31.5996 38.2998c-3.40039 3.5 -5.10059 8.40039 -4.40039 13.2002v115l78.7002 -171.601h9.09961l67.6006 171.601v-136.9c0 -3.59961 0 -4.2998 -2.40039 -6.7002l-24.2998 -23.5996v-4.90039h118v5.10059l-23.5 23\nc-2.10059 1.5 -3.10059 4.09961 -2.7002 6.7002v169.3c-0.400391 2.5 0.599609 5.09961 2.7002 6.7002z\" />\n    <glyph glyph-name=\"y-combinator\" unicode=\"&#xf23b;\" \nd=\"M448 416v-448h-448v448h448zM236 160.5l77.5 145.5h-32.7002l-45.7998 -91c-4.7002 -9.2998 -9 -18.2998 -12.7998 -26.7998l-12.2002 26.7998l-45.2002 91h-35l76.7002 -143.8v-94.5h29.5v92.7998z\" />\n    <glyph glyph-name=\"optin-monster\" unicode=\"&#xf23c;\" horiz-adv-x=\"576\" \nd=\"M572.6 26.5996c1 -3.5 1.90039 -7 1.7002 -10.6992c0.799805 -31.6006 -44.2998 -64 -73.5 -65.1006c-17.2998 -0.799805 -34.5996 8.40039 -42.7002 23.5c-113.5 -4.09961 -227 -4.89941 -340.199 0c-8.40039 -15.0996 -25.7002 -24 -43 -23.5\nc-28.9004 1.10059 -74 33.5 -73.5 65.1006c0.299805 3.7998 0.799805 7.2998 1.89941 10.7998c-5.59961 9.39941 -4.7998 15.2998 5.40039 11.5996c3.2998 5.2002 7 9.5 11.0996 13.7998c-2.5 10.9004 1.2998 14.1006 11.1006 9.2002c4.5 3.2998 10 6.5 15.8994 9.2002\nc0 15.7998 11.7998 11.2002 17.2998 5.7002c12.5 1.7998 20.2002 -0.700195 26.8008 -5.7002v19.7002c-12.9004 0 -40.6006 11.3994 -45.9004 36.2002c-5 20.7998 2.59961 38.0996 25.0996 47.5996c0.800781 5.90039 8.10059 14 14.9004 15.9004\nc7.59961 1.89941 12.5 -4.60059 14.0996 -10.3008c7.40039 0 17.8008 -1.5 21.1006 -8.09961c5.39941 0.5 11.0996 1.40039 16.5 1.90039c-2.40039 1.89941 -5.10059 3.5 -8.10059 4.59961c-5.09961 8.90039 -13.7998 11.0996 -24.5996 11.5996\nc0 0.800781 0 1.60059 0.299805 2.7002c-19.7998 0.5 -44.0996 5.60059 -54.8994 17.7998c-21.3008 23.6006 -15.9004 83.6006 12.1992 103.5c8.40039 5.7002 21.6006 0.800781 22.7002 -9.69922c2.40039 -20.6006 0.400391 -26.8008 26.2002 -25.9004\nc8.09961 7.7998 16.7998 14.5996 26.5 20c-14.9004 1.2998 -28.9004 -1.59961 -43.7998 -3.7998c12.7002 12.5 23.8994 25.3994 56.7002 42.3994c23.5 11.9004 50 20.8008 76.1992 23.2002c-18.5996 7.90039 -40 11.9004 -59.6992 16.5\nc76.5 16.2002 174.6 22.1006 244.199 -37.5996c18.1006 -15.4004 32.4004 -36.2002 42.7002 -60c39.7998 -4.90039 36.4004 5.5 38.6006 25.0996c1.09961 10.2998 14.2998 15.4004 22.6992 9.5c14.9004 -10.5 22.2002 -30.7998 24.6006 -48.0996\nc2.2002 -17.7998 0.299805 -41.2998 -12.4004 -55.1006c-10.7998 -12.1992 -34.2998 -17.5996 -53.7998 -18.0996v-2.7998c-11.0996 -0.200195 -20.2998 -2.40039 -25.7002 -11.6006c-3 -1.09961 -5.7002 -2.69922 -8.39941 -4.59961\nc5.69922 -0.5 11.3994 -1.40039 16.7998 -1.90039c1.89941 5.60059 12.5996 8.40039 21.0996 8.40039c1.7002 5.40039 6.7998 11.9004 14.1006 10.2998c7.2998 -1.59961 14.0996 -10 14.8994 -15.8994c10.7998 -4.40039 22.1006 -12.2002 25.1006 -25.7002\nc1.89941 -8.10059 1.69922 -15.1006 0.299805 -21.9004c-5.7002 -25.2002 -33.2998 -36.2002 -45.9004 -36.2002c0 -6.69922 0 -13.1992 -0.299805 -19.6992c8.09961 6 16.4004 7.19922 26.7998 5.69922c6 5.90039 17.6006 9.40039 17.6006 -5.69922\nc5.59961 -2.7002 11.2998 -6 15.8994 -9.2002c10.1006 5 13.7002 0.5 10.7998 -9.2002c4.10059 -4.2998 8.10059 -8.90039 11.1006 -13.7998c10.0996 3.59961 11 -2.10059 5.39941 -11.6006zM498.8 280.6c17.2998 -6.69922 26.2002 -22.0996 30.2998 -35.6992\nc1.10059 10.5996 -2.69922 39.5 -13.7998 51.0996c-7.2998 7.2998 -14.0996 5.09961 -14.0996 -0.799805c0 -6.2002 -1.2998 -11.6006 -2.40039 -14.6006zM494.2 273.9c-3.2002 -3.30078 -9.2002 -4.90039 -14.1006 -5.7002c13 -15.7002 17 -41.7002 12.7002 -63\nc10.7998 2.2002 20.5 6.2998 26.2002 12.2002c1.90039 2.19922 3.7998 4.89941 4.90039 7.59961c-1.10059 21.2998 -10.2002 42.7002 -29.7002 48.9004zM470.1 267.1c-3.69922 0 -8.09961 0 -11.7998 0.300781c7.5 -20.6006 12.4004 -42.7002 14.2998 -64.6006\nc3.5 0 7.5 0.299805 11.6006 0.799805c5.89941 24.3008 -0.299805 51.6006 -14.1006 63.5zM47.5 245c4.09961 13.5 13 28.9004 30.2998 35.7002c-1 3 -2.39941 8.39941 -2.39941 14.5996c0 5.90039 -7.10059 8.10059 -14.1006 0.799805\nc-11.3994 -11.5996 -14.8994 -40.5996 -13.7998 -51.0996zM57.2002 217.4c5.7002 -6.2002 15.3994 -10 26.2002 -12.2002c-4.30078 21.3994 -0.300781 47.2998 12.6992 63c-4.89941 0.799805 -10.8994 2.5 -14.0996 5.7002\nc-19.4004 -6.2002 -28.2998 -27.6006 -29.7002 -48.9004c1.40039 -2.7002 3 -5.40039 4.90039 -7.59961zM105.1 202.8c2.40039 22.2002 9.10059 43.7998 19.8008 63.5c-5.2002 -1.09961 -10 -3 -14.9004 -4.89941l-12.2002 -5.10059v0.299805\nc-7.2998 -14.0996 -10 -34.3994 -5.39941 -53c4.59961 -0.5 8.59961 -0.799805 12.6992 -0.799805zM289.1 365.5c-41.8994 0 -76.1992 -34.0996 -76.1992 -75.9004c0 -42.1992 34.2998 -76.1992 76.1992 -76.1992c41.9004 0 76.2002 34 76.2002 76.1992\nc0 41.9004 -34.2998 75.9004 -76.2002 75.9004zM404.7 191.2c-12.9004 0.799805 -26.2002 0.799805 -39.5 1.09961c10 -50.5996 3.2998 -64.7002 16.5 -58.0996c16 8.09961 22.7002 39.2002 23 57zM350.7 192.8c-18.9004 0.299805 -38.1006 0.299805 -57 0v0.299805\nc-0.299805 -5.19922 0.200195 -38.0996 4.2998 -41.0996c11.0996 -5.40039 39.5 -4.59961 51.0996 -1.09961c5.40039 1.59961 2.40039 37 1.60059 41.8994zM278.3 139c4.60059 2.5 2.40039 45.4004 1.2998 53.7002v0.299805\nc-19.3994 -0.299805 -38.5996 -0.299805 -57.7998 -0.799805c-1.89941 -9.2002 -4.59961 -48.9004 1.90039 -51.6006c13 -5.69922 41.5996 -5.09961 54.5996 -1.59961zM171.8 190.1c-5.39941 -19.6992 0.299805 -45.0996 22.2002 -54.8994\nc5.40039 -2.5 8.59961 -2.5 9.7002 4.2998c1.89941 8.7002 2.5 36.7998 4.89941 52.2002c-12.1992 -0.200195 -24.5996 -0.799805 -36.7998 -1.60059zM136.4 158.8c2.39941 -3.7002 1.59961 -9.09961 -8 -12.5c43.7998 -47 92.6992 -85.7002 155.899 -106.5\nc67.5 19.2002 115.601 60 163.2 107c-11.0996 4.2998 -7.7002 10.2998 -7.2998 11.6006c-8.90039 0.799805 -17.9004 1.89941 -26.5 2.69922c-9.5 -33 -36 -52.8994 -46.7998 -31.5996c-2.7002 5.2002 -3.5 11.7002 -4.60059 16.7998\nc-3.7998 -8.39941 -13.2998 -8.09961 -24.5996 -8.89941c-13.2002 -1.10059 -31.6006 -1.30078 -44 3c-3 -12.9004 -11.1006 -12.9004 -26.7998 -14.3008c-14.1006 -1.39941 -48.7002 -4.09961 -54.9004 10.8008c-1.09961 -28.7002 -35.0996 -10 -45.0996 7\nc-3.2002 5.69922 -5.40039 11.3994 -7 17.5996c-7.80078 -0.799805 -15.7002 -1.59961 -23.5 -2.7002zM114.8 -13.7002c0.5 2.5 0.799805 5.2002 0.799805 8.2002c-5.69922 23.2002 -18.5996 49.7002 -33.5 54c-22.3994 6.7002 -68.8994 -23.5 -66.1992 -54.5996\nc12.6992 -19.5 40 -35.7002 59.1992 -36.5c17.8008 -0.800781 35.9004 11.0996 39.7002 28.8994zM106.1 52.2998c9 -16 15.5 -33.2998 16.7002 -51.8994c33.5 19.3994 69.1006 35.6992 105.9 47c-38.7002 20.5 -68.1006 47.7998 -97.2998 77\nc-2.10059 -1.30078 -5.10059 -2.40039 -7.80078 -3.5c-1.59961 -4.90039 8.7002 -5.30078 5.40039 -12.4004c-2.09961 -4.09961 -8.59961 -7.59961 -15.0996 -9.2002c-2.10059 -2.7002 -5.10059 -4.89941 -7.80078 -6.5h-0.299805\nc-0.200195 -13.5 -0.200195 -27 0.299805 -40.5zM443.7 -12.2998c-36.7998 21.2998 -74.1006 41.2998 -115.601 53c-13.7998 -6.2002 -27.8994 -11.2998 -42.1992 -15.4004c-2.10059 -0.799805 -2.10059 -0.799805 -4.30078 0\nc-11.8994 3.7002 -23.2998 8.10059 -34.8994 13.2002c-40.2002 -11.5996 -77.2998 -29.2002 -112.4 -50.7998h-0.299805v-0.299805c0.299805 0 0.299805 0 0.299805 0.299805c103.2 -4.10059 206.4 -3.5 309.4 0zM454.2 0.0996094c1 14.7002 7.2002 35.8008 16.5 51.7002\nl-0.299805 -0.299805c0.5 13.7002 0.799805 27.5 0.799805 41.2998c-3 1.7002 -5.7002 4.10059 -8.10059 6.7998c-6.5 1.30078 -12.8994 5.10059 -15.0996 8.90039c-1.90039 4.09961 1.2998 7.59961 5.90039 10.2998c-0.200195 0.5 -0.5 1.60059 -0.5 2.40039\nc-3 0.799805 -5.40039 1.7998 -7.60059 3.2002c-31.5996 -29.4004 -65.3994 -56.7002 -103.5 -76.7002c38.9004 -11.7002 76 -28.1006 111.9 -47.6006zM560.1 -6.09961c3 31.0996 -43.5 61.3994 -66.1992 54.5c-14.6006 -4.30078 -27.8008 -30.8008 -33.5 -54\nc0 -23.8008 21.1992 -37.9004 40.5 -37c19.1992 0.799805 46.5 17 59.1992 36.5zM372.9 372.8c-35.7002 39.2002 -81.4004 47.7998 -126 23.5c25.1992 56.2002 122.199 48.6006 126 -23.5zM74.7998 40.9004c14.9004 1.89941 24.6006 -19.2002 18.6006 -30.8008\nc-4.80078 -9.69922 -23.7002 -24.0996 -35.9004 -27.2998c-16.5 -4.59961 -32.2002 3.2998 -32.2002 14.9004c0 17.7998 33.7998 41.5996 49.5 43.2002zM290.7 217.1c-30.9004 0 -57.6006 25.7002 -50.2998 59.8008c13.1992 -20.7002 46.5 -12 46.5 11.2998\nc0 10 -7 18.5996 -16.5 21.5996c31.6992 13.7998 72.1992 -8.2002 72.1992 -44.2998c0 -26.7998 -23.2998 -48.4004 -51.8994 -48.4004zM68 -26.0996c-0.5 8.39941 20.2998 23.5 29.2002 25.0996c8.59961 1.59961 12.7002 -11.4004 9.7002 -18.4004\nc-2.7002 -5.69922 -10.5 -13.5 -17.3008 -16.1992c-9.39941 -3.2002 -21.0996 3 -21.5996 9.5zM501.2 40.9004c15.7002 -1.60059 49.5 -25.4004 49.5 -43.2002c0 -11.7002 -15.7002 -19.5 -32.2002 -14.9004c-12.0996 3.2002 -31.2998 17.6006 -36.2002 27.2998\nc-5.7002 11.6006 4 32.7002 18.9004 30.8008zM478.8 -1c8.90039 -1.59961 30 -16.7002 29.1006 -25.0996c-0.200195 -6.5 -12.1006 -12.7002 -21.3008 -9.5c-7 2.69922 -14.8994 10.5 -17.2998 16.1992c-2.89941 7.10059 1.10059 20 9.5 18.4004z\" />\n    <glyph glyph-name=\"opencart\" unicode=\"&#xf23d;\" horiz-adv-x=\"640\" \nd=\"M423.3 7.2998c0 -25.2998 -20.2998 -45.5996 -45.5996 -45.5996s-45.7998 20.2998 -45.7998 45.5996s20.5996 45.7998 45.7998 45.7998c25.3994 0 45.5996 -20.5 45.5996 -45.7998zM169.4 53.0996c25.2998 0 45.7998 -20.5 45.7998 -45.7998\ns-20.5 -45.5996 -45.7998 -45.5996c-25.3008 0 -45.6006 20.3994 -45.6006 45.5996s20.2998 45.7998 45.6006 45.7998zM461.1 323.1c302.2 0 169.5 -67.1992 -17.1992 -233.899c59.1992 102.8 262.5 193.899 -70.8008 188.899c-319.8 -4.69922 -338.699 92.5 -373.1 144.2\nc81.9004 -86.3994 158.9 -99.2002 461.1 -99.2002z\" />\n    <glyph glyph-name=\"expeditedssl\" unicode=\"&#xf23e;\" horiz-adv-x=\"496\" \nd=\"M248 404.6c117.4 0 212.6 -95.1992 212.6 -212.6s-95.1992 -212.6 -212.6 -212.6s-212.6 95.1992 -212.6 212.6s95.1992 212.6 212.6 212.6zM150.6 271.7h-0.199219v-26.6006c0 -5 3.89941 -8.89941 8.89941 -8.89941h17.7002c5 0 8.90039 3.89941 8.90039 8.89941\nv26.6006c0 82.0996 124 82.0996 124 0v-26.6006c0 -5 3.89941 -8.89941 8.89941 -8.89941h17.7002c5 0 8.90039 3.89941 8.90039 8.89941v26.6006c0 53.7002 -43.7002 97.3994 -97.4004 97.3994s-97.4004 -43.6992 -97.4004 -97.3994zM389.7 68v141.7\nc0 9.7002 -8 17.7002 -17.7002 17.7002h-248c-9.7002 0 -17.7002 -8 -17.7002 -17.7002v-141.7c0 -9.7002 8 -17.7002 17.7002 -17.7002h248c9.7002 0 17.7002 8 17.7002 17.7002zM141.7 205.3v-132.899c0 -2.5 -1.90039 -4.40039 -4.40039 -4.40039h-8.89941\nc-2.5 0 -4.40039 1.90039 -4.40039 4.40039v132.899c0 2.5 1.90039 4.40039 4.40039 4.40039h8.89941c2.5 0 4.40039 -1.90039 4.40039 -4.40039zM283.4 156.6c0 -13 -7.2002 -24.3994 -17.7002 -30.3994v-31.6006c0 -5 -3.90039 -8.89941 -8.90039 -8.89941h-17.7002\nc-5 0 -8.89941 3.89941 -8.89941 8.89941v31.6006c-10.5 6.09961 -17.7002 17.3994 -17.7002 30.3994c0 19.7002 15.7998 35.4004 35.4004 35.4004c19.5996 0 35.5 -15.7998 35.5 -35.4004zM248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248\ns111 248 248 248zM248 -38.2998c127 0 230.3 103.3 230.3 230.3s-103.3 230.3 -230.3 230.3s-230.3 -103.3 -230.3 -230.3s103.3 -230.3 230.3 -230.3z\" />\n    <glyph glyph-name=\"cc-jcb\" unicode=\"&#xf24b;\" horiz-adv-x=\"576\" \nd=\"M431.5 203.7v32.2998c41.2002 0 38.5 -0.200195 38.5 -0.200195c7.2998 -1.2998 13.2998 -7.2998 13.2998 -16c0 -8.7998 -6 -14.5 -13.2998 -15.7998c-1.2002 -0.400391 -3.2998 -0.299805 -38.5 -0.299805zM474.3 183.5c7.5 -1.5 13.5 -8.2998 13.5 -17\nc0 -9 -6 -15.5 -13.5 -17c-2.7998 -0.700195 -3.2002 -0.5 -42.7998 -0.5v35c39.5 0 40 0.200195 42.7998 -0.5zM576 368v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h480c26.5 0 48 -21.5 48 -48zM182 255.7h-57\nc0 -67.1006 10.7002 -109.7 -35.7998 -109.7c-19.5 0 -38.7998 5.7002 -57.2002 14.7998v-28c30 -8.2998 68 -8.2998 68 -8.2998c97.9004 0 82 47.7002 82 131.2zM360.5 251.2c-63.4004 16 -165 14.8994 -165 -59.2998c0 -77.1006 108.2 -73.6006 165 -59.2002v28.2998\nc-47.5996 -24.7002 -107.5 -22 -107.5 31s59.7998 55.5996 107.5 31.2002v28zM544 161.5c0 18.5 -16.5 30.5 -38 32v0.799805c19.5 2.7002 30.2998 15.5 30.2998 30.2002c0 19 -15.7002 30 -37 31c0 0 6.2998 0.299805 -120.3 0.299805v-127.5h122.7\nc24.2998 -0.0996094 42.2998 12.9004 42.2998 33.2002z\" />\n    <glyph glyph-name=\"cc-diners-club\" unicode=\"&#xf24c;\" horiz-adv-x=\"576\" \nd=\"M239.7 368.1c97.2002 0 175.8 -78.5996 175.8 -175.8c0 -96.8994 -78.5996 -175.8 -175.8 -175.8c-96.9004 0 -175.8 78.9004 -175.8 175.8c0 97.2002 78.8994 175.8 175.8 175.8zM199.8 88.5v207.9c-41.7002 -16.2002 -71.3994 -56.7002 -71.3994 -104.101\nc0 -47.3994 29.6992 -87.8994 71.3994 -103.8zM279.6 88.2002c41.7002 16.2002 71.4004 56.7002 71.4004 104.1c0 47.4004 -29.7002 87.9004 -71.4004 104.101v-208.2zM528 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48v352\nc0 26.5 21.5 48 48 48h480zM329.7 0c105 0 200.7 85.5 200.7 190.2c0 114.6 -95.7002 193.8 -200.7 193.8h-90.2998c-106.2 0 -193.801 -79.2002 -193.801 -193.8c0 -104.7 87.6006 -190.2 193.801 -190.2h90.2998z\" />\n    <glyph glyph-name=\"creative-commons\" unicode=\"&#xf25e;\" horiz-adv-x=\"496\" \nd=\"M245.83 233.13l-33.2197 -17.2803c-9.43066 19.5801 -25.2402 19.9307 -27.46 19.9307c-22.1309 0 -33.2207 -14.6104 -33.2207 -43.8398c0 -23.5703 9.20996 -43.8408 33.2207 -43.8408c14.4697 0 24.6494 7.09082 30.5693 21.2607l30.5498 -15.5\nc-6.16992 -11.5107 -25.6895 -38.9805 -65.0996 -38.9805c-22.5996 0 -73.96 10.3203 -73.96 77.0498c0 58.6904 43 77.0605 72.6299 77.0605c30.7197 0.00976562 52.7002 -11.9502 65.9902 -35.8604zM388.88 233.13l-32.7803 -17.2803\nc-9.5 19.7705 -25.7197 19.9307 -27.8994 19.9307c-22.1406 0 -33.2197 -14.6104 -33.2197 -43.8398c0 -23.5508 9.22949 -43.8408 33.2197 -43.8408c14.4502 0 24.6494 7.09082 30.54 21.2607l31 -15.5c-2.10059 -3.75 -21.3906 -38.9805 -65.0898 -38.9805\nc-22.6904 0 -73.96 9.87012 -73.96 77.0498c0 58.6699 42.9697 77.0605 72.6299 77.0605c30.71 0.00976562 52.5801 -11.9502 65.5596 -35.8604zM247.56 439.95c141.82 0 248.44 -110.13 248.44 -248c0 -147.13 -118.51 -248 -248.44 -248\nc-133.96 0 -247.56 109.51 -247.56 248c0 132.939 104.74 248 247.56 248zM248.43 -10.8604c103.16 0 202.83 81.1299 202.84 202.82c0 113.8 -90.2891 203.26 -202.819 203.26c-118.29 0 -203.72 -97.8496 -203.72 -203.27c0 -109.771 91.1592 -202.811 203.699 -202.811z\n\" />\n    <glyph glyph-name=\"gg\" unicode=\"&#xf260;\" horiz-adv-x=\"512\" \nd=\"M179.2 217.6l102.399 -102.399l-102.399 -102.4l-179.2 179.2l179.2 179.2l44.7998 -44.7998l-25.5996 -25.6006l-19.2002 19.2002l-128 -128l128 -128l51.5 51.5l-77.1006 76.5zM332.8 371.2l179.2 -179.2l-179.2 -179.2l-44.7998 44.7998l25.5996 25.6006\nl19.2002 -19.2002l128 128l-128 128l-51.5 -51.5l77.1006 -76.5l-25.6006 -25.5996l-102.399 102.399z\" />\n    <glyph glyph-name=\"gg-circle\" unicode=\"&#xf261;\" horiz-adv-x=\"512\" \nd=\"M257 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM207.5 65.2002l75 75.2002l-77.2002 77.1992l-24.3994 -24.3994l53.0996 -52.9004l-26.5996 -26.5996l-77.2002 77.2002l77.2002 77.1992l11.0996 -11.0996l24.2002 24.2002\nl-35.2002 35.3994l-125.7 -125.699zM306.5 67.4004l125.7 125.6l-125.7 125.7l-75 -75l77.2002 -77.2002l24.3994 24.4004l-53.0996 52.8994l26.5 26.5l77.2002 -77.2002l-77.2002 -77.1992l-11.0996 11.0996l-24.1006 -24.4004z\" />\n    <glyph glyph-name=\"tripadvisor\" unicode=\"&#xf262;\" horiz-adv-x=\"576\" \nd=\"M166.4 167.479c0 -13.2354 -10.7305 -23.9658 -23.9668 -23.9658c-13.2354 0 -23.9658 10.7305 -23.9658 23.9658c0 13.2363 10.7305 23.9668 23.9658 23.9668c13.2363 0 23.9668 -10.7295 23.9668 -23.9668zM431.362 191.435\nc13.2295 0 23.9551 -10.7246 23.9561 -23.9561c0 -13.2305 -10.7266 -23.9551 -23.9561 -23.9551c-13.2314 0 -23.9561 10.7256 -23.9561 23.9551c0 13.2314 10.7256 23.9561 23.9561 23.9561zM520.75 51.9453c-62.667 -49.1045 -153.276 -38.1094 -202.379 24.5586\nl-30.9795 -46.3252l-30.6826 45.9395c-48.2773 -60.3906 -135.622 -71.8916 -197.885 -26.0547c-64.0586 47.1572 -77.7588 137.315 -30.6016 201.373c-5.05762 17.1221 -17.7021 42.7236 -28.2227 57.1475l90.2861 0.0498047\nc48.0039 29.8701 132.851 54.1123 189.389 54.1123c2.11914 0 5.55762 -0.0371094 7.67578 -0.0820312c1.72363 0.0302734 4.52246 0.0556641 6.24609 0.0556641c55.5518 0 138.851 -23.9258 185.936 -53.4043l96.2178 -0.0742188\nc-10.6191 -14.5371 -23.3213 -40.3643 -28.3516 -57.6494c46.793 -62.7471 34.9639 -151.37 -26.6484 -199.646zM259.366 166.239c-0.00683594 63.5566 -51.5352 115.075 -115.092 115.067c-63.5576 -0.00683594 -115.074 -51.5342 -115.068 -115.092\nc0.00683594 -63.5566 51.5352 -115.075 115.092 -115.067c63.5127 0.0742188 114.984 51.5381 115.068 115.052v0.0400391zM287.957 176.694c5.43262 73.4395 65.5098 130.884 139.12 133.021c-35.5576 15.374 -95.8555 27.8506 -134.594 27.8506\nc-1.41699 0 -3.7168 -0.0166016 -5.13379 -0.0380859c-0.953125 0.00878906 -2.50098 0.0166016 -3.45508 0.0166016c-39.2324 0 -100.479 -12.2168 -136.709 -27.2695c74.3447 -1.58203 135.3 -59.4248 140.771 -133.581zM539.663 205.461\nc-21.9922 59.6338 -88.1621 90.1484 -147.795 68.1572c-59.6338 -21.9922 -90.1484 -88.1621 -68.1572 -147.795v-0.0322266c22.0381 -59.6074 88.1982 -90.0908 147.827 -68.1133c59.6152 22.0039 90.1133 88.1621 68.125 147.783zM213.624 167.486v-0.115234\nc-0.0566406 -39.3281 -31.9863 -71.1631 -71.3145 -71.1064c-39.3271 0.0576172 -71.1621 31.9863 -71.1055 71.3145s31.9863 71.1631 71.3135 71.1055c39.2598 -0.115234 71.042 -31.9395 71.1064 -71.1982zM189.112 167.486v0.0839844\nc-0.0517578 25.7832 -20.9941 46.6445 -46.7783 46.5938s-46.6445 -20.9941 -46.5938 -46.7773c0.0507812 -25.7842 20.9941 -46.6445 46.7764 -46.5938c25.7266 0.113281 46.5371 20.9678 46.5957 46.6934zM502.535 167.486\nc-0.0205078 -39.3281 -31.918 -71.2422 -71.2471 -71.2217c-39.3291 0.0214844 -71.1943 31.918 -71.1729 71.2471c0.0195312 39.3281 31.918 71.1943 71.2471 71.1729c39.29 -0.0654297 71.1211 -31.9082 71.1729 -71.1982zM478.031 167.494\nc-0.00878906 25.7842 -20.918 46.6787 -46.7021 46.6699s-46.6787 -20.918 -46.6699 -46.7021s20.918 -46.6777 46.7021 -46.6699c25.7646 0.0458984 46.6357 20.9277 46.6699 46.6934v0.00878906z\" />\n    <glyph glyph-name=\"odnoklassniki\" unicode=\"&#xf263;\" horiz-adv-x=\"320\" \nd=\"M275.1 114c-27.3994 -17.4004 -65.0996 -24.2998 -90 -26.9004l20.9004 -20.5996l76.2998 -76.2998c27.9004 -28.6006 -17.5 -73.2998 -45.7002 -45.7002c-19.0996 19.4004 -47.0996 47.4004 -76.2998 76.5996l-76.2998 -76.5\nc-28.2002 -27.5 -73.5996 17.6006 -45.4004 45.7002c19.4004 19.4004 47.1006 47.4004 76.3008 76.2998l20.5996 20.6006c-24.5996 2.59961 -62.9004 9.09961 -90.5996 26.8994c-32.6006 21 -46.9004 33.3008 -34.3008 59c7.40039 14.6006 27.7002 26.9004 54.6006 5.7002\nc0 0 36.2998 -28.8994 94.8994 -28.8994c58.6006 0 94.9004 28.8994 94.9004 28.8994c26.9004 21.1006 47.0996 8.90039 54.5996 -5.7002c12.4004 -25.6992 -1.89941 -38 -34.5 -59.0996zM30.2998 318.3c0 71.7002 58.2998 129.7 129.7 129.7s129.7 -58 129.7 -129.7\nc0 -71.3994 -58.2998 -129.399 -129.7 -129.399s-129.7 58 -129.7 129.399zM96.2998 318.3c0 -35.0996 28.6006 -63.7002 63.7002 -63.7002s63.7002 28.6006 63.7002 63.7002c0 35.4004 -28.6006 64 -63.7002 64s-63.7002 -28.5996 -63.7002 -64z\" />\n    <glyph glyph-name=\"odnoklassniki-square\" unicode=\"&#xf264;\" \nd=\"M184.2 270.9c0 22.0996 17.8994 40 39.7998 40s39.7998 -17.9004 39.7998 -40c0 -22 -17.8994 -39.8008 -39.7998 -39.8008s-39.7998 17.9004 -39.7998 39.8008zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352\nc26.5 0 48 -21.5 48 -48zM142.9 270.9c0 -44.6006 36.3994 -80.9004 81.0996 -80.9004s81.0996 36.2002 81.0996 80.9004c0 44.7998 -36.3994 81.0996 -81.0996 81.0996s-81.0996 -36.2002 -81.0996 -81.0996zM317.4 180.2\nc-4.60059 9.09961 -17.3008 16.7998 -34.1006 3.59961c0 0 -22.7002 -18 -59.2998 -18s-59.2998 18 -59.2998 18c-16.7998 13.2002 -29.5 5.5 -34.1006 -3.59961c-7.89941 -16.1006 1.10059 -23.7002 21.4004 -37c17.2998 -11.1006 41.2002 -15.2002 56.5996 -16.7998\nl-12.8994 -12.9004c-18.2002 -18 -35.5 -35.5 -47.7002 -47.7002c-17.5996 -17.5996 10.7002 -45.7998 28.4004 -28.5996l47.6992 47.8994c18.2002 -18.1992 35.7002 -35.6992 47.7002 -47.8994c17.6006 -17.2002 46 10.7002 28.6006 28.5996l-47.7002 47.7002l-13 12.9004\nc15.5 1.59961 39.0996 5.89941 56.2002 16.7998c20.3994 13.2998 29.2998 21 21.5 37z\" />\n    <glyph glyph-name=\"get-pocket\" unicode=\"&#xf265;\" \nd=\"M407.6 384c22.7002 0 40.4004 -18.2002 40.4004 -40.5996v-135.2c0 -124.7 -99.7998 -224.2 -223.8 -224.2c-124.5 0 -224.2 99.5 -224.2 224.2v135.2c0 22.0996 18.5 40.5996 40.5996 40.5996h367zM245.6 115.5c111.9 107.5 114.801 105.4 114.801 123.2\nc0 16.8994 -13.8008 30.7002 -30.7002 30.7002c-16.9004 0 -14.9004 -2.40039 -105.5 -89.3008c-89.1006 85.5 -88.2002 89.3008 -105.2 89.3008c-16.9004 0 -30.7002 -13.8008 -30.7002 -30.7002c0 -18.1006 1.2002 -14.2998 114.9 -123.2\nc11 -11.0996 30 -11.7998 42.3994 0z\" />\n    <glyph glyph-name=\"wikipedia-w\" unicode=\"&#xf266;\" horiz-adv-x=\"640\" \nd=\"M640 396.8l-0.299805 -12.2002c-28.1006 -0.799805 -45 -15.7998 -55.7998 -40.2998c-25 -57.7998 -103.301 -240 -155.301 -358.6h-13.5996l-81.9004 193.1c-32.5 -63.5996 -68.2998 -130 -99.1992 -193.1c-0.300781 -0.299805 -15 0 -15 0.299805\nc-46.9004 109.7 -96.1006 218.6 -143.101 328.6c-11.3994 26.7002 -49.3994 70 -75.5996 69.7002c0 3.10059 -0.299805 10 -0.299805 14.2002h161.899v-13.9004c-19.2002 -1.09961 -52.7998 -13.2998 -43.2998 -34.1992c21.9004 -49.7002 103.6 -240.301 125.6 -288.601\nc15 29.7002 57.8008 109.2 75.3008 142.8c-13.9004 28.3008 -58.6006 133.9 -72.8008 160c-9.69922 17.8008 -36.0996 19.4004 -55.7998 19.7002v13.9004l142.5 -0.299805v-13.1006c-19.3994 -0.599609 -38.0996 -7.7998 -29.3994 -26.0996\nc18.8994 -40 30.5996 -68.1006 48.0996 -104.7c5.59961 10.7998 34.7002 69.4004 48.0996 100.8c8.90039 20.6006 -3.89941 28.6006 -38.5996 29.4004c0.299805 3.59961 0 10.2998 0.299805 13.5996c44.4004 0.299805 111.101 0.299805 123.101 0.600586v-13.6006\nc-22.5 -0.799805 -45.8008 -12.7998 -58.1006 -31.7002l-59.2002 -122.8c6.40039 -16.0996 63.3008 -142.8 69.2002 -156.7l122.4 282.601c-8.60059 23.0996 -36.4004 28.0996 -47.2002 28.2998v13.9004l127.8 -1.10059z\" />\n    <glyph glyph-name=\"safari\" unicode=\"&#xf267;\" horiz-adv-x=\"512\" \nd=\"M236.9 191.2c0 9.09961 6.59961 17.7002 16.2998 17.7002c8.89941 0 17.3994 -6.40039 17.3994 -16.1006c0 -9.09961 -6.39941 -17.7002 -16.0996 -17.7002c-9 0 -17.5996 6.7002 -17.5996 16.1006zM504 192c0 -137 -111 -248 -248 -248s-248 111 -248 248\ns111 248 248 248s248 -111 248 -248zM477.4 192c0 122.3 -99.1006 221.4 -221.4 221.4s-221.4 -99.1006 -221.4 -221.4s99.1006 -221.4 221.4 -221.4s221.4 99.1006 221.4 221.4zM404.9 95.4004c0 -3.60059 13 -10.2002 16.2998 -12.2002\nc-27.4004 -41.5 -69.7998 -71.4004 -117.9 -83.2998l-4.39941 18.5c-0.300781 2.5 -1.90039 2.7998 -4.2002 2.7998c-1.90039 0 -3 -2.7998 -2.7998 -4.2002l4.39941 -18.7998c-13.2998 -2.7998 -26.7998 -4.2002 -40.3994 -4.2002c-36.3008 0 -72 10.2002 -103 29.0996\nc1.69922 2.80078 12.1992 18 12.1992 20.2002c0 1.90039 -1.69922 3.60059 -3.59961 3.60059c-3.90039 0 -12.2002 -16.6006 -14.7002 -19.9004c-41.7998 27.7002 -72 70.5996 -83.5996 119.6l19.0996 4.2002c2.2002 0.600586 2.7998 2.2002 2.7998 4.2002\nc0 1.90039 -2.7998 3 -4.39941 2.7998l-18.7002 -4.2998c-2.5 12.7002 -3.90039 25.5 -3.90039 38.5c0 37.0996 10.5 73.5996 30.2002 104.9c2.7998 -1.7002 16.1006 -10.8008 18.2998 -10.8008c1.90039 0 3.60059 1.40039 3.60059 3.30078\nc0 3.89941 -14.7002 11.2998 -18 13.5996c28.2002 41.2002 71.0996 70.9004 119.8 81.9004l4.2002 -18.5c0.599609 -2.2002 2.2002 -2.80078 4.2002 -2.80078s3 2.80078 2.7998 4.40039l-4.2002 18.2998c12.2002 2.2002 24.5996 3.60059 37.0996 3.60059\nc37.1006 0 73.3008 -10.5 104.9 -30.2002c-1.90039 -2.7998 -10.7998 -15.7998 -10.7998 -18c0 -1.90039 1.39941 -3.60059 3.2998 -3.60059c3.90039 0 11.2998 14.4004 13.2998 17.7002c41 -27.7002 70.2998 -70 81.7002 -118.2l-15.5 -3.2998\nc-2.5 -0.599609 -2.7998 -2.2002 -2.7998 -4.39941c0 -1.90039 2.7998 -3 4.2002 -2.80078l15.7998 3.60059c2.5 -12.7002 3.89941 -25.7002 3.89941 -38.7002c0 -36.2998 -10 -72 -28.7998 -102.7c-2.7998 1.40039 -14.3994 9.7002 -16.5996 9.7002\nc-2.10059 0 -3.7998 -1.7002 -3.7998 -3.59961zM371.7 337.6c-13 -12.1992 -134.2 -123.699 -137.601 -129.5l-96.5996 -160.5c12.7002 11.9004 134.2 124 137.3 129.301z\" />\n    <glyph glyph-name=\"chrome\" unicode=\"&#xf268;\" horiz-adv-x=\"496\" \nd=\"M131.5 230.5l-76.4004 117.4c47.6006 59.1992 119 91.7998 192 92.0996c42.3008 0.299805 85.5 -10.5 124.801 -33.2002c43.3994 -25.2002 76.3994 -61.3994 97.3994 -103l-205.3 10.7998c-58.0996 3.40039 -113.4 -29.2998 -132.5 -84.0996zM164.4 192\nc0 46.2998 37.3994 83.5996 83.5996 83.5996s83.5996 -37.3994 83.5996 -83.5996s-37.3994 -83.5996 -83.5996 -83.5996s-83.5996 37.3994 -83.5996 83.5996zM479.3 281.2c43.5 -111.9 0 -241.9 -107.399 -303.9c-43.4004 -25.2002 -91.3008 -35.3994 -137.801 -32.8994\nl112.101 172.399c31.8994 49 31.2998 112.9 -6.60059 157.2zM133.7 144.4c26.2998 -51.7002 81.8994 -83.3008 139.5 -72.5l-63.7002 -124.801c-118.7 18.2002 -209.5 120.9 -209.5 244.9c0 50.0996 14.9004 96.9004 40.4004 135.9z\" />\n    <glyph glyph-name=\"firefox\" unicode=\"&#xf269;\" horiz-adv-x=\"480\" \nd=\"M478.1 212.7c1.30078 -7.10059 1.90039 -14.2998 1.90039 -21.6006v-2.7998c-1.40039 -34 -11.5996 -67 -29.5996 -95.8994c-1 -1.5 -1.80078 -2.90039 -2.7002 -4.30078c2.7002 -7.19922 2.59961 -15.0996 -0.400391 -22.1992\nc-5 -19.4004 -16.5996 -36.4004 -32.8994 -48.1006c-10.8008 -8.7002 -22.7002 -16.2002 -35.3008 -22.0996l-1.89941 -0.900391l-1 -0.5c-1.7002 -0.700195 -3.2998 -1.39941 -4.90039 -2.09961c-2.39941 -5.10059 -5.7998 -9.60059 -9.89941 -13.2998\nc-2.5 -3.10059 -30.1006 -35 -113.801 -35c-23.5996 0 -47.1992 3.5 -69.7998 10.2998c0.799805 -0.299805 1.60059 -0.700195 2.40039 -1c-2.60059 0.899414 -5.2002 1.7998 -7.7002 2.7002c-19.0996 5.89941 -37.2002 14.5996 -53.7998 25.7998\nc-40.7002 24.7002 -72.9004 61.2002 -92.2998 104.7c-14.5 31.3994 -21.1006 65.7998 -19.4004 100.3c-2.7998 -8.2998 -5.2002 -16.7002 -7 -25.2998c0 29.1992 5.5 58.0996 16.2002 85.1992c-5.5 -7.89941 -10.2998 -16.2998 -14.2998 -25.0996\nc5.69922 23.0996 14.6992 45.2002 26.7998 65.5996c3.7002 6.10059 7.89941 11.9004 12.7002 17.1006v0.200195c-0.100586 2.69922 0.0996094 5.5 0.5 8.2998c1.5 16.2998 5.69922 32.2002 12.3994 47.0996l0.299805 0.700195c0.100586 0.299805 0 -1 0 -1.7002\ns-0.0996094 -1.2998 0 -1c0.600586 2 1.40039 4 2.30078 5.90039c1 2.09961 2.39941 4.09961 3.89941 5.7998c0.100586 0.0996094 0.200195 0.200195 0.299805 0.400391c0.100586 0.199219 -0.399414 -2 -0.5 -3.10059v-0.5c0.600586 1.2002 1.30078 2.40039 2.2002 4.5\nc2.10059 5.90039 6 11 11.1006 14.5l0.199219 0.100586c-0.299805 -9 1.2002 -17.9004 4.40039 -26.2002v-0.100586c0.299805 -0.399414 0.5 1.30078 0.900391 1.30078c0.0996094 0 0.199219 -0.100586 0.199219 -0.200195\nc0.900391 -1.7998 1.80078 -3.60059 2.7002 -5.2002c1.2998 -2.2002 2.5 -4.2002 3.7002 -6l0.400391 -0.200195l0.199219 0.100586c2.60059 -4.2002 5.90039 -7.80078 9.7002 -10.9004h-0.200195l0.200195 -0.0996094c18.2998 3.59961 37.2002 2 54.6006 -4.7002\nl0.0996094 0.0996094c2.09961 2.60059 4.59961 4.90039 7.2998 6.90039c0 -0.900391 -0.0996094 -1.7998 -0.200195 -2.7002c4 5 9.10059 9 15 11.5c-0.399414 -0.700195 -0.5 -1.40039 -0.5 -2.2002c7.40039 4.2998 15.5 7.40039 23.9004 9\nc1.09961 0 -3.5 -1.7998 -5.09961 -3.09961c3.69922 1.59961 7.69922 2.59961 11.6992 2.7998c6.60059 0.700195 14 -2.09961 12.6006 -2.7002c-2.7998 -1 -5.5 -2.2002 -8.2002 -3.5c-0.799805 -0.700195 3.2002 0.200195 2.40039 -0.5\nc-14 -9.2002 -24.8008 -22.5996 -30.8008 -38.2998v-0.0996094c2.5 -11 11.4004 -19.3008 22.5 -21.1006c31.5 -3 37.5 -5.59961 38.4004 -9.09961v-1.5c-0.0996094 -1 -0.200195 -1.90039 -0.299805 -2.7998c-1.2002 -6.90039 -4.90039 -13.2002 -10.2002 -17.7002\nc-1.40039 -1.2998 -2.90039 -2.5 -4.5 -3.5c-1.09961 -0.700195 -6.40039 -2.7998 -12.7998 -5.60059c-7.90039 -3.19922 -15.5 -7.09961 -22.7002 -11.5996c-1.2998 -0.799805 -2.40039 -1.7002 -3.40039 -2.7002c-0.399414 -0.399414 -1.19922 -1.5 -1.19922 -1.5\nv-0.0996094c0.5 -1.2002 1 -2.40039 1.19922 -3.7002c-1.39941 1.7002 -2.69922 1.09961 -1.89941 -0.5c0.899414 -2.5 1.2998 -5.2002 1.09961 -7.7998c0.200195 -4.7998 -0.700195 -9.60059 -2.59961 -14c-2.10059 1.5 -4.2998 2.89941 -6.60059 4.09961h-0.199219\nc2.5 -1.59961 4.2998 -3.89941 5.39941 -6.59961c0.700195 -2.2002 -0.299805 -2.7002 -0.299805 -2.7002c-1.40039 2 -3.09961 3.59961 -5.2002 4.7002c-3.09961 1.7998 -8.7998 4.7002 -11.3994 5.7998c-0.300781 -0.200195 -0.5 -0.0996094 -0.800781 -0.200195\nc0.800781 -1.2998 2.10059 -3.7998 2.10059 -3.7998s-1.7998 1.09961 -4.7998 2.59961c-3.90039 -1.7998 -7.2002 -4.89941 -9.30078 -8.69922c-3.5 -7.7002 -3.09961 -16.7002 1 -24.1006c4 -6 9.10059 -11.2002 15 -15.2002\nc0.400391 -0.299805 -3.39941 1.10059 -3.09961 0.800781c4.59961 -3.2002 9.40039 -6.10059 14.4004 -8.60059c1.5 -1 -5 1.2002 -3.40039 0.299805c1.40039 -0.899414 2.7998 -1.69922 4.2998 -2.5c22.9004 -12.0996 38.9004 0.400391 56.4004 2.90039\nc16.7998 3 33.7998 -3.59961 44.2002 -17c6 -8.5 -0.600586 -16.7002 -9 -14h-0.200195c-8.60059 2.90039 -19.1006 -4.2998 -36.6006 -14c-17.2998 -8.2998 -36.8994 -10.5996 -55.5996 -6.59961c-4.7998 0.899414 -9.40039 2.09961 -14 3.69922l-2 0.700195\nl0.200195 -0.299805c8.7998 -12.2002 19.8994 -22.5 32.7998 -30.2998c8.7002 -4.40039 17.9004 -7.5 27.4004 -9.2998c8 -1.90039 16.1992 -2.80078 24.5 -2.80078c61 -0.0996094 110.6 49.4004 110.6 110.4c0.0996094 15.9004 -3.09961 31.7998 -9.2998 46.5\nc20.7002 -12.2998 37.5996 -30.2002 48.7998 -51.5c-13.9004 40.5996 -40.2998 56.4004 -64.7002 76.5996c-19.5996 14.8008 -34.7002 34.9004 -43.3994 57.9004c-25.2002 67.7998 33.0996 132.9 33.0996 132.9s-3.59961 -15.1006 27.4004 -44.3008\nc6.39941 -5.89941 16.7998 -14.5 28.8994 -26.6992c1.7002 9.2998 4.2002 18.3994 7.40039 27.2998c2.5 -14.7002 7.7998 -28.7998 15.3994 -41.6006c11.7002 -16.6992 21.9004 -25.5996 30.7002 -40c1.90039 -2.5 3.7998 -5.19922 5.60059 -7.89941\nc5.09961 -7.2002 9.5 -14.7998 13.2998 -22.7998c6 -12 10.7998 -24.5 14.5 -37.4004c3 -10.4004 4.89941 -20.9004 5.7998 -31.5996c2.90039 3.89941 4.7002 5.89941 4.7002 5.89941s0.700195 -2.59961 1.39941 -7.09961zM179.1 310.3\nc-0.5 -1.2002 -0.899414 -2.2998 -1.2998 -3.5c0.400391 1.2002 0.900391 2.40039 1.2998 3.5z\" />\n    <glyph glyph-name=\"opera\" unicode=\"&#xf26a;\" horiz-adv-x=\"496\" \nd=\"M313.9 415.3c-170.2 0 -252.601 -223.8 -147.5 -355.1c36.5 -45.4004 88.5996 -75.6006 147.5 -75.6006c36.2998 0 70.2998 11.1006 99.3994 30.4004c-43.7998 -39.2002 -101.899 -63 -165.3 -63c-3.90039 0 -8 0 -11.9004 0.299805\nc-131.5 6.10059 -236.1 114.601 -236.1 247.7c0 137 111 248 248 248h0.799805c63.1006 -0.299805 120.7 -24.0996 164.4 -63.0996c-29 19.3994 -63.1006 30.3994 -99.2998 30.3994zM415.7 17.5996c-40.9004 -24.6992 -90.7002 -23.5996 -132 5.80078\nc56.2002 20.5 97.7002 91.5996 97.7002 176.6c0 84.7002 -41.2002 155.8 -97.4004 176.6c41.7998 29.2002 91.2002 30.3008 132.9 5c105.899 -98.6992 105.5 -265.699 -1.2002 -364z\" />\n    <glyph glyph-name=\"internet-explorer\" unicode=\"&#xf26b;\" horiz-adv-x=\"512\" \nd=\"M483.049 288.294c25.1963 -45.4473 33.2578 -97.5811 26.8516 -141.162h-328.792c0 -100.432 144.31 -136.029 196.818 -47.4355h120.833c-32.5645 -91.7285 -119.689 -146.022 -216.813 -146.022c-35.1367 0 -70.2725 0.143555 -101.695 15.5732\nc-87.3975 -44.4941 -180.251 -56.5693 -180.251 42.0059c0 45.8066 23.2461 107.096 43.9922 145.022c35.1357 63.7227 81.4121 124.875 135.687 173.168c-43.7061 -18.8604 -91.125 -66.2959 -121.977 -101.158c25.877 112.787 129.466 193.638 237.098 186.457\nc130.032 59.7939 209.673 34.1445 209.673 -38.5771c0 -27.4326 -10.5684 -63.2959 -21.4238 -87.8711zM64.5586 101.123c-73.001 -152.4 11.5254 -172.244 100.267 -123.304c-46.5635 27.4326 -82.5557 72.1533 -100.267 123.304zM180.536 209.996h207.961\nc-2 55.1514 -50.5635 94.8711 -103.981 94.8711c-53.7041 0 -101.979 -39.7197 -103.979 -94.8711zM365.072 397.596c46.2764 -18.002 85.9824 -57.2939 112.263 -99.5859c7.1416 18.8604 14.5693 47.8643 14.5693 67.8672c0 32.0049 -22.8525 53.7217 -54.2744 53.7217\nc-23.9951 0 -51.1328 -11.7158 -72.5576 -22.0029z\" />\n    <glyph glyph-name=\"contao\" unicode=\"&#xf26d;\" horiz-adv-x=\"512\" \nd=\"M45.4004 143c14.3994 -67.0996 26.3994 -129 68.1992 -175h-79.5996c-18.7002 0 -34 15.2002 -34 34v380c0 18.7002 15.2002 34 34 34h57.7002c-13.7998 -12.5996 -26.1006 -27.2002 -36.9004 -43.5996c-45.3994 -70 -27 -146.801 -9.39941 -229.4zM478 416\nc18.7998 0 34 -15.2002 34 -34v-380.1c0 -18.8008 -15.2998 -34 -34 -34h-52.0996c38.6992 38.3994 60.5996 92.0996 57.3994 163.6l-137.399 -29.5996c-1.7002 -32.5 -12.9004 -63.8008 -57.4004 -73.2002c-24.9004 -5.2998 -45.4004 0.599609 -58.2998 11.7002\nc-15.7998 13.5 -28.4004 31 -49.5 131.199c-21.4004 100.5 -17 121.601 -8.2002 140.301c7.2998 15.2998 23.7002 29.2998 48.2998 34.5996c44.7998 9.40039 67.7002 -14.9004 82.6006 -43.9004l137.1 29.3008c-13.5 34.5996 -31.2998 62.6992 -52.7002 84.0996h90.2002z\n\" />\n    <glyph glyph-name=\"500px\" unicode=\"&#xf26e;\" \nd=\"M103.3 103.7c-6.5 14.2002 -6.89941 18.2998 7.40039 23.0996c25.5996 8 8 -9.2002 43.2002 -49.2002h0.299805v93.9004c1.2002 50.2002 44 92.2002 97.7002 92.2002c53.8994 0 97.6992 -43.5 97.6992 -96.7998c0 -63.4004 -60.7998 -113.2 -128.5 -93.3008\nc-10.5 4.2002 -2.09961 31.7002 8.5 28.6006c53 0 89.4004 10.0996 89.4004 64.3994c0 61 -77.0996 89.6006 -116.9 44.6006c-23.5 -26.4004 -17.5996 -42.1006 -17.5996 -157.601c50.7002 -31 118.3 -22 160.4 20.1006c24.7998 24.7998 38.5 58 38.5 93\nc0 35.2002 -13.8008 68.2002 -38.8008 93.2998c-24.7998 24.7998 -57.7998 38.5 -93.2998 38.5s-68.7998 -13.7998 -93.5 -38.5c-0.299805 -0.299805 -16 -16.5 -21.2002 -23.9004l-0.5 -0.599609c-3.2998 -4.7002 -6.2998 -9.09961 -20.0996 -6.09961\nc-6.90039 1.69922 -14.2998 5.7998 -14.2998 11.7998v186.8c0 5 3.89941 10.5 10.5 10.5h241.3c8.2998 0 8.2998 -11.5996 8.2998 -15.0996c0 -3.90039 0 -15.1006 -8.2998 -15.1006h-223.2v-132.899h0.299805c104.2 109.8 282.801 36 282.801 -108.9\nc0 -178.1 -244.801 -220.3 -310.101 -62.7998zM166.6 364.5c3.80078 18.7998 145.101 50.7998 238.301 -38.2002c8.5 -7.5 -9.5 -22.7998 -14.3008 -22.7998c-6.59961 0 -84.5996 87.9004 -209.399 40.4004c-10 -3.90039 -15.1006 16.3994 -14.6006 20.5996zM393 33.2998\nc8.09961 8 27.5996 -12.5996 20.7002 -20.3994c-135.601 -135.601 -357.601 -52.1006 -381.601 121.3c-1.5 10.7002 28.9004 15.5 28.9004 3.2998c33 -165 222 -214.1 332 -104.2zM213.6 141.4c0 3.39941 2.30078 4.69922 20.4004 22.5996l-18.2002 18.2002\nc-5.59961 5.59961 7.40039 17.2998 12.4004 17.2998c3.09961 0 2.89941 -0.700195 21.5 -19.5l17.8994 17.9004c6.10059 6.09961 22.5 -8.90039 16.2002 -15.7002l-18.2002 -18.2002l17.3008 -17.2998c7.7998 -7.7998 -5.30078 -18.2002 -10.7002 -18.2002\nc-3.2002 0 -2.7002 0.200195 -22.2998 19.5c-19.7002 -19.7002 -18.5 -19.5 -22.3008 -19.5c-2.39941 0 -5.5 1.40039 -8.5 4.40039c-1.19922 1.19922 -5.5 4.5 -5.5 8.5z\" />\n    <glyph glyph-name=\"amazon\" unicode=\"&#xf270;\" \nd=\"M257.2 285.3c0 39.2998 5.2002 69.2002 -35.5 69.1006c0 0 -37.9004 0 -54.2002 -49.5l-73.5 6.7998c0 49.2998 46.7002 104.3 134.7 104.3c87.7998 0 112.3 -57 112.3 -82.2998v-147.101c0 -27.5 32.2998 -52.7998 32.2998 -52.7998l-56.7998 -56\nc-9.90039 9.2998 -38.7998 36.6006 -45.2998 46.7998c-45.2002 -70.7998 -183.5 -66.2998 -183.5 43.2002c0 102 120.8 115.7 169.5 117.5zM257.2 198.5v40.5996c-33.7002 -1.09961 -84.2002 -10.5996 -84.2002 -57.7998c0 -50.7998 84.2002 -62.7998 84.2002 17.2002z\nM393.2 35c-7.7002 -10 -70 -67 -174.5 -67s-184.5 71.5 -209 101c-6.7998 7.7002 1 11.2998 5.5 8.2998c73.2998 -44.5 187.8 -117.8 372.5 -30.2998c7.5 3.7002 13.2998 -2 5.5 -12zM433 32.7998c-6.5 -15.7998 -16 -26.7998 -21.2002 -31\nc-5.5 -4.5 -9.5 -2.7002 -6.5 3.7998s19.2998 46.5 12.7002 55c-6.5 8.30078 -37 4.30078 -48 3.2002c-10.7998 -1 -13 -2 -14 0.299805c-2.2998 5.7002 21.7002 15.5 37.5 17.5c15.7002 1.80078 41 0.800781 46 -5.69922c3.7002 -5.10059 0 -27.1006 -6.5 -43.1006z\" />\n    <glyph glyph-name=\"houzz\" unicode=\"&#xf27c;\" \nd=\"M275.9 117.3h-104.601v-149.3h-154.3v448h109.5v-104.5l305.1 -85.5996v-257.9h-155.699v149.3z\" />\n    <glyph glyph-name=\"vimeo-v\" unicode=\"&#xf27d;\" \nd=\"M447.8 294.4c-2 -43.6006 -32.3994 -103.301 -91.3994 -179.101c-60.9004 -79.2002 -112.4 -118.8 -154.601 -118.8c-26.0996 0 -48.2002 24.0996 -66.2998 72.2998c-35.2002 129.2 -50.2002 204.9 -79.2998 204.9c-3.40039 0 -15.1006 -7.10059 -35.2002 -21.1006\nl-21 27.2002c51.5996 45.2998 100.9 95.7002 131.8 98.5c34.9004 3.40039 56.2998 -20.5 64.4004 -71.5c28.7002 -181.5 41.3994 -208.899 93.5996 -126.7c18.7002 29.6006 28.7998 52.1006 30.2002 67.6006c4.7998 45.8994 -35.7998 42.7998 -63.2998 31\nc22 72.0996 64.0996 107.1 126.2 105.1c45.7998 -1.2002 67.5 -31.0996 64.8994 -89.3994z\" />\n    <glyph glyph-name=\"black-tie\" unicode=\"&#xf27e;\" \nd=\"M0 416h448v-448h-448v448zM316.5 90.7998l-64.5 184l64.4004 86.6006h-184.9l64.5 -86.6006l-64.5 -184l92.5 -88.7002z\" />\n    <glyph glyph-name=\"fonticons\" unicode=\"&#xf280;\" \nd=\"M0 416h448v-448h-448v448zM187 275.1c11.9004 0 16.5996 -4.2998 16.2998 -23l50.7002 6.10059c0 44.5996 -30.5996 52.7998 -64.7002 52.7998c-50.7998 0 -77.2998 -20.4004 -77.2998 -70v-21h-28v-37.4004h22.2002c2.89941 0 5.7998 0 5.7998 -2.2998v-111.399\nc0 -5.60059 -1.5 -7.30078 -6.7002 -7.90039l-21.2998 -2v-25.7002h130.7v25.1006l-43.5 4.09961c-5.2002 0.599609 -3.2002 1.5 -3.2002 7.2998v112.9h55.7002l11.0996 37.2998h-67.3994c-2.90039 0 0.599609 2 0.599609 4.40039v23.2998\nc0 17.5 0.599609 27.3994 19 27.3994zM261.3 33.2998h102.601v25.1006l-15.7002 2.59961c-5.5 0.900391 -2.90039 1.5 -2.90039 7.2998v151.7h-80.2002l-6.69922 -29.5l24.1992 -6.40039c3.80078 -1.19922 6.7002 -3.7998 6.7002 -7.89941v-107.9\nc0 -5.59961 -2.39941 -6.7002 -7.59961 -7.2998l-20.4004 -2.59961v-25.1006zM342.1 288.8l21.9004 24.2002l-3.5 9.59961h-27.7002l-15.5 28h-9.2998l-15.5 -28h-27.7002l-3.5 -9.59961l21.7998 -24.2002l-9 -33.2002l7.30078 -7.2998l31.1992 16.6006l31.2002 -16.6006\nl7.2998 7.2998z\" />\n    <glyph glyph-name=\"reddit-alien\" unicode=\"&#xf281;\" horiz-adv-x=\"512\" \nd=\"M440.3 244.5c55.2998 0 73.7002 -74.0996 23.7998 -99.7002c2.2002 -7.89941 3.10059 -16.7002 3.10059 -25.0996c0 -83.7998 -94.4004 -151.7 -210.8 -151.7c-115.9 0 -210.301 67.9004 -210.301 151.7c0 8.39941 0.800781 16.7998 2.60059 24.7002\nc-50.9004 25.5 -32.7002 100.1 22.8994 100.1c15 0 28.7002 -6.2002 38.4004 -16.2998c35.7998 24.7002 83.4004 40.5996 136.3 42.7998l30.4004 137.6c1.2998 4.90039 6.09961 8.40039 11 7.10059l97.3994 -21.6006c6.60059 12.7002 19.9004 22 35.3008 22\nc22.0996 0 39.6992 -18.0996 39.6992 -39.6992c0 -21.6006 -17.6992 -39.7002 -39.6992 -39.7002c-21.6006 0 -39.2002 17.5996 -39.2002 39.2002l-88.2002 19.7998l-27.7002 -124.8c53.2998 -1.7002 101.4 -17.6006 137.101 -42.3008\nc9.69922 9.7002 22.8994 15.9004 37.8994 15.9004zM129.4 139.1c0 -21.5996 17.6992 -39.2998 39.6992 -39.1992c21.6006 0 39.2002 17.5996 39.2002 39.1992c0 22.1006 -17.5996 39.7002 -39.2002 39.7002c-22.0996 0 -39.6992 -17.7002 -39.6992 -39.7002zM343.7 45.5996\nc4 3.5 4 9.7002 -0.100586 13.7002c-3.5 3.5 -9.69922 3.5 -13.1992 0c-29 -29 -121.2 -28.5 -149 0c-3.5 3.5 -9.7002 3.5 -13.2002 0c-4 -4 -4 -10.2002 0 -13.7002c36.3994 -36.3994 139.1 -36.3994 175.5 0zM342.9 99.7998c22 0 39.5996 17.7002 39.6992 39.2002\nc0 22.0996 -17.6992 39.7002 -39.6992 39.7002c-21.6006 0 -39.2002 -17.7002 -39.2002 -39.7002c0 -21.5996 17.5996 -39.2002 39.2002 -39.2002z\" />\n    <glyph glyph-name=\"edge\" unicode=\"&#xf282;\" horiz-adv-x=\"512\" \nd=\"M25.7139 219.837c0.111328 0.162109 0.230469 0.323242 0.341797 0.485352c-0.0205078 -0.162109 -0.0449219 -0.323242 -0.0644531 -0.485352h-0.277344zM486.286 204.329l0.000976562 -52.0645h-314.073c1.38379 -128.497 191.392 -124.065 272.255 -67.5713v-104.404\nc-47.3555 -28.5244 -156.774 -53.1709 -240.132 -21.3242c-70.6191 27.1406 -119.913 100.528 -120.743 171.977c-1.10742 92.2188 45.6943 153.422 120.742 188.314c-15.7852 -19.9395 -27.9697 -41.54 -34.3389 -78.9258h175.853\nc10.2471 104.957 -99.4189 104.957 -99.4189 104.957c-103.302 -3.58984 -177.945 -63.6543 -220.375 -124.966c14.5615 114.465 92.9062 219.955 232.837 219.678c85.0195 0 157.605 -39.8779 198.593 -113.265c21.0469 -37.9404 28.8008 -78.373 28.8008 -122.405z\" />\n    <glyph glyph-name=\"codiepie\" unicode=\"&#xf284;\" horiz-adv-x=\"472\" \nd=\"M422.5 245.1c30.7002 0 33.5 -53.0996 -0.299805 -53.0996h-10.7998v-44.2998h-26.6006v97.3994h37.7002zM472 95.4004c-42.0996 -91.9004 -121.6 -151.4 -224 -151.4c-137 0 -248 111 -248 248s111 248 248 248c97.4004 0 172.8 -53.7002 218.2 -138.4l-186 -108.8z\nM433.5 82.9004l-60.2998 30.6992c-27.1006 -44.2998 -70.4004 -71.3994 -122.4 -71.3994c-82.5 0 -149.2 66.7002 -149.2 148.899c0 82.5 66.7002 149.2 149.2 149.2c48.4004 0 88.9004 -23.5 116.9 -63.3994l59.5 34.5996c-40.7002 62.5996 -104.7 100 -179.2 100\nc-121.2 0 -219.5 -98.2998 -219.5 -219.5s98.2998 -219.5 219.5 -219.5c78.5996 0 146.5 42.0996 185.5 110.4z\" />\n    <glyph glyph-name=\"modx\" unicode=\"&#xf285;\" \nd=\"M356 206.2l36.7002 -23.7002v-214.5l-133 83.7998zM440 373l-83.2002 -134.3l-153.5 96.5l23 37.7998h213.7zM351 230.2l-249.8 -57.7002l-46 29v214.5zM97 153.8l249.7 57.7002l-125 -200.5h-213.7z\" />\n    <glyph glyph-name=\"fort-awesome\" unicode=\"&#xf286;\" horiz-adv-x=\"512\" \nd=\"M489.2 160.1c2.59961 0 4.59961 -2 4.5 -4.59961v-219.5h-182.9v96c0 72.5996 -109.7 72.5996 -109.7 0v-96h-182.899v219.5c0 2.59961 2 4.59961 4.59961 4.59961h27.4004c2.59961 0 4.59961 -2 4.59961 -4.59961v-32h36.6006v178.3\nc0 2.60059 2 4.60059 4.59961 4.60059h27.4004c2.59961 0 4.59961 -2 4.59961 -4.60059v-32h36.2998v32c0 2.60059 2 4.60059 4.60059 4.60059h27.3994c2.60059 0 4.60059 -2 4.60059 -4.60059v-32h36.5996v32c0 6 8 4.60059 11.7002 4.60059v111.699\nc-5.40039 2.60059 -9.10059 8.30078 -9.10059 14.3008c0 20.7998 31.4004 20.6992 31.4004 0c0 -6 -3.7002 -11.7002 -9.09961 -14.3008v-4.89941c7.69922 1.7998 15.6992 2.89941 23.6992 2.89941c11.7002 0 22.9004 -4.2998 32.6006 -4.2998\nc8.89941 0 18.8994 4.2998 24 4.2998c2.59961 0 4.59961 -2 4.59961 -4.59961v-60c0 -6.90039 -23.0996 -8 -27.7002 -8c-10.5 0 -20.5 4.2998 -31.3994 4.2998c-8.60059 0 -17.4004 -1.39941 -25.7002 -3.39941v-38c3.7002 0 11.7002 1.39941 11.7002 -4.60059v-32h36.5996\nv32c0 2.60059 2 4.60059 4.60059 4.60059h27.3994c2.60059 0 4.60059 -2 4.60059 -4.60059v-32h36.5996v32c0 2.60059 2 4.60059 4.59961 4.60059h27.4004c2.59961 0 4.59961 -2 4.59961 -4.60059v-178.3h36.6006v32c0 2.59961 2 4.59961 4.59961 4.59961h27.4004z\nM201.1 164.6v64c0 2.60059 -2 4.60059 -4.59961 4.60059h-27.4004c-2.59961 0 -4.59961 -2 -4.59961 -4.60059v-64c0 -2.59961 2 -4.59961 4.59961 -4.59961h27.4004c2.59961 0 4.59961 2 4.59961 4.59961zM347.5 164.6v64c0 2.60059 -2 4.60059 -4.59961 4.60059h-27.4004\nc-2.59961 0 -4.59961 -2 -4.59961 -4.60059v-64c0 -2.59961 2 -4.59961 4.59961 -4.59961h27.4004c2.59961 0 4.59961 2 4.59961 4.59961z\" />\n    <glyph glyph-name=\"usb\" unicode=\"&#xf287;\" horiz-adv-x=\"640\" \nd=\"M641.5 192c0 -3.09961 -1.7002 -6.09961 -4.5 -7.5l-89.0996 -53.5c-1.40039 -0.799805 -2.80078 -1.40039 -4.5 -1.40039c-1.40039 0 -3.10059 0.300781 -4.5 1.10059c-2.80078 1.7002 -4.5 4.5 -4.5 7.7998v35.5996h-238.7\nc25.2998 -39.5996 40.5 -106.899 69.5996 -106.899h26.7002v26.7998c0 5 3.90039 8.90039 8.90039 8.90039h89.0996c5 0 8.90039 -3.90039 8.90039 -8.90039v-89.0996c0 -5 -3.90039 -8.90039 -8.90039 -8.90039h-89.0996c-5 0 -8.90039 3.90039 -8.90039 8.90039v26.6992\nh-26.7002c-75.3994 0 -81.0996 142.5 -124.7 142.5h-100.3c-8.09961 -30.5996 -35.8994 -53.5 -69 -53.5c-39.2998 0.100586 -71.2998 32.1006 -71.2998 71.4004s32 71.2998 71.2998 71.2998c33.1006 0 61 -22.7998 69 -53.5c39.1006 0 43.9004 -9.5 74.6006 60.4004\nc40.0996 89.0996 58.0996 82.0996 108.899 82.0996c7.5 20.9004 27 35.6006 50.4004 35.6006c29.5 0 53.5 -23.9004 53.5 -53.5c0 -29.6006 -23.9004 -53.5 -53.5 -53.5c-23.4004 0 -42.9004 14.7998 -50.4004 35.5996h-29.7998\nc-29.0996 0 -44.2998 -67.4004 -69.5996 -106.9h310.1v35.6006c0 3.2998 1.7002 6.09961 4.5 7.7998s6.40039 1.40039 8.90039 -0.299805l89.0996 -53.5c2.7998 -1.10059 4.5 -4.10059 4.5 -7.2002z\" />\n    <glyph glyph-name=\"product-hunt\" unicode=\"&#xf288;\" horiz-adv-x=\"512\" \nd=\"M326.3 229.2c0 -20.5 -16.7002 -37.2002 -37.2002 -37.2002h-70.2998v74.4004h70.2998c20.5 0 37.2002 -16.7002 37.2002 -37.2002zM504 192c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248s248 -111 248 -248zM375.9 229.2\nc0 47.8994 -38.9004 86.7998 -86.8008 86.7998h-119.899v-248h49.5996v74.4004h70.2998c47.9004 0 86.8008 38.8994 86.8008 86.7998z\" />\n    <glyph glyph-name=\"mixcloud\" unicode=\"&#xf289;\" horiz-adv-x=\"640\" \nd=\"M424.43 228.271c42.3623 -9.1377 74.4805 -47.0693 74.4805 -92.2002c0 -52.3311 -42.6406 -94.6934 -94.9688 -94.6934h-289.614c-62.5752 0 -113.243 50.668 -113.243 112.966c0 56.7598 42.085 103.554 96.6299 111.582\nc22.9814 67.5586 86.9395 114.074 159.205 114.074c87.2158 0 159.205 -66.7266 167.511 -151.729zM403.941 83.7412c29.0713 0 52.6064 23.5352 52.6064 52.3301c0 22.1494 -14.1211 40.9766 -33.502 48.4531c-1.38477 -8.58301 -3.59961 -17.166 -6.36914 -25.4727\nc-8.01367 -25.6484 -49.0898 -14.2266 -40.1465 13.29c4.15332 12.7373 6.36914 26.0264 6.36914 39.5938c0 69.2197 -56.4834 125.702 -125.979 125.702c-49.8379 0 -94.6934 -29.626 -114.628 -73.9258c19.3809 -4.98438 37.3779 -14.9512 52.0527 -29.3486\nc19.9531 -19.9531 -10.2168 -50.1436 -30.1797 -30.1807c-13.29 13.291 -31.0107 20.7666 -49.8379 20.7666c-39.04 0 -70.8809 -31.5645 -70.8809 -70.6045s31.8408 -70.6035 70.8809 -70.6035h289.614zM639.01 136.071c0 -44.0244 -12.7363 -86.3867 -37.1016 -122.657\nc-4.15332 -6.0918 -10.7979 -9.41406 -17.7197 -9.41406c-16.3174 0 -27.1279 18.8262 -17.4434 32.9492c19.3809 29.3486 29.9033 63.6816 29.9033 99.1221c0 35.4395 -10.5215 69.7725 -29.9033 98.8447c-15.6553 22.8311 19.3613 47.2402 35.1631 23.5342\nc24.3662 -35.9932 37.1016 -78.3564 37.1016 -122.379zM568.13 136.071c0 -31.5654 -9.13672 -62.0215 -26.8564 -88.3252c-4.15332 -6.09082 -10.7988 -9.13574 -17.7207 -9.13574c-17.2012 0 -27.0215 18.9785 -17.4424 32.9473\nc13.0127 19.1045 19.6572 41.2559 19.6572 64.5137c0 22.9805 -6.64453 45.4072 -19.6572 64.5117c-15.7617 22.9863 19.0078 47.0947 35.1631 23.5352c17.7188 -26.0264 26.8564 -56.4834 26.8564 -88.0469z\" />\n    <glyph glyph-name=\"scribd\" unicode=\"&#xf28a;\" horiz-adv-x=\"384\" \nd=\"M42.2998 195.3c-16.0996 19 -24.7002 45.9004 -24.7998 79.9004c0 100.399 75.2002 153.1 167.2 153.1c98.5996 1.60059 156.8 -49 184.3 -70.5996l-50.5 -72.1006l-37.2998 24.6006l26.8994 38.5996c-36.5 24 -79.3994 36.5 -123 35.7998\nc-50.6992 0.800781 -111.699 -27.1992 -111.699 -76.1992c0 -18.7002 11.1992 -20.7002 28.5996 -15.6006c23.2998 5.2998 41.9004 -0.599609 55.7998 -14c26.4004 -24.2998 23.2002 -67.5996 -0.700195 -91.8994c-29.1992 -29.5 -85.1992 -27.3008 -114.8 8.39941z\nM360 189.4c33.9004 -40.4004 36.7998 -138.2 -20.2998 -189.601c-39.2002 -33.5996 -82.2002 -44.0996 -133.601 -44.0996c-70.2998 -0.299805 -138.199 25.3994 -190.699 72.2002l-15.4004 13.7998l60.7998 71.7998l35.6006 -27.4004l-33.7002 -39.3994\nc41.7002 -30.9004 92.2002 -47.5 144.1 -47.2998c61.9004 0 104.7 23.5 121.4 64.3994c0.899414 4.2002 1.39941 8.40039 1.39941 12.7002c0 18.7002 -11.1992 20.7002 -28.5996 15.5996c-23.2998 -5.2998 -42.2002 0.5 -56.2998 14.4004\nc-12.4004 11.2998 -19.1006 27.5 -18.4004 44.2998c-0.599609 39.2002 32.4004 69.2002 70.5 67.2002c24.2998 0.799805 47.7002 -9.7998 63.2002 -28.5996z\" />\n    <glyph glyph-name=\"bluetooth\" unicode=\"&#xf293;\" \nd=\"M292.6 276.9l-42.8994 -42.9004l-0.299805 86zM249.4 57.0996l0.199219 86l42.9004 -42.8994zM416 188.6c0 -205.6 -71.9004 -252.6 -185.1 -252.6c-113.2 0 -198.9 47 -198.9 252.6c0 205.601 83.4004 259.4 196.6 259.4c113.2 0 187.4 -53.9004 187.4 -259.4z\nM257.5 188.6l79.4004 88.6006l-125.101 134.3v-176.9l-73.7998 73.8008l-27 -26.9004l92.7002 -93l-92.7002 -93l26.9004 -26.9004l73.7998 73.8008l2.2998 -170l127.4 127.5z\" />\n    <glyph glyph-name=\"bluetooth-b\" unicode=\"&#xf294;\" horiz-adv-x=\"320\" \nd=\"M196.48 187.977l97.9111 -103.333l-148.552 -148.644l-2.71484 198.284l-86.1113 -86.1113l-31.4053 31.4053l108.061 108.398l-108.061 108.399l31.4053 31.4053l86.1113 -86.1113v206.33l145.981 -156.69zM237.34 290.973l-50.3145 50.3174l0.337891 -100.295z\nM187.363 134.96l-0.337891 -100.294l50.3145 50.3164z\" />\n    <glyph glyph-name=\"gitlab\" unicode=\"&#xf296;\" horiz-adv-x=\"512\" \nd=\"M105.2 423.1c0 0 56.5 -174.8 56.5996 -174.8h-132l56.5 174.8c3.2002 8.90039 15.7998 8.90039 18.9004 0zM0.900391 160.3l28.7998 88l226.2 -294l-247.9 184c-6.7998 5.10059 -9.7002 14 -7.09961 22zM161.7 248.3h188.6l-94.2998 -294zM511.1 160.3\nc2.5 -8 -0.299805 -16.8994 -7.19922 -22l-247.9 -184l226.3 294zM425.7 423.1l56.5 -174.8h-132l56.5996 174.8c3.2002 8.90039 15.7998 8.90039 18.9004 0z\" />\n    <glyph glyph-name=\"wpbeginner\" unicode=\"&#xf297;\" horiz-adv-x=\"512\" \nd=\"M462.799 125.626c56.2109 -64.3076 4.16211 -157.626 -91.8545 -157.626c-39.6025 0 -78.8242 17.6865 -100.143 50.04c-6.88672 -0.356445 -22.7021 -0.356445 -29.5898 0c-21.3643 -32.4209 -60.624 -50.04 -100.143 -50.04\nc-95.4902 0 -148.349 92.9961 -91.8555 157.626c-79.1387 131.851 31.2646 290.374 206.792 290.374c175.632 0 285.87 -158.626 206.793 -290.374zM123.152 208.598h41.5283v58.0752h-41.5283v-58.0752zM340.332 122.526v23.8389\nc-60.5059 -20.915 -132.355 -9.19824 -187.589 33.9707l0.246094 -24.8965c51.1006 -46.3672 131.746 -57.875 187.343 -32.9131zM189.579 208.598h166.058v58.0752h-166.058v-58.0752z\" />\n    <glyph glyph-name=\"wpforms\" unicode=\"&#xf298;\" \nd=\"M448 372.8v-361.7c0 -24.2998 -19 -43.1992 -43.2002 -43.1992h-361.6c-23.9004 0.0996094 -43.2002 18.6992 -43.2002 43.2998v361.6c0 24.1006 18.7998 43.2002 43.2002 43.2002h361.7c24 0 43.0996 -18.7998 43.0996 -43.2002zM410.7 11.2002v361.6\nc0 3 -2.60059 5.7998 -5.7998 5.7998h-9.30078l-110.3 -74.5996l-61.2998 49.9004l-61.2002 -49.9004l-110.3 74.7002h-9.2998c-3.2002 0 -5.7998 -2.7998 -5.7998 -5.7998v-361.7c0 -3 2.59961 -5.7998 5.7998 -5.7998h361.7\nc3.19922 -0.100586 5.7998 2.69922 5.7998 5.7998zM150.2 262v-37h-73.5v37h73.5zM150.2 187.6v-37.2998h-73.5v37.2998h73.5zM161.3 334.9l54 43.6992h-118.5zM371.3 262v-37h-196v37h196zM371.3 187.6v-37.2998h-196v37.2998h196zM286.7 334.9l64.5 43.6992h-118.4z\nM371.3 113v-37.2998h-99.3994v37.2998h99.3994z\" />\n    <glyph glyph-name=\"envira\" unicode=\"&#xf299;\" \nd=\"M0 416c477.6 0 366.6 -317.3 367.1 -366.3l80.9004 -81.7002h-26l-70.4004 71.2002c-39 -4.2002 -124.399 -34.5 -214.399 37c-90.2002 71.5 -85.2002 157.1 -137.2 339.8zM79.7002 370c-49.7002 23.5 -5.2002 -9.2002 -5.2002 -9.2002\nc45.2002 -31.2002 66 -73.7002 90.2002 -119.899c31.5 -60.2002 79 -139.7 144.2 -167.7c65 -28 34.1992 -12.5 6 8.5c-28.2002 21.2002 -68.2002 87 -91 130.2c-31.7002 60 -61 118.6 -144.2 158.1z\" />\n    <glyph glyph-name=\"glide\" unicode=\"&#xf2a5;\" \nd=\"M252.8 299.4c0 -8.80078 -1.59961 -17.7002 -3.39941 -26.4004c-5.80078 -27.7998 -11.6006 -55.7998 -17.3008 -83.5996c-1.39941 -6.30078 -8.2998 -4.90039 -13.6992 -4.90039c-23.8008 0 -30.5 26 -30.5 45.5c0 29.2998 11.1992 68.0996 38.5 83.0996\nc4.2998 2.5 9.19922 4.2002 14.0996 4.2002c11.4004 0 12.2998 -8.2998 12.2998 -17.8994zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM384 181c0 5.09961 -20.7998 37.7002 -25.5 39.5\nc-2.2002 0.900391 -7.2002 2.2998 -9.59961 2.2998c-23.1006 0 -38.7002 -10.5 -58.2002 -21.5l-0.5 0.5c4.2998 29.4004 14.5996 57.2002 14.5996 87.4004c0 44.5996 -23.7998 62.7002 -67.5 62.7002c-71.7002 0 -108 -70.8008 -108 -123.5c0 -54.7002 32 -85 86.2998 -85\nc7.5 0 6.90039 0.599609 6.90039 -2.30078c-10.5 -80.2998 -56.5 -82.8994 -56.5 -58.8994c0 24.3994 28 36.5 28.2998 38c-0.200195 7.59961 -29.2998 17.2002 -36.7002 17.2002c-21.0996 0 -32.6992 -33 -32.6992 -50.6006c0 -32.2998 20.3994 -54.7002 53.2998 -54.7002\nc48.2002 0 83.3994 49.7002 94.2998 91.7002c9.40039 37.7002 7 39.4004 12.2998 42.1006c20 10.0996 35.7998 16.7998 58.4004 16.7998c11.0996 0 19 -2.2998 36.7002 -5.2002c1.7998 -0.0996094 4.09961 1.7002 4.09961 3.5z\" />\n    <glyph glyph-name=\"glide-g\" unicode=\"&#xf2a6;\" \nd=\"M407.1 236.8c7.5 -2.89941 40.9004 -55.3994 40.9004 -63.3994c0 -2.90039 -3.7998 -5.80078 -6.7002 -5.80078c-28.3994 4.7002 -41.0996 8.40039 -58.8994 8.40039c-36.3008 0 -61.6006 -10.7998 -93.8008 -27c-8.5 -4.2998 -4.59961 -7.09961 -19.6992 -67.5996\nc-17.4004 -67.6006 -74 -145.4 -151.4 -145.4c-52.7002 0 -85.5 36 -85.5 87.9004c0 28.0996 18.5 79.1992 52.4004 79.2998c11.8994 0 58.5996 -15.4004 58.8994 -27.6006c-0.5 -2.39941 -45.5 -21.7998 -45.5 -61c0 -38.5 73.9004 -34.2998 90.7998 94.6006\nc0 4.7998 1 3.7998 -11 3.7998c-87.2998 0 -138.6 48.7002 -138.6 136.6c0 84.7002 58.2998 198.4 173.4 198.4c70.1992 0 108.399 -29.0996 108.399 -100.6c0 -48.5 -16.5 -93.1006 -23.5 -140.4l0.900391 -0.900391c31.2998 17.7002 56.3994 34.5 93.5 34.5\nc3.7998 0 11.8994 -2.39941 15.3994 -3.7998zM231.8 321.2c2.90039 13.8994 5.5 28.0996 5.60059 42.3994c0 15.4004 -1.40039 28.7002 -20 28.7002c-7.80078 0 -15.6006 -2.59961 -22.6006 -6.7002c-43.7998 -24.0996 -61.7998 -86.3994 -61.7998 -133.399\nc0 -31.2998 10.7002 -73.1006 49 -73.1006c8.7002 0 19.7002 -2.39941 22 7.80078c9.2002 44.6992 18.5 89.5996 27.7998 134.3z\" />\n    <glyph glyph-name=\"viadeo\" unicode=\"&#xf2a9;\" \nd=\"M276.2 297.5v-0.700195c-17.9004 52.6006 -42.6006 103.4 -70.7998 151.2c43.2998 -29.2002 67 -100 70.7998 -150.5zM308.9 175.8c15.0996 3.10059 29.5 9 42.1992 17c24.5 -58.5996 20.2002 -139.7 -36.3994 -201c-67.7998 -73.8994 -191.9 -74.5996 -259.8 0\nc-108.801 117.8 -31.6006 313.7 129.899 313.7c21.2998 0 42.6006 -3.5 62.5 -10.7002c-6.89941 -13.3994 -11.7002 -28.2002 -13.3994 -43.2998c-15.4004 6.5 -32.3008 9.59961 -49.1006 9.59961c-78 0 -135.399 -66.6992 -135.399 -142.3\nc0 -68.7998 45.5996 -126 111.3 -137.399c98.5 38.3994 116.6 188.199 116.6 280c0 11.6992 0 23.6992 -1 35.3994c12.4004 -36.0996 18.9004 -73.8994 18.9004 -112c0 -86.5 -35.1006 -158.399 -109.3 -205.1l-3.80078 -0.299805\nc80 -1.60059 137.801 61.6992 137.801 139.399c0 19.5 -3.40039 38.7998 -11 57zM418.1 436.3c52 -74 20.9004 -208.6 -58.0996 -208.6c-21.2998 0 -40.2002 11.3994 -55 25.7998c35.0996 19.2998 79.4004 49.2002 99.7002 84.9004\nc2.39941 4.7998 6.5 13.6992 7.2002 19.1992c-19.9004 -44.6992 -70.8008 -79.6992 -118.2 -90.6992c-7.5 11.6992 -12 24.6992 -12 38.7998c0 16.5 8.2002 38.5 20.5996 50.5c34.5 32.8994 84.7998 13.5996 115.8 80.0996z\" />\n    <glyph glyph-name=\"viadeo-square\" unicode=\"&#xf2aa;\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM280.7 66.7998c35.3994 38.2998 38.0996 89 22.7998 125.601c-7.90039 -4.90039 -16.9004 -8.60059 -26.4004 -10.5\nc4.80078 -11.4004 6.90039 -23.5 6.90039 -35.7002c0 -48.6006 -36.2002 -88.2002 -86.2002 -87.2002l2.40039 0.200195c46.3994 29.2002 68.2998 74.0996 68.2998 128.2c0 23.7998 -4.09961 47.5 -11.7998 70v0.399414c-2.2998 31.6006 -17.1006 75.7998 -44.2002 94.1006\nc17.5996 -29.9004 33 -61.6006 44.2002 -94.5c0.599609 -7.30078 0.599609 -14.8008 0.599609 -22.1006c0 -57.3994 -11.3994 -151 -72.8994 -175c-41 7.2002 -69.5 42.9004 -69.5 85.9004c0 47.2002 35.7998 88.8994 84.5996 88.8994c10.5 0 21 -1.89941 30.7002 -6\nc1.09961 9.5 4.09961 18.7002 8.39941 27.1006c-12.5 4.59961 -25.7998 6.7002 -39.0996 6.7002c-101 0 -149.2 -122.5 -81.2002 -196.101c42.4004 -46.5996 120 -46.2002 162.4 0zM309 214.3c49.4004 0 68.7998 84.1006 36.2998 130.3\nc-19.3994 -41.5 -50.7998 -29.5 -72.3994 -50c-7.7002 -7.5 -12.9004 -21.2998 -12.9004 -31.5996c0 -8.7998 2.7998 -17 7.5 -24.2998c29.7002 6.89941 61.4004 28.7998 73.9004 56.7002c-0.400391 -3.40039 -3 -9 -4.5 -12c-12.7002 -22.3008 -40.4004 -41 -62.3008 -53\nc9.30078 -9 21.1006 -16.1006 34.4004 -16.1006z\" />\n    <glyph glyph-name=\"snapchat\" unicode=\"&#xf2ab;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM417.5 101.1c2.2002 5.30078 -0.900391 9.80078 -4.90039 10.8008c-46.2998 7.59961 -67.0996 55.0996 -68 57.0996\nc-0.0996094 0.0996094 -0.0996094 0.200195 -0.199219 0.299805c-2.40039 5 -3 9.2002 -1.60059 12.5c2.60059 6.2998 12.5 9.40039 19 11.5c1.7998 0.600586 3.5 1.10059 4.90039 1.7002c11.5 4.5 17.2998 10.0996 17.2002 16.5996\nc-0.100586 5.10059 -4.10059 9.60059 -10.4004 11.9004c-4 1.59961 -9.59961 1.90039 -13.5996 0c-5.5 -2.59961 -10.4004 -4 -14.7002 -4.2002c-2.7998 0.100586 -4.60059 0.799805 -5.7002 1.40039c1.40039 24 4.7002 58 -3.7998 77.0996\nc-16.2998 36.5 -49.6006 54.2998 -84.2998 54.2998c-0.600586 0 -6.10059 -0.0996094 -6.7002 -0.0996094c-14 0 -61.6006 -4 -84.1006 -54.2998c-8.5 -19.1006 -5.19922 -53.2002 -3.7998 -77.1006c-1.09961 -0.599609 -3.2998 -1.39941 -6.59961 -1.39941\nc-4.5 0 -9.7998 1.39941 -15.7002 4.2002c-7.5 3.5 -20.2998 -1.80078 -21.9004 -10.3008c-1 -4.89941 1.2002 -12.0996 17 -18.2998c6.10059 -2.5 20.6006 -5.2998 24 -13.2002c1.40039 -3.2998 0.900391 -7.5 -1.59961 -12.5\nc-0.0996094 -0.0996094 -0.200195 -0.199219 -0.200195 -0.299805c-0.899414 -2 -21.7002 -49.5 -68 -57.0996c-3.59961 -0.600586 -6.09961 -3.7998 -5.89941 -7.40039c0.699219 -13.8994 31.6992 -19.2998 45.5 -21.3994c1.39941 -1.90039 2.5 -9.90039 4.2998 -16\nc0.799805 -2.7002 2.89941 -6 8.2998 -6s13.2998 3.09961 25.7998 3.09961c17.6006 0 23.6006 -4 37.4004 -13.7002c9.89941 -7 27.5 -19.7998 48.5 -18.2002c20.7998 -0.899414 34.7002 7.90039 49.2002 18.2002c13.6992 9.7002 19.7998 13.7002 37.3994 13.7002\nc13 0 19.6006 -2.90039 25.7998 -2.90039h0.200195c4.40039 0 7 2.2002 8.10059 5.90039c1.7998 6.09961 2.89941 14 4.2998 15.9004c26.7002 4.19922 41.2998 10.0996 44.7998 18.1992z\" />\n    <glyph glyph-name=\"snapchat-ghost\" unicode=\"&#xf2ac;\" horiz-adv-x=\"512\" \nd=\"M510.846 55.3271c-5.21094 -12.1572 -27.2383 -21.0889 -67.3594 -27.3184c-2.06445 -2.78613 -3.77539 -14.6855 -6.50781 -23.9561c-1.625 -5.56543 -5.62207 -8.86914 -12.1279 -8.86914l-0.296875 0.00585938c-9.39453 0 -19.2031 4.32227 -38.8516 4.32227\nc-26.5215 0 -35.6621 -6.04297 -56.2539 -20.5879c-21.832 -15.4375 -42.7715 -28.7637 -74.0273 -27.3984c-31.6455 -2.33398 -58.0244 16.9072 -72.8711 27.4033c-20.7139 14.6436 -29.8281 20.582 -56.2412 20.582c-18.8633 0 -30.7354 -4.71973 -38.8516 -4.71973\nc-8.07324 0 -11.2129 4.92188 -12.4219 9.04004c-2.70312 9.18848 -4.4043 21.2627 -6.52344 24.1299c-20.6787 3.20898 -67.3096 11.3438 -68.498 32.1504c-0.00878906 0.161133 -0.015625 0.422852 -0.015625 0.583984c0 4.97559 3.98438 9.67285 8.89258 10.4844\nc69.583 11.4551 100.925 82.9014 102.228 85.9346c0.0742188 0.175781 0.155273 0.34375 0.237305 0.514648c3.71289 7.53711 4.54395 13.8486 2.46289 18.7529c-5.05078 11.8965 -26.8721 16.1641 -36.0537 19.7959c-23.7148 9.36621 -27.0146 20.1279 -25.6113 27.5039\nc2.43652 12.8359 21.7246 20.7354 33.002 15.4531c8.91895 -4.18066 16.8428 -6.29688 23.5469 -6.29688c5.02148 0 8.21191 1.2041 9.95996 2.1709c-2.04297 35.9365 -7.10156 87.29 5.68652 115.969c33.7734 75.7188 105.356 81.6025 126.478 81.6025\nc0.943359 0 9.14062 0.0888672 10.1094 0.0888672c52.1484 0 102.255 -26.7803 126.724 -81.6426c12.7764 -28.6504 7.74902 -79.792 5.69434 -116.01c1.58203 -0.87207 4.35742 -1.94141 8.59961 -2.13867c6.39648 0.286133 13.8145 2.38867 22.0693 6.25684\nc6.08496 2.84668 14.4053 2.46094 20.4795 -0.0576172l0.0292969 -0.00976562c9.47559 -3.38574 15.4385 -10.2158 15.5889 -17.8701c0.183594 -9.74707 -8.52246 -18.165 -25.8779 -25.0186c-2.11816 -0.834961 -4.69434 -1.6543 -7.43457 -2.52441\nc-9.79688 -3.10645 -24.5996 -7.80566 -28.6152 -17.2715c-2.0791 -4.9043 -1.25684 -11.2109 2.45996 -18.748c0.0869141 -0.167969 0.166016 -0.341797 0.238281 -0.514648c1.30176 -3.03027 32.6152 -74.46 102.23 -85.9346\nc6.42676 -1.05762 11.1631 -7.87695 7.72461 -15.8584z\" />\n    <glyph glyph-name=\"snapchat-square\" unicode=\"&#xf2ad;\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM393.5 101.1c2.2002 5.30078 -0.900391 9.80078 -4.90039 10.8008c-46.2998 7.59961 -67.0996 55.0996 -68 57.0996\nc-0.0996094 0.0996094 -0.0996094 0.200195 -0.199219 0.299805c-2.40039 5 -3 9.2002 -1.60059 12.5c2.60059 6.2998 12.5 9.40039 19 11.5c1.7998 0.600586 3.5 1.10059 4.90039 1.7002c11.5 4.5 17.2998 10.0996 17.2002 16.5996\nc-0.100586 5.10059 -4.10059 9.60059 -10.4004 11.9004c-4 1.59961 -9.59961 1.90039 -13.5996 0c-5.5 -2.59961 -10.4004 -4 -14.7002 -4.2002c-2.7998 0.100586 -4.60059 0.799805 -5.7002 1.40039c1.40039 24 4.7002 58 -3.7998 77.0996\nc-16.2998 36.5 -49.6006 54.2998 -84.2998 54.2998c-0.600586 0 -6.10059 -0.0996094 -6.7002 -0.0996094c-14 0 -61.6006 -4 -84.1006 -54.2998c-8.5 -19.1006 -5.19922 -53.2002 -3.7998 -77.1006c-1.09961 -0.599609 -3.2998 -1.39941 -6.59961 -1.39941\nc-4.5 0 -9.7998 1.39941 -15.7002 4.2002c-7.5 3.5 -20.2998 -1.80078 -21.9004 -10.3008c-1 -4.89941 1.2002 -12.0996 17 -18.2998c6.10059 -2.5 20.6006 -5.2998 24 -13.2002c1.40039 -3.2998 0.900391 -7.5 -1.59961 -12.5\nc-0.0996094 -0.0996094 -0.200195 -0.199219 -0.200195 -0.299805c-0.899414 -2 -21.7002 -49.5 -68 -57.0996c-3.59961 -0.600586 -6.09961 -3.7998 -5.89941 -7.40039c0.699219 -13.8994 31.6992 -19.2998 45.5 -21.3994c1.39941 -1.90039 2.5 -9.90039 4.2998 -16\nc0.799805 -2.7002 2.89941 -6 8.2998 -6s13.2998 3.09961 25.7998 3.09961c17.6006 0 23.6006 -4 37.4004 -13.7002c9.89941 -7 27.5 -19.7998 48.5 -18.2002c20.7998 -0.899414 34.7002 7.90039 49.2002 18.2002c13.6992 9.7002 19.7998 13.7002 37.3994 13.7002\nc13 0 19.6006 -2.90039 25.7998 -2.90039h0.200195c4.40039 0 7 2.2002 8.10059 5.90039c1.7998 6.09961 2.89941 14 4.2998 15.9004c26.7002 4.19922 41.2998 10.0996 44.7998 18.1992z\" />\n    <glyph glyph-name=\"pied-piper\" unicode=\"&#xf2ae;\" \nd=\"M32 29l-32 -60.2002l0.799805 328c0 65.9004 53.2002 119.2 119.2 119.2h327.2c-93 -28.9004 -189.9 -94.2002 -253.9 -168.6c-70.5996 -81.4004 -110.7 -137.4 -161.3 -218.4zM448 416c0 0 0 -328.8 0.0996094 -328.8c0 -65.9004 -53.2998 -119.2 -119.3 -119.2\nh-328.399c18.5 25.5 61.6992 54 84.8994 66c35.5 18.0996 76.4004 28.5 105.3 56.2998c42.1006 40.5 47.8008 105 71 158.601c43.6006 100.3 186.4 167.1 186.4 167.1z\" />\n    <glyph glyph-name=\"first-order\" unicode=\"&#xf2b0;\" \nd=\"M12.9004 218.8c0.0996094 0.100586 0.199219 0.299805 0.299805 0.400391c0 -0.100586 0 -0.299805 -0.100586 -0.400391h-0.199219zM224 351.4c7.40039 0 14.5996 -0.5 21.7002 -1.7002l-4 -67.7002l22.2998 64.2998c14.2998 -3.7998 27.7002 -9.5 40 -16.8994\nl-29.4004 -61.1006l45.1006 50.9004c11.5 -8.90039 21.7002 -19.2002 30.5996 -30.9004l-50.5996 -45.3994l60.8994 29.6992c7.5 -12.2998 12.9004 -26 16.6006 -40.2998l-64 -22.2998l67.7002 4c1.09961 -7.09961 1.39941 -14.5996 1.39941 -22\ns-0.299805 -14.5996 -1.39941 -21.7002l-67.4004 4l64 -22.2998c-3.7002 -14.5996 -9.5 -28 -16.5996 -40.2998l-61.1006 29.3994l50.6006 -45.0996c-8.60059 -11.7998 -18.9004 -22 -30.6006 -30.9004l-44.8994 50.9004l29.3994 -61.2998\nc-12.2998 -7.5 -25.7002 -12.9004 -40 -16.9004l-22.5996 65.1006l4 -68.6006c-7.10059 -1.09961 -14.2998 -1.7002 -21.7002 -1.7002c-7.09961 0 -14.5996 0.600586 -21.7002 1.7002l4 68l-22.2998 -64.5996c-14.2998 3.7998 -27.7002 9.5 -40 16.8994l29.5 61.4004\nl-44.9004 -50.9004c-11.7998 8.60059 -22 19.2002 -30.8994 30.9004l50.8994 45.0996l-61.0996 -29.6992c-7.2002 12.5996 -12.9004 26 -16.5996 40.2998l64 22.5996l-67.7002 -4c-0.799805 7.10059 -1.40039 14.2998 -1.40039 21.7002s0.5 14.9004 1.40039 22l68 -4\nl-64.2998 22.5996c3.69922 14.3008 9.5 27.7002 16.5996 40l61.0996 -29.6992l-50.5996 45.3994c8.90039 11.7998 19.2002 22 30.5996 30.9004l45.1006 -50.9004l-29.4004 61.4004c12.2998 7.2002 25.7002 12.8994 40 16.5996l22 -64l-3.7002 67.4004\nc6.80078 1.09961 14.3008 1.7002 21.4004 1.7002zM443.4 320v-256l-219.4 -128l-219.4 128v256l219.4 128zM426.3 309.7l-202.3 117.399l-202.3 -117.399v-235.101l202.3 -117.699l202.3 117.699v235.101zM224 410.9l187.7 -109.4v-218.9l-187.7 -109.5l-187.7 109.5\nv218.801zM224 360c-92.2998 0 -166.9 -75.0996 -166.9 -168c0 -92.5996 74.6006 -167.7 166.9 -167.7c92 0 166.9 75.1006 166.9 167.7c0 92.9004 -74.9004 168 -166.9 168z\" />\n    <glyph glyph-name=\"yoast\" unicode=\"&#xf2b1;\" \nd=\"M91.2998 372h186l-7 -18.9004h-179c-39.7002 0 -71.8994 -31.5996 -71.8994 -70.2998v-205.399c0 -35.4004 24.8994 -70.3008 84 -70.3008v-19.0996h-12.1006c-50.0996 0 -91.2998 40.2002 -91.2998 89.5v205.3c0 49.2998 40.7002 89.2002 91.2998 89.2002zM320.4 428\nh66.5c-143.801 -378.1 -145.7 -398.9 -184.7 -439.3c-20.7998 -21.6006 -49.2998 -31.7002 -78.2998 -32.7002v51.0996c49.1992 7.7002 64.5996 49.9004 64.5996 75.3008c0 20.0996 0.599609 12.5996 -82.0996 223.199h61.3994l50.4004 -156.6zM448 286.5v-298.5h-214\nc6.59961 9.59961 10.7002 16.2998 12.0996 19.4004h182.5v279.1c0 32.5 -17.0996 51.9004 -48.1992 62.9004l6.69922 17.5996c41.7002 -13.5996 60.9004 -43.0996 60.9004 -80.5z\" />\n    <glyph glyph-name=\"themeisle\" unicode=\"&#xf2b2;\" horiz-adv-x=\"512\" \nd=\"M208 359.714c0 10 6.28613 21.7139 17.7148 21.7139c11.1426 0 17.7139 -11.7139 17.7139 -21.7139c0 -10.2852 -6.57129 -21.7139 -17.7139 -21.7139c-11.4287 0 -17.7148 11.4287 -17.7148 21.7139zM512 199.714c0 -36.001 -11.4287 -102.286 -36.2861 -129.714\nc-22.8574 -24.8584 -87.4277 -61.1426 -120.856 -70.5723l-1.14355 -0.286133v-32.5703c0 -16.2861 -12.5723 -30.5713 -29.1426 -30.5713c-10 0 -19.4297 5.71387 -24.5723 14.2861c-5.42676 -8.57227 -14.8564 -14.2861 -24.8564 -14.2861\ns-19.4287 5.71387 -24.8574 14.2861c-5.14258 -8.57227 -14.5713 -14.2861 -24.5703 -14.2861c-10.2861 0 -19.4287 5.71387 -24.8574 14.2861c-5.14355 -8.57227 -14.5713 -14.2861 -24.5713 -14.2861c-18.8574 0 -29.4287 15.7139 -29.4287 32.8574\nc-16.2861 -12.2852 -35.7158 -19.4287 -56.5713 -19.4287c-22 0 -43.4287 8.28516 -60.2861 22.8574c10.2852 0.286133 20.5713 2.28613 30.2852 5.71387c-20.8574 5.71387 -39.4277 18.8574 -52 36.2861c21.3701 -4.64551 46.209 -1.67285 67.1426 11.1426\nc-22 22 -56.5703 58.8574 -68.5713 87.4287c-5.71387 13.4287 -6.85645 31.4287 -6.85645 45.7139c0 49.7139 20.2861 160 86.2861 160c10.5713 0 18.8564 -4.8584 23.1426 -14.8574c3.0498 4.46289 8.42578 11.374 12 15.4277c2 2.57227 5.71387 5.42969 7.14355 8.28613\nc7.99902 12.5713 11.7139 21.1426 21.7139 34c32.2852 41.1445 81.7139 69.4297 134.856 69.4297c6 0 12 -0.285156 17.7148 -1.14355c10.8564 11.7148 26 18.2861 41.7148 18.2861c14.5703 0 29.7139 -6 40 -16.2861c0.856445 -0.857422 1.42773 -2.28613 1.42773 -3.42773\nc0 -3.71387 -10.2852 -13.4287 -12.8574 -16.2861c4.28613 -1.42871 15.7148 -6.8584 15.7148 -12c0 -2.85742 -2.85742 -5.14258 -4.57129 -7.14258c31.4287 -27.7148 49.4287 -67.1436 56.2861 -108c4.28613 5.14258 10.2852 8.57129 17.1426 8.57129\nc10.5713 0 20.8574 -7.14355 28.5713 -14.001c20.8564 -18.5703 25.7139 -53.1416 25.7139 -79.7139zM188 358.572c0 -18.2861 12.5713 -37.1436 32.2861 -37.1436c19.7139 0 32.2852 18.8574 32.2852 37.1436c0 18 -12.5713 36.8564 -32.2852 36.8564\nc-19.7148 0 -32.2861 -18.8574 -32.2861 -36.8564zM237.714 254c0 19.7139 3.71387 39.1426 8.57129 58.2861c-52.0391 -79.5342 -13.5312 -184.571 68.8574 -184.571c21.4287 0 42.5713 7.71387 60 20c2 7.42871 3.71484 14.8574 3.71484 22.5723\nc0 14.2861 -6.28613 21.4277 -20.5723 21.4277c-4.57129 0 -9.14355 -0.856445 -13.4287 -1.71387c-63.3438 -12.668 -107.143 -3.66895 -107.143 63.999zM196.572 -0.858398c0 11.1436 -8.8584 20.8574 -20.2861 20.8574c-11.4287 0 -20 -9.71484 -20 -20.8574v-32.5703\nc0 -11.1436 8.57129 -21.1426 20 -21.1426c11.4277 0 20.2861 9.71484 20.2861 21.1426v32.5703zM245.715 -0.858398c0 11.1436 -8.57227 20.8574 -20 20.8574c-11.4287 0 -20.2861 -9.71484 -20.2861 -20.8574v-32.5703c0 -11.1436 8.85742 -21.1426 20.2861 -21.1426\nc11.4277 0 20 10 20 21.1426v32.5703zM295.428 -0.858398c0 11.1436 -8.85645 20.8574 -20.2852 20.8574s-20.2852 -9.71484 -20.2852 -20.8574v-32.5703c0 -11.1436 8.85645 -21.1426 20.2852 -21.1426s20.2852 9.71484 20.2852 21.1426v32.5703zM345.143 -0.858398\nc0 11.1436 -8.85645 20.8574 -20.2852 20.8574s-20.2861 -9.71484 -20.2861 -20.8574v-32.5703c0 -11.1436 8.85742 -21.1426 20.2861 -21.1426s20.2852 10 20.2852 21.1426v32.5703zM421.714 162c-30.8564 -59.1416 -90.2852 -102.572 -158.571 -102.572\nc-96.5703 0 -160.57 84.5723 -160.57 176.572c0 16.8574 2 33.4287 6 49.7139c-20 -33.7148 -29.7139 -72.5723 -29.7139 -111.429c0 -60.2861 24.8564 -121.715 71.4287 -160.857c5.14258 9.71387 14.8564 16.2861 26 16.2861c10 0 19.4277 -5.71387 24.5713 -14.2861\nc5.42871 8.57129 14.5703 14.2861 24.8574 14.2861c10 0 19.4277 -5.71387 24.5713 -14.2861c5.42871 8.57129 14.8564 14.2861 24.8574 14.2861c10 0 19.4287 -5.71387 24.8574 -14.2861c5.14258 8.57129 14.5713 14.2861 24.5723 14.2861\nc10.8564 0 20.8564 -6.57227 25.7139 -16c43.4268 36.2861 68.5693 92 71.4258 148.286zM432.286 261.714c0 53.7139 -34.5713 105.714 -92.5723 105.714c-30.2852 0 -58.5713 -15.1426 -78.8564 -36.8564c-19.9951 -66.3828 -27.4473 -136.571 41.4287 -136.571\nc28.8047 0 97.3564 28.5381 84.2861 -36.8574c28.8564 26 45.7139 65.7148 45.7139 104.571z\" />\n    <glyph glyph-name=\"google-plus\" unicode=\"&#xf2b3;\" horiz-adv-x=\"496\" \nd=\"M248 440c136.9 0 248 -111.1 248 -248s-111.1 -248 -248 -248s-248 111.1 -248 248s111.1 248 248 248zM177.3 68c71.2998 0 118.8 50.4004 118.8 121.2c0 7.09961 -0.599609 13.8994 -1.89941 20.7002h-116.9v-42.6006h70.1006\nc-5.2002 -34.2002 -37.5 -53.2998 -70.1006 -53.2998c-43 0 -77.2002 35.5 -77.2002 78.0996c0 42.6006 34.3008 78.1006 77.2002 78.1006c18.1006 0 36.2002 -6.2002 49.4004 -19.1006l33.5996 32.6006c-22.8994 21.2998 -51.7002 32.2998 -83 32.2998\nc-68.7998 0 -124 -55.5 -124 -124s55.2002 -124 124 -124zM407.5 174.2h35.2002v35.5h-35.2002v35.5h-35.5v-35.5h-35.5v-35.5h35.5v-35.5h35.5v35.5z\" />\n    <glyph glyph-name=\"font-awesome\" unicode=\"&#xf2b4;\" \nd=\"M397.8 416c27.5 0 50.2002 -22.7002 50.2002 -50.2002v-347.6c0 -27.5 -22.7002 -50.2002 -50.2002 -50.2002h-347.6c-27.5 0 -50.2002 22.7002 -50.2002 50.2002v347.6c0 27.5 22.7002 50.2002 50.2002 50.2002h347.6zM352.4 131.7h0.0996094v140.3\nc0 4.2002 -4.2002 7.7998 -9 7.7998c-6 0 -31.0996 -16.0996 -53.7998 -16.0996c-4.7002 0 -8.90039 0.599609 -13.1006 2.39941c-20.2998 7.7002 -38.1992 13.7002 -60.8994 13.7002c-20.9004 0 -43 -6.5 -61.5 -14.2998\nc-1.7998 -1.2002 -3.60059 -1.7998 -5.40039 -2.40039v18.5c8.2998 6 13.1006 15.5 13.1006 26.3008c0 18.5996 -15 33.5 -33.5 33.5c-18.6006 0 -33.5 -15 -33.5 -33.5c0 -10.8008 5.2998 -20.3008 13.0996 -26.3008v-218.6c0 -11.2998 9 -20.2998 20.2998 -20.2998\nc8.90039 0 16.7002 5.89941 19.1006 14.2998v1.2002c0.599609 1.2002 0.599609 3 0.599609 4.7998v45.4004c1.2002 0.599609 2.40039 0.599609 3.59961 1.19922c19.7002 8.90039 44.2002 17.3008 67.5 17.3008c32.3008 0 44.8008 -16.7002 71.7002 -16.7002\nc19.2002 0 37.1006 6.5 53.7998 13.7002c4.2002 1.7998 7.80078 3.59961 7.80078 7.7998z\" />\n    <glyph glyph-name=\"linode\" unicode=\"&#xf2b8;\" \nd=\"M437.4 221.7c0.599609 -2 -8.80078 -66.2998 -9.7002 -72.7998c0 -0.900391 -0.5 -1.7002 -1.10059 -2l-54.5996 -43.7002c-1.09961 -0.900391 -2.59961 -0.900391 -3.7002 0l-20.2998 14l-2.2998 -33.4004c0 -0.899414 -0.200195 -1.7002 -1.10059 -2.2998\nl-66.8994 -53.4004c-1.10059 -0.899414 -2.90039 -0.899414 -4 0l-28 23.7002l2 -46c0 -0.899414 -0.200195 -1.7002 -1.10059 -2.2998l-83.6992 -66.9004c-0.600586 -0.299805 -1.10059 -0.599609 -1.7002 -0.599609c-0.900391 0.299805 -1.7002 0.299805 -2.2998 0.900391\nl-65.1006 69.0996c-1.5 1.40039 -15.5 72 -16.8994 79.0996c-0.300781 1.10059 0.5 2.5 1.39941 3.10059l17.4004 10.5996c-3.40039 3.2002 -26.5 23.4004 -27.1006 26.2998l-20.5996 100.301c-0.299805 1.09961 0.299805 2.5 1.7002 3.39941l26.8994 12.9004\nc-4.59961 3.5 -37.6992 27.5 -38.5996 30.8994l-27.4004 133.101c-0.299805 1.7002 0.600586 3.09961 2 3.7002l123.7 38.5996c0.600586 0 1.40039 0 2.2998 -0.299805l90.6006 -43.7002c0.799805 -0.599609 1.7002 -1.7002 1.7002 -2.59961l5.69922 -132.301\nc0 -1.19922 -0.599609 -2.2998 -1.69922 -2.89941l-33.7002 -17.4004l36 -24.2998c0.799805 -0.299805 1.39941 -1.40039 1.39941 -2.2998l1.40039 -35.1006l34.5996 21.2002c0.800781 0.600586 2.2002 0.600586 3.10059 0l24 -16l0.899414 31.4004\nc0 0.899414 0.5 2 1.40039 2.59961l58.9004 36c1.09961 0.600586 2.19922 0.600586 3.09961 0l70 -38.5996c0.5 -0.600586 1.09961 -1.10059 1.40039 -2zM232.6 216.9l-100.6 -57.2002l14 -96.6006l90.5996 61.2002zM224.9 396.9l-120.9 -46.6006l19.7002 -134.8\nl106.6 55.4004zM44 274.9l73.0996 -57.2002l-19.3994 132.899l-79.7002 49.4004zM74.5996 127.1l64.8008 -60.7998l-13.7002 93.4004l-70 58.2998zM98.9004 9.40039l57.6992 -61.2002l-9.69922 67.3994l-61.7002 60.9004zM163.4 -55.0996l78.1992 62.2998l-3.09961 70\nl-85.7002 -61.4004zM245.4 60l27.0996 -22.9004l-0.599609 68.3008l-29.4004 22.5996c0 -2.2998 1.2002 -6.2998 -1.09961 -8l-22.3008 -14.9004l24.3008 -20c2.89941 -2.19922 2 -21.6992 2 -25.0996zM339.7 85.4004l4.2002 66.8994l-65.7002 -46.8994l0.599609 -68.6006z\nM367.4 111.1l5.7998 66.6006l-64.6006 40.5996l-0.599609 -30l41.2002 -27.2002c0.799805 -0.599609 1.39941 -1.69922 1.09961 -2.59961l-2 -34zM422 150.9l8.5 63.3994l-51.0996 -36.5996l-5.7002 -65.1006z\" />\n    <glyph glyph-name=\"quora\" unicode=\"&#xf2c4;\" \nd=\"M440.5 61.2998c1.7998 -18 -7.2002 -93.2998 -89 -93.2998c-49.5 0 -75.5 28.7002 -95.2002 62.2998c-117.7 -32.5996 -249 54.9004 -249 189c0 117 98 196.7 197.7 196.7c101.8 0 198.5 -79.2002 198.4 -196.7c0 -65.5 -30.5 -118.8 -74.7002 -153\nc14.2002 -21.5996 29 -35.7998 49.5 -35.7998c22.5 0 31.5 17.2998 33 30.7998h29.2998zM297 118.8c11.2998 24.9004 16.7998 58.7002 16.7002 100.5c0 104.2 -32.5 157.7 -108.7 157.7c-75 0 -107.5 -53.5 -107.5 -157.9c0 -103.699 32.5 -156.699 107.5 -156.699\nc12 0 22.7002 1.19922 32.7002 4.19922c-15.5 30.5 -33.7002 61.3008 -69.2002 61.3008c-6.7998 0 -13.5996 -1 -19.7998 -4l-12.2002 24.2998c14.7002 12.7998 38.5 22.7998 69 22.7998c47.7998 0 72 -23 91.5 -52.2002z\" />\n    <glyph glyph-name=\"free-code-camp\" unicode=\"&#xf2c5;\" horiz-adv-x=\"576\" \nd=\"M69.2998 303.5c-41 -68.5 -36.3994 -163 1 -227c22.2002 -38.2002 49.7002 -52.4004 49.7002 -66.5c0 -6.7998 -6 -13 -12.7998 -13c-19.5 0 -99.2002 75.5 -99.2002 197.8c0 111.5 78 186 97.0996 186c6 0 14.9004 -4.7998 14.9004 -11.0996\nc0 -12.7002 -28.2998 -28.6006 -50.7002 -66.2002zM265.1 89.7002c-37.1992 13.5996 -65.5 45.8994 -65.2998 86.2002c0 48 57.7002 90.0996 57.7002 136.199c0 16.8008 -10.4004 32.6006 -19.5996 38.2002c-1.90039 1 -4.60059 2.7002 -4.60059 5.10059\nc0 9.59961 26.1006 2.7998 36.5 -2.2002c33.6006 -15.9004 40.6006 -40.2998 46.4004 -74.1006c1.39941 -7.89941 4.2998 -33.2998 15.8994 -33.2998c7.5 0 12.3008 5.10059 12.3008 12.2998c0 12.6006 -15.4004 31.2002 -7.2002 31.2002\nc6.09961 0 18.5996 -12.7998 22.5 -16.8994c23.3994 -24.9004 32.0996 -49 32.0996 -82.6006c0 -42.2002 -23.3994 -74.7002 -53.0996 -89.7998c-9.2002 -5.7998 -12.1006 0.900391 -12.1006 1.90039c0 7 29.5 23.5996 29.5 56c0 10.5996 -2.69922 22.5 -8.5 31.3994\nc-1.69922 2.40039 -7.69922 10.1006 -11.0996 10.1006c-0.700195 0 -0.700195 -0.5 -0.700195 -1.2002c0 -5.7998 3.60059 -11.4004 3.60059 -17.4004c0 -13 -31.9004 -20.2002 -31.9004 6.7998c0 7.10059 0.700195 14.3008 0.700195 21.3008\nc0 5.09961 -0.200195 6.5 -2.40039 11.0996c-3.39941 6.5 -14.5 19.7998 -22.5 19.7998c-2.2002 0 -2.89941 0 -2.89941 -2.2002c0 -3.39941 7.69922 -7 7.69922 -19.2998c0 -32.0996 -44.1992 -37.8994 -44.1992 -70c0 -14.3994 1.89941 -26.5 10.0996 -38.5996\nc5.09961 -7.5 10.5996 -11.7998 19.0996 -15.2002c2.10059 -0.700195 4.30078 -0.900391 4.30078 -3.59961c0 -6.40039 -7.80078 -3 -12.3008 -1.2002zM470.4 381c21.3994 0 97.5996 -78.9004 97.5 -198.2c0 -104.899 -73.4004 -185.7 -98.8008 -185.7\nc-5 0 -13.1992 6.30078 -13.1992 11.4004c0 8.2002 28.2998 34.5996 35.2998 43.5c61 76.7002 64 205.9 -17.6006 291c-5.5 5.7998 -17.5996 16.7002 -17.5996 25.4004c0 6.09961 8.40039 12.5996 14.4004 12.5996zM428.1 57.9004c8.40039 0 11.9004 -7 11.9004 -15.5\nc0 -8.90039 -2.5 -16.4004 -11.9004 -16.4004h-261.1c-8.5 0 -15.5 7 -15.5 15.5c0 8.90039 6.09961 16.4004 15.5 16.4004h261.1z\" />\n    <glyph glyph-name=\"telegram\" unicode=\"&#xf2c6;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM369.8 270.1c3.60059 16.8008 -6.09961 23.5 -17.2002 19.5l-239.1 -92.1992c-16.4004 -6.40039 -16.0996 -15.5 -2.7998 -19.7002l61.2002 -19.1006l142 89.4004\nc6.59961 4.40039 12.6992 1.90039 7.69922 -2.5l-114.899 -103.8l-4.40039 -63.1006c6.40039 0 9.2002 2.80078 12.5 6.10059l29.9004 28.7998l62 -45.7002c11.2998 -6.39941 19.3994 -3.09961 22.3994 10.5z\" />\n    <glyph glyph-name=\"bandcamp\" unicode=\"&#xf2d5;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM296.2 113.9l84.7002 156.1h-181l-84.7002 -156.1h181z\" />\n    <glyph glyph-name=\"grav\" unicode=\"&#xf2d6;\" horiz-adv-x=\"512\" \nd=\"M301.1 236c4.40039 -4.40039 4.40039 -11.9004 0 -16.2998l-9.69922 -9.7002c-4.40039 -4.7002 -11.9004 -4.7002 -16.6006 0l-10.5 10.5c-4.39941 4.7002 -4.39941 11.9004 0 16.5996l9.7002 9.7002c4.40039 4.40039 11.9004 4.40039 16.5996 0zM270.9 255.7\nc-2.7002 -2.7998 -7.40039 -2.7998 -10.5 0c-2.80078 3 -2.80078 7.7002 0 10.5c3 3 7.69922 3 10.5 0c3 -2.7002 3 -7.5 0 -10.5zM244.9 250.4c2.7998 3 7.5 3 10.5 0c2.7998 -2.7002 2.7998 -7.40039 0 -10.2002c-3 -3 -7.7002 -3 -10.5 0c-3 2.7002 -3 7.39941 0 10.2002\nzM317.4 263.7c-19.9004 14.3994 -33.8008 43.2002 -11.9004 68.0996c21.5996 24.9004 40.7002 17.2002 59.7998 -0.799805c11.9004 -11.2998 29.2998 -24.9004 17.2002 -48.2002c-12.5 -23.5 -45.0996 -33.2002 -65.0996 -19.0996zM365.1 308.2\nc-8.89941 10 -23.2998 -6.90039 -15.5 -16.1006c7.40039 -9 32.1006 -2.39941 15.5 16.1006zM504 192c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248s248 -111 248 -248zM437.8 149.4c2.5 16.0996 -20.2002 16.5996 -25.2002 25.6992\nc-13.5996 24.1006 -27.6992 36.8008 -54.5 30.4004c11.6006 8 23.5 6.09961 23.5 6.09961c0.300781 6.40039 0 13 -9.39941 24.9004c3.89941 12.5 0.299805 22.4004 0.299805 22.4004c15.5 8.59961 26.7998 24.3994 29.0996 43.1992\nc3.60059 31 -18.7998 59.2002 -49.7998 62.8008c-22.0996 2.5 -43.7002 -7.7002 -54.2998 -25.7002c-23.2002 -40.1006 1.40039 -70.9004 22.4004 -81.4004c-14.4004 1.40039 -34.3008 11.9004 -40.1006 34.2998c-6.59961 25.7002 2.7998 49.8008 8.90039 61.4004\nc0 0 -4.40039 5.7998 -8 8.90039c0 0 -13.7998 0 -24.6006 -5.30078c11.9004 15.2002 25.2002 14.4004 25.2002 14.4004c0 6.40039 -0.599609 14.9004 -3.59961 21.5996c-5.40039 11 -23.7998 12.9004 -31.7002 -2.7998c0.0996094 0.200195 0.299805 0.400391 0.400391 0.5\nc-5 -11.8994 -1.10059 -55.8994 16.8994 -87.2002c-2.5 -1.39941 -9.09961 -6.09961 -13 -10c-21.5996 -9.69922 -56.2002 -60.2998 -56.2002 -60.2998c-28.1992 -10.7998 -77.1992 -50.8994 -70.5996 -79.7002c0.299805 -3 1.40039 -5.5 3 -7.5\nc-2.7998 -2.19922 -5.5 -5 -8.2998 -8.2998c-11.9004 -13.7998 -5.2998 -35.2002 17.7002 -24.3994c15.7998 7.19922 29.5996 20.1992 36.2998 30.3994c0 0 -5.5 5 -16.2998 4.40039c27.6992 6.59961 34.2998 9.39941 46.1992 9.09961c8 -3.89941 8 34.2998 8 34.2998\nc0 14.7002 -2.19922 31 -11.0996 41.5c12.5 -12.1992 29.0996 -32.6992 28 -60.5996c-0.799805 -18.2998 -15.2002 -23 -15.2002 -23c-9.09961 -16.5996 -43.2002 -65.9004 -30.3994 -106c0 0 -9.7002 14.9004 -10.2002 22.0996\nc-17.4004 -19.3994 -46.5 -52.2998 -24.6006 -64.5c26.6006 -14.6992 108.801 88.6006 126.2 142.301c34.6006 20.7998 55.4004 47.2998 63.9004 65c22 -43.5 95.2998 -94.5 101.1 -59z\" />\n    <glyph glyph-name=\"etsy\" unicode=\"&#xf2d7;\" horiz-adv-x=\"384\" \nd=\"M384 100c-1.75 -10.75 -13.75 -110 -15.5 -132c-117.879 4.29883 -219.895 4.74316 -368.5 0v25.5c45.457 8.94824 60.627 8.01855 61 35.25c1.79297 72.3223 3.52441 244.143 0 322c-1.0293 28.46 -12.1299 26.7646 -61 36v25.5\nc73.8857 -2.3584 255.933 -8.55078 362.999 3.75c-3.5 -38.25 -7.75 -126.5 -7.75 -126.5h-23.249c-11.0527 42.835 -18.7588 90.5 -54.75 90.5h-137c-10.25 0 -10.75 -3.5 -10.75 -9.75v-163.75c58 -0.5 88.5 2.5 88.5 2.5c29.7695 0.951172 27.5596 8.50195 40.75 65.251\nh25.75c-4.40723 -101.351 -3.91016 -61.8291 -1.75 -160.25h-25.75c-9.15527 40.0859 -9.06543 61.0449 -39.501 61.5c0 0 -21.5 2 -88 2v-139c0 -26 14.25 -38.25 44.25 -38.25h89.251c63.6357 0 66.5645 24.9961 98.751 99.75h22.249v-0.000976562z\" />\n    <glyph glyph-name=\"imdb\" unicode=\"&#xf2d8;\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM21.2998 218.8h-0.299805c0.0996094 0.100586 0.200195 0.299805 0.299805 0.400391v-0.400391zM97 128.2v127.8h-33v-127.8h33z\nM210.2 128.2v127.8h-43l-7.60059 -59.9004c-2.69922 20 -5.39941 40.1006 -8.69922 59.9004h-42.8008v-127.8h29v84.5l12.2002 -84.5h20.6006l11.5996 86.3994v-86.3994h28.7002zM221.6 128.2c86.1006 -0.100586 75 -6 75 82.5c0 8.09961 0.300781 16.7998 -1.39941 24.3994\nc-4.2998 22.5 -31.4004 20.9004 -49 20.9004h-24.6006v-127.8zM382.5 157.4v36c0 17.2998 -0.799805 30.0996 -22.2002 30.0996c-8.89941 0 -14.8994 -2.7002 -20.8994 -9.2002v41.7002h-31.7002v-127.8h29.7998l1.90039 8.09961\nc5.69922 -6.7998 11.8994 -9.7998 20.8994 -9.7998c19.7998 0 22.2002 15.2002 22.2002 30.9004zM265 218.1v-49.2998c0 -9.7002 1.90039 -18.7002 -10.2998 -18.3994v83.6992c11.8994 0 10.2998 -6.2998 10.2998 -16zM350.5 192v-32.7002\nc0 -5.39941 1.59961 -14.3994 -6.2002 -14.3994c-1.59961 0 -3 0.799805 -3.7998 2.39941c-2.2002 5.10059 -1.09961 44.1006 -1.09961 44.7002c0 3.7998 -1.10059 12.7002 4.89941 12.7002c7.2998 0 6.2002 -7.2998 6.2002 -12.7002z\" />\n    <glyph glyph-name=\"ravelry\" unicode=\"&#xf2d9;\" horiz-adv-x=\"512\" \nd=\"M407.4 386.5c72.6992 -37.9004 112 -117.2 103.3 -199.5c-1.7002 -16.7002 -4.40039 -36.2002 -9.7998 -52.2002c-22.2002 -65.7002 -52.9004 -108.6 -123.101 -147.7c-6.39941 -4.39941 -13.2998 -8.59961 -20.2002 -10.7998\nc-12.5 -4.39941 -26.0996 -5.39941 -40.0996 -3.89941c-5.90039 -0.5 -11.7998 -0.700195 -18 -0.700195c-93.7002 0 -173 64 -196.9 151.399c-0.699219 0 -1.5 0.200195 -2.19922 0.200195c-5.60059 -44.2998 27.0996 -104.1 27.0996 -104.1s2 -3 13.2998 -20.2002\nc-62.7998 33.2002 -64.5 131.2 -64.5 131.2c-15 5.59961 -67.2002 23.3994 -76.2998 37.8994c0 0 40.9004 -22.3994 76.2002 -27c-0.200195 0.300781 0.5 7.90039 0.5 7.90039c2.2002 30 12.5 53.4004 23.0996 71.4004c6.90039 33.7998 22.1006 64.2998 43.2998 89.8994\nc3.7002 15.2998 9.60059 33.5 19.9004 52.7002c4.40039 8.40039 8.59961 13.7998 19.9004 19c74.8994 35 148.699 43.9004 224.5 4.5zM138.8 284.8c-7.59961 -11.2998 -13.7002 -23.5996 -18.8994 -36.3994c8.09961 8.59961 14.7998 14.1992 18.1992 16.6992\nc-0.5 7.40039 0.700195 19.7002 0.700195 19.7002zM107.6 162.9c0.700195 -9.60059 2 -18.9004 4.2002 -28.1006l41.4004 -6.89941c-14.1006 42.0996 -15.7998 90.0996 -15.7998 90.0996c-16.5 -16 -25.4004 -37.9004 -29.8008 -55.0996zM115.5 120.1\nc21.4004 -69.6992 81 -122.8 154.1 -134.399c-1 0.299805 -1.69922 0.5 -2.69922 1c0 0 -81 47.5 -108.301 124.3c-9.09961 1.5 -28.2998 5.90039 -43.0996 9.09961zM386 3.90039c63 32 106.6 98 106.8 174c0 107.399 -86.5996 194.5 -193 194.5\nc-49.2998 0 -94.0996 -18.7002 -128.3 -49.5c-5.2002 -10.1006 -8.59961 -22.9004 -11.0996 -39.4004c52.5 44.5996 146 33.5 146 33.5c23.3994 -1 20.5996 -21.7002 20.3994 -28.0996c-85.2002 7.19922 -127 -17.2002 -168.399 -52.4004\nc0 0 8.09961 -78.7998 26.7998 -110.8c107.8 -4.90039 189.8 53.7002 189.8 53.7002c10.2998 7.39941 19.4004 8.09961 21.4004 -4.7002c1.5 -10.4004 2.19922 -24.4004 -9.60059 -29.7998c-36 -16.8008 -75.5996 -27.3008 -115 -33\nc-25.5996 -3.7002 -39.7998 -4.60059 -78 -3.90039c36.4004 -84.7002 127.5 -107.8 127.5 -107.8c28.5 -4.7002 50.2002 -1 64.7002 3.7002z\" />\n    <glyph glyph-name=\"sellcast\" unicode=\"&#xf2da;\" \nd=\"M353.4 416c52.0996 0 94.6992 -42.5996 94.6992 -94.5996v-258.801c0 -52 -42.5996 -94.5996 -94.6992 -94.5996h-258.7c-52.1006 0 -94.7002 42.5996 -94.7002 94.7002v258.7c0 52 42.5996 94.5996 94.7002 94.5996h258.7zM303.4 99.5996\nc27.8994 48.2002 11.1992 110.5 -37.2002 138.5c-18.6006 10.8008 0.0996094 -0.0996094 -18.5 10.7002c-25 14.4004 -46.2002 -23.2998 -21.6006 -37.5c18 -10.2002 0.800781 -0.399414 18.6006 -10.5996c27.5996 -16 37.2002 -51.7998 21.2998 -79.4004\nc-16 -27.5996 -51.7998 -37.2002 -79.4004 -21.2998c-18.5996 10.7998 0.100586 -0.0996094 -18.5 10.7002c-10.2998 6 -23.5996 2.39941 -29.5 -7.90039l-15.6992 -27.2002c-12.6006 -21.7998 19.3994 -53 42.2998 -13.1992c48.2998 -27.7002 110.3 -11 138.2 37.1992z\nM325.2 308.4c14.2998 24.7998 -23.4004 46.3994 -37.7002 21.5l-4.7998 -8.40039c-48.2998 27.7002 -110.3 11 -138.2 -37.2002c-27.7998 -48.2998 -11.0996 -110.6 37.0996 -138.399c18.6006 -10.8008 -0.0996094 0.0996094 18.5 -10.7002\nc25 -14.4004 46.2002 23.2998 21.6006 37.5c-0.100586 0 -18.6006 10.5996 -18.6006 10.5996c-27.5996 16 -37.2998 51.7998 -21.2998 79.4004c16 27.5996 51.7998 37.2002 79.4004 21.2998c18.5996 -10.7998 -0.100586 0.0996094 18.5 -10.7002\nc10.2002 -5.09961 20 -2.89941 26.5 3.60059c2.7002 2.69922 2 2 19 31.5z\" />\n    <glyph glyph-name=\"superpowers\" unicode=\"&#xf2dd;\" \nd=\"M448 416l-87.2002 -87c39.7002 -38.7002 61.2002 -92.7002 57.7002 -148.2c-5.40039 -93 -76.9004 -167.3 -168.7 -179.8c-83.2998 -11 -166.5 -22 -249.8 -33l86.7998 86.7998c-39.7998 38.7002 -61.0996 92.7002 -57.7998 148.2c5.7002 93.2998 77 167.5 169 180\nc83.2002 11 166.7 22 250 33zM368.3 183.7c4.40039 80 -56.7998 146.3 -136.1 151c-78.7002 4.7998 -148.5 -55.2998 -153 -134.5c-4.40039 -80 56.7998 -146.3 136.3 -151c78.7998 -4.7002 148.6 55 152.8 134.5z\" />\n    <glyph glyph-name=\"wpexplorer\" unicode=\"&#xf2de;\" horiz-adv-x=\"512\" \nd=\"M512 192c0 -141.2 -114.7 -256 -256 -256c-141.2 0 -256 114.7 -256 256s114.7 256 256 256s256 -114.7 256 -256zM480 192c0 123.2 -100.3 224 -224 224c-123.5 0 -224 -100.5 -224 -224s100.5 -224 224 -224s224 100.5 224 224zM160.9 323.4l86.8994 -37.1006\nl-37.0996 -86.8994l-86.9004 37.0996zM270.9 154.3l46.5996 -94h-14.5996l-50 100l-48.9004 -100h-14l51.0996 106.9l-22.2998 9.39941l6 14l68.6006 -29.0996l-6 -14.2998zM259.1 270.6l68.6006 -29.3994l-29.4004 -68.2998l-68.2998 29.0996zM339.4 227.7\nl54.5996 -23.1006l-23.4004 -54.2998l-54.2998 23.1006z\" />\n    <glyph glyph-name=\"meetup\" unicode=\"&#xf2e0;\" horiz-adv-x=\"512\" \nd=\"M99 33.7002c1.09961 -5.7002 -2.2998 -11.1006 -8 -12.2998c-5.40039 -1.10059 -10.9004 2.2998 -12 8c-1.09961 5.39941 2.2998 11.0996 7.7002 12.2998c5.39941 1.2002 11.0996 -2.2998 12.2998 -8zM242.1 -37.7002c6.60059 4.60059 15.5 2.7998 19.7002 -3.7002\nc4.60059 -6.59961 2.90039 -15.3994 -3.39941 -20c-6.60059 -4.59961 -15.4004 -2.89941 -20 3.7002c-4.30078 6.60059 -2.60059 15.4004 3.69922 20zM156.1 424.6c-6.2998 -1.5 -12.5 2.5 -13.8994 9.10059c-1.2002 6.2998 2.7998 12.5996 9.09961 14\nc6.2998 1.5 12.6006 -2.5 13.7002 -9.10059c1.40039 -6.2998 -2.59961 -12.5996 -8.90039 -14zM34.4004 221.7c10 -7.10059 12.5996 -20.7998 5.69922 -31.2002c-6.89941 -10.2998 -20.5996 -12.7998 -30.5996 -5.7002c-10 6.90039 -12.5996 20.9004 -5.7002 30.9004\nc6.90039 10.2998 20.6006 12.8994 30.6006 6zM306.4 392.6c-10.3008 -6.2998 -23.7002 -2.89941 -29.7002 7.40039c-6.2998 10.5996 -2.90039 24.2998 7.39941 30.5996c10.3008 6.30078 23.7002 2.90039 30 -7.69922c6 -10.3008 2.90039 -24 -7.69922 -30.3008zM115.3 334.6\nc-7.5 -5.19922 -18 -3.5 -23.0996 4.30078c-5.10059 7.69922 -3.40039 18.2998 4.2998 23.6992c7.40039 5.10059 18 3.40039 23.0996 -4.2998c5.10059 -7.7002 3.40039 -18.2998 -4.2998 -23.7002zM487.6 178.6c7.40039 1.40039 14.8008 -3.5 16.3008 -10.8994\nc1.69922 -7.7002 -3.2002 -15.2002 -10.6006 -16.6006c-7.39941 -1.69922 -14.8994 3.2002 -16.2998 10.6006c-1.7002 7.7998 3.2002 15.2002 10.5996 16.8994zM527.3 235.4c1.40039 -5.7002 -2.2998 -11.1006 -7.7002 -12.6006\nc-5.69922 -1.09961 -11.1992 2.60059 -12.2998 8c-1.09961 5.7002 2.2998 11.5 8 12.6006c5.40039 1.09961 10.9004 -2.30078 12 -8zM447 309.1c8.2998 6 20 3.80078 25.7002 -4.89941c5.7002 -8.60059 3.7002 -20.2998 -4.60059 -26.2998\nc-8.59961 -5.7002 -20.2998 -3.7002 -26 4.89941c-5.69922 8.60059 -3.69922 20.2998 4.90039 26.2998zM440.7 169.7c26.2998 -43.1006 15.0996 -100 -26.2998 -129.101c-17.4004 -12.2998 -37.1006 -17.6992 -56.9004 -17.0996\nc-12 -47.0996 -69.4004 -64.5996 -105.1 -32.5996c-1.10059 -0.900391 -2.60059 -1.7002 -3.7002 -2.90039c-39.1006 -27.0996 -92.2998 -17.4004 -119.4 22.2998c-9.7002 14.2998 -14.5996 30.6006 -15.0996 46.9004c-65.4004 10.8994 -90 94 -41.1006 139.7\nc-28.2998 46.8994 0.600586 107.399 53.4004 114.899c25.0996 66.2002 107.6 97.6006 163.6 54.2002c67.4004 22.2998 136.301 -29.4004 130.9 -101.1c41.0996 -12.6006 52.7998 -66.9004 19.7002 -95.2002zM370.7 95.4004\nc-3.10059 20.5996 -40.9004 4.59961 -43.1006 27.0996c-3.09961 32 43.7002 101.1 40 128c-3.39941 24 -19.3994 29.0996 -33.3994 29.4004c-13.4004 0.299805 -16.9004 -2 -21.4004 -4.60059c-2.89941 -1.7002 -6.59961 -4.89941 -11.7002 0.299805\nc-6.2998 6 -11.0996 11.7002 -19.3994 12.9004c-12.2998 2 -17.7002 -2 -26.6006 -9.7002c-3.39941 -2.89941 -12 -12.8994 -20 -9.09961c-3.39941 1.7002 -15.3994 7.7002 -24 11.3994c-16.2998 7.10059 -40 -4.59961 -48.5996 -20\nc-12.9004 -22.8994 -38 -113.1 -41.7002 -125.1c-8.59961 -26.5996 10.9004 -48.5996 36.9004 -47.0996c11.0996 0.599609 18.2998 4.59961 25.3994 17.3994c4 7.40039 41.7002 107.7 44.6006 112.601c2 3.39941 8.89941 8 14.5996 5.09961\nc5.7002 -3.09961 6.90039 -9.40039 6 -15.0996c-1.09961 -9.7002 -28 -70.9004 -28.8994 -77.7002c-3.40039 -22.9004 26.8994 -26.6006 38.5996 -4c3.7002 7.09961 45.7002 92.5996 49.4004 98.2998c4.2998 6.2998 7.39941 8.2998 11.6992 8\nc3.10059 0 8.30078 -0.900391 7.10059 -10.9004c-1.40039 -9.39941 -35.1006 -72.2998 -38.9004 -87.6992c-4.59961 -20.6006 6.60059 -41.4004 24.9004 -50.6006c11.3994 -5.7002 62.5 -15.7002 58.5 11.1006zM376.4 3.09961c10.5996 7.5 24.8994 4.60059 32.2998 -6\nc7.09961 -10.5996 4.59961 -25.1992 -6 -32.5996c-10.6006 -7.09961 -24.9004 -4.59961 -32 6c-7.2002 10.5996 -4.60059 25.2002 5.7002 32.5996z\" />\n    <glyph glyph-name=\"font-awesome-alt\" unicode=\"&#xf35c;\" \nd=\"M339.3 276.8c5.40039 0 9.5 -3 7.7002 -7.09961v-134.4c0 -4.2002 -3 -6 -7.2002 -7.7998c-15.5996 -7.09961 -33.5 -13.7002 -52 -13.7002c-26.2998 0 -38.2002 16.1006 -69.2998 16.1006c-22.7002 0 -46 -8.30078 -65.7002 -16.7002\nc-0.599609 -0.600586 -1.7998 -1.2002 -3 -1.2002v-44.2002c0 -1.7998 0 -3 -0.599609 -4.7998v-1.2998c-2.40039 -7.7002 -9.5 -13.7002 -18.5 -13.7002c-10.7002 0 -19.7002 8.90039 -19.7002 19.7002v212.1c-7.7002 6 -12.5 15.5 -12.5 25.7002\nc0 18 14.2998 32.2998 32.2998 32.2998s32.2998 -14.3994 32.2998 -32.2998c0 -10.7998 -4.69922 -19.7002 -12.5 -25.7002v-17.8994c1.2002 0.599609 3 1.19922 4.80078 1.7998c17.8994 7.09961 39.3994 13.7002 59.6992 13.7002\nc22.1006 0 39.4004 -5.90039 59.1006 -13.7002c4.09961 -1.7998 8.2998 -2.40039 12.5 -2.40039c22.7002 0 46.5996 15.5 52.5996 15.5zM397.8 416c27.5 0 50.2002 -22.7002 50.2002 -50.2002v-347.6c0 -27.5 -22.7002 -50.2002 -50.2002 -50.2002h-347.6\nc-27.5 0 -50.2002 22.7002 -50.2002 50.2002v347.6c0 27.5 22.7002 50.2002 50.2002 50.2002h347.6zM412.1 18.2998v347.601c0 7.69922 -6.5 14.2998 -14.2998 14.2998v-0.100586h-347.6c-7.7002 0 -14.2998 -6.5 -14.2998 -14.2998v-347.5\nc0 -7.7002 6.5 -14.2998 14.2998 -14.2998h347.6c7.7002 0 14.2998 6.5 14.2998 14.2998z\" />\n    <glyph glyph-name=\"accessible-icon\" unicode=\"&#xf368;\" \nd=\"M423.9 192.2l-12.9004 -157.3c-3.2998 -40.7002 -63.9004 -35.1006 -60.5996 4.89941l10 122.5l-41.1006 -2.2998c10.1006 -20.7002 15.7998 -43.9004 15.7998 -68.5c0 -41.2002 -16.0996 -78.7002 -42.2998 -106.5l-39.2998 39.2998\nc57.9004 63.7002 13.0996 167.2 -74 167.2c-25.9004 0 -49.5 -9.90039 -67.2002 -26l-39.2998 39.2998c22 20.7002 50.0996 35.1006 81.4004 40.2002l75.2998 85.7002l-42.6006 24.7998l-51.5996 -46c-30 -26.7998 -70.5996 18.5 -40.5 45.4004l68 60.6992\nc9.7998 8.80078 24.0996 10.2002 35.5 3.60059c0 0 139.3 -80.9004 139.5 -81.1006c16.2002 -10.0996 20.7002 -36 6.09961 -52.5996l-58.3994 -66.5l106.1 5.90039c18.5 1.09961 33.6006 -14.4004 32.1006 -32.7002zM359 346.2\nc-28.0996 0 -50.9004 22.7998 -50.9004 50.8994c0 28.1006 22.8008 50.9004 50.9004 50.9004s50.9004 -22.7998 50.9004 -50.9004c0 -28.0996 -22.8008 -50.8994 -50.9004 -50.8994zM179.6 -8.5c20.8008 0 40.1006 6.40039 56.1006 17.2998l39.7002 -39.7002\nc-100.7 -78.8994 -251.4 -8.19922 -251.4 122.5c0 36.1006 12.4004 69.4004 33.2002 95.7002l39.7002 -39.7002c-44.7002 -65.5 2.09961 -156.1 82.6992 -156.1z\" />\n    <glyph glyph-name=\"accusoft\" unicode=\"&#xf369;\" horiz-adv-x=\"640\" \nd=\"M322.1 196c-1.69922 -1.59961 -89.5996 -82.5 -90.1992 -83.2998l-92.6006 -33.7998c-4.7998 -2 -7.59961 -3.7002 -7 -8.90039c0.200195 -1.5 0.600586 -22.5996 1 -27.7002c-0.700195 -0.5 -0.0996094 0 -0.599609 -0.599609c0 0 -113.7 -36.6006 -114.5 -36.6006\nc-14.1006 -5.09961 -22.7002 -8.2998 -15.7002 1.7002c1.2998 1.7998 234.4 231.601 243.4 240.9c13 13.5 25 15.0996 25 15.0996l51.1992 -65.7998v-1zM482.2 75.9004c-5.7002 6.89941 -232.2 297.1 -239.9 306.6c-13.7002 17.2002 0 16.7998 19.2002 16.9004\nc9.7002 0.0996094 106.3 0.599609 116.5 0.599609c24.0996 0.0996094 28.7002 -0.599609 38.4004 -12.7998c2.09961 -2.7002 205.1 -245.8 207.199 -248.3c5.5 -6.7002 15.2002 -19.1006 7.2002 -23.4004c-2.39941 -1.2998 -114.6 -47.7002 -117.8 -48.9004\nc-10.0996 -4 -17.5 -6.7998 -30.7998 9.30078zM634.9 74.2998c6 -1.39941 7.09961 -4.2002 1.69922 -8.2002c-2 -1.39941 -123.699 -76.5996 -125.8 -77.7998c-15.0996 -8.7998 -38 -1.59961 -53.5996 1.7002c-7.10059 1.5 -305.3 68.2998 -308 69.0996\nc-2.60059 0.900391 -4.40039 1 -4.60059 3.5c-0.299805 4 6 5.60059 11.1006 7.60059c5 1.89941 145.3 52.5996 150.2 54.7002c4.7998 2.09961 11.2998 2.69922 14.3994 2.89941c4.90039 0.299805 59.9004 -8.39941 65.2998 -9.2998l57.1006 -74\nc9.7998 -11.4004 20.7002 -21.9004 36.7002 -14.5996c2.5 1.19922 117.5 51.5996 117.5 51.5996c13.3994 -2.5 35.6992 -6.90039 38 -7.2002z\" />\n    <glyph glyph-name=\"adversal\" unicode=\"&#xf36a;\" horiz-adv-x=\"512\" \nd=\"M482.1 416c24.5 0 29.9004 -5.59961 29.9004 -30.2002v-388.1c0 -24.5 -5.5 -29.7002 -29.9004 -29.7002h-453.399c-22.9004 0 -28.7002 5.59961 -28.7002 28.9004v390.199c0 23 5.7998 28.9004 28.7002 28.9004h453.399zM178.4 227.7\nc9.39941 -7.2002 12.3994 -17.1006 11.2998 -27.2998c-1.7998 -19.1006 -75.7998 -11.4004 -114 -30.9004c-27.2002 -13.9004 -42.7002 -41.7002 -39.6006 -71c6.7002 -64.7002 89.6006 -79.7002 147 -43.2998c4.60059 3.2002 8.30078 4.89941 11.9004 1\nc2.09961 -2.60059 2 -4 3.90039 -6.2002c7.2998 -9.59961 38.1992 -14.0996 46.5996 -7.40039c3.09961 2.80078 4.59961 6.30078 2.7002 10.7002c-13.6006 30.5 -6.60059 63 -9.2998 88.7998c0 69.3008 6.39941 111.7 -34.5 128.5\nc-41.9004 17.4004 -84.2002 16.6006 -125.301 -4.7998c-16.2998 -9 -53.6992 -52.8994 -24.8994 -64.2998c5.2998 -2.2998 12.7998 -4 22.5 -5.5c8.2002 -1.2002 13.2002 -2.7998 17.5 8.2998c12.0996 32.1006 56.7002 43.6006 84.2002 23.4004zM465.1 5.7002\nc0 14.2998 -9.7998 9.89941 -16.5996 9.89941c-132.3 0.400391 -264.5 0.400391 -396.8 0c-6.60059 0 -16.7002 4.80078 -17.1006 -9.09961c-0.399414 -15.5 10.4004 -10.7002 17.8008 -10.7002h394.899c6.7002 0 17.7998 -5.2002 17.7998 9.90039zM468.9 346.2\nc0 0.200195 0 0.299805 0.0996094 0.5c0 9.89941 -3.5 15.0996 -13.5996 14.2998c-3.10059 -0.400391 -6.60059 0 -9.7002 0c-26.1006 0 -26 0 -26 -26.2002v-71c-79.2002 45.6006 -124.3 -6.59961 -136.101 -30.5c-16.3994 -32.8994 -21.7998 -66.5996 -15.6992 -100\nc16.2998 -92.2998 91 -114.899 144.399 -85.2002c4.60059 2.80078 6.60059 7.5 12.4004 -1.19922c8.59961 -12.7002 23.7002 -5.2002 36.0996 -5.60059c7.40039 0 8.10059 8.2002 8.10059 13.9004v291zM417.4 113.9c-19.5 -47.6006 -72.9004 -43.3008 -90 -5.2002\nc-15.1006 33.2998 -15.5 68.2002 0.399414 101.5c16.2998 34.0996 59.7002 35.7002 81.5 4.7998c20.6006 -28.7998 14.9004 -84.5996 8.10059 -101.1zM122.6 78.5996c-7.5 1.30078 -33 3.30078 -33.6992 27.8008c-0.400391 13.8994 7.7998 23 19.7998 25.7998\nc24.3994 5.89941 49.2998 9.89941 73.7002 14.7002c8.89941 2 7.39941 -4.40039 7.7998 -9.5c1.39941 -33 -26.1006 -59.2002 -67.6006 -58.8008z\" />\n    <glyph glyph-name=\"affiliatetheme\" unicode=\"&#xf36b;\" horiz-adv-x=\"512\" \nd=\"M159.7 210.6c-51.2998 -70.8994 -116.601 -110.8 -145.7 -89.1992c-29.2002 21.6992 -11.2002 96.5996 40.2002 167.5c51.2998 70.8994 116.6 110.8 145.7 89.1992c29.0996 -21.5996 11.0996 -96.5996 -40.2002 -167.5zM510.9 267.9\nc0.699219 -8.2002 1.09961 -16.5 1 -25c0 -151.801 -121.601 -274.9 -271.601 -274.9c-82.8994 0 -157.2 37.5996 -207 96.9004c71.2998 19.3994 130.5 68.3994 164.101 133.199c7.69922 -32.5996 24 -58.5996 49 -73.7998c72.5996 -44.0996 190.699 20.2002 264.5 143.601z\n\" />\n    <glyph glyph-name=\"algolia\" unicode=\"&#xf36c;\" \nd=\"M229.3 265.4c49.2002 0 89.2002 -39.9004 89.2002 -89.2002s-39.9004 -89.2002 -89.2002 -89.2002s-89.2002 39.9004 -89.2002 89.2002s39.9004 89.2002 89.2002 89.2002zM292 208.8c1.2998 0.700195 1.7998 2.40039 1.09961 3.7002\nc-12.1992 21.4004 -34.8994 36.0996 -61.0996 37.0996c-1.40039 0.100586 -2.7002 -1.09961 -2.7002 -2.59961v-66.5c0 -1.90039 2 -3.2002 3.7998 -2.2998zM389.1 416c32.5 0 58.9004 -26.4004 58.8008 -58.9004v-330.199c0 -32.5 -26.3008 -58.9004 -58.9004 -58.9004\nh-330.1c-32.5 0 -58.9004 26.4004 -58.9004 59v330.1c0 32.5 26.4004 58.9004 58.9004 58.9004h330.199zM186.5 331.3h0.0996094v-15.7998c0 -1.7002 1.7002 -3 3.40039 -2.5c12.7002 3.7002 25.9004 5.5 39.4004 5.5c13 0 25.7998 -1.7002 38.0996 -5.09961\nc1.59961 -0.5 3.2998 0.699219 3.2998 2.5v15.3994c0 10.7998 -8.7002 19.5 -19.5 19.5h-45.2998c-10.7998 0 -19.5 -8.7002 -19.5 -19.5zM102.1 294.3c-7.59961 -7.59961 -7.59961 -19.8994 0 -27.3994l7.7002 -7.7002c1.10059 -1.2002 3 -1 4 0.299805\nc4.40039 6.09961 9.40039 12 14.7998 17.4004c5.5 5.5 11.4004 10.3994 17.6006 14.8994c1.2998 1 1.39941 2.90039 0.299805 4l-7.7002 7.7002c-7.59961 7.59961 -19.8994 7.59961 -27.5 0zM229.3 49.5c69.9004 0 126.601 56.7998 126.601 126.6\nc0 70 -56.6006 126.601 -126.601 126.601c-69.8994 0 -126.6 -56.7002 -126.6 -126.601c0 -69.8994 56.5996 -126.6 126.6 -126.6z\" />\n    <glyph glyph-name=\"amilia\" unicode=\"&#xf36d;\" \nd=\"M240.1 416c134.101 0 191.9 -55.7002 192 -136v-296.6c0 -3 -1 -8.10059 -5.09961 -9.10059c-4 -1 -57.2998 -0.700195 -66.5 -0.700195s-56.7998 1 -59.9004 2c-4 0.900391 -6.09961 6.10059 -6.09961 9.10059v25.3994\nc-39.5996 -21.3994 -105.5 -42.0996 -153.3 -42.0996c-109.7 0 -124.9 85.7002 -124.9 104s-5.09961 95.5 30.4004 111.8c31.5 13.2002 156.3 36.5 243.7 47.7998v38.5c0 44.7002 -1 73.1006 -58.9004 73.1006c-55.7998 0 -119.8 -25.4004 -152.3 -47.7002\nc-6.10059 -4.09961 -16.2002 -4.09961 -20.2998 6.09961c-5.10059 12.2002 -9.10059 34.5 -10.2002 39.6006c-1.90039 10.2002 2.09961 16.2998 7.2002 19.3994c52.6992 38.5 122.3 55.4004 184.199 55.4004zM290.3 68v106.7c-44.7002 -4.10059 -95.5 -20.2998 -119.8 -33.5\nc-21.2998 -10.2002 -18.2998 -40.7002 -18.2998 -52.9004c0.0996094 -11.2002 6.2002 -44.7002 59 -44.7002c30.3994 0 57.7002 11.2002 79.0996 24.4004z\" />\n    <glyph glyph-name=\"angrycreative\" unicode=\"&#xf36e;\" horiz-adv-x=\"640\" \nd=\"M640 209.8l-3.2002 -28.2002l-34.5 -2.2998l-2 -18.0996l34.5 2.2998l-3.2002 -28.2002l-34.3994 -2.2002l-2.2998 -20.0996l34.3994 2.2002l-3 -26.1006l-64.7002 -4.09961l12.7002 113.2l-47.2998 -115.4l-31.9004 -2l-23.7998 117.8l30.2998 2l13.6006 -79.3994\nl31.7002 82.3994zM426.8 76.5l12.7998 120l28.4004 1.90039l-12.9004 -120.101zM162 59.9004l-19.4004 36l-3.5 -37.4004l-28.1992 -1.7002l2.69922 29.1006c-11 -18 -32 -34.3008 -56.8994 -35.8008c-32.7998 -2 -59.7002 20.9004 -56.4004 58.2002\nc2.60059 29.2998 26.7002 62.7998 67.5 65.4004c37.7002 2.39941 47.6006 -23.2002 51.2998 -28.7998l2.80078 30.7998l38.8994 2.5c20.1006 1.2998 38.7002 -3.7002 42.5 -23.7002l2.60059 26.5996l64.7998 4.2002l-2.7002 -27.8994l-36.4004 -2.40039l-1.69922 -17.9004\nl36.3994 2.30078l-2.7002 -27.9004l-36.3994 -2.2998l-1.90039 -19.9004l36.2998 2.2998l-2.09961 -20.7998l55 117.2l23.7998 1.59961l32.1006 -110.6l8.89941 85.5996l-22.2998 -1.39941l2.90039 27.8994l75 4.90039l-3 -28l-24.3008 -1.59961l-9.69922 -91.9004\nl-58 -3.7002l-4.30078 15.6006l-39.3994 -2.5l-8 -16.3008zM117.7 130.1l-26.4004 -1.69922c-6.7002 12.3994 -14.3994 16.5996 -26.2998 15.7998c-19 -1.2002 -33.2998 -17.5 -34.5996 -33.2998c-1.40039 -16 7.2998 -32.5 28.6992 -31.2002\nc12.8008 0.799805 21.3008 8.59961 28.9004 18.8994l27 1.7002zM173.8 137.8c1.2002 12.9004 -7.59961 13.6006 -26.0996 12.4004l-2.7002 -28.5c14.2002 0.899414 27.5 2.09961 28.7998 16.0996zM194.9 67l5.7998 60c-5 -13.5 -14.7002 -21.0996 -27.9004 -26.5996z\nM330.3 112l-7.89941 37.7998l-15.8008 -39.2998zM160.2 186.6l-4.2998 17.5l-39.6006 -2.59961l-8.09961 -18.2002l-31.9004 -2.09961l57 121.899l23.9004 1.60059l30.7002 -102l9.89941 104.7l27 1.7998l37.7998 -63.6006l6.5 66.6006l28.5 1.89941l-4 -41.1992\nc7.40039 13.5 22.9004 44.6992 63.6006 47.5c40.5 2.7998 52.3994 -29.3008 53.3994 -30.3008l3.30078 32l39.2998 2.7002c12.7002 0.900391 27.7998 -0.299805 36.2998 -9.7002l-4.40039 11.9004l32.2002 2.2002l12.9004 -43.2002l23 45.7002l31 2.2002l-43.6006 -78.4004\nl-4.7998 -44.2998l-28.3994 -1.90039l4.7998 44.2998l-15.7998 43c1 -22.2998 -9.2002 -40.0996 -32 -49.5996l25.1992 -38.7998l-36.3994 -2.40039l-19.2002 36.7998l-4 -38.2998l-28.4004 -1.89941l3.30078 31.5c-6.7002 -9.30078 -19.7002 -35.4004 -59.6006 -38\nc-26.2002 -1.7002 -45.5996 10.2998 -55.3994 39.1992l-4 -40.2998l-25 -1.59961l-37.6006 63.2998l-6.2998 -66.2002zM436.8 268.7c10.2002 0.700195 17.5 2.09961 21.6006 4.2998c4.5 2.40039 7 6.40039 7.59961 12.0996\nc0.599609 5.30078 -0.599609 8.80078 -3.40039 10.4004c-3.59961 2.09961 -10.5996 2.7998 -22.8994 2zM327.7 234c5.59961 -5.90039 12.7002 -8.5 21.2998 -7.90039c4.7002 0.300781 9.09961 1.80078 13.2998 4.10059c5.5 3 10.6006 8 15.1006 14.2998l-34.2002 -2.2998\nl2.39941 23.8994l63.1006 4.30078l1.2002 12l-31.2002 -2.10059c-4.10059 3.7002 -7.7998 6.60059 -11.1006 8.10059c-4 1.69922 -8.09961 2.7998 -12.1992 2.5c-8 -0.5 -15.3008 -3.60059 -22 -9.2002c-7.7002 -6.40039 -12 -14.5 -12.9004 -24.4004\nc-1.09961 -9.59961 1.40039 -17.2998 7.2002 -23.2998zM126.4 225.8l23.7998 1.60059l-8.2998 37.5996z\" />\n    <glyph glyph-name=\"app-store\" unicode=\"&#xf36f;\" horiz-adv-x=\"512\" \nd=\"M255.9 327.1l9.09961 15.7002c5.59961 9.7998 18.0996 13.1006 27.9004 7.5c9.7998 -5.59961 13.0996 -18.0996 7.5 -27.8994l-87.5 -151.5h63.2998c20.5 0 32 -24.1006 23.0996 -40.8008h-185.5c-11.2998 0 -20.3994 9.10059 -20.3994 20.4004\ns9.09961 20.4004 20.3994 20.4004h52l66.6006 115.399l-20.8008 36.1006c-5.59961 9.7998 -2.2998 22.1992 7.5 27.8994c9.80078 5.60059 22.2002 2.2998 27.9004 -7.5zM177.2 109.1l-19.6006 -34c-5.59961 -9.7998 -18.0996 -13.0996 -27.8994 -7.5\nc-9.7998 5.60059 -13.1006 18.1006 -7.5 27.9004l14.5996 25.2002c16.4004 5.09961 29.7998 1.2002 40.4004 -11.6006zM346.1 170.8h53.1006c11.2998 0 20.3994 -9.09961 20.3994 -20.3994c0 -11.3008 -9.09961 -20.4004 -20.3994 -20.4004h-29.5l19.8994 -34.5\nc5.60059 -9.7998 2.30078 -22.2002 -7.5 -27.9004c-9.7998 -5.59961 -22.1992 -2.2998 -27.8994 7.5c-33.5 58.1006 -58.7002 101.601 -75.4004 130.601c-17.0996 29.5 -4.89941 59.0996 7.2002 69.0996c13.4004 -23 33.4004 -57.7002 60.0996 -104zM256 440\nc137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM472 192c0 119.9 -97.2998 216 -216 216c-119.9 0 -216 -97.2998 -216 -216c0 -119.9 97.2998 -216 216 -216c119.9 0 216 97.2998 216 216z\" />\n    <glyph glyph-name=\"app-store-ios\" unicode=\"&#xf370;\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM127 63.5l19.2998 33.2998c-10.2998 12.5 -23.5 16.2998 -39.5996 11.4004l-14.2998 -24.7002\nc-5.5 -9.5 -2.30078 -21.7998 7.2998 -27.2998c9.5 -5.5 21.7998 -2.2998 27.2998 7.2998zM265.9 117.4c8.7998 16.2998 -2.5 40 -22.7002 40h-62.1006l85.8008 148.6c5.5 9.5 2.2998 21.7998 -7.30078 27.2998c-9.5 5.5 -21.7998 2.2998 -27.2998 -7.2998\nl-8.89941 -15.4004l-8.90039 15.4004c-5.5 9.5 -17.7002 12.7998 -27.2998 7.2998c-9.5 -5.5 -12.7998 -17.7002 -7.2998 -27.2998l20.5 -35.4004l-65.4004 -113.199h-51c-11 0 -20 -9 -20 -20s9 -20 20 -20h181.9zM364 117.4c11 0 20 8.89941 20 20c0 11 -9 20 -20 20h-52\nc-26.2002 45.2998 -45.7998 79.2998 -58.9004 102c-11.8994 -9.80078 -23.7998 -38.8008 -7.09961 -67.8008c16.5 -28.3994 41.0996 -71.1992 74 -128.1c5.5 -9.5 17.7002 -12.7998 27.2998 -7.2998c9.5 5.5 12.7998 17.7002 7.2998 27.2998l-19.5996 33.9004h29z\" />\n    <glyph glyph-name=\"apper\" unicode=\"&#xf371;\" horiz-adv-x=\"640\" \nd=\"M42.0996 208.9c22.2002 0 29 -2.80078 33.5 -14.6006h0.800781v22.9004c0 11.2998 -4.80078 15.3994 -17.9004 15.3994c-11.2998 0 -14.4004 -2.5 -15.0996 -12.7998h-38.6006c0.299805 13.9004 1.5 19.1006 5.7998 24.4004\nc7.30078 8.7998 18.9004 11.7998 46.1006 11.7998c33 0 47.0996 -5 53.8994 -18.9004c2 -4.2998 4 -15.5996 4 -23.6992v-76.3008h-38.2998l1.2998 19.1006h-1c-5.2998 -15.6006 -13.5996 -20.4004 -35.5 -20.4004c-30.2998 0 -41.0996 10.1006 -41.0996 37.2998\nc0 25.2002 12.2998 35.8008 42.0996 35.8008zM59.2002 160.8c13.0996 0 16.8994 3 16.8994 13.4004c0 9.09961 -4.2998 11.5996 -19.5996 11.5996c-13.0996 0 -17.9004 -3 -17.9004 -12.0996c-0.0996094 -10.4004 3.7002 -12.9004 20.6006 -12.9004zM137 255.7h38.2998\nl-1.5 -20.6006h0.799805c9.10059 17.1006 15.9004 20.9004 37.5 20.9004c14.4004 0 24.7002 -3 31.5 -9.09961c9.80078 -8.60059 12.8008 -20.4004 12.8008 -48.1006c0 -30 -3 -43.0996 -12.1006 -52.8994c-6.7998 -7.30078 -16.3994 -10.1006 -33.2002 -10.1006\nc-20.3994 0 -29.1992 5.5 -33.7998 21.2002h-0.799805v-70.2998h-39.5v169zM217.9 195c0 27.5 -3.30078 32.5 -20.7002 32.5c-16.9004 0 -20.7002 -5 -20.7002 -28.7002c0 -28 3.5 -33.5 21.2002 -33.5c16.3994 0 20.2002 5.60059 20.2002 29.7002zM275.8 255.7h38.2998\nl-1.5 -20.6006h0.800781c9.09961 17.1006 15.8994 20.9004 37.5 20.9004c14.3994 0 24.6992 -3 31.5 -9.09961c9.7998 -8.60059 12.7998 -20.4004 12.7998 -48.1006c0 -30 -3 -43.0996 -12.1006 -52.8994c-6.7998 -7.30078 -16.3994 -10.1006 -33.2998 -10.1006\nc-20.3994 0 -29.2002 5.5 -33.7998 21.2002h-0.799805v-70.2998h-39.5v169h0.0996094zM356.7 195c0 27.5 -3.2998 32.5 -20.7002 32.5c-16.9004 0 -20.7002 -5 -20.7002 -28.7002c0 -28 3.5 -33.5 21.2002 -33.5c16.4004 0 20.2002 5.60059 20.2002 29.7002zM410.5 198.8\nc0 25.4004 3.2998 37.7998 12.2998 45.7998c8.7998 8.10059 22.2002 11.3008 45.1006 11.3008c42.7998 0 55.6992 -12.8008 55.6992 -55.7002v-11.1006h-75.2998c-0.299805 -2 -0.299805 -4 -0.299805 -4.7998c0 -16.8994 4.5 -21.8994 20.0996 -21.8994\nc13.9004 0 17.9004 3 17.9004 13.8994h37.5v-2.2998c0 -9.7998 -2.5 -18.9004 -6.7998 -24.7002c-7.2998 -9.7998 -19.6006 -13.5996 -44.2998 -13.5996c-27.5 0 -41.6006 3.2998 -50.6006 12.2998c-8.5 8.5 -11.2998 21.2998 -11.2998 50.7998zM486.9 210.4\nc-0.300781 1.7998 -0.300781 3.2998 -0.300781 3.7998c0 12.2998 -3.2998 14.5996 -19.5996 14.5996c-14.4004 0 -17.0996 -3 -18.0996 -15.0996l-0.300781 -3.2998h38.3008zM542.5 255.7h38.2998l-1.7998 -19.9004h0.700195\nc6.7998 14.9004 14.3994 20.2002 29.7002 20.2002c10.7998 0 19.0996 -3.2998 23.3994 -9.2998c5.2998 -7.2998 6.7998 -14.4004 6.7998 -34c0 -1.5 0 -5 0.200195 -9.2998h-35c0.299805 1.7998 0.299805 3.2998 0.299805 4c0 15.3994 -2 19.3994 -10.2998 19.3994\nc-6.2998 0 -10.7998 -3.2998 -13.0996 -9.2998c-1 -3 -1 -4.2998 -1 -12.2998v-68h-38.2998v118.5h0.0996094z\" />\n    <glyph glyph-name=\"asymmetrik\" unicode=\"&#xf372;\" horiz-adv-x=\"576\" \nd=\"M517.5 138.8c-13.9004 -14.2998 -30.4004 -27.7002 -48.9004 -39.7998l73.4004 -110.4h-101.6l-45.9004 71.8008c-17.5996 -7.2002 -35.9004 -13.4004 -54.5 -18.7002l32.5996 -53.1006h-135.5l22.8008 37.1006c-23.3008 -2.7002 -46.4004 -3.7002 -68.6006 -2.7002\nl-22 -34.4004h-101.6l34.5 51.7002c-45 17.9004 -68.9004 47.9004 -68.4004 83c0.299805 25.7998 14 54.2998 41.7002 82.9004c38.9004 40 96.5 72.5996 161.6 92.8994c-22.2998 -8.09961 -42 -18.5 -62 -30.6992c-31.1992 -16.2002 -58.6992 -35.9004 -79.5 -58.1006\nc-57.3994 -61 -46.5 -121.8 19.1006 -151.2l190.2 285.5l150.899 -226.399c13 9.5 24.7998 19.7998 35 30.5996c98 104.2 53.7002 207.9 -98.7998 231.7c-68.2998 10.5996 -146.8 5.7002 -221.3 -14.7998c-60.1006 -10 -118.7 -31.7002 -170.7 -58.2002\nc118.1 66.9004 277.9 102.1 406.6 82.4004c110 -16.8008 170.2 -69.5 169.4 -135c-0.400391 -36.1006 -19.7002 -76.1006 -58.5 -116.101zM329.9 58.2998c18.3994 5.2998 36.5 11.7998 53.6992 19.2002l-78.6992 123l-101.9 -159.3\nc22.5 -0.700195 45.7998 0.899414 69.2002 4.39941l32.7002 53.3008z\" />\n    <glyph glyph-name=\"audible\" unicode=\"&#xf373;\" horiz-adv-x=\"640\" \nd=\"M640 248.1v-54l-320 -200l-320 199.9v54l320 -200zM445.5 176.1c-70.7998 94.4004 -200.5 110.7 -290.2 36.3008c-2.59961 -2.2002 -5.2002 -4.40039 -7.7002 -6.7002h-0.299805c37.1006 55.7002 100.601 92.3994 172.601 92.3994s135.5 -36.7998 172.699 -92.5996z\nM225.4 157.3c21 29.6006 55.5 49 94.3994 49c39.2002 0 73.9004 -19.5996 94.7998 -49.5l-45.3994 -28.3994c-21.2002 29.1992 -52 47.5996 -86.4004 47.5996c-20.8994 0 -40.5 -6.7998 -57.3994 -18.7002zM103.6 286.9c-11.5 -9.10059 -24.2998 -22.1006 -34.1992 -32.6006\nc53.8994 82.1006 147 135.601 250.5 135.601c104.899 0 197.199 -54 250.699 -135.7l-48.7998 -30.4004l-0.700195 1c-99.2998 138.5 -285.699 166.4 -417.5 62.1006zM570.6 254.2z\" />\n    <glyph glyph-name=\"avianex\" unicode=\"&#xf374;\" horiz-adv-x=\"512\" \nd=\"M453.1 416c39 0 64.8008 -31.2002 57.8008 -69.7998l-56.7002 -308.5c-7.10059 -38.5 -44.4004 -69.7002 -83.2998 -69.7002h-312c-39 0 -64.8008 31.2002 -57.7002 69.7002l56.5996 308.6c7.10059 38.5 44.4004 69.7002 83.2998 69.7002h312zM394.9 68.7002\nl6.2998 7.89941l-94.9004 119.4l-4.5 7.2998c19.7998 14.2002 33.5 24.2998 35.2998 25.6006c7.90039 6.59961 6.30078 20.7998 -2.69922 31.2998c-9.2002 10.7998 -23 14.3994 -30.7002 7.89941c0 0 -14.4004 -13.5996 -33.7998 -32.3994l-4.90039 4.5l-103.1 112.399\nl-8.90039 -4.7998l-18.7998 -28.8994l68.7998 -99.8008l20.5 -29.5996c-12 -12.2998 -23.5 -24.4004 -32.7998 -34.9004l-58 31.1006l-15.7002 -15.4004l52.4004 -48.0996l40.5996 -61l17.9004 12.7002l-22.1006 64.1992c12.5 7.60059 27 17.1006 41.7002 27.1006\nl115.4 -110z\" />\n    <glyph glyph-name=\"aws\" unicode=\"&#xf375;\" horiz-adv-x=\"640\" \nd=\"M180.41 244.99c-0.719727 -22.6504 10.5996 -32.6807 10.8799 -39.0498c-0.238281 -2.31543 -2.0752 -5.12402 -4.09961 -6.27051l-12.8008 -8.95996c-1.39941 -0.981445 -3.92188 -1.8418 -5.62988 -1.91992c-0.429688 0.0195312 -8.18945 -1.83008 -20.4795 25.6104\nc-13.0283 -16.2627 -40.5127 -29.4609 -61.3496 -29.4609c-0.347656 0 -0.913086 0.00488281 -1.26074 0.0107422c-16.2803 -0.890625 -60.4004 9.24023 -58.1299 56.21c-1.58984 38.2803 34.0596 62.0596 70.9297 60.0498\nc7.10059 -0.0195312 21.6006 -0.370117 46.9902 -6.26953v15.6191c2.69043 26.46 -14.7002 46.9902 -44.8096 43.9102c-2.40039 -0.00976562 -19.4004 0.5 -45.8408 -10.1094c-7.35938 -3.37988 -8.2998 -2.82031 -10.75 -2.82031\nc-7.40918 0 -4.35938 21.4795 -2.93945 24.2002c5.20996 6.39941 35.8604 18.3496 65.9395 18.1797c1.86523 0.165039 4.89844 0.298828 6.77148 0.298828c15.2451 0 37.1611 -7.875 48.9189 -17.5791c9.87305 -11.0439 17.8867 -32.0303 17.8867 -46.8438\nc0 -1.52539 -0.0966797 -3.99609 -0.216797 -5.51562zM93.9902 212.6c32.4297 0.470703 46.1602 19.9707 49.29 30.4707c2.45996 10.0498 2.0498 16.4102 2.0498 27.3994c-9.66992 2.32031 -23.5898 4.85059 -39.5605 4.87012\nc-15.1494 1.14062 -42.8193 -5.62988 -41.7393 -32.2598c-1.24023 -16.79 11.1201 -31.4004 29.96 -30.4805zM264.91 189.55c-7.86035 -0.719727 -11.5205 4.86035 -12.6797 10.3701l-49.8008 164.65c-0.969727 2.7793 -1.60938 5.64941 -1.91992 8.58008\nc-0.0283203 0.189453 -0.0517578 0.5 -0.0517578 0.692383c0 2.18555 1.75195 4.22656 3.91211 4.55762h22.25c8.78027 0.879883 11.6396 -6.03027 12.5498 -10.3701l35.7197 -140.83l33.1602 140.83c0.530273 3.21973 2.94043 11.0693 12.7998 10.2393h17.1602\nc2.16992 0.180664 11.1104 0.5 12.6807 -10.3691l33.4199 -142.631l36.8701 142.631c0.479492 2.17969 2.71973 11.3691 12.6797 10.3691h19.7197c0.850586 0.130859 6.15039 0.810547 5.25 -8.5791c-0.429688 -1.85059 3.41016 10.6592 -52.75 -169.9\nc-1.14941 -5.50977 -4.82031 -11.0898 -12.6797 -10.3701h-18.6904c-10.9395 -1.15039 -12.5098 9.66016 -12.6797 10.75l-33.1602 137.13l-32.7803 -136.99c-0.15918 -1.08984 -1.72949 -11.8994 -12.6797 -10.75h-18.2998v-0.00976562zM538.39 183.92\nc-5.87988 -0.00976562 -33.9199 0.299805 -57.3594 12.29c-4.31152 1.8252 -7.81055 7.10645 -7.81055 11.7891v0.121094v10.75c0 8.4502 6.2002 6.89941 8.83008 5.88965c10.04 -4.05957 16.4805 -7.13965 28.8105 -9.59961\nc36.6494 -7.53027 52.7695 2.2998 56.7197 4.47949c13.1504 7.81055 14.1895 25.6807 5.25 34.9502c-10.4805 8.79004 -15.4805 9.12012 -53.1299 21c-4.64062 1.29004 -43.7002 13.6104 -43.79 52.3604c-0.610352 28.2402 25.0498 56.1797 69.5195 55.9502\nc12.6699 0.00976562 46.4307 -4.13086 55.5703 -15.6201c1.34961 -2.08984 2.01953 -4.5498 1.91992 -7.04004v-10.1104c0 -4.43945 -1.62012 -6.66016 -4.87012 -6.66016c-7.70996 0.860352 -21.3896 11.1699 -49.1602 10.75\nc-6.88965 0.360352 -39.8896 -0.910156 -38.4092 -24.9697c-0.430664 -18.96 26.6094 -26.0703 29.6992 -26.8896c36.46 -10.9707 48.6504 -12.79 63.1201 -29.5801c17.1406 -22.25 7.90039 -48.2998 4.35059 -55.4404\nc-19.0801 -37.4902 -68.4199 -34.4395 -69.2607 -34.4199zM578.59 79.0596c-70.0303 -51.7197 -171.689 -79.25 -258.49 -79.25c-0.853516 -0.00488281 -2.23926 -0.00976562 -3.09277 -0.00976562c-99.5195 0 -240.271 54.0918 -314.177 120.74\nc-6.53027 5.88965 -0.770508 13.96 7.16992 9.46973c81.1748 -46.4336 222.955 -84.1201 316.473 -84.1201h0.407227c69.4072 0.373047 177.64 22.5713 241.59 49.5508c11.7803 5 21.7705 -7.80078 10.1201 -16.3809zM607.78 112.35\nc-8.95996 11.5205 -59.2803 5.38086 -81.8105 2.69043c-6.79004 -0.770508 -7.93945 5.12012 -1.79004 9.46973c40.0703 28.1699 105.88 20.1006 113.44 10.6299c7.5498 -9.46973 -2.0498 -75.4092 -39.5605 -106.909c-5.75977 -4.87012 -11.2695 -2.30078 -8.70996 4.09961\nc8.44043 21.25 27.3906 68.4902 18.4307 80.0195z\" />\n    <glyph glyph-name=\"bimobject\" unicode=\"&#xf378;\" \nd=\"M416 416c17.5996 0 32 -14.4004 32 -32v-384c0 -17.5996 -14.4004 -32 -32 -32h-384c-17.5996 0 -32 14.4004 -32 32v384c0 17.5996 14.4004 32 32 32h384zM352 158.6h-0.0996094v35c0 49.4004 -11.4004 82.5 -103.801 82.5h-17.2998\nc-30 0 -65.0996 -8.2998 -69.7002 -38.7998h-1.09961v74.7002h-64v-232h64v34.7998h0.900391c8 -23.8994 26.2998 -38.7998 70.3994 -38.7998h16.9004c92.3994 0 103.8 33.2002 103.8 82.5996zM288 187.5v-22.9004c0 -21.6992 -3.40039 -33.7998 -38.4004 -33.7998h-45.2998\nc-28.8994 0 -44.0996 6.5 -44.0996 35.7002v19c0 29.2998 15.2002 35.7002 44.0996 35.7002h45.2998c35 0.200195 38.4004 -12 38.4004 -33.7002z\" />\n    <glyph glyph-name=\"bitcoin\" unicode=\"&#xf379;\" horiz-adv-x=\"512\" \nd=\"M504 192c0 -136.967 -111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248s248 -111.033 248 -248zM362.349 227.33c4.9375 32.999 -20.1904 50.7393 -54.5498 62.5732l11.1465 44.7021l-27.2129 6.78027l-10.8516 -43.5234\nc-7.1543 1.78223 -14.502 3.46387 -21.8027 5.12988l10.9287 43.8096l-27.1982 6.78125l-11.1523 -44.6855c-5.92188 1.34863 -11.7354 2.68164 -17.377 4.08398l0.0302734 0.139648l-37.5293 9.37012l-7.23926 -29.0625s20.1914 -4.62695 19.7646 -4.91309\nc11.0225 -2.75098 13.0146 -10.0439 12.6807 -15.8242l-12.6963 -50.9258c0.759766 -0.193359 1.74414 -0.472656 2.8291 -0.90625c-0.907227 0.224609 -1.87598 0.472656 -2.87598 0.712891l-17.7959 -71.3379c-1.34961 -3.34863 -4.76758 -8.37012 -12.4717 -6.46484\nc0.271484 -0.394531 -19.7793 4.9375 -19.7793 4.9375l-13.5107 -31.1475l35.4141 -8.82617c6.58887 -1.65137 13.0449 -3.37988 19.4004 -5.00684l-11.2617 -45.2129l27.1816 -6.78027l11.1533 44.7324c5.96875 -1.61719 15.6846 -4.13867 21.6865 -5.62695\nl-11.1152 -44.5225l27.2139 -6.78125l11.2617 45.1279c46.4043 -8.78125 81.2988 -5.23926 95.9863 36.7266c11.8359 33.79 -0.589844 53.2812 -25.0049 65.9912c17.7803 4.09766 31.1748 15.792 34.7471 39.9492zM300.172 140.151\nc-8.41016 -33.79 -65.3076 -15.5234 -83.7549 -10.9434l14.9443 59.8994c18.4453 -4.60352 77.5996 -13.7178 68.8105 -48.9561zM308.589 227.818c-7.67285 -30.7363 -55.0312 -15.1201 -70.3926 -11.292l13.5479 54.3262\nc15.3633 -3.82715 64.8359 -10.9727 56.8447 -43.0342z\" />\n    <glyph glyph-name=\"bity\" unicode=\"&#xf37a;\" horiz-adv-x=\"496\" \nd=\"M78.4004 380.8c95.3994 89.2002 246.1 91.2002 343.1 -3.7998c14.2998 -14.0996 -6.40039 -37.0996 -22.4004 -21.5c-84.7998 82.4004 -215.8 80.2998 -298.899 3.2002c-16.2998 -15.1006 -36.5 8.2998 -21.7998 22.0996zM177.3 -37.7998\nc-128.7 38.2998 -201.899 170.7 -169.8 298.1c5.2998 21 35.2002 12.5 30.2002 -7.09961c-28.2998 -111.3 35.2998 -227.101 147.5 -261c21.3994 -6.40039 11.3994 -35.7002 -7.90039 -30zM325.4 -35.7998c-19.2002 -6.2998 -30 22.7002 -8.80078 29.7002\nc106.101 35.5 167.4 145.699 143.2 253.399c-4.89941 21.7002 25.5 27.6006 30 7.90039c28.5 -124.101 -42.5 -250.8 -164.399 -291zM262.5 43.2002c0 -8.2002 -6.59961 -14.7998 -14.7998 -14.7998s-14.7998 6.59961 -14.7998 14.7998l0.199219 71.7998\nc0 8.09961 6.60059 14.7998 14.8008 14.7998c8.19922 0 14.7998 -6.59961 14.7998 -14.7998zM333.5 312.2c0 21.7998 32.5 19.5996 32.5 0v-71.6006c0 -69.2998 -60.7002 -90.8994 -118 -90.0996c-57.2998 -0.799805 -118 20.7998 -118 90.0996v71.6006\nc0 19.5996 32.5 21.7998 32.5 0c-1.40039 -88.2002 -7 -131.8 85.5 -132.5c90.2002 0.599609 87.5996 41.5996 85.5 132.5z\" />\n    <glyph glyph-name=\"blackberry\" unicode=\"&#xf37b;\" horiz-adv-x=\"512\" \nd=\"M166 331.1c0 -23.3994 -16.4004 -49.0996 -72.5 -49.0996h-70.0996l21 88.7998h67.7998c42.0996 0 53.7998 -23.2998 53.7998 -39.7002zM292.2 370.8c42.0996 0 53.7998 -23.2998 53.7002 -39.7002c0 -23.3994 -16.3008 -49.0996 -70.1006 -49.0996h-70.0996\nl18.7002 88.7998h67.7998zM88.7998 239.9c42.1006 0 53.7998 -23.4004 53.7998 -39.7002c0 -25.7002 -16.3994 -49.1006 -72.5 -49.1006h-70.0996l21 88.8008h67.7998zM268.9 239.9c42 0 53.6992 -23.4004 53.6992 -39.7002c0 -25.7002 -16.2998 -49.1006 -70.0996 -49.1006\nh-70.0996l18.6992 88.8008h67.8008zM458.2 293.7c42.0996 0 53.7998 -23.4004 53.7002 -39.7002c0 -25.7002 -16.3008 -49.0996 -70.1006 -49.0996h-70.0996l18.7002 88.7998h67.7998zM430.2 155.8c42.0996 0 53.7002 -23.3994 53.7002 -39.7002\nc0 -25.6992 -14 -49.0996 -70.1006 -49.0996h-70.0996l18.7002 88.7998h67.7998zM240.8 102c42.1006 0 53.7998 -23.4004 53.7002 -39.7002c0 -23.3994 -14 -49.0996 -70.0996 -49.0996h-70.1006l18.7002 88.7998h67.7998z\" />\n    <glyph glyph-name=\"blogger\" unicode=\"&#xf37c;\" \nd=\"M162.4 252c4.7998 4.90039 6.19922 5.09961 36.3994 5.09961c27.2002 0 28.1006 -0.0996094 32.1006 -2.09961c5.7998 -2.90039 8.2998 -7 8.2998 -13.5996c0 -5.90039 -2.40039 -10 -7.60059 -13.4004c-2.7998 -1.7998 -4.5 -1.90039 -31.0996 -2.09961\nc-16.4004 -0.100586 -29.5 0.199219 -31.5 0.799805c-10.2998 2.89941 -14.0996 17.7002 -6.59961 25.2998zM223.8 157.5c55.4004 0 55.1006 0 60.4004 -4.7002c7.39941 -7 5.89941 -19.2998 -3.10059 -24.3994l-9.19922 -1.5l-47.9004 -0.600586\nc-42.2002 -0.5 -54.0996 0.200195 -56.2998 1.2002c-4.40039 1.90039 -8.5 7.2998 -9.2002 12c-0.599609 4.5 1.59961 10.7998 5.09961 13.9004c4.40039 3.89941 6.30078 4.09961 60.2002 4.09961zM447.2 27.4004c-3.5 -28.4004 -23 -50.4004 -51.1006 -57.5\nc-7.19922 -1.80078 -9.69922 -1.90039 -172.899 -1.80078c-157.8 0 -165.9 0.100586 -172 1.80078c-8.40039 2.19922 -15.6006 5.5 -22.2998 10c-5.60059 3.7998 -13.9004 11.7998 -17 16.3994c-3.80078 5.60059 -8.2002 15.2998 -10 22\nc-1.80078 6.7002 -1.90039 9.40039 -1.90039 173.4c0 163.1 0 166.6 1.7998 173.7c6.2998 24.6992 25.9004 43.5996 51.2002 49.1992c7.2998 1.60059 332.1 1.90039 340 0.300781c21.2002 -4.30078 37.9004 -17.1006 47.5996 -36.4004c7.7002 -15.2998 7 1.5 7.30078 -180.6\nc0.199219 -115.801 0 -164.5 -0.700195 -170.5zM361.8 212.6c-1.09961 5 -4.2002 9.60059 -7.7002 11.5c-1.09961 0.600586 -8 1.30078 -15.5 1.7002c-12.3994 0.600586 -13.7998 0.799805 -17.7998 3.10059c-6.2002 3.59961 -7.89941 7.59961 -8 18.2998\nc0 20.3994 -8.5 39.3994 -25.2998 56.5c-12 12.2002 -25.2998 20.5 -40.5996 25.0996c-3.60059 1.10059 -11.8008 1.5 -39.2002 1.7998c-42.9004 0.5 -52.5 -0.399414 -67.1006 -6.19922c-27 -10.7002 -46.2998 -33.4004 -53.3994 -62.4004\nc-1.2998 -5.40039 -1.60059 -14.2002 -1.90039 -64.2998c-0.399414 -62.7998 0 -72.1006 4 -84.5c9.7002 -30.7002 37.1006 -53.4004 64.6006 -58.4004c9.19922 -1.7002 122.199 -2.09961 133.699 -0.5c20.1006 2.7002 35.9004 10.7998 50.7002 25.9004\nc10.7002 10.8994 17.4004 22.7998 21.7998 38.5c3.2002 10.8994 2.90039 88.3994 1.7002 93.8994z\" />\n    <glyph glyph-name=\"blogger-b\" unicode=\"&#xf37d;\" \nd=\"M446.6 225.3c2 -8.89941 2.40039 -134.1 -2.5 -151.7c-7.09961 -25.2998 -17.8994 -44.3994 -35.1992 -62.0996c-23.9004 -24.4004 -49.4004 -37.5 -81.9004 -41.9004c-18.7002 -2.5 -201.2 -1.89941 -216 0.800781c-44.5 8 -88.7998 44.6992 -104.4 94.2998\nc-6.2998 20.0996 -7 35 -6.39941 136.5c0.5 81 1 95.0996 3.09961 103.899c11.4004 46.8008 42.6006 83.4004 86.1006 100.601c23.5996 9.39941 39 10.7998 108.399 10c44.2002 -0.5 57.4004 -1.10059 63.2998 -2.90039c24.6006 -7.5 46.2002 -20.7998 65.5 -40.5\nc27.1006 -27.5996 40.8008 -58.2998 40.9004 -91.2998c0.0996094 -17.2002 2.7998 -23.5996 12.9004 -29.5c6.39941 -3.7002 8.59961 -4.09961 28.6992 -5c12 -0.5 23.2002 -1.7002 25 -2.7002c5.7002 -3.09961 10.7002 -10.5 12.5 -18.5zM124.5 288.9\nc-12.2002 -12.3008 -6 -36.1006 10.5996 -40.8008c3.10059 -0.799805 24.3008 -1.39941 50.8008 -1.19922c43 0.199219 45.6992 0.399414 50.2998 3.2998c8.5 5.39941 12.2998 12.0996 12.2998 21.5996c0 10.6006 -4.09961 17.2002 -13.4004 21.9004\nc-6.39941 3.2998 -7.89941 3.39941 -51.7998 3.39941c-48.7998 0 -51 -0.299805 -58.7998 -8.19922zM316.3 89.0996c14.4004 8.2002 17 28.1006 4.90039 39.4004c-8.5 7.90039 -8 7.90039 -97.6006 7.7998c-87.0996 -0.0996094 -90.1992 -0.299805 -97.2998 -6.7002\nc-5.59961 -5.09961 -9.2998 -15.0996 -8.2002 -22.3994c1.10059 -7.7002 7.80078 -16.2998 14.9004 -19.4004c3.59961 -1.59961 22.7998 -2.7998 90.9004 -2l77.5 0.900391z\" />\n    <glyph glyph-name=\"buromobelexperte\" unicode=\"&#xf37f;\" \nd=\"M0 416h128v-128h-128v128zM120 296v112h-112v-112h112zM160 416h128v-128h-128v128zM280 296v112h-112v-112h112zM320 416h128v-128h-128v128zM440 296v112h-112v-112h112zM0 256h128v-128h-128v128zM120 136v112h-112v-112h112zM160 256h128v-128h-128v128zM280 136v112\nh-112v-112h112zM320 256h128v-128h-128v128zM440 136v112h-112v-112h112zM0 96h128v-128h-128v128zM120 -24v112h-112v-112h112zM160 96h128v-128h-128v128zM280 -24v112h-112v-112h112zM320 96h128v-128h-128v128z\" />\n    <glyph glyph-name=\"centercode\" unicode=\"&#xf380;\" horiz-adv-x=\"512\" \nd=\"M329.2 179.4c-3.7998 -35.2002 -35.4004 -60.6006 -70.6006 -56.8008c-35.1992 3.80078 -60.5996 35.4004 -56.7998 70.6006s35.4004 60.5996 70.6006 56.7998c35.0996 -3.7998 60.5996 -35.4004 56.7998 -70.5996zM243.4 -55.7002\nc-146.7 7.7002 -251.601 138.2 -233.301 279.4c11.2002 86.5996 65.8008 156.899 139.101 192c161 77.0996 349.7 -37.4004 354.7 -216.601c4.09961 -147 -118.4 -262.199 -260.5 -254.8zM423.3 124.3c27.9004 118 -160.5 205.9 -237.2 234.2\nc-57.5 -56.2998 -69.0996 -188.6 -33.7998 -344.4c68.7998 -15.7998 169.101 26.4004 271 110.2z\" />\n    <glyph glyph-name=\"cloudscale\" unicode=\"&#xf383;\" \nd=\"M318.1 294c6.2002 6.2998 15.8008 -3.09961 9.5 -9.59961l-75.1992 -88.8008c0.899414 -8.19922 -1.80078 -16.7998 -8.10059 -23.0996c-11.0996 -11 -28.8994 -11 -40 0c-11.0996 11.0996 -11.0996 29 0 40c6.2998 6.2998 14.7998 9 23.1006 8.09961l25.1992 20.4004\nc-16.3994 15.2998 -38.3994 24.7002 -62.5996 24.7002c-50.7998 0 -94.5996 -41.4004 -92.5996 -97.4004c-1 6.2998 -1.40039 12.7998 -1.40039 19.4004c0 71.5 57.7998 132.3 129.4 132.3c31.7998 0 60.7998 -14.2998 83.2998 -33.5996zM234.3 182.5\nc5.60059 5.5 5.60059 14.5996 0 20.2002c-5.59961 5.59961 -14.5996 5.59961 -20.2002 0c-5.59961 -5.60059 -5.59961 -14.6006 0 -20.2002c5.60059 -5.5 14.6006 -5.5 20.2002 0zM224 416c123.5 0 224 -100.5 224 -224s-100.5 -224 -224 -224s-224 100.5 -224 224\ns100.5 224 224 224zM224 32c88.2002 0 160 71.7998 160 160s-71.7998 160 -160 160s-160 -71.7998 -160 -160s71.7998 -160 160 -160z\" />\n    <glyph glyph-name=\"cloudsmith\" unicode=\"&#xf384;\" horiz-adv-x=\"332\" \nd=\"M332.5 28.0996c0 -46.3994 -37.5996 -84.0996 -84 -84.0996s-84 37.7002 -84 84.0996c0 46.4004 37.5996 84 84 84s84 -37.5996 84 -84zM248.5 272c-46.4004 0 -80 -33.5996 -80 -80s-37.5996 -80 -84 -80s-84 33.5996 -84 80s37.5996 88 84 88s76 29.5996 76 76\ns41.5996 84 88 84s80 -37.5996 80 -84s-33.5996 -84 -80 -84z\" />\n    <glyph glyph-name=\"cloudversify\" unicode=\"&#xf385;\" horiz-adv-x=\"616\" \nd=\"M148.6 144v-0.0996094h-48.8994c-6.40039 0 -11.7002 5.39941 -11.7002 11.7998v40.3994c0 7.60059 7 11.9004 10.7998 11.9004h46.7998v-6.59961c0 -10.7002 8.80078 -16.7002 19.5 -16.7002h20.2002c10.7998 0 19.5 8.7998 19.5 19.5v20.3994\nc0 10.6006 -3.5 19.5 -15.2002 19.5c18.5 15.2002 37.2002 21.4004 45 24.1006c15 56.5 42 92.3994 99.3008 109.7c55.0996 16.5 153.5 3.09961 186.5 -85c73.8994 -22.6006 106.899 -92.6006 92.0996 -155.101c-13 -54.8994 -62.2998 -100.6 -131.5 -99.5\nc-49.5996 -51.3994 -135.2 -48.8994 -186.4 -5.59961c-78.5996 -4.2002 -137.8 42.7998 -146 111.3zM376 136c8.7002 -54.0996 59.7002 -65.5 91.7998 -59.2002c39.1006 7.7002 70.5 37.5 79.7002 76.5c5.7998 24.4004 2.40039 50 -9.40039 72l-10.5 19.6006\nc1.2002 -22.5 -12.5 -60.6006 -47.5 -76.9004c65.5 67.7002 2.10059 141.2 -67.6992 150.5c-49.8008 6.59961 -83.3008 -13 -114.2 -43.7002c48 -4.7002 87.7002 -26.7998 101.8 -74.7998c-30.0996 49.2998 -103 56.5996 -133.6 40.7998\nc-35.5 -18.2002 -60 -54 -57 -93.8994c3.59961 -47.4004 39.5 -67.4004 57.3994 -79.8008c-4.5 21.7002 -4 71.3008 29.2002 92.9004c-36.2998 -60 28.0996 -144.6 135.3 -110.8c-33.5996 14.3994 -66 40.5 -55.2998 86.7998zM128 240h-39.7998\nc-8.90039 0 -16.2002 7.2998 -16.2002 16.2002v39.5996c0 8.90039 7.2998 16.2002 16.2002 16.2002h39.7998c8.90039 0 16.2002 -7.2998 16.2002 -16.2002v-39.5996c0 -8.90039 -7.2998 -16.2002 -16.2002 -16.2002zM10.0996 280c-5.59961 0 -10.0996 4.5 -10.0996 10.0996\nv27.8008c0 5.59961 4.5 10.0996 10.0996 10.0996h27.7002c5.5 0 10.1006 -4.5 10.1006 -10.0996v-27.8008c0 -5.59961 -4.5 -10.0996 -10.1006 -10.0996h-27.7002zM168 305.3v21.4004c0 5.09961 4.2002 9.2998 9.2998 9.2998h21.4004\nc5.09961 0 9.2998 -4.2002 9.2998 -9.2998v-21.4004c0 -5.09961 -4.2002 -9.2998 -9.2998 -9.2998h-21.4004c-5.09961 0 -9.2998 4.2002 -9.2998 9.2998zM56 212.5v-25c0 -6.2998 -5.09961 -11.5 -11.4004 -11.5h-25.1992c-6.30078 0 -11.4004 5.2002 -11.4004 11.5v25\nc0 6.2998 5.09961 11.5 11.4004 11.5h25.0996c6.40039 0 11.5 -5.2002 11.5 -11.5z\" />\n    <glyph glyph-name=\"cpanel\" unicode=\"&#xf388;\" horiz-adv-x=\"640\" \nd=\"M210.3 227.8c6.60059 -29.0996 -14.5 -65.2998 -51.7002 -65.2998h-32l6.40039 23.7998c1.7998 6.2002 7.2998 10.7998 14.2998 10.7998h10.2998c12.4004 0 20.8008 11.7002 18.3008 22.6006c-2.10059 9.2002 -9.90039 14.7998 -18.3008 14.7998h-19.7998\nl-25.7998 -95.7002c-1.90039 -6.2002 -7.40039 -10.7002 -14.2002 -10.7002l-24.7002 -0.0996094l34.9004 130.1c1.7998 6.40039 7.2002 10.9004 14.2998 10.9004h37c24.1006 0 45.4004 -16.4004 51 -41.2002zM53.7998 199.8c-24.8994 0 -24.7002 -37.3994 0 -37.3994\nh11.2998c4.2002 0 7.60059 -3.90039 6.40039 -8.30078l-7.09961 -26.0996h-12.4004c-33.5 0 -59 31.4004 -50.2998 65.2002c7.2998 27 28.2998 41.0996 51.2002 41.0996h40l-6.2002 -23.5996c-1.90039 -6.5 -7.40039 -10.9004 -14.2998 -10.9004h-18.6006zM301.3 234.6\nc18.7998 0 33.2998 -17.5996 28.5 -36.7998l-14 -51.7998c-2.7998 -10.5996 -12.2002 -17.7998 -23.3994 -17.7998l-57.5 0.200195c-42.9004 0 -38.5 63.7998 0.699219 63.7998h48.4004l-3.5 -13.2002c-1.90039 -6.2002 -7.40039 -10.7998 -14.2002 -10.7998h-21.5996\nc-5.2998 0 -5.2998 -7.90039 0 -7.90039h34.8994c4.60059 0 5.10059 3.90039 5.5 5.2998l8.60059 31.8008c0.299805 1 1.89941 5.2998 -2.10059 5.2998h-57.5c-9.69922 0 -16.5996 8.89941 -14.1992 18.5l3.5 13.3994h77.8994zM633.1 269c4.5 0 7.7002 -4 6.5 -8.2998\nl-26.5 -98.2002c-5.09961 -20.7002 -24.1992 -34.5 -44.8994 -34.5l35.5996 133.1c1.2002 4.7002 5.5 7.90039 10.4004 7.90039h18.8994zM396.8 234.3c34.4004 0 59.2998 -32.2998 50.2998 -65.3994l-8.7998 -33.1006c-1.2002 -4.89941 -5.7002 -7.7998 -10.2998 -7.7998\nh-19.0996c-4.5 0 -7.60059 4 -6.40039 8.2998l10.5996 40c3.30078 11.6006 -5.59961 23.4004 -18.0996 23.4004h-19.7998l-17.2002 -64c-1.2002 -4.7998 -5.59961 -7.7998 -10.4004 -7.7998h-18.8994c-4.2002 0 -7.60059 3.89941 -6.40039 8.2998l26.2002 98h48.2998\nv0.0996094zM495.1 159.7h73.3008l-5.7002 -21c-1.90039 -6.2002 -7.40039 -10.7002 -14.2002 -10.7002h-66.7002c-20 0 -33.2998 19 -28.2998 36.7002l10.7998 40c4.7998 17.5996 20.7002 29.5996 38.6006 29.5996h47.2998c19 0 33.2002 -17.7002 28.2998 -36.7998\nl-3.2002 -12c-2.89941 -11 -12.7002 -17.5996 -23.2002 -17.5996h-53.3994l3.5 13c1.59961 6.19922 7.2002 10.7998 14.2002 10.7998h21.5996c2 0 3.2998 1 3.90039 3l0.699219 2.59961c0.700195 2.7002 -1.2998 5.10059 -3.89941 5.10059h-32.9004\nc-4.09961 0 -6.89941 -2.10059 -7.7998 -6l-8 -30c-0.900391 -3.30078 1.5 -6.7002 5.09961 -6.7002z\" />\n    <glyph glyph-name=\"css3-alt\" unicode=\"&#xf38b;\" horiz-adv-x=\"384\" \nd=\"M0 416h384l-34.9004 -395.8l-157.1 -52.2002l-157.1 52.2002zM313.1 336h-242.199l5.7998 -47.2998h122.899l-6.5 -2.7002l-112.1 -46.7002l3.59961 -46.2998l0.200195 0.0996094v-0.0996094l166.3 -0.5l-3.69922 -61.5996l-54.7002 -15.4004l-52.6006 13.2998\nl-3.19922 38.2998h-48.9004l6.40039 -73.8994l98.7998 -29.2002l98.2002 28.7002l12.7998 146.6h-111.5l0.299805 0.100586l115.3 49.2998z\" />\n    <glyph glyph-name=\"cuttlefish\" unicode=\"&#xf38c;\" horiz-adv-x=\"440\" \nd=\"M344 142.5c13.7002 -50.9004 41.7002 -93.2998 87 -117.8c-45.2998 -49.6006 -110.5 -80.7002 -183 -80.7002c-137 0 -248 111 -248 248s111 248 248 248c72.5 0 137.7 -31.0996 183 -80.7002c-45.2998 -24.5 -73.2998 -66.8994 -87 -117.8\nc-17.5 31.5996 -57.4004 54.5 -96 54.5c-56.5996 0 -104 -47.4004 -104 -104s47.4004 -104 104 -104c38.5996 0 78.5 22.9004 96 54.5z\" />\n    <glyph glyph-name=\"d-and-d\" unicode=\"&#xf38d;\" horiz-adv-x=\"576\" \nd=\"M82.5 349.1c-0.599609 17.2002 2 33.8008 12.7002 48.2002c0.299805 -7.39941 1.2002 -14.5 4.2002 -21.5996c5.89941 27.5 19.6992 49.2998 42.2998 65.5c-1.90039 -5.90039 -3.5 -11.7998 -3 -17.7002c8.7002 7.40039 18.7998 17.7998 44.3994 22.7002\nc14.7002 2.7998 29.7002 2 42.1006 -1c38.5 -9.2998 61 -34.2998 69.7002 -72.2998c5.2998 -23.1006 0.699219 -45 -8.30078 -66.4004c-5.19922 -12.4004 -12 -24.4004 -20.6992 -35.0996c-2 1.89941 -3.90039 3.7998 -5.80078 5.59961\nc-42.7998 40.7998 -26.7998 25.2002 -37.3994 37.4004c-1.10059 1.19922 -1 2.19922 -0.100586 3.59961c8.30078 13.5 11.8008 28.2002 10 44c-1.09961 9.7998 -4.2998 18.9004 -11.2998 26.2002c-14.5 15.2998 -39.2002 15 -53.5 -0.600586\nc-11.3994 -12.5 -14.0996 -27.3994 -10.8994 -43.5996c0.199219 -1.2998 0.399414 -2.7002 0 -3.90039c-3.40039 -13.6992 -4.60059 -27.5996 -2.5 -41.5996c0.0996094 -0.5 0.0996094 -1.09961 0.0996094 -1.59961c0 -0.300781 -0.0996094 -0.5 -0.200195 -1.10059\nc-21.7998 11 -36 28.2998 -43.2002 52.2002c-8.2998 -17.7998 -11.0996 -35.5 -6.59961 -54.0996c-15.5996 15.1992 -21.2998 34.2998 -22 55.1992zM552.1 225.9c0.5 -0.600586 1.2002 -1 1.7002 -1.40039v-0.5c-15 3.59961 -29.7998 1.7998 -44.5 -1.2998\nc-9.2998 -2 -18.2998 -4.7002 -26.7002 -9c-2.89941 -1.5 -5.69922 -3.2998 -8 -4.7002c-5.7998 2.40039 -11.2998 5.5 -17.1992 6.7998c-24.5 5.2998 -45.8008 -1.2002 -62.5 -20c-19.7002 -22.2002 -34.5 -47.5996 -46.7002 -74.5l-1.2002 -2.7002\nc-0.0996094 -0.199219 -0.200195 -0.299805 -0.400391 -0.399414c-12.0996 8.2998 -21.5996 20.2998 -36.0996 25.5996c0.299805 0.400391 0.400391 0.900391 0.700195 1.2998c20.5996 28.2002 44.8994 52.5 75.0996 70.4004c16 9.5 33 16.0996 51.5 18.5\nc1.7998 0.200195 3.5 0.400391 5.2998 1.09961c-4.39941 0 -8.7998 0.300781 -13.0996 -0.0996094c-21.2002 -1.90039 -40.5 -9.59961 -58.7002 -20.2002c-13.7998 -8 -26.2002 -17.7002 -36.5996 -29.7998c-0.400391 -0.5 -0.600586 -1.09961 -0.900391 -1.7002\nc-0.299805 0.299805 -0.700195 0.600586 -1 0.900391c11 30.8994 30.7002 55 57.7002 73.2998c0.200195 -0.200195 0.5 -0.299805 0.700195 -0.5c-1.2002 -1.7002 -2.5 -3.2998 -3.5 -5.09961c-1.7998 -3.30078 -3.7002 -6.5 -5.10059 -10\nc-1.7998 -4.30078 1.60059 -8.60059 12 -0.5c18.2002 14.0996 29.6006 26.2998 48.9004 29.5996c0.700195 0.0996094 1.2998 0.299805 1.90039 0.299805h2.5c-1 -0.700195 -1.60059 -1.09961 -2.2002 -1.5c-11.6006 -7.7998 -11.7998 -7.39941 -15 -12\nc-2.60059 -3.7002 -0.200195 -8 4.7002 -6.7998c2.59961 0.599609 5.19922 1.2998 7.69922 2.2002c9.40039 3.2998 19 5.7998 29 6.39941c13.9004 0.800781 27.1006 -1.89941 39.9004 -7.09961c15.0996 -6.2002 28.5 -15 40.0996 -26.5996zM316.7 50.4004\nc1.5 -1.30078 1.89941 -2.40039 0.899414 -4.2002c-25.2998 -50.2002 -61.0996 -89.1006 -116 -98.7998c-26.7998 -4.7002 -52.8994 -2.7002 -77.8994 8.59961c-18.5 8.2002 -34.6006 19.5996 -47.2002 35.5996c-2 2.60059 -3.7002 5.40039 -5.90039 8.60059\nc-0.699219 -7.7998 0.100586 -14.9004 1.5 -21.9004c-0.199219 -0.200195 -0.399414 -0.299805 -0.599609 -0.5c-3.2002 3.40039 -6.59961 6.60059 -9.5 10.2998c-12.2002 15.5 -19.5 33.3008 -24.0996 52.3008c-11.8008 48.2998 -0.5 78.7998 7.7998 101.1\nc-8.7002 -4.7998 -16.2002 -10.2998 -23.6006 -16.2002c11.6006 32.7998 31.9004 59.9004 56.1006 84.6006c2.39941 -2.10059 3.2998 -4.7002 3 -7.40039c-0.200195 -1 -5.90039 -38.9004 -5.60059 -44.7002c18.9004 18.9004 40.5 33.2998 64.8008 43.9004\nc-7.5 -11.1006 -11 -23.4004 -11.8008 -37.2998c13.4004 12.1992 27.7002 20.0996 46.4004 13.8994c-8.5 -9.09961 -30.7998 -30.5 -38.5996 -64.2998c-5.10059 -21.9004 -3.80078 -43.0996 8.19922 -62.5996c11.2002 -18.3008 27.8008 -27.8008 49.4004 -27.8008\nc12.5996 0 23.7998 5 34.0996 11.8008c18.5 12.2998 32.8008 28.5 44 47.5996c1.90039 3.2002 1.10059 2.09961 1.90039 3c19.9004 -16.0996 3.2998 -2.59961 42.7002 -35.5996zM488.7 96.7998c20.2002 -6.59961 35.5 -18.7998 43.7998 -38.8994\nc9.2002 -23.1006 2.09961 -49.4004 -17.4004 -66c-16.3994 -14 -35.6992 -19.2002 -57 -17.4004c-0.599609 0 -1.19922 0 -1.89941 -0.299805c15.0996 -10.7002 31.5996 -15.2002 50.8994 -10.6006c-2.19922 -2.39941 -3.89941 -4.69922 -5.89941 -6.5\nc-12.2998 -10.8994 -26.9004 -16.8994 -42.9004 -19.7998c-39.5996 -7.2998 -75.5996 12.7998 -85 56.9004c-0.5 2.09961 -0.599609 4.2002 -0.899414 6.39941c-10.8008 -8.19922 -16.4004 -34.0996 -0.700195 -52.2998c-1.60059 0.5 -2.60059 0.700195 -3.60059 1.10059\nc-21.2998 8.2998 -34.3994 28.2998 -33.5 51.1992c0.900391 23.2002 4.90039 41 -13 56c-16.5 13.8008 -33 27.4004 -49.5 41.1006c-8.09961 6.7002 -14.7998 14.5 -17 25.0996c-1 4.60059 -1.39941 9.40039 -1.7998 14.1006c-0.5 6.09961 -3.2998 11 -7.89941 14.7998\nc-4.5 3.89941 -9.30078 7.39941 -13.8008 11.2002c-8.89941 7.5 -12.2998 18.8994 -7.2998 29.8994c2.7998 -12.8994 9.60059 -18.8994 22.6006 -20.2998c4.39941 -0.5 8.89941 -0.799805 13.2998 -1.5c8.09961 -1.2002 12.7998 -6.09961 14.2998 -14.2002\nc0.700195 -3.39941 1.2998 -6.7998 2.2002 -10.2002c1.59961 -5.59961 4.5 -8 10.3994 -8.39941c4.60059 -0.299805 9.30078 -0.5 13.9004 -0.900391c7.59961 -0.599609 14.2002 -3.7998 20.0996 -8.7002c19.4004 -16.1992 39 -32.1992 58.5 -48.2998\nc5.7002 -4.7002 12 -8.2002 19.6006 -8.5c16.7002 -0.599609 29 15.2002 24.7998 31.7998c-0.200195 0.700195 -0.400391 1.5 -0.0996094 2.80078c2.39941 -2 4.89941 -3.80078 7 -5.90039c14.0996 -14 18.0996 -39.2998 8.69922 -56.0996\nc-2.09961 -3.80078 -5.2998 -7.10059 -8.09961 -10.8008c0.700195 -0.199219 1.7998 -0.5 3 -0.599609c14 -1.40039 27.2002 1 38.9004 9.09961c15.7998 10.9004 18 31.2002 5.39941 45.6006c-4.7002 5.39941 -8.89941 8 -18.7998 12\nc6.5 1.2998 19.2002 0.200195 28.7002 -2.90039zM99.4004 268.7c-5.30078 9.2002 -13.2002 15.5996 -22.1006 21.2998c13.7002 0.5 26.6006 -0.200195 39.6006 -3.7002c-7 12.2002 -8.5 24.7002 -5 38.7002c5.2998 -11.9004 13.6992 -20.0996 23.5996 -26.7998\nc19.7002 -13.2002 35.7002 -19.6006 46.7002 -30.2002c3.39941 -3.2998 6.2998 -7.09961 9.59961 -10.9004c-0.799805 2.10059 -1.39941 4.10059 -2.2002 6c-5 10.6006 -13 18.6006 -22.5996 25c-1.7998 1.2002 -2.7998 2.5 -3.40039 4.5\nc-3.2998 12.5 -3 25.1006 -0.699219 37.6006c1 5.5 2.7998 10.8994 4.5 16.2998c0.799805 2.40039 2.2998 4.59961 4 6.59961c0.599609 -6.89941 0 -25.5 19.5996 -46c10.7998 -11.2998 22.4004 -21.8994 33.9004 -32.6992c9 -8.5 18.2998 -16.7002 25.5 -26.8008\nc1.09961 -1.59961 2.19922 -3.2998 3.7998 -4.69922c-5 13 -14.2002 24.0996 -24.2002 33.7998c-9.59961 9.2998 -19.4004 18.3994 -29.2002 27.3994c-3.2998 3 -4.59961 6.7002 -5.09961 10.9004c-1.2002 10.4004 0 20.5996 4.2998 30.2002c0.5 1 1.09961 2 1.90039 3.2998\nc0.5 -4.2002 0.599609 -7.90039 1.39941 -11.5996c4.7998 -23.1006 20.4004 -36.3008 49.2998 -63.5c10 -9.40039 19.3008 -19.2002 25.6006 -31.6006c4.7998 -9.2998 7.2998 -19 5.7002 -29.5996c-0.100586 -0.600586 0.5 -1.7002 1.09961 -2\nc6.2002 -2.60059 10 -6.90039 9.7002 -14.2998c7.7002 2.59961 12.5 8 16.3994 14.5c4.2002 -20.2002 -9.09961 -50.3008 -27.1992 -58.7002c0.399414 4.5 5 23.3994 -16.5 27.7002c-6.80078 1.2998 -12.8008 1.2998 -22.9004 2.09961c4.7002 9 10.4004 20.5996 0.5 22.4004\nc-24.9004 4.59961 -52.7998 -1.90039 -57.7998 -4.60059c8.2002 -0.399414 16.2998 -1 23.5 -3.2998c-2 -6.5 -4 -12.7002 -5.7998 -18.9004c-1.90039 -6.5 2.09961 -14.5996 9.2998 -9.59961c1.2002 0.900391 2.2998 1.90039 3.2998 2.7002\nc-3.09961 -17.9004 -2.90039 -15.9004 -2.7998 -18.2998c0.299805 -10.2002 9.5 -7.80078 15.7002 -7.30078c-2.5 -11.7998 -29.5 -27.2998 -45.4004 -25.7998c7 4.7002 12.7002 10.2998 15.9004 17.9004c-6.5 -0.799805 -12.9004 -1.60059 -19.2002 -2.40039\nl-0.299805 0.900391c4.69922 3.39941 8 7.7998 10.1992 13.0996c8.7002 21.1006 -3.59961 38 -25 39.9004c-9.09961 0.799805 -17.7998 -0.799805 -25.8994 -5.5c6.2002 15.5996 17.2002 26.5996 32.5996 34.5c-15.2002 4.2998 -8.89941 2.7002 -24.5996 6.2998\nc14.5996 9.2998 30.2002 13.2002 46.5 14.5996c-5.2002 3.2002 -48.1006 3.60059 -70.2002 -20.8994c7.90039 -1.40039 15.5 -2.7998 23.2002 -4.2002c-23.7998 -7 -44 -19.7002 -62.4004 -35.5996c1.10059 4.7998 2.7002 9.5 3.2998 14.2998\nc0.600586 4.5 0.800781 9.2002 0.100586 13.5996c-1.5 9.40039 -8.90039 15.1006 -19.7002 16.2998c-7.90039 0.900391 -15.5996 -0.0996094 -23.2998 -1.2998c-0.900391 -0.0996094 -1.7002 -0.299805 -2.90039 0c15.7998 14.7998 36 21.7002 53.1006 33.5\nc6 4.5 6.7998 8.2002 3 14.9004zM227.8 241.9c3.2998 -16 12.6006 -25.5 23.7998 -24.3008c-4.59961 11.3008 -12.0996 19.5 -23.7998 24.3008z\" />\n    <glyph glyph-name=\"deploydog\" unicode=\"&#xf38e;\" horiz-adv-x=\"512\" \nd=\"M382.2 312h51.7002v-239.6h-51.7002v20.6992c-19.7998 -24.7998 -52.7998 -24.0996 -73.7998 -14.6992c-26.2002 11.6992 -44.3008 38.0996 -44.3008 71.7998c0 29.7998 14.8008 57.8994 43.3008 70.7998c20.1992 9.09961 52.6992 10.5996 74.7998 -12.9004v103.9z\nM317.5 150.2c0 -18.2002 13.5996 -33.5 33.2002 -33.5c19.7998 0 33.2002 16.3994 33.2002 32.8994c0 17.1006 -13.7002 33.2002 -33.2002 33.2002c-19.6006 0 -33.2002 -16.3994 -33.2002 -32.5996zM188.5 312h51.7002v-239.6h-51.7002v20.6992\nc-19.7998 -24.7998 -52.7998 -24.0996 -73.7998 -14.6992c-26.2002 11.6992 -44.2998 38.0996 -44.2998 71.7998c0 29.7998 14.7998 57.8994 43.2998 70.7998c20.2002 9.09961 52.7002 10.5996 74.7998 -12.9004v103.9zM123.8 150.2c0 -18.2002 13.6006 -33.5 33.2002 -33.5\nc19.7998 0 33.2002 16.3994 33.2002 32.8994c0 17.1006 -13.7002 33.2002 -33.2002 33.2002c-19.7002 0 -33.2002 -16.3994 -33.2002 -32.5996zM448 352h-384c-17.5996 0 -32 -14.5 -32 -32v-256c0 -17.5996 14.5 -32 32 -32h384c17.5996 0 32 14.5 32 32v256\nc0 17.5996 -14.5 32 -32 32zM448 384c35.2002 0 64 -28.7998 64 -64v-256c0 -35.2002 -28.7998 -64 -64 -64h-384c-35.2002 0 -64 28.7998 -64 64v256c0 35.2002 28.7998 64 64 64h384z\" />\n    <glyph glyph-name=\"deskpro\" unicode=\"&#xf38f;\" horiz-adv-x=\"480\" \nd=\"M205.9 -64l31.0996 38.4004c12.2998 0.199219 25.5996 1.39941 36.5 6.59961c38.9004 18.5996 38.4004 61.9004 38.2998 63.7998c-0.0996094 5 -0.799805 4.40039 -28.8994 37.4004h79.0996c-0.200195 -50.1006 -7.2998 -68.5 -10.2002 -75.7002\nc-9.39941 -23.7002 -43.8994 -62.7998 -95.2002 -69.4004c-8.69922 -1.09961 -32.7998 -1.19922 -50.6992 -1.09961zM406.3 103.7l-119.2 -0.100586l17.4004 31.3008l175.5 -0.300781c-15.2002 -17.2998 -35.0996 -30.8994 -73.7002 -30.8994zM362.7 327.6v-168.3h-73.5\nl-32.7002 -55.5h-6.5c-52.2998 0 -58.0996 56.5 -58.2998 58.9004c-1.2002 13.2002 -21.2998 11.5996 -20.1006 -1.7998c1.40039 -15.8008 8.80078 -40 26.4004 -57.1006h-91c-25.5 0 -110.8 26.7998 -107 114v213.3c0 16 9.7002 16.6006 15 16.8008h82\nc0.200195 0 0.299805 -0.100586 0.5 -0.100586c4.2998 0.400391 50.0996 2.10059 50.0996 -43.7002c0 -13.2998 20.2002 -13.3994 20.2002 0c0 18.2002 -5.5 32.8008 -15.7998 43.7002h84.2002c108.7 0.400391 126.5 -79.3994 126.5 -120.2zM230.2 271.6l64 -29.2998\nc13.2998 45.5 -42.2002 71.7002 -64 29.2998z\" />\n    <glyph glyph-name=\"digital-ocean\" unicode=\"&#xf391;\" horiz-adv-x=\"512\" \nd=\"M87 -33.7998v73.5996h73.7002v-73.5996h-73.7002zM25.4004 101.4h61.5996v-61.6006h-61.5996v61.6006zM491.6 271.1c53.2002 -170.3 -73 -327.1 -235.6 -327.1v95.7998h0.299805v0.299805c101.7 0.200195 180.5 101 141.4 208\nc-14.2998 39.6006 -46.1006 71.4004 -85.7998 85.7002c-107.101 38.7998 -208.101 -39.8994 -208.101 -141.7h-95.7998c0 162.2 156.9 288.7 327 235.601c74.2002 -23.2998 133.6 -82.4004 156.6 -156.601zM256.3 40.0996h-0.299805v-0.299805h-95.2998v95.6006h95.5996\nv-95.3008z\" />\n    <glyph glyph-name=\"discord\" unicode=\"&#xf392;\" \nd=\"M297.216 204.8c0 -15.6162 -11.5195 -28.416 -26.1123 -28.416c-14.3359 0 -26.1113 12.7998 -26.1113 28.416s11.5195 28.416 26.1113 28.416c14.5928 0 26.1123 -12.7998 26.1123 -28.416zM177.664 233.216c14.5918 0 26.3682 -12.7998 26.1123 -28.416\nc0 -15.6162 -11.5205 -28.416 -26.1123 -28.416c-14.3359 0 -26.1123 12.7998 -26.1123 28.416s11.5205 28.416 26.1123 28.416zM448 395.264v-459.264c-64.4941 56.9941 -43.8682 38.1279 -118.784 107.776l13.5684 -47.3604h-290.304\nc-28.9287 0 -52.4805 23.5518 -52.4805 52.7363v346.111c0 29.1846 23.5518 52.7363 52.4805 52.7363h343.039c28.9287 0 52.4805 -23.5518 52.4805 -52.7363zM375.04 152.576c0 82.4316 -36.8643 149.248 -36.8643 149.248\nc-36.8643 27.6475 -71.9355 26.8799 -71.9355 26.8799l-3.58398 -4.0957c43.5195 -13.3125 63.7441 -32.5127 63.7441 -32.5127c-60.8115 33.3291 -132.244 33.335 -191.232 7.42383c-9.47168 -4.35156 -15.1035 -7.42383 -15.1035 -7.42383\ns21.2471 20.2246 67.3271 33.5361l-2.55957 3.07227s-35.0723 0.767578 -71.9355 -26.8799c0 0 -36.8643 -66.8164 -36.8643 -149.248c0 0 21.5039 -37.1201 78.0801 -38.9121c0 0 9.47168 11.5195 17.1514 21.248c-32.5117 9.72754 -44.7998 30.208 -44.7998 30.208\nc3.7666 -2.63574 9.97656 -6.05273 10.4961 -6.40039c43.21 -24.1973 104.588 -32.126 159.744 -8.95996c8.95996 3.32812 18.9443 8.19238 29.4395 15.1045c0 0 -12.7998 -20.9922 -46.3359 -30.4639c7.68066 -9.72852 16.8965 -20.7363 16.8965 -20.7363\nc56.5762 1.79199 78.3359 38.9121 78.3359 38.9121z\" />\n    <glyph glyph-name=\"discourse\" unicode=\"&#xf393;\" \nd=\"M225.9 416c122.699 0 222.1 -102.3 222.1 -223.9c0 -121.6 -99.4004 -223.899 -222.1 -223.899l-225.801 -0.200195s-0.0996094 224 -0.0996094 227.9c0 121.6 103.3 220.1 225.9 220.1zM224 64c70.7002 0 128 57.2998 128 128s-57.2998 128 -128 128\ns-128 -57.2998 -128 -128c0 -22.0996 5.59961 -42.9004 15.4004 -61l-22.9004 -75l81.0996 20.0996c16.5 -7.7998 35 -12.0996 54.4004 -12.0996z\" />\n    <glyph glyph-name=\"dochub\" unicode=\"&#xf394;\" horiz-adv-x=\"416\" \nd=\"M397.9 288h-141.9v140.4zM304 256h96v-126.1c0 -129.301 -70.2998 -193.9 -210.8 -193.9h-189.2v512h189.2c12.2002 0 23.7002 -1.09961 34.5996 -3.2998v-84c-10 1.7002 -21.0996 2.5 -33.0996 2.5h-94.7002v-337.3h94.7002c76.7998 0 113.3 33.2998 113.3 100.1v130z\n\" />\n    <glyph glyph-name=\"docker\" unicode=\"&#xf395;\" horiz-adv-x=\"640\" \nd=\"M349.9 211.7h-66.1006v59.3994h66.1006v-59.3994zM349.9 416v-60.7002h-66.1006v60.7002h66.1006zM428.1 271.2v-59.4004h-66.0996v59.4004h66.0996zM271.8 343.3v-60.0996h-66.0996v60.0996h66.0996zM349.9 343.3v-60.0996h-66.1006v60.0996h66.1006zM626.7 243.3\nl13.2998 -8.89941c-1.90039 -3.90039 -7 -14.6006 -8.5 -17.1006c-23.7002 -45.2998 -69.9004 -45.5996 -91.2998 -45.2002c-54.5 -131.699 -171 -204.199 -328.4 -204.199c-72.7002 0 -128.3 22.2998 -165.399 66.1992c-38.2002 45.3008 -52.7002 111.301 -44 162.101\nh434.699c22.6006 -0.400391 39.7002 6 48.4004 10.7002c-19.7002 30.1992 -14.7002 76 3.7002 103.8l9.2998 14l14 -9.2998c24.4004 -18.8008 37.7998 -39.7002 41.0996 -63.7002c25.5 4.7998 58.7002 1.2998 73.1006 -8.40039zM115.6 271.2h0.100586v-59.4004h-66.1006\nv59.4004h66zM193.7 271.2v-59.4004h-66.1006v59.4004h66.1006zM271.8 271.2v-59.4004h-66.0996v59.4004h66.0996zM193.7 343.3v-60.0996h-66.1006v60.0996h66.1006z\" />\n    <glyph glyph-name=\"draft2digital\" unicode=\"&#xf396;\" horiz-adv-x=\"480\" \nd=\"M480 49.9004l-144 -81.9004v64.2002l-336 -0.100586c18.2998 19.1006 84.5 87.8008 161.1 174.801c32.6006 37.1992 78 83.2998 69.7002 127.6c-5.2998 28.2998 -42.2002 50.7998 -83.2998 33.5c-8.59961 -3.59961 -24.5 -17.4004 -26.2998 -24.7002\nc28.2998 -4.7002 48 -29.7002 48 -56.7998c0 -31.7002 -25.6006 -57.4004 -57.2998 -57.4004c-37.3008 0 -62.2002 34.1006 -56.7002 67.1006c1.2002 7.89941 5.09961 26.7998 18.2002 47.7002c14.8994 23.8994 45.1992 54.8994 104.3 67.2998\nc103.8 21.7002 161.6 -36.6006 166 -41.2002c28.8994 -29.9004 48 -90.7002 12.7998 -153.3c-30 -53.4004 -81 -114.3 -111.8 -149.3h91.2998v64.6992zM369.9 77v-54.4004l47.0996 27.2002zM134.2 286.6c0 12.3008 -10 22.4004 -22.4004 22.4004\nc-12.3994 0 -22.3994 -10 -22.3994 -22.4004c0 -12.3994 10 -22.3994 22.3994 -22.3994c12.4004 0 22.4004 10 22.4004 22.3994zM82.5 67.5h114.4c17.5996 19.2002 91.5 100.8 128.5 166.7c36.5996 65.0996 -5.80078 113.3 -5.80078 113.3\nc-14.1992 14.9004 -36.8994 36.2002 -82.1992 38.2998c6.7998 -5.5 16.8994 -16.8994 24.2998 -35.7002c11.8994 -30.2998 6.7002 -69.5996 -28.4004 -112.699c-53.0996 -65.2002 -125.2 -142.5 -150.8 -169.9z\" />\n    <glyph glyph-name=\"dribbble-square\" unicode=\"&#xf397;\" \nd=\"M90.2002 219.8c8.89941 42.4004 37.3994 77.7002 75.7002 95.7002c3.59961 -4.90039 28 -38.7998 50.6992 -79c-64 -17 -120.3 -16.7998 -126.399 -16.7002zM314.6 294c-2.5 -3.5 -23 -31.0996 -71.5996 -49.4004c-22.4004 41.1006 -47.2002 74.9004 -51 80\nc43.2998 10.5 89 -0.799805 122.6 -30.5996zM140.1 84c14.3008 29.2002 53 66.7998 108.101 85.5996c19.2002 -49.7998 27.2002 -91.5996 29.2002 -103.6c-44 -18.7002 -96.8008 -13.5996 -137.301 18zM238.9 192.2c-49.4004 -13.9004 -94.3008 -53.9004 -116.5 -91.7998\nc-21.8008 24.2998 -35.1006 56.2998 -35.1006 91.3994c0 1.40039 0.100586 2.7998 0.100586 4.2002c6 -0.200195 72.1992 -1 140.399 19.4004c3.90039 -7.7002 7.7002 -15.4004 11.1006 -23.2002zM273.8 175.9c42.7998 6.89941 80.5 -4.30078 85.1006 -5.80078\nc-6.10059 -38 -27.9004 -70.8994 -58.6006 -91.5996c-1.39941 8.2998 -8.59961 48.2998 -26.5 97.4004zM253.5 224.3c50.5 20.7002 73.4004 50 76.2998 53.9004c19.1006 -23.2002 30.6006 -52.7998 30.9004 -85.1006c-4.5 1 -49.7002 10.1006 -95.2002 4.40039\nc-3.7002 9 -7.2002 17 -12 26.7998zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM384 192c0 88.2002 -71.7998 160 -160 160s-160 -71.7998 -160 -160s71.7998 -160 160 -160\ns160 71.7998 160 160z\" />\n    <glyph glyph-name=\"dyalog\" unicode=\"&#xf399;\" horiz-adv-x=\"416\" \nd=\"M0 416h171.2c74.5 0 137.7 -24 182.5 -69.5996c40.2002 -40.9004 62.2998 -95.6006 62.2998 -154.301c0 -111.399 -84.0996 -224.1 -244.8 -224.1h-171.2v64h171.2c122.2 0 180.8 84 180.8 160.1c0 79.7002 -67.4004 159.9 -180.8 159.9h-107.2v-55.2002h-64v119.2z\" />\n    <glyph glyph-name=\"earlybirds\" unicode=\"&#xf39a;\" horiz-adv-x=\"480\" \nd=\"M313.2 400.5c1.2002 13 21.2998 14 36.5996 8.7002c0.900391 -0.299805 26.2002 -9.7002 19 -15.2002c-27.8994 7.40039 -56.3994 -18.2002 -55.5996 6.5zM112.2 393.6c-7.7998 6.2002 19.8994 16.4004 20.8994 16.7002c16.8008 5.7002 38.9004 4.60059 40.2002 -9.59961\nc0.900391 -27.1006 -30.3994 1 -61.0996 -7.10059zM319.4 288c8.7998 0 16 -7.2002 16 -16s-7.2002 -16 -16 -16c-8.80078 0 -16 7.2002 -16 16s7.19922 16 16 16zM159.7 288c8.7998 0 16 -7.2002 16 -16s-7.2002 -16 -16 -16s-16 7.2002 -16 16s7.2002 16 16 16z\nM478.2 124.8c-9.90039 -24 -40.7002 -11 -63.9004 1.2002c-13.5 -69.0996 -58.0996 -111.4 -126.3 -124.2c0.299805 -0.899414 -2 0.100586 24 -1c33.5996 -1.39941 63.7998 3.10059 97.4004 8c-19.8008 13.7998 -11.4004 37.1006 -9.80078 38.1006\nc1.40039 0.899414 14.7002 -1.7002 21.6006 -11.5c8.59961 12.5 28.3994 14.7998 30.2002 13.5996c1.59961 -1.09961 6.59961 -20.9004 -6.90039 -34.5996c4.7002 0.899414 8.2002 1.59961 9.7998 2.09961c2.60059 0.799805 17.7002 -11.2998 3.10059 -13.2998\nc-14.3008 -2.2998 -22.6006 -5.10059 -47.1006 -10.7998c-45.8994 -10.7002 -85.8994 -11.8008 -117.7 -12.8008l1 -11.5996c3.80078 -18.0996 -23.3994 -24.2998 -27.5996 -6.2002c0.799805 -17.8994 -27.0996 -21.7998 -28.4004 1l-0.5 -5.2998\nc-0.699219 -18.4004 -28.3994 -17.9004 -28.2998 0.599609c-7.5 -13.5 -28.0996 -6.7998 -26.3994 8.5l1.19922 12.4004c-36.6992 -0.900391 -59.6992 -3.09961 -61.7998 -3.09961c-20.8994 0 -20.8994 31.5996 0 31.5996c2.40039 0 27.7002 -1.2998 63.2002 -2.7998\nc-61.0996 15.5 -103.7 55 -114.9 118.2c-25 -12.8008 -57.5 -26.8008 -68.1992 -0.800781c-10.5 25.4004 21.5 42.6006 66.7998 73.4004c0.700195 6.59961 1.59961 13.2998 2.7002 19.7998c-14.4004 19.6006 -11.6006 36.2998 -16.1006 60.4004\nc-16.7998 -2.40039 -23.2002 9.09961 -23.5996 23.0996c0.299805 7.2998 2.09961 14.9004 2.39941 15.4004c1.10059 1.7998 10.1006 2 12.7002 2.59961c6 31.7002 50.6006 33.2002 90.9004 34.5c19.7002 21.7998 45.2002 41.5 80.8994 48.2998\nc-15.2998 19.4004 -3.39941 39.9004 -2.39941 40.4004c1.7002 0.799805 21.2002 -4.2998 26.2998 -23.2002c5.2002 8.7998 18.2998 11.4004 19.5996 10.7002c1.10059 -0.599609 6.40039 -15 -4.89941 -25.9004c40.2998 -3.5 72.2002 -24.6992 96 -50.6992\nc36.0996 -1.5 71.7998 -5.90039 77.0996 -34c2.7002 -0.600586 11.6006 -0.800781 12.7002 -2.60059c0.299805 -0.5 2.09961 -8.09961 2.40039 -15.3994c-0.5 -13.9004 -6.80078 -25.4004 -23.6006 -23.1006c-3.2002 -17.2998 -2.7002 -32.8994 -8.7002 -47.7002\nc2.40039 -11.6992 4 -23.7998 4.80078 -36.3994c37 -25.4004 70.2998 -42.5 60.2998 -66.9004zM207.4 288.1c0.899414 44 -37.9004 42.2002 -78.6006 40.3008c-21.7002 -1 -38.8994 -1.90039 -45.5 -13.9004c-11.3994 -20.9004 5.90039 -92.9004 23.2002 -101.2\nc9.7998 -4.7002 73.4004 -7.89941 86.2998 7.10059c8.2002 9.39941 15 49.3994 14.6006 67.6992zM259.4 229.8c-4.30078 12.4004 -6 30.1006 -15.3008 32.7002c-2 0.5 -9 0.5 -11 0c-10 -2.7998 -10.7998 -22.0996 -17 -37.2002c15.4004 0 19.3008 -9.7002 23.7002 -9.7002\nc4.2998 0 6.2998 11.3008 19.6006 14.2002zM395.1 314.5c-6.59961 12.0996 -24.7998 12.9004 -46.5 13.9004c-40.1992 1.89941 -78.1992 3.7998 -77.2998 -40.3008c-0.5 -18.2998 5 -58.2998 13.2002 -67.7998c13 -14.8994 76.5996 -11.7998 86.2998 -7.09961\nc15.7998 7.59961 36.5 78.8994 24.2998 101.3z\" />\n    <glyph glyph-name=\"erlang\" unicode=\"&#xf39d;\" horiz-adv-x=\"640\" \nd=\"M87.2002 394.5c-41.5 -50.2002 -65.6006 -116.2 -65.5 -192.9c-0.100586 -86.7998 29 -159.5 78.7002 -212.1h-100.4v405h87.2002zM325.4 384.8c46.1992 -0.0996094 79.5996 -33.5 80.6992 -83.2002h-169.899c4.09961 49.7002 43.2998 83.1006 89.2002 83.2002z\nM556.1 394.4h0.300781l-0.100586 0.0996094zM556.4 394.4h83.5996v-405h-80.7998c21.3994 23 40.5 49.8994 57.8994 80.7998l-96.3994 48.2002c-33.9004 -55.1006 -83.4004 -105.801 -151.9 -106.101c-99.7002 0.400391 -138.8 85.6006 -138.6 195.3h372.399\nc0.5 12.4004 0.5 18.1006 0 24.1006c2.5 65.2002 -14.7998 120 -46.1992 162.7z\" />\n    <glyph glyph-name=\"facebook-f\" unicode=\"&#xf39e;\" horiz-adv-x=\"320\" \nd=\"M279.14 160h-74.6895v-224h-100.17v224h-81.3906v92.6602h81.3906v70.6201c0 80.3398 47.8594 124.72 121.08 124.72c35.0693 0 71.75 -6.25977 71.75 -6.25977v-78.8906h-40.4199c-39.8203 0 -52.2402 -24.71 -52.2402 -50.0596v-60.1299h88.9102z\" />\n    <glyph glyph-name=\"facebook-messenger\" unicode=\"&#xf39f;\" horiz-adv-x=\"512\" \nd=\"M256.55 440c140.04 0 247.45 -102.34 247.45 -240.57c0 -175.13 -166.15 -273.229 -319.44 -231.04c-8.96973 2.44043 -9.64941 0.600586 -62.5596 -22.6992c-2.10449 -0.918945 -5.67578 -1.66504 -7.97168 -1.66504c-10.624 0 -19.543 8.61719 -19.9082 19.2344\nc-1.41992 46.3701 0.299805 50.7207 -8.0498 58.2305c-48.3604 43.1602 -78.0703 105.64 -78.0703 177.939c0 138.23 108.52 240.57 248.55 240.57zM405.79 254.87c7.0498 11.0801 -6.65039 23.5996 -17.0898 15.6201l-78.4102 -59.3799\nc-2.20801 -1.65625 -6.24023 -3 -9 -3s-6.79199 1.34375 -9 3l-58.0596 43.46c-5.48926 4.09961 -15.5049 7.42676 -22.3564 7.42676c-11.3438 0 -25.4805 -7.77637 -31.5537 -17.3574l-73 -115.569c-7.05078 -11.0703 6.64941 -23.6006 17.1094 -15.6699l78.3701 59.4395\nc2.20801 1.65625 6.24023 3 9 3s6.79199 -1.34375 9 -3l58.0801 -43.4697c5.48926 -4.09766 15.5039 -7.42285 22.3535 -7.42285c11.3428 0 25.4805 7.77441 31.5566 17.3525z\" />\n    <glyph glyph-name=\"firstdraft\" unicode=\"&#xf3a1;\" horiz-adv-x=\"384\" \nd=\"M384 256h-64v-128h-128v-128h-192v25.5996h166.4v128h128v128h89.5996v-25.5996zM358.4 217.6h25.5996v-153.6h-128v-128h-192v25.5996h166.4v128h128v128zM384 25.5996v-25.5996h-64v-64h-25.5996v89.5996h89.5996zM0 448h384v-128h-128v-128h-128v-128h-128v384z\" />\n    <glyph glyph-name=\"fonticons-fi\" unicode=\"&#xf3a2;\" horiz-adv-x=\"384\" \nd=\"M114.4 224h92.3994l-15.2002 -51.2002h-76.3994v-157.8c0 -8 -2.7998 -9.2002 4.39941 -10l59.6006 -5.59961v-34.4004h-179.2v35.2002l29.2002 2.7998c7.2002 0.799805 9.2002 3.2002 9.2002 10.7998v155.8c0 3.2002 -4 3.2002 -8 3.2002h-30.4004v51.2002h38.4004\nv28.7998c0 68 36.3994 96 106 96c46.7998 0 88.7998 -11.2002 88.7998 -72.3994l-69.6006 -8.40039c0.400391 25.5996 -6 31.5996 -22.3994 31.5996c-25.2002 0 -26 -13.5996 -26 -37.5996v-32c0 -3.2002 -4.7998 -6 -0.799805 -6zM384 -35h-140.8v34.4004l28 3.59961\nc7.2002 0.799805 10.3994 2.40039 10.3994 10v148c0 5.59961 -4 9.2002 -9.19922 10.7998l-33.2002 8.7998l9.2002 40.4004h110v-208c0 -8 -3.60059 -8.7998 4 -10l21.5996 -3.59961v-34.4004zM354 312.2l12.4004 -45.6006l-10 -10l-42.8008 22.8008l-42.7998 -22.8008\nl-10 10l12.4004 45.6006l-30 36.3994l4.7998 10h38l21.2002 38.4004h12.7998l21.2002 -38.4004h38l4.7998 -13.1992z\" />\n    <glyph glyph-name=\"fort-awesome-alt\" unicode=\"&#xf3a3;\" horiz-adv-x=\"512\" \nd=\"M208 210.6c2.09961 0 3.7002 -1.59961 3.7002 -3.69922v-51.7002c0 -2.10059 -1.60059 -3.7002 -3.7002 -3.7002h-22.2002c-2.09961 0 -3.7002 1.59961 -3.7002 3.7002v51.7002c0 2.09961 1.60059 3.69922 3.7002 3.69922h22.2002zM326.2 210.6\nc2 0 3.59961 -1.59961 3.7002 -3.69922v-51.7002c0 -2.10059 -1.60059 -3.7002 -3.7002 -3.7002h-22.2002c-2.09961 0 -3.7002 1.59961 -3.7002 3.7002v51.7002c0 2.09961 1.60059 3.69922 3.7002 3.69922h22.2002zM458.2 335.7\nc28.8994 -40.7002 45.7998 -90.2002 45.7998 -143.7c0 -2 0 -4 -0.0996094 -6c0 -0.700195 0 -1.2998 -0.100586 -2c0 -1.2998 -0.0996094 -2.7002 -0.200195 -4c0 -0.799805 -0.0996094 -1.5 -0.0996094 -2.2998\nc-0.0996094 -1.2002 -0.0996094 -2.40039 -0.200195 -0.700195c-0.0996094 -0.799805 -0.0996094 -1.59961 -0.200195 -2.40039c-0.0996094 -1.19922 -0.199219 -2.39941 -0.299805 -3.5c-0.0996094 -0.799805 -0.200195 -1.59961 -0.200195 -2.39941\nc-0.0996094 -1.2002 -0.299805 -2.40039 -0.399414 -3.60059c-0.100586 -0.799805 -0.200195 -1.5 -0.299805 -2.2998c-0.200195 -1.2998 -0.400391 -2.59961 -0.5 -3.89941c-0.100586 -0.600586 -0.200195 -1.30078 -0.300781 -1.90039l-0.899414 -5.7002\nc-0.100586 -0.599609 -0.200195 -1.09961 -0.299805 -1.7002c-0.200195 -1.2998 -0.5 -2.69922 -0.800781 -4c-0.199219 -0.799805 -0.299805 -1.59961 -0.5 -2.39941c-0.199219 -1.10059 -0.5 -2.2002 -0.699219 -3.2002\nc-0.200195 -0.900391 -0.400391 -1.7002 -0.600586 -2.59961c-0.200195 -1 -0.5 -2 -0.700195 -3c-0.199219 -0.900391 -0.5 -1.80078 -0.699219 -2.7002c-0.300781 -1 -0.5 -1.90039 -0.800781 -2.90039c-0.199219 -0.899414 -0.5 -1.7998 -0.799805 -2.7002\nc-0.299805 -0.899414 -0.599609 -1.89941 -0.799805 -2.7998c-0.299805 -0.899414 -0.5 -1.7998 -0.799805 -2.7002c-0.299805 -0.899414 -0.600586 -1.7998 -0.900391 -2.7998c-0.5 -1.59961 -1.09961 -3.2998 -1.7002 -4.89941\nc-0.299805 -0.900391 -0.599609 -1.80078 -1 -2.80078c-0.399414 -1 -0.699219 -2 -1.09961 -3c-0.299805 -0.799805 -0.599609 -1.5 -0.900391 -2.2998l-1.19922 -3c-0.300781 -0.700195 -0.600586 -1.5 -0.900391 -2.2002c-0.400391 -1 -0.799805 -2 -1.2998 -3\nl-0.900391 -2.09961c-0.399414 -1 -0.899414 -2 -1.39941 -3c-0.300781 -0.700195 -0.600586 -1.2998 -0.900391 -2c-0.5 -1 -1 -2.09961 -1.5 -3.09961c-0.299805 -0.600586 -0.599609 -1.10059 -0.799805 -1.7002c-0.600586 -1.10059 -1.10059 -2.2002 -1.7002 -3.2998\nc-0.0996094 -0.200195 -0.200195 -0.300781 -0.299805 -0.5c-2.2002 -4.10059 -4.40039 -8.2002 -6.7998 -12.2002c-0.200195 -0.400391 -0.5 -0.799805 -0.700195 -1.2002c-0.700195 -1.09961 -1.2998 -2.2002 -2 -3.2998\nc-0.299805 -0.5 -0.600586 -0.900391 -0.900391 -1.40039c-0.700195 -1.09961 -1.39941 -2.09961 -2 -3.2002c-0.299805 -0.5 -0.599609 -0.899414 -0.899414 -1.39941c-0.700195 -1.10059 -1.40039 -2.10059 -2.10059 -3.2002\nc-0.299805 -0.400391 -0.599609 -0.799805 -0.799805 -1.2002c-0.799805 -1.09961 -1.5 -2.2002 -2.2998 -3.2998c-0.200195 -0.200195 -0.299805 -0.5 -0.5 -0.700195c-37.6006 -54.7002 -94.5 -91.3994 -160.101 -102.399\nc-0.899414 -0.100586 -1.69922 -0.300781 -2.59961 -0.400391c-1 -0.200195 -2.09961 -0.299805 -3.09961 -0.5c-0.900391 -0.0996094 -1.80078 -0.299805 -2.80078 -0.400391c-1 -0.0996094 -2 -0.299805 -3 -0.399414c-1 -0.100586 -2 -0.200195 -2.89941 -0.299805\nc-1 -0.100586 -1.90039 -0.200195 -2.90039 -0.300781c-1 -0.0996094 -2.09961 -0.199219 -3.09961 -0.299805c-0.900391 -0.0996094 -1.7998 -0.200195 -2.7002 -0.200195c-1.09961 -0.0996094 -2.2998 -0.0996094 -3.40039 -0.199219\nc-0.799805 0 -1.69922 -0.100586 -2.5 -0.100586c-1.2998 -0.0996094 -2.59961 -0.0996094 -3.89941 -0.0996094c-0.700195 0 -1.40039 -0.100586 -2.10059 -0.100586c-2 0 -4 -0.0996094 -6 -0.0996094s-4 0 -6 0.0996094c-0.699219 0 -1.39941 0 -2.09961 0.100586\nc-1.2998 0 -2.59961 0.0996094 -3.90039 0.0996094c-0.799805 0 -1.69922 0.100586 -2.5 0.100586c-1.09961 0.0996094 -2.2998 0.0996094 -3.39941 0.199219c-0.900391 0.100586 -1.7998 0.100586 -2.7002 0.200195c-1 0.100586 -2.09961 0.200195 -3.09961 0.299805\nc-1 0.100586 -1.90039 0.200195 -2.90039 0.300781c-1 0.0996094 -2 0.199219 -2.90039 0.299805c-1 0.0996094 -2 0.200195 -3 0.399414c-0.899414 0.100586 -1.7998 0.300781 -2.7998 0.400391s-2.09961 0.299805 -3.09961 0.5\nc-0.900391 0.0996094 -1.7002 0.299805 -2.60059 0.400391c-65.5996 10.8994 -122.5 47.6992 -160 99.3994c-0.199219 0.200195 -0.299805 0.5 -0.5 0.700195c-0.799805 1.09961 -1.59961 2.2002 -2.2998 3.2998c-0.299805 0.400391 -0.599609 0.799805 -0.799805 1.2002\nc-0.700195 1.09961 -1.40039 2.09961 -2.09961 3.2002c-0.300781 0.5 -0.600586 0.899414 -0.900391 1.39941c-0.700195 1.10059 -1.40039 2.10059 -2 3.2002c-0.299805 0.5 -0.599609 0.900391 -0.900391 1.40039c-0.699219 1.09961 -1.2998 2.2002 -2 3.2998\nc-0.199219 0.400391 -0.5 0.799805 -0.699219 1.2002c-2.40039 4 -4.60059 8.09961 -6.80078 12.2002c-0.0996094 0.199219 -0.199219 0.299805 -0.299805 0.5c-0.599609 1.09961 -1.09961 2.19922 -1.7002 3.2998c-0.299805 0.599609 -0.599609 1.09961 -0.799805 1.7002\nc-0.5 1 -1 2.09961 -1.5 3.09961c-0.299805 0.700195 -0.599609 1.2998 -0.899414 2c-0.5 1 -0.900391 2 -1.40039 3l-0.900391 2.09961c-0.399414 1 -0.899414 2 -1.2998 3c-0.299805 0.700195 -0.599609 1.5 -0.899414 2.2002l-1.2002 3\nc-0.299805 0.799805 -0.600586 1.5 -0.900391 2.2998c-0.399414 1 -0.799805 2 -1.09961 3c-0.299805 0.900391 -0.600586 1.80078 -1 2.80078c-0.600586 1.59961 -1.10059 3.2998 -1.7002 4.89941c-0.299805 0.900391 -0.599609 1.7998 -0.900391 2.7998\nc-0.299805 0.900391 -0.5 1.80078 -0.799805 2.7002c-0.299805 0.900391 -0.599609 1.90039 -0.799805 2.7998c-0.299805 0.900391 -0.5 1.80078 -0.799805 2.7002c-0.299805 1 -0.5 1.90039 -0.799805 2.90039c-0.200195 0.899414 -0.5 1.7998 -0.700195 2.7002\nc-0.299805 1 -0.5 2 -0.700195 3c-0.200195 0.899414 -0.400391 1.69922 -0.599609 2.59961c-0.200195 1.09961 -0.5 2.2002 -0.700195 3.2002c-0.200195 0.799805 -0.299805 1.59961 -0.5 2.39941c-0.299805 1.30078 -0.5 2.7002 -0.799805 4\nc-0.100586 0.600586 -0.200195 1.10059 -0.300781 1.7002l-0.899414 5.7002c-0.100586 0.599609 -0.200195 1.2998 -0.299805 1.90039c-0.200195 1.2998 -0.400391 2.59961 -0.5 3.89941c-0.100586 0.799805 -0.200195 1.5 -0.300781 2.2998\nc-0.0996094 1.2002 -0.299805 2.40039 -0.399414 3.60059c-0.100586 0.799805 -0.200195 1.59961 -0.200195 2.39941c-0.0996094 1.2002 -0.200195 2.40039 -0.299805 3.5c-0.100586 0.800781 -0.100586 1.60059 -0.200195 2.40039\nc-0.0996094 1.2002 -0.200195 2.40039 -0.200195 3.7002c0 0.799805 -0.0996094 1.5 -0.0996094 2.2998c-0.100586 1.2998 -0.100586 2.7002 -0.200195 4c0 0.700195 0 1.2998 -0.0996094 2c0 2 -0.100586 4 -0.100586 6c0 53.5 16.9004 103 45.7998 143.6\nc2.30078 3.2002 4.7002 6.40039 7.10059 9.5c4.89941 6.2002 10.0996 12.3008 15.5996 18c2.7002 2.90039 5.5 5.7002 8.40039 8.40039c2.89941 2.7002 5.7998 5.40039 8.7998 8c4.5 3.90039 9.09961 7.59961 13.9004 11.2002c1.59961 1.2002 3.19922 2.39941 4.7998 3.5\nc27.2998 19.5996 59 33.7002 93.2998 40.7998c16.0996 3.2998 32.9004 5 50 5s33.7998 -1.7002 50 -5c34.2998 -7 66 -21.0996 93.5996 -40.7002c1.60059 -1.2002 3.2002 -2.2998 4.80078 -3.5c4.7998 -3.59961 9.39941 -7.2998 13.8994 -11.2002\nc12 -10.3994 23 -21.8994 32.7998 -34.3994c2.5 -3.10059 4.80078 -6.2998 7.10059 -9.5zM448 76.5v71.2998c0 2.10059 -1.59961 3.7002 -3.7002 3.7002h-22.2002c-2.09961 0 -3.69922 -1.59961 -3.69922 -3.7002v-25.7998h-29.5v144\nc0 2.09961 -1.60059 3.7002 -3.7002 3.7002h-22.1006c-2.09961 0 -3.69922 -1.60059 -3.69922 -3.7002v-25.9004h-29.5v25.9004c0 2.09961 -1.60059 3.7002 -3.7002 3.7002h-22.2002c-2.09961 0 -3.7002 -1.60059 -3.7002 -3.7002v-25.9004h-29.5v25.9004\nc0 4.7998 -6.5 3.7002 -9.5 3.7002v30.7002c6.7002 1.59961 13.7998 2.7998 20.7998 2.7998c8.80078 0 16.8008 -3.5 25.4004 -3.5c3.7002 0 22.4004 0.899414 22.4004 6.5v48.3994c0 2.10059 -1.60059 3.7002 -3.7002 3.7002c-4.2002 0 -12.2002 -3.5 -19.4004 -3.5\nc-7.89941 0 -16.8994 3.5 -26.2998 3.5c-6.5 0 -12.9004 -0.899414 -19.2002 -2.2998v3.90039c4.40039 2.09961 7.40039 6.69922 7.40039 11.5c0 16.7998 -25.4004 16.7998 -25.4004 0c0 -4.80078 3 -9.5 7.40039 -11.5v-90.2002c-3 0 -9.5 1.09961 -9.5 -3.7002v-25.9004\nh-29.5v25.9004c0 2.09961 -1.60059 3.7002 -3.7002 3.7002h-22.2002c-2.09961 0 -3.7002 -1.60059 -3.7002 -3.7002v-25.9004h-29.5v25.9004c0 2.09961 -1.59961 3.7002 -3.69922 3.7002h-22.1006c-2.09961 0 -3.7002 -1.60059 -3.7002 -3.7002v-144h-29.5996v25.7998\nc0 2.10059 -1.59961 3.7002 -3.7002 3.7002h-22.0996c-2.10059 0 -3.7002 -1.59961 -3.7002 -3.7002v-71.2998c9.40039 -15.5 20.5996 -29.9004 33.5996 -42.9004c20.6006 -20.5996 44.5 -36.6992 71.2002 -48c13.9004 -5.89941 28.2002 -10.2998 42.9004 -13.1992v75.7998\nc0 58.5996 88.5996 58.5996 88.5996 0v-75.7998c14.7002 2.89941 29 7.39941 42.9004 13.1992c26.7002 11.3008 50.5996 27.4004 71.2002 48c13 13 24.1992 27.4004 33.5996 42.9004z\" />\n    <glyph glyph-name=\"freebsd\" unicode=\"&#xf3a4;\" \nd=\"M303.7 351.8c11.0996 11.1006 115.5 77 139.2 53.2002c23.6992 -23.7002 -42.1006 -128.1 -53.2002 -139.2c-11.1006 -11.0996 -39.4004 -0.899414 -63.1006 22.9004c-23.7998 23.7002 -34.0996 52 -22.8994 63.0996zM109.9 379.9\nc-31.6006 -19.4004 -57.9004 -46.5 -76.4004 -78.7002c-20.7998 36.2998 -44.5 89.0996 -27.9004 105.7c16.4004 16.5 68 -6.40039 104.301 -27zM406.7 274c3.2998 5.5 7 11.7998 10.8994 18.7998c17.6006 -31.2998 27.7002 -67.3994 27.7002 -105.8\nc0 -119.1 -96.5 -215.6 -215.6 -215.6c-119.101 0 -215.601 96.5996 -215.601 215.6c0 119.1 96.5 215.6 215.601 215.6c35.8994 0 69.7002 -8.7998 99.5 -24.2998c-7.2998 -4 -13.9004 -8 -19.6006 -11.5996c-26 4.7002 -32.8994 -16.4004 -14.8994 -48.7002\nc21.7998 -43.0996 89 -90.4004 109.3 -70.0996c5.40039 5.39941 6 14.7998 2.7002 26.0996z\" />\n    <glyph glyph-name=\"gitkraken\" unicode=\"&#xf3a6;\" horiz-adv-x=\"592\" \nd=\"M565.7 329.9c11.7998 -31.6006 18.2998 -65.7002 18.2998 -101.4c0 -155.1 -122.6 -281.6 -276.3 -287.7v145.8c-8.40039 -0.5 -16.6006 -0.399414 -23.4004 0v-145.899c-153.7 6.2002 -276.3 132.7 -276.3 287.8c0 35.7002 6.5 69.7998 18.2998 101.3\nc2.2998 6.2002 9.2998 9.2002 15.2998 6.60059c5.7002 -2.40039 8.5 -8.80078 6.30078 -14.6006c-10.9004 -29 -16.9004 -60.5 -16.9004 -93.2998c0 -134.6 100.4 -245.7 230.2 -262.7v123.7c-7.90039 1.59961 -15.4004 3.7002 -23 6.2002v-104\nc-106.7 26 -185.9 122.1 -185.9 236.8c0 91.7998 50.7998 171.8 125.8 213.3c5.80078 3.2002 13 0.900391 15.9004 -5c2.7002 -5.5 0.700195 -12.0996 -4.7002 -15.0996c-67.8994 -37.7002 -113.899 -110.101 -113.899 -193.2c0 -93.4004 57.8994 -173.2 139.8 -205.4\nv92.2002c-14.2002 4.5 -24.7998 17.7002 -24.7998 33.5c0 13.1006 6.69922 24.4004 17.2998 30.5c-8.2002 79.6006 -44.5 58.6006 -44.5 83.9004v14.7998c0 38 87.8994 161.7 129.1 164.7c2.60059 0.200195 5.10059 0.200195 7.60059 0\nc41.0996 -2.90039 129 -126.7 129 -164.7v-14.7002c0 -25.2998 -36.2002 -4.39941 -44.5 -83.8994c10.5 -6.10059 17.2998 -17.4004 17.2998 -30.5c0 -15.8008 -10.7002 -29 -24.9004 -33.5v-92.2002c81.9004 32.2998 139.8 112.1 139.8 205.399\nc0 83.2002 -46 155.601 -113.899 193.2c-5.2998 2.90039 -7.40039 9.60059 -4.7002 15.1006c2.90039 5.89941 10.2002 8.19922 15.9004 5c75 -41.5 125.8 -121.5 125.8 -213.301c0 -114.699 -79.2002 -210.899 -185.9 -236.8v104\nc-7.5 -2.59961 -15.0996 -4.7002 -23 -6.2002v-123.699c129.9 17 230.2 128.1 230.2 262.699c0 32.8008 -6 64.3008 -16.9004 93.3008c-2.19922 5.69922 0.600586 12.1992 6.30078 14.5996c6 2.59961 13 -0.5 15.2998 -6.59961zM365.9 172.5\nc-13.1006 0 -23.7002 -10.5996 -23.7002 -23.7002c0 -13.2002 10.7002 -23.7002 23.7002 -23.7002c13.0996 0 23.6992 10.6006 23.6992 23.7002c0 13.2002 -10.6992 23.7002 -23.6992 23.7002zM226.1 125.2c13.2002 0 23.7002 10.7002 23.7002 23.7002\nc0 13.0996 -10.5996 23.6992 -23.7002 23.6992c-13.1992 0 -23.6992 -10.6992 -23.6992 -23.6992s10.5 -23.7002 23.6992 -23.7002z\" />\n    <glyph glyph-name=\"gofore\" unicode=\"&#xf3a7;\" horiz-adv-x=\"400\" \nd=\"M324 128.2c54.2998 0 65.7002 -50.1006 67.7002 -77.7002c-46.5 -56.2998 -107.8 -82.5 -171 -82.5c-123.7 0 -220.7 101.5 -220.7 224c0 123.4 98 224 220.7 224c59 0 114.3 -23.2998 156.1 -65.5996l-62.2998 -63.3008c-25 25.4004 -58.2998 39.4004 -93.5996 39.4004\nc-73.2002 0 -132.4 -60.2998 -132.4 -134.4c0 -74.1992 59.2002 -134.399 132.4 -134.399c33.5996 0 65.3994 12.7002 89.8994 35.7998v34.7002h13.2002zM311.9 240.7c47.6992 0 88.0996 -35 88.0996 -100.2v-30.5996c-15.5 26.6992 -42.5 41.7998 -76 41.7998h-118.4v89\nh106.301z\" />\n    <glyph glyph-name=\"goodreads\" unicode=\"&#xf3a8;\" \nd=\"M299.9 256.8c5.09961 -37.2998 -4.7002 -79 -35.9004 -100.7c-22.2998 -15.5 -52.7998 -14.0996 -70.7998 -5.69922c-37.1006 17.2998 -49.5 58.5996 -46.7998 97.1992c4.2998 60.9004 40.8994 87.9004 75.2998 87.5c46.8994 0.200195 71.7998 -31.7998 78.2002 -78.2998\nzM448 360v-336c0 -30.9004 -25.0996 -56 -56 -56h-336c-30.9004 0 -56 25.0996 -56 56v336c0 30.9004 25.0996 56 56 56h336c30.9004 0 56 -25.0996 56 -56zM330 134.8c0 0 -0.0996094 34 -0.0996094 217.3h-29v-40.2998c-0.800781 -0.299805 -1.2002 0.5 -1.60059 1.2002\nc-9.59961 20.7002 -35.8994 46.2998 -76 46c-51.8994 -0.400391 -87.2002 -31.2002 -100.6 -77.7998c-4.2998 -14.9004 -5.7998 -30.1006 -5.5 -45.6006c1.7002 -77.8994 45.0996 -117.8 112.399 -115.199c28.9004 1.09961 54.5 17 69 45.1992\nc0.5 1 1.10059 1.90039 1.7002 2.90039c0.200195 -0.0996094 0.400391 -0.0996094 0.600586 -0.200195c0.299805 -3.7998 0.199219 -30.7002 0.0996094 -34.5c-0.200195 -14.7998 -2 -29.5 -7.2002 -43.5c-7.7998 -21 -22.2998 -34.7002 -44.5 -39.5\nc-17.7998 -3.89941 -35.5996 -3.7998 -53.2002 1.2002c-21.5 6.09961 -36.5 19 -41.0996 41.7998c-0.299805 1.60059 -1.2998 1.2998 -2.2998 1.2998h-26.7998c0.799805 -10.5996 3.19922 -20.2998 8.5 -29.1992c24.1992 -40.5 82.6992 -48.5 128.199 -37.4004\nc49.9004 12.2998 67.3008 54.9004 67.4004 106.3z\" />\n    <glyph glyph-name=\"goodreads-g\" unicode=\"&#xf3a9;\" horiz-adv-x=\"384\" \nd=\"M42.5996 44.7002h2.80078c12.6992 0 25.5 0 38.1992 -0.100586c1.60059 0 3.10059 0.400391 3.60059 -2.09961c7.09961 -34.9004 30 -54.5996 62.8994 -63.9004c26.9004 -7.59961 54.1006 -7.7998 81.3008 -1.7998c33.7998 7.40039 56 28.2998 68 60.4004\nc8 21.5 10.6992 43.7998 11 66.5c0.0996094 5.7998 0.299805 47 -0.200195 52.7998l-0.900391 0.299805c-0.799805 -1.5 -1.7002 -2.89941 -2.5 -4.39941c-22.0996 -43.1006 -61.2998 -67.4004 -105.399 -69.1006c-103 -4 -169.4 57 -172 176.2\nc-0.5 23.7002 1.7998 46.9004 8.2998 69.7002c20.5996 71.0996 74.5996 118.2 153.899 118.8c61.3008 0.400391 101.5 -38.7002 116.2 -70.2998c0.5 -1.10059 1.2998 -2.2998 2.40039 -1.90039v61.6006h44.2998c0 -280.301 0.0996094 -332.2 0.0996094 -332.2\nc-0.0996094 -78.5 -26.6992 -143.7 -103 -162.2c-69.5 -16.9004 -159 -4.7998 -196 57.2002c-8 13.5 -11.7998 28.2998 -13 44.5zM188.9 411.5c-52.5 0.5 -108.5 -40.7002 -115 -133.8c-4.10059 -59 14.7998 -122.2 71.5 -148.601\nc27.5996 -12.8994 74.2998 -15 108.3 8.7002c47.5996 33.2002 62.7002 97 54.7998 154c-9.7002 71.1006 -47.7998 120 -119.6 119.7z\" />\n    <glyph glyph-name=\"google-drive\" unicode=\"&#xf3aa;\" horiz-adv-x=\"512\" \nd=\"M339 133.1l-163.6 282.9h161.199l163.601 -282.9h-161.2zM201.5 109.5h310.5l-80.5996 -141.5h-310.5zM154.1 380.6l82.9004 -141.399l-156.4 -271.2l-80.5996 141.5z\" />\n    <glyph glyph-name=\"google-play\" unicode=\"&#xf3ab;\" horiz-adv-x=\"512\" \nd=\"M325.3 213.7l-220.7 221.3l280.801 -161.2zM47 448l256.6 -255.9l-256.6 -256c-13 6.80078 -21.7002 19.2002 -21.7002 35.3008v441.3c0 16.0996 8.7002 28.5 21.7002 35.2998zM472.2 222.4c19.2002 -14.3008 19.2002 -46.5 1.2002 -60.8008l-60.1006 -34.0996\nl-65.7002 64.5l65.7002 64.5zM104.6 -51l220.7 221.3l60.1006 -60.0996z\" />\n    <glyph glyph-name=\"gripfire\" unicode=\"&#xf3ac;\" horiz-adv-x=\"384\" \nd=\"M112.5 146.6c0 -26.8994 16.5996 -47.1992 32.5996 -69.5c22.5 -30.1992 44.2002 -56.8994 44.2002 -86.5c-0.0996094 -14.5 -4.39941 -29.6992 -17.5 -46.3994c0 5.2998 4.7998 12.2002 4.7998 22.2998c0 15.2002 -13 39.9004 -78.0996 86.5996\nc-34.2998 29.1006 -66.5 58.5 -66.5 108.301c0 114.699 147.1 176.5 147.1 268.6c0 3.2998 -0.199219 6.7002 -0.599609 10c5.09961 -2.40039 39.0996 -43.2998 39.0996 -90.4004c0 -80.5 -105.1 -129.199 -105.1 -203zM317.8 185.6\nc1.5 -8.39941 2.2002 -16.5996 2.2002 -24.5996c0 -51.7998 -29.4004 -97.5 -67.2998 -136.8c-1 -1 -2.2002 -2.40039 -3.2002 -2.40039c-3.59961 0 -35.5 41.6006 -35.5 53.2002c0 0 41.7998 55.7002 41.7998 96.9004c0 10.7998 -2.7002 21.6992 -9.09961 33.3994\nc-1.5 -32.2998 -55.7002 -87.7002 -58.1006 -87.7002c-2.69922 0 -17.8994 22 -17.8994 42.1006c0 5.2998 1 10.7002 3.2002 15.7998c2.39941 5.5 56.5996 72 56.5996 116.7c0 6.2002 -1 12 -3.40039 17.0996l-4 7.2002c16.7002 -6.5 82.6006 -64.0996 94.7002 -130.9z\" />\n    <glyph glyph-name=\"grunt\" unicode=\"&#xf3ad;\" horiz-adv-x=\"384\" \nd=\"M61.2998 258.7c0.5 4.89941 2.7998 10 7 12h0.100586c-4.60059 1.7002 -9.2002 3.09961 -13.5 4.09961c42.1992 10.2002 73.3994 -20.5996 83.0996 -31.7998c16.5996 -19.2002 35.5 -8.7998 35.5 -8.7998c0.299805 -11.1006 -10.2998 -19 -21.0996 -19.5\nc1.19922 -15.4004 -13.9004 -32.5 -13.9004 -32.5s5.59961 15 2.7002 25.2998c-0.900391 3.2002 -2 6.09961 -3 8.5c-19.2998 -17.2002 -48 -1.5 -54.9004 6.09961c-9.59961 10.6006 -12.3994 23.8008 -12.7998 34.1006c-1.7998 -3.7998 -3.2998 -9.10059 -4 -16.6006\nc0 0 -6.2998 9.10059 -5.2002 19.1006zM89.5996 260.5c-2.89941 -9.09961 -3.39941 -27.7002 6.90039 -35.2998c16.2998 -12.1006 32.2998 -5 38 -1.7002c-7.5 11.2998 -25.4004 26 -44.9004 37zM231.7 214.7c-10.7998 0.399414 -21.4004 8.39941 -21.2002 19.2998\nc0 0 18.7998 -10.4004 35.5 8.7998c9.7002 11.2002 40.7998 42 83.0996 31.7998c-4.2998 -0.899414 -8.89941 -2.2998 -13.5 -4.09961h0.100586c4.09961 -1.7998 6.39941 -6.7998 7 -11.7998c1.2002 -10 -5.2002 -19.1006 -5.2002 -19.1006\nc-0.599609 7.5 -2.2002 12.8008 -4 16.6006c-0.5 -10.2998 -3.2002 -23.5 -12.7998 -34.1006c-6.7998 -7.59961 -35.5 -23.3994 -54.7998 -6.09961c-1 -2.5 -2.10059 -5.2998 -3 -8.5c-2.90039 -10.2998 2.69922 -25.2998 2.69922 -25.2998s-15.0996 17 -13.8994 32.5z\nM294.4 260.5c-19.5 -11 -37.4004 -25.5996 -44.9004 -37c5.7002 -3.40039 21.5996 -10.5 37.9004 1.59961c10.3994 7.7002 10 26.3008 7 35.4004zM160 29.5c4.09961 0 7 -0.900391 8.7998 -2.7002c2.2002 -2.2998 1.5 -5.2998 0.900391 -6.7998\nc-1.10059 -2.7002 -5.5 -11.5996 -13 -19.7998c-2.7002 -2.90039 -6.60059 -4.60059 -11 -4.60059c-4.2998 0 -8.7002 1.60059 -11.7998 4.30078c-2.30078 2.09961 -10.2002 9.5 -13.7002 18.5996c-1.2998 3.40039 -1 6.09961 0.899414 8.09961\nc1.30078 1.30078 4 2.90039 9.5 2.90039h29.4004zM349.2 130.7c0 0 29.2998 -22.5 21.0996 -70.9004c-5.2998 -29.5 -23.2002 -46 -47 -54.7002c-8.7998 -19.0996 -29.3994 -45.6992 -67.2998 -49.5996c-14.5 -11.7998 -34.5 -19.5 -63.5996 -19.5h-0.200195\nc-29.2002 0 -49.2002 7.7002 -63.6006 19.5c-37.8994 3.90039 -58.5 30.5 -67.2998 49.5996c-23.7998 8.60059 -41.7998 25.2002 -47 54.7002c-8.59961 48.2002 20.6006 70.7998 20.6006 70.7998c2.39941 -17.8994 13 -33.8994 24.5996 -43.7998\nc3.09961 22.7002 3.7002 55.5 3.7002 62.4004c0 14.7002 -9.5 24.5 -12.2002 26.0996c-2.5 1.5 -5.2998 3 -8.2998 4.60059c-18 9.59961 -40.4004 21.5996 -40.4004 43.6992c0 16.1006 9.2998 23.2002 15.4004 27.8008c0.799805 0.599609 1.5 1.19922 2.2002 1.69922\nc2.09961 1.7002 3.69922 3 4.2998 4.40039c4.39941 9.7998 3.59961 34.2002 1.7002 37.5996c-0.600586 0.700195 -16.8008 21 -11.8008 39.2002c2 7.40039 6.90039 13.2998 14.1006 17c5.2998 2.7002 11.7998 4.2002 19.5 4.5c0.0996094 2 0.5 4 0.899414 5.90039\nc0.5 2.59961 1.10059 5.2998 0.900391 8.09961c-0.400391 4.7002 -0.799805 9.10059 -2.2002 11.2998c-8.39941 13.3008 -28.7998 17.6006 -29 17.6006l-12.2998 2.39941l8.09961 9.40039c0.200195 0.200195 17.3008 17.5 46.3008 17.5c7.89941 0 16 -1.2998 23.8994 -3.5\nc24.2998 -7.7998 42.9004 -30.5 49.4004 -39.2998c2 0.599609 3.89941 1.2002 5.89941 1.7002c-1 26.3994 20.7002 47.3994 28.2002 48.2998c0.5 -4.5 -0.399414 -22.2002 7.2002 -27.6006c2.2002 14.4004 9.59961 30.3008 39.0996 40.7002\nc-6.2998 -16.7002 -0.799805 -30.7002 1.80078 -37.2002c20.0996 18.2002 33.6992 15.2002 33.6992 15.2002s-13.1992 -22.7002 -9 -38.5c3.30078 -0.799805 6.5 -1.7002 9.60059 -2.7002c6.5 8.80078 25.2002 31.5 49.3994 39.3008\nc8.10059 2.59961 16.2002 3.89941 24.1006 3.89941c29 0 46.2002 -17.2998 46.2998 -17.5l8.09961 -9.5l-12.2998 -2.39941c-0.200195 0 -20.5996 -4.30078 -29 -17.6006c-1.39941 -2.2998 -1.7998 -6.59961 -2.2002 -11.2998\nc-0.199219 -2.7998 0.300781 -5.5 0.900391 -8.09961c0.400391 -2 0.799805 -3.90039 0.900391 -5.90039c7.59961 -0.299805 14.1992 -1.7998 19.5 -4.5c7.19922 -3.7002 12.0996 -9.59961 14.0996 -17c4.90039 -18.2998 -11.2002 -38.5996 -11.7998 -39.2002\nc-1.90039 -3.39941 -2.7002 -27.7998 1.7002 -37.5996c0.599609 -1.40039 2.19922 -2.7002 4.2998 -4.40039c0.700195 -0.599609 1.39941 -1.09961 2.2002 -1.7002c6.09961 -4.59961 15.3994 -11.5996 15.3994 -27.7998c0 -22.0996 -22.3994 -34.0996 -40.3994 -43.7002\nc-2.90039 -1.59961 -5.80078 -3.09961 -8.30078 -4.59961c-2.69922 -1.59961 -12.1992 -11.4004 -12.1992 -26.0996c0 -6.90039 0.599609 -39.7002 3.69922 -62.4004c11.6006 9.90039 22.2002 25.7998 24.6006 43.7002zM305.7 410.3\nc-17.7998 -5.7002 -31.6006 -23.0996 -37.7002 -32.2002c1.59961 -0.699219 3.09961 -1.39941 4.7002 -2.19922c2.59961 -1.2002 4.89941 -2.40039 7.09961 -3.7002c2.7002 5.5 8.40039 13.7002 20.7002 22.3994c8.2002 5.80078 18.2002 8.90039 28.7002 8.90039\nc3.59961 0 6.7998 -0.400391 9.2002 -0.799805c3.2998 2.09961 6.59961 3.89941 9.69922 5.2998c-4.7998 2 -13.6992 5 -24.6992 5c-6.10059 0 -12.1006 -0.900391 -17.7002 -2.7002zM326.7 392.1c-7.40039 -0.299805 -14 -2.69922 -19.6006 -7\nc-8 -6.39941 -12.0996 -17.6992 -13.5 -22.5c4.90039 -4.19922 8.2002 -8.09961 10.5 -11.1992c3.40039 1 7.30078 1.89941 11.5 2.69922c3.30078 4.5 3.90039 10.6006 4.40039 17c0.5 6.2002 1.09961 12.6006 4.40039 17.8008c0.699219 1.09961 1.5 2.19922 2.2998 3.19922\nzM45.5996 402.7c2.40039 0.399414 5.60059 0.799805 9 0.899414c10.6006 0 20.5 -3.09961 28.8008 -8.89941c12.3994 -8.7002 18.0996 -17 20.6992 -22.4004c2.2002 1.2002 4.60059 2.5 7.10059 3.7002c1.59961 0.799805 3.2002 1.5 4.7998 2.2002\nc-6.09961 8.89941 -19.9004 26.2998 -37.7002 32.0996c-5.7002 1.7998 -11.5996 2.7002 -17.7002 2.7002c-11 0 -19.8994 -3 -24.6992 -5c3.09961 -1.2998 6.39941 -3.09961 9.69922 -5.2998zM90.2998 362.6c-1.39941 4.80078 -5.5 16.1006 -13.5 22.4004\nc-5.5 4.40039 -12.0996 6.7002 -19.5 7c0.799805 -1 1.60059 -2.09961 2.2998 -3.2002c3.30078 -5.2002 3.90039 -11.5996 4.40039 -17.7998c0.5 -6.40039 1 -12.5 4.2998 -16.9004c4.2002 -0.799805 8.10059 -1.7998 11.5 -2.69922c2.2002 3.19922 5.60059 7 10.5 11.1992z\nM58.0996 188.1c8.7002 -5 18.1006 -16.7998 19 -34.1992c0.900391 -14.7002 -0.899414 -49.9004 -3.39941 -75.9004c12.5 -4.7998 26.7002 -6.40039 39.7002 -6.7998c2 4.09961 3.89941 8.5 5.5 13.0996c0.699219 1.90039 19.5996 51 26.3994 62.2002\nc-5.39941 -39 -17.5 -73.7002 -23.5 -89.5996c3.40039 0.399414 7.2998 0.699219 11.7002 0.699219h117c4.40039 0 8.2002 -0.199219 11.7002 -0.699219c-6 15.8994 -18 50.5996 -23.5 89.5996c6.7998 -11.0996 25.7002 -60.2002 26.3994 -62.2002\nc1.60059 -4.59961 3.5 -9 5.5 -13.0996c13 0.399414 27.3008 2 39.7002 6.7998c-2.5 26 -4.2998 61.2998 -3.39941 75.9004c1.09961 17.5 10.3994 29.1992 19.0996 34.1992c2.7002 1.5 5.5 3.10059 8.40039 4.60059c14.7998 8 30.1992 16.2998 30.1992 30.5\nc0 11.0996 -4.2998 14.5 -8.89941 18.2002l-0.5 0.399414c-0.700195 0.600586 -1.5 1.2002 -2.2002 1.7998c0.900391 -7.19922 1.90039 -13.2998 2.7002 -14.8994c0 0 -12.1006 15 -15.7002 44.2998c-1.40039 11.5 1.09961 34.2002 5.09961 43\nc-0.199219 -4.90039 0 -9.7998 0.300781 -14.4004c0.399414 0.900391 0.799805 1.60059 1.2998 2.2002c3.2998 4 11.8994 17.5 9.39941 26.6006c-1 3.39941 -3.19922 6 -6.69922 7.7998c-3.80078 1.89941 -8.80078 2.89941 -15.1006 2.89941\nc-12.2998 0 -25.8994 -3.7998 -32.8994 -6c-25.1006 -7.89941 -55.4004 -30.8994 -64.1006 -37.6992c-0.200195 -0.200195 -0.399414 -0.300781 -0.399414 -0.300781l-5.60059 -3.89941l3.5 5.7998c0.200195 0.299805 19.1006 31.4004 53.1006 46.5\nc-2 2.90039 -7.40039 8.2002 -21.6006 15.0996c-21.3994 10.5 -46.3994 15.8008 -74.2998 15.8008c-27.7998 0 -52.9004 -5.30078 -74.2998 -15.8008c-14.2002 -7 -19.6006 -12.1992 -21.6006 -15.0996c34.1006 -15.0996 53 -46.2002 53.2002 -46.5l3.5 -5.7998\nl-5.59961 3.89941s-0.200195 0.100586 -0.400391 0.300781c-8.7002 6.7998 -39 29.6992 -64.0996 37.6992c-7 2.30078 -20.6006 6 -32.9004 6c-6.2998 0 -11.2998 -1 -15.0996 -2.89941c-3.60059 -1.7998 -5.7998 -4.2998 -6.7002 -7.7998\nc-2.40039 -9.10059 6.2002 -22.6006 9.40039 -26.6006c0.5 -0.599609 0.899414 -1.39941 1.2998 -2.2002c0.299805 4.60059 0.5 9.5 0.299805 14.4004c4 -8.7002 6.5 -31.5 5.09961 -43c-3.59961 -29.2998 -15.6992 -44.2998 -15.6992 -44.2998\nc0.799805 1.59961 1.7998 7.7002 2.69922 14.8994c-0.799805 -0.599609 -1.5 -1.19922 -2.19922 -1.7998l-0.5 -0.399414c-4.60059 -3.60059 -8.90039 -7.10059 -8.90039 -18.2002c0 -14.2002 15.2998 -22.5 30.2002 -30.5c2.7998 -1.5 5.7002 -3 8.39941 -4.60059z\nM34.7998 43.4004c11.9004 -19.7002 35.5 -29.4004 58.2002 -29.5c-4.5 13.2998 -3.09961 24 4.09961 31.7998l1.40039 1.39941c1.7998 2.40039 4.2998 5.80078 7 10c-27.2002 1.10059 -63.5 11 -74.4004 45.4004c-5 -5 -8.39941 -39.0996 3.7002 -59.0996zM80.5 -0.0996094\nc6.5 -9.5 16.5 -19.6006 30.9004 -25.5c-4.90039 7.19922 -8.80078 15.0996 -12.3008 23.0996c-6.39941 0.5 -12.5996 1.2998 -18.5996 2.40039zM192 -50.2002c60.5996 0.100586 78.2998 45.9004 84.9004 64.7002c3.59961 10.5 3.2998 18.2998 -0.900391 23.0996\nc-2.7998 3.30078 -9.5 7.2002 -24.5996 7.2002h-118.801c-15.0996 0 -21.6992 -3.89941 -24.5996 -7.2002c-4.2998 -4.89941 -4.59961 -12.5996 -0.900391 -23.0996c6.60059 -18.9004 24.3008 -64.5996 84.9004 -64.7002zM272.6 -25.5996\nc14.4004 5.89941 24.4004 16 30.9004 25.5c-6 -1.10059 -12.2002 -1.90039 -18.5996 -2.40039c-3.5 -8 -7.40039 -15.9004 -12.3008 -23.0996zM349.2 43.4004c12.2002 19.8994 8.7998 54 3.7998 59c-10.9004 -34.4004 -47.2002 -44.2002 -74.4004 -45.4004\nc2.7002 -4.2002 5.2002 -7.59961 7 -10c0.5 -0.5 1 -1 1.40039 -1.5c7.2002 -7.7002 8.59961 -18.5 4.09961 -31.7998c22.5 0.399414 46.1006 10 58.1006 29.7002zM191.9 260.3c-12.7002 0.200195 -27.2002 17.7998 -27.2002 17.7998\nc9.89941 -6 18.7998 -8.09961 27.2998 -8.2998c8.5 0.200195 17.4004 2.2998 27.2998 8.2998c0 0 -14.5 -17.6992 -27.2002 -17.7998h-0.199219zM253.6 29.5996c5.40039 -0.0996094 8.10059 -1.69922 9.40039 -3c1.90039 -1.89941 2.2002 -4.59961 0.900391 -7.89941\nc-3.5 -8.90039 -11.4004 -16.1006 -13.7002 -18.1006c-3.10059 -2.59961 -7.40039 -4.19922 -11.7998 -4.19922c-4.40039 0 -8.30078 1.59961 -11 4.5c-7.5 8 -12 16.6992 -13 19.2998c-0.600586 1.5 -1.30078 4.39941 0.899414 6.7002\nc1.7002 1.7998 4.7002 2.69922 8.90039 2.69922h29.3994z\" />\n    <glyph glyph-name=\"gulp\" unicode=\"&#xf3ae;\" horiz-adv-x=\"256\" \nd=\"M209.8 56.9004l-14.0996 -24.6006l-4.60059 -80.2002c0 -8.89941 -28.2998 -16.0996 -63.0996 -16.0996s-63.0996 7.2002 -63.0996 16.0996l-5.80078 79.4004l-14.8994 25.4004c41.2002 -17.3008 126 -16.7002 165.6 0zM13.7998 310.2\nc30.7002 -17 197.8 -16.9004 228.3 0.200195l-14.7998 -136.801c-4.7998 -4.19922 -11.5996 -10.1992 -16.5996 -14.0996c-1.60059 -1.2002 -6 -4.7002 -8 -4.7002c-1.2998 0 -2.2002 0.5 -2.2002 1.7998c0.0996094 1 3.40039 4.5 5 6.40039\nc4.90039 5.7002 13.7998 16 13.7998 23.4004c0 7 -10.7002 14.0996 -25.7002 0.199219c-1.59961 -1.5 -3.09961 -3 -4.5 -4.5c0.400391 1.10059 1.10059 5.10059 1.10059 6.2002c0 2.7998 -1.40039 4 -4.2002 4c-1 0 -1.90039 -0.599609 -2.7002 -1.59961\nc-2.59961 -3.10059 -3.89941 -7.5 -5.2998 -11.2998c-0.5 -1.80078 -1.09961 -3.60059 -1.7002 -5.5c-0.399414 -0.200195 -0.700195 -0.300781 -0.899414 -0.600586c-3.80078 -3.89941 -17.7002 -17 -23.1006 -17c-2.2998 0 -1.59961 3.60059 -1 5.7998\nc1 3.40039 6.7998 17.7002 8.7002 22.3008c4.59961 11.0996 8 19.7998 13.2002 31.8994c3.89941 9.2002 3.7998 8.60059 4.5 10.5c0.700195 2.10059 0.700195 4.90039 -1 6.2002c-1 0.700195 -2 1.09961 -3.2002 1.09961c-2.40039 0 -4.7998 -1.39941 -6.09961 -4.69922\nc-25.5 -64.4004 -25.2002 -63.3008 -26.4004 -68.2002c-2 -1.7002 -4.40039 -3.40039 -6.7998 -4.5c-3.10059 -1.40039 -6.7998 -2.2002 -6.7998 1.2002c0 3.69922 1.39941 8.19922 2.69922 11.6992c2.2002 6.10059 4.90039 11.1006 6.90039 16.7002\nc0.900391 2.40039 1.2998 4.7002 -0.400391 6.90039c-0.799805 1 -1.89941 1.5 -3.19922 1.5c-2.60059 0 -4.10059 -2.60059 -5.2002 -5.10059c-0.700195 -1.5 -1.2998 -3.09961 -1.7998 -4.7998c-1.2002 -4 -3.60059 -8.7002 -5.60059 -12.2998\nc-2.7998 -5 -6.5 -10.0996 -11.0996 -13.5c-2.2002 -1.59961 -4.5 -2.40039 -6.90039 -2.40039c-3.5 0 -2.39941 5.7002 -1.5 9c2.2002 7.80078 5.5 13.3008 9.2998 20.8008c1.30078 2.69922 2.30078 5.39941 -0.299805 7.19922c-0.5 0.300781 -1 0.5 -1.59961 0.700195\nc-3.40039 0.900391 -6 -1.09961 -7.60059 -4.5c-3.09961 -6.2998 -5.39941 -11.7002 -7.09961 -16.2002c-3.2998 -8.89941 -6.90039 -18.2998 -4.59961 -23.7998c1.5 -3.7002 4.5 -5.09961 8.59961 -5.09961c9.7998 0 17.7998 6.7002 22.4004 14.8994\nc-4.30078 -19.7998 8.19922 -17.2998 20 -8.09961c0.0996094 -0.400391 0.0996094 -0.799805 0.199219 -1.2002c1.5 -6.7002 8.7002 -6.7002 14.5 -4.09961c3.5 1.59961 8.2002 4.5 14.4004 10.5c0.200195 0.299805 0.799805 1.39941 -0.799805 -2.2998\nc-7.2002 -16.2002 -13.5 -28.2002 -15 -34.3008c-0.200195 -0.899414 -0.299805 -1.7998 -0.299805 -2.69922c0 -1.80078 0.399414 -3.10059 1.2998 -3.7002c1.59961 -1.2002 4.2002 -1.2998 6.09961 -0.299805c1.7998 1 3.10059 2.59961 4 4.5\nc1 2.19922 0.200195 0.699219 5.2002 14c5 13.3994 2.90039 7.7998 9.09961 22c1.90039 4.2998 4.2002 9.5 8.5 15.5c2.5 3.39941 5.5 7 8.7002 9.69922c5.7002 4.7002 11.7002 5.40039 11.7002 2.5c0 -2.19922 -3.2998 -6.39941 -4.7002 -8.09961\nc-5.2998 -6.7002 -14.3994 -16.2998 -14.3994 -21.5c0 -9.5 12 -8 17.3994 -5.7002c7.2998 3.2002 13.9004 9.60059 19.6006 14.7998l-10.9004 -94.5996c-1.90039 -4.90039 -39.0996 -17.0996 -88.2002 -17.0996c-49 0 -86.2002 12.0996 -88.2002 17.0996l-7.59961 79.5996\nc2.09961 -1.5 4.2998 -2.39941 7.7002 -2.39941c7.39941 0 16.0996 6.7002 21.5 11.7998c2.2998 2.2002 4.39941 4.40039 6.39941 6.59961c-1 -3 -7.09961 -22 -7.2998 -25.1992c-0.0996094 -1 -0.200195 -4.90039 0.799805 -6.30078\nc0.5 -0.799805 1.40039 -1.19922 2.60059 -1.19922c2.89941 0 5.59961 4.69922 6.2998 7.5c0 0 1.7998 6.2998 7.59961 25.7998c6.30078 21.0996 10 24.5 10 34.7002c0 5.59961 -7.2998 6.7998 -9.89941 0l-5.2002 -15.5c-2.2002 -4.5 -8 -11.5 -12.5 -16\nc-3.5 -3.5 -10.7998 -10.1006 -15.7998 -10.1006c-2.40039 0 -3.90039 1.40039 -4.90039 3.60059c-2.2998 5.2998 -0.899414 14.2998 0.600586 19.8994c2.59961 9.7002 6.89941 19.4004 12 28.2002c4.19922 7.2998 10.1992 15.7002 17.0996 20.7002\nc6.59961 4.7998 12.7998 4.5 16.9004 -2.7998c1.5 -2.7002 3.7998 -7.30078 6.7998 -7.30078c2.5 0 5.7002 2.60059 4.5 9.10059c-0.5 2.5 -4.90039 8.7998 -10.1006 11.7998c-6 3.59961 -12.3994 3.59961 -18.6992 0.900391\nc-19.2002 -8.2002 -34.1006 -35.2002 -40 -55.2002zM243.5 318.7c0 -21 -231.2 -21 -231.2 0c0 8.7998 51.7998 15.8994 115.601 15.8994c9 0 17.7998 -0.0996094 26.2998 -0.399414l12.5996 48.7002l61.2998 64.5c1.40039 1.39941 5.80078 0.199219 9.90039 -3.5\nc4.09961 -3.7002 6.59961 -7.90039 5.2998 -9.30078l-0.0996094 -0.0996094l-57.2998 -60.5l-10 -40.7002c39.8994 -2.59961 67.5996 -8.09961 67.5996 -14.5996zM174.1 314.1c0 0.800781 -0.899414 1.5 -2.5 2.10059l-0.199219 -0.799805\nc0 -1.30078 -5 -2.40039 -11.1006 -2.40039c-6.09961 0 -11.0996 1.09961 -11.0996 2.40039c0 0.0996094 0 0.199219 0.0996094 0.299805l0.200195 0.700195c-1.7998 -0.600586 -3 -1.40039 -3 -2.30078c0 -2.09961 6.2002 -3.69922 13.7002 -3.69922\nc7.7002 -0.100586 13.8994 1.59961 13.8994 3.69922z\" />\n    <glyph glyph-name=\"hacker-news-square\" unicode=\"&#xf3af;\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM21.2002 218.8h-0.200195c0.0996094 0.100586 0.200195 0.299805 0.299805 0.400391c0 -0.100586 0 -0.299805 -0.0996094 -0.400391z\nM239.2 164.9l80.7998 155.1h-34.7998c-54.7998 -101.2 -48.2998 -98.5996 -60.6006 -125.6c-10.0996 24.3994 -6.7998 27.2998 -59.2998 125.6h-37.2998l79.7998 -153.3v-102.7h31.4004v100.9z\" />\n    <glyph glyph-name=\"hire-a-helper\" unicode=\"&#xf3b0;\" horiz-adv-x=\"512\" \nd=\"M443.1 448c3.90039 -36.4004 32.5 -65.7998 68.9004 -71.7002v-370.5c-35.4004 -4 -64.9004 -33.3994 -67.9004 -69.7998h-372.199c-5.90039 36.4004 -34.5 63.9004 -71.9004 68.7998v371.5c37.4004 3.90039 67.9004 34.4004 71.9004 71.7002h371.199zM406.1 43.0996\nc7.80078 0 5.80078 10.8008 0 10.8008c-10.2998 3.39941 -13.5 3.59961 -21.6992 13.7998c-7.80078 12.8994 -7.90039 44.3994 -7.90039 127.8v101.2c0 22.0996 12.2002 28.2998 28.5996 32.3994c8.90039 2.2002 3.90039 11.8008 -1 11.8008\nc-36.5 0 -20.5996 -2 -57.0996 -2c-32.7002 0 -16.5 2 -49.2002 2c-3.2998 0 -8.5 -8.30078 -1 -10.8008c4.90039 -1.59961 27.6006 -3.69922 27.6006 -39.2998c0 -45.5996 0.199219 -55.7998 -1 -68.7998c0 -1.2998 -2.30078 -12.7998 -12.8008 -12.7998h-109.199\nc-10.5 0 -12.8008 11.5 -12.8008 12.7998c-1.19922 13 -1 23.2002 -1 68.7998c0 35.6006 22.7002 37.7002 27.6006 39.2998c7.5 2.5 2.2998 10.8008 -1 10.8008c-32.7002 0 -16.5 -2 -49.2002 -2c-36.5 0 -20.5996 2 -57.0996 2c-5 0 -9.80078 -9.60059 -1 -11.8008\nc16.3994 -4.09961 28.5996 -10.1992 28.5996 -32.3994v-101.2c0 -83.4004 -0.200195 -114.9 -7.90039 -127.8c-8.19922 -10.2998 -11.5 -10.4004 -21.6992 -13.7998c-5.80078 0 -7.90039 -10.8008 0 -10.8008c36.2998 0 18.7998 2 55.0996 2c35.7998 0 21 -2 56.0996 -2\nc6 0 4.90039 8.2002 0 9.80078c-22.7998 7.59961 -22.8994 10.2998 -24.5996 12.7998c-10.4004 15.5996 -5.90039 83 -5.90039 113c0 5.2998 6.40039 12.7998 13.8008 12.7998h111.199c7.40039 0 13.8008 -7.5 13.8008 -12.7998c0 -30 4.5 -97.4004 -5.90039 -113\nc-1.7002 -2.60059 -1.7998 -5.2002 -24.5996 -12.7998c-4.90039 -1.60059 -5.90039 -9.80078 0 -9.80078c35.0996 0 20.2998 2 56.0996 2c36.2998 0 18.7998 -2 55.0996 -2z\" />\n    <glyph glyph-name=\"hotjar\" unicode=\"&#xf3b1;\" \nd=\"M414.9 286.5c30 -53 41.7998 -121.6 26.2998 -180.9c-14.7002 -56.6992 -68.2998 -120.3 -148.8 -145.6c54.5 76.9004 43.8994 200.1 -27.1006 215.5c54.2002 -93.9004 -53.7002 -180.3 -110.8 -93.9004c-2.5 -7.19922 -25.0996 -74.5 4.09961 -129.6\nc-61.0996 9.09961 -117.8 33.5 -144.6 93.4004c-35 78.1992 -2.7002 149.8 79 204.899c129.2 87.2998 28.0996 197.7 28.0996 197.7s219.101 -29 293.801 -161.5z\" />\n    <glyph glyph-name=\"hubspot\" unicode=\"&#xf3b2;\" horiz-adv-x=\"512\" \nd=\"M267.4 236.4l-163.2 114.699c-7.90039 -4.69922 -17 -7.59961 -26.7998 -7.59961c-28.8008 0 -52.2002 23.4004 -52.2002 52.2998c0 28.7998 23.3994 52.2002 52.2002 52.2002c28.8994 0 52.3994 -23.4004 52.3994 -52.2002c0 -4.7998 -0.799805 -9.39941 -2 -13.7998\nc51.4004 -39.0996 141.3 -103.9 168.9 -124.8c13.0996 6.89941 27.5 11.5 42.7002 13.5996v61.2002c-17.5 7.40039 -28.2002 23.7998 -28.2002 42.9004c0 26.0996 20.5996 47.8994 46.7002 47.8994c26.0996 0 47 -21.7998 47 -47.8994\nc0 -19.1006 -10.7002 -35.5 -28.2002 -42.9004v-61.5996c62.5 -9.5 110.2 -63.5 110.2 -128.7c0 -71.9004 -58.1006 -130.2 -130 -130.2c-29.9004 0 -57.3008 10 -79.3008 26.9004l-50 -50.2002c1.30078 -3.90039 1.90039 -7.90039 1.90039 -12.1006\nc0 -10.6992 -4.2002 -20.8994 -11.7998 -28.5c-7.7002 -7.69922 -17.7998 -11.5996 -28.6006 -11.5996c-10.6992 0 -20.8994 4 -28.5 11.5996c-7.59961 7.60059 -11.7998 17.7002 -11.7998 28.5c0 10.8008 4.2002 21 11.7998 28.6006\nc7.60059 7.59961 17.7002 11.7998 28.5 11.7998c4.90039 0 9.60059 -0.900391 14 -2.5l49.5 49.7998c-16.2998 21.7002 -26 48.7002 -26 78c0 37.2998 15.7002 70.9004 40.8008 94.6006zM356.9 72.7998c38.0996 0 69 30.9004 69 69c0 38.1006 -30.9004 69 -69 69\nc-38.1006 0 -69 -30.8994 -69 -69c0 -38.0996 30.8994 -69 69 -69z\" />\n    <glyph glyph-name=\"itunes\" unicode=\"&#xf3b4;\" \nd=\"M223.6 367.7c94.5 0 171.2 -76.7002 171.2 -171.3c0 -94.5 -76.5996 -171.2 -171.2 -171.2c-94.5996 0 -171.1 76.7998 -171.1 171.3s76.5 171.2 171.1 171.2zM303 127.7c1.40039 6.2002 0.900391 -3 1 167.6c0 5.7002 -3.2998 9.10059 -9 8.7002\nc-1.7998 0 -14.0996 -2.40039 -115.1 -21.4004c-0.900391 0 -4.60059 -1 -6.7002 -2.69922c-2 -1.60059 -3.10059 -3.80078 -3.5 -6.40039c-1.7002 -6.7002 2.39941 -128 -2.60059 -133.7c-2.09961 -2.5 -4.69922 -3.2002 -7.69922 -3.7002\nc-17.7002 -3.19922 -29.6006 -4.7998 -38 -12.7998c-14.5 -14.2002 -7 -38.8994 14.3994 -42.8994c8 -1.40039 23.1006 0.599609 31.4004 5.19922c7.2998 3.80078 12.7998 10.6006 14.8994 19.6006c1.7002 7.7002 1.2002 2.39941 1.2002 118.5\nc0 5.7002 1.7002 7.2002 6.7002 8.2998c0 0 87.9004 16.4004 91.9004 17.0996c5.69922 1 8.39941 -0.5 8.39941 -6.09961c0 -78.7998 1 -77.2002 -2.2002 -80.7998c-2.09961 -2.5 -4.69922 -3.2002 -7.69922 -3.7002c-17.7002 -3.2002 -29.6006 -4.7998 -38 -12.7998\nc-10.6006 -10.4004 -10.4004 -26.7998 1.39941 -36.7998c9.7002 -7.80078 19.7998 -7.2002 31.9004 -5c13.7998 2.59961 24.0996 10.1992 27.2998 23.7998zM345.2 416c56.8994 0 102.8 -45.9004 102.8 -102.8v-242.4c0 -56.8994 -45.7998 -102.8 -102.8 -102.8h-242.4\nc-56.8994 0 -102.8 45.9004 -102.8 102.8v242.4c0 56.8994 45.9004 102.8 102.8 102.8h242.4zM223.6 4c106.301 0 192.5 86.2002 192.5 192.5s-86.1992 192.5 -192.5 192.5c-106.3 0 -192.5 -86.2002 -192.5 -192.5s86.2002 -192.5 192.5 -192.5z\" />\n    <glyph glyph-name=\"itunes-note\" unicode=\"&#xf3b5;\" horiz-adv-x=\"384\" \nd=\"M381.9 59.7998c-6.40039 -27.3994 -27.2002 -42.7998 -55.1006 -48c-24.5 -4.5 -44.8994 -5.59961 -64.5 10.2002c-23.8994 20.0996 -24.2002 53.4004 -2.7002 74.4004c17 16.1992 40.9004 19.5 76.8008 25.7998c6 1.09961 11.1992 2.5 15.5996 7.39941\nc6.40039 7.2002 4.40039 4.10059 4.40039 163.2c0 11.2002 -5.5 14.2998 -17 12.2998c-8.2002 -1.39941 -185.7 -34.5996 -185.7 -34.5996c-10.2002 -2.2002 -13.4004 -5.2002 -13.4004 -16.7002c0 -234.7 1.10059 -223.899 -2.5 -239.5\nc-4.2002 -18.2002 -15.3994 -31.8994 -30.2002 -39.5c-16.7998 -9.2998 -47.1992 -13.3994 -63.3994 -10.3994c-43.2002 8.09961 -58.4004 58 -29.1006 86.5996c17 16.2002 40.9004 19.5 76.8008 25.7998c6 1.10059 11.1992 2.5 15.5996 7.40039\nc10.0996 11.5 1.7998 256.6 5.2002 270.2c0.799805 5.19922 3 9.59961 7.09961 12.8994c4.2002 3.5 11.7998 5.5 13.4004 5.5c204 38.2002 228.899 43.1006 232.399 43.1006c11.5 0.799805 18.1006 -6 18.1006 -17.6006c0.200195 -344.5 1.09961 -326 -1.7998 -338.5z\" />\n    <glyph glyph-name=\"jenkins\" unicode=\"&#xf3b6;\" horiz-adv-x=\"512\" \nd=\"M487.1 23c1.5 -11.9004 -5.2998 -28.2998 -8.69922 -39.7002c-4.90039 -16.2998 -9.7002 -31.8994 -14.6006 -47.2002h-422c-0.700195 1.90039 -1.39941 4 -2.09961 6c-4.60059 14.2002 -12.6006 31.7002 -14.7002 45.8008\nc-3.09961 20.8994 16.5996 22.0996 29.2002 31.0996c19.5 14 34.7998 21.7998 55.8994 34.2998c6.30078 3.7998 25.1006 13.2002 27.3008 17.6006c4.2998 8.69922 -7.30078 20.8994 -10.4004 27.6992c-4.90039 10.7002 -7.5 19.8008 -8.2002 30.4004\nc-17.7002 2.7998 -31.0996 13.2998 -39.2002 25.2002c-13.3994 19.7002 -22.6992 56 -11.0996 83.7002c0.900391 2.19922 5.40039 6.5 6.09961 9.7998c1.40039 6.59961 -2.5 15.3994 -2.69922 22.3994c-1.2002 36 6.09961 67 30.2998 77.8008\nc9.7998 39.0996 45 52.1992 78.0996 71.5996c12.2998 7.2998 26 11.9004 40.1006 17.0996c50.5 18.7002 128.1 15.1006 170.1 -16.5996c17.7998 -13.5 46.2002 -41.9004 56.4004 -62.5c26.8994 -54.2998 25 -145.1 6.19922 -211.2\nc-2.5 -8.89941 -6.19922 -21.8994 -11.2998 -32.5996c-3.59961 -7.40039 -14.7002 -22.2998 -13.2998 -28.9004c1.40039 -6.7998 25.2998 -24.8994 30.4004 -29.8994c9.19922 -8.80078 26.7998 -20.7002 28.1992 -31.9004zM205.9 414.3\nc-33.2002 -9.39941 -75.7002 -33.5 -89.3008 -63.3994c10.6006 1.5 17.9004 6.7998 28.3008 7.5c3.89941 0.299805 9.09961 -1.60059 13.5996 -0.5c9 2.2998 16.5996 22.5 23.4004 30c6.59961 7.39941 14.5996 10.5 20 17.1992c3.5 1.7002 8.69922 1.60059 8.89941 6.80078\nc-1.5 1.69922 -3.09961 2.89941 -4.89941 2.39941zM101.1 320.7c-14.6992 -16.1006 -11.5996 -46.2998 -9.7998 -67.7998c26.5 16.6992 61.6006 -1.30078 61.2998 -29.6006c12.6006 0.299805 4.7002 15.7998 2.40039 25.7002c-7.5 32.5996 12.5996 67.9004 0.900391 97.5996\nc-22.7002 -1.7998 -41.3008 -11 -54.8008 -25.8994zM137.8 120.5c4.90039 -20 15.7002 -46 26.2998 -61.4004c13.6006 -19.3994 40.1006 -22.2998 68.7002 -24.1992c5.10059 11 23.9004 10.0996 36.2002 7.19922c-14.7002 5.80078 -28.4004 19.9004 -39.7002 32.4004\nc-13 14.2998 -26.0996 29.7002 -26.7998 48.4004c24.5 -34 44.7998 -63.8008 89.5 -78.8008c33.7998 -11.2998 73.2002 5.2002 99.2002 23.4004c10.7998 7.59961 17.2002 19.5996 24.8994 30.5996c28.7002 41.2002 42 100.101 39.1006 157.101\nc-1.2002 23.5 -1.10059 47 -9 62.7998c-8.2998 16.5996 -36.2002 31.2998 -52.5 16.4004c-3 16.0996 13.5996 26.0996 33.0996 20.2998c-13.8994 18 -28.5996 39.5996 -48.2998 50.7002c-34.4004 19.5 -92.7002 34.0996 -129.3 15.7998\nc-29.6006 -14.7002 -69.5 -39.1006 -83.1006 -70c12.7002 -29.7998 -3.7998 -57.1006 -4.7998 -87.4004c-0.599609 -16.0996 7.60059 -30.2002 8.2002 -47.7002c-4.40039 -7.19922 -17.7002 -8.09961 -26.9004 -7.59961c-3.09961 15.5 -8.5 32.9004 -24.5 34.7002\nc-22.5 2.39941 -39.0996 -16.2998 -40.0996 -35.7998c-1.2002 -23 17.7002 -61 44.4004 -58.4004c10.2998 1.09961 12.7998 11.4004 24.0996 11.2998c6.09961 -12.2002 -9.40039 -16 -11 -24.7002c-0.400391 -2.19922 1.2998 -11 2.2998 -15.0996zM359.8 -3.59961\nc-1.59961 -4.40039 0.299805 -10.4004 -0.599609 -16.5c14.8994 -4.2002 31.8994 -6.40039 50.7002 -7c3.69922 4.7998 4.89941 13.7998 4.5 22.7998c-0.600586 10.7998 -3.40039 33.0996 -10.1006 37c-14.0996 8.2002 -39 -16.5 -49.5996 -20.2998\nc1.2002 -3.40039 3.09961 -6 3.2002 -10.2002c6.2998 1.5 13.8994 0.5 19.2998 -2.2002c-6.2998 -0.700195 -13.2998 -0.599609 -17.4004 -3.59961zM342.6 16.4004c7.60059 5.5 14.3008 12 22.2002 17.0996c-18.2002 -1.59961 -41 -12.9004 -59 -4.90039\nc-0.0996094 -0.899414 -1.2998 -0.599609 -1.5 -1.39941c12.2998 -9.60059 21.5 -11.6006 38.2998 -10.7998zM330.5 -16.7998c26.9004 -8.40039 22.2002 36.7998 -2.7998 20.2002c-0.700195 -8.2002 1.2002 -10.8008 2.7998 -20.2002zM226 9.40039\nc0 6.19922 3.59961 12 2.7998 16.3994c-13.7998 2.40039 -31.8994 0.799805 -41.2998 7.2998c-9.59961 -9.69922 26.9004 -23 38.5 -23.6992zM57.7002 -49.0996v-0.100586h180.7c-0.800781 2.5 -1.5 4.90039 -2.2002 7.2002c-4.7998 15.2998 -7.5 26.7002 -8.7002 35.5\nc-19.2002 9.2002 -39.7002 18.5 -56.2002 30.2002c-3 2.2002 -23.3994 28.7002 -26.2002 27.5996c-36.8994 -14.5996 -71.3994 -39.7002 -102.199 -63.5c5.59961 -11.7998 10.5 -24.2002 14.7998 -36.8994zM298.3 -54.7998h-0.799805\nc0.299805 0.200195 0.5 0.399414 0.799805 0.5v-0.5zM305.8 -49.0996h9.60059c-1 1.5 -2.10059 2.89941 -3.2002 4.2998c-2.10059 -1.5 -4.2998 -2.90039 -6.40039 -4.2998zM320.9 -24.4004c0.0996094 3.60059 0.299805 7.2002 0.399414 10.6006\nc-6.5 3.2002 -14 5.5 -23.5 5.89941c6.5 3.30078 15.9004 3.2002 21.7998 7.10059c0.100586 1.5 0.100586 2.89941 0.200195 4.2998c-10.7998 0.900391 -14.7998 5.59961 -21.8994 9.5c-11.6006 6.40039 -29 13.2002 -43.9004 16.0996\nc-18.5 3.60059 -16.7998 -25.1992 -16 -42.3994c0.700195 -13.6006 7.7002 -28 10.7998 -37c1.5 -4.2002 1.7998 -8.7002 5.40039 -9.5c6.39941 -1.5 27.3994 6.89941 33.3994 10.2002c12.7002 6.89941 22.5 17.8994 33.3008 25.1992zM374.3 -49.0996l0.600586 12.5996\nc-11.2002 -0.700195 -17.5 10.2002 -25.4004 11c-6.90039 0.700195 -12.7002 -7.90039 -21.7002 -4.2002c-2 -2.2002 -3.89941 -4.7002 -6 -6.89941c3.2002 -3.90039 6.10059 -8.10059 8.90039 -12.5h17.3994c0.200195 3.19922 2.80078 5.7998 6.10059 5.7998\ns6 -2.60059 6.09961 -5.7998h14zM383 -49.0996h36.2998c-6.7002 10.1992 -20.0996 18.7998 -35.7002 11.5c-0.199219 -3.7002 -0.399414 -7.5 -0.599609 -11.5zM466.4 -12.0996c1.19922 6.19922 4.59961 19.5996 3.7998 25.0996\nc-1.40039 9.7998 -14.6006 17.0996 -21.4004 23.0996c-12.3994 11.1006 -20.2002 21 -33.2002 31.4004c-5.19922 -7.7998 -16.5 -13 -20.7998 -19.2998c30.7002 14.8994 36.2998 -55.7998 24.2002 -78.5c1.90039 -6.7998 8.2998 -9.40039 10.9004 -15.5\nc-0.700195 -1.10059 -1.30078 -2.2002 -1.90039 -3.2998h27.9004c0.199219 0 0.399414 0 0.599609 -0.100586c4.09961 13.1006 7.59961 25.9004 9.90039 37.1006zM222.2 317.5c5.39941 14.9004 27.2002 34.7002 45 32c7.7002 -1.2002 18 -8.2002 12.2002 -17.7002\nc-30.2002 7 -45.2002 -12.5996 -54.4004 -33.0996c-8.09961 2 -4.90039 13.0996 -2.7998 18.7998zM406.3 254.4c8.2002 3.59961 22.4004 0.699219 29.6006 5.2998c-4.2002 11.5 -10.3008 21.3994 -9.30078 37.7002c0.5 0 1 0 1.40039 -0.100586\nc6.7998 -14.2002 12.7002 -29.2002 21.4004 -41.7002c-5.7002 -13.5 -43.6006 -25.3994 -43.1006 -1.19922zM309.5 251.7c-6.7998 10.8994 -19 32.5 -14.5 45.2998c6.5 -11.9004 8.59961 -24.4004 17.7998 -33.2998c4.10059 -4 12.2002 -9 8.2002 -20.2002\nc-0.900391 -2.7002 -7.7998 -8.59961 -11.7002 -9.7002c-14.3994 -4.2998 -47.8994 -0.899414 -36.5996 17.1006c11.8994 -0.700195 27.8994 -7.80078 36.7998 0.799805zM336.8 181.7c3.7998 -6.60059 1.40039 -18.7002 12.1006 -20.6006\nc20.1992 -3.39941 43.5996 12.3008 58.0996 17.8008c9 15.1992 -0.799805 20.6992 -8.90039 30.5c-16.5996 20 -38.7998 44.7998 -38 74.6992c6.7002 4.90039 7.30078 -7.39941 8.2002 -9.69922c8.7002 -20.3008 30.4004 -46.2002 46.2998 -63.5\nc3.90039 -4.30078 10.3008 -8.40039 11 -11.2002c2.10059 -8.2002 -5.39941 -18 -4.5 -23.5c-21.6992 -13.9004 -45.7998 -29.1006 -81.3994 -25.6006c-7.40039 6.7002 -10.2998 21.4004 -2.90039 31.1006zM135.5 190.9c-6.7998 3.89941 -8.40039 21 -16.4004 21.3994\nc-11.3994 0.700195 -9.2998 -22.2002 -9.2998 -35.5c-7.7998 7.10059 -9.2002 29.1006 -3.5 40.2998c-6.59961 3.2002 -9.5 -3.59961 -13.0996 -5.89941c4.7002 34.0996 49.7998 15.7998 42.2998 -20.2998zM435.1 162.1c-10.0996 -19.1992 -24.3994 -40.3994 -54 -41\nc-0.599609 6.2002 -1.09961 15.6006 0 19.4004c22.7002 2.2002 36.6006 13.7002 54 21.5996zM293.2 149.7c18.8994 -9.90039 53.5996 -11 79.2998 -10.2002c1.40039 -5.59961 1.2998 -12.5996 1.40039 -19.4004c-33 -1.7998 -72 6.40039 -80.7002 29.6006zM385.4 103\nc-1.7002 -4.2998 -5.30078 -9.2998 -9.80078 -11.0996c-12.0996 -4.90039 -45.5996 -8.7002 -62.3994 0.299805c-10.7002 5.7002 -17.5 18.5 -23.4004 26c-2.7998 3.59961 -16.8994 12.8994 -0.200195 12.8994c13.1006 -32.6992 58 -29 95.8008 -28.0996z\" />\n    <glyph glyph-name=\"joget\" unicode=\"&#xf3b7;\" horiz-adv-x=\"496\" \nd=\"M378.1 403c116.601 -71.7998 152.9 -224.6 81 -341.2c-71.8994 -116.5 -224.6 -152.8 -341.199 -80.8994c-116.601 71.8994 -152.9 224.6 -81 341.199c46.8994 76 128.1 117.9 211.3 117.9c44.3994 0 89.3994 -11.9004 129.899 -37zM429.9 79.7998\nc5.2998 8.7002 9.89941 17.6006 13.8994 26.6006c-32.0996 -1.10059 -157.1 1.5 -208.8 -17.6006c-58.4004 -21.5 -36.9004 -53.3994 -31.2002 -67.0996c3.7998 -9.10059 14.7002 -28.7998 23.7002 -42.4004c6.7998 -0.599609 13.5996 -1 20.4004 -1\nc71.5996 0 141.6 36 182 101.5zM229.1 166.1c51 -1.2998 205.4 -4.39941 230.301 -4.89941c11.8994 81.7998 -24.5 166.6 -99.3008 212.7c-100.5 61.8994 -232.1 30.6992 -294 -69.8008c-28.5996 -46.3994 -37.2998 -99.3994 -28.5 -149.1\nc11 40.9004 49.7002 131.5 178.301 140.2c50.8994 4 41.5 -19.2002 23.5996 -29.7002c-17.7998 -10.5 -45.7002 -23.7998 -68.9004 -51.2002c-23.1992 -27.3994 3 -46.7998 58.5 -48.2002zM412.9 220.9c22.6992 -6 19.0996 -15.5 19.0996 -15.5l-46.5 -23.4004\nl-169.5 -1.59961s33.7998 10.7998 65.2998 31.2998c26 16.8994 49.7002 35.5996 67.5 35.5996c3.7002 0 7.2002 -0.899414 10.4004 -2.7002c18.5 -10.5996 -2.90039 -18.1992 -13.4004 -24.5996s-50.7002 -34.5 -50.7002 -34.5s1.40039 -7.59961 31.1006 8.2002\nc29.7002 15.8994 64 33.2002 86.7002 27.2002z\" />\n    <glyph glyph-name=\"js\" unicode=\"&#xf3b8;\" \nd=\"M0 416h448v-448h-448v448zM243.8 66.5996v143.7h-42.0996v-143.1c0 -21.1006 -8.7998 -26.5 -22.6006 -26.5c-14.5 0 -20.5 9.89941 -27.0996 21.5996l-34.2998 -20.7002c10 -21.0996 29.5 -38.5 63.2002 -38.5c37.2998 0 62.8994 19.9004 62.8994 63.5zM343.4 3.09961\nc39.8994 0 69.6992 20.8008 69.6992 58.6006c0 35.2002 -20.0996 50.8994 -55.8994 66.2002l-10.5 4.5c-18.1006 7.89941 -25.9004 13 -25.9004 25.5996c0 10.2002 7.7998 18 20.1006 18c12.0996 0 19.8994 -5.09961 27.0996 -18l32.7998 21\nc-13.7998 24.4004 -33 33.7002 -59.7998 33.7002c-37.5 0 -61.5996 -24 -61.5996 -55.6006c0 -34.2998 20.0996 -50.5996 50.5 -63.5l10.5 -4.5c19.2998 -8.5 30.6992 -13.5996 30.6992 -28c0 -12.0996 -11.1992 -20.7998 -28.5996 -20.7998\nc-20.7002 0 -32.5 10.9004 -41.5 25.6006l-34.2998 -19.8008c12.2998 -24.3994 37.5996 -43 76.7002 -43z\" />\n    <glyph glyph-name=\"js-square\" unicode=\"&#xf3b9;\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM243.8 66.5996v143.7h-42.0996v-143.1c0 -21.1006 -8.7998 -26.5 -22.6006 -26.5c-14.5 0 -20.5 9.89941 -27.0996 21.5996\nl-34.2998 -20.7002c10 -21.0996 29.5 -38.5 63.2002 -38.5c37.2998 0 62.8994 19.9004 62.8994 63.5zM343.4 3.09961c39.8994 0 69.6992 20.8008 69.6992 58.6006c0 35.2002 -20.0996 50.8994 -55.8994 66.2002l-10.5 4.5c-18.1006 7.89941 -25.9004 13 -25.9004 25.5996\nc0 10.2002 7.7998 18 20.1006 18c12.0996 0 19.8994 -5.09961 27.0996 -18l32.7998 21c-13.7998 24.4004 -33 33.7002 -59.7998 33.7002c-37.5 0 -61.5996 -24 -61.5996 -55.6006c0 -34.2998 20.0996 -50.5996 50.5 -63.5l10.5 -4.5\nc19.2998 -8.5 30.6992 -13.5996 30.6992 -28c0 -12.0996 -11.1992 -20.7998 -28.5996 -20.7998c-20.7002 0 -32.5 10.9004 -41.5 25.6006l-34.2998 -19.8008c12.2998 -24.3994 37.5996 -43 76.7002 -43z\" />\n    <glyph glyph-name=\"keycdn\" unicode=\"&#xf3ba;\" horiz-adv-x=\"512\" \nd=\"M63.7998 38.7002l60.5 59c32.1006 -42.7998 71.1006 -66 126.601 -67.4004c30.5 -0.700195 60.2998 7 86.3994 22.4004c5.10059 -5.2998 18.5 -19.5 20.9004 -22c-32.2002 -20.7002 -69.6006 -31.1006 -108.101 -30.2002\nc-43.2998 1.09961 -84.5996 16.7002 -117.699 44.4004c0.299805 0.599609 -38.2002 -37.5 -38.6006 -37.9004c9.5 -29.7998 -13.0996 -62.4004 -46.2998 -62.4004c-26.7998 0.100586 -47.5 21.7002 -47.5 48.5c0 34.3008 33.0996 56.6006 63.7998 45.6006zM418.7 291.1\nc19.0996 -31.2998 29.5996 -67.3994 28.7002 -104c-1.10059 -44.7998 -19 -87.5 -48.6006 -121c0.299805 -0.299805 23.7998 -25.1992 24.1006 -25.5c9.59961 1.30078 19.1992 -2 25.8994 -9.09961c11.2998 -12 10.9004 -30.9004 -1.09961 -42.4004\nc-12 -11.2998 -30.9004 -10.8994 -42.4004 1.10059c-6.7002 7 -9.39941 16.7998 -7.59961 26.2998c-24.9004 26.5996 -44.4004 47.2002 -44.4004 47.2002c42.7002 34.0996 63.2998 79.5996 64.4004 124.2c0.700195 28.8994 -7.2002 57.1992 -21.1006 82.1992zM104 394.9\nc6.7002 -7 9.40039 -16.8008 7.59961 -26.3008l45.9004 -48.0996c-4.7002 -3.7998 -13.2998 -10.4004 -22.7998 -21.2998c-25.4004 -28.5 -39.6006 -64.7998 -40.7002 -102.9c-0.700195 -28.8994 6.09961 -57.2002 20 -82.3994l-22 -21.5\nc-19.2998 31.5996 -28.9004 67.6992 -27.7998 104.699c1 44.6006 18.2998 87.6006 47.5 121.101l-25.2998 26.3994c-9.60059 -1.2998 -19.2002 2 -25.9004 9.10059c-11.2998 12 -10.9004 30.8994 1.09961 42.3994c11.9004 11.2002 30.6006 10.9004 42.4004 -1.19922z\nM464.9 440c26 0 47.0996 -22.4004 47.0996 -48.2998c0 -25.9004 -21.0996 -47.7002 -47.0996 -47.7002c-6.30078 -0.0996094 -14 1.09961 -15.9004 1.7998l-62.9004 -59.7002c-32.6992 43.6006 -76.6992 65.9004 -126.899 67.2002\nc-30.5 0.700195 -60.2998 -6.7998 -86.2002 -22.3994l-21.0996 22c32.1992 20.7998 69.5996 31.0996 108.1 30.1992c43.2998 -1.09961 84.5996 -16.6992 117.7 -44.5996l41.0996 38.5996c-1.5 4.7002 -2.2002 9.60059 -2.2002 14.5\nc-0.0996094 26.7002 22.3008 48.4004 48.3008 48.4004zM256.7 334.6c5.5 0 10.8994 -0.399414 16.3994 -1.09961c78.1006 -9.7998 133.4 -81.0996 123.801 -159.1c-9.80078 -78.1006 -81.1006 -133.4 -159.101 -123.801c-78.0996 9.80078 -133.399 81.1006 -123.8 159.2\nc9.2998 72.4004 70.0996 124.601 142.7 124.8zM197.7 215.2c0.599609 -22.7002 12.2002 -41.7998 32.3994 -52.2002l-11 -51.7002h73.7002l-11 51.7002c20.1006 10.9004 32.1006 29 32.4004 52.2002c-0.400391 32.7998 -25.7998 57.5 -58.2998 58.2998\nc-32.1006 -0.799805 -57.3008 -24.7998 -58.2002 -58.2998zM256 288z\" />\n    <glyph glyph-name=\"kickstarter\" unicode=\"&#xf3bb;\" \nd=\"M400 -32h-352c-26.4004 0 -48 21.5996 -48 48v352c0 26.4004 21.5996 48 48 48h352c26.4004 0 48 -21.5996 48 -48v-352c0 -26.4004 -21.5996 -48 -48 -48zM199.6 269.5c0 30.7002 -17.5996 45.0996 -39.6992 45.0996c-25.8008 0 -40 -19.7998 -40 -44.5v-154.8\nc0 -25.7998 13.6992 -45.5996 40.5 -45.5996c21.5 0 39.1992 14 39.1992 45.5996v41.7998l60.6006 -75.6992c12.2998 -14.9004 39 -16.8008 55.7998 0c14.5996 15.0996 14.7998 36.7998 4 50.3994l-49.0996 62.7998l40.5 58.7002c9.39941 13.5 9.5 34.5 -5.60059 49.1006\nc-16.3994 15.8994 -44.5996 17.2998 -61.3994 -7l-44.8008 -64.7002v38.7998z\" />\n    <glyph glyph-name=\"kickstarter-k\" unicode=\"&#xf3bc;\" horiz-adv-x=\"384\" \nd=\"M147.3 333.6v-70.5996l82.7998 118.2c31.2002 44.3994 83.3008 41.7998 113.601 12.7998c27.8994 -26.7002 27.7998 -65.0996 10.3994 -89.7998l-74.8994 -107.4l90.7998 -114.8c19.9004 -24.7998 19.5996 -64.5996 -7.40039 -92.2002\nc-31.0996 -30.7002 -80.5 -27.2002 -103.199 0l-112.101 138.3v-76.5c0 -57.7998 -32.5996 -83.3994 -72.3994 -83.3994c-49.6006 0 -74.9004 36.0996 -74.9004 83.3994v283c0 45.2002 26.2002 81.4004 73.9004 81.4004c40.8994 0 73.3994 -26.2002 73.3994 -82.4004z\" />\n    <glyph glyph-name=\"laravel\" unicode=\"&#xf3bd;\" horiz-adv-x=\"640\" \nd=\"M637.5 206.4c4.2998 -4.80078 3.2002 -8.60059 -4.7002 -10.6006c-6.7002 -1.89941 -69.5996 -18.5996 -87.2998 -23.2998c25.7998 -34.5996 75.0996 -100.6 79.2998 -106.8c5.7002 -8.5 0.5 -10.9004 -7.89941 -14.4004c-8.40039 -3.39941 -195.2 -70.5996 -208 -74.5\nc-16.3008 -5 -23.7002 -7.5 -34.3008 7.40039c-8 11.0996 -51.0996 88.7002 -72.1992 127c-40 -10.5 -113.2 -29.6006 -134.301 -34.7002c-20.5996 -5 -29.3994 7.40039 -32.7998 15c-3.39941 7.59961 -124.8 269.2 -132.399 287.2c-7.60059 18 0.799805 21.3994 8.39941 22\nc7.60059 0.700195 114.5 9.59961 128.5 10.2002c14 0.699219 15.2998 -2.5 21.4004 -11.6006l154.2 -257.5l193.699 46.4004c-10.7998 15.2002 -59.5 84.2998 -64.1992 90.8994c-5.30078 7.40039 0.0996094 10.8008 8.69922 12.3008\nc8.60059 1.39941 82.7002 13.8994 89.1006 14.7998c6.2998 0.899414 11.3994 3.09961 21.7002 -9.2998c10.2998 -12.4004 68.8994 -85.7002 73.0996 -90.5zM285.3 134.4c2.2998 0.5 3.7998 1.7998 1.2002 6.09961c-2.40039 4.2998 -144.6 249.7 -144.6 249.7\nc-1.30078 2.2002 -0.900391 3 -4.5 2.7998c-3.5 -0.200195 -104.301 -9.2002 -106 -9.2002c-1.7002 0 -1.80078 -2.59961 0 -5.89941c1.7998 -3.30078 130.1 -268 130.8 -270s0.700195 -2.60059 6.5 -1.30078c5.7998 1.30078 114.3 27.3008 116.6 27.8008zM591.3 77\nc-1.7002 2.7002 -61.2002 83.4004 -64.0996 88.2002c-3 4.7002 -4.5 3.7002 -9.2002 2.2002l-188.8 -49.1006s58 -100.3 62.3994 -106.8c4.40039 -6.5 7.10059 -6 10.6006 -4.5c3.39941 1.5 181.7 61.5996 187.1 63.5996c5.5 1.90039 3.7002 3.7002 2 6.40039zM603.4 211.1\nc4.19922 1 7.39941 2.40039 5.59961 4.7002c-1.90039 2.40039 -50.9004 64.5 -54.5 69.4004c-3.59961 4.89941 -6.09961 4.09961 -9 3.39941c-2.90039 -0.599609 -67.2998 -12.2998 -71.2998 -12.7998s-2.7002 -2.7002 -1.10059 -5l56.7002 -77.7998\ns69.4004 17.2002 73.6006 18.0996z\" />\n    <glyph glyph-name=\"line\" unicode=\"&#xf3c0;\" \nd=\"M272.1 243.8v-71.0996c0 -1.7998 -1.39941 -3.2002 -3.19922 -3.2002h-11.4004c-1.09961 0 -2.09961 0.599609 -2.59961 1.2998l-32.6006 44v-42.2002c0 -1.7998 -1.39941 -3.19922 -3.2002 -3.19922h-11.3994c-1.7998 0 -3.2002 1.39941 -3.2002 3.19922v71.1006\nc0 1.7998 1.40039 3.2002 3.2002 3.2002h11.2998c1 0 2.09961 -0.5 2.59961 -1.40039l32.6006 -44v42.2002c0 1.7998 1.39941 3.2002 3.2002 3.2002h11.3994c1.7998 0.0996094 3.2998 -1.40039 3.2998 -3.10059zM190.1 247c1.80078 0 3.2002 -1.5 3.2002 -3.2002v-71.0996\nc0 -1.7998 -1.39941 -3.2002 -3.2002 -3.2002h-11.3994c-1.7998 0 -3.2002 1.40039 -3.2002 3.2002v71.0996c0 1.7998 1.40039 3.2002 3.2002 3.2002h11.3994zM162.6 187.4c1.7002 0 3.10059 -1.5 3.10059 -3.2002v-11.4004c0 -1.7998 -1.40039 -3.2002 -3.2002 -3.2002\nh-45.7002c-0.899414 0 -1.59961 0.400391 -2.2002 0.900391c-0.599609 0.599609 -0.899414 1.2998 -0.899414 2.2002v71.0996c0 1.7998 1.39941 3.2002 3.2002 3.2002h11.3994c1.7998 0 3.2002 -1.40039 3.2002 -3.2002v-56.3994h31.0996zM332.1 247\nc1.7002 0 3.10059 -1.5 3.2002 -3.2002v-11.3994c0 -1.80078 -1.39941 -3.2002 -3.2002 -3.2002h-31.0996v-12h31.0996c1.80078 0 3.2002 -1.40039 3.2002 -3.2002v-11.5c0 -1.7998 -1.39941 -3.2002 -3.2002 -3.2002h-31.0996v-12h31.0996\nc1.80078 0 3.2002 -1.39941 3.2002 -3.2002v-11.3994c0 -1.7998 -1.39941 -3.2002 -3.2002 -3.2002h-45.6992c-1.80078 0 -3.2002 1.5 -3.2002 3.2002v71.0996c0 1.7998 1.5 3.2002 3.2002 3.2002h45.6992zM448 334.3v-285.3\nc-0.0996094 -44.7998 -36.7998 -81.0996 -81.7002 -81h-285.3c-44.7998 0.0996094 -81.0996 36.9004 -81 81.7002v285.3c0.0996094 44.7998 36.9004 81.0996 81.7002 81h285.3c44.7998 -0.0996094 81.0996 -36.7998 81 -81.7002zM386.4 211.7\nc0 73 -73.2002 132.399 -163.101 132.399c-89.8994 0 -163.1 -59.3994 -163.1 -132.399c0 -65.4004 58 -120.2 136.399 -130.601c19.1006 -4.09961 16.9004 -11.0996 12.6006 -36.7998c-0.700195 -4.09961 -3.2998 -16.0996 14.0996 -8.7998\nc17.4004 7.2998 93.9004 55.2998 128.2 94.7002c23.5996 26 34.9004 52.2998 34.9004 81.5z\" />\n    <glyph glyph-name=\"lyft\" unicode=\"&#xf3c3;\" horiz-adv-x=\"512\" \nd=\"M0 366.9h77.7998v-208.7c0 -33.1006 15 -52.7998 27.2002 -61c-12.7002 -11.1006 -51.2002 -20.9004 -80.2002 2.7998c-17 14 -24.7998 37.2998 -24.7998 59v207.9zM485.9 193.4c0 -14.2002 11.5996 -25.9004 26.0996 -25.9004v-76.5\nc-56.7002 0 -102.7 46.0996 -102.7 102.7v77.0996c0 34.6006 -52.2002 34.6006 -52.2002 0v-23.2998h38.8008v-76.7998h-38.8008v-6.7002c0 -21.7998 -7.69922 -45 -24.7998 -59c-16.2998 -13.7002 -35.7002 -16.2998 -51.7002 -14v179.2\nc0 56.7002 46.1006 102.7 102.7 102.7c49.1006 0 90.2002 -34.4004 100.3 -80.7002h26.1006v-76.7998h-23.7998v-22zM191.6 292.4v0.5h77.1006v-178.2c0 -52.4004 -29.7002 -91.7002 -76.7998 -100.8c-26.1006 -5.10059 -52.5 -2.80078 -77.6006 4.69922v70.3008\nc9.7998 -4.2002 29.5 -9.40039 45 -7.80078c20.4004 2 32.7998 11.9004 34.9004 25.3008c0 0 -21.2002 -20.4004 -58.2002 -10.6006c-37 9.90039 -45 40.1006 -45 63.9004v132.7h76.7998v-113c0 -15.4004 23.7998 -15.4004 23.7998 0v113z\" />\n    <glyph glyph-name=\"magento\" unicode=\"&#xf3c4;\" \nd=\"M445.7 320.1v-256.1l-63.4004 -36.5v255.8l-158.5 91.6006l-158.6 -91.6006l0.399414 -255.899l-63.2998 36.5996v255.9l221.9 128.1zM255.6 27.5v255.9l63.4004 -36.6006v-256l-95.0996 -54.8994l-94.9004 54.8994l-0.0996094 255.9l63.2998 36.5996v-256\nl31.7998 -18.2002z\" />\n    <glyph glyph-name=\"medapps\" unicode=\"&#xf3c6;\" horiz-adv-x=\"320\" \nd=\"M118.3 209.6c3.5 12.5 6.90039 33.6006 13.2002 33.6006c8.2998 -1.7998 9.59961 -23.4004 18.5996 -36.6006c4.60059 23.5 5.30078 85.1006 14.1006 86.7002c9 0.700195 19.7002 -66.5 22 -77.5c9.89941 -4.09961 48.8994 -6.59961 48.8994 -6.59961\nc1.90039 -7.2998 -24 -7.60059 -40 -7.7998c-4.59961 -14.8008 -5.39941 -27.7002 -11.3994 -28c-4.7002 -0.200195 -8.2002 28.7998 -17.5 49.5996l-9.40039 -65.5c-4.39941 -13 -15.5 22.5 -21.8994 39.2998c-3.30078 0.100586 -62.4004 1.60059 -47.6006 7.7998zM228 0\nh-136c-21.2002 0 -21.2002 32 0 32h136c21.2002 0 21.2002 -32 0 -32zM204 -64h-88c-21.2002 0 -21.2002 32 0 32h88c21.2002 0 21.2002 -32 0 -32zM238.2 77.5c-3.60059 -21.2998 -36 -15.5 -32.6006 5.09961c3.60059 21.2002 5.60059 40.6006 15.3008 58.6006\nc32.5996 60.2998 66.0996 95.5 66.0996 151.6c0 67.9004 -57 123.2 -127 123.2s-127 -55.2998 -127 -123.2c0 -56.0996 33.5 -91.2998 66.0996 -151.7c9.7002 -17.8994 11.7002 -36.8994 15.3008 -58.5996c3.5 -20.7998 -29.1006 -26.0996 -32.6006 -5.09961\nc-3.2002 19.0996 -5.2002 36.3994 -11.8994 48.8994c-8 14.7002 -16.1006 28.1006 -24 41c-24.6006 40.4004 -45.9004 75.2998 -45.9004 125.5c0 85.6006 71.7998 155.2 160 155.2s160 -69.5996 160 -155.2c0 -50.2998 -21.2998 -85.0996 -45.9004 -125.5\nc-7.89941 -12.8994 -16.0996 -26.2998 -24 -41c-6.69922 -12.3994 -8.69922 -29.8994 -11.8994 -48.7998z\" />\n    <glyph glyph-name=\"medium-m\" unicode=\"&#xf3c7;\" horiz-adv-x=\"512\" \nd=\"M71.5 305.7c0.599609 5.89941 -1.7002 11.7998 -6.09961 15.7998l-45.1006 54.4004v8.09961h140.2l108.4 -237.7l95.2998 237.7h133.7v-8.09961l-38.6006 -37c-3.2998 -2.5 -5 -6.7002 -4.2998 -10.8008v-272c-0.700195 -4.09961 1 -8.2998 4.2998 -10.7998l37.7002 -37\nv-8.09961h-189.7v8.09961l39.1006 37.9004c3.7998 3.7998 3.7998 5 3.7998 10.7998v219.8l-108.7 -275.899h-14.7002l-126.399 275.899v-184.899c-1.10059 -7.80078 1.5 -15.6006 7 -21.2002l50.7998 -61.6006v-8.09961h-144v8l50.7998 61.7002\nc5.40039 5.59961 7.90039 13.5 6.5 21.2002v213.8z\" />\n    <glyph glyph-name=\"medrt\" unicode=\"&#xf3c8;\" horiz-adv-x=\"544\" \nd=\"M113.7 192c0 -121.8 83.8994 -222.8 193.5 -241.1c-18.7002 -4.5 -38.2002 -6.90039 -58.2002 -6.90039c-137.6 0 -249 111 -249 248s111.4 248 248.9 248c20.0996 0 39.5996 -2.40039 58.1992 -6.90039c-109.6 -18.2998 -193.399 -119.3 -193.399 -241.1zM411.1 91.7002\nc77.7002 55.3994 104.4 155.1 67 233.899c11.2002 -9.89941 21.5 -21.2998 30.5 -34.1992c61.6006 -88.3008 40.8008 -210.301 -46.5 -272.601c-87.2998 -62.2998 -208.1 -41.2002 -269.699 47c-9 12.7998 -16.2002 26.4004 -21.7002 40.5\nc60.7998 -62.0996 162.7 -70 240.399 -14.5996zM192.3 335.7c72.5 54.5996 171.601 45.7002 221.601 -19.7998c45.2998 -59.7002 34.3994 -145.601 -22.3008 -201.801c18.5 51.4004 11.3008 111 -24.3994 158c-43 56.5 -114.601 78.3008 -178.9 60.5\nc1.2998 1 2.60059 2.10059 4 3.10059zM296 224h40c4.40039 0 8 -3.59961 8 -8v-48c0 -4.40039 -3.59961 -8 -8 -8h-40c-4.40039 0 -8 -3.59961 -8 -8v-40c0 -4.40039 -3.59961 -8 -8 -8h-48c-4.40039 0 -8 3.59961 -8 8v40c0 4.40039 -3.59961 8 -8 8h-40\nc-4.40039 0 -8 3.59961 -8 8v48c0 4.40039 3.59961 8 8 8h40c4.40039 0 8 3.59961 8 8v40c0 4.40039 3.59961 8 8 8h48c4.40039 0 8 -3.59961 8 -8v-40c0 -4.40039 3.59961 -8 8 -8z\" />\n    <glyph glyph-name=\"microsoft\" unicode=\"&#xf3ca;\" \nd=\"M0 416h214.6v-214.6h-214.6v214.6zM233.4 416h214.6v-214.6h-214.6v214.6zM0 182.6h214.6v-214.6h-214.6v214.6zM233.4 182.6h214.6v-214.6h-214.6v214.6z\" />\n    <glyph glyph-name=\"mix\" unicode=\"&#xf3cb;\" \nd=\"M0 384h448v-204.1c0 -56.6006 -88 -59.9004 -88 0v23.7998c0 56.7998 -82.7002 59 -88 4.2998v-116.1c0 -58 -96 -57.9004 -96 0v175.3c0 56.8994 -80.0996 59.3994 -88 6.5v-238.601c0 -58.0996 -88 -56.1992 -88 0v348.9z\" />\n    <glyph glyph-name=\"mizuni\" unicode=\"&#xf3cc;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111.1 248 -248c0 -137 -111 -248 -248 -248s-248 111 -248 248c0 136.9 111 248 248 248zM168 88.0996v223.9c0 22.0996 -17.9004 40 -40 40s-40 -17.9004 -40 -40v-272.1c21.2002 20.8994 48.5996 37.5996 80 48.1992zM288 98v214\nc0 22.0996 -17.9004 40 -40 40s-40 -17.9004 -40 -40v-214c13 2 26.4004 3.09961 40.2002 3.09961c13.5996 0 26.8994 -1.09961 39.7998 -3.09961zM408 40.2998v271.7c0 22.0996 -17.9004 40 -40 40s-40 -17.9004 -40 -40v-223.7c31.4004 -10.5996 58.7998 -27.2002 80 -48z\n\" />\n    <glyph glyph-name=\"monero\" unicode=\"&#xf3d0;\" horiz-adv-x=\"496\" \nd=\"M352 64h108.4c-43.4004 -71.9004 -122.301 -120 -212.4 -120s-169 48.0996 -212.4 120h108.4v127.8l104 -104.8l104 105v-128zM88 112h-74.7998c-8.60059 25.0996 -13.2002 52 -13.2002 80c0 137 111 248 248 248s248 -111 248 -248c0 -28 -4.7002 -54.9004 -13.2002 -80\nh-74.7998v208l-160.6 -159.4l-159.4 159.4v-208z\" />\n    <glyph glyph-name=\"napster\" unicode=\"&#xf3d2;\" horiz-adv-x=\"496\" \nd=\"M298.3 74.4004c-14.2002 -13.6006 -31.2998 -24.1006 -50.3994 -30.5c-19 6.39941 -36.2002 16.8994 -50.3008 30.5h100.7zM342.3 274c-56.3994 39.7998 -132.1 39.9004 -188.899 -0.0996094c-19.9004 16.7998 -43.6006 29.5 -69.5 36.3994v-161.6\nc0 -217.3 328 -219.101 328 0.299805v161.2c-26 -7 -49.6006 -19.2998 -69.6006 -36.2002zM133.5 332.5c6.5 -3.2002 14.0996 -7.40039 20.4004 -11.4004c58.6992 30.5 129.199 30.6006 187.899 0.100586c6.7002 4.2002 13.5 8 20.6006 11.5\nc-64.6006 59.8994 -164.5 59.7998 -228.9 -0.200195zM43.7998 354.8c17.5 -0.5 34.2998 -3.09961 50.6006 -7.5c82 91.6006 225.5 91.6006 307.5 0.100586c16.0996 4.39941 32.7998 6.89941 50.0996 7.39941v-69.2002c58.7002 -36.5 58.5 -121.899 -0.200195 -158.199\nl-0.299805 -1.7002c-25.9004 -238.8 -381.2 -243.601 -407.6 1.5c-58.5 37.2002 -58.5 121.8 -0.100586 158.3v69.2998zM259.2 96c13.0996 59.2998 33.5 56 113 55.4004c-0.799805 -8.2002 0.0996094 -32.3008 -26.2002 -47.4004c-4.40039 -2.5 -15.2998 -6 -25.5 -6.5\nc-25.2998 -1.2002 -61.2998 -1.5 -61.2998 -1.5zM123.7 151.3c79.2998 0.700195 99.7998 4 113 -55.3994c0 0 -36 0.399414 -61.2998 1.5c-10.3008 0.5 -21.1006 4 -25.5 6.5c-26.3008 15.0996 -25.4004 39.1992 -26.2002 47.3994zM292.8 27.9004\nc3 -4.90039 3.2002 -8.80078 3.2998 -8.90039c-29.0996 -17.5996 -67.0996 -17.5996 -96.1992 0c0 0 0.899414 5.5 3.69922 9.59961c3.5 5.10059 6.40039 6.60059 6.40039 6.60059c23.7002 -6.90039 51.0996 -7.2998 75.9004 0c0 0 3.69922 -2 6.89941 -7.2998z\" />\n    <glyph glyph-name=\"node-js\" unicode=\"&#xf3d3;\" \nd=\"M224 -60c-6.7002 0 -13.5 1.7998 -19.4004 5.2002l-61.6992 36.5c-9.2002 5.2002 -4.7002 7 -1.7002 8c12.2998 4.2998 14.7998 5.2002 27.8994 12.7002c1.40039 0.799805 3.2002 0.5 4.60059 -0.400391l47.3994 -28.0996c1.7002 -1 4.10059 -1 5.7002 0l184.7 106.6\nc1.7002 1 2.7998 3 2.7998 5v213.2c0 2.09961 -1.09961 4 -2.89941 5.09961l-184.601 106.5c-1.7002 1 -4 1 -5.7002 0l-184.5 -106.6c-1.7998 -1 -2.89941 -3 -2.89941 -5.10059v-213.1c0 -2 1.09961 -4 2.89941 -4.90039l50.6006 -29.1992\nc27.5 -13.7002 44.2998 2.39941 44.2998 18.6992v210.4c0 3 2.40039 5.2998 5.40039 5.2998h23.3994c2.90039 0 5.40039 -2.2998 5.40039 -5.2998v-210.5c0 -36.5996 -20 -57.5996 -54.7002 -57.5996c-10.7002 0 -19.0996 0 -42.5 11.5996l-48.4004 27.9004\nc-12 6.89941 -19.3994 19.7998 -19.3994 33.6992v213.101c0 13.7998 7.39941 26.7998 19.3994 33.7002l184.5 106.6c11.7002 6.59961 27.2002 6.59961 38.8008 0l184.699 -106.7c12 -6.89941 19.4004 -19.7998 19.4004 -33.7002v-213.1\nc0 -13.7998 -7.40039 -26.7002 -19.4004 -33.7002l-184.699 -106.6c-5.90039 -3.40039 -12.6006 -5.2002 -19.4004 -5.2002zM373.1 150.1c0 -40.1992 -33.5996 -63.2998 -92 -63.3994c-80.8994 0 -97.7998 37.0996 -97.7998 68.2002c0 2.89941 2.2998 5.2998 5.2998 5.2998\nh23.9004c2.7002 0 4.90039 -1.90039 5.2998 -4.5c3.60059 -24.2998 14.2998 -36.6006 63.2002 -36.6006c38.9004 0 55.5 8.80078 55.5 29.4004c0 11.9004 -4.7002 20.7998 -65.2002 26.7002c-50.5 5 -81.7998 16.2002 -81.7998 56.5996c0 37.2998 31.4004 59.5 84.0996 59.5\nc59.2002 0 88.5 -20.5 92.2002 -64.5996c0.100586 -1.5 -0.399414 -3 -1.39941 -4.10059c-1 -1.09961 -2.40039 -1.69922 -3.90039 -1.69922h-24c-2.5 0 -4.7002 1.7998 -5.2002 4.19922c-5.7998 25.6006 -19.7998 33.8008 -57.7002 33.8008\nc-42.5 0 -47.3994 -14.8008 -47.3994 -25.9004c0 -13.4004 5.7998 -17.2998 63.2002 -24.9004c56.6992 -7.5 83.6992 -18.0996 83.6992 -58z\" />\n    <glyph glyph-name=\"npm\" unicode=\"&#xf3d4;\" horiz-adv-x=\"576\" \nd=\"M288 160h-32v64h32v-64zM576 288v-192h-288v-32h-128v32h-160v192h576zM160 256h-128v-128h64v96h32v-96h32v128zM320 256h-128v-160h64v32h64v128zM544 256h-192v-128h64v96h32v-96h32v96h32v-96h32v128z\" />\n    <glyph glyph-name=\"ns8\" unicode=\"&#xf3d5;\" horiz-adv-x=\"640\" \nd=\"M187.1 288.1h44.9004l-48.5 -160.1h-56.9004l-50.5996 106.5l-31.0996 -106.5h-44.9004l49 160.1h49.4004l54.5 -113.699zM639.6 289c4.60059 -28.5996 -36.0996 -44.7002 -65.6992 -50.5996h-0.100586c17.5 -29.3008 22.1006 -69.3008 3.40039 -105.5\nc-26.4004 -51.2002 -86.5 -79.9004 -135.101 -68c-29.3994 7.19922 -51.3994 29 -56.7998 59.5c-0.700195 3.5 -1 7.09961 -1.2002 10.7998c-5.5 -2.7998 -11.8994 -4.2002 -18.5 -4.90039c-15.5996 -1.7002 -21 -2.2998 -160.899 -2.2998l11.5996 39.5h126.8\nc9.10059 0 12.2002 3.2002 13.8008 7.40039c1.69922 4.59961 3.39941 10.1992 4.5 14.5996c1.09961 3.90039 0.0996094 6.59961 -7.7002 6.59961h-87.2998c-33.4004 0 -38.2002 9.2002 -32.8008 28.6006c3.2002 11.5 10.8008 37.2002 17.6006 47.0996\nc7.09961 10.2002 18.2998 13.7002 30.5996 15c15.6006 1.7002 20.4004 1.2002 160.101 1.2002l-9.7002 -31.5h-133.5c-5.5 0 -11.2002 -0.700195 -13.2998 -7.09961c-1.80078 -5.40039 -2.10059 -6.7002 -3.7002 -12.2002c-1.40039 -5.10059 2.2002 -7.40039 11.5 -7.40039\nh87.5996c20.4004 0 31 -6.7998 34 -16.5996c19.9004 21.3994 50.4004 39.5 94.2002 48.2002v0.0996094c-13.4004 42.5 43.9004 66.5996 88.5 58.7998c18.2002 -3.2002 39.2002 -13.2998 42.0996 -31.2998zM530.7 184.3c3.09961 15.7998 -0.5 33.7002 -7.2002 47.7998\nc-23.2998 -2.89941 -52.2998 -10.0996 -68.5 -26.8994c-24.4004 -25.2998 -16.7998 -60 14.0996 -64.7998c25 -3.90039 55.7002 14.3994 61.6006 43.8994zM552.5 267.4c10.5996 1.5 23.5 3.5 34.2002 9.59961c14.7998 8.5 10.3994 21 -4.90039 24.4004\nc-10.8994 2.39941 -25.0996 -0.5 -31.7998 -7.7002c-7.2998 -7.7998 -1.7002 -20.2998 2.5 -26.2998z\" />\n    <glyph glyph-name=\"nutritionix\" unicode=\"&#xf3d6;\" horiz-adv-x=\"400\" \nd=\"M88 439.9c0 0 133.4 8.19922 121 -104.4c0 0 19.0996 74.9004 103 40.5996c0 0 -17.7002 -74 -88 -56c0 0 14.5996 54.6006 66.0996 56.6006c0 0 -39.8994 10.2998 -82.0996 -48.7998c0 0 -19.7998 94.5 -93.5996 99.6992c0 0 75.1992 -19.3994 77.5996 -107.5\nc0 -0.0996094 -106.4 -7 -104 119.801zM400 124.3c0 -48.5 -9.7002 -95.2998 -32 -132.3c-42.2002 -30.9004 -105 -48 -168 -48c-62.9004 0 -125.8 17.0996 -168 48c-22.2998 37 -32 83.7998 -32 132.3c0 48.4004 17.7002 94.7002 40 131.7\nc42.2002 30.9004 97.0996 48.5996 160 48.5996c63 0 117.8 -17.5996 160 -48.5996c22.2998 -37 40 -83.2998 40 -131.7zM120 20c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28s12.5 -28 28 -28s28 12.5 28 28zM120 86.2002c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28\ns12.5 -28 28 -28s28 12.5 28 28zM120 152.4c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28s12.5 -28 28 -28s28 12.5 28 28zM192 20c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28s12.5 -28 28 -28s28 12.5 28 28zM192 86.2002c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28\ns12.5 -28 28 -28s28 12.5 28 28zM192 152.4c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28s12.5 -28 28 -28s28 12.5 28 28zM264 20c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28s12.5 -28 28 -28s28 12.5 28 28zM264 86.2002c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28\ns12.5 -28 28 -28s28 12.5 28 28zM264 152.4c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28s12.5 -28 28 -28s28 12.5 28 28zM336 20c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28s12.5 -28 28 -28s28 12.5 28 28zM336 86.2002c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28\ns12.5 -28 28 -28s28 12.5 28 28zM336 152.4c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28s12.5 -28 28 -28s28 12.5 28 28zM360 192c-4.7998 22.2998 -7.40039 36.9004 -16 56c-38.7998 19.9004 -90.5 32 -144 32s-105.2 -12.0996 -144 -32\nc-8.7998 -19.5 -11.2002 -33.9004 -16 -56c42.2002 7.90039 98.7002 14.7998 160 14.7998s117.8 -6.89941 160 -14.7998z\" />\n    <glyph glyph-name=\"page4\" unicode=\"&#xf3d7;\" horiz-adv-x=\"496\" \nd=\"M248 -56c-137 0 -248 111 -248 248s111 248 248 248c20.9004 0 41.2998 -2.59961 60.7002 -7.5l-266.4 -376.5h205.7v-112zM248 87.5996h-149.4l149.4 213.601v-213.601zM344 56h111.4c-26.9004 -41 -65.7002 -73.5 -111.4 -92.7002v92.7002zM401.4 194.2v-16.7002\nl-21.2002 8.2998zM381.1 139.7c5.90039 0 8.2002 -4.7002 8.2002 -10.6006v-10h-16.2002v7.7002c0 6.60059 1.30078 12.9004 8 12.9004zM496 192c0 -37.2998 -8.2002 -72.7002 -23 -104.4h-129v333.101c89.2998 -37.5 152 -125.8 152 -228.7zM360.4 304.4h68.1992v47.5996\nh-13.8994v-32.5996h-13.9004v29.5996h-13.8994v-29.5996h-12.7002v32.5996h-13.9004v-47.5996h0.100586zM428.5 119.1h-26.5v11c0 15.4004 -5.59961 25.2002 -20.9004 25.2002c-15.3994 0 -20.6992 -10.5996 -20.6992 -25.8994v-25.3008h68.1992v15h-0.0996094zM428.5 222.1\nl-68.2002 -29.6992v-12.4004l68.2002 -29.5v16.5996l-14.4004 5.7002v26.5l14.4004 5.90039v16.8994zM423.7 290.6h-35.6006v-26.5996h13.9004v12.2002h11c8.59961 -15.7998 1.2998 -35.2998 -18.5996 -35.2998c-22.5 0 -28.3008 25.2998 -15.5 37.6992l-11.6006 10.6006\nc-16.2002 -17.5 -12.2002 -63.9004 27.1006 -63.9004c34 0 44.6992 35.9004 29.2998 65.2998z\" />\n    <glyph glyph-name=\"palfed\" unicode=\"&#xf3d8;\" horiz-adv-x=\"576\" \nd=\"M384.9 254.1c0.0996094 -53.3994 -46.5 -96.1992 -83.3008 -96.1992c-12.5 0 -14.3994 3.39941 -15.0996 6.19922c0.5 39.1006 1.7002 80.4004 3 119.801c40.2002 14.3994 95.4004 17.5996 95.4004 -29.8008zM190.4 181.9\nc-0.200195 0.599609 -0.400391 2.09961 -0.600586 4.59961c0 25.5996 37 60.9004 58.5 75.9004c-1.2002 -36.4004 -5.5 -198.101 -1.39941 -242.5c3 -32.3008 26.7998 -32.9004 36.3994 -22.3008c5.90039 6.60059 5.5 15.7002 5.2998 19.1006v0.200195\nc-1.7998 25.5996 -2.7998 60.5996 -2.69922 100c60.7998 -14.4004 140.1 60.2998 140.1 138.199c0 71 -63 94.2002 -135.2 72c-2.89941 14.6006 -18.2998 20.1006 -29.5 11.1006c-7.5 -6.2002 -9.5 -15.7998 -10.5 -28.2002c-57.7998 -30.9004 -100.7 -84.5 -100.7 -126.5\nc0 -24.9004 15.6006 -43 37.1006 -43c35.0996 0 41 44.0996 14.3994 44.0996c-4.69922 0 -11 -2.69922 -11.1992 -2.69922zM8 266.9c0 38.5996 38.4004 37.3994 38.4004 37.3994h29c15.5 70.1006 120.5 74.2998 120.5 74.2998h28.0996v19.1006\nc0 18.3994 21.0996 18.3994 21.0996 18.3994h85.8008c18.3994 0 21.0996 -18.3994 21.0996 -18.3994v-19.1006h28c89.2002 0 112.1 -48.6992 119.4 -74.2998h30.0996c38.5 0 38.4004 -37.3994 38.4004 -37.3994c0 -38.6006 -38.4004 -37.4004 -38.4004 -37.4004h-30\nl-22.4004 -217.2c0 -43.8994 -44.6992 -44.2998 -44.6992 -44.2998h-288.9c-44.7002 0 -44.7002 44.2998 -44.7002 44.2998l-22.3994 217.2h-30c-38.5 0 -38.4004 37.4004 -38.4004 37.4004z\" />\n    <glyph glyph-name=\"patreon\" unicode=\"&#xf3d9;\" horiz-adv-x=\"512\" \nd=\"M512 253.2c0 -101.3 -82.4004 -183.8 -183.8 -183.8c-101.7 0 -184.4 82.3994 -184.4 183.8c0 101.6 82.7002 184.3 184.4 184.3c101.399 0 183.8 -82.7002 183.8 -184.3zM0 -53.5v491h90v-491h-90z\" />\n    <glyph glyph-name=\"periscope\" unicode=\"&#xf3da;\" \nd=\"M370 384.4c38.4004 -40.7002 59.5 -94.3008 59.5 -150.801c0 -74.2998 -57.4004 -159.5 -82 -192.6c-8 -10.7998 -79.2998 -105 -120.9 -105c-34 0 -88.7998 56.5 -125.399 104.9c-24.9004 32.8994 -82.7002 117.6 -82.7002 192.699c0 118.2 93.4004 214.4 208.1 214.4\nc53.9004 0 104.801 -22.5996 143.4 -63.5996zM226.6 -45.9004c37.3008 0 184.801 167.301 184.7 279.4c0 107.3 -83.8994 196.3 -184.7 196.3c-106.1 0 -190 -88.8994 -190 -196.3c0 -112.1 147.5 -279.4 190 -279.4zM338 241.2c0 -59.1006 -51.0996 -109.7 -110.8 -109.7\nc-100.601 0 -150.7 108.2 -92.9004 181.8v-0.399414c0 -24.5 20.1006 -44.4004 44.7998 -44.4004c24.7002 0 44.8008 19.9004 44.8008 44.4004c0 18.1992 -11.1006 33.7998 -26.9004 40.6992c76.5996 19.2002 141 -39.2998 141 -112.399z\" />\n    <glyph glyph-name=\"phabricator\" unicode=\"&#xf3db;\" horiz-adv-x=\"496\" \nd=\"M323 185.9c0 0 21.5996 -19.6006 20.9004 -20.7002l-8.10059 -19.7998c-0.5 -1.40039 -29.7002 -0.5 -29.7002 -0.5l-9.09961 -9.10059s1.59961 -31.5 0.200195 -32.0996l-20 -7.5c-1.2998 -0.5 -21.7998 23.2998 -21.7998 23.2998l-13.1006 0.200195\ns-19.2998 -24.1006 -20.7002 -23.5l-20.0996 8.2998c-1.40039 0.5 -1.2002 32.2998 -1.2002 32.2998l-9.39941 9.2998s-28.9004 -0.899414 -29.5 0.5l-9.5 20c-0.600586 1.40039 21.0996 21.2002 21.0996 21.2002l-0.0996094 12.9004s-21.6006 19.5996 -21 21\nl8.09961 19.7998c0.5 1.2998 29.7002 0.400391 29.7002 0.400391l9.09961 9.09961s-1.59961 28.4004 -0.200195 28.9004l20 8.2998c1.40039 0.599609 21.9004 -20.7998 21.9004 -20.7998l13.0996 -0.200195s19.3008 21.5996 20.7002 21l20.1006 -9.2002\nc1.39941 -0.599609 1.19922 -29.0996 1.19922 -29.0996l9.40039 -9.30078s28.9004 0.900391 29.5 -0.5l9.5 -20c0.599609 -1.39941 -21.0996 -21.1992 -21.0996 -21.1992zM278.1 194.6c-0.699219 17 -15.5 30.3008 -32.7998 29.5\nc-17.2998 -0.699219 -30.7998 -15.1992 -30.0996 -32.2998c0.700195 -17.0996 15.5 -30.3994 32.7998 -29.5996s30.7998 15.2998 30.0996 32.3994zM479.3 232.5c22.2998 -22.2998 22.2998 -58.7002 0 -81c-67.3994 -67.4004 -44.2998 -44.4004 -95.2998 -95.2998\nc-74.4004 -74.5 -194.7 -74.9004 -269.8 -1.60059l-0.100586 -0.0996094c-51 51 -27.5 27.5996 -97.3994 97c-22.2998 22.2998 -22.2998 58.7002 0 81c67.8994 67.4004 44.7998 44.2998 95.7002 95.2998c74.3994 74.4004 194.699 74.9004 269.8 1.60059l0.0996094 0.0996094\nzM140.4 84.2002c59.5996 -59.5 156 -59.6006 215.6 -0.100586c59.5996 59.6006 59.5 156.101 0 215.601c-59.5996 59.5 -156.1 59.5996 -215.6 0c-59.6006 -59.5 -59.6006 -156 0 -215.5z\" />\n    <glyph glyph-name=\"phoenix-framework\" unicode=\"&#xf3dc;\" horiz-adv-x=\"640\" \nd=\"M212.9 103.7c-36.7002 -1.2002 -108.7 29.2998 -127.7 106.399c-8.7002 35.3008 -2.7002 51.8008 -8 86.1006c-8.2002 53.3994 -32.1006 72.2002 -55.9004 76.5c-6.2002 1.09961 -12.3994 1.2998 -18.7002 0.299805\nc-0.799805 -0.0996094 -1.59961 -0.200195 -2.39941 -0.200195c-0.100586 0.200195 -0.100586 0.299805 -0.200195 0.5c0.700195 0.600586 1.40039 1.2002 2.2002 1.7998c36.8994 26.9004 92 38.4004 136.3 35c123.6 -9.5 141.3 -156.6 252.5 -173.1\nc6.09961 -0.900391 12.2998 -1.09961 18.5 -1.7002c0.700195 -0.0996094 1.40039 -0.0996094 2.5 -0.200195c-2.09961 -2.19922 -21.5996 -11.7998 -36.5 -14.5c-18.4004 -3.39941 -35.7002 -0.0996094 -51.2998 10.3008c-14.5 9.7998 -24.5 23.5 -38.9004 27.3994\nc-13 3.60059 -34.0996 1.7002 -35.8994 -19.5996c-1.30078 -15.9004 14.1992 -51.7998 51.7998 -74.6006c40.3994 -24.5 101.399 -26.8994 134.7 -14.7998c0.299805 0.100586 0.699219 0.200195 1.09961 0.299805c0.200195 0.100586 0.400391 0 1 -0.0996094\nc-23.5996 -28.4004 -71.2002 -49.9004 -108.2 -45.4004c-50.3994 6.2002 -77.7002 75.9004 -113.7 97.5c-19.0996 11.5 -49.0996 7 -52 -18.5c-1.09961 -10 2.10059 -19 6.40039 -27.5996c24.4004 -48.5996 65.5996 -47 68 -49.5996\nc-2.7998 -0.800781 -21.7998 -2.10059 -25.5996 -2.2002zM75.2998 383.1c13.1006 -14.5 34.2002 -7.89941 35.2998 6.80078c-12.3994 -0.700195 -24.5 -2.2002 -36.5996 -4.80078c0.400391 -0.799805 0.400391 -1 1.2998 -2zM272.2 32.5996\nc-42.7998 -1.19922 -92 26.7002 -123.5 61.4004c-4.60059 5 -16.7998 20.2002 -18.6006 23.4004l0.400391 0.399414c6.59961 -4.09961 25.7002 -18.5996 54.7998 -27c24.2002 -7 48.1006 -6.2998 71.6006 3.2998c22.6992 9.30078 41 0.5 43.0996 -2.89941\nc-18.5 -3.7998 -20.0996 -4.40039 -24 -7.90039c-5.09961 -4.39941 -4.59961 -11.7002 7 -17.2002c26.2002 -12.3994 63 2.80078 97.2002 -25.3994c2.39941 -2 8.09961 -7.7998 10.0996 -10.7002c-0.0996094 -0.200195 -0.299805 -0.299805 -0.399414 -0.5\nc-4.80078 1.5 -16.4004 7.5 -40.2002 9.2998c-24.7002 2 -46.2998 -5.2998 -77.5 -6.2002zM447 284.6c16.4004 5.2002 41.2998 13.4004 66.5 3.30078c16.0996 -6.5 26.2002 -18.7002 32.0996 -34.6006c3.5 -9.39941 5.10059 -19.7002 5.10059 -28.7002\nc-0.200195 0 -0.400391 0 -0.600586 -0.0996094c-0.199219 0.400391 -0.399414 0.900391 -0.5 1.2998c-5 22 -29.8994 43.7998 -67.5996 29.9004c-50.2002 -18.6006 -130.4 -9.7002 -176.9 48c-0.699219 0.899414 -2.39941 1.7002 -1.2998 3.2002\nc0.100586 0.199219 2.10059 -0.600586 3 -1.30078c18.1006 -13.3994 38.2998 -21.8994 60.2998 -26.1992c30.5 -6.10059 54.6006 -2.90039 79.9004 5.19922zM549.7 167.1c-32.4004 -0.199219 -33.7998 -50.0996 -103.601 -64.3994\nc-18.1992 -3.7002 -38.6992 -4.60059 -44.8994 -4.2002v0.400391c2.7998 1.5 14.7002 2.59961 29.7002 16.5996c7.89941 7.2998 15.2998 15.0996 22.7998 22.9004c19.5 20.1992 41.3994 42.1992 81.8994 39c23.1006 -1.80078 29.3008 -8.2002 36.1006 -12.7002\nc0.299805 -0.200195 0.399414 -0.5 0.700195 -0.900391c-0.5 0 -0.700195 -0.0996094 -0.900391 0c-7 2.7002 -14.2998 3.2998 -21.7998 3.2998zM537.4 191.2c-0.100586 -0.200195 -0.100586 -0.400391 -0.200195 -0.600586c-28.9004 4.40039 -48 7.90039 -68.5 -4\nc-17 -9.89941 -31.4004 -20.5 -62 -24.3994c-27.1006 -3.40039 -45.1006 -2.40039 -66.1006 8c-0.299805 0.200195 -0.599609 0.399414 -1 0.599609c0 0.200195 0.100586 0.299805 0.100586 0.5c24.8994 -3.7998 36.3994 -5.09961 55.5 5.7998\nc22.2998 12.9004 40.0996 26.6006 71.2998 31c29.5996 4.10059 51.2998 -2.5 70.9004 -16.8994zM268.6 350.7c-0.599609 0.599609 -1.09961 1.2002 -2.09961 2.2998c7.59961 0 29.7002 1.2002 53.4004 -8.40039c19.6992 -8 32.1992 -21 50.1992 -32.8994\nc11.1006 -7.2998 23.4004 -9.2998 36.4004 -8.10059c4.2998 0.400391 8.5 1.2002 12.7998 1.7002c0.400391 0.100586 0.900391 0 1.5 -0.299805c-0.599609 -0.400391 -1.2002 -0.900391 -1.7998 -1.2002c-8.09961 -4 -16.7002 -6.2998 -25.5996 -7.09961\nc-26.1006 -2.60059 -50.3008 3.7002 -73.4004 15.3994c-19.2998 9.90039 -36.4004 22.9004 -51.4004 38.6006zM640 112.3c-3.5 -3.09961 -22.7002 -11.5996 -42.7002 -5.2998c-12.2998 3.90039 -19.5 14.9004 -31.5996 24.0996\nc-10 7.60059 -20.9004 7.90039 -28.1006 8.40039c0.600586 0.799805 0.900391 1.2002 1.2002 1.40039c14.7998 9.19922 30.5 12.1992 47.2998 6.5c12.5 -4.2002 19.2002 -13.5 30.4004 -24.2002c10.7998 -10.4004 21 -9.90039 23.0996 -10.5\nc0.100586 0.0996094 0.200195 0 0.400391 -0.400391zM427.5 -24.7002c2.2002 -1.2002 1.59961 -1.5 1.5 -2c-18.5 1.40039 -33.9004 7.60059 -46.7998 22.2002c-21.7998 24.7002 -41.7002 27.9004 -48.6006 29.7002c0.5 0.200195 0.800781 0.399414 1.10059 0.399414\nc13.0996 -0.0996094 26.0996 -0.699219 38.8994 -3.89941c25.3008 -6.40039 35 -25.4004 41.6006 -35.2998c3.2002 -4.80078 7.2998 -8.30078 12.2998 -11.1006z\" />\n    <glyph glyph-name=\"playstation\" unicode=\"&#xf3df;\" horiz-adv-x=\"576\" \nd=\"M570.9 75.7002c-11.3008 -14.2002 -38.8008 -24.2998 -38.8008 -24.2998l-205.1 -73.6006v54.2998l150.9 53.8008c17.0996 6.09961 19.7998 14.7998 5.7998 19.3994c-13.9004 4.60059 -39.1006 3.2998 -56.2002 -2.89941l-100.5 -35.5v56.3994\nc23.2002 7.7998 47.0996 13.6006 75.7002 16.7998c40.8994 4.5 90.8994 -0.599609 130.2 -15.5c44.1992 -14 49.1992 -34.6992 38 -48.8994zM346.5 168.2v139c0 16.2998 -3 31.2998 -18.2998 35.5996c-11.7002 3.7998 -19 -7.09961 -19 -23.3994v-347.9l-93.7998 29.7998\nv414.7c39.8994 -7.40039 98 -24.9004 129.199 -35.4004c79.5 -27.2998 106.4 -61.2998 106.4 -137.8c0 -74.5 -46 -102.8 -104.5 -74.5996zM43.2002 37.7998c-45.4004 12.7998 -53 39.5 -32.2998 54.7998c19.0996 14.2002 51.6992 24.9004 51.6992 24.9004l134.5 47.7998\nv-54.5l-96.7998 -34.5996c-17.0996 -6.10059 -19.7002 -14.7998 -5.7998 -19.4004c13.9004 -4.59961 39.0996 -3.2998 56.2002 2.90039l46.3994 16.8994v-48.7998c-51.5996 -9.2998 -101.399 -7.2998 -153.899 10z\" />\n    <glyph glyph-name=\"pushed\" unicode=\"&#xf3e1;\" horiz-adv-x=\"432\" \nd=\"M407 336.1c21.7002 -1.89941 33.7998 -28 17.4004 -44.7998l-235.2 -231.3l-35.2998 -80.7998c-11 -17.2002 -41.2002 -14.2998 -47.7002 7l-105.101 348.3c-4.59961 18.2998 6.30078 33.9004 21.4004 36.5996l271.3 44.4004c17.9004 3.40039 39.1006 -13.5 28.7002 -37\nl-14 -33.4004zM297.6 394.4l-189 -31l177.4 -16.3008l16.7998 39.9004c2.2998 4.90039 -0.0996094 8.09961 -5.2002 7.40039zM22.7002 340.1l157.899 -244.3l96.9004 230.7l-248.7 22.7002c-5.09961 0.899414 -9.2002 -4 -6.09961 -9.10059zM136 -8.40039\nc0 0 28.2002 64.1006 35.2002 79.1006l-127.7 197.6l83.0996 -275.5c1.5 -4.2998 6.80078 -5.2002 9.40039 -1.2002zM408.8 306.1c3.10059 3.30078 1.40039 7.5 -2.59961 8.60059l-106.4 9.7002l-89.7002 -213.7z\" />\n    <glyph glyph-name=\"python\" unicode=\"&#xf3e2;\" \nd=\"M439.8 247.5c10.7002 -42.9004 11.2002 -75.0996 0 -108.6c-10.7998 -32.5 -22.2998 -54.2002 -53.3994 -54.2002h-160.2v-13.6006h106.7v-40.6992c0 -30.8008 -26.5 -46.5 -53.4004 -54.3008c-40.5 -11.6992 -73 -9.89941 -106.8 0\nc-28.2002 8.30078 -53.4004 25.3008 -53.4004 54.3008v101.8c0 29.2998 24.2002 54.2998 53.4004 54.2998h106.8c35.5996 0 66.7998 31 66.7998 67.7998v47.4004h40.1006c31.0996 0 45.6992 -23.2998 53.3994 -54.2002zM286.2 44c-11 0 -20 -9 -20.1006 -20.2998\nc0 -11.2002 9.10059 -20.4004 20.1006 -20.4004c11.0996 0 20.0996 9.10059 20.0996 20.4004c0 11.2002 -9 20.2998 -20.0996 20.2998zM167.8 199.9c-36.2998 0 -66.7998 -31.1006 -66.7998 -66.4004v-48.7998h-36.7002c-31.0996 0 -49.2002 22.5996 -56.7998 54.2002\nc-10.2002 42.5 -9.7998 67.8994 0 108.6c8.5 35.5 35.7002 54.2002 66.7998 54.2002h147v13.5996h-106.899v40.7002c0 30.9004 8.19922 47.5996 53.3994 55.5996c32.1006 5.7002 71 6 106.8 0.100586c29 -4.90039 53.4004 -26.6006 53.4004 -55.6006v-101.899\nc0 -29.7998 -23.7002 -54.2998 -53.4004 -54.2998h-106.8zM161.1 342.5c11.1006 0 20.1006 9.09961 20.1006 20.2998s-9.10059 20.4004 -20.1006 20.4004c-11.0996 0 -20 -9.10059 -20.0996 -20.4004c0 -11.2002 9 -20.2998 20.0996 -20.2998z\" />\n    <glyph glyph-name=\"red-river\" unicode=\"&#xf3e3;\" \nd=\"M353.2 416c52.3994 0 94.7998 -42.4004 94.7998 -94.7998v-258.4c0 -52.3994 -42.4004 -94.7998 -94.7998 -94.7998h-258.4c-52.3994 0 -94.7998 42.4004 -94.7998 94.7998v258.4c0 52.3994 42.4004 94.7998 94.7998 94.7998h258.4zM144.9 247.1\nc-0.600586 12.4004 11.6992 24.6006 24 24h56.2998c27 0 48.8994 21.9004 48.8994 48.9004h-154.199c-13.2002 0 -23.9004 -10.7002 -23.9004 -23.9004v-154.199c27 0 48.9004 21.8994 48.9004 48.8994v56.2998zM321.2 175.1c27 0 48.8994 21.9004 48.8994 48.9004h-154.199\nc-13.2002 0 -23.9004 -10.7002 -23.9004 -23.9004v-154.199c27 0 48.9004 21.8994 48.9004 48.8994v56.2998c-0.600586 12.4004 11.6992 24.6006 24 24h56.2998z\" />\n    <glyph glyph-name=\"wpressr\" unicode=\"&#xf3e4;\" horiz-adv-x=\"496\" \nd=\"M248 440c136.97 0 248 -111.03 248 -248s-111.03 -248 -248 -248s-248 111.03 -248 248s111.03 248 248 248zM419.33 281.4c2.41016 5.47949 0.459961 8.2793 -5.62012 8.26953c-104.8 0.00976562 -107.69 -0.0302734 -130.78 0.0302734\nc-4.31934 0.00976562 -7.10938 -1.82031 -8.83984 -5.78027c-5.70996 -13.0996 -11.5195 -26.1504 -17.2998 -39.21c-2.57031 -5.7998 -1 -8.26953 5.26953 -8.26953c25.2607 0 50.5205 -0.0107422 75.7803 0.0195312\nc10.0303 0.00976562 8.54004 -13.6602 -3.89941 -13.6396c-26.4307 0.0498047 -52.8604 0 -79.29 0.0498047c-4.91016 0.00976562 -8.33008 -1.88965 -10.3506 -6.5c-4.2998 -9.83008 -32.1494 -73.0801 -32.1895 -73.1602\nc-3.2002 -7.16016 -16.2607 -6.09961 -11.2803 5.33008c8.26953 18.9902 16.6504 37.9297 24.9795 56.8896c2.25 5.11035 -0.0996094 8.74023 -5.65918 8.75c-15.21 0.0205078 -30.4307 -0.0400391 -45.6406 0.0400391\nc-3.35938 0.0107422 -5.41016 -1.29004 -6.76953 -4.38965c-31.4307 -71.8701 -29.7803 -67.3203 -30.0098 -67.6904c-3.87012 -6.37012 -14.8604 -3.34961 -10.9502 5.60059c5.66992 13.0098 11.3701 26.0098 17.0898 39c13.5703 30.7793 27.1396 61.5596 40.7402 92.3301\nc2.54004 5.75 -0.419922 10.5801 -6.66016 10.5898c-14.2402 0.0302734 -28.4805 -0.0498047 -42.7197 0.0498047c-4.26074 0.0302734 -6.84082 -1.76953 -8.54004 -5.65039c-12.8604 -29.3896 -25.8203 -58.7295 -38.75 -88.0791\nc-8.62012 -19.5605 -17.2305 -39.1201 -25.8906 -58.6602c-1.58008 -3.55078 -1.47949 -6.78027 1.20996 -9.73047c11.2207 -12.3096 22.4707 -24.6094 33.6807 -36.9395c2.08984 -2.30078 4.58984 -3.4502 7.71973 -3.4502c45.9395 0.0195312 91.8701 0.00976562 137.81 0\nc3.86035 0 6.37988 1.78027 7.91992 5.29004c10.3203 23.5 20.7607 46.9395 30.9502 70.5c2.08984 4.83008 5.21973 6.75 10.3398 6.71973c23.0205 -0.110352 46.0303 -0.0400391 69.0508 -0.0498047c6.0791 0 10.5293 2.72949 12.9697 8.24023\nc15.2598 34.4795 30.4502 68.9893 45.6299 103.5z\" />\n    <glyph glyph-name=\"replyd\" unicode=\"&#xf3e6;\" \nd=\"M320 -32h-192c-70.4004 0 -128 57.5996 -128 128v192c0 70.4004 57.5996 128 128 128h192c70.4004 0 128 -57.5996 128 -128v-192c0 -70.4004 -57.5996 -128 -128 -128zM193.4 174.8c-6.10059 2 -11.6006 3.10059 -16.4004 3.10059\nc-7.2002 0 -13.5 -1.90039 -18.9004 -5.60059c-5.39941 -3.7002 -9.59961 -9 -12.7998 -15.7998h-1.09961l-4.2002 18.2998h-28v-138.899h36.0996v89.6992c1.5 5.40039 4.40039 9.80078 8.7002 13.2002c4.2998 3.40039 9.7998 5.10059 16.2002 5.10059\nc4.59961 0 9.7998 -1 15.5996 -3.10059zM308.6 71.4004c-3.19922 -2.40039 -7.69922 -4.80078 -13.6992 -7.10059s-12.8008 -3.5 -20.4004 -3.5c-12.2002 0 -21.0996 3 -26.5 8.90039c-5.5 5.89941 -8.5 14.7002 -9 26.3994h83.2998\nc0.900391 4.80078 1.60059 9.40039 2.10059 13.9004c0.5 4.40039 0.699219 8.59961 0.699219 12.5c0 10.7002 -1.59961 19.7002 -4.69922 26.9004c-3.2002 7.19922 -7.30078 13 -12.5 17.1992c-5.2002 4.30078 -11.1006 7.30078 -17.8008 9.2002\nc-6.69922 1.7998 -13.5 2.7998 -20.5996 2.7998c-21.0996 0 -37.5 -6.09961 -49.2002 -18.2998s-17.5 -30.5 -17.5 -55c0 -22.7998 5.2002 -40.7002 15.6006 -53.7002c10.3994 -13.0996 26.7998 -19.5996 49.1992 -19.5996c10.7002 0 20.9004 1.5 30.4004 4.59961\nc9.5 3.10059 17.0996 6.80078 22.5996 11.2002zM286.8 141.7c3.7998 -5.40039 5.2998 -13.1006 4.60059 -23.1006h-51.7002c0.899414 9.40039 3.7002 17 8.2002 22.6006c4.5 5.59961 11.5 8.5 21 8.5c8.19922 0.0996094 14.0996 -2.60059 17.8994 -8zM366.7 139.2\nc4.09961 -3.90039 9.39941 -5.7998 16.0996 -5.7998c7 0 12.6006 1.89941 16.7002 5.7998c4.09961 3.89941 6.09961 9.09961 6.09961 15.5996s-2 11.6006 -6.09961 15.4004s-9.59961 5.7002 -16.7002 5.7002c-6.7002 0 -12 -1.90039 -16.0996 -5.7002\nc-4.10059 -3.7998 -6.10059 -8.90039 -6.10059 -15.4004s2 -11.7002 6.10059 -15.5996zM366.7 38.7002c4.09961 -3.90039 9.39941 -5.7998 16.0996 -5.7998c7 0 12.6006 1.89941 16.7002 5.7998c4.09961 3.89941 6.09961 9.09961 6.09961 15.5996\ns-2 11.6006 -6.09961 15.4004s-9.59961 5.7002 -16.7002 5.7002c-6.7002 0 -12 -1.90039 -16.0996 -5.7002c-4.10059 -3.7998 -6.10059 -8.90039 -6.10059 -15.4004c0 -6.59961 2 -11.7002 6.10059 -15.5996z\" />\n    <glyph glyph-name=\"resolving\" unicode=\"&#xf3e7;\" horiz-adv-x=\"496\" \nd=\"M281.2 169.8l-197.9 -57.2002l-28.5996 98.6006l188.2 54.0996c52.6992 15.2998 65 8.10059 71.0996 -12.7998l11.2002 -39.2998c5.59961 -19.9004 2 -30.1006 -44 -43.4004zM248.5 440c137 0 248.5 -111.4 247.5 -247.7c0 -136.899 -111.5 -248.3 -248.5 -248.3\nc-46 0 -89.5 12.7002 -126.3 34.7002l-23 80.2002l286.8 -37.3008l48.0996 13.3008l-9.69922 34.1992l-220.4 27.1006l92.5996 26.5996c30.2002 8.7002 42 15.7998 61.4004 33.2002c24.5 23 31.7002 45.5 23.5 73.5996l-10.7002 37.8008\nc-8.7002 30.1992 -25.0996 49.0996 -61.3994 55.1992c-25.1006 3.5 -44.5 2 -79.3008 -8.19922l-221.899 -63.9004c26 108.8 124.2 189.5 241.3 189.5zM38.2998 59.4004c-24 38.3994 -38.2998 83.2998 -38.2998 131.8z\" />\n    <glyph glyph-name=\"rocketchat\" unicode=\"&#xf3e8;\" horiz-adv-x=\"576\" \nd=\"M486.41 340.43c119.649 -76.54 119.26 -221 0 -297.14c-77.1201 -50.9199 -179.37 -62.3896 -264.12 -47.1602c-95.5205 -91.1895 -201.72 -49.1602 -222.29 -37c0 0 73.0801 62.1006 61.21 116.49c-45.3896 46.3701 -86.5195 144.57 0 232.77\nc11.8701 54.3906 -61.21 116.49 -61.21 116.49c20.7695 12.1201 127.26 54.2803 222.29 -37.3799c84.9404 15.3301 187.19 3.75977 264.12 -47.0703zM294.18 43.7803c126.67 0 229.409 66.2197 229.409 148.22s-102.74 148.43 -229.41 148.43\ns-229.41 -66.4297 -229.41 -148.43c0 -35.79 19.4707 -68.5195 52 -94.1299c9.11426 -29.127 3.78125 -62.0234 -15.999 -98.6904c-0.889648 -1.67969 -1.76953 -3.45996 -2.76953 -5.23926c15.0498 1.33594 38.2158 7.93555 51.71 14.7295\nc11.0684 6.26562 27.46 18.5361 36.5898 27.3896l19.7705 19.0908c23.6396 -6.27734 62.6758 -11.3721 87.1348 -11.3721c0.269531 0 0.706055 0.000976562 0.974609 0.00195312zM184.119 156.7c-0.133789 -0.00195312 -0.351562 -0.00390625 -0.485352 -0.00390625\nc-18.6182 0 -33.9912 15.1084 -34.3145 33.7236c-0.700195 45.3896 67.8301 46.3799 68.5195 1.08984v-0.509766c0.000976562 -0.0888672 0.00195312 -0.232422 0.00195312 -0.321289c0 -18.6152 -15.1074 -33.8467 -33.7217 -33.999v0.0205078zM257.889 190.42\nc-0.790039 45.3896 67.7402 46.4805 68.5303 1.19043v-0.610352c0.389648 -45.0801 -67.7402 -45.5703 -68.5303 -0.580078zM401.269 156.7c-0.133789 -0.00195312 -0.350586 -0.00390625 -0.485352 -0.00390625c-18.6182 0 -33.9951 15.1084 -34.3242 33.7236\nc-0.69043 45.3896 67.8398 46.3799 68.5303 1.08984v-0.509766c0.000976562 -0.119141 0.00292969 -0.311523 0.00292969 -0.430664c0 -18.6152 -15.1084 -33.7979 -33.7236 -33.8896v0.0205078z\" />\n    <glyph glyph-name=\"rockrms\" unicode=\"&#xf3e9;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM405.4 20.5l-101.5 118.9s73.5996 0.199219 74.1992 0.199219c29.6006 -1.09961 46.6006 33.3008 27.6006 56.1006l-157.7 185.1c-13.2002 17.2998 -40.0996 18.4004 -54.5 0\nl-147.1 -172.5h90l84.2998 98.9004l84.5996 -99.2998h-75.2998c-30.5 0 -44.5 -35.7002 -26.5996 -56.1006l112 -131.3h90z\" />\n    <glyph glyph-name=\"schlix\" unicode=\"&#xf3ea;\" \nd=\"M350.5 290.3l-54.2002 46.1006l73.4004 39l78.2998 -44.2002zM192 325.9l45.7002 28.1992l34.7002 -34.5996l-55.4004 -29zM126.9 319.3l31.8994 22.1006l17.2002 -28.4004l-36.7002 -22.5zM103.6 231.1l-8.7998 34.8008l29.6006 18.2998l13.0996 -35.2998z\nM82.4004 314.8l23.8994 18.1006l8.90039 -24l-26.7002 -18.3008zM59 241.5l-3.59961 28.4004l22.2998 15.5l6.09961 -28.7002zM28.4004 224.9l20.7998 12.7998l3.2998 -33.4004l-22.9004 -12zM1.40039 180l19.1992 10.2002l0.400391 -38.2002l-21 -8.7998zM60.5 120.7\nl-28.2998 -8.2998l-1.60059 46.7998l25.1006 10.7002zM99 184.8l-31.0996 -13l-5.2002 40.7998l27.3994 14.4004zM123.2 71l-41.6006 -5.90039l-8.09961 63.5l35.2002 10.8008zM151.7 210.9l21.2002 -57.1006l-46.2002 -13.5996l-13.7002 54.0996zM237.4 -19.5996\nl-70.9004 3.2998l-24.2998 95.7998l55.2002 8.59961zM152.5 260.1l42.2002 22.4004l28 -45.9004l-50.7998 -21.2998zM193.5 165.2l61.2998 18.7002l52.7998 -86.6006l-79.7998 -11.2998zM244.9 250.8l67.2998 28.7998l65.5 -65.3994l-88.6006 -26.2002z\" />\n    <glyph glyph-name=\"searchengin\" unicode=\"&#xf3eb;\" horiz-adv-x=\"460\" \nd=\"M220.6 317.7l-67.1992 -209.3v130.3l-54.7002 -24.2002l54.7002 190.3v-115.3zM137.4 414.4l-1.30078 -4.7002l-15.1992 -52.9004c-40.3008 -15.5 -68.9004 -54.5996 -68.9004 -100.3c0 -52.2998 34.2998 -95.9004 83.4004 -105.5v-53.5996\nc-77.9004 10.5 -135.4 78.1992 -135.4 159c0 80.5 59.7998 147.199 137.4 158zM448.8 -32.7998c-11.2002 -11.2002 -23.0996 -12.2998 -28.5996 -10.5c-5.40039 1.7998 -27.1006 19.8994 -60.4004 44.3994c-33.2998 24.6006 -33.5996 35.7002 -43 56.7002\nc-9.39941 20.9004 -30.3994 42.6006 -57.5 52.4004l-9.7002 14.7002c-24.6992 -16.9004 -53 -26.9004 -81.2998 -28.7002l2.10059 6.59961l15.8994 49.5c46.5 11.9004 80.9004 54 80.9004 104.2c0 54.5 -38.4004 102.1 -96 107.1v52.1006\nc83.2002 -5.10059 148.8 -74.5 148.8 -159.3c0 -33.6006 -11.2002 -64.7002 -29 -90.4004l14.5996 -9.59961c9.80078 -27.1006 31.5 -48 52.4004 -57.4004s32.2002 -9.7002 56.7998 -43c24.6006 -33.2002 42.7002 -54.9004 44.5 -60.2998\nc1.7998 -5.40039 0.700195 -17.2998 -10.5 -28.5zM438.9 -14.9004c0 4.40039 -3.60059 8 -8 8c-4.40039 0 -8 -3.59961 -8 -8c0 -4.39941 3.59961 -8 8 -8c4.39941 0 8 3.60059 8 8z\" />\n    <glyph glyph-name=\"servicestack\" unicode=\"&#xf3ec;\" horiz-adv-x=\"496\" \nd=\"M88 232c81.7002 -10.2002 273.7 -102.3 304 -232h-392c99.5 8.09961 184.5 137 88 232zM120 384c102.8 -15.5 335.3 -167.9 376 -384h-96c-26.2998 126.7 -150.7 216.7 -233.6 250.4c1.2998 49.6992 -14.1006 98 -46.4004 133.6z\" />\n    <glyph glyph-name=\"sistrix\" unicode=\"&#xf3ee;\" \nd=\"M448 -1l-30.5 -31l-146 148.1c-28.7002 -23.6992 -65.2002 -37.8994 -105 -37.8994c-91.7998 0 -166.5 75.7998 -166.5 168.899c0 93.1006 74.7002 168.9 166.6 168.801c91.8008 0 166.5 -75.8008 166.5 -168.9c0 -37 -11.8994 -71.2998 -31.8994 -99.2002zM166.5 117.2\nc70.7002 0 128.1 58.2998 128.1 129.899c0 71.6006 -57.5 129.9 -128.1 129.9s-128.1 -58.2998 -128.1 -129.9c0 -71.5996 57.5 -129.899 128.1 -129.899z\" />\n    <glyph glyph-name=\"slack-hash\" unicode=\"&#xf3ef;\" \nd=\"M446.2 177.6c6.2002 -19 -3.90039 -39.6992 -22.9004 -45.6992l-45.3994 -15.1006l15.6992 -47c6.10059 -19.0996 -3.89941 -39.7002 -23 -45.8994c-21.2998 -6.10059 -40.0996 6 -46 22.8994l-15.6992 47l-93.6006 -31.2998l15.7002 -47\nc6.09961 -19.0996 -3.90039 -39.7002 -23 -45.9004c-21.2998 -6.09961 -40.0996 6 -46 22.9004l-15.7002 47c-45.7002 -15.2002 -50.8994 -17.7998 -57.7002 -16.7998c-14.5 0.599609 -28.5996 10.0996 -33.5996 24.5996c-6.09961 19 4 39.7002 23 45.9004l45.4004 15.0996\nl-30.3008 90c-45.6992 -15.2002 -50.8994 -17.7998 -57.6992 -16.7998c-14.5 0.599609 -28.6006 10.0996 -33.6006 24.5996c-6.09961 19.1006 3.90039 39.7002 23 45.9004l45.2998 15l-15.6992 47c-6.10059 19.0996 3.89941 39.7002 23 45.9004\nc19.0996 6.19922 39.7998 -3.90039 46 -22.9004l15.6992 -47l93.4004 31.2002l-15.7002 47c-6.09961 19.0996 3.90039 39.7002 23 45.8994c19.1006 6.2002 39.7998 -3.89941 46 -22.8994l15.7002 -47l45.4004 15.0996c19.0996 6.2002 39.7998 -3.89941 46 -22.8994\nc6.09961 -19.1006 -3.90039 -39.7002 -23 -45.9004l-45.4004 -15.0996l30.2998 -90l45.4004 15.0996c19.0996 6.2002 39.7998 -3.90039 46 -22.9004zM192.1 130.4l93.5 31.2998l-30.2998 90.2002l-93.5 -31.3008z\" />\n    <glyph glyph-name=\"speakap\" unicode=\"&#xf3f3;\" \nd=\"M64 56.2197c-79.4102 88.1904 -72 224.36 16.6396 304.141c88.6406 79.7793 224.801 73 304.21 -15.2402c79.4102 -88.2402 72 -224.36 -16.6396 -304.14c-18.7402 -16.8701 64 -43.0908 42 -52.2607c-82.0596 -34.21 -253.91 -35 -346.229 67.5h0.0195312z\nM277.31 267.82l38.5 40.8594c-9.60938 8.89062 -32 26.8301 -76.1699 27.6006c-52.3301 0.910156 -95.8594 -28.2998 -96.7695 -80c-0.200195 -11.3301 0.290039 -36.7207 29.4199 -54.8301c34.46 -21.4199 86.5195 -21.5098 86 -52.2598\nc-0.370117 -21.2803 -26.4199 -25.8105 -38.5898 -25.6006c-3 0.0498047 -30.2305 0.459961 -47.6104 24.6201l-40 -42.6104c28.1602 -27 59 -32.6191 83.4902 -33.0498c10.2295 -0.179688 96.4199 -0.330078 97.8398 81\nc0.280273 15.8105 -2.07031 39.7197 -28.8604 56.5898c-34.3594 21.6406 -85 19.4502 -84.4297 49.75c0.410156 23.25 31 25.3701 37.5303 25.2607c0.429688 0 26.6201 -0.260742 39.6201 -17.3701z\" />\n    <glyph glyph-name=\"staylinked\" unicode=\"&#xf3f5;\" horiz-adv-x=\"440\" \nd=\"M382.7 155.5l44.2998 -41.2998c3.7002 -3.5 3.2998 -9 -0.700195 -12.2002l-198 -163.9c-9.89941 -7.59961 -17.2998 -0.799805 -17.2998 -0.799805l-208.7 196.101c-3.5 3.5 -3 9 1.2002 12.1992l45.7998 34.9004c4.2002 3.2002 10.4004 3 13.9004 -0.5l151.899 -147.5\nc3.7002 -3.5 10 -3.7002 14.2002 -0.400391l93.2002 74c4.09961 3.2002 4.5 8.7002 0.900391 12.2002l-84 81.2998c-3.60059 3.5 -9.90039 3.7002 -14 0.5l-0.100586 -0.0996094c-4.09961 -3.2002 -10.3994 -3 -14 0.5l-68.0996 64.2998\nc-3.5 3.5 -3.10059 9 1.09961 12.2002l57.2998 43.5996c4.10059 3.2002 10.3008 3 13.8008 -0.5l170 -167.3zM437.2 238.9c3.7002 -3.5 3.39941 -9 -0.700195 -12.2002l-45.7998 -35.7998c-4.10059 -3.2002 -10.4004 -3 -14.1006 0.5l-160.399 159\nc-3.60059 3.5 -9.7998 3.69922 -13.9004 0.5l-92.2002 -71.5c-4.19922 -3.30078 -4.69922 -8.7002 -1.09961 -12.2002l94.5996 -91.7998c3.7002 -3.5 10 -3.60059 14.2002 -0.400391l0.100586 0.0996094c4.19922 3.2002 10.5996 3 14.1992 -0.5l57.1006 -54.3994\nc3.7002 -3.5 3.2998 -9 -0.900391 -12.2002l-7.7002 -6l0.300781 -0.299805l-50.2002 -38.7998c-4.2002 -3.30078 -10.6006 -3.10059 -14.2998 0.399414l-171.7 165.101l-42.2998 41.6992c-3.60059 3.5 -3 9 1.19922 12.2002l206.801 162.101\nc8.2998 6.59961 14.7998 2.2998 16.2998 1.09961z\" />\n    <glyph glyph-name=\"steam-symbol\" unicode=\"&#xf3f6;\" \nd=\"M395.5 270.5c0 -33.7998 -27.5 -61 -61 -61c-33.7998 0 -61 27.2998 -61 61s27.2998 61 61 61c33.5 0 61 -27.2002 61 -61zM448 270.3c0 -63 -51 -113.8 -113.7 -113.8l-109.3 -79.7998c-4 -43 -40.5 -76.7998 -84.5 -76.7998c-40.5 0 -74.7002 28.7998 -83 67\nl-57.5 23.0996v107.3l97.2002 -39.2998c15.0996 9.2002 32.2002 13.2998 52 11.5l71 101.7c0.5 62.2998 51.5 112.8 114 112.8c62.7998 0 113.8 -51 113.8 -113.7zM203 85c0 34.7002 -27.7998 62.5 -62.5 62.5c-4.5 0 -9 -0.5 -13.5 -1.5l26 -10.5\nc25.5 -10.2002 38 -39 27.7002 -64.5c-10.2002 -25.5 -39.2002 -38 -64.7002 -27.5c-10.2002 4 -20.5 8.2998 -30.7002 12.2002c10.5 -19.7002 31.2002 -33.2002 55.2002 -33.2002c34.7002 0 62.5 27.7998 62.5 62.5zM410.5 270.3c0 42 -34.2998 76.2002 -76.2002 76.2002\nc-42.2998 0 -76.5 -34.2002 -76.5 -76.2002c0 -42.2002 34.2998 -76.2002 76.5 -76.2002c41.9004 -0.0996094 76.2002 33.9004 76.2002 76.2002z\" />\n    <glyph glyph-name=\"sticker-mule\" unicode=\"&#xf3f7;\" horiz-adv-x=\"576\" \nd=\"M561.7 248.4c-1.2998 -0.300781 0.299805 0 0 0zM555.5 325.8c20.2002 -50.0996 20.5996 -45.2002 20.5996 -52.8994c0 -7.5 -4.09961 -11 -7.19922 -16.5c-1.5 -3 -4.60059 -7.5 -7.2002 -8c-0.400391 0 -3 -0.5 -13.4004 -2.5c-7.2002 -1 -13.3994 4.5 -14.8994 9.5\nc-1.60059 4.69922 2.7998 10.0996 -11.8008 22.8994c-10.2998 10 -21.0996 11.2998 -31.8994 17c-9.7998 5.7002 -11.9004 -1 -18 -8c-18 -22.8994 -34 -46.8994 -52 -69.7998c-11.7998 -15 -24.2002 -30.4004 -33.5 -47.4004\nc-3.90039 -6.7998 -9.5 -28.0996 -10.2998 -29.8994c-6.2002 -17.7002 -5.5 -25.7998 -16.5 -68.2998c-3.10059 -10 -5.7002 -21.4004 -8.7002 -32.4004c-2.2002 -6.7998 -7.40039 -49.2998 -0.5 -59.4004c2.09961 -3.5 8.7002 -4.5 11.2998 -8\nc0.0996094 -0.0996094 9.59961 -18.1992 9.2998 -20c0 -6.09961 -9.39941 -5.59961 -11.2998 -6.5c-4.7998 -2.89941 -3.7998 -5.89941 -6.40039 -7.39941c-5.89941 -2.90039 -32.0996 -3.2002 -36.5 0.5c-4.09961 3 -2.19922 11.8994 -1.5 15\nc2.2002 15 -2.5 7.89941 -9.7998 11.5c-3.09961 1.5 -4.09961 5.5 -4.59961 10c-0.5 1.5 -1 2.5 -1.5 3.5c-1.7002 10.7002 6.7998 33.5996 8.2002 43.3994c4.89941 23.7002 -0.700195 37.2002 1.5 46.9004c3.69922 16.2002 4.09961 3.5 4.09961 29.9004\nc-1.40039 25.8994 3.2998 36.8994 0.5 38.8994c-14.7998 0 -64.2998 -10.7002 -112.2 -2c-46.0996 8.90039 -59.3994 29 -65.3994 30.9004c-10.3008 4.5 -23.2002 -0.5 -27.3008 -7c-0.0996094 -0.100586 -35 -70.6006 -39.5996 -87.7998\nc-6.2002 -20.5 -0.5 -47.4004 4.09961 -66.8008c0 -0.0996094 4.5 -14.5996 10.3008 -19.5c2.09961 -1.5 5.09961 -2.5 7.19922 -4.5c2.80078 -2.69922 9.40039 -15.1992 9.80078 -16c2.59961 -4.5 3.59961 -8 -1.5 -10.5c-3.60059 -2 -9.30078 -2.5 -14.4004 -2.5\nc-2.59961 -0.5 -1.5 -3.5 -3.09961 -5c-2.90039 -2.7998 -20.7002 -6.09961 -29.9004 -2.5c-2.59961 1 -5.7002 3 -6.2002 5c-1.5 4 2.10059 9 -1 12.5c-4.5 2.90039 -13.0996 2 -17 12c-2.2002 5.40039 -2.59961 7.60059 -2.59961 49.4004\nc0 9.7002 -5.90039 38.7002 -8.2002 46.9004c-1.5 5.5 -1.5 11.5 0 16c0.299805 0.899414 4.09961 4.59961 4.09961 13c-1 1.5 -4.59961 0.5 -5.09961 1.5c-10.4004 80.5996 -5.90039 79 -7.7002 98.2998c-1.5 16 -10.8994 43.8994 -6.7002 64.2998\nc0.5 2.40039 3.40039 21 24.2002 38.9004c31 26.6992 48.4004 38.2998 159 11.5c1.10059 -0.400391 66.2998 -21.1006 110.7 9c15.5 11.2998 28.7998 11.2998 35.5 16c0.0996094 0.0996094 61.7002 52.0996 87 65.2998c47.2002 29.3994 69.9004 16.7002 75.0996 18\nc4.7002 1 13.4004 25.7998 17 25.7998c5.5 0 1.60059 -20.2002 3.60059 -25.9004c0.5 -2 3.59961 -5 6.2002 -5c2.2998 0 1.69922 0.800781 10.2998 5c8.39941 5.40039 14.8994 17.6006 20.5996 17c11.7002 -1.59961 -19 -41.5996 -19 -46.8994\nc0 -2 0.200195 -0.799805 4.60059 -9.5c2.59961 -5.5 4.59961 -13.5 6.19922 -20c8.30078 -29.7002 5.7002 -14.6006 13.4004 -36.9004z\" />\n    <glyph glyph-name=\"studiovinari\" unicode=\"&#xf3f8;\" horiz-adv-x=\"512\" \nd=\"M480.3 260.3l4.2002 -28v-28l-25.0996 -44.0996l-39.8008 -78.4004l-56.0996 -67.5l-79.0996 -37.7998l-17.7002 -24.5l-7.7002 -12l-9.59961 -4s17.2998 63.5996 19.3994 63.5996c2.10059 0 20.2998 -0.699219 20.2998 -0.699219l66.7002 38.5996l-92.5 -26.0996\nl-55.8994 -36.8008l-22.8008 -28l-6.59961 -1.39941l20.7998 73.5996l6.90039 5.5l20.7002 -12.8994l88.2998 45.1992l56.7998 51.5l14.7998 68.4004l-125.399 -23.2998l15.1992 18.2002l-173.399 53.2998l81.8994 10.5l-166 122.899l114.9 -18.0996l-101.3 108\nl252.899 -126.6l-31.5 38l124.4 -74.4004l-143.3 99l18.7002 -38.4004l-49.6006 18.1006l-45.5 84.2998l194.601 -122l-42.9004 55.7998l108 -96.3994l12 8.89941l-21 16.4004l4.2002 37.7998l37.7998 10.4004l29.2002 -24.7002l11.5 -4.2002l-7 -6.2002l8.5 -12\nl-13.1006 -7.39941l-10.2998 -20.2002z\" />\n    <glyph glyph-name=\"supple\" unicode=\"&#xf3f9;\" horiz-adv-x=\"640\" \nd=\"M640 185.5c0 -64.0996 -109 -116.1 -243.5 -116.1c-24.7998 0 -48.5996 1.7998 -71.0996 5c7.69922 -0.400391 15.5 -0.600586 23.3994 -0.600586c134.5 0 243.5 56.9004 243.5 127.101c0 29.3994 -19.0996 56.3994 -51.2002 78\nc60 -21.1006 98.9004 -55.1006 98.9004 -93.4004zM47.7002 220.1c0.0996094 -29.3994 19.2998 -56.5 51.5996 -78c-60.2002 21 -99.2002 55 -99.2998 93.3008c-0.0996094 64.0996 108.8 116.3 243.3 116.699c24.7002 0 48.5 -1.69922 71 -4.89941\nc-7.7002 0.299805 -15.3994 0.5 -23.2998 0.5c-134.5 -0.299805 -243.4 -57.4004 -243.3 -127.601zM107.9 180.2l8.7998 10.8994s8.7998 -10.0996 20.7002 -10.0996c6.5 0 12.2998 3.5 12.2998 10.0996c0 14.5 -40.2002 13.3008 -40.2002 39.9004\nc0 13.9004 12 24.0996 28.5 24.0996c10 0 25.4004 -4.69922 25.4004 -16.7998v-7.89941h-14.2002v3.89941c0 4 -5.60059 6.60059 -11.2998 6.60059c-7.2002 0 -12.5 -3.7002 -12.5 -9.10059c0 -14.5996 40.1992 -11.7002 40.1992 -39.7002\nc0 -13.5996 -10.5 -25.0996 -28.3994 -25.0996c-18.7998 0 -29.2998 13.2002 -29.2998 13.2002zM228.7 253.8h15.7002v-55c0 -18.8994 -13.3008 -31.8994 -33.4004 -31.8994c-20.2998 0 -33.7002 13 -33.7002 31.8994v55h15.7998v-54.5\nc0 -11.2002 7.10059 -17.7002 17.8008 -17.7002c10.6992 0 17.7998 6.5 17.7998 17.8008v54.3994zM263.1 168.4v72h-7.7998v13.3994h39.1006c16 0 27.1992 -11.2002 27.1992 -27.7998s-11.1992 -28.0996 -27.1992 -28.0996h-15.5v-29.5h-15.8008zM278.9 211.4h12.5996\nc8.90039 0 14 5.7998 14 14.6992c0 8.7002 -5 14.4004 -13.7002 14.4004h-12.8994v-29.0996zM335.9 168.4v72h-7.80078v13.3994h39.1006c16 0 27.2002 -11.2002 27.2002 -27.7998s-11.2002 -28.0996 -27.2002 -28.0996h-15.5v-29.5h-15.7998zM351.6 211.4h12.6006\nc9 0 14 5.7998 14 14.6992c0 8.7002 -5 14.4004 -13.7002 14.4004h-12.9004v-29.0996zM408.7 176.6h0.0996094v61.2002c0 1.60059 -0.899414 2.60059 -2.59961 2.60059h-5.2002v13.3994h15.4004c5.7998 0 8.19922 -2.5 8.19922 -8.2002v-61.1992\nc0 -1.60059 0.900391 -2.60059 2.60059 -2.60059h18.5996c1.60059 0 2.60059 0.900391 2.60059 2.60059v5.19922h14.2998v-13c0 -5.7998 -2.40039 -8.19922 -8.2002 -8.19922h-37.5996c-5.80078 0 -8.2002 2.39941 -8.2002 8.19922zM472.1 176.6h-0.0996094v63.9004h-7.7998\nv13.4004h51.5996c5.7002 0 8.2002 -2.5 8.2002 -8.2002v-13h-14.2002v5.2002c0 1.59961 -0.899414 2.59961 -2.59961 2.59961h-19.2002v-22.4004h27.7002v-13.3994h-27.7002v-20.2998c0 -1.60059 0.900391 -2.60059 2.59961 -2.60059h19.7002\nc1.60059 0 2.60059 0.900391 2.60059 2.60059v5.19922h14.2998v-13c0 -5.7998 -2.5 -8.19922 -8.2002 -8.19922h-38.7002c-5.7998 0 -8.2002 2.39941 -8.2002 8.19922zM531 252.6h-2.7002v1.2002h7v-1.2002h-2.7002v-5.89941h-1.59961v5.89941zM536.7 253.8h2.39941\nl2.10059 -5.09961l2.09961 5.09961h2.2998v-7.09961h-1.5v5.7002l-2.2998 -5.7002h-1.2998l-2.2998 5.7002v-5.7002h-1.5v7.09961z\" />\n    <glyph glyph-name=\"telegram-plane\" unicode=\"&#xf3fe;\" \nd=\"M446.7 349.4l-67.6006 -318.801c-5.09961 -22.5 -18.3994 -28.0996 -37.2998 -17.5l-103 75.9004l-49.7002 -47.7998c-5.5 -5.5 -10.0996 -10.1006 -20.6992 -10.1006l7.39941 104.9l190.9 172.5c8.2998 7.40039 -1.7998 11.5 -12.9004 4.09961l-236 -148.6\nl-101.6 31.7998c-22.1006 6.90039 -22.5 22.1006 4.59961 32.7002l397.4 153.1c18.3994 6.90039 34.5 -4.09961 28.5 -32.1992z\" />\n    <glyph glyph-name=\"uber\" unicode=\"&#xf402;\" \nd=\"M414.1 416c18.7002 0 33.9004 -15.2002 33.8008 -33.9004v-380.199c0 -18.7002 -15.2002 -33.9004 -33.9004 -33.9004h-380.1c-18.7002 0 -33.9004 15.2002 -33.9004 34v380.1c0 18.7002 15.2002 33.9004 33.9004 33.9004h380.199zM237.6 56.9004\nc74.6006 7.5 129 74.0996 121.5 148.6c-7 69.4004 -65.3994 122.2 -135.1 122.2s-128.1 -52.7998 -135.1 -122.2h94.3994v20.4004c0 3.7998 3.10059 6.7998 6.7998 6.7998h67.9004c3.7998 0 6.7998 -3.10059 6.7998 -6.7998v-67.9004\nc0 -3.7998 -3.09961 -6.7998 -6.7998 -6.7998h-67.9004c-3.7998 0 -6.7998 3.09961 -6.7998 6.7998v20.4004h-94.3994c7.5 -74.6006 74.0996 -129 148.699 -121.5z\" />\n    <glyph glyph-name=\"uikit\" unicode=\"&#xf403;\" \nd=\"M443.9 320v-256l-225.9 -128l-218 128v214.3l87.5996 -45.0996v-117l133.5 -75.5l135.801 75.5v151l-101.101 57.5996l87.6006 53.1006zM308.6 398.9l-87.3994 -53l-86 47.2998l88.5996 54.7998z\" />\n    <glyph glyph-name=\"uniregistry\" unicode=\"&#xf404;\" horiz-adv-x=\"384\" \nd=\"M192 -32c-39.5 0 -76.2002 11.7998 -106.7 32.2002h213.5c-30.5996 -20.4004 -67.2998 -32.2002 -106.8 -32.2002zM102.9 161.1c0 -2.5 0.0996094 -5 0.299805 -7.39941h-103.101c-0.0996094 2.39941 -0.0996094 4.89941 -0.0996094 7.39941v12.4004h102.9v-12.4004z\nM123.4 104.1c8.89941 -10.5996 20.0996 -19.0996 33 -24.7998h-138.301c-3.7998 8 -7 16.2998 -9.59961 24.7998h114.9zM105.7 138.8c2 -7.89941 5.2002 -15.3994 9.2002 -22.2998h-109.7c-1.7002 7.2998 -3 14.7002 -3.90039 22.2998h104.4zM102.9 208.1v-17.2998h-102.9\nv17.2998h102.9zM102.9 381.3v-4.89941h-102.9v4.89941h102.9zM102.9 416v-2.5h-102.9v2.5h102.9zM102.9 346.7v-7.40039h-102.9v7.40039h102.9zM102.9 242.7v-14.7998h-102.9v14.7998h102.9zM102.9 312v-9.90039h-102.9v9.90039h102.9zM102.9 277.4v-12.4004h-102.9v12.4004\nh102.9zM269.1 116.5c4 6.90039 7.10059 14.4004 9.2002 22.2998h104.4c-0.799805 -7.59961 -2.10059 -15 -3.90039 -22.2998h-109.7zM281.1 302.2v9.7998h102.9v-9.7998h-102.9zM281.1 265v12.4004h102.9v-12.4004h-102.9zM281.1 339.3v7.40039h102.9v-7.40039h-102.9z\nM281.1 416h102.9v-2.5h-102.9v2.5zM78.0996 5.09961c-11.7998 8.7002 -23.5996 18.7002 -33.1992 29.7002h293.1c-9.5 -11.0996 -20.4004 -21 -32.2002 -29.7002h-227.7zM281.1 376.4v4.89941h102.9v-4.89941h-102.9zM281.1 227.9v14.7998h102.9v-14.7998h-102.9z\nM38.7998 42.2998c-6.59961 8.5 -10.5996 17.6006 -15.7998 27.2002h338.9c-5.2002 -9.59961 -11.1006 -18.7002 -17.8008 -27.2002h-305.3zM227.6 79.4004c12.8008 5.59961 24.1006 14.0996 32.9004 24.7998h115c-2.7002 -8.60059 -4.7998 -16.7998 -8.5 -24.7998h-139.4z\nM281.1 161.1v12.4004h102.9v-12.4004c0 -2.5 -0.0996094 -4.89941 -0.200195 -7.39941h-103.1c0.299805 2.39941 0.399414 4.89941 0.399414 7.39941zM281.1 190.8v17.2998h102.9v-17.2998h-102.9z\" />\n    <glyph glyph-name=\"untappd\" unicode=\"&#xf405;\" horiz-adv-x=\"640\" \nd=\"M401.3 398.1c-79.7998 -160.1 -84.5996 -152.5 -87.8994 -173.199l-5.2002 -32.8008c-1.90039 -12 -6.60059 -23.5 -13.7002 -33.3994l-148.9 -207.8c-7.59961 -10.6006 -20.3994 -16.2002 -33.3994 -14.6006c-40.2998 5 -77.7998 32.2002 -95.2998 68.5\nc-5.7002 11.7998 -4.5 25.7998 3.09961 36.4004l148.9 207.899c7.09961 9.90039 16.3994 18 27.1992 23.7002l29.3008 15.5c18.5 9.7998 9.69922 11.9004 135.6 138.9c1 4.7998 1 7.2998 3.59961 8c3 0.700195 6.60059 1 6.30078 4.59961l-0.400391 4.60059\nc-0.200195 1.89941 1.2998 3.59961 3.2002 3.59961c4.5 0.0996094 13.2002 -1.2002 25.5996 -10c12.2998 -8.90039 16.4004 -16.7998 17.7002 -21.0996c0.599609 -1.80078 -0.599609 -3.7002 -2.40039 -4.2002l-4.5 -1.10059\nc-3.39941 -0.899414 -2.5 -4.39941 -2.2998 -7.39941c0.100586 -2.7998 -2.2998 -3.60059 -6.5 -6.10059zM230.1 411.6c-3.19922 0.800781 -8.19922 1.2002 -6.7998 5.40039c1.2998 4.2998 5.40039 12.2002 17.7002 21.0996c12.4004 8.90039 21.0996 10.1006 25.5996 10\nc4.2002 -0.0996094 3.10059 -4.89941 2.80078 -8.19922c-0.300781 -3.60059 3.2998 -3.80078 6.2998 -4.60059c2.59961 -0.700195 2.59961 -3.2998 3.59961 -8c9.10059 -9.2002 17.6006 -17.8994 25.6006 -26.0996c1.2998 -1.40039 1.19922 -3.5 -0.100586 -4.90039\nc-15.8994 -16.3994 -29.2998 -30.5996 -40.5 -42.5996c-1 -1 -2.59961 -0.799805 -3.2998 0.5c-6.90039 13.5 -14.2998 28.0996 -22.2002 44c-4.2998 2.5 -6.59961 3.2998 -6.39941 6c0.199219 3 1.09961 6.5 -2.30078 7.39941zM620 41.2998\nc7.7002 -10.7002 8.7998 -24.7002 3.40039 -36.5996c-17.7002 -36.6006 -55.4004 -63.7002 -95.7002 -68.6006c-12.9004 -1.5 -25.5 4.10059 -33.1006 14.7002l-148.899 207.9c-7.10059 9.89941 -11.7998 21.3994 -13.7002 33.3994\nc-1.59961 9.80078 -2 19.1006 -0.299805 29.8008c1.89941 12 2.7002 6 49 94.7998c0.700195 1.39941 2.59961 1.59961 3.59961 0.5c16.2998 -18 19.2998 -23 30.5 -28.9004c29.7998 -15.7002 43.2002 -20.5996 56.4004 -39.0996z\" />\n    <glyph glyph-name=\"ussunnah\" unicode=\"&#xf407;\" horiz-adv-x=\"512\" \nd=\"M156.8 162.9l5.7002 -14.4004h-8.2002c-1.2998 3.2002 -3.09961 7.7002 -3.7998 9.5c-2.5 6.2998 -1.09961 8.40039 0 10c1.90039 2.7002 3.2002 4.40039 3.59961 5.2002c0 -2.2002 0.800781 -5.7002 2.7002 -10.2998zM454.1 144.1\nc-2.09961 -13.7998 -5.69922 -27.0996 -10.5 -39.6992l43 -23.4004l-44.7998 18.7998c-5.2998 -13.2002 -12 -25.5996 -19.8994 -37.2002l34.1992 -30.1992l-36.7998 26.3994c-8.39941 -11.7998 -18 -22.5996 -28.7002 -32.2998l24.9004 -34.7002l-28.0996 31.7998\nc-11 -9.59961 -23.1006 -18 -36.1006 -25.0996l15.7002 -37.2002l-19.2998 35.2998c-13.1006 -6.7998 -27 -12.0996 -41.6006 -15.8994l6.7002 -38.4004l-10.5 37.4004c-14.2998 -3.40039 -29.2002 -5.2998 -44.5 -5.40039l-1.7998 -38.2998l-1.90039 38.4004\nc-15.2998 0.0996094 -30.1992 2 -44.5 5.2998l-10.5996 -37.2998l6.7002 38.1992c-14.6006 3.7002 -28.6006 9.10059 -41.7002 15.8008l-19.2002 -35.1006l15.6006 37c-13 7 -25.2002 15.4004 -36.2002 25.1006l-27.9004 -31.6006l24.7002 34.4004\nc-10.7002 9.7002 -20.4004 20.5 -28.7998 32.2998l-36.5 -26.2002l33.8994 29.9004c-7.89941 11.5996 -14.5996 24.0996 -20 37.2998l-44.3994 -18.7002l42.5996 23.2002c-4.7998 12.7002 -8.39941 26.0996 -10.5 39.9004l-51 -9l50.2998 14.1992\nc-1.09961 8.5 -1.69922 17.1006 -1.69922 25.9004c0 4.7002 0.199219 9.40039 0.5 14.0996l-55.4004 2.90039l56 2.7998c1.2998 13.1006 3.7998 25.7998 7.5 38.1006l-57.0996 16.0996l58.8994 -10.4004c4 12 9.10059 23.5 15.2002 34.4004l-55.0996 30l58.2998 -24.5996\nc6.2998 10.5996 13.5 20.3994 21.5996 29.5996l-49.5 43.5996l53.9004 -38.6992c8.09961 8.59961 17 16.5 26.5996 23.5996l-40 55.5996l45.6006 -51.5996c9.5 6.59961 19.6992 12.2998 30.2998 17.2002l-27.2998 64.8994l33.7998 -62.0996\nc10.5 4.40039 21.3994 7.90039 32.7002 10.4004l-12.4004 70.6992l19.5 -69.1992c11 2.09961 22.2998 3.19922 33.7998 3.39941l3.7002 72.2002l3.59961 -72.2002c11.5 -0.200195 22.8008 -1.39941 33.8008 -3.5l19.5996 69.2998l-12.4004 -70.6992\nc11.3008 -2.60059 22.2002 -6.10059 32.6006 -10.5l33.8994 62.1992l-27.3994 -65.0996c10.5996 -4.90039 20.7002 -10.7002 30.2002 -17.2002l45.7998 51.7998l-40.1006 -55.8994c9.5 -7.10059 18.4004 -15 26.5 -23.6006l54.2002 38.9004l-49.7002 -43.9004\nc8 -9.09961 15.2002 -18.8994 21.5 -29.3994l58.7002 24.7002l-55.5 -30.2002c6.10059 -10.9004 11.1006 -22.2998 15.1006 -34.2998l59.2998 10.3994l-57.5 -16.2002c3.7002 -12.1992 6.2002 -24.8994 7.5 -37.8994l56.2998 -2.7002l-56 -2.7998\nc0.299805 -4.60059 0.5 -9.2998 0.5 -14.1006c0 -8.69922 -0.599609 -17.2998 -1.59961 -25.7998l50.6992 -14.2998zM432.3 175.1c0 97.5 -79 176.5 -176.5 176.5s-176.5 -79 -176.5 -176.5s79 -176.5 176.5 -176.5s176.5 79 176.5 176.5zM408.3 175.1\nc0 -84.2998 -68.2998 -152.6 -152.6 -152.6s-152.601 68.2998 -152.601 152.6c0 84.3008 68.3008 152.601 152.601 152.601s152.6 -68.2998 152.6 -152.601zM195 207c0 -2.09961 1.2998 -3.7998 3.59961 -5.09961c3.30078 -1.90039 6.2002 -4.60059 8.2002 -8.2002\nc2.7998 5.7002 4.2998 9.5 4.2998 11.2002c0 2.19922 -1.09961 4.39941 -3.19922 7c-2.10059 2.5 -3.2002 5.19922 -3.30078 7.69922c-6.5 -6.7998 -9.59961 -10.8994 -9.59961 -12.5996zM154.3 226c0 -2.09961 1.2998 -3.7998 3.60059 -5.09961\nc3.5 -1.90039 6.19922 -4.60059 8.19922 -8.2002c2.80078 5.7002 4.30078 9.5 4.30078 11.2002c0 2.19922 -1.10059 4.39941 -3.2002 7c-2.10059 2.5 -3.2002 5.19922 -3.2998 7.69922c-6.5 -6.7998 -9.60059 -10.8994 -9.60059 -12.5996zM135.3 226\nc0 -2.09961 1.2998 -3.7998 3.60059 -5.09961c3.2998 -1.90039 6.19922 -4.60059 8.19922 -8.2002c2.80078 5.7002 4.30078 9.5 4.30078 11.2002c0 2.19922 -1.10059 4.39941 -3.2002 7c-2.10059 2.5 -3.2002 5.19922 -3.2998 7.69922\nc-6.40039 -6.7998 -9.60059 -10.8994 -9.60059 -12.5996zM340.2 138.1c-8.40039 3 -8.7002 6.80078 -8.7002 15.6006v112.3c-8.2002 -12.5 -14.2002 -18.5996 -18 -18.5996c6.2998 -14.4004 9.5 -23.9004 9.5 -28.3008v-64.2998c0 -2.2002 -2.2002 -6.5 -4.7002 -6.5h-18\nc-2.7998 7.5 -10.2002 26.9004 -15.2998 40.2998c-2 -2.5 -7.2002 -9.19922 -10.7002 -13.6992c2.40039 -1.60059 4.10059 -3.60059 5.2002 -6.30078c2.59961 -6.69922 6.40039 -16.5 7.90039 -20.1992h-9.2002c-3.90039 10.3994 -9.60059 25.3994 -11.7998 31.0996\nc-2 -2.5 -7.2002 -9.2002 -10.7002 -13.7002c2.39941 -1.59961 4.09961 -3.59961 5.2002 -6.2998c0.799805 -2 2.7998 -7.2998 4.2998 -10.9004h-9.2002c-1.5 4.10059 -5.59961 14.6006 -8.40039 22c-2 -2.5 -7.19922 -9.19922 -10.6992 -13.6992\nc2.5 -1.60059 4.2998 -3.60059 5.19922 -6.30078c0.200195 -0.599609 0.5 -1.39941 0.600586 -1.69922h-17.7002c-4.59961 13.8994 -11.4004 27.6992 -11.4004 34.0996c0 2.2002 0.300781 5.09961 1.10059 8.2002c-8.7998 -10.7998 -14 -15.9004 -14 -25\nc0 -7.5 10.3994 -28.2998 10.3994 -33.2998c0 -1.7002 -0.5 -3.30078 -1.39941 -4.90039c-9.60059 12.7002 -15.5 20.7002 -18.7998 20.7002h-12l-11.2002 28c-3.7998 9.59961 -5.7002 16 -5.7002 18.7998c0 3.7998 0.5 7.7002 1.7002 12.2002\nc-1 -1.2998 -3.7002 -4.7002 -5.5 -7.10059c-0.799805 2.10059 -3.10059 7.7002 -4.60059 11.5c-2.09961 -2.5 -7.5 -9.09961 -11.1992 -13.5996c0.899414 -2.2998 3.2998 -8.09961 4.89941 -12.2002c-2.5 -3.2998 -9.09961 -11.7998 -13.5996 -17.7002\nc-4 -5.2998 -5.7998 -13.2998 -2.7002 -21.7998c2.5 -6.7002 2 -7.89941 -1.7002 -14.0996h61.7002c5.5 0 14.2998 -14 15.5 -22c13.2002 16 15.4004 19.5996 16.7998 21.5996h107c3.90039 0 7.2002 1.90039 9.90039 5.7998zM360.3 164.7v101.6\nc-9 -12.5 -15.8994 -18.5996 -20.7002 -18.5996c7.10059 -14.4004 10.7002 -23.9004 10.7002 -28.2998v-66.3008c0 -17.5 8.60059 -20.3994 24 -20.3994c8.10059 0 12.5 0.799805 13.7002 2.7002c-4.2998 1.59961 -7.59961 2.5 -9.90039 3.2998\nc-8.09961 3.2002 -17.7998 7.39941 -17.7998 26z\" />\n    <glyph glyph-name=\"vaadin\" unicode=\"&#xf408;\" \nd=\"M224.5 307.3c1.5 17.6006 4.90039 52.7002 49.7998 52.7002h98.6006c20.6992 0 32.0996 7.7998 32.0996 21.5996v12.3008c0 12.1992 9.2998 22.0996 21.5 22.0996s21.5 -9.90039 21.5 -22.0996v-36.5c0 -42.9004 -21.5 -62 -66.7998 -62h-100.5\nc-30.1006 0 -33 -14.7002 -33 -27.1006c0 -1.2998 -0.100586 -2.5 -0.200195 -3.7002c-0.700195 -12.2998 -10.9004 -22.1992 -23.4004 -22.1992s-22.6992 9.7998 -23.3994 22.1992c-0.100586 1.2002 -0.200195 2.40039 -0.200195 3.7002c0 12.2998 -3 27.1006 -33 27.1006\nh-100.7c-45.2998 0 -66.7998 19.0996 -66.7998 62v36.5c0 12.1992 9.40039 22.0996 21.5996 22.0996c12.2002 0 21.5 -9.90039 21.5 -22.0996v-12.3008c0 -13.7998 11.4004 -21.5996 32.1006 -21.5996h98.5996c44.7998 0 48.2998 -35.0996 49.7998 -52.7002h0.900391z\nM224 -8c-11.5 0 -21.4004 7 -25.7002 16.2998c-1.09961 1.7998 -97.0996 169.5 -98.2002 171.4c-11.8994 19.7002 3.2002 44.2998 27.2002 44.2998c13.9004 0 23.4004 -6.40039 29.7998 -20.2998l66.9004 -117.7l66.9004 117.7c6.5 13.8994 15.8994 20.2998 29.7998 20.2998\nc24 0 39.0996 -24.7002 27.2002 -44.2998c-1.10059 -1.7998 -97.1006 -169.601 -98.2002 -171.4c-4.2998 -9.2998 -14.2002 -16.2998 -25.7002 -16.2998z\" />\n    <glyph glyph-name=\"viber\" unicode=\"&#xf409;\" horiz-adv-x=\"512\" \nd=\"M444 398.1c42.2002 -36.6992 65.5996 -117.899 49.7998 -246.5c-15.2002 -124.6 -109.1 -136.6 -125.7 -142c-7.19922 -2.2998 -70.2998 -18.0996 -152.5 -11.1992c-9.09961 -10.5 -21.0996 -24.3008 -29.7998 -33.7002\nc-15.8994 -17.1006 -25.7002 -33 -42.2998 -27.7998c-13.7998 4.19922 -13 25.0996 -13 25.0996l0.0996094 51.5996h-0.0996094c-120.1 33.8008 -118.4 158.4 -117 224.9s14.2998 120.2 50.9004 156.8c65.7998 60.4004 200.899 52.2998 200.899 52.2998\nc114.601 -0.5 166 -37.7998 178.7 -49.5zM457.9 161c13.2998 107.3 -4.90039 180.5 -40.6006 211.1c-10.7998 9.80078 -57.2002 39 -154.1 39.4004c0 0 -114.7 7.5 -170.4 -43c-31 -30.5996 -41.5 -76.0996 -42.5996 -131.6\nc-1.10059 -55.5 -7.10059 -161.601 94.7002 -189.801c-0.100586 0 -0.100586 0 0 0c0 0 -0.400391 -78.7998 -0.400391 -85.6992c-0.0996094 -10.5 5.7002 -11 11 -5.7002c16.2002 16.2998 68.2002 79 68.2002 79c69.7002 -4.5 125.2 9.2998 131.2 11.2002\nc14 4.5 90.0996 11.0996 103 115.1zM318.9 241.8c0.399414 -8.59961 -12.5 -9.2002 -12.9004 -0.599609c-1.09961 22 -11.4004 32.7002 -32.5996 33.8994c-8.60059 0.5 -7.80078 13.4004 0.699219 12.9004c27.9004 -1.5 43.4004 -17.5 44.8008 -46.2002zM339.2 230.5\nc1 42.4004 -25.5 75.5996 -75.7998 79.2998c-8.5 0.600586 -7.60059 13.5 0.899414 12.9004c58 -4.2002 88.9004 -44.1006 87.7998 -92.5c-0.0996094 -8.60059 -13.0996 -8.2002 -12.8994 0.299805zM386.2 217.1c0.0996094 -8.59961 -12.9004 -8.69922 -12.9004 -0.0996094\nc-0.599609 81.5 -54.8994 125.9 -120.8 126.4c-8.5 0.0996094 -8.5 12.8994 0 12.8994c73.7002 -0.5 133 -51.3994 133.7 -139.2zM374.9 119v-0.200195c-10.8008 -19 -31 -40 -51.8008 -33.2998l-0.199219 0.299805c-21.1006 5.90039 -70.8008 31.5 -102.2 56.5\nc-16.2002 12.7998 -31 27.9004 -42.4004 42.4004c-10.2998 12.8994 -20.7002 28.2002 -30.7998 46.5996c-21.2998 38.5 -26 55.7002 -26 55.7002c-6.7002 20.7998 14.2002 41 33.2998 51.7998h0.200195c9.2002 4.7998 18 3.2002 23.9004 -3.89941\nc0 0 12.3994 -14.8008 17.6992 -22.1006c5 -6.7998 11.7002 -17.7002 15.2002 -23.7998c6.10059 -10.9004 2.2998 -22 -3.7002 -26.5996l-12 -9.60059c-6.09961 -4.89941 -5.2998 -14 -5.2998 -14s17.7998 -67.2998 84.2998 -84.2998c0 0 9.10059 -0.799805 14 5.2998\nl9.60059 12c4.59961 6 15.7002 9.7998 26.5996 3.7002c14.7002 -8.2998 33.4004 -21.2002 45.7998 -32.9004c7 -5.69922 8.60059 -14.3994 3.80078 -23.5996z\" />\n    <glyph glyph-name=\"vimeo\" unicode=\"&#xf40a;\" \nd=\"M403.2 416c24.7002 0 44.7998 -20.0996 44.7998 -44.7998v-358.4c0 -24.7002 -20.0996 -44.7998 -44.7998 -44.7998h-358.4c-24.7002 0 -44.7998 20.0996 -44.7998 44.7998v358.4c0 24.7002 20.0996 44.7998 44.7998 44.7998h358.4zM377 267.2\nc1.90039 42.2002 -13.7998 63.7998 -47.0996 64.7002c-44.9004 1.39941 -75.3008 -23.9004 -91.2002 -76c19.8994 8.5 49.2998 10.7998 45.7998 -22.4004c-1 -11.2002 -8.2998 -27.5 -21.7998 -48.9004c-37.7002 -59.3994 -46.9004 -39.5996 -67.6006 91.6006\nc-5.7998 36.8994 -21.2998 54.0996 -46.5 51.7002c-22.2998 -2 -57.8994 -38.4004 -95.1992 -71.2002l15.1992 -19.6006c14.5 10.1006 23 15.2002 25.4004 15.2002c21 0 31.9004 -54.7002 57.4004 -148c13.0996 -34.8994 29 -52.2998 47.8994 -52.2998\nc30.4004 0 67.7002 28.5996 111.7 85.7998c42.5996 54.7002 64.5996 97.9004 66 129.4z\" />\n    <glyph glyph-name=\"vnv\" unicode=\"&#xf40b;\" horiz-adv-x=\"640\" \nd=\"M104.9 96c-34.1006 0 -46.4004 30.4004 -46.4004 30.4004l-55.9004 111.5s-10.3994 18.0996 10.4004 18.0996h32.7998c10.4004 0 13.2002 -8.7002 18.7998 -18.0996l36.7002 -74.5s5.2002 -13.1006 21.1006 -13.1006c15.8994 0 21.0996 13.1006 21.0996 13.1006\nl36.7002 74.5c5.59961 9.5 8.39941 18.0996 18.7998 18.0996h32.7998c20.7998 0 10.4004 -18.0996 10.4004 -18.0996l-55.7998 -111.5s-12.2002 -30.4004 -46.4004 -30.4004h-35.0996zM499.9 96c-34.1006 0 -46.4004 30.4004 -46.4004 30.4004l-55.9004 111.5\ns-10.3994 18.0996 10.4004 18.0996h32.7998c10.4004 0 13.2002 -8.7002 18.7998 -18.0996l36.7002 -74.5s5.2002 -13.1006 21.1006 -13.1006c15.8994 0 21.0996 13.1006 21.0996 13.1006l36.7998 74.5c5.60059 9.5 8.40039 18.0996 18.7998 18.0996h32.9004\nc20.7998 0 10.4004 -18.0996 10.4004 -18.0996l-55.9004 -111.5s-12.2002 -30.4004 -46.4004 -30.4004h-35.1992zM337.6 256c34.1006 0 46.4004 -30.4004 46.4004 -30.4004l55.9004 -111.5s10.3994 -18.0996 -10.4004 -18.0996h-32.7998\nc-10.4004 0 -13.2002 8.7002 -18.7998 18.0996l-36.7002 74.5s-5.2002 13.1006 -21.1006 13.1006c-15.8994 0 -21.0996 -13.1006 -21.0996 -13.1006l-36.7002 -74.5c-5.59961 -9.39941 -8.39941 -18.0996 -18.7998 -18.0996h-32.9004\nc-20.7998 0 -10.3994 18.0996 -10.3994 18.0996l55.8994 111.5s12.2002 30.4004 46.4004 30.4004h35.0996z\" />\n    <glyph glyph-name=\"whatsapp-square\" unicode=\"&#xf40c;\" \nd=\"M224 325.2c35.2002 0 68.2002 -13.7002 93.2002 -38.7002c24.8994 -24.9004 40.0996 -58 40.0996 -93.2002c0 -72.7002 -60.7002 -131.8 -133.3 -131.8h-0.0996094c-23.7002 0 -46.9004 6.40039 -67.1006 18.4004l-4.7998 2.89941l-49.9004 -13.0996l13.3008 48.5996\nl-3.10059 5c-13.2002 20.9004 -20.2002 45.2002 -20.2002 70.1006c0.100586 72.6992 59.2002 131.8 131.9 131.8zM301.5 136.8c3.2998 9.2002 3.2998 17.2002 2.40039 19.1006c-1 1.59961 -3.60059 2.59961 -7.60059 4.59961s-23.5 11.5996 -27.0996 12.9004\nc-3.60059 1.2998 -6.2998 2 -8.90039 -2c-2.59961 -3.90039 -10.2002 -12.9004 -12.5 -15.5c-2.2998 -2.7002 -4.59961 -3 -8.59961 -1c-23.2998 11.6992 -38.6006 20.7998 -53.9004 47.0996c-4.09961 7 4 6.40039 11.6006 21.5996\nc1.39941 2.60059 0.699219 4.90039 -0.300781 6.90039s-8.89941 21.5 -12.1992 29.4004c-3.2002 7.69922 -6.5 6.69922 -8.90039 6.7998c-2.2998 0.0996094 -5 0.0996094 -7.59961 0.0996094c-2.7002 0 -7 -1 -10.6006 -5c-3.7002 -4 -13.8994 -13.5996 -13.8994 -33.0996\ns14.1992 -38.4004 16.1992 -41c2 -2.60059 28 -42.6006 67.7002 -59.7998c25.1006 -10.8008 34.9004 -11.8008 47.5 -9.90039c7.60059 1.09961 23.4004 9.5 26.7002 18.7998zM400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48\nv352c0 26.5 21.5 48 48 48h352zM223.9 34.7998c87.3994 0 160.1 71.1006 160.1 158.5c0 42.4004 -18 82.2002 -47.9004 112.2c-30 30 -69.7998 46.5 -112.199 46.5c-87.4004 0 -158.5 -71.0996 -158.601 -158.5c0 -28 7.2998 -55.2998 21.2002 -79.2998l-22.5 -82.2002\nl84.0996 22.0996c23.1006 -12.5996 49.2002 -19.2998 75.8008 -19.2998z\" />\n    <glyph glyph-name=\"whmcs\" unicode=\"&#xf40d;\" \nd=\"M448 287l-29.0996 -7l-2.2002 -12.0996l20.8994 -18.8008l-10.2998 -20.0996l-28.7998 8.7998l-7.7998 -8.09961l8.7998 -28l-20.4004 -12.1006l-20.6992 21.6006l-11.6006 -3.5l-6.7002 -28.7998l-22.5996 0.299805l-6.7002 28.5l-11.5996 2.89941l-19.4004 -20.3994\nl-19.8994 11.5996l8.09961 26.9004l-7.2002 8.59961l-29.5996 -7.5l-10.4004 18.5l20.1006 19.9004l-2.40039 12.0996l-28.7998 7.5l0.299805 21.7002l28.5 7.7998l2.90039 10.4004l-20.7002 21l11 19.0996l28.5 -7.5l8.09961 8.40039l-8.09961 27.7002l19.3994 11\nl19.7002 -21l12.1006 3.19922l6.19922 26.4004h22.6006l7 -26.4004l10.7002 -3.19922l21.2998 21l19.0996 -11.6006l-7.5 -28.2002l7.2002 -7.5l29 7.5l10.4004 -19.3994l-20.1006 -20.7002l2.2002 -10.4004l28.5 -8.7998v-21.2998zM328.8 241.8\nc31.4004 0 56.7998 25.2998 56.7998 56.7998c0 31.4004 -25.3994 56.8008 -56.7998 56.8008c-31.3994 0 -56.7998 -25.4004 -56.7998 -56.8008c0 -31.3994 25.5 -56.7998 56.7998 -56.7998zM401.1 225.4l46.9004 -14.5v-39.9004l-55.0996 -13.4004l-4.10059 -22.6992\nl38.9004 -35.3008l-19.2002 -37.8994l-54 16.7002l-14.5996 -15.2002l16.6992 -52.5l-38.2998 -22.7002l-38.8994 40.5l-21.7002 -6.59961l-12.6006 -54l-42.3994 0.5l-12.6006 53.5996l-21.6992 5.59961l-36.4004 -38.3994l-37.4004 21.7002l15.2002 50.5l-13.7002 16.0996\nl-55.5 -14.0996l-19.6992 34.7998l37.8994 37.3994l-4.7998 22.8008l-54 14.0996l0.5 40.9004l53.5 14.6992l5.7002 19.7002l-38.9004 39.4004l20.7002 35.7998l53.5996 -14.0996l15.2002 15.6992l-15.2002 52l36.4004 20.7002l36.7998 -39.3994l22.7002 6.09961l11.5996 52\nh42.4004l11.5996 -45.9004l-22.5996 5.90039l-6.2998 1.7002l-3.2998 -5.7002l-11 -19.0996l-3.30078 -5.60059l4.60059 -4.59961l17.2002 -17.4004l-0.300781 -1l-23.7998 -6.5l-6.2002 -1.7002l-0.0996094 -6.39941l-0.200195 -12.9004\nc-47.5 -10.3994 -83.2998 -52.7998 -83.2998 -103.5c0 -58.2998 47.2998 -105.7 105.7 -105.7c50.5 0 92.7002 35.4004 103.2 82.8008l13.1992 -0.200195l6.90039 -0.100586l1.59961 6.7002l5.60059 24l1.89941 0.600586l17.1006 -17.8008l4.7002 -4.89941l5.7998 3.39941\nl20.3994 12.1006l5.80078 3.5l-2 6.5z\" />\n    <glyph glyph-name=\"wordpress-simple\" unicode=\"&#xf411;\" horiz-adv-x=\"512\" \nd=\"M256 440c136.7 0 248 -111.2 248 -248c0 -136.7 -111.3 -248 -248 -248s-248 111.3 -248 248c0 136.8 111.3 248 248 248zM33 192c0 -88.2002 51.2998 -164.5 125.7 -200.7l-106.4 291.4c-12.3994 -27.7002 -19.2998 -58.4004 -19.2998 -90.7002zM256 -31\nc26 0 50.9004 4.5 74 12.5996c-0.599609 1 -1.09961 2 -1.59961 3.10059l-68.5 187.8l-66.9004 -194.4c20 -5.89941 41.0996 -9.09961 63 -9.09961zM286.7 296.5l80.7002 -239.6l22.1992 74.2998c9.7002 30.8994 17 53 17 72.0996c0 27.6006 -9.89941 46.7002 -18.3994 61.5\nc-11.2998 18.4004 -21.9004 33.9004 -21.9004 52.2998c0 20.5 15.5 39.6006 37.4004 39.6006c1 0 1.89941 -0.100586 2.89941 -0.200195c-39.6992 36.2998 -92.5996 58.5 -150.6 58.5c-77.9004 0 -146.4 -40 -186.3 -100.5\nc5.2998 -0.200195 10.2002 -0.299805 14.3994 -0.299805c23.3008 0 59.4004 2.7998 59.4004 2.7998c12 0.700195 13.4004 -17 1.40039 -18.4004c0 0 -12.1006 -1.39941 -25.5 -2.09961l81.1992 -241.5l48.8008 146.3l-34.7002 95.2002\nc-12 0.700195 -23.4004 2.09961 -23.4004 2.09961c-12 0.700195 -10.5996 19.1006 1.40039 18.4004c0 0 36.7998 -2.7998 58.7002 -2.7998c23.2998 0 59.3994 2.7998 59.3994 2.7998c12 0.700195 13.4004 -17 1.40039 -18.4004c0 0 -12.1006 -1.39941 -25.5 -2.09961z\nM368.1 -0.700195c66.3008 38.6006 110.9 110.4 110.9 192.7c0 38.7998 -9.90039 75.2002 -27.2998 107c1 -7.09961 1.5 -14.7002 1.5 -22.9004c0 -22.6992 -4.2998 -48.0996 -17 -79.8994z\" />\n    <glyph glyph-name=\"xbox\" unicode=\"&#xf412;\" horiz-adv-x=\"512\" \nd=\"M369.9 129.8c44.2998 -54.2998 64.6992 -98.7998 54.3994 -118.7c-7.89941 -15.0996 -56.7002 -44.5996 -92.5996 -55.8994c-29.6006 -9.2998 -68.4004 -13.2998 -100.4 -10.2002c-38.2002 3.7002 -76.8994 17.4004 -110.1 39\nc-27.9004 18.2002 -34.2002 25.7002 -34.2002 40.5996c0 29.9004 32.9004 82.3008 89.2002 142.101c32 33.8994 76.5 73.7002 81.3994 72.5996c9.40039 -2.09961 84.3008 -75.0996 112.301 -109.5zM188.6 304.2c-66.3994 -81.5 -106 -155.4 -120.3 -194.4\nc-9.7998 -26.5 -13.7002 -53 -9.5 -64c2.7998 -7.39941 0.200195 -4.7002 -9.2998 9.90039c-23.2002 35.5 -34.9004 70.3994 -40.5 120.899c-1.90039 16.7002 -1.2002 26.3008 4.2002 60.5c6.7998 42.7002 31.0996 92 60.2998 122.4\nc12.4004 12.9004 13.5 13.2002 28.7002 8.09961c28.2998 -9.5 56.7002 -36.5 86.3994 -63.3994zM500.2 240.7c4.7002 -22.6006 5.09961 -70.9004 0.799805 -93.4004c-3.59961 -18.5 -11.2002 -42.5 -18.5996 -58.7002c-5.5 -12.1992 -19.3008 -35.7998 -25.4004 -43.5\nc-3.09961 -3.89941 -3.09961 -3.89941 -1.40039 4.60059c2.30078 11.2002 -0.599609 31.5996 -7.39941 52.2998c-20.7002 62.9004 -80.5 149 -122.9 202.3c23.2998 21.4004 41 38.2998 64.2998 52.7998c11.8008 7.40039 28.7002 13.9004 36 13.9004\nc7.10059 0 57.7002 -50.2998 74.6006 -130.3zM141.3 405c-14.5996 -0.700195 -14 0.0996094 9.40039 11.2002c81.2002 38.2998 170 27.5996 233.899 -11.7002c-13.3994 0.599609 -43.5 5.90039 -107.399 -25.2002c-11.2002 -5.5 -20.9004 -9.7998 -21.6006 -9.7002\nc-4.59961 0.900391 -66.5996 37.9004 -114.3 35.4004z\" />\n    <glyph glyph-name=\"yandex\" unicode=\"&#xf413;\" horiz-adv-x=\"256\" \nd=\"M153.1 132.2l-87.3994 -196.2h-63.7002l96 209.8c-45.0996 22.9004 -75.2002 64.4004 -75.2002 141.101c-0.0996094 107.399 68 161.1 148.9 161.1h82.2998v-512h-55.0996v196.2h-45.8008zM198.9 401.5h-29.4004c-44.4004 0 -87.4004 -29.4004 -87.4004 -114.6\nc0 -82.3008 39.4004 -108.801 87.4004 -108.801h29.4004v223.4z\" />\n    <glyph glyph-name=\"yandex-international\" unicode=\"&#xf414;\" horiz-adv-x=\"320\" \nd=\"M129.5 -64v166.1l-111 297.9h55.7998l81.7998 -229.7l94.1006 277.7h51.2998l-120.7 -347.8v-164.2h-51.2998z\" />\n    <glyph glyph-name=\"apple-pay\" unicode=\"&#xf415;\" horiz-adv-x=\"640\" \nd=\"M116.9 289.5c-7.5 -8.90039 -19.5 -15.9004 -31.5 -14.9004c-1.5 12 4.39941 24.8008 11.2998 32.6006c7.5 9.09961 20.5996 15.5996 31.2998 16.0996c1.2002 -12.3994 -3.7002 -24.7002 -11.0996 -33.7998zM127.8 272.3c6.7998 -0.5 26.2998 -2.5 38.7998 -21.0996\nc-1 -0.799805 -23.1992 -13.5 -22.8994 -40.2998c0.299805 -32 28 -42.6006 28.2998 -42.9004c-0.200195 -0.799805 -4.40039 -15.0996 -14.5 -29.9004c-8.90039 -13 -18 -25.6992 -32.5 -26c-14 -0.199219 -18.7002 8.40039 -34.7998 8.40039\nc-16 0 -21.2002 -8.09961 -34.5 -8.59961c-14 -0.5 -24.6006 13.7998 -33.5 26.7998c-18.2002 26.2998 -32.1006 74 -13.2998 106.3c9.09961 16.0996 25.6992 26.2002 43.5996 26.5c13.7998 0.299805 26.4004 -9.09961 34.7998 -9.09961\nc8.2002 0 23.1006 10.8994 40.5 9.89941zM228.2 308.5h73.2002c37.6992 0 64.0996 -26 64.0996 -64s-26.7998 -64.2998 -65.0996 -64.2998h-41.9004v-66.6006h-30.2998v194.9zM258.5 283v-77.4004h34.7998c26.4004 0 41.4004 14.2002 41.4004 38.8008\nc0 24.5996 -15 38.5996 -41.2998 38.5996h-34.9004zM420.7 112.1c-28.1006 0 -47.7002 16.8008 -47.7998 42c0 25 19 39.4004 54.0996 41.5l37.7998 2.30078v10.7998c0 15.8994 -10.3994 24.5 -28.8994 24.5c-15.2002 0 -26.3008 -7.90039 -28.6006 -19.9004h-27.2998\nc0.900391 25.2002 24.7002 43.6006 56.7998 43.6006c34.6006 0 57.1006 -18.2002 57.1006 -46.3008v-97h-28v23.4004h-0.600586c-8 -15.2998 -25.5996 -24.9004 -44.5996 -24.9004zM428.9 135.2c20.5 0 36 13 36 31.2002v11l-33.6006 -2.10059\nc-18.8994 -1.09961 -28.7998 -8.2002 -28.7998 -20.5c0 -11.7998 10.2998 -19.5996 26.4004 -19.5996zM531.4 60.5996c-2.30078 0 -9.80078 0.300781 -11.6006 0.700195v23.4004c1.90039 -0.200195 6.5 -0.5 8.90039 -0.5c13.3994 0 20.8994 5.7002 25.5 20.2998\nl2.7998 8.59961l-51.2002 141.9h31.6006l35.5996 -115.1h0.599609l35.6006 115.1h30.7998l-53.0996 -149c-12.1006 -34.0996 -26 -45.4004 -55.5 -45.4004z\" />\n    <glyph glyph-name=\"cc-apple-pay\" unicode=\"&#xf416;\" horiz-adv-x=\"576\" \nd=\"M302.2 229.6c0 -17.1992 -10.5 -27.0996 -29 -27.0996h-24.2998v54.2002h24.3994c18.4004 0 28.9004 -9.7998 28.9004 -27.1006zM349.7 167c0 8.59961 6.89941 13.5 20.2002 14.4004l23.5 1.5v-7.7002c0 -12.7998 -10.8008 -21.9004 -25.2002 -21.9004\nc-11.2998 0 -18.5 5.40039 -18.5 13.7002zM576 369v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h480c26.5 0 48 -21.5 48 -48zM127.8 250.8c8.40039 -0.700195 16.7998 4.2002 22.1006 10.4004\nc5.19922 6.39941 8.59961 15 7.69922 23.7002c-7.39941 -0.300781 -16.5996 -4.90039 -21.8994 -11.3008c-4.7998 -5.5 -8.90039 -14.3994 -7.90039 -22.7998zM188.4 176.3c-0.200195 0.200195 -19.6006 7.60059 -19.8008 30c-0.199219 18.7002 15.3008 27.7002 16 28.2002\nc-8.7998 13 -22.3994 14.4004 -27.0996 14.7002c-12.2002 0.700195 -22.5996 -6.90039 -28.4004 -6.90039c-5.89941 0 -14.6992 6.60059 -24.2998 6.40039c-12.5 -0.200195 -24.2002 -7.2998 -30.5 -18.6006c-13.0996 -22.5996 -3.39941 -56 9.2998 -74.3994\nc6.2002 -9.10059 13.7002 -19.1006 23.5 -18.7002c9.30078 0.400391 13 6 24.2002 6c11.2998 0 14.5 -6 24.2998 -5.90039c10.2002 0.200195 16.5 9.10059 22.8008 18.2002c6.89941 10.4004 9.7998 20.4004 10 21zM323.8 229.7c0 26.5996 -18.5 44.7998 -44.8994 44.7998\nh-51.2002v-136.4h21.2002v46.6006h29.2998c26.7998 0 45.5996 18.3994 45.5996 45zM413.8 206c0 19.7002 -15.7998 32.4004 -40 32.4004c-22.5 0 -39.0996 -12.9004 -39.7002 -30.5h19.1006c1.59961 8.39941 9.39941 13.8994 20 13.8994c13 0 20.2002 -6 20.2002 -17.2002\nv-7.5l-26.4004 -1.59961c-24.5996 -1.5 -37.9004 -11.5996 -37.9004 -29.0996c0 -17.7002 13.7002 -29.4004 33.4004 -29.4004c13.2998 0 25.5996 6.7002 31.2002 17.4004h0.399414v-16.4004h19.6006v68h0.0996094zM516 237.1h-21.5l-24.9004 -80.5996h-0.399414\nl-24.9004 80.5996h-22.2998l35.9004 -99.2998l-1.90039 -6c-3.2002 -10.2002 -8.5 -14.2002 -17.9004 -14.2002c-1.69922 0 -4.89941 0.200195 -6.19922 0.300781v-16.4004c1.19922 -0.400391 6.5 -0.5 8.09961 -0.5c20.7002 0 30.4004 7.90039 38.9004 31.7998z\" />\n    <glyph glyph-name=\"fly\" unicode=\"&#xf417;\" horiz-adv-x=\"384\" \nd=\"M197.8 20.2002c12.9004 -11.7002 33.7002 -33.2998 33.2002 -50.7002c0 -0.799805 -0.0996094 -1.59961 -0.0996094 -2.5c-1.80078 -19.7998 -18.8008 -31.0996 -39.1006 -31c-25 0.0996094 -39.8994 16.7998 -38.7002 35.7998c1 16.2002 20.5 36.7002 32.4004 47.6006\nc2.2998 2.09961 2.7002 2.69922 5.59961 3.59961c3.40039 0 3.90039 -0.299805 6.7002 -2.7998zM331.9 380.7c23.8994 -40 27.7998 -73.2998 20.7998 -112.5c-15.2002 -69.9004 -103.601 -166.5 -155.9 -215.7c-1.7002 -1.59961 -1.39941 -1.40039 -3.5 -2.09961\nl-3.2998 0.0996094c-1.7002 0.599609 -4.5 3.5 -6.2002 5.09961c-58.7998 57.8008 -148.7 151.601 -155.8 233.801c-1.5 71.3994 29.2998 113.399 82.9004 141.3c9.89941 4.09961 37 17.2998 81.0996 17.2998c22 0.200195 51.0996 -4.5 76.5996 -15.2002\nc24.7002 -11.5 47 -26.3994 63.3008 -52.0996zM186.8 96.0996v325.7c-57.8994 -5.5 -72.7002 -89.2002 -69.2998 -136.7c4.09961 -58.2998 41.2998 -137.899 69.2998 -189zM328.7 268c15.7998 54.9004 -10.9004 134.7 -99.7002 153\nc38.2002 -25.5996 49.5996 -85.5 48 -131.4c-2 -58.5996 -39.4004 -140 -67.2002 -191.899c41.6006 42.2998 102.5 113.5 118.9 170.3z\" />\n    <glyph glyph-name=\"node\" unicode=\"&#xf419;\" horiz-adv-x=\"640\" \nd=\"M316.3 -4c-2.09961 0 -4.2002 0.599609 -6.09961 1.59961l-19.2002 11.4004c-2.90039 1.59961 -1.5 2.2002 -0.5 2.5c3.7998 1.2998 4.59961 1.59961 8.7002 4c0.399414 0.200195 1 0.0996094 1.39941 -0.0996094l14.8008 -8.80078\nc0.5 -0.299805 1.2998 -0.299805 1.7998 0l57.7998 33.4004c0.5 0.299805 0.900391 0.900391 0.900391 1.59961v66.7002c0 0.700195 -0.300781 1.2998 -0.900391 1.60059l-57.7998 33.2998c-0.5 0.299805 -1.2002 0.299805 -1.7998 0l-57.8008 -33.2998\nc-0.599609 -0.300781 -0.899414 -1 -0.899414 -1.60059v-66.7002c0 -0.599609 0.399414 -1.19922 0.899414 -1.5l15.8008 -9.09961c8.59961 -4.2998 13.8994 0.799805 13.8994 5.7998v65.9004c0 0.899414 0.700195 1.7002 1.7002 1.7002h7.2998\nc0.900391 0 1.7002 -0.700195 1.7002 -1.7002v-65.9004c0 -11.5 -6.2002 -18 -17.0996 -18c-3.30078 0 -6 0 -13.3008 3.60059l-15.1992 8.69922c-3.7002 2.2002 -6.10059 6.2002 -6.10059 10.5v66.7002c0 4.2998 2.2998 8.40039 6.10059 10.5l57.7998 33.4004\nc3.7002 2.09961 8.5 2.09961 12.0996 0l57.7998 -33.4004c3.7002 -2.2002 6.10059 -6.2002 6.10059 -10.5v-66.7002c0 -4.2998 -2.2998 -8.39941 -6.10059 -10.5l-57.7998 -33.3994c-1.7002 -1.10059 -3.7998 -1.7002 -6 -1.7002zM363 61.7998\nc0 -12.5996 -10.5 -19.7998 -29 -19.7998c-25.2998 0 -30.5996 11.5996 -30.5996 21.2998c0 1 0.799805 1.7002 1.69922 1.7002h7.5c0.900391 0 1.60059 -0.599609 1.7002 -1.40039c1.10059 -7.59961 4.5 -11.3994 19.7998 -11.3994\nc12.2002 0 17.4004 2.7002 17.4004 9.2002c0 3.69922 -1.5 6.39941 -20.4004 8.2998c-15.7998 1.59961 -25.5996 5 -25.5996 17.7002c0 11.5996 9.7998 18.5996 26.2998 18.5996c18.5 0 27.6006 -6.40039 28.7998 -20.2002\nc0.100586 -0.5 -0.0996094 -0.899414 -0.399414 -1.2998c-0.299805 -0.299805 -0.700195 -0.5 -1.2002 -0.5h-7.5c-0.799805 0 -1.40039 0.5 -1.59961 1.2998c-1.80078 8 -6.2002 10.6006 -18.1006 10.6006c-13.2998 0 -14.7998 -4.60059 -14.7998 -8.10059\nc0 -4.2002 1.7998 -5.39941 19.7998 -7.7998c17.7998 -2.40039 26.2002 -5.7002 26.2002 -18.2002zM417.5 111.9c0 -6.10059 -5 -11.1006 -11.0996 -11.1006c-6.10059 0 -11.1006 5 -11.1006 11.1006c0 6.2998 5.2002 11.0996 11.1006 11.0996\nc6 0.0996094 11.0996 -4.7998 11.0996 -11.0996zM415.7 111.9c0 5.19922 -4.2002 9.2998 -9.40039 9.2998c-5.09961 0 -9.2998 -4.10059 -9.2998 -9.2998c0 -5.2002 4.2002 -9.40039 9.2998 -9.40039c5.2002 0.0996094 9.40039 4.2998 9.40039 9.40039zM411.2 105.7\nh-2.60059c-0.0996094 0.599609 -0.5 3.7998 -0.5 3.89941c-0.199219 0.700195 -0.399414 1.10059 -1.2998 1.10059h-2.2002v-5h-2.39941v12.5h4.2998c1.5 0 4.40039 0 4.40039 -3.2998c0 -2.30078 -1.5 -2.80078 -2.40039 -3.10059\nc1.7002 -0.0996094 1.7998 -1.2002 2.09961 -2.7998c0.100586 -1 0.300781 -2.7002 0.600586 -3.2998zM408.4 114.5c0 1.7002 -1.2002 1.7002 -1.80078 1.7002h-2v-3.5h1.90039c1.59961 0 1.90039 1.09961 1.90039 1.7998zM137.3 257l-0.200195 -95\nc0 -1.2998 -0.699219 -2.59961 -1.7998 -3.2002c-1.09961 -0.700195 -2.59961 -0.700195 -3.7002 0l-36.3994 20.9004c-2.2998 1.2998 -3.7002 3.7998 -3.7002 6.39941v44.4004c0 2.59961 -1.40039 5.09961 -3.7002 6.40039l-15.5 8.89941\nc-1.09961 0.700195 -2.39941 1 -3.7002 1c-1.2998 0 -2.5 -0.299805 -3.69922 -1l-15.5 -8.89941c-2.30078 -1.30078 -3.7002 -3.80078 -3.7002 -6.40039v-44.4004c0 -2.59961 -1.40039 -5 -3.7002 -6.39941l-36.4004 -20.9004\nc-1.19922 -0.700195 -2.59961 -0.700195 -3.69922 0c-1.10059 0.700195 -1.80078 1.90039 -1.80078 3.2002l-0.0996094 95c0 2.59961 1.40039 5.09961 3.7002 6.40039l61.2002 35.2998c1.09961 0.599609 2.19922 1 3.39941 1h0.600586\nc1.19922 -0.100586 2.39941 -0.400391 3.39941 -1l61.2998 -35.2998c2.30078 -1.30078 3.7002 -3.7002 3.7002 -6.40039zM472.5 360.7v-176.4c0 -2.59961 -1.40039 -5.09961 -3.7002 -6.39941l-61.2998 -35.4004c-2.2998 -1.2998 -5.09961 -1.2998 -7.40039 0\nl-61.2998 35.4004c-2.2998 1.2998 -3.7002 3.7998 -3.7002 6.39941v70.7998c0 2.60059 1.40039 5.10059 3.7002 6.40039l61.2998 35.4004c2.30078 1.2998 5.10059 1.2998 7.40039 0l15.2998 -8.80078c1.7002 -1 3.90039 0.300781 3.90039 2.2002v94\nc0 2.7998 3 4.60059 5.5 3.2002l36.5 -20.4004c2.2998 -1.19922 3.7998 -3.69922 3.7998 -6.39941zM426.5 231.8c0 0.700195 -0.400391 1.2998 -0.900391 1.60059l-21 12.1992c-0.599609 0.300781 -1.2998 0.300781 -1.89941 0l-21 -12.1992\nc-0.600586 -0.300781 -0.900391 -0.900391 -0.900391 -1.60059v-24.2998c0 -0.700195 0.400391 -1.2998 0.900391 -1.59961l21 -12.1006c0.599609 -0.299805 1.2998 -0.299805 1.7998 0l21 12.1006c0.599609 0.299805 0.900391 0.899414 0.900391 1.59961v24.2998h0.0996094\nzM636.3 232.5l-36.7002 -21.2998c-2.5 -1.40039 -5.59961 0.399414 -5.59961 3.2002v17.3994c0 1.2998 -0.799805 2.5 -1.90039 3.2002l-19.1992 11.0996c-1.10059 0.700195 -2.60059 0.700195 -3.7002 0l-19.2002 -11.0996\nc-1.2002 -0.700195 -1.90039 -1.90039 -1.90039 -3.2002v-22.2002c0 -1.2998 0.700195 -2.5 1.90039 -3.19922l61.7002 -35.4004c2.5 -1.40039 2.5 -5 0 -6.40039l-36.7998 -20.5c-2.30078 -1.2998 -5.10059 -1.2998 -7.30078 0l-60.8994 34.7002\nc-2.2998 1.2998 -3.7002 3.7002 -3.7002 6.40039v70.7998c0 2.59961 1.40039 5.09961 3.7002 6.40039l61.2998 35.3994c2.2998 1.2998 5.09961 1.2998 7.40039 0l60.8994 -35.3994c2.2998 -1.30078 3.7002 -3.80078 3.7002 -6.40039v-17.0996\nc0 -2.60059 -1.40039 -5.10059 -3.7002 -6.40039zM559 229l11.7998 6.7998c0.400391 0.299805 1 0.299805 1.40039 0l11.7998 -6.7998c0.400391 -0.200195 0.700195 -0.700195 0.700195 -1.2002v-13.5996c0 -0.5 -0.299805 -0.900391 -0.700195 -1.2002l-11.7998 -6.7998\nc-0.400391 -0.299805 -1 -0.299805 -1.40039 0l-11.7998 6.7998c-0.400391 0.200195 -0.700195 0.700195 -0.700195 1.2002v13.5996c0 0.5 0.299805 0.900391 0.700195 1.2002zM304.8 185.5c0 -0.599609 -0.0996094 -1.2002 -0.200195 -1.7002\nc-0.5 -2 -1.7998 -3.7002 -3.59961 -4.7002l-61 -35.1992c-2.2002 -1.30078 -5 -1.40039 -7.40039 0l-61.1992 35.1992c-2.10059 1.2002 -4 3.60059 -4 6.40039v70.4004c0 2.69922 1.59961 5.09961 3.89941 6.39941l61.1006 35.2002\nc2.39941 1.40039 5.2998 1.2002 7.39941 0l61.1006 -35.2002c2.2998 -1.2998 3.89941 -3.7998 3.89941 -6.39941v-70.4004zM230.5 310.4l-0.799805 -0.5h1.09961zM306.7 180.2l-0.400391 0.700195v-0.900391z\" />\n    <glyph glyph-name=\"osi\" unicode=\"&#xf41a;\" horiz-adv-x=\"512\" \nd=\"M8 181.56c2.2998 135.801 97.3994 232.441 213.799 248.102c138.8 18.5996 255.601 -75.7998 278 -201.101c21.2998 -118.8 -44 -230 -151.6 -274c-9.2998 -3.7998 -14.4004 -1.69922 -18 7.7002c-17.7998 46.2998 -35.5996 92.6328 -53.3994 138.999\nc-3.09961 8.10059 -1 13.2002 7 16.7998c24.2002 11 39.2998 29.4004 43.2998 55.8008c0.469727 3.01562 0.850586 7.94043 0.850586 10.9922c0 36.2061 -29.2764 68.1074 -65.3506 71.207c-39 3.40039 -71.7998 -23.6992 -77.5 -59.6992\nc-5.19922 -33 11.1006 -63.7002 41.9004 -77.7002c9.59961 -4.40039 11.5 -8.60059 7.7998 -18.4004c-17.8994 -46.5996 -35.7998 -93.2324 -53.7002 -139.899c-2.59961 -6.90039 -8.2998 -9.30078 -15.5 -6.5c-52.5996 20.2998 -101.399 61 -130.8 119\nc-24.8994 49.1992 -25.2002 87.6992 -26.7998 108.699zM28.8994 183.461c0.399414 -6.59961 0.599609 -14.3008 1.2998 -22.1006c6.2998 -71.9004 49.5996 -143.5 131 -183.101c3.2002 -1.5 4.39941 -0.799805 5.59961 2.2998c14.9004 39.1006 29.9004 78.2012 45 117.302\nc1.2998 3.2998 0.600586 4.7998 -2.39941 6.69922c-31.6006 19.9004 -47.3008 48.5 -45.6006 86c1 21.6006 9.2998 40.5 23.7998 56.3008c30 32.6992 77 39.7998 115.5 17.5996c25.3174 -14.5977 45.8643 -50.1641 45.8643 -79.3877\nc0 -3.05078 -0.296875 -7.98438 -0.664062 -11.0127c-3.59961 -30.5996 -19.2998 -53.8994 -45.7002 -69.7998c-2.69922 -1.59961 -3.5 -2.89941 -2.2998 -6c15.2002 -39.2002 30.2666 -78.4336 45.2002 -117.7c1.2002 -3.09961 2.40039 -3.7998 5.59961 -2.2998\nc35.5 16.6006 65.2002 40.2998 88.1006 72c34.7998 48.2002 49.0996 101.9 42.2998 161c-13.7002 117.5 -119.4 214.8 -255.5 198c-106.1 -13 -195.3 -102.5 -197.1 -225.8z\" />\n    <glyph glyph-name=\"react\" unicode=\"&#xf41b;\" horiz-adv-x=\"512\" \nd=\"M418.2 270.8c54.3994 -18.7002 93.7998 -48.0996 93.7998 -78.3994c0 -31.7002 -41.7998 -62.6006 -99.5 -81.7002c-3.09961 -1 -6.2002 -2 -9.40039 -2.90039c1.10059 -4.59961 2.10059 -9.09961 3 -13.5c11.4004 -57.5996 2.60059 -104.899 -24.3994 -120.5\nc-26.1006 -15.0996 -68.4004 -0.200195 -111.2 36.6006c-4.59961 4 -9.2002 8.09961 -13.5996 12.3994c-3.5 -3.39941 -7 -6.59961 -10.5 -9.7002c-44.2002 -38.6992 -89.6006 -54.6992 -116.601 -39.0996c-26.2002 15.0996 -34.3994 59.0996 -23.8994 114.6\nc1.19922 6.10059 2.5 12 4 18c-4.60059 1.30078 -9.10059 2.80078 -13.6006 4.30078c-55.5 19 -96.2998 50.2998 -96.2998 81.5c0 30.1992 38.2998 59.3994 91.7002 77.8994c5.89941 2.10059 12.2002 4.10059 18.5996 5.90039\nc-1.39941 5.59961 -2.59961 11.0996 -3.7002 16.7002c-11 56.3994 -3.19922 101.5 23 116.699c27.3008 15.9004 72.9004 -1.09961 118.4 -41.5c2.7998 -2.5 5.59961 -5.09961 8.2998 -7.69922c4 3.89941 8.2002 7.7998 12.5 11.5\nc43.4004 37.7998 86.2998 53.5 112.601 38.3994c27.2998 -15.7998 35.3994 -63.7002 23.0996 -123.3c-0.799805 -3.7002 -1.59961 -7.40039 -2.5 -11.0996c5.40039 -1.60059 10.7998 -3.30078 16.2002 -5.10059zM282.9 355.7c-4 -3.5 -7.80078 -7 -11.7002 -10.7002\nc15.3994 -16.7002 29.5996 -34.5 42.5996 -53.0996c22.6006 -2 45.1006 -5.60059 67.2998 -10.6006c0.900391 3.2998 1.60059 6.60059 2.30078 10c10.5996 51.5 4.09961 90.7002 -12.8008 100.4c-15.7998 9.09961 -50.5 -3.60059 -87.6992 -36zM167.2 140.5\nc-5 8.59961 -9.7002 17.2998 -14.2998 26.0996c-6.40039 -15.1992 -11.9004 -30.0996 -16.3008 -44.5c15.3008 -3.2998 30.8008 -5.7998 46.4004 -7.5c-5.5 8.5 -10.7002 17.2002 -15.7998 25.9004zM136.9 260.8c4.39941 -14.0996 9.69922 -28.7002 16 -43.5996\nc4.5 8.7998 9.2998 17.5 14.1992 26c4.90039 8.59961 10.1006 17.0996 15.4004 25.3994c-15.9004 -2 -31.2002 -4.59961 -45.5996 -7.7998zM164.3 191.9c6.7002 -13.8008 13.7998 -27.3008 21.5 -40.6006s15.9004 -26.2998 24.6006 -39\nc14.6992 -0.899414 29.8994 -1.39941 45.5996 -1.39941s31.2002 0.5 46.0996 1.59961c8.5 12.7998 16.6006 25.7002 24.2002 39c7.7002 13.4004 14.9004 27 21.6006 40.7998c-6.80078 13.7002 -14 27.2002 -21.7002 40.4004s-15.7998 26.0996 -24.2998 38.7002\nc-14.9004 1.09961 -30.3008 1.69922 -45.9004 1.69922s-30.9004 -0.599609 -45.9004 -1.69922c-8.59961 -12.7002 -16.7998 -25.6006 -24.3994 -38.9004c-7.60059 -13.2998 -14.7998 -26.7998 -21.4004 -40.5996zM344.9 140.7c-5 -8.60059 -10.1006 -17.2002 -15.5 -25.6006\nc15.7998 1.80078 31.5 4.5 47 8c-4.90039 15.1006 -10.5 29.8008 -16.9004 44.3008c-4.7002 -9 -9.5 -17.9004 -14.5996 -26.7002zM359.3 217.2c6.10059 14.2002 11.5 28.5996 16.1006 43.3994c-14.4004 3.30078 -29.8008 6 -45.9004 8\nc5.2998 -8.2998 10.4004 -16.6992 15.2998 -25.1992c5 -8.60059 9.7998 -17.4004 14.5 -26.2002zM256.2 329.7c-10 -10.9004 -20.1006 -22.9004 -29.9004 -35.7998c19.7998 0.899414 39.7002 0.899414 59.5 0c-9.2002 12.3994 -19.0996 24.3994 -29.5996 35.7998zM140.2 391\nc-15.7998 -9.09961 -22 -45.5996 -12.6006 -94c1.10059 -5.2002 2.2002 -10.4004 3.5 -15.5c22.2002 4.90039 44.6006 8.40039 67.2002 10.4004c13.1006 18.5996 27.4004 36.3994 42.9004 53.0996c-2.60059 2.40039 -5.10059 4.7998 -7.60059 7\nc-39.2998 34.7998 -76.5996 48.7998 -93.3994 39zM115.7 127.4c6.89941 22 15.2002 43.5996 24.7998 64.5c-9.5 20.5996 -17.7002 41.8994 -24.5 63.5996c-5.7998 -1.7002 -11.5996 -3.5 -17.2998 -5.5c-45.6006 -15.9004 -77.2002 -39.2998 -77.2002 -57.5996\nc1.90039 -12.1006 8.7002 -22.9004 18.7998 -29.9004c17.5 -13.9004 41.7002 -24.5 63 -31.2002c4.10059 -1.39941 8.2002 -2.7002 12.4004 -3.89941zM232.3 29.4004c3.2002 2.7998 6.40039 5.7998 9.60059 8.89941c-15.5 16.7998 -30 34.7002 -43.2002 53.4004\nc-22.9004 1.7002 -45.5 5 -67.9004 9.7998c-1.39941 -5.5 -2.59961 -11.0996 -3.7002 -16.7002c-9 -47.5 -2.39941 -82.7998 13.5 -92c11.4004 -4.5 24.2002 -4 35.3008 1.2998c20.7998 8.2002 39.8994 20.2002 56.3994 35.3008zM256.8 53.7002\nc10.5 11.5996 20.4004 23.7002 29.6006 36.3994c-10 -0.5 -20.1006 -0.699219 -30.4004 -0.699219c-10 0 -19.9004 0.199219 -29.5 0.599609c9.90039 -13.0996 20.0996 -25.2998 30.2998 -36.2998zM387.5 23.7002c3.2002 22.2002 2.40039 44.7002 -2.5 66.2998\nc-0.799805 4 -1.7002 8.09961 -2.7002 12.2002c-22.5 -5.10059 -45.2998 -8.60059 -68.2002 -10.5c-12.7998 -18.7998 -26.8994 -36.7002 -42.1992 -53.6006c4.2998 -4 8.5 -7.89941 12.6992 -11.5c36.6006 -31.3994 70.5 -43.3994 86.4004 -34.1992\nc9.59961 7.69922 15.5996 19.0996 16.5 31.2998zM405.7 131.2c49.8994 16.5 84.7998 41.7998 84.7998 61.3994c0 18.2002 -32.7002 42 -79.2998 58c-4.7998 1.60059 -9.7998 3.2002 -15 4.7002c-6.7998 -21.5 -14.9004 -42.5 -24.5 -62.8994\nc9.89941 -20.7002 18.5 -42 25.5 -63.8008c2.89941 0.800781 5.7002 1.7002 8.5 2.60059zM256 146.2c-25.2998 0 -45.7998 20.5 -45.7998 45.7998s20.5 45.7998 45.7998 45.7998s45.7998 -20.5 45.7998 -45.7998s-20.5 -45.7998 -45.7998 -45.7998z\" />\n    <glyph glyph-name=\"autoprefixer\" unicode=\"&#xf41c;\" horiz-adv-x=\"640\" \nd=\"M318.4 432l164.1 -480h-77.5l-25.2002 81.4004h-119.5l-25.3994 -81.4004h-77.5zM278.1 90.0996h83.6006l-40.9004 130.4h-1.5zM640 43l-158.5 -9.5l-19.4004 56.5l167.9 -15.5996zM177.9 90l-19.4004 -56.4004l-158.5 9.40039l10 31.2998z\" />\n    <glyph glyph-name=\"less\" unicode=\"&#xf41d;\" horiz-adv-x=\"640\" \nd=\"M612.7 229c0 -11 6.7998 -22.5996 27.2998 -23.2998v-27.2998c-20.5 -1 -27.2998 -12.6006 -27.2998 -23.6006c0 -20.3994 3.2002 -32 3.2002 -54.5996c0 -34.2002 -12.7002 -45.2002 -40.5 -45.2002h-20.5v25.2002h6.2998v0.5c13.5996 0 17.2998 4.7002 17.2998 22.5996\nc0 17.2998 -1.59961 32.6006 -1.59961 51.5c0 24.2002 7.7998 33.6006 23.5996 37.2998v1.60059c-15.7002 3.7002 -23.5996 13.0996 -23.5996 37.2998c0 18.9004 1.59961 35.2002 1.59961 51.5c0 17.4004 -3.09961 22.0996 -17.2998 22.0996h-6.2998v24.2002h20.5\nc27.8994 0 40.5 -11 40.5 -45.2002c0 -22 -3.2002 -34.0996 -3.2002 -54.5996zM507.1 197c20.5 -6.7998 43 -18.9004 43 -47.7998c0 -28.9004 -22.5996 -51 -64.5996 -51c-20 0 -44.0996 9 -59.9004 22.0996l21 30.5c14.2002 -11 27.4004 -16.2998 40.5 -16.2998\nc14.2002 0 20.5 5.2002 20.5 13.0996c0 10.5 -15.7998 15.8008 -32.0996 22.1006c-18.9004 7.2998 -41.5 20.5 -41.5 46.2002c0 28.8994 24.2002 49.3994 59.9004 49.3994c24.1992 0 42.0996 -10.5 55.1992 -20.5l-21 -27.7998c-11.5 8.40039 -22 13.0996 -33.5996 13.0996\ns-17.9004 -4.69922 -17.9004 -12.5996c0 -10.5 14.7002 -14.2002 30.5 -20.5zM148.2 137.6c1.59961 0 3.09961 0 6.2002 0.800781l5.2998 -34.2002c-5.7002 -2.10059 -13.6006 -3.7002 -23.6006 -3.7002c-32.0996 0 -43.0996 21 -43.0996 53.0996v150.801h-14.0996\nc-13.6006 0 -17.3008 -4.80078 -17.3008 -22.1006s1.60059 -32.5996 1.60059 -51.5c0 -24.2002 -7.7998 -33.5996 -23.6006 -37.2998v-1.59961c15.7002 -3.7002 23.6006 -13.1006 23.6006 -37.3008c0 -19.3994 -1.60059 -34.1992 -1.60059 -51.5\nc0 -17.2998 4.2002 -22.5996 17.3008 -22.5996h6.2998v-24.2002h-20.5c-27.9004 0 -40.5 11 -40.5 45.2002c0 22.5996 3.2002 34.2002 3.2002 53.5996c0 11 -6.80078 22.6006 -27.3008 23.1006v27.2998c20.5 1 27.3008 12.5996 27.3008 23.5996\nc0 19.4004 -3.2002 32 -3.2002 54.6006c0 34.2002 12.5996 45.2002 41 45.2002h74.5996v-178.2c0 -9.90039 4.7002 -13.1006 8.40039 -13.1006zM379.9 197c20.5 -6.7998 43.0996 -18.9004 43 -47.7998c0 -28.9004 -22.6006 -51 -64.6006 -51\nc-20 0 -44.0996 9 -59.8994 22.0996l20.5 30.5c14.1992 -11 27.3994 -16.2998 40.5 -16.2998c14.1992 0 20.5 5.2002 20.5 13.0996c0 10.5 -15.8008 15.8008 -32.1006 22.1006c-18.8994 7.2998 -41.5 20.5 -41.5 46.2002c0 28.8994 24.2002 49.3994 59.9004 49.3994\nc24.2002 0 42.0996 -10.5 55.2002 -20.5l-21 -27.7998c-11.5 8.40039 -22 13.0996 -33.6006 13.0996c-11.5996 0 -17.8994 -4.69922 -17.8994 -12.5996c0 -10.5 14.6992 -14.2002 31 -20.5zM224.9 265.8c44.0996 0 67.2998 -33.0996 66.6992 -75.7002\nc0 -8.39941 -1.09961 -15.6992 -1.59961 -19.3994h-95.2002c4.2002 -24.2002 20.5 -34.2002 41.5 -34.2002c11.6006 0 22.6006 3.2002 34.2002 10l15.7998 -27.7998c-16.2998 -11.1006 -37.2998 -17.9004 -56.2002 -17.9004c-45.0996 0 -79.2998 30.5 -79.2998 82.5\nc-1 50.4004 35.7002 82.5 74.1006 82.5zM194.9 199.6h56.7998c0 17.9004 -7.40039 31 -26.2998 31c-14.7002 0 -27.3008 -10 -30.5 -31z\" />\n    <glyph glyph-name=\"sass\" unicode=\"&#xf41e;\" horiz-adv-x=\"640\" \nd=\"M301.84 69.0801c-0.299805 -0.599609 -0.599609 -1.08008 0 0zM550.97 156.08c57.9092 0.300781 90.5703 -37.0801 88.9707 -71.0801c-1.10059 -26.9004 -25.6904 -37.9004 -30.29 -38.7002c-3.30078 -0.599609 -5.10059 -0.700195 -5.60059 1.90039\nc-0.299805 1.7998 0.900391 2.7002 4.7998 5.09961c3.90039 2.40039 15.6006 10.5 17.7002 25c2.10059 14.5 -8.7998 49.2998 -64.4795 55.7998c-26 3 -46.3906 -0.599609 -62.0898 -7.19922c2.89941 -7.60059 5.09961 -15.5 5.39941 -23.4004\nc0.799805 -17.5 -11.29 -30.4004 -23.79 -39.5996c-5.48535 -3.98535 -15.1572 -8.95801 -21.5898 -11.1006c-5.2002 -2.2002 -12.2002 -4.5 -17.0996 -3.5c-10.9004 2.2002 -16.7002 11.7998 -9.30078 33.1006c4 11.5 15.5 29 34.0908 44.0996\nc-4.30078 8.7002 -8.99023 17.5996 -11.3906 25.7002c-2.18164 7.00781 -4.95898 18.5664 -6.2002 25.7998c0 0 -15.2998 -31.7197 -35.0898 -60.6201c-1.09961 -1.7002 -2.2998 -3.39941 -3.39941 -5c3.7998 -9 6.89941 -18.5996 7.2998 -28.2002\nc0.700195 -17.3994 -6.90039 -30.5996 -19.4004 -39.7998c-5.16211 -3.70605 -14.208 -8.45508 -20.1895 -10.5996c-3.90039 -1.7998 -12 -4.60059 -23.5 -5.40039c-6.29004 -0.5 -12.29 -0.0996094 -15.6904 2.5c-4.59961 3.40039 -5.2002 7.7998 -2.7998 13.7002\nc2 5 17.21 22.4004 30 37.5996c3.5 4.2002 6.90039 8.5 9.90039 12.5c-0.0498047 0.0449219 -0.09375 0.134766 -0.100586 0.200195c0 0 2.2998 3 6.10059 8.2002c-4.7002 10.0996 -10.6006 20.5 -13.4004 30c-2.18164 7.00781 -4.95898 18.5664 -6.2002 25.7998\nc0 0 -15.4902 -39.7002 -31.6895 -71.5c-12.4902 -24.5996 -20.79 -39.5 -24.5908 -46v-0.299805s-0.5 -0.900391 -1.5 -2.40039c-0.5 -0.799805 -0.699219 -1.19922 -0.699219 -1.19922v0.0996094c-4.20996 -6.2002 -13.6104 -18.2998 -23 -18.2998\nc-25.7002 0 -16.3008 52.2002 -16.3008 52.2002s-7.5 -19.3008 -16 -35.9004c-6.88965 -13.5996 -13.0898 -25 -26.8896 -25c-3.90039 0 -10.1904 0.0996094 -15.3896 5c-11.8008 11.2002 -20.9004 39.7002 -19.1006 61.7002c1.5 18.7998 4.40039 31.7998 8.40039 42.5996\nc-7.10059 -3.89941 -15.2002 -8.39941 -23.4902 -13.2998c-4.2998 -2.5 -8.59961 -5 -12.7998 -7.5c0.0996094 -0.299805 0.299805 -0.5 0.400391 -0.799805c10.5996 -20.4004 13.3896 -65.2002 -9.60059 -99.5s-65.7803 -55.2002 -107.57 -43.6006\nc-13.3896 3.80078 -33.79 31.6006 -16.29 70.4004c15.4902 34.2002 77.3809 66.5996 93.6709 74.7002c1.39941 0.799805 2.89941 1.59961 4.5 2.5c-32.4902 28.3994 -113.671 66.7998 -125.061 125.7c-3.2002 16.5996 4.58984 56.2998 53.2803 101.899\nc40.9902 38.2998 97.9697 67.7002 150.66 86.4004c88.4297 31.3994 181.949 12.8994 196.31 -43.5c14.1006 -55.5 -33.9902 -121.8 -95.7695 -145.601c-54.9902 -21.2998 -100.471 -17.8994 -119.17 -11.7998c-21.29 7 -33.79 21 -36.79 28.9004\nc-1.2002 3.09961 -3.30078 8.2998 0 10.0996c2 1.10059 2.7998 0.799805 8.09961 -5.09961c5.09961 -5.60059 25.4902 -20.6006 64.2803 -16.2998c101.77 11.3994 163.06 90.5 143.66 133c-13.4902 29.7998 -91.8408 43.1992 -189.841 -5.60059\nc-119.569 -59.5996 -126.069 -108.7 -127.069 -127.399c-2.7998 -51.3008 63.2793 -78.3008 99.0693 -116.5c0.5 -0.5 0.900391 -1 1.40039 -1.5c6.7002 3.69922 13.7998 7.59961 20.7002 11.3994c18 9.90039 35.0996 19.2002 43 23.5\nc12.5801 18.2998 38.1797 38.5 56.5801 38.5c29.4893 0 19.3896 -42.3994 19.3896 -42.3994s0.599609 2 1.40039 2c0.799805 0 4.09961 5.5 13.1992 2.19922c9.40039 -3.5 7.2002 -10 7.30078 -10.6992c0.0996094 -1.30078 -11 -38.9004 -15.7002 -63.1006\nc-2.2002 -11.5 -0.900391 -19.8994 -0.299805 -19.8994c0.899414 0 2.7998 2.89941 4.5 6.09961v0.0996094s1.2998 2.40039 3.5 6.7002c0 0.200195 -0.200195 -0.299805 -0.5 -0.799805c0.199219 0.400391 0.5 0.900391 0.899414 1.7002\nc2.60059 5 6.2002 12.3994 10.4004 21.5996c8.18945 18.1006 39.4795 87.7002 42.0801 95.4004c2.59961 7.7002 4 15.7002 5.2998 19.0996c1.2998 3.40039 12.4102 6 25.2998 5.90039c12.8906 -0.100586 14.1904 -5.60059 14.29 -6.7002\nc0.100586 -1.09961 -6.2002 -16.4004 -7.59961 -27.2002c-1.40039 -10.7998 -0.100586 -16.2002 1.09961 -25.2998c0.799805 -6 4.5 -13.5 8.90039 -22c13.2998 21.7998 36.79 63.5996 39.0898 75.2998c1.03613 5.38965 3.41016 13.9473 5.2998 19.1006\nc1.29004 3.39941 12.3896 6 25.29 5.89941c12.9004 -0.0996094 14.2002 -5.59961 14.2998 -6.7002c0.100586 -1.09961 -6.2002 -16.3994 -7.59961 -27.1992c-1.40039 -10.8008 -0.100586 -16.2002 1.09961 -25.3008c1 -7.7998 7.10059 -18.1992 13 -30.0996\nc15.1289 7.45215 41.0938 13.5 57.958 13.5h0.0419922zM121.79 11.3799c19.4004 21.0996 27.3896 47.9199 19.0996 78.3203c-1 -0.600586 -2 -1.10059 -2.89941 -1.7002c0 0 -0.400391 -0.200195 -1.2002 -0.700195c-4.7998 -2.89941 -8.7002 -5.2998 -11.4004 -6.89941\nc-11.7998 -7.40039 -29.5898 -19.4004 -43.3896 -32.4004c-22.6904 -21.4199 -27.3896 -51 -15.4902 -57.9199c11.0898 -6.40039 36.8906 1.2002 55.2803 21.2998zM256.15 102.78c4 9.7998 19.6992 53.2998 16.1992 59.2002c-2.59961 4.5 -13.6992 0.899414 -23.79 -10.4004\nc-6.2998 -7 -16.8994 -25 -21.8994 -40.0996c-9.90039 -30 -5.60059 -60.5 1.39941 -62.3008c8.2002 -2.09961 21.6904 37.9004 28.0908 53.6006zM367.15 49.7803c7.7998 4.7998 24.96 16.8994 25.0898 34.7998c0 0.599609 -0.100586 1.09961 -0.100586 1.59961\nc-3.98926 -5.19922 -7.68945 -9.89941 -10.8896 -13.8994c-5.5 -6.7998 -19.4004 -21.7002 -19.4004 -21.7002s-2 -1.90039 -1.09961 -2.40039c1.2002 -0.699219 3.7002 0.200195 6.40039 1.60059zM452.73 69.2803c9.68945 3.5 25.7998 11.8994 25.8994 34.3994\nc-0.0673828 3.06152 -0.918945 7.90039 -1.89941 10.8008c-10.4102 -9.2002 -16.4004 -18.8008 -19 -24.5c-6.7002 -14.6006 -7 -19.3008 -5 -20.7002z\" />\n    <glyph glyph-name=\"vuejs\" unicode=\"&#xf41f;\" \nd=\"M356.9 383.7h91.0996l-224 -383.7l-224 383.7h176l48 -88.6006l56 88.6006h76.9004zM55.7002 351.7l168.3 -288.2l168.2 288.2h-53.7998l-114.4 -198.2l-114.5 198.2h-53.7998z\" />\n    <glyph glyph-name=\"angular\" unicode=\"&#xf420;\" \nd=\"M185.7 179.9l38.0996 91.5996l38.1006 -91.5996h-76.2002zM223.8 416l207.8 -74.4004l-31.7998 -275.699l-176 -97.9004l-176 97.9004l-31.7998 275.699zM354 74.2002l-130.2 292.3l-130.1 -292.3h48.7002l26.1992 65.3994h110.601l26.2002 -65.3994h48.5996z\" />\n    <glyph glyph-name=\"aviato\" unicode=\"&#xf421;\" horiz-adv-x=\"640\" \nd=\"M107.2 164.5l-19 41.7998h-52.1006l-19 -41.7998h-17.0996l62.2002 131.4l62.2002 -131.4h-17.2002zM62.2002 262.6l-19.6006 -42.5h39.2002zM174.9 160.2l-62.2002 131.399h17.0996l45.1006 -96l45.0996 96h17zM255.5 164.5v127.1h15.5v-127.1h-15.5zM464.6 280.1\nv-115.6h-17.2998v115.6h-41.2002v11.5h99.6006v-11.5h-41.1006zM640 229.2c0 -9.2002 -1.7002 -17.7998 -5.09961 -25.7998c-3.40039 -8 -8.2002 -15.1006 -14.2002 -21.1006s-13.1006 -10.7998 -21.1006 -14.2002c-8 -3.39941 -16.5996 -5.09961 -25.7998 -5.09961\ns-17.7998 1.7002 -25.7998 5.09961c-8 3.40039 -15.0996 8.2002 -21.0996 14.2002s-10.8008 13 -14.2002 21.1006c-3.40039 8 -5.10059 16.5996 -5.10059 25.7998s1.7002 17.7998 5.10059 25.7998c3.39941 8 8.2002 15.0996 14.2002 21.0996s13 8.40039 21.0996 11.9004\nc8 3.40039 16.5996 5.09961 25.7998 5.09961s17.7998 -1.69922 25.7998 -5.09961s15.1006 -5.7998 21.1006 -11.9004c6 -6 10.7002 -13.0996 14.2002 -21.0996c3.39941 -8 5.09961 -16.5996 5.09961 -25.7998zM624.5 229.2c0 7.2998 -1.2998 14 -3.90039 20.2998\nc-2.59961 6.2998 -6.19922 11.7002 -10.7998 16.2998c-4.59961 4.60059 -10 8.2002 -16.2002 10.9004c-6.19922 2.7002 -12.7998 4 -19.7998 4s-13.5996 -1.2998 -19.7998 -4s-11.5996 -6.2998 -16.2002 -10.9004c-4.59961 -4.59961 -8.2002 -10 -10.7998 -16.2998\ns-3.90039 -13.0996 -3.90039 -20.2998c0 -7.2998 1.30078 -14 3.90039 -20.2998c2.59961 -6.30078 6.2002 -11.7002 10.7998 -16.3008c4.60059 -4.59961 10 -8.19922 16.2002 -10.8994s12.7998 -4 19.7998 -4s13.6006 1.2998 19.7998 4\nc6.2002 2.7002 11.6006 6.2998 16.2002 10.8994c4.60059 4.60059 8.2002 10 10.7998 16.3008c2.60059 6.2998 3.90039 13.0996 3.90039 20.2998zM529.7 132.5c6 -0.900391 10.5 -6 10.7002 -12.2998c0 -6.7998 -5.60059 -12.4004 -12.4004 -12.4004\ns-12.4004 5.60059 -12.4004 12.4004c0 6.2002 4.60059 11.2998 10.5 12.2002v5.7998l-80.2998 -9v-5.40039c5.60059 -1.09961 9.90039 -6.09961 9.90039 -12.0996c0 -6.7998 -5.60059 -10.2002 -12.4004 -10.2002s-12.3994 3.40039 -12.3994 10.2002\nc0 5.89941 4.19922 11 9.89941 12.0996v4.90039l-28.3994 -3.2002v-23.7002h5.89941v-13.7998h-5.89941v6.59961h-5v-6.59961h-5.90039v13.7998h5.90039v23.2002l-38.3008 -4.2998c-8.09961 -11.5 -19 -13.6006 -19 -13.6006l0.100586 -6.69922l5.09961 -0.200195\nl0.100586 -12.1006h-4.10059l-0.0996094 5h-5.2002l-0.0996094 -5h-4.10059l0.100586 12.1006l5.09961 0.200195l0.0996094 6.69922s-10.8994 2.2002 -19 13.6006l-38.2998 4.2998v-23.2002h5.90039v-13.7998h-5.90039v6.59961h-5v-6.59961h-5.89941v13.9004h5.89941\nv23.6992l-28.3994 3.2002v-4.89941c5.59961 -1.10059 9.89941 -6.10059 9.89941 -12.1006c0 -6.7998 -5.59961 -10.2002 -12.3994 -10.2002c-6.80078 0 -12.4004 3.40039 -12.4004 10.2002c0 5.90039 4.2002 11 9.90039 12.1006v5.39941l-80.3008 9v-5.7998\nc5.90039 -0.900391 10.5 -6 10.5 -12.2002c0 -6.7998 -5.59961 -12.3994 -12.3994 -12.3994s-12.4004 5.59961 -12.4004 12.3994c0 6.2002 4.60059 11.2998 10.5 12.2002v6.2998l-88.8994 10l242.899 -13.5c-0.599609 2.2002 -1.09961 4.60059 -1.39941 7.2002\nc-0.300781 2.09961 -0.5 4.2002 -0.600586 6.5l-64.7998 8.09961l64.9004 -1.89941c0 0.399414 0 0.799805 0.0996094 1.09961c2.7998 17.2002 25.5 23.7002 25.5 23.7002l1.09961 26.4004h-23.5996l-19 -41.8008h-17.0996l62.1992 131.4l62.2002 -131.4h-17.0996\nl-19 41.8008h-23.7998l1.09961 -26.3008s22.7002 -6.5 25.5 -23.6992c0 -0.400391 0.0996094 -0.700195 0.0996094 -1.10059l64.9004 1.90039l-64.7998 -8.10059c-0.100586 -2.2998 -0.299805 -4.5 -0.600586 -6.5c-0.299805 -2.59961 -0.799805 -5 -1.39941 -7.19922\nl242.899 13.3994l-88.8994 -10v-6.2998zM328.9 220.1h17.8994l1.7002 40.3008l1.7002 -40.3008h17.8994l-19.5996 42.5z\" />\n    <glyph glyph-name=\"ember\" unicode=\"&#xf423;\" horiz-adv-x=\"640\" \nd=\"M639.9 193.4c1.09961 -10.8008 -5.30078 -14.3008 -5.30078 -14.3008s-26.5996 -19.5996 -47 -13.6992c-20.3994 5.89941 -21.5 43.1992 -21.5 43.1992h-1.89941l-20.7002 -57.1992s-8.2998 -27.9004 -20.7002 -22.8008\nc-12.3994 5.10059 -12.0996 18.6006 -12.0996 18.6006s-19.2998 -21.2998 -54.7998 -18.6006c-31.1006 2.30078 -41.1006 26.7002 -41.1006 26.7002s-20.7998 -14.3994 -79.0996 -25.8994c-26.1006 -2.90039 -44.6006 12.8994 -44.6006 12.8994\nc-2.39941 -2.39941 -18 -10.2002 -18 -10.2002s-22.2998 -10.2998 -30.8994 5.30078c-8.60059 15.5996 -3 63.6992 -3 63.6992h-1.60059s-12.8994 -26.2998 -19.5996 -49.8994c-6.7002 -23.6006 -15 -21.2002 -15 -21.2002s-15.2998 -1.40039 -18.7998 11.4004\nc-3.5 12.8994 5.59961 59.6992 5.59961 59.6992l-1.2998 -0.299805s-0.799805 1.40039 -12.5996 -23.5996c-20.1006 -48.9004 -24.9004 -50 -36.5 -47.9004c-11.6006 2.10059 -12.1006 16.7002 -12.1006 16.7002l-15.8994 -8.7998s-38.6006 -16.6006 -58.8008 -1.2998\nc-13.3994 10.1992 -18 22.1992 -19.5996 29.6992c0 0 -17 1.80078 -28.0996 6.10059c-11.1006 4.2998 0.0996094 18.2998 0.0996094 18.2998s3.5 5.2998 10 0s18.7998 -2.90039 18.7998 -2.90039c1 8.5 2.5 19.7002 7.7998 31.5c11 24.7002 27.6006 33 41.3008 33.3008\nc13.6992 0.199219 23.3994 -3.5 31.6992 -15.3008c18.6006 -45.8994 -49.3994 -69.1992 -49.3994 -69.1992s-1.7998 -12.1006 16.7002 -11.8008c18.5996 0.200195 46.7998 20.4004 46.7998 20.4004c1.2998 15.4004 12.0996 63.5 15 70.7002\nc2.89941 7.2002 14.2002 5.89941 14.2002 5.89941s8.89941 1.90039 10.5 -7.5c1.69922 -9.39941 -6.40039 -47.5996 -6.40039 -47.5996l1.2998 -1.59961c0.799805 3.69922 20.4004 36.5 20.4004 36.5s11.2998 19.5996 28.5 18.7998s-0.799805 -53.5 -0.799805 -53.5\nl1.2998 -1.60059l1.2998 2.40039c2.2002 5.90039 27.7002 44.5996 27.7002 44.5996s9.59961 11.3008 18.5 8.60059c8.7998 -2.60059 9.39941 -6.7002 9.89941 -14.2002s-7 -52.0996 -7 -52.0996s-4.2998 -29.2002 5.40039 -28.7002s20.2002 10.7002 20.2002 10.7002\ns7.5 57.5996 12.5996 105.1c5.10059 47.5 27.1006 79.5 27.1006 79.5s6.5 10 23.5 16.7002c11.1992 4 23.3994 1.2998 29.1992 -23.1006c9.5 -41 -23.2998 -87.8994 -36.8994 -105.199c5.89941 5.7998 15.7998 12.0996 27.2002 5.2998\nc40.2998 -25.2998 7.2998 -80.9004 7.2998 -80.9004c11.7998 3.7998 33 18 33 18s0.5 6.10059 0.700195 7.5c7.19922 41.2998 32 56.2002 36.5996 59.7002c4.7998 3.59961 47.0996 19.7998 49 -24s-52.9004 -59.0996 -52.9004 -59.0996s4.80078 -12.6006 25 -9.40039\nc20.2002 3.2002 43.3008 22.7998 43.3008 22.7998c0.799805 18 12.5996 61 15 67.2002c2.39941 6.2002 17.1992 6.5 18.7998 3c2.2002 -7 0.299805 -37.5996 0.299805 -37.5996l1.59961 0.5c5.90039 17.5 18.3008 31.1992 18.3008 31.1992s9.89941 9.7002 18 7.30078\nc8.09961 -2.30078 5.09961 -30.4004 5.09961 -30.4004s-4.2998 -30.7002 9.40039 -32c13.6992 -1.40039 29.2998 10.7002 29.2998 10.7002s9.59961 3.89941 10.7002 -6.7998zM61.9004 188.1c0 0 6.19922 -1.89941 19.8994 7.60059\nc13.7002 9.39941 16.4004 24.3994 9.10059 31.3994c-7.2002 6.90039 -28.2002 -7 -29 -39zM334.7 311.9c0 0 -15.9004 -54.5 -16.4004 -70.7002c0 0 44.5 72 40 96.2002c-4.5 24.1992 -23.5996 -25.5 -23.5996 -25.5zM357.5 173.5\nc12.5996 33.0996 -3.59961 45.5 -3.59961 45.5s-23.4004 12.9004 -33.3008 -20.2002c-9.89941 -33.0996 -6.39941 -44.8994 -6.39941 -44.8994s30.7002 -13.4004 43.2998 19.5996zM442.1 188.1c0 0 15.7002 -1.09961 26.4004 14.2002s1.2998 25.5 1.2998 25.5\ns-8.59961 11.1006 -19.5996 -9.09961c-11.1006 -20.1006 -8.10059 -30.6006 -8.10059 -30.6006z\" />\n    <glyph glyph-name=\"font-awesome-flag\" unicode=\"&#xf425;\" \nd=\"M444.373 88.5762c0 -7.16797 -6.14453 -10.2402 -13.3125 -13.3125c-28.6719 -12.2881 -59.3916 -23.5518 -92.1592 -23.5518c-46.0801 0 -67.584 28.6719 -122.88 28.6719c-39.9365 0 -81.9209 -14.3359 -115.713 -29.6953\nc-2.04785 -1.02441 -4.0957 -1.02441 -6.14355 -2.04883v-77.8232c0 -21.4053 -16.1221 -34.8164 -33.792 -34.8164c-19.4561 0 -34.8164 15.3604 -34.8164 34.8164v374.783c-13.3115 10.2402 -22.5273 26.624 -22.5273 45.0566c0 31.7441 25.5996 57.3438 57.3438 57.3438\ns57.3438 -25.5996 57.3438 -57.3438c0 -18.4326 -8.19141 -34.8164 -22.5273 -45.0566v-31.7432c4.12402 1.37402 58.7676 28.6719 114.688 28.6719c65.2705 0 97.6758 -27.6484 126.976 -27.6484c38.9121 0 81.9209 27.6484 92.1602 27.6484\nc8.19238 0 15.3604 -6.14453 15.3604 -13.3125v-240.64z\" />\n    <glyph glyph-name=\"gitter\" unicode=\"&#xf426;\" horiz-adv-x=\"384\" \nd=\"M66.4004 125.5h-50.4004v322.5h50.4004v-322.5zM166.9 371.9v-435.9h-50.4004v435.9h50.4004zM267.5 371.9v-435.9h-50.4004v435.9h50.4004zM368 372v-247h-50.4004v247h50.4004z\" />\n    <glyph glyph-name=\"hooli\" unicode=\"&#xf427;\" horiz-adv-x=\"640\" \nd=\"M144.5 96v16c12.2998 -6.59961 25.0996 -12.2002 38.2998 -16.7998zM202.2 101.3c29.5 -10.7002 55.3994 -13.5 75.2998 -13.2998c-24.7998 -7 -58.2002 -5.2998 -94.7002 7.2002l19.4004 0.799805v5.2998zM611.1 216.5c-16 0 -28.8994 13 -28.8994 28.9004\nc0 15.8994 13 24.5 28.8994 24.5c16 0 28.9004 -8.5 28.9004 -24.5s-13 -28.9004 -28.9004 -28.9004zM582.1 96v110.5h57.9004v-110.5h-57.9004zM508.4 96v168l57.8994 27.2998v-195.3h-57.8994zM477.4 215.4c18.0996 -18.1006 16.6992 -33.8008 16.7998 -52.6006\nc0 -18.7002 1.39941 -34.2998 -16.7998 -52.5c-18.1006 -18.2002 -50.4004 -17.0996 -50.4004 -17.0996s-32.2002 -1.10059 -50.4004 17.0996c-18.1992 18.2002 -16.7998 33.7998 -16.7998 52.5s-1.39941 34.4004 16.7998 52.6006\nc18.1006 18.1992 50.4004 17.0996 50.4004 17.0996s32.2002 1.09961 50.4004 -17.0996zM437.6 143.5v40.4004c0 8.7998 -7.2998 10.8994 -10.6992 10.8994c-3.40039 0 -10.7002 -2.2002 -10.7002 -10.8994v-40.4004c0 -3.59961 1.7998 -12.5 10.7002 -12.5\nc8.89941 0 10.6992 8.90039 10.6992 12.5zM331.4 215.4c18.1992 -18.1006 16.6992 -33.8008 16.6992 -52.3008c0 -18.6992 1.5 -34.2998 -16.6992 -52.5c-18.1006 -18.1992 -50.4004 -17.0996 -50.4004 -17.0996s-32.2002 -1.09961 -50.4004 17.0996\nc-18.1992 18.2002 -16.7998 33.8008 -16.7998 52.5c0 15.6006 -0.899414 29.1006 9.2998 43.7002c-16 11.7998 -58 37.4004 -99.8994 58.2998v-54.2998c8 13.7002 22.7002 22 38.5 21.9004c27.2002 0 40.5996 -18.7002 40.5996 -37.4004v-93.8994\nc-20.3994 7.5 -39.7002 17.3994 -57.7002 29.5996v48.7002c0 8.09961 -1.5 15 -10.5996 15s-10.7998 -11.2998 -10.7998 -18.2002v-29.7998l-4.5 3.59961c-22.9004 18.9004 -40.2998 35.6006 -53.4004 50.2998v-31c11 -9.7998 23.6006 -20.1992 38.4004 -31.3994\nc6.39941 -4.90039 12.8994 -9.40039 19.3994 -13.6006v-28.5996h-57.8994v73.7002c-86.7002 78 -61.7998 110.8 -61.7998 110.8c8.2998 18.2998 42.8994 22.2002 97.2998 0.0996094l22.5 10.6006v-20.7002c29.5996 -14.5996 63.8994 -31.5 102.1 -61.0996\nc1.60059 2.09961 3.40039 4.09961 5.2998 6c18.2002 18.1992 50.4004 17.0996 50.4004 17.0996s32.2002 1.09961 50.4004 -17.0996zM65.2002 264l29.2002 13.7002c-26.9004 10.0996 -50.9004 13.5 -64.4004 2.09961c-3.7002 -3.09961 -13.5 -24.5996 35.2002 -79.0996\nv63.2998zM291.7 143.5v40.4004c0 8.7998 -7.2998 10.8994 -10.7002 10.8994s-10.7002 -2.2002 -10.7002 -10.8994v-40.4004c0 -3.59961 1.7998 -12.5 10.7002 -12.5s10.7002 8.90039 10.7002 12.5z\" />\n    <glyph glyph-name=\"strava\" unicode=\"&#xf428;\" horiz-adv-x=\"384\" \nd=\"M158.4 448l150.199 -292h-88.5l-61.6992 116.1l-62.2002 -116.1h-89.2002zM308.6 156h67.6006l-111.5 -220l-112.2 220h67.5996l44.6006 -88.2002z\" />\n    <glyph glyph-name=\"stripe\" unicode=\"&#xf429;\" horiz-adv-x=\"640\" \nd=\"M165 303.3l0.0996094 -38.5h33.7002v-37.7998h-33.7002v-63.2002c0 -26.2002 28 -18 33.7002 -15.7002v-33.7998c-5.89941 -3.2002 -16.5996 -5.89941 -31.2002 -5.89941c-26.2998 0 -46.0996 17 -46.0996 43.2998l0.200195 142.399zM254.1 251.7\nc10.4004 19.0996 31.1006 15.2002 37.1006 13.0996v-40.7998c-5.7002 1.7998 -23.4004 4.5 -33.9004 -9.2998v-103.101h-44.2998v153.2h38.4004zM346.4 324v-36.2002l-44.6006 -9.5v36.2002zM44.9004 219.7c0 -20 67.8994 -10.5 67.8994 -63.4004\nc0 -32 -25.3994 -47.7998 -62.2998 -47.7998c-15.2998 0 -32 3 -48.5 10.0996v40c14.9004 -8.09961 33.9004 -14.1992 48.5996 -14.1992c9.90039 0 17 2.69922 17 10.8994c0 21.2002 -67.5 13.2002 -67.5 62.4004c0 31.3994 24 50.2002 60 50.2002\nc14.7002 0 29.4004 -2.30078 44.1006 -8.10059v-41.7998c-13.5 7.2998 -30.7002 11.4004 -44.2002 11.4004c-9.2998 -0.100586 -15.0996 -2.80078 -15.0996 -9.7002zM640 186.4c0 -4.30078 -0.400391 -13.6006 -0.599609 -15.9004h-86.9004\nc2 -20.7998 17.2002 -26.9004 34.5 -26.9004c17.5996 0 31.5 3.7002 43.5996 9.80078v-33.4004c-12.0996 -6.7002 -28 -11.5 -49.1992 -11.5c-43.2002 0 -73.5 24.7002 -73.5 78.2002c0 45.2002 25.6992 81.0996 67.8994 81.0996s64.2002 -35.8994 64.2002 -81.3994z\nM552.1 203.2h45.9004c0 20 -11.5996 28.3994 -22.5 28.3994c-11.0996 0 -23.4004 -8.39941 -23.4004 -28.3994zM439.2 267.8c31.2002 0 60.5996 -28.0996 60.5 -79.7002c0 -56.3994 -29 -79.5996 -60.7998 -79.5996c-15.5 0 -25 6.5 -31.4004 11.2002l-0.0996094 -50.2002\nl-44.4004 -9.40039v204.801h39.0996l2.30078 -11c6.19922 5.69922 17.3994 13.8994 34.7998 13.8994zM428.6 145.3c16.5 0 27.5 17.9004 27.4004 41.7998c0 23.2002 -11.2002 41.4004 -27.4004 41.4004c-10.1992 0 -16.5996 -3.7002 -21.1992 -8.7998l0.299805 -66\nc4.2998 -4.60059 10.5 -8.40039 20.8994 -8.40039zM301.9 111.6v153.2h44.5996v-153.2h-44.5996z\" />\n    <glyph glyph-name=\"stripe-s\" unicode=\"&#xf42a;\" horiz-adv-x=\"384\" \nd=\"M155.3 293.4c0 -64.2002 218 -33.7002 218 -203.9c0 -102.6 -81.7002 -153.6 -200.3 -153.6c-44.8916 0.101562 -114.78 14.6172 -156 32.3994v128.5c47.9004 -26 108.9 -45.5 156.1 -45.5c31.8008 0 54.7002 8.5 54.7002 34.9004c0 68.0996 -216.8 42.5 -216.8 200.399\nc0 101 77.0996 161.4 192.8 161.4c47.2998 0 94.5 -7.2002 141.8 -26.0996v-134.301c-43.3994 23.4004 -98.5 36.7002 -141.899 36.7002c-29.7998 0 -48.4004 -8.59961 -48.4004 -30.8994z\" />\n    <glyph glyph-name=\"typo3\" unicode=\"&#xf42b;\" \nd=\"M178.7 369.6c0 -66.3994 83.3994 -264.899 140.6 -264.899c6.90039 0 11.5 0 18.5 2.2998c-49.3994 -79.5 -110.399 -139 -146.7 -139c-77.2998 0 -184.1 234 -184.1 337.5c0 16.2998 3.90039 29.4004 9.2998 37.0996c27 32.4004 106.8 57.9004 176.3 66.4004\nc-8.5 -7 -13.8994 -14.7002 -13.8994 -39.4004zM301.5 416c71.7998 0 138.8 -11.5996 138.8 -52.5c0 -82.5996 -52.5 -182.3 -78.7998 -182.3c-47.9004 0 -101.7 132.1 -101.7 198.5c0 30.8994 11.6006 36.2998 41.7002 36.2998z\" />\n    <glyph glyph-name=\"amazon-pay\" unicode=\"&#xf42c;\" horiz-adv-x=\"640\" \nd=\"M14 122.7c2.2998 4.2002 5.2002 4.89941 9.7002 2.5c10.3994 -5.60059 20.5996 -11.4004 31.2002 -16.7002c33.6992 -16.8047 90.7744 -37.5469 127.399 -46.2998c17.2734 -4.16797 45.5869 -9.4541 63.2002 -11.7998c22.083 -2.96875 58.0898 -5.37793 80.3721 -5.37793\nc4.03809 0 10.5908 0.0800781 14.6279 0.177734c17.4004 0.399414 34.7998 1.7998 52.0996 3.7998c46.7393 5.44824 119.897 24.623 163.301 42.7998c2.89941 1.2002 5.89941 2 9.09961 1.2002c6.7002 -1.7998 9 -9 4.09961 -13.9004\nc-2.47168 -2.27246 -6.77246 -5.58789 -9.59961 -7.39941c-30.7002 -21.1006 -64.2002 -36.4004 -99.5996 -47.9004c-20.3311 -6.55176 -53.9756 -14.4365 -75.1006 -17.5996c-14.6006 -2.23633 -38.4346 -4.38672 -53.2002 -4.7998\nc-0.694336 -0.0419922 -1.81445 -0.176758 -2.5 -0.300781h-21.0996c-0.685547 0.124023 -1.80469 0.258789 -2.5 0.300781c-3.59961 0.199219 -7.2002 0.299805 -10.7002 0.399414c-13.9971 0.634766 -36.5762 3.00879 -50.3994 5.2998\nc-22.7275 3.7041 -58.7471 13.0674 -80.4004 20.9004c-44.8652 16.1797 -110.094 55.1562 -145.6 87c-1.80078 1.59961 -3 3.7998 -4.40039 5.7002v2zM172 382.9c2.7998 0 5.5 0 8.2998 -0.100586c3.2998 -0.5 6.60059 -0.799805 9.7998 -1.5\nc21.3008 -4.39941 35.4004 -17.2998 43.9004 -36.8994c6.90039 -15.9004 8.59961 -32.7002 8.09961 -49.8008c-0.399414 -15.3994 -3.2998 -30.1992 -10.2998 -44.0996c-9.2002 -18.4004 -23.3994 -30.9004 -43.7998 -34.9004c-22.5 -4.39941 -43.0996 0.5 -61 15.4004\nc-0.5 0.5 -1.09961 1 -2.2002 1.90039v-72.4004c0 -1 0 -2 -0.0996094 -3c-0.299805 -3 -2.10059 -5 -5 -5c-7 -0.0996094 -14.1006 -0.0996094 -21.1006 0c-2.89941 0.0996094 -4.69922 2 -4.89941 5c-0.100586 1 -0.100586 2 -0.100586 3v209.3\nc0 6.90039 1.30078 8.2002 8.2002 8.2002h11.5c4.60059 0 6.90039 -2 7.60059 -6.59961c0.5 -2.7002 0.899414 -5.5 1.2998 -8.2002c0.0439453 -0.405273 0.222656 -1.0332 0.399414 -1.40039c2.5 1.90039 4.7002 3.7002 7.10059 5.40039\nc9.39941 6.90625 26.4238 13.6709 38 15.0996zM124.6 341c0.100586 -14.0996 0 -28 0 -42.0996c0 -14.1006 0.100586 -28.1006 0 -42.2002c-0.00488281 -0.0703125 -0.00878906 -0.183594 -0.00878906 -0.253906c0 -1.10547 0.765625 -2.46973 1.70898 -3.0459\nc11.2002 -7.90039 23.4004 -13.3008 37.4004 -13.9004c20.2002 -0.900391 35.7998 7.2002 42.5996 28.5c3.2002 10 4 20.2002 4 30.5996c0 11.2002 -1 22.3008 -4.89941 33c-6.40039 17.5 -18.6006 24.8008 -33.5 25.9004\nc-16.8008 1.2998 -31.9004 -3.7002 -45.6006 -13.2002c-0.945312 -0.556641 -1.71289 -1.90039 -1.71289 -2.99805c0 -0.0830078 0.00585938 -0.21875 0.0126953 -0.301758zM330.3 382.9c4 0 8 0 11.9004 0.0996094c3.59961 -0.5 7.2002 -0.799805 10.7998 -1.2998\nc7.7002 -1.10059 15.0996 -3.10059 21.7998 -7.10059c11.6006 -6.89941 17.1006 -17.5 19 -30.3994c0.5 -3.29297 0.905273 -8.66895 0.905273 -12c0 -0.248047 -0.00195312 -0.651367 -0.00488281 -0.900391v-106\nc0.00195312 -0.128906 0.00390625 -0.336914 0.00390625 -0.46582c0 -0.645508 -0.046875 -1.69141 -0.104492 -2.33398c-0.0742188 -2.57422 -2.22461 -4.67969 -4.7998 -4.7002c-5.39941 -0.0996094 -10.8994 -0.0996094 -16.2998 0\nc-2.90039 0.100586 -4.7998 2.10059 -5.40039 5.2002c-0.699219 3.59961 -1.19922 7.2002 -1.7998 11c-0.481445 -0.245117 -1.19824 -0.737305 -1.59961 -1.09961c-11.7998 -9.7002 -25.2002 -16.1006 -40.2998 -18.4004c-13.1006 -2 -26 -1.2002 -37.9004 5.40039\nc-12.4004 6.89941 -19.4004 17.6992 -21.4004 31.6992c-1.5 10.5 -0.799805 20.9004 3.90039 30.7002c6.09961 12.6006 16.5 20.4004 29.4004 24.9004c10.7998 3.7998 22 4.5 33.2998 3.89941c8.95312 -0.556641 23.2891 -2.75195 32 -4.89941\nc0.399414 -0.100586 0.799805 0 1.2998 -0.100586c0.0898438 0.381836 0.179688 1.00879 0.200195 1.40039c-0.100586 8.2998 0 16.5996 -0.299805 24.9004c-0.200195 5.89941 -1.60059 11.5996 -5.30078 16.3994c-4.19922 5.5 -10.2998 7.40039 -16.7998 8.40039\nc-12.5 1.89941 -24.8994 0.899414 -37.2002 -1.40039c-7.89941 -1.5 -15.6992 -3.7002 -23.5 -5.7002c-4.69922 -1.19922 -6.69922 0.100586 -6.7998 4.90039c-0.0996094 3.2998 0.100586 6.59961 0 9.90039c-0.0996094 3.89941 1.7002 6.5 5.2998 7.69922\nc5.90039 2 11.8008 4.2002 17.9004 5.80078c7.86426 1.92188 20.8115 3.75879 28.9004 4.09961c0.899414 0.0996094 1.89941 0.299805 2.89941 0.400391zM365.3 255.2c-0.0996094 4.7002 0.100586 9.2998 0.100586 14.0996s-0.100586 9.5 0 14.2998\nc0 1.60059 -0.5 2.40039 -2.10059 2.60059c-8.39941 1.09961 -16.5996 2.7002 -25 3.39941c-1.95117 0.227539 -5.12891 0.412109 -7.09375 0.412109c-4.99316 0 -12.9258 -1.16992 -17.7061 -2.61133c-8 -2.60059 -13.9004 -7.30078 -16.4004 -15.6006\nc-0.779297 -2.57422 -1.41211 -6.84766 -1.41211 -9.53809c0 -2.78613 0.677734 -7.2041 1.5127 -9.86133c1.55762 -5.40918 7.11328 -11.3672 12.3994 -13.3008c5.40039 -2.19922 11.1006 -2.39941 16.8008 -1.7998c13.8994 1.40039 26.1992 6.7998 37.3994 14.9004\nc0.832031 0.543945 1.50684 1.79199 1.50684 2.78613c0 0.0595703 -0.00292969 0.155273 -0.00683594 0.213867zM625.2 125.8v-17.2998c-0.700195 -3.59961 -1.2998 -7.2998 -2.10059 -10.9004c-4.39941 -20.2998 -11.8994 -39.1992 -24.6992 -55.5996\nc-3.27148 -3.9209 -8.96094 -9.92383 -12.7002 -13.4004c-1.1416 -1.04102 -3.29199 -2.16113 -4.7998 -2.5c-2.90039 -0.699219 -4.60059 1.2002 -4.10059 4.10059c0.201172 0.852539 0.649414 2.19629 1 3c5.7998 14.7998 11.7002 29.7002 15.7998 45.0996\nc2.10059 7.60059 3.90039 15.2998 3.5 23.2998c-0.199219 5.2002 -2.5 9 -7.59961 10.4004c-3.89746 1.15332 -10.3486 2.36328 -14.4004 2.7002c-11.3994 0.899414 -22.8994 0.200195 -34.2998 -0.900391c-7.7998 -0.799805 -15.5 -1.7002 -23.2998 -2.5\nc-0.504883 -0.0576172 -1.32617 -0.103516 -1.83398 -0.103516c-0.100586 0 -0.264648 0.000976562 -0.366211 0.00390625c-1.5 -0.100586 -3.2002 0.299805 -3.59961 1.7998c-0.111328 0.383789 -0.201172 1.01855 -0.201172 1.41797\nc0 0.764648 0.314453 1.92188 0.701172 2.58203c0.838867 1.1582 2.49609 2.72656 3.7002 3.5c12.0996 8.2998 25.6992 12.9004 40 15.5996c7.29883 1.34375 19.2461 2.43457 26.668 2.43457c3.46484 0 9.0791 -0.239258 12.5312 -0.53418\nc5.92773 -0.371094 15.335 -2.11816 21 -3.90039c4.30078 -1.39941 8.10059 -3.2998 9.10059 -8.2998zM493.1 249c0.300781 -0.700195 0.501953 -1.2998 0.902344 -2.40039c2.59961 7.7002 5.2002 15 7.7002 22.2002l34.7998 100\nc0.5 1.40039 1.09961 2.7002 1.59961 4.10059c0.932617 2.87988 4.14648 5.21777 7.17383 5.21777c0.145508 0 0.381836 -0.0078125 0.526367 -0.0185547c6.60059 0 13.2998 0.100586 19.9004 0c2.7998 0 4.09961 -1.59961 3.7002 -4.39941\nc-0.277344 -1.56641 -0.994141 -4.03027 -1.60059 -5.5c-23.3662 -59.9336 -46.8994 -119.801 -70.5996 -179.601c-2.1416 -5.27734 -6.2627 -13.5205 -9.2002 -18.3994c-8.7998 -14.9004 -22.4004 -21.7998 -39.5 -21.4004c-4.70801 0.18457 -12.2793 1.08008 -16.9004 2\nc-5.39941 0.900391 -7.2998 3.40039 -7.39941 8.90039c-0.100586 3.2666 -0.100586 6.56641 0 9.89941c0.0996094 3.5 1.7998 5 5.2002 4.80078c2.5 -0.200195 5 -0.800781 7.5 -1c1.30664 -0.148438 3.43359 -0.268555 4.74902 -0.268555\nc2.98828 0 7.75977 0.612305 10.6504 1.36816c7.2002 1.90039 12.2002 6.7998 15.2002 13.2998c3.40039 7.2998 6 15 9.2998 22.2998c1.90039 4.2002 1.5 7.7002 -0.200195 11.8008c-19.7998 48.5 -39.5 97 -59.1006 145.5\nc-0.649414 1.64453 -1.50098 4.37695 -1.90039 6.09961c-0.5 2.5 0.700195 4.5 3.2002 4.5c7.7002 0.0996094 15.2998 0 22.9004 -0.0996094c3.2002 0 5.2998 -1.90039 6.39941 -4.80078c2.10059 -5.59961 4.30078 -11.1992 6.30078 -16.8994\nc12.8994 -35.7666 25.7988 -71.5 38.6982 -107.2z\" />\n    <glyph glyph-name=\"cc-amazon-pay\" unicode=\"&#xf42d;\" horiz-adv-x=\"576\" \nd=\"M124.7 246.2c0.0996094 11.7998 0 23.5 0 35.2998v35.2998c0 1.2998 0.399414 2 1.39941 2.7002c11.5 8 24.1006 12.0996 38.2002 11.0996c12.5 -0.899414 22.7002 -7 28.1006 -21.6992c3.2998 -8.90039 4.09961 -18.2002 4.09961 -27.7002\nc0 -8.7002 -0.700195 -17.2998 -3.40039 -25.6006c-5.69922 -17.7998 -18.6992 -24.6992 -35.6992 -23.8994c-11.7002 0.5 -21.9004 5 -31.4004 11.7002c-0.900391 0.799805 -1.40039 1.59961 -1.2998 2.7998zM279.6 231.6c-5.19922 2 -8.7998 5.7002 -10.3994 11.2002\nc-1.7002 5.40039 -1.7002 10.7998 -0.100586 16.2002c2 6.90039 7 10.9004 13.7002 13.0996c6.7998 2.2002 13.7998 2.5 20.7998 1.90039c7 -0.700195 13.9004 -2 20.9004 -2.90039c1.40039 -0.199219 1.7998 -0.799805 1.7998 -2.19922c-0.0996094 -4 0 -8 0 -12\nc0 -3.90039 -0.0996094 -7.90039 0 -11.8008c0 -1.19922 -0.399414 -1.89941 -1.2998 -2.5c-9.40039 -6.7998 -19.7002 -11.2998 -31.2998 -12.5c-4.7998 -0.5 -9.5 -0.299805 -14.1006 1.5zM576 368v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48v352\nc0 26.5 21.5 48 48 48h480c26.5 0 48 -21.5 48 -48zM368.5 344.1c0.400391 -1.69922 0.900391 -3.39941 1.59961 -5.09961c16.5 -40.5996 32.9004 -81.2998 49.5 -121.9c1.40039 -3.5 1.7002 -6.39941 0.200195 -9.89941\nc-2.7998 -6.2002 -4.89941 -12.6006 -7.7998 -18.7002c-2.59961 -5.5 -6.7002 -9.5 -12.7002 -11.2002c-4.2002 -1.09961 -8.5 -1.2998 -12.8994 -0.899414c-2.10059 0.199219 -4.2002 0.699219 -6.30078 0.799805c-2.7998 0.200195 -4.19922 -1.10059 -4.2998 -4\nc-0.0996094 -2.7998 -0.0996094 -5.60059 0 -8.2998c0.100586 -4.60059 1.60059 -6.7002 6.2002 -7.5c4.7002 -0.800781 9.40039 -1.60059 14.2002 -1.7002c14.2998 -0.299805 25.7002 5.39941 33.0996 17.8994c2.90039 4.90039 5.60059 10.1006 7.7002 15.4004\nc19.7998 50.0996 39.5 100.3 59.2002 150.5c0.599609 1.5 1.09961 3 1.2998 4.59961c0.400391 2.40039 -0.700195 3.60059 -3.09961 3.7002c-5.60059 0.100586 -11.1006 0 -16.7002 0c-3.10059 0 -5.2998 -1.39941 -6.40039 -4.2998\nc-0.399414 -1.09961 -0.899414 -2.2998 -1.2998 -3.40039l-29.0996 -83.6992c-2.10059 -6.10059 -4.2002 -12.1006 -6.5 -18.6006c-0.400391 0.900391 -0.600586 1.40039 -0.800781 1.90039c-10.7998 29.8994 -21.5996 59.8994 -32.3994 89.7998\nc-1.7002 4.7002 -3.5 9.5 -5.2998 14.2002c-0.900391 2.5 -2.7002 4 -5.40039 4c-6.40039 0.0996094 -12.7998 0.200195 -19.2002 0.0996094c-2.2002 0 -3.2998 -1.59961 -2.7998 -3.7002zM242.4 242c1.69922 -11.7002 7.59961 -20.7998 18 -26.5996\nc9.89941 -5.5 20.6992 -6.2002 31.6992 -4.60059c12.7002 1.90039 23.9004 7.2998 33.8008 15.5c0.399414 0.299805 0.799805 0.600586 1.39941 1c0.5 -3.2002 0.900391 -6.2002 1.5 -9.2002c0.5 -2.59961 2.10059 -4.2998 4.5 -4.39941\nc4.60059 -0.100586 9.10059 -0.100586 13.7002 0c2.2998 0.0996094 3.7998 1.59961 4 3.89941c0.0996094 0.800781 0.0996094 1.60059 0.0996094 2.30078v88.7998c0 3.59961 -0.199219 7.2002 -0.699219 10.7998c-1.60059 10.7998 -6.2002 19.7002 -15.9004 25.4004\nc-5.59961 3.2998 -11.7998 5 -18.2002 5.89941c-3 0.400391 -6 0.700195 -9.09961 1.10059h-10c-0.799805 -0.100586 -1.60059 -0.300781 -2.5 -0.300781c-8.2002 -0.399414 -16.2998 -1.39941 -24.2002 -3.5c-5.09961 -1.2998 -10 -3.19922 -15 -4.89941\nc-3 -1 -4.5 -3.2002 -4.40039 -6.5c0.100586 -2.7998 -0.0996094 -5.60059 0 -8.2998c0.100586 -4.10059 1.80078 -5.2002 5.7002 -4.10059c6.5 1.7002 13.1006 3.5 19.7002 4.7998c10.2998 1.90039 20.7002 2.7002 31.0996 1.2002\nc5.40039 -0.799805 10.5 -2.39941 14.1006 -7c3.09961 -4 4.2002 -8.7998 4.39941 -13.7002c0.300781 -6.89941 0.200195 -13.8994 0.300781 -20.7998c0 -0.399414 -0.100586 -0.700195 -0.200195 -1.2002c-0.400391 0 -0.799805 0 -1.10059 0.100586\nc-8.7998 2.09961 -17.6992 3.59961 -26.7998 4.09961c-9.5 0.5 -18.8994 -0.0996094 -27.8994 -3.2002c-10.8008 -3.7998 -19.5 -10.2998 -24.6006 -20.7998c-4.09961 -8.2998 -4.59961 -17 -3.39941 -25.7998zM98.7002 341.1v-175.3c0 -0.799805 0 -1.7002 0.0996094 -2.5\nc0.200195 -2.5 1.7002 -4.09961 4.10059 -4.2002c5.89941 -0.0996094 11.7998 -0.0996094 17.6992 0c2.5 0 4 1.7002 4.10059 4.10059c0.0996094 0.799805 0.0996094 1.7002 0.0996094 2.5v60.7002c0.900391 -0.700195 1.40039 -1.2002 1.90039 -1.60059\nc15 -12.5 32.2002 -16.5996 51.0996 -12.8994c17.1006 3.39941 28.9004 13.8994 36.7002 29.1992c5.7998 11.6006 8.2998 24.1006 8.7002 37c0.5 14.3008 -1 28.4004 -6.7998 41.7002c-7.10059 16.4004 -18.9004 27.2998 -36.7002 30.9004\nc-2.7002 0.599609 -5.5 0.799805 -8.2002 1.2002h-7c-1.2002 -0.200195 -2.40039 -0.300781 -3.59961 -0.5c-11.7002 -1.40039 -22.3008 -5.80078 -31.8008 -12.7002c-2 -1.40039 -3.89941 -3 -5.89941 -4.5c-0.100586 0.5 -0.299805 0.799805 -0.400391 1.2002\nc-0.399414 2.2998 -0.700195 4.59961 -1.09961 6.89941c-0.600586 3.90039 -2.5 5.5 -6.40039 5.60059h-9.7002c-5.89941 0.0996094 -6.89941 -1 -6.89941 -6.80078zM493.6 109c-2.69922 0.700195 -5.09961 0 -7.59961 -1c-43.9004 -18.4004 -89.5 -30.2002 -136.8 -35.7998\nc-14.5 -1.7002 -29.1006 -2.7998 -43.7002 -3.2002c-26.5996 -0.700195 -53.2002 0.799805 -79.5996 4.2998c-17.8008 2.40039 -35.5 5.7002 -53 9.90039c-37 8.89941 -72.7002 21.7002 -106.7 38.7998c-8.7998 4.40039 -17.4004 9.2998 -26.1006 14\nc-3.7998 2.09961 -6.19922 1.5 -8.19922 -2.09961v-1.7002c1.19922 -1.60059 2.19922 -3.40039 3.69922 -4.7998c36 -32.2002 76.6006 -56.5 122 -72.9004c21.9004 -7.90039 44.4004 -13.7002 67.3008 -17.5c14 -2.2998 28 -3.7998 42.1992 -4.5\nc3 -0.0996094 6 -0.200195 9 -0.400391c0.700195 0 1.40039 -0.199219 2.10059 -0.299805h17.7002c0.699219 0.100586 1.39941 0.299805 2.09961 0.299805c14.9004 0.400391 29.7998 1.80078 44.5996 4c21.4004 3.2002 42.4004 8.10059 62.9004 14.7002\nc29.5996 9.60059 57.7002 22.4004 83.4004 40.1006c2.7998 1.89941 5.69922 3.7998 8 6.19922c4.2998 4.40039 2.2998 10.4004 -3.30078 11.9004zM544 136.7c-0.799805 4.2002 -4 5.7998 -7.59961 7c-5.7002 1.89941 -11.6006 2.7998 -17.6006 3.2998\nc-11 0.900391 -22 0.400391 -32.7998 -1.59961c-12 -2.2002 -23.4004 -6.10059 -33.5 -13.1006c-1.2002 -0.799805 -2.40039 -1.7998 -3.09961 -3c-0.600586 -0.899414 -0.700195 -2.2998 -0.5 -3.39941c0.299805 -1.30078 1.69922 -1.60059 3 -1.5\nc0.599609 0 1.19922 0 1.7998 0.0996094l19.5 2.09961c9.59961 0.900391 19.2002 1.5 28.7998 0.800781c4.09961 -0.300781 8.09961 -1.2002 12 -2.2002c4.2998 -1.10059 6.2002 -4.40039 6.40039 -8.7002c0.299805 -6.7002 -1.2002 -13.0996 -2.90039 -19.5\nc-3.5 -12.9004 -8.2998 -25.4004 -13.2998 -37.7998c-0.299805 -0.799805 -0.700195 -1.7002 -0.799805 -2.5c-0.400391 -2.5 1 -4 3.39941 -3.5c1.40039 0.299805 3 1.09961 4 2.09961c3.7002 3.60059 7.5 7.2002 10.6006 11.2002\nc10.6992 13.7998 17 29.5996 20.6992 46.5996c0.700195 3 1.2002 6.10059 1.7002 9.10059c0.200195 4.7002 0.200195 9.59961 0.200195 14.5z\" />\n    <glyph glyph-name=\"ethereum\" unicode=\"&#xf42e;\" horiz-adv-x=\"320\" \nd=\"M311.9 187.2l-151.9 -92.7998l-152 92.7998l152 260.8zM160 64.5996l152 92.8008l-152 -221.4l-152 221.4z\" />\n    <glyph glyph-name=\"korvue\" unicode=\"&#xf42f;\" horiz-adv-x=\"446\" \nd=\"M386.5 414c32.7002 0 59.5 -26.7998 59.5996 -59.5v-327c0 -32.7002 -26.5 -59.5 -59.5 -59.5h-327.1c-32.7002 0 -59.5 26.7998 -59.5 59.4004v327.1c0 32.7002 26.7998 59.5 59.5 59.5h327zM87.0996 327.2v-132h187.5l81.2002 132h-110.899l-61.8008 -116v116h-96z\nM248.9 55.0996h118.399l-88.5996 130.801h-191.5v-130.801h96v113.601z\" />\n    <glyph glyph-name=\"elementor\" unicode=\"&#xf430;\" \nd=\"M425.6 416c12.4004 0 22.4004 -10 22.4004 -22.4004v-403.199c0 -12.4004 -10 -22.4004 -22.4004 -22.4004h-403.199c-12.4004 0 -22.4004 10 -22.4004 22.4004v403.199c0 12.4004 10 22.4004 22.4004 22.4004h403.199zM164.3 92.5v199h-39.7998v-199h39.7998z\nM323.6 92.5v39.7998h-119.5v-39.7998h119.5zM323.6 172.1v39.8008h-119.5v-39.8008h119.5zM323.6 251.8v39.7998h-119.5v-39.7998h119.5z\" />\n    <glyph glyph-name=\"youtube-square\" unicode=\"&#xf431;\" \nd=\"M186.8 245.9l95.2002 -54.1006l-95.2002 -54.0996v108.2zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM406 191.7c0 0 0 59.5996 -7.59961 88.2002\nc-4.2002 15.7998 -16.5 28.1992 -32.2002 32.3994c-28.2998 7.7002 -142.2 7.7002 -142.2 7.7002s-113.9 0 -142.2 -7.7002c-15.7002 -4.2002 -28 -16.5996 -32.2002 -32.3994c-7.59961 -28.5 -7.59961 -88.2002 -7.59961 -88.2002s0 -59.6006 7.59961 -88.2002\nc4.2002 -15.7998 16.5 -27.7002 32.2002 -31.9004c28.2998 -7.59961 142.2 -7.59961 142.2 -7.59961s113.9 0 142.2 7.7002c15.7002 4.2002 28 16.0996 32.2002 31.8994c7.59961 28.5 7.59961 88.1006 7.59961 88.1006z\" />\n    <glyph glyph-name=\"flipboard\" unicode=\"&#xf44d;\" \nd=\"M0 416h448v-448h-448v448zM358.4 236.8v89.6006h-268.801v-268.801h89.6006v89.6006h89.5996v89.5996h89.6006z\" />\n    <glyph glyph-name=\"hips\" unicode=\"&#xf452;\" horiz-adv-x=\"640\" \nd=\"M251.6 290.4v-201.801c0 -1.89941 -0.899414 -2.7998 -2.7998 -2.7998h-40.8994c-1.60059 0 -2.7002 1.40039 -2.7002 2.7998v201.801c0 1.39941 1.09961 2.7998 2.7002 2.7998h40.8994c1.90039 0 2.7998 -0.900391 2.7998 -2.7998zM156.5 280\nc18.7002 -13.5 28 -31.9004 28 -55.2998v-136.101c0 -1.89941 -0.900391 -2.7998 -2.7002 -2.7998h-27.2998c-9.09961 0 -16.4004 7.2998 -16.4004 16.2998v122.601c0 0.899414 2.7002 27 -45.7998 27c-48.5996 0 -45.7998 -26.2002 -45.7998 -27v-136.101\nc0 -1.89941 -0.900391 -2.7998 -2.7998 -2.7998h-41c-1.7998 0 -2.7002 0.900391 -2.7002 2.7998v279.2c0 1.7998 0.900391 2.7002 2.7002 2.7002h40.8994c1.90039 0 2.80078 -0.900391 2.80078 -2.7002v-81.2002c15.1992 7.7002 31.6992 11.5 49.7998 11.4004\nc24 -0.0996094 44.2002 -6.2002 60.2998 -18zM634.9 169.9c5.5 -12.6006 6.59961 -25.6006 3.09961 -39.1006c-9.59961 -36.8994 -44.9004 -45.5 -45.5996 -45.7998c-10.5 -3.09961 -23.6006 -4.2998 -36.3008 -4.2998c-16.5996 0 -32.5996 2.7002 -48.1992 8.2002\nc-9.7002 3.39941 -14.6006 10.2998 -14.6006 20.6992v34.4004c0 2.09961 2.2998 3.7002 4.40039 2.2998c13.7002 -10.2002 34.0996 -19.0996 58.3994 -19.0996c23.3008 0 32.8008 4.5 36.5 13.5996c3 7.90039 -0.599609 16.1006 -12.1992 21.2002l-53.6006 23.5\nc-21.3994 9.40039 -33.7998 24 -37.2002 43.5996c-5.69922 33.7002 22.2002 53.3008 22.7002 53.7002c13.2002 9.60059 32 15.4004 58.5 15.4004c19 0 37.4004 -3.2998 55.1006 -9.90039c1.2998 -0.5 1.89941 -1.2998 1.89941 -2.59961v-44.7002\nc0 -2.09961 -2.2998 -3.40039 -4 -2.40039c-39.7002 20.7002 -76.5996 12.3008 -84 6.80078c-6.59961 -4.90039 -6 -12.5 2.60059 -16.1006l57.5996 -25.2998c16.5 -7.09961 28.0996 -18.4004 34.9004 -34.0996zM376.2 298.2c60.3994 0 108.7 -48.2998 108.6 -108.601\nc0 -60.1992 -48.2002 -108.699 -108.7 -108.699c-21.8994 0 -41.1992 6.39941 -57.6992 19.0996v-88.7998c0 -1.7998 -0.900391 -2.7002 -2.80078 -2.7002h-40.8994c-2.10059 0 -2.7002 1.90039 -2.7002 2.7002v183.5c0 83.3994 72.5 103.5 104.2 103.5zM376.2 127.3\nc34.8994 0 62.2998 27.9004 62.2002 62.2002c0 34.5996 -27.7002 62.2002 -62.2002 62.2002c-34.6006 0 -62.2002 -27.7002 -62.2002 -62.2002c0 -17.2002 6 -31.7998 18.2002 -44c12.0996 -12.0996 26.7998 -18.2002 44 -18.2002zM228.3 375.5\nc15.9004 0 28.9004 -12.7002 28.9004 -28.9004c0 -15.7998 -12.7002 -28.8994 -28.9004 -28.8994s-28.8994 13.2998 -28.8994 28.8994c0.0996094 16 13 28.9004 28.8994 28.9004z\" />\n    <glyph glyph-name=\"php\" unicode=\"&#xf457;\" horiz-adv-x=\"640\" \nd=\"M320 343.5c-171.3 0 -303.2 -72.2002 -303.2 -151.5s131.8 -151.5 303.2 -151.5c171.3 0 303.2 72.2002 303.2 151.5s-131.8 151.5 -303.2 151.5zM320 360.3c176.7 0 320 -75.2998 320 -168.3s-143.3 -168.3 -320 -168.3s-320 75.2998 -320 168.3s143.3 168.3 320 168.3z\nM218.2 205.5c7.39941 38.4004 -18.4004 34.2998 -56.4004 34.2998l-13.7002 -70.5996c34.3008 0 62.2002 -4.2002 70.1006 36.2998zM97.4004 97.7002l32.6992 168.7h70.7002c21.2002 0 36.7998 -5.5 46.5 -16.7002c18.6006 -21.4004 11.7998 -64.1006 -14.2998 -88.1006\nc-23.5996 -22.0996 -49.0996 -19.0996 -90.2002 -19.0996l-8.7002 -44.7998h-36.6992zM283.1 311.3h36.5l-8.69922 -44.7998c31.5 0 60.6992 2.2998 74.7998 -10.7002c14.7998 -13.5996 7.7002 -31 -8.2998 -113.1h-37c15.3994 79.3994 18.2998 86 12.6992 92\nc-5.39941 5.7998 -17.6992 4.59961 -47.3994 4.59961l-18.7998 -96.5996h-36.5zM505 205.5c7.40039 38.4004 -18.2002 34.2998 -56.4004 34.2998l-13.6992 -70.5996c33.3994 0 62.0996 -4.7998 70.0996 36.2998zM384.2 97.7002l32.7998 168.7h70.7002\nc21.2002 0 36.7998 -5.5 46.5 -16.7002c18.5996 -21.4004 11.7998 -64.1006 -14.2998 -88.1006c-23.1006 -21.5996 -47 -19.0996 -90.2002 -19.0996l-8.7002 -44.7998h-36.7998z\" />\n    <glyph glyph-name=\"quinscape\" unicode=\"&#xf459;\" horiz-adv-x=\"512\" \nd=\"M313.6 -26.5996c4.40039 -4.40039 8.10059 -9 13.3008 -12.5c-18.5029 -5.58008 -49.2031 -10.1074 -68.5283 -10.1074c-0.516602 0 -1.35547 0.00292969 -1.87207 0.00683594c-135 0 -244.5 109.5 -244.5 244.601c0 135.1 109.4 244.6 244.5 244.6\ns244.6 -109.5 244.6 -244.6c0 -35.3008 -6.89941 -67.4004 -20.2998 -97.7002c-3 5.7002 -7.2002 10.2002 -11.2002 15.2998c11.2002 93.5 -62.0996 176.6 -157 176.6c-87.2705 0 -158.1 -70.8281 -158.1 -158.1s70.8291 -158.1 158.1 -158.1h1zM313.5 -26.5\nl0.400391 -0.0996094zM391.9 142.4c54.7471 0 99.1992 -44.4326 99.1992 -99.1807v-0.0195312c0 -54.7588 -44.4414 -99.2002 -99.1992 -99.2002c-54.7588 0 -99.2002 44.4414 -99.2002 99.2002c0 54.7578 44.4414 99.2002 99.2002 99.2002z\" />\n    <glyph glyph-name=\"readme\" unicode=\"&#xf4d5;\" horiz-adv-x=\"576\" \nd=\"M528.3 401.5c26.4004 -0.200195 47.7002 -21.7002 47.7002 -48.0996v-245.7c0 -26.5 -21.5 -48 -48 -48h-89.7002c-102.1 0 -132.6 -24.4004 -147.3 -75c-0.799805 -2.7998 -5.2998 -2.7998 -6 0c-14.5996 50.5996 -45.0996 75 -147.3 75h-89.7002\nc-26.5 0 -48 21.5 -48 48v245.8c0 26.5 21.5 48 48 48h139.7c48.0996 0 89.7998 -33.2998 100.399 -80.2998c10.5 47 52.3008 80.2998 100.4 80.2998h139.8zM242 136.1h0.0996094v22.9004c0 2 -1.59961 3.5 -3.5 3.5h-160.399c-2 0 -3.5 -1.59961 -3.5 -3.5v-22.9004\nc0 -2 1.59961 -3.5 3.5 -3.5h160.3c2 0 3.5 1.60059 3.5 3.5zM242 197h0.0996094v22.9004c0 2 -1.59961 3.5 -3.5 3.5h-160.399c-2 0 -3.5 -1.60059 -3.5 -3.5v-22.9004c0 -2 1.59961 -3.5 3.5 -3.5h160.3c2 0 3.5 1.59961 3.5 3.5zM242 257.9h0.0996094v22.8994\nc0 2 -1.59961 3.5 -3.5 3.5h-160.399c-2 0 -3.5 -1.59961 -3.5 -3.5v-22.8994c0 -2 1.59961 -3.5 3.5 -3.5h160.3c2 0 3.5 1.59961 3.5 3.5zM501.3 136.2h0.100586v22.8994c0 2 -1.60059 3.5 -3.5 3.5h-160.4c-2 0 -3.5 -1.59961 -3.5 -3.5v-22.8994\nc0 -2 1.59961 -3.5 3.5 -3.5h160.3c2 0 3.5 1.59961 3.5 3.5zM501.3 197.1h0.100586v22.9004c0 2 -1.60059 3.5 -3.5 3.5h-160.4c-2 0 -3.5 -1.59961 -3.5 -3.5v-22.9004c0 -2 1.59961 -3.5 3.5 -3.5h160.3c2 0 3.5 1.60059 3.5 3.5zM501.3 258h0.100586v22.7998\nc0 2 -1.60059 3.5 -3.5 3.5h-160.4c-2 0 -3.5 -1.59961 -3.5 -3.5v-22.7998c0 -2 1.59961 -3.5 3.5 -3.5h160.3c2 0 3.5 1.59961 3.5 3.5z\" />\n    <glyph glyph-name=\"java\" unicode=\"&#xf4e4;\" horiz-adv-x=\"384\" \nd=\"M277.74 135.1c-94.5 -24.8994 -277 -13.2998 -224.5 12.1006c44.5 21.3994 80.5996 19 80.5996 19s-93.0996 -22.1006 -33 -30.1006c25.4004 -3.39941 76 -2.59961 123.101 1.30078c38.5 3.19922 77.1992 10.1992 77.1992 10.1992s-13.5996 -5.7998 -23.3994 -12.5z\nM192.34 167.2c-48.5 43.7998 -84.0996 82.2998 -60.2002 118.2c35.1006 52.5 132.2 78.0996 110.7 162.6c0 0 53.1602 -53.2002 -50.5 -135c-83.0996 -65.5996 -19 -103.1 0 -145.8zM306.94 343.4c-111.601 -64.7002 -91 -83.5 -64.1006 -121.301\nc28.7998 -40.5 -33.8994 -72.8994 -33.8994 -72.8994s31.1992 25.5996 6.5 54c-83.7002 96.3994 91.5996 140.2 91.5 140.2zM300.84 72.9004c96.1006 49.8994 51.6006 97.8994 20.6006 91.3994c-3.10352 -0.581055 -8.03125 -1.92578 -11 -3\nc1.71973 2.44629 5.39258 5.26855 8.19922 6.2998c61.3008 21.6006 108.5 -63.5996 -19.7998 -97.2998c0.649414 0.642578 1.5459 1.80762 2 2.60059zM348 10.5996c53 -23.8994 -115.16 -72 -319.4 -38.7998c-74.8994 12.1006 36.1006 54.5 56.4004 40.2002\nc0 0 -6.5 0.400391 -17.7002 -2c-10.7998 -2.2998 -45.0996 -13.4004 -26.7998 -21.2998c50.7998 -22.1006 233.7 -16.7998 291.6 0.700195c30.4004 9.2998 15.9004 21.1992 15.9004 21.1992zM124.44 52c0 0 -19.6006 -11.4004 13.8994 -15.2002\nc40.6006 -4.59961 61.2998 -4 106 4.5c7.46094 -4.46777 20.0938 -10.6504 28.2002 -13.7998c-100.2 -42.9004 -226.8 2.5 -148.1 24.5zM304.24 -45.2002c69.7998 13.2002 76.2002 29.7002 76.2002 29.7002c-3.30078 -43.5996 -144.9 -52.7998 -237.101 -46.9004\nc-60.5996 3.90039 -72.3994 13.7002 -72.3994 13.6006c57.5 -9.5 154.6 -11.2002 233.3 3.59961zM260.64 95c5.08594 -4.74902 14.5391 -10.4834 21.1006 -12.7998c-121.3 -35.5 -256.3 -2.90039 -169.5 25.8994c0 0 -21.9004 -16.1992 11.5996 -19.6992\nc43.2998 -4.5 77.6006 -4.80078 136.8 6.59961z\" />\n    <glyph glyph-name=\"pied-piper-hat\" unicode=\"&#xf4e5;\" horiz-adv-x=\"640\" \nd=\"M640 423.1c-80.7998 -53.5996 -89.4004 -92.5 -96.4004 -104.399c-6.69922 -12.2002 -11.6992 -60.2998 -23.2998 -83.6006c-11.7002 -23.5996 -54.2002 -42.1992 -66.0996 -50c-11.7002 -7.7998 -28.2998 -38.0996 -41.9004 -64.1992\nc-108.1 4.39941 -167.399 -38.8008 -259.2 -93.6006c29.4004 9.7002 43.3008 16.7002 43.3008 16.7002c94.1992 36 139.3 68.2998 281.1 49.2002c1.09961 0 1.90039 -0.600586 2.7998 -0.799805c3.90039 -2.2002 5.2998 -6.90039 3.10059 -10.8008l-53.9004 -95.7998\nc-2.5 -4.7002 -7.7998 -7.2002 -13.0996 -6.09961c-126.801 23.7998 -226.9 -17.2998 -318.9 -18.6006c-73.4004 -1.09961 -97.5 33.5 -97.5 35.1006c0 1.09961 0.599609 1.7002 1.7002 1.7002c0 0 38.2998 0 103.1 15.2998c73.6006 140.3 139.2 189.399 210.601 189.399\nc0 0 71.6992 0 90.5996 -61.8994c22.7998 39.7002 28.2998 49.2002 28.2998 49.2002c5.2998 9.39941 35 77.1992 86.4004 141.399c51.5 64 90.3994 79.9004 119.3 91.7998z\" />\n    <glyph glyph-name=\"creative-commons-by\" unicode=\"&#xf4e7;\" horiz-adv-x=\"496\" \nd=\"M314.9 253.6v-101.399h-28.3008v-120.5h-77.0996v120.399h-28.2998v101.5c0 4.40039 1.59961 8.2002 4.59961 11.3008c3.10059 3.09961 6.90039 4.69922 11.2998 4.69922h101.9c4.09961 0 7.7998 -1.59961 11.0996 -4.69922\nc3.10059 -3.2002 4.80078 -6.90039 4.80078 -11.3008zM213.4 317.3c0 23.2998 11.5 35 34.5 35s34.5 -11.7002 34.5 -35c0 -23 -11.5 -34.5 -34.5 -34.5s-34.5 11.5 -34.5 34.5zM247.6 440c141.801 0 248.4 -110.1 248.4 -248c0 -147.1 -118.5 -248 -248.4 -248\nc-134 0 -247.6 109.5 -247.6 248c0 132.9 104.7 248 247.6 248zM248.4 395.3c-118.2 0 -203.7 -97.8994 -203.7 -203.3c0 -109.8 91.2002 -202.8 203.7 -202.8c103.199 0 202.8 81.0996 202.8 202.8c0.0996094 113.8 -90.2002 203.3 -202.8 203.3z\" />\n    <glyph glyph-name=\"creative-commons-nc\" unicode=\"&#xf4e8;\" horiz-adv-x=\"496\" \nd=\"M247.6 440c139.801 0 248.4 -107.9 248.4 -248c0 -147.2 -118.5 -248 -248.4 -248c-134.5 0 -247.6 110.8 -247.6 248c0 132.9 104.7 248 247.6 248zM55.7998 258.9c-7.39941 -20.4004 -11.0996 -42.7002 -11.0996 -66.9004c0 -110.9 92.0996 -202.4 203.7 -202.4\nc122.399 0 177.199 101.801 178.5 104.101l-93.4004 41.5996c-7.7002 -37.0996 -41.2002 -53 -68.2002 -55.3994v-38.1006h-28.7998v38.2002c-27.5 0.299805 -52.5996 10.2002 -75.2998 29.7002l34.0996 34.5c31.7002 -29.4004 86.4004 -31.7998 86.4004 2.2002\nc0 6.19922 -2.2002 11.1992 -6.60059 15.0996c-14.1992 6 -1.7998 0.0996094 -219.3 97.4004zM248.4 395.7c-38.4004 0 -112.4 -8.7002 -170.5 -93l94.7998 -42.5c10 31.2998 40.3994 42.8994 63.7998 44.2998v38.0996h28.7998v-38.0996\nc22.7002 -1.2002 43.4004 -8.90039 62 -23l-32.2998 -33.2002c-42.7002 29.9004 -83.5 8 -70 -11.0996c53.4004 -24.1006 43.7998 -19.7998 93 -41.6006l127.1 -56.6992c4.10059 17.3994 6.2002 35.0996 6.2002 53.0996c0 57 -19.7998 105 -59.2998 143.9\nc-39.2998 39.8994 -87.2002 59.7998 -143.6 59.7998z\" />\n    <glyph glyph-name=\"creative-commons-nc-eu\" unicode=\"&#xf4e9;\" horiz-adv-x=\"496\" \nd=\"M247.7 440c140.7 0 248.3 -109 248.3 -248c0 -147.1 -118.1 -248 -248.3 -248c-136 0 -247.7 111.7 -247.7 248c0 131.2 103.6 248 247.7 248zM248.3 -10.7002c122.601 0 177.3 102.2 178.8 104.3l-128.3 56.8008h-90.2998\nc9.2002 -39.3008 39.0996 -50.2002 67.2998 -50.2002c19.1006 0 38.6006 6.2002 47.2998 10.7998l10 -46.0996c-14.1992 -7.90039 -38.1992 -15.8008 -64.7998 -15.8008c-57.3994 0 -113.2 34.3008 -124.6 101.301h-27v29.5h22.7998\nc0 16.2998 0.400391 13.2998 0.400391 19.5h-23.3008v29.5h4.7002l-65.7002 29.0996c-7.19922 -20.7998 -10.8994 -42.7998 -10.8994 -66c0 -110.2 91.5996 -202.7 203.6 -202.7zM231.6 179.9l-0.5 0.399414l0.900391 -0.399414h-0.400391zM308.8 199.4l136.101 -60.5\nc4.19922 16.5996 6.2998 34.1992 6.2998 52.8994c0 113.2 -90 203.4 -203 203.4c-13 0 -106.101 3.2002 -170.7 -93.6006l81.5996 -36.0996c4.10059 7.2002 8.60059 14 13.9004 20.0996c23.7002 26.5 56.9004 42.3008 95.9004 42.3008\nc25.2998 0 47.2998 -5.80078 62.2998 -12.4004l-11.6006 -47.2998c-10.7998 4.59961 -27.7998 10 -46.0996 10c-20 0 -38.2002 -6.60059 -51.0996 -22.4004c-3.40039 -3.7998 -6.30078 -8.7998 -8.80078 -14.2998l28.6006 -12.5996h70.2998v-29.5h-3.7002z\" />\n    <glyph glyph-name=\"creative-commons-nc-jp\" unicode=\"&#xf4ea;\" horiz-adv-x=\"496\" \nd=\"M247.7 440c140.8 0 248.3 -109.2 248.3 -248c0 -147.2 -118.1 -248 -248.3 -248c-135.9 0 -247.7 111.6 -247.7 248c0 131.2 103.6 248 247.7 248zM248.3 -10.7002c118.101 0 173.7 96.1006 175.2 98.2998l-81 36.1006v-35.7002h-64.2002v-56h-61.7002v56h-63.7998\nv38.7002h63.7998v18.7002l-5.69922 11.7998h-58.1006v38.5996h27.9004l-127 56.5c-6 -19.0996 -9 -39.2002 -9 -60.2998c0 -110.2 91.5996 -202.7 203.6 -202.7zM335.9 126.6l-54.7002 24.3008l-2.90039 -5.60059v-18.7002h57.6006zM342.4 178l101 -45.0996\nc5.19922 18.3994 7.89941 38 7.89941 59c0 113.399 -90.2002 203.399 -203 203.399c-91.0996 0 -145.899 -54 -173.7 -98.0996l81.9004 -36.5l-27.2998 51h65.7998l39.5996 -85.7002l23 -10.2002l43.4004 96h65.7998l-63 -116h38.6006v-17.7998z\" />\n    <glyph glyph-name=\"creative-commons-nd\" unicode=\"&#xf4eb;\" horiz-adv-x=\"496\" \nd=\"M247.6 440c141.801 0 248.4 -110.1 248.4 -248c0 -147.1 -118.5 -248 -248.4 -248c-134 0 -247.6 109.5 -247.6 248c0 132.9 104.7 248 247.6 248zM248.4 395.3c-118.2 0 -203.7 -97.8994 -203.7 -203.3c0 -109.8 91.2002 -202.8 203.7 -202.8\nc103.199 0 202.8 81.0996 202.8 202.8c0.0996094 113.8 -90.2002 203.3 -202.8 203.3zM342.4 251v-42.5h-180.301v42.5h180.301zM342.4 171.2v-42.5h-180.301v42.5h180.301z\" />\n    <glyph glyph-name=\"creative-commons-pd\" unicode=\"&#xf4ec;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111.1 248 -248c0 -137 -111 -248 -248 -248s-248 111 -248 248c0 136.9 111 248 248 248zM248 -9.5c76.0996 0 142.4 42.4004 176.7 104.8c-1.40039 0.299805 12.5 -5.7998 -217.9 96.7998c0.200195 -32 16.1006 -71.8994 53.9004 -71.8994\nc18.7002 0 30.7998 10.3994 36.2998 16.7002l36.0996 -43.9004c-25.8994 -22.7998 -56.5 -29.5 -79.3994 -29.5c-46.5 0 -120.4 27.9004 -120.4 126.9c0 11.3994 1.2002 22.3994 3.2998 32.8994l-78.7998 35.1006c-45.5996 -129.9 51 -267.9 190.2 -267.9zM442.2 140.5\nc0.200195 -0.200195 0.299805 -0.299805 0.599609 -0.400391c4.40039 16.6006 6.7998 34 6.7998 52c0 111.101 -90.3994 201.5 -201.5 201.5c-70.3994 0 -132.399 -36.2998 -168.5 -91.1992l74.9004 -33.4004c19.7998 31.0996 53.2998 51.5996 100.7 51.5996\nc20.0996 0 51 -4.19922 78.0996 -27.5l-40.3994 -41.5996c-19.8008 19.7002 -55.9004 23 -74.7002 -11z\" />\n    <glyph glyph-name=\"creative-commons-pd-alt\" unicode=\"&#xf4ed;\" horiz-adv-x=\"496\" \nd=\"M247.6 440c141.801 0 248.4 -110.1 248.4 -248c0 -147.1 -118.5 -248 -248.4 -248c-134 0 -247.6 109.5 -247.6 248c0 132.9 104.7 248 247.6 248zM248.4 -10.7998c103.199 0 202.8 81.0996 202.8 202.8c0.0996094 113.8 -90.2002 203.3 -202.8 203.3\nc-118.2 0 -203.7 -97.8994 -203.7 -203.3c0 -109.8 91.2002 -202.8 203.7 -202.8zM316.7 262c21.3994 0 70 -5.2002 70 -68.5996c0 -63.5 -48.6006 -68.6006 -70 -68.6006h-53.2002v137.2h53.2002zM317.5 153.5c24 0 34.5 15.2998 34.5 39.9004\nc0 42 -31.2002 39.8994 -35 39.8994l-19.4004 -0.0996094v-79.7002h19.9004zM203.7 262c33.7002 0 50.5 -15.5 50.5 -46.5c0 -9 -3 -46.5 -57.1006 -46.5h-27v-44.2998h-34.5996v137.3h68.2002zM198.8 194.7c27.9004 0 30 41.5996 -0.899414 41.5996h-28.3008v-41.5996\nh29.2002z\" />\n    <glyph glyph-name=\"creative-commons-remix\" unicode=\"&#xf4ee;\" horiz-adv-x=\"496\" \nd=\"M247.6 440c141.801 0 248.4 -110.1 248.4 -248c0 -147.1 -118.5 -248 -248.4 -248c-134 0 -247.6 109.5 -247.6 248c0 132.9 104.7 248 247.6 248zM248.4 395.3c-118.2 0 -203.7 -97.8994 -203.7 -203.3c0 -109.8 91.2002 -202.8 203.7 -202.8\nc103.199 0 202.8 81.0996 202.8 202.8c0.0996094 113.8 -90.2002 203.3 -202.8 203.3zM410.1 187.6l4.90039 -2.19922v-70c-7.2002 -3.60059 -63.4004 -27.5 -67.2998 -28.8008c-6.5 1.80078 -113.7 46.8008 -137.3 56.2002l-64.2002 -26.5996l-63.2998 27.5v63.7998\nl59.2998 24.7998c-0.700195 0.700195 -0.400391 -5 -0.400391 70.4004l67.2998 29.7002l151.9 -62.9004v-61.5996zM339.7 106.1v43.8008h-0.400391v1.7998l-113.8 46.5v-45.2002l113.8 -46.9004v0.400391zM347.2 163.7l39.8994 16.3994l-36.7998 15.5l-39 -16.3994z\nM399.5 125.6v43l-44.2998 -18.5996v-43.4004z\" />\n    <glyph glyph-name=\"creative-commons-sa\" unicode=\"&#xf4ef;\" horiz-adv-x=\"496\" \nd=\"M247.6 440c141.801 0 248.4 -110.1 248.4 -248c0 -147.1 -118.5 -248 -248.4 -248c-134 0 -247.6 109.5 -247.6 248c0 132.9 104.7 248 247.6 248zM248.4 395.3c-118.2 0 -203.7 -97.8994 -203.7 -203.3c0 -109.8 91.2002 -202.8 203.7 -202.8\nc103.199 0 202.8 81.0996 202.8 202.8c0.0996094 113.8 -90.2002 203.3 -202.8 203.3zM137.7 227c13 83.9004 80.5 95.7002 108.899 95.7002c99.8008 0 127.5 -82.5 127.5 -134.2c0 -63.5996 -41 -132.9 -128.899 -132.9c-38.9004 0 -99.1006 20 -109.4 97h62.5\nc1.5 -30.0996 19.6006 -45.1992 54.5 -45.1992c23.2998 0 58 18.1992 58 82.7998c0 82.5 -49.0996 80.5996 -56.7002 80.5996c-33.0996 0 -51.6992 -14.5996 -55.7998 -43.7998h18.2002l-49.2002 -49.2002l-49 49.2002h19.4004z\" />\n    <glyph glyph-name=\"creative-commons-sampling\" unicode=\"&#xf4f0;\" horiz-adv-x=\"496\" \nd=\"M247.6 440c141.801 0 248.4 -110.1 248.4 -248c0 -147.1 -118.5 -248 -248.4 -248c-134 0 -247.6 109.5 -247.6 248c0 132.9 104.7 248 247.6 248zM248.4 395.3c-118.2 0 -203.7 -97.8994 -203.7 -203.3c0 -109.8 91.2002 -202.8 203.7 -202.8\nc103.199 0 202.8 81.0996 202.8 202.8c0.0996094 113.8 -90.2002 203.3 -202.8 203.3zM252 342.1c2.7998 0.300781 11.5 -1 11.5 -11.5l6.59961 -107.199l4.90039 59.2998c0 6 4.7002 10.5996 10.5996 10.5996c5.90039 0 10.6006 -4.7002 10.6006 -10.5996\nc0 -2.5 -0.5 5.7002 5.7002 -81.5l5.7998 64.2002c0.299805 2.89941 2.89941 9.2998 10.2002 9.2998c3.7998 0 9.89941 -2.2998 10.5996 -8.90039l11.5 -96.5l5.2998 12.7998c1.7998 4.40039 5.2002 6.60059 10.2002 6.60059h58v-21.2998h-50.9004l-18.1992 -44.3008\nc-3.90039 -9.89941 -19.5 -9.09961 -20.8008 3.10059l-4 31.8994l-7.5 -92.5996c-0.299805 -3 -3 -9.2998 -10.1992 -9.2998c-3 0 -9.80078 2.09961 -10.6006 9.2998c0 1.90039 0.600586 -5.7998 -6.2002 77.9004l-5.2998 -72.2002\nc-1.09961 -4.7998 -4.7998 -9.2998 -10.5996 -9.2998c-2.90039 0 -9.7998 2 -10.6006 9.2998c0 1.89941 0.5 -6.7002 -5.7998 87.7002l-5.7998 -94.8008c0 -6.2998 -3.59961 -12.3994 -10.5996 -12.3994c-5.2002 0 -10.6006 4.09961 -10.6006 12l-5.7998 87.7002\nc-5.7998 -92.5 -5.2998 -84 -5.2998 -85.9004c-1.10059 -4.7998 -4.7998 -9.2998 -10.6006 -9.2998c-3 0 -9.7998 2.09961 -10.5996 9.2998c0 0.700195 -0.400391 1.09961 -0.400391 2.59961l-6.19922 88.6006l-4.90039 -56.7002\nc-0.700195 -6.5 -6.7002 -9.2998 -10.5996 -9.2998c-5.80078 0 -9.60059 4.09961 -10.6006 8.89941l-11.0996 76.4004c-2 -4 -3.5 -8.40039 -11.1006 -8.40039h-51.3994v21.3008h44.7998l13.7002 27.8994c4.39941 9.90039 18.2002 7.2002 19.8994 -2.7002l3.10059 -20.3994\nl8.39941 97.8994c0 6 4.80078 10.6006 10.6006 10.6006c0.5 0 10.5996 0.200195 10.5996 -12.4004l4.90039 -69.0996l6.59961 92.5996c0 10.1006 9.5 10.6006 10.2002 10.6006c0.599609 0 10.5996 -0.700195 10.5996 -10.6006l5.30078 -80.5996l6.19922 97.8994\nc0.100586 1.10059 -0.599609 10.3008 9.90039 11.5z\" />\n    <glyph glyph-name=\"creative-commons-sampling-plus\" unicode=\"&#xf4f1;\" horiz-adv-x=\"496\" \nd=\"M247.6 440c141.801 0 248.4 -110.1 248.4 -248c0 -147.1 -118.5 -248 -248.4 -248c-134 0 -247.6 109.5 -247.6 248c0 132.9 104.7 248 247.6 248zM248.4 395.3c-118.2 0 -203.7 -97.8994 -203.7 -203.3c0 -109.8 91.2002 -202.8 203.7 -202.8\nc103.199 0 202.8 81.0996 202.8 202.8c0.0996094 113.8 -90.2002 203.3 -202.8 203.3zM355.4 189.7l58.3994 0.299805v-23.2002h-50.5l-18 -43.3994c-4.59961 -11 -20.8994 -8.7002 -22.2998 3.09961l-2.7002 22.2998l-6.7998 -83\nc-1.09961 -14.0996 -22 -14.2002 -23.0996 0.100586l-4.90039 64.3994l-4.59961 -58.5996c-1.10059 -14.2998 -22.3008 -14.1006 -23.2002 0.200195l-4.5 71.7998l-4.90039 -80.5c-0.899414 -14.5 -22.2998 -14.5 -23.2002 -0.100586l-4.7998 73.3008l-4.59961 -70.4004\nc-0.900391 -14.2998 -22.1006 -14.5 -23.2002 -0.0996094l-5.7002 78.2998l-3.7998 -43.6006c-1.2002 -13.6992 -21.0996 -14.1992 -23.0996 -0.699219l-10.7002 73.0996c-2 -3.90039 -6 -6.40039 -10.4004 -6.40039h-51.2998v23.2002h43.9004l13.1992 27.7002\nc4.90039 10.2998 20.3008 8.09961 22 -3.2998l1.80078 -12.2002l7.69922 89.7998c1.2002 14.1006 22.1006 14.1006 23.2002 -0.200195l4.10059 -57l5.2998 80.2002c1 14.4004 22.2998 14.4004 23.2002 0l4.2998 -66.2998l5.09961 83.7002\nc0.900391 14.3994 22.2998 14.5 23.2002 0l5.90039 -94.2998l3.5 44.8994c1.09961 14.2002 22.0996 14.2998 23.1992 0l5.2002 -68.7998l4.2998 51.4004c1.10059 13.7998 21.4004 14.2998 23.1006 0.399414l11 -92.7998l4 9.5c1.7002 4.40039 6 7.2002 10.7002 7.2002z\nM277.4 184.5c4.09961 0 7.5 3.40039 7.5 7.5c0 4.2002 -3.40039 7.5 -7.5 7.5h-21.9004v21.9004c0 4.19922 -3.40039 7.5 -7.5 7.5s-7.5 -3.40039 -7.5 -7.5v-21.9004h-21.9004c-4.09961 0 -7.5 -3.40039 -7.5 -7.5c0 -4.2002 3.40039 -7.5 7.5 -7.5h21.9004v-21.9004\nc0 -4.19922 3.40039 -7.5 7.5 -7.5c4.2002 0 7.5 3.40039 7.5 7.5v21.9004h21.9004z\" />\n    <glyph glyph-name=\"creative-commons-share\" unicode=\"&#xf4f2;\" horiz-adv-x=\"496\" \nd=\"M247.6 440c141.801 0 248.4 -110.1 248.4 -248c0 -147.1 -118.5 -248 -248.4 -248c-134 0 -247.6 109.5 -247.6 248c0 132.9 104.7 248 247.6 248zM248.4 395.3c-118.2 0 -203.7 -97.8994 -203.7 -203.3c0 -109.8 91.2002 -202.8 203.7 -202.8\nc103.199 0 202.8 81.0996 202.8 202.8c0.0996094 113.8 -90.2002 203.3 -202.8 203.3zM349.4 262.9c7.7998 0 13.6992 -6.10059 13.6992 -13.7002v-182.5c0 -7.7002 -6.09961 -13.7002 -13.6992 -13.7002h-135.101c-7.7002 0 -13.7002 6 -13.7002 13.7002v54h-54\nc-7.7998 0 -13.6992 6 -13.6992 13.7002v182.5c0 8.19922 6.59961 12.6992 12.3994 13.6992h136.4c7.7002 0 13.7002 -6 13.7002 -13.6992v-54h54zM159.9 147.7h40.6992v101.399c0 7.40039 5.80078 12.6006 12 13.7002h55.8008v40.2998h-108.5v-155.399zM336.1 235.8h-108.5\nv-155.399h108.5v155.399z\" />\n    <glyph glyph-name=\"creative-commons-zero\" unicode=\"&#xf4f3;\" horiz-adv-x=\"496\" \nd=\"M247.6 440c141.801 0 248.4 -110.1 248.4 -248c0 -147.1 -118.5 -248 -248.4 -248c-134 0 -247.6 109.5 -247.6 248c0 132.9 104.7 248 247.6 248zM248.4 395.3c-118.2 0 -203.7 -97.8994 -203.7 -203.3c0 -109.8 91.2002 -202.8 203.7 -202.8\nc103.199 0 202.8 81.0996 202.8 202.8c0.0996094 113.8 -90.2002 203.3 -202.8 203.3zM248 334.8c81.9004 0 102.5 -77.2998 102.5 -142.8s-20.5996 -142.8 -102.5 -142.8s-102.5 77.2998 -102.5 142.8s20.5996 142.8 102.5 142.8zM248 280.9\nc-42.0996 0 -44.0996 -60.1006 -44.0996 -88.9004c0 -9.2998 0.199219 -21.7002 1.89941 -34.4004l54.5 100.2c5.7002 9.7998 2.7998 16.7998 -3.09961 21.9004c-2.7998 0.700195 -5.90039 1.2002 -9.2002 1.2002zM288.8 234.7l-60.8994 -105.2\nc-12.5 -18.7002 6.59961 -26.4004 20.0996 -26.4004c42.0996 0 44.0996 60 44.0996 88.9004c0 11.2998 -0.399414 27.2998 -3.2998 42.7002z\" />\n    <glyph glyph-name=\"ebay\" unicode=\"&#xf4f4;\" horiz-adv-x=\"640\" \nd=\"M606 258.5h34l-99.2002 -194.8h-35.8994l28.5 54.0996l-61.5 116.101c3.09961 -6.60059 4.7998 -14.5 4.7998 -23.8008v-65.5996c0 -9.2998 0.299805 -18.5996 1 -26.7998h-29.7998c-0.800781 6.89941 -1.10059 13.5996 -1.10059 20.2002\nc-16.0996 -19.8008 -35.2998 -25.5 -61.8994 -25.5c-39.5 0 -60.6006 20.8994 -60.6006 45c0 3.19922 0.200195 6.19922 0.700195 9c-8.40039 -32.3008 -36.4004 -54.2002 -73.2998 -54.2002c-23.2998 0 -45.1006 8.2998 -58.7002 24.8994\nc0 -6.59961 -0.400391 -13.1992 -1.09961 -19.5h-31.5c0.5 10.2002 1.09961 22.8008 1.09961 33.1006v169.5h32.0996v-80.6006c15.7002 18.7002 37.4004 24.2002 58.7002 24.2002c35.7002 0 75.4004 -24.0996 75.4004 -76.2002c0 -5.59961 -0.5 -11 -1.5 -16.1992\nc7.09961 24.3994 34.2998 33.5 76.7002 34.3994c13.6992 0.299805 29 0.400391 41.6992 0.400391v3.39941c0 23.4004 -15 33 -41 33c-19.2998 0 -33.5996 -8 -35 -21.7998h-33.6992c3.59961 34.4004 39.6992 43.1006 71.5 43.1006c27.3994 0 51.7998 -7 63.2998 -26\nl-10.9004 20.5996h37.5l54.9004 -109.9zM243.7 134.2c29.7998 0 50.2002 21.5 50.2002 53.7998c0 32.4004 -20.4004 53.7998 -50.2002 53.7998c-29.6006 0 -50.2002 -21.3994 -50.2002 -53.7998c0 -32.2998 20.5996 -53.7998 50.2002 -53.7998zM444.6 181.5v3.2998\nc-11.7998 0 -26.2998 -0.0996094 -39.3994 -0.599609c-29.1006 -0.900391 -47.2002 -6.2002 -47.2002 -25.2998c0 -12.4004 9.90039 -25.8008 35 -25.8008c33.7002 0 51.5996 18.4004 51.5996 48.4004zM32.7002 179.9c3.5 -58.3008 79.2002 -57.4004 91.2002 -21.6006\nh33.0996c-6.40039 -34.3994 -43 -46.0996 -74.4004 -46.0996c-57.1992 0 -82.5 31.5 -82.5 74c0 46.7998 26.2002 77.5996 83 77.5996c45.3008 0 78.4004 -23.7002 78.4004 -75.3994v-8.5h-128.8zM127.7 201.3c-2.2998 54.7002 -87.5 56.6006 -94.4004 0h94.4004z\" />\n    <glyph glyph-name=\"keybase\" unicode=\"&#xf4f5;\" \nd=\"M286.17 29c9.93652 0 18 -8.06445 18 -18s-8.06348 -18 -18 -18c-9.93555 0 -18 8.06445 -18 18s8.06445 18 18 18zM398.09 176.6c22.9102 -33.46 35.9102 -72.3398 35.9102 -110.92c0 -31.6797 -5 -60.6797 -14.5996 -86.2295\nc-3.04004 -8.0498 -10.9502 -12.7197 -18.3701 -11.1504c-6.83984 1.24023 -11.1201 9.28027 -8.60059 15.7402c11.1904 28.71 14.8799 58.3398 14.8799 81.6396c-0.0517578 7.91797 -1.30566 20.6543 -2.7998 28.4307\nc-0.649414 -1.06055 -1.12988 -2.2207 -1.84961 -3.2207c-17.29 -24.5293 -50.54 -33.8896 -84.7402 -23.8398c-78.8701 23.1699 -178.02 3.81055 -236.25 -38.5898l24.6602 74.1104l-46.8203 -59.8301c2.04297 -15.3486 9.10352 -39.1504 15.7598 -53.1299\nc6.25 -13.1904 0.460938 -18.2402 -3.75 -20.1104c-4.76953 -2.12012 -13.8594 -2.7998 -19.6396 7.33008c-5.43652 9.81641 -11.96 26.6436 -14.5596 37.5596l-23.3203 -29.7998v33.6406c0 55.7695 0 125.109 62.6504 188.409c11.4258 11.5684 32.1631 27.4902 46.29 35.54\nl-8.93066 0.540039c-27.8799 1.64062 -49.2402 24.8506 -47.6299 51.8506l2.36035 36.6797c0 -6.24023 0.139648 45.8799 50.75 45.8799c2.05957 0 -0.470703 0.120117 41.0596 -2.33008c2.31641 -0.15625 6.03027 -0.71582 8.29004 -1.25\nc7.41992 11.3398 15.6504 22.8301 24.3398 34.8906l5.48047 7.55957l22.8994 -13.5195c-11.29 -24 -10 -33 -9.39941 -35c9.08008 0.229492 20 -1.6709 32.4102 -5.77051c29.6523 -9.84375 53.7188 -43.1914 53.7188 -74.4355\nc0 -8.5127 -2.61621 -21.8154 -5.83887 -29.6943c6.18652 -2.13965 12.3135 -4.56348 18.3799 -7.27051c47.8896 -21.2598 77.7598 -59.0898 87.2598 -73.71zM142.37 319.42c1.55664 5.42773 4.69336 14.0156 7 19.1699l-29.1104 1.73047\nc0.610352 -0.0507812 -12.2598 0.849609 -13.2598 -11.3203l-2.41016 -36.6602c-0.00585938 -0.143555 -0.0107422 -0.376953 -0.0107422 -0.520508c0 -6.50293 5.27344 -12 11.7705 -12.2695l22.3809 -1.33984c-0.380859 3.10645 -0.689453 8.16797 -0.689453 11.2969\nc0 2.28809 0.165039 5.99414 0.369141 8.27344l-13.1299 0.779297l1.38965 21.79zM290.79 147.24c2.06152 1.58789 3.73438 4.9873 3.73438 7.58887c0 1.80273 -0.893555 4.42383 -1.99414 5.85059l-81.0898 96.3203c-1.71484 1.99023 -5.23828 3.60547 -7.86523 3.60547\nc-1.99023 0 -4.87305 -1.00098 -6.43555 -2.23535c-2.05957 -1.58398 -3.73242 -4.97949 -3.73242 -7.57812c0 -1.7998 0.892578 -4.41699 1.99316 -5.8418c0.0898438 -0.140625 18.5996 -22.1406 18.5996 -22.1406l-16.9102 -13.29\nc-1.59473 -1.22266 -2.88867 -3.8457 -2.88867 -5.85547c0 -1.37988 0.680664 -3.38867 1.51855 -4.48438c0.0800781 -0.109375 2.52246 -3.07324 3.7998 -4.5293c1.27832 -1.45703 3.8877 -2.63867 5.8252 -2.63867c1.4707 0 3.60547 0.734375 4.76562 1.63867\nl17.0898 13.4492l14.1396 -16.7393l-34.5703 -27.1807c-1.58398 -1.22266 -2.86914 -3.83984 -2.86914 -5.84082c0 -1.38574 0.685547 -3.40039 1.5293 -4.49902l15.7803 -18.6396c1.33594 -1.55176 4.08203 -2.81055 6.12988 -2.81055\nc1.54492 0 3.78516 0.775391 5 1.73047l34.4199 27l9.68066 -11.4902c1.7334 -1.98242 5.27832 -3.5918 7.91211 -3.5918c1.98438 0 4.86816 0.986328 6.4375 2.20215zM187.44 29c9.93555 0 18 -8.06445 18 -18s-8.06445 -18 -18 -18c-9.93652 0 -18 8.06445 -18 18\ns8.06348 18 18 18z\" />\n    <glyph glyph-name=\"mastodon\" unicode=\"&#xf4f6;\" \nd=\"M433 268.89c0 0 0.799805 -71.6992 -9 -121.5c-6.23047 -31.5996 -55.1104 -66.1992 -111.23 -72.8994c-20.0996 -2.40039 -93.1191 -14.2002 -178.75 6.7002v-0.339844c0 -3.75977 0.40332 -9.83496 0.900391 -13.5605c6.62988 -49.5996 49.2197 -52.5996 89.6299 -54\nc40.8105 -1.2998 77.1201 10.0996 77.1201 10.0996l1.7002 -36.8994s-28.5098 -15.2998 -79.3203 -18.1006c-28.0098 -1.59961 -62.8193 0.700195 -103.33 11.4004c-112.229 29.7002 -105.63 173.4 -105.63 289.1c0 97.2002 63.7197 125.7 63.7197 125.7\nc61.9209 28.4004 227.96 28.7002 290.48 0c0 0 63.71 -28.5 63.71 -125.7zM357.88 143.69c0 122 5.29004 147.71 -18.4199 175.01c-25.71 28.7002 -79.7197 31 -103.83 -6.10059l-11.5996 -19.5l-11.6006 19.5c-24.0098 36.9004 -77.9297 35 -103.83 6.10059\nc-23.6094 -27.1006 -18.4092 -52.9004 -18.4092 -175h46.7295v114.2c0 49.6992 64 51.5996 64 -6.90039v-62.5098h46.3301v62.5c0 58.5 64 56.5996 64 6.89941v-114.199h46.6299z\" />\n    <glyph glyph-name=\"r-project\" unicode=\"&#xf4f7;\" horiz-adv-x=\"581\" \nd=\"M581 221.4c0 -54.8008 -33.9004 -104.301 -88.4004 -139.7l67.4004 -113.7h-112l-40.0996 75.4004c-21.8008 -6.5 -45.1006 -11.2002 -69.4004 -13.9004v-61.5h-99.0996v61.9004c-136.101 16.0996 -239.4 95.6992 -239.4 191.5c0 107.5 130.1 194.6 290.5 194.6\ns290.5 -87.0996 290.5 -194.6zM114.2 206.9c0 -52.8008 51.0996 -98.4004 125.2 -119.9v208.3h199s90.5996 -1.59961 90.5996 -87.8994c0 -86.3008 -86.5996 -92.7002 -86.5996 -92.7002s17.5996 -5.2998 27.7998 -10.5c1.7002 -0.799805 4 -2.10059 6.39941 -3.7002\nc43.8008 21.4004 70.3008 56.2998 70.3008 106.4c0 92.2998 -90 133 -211.9 133s-220.8 -59.5 -220.8 -133zM339.3 168.6c49.6006 0 87.7998 -8.19922 87.7998 28.3008c0 34.0996 -30 27.2998 -87.7998 27.2998v-55.6006zM338.4 96.0996v-22.0996\nc17.5996 0.0996094 34.5 1 50.5996 2.90039c-5.09961 7.5 -13.2002 19.1992 -24 19.1992h-26.5996z\" />\n    <glyph glyph-name=\"researchgate\" unicode=\"&#xf4f8;\" \nd=\"M0 416h448v-448h-448v448zM262.2 81.5996v7.30078c-10 0 -20 6.89941 -27.2002 14.6992c-12.2002 13.3008 -28.5996 34.7002 -42.2002 58.9004c22.5 5.2998 39.2002 26.4004 39.2002 47.5c0 31.2002 -24.2002 45.5996 -55.9004 45.5996\nc-17.7998 0 -45.0996 -1.59961 -70.8994 -0.599609v-8.09961c15.5996 -2.90039 22 -1.30078 22 -23.9004v-109.4c0 -22.5996 -6.5 -21 -22 -23.8994v-8.10059c7.5 0.200195 20.5 0.800781 33.5996 0.800781c12.5 0 28.7002 -0.5 35.6006 -0.800781v8.10059\nc-19.8008 2.7002 -25.8008 0.399414 -25.8008 23.8994v46.4004c6.7002 -0.599609 12.5 -0.599609 21.4004 -0.599609c16.9004 -30.3008 33 -53 42.2002 -63.6006c16.7998 -20.2002 43.3994 -17.2002 50 -14.2002zM285.1 216.6c38.7002 0 34 29.4004 34 49.9004h-30.3994\nv-10.7002h17.8994c0 -15.8994 -7.39941 -26.7998 -21.5 -26.7998c-11.2998 0 -17.8994 9.90039 -17.8994 23.2998v26.7998c0 12.4004 11.7998 19.7002 19.7002 19.7002c14.1992 0 19.6992 -12.5 19.6992 -12.5l10.7002 7.2002s-5.2002 17.9004 -30.3994 17.9004\nc-25.2002 0 -34 -18.2002 -34 -30.4004v-32.2002c0 -16.5 8.89941 -32.2002 32.1992 -32.2002zM168.6 171.9c-9.39941 0 -13.5996 0.299805 -20 0.799805v69.7002c6.40039 0.599609 15 0.599609 22.5 0.599609c23.3008 0 37.2002 -12.2002 37.2002 -34.5\nc0 -21.9004 -15 -36.5996 -39.7002 -36.5996z\" />\n    <glyph glyph-name=\"teamspeak\" unicode=\"&#xf4f9;\" horiz-adv-x=\"512\" \nd=\"M244.2 101.21c-2.40039 -12.5 -10.6006 -20 -22.5 -24.2998c-9.2002 -3.2002 -50.1006 -1.60059 -61.7002 -1c-18 1.2998 -33.2002 8.5 -43.4004 24c-14.5 22.5 -19.5 47.7002 -14.5 73.8994c4.60059 24.5 24.6006 34.7002 46.3008 22.7002\nc15.1992 -7.5 42.5 -27.3994 63.3994 -46.5996c20.4004 -18.7002 34.7998 -36.4004 32.4004 -48.7002zM449.2 80.4102c6.7002 -5.41016 11.2002 -22 11.5996 -32.1006c1 -50.3994 -23.8994 -68 -46.5996 -85.3994c-65.1006 -50 -295.101 -16.9004 -145.4 -6.40039\nc127.4 9 164.101 96.1006 172.101 121.5c0.647461 1.99023 2.87109 3.60547 4.96387 3.60547c1.04102 0 2.53516 -0.540039 3.33594 -1.20508zM511.2 202.81c0 -17.1992 1.89941 -34.5996 -1 -51.6992c-4 -24.7002 -29.1006 -41.7002 -53.2002 -36.7002\nc-7.2002 1.7002 -9.40039 7.2002 -9.40039 14.2002c0 28.0996 0.800781 56.3994 0 84.5996c-1.89941 75.79 -36.1992 132.79 -102.3 169.4c-111 60.3896 -253.2 -7 -277.8 -131.5c-6.09961 -30.4004 -1.7002 -48.3008 -3.7002 -125.801\nc-0.299805 -7.19922 -4.2998 -11.1992 -12 -11.5c-30.7998 -1.39941 -51.7998 18.2002 -51.7998 49v20.9004l0.799805 26.4902c2.40039 15.5 10.7002 27 24.9004 34c3.5 1.7998 5.7002 3.5 6.39941 7.7998c6.10059 33.4102 19.5 64 39.3008 91.71\nc2.2998 3.09961 4 5.2998 1 9.2998c-3.7002 5.40039 -1 10.2002 3 14.5c28.0996 31.7998 61.8994 55.1006 102 67.4004c96 29.4668 180.1 9.29688 252.3 -60.5098c6.7002 -6.40039 15.5 -12.9004 7 -24.4004c-1.2998 -1.7998 1.09961 -3.5 2.2002 -5\nc17.2246 -23.209 35.3242 -65.1367 40.3994 -93.5898c0.900391 -3.7002 3 -5.10059 5.90039 -6.40039c17.3994 -8.7998 25.7002 -23.2998 26 -42.2002zM351.6 71.3096l-51.5996 7.7002c-22.7998 5.90039 -51 32.7002 22.2002 60.7998\nc21.5996 8.5 85.7002 37.2002 87.7998 -8c0.900391 -32 -21.9004 -63.2998 -58.4004 -60.5z\" />\n    <glyph glyph-name=\"first-order-alt\" unicode=\"&#xf50a;\" horiz-adv-x=\"496\" \nd=\"M248 440c136.97 0 248 -111.03 248 -248s-111.03 -248 -248 -248s-248 111.03 -248 248s111.03 248 248 248zM248 -48.21c132.66 0 240.21 107.55 240.21 240.21s-107.55 240.21 -240.21 240.21s-240.21 -107.55 -240.21 -240.21s107.55 -240.21 240.21 -240.21z\nM248 411.71c121.34 0 219.71 -98.3701 219.71 -219.71s-98.3701 -219.71 -219.71 -219.71s-219.71 98.3701 -219.71 219.71s98.3701 219.71 219.71 219.71zM248 -19.5098c116.81 0 211.51 94.7002 211.51 211.51s-94.7002 211.51 -211.51 211.51\ns-211.51 -94.6895 -211.51 -211.51s94.7002 -211.51 211.51 -211.51zM434.23 143.47c-3.69141 -14.209 -12.709 -36.0225 -20.1309 -48.6895l-74.1299 35.8799l61.4805 -54.8203c-8.85352 -11.7021 -25.5195 -28.4082 -37.2002 -37.29l-54.7998 61.5703l35.8799 -74.2705\nc-12.6445 -7.45215 -34.4307 -16.5156 -48.6299 -20.2295l-27.29 78.4697l4.79004 -82.9297c-8.61035 -1.17969 -17.4004 -1.7998 -26.3301 -1.7998s-17.7197 0.620117 -26.3301 1.7998l4.75977 82.46l-27.1494 -78.0303c-14.2021 3.70996 -35.998 12.7588 -48.6504 20.2002\nl35.9297 74.3398l-54.8701 -61.6396c-11.6836 8.87988 -28.3584 25.582 -37.2197 37.2793l61.5898 54.9004l-74.2598 -35.9297c-7.42383 12.667 -16.4463 34.4795 -20.1396 48.6895l77.8398 27.1104l-82.2305 -4.75977c-1.15918 8.56934 -1.7793 17.3193 -1.7793 26.21\nc0 9 0.629883 17.8398 1.81934 26.5098l82.3799 -4.76953l-77.9395 27.1592c3.71973 14.208 12.7822 36.0127 20.2295 48.6699l74.2207 -35.9199l-61.5205 54.8604c8.88086 11.6836 25.582 28.3584 37.2803 37.2197l54.7598 -61.5293l-35.8301 74.1699\nc12.6562 7.41895 34.4521 16.4375 48.6504 20.1299l26.8701 -77.25l-4.70996 81.6094c8.60938 1.18066 17.3896 1.80078 26.3193 1.80078c8.93066 0 17.71 -0.620117 26.3203 -1.80078l-4.74023 -82.1592l27.0498 77.7598c17.2705 -4.5 33.6006 -11.3506 48.6309 -20.1699\nl-35.8203 -74.1201l54.7197 61.4697c11.6924 -8.86133 28.376 -25.54 37.2402 -37.2295l-61.4502 -54.7705l74.1201 35.8604c7.43945 -12.6533 16.4893 -34.4492 20.2002 -48.6504l-77.8105 -27.0996l82.2402 4.75c1.19043 -8.66016 1.82031 -17.5 1.82031 -26.4902\nc0 -8.87988 -0.610352 -17.6299 -1.78027 -26.1904l-82.1201 4.75z\" />\n    <glyph glyph-name=\"fulcrum\" unicode=\"&#xf50b;\" horiz-adv-x=\"320\" \nd=\"M95.75 283.86l-35.3799 -43.5508l-35.3701 43.5508l35.3799 43.5498zM144.23 448v-211.11l-41.0801 -44.8896l41.0801 -44.8896v-211.11l-20.5107 198.18l-51 57.8203l50.9707 57.8203zM223.9 283.86l35.3799 43.5498l35.3799 -43.5498l-35.3799 -43.5508zM175.42 236.86\nv211.14l20.5801 -198.18l51 -57.8203l-51 -57.8203l-20.5801 -198.18v211.11l41.0801 44.8896z\" />\n    <glyph glyph-name=\"galactic-republic\" unicode=\"&#xf50c;\" horiz-adv-x=\"496\" \nd=\"M248 -56c-136.75 0 -248 111.25 -248 248s111.25 248 248 248s248 -111.25 248 -248s-111.25 -248 -248 -248zM248 423.47c-127.63 0 -231.47 -103.84 -231.47 -231.47s103.84 -231.47 231.47 -231.47s231.47 103.84 231.47 231.47s-103.84 231.47 -231.47 231.47z\nM275.62 401.66c37.6602 -4.91016 72.21 -19.7402 100.96 -41.7998l-17.3896 -17.3604c-20.6758 15.3154 -58.1152 30.7891 -83.5703 34.54v24.6201zM220.25 401.59v-24.54c-30.9697 -4.60938 -59.4502 -16.8301 -83.5195 -34.6699h-0.0800781l-17.2803 17.3604\nc28.7197 22.0498 63.2402 36.9102 100.88 41.8496zM232.5 351.42h31v-82.8604c10.0498 -2.0293 19.3701 -6.00977 27.6201 -11.5l58.6699 58.6709l21.9297 -21.9307l-58.6699 -58.6699c5.46973 -8.24023 9.48047 -17.5996 11.5 -27.6201h82.8701v-31h-82.8701\nc-2.03027 -10.0195 -6.04004 -19.3096 -11.5 -27.54l58.6699 -58.6895l-21.9297 -21.9307l-58.6699 58.6904c-8.25 -5.49023 -17.5703 -9.52051 -27.6201 -11.5498v-82.9004h-31v82.9004c-8.25781 1.66895 -20.6533 6.80762 -27.6699 11.4697l-58.6201 -58.6201\nl-21.9297 21.9297l58.6699 58.6904c-5.45996 8.23047 -9.4502 17.5205 -11.4697 27.54h-82.9004v31h82.9004c2.01953 10.0303 6 19.3896 11.4697 27.6201l-58.6699 58.6699l21.9297 21.9297l58.6201 -58.5898c8.25 5.48047 17.6299 9.38965 27.6699 11.4199v82.8701z\nM415.74 320.7c22.0996 -28.7402 36.9795 -63.3398 41.9297 -101.03h-24.6201c-3.7832 25.4902 -19.3154 62.9746 -34.6699 83.6699zM80.1904 320.57l17.3896 -17.3906c-17.8301 -24.0693 -29.9902 -52.5596 -34.5898 -83.5195h-24.6504\nc4.94043 37.6494 19.79 72.1895 41.8506 100.91zM38.3398 164.33l24.6504 0.00976562c4.58984 -30.9502 16.7002 -59.4502 34.5098 -83.5195l-17.3604 -17.3906c-22.0498 28.7207 -36.8799 63.2607 -41.7998 100.9zM433.04 164.33h24.6201\nc-4.9502 -37.6699 -19.8506 -72.2197 -41.9297 -100.96l-17.3604 17.3604c17.8701 24.0996 30.0596 52.6094 34.6699 83.5996zM136.66 41.6201c24.0703 -17.8604 52.6094 -30.0205 83.5996 -34.6504v-24.6396c-37.6602 4.9502 -72.2295 19.8398 -100.96 41.9297z\nM359.19 41.5703h0.0791016l17.3105 -17.3906c-28.75 -22.0596 -63.29 -36.9297 -100.96 -41.8496v24.5703c30.9902 4.58984 59.4795 16.8301 83.5703 34.6699z\" />\n    <glyph glyph-name=\"galactic-senate\" unicode=\"&#xf50d;\" horiz-adv-x=\"512\" \nd=\"M249.86 414.52h12.2793v-26.0693c13.5801 -20.6201 23.8604 -108.59 24.4902 -215.351c-11.7402 15.6201 -19.1299 33.3301 -19.1299 48.2402v16.8799c0.0302734 5.32031 -0.75 10.5303 -2.19043 15.6504c-0.649414 2.13965 -1.38965 4.07031 -2.61914 5.82031\nc-1.23047 1.73926 -3.44043 3.79004 -6.68066 3.79004c-3.25 0 -5.4502 -2.04004 -6.67969 -3.79004c-1.23047 -1.74023 -1.96973 -3.68066 -2.62012 -5.82031c-1.44043 -5.12012 -2.21973 -10.3301 -2.19043 -15.6504v-16.8799\nc0 -14.9102 -7.38965 -32.6201 -19.1299 -48.2402c0.610352 106.761 10.8906 194.73 24.4707 215.351v26.0693zM223.52 266.75c-1.59961 -22.4004 -2.75 -46.5195 -3.47949 -72.0703c-23.2998 -11.2793 -40.7705 -33.1602 -46.3203 -59.5098\nc-7.71973 -2.25977 -22.71 -3.91992 -40.4893 -4.21973c-7.51074 3.66016 -16.5 5.85938 -26.1807 6.04004c1.90039 14.9102 5.87012 29.1699 11.6504 42.4199c15.4395 -8.10059 30.9297 -8.66016 35.4697 -0.959961c4.57031 7.74023 -3.58984 21.04 -18.3203 30.6602\nc8.68066 11.7695 18.9805 22.2998 30.5605 31.0898c9.50977 -15.5898 23.3594 -24.4404 31.3594 -19.8203c8.05078 4.65039 7.19043 21.1699 -1.70996 37.29c8.76074 3.88965 17.9404 6.92969 27.46 9.08008zM288.48 266.75\nc7.82227 -1.75977 20.1201 -5.82812 27.4492 -9.08008c-8.89941 -16.1299 -9.75977 -32.6396 -1.70996 -37.29c8 -4.62012 21.8506 4.23047 31.3604 19.8203c11.5801 -8.79004 21.8799 -19.3203 30.5596 -31.0898c-14.7197 -9.61035 -22.8896 -22.9199 -18.3193 -30.6602\nc4.54004 -7.7002 20.0293 -7.14062 35.4697 0.959961c5.79004 -13.25 9.75 -27.5098 11.6504 -42.4199c-9.68066 -0.19043 -18.6709 -2.37988 -26.1807 -6.04004c-17.7793 0.299805 -32.7695 1.95996 -40.4902 4.21973c-5.5498 26.3496 -23.0293 48.2305 -46.3193 59.5098\nc-0.719727 25.5508 -1.87988 49.6699 -3.46973 72.0703zM256 258.15c3.23047 0 5.86035 -8.81055 6.08984 -19.9307h0.0498047v-16.8799c0 -41.4199 49.0107 -95.04 93.4902 -95.04c52 0 122.76 1.4502 156.37 -29.1699v-2.50977\nc-9.41992 -17.1104 -20.5801 -33.1699 -33.1797 -47.9697c-12.5303 21.0898 -51.5898 40.96 -108.021 41.3496c-45.6797 -1.01953 -79.0195 -20.3301 -90.7598 -40.8701c-0.00976562 -0.00976562 0.00976562 -0.0400391 0 -0.0498047\nc-7.66992 -2.13965 -15.8496 -3.23047 -24.04 -3.20996c-8.19043 -0.0205078 -16.3701 1.07031 -24.04 3.20996c-0.00976562 0.00976562 0.00976562 0.0400391 0 0.0498047c-11.7295 20.54 -45.0801 39.8506 -90.7598 40.8701\nc-56.4307 -0.400391 -95.5 -20.2598 -108.021 -41.3496c-12.5996 14.7998 -23.7598 30.8496 -33.1797 47.9697v2.50977c33.6201 30.6201 104.37 29.1699 156.37 29.1699c44.4795 0 93.4902 53.6201 93.4902 95.04v16.8799h0.0498047\nc0.229492 11.1201 2.85938 19.9307 6.08984 19.9307zM256 161.56c-22.4199 0 -40.5996 -18.1797 -40.5996 -40.5996s18.1797 -40.6504 40.5996 -40.6504s40.5996 18.2305 40.5996 40.6504s-18.1797 40.5996 -40.5996 40.5996zM256 153.92\nc18.1904 0 32.96 -14.7695 32.96 -32.96s-14.7695 -32.96 -32.96 -32.96s-32.96 14.7695 -32.96 32.96s14.7695 32.96 32.96 32.96zM256 147.78c-14.8096 0 -26.8203 -12.0107 -26.8203 -26.8203s12.0107 -26.8203 26.8203 -26.8203s26.8203 12.0107 26.8203 26.8203\ns-12.0107 26.8203 -26.8203 26.8203zM141.2 81.1104c18.75 -0.419922 35.1895 -4.18066 48.6094 -9.66992c12.5508 -16.0303 29.1602 -30.04 49.5801 -33.0703c0.100586 -0.00976562 0.169922 -0.0302734 0.270508 -0.0498047\nc0.0498047 -0.0107422 0.109375 -0.0400391 0.160156 -0.0507812c5.23926 -1.06934 10.6396 -1.59961 16.1895 -1.59961c5.56055 0 10.9502 0.530273 16.1904 1.59961c0.0498047 0.0107422 0.109375 0.0400391 0.160156 0.0507812\nc0.0996094 0.00976562 0.179688 0.0292969 0.269531 0.0498047c20.4199 3.04004 37.04 17.04 49.5801 33.0703c13.4199 5.5 29.8496 9.25 48.6104 9.66992c10.1797 -0.0800781 21.5996 -0.360352 30.5 -1.66016c-0.430664 -4.41992 -1.51074 -18.6299 -7.11035 -29.7598\nc-9.11035 2.55957 -18.3604 3.89941 -27.6201 3.89941c-41.2803 -0.939453 -71.4795 -34.3496 -78.2598 -74.4697l-0.110352 -4.7002c-10.3994 -1.91992 -21.1797 -2.93945 -32.21 -2.93945c-11.0195 0 -21.8096 1.0293 -32.21 2.93945l-0.109375 4.7002\nc-6.78027 40.1201 -36.9805 73.5303 -78.2607 74.4697c-9.25977 0 -18.5098 -1.33984 -27.6201 -3.89941c-5.59961 11.1299 -6.67969 25.3398 -7.10938 29.7598c8.89941 1.2998 20.3096 1.58984 30.5 1.66016z\" />\n    <glyph glyph-name=\"jedi-order\" unicode=\"&#xf50e;\" \nd=\"M398.5 74.4004c0 0 26.2998 16.1992 49.9004 77.6992c0 0 -17 -183.3 -222 -185.699h-4.10059c-205.1 2.39941 -222 185.699 -222 185.699c23.2002 -61.5996 49.4004 -77.6992 49.4004 -77.6992c-95.9004 122.1 -17.2002 233.1 -17.2002 233.1\nc-45.4004 -85.7002 41.4004 -170.5 41.4004 -170.5c-105 171.6 60.5 271.5 60.5 271.5c-96.9004 -72.5996 10.0996 -190.7 10.0996 -190.7c-85.7998 -158.399 68.5996 -230.1 68.5996 -230.1s0.400391 16.8994 2.2002 85.7002l-34.5 -36.2002l24.2002 47.3994\nl-62.5996 9.10059l62.5996 9.09961l-20.2002 55.5l31.4004 -45.8994c2.2998 87.8994 7.89941 305.899 7.89941 306.899v2.40039v-1v1v-2.40039c0.100586 -1.7998 5.7002 -219.2 7.90039 -306.899l31.4004 45.8994l-20.2002 -55.5l62.5996 -9.09961l-62.5996 -9.10059\nl24.2002 -47.3994s-30.2002 31.7002 -34.5 36.2002c1.7998 -68.8008 2.19922 -85.7002 2.19922 -85.7002s154.4 71.7002 68.6006 230.1c0 0 107 118 10.0996 190.7c0 0 165.5 -100 60.5 -271.5c0 0 86.7998 84.7002 41.4004 170.5c0 0 78.7002 -111 -17.2002 -233.1z\" />\n    <glyph glyph-name=\"mandalorian\" unicode=\"&#xf50f;\" \nd=\"M232.27 -63.8896c-1 3.25977 -1.68945 15.8301 -1.38965 24.5801c0.549805 15.8896 1 24.7197 1.40039 28.7598c0.639648 6.2002 2.87012 20.7197 3.2793 21.3799c0.600586 1 0.400391 27.8701 -0.239258 33.1299c-0.310547 2.58008 -0.629883 11.9004 -0.69043 20.7305\nc-0.129883 16.4697 -0.530273 20.1191 -2.72949 24.7598c-1.10059 2.31934 -1.23047 3.83984 -1 11.4297c0.0449219 1.07324 0.0820312 2.81641 0.0820312 3.89062c0 2.43945 -0.189453 6.39062 -0.422852 8.81934c-2 13 -3.45996 27.7002 -3.25 33.9004\ns0.430664 7.14941 2.06055 9.66992c3.0498 4.70996 6.50977 14 8.62012 23.2695c2.25977 9.86035 3.87988 17.1807 4.58984 20.7402c0.921875 4.24121 2.90137 10.9834 4.41992 15.0498c2.26953 6.25 2.49023 15.3906 0.370117 15.3906\nc-0.299805 0 -1.37988 -1.2207 -2.41016 -2.70996c-1.03027 -1.49023 -4.75977 -4.80078 -8.29004 -7.36035c-8.37012 -6.08008 -11.7002 -9.38965 -12.6602 -12.5801s-1 -7.22949 -0.160156 -7.75977c0.34082 -0.209961 1.29004 -2.40039 2.11035 -4.87988\nc0.791992 -2.41602 1.43457 -6.43945 1.43457 -8.98145c0 -1.78223 -0.320312 -4.64062 -0.714844 -6.37891c-0.389648 -1.76953 -1 -5.46973 -1.45996 -8.22949c-0.459961 -2.76074 -1 -6.46094 -1.25 -8.2207c-0.149414 -1.27637 -0.84375 -3.18555 -1.5498 -4.25977\nc-1 -1 -1.13965 -0.910156 -2.0498 0.530273c-0.619141 1.24316 -1.26465 3.37109 -1.44043 4.75c-0.25 1.73926 -1.62988 7.10938 -3.08008 11.9297c-3.2793 10.9004 -3.51953 16.1504 -1 21c0.683594 1.19141 1.43164 3.25684 1.66992 4.61035\nc0 2.38965 -2.19922 5.31934 -7.40918 9.88965c-7 6.17969 -8.62988 7.91992 -10.2305 11.2998c-1.70996 3.60059 -3.05957 4.06055 -4.54004 1.54004c-1.78027 -3 -2.59961 -9.10938 -3 -22l-0.339844 -12.1895l2 -2.25c3.20996 -3.7002 12.0703 -16.4502 13.7803 -19.8301\nc3.41016 -6.74023 4.33984 -11.6904 4.41016 -23.5605c0.0693359 -11.8701 0.949219 -22.75 2 -24.71c0.359375 -0.660156 0.509766 -1.34961 0.339844 -1.51953s0.410156 -2.08984 1.29004 -4.27051c0.871094 -2.41406 1.79395 -6.44629 2.05957 -9\nc0.306641 -2.88867 1.07227 -7.53516 1.70996 -10.3701c2.23047 -9.55957 2.77051 -14.0801 2.39062 -20.1396c-0.200195 -3.26953 -0.530273 -11.0703 -0.730469 -17.3203c-1.30957 -41.7598 -1.84961 -58 -2 -61.21c-0.120117 -2 -0.389648 -11.5098 -0.599609 -21.0693\nc-0.360352 -16.3008 -1.30078 -27.3701 -2.41992 -28.6504c-0.640625 -0.729492 -8.07031 4.91016 -12.5205 9.49023c-3.75 3.87012 -4 4.79004 -2.83008 9.9502c0.700195 3 2.25977 18.29 3.33008 32.6191c0.360352 4.78027 0.80957 10.5 1 12.7109\nc0.830078 9.36914 1.66016 20.3496 2.61035 34.7793c0.55957 8.45996 1.33008 16.4404 1.71973 17.7305s0.889648 9.88965 1.12988 19.1094l0.429688 16.7705l-2.25977 4.2998c-1.71973 3.28027 -4.87012 6.94043 -13.2197 15.3398\nc-6 6.07031 -11.8398 12.2998 -12.9102 13.8506l-1.9502 2.80957l0.75 10.9004c1.08984 15.71 1.10059 48.5693 0 59.0596l-0.889648 8.7002l-3.28027 4.51953c-5.85938 8.08008 -5.7998 7.75 -6.21973 33.2705c-0.100586 6.07031 -0.379883 11.5 -0.629883 12.0596\nc-0.830078 1.87012 -3.0498 2.66016 -8.54004 3.05078c-8.86035 0.619141 -11 1.89941 -23.8506 14.5498c-6.14941 6 -12.3398 12 -13.75 13.1895c-2.80957 2.41992 -2.79004 2 -0.55957 9.62988l1.34961 4.65039l-1.68945 3c-0.630859 1.17676 -1.79102 3 -2.58984 4.07031\nc-1.33008 1.50977 -5.5 10.8896 -6 13.4893c-0.0859375 0.307617 -0.155273 0.816406 -0.155273 1.13574c0 0.868164 0.458984 2.10645 1.02539 2.76465c2.22949 2.86035 3.39941 5.67969 4.44922 10.7305c2.33008 11.1895 7.74023 26.0898 10.6006 29.2197\nc3.17969 3.46973 7.7002 1 9.41016 -5c1.33984 -4.79004 1.36914 -9.79004 0.0996094 -18.5498c-0.445312 -3.05176 -0.893555 -8.02832 -1 -11.1104c0 -4 0.19043 -4.69043 2.25 -7.38965c3.33008 -4.37012 7.72949 -7.41016 15.2002 -10.5205\nc1.41992 -0.591797 3.53418 -1.86914 4.71973 -2.84961c11.1699 -10.7207 18.6201 -16.1807 22.9502 -16.8506c5.17969 -0.799805 8 -4.54004 10 -13.3896c1.30957 -5.65039 4 -11.1396 5.45996 -11.1396c0.994141 0.203125 2.48633 0.826172 3.33008 1.38965\nc2 1.21973 2.25 1.73047 2.25 4.17969c-0.21875 4.96191 -1.11523 12.9541 -2 17.8398c-0.370117 1.66016 -0.780273 4.06055 -0.930664 5.35059c-0.149414 1.29004 -0.609375 3.84961 -1 5.68945c-2.5498 11.1602 -3.64941 15.46 -4.09961 16\nc-1.5498 2 -4.08008 10.2002 -4.92969 15.9209c-1.64062 11.1094 -4 14.2295 -12.9102 17.3896c-4.0791 1.50293 -10.0547 5.0332 -13.3398 7.87988c-1.15039 1 -4 3.21973 -6.35059 5.05957c-2.34961 1.84082 -4.40918 3.53027 -4.59961 3.76074\nc-0.701172 0.606445 -1.90625 1.50293 -2.69043 2c-6.23926 4.21973 -8.83984 7 -11.2598 12l-2.43945 5l-0.220703 13l-0.219727 13l6.91016 6.5498c3.9502 3.75 8.47949 7.34961 10.5898 8.42969c3.30957 1.69043 4.4502 1.89062 11.3701 2\nc8.53027 0.19043 10.1201 0 11.6602 -1.55957c1.54004 -1.56055 1.35938 -6.40039 -0.290039 -8.5c-0.501953 -0.564453 -1.10156 -1.60352 -1.33984 -2.32031c0 -0.580078 -2.61035 -4.91016 -5.41992 -9c-0.879883 -1.80371 -1.94141 -4.85938 -2.37012 -6.82031\nc20.4395 -13.3896 21.5498 -3.76953 14.0693 -29l11.3604 -2.51953c3.11035 8.66016 6.46973 17.2598 8.61035 26.2197c0.290039 7.62988 -12 4.19043 -15.4004 8.68066c-2.33008 5.92969 3.12988 14.1797 6.05957 19.1992c1.60059 2.33984 6.62012 4.7002 8.82031 4.15039\nc0.879883 -0.219727 4.16016 0.349609 7.37012 1.28027c2.04395 0.641602 5.42676 1.39453 7.5498 1.67969c1.69336 0.183594 4.38184 0.760742 6 1.29004c3.65039 1.11035 4.5 1.16992 6.35059 0.400391c1.56738 -0.539062 4.1748 -1.14844 5.81934 -1.36035\nc1.74902 -0.236328 4.43652 -1.0918 6 -1.91016c1.30762 -0.765625 3.54785 -1.73828 5 -2.16992c2.51074 -0.679688 3 -0.570312 7.05078 1.66992l4.34961 2.40039l10.7402 0.389648c10.4395 0.400391 10.8096 0.469727 15.2598 2.67969l4.58008 2.32031l2.45996 -1.42969\nc1.75977 -1 3.13965 -2.73047 4.84961 -6c2.36035 -4.51074 2.37988 -4.58008 1.37012 -7.37012c-0.879883 -2.44043 -0.889648 -3.2998 -0.0996094 -6.39062c0.435547 -1.68164 1.37695 -4.3291 2.09961 -5.90918c0.535156 -1.04785 1.12207 -2.83984 1.31055 -4\nc0.30957 -4.33008 0 -5.30078 -2.41016 -6.91992c-2.16992 -1.4707 -7 -7.91016 -7 -9.34082c-0.206055 -0.859375 -0.685547 -2.2041 -1.07031 -3c-5 -11.5098 -6.75977 -13.5596 -14.2598 -17c-9.2002 -4.19922 -12.2998 -5.18945 -16.21 -5.18945\nc-3.10059 0 -4 -0.25 -4.54004 -1.25977c-0.972656 -1.19629 -2.80566 -2.8584 -4.08984 -3.70996c-1.53223 -1.02344 -3.49512 -3.16504 -4.37988 -4.78027c-0.411133 -1.04004 -1.52734 -2.34375 -2.49023 -2.91016\nc-0.78125 -0.321289 -1.87891 -1.08789 -2.4502 -1.70996c-1.83496 -1.61133 -4.9707 -4.02148 -7 -5.37988c-3.33008 -2.33984 -6.87012 -5 -7.87012 -6c-0.560547 -0.604492 -1.62695 -1.36621 -2.37988 -1.7002c-0.697266 -0.314453 -1.65137 -1.05273 -2.12988 -1.65039\nc-1.31055 -1.38965 -1.49023 -2.10938 -1.13965 -4.59961c0.255859 -1.65527 0.892578 -4.29004 1.41992 -5.87988c1.31934 -3.7998 1.30957 -7.86035 0 -10.5703c-1.31055 -2.70996 -0.890625 -6.64941 1.34961 -9.58984c2 -2.62988 2.16016 -4.55957 0.709961 -8.83984\nc-0.587891 -2.27344 -1.06445 -6.02344 -1.06445 -8.37109c0 -0.148438 0.00195312 -0.390625 0.00488281 -0.539062c0 -4.87988 0.219727 -6.28027 1.45996 -8.37988c1.23926 -2.09961 1.81934 -2.48047 3.23926 -2.32031c2 0.230469 2.30078 1.0498 4.70996 12.1201\nc2.18066 10 3.70996 11.9199 13.7607 17.0801c2.93945 1.50977 7.45996 4 10 5.44043c2.54004 1.43945 6.79004 3.68945 9.37012 4.90918c4.99414 2.18652 11.8125 7.41504 15.2197 11.6709c7.10938 8.78906 10 16.2197 12.8496 33.2998\nc0.298828 2.31445 1.58008 5.77832 2.86035 7.72949c1.19434 1.86133 2.48828 5.13574 2.88965 7.31055c1 5.2998 2.85059 9.08008 5.58008 11.5098c4.7002 4.17969 6 1.08984 4.58984 -10.8701c-0.459961 -3.86035 -1.09961 -10.3301 -1.43945 -14.3799l-0.610352 -7.36035\nl4.4502 -4.08984l4.4502 -4.08984l0.109375 -8.41992c0.0605469 -4.62988 0.470703 -9.53027 0.919922 -10.8896l0.820312 -2.4707l-6.42969 -6.2793c-8.54004 -8.33008 -12.8799 -13.9307 -16.7598 -21.6104c-1.77051 -3.49023 -3.74023 -7.11035 -4.38086 -8\nc-2.17969 -3.11035 -6.45996 -13 -8.75977 -20.2598l-2.29004 -7.2207l-7 -6.48926c-3.83008 -3.57031 -8 -7.25 -9.16992 -8.16992c-3.0498 -2.32031 -4.25977 -5.15039 -4.25977 -10c-0.00683594 -0.166992 -0.0126953 -0.438477 -0.0126953 -0.605469\nc0 -1.94336 0.717773 -4.9248 1.60254 -6.65527c0.660156 -1.29688 1.59668 -3.45996 2.08984 -4.83008c0.290039 -0.875 0.993164 -2.16992 1.57031 -2.88965c1.40039 -1.58984 1.91992 -16.1201 0.830078 -23.2197c-0.679688 -4.48047 -3.62988 -12 -4.7002 -12\nc-1.79004 0 -4.05957 -9.27051 -5.07031 -20.7402c-0.179688 -2 -0.620117 -5.94043 -1 -8.7002s-1 -10 -1.34961 -16.0498c-0.770508 -12.2197 -0.19043 -18.7705 2 -23.1504c3.41016 -6.68945 0.519531 -12.6895 -11 -22.8398l-4 -3.49023l0.0703125 -5.18945\nc0.0439453 -2.4834 0.554688 -6.45703 1.13965 -8.87012c4.61035 -16 4.73047 -16.9199 4.37988 -37.1299c-0.459961 -26.4004 -0.259766 -40.2705 0.629883 -44.1504c0.410156 -1.91406 0.893555 -5.05078 1.08008 -7c0.169922 -2 0.660156 -5.33008 1.08008 -7.35938\nc0.469727 -2.26074 0.780273 -11 0.790039 -22.7402v-19.0605l-1.80957 -2.62988c-2.70996 -3.91016 -15.1104 -13.54 -15.4902 -12.29zM261.8 -18.7803c-0.179688 0.299805 -0.330078 6.87012 -0.330078 14.5898c0 14.0605 -0.889648 27.54 -2.25977 34.4502\nc-0.400391 2 -0.80957 9.7002 -0.900391 17.0605c-0.149414 11.9297 -1.39941 24.3701 -2.63965 26.3799c-0.660156 1.06934 -3 17.6602 -3 21.2998c0 4.23047 1 6 5.28027 9.12988s4.85938 3.13965 5.47949 0.719727c0.280273 -1.09961 1.4502 -5.61914 2.60059 -10\nc3.92969 -15.1191 4.13965 -16.2695 4.0498 -21.7393c-0.0996094 -5.78027 -0.129883 -6.12988 -1.74023 -17.7305c-1 -7.07031 -1.16992 -12.3896 -1 -28.4297c0.169922 -19.4004 -0.639648 -35.7305 -2 -41.2705c-0.709961 -2.7793 -2.7998 -5.47949 -3.42969 -4.42969z\nM190.8 18.7998c-0.638672 2.95215 -1.41406 7.78613 -1.72949 10.79s-1.09082 7.83789 -1.73047 10.79c-0.433594 1.76758 -0.880859 4.6748 -1 6.49023c-0.30957 3.18945 -0.910156 7.45996 -1.33008 9.47949c-1 4.79004 -3.34961 19.3506 -3.41992 21.0703\nc0 0.740234 -0.339844 4.0498 -0.700195 7.36035c-0.669922 6.20996 -0.839844 27.6699 -0.219727 28.29c1 1 6.62988 -2.76074 11.3301 -7.43066l5.28027 -5.25l-0.450195 -6.46973c-0.25 -3.55957 -0.599609 -10.2295 -0.780273 -14.8301\nc-0.179688 -4.59961 -0.490234 -9.87012 -0.669922 -11.71s-0.610352 -9.36035 -0.939453 -16.7197c-0.790039 -17.4102 -1.94043 -31.29 -2.65039 -32c-0.101562 -0.107422 -0.302734 -0.193359 -0.450195 -0.193359c-0.208008 0 -0.454102 0.149414 -0.549805 0.333008\nh0.00976562zM103.62 285.39c21.0703 -12.79 17.8398 -14.1494 28.4902 -17.6592c13 -4.29004 18.8701 -7.13086 23.1494 -16.8701c-43.6602 -36.1406 -69.0098 -57.8604 -76.71 -70.8604c-31 -52 -6 -101.59 62.75 -87.21c-14.1797 -29.2305 -78 -28.6299 -98.6797 4.90039\nc-24.6797 39.9492 -22.0898 118.3 61 187.659v0.0400391zM314.41 106.39c56.6602 -6.87988 82.3203 37.7402 46.54 89.2305c0 0 -26.8701 29.3398 -64.2803 68c3 15.4502 9.49023 32.1201 30.5703 53.8203c89.2002 -63.5107 92 -141.61 92.46 -149.36\nc4.2998 -70.6396 -78.7002 -91.1797 -105.29 -61.71v0.0195312z\" />\n    <glyph glyph-name=\"old-republic\" unicode=\"&#xf510;\" horiz-adv-x=\"496\" \nd=\"M235.76 437.77c7.5 0.310547 15 0.280273 22.5 0.0908203c3.61035 -0.140625 7.2002 -0.400391 10.79 -0.730469c4.91992 -0.269531 9.79004 -1.03027 14.6699 -1.62012c2.93066 -0.429688 5.83008 -0.979492 8.75 -1.45996\nc7.90039 -1.33008 15.6699 -3.28027 23.3906 -5.39941c12.2393 -3.4707 24.1895 -7.91992 35.7598 -13.21c26.5596 -12.2402 50.9395 -29.21 71.6299 -49.8809c20.0303 -20.0898 36.7197 -43.5498 48.8896 -69.1895c1.12988 -2.58984 2.44043 -5.10059 3.4707 -7.74023\nc2.80957 -6.42969 5.38965 -12.9697 7.58008 -19.6299c4.13965 -12.3301 7.33984 -24.9902 9.41992 -37.8301c0.569336 -3.13965 1.04004 -6.2998 1.39941 -9.46973c0.549805 -3.83008 0.94043 -7.69043 1.18066 -11.5605\nc0.829102 -8.33984 0.839844 -16.7295 0.769531 -25.0996c-0.0703125 -4.96973 -0.259766 -9.94043 -0.75 -14.8896c-0.240234 -3.38086 -0.509766 -6.76074 -0.979492 -10.1201c-0.390625 -2.7207 -0.630859 -5.45996 -1.11035 -8.16992\nc-0.900391 -5.15039 -1.7002 -10.3105 -2.87012 -15.4102c-4.09961 -18.5 -10.2998 -36.5498 -18.5098 -53.6299c-15.7705 -32.8301 -38.8301 -62.1699 -67.1201 -85.1201c-14.3926 -11.7676 -39.8887 -27.3848 -56.9102 -34.8604\nc-6.20996 -2.67969 -12.46 -5.25 -18.8701 -7.41016c-3.50977 -1.16016 -7.00977 -2.37988 -10.5703 -3.38965c-6.61914 -1.87988 -13.2891 -3.63965 -20.0391 -5c-4.66016 -0.910156 -9.34082 -1.73047 -14.0303 -2.48047c-5.25 -0.65918 -10.5 -1.43945 -15.79 -1.73926\nc-6.69043 -0.660156 -13.4102 -0.839844 -20.1201 -0.810547c-6.82031 -0.0292969 -13.6504 0.120117 -20.4502 0.790039c-3.29004 0.230469 -6.57031 0.5 -9.83008 0.950195c-2.71973 0.389648 -5.45996 0.629883 -8.16992 1.11035\nc-4.12012 0.719727 -8.25 1.37012 -12.3496 2.21973c-4.25 0.939453 -8.49023 1.88965 -12.6904 3.01953c-8.62988 2.16992 -17.0801 5.01074 -25.4102 8.13086c-10.4893 4.11914 -20.79 8.75 -30.6396 14.25c-2.13965 1.14941 -4.28027 2.28906 -6.34961 3.56934\nc-11.2207 6.58008 -21.8604 14.1006 -31.9199 22.3398c-34.6807 28.4102 -61.4102 66.4307 -76.3506 108.7c-3.08984 8.74023 -5.70996 17.6504 -7.7998 26.6797c-1.48047 6.16016 -2.52051 12.4209 -3.58008 18.6602\nc-0.400391 2.35059 -0.610352 4.73047 -0.950195 7.08984c-0.599609 3.96094 -0.75 7.96094 -1.16992 11.9404c-0.799805 9.46973 -0.709961 18.9902 -0.509766 28.4902c0.139648 3.50977 0.339844 7.00977 0.700195 10.5098\nc0.30957 3.16992 0.459961 6.37012 0.919922 9.52051c0.410156 2.80957 0.649414 5.64941 1.16016 8.43945c0.699219 3.94043 1.2998 7.90039 2.11914 11.8203c3.43066 16.5195 8.4707 32.7295 15.2607 48.1797c1.14941 2.91992 2.58984 5.71973 3.85938 8.58984\nc8.05078 16.71 17.9004 32.5605 29.4902 47.0605c20 25.3799 45.1006 46.6797 73.2705 62.4697c7.5 4.15039 15.1592 8.0498 23.0693 11.3701c15.8203 6.87988 32.4102 11.9502 49.3105 15.3799c3.50977 0.669922 7.04004 1.24023 10.5596 1.84961\nc2.62012 0.470703 5.28027 0.700195 7.91016 1.08008c3.53027 0.530273 7.09961 0.680664 10.6504 1.04004c2.45996 0.240234 4.90918 0.360352 7.35938 0.509766zM244.4 413.36c-9.23047 -0.100586 -18.4307 -0.990234 -27.5703 -2.23047\nc-7.2998 -1.08008 -14.5303 -2.59961 -21.71 -4.2998c-13.9102 -3.5 -27.4805 -8.33984 -40.46 -14.4199c-10.46 -4.99023 -20.5898 -10.7002 -30.1797 -17.2197c-4.18066 -2.9209 -8.40039 -5.80078 -12.3408 -9.03027\nc-5.08008 -3.96973 -9.97949 -8.16992 -14.6797 -12.5898c-2.50977 -2.24023 -4.80957 -4.7002 -7.21973 -7.06055c-28.2207 -28.79 -48.4404 -65.3896 -57.5 -104.689c-2.04004 -8.44043 -3.54004 -17.0205 -4.44043 -25.6504\nc-1.09961 -8.88965 -1.43945 -17.8496 -1.41016 -26.7998c0.110352 -7.13965 0.379883 -14.2803 1.2207 -21.3701c0.620117 -7.12012 1.87012 -14.1602 3.19922 -21.1797c1.07031 -4.65039 2.03027 -9.32031 3.33008 -13.9102\nc6.29004 -23.3799 16.5 -45.7002 30.0703 -65.75c8.63965 -12.9805 18.7803 -24.9297 29.9805 -35.7705c16.2793 -15.8193 35.0498 -29.04 55.3398 -39.2197c7.2793 -3.51953 14.6602 -6.87012 22.2695 -9.62988c5.04004 -1.75977 10.0605 -3.57031 15.2197 -4.98047\nc11.2607 -3.22949 22.7705 -5.59961 34.3906 -7.05957c2.91016 -0.290039 5.80957 -0.610352 8.71973 -0.900391c13.8203 -1.08008 27.7402 -1 41.54 0.430664c4.4502 0.599609 8.91992 0.989258 13.3496 1.7793c3.63086 0.670898 7.28027 1.25 10.8701 2.10059\nc4.12988 0.979492 8.28027 1.91016 12.3604 3.07031c26.5 7.33984 51.5801 19.71 73.5801 36.1992c15.7803 11.8203 29.96 25.7607 42.1201 41.2803c3.25977 4.02051 6.16992 8.30957 9.12988 12.5498c3.38965 5.06055 6.58008 10.25 9.59961 15.54\nc2.40039 4.44043 4.74023 8.91016 6.9502 13.4502c5.69043 12.0498 10.2803 24.6201 13.75 37.4902c2.58984 10.0098 4.75 20.1602 5.90039 30.4502c1.76953 13.4697 1.93945 27.0996 1.29004 40.6494c-0.290039 3.89062 -0.669922 7.77051 -1 11.6602\nc-2.23047 19.0801 -6.79004 37.9102 -13.8203 55.7998c-5.9502 15.1299 -13.5303 29.6299 -22.6104 43.1299c-12.6895 18.8008 -28.2393 35.6807 -45.9697 49.8301c-25.0498 20 -54.4697 34.5498 -85.6504 42.0801c-7.7793 1.92969 -15.6895 3.33984 -23.6299 4.4502\nc-3.90918 0.589844 -7.84961 0.820312 -11.7695 1.24023c-7.38965 0.569336 -14.8105 0.719727 -22.2197 0.580078zM139.26 364.47c13.2998 8.89062 28.0801 15.3799 43.2998 20.1807c-3.16992 -1.77051 -6.43945 -3.38086 -9.5293 -5.29004\nc-11.21 -6.68066 -21.5205 -14.9004 -30.3799 -24.4902c-6.80078 -7.42969 -12.7607 -15.7305 -17.0107 -24.8896c-3.29004 -6.86035 -5.63965 -14.1904 -6.85938 -21.7109c-0.930664 -4.84961 -1.2998 -9.80957 -1.16992 -14.75\nc0.129883 -13.6592 4.43945 -27.0791 11.29 -38.8193c5.91992 -10.2197 13.6299 -19.3301 22.3594 -27.2598c4.85059 -4.36035 10.2402 -8.09082 14.9502 -12.6006c2.25977 -2.18945 4.49023 -4.41992 6.42969 -6.91016c2.62012 -3.30957 4.89062 -6.98926 5.99023 -11.0996\nc0.900391 -3.02051 0.660156 -6.2002 0.69043 -9.31055c0.0195312 -4.09961 -0.0400391 -8.19922 0.0292969 -12.2998c0.140625 -3.54004 -0.0195312 -7.08984 0.110352 -10.6299c0.0800781 -2.37988 0.0205078 -4.75977 0.0498047 -7.13965\nc0.160156 -5.77051 0.0605469 -11.5303 0.150391 -17.2998c0.109375 -2.91016 0.0195312 -5.82031 0.129883 -8.74023c0.0302734 -1.62988 0.129883 -3.28027 -0.0302734 -4.91016c-0.910156 -0.120117 -1.81934 -0.179688 -2.72949 -0.160156\nc-10.9902 0 -21.8799 2.62988 -31.9502 6.92969c-6 2.7002 -11.8105 5.89062 -17.0898 9.83008c-5.75 4.19043 -11.0898 8.95996 -15.79 14.3105c-6.53027 7.24023 -11.9805 15.3896 -16.6201 23.9502c-1.07031 2.0293 -2.24023 4.01953 -3.17969 6.12012\nc-1.16016 2.63965 -2.62012 5.13965 -3.66992 7.81934c-4.05078 9.68066 -6.57031 19.9404 -8.08008 30.3105c-0.490234 4.43945 -1.09082 8.87988 -1.2002 13.3496c-0.700195 15.7305 0.839844 31.5498 4.66992 46.8203c2.12012 8.14941 4.76953 16.1797 8.30957 23.8301\nc6.32031 14.1992 15.3398 27.1797 26.3008 38.1895c6.2793 6.2002 13.1299 11.8398 20.5293 16.6699zM314.63 384.59c2.74023 -0.740234 5.41016 -1.74023 8.08984 -2.67969c6.36035 -2.33008 12.6807 -4.83984 18.71 -7.95996\nc13.1104 -6.44043 25.3105 -14.8105 35.8203 -24.9697c10.2002 -9.9502 18.7402 -21.6006 25.1396 -34.3408c1.28027 -2.75 2.64062 -5.45996 3.81055 -8.25977c6.30957 -15.0996 10 -31.2598 11.2295 -47.5703c0.410156 -4.54004 0.44043 -9.08984 0.450195 -13.6396\nc0.0703125 -11.6396 -1.49023 -23.25 -4.2998 -34.5303c-1.96973 -7.26953 -4.34961 -14.4893 -7.86035 -21.1797c-3.17969 -6.63965 -6.67969 -13.1602 -10.8398 -19.2402c-6.93945 -10.4697 -15.5996 -19.8701 -25.8203 -27.2197\nc-10.4795 -7.63965 -22.6396 -13.0195 -35.3994 -15.3799c-3.50977 -0.69043 -7.08008 -1.08008 -10.6602 -1.20996c-1.84961 -0.0605469 -3.71973 -0.160156 -5.55957 0.0996094c-0.280273 2.15039 0 4.31055 -0.0107422 6.45996\nc-0.0292969 3.73047 0.140625 7.4502 0.100586 11.1699c0.189453 7.02051 0.0195312 14.0508 0.209961 21.0703c0.0292969 2.37988 -0.0302734 4.75977 0.0292969 7.13965c0.170898 5.07031 -0.0390625 10.1406 0.140625 15.21\nc0.0996094 2.99023 -0.240234 6.04004 0.509766 8.95996c0.660156 2.5 1.78027 4.86035 3.08984 7.08008c4.45996 7.31055 11.0605 12.96 17.6807 18.2607c5.37988 4.17969 10.4697 8.76953 15.0195 13.8398c7.67969 8.37012 14.1699 17.8799 18.7803 28.2695\nc2.5 5.93066 4.51953 12.1006 5.5498 18.46c0.860352 4.37012 1.05957 8.83008 1.00977 13.2705c-0.0195312 7.84961 -1.39941 15.6494 -3.63965 23.1699c-1.75 5.72949 -4.27051 11.1797 -7.08984 16.4502c-3.87012 6.92969 -8.65039 13.3096 -13.96 19.1992\nc-9.94043 10.8506 -21.75 19.9404 -34.6006 27.1006c-1.84961 1.01953 -3.83984 1.82031 -5.62988 2.96973zM213.83 326.14c0.979492 1.18066 1.99023 2.33008 3.12012 3.37988c-0.610352 -0.929688 -1.27051 -1.80957 -1.9502 -2.67969\nc-3.09961 -3.87988 -5.54004 -8.30957 -7.03027 -13.0596c-0.870117 -3.27051 -1.67969 -6.60059 -1.72949 -10c-0.0703125 -2.52051 -0.0800781 -5.07031 0.319336 -7.57031c1.13086 -7.62988 4.33008 -14.8496 8.77051 -21.1201c2 -2.7002 4.25 -5.26953 6.91992 -7.33008\nc1.62012 -1.26953 3.53027 -2.08984 5.33984 -3.0498c3.11035 -1.67969 6.32031 -3.22949 9.07031 -5.47949c2.66992 -2.09082 4.5498 -5.33008 4.39941 -8.79004c-0.00976562 -73.6709 0 -147.341 -0.00976562 -221.021c0 -1.34961 -0.0800781 -2.7002 0.0400391 -4.04004\nc0.129883 -1.47949 0.820312 -2.83008 1.46973 -4.14941c0.860352 -1.66016 1.78027 -3.34082 3.18066 -4.62012c0.849609 -0.770508 1.96973 -1.40039 3.14941 -1.24023c1.5 0.200195 2.66016 1.34961 3.4502 2.57031c0.959961 1.50977 1.67969 3.15918 2.28027 4.84961\nc0.759766 2.12988 0.439453 4.41992 0.540039 6.62988c0.139648 4.03027 -0.0205078 8.06055 0.139648 12.0898c0.0302734 5.89062 0.0302734 11.7705 0.0605469 17.6602c0.139648 3.62012 0.0292969 7.24023 0.109375 10.8604\nc0.150391 4.0293 -0.0195312 8.05957 0.140625 12.0898c0.0292969 5.99023 0.0292969 11.9795 0.0693359 17.9697c0.140625 3.62012 0.0205078 7.24023 0.110352 10.8604c0.139648 3.92969 -0.0205078 7.85938 0.139648 11.7803\nc0.0302734 5.98926 0.0302734 11.9795 0.0605469 17.9697c0.160156 3.93945 -0.00976562 7.87988 0.189453 11.8193c0.290039 -1.43945 0.129883 -2.91992 0.220703 -4.37988c0.189453 -3.60938 0.419922 -7.22949 0.759766 -10.8398\nc0.320312 -3.43945 0.439453 -6.88965 0.859375 -10.3193c0.370117 -3.10059 0.510742 -6.2207 0.950195 -9.31055c0.570312 -4.08984 0.870117 -8.20996 1.54004 -12.29c1.45996 -9.04004 2.83008 -18.1104 5.08984 -26.9902c1.13086 -4.81934 2.40039 -9.60938 4 -14.2998\nc2.54004 -7.89941 5.7207 -15.6699 10.3105 -22.6201c1.72949 -2.63965 3.87012 -4.97949 6.09961 -7.20996c0.270508 -0.25 0.549805 -0.509766 0.879883 -0.709961c0.600586 -0.25 1.31055 0.0703125 1.7002 0.570312c0.709961 0.879883 1.16992 1.93945 1.7002 2.92969\nc4.0498 7.7998 8.17969 15.5605 12.3398 23.3105c0.700195 1.30957 1.44043 2.62012 2.56055 3.60938c1.75 1.57031 3.83984 2.69043 5.97949 3.62988c2.87988 1.2207 5.90039 2.19043 9.03027 2.41992c6.58008 0.620117 13.1094 -0.75 19.5596 -1.84961\nc3.69043 -0.580078 7.40039 -1.16992 11.1299 -1.41016c3.74023 -0.0996094 7.48047 -0.0498047 11.21 0.280273c8.55078 0.919922 16.9902 2.95996 24.9404 6.25c5.2998 2.24023 10.46 4.83008 15.3096 7.92969c11.46 7.20996 21.46 16.5703 30.04 27.0107\nc1.16992 1.41992 2.25 2.89941 3.45996 4.2793c-1.19922 -3.24023 -2.66992 -6.37012 -4.15918 -9.47949c-1.25 -2.90039 -2.84082 -5.61035 -4.27051 -8.41992c-5.16016 -9.62988 -11.0195 -18.9102 -17.75 -27.5205\nc-4.03027 -5.20996 -8.53027 -10.0498 -13.3301 -14.5703c-6.63965 -6.0498 -14.0703 -11.3691 -22.4297 -14.7598c-8.20996 -3.37012 -17.3105 -4.62988 -26.0898 -3.29004c-3.56055 0.580078 -7.01074 1.69043 -10.4102 2.87988\nc-2.79004 0.970703 -5.39062 2.38086 -8.03027 3.69043c-3.42969 1.70996 -6.63965 3.80957 -9.70996 6.08008c2.70996 -3.06055 5.69043 -5.86035 8.7002 -8.61035c4.26953 -3.75977 8.74023 -7.30957 13.6299 -10.2295c3.98047 -2.4502 8.29004 -4.40039 12.8398 -5.51074\nc1.45996 -0.369141 2.95996 -0.459961 4.4502 -0.599609c-1.25 -1.09961 -2.62988 -2.04004 -3.99023 -2.97949c-9.60938 -6.54004 -20.0098 -11.8604 -30.6895 -16.4307c-20.8604 -8.7002 -43.1699 -13.9697 -65.7402 -15.3398\nc-4.66016 -0.240234 -9.32031 -0.360352 -13.9805 -0.360352c-4.97949 0.110352 -9.96973 0.130859 -14.9199 0.650391c-11.2002 0.759766 -22.29 2.73047 -33.1699 5.42969c-10.3496 2.70996 -20.5498 6.12012 -30.2998 10.5508\nc-8.70996 3.85938 -17.1201 8.41992 -24.9902 13.79c-1.83008 1.30957 -3.74023 2.5293 -5.37012 4.0791c6.60059 1.19043 13.0303 3.39062 18.9902 6.48047c5.74023 2.86035 10.9902 6.66016 15.6299 11.0703c2.24023 2.18945 4.29004 4.58984 6.19043 7.08984\nc-3.43066 -2.12988 -6.93066 -4.15039 -10.6201 -5.78027c-4.41016 -2.16016 -9.07031 -3.76953 -13.8105 -5.01953c-5.72949 -1.52051 -11.7393 -1.73047 -17.6094 -1.14062c-8.12988 0.950195 -15.8604 4.27051 -22.5098 8.98047\nc-4.32031 2.93945 -8.2207 6.42969 -11.96 10.0596c-9.93066 10.1602 -18.2002 21.8105 -25.6602 33.8604c-3.94043 6.26953 -7.53027 12.75 -11.1201 19.2197c-1.0498 2.04004 -2.15039 4.0498 -3.17969 6.10059c2.84961 -2.9209 5.56934 -5.9707 8.42969 -8.88086\nc8.99023 -8.96973 18.5596 -17.4395 29.1602 -24.4795c7.5498 -4.90039 15.6699 -9.23047 24.5596 -11.0303c3.11035 -0.729492 6.32031 -0.469727 9.46973 -0.80957c2.77051 -0.280273 5.56055 -0.200195 8.34082 -0.299805\nc5.0498 -0.0605469 10.1094 -0.0400391 15.1592 0.15918c3.65039 0.160156 7.27051 0.660156 10.8906 1.09082c2.06934 0.25 4.10938 0.709961 6.13965 1.19922c3.87988 0.950195 8.11035 0.959961 11.8301 -0.609375c4.75977 -1.85059 8.44043 -5.64062 11.3799 -9.70996\nc2.16016 -3.02051 4.06055 -6.2207 5.66016 -9.58008c1.16016 -2.43066 2.45996 -4.79004 3.5498 -7.26074c1 -2.23926 2.15039 -4.41992 3.41992 -6.51953c0.669922 -1.01953 1.40039 -2.15039 2.62012 -2.5498c1.06055 0.75 1.70996 1.91016 2.28027 3.03027\nc2.09961 4.15918 3.41992 8.64941 4.88965 13.0498c2.02051 6.58984 3.78027 13.2695 5.19043 20.0195c2.20996 9.25 3.25 18.7197 4.54004 28.1299c0.55957 3.98047 0.830078 7.99023 1.30957 11.9707c0.870117 10.6396 1.90039 21.2695 2.24023 31.9395\nc0.0800781 1.86035 0.240234 3.70996 0.25 5.57031c0.00976562 4.34961 0.25 8.68945 0.219727 13.0303c-0.00976562 2.37988 -0.00976562 4.75977 0 7.12988c0.0498047 5.06934 -0.200195 10.1396 -0.219727 15.21c-0.200195 6.60938 -0.709961 13.2002 -1.29004 19.7793\nc-0.730469 5.88086 -1.5498 11.7803 -3.12012 17.5107c-2.0498 7.75 -5.58984 15.0293 -9.7998 21.8193c-3.16016 5.07031 -6.79004 9.87988 -11.0898 14.0303c-3.87988 3.86035 -8.58008 7.08008 -13.9404 8.4502c-1.5 0.410156 -3.05957 0.450195 -4.58984 0.639648\nc0.0703125 2.99023 0.700195 5.93066 1.25977 8.85059c1.58984 7.70996 3.7998 15.2998 6.76074 22.5996c1.51953 4.03027 3.40918 7.90039 5.38965 11.7197c3.4502 6.56055 7.62012 12.79 12.46 18.46zM245.1 324.44\nc0.350586 0.0595703 0.709961 0.119141 1.07031 0.189453c0.19043 -1.79004 0.0898438 -3.58008 0.0996094 -5.37012v-38.1299c-0.00976562 -1.74023 0.130859 -3.49023 -0.149414 -5.21973c-0.360352 0.0302734 -0.709961 0.0498047 -1.06055 0.0498047\nc-0.949219 3.75 -1.71973 7.5498 -2.61914 11.3096c-0.380859 1.53027 -0.580078 3.09082 -1.07031 4.59082c-1.7002 0.239258 -3.42969 0.169922 -5.15039 0.199219c-5.05957 0.0107422 -10.1299 0 -15.1895 0.0107422\nc-1.66016 0.00976562 -3.32031 -0.0898438 -4.98047 0.0292969c-0.0302734 0.390625 -0.259766 0.910156 0.160156 1.18066c1.28027 0.649414 2.71973 0.879883 4.05957 1.34961c3.43066 1.13965 6.88086 2.16016 10.3105 3.31055\nc1.38965 0.479492 2.90039 0.719727 4.16016 1.54004c0.0400391 0.55957 0.0195312 1.12988 -0.0498047 1.67969c-1.23047 0.549805 -2.53027 0.870117 -3.81055 1.28027c-3.12988 1.0293 -6.29004 1.95996 -9.41016 3.01953c-1.79004 0.620117 -3.66992 1 -5.41016 1.79004\nc-0.0292969 0.370117 -0.0693359 0.730469 -0.109375 1.08984c5.08984 0.19043 10.2002 -0.0595703 15.2998 0.120117c3.36035 0.129883 6.73047 -0.0800781 10.0898 0.0703125c0.120117 0.389648 0.259766 0.769531 0.370117 1.16016\nc1.08008 4.93945 2.33008 9.8291 3.38965 14.75zM251.07 324.64c0.359375 -0.0498047 0.719727 -0.120117 1.08008 -0.199219c0.979492 -3.85059 1.72949 -7.76074 2.70996 -11.6104c0.359375 -1.41992 0.55957 -2.87988 1.0293 -4.27051\nc2.53027 -0.179688 5.07031 0.0107422 7.61035 -0.0498047c5.16016 -0.120117 10.3301 -0.120117 15.4902 -0.0693359c0.759766 0.00976562 1.51953 -0.0302734 2.2793 -0.0800781c-0.0390625 -0.360352 -0.0693359 -0.720703 -0.0996094 -1.08008\nc-1.82031 -0.830078 -3.78027 -1.25 -5.66992 -1.89062c-3.73047 -1.22949 -7.48047 -2.38965 -11.2197 -3.56934c-0.570312 -0.169922 -1.12012 -0.419922 -1.66992 -0.640625c-0.150391 -0.549805 -0.180664 -1.12012 -0.120117 -1.68945\nc0.870117 -0.480469 1.81934 -0.810547 2.76953 -1.08984c4.87988 -1.52051 9.73047 -3.14062 14.6299 -4.60059c0.379883 -0.129883 0.780273 -0.269531 1.12988 -0.490234c0.400391 -0.269531 0.230469 -0.790039 0.150391 -1.17969\nc-1.66016 -0.129883 -3.30957 -0.0302734 -4.96973 -0.0400391c-5.16992 -0.00976562 -10.3301 0.00976562 -15.5 -0.00976562c-1.61035 -0.0302734 -3.21973 0.0195312 -4.82031 -0.209961c-0.519531 -1.66992 -0.719727 -3.41992 -1.16992 -5.11035\nc-0.94043 -3.56934 -1.51953 -7.24023 -2.54004 -10.7793c-0.360352 -0.0107422 -0.709961 -0.0205078 -1.05957 -0.0605469c-0.290039 1.73047 -0.150391 3.48047 -0.150391 5.21973v38.1299c0.0205078 1.78027 -0.0800781 3.58008 0.110352 5.37012zM65.0498 279.67\nc1.12012 2.15039 2.08008 4.40039 3.37012 6.45996c-1.82031 -7.55957 -2.91016 -15.2695 -3.62012 -23c-0.799805 -7.70996 -0.849609 -15.4902 -0.540039 -23.2295c1.0498 -19.9404 5.54004 -39.8301 14.2305 -57.8809c2.99023 -5.98926 6.34961 -11.8291 10.5 -17.1094\nc6.12012 -7.46973 12.5293 -14.7598 19.8398 -21.0898c4.7998 -4.10059 9.99023 -7.78027 15.54 -10.8008c3.26953 -1.64941 6.50977 -3.38965 9.93945 -4.67969c5.01074 -2.03027 10.1904 -3.60938 15.4209 -4.93945c3.8291 -0.959961 7.7793 -1.41016 11.5195 -2.70996\nc5 -1.57031 9.46973 -4.61035 13.0303 -8.43066c4.92969 -5.22949 8.08984 -11.8701 10.2002 -18.6699c0.989258 -2.89941 1.58984 -5.91016 2.16992 -8.91992c0.149414 -0.75 0.219727 -1.51953 0.15918 -2.29004c-6.5 -2.78027 -13.2598 -5.05957 -20.2598 -6.17969\nc-4.10938 -0.780273 -8.29004 -0.990234 -12.46 -1.08008c-10.25 -0.240234 -20.4697 1.75977 -30.1201 5.12012c-3.73926 1.41992 -7.48926 2.84961 -11.0293 4.71973c-8.06055 3.83984 -15.6406 8.7002 -22.46 14.46c-2.9209 2.5498 -5.83008 5.12988 -8.40039 8.03027\nc-9.16016 9.83008 -16.2998 21.4102 -21.79 33.6494c-2.38965 5.55078 -4.61035 11.1807 -6.37012 16.96c-1.16992 3.94043 -2.36035 7.89062 -3.25977 11.9102c-0.75 2.94043 -1.21973 5.9502 -1.87012 8.91992c-0.459961 2.14062 -0.69043 4.32031 -1.03027 6.48047\nc-0.849609 5.42969 -1.2793 10.9297 -1.33008 16.4297c0.110352 6.18066 0.25 12.3701 1.07031 18.5c0.400391 2.86035 0.669922 5.74023 1.15039 8.60059c0.979492 5.69922 2.13965 11.3691 3.70996 16.9297c3.08984 11.6504 7.47949 22.9502 12.6895 33.8398z\nM428.78 286.11c1.09961 -1.66016 1.91016 -3.48047 2.7793 -5.26074c2.10059 -4.44922 4.24023 -8.89941 6.02051 -13.4893c7.61035 -18.7607 12.2998 -38.79 13.04 -59.0508c0.0195312 -1.75977 0.0703125 -3.51953 0.110352 -5.29004\nc0.129883 -9.56934 -1.27051 -19.0898 -3.18066 -28.4492c-0.729492 -3.58984 -1.54004 -7.16992 -2.58008 -10.6904c-4.04004 -14.7197 -10 -29 -18.4102 -41.7803c-8.20996 -12.5693 -19.0098 -23.5498 -31.8398 -31.4092\nc-5.72949 -3.59082 -11.79 -6.64062 -18.0498 -9.19043c-5.78027 -2.19043 -11.71 -4.03027 -17.7998 -5.11035c-6.40039 -1.0498 -12.9102 -1.51953 -19.4004 -1.22949c-7.91992 0.479492 -15.7793 2.07031 -23.21 4.84961\nc-1.93945 0.799805 -3.93945 1.45996 -5.83984 2.33008c-0.209961 1.50977 0.25 2.99023 0.530273 4.45996c1.16016 5.74023 3.03027 11.3604 5.7002 16.5801c2.36914 4.50977 5.51953 8.65039 9.45996 11.9004c2.42969 2.0498 5.23926 3.60938 8.15918 4.83008\nc3.58008 1.5 7.4707 1.96973 11.2402 2.83008c7.23047 1.70996 14.3701 3.92969 21.1504 7c10.3496 4.64941 19.71 11.3799 27.6494 19.46c1.59082 1.60938 3.23047 3.17969 4.74023 4.86914c3.37012 3.76074 6.70996 7.57031 9.85059 11.5303\nc7.47949 10.0703 12.8193 21.5898 16.71 33.4805c1.58008 5.2998 3.20996 10.5996 4.20996 16.0498c0.629883 2.87012 1.04004 5.78027 1.51953 8.67969c0.870117 6.08984 1.58984 12.2207 1.67969 18.3799c0.120117 6.65039 0.140625 13.3203 -0.529297 19.9404\nc-0.730469 7.99023 -1.87012 15.96 -3.70996 23.7803z\" />\n    <glyph glyph-name=\"phoenix-squadron\" unicode=\"&#xf511;\" horiz-adv-x=\"512\" \nd=\"M96 384.62c46.4902 36.1299 105.55 56.0703 164.51 54.5703c29.5801 0.379883 59.1104 -5.37012 86.9102 -15.3301c-24.1299 4.62988 -49 6.33984 -73.3799 2.44922c-42.8701 -5.30957 -83.04 -27.1494 -111.83 -59.1797c5.66992 1 10.7803 3.66992 16 5.86035\nc18.1396 7.87012 37.4902 13.2598 57.2305 14.8301c19.7393 2.12988 39.6396 0.429688 59.2793 -1.91992c-14.4199 -2.79004 -29.1201 -4.57031 -43 -9.59082c-34.4297 -11.0693 -65.2695 -33.1592 -86.2998 -62.6299c-13.7998 -19.71 -23.6299 -42.8594 -24.6699 -67.1299\nc-0.349609 -16.4902 5.21973 -34.8096 19.8301 -44c7.01465 -4.23926 19.3594 -7.67969 27.5547 -7.67969c2.77539 0 7.23926 0.420898 9.96484 0.939453c15.4502 2.45996 30.0703 8.64062 43.6006 16.3301c11.5195 6.82031 22.6699 14.5508 32 24.25\nc3.79004 3.2207 2.53027 8.4502 2.62012 12.79c-2.12012 0.339844 -4.37988 1.11035 -6.30078 -0.299805c-9.47656 -5.19531 -25.5244 -12.0811 -35.8193 -15.3701c-20 -6.16992 -42.1602 -8.45996 -62.1006 -0.779297c12.79 -1.73047 26.0605 -0.310547 37.7402 5.43945\nc20.2305 9.71973 36.8105 25.2002 54.4404 38.7705c23.0107 17.7168 62.8379 42.4951 88.8994 55.3096c25.71 12 52.9404 22.7803 81.5703 24.1201c-15.6299 -13.7197 -32.1504 -26.5205 -46.7803 -41.3799c-14.5098 -14 -27.46 -29.5 -40.1094 -45.1807\nc-3.52051 -4.59961 -8.9502 -6.93945 -13.5801 -10.1592c-18.8516 -12.6768 -42.0986 -39.6016 -51.8906 -60.1006c-9.33008 -19.6797 -14.5 -41.8496 -11.7695 -63.6494c1.93945 -13.6904 8.70996 -27.5908 20.8994 -34.9102c12.9004 -8 29.0508 -8.07031 43.4805 -5.10059\nc32.7998 7.4502 61.4297 28.8906 81 55.8408c20.4404 27.5195 30.5195 62.1992 29.1602 96.3496c-0.520508 7.5 -1.57031 15 -1.66016 22.4902c8 -19.4805 14.8203 -39.71 16.6504 -60.8301c2 -14.2803 0.75 -28.7598 -1.62012 -42.9004\nc-1.91016 -11 -5.66992 -21.5098 -7.78027 -32.4297c17.209 19.293 34.833 55.6123 39.3398 81.0703c1.24121 7.8584 2.24902 20.6953 2.24902 28.6514c0 21.957 -7.37305 55.999 -16.459 75.9883c20.7803 -32 32.3398 -69.5801 35.71 -107.48\nc0.490234 -12.7295 0.490234 -25.5098 0 -38.2295c-2.37305 -28.7334 -15.6289 -72.5254 -29.5898 -97.75c-26.1201 -47.3398 -68 -85.6299 -117.19 -108c-78.29 -36.2305 -174.68 -31.3203 -248 14.6797c-32.9014 20.1289 -73.8711 64.3281 -91.4492 98.6602\nc-12.291 24.2021 -23.6523 65.8301 -25.3604 92.9199v31.3398c3.92969 69.7402 40.8701 135.92 96 178.36zM318 304.29c4.54688 0.770508 11.7148 2.77734 16 4.47949c5 1.77051 9.24023 5.94043 10.3203 11.2207c-8.95996 -4.99023 -17.9805 -9.91992 -26.3203 -15.7002z\n\" />\n    <glyph glyph-name=\"sith\" unicode=\"&#xf512;\" \nd=\"M0 416l118.75 -69.71l-11.5195 58.9004l91.0596 -69.8701c8.5 1.50977 17.0996 2.29004 25.71 2.29004s17.21 -0.770508 25.71 -2.29004l91.0596 69.8701l-11.5195 -58.9004l118.75 69.71l-69.71 -118.75l58.8604 11.5195l-69.8408 -91.0293\nc3.04004 -17.0098 3.03027 -34.4404 0 -51.4502l69.8408 -91.0303l-58.8604 11.5205l69.71 -118.78l-118.75 69.71l11.5195 -58.8604l-91.0293 69.8408c-17.0098 -3.04004 -34.46 -3.04004 -51.4805 0l-91.0293 -69.8408l11.5195 58.8604l-118.75 -69.71l69.71 118.78\nl-58.8604 -11.5205l69.8408 91.0303c-1.25488 7.04492 -2.27246 18.5693 -2.27246 25.7246c0 7.15625 1.01758 18.6807 2.27246 25.7256l-69.8408 91.0293l58.8604 -11.5195zM224 316.22c-31.7998 0 -63.6104 -12.0898 -87.8496 -36.3398\nc-48.4902 -48.4902 -48.5 -127.2 0 -175.7c48.5 -48.4893 127.21 -48.5195 175.699 -0.0292969c48.4902 48.4893 48.5 127.199 0 175.699c-24.25 24.25 -56.0498 36.3701 -87.8496 36.3701zM224 279.56c22.4199 0 44.8301 -8.51953 61.9199 -25.6094\nc34.1904 -34.1904 34.1797 -89.6904 0 -123.87c-34.1895 -34.1797 -89.6504 -34.1904 -123.84 0c-34.1904 34.1895 -34.1797 89.6895 0 123.87c17.0898 17.0898 39.5 25.6094 61.9199 25.6094z\" />\n    <glyph glyph-name=\"trade-federation\" unicode=\"&#xf513;\" horiz-adv-x=\"496\" \nd=\"M248 439.2c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -43.5996c129.7 0 234.8 105.1 234.8 234.8s-105.1 234.8 -234.8 234.8s-234.8 -105.1 -234.8 -234.8s105.1 -234.8 234.8 -234.8zM403.1 284.9v-0.100586h-145.699\nv-34.7998h83.2998v-47h-83.2998v-195.8h-48.8008v196.8h-117.699l-36.7002 46h155.1v81.7002h193.8v-46.7998zM329.8 239.8h-82.8994v56.2002h145v24.4004h-171.801v-80.6006h-143.899l20.0996 -23.8994h123.8v-197.4h26.8008v197.4h82.8994v23.8994zM168.5 308.8l22 9.2998\nl-15.7998 -18.0996l15.7002 -18.0996l-22.2002 9.5l-12.2998 -20.5l2.09961 24l-23.2998 5.39941l23.5 5.40039l-2.10059 23.7998zM138.9 328.5l9.5 -10.2002l-13.8008 5.2998l-6.7998 -12.1992l0.799805 14.6992l-13.6992 2.7002l14.2998 3.7998l-1.7002 13.9004\nl8 -12.4004l12.7002 5.90039zM304.3 183.3l-9.2998 -10.7998l9.40039 -10.7002l-13.1006 5.5l-7.2998 -12.2002l1.2002 14.2002l-13.9004 3.2002l13.9004 3.2002l-1.2998 14.2002l7.2998 -12.2002zM411.2 260.5l-15 -17.5996l15.0996 -17l-21.2002 8.7998l-11.5 -19.6006\nl1.80078 22.9004l-22.2002 4.90039l22.2998 5.39941l-2.2002 22.7002l12 -19.5996zM248 418.1c125.3 0 226.9 -101.6 226.9 -226.899s-101.601 -226.9 -226.9 -226.9s-226.9 101.601 -226.9 226.9s101.601 226.899 226.9 226.899zM342.6 252h-83.1992v30.9004h145.699\nv50.6992h-197.8v-81.5996h-157.399l40 -49.9004h116.699v-196.8h52.7002v195.7h83.2998v51zM248 404.8c-94.5996 0 -174.9 -61.5996 -202.9 -146.8h157.4v81.5996h199.1c-38.7998 40.2002 -93.2998 65.2002 -153.6 65.2002zM248 -22.2998c117.9 0 213.5 95.5996 213.4 213.5\nc0 51.8994 -18.5 99.5 -49.3008 136.5v-50.7998h-145.6v-19.2002h83.2002v-62.7002h-83.2998v-195.8h-64.6006v196.8h-114.7l-43.7998 56.2998c-5.7998 -19.2998 -8.89941 -39.8994 -8.89941 -61.0996c0 -117.9 95.6992 -213.5 213.6 -213.5zM178.8 173l22.7002 9.2998\nl-16.9004 -17.0996l15.8008 -18.7998l-21.5 10.7998l-13 -20.9004l3.69922 23.7998l-23.7998 5.90039l23.7002 3.90039l-1.7002 24.5z\" />\n    <glyph glyph-name=\"wolf-pack-battalion\" unicode=\"&#xf514;\" horiz-adv-x=\"512\" \nd=\"M267.73 -23.5303l-11.4404 -21.1396l-11.4404 21.1104l-10.5596 -15.8408l-5.28027 12.3203l-5.2793 -7v-29.8301c-21.0605 7.91992 -21.1104 66.8604 -25.5107 97.21c-4.62012 31.8799 0.879883 92.8105 -81.3701 149.11c8.88086 23.5996 12 49.4297 2.64062 80.0498\nc-27.8701 -3.33008 -53.9404 -10.5801 -63.3398 -54.0996l30.3496 -8.36035c-11.2002 -23.04 -17.0195 -46.7598 -13.2002 -72.1396l27.2705 7l6.16016 -33.4307l18.4697 7l8.7998 -33.4297l19.3496 7l-26.4297 -21.0596l-8.7998 28.1494l-24.6299 -5.28027l-7 35.6309\nl-26.3906 -14.5205c-0.25 20.0205 -6.95996 58.0605 8.80078 84.4502l-26.3906 -5.28027c-3.99023 22.0703 2.37988 39.21 7.91992 56.7402l-22.4297 -9.67969c0.44043 25.0693 29.9404 56.79 61.5898 58.5098c20.2197 1.08984 56.7305 25.1602 54.1006 51.8994\nc-1.95996 19.8701 -17.4502 42.6201 -43.1104 49.7002c43.9795 -36.5098 9.71973 -67.2998 -5.28027 -73.46c-4.39941 11.4404 -17.54 69.0801 0 130.2c40.4697 -22.8701 89.7002 -65.0996 93.21 -147.86l58.0605 -38.71l3.51953 -93.25l-107.33 59.8203l-7 -7\nl17.5801 -3.50977l44 -38.71l15.8398 5.2793l28.1504 -49.2598l3.51953 -119.64l-21.1094 -15.8398l32.5498 -15.8398l32.5498 15.8398l-21.1094 15.8398l3.51953 119.64l28.0996 49.25l15.8408 -5.28027l44 38.7109l17.5898 3.51953l-7 7l-107.3 -59.7695l3.51953 93.25\nl58 38.71c3.5498 82.6895 52.8096 124.92 93.2002 147.79c17.54 -61.1201 4.39941 -118.761 0 -130.2c-14.96 6.16016 -49.2803 36.9502 -5.28027 73.46c-25.6602 -7.08008 -41.1104 -29.8301 -43.1104 -49.7002c-2.63965 -26.7305 33.8809 -50.8096 54.1006 -51.9004\nc31.6396 -1.70996 61.1396 -33.4297 61.5801 -58.5l-22.4307 9.68066c5.54004 -17.5303 11.9209 -34.6699 7.9209 -56.7402l-26.3906 5.28027c15.7998 -26.3906 9.0498 -64.4502 8.7998 -84.4502l-26.3896 14.5195l-7 -35.6299l-24.5898 5.24023l-8.7998 -28.1504\nl-26.3906 21.1104l19.3506 -7l8.7998 33.3896l18.4697 -7l6.16016 33.4307l27.2803 -7.05078c3.7998 25.3809 -2.0498 49.1406 -13.2002 72.1406l30.3496 8.35938c-9.42969 43.5205 -35.4297 50.7305 -63.3398 54.1006\nc-9.35938 -30.6201 -6.24023 -56.4404 2.64062 -80.0498c-82.25 -56.3008 -76.75 -117.221 -81.3701 -149.11c-4.40039 -30.3496 -4.4502 -89.29 -25.5107 -97.21v29.9502l-5.2793 7l-5.28027 -12.3203zM346.9 71.4697l-15.8408 10.5303\nc7.4707 4.36035 13.7607 8.41992 19.3506 12.3203c-0.600586 -7.2207 -0.270508 -13.8398 -3.50977 -22.8398v-0.0107422zM375.05 120.73c-0.399414 -10.9404 -0.899414 -21.6602 -1.75977 -31.6709c-7.84961 1.86035 -15.5703 3.80078 -21.1104 7\nc8.24023 7.94043 15.5508 16.3203 22.8701 24.6807v-0.00976562zM399.68 115.45l-23.75 6.16016c5.62695 7.16797 13.9014 19.3848 18.4707 27.2695c3.22949 -9.21973 5.2793 -20 5.2793 -33.4297zM403.2 196.39c19.4395 -12.8096 27.7998 -33.6592 29.9102 -56.2998\nc-12.3203 4.53027 -24.6299 9.31055 -36.9502 10.5605c5.05957 12 6.64941 28.1396 7 45.7393h0.0400391zM401.44 242.13c18.5596 -2.62988 35.1494 -9.18945 45.7598 -28.1494c-14.2197 -4.36035 -24.7803 -5.9707 -44 -14.0801\nc0.0800781 13.4092 -0.950195 27.9297 -1.75977 42.2295zM165.68 71.4805c-3.23926 9 -2.91016 15.5791 -3.50977 22.8398c5.58984 -3.90039 11.8799 -7.95996 19.3496 -12.3203zM137.53 120.74c7.31934 -8.36035 14.6299 -16.7402 22.8701 -24.6699\nc-5.54004 -3.2002 -13.2607 -5.14062 -21.1104 -7c-0.860352 10.0098 -1.36035 20.7295 -1.75977 31.6699zM112.89 115.46c0 13.4297 2 24.21 5.28027 33.4297c4.56934 -7.88477 12.8438 -20.1016 18.4697 -27.2695zM109.37 196.4h0.0898438\nc0.349609 -17.6006 2 -33.7402 7 -45.7402c-12.3701 -1.25 -24.6797 -6.03027 -37 -10.5605c2.11035 22.6406 10.4697 43.4902 29.9102 56.3008zM111.13 242.14c-0.80957 -14.2998 -1.83984 -28.8193 -1.75977 -42.2295c-19.2197 8.10938 -29.7803 9.71973 -44 14.0801\nc10.6299 18.9502 27.2295 25.5195 45.7598 28.1494z\" />\n    <glyph glyph-name=\"hornbill\" unicode=\"&#xf592;\" horiz-adv-x=\"512\" \nd=\"M76.3799 77.7002c0.182617 -1.37207 0.331055 -3.6084 0.331055 -4.99219c0 -20.8662 -16.9346 -37.8008 -37.7998 -37.8008s-37.7998 16.9346 -37.7998 37.8008c0 20.8652 16.9346 37.7998 37.7998 37.7998c1.49805 0 3.91602 -0.173828 5.39844 -0.387695\nc-78.2793 111.35 52 190.53 52 190.53c-5.85938 -43 -8.23926 -91.1602 -8.23926 -91.1602c-67.3105 -41.4902 0.929688 -64.0605 39.8096 -72.8701c18.6445 -50.7129 77.6279 -91.9023 131.66 -91.9404c1.91992 0 3.76953 0.209961 5.66992 0.280273l0.110352 -18.8604\nc-99.2207 -1.38965 -158.7 29.1406 -188.94 51.6006zM184.38 405.4c109.75 73.9395 187.601 -54.0605 187.601 -54.0605c-43.04 5.86035 -91.1807 8.24023 -91.1807 8.24023c-43.0996 70.0098 -65.7998 -6.58008 -73.7998 -44.29\nc-48.4805 -19.5557 -87.8545 -77.8545 -87.8896 -130.13c0 -0.910156 0.139648 -1.78027 0.139648 -2.67969l-21.8398 -0.150391c-1.41016 100.43 29.8701 160.09 52.4199 190c-0.842773 -0.0683594 -2.21191 -0.123047 -3.05664 -0.123047\nc-20.9482 0 -37.9502 17.001 -37.9502 37.9492c0 20.9492 17.002 37.9502 37.9502 37.9502c13.1934 0 28.5273 -9.65723 34.2266 -21.5566c2.04199 -4.25488 3.7002 -11.5381 3.7002 -16.2578c0 -1.35547 -0.143555 -3.54785 -0.320312 -4.8916zM488.57 271.23\nc-4.21777 -2.00879 -11.3906 -3.63867 -16.0615 -3.63867c-0.886719 0 -2.32422 0.0625 -3.20898 0.138672c84.4502 -113.45 -49 -194.61 -49 -194.61c5.87012 43.0303 8.20996 91.1602 8.20996 91.1602c66.6006 40.96 0.640625 63.54 -38.46 72.54\nc-19.3633 48.9775 -77.8232 88.7422 -130.49 88.7598c-2.75 0 -5.43945 -0.259766 -8.13965 -0.410156l-0.139648 22.5c93.6094 1.33008 151.72 -25.7998 183.45 -47.7402c-0.226562 1.52539 -0.40918 4.01465 -0.40918 5.55566c0 20.9434 16.9971 37.9404 37.9395 37.9404\nc20.9434 0 37.9404 -16.9971 37.9404 -37.9404c0 -13.2236 -9.69043 -28.5703 -21.6309 -34.2549zM374.06 11.7598v-0.0595703c0.0917969 0.000976562 0.239258 0.000976562 0.330078 0.000976562c20.9375 0 37.9297 -16.9922 37.9297 -37.9297\ns-16.9922 -37.9297 -37.9297 -37.9297c-13.1963 0 -28.5273 9.66211 -34.2197 21.5684c-1.76367 3.66602 -3.39453 9.93848 -3.63965 14c-111.98 -80.3398 -191.9 51 -191.9 51c43.0703 -5.87988 91.1904 -8.21973 91.1904 -8.21973\nc41.3301 -67.1709 63.9199 0.540039 72.7695 39.4893c50.418 18.7646 91.3604 77.6543 91.3906 131.45c0 2.08008 -0.220703 4.08984 -0.300781 6.15039l19.5205 0.139648c1.28027 -89.9697 -23.71 -147.2 -45.1406 -179.66z\" />\n    <glyph glyph-name=\"mailchimp\" unicode=\"&#xf59e;\" \nd=\"M330.61 204.48c-2.50977 3.17969 -4.70996 8.31934 -5.9707 14.3193c-2.22949 10.6807 -1.98926 18.4102 4.24023 19.4199c6.23047 1.01074 9.25 -5.45996 11.4805 -16.1299c1.5 -7.17969 1.20996 -13.7803 -0.450195 -17.6094\nc-1.27832 0.165039 -3.36133 0.299805 -4.65039 0.299805c-1.28809 0 -3.37207 -0.134766 -4.64941 -0.299805zM277.05 196c-4.45996 1.95996 -10.2598 4.13965 -17.2598 3.7002c-12.5996 -0.770508 -21.75 -7.21973 -22.5996 -3.48047\nc-0.400391 1.83984 2.40918 4.87988 5.40918 7.06055c4.5791 3.35254 12.9014 6.07422 18.5762 6.07422c3.45312 0 8.84473 -1.07324 12.0342 -2.39453c8.63965 -3.7002 14.0098 -11.1504 12.1201 -13.0898c-1.08008 -1.12988 -3.81055 0.129883 -8.28027 2.12988z\nM268.05 190.87c9.68066 1.14941 16.8604 -4.62988 15.4004 -6.85059c-0.629883 -1.00977 -2.02051 -0.829102 -4.94043 -0.489258c-1.55078 0.239258 -4.08301 0.433594 -5.65234 0.433594c-3.72656 0 -9.58105 -1.06738 -13.0674 -2.38379\nc-4.04004 -1.62012 -4.30957 -1.15039 -5.20996 -0.810547c-1.53027 3.57031 4.40039 8.68066 13.4697 10.1006zM322.22 173.77c-3.40039 -6.91016 -17.7002 0.0703125 -14.2998 7c3.40039 6.93066 17.6797 -0.129883 14.2998 -7zM337.88 194.24\nc7.69922 -0.149414 7.42969 -16.0605 -0.259766 -15.9307c-7.69043 0.130859 -7.40039 16.0605 0.259766 15.9307zM119.09 115.34c4.0293 0.910156 3.40039 -1.25 3.37012 -0.359375c0.256836 -0.317383 0.46582 -0.904297 0.46582 -1.3125\nc0 -0.299805 -0.119141 -0.755859 -0.265625 -1.01758c-3.16016 -7.37012 -20.1904 -7.68066 -21.5801 9c-0.910156 10.8594 9.30957 21.0293 -2.28027 28.6191c-1.77734 1.17773 -4.95117 2.13281 -7.08301 2.13281c-3.84961 0 -8.67285 -2.62207 -10.7666 -5.85254\nc-3.2998 -5.16016 -3.11035 -12.2002 -7.37988 -11.6299c-3.7207 0.540039 -3.70996 14.4805 5 24.0801c7.22949 8 25.9492 11.9297 35.0498 -5.54004c8.11035 -15.3896 -8.2002 -27.7695 -3 -35.7695c2.46973 -3.80078 7.14941 -2.66016 8.46973 -2.35059zM418.81 132.41\nc6.44043 0 16.5605 -7.5 16.5605 -25.2705c0 -17.7695 -7.37012 -37.9092 -9.11035 -42.3799c-54.3896 -130.279 -264.56 -130.06 -322.29 3c-31.5293 -0.0400391 -64.1699 26.9805 -67.5293 60.3799c-0.256836 2.25195 -0.463867 5.91992 -0.463867 8.18652\nc0 7.21289 2.04395 18.5537 4.56348 25.3135l-14.7598 12.5107c-67.5498 57.04 143.72 291.85 211.27 232.93c0.339844 -0.299805 22.9902 -22.5205 23.0498 -22.5703l12.5508 5.33008c59.2695 24.5303 107.359 12.6904 107.42 -26.4697\nc0.0292969 -20.3604 -12.9404 -44.1006 -33.7305 -65.6504c26.1699 -24.2998 20.0205 -71.6094 21.5205 -83c7.19922 -2 30.6992 -7.62012 41.0996 -18.54c18.3604 -19.25 5.52051 -39.5801 3.07031 -43.25c4.20996 -11.2998 3.42969 -8.79004 6.7793 -20.5195z\nM102.81 84.25c29.4502 -0.680664 38.6309 28.2002 34.0908 57.8398c-9.74023 62.9404 -90.1699 48.9805 -84 -12.3301c2.44922 -24.3594 27.0898 -44.8994 49.9092 -45.5098zM84.2998 198.45c19.3105 51.8096 51.54 99.5498 94.2002 132.399\nc31.6504 26.4102 65.7998 45.3506 65.7998 45.3506s-18.3896 21.3193 -23.9395 22.8896c-34.1699 9.23047 -107.94 -41.6494 -155.051 -108.88c-19.0596 -27.21 -46.3096 -75.3604 -33.2998 -100.21c1.58984 -3 10.71 -10.9297 15.5898 -15\nc8.18066 11.9102 21.54 20.5 36.7002 23.4502zM323.18 97.2998c2.58984 0.259766 0.560547 -2.53027 0.560547 -2.53027s-27.4004 -12.75 -71 0.740234c1.20996 -10.2295 11.1699 -14.8193 15.9395 -16.6699c31.4004 -12.21 86.6904 -2.58008 128.46 26\nc0.850586 0.589844 1.41992 0 0.730469 -1c-28.9697 -41.3496 -128.73 -54.7598 -151.37 -21.3496c-12.0801 17.8301 -0.599609 43.8594 19.5498 41.1494c6.7998 -0.769531 53.7705 -8 100.48 13.6807c27.4893 12.7598 37.8701 26.79 36.3096 38.1602\nc-0.447266 3.00293 -2.57031 7.16504 -4.74023 9.28906c-5 4.83008 -12.79 8.60059 -26 12.3105c-4.35938 1.22949 -7.31934 2.00977 -10.5098 3.05957c-5.67969 1.83008 -8.47949 3.33008 -9.10938 14c-0.280273 4.62988 -1.09082 20.9102 -1.38086 27.6299\nc-0.519531 11.7607 -1.91992 27.8506 -11.9199 34.4902c-2.37305 1.51953 -6.58691 2.75195 -9.40527 2.75195c-1.1748 0 -3.05371 -0.229492 -4.19434 -0.511719c-5.69043 -0.969727 -9.06055 -4.00977 -13.2598 -7.50977\nc-12.4404 -10.3701 -22.9502 -12.0605 -34.6406 -11.5605c-6.98926 0.290039 -14.3994 1.37988 -22.8799 1.87988l-5 0.290039c-19.5801 1 -40.5693 -15.9092 -44.0693 -39.9092c-4.86035 -33.4307 19.3291 -50.7002 26.3291 -60.8301\nc0.912109 -1.0918 1.77246 -3.12598 1.9209 -4.54004c0 -1.94043 -1.25 -3.48047 -2.48047 -4.79004c-19.9805 -20.54 -26.3701 -53.1699 -18.8398 -80.3701c0.768555 -2.76562 2.35938 -7.12891 3.5498 -9.74023c17.7002 -41.2598 72.4902 -60.4795 126 -43\nc5.81152 1.89844 14.9238 5.74219 20.3398 8.58008c9.78906 4.8418 23.7441 15.2852 31.1504 23.3096c14.2002 14.8408 22.6396 30.9707 25.9297 50.8408c2.81055 18.6191 -7.78027 18.7598 -11.4395 18.0996c-1.13477 6.94531 -4.32422 17.8223 -7.12012 24.2803\nc-15.6299 -12.3506 -35.71 -20.9707 -51 -25.3506c-69.4004 -19.9102 -90.1904 6.35059 -96.4004 -13.8096c33.7705 -12.3701 69.5098 -7.07031 69.5098 -7.07031zM171.31 290.5l0.0605469 0.00976562c-0.0947266 -0.115234 -0.171875 -0.331055 -0.171875 -0.481445\nc0 -0.418945 0.34082 -0.759766 0.759766 -0.759766c0.124023 0 0.308594 0.0546875 0.412109 0.121094c11.4199 8.30078 64.9502 42.7705 134.5 26.8301c0.860352 -0.189453 1.39941 1.29004 0.639648 1.7207c-11.3398 6.33984 -28.6895 10.6494 -41 10.7393\nc-0.404297 0.00976562 -0.732422 0.345703 -0.732422 0.75c0 0.134766 0.0634766 0.332031 0.142578 0.44043c1.84668 2.41602 5.30078 5.88379 7.70996 7.74023c0.166992 0.126953 0.302734 0.401367 0.302734 0.611328c0 0.424805 -0.344727 0.770508 -0.770508 0.770508\nc-0.0146484 0 -0.0380859 -0.000976562 -0.0517578 -0.00195312c-17.5205 -1.08008 -37.5107 -9.4707 -49 -17.2998c-0.107422 -0.0751953 -0.300781 -0.136719 -0.431641 -0.136719c-0.414062 0 -0.75 0.335938 -0.75 0.75\nc0 0.0498047 0.00976562 0.12793 0.0214844 0.176758c0.899414 4.30957 3.72949 9.98926 5.18945 12.6494c0.0566406 0.0947266 0.102539 0.261719 0.102539 0.37207c0 0.402344 -0.327148 0.729492 -0.730469 0.729492\nc-0.110352 0 -0.276367 -0.0449219 -0.37207 -0.101562c-18.4697 -9.4502 -39.0898 -26.2803 -55.8301 -45.6299z\" />\n    <glyph glyph-name=\"megaport\" unicode=\"&#xf5a3;\" horiz-adv-x=\"496\" \nd=\"M214.5 238.4l33.4004 33.3994l33.3994 -33.3994v-66.4004l-33.2998 -33.2998l-33.5 33.5v66.2002zM248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM393.1 25.5996h0.100586v87.1006l-59.7002 59.7002v87.5996l-59.5 59.5\nv75.5996l-26.0996 19.2002l-26.1006 -19.2002v-75.5996l-59.5 -59.5v-87.9004l-59.5 -59.5v-87l26.1006 -19.1992l26.0996 19.1992v65.5l33.5 33.4004l33.4004 -33.4004v-65.5l26.0996 -19.1992l26.2002 19.1992v65.5l33.3994 33.4004l33.4004 -33.4004v-65.5l26 -19.1992z\n\" />\n    <glyph glyph-name=\"nimblr\" unicode=\"&#xf5a8;\" horiz-adv-x=\"384\" \nd=\"M246.6 148.71c15.5703 0 27.1504 -11.46 27.1504 -27s-11.6201 -27 -27.1504 -27c-15.6992 0 -27.1494 11.5703 -27.1494 27s11.5498 27 27.1494 27zM113 121.75c0 15.6104 11.6797 27 27.1504 27c15.4697 0 27.1494 -11.46 27.1494 -27s-11.4697 -27 -27.1494 -27\nc-15.4404 0 -27.1504 11.3096 -27.1504 27zM191.76 289c98.3701 0 177.76 -78.9102 177.76 -176.48c0 -97.5693 -79.6094 -176.52 -177.76 -176.52c-98.1494 0 -177.76 78.8701 -177.76 176.52v335.48l45.25 -227c30.2002 48.2305 97.75 68 132.51 68zM191.76 -19.1201\nc73.2402 0 132.51 58.96 132.51 131.64c0 72.6807 -59.2393 131.54 -132.51 131.54c-73.2695 0 -132.51 -58.8994 -132.51 -131.59c0 -72.6895 59.2402 -131.59 132.51 -131.59z\" />\n    <glyph glyph-name=\"rev\" unicode=\"&#xf5b2;\" \nd=\"M289.67 173.11c0 -36.1943 -29.375 -65.5801 -65.5703 -65.5801c-36.1943 0 -65.5693 29.375 -65.5693 65.5693c0 36.1953 29.375 65.5703 65.5693 65.5703h0.0107422c36.1445 -0.0439453 65.5156 -29.415 65.5596 -65.5596zM429.22 178.16v-210.16h-210.16v0.110352\nc-110.939 2.70996 -200.06 93.4092 -200.06 205c0 108.569 84.2998 197.319 191 204.569v38.3203l108.77 -62.7803l-108.77 -62.79v39.1201c-80 -7.16016 -143 -74.5498 -143 -156.43c0 -86.6201 70.4902 -157.12 157.11 -157.12s157.09 70.5 157.09 157.12\nc-0.0224609 47.1709 -32.1934 106.235 -71.8105 131.84l45.3799 26.2002c39.8018 -32.8584 73.0977 -101.402 74.3203 -153h0.129883z\" />\n    <glyph glyph-name=\"shopware\" unicode=\"&#xf5b5;\" horiz-adv-x=\"512\" \nd=\"M403.5 -7.41016c-36.0898 -26.8223 -101.875 -48.5908 -146.841 -48.5908c-0.181641 0 -0.477539 0.000976562 -0.65918 0.000976562c-137.19 0 -248 111 -248 248c0 137.19 111 248 248 248h0.211914c52.3994 0 126.538 -28.4482 165.488 -63.5\nc0.643555 -0.585938 1.16602 -1.76855 1.16602 -2.63965c0 -1.9707 -1.59961 -3.56934 -3.57031 -3.56934c-0.125977 0 -0.330078 0.0126953 -0.456055 0.0292969c-15.2227 2.03223 -40.042 3.68164 -55.4004 3.68164\nc-0.361328 0 -0.948242 -0.000976562 -1.30957 -0.00195312c-129.36 0 -222.399 -53.4697 -222.399 -155.35c0 -109 92.1299 -145.881 176.829 -178.73c33.6406 -13 65.4004 -25.3604 87 -41.5898c0.788086 -0.592773 1.42676 -1.87402 1.42676 -2.86035\nc0 -0.985352 -0.638672 -2.2666 -1.42676 -2.85938zM503 214.91c0.578125 -6.2832 1.04688 -16.5039 1.04688 -22.8135c0 -25.8613 -7.62793 -66.4043 -17.0273 -90.4971c-0.495117 -1.2373 -1.98047 -2.24316 -3.31348 -2.24316\nc-0.495117 0 -1.25 0.19043 -1.68652 0.423828c-29.4893 16.3594 -61.6094 28.3398 -92.6797 39.9297c-60.2803 22.4902 -112.34 41.8896 -112.34 84.4902c0 1.45996 -3.87988 53.6299 80.25 53.6299c50.8604 0 92.7197 -17.4805 144.48 -60.4805\nc0.625 -0.530273 1.19336 -1.62305 1.26953 -2.43945z\" />\n    <glyph glyph-name=\"squarespace\" unicode=\"&#xf5be;\" horiz-adv-x=\"512\" \nd=\"M186.12 104.66l157.22 157.2c38.5703 38.5898 101.13 38.5898 139.72 0c38.5908 -38.5801 38.5908 -101.13 0 -139.721l-119.25 -119.239l-0.0400391 -0.0400391c-19.2891 -19.2705 -50.5498 -19.25 -69.8193 0.0400391l154.149 154.14\nc19.29 19.29 19.29 50.5703 0 69.8604s-50.5693 19.29 -69.8594 0l-157.181 -157.181c-9.64941 -9.64941 -25.29 -9.64941 -34.9395 0c-9.65039 9.65039 -9.65039 25.29 0 34.9404zM430.65 209.46c9.63965 -9.63965 9.63965 -25.2803 -0.0107422 -34.9297l-157.199 -157.2\nc-38.5801 -38.5703 -101.141 -38.5703 -139.721 0l-0.0195312 0.0195312c-9.64062 9.65039 -9.62988 25.29 0.0195312 34.9307l0.0107422 0.00976562c9.64941 9.63965 25.2793 9.62988 34.9199 -0.00976562l0.0498047 -0.0498047\nc19.29 -19.2607 50.5498 -19.2402 69.8193 0.0498047l157.2 157.18c9.64062 9.65039 25.2803 9.65039 34.9307 0zM168.66 122.13c-38.6006 -38.5801 -101.13 -38.5801 -139.73 0.00976562c-38.5801 38.5801 -38.5801 101.13 0 139.721l119.23 119.25l0.0195312 0.0195312\nc19.3008 19.2803 50.5703 19.2705 69.8506 -0.0195312l-154.17 -154.17l-0.0302734 -0.0302734c-19.2803 -19.2998 -19.2598 -50.5605 0.0302734 -69.8398l0.00976562 -0.0107422c19.29 -19.29 50.5703 -19.2793 69.8496 0.0107422l157.21 157.18\nc9.64062 9.63965 25.2705 9.63965 34.9102 0c9.64062 -9.65039 9.64062 -25.29 0 -34.9404zM81.3301 174.53c-9.64062 9.64941 -9.65039 25.29 0 34.9297l157.189 157.19c38.5908 38.5898 101.131 38.5898 139.721 0c9.64941 -9.64062 9.64941 -25.2803 0 -34.9307\nc-9.64062 -9.64941 -25.2803 -9.64941 -34.9307 0l-0.0195312 0.0205078c-19.29 19.2793 -50.5596 19.2695 -69.8398 -0.0205078l-157.21 -157.189c-9.64062 -9.64062 -25.2705 -9.64062 -34.9102 0z\" />\n    <glyph glyph-name=\"themeco\" unicode=\"&#xf5c6;\" \nd=\"M202.9 439.57c9.89941 5.72949 26 5.81934 35.9492 0.209961l191.15 -107.63c10 -5.60059 18 -19.4404 18 -30.8604v-217.29c0 -11.4404 -8.05957 -25.29 -18 -31l-191.19 -108.74c-9.92969 -5.66016 -26 -5.56934 -35.8496 0.209961l-185.1 108.41\nc-9.86035 5.78027 -17.8604 19.7402 -17.8604 31.1201v217.29c0 11.4404 8 25.3604 17.9102 31.0801zM125.5 239.74c-15.9404 0 -31.8896 -0.140625 -47.8301 -0.140625v-101.449h19.1299v29.8496h28.7002c49.71 0 49.5596 71.7402 0 71.7402zM265.64 139.45\nl-30.7295 34.6396c37 7.50977 34.7998 65.2305 -10.8701 65.5098c-16.0898 0 -32.1699 0.140625 -48.2598 0.140625v-101.59h19.1299v33.9092h18.4102l29.5596 -33.9092h22.7598v1.2998zM224.05 221.77c23.3398 0 23.2598 -32.46 0 -32.46h-29.1299v32.46h29.1299z\nM128.49 223.37c21.1797 0 21.1094 -38.8506 0 -38.8506h-32.3105v38.8408zM321.14 241.62c-68.46 0 -71 -105.8 0 -105.8c69.4805 0.00976562 69.4102 105.8 0 105.8zM321.14 224.23c44.1201 0 44.8008 -70.8604 0 -70.8604c-44.7998 0 -44.4297 70.8604 0 70.8604z\" />\n    <glyph glyph-name=\"weebly\" unicode=\"&#xf5cc;\" horiz-adv-x=\"512\" \nd=\"M425.09 382.17c50.9102 0 87.5498 -35.1504 86.9199 -83.4697c0 -21.6201 -0.950195 -18.5498 -77.5 -227.2c-22.3799 -60.5703 -67.7695 -69.6699 -92.7402 -69.6699c-39.2393 0 -70.0391 19.46 -85.9297 54.29c-15.8896 -34.5205 -46.7002 -53.9805 -85.9297 -53.9805\nc-24.9697 0 -70.3701 8.78027 -92.7402 69.3506c-72.9902 200.21 -77.1699 204.52 -77.1699 233.479c0 43.3105 38.5898 77.2002 87.54 77.2002c40.21 0 73.2803 -25.7295 83.6602 -64.3301c18.4795 58.0498 65.5 64.3301 85.2803 64.3301\nc19.4492 0 66.7891 -6.26953 84.9492 -64.3301c10.3799 38.6006 43.7803 64.3301 83.6602 64.3301zM451.43 267.36c3.49023 11.1992 7.29004 19.3701 7.61035 27.2393c0 22.3906 -16.1602 35.71 -38.3301 35.71c-18.6904 0 -31.9902 -11.7998 -36.1104 -29.0498\nl-44.0293 -139.819h-0.950195l-44.6602 136.79c-6.01953 19.9697 -16.4697 32.0791 -38.96 32.0791s-32.9404 -12.4092 -38.96 -32.0791l-44.6602 -136.79h-0.950195l-44.0293 139.819c-4.12012 17.25 -17.4199 29.0498 -36.1104 29.0498\nc-22.4902 0 -38.3301 -13.0195 -38.3301 -29.3594c0 -10.5898 2.54004 -19.6699 7.91992 -34.5l64.9404 -175.23c7.91016 -21.4795 21.2197 -37.2197 46.2393 -37.2197c23.1201 0 37.0605 12.0996 44.0205 33.5996l39.2803 117.42h0.949219l39.2803 -117.42\nc6.65039 -21.4893 20.5898 -33.8994 44.0303 -33.8994c25.0195 0 38.3203 15.7295 46.2402 37.2197z\" />\n    <glyph glyph-name=\"wix\" unicode=\"&#xf5cf;\" horiz-adv-x=\"640\" \nd=\"M393.38 316.31c0 -13.0293 2.08008 -32.6895 -28.6797 -43.8291c-9.52051 -3.4502 -15.9502 -9.66016 -15.9502 -9.66016c0 31 4.71973 42.2197 17.4004 48.8594c9.75 5.11035 27.2295 4.62988 27.2295 4.62988zM277.58 280.77\nc5.47949 26.3408 30.8799 38.3408 55.2998 35.2705l-65.5703 -247.93s-21.6396 -1.56055 -32.46 3.95996c-14.2197 7.25 -20.9893 12.8398 -29.5898 46.5693c-7.66992 30.0703 -29.1494 118.4 -31.1201 124.7c-4.30957 13.8105 -10.6396 14.9404 -15.3994 0\nc-2.00977 -6.29004 -23.4502 -94.6299 -31.1201 -124.7c-8.61035 -33.7295 -15.3701 -39.3193 -29.5898 -46.5693c-10.8301 -5.52051 -32.46 -3.95996 -32.46 -3.95996l-65.5703 247.93c23.8604 3 49.7305 -8.5498 55.2803 -35.2705l34.2393 -132.659l28.4805 108.569\nc7.76953 32.3506 21.0596 48.5303 48.4297 48.5303c27.6201 0 40.7402 -16.54 48.4307 -48.5303l28.4795 -108.569zM393.36 275.56v-8.97949l0.0195312 0.00976562v-150.27c-0.129883 -30.8301 -3.33008 -37.6807 -17.2598 -44.7803\nc-10.8203 -5.52051 -27.3701 -3.42969 -27.3701 -3.42969v152.069c0 21.25 -1.95996 27.9404 13.1797 35.2002c6.19043 2.96973 11.96 5.25 17.9707 8.61035c9.35938 5.22949 13.46 11.5693 13.46 11.5693zM556.8 191.48l82.9902 -123.36s-35.9297 -4.62012 -53.3203 11.21\nc-13.9102 12.6602 -23.7393 28.3398 -53.1396 70.7197c-0.5 0.770508 -6.25977 10.5205 -13.0703 0c-34.9297 -50.3496 -41.0195 -60.2598 -52.5098 -70.7197c-17.3799 -15.8301 -53.9502 -11.21 -53.9502 -11.21l82.9697 123.36l-83.1992 123.739\ns35.1094 5.98047 52.5 -9.84961c13.3799 -12.1797 24.8896 -30.2402 54.1797 -72.4697c6.82031 -10.54 12.5996 -0.730469 13.0703 0c29.7695 42.9199 40.8799 60.3691 54.1797 72.4697c17.3896 15.8301 52.5 9.84961 52.5 9.84961z\" />\n    <glyph glyph-name=\"ello\" unicode=\"&#xf5f1;\" horiz-adv-x=\"496\" \nd=\"M248 440c136.97 0 248 -111.03 248 -248s-111.03 -248 -248 -248s-248 111.03 -248 248s111.03 248 248 248zM391.84 154.8c2.48047 7.44043 -2.47949 15.71 -9.91992 17.3604c-7.43945 2.47949 -15.71 -2.48047 -17.3604 -9.91992\nc-14.0498 -52.9102 -62 -90.1104 -116.56 -90.1104s-102.51 37.2002 -116.56 90.1104c-1.65039 7.43945 -9.9209 11.5693 -17.3604 9.91992c-7.44043 -1.65039 -11.5703 -9.91992 -9.91992 -17.3604c16.5303 -65.3096 76.0498 -111.6 143.84 -111.6\ns127.31 46.29 143.84 111.6z\" />\n    <glyph glyph-name=\"hackerrank\" unicode=\"&#xf5f7;\" horiz-adv-x=\"512\" \nd=\"M477.5 320c14.5 -25 14.4805 -230.92 -0.00976562 -256s-192.391 -128 -221.33 -128c-28.9404 0 -206.83 102.8 -221.32 128s-14.4102 230.79 0 256s192.351 128 221.32 128s206.84 -103.05 221.34 -128zM316.13 33.7803c3.95996 0 40.4404 35.7793 37.5605 38.6895\nc-0.870117 0.839844 -8.82031 1.49023 -17.6904 1.83984c0 32.4004 -3 19.0508 0.679688 210.341c0.0703125 3.65918 -1.04004 5.37988 -4.5 5.37988c-11.0801 0.0693359 -22.1602 0.0195312 -33.2295 -0.0605469c-3.25977 -0.0292969 -4.31055 -1.80957 -4.20996 -5.2002\nc1.58984 -48.8994 1.2002 -79.0898 1.2002 -83.6396h-80.2607c0.629883 25.7998 0.209961 79.6396 2.62988 105.39v3.16016c8.87012 0.350586 15.9004 0.970703 16.7705 1.83984c2.90039 2.91016 -34.3203 38.6904 -38.2705 38.6904\nc-3.94922 0 -41.4092 -35.7695 -38.4893 -38.6904c0.879883 -0.839844 7.58984 -1.48926 17.2598 -1.83984v-3.16992c3.15039 -128.67 1.07031 -179.229 0.150391 -212.67c-0.130859 -4.58008 1.63965 -6.10938 5.73926 -6.10938\nc10.1406 0.0292969 20.2803 -0.0800781 30.4102 -0.0800781c4.16016 -0.0605469 5.96973 1.39941 5.74023 5.93945c-1.83008 36.6797 -1.37012 65.7803 -1.37012 72.8799h79.9297c0 -2.41992 0.44043 -3.84961 0.44043 -5.84961\nc-0.350586 -17.7305 -0.94043 -60.0898 -0.94043 -86.3203c-11.29 -0.349609 -16.6797 -0.959961 -17.5498 -1.83008c-2.91016 -2.91992 34 -38.6895 38 -38.6895z\" />\n    <glyph glyph-name=\"kaggle\" unicode=\"&#xf5fa;\" horiz-adv-x=\"320\" \nd=\"M304.2 -53.5l1.39941 -7.59961c-0.5 -2 -2.5 -3 -6 -3h-66.8994c-4 0 -7.5 1.7998 -10.5 5.2998l-110.5 140.6l-30.7998 -29.2998v-109c0 -5 -2.5 -7.5 -7.5 -7.5h-51.9004c-5 0 -7.5 2.5 -7.5 7.5v497c0 5 2.5 7.5 7.5 7.5h51.9004c5 0 7.5 -2.5 7.5 -7.5v-306\nl132.3 133.7c3.5 3.5 7 5.2998 10.5 5.2998h69.2002c7 0 7.89941 -7.7998 5.2998 -10.5l-139.8 -135.3z\" />\n    <glyph glyph-name=\"markdown\" unicode=\"&#xf60f;\" horiz-adv-x=\"640\" \nd=\"M593.8 388.9c25.5 0 46.2002 -20.7002 46.2002 -46.1006v-301.6c0.0996094 -25.4004 -20.5996 -46.1006 -46.0996 -46.1006h-547.7c-25.5 0 -46.2002 20.7002 -46.2002 46.2002v301.5c0 25.4004 20.7002 46.1006 46.2002 46.1006h547.6zM338.5 87.4004h-0.200195v209.199\nh-61.5l-61.5 -76.8994l-61.5 76.8994h-61.5v-209.199h61.7002v120l61.5 -76.9004l61.5 76.9004v-120h61.5zM473.8 84.2998l92.2002 107.7h-61.5v104.6h-61.5v-104.6h-61.5z\" />\n    <glyph glyph-name=\"neos\" unicode=\"&#xf612;\" horiz-adv-x=\"512\" \nd=\"M415.44 -64h-95.1104l-108.21 154.54v-91.0996l-86.4297 -63.4404h-97.6904v482.18l40.4697 29.8203h108.05l123.74 -176.13v112.68l86.4307 63.4502h97.6895v-461.5zM38.7695 412.73v-460.73l72 52.8799v249.12l215.5 -307.64h84.79l52.3506 38.1699h-78.2705\nl-316.14 450.47zM121.31 -53.8799l80 58.7803v101l-79.7598 114.399v-220.939l-72.5498 -53.25h72.3398zM80.6299 437.23l310.601 -442.57h82.3691v442.57h-79.75v-317.561l-222.939 317.561h-90.2803zM311 256.35l72 -102.81v278.53l-72 -53v-122.721z\" />\n    <glyph glyph-name=\"zhihu\" unicode=\"&#xf63f;\" horiz-adv-x=\"640\" \nd=\"M170.54 299.87h122.68v-217.55h-49.5293l-42.0107 -26.3701l-7.70996 26.3701l-23.4297 0.00976562v217.54zM268.29 105.94v170.31h-72.8203v-170.31l11.9004 -0.0400391l5.08008 -17.4707l27.8994 17.5107h27.9404zM149.83 200.33\nc7.5 0 7.58984 -23.6104 7.58984 -23.6104h-61.6504c-0.879883 -13.1201 -3.50977 -26.6895 -7.86914 -40.6699l14.6191 11.6201c8.73047 -8.75 29.2109 -32.8896 36.79 -41.8096c9.15039 -13.1006 1.24023 -39.9902 1.24023 -39.9902l-53.96 64.9395\nc-12.6094 -48.3496 -35.5898 -69.25 -35.5898 -69.25c-10.0898 -8.96973 -30.5098 -15.75 -51 -9.89941c42.8301 33.2197 66.4502 75.2402 70.8496 125.1h-65.5801s3.82031 23.6201 15.5605 23.6201h52.2695c0.480469 6.56055 1.68066 62.9404 1.68066 73.4404h-28.8701\nc-2.62988 -7.87012 -3.03027 -8.64062 -5.14062 -14.5303c-11.4697 -21.0303 -30.9492 -21.5703 -36.8398 -22.21c17.4902 34.9795 27.3105 69.2197 30.7002 78.1201c8.2002 21.5693 32.2705 21.5693 32.2705 21.5693c-5.25 -14.0098 -9.63086 -27.5498 -13.1201 -40.6699\nh88.5c10.5498 0.25 8.58008 -22.3096 8.58008 -22.3096h-51.1602c0 -21.8701 -0.459961 -46.3604 -2.2002 -73.46h52.3301zM561.85 201.93l-19.2295 14.4307s30.8301 40.0498 36.8301 48.1992c8.72949 10.7402 27.3799 -4.05957 27.3799 -4.05957\ns-24.1504 -32.9297 -44.9805 -58.5703zM411.76 261.02l0.00976562 0.0107422c8.99023 -8.25 34.6602 -45.8604 34.6602 -45.8604l-19.46 -13.7295c-1.59961 2.40918 -41.1201 57.4492 -41.1201 57.4492s16.9004 10.3799 25.9102 2.12988zM640 189.65\nc0 0 0.950195 -23.79 -8.73047 -23.79h-122.359v-73.3203c0.780273 -28.0303 -15.3301 -45.3096 -44.8906 -45.3096c-9.84961 0 -16.1396 1.75977 -26.0195 6.56934c-12.9805 7.4502 -17.3203 17.8701 -19.3096 21.8398c15.6094 -0.65918 27.6094 -1.91992 41.6895 -1.80957\nc13.29 -0.870117 24.4805 7.15039 24.4805 21.1201v70.9199h-107.94c-22.6895 0.540039 -25.5098 22.8496 -25.5098 22.8496h133.47v99.8105c-12.8301 0 -31.6797 -0.830078 -56.5098 -2.43066c-26.46 -0.80957 -35.8398 -2.58984 -49.1504 0.890625\nc-8.16016 2.46973 -14.1797 10.7295 -15.7793 19.5498c67.1396 1.55957 232.359 18.0498 232.359 18.0498s20.1006 5.75977 23.1699 4.58008c12.8105 -6.25 0.589844 -33.4395 0.589844 -33.4395c-17.6396 -0.810547 -46.8896 -2.40039 -87.7695 -4.81055\nc-10.4297 -0.799805 -18.04 -1.2002 -22.8496 -1.2002v-101c0.149414 0 111.279 0.930664 131.06 0.930664z\" />\n    <glyph glyph-name=\"alipay\" unicode=\"&#xf642;\" \nd=\"M377.74 416c38.6895 0 70.0898 -31.5703 69.9297 -70.2598v-234.41c-48.6104 16.7002 -99.6895 36.04 -148.62 52.7402c23.1406 44.2998 38.3506 90.9199 38.3506 90.9199h-88.7705v31.2402h109.45v19.0098h-109.44v50.4199h-50.9199v-50.4199h-109.439v-19.0098h109.439\nv-31.2402h-92.0801v-16.7002h178.2s-9.91992 -30.25 -26.4502 -60.3398c-47.7793 14.71 -91.75 24.96 -127.13 24.96c-84.6396 0 -103.49 -42.4902 -99.5195 -81.5c3.30957 -31.0703 26.4502 -76.3701 97.04 -76.3701c64.4795 0 116.55 37.0303 148.62 81\nc61.0098 -28.0996 125.64 -62.8203 171.6 -88.4404c-0.5 -38.5195 -31.7402 -69.5996 -70.2598 -69.5996h-307.48c-38.8496 0 -70.2598 31.4102 -70.2598 70.2598v307.48c0 38.8496 31.4102 70.2598 70.2598 70.2598h307.48zM47.2803 125.05\nc-0.990234 17.5205 10.9102 50.5801 78.3594 50.5801c24.96 0 64.8105 -12.7295 109.44 -31.4102c-25.29 -33.2197 -65.7998 -72.8994 -117.87 -72.8994c-59.6797 0 -68.9404 33.5596 -69.9297 53.7295z\" />\n    <glyph glyph-name=\"the-red-yeti\" unicode=\"&#xf69d;\" horiz-adv-x=\"512\" \nd=\"M488.23 206.3c2.49805 -3.35254 5.51465 -9.31152 6.76953 -13.2998c3.37793 -9.19922 7.36523 -24.5205 8.90039 -34.2002l-2.5 -0.5l-13 14.2998c-17.9004 -28.0996 -9.90039 -15.3994 -16.7002 -25.0996c0 -124.2 -101.3 -211.5 -223 -211.5\nc-61.5 0 -113.9 20.2002 -157.5 60.2002c-64.5 60.8994 -64.9004 125 -64.9004 150.5c-0.5 1.7998 -0.700195 3.5 -1.2002 5.2002l-20.1992 -22.4004c-6.80078 43 25.6992 74.2998 33 80.7002c0.5 1 0.699219 2.2002 1.19922 3.2002l-28.7998 1l-3 3.39941\nc8.5 3.5 25.2998 13.2998 40.2998 14.2998c6.30273 12.0684 18.7568 30.123 27.8008 40.3008c1.2998 6.39941 3.2998 14.1992 6.59961 25.7998l-7.59961 -4.7002l-1.7002 1.7002l1.7002 8.39941c8.87207 21.3857 29.7939 51.5811 46.6992 67.4004l-33 14.2998h3.7002\nc20.9004 4.90039 33.2002 3.2998 49.2002 0c-2.5 4.10059 -5.40039 10.5 -8.40039 18.9004c-1.16699 3.20996 -2.11426 8.58691 -2.11426 12.0029c0 3.81152 1.1709 9.76855 2.61426 13.2969c8.90039 -7.40039 14.3008 -24.5996 15.2002 -27\nc0.700195 3.59961 2.10059 21.2998 33.7002 45.5l1.83008 -0.5l-12 -44.2002c30 17.7002 63 21.9004 97.9004 11.7998c-12.7002 -12.1992 -24.3008 -28.8994 -42.5 -33c7.39941 -2.2998 28.6992 -9.69922 34.1992 -15.1992l-24.7998 7.09961\nc6.5 -6 19.6006 -16.4004 25.1006 -25.0996c19.418 -0.893555 50.0615 -6.85254 68.3994 -13.3008l-0.5 0.5c29.4004 14.7002 37.7002 27.3008 74.7998 3c0 -30.1992 -2.2998 -23.3994 3 -29.7998c6.41602 5.42383 17.75 12.8154 25.3008 16.5\nc13 6.40039 23.0996 4.7002 30.6992 -5.89941c11.8008 0 17.8008 -15.7002 18.4004 -27c14.7998 -2.90039 2.7002 -30.7002 2.5 -30.7002l-7.09961 -18.2002c7.7998 -7.7998 22.0996 -20.9004 31.6992 -44.7998zM398 336.8c-13.0996 8.90039 -22.7002 11.9004 -28.2998 8.5\nc8.09961 -7.2002 13 -14.2998 13.5 -20.7002c1.2002 -7.59961 -2.2002 -14.7998 -10.6006 -21.8994l-4.19922 -3.40039c3.60059 -5.90918 7.36328 -16.2578 8.39941 -23.0996h2.5c-2.09961 13.8994 -2.5 11 0.700195 14.7998c11 -6.40039 14.9004 -14.5 16 -19.9004\nc21.7998 10.1006 29.5 12.7002 54.7998 20.9004l-18.2002 -16c11.4004 0 25.6006 0.299805 46.5 -8.40039c7 24.3008 7.10059 20.7002 2.5 20.7002l-4.69922 -11.2998c-1.7002 10.5 -2.90039 18.9004 -3.40039 25.2998c-0.5 6.7002 -3.90039 9.60059 -9.2998 10.1006\nc-0.00976562 -0.384766 -0.0175781 -1.00781 -0.0175781 -1.3916c0 -3.87012 0.769531 -10.0566 1.71777 -13.8086l-1.7002 -5.90039c-2.90039 10.6006 -5.90039 20.2002 -9.2998 27.7998c-9.7002 17.7002 -30.2002 -9.19922 -43 -11.2998\nc3.72266 -0.207031 9.77051 -0.375977 13.5 -0.375977c3.72852 0 9.77637 0.168945 13.5 0.375977l-22.4004 -5.39941l3.40039 -4.7002c-5.5 0 -16.9004 -0.900391 -22.4004 17.2002zM358.4 346.9l-20.3008 -11.8008c11.3008 -7.59961 20.2002 -18.1992 27.8008 -31.1992\nc6.39941 2.89941 10.0996 5.09961 11.7998 7.59961c2.5 2.7998 2.5 4.7002 3 7.09961c0.599609 1.30078 0.799805 2.7002 -3.40039 11.1006c-7.5 11.7998 -16.2002 15.2998 -18.8994 17.2002zM91 304.9c-7.7998 -24.1006 -11.7002 -49.4004 -13.2002 -74.6006l13.2002 -5\nl1.2002 27c9.5 -16.3994 11.2002 -23.2998 12.2998 -28.7998c2.7998 2.09961 7.7002 7 22.5996 11.2998l1.2002 -1.7002l-7.59961 -10.5996c10.0996 3.5 19.5 3.5 28.2998 0.5l-10.5996 -8.40039c22.7998 -8.39941 26.5996 -7.59961 38.3994 -26.0996l-11.7998 1.2002\nc34.9297 -20.5 66 -47.9004 141.2 -63.2002c15.5996 24.0996 14 21.0996 14 22.9004l0.200195 0.199219l-0.200195 0.200195c-0.700195 1.90039 -14.1006 16.6006 -18.2002 20.7002c7.2998 -1.7998 6 -0.900391 10.7998 -3.7002\nc1.7002 -0.899414 -5.39941 5.40039 -21.8994 20.2002c16.5 -6.7002 27.5996 -15.5 33 -27.7998l1.69922 30.7002l-22.3994 17.6992l6.39941 5.90039c-7.2998 0 -31 3.7002 -49.1992 -16l-2.5 0.5c5.89844 12.1807 13.0664 32.7881 16 46\nc1.61914 7.72656 2.96289 20.4053 3 28.2998c0 19.5 -4.7002 38.4004 -13.5 56.6006c-6.40039 13.5 -16.5 25.2998 -30 35.3994c-5.4707 4.09961 -14.7441 10.1475 -20.7002 13.5c3 0.700195 1 1.2002 -5.40039 1.2002c-6.39941 0.200195 -13 0.700195 -19.3994 1.2002v-3\nc-8.67773 -1.375 -20.0127 -8.18457 -25.3008 -15.2002h-1.19922l-5.40039 -3.40039c-1.2002 2.90039 0 6.30078 4.2002 9.30078l10.5996 11.2998l-3.39941 -0.5l2 3.39941c-2.30078 0.200195 -4.2002 0.5 -6.2002 0.700195l-0.5 1.2002l2.5 1.7002\nc2.2002 -0.200195 4.59961 -0.5 7.09961 -0.700195c2.52539 1.3457 6.89746 2.43848 9.75879 2.43848c1.18359 0 3.08301 -0.196289 4.24121 -0.438477l2.5 -1.2002l0.200195 -0.5c6.50488 0.421875 16.9883 1.7207 23.4004 2.90039\nc20.6992 2.89941 36.6992 11.2998 48.5 24.7998l-21.1006 0.5c-25.7998 0.5 -49.3994 -5.40039 -71.2998 -18.9004l-2.5 2.5l0.5 4.7002l1.7002 7.10059c1.37695 7.08105 4.24414 18.415 6.39941 25.2998c-1.69922 -0.700195 -4.59961 -4.90039 -9.2998 -11.2998\nc-4.7002 -6.40039 -8.39941 -13 -10.0996 -19.4004c-0.905273 -4.24512 -3.54785 -10.6514 -5.90039 -14.2998l-13.5 29l8.40039 -35.7998l-0.5 -1.7002h-0.015625c-4.51953 0 -11.6807 1.12012 -15.9844 2.5c-3.40039 0.700195 -10.6006 1.2002 -20.9004 1.2002\nc0.5 0 -0.700195 0 -3.2002 -0.5c5.40039 -1.30078 13.5 -4.2002 24.8008 -8.40039l6.39941 1.2002c-4.2002 -3.40039 -10.8994 -10.1006 -20.2002 -19.4004c-9.39941 -8.89941 -20.1992 -26.0996 -32.5 -50.2002l4.2002 1.2002l10.1006 9.2998l-5.40039 -4.69922\nl13 12.2998l-2.5 -3.40039c-5.09961 -7.59961 -8.09961 -12.2998 -9.2998 -15.2002zM367.5 -25.0996c8.2998 40.2998 3.59961 55.1992 -0.700195 89.5c-35.5 -11.8008 -20.2998 -6 -32 -10.8008l10.5 -14.1992l-1.2002 -1.2002c-20.1992 6 -23.1992 10.7998 -27.7998 15\nc6 -22.2002 13.9004 -26.4004 29.5 -31.7002c-9.5 -9.59961 -25.3994 4 -34.3994 13l2.5 -23.5996l-4.2002 -3c-5 22.0996 -22 39.0996 -25.2998 39.0996c-44 -13 -79.1006 -5.7998 -113.9 10.5996c-1.59961 -0.399414 -70.5996 -18 -120.5 37.1006\nc13.7002 -35 32.2998 -63.7002 71.2998 -82.6006c-4.13574 8.56934 -13.4102 20.4863 -20.7002 26.6006c0 0 0.700195 3.7002 1.2002 10.0996c19.4004 -19.3994 50.7002 -39.5 93.2002 -60.2002c-59.5996 24.5 -59.9004 24.8008 -69.0996 29l16 -20.6992\nc-3 -1.30078 -6.7002 -0.5 -10.1006 1.19922c-10.3359 6.03809 -26.1943 17.1484 -35.3994 24.8008c1.89941 -2.2002 80.0996 -98.5 200.899 -74.3008c-43.0996 21.8008 -52.3994 52.4004 -66.5996 73.5l17.7002 -7.59961l-11.8008 23.0996\nc20.1006 -27.7998 28.6006 -35 38.4004 -44.2998l-30 16.5c12.5996 -27.0996 33.7002 -47 63.5 -58.7998c2.90039 1.5 9.09961 -1.09961 59 23.9004zM482.8 189.3l8.93066 -12.7998l-12.3008 32.5c10.9004 0 10 -0.0996094 21.2002 -3.40039\nc-6.72168 9.44824 -18.8184 23.7842 -27 32l-26.5996 23.1006l1.2002 3l23.5996 2.5c-9.00293 1.98535 -23.7871 3.86719 -33 4.2002l-17.7002 -0.5l-0.5 2.89941l14.7998 13l-41.7998 -20.2002l-12.2998 18.9004l3.40039 -16l-2.5 -1.2002l-5.90039 4.2002h-10.0996\nl5.39941 -4.2002v-2l-13.5 -27.7998c-10.0996 -31.2002 -21.8994 -67.9004 -35.3994 -109.7l1.19922 16l-1.19922 -3v-0.5c-6.40039 -16 -13.6006 -29.5 -21.2002 -39.5996l9.2998 21.8994l-46.7002 -20.1992c11.7998 13.5 23.6006 19.3994 34.9004 18.8994\nc-71.2002 11.4004 -106.2 41 -110.4 46c3.60059 -6.2002 13.2002 -17.7998 16 -40.0996l-1.7002 -1.2002c-4.2998 15.5996 -16.3994 46.5996 -55.7998 69.5996l23.6006 -2.5c-10.5 12.6006 -36.3008 17.8008 -40.8008 16l-2.5 2.5l8.40039 8.40039l-22.2998 -5.7998\nl5.39941 13.5c-8.09961 -4.40039 -4.2998 -2.40039 -17 -8.90039l-1.69922 0.5c0.599609 0.600586 0.899414 -0.700195 -3 9.2998c-0.600586 -11 -0.400391 -8.59961 -1 -11.7998c-1.07324 -0.355469 -2.73145 -1.11719 -3.7002 -1.7002c-40 20.6006 -57.2002 11 -73 5.2002\nc36.7998 -6 29.2998 -4 38.3994 -9.2998c-25.7998 -12.2002 -31.8994 -12.5996 -51.3994 -70.0996l22.2695 22.2998l2.5 -16.4004c13.4004 -58 68.7002 -92.5 126.4 -83.3994l-26.1006 22.3994l44.8008 -22.3994l-1.2002 -3c4.59961 -1.7002 9.2998 -3 13.5 -4.2002\nc16.4727 -4.87598 43.7852 -8.83203 60.9648 -8.83203c8.94727 0 23.3887 1.08887 32.2354 2.43164l-32.5 21.2002c35.7998 -7 50.6992 -31.4004 56.7998 -39.5996l-7.60059 29l1.2002 2.5l19 -27.9004l-9.2998 26.5996l21.9004 -13.5h1.19922l-3.39941 4.2002\nl7.09961 -4.7002l-14.2998 16l1.2002 3l7.59961 -7.09961c4.2998 1.2002 41.4004 10.5 80.9004 40.2998c47.8994 35.4004 68.0996 73.7998 71.5996 79.7002l-3 9.2998zM476.7 260.6l-18.2002 -1.19922l14.2998 -11.8008zM221.9 253.5\nc2.69922 -5.09961 5.69922 -12.4004 18.3994 -18.7998c-7.5 -10.9004 -8.2998 -10.5 -20.2002 -16c-7.59961 -7.7002 -13.5 -13.1006 -17.6992 -14.7998l7.09961 13c-4.61914 -1.69336 -12.3604 -3.06641 -17.2793 -3.06641c-2.08789 0 -5.45703 0.25293 -7.52051 0.566406\nl-0.5 1.19922c19 2.10059 37.2002 9.40039 46.5 16c-4.10059 4.2002 -7.10059 11.3008 -8.7998 21.9004zM225.6 355.8c4.92578 -2.78809 11.3486 -8.9707 14.3008 -13.7998c14.6992 -24.0996 19.1992 -40.0996 11.2998 -47.7002\nc-7.90039 -7.59961 -16.7998 -7.09961 -26.1006 3c-9.2998 10.1006 -13.5 23.7002 -11.7998 39.6006c1.7002 15.8994 5.90039 22.2998 12.2998 18.8994zM220.9 309.5c7.09961 -21.2998 33.3994 -23.0996 26.8994 4.90039c-3.89941 16.5 -8.7998 27.0996 -15.2002 32.5\nc-6.59961 5.39941 -10.0996 6.69922 -11.2998 4.19922c-2.5 -2.89941 -3.5 -11.2998 -3 -24.7998c7.5 12.7998 11.6006 5.90039 12.5 4.7002l-0.5 -0.5c-0.799805 -1.7002 -2.59961 -3.09961 1.7002 -6.2002l1.2002 0.5v-4.7002\nc-1.7998 -12.5 -6.90039 -12.7998 -12.2998 -10.5996zM175.9 315c-2.09375 0.388672 -4.49707 2.27051 -5.40039 4.2002c-3.5 8.5 0 21.2002 8.09961 21.2002c2 -0.5 3.7002 -1.7002 5.40039 -4.7002c-1.5 -0.400391 -4.7002 -4.7998 0.700195 -5.90039h0.5\nc0 -13.7002 -7.7002 -15.0996 -9.2998 -14.7998zM216 365.1l-3.7002 2.40039l-0.5 2.5c18.2998 0 25.7998 -8.7998 28.2998 -14.2998c-6.0459 3.29688 -16.542 5.97266 -23.4297 5.97266c-0.737305 0 -1.93359 -0.0322266 -2.66992 -0.0732422l-0.5 3zM144.2 315.7\nc1.59961 -1.60059 0.599609 -0.299805 4.89941 -6.60059c-25.3994 -4.69922 -23.1992 -12.2998 -30 -12.2998c0.300781 0.600586 7.10059 16 23.6006 16l-7.10059 7.60059c9.40039 0.5 15.2002 2.09961 19.9004 -5.90039c0.0175781 6.60938 1.31641 17.1826 2.90039 23.5996\nc2 7.60059 3.69922 11.8008 5.39941 13.5c1 1.5 16.2998 15.7002 29 22.4004c2.05469 1.48047 5.77637 2.68262 8.30859 2.68262c1.48438 0 3.81055 -0.44043 5.19141 -0.982422c0.285156 -0.345703 0.515625 -0.989258 0.515625 -1.43652\nc0 -0.0732422 -0.00683594 -0.191406 -0.015625 -0.263672l-13 -7.59961c7.60059 -11.8008 10.5 -25.3008 8.7998 -41.3008c-0.932617 -9.45898 -7.5625 -22.1377 -14.7998 -28.2998l2.90039 -4.7002c-30 2.2002 -24.7998 6.80078 -46.5 23.6006zM162.9 334.4\nc-1.80078 -7.2002 -2.30078 -16 -3.10059 -26l5.40039 -6.40039l7.09961 -3.40039c2.01465 -0.384766 5.31445 -0.697266 7.36523 -0.697266c1.08887 0 2.85156 0.0888672 3.93457 0.197266c1 1.7002 3.5 4.2002 6.40039 7.60059c5 5.89941 7.90039 13.7998 8.40039 23.0996\nc0.0703125 1.18262 0.126953 3.10449 0.126953 4.28906c0 5.92773 -1.40137 15.3408 -3.12695 21.0107c-3 8.10059 -5.90039 11 -10.1006 9.30078c-5.39941 -1.7002 -10.5996 -5.40039 -16 -11.8008c-3 -4.19922 -5.2002 -9.59961 -6.39941 -17.1992zM204.9 278.3\nl-3.10059 -6.5c7.10059 4.2002 13.5 7.2002 19.4004 8.40039l7.09961 0.5l11.7998 -7.60059h-2.5c-8.7998 3.7002 -19.3994 1.2002 -30.6992 -7.59961c-0.5 -4.7002 1.69922 -14.7002 5.89941 -29.5l9.2002 0.5c-21.9004 -6.59961 -37.5996 -8.40039 -48.9004 -5.40039\nc-24.8994 6.7002 -27.3994 23.6006 -27.5 24.1006c-1.47754 5.69238 -2.67676 15.0869 -2.67676 20.9688c0 3.53418 0.438477 9.23828 0.977539 12.7314c-6.40039 -0.5 -11 -4.2002 -15.2002 -10.6006c-2.90039 5.90039 -5.40039 8.7998 -5.90039 9.2998\nc1.5 0.700195 12.2998 7.5 32.5 4.90039l0.5 -2.5l-5.89941 -1.2002c-0.100586 -0.399414 -1.90039 -29.5 18.8994 -24.7998c1.40039 0.299805 1.2998 -0.0996094 36.1006 14.2998z\" />\n    <glyph glyph-name=\"acquisitions-incorporated\" unicode=\"&#xf6af;\" horiz-adv-x=\"384\" \nd=\"M357.45 -20.2002c2.2002 -14.2998 4.09961 -28.7002 6.59961 -43.7002h-337.1c-4 0 -6.10059 0.700195 -5.2998 5.7002c2.09961 12.9004 3.5 25.9004 5 38.7998c0.5 4.80078 2.2998 6.80078 7.59961 6.80078c118.1 -1 114.9 -0.300781 121.4 2.39941\nc9.39941 4 14.8994 12.9004 14.8994 23.1006c-0.0996094 42.8994 -0.299805 85.8994 -0.200195 128.8c0 3.7998 -1.19922 5.89941 -4.59961 6.7998c-15.7002 3.90039 -31.2998 7.7002 -47.5996 11.7002c-5.30078 -12.2998 -10.4004 -24.4004 -15.7002 -36.7002\nc1.7998 -3.2998 28.3994 -2.90039 35.2998 -2.90039v-27.5996h-114.3c1 8.59961 1.7002 16.7998 3.2002 24.9004c0.299805 1.39941 3.59961 3.09961 5.5 3.19922c8.39941 0.400391 16.8994 0.300781 25.3994 0.100586c4 0 5.90039 1.09961 7.60059 5.2002\nc16.5996 40.6992 13.5 31.1992 67.2998 161c31.5 76.0996 33 76 32.5996 87.3994c-0.700195 18.6006 -25.3994 22.2998 -37.7002 22.1006c-30 -0.400391 -38.3994 0.5 -101.8 0.5c-7.2002 44.5 -4.2002 32.0996 -6.39941 45.2998c-0.700195 4.2002 1 5.2998 4.59961 5.2998\nl339.1 -0.200195c-0.799805 -5.39941 -1.59961 -10.7998 -2.39941 -16.0996c-1.2998 -9.7002 -2.7998 -19.4004 -4 -29.2002c-0.299805 -2.90039 -1.2002 -4.2998 -4.2998 -4.2998c-20.6006 -0.100586 -41.2002 -0.100586 -61.8008 -0.5\nc-18.6992 -0.400391 -37.5996 -0.299805 -56.1992 -2c-13.4004 -1.2002 -23.3008 -12.6006 -18.9004 -26.6006c8.59961 -27.0996 27.7002 -69.0996 36.5 -89.1992c65.7002 -154.2 61.4004 -157 84 -158.601c6.59961 -0.5 13.4004 -0.0996094 20.4004 -0.0996094\nc1.2998 -9.40039 2.59961 -18 4 -27.5h-116v27c10.3994 0 20.3994 0.0996094 30.3994 -0.100586c3.5 0 5 0.700195 3.40039 4.40039c-4.40039 10.2998 -8.7002 20.5996 -13.2002 30.9004c-1.59961 3.69922 -4.09961 4.7998 -8.40039 3.5\nc-12.3994 -3.60059 -24.7998 -6.7002 -37.2998 -9.7002c-4.2998 -1.10059 -6 -2.7998 -5.89941 -7.5c0.799805 -57.5 0.899414 -127.5 1 -129.101c0.399414 -12.5996 8.69922 -21.3994 21 -23.0996c0.899414 -0.200195 12.8994 -2.7998 112.699 -2.59961\nc8.30078 0 8.40039 0.0996094 9.60059 -7.60059zM182.55 185.5c2.46484 -0.869141 6.58691 -1.5752 9.2002 -1.5752s6.73535 0.706055 9.2002 1.5752c13 4.2002 26.2998 7.7998 39.3994 11.7002c1.1123 0.512695 2.86035 1.45312 3.90039 2.09961\nc-6.7002 17.4004 -13.0996 34.2002 -19.7002 50.9004c-8.89941 22.7002 -17.7002 60.2998 -27 82.7998c-1.5 0.799805 -1.89941 -2.40039 -9.39941 0c-17.1006 -44 -34.1006 -87.7998 -51.3008 -132.1c1.54297 -0.917969 4.1416 -2.2168 5.80078 -2.90039\nc13.2998 -4.2998 26.5996 -8.2998 39.8994 -12.5z\" />\n    <glyph glyph-name=\"critical-role\" unicode=\"&#xf6c9;\" \nd=\"M225.82 448c0.259766 -0.150391 216.569 -124.51 217.12 -124.72c3 -1.18066 3.69922 -3.45996 3.69922 -6.56055c-0.0732422 -83.4463 -0.0732422 -166.899 0 -250.359c0.00976562 -0.124023 0.0175781 -0.326172 0.0175781 -0.450195\nc0 -2.06836 -1.52148 -4.45703 -3.39746 -5.33008c-21.3701 -12 -207.859 -118.29 -218.93 -124.58h-3c-79.3301 45.6602 -218.25 125.44 -218.4 125.52c-1.04297 0.491211 -1.89062 1.8252 -1.89062 2.97754c0 0.0732422 0.00488281 0.19043 0.0107422 0.262695\nc0 0.870117 0 225.94 -0.0498047 253.101c-0.0078125 0.102539 -0.0136719 0.269531 -0.0136719 0.37207c0 1.78223 1.31836 3.82422 2.94336 4.55762c23.2607 13.0996 209.271 119.21 220.141 125.21h1.75zM215.4 427.58l-0.219727 0.158203\nc-64.7471 -36.8604 -129.474 -73.7305 -194.18 -110.61c0 -0.120117 0.0800781 -0.229492 0.129883 -0.349609l30.8604 -11.6406c-7.70996 -6 -8.32031 -6 -10.6504 -5.12988c-0.0996094 0 -24.1699 9.28027 -26.7998 10v-230.43\nc0.879883 1.41016 64.0703 110.91 64.1299 111c1.62012 2.82031 3 1.91992 9.12012 1.51953c1.40039 -0.0898438 1.47949 -0.219727 0.780273 -1.41992c-41.1904 -71.3301 -36.4004 -63 -67.4805 -116.939c-0.80957 -1.40039 -0.609375 -1.12988 1.25 -1.12988h186.5\nc1.44043 0 1.69043 0.229492 1.7002 1.63965v8.87988c0 1.33984 2.36035 0.810547 -18.3701 1c-7.45996 0.0703125 -14.1396 3.21973 -21.3799 12.7002c-7.37988 9.66016 -14.6201 19.4297 -21.8496 29.21c-2.28027 3.08008 -3.4502 2.37988 -16.7607 2.37988\nc-1.75 0 -1.7793 0 -1.75977 -1.82031c0.290039 -26.21 0.150391 -25.2695 1 -32.6592c0.520508 -4.37012 2.16016 -4.2002 9.69043 -4.81055c3.13965 -0.259766 3.87988 -4.08008 0.519531 -4.91992c-1.57031 -0.389648 -31.5996 -0.509766 -33.6699 0.0996094\nc-0.982422 0.269531 -1.78027 1.31543 -1.78027 2.33398c0 1.16016 0.931641 2.2334 2.08008 2.39648c3.29004 0.759766 6.16016 -0.80957 6.66016 4.44043c1.2998 13.6592 1.16992 9 1.09961 79.4199c0 10.8193 -0.349609 12.5801 -5.35938 13.5498\nc-1.21973 0.240234 -3.54004 0.160156 -4.69043 0.549805c-2.87988 1 -2 4.83984 1.77051 4.84961c33.6699 0 46.0801 1.07031 56.0596 -4.85938c7.74023 -4.61035 12 -11.4805 12.5098 -20.4004c0.880859 -14.5898 -6.50977 -22.3496 -15 -32.5898\nc-0.282227 -0.241211 -0.510742 -0.738281 -0.510742 -1.11035c0 -0.371094 0.228516 -0.868164 0.510742 -1.10938c2.60059 -3.25 5 -6.62988 7.70996 -9.83008c27.5605 -33.2305 24.1104 -30.54 41.2803 -33.0605c0.890625 -0.129883 1 0.419922 1 1.15039v11\nc0 1 0.320312 1.42969 1.41016 1.25977c2.98633 -0.454102 7.86133 -0.822266 10.8818 -0.822266c3.53223 0 9.2207 0.50293 12.6982 1.12207c1.08008 0.150391 1.5 -0.199219 1.47949 -1.33008c0 -0.109375 0.880859 -26.6895 0.870117 -26.7998\nc-0.0498047 -1.51953 0.669922 -1.62012 1.89062 -1.62012h186.71c-27.1533 47.0342 -54.2334 93.9746 -81.2402 140.821c2.25977 0.660156 -0.400391 0 6.69043 1.38965c2 0.390625 2.0498 0.410156 3.10938 -1.43945c7.31055 -12.6396 77.3105 -134 77.3701 -134.061\nv230.44c-1.71973 -0.5 -103.3 -38.7197 -105.76 -39.6797c-1.08008 -0.419922 -1.5498 -0.200195 -1.91016 0.879883c-0.629883 1.89941 -1.33984 3.75977 -2.08984 5.62012c-0.320312 0.790039 -0.0898438 1.12988 0.649414 1.38965\nc0.100586 0 95.5303 35.8496 103 38.7705c-65.4199 37.5693 -130.56 75 -196 112.6l86.8203 -150.39l-0.280273 -0.330078c-9.56934 0.899414 -10.46 1.59961 -11.7998 3.93945c-1 1.69043 -73.5 127.71 -82 142.16c-9.09961 -14.6699 -83.5596 -146.21 -85.3701 -146.32\nc-2.92969 -0.169922 -5.87988 -0.0800781 -9.25 -0.0800781c28.833 49.8271 57.5596 99.4941 86.1797 149.001zM267.331 297.658c1.54688 0.120117 4.02832 0.500977 5.54004 0.849609c1.68945 0.299805 2.53027 -0.200195 2.59961 -1.91992\nc0 -0.109375 0.0703125 -19.0596 -0.859375 -20.4502c-0.930664 -1.38965 -1.87988 -1.21973 -2.60059 0.19043c-5 9.68945 6.2207 9.66016 -39.1201 12c-0.699219 0 -1 -0.230469 -1 -0.929688c0 -0.130859 3.7207 -122 3.73047 -122.11\nc0 -0.889648 0.519531 -1.2002 1.20996 -1.50977c2.46484 -0.980469 6.3623 -2.79492 8.7002 -4.0498c7.30957 -4.33008 11.3799 -10.8408 12.4102 -19.3105c1.43945 -11.7998 -2.77051 -35.7695 -32.21 -37.1396c-2.75 -0.129883 -28.2607 -1.08008 -34.1406 23.25\nc-4.66016 19.2598 8.25977 32.7002 19.8906 36.3994c1.11035 0.202148 2.0127 1.28223 2.0127 2.41113c0 0.0683594 -0.00585938 0.180664 -0.0126953 0.249023c0.0996094 5.62988 3 107.101 3.70996 121.351c0.0498047 1.0791 -0.620117 1.15918 -1.35059 1.14941\nc-32.3496 -0.519531 -36.75 0.339844 -40.2197 -8.51953c-2.41992 -6.18066 -4.13965 -1.32031 -3.9502 -0.230469c1.05957 6 2.16309 12 3.31055 18c0.399414 2.11035 1.42969 2.61035 3.42969 1.86035c5.58984 -2.11035 6.71973 -1.7002 37.25 -1.91992\nc1.72949 0 1.78027 0.0800781 1.82031 1.84961c0.679688 27.4902 0.579102 22.5898 1 29.5498c0.00976562 0.0878906 0.0185547 0.231445 0.0185547 0.320312c0 0.986328 -0.738281 2.09766 -1.64941 2.48047c-5.59961 2.90918 -8.75 7.5498 -8.89941 13.8691\nc-0.350586 14.8105 17.7197 21.6699 27.3799 11.5107c6.83984 -7.19043 5.7998 -18.9102 -2.4502 -24.1504c-1.24316 -0.68457 -2.25195 -2.3916 -2.25195 -3.81055c0 -0.146484 0.0146484 -0.383789 0.0322266 -0.529297c0 -0.589844 -0.110352 4.30957 1 -30.0498\nc0 -0.900391 0.429688 -1.12012 1.24023 -1.11035c0.0996094 0 23 0.0898438 34.4697 0.370117zM68.2705 306.298c19.8408 4.50977 32.6807 0.560547 52.4902 -1.68945c2.75977 -0.310547 3.74023 -1.2207 3.62012 -4c-0.209961 -5 -1.16016 -22.3301 -1.24023 -23.1504\nc-0.0371094 -0.932617 -0.767578 -1.98145 -1.62988 -2.33984c-4.05957 -1.7002 -3.60938 4.4502 -4 7.29004c-3.12988 22.4297 -73.8701 32.7002 -74.6299 -25.4004c-0.30957 -23.9199 17 -53.6299 54.0801 -50.8799c27.2402 2 19 20.1904 24.8398 20.4697\nc0.0996094 0.0136719 0.261719 0.0244141 0.362305 0.0244141c1.50195 0 2.7207 -1.21875 2.7207 -2.71973c0 -0.186523 -0.0371094 -0.483398 -0.0830078 -0.664062c-1.83008 -10.8506 -3.41992 -18.9502 -3.4502 -19.1504\nc-1.54004 -9.16992 -86.6992 -22.0898 -93.3496 42.0605c-2.70996 25.8496 10.4404 53.3691 40.2695 60.1494zM148.271 218.628h-19.4893c-0.0576172 -0.00488281 -0.151367 -0.00878906 -0.208984 -0.00878906c-1.04102 0 -2.13867 0.805664 -2.45117 1.79883\nc2.37988 3.75 5.88965 -0.919922 5.86035 6.13965c-0.0800781 25.75 0.209961 38 0.229492 40.1006c0 3.41992 -0.530273 4.64941 -3.32031 4.93945c-7 0.720703 -3.10938 3.37012 -1.10938 3.38086c11.8398 0.0996094 22.6201 0.179688 30.0498 -0.720703\nc8.76953 -1.06934 16.71 -12.6299 7.92969 -22.6201c-2 -2.25 -4 -4.41992 -6.13965 -6.72949c0.950195 -1.15039 6.89941 -8.82031 17.2803 -19.6797c2.65918 -2.78027 6.14941 -3.51074 9.87988 -3.13086h0.0214844c1.1709 0 2.16016 0.950195 2.20801 2.12012\nc0.299805 3.41992 0.259766 -4.72949 0.450195 40.5801c0 5.65039 -0.339844 6.58008 -3.22949 6.83008c-3.9502 0.350586 -4 2.25977 -0.69043 3.37012l19.0898 0.0898438c0.320312 0 4.49023 -0.530273 1 -3.37988c0 -0.0498047 -0.160156 0 -0.240234 0\nc-3.60938 -0.259766 -3.93945 -1 -4 -4.62012c-0.269531 -43.9297 0.0703125 -40.2295 0.410156 -42.8203c0.110352 -0.839844 0.270508 -2.22949 5.10059 -2.13965c2.48926 0 3.85938 -3.37012 0 -3.39941c-10.3701 -0.0800781 -20.7402 0 -31.1104 -0.0703125\nc-10.6699 0 -13.4697 6.2002 -24.21 20.8203c-1.59961 2.17969 -8.31055 2.35938 -8.2002 0.369141c0.879883 -16.4697 0 -17.7793 4 -17.6699c4.75 0.100586 4.73047 -3.56934 0.830078 -3.5498h0.0595703zM423.271 228.778\nc-1.20996 -7.12988 0.170898 -10.3799 -5.2998 -10.3398c-61.5498 0.419922 -47.8193 0.219727 -50.7197 0.30957c-1.02246 0.100586 -2.64844 0.426758 -3.62988 0.730469c-2.53027 0.599609 1.47949 1.22949 -0.379883 5.59961\nc-1.43066 3.37012 -2.78027 6.78027 -4.11035 10.1895c-0.210938 0.797852 -1.05078 1.44434 -1.875 1.44434c-0.0351562 0 -0.0908203 -0.00195312 -0.125 -0.00390625c-1.82812 0.0878906 -4.79785 0.15918 -6.62793 0.15918\nc-2.19727 0 -5.75879 -0.102539 -7.95215 -0.229492c-0.587891 -0.0771484 -1.31348 -0.551758 -1.62012 -1.05957c-1.58008 -3.62012 -3.06934 -7.29004 -4.50977 -11c-1.26953 -3.23047 7.86035 -1.32031 12.1904 -2.16016c3 -0.570312 4.5293 -3.71973 0.65918 -3.72949\nh-26.3691c-2.91992 0 -3.09082 3.14941 -0.740234 3.20996c0.0791016 -0.00390625 0.208008 -0.00683594 0.288086 -0.00683594c2.14648 0 4.66992 1.55762 5.63184 3.47656c1.5 3 2.7998 6 4.11035 9.08984c18.1797 42.1396 17.0596 40.1699 18.4199 41.6104\nc0.300781 0.431641 0.973633 0.78125 1.5 0.78125s1.19824 -0.349609 1.5 -0.78125c2.92969 -3.33984 18.3994 -44.71 23.6201 -51.9199c2 -2.7002 5.73926 -2 6.35938 -2c3.61035 -0.130859 4 1.10938 4.12988 4.29004\nc0.0898438 1.86914 0.0800781 -1.1709 0.0703125 41.2393c0 4.45996 -2.36035 3.74023 -5.5498 4.27051c-0.259766 0 -2.56055 0.629883 -0.0800781 3.05957c0.209961 0.200195 -0.890625 0.240234 21.7002 0.150391c2.31934 0 5.31934 -2.75 -1.20996 -3.4502\nc-0.0322266 0.000976562 -0.0830078 0.00292969 -0.115234 0.00292969c-1.41309 0 -2.55957 -1.14746 -2.55957 -2.56055c0 -0.0751953 0.00683594 -0.197266 0.0146484 -0.272461c-0.0703125 -1.62988 -0.19043 -38.8896 0.290039 -41.21\nc0.27832 -1.34668 1.62109 -2.43848 2.99609 -2.43848c0.0644531 0 0.168945 0.00390625 0.233398 0.00878906c13.25 -0.430664 14.9199 -0.44043 16 3.41016c1.66992 5.7793 4.12988 2.51953 3.73047 0.189453zM318.551 164.408\nc-4.24023 0 -4.41992 3.38965 -0.609375 3.41016c35.9092 0.160156 28.1094 -0.379883 37.1895 0.649414c1.67969 0.19043 2.37988 -0.239258 2.25 -1.88965c-0.259766 -3.38965 -0.639648 -6.78027 -1 -10.1602c-0.25 -2.16016 -3.2002 -2.61035 -3.39941 0.150391\nc-0.380859 5.30957 -2.15039 4.44922 -15.6309 5.08008c-1.58008 0.0693359 -1.63965 0 -1.63965 -1.52051v-16.1299c0 -1.65039 0 -1.59961 1.62012 -1.46973c3.12012 0.25 10.3096 -0.339844 15.6895 1.51953c0.470703 0.160156 3.30078 1.79004 3.07031 -1.75977\nc0 -0.209961 -0.759766 -10.3496 -1.17969 -11.3896c-0.530273 -1.29004 -1.87988 -1.51074 -2.58008 -0.320312c-1.16992 2 0 5.08008 -3.70996 5.2998c-15.4199 0.900391 -12.9102 2.5498 -12.9102 -6c0 -12.25 -0.759766 -16.1104 3.88965 -16.2402\nc16.6406 -0.479492 14.4004 0 16.4307 5.70996c0.839844 2.37012 3.5 1.77051 3.17969 -0.580078c-0.44043 -3.20996 -0.849609 -6.42969 -1.22949 -9.63965c0 -0.360352 -0.160156 -2.39941 -4.66016 -2.38965c-37.1602 0.0800781 -34.54 0.189453 -35.21 0.30957\nc-2.7207 0.509766 -2.2002 3 0.219727 3.4502c1.09961 0.19043 4 -0.540039 4.16016 2.55957c2.43945 56.2207 -0.0703125 51.3408 -3.91016 51.3301zM318.141 273.928c2.45996 -0.609375 3.12988 -1.75977 2.9502 -4.64941\nc-0.330078 -5.2998 -0.339844 -9 -0.549805 -9.69043c-0.660156 -2.22949 -3.15039 -2.12012 -3.33984 0.270508c-0.379883 4.80957 -3.0498 7.81934 -7.57031 9.14941c-26.2803 7.73047 -32.8096 -15.46 -27.1699 -30.2197c5.87988 -15.4102 22 -15.9199 28.8604 -13.7803\nc5.91992 1.85059 5.87988 6.5 6.91016 7.58008c1.22949 1.2998 2.25 1.83984 3.11914 -1.09961c0 -0.100586 0.570312 -11.8906 -6 -12.75c-1.59961 -0.209961 -19.3799 -3.69043 -32.6797 3.38965c-21 11.1904 -16.7402 35.4697 -6.87988 45.3301\nc14 14.0596 39.9102 7.05957 42.3203 6.46973h0.0292969zM289.801 167.858c3.28027 0 3.66016 -3 0.160156 -3.43066c-2.61035 -0.319336 -5 0.419922 -5 -5.45996c0 -2 -0.19043 -29.0498 0.400391 -41.4502c0.109375 -2.28906 1.14941 -3.51953 3.43945 -3.64941\nc22 -1.20996 14.9502 1.64941 18.79 6.33984c1.83008 2.24023 2.75977 -0.839844 2.75977 -1.08008c0.350586 -13.6201 -4 -12.3896 -5.18945 -12.3994l-38.1602 0.189453c-1.92969 0.230469 -2.05957 3 -0.419922 3.37988c2 0.480469 4.93945 -0.399414 5.12988 2.7998\nc1 15.8701 0.570312 44.6504 0.339844 47.8105c-0.269531 3.76953 -2.7998 3.26953 -5.67969 3.70996c-2.46973 0.379883 -2 3.21973 0.339844 3.21973c1.4502 0.0205078 17.9697 0.0302734 23.0898 0.0205078zM258.171 225.648\nc0.0703125 -4.08008 2.86035 -3.45996 6 -3.58008c2.61035 -0.100586 2.53027 -3.41016 -0.0703125 -3.43066c-6.47949 0 -13.6992 0 -21.6094 0.0605469c-3.83984 0 -3.37988 3.34961 0 3.37012c4.49023 0 3.24023 -1.61035 3.41016 45.54\nc0 5.08008 -3.27051 3.54004 -4.7207 4.22949c-2.58008 1.23047 -1.35938 3.08984 0.410156 3.15039c1.29004 0 20.1904 0.410156 21.1699 -0.209961c0.980469 -0.620117 1.87012 -1.65039 -0.419922 -2.86035c-1 -0.519531 -3.85938 0.280273 -4.14941 -2.46973\nc0 -0.209961 -0.820312 -1.62988 -0.0703125 -43.7998h0.0498047zM221.261 -48.6221c0.408203 -0.273438 1.13867 -0.495117 1.62988 -0.495117c0.492188 0 1.22168 0.22168 1.62988 0.495117c17 9.79004 182 103.57 197.421 112.51\nc-0.140625 0.430664 11.2598 0.180664 -181.521 0.270508c-1.21973 0 -1.57031 -0.370117 -1.53027 -1.56055c0 -0.0996094 1.25 -44.5098 1.2207 -50.3799c-0.0791016 -2.17969 -0.688477 -5.63379 -1.36035 -7.70996c-0.549805 -1.83008 0.379883 0.5 -13.5 -32.2295\nc-0.730469 -1.7207 -1 -2.20996 -2 0.0800781c-4.19043 10.3398 -8.28027 20.7197 -12.5703 31c-1.12109 2.52441 -2.03125 6.81543 -2.03125 9.57812c0 0.333984 0.0146484 0.876953 0.03125 1.21191c0.160156 2.45996 0.800781 16.1191 1.51074 48c0 1.94922 0 2 -2 2\nh-183c2.5791 -1.63086 178.319 -102.57 196 -112.761zM130.361 140.128c0 -2.39941 0.359375 -2.79004 2.75977 -3c11.54 -1.16992 21 -3.74023 25.6396 7.32031c6 14.46 2.66016 34.4102 -12.4795 38.8398c-2 0.589844 -16 2.75977 -15.9404 -1.50977\nc0.0498047 -8.04004 0.00976562 -11.6104 0.0205078 -41.6504zM236.111 155.178c0 -2.12988 1.06934 -38.6797 1.08984 -39.1299c0.339844 -9.93945 -25.5801 -5.76953 -25.2305 2.58984c0.0800781 2 1.37012 37.4199 1.10059 39.4307\nc-14.1006 -7.44043 -14.4199 -40.21 6.43945 -48.8008c1.88184 -0.816406 5.0752 -1.47949 7.12695 -1.47949c5.53418 0 12.3721 3.83008 15.2637 8.5498c4.90918 7.75977 6.83984 29.4697 -5.43066 39c-0.0966797 -0.0400391 -0.257812 -0.09375 -0.359375 -0.120117\nv-0.0400391zM223.831 353.178c-9.83008 0 -9.73047 -14.75 -0.0703125 -14.8701c9.66016 -0.119141 10.1006 14.8809 0.0703125 14.9102v-0.0400391zM143.681 249.348c0 -1.7998 0.410156 -2.39941 2.16992 -2.58008c13.6201 -1.38965 12.5107 11 12.1602 13.3604\nc-1.68945 11.2197 -14.3799 10.2002 -14.3496 7.81055c0.0498047 -4.5 -0.0302734 -13.6807 0.0195312 -18.5908zM356.001 242.948l-6.09961 15.8398c-2.16016 -5.48047 -4.16016 -10.5703 -6.23047 -15.8398h12.3301z\" />\n    <glyph glyph-name=\"d-and-d-beyond\" unicode=\"&#xf6ca;\" horiz-adv-x=\"640\" \nd=\"M313.8 206.5c-9.89941 0 -16 7 -15.7002 7.09961c-4.2998 5.7002 -3 -0.299805 -2.39941 -1.89941c-10.9004 10.2998 -5.2998 25.3994 -5.10059 26c0.700195 1.89941 0 2.2002 -0.599609 1.89941c-1 -0.299805 -2.09961 -1.89941 -2.09961 -1.89941\nc0.799805 9.09961 9.2998 14.7002 9.2998 14.7002l0.200195 -0.200195c1 -1.5 -0.400391 -3.2002 -0.600586 -9c1.60059 2.2998 7.90039 6.59961 11.4004 7.89941c-1.10059 -1.5 -2.10059 -3.59961 -2.10059 -6.59961c3.7002 4.2002 7.5 2.59961 8 2.40039\nc-12.1992 -11.9004 -7 -26.6006 3.2002 -26.6006c5.7002 0 11.5 6.40039 13.9004 10.7002c2.39941 -2.40039 6.39941 -5.5 7.39941 -6.59961c-3.7998 -7.80078 -11 -17.9004 -24.7998 -17.9004zM366.2 227.6c0 -2.89941 -2.90039 -4.09961 -5.40039 -4.5\nc0.700195 1.5 1.7998 5.10059 -0.200195 9c0.700195 -0.0996094 5.60059 -0.5 5.60059 -4.5zM376.5 222.4c-0.400391 -6.5 -6.90039 -11.6006 -14.5996 -10.6006c2 -1.7002 6.59961 -3 9 -1.89941c-3.90039 -6.90039 -23.1006 -7.5 -23.1006 6.39941\nc-2.89941 -2.89941 -2.09961 -7.39941 0 -9.2998c-2.2002 0.700195 -5.7998 3.09961 -6.39941 7.40039c-1.30078 10.0996 4.39941 6.5 -10.4004 18.0996c-4.7998 3.7002 -3 6.59961 -4 8.5c-1.09961 2.2002 -7 4.09961 -4.5 8.5\nc-0.0996094 -1.59961 1 -2.90039 2.59961 -3.5c1.80078 -0.700195 3.2002 -0.200195 4.80078 -1c1.69922 -1.2002 0.899414 -3.90039 2.19922 -5c1.10059 -0.799805 4.2002 0.299805 6.60059 -1.7998c2.59961 -2 8.2002 -6.7002 10.5996 -8.60059\nc4.40039 -3.59961 8.7998 0.400391 7.40039 4.60059c4.5 -2.60059 5 -9.90039 1.2998 -12.5c10.5996 -2.40039 13 10.0996 5 11.3994c7.2998 0.700195 13.5 -4.2998 13.5 -10.6992zM337.1 240.8c4.30078 6.10059 13.3008 15.2998 23.8008 15.7998\nc-5.90039 0.800781 -15.1006 -3.19922 -19.7002 -9c0.899414 3.90039 5.09961 10.1006 10.2002 13c0 0 -2.5 -3.19922 -1.40039 -3.69922c1.59961 -0.800781 5.7998 5.69922 11.2002 5.89941c0 0 -4 -2 -3.2002 -3.39941c0.599609 -0.900391 3.2998 1.2998 8 1.2998\nc5.7998 0 10.9004 -3.5 13.2998 -6.2002c-4 1.09961 -11.5996 -0.799805 -13.7998 -2.7002c-0.299805 0.200195 -11.7998 9 -22 -15.5c-4.7998 3.7998 -4.40039 3.7002 -6.40039 4.5zM579.6 188.9c37.2002 0 60.4004 -19.6006 60.4004 -48.9004\nc0 -28.2002 -17 -48.9004 -59.0996 -48.9004c-20.7002 0 -41.2002 1.30078 -51.6006 2.10059l7.40039 8.2002v77.1992l-7.40039 8.2002c10.2998 0.799805 29.6006 2.10059 50.2998 2.10059zM564.5 113.3c25.4004 -3.2002 46.7998 1.40039 46.7998 27\nc0 22.5 -16.7002 29.6006 -46.7998 26.2998v-53.2998zM301.6 267c0.100586 -0.299805 -2.7998 2.2998 -3.2998 7.5c-0.200195 2.2998 0 19.7998 20 18.9004c11.2002 -0.600586 16.7002 -8.30078 16.7002 -16.5c0 -4.30078 -2.2998 -10.1006 -5.5 -13.8008\nc-2.2002 2.2002 -5.59961 4.60059 -7.7002 7.80078c3.7998 5.59961 2.2002 14.3994 -4.7002 14.3994c-4.2998 0 -7.7998 -4.5 -6.39941 -9.89941c-0.700195 -2.40039 -1 -5.60059 -0.5 -8c-4.90039 2.59961 -6.5 6 -7.5 9c-1.2998 -2.5 -2.10059 -6 -1.10059 -9.40039z\nM301.2 261c0.299805 1.7002 -3.10059 4.59961 -4.7998 5.2002c4.7998 0.200195 7 -0.600586 7 -0.600586c-1.30078 1.7002 -1.60059 4.5 -1 6.7002c2.5 -6.09961 11.6992 -7.09961 13.8994 -12.2002c-0.299805 2.30078 -2.39941 4.7002 -4.7998 6.10059\nc-1.2998 3.2002 -0.299805 9.39941 1.2998 11c-0.5 -8.7998 12 -13.7998 14.6006 -20.2002c-1.40039 5.5 -7.40039 9 -10.1006 12.2002c-1 2.09961 -0.200195 5.7998 0.799805 7.09961c-0.5 -9.7002 15.8008 -14.2998 14.1006 -23.8994\nc0.899414 -0.400391 2.09961 -1.2002 1.89941 -2.60059c1.30078 0.299805 2.60059 1.7002 2.90039 2.7002c0.700195 -4.5 -1.90039 -9 -4.7998 -10.4004c1.59961 4 -2.7002 5.60059 -6.7002 5.10059c0 0 1.59961 2.2998 1 3.39941\nc-0.799805 1.5 -8 0.800781 -11.2002 -0.299805c1.10059 0.100586 3.60059 -0.200195 4.60059 -0.5c-2.10059 -2.89941 -1 -7.09961 1.2998 -4.2002c0 0 -1.10059 -3.5 -0.299805 -4.2998c0.799805 -0.799805 2.59961 -0.200195 2.59961 -0.200195\nc-1.2002 -2.69922 -5.2998 -4.59961 -8.2002 -4.59961c1.10059 0.400391 2.7002 2.2998 3 3.40039c-0.799805 -0.5 -2.7002 -0.700195 -3.5 -0.5c6.10059 3 0 13.1992 -7 8.19922c1 2.7002 3.7002 5.30078 5.7998 6.10059c-1.2998 0.5 -2.69922 0.799805 -4.2998 1.09961\nc1.7998 1.5 6.2998 2.7998 8.5 2.60059c-3.5 0.799805 -9.89941 -0.300781 -12.7998 -3.7002c0.900391 0 3.2998 -0.5 4.2998 -0.799805c-4 -0.700195 -9.39941 -4.40039 -11 -6.2002c0.299805 2.2002 1 4.2002 0.5 5.59961c-0.799805 2 -3 2.7998 -7.7998 1.7998\nc3.2002 3.2002 9.7002 5.10059 10.2002 6.90039zM327.1 253.6c0 0 -0.899414 3 -4.19922 4.30078c0.699219 -2.2002 1.5 -4.30078 4.19922 -4.30078zM366 249.9l0.700195 0.699219c0.5 0.400391 1.59961 0.900391 2.7002 1.40039v-18.4004\nc-1.7002 0.800781 -3.5 1.10059 -5.60059 1.10059c-2.39941 0 -5 -0.5 -5 -0.5c-0.5 0.5 -3.59961 2.89941 -5.09961 3.2002c4.09961 -4.30078 0.5 -9.80078 -3 -7.2002v15.7002c0.700195 0.799805 1.2998 1.7998 2.09961 2.59961\nc1.7002 2.09961 4.60059 3.40039 7.5 3.40039c1.7998 0 3.60059 -0.400391 4.7002 -1.40039zM79.9004 142.1c22 -6.39941 19.3994 -20.0996 19.3994 -25.1992c0 -7.80078 -3.2002 -13.6006 -9.89941 -17.6006c-12.6006 -7.39941 -24.7002 -5.89941 -86.4004 -5.89941\nl8.40039 8.59961v32.2998l-11.4004 14.6006h11.2998v29.5l-8.2998 8.59961h56.0996c12.9004 0 37 -4.40039 37 -25c0 -1.90039 1 -15.2998 -16.1992 -19.9004zM38.5996 169.6v-20.8994c10.6006 0 29.6006 -3.2998 29.6006 8.7998v3\nc0 9.90039 -9.60059 9.09961 -29.6006 9.09961zM38.5996 110.4c20.4004 0 32.9004 -1.90039 32.9004 9.2998h-0.200195v4.5c0 11.0996 -20.5 8.7998 -32.7002 8.7998v-22.5996zM139.8 129.7v-15.4004l60.1006 0.200195l-14.1006 -21.2002h-81.2002l7.40039 8.2002v77.0996\nl-7.40039 8.2002l73.5 0.200195v-0.200195l14.1006 -21h-52.4004v-14.8994h37.2002l-14.0996 -21.2002v-0.200195zM354.5 189.8c73.7998 0 77.5996 -99.2998 -0.299805 -99.2998c-77.2002 0 -73.6006 99.2998 0.299805 99.2998zM354.2 112.3\nc39 0 37 55.2002 0.200195 55.2998c-37.1006 0 -37.6006 -55.2998 -0.200195 -55.2998zM262.9 120.6l0.199219 -19l7.2002 -8.19922h-42.5996l7.7002 8.19922l-0.200195 19.4004l-44.1006 65.7998h44.9004l-6.40039 -7.2002l21 -37.1992h0.300781l20.5 37.1992\nl-6.10059 7.2002h41.7002zM234.5 271.9c-9.09961 6.69922 -9.5 14.0996 -9.59961 14.8994c7.2998 -4.2998 9 -4 39.8994 -4c-5.7998 0 24 3.10059 32.2002 -22.8994c-0.400391 0 -8.40039 -4.80078 -10.4004 -7.90039c5.30078 1.90039 8.90039 1.09961 9 1.09961\nc-8 -5.09961 -9.59961 -14.7998 -9.59961 -20.5c0.900391 2.10059 2.7002 3.7002 2.7002 3.5c-0.600586 -2.5 -1.40039 -7 -0.799805 -12c-8.60059 -7.09961 -16 -8.59961 -26 -8.59961h-35.1006c0.400391 0.0996094 7.7998 4.5 7.90039 4.59961\nc1.89941 1.10059 2.7002 2.2002 2.7002 6.40039v38.7998c0 4.2002 -1.30078 5.2998 -2.90039 6.60059zM256 266.4v-34.6006c4.7002 0 23.0996 -3.39941 23.0996 17.2998c0 20.6006 -18.5 17.3008 -23.0996 17.3008zM484.9 186.8l39.1992 -0.0996094l-7.39941 -8.2998\nv-85.2002h-21.2998c-4 12.7002 -44.8008 45 -48.5 55.5996h-0.300781v-47.3994l7.40039 -8.2002h-39l7.2002 8.2998v76.9004l-7.40039 8.5h31.6006c2.89941 -9.40039 39.7998 -36.5 45.1992 -50.9004h0.300781v42.5zM378.2 282.9\nc32.7002 -1.60059 33.7998 -29.8008 33.7998 -33.6006c0 -6.7002 -3.2998 -34 -36.7002 -34h-0.299805c3.59961 4.2998 3.5 11.9004 -2.2002 16.2998c1.2002 0 19.7002 -3.19922 19.7002 17.3008c0 20.6992 -18.4004 17.2998 -23.0996 17.2998v-4.2998\nc-5.40039 0.799805 -7.40039 -0.300781 -7.5 -0.300781c2.09961 1.80078 4.5 2.60059 6.09961 2.90039c-7.09961 1.59961 -13.5996 -2.40039 -14.5996 -3.5c0.799805 1.7998 2.39941 3.40039 3.5 4.5c-2.30078 -0.799805 -4.30078 -1.90039 -6.10059 -3\nc0 5.2002 0.200195 7.5 -2.89941 9.5c-9.10059 6.59961 -9.5 14.2002 -9.60059 14.9004c7.10059 -4.2002 7.7002 -4 39.9004 -4z\" />\n    <glyph glyph-name=\"dev\" unicode=\"&#xf6cc;\" \nd=\"M120.12 239.71c3.87012 -2.90039 5.82031 -7.25977 5.83008 -13.0596v-69.6504c0 -5.80957 -1.94043 -10.1602 -5.82031 -13.0596c-3.87988 -2.90039 -7.76953 -4.35059 -11.6494 -4.35059h-17.4502v104.47h17.4395c3.87988 0 7.77051 -1.44922 11.6504 -4.34961z\nM404.1 416c24.2002 0 43.8408 -19.5898 43.9004 -43.7998v-360.4c-0.0595703 -24.21 -19.6904 -43.7998 -43.9004 -43.7998h-360.199c-24.2002 0 -43.8408 19.5898 -43.9004 43.7998v360.4c0.0595703 24.21 19.7002 43.7998 43.9004 43.7998h360.199zM154.2 156.81\nl-0.00976562 70.9307c-0.0107422 18.8193 -11.9307 47.2793 -47.3701 47.2793h-47.3799v-165.46h46.3994c36.75 -0.0595703 48.3604 28.4404 48.3604 47.25zM254.88 245.47l0.00976562 29.5205h-63.1895c-11.1504 -0.280273 -19.9805 -9.54004 -19.71 -20.6904v-125.109\nc0.279297 -11.1602 9.55957 -19.9805 20.7197 -19.6904h62.1797v29.5703h-53.29v38.4102h32.5703v29.5693h-32.5703v38.4199h53.2803zM358.52 130.18l38.4609 144.801h-32.5801l-29.5703 -113.721l-29.71 113.721h-32.5703l38.5303 -144.801\nc10.5898 -24.6299 34.2402 -30.75 47.4395 0z\" />\n    <glyph glyph-name=\"fantasy-flight-games\" unicode=\"&#xf6dc;\" horiz-adv-x=\"512\" \nd=\"M256 415.14l223.14 -223.14l-223.14 -223.14l-223.14 223.14zM88.3398 192.17c11.3447 -11.2461 29.7705 -29.4893 41.1299 -40.7197c20.1602 19.8799 40.46 39.8994 61.8506 60.9902c12.0596 -12.5801 24.5195 -25.5703 36.54 -38.1104\nc12.0293 11.6895 23.7393 23.0596 35.6895 34.6602c-6.99023 7.4502 -32.1494 32.8301 -35.0898 35.7793c-1.91016 1.9209 -2.29004 3.2207 -0.120117 5.35059c15.5801 15.2295 39.21 17.79 56.9805 5.09961c7.98926 -5.70996 14.2998 -11.6396 48.5098 -43.9502\nc10.8203 11.1504 22.2295 22.8506 33.5 34.6904c0.490234 0.520508 0.0996094 2.63965 -0.580078 3.37988c-0.0898438 0.100586 -37.5195 40.6006 -62.1504 59c-33.5801 25.0801 -78.3193 23.0605 -119.77 -18.6895c-84.5703 -85.1807 -94.5303 -95.4805 -96.4902 -97.4805z\nM323.16 90.5703c18.8203 18.79 80.3301 80.6396 100.5 101.5c-13.7305 13.4492 -27.1797 26.6299 -40.8604 40.0293c-20.0098 -19.7393 -40.2402 -39.6895 -61.25 -60.4199c-12.3301 12.8301 -24.8799 25.8799 -37.25 38.75\nc-1.25977 -0.689453 -1.64941 -0.80957 -1.91016 -1.06934c-10.7295 -10.7705 -21.4199 -21.5801 -32.21 -32.29c-2.22949 -2.20996 -0.519531 -3.35059 0.800781 -4.69043c10.5791 -10.7402 21.1797 -21.4502 31.7695 -32.1797\nc3.5498 -3.60059 3.54004 -3.85059 -0.139648 -7.24023c-16.8008 -15.4697 -40.8408 -16.54 -59.3203 -1.7998c-7.62012 6.08008 -11.6602 10.1797 -44.6797 42.0898c-11.5801 -11.8896 -23.3203 -23.9404 -35.3701 -36.3096\nc33.5498 -34.7607 50.8496 -53.3408 72.9297 -66.8408c28.9004 -17.6699 71.5 -14.96 106.99 20.4707zM256 448l256 -256l-256 -256l-256 256zM16 192l240 -240l240 240l-240 240z\" />\n    <glyph glyph-name=\"penny-arcade\" unicode=\"&#xf704;\" horiz-adv-x=\"640\" \nd=\"M421.91 283.73c7.33984 -16.2705 2.29004 -5.07031 24.6299 -54.6807l-39.7305 -10.6094c13.7002 59.2295 10.6104 45.8398 15.1006 65.29zM215.82 232.62c32.5 8.99023 41.9492 -37.6396 -0.350586 -47.4297c-14.2002 -3.77051 -6.64941 -1.75 -34.8193 -9.34082\nl-4.45996 46.1904c28.3193 7.5498 19.4395 5.17969 39.6299 10.5801zM541.98 258.81c75.7998 -37.9092 98 -76.3193 97.9893 -104.47c2.10059 -78.8496 -183.3 -130.33 -399.89 -84.8301c0.540039 -13 -8.00977 -24.6494 -20.5801 -28.0195\nc-125.54 -33.54 -117.35 -31.75 -122.53 -31.7598c-14.3701 -0.0107422 -26.4102 10.8896 -27.7998 25.1992l-4.2998 44.4805c-0.0683594 0.724609 -0.125 1.90332 -0.125 2.63184c0 10.5811 8.01758 22.2461 17.8945 26.0381l-1.73926 17.8799\nc-50.2305 28.2598 -80.9004 61.8701 -80.9004 95.3701c0 72.9199 144.26 113.4 309.41 98.3701c2.68945 7.54395 11.1514 15.3438 18.8896 17.4102c96.8701 25.9092 65.3203 17.4795 135.59 36.2295c13.1602 3.50977 26.9307 -2.95996 32.6201 -15.3301zM255.14 149.7\nc17.5 4.0498 40.2363 19.1562 50.75 33.7197c21.6006 32.5898 14.1104 105.561 -42.5498 104.43c-16.04 -0.229492 -8.07031 0.890625 -186.22 -46.6494l4.34961 -44.5l20.1201 5.38965l11.1104 -114.64l-20.0205 -5.35059l4.30078 -44.5195l115.31 30.7803\nl-4.50977 44.5098l-20.5303 -5.50977l-2.45996 23.5498l48.4404 12.9102zM454.32 133.08l108.55 28.96l-4.2998 44.4795l-20.79 -5.55957l-66.6699 145.47c-70.5801 -18.8301 -42.2305 -11.25 -135.591 -36.2393l4.2002 -44.4805l17.1504 4.55957l-33.0801 -126.47\nl-20.9902 -5.58984l4.45996 -44.4297l112.851 30.0693l-4.05078 39.54l-19.1992 -5.12012l4.09961 17.54l57.7598 15.4209l6.61035 -14.6807l-14.9004 -3.97949z\" />\n    <glyph glyph-name=\"wizards-of-the-coast\" unicode=\"&#xf730;\" horiz-adv-x=\"640\" \nd=\"M219.19 102.31c7.44922 5.80078 16.2598 0.680664 21.7295 -7.0791c7.08984 -10.1201 6.24023 -18.1602 -0.259766 -23.04c-7.62012 -6.24023 -17.0898 0.129883 -21.7305 6.5498c-10.8096 15.1299 -1.63965 22.1895 0.260742 23.5693zM555.94 26.3701\nc1.30957 4.4502 3.92969 10.21 3.93945 20.1699c0 34.04 -41.6299 64.4102 -100.03 68.0801c-53.1592 3.39941 -120.46 -15.4502 -184.35 -73.8506l-0.790039 0.260742c1.58008 10.4697 -0.780273 16.2295 -3.40039 21.21l0.260742 1.56934\nc64.4199 51.3203 134.069 66.5107 188.8 60.4902c61.0098 -6.54004 104.479 -39.54 101.34 -78.0303c-0.790039 -9.68945 -2.88965 -15.71 -4.97949 -19.8994c-1.34082 -1.66992 -1.13086 -1.7002 -0.790039 0zM392.28 207.58\nc-0.530273 7.07031 3.13965 11.7803 6.7998 15.46c3.66992 3.91992 14.9297 10.4697 14.9297 10.4697s-1.2998 -26.4502 -2.08984 -29.8496c-1.04004 -3.92969 -4.96973 -6.81055 -10.4697 -6.5498c-4.98047 0.259766 -8.37988 3.39941 -9.16992 10.4697zM342.26 358.68\nc147.17 0 275.48 -86.6797 291.21 -196.939c0 0 -3.66992 -1.31055 -9.68945 -4.4502c0 -0.259766 1.0498 -10.7402 0.259766 -16.5c-0.259766 -1.83008 -1.0498 -1.0498 -1.0498 0c-0.270508 5.24023 -1.57031 11.5303 -2.36035 14.9297\nc-4.70996 -2.60938 -10.21 -6.54004 -15.9697 -11.7793c0 0 4.70996 -10.21 4.70996 -25.9209c0 -21.21 -8.37988 -32.9893 -16.5 -37.9697l-0.259766 0.520508c9.16992 9.16992 12.5693 21.4795 12.5693 31.9492c0 13.8701 -6.80957 33.25 -14.3994 41.3701\nc0 0 4.4502 -8.12012 6.80957 -17.8096c0 0 -21.21 -21.4697 -26.9697 -62.3203c0 0 -3.66992 9.16992 -10.7402 16.2402c0 0 12.0498 -15.4502 12.0498 -38.2305c0 -19.3799 -12.8398 -37.4395 -27.5 -48.1797c-0.989258 0 -0.790039 -0.169922 -0.790039 0.790039\nc15.71 12.8301 22.2607 28.0205 22.2607 46.3506c0 38.2295 -49.2305 80.3896 -130.15 80.3896c-96.1104 0 -181.74 -58.1299 -236.99 -128.05l-1.0498 0.259766c-40.3203 120.979 -135.64 185.66 -196.13 202.16c-2.09961 0.519531 -1.83984 0.790039 -0.790039 1.30957\nc12.3096 14.4004 136.96 151.88 341.47 151.88zM243.02 69.0596c16.8408 14.5908 4.99023 30.7705 4.71094 31.1602c-4.08008 5.99023 -16.3105 16.8506 -31.1602 5.5c-10.9502 -8.37988 -11.6406 -22.8896 -4.19043 -32.4697\nc6.44043 -8.26953 19.5801 -13.1797 30.6396 -4.19043zM245.11 205.49l1.83008 -8.11035l-3.6709 4.4502l-14.1396 -26.71l24.6201 -28.7998l12.5703 6.01953l-11.7803 70.96zM263.7 87.9102c3.41016 2.35938 7.33984 4.97949 9.67969 6.57031l-0.259766 0.259766\nc-1.56055 -0.780273 -3.11035 -1.0498 -12.5703 15.9697v0.259766c6.87012 5.16016 8.45996 4.89062 11.5205 5.5l0.259766 0.260742c-1.31055 3.66992 -1.31055 3.66992 -1.83008 5.5h-0.259766c-3.95996 -3.31055 -1.4707 -1.58008 -11.5205 -7.86035h-0.259766\nc-1.83008 3.13965 -4.19043 7.33008 -5.75977 9.68945v1.31055c4.4502 3.91992 10.2197 6.7998 12.3096 7.58984c2.87988 1.0498 4.19043 0.520508 5.24023 0.259766l0.259766 0.520508c-1.30957 1.83008 -2.08984 2.87988 -3.39941 4.70996l-0.520508 0.259766\nc-9.9502 -5.5 -17.54 -9.9502 -25.3994 -15.71l0.259766 -0.519531c1.30957 0.259766 3.13965 -0.260742 4.4502 -2.62012c15.04 -25.0801 19.5898 -27.5908 17.54 -31.6904zM318.96 120.38v0.25c-1.99023 0 -2.34961 -1.37012 -14.6602 30.6396v0.260742\nc4.95996 1.85938 8.78027 4.37988 12.3105 2.62012l0.259766 0.519531l-3.13965 4.98047l-0.520508 0.259766c-2.22949 -0.929688 -20.4697 -8.00977 -27.7598 -12.5703l-0.259766 -0.519531l1.0498 -5.76074h0.519531c1.0498 3.68066 9.7998 7.33008 9.9502 7.33008\nl0.259766 -0.259766c12.9404 -29.7598 13.0703 -29.8799 11.7803 -32.4697l0.259766 -0.259766c3.93066 2.09961 6.81055 3.40918 9.9502 4.97949zM363.73 136.88c-0.780273 0.520508 -2.09082 1.31055 -2.63086 3.92969c-1.56934 6.02051 -4.70996 20.1709 -6.2793 26.4502\nc-0.530273 1.57031 -0.530273 3.14062 0.519531 4.4502l-0.259766 0.259766c-3.41016 -0.529297 -6.29004 -1.30957 -10.7402 -2.35938v-0.260742c1.57031 -0.529297 2.10059 -2.09961 2.62012 -3.92969l2.62012 -9.42969l-0.259766 -0.259766\nc-3.40039 -1.05078 -8.90039 -2.62012 -12.8301 -3.93066h-0.259766c-0.780273 2.10059 -1.83008 5.75977 -3.14062 9.69043l0.259766 4.70996l-0.259766 0.259766c-4.71973 -1.30957 -7.59961 -2.34961 -10.7402 -3.40039v-0.519531\nc1.05078 0 2.10059 -1.30957 2.62012 -3.13965c1.0498 -3.40039 8.12012 -24.0908 9.16992 -27.2305c0.790039 -2.09961 0.790039 -3.66992 -0.259766 -4.97949l0.259766 -0.260742c3.14062 1.31055 6.54004 2.87988 10.21 3.93066v0.519531\nc-1.0498 0.259766 -2.08984 0.780273 -2.87988 3.13965c-1.0498 3.93066 -3.39941 11.2607 -4.18945 13.8809l0.259766 0.259766c3.92969 1.30957 9.42969 3.13965 12.8301 3.92969l0.259766 -0.259766c0.530273 -2.09961 2.62012 -10.2197 3.66992 -13.6201\nl-0.519531 -4.4502l0.259766 -0.259766c4.4502 1.57031 5.5 1.83008 9.69043 2.87988zM395.94 143.69c0.529297 1.8291 1.0498 3.65918 1.5791 6.04004h-0.259766c-2.0293 -4.06055 -15.0898 -5.09082 -16.2402 -4.71094l-0.259766 0.260742\nc-0.519531 3.13965 -1.83008 10.4795 -2.08984 12.5693l0.259766 0.260742c8.06055 0.899414 5.40039 1.0293 10.21 0h0.260742c0 3.40918 0.259766 3.66992 0.259766 5.23926h-0.259766c-5.98047 -2.2998 -1.2207 -0.679688 -10.7402 -2.35938l-0.259766 0.259766\nc-0.520508 3.40039 -1.31055 8.37988 -1.57031 9.9502l0.259766 0.259766c12.9004 2.41016 15.1006 0.349609 16.2402 -0.790039l0.259766 0.259766c-0.780273 2.36035 -1.0498 3.14062 -1.57031 5.5l-0.259766 0.260742\nc-4.71973 -0.260742 -15.71 -1.05078 -24.8799 -2.62012l-0.790039 -0.520508c1.83008 -0.790039 2.36035 -1.83984 2.62012 -3.66992c1.58008 -7.59961 3.41016 -18.3301 4.98047 -26.1895l-0.790039 -4.19043l0.259766 -0.259766\nc8.37988 1.83008 17.8096 3.66992 22.5195 4.18945zM406.68 188.2c3.14062 1.56934 7.33008 5.5 7.33008 5.50977c1.95996 -4.58008 0.970703 -2.70996 4.19043 -7.86035c10.1494 -0.459961 8.60938 0.0205078 20.4297 -1.0498l0.790039 4.70996\ns-4.18945 0 -5.75977 1.83008c-1.0498 1.31055 -1.31055 3.14062 -1.57031 5.5c0 2.36035 0.270508 16.5 0.790039 20.6904c0.259766 4.18945 2.08984 20.4199 2.08984 23.04c0.260742 2.62012 1.0498 8.91016 0.260742 12.0498\nc-4.82031 19.2803 -24.4307 17.8096 -50.0205 16.2402l-5.24023 -16.2402l2.62012 -2.87988c16.5498 16.5498 37.6201 4.56934 29.5898 -5.75977c-5.18945 -6.9209 -19.7393 -8.90039 -28.54 -17.0205c-6.47949 -6.49023 -12.2393 -20.9004 -5.5 -31.6904\nc6.12988 -11.0391 17.29 -9.96973 17.54 -9.94922c2.87988 0 6.55078 0.519531 11 2.87988zM443.86 166.99c0 1.83984 0.269531 4.18945 0.269531 5.25l-0.259766 0.519531c-14.3604 8.98047 -26.8604 0.919922 -28.7998 -9.9502\nc-2.83984 -16.0898 15.3594 -25.46 25.6602 -18.5898l0.519531 0.520508c0 0.259766 1.30957 4.4502 1.83008 6.2793l-0.259766 0.260742c-6.39062 -9.58008 -23.3203 -6.87012 -20.6904 10.21c1.91016 12.6602 15.3799 16.0801 21.7305 5.5zM449.63 254.72\nc0 0 4.96973 -0.790039 4.99023 -3.66016c0 -2.08984 -4.98047 -55.25 -4.98047 -55.25c-0.109375 -1.48926 -0.339844 -6.80957 -7.58984 -6.80957l-0.790039 -4.70996c18.3906 -2.83008 19.3701 -3.04004 36.9199 -7.33008l0.520508 4.70996\nc-13.0498 3.91992 -9.74023 7.37012 -4.4502 46.0898c1.09961 0.870117 8.62012 7.14062 20.6904 0.790039l11.2598 11.2598s-9.69043 8.90039 -14.9307 7.33008c-5.23926 -1.30957 -15.4492 -10.7393 -15.4492 -10.7393l1.56934 17.54\nc-8.10938 4.0498 -27.0693 7.3291 -27.7598 7.3291v-6.5498zM460.62 140.28c9.42969 -2.35059 16.2402 2.62012 18.8496 11.5195c2.08984 7.60059 -1.56934 16.7598 -10.7393 19.3799c-6.54004 2.10059 -15.7109 -0.779297 -18.8506 -10.21\nc-3.39941 -9.68945 2.62012 -18.5996 10.7402 -20.6895zM502.78 130.59c-0.780273 1.31055 -1.04004 2.10059 -0.799805 3.91016c1.22949 27.0098 1.5293 24.6602 1.0498 25.1396c-2.08984 0.790039 -5.5 2.09082 -7.58984 2.87988l-0.520508 -0.259766v-2.08984\nc-3.92969 -6.01953 -10.4795 -15.4502 -13.8799 -20.1602l-2.62012 -1.83008v-0.259766c2.08984 -0.259766 4.70996 -1.30957 6.02051 -1.57031v0.260742l0.790039 3.39941c0.789062 1.0498 2.35938 3.66992 3.66992 5.5c0.40918 0 2.25 -0.549805 7.06934 -2.35938\nc0.330078 -0.320312 0.330078 0.649414 -0.259766 -7.59082l-1.57031 -1.8291v-0.260742c1.57031 -0.519531 6.28027 -2.35938 8.64062 -2.87988zM498.07 220.41c-13.2207 -21.1504 -9.39062 -51.6006 9.66992 -52.9004c5.75977 -0.259766 9.42969 3.93066 9.68945 3.66992\nl-2.08984 -6.80957c8.91016 -4.21973 11.4404 -5.29004 17.8105 -8.63965l1.83008 4.44922c-6.14062 3.51074 -1.29004 11.25 24.6191 84.3203c-6.13965 6.45996 -10.2998 10.0596 -22.5195 20.4297l-1.83008 -3.66992c1.62988 -1.35938 6.79004 -5.00977 4.4502 -11.2598\nl-7.58984 -26.1904c-3.28027 12.79 -22.79 14.8701 -34.04 -3.39941zM527.4 141.07l2.35938 3.39941v0.520508c-3.41016 6.83008 -11.9395 7.41992 -14.6602 2.35938c-1.83984 -3.40918 0.260742 -7.06934 1.83008 -9.68945\nc1.57031 -2.87988 3.14062 -6.29004 2.08984 -8.37988c-2.31934 -4.62988 -8.94922 -0.680664 -8.37988 4.97949l-0.790039 -0.259766c-2.09961 -4.7998 -1.83008 -4.00977 -1.83008 -4.70996c3.05078 -6.09961 12.8105 -7.12988 15.4502 -0.790039\nc1.57031 3.15039 0.520508 6.80957 -1.0498 9.42969c-1.83008 3.40039 -4.18945 6.29004 -2.87988 8.37988c1.51953 2.65039 7.86035 0.470703 7.86035 -5.23926zM548.61 127.71l1.30957 3.91016l-0.259766 0.259766c-2.36035 2.08984 -8.64062 6.54004 -12.3105 8.90039\nh-0.259766l-3.13965 -3.40039v-0.259766c4.7998 -0.320312 3.37988 0.149414 6.01953 -1.83008v-0.259766c-2.62012 -4.9707 -6.0293 -11.2607 -9.16992 -17.0205l-2.08984 -1.30957l-0.259766 -0.259766l5.75977 -4.4502l0.259766 0.259766\nc-0.259766 0.530273 -0.519531 1.57031 0.790039 3.92969c2.87988 5.77051 6.28027 12.0508 8.64062 16.2402h0.259766c3.54004 -2.57031 2.49023 -1.43945 4.4502 -4.70996zM575.84 171.97l7.85059 10.46s-9.4209 18.8604 -23.04 16.5\nc-20.8408 -4.0293 -3.15039 -34.21 -2.09082 -38.2295c4.33008 -15.1299 -16.3193 -12.5605 -13.3496 5.24023l-2.87988 2.08984l-4.98047 -14.4004s11.7803 -11.2598 20.1602 -10.4697c8.12012 0.790039 13.8799 6.29004 13.8799 16.5\nc0 8.37988 -7.85938 22.7803 -7.85938 27.7598c0 6.86035 12.2695 4.75977 11.5195 -4.97949c-0.259766 -2.61035 -1.2998 -5.23047 -2.08984 -7.59082zM611.46 182.18c0.780273 -2.35938 1.57031 -1.83008 0.790039 0.270508\nc-32.4697 98.9795 -132.76 138.78 -199.8 139.83c-50.54 0.779297 -89.5605 -11.79 -131.98 -35.8799l20.6904 61.0098l-33.7803 -65.7305l-8.89941 20.9502c3.13965 1.04004 6.2793 2.08984 6.2793 2.08984l-2.62012 8.64062s-3.13965 -0.780273 -7.33008 -2.09082\nl-12.0498 28.2803l13.6201 -61.0098c-5.12012 2.55957 -19.0996 6.83008 -6.5498 19.3799l-2.62012 11c-6.97949 -2.21973 -13.2295 -3.62012 -32.21 -9.68945l-23.0801 11.5l59.1797 -42.6807l-4.70996 -2.08984l-17.2793 13.8799\nc2.23926 -5.13965 3.2998 -12.1699 4.70996 -19.6396l-28.54 -13.0898l-30.1104 36.1396l-17.2803 -9.16992l13.6201 -42.4199l-11.2598 -4.98047l94.2695 29.3301l-3.66992 -10.4697l-0.519531 3.13965l-13.0898 -3.39941l4.97949 -24.6201l-4.4502 -12.3105\nl-25.6592 30.6406l-39.8008 -10.21l18.8506 -58.9199c-60.1299 62.3994 -67.7002 66.3994 -61.7998 75.6797c2.09961 2.87988 7.85938 7.07031 7.85938 7.07031l-4.18945 7.06934c-26.7803 -18.3496 -27.8398 -19.1494 -58.4004 -42.6797l4.98047 -6.01953\ns8.12012 5.75977 13.6201 5.5c7.81934 -0.350586 1.76953 2.93945 113.659 -98.7305l11.7803 8.37988l-27.7598 93.4805l35.8799 -42.1602l-4.70996 -13.8799l41.9004 88.5098c34.6699 -80.5098 29.1494 -66.9502 32.9893 -78.8203l-33.5195 67.2998l-2.36035 -4.44922\nc1.2998 -1.30078 -0.919922 3.05957 22.7803 -59.4404c3.22949 -8.88965 -1.10059 -9.88965 -5.5 -12.8301l2.36035 -4.70996c15.3594 6.79004 22.9395 9.54004 39.0195 14.4004l-1.0498 4.97949c-8.89062 -1.33008 -10.1006 0.169922 -12.0498 4.4502\nc-1.05078 2.09961 -14.1504 40.0703 -20.4307 58.6602l-10.21 4.97949l-2.35938 8.12012l61.54 -36.6602l-13.0908 -43.21c12.1904 3.26074 27.0303 6.74023 49.4902 9.9502l-0.259766 26.71l-4.98047 -1.0498c-0.669922 -13.7998 -6.0293 -22.0801 -19.6396 -22.7803\nl22.2598 80.3906c-27.6201 -0.450195 -59.2695 -7.19043 -66.7695 -8.90039l3.92969 -16.5l-25.1396 19.6396l91.3896 20.6904l-85.6299 -9.16992c38.4902 22.5195 79.3398 39.0195 132.76 37.9697c131.46 -2.08984 180.95 -99.2402 191.95 -129.62zM203.48 295.57\nl2.35938 -8.64062c7.82031 2.61035 10.8604 2.36035 11.2598 2.36035l-9.42969 7.58984c-2.36035 -0.790039 -4.18945 -1.30957 -4.18945 -1.30957zM347.24 257.07l-11.5303 -37.71l-21.7295 17.0195c6.7998 25.5 31.6895 21.29 33.2598 20.6904zM318.43 380.93\nc224.94 0 321.83 -143.76 321.57 -227.55c0 -11 -0.269531 -17.5498 -0.790039 -19.6396c-0.259766 -2.10059 -1.0498 -0.790039 -1.0498 0.519531v9.9502c0 106.58 -121.51 223.37 -301.67 223.37c-61.2705 0 -103.69 -12.0498 -110.24 -13.8799l-1.57031 0.259766\nc-6.80957 7.58984 -12.8301 9.69043 -21.21 11.7803v0.790039c8.91016 2.34961 56.5605 14.3994 114.96 14.3994zM529.49 211.25c-8.61035 -34.4502 -13.6504 -35.3496 -18.3301 -35.3604c-7.33008 0 -6.81055 9.43066 -6.02051 14.9307\nc0.879883 9.72949 7.40039 34.6494 17.0205 33.5195c7.33008 -0.780273 8.63965 -7.33008 7.33008 -13.0898zM467.96 168.3c3.40039 -0.780273 7.84961 -4.4502 5.23047 -14.3896c-2.88086 -11.2598 -8.11035 -11.79 -11.7803 -10.7402\nc-5.5 1.31055 -7.85059 7.84961 -6.02051 14.6602c3.14062 11.2598 9.9502 11.2598 12.5703 10.4697zM491 147.35v0.270508c1.0498 1.83008 5.5 8.63965 6.5498 9.9502c-0.269531 -3.66992 -0.790039 -10.2207 -0.790039 -12.0508\nc-2.62012 0.780273 -3.92969 1.31055 -5.75977 1.83008z\" />\n    <glyph glyph-name=\"think-peaks\" unicode=\"&#xf731;\" horiz-adv-x=\"576\" \nd=\"M465.4 38.5996l-206.2 353.801l-204.2 -352.101l-32 0.299805l236.2 407.4l206.2 -353.9l55.0996 95l32 -0.299805zM110.1 82.7002l149.601 257.899l235.8 -404.6l-32.5 0.0996094l-203.4 349.101l-117.399 -202.5h-32.1006z\" />\n    <glyph glyph-name=\"reacteurope\" unicode=\"&#xf75d;\" horiz-adv-x=\"576\" \nd=\"M250.6 236.26l2 6.7998l-5.69922 4.30078l7.19922 0.0996094l2.30078 6.7998l2.2998 -6.7998l7.09961 -0.0996094l-5.7002 -4.30078l2.10059 -6.7998l-5.7998 4.10059zM314.3 236.26l1.90039 6.7998l-5.7002 4.30078l7.2002 0.0996094l2.2998 6.7998l2.2998 -6.7998\nl7.2002 -0.0996094l-5.7002 -4.30078l2.10059 -6.7998l-5.80078 4.10059zM223 185.76c4.90039 0 3.7998 -3.89941 3.7998 -13.7598c0 -10.2998 -6.7002 -14.0996 -16.7998 -14.0996h-0.200195c-10.0996 0 -16.7998 3.69922 -16.7998 14.0996v40.0596\nc0 9.90039 6.7002 14.1006 16.7998 14.1006h0.200195c10.0996 0 16.7998 -4.2002 16.7998 -14.1006c0 -8.39941 0.900391 -12.1992 -3.7998 -12.2998h-3.40039c-4.5 0 -3.7998 3.2998 -3.7998 10.5c0 4.7002 -2.2998 6.10059 -5.7998 6.10059\ns-5.7998 -1.40039 -5.7998 -6.10059v-36.5996c0 -4.7002 2.2998 -6.10059 5.7998 -6.10059s5.7998 1.40039 5.7998 6.10059c0 8.09961 -1 12.0996 3.7998 12.0996h3.40039zM142.3 168.36c2.5 0 3.7998 -1.30078 3.7998 -3.80078v-2.09961\nc0 -2.5 -1.2998 -3.7998 -3.7998 -3.7998h-21.8994c-2.5 0 -3.80078 1.2998 -3.80078 3.7998v59.0996c0 2.5 1.30078 3.90039 3.7002 3.80078h21.7002c2.5 0 3.7998 -1.30078 3.7998 -3.80078v-2.09961c0 -2.5 -1.2998 -3.7998 -3.7998 -3.7998h-14.4004v-18.2998h11.4004\nc2.5 0 3.7998 -1.30078 3.7998 -3.80078v-2.09961c0 -2.5 -1.2998 -3.7998 -3.7998 -3.7998h-11.4004v-19.2998h14.7002zM100.3 186.86l8.10059 -23.9004c0.799805 -2.59961 -0.400391 -4.40039 -3.2002 -4.40039h-3.2998\nc-0.0820312 -0.00585938 -0.21582 -0.0107422 -0.297852 -0.0107422c-1.81543 0 -3.6084 1.43848 -4.00293 3.21094l-7.39941 23.5h-5.60059v-22.8994c0 -2.5 -1.2998 -3.80078 -3.7998 -3.80078h-3.39941c-2.5 0 -3.80078 1.30078 -3.80078 3.80078v59.0996\nc0 2.5 1.30078 3.7998 3.80078 3.7998h13.3994c10.1006 0 16.7998 -4 16.7998 -14.0996v-11.9004c0 -6.39941 -2.69922 -10.3994 -7.2998 -12.3994zM96.5 200.86v8.69922c0 4.80078 -2.5 6.10059 -6.09961 6.10059h-5.80078v-20.9004h5.80078\nc3.59961 0 6.09961 1.2998 6.09961 6.10059zM176 222l11.2002 -59.2002c0.5 -2.7002 -0.799805 -4.09961 -3.40039 -4.09961h-3.5c-0.100586 -0.00976562 -0.264648 -0.0185547 -0.366211 -0.0185547c-1.94531 0 -3.61816 1.57617 -3.7334 3.51855l-1.7998 11.2998h-12.2002\nl-1.7998 -11.2998c-0.116211 -1.94238 -1.78809 -3.51855 -3.7334 -3.51855c-0.101562 0 -0.265625 0.00878906 -0.367188 0.0185547h-3c-2.5 0 -3.89941 1.39941 -3.39941 4.09961l11 59.2002c0.135742 1.88477 1.78027 3.41504 3.66992 3.41504\nc0.0908203 0 0.239258 -0.00683594 0.330078 -0.0146484h6.89941c0.110352 0.0117188 0.290039 0.0205078 0.401367 0.0205078c1.89844 0 3.60059 -1.53223 3.79883 -3.4209zM163.7 182.7h9.39941l-4.69922 29.7002zM253 162.5c0 -2.45996 -1.2998 -3.83984 -3.7998 -3.7998\nh-3.40039c-2.5 0 -3.7998 1.2998 -3.7998 3.7998v53.2002h-7.2998c-2.5 0 -3.7998 1.2998 -3.7998 3.7998v2.09961c0 2.5 1.2998 3.80078 3.7998 3.80078h25.7998c2.5 0 3.7998 -1.30078 3.7998 -3.80078v-2.09961c0 -2.5 -1.2998 -3.7998 -3.7998 -3.7998h-7.5v-53.2002z\nM501 163.3c0.0449219 0.00390625 0.119141 -0.0322266 0.164062 -0.0322266c1.01562 0 1.84082 -0.824219 1.84082 -1.83984c0 -0.0351562 -0.00292969 -0.0927734 -0.00488281 -0.12793v-0.799805c0.00195312 -0.0273438 0.00292969 -0.0722656 0.00292969 -0.100586\nc0 -0.999023 -0.810547 -1.80957 -1.81055 -1.80957c-0.0527344 0 -0.139648 0.00488281 -0.192383 0.00976562h-22.5c-0.0527344 -0.00488281 -0.139648 -0.00976562 -0.192383 -0.00976562c-1 0 -1.81055 0.810547 -1.81055 1.80957\nc0 0.0283203 0.000976562 0.0732422 0.00292969 0.100586v63c-0.00878906 0.0625 -0.0166016 0.166016 -0.0166016 0.229492c0 0.893555 0.725586 1.62012 1.62012 1.62012c0.111328 0 0.289062 -0.0224609 0.396484 -0.0498047h22.2002\nc0.0644531 0.00878906 0.169922 0.015625 0.235352 0.015625c0.977539 0 1.77051 -0.792969 1.77051 -1.76953c0 -0.0400391 -0.00292969 -0.105469 -0.00585938 -0.145508v-0.800781c0.00195312 -0.03125 0.00292969 -0.0820312 0.00292969 -0.113281\nc0 -1.04297 -0.84668 -1.88965 -1.88965 -1.88965c-0.03125 0 -0.0820312 0.000976562 -0.113281 0.00292969h-19.1006v-25.7998h16.1006c0.03125 0.00195312 0.0820312 0.00390625 0.113281 0.00390625c1.04297 0 1.88965 -0.84668 1.88965 -1.89062\nc0 -0.03125 -0.000976562 -0.0820312 -0.00292969 -0.113281v-0.799805c0.00195312 -0.03125 0.00292969 -0.0820312 0.00292969 -0.113281c0 -1.04297 -0.84668 -1.88965 -1.88965 -1.88965c-0.03125 0 -0.0820312 0.000976562 -0.113281 0.00292969h-16.1006v-26.7002\nh19.4004zM407.9 226.2c10.0996 0 15.2998 -4.74023 15.2998 -14.1006v-40.0996c0 -9.2998 -5.2002 -14.0996 -15.2998 -14.0996h-0.800781c-10.0996 0 -15.2998 4.7998 -15.2998 14.0996v40.0996c0 9.40039 5.2002 14.1006 15.2998 14.1006h0.800781zM418.1 173.8v36.6006\nc0 7.89941 -3 11.0996 -10.5 11.0996s-10.5 -3.2002 -10.5 -11.0996v-36.6006c0 -8 3 -11.0996 10.5 -11.0996s10.4004 3.09961 10.5 11.0996zM371.6 188.3l10.6006 -27.2998c0.5 -1.2998 -0.100586 -2.2998 -1.5 -2.2998h-1.5\nc-0.0351562 -0.00195312 -0.0927734 -0.00390625 -0.128906 -0.00390625c-0.886719 0 -1.85938 0.673828 -2.1709 1.50391l-10.4004 27.2002h-11.5996v-26.9004c0.00390625 -0.0458984 0.0078125 -0.12207 0.0078125 -0.167969\nc0 -0.960938 -0.779297 -1.74023 -1.74023 -1.74023c-0.0458984 0 -0.12207 0.00390625 -0.167969 0.0078125h-1.2002c-0.0527344 -0.00488281 -0.139648 -0.00976562 -0.192383 -0.00976562c-0.999023 0 -1.81055 0.810547 -1.81055 1.80957\nc0 0.0283203 0.00195312 0.0732422 0.00292969 0.100586v63c-0.000976562 0.0273438 -0.00292969 0.0722656 -0.00292969 0.100586c0 0.999023 0.811523 1.80957 1.81055 1.80957c0.0527344 0 0.139648 -0.00488281 0.192383 -0.00976562h13.7002\nc10.0996 0 15.2998 -4.7002 15.2998 -14.1006v-9.7002c0 -7.19922 -3.09961 -11.6992 -9.2002 -13.2998zM365.2 192.2c7.5 0 10.5 3.16016 10.5 11v6.39941c0 8 -3 11.1006 -10.5 11.1006h-10.2002v-28.5h10.2002zM451.1 225.3c10.1006 0 15.3008 -4.7002 15.3008 -14.0996\nv-10.5c0 -9.2998 -5.2002 -14.1006 -15.3008 -14.1006h-10.5996v-26.0996c0.00488281 -0.0458984 0.0078125 -0.12207 0.0078125 -0.167969c0 -0.960938 -0.779297 -1.74023 -1.73926 -1.74023c-0.046875 0 -0.12207 0.00390625 -0.168945 0.0078125h-1.19922\nc-0.0537109 -0.00488281 -0.139648 -0.00976562 -0.193359 -0.00976562c-0.999023 0 -1.80957 0.810547 -1.80957 1.80957c0 0.0283203 0.000976562 0.0732422 0.00292969 0.100586v63c-0.00976562 0.0625 -0.0166016 0.166016 -0.0166016 0.229492\nc0 0.893555 0.725586 1.62012 1.62012 1.62012c0.111328 0 0.288086 -0.0224609 0.396484 -0.0498047h13.6992zM461.3 202.5v7.09961c0 7.90039 -3 11.1006 -10.5 11h-10.2002v-29.1992h10.2002c7.5 0 10.5 3.19922 10.5 11.0996zM259.5 140l7.09961 -0.0996094\nl-5.69922 -4.30078l2.09961 -6.7998l-5.7998 4.10059l-5.7998 -4.10059l2.09961 6.7998l-5.7002 4.30078l7.10059 0.0996094l2.2998 6.7998zM487.1 276.1c122.301 -46.0996 118.401 -132.54 -33.8984 -176.34c13.3994 -49.7002 18.0996 -101.899 0.0996094 -133.8\nc-3.7998 -6.7002 -16.7998 -27.7002 -47.5996 -27.7002c-41.5 0 -110.2 41.6006 -182.101 142c-42.7998 3.5 -72.1992 10.1006 -84.5996 13c-20.5 -82.2998 -6.7998 -125.3 15.5 -137.899c1.2002 -0.700195 38.4004 -27.2002 120.9 52.7998\nc3.39941 -3.5 6.79883 -6.90039 10.1982 -10.2002c-63.0996 -61.2002 -110.199 -71 -138.199 -55.2002c-32.4004 18.2998 -42.8008 72 -22.3008 153.9c-18.8994 5 -121.6 33.2002 -122.1 92.7998c-0.400391 40.9004 49.7998 74.7002 120.3 95\nc-13.3994 49.5996 -18.2002 101.8 -0.0996094 133.8c3.7998 6.74023 16.7998 27.7402 47.5996 27.7402c41.6006 0 110.3 -41.6396 182.2 -142.14c23.6113 -1.88379 61.5127 -7.70801 84.5996 -13c20.5 82 6.90039 125.1 -15.5 137.8\nc-1.2998 0.700195 -38.3994 27.2002 -120.899 -52.7998c-3.40039 3.5 -6.80078 6.89941 -10.2002 10.1992c52.2998 50.9404 103.7 74.6006 138.2 55.2402c33.8994 -19.2002 41.8994 -75.8994 22.2998 -153.899c9.98535 -2.61523 25.9346 -7.67773 35.5996 -11.3008z\nM135.901 411.16c-23.1006 -40.7998 1 -121.562 1.19922 -122.961c22.9912 5.78516 60.8018 12.3262 84.4004 14.5996c12.7793 18.6787 35.4922 47.4404 50.7002 64.2002c3.39941 -3.33301 6.7998 -6.74609 10.2002 -10.2393\nc-12.5371 -13.7451 -31.4434 -37.2207 -42.2002 -52.3994c14.8213 1.11914 38.9141 2.02734 53.7783 2.02734c11.082 0 29.0566 -0.504883 40.1211 -1.12793c-64.5 86.6006 -126.5 126.2 -163.3 126.2c-23 0 -32 -15.2002 -34.8994 -20.2998zM440.701 -27.1406\nc3.2998 6 21.5 38.5996 -1.2002 123c-4.09961 -1.10059 -37.0996 -9.90039 -84.4004 -14.6006c-12.7578 -18.6943 -35.4717 -47.4551 -50.6992 -64.2002c-3.40039 3.2998 -6.80078 6.7002 -10.2002 10.2002c12.5371 13.7461 31.4424 37.2207 42.2002 52.4004\nc-14.7715 -1.14258 -38.7842 -2.06934 -53.5996 -2.06934c-11.1328 0 -29.1875 0.524414 -40.3008 1.16895c64.5996 -86.7998 126.6 -126.2 163.3 -126.2c23.1006 0 32 15.2002 34.9004 20.3008zM449.801 111.459c25.6006 7.2998 85.9004 27.4004 105.7 62.5\nc1.40039 2.5 33.5 50.5 -72.5996 90.4004c-9.36914 3.51562 -24.8252 8.44336 -34.5 11c-3.60059 -12.9004 -7.90039 -26.1006 -12.8008 -39.5c-3.15723 -0.430664 -7.14453 -2.93945 -8.89941 -5.60059l-0.100586 0.100586\nc-1.6416 1.55762 -4.68848 3.48438 -6.7998 4.2998c5.7002 15 10.6006 29.7998 14.6006 44.2002c-7.2002 1.69922 -31.8008 7.59961 -72.2002 11.6992c16.7002 -24.5 27.8994 -44.0996 34.2998 -55.5c-3.50781 -1.14648 -8.16699 -4.46094 -10.4004 -7.39941\nc-13.5996 16.3994 -11 19.8994 -42.5 64.5c-13.752 0.96582 -36.1016 1.75 -49.8877 1.75c-17.2871 0 -45.292 -1.23145 -62.5117 -2.75c-16.9004 -25 -28.2998 -45.2002 -34.7998 -56.9004c-3.49707 -1.49023 -8.06738 -5.25391 -10.2002 -8.39941\nc-0.914062 2.88965 -3.78125 6.47363 -6.40039 8c6.10059 11.3994 16.9004 31 32.7998 55.2998c-39.5996 -4.60059 -65 -11.2002 -72 -13c4.30078 -14.1006 9.40039 -28.6006 15.2002 -43.2998c-0.71582 -0.522461 -1.74609 -1.50781 -2.2998 -2.2002\nc-1.5 1.89941 -4 5.2998 -14.4004 5.2998c-4.69922 12.2998 -8.7998 24.5 -12.3994 36.4004c-138.8 -40.3604 -158.4 -121.36 1.5 -164c3.59961 12.8994 7.7998 26 12.7002 39.3994c0.269531 -0.0146484 0.708008 -0.0273438 0.978516 -0.0273438\nc1.68359 0 4.33594 0.460938 5.9209 1.02734c3 -1.2002 5.2002 -1 8.40039 -1c-5.5 -14.5996 -10.2002 -28.8994 -14.1006 -42.8994c19.7119 -4.56055 52.0576 -9.80176 72.2002 -11.7002c-16.2998 23.8994 -27.5 43.3994 -33.7998 54.5996\nc8.7002 0 10.7002 1.60059 12.5996 3.2002c0.794922 -0.480469 2.13965 -1.15234 3 -1.5c15.3008 -26.7002 28.9004 -46.5996 36.8008 -57.7998c13.751 -0.96582 36.1006 -1.75 49.8857 -1.75c17.2871 0 45.2939 1.23145 62.5137 2.75\nc16.5 24.2998 27.7002 44 33.9004 55.2002c7.2998 0 9.7998 3 10.8994 4.19922c1.5332 -1.11426 4.2207 -2.54785 6 -3.19922c-15 -28 -28.6992 -48.9004 -32.1992 -54.2002c20.1172 2.22656 52.373 8.05078 72 13c-4.10059 13.7998 -9 27.8994 -14.7002 42.2002\nc1.65723 0.743164 4.07617 2.35645 5.39941 3.59961l0.100586 0.0996094c2.07227 -3.14648 6.8125 -5.7002 10.5811 -5.7002c0.0322266 0 0.0859375 0 0.119141 0.000976562c4.69922 -12.3008 8.7998 -24.5 12.3994 -36.4004zM335.401 225.459\nc0.0556641 0.00585938 0.145508 0.0107422 0.201172 0.0107422c1.05566 0 1.95117 -0.856445 1.99805 -1.91113v-51.5c0 -9.5 -5 -14.0996 -15.0996 -14.0996h-0.400391c-10.0996 0 -15.0996 4.5 -15.0996 14.0996v51.5\nc-0.00195312 0.0283203 -0.00292969 0.0732422 -0.00292969 0.100586c0 0.999023 0.810547 1.81055 1.81055 1.81055c0.0527344 0 0.139648 -0.00488281 0.192383 -0.0107422h1.2002c0.0615234 0.00878906 0.162109 0.0146484 0.224609 0.0146484\nc0.933594 0 1.69043 -0.756836 1.69043 -1.68945c0 -0.0625 -0.00683594 -0.163086 -0.015625 -0.225586v-49.7998c0 -8 2.60059 -11.0996 10.1006 -11.0996s10.0996 3.2002 10.0996 11.0996v49.7998c-0.00390625 0.046875 -0.0078125 0.12207 -0.0078125 0.168945\nc0 0.959961 0.779297 1.73926 1.74023 1.73926c0.0458984 0 0.121094 -0.00292969 0.167969 -0.0078125h1.2002zM321.701 139.999l7.09961 -0.0996094l-5.7002 -4.30078l2.10059 -6.7998l-5.7998 4.10059l-5.80078 -4.10059l2.10059 6.7998l-5.7002 4.30078\nl7.09961 0.0996094l2.30078 6.7998zM290.601 132.599l7.10059 -0.0996094l-5.7002 -4.2998l2.09961 -6.7998l-5.7998 4.09961l-5.7998 -4.09961l2.09961 6.7998l-5.69922 4.2998l7.09961 0.0996094l2.2998 6.80078zM295.701 163.399\nc0.0507812 0.00488281 0.133789 -0.03125 0.185547 -0.03125c1.00977 0 1.83008 -0.819336 1.83008 -1.83008c0 -0.0664062 -0.00683594 -0.172852 -0.015625 -0.239258v-0.799805c0.00292969 -0.0400391 0.00585938 -0.105469 0.00585938 -0.145508\nc0 -0.977539 -0.792969 -1.77051 -1.77051 -1.77051c-0.0654297 0 -0.170898 0.00683594 -0.235352 0.015625h-22.5c-0.0537109 -0.00488281 -0.139648 -0.00976562 -0.193359 -0.00976562c-0.999023 0 -1.80957 0.810547 -1.80957 1.80957\nc0 0.0283203 0.000976562 0.0732422 0.00292969 0.100586v63c-0.00195312 0.0273438 -0.00292969 0.0722656 -0.00292969 0.100586c0 0.999023 0.810547 1.80957 1.80957 1.80957c0.0537109 0 0.139648 -0.00488281 0.193359 -0.00976562h22.2002\nc0.0644531 0.00878906 0.169922 0.015625 0.235352 0.015625c0.977539 0 1.77051 -0.792969 1.77051 -1.77051c0 -0.0400391 -0.00292969 -0.105469 -0.00585938 -0.145508v-0.799805c0.00195312 -0.03125 0.00292969 -0.0820312 0.00292969 -0.113281\nc0 -1.04395 -0.84668 -1.89062 -1.88965 -1.89062c-0.03125 0 -0.0820312 0.00195312 -0.113281 0.00390625h-19.1006v-25.7998h16.1006c0.03125 0.00195312 0.0820312 0.00292969 0.113281 0.00292969c1.04297 0 1.88965 -0.84668 1.88965 -1.88965\nc0 -0.03125 -0.000976562 -0.0820312 -0.00292969 -0.113281v-0.800781c0.00195312 -0.03125 0.00292969 -0.0820312 0.00292969 -0.113281c0 -1.04297 -0.84668 -1.88965 -1.88965 -1.88965c-0.03125 0 -0.0820312 0.000976562 -0.113281 0.00292969h-16.1006v-26.6992\nh19.4004zM288.301 262.799l2.2998 -6.7998l7.10059 -0.0996094l-5.7002 -4.30078l2.09961 -6.7998l-5.7998 4.10059l-5.7998 -4.10059l2.09961 6.7998l-5.69922 4.30078l7.09961 0.0996094z\" />\n    <glyph glyph-name=\"adobe\" unicode=\"&#xf778;\" horiz-adv-x=\"512\" \nd=\"M315.5 384h170.9v-384zM196.5 384l-170.9 -384v384h170.9zM256 241.9l107.5 -241.9h-73l-30.7002 76.7998h-78.7002z\" />\n    <glyph glyph-name=\"artstation\" unicode=\"&#xf77a;\" horiz-adv-x=\"512\" \nd=\"M2 70.5996h315.1l59.2002 -102.6h-285.399h-0.0146484c-17.4814 0 -38.0381 12.6787 -45.8857 28.2998zM501.8 98c19 -29.4004 -0.0996094 -55.9004 -2 -59.0996l-40.7002 -70.5l-257.3 447.6h88.4004h0.0117188c17.0596 0 37.3936 -12.2305 45.3877 -27.2998zM275 143.5\nh-231l115.5 200z\" />\n    <glyph glyph-name=\"atlassian\" unicode=\"&#xf77b;\" horiz-adv-x=\"512\" \nd=\"M152.2 211.6c66.2998 -70.7998 89.0996 -189.3 51.2002 -267.1c-2.40039 -5.2002 -7.60059 -8.5 -13.4004 -8.40039h-175c-11 0 -18.4004 11.7002 -13.4004 21.7002l125.801 251c5.09961 10.5 17.0996 11 24.7998 2.7998zM244.4 439.9\nc6.7998 10.8994 20.2998 10.6992 25.5996 0.0996094c5.90039 -11.7002 240.4 -482.3 240.4 -482.3c5 -9.90039 -2.2002 -21.7002 -13.4004 -21.7002h-174.2c-5.7002 0 -10.8994 3.2998 -13.3994 8.40039c-73.5 146.899 -187.301 302.1 -65 495.5z\" />\n    <glyph glyph-name=\"canadian-maple-leaf\" unicode=\"&#xf785;\" horiz-adv-x=\"512\" \nd=\"M383.8 96.2998c-5 -5 -10 -7.5 -5 -22.5s10 -35.0996 10 -35.0996s-95.2002 20.0996 -105.2 22.5996c-8.89941 0.900391 -18.3994 -2.39941 -18.3994 -12.5c0 -10.0996 5.7998 -112.8 5.7998 -112.8h-30s5.7998 102.8 5.7998 112.8s-9.59961 13.4004 -18.2998 12.5\nc-10.0996 -2.5 -105.3 -22.5996 -105.3 -22.5996s5 20.0996 10.0996 35.0996c4.90039 15 0 17.5 -5.09961 22.5c-2.60059 2.5 -105.2 92.4004 -105.2 92.4004l17.5 7.59961c10 4.90039 7.40039 11.4004 5 17.4004c-2.5 7.59961 -20.0996 67.2998 -20.0996 67.2998\ns47.5996 -10 57.6992 -12.5c7.5 -2.40039 10 2.5 12.5 7.5s15 32.2998 15 32.2998s52.6006 -59.7998 55.1006 -62.2998c10.0996 -7.5 20.0996 0 17.5996 10c0 10 -27.5996 129.6 -27.5996 129.6s30.0996 -17.3994 40.0996 -22.3994c7.60059 -5 12.6006 -5 17.6006 5\nc5 7.5 42.5 79.7998 42.5 79.7998s37.5996 -72.2998 42.6992 -79.7998c5 -10 10.1006 -10 17.6006 -5c10 5 40.0996 22.3994 40.0996 22.3994s-27.5996 -119.6 -27.5996 -129.6c-2.5 -10 7.59961 -17.5 17.5996 -10c2.5 2.40039 55.1006 62.2998 55.1006 62.2998\ns12.5 -27.3994 15 -32.3994s5 -9.90039 12.5 -7.5c10 2.5 57.6992 12.5 57.6992 12.5s-17.6992 -59.7002 -20.0996 -67.3008c-2.40039 -5.89941 -5 -12.5 5 -17.3994l17.5 -7.5s-102.7 -89.9004 -105.2 -92.4004z\" />\n    <glyph glyph-name=\"centos\" unicode=\"&#xf789;\" \nd=\"M289.6 350.5l31.6006 -31.7002l-76.2998 -76.5v108.2h44.6992zM127.2 318.8l31.5996 31.7002h44.7002v-108.2zM168.7 360.4l55.5 55.5996l55.5 -55.5996h-44.7002v-127.9l-10.7998 -10.7998l-10.7998 10.7998v127.9h-44.7002zM194.9 192.3l-10.8008 -10.7998h-128.6\nv-44.7998l-55.5 55.5996l55.5 55.6006v-44.8008h128.6zM274.2 213l76.2998 76.5l31.5996 -31.7002v-44.7998h-107.899zM447.5 192.3l-55.5 -55.5996v44.7998h-127.7l-10.7998 10.7998l10.7998 10.7998h127.7v44.8008zM65.4004 271.8v78.7002h79.3994l-31.5996 -31.7002\nl90.2998 -90.5v-15.2998h-15.2998l-90.2998 90.5zM382.1 350.5v-78.7002l-31.5996 31.7002l-90.2998 -90.5h-15.2998v15.2998l90.2998 90.5l-31.6006 31.7002h78.5zM203.5 34.0996v-0.0996094h-44.7002l-31.5996 31.7002l76.2998 76.5v-108.101zM65.4004 213v44.7998\nl32.5 31.7002l76.2998 -76.5h-108.8zM382.1 112.8v-78.7002h-78.5l31.6006 31.7002l-90.2998 90.5v15.2998h15.2998l90.2998 -90.5zM382.1 171.6v-44.7998l-31.5996 -31.7002l-76.2998 76.5h107.899zM321.2 65.7998l-31.6006 -31.5996h-44.6992v108.1zM97.9004 95.0996\nl-32.5 31.7002v44.7998h108.8zM279.7 24.2002l-55.5 -55.6006l-55.5 55.6006h44.7002v127.899l10.7998 10.8008l10.7998 -10.8008v-127.899h44.7002zM113.2 65.7998l31.5996 -31.7002h-79.3994v78.7002l32.5 -31.7002l90.2998 90.5h15.2998v-15.2998z\" />\n    <glyph glyph-name=\"confluence\" unicode=\"&#xf78d;\" horiz-adv-x=\"512\" \nd=\"M2.2998 35.7998c42.2998 66.9004 125.2 233.2 373.101 112.601c39.6992 -19.1006 83.6992 -39.9004 105.899 -50.3008c8 -3.69922 11.7002 -13.1992 8.10059 -21.2998l-50.4004 -114.1c-0.0996094 -0.100586 -0.0996094 -0.299805 -0.200195 -0.400391\nc-3.89941 -8.09961 -13.5996 -11.5996 -21.7002 -7.7002c-200.399 95.2002 -213.8 111.5 -280.899 -0.699219c0 0 -0.100586 -0.100586 -0.100586 -0.200195c-4.69922 -7.7002 -14.6992 -10 -22.3994 -5.2998l-105.9 65.1992c-7.59961 4.7002 -10 14.6006 -5.5 22.2002z\nM509.7 347.9c-42.6006 -67.5 -125.4 -232.9 -373.4 -112.9c-39.7002 19.2002 -83.7998 40 -106 50.4004c-8 3.69922 -11.7002 13.1992 -8.09961 21.2998l50.5 114.1c0.0996094 0.100586 0.0996094 0.299805 0.200195 0.400391\nc3.89941 8.09961 13.5996 11.5996 21.6992 7.7002c199.5 -94.7002 213.301 -111.7 280.601 0.899414c0.200195 0.400391 0.399414 0.700195 0.599609 1c5 7.5 15.1006 9.40039 22.6006 4.40039l105.8 -65.1006c7.59961 -4.69922 10 -14.5996 5.5 -22.1992z\" />\n    <glyph glyph-name=\"dhl\" unicode=\"&#xf790;\" horiz-adv-x=\"640\" \nd=\"M238 146.8l22.2998 30.2002h58.7002l-22.2998 -30.2002h-58.7002zM0 165.1h86.5l-4.7002 -6.39941h-81.7998v6.39941zM172.9 177h68.1992c-5.69922 -7.7998 -24.0996 -30.2998 -57.1992 -30.2998h-100.101l41.1006 55.7998h51c5.59961 0 5.59961 -2.2002 2.7998 -5.90039\nc-2.7998 -3.69922 -7.60059 -10.2998 -10.4004 -14.0996c-1.39941 -1.90039 -4.09961 -5.5 4.60059 -5.5zM490.4 183.9h-62.2002l39.2998 53.3994h62.2002zM95.2998 177l-4.7002 -6.40039h-90.5996v6.40039h95.2998zM206.3 203.6\nc2.7998 3.7002 2.90039 5.90039 -2.7002 5.90039h-111.399l20.3994 27.7998h117.9c29.9004 0 37.5996 -23.5996 29.2002 -35c-6.2002 -8.39941 -13.5 -18.3994 -13.5 -18.3994h-45.6006c-8.69922 0 -6 3.5 -4.59961 5.5c2.7998 3.7998 7.5 10.3994 10.2998 14.1992zM0 146.8\nv6.40039h77.7998l-4.7002 -6.40039h-73.0996zM323 146.8c0 0 22.2002 30.2002 22.2998 30.2002h58.7002l-22.2998 -30.2002h-58.7002zM545 146.7l4.7002 6.39941h90.2998v-6.39941h-95zM567.3 177h72.7002v-6.40039h-77.4004zM553.8 158.7l4.7002 6.39941h81.5v-6.39941\nh-86.2002zM389.6 237.3h58.7002l-39.2998 -53.3994h-143.6l39.2998 53.3994h58.7002l-22.5 -30.5996h26.1992zM423.1 177h133.4l-22.2998 -30.2998h-94.2998c-24.1006 0 -30.6006 11.5996 -23.2002 21.5996c2.09961 2.7998 6.39941 8.7002 6.39941 8.7002z\" />\n    <glyph glyph-name=\"diaspora\" unicode=\"&#xf791;\" horiz-adv-x=\"512\" \nd=\"M251.64 93.4502c-1.39941 0 -88 -119.9 -88.6992 -119.9c-0.700195 0 -86.6006 60.4502 -86.9404 61.2002s86.5996 125.7 86.5996 127.4c0 2.19922 -129.6 44 -137.6 47.0996c-1.2998 0.5 31.4004 101.8 31.7002 102.1c0.599609 0.700195 144.399 -47 145.5 -47\nc0.399414 0 0.899414 0.600586 1 1.30078c0.399414 2 1 148.6 1.7002 149.6c0.799805 1.2002 104.5 0.700195 105.1 0.299805c1.5 -1 3.5 -156.1 6.09961 -156.1c1.40039 0 138.7 47 139.301 46.2998c0.799805 -0.900391 31.8994 -102.2 31.5 -102.6\nc-0.900391 -0.900391 -140.2 -47.1006 -140.601 -48.8008c-0.299805 -1.39941 82.7998 -122.1 82.5 -122.899s-85.5 -63.5 -86.2998 -63.5c-1 0.200195 -89 125.5 -90.9004 125.5h0.0400391z\" />\n    <glyph glyph-name=\"fedex\" unicode=\"&#xf797;\" horiz-adv-x=\"640\" \nd=\"M586 163.5l54 -60.5h-64.4004l-22.2998 25l-22.0996 -25h-212.2v11.9004h-0.5c-7.90039 -11.7002 -20.7998 -18.6006 -34.9004 -18.6006c-32.6992 0 -56.3994 26.4004 -60.0996 56.9004h-85.5c0 -23.5 31.0996 -35.5 45.7998 -14.6006h42\nc-27.5996 -67.6992 -130.2 -49.3994 -130.2 23.7002c0 6.40039 0.800781 12.5 2.30078 18.2002h-48.9004v-77.5h-49v184.4h109v-41.1006h-60v-26.2002h54.7998v-24.1992c24.5 43.5996 103.9 45.3994 121.9 -14c7.5 25.5 28.8994 44.8994 57.2998 44.8994\nc13.9004 0 25.7998 -3.7998 35.4004 -14.7998h0.5v75.5h151.199v-48.0996h-56.0996v-16h118.7l22.5 -24.8008l21.7002 24.8008h62.3994zM139.3 180.1h46.5c-4.7998 25.6006 -40.3994 26.3008 -46.5 0zM292.7 131.2c34.5 0 32.5996 62.7998 0 62.7998\nc-34 0 -34.6006 -62.7998 0 -62.7998zM460.5 112.1v29.6006h-56.0996v44.7002h56.0996v28.0996h-55.5v33.9004h56.0996v30.1992h-95v-166.5h94.4004zM414.6 151.9h56.1006v-45.6006l50.7002 57l-50.7002 57v-44h-56.1006v-24.3994zM553.2 141.6l26.2998 -29.5h40.5\nl-46 51.4004l45.4004 51h-38.5l-25.6006 -29.2998l-26.5996 29.2998h-39.7002l45.5996 -51.2002l-45.5996 -51.2002h38.0996z\" />\n    <glyph glyph-name=\"fedora\" unicode=\"&#xf798;\" \nd=\"M225 416c123.7 -0.299805 223.7 -100.9 223.4 -224.6c-0.300781 -123.7 -100.9 -223.7 -224.601 -223.4l-170.2 0.400391v0c-29.5879 0 -53.6006 24.0127 -53.6006 53.5996c0 0.0830078 0.000976562 0.216797 0.000976562 0.299805l0.400391 170.3\nc0.399414 123.7 100.899 223.7 224.6 223.4zM394.8 258.8c-0.0771484 6.26953 -1.33203 16.3047 -2.7998 22.4004l-55.2002 56.0996v-1.59961c0 -5.10059 -1.5 -9.60059 -3.7998 -14.2998zM331 353.7c1.65332 -2.31348 3.53516 -6.43555 4.2002 -9.2002l54.2998 -54.5996\nc-8.27539 24.8252 -34.4834 53.4082 -58.5 63.7998zM118.1 200.8c-4.54785 -0.369141 -11.8057 -1.66895 -16.1992 -2.89941l8.5 -8.5c1.68457 3.44336 5.13477 8.55078 7.69922 11.3994zM97 196.6c-3.91211 -1.08984 -10.0498 -3.41895 -13.7002 -5.19922l27 -27.2002\nc-1.30469 3.32617 -2.37988 8.92676 -2.39941 12.5l0.899414 8zM78.7998 189.2c-3.21484 -1.79492 -8.23242 -5.02051 -11.2002 -7.2002l35.3008 -35.9004c3.70801 1.84668 10.0254 3.95215 14.0996 4.7002zM63.5996 179.4\nc-3.06738 -2.29395 -7.5918 -6.50488 -10.0996 -9.40039l34.9004 -34.5996c2.66113 2.6377 7.36523 6.44629 10.5 8.5zM50.2998 167.1c-2.89941 -3.2998 -5.7998 -6.69922 -8.59961 -10.5l35.7998 -35.8994c1.74121 3.40527 5.19141 8.5127 7.7002 11.3994zM39.2998 152.8\nc-2.07715 -3.18457 -5.0791 -8.56055 -6.7002 -12l39.5 -39.7998c0.306641 4.3584 1.91895 11.168 3.60059 15.2002zM30.5 136.5c-1.7998 -4.90039 -3.2998 -9.59961 -4.7002 -14.5l52.7002 -53.5c-3.42578 6.82812 -6.42773 18.5654 -6.7002 26.2002zM22.5996 93.5\nc0.0380859 -6.14551 1.33789 -15.957 2.90039 -21.9004l55.4004 -55.6992v1.09961c0.0341797 4.18848 1.64746 10.5947 3.59961 14.2998zM27.9004 62.7998c8.29785 -24.8047 34.5059 -53.3867 58.5 -63.7998c-1.61816 2.33008 -3.5 6.45117 -4.2002 9.2002zM22.5996 99.7998\nl64.4004 -64.2002c2.30469 2.8877 6.74023 6.78613 9.90039 8.7002l-72.2002 72.5c-1.08105 -4.62988 -2.02148 -12.2461 -2.10059 -17zM275.9 151.6c32.5996 -0.0996094 32.6992 49.2002 0.199219 49.4004l-33.5996 0.0996094\nc-4.91309 0.0224609 -8.90039 4.02734 -8.90039 8.94043v0.0595703l0.100586 47c0.0996094 40.5 38.5996 60.8008 66 54.9004c15.3994 -3.90039 30.2998 8.40039 30.2998 23.9004c0 12.0996 -8.7002 22.1992 -19.9004 24\nc-5.39062 1.26953 -14.2617 2.30078 -19.8008 2.30078c-0.110352 0 -0.289062 -0.000976562 -0.398438 -0.000976562c-0.116211 0 -0.304688 0.000976562 -0.420898 0.000976562c-57.96 0 -105.081 -47.041 -105.18 -105.001l-0.0996094 -56l-42.6006 0.0996094\nc-32.5996 0.100586 -32.6992 -49.2002 -0.0996094 -49.2998l33.5996 -0.0996094c4.40039 0 8.90039 -4.5 8.90039 -9l-0.0996094 -47c-0.00585938 -30.8574 -25.0537 -55.9004 -55.9102 -55.9004h-0.19043c-9.39941 0 -9.39941 1.59961 -15.7002 1.59961\nc-13.3691 -0.208008 -24.3457 -11.2295 -24.5 -24.5996c0 -15.5 14.2002 -24.2002 19.9004 -24.2002c61.2998 -12.8994 125.5 33.6006 125.7 102.9l0.0996094 56zM299.4 151.9c4.50781 0.442383 11.7207 1.74219 16.0996 2.89941l-8.5 8.5\nc-1.48047 -3.55762 -4.88477 -8.66504 -7.59961 -11.3994zM320.4 156.1c3.9248 1.09082 10.0625 3.46484 13.6992 5.30078l-27 27.1992c1.30566 -3.32617 2.38086 -8.92578 2.40039 -12.5l-0.900391 -8.09961zM338.4 163.5c4 2.2002 8.09961 4.7002 11.8994 7.2002\nl-36.2002 35.8994c-4.09961 -2.2998 -8.7998 -3.59961 -13.6992 -4.69922zM353.9 173.3c2.92188 2.33301 7.44727 6.36426 10.0996 9l-34.9004 35c-2.63672 -2.66797 -7.34082 -6.47656 -10.5 -8.5zM367.1 185.6c2.52539 2.77441 6.37793 7.47852 8.60059 10.5\nl-35.7998 35.9004c-1.78125 -3.37891 -5.23047 -8.48633 -7.7002 -11.4004zM378.1 199.9c2.10938 3.16602 5.11133 8.54199 6.7002 12l-39.5 39.7998c-0.305664 -4.3584 -1.91895 -11.168 -3.59961 -15.2002zM391.6 230.8l-53.0996 53.4004\nc3.69434 -6.76172 6.875 -18.499 7.09961 -26.2002l41.3008 -41.5c1.50879 3.87695 3.61426 10.2832 4.69922 14.2998zM392.6 236.4c1.05957 4.52246 2.08984 11.959 2.30078 16.5996l-64.3008 64.7002c-2.18359 -3.12988 -6.61816 -7.25098 -9.89941 -9.2002z\" />\n    <glyph glyph-name=\"figma\" unicode=\"&#xf799;\" horiz-adv-x=\"384\" \nd=\"M277 277.3h-85.4004v-256c-0.0273438 -47.085 -38.2637 -85.2998 -85.3496 -85.2998c-47.1133 0 -85.3496 38.2363 -85.3496 85.3496s38.2363 85.3506 85.3496 85.3506h0.0498047c-47.1133 0 -85.3496 38.2363 -85.3496 85.3496s38.2363 85.3506 85.3496 85.3506\nc-47.085 0 -85.2998 38.2139 -85.2998 85.2998c0 47.085 38.2148 85.2998 85.2998 85.2998h170.7c47.1133 0 85.3496 -38.2363 85.3496 -85.3496s-38.2363 -85.3506 -85.3496 -85.3506zM277 277.3c47.0801 -0.00488281 85.2949 -38.2197 85.2998 -85.2998\nc0 -47.0859 -38.2139 -85.2998 -85.2998 -85.2998s-85.2998 38.2139 -85.2998 85.2998s38.2139 85.2998 85.2998 85.2998z\" />\n    <glyph glyph-name=\"intercom\" unicode=\"&#xf7af;\" \nd=\"M392 416c30.9004 0 56 -25.0996 56 -56v-336c0 -30.9004 -25.0996 -56 -56 -56h-336c-30.9004 0 -56 25.0996 -56 56v336c0 30.9004 25.0996 56 56 56h336zM283.7 333.9v-199.5c0 -19.8008 29.8994 -19.8008 29.8994 0v199.5c0 19.7998 -29.8994 19.7998 -29.8994 0z\nM209.1 341.4v-216.5c0 -19.8008 29.9004 -19.8008 29.9004 0v216.5c0 19.7998 -29.9004 19.7998 -29.9004 0zM134.4 333.9v-199.5c0 -19.8008 29.8994 -19.8008 29.8994 0v199.5c0 19.7998 -29.8994 19.7998 -29.8994 0zM59.7002 304v-134.3\nc0 -19.7998 29.8994 -19.7998 29.8994 0v134.3c0 19.7998 -29.8994 19.7998 -29.8994 0zM383.1 76.2002c14.9004 12.8994 -4.5 35.5996 -19.3994 22.7002c-63.2002 -53.9004 -213.4 -55.3008 -279.3 0c-15 12.7998 -34.4004 -9.90039 -19.4004 -22.7002\nc76.4004 -65.4004 245.3 -63 318.1 0zM388.3 169.7v134.3c0 19.7998 -29.8994 19.7998 -29.8994 0v-134.3c0 -19.7998 29.8994 -19.7998 29.8994 0z\" />\n    <glyph glyph-name=\"invision\" unicode=\"&#xf7b0;\" \nd=\"M407.4 416c22.3994 0 40.5996 -18.2002 40.5996 -40.5996v-366.801c0 -22.3994 -18.2002 -40.5996 -40.5996 -40.5996h-366.801c-22.3994 0 -40.5996 18.2002 -40.5996 40.5996v366.801c0 22.3994 18.2002 40.5996 40.5996 40.5996h366.801zM176.1 302.4\nc-0.599609 35.0996 -53.5996 34.7998 -53.6992 -0.400391c0 -15 12.1992 -27 27.0996 -27c4.2002 0.0996094 27 4 26.5996 27.4004zM332.8 71c23.7998 0 42.7002 15.2998 53.2002 52l-17.9004 6.7002c-14.2998 -39.5 -31.7998 -32.4004 -31.7998 -16.9004\nc0.299805 8.10059 0.700195 7.7002 14.9004 58.7998c26.0996 85.8008 -61.2998 113.5 -101.8 38l8.89941 40.5h-68.7998l-9.7002 -35.5996h32.2998l-19.7998 -79.4004c-16.5 -36.6992 -57.3994 -44.0996 -57.3994 -23.1992c0.299805 11.2998 -0.700195 4.5 32.8994 138.199\nh-76.3994l-9.7002 -35.5996h31.7998c-22.0996 -90.0996 -22.9004 -89.7998 -23 -104.1c0 -48.7002 63.0996 -56.1006 94.5996 -4.30078l-8.09961 -32.5h45.0996l25.8008 103.301c14.6992 59.6992 74 47.0996 59.8994 0.699219c-9.09961 -32.5996 -40.5996 -106.6 25 -106.6z\n\" />\n    <glyph glyph-name=\"jira\" unicode=\"&#xf7b1;\" horiz-adv-x=\"496\" \nd=\"M490 206.3c8 -7.89941 8 -20.7002 0 -28.5996c-225.8 -225 137.9 136.3 -241.5 -241.7c-180.7 180.1 -109.7 109.3 -242.5 241.6c-7.90039 8 -7.90039 20.8008 0 28.7002c0 0 77 76.7998 242.5 241.7c72.0996 -71.7998 168.6 -169 241.5 -241.7zM248.5 116.3l76 75.7002\nl-76 75.7002l-76 -75.7002z\" />\n    <glyph glyph-name=\"mendeley\" unicode=\"&#xf7b3;\" horiz-adv-x=\"640\" \nd=\"M624.6 122.8c23.1006 -22.7002 17.8008 -73.5 0 -88.2998c-36.1992 -38.9004 -100 -18.2002 -104.899 35.2002c-1 11.7002 1.09961 23 5.7002 33c47.2998 103.7 -185.9 106.1 -146.5 8.2002c0.0996094 -0.100586 0.199219 -0.200195 0.299805 -0.400391\nc26.5996 -42.5996 -6.7002 -97.2998 -58.7998 -95.2002c-52 -2.2002 -85.6006 52.4004 -58.8008 95.2002c0.100586 0.200195 0.200195 0.299805 0.300781 0.400391c39.3994 97.8994 -193.801 95.5 -146.5 -8.2002c20.3994 -44.9004 -14.1006 -93.7002 -61.2002 -87.7998\nc-61.9004 7.7998 -62.5 82.8994 -42.6006 102.6c16 16 31.8008 24.7998 53 22.5c43.3008 1 49.7002 34.9004 37.5 98.7998c-22.6992 57.5 14.5 131.601 87.4004 130.8c76.9004 -0.699219 82.7998 -82 130.9 -82c49.1992 0 53.5 81.3008 130.899 82\nc72.5 0.700195 110.2 -73.2998 87.4004 -130.8c-12.2002 -63.8994 -5.7998 -97.7998 37.5 -98.7998c18.7002 2 36.0996 -4.7998 48.3994 -17.2002zM320.7 141.9c43.5996 0 62.7998 37.7998 62.7998 62.7998c0 34.7002 -28.0996 62.7998 -62.7998 62.7998h-0.600586\nc-34.5996 0 -62.7998 -28.0996 -62.7998 -62.7998c0 -25.2998 19.4004 -62.7998 62.7998 -62.7998h0.600586z\" />\n    <glyph glyph-name=\"raspberry-pi\" unicode=\"&#xf7bb;\" horiz-adv-x=\"407\" \nd=\"M372 215.5c28.7002 -17.2002 54.5996 -72.5996 14 -117.7c-2.59961 -14.0996 -7.09961 -24.2002 -11 -35.3994c-5.90039 -45.2002 -44.4004 -66.3008 -54.5996 -68.8008c-14.9004 -11.1992 -30.7002 -21.7998 -52.2002 -29.1992\nc-20.2002 -20.6006 -42.1006 -28.4004 -64.2002 -28.4004h-1c-22 0 -44 7.7998 -64.2998 28.4004c-21.4004 7.39941 -37.2998 18 -52.2002 29.1992c-10.0996 2.5 -48.7002 23.6006 -54.5996 68.8008c-3.90039 11.1992 -8.40039 21.2998 -11 35.3994\nc-40.5 45 -14.6006 100.5 14.1992 117.7l3.7002 6.5c-0.0996094 46.4004 21.4004 65.2998 46.5 79.7002c-7.59961 2 -15.3994 3.7002 -17.5996 13.2002c-13.1006 3.39941 -15.7998 9.39941 -17.1006 15.7998c-3.39941 2.2998 -14.7998 8.7002 -13.5996 19.7002\nc-6.2998 4.39941 -9.90039 10.0996 -8.09961 18.0996c-6.90039 7.5 -8.7002 13.7002 -5.80078 19.4004c-8.2998 10.1992 -4.59961 15.5 -1.09961 20.8994c-6.2002 11.2002 -0.799805 23.2002 16.5 21.2002c6.90039 10.0996 21.9004 7.7998 24.2002 7.7998\nc2.5 3.2998 6 6 16.5 4.7002c6.7998 6.09961 14.3994 5.09961 22.2998 2.09961c3.2002 2.5 6.09961 3.40039 8.7002 3.5c5 0.100586 9.2998 -2.89941 13.8994 -4.2998c11.3008 3.60059 13.8008 -1.39941 19.4004 -3.39941c12.2998 2.59961 16.0996 -3 22 -8.90039\nl6.90039 0.0996094c18.5996 -10.7998 27.7998 -32.7998 31.0996 -44.0996c3.2998 11.2998 12.5 33.2998 31.0996 44.0996l6.90039 -0.0996094c5.90039 5.90039 9.7002 11.5 22 8.90039c5.5 2.09961 8.09961 7 19.4004 3.39941\nc7.09961 2.2002 13.2998 8.10059 22.5996 0.799805c7.90039 2.90039 15.5 4 22.2998 -2.09961c10.5 1.2998 13.9004 -1.5 16.5 -4.7002c2.2998 0 17.2998 2.2998 24.2002 -7.7998c17.2998 2 22.7998 -10 16.5996 -21.2002c3.5 -5.2998 7.2002 -10.5996 -1.09961 -20.8994\nc2.90039 -5.7002 1.09961 -11.9004 -5.7998 -19.4004c1.89941 -8 -1.7002 -13.7002 -8.10059 -18.0996c1.2002 -11 -10.1992 -17.4004 -13.5996 -19.7002c-1.2998 -6.40039 -4 -12.5 -17.0996 -15.7998c-2.2002 -9.60059 -10 -11.2002 -17.6006 -13.2002\nc25.1006 -14.4004 46.6006 -33.2998 46.5 -79.7002zM349.8 223.5c1.5 48.7002 -36.3994 75.4004 -82.0996 67.9004c-16.7998 -2.80078 80.5996 -86.6006 82.0996 -67.9004zM306.8 130.4c24.5 15.7998 28.9004 51.5996 9.90039 80\nc-19 28.3994 -54.2998 38.5996 -78.7998 22.7998s-28.9004 -51.6006 -9.90039 -80c19 -28.4004 54.2998 -38.6006 78.7998 -22.7998zM238.9 418.7c-16.6006 -15.9004 -40.1006 -55.9004 -5.80078 -71.7998c29 23.5 63.6006 40.6992 102 53.5\nc-49.2998 -25.1006 -78 -45.3008 -93.6992 -62.6006c8.09961 -31.7002 50 -33.2002 65.3994 -32.2998c-3.09961 1.40039 -5.7998 3.09961 -6.7002 5.7998c3.80078 2.7002 17.5 0.299805 27 5.60059c-3.69922 0.699219 -5.39941 1.39941 -7.09961 4.09961\nc9 2.90039 18.7002 5.2998 24.4004 10c-3.10059 0 -6 -0.599609 -10 2.09961c8.09961 4.30078 16.6992 7.7002 23.3994 14.2002c-4.2002 0.100586 -8.7002 0.100586 -10 1.60059c7.40039 4.5 13.6006 9.5 18.7998 15c-5.7998 -0.700195 -8.2998 -0.100586 -9.69922 0.899414\nc5.59961 5.60059 12.5996 10.4004 16 17.2998c-4.40039 -1.5 -8.30078 -2.09961 -11.2002 0.100586c1.89941 4.2998 10 6.7002 14.7002 16.5996c-4.60059 -0.399414 -9.40039 -1 -10.4004 0c2.09961 8.5 5.7002 13.2002 9.2998 18.2002\nc-9.7998 0.200195 -24.5996 0 -23.8994 0.799805l6 6.10059c-9.5 2.5 -19.3008 -0.400391 -26.4004 -2.60059c-3.2002 2.5 0 5.60059 3.90039 8.7998c-8.10059 -1 -15.5 -2.89941 -22.1006 -5.39941c-3.59961 3.09961 2.2998 6.2998 5.10059 9.39941\nc-12.5 -2.2998 -17.8008 -5.59961 -23.1006 -8.89941c-3.7998 3.59961 -0.200195 6.7002 2.40039 9.7998c-9.40039 -3.5 -14.2998 -7.90039 -19.4004 -12.2998c-1.7998 2.2998 -4.39941 4 -1.2002 9.59961c-6.69922 -3.7998 -11.7998 -8.2998 -15.5 -13.2998\nc-4.19922 2.59961 -2.5 6.09961 -2.5 9.40039c-7 -5.60059 -11.3994 -11.5 -16.7998 -17.3008c-1.09961 0.800781 -2.09961 3.40039 -2.89941 7.60059zM204.5 304.1c-27.2002 0.700195 -53.4004 -19.8994 -53.4004 -31.7998\nc-0.0996094 -14.5996 21.5 -29.3994 53.6006 -29.7998c32.7998 -0.200195 53.7002 11.9004 53.7998 26.9004c0.0996094 16.8994 -29.7998 35 -54 34.6992zM81.5 316.9c9.59961 -5.2002 23.2002 -2.80078 27.2002 -5.60059\nc-0.900391 -2.59961 -3.60059 -4.39941 -6.7002 -5.7998c15.4004 -0.900391 57.4004 0.5 65.4004 32.2998c-15.7002 17.2998 -44.4004 37.6006 -93.7002 62.6006c38.3994 -12.8008 73 -30 102 -53.5c34.0996 15.8994 10.5996 55.8994 -6 71.7998\nc-0.900391 -4.2002 -1.7998 -6.7998 -2.90039 -7.60059c-5.39941 5.80078 -9.7998 11.7002 -16.7998 17.3008c0 -3.2002 1.59961 -6.80078 -2.5 -9.40039c-3.7002 5 -8.7998 9.5 -15.5 13.2998c3.2002 -5.59961 0.5 -7.2998 -1.2002 -9.59961\nc-5.09961 4.39941 -10 8.89941 -19.3994 12.2998c2.59961 -3.09961 6.19922 -6.2002 2.39941 -9.7998c-5.2998 3.2998 -10.5996 6.59961 -23.0996 8.89941c2.7998 -3.09961 8.59961 -6.2998 5.09961 -9.39941c-6.7002 2.5 -14 4.2998 -22.0996 5.39941\nc3.7998 -3.19922 7.09961 -6.2998 3.89941 -8.7998c-7.09961 2.2002 -16.8994 5.10059 -26.3994 2.60059l6 -6.10059c0.700195 -0.799805 -14.1006 -0.700195 -23.9004 -0.799805c3.5 -4.90039 7.2002 -9.7002 9.2998 -18.2002c-1 -1 -5.7998 -0.399414 -10.3994 0\nc4.7002 -9.89941 12.7998 -12.3994 14.7002 -16.5996c-2.90039 -2.10059 -6.90039 -1.60059 -11.2002 -0.100586c3.2998 -6.89941 10.3994 -11.6992 16 -17.2998c-1.40039 -1 -3.90039 -1.59961 -9.7002 -0.899414c5.2002 -5.5 11.4004 -10.5 18.7998 -15\nc-1.2998 -1.60059 -5.7998 -1.5 -10 -1.60059c6.7002 -6.5 15.2998 -9.89941 23.4004 -14.2002c-4 -2.7998 -6.90039 -2.09961 -10 -2.09961c5.7002 -4.7002 15.3994 -7.2002 24.3994 -10c-1.69922 -2.59961 -3.39941 -3.40039 -7.09961 -4.09961zM141.6 292.8\nc-45.5996 7.60059 -83.5996 -19.2002 -82.0996 -67.8994c1.5 -18.6006 98.9004 65.0996 82.0996 67.8994zM38.2002 106c21.5996 -9.5 39.0996 105.3 12.5996 98.2998c-43.8994 -24.5996 -36.2998 -79.5 -12.5996 -98.2998zM129.2 7.7998\nc14.0996 10.4004 6.39941 45.7002 -10.5 65.7002c-19.4004 22.2002 -44.6006 35.4004 -60.9004 25.5996c-10.8994 -8.19922 -12.8994 -36 2.60059 -63.3994c23 -32.6006 55.5 -35.7998 68.7998 -27.9004zM102.8 127.5c24.4004 -15.7998 59.7002 -5.59961 78.7998 22.7998\nc19 28.4004 14.6006 64.2002 -9.89941 80s-59.7998 5.60059 -78.7998 -22.7998s-14.6006 -64.2002 9.89941 -80zM205 -48c28.4004 -0.5 57.7002 24.4004 57.2002 35.4004c-0.100586 11.3994 -32 19.8994 -55.7002 18.8994c-23.5 0.600586 -59.7002 -9.2998 -59.2998 -22\nc-0.400391 -8.59961 28.3994 -33.5 57.7998 -32.2998zM263.9 76.9004v0.599609c-0.200195 29.5996 -26.8008 53.5996 -59.4004 53.4004c-32.5996 -0.200195 -59 -24.3008 -58.7998 -54v-0.600586c0.200195 -29.5996 26.7998 -53.5996 59.3994 -53.3994\nc32.6006 0.199219 59 24.2998 58.8008 54zM346.1 34.2002c18.4004 23.2002 12.2002 62 1.7002 72.2998c-15.5996 11.9004 -38 -3.2998 -58.8994 -26.5996c-18.3008 -21.1006 -28.4004 -59.6006 -15.1006 -72c12.7002 -9.60059 47 -8.30078 72.2998 26.2998zM369 107.4\nc23.7002 18.6992 31.2998 73.5996 -12.5996 98.2998c-26.4004 7 -8.90039 -107.7 12.5996 -98.2998z\" />\n    <glyph glyph-name=\"redhat\" unicode=\"&#xf7bc;\" horiz-adv-x=\"512\" \nd=\"M341.52 162.59v-0.149414c33.6504 0 82.3408 6.93945 82.3408 47c0.219727 6.73926 0.859375 1.81934 -20.8799 96.2393c-4.62012 19.1504 -8.68066 27.8398 -42.3105 44.6504c-26.0898 13.3398 -82.9199 35.3701 -99.7295 35.3701\nc-15.6602 0 -20.2002 -20.1699 -38.8701 -20.1699c-18 0 -31.3105 15.0596 -48.1201 15.0596c-16.1406 0 -26.6602 -11 -34.7803 -33.6201c-27.5 -77.5498 -26.2803 -74.2695 -26.1201 -78.2695c0 -24.7998 97.6406 -106.11 228.47 -106.11zM429.07 193.19\nl-0.0703125 -0.0302734c4.65039 -22 4.65039 -24.3506 4.65039 -27.25c0 -37.6602 -42.3301 -58.5605 -98 -58.5605c-125.74 -0.0800781 -235.91 73.6504 -235.91 122.33v0.0771484c0 5.65332 1.81836 14.4531 4.05957 19.6436\nc-45.2402 -2.26074 -103.8 -10.3301 -103.8 -62.0303c0 -84.6699 200.63 -189 359.49 -189c121.79 0 152.51 55.0801 152.51 98.5801c0 34.21 -29.5898 73.0498 -82.9297 96.2402z\" />\n    <glyph glyph-name=\"sketch\" unicode=\"&#xf7c6;\" horiz-adv-x=\"512\" \nd=\"M27.5 285.8l78.9004 105.8l-6.90039 -130.699h-90.5zM396.3 402.3l7.10059 -133.5l-135.7 147.2zM112.2 229.7l122.6 -239.7l-224.899 261.7h91.0996zM114.2 260.9l142.1 154.1l60.4004 -65.5996l81.5 -88.5h-284zM411.5 251.8v-0.0996094h90.9004l-224.801 -261.7z\nM415.4 379l87.8994 -118.1h-90.2998l-6.09961 113.399l-0.900391 17.2998zM113.5 354.5l2.59961 47.7998l128.601 13.7002l-135.8 -147.1zM401.2 251.8l-144.9 -283.8l-102.7 200.9l-42.3994 82.8994h290z\" />\n    <glyph glyph-name=\"sourcetree\" unicode=\"&#xf7d3;\" \nd=\"M427.2 245c-0.0947266 -81.5225 -63.1279 -168.031 -140.7 -193.1v-101.601c0 -7.89355 -6.40625 -14.2998 -14.2998 -14.2998v0h-96.4004c-7.89355 0 -14.2998 6.40625 -14.2998 14.2998v101.7c-77.5566 25.0537 -140.5 111.535 -140.5 193.037v0.363281\nc0.200195 112 91.0996 202.8 203.2 202.6c112.1 0 203 -90.9004 203 -203zM155.6 245c0 -91 137.2 -89.9004 137.301 0c0 90.7998 -137.301 90.7998 -137.301 0z\" />\n    <glyph glyph-name=\"suse\" unicode=\"&#xf7d6;\" horiz-adv-x=\"640\" \nd=\"M471.08 345.34c0 1 1.01953 0.759766 0.919922 0.660156c4.2002 -0.599609 92.2002 -13.7002 129.2 -35.2998c12.0996 -6.90039 20.7002 -21.5 34.5 -69.6006c0.700195 -2.7998 -2.7998 -5.09961 -3.60059 -5.69922\nc-26.8994 -18.8008 -56.7998 -36.6006 -145.199 21.6992c11.0996 -26.6992 10.6992 -25.0996 11 -25.5c5.39941 -2.7998 56.2998 -28.6992 81.5996 -28.1992c20.4004 0.399414 42.2002 10.3994 50.9004 15.5996c0 0 4.5 2.7002 3.19922 -2.40039\nc-0.5 -1.89941 -3.2998 -14.5996 -7 -17.6992c-1 -1 -36.5996 -28.4004 -103.1 -28c-42.7002 1 -76.7998 16.3994 -82.4004 -17.4004c-2.7998 -17.0996 6.10059 -37.5 18.9004 -55.7998h-48.5996c-15.9004 28.3994 -23.1006 68.2998 -79.8008 68.2998\nc-51.5996 0 -48.3994 -50.7002 -42.6992 -68.2998h-45.9004c-18.7998 68.7998 -69.2002 98.5996 -102.4 104.3c-74.2998 12.7998 -113 -49.2002 -87 -98.4004c23.1006 -43.5996 81.4004 -44.0996 99.7002 -20.3994c19.2002 25 3.7998 62.8994 -28.5 65.7002\nc-12.2998 1.09961 -25.2998 -4.60059 -25.5 -16.9004v-0.0595703c0 -10.9004 10 -13.8008 12 -14c7.2998 0.399414 8.90039 1.89941 11.7998 2.39941c5.2002 0.900391 16.8008 -1.7998 16.8008 -13.8994c0 -8.40039 -6.80078 -13.1006 -13.3008 -14.9004\nc-4.2373 -1.46777 -11.3154 -2.67773 -15.7998 -2.7002c-17.2002 0 -41.2002 14.7998 -41.5 42.6006c-0.200195 15.6992 7.7002 30 21.6006 39.1992c15.8994 10.5 43.5996 14.1006 69.1992 -1.59961c31.5 -19.2998 39.7002 -57.0996 31.5 -82.9004\nc-11.8994 -37.2998 -45.5996 -57.1992 -90 -53.2998c-31.5 2.7998 -60.6992 19.4004 -78.0996 44.4004c-6.32715 9.0332 -13.7197 25.0264 -16.5 35.7002c-7.12012 28.0596 0 58.0596 5.48047 71.3994c25.6992 63.6006 80.1992 97.2998 99.5996 109.7\nc100.2 61.5996 171.1 59.0996 223 57.2998c61.2998 -2.2002 126.6 -23.2998 135.7 -26.2998c0 2 0.299805 20.2998 0.299805 20.2998zM531.48 272.54c-1.10059 -33.5 39.0996 -51.5996 63.2998 -28.9004c24.3994 22.9004 9 64 -24.4004 65.2002\nc-0.380859 0.0136719 -0.999023 0.0253906 -1.37988 0.0253906c-20.0615 0 -36.8711 -16.2734 -37.5195 -36.3252zM570.08 297.84c14.0312 -0.413086 25.4199 -12.1406 25.4199 -26.1787c0 -0.282227 -0.00878906 -0.739258 -0.0195312 -1.02148\nc-0.50293 -13.9795 -12.2646 -25.3262 -26.2539 -25.3262c-14.501 0 -26.2695 11.7695 -26.2695 26.2705s11.7686 26.2695 26.2695 26.2695c0.236328 0 0.618164 -0.00585938 0.853516 -0.0136719zM574.38 269.04c15.4004 0 15.4004 15.5996 0 15.5996\nc-15.3994 0 -15.3994 -15.5996 0 -15.5996z\" />\n    <glyph glyph-name=\"ubuntu\" unicode=\"&#xf7df;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM300.7 347c-8.7998 -15.2002 -3.60059 -34.7002 11.7002 -43.5996c15.1992 -8.80078 34.6992 -3.5 43.5 11.6992c8.7998 15.3008 3.59961 34.8008 -11.7002 43.6006\nc-15.2002 8.7998 -34.7002 3.5 -43.5 -11.7002zM87.4004 160.1c17.5996 0 31.8994 14.3008 31.8994 31.9004s-14.2998 31.9004 -31.8994 31.9004c-17.6006 0 -31.9004 -14.3008 -31.9004 -31.9004s14.2998 -31.9004 31.9004 -31.9004zM115.5 157\nc8.7002 -32.7002 29.0996 -60.7002 56.5 -79l23.7002 39.5996c-51.5 36.3008 -51.5 112.5 0 148.801l-23.7002 39.5996c-27.4004 -18.4004 -47.9004 -46.2998 -56.5 -79.0996c22.4004 -18 22.2998 -52 0 -69.9004zM344.2 25.2998\nc15.2998 8.7998 20.5 28.2998 11.7002 43.6006c-8.80078 15.2998 -28.3008 20.5 -43.5 11.6992c-15.3008 -8.7998 -20.5 -28.2998 -11.7002 -43.5996s28.2002 -20.5 43.5 -11.7002zM344.5 94.7998c23 22.9004 38 53.9004 40.2998 88.4004l-46.0996 0.700195\nc-5.5 -62.7002 -71.9004 -100.9 -128.9 -74.4004l-22.5 -40.2998c47.7998 -23.7002 91.5 -10.7998 96.7002 -9.40039c4.40039 28.4004 33.7998 45.2998 60.5 35zM338.6 200.1l46 0.600586c-2.19922 34.5996 -17.0996 65.5996 -40.1992 88.5\nc-26.7002 -10.2998 -56.1006 6.7002 -60.5 35c-5.2002 1.39941 -48.8008 14.2998 -96.7002 -9.40039l22.5 -40.2998c57.5996 26.7998 123.5 -12.4004 128.899 -74.4004z\" />\n    <glyph glyph-name=\"ups\" unicode=\"&#xf7e0;\" horiz-adv-x=\"384\" \nd=\"M103.2 145v123h32.5996v-141.6c-17.7002 -12.1006 -97.8994 -35.9004 -97.8994 39v102.6h32.6992v-104c0 -32.0996 27.4004 -22.5996 32.6006 -19zM4 373.18c93.5996 49.6006 259.1 61.6006 375.4 0v-220.899c0 -103.9 -75.3008 -135.2 -187.7 -184.101\nc-112.8 48.9004 -187.7 80.4004 -187.7 184.101v220.899zM362.1 152.28v216.2c-109.3 10.1992 -238.6 4 -340.899 -89.8008v-126.399c0 -86.6006 53 -113.5 170.5 -165.3c117.2 51.6992 170.399 78.6992 170.399 165.3zM152.5 259.68\nc23.7002 15.3203 104.4 31.8008 104.4 -65.5996c0 -75.9004 -47.3008 -85.7998 -71.7002 -78.5v-68.7002h-32.7002v212.8zM185.2 142.38c2 -0.799805 38.3994 -16.8994 38.3994 51c0 62 -30 53.5 -38.3994 49.2998v-100.3zM264.3 228.78\nc-0.200195 41.0996 51.2002 53.8994 79.7002 31.8994v-28.3994c-17.9004 18.2998 -47.9004 18.0996 -48.5 -2.2002c-0.700195 -26.5996 55.0996 -21.7002 53.4004 -73.2002c-1.30078 -41.5996 -47 -55 -83.2002 -33.5v30.1006\nc20.3994 -18.1006 51.3994 -18.6006 50.7998 4.89941c-0.599609 27.9004 -52.0996 23.1006 -52.2002 70.4004z\" />\n    <glyph glyph-name=\"usps\" unicode=\"&#xf7e1;\" horiz-adv-x=\"576\" \nd=\"M460.3 206.3c-1.39941 -2.2002 -4.2998 -4.39941 -3.7998 0.100586c2.90039 11.5996 13.9004 30.5 4.40039 32c-17.8008 3.09961 -88.1006 -4.5 -88.1006 0c0 2.39941 26.7002 3.09961 37.9004 8.69922c9.39941 9.40039 10.7998 8 10.8994 8h27\nc26.9004 0 37.5 -7.5 11.7002 -48.7998zM348.2 183.7c-62.2998 -21.2002 -124.8 -54.2002 -321.2 -151.5l52.4004 245.5c185 0 335.199 5.59961 337.899 -22.6006h-196.6l30.7002 -93.2998c35 16.7998 120.899 51.7002 172.6 53.9004\nc21.7998 0.799805 30.5996 -2.90039 26.2002 -5.7998c-4.7002 -2.30078 -38 -4.90039 -102 -26.2002zM94.7002 352h454.3l-67.7002 -319.7h-423.1s402 157.3 406.399 160.2c0 0 35.7002 48 14.6006 67.7002c-6.5 6.59961 -16 6.59961 -52.4004 6.59961\nc-2.09961 19.5 -78.7998 31.5 -332.1 85.2002z\" />\n    <glyph glyph-name=\"yarn\" unicode=\"&#xf7e3;\" horiz-adv-x=\"496\" \nd=\"M393.9 102.8c-39 -9.2998 -48.4004 -32.0996 -104 -47.3994c0 0 -2.7002 -4 -10.4004 -5.80078c-13.4004 -3.2998 -63.9004 -6 -68.5 -6.09961c-12.4004 -0.0996094 -19.9004 3.2002 -22 8.2002c-6.40039 15.2998 9.2002 22 9.2002 22\nc-8.10059 5 -9 9.89941 -9.7998 8.09961c-2.40039 -5.7998 -3.60059 -20.0996 -10.1006 -26.5c-8.7998 -8.89941 -25.5 -5.89941 -35.2998 -0.799805c-10.7998 5.7002 0.799805 19.2002 0.799805 19.2002s-5.7998 -3.40039 -10.5 3.59961\nc-6 9.2998 -17.0996 37.2998 11.5 62c-1.2998 10.1006 -4.59961 53.7002 40.6006 85.6006c0 0 -20.6006 22.7998 -12.9004 43.2998c5 13.3994 7 13.2998 8.59961 13.8994c5.7002 2.2002 11.3008 4.60059 15.4004 9.10059c20.5996 22.2002 46.7998 18 46.7998 18\ns12.4004 37.7998 23.9004 30.3994c3.5 -2.2998 16.2998 -30.5996 16.2998 -30.5996s13.5996 7.90039 15.0996 5c8.2002 -16 9.2002 -46.5 5.60059 -65.0996c-6.10059 -30.6006 -21.4004 -47.1006 -27.6006 -57.5c-1.39941 -2.40039 16.5 -10 27.8008 -41.3008\nc10.3994 -28.5996 1.09961 -52.6992 2.7998 -55.2998c0.799805 -1.39941 13.7002 -0.799805 36.3994 13.2002c12.8008 7.90039 28.1006 16.9004 45.4004 17c16.7002 0.5 17.5996 -19.2002 4.90039 -22.2002zM496 192c0 -136.9 -111.1 -248 -248 -248s-248 111.1 -248 248\ns111.1 248 248 248s248 -111.1 248 -248zM416.7 116.8c-1.7002 13.6006 -13.2002 23 -28 22.7998c-22 -0.299805 -40.5 -11.6992 -52.7998 -19.1992c-4.80078 -3 -8.90039 -5.2002 -12.4004 -6.80078c3.09961 44.5 -22.5 73.1006 -28.7002 79.4004\nc7.7998 11.2998 18.4004 27.7998 23.4004 53.2002c4.2998 21.7002 3 55.5 -6.90039 74.5c-1.59961 3.09961 -7.39941 11.2002 -21 7.39941c-9.7002 20 -13 22.1006 -15.5996 23.8008c-1.10059 0.699219 -23.6006 16.3994 -41.4004 -28\nc-12.2002 -0.900391 -31.2998 -5.30078 -47.5 -22.8008c-2 -2.19922 -5.89941 -3.7998 -10.0996 -5.39941h0.0996094c-8.39941 -3 -12.2998 -9.90039 -16.8994 -22.2998c-6.5 -17.4004 0.199219 -34.6006 6.7998 -45.7002c-17.7998 -15.9004 -37 -39.7998 -35.7002 -82.5\nc-34 -36 -11.7998 -73 -5.59961 -79.6006c-1.60059 -11.0996 3.69922 -19.3994 12 -23.7998c12.5996 -6.7002 30.2998 -9.59961 43.8994 -2.7998c4.90039 -5.2002 13.7998 -10.0996 30 -10.0996c6.7998 0 58 2.89941 72.6006 6.5c6.7998 1.59961 11.5 4.5 14.5996 7.09961\nc9.7998 3.09961 36.7998 12.2998 62.2002 28.7002c18 11.7002 24.2002 14.2002 37.5996 17.3994c12.9004 3.2002 21 15.1006 19.4004 28.2002z\" />\n    <glyph glyph-name=\"airbnb\" unicode=\"&#xf834;\" \nd=\"M224 74.8799h0.0595703c24.71 31.1797 39.5508 58.9297 45 83.1797c22.5508 88 -112.609 88 -90.0596 0c4.91992 -23.75 19.7598 -51.5098 45 -83.1797zM362.15 1.65039c35.6396 15.3496 50.1797 53.5693 37.0098 86.6396\nc-25.4902 61.6104 -78.8398 168.47 -114.84 239.09c-16.9707 33.9297 -28.0303 59.8701 -60.3701 59.8701c-33.8203 0 -43.6299 -27.3301 -59.3799 -57.4004c-4.15039 -10.3799 -100.771 -202.399 -115.87 -241.56c-17.8105 -50.0303 21.2998 -98.5205 71.2998 -91.0898\nc24.5996 2.22949 52.6201 18.8701 85.1504 54.9199c-29.2002 37.1104 -47.5 70.3096 -54.4307 99.5c-11.8799 53.9902 18.3604 100.5 73.2803 100.5c64.96 0 122.75 -69.9297 18.8496 -200c35.6309 -39.5898 77.2402 -68.7803 119.301 -50.4697zM409.15 137.77\nc0 -0.679688 16.8496 -35.6895 16.8301 -39.5791c25.2393 -69.3301 -26.7207 -130.24 -89.6104 -130.19c-11.1104 0 -53.6904 -1.37988 -112.37 62.4004c-51.7598 -56.3408 -90.6602 -62.4004 -112.37 -62.4004c-62.8896 0 -114.85 60.8604 -89.6299 130.19\nc0.889648 2.61914 11.1797 32.71 117.34 245.02c19.79 41.1201 39.1406 72.79 84.6602 72.79c49.1299 0 56.2695 -3.92969 185.15 -278.23z\" />\n    <glyph glyph-name=\"battle-net\" unicode=\"&#xf835;\" horiz-adv-x=\"512\" \nd=\"M448.61 222.38c60.75 -36.25 71.9893 -73.8096 57.3193 -93.6895c-4.70996 -6.88086 -25.1797 -36.2402 -148 -31.6406c-21.8193 -30.3994 -45.25 -53.2695 -67.4697 -69.2695c28.54 -53.7803 54.2998 -85.0303 62.54 -91.7803c0 0 -3.44043 0.160156 -8.58008 3.37012\nc-2.69434 1.61133 -6.61426 4.78809 -8.75 7.08984c-15.6299 16.1797 -35.5195 41.9404 -55.7002 74.1201c-43.9502 -28.1104 -81.1299 -29.0996 -88.4395 -9.4502c-4.83984 10.8301 1.5293 26.5 9.05957 39.3398c-31.3203 -17.5098 -61.7002 -26.8496 -86.7002 -21.1396\nc-6.79004 1.54004 -17.6299 5.50977 -23.1992 18.2598c-4.52051 9.53027 -6.02051 24.2598 -0.150391 47.1406c9.07031 35.3398 37.5801 82.2998 47.3096 97.6992c3.75 -8.62988 -20.7793 40.1904 -26 93.1904c-89.1592 0 -110.56 -8.83984 -111.56 -9.21973\nc1.54004 2.44922 7.86035 7.26953 17.7598 9.71973c22 5.47949 54.6406 9.84961 93 11.2295c-2.38965 52.0703 15.3398 84.7705 36 81.29h0.180664c11.3291 -1.2998 21.2598 -13.5801 28.5 -25.9297c0.669922 35.2002 7.7998 65.54 25 84.0703\nc4.72949 5.14941 13.5693 12.5498 27.3994 11h0.0498047c10.5205 -0.850586 24 -6.91992 40.8398 -23.4707c25.6006 -25.0693 51.54 -71.9893 60.4805 -88.9297c37.25 -3.7002 68.7695 -12.5801 93.7695 -23.7998c32.3506 51.5898 46.4805 89.5303 48.2002 100.05\nc0.640625 -1.25 2.93066 -8.41992 -0.450195 -20.25c-6.22949 -21.6201 -18.5791 -51.7197 -36.3398 -85.2998c45.79 -23.7305 65.3203 -55.0098 52.8506 -71.3301c-3.35059 -4.94043 -12.0498 -12.5498 -38.9199 -12.3701zM370.76 116.16\nc70.4102 4.37988 79.6504 20.5703 78.5098 33.5c-1.87988 21.25 -21.1992 41.2598 -49.0596 58.8301c0.889648 -24.5605 -5.63965 -54.6201 -29.4502 -92.3301zM216.9 60.3096c-19.04 -30.46 9.19922 -39.5596 49.7998 -17.6992\nc-7 12.0898 -13.9199 24.8594 -20.6006 38.1895c-9.66992 -7.37012 -19.4395 -14.2598 -29.1992 -20.4902zM431.9 231.66c36.2598 -1.23047 29.4199 27.8496 -9.64062 51.9502c-5.9707 -10.373 -16.1582 -26.9043 -22.7402 -36.9004\nc11.2207 -4.70996 22.0908 -9.70996 32.3809 -15.0498zM279.18 50c28.3799 18.2002 60.1689 48.1201 84.7695 85.4297c18.46 27.96 26.1494 56.0205 25.4102 79.5703c-30.5801 17.3203 -89.3604 42.7197 -167.23 57.21c0.350586 18.4805 2.08984 19.8799 2.16016 20.3301\nc10.9229 -1.33496 28.5693 -4.04492 39.3896 -6.0498c32.5664 -6.08984 84.2383 -20.2959 115.34 -31.71c-15.6191 33.1494 -41.4092 47.2197 -41.5195 47.2197c1.59961 0.160156 28.1299 -6 48.8604 -43.7197c8.42676 11.2061 16.2031 22.0293 23.3301 32.4697\nc-29.96 15.46 -71.75 28.04 -116.32 30.71c-33.4502 1.99023 -61.6299 -5.38965 -81.6299 -17.8096c0.240234 -35.2607 7.66992 -98.96 34 -173.431c-16.8301 -9.12988 -17.7402 -7.87012 -18.6699 -8.25c-17.1924 40.7627 -37.2041 109.235 -44.6699 152.84\nc-21.0908 -30.3994 -20.1406 -59.5 -20.1406 -59.5693c-0.919922 1.22949 -8.81934 27.4297 13.4707 64.2295c-13.5801 1.70996 -26.5508 2.9707 -38.8506 3.87988c1.57031 -33.6797 11.5703 -76.1494 31.5703 -116.069c14.8701 -29.71 35.1201 -50.3105 55.71 -61.4902\nc30.4102 17.9199 81.0498 55.6504 132.75 115.92c14.9697 -9 16.1494 -11.71 16.5098 -12c-7.91309 -10.5332 -16.2227 -20.9033 -24.9287 -31.1104c-21.542 -25.1426 -59.6494 -62.7744 -85.0605 -84c37.5303 -3.38965 62.5303 12.1807 62.5303 12.25\nc-0.860352 -1.67969 -20.0303 -21.6797 -63.2803 -20.4092c5.5 -12.9404 10.9902 -25.0908 16.5 -36.4404zM306.579 337c-1.58008 2.4502 -39.5801 58.8496 -56.4805 54.6104c-16.8994 1.09961 -36.21 -22.9805 -38.21 -75.2803\nc21.1104 13.2402 50.1299 22.3301 94.6904 20.6699zM175.929 333.9c-3.7998 6.68945 -8.66992 12.4795 -14.4297 13.5693h-0.0898438c-24.79 1.41016 -24.75 -52.8301 -24.6699 -49.5898c13.6602 -0.00976562 27.8496 -0.410156 42.3994 -1.25977\nc-1.62012 12.6602 -2.72949 25.1699 -3.20996 37.2803zM147.869 171.9c-30.7998 -61.5098 -19.8701 -76.6104 -19.6699 -76.8203c7.38965 -15.4902 38.1299 -20.25 84.9199 4.50977c-21.9502 11.7402 -44.4902 32.6104 -65.25 72.3105zM357.929 97.0996z\" />\n    <glyph glyph-name=\"bootstrap\" unicode=\"&#xf836;\" \nd=\"M292.3 136.07c0 -42.4102 -39.7197 -41.4307 -43.9199 -41.4307h-80.8896v81.6904h80.8896c42.5605 0 43.9199 -31.9004 43.9199 -40.2598zM242.15 209.2h-74.6602v72.1797h74.6602c34.9297 0 38.4395 -20.3496 38.4395 -35.8701\nc0 -37.3096 -37.7695 -36.3096 -38.4395 -36.3096zM448 341.33v-298.66c-0.120117 -41.0977 -33.5723 -74.5498 -74.6699 -74.6699h-298.66c-41.0977 0.120117 -74.5498 33.5723 -74.6699 74.6699v298.66c0.120117 41.0977 33.5723 74.5498 74.6699 74.6699h298.66\nc41.0977 -0.120117 74.5498 -33.5723 74.6699 -74.6699zM338.05 130.14c0 21.5703 -6.64941 58.29 -49.0498 67.3506v0.729492c22.9102 9.78027 37.3398 28.25 37.3398 55.6406c0 7 2 64.7793 -77.5996 64.7793h-127v-261.33c128.229 0 139.87 -1.67969 163.6 5.70996\nc14.21 4.4209 52.71 17.9805 52.71 67.1201z\" />\n    <glyph glyph-name=\"buffer\" unicode=\"&#xf837;\" \nd=\"M427.84 67.3301l-196.5 -97.8203c-1.93848 -0.832031 -5.22461 -1.50684 -7.33496 -1.50684c-2.10938 0 -5.39551 0.674805 -7.33496 1.50684l-196.51 97.8203c-4 2 -4 5.28027 0 7.29004l47.0596 23.3799c1.94238 0.832031 5.23242 1.50684 7.3457 1.50684\nc2.1123 0 5.40234 -0.674805 7.34473 -1.50684l134.76 -67c1.93848 -0.836914 5.22461 -1.51562 7.33496 -1.51562c2.11133 0 5.39746 0.678711 7.33496 1.51562l134.76 67c1.94043 0.832031 5.22949 1.50781 7.34082 1.50781s5.39941 -0.675781 7.33984 -1.50781\nl47.0596 -23.4297c4.0498 -1.95996 4.0498 -5.24023 0 -7.24023zM427.84 203.86c4.0498 -2.01074 4.0498 -5.29004 0 -7.31055l-196.5 -97.7998c-1.93848 -0.832031 -5.22461 -1.50781 -7.33496 -1.50781c-2.10938 0 -5.39551 0.675781 -7.33496 1.50781l-196.51 97.7998\nc-4 2.02051 -4 5.31055 0 7.31055l47.0596 23.4297c1.94238 0.832031 5.23242 1.50684 7.3457 1.50684c2.1123 0 5.40234 -0.674805 7.34473 -1.50684l134.76 -67.0801c1.93945 -0.828125 5.22559 -1.5 7.33496 -1.5s5.39551 0.671875 7.33496 1.5l134.76 67.0801\nc1.94043 0.832031 5.22949 1.50781 7.34082 1.50781s5.39941 -0.675781 7.33984 -1.50781zM20.1602 317.58c-4.0498 1.86035 -4.0498 4.88965 0 6.74023l196.5 90.2793c1.9502 0.774414 5.23633 1.40332 7.33496 1.40332s5.38477 -0.628906 7.33496 -1.40332\nl196.51 -90.2793c4 -1.85059 4 -4.87988 0 -6.74023l-196.51 -90.29c-1.95215 -0.765625 -5.23828 -1.3877 -7.33496 -1.3877s-5.38281 0.62207 -7.33496 1.3877z\" />\n    <glyph glyph-name=\"chromecast\" unicode=\"&#xf838;\" horiz-adv-x=\"512\" \nd=\"M447.83 384h0.169922c23.5811 0 42.7197 -19.1387 42.7197 -42.7197v-298.561c0 -23.5811 -19.1387 -42.7197 -42.7197 -42.7197v0h-149.36v42.7197h149.19v298.561h-383.83v-63.9199h-42.7197v63.9199c0 23.5811 19.1387 42.7197 42.7197 42.7197h383.83z\nM21.2803 64.4199c35.2783 0 63.9102 -28.6318 63.9102 -63.9102v-0.00976562h-63.9102v63.9199zM21.2803 149.7l0.0292969 -0.339844h0.330078c82.248 -0.105469 149 -66.9424 149 -149.19v-0.169922h-42.7197v0.339844v0.0302734c0 58.8594 -47.7705 106.63 -106.63 106.63\nh-0.00976562v42.7002zM21.2803 234.97v-0.330078c129.46 -0.370117 234.34 -105.18 234.8 -234.64h-42.7197v0.5c-0.0800781 106 -86.0801 191.85 -192.08 191.75v42.7197z\" />\n    <glyph glyph-name=\"evernote\" unicode=\"&#xf839;\" horiz-adv-x=\"384\" \nd=\"M120.82 315.79c1.59961 -22.3096 -17.5508 -21.5898 -21.6104 -21.5898c-68.9297 0 -73.6396 1 -83.5801 -3.33984c-0.55957 -0.220703 -0.740234 0 -0.370117 0.370117l108.53 110.319c0.379883 0.370117 0.599609 0.219727 0.379883 -0.370117\nc-4.34961 -9.98926 -3.34961 -15.0898 -3.34961 -85.3896zM199.82 7.79004c-14.6807 37.0801 13 76.9297 52.5195 76.6201c17.4902 0 22.6006 -23.21 7.9502 -31.4199c-6.19043 -3.2998 -24.9502 -1.74023 -25.1396 -19.2002\nc-0.0507812 -17.0898 19.6699 -25 31.1992 -24.8896h0.0107422c25.1934 0 45.6396 20.4463 45.6396 45.6396v0.00976562v0.0800781c0 11.6299 -7.79004 47.2197 -47.54 55.3398c-7.71973 1.54004 -65 6.35059 -68.3496 50.5205\nc-3.74023 -16.9307 -17.4004 -63.4902 -43.1104 -69.0898c-8.74023 -1.94043 -69.6797 -7.64062 -112.92 36.7695c0 0 -18.5703 15.2305 -28.2305 57.9502c-3.37988 15.75 -9.2793 39.7002 -11.1396 62c0 18 11.1396 30.4502 25.0703 32.2002c81 0 90 -2.32031 101 7.7998\nc9.81934 9.24023 7.7998 15.5 7.7998 102.78c1 8.2998 7.79004 30.8096 53.4102 24.1396c6 -0.860352 31.9102 -4.17969 37.4795 -30.6396l64.2607 -11.1504c20.4297 -3.70996 70.9395 -7 80.5996 -57.9404c22.6602 -121.09 8.91016 -238.46 7.7998 -238.46\nc-15.9795 -114.38 -111.07 -108.85 -111.07 -108.85c-18.9492 0.230469 -54.25 9.40039 -67.2695 39.8301zM280.76 212.63c-1 -1.91992 -2.2002 -6 0.850586 -7c14.0898 -4.92969 39.75 -6.83984 45.8799 -5.53027c3.10938 0.25 3.0498 4.43066 2.47949 6.65039\nc-3.5293 21.8496 -40.8301 26.5 -49.2393 5.91992z\" />\n    <glyph glyph-name=\"itch-io\" unicode=\"&#xf83a;\" horiz-adv-x=\"512\" \nd=\"M71.9199 413.23c19.2197 1.66992 114.32 2.76953 184.08 2.76953s116.56 -0.400391 184 -2.73047c21.7197 -12.9297 64.5195 -62.0996 64.9199 -75v-21.3398c0 -27.0596 -25.25 -50.8398 -48.25 -50.8398c-27.54 0 -50.54 22.8799 -50.54 50\nc0 -27.1494 -22.2295 -50 -49.7598 -50s-49 22.8799 -49 50c0 -27.1494 -23.5898 -50 -51.1602 -50h-0.5c-27.5703 0 -51.1602 22.8799 -51.1602 50c0 -27.1494 -21.4199 -50 -49 -50s-49.7598 22.8799 -49.7598 50c0 -27.1494 -22.9697 -50 -50.54 -50\nc-22.96 0 -48.25 23.7803 -48.25 50.8398v21.3398c0.400391 12.8906 43.2002 62.0605 64.9199 74.9609zM204.24 278.84c9.14844 -15.9902 31.5527 -28.9785 49.9746 -28.9785c0.498047 0 1.30664 0.0126953 1.80469 0.0283203c28.7109 0 44.6602 16.4502 51.7607 28.9404\nc22 -38.3398 77.8496 -38.7598 99.8496 -0.240234c13.1201 -23.0596 43.0801 -32.0996 56 -27.6602c3.57031 -37.1494 13.9004 -236.88 -17.75 -269.149c-77.6797 -18.1201 -299.76 -18.6699 -379.76 0c-31.4004 32.0195 -21.6006 229 -17.7305 269.149\nc12.8301 -4.41016 42.8301 4.52051 56 27.6602c21.9502 -38.46 77.8506 -38.1494 99.8506 0.25zM162.66 225.07l-0.0205078 -0.0703125c-52.3193 0 -65.21 -77.4502 -83.8799 -144.45c-17.2598 -62.1494 5.52051 -63.6699 33.9404 -63.7295\nc42.1494 1.56934 65.4902 32.1797 65.4902 62.79c53.6191 -8.79004 116.3 -6.43066 155.55 0c0 -30.6104 23.3398 -61.2207 65.4902 -62.79c28.4297 0.0595703 51.21 1.58008 33.9492 63.7295c-18.6494 66.9199 -31.54 144.45 -83.8701 144.45\nc-16.46 0 -31.0898 0 -49.25 -19.71c-12.1377 1.23145 -31.8896 2.23047 -44.0898 2.23047c-12.1992 0 -31.9521 -0.999023 -44.0898 -2.23047c-18.1299 19.7803 -32.75 19.7803 -49.2197 19.7803zM256 177.21l-0.0595703 -0.00976562s44.3496 -40.7598 52.3496 -55.2402\nl-29 1.16992v-25.2803c0 -1.15918 -11.6602 -0.699219 -23.3096 -0.15918c-1.99023 0 -23.3301 -1.39062 -23.3301 0.15918v25.3203l-29 -1.16992c7.96973 14.4404 52.3496 55.21 52.3496 55.21z\" />\n    <glyph glyph-name=\"salesforce\" unicode=\"&#xf83b;\" horiz-adv-x=\"640\" \nd=\"M248.89 202.36h-26.3496c0.69043 5.15918 3.32031 14.1201 13.6396 14.1201c6.75 0 11.9707 -3.82031 12.71 -14.1201zM385.55 216.24c0.450195 0 14.1104 1.75977 14.1104 -20c0 -6.45996 -1.11035 -20 -14.1104 -20c-0.479492 0 -14.1094 -1.77051 -14.1094 20\nc0 21.7695 13.6396 20 14.1094 20zM142.33 192.48c4.2002 3.60938 15.6104 2.71973 20.9297 1.64941v-16.9395c-5.85938 -1.1709 -16.2295 -2.75 -20.9297 0.949219c-1.20996 1 -3.29004 2.27051 -3.29004 7.05078\nc-0.0078125 0.137695 -0.0146484 0.361328 -0.0146484 0.499023c0 2.31738 1.48047 5.36035 3.30469 6.79102zM640 216c0 -87.5801 -80 -154.39 -165.36 -136.43c-18.3701 -33 -70.7295 -70.75 -132.199 -41.6299c-41.1602 -96.0508 -177.891 -92.1807 -213.811 5.16992\nc-119.72 -23.8906 -178.82 138.37 -75.2695 199.279c-34.75 79.4307 22.6396 173.61 114.31 173.61c33.834 -0.0214844 77.9883 -21.8389 98.5605 -48.7002c20.6992 21.4004 49.3994 34.8105 81.1494 34.8105c42.3398 0 79 -23.5205 98.7998 -58.5703\nc92.8203 40.6797 193.82 -28.2305 193.82 -127.54zM120.45 184.2c0 11.7598 -11.6904 15.1699 -17.8701 17.1699c-5.27051 2.11035 -13.4102 3.50977 -13.4102 8.93945c0 9.45996 17 6.66016 25.1699 2.12012c0 0 1.16992 -0.709961 1.64062 0.470703\nc0.239258 0.699219 2.35938 6.58008 2.58984 7.29004c0.0292969 0.0927734 0.0537109 0.24707 0.0537109 0.34375c0 0.441406 -0.337891 0.918945 -0.753906 1.06543c-12.3301 7.63086 -40.7002 8.51074 -40.7002 -12.6992c0 -12.46 11.4902 -15.4404 17.8799 -17.1699\nc4.71973 -1.58008 13.1699 -3 13.1699 -8.7002c0 -4 -3.5293 -7.06055 -9.16992 -7.06055c-5.82617 0.00976562 -14.3379 2.85449 -19 6.35059c-0.469727 0.229492 -1.41992 0.709961 -1.64941 -0.709961l-2.40039 -7.4707\nc-0.469727 -0.939453 0.230469 -1.17969 0.230469 -1.40918c1.75 -1.40039 10.2998 -6.59082 22.8193 -6.59082c13.1699 0 21.4004 7.06055 21.4004 18.1104v-0.0498047zM152.45 226.78c-10.1299 0 -18.6602 -3.16992 -21.4004 -5.18066\nc-0.237305 -0.164062 -0.430664 -0.532227 -0.430664 -0.822266c0 -0.178711 0.0859375 -0.442383 0.19043 -0.586914l2.59082 -7.06055c0.114258 -0.399414 0.544922 -0.723633 0.960938 -0.723633c0.0605469 0 0.15918 0.0107422 0.21875 0.0234375\nc0.650391 0 6.7998 4 16.9297 4c4 0 7.06055 -0.709961 9.18066 -2.35938c3.59961 -2.80078 3.05957 -8.29004 3.05957 -10.5801c-4.79004 0.299805 -19.1104 3.43945 -29.4102 -3.75977c-4.05762 -2.7832 -7.34961 -9.03418 -7.34961 -13.9541\nc0 -0.162109 0.00390625 -0.424805 0.00976562 -0.585938c0 -5.90039 1.50977 -10.4004 6.58984 -14.3506c12.2402 -8.16016 36.2803 -2 38.1006 -1.41016c1.5791 0.320312 3.5293 0.660156 3.5293 1.87988v33.8809c0.0400391 4.60938 0.320312 21.6396 -22.7793 21.6396z\nM199 247.76c0.000976562 0.0205078 0.00195312 0.0527344 0.00195312 0.0722656c0 0.613281 -0.49707 1.11035 -1.10938 1.11035c-0.0205078 0 -0.0527344 -0.000976562 -0.0722656 -0.00195312h-9.82031\nc-0.0175781 0.000976562 -0.0449219 0.000976562 -0.0625 0.000976562c-0.612305 0 -1.10938 -0.49707 -1.10938 -1.10938c0 -0.0205078 0.000976562 -0.0527344 0.00195312 -0.0722656v-79c-0.000976562 -0.0195312 -0.00195312 -0.0517578 -0.00195312 -0.0712891\nc0 -0.613281 0.49707 -1.11035 1.10938 -1.11035c0.0175781 0 0.0449219 0.000976562 0.0625 0.00195312h9.87988c0.0205078 -0.000976562 0.0527344 -0.00195312 0.0722656 -0.00195312c0.613281 0 1.11035 0.49707 1.11035 1.10938\nc0 0.0205078 -0.000976562 0.0527344 -0.00292969 0.0722656zM254.75 218.83c-2.09961 2.30957 -6.79004 7.53027 -17.6504 7.53027c-3.50977 0 -14.1592 -0.230469 -20.6992 -8.94043c-6.35059 -7.62988 -6.58008 -18.1104 -6.58008 -21.4102\nc0 -3.12012 0.149414 -14.2598 7.05957 -21.1699c2.63965 -2.91016 9.06055 -8.22949 22.8105 -8.22949c10.8193 0 16.4697 2.34961 18.5791 3.75977c0.470703 0.240234 0.710938 0.709961 0.240234 1.87988l-2.34961 6.83008\nc-0.1875 0.402344 -0.699219 0.728516 -1.14258 0.728516c-0.0751953 0 -0.194336 -0.0126953 -0.267578 -0.0283203c-2.58984 -0.94043 -6.34961 -2.82031 -15.29 -2.82031c-17.4199 0 -16.8496 14.7402 -16.9404 16.7002h37.1709\nc0.522461 0.0107422 1.04688 0.431641 1.16992 0.939453c-0.290039 0 2.06934 14.7002 -6.09082 24.2305h-0.0195312zM291.44 166.14c13.1699 0 21.4092 7.06055 21.4092 18.1104c0 11.7598 -11.6992 15.1699 -17.8799 17.1699\nc-4.13965 1.66016 -13.4102 3.37988 -13.4102 8.94043c0 3.75977 3.29004 6.34961 8.4707 6.34961c4.87988 -0.0976562 12.3613 -1.99316 16.7002 -4.22949c4.33789 -2.2373 1.17969 -0.710938 1.64941 0.469727c0.230469 0.700195 2.35059 6.58008 2.58008 7.29004\nc0.0292969 0.0927734 0.0537109 0.24707 0.0537109 0.34375c0 0.441406 -0.337891 0.918945 -0.753906 1.06641c-7.91016 4.89941 -16.7402 4.93945 -20.2295 4.93945c-12 0 -20.46 -7.29004 -20.46 -17.6396c0 -12.46 11.4795 -15.4404 17.8701 -17.1699\nc6.10938 -2 13.1699 -3.26074 13.1699 -8.7002c0 -4 -3.52051 -7.06055 -9.16992 -7.06055c-5.82617 0.0126953 -14.3379 2.85742 -19 6.35059c-0.155273 0.132812 -0.447266 0.241211 -0.651367 0.241211c-0.526367 0 -0.973633 -0.426758 -0.999023 -0.951172\nl-2.34961 -7.52051c-0.470703 -0.939453 0.229492 -1.17969 0.229492 -1.40918c1.71973 -1.40039 10.3301 -6.59082 22.79 -6.59082h-0.0195312zM357.09 224c0 0.709961 -0.240234 1.17969 -1.17969 1.17969h-11.7598c0 0.140625 0.939453 8.94043 4.46973 12.4707\nc4.16016 4.14941 11.7598 1.63965 12 1.63965c1.16992 -0.469727 1.41016 0 1.63965 0.469727l2.83008 7.77051c0.700195 0.939453 0 1.16992 -0.240234 1.41016c-5.08984 2 -17.3496 2.86914 -24.46 -4.24023c-5.47949 -5.48047 -7 -13.9199 -8 -19.5205h-8.46973\nc-0.600586 -0.0498047 -1.125 -0.578125 -1.16992 -1.17969l-1.41992 -7.75977c0 -0.700195 0.240234 -1.16992 1.17969 -1.16992h8.23047c-8.50977 -47.9004 -8.75 -50.21 -10.3506 -55.5205c-1.08008 -3.62012 -3.29004 -6.89941 -5.87988 -7.75977\nc-0.0898438 0 -3.87988 -1.67969 -9.63965 0.240234c0 0 -0.94043 0.469727 -1.41016 -0.709961c-0.240234 -0.709961 -2.58984 -6.82031 -2.83008 -7.53027s0 -1.41016 0.469727 -1.41016c5.11035 -2 13 -1.76953 17.8809 0\nc6.2793 2.28027 9.71973 7.88965 11.5293 12.9404c2.75 7.70996 2.81055 9.79004 11.7598 59.7393h12.2305c0.601562 0.0498047 1.13086 0.578125 1.17969 1.18066zM410.48 208c-0.560547 1.67969 -5.10059 18.1104 -25.1709 18.1104c-15.25 0 -23 -10 -25.1592 -18.1104\nc-1 -3 -3.18066 -14 0 -23.5195c0.0898438 -0.300781 4.40918 -18.1201 25.1592 -18.1201c14.9502 0 22.9004 9.60938 25.1709 18.1201c3.20996 9.60938 1.00977 20.5195 0 23.5195zM455.88 224.7c-5 1.64941 -16.6201 1.89941 -22.1104 -5.41016v4.46973\nc0.000976562 0.0175781 0.00195312 0.0449219 0.00195312 0.0625c0 0.612305 -0.49707 1.11035 -1.10938 1.11035c-0.0205078 0 -0.0527344 -0.000976562 -0.0722656 -0.00292969h-9.39941c-0.0205078 0.00195312 -0.0527344 0.00292969 -0.0722656 0.00292969\nc-0.612305 0 -1.11035 -0.498047 -1.11035 -1.11035c0 -0.0175781 0.000976562 -0.0449219 0.00195312 -0.0625v-55.2793c-0.000976562 -0.0175781 -0.00195312 -0.0449219 -0.00195312 -0.0625c0 -0.618164 0.501953 -1.12012 1.12012 -1.12012\nc0.0175781 0 0.0449219 0.000976562 0.0625 0.00195312h9.63965c0.0166016 -0.000976562 0.0449219 -0.00195312 0.0615234 -0.00195312c0.618164 0 1.12012 0.501953 1.12012 1.12012c0 0.0175781 -0.000976562 0.0449219 -0.00195312 0.0625v27.7695\nc0 2.91016 0.0498047 11.3701 4.45996 15.0498c4.90039 4.90039 12 3.36035 13.4102 3.06055c0.555664 0.00976562 1.1875 0.430664 1.41016 0.939453c0.972656 2.15918 2.34375 5.74316 3.05957 8c0.0449219 0.113281 0.0800781 0.302734 0.0800781 0.423828\nc0 0.356445 -0.246094 0.798828 -0.549805 0.986328v-0.00976562zM502.69 170.6l-2.12012 7.29004c-0.470703 1.18066 -1.41016 0.709961 -1.41016 0.709961c-4.23047 -1.81934 -10.1504 -1.88965 -11.29 -1.88965c-4.63965 0 -17.1699 1.12988 -17.1699 19.7598\nc0 6.23047 1.84961 19.7607 16.4697 19.7607c0.245117 0.00585938 0.643555 0.0107422 0.888672 0.0107422c3.00586 0 7.76855 -0.744141 10.6318 -1.66113c2.8623 -0.916992 0.939453 -0.469727 1.17969 0.709961c0.939453 2.58984 1.63965 4.46973 2.58984 7.53027\nc0.230469 0.939453 -0.469727 1.16992 -0.709961 1.16992c-11.5898 3.87012 -22.3398 2.5293 -27.7598 0c-1.58984 -0.740234 -16.2305 -6.49023 -16.2305 -27.5205c0 -2.89941 -0.580078 -30.1094 28.9404 -30.1094c4.42383 0.00878906 11.377 1.27637 15.5195 2.83008\nc0.290039 0.214844 0.525391 0.682617 0.525391 1.04395c0 0.105469 -0.0244141 0.274414 -0.0546875 0.375977v-0.0107422zM556.56 210.12c-0.799805 3 -5.36914 16.2295 -22.3496 16.2295c-16 0 -23.5195 -10.1094 -25.6396 -18.5898\nc-0.913086 -3.0166 -1.6543 -8.02441 -1.6543 -11.1768c0 -0.161133 0.00195312 -0.421875 0.00390625 -0.583008c0 -25.8701 18.8398 -29.4004 29.8799 -29.4004c10.8203 0 16.46 2.35059 18.5801 3.76074c0.469727 0.239258 0.709961 0.709961 0.240234 1.87988\nl-2.36035 6.83008c-0.186523 0.402344 -0.698242 0.728516 -1.14258 0.728516c-0.0742188 0 -0.194336 -0.0126953 -0.267578 -0.0292969c-2.58984 -0.939453 -6.34961 -2.81934 -15.29 -2.81934c-17.4199 0 -16.8496 14.7402 -16.9297 16.7002h37.1602\nc0.522461 0.0126953 1.05078 0.433594 1.17969 0.939453c-0.239258 0.00976562 0.94043 7.07031 -1.41016 15.54v-0.00976562zM533.27 216.47c5.11035 0 11.8506 -2.2002 12.7305 -14.1201h-26.3701c0.639648 5.12012 3.31055 14.1201 13.6396 14.1201z\" />\n    <glyph glyph-name=\"speaker-deck\" unicode=\"&#xf83c;\" horiz-adv-x=\"512\" \nd=\"M213.86 152h-113.86c-55.2002 0 -100 44.7998 -100 100s44.7998 100 100 100h132.84c22.0801 0 40 -17.9199 40 -40s-17.9199 -40 -40 -40h-134.84c-26.4697 0 -26.4502 -40 0 -40h113.82c55.1992 0 100 -44.7998 100 -100s-44.8008 -100 -100 -100h-171.82\nc-22.0801 0 -40 17.9199 -40 40s17.9199 40 40 40h173.86c26.4795 0 26.46 40 0 40zM298 32c23.5957 16.0176 46.4932 51.8574 51.1104 80h64.5498c10.8525 0.0927734 19.6602 8.97656 19.6602 19.8291v0.170898v120v0.170898c0 10.8525 -8.80762 19.7363 -19.6602 19.8291\nh-117.24c8.29199 9.4834 15.0205 27.4033 15.0205 40s-6.72852 30.5166 -15.0205 40h136.93c43.4404 0 78.6504 -35.8203 78.6504 -80v-160c0 -44.1797 -35.21 -80 -78.6504 -80h-135.35z\" />\n    <glyph glyph-name=\"symfony\" unicode=\"&#xf83d;\" horiz-adv-x=\"512\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM389.74 296.46c15.3496 0.540039 19.7695 15.4404 19.5195 23.1299c-0.639648 18.0605 -19.6699 29.46 -44.8301 28.6504\nc-1.89941 -0.0703125 -65.2598 3.46973 -102.43 -105.53c-10.0596 8.29004 -57.7695 65.1602 -110.58 25.8096c-18.9502 -14.1797 -31.4199 -47.9199 -2.9502 -79.6699c16.9502 -18.1396 26.7207 -25.3301 22.25 -39.8496c-9.14941 -29.79 -55.5596 -16.1602 -51 -1.38965\nc1.36035 4.38965 3.49023 4.46973 6.28027 13.0693c7.74023 25.3203 -27.1104 37.75 -34.6201 13.6006c-4.32031 -14.0605 2.37988 -39.5107 38.3799 -50.6201c42.1602 -12.96 77.8203 10.0098 82.8799 39.9395c3.2002 18.75 -5.29004 32.6904 -20.7998 50.6201l-12.6299 14\nc-7.66016 7.7002 -10.29 20.7002 -2.37012 30.7002c6.69043 8.45996 16.2002 12.0605 31.8105 7.83008c22.7695 -6.16992 32.9199 -21.9697 49.8496 -34.7197c-1.23047 -4 -10.04 -32.3398 -18.2305 -82c-12.1094 -63.4902 -21.3496 -98.3506 -45.3496 -118.351\nc-4.83984 -3.48926 -11.7598 -8.63965 -22.1797 -9c-1.94043 -0.0595703 -14.1406 2.83984 -2.0498 12.5508c15.2393 8.3291 7.00977 34.75 -14.8809 34c-9.85938 -0.330078 -24.8691 -9.59082 -24.3096 -26.5908c0.580078 -17.5293 16.9297 -30.6895 41.5801 -29.8398\nc13.1797 0.44043 42.5801 5.7998 71.5801 40.2598c39.8496 46.7207 47.4395 102.2 58.2002 161.721c51.6797 -6.11035 77.2393 17.8398 77.5996 35.7002c0.549805 24.2998 -28 23.46 -32 5.2998c-1.91992 -8.83984 13.4199 -16.8105 1.41992 -24.5605\nc-8.49023 -5.5 -23.71 -9.37012 -45.1396 -6.21973c10.2998 56.8496 19.1094 112.56 58.8896 113.85c2.70996 0.150391 12.6396 -0.119141 12.8701 -6.66992c0.150391 -5.41016 -6.7998 -9.66992 -6.53027 -18.8496c0.370117 -10.4199 8.2998 -17.2803 19.7705 -16.8701z\n\" />\n    <glyph glyph-name=\"waze\" unicode=\"&#xf83f;\" horiz-adv-x=\"512\" \nd=\"M502.17 246.33c14.5205 -85.8604 -30.9395 -167.92 -113.17 -208.13c13 -34.1006 -12.4004 -70.2002 -48.3203 -70.2002c-27.0625 0.0214844 -50.166 21.9736 -51.5693 49c-6.44043 -0.19043 -64.2002 0 -76.3301 0.639648\nc-1.10645 -27.3809 -24.2441 -49.6035 -51.6484 -49.6035c-0.588867 0 -1.54395 0.0195312 -2.13184 0.0439453c-33.8604 1.36035 -57.9502 34.8398 -47 67.9199c-37.21 13.1104 -72.54 34.8701 -99.6201 70.7998c-13 17.2803 -0.479492 41.7998 20.8398 41.7998\nc46.3105 0 32.2207 54.1699 43.1504 110.261c18.4297 93.9395 116.75 157.14 211.72 157.14c102.48 0 197.15 -70.6699 214.08 -169.67zM373.51 59.7197c42 19.1807 81.3301 56.71 96.29 102.141c40.4805 123.09 -64.1494 228 -181.71 228\nc-83.4502 0 -170.32 -55.4199 -186.07 -136c-9.5293 -48.9102 5 -131.351 -68.75 -131.351c24.9404 -33.1094 58.3301 -52.6201 93.7305 -64.0498c24.6602 21.7998 63.8701 15.4697 79.8301 -14.3398c14.2197 -1 79.1895 -1.17969 87.9004 -0.820312\nc7.9502 15.5303 28.5635 28.1348 46.0107 28.1348c10.2002 0 24.8799 -5.24805 32.7686 -11.7148zM205.12 260.87c0 34.7402 50.8398 34.75 50.8398 0s-50.8398 -34.7402 -50.8398 0zM321.69 260.87c0 34.7402 50.8594 34.75 50.8594 0s-50.8594 -34.75 -50.8594 0z\nM199.08 190.18c-3.44043 16.9404 22.1797 22.1807 25.6201 5.20996l0.0595703 -0.279297c4.14062 -21.4199 29.8506 -44 64.1201 -43.0703c35.6797 0.94043 59.25 22.21 64.1104 42.7695c4.45996 16.0508 28.5996 10.3604 25.4697 -6\nc-5.22949 -22.1797 -31.21 -62 -91.46 -62.8994c-42.5498 0 -80.8799 27.8398 -87.9004 64.25z\" />\n    <glyph glyph-name=\"yammer\" unicode=\"&#xf840;\" horiz-adv-x=\"512\" \nd=\"M421.78 295.83c-48.1602 -26.3896 -118.561 -58.1504 -130.2 -50s91.4395 80.3701 106.689 88.7695c0.920898 0.5 1.80078 0.970703 2.63086 1.40039c1.76562 0.521484 4.69336 0.945312 6.53516 0.945312c12.7295 0 23.0605 -10.3311 23.0605 -23.0596\nc0 -6.14453 -3.90527 -14.2334 -8.71582 -18.0557zM421.78 78.6602c4.76855 -3.82324 8.63965 -11.8877 8.63965 -18c0 -12.7344 -10.335 -23.0703 -23.0703 -23.0703c-1.81641 0 -4.70605 0.412109 -6.44922 0.919922\nc-0.830078 0.410156 -1.70996 0.900391 -2.63086 1.41016c-15.2695 8.38965 -118.25 80.6396 -106.689 88.7402c11.5596 8.09961 82.04 -23.6201 130.2 -50zM464.21 211c10.0947 -2.11328 18.2559 -12.1992 18.2559 -22.5117\nc0 -10.7881 -8.63965 -20.9561 -19.2861 -22.6982c-54.9102 0.0195312 -131.93 6.00977 -138.21 18.7598c-6.2793 12.75 118.84 26.5098 136.24 26.5098c1.0498 0 2.0498 -0.0595703 3 -0.0595703zM31 351.35c-0.699219 2.10742 -1.2666 5.61914 -1.2666 7.83887\nc0 13.7334 11.1455 24.8799 24.8799 24.8799c8.72949 0 18.8213 -6.41504 22.5264 -14.3184l81 -205.06h1.20996l77 203.529c3.22559 8.26074 13.041 14.9648 21.9092 14.9648c12.9834 0 23.5205 -10.5371 23.5205 -23.5195\nc0 -1.89258 -0.438477 -4.90137 -0.979492 -6.71484l-109.6 -273.391c-18.5498 -47.2197 -37.1201 -79.5596 -93.29 -79.5596c-0.151367 -0.000976562 -0.395508 -0.000976562 -0.545898 -0.000976562c-6.4668 0 -16.8887 0.874023 -23.2646 1.95117\nc-8.52051 2.44238 -15.4365 11.6201 -15.4365 20.4844c0 11.7637 9.54688 21.3105 21.3096 21.3105c0.28418 0 0.744141 -0.0117188 1.02734 -0.0253906c0.660156 -0.0595703 10.9102 -0.660156 13.8604 -0.660156c30.4697 0 43.7393 18.9404 58.0693 59.4102z\" />\n    <glyph glyph-name=\"git-alt\" unicode=\"&#xf841;\" \nd=\"M439.55 211.95c4.66504 -4.66602 8.45117 -13.8076 8.45117 -20.4053s-3.78613 -15.7393 -8.45117 -20.4053l-194.689 -194.689c-4.66602 -4.66211 -13.8047 -8.44629 -20.4004 -8.44629s-15.7344 3.78418 -20.4004 8.44629l-195.609 195.6\nc-4.66504 4.66602 -8.45117 13.8076 -8.45117 20.4053s3.78613 15.7393 8.45117 20.4053l134.12 134.14l50.79 -50.8496c-5.95996 -14.2607 -2.16016 -36.4902 18.6396 -45v-123c-22.3203 -9.09082 -28.8203 -38.4004 -11.25 -56\nc5.55176 -5.54883 16.4268 -10.0518 24.2754 -10.0518c7.84766 0 18.7236 4.50293 24.2744 10.0518c13.1807 13.1494 16.2197 42.46 -9.08008 55v121.85l46.3506 -46.29c-14.21 -34.4697 29.5098 -63.8301 56 -37.3398c25.71 25.6895 -1.24023 68.4902 -35.4707 56.6895\nl-49.6592 49.6602c9.29004 26.9102 -16.3301 52.8203 -43.3906 43.6807l-51.5195 51.5195l40.6602 40.6299c4.66602 4.66309 13.8076 8.44727 20.4043 8.44727s15.7383 -3.78418 20.4053 -8.44727z\" />\n    <glyph glyph-name=\"stackpath\" unicode=\"&#xf842;\" \nd=\"M244.6 215.6c0 -8.5 -4.25977 -20.4893 -21.3398 -20.4893h-19.6094v41.4697h19.6094c17.1299 0 21.3398 -12.3604 21.3398 -20.9805zM448 416v-448h-448v448h448zM151.3 160.16c0 21.2402 -12.1201 34.54 -46.7197 44.8496c-20.5703 7.41016 -26 10.9102 -26 18.6299\nc0 7.7207 7 14.6104 20.4102 14.6104c14.0898 0 20.79 -8.4502 20.79 -18.3496h30.7002l0.189453 0.569336c0.5 19.5703 -15.0596 41.6504 -51.1201 41.6504c-23.3701 0 -52.5498 -10.75 -52.5498 -38.29c0 -19.4004 9.25 -31.29 50.7402 -44.3701\nc17.2598 -6.15039 21.9102 -10.4004 21.9102 -19.4795c0 -15.2002 -19.1309 -14.2305 -19.4707 -14.2305c-20.3994 0 -25.6494 9.09961 -25.6494 21.9004h-30.7998l-0.180664 -0.560547c-0.679688 -31.3203 28.3799 -45.2197 56.6299 -45.2197\nc29.9805 0 51.1201 13.5498 51.1201 38.29zM276.68 215.79c0 25.2998 -18.4297 45.46 -53.4199 45.46h-51.7793v-138.18h32.1699v47.3594h19.6094c30.25 0 53.4199 15.9502 53.4199 45.3604zM297.94 123l49.0596 138.22h-31.0898l-47.9102 -138.22h29.9404zM404.46 261.22\nh-31.0898l-47.9102 -138.22h29.9404z\" />\n    <glyph glyph-name=\"cotton-bureau\" unicode=\"&#xf89e;\" horiz-adv-x=\"512\" \nd=\"M474.31 117.59h25.1807c-25.7998 -109.78 -111.4 -173.59 -239.67 -173.59c-154.63 -0.339844 -247.82 92.8604 -247.82 248.18c0 154.63 93 247.82 247.82 247.82c128.399 0 214.06 -63.5098 240.18 -173.61h-25.2598\nc-24.8506 95.6104 -99.9199 148.811 -214.69 148.811c-141.85 0 -223.2 -81.3799 -223.2 -223.2c0 -137.93 76.6699 -218 211.101 -223v49.2002c0 48.1602 -26.5498 74.3896 -74.5498 74.3896c-62.1309 0 -99.4004 37.2803 -99.4004 99.4102\nc0 61.3701 36.5195 98.2803 97.3799 99.0596c30.7402 64.6504 144.24 69.3203 177.24 0c60.8496 -0.779297 97.3799 -37.6895 97.3799 -99.0596c0 -62.0098 -37.2002 -99.21 -99.2002 -99.21c-47.9795 0 -74.3896 -26.3896 -74.3896 -74.3896v-49.1602\nc107.67 3.75977 178.24 56.5 201.899 148.35zM357 265.67c3.7998 -21.0801 11.2695 -104.2 -71.79 -120.75c12.2598 -17.7402 32.9805 -27.3301 61.5898 -27.3301c47.9697 0 74.4004 26.4102 74.4004 74.4102c0 44.6699 -22.8301 70.2197 -64.2002 73.6699zM275.32 168.31\nc72.7803 9.89062 58.5 86.9102 56.2295 97c-72.5596 -10 -58.6895 -86.6592 -56.2295 -97zM260 316l-0.179688 -0.259766c-28.3008 0 -49.1602 -9.66016 -61.5703 -27.3506c28.3701 -5.44922 49.3701 -20.5898 61.5996 -43.4492\nc12.2305 22.8594 33.2305 37.9697 61.5908 43.4492c-12.4404 17.9404 -32.8301 27.6104 -61.4404 27.6104zM188.48 265.28h0.239258c-2.75 -10.0498 -16.1602 -87.1602 56.25 -97c2.41992 10.1895 16.6807 86.4297 -56.4893 97zM173.2 117.59l0.330078 0.0302734\nc28.2998 0 49 9.66992 61.1396 27.2998c-73.0303 14.2197 -78.4004 83.5498 -71.6504 120.75c-41.3594 -3.66992 -64.2197 -29.3096 -64.2197 -73.6699c0 -48.0098 26.4004 -74.4102 74.4004 -74.4102zM226.41 105.2h0.269531\nc14.4902 -7.60059 25.5605 -19.3301 33.5605 -33.8301c6.36523 12.2188 21.4092 27.374 33.5801 33.8301c-14.4902 8.00977 -26.0508 19.0596 -33.8203 33.5498c-6.4248 -12.1094 -21.4736 -27.1396 -33.5898 -33.5498z\" />\n  </font>\n</defs></svg>\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_023_update_sample_app/app/src/static/css/font-awesome/fa-regular-400.svg#fontawesome",
    "content": "<?xml version=\"1.0\" standalone=\"no\"?>\n<!--\nFont Awesome Free 5.10.2 by @fontawesome - https://fontawesome.com\nLicense - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n-->\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\" >\n<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\">\n<metadata>\nCreated by FontForge 20190801 at Thu Aug 22 14:41:09 2019\n By Robert Madole\nCopyright (c) Font Awesome\n</metadata>\n<defs>\n<font id=\"FontAwesome5Free-Regular\" horiz-adv-x=\"512\" >\n  <font-face \n    font-family=\"Font Awesome 5 Free Regular\"\n    font-weight=\"400\"\n    font-stretch=\"normal\"\n    units-per-em=\"512\"\n    panose-1=\"2 0 5 3 0 0 0 0 0 0\"\n    ascent=\"448\"\n    descent=\"-64\"\n    bbox=\"-0.0663408 -64.0662 640.01 448.1\"\n    underline-thickness=\"25\"\n    underline-position=\"-50\"\n    unicode-range=\"U+0020-F5C8\"\n  />\n    <missing-glyph />\n    <glyph glyph-name=\"heart\" unicode=\"&#xf004;\" \nd=\"M458.4 383.7c75.2998 -63.4004 64.0996 -166.601 10.5996 -221.3l-175.4 -178.7c-10 -10.2002 -23.2998 -15.7998 -37.5996 -15.7998c-14.2002 0 -27.5996 5.69922 -37.5996 15.8994l-175.4 178.7c-53.5996 54.7002 -64.5996 157.9 10.5996 221.2\nc57.8008 48.7002 147.101 41.2998 202.4 -15c55.2998 56.2998 144.6 63.5996 202.4 15zM434.8 196.2c36.2002 36.8994 43.7998 107.7 -7.2998 150.8c-38.7002 32.5996 -98.7002 27.9004 -136.5 -10.5996l-35 -35.7002l-35 35.7002\nc-37.5996 38.2998 -97.5996 43.1992 -136.5 10.5c-51.2002 -43.1006 -43.7998 -113.5 -7.2998 -150.7l175.399 -178.7c2.40039 -2.40039 4.40039 -2.40039 6.80078 0z\" />\n    <glyph glyph-name=\"star\" unicode=\"&#xf005;\" horiz-adv-x=\"576\" \nd=\"M528.1 276.5c26.2002 -3.7998 36.7002 -36.0996 17.7002 -54.5996l-105.7 -103l25 -145.5c4.5 -26.3008 -23.1992 -45.9004 -46.3994 -33.7002l-130.7 68.7002l-130.7 -68.7002c-23.2002 -12.2998 -50.8994 7.39941 -46.3994 33.7002l25 145.5l-105.7 103\nc-19 18.5 -8.5 50.7998 17.7002 54.5996l146.1 21.2998l65.2998 132.4c11.7998 23.8994 45.7002 23.5996 57.4004 0l65.2998 -132.4zM388.6 135.7l100.601 98l-139 20.2002l-62.2002 126l-62.2002 -126l-139 -20.2002l100.601 -98l-23.7002 -138.4l124.3 65.2998\nl124.3 -65.2998z\" />\n    <glyph glyph-name=\"user\" unicode=\"&#xf007;\" horiz-adv-x=\"448\" \nd=\"M313.6 144c74.2002 0 134.4 -60.2002 134.4 -134.4v-25.5996c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v25.5996c0 74.2002 60.2002 134.4 134.4 134.4c28.7998 0 42.5 -16 89.5996 -16s60.9004 16 89.5996 16zM400 -16v25.5996\nc0 47.6006 -38.7998 86.4004 -86.4004 86.4004c-14.6992 0 -37.8994 -16 -89.5996 -16c-51.2998 0 -75 16 -89.5996 16c-47.6006 0 -86.4004 -38.7998 -86.4004 -86.4004v-25.5996h352zM224 160c-79.5 0 -144 64.5 -144 144s64.5 144 144 144s144 -64.5 144 -144\ns-64.5 -144 -144 -144zM224 400c-52.9004 0 -96 -43.0996 -96 -96s43.0996 -96 96 -96s96 43.0996 96 96s-43.0996 96 -96 96z\" />\n    <glyph glyph-name=\"clock\" unicode=\"&#xf017;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM256 -8c110.5 0 200 89.5 200 200s-89.5 200 -200 200s-200 -89.5 -200 -200s89.5 -200 200 -200zM317.8 96.4004l-84.8994 61.6992\nc-3.10059 2.30078 -4.90039 5.90039 -4.90039 9.7002v164.2c0 6.59961 5.40039 12 12 12h32c6.59961 0 12 -5.40039 12 -12v-141.7l66.7998 -48.5996c5.40039 -3.90039 6.5 -11.4004 2.60059 -16.7998l-18.8008 -25.9004c-3.89941 -5.2998 -11.3994 -6.5 -16.7998 -2.59961z\n\" />\n    <glyph glyph-name=\"list-alt\" unicode=\"&#xf022;\" \nd=\"M464 416c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h416zM458 16c3.31152 0 6 2.68848 6 6v340c0 3.31152 -2.68848 6 -6 6h-404c-3.31152 0 -6 -2.68848 -6 -6v-340\nc0 -3.31152 2.68848 -6 6 -6h404zM416 108v-24c0 -6.62695 -5.37305 -12 -12 -12h-200c-6.62695 0 -12 5.37305 -12 12v24c0 6.62695 5.37305 12 12 12h200c6.62695 0 12 -5.37305 12 -12zM416 204v-24c0 -6.62695 -5.37305 -12 -12 -12h-200c-6.62695 0 -12 5.37305 -12 12\nv24c0 6.62695 5.37305 12 12 12h200c6.62695 0 12 -5.37305 12 -12zM416 300v-24c0 -6.62695 -5.37305 -12 -12 -12h-200c-6.62695 0 -12 5.37305 -12 12v24c0 6.62695 5.37305 12 12 12h200c6.62695 0 12 -5.37305 12 -12zM164 288c0 -19.8818 -16.1182 -36 -36 -36\ns-36 16.1182 -36 36s16.1182 36 36 36s36 -16.1182 36 -36zM164 192c0 -19.8818 -16.1182 -36 -36 -36s-36 16.1182 -36 36s16.1182 36 36 36s36 -16.1182 36 -36zM164 96c0 -19.8818 -16.1182 -36 -36 -36s-36 16.1182 -36 36s16.1182 36 36 36s36 -16.1182 36 -36z\" />\n    <glyph glyph-name=\"flag\" unicode=\"&#xf024;\" \nd=\"M336.174 368c35.4668 0 73.0195 12.6914 108.922 28.1797c31.6406 13.6514 66.9043 -9.65723 66.9043 -44.1162v-239.919c0 -16.1953 -8.1543 -31.3057 -21.7129 -40.1631c-26.5762 -17.3643 -70.0693 -39.9814 -128.548 -39.9814c-68.6084 0 -112.781 32 -161.913 32\nc-56.5674 0 -89.957 -11.2803 -127.826 -28.5566v-83.4434c0 -8.83691 -7.16309 -16 -16 -16h-16c-8.83691 0 -16 7.16309 -16 16v406.438c-14.3428 8.2998 -24 23.7979 -24 41.5615c0 27.5693 23.2422 49.71 51.2012 47.8965\nc22.9658 -1.49023 41.8662 -19.4717 44.4805 -42.3379c0.177734 -1.52441 0.321289 -4.00781 0.321289 -5.54199c0 -4.30176 -1.10352 -11.1035 -2.46289 -15.1846c22.418 8.68555 49.4199 15.168 80.7207 15.168c68.6084 0 112.781 -32 161.913 -32zM464 112v240\nc-31.5059 -14.6338 -84.5547 -32 -127.826 -32c-59.9111 0 -101.968 32 -161.913 32c-41.4365 0 -80.4766 -16.5879 -102.261 -32v-232c31.4473 14.5967 84.4648 24 127.826 24c59.9111 0 101.968 -32 161.913 -32c41.4365 0 80.4775 16.5879 102.261 32z\" />\n    <glyph glyph-name=\"bookmark\" unicode=\"&#xf02e;\" horiz-adv-x=\"384\" \nd=\"M336 448c26.5098 0 48 -21.4902 48 -48v-464l-192 112l-192 -112v464c0 26.5098 21.4902 48 48 48h288zM336 19.5703v374.434c0 3.31348 -2.68555 5.99609 -6 5.99609h-276c-3.31152 0 -6 -2.68848 -6 -6v-374.43l144 84z\" />\n    <glyph glyph-name=\"image\" unicode=\"&#xf03e;\" \nd=\"M464 384c26.5098 0 48 -21.4902 48 -48v-288c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h416zM458 48c3.31152 0 6 2.68848 6 6v276c0 3.31152 -2.68848 6 -6 6h-404c-3.31152 0 -6 -2.68848 -6 -6v-276\nc0 -3.31152 2.68848 -6 6 -6h404zM128 296c22.0908 0 40 -17.9092 40 -40s-17.9092 -40 -40 -40s-40 17.9092 -40 40s17.9092 40 40 40zM96 96v48l39.5137 39.5146c4.6875 4.68652 12.2852 4.68652 16.9717 0l39.5146 -39.5146l119.514 119.515\nc4.6875 4.68652 12.2852 4.68652 16.9717 0l87.5146 -87.5146v-80h-320z\" />\n    <glyph glyph-name=\"edit\" unicode=\"&#xf044;\" horiz-adv-x=\"576\" \nd=\"M402.3 103.1l32 32c5 5 13.7002 1.5 13.7002 -5.69922v-145.4c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h273.5c7.09961 0 10.7002 -8.59961 5.7002 -13.7002l-32 -32c-1.5 -1.5 -3.5 -2.2998 -5.7002 -2.2998h-241.5v-352h352\nv113.5c0 2.09961 0.799805 4.09961 2.2998 5.59961zM558.9 304.9l-262.601 -262.601l-90.3994 -10c-26.2002 -2.89941 -48.5 19.2002 -45.6006 45.6006l10 90.3994l262.601 262.601c22.8994 22.8994 59.8994 22.8994 82.6992 0l43.2002 -43.2002\nc22.9004 -22.9004 22.9004 -60 0.100586 -82.7998zM460.1 274l-58.0996 58.0996l-185.8 -185.899l-7.2998 -65.2998l65.2998 7.2998zM524.9 353.7l-43.2002 43.2002c-4.10059 4.09961 -10.7998 4.09961 -14.7998 0l-30.9004 -30.9004l58.0996 -58.0996l30.9004 30.8994\nc4 4.2002 4 10.7998 -0.0996094 14.9004z\" />\n    <glyph glyph-name=\"times-circle\" unicode=\"&#xf057;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM256 -8c110.5 0 200 89.5 200 200s-89.5 200 -200 200s-200 -89.5 -200 -200s89.5 -200 200 -200zM357.8 254.2l-62.2002 -62.2002l62.2002 -62.2002\nc4.7002 -4.7002 4.7002 -12.2998 0 -17l-22.5996 -22.5996c-4.7002 -4.7002 -12.2998 -4.7002 -17 0l-62.2002 62.2002l-62.2002 -62.2002c-4.7002 -4.7002 -12.2998 -4.7002 -17 0l-22.5996 22.5996c-4.7002 4.7002 -4.7002 12.2998 0 17l62.2002 62.2002l-62.2002 62.2002\nc-4.7002 4.7002 -4.7002 12.2998 0 17l22.5996 22.5996c4.7002 4.7002 12.2998 4.7002 17 0l62.2002 -62.2002l62.2002 62.2002c4.7002 4.7002 12.2998 4.7002 17 0l22.5996 -22.5996c4.7002 -4.7002 4.7002 -12.2998 0 -17z\" />\n    <glyph glyph-name=\"check-circle\" unicode=\"&#xf058;\" \nd=\"M256 440c136.967 0 248 -111.033 248 -248s-111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248zM256 392c-110.549 0 -200 -89.4678 -200 -200c0 -110.549 89.4678 -200 200 -200c110.549 0 200 89.4678 200 200c0 110.549 -89.4678 200 -200 200z\nM396.204 261.733c4.66699 -4.70508 4.63672 -12.3037 -0.0673828 -16.9717l-172.589 -171.204c-4.70508 -4.66797 -12.3027 -4.63672 -16.9697 0.0683594l-90.7812 91.5156c-4.66797 4.70605 -4.63672 12.3047 0.0683594 16.9717l22.7188 22.5361\nc4.70508 4.66699 12.3027 4.63574 16.9697 -0.0693359l59.792 -60.2773l141.353 140.216c4.70508 4.66797 12.3027 4.6377 16.9697 -0.0673828z\" />\n    <glyph glyph-name=\"question-circle\" unicode=\"&#xf059;\" \nd=\"M256 440c136.957 0 248 -111.083 248 -248c0 -136.997 -111.043 -248 -248 -248s-248 111.003 -248 248c0 136.917 111.043 248 248 248zM256 -8c110.569 0 200 89.4697 200 200c0 110.529 -89.5088 200 -200 200c-110.528 0 -200 -89.5049 -200 -200\nc0 -110.569 89.4678 -200 200 -200zM363.244 247.2c0 -67.0518 -72.4209 -68.084 -72.4209 -92.8633v-6.33691c0 -6.62695 -5.37305 -12 -12 -12h-45.6475c-6.62695 0 -12 5.37305 -12 12v8.65918c0 35.7451 27.1006 50.0342 47.5791 61.5156\nc17.5615 9.84473 28.3242 16.541 28.3242 29.5791c0 17.2461 -21.999 28.6934 -39.7842 28.6934c-23.1885 0 -33.8936 -10.9775 -48.9424 -29.9697c-4.05664 -5.11914 -11.46 -6.07031 -16.666 -2.12402l-27.8232 21.0986\nc-5.10742 3.87207 -6.25098 11.0654 -2.64453 16.3633c23.627 34.6934 53.7217 54.1846 100.575 54.1846c49.0713 0 101.45 -38.3037 101.45 -88.7998zM298 80c0 -23.1592 -18.8408 -42 -42 -42s-42 18.8408 -42 42s18.8408 42 42 42s42 -18.8408 42 -42z\" />\n    <glyph glyph-name=\"eye\" unicode=\"&#xf06e;\" horiz-adv-x=\"576\" \nd=\"M288 304c0.0927734 0 0.244141 0.000976562 0.336914 0.000976562c61.6641 0 111.71 -50.0469 111.71 -111.711c0 -61.6631 -50.0459 -111.71 -111.71 -111.71s-111.71 50.0469 -111.71 111.71c0 8.71289 1.95898 22.5781 4.37305 30.9502\nc6.93066 -3.94141 19.0273 -7.18457 27 -7.24023c30.9121 0 56 25.0879 56 56c-0.0556641 7.97266 -3.29883 20.0693 -7.24023 27c8.42383 2.62207 22.4189 4.8623 31.2402 5zM572.52 206.6c1.9209 -3.79883 3.47949 -10.3379 3.47949 -14.5947\ns-1.55859 -10.7959 -3.47949 -14.5947c-54.1992 -105.771 -161.59 -177.41 -284.52 -177.41s-230.29 71.5898 -284.52 177.4c-1.9209 3.79883 -3.47949 10.3379 -3.47949 14.5947s1.55859 10.7959 3.47949 14.5947c54.1992 105.771 161.59 177.41 284.52 177.41\ns230.29 -71.5898 284.52 -177.4zM288 48c98.6602 0 189.1 55 237.93 144c-48.8398 89 -139.27 144 -237.93 144s-189.09 -55 -237.93 -144c48.8398 -89 139.279 -144 237.93 -144z\" />\n    <glyph glyph-name=\"eye-slash\" unicode=\"&#xf070;\" horiz-adv-x=\"640\" \nd=\"M634 -23c3.31738 -2.65137 6.00977 -8.25098 6.00977 -12.498c0 -3.10449 -1.57715 -7.58984 -3.51953 -10.0117l-10 -12.4902c-2.65234 -3.31152 -8.24707 -6 -12.4902 -6c-3.09961 0 -7.58008 1.57227 -10 3.50977l-598 467.49\nc-3.31738 2.65137 -6.00977 8.25098 -6.00977 12.498c0 3.10449 1.57715 7.58984 3.51953 10.0117l10 12.4902c2.65234 3.31152 8.24707 6 12.4902 6c3.09961 0 7.58008 -1.57227 10 -3.50977zM296.79 301.53c6.33496 1.35059 16.7324 2.45801 23.21 2.46973\nc60.4805 0 109.36 -47.9102 111.58 -107.85zM343.21 82.46c-6.33496 -1.34375 -16.7334 -2.44629 -23.21 -2.45996c-60.4697 0 -109.35 47.9102 -111.58 107.84zM320 336c-19.8799 0 -39.2803 -2.7998 -58.2197 -7.09961l-46.4102 36.29\nc32.9199 11.8096 67.9297 18.8096 104.63 18.8096c122.93 0 230.29 -71.5898 284.57 -177.4c1.91992 -3.79883 3.47949 -10.3379 3.47949 -14.5947s-1.55957 -10.7959 -3.47949 -14.5947c-11.7197 -22.7598 -35.4189 -56.4092 -52.9004 -75.1104l-37.7402 29.5\nc14.333 15.0156 34.0449 41.9854 44 60.2002c-48.8398 89 -139.279 144 -237.93 144zM320 48c19.8896 0 39.2803 2.7998 58.2197 7.08984l46.4102 -36.2803c-32.9199 -11.7598 -67.9297 -18.8096 -104.63 -18.8096c-122.92 0 -230.28 71.5898 -284.51 177.4\nc-1.9209 3.79883 -3.47949 10.3379 -3.47949 14.5947s1.55859 10.7959 3.47949 14.5947c11.7168 22.7568 35.4111 56.4014 52.8896 75.1006l37.7402 -29.5c-14.3467 -15.0107 -34.0811 -41.9756 -44.0498 -60.1904c48.8496 -89 139.279 -144 237.93 -144z\" />\n    <glyph glyph-name=\"calendar-alt\" unicode=\"&#xf073;\" horiz-adv-x=\"448\" \nd=\"M148 160h-40c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12zM256 172c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h40\nc6.59961 0 12 -5.40039 12 -12v-40zM352 172c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40zM256 76c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v40\nc0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40zM160 76c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40zM352 76c0 -6.59961 -5.40039 -12 -12 -12h-40\nc-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40zM448 336v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h48v52c0 6.59961 5.40039 12 12 12h40\nc6.59961 0 12 -5.40039 12 -12v-52h128v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h48c26.5 0 48 -21.5 48 -48zM400 -10v298h-352v-298c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z\" />\n    <glyph glyph-name=\"comment\" unicode=\"&#xf075;\" \nd=\"M256 416c141.4 0 256 -93.0996 256 -208s-114.6 -208 -256 -208c-32.7998 0 -64 5.2002 -92.9004 14.2998c-29.0996 -20.5996 -77.5996 -46.2998 -139.1 -46.2998c-9.59961 0 -18.2998 5.7002 -22.0996 14.5c-3.80078 8.7998 -2 19 4.59961 26\nc0.5 0.400391 31.5 33.7998 46.4004 73.2002c-33 35.0996 -52.9004 78.7002 -52.9004 126.3c0 114.9 114.6 208 256 208zM256 48c114.7 0 208 71.7998 208 160s-93.2998 160 -208 160s-208 -71.7998 -208 -160c0 -42.2002 21.7002 -74.0996 39.7998 -93.4004\nl20.6006 -21.7998l-10.6006 -28.0996c-5.5 -14.5 -12.5996 -28.1006 -19.8994 -40.2002c23.5996 7.59961 43.1992 18.9004 57.5 29l19.5 13.7998l22.6992 -7.2002c25.3008 -8 51.7002 -12.0996 78.4004 -12.0996z\" />\n    <glyph glyph-name=\"folder\" unicode=\"&#xf07b;\" \nd=\"M464 320c26.5098 0 48 -21.4902 48 -48v-224c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h146.74c8.49023 0 16.6299 -3.37012 22.6299 -9.37012l54.6299 -54.6299h192zM464 48v224h-198.62\nc-8.49023 0 -16.6299 3.37012 -22.6299 9.37012l-54.6299 54.6299h-140.12v-288h416z\" />\n    <glyph glyph-name=\"folder-open\" unicode=\"&#xf07c;\" horiz-adv-x=\"576\" \nd=\"M527.9 224c37.6992 0 60.6992 -41.5 40.6992 -73.4004l-79.8994 -128c-8.7998 -14.0996 -24.2002 -22.5996 -40.7002 -22.5996h-400c-26.5 0 -48 21.5 -48 48v288c0 26.5 21.5 48 48 48h160l64 -64h160c26.5 0 48 -21.5 48 -48v-48h47.9004zM48 330v-233.4l62.9004 104.2\nc8.69922 14.4004 24.2998 23.2002 41.0996 23.2002h280v42c0 3.2998 -2.7002 6 -6 6h-173.9l-64 64h-134.1c-3.2998 0 -6 -2.7002 -6 -6zM448 48l80 128h-378.8l-77.2002 -128h376z\" />\n    <glyph glyph-name=\"chart-bar\" unicode=\"&#xf080;\" \nd=\"M396.8 96c-6.39941 0 -12.7998 6.40039 -12.7998 12.7998v230.4c0 6.39941 6.40039 12.7998 12.7998 12.7998h22.4004c6.39941 0 12.7998 -6.40039 12.7998 -12.7998v-230.4c0 -6.39941 -6.40039 -12.7998 -12.7998 -12.7998h-22.4004zM204.8 96\nc-6.39941 0 -12.7998 6.40039 -12.7998 12.7998v198.4c0 6.39941 6.40039 12.7998 12.7998 12.7998h22.4004c6.39941 0 12.7998 -6.40039 12.7998 -12.7998v-198.4c0 -6.39941 -6.40039 -12.7998 -12.7998 -12.7998h-22.4004zM300.8 96\nc-6.39941 0 -12.7998 6.40039 -12.7998 12.7998v134.4c0 6.39941 6.40039 12.7998 12.7998 12.7998h22.4004c6.39941 0 12.7998 -6.40039 12.7998 -12.7998v-134.4c0 -6.39941 -6.40039 -12.7998 -12.7998 -12.7998h-22.4004zM496 48c8.83984 0 16 -7.16016 16 -16v-16\nc0 -8.83984 -7.16016 -16 -16 -16h-464c-17.6699 0 -32 14.3301 -32 32v336c0 8.83984 7.16016 16 16 16h16c8.83984 0 16 -7.16016 16 -16v-320h448zM108.8 96c-6.39941 0 -12.7998 6.40039 -12.7998 12.7998v70.4004c0 6.39941 6.40039 12.7998 12.7998 12.7998h22.4004\nc6.39941 0 12.7998 -6.40039 12.7998 -12.7998v-70.4004c0 -6.39941 -6.40039 -12.7998 -12.7998 -12.7998h-22.4004z\" />\n    <glyph glyph-name=\"comments\" unicode=\"&#xf086;\" horiz-adv-x=\"576\" \nd=\"M532 61.7998c15.2998 -30.7002 37.4004 -54.5 37.7998 -54.7998c6.2998 -6.7002 8 -16.5 4.40039 -25c-3.7002 -8.5 -12 -14 -21.2002 -14c-53.5996 0 -96.7002 20.2998 -125.2 38.7998c-19 -4.39941 -39 -6.7998 -59.7998 -6.7998\nc-86.2002 0 -159.9 40.4004 -191.3 97.7998c-9.7002 1.2002 -19.2002 2.7998 -28.4004 4.90039c-28.5 -18.6006 -71.7002 -38.7998 -125.2 -38.7998c-9.19922 0 -17.5996 5.5 -21.1992 14c-3.7002 8.5 -1.90039 18.2998 4.39941 25\nc0.400391 0.399414 22.4004 24.1992 37.7002 54.8994c-27.5 27.2002 -44 61.2002 -44 98.2002c0 88.4004 93.0996 160 208 160c86.2998 0 160.3 -40.5 191.8 -98.0996c99.7002 -11.8008 176.2 -77.9004 176.2 -157.9c0 -37.0996 -16.5 -71.0996 -44 -98.2002zM139.2 154.1\nl19.7998 -4.5c16 -3.69922 32.5 -5.59961 49 -5.59961c86.7002 0 160 51.2998 160 112s-73.2998 112 -160 112s-160 -51.2998 -160 -112c0 -28.7002 16.2002 -50.5996 29.7002 -64l24.7998 -24.5l-15.5 -31.0996c-2.59961 -5.10059 -5.2998 -10.1006 -8 -14.8008\nc14.5996 5.10059 29 12.3008 43.0996 21.4004zM498.3 96c13.5 13.4004 29.7002 35.2998 29.7002 64c0 49.2002 -48.2998 91.5 -112.7 106c0.299805 -3.2998 0.700195 -6.59961 0.700195 -10c0 -80.9004 -78 -147.5 -179.3 -158.3\nc29.0996 -29.6006 77.2998 -49.7002 131.3 -49.7002c16.5 0 33 1.90039 49 5.59961l19.9004 4.60059l17.0996 -11.1006c14.0996 -9.09961 28.5 -16.2998 43.0996 -21.3994c-2.69922 4.7002 -5.39941 9.7002 -8 14.7998l-15.5 31.0996z\" />\n    <glyph glyph-name=\"star-half\" unicode=\"&#xf089;\" horiz-adv-x=\"576\" \nd=\"M288 62.7002v-54.2998l-130.7 -68.6006c-23.3994 -12.2998 -50.8994 7.60059 -46.3994 33.7002l25 145.5l-105.7 103c-19 18.5 -8.5 50.7998 17.7002 54.5996l146.1 21.2002l65.2998 132.4c5.90039 11.8994 17.2998 17.7998 28.7002 17.7998v-68.0996l-62.2002 -126\nl-139 -20.2002l100.601 -98l-23.7002 -138.4z\" />\n    <glyph glyph-name=\"lemon\" unicode=\"&#xf094;\" \nd=\"M484.112 420.111c28.1221 -28.123 35.9434 -68.0039 19.0215 -97.0547c-23.0576 -39.584 50.1436 -163.384 -82.3311 -295.86c-132.301 -132.298 -256.435 -59.3594 -295.857 -82.3291c-29.0459 -16.917 -68.9219 -9.11426 -97.0576 19.0205\nc-28.1221 28.1221 -35.9434 68.0029 -19.0215 97.0547c23.0566 39.5859 -50.1436 163.386 82.3301 295.86c132.308 132.309 256.407 59.3496 295.862 82.332c29.0498 16.9219 68.9307 9.09863 97.0537 -19.0234zM461.707 347.217\nc13.5166 23.2031 -27.7578 63.7314 -50.4883 50.4912c-66.6025 -38.7939 -165.646 45.5898 -286.081 -74.8457c-120.444 -120.445 -36.0449 -219.472 -74.8447 -286.08c-13.542 -23.2471 27.8145 -63.6953 50.4932 -50.4883\nc66.6006 38.7949 165.636 -45.5996 286.076 74.8428c120.444 120.445 36.0449 219.472 74.8447 286.08zM291.846 338.481c1.37012 -10.96 -6.40332 -20.957 -17.3643 -22.3271c-54.8467 -6.85547 -135.779 -87.7871 -142.636 -142.636\nc-1.37305 -10.9883 -11.3984 -18.7334 -22.3262 -17.3643c-10.9609 1.37012 -18.7344 11.3652 -17.3643 22.3262c9.16211 73.2852 104.167 168.215 177.364 177.364c10.9531 1.36816 20.9561 -6.40234 22.3262 -17.3633z\" />\n    <glyph glyph-name=\"credit-card\" unicode=\"&#xf09d;\" horiz-adv-x=\"576\" \nd=\"M527.9 416c26.5996 0 48.0996 -21.5 48.0996 -48v-352c0 -26.5 -21.5 -48 -48.0996 -48h-479.801c-26.5996 0 -48.0996 21.5 -48.0996 48v352c0 26.5 21.5 48 48.0996 48h479.801zM54.0996 368c-3.2998 0 -6 -2.7002 -6 -6v-42h479.801v42c0 3.2998 -2.7002 6 -6 6\nh-467.801zM521.9 16c3.2998 0 6 2.7002 6 6v170h-479.801v-170c0 -3.2998 2.7002 -6 6 -6h467.801zM192 116v-40c0 -6.59961 -5.40039 -12 -12 -12h-72c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h72c6.59961 0 12 -5.40039 12 -12zM384 116v-40\nc0 -6.59961 -5.40039 -12 -12 -12h-136c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h136c6.59961 0 12 -5.40039 12 -12z\" />\n    <glyph glyph-name=\"hdd\" unicode=\"&#xf0a0;\" horiz-adv-x=\"576\" \nd=\"M567.403 212.358c5.59668 -8.04688 8.59668 -17.6113 8.59668 -27.4121v-136.946c0 -26.5098 -21.4902 -48 -48 -48h-480c-26.5098 0 -48 21.4902 -48 48v136.946c0 8.30957 3.85156 20.5898 8.59668 27.4121l105.08 151.053\nc7.90625 11.3652 25.5596 20.5889 39.4033 20.5889h0.000976562h269.838h0.000976562c13.8438 0 31.4971 -9.22363 39.4033 -20.5889zM153.081 336l-77.9131 -112h425.664l-77.9131 112h-269.838zM528 48v128h-480v-128h480zM496 112c0 -17.6729 -14.3271 -32 -32 -32\ns-32 14.3271 -32 32s14.3271 32 32 32s32 -14.3271 32 -32zM400 112c0 -17.6729 -14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32s32 -14.3271 32 -32z\" />\n    <glyph glyph-name=\"hand-point-right\" unicode=\"&#xf0a4;\" \nd=\"M428.8 310.4c45.0996 0 83.2002 -38.1016 83.2002 -83.2002c0 -45.6162 -37.7646 -83.2002 -83.2002 -83.2002h-35.6475c-1.41602 -6.36719 -4.96875 -16.252 -7.92969 -22.0645c2.50586 -22.0059 -3.50293 -44.9775 -15.9844 -62.791\nc-1.14062 -52.4863 -37.3984 -91.1445 -99.9404 -91.1445h-21.2988c-60.0635 0 -98.5117 40 -127.2 40h-2.67871c-5.74707 -4.95215 -13.5361 -8 -22.1201 -8h-64c-17.6729 0 -32 12.8936 -32 28.7998v230.4c0 15.9062 14.3271 28.7998 32 28.7998h64.001\nc8.58398 0 16.373 -3.04785 22.1201 -8h2.67871c6.96387 0 14.8623 6.19336 30.1816 23.6689l0.128906 0.148438l0.130859 0.145508c8.85645 9.93652 18.1162 20.8398 25.8506 33.2529c18.7051 30.2471 30.3936 78.7842 75.707 78.7842c56.9277 0 92 -35.2861 92 -83.2002\nv-0.0839844c0 -6.21777 -0.974609 -16.2148 -2.17578 -22.3154h86.1768zM428.8 192c18.9756 0 35.2002 16.2246 35.2002 35.2002c0 18.7002 -16.7754 35.2002 -35.2002 35.2002h-158.399c0 17.3242 26.3994 35.1992 26.3994 70.3994c0 26.4004 -20.625 35.2002 -44 35.2002\nc-8.79395 0 -20.4443 -32.7119 -34.9258 -56.0996c-9.07422 -14.5752 -19.5244 -27.2256 -30.7988 -39.875c-16.1094 -18.374 -33.8359 -36.6328 -59.0752 -39.5967v-176.753c42.79 -3.7627 74.5088 -39.6758 120 -39.6758h21.2988\nc40.5244 0 57.124 22.1973 50.6006 61.3252c14.6113 8.00098 24.1514 33.9785 12.9248 53.625c19.3652 18.2246 17.7871 46.3809 4.9502 61.0498h91.0254zM88 64c0 13.2549 -10.7451 24 -24 24s-24 -10.7451 -24 -24s10.7451 -24 24 -24s24 10.7451 24 24z\" />\n    <glyph glyph-name=\"hand-point-left\" unicode=\"&#xf0a5;\" \nd=\"M0 227.2c0 45.0986 38.1006 83.2002 83.2002 83.2002h86.1758c-1.3623 6.91016 -2.17578 14.374 -2.17578 22.3994c0 47.9141 35.0723 83.2002 92 83.2002c45.3135 0 57.002 -48.5371 75.7061 -78.7852c7.73438 -12.4121 16.9951 -23.3154 25.8506 -33.2529\nl0.130859 -0.145508l0.128906 -0.148438c15.3213 -17.4746 23.2197 -23.668 30.1836 -23.668h2.67871c5.74707 4.95215 13.5361 8 22.1201 8h64c17.6729 0 32 -12.8936 32 -28.7998v-230.4c0 -15.9062 -14.3271 -28.7998 -32 -28.7998h-64\nc-8.58398 0 -16.373 3.04785 -22.1201 8h-2.67871c-28.6885 0 -67.1367 -40 -127.2 -40h-21.2988c-62.542 0 -98.8008 38.6582 -99.9404 91.1445c-12.4814 17.8135 -18.4922 40.7852 -15.9844 62.791c-2.96094 5.8125 -6.51367 15.6973 -7.92969 22.0645h-35.6465\nc-45.4355 0 -83.2002 37.584 -83.2002 83.2002zM48 227.2c0 -18.9756 16.2246 -35.2002 35.2002 -35.2002h91.0244c-12.8369 -14.6689 -14.415 -42.8252 4.9502 -61.0498c-11.2256 -19.6465 -1.68652 -45.624 12.9248 -53.625\nc-6.52246 -39.1279 10.0771 -61.3252 50.6016 -61.3252h21.2988c45.4912 0 77.21 35.9131 120 39.6768v176.752c-25.2393 2.96289 -42.9658 21.2227 -59.0752 39.5967c-11.2744 12.6494 -21.7246 25.2998 -30.7988 39.875\nc-14.4814 23.3877 -26.1318 56.0996 -34.9258 56.0996c-23.375 0 -44 -8.7998 -44 -35.2002c0 -35.2002 26.3994 -53.0752 26.3994 -70.3994h-158.399c-18.4248 0 -35.2002 -16.5 -35.2002 -35.2002zM448 88c-13.2549 0 -24 -10.7451 -24 -24s10.7451 -24 24 -24\ns24 10.7451 24 24s-10.7451 24 -24 24z\" />\n    <glyph glyph-name=\"hand-point-up\" unicode=\"&#xf0a6;\" horiz-adv-x=\"448\" \nd=\"M105.6 364.8c0 45.0996 38.1016 83.2002 83.2002 83.2002c45.6162 0 83.2002 -37.7646 83.2002 -83.2002v-35.6465c6.36719 -1.41602 16.252 -4.96875 22.0645 -7.92969c22.0059 2.50684 44.9775 -3.50293 62.791 -15.9844\nc52.4863 -1.14062 91.1445 -37.3984 91.1445 -99.9404v-21.2988c0 -60.0635 -40 -98.5117 -40 -127.2v-2.67871c4.95215 -5.74707 8 -13.5361 8 -22.1201v-64c0 -17.6729 -12.8936 -32 -28.7998 -32h-230.4c-15.9062 0 -28.7998 14.3271 -28.7998 32v64\nc0 8.58398 3.04785 16.373 8 22.1201v2.67871c0 6.96387 -6.19336 14.8623 -23.6689 30.1816l-0.148438 0.128906l-0.145508 0.130859c-9.93652 8.85645 -20.8398 18.1162 -33.2529 25.8506c-30.2471 18.7051 -78.7842 30.3936 -78.7842 75.707\nc0 56.9277 35.2861 92 83.2002 92h0.0839844c6.21777 0 16.2148 -0.974609 22.3154 -2.17578v86.1768zM224 364.8c0 18.9756 -16.2246 35.2002 -35.2002 35.2002c-18.7002 0 -35.2002 -16.7754 -35.2002 -35.2002v-158.399c-17.3242 0 -35.1992 26.3994 -70.3994 26.3994\nc-26.4004 0 -35.2002 -20.625 -35.2002 -44c0 -8.79395 32.7119 -20.4443 56.0996 -34.9258c14.5752 -9.07422 27.2256 -19.5244 39.875 -30.7988c18.374 -16.1094 36.6328 -33.8359 39.5967 -59.0752h176.753c3.7627 42.79 39.6758 74.5088 39.6758 120v21.2988\nc0 40.5244 -22.1973 57.124 -61.3252 50.6006c-8.00098 14.6113 -33.9785 24.1514 -53.625 12.9248c-18.2246 19.3652 -46.3809 17.7871 -61.0498 4.9502v91.0254zM352 24c-13.2549 0 -24 -10.7451 -24 -24s10.7451 -24 24 -24s24 10.7451 24 24s-10.7451 24 -24 24z\" />\n    <glyph glyph-name=\"hand-point-down\" unicode=\"&#xf0a7;\" horiz-adv-x=\"448\" \nd=\"M188.8 -64c-45.0986 0 -83.2002 38.1006 -83.2002 83.2002v86.1758c-6.91016 -1.3623 -14.374 -2.17578 -22.3994 -2.17578c-47.9141 0 -83.2002 35.0723 -83.2002 92c0 45.3135 48.5371 57.002 78.7852 75.707c12.4121 7.73438 23.3154 16.9951 33.2529 25.8506\nl0.145508 0.130859l0.148438 0.128906c17.4746 15.3213 23.668 23.2197 23.668 30.1836v2.67871c-4.95215 5.74707 -8 13.5361 -8 22.1201v64c0 17.6729 12.8936 32 28.7998 32h230.4c15.9062 0 28.7998 -14.3271 28.7998 -32v-64.001\nc0 -8.58398 -3.04785 -16.373 -8 -22.1201v-2.67871c0 -28.6885 40 -67.1367 40 -127.2v-21.2988c0 -62.542 -38.6582 -98.8008 -91.1445 -99.9404c-17.8135 -12.4814 -40.7852 -18.4922 -62.791 -15.9844c-5.8125 -2.96094 -15.6973 -6.51367 -22.0645 -7.92969v-35.6465\nc0 -45.4355 -37.584 -83.2002 -83.2002 -83.2002zM188.8 -16c18.9756 0 35.2002 16.2246 35.2002 35.2002v91.0244c14.6689 -12.8369 42.8252 -14.415 61.0498 4.9502c19.6465 -11.2256 45.624 -1.68652 53.625 12.9248c39.1279 -6.52246 61.3252 10.0771 61.3252 50.6016\nv21.2988c0 45.4912 -35.9131 77.21 -39.6768 120h-176.752c-2.96289 -25.2393 -21.2227 -42.9658 -39.5967 -59.0752c-12.6494 -11.2744 -25.2998 -21.7246 -39.875 -30.7988c-23.3877 -14.4814 -56.0996 -26.1318 -56.0996 -34.9258c0 -23.375 8.7998 -44 35.2002 -44\nc35.2002 0 53.0752 26.3994 70.3994 26.3994v-158.399c0 -18.4248 16.5 -35.2002 35.2002 -35.2002zM328 384c0 -13.2549 10.7451 -24 24 -24s24 10.7451 24 24s-10.7451 24 -24 24s-24 -10.7451 -24 -24z\" />\n    <glyph glyph-name=\"copy\" unicode=\"&#xf0c5;\" horiz-adv-x=\"448\" \nd=\"M433.941 382.059c7.75977 -7.75977 14.0586 -22.9658 14.0586 -33.9404v-268.118c0 -26.5098 -21.4902 -48 -48 -48h-80v-48c0 -26.5098 -21.4902 -48 -48 -48h-224c-26.5098 0 -48 21.4902 -48 48v320c0 26.5098 21.4902 48 48 48h80v48c0 26.5098 21.4902 48 48 48\nh172.118c10.9746 0 26.1807 -6.29883 33.9404 -14.0586zM266 -16c3.31152 0 6 2.68848 6 6v42h-96c-26.5098 0 -48 21.4902 -48 48v224h-74c-3.31152 0 -6 -2.68848 -6 -6v-308c0 -3.31152 2.68848 -6 6 -6h212zM394 80c3.31152 0 6 2.68848 6 6v202h-88\nc-13.2549 0 -24 10.7451 -24 24v88h-106c-3.31152 0 -6 -2.68848 -6 -6v-308c0 -3.31152 2.68848 -6 6 -6h212zM400 336v9.63184v0.000976562c0 1.37207 -0.787109 3.27246 -1.75684 4.24219l-48.3682 48.3682c-1.12598 1.125 -2.65234 1.75684 -4.24316 1.75684h-9.63184\nv-64h64z\" />\n    <glyph glyph-name=\"save\" unicode=\"&#xf0c7;\" horiz-adv-x=\"448\" \nd=\"M433.941 318.059c7.75977 -7.75977 14.0586 -22.9658 14.0586 -33.9404v-268.118c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h268.118c10.9746 0 26.1807 -6.29883 33.9404 -14.0586zM272 368h-128v-80h128v80\nzM394 16c3.31152 0 6 2.68848 6 6v259.632v0.000976562c0 1.37207 -0.787109 3.27246 -1.75684 4.24219l-78.2432 78.2432v-100.118c0 -13.2549 -10.7451 -24 -24 -24h-176c-13.2549 0 -24 10.7451 -24 24v104h-42c-3.31152 0 -6 -2.68848 -6 -6v-340\nc0 -3.31152 2.68848 -6 6 -6h340zM224 216c48.5234 0 88 -39.4766 88 -88s-39.4766 -88 -88 -88s-88 39.4766 -88 88s39.4766 88 88 88zM224 88c22.0557 0 40 17.9443 40 40s-17.9443 40 -40 40s-40 -17.9443 -40 -40s17.9443 -40 40 -40z\" />\n    <glyph glyph-name=\"square\" unicode=\"&#xf0c8;\" horiz-adv-x=\"448\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM394 16c3.2998 0 6 2.7002 6 6v340c0 3.2998 -2.7002 6 -6 6h-340c-3.2998 0 -6 -2.7002 -6 -6v-340c0 -3.2998 2.7002 -6 6 -6h340z\" />\n    <glyph glyph-name=\"envelope\" unicode=\"&#xf0e0;\" \nd=\"M464 384c26.5098 0 48 -21.4902 48 -48v-288c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h416zM464 336h-416v-40.8047c22.4248 -18.2627 58.1797 -46.6602 134.587 -106.49\nc16.834 -13.2422 50.2051 -45.0762 73.4131 -44.7012c23.2119 -0.371094 56.5723 31.4541 73.4131 44.7012c76.4189 59.8389 112.165 88.2305 134.587 106.49v40.8047zM48 48h416v185.601c-22.915 -18.252 -55.4189 -43.8691 -104.947 -82.6523\nc-22.5439 -17.748 -60.3359 -55.1787 -103.053 -54.9473c-42.9277 -0.231445 -81.2051 37.75 -103.062 54.9551c-49.5293 38.7842 -82.0244 64.3945 -104.938 82.6455v-185.602z\" />\n    <glyph glyph-name=\"lightbulb\" unicode=\"&#xf0eb;\" horiz-adv-x=\"352\" \nd=\"M176 368c8.83984 0 16 -7.16016 16 -16s-7.16016 -16 -16 -16c-35.2803 0 -64 -28.7002 -64 -64c0 -8.83984 -7.16016 -16 -16 -16s-16 7.16016 -16 16c0 52.9404 43.0596 96 96 96zM96.0596 -11.1699l-0.0400391 43.1797h159.961l-0.0507812 -43.1797\nc-0.00976562 -3.13965 -0.939453 -6.21973 -2.67969 -8.83984l-24.5098 -36.8398c-2.95996 -4.45996 -7.95996 -7.14062 -13.3203 -7.14062h-78.8496c-5.35059 0 -10.3506 2.68066 -13.3203 7.14062l-24.5098 36.8398c-1.75 2.62012 -2.68066 5.68945 -2.68066 8.83984z\nM176 448c97.2002 0 176 -78.7998 176 -176c0 -44.3701 -16.4502 -84.8496 -43.5498 -115.79c-16.6406 -18.9795 -42.7402 -58.79 -52.4199 -92.1602v-0.0498047h-48v0.0996094c0.00390625 4.04199 0.999023 10.4482 2.21973 14.3008\nc5.67969 17.9893 22.9902 64.8496 62.0996 109.46c20.4102 23.29 31.6504 53.1699 31.6504 84.1396c0 70.5801 -57.4199 128 -128 128c-68.2803 0 -128.15 -54.3604 -127.95 -128c0.0898438 -30.9902 11.0703 -60.71 31.6104 -84.1396\nc39.3496 -44.9004 56.5801 -91.8604 62.1699 -109.67c1.42969 -4.56055 2.13965 -9.30078 2.15039 -14.0703v-0.120117h-48v0.0595703c-9.68066 33.3604 -35.7803 73.1709 -52.4209 92.1602c-27.1094 30.9307 -43.5596 71.4102 -43.5596 115.78\nc0 93.0303 73.7197 176 176 176z\" />\n    <glyph glyph-name=\"bell\" unicode=\"&#xf0f3;\" horiz-adv-x=\"448\" \nd=\"M439.39 85.71c6 -6.44043 8.66016 -14.1602 8.61035 -21.71c-0.0996094 -16.4004 -12.9805 -32 -32.0996 -32h-383.801c-19.1191 0 -31.9893 15.5996 -32.0996 32c-0.0498047 7.5498 2.61035 15.2598 8.61035 21.71c19.3193 20.7598 55.4697 51.9902 55.4697 154.29\nc0 77.7002 54.4795 139.9 127.939 155.16v20.8398c0 17.6699 14.3203 32 31.9805 32s31.9805 -14.3301 31.9805 -32v-20.8398c73.46 -15.2598 127.939 -77.46 127.939 -155.16c0 -102.3 36.1504 -133.53 55.4697 -154.29zM67.5303 80h312.939\nc-21.2197 27.96 -44.4199 74.3203 -44.5293 159.42c0 0.200195 0.0595703 0.379883 0.0595703 0.580078c0 61.8604 -50.1396 112 -112 112s-112 -50.1396 -112 -112c0 -0.200195 0.0595703 -0.379883 0.0595703 -0.580078\nc-0.109375 -85.0898 -23.3096 -131.45 -44.5293 -159.42zM224 -64c-35.3203 0 -63.9697 28.6504 -63.9697 64h127.939c0 -35.3496 -28.6494 -64 -63.9697 -64z\" />\n    <glyph glyph-name=\"hospital\" unicode=\"&#xf0f8;\" horiz-adv-x=\"448\" \nd=\"M128 204v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12zM268 192c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40\nc0 -6.62695 -5.37305 -12 -12 -12h-40zM192 108c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40zM268 96c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40\nc6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-40zM448 -28v-36h-448v36c0 6.62695 5.37305 12 12 12h19.5v378.965c0 11.6172 10.7451 21.0352 24 21.0352h88.5v40c0 13.2549 10.7451 24 24 24h112c13.2549 0 24 -10.7451 24 -24v-40h88.5\nc13.2549 0 24 -9.41797 24 -21.0352v-378.965h19.5c6.62695 0 12 -5.37305 12 -12zM79.5 -15h112.5v67c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-67h112.5v351h-64.5v-24c0 -13.2549 -10.7451 -24 -24 -24h-112c-13.2549 0 -24 10.7451 -24 24v24\nh-64.5v-351zM266 384h-26v26c0 3.31152 -2.68848 6 -6 6h-20c-3.31152 0 -6 -2.68848 -6 -6v-26h-26c-3.31152 0 -6 -2.68848 -6 -6v-20c0 -3.31152 2.68848 -6 6 -6h26v-26c0 -3.31152 2.68848 -6 6 -6h20c3.31152 0 6 2.68848 6 6v26h26c3.31152 0 6 2.68848 6 6v20\nc0 3.31152 -2.68848 6 -6 6z\" />\n    <glyph glyph-name=\"plus-square\" unicode=\"&#xf0fe;\" horiz-adv-x=\"448\" \nd=\"M352 208v-32c0 -6.59961 -5.40039 -12 -12 -12h-88v-88c0 -6.59961 -5.40039 -12 -12 -12h-32c-6.59961 0 -12 5.40039 -12 12v88h-88c-6.59961 0 -12 5.40039 -12 12v32c0 6.59961 5.40039 12 12 12h88v88c0 6.59961 5.40039 12 12 12h32c6.59961 0 12 -5.40039 12 -12\nv-88h88c6.59961 0 12 -5.40039 12 -12zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM400 22v340c0 3.2998 -2.7002 6 -6 6h-340c-3.2998 0 -6 -2.7002 -6 -6v-340\nc0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z\" />\n    <glyph glyph-name=\"circle\" unicode=\"&#xf111;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM256 -8c110.5 0 200 89.5 200 200s-89.5 200 -200 200s-200 -89.5 -200 -200s89.5 -200 200 -200z\" />\n    <glyph glyph-name=\"smile\" unicode=\"&#xf118;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM168 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32\ns32 -14.2998 32 -32s-14.2998 -32 -32 -32zM328 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32zM332 135.4c8.5 10.1992 23.7002 11.5 33.7998 3.09961c10.2002 -8.5 11.6006 -23.5996 3.10059 -33.7998\nc-30 -36 -74.1006 -56.6006 -120.9 -56.6006s-90.9004 20.6006 -120.9 56.6006c-8.39941 10.2002 -7.09961 25.2998 3.10059 33.7998c10.0996 8.40039 25.2998 7.09961 33.7998 -3.09961c20.7998 -25.1006 51.5 -39.4004 84 -39.4004s63.2002 14.4004 84 39.4004z\" />\n    <glyph glyph-name=\"frown\" unicode=\"&#xf119;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM168 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32\ns32 -14.2998 32 -32s-14.2998 -32 -32 -32zM328 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32zM248 144c40.2002 0 78 -17.7002 103.8 -48.5996c8.40039 -10.2002 7.10059 -25.3008 -3.09961 -33.8008\nc-10.7002 -8.7998 -25.7002 -6.59961 -33.7998 3.10059c-16.6006 20 -41 31.3994 -66.9004 31.3994s-50.2998 -11.5 -66.9004 -31.3994c-8.5 -10.2002 -23.5996 -11.5 -33.7998 -3.10059c-10.2002 8.5 -11.5996 23.6006 -3.09961 33.8008\nc25.7998 30.8994 63.5996 48.5996 103.8 48.5996z\" />\n    <glyph glyph-name=\"meh\" unicode=\"&#xf11a;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM168 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32\ns32 -14.2998 32 -32s-14.2998 -32 -32 -32zM328 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32zM336 128c13.2002 0 24 -10.7998 24 -24s-10.7998 -24 -24 -24h-176c-13.2002 0 -24 10.7998 -24 24s10.7998 24 24 24h176z\n\" />\n    <glyph glyph-name=\"keyboard\" unicode=\"&#xf11c;\" horiz-adv-x=\"576\" \nd=\"M528 384c26.5098 0 48 -21.4902 48 -48v-288c0 -26.5098 -21.4902 -48 -48 -48h-480c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h480zM536 48v288c0 4.41113 -3.58887 8 -8 8h-480c-4.41113 0 -8 -3.58887 -8 -8v-288c0 -4.41113 3.58887 -8 8 -8\nh480c4.41113 0 8 3.58887 8 8zM170 178c0 -6.62695 -5.37305 -12 -12 -12h-28c-6.62695 0 -12 5.37305 -12 12v28c0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM266 178c0 -6.62695 -5.37305 -12 -12 -12h-28c-6.62695 0 -12 5.37305 -12 12v28\nc0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM362 178c0 -6.62695 -5.37305 -12 -12 -12h-28c-6.62695 0 -12 5.37305 -12 12v28c0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM458 178c0 -6.62695 -5.37305 -12 -12 -12h-28\nc-6.62695 0 -12 5.37305 -12 12v28c0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM122 96c0 -6.62695 -5.37305 -12 -12 -12h-28c-6.62695 0 -12 5.37305 -12 12v28c0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM506 96\nc0 -6.62695 -5.37305 -12 -12 -12h-28c-6.62695 0 -12 5.37305 -12 12v28c0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM122 260c0 -6.62695 -5.37305 -12 -12 -12h-28c-6.62695 0 -12 5.37305 -12 12v28c0 6.62695 5.37305 12 12 12h28\nc6.62695 0 12 -5.37305 12 -12v-28zM218 260c0 -6.62695 -5.37305 -12 -12 -12h-28c-6.62695 0 -12 5.37305 -12 12v28c0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM314 260c0 -6.62695 -5.37305 -12 -12 -12h-28c-6.62695 0 -12 5.37305 -12 12v28\nc0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM410 260c0 -6.62695 -5.37305 -12 -12 -12h-28c-6.62695 0 -12 5.37305 -12 12v28c0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM506 260c0 -6.62695 -5.37305 -12 -12 -12h-28\nc-6.62695 0 -12 5.37305 -12 12v28c0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM408 102c0 -6.62695 -5.37305 -12 -12 -12h-216c-6.62695 0 -12 5.37305 -12 12v16c0 6.62695 5.37305 12 12 12h216c6.62695 0 12 -5.37305 12 -12v-16z\" />\n    <glyph glyph-name=\"calendar\" unicode=\"&#xf133;\" horiz-adv-x=\"448\" \nd=\"M400 384c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h48v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h128v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12\nv-52h48zM394 -16c3.2998 0 6 2.7002 6 6v298h-352v-298c0 -3.2998 2.7002 -6 6 -6h340z\" />\n    <glyph glyph-name=\"play-circle\" unicode=\"&#xf144;\" \nd=\"M371.7 210c16.3994 -9.2002 16.3994 -32.9004 0 -42l-176 -101c-15.9004 -8.7998 -35.7002 2.59961 -35.7002 21v208c0 18.5 19.9004 29.7998 35.7002 21zM504 192c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248s248 -111 248 -248zM56 192\nc0 -110.5 89.5 -200 200 -200s200 89.5 200 200s-89.5 200 -200 200s-200 -89.5 -200 -200z\" />\n    <glyph glyph-name=\"minus-square\" unicode=\"&#xf146;\" horiz-adv-x=\"448\" \nd=\"M108 164c-6.59961 0 -12 5.40039 -12 12v32c0 6.59961 5.40039 12 12 12h232c6.59961 0 12 -5.40039 12 -12v-32c0 -6.59961 -5.40039 -12 -12 -12h-232zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352\nc26.5 0 48 -21.5 48 -48zM400 22v340c0 3.2998 -2.7002 6 -6 6h-340c-3.2998 0 -6 -2.7002 -6 -6v-340c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z\" />\n    <glyph glyph-name=\"check-square\" unicode=\"&#xf14a;\" horiz-adv-x=\"448\" \nd=\"M400 416c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h352zM400 16v352h-352v-352h352zM364.136 257.724l-172.589 -171.204\nc-4.70508 -4.66699 -12.3027 -4.63672 -16.9697 0.0683594l-90.7812 91.5156c-4.66699 4.70508 -4.63672 12.3037 0.0693359 16.9717l22.7188 22.5361c4.70508 4.66699 12.3027 4.63672 16.9697 -0.0693359l59.792 -60.2773l141.353 140.217\nc4.70508 4.66699 12.3027 4.63672 16.9697 -0.0683594l22.5361 -22.7178c4.66699 -4.70605 4.63672 -12.3047 -0.0683594 -16.9717z\" />\n    <glyph glyph-name=\"share-square\" unicode=\"&#xf14d;\" horiz-adv-x=\"576\" \nd=\"M561.938 289.94c18.75 -18.7402 18.75 -49.1406 0 -67.8809l-143.998 -144c-29.9727 -29.9727 -81.9404 -9.05273 -81.9404 33.9404v53.7998c-101.266 -7.83691 -99.625 -31.6406 -84.1104 -78.7598c14.2285 -43.0889 -33.4736 -79.248 -71.0195 -55.7402\nc-51.6924 32.3057 -84.8701 83.0635 -84.8701 144.76c0 39.3408 12.2197 72.7402 36.3301 99.3008c19.8398 21.8398 47.7402 38.4697 82.9102 49.4199c36.7295 11.4395 78.3096 16.1094 120.76 17.9893v57.1982c0 42.9355 51.9258 63.9541 81.9404 33.9404zM384 112l144 144\nl-144 144v-104.09c-110.86 -0.90332 -240 -10.5166 -240 -119.851c0 -52.1396 32.79 -85.6094 62.3096 -104.06c-39.8174 120.65 48.999 141.918 177.69 143.84v-103.84zM408.74 27.5068c6.14844 1.75684 15.5449 5.92383 20.9736 9.30273\nc7.97656 4.95215 18.2861 -0.825195 18.2861 -10.2139v-42.5957c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h132c6.62695 0 12 -5.37305 12 -12v-4.48633c0 -4.91699 -2.9873 -9.36914 -7.56934 -11.1514\nc-13.7021 -5.33105 -26.3955 -11.5371 -38.0498 -18.585c-1.59668 -0.974609 -4.41016 -1.77051 -6.28027 -1.77734h-86.1006c-3.31152 0 -6 -2.68848 -6 -6v-340c0 -3.31152 2.68848 -6 6 -6h340c3.31152 0 6 2.68848 6 6v25.9658c0 5.37012 3.5791 10.0596 8.74023 11.541\nz\" />\n    <glyph glyph-name=\"compass\" unicode=\"&#xf14e;\" horiz-adv-x=\"496\" \nd=\"M347.94 318.14c16.6592 7.61035 33.8096 -9.54004 26.1992 -26.1992l-65.9697 -144.341c-2.73047 -5.97363 -9.7959 -13.0391 -15.7695 -15.7695l-144.341 -65.9697c-16.6592 -7.61035 -33.8096 9.5498 -26.1992 26.1992l65.9697 144.341\nc2.73047 5.97363 9.7959 13.0391 15.7695 15.7695zM270.58 169.42c12.4697 12.4697 12.4697 32.6904 0 45.1602s-32.6904 12.4697 -45.1602 0s-12.4697 -32.6904 0 -45.1602s32.6904 -12.4697 45.1602 0zM248 440c136.97 0 248 -111.03 248 -248s-111.03 -248 -248 -248\ns-248 111.03 -248 248s111.03 248 248 248zM248 -8c110.28 0 200 89.7197 200 200s-89.7197 200 -200 200s-200 -89.7197 -200 -200s89.7197 -200 200 -200z\" />\n    <glyph glyph-name=\"caret-square-down\" unicode=\"&#xf150;\" horiz-adv-x=\"448\" \nd=\"M125.1 240h197.801c10.6992 0 16.0996 -13 8.5 -20.5l-98.9004 -98.2998c-4.7002 -4.7002 -12.2002 -4.7002 -16.9004 0l-98.8994 98.2998c-7.7002 7.5 -2.2998 20.5 8.39941 20.5zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352\nc0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM400 22v340c0 3.2998 -2.7002 6 -6 6h-340c-3.2998 0 -6 -2.7002 -6 -6v-340c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z\" />\n    <glyph glyph-name=\"caret-square-up\" unicode=\"&#xf151;\" horiz-adv-x=\"448\" \nd=\"M322.9 144h-197.801c-10.6992 0 -16.0996 13 -8.5 20.5l98.9004 98.2998c4.7002 4.7002 12.2002 4.7002 16.9004 0l98.8994 -98.2998c7.7002 -7.5 2.2998 -20.5 -8.39941 -20.5zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352\nc0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM400 22v340c0 3.2998 -2.7002 6 -6 6h-340c-3.2998 0 -6 -2.7002 -6 -6v-340c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z\" />\n    <glyph glyph-name=\"caret-square-right\" unicode=\"&#xf152;\" horiz-adv-x=\"448\" \nd=\"M176 93.0996v197.801c0 10.6992 13 16.0996 20.5 8.5l98.2998 -98.9004c4.7002 -4.7002 4.7002 -12.2002 0 -16.9004l-98.2998 -98.8994c-7.5 -7.7002 -20.5 -2.2998 -20.5 8.39941zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352\nc0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM400 22v340c0 3.2998 -2.7002 6 -6 6h-340c-3.2998 0 -6 -2.7002 -6 -6v-340c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z\" />\n    <glyph glyph-name=\"file\" unicode=\"&#xf15b;\" horiz-adv-x=\"384\" \nd=\"M369.9 350.1c9 -9 14.0996 -21.2998 14.0996 -34v-332.1c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48.0996h204.1c12.7002 0 24.9004 -5.09961 33.9004 -14.0996zM332.1 320l-76.0996 76.0996v-76.0996h76.0996zM48 -16h288v288\nh-104c-13.2998 0 -24 10.7002 -24 24v104h-160v-416z\" />\n    <glyph glyph-name=\"file-alt\" unicode=\"&#xf15c;\" horiz-adv-x=\"384\" \nd=\"M288 200v-28c0 -6.59961 -5.40039 -12 -12 -12h-168c-6.59961 0 -12 5.40039 -12 12v28c0 6.59961 5.40039 12 12 12h168c6.59961 0 12 -5.40039 12 -12zM276 128c6.59961 0 12 -5.40039 12 -12v-28c0 -6.59961 -5.40039 -12 -12 -12h-168c-6.59961 0 -12 5.40039 -12 12\nv28c0 6.59961 5.40039 12 12 12h168zM384 316.1v-332.1c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48h204.1c12.7002 0 24.9004 -5.09961 33.9004 -14.0996l83.9004 -83.9004c9 -8.90039 14.0996 -21.2002 14.0996 -33.9004z\nM256 396.1v-76.0996h76.0996zM336 -16v288h-104c-13.2998 0 -24 10.7002 -24 24v104h-160v-416h288z\" />\n    <glyph glyph-name=\"thumbs-up\" unicode=\"&#xf164;\" \nd=\"M466.27 161.31c4.6748 -22.6465 0.864258 -44.5371 -8.98926 -62.9893c2.95898 -23.8682 -4.02148 -48.5654 -17.3398 -66.9902c-0.954102 -55.9072 -35.8232 -95.3301 -112.94 -95.3301c-7 0 -15 0.00976562 -22.2197 0.00976562\nc-102.742 0 -133.293 38.9395 -177.803 39.9404c-3.56934 -13.7764 -16.085 -23.9502 -30.9775 -23.9502h-64c-17.6729 0 -32 14.3271 -32 32v240c0 17.6729 14.3271 32 32 32h98.7598c19.1455 16.9531 46.0137 60.6533 68.7598 83.4004\nc13.667 13.667 10.1533 108.6 71.7607 108.6c57.5801 0 95.2695 -31.9355 95.2695 -104.73c0 -18.4092 -3.92969 -33.7295 -8.84961 -46.5391h36.4795c48.6025 0 85.8203 -41.5654 85.8203 -85.5801c0 -19.1504 -4.95996 -34.9902 -13.7305 -49.8408zM404.52 107.48\nc21.5811 20.3838 18.6992 51.0645 5.21094 65.6191c9.44922 0 22.3594 18.9102 22.2695 37.8105c-0.0898438 18.9102 -16.71 37.8203 -37.8203 37.8203h-103.989c0 37.8193 28.3594 55.3691 28.3594 94.5391c0 23.75 0 56.7305 -47.2695 56.7305\nc-18.9102 -18.9102 -9.45996 -66.1797 -37.8203 -94.54c-26.5596 -26.5703 -66.1797 -97.46 -94.54 -97.46h-10.9199v-186.17c53.6113 0 100.001 -37.8203 171.64 -37.8203h37.8203c35.5117 0 60.8203 17.1201 53.1201 65.9004\nc15.2002 8.16016 26.5 36.4395 13.9395 57.5703zM88 16c0 13.2549 -10.7451 24 -24 24s-24 -10.7451 -24 -24s10.7451 -24 24 -24s24 10.7451 24 24z\" />\n    <glyph glyph-name=\"thumbs-down\" unicode=\"&#xf165;\" \nd=\"M466.27 222.69c8.77051 -14.8506 13.7305 -30.6904 13.7305 -49.8408c0 -44.0146 -37.2178 -85.5801 -85.8203 -85.5801h-36.4795c4.91992 -12.8096 8.84961 -28.1299 8.84961 -46.5391c0 -72.7949 -37.6895 -104.73 -95.2695 -104.73\nc-61.6074 0 -58.0938 94.9326 -71.7607 108.6c-22.7461 22.7471 -49.6133 66.4473 -68.7598 83.4004h-7.05176c-5.5332 -9.56152 -15.8662 -16 -27.708 -16h-64c-17.6729 0 -32 14.3271 -32 32v240c0 17.6729 14.3271 32 32 32h64c8.11328 0 15.5146 -3.02539 21.1553 -8\nh10.8447c40.9971 0 73.1953 39.9902 176.78 39.9902c7.21973 0 15.2197 0.00976562 22.2197 0.00976562c77.1172 0 111.986 -39.4229 112.94 -95.3301c13.3184 -18.4248 20.2979 -43.1221 17.3398 -66.9902c9.85352 -18.4521 13.6641 -40.3428 8.98926 -62.9893zM64 152\nc13.2549 0 24 10.7451 24 24s-10.7451 24 -24 24s-24 -10.7451 -24 -24s10.7451 -24 24 -24zM394.18 135.27c21.1104 0 37.7305 18.9102 37.8203 37.8203c0.0898438 18.9004 -12.8203 37.8105 -22.2695 37.8105c13.4883 14.5547 16.3701 45.2354 -5.21094 65.6191\nc12.5605 21.1309 1.26074 49.4102 -13.9395 57.5703c7.7002 48.7803 -17.6084 65.9004 -53.1201 65.9004h-37.8203c-71.6387 0 -118.028 -37.8203 -171.64 -37.8203v-186.17h10.9199c28.3604 0 67.9805 -70.8896 94.54 -97.46\nc28.3604 -28.3604 18.9102 -75.6299 37.8203 -94.54c47.2695 0 47.2695 32.9805 47.2695 56.7305c0 39.1699 -28.3594 56.7197 -28.3594 94.5391h103.989z\" />\n    <glyph glyph-name=\"sun\" unicode=\"&#xf185;\" \nd=\"M494.2 226.1c11.2002 -7.59961 17.7998 -20.0996 17.8994 -33.6992c0 -13.4004 -6.69922 -26 -17.7998 -33.5l-59.7998 -40.5l13.7002 -71c2.5 -13.2002 -1.60059 -26.8008 -11.1006 -36.3008s-22.8994 -13.7998 -36.2998 -11.0996l-70.8994 13.7002l-40.4004 -59.9004\nc-7.5 -11.0996 -20.0996 -17.7998 -33.5 -17.7998s-26 6.7002 -33.5 17.9004l-40.4004 59.8994l-70.7998 -13.7002c-13.3994 -2.59961 -26.7998 1.60059 -36.2998 11.1006s-13.7002 23.0996 -11.0996 36.2998l13.6992 71l-59.7998 40.5\nc-11.0996 7.5 -17.7998 20 -17.7998 33.5s6.59961 26 17.7998 33.5996l59.7998 40.5l-13.6992 71c-2.60059 13.2002 1.59961 26.7002 11.0996 36.3008c9.5 9.59961 23 13.6992 36.2998 11.1992l70.7998 -13.6992l40.4004 59.8994c15.0996 22.2998 51.9004 22.2998 67 0\nl40.4004 -59.8994l70.8994 13.6992c13 2.60059 26.6006 -1.59961 36.2002 -11.0996c9.5 -9.59961 13.7002 -23.2002 11.0996 -36.4004l-13.6992 -71zM381.3 140.5l76.7998 52.0996l-76.7998 52l17.6006 91.1006l-91 -17.6006l-51.9004 76.9004l-51.7998 -76.7998\nl-91 17.5996l17.5996 -91.2002l-76.7998 -52l76.7998 -52l-17.5996 -91.1992l90.8994 17.5996l51.9004 -77l51.9004 76.9004l91 -17.6006zM256 296c57.2998 0 104 -46.7002 104 -104s-46.7002 -104 -104 -104s-104 46.7002 -104 104s46.7002 104 104 104zM256 136\nc30.9004 0 56 25.0996 56 56s-25.0996 56 -56 56s-56 -25.0996 -56 -56s25.0996 -56 56 -56z\" />\n    <glyph glyph-name=\"moon\" unicode=\"&#xf186;\" \nd=\"M279.135 -64c-141.424 0 -256 114.64 -256 256c0 141.425 114.641 256 256 256c13.0068 -0.00195312 33.9443 -1.91797 46.7354 -4.27734c44.0205 -8.13086 53.7666 -66.8691 15.0215 -88.9189c-41.374 -23.5439 -67.4336 -67.4121 -67.4336 -115.836\nc0 -83.5234 75.9238 -146.475 158.272 -130.792c43.6904 8.32129 74.5186 -42.5693 46.248 -77.4004c-47.8613 -58.9717 -120.088 -94.7754 -198.844 -94.7754zM279.135 400c-114.875 0 -208 -93.125 -208 -208s93.125 -208 208 -208\nc65.2314 0 123.439 30.0361 161.575 77.0244c-111.611 -21.2568 -215.252 64.0957 -215.252 177.943c0 67.5127 36.9326 126.392 91.6934 157.555c-12.3271 2.27637 -25.0312 3.47754 -38.0166 3.47754z\" />\n    <glyph glyph-name=\"caret-square-left\" unicode=\"&#xf191;\" horiz-adv-x=\"448\" \nd=\"M272 290.9v-197.801c0 -10.6992 -13 -16.0996 -20.5 -8.5l-98.2998 98.9004c-4.7002 4.7002 -4.7002 12.2002 0 16.9004l98.2998 98.8994c7.5 7.7002 20.5 2.2998 20.5 -8.39941zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352\nc0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM400 22v340c0 3.2998 -2.7002 6 -6 6h-340c-3.2998 0 -6 -2.7002 -6 -6v-340c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z\" />\n    <glyph glyph-name=\"dot-circle\" unicode=\"&#xf192;\" \nd=\"M256 392c-110.549 0 -200 -89.4678 -200 -200c0 -110.549 89.4678 -200 200 -200c110.549 0 200 89.4678 200 200c0 110.549 -89.4678 200 -200 200zM256 440c136.967 0 248 -111.033 248 -248s-111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248z\nM256 272c44.1826 0 80 -35.8174 80 -80s-35.8174 -80 -80 -80s-80 35.8174 -80 80s35.8174 80 80 80z\" />\n    <glyph glyph-name=\"building\" unicode=\"&#xf1ad;\" horiz-adv-x=\"448\" \nd=\"M128 300v40c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12zM268 288c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40\nc0 -6.59961 -5.40039 -12 -12 -12h-40zM140 192c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-40zM268 192c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h40\nc6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-40zM192 108c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40zM268 96c-6.59961 0 -12 5.40039 -12 12v40\nc0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-40zM448 -28v-36h-448v36c0 6.59961 5.40039 12 12 12h19.5v440c0 13.2998 10.7002 24 24 24h337c13.2998 0 24 -10.7002 24 -24v-440h19.5\nc6.59961 0 12 -5.40039 12 -12zM79.5 -15h112.5v67c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-67h112.5v414l-288.5 1z\" />\n    <glyph glyph-name=\"file-pdf\" unicode=\"&#xf1c1;\" horiz-adv-x=\"384\" \nd=\"M369.9 350.1c9 -9 14.0996 -21.2998 14.0996 -34v-332.1c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48.0996h204.1c12.7002 0 24.9004 -5.09961 33.9004 -14.0996zM332.1 320l-76.0996 76.0996v-76.0996h76.0996zM48 -16h288v288\nh-104c-13.2998 0 -24 10.7002 -24 24v104h-160v-416zM298.2 127.7c10.5 -10.5 8 -38.7002 -17.5 -38.7002c-14.7998 0 -36.9004 6.7998 -55.7998 17c-21.6006 -3.59961 -46 -12.7002 -68.4004 -20.0996c-50.0996 -86.4004 -79.4004 -47 -76.0996 -31.2002\nc4 20 31 35.8994 51 46.2002c10.5 18.3994 25.3994 50.5 35.3994 74.3994c-7.39941 28.6006 -11.3994 51 -7 67.1006c4.7998 17.6992 38.4004 20.2998 42.6006 -5.90039c4.69922 -15.4004 -1.5 -39.9004 -5.40039 -56c8.09961 -21.2998 19.5996 -35.7998 36.7998 -46.2998\nc17.4004 2.2002 52.2002 5.5 64.4004 -6.5zM100.1 49.9004c0 -0.700195 11.4004 4.69922 30.4004 35c-5.90039 -5.5 -25.2998 -21.3008 -30.4004 -35zM181.7 240.5c-2.5 0 -2.60059 -26.9004 1.7998 -40.7998c4.90039 8.7002 5.59961 40.7998 -1.7998 40.7998zM157.3 103.9\nc15.9004 6.09961 34 14.8994 54.7998 19.1992c-11.1992 8.30078 -21.7998 20.4004 -30.0996 35.5c-6.7002 -17.6992 -15 -37.7998 -24.7002 -54.6992zM288.9 108.9c3.59961 2.39941 -2.2002 10.3994 -37.3008 7.7998c32.3008 -13.7998 37.3008 -7.7998 37.3008 -7.7998z\" />\n    <glyph glyph-name=\"file-word\" unicode=\"&#xf1c2;\" horiz-adv-x=\"384\" \nd=\"M369.9 350.1c9 -9 14.0996 -21.2998 14.0996 -34v-332.1c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48.0996h204.1c12.7002 0 24.9004 -5.09961 33.9004 -14.0996zM332.1 320l-76.0996 76.0996v-76.0996h76.0996zM48 -16h288v288\nh-104c-13.2998 0 -24 10.7002 -24 24v104h-160v-416zM268.1 192v0.200195h15.8008c7.7998 0 13.5 -7.2998 11.5996 -14.9004c-4.2998 -17 -13.7002 -54.0996 -34.5 -136c-1.2998 -5.39941 -6.09961 -9.09961 -11.5996 -9.09961h-24.7002\nc-5.5 0 -10.2998 3.7998 -11.6006 9.09961c-5.2998 20.9004 -17.7998 71 -17.8994 71.4004l-2.90039 17.2998c-0.5 -5.2998 -1.5 -11.0996 -3 -17.2998l-17.8994 -71.4004c-1.30078 -5.39941 -6.10059 -9.09961 -11.6006 -9.09961h-25.2002\nc-5.59961 0 -10.3994 3.7002 -11.6992 9.09961c-6.5 26.5 -25.2002 103.4 -33.2002 136c-1.7998 7.5 3.89941 14.7998 11.7002 14.7998h16.7998c5.7998 0 10.7002 -4.09961 11.7998 -9.69922c5 -25.7002 18.4004 -93.8008 19.0996 -99\nc0.300781 -1.7002 0.400391 -3.10059 0.5 -4.2002c0.800781 7.5 0.400391 4.7002 24.8008 103.7c1.39941 5.2998 6.19922 9.09961 11.6992 9.09961h13.3008c5.59961 0 10.3994 -3.7998 11.6992 -9.2002c23.9004 -99.7002 22.8008 -94.3994 23.6006 -99.5\nc0.299805 -1.7002 0.5 -3.09961 0.700195 -4.2998c0.599609 8.09961 0.399414 5.7998 21 103.5c1.09961 5.5 6 9.5 11.6992 9.5z\" />\n    <glyph glyph-name=\"file-excel\" unicode=\"&#xf1c3;\" horiz-adv-x=\"384\" \nd=\"M369.9 350.1c9 -9 14.0996 -21.2998 14.0996 -34v-332.1c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48.0996h204.1c12.7002 0 24.9004 -5.09961 33.9004 -14.0996zM332.1 320l-76.0996 76.0996v-76.0996h76.0996zM48 -16h288v288\nh-104c-13.2998 0 -24 10.7002 -24 24v104h-160v-416zM260 224c9.2002 0 15 -10 10.2998 -18c-16 -27.5 -45.5996 -76.9004 -46.2998 -78l46.4004 -78c4.59961 -8 -1.10059 -18 -10.4004 -18h-28.7998c-4.40039 0 -8.5 2.40039 -10.6006 6.2998\nc-22.6992 41.7998 -13.6992 27.5 -28.5996 57.7002c-5.59961 -12.7002 -6.90039 -17.7002 -28.5996 -57.7002c-2.10059 -3.89941 -6.10059 -6.2998 -10.5 -6.2998h-28.9004c-9.2998 0 -15.0996 10 -10.4004 18l46.3008 78l-46.3008 78c-4.59961 8 1.10059 18 10.4004 18\nh28.9004c4.39941 0 8.5 -2.40039 10.5996 -6.2998c21.7002 -40.4004 14.7002 -28.6006 28.5996 -57.7002c6.40039 15.2998 10.6006 24.5996 28.6006 57.7002c2.09961 3.89941 6.09961 6.2998 10.5 6.2998h28.7998z\" />\n    <glyph glyph-name=\"file-powerpoint\" unicode=\"&#xf1c4;\" horiz-adv-x=\"384\" \nd=\"M369.9 350.1c9 -9 14.0996 -21.2998 14.0996 -34v-332.1c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48.0996h204.1c12.7002 0 24.9004 -5.09961 33.9004 -14.0996zM332.1 320l-76.0996 76.0996v-76.0996h76.0996zM48 -16h288v288\nh-104c-13.2998 0 -24 10.7002 -24 24v104h-160v-416zM120 44v168c0 6.59961 5.40039 12 12 12h69.2002c36.7002 0 62.7998 -27 62.7998 -66.2998c0 -74.2998 -68.7002 -66.5 -95.5 -66.5v-47.2002c0 -6.59961 -5.40039 -12 -12 -12h-24.5c-6.59961 0 -12 5.40039 -12 12z\nM168.5 131.4h23c7.90039 0 13.9004 2.39941 18.0996 7.19922c8.5 9.80078 8.40039 28.5 0.100586 37.8008c-4.10059 4.59961 -9.90039 7 -17.4004 7h-23.8994v-52h0.0996094z\" />\n    <glyph glyph-name=\"file-image\" unicode=\"&#xf1c5;\" horiz-adv-x=\"384\" \nd=\"M369.9 350.1c9 -9 14.0996 -21.2998 14.0996 -34v-332.1c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48.0996h204.1c12.7002 0 24.9004 -5.09961 33.9004 -14.0996zM332.1 320l-76.0996 76.0996v-76.0996h76.0996zM48 -16h288v288\nh-104c-13.2998 0 -24 10.7002 -24 24v104h-160v-416zM80 32v64l39.5 39.5c4.7002 4.7002 12.2998 4.7002 17 0l39.5 -39.5l87.5 87.5c4.7002 4.7002 12.2998 4.7002 17 0l23.5 -23.5v-128h-224zM128 272c26.5 0 48 -21.5 48 -48s-21.5 -48 -48 -48s-48 21.5 -48 48\ns21.5 48 48 48z\" />\n    <glyph glyph-name=\"file-archive\" unicode=\"&#xf1c6;\" horiz-adv-x=\"384\" \nd=\"M128.3 288h32v-32h-32v32zM192.3 384v-32h-32v32h32zM128.3 352h32v-32h-32v32zM192.3 320v-32h-32v32h32zM369.9 350.1c9 -9 14.0996 -21.2998 14.0996 -34v-332.1c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48.0996h204.1\nc12.7002 0 24.9004 -5.09961 33.9004 -14.0996zM256 396.1v-76.0996h76.0996zM336 -16v288h-104c-13.2998 0 -24 10.7002 -24 24v104h-48.2998v-16h-32v16h-79.7002v-416h288zM194.2 182.3l17.2998 -87.7002c6.40039 -32.3994 -18.4004 -62.5996 -51.5 -62.5996\nc-33.2002 0 -58 30.4004 -51.4004 62.9004l19.7002 97.0996v32h32v-32h22.1006c5.7998 0 10.6992 -4.09961 11.7998 -9.7002zM160.3 57.9004c17.9004 0 32.4004 12.0996 32.4004 27c0 14.8994 -14.5 27 -32.4004 27c-17.8994 0 -32.3994 -12.1006 -32.3994 -27\nc0 -14.9004 14.5 -27 32.3994 -27zM192.3 256v-32h-32v32h32z\" />\n    <glyph glyph-name=\"file-audio\" unicode=\"&#xf1c7;\" horiz-adv-x=\"384\" \nd=\"M369.941 350.059c7.75977 -7.75977 14.0586 -22.9658 14.0586 -33.9404v-332.118c0 -26.5098 -21.4902 -48 -48 -48h-288c-26.5098 0 -48 21.4902 -48 48v416c0 26.5098 21.4902 48 48 48h204.118c10.9746 0 26.1807 -6.29883 33.9404 -14.0586zM332.118 320\nl-76.1182 76.1182v-76.1182h76.1182zM48 -16h288v288h-104c-13.2549 0 -24 10.7451 -24 24v104h-160v-416zM192 60.0244c0 -10.6914 -12.9258 -16.0459 -20.4854 -8.48535l-35.5146 35.9746h-28c-6.62695 0 -12 5.37305 -12 12v56c0 6.62695 5.37305 12 12 12h28\nl35.5146 36.9473c7.56055 7.56055 20.4854 2.20605 20.4854 -8.48535v-135.951zM233.201 107.154c9.05078 9.29688 9.05957 24.1328 0.000976562 33.4385c-22.1494 22.752 12.2344 56.2461 34.3945 33.4814c27.1982 -27.9404 27.2119 -72.4443 0.000976562 -100.401\nc-21.793 -22.3857 -56.9463 10.3154 -34.3965 33.4814z\" />\n    <glyph glyph-name=\"file-video\" unicode=\"&#xf1c8;\" horiz-adv-x=\"384\" \nd=\"M369.941 350.059c7.75977 -7.75977 14.0586 -22.9658 14.0586 -33.9404v-332.118c0 -26.5098 -21.4902 -48 -48 -48h-288c-26.5098 0 -48 21.4902 -48 48v416c0 26.5098 21.4902 48 48 48h204.118c10.9746 0 26.1807 -6.29883 33.9404 -14.0586zM332.118 320\nl-76.1182 76.1182v-76.1182h76.1182zM48 -16h288v288h-104c-13.2549 0 -24 10.7451 -24 24v104h-160v-416zM276.687 195.303c10.0049 10.0049 27.3135 2.99707 27.3135 -11.3135v-111.976c0 -14.2939 -17.2959 -21.332 -27.3135 -11.3135l-52.6865 52.6738v-37.374\nc0 -11.0459 -8.9541 -20 -20 -20h-104c-11.0459 0 -20 8.9541 -20 20v104c0 11.0459 8.9541 20 20 20h104c11.0459 0 20 -8.9541 20 -20v-37.374z\" />\n    <glyph glyph-name=\"file-code\" unicode=\"&#xf1c9;\" horiz-adv-x=\"384\" \nd=\"M149.9 98.9004c3.5 -3.30078 3.69922 -8.90039 0.399414 -12.4004l-17.3994 -18.5996c-1.60059 -1.80078 -4 -2.80078 -6.40039 -2.80078c-2.2002 0 -4.40039 0.900391 -6 2.40039l-57.7002 54.0996c-3.7002 3.40039 -3.7002 9.30078 0 12.8008l57.7002 54.0996\nc3.40039 3.2998 9 3.2002 12.4004 -0.400391l17.3994 -18.5996l0.200195 -0.200195c3.2002 -3.59961 2.7998 -9.2002 -0.799805 -12.3994l-32.7998 -28.9004l32.7998 -28.9004zM369.9 350.1c9 -9 14.0996 -21.2998 14.0996 -34v-332.1c0 -26.5 -21.5 -48 -48 -48h-288\nc-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48.0996h204.1c12.7002 0 24.9004 -5.09961 33.9004 -14.0996zM256 396.1v-76.0996h76.0996zM336 -16v288h-104c-13.2998 0 -24 10.7002 -24 24v104h-160v-416h288zM209.6 234l24.4004 -7\nc4.7002 -1.2998 7.40039 -6.2002 6 -10.9004l-54.7002 -188.199c-1.2998 -4.60059 -6.2002 -7.40039 -10.8994 -6l-24.4004 7.09961c-4.7002 1.2998 -7.40039 6.2002 -6 10.9004l54.7002 188.1c1.39941 4.7002 6.2002 7.40039 10.8994 6zM234.1 157.1\nc-3.5 3.30078 -3.69922 8.90039 -0.399414 12.4004l17.3994 18.5996c3.30078 3.60059 8.90039 3.7002 12.4004 0.400391l57.7002 -54.0996c3.7002 -3.40039 3.7002 -9.30078 0 -12.8008l-57.7002 -54.0996c-3.5 -3.2998 -9.09961 -3.09961 -12.4004 0.400391\nl-17.3994 18.5996l-0.200195 0.200195c-3.2002 3.59961 -2.7998 9.2002 0.799805 12.3994l32.7998 28.9004l-32.7998 28.9004z\" />\n    <glyph glyph-name=\"life-ring\" unicode=\"&#xf1cd;\" \nd=\"M256 -56c-136.967 0 -248 111.033 -248 248s111.033 248 248 248s248 -111.033 248 -248s-111.033 -248 -248 -248zM152.602 20.7197c63.2178 -38.3184 143.579 -38.3184 206.797 0l-53.4111 53.4111c-31.8467 -13.5215 -68.168 -13.5059 -99.9746 0zM336 192\nc0 44.1123 -35.8877 80 -80 80s-80 -35.8877 -80 -80s35.8877 -80 80 -80s80 35.8877 80 80zM427.28 88.6016c38.3184 63.2178 38.3184 143.579 0 206.797l-53.4111 -53.4111c13.5215 -31.8467 13.5049 -68.168 0 -99.9746zM359.397 363.28\nc-63.2168 38.3184 -143.578 38.3184 -206.796 0l53.4111 -53.4111c31.8457 13.5215 68.167 13.5049 99.9736 0zM84.7197 295.398c-38.3184 -63.2178 -38.3184 -143.579 0 -206.797l53.4111 53.4111c-13.5215 31.8467 -13.5059 68.168 0 99.9746z\" />\n    <glyph glyph-name=\"paper-plane\" unicode=\"&#xf1d8;\" \nd=\"M440 441.5c34.5996 19.9004 77.5996 -8.7998 71.5 -48.9004l-59.4004 -387.199c-2.2998 -14.5 -11.0996 -27.3008 -23.8994 -34.5c-7.2998 -4.10059 -15.4004 -6.2002 -23.6006 -6.2002c-6.19922 0 -12.3994 1.2002 -18.2998 3.59961l-111.899 46.2002l-43.8008 -59.0996\nc-27.3994 -36.9004 -86.5996 -17.8008 -86.5996 28.5996v84.4004l-114.3 47.2998c-36.7998 15.0996 -40.1006 66 -5.7002 85.8994zM192 -16l36.5996 49.5l-36.5996 15.0996v-64.5996zM404.6 12.7002l59.4004 387.3l-416 -240l107.8 -44.5996l211.5 184.3\nc14.2002 12.2998 34.4004 -5.7002 23.7002 -21.2002l-140.2 -202.3z\" />\n    <glyph glyph-name=\"futbol\" unicode=\"&#xf1e3;\" horiz-adv-x=\"496\" \nd=\"M483.8 268.6c42.2998 -130.199 -29 -270.1 -159.2 -312.399c-25.5 -8.2998 -51.2998 -12.2002 -76.6992 -12.2002c-104.5 0 -201.7 66.5996 -235.7 171.4c-42.2998 130.199 29 270.1 159.2 312.399c25.5 8.2998 51.2998 12.2002 76.6992 12.2002\nc104.5 0 201.7 -66.5996 235.7 -171.4zM409.3 74.9004c6.10059 8.39941 12.1006 16.8994 16.7998 26.1992c14.3008 28.1006 21.5 58.5 21.7002 89.2002l-38.8994 36.4004l-71.1006 -22.1006l-24.3994 -75.1992l43.6992 -60.9004zM409.3 310.3\nc-24.5 33.4004 -58.7002 58.4004 -97.8994 71.4004l-47.4004 -26.2002v-73.7998l64.2002 -46.5l70.7002 22zM184.9 381.6c-39.9004 -13.2998 -73.5 -38.5 -97.8008 -71.8994l10.1006 -52.5l70.5996 -22l64.2002 46.5v73.7998zM139 68.5l43.5 61.7002l-24.2998 74.2998\nl-71.1006 22.2002l-39 -36.4004c0.5 -55.7002 23.4004 -95.2002 37.8008 -115.3zM187.2 1.5c64.0996 -20.4004 115.5 -1.7998 121.7 0l22.3994 48.0996l-44.2998 61.7002h-78.5996l-43.6006 -61.7002z\" />\n    <glyph glyph-name=\"newspaper\" unicode=\"&#xf1ea;\" horiz-adv-x=\"576\" \nd=\"M552 384c13.2549 0 24 -10.7451 24 -24v-336c0 -13.2549 -10.7451 -24 -24 -24h-496c-30.9277 0 -56 25.0723 -56 56v272c0 13.2549 10.7451 24 24 24h42.752c6.60547 18.623 24.3896 32 45.248 32h440zM48 56c0 -4.41113 3.58887 -8 8 -8s8 3.58887 8 8v248h-16v-248z\nM528 48v288h-416v-280c0 -2.7168 -0.204102 -5.38574 -0.578125 -8h416.578zM172 168c-6.62695 0 -12 5.37305 -12 12v96c0 6.62695 5.37305 12 12 12h136c6.62695 0 12 -5.37305 12 -12v-96c0 -6.62695 -5.37305 -12 -12 -12h-136zM200 248v-40h80v40h-80zM160 108v24\nc0 6.62695 5.37305 12 12 12h136c6.62695 0 12 -5.37305 12 -12v-24c0 -6.62695 -5.37305 -12 -12 -12h-136c-6.62695 0 -12 5.37305 -12 12zM352 108v24c0 6.62695 5.37305 12 12 12h104c6.62695 0 12 -5.37305 12 -12v-24c0 -6.62695 -5.37305 -12 -12 -12h-104\nc-6.62695 0 -12 5.37305 -12 12zM352 252v24c0 6.62695 5.37305 12 12 12h104c6.62695 0 12 -5.37305 12 -12v-24c0 -6.62695 -5.37305 -12 -12 -12h-104c-6.62695 0 -12 5.37305 -12 12zM352 180v24c0 6.62695 5.37305 12 12 12h104c6.62695 0 12 -5.37305 12 -12v-24\nc0 -6.62695 -5.37305 -12 -12 -12h-104c-6.62695 0 -12 5.37305 -12 12z\" />\n    <glyph glyph-name=\"bell-slash\" unicode=\"&#xf1f6;\" horiz-adv-x=\"640\" \nd=\"M633.99 -23.0195c6.91016 -5.52051 8.01953 -15.5908 2.5 -22.4902l-10 -12.4902c-5.53027 -6.88965 -15.5898 -8.00977 -22.4902 -2.49023l-598 467.51c-6.90039 5.52051 -8.01953 15.5908 -2.49023 22.4902l10 12.4902\nc5.52051 6.90039 15.5898 8.00977 22.4902 2.49023zM163.53 80h182.84l61.3994 -48h-279.659c-19.1201 0 -31.9902 15.5996 -32.1006 32c-0.0498047 7.5498 2.61035 15.2598 8.61035 21.71c18.3701 19.7402 51.5703 49.6904 54.8398 140.42l45.4697 -35.5498\nc-6.91992 -54.7803 -24.6895 -88.5498 -41.3994 -110.58zM320 352c-23.3496 0 -45 -7.17969 -62.9404 -19.4004l-38.1699 29.8408c19.6807 15.7793 43.1104 27.3096 69.1299 32.7197v20.8398c0 17.6699 14.3203 32 31.9805 32s31.9805 -14.3301 31.9805 -32v-20.8398\nc73.46 -15.2598 127.939 -77.46 127.939 -155.16c0 -41.3604 6.03027 -70.7197 14.3398 -92.8496l-59.5293 46.54c-1.63086 13.96 -2.77051 28.8896 -2.79004 45.7295c0 0.200195 0.0595703 0.379883 0.0595703 0.580078c0 61.8604 -50.1396 112 -112 112zM320 -64\nc-35.3203 0 -63.9697 28.6504 -63.9697 64h127.939c0 -35.3496 -28.6494 -64 -63.9697 -64z\" />\n    <glyph glyph-name=\"copyright\" unicode=\"&#xf1f9;\" \nd=\"M256 440c136.967 0 248 -111.033 248 -248s-111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248zM256 -8c110.549 0 200 89.4678 200 200c0 110.549 -89.4678 200 -200 200c-110.549 0 -200 -89.4688 -200 -200c0 -110.549 89.4678 -200 200 -200z\nM363.351 93.0645c-9.61328 -9.71289 -45.5293 -41.3965 -104.064 -41.3965c-82.4297 0 -140.484 61.4248 -140.484 141.567c0 79.1514 60.2754 139.4 139.763 139.4c55.5303 0 88.7373 -26.6201 97.5928 -34.7783c2.13379 -1.96289 3.86523 -5.9082 3.86523 -8.80762\nc0 -1.95508 -0.864258 -4.87402 -1.92969 -6.51465l-18.1543 -28.1133c-3.8418 -5.9502 -11.9668 -7.28223 -17.499 -2.9209c-8.5957 6.77637 -31.8145 22.5381 -61.708 22.5381c-48.3037 0 -77.916 -35.3301 -77.916 -80.082c0 -41.5889 26.8877 -83.6924 78.2764 -83.6924\nc32.6572 0 56.8428 19.0391 65.7266 27.2256c5.26953 4.85645 13.5957 4.03906 17.8193 -1.73828l19.8652 -27.1699c1.28613 -1.74512 2.33008 -4.91992 2.33008 -7.08789c0 -2.72363 -1.56055 -6.5 -3.48242 -8.42969z\" />\n    <glyph glyph-name=\"closed-captioning\" unicode=\"&#xf20a;\" \nd=\"M464 384c26.5 0 48 -21.5 48 -48v-288c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v288c0 26.5 21.5 48 48 48h416zM458 48c3.2998 0 6 2.7002 6 6v276c0 3.2998 -2.7002 6 -6 6h-404c-3.2998 0 -6 -2.7002 -6 -6v-276c0 -3.2998 2.7002 -6 6 -6h404z\nM246.9 133.7c1.69922 -2.40039 1.5 -5.60059 -0.5 -7.7002c-53.6006 -56.7998 -172.801 -32.0996 -172.801 67.9004c0 97.2998 121.7 119.5 172.5 70.0996c2.10059 -2 2.5 -3.2002 1 -5.7002l-17.5 -30.5c-1.89941 -3.09961 -6.19922 -4 -9.09961 -1.7002\nc-40.7998 32 -94.5996 14.9004 -94.5996 -31.1992c0 -48 51 -70.5 92.1992 -32.6006c2.80078 2.5 7.10059 2.10059 9.2002 -0.899414zM437.3 133.7c1.7002 -2.40039 1.5 -5.60059 -0.5 -7.7002c-53.5996 -56.9004 -172.8 -32.0996 -172.8 67.9004\nc0 97.2998 121.7 119.5 172.5 70.0996c2.09961 -2 2.5 -3.2002 1 -5.7002l-17.5 -30.5c-1.90039 -3.09961 -6.2002 -4 -9.09961 -1.7002c-40.8008 32 -94.6006 14.9004 -94.6006 -31.1992c0 -48 51 -70.5 92.2002 -32.6006c2.7998 2.5 7.09961 2.10059 9.2002 -0.899414z\n\" />\n    <glyph glyph-name=\"object-group\" unicode=\"&#xf247;\" \nd=\"M500 320h-12v-256h12c6.62695 0 12 -5.37305 12 -12v-72c0 -6.62695 -5.37305 -12 -12 -12h-72c-6.62695 0 -12 5.37305 -12 12v12h-320v-12c0 -6.62695 -5.37305 -12 -12 -12h-72c-6.62695 0 -12 5.37305 -12 12v72c0 6.62695 5.37305 12 12 12h12v256h-12\nc-6.62695 0 -12 5.37305 -12 12v72c0 6.62695 5.37305 12 12 12h72c6.62695 0 12 -5.37305 12 -12v-12h320v12c0 6.62695 5.37305 12 12 12h72c6.62695 0 12 -5.37305 12 -12v-72c0 -6.62695 -5.37305 -12 -12 -12zM448 384v-32h32v32h-32zM32 384v-32h32v32h-32zM64 0v32\nh-32v-32h32zM480 0v32h-32v-32h32zM440 64v256h-12c-6.62695 0 -12 5.37305 -12 12v12h-320v-12c0 -6.62695 -5.37305 -12 -12 -12h-12v-256h12c6.62695 0 12 -5.37305 12 -12v-12h320v12c0 6.62695 5.37305 12 12 12h12zM404 256c6.62695 0 12 -5.37207 12 -12v-168\nc0 -6.62793 -5.37305 -12 -12 -12h-200c-6.62695 0 -12 5.37207 -12 12v52h-84c-6.62695 0 -12 5.37207 -12 12v168c0 6.62793 5.37305 12 12 12h200c6.62695 0 12 -5.37207 12 -12v-52h84zM136 280v-112h144v112h-144zM376 104v112h-56v-76\nc0 -6.62793 -5.37305 -12 -12 -12h-76v-24h144z\" />\n    <glyph glyph-name=\"object-ungroup\" unicode=\"&#xf248;\" horiz-adv-x=\"576\" \nd=\"M564 224h-12v-160h12c6.62695 0 12 -5.37305 12 -12v-72c0 -6.62695 -5.37305 -12 -12 -12h-72c-6.62695 0 -12 5.37305 -12 12v12h-224v-12c0 -6.62695 -5.37305 -12 -12 -12h-72c-6.62695 0 -12 5.37305 -12 12v72c0 6.62695 5.37305 12 12 12h12v24h-88v-12\nc0 -6.62695 -5.37305 -12 -12 -12h-72c-6.62695 0 -12 5.37305 -12 12v72c0 6.62695 5.37305 12 12 12h12v160h-12c-6.62695 0 -12 5.37305 -12 12v72c0 6.62695 5.37305 12 12 12h72c6.62695 0 12 -5.37305 12 -12v-12h224v12c0 6.62695 5.37305 12 12 12h72\nc6.62695 0 12 -5.37305 12 -12v-72c0 -6.62695 -5.37305 -12 -12 -12h-12v-24h88v12c0 6.62695 5.37305 12 12 12h72c6.62695 0 12 -5.37305 12 -12v-72c0 -6.62695 -5.37305 -12 -12 -12zM352 384v-32h32v32h-32zM352 128v-32h32v32h-32zM64 96v32h-32v-32h32zM64 352v32\nh-32v-32h32zM96 136h224v12c0 6.62695 5.37305 12 12 12h12v160h-12c-6.62695 0 -12 5.37305 -12 12v12h-224v-12c0 -6.62695 -5.37305 -12 -12 -12h-12v-160h12c6.62695 0 12 -5.37305 12 -12v-12zM224 0v32h-32v-32h32zM504 64v160h-12c-6.62695 0 -12 5.37305 -12 12v12\nh-88v-88h12c6.62695 0 12 -5.37305 12 -12v-72c0 -6.62695 -5.37305 -12 -12 -12h-72c-6.62695 0 -12 5.37305 -12 12v12h-88v-24h12c6.62695 0 12 -5.37305 12 -12v-12h224v12c0 6.62695 5.37305 12 12 12h12zM544 0v32h-32v-32h32zM544 256v32h-32v-32h32z\" />\n    <glyph glyph-name=\"sticky-note\" unicode=\"&#xf249;\" horiz-adv-x=\"448\" \nd=\"M448 99.8936c0 -10.9746 -6.29883 -26.1797 -14.0586 -33.9404l-83.8828 -83.8818c-7.75977 -7.76074 -22.9658 -14.0596 -33.9404 -14.0596h-268.118c-26.5098 0 -48 21.4902 -48 48v351.988c0 26.5098 21.4902 48 48 48h352c26.5098 0 48 -21.4902 48 -48v-268.106z\nM320 19.8936l76.1182 76.1182h-76.1182v-76.1182zM400 368h-352v-351.988h224v104c0 13.2549 10.7451 24 24 24h104v223.988z\" />\n    <glyph glyph-name=\"clone\" unicode=\"&#xf24d;\" \nd=\"M464 448c26.5098 0 48 -21.4902 48 -48v-320c0 -26.5098 -21.4902 -48 -48 -48h-48v-48c0 -26.5098 -21.4902 -48 -48 -48h-320c-26.5098 0 -48 21.4902 -48 48v320c0 26.5098 21.4902 48 48 48h48v48c0 26.5098 21.4902 48 48 48h320zM362 -16c3.31152 0 6 2.68848 6 6\nv42h-224c-26.5098 0 -48 21.4902 -48 48v224h-42c-3.31152 0 -6 -2.68848 -6 -6v-308c0 -3.31152 2.68848 -6 6 -6h308zM458 80c3.31152 0 6 2.68848 6 6v308c0 3.31152 -2.68848 6 -6 6h-308c-3.31152 0 -6 -2.68848 -6 -6v-308c0 -3.31152 2.68848 -6 6 -6h308z\" />\n    <glyph glyph-name=\"hourglass\" unicode=\"&#xf254;\" horiz-adv-x=\"384\" \nd=\"M368 400c0 -80.0996 -31.8984 -165.619 -97.1797 -208c64.9912 -42.1934 97.1797 -127.436 97.1797 -208h4c6.62695 0 12 -5.37305 12 -12v-24c0 -6.62695 -5.37305 -12 -12 -12h-360c-6.62695 0 -12 5.37305 -12 12v24c0 6.62695 5.37305 12 12 12h4\nc0 80.0996 31.8994 165.619 97.1797 208c-64.9912 42.1934 -97.1797 127.436 -97.1797 208h-4c-6.62695 0 -12 5.37305 -12 12v24c0 6.62695 5.37305 12 12 12h360c6.62695 0 12 -5.37305 12 -12v-24c0 -6.62695 -5.37305 -12 -12 -12h-4zM64 400\nc0 -101.621 57.3066 -184 128 -184s128 82.3799 128 184h-256zM320 -16c0 101.62 -57.3076 184 -128 184s-128 -82.3799 -128 -184h256z\" />\n    <glyph glyph-name=\"hand-rock\" unicode=\"&#xf255;\" \nd=\"M408.864 368.948c48.8213 20.751 103.136 -15.0723 103.136 -67.9111v-114.443c0 -15.3955 -3.08887 -30.3906 -9.18262 -44.5674l-42.835 -99.6562c-4.99707 -11.625 -3.98242 -18.8574 -3.98242 -42.3701c0 -17.6729 -14.3271 -32 -32 -32h-252\nc-17.6729 0 -32 14.3271 -32 32c0 27.3301 1.1416 29.2012 -3.11035 32.9033l-97.71 85.0811c-24.8994 21.6797 -39.1797 52.8926 -39.1797 85.6338v56.9531c0 47.4277 44.8457 82.0215 91.0459 71.1807c1.96094 55.751 63.5107 87.8262 110.671 60.8057\nc29.1895 31.0713 78.8604 31.4473 108.334 -0.0214844c32.7051 18.6846 76.4121 10.3096 98.8135 -23.5879zM464 186.594v114.445c0 34.29 -52 33.8232 -52 0.676758c0 -8.83594 -7.16309 -16 -16 -16h-7c-8.83691 0 -16 7.16406 -16 16v26.751\nc0 34.457 -52 33.707 -52 0.676758v-27.4287c0 -8.83594 -7.16309 -16 -16 -16h-7c-8.83691 0 -16 7.16406 -16 16v40.4658c0 34.3525 -52 33.8115 -52 0.677734v-41.1436c0 -8.83594 -7.16406 -16 -16 -16h-7c-8.83594 0 -16 7.16406 -16 16v26.751\nc0 34.4023 -52 33.7744 -52 0.676758v-116.571c0 -8.83203 -7.16797 -16 -16 -16c-3.30664 0 -8.01367 1.7627 -10.5068 3.93359l-7 6.09473c-3.03223 2.64062 -5.49316 8.04688 -5.49316 12.0674v0v41.2275c0 34.2148 -52 33.8857 -52 0.677734v-56.9531\nc0 -18.8555 8.27441 -36.874 22.7002 -49.4365l97.71 -85.0801c12.4502 -10.8398 19.5898 -26.4463 19.5898 -42.8164v-10.2861h220v7.07617c0 13.21 2.65332 26.0791 7.88281 38.25l42.835 99.6553c2.91602 6.75391 5.28223 18.207 5.28223 25.5635v0.0488281z\" />\n    <glyph glyph-name=\"hand-paper\" unicode=\"&#xf256;\" horiz-adv-x=\"448\" \nd=\"M372.57 335.359c39.9062 5.63281 75.4297 -25.7393 75.4297 -66.3594v-131.564c-0.00195312 -12.7666 -2.33008 -33.2246 -5.19531 -45.666l-30.1836 -130.958c-3.34668 -14.5234 -16.2783 -24.8125 -31.1816 -24.8125h-222.897\nc-9.10352 0 -20.7793 6.01758 -26.0615 13.4316l-119.97 168.415c-21.2441 29.8203 -14.8047 71.3574 14.5498 93.1533c18.7754 13.9395 42.1309 16.2979 62.083 8.87109v126.13c0 44.0547 41.125 75.5439 82.4053 64.9834c23.8926 48.1963 92.3535 50.2471 117.982 0.74707\nc42.5186 11.1445 83.0391 -21.9346 83.0391 -65.5469v-10.8242zM399.997 137.437l-0.00195312 131.563c0 24.9492 -36.5703 25.5508 -36.5703 -0.691406v-76.3086c0 -8.83691 -7.16309 -16 -16 -16h-6.85645c-8.83691 0 -16 7.16309 -16 16v154.184\nc0 25.501 -36.5703 26.3633 -36.5703 0.691406v-154.875c0 -8.83691 -7.16309 -16 -16 -16h-6.85645c-8.83691 0 -16 7.16309 -16 16v188.309c0 25.501 -36.5703 26.3545 -36.5703 0.691406v-189c0 -8.83691 -7.16309 -16 -16 -16h-6.85645c-8.83691 0 -16 7.16309 -16 16\nv153.309c0 25.501 -36.5713 26.3359 -36.5713 0.691406v-206.494c0 -15.5703 -20.0352 -21.9092 -29.0303 -9.2832l-27.1279 38.0791c-14.3711 20.1709 -43.833 -2.33496 -29.3945 -22.6045l115.196 -161.697h201.92l27.3252 118.551\nc2.63086 11.417 3.96484 23.1553 3.96484 34.8857z\" />\n    <glyph glyph-name=\"hand-scissors\" unicode=\"&#xf257;\" \nd=\"M256 -32c-44.9561 0 -77.3428 43.2627 -64.0244 85.8535c-21.6484 13.71 -34.0156 38.7617 -30.3408 65.0068h-87.6348c-40.8037 0 -74 32.8105 -74 73.1406c0 40.3291 33.1963 73.1396 74 73.1396l94 -9.14062l-78.8496 18.6787\nc-38.3076 14.7422 -57.04 57.4707 -41.9424 95.1123c15.0303 37.4736 57.7549 55.7803 95.6416 41.2012l144.929 -55.7568c24.9551 30.5566 57.8086 43.9932 92.2178 24.7324l97.999 -54.8525c20.9746 -11.7393 34.0049 -33.8457 34.0049 -57.6904v-205.702\nc0 -30.7422 -21.4404 -57.5576 -51.7979 -64.5537l-118.999 -27.4268c-4.97168 -1.14648 -10.0889 -1.72949 -15.2031 -1.72949zM256 16.0127l70 -0.000976562c1.23633 0 3.21777 0.225586 4.42285 0.501953l119.001 27.4277\nc8.58203 1.97754 14.5762 9.29102 14.5762 17.7812v205.701c0 6.4873 -3.62109 12.542 -9.44922 15.8047l-98 54.8545c-8.13965 4.55566 -18.668 2.61914 -24.4873 -4.50781l-21.7646 -26.6475c-2.65039 -3.24512 -8.20215 -5.87891 -12.3926 -5.87891\nc-1.64062 0 -4.21484 0.477539 -5.74609 1.06738l-166.549 64.0908c-32.6543 12.5664 -50.7744 -34.5771 -19.2227 -46.7168l155.357 -59.7852c5.66016 -2.17773 10.2539 -8.86816 10.2539 -14.9326v0v-11.6328c0 -8.83691 -7.16309 -16 -16 -16h-182\nc-34.375 0 -34.4297 -50.2803 0 -50.2803h182c8.83691 0 16 -7.16309 16 -16v-6.85645c0 -8.83691 -7.16309 -16 -16 -16h-28c-25.1221 0 -25.1592 -36.5674 0 -36.5674h28c8.83691 0 16 -7.16211 16 -16v-6.85547c0 -8.83691 -7.16309 -16 -16 -16\nc-25.1201 0 -25.1602 -36.5674 0 -36.5674z\" />\n    <glyph glyph-name=\"hand-lizard\" unicode=\"&#xf258;\" horiz-adv-x=\"576\" \nd=\"M556.686 157.458c12.6357 -19.4863 19.3145 -42.0615 19.3145 -65.2871v-124.171h-224v71.582l-99.751 38.7871c-2.7832 1.08203 -5.70996 1.63086 -8.69727 1.63086h-131.552c-30.8789 0 -56 25.1211 -56 56c0 48.5234 39.4766 88 88 88h113.709l18.333 48h-196.042\nc-44.1123 0 -80 35.8877 -80 80v8c0 30.8779 25.1211 56 56 56h293.917c24.5 0 47.084 -12.2725 60.4111 -32.8291zM528 16v76.1709v0.0478516c0 11.7461 -5.19141 29.2734 -11.5879 39.124l-146.358 225.715c-4.44336 6.85254 -11.9707 10.9424 -20.1367 10.9424h-293.917\nc-4.41113 0 -8 -3.58887 -8 -8v-8c0 -17.6445 14.3555 -32 32 -32h213.471c25.2021 0 42.626 -25.293 33.6299 -48.8457l-24.5518 -64.2812c-7.05371 -18.4658 -25.0732 -30.873 -44.8398 -30.873h-113.709c-22.0557 0 -40 -17.9443 -40 -40c0 -4.41113 3.58887 -8 8 -8\nh131.552h0.0517578c7.44141 0 19.1074 -2.19238 26.041 -4.89355l99.752 -38.7881c18.5898 -7.22852 30.6035 -24.7881 30.6035 -44.7363v-23.582h128z\" />\n    <glyph glyph-name=\"hand-spock\" unicode=\"&#xf259;\" \nd=\"M21.0957 66.21c-26.9688 25.3818 -28.2471 67.7461 -2.87109 94.707c24.1982 25.7139 64.2881 28.2373 91.4824 5.72168l-31.04 136.509c-9.38379 41.2803 21.4336 81.0127 64.0713 81.8438c1.74414 28.9062 22.2656 54.4912 51.8818 61.2949\nc36.001 8.27539 72.0176 -14.2266 80.3037 -50.2959l21.6748 -131.99l16.9014 105.25c9.02344 36.0947 45.4473 57.7021 81.25 48.75c27.3066 -6.82715 45.7061 -29.1357 49.8496 -53.9922c43.2285 0.212891 75.6436 -40.1133 65.5439 -82.5244l-31.7295 -133.41\nc-0.938477 -3.94141 -1.41406 -7.99414 -1.41406 -12.0449v-36.8389v-0.00683594c0 -9.29102 -2.14355 -24.0596 -4.78516 -32.9668l-31.8145 -107.312c-4.02734 -13.585 -16.5107 -22.9043 -30.6807 -22.9043h-237.6c-7.00586 0 -16.8311 3.89648 -21.9316 8.69824z\nM53.1641 128.021c-7.17969 -7.62891 -6.81543 -19.6777 0.813477 -26.8574l124.487 -117.164h219.311l28.4199 95.8613c1.86133 6.27637 2.80469 12.7793 2.80469 19.3281v36.8389c0.000976562 6.48047 1.21973 16.8574 2.71973 23.1621l31.7549 133.407\nc5.83105 24.4893 -31.1445 33.25 -36.9658 8.80273l-26.9229 -113.105c-1.61523 -6.78711 -8.58887 -12.2949 -15.5645 -12.2949h-9.69434c-10.4072 0 -18.043 9.79199 -15.5225 19.8799l38.127 152.512c6.09766 24.376 -30.7607 33.6396 -36.8643 9.21777l-42.3721 -169.49\nc-1.67285 -6.68945 -8.62695 -12.1191 -15.5225 -12.1191h-13.2168v0c-7.0332 0 -14.0195 5.5625 -15.5938 12.417l-45.2207 196.828c-5.64453 24.5684 -42.6572 15.9609 -37.0342 -8.50781l41.6191 -181.153c2.30078 -10.0156 -5.31738 -19.583 -15.5938 -19.583h-8.60352\nh-0.000976562c-7.0498 0 -14.04 5.5791 -15.6025 12.4541l-30.3984 133.757c-5.55273 24.4395 -42.6504 16.1963 -37.0547 -8.4209l34.1299 -150.172c0.263672 -1.16309 0.397461 -2.35352 0.397461 -3.5459v-69.4795c0 -13.9941 -16.7754 -21.2432 -26.9658 -11.6523\nl-53.0117 49.8936c-7.61523 7.16699 -19.6377 6.85938 -26.8564 -0.8125z\" />\n    <glyph glyph-name=\"hand-pointer\" unicode=\"&#xf25a;\" horiz-adv-x=\"448\" \nd=\"M358.182 268.639c43.1934 16.6348 89.8184 -15.7949 89.8184 -62.6387v-84c-0.000976562 -4.25 -0.775391 -11.0615 -1.72754 -15.2041l-27.4297 -118.999c-6.98242 -30.2969 -33.7549 -51.7969 -64.5566 -51.7969h-178.286c-21.2588 0 -41.3682 10.4102 -53.791 27.8457\nl-109.699 154.001c-21.2432 29.8193 -14.8047 71.3574 14.5498 93.1523c18.8115 13.9658 42.1748 16.2822 62.083 8.87207v161.129c0 36.9443 29.7363 67 66.2861 67s66.2861 -30.0557 66.2861 -67v-73.6338c20.4131 2.85742 41.4678 -3.94238 56.5947 -19.6289\nc27.1934 12.8467 60.3799 5.66992 79.8721 -19.0986zM80.9854 168.303c-14.4004 20.2119 -43.8008 -2.38281 -29.3945 -22.6055l109.712 -154c3.43457 -4.81934 8.92871 -7.69727 14.6973 -7.69727h178.285c8.49219 0 15.8037 5.99414 17.7822 14.5762l27.4297 119.001\nc0.333008 1.44629 0.501953 2.93457 0.501953 4.42285v84c0 25.1602 -36.5713 25.1211 -36.5713 0c0 -8.83594 -7.16309 -16 -16 -16h-6.85645c-8.83691 0 -16 7.16406 -16 16v21c0 25.1602 -36.5713 25.1201 -36.5713 0v-21c0 -8.83594 -7.16309 -16 -16 -16h-6.85938\nc-8.83691 0 -16 7.16406 -16 16v35c0 25.1602 -36.5703 25.1201 -36.5703 0v-35c0 -8.83594 -7.16309 -16 -16 -16h-6.85742c-8.83691 0 -16 7.16406 -16 16v175c0 25.1602 -36.5713 25.1201 -36.5713 0v-241.493c0 -15.5703 -20.0352 -21.9092 -29.0303 -9.2832z\nM176.143 48v96c0 8.83691 6.26855 16 14 16h6c7.73242 0 14 -7.16309 14 -16v-96c0 -8.83691 -6.26758 -16 -14 -16h-6c-7.73242 0 -14 7.16309 -14 16zM251.571 48v96c0 8.83691 6.26758 16 14 16h6c7.73145 0 14 -7.16309 14 -16v-96c0 -8.83691 -6.26855 -16 -14 -16h-6\nc-7.73242 0 -14 7.16309 -14 16zM327 48v96c0 8.83691 6.26758 16 14 16h6c7.73242 0 14 -7.16309 14 -16v-96c0 -8.83691 -6.26758 -16 -14 -16h-6c-7.73242 0 -14 7.16309 -14 16z\" />\n    <glyph glyph-name=\"hand-peace\" unicode=\"&#xf25b;\" horiz-adv-x=\"448\" \nd=\"M362.146 256.024c42.5908 13.3184 85.8535 -19.0684 85.8535 -64.0244l-0.0117188 -70.001c-0.000976562 -4.25 -0.775391 -11.0615 -1.72949 -15.2031l-27.4268 -118.999c-6.99707 -30.3564 -33.8105 -51.7969 -64.5547 -51.7969h-205.702\nc-23.8447 0 -45.9502 13.0303 -57.6904 34.0059l-54.8525 97.999c-19.2607 34.4092 -5.82422 67.2617 24.7324 92.2178l-55.7568 144.928c-14.5791 37.8867 3.72754 80.6113 41.2012 95.6416c37.6406 15.0977 80.3691 -3.63477 95.1123 -41.9424l18.6787 -78.8496\nl-9.14062 94c0 40.8037 32.8096 74 73.1396 74s73.1406 -33.1963 73.1406 -74v-87.6348c26.2451 3.6748 51.2959 -8.69238 65.0068 -30.3408zM399.987 122l-0.000976562 70c0 25.1602 -36.5674 25.1201 -36.5674 0c0 -8.83691 -7.16309 -16 -16 -16h-6.85547\nc-8.83789 0 -16 7.16309 -16 16v28c0 25.1592 -36.5674 25.1221 -36.5674 0v-28c0 -8.83691 -7.16309 -16 -16 -16h-6.85645c-8.83691 0 -16 7.16309 -16 16v182c0 34.4297 -50.2803 34.375 -50.2803 0v-182c0 -8.83691 -7.16309 -16 -16 -16h-11.6328v0\nc-6.06445 0 -12.7549 4.59375 -14.9326 10.2539l-59.7842 155.357c-12.1396 31.5518 -59.2842 13.4326 -46.7168 -19.2227l64.0898 -166.549c0.589844 -1.53125 1.06738 -4.10547 1.06738 -5.74609c0 -4.19043 -2.63379 -9.74219 -5.87891 -12.3926l-26.6475 -21.7646\nc-7.12695 -5.81934 -9.06445 -16.3467 -4.50781 -24.4873l54.8535 -98c3.26367 -5.82812 9.31934 -9.44922 15.8057 -9.44922h205.701c8.49121 0 15.8037 5.99414 17.7812 14.5762l27.4277 119.001c0.333008 1.44629 0.501953 2.93457 0.501953 4.42285z\" />\n    <glyph glyph-name=\"registered\" unicode=\"&#xf25d;\" \nd=\"M256 440c136.967 0 248 -111.033 248 -248s-111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248zM256 -8c110.549 0 200 89.4678 200 200c0 110.549 -89.4678 200 -200 200c-110.549 0 -200 -89.4688 -200 -200c0 -110.549 89.4678 -200 200 -200z\nM366.442 73.791c4.40332 -7.99219 -1.37012 -17.791 -10.5107 -17.791h-42.8096h-0.0126953c-3.97559 0 -8.71582 2.84961 -10.5801 6.36035l-47.5156 89.3027h-31.958v-83.6631c0 -6.61719 -5.38281 -12 -12 -12h-38.5674c-6.61719 0 -12 5.38281 -12 12v248.304\nc0 6.61719 5.38281 12 12 12h78.667c71.251 0 101.498 -32.749 101.498 -85.252c0 -31.6123 -15.2148 -59.2969 -39.4824 -73.1758c3.02148 -4.61719 0.225586 0.199219 53.2715 -96.085zM256.933 208.094c20.9131 0 32.4307 11.5186 32.4316 32.4316\nc0 19.5752 -6.5127 31.709 -38.9297 31.709h-27.377v-64.1406h33.875z\" />\n    <glyph glyph-name=\"calendar-plus\" unicode=\"&#xf271;\" horiz-adv-x=\"448\" \nd=\"M336 156v-24c0 -6.59961 -5.40039 -12 -12 -12h-76v-76c0 -6.59961 -5.40039 -12 -12 -12h-24c-6.59961 0 -12 5.40039 -12 12v76h-76c-6.59961 0 -12 5.40039 -12 12v24c0 6.59961 5.40039 12 12 12h76v76c0 6.59961 5.40039 12 12 12h24c6.59961 0 12 -5.40039 12 -12\nv-76h76c6.59961 0 12 -5.40039 12 -12zM448 336v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h48v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h128v52c0 6.59961 5.40039 12 12 12h40\nc6.59961 0 12 -5.40039 12 -12v-52h48c26.5 0 48 -21.5 48 -48zM400 -10v298h-352v-298c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z\" />\n    <glyph glyph-name=\"calendar-minus\" unicode=\"&#xf272;\" horiz-adv-x=\"448\" \nd=\"M124 120c-6.59961 0 -12 5.40039 -12 12v24c0 6.59961 5.40039 12 12 12h200c6.59961 0 12 -5.40039 12 -12v-24c0 -6.59961 -5.40039 -12 -12 -12h-200zM448 336v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h48v52\nc0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h128v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h48c26.5 0 48 -21.5 48 -48zM400 -10v298h-352v-298c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z\" />\n    <glyph glyph-name=\"calendar-times\" unicode=\"&#xf273;\" horiz-adv-x=\"448\" \nd=\"M311.7 73.2998l-17 -17c-4.7002 -4.7002 -12.2998 -4.7002 -17 0l-53.7002 53.7998l-53.7002 -53.6992c-4.7002 -4.7002 -12.2998 -4.7002 -17 0l-17 17c-4.7002 4.69922 -4.7002 12.2998 0 17l53.7002 53.6992l-53.7002 53.7002c-4.7002 4.7002 -4.7002 12.2998 0 17\nl17 17c4.7002 4.7002 12.2998 4.7002 17 0l53.7002 -53.7002l53.7002 53.7002c4.7002 4.7002 12.2998 4.7002 17 0l17 -17c4.7002 -4.7002 4.7002 -12.2998 0 -17l-53.7998 -53.7998l53.6992 -53.7002c4.80078 -4.7002 4.80078 -12.2998 0.100586 -17zM448 336v-352\nc0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h48v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h128v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h48c26.5 0 48 -21.5 48 -48zM400 -10\nv298h-352v-298c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z\" />\n    <glyph glyph-name=\"calendar-check\" unicode=\"&#xf274;\" horiz-adv-x=\"448\" \nd=\"M400 384c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h48v52c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-52h128v52c0 6.62695 5.37305 12 12 12h40\nc6.62695 0 12 -5.37305 12 -12v-52h48zM394 -16c3.31152 0 6 2.68848 6 6v298h-352v-298c0 -3.31152 2.68848 -6 6 -6h340zM341.151 184.65l-142.31 -141.169c-4.70508 -4.66699 -12.3027 -4.6377 -16.9707 0.0673828l-75.0908 75.6992\nc-4.66699 4.70508 -4.6377 12.3027 0.0673828 16.9707l22.7197 22.5361c4.70508 4.66699 12.3027 4.63672 16.9697 -0.0693359l44.1035 -44.4609l111.072 110.182c4.70508 4.66699 12.3027 4.63672 16.9707 -0.0683594l22.5361 -22.7178\nc4.66699 -4.70508 4.63672 -12.3027 -0.0683594 -16.9697z\" />\n    <glyph glyph-name=\"map\" unicode=\"&#xf279;\" horiz-adv-x=\"576\" \nd=\"M560.02 416c8.4502 0 15.9805 -6.83008 15.9805 -16.0195v-346.32c0 -11.9609 -9.01367 -25.2705 -20.1201 -29.71l-151.83 -52.8105c-5.32617 -1.7334 -14.1953 -3.13965 -19.7969 -3.13965c-5.7373 0 -14.8105 1.47363 -20.2529 3.29004l-172 60.71l-170.05 -62.8398\nc-1.99023 -0.790039 -4 -1.16016 -5.95996 -1.16016c-8.45996 0 -15.9902 6.83008 -15.9902 16.0195v346.32c0.00292969 11.959 9.0166 25.2686 20.1201 29.71l151.83 52.8105c6.43945 2.08984 13.1201 3.13965 19.8096 3.13965\nc5.73242 -0.00195312 14.8008 -1.47168 20.2402 -3.28027l172 -60.7197h0.00976562l170.05 62.8398c1.98047 0.790039 4 1.16016 5.95996 1.16016zM224 357.58v-285.97l128 -45.1904v285.97zM48 29.9502l127.36 47.0801l0.639648 0.229492v286.2l-128 -44.5303v-288.979z\nM528 65.0801v288.97l-127.36 -47.0693l-0.639648 -0.240234v-286.19z\" />\n    <glyph glyph-name=\"comment-alt\" unicode=\"&#xf27a;\" \nd=\"M448 448c35.2998 0 64 -28.7002 64 -64v-288c0 -35.2998 -28.7002 -64 -64 -64h-144l-124.9 -93.5996c-2.19922 -1.7002 -4.69922 -2.40039 -7.09961 -2.40039c-6.2002 0 -12 4.90039 -12 12v84h-96c-35.2998 0 -64 28.7002 -64 64v288c0 35.2998 28.7002 64 64 64h384z\nM464 96v288c0 8.7998 -7.2002 16 -16 16h-384c-8.7998 0 -16 -7.2002 -16 -16v-288c0 -8.7998 7.2002 -16 16 -16h144v-60l67.2002 50.4004l12.7998 9.59961h160c8.7998 0 16 7.2002 16 16z\" />\n    <glyph glyph-name=\"pause-circle\" unicode=\"&#xf28b;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM256 -8c110.5 0 200 89.5 200 200s-89.5 200 -200 200s-200 -89.5 -200 -200s89.5 -200 200 -200zM352 272v-160c0 -8.7998 -7.2002 -16 -16 -16h-48\nc-8.7998 0 -16 7.2002 -16 16v160c0 8.7998 7.2002 16 16 16h48c8.7998 0 16 -7.2002 16 -16zM240 272v-160c0 -8.7998 -7.2002 -16 -16 -16h-48c-8.7998 0 -16 7.2002 -16 16v160c0 8.7998 7.2002 16 16 16h48c8.7998 0 16 -7.2002 16 -16z\" />\n    <glyph glyph-name=\"stop-circle\" unicode=\"&#xf28d;\" \nd=\"M504 192c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248s248 -111 248 -248zM56 192c0 -110.5 89.5 -200 200 -200s200 89.5 200 200s-89.5 200 -200 200s-200 -89.5 -200 -200zM352 272v-160c0 -8.7998 -7.2002 -16 -16 -16h-160\nc-8.7998 0 -16 7.2002 -16 16v160c0 8.7998 7.2002 16 16 16h160c8.7998 0 16 -7.2002 16 -16z\" />\n    <glyph glyph-name=\"handshake\" unicode=\"&#xf2b5;\" horiz-adv-x=\"640\" \nd=\"M519.2 320.1h120.8v-255.699h-64c-17.5 0 -31.7998 14.1992 -31.9004 31.6992h-57.8994c-1.7998 -8.19922 -5.2998 -16.0996 -10.9004 -23l-26.2002 -32.2998c-15.7998 -19.3994 -41.8994 -25.5 -64 -16.7998c-13.5 -16.5996 -30.5996 -24 -48.7998 -24\nc-15.0996 0 -28.5996 5.09961 -41.0996 15.9004c-31.7998 -21.9004 -74.7002 -21.3008 -105.601 3.7998l-84.5996 76.3994h-9.09961c-0.100586 -17.5 -14.3008 -31.6992 -31.9004 -31.6992h-64v255.699h118l47.5996 47.6006c10.5 10.3994 24.8008 16.2998 39.6006 16.2998\nh226.8v0c12.7812 0 30.5225 -7.30273 39.5996 -16.2998zM48 96.4004c8.7998 0 16 7.09961 16 16c0 8.7998 -7.2002 16 -16 16s-16 -7.2002 -16 -16c0 -8.80078 7.2002 -16 16 -16zM438 103.3c2.7002 3.40039 2.2002 8.5 -1.2002 11.2998l-108.2 87.8008l-8.19922 -7.5\nc-40.3008 -36.8008 -86.7002 -11.8008 -101.5 4.39941c-26.7002 29 -25 74.4004 4.39941 101.3l38.7002 35.5h-56.7002c-2 -0.799805 -3.7002 -1.5 -5.7002 -2.2998l-61.6992 -61.5996h-41.9004v-128.101h27.7002l97.2998 -88\nc16.0996 -13.0996 41.4004 -10.5 55.2998 6.60059l15.6006 19.2002l36.7998 -31.5c3 -2.40039 12 -4.90039 18 2.39941l30 36.5l23.8994 -19.3994c3.5 -2.80078 8.5 -2.2002 11.3008 1.19922zM544 144.1v128h-44.7002l-61.7002 61.6006\nc-1.39941 1.5 -3.39941 2.2998 -5.5 2.2998l-83.6992 -0.200195c-10 0 -19.6006 -3.7002 -27 -10.5l-65.6006 -60.0996c-9.7002 -8.7998 -10.5 -24 -1.2002 -33.9004c8.90039 -9.39941 25.1006 -8.7002 34.6006 0l55.2002 50.6006c6.5 5.89941 16.5996 5.5 22.5996 -1\nl10.9004 -11.7002c6 -6.5 5.5 -16.6006 -1 -22.6006l-12.5 -11.3994l102.699 -83.4004c2.80078 -2.2998 5.40039 -4.89941 7.7002 -7.7002h69.2002zM592 96.4004c8.7998 0 16 7.09961 16 16c0 8.7998 -7.2002 16 -16 16s-16 -7.2002 -16 -16c0 -8.80078 7.2002 -16 16 -16z\n\" />\n    <glyph glyph-name=\"envelope-open\" unicode=\"&#xf2b6;\" \nd=\"M494.586 283.484c9.6123 -7.94824 17.4141 -24.5205 17.4141 -36.9932v-262.491c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v262.515c0 12.5166 7.84668 29.1279 17.5146 37.0771c4.08008 3.35449 110.688 89.0996 135.15 108.549\nc22.6992 18.1426 60.1299 55.8594 103.335 55.8594c43.4365 0 81.2314 -38.1914 103.335 -55.8594c23.5283 -18.707 130.554 -104.773 135.251 -108.656zM464 -10v253.632v0.00488281c0 1.5791 -0.996094 3.66602 -2.22363 4.6582\nc-15.8633 12.8232 -108.793 87.5752 -132.366 106.316c-17.5527 14.0195 -49.7168 45.3887 -73.4102 45.3887c-23.6016 0 -55.2451 -30.8799 -73.4102 -45.3887c-23.5713 -18.7393 -116.494 -93.4795 -132.364 -106.293\nc-1.40918 -1.13965 -2.22559 -2.85254 -2.22559 -4.66504v-253.653c0 -3.31152 2.68848 -6 6 -6h404c3.31152 0 6 2.68848 6 6zM432.009 177.704c4.24902 -5.15918 3.46484 -12.7949 -1.74512 -16.9814c-28.9746 -23.2822 -59.2734 -47.5967 -70.9287 -56.8623\nc-22.6992 -18.1436 -60.1299 -55.8604 -103.335 -55.8604c-43.4521 0 -81.2871 38.2373 -103.335 55.8604c-11.2793 8.9668 -41.7441 33.4131 -70.9268 56.8643c-5.20996 4.1875 -5.99316 11.8223 -1.74512 16.9814l15.2578 18.5283\nc4.17773 5.07227 11.6572 5.84277 16.7793 1.72559c28.6182 -23.001 58.5654 -47.0352 70.5596 -56.5713c17.5527 -14.0195 49.7168 -45.3887 73.4102 -45.3887c23.6016 0 55.2461 30.8799 73.4102 45.3887c11.9941 9.53516 41.9434 33.5703 70.5625 56.5684\nc5.12207 4.11621 12.6016 3.3457 16.7783 -1.72656z\" />\n    <glyph glyph-name=\"address-book\" unicode=\"&#xf2b9;\" horiz-adv-x=\"448\" \nd=\"M436 288h-20v-64h20c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-20v-64h20c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-20v-48c0 -26.5 -21.5 -48 -48 -48h-320c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48\nh320c26.5 0 48 -21.5 48 -48v-48h20c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12zM368 -16v416h-320v-416h320zM208 192c-35.2998 0 -64 28.7002 -64 64s28.7002 64 64 64s64 -28.7002 64 -64s-28.7002 -64 -64 -64zM118.4 64\nc-12.4004 0 -22.4004 8.59961 -22.4004 19.2002v19.2002c0 31.7998 30.0996 57.5996 67.2002 57.5996c11.3994 0 17.8994 -8 44.7998 -8c26.0996 0 34 8 44.7998 8c37.1006 0 67.2002 -25.7998 67.2002 -57.5996v-19.2002c0 -10.6006 -10 -19.2002 -22.4004 -19.2002\nh-179.199z\" />\n    <glyph glyph-name=\"address-card\" unicode=\"&#xf2bb;\" horiz-adv-x=\"576\" \nd=\"M528 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h480zM528 16v352h-480v-352h480zM208 192c-35.2998 0 -64 28.7002 -64 64s28.7002 64 64 64s64 -28.7002 64 -64s-28.7002 -64 -64 -64z\nM118.4 64c-12.4004 0 -22.4004 8.59961 -22.4004 19.2002v19.2002c0 31.7998 30.0996 57.5996 67.2002 57.5996c11.3994 0 17.8994 -8 44.7998 -8c26.0996 0 34 8 44.7998 8c37.1006 0 67.2002 -25.7998 67.2002 -57.5996v-19.2002\nc0 -10.6006 -10 -19.2002 -22.4004 -19.2002h-179.199zM360 128c-4.40039 0 -8 3.59961 -8 8v16c0 4.40039 3.59961 8 8 8h112c4.40039 0 8 -3.59961 8 -8v-16c0 -4.40039 -3.59961 -8 -8 -8h-112zM360 192c-4.40039 0 -8 3.59961 -8 8v16c0 4.40039 3.59961 8 8 8h112\nc4.40039 0 8 -3.59961 8 -8v-16c0 -4.40039 -3.59961 -8 -8 -8h-112zM360 256c-4.40039 0 -8 3.59961 -8 8v16c0 4.40039 3.59961 8 8 8h112c4.40039 0 8 -3.59961 8 -8v-16c0 -4.40039 -3.59961 -8 -8 -8h-112z\" />\n    <glyph glyph-name=\"user-circle\" unicode=\"&#xf2bd;\" horiz-adv-x=\"496\" \nd=\"M248 344c53 0 96 -43 96 -96s-43 -96 -96 -96s-96 43 -96 96s43 96 96 96zM248 200c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48zM248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8\nc49.7002 0 95.0996 18.2998 130.1 48.4004c-14.8994 23 -40.3994 38.5 -69.5996 39.5c-20.7998 -6.5 -40.5996 -9.60059 -60.5 -9.60059s-39.7002 3.2002 -60.5 9.60059c-29.2002 -0.900391 -54.7002 -16.5 -69.5996 -39.5c35 -30.1006 80.3994 -48.4004 130.1 -48.4004z\nM410.7 76.0996c23.3994 32.7002 37.2998 72.7002 37.2998 115.9c0 110.3 -89.7002 200 -200 200s-200 -89.7002 -200 -200c0 -43.2002 13.9004 -83.2002 37.2998 -115.9c24.5 31.4004 62.2002 51.9004 105.101 51.9004c10.1992 0 26.0996 -9.59961 57.5996 -9.59961\nc31.5996 0 47.4004 9.59961 57.5996 9.59961c43 0 80.7002 -20.5 105.101 -51.9004z\" />\n    <glyph glyph-name=\"id-badge\" unicode=\"&#xf2c1;\" horiz-adv-x=\"384\" \nd=\"M336 448c26.5 0 48 -21.5 48 -48v-416c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48h288zM336 -16v416h-288v-416h288zM144 336c-8.7998 0 -16 7.2002 -16 16s7.2002 16 16 16h96c8.7998 0 16 -7.2002 16 -16s-7.2002 -16 -16 -16\nh-96zM192 160c-35.2998 0 -64 28.7002 -64 64s28.7002 64 64 64s64 -28.7002 64 -64s-28.7002 -64 -64 -64zM102.4 32c-12.4004 0 -22.4004 8.59961 -22.4004 19.2002v19.2002c0 31.7998 30.0996 57.5996 67.2002 57.5996c11.3994 0 17.8994 -8 44.7998 -8\nc26.0996 0 34 8 44.7998 8c37.1006 0 67.2002 -25.7998 67.2002 -57.5996v-19.2002c0 -10.6006 -10 -19.2002 -22.4004 -19.2002h-179.199z\" />\n    <glyph glyph-name=\"id-card\" unicode=\"&#xf2c2;\" horiz-adv-x=\"576\" \nd=\"M528 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h480zM528 16v288h-480v-288h32.7998c-1 4.5 -0.799805 -3.59961 -0.799805 22.4004c0 31.7998 30.0996 57.5996 67.2002 57.5996\nc11.3994 0 17.8994 -8 44.7998 -8c26.0996 0 34 8 44.7998 8c37.1006 0 67.2002 -25.7998 67.2002 -57.5996c0 -26 0.0996094 -17.9004 -0.799805 -22.4004h224.8zM360 96c-4.40039 0 -8 3.59961 -8 8v16c0 4.40039 3.59961 8 8 8h112c4.40039 0 8 -3.59961 8 -8v-16\nc0 -4.40039 -3.59961 -8 -8 -8h-112zM360 160c-4.40039 0 -8 3.59961 -8 8v16c0 4.40039 3.59961 8 8 8h112c4.40039 0 8 -3.59961 8 -8v-16c0 -4.40039 -3.59961 -8 -8 -8h-112zM360 224c-4.40039 0 -8 3.59961 -8 8v16c0 4.40039 3.59961 8 8 8h112\nc4.40039 0 8 -3.59961 8 -8v-16c0 -4.40039 -3.59961 -8 -8 -8h-112zM192 128c-35.2998 0 -64 28.7002 -64 64s28.7002 64 64 64s64 -28.7002 64 -64s-28.7002 -64 -64 -64z\" />\n    <glyph glyph-name=\"window-maximize\" unicode=\"&#xf2d0;\" \nd=\"M464 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h416zM464 22v234h-416v-234c0 -3.2998 2.7002 -6 6 -6h404c3.2998 0 6 2.7002 6 6z\" />\n    <glyph glyph-name=\"window-minimize\" unicode=\"&#xf2d1;\" \nd=\"M480 -32h-448c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32h448c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32z\" />\n    <glyph glyph-name=\"window-restore\" unicode=\"&#xf2d2;\" \nd=\"M464 448c26.5 0 48 -21.5 48 -48v-320c0 -26.5 -21.5 -48 -48 -48h-48v-48c0 -26.5 -21.5 -48 -48 -48h-320c-26.5 0 -48 21.5 -48 48v320c0 26.5 21.5 48 48 48h48v48c0 26.5 21.5 48 48 48h320zM368 -16v208h-320v-208h320zM464 80v320h-320v-48h224\nc26.5 0 48 -21.5 48 -48v-224h48z\" />\n    <glyph glyph-name=\"snowflake\" unicode=\"&#xf2dc;\" horiz-adv-x=\"448\" \nd=\"M440.1 92.7998c7.60059 -4.39941 10.1006 -14.2002 5.5 -21.7002l-7.89941 -13.8994c-4.40039 -7.7002 -14 -10.2998 -21.5 -5.90039l-39.2002 23l9.09961 -34.7002c2.30078 -8.5 -2.69922 -17.2998 -11.0996 -19.5996l-15.2002 -4.09961\nc-8.39941 -2.30078 -17.0996 2.7998 -19.2998 11.2998l-21.2998 81l-71.9004 42.2002v-84.5l58.2998 -59.3008c6.10059 -6.19922 6.10059 -16.3994 0 -22.5996l-11.0996 -11.2998c-6.09961 -6.2002 -16.0996 -6.2002 -22.2002 0l-24.8994 25.3994v-46.0996\nc0 -8.7998 -7 -16 -15.7002 -16h-15.7002c-8.7002 0 -15.7002 7.2002 -15.7002 16v45.9004l-24.8994 -25.4004c-6.10059 -6.2002 -16.1006 -6.2002 -22.2002 0l-11.1006 11.2998c-6.09961 6.2002 -6.09961 16.4004 0 22.6006l58.3008 59.2998v84.5l-71.9004 -42.2002\nl-21.2998 -81c-2.2998 -8.5 -10.9004 -13.5996 -19.2998 -11.2998l-15.2002 4.09961c-8.40039 2.2998 -13.2998 11.1006 -11.1006 19.6006l9.10059 34.6992l-39.2002 -23c-7.5 -4.39941 -17.2002 -1.7998 -21.5 5.90039l-7.90039 13.9004\nc-4.2998 7.69922 -1.69922 17.5 5.80078 21.8994l39.1992 23l-34.0996 9.2998c-8.40039 2.30078 -13.2998 11.1006 -11.0996 19.6006l4.09961 15.5c2.2998 8.5 10.9004 13.5996 19.2998 11.2998l79.7002 -21.7002l71.9004 42.2002l-71.9004 42.2002l-79.7002 -21.7002\nc-8.39941 -2.2998 -17.0996 2.7998 -19.2998 11.2998l-4.09961 15.5c-2.30078 8.5 2.69922 17.2998 11.0996 19.6006l34.0996 9.09961l-39.1992 23c-7.60059 4.5 -10.1006 14.2002 -5.80078 21.9004l7.90039 13.8994c4.40039 7.7002 14 10.2998 21.5 5.90039l39.2002 -23\nl-9.10059 34.7002c-2.2998 8.5 2.7002 17.2998 11.1006 19.5996l15.2002 4.09961c8.39941 2.30078 17.0996 -2.7998 19.2998 -11.2998l21.2998 -81l71.9004 -42.2002v84.5l-58.3008 59.3008c-6.09961 6.19922 -6.09961 16.3994 0 22.5996l11.5 11.2998\nc6.10059 6.2002 16.1006 6.2002 22.2002 0l24.9004 -25.3994v46.0996c0 8.7998 7 16 15.7002 16h15.6992c8.7002 0 15.7002 -7.2002 15.7002 -16v-45.9004l24.9004 25.4004c6.09961 6.2002 16.0996 6.2002 22.2002 0l11.0996 -11.2998\nc6.09961 -6.2002 6.09961 -16.4004 0 -22.6006l-58.2998 -59.2998v-84.5l71.8994 42.2002l21.3008 81c2.2998 8.5 10.8994 13.5996 19.2998 11.2998l15.2002 -4.09961c8.39941 -2.2998 13.2998 -11.1006 11.0996 -19.6006l-9.09961 -34.6992l39.1992 23\nc7.5 4.39941 17.2002 1.7998 21.5 -5.90039l7.90039 -13.9004c4.2998 -7.69922 1.7002 -17.5 -5.7998 -21.8994l-39.2002 -23l34.0996 -9.2998c8.40039 -2.30078 13.3008 -11.1006 11.1006 -19.6006l-4.10059 -15.5c-2.2998 -8.5 -10.8994 -13.5996 -19.2998 -11.2998\nl-79.7002 21.7002l-71.8994 -42.2002l71.7998 -42.2002l79.7002 21.7002c8.39941 2.2998 17.0996 -2.7998 19.2998 -11.2998l4.09961 -15.5c2.30078 -8.5 -2.69922 -17.2998 -11.0996 -19.6006l-34.0996 -9.2998z\" />\n    <glyph glyph-name=\"trash-alt\" unicode=\"&#xf2ed;\" horiz-adv-x=\"448\" \nd=\"M268 32c-6.62402 0 -12 5.37598 -12 12v216c0 6.62402 5.37598 12 12 12h24c6.62402 0 12 -5.37598 12 -12v-216c0 -6.62402 -5.37598 -12 -12 -12h-24zM432 368c8.83203 0 16 -7.16797 16 -16v-16c0 -8.83203 -7.16797 -16 -16 -16h-16v-336\nc0 -26.4961 -21.5039 -48 -48 -48h-288c-26.4961 0 -48 21.5039 -48 48v336h-16c-8.83203 0 -16 7.16797 -16 16v16c0 8.83203 7.16797 16 16 16h82.4102l34.0195 56.7002c7.71875 12.8613 26.1572 23.2998 41.1572 23.2998h0.00292969h100.82h0.0224609\nc15 0 33.4385 -10.4385 41.1572 -23.2998l34 -56.7002h82.4102zM171.84 397.09l-17.4502 -29.0898h139.221l-17.46 29.0898c-0.96582 1.60645 -3.26953 2.91016 -5.14355 2.91016h-0.00683594h-94h-0.0166016c-1.87402 0 -4.17871 -1.30371 -5.14355 -2.91016zM368 -16v336\nh-288v-336h288zM156 32c-6.62402 0 -12 5.37598 -12 12v216c0 6.62402 5.37598 12 12 12h24c6.62402 0 12 -5.37598 12 -12v-216c0 -6.62402 -5.37598 -12 -12 -12h-24z\" />\n    <glyph glyph-name=\"images\" unicode=\"&#xf302;\" horiz-adv-x=\"576\" \nd=\"M480 32v-16c0 -26.5098 -21.4902 -48 -48 -48h-384c-26.5098 0 -48 21.4902 -48 48v256c0 26.5098 21.4902 48 48 48h16v-48h-10c-3.31152 0 -6 -2.68848 -6 -6v-244c0 -3.31152 2.68848 -6 6 -6h372c3.31152 0 6 2.68848 6 6v10h48zM522 368h-372\nc-3.31152 0 -6 -2.68848 -6 -6v-244c0 -3.31152 2.68848 -6 6 -6h372c3.31152 0 6 2.68848 6 6v244c0 3.31152 -2.68848 6 -6 6zM528 416c26.5098 0 48 -21.4902 48 -48v-256c0 -26.5098 -21.4902 -48 -48 -48h-384c-26.5098 0 -48 21.4902 -48 48v256\nc0 26.5098 21.4902 48 48 48h384zM264 304c0 -22.0908 -17.9092 -40 -40 -40s-40 17.9092 -40 40s17.9092 40 40 40s40 -17.9092 40 -40zM192 208l39.5146 39.5146c4.68652 4.68652 12.2842 4.68652 16.9717 0l39.5137 -39.5146l103.515 103.515\nc4.68652 4.68652 12.2842 4.68652 16.9717 0l71.5137 -71.5146v-80h-288v48z\" />\n    <glyph glyph-name=\"clipboard\" unicode=\"&#xf328;\" horiz-adv-x=\"384\" \nd=\"M336 384c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h80c0 35.2998 28.7002 64 64 64s64 -28.7002 64 -64h80zM192 408c-13.2998 0 -24 -10.7002 -24 -24s10.7002 -24 24 -24s24 10.7002 24 24\ns-10.7002 24 -24 24zM336 -10v340c0 3.2998 -2.7002 6 -6 6h-42v-36c0 -6.59961 -5.40039 -12 -12 -12h-168c-6.59961 0 -12 5.40039 -12 12v36h-42c-3.2998 0 -6 -2.7002 -6 -6v-340c0 -3.2998 2.7002 -6 6 -6h276c3.2998 0 6 2.7002 6 6z\" />\n    <glyph glyph-name=\"arrow-alt-circle-down\" unicode=\"&#xf358;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM256 -8c110.5 0 200 89.5 200 200s-89.5 200 -200 200s-200 -89.5 -200 -200s89.5 -200 200 -200zM224 308c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-116\nh67c10.7002 0 16.0996 -12.9004 8.5 -20.5l-99 -99c-4.7002 -4.7002 -12.2998 -4.7002 -17 0l-99 99c-7.5 7.59961 -2.2002 20.5 8.5 20.5h67v116z\" />\n    <glyph glyph-name=\"arrow-alt-circle-left\" unicode=\"&#xf359;\" \nd=\"M8 192c0 137 111 248 248 248s248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248zM456 192c0 110.5 -89.5 200 -200 200s-200 -89.5 -200 -200s89.5 -200 200 -200s200 89.5 200 200zM384 212v-40c0 -6.59961 -5.40039 -12 -12 -12h-116v-67\nc0 -10.7002 -12.9004 -16 -20.5 -8.5l-99 99c-4.7002 4.7002 -4.7002 12.2998 0 17l99 99c7.59961 7.59961 20.5 2.2002 20.5 -8.5v-67h116c6.59961 0 12 -5.40039 12 -12z\" />\n    <glyph glyph-name=\"arrow-alt-circle-right\" unicode=\"&#xf35a;\" \nd=\"M504 192c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248s248 -111 248 -248zM56 192c0 -110.5 89.5 -200 200 -200s200 89.5 200 200s-89.5 200 -200 200s-200 -89.5 -200 -200zM128 172v40c0 6.59961 5.40039 12 12 12h116v67\nc0 10.7002 12.9004 16 20.5 8.5l99 -99c4.7002 -4.7002 4.7002 -12.2998 0 -17l-99 -99c-7.59961 -7.59961 -20.5 -2.2002 -20.5 8.5v67h-116c-6.59961 0 -12 5.40039 -12 12z\" />\n    <glyph glyph-name=\"arrow-alt-circle-up\" unicode=\"&#xf35b;\" \nd=\"M256 -56c-137 0 -248 111 -248 248s111 248 248 248s248 -111 248 -248s-111 -248 -248 -248zM256 392c-110.5 0 -200 -89.5 -200 -200s89.5 -200 200 -200s200 89.5 200 200s-89.5 200 -200 200zM276 64h-40c-6.59961 0 -12 5.40039 -12 12v116h-67\nc-10.7002 0 -16 12.9004 -8.5 20.5l99 99c4.7002 4.7002 12.2998 4.7002 17 0l99 -99c7.59961 -7.59961 2.2002 -20.5 -8.5 -20.5h-67v-116c0 -6.59961 -5.40039 -12 -12 -12z\" />\n    <glyph glyph-name=\"gem\" unicode=\"&#xf3a5;\" horiz-adv-x=\"576\" \nd=\"M464 448c4.09961 0 7.7998 -2 10.0996 -5.40039l99.9004 -147.199c2.90039 -4.40039 2.59961 -10.1006 -0.700195 -14.2002l-276 -340.8c-4.7998 -5.90039 -13.7998 -5.90039 -18.5996 0l-276 340.8c-3.2998 4 -3.60059 9.7998 -0.700195 14.2002l100 147.199\nc2.2002 3.40039 6 5.40039 10 5.40039h352zM444.7 400h-56.7998l51.6992 -96h68.4004zM242.6 400l-51.5996 -96h194l-51.7002 96h-90.7002zM131.3 400l-63.2998 -96h68.4004l51.6992 96h-56.7998zM88.2998 256l119.7 -160l-68.2998 160h-51.4004zM191.2 256l96.7998 -243.3\nl96.7998 243.3h-193.6zM368 96l119.6 160h-51.3994z\" />\n    <glyph glyph-name=\"money-bill-alt\" unicode=\"&#xf3d1;\" horiz-adv-x=\"640\" \nd=\"M320 304c53.0195 0 96 -50.1396 96 -112c0 -61.8701 -43 -112 -96 -112c-53.0195 0 -96 50.1504 -96 112c0 61.8604 42.9805 112 96 112zM360 136v16c0 4.41992 -3.58008 8 -8 8h-16v88c0 4.41992 -3.58008 8 -8 8h-13.5801h-0.000976562\nc-4.01074 0 -9.97266 -1.80566 -13.3086 -4.03027l-15.3301 -10.2197c-1.96777 -1.30957 -3.56445 -4.29004 -3.56445 -6.65332c0 -1.33691 0.601562 -3.32422 1.34375 -4.43652l8.88086 -13.3105c1.30859 -1.9668 4.29004 -3.56445 6.65332 -3.56445\nc1.33691 0 3.32422 0.602539 4.43652 1.34473l0.469727 0.310547v-55.4404h-16c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h64c4.41992 0 8 3.58008 8 8zM608 384c17.6699 0 32 -14.3301 32 -32v-320c0 -17.6699 -14.3301 -32 -32 -32h-576\nc-17.6699 0 -32 14.3301 -32 32v320c0 17.6699 14.3301 32 32 32h576zM592 112v160c-35.3496 0 -64 28.6504 -64 64h-416c0 -35.3496 -28.6504 -64 -64 -64v-160c35.3496 0 64 -28.6504 64 -64h416c0 35.3496 28.6504 64 64 64z\" />\n    <glyph glyph-name=\"window-close\" unicode=\"&#xf410;\" \nd=\"M464 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h416zM464 22v340c0 3.2998 -2.7002 6 -6 6h-404c-3.2998 0 -6 -2.7002 -6 -6v-340c0 -3.2998 2.7002 -6 6 -6h404c3.2998 0 6 2.7002 6 6z\nM356.5 253.4l-61.4004 -61.4004l61.4004 -61.4004c4.59961 -4.59961 4.59961 -12.0996 0 -16.7998l-22.2998 -22.2998c-4.60059 -4.59961 -12.1006 -4.59961 -16.7998 0l-61.4004 61.4004l-61.4004 -61.4004c-4.59961 -4.59961 -12.0996 -4.59961 -16.7998 0\nl-22.2998 22.2998c-4.59961 4.60059 -4.59961 12.1006 0 16.7998l61.4004 61.4004l-61.4004 61.4004c-4.59961 4.59961 -4.59961 12.0996 0 16.7998l22.2998 22.2998c4.60059 4.59961 12.1006 4.59961 16.7998 0l61.4004 -61.4004l61.4004 61.4004\nc4.59961 4.59961 12.0996 4.59961 16.7998 0l22.2998 -22.2998c4.7002 -4.60059 4.7002 -12.1006 0 -16.7998z\" />\n    <glyph glyph-name=\"comment-dots\" unicode=\"&#xf4ad;\" \nd=\"M144 240c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32zM256 240c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32zM368 240c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32\ns-32 14.2998 -32 32s14.2998 32 32 32zM256 416c141.4 0 256 -93.0996 256 -208s-114.6 -208 -256 -208c-32.7998 0 -64 5.2002 -92.9004 14.2998c-29.0996 -20.5996 -77.5996 -46.2998 -139.1 -46.2998c-9.59961 0 -18.2998 5.7002 -22.0996 14.5\nc-3.80078 8.7998 -2 19 4.59961 26c0.5 0.400391 31.5 33.7998 46.4004 73.2002c-33 35.0996 -52.9004 78.7002 -52.9004 126.3c0 114.9 114.6 208 256 208zM256 48c114.7 0 208 71.7998 208 160s-93.2998 160 -208 160s-208 -71.7998 -208 -160\nc0 -42.2002 21.7002 -74.0996 39.7998 -93.4004l20.6006 -21.7998l-10.6006 -28.0996c-5.5 -14.5 -12.5996 -28.1006 -19.8994 -40.2002c23.5996 7.59961 43.1992 18.9004 57.5 29l19.5 13.7998l22.6992 -7.2002c25.3008 -8 51.7002 -12.0996 78.4004 -12.0996z\" />\n    <glyph glyph-name=\"smile-wink\" unicode=\"&#xf4da;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM365.8 138.4c10.2002 -8.5 11.6006 -23.6006 3.10059 -33.8008\nc-30 -36 -74.1006 -56.5996 -120.9 -56.5996s-90.9004 20.5996 -120.9 56.5996c-8.39941 10.2002 -7.09961 25.3008 3.10059 33.8008c10.0996 8.39941 25.2998 7.09961 33.7998 -3.10059c20.7998 -25.0996 51.5 -39.3994 84 -39.3994s63.2002 14.3994 84 39.3994\nc8.5 10.2002 23.5996 11.6006 33.7998 3.10059zM168 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32zM328 268c25.7002 0 55.9004 -16.9004 59.7002 -42.0996c1.7998 -11.1006 -11.2998 -18.2002 -19.7998 -10.8008l-9.5 8.5\nc-14.8008 13.2002 -46.2002 13.2002 -61 0l-9.5 -8.5c-8.30078 -7.39941 -21.5 -0.399414 -19.8008 10.8008c4 25.1992 34.2002 42.0996 59.9004 42.0996z\" />\n    <glyph glyph-name=\"angry\" unicode=\"&#xf556;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM248 136c33.5996 0 65.2002 -14.7998 86.7998 -40.5996\nc8.40039 -10.2002 7.10059 -25.3008 -3.09961 -33.8008c-10.6006 -8.89941 -25.7002 -6.69922 -33.7998 3c-24.8008 29.7002 -75 29.7002 -99.8008 0c-8.5 -10.1992 -23.5996 -11.5 -33.7998 -3s-11.5996 23.6006 -3.09961 33.8008\nc21.5996 25.7998 53.2002 40.5996 86.7998 40.5996zM200 208c0 -17.7002 -14.2998 -32.0996 -32 -32.0996s-32 14.2998 -32 32c0 6.19922 2.2002 11.6992 5.2998 16.5996l-28.2002 8.5c-12.6992 3.7998 -19.8994 17.2002 -16.0996 29.9004\nc3.7998 12.6992 17.0996 20 29.9004 16.0996l80 -24c12.6992 -3.7998 19.8994 -17.2002 16.0996 -29.9004c-3.09961 -10.3994 -12.7002 -17.0996 -23 -17.0996zM399 262.9c3.7998 -12.7002 -3.40039 -26.1006 -16.0996 -29.8008l-28.2002 -8.5\nc3.09961 -4.89941 5.2998 -10.3994 5.2998 -16.5996c0 -17.7002 -14.2998 -32 -32 -32s-32 14.2998 -32 32c-10.2998 0 -19.9004 6.7002 -23 17.0996c-3.7998 12.7002 3.40039 26.1006 16.0996 29.9004l80 24c12.8008 3.7998 26.1006 -3.40039 29.9004 -16.0996z\" />\n    <glyph glyph-name=\"dizzy\" unicode=\"&#xf567;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM214.2 209.9\nc-7.90039 -7.90039 -20.5 -7.90039 -28.4004 -0.200195l-17.7998 17.7998l-17.7998 -17.7998c-7.7998 -7.7998 -20.5 -7.7998 -28.2998 0c-7.80078 7.7998 -7.80078 20.5 0 28.2998l17.8994 17.9004l-17.8994 17.8994c-7.80078 7.7998 -7.80078 20.5 0 28.2998\nc7.7998 7.80078 20.5 7.80078 28.2998 0l17.7998 -17.7998l17.9004 17.9004c7.7998 7.7998 20.5 7.7998 28.2998 0s7.7998 -20.5 0 -28.2998l-17.9004 -17.9004l17.9004 -17.7998c7.7998 -7.7998 7.7998 -20.5 0 -28.2998zM374.2 302.1\nc7.7002 -7.7998 7.7002 -20.3994 0 -28.1992l-17.9004 -17.9004l17.7998 -18c7.80078 -7.7998 7.80078 -20.5 0 -28.2998c-7.7998 -7.7998 -20.5 -7.7998 -28.2998 0l-17.7998 17.7998l-17.7998 -17.7998c-7.7998 -7.7998 -20.5 -7.7998 -28.2998 0\nc-7.80078 7.7998 -7.80078 20.5 0 28.2998l17.8994 17.9004l-17.8994 17.8994c-7.80078 7.7998 -7.80078 20.5 0 28.2998c7.7998 7.80078 20.5 7.80078 28.2998 0l17.7998 -17.7998l17.9004 17.7998c7.7998 7.80078 20.5 7.80078 28.2998 0zM248 176\nc35.2998 0 64 -28.7002 64 -64s-28.7002 -64 -64 -64s-64 28.7002 -64 64s28.7002 64 64 64z\" />\n    <glyph glyph-name=\"flushed\" unicode=\"&#xf579;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM344 304c44.2002 0 80 -35.7998 80 -80s-35.7998 -80 -80 -80\ns-80 35.7998 -80 80s35.7998 80 80 80zM344 176c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48zM344 248c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24s-24 10.7002 -24 24s10.7002 24 24 24zM232 224c0 -44.2002 -35.7998 -80 -80 -80\ns-80 35.7998 -80 80s35.7998 80 80 80s80 -35.7998 80 -80zM152 176c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48zM152 248c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24s-24 10.7002 -24 24s10.7002 24 24 24zM312 104\nc13.2002 0 24 -10.7998 24 -24s-10.7998 -24 -24 -24h-128c-13.2002 0 -24 10.7998 -24 24s10.7998 24 24 24h128z\" />\n    <glyph glyph-name=\"frown-open\" unicode=\"&#xf57a;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM200 240c0 -17.7002 -14.2998 -32 -32 -32s-32 14.2998 -32 32\ns14.2998 32 32 32s32 -14.2998 32 -32zM328 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32zM248 160c35.5996 0 88.7998 -21.2998 95.7998 -61.2002c2 -11.7998 -9.09961 -21.5996 -20.5 -18.0996\nc-31.2002 9.59961 -59.3994 15.2998 -75.2998 15.2998s-44.0996 -5.7002 -75.2998 -15.2998c-11.5 -3.40039 -22.5 6.2998 -20.5 18.0996c7 39.9004 60.2002 61.2002 95.7998 61.2002z\" />\n    <glyph glyph-name=\"grimace\" unicode=\"&#xf57f;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM168 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32\ns32 -14.2998 32 -32s-14.2998 -32 -32 -32zM328 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32zM344 192c26.5 0 48 -21.5 48 -48v-32c0 -26.5 -21.5 -48 -48 -48h-192c-26.5 0 -48 21.5 -48 48v32c0 26.5 21.5 48 48 48\nh192zM176 96v24h-40v-8c0 -8.7998 7.2002 -16 16 -16h24zM176 136v24h-24c-8.7998 0 -16 -7.2002 -16 -16v-8h40zM240 96v24h-48v-24h48zM240 136v24h-48v-24h48zM304 96v24h-48v-24h48zM304 136v24h-48v-24h48zM360 112v8h-40v-24h24c8.7998 0 16 7.2002 16 16zM360 136v8\nc0 8.7998 -7.2002 16 -16 16h-24v-24h40z\" />\n    <glyph glyph-name=\"grin\" unicode=\"&#xf580;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM353.6 143.4c10 3.09961 19.3008 -5.5 17.7002 -15.3008\nc-8 -47.0996 -71.2998 -80 -123.3 -80s-115.4 32.9004 -123.3 80c-1.7002 9.90039 7.7998 18.4004 17.7002 15.3008c26 -8.30078 64.3994 -13.1006 105.6 -13.1006s79.7002 4.7998 105.6 13.1006zM168 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32\ns32 -14.2998 32 -32s-14.2998 -32 -32 -32zM328 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32z\" />\n    <glyph glyph-name=\"grin-alt\" unicode=\"&#xf581;\" horiz-adv-x=\"496\" \nd=\"M200.3 200c-7.5 -11.4004 -24.5996 -12 -32.7002 0c-12.3994 18.7002 -15.1992 37.2998 -15.6992 56c0.599609 18.7002 3.2998 37.2998 15.6992 56c7.60059 11.4004 24.7002 12 32.7002 0c12.4004 -18.7002 15.2002 -37.2998 15.7002 -56\nc-0.599609 -18.7002 -3.2998 -37.2998 -15.7002 -56zM328.3 200c-7.5 -11.4004 -24.5996 -12 -32.7002 0c-12.3994 18.7002 -15.1992 37.2998 -15.6992 56c0.599609 18.7002 3.2998 37.2998 15.6992 56c7.60059 11.4004 24.7002 12 32.7002 0\nc12.4004 -18.7002 15.2002 -37.2998 15.7002 -56c-0.599609 -18.7002 -3.2998 -37.2998 -15.7002 -56zM248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200\ns-200 -89.7002 -200 -200s89.7002 -200 200 -200zM353.6 143.4c10 3.09961 19.3008 -5.5 17.7002 -15.3008c-8 -47.0996 -71.2998 -80 -123.3 -80s-115.4 32.8008 -123.3 80c-1.7002 10 7.7998 18.4004 17.7002 15.3008c26 -8.30078 64.3994 -13.1006 105.6 -13.1006\ns79.7002 4.7998 105.6 13.1006z\" />\n    <glyph glyph-name=\"grin-beam\" unicode=\"&#xf582;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM353.6 143.4c10 3.09961 19.3008 -5.5 17.7002 -15.3008\nc-8 -47.0996 -71.2998 -80 -123.3 -80s-115.4 32.9004 -123.3 80c-1.7002 10 7.89941 18.4004 17.7002 15.3008c26 -8.30078 64.3994 -13.1006 105.6 -13.1006s79.7002 4.7998 105.6 13.1006zM117.7 216.3c-3.60059 1.10059 -6 4.60059 -5.7002 8.2998\nc3.2998 42.1006 32.2002 71.4004 56 71.4004s52.7002 -29.2998 56 -71.4004c0.299805 -3.7998 -2.09961 -7.19922 -5.7002 -8.2998c-3.09961 -1 -7.2002 0 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996s-23.7998 -7.89941 -31.5 -21.5996\nl-9.5 -17c-1.90039 -3.2002 -5.7998 -4.7998 -9.2998 -3.7002zM277.7 216.3c-3.60059 1.10059 -6 4.60059 -5.7002 8.2998c3.2998 42.1006 32.2002 71.4004 56 71.4004s52.7002 -29.2998 56 -71.4004c0.299805 -3.7998 -2.09961 -7.19922 -5.7002 -8.2998\nc-3.09961 -1 -7.2002 0 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996s-23.7998 -7.89941 -31.5 -21.5996l-9.5 -17c-1.90039 -3.2002 -5.7998 -4.7998 -9.2998 -3.7002z\" />\n    <glyph glyph-name=\"grin-beam-sweat\" unicode=\"&#xf583;\" horiz-adv-x=\"496\" \nd=\"M440 288c-29.5 0 -53.2998 26.2998 -53.2998 58.7002c0 25 31.7002 75.5 46.2002 97.2998c3.5 5.2998 10.5996 5.2998 14.1992 0c14.5 -21.7998 46.2002 -72.2998 46.2002 -97.2998c0 -32.4004 -23.7998 -58.7002 -53.2998 -58.7002zM248 48\nc-51.9004 0 -115.3 32.9004 -123.3 80c-1.7002 10 7.89941 18.4004 17.7002 15.2998c26 -8.2998 64.3994 -13.0996 105.6 -13.0996s79.7002 4.7998 105.6 13.0996c10 3.2002 19.4004 -5.39941 17.7002 -15.2998c-8 -47.0996 -71.3994 -80 -123.3 -80zM378.3 216.3\nc-3.09961 -0.899414 -7.2002 0.100586 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996s-23.7998 -7.89941 -31.5 -21.5996l-9.5 -17c-1.90039 -3.2002 -5.7998 -4.7998 -9.2998 -3.7002c-3.60059 1.10059 -6 4.60059 -5.7002 8.2998\nc3.2998 42.1006 32.2002 71.4004 56 71.4004s52.7002 -29.2998 56 -71.4004c0.299805 -3.7998 -2.09961 -7.19922 -5.7002 -8.2998zM483.6 269.2c8 -24.2998 12.4004 -50.2002 12.4004 -77.2002c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248\nc45.7002 0 88.4004 -12.5996 125.2 -34.2002c-10.9004 -21.5996 -15.5 -36.2002 -17.2002 -45.7002c-31.2002 20.1006 -68.2002 31.9004 -108 31.9004c-110.3 0 -200 -89.7002 -200 -200s89.7002 -200 200 -200s200 89.7002 200 200\nc0 22.5 -3.90039 44.0996 -10.7998 64.2998c0.399414 0 21.7998 -2.7998 46.3994 12.9004zM168 258.6c-12.2998 0 -23.7998 -7.7998 -31.5 -21.5996l-9.5 -17c-1.90039 -3.2002 -5.7998 -4.7998 -9.2998 -3.7002c-3.60059 1.10059 -6 4.60059 -5.7002 8.2998\nc3.2998 42.1006 32.2002 71.4004 56 71.4004s52.7002 -29.2998 56 -71.4004c0.299805 -3.7998 -2.09961 -7.19922 -5.7002 -8.2998c-3.09961 -1 -7.2002 0 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996z\" />\n    <glyph glyph-name=\"grin-hearts\" unicode=\"&#xf584;\" horiz-adv-x=\"496\" \nd=\"M353.6 143.4c10 3.09961 19.3008 -5.5 17.7002 -15.3008c-8 -47.0996 -71.2998 -80 -123.3 -80s-115.4 32.8008 -123.3 80c-1.7002 10 7.89941 18.4004 17.7002 15.3008c26 -8.30078 64.3994 -13.1006 105.6 -13.1006s79.7002 4.7998 105.6 13.1006zM200.8 192.3\nl-70.2002 18.1006c-20.3994 5.2998 -31.8994 27 -24.1992 47.1992c6.69922 17.7002 26.6992 26.7002 44.8994 22l7.10059 -1.89941l2 7.09961c5.09961 18.1006 22.8994 30.9004 41.5 27.9004c21.3994 -3.40039 34.3994 -24.2002 28.7998 -44.5l-19.4004 -69.9004\nc-1.2998 -4.5 -6 -7.2002 -10.5 -6zM389.6 257.6c7.7002 -20.1992 -3.7998 -41.7998 -24.1992 -47.0996l-70.2002 -18.2002c-4.60059 -1.2002 -9.2998 1.5 -10.5 6l-19.4004 69.9004c-5.59961 20.2998 7.40039 41.0996 28.7998 44.5c18.7002 3 36.5 -9.7998 41.5 -27.9004\nl2 -7.09961l7.10059 1.89941c18.2002 4.7002 38.2002 -4.39941 44.8994 -22zM248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200\ns89.7002 -200 200 -200z\" />\n    <glyph glyph-name=\"grin-squint\" unicode=\"&#xf585;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM353.6 143.4c10 3.09961 19.3008 -5.5 17.7002 -15.3008\nc-8 -47.0996 -71.2998 -80 -123.3 -80s-115.4 32.9004 -123.3 80c-1.7002 9.90039 7.7998 18.4004 17.7002 15.3008c26 -8.30078 64.3994 -13.1006 105.6 -13.1006s79.7002 4.7998 105.6 13.1006zM118.9 184.2c-3.80078 4.39941 -3.90039 11 -0.100586 15.5l33.6006 40.2998\nl-33.6006 40.2998c-3.7002 4.5 -3.7002 11 0.100586 15.5c3.89941 4.40039 10.1992 5.5 15.2998 2.5l80 -48c3.59961 -2.2002 5.7998 -6.09961 5.7998 -10.2998s-2.2002 -8.09961 -5.7998 -10.2998l-80 -48c-5.40039 -3.2002 -11.7002 -1.7002 -15.2998 2.5zM361.8 181.7\nl-80 48c-3.59961 2.2002 -5.7998 6.09961 -5.7998 10.2998s2.2002 8.09961 5.7998 10.2998l80 48c5.10059 2.90039 11.5 1.90039 15.2998 -2.5c3.80078 -4.5 3.90039 -11 0.100586 -15.5l-33.6006 -40.2998l33.6006 -40.2998c3.7002 -4.5 3.7002 -11 -0.100586 -15.5\nc-3.59961 -4.2002 -9.89941 -5.7002 -15.2998 -2.5z\" />\n    <glyph glyph-name=\"grin-squint-tears\" unicode=\"&#xf586;\" \nd=\"M117.1 63.9004c6.30078 0.899414 11.7002 -4.5 10.9004 -10.9004c-3.7002 -25.7998 -13.7002 -84 -30.5996 -100.9c-22 -21.8994 -57.9004 -21.5 -80.3008 0.900391c-22.3994 22.4004 -22.7998 58.4004 -0.899414 80.2998\nc16.8994 16.9004 75.0996 26.9004 100.899 30.6006zM75.9004 105.6c-19.6006 -3.89941 -35.1006 -8.09961 -47.3008 -12.1992c-39.2998 90.5996 -22.0996 199.899 52 274c48.5 48.3994 111.9 72.5996 175.4 72.5996c38.9004 0 77.7998 -9.2002 113.2 -27.4004\nc-4 -12.1992 -8.2002 -28 -12 -48.2998c-30.4004 17.9004 -65 27.7002 -101.2 27.7002c-53.4004 0 -103.6 -20.7998 -141.4 -58.5996c-61.5996 -61.5 -74.2998 -153.4 -38.6992 -227.801zM428.2 293.2c20.2998 3.89941 36.2002 8 48.5 12\nc47.8994 -93.2002 32.8994 -210.5 -45.2002 -288.601c-48.5 -48.3994 -111.9 -72.5996 -175.4 -72.5996c-33.6992 0 -67.2998 7 -98.6992 20.5996c4.19922 12.2002 8.2998 27.7002 12.1992 47.2002c26.6006 -12.7998 55.9004 -19.7998 86.4004 -19.7998\nc53.4004 0 103.6 20.7998 141.4 58.5996c65.6992 65.7002 75.7998 166 30.7998 242.601zM394.9 320.1c-6.30078 -0.899414 -11.7002 4.5 -10.9004 10.9004c3.7002 25.7998 13.7002 84 30.5996 100.9c22 21.8994 57.9004 21.5 80.3008 -0.900391\nc22.3994 -22.4004 22.7998 -58.4004 0.899414 -80.2998c-16.8994 -16.9004 -75.0996 -26.9004 -100.899 -30.6006zM207.9 211.8c3 -3 4.19922 -7.2998 3.19922 -11.5l-22.5996 -90.5c-1.40039 -5.39941 -6.2002 -9.09961 -11.7002 -9.09961h-0.899414\nc-5.80078 0.5 -10.5 5.09961 -11 10.8994l-4.80078 52.3008l-52.2998 4.7998c-5.7998 0.5 -10.3994 5.2002 -10.8994 11c-0.400391 5.89941 3.39941 11.2002 9.09961 12.5996l90.5 22.7002c4.2002 1 8.40039 -0.200195 11.4004 -3.2002zM247.6 236.9\nc-0.0996094 0 -6.39941 -1.80078 -11.3994 3.19922c-3 3 -4.2002 7.30078 -3.2002 11.4004l22.5996 90.5c1.40039 5.7002 7 9.2002 12.6006 9.09961c5.7998 -0.5 10.5 -5.09961 11 -10.8994l4.7998 -52.2998l52.2998 -4.80078c5.7998 -0.5 10.4004 -5.19922 10.9004 -11\nc0.399414 -5.89941 -3.40039 -11.1992 -9.10059 -12.5996zM299.6 148.4c29.1006 29.0996 53 59.5996 65.3008 83.7998c4.89941 9.2998 17.5996 9.89941 23.3994 1.7002c27.7002 -38.9004 6.10059 -106.9 -30.5996 -143.7s-104.8 -58.2998 -143.7 -30.6006\nc-8.2998 5.90039 -7.5 18.6006 1.7002 23.4004c24.2002 12.5 54.7998 36.2998 83.8994 65.4004z\" />\n    <glyph glyph-name=\"grin-stars\" unicode=\"&#xf587;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM353.6 143.4c10 3.09961 19.3008 -5.5 17.7002 -15.3008\nc-8 -47.0996 -71.2998 -80 -123.3 -80s-115.4 32.8008 -123.3 80c-1.7002 10 7.89941 18.4004 17.7002 15.3008c26 -8.30078 64.3994 -13.1006 105.6 -13.1006s79.7002 4.7998 105.6 13.1006zM125.7 200.9l6.09961 34.8994l-25.3994 24.6006\nc-4.60059 4.59961 -1.90039 12.2998 4.2998 13.1992l34.8994 5l15.5 31.6006c2.90039 5.7998 11 5.7998 13.9004 0l15.5 -31.6006l34.9004 -5c6.19922 -1 8.7998 -8.69922 4.2998 -13.1992l-25.4004 -24.6006l6 -34.8994c1 -6.2002 -5.39941 -11 -11 -7.90039\nl-31.2998 16.2998l-31.2998 -16.2998c-5.60059 -3.09961 -12 1.7002 -11 7.90039zM385.4 273.6c6.19922 -1 8.89941 -8.59961 4.39941 -13.1992l-25.3994 -24.6006l6 -34.8994c1 -6.2002 -5.40039 -11 -11 -7.90039l-31.3008 16.2998l-31.2998 -16.2998\nc-5.59961 -3.09961 -12 1.7002 -11 7.90039l6 34.8994l-25.3994 24.6006c-4.60059 4.59961 -1.90039 12.2998 4.2998 13.1992l34.8994 5l15.5 31.6006c2.90039 5.7998 11 5.7998 13.9004 0l15.5 -31.6006z\" />\n    <glyph glyph-name=\"grin-tears\" unicode=\"&#xf588;\" horiz-adv-x=\"640\" \nd=\"M117.1 191.9c6.30078 0.899414 11.7002 -4.5 10.9004 -10.9004c-3.7002 -25.7998 -13.7002 -84 -30.5996 -100.9c-22 -21.8994 -57.9004 -21.5 -80.3008 0.900391c-22.3994 22.4004 -22.7998 58.4004 -0.899414 80.2998c16.8994 16.9004 75.0996 26.9004 100.899 30.6006\nzM623.8 161.3c21.9004 -21.8994 21.5 -57.8994 -0.799805 -80.2002c-22.4004 -22.3994 -58.4004 -22.7998 -80.2998 -0.899414c-16.9004 16.8994 -26.9004 75.0996 -30.6006 100.899c-0.899414 6.30078 4.5 11.7002 10.8008 10.8008\nc25.7998 -3.7002 84 -13.7002 100.899 -30.6006zM497.2 99.5996c12.3994 -37.2998 25.0996 -43.7998 28.2998 -46.5c-44.5996 -65.7998 -120 -109.1 -205.5 -109.1s-160.9 43.2998 -205.5 109.1c3.09961 2.60059 15.7998 9.10059 28.2998 46.5\nc33.4004 -63.8994 100.3 -107.6 177.2 -107.6s143.8 43.7002 177.2 107.6zM122.7 223.5c-2.40039 0.299805 -5 2.5 -49.5 -6.90039c12.3994 125.4 118.1 223.4 246.8 223.4s234.4 -98 246.8 -223.5c-44.2998 9.40039 -47.3994 7.2002 -49.5 7\nc-15.2002 95.2998 -97.7998 168.5 -197.3 168.5s-182.1 -73.2002 -197.3 -168.5zM320 48c-51.9004 0 -115.3 32.9004 -123.3 80c-1.7002 10 7.89941 18.4004 17.7002 15.2998c26 -8.2998 64.3994 -13.0996 105.6 -13.0996s79.7002 4.7998 105.6 13.0996\nc10 3.2002 19.4004 -5.39941 17.7002 -15.2998c-8 -47.0996 -71.3994 -80 -123.3 -80zM450.3 216.3c-3.09961 -0.899414 -7.2002 0.100586 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996s-23.7998 -7.89941 -31.5 -21.5996l-9.5 -17\nc-1.90039 -3.2002 -5.7998 -4.7998 -9.2998 -3.7002c-3.60059 1.10059 -6 4.60059 -5.7002 8.2998c3.2998 42.1006 32.2002 71.4004 56 71.4004s52.7002 -29.2998 56 -71.4004c0.299805 -3.7998 -2.09961 -7.19922 -5.7002 -8.2998zM240 258.6\nc-12.2998 0 -23.7998 -7.7998 -31.5 -21.5996l-9.5 -17c-1.90039 -3.2002 -5.7998 -4.7998 -9.2998 -3.7002c-3.60059 1.10059 -6 4.60059 -5.7002 8.2998c3.2998 42.1006 32.2002 71.4004 56 71.4004s52.7002 -29.2998 56 -71.4004\nc0.299805 -3.7998 -2.09961 -7.19922 -5.7002 -8.2998c-3.09961 -1 -7.2002 0 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996z\" />\n    <glyph glyph-name=\"grin-tongue\" unicode=\"&#xf589;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM312 40h0.0996094v43.7998l-17.6992 8.7998c-15.1006 7.60059 -31.5 -1.69922 -34.9004 -16.5l-2.7998 -12.0996c-2.10059 -9.2002 -15.2002 -9.2002 -17.2998 0\nl-2.80078 12.0996c-3.39941 14.8008 -19.8994 24 -34.8994 16.5l-17.7002 -8.7998v-42.7998c0 -35.2002 28 -64.5 63.0996 -65c35.8008 -0.5 64.9004 28.4004 64.9004 64zM340.2 14.7002c64 33.3994 107.8 100.3 107.8 177.3c0 110.3 -89.7002 200 -200 200\ns-200 -89.7002 -200 -200c0 -77 43.7998 -143.9 107.8 -177.3c-2.2002 8.09961 -3.7998 16.5 -3.7998 25.2998v43.5c-14.2002 12.4004 -24.4004 27.5 -27.2998 44.5c-1.7002 10 7.7998 18.4004 17.7002 15.2998c26 -8.2998 64.3994 -13.0996 105.6 -13.0996\ns79.7002 4.7998 105.6 13.0996c10 3.2002 19.4004 -5.39941 17.7002 -15.2998c-2.89941 -17 -13.0996 -32.0996 -27.2998 -44.5v-43.5c0 -8.7998 -1.59961 -17.2002 -3.7998 -25.2998zM168 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32\ns14.2998 32 32 32zM328 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32z\" />\n    <glyph glyph-name=\"grin-tongue-squint\" unicode=\"&#xf58a;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM312 40h0.0996094v43.7998l-17.6992 8.7998c-15.1006 7.60059 -31.5 -1.69922 -34.9004 -16.5l-2.7998 -12.0996c-2.10059 -9.2002 -15.2002 -9.2002 -17.2998 0\nl-2.80078 12.0996c-3.39941 14.8008 -19.8994 24 -34.8994 16.5l-17.7002 -8.7998v-42.7998c0 -35.2002 28 -64.5 63.0996 -65c35.8008 -0.5 64.9004 28.4004 64.9004 64zM340.2 14.7002c64 33.3994 107.8 100.3 107.8 177.3c0 110.3 -89.7002 200 -200 200\ns-200 -89.7002 -200 -200c0 -77 43.7998 -143.9 107.8 -177.3c-2.2002 8.09961 -3.7998 16.5 -3.7998 25.2998v43.5c-14.2002 12.4004 -24.4004 27.5 -27.2998 44.5c-1.7002 10 7.7998 18.4004 17.7002 15.2998c26 -8.2998 64.3994 -13.0996 105.6 -13.0996\ns79.7002 4.7998 105.6 13.0996c10 3.2002 19.4004 -5.39941 17.7002 -15.2998c-2.89941 -17 -13.0996 -32.0996 -27.2998 -44.5v-43.5c0 -8.7998 -1.59961 -17.2002 -3.7998 -25.2998zM377.1 295.8c3.80078 -4.39941 3.90039 -11 0.100586 -15.5l-33.6006 -40.2998\nl33.6006 -40.2998c3.7002 -4.5 3.7002 -11 -0.100586 -15.5c-3.59961 -4.2002 -9.89941 -5.7002 -15.2998 -2.5l-80 48c-3.59961 2.2002 -5.7998 6.09961 -5.7998 10.2998s2.2002 8.09961 5.7998 10.2998l80 48c5 3 11.5 1.90039 15.2998 -2.5zM214.2 250.3\nc3.59961 -2.2002 5.7998 -6.09961 5.7998 -10.2998s-2.2002 -8.09961 -5.7998 -10.2998l-80 -48c-5.40039 -3.2002 -11.7002 -1.7002 -15.2998 2.5c-3.80078 4.5 -3.90039 11 -0.100586 15.5l33.6006 40.2998l-33.6006 40.2998c-3.7002 4.5 -3.7002 11 0.100586 15.5\nc3.89941 4.5 10.2998 5.5 15.2998 2.5z\" />\n    <glyph glyph-name=\"grin-tongue-wink\" unicode=\"&#xf58b;\" horiz-adv-x=\"496\" \nd=\"M152 268c25.7002 0 55.9004 -16.9004 59.7998 -42.0996c0.799805 -5 -1.7002 -10 -6.09961 -12.4004c-5.7002 -3.09961 -11.2002 -0.599609 -13.7002 1.59961l-9.5 8.5c-14.7998 13.2002 -46.2002 13.2002 -61 0l-9.5 -8.5\nc-3.7998 -3.39941 -9.2998 -4 -13.7002 -1.59961c-4.39941 2.40039 -6.89941 7.40039 -6.09961 12.4004c3.89941 25.1992 34.0996 42.0996 59.7998 42.0996zM328 320c44.2002 0 80 -35.7998 80 -80s-35.7998 -80 -80 -80s-80 35.7998 -80 80s35.7998 80 80 80zM328 192\nc26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48zM328 264c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24s-24 10.7002 -24 24s10.7002 24 24 24zM248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248z\nM312 40h0.0996094v43.7998l-17.6992 8.7998c-15.1006 7.60059 -31.5 -1.69922 -34.9004 -16.5l-2.7998 -12.0996c-2.10059 -9.2002 -15.2002 -9.2002 -17.2998 0l-2.80078 12.0996c-3.39941 14.8008 -19.8994 24 -34.8994 16.5l-17.7002 -8.7998v-42.7998\nc0 -35.2002 28 -64.5 63.0996 -65c35.8008 -0.5 64.9004 28.4004 64.9004 64zM340.2 14.7002c64 33.3994 107.8 100.3 107.8 177.3c0 110.3 -89.7002 200 -200 200s-200 -89.7002 -200 -200c0 -77 43.7998 -143.9 107.8 -177.3\nc-2.2002 8.09961 -3.7998 16.5 -3.7998 25.2998v43.5c-14.2002 12.4004 -24.4004 27.5 -27.2998 44.5c-1.7002 10 7.7998 18.4004 17.7002 15.2998c26 -8.2998 64.3994 -13.0996 105.6 -13.0996s79.7002 4.7998 105.6 13.0996c10 3.2002 19.4004 -5.39941 17.7002 -15.2998\nc-2.89941 -17 -13.0996 -32.0996 -27.2998 -44.5v-43.5c0 -8.7998 -1.59961 -17.2002 -3.7998 -25.2998z\" />\n    <glyph glyph-name=\"grin-wink\" unicode=\"&#xf58c;\" horiz-adv-x=\"496\" \nd=\"M328 268c25.6904 0 55.8799 -16.9199 59.8701 -42.1201c1.72949 -11.0898 -11.3506 -18.2695 -19.8301 -10.8398l-9.5498 8.47949c-14.8105 13.1904 -46.1602 13.1904 -60.9707 0l-9.5498 -8.47949c-8.33008 -7.40039 -21.5801 -0.379883 -19.8301 10.8398\nc3.98047 25.2002 34.1699 42.1201 59.8604 42.1201zM168 208c-17.6699 0 -32 14.3301 -32 32s14.3301 32 32 32s32 -14.3301 32 -32s-14.3301 -32 -32 -32zM353.55 143.36c10.04 3.13965 19.3906 -5.4502 17.71 -15.3408\nc-7.92969 -47.1494 -71.3193 -80.0195 -123.26 -80.0195s-115.33 32.8701 -123.26 80.0195c-1.69043 9.9707 7.76953 18.4707 17.71 15.3408c25.9297 -8.31055 64.3994 -13.0605 105.55 -13.0605s79.6201 4.75977 105.55 13.0605zM248 440c136.97 0 248 -111.03 248 -248\ns-111.03 -248 -248 -248s-248 111.03 -248 248s111.03 248 248 248zM248 -8c110.28 0 200 89.7197 200 200s-89.7197 200 -200 200s-200 -89.7197 -200 -200s89.7197 -200 200 -200z\" />\n    <glyph glyph-name=\"kiss\" unicode=\"&#xf596;\" horiz-adv-x=\"496\" \nd=\"M168 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32zM304 140c0 -13 -13.4004 -27.2998 -35.0996 -36.4004c21.7998 -8.69922 35.1992 -23 35.1992 -36c0 -19.1992 -28.6992 -41.5 -71.5 -44h-0.5\nc-3.69922 0 -7 2.60059 -7.7998 6.2002c-0.899414 3.7998 1.10059 7.7002 4.7002 9.2002l17 7.2002c12.9004 5.5 20.7002 13.5 20.7002 21.5s-7.7998 16 -20.7998 21.5l-16.9004 7.2002c-6 2.59961 -5.7002 12.3994 0 14.7998l17 7.2002\nc12.9004 5.5 20.7002 13.5 20.7002 21.5s-7.7998 16 -20.7998 21.5l-16.9004 7.19922c-3.59961 1.5 -5.59961 5.40039 -4.7002 9.2002c0.799805 3.7998 4.40039 6.60059 8.2002 6.2002c42.7002 -2.5 71.5 -24.7998 71.5 -44zM248 440c137 0 248 -111 248 -248\ns-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM328 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32z\n\" />\n    <glyph glyph-name=\"kiss-beam\" unicode=\"&#xf597;\" horiz-adv-x=\"496\" \nd=\"M168 296c23.7998 0 52.7002 -29.2998 55.7998 -71.4004c0.299805 -3.7998 -2 -7.19922 -5.59961 -8.2998c-3.10059 -1 -7.2002 0 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996c-12.3008 0 -23.8008 -7.89941 -31.5 -21.5996l-9.5 -17\nc-1.80078 -3.2002 -5.80078 -4.7002 -9.30078 -3.7002c-3.59961 1.10059 -5.89941 4.60059 -5.59961 8.2998c3.2998 42.1006 32.2002 71.4004 56 71.4004zM248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8\nc110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM304 140c0 -13 -13.4004 -27.2998 -35.0996 -36.4004c21.7998 -8.69922 35.1992 -23 35.1992 -36c0 -19.1992 -28.6992 -41.5 -71.5 -44h-0.5\nc-3.69922 0 -7 2.60059 -7.7998 6.2002c-0.899414 3.7998 1.10059 7.7002 4.7002 9.2002l17 7.2002c12.9004 5.5 20.7002 13.5 20.7002 21.5s-7.7998 16 -20.7998 21.5l-16.9004 7.2002c-6 2.59961 -5.7002 12.3994 0 14.7998l17 7.2002\nc12.9004 5.5 20.7002 13.5 20.7002 21.5s-7.7998 16 -20.7998 21.5l-16.9004 7.19922c-3.59961 1.5 -5.59961 5.40039 -4.7002 9.2002c0.799805 3.7998 4.40039 6.60059 8.2002 6.2002c42.7002 -2.5 71.5 -24.7998 71.5 -44zM328 296\nc23.7998 0 52.7002 -29.2998 55.7998 -71.4004c0.299805 -3.7998 -2 -7.19922 -5.59961 -8.2998c-3.10059 -1 -7.2002 0 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996c-12.3008 0 -23.8008 -7.89941 -31.5 -21.5996l-9.5 -17\nc-1.80078 -3.2002 -5.80078 -4.7002 -9.30078 -3.7002c-3.59961 1.10059 -5.89941 4.60059 -5.59961 8.2998c3.2998 42.1006 32.2002 71.4004 56 71.4004z\" />\n    <glyph glyph-name=\"kiss-wink-heart\" unicode=\"&#xf598;\" horiz-adv-x=\"504\" \nd=\"M304 139.5c0 -13 -13.4004 -27.2998 -35.0996 -36.4004c21.7998 -8.69922 35.1992 -23 35.1992 -36c0 -19.1992 -28.6992 -41.5 -71.5 -44h-0.5c-3.69922 0 -7 2.60059 -7.7998 6.2002c-0.899414 3.7998 1.10059 7.7002 4.7002 9.2002l17 7.2002\nc12.9004 5.5 20.7002 13.5 20.7002 21.5s-7.7998 16 -20.7998 21.5l-16.9004 7.2002c-6 2.59961 -5.7002 12.3994 0 14.7998l17 7.2002c12.9004 5.5 20.7002 13.5 20.7002 21.5s-7.7998 16 -20.7998 21.5l-16.9004 7.19922c-3.59961 1.5 -5.59961 5.40039 -4.7002 9.2002\nc0.799805 3.7998 4.40039 6.60059 8.2002 6.2002c42.7002 -2.5 71.5 -24.7998 71.5 -44zM374.5 223c-14.7998 13.2002 -46.2002 13.2002 -61 0l-9.5 -8.5c-2.5 -2.2998 -7.90039 -4.7002 -13.7002 -1.59961c-4.39941 2.39941 -6.89941 7.39941 -6.09961 12.3994\nc3.89941 25.2002 34.2002 42.1006 59.7998 42.1006s55.7998 -16.9004 59.7998 -42.1006c0.799805 -5 -1.7002 -10 -6.09961 -12.3994c-4.40039 -2.40039 -9.90039 -1.7002 -13.7002 1.59961zM136 239.5c0 17.7002 14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32\ns-32 14.2998 -32 32zM501.1 45.5c9.2002 -23.9004 -4.39941 -49.4004 -28.5 -55.7002l-83 -21.5c-5.39941 -1.39941 -10.8994 1.7998 -12.3994 7.10059l-22.9004 82.5996c-6.59961 24 8.7998 48.5996 34 52.5996c22 3.5 43.1006 -11.5996 49 -33l2.2998 -8.39941\nl8.40039 2.2002c21.5996 5.59961 45.0996 -5.10059 53.0996 -25.9004zM334 11.7002c17.7002 -64 10.9004 -39.5 13.4004 -46.7998c-30.5 -13.4004 -64 -20.9004 -99.4004 -20.9004c-137 0 -248 111 -248 248s111 248 248 248s248 -111 247.9 -248\nc0 -31.7998 -6.2002 -62.0996 -17.1006 -90c-6 1.5 -12.2002 2.7998 -18.5996 2.90039c-5.60059 9.69922 -13.6006 17.5 -22.6006 23.8994c6.7002 19.9004 10.4004 41.1006 10.4004 63.2002c0 110.3 -89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200\nc30.7998 0 59.9004 7.2002 86 19.7002z\" />\n    <glyph glyph-name=\"laugh\" unicode=\"&#xf599;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM389.4 50.5996c37.7998 37.8008 58.5996 88 58.5996 141.4s-20.7998 103.6 -58.5996 141.4c-37.8008 37.7998 -88 58.5996 -141.4 58.5996s-103.6 -20.7998 -141.4 -58.5996\nc-37.7998 -37.8008 -58.5996 -88 -58.5996 -141.4s20.7998 -103.6 58.5996 -141.4c37.8008 -37.7998 88 -58.5996 141.4 -58.5996s103.6 20.7998 141.4 58.5996zM328 224c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32zM168 224\nc-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32zM362.4 160c8.19922 0 14.5 -7 13.5 -15c-7.5 -59.2002 -58.9004 -105 -121.101 -105h-13.5996c-62.2002 0 -113.601 45.7998 -121.101 105c-1 8 5.30078 15 13.5 15h228.801z\" />\n    <glyph glyph-name=\"laugh-beam\" unicode=\"&#xf59a;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM389.4 50.5996c37.7998 37.8008 58.5996 88 58.5996 141.4s-20.7998 103.6 -58.5996 141.4c-37.8008 37.7998 -88 58.5996 -141.4 58.5996s-103.6 -20.7998 -141.4 -58.5996\nc-37.7998 -37.8008 -58.5996 -88 -58.5996 -141.4s20.7998 -103.6 58.5996 -141.4c37.8008 -37.7998 88 -58.5996 141.4 -58.5996s103.6 20.7998 141.4 58.5996zM328 296c23.7998 0 52.7002 -29.2998 55.7998 -71.4004c0.700195 -8.5 -10.7998 -11.8994 -14.8994 -4.5\nl-9.5 17c-7.7002 13.7002 -19.2002 21.6006 -31.5 21.6006c-12.3008 0 -23.8008 -7.90039 -31.5 -21.6006l-9.5 -17c-4.10059 -7.39941 -15.6006 -4.09961 -14.9004 4.5c3.2998 42.1006 32.2002 71.4004 56 71.4004zM127 220.1c-4.2002 -7.39941 -15.7002 -4 -15.0996 4.5\nc3.2998 42.1006 32.1992 71.4004 56 71.4004c23.7998 0 52.6992 -29.2998 56 -71.4004c0.699219 -8.5 -10.8008 -11.8994 -14.9004 -4.5l-9.5 17c-7.7002 13.7002 -19.2002 21.6006 -31.5 21.6006s-23.7998 -7.90039 -31.5 -21.6006zM362.4 160c8.19922 0 14.5 -7 13.5 -15\nc-7.5 -59.2002 -58.9004 -105 -121.101 -105h-13.5996c-62.2002 0 -113.601 45.7998 -121.101 105c-1 8 5.30078 15 13.5 15h228.801z\" />\n    <glyph glyph-name=\"laugh-squint\" unicode=\"&#xf59b;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM389.4 50.5996c37.7998 37.8008 58.5996 88 58.5996 141.4s-20.7998 103.6 -58.5996 141.4c-37.8008 37.7998 -88 58.5996 -141.4 58.5996s-103.6 -20.7998 -141.4 -58.5996\nc-37.7998 -37.8008 -58.5996 -88 -58.5996 -141.4s20.7998 -103.6 58.5996 -141.4c37.8008 -37.7998 88 -58.5996 141.4 -58.5996s103.6 20.7998 141.4 58.5996zM343.6 252l33.6006 -40.2998c8.59961 -10.4004 -3.90039 -24.7998 -15.4004 -18l-80 48\nc-7.7998 4.7002 -7.7998 15.8994 0 20.5996l80 48c11.6006 6.7998 24 -7.7002 15.4004 -18zM134.2 193.7c-11.6006 -6.7998 -24.1006 7.59961 -15.4004 18l33.6006 40.2998l-33.6006 40.2998c-8.59961 10.2998 3.7998 24.9004 15.4004 18l80 -48\nc7.7998 -4.7002 7.7998 -15.8994 0 -20.5996zM362.4 160c8.19922 0 14.5 -7 13.5 -15c-7.5 -59.2002 -58.9004 -105 -121.101 -105h-13.5996c-62.2002 0 -113.601 45.7998 -121.101 105c-1 8 5.30078 15 13.5 15h228.801z\" />\n    <glyph glyph-name=\"laugh-wink\" unicode=\"&#xf59c;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM389.4 50.5996c37.7998 37.8008 58.5996 88 58.5996 141.4s-20.7998 103.6 -58.5996 141.4c-37.8008 37.7998 -88 58.5996 -141.4 58.5996s-103.6 -20.7998 -141.4 -58.5996\nc-37.7998 -37.8008 -58.5996 -88 -58.5996 -141.4s20.7998 -103.6 58.5996 -141.4c37.8008 -37.7998 88 -58.5996 141.4 -58.5996s103.6 20.7998 141.4 58.5996zM328 284c25.7002 0 55.9004 -16.9004 59.7002 -42.0996c1.7998 -11.1006 -11.2998 -18.2002 -19.7998 -10.8008\nl-9.5 8.5c-14.8008 13.2002 -46.2002 13.2002 -61 0l-9.5 -8.5c-8.30078 -7.39941 -21.5 -0.399414 -19.8008 10.8008c4 25.1992 34.2002 42.0996 59.9004 42.0996zM168 224c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32z\nM362.4 160c8.19922 0 14.5 -7 13.5 -15c-7.5 -59.2002 -58.9004 -105 -121.101 -105h-13.5996c-62.2002 0 -113.601 45.7998 -121.101 105c-1 8 5.30078 15 13.5 15h228.801z\" />\n    <glyph glyph-name=\"meh-blank\" unicode=\"&#xf5a4;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM168 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32\ns-32 14.2998 -32 32s14.2998 32 32 32zM328 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32z\" />\n    <glyph glyph-name=\"meh-rolling-eyes\" unicode=\"&#xf5a5;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM336 296c39.7998 0 72 -32.2002 72 -72s-32.2002 -72 -72 -72\ns-72 32.2002 -72 72s32.2002 72 72 72zM336 184c22.0996 0 40 17.9004 40 40c0 13.5996 -7.2998 25.0996 -17.7002 32.2998c1 -2.59961 1.7002 -5.39941 1.7002 -8.2998c0 -13.2998 -10.7002 -24 -24 -24s-24 10.7002 -24 24c0 3 0.700195 5.7002 1.7002 8.2998\nc-10.4004 -7.2002 -17.7002 -18.7002 -17.7002 -32.2998c0 -22.0996 17.9004 -40 40 -40zM232 224c0 -39.7998 -32.2002 -72 -72 -72s-72 32.2002 -72 72s32.2002 72 72 72s72 -32.2002 72 -72zM120 224c0 -22.0996 17.9004 -40 40 -40s40 17.9004 40 40\nc0 13.5996 -7.2998 25.0996 -17.7002 32.2998c1 -2.59961 1.7002 -5.39941 1.7002 -8.2998c0 -13.2998 -10.7002 -24 -24 -24s-24 10.7002 -24 24c0 3 0.700195 5.7002 1.7002 8.2998c-10.4004 -7.2002 -17.7002 -18.7002 -17.7002 -32.2998zM312 96\nc13.2002 0 24 -10.7998 24 -24s-10.7998 -24 -24 -24h-128c-13.2002 0 -24 10.7998 -24 24s10.7998 24 24 24h128z\" />\n    <glyph glyph-name=\"sad-cry\" unicode=\"&#xf5b3;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM392 53.5996c34.5996 35.9004 56 84.7002 56 138.4c0 110.3 -89.7002 200 -200 200s-200 -89.7002 -200 -200c0 -53.7002 21.4004 -102.4 56 -138.4v114.4\nc0 13.2002 10.7998 24 24 24s24 -10.7998 24 -24v-151.4c28.5 -15.5996 61.2002 -24.5996 96 -24.5996s67.5 9 96 24.5996v151.4c0 13.2002 10.7998 24 24 24s24 -10.7998 24 -24v-114.4zM205.8 213.5c-5.7998 -3.2002 -11.2002 -0.700195 -13.7002 1.59961l-9.5 8.5\nc-14.7998 13.2002 -46.1992 13.2002 -61 0l-9.5 -8.5c-3.7998 -3.39941 -9.2998 -4 -13.6992 -1.59961c-4.40039 2.40039 -6.90039 7.40039 -6.10059 12.4004c3.90039 25.1992 34.2002 42.0996 59.7998 42.0996c25.6006 0 55.8008 -16.9004 59.8008 -42.0996\nc0.799805 -5 -1.7002 -10 -6.10059 -12.4004zM344 268c25.7002 0 55.9004 -16.9004 59.7998 -42.0996c0.799805 -5 -1.7002 -10 -6.09961 -12.4004c-5.7002 -3.09961 -11.2002 -0.599609 -13.7002 1.59961l-9.5 8.5c-14.7998 13.2002 -46.2002 13.2002 -61 0l-9.5 -8.5\nc-3.7998 -3.39941 -9.2002 -4 -13.7002 -1.59961c-4.39941 2.40039 -6.89941 7.40039 -6.09961 12.4004c3.89941 25.1992 34.0996 42.0996 59.7998 42.0996zM248 176c30.9004 0 56 -28.7002 56 -64s-25.0996 -64 -56 -64s-56 28.7002 -56 64s25.0996 64 56 64z\" />\n    <glyph glyph-name=\"sad-tear\" unicode=\"&#xf5b4;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM256 144c38.0996 0 74 -16.7998 98.5 -46.0996\nc8.5 -10.2002 7.09961 -25.3008 -3.09961 -33.8008c-10.6006 -8.7998 -25.7002 -6.69922 -33.8008 3.10059c-15.2998 18.2998 -37.7998 28.7998 -61.5996 28.7998c-13.2002 0 -24 10.7998 -24 24s10.7998 24 24 24zM168 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32\ns32 -14.2998 32 -32s-14.2998 -32 -32 -32zM328 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32zM162.4 173.2c2.7998 3.7002 8.39941 3.7002 11.1992 0c11.4004 -15.2998 36.4004 -50.6006 36.4004 -68.1006\nc0 -22.6992 -18.7998 -41.0996 -42 -41.0996s-42 18.4004 -42 41.0996c0 17.5 25 52.8008 36.4004 68.1006z\" />\n    <glyph glyph-name=\"smile-beam\" unicode=\"&#xf5b8;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM332 135.4c8.5 10.1992 23.5996 11.5 33.7998 3.09961\nc10.2002 -8.5 11.6006 -23.5996 3.10059 -33.7998c-30 -36 -74.1006 -56.6006 -120.9 -56.6006s-90.9004 20.6006 -120.9 56.6006c-8.39941 10.2002 -7.09961 25.2998 3.10059 33.7998c10.2002 8.40039 25.2998 7.09961 33.7998 -3.09961\nc20.7998 -25.1006 51.5 -39.4004 84 -39.4004s63.2002 14.4004 84 39.4004zM136.5 237l-9.5 -17c-1.90039 -3.2002 -5.90039 -4.7998 -9.2998 -3.7002c-3.60059 1.10059 -6 4.60059 -5.7002 8.2998c3.2998 42.1006 32.2002 71.4004 56 71.4004s52.7002 -29.2998 56 -71.4004\nc0.299805 -3.7998 -2.09961 -7.19922 -5.7002 -8.2998c-3.09961 -1 -7.2002 0 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996s-23.7998 -7.89941 -31.5 -21.5996zM328 296c23.7998 0 52.7002 -29.2998 56 -71.4004\nc0.299805 -3.7998 -2.09961 -7.19922 -5.7002 -8.2998c-3.09961 -1 -7.2002 0 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996s-23.7998 -7.89941 -31.5 -21.5996l-9.5 -17c-1.90039 -3.2002 -5.7998 -4.7998 -9.2998 -3.7002\nc-3.60059 1.10059 -6 4.60059 -5.7002 8.2998c3.2998 42.1006 32.2002 71.4004 56 71.4004z\" />\n    <glyph glyph-name=\"surprise\" unicode=\"&#xf5c2;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM248 168c35.2998 0 64 -28.7002 64 -64s-28.7002 -64 -64 -64\ns-64 28.7002 -64 64s28.7002 64 64 64zM200 240c0 -17.7002 -14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32zM328 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32z\" />\n    <glyph glyph-name=\"tired\" unicode=\"&#xf5c8;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM377.1 295.8c3.80078 -4.39941 3.90039 -11 0.100586 -15.5\nl-33.6006 -40.2998l33.6006 -40.2998c3.7998 -4.5 3.7002 -11 -0.100586 -15.5c-3.5 -4.10059 -9.89941 -5.7002 -15.2998 -2.5l-80 48c-3.59961 2.2002 -5.7998 6.09961 -5.7998 10.2998s2.2002 8.09961 5.7998 10.2998l80 48c5 2.90039 11.5 1.90039 15.2998 -2.5z\nM220 240c0 -4.2002 -2.2002 -8.09961 -5.7998 -10.2998l-80 -48c-5.40039 -3.2002 -11.7998 -1.60059 -15.2998 2.5c-3.80078 4.5 -3.90039 11 -0.100586 15.5l33.6006 40.2998l-33.6006 40.2998c-3.7998 4.5 -3.7002 11 0.100586 15.5\nc3.7998 4.40039 10.2998 5.5 15.2998 2.5l80 -48c3.59961 -2.2002 5.7998 -6.09961 5.7998 -10.2998zM248 176c45.4004 0 100.9 -38.2998 107.8 -93.2998c1.5 -11.9004 -7 -21.6006 -15.5 -17.9004c-22.7002 9.7002 -56.2998 15.2002 -92.2998 15.2002\ns-69.5996 -5.5 -92.2998 -15.2002c-8.60059 -3.7002 -17 6.10059 -15.5 17.9004c6.89941 55 62.3994 93.2998 107.8 93.2998z\" />\n  </font>\n</defs></svg>\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_023_update_sample_app/app/src/static/css/font-awesome/fa-solid-900.svg#fontawesome",
    "content": "<?xml version=\"1.0\" standalone=\"no\"?>\n<!--\nFont Awesome Free 5.10.2 by @fontawesome - https://fontawesome.com\nLicense - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n-->\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\" >\n<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\">\n<metadata>\nCreated by FontForge 20190801 at Thu Aug 22 14:41:09 2019\n By Robert Madole\nCopyright (c) Font Awesome\n</metadata>\n<defs>\n<font id=\"FontAwesome5Free-Solid\" horiz-adv-x=\"512\" >\n  <font-face \n    font-family=\"Font Awesome 5 Free Solid\"\n    font-weight=\"900\"\n    font-stretch=\"normal\"\n    units-per-em=\"512\"\n    panose-1=\"2 0 5 3 0 0 0 0 0 0\"\n    ascent=\"448\"\n    descent=\"-64\"\n    bbox=\"-0.983398 -64.9834 640.104 448.427\"\n    underline-thickness=\"25\"\n    underline-position=\"-50\"\n    unicode-range=\"U+0020-F897\"\n  />\n    <missing-glyph />\n    <glyph glyph-name=\"glass-martini\" unicode=\"&#xf000;\" \nd=\"M502.05 390.4l-214.05 -214.04v-192.36h56c22.0898 0 40 -17.9102 40 -40c0 -4.41992 -3.58008 -8 -8 -8h-240c-4.41992 0 -8 3.58008 -8 8c0 22.0898 17.9102 40 40 40h56v192.36l-214.05 214.04c-21.25 21.2598 -6.2002 57.5996 23.8496 57.5996h444.4\nc30.0498 0 45.0996 -36.3398 23.8496 -57.5996z\" />\n    <glyph glyph-name=\"music\" unicode=\"&#xf001;\" \nd=\"M511.99 415.99l0.00976562 -351.99c0 -35.3496 -42.9805 -64 -96 -64s-96 28.6504 -96 64s42.9805 64 96 64c11.2803 0 21.9502 -1.54004 32 -3.91992v184.63l-256 -75.0195v-233.69c0 -35.3496 -42.9805 -64 -96 -64s-96 28.6504 -96 64s42.9805 64 96 64\nc11.2803 0 21.9502 -1.54004 32 -3.91992v261.42c0 14 9.09961 26.2998 22.4004 30.5l319.989 94.5c20.5 6.5 41.6006 -8.7998 41.6006 -30.5098z\" />\n    <glyph glyph-name=\"search\" unicode=\"&#xf002;\" \nd=\"M505 5.2998c9.2998 -9.39941 9.2998 -24.5996 -0.0996094 -34l-28.3008 -28.2998c-9.2998 -9.40039 -24.5 -9.40039 -33.8994 0l-99.7002 99.7002c-4.5 4.5 -7 10.5996 -7 17v16.2998c-35.2998 -27.5996 -79.7002 -44 -128 -44c-114.9 0 -208 93.0996 -208 208\ns93.0996 208 208 208s208 -93.0996 208 -208c0 -48.2998 -16.4004 -92.7002 -44 -128h16.2998c6.40039 0 12.5 -2.5 17 -7zM208 112c70.7998 0 128 57.2998 128 128c0 70.7998 -57.2998 128 -128 128c-70.7998 0 -128 -57.2998 -128 -128c0 -70.7998 57.2998 -128 128 -128z\n\" />\n    <glyph glyph-name=\"heart\" unicode=\"&#xf004;\" \nd=\"M462.3 385.4c62.7998 -53.6006 66.1006 -149.801 9.7998 -207.9l-193.5 -199.8c-12.5 -12.9004 -32.7998 -12.9004 -45.2998 0l-193.5 199.8c-56.2002 58.0996 -52.8994 154.3 9.90039 207.9c54.7998 46.6992 136.399 38.2998 186.6 -13.6006l19.7002 -20.2998\nl19.7002 20.2998c50.2998 51.9004 131.8 60.2998 186.6 13.6006z\" />\n    <glyph glyph-name=\"star\" unicode=\"&#xf005;\" horiz-adv-x=\"576\" \nd=\"M259.3 430.2c11.7998 23.8994 45.7002 23.5996 57.4004 0l65.2998 -132.4l146.1 -21.2998c26.2002 -3.7998 36.7002 -36.0996 17.7002 -54.5996l-105.7 -103l25 -145.5c4.5 -26.3008 -23.1992 -45.9004 -46.3994 -33.7002l-130.7 68.7002l-130.7 -68.7002\nc-23.2002 -12.2998 -50.8994 7.39941 -46.3994 33.7002l25 145.5l-105.7 103c-19 18.5 -8.5 50.7998 17.7002 54.5996l146.1 21.2998z\" />\n    <glyph glyph-name=\"user\" unicode=\"&#xf007;\" horiz-adv-x=\"448\" \nd=\"M224 192c-70.7002 0 -128 57.2998 -128 128s57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128zM313.6 160c74.2002 0 134.4 -60.2002 134.4 -134.4v-41.5996c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v41.5996\nc0 74.2002 60.2002 134.4 134.4 134.4h16.6992c22.3008 -10.2002 46.9004 -16 72.9004 -16s50.7002 5.7998 72.9004 16h16.6992z\" />\n    <glyph glyph-name=\"film\" unicode=\"&#xf008;\" \nd=\"M488 384c13.2998 0 24 -10.7002 24 -24v-336c0 -13.2998 -10.7002 -24 -24 -24h-8v20c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-20h-320v20c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-20h-8\nc-13.2998 0 -24 10.7002 -24 24v336c0 13.2998 10.7002 24 24 24h8v-20c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12v20h320v-20c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12v20h8zM96 76v40c0 6.59961 -5.40039 12 -12 12h-40\nc-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12zM96 172v40c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12zM96 268v40\nc0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12zM368 60v96c0 6.59961 -5.40039 12 -12 12h-200c-6.59961 0 -12 -5.40039 -12 -12v-96c0 -6.59961 5.40039 -12 12 -12h200\nc6.59961 0 12 5.40039 12 12zM368 228v96c0 6.59961 -5.40039 12 -12 12h-200c-6.59961 0 -12 -5.40039 -12 -12v-96c0 -6.59961 5.40039 -12 12 -12h200c6.59961 0 12 5.40039 12 12zM480 76v40c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-40\nc0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12zM480 172v40c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12zM480 268v40c0 6.59961 -5.40039 12 -12 12h-40\nc-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12z\" />\n    <glyph glyph-name=\"th-large\" unicode=\"&#xf009;\" \nd=\"M296 416h192c13.2549 0 24 -10.7451 24 -24v-160c0 -13.2549 -10.7451 -24 -24 -24h-192c-13.2549 0 -24 10.7451 -24 24v160c0 13.2549 10.7451 24 24 24zM216 416c13.2549 0 24 -10.7451 24 -24v-160c0 -13.2549 -10.7451 -24 -24 -24h-192\nc-13.2549 0 -24 10.7451 -24 24v160c0 13.2549 10.7451 24 24 24h192zM0 152c0 13.2549 10.7451 24 24 24h192c13.2549 0 24 -10.7451 24 -24v-160c0 -13.2549 -10.7451 -24 -24 -24h-192c-13.2549 0 -24 10.7451 -24 24v160zM296 -32c-13.2549 0 -24 10.7451 -24 24v160\nc0 13.2549 10.7451 24 24 24h192c13.2549 0 24 -10.7451 24 -24v-160c0 -13.2549 -10.7451 -24 -24 -24h-192z\" />\n    <glyph glyph-name=\"th\" unicode=\"&#xf00a;\" \nd=\"M149.333 392v-80c0 -13.2549 -10.7451 -24 -24 -24h-101.333c-13.2549 0 -24 10.7451 -24 24v80c0 13.2549 10.7451 24 24 24h101.333c13.2549 0 24 -10.7451 24 -24zM330.667 152c0 -13.2549 -10.7451 -24 -24.001 -24h-101.333c-13.2549 0 -24 10.7451 -24 24v80\nc0 13.2549 10.7451 24 24 24h101.334c13.2549 0 24 -10.7451 24 -24v-80zM362.667 392c0 13.2549 10.7451 24 24 24h101.333c13.2549 0 24 -10.7451 24 -24v-80c0 -13.2549 -10.7451 -24 -24 -24h-101.333c-13.2549 0 -24 10.7451 -24 24v80zM330.667 312\nc0 -13.2549 -10.7451 -24 -24.001 -24h-101.333c-13.2549 0 -24 10.7451 -24 24v80c0 13.2549 10.7451 24 24 24h101.334c13.2549 0 24 -10.7451 24 -24v-80zM125.333 256c13.2549 0 24 -10.7451 24 -24v-80c0 -13.2549 -10.7451 -24 -24 -24h-101.333\nc-13.2549 0 -24 10.7451 -24 24v80c0 13.2549 10.7451 24 24 24h101.333zM0 72c0 13.2549 10.7451 24 24 24h101.333c13.2549 0 24 -10.7451 24 -24v-80c0 -13.2549 -10.7451 -24 -24 -24h-101.333c-13.2549 0 -24 10.7451 -24 24v80zM386.667 128\nc-13.2549 0 -24 10.7451 -24 24v80c0 13.2549 10.7451 24 24 24h101.333c13.2549 0 24 -10.7451 24 -24v-80c0 -13.2549 -10.7451 -24 -24 -24h-101.333zM386.667 -32c-13.2549 0 -24 10.7451 -24 24v80c0 13.2549 10.7451 24 24 24h101.333c13.2549 0 24 -10.7451 24 -24\nv-80c0 -13.2549 -10.7451 -24 -24 -24h-101.333zM181.333 72c0 13.2549 10.7451 24 24 24h101.333c13.2549 0 24 -10.7451 24 -24v-80c0 -13.2549 -10.7451 -24 -24 -24h-101.333c-13.2549 0 -24 10.7451 -24 24v80z\" />\n    <glyph glyph-name=\"th-list\" unicode=\"&#xf00b;\" \nd=\"M149.333 232v-80c0 -13.2549 -10.7451 -24 -24 -24h-101.333c-13.2549 0 -24 10.7451 -24 24v80c0 13.2549 10.7451 24 24 24h101.333c13.2549 0 24 -10.7451 24 -24zM0 72c0 13.2549 10.7451 24 24 24h101.333c13.2549 0 24 -10.7451 24 -24v-80\nc0 -13.2549 -10.7451 -24 -24 -24h-101.333c-13.2549 0 -24 10.7451 -24 24v80zM125.333 416c13.2549 0 24 -10.7451 24 -24v-80c0 -13.2549 -10.7451 -24 -24 -24h-101.333c-13.2549 0 -24 10.7451 -24 24v80c0 13.2549 10.7451 24 24 24h101.333zM205.333 -32\nc-13.2549 0 -24 10.7451 -24 24v80c0 13.2549 10.7451 24 24 24h282.667c13.2549 0 24 -10.7451 24 -24v-80c0 -13.2549 -10.7451 -24 -24 -24h-282.667zM181.333 392c0 13.2549 10.7451 24 24 24h282.667c13.2549 0 24 -10.7451 24 -24v-80\nc0 -13.2549 -10.7451 -24 -24 -24h-282.667c-13.2549 0 -24 10.7451 -24 24v80zM205.333 128c-13.2549 0 -24 10.7451 -24 24v80c0 13.2549 10.7451 24 24 24h282.667c13.2549 0 24 -10.7451 24 -24v-80c0 -13.2549 -10.7451 -24 -24 -24h-282.667z\" />\n    <glyph glyph-name=\"check\" unicode=\"&#xf00c;\" \nd=\"M173.898 8.5957l-166.4 166.4c-9.99707 9.99707 -9.99707 26.2061 0 36.2041l36.2031 36.2041c9.99707 9.99805 26.207 9.99805 36.2041 0l112.095 -112.095l240.095 240.095c9.99707 9.99707 26.207 9.99707 36.2041 0l36.2031 -36.2041\nc9.99707 -9.99707 9.99707 -26.2061 0 -36.2041l-294.4 -294.401c-9.99805 -9.99707 -26.207 -9.99707 -36.2031 0.000976562z\" />\n    <glyph glyph-name=\"times\" unicode=\"&#xf00d;\" horiz-adv-x=\"352\" \nd=\"M242.72 192l100.07 -100.07c12.2803 -12.29 12.2803 -32.1992 0 -44.4795l-22.2402 -22.2402c-12.2803 -12.2803 -32.2002 -12.2803 -44.4795 0l-100.07 100.07l-100.07 -100.07c-12.2793 -12.2803 -32.1992 -12.2803 -44.4795 0l-22.2402 22.2402\nc-12.2803 12.29 -12.2803 32.2002 0 44.4795l100.07 100.07l-100.07 100.07c-12.2803 12.29 -12.2803 32.1992 0 44.4795l22.2402 22.2402c12.29 12.2803 32.2002 12.2803 44.4795 0l100.07 -100.07l100.07 100.07c12.29 12.2803 32.1992 12.2803 44.4795 0\nl22.2402 -22.2402c12.2803 -12.29 12.2803 -32.2002 0 -44.4795z\" />\n    <glyph glyph-name=\"search-plus\" unicode=\"&#xf00e;\" \nd=\"M304 256v-32c0 -6.59961 -5.40039 -12 -12 -12h-56v-56c0 -6.59961 -5.40039 -12 -12 -12h-32c-6.59961 0 -12 5.40039 -12 12v56h-56c-6.59961 0 -12 5.40039 -12 12v32c0 6.59961 5.40039 12 12 12h56v56c0 6.59961 5.40039 12 12 12h32c6.59961 0 12 -5.40039 12 -12\nv-56h56c6.59961 0 12 -5.40039 12 -12zM505 -28.7002l-28.2998 -28.2998c-9.40039 -9.40039 -24.6006 -9.40039 -33.9004 0l-99.7998 99.7002c-4.5 4.5 -7 10.5996 -7 17v16.2998c-35.2998 -27.5996 -79.7002 -44 -128 -44c-114.9 0 -208 93.0996 -208 208\ns93.0996 208 208 208s208 -93.0996 208 -208c0 -48.2998 -16.4004 -92.7002 -44 -128h16.2998c6.40039 0 12.5 -2.5 17 -7l99.7002 -99.7002c9.2998 -9.39941 9.2998 -24.5996 0 -34zM344 240c0 75.2002 -60.7998 136 -136 136s-136 -60.7998 -136 -136\ns60.7998 -136 136 -136s136 60.7998 136 136z\" />\n    <glyph glyph-name=\"search-minus\" unicode=\"&#xf010;\" \nd=\"M304 256v-32c0 -6.59961 -5.40039 -12 -12 -12h-168c-6.59961 0 -12 5.40039 -12 12v32c0 6.59961 5.40039 12 12 12h168c6.59961 0 12 -5.40039 12 -12zM505 -28.7002l-28.2998 -28.2998c-9.40039 -9.40039 -24.6006 -9.40039 -33.9004 0l-99.7998 99.7002\nc-4.5 4.5 -7 10.5996 -7 17v16.2998c-35.2998 -27.5996 -79.7002 -44 -128 -44c-114.9 0 -208 93.0996 -208 208s93.0996 208 208 208s208 -93.0996 208 -208c0 -48.2998 -16.4004 -92.7002 -44 -128h16.2998c6.40039 0 12.5 -2.5 17 -7l99.7002 -99.7002\nc9.2998 -9.39941 9.2998 -24.5996 0 -34zM344 240c0 75.2002 -60.7998 136 -136 136s-136 -60.7998 -136 -136s60.7998 -136 136 -136s136 60.7998 136 136z\" />\n    <glyph glyph-name=\"power-off\" unicode=\"&#xf011;\" \nd=\"M400 393.9c63 -45 104 -118.601 104 -201.9c0 -136.8 -110.8 -247.7 -247.5 -248c-136.5 -0.299805 -248.3 111 -248.5 247.6c-0.0996094 83.3008 40.9004 157.101 103.8 202.2c11.7002 8.2998 28 4.7998 35 -7.7002l15.7998 -28.0996\nc5.90039 -10.5 3.10059 -23.7998 -6.59961 -31c-41.5 -30.7998 -68 -79.5996 -68 -134.9c-0.0996094 -92.2998 74.5 -168.1 168 -168.1c91.5996 0 168.6 74.2002 168 169.1c-0.299805 51.8008 -24.7002 101.801 -68.0996 134c-9.7002 7.2002 -12.4004 20.5 -6.5 30.9004\nl15.7998 28.0996c7 12.4004 23.2002 16.1006 34.7998 7.80078zM296 184c0 -13.2998 -10.7002 -24 -24 -24h-32c-13.2998 0 -24 10.7002 -24 24v240c0 13.2998 10.7002 24 24 24h32c13.2998 0 24 -10.7002 24 -24v-240z\" />\n    <glyph glyph-name=\"signal\" unicode=\"&#xf012;\" horiz-adv-x=\"640\" \nd=\"M216 160c8.83984 0 16 -7.16016 16 -16v-192c0 -8.83984 -7.16016 -16 -16 -16h-48c-8.83984 0 -16 7.16016 -16 16v192c0 8.83984 7.16016 16 16 16h48zM88 64c8.83984 0 16 -7.16016 16 -16v-96c0 -8.83984 -7.16016 -16 -16 -16h-48c-8.83984 0 -16 7.16016 -16 16v96\nc0 8.83984 7.16016 16 16 16h48zM344 256c8.83984 0 16 -7.16016 16 -16v-288c0 -8.83984 -7.16016 -16 -16 -16h-48c-8.83984 0 -16 7.16016 -16 16v288c0 8.83984 7.16016 16 16 16h48zM472 352c8.83984 0 16 -7.16016 16 -16v-384c0 -8.83984 -7.16016 -16 -16 -16h-48\nc-8.83984 0 -16 7.16016 -16 16v384c0 8.83984 7.16016 16 16 16h48zM600 448c8.83984 0 16 -7.16016 16 -16v-480c0 -8.83984 -7.16016 -16 -16 -16h-48c-8.83984 0 -16 7.16016 -16 16v480c0 8.83984 7.16016 16 16 16h48z\" />\n    <glyph glyph-name=\"cog\" unicode=\"&#xf013;\" \nd=\"M487.4 132.3c4.89941 -2.7998 7.09961 -8.59961 5.59961 -14.0996c-11.0996 -35.7002 -30 -67.9004 -54.7002 -94.6006c-3.7998 -4.19922 -9.89941 -5.09961 -14.7998 -2.2998l-42.5996 24.6006c-18 -15.3008 -38.6006 -27.2002 -60.8008 -35.1006v-49.2002\nc0 -5.59961 -3.89941 -10.5 -9.39941 -11.6992c-34.9004 -7.80078 -72.5 -8.2002 -109.2 0c-5.5 1.19922 -9.40039 6.09961 -9.40039 11.6992v49.2002c-22.2998 7.7998 -42.8994 19.7002 -60.7998 35.1006l-42.5996 -24.6006c-4.7998 -2.7998 -11 -1.7998 -14.7998 2.2998\nc-24.7002 26.8008 -43.6006 59 -54.7002 94.6006c-1.60059 5.39941 0.599609 11.2002 5.5 14l42.5996 24.5996c-4.2998 23.2002 -4.2998 47 0 70.2002l-42.5996 24.5996c-4.90039 2.80078 -7.2002 8.60059 -5.5 14c11.0996 35.7002 30 67.9004 54.7002 94.6006\nc3.7998 4.2002 9.89941 5.09961 14.7998 2.2998l42.5 -24.5996c18 15.2998 38.5996 27.1992 60.7998 35.0996v49.2002c0 5.59961 3.90039 10.5 9.40039 11.7002c34.8994 7.7998 72.5 8.19922 109.199 0c5.5 -1.2002 9.40039 -6.10059 9.40039 -11.7002v-49.1006\nc22.2998 -7.7998 42.9004 -19.6992 60.7998 -35.0996l42.6006 24.5996c4.7998 2.80078 11 1.80078 14.7998 -2.2998c24.7002 -26.7998 43.5996 -59 54.7002 -94.5996c1.59961 -5.40039 -0.600586 -11.2002 -5.5 -14l-42.6006 -24.6006\nc4.2998 -23.1992 4.2998 -47 0 -70.1992zM256 112c44.0996 0 80 35.9004 80 80s-35.9004 80 -80 80s-80 -35.9004 -80 -80s35.9004 -80 80 -80z\" />\n    <glyph glyph-name=\"home\" unicode=\"&#xf015;\" horiz-adv-x=\"576\" \nd=\"M280.37 299.74c1.84863 1.49023 5.27539 2.69922 7.64941 2.69922c2.375 0 5.80176 -1.20898 7.65039 -2.69922l184.33 -151.74v-164c0 -8.83203 -7.16797 -16 -16 -16l-112.02 0.30957h-0.000976562c-8.83203 0 -16 7.16797 -16 16\nc0 0.0146484 0 0.0371094 0.000976562 0.0507812v95.6396c0 8.83203 -7.16895 16 -16 16h-64c-8.83203 0 -16 -7.16797 -16 -16v-95.71v0c0 -8.78809 -7.13281 -15.9561 -15.9209 -16l-112.06 -0.290039c-8.83203 0 -16 7.16797 -16 16v163.89zM571.6 196.53\nc2.44531 -1.98828 4.42969 -6.15918 4.42969 -9.31055c0 -2.37305 -1.22266 -5.78613 -2.72949 -7.62012l-25.5 -31c-1.98633 -2.40332 -6.13086 -4.35449 -9.24902 -4.35449c-2.38574 0 -5.81348 1.23438 -7.65039 2.75488l-235.23 193.74\nc-1.84863 1.49023 -5.27539 2.69922 -7.65039 2.69922c-2.37402 0 -5.80078 -1.20898 -7.64941 -2.69922l-235.22 -193.74c-1.83691 -1.5166 -5.26074 -2.74805 -7.64258 -2.74805c-3.12793 0 -7.28027 1.96191 -9.26758 4.37793l-25.5 31\nc-1.52051 1.83789 -2.75488 5.26562 -2.75488 7.65039c0 3.11914 1.95117 7.2627 4.35449 9.25l253.13 208.47c7.33594 6.03613 21 10.9355 30.5 10.9355c9.50098 0 23.1641 -4.89941 30.5 -10.9355l89.5303 -73.6602v72.6104c0 6.62402 5.37598 12 12 12h56\nc6.62402 0 12 -5.37598 12 -12v-138.51z\" />\n    <glyph glyph-name=\"clock\" unicode=\"&#xf017;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM313.1 89.9004c5.40039 -3.90039 12.9004 -2.7002 16.8008 2.59961l28.1992 38.7998c3.90039 5.40039 2.80078 12.9004 -2.59961 16.7998l-63.5 46.2002v137.7\nc0 6.59961 -5.40039 12 -12 12h-48c-6.59961 0 -12 -5.40039 -12 -12v-168.3c0 -3.7998 1.7998 -7.40039 4.90039 -9.7002z\" />\n    <glyph glyph-name=\"road\" unicode=\"&#xf018;\" horiz-adv-x=\"576\" \nd=\"M573.19 45.3301c9.25977 -21.1904 -5.5 -45.3301 -27.7305 -45.3301h-196.84l-10.3105 97.6797c-0.859375 8.14062 -7.71973 14.3203 -15.9092 14.3203h-68.8008c-8.18945 0 -15.0498 -6.17969 -15.9092 -14.3203l-10.3105 -97.6797h-196.84\nc-22.2305 0 -36.9902 24.1396 -27.7402 45.3301l139.79 320c4.96973 11.3799 15.7998 18.6699 27.7305 18.6699h97.5898l-2.4502 -23.1602c-0.5 -4.71973 3.20996 -8.83984 7.95996 -8.83984h29.1602c4.75 0 8.45996 4.12012 7.95996 8.83984l-2.4502 23.1602h97.5898\nc11.9199 0 22.75 -7.29004 27.7207 -18.6699zM260.4 312.84l-4.59082 -43.5801c-0.75 -7.08984 4.80078 -13.2598 11.9307 -13.2598h40.54c7.12012 0 12.6797 6.16992 11.9297 13.2598l-4.59961 43.5801c-0.430664 4.07031 -3.87012 7.16016 -7.95996 7.16016h-39.29\nh-0.00488281c-3.97363 0 -7.53809 -3.20801 -7.95508 -7.16016zM315.64 144c9.5 0 16.9102 8.23047 15.9102 17.6797l-5.06934 48c-0.860352 8.14062 -7.7207 14.3203 -15.9102 14.3203h-45.1504c-8.18945 0 -15.0498 -6.17969 -15.9102 -14.3203l-5.06934 -48\nc-1 -9.44922 6.40918 -17.6797 15.9092 -17.6797h55.29z\" />\n    <glyph glyph-name=\"download\" unicode=\"&#xf019;\" \nd=\"M216 448h80c13.2998 0 24 -10.7002 24 -24v-168h87.7002c17.7998 0 26.7002 -21.5 14.0996 -34.0996l-152.1 -152.2c-7.5 -7.5 -19.7998 -7.5 -27.2998 0l-152.301 152.2c-12.5996 12.5996 -3.69922 34.0996 14.1006 34.0996h87.7998v168c0 13.2998 10.7002 24 24 24z\nM512 72v-112c0 -13.2998 -10.7002 -24 -24 -24h-464c-13.2998 0 -24 10.7002 -24 24v112c0 13.2998 10.7002 24 24 24h146.7l49 -49c20.0996 -20.0996 52.5 -20.0996 72.5996 0l49 49h146.7c13.2998 0 24 -10.7002 24 -24zM388 -16c0 11 -9 20 -20 20s-20 -9 -20 -20\ns9 -20 20 -20s20 9 20 20zM452 -16c0 11 -9 20 -20 20s-20 -9 -20 -20s9 -20 20 -20s20 9 20 20z\" />\n    <glyph glyph-name=\"inbox\" unicode=\"&#xf01c;\" horiz-adv-x=\"576\" \nd=\"M567.938 204.092c4.4502 -6.6748 8.06152 -18.6025 8.06152 -26.624v-0.000976562v-129.467c0 -26.5098 -21.4902 -48 -48 -48h-480c-26.5098 0 -48 21.4902 -48 48v129.467v0.000976562c0 8.02148 3.61133 19.9492 8.06152 26.624l105.689 158.534\nc7.86621 11.7988 25.7578 21.374 39.9385 21.374h268.621c14.1807 0 32.0732 -9.57617 39.9395 -21.374zM162.252 320l-85.334 -128h123.082l32 -64h112l32 64h123.082l-85.333 128h-251.497z\" />\n    <glyph glyph-name=\"redo\" unicode=\"&#xf01e;\" \nd=\"M500.33 448c6.62402 0 12 -5.37598 12 -12v-200.34c0 -6.62402 -5.37598 -12 -12 -12h-200.33c-6.62402 0 -12 5.37598 -12 12v47.4102v0.0136719c0 6.62402 5.37598 12 12 12c0.157227 0 0.413086 -0.00683594 0.570312 -0.0136719l101.529 -4.87012\nc-28.8721 42.9609 -94.3145 77.8281 -146.076 77.8281c-97.1514 0 -176 -78.8486 -176 -176c0 -97.1523 78.8486 -176 176 -176c36.6543 0 88.7373 19.6504 116.257 43.8613c1.87207 1.63672 5.40918 2.96387 7.89551 2.96387c2.74316 0 6.54395 -1.57422 8.48438 -3.51367\nl34 -34c1.94141 -1.94043 3.51758 -5.74316 3.51758 -8.48828c0 -2.96094 -1.79102 -6.9668 -3.99805 -8.94141c-38.9707 -35.2783 -113.264 -63.9102 -165.831 -63.9102h-0.348633c-136.9 0 -247.9 110.93 -248 247.81c-0.0996094 136.66 111.34 248.19 248 248.19\nh0.272461c63.2246 0 147.739 -39.124 188.647 -87.3301l-4 82.7598c-0.0078125 0.157227 -0.0136719 0.413086 -0.0136719 0.570312c0 6.62402 5.37598 12 12 12h0.0136719h47.4102z\" />\n    <glyph glyph-name=\"sync\" unicode=\"&#xf021;\" \nd=\"M440.65 435.43c-0.0078125 0.157227 -0.0136719 0.413086 -0.0136719 0.570312c0 6.62012 5.37305 11.9961 11.9932 12h47.3701c6.62402 0 12 -5.37598 12 -12v-200.35c0 -6.62402 -5.37598 -12 -12 -12h-200.22c-6.62402 0 -12 5.37598 -12 12v47.4092v0.0136719\nc0 6.62402 5.37598 12 12 12c0.157227 0 0.412109 -0.00585938 0.569336 -0.0136719l101.46 -4.85938c-28.8584 42.9248 -94.2598 77.7627 -145.984 77.7627c-76.4834 0 -153.099 -60.3467 -171.016 -134.703c-1.19727 -5.10547 -6.4248 -9.25391 -11.6699 -9.25977\nh-49.0498c-6.62402 0 -12 5.37598 -12 12c0 0.606445 0.0898438 1.58301 0.200195 2.17969c21.6201 114.9 122.44 201.82 243.54 201.82h0.28418c63.2031 0 147.667 -39.1279 188.536 -87.3398zM255.83 16c76.4971 0 153.144 60.3633 171.03 134.74\nc1.19727 5.10547 6.4248 9.25391 11.6699 9.25977h49.0498c6.62402 0 12 -5.37598 12 -12c0 -0.606445 -0.0898438 -1.58301 -0.200195 -2.17969c-21.6201 -114.9 -122.439 -201.82 -243.55 -201.82h-0.234375c-63.1289 0 -147.53 39.0518 -188.396 87.1699\nl4.14941 -82.5703c0.00878906 -0.165039 0.015625 -0.433594 0.015625 -0.599609c0 -6.62402 -5.37598 -12 -12 -12h-0.015625h-47.3496c-6.62402 0 -12 5.37598 -12 12v200.33c0 6.62402 5.37598 12 12 12h200.2c6.62402 0 12 -5.37598 12 -12v-47.4004v-0.0136719\nc0 -6.62402 -5.37598 -12 -12 -12c-0.157227 0 -0.413086 0.00683594 -0.570312 0.0136719l-101.8 4.87012c28.7998 -42.9453 94.1406 -77.7998 145.85 -77.7998h0.150391z\" />\n    <glyph glyph-name=\"list-alt\" unicode=\"&#xf022;\" \nd=\"M464 -32h-416c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h416c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48zM128 328c-22.0908 0 -40 -17.9092 -40 -40s17.9092 -40 40 -40s40 17.9092 40 40s-17.9092 40 -40 40zM128 232\nc-22.0908 0 -40 -17.9092 -40 -40s17.9092 -40 40 -40s40 17.9092 40 40s-17.9092 40 -40 40zM128 136c-22.0908 0 -40 -17.9092 -40 -40s17.9092 -40 40 -40s40 17.9092 40 40s-17.9092 40 -40 40zM416 272v32c0 6.62695 -5.37305 12 -12 12h-200\nc-6.62695 0 -12 -5.37305 -12 -12v-32c0 -6.62695 5.37305 -12 12 -12h200c6.62695 0 12 5.37305 12 12zM416 176v32c0 6.62695 -5.37305 12 -12 12h-200c-6.62695 0 -12 -5.37305 -12 -12v-32c0 -6.62695 5.37305 -12 12 -12h200c6.62695 0 12 5.37305 12 12zM416 80v32\nc0 6.62695 -5.37305 12 -12 12h-200c-6.62695 0 -12 -5.37305 -12 -12v-32c0 -6.62695 5.37305 -12 12 -12h200c6.62695 0 12 5.37305 12 12z\" />\n    <glyph glyph-name=\"lock\" unicode=\"&#xf023;\" horiz-adv-x=\"448\" \nd=\"M400 224c26.5 0 48 -21.5 48 -48v-192c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v192c0 26.5 21.5 48 48 48h24v72c0 83.7998 68.2002 152 152 152s152 -68.2002 152 -152v-72h24zM296 224v72c0 39.7002 -32.2998 72 -72 72s-72 -32.2998 -72 -72v-72h144\nz\" />\n    <glyph glyph-name=\"flag\" unicode=\"&#xf024;\" \nd=\"M349.565 349.217c40.4951 0 82.6113 15.9062 116.949 31.8545c21.2168 9.85352 45.4854 -5.62305 45.4854 -29.0166v-243.1c0 -10.5264 -5.16016 -20.4072 -13.8428 -26.3584c-35.8379 -24.5635 -74.3359 -40.8574 -122.505 -40.8574\nc-67.373 0 -111.629 34.7832 -165.218 34.7832c-50.8525 0 -86.124 -10.0586 -114.435 -22.1221v-94.4004c0 -13.2549 -10.7451 -24 -24 -24h-16c-13.2549 0 -24 10.7451 -24 24v386.055c-14.5029 10.1201 -24 26.9189 -24 45.9453\nc0 31.7041 26.3447 57.2539 58.3379 55.9521c28.4678 -1.1582 51.7793 -23.9668 53.5508 -52.4033c0.0625 -0.980469 0.113281 -2.57324 0.113281 -3.55566c0 -5.71094 -1.65723 -14.6738 -3.69922 -20.0059c20.7363 7.62891 43.0898 12.0127 68.0449 12.0127\nc67.373 0 111.63 -34.7832 165.218 -34.7832z\" />\n    <glyph glyph-name=\"headphones\" unicode=\"&#xf025;\" \nd=\"M256 416c141.504 0 256 -114.521 256 -256v-48c0 -10.917 -7.9248 -23.7402 -17.6904 -28.6221l-14.3818 -7.19141c-2.01074 -60.0889 -51.3486 -108.187 -111.928 -108.187h-24c-13.2549 0 -24 10.7451 -24 24v176c0 13.2549 10.7451 24 24 24h24\nc31.3418 0 59.6709 -12.8789 80 -33.627v1.62695c0 105.869 -86.1309 192 -192 192s-192 -86.1309 -192 -192v-1.62695c20.3291 20.748 48.6582 33.627 80 33.627h24c13.2549 0 24 -10.7451 24 -24v-176c0 -13.2549 -10.7451 -24 -24 -24h-24\nc-60.5791 0 -109.917 48.0967 -111.928 108.187l-14.3828 7.19141c-9.76465 4.88184 -17.6895 17.7051 -17.6895 28.6221v0v48c0 141.504 114.52 256 256 256z\" />\n    <glyph glyph-name=\"volume-off\" unicode=\"&#xf026;\" horiz-adv-x=\"256\" \nd=\"M215 377c15 15 41 4.46973 41 -17v-336c0 -21.4697 -26 -32 -41 -17l-88.9404 89h-102.06c-13.248 0 -24 10.752 -24 24v144c0 13.248 10.752 24 24 24h102z\" />\n    <glyph glyph-name=\"volume-down\" unicode=\"&#xf027;\" horiz-adv-x=\"384\" \nd=\"M215.03 375.96c15.0098 15 40.9697 4.49023 40.9697 -16.9795v-335.961c0 -21.4395 -25.9404 -32 -40.9697 -16.9697l-88.9707 88.9502h-102.06c-13.2598 0 -24 10.75 -24 24v144c0 13.2598 10.7402 24 24 24h102.06zM338.23 267.88\nc28.2393 -15.5498 45.7793 -44.9902 45.7793 -76.8701s-17.54 -61.3301 -45.7695 -76.8799c-11.5605 -6.34961 -26.1807 -2.20996 -32.6104 9.4502c-6.38965 11.6104 -2.16016 26.2002 9.4502 32.6104c12.9004 7.08984 20.9199 20.4297 20.9199 34.8096\ns-8.01953 27.7197 -20.9297 34.8203c-11.6104 6.41016 -15.8398 21 -9.4502 32.6094c6.41992 11.6104 21.0303 15.7803 32.6104 9.4502z\" />\n    <glyph glyph-name=\"volume-up\" unicode=\"&#xf028;\" horiz-adv-x=\"576\" \nd=\"M215.03 376.95c15.0098 15.0098 40.9697 4.49023 40.9697 -16.9697v-335.961c0 -21.4395 -25.9404 -32 -40.9697 -16.9697l-88.9707 88.9502h-102.06c-13.2598 0 -24 10.75 -24 24v144c0 13.2598 10.7402 24 24 24h102.06zM448.35 428.03\nc79.9199 -52.46 127.65 -140.7 127.65 -236.03s-47.7305 -183.58 -127.65 -236.04c-11.5801 -7.61035 -26.4697 -3.75977 -33.5098 6.9502c-7.33984 11.1602 -4.21973 26.1797 6.9502 33.5c66.2695 43.4902 105.82 116.6 105.82 195.58\nc0 78.9795 -39.5508 152.09 -105.82 195.58c-11.1699 7.33008 -14.29 22.3398 -6.9502 33.5098c7.33008 11.1895 22.3398 14.2803 33.5098 6.9502zM480 192c0 -63.54 -32.0596 -121.94 -85.7695 -156.24c-12 -7.67969 -26.6104 -2.89941 -33.1201 7.45996\nc-7.09082 11.29 -3.78027 26.2207 7.40918 33.3604c39.75 25.3896 63.4805 68.5303 63.4805 115.42s-23.7305 90.0303 -63.4805 115.42c-11.1895 7.15039 -14.5 22.0801 -7.40918 33.3604c7.08984 11.2793 21.9297 14.5996 33.1201 7.45996\nc53.71 -34.2998 85.7695 -92.71 85.7695 -156.24zM338.23 268.87c28.2393 -15.54 45.7793 -44.9805 45.7793 -76.8604s-17.54 -61.3301 -45.7695 -76.8799c-11.5605 -6.34961 -26.1807 -2.20996 -32.6104 9.4502c-6.38965 11.6104 -2.16016 26.2002 9.4502 32.6104\nc12.9004 7.08984 20.9199 20.4297 20.9199 34.8096c0 14.3701 -8.01953 27.7197 -20.9297 34.8096c-11.6104 6.41016 -15.8398 21 -9.4502 32.6104c6.41992 11.6104 21.0303 15.7803 32.6104 9.4502z\" />\n    <glyph glyph-name=\"qrcode\" unicode=\"&#xf029;\" horiz-adv-x=\"448\" \nd=\"M0 224v192h192v-192h-192zM64 352v-64h64v64h-64zM256 416h192v-192h-192v192zM384 288v64h-64v-64h64zM0 -32v192h192v-192h-192zM64 96v-64h64v64h-64zM416 160h32v-128h-96v32h-32v-96h-64v192h96v-32h64v32zM416 0h32v-32h-32v32zM352 0h32v-32h-32v32z\" />\n    <glyph glyph-name=\"barcode\" unicode=\"&#xf02a;\" \nd=\"M0 0v384h18v-384h-18zM26.8574 0.273438v383.727h9.14258v-383.727h-9.14258zM54 0.273438v383.727h8.85742v-383.727h-8.85742zM98.8574 0.273438v383.727h8.85645v-383.727h-8.85645zM134.857 0.273438v383.727h17.7139v-383.727h-17.7139zM179.714 0.273438v383.727\nh8.85742v-383.727h-8.85742zM197.714 0.273438v383.727h8.85742v-383.727h-8.85742zM215.714 0.273438v383.727h8.85742v-383.727h-8.85742zM251.429 0.273438v383.727h18v-383.727h-18zM296.286 0.273438v383.727h18v-383.727h-18zM332.285 0.273438v383.727h18.001\nv-383.727h-18.001zM368.286 0.273438v383.727h18.001v-383.727h-18.001zM395.143 0.273438v383.727h18v-383.727h-18zM440.286 0.273438v383.727h26.8564v-383.727h-26.8564zM476 0.273438v383.727h9.14258v-383.727h-9.14258zM494 0v384h18v-384h-18z\" />\n    <glyph glyph-name=\"tag\" unicode=\"&#xf02b;\" \nd=\"M0 195.882v204.118c0 26.5098 21.4902 48 48 48h204.118c10.9746 0 26.1807 -6.29883 33.9404 -14.0586l211.883 -211.883c18.7441 -18.7441 18.7441 -49.1367 0 -67.8818l-204.118 -204.118c-18.7451 -18.7441 -49.1377 -18.7441 -67.8818 0l-211.883 211.883\nc-7.75977 7.75977 -14.0586 22.9658 -14.0586 33.9404zM112 384c-26.5098 0 -48 -21.4902 -48 -48s21.4902 -48 48 -48s48 21.4902 48 48s-21.4902 48 -48 48z\" />\n    <glyph glyph-name=\"tags\" unicode=\"&#xf02c;\" horiz-adv-x=\"640\" \nd=\"M497.941 222.059c18.7441 -18.7441 18.7441 -49.1367 0 -67.8818l-204.118 -204.118c-18.7461 -18.7451 -49.1387 -18.7441 -67.8818 0l-211.883 211.883c-7.75977 7.75977 -14.0586 22.9658 -14.0586 33.9404v204.118c0 26.5098 21.4902 48 48 48h204.118\nc10.9746 0 26.1807 -6.29883 33.9404 -14.0586zM112 288c26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48s-48 -21.4902 -48 -48s21.4902 -48 48 -48zM625.941 154.177l-204.118 -204.118c-18.7451 -18.7441 -49.1377 -18.7441 -67.8818 0l-0.360352 0.360352\nl174.059 174.059c16.999 16.999 26.3604 39.6006 26.3604 63.6406s-9.3623 46.6406 -26.3604 63.6396l-196.242 196.242h48.7207c10.9746 0 26.1807 -6.29883 33.9404 -14.0586l211.883 -211.883c18.7441 -18.7441 18.7441 -49.1367 0 -67.8818z\" />\n    <glyph glyph-name=\"book\" unicode=\"&#xf02d;\" horiz-adv-x=\"448\" \nd=\"M448 88c0 -7.5 -3.5 -14.2998 -8.90039 -18.5996c-4.19922 -15.4004 -4.19922 -59.3008 0 -74.7002c5.40039 -4.40039 8.90039 -11.2002 8.90039 -18.7002v-16c0 -13.2998 -10.7002 -24 -24 -24h-328c-53 0 -96 43 -96 96v320c0 53 43 96 96 96h328\nc13.2998 0 24 -10.7002 24 -24v-336zM128 314v-20c0 -3.2998 2.7002 -6 6 -6h212c3.2998 0 6 2.7002 6 6v20c0 3.2998 -2.7002 6 -6 6h-212c-3.2998 0 -6 -2.7002 -6 -6zM128 250v-20c0 -3.2998 2.7002 -6 6 -6h212c3.2998 0 6 2.7002 6 6v20c0 3.2998 -2.7002 6 -6 6h-212\nc-3.2998 0 -6 -2.7002 -6 -6zM381.4 0c-1.90039 17.0996 -1.90039 46.9004 0 64h-285.4c-17.5996 0 -32 -14.4004 -32 -32c0 -17.7002 14.2998 -32 32 -32h285.4z\" />\n    <glyph glyph-name=\"bookmark\" unicode=\"&#xf02e;\" horiz-adv-x=\"384\" \nd=\"M0 -64v464c0 26.5098 21.4902 48 48 48h288c26.5098 0 48 -21.4902 48 -48v-464l-192 112z\" />\n    <glyph glyph-name=\"print\" unicode=\"&#xf02f;\" \nd=\"M448 256c35.3496 0 64 -28.6504 64 -64v-112c0 -8.83984 -7.16016 -16 -16 -16h-48v-96c0 -17.6699 -14.3301 -32 -32 -32h-320c-17.6699 0 -32 14.3301 -32 32v96h-48c-8.83984 0 -16 7.16016 -16 16v112c0 35.3496 28.6504 64 64 64v160c0 17.6699 14.3301 32 32 32\nh274.74c8.49023 0 16.6299 -3.37012 22.6299 -9.37012l45.2598 -45.25c6 -6.00977 9.37012 -14.1396 9.37012 -22.6299v-114.75zM384 0v96h-256v-96h256zM384 224v96h-48c-8.83984 0 -16 7.16016 -16 16v48h-192v-160h256zM432 152c13.25 0 24 10.75 24 24\nc0 13.2598 -10.75 24 -24 24s-24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24z\" />\n    <glyph glyph-name=\"camera\" unicode=\"&#xf030;\" \nd=\"M512 304v-288c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v288c0 26.5 21.5 48 48 48h88l12.2998 32.9004c7 18.6992 24.9004 31.0996 44.9004 31.0996h125.5c20 0 37.8994 -12.4004 44.8994 -31.0996l12.4004 -32.9004h88c26.5 0 48 -21.5 48 -48zM376 160\nc0 66.2002 -53.7998 120 -120 120s-120 -53.7998 -120 -120s53.7998 -120 120 -120s120 53.7998 120 120zM344 160c0 -48.5 -39.5 -88 -88 -88s-88 39.5 -88 88s39.5 88 88 88s88 -39.5 88 -88z\" />\n    <glyph glyph-name=\"font\" unicode=\"&#xf031;\" horiz-adv-x=\"448\" \nd=\"M432 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-128c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h19.5801l-23.2998 64h-152.561l-23.2998 -64h19.5801c8.83203 0 16 -7.16797 16 -16v-32\nc0 -8.83203 -7.16797 -16 -16 -16h-128c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h23.4102l130.71 362.31c4.07422 11.9736 17.6465 21.6904 30.2939 21.6904h0.00585938h47.1602h0.00585938c12.6475 0 26.2197 -9.7168 30.2939 -21.6904\nl130.71 -362.31h23.4102zM176.85 176h94.3008l-47.1504 129.49z\" />\n    <glyph glyph-name=\"bold\" unicode=\"&#xf032;\" horiz-adv-x=\"384\" \nd=\"M333.49 210c34.4395 -27.54 55.5693 -71.1504 50.8301 -119.6c-6.86035 -70.6504 -70.2002 -122.4 -141 -122.4h-209.32c-8.83203 0 -16 7.16797 -16 16v48c0 8.83203 7.16797 16 16 16h31.8701v288h-31.8701c-8.83203 0 -16 7.16797 -16 16v48\nc0 8.83203 7.16797 16 16 16h199.42c74.5801 0 134.45 -64.4902 127.07 -140.79c-2.01367 -20.25 -14.1094 -49.4639 -27 -65.21zM145.66 336v-96h87.7598c26.4961 0 48 21.5039 48 48s-21.5039 48 -48 48h-87.7598zM233.42 48c30.9121 0 56 25.0879 56 56\ns-25.0879 56 -56 56h-87.7598v-112h87.7598z\" />\n    <glyph glyph-name=\"italic\" unicode=\"&#xf033;\" horiz-adv-x=\"320\" \nd=\"M320 400v-32c0 -8.83203 -7.16797 -16 -16 -16h-62.7598l-80 -320h46.7598c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-192c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h62.7598l80 320h-46.7598\nc-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h192c8.83203 0 16 -7.16797 16 -16z\" />\n    <glyph glyph-name=\"text-height\" unicode=\"&#xf034;\" horiz-adv-x=\"576\" \nd=\"M304 416c8.83203 0 16 -7.16797 16 -16v-96c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32h-56v-304h40c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-160c-8.83203 0 -16 7.16797 -16 16v32\nc0 8.83203 7.16797 16 16 16h40v304h-56v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v96c0 8.83203 7.16797 16 16 16h288zM560 80c15.6396 0 20.6396 -18 11.3096 -27.3096l-80 -80c-2.58594 -2.58496 -7.65332 -4.68262 -11.3096 -4.68262\ns-8.72363 2.09766 -11.3096 4.68262l-80 80c-10.0107 10 -3 27.3096 11.3096 27.3096h48v224h-48c-15.6396 0 -20.6396 18 -11.3096 27.3096l80 80c2.58594 2.58496 7.65332 4.68262 11.3096 4.68262s8.72363 -2.09766 11.3096 -4.68262l80 -80\nc10.0205 -10 3 -27.3096 -11.3096 -27.3096h-48v-224h48z\" />\n    <glyph glyph-name=\"text-width\" unicode=\"&#xf035;\" horiz-adv-x=\"448\" \nd=\"M432 416c8.83203 0 16 -7.16797 16 -16v-80c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v16h-120v-112h24c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-128c-8.83203 0 -16 7.16797 -16 16v32\nc0 8.83203 7.16797 16 16 16h24v112h-120v-16c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v80c0 8.83203 7.16797 16 16 16h416zM363.31 155.31l80 -80c2.58496 -2.58594 4.68262 -7.65332 4.68262 -11.3096s-2.09766 -8.72363 -4.68262 -11.3096\nl-80 -80c-10 -10.0205 -27.3096 -3 -27.3096 11.3096v48h-224v-48c0 -15.6396 -18 -20.6396 -27.3096 -11.3096l-80 80c-2.58496 2.58594 -4.68262 7.65332 -4.68262 11.3096s2.09766 8.72363 4.68262 11.3096l80 80c10 10.0107 27.3096 3 27.3096 -11.3096v-48h224v48\nc0 15.6396 18 20.6396 27.3096 11.3096z\" />\n    <glyph glyph-name=\"align-left\" unicode=\"&#xf036;\" horiz-adv-x=\"448\" \nd=\"M12.8301 96c-7.07715 0 -12.8301 5.74316 -12.8301 12.8203v0.00976562v38.3398v0.00976562c0 7.07715 5.74316 12.8203 12.8203 12.8203h0.00976562h262.34h0.00976562c7.07715 0 12.8203 -5.74316 12.8203 -12.8203v-0.00976562v-38.3398v-0.00976562\nc0 -7.07715 -5.74316 -12.8203 -12.8203 -12.8203h-0.00976562h-262.34zM12.8301 352c-7.07715 0 -12.8301 5.74316 -12.8301 12.8203v0.00976562v38.3398v0.00976562c0 7.07715 5.74316 12.8203 12.8203 12.8203h0.00976562h262.34h0.00976562\nc7.07715 0 12.8203 -5.74316 12.8203 -12.8203v-0.00976562v-38.3398v-0.00976562c0 -7.07715 -5.74316 -12.8203 -12.8203 -12.8203h-0.00976562h-262.34zM432 288c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16\nv32c0 8.83203 7.16797 16 16 16h416zM432 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h416z\" />\n    <glyph glyph-name=\"align-center\" unicode=\"&#xf037;\" horiz-adv-x=\"448\" \nd=\"M432 288c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h416zM432 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16\nv32c0 8.83203 7.16797 16 16 16h416zM108.1 352c-6.67871 0 -12.0996 5.4209 -12.0996 12.0996v39.8105c0 6.67383 5.41602 12.0898 12.0898 12.0898h0.00976562h231.811c6.67383 0 12.0898 -5.41602 12.0898 -12.0898v-39.8105v-0.00976562\nc0 -6.67383 -5.41602 -12.0898 -12.0898 -12.0898v0h-231.811zM339.91 96h-231.811c-6.67871 0 -12.0996 5.4209 -12.0996 12.0996v39.8105c0 6.67383 5.41602 12.0898 12.0898 12.0898h0.00976562h231.811c6.67383 0 12.0898 -5.41602 12.0898 -12.0898v-39.8105\nv-0.00976562c0 -6.67383 -5.41602 -12.0898 -12.0898 -12.0898v0z\" />\n    <glyph glyph-name=\"align-right\" unicode=\"&#xf038;\" horiz-adv-x=\"448\" \nd=\"M16 224c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h416c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-416zM432 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16\nv32c0 8.83203 7.16797 16 16 16h416zM435.17 416c7.07715 0 12.8301 -5.74316 12.8301 -12.8203v-0.00976562v-38.3398v-0.00976562c0 -7.07715 -5.74316 -12.8203 -12.8203 -12.8203h-0.00976562h-262.34h-0.00976562c-7.07715 0 -12.8203 5.74316 -12.8203 12.8203\nv0.00976562v38.3398v0.00976562c0 7.07715 5.74316 12.8203 12.8203 12.8203h0.00976562h262.34zM435.17 160c7.07715 0 12.8301 -5.74316 12.8301 -12.8203v-0.00976562v-38.3398v-0.00976562c0 -7.07715 -5.74316 -12.8203 -12.8203 -12.8203h-0.00976562h-262.34\nh-0.00976562c-7.07715 0 -12.8203 5.74316 -12.8203 12.8203v0.00976562v38.3398v0.00976562c0 7.07715 5.74316 12.8203 12.8203 12.8203h0.00976562h262.34z\" />\n    <glyph glyph-name=\"align-justify\" unicode=\"&#xf039;\" horiz-adv-x=\"448\" \nd=\"M432 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h416zM432 160c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16\nv32c0 8.83203 7.16797 16 16 16h416zM432 288c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h416zM432 416c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16\nh-416c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h416z\" />\n    <glyph glyph-name=\"list\" unicode=\"&#xf03a;\" \nd=\"M80 80c8.83203 0 16 -7.16797 16 -16v-64c0 -8.83203 -7.16797 -16 -16 -16h-64c-8.83203 0 -16 7.16797 -16 16v64c0 8.83203 7.16797 16 16 16h64zM80 400c8.83203 0 16 -7.16797 16 -16v-64c0 -8.83203 -7.16797 -16 -16 -16h-64c-8.83203 0 -16 7.16797 -16 16v64\nc0 8.83203 7.16797 16 16 16h64zM80 240c8.83203 0 16 -7.16797 16 -16v-64c0 -8.83203 -7.16797 -16 -16 -16h-64c-8.83203 0 -16 7.16797 -16 16v64c0 8.83203 7.16797 16 16 16h64zM496 64c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-320\nc-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h320zM496 384c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-320c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h320zM496 224c8.83203 0 16 -7.16797 16 -16v-32\nc0 -8.83203 -7.16797 -16 -16 -16h-320c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h320z\" />\n    <glyph glyph-name=\"outdent\" unicode=\"&#xf03b;\" horiz-adv-x=\"448\" \nd=\"M100.69 84.71l-96 95.9805c-2.58496 2.58594 -4.68262 7.65332 -4.68262 11.3096s2.09766 8.72363 4.68262 11.3096l96 96c9.97949 10 27.3096 3.01074 27.3096 -11.3096v-191.98c0 -14.2393 -17.3096 -21.3096 -27.3096 -11.3096zM432 32c8.83203 0 16 -7.16797 16 -16\nv-32c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h416zM435.17 160c7.07715 0 12.8301 -5.74316 12.8301 -12.8203v-0.00976562v-38.3398v-0.00976562c0 -7.07715 -5.74316 -12.8203 -12.8203 -12.8203h-0.00976562\nh-230.34h-0.00976562c-7.07715 0 -12.8203 5.74316 -12.8203 12.8203v0.00976562v38.3398v0.00976562c0 7.07715 5.74316 12.8203 12.8203 12.8203h0.00976562h230.34zM435.17 288c7.07715 0 12.8301 -5.74316 12.8301 -12.8203v-0.00976562v-38.3398v-0.00976562\nc0 -7.07715 -5.74316 -12.8203 -12.8203 -12.8203h-0.00976562h-230.34h-0.00976562c-7.07715 0 -12.8203 5.74316 -12.8203 12.8203v0.00976562v38.3398v0.00976562c0 7.07715 5.74316 12.8203 12.8203 12.8203h0.00976562h230.34zM432 416c8.83203 0 16 -7.16797 16 -16\nv-32c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h416z\" />\n    <glyph glyph-name=\"indent\" unicode=\"&#xf03c;\" horiz-adv-x=\"448\" \nd=\"M27.3096 84.7002c-9.97949 -10 -27.3096 -3.00977 -27.3096 11.2998v192c0 14.2197 17.2695 21.3398 27.3096 11.3203l96 -96c2.58496 -2.58691 4.68262 -7.65332 4.68262 -11.3105c0 -3.65625 -2.09766 -8.72363 -4.68262 -11.3096zM432 32\nc8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h416zM435.17 160c7.07715 0 12.8301 -5.74316 12.8301 -12.8203v-0.00976562v-38.3398v-0.00976562\nc0 -7.07715 -5.74316 -12.8203 -12.8203 -12.8203h-0.00976562h-230.34h-0.00976562c-7.07715 0 -12.8203 5.74316 -12.8203 12.8203v0.00976562v38.3398v0.00976562c0 7.07715 5.74316 12.8203 12.8203 12.8203h0.00976562h230.34zM435.17 288\nc7.07715 0 12.8301 -5.74316 12.8301 -12.8203v-0.00976562v-38.3398v-0.00976562c0 -7.07715 -5.74316 -12.8203 -12.8203 -12.8203h-0.00976562h-230.34h-0.00976562c-7.07715 0 -12.8203 5.74316 -12.8203 12.8203v0.00976562v38.3398v0.00976562\nc0 7.07715 5.74316 12.8203 12.8203 12.8203h0.00976562h230.34zM432 416c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h416z\" />\n    <glyph glyph-name=\"video\" unicode=\"&#xf03d;\" horiz-adv-x=\"576\" \nd=\"M336.2 384c26.3994 0 47.7998 -21.4004 47.7998 -47.7998v-288.4c0 -26.3994 -21.4004 -47.7998 -47.7998 -47.7998h-288.4c-26.3994 0 -47.7998 21.4004 -47.7998 47.7998v288.4c0 26.3994 21.4004 47.7998 47.7998 47.7998h288.4zM525.6 346.3\nc21.3008 14.6006 50.4004 -0.399414 50.4004 -25.7998v-256.9c0 -25.5 -29.2002 -40.3994 -50.4004 -25.7998l-109.6 75.5v157.4z\" />\n    <glyph glyph-name=\"image\" unicode=\"&#xf03e;\" \nd=\"M464 0h-416c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h416c26.5098 0 48 -21.4902 48 -48v-288c0 -26.5098 -21.4902 -48 -48 -48zM112 328c-30.9277 0 -56 -25.0723 -56 -56s25.0723 -56 56 -56s56 25.0723 56 56s-25.0723 56 -56 56zM64 64h384\nv112l-87.5146 87.5146c-4.68652 4.68652 -12.2842 4.68652 -16.9717 0l-135.514 -135.515l-55.5146 55.5146c-4.68652 4.68652 -12.2842 4.68652 -16.9717 0l-71.5137 -71.5146v-48z\" />\n    <glyph glyph-name=\"map-marker\" unicode=\"&#xf041;\" horiz-adv-x=\"384\" \nd=\"M172.268 -53.6699c-145.298 210.639 -172.268 232.257 -172.268 309.67c0 106.039 85.9609 192 192 192s192 -85.9609 192 -192c0 -77.4131 -26.9697 -99.0312 -172.268 -309.67c-9.53516 -13.7744 -29.9307 -13.7734 -39.4648 0z\" />\n    <glyph glyph-name=\"adjust\" unicode=\"&#xf042;\" \nd=\"M8 192c0 136.967 111.034 248 248 248s248 -111.034 248 -248s-111.033 -248 -248 -248s-248 111.034 -248 248zM256 8c101.689 0 184 82.2949 184 184c0 101.689 -82.2949 184 -184 184v-368z\" />\n    <glyph glyph-name=\"tint\" unicode=\"&#xf043;\" horiz-adv-x=\"352\" \nd=\"M205.22 425.91c46.9902 -158.48 146.78 -200.07 146.78 -311.82c0 -98.4395 -78.7197 -178.09 -176 -178.09s-176 79.6504 -176 178.09c0 111.19 100.01 154.061 146.78 311.82c9 30.1201 50.5 28.7803 58.4395 0zM176 0c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16\nc-44.1104 0 -80 35.8896 -80 80c0 8.83984 -7.16016 16 -16 16s-16 -7.16016 -16 -16c0 -61.75 50.25 -112 112 -112z\" />\n    <glyph glyph-name=\"edit\" unicode=\"&#xf044;\" horiz-adv-x=\"576\" \nd=\"M402.6 364.8l90.2002 -90.2002c3.7998 -3.7998 3.7998 -10 0 -13.7998l-218.399 -218.399l-92.8008 -10.3008c-12.3994 -1.39941 -22.8994 9.10059 -21.5 21.5l10.3008 92.8008l218.399 218.399c3.7998 3.7998 10 3.7998 13.7998 0zM564.6 387.7\nc15.2002 -15.2002 15.2002 -39.9004 0 -55.2002l-35.3994 -35.4004c-3.7998 -3.7998 -10 -3.7998 -13.7998 0l-90.2002 90.2002c-3.7998 3.7998 -3.7998 10 0 13.7998l35.3994 35.4004c15.3008 15.2002 40 15.2002 55.2002 0zM384 101.8c0 3.2002 1.2998 6.2002 3.5 8.5\nl40 40c7.59961 7.5 20.5 2.2002 20.5 -8.5v-157.8c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h285.8c10.7002 0 16.1006 -12.9004 8.5 -20.5l-40 -40c-2.2998 -2.2002 -5.2998 -3.5 -8.5 -3.5h-229.8v-320h320v101.8z\" />\n    <glyph glyph-name=\"step-backward\" unicode=\"&#xf048;\" horiz-adv-x=\"448\" \nd=\"M64 -20v424c0 6.59961 5.40039 12 12 12h48c6.59961 0 12 -5.40039 12 -12v-176.4l195.5 181c20.5996 17.1006 52.5 2.80078 52.5 -24.5996v-384c0 -27.4004 -31.9004 -41.7002 -52.5 -24.5996l-195.5 179.899v-175.3c0 -6.59961 -5.40039 -12 -12 -12h-48\nc-6.59961 0 -12 5.40039 -12 12z\" />\n    <glyph glyph-name=\"fast-backward\" unicode=\"&#xf049;\" \nd=\"M0 12v360c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-151.9l171.5 156.5c20.5996 17.1006 52.5 2.80078 52.5 -24.5996v-131.9l171.5 156.5c20.5996 17.1006 52.5 2.80078 52.5 -24.5996v-320c0 -27.4004 -31.9004 -41.7002 -52.5 -24.5996\nl-171.5 155.3v-130.7c0 -27.4004 -31.9004 -41.7002 -52.5 -24.5996l-171.5 155.3v-150.7c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12z\" />\n    <glyph glyph-name=\"backward\" unicode=\"&#xf04a;\" \nd=\"M11.5 167.4c-15.2998 12.7998 -15.2998 36.3994 0 49.1992l192 160c20.5996 17.2002 52.5 2.80078 52.5 -24.5996v-320c0 -27.4004 -31.9004 -41.7998 -52.5 -24.5996zM267.5 167.4c-15.2998 12.7998 -15.2998 36.3994 0 49.1992l192 160\nc20.5996 17.2002 52.5 2.80078 52.5 -24.5996v-320c0 -27.4004 -31.9004 -41.7998 -52.5 -24.5996z\" />\n    <glyph glyph-name=\"play\" unicode=\"&#xf04b;\" horiz-adv-x=\"448\" \nd=\"M424.4 233.3c31.5 -18.5 31.3994 -64.0996 0 -82.5996l-352 -208c-31.7002 -18.7998 -72.4004 3.7998 -72.4004 41.2998v416.1c0 41.8008 43.7998 58.2002 72.4004 41.3008z\" />\n    <glyph glyph-name=\"pause\" unicode=\"&#xf04c;\" horiz-adv-x=\"448\" \nd=\"M144 -31h-96c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h96c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48zM448 17c0 -26.5 -21.5 -48 -48 -48h-96c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h96c26.5 0 48 -21.5 48 -48v-352z\" />\n    <glyph glyph-name=\"stop\" unicode=\"&#xf04d;\" horiz-adv-x=\"448\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352z\" />\n    <glyph glyph-name=\"forward\" unicode=\"&#xf04e;\" \nd=\"M500.5 216.6c15.2998 -12.7998 15.2998 -36.3994 0 -49.1992l-192 -160c-20.5996 -17.2002 -52.5 -2.80078 -52.5 24.5996v320c0 27.4004 31.9004 41.7002 52.5 24.5996zM244.5 216.6c15.2998 -12.7998 15.2998 -36.3994 0 -49.1992l-192 -160\nc-20.5996 -17.2002 -52.5 -2.80078 -52.5 24.5996v320c0 27.4004 31.9004 41.7002 52.5 24.5996z\" />\n    <glyph glyph-name=\"fast-forward\" unicode=\"&#xf050;\" \nd=\"M512 372v-360c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v151.9l-171.5 -156.5c-20.5996 -17.2002 -52.5 -2.80078 -52.5 24.5996v131.9l-171.5 -156.5c-20.5996 -17.2002 -52.5 -2.80078 -52.5 24.5996v320\nc0 27.4004 31.9004 41.7002 52.5 24.5996l171.5 -155.399v130.8c0 27.4004 31.9004 41.7002 52.5 24.5996l171.5 -155.399v150.8c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12z\" />\n    <glyph glyph-name=\"step-forward\" unicode=\"&#xf051;\" horiz-adv-x=\"448\" \nd=\"M384 404v-424c0 -6.59961 -5.40039 -12 -12 -12h-48c-6.59961 0 -12 5.40039 -12 12v176.4l-195.5 -181c-20.5996 -17.1006 -52.5 -2.80078 -52.5 24.5996v384c0 27.4004 31.9004 41.7002 52.5 24.5996l195.5 -179.899v175.3c0 6.59961 5.40039 12 12 12h48\nc6.59961 0 12 -5.40039 12 -12z\" />\n    <glyph glyph-name=\"eject\" unicode=\"&#xf052;\" horiz-adv-x=\"448\" \nd=\"M448 64v-64c0 -17.6729 -14.3271 -32 -32 -32h-384c-17.6729 0 -32 14.3271 -32 32v64c0 17.6729 14.3271 32 32 32h384c17.6729 0 32 -14.3271 32 -32zM48.0527 128c-41.7285 0 -63.5273 49.7324 -35.3828 80.4346l175.946 192.008\nc19.0156 20.7432 51.7529 20.7422 70.7666 0l175.939 -192.008c28.1973 -30.7607 6.26758 -80.4346 -35.3828 -80.4346h-351.887z\" />\n    <glyph glyph-name=\"chevron-left\" unicode=\"&#xf053;\" horiz-adv-x=\"320\" \nd=\"M34.5195 208.97l194.351 194.34c9.37012 9.37012 24.5703 9.37012 33.9395 0l22.6709 -22.6699c9.35938 -9.35938 9.36914 -24.5195 0.0390625 -33.8994l-154.029 -154.74l154.02 -154.75c9.33984 -9.37988 9.32031 -24.54 -0.0400391 -33.9004l-22.6699 -22.6699\nc-9.37012 -9.37012 -24.5693 -9.37012 -33.9395 0l-194.341 194.351c-9.36914 9.37012 -9.36914 24.5693 0 33.9395z\" />\n    <glyph glyph-name=\"chevron-right\" unicode=\"&#xf054;\" horiz-adv-x=\"320\" \nd=\"M285.476 175.029l-194.344 -194.344c-9.37305 -9.37207 -24.5684 -9.37207 -33.9404 0l-22.667 22.667c-9.35742 9.35742 -9.375 24.5225 -0.0400391 33.9014l154.021 154.746l-154.021 154.745c-9.33496 9.37891 -9.31738 24.5439 0.0400391 33.9014l22.667 22.667\nc9.37305 9.37207 24.5684 9.37207 33.9404 0l194.343 -194.344c9.37305 -9.37207 9.37305 -24.5674 0.000976562 -33.9404z\" />\n    <glyph glyph-name=\"plus-circle\" unicode=\"&#xf055;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM400 164v56c0 6.59961 -5.40039 12 -12 12h-92v92c0 6.59961 -5.40039 12 -12 12h-56c-6.59961 0 -12 -5.40039 -12 -12v-92h-92c-6.59961 0 -12 -5.40039 -12 -12v-56\nc0 -6.59961 5.40039 -12 12 -12h92v-92c0 -6.59961 5.40039 -12 12 -12h56c6.59961 0 12 5.40039 12 12v92h92c6.59961 0 12 5.40039 12 12z\" />\n    <glyph glyph-name=\"minus-circle\" unicode=\"&#xf056;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM124 152h264c6.59961 0 12 5.40039 12 12v56c0 6.59961 -5.40039 12 -12 12h-264c-6.59961 0 -12 -5.40039 -12 -12v-56c0 -6.59961 5.40039 -12 12 -12z\" />\n    <glyph glyph-name=\"times-circle\" unicode=\"&#xf057;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM377.6 126.9l-65.5996 65.0996l65.7002 65c4.7002 4.7002 4.7002 12.2998 0 17l-39.6006 39.5996c-4.69922 4.7002 -12.2998 4.7002 -17 0l-65.0996 -65.5996l-65 65.7002\nc-4.7002 4.7002 -12.2998 4.7002 -17 0l-39.5996 -39.6006c-4.7002 -4.69922 -4.7002 -12.2998 0 -17l65.5996 -65.0996l-65.5996 -65c-4.7002 -4.7002 -4.7002 -12.2998 0 -17l39.5 -39.5996c4.69922 -4.7002 12.2998 -4.7002 17 0l65.0996 65.5996l65 -65.5996\nc4.7002 -4.7002 12.2998 -4.7002 17 0l39.5996 39.5c4.7002 4.69922 4.7002 12.2998 0 17z\" />\n    <glyph glyph-name=\"check-circle\" unicode=\"&#xf058;\" \nd=\"M504 192c0 -136.967 -111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248s248 -111.033 248 -248zM227.314 60.6855l184 184c6.24707 6.24805 6.24707 16.3799 0 22.6279l-22.6279 22.627c-6.24707 6.24902 -16.3789 6.24902 -22.6279 0\nl-150.059 -150.059l-70.0586 70.0596c-6.24805 6.24805 -16.3799 6.24805 -22.6279 0l-22.6279 -22.627c-6.24707 -6.24805 -6.24707 -16.3799 0 -22.6279l104 -104c6.24902 -6.24805 16.3799 -6.24805 22.6289 -0.000976562z\" />\n    <glyph glyph-name=\"question-circle\" unicode=\"&#xf059;\" \nd=\"M504 192c0 -136.997 -111.043 -248 -248 -248s-248 111.003 -248 248c0 136.917 111.043 248 248 248s248 -111.083 248 -248zM262.655 358c-54.4971 0 -89.2549 -22.957 -116.549 -63.7578c-3.53613 -5.28613 -2.35352 -12.415 2.71484 -16.2578l34.6982 -26.3105\nc5.20508 -3.94727 12.6211 -3.00781 16.665 2.12207c17.8643 22.6582 30.1133 35.7969 57.3037 35.7969c20.4287 0 45.6973 -13.1475 45.6973 -32.958c0 -14.9756 -12.3623 -22.667 -32.5332 -33.9756c-23.5244 -13.1875 -54.6523 -29.6006 -54.6523 -70.6592v-4\nc0 -6.62695 5.37305 -12 12 -12h56c6.62695 0 12 5.37305 12 12v1.33301c0 28.4619 83.1855 29.6475 83.1855 106.667c0 58.002 -60.1641 102 -116.53 102zM256 110c-25.3652 0 -46 -20.6348 -46 -46c0 -25.3643 20.6348 -46 46 -46s46 20.6357 46 46\nc0 25.3652 -20.6348 46 -46 46z\" />\n    <glyph glyph-name=\"info-circle\" unicode=\"&#xf05a;\" \nd=\"M256 440c136.957 0 248 -111.083 248 -248c0 -136.997 -111.043 -248 -248 -248s-248 111.003 -248 248c0 136.917 111.043 248 248 248zM256 330c-23.1963 0 -42 -18.8037 -42 -42s18.8037 -42 42 -42s42 18.8037 42 42s-18.8037 42 -42 42zM312 76v24\nc0 6.62695 -5.37305 12 -12 12h-12v100c0 6.62695 -5.37305 12 -12 12h-64c-6.62695 0 -12 -5.37305 -12 -12v-24c0 -6.62695 5.37305 -12 12 -12h12v-64h-12c-6.62695 0 -12 -5.37305 -12 -12v-24c0 -6.62695 5.37305 -12 12 -12h88c6.62695 0 12 5.37305 12 12z\" />\n    <glyph glyph-name=\"crosshairs\" unicode=\"&#xf05b;\" \nd=\"M500 224c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-30.3643c-13.9121 -93.6748 -87.9609 -167.724 -181.636 -181.636v-30.3643c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v30.3643\nc-93.6748 13.9121 -167.724 87.9609 -181.636 181.636h-30.3643c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h30.3643c13.9121 93.6748 87.9609 167.724 181.636 181.636v30.3643c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-30.3643\nc93.6748 -13.9121 167.724 -87.9609 181.636 -181.636h30.3643zM288 43.3662c58.2432 12.417 104.232 58.46 116.634 116.634h-40.6338c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40.6338c-12.417 58.2432 -58.46 104.232 -116.634 116.634v-40.6338\nc0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40.6338c-58.2432 -12.417 -104.232 -58.46 -116.634 -116.634h40.6338c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-40.6338\nc12.417 -58.2432 58.46 -104.232 116.634 -116.634v40.6338c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40.6338zM288 192c0 -17.6729 -14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32s32 -14.3271 32 -32z\" />\n    <glyph glyph-name=\"ban\" unicode=\"&#xf05e;\" \nd=\"M256 440c136.967 0 248 -111.034 248 -248s-111.034 -248 -248 -248s-248 111.033 -248 248s111.034 248 248 248zM386.108 322.108c-65.4121 65.4102 -165.435 70.0312 -235.639 20.6758l256.315 -256.313c49.3232 70.1562 44.7705 170.189 -20.6768 235.638z\nM125.892 61.8916c65.4121 -65.4111 165.436 -70.0312 235.639 -20.6758l-256.315 256.313c-49.3232 -70.1562 -44.7705 -170.189 20.6768 -235.638z\" />\n    <glyph glyph-name=\"arrow-left\" unicode=\"&#xf060;\" horiz-adv-x=\"448\" \nd=\"M257.5 2.90039l-22.2002 -22.2002c-9.39941 -9.40039 -24.5996 -9.40039 -33.8994 0l-194.4 194.3c-9.40039 9.40039 -9.40039 24.5996 0 33.9004l194.4 194.399c9.39941 9.40039 24.5996 9.40039 33.8994 0l22.2002 -22.2002c9.5 -9.5 9.2998 -25 -0.400391 -34.2998\nl-120.5 -114.8h287.4c13.2998 0 24 -10.7002 24 -24v-32c0 -13.2998 -10.7002 -24 -24 -24h-287.4l120.5 -114.8c9.80078 -9.2998 10 -24.7998 0.400391 -34.2998z\" />\n    <glyph glyph-name=\"arrow-right\" unicode=\"&#xf061;\" horiz-adv-x=\"448\" \nd=\"M190.5 381.1l22.2002 22.2002c9.39941 9.40039 24.5996 9.40039 33.8994 0l194.4 -194.3c9.40039 -9.40039 9.40039 -24.5996 0 -33.9004l-194.4 -194.399c-9.39941 -9.40039 -24.5996 -9.40039 -33.8994 0l-22.2002 22.2002c-9.5 9.5 -9.2998 25 0.400391 34.2998\nl120.5 114.8h-287.4c-13.2998 0 -24 10.7002 -24 24v32c0 13.2998 10.7002 24 24 24h287.4l-120.5 114.8c-9.80078 9.2998 -10 24.7998 -0.400391 34.2998z\" />\n    <glyph glyph-name=\"arrow-up\" unicode=\"&#xf062;\" horiz-adv-x=\"448\" \nd=\"M34.9004 158.5l-22.2002 22.2002c-9.40039 9.39941 -9.40039 24.5996 0 33.8994l194.3 194.4c9.40039 9.40039 24.5996 9.40039 33.9004 0l194.3 -194.3c9.39941 -9.40039 9.39941 -24.6006 0 -33.9004l-22.2002 -22.2002c-9.5 -9.5 -25 -9.2998 -34.2998 0.400391\nl-114.7 120.4v-287.4c0 -13.2998 -10.7002 -24 -24 -24h-32c-13.2998 0 -24 10.7002 -24 24v287.4l-114.8 -120.5c-9.2998 -9.80078 -24.7998 -10 -34.2998 -0.400391z\" />\n    <glyph glyph-name=\"arrow-down\" unicode=\"&#xf063;\" horiz-adv-x=\"448\" \nd=\"M413.1 225.5l22.2002 -22.2002c9.40039 -9.39941 9.40039 -24.5996 0 -33.8994l-194.3 -194.4c-9.40039 -9.40039 -24.5996 -9.40039 -33.9004 0l-194.399 194.4c-9.40039 9.39941 -9.40039 24.5996 0 33.8994l22.2002 22.2002c9.5 9.5 25 9.2998 34.2998 -0.400391\nl114.8 -120.5v287.4c0 13.2998 10.7002 24 24 24h32c13.2998 0 24 -10.7002 24 -24v-287.4l114.8 120.5c9.2998 9.80078 24.7998 10 34.2998 0.400391z\" />\n    <glyph glyph-name=\"share\" unicode=\"&#xf064;\" \nd=\"M503.691 258.164c11.0859 -9.5752 11.0703 -26.7656 0 -36.3281l-176.005 -152c-15.3867 -13.2891 -39.6865 -2.53613 -39.6865 18.1641v87.915c-155.083 -2.23145 -221.934 -40.7295 -176.59 -185.742c5.03418 -16.0977 -14.4238 -28.5615 -28.0771 -18.6309\nc-43.752 31.8232 -83.333 92.6914 -83.333 154.132c0 152.227 127.371 184.419 288 186.258v80.0537c0 20.668 24.2812 31.4688 39.6865 18.1641z\" />\n    <glyph glyph-name=\"expand\" unicode=\"&#xf065;\" horiz-adv-x=\"448\" \nd=\"M0 268v124c0 13.2998 10.7002 24 24 24h124c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-84v-84c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12zM288 404c0 6.59961 5.40039 12 12 12h124c13.2998 0 24 -10.7002 24 -24\nv-124c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v84h-84c-6.59961 0 -12 5.40039 -12 12v40zM436 128c6.59961 0 12 -5.40039 12 -12v-124c0 -13.2998 -10.7002 -24 -24 -24h-124c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h84\nv84c0 6.59961 5.40039 12 12 12h40zM160 -20c0 -6.59961 -5.40039 -12 -12 -12h-124c-13.2998 0 -24 10.7002 -24 24v124c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-84h84c6.59961 0 12 -5.40039 12 -12v-40z\" />\n    <glyph glyph-name=\"compress\" unicode=\"&#xf066;\" horiz-adv-x=\"448\" \nd=\"M436 256h-124c-13.2998 0 -24 10.7002 -24 24v124c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-84h84c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12zM160 280c0 -13.2998 -10.7002 -24 -24 -24h-124\nc-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h84v84c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-124zM160 -20c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v84h-84c-6.59961 0 -12 5.40039 -12 12v40\nc0 6.59961 5.40039 12 12 12h124c13.2998 0 24 -10.7002 24 -24v-124zM352 -20c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v124c0 13.2998 10.7002 24 24 24h124c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-84v-84z\" />\n    <glyph glyph-name=\"plus\" unicode=\"&#xf067;\" horiz-adv-x=\"448\" \nd=\"M416 240c17.6699 0 32 -14.3301 32 -32v-32c0 -17.6699 -14.3301 -32 -32 -32h-144v-144c0 -17.6699 -14.3301 -32 -32 -32h-32c-17.6699 0 -32 14.3301 -32 32v144h-144c-17.6699 0 -32 14.3301 -32 32v32c0 17.6699 14.3301 32 32 32h144v144\nc0 17.6699 14.3301 32 32 32h32c17.6699 0 32 -14.3301 32 -32v-144h144z\" />\n    <glyph glyph-name=\"minus\" unicode=\"&#xf068;\" horiz-adv-x=\"448\" \nd=\"M416 240c17.6699 0 32 -14.3301 32 -32v-32c0 -17.6699 -14.3301 -32 -32 -32h-384c-17.6699 0 -32 14.3301 -32 32v32c0 17.6699 14.3301 32 32 32h384z\" />\n    <glyph glyph-name=\"asterisk\" unicode=\"&#xf069;\" \nd=\"M478.21 113.907c11.7949 -6.47754 15.96 -21.3828 9.23242 -33.0361l-19.4805 -33.7412c-6.72754 -11.6533 -21.7207 -15.499 -33.2266 -8.52246l-138.735 84.1104l3.47559 -162.204c0.288086 -13.4531 -10.5391 -24.5137 -23.9941 -24.5137h-38.9619\nc-13.4551 0 -24.2822 11.0605 -23.9941 24.5137l3.47461 162.204l-138.735 -84.1113c-11.5059 -6.97656 -26.499 -3.13086 -33.2266 8.52246l-19.4805 33.7412c-6.72852 11.6533 -2.5625 26.5596 9.23242 33.0371l142.21 78.0928l-142.209 78.0918\nc-11.7949 6.47754 -15.9609 21.3838 -9.2334 33.0371l19.4805 33.7412c6.72754 11.6533 21.7207 15.499 33.2266 8.52246l138.735 -84.1104l-3.47363 162.204c-0.289062 13.4531 10.5381 24.5137 23.9932 24.5137h38.9609c13.4561 0 24.2822 -11.0605 23.9941 -24.5137\nl-3.47461 -162.204l138.735 84.1113c11.5068 6.97656 26.499 3.13086 33.2266 -8.52246l19.4805 -33.7412c6.72852 -11.6533 2.5625 -26.5596 -9.23242 -33.0371l-142.21 -78.0928z\" />\n    <glyph glyph-name=\"exclamation-circle\" unicode=\"&#xf06a;\" \nd=\"M504 192c0 -136.997 -111.043 -248 -248 -248s-248 111.003 -248 248c0 136.917 111.043 248 248 248s248 -111.083 248 -248zM256 142c-25.4053 0 -46 -20.5947 -46 -46s20.5947 -46 46 -46s46 20.5947 46 46s-20.5947 46 -46 46zM212.327 307.346l7.41797 -136\nc0.34668 -6.36328 5.6084 -11.3457 11.9814 -11.3457h48.5469c6.37305 0 11.6348 4.98242 11.9814 11.3457l7.41797 136c0.375 6.87402 -5.09766 12.6543 -11.9814 12.6543h-63.3838c-6.88379 0 -12.3555 -5.78027 -11.9805 -12.6543z\" />\n    <glyph glyph-name=\"gift\" unicode=\"&#xf06b;\" \nd=\"M32 0v128h192v-160h-160c-17.7002 0 -32 14.2998 -32 32zM288 -32v160h192v-128c0 -17.7002 -14.2998 -32 -32 -32h-160zM480 288c17.7002 0 32 -14.2998 32 -32v-80c0 -8.7998 -7.2002 -16 -16 -16h-480c-8.7998 0 -16 7.2002 -16 16v80c0 17.7002 14.2998 32 32 32\nh44.0996c-6.2998 12.0996 -10.0996 25.5 -10.0996 40c0 48.5 39.5 88 88 88c41.5996 0 68.5 -21.2998 103 -68.2998c34.5 47 61.4004 68.2998 103 68.2998c48.5 0 88 -39.5 88 -88c0 -14.5 -3.90039 -27.9004 -10.0996 -40h42.0996zM153.9 288h86.0996\nc-51.5 76.7002 -66.2002 80 -86.0996 80c-22.1006 0 -40 -17.9004 -40 -40s17.8994 -40 40 -40zM360 288c22.0996 0 40 17.9004 40 40s-17.9004 40 -40 40c-20.4004 0 -34.7002 -3.5 -86.0996 -80h86.0996z\" />\n    <glyph glyph-name=\"leaf\" unicode=\"&#xf06c;\" horiz-adv-x=\"576\" \nd=\"M546.2 438.3c19 -42.3994 29.7998 -94.3994 29.7998 -144.6c0 -172.4 -110.5 -313.2 -267.5 -324.601c-80.9004 -8.59961 -142.5 33.3008 -174.9 77.2002c-51 -42.7002 -70.3994 -87 -71.8994 -90.5996c-6.7998 -16.2002 -25.4004 -24.1006 -41.7998 -17.2998\nc-16.3008 6.69922 -24.1006 25.2998 -17.5 41.5996c23.5996 57.9004 130.199 212 381.6 212c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16c-130.6 0 -222.7 -38.7998 -286.5 -84.5c-0.700195 6.7998 -1.5 13.5 -1.5 20.5c0 106 86 192 192 192h80\nc63.4004 0 118.9 33.5996 149.9 87.5c6.69922 11.7998 22.6992 11.2998 28.2998 -1.2002z\" />\n    <glyph glyph-name=\"fire\" unicode=\"&#xf06d;\" horiz-adv-x=\"384\" \nd=\"M216 424.14c0 -103.14 168 -125.85 168 -296.14c0 -105.87 -86.1299 -192 -192 -192s-192 86.1299 -192 192c0 58.6699 27.7998 106.84 54.5703 134.96c14.96 15.7305 41.4297 5.2002 41.4297 -16.5v-85.5098c0 -35.1699 27.9805 -64.4902 63.1504 -64.9404\nc35.7393 -0.469727 64.8496 28.3604 64.8496 63.9902c0 88 -176 96.1504 -52.1504 277.18c13.5 19.7305 44.1504 10.7607 44.1504 -13.04z\" />\n    <glyph glyph-name=\"eye\" unicode=\"&#xf06e;\" horiz-adv-x=\"576\" \nd=\"M572.52 206.6c1.9209 -3.79883 3.47949 -10.3379 3.47949 -14.5947s-1.55859 -10.7959 -3.47949 -14.5947c-54.1992 -105.771 -161.59 -177.41 -284.52 -177.41s-230.29 71.5898 -284.52 177.4c-1.9209 3.79883 -3.47949 10.3379 -3.47949 14.5947\ns1.55859 10.7959 3.47949 14.5947c54.1992 105.771 161.59 177.41 284.52 177.41s230.29 -71.5898 284.52 -177.4zM288 48h0.0703125c79.4492 0 143.93 64.4805 143.93 143.93v0.0703125c0 79.4883 -64.5117 144 -144 144s-144 -64.5117 -144 -144s64.5117 -144 144 -144z\nM288 288h0.225586c52.8701 0 95.7803 -42.9092 95.7803 -95.7793c0 -52.8711 -42.9102 -95.7803 -95.7803 -95.7803c-52.8711 0 -95.7803 42.9092 -95.7803 95.7803c0 7.04785 1.49805 18.2871 3.34473 25.0889c6.9834 -5.13867 19.6895 -9.30957 28.3604 -9.30957\nc26.4131 0 47.8496 21.4365 47.8496 47.8496c0 8.6709 -4.1709 21.377 -9.30957 28.3604c6.84375 1.99219 18.1826 3.69043 25.3096 3.79004z\" />\n    <glyph glyph-name=\"eye-slash\" unicode=\"&#xf070;\" horiz-adv-x=\"640\" \nd=\"M320 48c7.24121 0.0673828 18.8896 1.23633 26 2.61035l51.8896 -40.1504c-25.0195 -6.45996 -50.9795 -10.46 -77.8896 -10.46c-122.93 0 -230.29 71.5898 -284.52 177.4c-1.9209 3.79883 -3.47949 10.3379 -3.47949 14.5947s1.55859 10.7959 3.47949 14.5947\nc10.2393 20 22.9297 38.29 36.7197 55.5898l104.899 -81.0693c5.65039 -74.4004 67.0508 -133.11 142.9 -133.11zM633.82 -10.0996c3.41309 -2.65234 6.18359 -8.3125 6.18359 -12.6357c0 -3.02734 -1.50684 -7.42383 -3.36426 -9.81445l-19.6396 -25.2705\nc-2.65234 -3.41211 -8.31152 -6.18262 -12.6338 -6.18262c-3.03125 0 -7.43359 1.51172 -9.82617 3.37305l-588.36 454.729c-3.41016 2.65234 -6.17773 8.31055 -6.17773 12.6309c0 3.0293 1.50879 7.42773 3.36816 9.81934l19.6299 25.2705\nc2.65234 3.41211 8.31152 6.18262 12.6338 6.18262c3.03125 0 7.43359 -1.51172 9.82617 -3.37305l127.22 -98.3301c38.0117 20.7578 104.011 37.6475 147.32 37.7002c122.93 0 230.29 -71.5898 284.52 -177.4c1.9209 -3.79883 3.47949 -10.3379 3.47949 -14.5947\ns-1.55859 -10.7959 -3.47949 -14.5947c-16.7666 -32.6758 -53.166 -78.4033 -81.25 -102.07zM450.1 131.9c8.61035 18.3203 13.9004 38.4697 13.9004 60.0996v0.0800781c0 79.4434 -64.4766 143.92 -143.92 143.92h-0.0800781\nc-28.4697 -0.0214844 -69.3047 -14.8545 -91.1504 -33.1104l73.6104 -56.8896c0.726562 2.71387 1.41602 7.19336 1.54004 10c-0.015625 8.62891 -4.18652 21.2666 -9.30957 28.21c7.17969 2.09668 19.0781 3.79785 26.5576 3.79785\nc52.3076 0 94.7598 -42.4521 94.7598 -94.7598c0 -0.344727 -0.00292969 -0.90332 -0.0078125 -1.24805c-0.112305 -8.43457 -2.44238 -21.749 -5.2002 -29.7197z\" />\n    <glyph glyph-name=\"exclamation-triangle\" unicode=\"&#xf071;\" horiz-adv-x=\"576\" \nd=\"M569.517 7.9873c18.458 -31.9941 -4.71094 -71.9873 -41.5762 -71.9873h-479.887c-36.9365 0 -59.999 40.0547 -41.5771 71.9873l239.946 416.027c18.4668 32.0098 64.7197 31.9512 83.1543 0zM288 94c-25.4053 0 -46 -20.5947 -46 -46s20.5947 -46 46 -46\ns46 20.5947 46 46s-20.5947 46 -46 46zM244.327 259.346l7.41797 -136c0.34668 -6.36328 5.6084 -11.3457 11.9814 -11.3457h48.5469c6.37305 0 11.6348 4.98242 11.9814 11.3457l7.41797 136c0.375 6.87402 -5.09766 12.6543 -11.9814 12.6543h-63.3838\nc-6.88379 0 -12.3555 -5.78027 -11.9805 -12.6543z\" />\n    <glyph glyph-name=\"plane\" unicode=\"&#xf072;\" horiz-adv-x=\"576\" \nd=\"M480 256c35.3496 0 96 -28.6504 96 -64s-60.6504 -64 -96 -64h-114.29l-105.11 -183.94c-2.84961 -4.97949 -8.14941 -8.05957 -13.8896 -8.05957h-65.5c-10.6299 0 -18.2998 10.1797 -15.3799 20.4004l49.0303 171.6h-102.86l-43.2002 -57.5996\nc-3.01953 -4.03027 -7.75977 -6.40039 -12.7998 -6.40039h-39.9902c-10.4102 0 -18.0498 9.78027 -15.5195 19.8799l31.5098 108.12l-31.5098 108.12c-2.53027 10.0996 5.10938 19.8799 15.5195 19.8799h39.9902c5.03027 0 9.78027 -2.37012 12.7998 -6.40039\nl43.2002 -57.5996h102.86l-49.0303 171.61c-2.91992 10.2197 4.75 20.3896 15.3799 20.3896h65.5h0.000976562c5.12598 0 11.3525 -3.61133 13.8994 -8.05957l105.1 -183.94h114.29z\" />\n    <glyph glyph-name=\"calendar-alt\" unicode=\"&#xf073;\" horiz-adv-x=\"448\" \nd=\"M0 -16v272h448v-272c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48zM320 180v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12v40c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12zM320 52v-40\nc0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12v40c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12zM192 180v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12v40c0 6.59961 -5.40039 12 -12 12h-40\nc-6.59961 0 -12 -5.40039 -12 -12zM192 52v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12v40c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12zM64 180v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12v40\nc0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12zM64 52v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12v40c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12zM400 384c26.5 0 48 -21.5 48 -48v-48h-448v48\nc0 26.5 21.5 48 48 48h48v48c0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-48h128v48c0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-48h48z\" />\n    <glyph glyph-name=\"random\" unicode=\"&#xf074;\" \nd=\"M504.971 88.9707c9.37305 -9.37305 9.37305 -24.5684 0 -33.9404l-80 -79.9844c-15.0098 -15.0098 -40.9707 -4.49023 -40.9707 16.9707v39.9834h-58.7852c-2.87793 0 -6.80859 1.70801 -8.77246 3.81152l-70.5566 75.5967l53.333 57.1426l52.7812 -56.5508h32v39.9814\nc0 21.4375 25.9434 31.9971 40.9707 16.9707zM12 272c-6.62695 0 -12 5.37305 -12 12v56c0 6.62695 5.37305 12 12 12h110.785h0.000976562c2.87793 0 6.80762 -1.70801 8.77148 -3.81152l70.5566 -75.5967l-53.333 -57.1426l-52.7812 56.5508h-84zM384 272h-32\nl-220.442 -236.188c-2.26953 -2.43066 -5.44629 -3.81152 -8.77246 -3.81152h-110.785c-6.62695 0 -12 5.37305 -12 12v56c0 6.62695 5.37305 12 12 12h84l220.442 236.188c1.96387 2.10352 5.89453 3.81152 8.77246 3.81152h58.7852v39.9814\nc0 21.4365 25.9434 31.9971 40.9707 16.9697l80 -79.9814c9.37305 -9.37207 9.37305 -24.5674 0 -33.9404l-80 -79.9844c-15.0098 -15.0088 -40.9707 -4.48926 -40.9707 16.9707v39.9844z\" />\n    <glyph glyph-name=\"comment\" unicode=\"&#xf075;\" \nd=\"M256 416c141.4 0 256 -93.0996 256 -208s-114.6 -208 -256 -208c-38.4004 0 -74.7002 7.09961 -107.4 19.4004c-24.5996 -19.6006 -74.2998 -51.4004 -140.6 -51.4004c-3.2002 0 -6 1.7998 -7.2998 4.7998s-0.700195 6.40039 1.5 8.7002\nc0.5 0.5 42.2998 45.4004 54.7998 95.7998c-35.5996 35.7002 -57 81.1006 -57 130.7c0 114.9 114.6 208 256 208z\" />\n    <glyph glyph-name=\"magnet\" unicode=\"&#xf076;\" \nd=\"M164.07 299.9h-152.07c-6.62402 0 -12 5.37598 -12 12v80c0 19.8721 16.1279 36 36 36h104c19.8721 0 36 -16.1279 36 -36v-80c0 -0.03125 0.000976562 -0.0800781 0.000976562 -0.110352c0 -6.56348 -5.32715 -11.8896 -11.8906 -11.8896h-0.0400391zM512 311.9\nc0 -6.56348 -5.32715 -11.9014 -11.8896 -11.9014c-0.0302734 0 -0.0800781 0.000976562 -0.110352 0.000976562h-152c-6.62402 0 -12 5.37598 -12 12v80c0 19.8721 16.1279 36 36 36h104c19.8721 0 36 -16.1279 36 -36v-80.0996zM348 267.9h151.85h0.000976562\nc6.62402 0 12 -5.37598 12 -12c0 -0.0283203 0 -0.0732422 -0.000976562 -0.100586c-0.199219 -20.2002 -0.599609 -40.3994 0 -53.2002c0 -150.699 -134.42 -246.699 -255 -246.699s-256.75 96 -256.75 246.6c0.600586 13 0.100586 31.9004 0 53.2998v0.100586\nc0 6.62402 5.37598 12 12 12v0h151.9c6.62402 0 12 -5.37598 12 -12v-52c0 -127.9 160 -128.101 160 0v52c0 6.62402 5.37598 12 12 12z\" />\n    <glyph glyph-name=\"chevron-up\" unicode=\"&#xf077;\" horiz-adv-x=\"448\" \nd=\"M240.971 317.476l194.344 -194.343c9.37207 -9.37305 9.37207 -24.5684 0 -33.9404l-22.667 -22.667c-9.35742 -9.35742 -24.5225 -9.375 -33.9014 -0.0400391l-154.746 154.02l-154.745 -154.021c-9.37891 -9.33496 -24.5439 -9.31738 -33.9014 0.0400391\nl-22.667 22.667c-9.37207 9.37305 -9.37207 24.5684 0 33.9404l194.344 194.343c9.37207 9.37305 24.5674 9.37305 33.9404 0.000976562z\" />\n    <glyph glyph-name=\"chevron-down\" unicode=\"&#xf078;\" horiz-adv-x=\"448\" \nd=\"M207.029 66.5244l-194.344 194.344c-9.37207 9.37305 -9.37207 24.5684 0 33.9404l22.667 22.667c9.35742 9.35742 24.5225 9.375 33.9014 0.0400391l154.746 -154.021l154.745 154.021c9.37891 9.33496 24.5439 9.31738 33.9014 -0.0400391l22.667 -22.667\nc9.37207 -9.37305 9.37207 -24.5684 0 -33.9404l-194.343 -194.344c-9.37305 -9.37207 -24.5684 -9.37207 -33.9414 0z\" />\n    <glyph glyph-name=\"retweet\" unicode=\"&#xf079;\" horiz-adv-x=\"640\" \nd=\"M629.657 104.402l-100.687 -100.687c-9.37305 -9.37207 -24.5674 -9.37207 -33.9404 0l-100.688 100.687c-9.37305 9.37305 -9.37305 24.5684 0 33.9404l10.8232 10.8232c9.56152 9.56152 25.1328 9.33984 34.4189 -0.492188l40.415 -42.792v182.118h-187.549\nc-5.4873 0 -13.0908 3.14941 -16.9707 7.0293l-16 16c-15.1191 15.1201 -4.41113 40.9707 16.9707 40.9707h243.549c13.2549 0 24 -10.7451 24 -24v-222.118l40.416 42.792c9.28516 9.83105 24.8564 10.0537 34.4189 0.492188l10.8232 -10.8232\nc9.37207 -9.37207 9.37207 -24.5684 -0.000976562 -33.9404zM364.519 88.9707l16.001 -16c15.1191 -15.1201 4.41113 -40.9707 -16.9707 -40.9707h-243.549c-13.2549 0 -24 10.7451 -24 24v222.119l-40.416 -42.793c-9.28613 -9.83105 -24.8574 -10.0527 -34.4189 -0.491211\nl-10.8223 10.8223c-9.37305 9.37207 -9.37305 24.5674 0 33.9404l100.688 100.687c9.37207 9.37305 24.5674 9.37305 33.9404 0l100.687 -100.686c9.37305 -9.37207 9.37305 -24.5674 0 -33.9404l-10.8223 -10.8223c-9.5625 -9.5625 -25.1328 -9.33984 -34.4189 0.491211\nl-40.416 42.792v-182.119h187.548h0.000976562c5.4873 0 13.0898 -3.14941 16.9697 -7.0293z\" />\n    <glyph glyph-name=\"shopping-cart\" unicode=\"&#xf07a;\" horiz-adv-x=\"576\" \nd=\"M528.12 146.681c-2.4834 -10.9268 -12.1973 -18.6807 -23.4033 -18.6807h-293.145l6.54492 -32h268.418c15.4004 0 26.8154 -14.3008 23.4033 -29.3193l-5.51758 -24.2754c18.6914 -9.07324 31.5791 -28.2334 31.5791 -50.4053c0 -30.9277 -25.0723 -56 -56 -56\ns-56 25.0723 -56 56c0 15.6738 6.44727 29.835 16.8232 40h-209.647c10.377 -10.165 16.8242 -24.3262 16.8242 -40c0 -30.9277 -25.0723 -56 -56 -56s-56 25.0723 -56 56c0 20.7783 11.3252 38.9004 28.1309 48.5654l-70.248 343.435h-69.8828\nc-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24h102.529c11.4004 0 21.2285 -8.02148 23.5127 -19.1904l9.16602 -44.8096h392.782c15.4004 0 26.8154 -14.3008 23.4023 -29.3193z\" />\n    <glyph glyph-name=\"folder\" unicode=\"&#xf07b;\" \nd=\"M464 320c26.5098 0 48 -21.4902 48 -48v-224c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h160l64 -64h192z\" />\n    <glyph glyph-name=\"folder-open\" unicode=\"&#xf07c;\" horiz-adv-x=\"576\" \nd=\"M572.694 155.907l-72.4248 -124.155c-10.2236 -17.5273 -34.9883 -31.752 -55.2793 -31.752h-0.000976562h-399.964c-18.5234 0 -30.0645 20.0928 -20.7314 36.0928l72.4238 124.155c10.2246 17.5273 34.9902 31.752 55.2822 31.752v0h399.964\nc18.5234 0 30.0645 -20.0928 20.7305 -36.0928zM152 224c-34.0107 0 -65.7861 -18.25 -82.9229 -47.6279l-69.0771 -118.418v278.046c0 26.5098 21.4902 48 48 48h160l64 -64h160c26.5098 0 48 -21.4902 48 -48v-48h-328z\" />\n    <glyph glyph-name=\"chart-bar\" unicode=\"&#xf080;\" \nd=\"M332.8 128c-6.39941 0 -12.7998 6.40039 -12.7998 12.7998v134.4c0 6.39941 6.40039 12.7998 12.7998 12.7998h38.4004c6.39941 0 12.7998 -6.40039 12.7998 -12.7998v-134.4c0 -6.39941 -6.40039 -12.7998 -12.7998 -12.7998h-38.4004zM428.8 128\nc-6.39941 0 -12.7998 6.40039 -12.7998 12.7998v230.4c0 6.39941 6.40039 12.7998 12.7998 12.7998h38.4004c6.39941 0 12.7998 -6.40039 12.7998 -12.7998v-230.4c0 -6.39941 -6.40039 -12.7998 -12.7998 -12.7998h-38.4004zM140.8 128\nc-6.39941 0 -12.7998 6.40039 -12.7998 12.7998v70.4004c0 6.39941 6.40039 12.7998 12.7998 12.7998h38.4004c6.39941 0 12.7998 -6.40039 12.7998 -12.7998v-70.4004c0 -6.39941 -6.40039 -12.7998 -12.7998 -12.7998h-38.4004zM236.8 128\nc-6.39941 0 -12.7998 6.40039 -12.7998 12.7998v198.4c0 6.39941 6.40039 12.7998 12.7998 12.7998h38.4004c6.39941 0 12.7998 -6.40039 12.7998 -12.7998v-198.4c0 -6.39941 -6.40039 -12.7998 -12.7998 -12.7998h-38.4004zM496 64c8.83984 0 16 -7.16016 16 -16v-32\nc0 -8.83984 -7.16016 -16 -16 -16h-464c-17.6699 0 -32 14.3301 -32 32v336c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-304h432z\" />\n    <glyph glyph-name=\"camera-retro\" unicode=\"&#xf083;\" \nd=\"M48 416h416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48zM48 384c-8.7998 0 -16 -7.2002 -16 -16v-10c0 -3.2998 2.7002 -6 6 -6h116c3.2998 0 6 2.7002 6 6v20c0 3.2998 -2.7002 6 -6 6h-106z\nM474 288c3.2998 0 6 2.7002 6 6v74c0 8.7998 -7.2002 16 -16 16h-252.8c-2 0 -3.90039 -1 -5 -2.7002l-30.2002 -45.2998h-138c-3.2998 0 -6 -2.7002 -6 -6v-36c0 -3.2998 2.7002 -6 6 -6h436zM256 24c66.2002 0 120 53.7998 120 120s-53.7998 120 -120 120\ns-120 -53.7998 -120 -120s53.7998 -120 120 -120zM256 232c48.5 0 88 -39.5 88 -88s-39.5 -88 -88 -88s-88 39.5 -88 88s39.5 88 88 88zM208 128c8.7998 0 16 7.2002 16 16c0 17.5996 14.4004 32 32 32c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16\nc-35.2998 0 -64 -28.7002 -64 -64c0 -8.7998 7.2002 -16 16 -16z\" />\n    <glyph glyph-name=\"key\" unicode=\"&#xf084;\" \nd=\"M512 271.999c0 -97.2021 -78.7979 -175.999 -176 -175.999c-11.2197 0 -22.1904 1.06152 -32.8271 3.06934l-24.0117 -27.0146c-3.95215 -4.44629 -11.9883 -8.05469 -17.9375 -8.05469h-0.000976562h-37.2227v-40c0 -13.2549 -10.7451 -24 -24 -24h-40v-40\nc0 -13.2549 -10.7451 -24 -24 -24h-112c-13.2549 0 -24 10.7451 -24 24v78.0586c0 6.36523 2.5293 12.4707 7.0293 16.9717l161.802 161.802c-5.72266 17.3535 -8.83105 35.8965 -8.83105 55.168c0 97.2021 78.7969 175.999 175.999 176\nc97.4893 0.000976562 176.001 -78.5107 176.001 -176.001zM336 320c0 -26.5098 21.4902 -48 48 -48s48 21.4902 48 48s-21.4902 48 -48 48s-48 -21.4902 -48 -48z\" />\n    <glyph glyph-name=\"cogs\" unicode=\"&#xf085;\" horiz-adv-x=\"640\" \nd=\"M512.1 257l-8.19922 -14.2998c-3 -5.2998 -9.40039 -7.5 -15.1006 -5.40039c-11.7998 4.40039 -22.5996 10.7002 -32.0996 18.6006c-4.60059 3.7998 -5.7998 10.5 -2.7998 15.6992l8.19922 14.3008c-6.89941 8 -12.2998 17.2998 -15.8994 27.3994h-16.5\nc-6 0 -11.2002 4.2998 -12.2002 10.2998c-2 12 -2.09961 24.6006 0 37.1006c1 6 6.2002 10.3994 12.2002 10.3994h16.5c3.59961 10.1006 9 19.4004 15.8994 27.4004l-8.19922 14.2998c-3 5.2002 -1.90039 11.9004 2.7998 15.7002\nc9.5 7.90039 20.3994 14.2002 32.0996 18.5996c5.7002 2.10059 12.1006 -0.0996094 15.1006 -5.39941l8.19922 -14.2998c10.5 1.89941 21.2002 1.89941 31.7002 0l8.2002 14.2998c3 5.2998 9.40039 7.5 15.0996 5.39941c11.8008 -4.39941 22.6006 -10.6992 32.1006 -18.5996\nc4.59961 -3.7998 5.7998 -10.5 2.7998 -15.7002l-8.2002 -14.2998c6.90039 -8 12.2998 -17.2998 15.9004 -27.4004h16.5c6 0 11.2002 -4.2998 12.2002 -10.2998c2 -12 2.09961 -24.5996 0 -37.0996c-1 -6 -6.2002 -10.4004 -12.2002 -10.4004h-16.5\nc-3.60059 -10.0996 -9 -19.3994 -15.9004 -27.3994l8.2002 -14.3008c3 -5.19922 1.90039 -11.8994 -2.7998 -15.6992c-9.5 -7.90039 -20.4004 -14.2002 -32.1006 -18.6006c-5.69922 -2.09961 -12.0996 0.100586 -15.0996 5.40039l-8.2002 14.2998\nc-10.3994 -1.90039 -21.2002 -1.90039 -31.7002 0zM501.6 315.8c38.5 -29.5996 82.4004 14.2998 52.8008 52.7998c-38.5 29.7002 -82.4004 -14.2998 -52.8008 -52.7998zM386.3 161.9l33.7002 -16.8008c10.0996 -5.7998 14.5 -18.0996 10.5 -29.0996\nc-8.90039 -24.2002 -26.4004 -46.4004 -42.5996 -65.7998c-7.40039 -8.90039 -20.2002 -11.1006 -30.3008 -5.2998l-29.0996 16.7998c-16 -13.7002 -34.5996 -24.6006 -54.9004 -31.7002v-33.5996c0 -11.6006 -8.2998 -21.6006 -19.6992 -23.6006\nc-24.6006 -4.2002 -50.4004 -4.39941 -75.9004 0c-11.5 2 -20 11.9004 -20 23.6006v33.5996c-20.2998 7.2002 -38.9004 18 -54.9004 31.7002l-29.0996 -16.7002c-10 -5.7998 -22.9004 -3.59961 -30.2998 5.2998c-16.2002 19.4004 -33.2998 41.6006 -42.2002 65.7002\nc-4 10.9004 0.400391 23.2002 10.5 29.0996l33.2998 16.8008c-3.89941 20.8994 -3.89941 42.3994 0 63.3994l-33.2998 16.9004c-10.0996 5.7998 -14.5996 18.0996 -10.5 29c8.90039 24.2002 26 46.3994 42.2002 65.7998c7.39941 8.90039 20.2002 11.0996 30.2998 5.2998\nl29.0996 -16.7998c16 13.7002 34.6006 24.5996 54.9004 31.7002v33.7002c0 11.5 8.2002 21.5 19.5996 23.5c24.6006 4.19922 50.5 4.39941 76 0.0996094c11.5 -2 20 -11.9004 20 -23.5996v-33.6006c20.3008 -7.2002 38.9004 -18 54.9004 -31.7002l29.0996 16.8008\nc10 5.7998 22.9004 3.59961 30.3008 -5.30078c16.1992 -19.3994 33.1992 -41.5996 42.0996 -65.7998c4 -10.8994 0.0996094 -23.2002 -10 -29.0996l-33.7002 -16.7998c3.90039 -21 3.90039 -42.5 0 -63.5zM268.7 140.8c59.2002 77 -28.7002 164.9 -105.7 105.7\nc-59.2002 -77 28.7002 -164.9 105.7 -105.7zM512.1 -41.9004l-8.19922 -14.2998c-3 -5.2998 -9.40039 -7.5 -15.1006 -5.39941c-11.7998 4.39941 -22.5996 10.6992 -32.0996 18.5996c-4.60059 3.7998 -5.7998 10.5 -2.7998 15.7002l8.19922 14.2998\nc-6.89941 8 -12.2998 17.2998 -15.8994 27.4004h-16.5c-6 0 -11.2002 4.2998 -12.2002 10.2998c-2 12 -2.09961 24.5996 0 37.0996c1 6 6.2002 10.4004 12.2002 10.4004h16.5c3.59961 10.0996 9 19.3994 15.8994 27.3994l-8.19922 14.3008\nc-3 5.19922 -1.90039 11.8994 2.7998 15.6992c9.5 7.90039 20.3994 14.2002 32.0996 18.6006c5.7002 2.09961 12.1006 -0.100586 15.1006 -5.40039l8.19922 -14.2998c10.5 1.90039 21.2002 1.90039 31.7002 0l8.2002 14.2998c3 5.2998 9.40039 7.5 15.0996 5.40039\nc11.8008 -4.40039 22.6006 -10.7002 32.1006 -18.6006c4.59961 -3.7998 5.7998 -10.5 2.7998 -15.6992l-8.2002 -14.3008c6.90039 -8 12.2998 -17.2998 15.9004 -27.3994h16.5c6 0 11.2002 -4.2998 12.2002 -10.2998c2 -12 2.09961 -24.6006 0 -37.1006\nc-1 -6 -6.2002 -10.3994 -12.2002 -10.3994h-16.5c-3.60059 -10.1006 -9 -19.4004 -15.9004 -27.4004l8.2002 -14.2998c3 -5.2002 1.90039 -11.9004 -2.7998 -15.7002c-9.5 -7.90039 -20.4004 -14.2002 -32.1006 -18.5996\nc-5.69922 -2.10059 -12.0996 0.0996094 -15.0996 5.39941l-8.2002 14.2998c-10.3994 -1.89941 -21.2002 -1.89941 -31.7002 0zM501.6 17c38.5 -29.5996 82.4004 14.2998 52.8008 52.7998c-38.5 29.6006 -82.4004 -14.2998 -52.8008 -52.7998z\" />\n    <glyph glyph-name=\"comments\" unicode=\"&#xf086;\" horiz-adv-x=\"576\" \nd=\"M416 256c0 -88.4004 -93.0996 -160 -208 -160c-41 0 -79.0996 9.2998 -111.3 25c-21.7998 -12.7002 -52.1006 -25 -88.7002 -25c-3.2002 0 -6 1.7998 -7.2998 4.7998s-0.700195 6.40039 1.5 8.7002c0.299805 0.299805 22.3994 24.2998 35.7998 54.5\nc-23.9004 26.0996 -38 57.7002 -38 92c0 88.4004 93.0996 160 208 160s208 -71.5996 208 -160zM538 36c13.4004 -30.2998 35.5 -54.2002 35.7998 -54.5c2.2002 -2.40039 2.7998 -5.7998 1.5 -8.7002c-1.2002 -2.89941 -4.09961 -4.7998 -7.2998 -4.7998\nc-36.5996 0 -66.9004 12.2998 -88.7002 25c-32.2002 -15.7998 -70.2998 -25 -111.3 -25c-86.2002 0 -160.2 40.4004 -191.7 97.9004c10.4004 -1.10059 20.9004 -1.90039 31.7002 -1.90039c132.3 0 240 86.0996 240 192c0 6.7998 -0.400391 13.5 -1.2998 20.0996\nc75.7998 -23.8994 129.3 -81.1992 129.3 -148.1c0 -34.2998 -14.0996 -66 -38 -92z\" />\n    <glyph glyph-name=\"star-half\" unicode=\"&#xf089;\" horiz-adv-x=\"576\" \nd=\"M288 448v-439.6l-130.7 -68.6006c-23.3994 -12.2998 -50.8994 7.60059 -46.3994 33.7002l25 145.5l-105.7 103c-19 18.5 -8.5 50.7998 17.7002 54.5996l146.1 21.2002l65.2998 132.4c5.90039 11.8994 17.2998 17.7998 28.7002 17.7998z\" />\n    <glyph glyph-name=\"thumbtack\" unicode=\"&#xf08d;\" horiz-adv-x=\"384\" \nd=\"M298.028 233.733c47.9893 -22.3135 85.9717 -62.5508 85.9727 -113.733c0 -13.2549 -10.7451 -24 -24 -24h-136v-104.007c0 -1.04297 -0.378906 -2.64551 -0.844727 -3.57812l-24 -48c-2.94727 -5.89258 -11.3701 -5.88184 -14.3115 0l-24 48\nc-0.555664 1.11133 -0.844727 2.33594 -0.844727 3.57812v104.007h-136c-13.2549 0 -24 10.7451 -24 24c0 50.7393 37.4648 91.1797 85.9717 113.733l12.2354 118.267h-42.207c-13.2549 0 -24 10.7451 -24 24v48c0 13.2549 10.7451 24 24 24h272\nc13.2549 0 24 -10.7451 24 -24v-48c0 -13.2549 -10.7451 -24 -24 -24h-42.207z\" />\n    <glyph glyph-name=\"trophy\" unicode=\"&#xf091;\" horiz-adv-x=\"576\" \nd=\"M552 384c13.2998 0 24 -10.7002 24 -24v-56c0 -35.7002 -22.5996 -72.4004 -61.9004 -100.7c-31.3994 -22.7002 -69.6992 -37.0996 -110 -41.7002c-31.3994 -52.0996 -68.0996 -73.5996 -68.0996 -73.5996v-72h48c35.2998 0 64 -20.7002 64 -56v-12\nc0 -6.59961 -5.40039 -12 -12 -12h-296c-6.59961 0 -12 5.40039 -12 12v12c0 35.2998 28.7002 56 64 56h48v72s-36.7002 21.5 -68.0996 73.5996c-40.2002 4.60059 -78.5 19 -110 41.7002c-39.4004 28.2998 -61.9004 65 -61.9004 100.7v56c0 13.2998 10.7002 24 24 24h104v40\nc0 13.2998 10.7002 24 24 24h272c13.2998 0 24 -10.7002 24 -24v-40h104zM99.2998 255.2c12.5 -9 26.6006 -16.2002 41.7002 -21.4004c-7 25 -11.7998 53.6006 -12.7998 86.2002h-64.2002v-16c0 -11.5996 10.9004 -31.2002 35.2998 -48.7998zM512 304v16h-64.2998\nc-1 -32.5996 -5.7998 -61.2002 -12.7998 -86.2002c15.0996 5.2002 29.2998 12.4004 41.7998 21.4004c17.5996 12.7002 35.2998 32.7002 35.2998 48.7998z\" />\n    <glyph glyph-name=\"upload\" unicode=\"&#xf093;\" \nd=\"M296 64h-80c-13.2998 0 -24 10.7002 -24 24v168h-87.7002c-17.7998 0 -26.7002 21.5 -14.0996 34.0996l152.1 152.2c7.5 7.5 19.7998 7.5 27.2998 0l152.2 -152.2c12.6006 -12.5996 3.7002 -34.0996 -14.0996 -34.0996h-87.7002v-168c0 -13.2998 -10.7002 -24 -24 -24z\nM512 72v-112c0 -13.2998 -10.7002 -24 -24 -24h-464c-13.2998 0 -24 10.7002 -24 24v112c0 13.2998 10.7002 24 24 24h136v-8c0 -30.9004 25.0996 -56 56 -56h80c30.9004 0 56 25.0996 56 56v8h136c13.2998 0 24 -10.7002 24 -24zM388 -16c0 11 -9 20 -20 20s-20 -9 -20 -20\ns9 -20 20 -20s20 9 20 20zM452 -16c0 11 -9 20 -20 20s-20 -9 -20 -20s9 -20 20 -20s20 9 20 20z\" />\n    <glyph glyph-name=\"lemon\" unicode=\"&#xf094;\" \nd=\"M489.038 425.037c23.0938 -23.0938 28.8916 -54.3906 16.833 -75.0928c-34.3115 -58.9043 53.0762 -181.249 -86.7461 -321.071s-262.167 -52.4326 -321.068 -86.7432c-20.7031 -12.0586 -52 -6.2627 -75.0947 16.832c-23.0928 23.0938 -28.8916 54.3906 -16.833 75.0928\nc34.3125 58.9043 -53.0781 181.247 86.7451 321.07s262.167 52.4336 321.073 86.7461c20.7012 12.0586 51.9971 6.25879 75.0908 -16.834zM243.881 352.478c8.57227 2.14355 13.7832 10.8291 11.6416 19.4023c-2.14258 8.57324 -10.8281 13.7852 -19.4033 11.6426\nc-69.8027 -17.4521 -154.218 -101.949 -171.643 -171.643c-2.1416 -8.57324 3.07031 -17.2588 11.6426 -19.4033c1.30273 -0.324219 2.6084 -0.480469 3.89258 -0.480469c7.16895 0 13.6943 4.85352 15.5117 12.124c14.5498 58.2031 90.1689 133.811 148.357 148.357z\" />\n    <glyph glyph-name=\"phone\" unicode=\"&#xf095;\" \nd=\"M493.4 423.4c10.8994 -2.5 18.5996 -12.2002 18.5996 -23.4004c0 -256.5 -207.9 -464 -464 -464c-11.2998 0 -20.9004 7.7998 -23.4004 18.5996l-24 104c-2.59961 11.3008 3.30078 22.9004 14 27.6006l112 48c9.80078 4.2002 21.2002 1.39941 28 -6.90039\nl49.6006 -60.5996c78.2998 36.7002 141.2 100.5 177.2 177.2l-60.6006 49.5996c-8.2998 6.7002 -11.0996 18.2002 -6.89941 28l48 112c4.59961 10.5996 16.1992 16.5 27.5 13.9004z\" />\n    <glyph glyph-name=\"phone-square\" unicode=\"&#xf098;\" horiz-adv-x=\"448\" \nd=\"M400 416c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h352zM94 32c160.055 0 290 129.708 290 290v0c0 6.58691 -5.20898 13.1338 -11.6279 14.6143l-65 14.998\nc-0.918945 0.211914 -2.42969 0.383789 -3.37305 0.383789c-5.45996 0 -11.6367 -4.07324 -13.7871 -9.09082l-30 -69.998c-0.668945 -1.5625 -1.21191 -4.20898 -1.21191 -5.9082c0 -3.92383 2.46387 -9.125 5.50098 -11.6104l37.8857 -30.9971\nc-22.4834 -47.9219 -61.8369 -87.8164 -110.78 -110.779l-30.9971 37.8848c-2.48535 3.03711 -7.68652 5.50195 -11.6104 5.50195c-1.69922 0 -4.3457 -0.543945 -5.9082 -1.21289l-69.998 -29.999c-5.01855 -2.15039 -9.09082 -8.32715 -9.09082 -13.7871\nc0 -0.943359 0.171875 -2.4541 0.383789 -3.37305l14.998 -65c1.55957 -6.75391 7.58301 -11.627 14.6162 -11.627z\" />\n    <glyph glyph-name=\"unlock\" unicode=\"&#xf09c;\" horiz-adv-x=\"448\" \nd=\"M400 192c26.5 0 48 -21.5 48 -48v-160c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v160c0 26.5 21.5 48 48 48h24v102.5c0 84 67.5 153.2 151.5 153.5s152.5 -68 152.5 -152v-16c0 -13.2998 -10.7002 -24 -24 -24h-32c-13.2998 0 -24 10.7002 -24 24v16\nc0 39.9004 -32.7002 72.4004 -72.7002 72c-39.5996 -0.400391 -71.2998 -33.2998 -71.2998 -72.9004v-103.1h248z\" />\n    <glyph glyph-name=\"credit-card\" unicode=\"&#xf09d;\" horiz-adv-x=\"576\" \nd=\"M0 16v176h576v-176c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48zM192 84v-40c0 -6.59961 5.40039 -12 12 -12h136c6.59961 0 12 5.40039 12 12v40c0 6.59961 -5.40039 12 -12 12h-136c-6.59961 0 -12 -5.40039 -12 -12zM64 84v-40\nc0 -6.59961 5.40039 -12 12 -12h72c6.59961 0 12 5.40039 12 12v40c0 6.59961 -5.40039 12 -12 12h-72c-6.59961 0 -12 -5.40039 -12 -12zM576 368v-48h-576v48c0 26.5 21.5 48 48 48h480c26.5 0 48 -21.5 48 -48z\" />\n    <glyph glyph-name=\"rss\" unicode=\"&#xf09e;\" horiz-adv-x=\"448\" \nd=\"M128.081 32.041c0 -35.3691 -28.6719 -64.041 -64.041 -64.041s-64.04 28.6719 -64.04 64.041s28.6719 64.041 64.041 64.041s64.04 -28.6729 64.04 -64.041zM303.741 -15.209c0.494141 -9.13477 -6.84668 -16.791 -15.9951 -16.79h-48.0693\nc-8.41406 0 -15.4707 6.49023 -16.0176 14.8867c-7.29883 112.07 -96.9404 201.488 -208.772 208.772c-8.39648 0.545898 -14.8867 7.60254 -14.8867 16.0176v48.0693c0 9.14746 7.65625 16.4883 16.791 15.9941c154.765 -8.36328 278.596 -132.351 286.95 -286.95z\nM447.99 -15.4971c0.324219 -9.03027 -6.97168 -16.5029 -16.0049 -16.5039h-48.0684c-8.62598 0 -15.6455 6.83496 -15.999 15.4531c-7.83789 191.148 -161.286 344.626 -352.465 352.465c-8.61816 0.354492 -15.4531 7.37402 -15.4531 15.999v48.0684\nc0 9.03418 7.47266 16.3301 16.5029 16.0059c234.962 -8.43555 423.093 -197.667 431.487 -431.487z\" />\n    <glyph glyph-name=\"hdd\" unicode=\"&#xf0a0;\" horiz-adv-x=\"576\" \nd=\"M576 144v-96c0 -26.5098 -21.4902 -48 -48 -48h-480c-26.5098 0 -48 21.4902 -48 48v96c0 26.5098 21.4902 48 48 48h480c26.5098 0 48 -21.4902 48 -48zM528 224h-480h-0.0693359c-8.81738 0 -22.5742 -2.76172 -30.708 -6.16504l96.5283 144.791\nc7.86621 11.7988 25.7578 21.374 39.9385 21.374h268.621c14.1807 0 32.0732 -9.57617 39.9395 -21.374l96.5273 -144.791c-8.13379 3.40332 -21.8906 6.16504 -30.708 6.16504h-0.0693359zM480 128c-17.6729 0 -32 -14.3271 -32 -32s14.3271 -32 32 -32s32 14.3271 32 32\ns-14.3271 32 -32 32zM384 128c-17.6729 0 -32 -14.3271 -32 -32s14.3271 -32 32 -32s32 14.3271 32 32s-14.3271 32 -32 32z\" />\n    <glyph glyph-name=\"bullhorn\" unicode=\"&#xf0a1;\" horiz-adv-x=\"576\" \nd=\"M576 208c0 -23.6299 -12.9502 -44.04 -32.0098 -55.1299v-152.87c0 -9.21973 -7.08008 -32 -32 -32c-6.19336 0.00585938 -15.1445 3.15039 -19.9805 7.01953l-85.0293 68.0303c-42.7002 34.1406 -96.3203 52.9502 -150.98 52.9502h-28.0801\nc-2.79004 -10.21 -4.41016 -20.8896 -4.41016 -32c0 -29.0801 9.75 -55.9199 26.1504 -77.4404c15.79 -20.7197 0.149414 -50.5596 -25.9004 -50.5596h-74.2793c-11.8809 0 -23.2109 6.37012 -28.4004 17.0596c-16.2998 33.5908 -25.5605 71.1709 -25.5605 110.94\nc0 10.8604 0.790039 21.5195 2.18066 32h-33.7002c-35.3496 0 -64 28.6504 -64 64v96c0 35.3496 28.6504 64 64 64h192c54.6602 0 108.28 18.8096 150.99 52.9502l85.0293 68.0303c5.79004 4.63965 12.8604 7.01953 19.9805 7.01953c25.0195 0 32 -23.2598 32 -32.0098\nv-152.87c19.0498 -11.0801 32 -31.4902 32 -55.1201zM480 66.5801v282.84l-33.0498 -26.4395c-54 -43.2002 -121.83 -66.9805 -190.95 -66.9805v-96c69.1201 0 136.95 -23.7803 190.95 -66.9805z\" />\n    <glyph glyph-name=\"certificate\" unicode=\"&#xf0a3;\" \nd=\"M458.622 192.08l45.9844 -45.0039c13.7012 -12.9727 7.32227 -36.0371 -10.6641 -40.3389l-62.6504 -15.9902l17.6611 -62.0146c4.99023 -17.834 -11.8252 -34.665 -29.6611 -29.6719l-61.9941 17.667l-15.9834 -62.6709\nc-4.33887 -18.1533 -27.8252 -24.1553 -40.3252 -10.668l-44.9893 46.001l-44.9912 -46.001c-12.6289 -13.3496 -35.8857 -7.90625 -40.3252 10.668l-15.9834 62.6709l-61.9941 -17.667c-17.832 -4.99121 -34.6523 11.833 -29.6611 29.6719l17.6611 62.0146\nl-62.6504 15.9902c-17.9795 4.2998 -24.3721 27.3613 -10.6641 40.3389l45.9854 45.0039l-45.9854 45.0049c-13.7012 12.9707 -7.32227 36.0371 10.665 40.3379l62.6504 15.9902l-17.6611 62.0146c-4.99023 17.834 11.8242 34.665 29.6611 29.6709l61.9951 -17.667\nl15.9834 62.6709c4.27832 17.9023 27.6953 24.0195 40.3252 10.6689l44.9893 -46.3418l44.9902 46.3428c12.7744 13.5039 36.0947 7.03027 40.3252 -10.6689l15.9834 -62.6709l61.9941 17.667c17.832 4.99219 34.6523 -11.833 29.6611 -29.6709l-17.6611 -62.0146\nl62.6504 -15.9902c17.9795 -4.2998 24.3721 -27.3623 10.6641 -40.3389z\" />\n    <glyph glyph-name=\"hand-point-right\" unicode=\"&#xf0a4;\" \nd=\"M512 248.348c0 -23.625 -20.6504 -43.8252 -44.7998 -43.8252h-99.8516c16.3408 -17.0488 18.3467 -49.7666 -6.29883 -70.9443c14.2881 -22.8291 2.14746 -53.0176 -16.4502 -62.3154c8.97461 -49.1406 -21.9453 -71.2627 -72.5996 -71.2627\nc-2.74609 0 -13.2764 0.203125 -16 0.195312c-61.9707 -0.167969 -76.8936 31.0645 -123.731 38.3145c-11.6729 1.80762 -20.2686 11.8916 -20.2686 23.7041v171.525l0.00195312 0.000976562c0.0107422 18.3662 10.6074 35.8887 28.4639 43.8447\nc28.8857 12.9941 95.4131 49.0381 107.534 77.3232c7.79688 18.1934 21.3838 29.084 40 29.0918c34.2217 0.0136719 57.752 -35.0977 44.1191 -66.9082c-3.58301 -8.3584 -8.3125 -16.6699 -14.1533 -24.918h149.234c23.4502 0 44.7998 -20.543 44.7998 -43.8262zM96 248\nv-192c0 -13.2549 -10.7451 -24 -24 -24h-48c-13.2549 0 -24 10.7451 -24 24v192c0 13.2549 10.7451 24 24 24h48c13.2549 0 24 -10.7451 24 -24zM68 80c0 11.0459 -8.9541 20 -20 20s-20 -8.9541 -20 -20s8.9541 -20 20 -20s20 8.9541 20 20z\" />\n    <glyph glyph-name=\"hand-point-left\" unicode=\"&#xf0a5;\" \nd=\"M44.7998 292.174h149.234c-5.84082 8.24805 -10.5703 16.5586 -14.1533 24.918c-13.6328 31.8105 9.89746 66.9219 44.1191 66.9082c18.6162 -0.0078125 32.2031 -10.8975 40 -29.0918c12.1221 -28.2861 78.6484 -64.3291 107.534 -77.3232\nc17.8564 -7.95605 28.4531 -25.4785 28.4639 -43.8447l0.00195312 -0.000976562v-171.526c0 -11.8115 -8.5957 -21.8965 -20.2686 -23.7031c-46.8379 -7.25 -61.7607 -38.4824 -123.731 -38.3145c-2.72363 0.00683594 -13.2539 -0.195312 -16 -0.195312\nc-50.6543 0 -81.5742 22.1221 -72.5996 71.2627c-18.5977 9.29688 -30.7383 39.4863 -16.4502 62.3154c-24.6455 21.1768 -22.6396 53.8955 -6.29883 70.9443h-99.8516c-24.1494 0 -44.7998 20.2002 -44.7998 43.8252c0 23.2832 21.3496 43.8262 44.7998 43.8262zM440 272\nh48c13.2549 0 24 -10.7451 24 -24v-192c0 -13.2549 -10.7451 -24 -24 -24h-48c-13.2549 0 -24 10.7451 -24 24v192c0 13.2549 10.7451 24 24 24zM464 60c11.0459 0 20 8.9541 20 20s-8.9541 20 -20 20s-20 -8.9541 -20 -20s8.9541 -20 20 -20z\" />\n    <glyph glyph-name=\"hand-point-up\" unicode=\"&#xf0a6;\" horiz-adv-x=\"384\" \nd=\"M135.652 448c23.625 0 43.8252 -20.6504 43.8252 -44.7998v-99.8516c17.0488 16.3408 49.7666 18.3467 70.9443 -6.29883c22.8291 14.2881 53.0176 2.14746 62.3154 -16.4502c49.1406 8.97461 71.2627 -21.9453 71.2627 -72.5996\nc0 -2.74609 -0.203125 -13.2764 -0.195312 -16c0.167969 -61.9707 -31.0645 -76.8936 -38.3145 -123.731c-1.80762 -11.6729 -11.8916 -20.2686 -23.7041 -20.2686h-171.525l-0.000976562 0.00195312c-18.3662 0.0107422 -35.8887 10.6074 -43.8447 28.4639\nc-12.9941 28.8857 -49.0381 95.4121 -77.3232 107.534c-18.1943 7.79688 -29.084 21.3838 -29.0918 40c-0.0136719 34.2217 35.0977 57.752 66.9082 44.1191c8.3584 -3.58301 16.6699 -8.3125 24.918 -14.1533v149.234c0 23.4502 20.543 44.7998 43.8262 44.7998zM136 32\nh192c13.2549 0 24 -10.7451 24 -24v-48c0 -13.2549 -10.7451 -24 -24 -24h-192c-13.2549 0 -24 10.7451 -24 24v48c0 13.2549 10.7451 24 24 24zM304 4c-11.0459 0 -20 -8.9541 -20 -20s8.9541 -20 20 -20s20 8.9541 20 20s-8.9541 20 -20 20z\" />\n    <glyph glyph-name=\"hand-point-down\" unicode=\"&#xf0a7;\" horiz-adv-x=\"384\" \nd=\"M91.8262 -19.2002v149.234c-8.24805 -5.84082 -16.5586 -10.5703 -24.918 -14.1533c-31.8105 -13.6328 -66.9219 9.89746 -66.9082 44.1191c0.0078125 18.6162 10.8975 32.2031 29.0918 40c28.2861 12.1221 64.3291 78.6484 77.3232 107.534\nc7.95605 17.8564 25.4785 28.4531 43.8447 28.4639l0.000976562 0.00195312h171.526c11.8115 0 21.8965 -8.5957 23.7031 -20.2686c7.25 -46.8379 38.4824 -61.7607 38.3145 -123.731c-0.00683594 -2.72363 0.195312 -13.2539 0.195312 -16\nc0 -50.6543 -22.1221 -81.5742 -71.2627 -72.5996c-9.29688 -18.5977 -39.4863 -30.7383 -62.3154 -16.4502c-21.1768 -24.6455 -53.8955 -22.6396 -70.9443 -6.29883v-99.8516c0 -24.1494 -20.2002 -44.7998 -43.8252 -44.7998\nc-23.2832 0 -43.8262 21.3496 -43.8262 44.7998zM112 376v48c0 13.2549 10.7451 24 24 24h192c13.2549 0 24 -10.7451 24 -24v-48c0 -13.2549 -10.7451 -24 -24 -24h-192c-13.2549 0 -24 10.7451 -24 24zM324 400c0 11.0459 -8.9541 20 -20 20s-20 -8.9541 -20 -20\ns8.9541 -20 20 -20s20 8.9541 20 20z\" />\n    <glyph glyph-name=\"arrow-circle-left\" unicode=\"&#xf0a8;\" \nd=\"M256 -56c-137 0 -248 111 -248 248s111 248 248 248s248 -111 248 -248s-111 -248 -248 -248zM284.9 87.5996l-75.5 72.4004h182.6c13.2998 0 24 10.7002 24 24v16c0 13.2998 -10.7002 24 -24 24h-182.6l75.5 72.4004c9.69922 9.2998 9.89941 24.7998 0.399414 34.2998\nl-11 10.8994c-9.39941 9.40039 -24.5996 9.40039 -33.8994 0l-132.7 -132.6c-9.40039 -9.40039 -9.40039 -24.5996 0 -33.9004l132.7 -132.699c9.39941 -9.40039 24.5996 -9.40039 33.8994 0l11 10.8994c9.5 9.5 9.2998 25 -0.399414 34.2998z\" />\n    <glyph glyph-name=\"arrow-circle-right\" unicode=\"&#xf0a9;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM227.1 296.4l75.5 -72.4004h-182.6c-13.2998 0 -24 -10.7002 -24 -24v-16c0 -13.2998 10.7002 -24 24 -24h182.6l-75.5 -72.4004\nc-9.69922 -9.2998 -9.89941 -24.7998 -0.399414 -34.2998l11 -10.8994c9.39941 -9.40039 24.5996 -9.40039 33.8994 0l132.7 132.6c9.40039 9.40039 9.40039 24.5996 0 33.9004l-132.7 132.8c-9.39941 9.39941 -24.5996 9.39941 -33.8994 0l-11 -10.9004\nc-9.5 -9.59961 -9.2998 -25.0996 0.399414 -34.3994z\" />\n    <glyph glyph-name=\"arrow-circle-up\" unicode=\"&#xf0aa;\" \nd=\"M8 192c0 137 111 248 248 248s248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248zM151.6 163.1l72.4004 75.5v-182.6c0 -13.2998 10.7002 -24 24 -24h16c13.2998 0 24 10.7002 24 24v182.6l72.4004 -75.5c9.2998 -9.69922 24.7998 -9.89941 34.2998 -0.399414\nl10.8994 11c9.40039 9.39941 9.40039 24.5996 0 33.8994l-132.6 132.7c-9.40039 9.40039 -24.5996 9.40039 -33.9004 0l-132.8 -132.7c-9.39941 -9.39941 -9.39941 -24.5996 0 -33.8994l10.9004 -11c9.59961 -9.5 25.0996 -9.2998 34.3994 0.399414z\" />\n    <glyph glyph-name=\"arrow-circle-down\" unicode=\"&#xf0ab;\" \nd=\"M504 192c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248s248 -111 248 -248zM360.4 220.9l-72.4004 -75.5v182.6c0 13.2998 -10.7002 24 -24 24h-16c-13.2998 0 -24 -10.7002 -24 -24v-182.6l-72.4004 75.5\nc-9.2998 9.69922 -24.7998 9.89941 -34.2998 0.399414l-10.8994 -11c-9.40039 -9.39941 -9.40039 -24.5996 0 -33.8994l132.6 -132.7c9.40039 -9.40039 24.5996 -9.40039 33.9004 0l132.699 132.7c9.40039 9.39941 9.40039 24.5996 0 33.8994l-10.8994 11\nc-9.5 9.5 -25 9.2998 -34.2998 -0.399414z\" />\n    <glyph glyph-name=\"globe\" unicode=\"&#xf0ac;\" horiz-adv-x=\"496\" \nd=\"M336.5 288h-177c14.5 89.2998 48.7002 152 88.5 152s74 -62.7002 88.5 -152zM152 192c0 22.2002 1.2002 43.5 3.2998 64h185.3c2.10059 -20.5 3.30078 -41.7998 3.30078 -64s-1.2002 -43.5 -3.30078 -64h-185.3c-2.09961 20.5 -3.2998 41.7998 -3.2998 64zM476.7 288\nh-108c-8.7998 56.9004 -25.6006 107.8 -50 141.6c71.5 -21.1992 129.399 -73.6992 158 -141.6zM177.2 429.6c-24.4004 -33.7998 -41.2002 -84.6992 -49.9004 -141.6h-108c28.5 67.9004 86.5 120.4 157.9 141.6zM487.4 256c5.39941 -20.5 8.5 -41.7998 8.5 -64\ns-3.10059 -43.5 -8.60059 -64h-114.6c2.09961 21 3.2998 42.5 3.2998 64s-1.2002 43 -3.2998 64h114.7zM120 192c0 -21.5 1.2002 -43 3.2002 -64h-114.601c-5.39941 20.5 -8.59961 41.7998 -8.59961 64s3.2002 43.5 8.59961 64h114.7\nc-2.09961 -21 -3.2998 -42.5 -3.2998 -64zM159.5 96h177c-14.5 -89.2998 -48.7002 -152 -88.5 -152s-74 62.7002 -88.5 152zM318.8 -45.5996c24.4004 33.7998 41.2002 84.6992 50 141.6h108c-28.5996 -67.9004 -86.5996 -120.4 -158 -141.6zM19.2998 96h108\nc8.7998 -56.9004 25.6006 -107.8 50 -141.6c-71.5 21.1992 -129.399 73.6992 -158 141.6z\" />\n    <glyph glyph-name=\"wrench\" unicode=\"&#xf0ad;\" \nd=\"M507.73 338.9c11.7891 -47.4102 -0.84082 -99.6602 -37.9102 -136.73c-39.9004 -39.9004 -97.25 -50.9297 -147.37 -34.2197l-213.21 -213.21c-24.9902 -24.9902 -65.5098 -24.9902 -90.5 0s-24.9902 65.5098 0 90.5l213.39 213.39\nc-16.5 50.1006 -5.58984 107.561 34.0498 147.2c37.0303 37.0195 89.2002 49.6699 136.58 37.9297c9.08984 -2.25977 12.2803 -13.54 5.66016 -20.1602l-74.3604 -74.3594l11.3105 -67.8799l67.8799 -11.3105l74.3604 74.3604\nc6.58008 6.58008 17.8799 3.51953 20.1201 -5.50977zM64 -24c13.25 0 24 10.75 24 24c0 13.2598 -10.75 24 -24 24s-24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24z\" />\n    <glyph glyph-name=\"tasks\" unicode=\"&#xf0ae;\" \nd=\"M139.61 412.5l17 -16.5c1.90234 -1.94531 3.44727 -5.7334 3.44727 -8.4541c0 -2.7627 -1.58496 -6.5918 -3.53809 -8.5459l-72.1992 -72.1904l-15.5898 -15.6191c-2.04297 -1.94238 -5.9873 -3.51758 -8.80566 -3.51758c-2.81738 0 -6.7627 1.5752 -8.80469 3.51758\nl-47.5898 47.3994c-1.94824 1.94141 -3.5293 5.75 -3.5293 8.5c0 2.75098 1.58105 6.55859 3.5293 8.5l15.7002 15.7197c1.94141 1.94824 5.74902 3.53027 8.5 3.53027c2.75 0 6.55762 -1.58203 8.5 -3.53027l22.6992 -22.1191l63.6807 63.3096\nc1.94141 1.94824 5.74902 3.5293 8.5 3.5293c2.75 0 6.55859 -1.58105 8.5 -3.5293zM139.61 253.31l16.9795 -17c1.89648 -1.93164 3.43457 -5.69727 3.43457 -8.4043c0 -2.74805 -1.5791 -6.55371 -3.52441 -8.49512l-72.2002 -72.2197l-15.7002 -15.6904\nc-2.04102 -1.94141 -5.9834 -3.5166 -8.7998 -3.5166s-6.75879 1.5752 -8.7998 3.5166l-47.4697 47.5c-1.94824 1.94141 -3.5293 5.74902 -3.5293 8.5s1.58105 6.55859 3.5293 8.5l15.7002 15.6904c1.94141 1.94824 5.74902 3.5293 8.5 3.5293\nc2.75 0 6.55762 -1.58105 8.5 -3.5293l22.6992 -22.1006l63.6807 63.7197c1.94141 1.94824 5.74902 3.53027 8.5 3.53027c2.75 0 6.55859 -1.58203 8.5 -3.53027zM64 80c26.4961 0 48 -21.5039 48 -48s-21.5039 -48 -48 -48c-26.4697 0 -48.5898 21.5 -48.5898 48\ns22.0996 48 48.5898 48zM496 64c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-288c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h288zM496 384c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-288\nc-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h288zM496 224c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-288c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h288z\" />\n    <glyph glyph-name=\"filter\" unicode=\"&#xf0b0;\" \nd=\"M487.976 448c21.3623 0 32.0459 -25.8965 16.9717 -40.9707l-184.947 -184.971v-262.039c0 -19.5127 -21.9805 -30.71 -37.7627 -19.6611l-80 55.9795c-6.41602 4.49219 -10.2373 11.8311 -10.2373 19.6621v206.059l-184.942 184.971\nc-15.1045 15.1045 -4.34766 40.9707 16.9707 40.9707h463.947z\" />\n    <glyph glyph-name=\"briefcase\" unicode=\"&#xf0b1;\" \nd=\"M320 112v48h192v-144c0 -25.5996 -22.4004 -48 -48 -48h-416c-25.5996 0 -48 22.4004 -48 48v144h192v-48c0 -8.83984 7.16016 -16 16 -16h96c8.83984 0 16 7.16016 16 16zM464 320c25.5996 0 48 -22.4004 48 -48v-80h-512v80c0 25.5996 22.4004 48 48 48h80v48\nc0 25.5996 22.4004 48 48 48h160c25.5996 0 48 -22.4004 48 -48v-48h80zM320 320v32h-128v-32h128z\" />\n    <glyph glyph-name=\"arrows-alt\" unicode=\"&#xf0b2;\" \nd=\"M352.201 22.2246l-79.1963 -79.1953c-9.37305 -9.37305 -24.5684 -9.37305 -33.9404 0l-79.1963 79.1953c-15.1191 15.1191 -4.41113 40.9717 16.9707 40.9707h51.1621l-0.000976562 100.805h-100.804v-51.1621c0 -21.3818 -25.8516 -32.0898 -40.9717 -16.9707\nl-79.1953 79.1963c-9.37305 9.37207 -9.37305 24.5684 0 33.9404l79.1953 79.1963c15.1191 15.1191 40.9717 4.41113 40.9717 -16.9717v-51.2285h100.804v100.804h-51.2305c-21.3818 0 -32.0898 25.8516 -16.9707 40.9717l79.1963 79.1953\nc9.37305 9.37305 24.5684 9.37305 33.9404 0l79.1963 -79.1953c15.1191 -15.1191 4.41113 -40.9717 -16.9707 -40.9717h-51.1621v-100.804h100.804v51.1621c0 21.3818 25.8516 32.0898 40.9707 16.9707l79.1953 -79.1963c9.37305 -9.37207 9.37305 -24.5684 0 -33.9404\nl-79.1953 -79.1963c-15.1191 -15.1191 -40.9717 -4.41113 -40.9707 16.9717v51.2285h-100.803v-100.804h51.2305c21.3818 0 32.0898 -25.8516 16.9707 -40.9717z\" />\n    <glyph glyph-name=\"users\" unicode=\"&#xf0c0;\" horiz-adv-x=\"640\" \nd=\"M96 224c-35.2998 0 -64 28.7002 -64 64s28.7002 64 64 64s64 -28.7002 64 -64s-28.7002 -64 -64 -64zM544 224c-35.2998 0 -64 28.7002 -64 64s28.7002 64 64 64s64 -28.7002 64 -64s-28.7002 -64 -64 -64zM576 192c35.2998 0 64 -28.7002 64 -64v-32\nc0 -17.7002 -14.2998 -32 -32 -32h-66c-6.2002 47.4004 -34.7998 87.2998 -75.0996 109.4c11.5996 11.5 27.5 18.5996 45.0996 18.5996h64zM320 192c-61.9004 0 -112 50.0996 -112 112s50.0996 112 112 112s112 -50.0996 112 -112s-50.0996 -112 -112 -112zM396.8 160\nc63.6006 0 115.2 -51.5996 115.2 -115.2v-28.7998c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v28.7998c0 63.6006 51.5996 115.2 115.2 115.2h8.2998c20.9004 -10 43.9004 -16 68.5 -16s47.7002 6 68.5 16h8.2998zM173.1 173.4\nc-40.2998 -22.1006 -68.8994 -62 -75.1992 -109.4h-65.9004c-17.7002 0 -32 14.2998 -32 32v32c0 35.2998 28.7002 64 64 64h64c17.5996 0 33.5 -7.09961 45.0996 -18.5996z\" />\n    <glyph glyph-name=\"link\" unicode=\"&#xf0c1;\" \nd=\"M326.612 262.609c59.7471 -59.8096 58.9268 -155.698 0.359375 -214.591c-0.109375 -0.119141 -0.239258 -0.25 -0.359375 -0.369141l-67.2002 -67.2002c-59.2705 -59.2705 -155.699 -59.2627 -214.96 0c-59.2705 59.2598 -59.2705 155.7 0 214.96l37.1055 37.1055\nc9.84082 9.84082 26.7861 3.30078 27.2939 -10.6055c0.648438 -17.7227 3.82617 -35.5273 9.69043 -52.7207c1.98633 -5.82227 0.567383 -12.2627 -3.7832 -16.6123l-13.0869 -13.0869c-28.0254 -28.0264 -28.9053 -73.6602 -1.15527 -101.96\nc28.0244 -28.5791 74.0859 -28.749 102.325 -0.510742l67.2002 67.1904c28.1914 28.1914 28.0732 73.7568 0 101.83c-3.70117 3.69434 -7.42871 6.56348 -10.3408 8.56934c-3.66504 2.51562 -6.77734 8.16309 -6.94727 12.6055\nc-0.395508 10.5674 3.34766 21.4561 11.6982 29.8057l21.0537 21.0557c5.52148 5.52051 14.1826 6.19922 20.584 1.73047c6.08301 -4.24707 15.2764 -11.9512 20.5225 -17.1963zM467.547 403.551c59.2705 -59.2598 59.2705 -155.7 -0.000976562 -214.959l-37.1055 -37.1055\nc-9.84082 -9.83984 -26.7852 -3.30078 -27.2939 10.6055c-0.648438 17.7227 -3.82617 35.5273 -9.69043 52.7217c-1.98633 5.82129 -0.567383 12.2617 3.7832 16.6113l13.0869 13.0869c28.0264 28.0264 28.9053 73.6602 1.15527 101.96\nc-28.0254 28.5791 -74.0869 28.749 -102.325 0.510742l-67.2002 -67.1904c-28.1914 -28.1914 -28.0732 -73.7568 0 -101.83c3.70117 -3.69434 7.42871 -6.56348 10.3408 -8.56934c3.66504 -2.51562 6.77734 -8.16309 6.94727 -12.6055\nc0.395508 -10.5674 -3.34766 -21.4561 -11.6982 -29.8057l-21.0537 -21.0557c-5.52051 -5.51953 -14.1826 -6.19922 -20.584 -1.73047c-6.08203 4.24609 -15.2754 11.9502 -20.5215 17.1953c-59.7471 59.8096 -58.9258 155.698 -0.359375 214.591\nc0.109375 0.119141 0.239258 0.25 0.359375 0.369141l67.2002 67.2002c59.2705 59.2705 155.699 59.2627 214.96 0z\" />\n    <glyph glyph-name=\"cloud\" unicode=\"&#xf0c2;\" horiz-adv-x=\"640\" \nd=\"M537.6 221.4c58.4004 -11.8008 102.4 -63.5 102.4 -125.4c0 -70.7002 -57.2998 -128 -128 -128h-368c-79.5 0 -144 64.5 -144 144c0 62.7998 40.2002 116.2 96.2002 135.9c-0.100586 2.69922 -0.200195 5.39941 -0.200195 8.09961c0 88.4004 71.5996 160 160 160\nc59.2998 0 111 -32.2002 138.7 -80.2002c15.2002 10.2002 33.5996 16.2002 53.2998 16.2002c53 0 96 -43 96 -96c0 -12.2002 -2.2998 -23.9004 -6.40039 -34.5996z\" />\n    <glyph glyph-name=\"flask\" unicode=\"&#xf0c3;\" horiz-adv-x=\"448\" \nd=\"M437.2 44.5c29.2998 -47 -4.40039 -108.5 -60.1006 -108.5h-306.199c-55.6006 0 -89.4004 61.4004 -60.1006 108.5l117.2 188.5v151h-8c-13.2998 0 -24 10.7002 -24 24v16c0 13.2998 10.7002 24 24 24h208c13.2998 0 24 -10.7002 24 -24v-16\nc0 -13.2998 -10.7002 -24 -24 -24h-8v-151zM137.9 128h172l-48.2002 77.5996c-3.60059 5.2002 -5.7998 11.5 -5.7998 18.4004v160h-64v-160c0 -6.7998 -2.10059 -13.2002 -5.80078 -18.4004z\" />\n    <glyph glyph-name=\"cut\" unicode=\"&#xf0c4;\" horiz-adv-x=\"448\" \nd=\"M278.06 192l166.421 -166.43c4.68945 -4.69043 4.68945 -12.29 0 -16.9707c-32.8008 -32.7998 -85.9902 -32.7998 -118.79 0l-115.511 115.521l-24.8594 -24.8604c4.30957 -10.9199 6.67969 -22.8096 6.67969 -35.2598c0 -53.0195 -42.9805 -96 -96 -96\ns-96 42.9805 -96 96s42.9805 96 96 96c4.53027 0 8.99023 -0.320312 13.3604 -0.929688l32.9297 32.9297l-32.9297 32.9297c-4.37012 -0.609375 -8.82031 -0.929688 -13.3604 -0.929688c-53.0195 0 -96 42.9805 -96 96s42.9805 96 96 96s96 -42.9805 96 -96\nc0 -12.4502 -2.37012 -24.3398 -6.67969 -35.2598l24.8594 -24.8604l115.511 115.521c32.7998 32.7998 85.9893 32.7998 118.79 0c4.68945 -4.68066 4.68945 -12.2803 0 -16.9707zM96 288c17.6396 0 32 14.3604 32 32s-14.3604 32 -32 32s-32 -14.3604 -32 -32\ns14.3604 -32 32 -32zM96 32c17.6396 0 32 14.3604 32 32s-14.3604 32 -32 32s-32 -14.3604 -32 -32s14.3604 -32 32 -32z\" />\n    <glyph glyph-name=\"copy\" unicode=\"&#xf0c5;\" horiz-adv-x=\"448\" \nd=\"M320 0v-40c0 -13.2549 -10.7451 -24 -24 -24h-272c-13.2549 0 -24 10.7451 -24 24v368c0 13.2549 10.7451 24 24 24h72v-296c0 -30.8789 25.1211 -56 56 -56h168zM320 344c0 -13.2002 10.7998 -24 24 -24h104v-264c0 -13.2549 -10.7451 -24 -24 -24h-272\nc-13.2549 0 -24 10.7451 -24 24v368c0 13.2549 10.7451 24 24 24h168v-104zM440.971 375.029c3.87988 -3.88086 7.0293 -11.4834 7.0293 -16.9707v-6.05859h-96v96h6.05859c5.4873 0 13.0898 -3.14941 16.9707 -7.0293z\" />\n    <glyph glyph-name=\"paperclip\" unicode=\"&#xf0c6;\" horiz-adv-x=\"448\" \nd=\"M43.2461 -18.1416c-58.4297 60.2891 -57.3408 157.511 1.38574 217.581l209.76 214.561c44.3164 45.332 116.352 45.3359 160.672 0c43.8896 -44.8936 43.9424 -117.329 0 -162.276l-182.85 -186.852c-29.8545 -30.5371 -78.6328 -30.1113 -107.981 0.998047\nc-28.2754 29.9697 -27.3682 77.4727 1.45117 106.953l143.743 146.835c6.18262 6.31348 16.3125 6.42188 22.626 0.241211l22.8613 -22.3799c6.31445 -6.18164 6.42188 -16.3115 0.241211 -22.626l-143.729 -146.82c-4.93164 -5.04492 -5.23535 -13.4287 -0.647461 -18.292\nc4.37207 -4.63379 11.2451 -4.71094 15.6875 -0.165039l182.85 186.851c19.6123 20.0625 19.6123 52.7256 -0.0117188 72.7979c-19.1885 19.627 -49.957 19.6377 -69.1533 0l-209.762 -214.56c-34.7627 -35.5605 -35.2988 -93.1201 -1.19043 -128.313\nc34.0098 -35.0928 88.9844 -35.1367 123.058 -0.285156l172.061 175.999c6.17676 6.31836 16.3066 6.43262 22.626 0.255859l22.877 -22.3643c6.31836 -6.17676 6.43359 -16.3066 0.255859 -22.626l-172.061 -175.998c-59.5752 -60.9385 -155.942 -60.2158 -214.77 0.485352\nz\" />\n    <glyph glyph-name=\"save\" unicode=\"&#xf0c7;\" horiz-adv-x=\"448\" \nd=\"M433.941 318.059c7.75977 -7.75977 14.0586 -22.9658 14.0586 -33.9404v-268.118c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h268.118c10.9746 0 26.1807 -6.29883 33.9404 -14.0586zM224 32\nc35.3457 0 64 28.6543 64 64s-28.6543 64 -64 64s-64 -28.6543 -64 -64s28.6543 -64 64 -64zM320 336.52c0 2.74316 -1.5752 6.5459 -3.51465 8.48535l-3.48047 3.48047c-2.25 2.25098 -5.30176 3.51465 -8.48535 3.51465h-228.52c-6.62695 0 -12 -5.37305 -12 -12v-104\nc0 -6.62695 5.37305 -12 12 -12h232c6.62695 0 12 5.37305 12 12v100.52z\" />\n    <glyph glyph-name=\"square\" unicode=\"&#xf0c8;\" horiz-adv-x=\"448\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352z\" />\n    <glyph glyph-name=\"bars\" unicode=\"&#xf0c9;\" horiz-adv-x=\"448\" \nd=\"M16 316c-8.83691 0 -16 7.16309 -16 16v40c0 8.83691 7.16309 16 16 16h416c8.83691 0 16 -7.16309 16 -16v-40c0 -8.83691 -7.16309 -16 -16 -16h-416zM16 156c-8.83691 0 -16 7.16309 -16 16v40c0 8.83691 7.16309 16 16 16h416c8.83691 0 16 -7.16309 16 -16v-40\nc0 -8.83691 -7.16309 -16 -16 -16h-416zM16 -4c-8.83691 0 -16 7.16309 -16 16v40c0 8.83691 7.16309 16 16 16h416c8.83691 0 16 -7.16309 16 -16v-40c0 -8.83691 -7.16309 -16 -16 -16h-416z\" />\n    <glyph glyph-name=\"list-ul\" unicode=\"&#xf0ca;\" \nd=\"M48 400c26.4961 0 48 -21.5039 48 -48s-21.5039 -48 -48 -48s-48 21.5039 -48 48s21.5039 48 48 48zM48 240c26.4961 0 48 -21.5039 48 -48s-21.5039 -48 -48 -48s-48 21.5039 -48 48s21.5039 48 48 48zM48 80c26.4961 0 48 -21.5039 48 -48s-21.5039 -48 -48 -48\ns-48 21.5039 -48 48s21.5039 48 48 48zM496 64c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-320c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h320zM496 384c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16\nh-320c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h320zM496 224c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-320c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h320z\" />\n    <glyph glyph-name=\"list-ol\" unicode=\"&#xf0cb;\" \nd=\"M61.7695 47c19.6104 -5.12012 28.7002 -20.5 28.7305 -34.8799c0 -21.3701 -14.3398 -44.1201 -48.5 -44.1201c-16.6201 0 -29.29 4.75 -37 9.44043c-5.82031 4.21973 -6.34961 9.80957 -2.62988 15.9395l5.58984 9.31055c3.86035 6.61914 9.11035 7 15.5996 3.11914\nc4.10352 -1.68652 11.0342 -3.08496 15.4707 -3.11914c10.1602 0 14.3594 3.5 14.3594 8.21973c0 6.64941 -5.60938 9.08984 -15.9395 9.08984h-4.73047c-5.95996 0 -9.25 2.12012 -12.25 7.87988l-1.0498 1.92969c-2.4502 4.75 -1.2002 9.81055 2.7998 14.8809l5.61035 7\nc2.85742 3.55664 7.78516 9.07129 11 12.3096h-22.8301c-4.41602 0 -8 3.58398 -8 8v16c0 4.41602 3.58398 8 8 8h57c7.5 0 11.3398 -4 11.3398 -11.3496v-3.31055c0.0107422 -0.245117 0.0205078 -0.644531 0.0205078 -0.890625\nc0 -4.20801 -2.28027 -10.166 -5.09082 -13.2988zM496 224c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-320c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h320zM496 384c8.83203 0 16 -7.16797 16 -16v-32\nc0 -8.83203 -7.16797 -16 -16 -16h-320c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h320zM496 64c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-320c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h320zM16 288\nc-4.41602 0 -8 3.58398 -8 8v16c0 4.41602 3.58398 8 8 8h16v64h-8c-4.4082 0.0078125 -7.98535 3.5918 -7.98535 8c0 1.04297 0.378906 2.64746 0.845703 3.58008l8 16c1.21777 2.43457 4.41699 4.41504 7.13965 4.41992h24c4.41602 0 8 -3.58398 8 -8v-88h16\nc4.41602 0 8 -3.58398 8 -8v-16c0 -4.41602 -3.58398 -8 -8 -8h-64zM12.0898 128c-7.00977 0 -12.0898 4 -12.0898 11.4102v4c0 47.2803 51 56.3994 50.9697 69.1201c0 7.18945 -5.9502 8.75 -9.2793 8.75h-0.0546875c-3.02832 0 -7.24219 -1.7207 -9.40527 -3.83984\nc-5.12012 -4.91016 -10.5107 -7 -16.1201 -2.44043l-8.58008 6.87988c-5.7998 4.53027 -7.16992 9.78027 -2.7998 15.3701c6.65918 8.75 19.0996 18.75 40.46 18.75c19.4697 0 44.4697 -10.5 44.4697 -39.5596c0 -37.7607 -45.0498 -46.1504 -48.3398 -56.4404h38.6797\nc4.41602 0 8 -3.58398 8 -8v-16c0 -4.41602 -3.58398 -8 -8 -8h-67.9102z\" />\n    <glyph glyph-name=\"strikethrough\" unicode=\"&#xf0cc;\" \nd=\"M496 224c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-480c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h102.29c-11.6797 16.5303 -19.7803 35.4697 -21.7803 56.3604c-0.319336 3.29297 -0.579102 8.65137 -0.579102 11.96\nc0 68.2158 55.3633 123.624 123.579 123.68h68h0.0117188c43.6865 0 94.9863 -31.7188 114.509 -70.7998l0.529297 -1c0.930664 -1.86328 1.68652 -5.06641 1.68652 -7.14844c0 -5.45898 -3.96289 -11.8711 -8.8457 -14.3115l-42.9404 -21.4707\nc-1.86426 -0.931641 -5.06836 -1.6875 -7.15234 -1.6875c-5.45605 0 -11.8652 3.95996 -14.3076 8.83789c-7.61133 15.2246 -27.6025 27.5801 -44.624 27.5801h-0.0361328h-66.79c-24.0391 -0.000976562 -43.5488 -19.5107 -43.5488 -43.5498\nc0 -17.749 13.7666 -36.3945 30.7295 -41.6201l87.1699 -26.8301h202.1zM315.76 128h94.3906c2.21191 -6.56152 4.60352 -17.4746 5.33984 -24.3604c0.319336 -3.29297 0.579102 -8.65137 0.579102 -11.96c0 -68.2158 -55.3633 -123.624 -123.579 -123.68h-68h-0.0117188\nc-43.6865 0 -94.9863 31.7188 -114.509 70.7998l-0.529297 1c-0.930664 1.86328 -1.68652 5.06641 -1.68652 7.14844c0 5.45898 3.96289 11.8711 8.8457 14.3115l42.9404 21.4707c1.86426 0.931641 5.06836 1.6875 7.15234 1.6875\nc5.45605 0 11.8652 -3.95996 14.3076 -8.83789c7.61133 -15.2246 27.6025 -27.5801 44.624 -27.5801h0.0361328h66.79c24.0176 0.0224609 43.5273 19.5322 43.5498 43.5498c-0.00976562 13.1572 -9.07715 29.4863 -20.2402 36.4502z\" />\n    <glyph glyph-name=\"underline\" unicode=\"&#xf0cd;\" horiz-adv-x=\"448\" \nd=\"M32 384c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h144c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32v-160c0 -44.1602 35.8398 -80 80 -80s80 35.8398 80 80v160h-32c-8.83203 0 -16 7.16797 -16 16v32\nc0 8.83203 7.16797 16 16 16h144c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32v-160c0 -88.2197 -71.7803 -160 -160 -160s-160 71.7803 -160 160v160h-32zM432 0c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-416\nc-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h416z\" />\n    <glyph glyph-name=\"table\" unicode=\"&#xf0ce;\" \nd=\"M464 416c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h416zM224 32v96h-160v-96h160zM224 192v96h-160v-96h160zM448 32v96h-160v-96h160zM448 192v96h-160v-96h160z\" />\n    <glyph glyph-name=\"magic\" unicode=\"&#xf0d0;\" \nd=\"M224 352l-16 32l-32 16l32 16l16 32l16 -32l32 -16l-32 -16zM80 288l-26.6602 53.3301l-53.3398 26.6699l53.3398 26.6699l26.6602 53.3301l26.6602 -53.3301l53.3398 -26.6699l-53.3398 -26.6699zM432 160l26.6602 -53.3301l53.3398 -26.6699l-53.3398 -26.6699\nl-26.6602 -53.3301l-26.6602 53.3301l-53.3398 26.6699l53.3398 26.6699zM502.62 353.77c12.5 -12.4893 12.5 -32.7598 0 -45.2393l-363.14 -363.15c-6.25 -6.25 -14.4404 -9.37012 -22.6309 -9.37012c-8.17969 0 -16.3691 3.12012 -22.6191 9.37012l-84.8506 84.8506\nc-12.5 12.4893 -12.5 32.75 0 45.25l363.14 363.14c6.25 6.25977 14.4404 9.37988 22.6309 9.37988c8.18945 0 16.3799 -3.12012 22.6191 -9.37988zM359.45 244.54l86.5996 86.5996l-50.9102 50.9102l-86.5996 -86.5996z\" />\n    <glyph glyph-name=\"truck\" unicode=\"&#xf0d1;\" horiz-adv-x=\"640\" \nd=\"M624 96c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-48c0 -53 -43 -96 -96 -96s-96 43 -96 96h-128c0 -53 -43 -96 -96 -96s-96 43 -96 96h-16c-26.5 0 -48 21.5 -48 48v320c0 26.5 21.5 48 48 48h320c26.5 0 48 -21.5 48 -48v-48h44.0996\nc12.7002 0 24.9004 -5.09961 33.9004 -14.0996l99.9004 -99.9004c9 -9 14.0996 -21.2002 14.0996 -33.9004v-108.1h16zM160 -16c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48zM480 -16c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48\ns21.5 -48 48 -48zM560 192v12.0996l-99.9004 99.9004h-44.0996v-112h144z\" />\n    <glyph glyph-name=\"money-bill\" unicode=\"&#xf0d6;\" horiz-adv-x=\"640\" \nd=\"M608 384c17.6699 0 32 -14.3301 32 -32v-320c0 -17.6699 -14.3301 -32 -32 -32h-576c-17.6699 0 -32 14.3301 -32 32v320c0 17.6699 14.3301 32 32 32h576zM48 48h64c0 35.3496 -28.6504 64 -64 64v-64zM48 272c35.3496 0 64 28.6504 64 64h-64v-64zM320 96\nc44.1699 0 80 42.9697 80 96c0 53.0195 -35.8203 96 -80 96s-80 -42.9805 -80 -96c0 -53.0098 35.8096 -96 80 -96zM592 48v64c-35.3496 0 -64 -28.6504 -64 -64h64zM592 272v64h-64c0 -35.3496 28.6504 -64 64 -64z\" />\n    <glyph glyph-name=\"caret-down\" unicode=\"&#xf0d7;\" horiz-adv-x=\"320\" \nd=\"M31.2998 256h257.3c17.8008 0 26.7002 -21.5 14.1006 -34.0996l-128.601 -128.7c-7.7998 -7.7998 -20.5 -7.7998 -28.2998 0l-128.6 128.7c-12.6006 12.5996 -3.7002 34.0996 14.0996 34.0996z\" />\n    <glyph glyph-name=\"caret-up\" unicode=\"&#xf0d8;\" horiz-adv-x=\"320\" \nd=\"M288.662 96h-257.324c-17.8184 0 -26.7412 21.543 -14.1416 34.1416l128.662 128.662c7.80957 7.81055 20.4736 7.81055 28.2832 0l128.662 -128.662c12.6006 -12.5986 3.67676 -34.1416 -14.1416 -34.1416z\" />\n    <glyph glyph-name=\"caret-left\" unicode=\"&#xf0d9;\" horiz-adv-x=\"192\" \nd=\"M192 320.662v-257.324c0 -17.8184 -21.543 -26.7412 -34.1416 -14.1416l-128.662 128.662c-7.81055 7.80957 -7.81055 20.4736 0 28.2832l128.662 128.662c12.5986 12.6006 34.1416 3.67676 34.1416 -14.1416z\" />\n    <glyph glyph-name=\"caret-right\" unicode=\"&#xf0da;\" horiz-adv-x=\"192\" \nd=\"M0 63.3379v257.324c0 17.8184 21.543 26.7412 34.1416 14.1416l128.662 -128.662c7.81055 -7.80957 7.81055 -20.4736 0 -28.2832l-128.662 -128.662c-12.5986 -12.6006 -34.1416 -3.67676 -34.1416 14.1416z\" />\n    <glyph glyph-name=\"columns\" unicode=\"&#xf0db;\" \nd=\"M464 416c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h416zM224 32v256h-160v-256h160zM448 32v256h-160v-256h160z\" />\n    <glyph glyph-name=\"sort\" unicode=\"&#xf0dc;\" horiz-adv-x=\"320\" \nd=\"M41 160h238c21.4004 0 32.0996 -25.9004 17 -41l-119 -119c-9.40039 -9.40039 -24.5996 -9.40039 -33.9004 0l-119.1 119c-15.0996 15.0996 -4.40039 41 17 41zM296 265c15.0996 -15.0996 4.40039 -41 -17 -41h-238c-21.4004 0 -32.0996 25.9004 -17 41l119.1 119\nc9.30078 9.40039 24.5 9.40039 33.9004 0z\" />\n    <glyph glyph-name=\"sort-down\" unicode=\"&#xf0dd;\" horiz-adv-x=\"320\" \nd=\"M41 160h238c21.4004 0 32.0996 -25.9004 17 -41l-119 -119c-9.40039 -9.40039 -24.5996 -9.40039 -33.9004 0l-119.1 119c-15.0996 15.0996 -4.40039 41 17 41z\" />\n    <glyph glyph-name=\"sort-up\" unicode=\"&#xf0de;\" horiz-adv-x=\"320\" \nd=\"M279 224h-238c-21.4004 0 -32.0996 25.9004 -17 41l119 119c9.40039 9.40039 24.5996 9.40039 33.9004 0l119 -119c15.1992 -15.0996 4.5 -41 -16.9004 -41z\" />\n    <glyph glyph-name=\"envelope\" unicode=\"&#xf0e0;\" \nd=\"M502.3 257.2c3.90039 3.09961 9.7002 0.200195 9.7002 -4.7002v-204.5c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v204.4c0 5 5.7002 7.7998 9.7002 4.69922c22.3994 -17.3994 52.0996 -39.5 154.1 -113.6\nc21.1006 -15.4004 56.7002 -47.7998 92.2002 -47.5996c35.7002 -0.300781 72 32.7998 92.2998 47.5996c102 74.0996 131.601 96.2998 154 113.7zM256 128c-23.2002 -0.400391 -56.5996 29.2002 -73.4004 41.4004c-132.699 96.2998 -142.8 104.8 -173.399 128.699\nc-5.7998 4.60059 -9.2002 11.5 -9.2002 18.9004v19c0 26.5 21.5 48 48 48h416c26.5 0 48 -21.5 48 -48v-19c0 -7.40039 -3.40039 -14.4004 -9.2002 -18.9004c-30.5996 -24 -40.7002 -32.3994 -173.399 -128.699c-16.8008 -12.2002 -50.2002 -41.8008 -73.4004 -41.4004z\" />\n    <glyph glyph-name=\"undo\" unicode=\"&#xf0e2;\" \nd=\"M212.333 223.667h-200.333c-6.62695 0 -12 5.37305 -12 12v200.333c0 6.62695 5.37305 12 12 12h48c6.62695 0 12 -5.37305 12 -12v-78.1123c45.7734 50.833 112.26 82.6426 186.175 82.1055c136.906 -0.994141 246.448 -111.623 246.157 -248.532\nc-0.291016 -136.719 -111.212 -247.461 -247.999 -247.461c-64.0889 0 -122.496 24.3135 -166.51 64.2148c-5.09961 4.62207 -5.33398 12.5537 -0.466797 17.4199l33.9668 33.9668c4.47363 4.47461 11.6621 4.71777 16.4004 0.525391\nc31.0361 -27.4629 71.8564 -44.127 116.609 -44.127c97.2676 0 176 78.7158 176 176c0 97.2666 -78.7158 176 -176 176c-58.4961 0 -110.28 -28.4756 -142.274 -72.333h98.2744c6.62695 0 12 -5.37305 12 -12v-48c0 -6.62695 -5.37305 -12 -12 -12z\" />\n    <glyph glyph-name=\"gavel\" unicode=\"&#xf0e3;\" \nd=\"M504.971 248.638c9.37207 -9.37305 9.37207 -24.5684 0 -33.9404l-124.451 -124.451c-9.37109 -9.37305 -24.5674 -9.37305 -33.9404 0l-22.627 22.627c-9.37305 9.37207 -9.37305 24.5684 0 33.9414l5.65723 5.65625l-39.5986 39.5986l-81.04 -81.04l5.65723 -5.65723\nc12.4971 -12.4971 12.4971 -32.7578 0 -45.2549l-114.745 -114.745c-12.4971 -12.4971 -32.7578 -12.4971 -45.2549 0l-45.2549 45.2549c-12.4971 12.4971 -12.4971 32.7578 0 45.2549l114.744 114.746c12.4971 12.4971 32.7578 12.4971 45.2549 0l5.65723 -5.65723\nl81.04 81.04l-39.5986 39.5986l-5.65625 -5.65723c-9.37207 -9.37305 -24.5684 -9.37305 -33.9414 0l-22.627 22.627c-9.37305 9.37207 -9.37305 24.5684 0 33.9404l124.451 124.451c9.37207 9.37305 24.5674 9.37305 33.9404 0l22.627 -22.6279\nc9.37305 -9.37207 9.37305 -24.5674 0 -33.9404l-5.65625 -5.65723l113.138 -113.137l5.65723 5.65625c9.37207 9.37305 24.5674 9.37305 33.9404 0z\" />\n    <glyph glyph-name=\"bolt\" unicode=\"&#xf0e7;\" horiz-adv-x=\"320\" \nd=\"M296 288c18.5 0 30 -20.0996 20.7002 -36l-176 -304c-4.40039 -7.59961 -12.4004 -12 -20.7998 -12c-15.3008 0 -26.9004 14.2998 -23.3008 29.5l46.1006 194.5h-118.7c-14.5 0 -25.7002 12.7998 -23.7998 27.2002l32 240\nc1.59961 11.8994 11.7998 20.7998 23.7998 20.7998h144c15.7002 0 27.2002 -15 23.2002 -30.2002l-42.6006 -129.8h115.4z\" />\n    <glyph glyph-name=\"sitemap\" unicode=\"&#xf0e8;\" horiz-adv-x=\"640\" \nd=\"M128 96c17.6699 0 32 -14.3301 32 -32v-96c0 -17.6699 -14.3301 -32 -32 -32h-96c-17.6699 0 -32 14.3301 -32 32v96c0 17.6699 14.3301 32 32 32h96zM104 176v-48h-48v57.5898c0 21.1797 17.2305 38.4102 38.4102 38.4102h201.59v64h-40c-17.6699 0 -32 14.3301 -32 32\nv96c0 17.6699 14.3301 32 32 32h128c17.6699 0 32 -14.3301 32 -32v-96c0 -17.6699 -14.3301 -32 -32 -32h-40v-64h201.59c21.1797 0 38.4102 -17.2402 38.4102 -38.4102v-57.5898h-48v48h-192v-48h-48v48h-192zM368 96c17.6699 0 32 -14.3301 32 -32v-96\nc0 -17.6699 -14.3301 -32 -32 -32h-96c-17.6699 0 -32 14.3301 -32 32v96c0 17.6699 14.3301 32 32 32h96zM608 96c17.6699 0 32 -14.3301 32 -32v-96c0 -17.6699 -14.3301 -32 -32 -32h-96c-17.6699 0 -32 14.3301 -32 32v96c0 17.6699 14.3301 32 32 32h96z\" />\n    <glyph glyph-name=\"umbrella\" unicode=\"&#xf0e9;\" horiz-adv-x=\"576\" \nd=\"M575.7 167.2c2.2002 -10.1006 -8.40039 -21.4004 -18.7002 -11.4004c-51.5 54.4004 -107.6 52.5 -158.6 -37c-5.30078 -9.5 -14.9004 -8.59961 -19.7002 0c-2.5 4.40039 -32.2002 73.2002 -90.7002 73.2002c-45.7998 0 -70.5 -37.7998 -90.7002 -73.2002\nc-4.7998 -8.59961 -14.3994 -9.5 -19.7002 0c-50.8994 89.4004 -106.6 92 -158.6 37c-10.2002 -9.89941 -20.9004 1.2998 -18.7002 11.4004c29.2002 136.3 138 218.2 255.7 230.899v17.9004c0 17.7002 14.2998 32 32 32s32 -14.2998 32 -32v-17.9004\nc117.3 -12.6992 227.1 -94.5996 255.7 -230.899zM256 146.3c9.59961 8.90039 19.7002 13.6006 32 13.7002c12.2002 0 22.9004 -5.7002 32 -13.5996v-130.301c0 -44.0996 -35.9004 -80 -80 -80c-33.7998 0 -64.2002 21.4004 -75.4004 53.3008\nc-5.89941 16.5996 2.80078 34.8994 19.5 40.7998c16.7002 5.89941 34.9004 -2.7998 40.8008 -19.5c1.89941 -5.40039 7.2998 -10.7002 15.0996 -10.7002c8.7998 0 16 7.2002 16 16v130.3z\" />\n    <glyph glyph-name=\"paste\" unicode=\"&#xf0ea;\" horiz-adv-x=\"448\" \nd=\"M128 264v-232h-104c-13.2549 0 -24 10.7451 -24 24v336c0 13.2549 10.7451 24 24 24h80.6104c11.084 19.1104 31.7529 32 55.3896 32s44.3057 -12.8896 55.3896 -32h80.6104c13.2549 0 24 -10.7451 24 -24v-72h-136c-30.8779 0 -56 -25.1211 -56 -56zM160 408\nc-13.2549 0 -24 -10.7451 -24 -24s10.7451 -24 24 -24s24 10.7451 24 24s-10.7451 24 -24 24zM344 160h104v-200c0 -13.2549 -10.7451 -24 -24 -24h-240c-13.2549 0 -24 10.7451 -24 24v304c0 13.2549 10.7451 24 24 24h136v-104c0 -13.2002 10.7998 -24 24 -24z\nM448 198.059v-6.05859h-96v96h6.05859c5.4873 0 13.0898 -3.14941 16.9707 -7.0293l65.9404 -65.9404c3.88086 -3.88086 7.03027 -11.4834 7.03027 -16.9717z\" />\n    <glyph glyph-name=\"lightbulb\" unicode=\"&#xf0eb;\" horiz-adv-x=\"352\" \nd=\"M96.0596 -6.34961l-0.0498047 38.3496h159.98l-0.0400391 -38.3496c-0.00585938 -5.3291 -2.40723 -13.2549 -5.36035 -17.6904l-17.0898 -25.6904c-5.24023 -7.88184 -17.1748 -14.2793 -26.6396 -14.2793h-61.71c-9.46582 0 -21.4004 6.39746 -26.6406 14.2793\nl-17.0898 25.6904c-3.49023 5.24023 -5.34961 11.4004 -5.36035 17.6904zM0 272c0 93.0303 73.4404 175.69 175.45 176c97.46 0.299805 176.55 -78.6104 176.55 -176c0 -44.3701 -16.4502 -84.8496 -43.5596 -115.78c-16.5205 -18.8496 -42.3604 -58.2295 -52.21 -91.4502\nc-0.0400391 -0.269531 -0.0703125 -0.519531 -0.110352 -0.779297h-160.24c-0.0400391 0.259766 -0.0703125 0.519531 -0.110352 0.779297c-9.84961 33.2207 -35.6895 72.6006 -52.21 91.4502c-27.1094 30.9307 -43.5596 71.4102 -43.5596 115.78zM176 352\nc8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16c-61.7598 0 -112 -50.2402 -112 -112c0 -8.83984 7.16016 -16 16 -16s16 7.16016 16 16c0 44.1104 35.8896 80 80 80z\" />\n    <glyph glyph-name=\"user-md\" unicode=\"&#xf0f0;\" horiz-adv-x=\"448\" \nd=\"M224 192c-70.7002 0 -128 57.2998 -128 128s57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128zM104 24c0 13.2998 10.7002 24 24 24s24 -10.7002 24 -24s-10.7002 -24 -24 -24s-24 10.7002 -24 24zM320 159.4c71.2002 -3.5 128 -61.8008 128 -133.801\nv-44.7998c0 -24.7002 -20.0996 -44.7998 -44.7998 -44.7998h-358.4c-24.7002 0 -44.7998 20.0996 -44.7998 44.7998v44.7998c0 66.6006 48.5 121.4 112.1 132.101v-80.4004c-23.0996 -6.89941 -40 -28.0996 -40 -53.3994c0 -30.9004 25.1006 -56 56 -56\nc30.9004 0 56 25.0996 56 56c0 25.2998 -16.8994 46.5 -40 53.3994v81.6006c7.7002 -1 15.2002 -2.60059 22.6006 -5.2002c18 -6.2998 37.2998 -9.7998 57.3994 -9.7998c20.1006 0 39.4004 3.5 57.4004 9.7998c2.2002 0.799805 4.40039 1.2002 6.59961 1.89941v-45.1992\nc-36.5 -7.5 -64 -39.8008 -64 -78.4004v-43.7998c0 -8.10059 5.90039 -14.7998 13.8008 -15.9004l31.1992 -4.2002c4.30078 -0.799805 8.5 2 9.40039 6.30078l3.09961 15.6992c0.800781 4.30078 -2 8.5 -6.2998 9.40039l-19.2998 3.90039v26.6992\nc0 67 96 64.7002 96 1.90039v-28.5l-19.2998 -3.90039c-4.40039 -0.799805 -7.2002 -5.09961 -6.2998 -9.39941l3.09961 -15.7002c0.900391 -4.40039 5.09961 -7.2002 9.40039 -6.2998l32.1992 6.39941c7.5 1.5 12.9004 8.10059 12.9004 15.7002v41.7002\nc0 38.5996 -27.5 71 -64 78.4004v49z\" />\n    <glyph glyph-name=\"stethoscope\" unicode=\"&#xf0f1;\" \nd=\"M447.1 336c35.7002 0.5 64.9004 -28.2998 64.9004 -64c0 -23.7002 -12.9004 -44.2998 -32 -55.4004v-112.6c0 -92.5996 -79 -168 -176 -168c-95.4004 0 -173.3 72.7998 -175.9 163.2c-73 14.7998 -128.1 79.5 -128.1 156.8v155.4c0 11.5 8.09961 21.2998 19.2998 23.5996\nl62.7998 12.4004c13 2.59961 25.6006 -5.80078 28.2002 -18.8008l3.10059 -15.6992c2.59961 -13 -5.80078 -25.6006 -18.8008 -28.2002l-30.6992 -6.10059v-122.5c0 -53.2998 43.5 -96.5 96.8994 -96c52.9004 0.5 95.1006 44.3008 95.1006 97.2002v121.4l-30.7002 6.09961\nc-13 2.60059 -21.4004 15.2002 -18.7998 28.2002l3.19922 15.7002c2.60059 13 15.2002 21.3994 28.2002 18.7998l62.9004 -12.5996c11.2002 -2.2002 19.2998 -12.1006 19.2998 -23.5v-155.4c0 -77.2002 -55 -141.8 -127.8 -156.8\nc2.7002 -55.1006 51.8994 -99.2002 111.899 -99.2002c61.8008 0 112 46.7002 112 104v112.6c-19.5 11.2002 -32.5 32.5 -32 56.8008c0.700195 34.1992 28.8008 62.0996 63 62.5996zM448 256c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16\ns7.2002 -16 16 -16z\" />\n    <glyph glyph-name=\"suitcase\" unicode=\"&#xf0f2;\" \nd=\"M128 -32v400c0 26.5 21.5 48 48 48h160c26.5 0 48 -21.5 48 -48v-400h-256zM192 352v-32h128v32h-128zM512 272v-256c0 -26.5 -21.5 -48 -48 -48h-48v352h48c26.5 0 48 -21.5 48 -48zM96 -32h-48c-26.5 0 -48 21.5 -48 48v256c0 26.5 21.5 48 48 48h48v-352z\" />\n    <glyph glyph-name=\"bell\" unicode=\"&#xf0f3;\" horiz-adv-x=\"448\" \nd=\"M224 -64c-35.3203 0 -63.9697 28.6504 -63.9697 64h127.939c0 -35.3496 -28.6494 -64 -63.9697 -64zM439.39 85.71c6 -6.44043 8.66016 -14.1602 8.61035 -21.71c-0.0996094 -16.4004 -12.9805 -32 -32.0996 -32h-383.801c-19.1191 0 -31.9893 15.5996 -32.0996 32\nc-0.0498047 7.5498 2.61035 15.2598 8.61035 21.71c19.3193 20.7598 55.4697 51.9902 55.4697 154.29c0 77.7002 54.4795 139.9 127.939 155.16v20.8398c0 17.6699 14.3203 32 31.9805 32s31.9805 -14.3301 31.9805 -32v-20.8398\nc73.46 -15.2598 127.939 -77.46 127.939 -155.16c0 -102.3 36.1504 -133.53 55.4697 -154.29z\" />\n    <glyph glyph-name=\"coffee\" unicode=\"&#xf0f4;\" horiz-adv-x=\"640\" \nd=\"M192 64c-53 0 -96 43 -96 96v232c0 13.2998 10.7002 24 24 24h392c70.5996 0 128 -57.4004 128 -128s-57.4004 -128 -128 -128h-32c0 -53 -43 -96 -96 -96h-192zM512 352h-32v-128h32c35.2998 0 64 28.7002 64 64s-28.7002 64 -64 64zM559.7 -32h-511.4\nc-47.5996 0 -61 64 -36 64h583.3c25 0 11.8008 -64 -35.8994 -64z\" />\n    <glyph glyph-name=\"hospital\" unicode=\"&#xf0f8;\" horiz-adv-x=\"448\" \nd=\"M448 -44v-20h-448v20c0 6.62695 5.37305 12 12 12h20v360c0 13.2549 10.7451 24 24 24h88v72c0 13.2549 10.7451 24 24 24h112c13.2549 0 24 -10.7451 24 -24v-72h88c13.2549 0 24 -10.7451 24 -24v-360h20c6.62695 0 12 -5.37305 12 -12zM308 256h-40\nc-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12v40c0 6.62695 -5.37305 12 -12 12zM140 192h40c6.62695 0 12 5.37305 12 12v40c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40\nc0 -6.62695 5.37305 -12 12 -12zM244 64h-40c-6.62695 0 -12 -5.37305 -12 -12v-84h64v84c0 6.62695 -5.37305 12 -12 12zM308 160h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12v40c0 6.62695 -5.37305 12 -12 12\nzM192 148c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12v40zM182 352h26v-26c0 -3.31152 2.68848 -6 6 -6h20c3.31152 0 6 2.68848 6 6v26h26c3.31152 0 6 2.68848 6 6v20\nc0 3.31152 -2.68848 6 -6 6h-26v26c0 3.31152 -2.68848 6 -6 6h-20c-3.31152 0 -6 -2.68848 -6 -6v-26h-26c-3.31152 0 -6 -2.68848 -6 -6v-20c0 -3.31152 2.68848 -6 6 -6z\" />\n    <glyph glyph-name=\"ambulance\" unicode=\"&#xf0f9;\" horiz-adv-x=\"640\" \nd=\"M624 96c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-48c0 -53 -43 -96 -96 -96s-96 43 -96 96h-128c0 -53 -43 -96 -96 -96s-96 43 -96 96h-16c-26.5 0 -48 21.5 -48 48v320c0 26.5 21.5 48 48 48h320c26.5 0 48 -21.5 48 -48v-48h44.0996\nc12.7002 0 24.9004 -5.09961 33.9004 -14.0996l99.9004 -99.9004c9 -9 14.0996 -21.2002 14.0996 -33.9004v-108.1h16zM160 -16c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48zM304 232v48c0 4.40039 -3.59961 8 -8 8h-56v56\nc0 4.40039 -3.59961 8 -8 8h-48c-4.40039 0 -8 -3.59961 -8 -8v-56h-56c-4.40039 0 -8 -3.59961 -8 -8v-48c0 -4.40039 3.59961 -8 8 -8h56v-56c0 -4.40039 3.59961 -8 8 -8h48c4.40039 0 8 3.59961 8 8v56h56c4.40039 0 8 3.59961 8 8zM480 -16c26.5 0 48 21.5 48 48\ns-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48zM560 192v12.0996l-99.9004 99.9004h-44.0996v-112h144z\" />\n    <glyph glyph-name=\"medkit\" unicode=\"&#xf0fa;\" \nd=\"M96 -32v352h32v48c0 26.5098 21.4902 48 48 48h160c26.5098 0 48 -21.4902 48 -48v-48h32v-352h-320zM192 352v-32h128v32h-128zM512 272v-256c0 -26.5098 -21.4902 -48 -48 -48h-16v352h16c26.5098 0 48 -21.4902 48 -48zM64 -32h-16c-26.5098 0 -48 21.4902 -48 48v256\nc0 26.5098 21.4902 48 48 48h16v-352zM352 176c0 8.83691 -7.16309 16 -16 16h-48v48c0 8.83691 -7.16309 16 -16 16h-32c-8.83691 0 -16 -7.16309 -16 -16v-48h-48c-8.83691 0 -16 -7.16309 -16 -16v-32c0 -8.83691 7.16309 -16 16 -16h48v-48\nc0 -8.83691 7.16309 -16 16 -16h32c8.83691 0 16 7.16309 16 16v48h48c8.83691 0 16 7.16309 16 16v32z\" />\n    <glyph glyph-name=\"fighter-jet\" unicode=\"&#xf0fb;\" horiz-adv-x=\"640\" \nd=\"M544 224c96 -21.333 96 -26.583 96 -32s0 -10.667 -96 -32l-128 -16l-48 -16h-24l-116.842 -148h39.5088c11.666 0 21.333 -2.625 21.333 -6s-9.66602 -6 -21.333 -6h-114.667v12h16v164h-48l-66.666 -80h-34.667l-10.667 10.667v69.333h8v16h48v2.66699l-64 8v42.667\nl64 8v2.66602h-48v16h-8v69.333l10.667 10.667h34.666l66.667 -80h48v164h-16v12h114.667c11.666 0 21.333 -2.625 21.333 -6s-9.66699 -6 -21.333 -6h-39.5088l116.842 -148h24l48 -16z\" />\n    <glyph glyph-name=\"beer\" unicode=\"&#xf0fc;\" horiz-adv-x=\"448\" \nd=\"M368 352c44.1123 0 80 -35.8877 80 -80v-128.86c0 -31.5273 -18.6035 -60.2031 -47.3936 -73.0527l-80.6064 -35.9766v-42.1104c0 -13.2549 -10.7451 -24 -24 -24h-272c-13.2549 0 -24 10.7451 -24 24v400c0 13.2549 10.7451 24 24 24h272c13.2549 0 24 -10.7451 24 -24\nv-40h48zM384 143.14v128.86c0 8.82227 -7.17773 16 -16 16h-48v-183.805l54.5215 24.334c5.22754 2.33789 9.47461 8.88379 9.47852 14.6104zM208 64c8.83594 0 16 7.16406 16 16v224c0 8.83594 -7.16406 16 -16 16s-16 -7.16406 -16 -16v-224\nc0 -8.83594 7.16406 -16 16 -16zM112 64c8.83594 0 16 7.16406 16 16v224c0 8.83594 -7.16406 16 -16 16s-16 -7.16406 -16 -16v-224c0 -8.83594 7.16406 -16 16 -16z\" />\n    <glyph glyph-name=\"h-square\" unicode=\"&#xf0fd;\" horiz-adv-x=\"448\" \nd=\"M448 368v-352c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h352c26.5098 0 48 -21.4902 48 -48zM336 320h-32c-8.83691 0 -16 -7.16309 -16 -16v-80h-128v80c0 8.83691 -7.16309 16 -16 16h-32\nc-8.83691 0 -16 -7.16309 -16 -16v-224c0 -8.83691 7.16309 -16 16 -16h32c8.83691 0 16 7.16309 16 16v80h128v-80c0 -8.83691 7.16309 -16 16 -16h32c8.83691 0 16 7.16309 16 16v224c0 8.83691 -7.16309 16 -16 16z\" />\n    <glyph glyph-name=\"plus-square\" unicode=\"&#xf0fe;\" horiz-adv-x=\"448\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM368 164v56c0 6.59961 -5.40039 12 -12 12h-92v92c0 6.59961 -5.40039 12 -12 12h-56c-6.59961 0 -12 -5.40039 -12 -12v-92h-92\nc-6.59961 0 -12 -5.40039 -12 -12v-56c0 -6.59961 5.40039 -12 12 -12h92v-92c0 -6.59961 5.40039 -12 12 -12h56c6.59961 0 12 5.40039 12 12v92h92c6.59961 0 12 5.40039 12 12z\" />\n    <glyph glyph-name=\"angle-double-left\" unicode=\"&#xf100;\" horiz-adv-x=\"448\" \nd=\"M223.7 209l136 136c9.39941 9.40039 24.5996 9.40039 33.8994 0l22.6006 -22.5996c9.39941 -9.40039 9.39941 -24.6006 0 -33.9004l-96.2998 -96.5l96.3994 -96.4004c9.40039 -9.39941 9.40039 -24.5996 0 -33.8994l-22.5996 -22.7002\nc-9.40039 -9.40039 -24.6006 -9.40039 -33.9004 0l-136 136c-9.5 9.40039 -9.5 24.5996 -0.0996094 34zM31.7002 175c-9.40039 9.40039 -9.40039 24.5996 0.0996094 34l136 136c9.2998 9.40039 24.5 9.40039 33.9004 0l22.5996 -22.7002\nc9.40039 -9.2998 9.40039 -24.5 0 -33.8994l-96.3994 -96.4004l96.2998 -96.5c9.39941 -9.2998 9.39941 -24.5 0 -33.9004l-22.6006 -22.5996c-9.2998 -9.40039 -24.5 -9.40039 -33.8994 0z\" />\n    <glyph glyph-name=\"angle-double-right\" unicode=\"&#xf101;\" horiz-adv-x=\"448\" \nd=\"M224.3 175l-136 -136c-9.39941 -9.40039 -24.5996 -9.40039 -33.8994 0l-22.6006 22.5996c-9.39941 9.40039 -9.39941 24.6006 0 33.9004l96.4004 96.4004l-96.4004 96.3994c-9.39941 9.40039 -9.39941 24.6006 0 33.9004l22.5 22.7998\nc9.40039 9.40039 24.6006 9.40039 33.9004 0l136 -136c9.5 -9.40039 9.5 -24.5996 0.0996094 -34zM416.3 209c9.40039 -9.40039 9.40039 -24.5996 0 -33.7998l-136 -136c-9.2998 -9.40039 -24.5 -9.40039 -33.8994 0l-22.6006 22.5996\nc-9.39941 9.2998 -9.39941 24.5 0 33.9004l96.4004 96.3994l-96.4004 96.4004c-9.39941 9.2998 -9.39941 24.5 0 33.9004l22.6006 22.5996c9.2998 9.40039 24.5 9.40039 33.8994 0z\" />\n    <glyph glyph-name=\"angle-double-up\" unicode=\"&#xf102;\" horiz-adv-x=\"320\" \nd=\"M177 192.3l136 -136c9.40039 -9.39941 9.40039 -24.5996 0 -33.8994l-22.5996 -22.6006c-9.40039 -9.39941 -24.6006 -9.39941 -33.9004 0l-96.5 96.2998l-96.4004 -96.3994c-9.39941 -9.40039 -24.5996 -9.40039 -33.8994 0l-22.7002 22.5996\nc-9.40039 9.40039 -9.40039 24.6006 0 33.9004l136 136c9.40039 9.5 24.5996 9.5 34 0.0996094zM143 384.3c9.40039 9.40039 24.5996 9.40039 33.7998 0l136 -136c9.40039 -9.2998 9.40039 -24.5 0 -33.8994l-22.5996 -22.6006c-9.2998 -9.39941 -24.5 -9.39941 -33.9004 0\nl-96.3994 96.4004l-96.4004 -96.4004c-9.2998 -9.39941 -24.5 -9.39941 -33.9004 0l-22.5996 22.6006c-9.40039 9.2998 -9.40039 24.5 0 33.8994z\" />\n    <glyph glyph-name=\"angle-double-down\" unicode=\"&#xf103;\" horiz-adv-x=\"320\" \nd=\"M143 191.7l-136 136c-9.40039 9.39941 -9.40039 24.5996 0 33.8994l22.5996 22.6006c9.40039 9.39941 24.6006 9.39941 33.9004 0l96.4004 -96.4004l96.3994 96.4004c9.40039 9.39941 24.6006 9.39941 33.9004 0l22.7998 -22.5\nc9.40039 -9.40039 9.40039 -24.6006 0 -33.9004l-136 -136c-9.40039 -9.5 -24.5996 -9.5 -34 -0.0996094zM177 -0.299805c-9.40039 -9.40039 -24.5996 -9.40039 -34 0.0996094l-136 136c-9.40039 9.2998 -9.40039 24.5 0 33.9004l22.7002 22.5996\nc9.2998 9.40039 24.5 9.40039 33.8994 0l96.4004 -96.3994l96.5 96.2998c9.2998 9.39941 24.5 9.39941 33.9004 0l22.5996 -22.6006c9.40039 -9.2998 9.40039 -24.5 0 -33.8994z\" />\n    <glyph glyph-name=\"angle-left\" unicode=\"&#xf104;\" horiz-adv-x=\"256\" \nd=\"M31.7002 209l136 136c9.39941 9.40039 24.5996 9.40039 33.8994 0l22.6006 -22.5996c9.39941 -9.40039 9.39941 -24.6006 0 -33.9004l-96.2998 -96.5l96.3994 -96.4004c9.40039 -9.39941 9.40039 -24.5996 0 -33.8994l-22.5996 -22.7002\nc-9.40039 -9.40039 -24.6006 -9.40039 -33.9004 0l-136 136c-9.5 9.40039 -9.5 24.5996 -0.0996094 34z\" />\n    <glyph glyph-name=\"angle-right\" unicode=\"&#xf105;\" horiz-adv-x=\"256\" \nd=\"M224.3 175l-136 -136c-9.39941 -9.40039 -24.5996 -9.40039 -33.8994 0l-22.6006 22.5996c-9.39941 9.40039 -9.39941 24.6006 0 33.9004l96.4004 96.4004l-96.4004 96.3994c-9.39941 9.40039 -9.39941 24.6006 0 33.9004l22.5 22.7998\nc9.40039 9.40039 24.6006 9.40039 33.9004 0l136 -136c9.5 -9.40039 9.5 -24.5996 0.0996094 -34z\" />\n    <glyph glyph-name=\"angle-up\" unicode=\"&#xf106;\" horiz-adv-x=\"320\" \nd=\"M177 288.3l136 -136c9.40039 -9.39941 9.40039 -24.5996 0 -33.8994l-22.5996 -22.6006c-9.40039 -9.39941 -24.6006 -9.39941 -33.9004 0l-96.5 96.2998l-96.4004 -96.3994c-9.39941 -9.40039 -24.5996 -9.40039 -33.8994 0l-22.7002 22.5996\nc-9.40039 9.40039 -9.40039 24.6006 0 33.9004l136 136c9.40039 9.5 24.5996 9.5 34 0.0996094z\" />\n    <glyph glyph-name=\"angle-down\" unicode=\"&#xf107;\" horiz-adv-x=\"320\" \nd=\"M143 95.7002l-136 136c-9.40039 9.39941 -9.40039 24.5996 0 33.8994l22.5996 22.6006c9.40039 9.39941 24.6006 9.39941 33.9004 0l96.4004 -96.4004l96.3994 96.4004c9.40039 9.39941 24.6006 9.39941 33.9004 0l22.5996 -22.6006\nc9.40039 -9.39941 9.40039 -24.5996 0 -33.8994l-136 -136c-9.2002 -9.40039 -24.3994 -9.40039 -33.7998 0z\" />\n    <glyph glyph-name=\"desktop\" unicode=\"&#xf108;\" horiz-adv-x=\"576\" \nd=\"M528 448c26.5 0 48 -21.5 48 -48v-320c0 -26.5 -21.5 -48 -48 -48h-192l16 -48h72c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24h-272c-13.2998 0 -24 10.7002 -24 24s10.7002 24 24 24h72l16 48h-192c-26.5 0 -48 21.5 -48 48v320c0 26.5 21.5 48 48 48h480z\nM512 96v288h-448v-288h448z\" />\n    <glyph glyph-name=\"laptop\" unicode=\"&#xf109;\" horiz-adv-x=\"640\" \nd=\"M624 32c8.7998 0 16 -7.2002 16 -16v-16c0 -35.2002 -28.7998 -64 -64 -64h-512c-35.2002 0 -64 28.7998 -64 64v16c0 8.7998 7.2002 16 16 16h239.23c-0.25 -14.5303 14.0791 -32 32.7695 -32h60.7998c18.0303 0 32 12.1904 32.7402 32h242.46zM576 400v-336h-512v336\nc0 26.4004 21.5996 48 48 48h416c26.4004 0 48 -21.5996 48 -48zM512 128v256h-384v-256h384z\" />\n    <glyph glyph-name=\"tablet\" unicode=\"&#xf10a;\" horiz-adv-x=\"448\" \nd=\"M400 448c26.5 0 48 -21.5 48 -48v-416c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48h352zM224 -32c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32z\" />\n    <glyph glyph-name=\"mobile\" unicode=\"&#xf10b;\" horiz-adv-x=\"320\" \nd=\"M272 448c26.5 0 48 -21.5 48 -48v-416c0 -26.5 -21.5 -48 -48 -48h-224c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48h224zM160 -32c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32z\" />\n    <glyph glyph-name=\"quote-left\" unicode=\"&#xf10d;\" \nd=\"M464 192c26.5 0 48 -21.5 48 -48v-128c0 -26.5 -21.5 -48 -48 -48h-128c-26.5 0 -48 21.5 -48 48v240c0 88.4004 71.5996 160 160 160h8c13.2998 0 24 -10.7002 24 -24v-48c0 -13.2998 -10.7002 -24 -24 -24h-8c-35.2998 0 -64 -28.7002 -64 -64v-64h80zM176 192\nc26.5 0 48 -21.5 48 -48v-128c0 -26.5 -21.5 -48 -48 -48h-128c-26.5 0 -48 21.5 -48 48v240c0 88.4004 71.5996 160 160 160h8c13.2998 0 24 -10.7002 24 -24v-48c0 -13.2998 -10.7002 -24 -24 -24h-8c-35.2998 0 -64 -28.7002 -64 -64v-64h80z\" />\n    <glyph glyph-name=\"quote-right\" unicode=\"&#xf10e;\" \nd=\"M464 416c26.5 0 48 -21.5 48 -48v-240c0 -88.4004 -71.5996 -160 -160 -160h-8c-13.2998 0 -24 10.7002 -24 24v48c0 13.2998 10.7002 24 24 24h8c35.2998 0 64 28.7002 64 64v64h-80c-26.5 0 -48 21.5 -48 48v128c0 26.5 21.5 48 48 48h128zM176 416\nc26.5 0 48 -21.5 48 -48v-240c0 -88.4004 -71.5996 -160 -160 -160h-8c-13.2998 0 -24 10.7002 -24 24v48c0 13.2998 10.7002 24 24 24h8c35.2998 0 64 28.7002 64 64v64h-80c-26.5 0 -48 21.5 -48 48v128c0 26.5 21.5 48 48 48h128z\" />\n    <glyph glyph-name=\"spinner\" unicode=\"&#xf110;\" \nd=\"M304 400c0 -26.5098 -21.4902 -48 -48 -48s-48 21.4902 -48 48s21.4902 48 48 48s48 -21.4902 48 -48zM256 32c26.5098 0 48 -21.4902 48 -48s-21.4902 -48 -48 -48s-48 21.4902 -48 48s21.4902 48 48 48zM464 240c26.5098 0 48 -21.4902 48 -48s-21.4902 -48 -48 -48\ns-48 21.4902 -48 48s21.4902 48 48 48zM96 192c0 -26.5098 -21.4902 -48 -48 -48s-48 21.4902 -48 48s21.4902 48 48 48s48 -21.4902 48 -48zM108.922 92.9219c26.5088 0 48 -21.4912 48 -48c0 -26.5098 -21.4902 -48 -48 -48s-48 21.4902 -48 48s21.4902 48 48 48z\nM403.078 92.9219c26.5098 0 48 -21.4912 48 -48c0 -26.5098 -21.4902 -48 -48 -48s-48 21.4902 -48 48s21.4902 48 48 48zM108.922 387.078c26.5088 0 48 -21.4902 48 -48s-21.4902 -48 -48 -48s-48 21.4902 -48 48s21.4902 48 48 48z\" />\n    <glyph glyph-name=\"circle\" unicode=\"&#xf111;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248z\" />\n    <glyph glyph-name=\"smile\" unicode=\"&#xf118;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM328 272c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32s32 14.2998 32 32s-14.2998 32 -32 32zM168 272c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32\ns32 14.2998 32 32s-14.2998 32 -32 32zM362.8 101.8c13.5 16.2998 -11.2002 36.7002 -24.5996 20.5c-22.4004 -26.7998 -55.2002 -42.2002 -90.2002 -42.2002s-67.7998 15.3008 -90.2002 42.2002c-13.5996 16.2002 -38.2002 -4.2002 -24.5996 -20.5\nc28.5 -34.2002 70.2998 -53.7998 114.8 -53.7998s86.2998 19.5996 114.8 53.7998z\" />\n    <glyph glyph-name=\"frown\" unicode=\"&#xf119;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM328 272c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32s32 14.2998 32 32s-14.2998 32 -32 32zM168 272c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32\ns32 14.2998 32 32s-14.2998 32 -32 32zM338.2 53.7998c13.5 -16.2998 38.0996 4.2002 24.5 20.4004c-28.4004 34.2002 -70.2998 53.7998 -114.7 53.7998s-86.2998 -19.5996 -114.8 -53.7002c-13.5 -16.2998 11.0996 -36.7998 24.5996 -20.5\nc22.4004 26.7998 55.2998 42.2002 90.2002 42.2002s67.7998 -15.4004 90.2002 -42.2002z\" />\n    <glyph glyph-name=\"meh\" unicode=\"&#xf11a;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM168 272c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32s32 14.2998 32 32s-14.2998 32 -32 32zM344 80c21.2002 0 21.2002 32 0 32h-192c-21.2002 0 -21.2002 -32 0 -32\nh192zM328 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32z\" />\n    <glyph glyph-name=\"gamepad\" unicode=\"&#xf11b;\" horiz-adv-x=\"640\" \nd=\"M480 352c88.4004 0 159.9 -71.5996 159.9 -160s-71.6006 -160 -160 -160c-44.7002 0 -85.2002 18.4004 -114.2 48h-91.5c-29 -29.5996 -69.4004 -48 -114.2 -48c-88.4004 0 -160 71.5996 -160 160s71.5996 160 160 160h320zM256 172v40c0 6.59961 -5.40039 12 -12 12h-52\nv52c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-52h-52c-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h52v-52c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12v52h52c6.59961 0 12 5.40039 12 12zM440 104\nc26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48zM520 184c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48z\" />\n    <glyph glyph-name=\"keyboard\" unicode=\"&#xf11c;\" horiz-adv-x=\"576\" \nd=\"M528 0h-480c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h480c26.5098 0 48 -21.4902 48 -48v-288c0 -26.5098 -21.4902 -48 -48 -48zM128 268v40c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40\nc0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM224 268v40c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM320 268v40c0 6.62695 -5.37305 12 -12 12h-40\nc-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM416 268v40c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM512 268v40\nc0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM176 172v40c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40\nc6.62695 0 12 5.37305 12 12zM272 172v40c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM368 172v40c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40\nc0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM464 172v40c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM128 76v40c0 6.62695 -5.37305 12 -12 12h-40\nc-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM416 76v40c0 6.62695 -5.37305 12 -12 12h-232c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h232c6.62695 0 12 5.37305 12 12zM512 76v40\nc0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12z\" />\n    <glyph glyph-name=\"flag-checkered\" unicode=\"&#xf11e;\" \nd=\"M243.2 258.1c24.2002 -6.69922 47.5996 -16.3994 73.5996 -22.1992v-68.2002c-24.2998 6.7002 -47.5 16.3994 -73.5996 22.2998v68.0996zM466.5 381.1c21.2002 9.80078 45.5 -5.69922 45.4004 -29v-243.1c0 -10.5996 -5.10059 -20.4004 -13.8008 -26.4004\nc-35.7998 -24.5996 -74.2998 -40.8994 -122.5 -40.8994c-67.3994 0 -111.6 34.7998 -165.199 34.7998c-50.8008 0 -86.1006 -10 -114.4 -22.0996v-94.4004c0 -13.2998 -10.7002 -24 -24 -24h-16c-13.2998 0 -24 10.7002 -24 24v386.1c-14.5 10.1006 -24 26.9004 -24 45.9004\nc0 31.7002 26.2998 57.2998 58.2998 56c28.5 -1.2002 51.7998 -24 53.6006 -52.4004c0.5 -8.39941 -0.800781 -16.2998 -3.60059 -23.5996c20.7002 7.59961 43 12 68 12c67.4004 0 111.7 -34.7998 165.2 -34.7998c40.5 0 82.7002 16 117 31.8994zM169.6 122.5v71.2998\nc-26.0996 -2.39941 -47.3994 -8.09961 -73.5996 -17.3994v-70.5c23.5996 8.39941 47.7998 13.8994 73.5996 16.5996zM464 257v70.5c-21.2998 -8.90039 -46.5996 -17.7002 -73.5996 -22.5v-71.9004c-26 -4.19922 -49.9004 -2.59961 -73.6006 2.7002v68.4004\nc-26.3994 4.59961 -49.8994 13.8994 -73.5996 21.2998v-67.4004c-25.2002 7 -46.6006 9.40039 -73.6006 5.7002v71.6006c-23.5 -2.2002 -40.3994 -9.80078 -73.5996 -22v-70.5c29 10.6992 51.2002 17.7998 73.5996 20.8994v-70c32.8008 3 53.9004 0.600586 73.6006 -3.7998\nv-68.5c26.2998 -4.59961 49.7002 -13.9004 73.5996 -21.2998v67.3994c25.7002 -7.09961 46.6006 -9.2998 73.6006 -5.59961v-71.5996c25.0996 2.39941 48.5 11 73.5996 27.0996v70.5c-22.2002 -14.2002 -48.7998 -22.5996 -73.5996 -26v71.0996\nc27.2998 4.40039 50 14.1006 73.5996 23.9004z\" />\n    <glyph glyph-name=\"terminal\" unicode=\"&#xf120;\" horiz-adv-x=\"640\" \nd=\"M257.981 175.029l-194.344 -194.344c-9.37305 -9.37207 -24.5684 -9.37207 -33.9404 0l-22.668 22.667c-9.35742 9.35742 -9.375 24.5225 -0.0400391 33.9014l154.021 154.746l-154.021 154.745c-9.33496 9.37891 -9.31738 24.5439 0.0400391 33.9014l22.667 22.667\nc9.37305 9.37207 24.5684 9.37207 33.9404 0l194.344 -194.344c9.37207 -9.37207 9.37207 -24.5674 0 -33.9404zM640 -8c0 -13.2549 -10.7451 -24 -24 -24h-304c-13.2549 0 -24 10.7451 -24 24v32c0 13.2549 10.7451 24 24 24h304c13.2549 0 24 -10.7451 24 -24v-32z\" />\n    <glyph glyph-name=\"code\" unicode=\"&#xf121;\" horiz-adv-x=\"640\" \nd=\"M278.9 -63.5l-61 17.7002c-6.40039 1.7998 -10 8.5 -8.2002 14.8994l136.5 470.2c1.7998 6.40039 8.5 10 14.8994 8.2002l61 -17.7002c6.40039 -1.7998 10 -8.5 8.2002 -14.8994l-136.5 -470.2c-1.89941 -6.40039 -8.5 -10.1006 -14.8994 -8.2002zM164.9 48.7002\nc-4.5 -4.90039 -12.1006 -5.10059 -17 -0.5l-144.101 135.1c-5.09961 4.7002 -5.09961 12.7998 0 17.5l144.101 135c4.89941 4.60059 12.5 4.2998 17 -0.5l43.5 -46.3994c4.69922 -4.90039 4.2998 -12.7002 -0.800781 -17.2002l-90.5996 -79.7002l90.5996 -79.7002\nc5.10059 -4.5 5.40039 -12.2998 0.800781 -17.2002zM492.1 48.0996c-4.89941 -4.5 -12.5 -4.2998 -17 0.600586l-43.5 46.3994c-4.69922 4.90039 -4.2998 12.7002 0.800781 17.2002l90.5996 79.7002l-90.5996 79.7998c-5.10059 4.5 -5.40039 12.2998 -0.800781 17.2002\nl43.5 46.4004c4.60059 4.7998 12.2002 5 17 0.5l144.101 -135.2c5.09961 -4.7002 5.09961 -12.7998 0 -17.5z\" />\n    <glyph glyph-name=\"reply-all\" unicode=\"&#xf122;\" horiz-adv-x=\"576\" \nd=\"M136.309 258.164l176.005 151.985c15.4062 13.3047 39.6865 2.50293 39.6865 -18.1641v-82.7637c129.182 -10.2305 224 -52.2119 224 -183.548c0 -61.4404 -39.582 -122.309 -83.333 -154.132c-13.6533 -9.93066 -33.1113 2.5332 -28.0771 18.6309\nc38.5117 123.162 -3.92188 169.482 -112.59 182.016v-84.1758c0 -20.7012 -24.2998 -31.4531 -39.6865 -18.1641l-176.005 151.987c-11.0703 9.56152 -11.0859 26.7529 0 36.3281zM8.30859 221.836c-11.0703 9.56152 -11.0859 26.7529 0 36.3281l176.005 151.985\nc15.4062 13.3047 39.6865 2.50293 39.6865 -18.1641v-15.8174l-108.607 -93.7861c-10.7041 -9.23926 -19.3926 -28.2158 -19.3926 -42.3564v-0.0234375v-0.0244141c0 -14.1416 8.68848 -33.1191 19.3936 -42.3604l108.606 -93.7852v-15.8184\nc0 -20.7002 -24.2998 -31.4531 -39.6865 -18.1641z\" />\n    <glyph glyph-name=\"location-arrow\" unicode=\"&#xf124;\" \nd=\"M444.52 444.48c38.3809 16 79.9609 -25.5801 63.9707 -63.9707l-191.9 -415.779c-22.3896 -47.9805 -92.75 -31.9805 -92.75 19.1895v175.91h-175.91c-51.1699 0 -67.1602 70.3604 -19.1895 92.75z\" />\n    <glyph glyph-name=\"crop\" unicode=\"&#xf125;\" \nd=\"M488 96c13.25 0 24 -10.7402 24 -24v-48c0 -13.25 -10.75 -24 -24 -24h-40v-40c0 -13.25 -10.75 -24 -24 -24h-48c-13.25 0 -24 10.75 -24 24v282.75l-146.75 -146.75h114.75v-96h-232c-13.25 0 -24 10.75 -24 24v264h-40c-13.25 0 -24 10.75 -24 24v48\nc0 13.2598 10.75 24 24 24h40v40c0 13.2598 10.75 24 24 24h48c13.25 0 24 -10.7402 24 -24v-282.75l146.75 146.75h-114.75v96h210.75l59.3096 59.3096c6.25 6.25 16.3809 6.25 22.6309 0l22.6191 -22.6191c6.25 -6.25 6.25 -16.3809 0 -22.6309l-59.3096 -59.3096v-242.75\nh40z\" />\n    <glyph glyph-name=\"code-branch\" unicode=\"&#xf126;\" horiz-adv-x=\"384\" \nd=\"M384 304c0 -35.2002 -22.7998 -65.0996 -54.4004 -75.9004c-0.5 -28.0996 -7.59961 -50.5 -21.5996 -67.8994c-28.2002 -35 -76 -39.5 -118.2 -43.4004c-25.7002 -2.39941 -49.8994 -4.59961 -66.0996 -12.7998c-7.10059 -3.59961 -11.7998 -8.2002 -14.9004 -13.4004\nc30 -11.5 51.2002 -40.5996 51.2002 -74.5996c0 -44.2002 -35.7998 -80 -80 -80s-80 35.7998 -80 80c0 35.7998 23.5 66.0996 56 76.4004v199.3c-32.5 10.2002 -56 40.5 -56 76.2998c0 44.2002 35.7998 80 80 80s80 -35.7998 80 -80c0 -35.7998 -23.5 -66.0996 -56 -76.2998\nv-144c23.9004 11.5 53.0996 14.2998 81.2998 16.8994c35.9004 3.30078 69.7998 6.5 85.2002 25.7002c6.7998 8.40039 10.4004 20.7998 11 36.9004c-33.2002 9.7002 -57.5 40.3994 -57.5 76.7998c0 44.2002 35.7998 80 80 80s80 -35.7998 80 -80zM80 384\nc-8.7998 0 -16 -7.2002 -16 -16s7.2002 -16 16 -16s16 7.2002 16 16s-7.2002 16 -16 16zM80 0c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM304 320c-8.7998 0 -16 -7.2002 -16 -16s7.2002 -16 16 -16s16 7.2002 16 16\ns-7.2002 16 -16 16z\" />\n    <glyph glyph-name=\"unlink\" unicode=\"&#xf127;\" \nd=\"M304.083 42.0928c4.68555 -4.68555 4.68555 -12.2842 0 -16.9707l-44.6738 -44.6738c-59.2627 -59.2627 -155.693 -59.2666 -214.961 0c-59.2646 59.2646 -59.2646 155.695 0 214.96l44.6748 44.6748c4.68555 4.68555 12.2842 4.68555 16.9707 0l39.5986 -39.5977\nc4.68555 -4.68652 4.68555 -12.2842 0 -16.9717l-44.6758 -44.6738c-28.0713 -28.0732 -28.0713 -73.75 0 -101.823c28.0723 -28.0713 73.75 -28.0723 101.824 0l44.6738 44.6748c4.68652 4.68555 12.2842 4.68555 16.9717 0zM247.515 302.309l-39.5967 39.5986\nc-4.68555 4.68652 -4.68555 12.2852 0 16.9707l44.6738 44.6738c59.2666 59.2646 155.695 59.2646 214.961 0s59.2656 -155.694 0 -214.96l-44.6748 -44.6748c-4.68652 -4.68555 -12.2852 -4.68555 -16.9707 0l-39.5986 39.5977c-4.68555 4.6875 -4.68555 12.2852 0 16.9717\nl44.6758 44.6738c28.0713 28.0732 28.0713 73.75 0 101.823c-28.0742 28.0723 -73.752 28.0742 -101.824 0l-44.6738 -44.6748c-4.6875 -4.68555 -12.2852 -4.68555 -16.9717 0zM482.343 -56.9707c-9.37207 -9.37207 -24.5674 -9.37207 -33.9404 0l-441.373 441.373\nc-9.37305 9.37207 -9.37305 24.5674 0 33.9404l22.6279 22.6279c9.37207 9.37305 24.5674 9.37305 33.9404 0l441.372 -441.374c9.37305 -9.37207 9.37305 -24.5674 0 -33.9404z\" />\n    <glyph glyph-name=\"question\" unicode=\"&#xf128;\" horiz-adv-x=\"384\" \nd=\"M202.021 448c84.8809 0 175.482 -66.2559 175.481 -153.6c0 -115.982 -125.268 -117.768 -125.268 -160.627v-5.77344c0 -13.2549 -10.7451 -24 -24 -24h-72.4717c-13.2549 0 -24 10.7451 -24 24v9.78809c0 61.8291 46.876 86.5449 82.2998 106.405\nc30.376 17.0293 48.9922 28.6113 48.9922 51.1641c0 29.832 -38.0518 49.6309 -68.8154 49.6309c-39.127 0 -57.708 -18.0684 -82.7568 -49.4492c-8.12109 -10.1738 -22.8809 -12.0127 -33.2529 -4.14844l-43.1387 32.709c-10.2705 7.78809 -12.541 22.2939 -5.17773 32.874\nc40.5889 58.3232 92.2881 91.0264 172.107 91.0264zM192 74.541c38.1963 0 69.2715 -31.0742 69.2715 -69.2695c0 -38.1963 -31.0752 -69.2715 -69.2715 -69.2715s-69.2715 31.0752 -69.2715 69.2695c0 38.1963 31.0752 69.2715 69.2715 69.2715z\" />\n    <glyph glyph-name=\"info\" unicode=\"&#xf129;\" horiz-adv-x=\"192\" \nd=\"M20 23.7715h20v144.457h-20c-11.0459 0 -20 8.9541 -20 20v47.7715c0 11.0459 8.9541 20 20 20h112c11.0459 0 20 -8.9541 20 -20v-212.229h20c11.0459 0 20 -8.9541 20 -20v-47.7715c0 -11.0459 -8.9541 -20 -20 -20h-152c-11.0459 0 -20 8.9541 -20 20v47.7715\nc0 11.0459 8.9541 20 20 20zM96 448c39.7637 0 72 -32.2354 72 -72s-32.2354 -72 -72 -72s-72 32.2354 -72 72s32.2354 72 72 72z\" />\n    <glyph glyph-name=\"exclamation\" unicode=\"&#xf12a;\" horiz-adv-x=\"192\" \nd=\"M176 16c0 -44.1123 -35.8877 -80 -80 -80s-80 35.8877 -80 80s35.8877 80 80 80s80 -35.8877 80 -80zM25.2598 422.801c-0.68457 13.709 10.2441 25.1992 23.9707 25.1992h93.5391c13.7266 0 24.6553 -11.4902 23.9707 -25.1992l-13.6006 -272\nc-0.638672 -12.7725 -11.1807 -22.8008 -23.9697 -22.8008h-66.3398c-12.7891 0 -23.3311 10.0283 -23.9697 22.8008z\" />\n    <glyph glyph-name=\"superscript\" unicode=\"&#xf12b;\" \nd=\"M496 288c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-96c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h16v96h-16c-8.82422 0.0078125 -15.9863 7.17578 -15.9863 16c0 2.08984 0.759766 5.30176 1.69629 7.16992l16 32\nc2.44141 4.87012 8.84277 8.8252 14.29 8.83008h48c8.83203 0 16 -7.16797 16 -16v-144h16zM336 384c8.83203 0 16 -7.16797 16 -16v-48c0 -8.83203 -7.16797 -16 -16 -16h-33.4805l-77.8096 -112l77.8096 -112h33.4805c8.83203 0 16 -7.16797 16 -16v-48\nc0 -8.83203 -7.16797 -16 -16 -16h-67c-4.58984 0.0224609 -10.4404 3.10059 -13.0596 6.87012l-79.9004 115l-79.9004 -115c-2.63477 -3.79199 -8.52148 -6.87012 -13.1387 -6.87012h-0.000976562h-67c-8.83203 0 -16 7.16797 -16 16v48c0 8.83203 7.16797 16 16 16\nh33.4805l77.8096 112l-77.8096 112h-33.4805c-8.83203 0 -16 7.16797 -16 16v48c0 8.83203 7.16797 16 16 16h67c4.58984 -0.0224609 10.4404 -3.10059 13.0596 -6.87012l79.9004 -115l79.9004 115c2.63477 3.79199 8.52148 6.87012 13.1387 6.87012h0.000976562h67z\" />\n    <glyph glyph-name=\"subscript\" unicode=\"&#xf12c;\" \nd=\"M496 0c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-96c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h16v96h-16c-8.82422 0.0078125 -15.9863 7.17578 -15.9863 16c0 2.08984 0.759766 5.30176 1.69629 7.16992l16 32\nc2.44141 4.87012 8.84277 8.8252 14.29 8.83008h48c8.83203 0 16 -7.16797 16 -16v-144h16zM336 384c8.83203 0 16 -7.16797 16 -16v-48c0 -8.83203 -7.16797 -16 -16 -16h-33.4805l-77.8096 -112l77.8096 -112h33.4805c8.83203 0 16 -7.16797 16 -16v-48\nc0 -8.83203 -7.16797 -16 -16 -16h-67c-4.58984 0.0224609 -10.4404 3.10059 -13.0596 6.87012l-79.9004 115l-79.9004 -115c-2.63477 -3.79199 -8.52148 -6.87012 -13.1387 -6.87012h-0.000976562h-67c-8.83203 0 -16 7.16797 -16 16v48c0 8.83203 7.16797 16 16 16\nh33.4805l77.8096 112l-77.8096 112h-33.4805c-8.83203 0 -16 7.16797 -16 16v48c0 8.83203 7.16797 16 16 16h67c4.58984 -0.0224609 10.4404 -3.10059 13.0596 -6.87012l79.9004 -115l79.9004 115c2.63477 3.79199 8.52148 6.87012 13.1387 6.87012h0.000976562h67z\" />\n    <glyph glyph-name=\"eraser\" unicode=\"&#xf12d;\" \nd=\"M497.941 174.059l-142.059 -142.059h144.117c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-356c-10.9756 0 -26.1816 6.29883 -33.9424 14.0586l-96 96c-18.7441 18.7451 -18.7441 49.1377 0 67.8828l256 256\nc18.7471 18.7451 49.1387 18.7441 67.8838 0l160 -160c18.7441 -18.7451 18.7441 -49.1377 0 -67.8828zM195.314 236.686l-124.687 -124.686l80 -80h114.745l67.3135 67.3135z\" />\n    <glyph glyph-name=\"puzzle-piece\" unicode=\"&#xf12e;\" horiz-adv-x=\"576\" \nd=\"M519.442 159.349c37.5957 0 56.5576 -31.5928 56.5576 -65.792c0 -33.5469 -19.2881 -61.5566 -54.9229 -61.5557c-39.8848 0 -50.3457 36.1523 -86.3086 36.1523c-60.5518 0 -25.8262 -120.102 -25.8262 -120.102c-51.5557 0 -181.23 -35.0732 -181.23 25.7305\nc0 35.8271 36.2881 46.25 36.2881 85.9844c0 35.501 -28.1152 54.7178 -61.7881 54.7178c-34.3271 0 -63.5771 -18.8906 -63.5771 -56.3467c0 -41.3633 40 -58.998 40 -81.4707c0 -69.709 -178.635 -28.6621 -178.635 -28.6621v333.237s175.885 -40.9609 175.884 28.6621\nc0 22.4727 -31.7109 40.3857 -31.7109 81.75c0 37.4551 31.7119 56.3457 66.3662 56.3457c33.3457 0 61.4609 -19.2158 61.4609 -54.7178c0 -39.7354 -36.2881 -50.1582 -36.2881 -85.9854c0 -83.2969 196.288 -3.29688 196.288 -3.29688\ns-54.5908 -176.244 5.38379 -176.244c22.5586 0 40.5391 31.5928 82.0586 31.5928z\" />\n    <glyph glyph-name=\"microphone\" unicode=\"&#xf130;\" horiz-adv-x=\"352\" \nd=\"M176 96c-53.0195 0 -96 42.9805 -96 96v160c0 53.0195 42.9805 96 96 96s96 -42.9805 96 -96v-160c0 -53.0195 -42.9805 -96 -96 -96zM336 256c8.83984 0 16 -7.16016 16 -16v-48c0 -88.9004 -66.29 -162.47 -152 -174.23v-33.7695h56c8.83984 0 16 -7.16016 16 -16v-16\nc0 -8.83984 -7.16016 -16 -16 -16h-160c-8.83984 0 -16 7.16016 -16 16v16c0 8.83984 7.16016 16 16 16h56v34.1504c-88.0303 12.1396 -152 92.0498 -152 181.689v40.1602c0 8.83984 7.16016 16 16 16h16c8.83984 0 16 -7.16016 16 -16v-42.2998\nc0 -66.8105 48.71 -126.59 115.21 -133.08c76.2998 -7.44043 140.79 52.5801 140.79 127.38v48c0 8.83984 7.16016 16 16 16h16z\" />\n    <glyph glyph-name=\"microphone-slash\" unicode=\"&#xf131;\" horiz-adv-x=\"640\" \nd=\"M633.82 -10.0996c6.97949 -5.43066 8.22949 -15.4805 2.81934 -22.4502l-19.6396 -25.2705c-5.42969 -6.97949 -15.4805 -8.23926 -22.46 -2.80957l-588.36 454.729c-6.97949 5.43066 -8.22949 15.4805 -2.80957 22.4502l19.6396 25.2705\nc5.41992 6.97949 15.4805 8.22949 22.46 2.80957l178.54 -137.99v45.3604c0 53.0195 42.9805 96 96 96c53.0205 0 96 -42.9805 96 -96v-160.01c0 -10.4502 -2.17969 -20.2705 -5.2793 -29.6699l26.5498 -20.5205c6.75977 15.4004 10.7197 32.2803 10.7197 50.2002v48\nc0 8.83984 7.16016 16 16 16h16c8.83984 0 16 -7.16016 16 -16v-48c0 -29.0098 -7.38965 -56.1299 -19.9805 -80.1396zM400 -16c8.83984 0 16 -7.16016 16 -16v-16c0 -8.83984 -7.16016 -16 -16 -16h-160c-8.83984 0 -16 7.16016 -16 16v16c0 8.83984 7.16016 16 16 16h56\nv34.1504c-88.0303 12.1396 -152 92.0498 -152 181.689v6.85059l52.0303 -40.2305c12.4395 -53.2197 55.3301 -96.4004 111.18 -101.85c6.94043 -0.669922 13.6396 -0.200195 20.3496 0.199219l50.1104 -38.7295c-10.8203 -3.77051 -22.0098 -6.70996 -33.6699 -8.31055\nv-33.7695h56z\" />\n    <glyph glyph-name=\"calendar\" unicode=\"&#xf133;\" horiz-adv-x=\"448\" \nd=\"M12 256h424c6.59961 0 12 -5.40039 12 -12v-260c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v260c0 6.59961 5.40039 12 12 12zM448 300c0 -6.59961 -5.40039 -12 -12 -12h-424c-6.59961 0 -12 5.40039 -12 12v36c0 26.5 21.5 48 48 48h48v52\nc0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h128v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h48c26.5 0 48 -21.5 48 -48v-36z\" />\n    <glyph glyph-name=\"fire-extinguisher\" unicode=\"&#xf134;\" horiz-adv-x=\"448\" \nd=\"M434.027 421.671c7.31445 1.21875 13.9727 -4.4209 13.9727 -11.8369v-115.668c0 -7.41602 -6.6582 -13.0557 -13.9727 -11.8369l-168 28c-11.7305 1.95508 -10.0273 14.6973 -10.0273 17.6709h-40v-27.0303c41.4043 -10.6582 72 -48.2383 72 -92.9697v-248\nc0 -13.2549 -10.7451 -24 -24 -24h-144c-13.2549 0 -24 10.7451 -24 24v246.795c0 44.8945 30.457 83.2666 72 94.1289v27.0762c-61.0361 0 -92.9424 7.00977 -121.711 -64.9141c-4.91699 -12.2949 -18.8789 -18.2959 -31.1963 -13.3701\nc-12.3066 4.92285 -18.293 18.8906 -13.3701 31.1973c14.668 36.6709 38.0107 77.833 90.0498 90.8838c-14.1406 36.5273 12.793 76.2031 52.2275 76.2031c37.4463 0 64.3525 -36.1084 53.668 -72h58.332c0 4.2002 -1.30664 15.7822 10.0273 17.6709zM144 376\nc8.82227 0 16 7.17773 16 16s-7.17773 16 -16 16s-16 -7.17773 -16 -16s7.17773 -16 16 -16z\" />\n    <glyph glyph-name=\"rocket\" unicode=\"&#xf135;\" \nd=\"M505.05 428.9c6.9502 -32.2002 6.9502 -57.4004 6.85059 -82.6006c0 -102.689 -55.4102 -164.79 -128 -211.09v-104.41v-0.0400391c0 -16.3516 -11.8721 -35.5527 -26.5 -42.8594l-98.7002 -49.3906c-2.79004 -1.38965 -7.58398 -2.5166 -10.7002 -2.5166\nc-13.248 0 -24 10.752 -24 24v0.00683594v103.84l-22.4697 -22.4697c-5.17383 -5.1748 -15.3125 -9.375 -22.6299 -9.375c-7.31836 0 -17.4561 4.2002 -22.6309 9.375l-50.8994 50.9102c-5.17285 5.17285 -9.37012 15.3096 -9.37012 22.625s4.19727 17.4512 9.37012 22.625\nl22.4697 22.4697h-103.77h-0.0126953c-13.248 0 -24 10.752 -24 24c0 3.12012 1.12988 7.91797 2.52246 10.71l49.4199 98.7998c7.32324 14.6094 26.5283 26.4766 42.8701 26.4902h104.2c46.1895 72.7998 108.09 128 211.29 128c25.0996 0 50.29 0 82.4893 -6.90039\nc5.54395 -1.19043 11.0098 -6.65527 12.2002 -12.1992zM384 280c22.0801 0 40 17.9199 40 40s-17.9199 40 -40 40s-40 -17.9199 -40 -40s17.9199 -40 40 -40z\" />\n    <glyph glyph-name=\"chevron-circle-left\" unicode=\"&#xf137;\" \nd=\"M256 -56c-137 0 -248 111 -248 248s111 248 248 248s248 -111 248 -248s-111 -248 -248 -248zM142.1 175l135.5 -135.5c9.40039 -9.40039 24.6006 -9.40039 33.9004 0l17 17c9.40039 9.40039 9.40039 24.5996 0 33.9004l-101.6 101.6l101.6 101.6\nc9.40039 9.40039 9.40039 24.6006 0 33.9004l-17 17c-9.40039 9.40039 -24.5996 9.40039 -33.9004 0l-135.5 -135.5c-9.39941 -9.40039 -9.39941 -24.5996 0 -34z\" />\n    <glyph glyph-name=\"chevron-circle-right\" unicode=\"&#xf138;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM369.9 209l-135.5 135.5c-9.40039 9.40039 -24.6006 9.40039 -33.9004 0l-17 -17c-9.40039 -9.40039 -9.40039 -24.5996 0 -33.9004l101.6 -101.6l-101.6 -101.6\nc-9.40039 -9.40039 -9.40039 -24.6006 0 -33.9004l17 -17c9.40039 -9.40039 24.5996 -9.40039 33.9004 0l135.5 135.5c9.39941 9.40039 9.39941 24.5996 0 34z\" />\n    <glyph glyph-name=\"chevron-circle-up\" unicode=\"&#xf139;\" \nd=\"M8 192c0 137 111 248 248 248s248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248zM239 305.9l-135.5 -135.5c-9.40039 -9.40039 -9.40039 -24.6006 0 -33.9004l17 -17c9.40039 -9.40039 24.5996 -9.40039 33.9004 0l101.6 101.6l101.6 -101.6\nc9.40039 -9.40039 24.6006 -9.40039 33.9004 0l17 17c9.40039 9.40039 9.40039 24.5996 0 33.9004l-135.5 135.5c-9.40039 9.39941 -24.5996 9.39941 -34 0z\" />\n    <glyph glyph-name=\"chevron-circle-down\" unicode=\"&#xf13a;\" \nd=\"M504 192c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248s248 -111 248 -248zM273 78.0996l135.5 135.5c9.40039 9.40039 9.40039 24.6006 0 33.9004l-17 17c-9.40039 9.40039 -24.5996 9.40039 -33.9004 0l-101.6 -101.6l-101.6 101.6\nc-9.40039 9.40039 -24.6006 9.40039 -33.9004 0l-17 -17c-9.40039 -9.40039 -9.40039 -24.5996 0 -33.9004l135.5 -135.5c9.40039 -9.39941 24.5996 -9.39941 34 0z\" />\n    <glyph glyph-name=\"anchor\" unicode=\"&#xf13d;\" horiz-adv-x=\"576\" \nd=\"M12.9707 96c-10.6904 0 -16.0449 12.9258 -8.48535 20.4854l67.0283 67.0283c4.6875 4.68652 12.2852 4.68652 16.9717 0l67.0283 -67.0283c7.56055 -7.55957 2.20605 -20.4854 -8.48438 -20.4854h-35.1465c20.2969 -54.3359 85.1816 -86.6162 144.117 -94.0146v190.015\nh-52c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h52v5.46973c-37.2842 13.1807 -64 48.7324 -64 90.5303c0 53.4746 43.7227 96.7393 97.3701 95.9902c52.2354 -0.728516 94.6348 -43.7627 94.6289 -96.002\nc-0.00488281 -41.793 -26.7188 -77.3398 -64 -90.5186v-5.46973h52c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-52v-190.015c59.1543 7.42676 123.827 39.6973 144.117 94.0146h-35.1465c-10.6904 0 -16.0449 12.9248 -8.48438 20.4854\nl67.0283 67.0283c4.6875 4.68652 12.2852 4.68652 16.9717 0l67.0283 -67.0283c7.56055 -7.55957 2.20605 -20.4854 -8.48438 -20.4854h-32.3945c-21.7822 -102.62 -136.406 -160 -242.635 -160c-106.056 0 -220.828 57.2646 -242.635 160h-32.3945zM288 384\nc-17.6445 0 -32 -14.3555 -32 -32s14.3555 -32 32 -32s32 14.3555 32 32s-14.3555 32 -32 32z\" />\n    <glyph glyph-name=\"unlock-alt\" unicode=\"&#xf13e;\" horiz-adv-x=\"448\" \nd=\"M400 192c26.5 0 48 -21.5 48 -48v-160c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v160c0 26.5 21.5 48 48 48h24v102.5c0 84 67.5 153.2 151.5 153.5s152.5 -68 152.5 -152v-16c0 -13.2998 -10.7002 -24 -24 -24h-32c-13.2998 0 -24 10.7002 -24 24v16\nc0 39.9004 -32.7002 72.4004 -72.7002 72c-39.5996 -0.400391 -71.2998 -33.2998 -71.2998 -72.9004v-103.1h248zM264 40v48c0 22.0996 -17.9004 40 -40 40s-40 -17.9004 -40 -40v-48c0 -22.0996 17.9004 -40 40 -40s40 17.9004 40 40z\" />\n    <glyph glyph-name=\"bullseye\" unicode=\"&#xf140;\" horiz-adv-x=\"496\" \nd=\"M248 440c136.97 0 248 -111.03 248 -248s-111.03 -248 -248 -248s-248 111.03 -248 248s111.03 248 248 248zM248 8c101.71 0 184 82.3096 184 184c0 101.71 -82.3096 184 -184 184c-101.71 0 -184 -82.3096 -184 -184c0 -101.71 82.3096 -184 184 -184zM248 320\nc70.6904 0 128 -57.3096 128 -128s-57.3096 -128 -128 -128s-128 57.3096 -128 128s57.3096 128 128 128zM248 128c35.29 0 64 28.71 64 64s-28.71 64 -64 64s-64 -28.71 -64 -64s28.71 -64 64 -64z\" />\n    <glyph glyph-name=\"ellipsis-h\" unicode=\"&#xf141;\" \nd=\"M328 192c0 -39.7998 -32.2002 -72 -72 -72s-72 32.2002 -72 72s32.2002 72 72 72s72 -32.2002 72 -72zM432 264c39.7998 0 72 -32.2002 72 -72s-32.2002 -72 -72 -72s-72 32.2002 -72 72s32.2002 72 72 72zM80 264c39.7998 0 72 -32.2002 72 -72s-32.2002 -72 -72 -72\ns-72 32.2002 -72 72s32.2002 72 72 72z\" />\n    <glyph glyph-name=\"ellipsis-v\" unicode=\"&#xf142;\" horiz-adv-x=\"192\" \nd=\"M96 264c39.7998 0 72 -32.2002 72 -72s-32.2002 -72 -72 -72s-72 32.2002 -72 72s32.2002 72 72 72zM24 368c0 39.7998 32.2002 72 72 72s72 -32.2002 72 -72s-32.2002 -72 -72 -72s-72 32.2002 -72 72zM24 16c0 39.7998 32.2002 72 72 72s72 -32.2002 72 -72\ns-32.2002 -72 -72 -72s-72 32.2002 -72 72z\" />\n    <glyph glyph-name=\"rss-square\" unicode=\"&#xf143;\" horiz-adv-x=\"448\" \nd=\"M400 416c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h352zM112 32c26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48s-48 -21.4902 -48 -48s21.4902 -48 48 -48zM269.533 32\nc6.53516 0 11.7764 5.46777 11.4248 11.9941c-5.9668 110.428 -94.418 198.99 -204.964 204.964c-6.52637 0.351562 -11.9941 -4.88965 -11.9941 -11.4248v-34.335c0 -6.00977 4.63574 -11.0508 10.6328 -11.4414c79.8799 -5.20312 143.909 -69.0732 149.123 -149.123\nc0.391602 -5.99805 5.43066 -10.6338 11.4424 -10.6338h34.335zM372.56 32c6.4541 0 11.6641 5.33789 11.4326 11.7871c-5.99512 167.014 -140.375 302.18 -308.205 308.205c-6.44922 0.231445 -11.7871 -4.97852 -11.7871 -11.4326v-34.334\nc0 -6.16016 4.88184 -11.1748 11.0391 -11.4277c136.556 -5.59863 246.162 -115.225 251.76 -251.76c0.251953 -6.15625 5.2666 -11.0381 11.4268 -11.0381h34.334z\" />\n    <glyph glyph-name=\"play-circle\" unicode=\"&#xf144;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM371.7 168c16.3994 9.09961 16.3994 32.7998 0 42l-176 107c-15.9004 8.7998 -35.7002 -2.59961 -35.7002 -21v-208c0 -18.5 19.9004 -29.7998 35.7002 -21z\" />\n    <glyph glyph-name=\"minus-square\" unicode=\"&#xf146;\" horiz-adv-x=\"448\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM92 152h264c6.59961 0 12 5.40039 12 12v56c0 6.59961 -5.40039 12 -12 12h-264c-6.59961 0 -12 -5.40039 -12 -12v-56\nc0 -6.59961 5.40039 -12 12 -12z\" />\n    <glyph glyph-name=\"check-square\" unicode=\"&#xf14a;\" horiz-adv-x=\"448\" \nd=\"M400 -32h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h352c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48zM195.314 66.0586l184 184c6.24707 6.24805 6.24707 16.3799 0 22.627l-22.6279 22.6279\nc-6.24707 6.24707 -16.3789 6.24805 -22.6279 0l-150.059 -150.059l-70.0586 70.0596c-6.24805 6.24707 -16.3799 6.24707 -22.6279 0l-22.6279 -22.6279c-6.24707 -6.24707 -6.24707 -16.3789 0 -22.627l104 -104c6.24902 -6.25 16.3799 -6.25 22.6289 -0.000976562z\" />\n    <glyph glyph-name=\"pen-square\" unicode=\"&#xf14b;\" horiz-adv-x=\"448\" \nd=\"M400 -32h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48zM238.1 270.1l-135.699 -135.699l-6.30078 -57.1006c-0.799805 -7.59961 5.60059 -14.0996 13.3008 -13.2998l57.0996 6.2998l135.7 135.7\nc2.2998 2.2998 2.2998 6.09961 0 8.5l-55.5 55.5c-2.5 2.40039 -6.2998 2.40039 -8.60059 0.0996094zM345 282.9l-30.0996 30.0996c-9.40039 9.40039 -24.6006 9.40039 -33.9004 0l-23.0996 -23.0996c-2.30078 -2.30078 -2.30078 -6.10059 0 -8.5l55.5 -55.5\nc2.2998 -2.30078 6.09961 -2.30078 8.5 0l23.0996 23.0996c9.2998 9.2998 9.2998 24.5 0 33.9004z\" />\n    <glyph glyph-name=\"share-square\" unicode=\"&#xf14d;\" horiz-adv-x=\"576\" \nd=\"M568.482 270.552l-144.004 -135.984c-15.1787 -14.335 -40.4785 -3.70703 -40.4785 17.4473v71.9629c-144.575 -0.969727 -205.566 -35.1123 -164.775 -171.353c4.4834 -14.9727 -12.8457 -26.5674 -25.0059 -17.3301\nc-38.9668 29.5996 -74.2188 86.2168 -74.2188 143.366c0 143.937 117.599 172.5 264 173.312v72.0156c0 21.1738 25.3174 31.7676 40.4785 17.4473l144.004 -135.987c10.0195 -9.46289 10.0273 -25.4248 0 -34.8965zM384 68.8721c0 7.34473 6.53027 12.9053 13.7998 11.8594\nc2.81152 -0.405273 7.39844 -0.734375 10.2393 -0.734375c6.80469 0 17.5342 1.8418 23.9502 4.11133c7.81348 2.76367 16.0107 -3.01465 16.0107 -11.3027v-88.8057c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48\nh121.033c12.5508 0 16.6748 -16.8301 5.54492 -22.6309c-18.7773 -9.78613 -36.0615 -22.1084 -51.0137 -37.6758c-1.95312 -2.03711 -5.82715 -3.69141 -8.64844 -3.69336h-50.916v-320h320v68.8721z\" />\n    <glyph glyph-name=\"compass\" unicode=\"&#xf14e;\" horiz-adv-x=\"496\" \nd=\"M225.38 214.63c12.4902 12.4902 32.75 12.4902 45.25 0s12.5 -32.75 0 -45.25c-12.4902 -12.5 -32.7598 -12.5 -45.25 0c-12.5 12.4902 -12.5 32.75 0 45.25zM248 440c136.97 0 248 -111.03 248 -248s-111.03 -248 -248 -248s-248 111.03 -248 248s111.03 248 248 248z\nM374.14 291.95c7.61035 16.6494 -9.54004 33.7998 -26.1895 26.2002l-144.34 -65.9707c-5.97461 -2.73047 -13.04 -9.7959 -15.7705 -15.7695l-65.9795 -144.351c-7.61035 -16.6494 9.5498 -33.8096 26.1992 -26.1992l144.341 65.9697\nc5.97363 2.73047 13.0391 9.7959 15.7695 15.7695z\" />\n    <glyph glyph-name=\"caret-square-down\" unicode=\"&#xf150;\" horiz-adv-x=\"448\" \nd=\"M448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM92.5 227.5l123 -123c4.7002 -4.7002 12.2998 -4.7002 17 0l123 123c7.59961 7.59961 2.2002 20.5 -8.5 20.5h-246\nc-10.7002 0 -16.0996 -12.9004 -8.5 -20.5z\" />\n    <glyph glyph-name=\"caret-square-up\" unicode=\"&#xf151;\" horiz-adv-x=\"448\" \nd=\"M0 16v352c0 26.5098 21.4902 48 48 48h352c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48zM355.515 156.485l-123.029 123.029c-4.68652 4.68652 -12.2842 4.68652 -16.9717 0l-123.028 -123.029\nc-7.56055 -7.56055 -2.20605 -20.4854 8.48438 -20.4854h246.06c10.6904 0 16.0449 12.9258 8.48535 20.4854z\" />\n    <glyph glyph-name=\"caret-square-right\" unicode=\"&#xf152;\" horiz-adv-x=\"448\" \nd=\"M48 416h352c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48zM188.485 60.4854l123.028 123.028c4.68652 4.68652 4.68652 12.2842 0 16.9717l-123.028 123.029\nc-7.56055 7.56055 -20.4854 2.20605 -20.4854 -8.48438v-246.06c0 -10.6904 12.9258 -16.0449 20.4854 -8.48535z\" />\n    <glyph glyph-name=\"euro-sign\" unicode=\"&#xf153;\" horiz-adv-x=\"320\" \nd=\"M310.706 34.2354l8.81836 -44.4902c1.23828 -6.24902 -2.62109 -12.3623 -8.78809 -13.957c-12.5391 -3.24414 -34.8008 -7.78809 -61.1016 -7.78809c-104.371 0 -182.496 65.3076 -207.521 155.64h-30.1143c-6.62695 0 -12 5.37305 -12 12v28.3604\nc0 6.62695 5.37305 12 12 12h21.3877c-1 12.958 -0.828125 28.6377 0.181641 42.2451h-21.5693c-6.62695 0 -12 5.37305 -12 12v29.7549c0 6.62695 5.37305 12 12 12h33.0752c28.9551 83.748 107.376 144 204.56 144c21.0752 0 40.582 -2.91211 52.6865 -5.20703\nc6.86035 -1.30078 11.1475 -8.17578 9.32617 -14.917l-11.9912 -44.3682c-1.65527 -6.125 -7.78613 -9.89062 -14.002 -8.62305c-9.28711 1.89551 -23.3652 4.14551 -37.8516 4.14551c-54.9287 0 -96.9854 -30.0391 -117.619 -75.0303h138.278\nc7.66211 0 13.3613 -7.08203 11.7227 -14.5664l-6.51172 -29.7549c-1.13965 -5.20703 -6.3916 -9.43359 -11.7227 -9.43359v0h-146.593c-1.55176 -13.958 -1.34766 -27.917 -0.137695 -42.2451h134.237c7.68945 0 13.3936 -7.12891 11.708 -14.6309l-6.37305 -28.3604\nc-1.16211 -5.17188 -6.40723 -9.36914 -11.708 -9.36914h-113.689c19.5322 -50.6582 64.6982 -85.4482 121.462 -85.4482c18.0039 0 34.7334 2.97363 45.4258 5.41211c6.58887 1.50391 13.1094 -2.73828 14.4238 -9.36816z\" />\n    <glyph glyph-name=\"pound-sign\" unicode=\"&#xf154;\" horiz-adv-x=\"320\" \nd=\"M308 96c6.62695 0 12 -5.37305 12 -12v-104c0 -6.62695 -5.37305 -12 -12 -12h-296c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h36v128h-28c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h28v66.0391\nc0 73.2188 58.0264 125.961 139.931 125.961c48.6455 0 85.1934 -22.5596 101.575 -34.9277c5.39844 -4.07617 6.35254 -11.8057 2.11914 -17.0811l-28.4932 -35.5137c-3.7998 -4.73535 -10.5371 -5.89746 -15.6875 -2.68457\nc-11.7744 7.34375 -33.9941 18.8486 -57.6523 18.8486c-37.2305 0 -61.792 -24.8193 -61.792 -57.0859v-63.5557h84c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-84v-126.848h122.505v50.8477c0 6.62695 5.37305 12 12 12h45.4951z\" />\n    <glyph glyph-name=\"dollar-sign\" unicode=\"&#xf155;\" horiz-adv-x=\"288\" \nd=\"M209.2 214.6c57.8994 -16.8994 94 -80.0996 72.5 -141.699c-15.4004 -44.1006 -59.1006 -71.8008 -105.7 -72.7002v-48.2002c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v48c-31.4004 0.0996094 -62 10.7998 -86.5 30\nc-7.90039 6.09961 -8.90039 17.5996 -1.7998 24.5l34.7998 34c5.2002 5.09961 13.4004 6.09961 19.5 2c10 -6.7998 22 -10.5 34.2002 -10.5h66.2998c16.2998 0 29.5 13.2002 29.5 29.5c0 13 -8.7002 24.5996 -21.2002 28.2998l-102.5 30\nc-44.3994 13 -79.5996 50.5 -83.7998 96.6006c-5.90039 64.8994 45.2998 119.6 109 119.6h2.5v48c0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-48c31.4004 -0.0996094 62 -10.7998 86.5 -30c7.90039 -6.09961 8.90039 -17.5996 1.7998 -24.5l-34.7998 -34\nc-5.2002 -5.09961 -13.4004 -6.09961 -19.5 -2c-10 6.7998 -22 10.5 -34.2002 10.5h-66.2998c-16.2998 0 -29.5 -13.2002 -29.5 -29.5c0 -13 8.7002 -24.7002 21.2002 -28.2998z\" />\n    <glyph glyph-name=\"rupee-sign\" unicode=\"&#xf156;\" horiz-adv-x=\"320\" \nd=\"M308 352h-72.9424c5.97266 -9.75391 10.7666 -20.459 14.252 -32h58.6904c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-52.8105c-7.1748 -74.5107 -61.8193 -125.566 -138.318 -127.906l150.882 -139.275\nc8.02734 -7.41016 2.78516 -20.8184 -8.13867 -20.8184h-82.5625c-2.58984 0 -6.23535 1.42578 -8.13867 3.18164l-165.052 152.356c-2.46094 2.27148 -3.86133 5.46875 -3.86133 8.81836v53.0117c0 6.62695 5.37305 12 12 12h84c41.7959 0 68.54 22.5459 74.7568 58.6318\nh-158.757c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h146.25c-12.709 17.2939 -33.6621 27.252 -60.9697 27.252h-85.2803c-6.62695 0 -12 5.37305 -12 12v44.748c0 6.62695 5.37305 12 12 12h296c6.62695 0 12 -5.37305 12 -12v-40\nc0 -6.62695 -5.37305 -12 -12 -12z\" />\n    <glyph glyph-name=\"yen-sign\" unicode=\"&#xf157;\" horiz-adv-x=\"384\" \nd=\"M351.2 416c9.09961 0 14.8994 -9.7002 10.5996 -17.5996l-80.0996 -150.4h58.2998c6.59961 0 12 -5.40039 12 -12v-32c0 -6.59961 -5.40039 -12 -12 -12h-88.2002l-19.7998 -37.2002v-26.7998h108c6.59961 0 12 -5.40039 12 -12v-32c0 -6.59961 -5.40039 -12 -12 -12\nh-108v-92c0 -6.59961 -5.40039 -12 -12 -12h-56c-6.59961 0 -12 5.40039 -12 12v92h-108c-6.59961 0 -12 5.40039 -12 12v32c0 6.59961 5.40039 12 12 12h108v26.7998l-19.7998 37.2002h-88.2002c-6.59961 0 -12 5.40039 -12 12v32c0 6.59961 5.40039 12 12 12h58.2998\nl-80.0996 150.4c-4.2002 7.89941 1.5 17.5996 10.5996 17.5996h65.2002c4.59961 0 8.7998 -2.59961 10.7998 -6.7002l55.4004 -113.2c14.5 -34.6992 27.0996 -71.8994 27.0996 -71.8994h1.2998s12.6006 37.2002 27.1006 71.8994l55.3994 113.2\nc2 4.10059 6.2002 6.7002 10.8008 6.7002h65.2998z\" />\n    <glyph glyph-name=\"ruble-sign\" unicode=\"&#xf158;\" horiz-adv-x=\"384\" \nd=\"M239.36 128h-92.8008v-32h161.44c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-161.44v-52c0 -6.62695 -5.37305 -12 -12 -12h-58.5596c-6.62695 0 -12 5.37305 -12 12v52h-52c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h52\nv32h-52c-6.62695 0 -12 5.37305 -12 12v45.3682c0 6.62695 5.37305 12 12 12h52v206.632c0 6.62695 5.37305 12 12 12h163.36c85.1201 0 144.64 -57.5996 144.64 -143.071c0 -85.4707 -59.5195 -144.929 -144.64 -144.929zM146.56 347.252v-149.884h77.4404\nc48 0 76.1602 29.7285 76.1602 75.5605c0 45.2129 -28.1602 74.3232 -74.8799 74.3232h-78.7207z\" />\n    <glyph glyph-name=\"won-sign\" unicode=\"&#xf159;\" horiz-adv-x=\"576\" \nd=\"M564 256h-62.7002l-7.39941 -32h70.0996c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-84.9004l-42.0996 -182.7c-1.2998 -5.39941 -6.09961 -9.2998 -11.7002 -9.2998h-56.7998c-5.59961 0 -10.4004 3.90039 -11.7002 9.2998l-42.3994 182.7\nh-55.1006l-42.2998 -182.7c-1.2998 -5.39941 -6.09961 -9.2998 -11.7002 -9.2998h-56.7998c-5.59961 0 -10.5 3.90039 -11.7002 9.40039l-40.8994 182.6h-83.9004c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h69.5l-7.2002 32h-62.2998\nc-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h48l-18.0996 80.7002c-1.7002 7.5 4 14.5996 11.6992 14.5996h42.1006c5.7002 0 10.7002 -4 11.7998 -9.59961l17.5 -85.7002h108.7l20 86c1.2998 5.5 6.09961 9.2998 11.7002 9.2998h44\nc5.59961 0 10.3994 -3.7998 11.6992 -9.2998l19.7002 -86h109.9l14.3994 85.7998c1.10059 5.5 6 9.5 11.7002 9.5h46.1006c7.69922 0 13.3994 -7.2002 11.6992 -14.7002l-18.5996 -80.5996h48c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12zM183.8 106\nl12.6006 54h-38.8008l11 -54c5.10059 -25.2002 6.80078 -47.2002 6.80078 -47.2002h1.09961c0.5 0 1.09961 21.4004 7.2998 47.2002zM211.3 224l7.5 32h-80.7998l6.5 -32h66.7998zM274.2 224h25.3994l-2 8.59961c-1.89941 8 -3.5 16 -4.7998 23.4004h-11.7998\nc-1.2998 -7.40039 -2.90039 -15.4004 -4.7998 -23.4004zM405.1 106l11.5 54h-39.0996l12.4004 -54c6.19922 -25.7998 6.69922 -47.2002 7.2998 -47.2002h1.09961s1.7002 22 6.7998 47.2002zM430.3 224l6.90039 32h-81.6006l7.30078 -32h67.3994z\" />\n    <glyph glyph-name=\"file\" unicode=\"&#xf15b;\" horiz-adv-x=\"384\" \nd=\"M224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136zM384 326.1v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7l97.9004 -98\nc4.5 -4.5 7 -10.5996 7 -16.9004z\" />\n    <glyph glyph-name=\"file-alt\" unicode=\"&#xf15c;\" horiz-adv-x=\"384\" \nd=\"M224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136zM288 76v8c0 6.59961 -5.40039 12 -12 12h-168c-6.59961 0 -12 -5.40039 -12 -12v-8\nc0 -6.59961 5.40039 -12 12 -12h168c6.59961 0 12 5.40039 12 12zM288 140v8c0 6.59961 -5.40039 12 -12 12h-168c-6.59961 0 -12 -5.40039 -12 -12v-8c0 -6.59961 5.40039 -12 12 -12h168c6.59961 0 12 5.40039 12 12zM288 212c0 6.59961 -5.40039 12 -12 12h-168\nc-6.59961 0 -12 -5.40039 -12 -12v-8c0 -6.59961 5.40039 -12 12 -12h168c6.59961 0 12 5.40039 12 12v8zM384 326.1v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7l97.9004 -98c4.5 -4.5 7 -10.5996 7 -16.9004z\" />\n    <glyph glyph-name=\"sort-alpha-down\" unicode=\"&#xf15d;\" horiz-adv-x=\"448\" \nd=\"M176 96c14.2197 0 21.3496 -17.2598 11.3301 -27.3096l-80 -96c-2.58691 -2.58496 -7.65332 -4.68262 -11.3105 -4.68262c-3.65625 0 -8.72266 2.09766 -11.3096 4.68262l-80 96c-10.0703 10.0693 -2.90039 27.3096 11.29 27.3096h48v304c0 8.83203 7.16797 16 16 16h32\nc8.83203 0 16 -7.16797 16 -16v-304h48zM416 160c8.83203 0 16 -7.16797 16 -16v-17.6299v-0.00292969c0 -7.93262 -4.81152 -18.6475 -10.7402 -23.917l-61.2598 -70.4502h56c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-128\nc-8.83203 0 -16 7.16797 -16 16v17.6299v0.00292969c0 7.93262 4.81152 18.6475 10.7402 23.917l61.2598 70.4502h-56c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h128zM447.06 245.38c0.514648 -1.44043 0.931641 -3.85059 0.931641 -5.37988\nc0 -8.82715 -7.16406 -15.9951 -15.9912 -16h-24.8398h-0.0449219c-6.42773 0 -13.249 4.96387 -15.2256 11.0801l-4.40918 12.9199h-71l-4.4209 -12.9199c-1.97559 -6.11621 -8.79688 -11.0801 -15.2246 -11.0801h-0.00488281h-24.8301\nc-8.82715 0.00488281 -15.9912 7.17285 -15.9912 16c0 1.5293 0.416992 3.93945 0.931641 5.37988l59.2695 160c2.09277 5.8623 8.84375 10.6201 15.0684 10.6201h0.00195312h41.4395h0.00195312c6.22461 0 12.9756 -4.75781 15.0684 -10.6201zM335.61 304h32.7793\nl-16.3896 48z\" />\n    <glyph glyph-name=\"sort-alpha-up\" unicode=\"&#xf15e;\" horiz-adv-x=\"448\" \nd=\"M16 288c-14.2197 0 -21.3496 17.2598 -11.3096 27.3096l80 96c2.58594 2.58496 7.65332 4.68262 11.3096 4.68262s8.72363 -2.09766 11.3096 -4.68262l80 -96c10.0703 -10.0693 2.90039 -27.3096 -11.3096 -27.3096h-48v-304c0 -8.83203 -7.16797 -16 -16 -16h-32\nc-8.83203 0 -16 7.16797 -16 16v304h-48zM416 160c8.83203 0 16 -7.16797 16 -16v-17.6299v-0.00292969c0 -7.93262 -4.81152 -18.6475 -10.7402 -23.917l-61.2598 -70.4502h56c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-128\nc-8.83203 0 -16 7.16797 -16 16v17.6299v0.00292969c0 7.93262 4.81152 18.6475 10.7402 23.917l61.2598 70.4502h-56c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h128zM447.06 245.38c0.514648 -1.44043 0.931641 -3.85059 0.931641 -5.37988\nc0 -8.82715 -7.16406 -15.9951 -15.9912 -16h-24.8398h-0.0449219c-6.42773 0 -13.249 4.96387 -15.2256 11.0801l-4.40918 12.9199h-71l-4.4209 -12.9199c-1.97559 -6.11621 -8.79688 -11.0801 -15.2246 -11.0801h-0.00488281h-24.8301\nc-8.82715 0.00488281 -15.9912 7.17285 -15.9912 16c0 1.5293 0.416992 3.93945 0.931641 5.37988l59.2695 160c2.09277 5.8623 8.84375 10.6201 15.0684 10.6201h0.00195312h41.4395h0.00195312c6.22461 0 12.9756 -4.75781 15.0684 -10.6201zM335.61 304h32.7793\nl-16.3896 48z\" />\n    <glyph glyph-name=\"sort-amount-down\" unicode=\"&#xf160;\" \nd=\"M304 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-64c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h64zM176 96c14.2197 0 21.3496 -17.2598 11.3301 -27.3096l-80 -96\nc-2.58691 -2.58496 -7.65332 -4.68262 -11.3105 -4.68262c-3.65625 0 -8.72266 2.09766 -11.3096 4.68262l-80 96c-10.0801 10.0693 -2.90039 27.3096 11.29 27.3096h48v304c0 8.83203 7.16797 16 16 16h32c8.83203 0 16 -7.16797 16 -16v-304h48zM432 288\nc8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-192c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h192zM368 160c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-128c-8.83203 0 -16 7.16797 -16 16v32\nc0 8.83203 7.16797 16 16 16h128zM496 416c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-256c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h256z\" />\n    <glyph glyph-name=\"sort-amount-up\" unicode=\"&#xf161;\" \nd=\"M304 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-64c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h64zM16 288c-14.2305 0 -21.3496 17.2598 -11.3096 27.3096l80 96c2.58594 2.58496 7.65332 4.68262 11.3096 4.68262\ns8.72363 -2.09766 11.3096 -4.68262l80 -96c10.0703 -10.0693 2.90039 -27.3096 -11.3096 -27.3096h-48v-304c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v304h-48zM432 288c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16\nh-192c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h192zM368 160c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-128c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h128zM496 416c8.83203 0 16 -7.16797 16 -16v-32\nc0 -8.83203 -7.16797 -16 -16 -16h-256c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h256z\" />\n    <glyph glyph-name=\"sort-numeric-down\" unicode=\"&#xf162;\" horiz-adv-x=\"448\" \nd=\"M304 352c-8.82422 0.0078125 -15.9863 7.17578 -15.9863 16c0 2.08984 0.759766 5.30176 1.69629 7.16992l16 32c2.44141 4.87012 8.84277 8.8252 14.29 8.83008h48c8.83203 0 16 -7.16797 16 -16v-112h16c8.83203 0 16 -7.16797 16 -16v-32\nc0 -8.83203 -7.16797 -16 -16 -16h-96c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h16v64h-16zM330.15 189.09c53.4502 14.25 101.85 -25.8799 101.869 -77.0898v-10.7695c0 -70.3906 -28.25 -107.24 -86.25 -132\nc-8.36914 -3.58008 -18.0293 1.2793 -20.8994 9.90918l-9.90039 20c-2.62012 7.87012 0.610352 16.9404 8.18066 20.3408c6.2793 2.71387 15.6201 8.49805 20.8496 12.9092c-47.6396 4.76074 -83.0996 51.4805 -68.8496 102.53c6.80762 23.4512 31.4473 47.7197 55 54.1699z\nM352 92c11.04 0 20 8.95996 20 20s-8.95996 20 -20 20s-20 -8.95996 -20 -20s8.95996 -20 20 -20zM176 96c14.2197 0 21.3496 -17.2598 11.3301 -27.3096l-80 -96c-2.58691 -2.58496 -7.65332 -4.68262 -11.3105 -4.68262c-3.65625 0 -8.72266 2.09766 -11.3096 4.68262\nl-80 96c-10.0703 10.0693 -2.90039 27.3096 11.29 27.3096h48v304c0 8.83203 7.16797 16 16 16h32c8.83203 0 16 -7.16797 16 -16v-304h48z\" />\n    <glyph glyph-name=\"sort-numeric-up\" unicode=\"&#xf163;\" horiz-adv-x=\"448\" \nd=\"M330.17 189.09c53.4502 14.25 101.83 -25.8799 101.85 -77.0898v-10.7695c0 -70.3906 -28.25 -107.24 -86.25 -132c-8.36914 -3.58008 -18.0293 1.2793 -20.8994 9.90918l-9.90039 20c-2.62012 7.87012 0.610352 16.9404 8.18066 20.3408\nc6.2793 2.71387 15.6201 8.49805 20.8496 12.9092c-47.6396 4.76074 -83.0996 51.4805 -68.8301 102.53c6.80762 23.4512 31.4482 47.7197 55 54.1699zM352 92c11.04 0 20 8.95996 20 20s-8.95996 20 -20 20s-20 -8.95996 -20 -20s8.95996 -20 20 -20zM304 352\nc-8.82422 0.0078125 -15.9863 7.17578 -15.9863 16c0 2.08984 0.759766 5.30176 1.69629 7.16992l16 32c2.44141 4.87012 8.84277 8.8252 14.29 8.83008h48c8.83203 0 16 -7.16797 16 -16v-112h16c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-96\nc-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h16v64h-16zM107.31 411.31l80 -96c10.0703 -10.0693 2.90039 -27.3096 -11.3096 -27.3096h-48v-304c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v304h-48\nc-14.2197 0 -21.3496 17.2598 -11.3096 27.3096l80 96c2.58594 2.58496 7.65332 4.68262 11.3096 4.68262s8.72363 -2.09766 11.3096 -4.68262z\" />\n    <glyph glyph-name=\"thumbs-up\" unicode=\"&#xf164;\" \nd=\"M104 224c13.2549 0 24 -10.7451 24 -24v-240c0 -13.2549 -10.7451 -24 -24 -24h-80c-13.2549 0 -24 10.7451 -24 24v240c0 13.2549 10.7451 24 24 24h80zM64 -24c13.2549 0 24 10.7451 24 24s-10.7451 24 -24 24s-24 -10.7451 -24 -24s10.7451 -24 24 -24zM384 366.548\nc0 -42.416 -25.9697 -66.208 -33.2773 -94.5479h101.724c33.3965 0 59.3965 -27.7461 59.5527 -58.0977c0.0839844 -17.9385 -7.5459 -37.249 -19.4395 -49.1973l-0.109375 -0.110352c9.83594 -23.3369 8.23633 -56.0371 -9.30859 -79.4688\nc8.68164 -25.8945 -0.0683594 -57.7041 -16.3818 -74.7568c4.29785 -17.5977 2.24414 -32.5752 -6.14746 -44.6318c-20.4102 -29.3242 -70.9961 -29.7373 -113.773 -29.7373l-2.84473 0.000976562c-48.2871 0.0166016 -87.8057 17.5977 -119.561 31.7246\nc-15.957 7.09961 -36.8203 15.8877 -52.6504 16.1787c-6.54004 0.120117 -11.7832 5.45703 -11.7832 11.998v213.77c0 3.2002 1.28223 6.27148 3.55762 8.52148c39.6143 39.1436 56.6484 80.5869 89.1172 113.11c14.8037 14.832 20.1885 37.2363 25.3936 58.9023\nc4.44629 18.501 13.749 57.7939 33.9316 57.7939c24 0 72 -8 72 -81.4521z\" />\n    <glyph glyph-name=\"thumbs-down\" unicode=\"&#xf165;\" \nd=\"M0 392c0 13.2549 10.7451 24 24 24h80c13.2549 0 24 -10.7451 24 -24v-240c0 -13.2549 -10.7451 -24 -24 -24h-80c-13.2549 0 -24 10.7451 -24 24v240zM40 192c0 -13.2549 10.7451 -24 24 -24s24 10.7451 24 24s-10.7451 24 -24 24s-24 -10.7451 -24 -24zM312 -64\nc-20.1826 0 -29.4854 39.293 -33.9307 57.7949c-5.20605 21.666 -10.5889 44.0703 -25.3936 58.9023c-32.4688 32.5234 -49.5029 73.9668 -89.1172 113.11c-1.96387 1.94141 -3.55762 5.75879 -3.55762 8.52051v0.000976562v213.77\nc0 6.54102 5.24316 11.8779 11.7832 11.998c15.8311 0.290039 36.6934 9.0791 52.6504 16.1787c31.7549 14.127 71.2744 31.708 119.561 31.7246h2.84375c42.7773 0 93.3633 -0.413086 113.774 -29.7373c8.3916 -12.0566 10.4453 -27.0342 6.14746 -44.6318\nc16.3125 -17.0527 25.0635 -48.8633 16.3818 -74.7568c17.5439 -23.4316 19.1436 -56.1318 9.30859 -79.4688l0.109375 -0.110352c11.8936 -11.9492 19.5234 -31.2588 19.4395 -49.1973c-0.15625 -30.3516 -26.1572 -58.0977 -59.5527 -58.0977h-101.725\nc7.30762 -28.3398 33.2773 -52.1318 33.2773 -94.5479c0 -73.4521 -48 -81.4521 -72 -81.4521z\" />\n    <glyph glyph-name=\"female\" unicode=\"&#xf182;\" horiz-adv-x=\"256\" \nd=\"M128 448c35.3457 0 64 -28.6543 64 -64s-28.6543 -64 -64 -64s-64 28.6543 -64 64s28.6543 64 64 64zM247.283 93.8213c3.78809 -15.1504 -7.69238 -29.8213 -23.2832 -29.8213h-56v-104c0 -13.2549 -10.7451 -24 -24 -24h-32c-13.2549 0 -24 10.7451 -24 24v104h-56\nc-15.6172 0 -27.0654 14.6953 -23.2832 29.8213l48 192c2.50879 10.0342 12.9395 18.1787 23.2832 18.1787h11.3604c23.6895 -10.8936 50.5684 -10.4434 73.2793 0h11.3604c10.3438 0 20.7744 -8.14453 23.2832 -18.1787z\" />\n    <glyph glyph-name=\"male\" unicode=\"&#xf183;\" horiz-adv-x=\"192\" \nd=\"M96 448c35.3457 0 64 -28.6543 64 -64s-28.6543 -64 -64 -64s-64 28.6543 -64 64s28.6543 64 64 64zM144 304c26.5098 0 48 -21.4902 48 -48v-136c0 -13.2549 -10.7451 -24 -24 -24h-16v-136c0 -13.2549 -10.7451 -24 -24 -24h-64c-13.2549 0 -24 10.7451 -24 24v136h-16\nc-13.2549 0 -24 10.7451 -24 24v136c0 26.5098 21.4902 48 48 48h11.3604c23.6895 -10.8936 50.5684 -10.4434 73.2793 0h11.3604z\" />\n    <glyph glyph-name=\"sun\" unicode=\"&#xf185;\" \nd=\"M256 288c52.9004 0 96 -43.0996 96 -96s-43.0996 -96 -96 -96s-96 43.0996 -96 96s43.0996 96 96 96zM502.4 207.5c12.7998 -6.40039 12.7998 -24.5996 -0.200195 -31.0996l-94.7002 -47.3008l33.5 -100.399c4.59961 -13.5 -8.2998 -26.4004 -21.9004 -21.9004\nl-100.399 33.5l-47.2998 -94.7002c-6.40039 -12.7998 -24.6006 -12.7998 -31 0l-47.3008 94.7002l-100.399 -33.5c-13.5 -4.59961 -26.4004 8.2998 -21.9004 21.9004l33.5 100.5l-94.7002 47.2998c-12.7998 6.40039 -12.7998 24.5996 0 31l94.7002 47.4004l-33.5 100.399\nc-4.59961 13.5 8.2998 26.4004 21.9004 21.9004l100.5 -33.5l47.2998 94.7002c6.40039 12.7998 24.5996 12.7998 31 0l47.4004 -94.8008l100.399 33.5c13.5 4.60059 26.4004 -8.2998 21.9004 -21.8994l-33.5 -100.4zM346.5 101.5c49.9004 49.9004 49.9004 131.1 0 181\ns-131.1 49.9004 -181 0s-49.9004 -131.1 0 -181s131.1 -49.9004 181 0z\" />\n    <glyph glyph-name=\"moon\" unicode=\"&#xf186;\" \nd=\"M283.211 -64c-141.489 0 -256 114.691 -256 256c0 141.489 114.691 256 256 256c13.0176 -0.00195312 33.9727 -1.91895 46.7754 -4.28027c11.0059 -2.0332 13.4414 -16.7178 3.75586 -22.2295c-62.8359 -35.7588 -101.498 -102.172 -101.498 -174.395\nc0 -125.378 114.059 -220.607 238.262 -196.954c10.9229 2.08008 18.6299 -10.6416 11.5625 -19.3496c-47.7783 -58.8672 -119.896 -94.792 -198.857 -94.792z\" />\n    <glyph glyph-name=\"archive\" unicode=\"&#xf187;\" \nd=\"M32 0v288h448v-288c0 -17.7002 -14.2998 -32 -32 -32h-384c-17.7002 0 -32 14.2998 -32 32zM192 212v-8c0 -6.59961 5.40039 -12 12 -12h104c6.59961 0 12 5.40039 12 12v8c0 6.59961 -5.40039 12 -12 12h-104c-6.59961 0 -12 -5.40039 -12 -12zM480 416\nc17.7002 0 32 -14.2998 32 -32v-48c0 -8.7998 -7.2002 -16 -16 -16h-480c-8.7998 0 -16 7.2002 -16 16v48c0 17.7002 14.2998 32 32 32h448z\" />\n    <glyph glyph-name=\"bug\" unicode=\"&#xf188;\" \nd=\"M511.988 159.1c-0.478516 -17.4297 -15.2168 -31.0996 -32.6533 -31.0996h-55.335v-16c0 -21.8643 -4.88184 -42.584 -13.5996 -61.1445l60.2275 -60.2285c12.4961 -12.4971 12.4961 -32.7578 0 -45.2549c-12.498 -12.4971 -32.7588 -12.4961 -45.2559 0\nl-54.7363 54.7363c-24.75 -20.0732 -56.2852 -32.1084 -90.6357 -32.1084v244c0 6.62695 -5.37305 12 -12 12h-24c-6.62695 0 -12 -5.37305 -12 -12v-244c-34.3506 0 -65.8857 12.0352 -90.6357 32.1084l-54.7363 -54.7363c-12.498 -12.4971 -32.7588 -12.4961 -45.2559 0\nc-12.4961 12.4971 -12.4961 32.7578 0 45.2549l60.2275 60.2285c-8.71777 18.5605 -13.5996 39.2803 -13.5996 61.1445v16h-55.334c-17.4355 0 -32.1748 13.6699 -32.6533 31.0996c-0.49707 18.084 14.0156 32.9004 31.9873 32.9004h56v58.7451l-46.6279 46.6279\nc-12.4961 12.4971 -12.4961 32.7578 0 45.2549c12.498 12.4971 32.7578 12.4971 45.2559 0l54.627 -54.6279h229.489l54.627 54.627c12.498 12.4971 32.7578 12.4971 45.2559 0c12.4961 -12.4971 12.4961 -32.7578 0 -45.2549l-46.627 -46.627v-58.7451h56\nc17.9717 0 32.4844 -14.8164 31.9883 -32.9004zM257 448c61.8564 0 112 -50.1436 112 -112h-224c0 61.8564 50.1436 112 112 112z\" />\n    <glyph glyph-name=\"caret-square-left\" unicode=\"&#xf191;\" horiz-adv-x=\"448\" \nd=\"M400 -32h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h352c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48zM259.515 323.515l-123.029 -123.029c-4.68652 -4.68652 -4.68652 -12.2842 0 -16.9717l123.028 -123.028\nc7.56055 -7.56055 20.4854 -2.20605 20.4854 8.48438v246.06c0.000976562 10.6904 -12.9248 16.0449 -20.4844 8.48535z\" />\n    <glyph glyph-name=\"dot-circle\" unicode=\"&#xf192;\" \nd=\"M256 440c136.967 0 248 -111.033 248 -248s-111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248zM336 192c0 44.1123 -35.8877 80 -80 80s-80 -35.8877 -80 -80s35.8877 -80 80 -80s80 35.8877 80 80z\" />\n    <glyph glyph-name=\"wheelchair\" unicode=\"&#xf193;\" \nd=\"M496.101 62.3311l14.2275 -28.6631c3.92871 -7.91504 0.697266 -17.5156 -7.21777 -21.4453l-65.4658 -32.8857c-16.0488 -7.9668 -35.5557 -1.19434 -43.1885 15.0547l-62.7773 133.608h-139.679c-15.9248 0 -29.4258 11.71 -31.6787 27.4746\nc-33.8887 237.218 -31.9414 222.481 -32.3213 228.525c0 36.3584 30.3184 65.6348 67.0518 63.9287c33.2715 -1.54492 60.0479 -28.9043 60.9248 -62.2012c0.868164 -32.9326 -23.1514 -60.4229 -54.6074 -65.0381l4.66992 -32.6904h129.961c8.83691 0 16 -7.16309 16 -16\nv-32c0 -8.83691 -7.16309 -16 -16 -16h-120.818l4.57227 -32h132.246c11.2168 0 24.1924 -8.24023 28.9619 -18.3916l57.5146 -122.407l36.1787 18.3486c7.91504 3.92871 17.5166 0.697266 21.4453 -7.21777zM311.358 96l25.752 -54.8076\nc-27.3047 -61.8848 -89.2402 -105.192 -161.11 -105.192c-97.0469 0 -176 78.9531 -176 176c0 74.0371 45.9561 137.536 110.836 163.489c2.64453 -18.4736 5.77637 -40.3682 9.48828 -66.333c-33.6299 -19.3477 -56.3242 -55.6514 -56.3242 -97.1562\nc0 -61.7568 50.2432 -112 112 -112c56.3242 0 103.064 41.7959 110.852 96h24.5068z\" />\n    <glyph glyph-name=\"lira-sign\" unicode=\"&#xf195;\" horiz-adv-x=\"384\" \nd=\"M371.994 192c6.78613 0 12.2578 -5.62598 11.9971 -12.4082c-5.15332 -133.758 -94.3174 -211.592 -228.408 -211.592h-79.583c-6.62695 0 -12 5.37305 -12 12v193.442l-49.3975 -10.9775c-7.49316 -1.66602 -14.6025 4.03711 -14.6025 11.7139v40.9766\nc0 5.31348 4.20996 10.5615 9.39746 11.7139l54.6025 12.1338v30.4395l-49.3975 -10.9775c-7.49316 -1.66602 -14.6025 4.03711 -14.6025 11.7139v40.9766c0 5.31348 4.20996 10.5615 9.39746 11.7139l54.6025 12.1338v68.9971c0 6.62695 5.37305 12 12 12h56\nc6.62695 0 12 -5.37305 12 -12v-51.2188l129.397 28.7539c7.49316 1.66602 14.6025 -4.03711 14.6025 -11.7139v-40.9756c0 -5.31348 -4.20996 -10.5615 -9.39746 -11.7139l-134.603 -29.9121v-30.4385l129.397 28.7539c7.49316 1.66602 14.6025 -4.03711 14.6025 -11.7139\nv-40.9766c0 -5.31348 -4.20996 -10.5615 -9.39746 -11.7139l-134.603 -29.9121v-159.219c86.1787 0 168 48 168 148.754c0 6.33398 5.63965 11.2461 11.9746 11.2461h48.0195z\" />\n    <glyph glyph-name=\"space-shuttle\" unicode=\"&#xf197;\" horiz-adv-x=\"640\" \nd=\"M592.604 239.756c29.6787 -13.9111 47.3965 -31.7637 47.3965 -47.7559s-17.7178 -33.8447 -47.3965 -47.7559c-32.8682 -15.4082 -76.8262 -24.2441 -120.604 -24.2441h-285.674c-4.95215 -6.55469 -10.585 -11.9775 -16.7197 -16h206.394\nc-146.843 -30.2529 -156.597 -136 -279.997 -136h-0.00292969v128h-16v-128c-26.5098 0 -48 28.6543 -48 64v64c-23.1807 0 -32 10.0166 -32 24v40c0 13.9678 8.80273 24 32 24v16c-23.1807 0 -32 10.0166 -32 24v40c0 13.9678 8.80273 24 32 24v64\nc0 35.3457 21.4902 64 48 64v-128h16v128h0.00292969c123.4 0 133.154 -105.747 279.997 -136h-206.393c6.13477 -4.02246 11.7676 -9.44531 16.7197 -16h285.673c43.7773 0 87.7354 -8.83594 120.604 -24.2441zM488 152c31.9424 0 31.9092 80 0 80\nc-4.41602 0 -8 -3.58398 -8 -8v-64c0 -4.41602 3.58398 -8 8 -8z\" />\n    <glyph glyph-name=\"envelope-square\" unicode=\"&#xf199;\" horiz-adv-x=\"448\" \nd=\"M400 416c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h352zM178.117 185.896c10.5156 -7.66895 31.3799 -26.1133 45.8828 -25.8955\nc14.4912 -0.225586 35.3828 18.2393 45.8828 25.8936c90.6836 65.8145 89.7461 65.9697 114.117 84.9385v25.167c0 13.2549 -10.7451 24 -24 24h-272c-13.2549 0 -24 -10.7451 -24 -24v-25.167c24.3525 -18.9541 23.4287 -19.1201 114.117 -84.9365zM384 230.225\nc-13.958 -10.793 -33.3252 -25.2334 -95.2832 -70.1982c-13.6826 -9.98438 -37.833 -32.1592 -64.7197 -32.0254c-26.7188 -0.134766 -50.5322 21.6689 -64.6943 32.0098c-61.9736 44.9785 -81.3447 59.4199 -95.3027 70.2139v-142.225c0 -13.2549 10.7451 -24 24 -24h272\nc13.2549 0 24 10.7451 24 24v142.225z\" />\n    <glyph glyph-name=\"university\" unicode=\"&#xf19c;\" \nd=\"M496 320v-16c0 -4.41602 -3.58398 -8 -8 -8h-24v-12c0 -6.62695 -5.37305 -12 -12 -12h-392c-6.62695 0 -12 5.37305 -12 12v12h-24c-4.41602 0 -8 3.58398 -8 8v16c0 2.95215 2.21387 6.26367 4.94141 7.3916l232 88\nc0.810547 0.335938 2.18066 0.608398 3.05859 0.608398s2.24805 -0.272461 3.05859 -0.608398l232 -88c2.72754 -1.12793 4.94141 -4.43945 4.94141 -7.3916zM472 16c13.2549 0 24 -10.7451 24 -24v-16c0 -4.41602 -3.58398 -8 -8 -8h-464c-4.41602 0 -8 3.58398 -8 8v16\nc0 13.2549 10.7451 24 24 24h432zM96 256h64v-192h64v192h64v-192h64v192h64v-192h36c6.62695 0 12 -5.37305 12 -12v-20h-416v20c0 6.62695 5.37305 12 12 12h36v192z\" />\n    <glyph glyph-name=\"graduation-cap\" unicode=\"&#xf19d;\" horiz-adv-x=\"640\" \nd=\"M622.34 294.8c23.5498 -7.24023 23.5498 -38.3594 0 -45.5996l-278.95 -85.7002c-20.3496 -6.25 -37.7295 -2.78027 -46.79 0l-195.569 60.0898c-12.25 -8.41992 -19.9307 -21.7002 -20.6904 -36.7197c9.19043 -5.62012 15.6602 -15.2998 15.6602 -26.8701\nc0 -10.7803 -5.67969 -19.8496 -13.8604 -25.6504l25.5303 -114.88c2.21973 -9.98926 -5.37988 -19.4697 -15.6201 -19.4697h-56.1094c-10.2305 0 -17.8301 9.48047 -15.6104 19.4697l25.5303 114.88c-8.18066 5.80078 -13.8604 14.8701 -13.8604 25.6504\nc0 11.8896 6.78027 21.8496 16.4102 27.3701c0.649414 17.6201 7.20996 33.71 17.8799 46.8994l-48.6299 14.9404c-23.54 7.23047 -23.54 38.3604 0 45.5898l278.95 85.7002c15.1895 4.66992 31.5898 4.66992 46.79 0zM352.79 132.91l145.03 44.5596l14.1797 -113.47\nc0 -35.3496 -85.96 -64 -192 -64s-192 28.6504 -192 64l14.1797 113.46l145.021 -44.5498c12.75 -3.91992 37.0596 -8.75977 65.5898 0z\" />\n    <glyph glyph-name=\"language\" unicode=\"&#xf1ab;\" horiz-adv-x=\"640\" \nd=\"M152.1 211.8l10.9004 -37.5h-38.0996l11.0996 37.5c3.5 12.1006 7.7998 33.2002 7.7998 33.2002h0.5s4.2998 -21.0996 7.7998 -33.2002zM616 352c13.2998 0 24 -10.7002 24 -24v-272c0 -13.2998 -10.7002 -24 -24 -24h-280v320h280zM592 232v16\nc0 6.59961 -5.40039 12 -12 12h-64v16c0 6.59961 -5.40039 12 -12 12h-16c-6.59961 0 -12 -5.40039 -12 -12v-16h-64c-6.59961 0 -12 -5.40039 -12 -12v-16c0 -6.59961 5.40039 -12 12 -12h114.3c-6.2002 -14.2998 -16.5 -29 -30 -43.2002\nc-6.59961 6.90039 -12.3994 13.9004 -17.3994 20.9004c-3.60059 5.09961 -10.6006 6.59961 -16 3.39941l-7.30078 -4.2998l-6.5 -3.89941c-5.89941 -3.5 -7.69922 -11.4004 -3.69922 -17.1006c6.09961 -8.7002 13.0996 -17.2998 21 -25.7002\nc-8.10059 -6.2998 -16.8008 -12.2998 -26.1006 -18c-5.59961 -3.39941 -7.39941 -10.5996 -4.2002 -16.1992l7.90039 -13.9004c3.40039 -5.90039 10.9004 -7.7998 16.7002 -4.2998c12.7002 7.7998 24.5 16.2002 35.3994 24.8994\nc10.9004 -8.7998 22.8008 -17.0996 35.4004 -24.8994c5.7998 -3.5 13.2998 -1.60059 16.7002 4.2998l7.89941 13.9004c3.2002 5.69922 1.40039 12.7998 -4.09961 16.1992c-9 5.5 -17.7002 11.6006 -26.0996 18c21 22.5 35.7998 46.3008 42.6992 69.9004h11.4004\nc6.59961 0 12 5.40039 12 12zM0 328c0 13.2998 10.7002 24 24 24h280v-320h-280c-13.2998 0 -24 10.7002 -24 24v272zM58.9004 111.9c-2.60059 -7.80078 3.19922 -15.9004 11.3994 -15.9004h22.9004c5.2998 0 10 3.59961 11.5 8.7002l9.09961 31.7998h60.2002\nl9.40039 -31.9004c1.40137 -4.74316 6.55273 -8.59668 11.5 -8.59961h22.8994c8.2998 0 14 8.09961 11.4004 15.9004l-57.5 169.1c-1.7002 4.7998 -6.2998 8.09961 -11.4004 8.09961h-32.5c-5.2002 0 -9.7002 -3.19922 -11.3994 -8.09961z\" />\n    <glyph glyph-name=\"fax\" unicode=\"&#xf1ac;\" \nd=\"M64 320c17.6699 0 32 -14.3301 32 -32v-320c0 -17.6699 -14.3301 -32 -32 -32h-32c-17.6699 0 -32 14.3301 -32 32v320c0 17.6699 14.3301 32 32 32h32zM480 288c17.6699 0 32 -14.3301 32 -32v-288c0 -17.6699 -14.3301 -32 -32 -32h-320c-17.6699 0 -32 14.3301 -32 32\nv448c0 17.6699 14.3301 32 32 32h242.74c8.49023 0 16.6299 -3.37012 22.6299 -9.37012l45.2598 -45.25c6 -6.00977 9.37012 -14.1396 9.37012 -22.6299v-82.75zM288 16v32c0 8.83984 -7.16016 16 -16 16h-32c-8.83984 0 -16 -7.16016 -16 -16v-32\nc0 -8.83984 7.16016 -16 16 -16h32c8.83984 0 16 7.16016 16 16zM288 144v32c0 8.83984 -7.16016 16 -16 16h-32c-8.83984 0 -16 -7.16016 -16 -16v-32c0 -8.83984 7.16016 -16 16 -16h32c8.83984 0 16 7.16016 16 16zM416 16v32c0 8.83984 -7.16016 16 -16 16h-32\nc-8.83984 0 -16 -7.16016 -16 -16v-32c0 -8.83984 7.16016 -16 16 -16h32c8.83984 0 16 7.16016 16 16zM416 144v32c0 8.83984 -7.16016 16 -16 16h-32c-8.83984 0 -16 -7.16016 -16 -16v-32c0 -8.83984 7.16016 -16 16 -16h32c8.83984 0 16 7.16016 16 16zM432 256v96h-32\nc-8.83984 0 -16 7.16016 -16 16v32h-208v-144h256z\" />\n    <glyph glyph-name=\"building\" unicode=\"&#xf1ad;\" horiz-adv-x=\"448\" \nd=\"M436 -32c6.62695 0 12 -5.37305 12 -12v-20h-448v20c0 6.62695 5.37305 12 12 12h20v456c0 13.2549 10.7451 24 24 24h336c13.2549 0 24 -10.7451 24 -24v-456h20zM128 372v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12v40\nc0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12zM128 276v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12v40c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12zM180 128c6.62695 0 12 5.37305 12 12v40\nc0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40zM256 -32v84c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-84h64zM320 140v40c0 6.62695 -5.37305 12 -12 12h-40\nc-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM320 236v40c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM320 332v40\nc0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12z\" />\n    <glyph glyph-name=\"child\" unicode=\"&#xf1ae;\" horiz-adv-x=\"384\" \nd=\"M120 376c0 39.7646 32.2354 72 72 72s72 -32.2354 72 -72c0 -39.7637 -32.2354 -72 -72 -72s-72 32.2363 -72 72zM374.627 374.627c12.4971 -12.4971 12.4971 -32.7568 0 -45.2539l-94.627 -94.627v-266.746c0 -17.6729 -14.3271 -32 -32 -32h-16\nc-17.6729 0 -32 14.3271 -32 32v112h-16v-112c0 -17.6729 -14.3271 -32 -32 -32h-16c-17.6729 0 -32 14.3271 -32 32v266.746l-94.627 94.626c-12.4971 12.4971 -12.4971 32.7578 0 45.2549c12.4961 12.4971 32.7578 12.4971 45.2539 0l86.627 -86.627h101.491\nl86.6279 86.627c12.4961 12.4971 32.7578 12.4971 45.2539 0z\" />\n    <glyph glyph-name=\"paw\" unicode=\"&#xf1b0;\" \nd=\"M256 224c79.4102 0 192 -122.76 192 -200.25c0 -34.9004 -26.8096 -55.75 -71.7402 -55.75c-48.4102 0 -80.75 25.0801 -120.26 25.0801c-39.1699 0 -71.4199 -25.0801 -120.26 -25.0801c-44.9307 0 -71.7402 20.8496 -71.7402 55.75c0 77.4902 112.59 200.25 192 200.25\nzM108.72 236.61c10.4004 -34.6504 -4.76953 -68.3799 -33.8896 -75.3408c-29.1201 -6.95996 -61.1602 15.4805 -71.5605 50.1309c-10.3994 34.6494 4.77051 68.3799 33.8906 75.3398s61.1602 -15.4805 71.5596 -50.1299zM193.44 257.39\nc-30.9307 -8.14941 -65.6201 20.4502 -77.46 63.8701c-11.8408 43.4199 3.63965 85.2207 34.5791 93.3604c30.9404 8.13965 65.6201 -20.4502 77.46 -63.8701c11.8408 -43.4199 -3.63965 -85.2197 -34.5791 -93.3604zM474.83 286.73\nc29.1201 -6.96094 44.29 -40.6904 33.8896 -75.3408c-10.4102 -34.6494 -42.4395 -57.0898 -71.5596 -50.1299s-44.29 40.6904 -33.8906 75.3398c10.4102 34.6504 42.4404 57.0908 71.5605 50.1309zM318.56 257.39c-30.9395 8.14062 -46.4199 49.9404 -34.5791 93.3604\nc11.8398 43.4199 46.5195 72.0195 77.46 63.8701c30.9395 -8.15039 46.4199 -49.9404 34.5791 -93.3604c-11.8398 -43.4199 -46.5195 -72.0098 -77.46 -63.8701z\" />\n    <glyph glyph-name=\"cube\" unicode=\"&#xf1b2;\" \nd=\"M239.1 441.7c10.9004 4.09961 22.9004 4.09961 33.7002 -0.100586l208 -78c18.7002 -7 31.1006 -24.8994 31.1006 -44.8994v-225.101c0 -18.0996 -10.2002 -34.7998 -26.5 -42.8994l-208 -104c-13.5 -6.7998 -29.4004 -6.7998 -42.9004 0l-208 104\nc-16.2002 8.09961 -26.5 24.7002 -26.5 42.8994v225.101c0 20 12.4004 38 31.0996 45zM256 379.6l-192 -72v-1.09961l192 -78l192 78v1.09961zM288 23.5996l160 80v133.9l-160 -65v-148.9z\" />\n    <glyph glyph-name=\"cubes\" unicode=\"&#xf1b3;\" \nd=\"M488.6 197.8c14.1006 -5.2998 23.4004 -18.7002 23.4004 -33.7002v-110.1c0 -13.5996 -7.7002 -26.0996 -19.9004 -32.2002l-100 -50c-10.0996 -5.09961 -22.0996 -5.09961 -32.1992 0l-103.9 52l-103.9 -52c-10.0996 -5.09961 -22.0996 -5.09961 -32.1992 0l-100 50\nc-12.2002 6.10059 -19.9004 18.6006 -19.9004 32.2002v110.1c0 15 9.2998 28.4004 23.2998 33.7002l96.6006 36.2002v108.5c0 15 9.2998 28.4004 23.3994 33.7002l100 37.5c8.2002 3.09961 17.2002 3.09961 25.2998 0l100 -37.5\nc14.1006 -5.2998 23.4004 -18.7002 23.4004 -33.7002v-108.5zM358 233.2v73.2998l-85 -37v-68.2002zM154 343.9v-0.600586l102 -41.3994l102 41.3994v0.600586l-102 38.1992zM238 52.7998v75.4004l-85 -38.7998v-79.1006zM238 164.8v0.600586l-102 38.1992l-102 -38.1992\nv-0.600586l102 -41.3994zM478 52.7998v75.4004l-85 -38.7998v-79.1006zM478 164.8v0.600586l-102 38.1992l-102 -38.1992v-0.600586l102 -41.3994z\" />\n    <glyph glyph-name=\"recycle\" unicode=\"&#xf1b8;\" \nd=\"M184.561 186.097c3.23242 -13.9971 -12.1221 -24.6348 -24.0674 -17.168l-40.7363 25.4551l-50.8672 -81.4014c-13.2832 -21.2559 2.07031 -48.9824 27.1221 -48.9824h51.9883c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-51.8848\nc-75.334 0 -121.302 83.0479 -81.4082 146.88l50.8223 81.3877l-40.7256 25.4482c-12.0811 7.54688 -8.96582 25.9609 4.87891 29.1582l110.237 25.4502c8.61133 1.9873 17.2012 -3.38086 19.1895 -11.9902zM283.122 369.012\nc-12.2842 19.6543 -41.5449 20.3193 -54.2568 -0.0214844l-17.9609 -28.7432c-3.5127 -5.62012 -10.916 -7.3291 -16.5361 -3.81738l-33.9189 21.1953c-5.62012 3.51172 -7.33008 10.9131 -3.82031 16.5332l17.9629 28.7656c37.6074 60.1709 125.295 60.0332 162.816 0\nl41.2627 -66.082l40.6875 25.4238c12.0771 7.55176 27.2646 -3.32324 24.0674 -17.168l-25.4502 -110.236c-1.97363 -8.55273 -10.5166 -13.9893 -19.1885 -11.9902l-110.237 25.4502c-13.8789 3.20508 -16.9297 21.6299 -4.87891 29.1572l40.7402 25.457zM497.288 146.88\nc39.9268 -63.8828 -6.13379 -146.88 -81.4082 -146.88h-95.8799v-47.9893c0 -14.3105 -17.3105 -21.3184 -27.3135 -11.3145l-80 79.9883c-6.24805 6.24805 -6.24805 16.3799 0 22.627l80 79.9814c10.0713 10.0703 27.3135 2.90039 27.3135 -11.3125v-47.9814h95.9844\nc25.0791 0 40.3926 27.749 27.1357 48.96l-27.5645 44.1123c-3.51172 5.62109 -1.80176 13.0234 3.81836 16.5361l33.8613 21.1582c5.62207 3.51367 13.0264 1.80273 16.5381 -3.82031z\" />\n    <glyph glyph-name=\"car\" unicode=\"&#xf1b9;\" \nd=\"M499.99 272c7.80957 0 13.54 -7.33984 11.6494 -14.9102l-6 -24c-1.33008 -5.33984 -6.12988 -9.08984 -11.6396 -9.08984h-20.0703c13.4199 -11.7305 22.0703 -28.7803 22.0703 -48v-48c0 -16.1299 -6.16016 -30.6797 -16 -41.9297v-54.0703\nc0 -17.6699 -14.3301 -32 -32 -32h-32c-17.6699 0 -32 14.3301 -32 32v32h-256v-32c0 -17.6699 -14.3301 -32 -32 -32h-32c-17.6699 0 -32 14.3301 -32 32v54.0703c-9.83984 11.2598 -16 25.8096 -16 41.9297v48c0 19.2197 8.65039 36.2695 22.0801 48h-20.0703\nc-5.50977 0 -10.3096 3.75 -11.6396 9.08984l-6 24c-1.90039 7.57031 3.83008 14.9102 11.6396 14.9102h59.8604l16.6396 41.5996c17.1104 42.7705 57.9307 70.4004 103.99 70.4004h127c46.0703 0 86.8799 -27.6299 103.98 -70.4004l16.6396 -41.5996h59.8701z\nM147.93 289.83l-19.9297 -49.8301h256l-19.9297 49.8301c-7.29004 18.2197 -24.9404 30.1699 -44.5703 30.1699h-127c-19.6299 0 -37.2803 -11.9502 -44.5703 -30.1699zM96 128.2c19.2002 0 48 -3.19043 48 15.9502c0 19.1396 -28.7998 47.8496 -48 47.8496\ns-32 -12.7598 -32 -31.9004c0 -19.1396 12.7998 -31.8994 32 -31.8994zM416 128.2c19.2002 0 32 12.7598 32 31.8994c0 19.1406 -12.7998 31.9004 -32 31.9004s-48 -28.71 -48 -47.8496c0 -19.1406 28.7998 -15.9502 48 -15.9502z\" />\n    <glyph glyph-name=\"taxi\" unicode=\"&#xf1ba;\" \nd=\"M462 206.36c28.5898 -6.40039 50 -31.8301 50 -62.3604v-48c0 -23.6201 -12.9502 -44.0303 -32 -55.1201v-40.8799c0 -17.6699 -14.3301 -32 -32 -32h-32c-17.6699 0 -32 14.3301 -32 32v32h-256v-32c0 -17.6699 -14.3301 -32 -32 -32h-32c-17.6699 0 -32 14.3301 -32 32\nv40.8799c-19.0498 11.0801 -32 31.4902 -32 55.1201v48c0 30.5303 21.4102 55.96 50 62.3604l22 84.8398c9.59961 35.2002 41.5996 60.7998 76.7998 60.7998h11.2002v32c0 17.6699 14.3301 32 32 32h128c17.6699 0 32 -14.3301 32 -32v-32h11.2002\nc35.2002 0 67.2002 -25.5996 76.7998 -60.7998zM96 96c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM116.55 208h278.9l-17.3906 67.1396c-2.01953 7.37988 -9.37988 12.8604 -14.8496 12.8604h-214.4\nc-5.46973 0 -12.8291 -5.48047 -15.0596 -13.6396zM416 96c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z\" />\n    <glyph glyph-name=\"tree\" unicode=\"&#xf1bb;\" horiz-adv-x=\"384\" \nd=\"M378.31 69.5098c6 -6.79004 7.36035 -16.0898 3.56055 -24.2598c-3.75 -8.0498 -12 -13.25 -21.0098 -13.25h-136.86v-24.4502l30.29 -48.3994c5.32031 -10.6406 -2.41992 -23.1602 -14.3096 -23.1602h-95.9609c-11.8896 0 -19.6299 12.5195 -14.3096 23.1602\nl30.29 48.3994v24.4502h-136.86c-9.00977 0 -17.2598 5.2002 -21.0098 13.25c-3.7998 8.16992 -2.43945 17.4697 3.56055 24.2598l79.8896 90.4902h-30.6299c-9.02051 0 -16.9805 5 -20.7803 13.0498c-3.79004 8.0498 -2.54004 17.2598 3.27051 24.04l78.1396 90.9102\nh-28.8896c-9.10059 0 -17.3105 5.34961 -20.8701 13.6104c-3.51074 8.12988 -1.86035 17.5898 4.23926 24.0801l110.28 117.479c6.04004 6.4502 17.29 6.4502 23.3203 0l110.27 -117.479c6.10059 -6.49023 7.76074 -15.9502 4.24023 -24.0801\nc-3.55957 -8.26074 -11.7598 -13.6104 -20.8604 -13.6104h-28.8896l78.1299 -90.8896c5.83008 -6.79004 7.08008 -16.0107 3.28027 -24.0508c-3.7998 -8.05957 -11.7705 -13.0596 -20.7803 -13.0596h-30.6299z\" />\n    <glyph glyph-name=\"database\" unicode=\"&#xf1c0;\" horiz-adv-x=\"448\" \nd=\"M448 374.857v-45.7148c0 -40.2852 -100.333 -73.1426 -224 -73.1426s-224 32.8574 -224 73.1426v45.7148c0 40.2852 100.333 73.1426 224 73.1426s224 -32.8574 224 -73.1426zM448 272v-102.857c0 -40.2852 -100.333 -73.1426 -224 -73.1426s-224 32.8574 -224 73.1426\nv102.857c48.125 -33.1426 136.208 -48.5723 224 -48.5723s175.874 15.4297 224 48.5723zM448 112v-102.857c0 -40.2852 -100.333 -73.1426 -224 -73.1426s-224 32.8574 -224 73.1426v102.857c48.125 -33.1426 136.208 -48.5723 224 -48.5723s175.874 15.4297 224 48.5723z\n\" />\n    <glyph glyph-name=\"file-pdf\" unicode=\"&#xf1c1;\" horiz-adv-x=\"384\" \nd=\"M181.9 191.9c-5 16 -4.90039 46.8994 -2 46.8994c8.39941 0 7.59961 -36.8994 2 -46.8994zM180.2 144.7c9.59961 -17.4004 21.7998 -31.2002 34.5 -40.7998c-23.9004 -4.7002 -44.6006 -14.9004 -62.9004 -21.9004c11.1006 19.4004 20.7002 42.5 28.4004 62.7002z\nM86.0996 19.9004c5.80078 15.6992 28.2002 33.8994 34.9004 40.1992c-21.7002 -34.7998 -34.9004 -41 -34.9004 -40.1992zM248 288h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136\nc0 -13.2002 10.7998 -24 24 -24zM240 116.2c-20 12.2002 -33.2998 29 -42.7002 53.7998c4.5 18.5 11.6006 46.5996 6.2002 64.2002c-4.7002 29.3994 -42.4004 26.5 -47.7998 6.7998c-5 -18.2998 -0.400391 -44.0996 8.09961 -77\nc-11.5996 -27.5996 -28.7002 -64.5996 -40.7998 -85.7998c-0.0996094 0 -0.0996094 -0.100586 -0.200195 -0.100586c-27.0996 -13.8994 -73.5996 -44.5 -54.5 -68c5.60059 -6.89941 16 -10 21.5 -10c17.9004 0 35.7002 18 61.1006 61.8008\nc25.7998 8.5 54.0996 19.0996 79 23.1992c21.6992 -11.7998 47.0996 -19.5 64 -19.5c29.1992 0 31.1992 32 19.6992 43.4004c-13.8994 13.5996 -54.2998 9.7002 -73.5996 7.2002zM377 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128v128h6c6.40039 0 12.5 -2.5 17 -7z\nM302.9 87.7002c0 0 -5.7002 -6.7998 -42.8008 9c40.3008 2.89941 46.9004 -6.2998 42.8008 -9z\" />\n    <glyph glyph-name=\"file-word\" unicode=\"&#xf1c2;\" horiz-adv-x=\"384\" \nd=\"M224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136zM281.1 192c-5.59961 0 -10.5 -3.90039 -11.5 -9.5c-24.1992 -111.4 -21.7998 -118 -21.5996 -129.2\nc-0.799805 5.40039 -5.59961 29 -29.5996 129.4c-1.30078 5.39941 -6.10059 9.2002 -11.7002 9.2002h-29.1006c-5.59961 0 -10.3994 -3.7002 -11.6992 -9.10059c-22.1006 -90 -27.8008 -112.5 -29.4004 -122.7c-0.900391 12.7002 -5.40039 44.2002 -21 122.2\nc-1.09961 5.7002 -6.09961 9.7002 -11.7998 9.7002h-24.5c-7.7002 0 -13.4004 -7.09961 -11.7002 -14.5996l37.7998 -168c1.2002 -5.5 6.10059 -9.40039 11.7002 -9.40039h37.0996c5.5 0 10.3008 3.7998 11.6006 9.09961c23.2002 93.1006 24.5 96.2002 25.5996 110.5h0.5\nc4.7998 -29.2998 -0.200195 -7 25.6006 -110.5c1.2998 -5.2998 6.09961 -9.09961 11.5996 -9.09961h38c5.59961 0 10.5 3.7998 11.7002 9.2998l38 168c1.7002 7.60059 -4 14.7002 -11.7002 14.7002h-23.9004zM384 326.1v-6.09961h-128v128h6.09961\nc6.40039 0 12.5 -2.5 17 -7l97.9004 -98c4.5 -4.5 7 -10.5996 7 -16.9004z\" />\n    <glyph glyph-name=\"file-excel\" unicode=\"&#xf1c3;\" horiz-adv-x=\"384\" \nd=\"M224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136zM284.1 205.5c5.10059 8 -0.599609 18.5 -10.0996 18.4004h-34.7998\nc-4.40039 0 -8.5 -2.40039 -10.6006 -6.30078c-30.5 -56.7998 -36.5996 -68.5 -36.5996 -68.5c-16.5996 34.9004 -10.5 19.7002 -36.5996 68.5c-2.10059 3.90039 -6.2002 6.30078 -10.6006 6.30078h-34.7998c-9.5 0 -15.2998 -10.5 -10.0996 -18.5l60.2998 -93.5\nl-60.2998 -93.5c-5.10059 -8 0.599609 -18.5 10.0996 -18.5h34.9004c4.39941 0 8.39941 2.39941 10.5 6.2998c26.5996 48.7998 30.1992 54 36.5996 68.7998c0 0 16.9004 -32.5 36.5 -68.7002c2.09961 -3.89941 6.2002 -6.2998 10.5996 -6.2998h34.9004\nc9.5 0 15.2002 10.5 10.0996 18.5l-60.0996 93.5zM384 326.1v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7l97.9004 -98c4.5 -4.5 7 -10.5996 7 -16.9004z\" />\n    <glyph glyph-name=\"file-powerpoint\" unicode=\"&#xf1c4;\" horiz-adv-x=\"384\" \nd=\"M193.7 176.8c8.7998 0 15.5 -2.7002 20.2998 -8.09961c9.59961 -10.9004 9.7998 -32.7002 -0.200195 -44.1006c-4.89941 -5.59961 -11.8994 -8.5 -21.0996 -8.5h-26.9004v60.7002h27.9004zM377 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128v128h6\nc6.40039 0 12.5 -2.5 17 -7zM224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136zM277 146.8c0 44.2002 -28.4004 77 -72.9004 77h-81\nc-6.59961 0 -12 -5.39941 -12 -12v-199.8c0 -6.59961 5.40039 -12 12 -12h30.8008c6.59961 0 12 5.40039 12 12v57.2002c22.2998 0 111.1 -12.7002 111.1 77.5996z\" />\n    <glyph glyph-name=\"file-image\" unicode=\"&#xf1c5;\" horiz-adv-x=\"384\" \nd=\"M384 326.059v-6.05859h-128v128h6.05859c5.4873 0 13.0898 -3.14941 16.9707 -7.0293l97.9404 -97.9404c3.88086 -3.88086 7.03027 -11.4834 7.03027 -16.9717zM248 288h136v-328c0 -13.2549 -10.7451 -24 -24 -24h-336c-13.2549 0 -24 10.7451 -24 24v464\nc0 13.2549 10.7451 24 24 24h200v-136c0 -13.2002 10.7998 -24 24 -24zM112.545 272c-26.5088 0 -48 -21.4902 -48 -48s21.4902 -48 48 -48s48 21.4902 48 48s-21.4902 48 -48 48zM320.545 32v112l-39.5137 39.5146c-4.6875 4.68652 -12.2852 4.68652 -16.9717 0\nl-103.515 -103.515l-39.5146 39.5146c-4.68652 4.68652 -11.7988 5.1709 -16.4854 0.485352l-39.5146 -39.5146l-0.485352 -48.4854h256z\" />\n    <glyph glyph-name=\"file-archive\" unicode=\"&#xf1c6;\" horiz-adv-x=\"384\" \nd=\"M377 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7zM128.4 112c17.8994 0 32.5 -12.0996 32.5 -27s-14.5 -27 -32.4004 -27s-32.5 12 -32.5 27c0 14.9004 14.5 27 32.4004 27zM224 312c0 -13.2002 10.7998 -24 24 -24h136\nv-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h104.4v-32h32v32h63.5996v-136zM95.9004 416v-32h32v32h-32zM128.2 32c33 0 57.7998 30.2002 51.3994 62.5996l-17.2998 87.7002\nc-1.09961 5.60059 -6.09961 9.7002 -11.7998 9.7002h-22.0996v32h32v32h-32v32h32v32h-32v32h32v32h-32v-32h-32v-32h32v-32h-32v-32h32v-32h-32v-32l-19.6006 -97.0996c-6.59961 -32.5 18.2002 -62.9004 51.4004 -62.9004z\" />\n    <glyph glyph-name=\"file-audio\" unicode=\"&#xf1c7;\" horiz-adv-x=\"384\" \nd=\"M224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136zM160 44v136c0 10.7002 -12.9004 16.0996 -20.5 8.5l-35.5 -36.5h-28c-6.59961 0 -12 -5.40039 -12 -12\nv-56c0 -6.59961 5.40039 -12 12 -12h28l35.5 -36.5c7.59961 -7.5 20.5 -2.2002 20.5 8.5zM193.2 91.5996c-22.5 -23.0996 12.5996 -55.7998 34.3994 -33.5c27.2002 28 27.2002 72.5 0 100.4c-22.1992 22.7002 -56.5 -10.7002 -34.3994 -33.5\nc9.09961 -9.2998 9.09961 -24.0996 0 -33.4004zM279.2 208.7c-22.1006 22.7998 -56.5 -10.7002 -34.4004 -33.5c36.2998 -37.2998 36.2002 -96.6006 0 -133.8c-22.5996 -23.2002 12.6006 -55.9004 34.4004 -33.5c54.3994 56 54.3994 144.899 0 200.8zM384 326.1v-6.09961\nh-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7l97.9004 -98c4.5 -4.5 7 -10.5996 7 -16.9004z\" />\n    <glyph glyph-name=\"file-video\" unicode=\"&#xf1c8;\" horiz-adv-x=\"384\" \nd=\"M384 326.059v-6.05859h-128v128h6.05859c6.36523 0 12.4707 -2.5293 16.9717 -7.0293l97.9404 -97.9404c3.87988 -3.88086 7.0293 -11.4834 7.0293 -16.9717zM224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2549 -10.7451 -24 -24 -24h-336\nc-13.2549 0 -24 10.7451 -24 24v464c0 13.2549 10.7451 24 24 24h200v-136zM320 167.984c0 21.4609 -25.96 31.9795 -40.9707 16.9697l-55.0293 -55.0127v38.0586c0 13.2549 -10.7451 24 -24 24h-112c-13.2549 0 -24 -10.7451 -24 -24v-112c0 -13.2549 10.7451 -24 24 -24\nh112c13.2549 0 24 10.7451 24 24v38.0586l55.0293 -55.0088c15.0273 -15.0264 40.9707 -4.47363 40.9707 16.9717v111.963z\" />\n    <glyph glyph-name=\"file-code\" unicode=\"&#xf1c9;\" horiz-adv-x=\"384\" \nd=\"M384 326.059v-6.05859h-128v128h6.05859c6.36523 0 12.4707 -2.5293 16.9717 -7.0293l97.9404 -97.9404c3.87988 -3.88086 7.0293 -11.4834 7.0293 -16.9717zM248 288h136v-328c0 -13.2549 -10.7451 -24 -24 -24h-336c-13.2549 0 -24 10.7451 -24 24v464\nc0 13.2549 10.7451 24 24 24h200v-136c0 -13.2002 10.7998 -24 24 -24zM123.206 47.4951l19.5791 20.8838c0.805664 0.860352 1.45996 2.51465 1.45996 3.69336c0 1.34766 -0.820312 3.16309 -1.83203 4.05371l-40.7627 35.874l40.7627 35.874\nc1.01172 0.890625 1.83203 2.70605 1.83203 4.05371c0 1.17871 -0.654297 2.83301 -1.45996 3.69336l-19.5791 20.8848c-0.882812 0.942383 -2.64844 1.70703 -3.93945 1.70703c-1.17871 0 -2.83398 -0.654297 -3.69336 -1.46094l-64.8662 -60.8115\nc-0.942383 -0.883789 -1.70703 -2.64844 -1.70703 -3.93945c0 -1.29199 0.764648 -3.05664 1.70703 -3.94043l64.8662 -60.8115c0.859375 -0.806641 2.51465 -1.46094 3.69336 -1.46094c1.29102 0 3.05664 0.764648 3.93945 1.70703zM174.501 -2.98438\nc0.407227 -0.118164 1.08203 -0.213867 1.50586 -0.213867c2.23926 0 4.56152 1.74512 5.18457 3.89551l61.4395 211.626c0.118164 0.407227 0.214844 1.08203 0.214844 1.50586c0 2.23828 -1.74512 4.56152 -3.89453 5.18555l-27.4521 7.9707\nc-0.407227 0.117188 -1.08105 0.213867 -1.50488 0.213867c-2.23828 0 -4.5625 -1.74512 -5.1875 -3.89551l-61.4395 -211.626c-0.118164 -0.40625 -0.213867 -1.08105 -0.213867 -1.50391c0 -2.23926 1.74512 -4.56348 3.89453 -5.1875zM335.293 108.061\nc0.942383 0.883789 1.70703 2.64844 1.70703 3.94043c0 1.29102 -0.764648 3.05566 -1.70605 3.93945l-64.8662 60.8115c-0.859375 0.806641 -2.51465 1.46094 -3.69336 1.46094c-1.29102 0 -3.05566 -0.764648 -3.93945 -1.70703l-19.5801 -20.8848\nc-0.805664 -0.860352 -1.45996 -2.51465 -1.45996 -3.69336c0 -1.34766 0.820312 -3.16309 1.83203 -4.05371l40.7627 -35.874l-40.7637 -35.873c-1.01172 -0.890625 -1.83203 -2.70605 -1.83203 -4.05371c0 -1.17871 0.654297 -2.83301 1.45996 -3.69336l19.5801 -20.8848\nc0.882812 -0.942383 2.64844 -1.70703 3.93945 -1.70703c1.17871 0 2.83398 0.654297 3.69336 1.46094z\" />\n    <glyph glyph-name=\"life-ring\" unicode=\"&#xf1cd;\" \nd=\"M256 440c136.967 0 248 -111.033 248 -248s-111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248zM429.696 320.441c-10.6406 14.3398 -30.915 34.6143 -45.2549 45.2549l-63.3994 -63.3994c18.585 -11.0029 34.2676 -26.6963 45.2549 -45.2549zM256 96\nc53.0186 0 96 42.9814 96 96s-42.9814 96 -96 96s-96 -42.9814 -96 -96s42.9814 -96 96 -96zM127.559 365.696c-14.3398 -10.6406 -34.6143 -30.915 -45.2549 -45.2549l63.3994 -63.3994c11.0029 18.585 26.6963 34.2676 45.2549 45.2549zM82.3037 63.5586\nc10.6406 -14.3398 30.915 -34.6143 45.2549 -45.2549l63.3994 63.3994c-18.585 11.0029 -34.2676 26.6963 -45.2549 45.2549zM384.441 18.3037c14.3398 10.6406 34.6143 30.915 45.2549 45.2549l-63.3994 63.3994c-11.0029 -18.585 -26.6963 -34.2676 -45.2549 -45.2549z\n\" />\n    <glyph glyph-name=\"circle-notch\" unicode=\"&#xf1ce;\" \nd=\"M288 408.944c0 15.5996 14.6777 27.167 29.7891 23.292c107.071 -27.457 186.211 -124.604 186.211 -240.236c0 -136.788 -110.745 -247.711 -247.466 -247.999c-137.054 -0.289062 -247.812 109.615 -248.531 246.667c-0.609375 116.126 78.5996 213.85 185.951 241.502\nc15.2119 3.91895 30.0459 -7.52539 30.0459 -23.2344v-16.6475c0 -10.8047 -7.28125 -20.1621 -17.6885 -23.0693c-77.5254 -21.6543 -134.312 -92.749 -134.312 -177.219c0 -101.705 82.3105 -184 184 -184c101.705 0 184 82.3105 184 184\nc0 84.4824 -56.7959 155.566 -134.314 177.219c-10.4043 2.90723 -17.6855 12.2627 -17.6855 23.0664v16.6592z\" />\n    <glyph glyph-name=\"paper-plane\" unicode=\"&#xf1d8;\" \nd=\"M476 444.8c17.2998 10 39 -4.59961 35.5996 -24.7998l-72 -432c-2.59961 -15.2998 -18.7998 -24.2002 -33 -18.2002l-124.6 52.2002l-63.5 -77.2998c-14 -17.1006 -42.5 -7.7998 -42.5 15.7998v80.5l240.9 293.5c4.69922 5.7002 -3.10059 13.2002 -8.60059 8.2998\nl-287.3 -253.2l-106.3 44.6006c-18 7.59961 -20.2998 32.7998 -2.2002 43.2002z\" />\n    <glyph glyph-name=\"history\" unicode=\"&#xf1da;\" \nd=\"M504 192.469c0.25293 -136.64 -111.18 -248.372 -247.82 -248.468c-59.0146 -0.0419922 -113.223 20.5303 -155.821 54.9111c-11.0771 8.93945 -11.9053 25.541 -1.83984 35.6064l11.2676 11.2676c8.6084 8.6084 22.3525 9.55078 31.8906 1.9834\nc31.3848 -24.9043 71.1045 -39.7695 114.323 -39.7695c101.705 0 184 82.3105 184 184c0 101.705 -82.3105 184 -184 184c-48.8145 0 -93.1494 -18.9688 -126.068 -49.9316l50.7539 -50.7539c10.0801 -10.0801 2.94141 -27.3145 -11.3125 -27.3145h-145.373\nc-8.83691 0 -16 7.16309 -16 16v145.373c0 14.2539 17.2344 21.3926 27.3145 11.3135l49.3711 -49.3711c44.5234 42.5488 104.866 68.6846 171.314 68.6846c136.81 0 247.747 -110.78 248 -247.531zM323.088 113.685c-8.1377 -10.4629 -23.2158 -12.3467 -33.6787 -4.20996\nl-65.4092 50.874v135.651c0 13.2549 10.7451 24 24 24h16c13.2549 0 24 -10.7451 24 -24v-104.349l40.7012 -31.6572c10.4629 -8.13672 12.3477 -23.2158 4.20996 -33.6787z\" />\n    <glyph glyph-name=\"heading\" unicode=\"&#xf1dc;\" \nd=\"M448 352v-320h32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-160c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32v128h-192v-128h32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-160\nc-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32v320h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h160c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32v-128h192v128h-32c-8.83203 0 -16 7.16797 -16 16v32\nc0 8.83203 7.16797 16 16 16h160c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32z\" />\n    <glyph glyph-name=\"paragraph\" unicode=\"&#xf1dd;\" horiz-adv-x=\"448\" \nd=\"M448 400v-32c0 -8.83203 -7.16797 -16 -16 -16h-48v-368c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v368h-32v-368c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v112h-32c-88.3203 0 -160 71.6797 -160 160\ns71.6797 160 160 160h240c8.83203 0 16 -7.16797 16 -16z\" />\n    <glyph glyph-name=\"sliders-h\" unicode=\"&#xf1de;\" \nd=\"M496 64c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-336v-16c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v16h-80c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h80v16c0 8.7998 7.2002 16 16 16h32\nc8.7998 0 16 -7.2002 16 -16v-16h336zM496 224c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-80v-16c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v16h-336c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h336v16\nc0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-16h80zM496 384c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-208v-16c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v16h-208c-8.7998 0 -16 7.2002 -16 16v32\nc0 8.7998 7.2002 16 16 16h208v16c0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-16h208z\" />\n    <glyph glyph-name=\"share-alt\" unicode=\"&#xf1e0;\" horiz-adv-x=\"448\" \nd=\"M352 128c53.0186 0 96 -42.9814 96 -96s-42.9814 -96 -96 -96s-96 42.9814 -96 96v0.0283203c0 5.8125 1.01953 15.1367 2.27637 20.8125l-102.486 64.0537c-16.4033 -13.0752 -37.1816 -20.8945 -59.79 -20.8945c-53.0186 0 -96 42.9814 -96 96s42.9814 96 96 96\nc22.6084 0 43.3867 -7.81934 59.79 -20.8945l102.486 64.0537c-1.48633 6.71094 -2.27637 13.6826 -2.27637 20.8408c0 53.0186 42.9814 96 96 96s96 -42.9814 96 -96s-42.9814 -96 -96 -96c-22.6084 0 -43.3867 7.81934 -59.79 20.8965l-102.486 -64.0547\nc1.25684 -5.68359 2.27637 -15.0205 2.27637 -20.8408c0 -5.82129 -1.01953 -15.1582 -2.27637 -20.8418l102.486 -64.0537c16.4033 13.0752 37.1816 20.8945 59.79 20.8945z\" />\n    <glyph glyph-name=\"share-alt-square\" unicode=\"&#xf1e1;\" horiz-adv-x=\"448\" \nd=\"M448 368v-352c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h352c26.5098 0 48 -21.4902 48 -48zM304 152c-14.5615 0 -27.8232 -5.56055 -37.7832 -14.6709l-67.958 40.7744\nc0.960938 3.77539 1.74121 10.001 1.74121 13.8975c0 3.89551 -0.780273 10.1211 -1.74121 13.8965l67.958 40.7744c9.95996 -9.11133 23.2217 -14.6719 37.7832 -14.6719c30.9277 0 56 25.0723 56 56s-25.0723 56 -56 56s-56 -25.0723 -56 -56\nc0 -4.79688 0.605469 -9.45312 1.74023 -13.8975l-67.958 -40.7744c-9.95898 9.11133 -23.2207 14.6719 -37.7822 14.6719c-30.9277 0 -56 -25.0723 -56 -56s25.0723 -56 56 -56c14.5615 0 27.8232 5.56055 37.7832 14.6709l67.958 -40.7744\nc-0.960938 -3.7666 -1.74023 -9.97656 -1.74023 -13.8623v-0.0351562c0 -30.9277 25.0723 -56 56 -56s56 25.0723 56 56c-0.000976562 30.9287 -25.0732 56.001 -56.001 56.001z\" />\n    <glyph glyph-name=\"bomb\" unicode=\"&#xf1e2;\" \nd=\"M440.5 359.5l-52 -52l26.5 -26.5c9.40039 -9.40039 9.40039 -24.5996 0 -33.9004l-17.4004 -17.3994c11.8008 -26.1006 18.4004 -55.1006 18.4004 -85.6006c0 -114.899 -93.0996 -208 -208 -208s-208 93 -208 207.9s93.0996 208 208 208\nc30.5 0 59.5 -6.59961 85.5996 -18.4004l17.4004 17.4004c9.40039 9.40039 24.5996 9.40039 33.9004 0l26.5 -26.5l52 52zM500 388c6.59961 0 12 -5.40039 12 -12s-5.40039 -12 -12 -12h-24c-6.59961 0 -12 5.40039 -12 12s5.40039 12 12 12h24zM440 448\nc6.59961 0 12 -5.40039 12 -12v-24c0 -6.59961 -5.40039 -12 -12 -12s-12 5.40039 -12 12v24c0 6.59961 5.40039 12 12 12zM473.9 393c-4.60059 -4.7002 -12.2002 -4.7002 -17 0c-4.7002 4.7002 -4.7002 12.2998 0 17l17 17c4.69922 4.7002 12.2998 4.7002 17 0\nc4.69922 -4.7002 4.69922 -12.2998 0 -17zM406.1 393l-17 17c-4.69922 4.7002 -4.69922 12.2998 0 17c4.7002 4.7002 12.3008 4.7002 17 0l17 -17c4.7002 -4.7002 4.7002 -12.2998 0 -17c-4.69922 -4.7002 -12.2998 -4.7002 -17 0zM473.9 359l17 -17\nc4.69922 -4.7002 4.69922 -12.2998 0 -17c-4.7002 -4.7002 -12.3008 -4.7002 -17 0l-17 17c-4.7002 4.7002 -4.7002 12.2998 0 17c4.69922 4.7002 12.2998 4.7002 17 0zM112 176c0 35.2998 28.7002 64 64 64c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16\nc-52.9004 0 -96 -43.0996 -96 -96c0 -8.7998 7.2002 -16 16 -16s16 7.2002 16 16z\" />\n    <glyph glyph-name=\"futbol\" unicode=\"&#xf1e3;\" \nd=\"M504 192c0 -136.967 -111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248s248 -111.033 248 -248zM456 192l-0.00292969 0.282227l-26.0645 -22.7412l-62.6787 58.5l16.4541 84.3555l34.3027 -3.07227\nc-24.8887 34.2158 -60.0039 60.0889 -100.709 73.1406l13.6514 -31.9385l-74.9531 -41.5264l-74.9531 41.5254l13.6514 31.9385c-40.6309 -13.0283 -75.7803 -38.8701 -100.709 -73.1406l34.5645 3.07324l16.1924 -84.3555l-62.6777 -58.5l-26.0645 22.7412\nl-0.00292969 -0.282227c0 -43.0146 13.4971 -83.9521 38.4717 -117.991l7.7041 33.8975l85.1387 -10.4473l36.3008 -77.8262l-29.9023 -17.7861c40.2021 -13.1221 84.29 -13.1475 124.572 0l-29.9023 17.7861l36.3008 77.8262l85.1387 10.4473l7.7041 -33.8975\nc24.9756 34.0391 38.4727 74.9766 38.4727 117.991zM207.898 122.429l-29.8945 91.3125l77.9961 56.5264l77.9961 -56.5264l-29.6221 -91.3125h-96.4756z\" />\n    <glyph glyph-name=\"tty\" unicode=\"&#xf1e4;\" \nd=\"M5.37012 344.178c138.532 138.532 362.936 138.326 501.262 0c6.07812 -6.07812 7.07422 -15.4961 2.58301 -22.6807l-43.2139 -69.1377c-2.97266 -4.75684 -9.9375 -8.61719 -15.5459 -8.61719c-1.94922 0 -5 0.587891 -6.81055 1.31152l-86.4219 34.5693\nc-6.36133 2.54492 -11.5244 10.1719 -11.5244 17.0234c0 0.503906 0.0410156 1.32031 0.0908203 1.82227l5.95215 59.5312c-62.1455 22.4541 -130.636 21.9863 -191.483 0l5.95312 -59.5322c0.0507812 -0.501953 0.0908203 -1.32031 0.0908203 -1.8252\nc0 -6.85156 -5.16309 -14.4766 -11.5244 -17.0205l-86.4238 -34.5684c-1.80957 -0.723633 -4.85938 -1.31152 -6.80859 -1.31152c-5.60938 0 -12.5742 3.86035 -15.5469 8.61719l-43.2109 69.1387c-1.53809 2.46094 -2.78711 6.81445 -2.78711 9.7168\nc0 4.19141 2.40625 9.99902 5.37012 12.9629zM96 140c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40zM192 140c0 -6.62695 -5.37305 -12 -12 -12h-40\nc-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40zM288 140c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40zM384 140\nc0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40zM480 140c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40\nc6.62695 0 12 -5.37305 12 -12v-40zM144 44c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40zM240 44c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40\nc0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40zM336 44c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40zM432 44c0 -6.62695 -5.37305 -12 -12 -12h-40\nc-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40zM96 -52c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40zM384 -52\nc0 -6.62695 -5.37305 -12 -12 -12h-232c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h232c6.62695 0 12 -5.37305 12 -12v-40zM480 -52c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40\nc6.62695 0 12 -5.37305 12 -12v-40z\" />\n    <glyph glyph-name=\"binoculars\" unicode=\"&#xf1e5;\" \nd=\"M416 400v-48h-96v48c0 8.83984 7.16016 16 16 16h64c8.83984 0 16 -7.16016 16 -16zM63.9102 288.01c0.479492 17.6201 14.2998 31.9902 31.9297 31.9902h96.1602v-160h-32v-160c0 -17.6699 -14.3301 -32 -32 -32h-96c-17.6699 0 -32 14.3301 -32 32v44\nc3.45996 129.78 61.4004 150.16 63.9102 244.01zM448.09 288.01c2.50977 -93.8496 60.4502 -114.229 63.9102 -244.01v-44c0 -17.6699 -14.3301 -32 -32 -32h-96c-17.6699 0 -32 14.3301 -32 32v160h-32v160h96.1602c17.6299 0 31.4502 -14.3701 31.9297 -31.9902zM176 416\nc8.83984 0 16 -7.16016 16 -16v-48h-96v48c0 8.83984 7.16016 16 16 16h64zM224 160v160h64v-160h-64z\" />\n    <glyph glyph-name=\"plug\" unicode=\"&#xf1e6;\" horiz-adv-x=\"384\" \nd=\"M256 304v112c0 17.6729 14.3271 32 32 32s32 -14.3271 32 -32v-112h-64zM368 288c8.83691 0 16 -7.16309 16 -16v-32c0 -8.83691 -7.16309 -16 -16 -16h-16v-32c0 -77.4062 -54.9688 -141.971 -128 -156.796v-99.2041h-64v99.2041\nc-73.0312 14.8252 -128 79.3896 -128 156.796v32h-16c-8.83691 0 -16 7.16309 -16 16v32c0 8.83691 7.16309 16 16 16h352zM128 304h-64v112c0 17.6729 14.3271 32 32 32s32 -14.3271 32 -32v-112z\" />\n    <glyph glyph-name=\"newspaper\" unicode=\"&#xf1ea;\" horiz-adv-x=\"576\" \nd=\"M552 384c13.2549 0 24 -10.7451 24 -24v-312c0 -26.5098 -21.4902 -48 -48 -48h-472c-30.9277 0 -56 25.0723 -56 56v272c0 13.2549 10.7451 24 24 24h40v8c0 13.2549 10.7451 24 24 24h464zM56 48c4.41602 0 8 3.58398 8 8v248h-16v-248c0 -4.41602 3.58398 -8 8 -8z\nM292 64c6.62695 0 12 5.37305 12 12v8c0 6.62695 -5.37305 12 -12 12h-152c-6.62695 0 -12 -5.37305 -12 -12v-8c0 -6.62695 5.37305 -12 12 -12h152zM500 64c6.62695 0 12 5.37305 12 12v8c0 6.62695 -5.37305 12 -12 12h-152c-6.62695 0 -12 -5.37305 -12 -12v-8\nc0 -6.62695 5.37305 -12 12 -12h152zM292 160c6.62695 0 12 5.37305 12 12v8c0 6.62695 -5.37305 12 -12 12h-152c-6.62695 0 -12 -5.37305 -12 -12v-8c0 -6.62695 5.37305 -12 12 -12h152zM500 160c6.62695 0 12 5.37305 12 12v8c0 6.62695 -5.37305 12 -12 12h-152\nc-6.62695 0 -12 -5.37305 -12 -12v-8c0 -6.62695 5.37305 -12 12 -12h152zM500 256c6.62695 0 12 5.37305 12 12v40c0 6.62695 -5.37305 12 -12 12h-360c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h360z\" />\n    <glyph glyph-name=\"wifi\" unicode=\"&#xf1eb;\" horiz-adv-x=\"640\" \nd=\"M634.91 293.12c6.66016 -6.16016 6.79004 -16.5898 0.359375 -22.9805l-34.2393 -33.9697c-6.14062 -6.08984 -16.0205 -6.22949 -22.4004 -0.379883c-145.95 133.71 -371.33 133.68 -517.25 0c-6.37988 -5.84961 -16.2598 -5.71973 -22.3994 0.379883l-34.2402 33.9697\nc-6.44043 6.39062 -6.31055 16.8203 0.349609 22.9805c177.101 163.81 452.65 163.87 629.82 0zM320 96c35.3496 0 64 -28.6504 64 -64s-28.6504 -64 -64 -64s-64 28.6504 -64 64s28.6504 64 64 64zM522.67 179.59c6.88965 -6.08984 7.12012 -16.6895 0.560547 -23.1494\nl-34.4404 -33.9902c-6 -5.93066 -15.6602 -6.32031 -22.0498 -0.799805c-83.75 72.4092 -209.54 72.5693 -293.49 0c-6.38965 -5.52051 -16.0498 -5.12012 -22.0498 0.799805l-34.4404 33.9902c-6.5498 6.45996 -6.33008 17.0498 0.570312 23.1494\nc115.13 101.82 290.08 101.93 405.34 0z\" />\n    <glyph glyph-name=\"calculator\" unicode=\"&#xf1ec;\" horiz-adv-x=\"448\" \nd=\"M400 448c25.5996 0 48 -22.4004 48 -48v-416c0 -25.5996 -22.4004 -48 -48 -48h-352c-25.5996 0 -48 22.4004 -48 48v416c0 25.5996 22.4004 48 48 48h352zM128 12.7998v38.4004c0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-38.4004\nc-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998v-38.4004c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h38.4004c6.39941 0 12.7998 6.40039 12.7998 12.7998zM128 140.8v38.4004c0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-38.4004\nc-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998v-38.4004c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h38.4004c6.39941 0 12.7998 6.40039 12.7998 12.7998zM256 12.7998v38.4004c0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-38.4004\nc-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998v-38.4004c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h38.4004c6.39941 0 12.7998 6.40039 12.7998 12.7998zM256 140.8v38.4004c0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-38.4004\nc-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998v-38.4004c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h38.4004c6.39941 0 12.7998 6.40039 12.7998 12.7998zM384 12.7998v166.4c0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-38.4004\nc-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998v-166.4c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h38.4004c6.39941 0 12.7998 6.40039 12.7998 12.7998zM384 268.8v102.4c0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-294.4\nc-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998v-102.4c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h294.4c6.39941 0 12.7998 6.40039 12.7998 12.7998z\" />\n    <glyph glyph-name=\"bell-slash\" unicode=\"&#xf1f6;\" horiz-adv-x=\"640\" \nd=\"M633.82 -10.0996c6.97949 -5.43066 8.22949 -15.4805 2.80957 -22.4502l-19.6396 -25.2705c-5.43066 -6.97949 -15.4805 -8.23926 -22.46 -2.80957l-588.351 454.729c-6.97949 5.43066 -8.22949 15.4805 -2.80957 22.4502l19.6396 25.2705\nc5.41992 6.97949 15.4805 8.22949 22.46 2.80957l144.96 -112.04c22.9307 31.5 57.2607 54.1904 97.5898 62.5703v20.8398c0 17.6699 14.3203 32 31.9805 32s31.9805 -14.3301 31.9805 -32v-20.8301c73.46 -15.2598 127.939 -77.46 127.939 -155.16\nc0 -102.3 36.1504 -133.529 55.4697 -154.29c6 -6.43945 8.66016 -14.1602 8.61035 -21.71c0 -1.39941 -0.610352 -2.67969 -0.799805 -4.05957zM157.23 196.46l212.789 -164.46h-241.92c-19.1191 0 -31.9893 15.5996 -32.0996 32\nc-0.0498047 7.5498 2.61035 15.2598 8.61035 21.71c16.21 17.4199 44.0098 42.79 52.6201 110.75zM320 -64c-35.3203 0 -63.9697 28.6504 -63.9697 64h127.939c0 -35.3496 -28.6494 -64 -63.9697 -64z\" />\n    <glyph glyph-name=\"trash\" unicode=\"&#xf1f8;\" horiz-adv-x=\"448\" \nd=\"M432 416c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h120l9.40039 18.7002c3.58984 7.3418 13.1357 13.2998 21.3086 13.2998h0.0908203h114.3h0.0175781\nc8.20215 0 17.8262 -5.95801 21.4824 -13.2998l9.40039 -18.7002h120zM53.2002 -19l-21.2002 339h384l-21.2002 -339c-1.55469 -24.8369 -23.0146 -44.9971 -47.8994 -45h-245.801c-24.8848 0.00292969 -46.3447 20.1631 -47.8994 45z\" />\n    <glyph glyph-name=\"copyright\" unicode=\"&#xf1f9;\" \nd=\"M256 440c136.967 0 248 -111.033 248 -248s-111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248zM373.134 93.2471c1.58203 1.85645 2.86621 5.34375 2.86621 7.7832c0 2.16309 -1.03613 5.33594 -2.31348 7.08301l-24.5469 33.5713\nc-4.44824 6.08691 -13.376 6.61816 -18.5078 1.05371c-0.263672 -0.287109 -26.8467 -28.625 -65.5439 -28.625c-48.7627 0 -74.2773 40.0898 -74.2773 79.6914c0 42.5068 27.8008 76.082 73.916 76.082c35.3516 0 61.6475 -23.666 61.8809 -23.8799\nc5.45996 -5.05566 14.1846 -3.97168 18.2334 2.29492l22.3799 34.6553c1.05957 1.64062 1.91992 4.55762 1.91992 6.51074c0 2.57812 -1.41504 6.21191 -3.15723 8.1123c-1.45703 1.58887 -36.4658 38.9043 -103.423 38.9043\nc-81.7578 0 -143.762 -62.0986 -143.762 -143.401c0 -82.3066 59.792 -145.567 144.484 -145.567c70.0752 0 108.259 43.8643 109.851 45.7314z\" />\n    <glyph glyph-name=\"at\" unicode=\"&#xf1fa;\" \nd=\"M256 440c138.023 0 248 -87.6533 248 -224c0 -75.7979 -41.3906 -147.41 -150.299 -147.41c-30.0977 0 -61.1885 -0.000976562 -70.71 34.1035c-17.6221 -22.6963 -48.0068 -38.333 -74.9912 -38.333c-59.2148 0 -96 40.5664 -96 105.87\nc0 89.2256 63.251 151.46 137.831 151.46c19.5225 0 45.2744 -3.87402 59.9707 -21.7754l0.00976562 0.0917969c0.751953 6.62012 6.76953 11.9932 13.4326 11.9932v0h44.9805c15.083 0 26.4287 -13.75 23.5625 -28.5586l-23.4336 -121.11\nc-3.43359 -17.167 -3.87207 -29.5703 13.4766 -30.0244c37.0771 3.95117 58.1699 44.9072 58.1699 83.6934c0 102.381 -83.8613 160 -184 160c-101.458 0 -184 -82.542 -184 -184s82.542 -184 184 -184c35.3145 0 69.9199 10.2432 99.4102 29.1572\nc10.1934 6.53809 23.7021 4.24219 31.373 -5.12891l10.1768 -12.4336c9.07324 -11.084 6.45312 -27.5566 -5.55176 -35.3721c-40.0664 -26.083 -87.2539 -40.2227 -135.408 -40.2227c-137.081 0 -248 110.941 -248 248c0 137.081 110.941 248 248 248zM234.32 135.57\nc24.2861 0 58.1611 27.6689 58.1611 72.7295c0 25.5293 -13.3096 40.7705 -35.6016 40.7705c-27.8506 0 -58.6299 -27.7363 -58.6299 -72.7295c0 -25.1475 13.8213 -40.7705 36.0703 -40.7705z\" />\n    <glyph glyph-name=\"eye-dropper\" unicode=\"&#xf1fb;\" \nd=\"M50.75 114.75l126.63 126.61l128 -128l-126.64 -126.62c-12 -12 -28.2803 -18.7402 -45.25 -18.7402h-45.4902l-56 -32l-32 32l32 56v45.4902c0 16.9795 6.75 33.2598 18.75 45.2598zM483.88 419.88c37.5 -37.4902 37.5 -98.2695 -0.00976562 -135.75l-77.0898 -77.0898\nl13.0996 -13.0996c9.37012 -9.37012 9.37012 -24.5703 0 -33.9404l-40.9697 -40.96c-9.29004 -9.30957 -24.5 -9.44043 -33.9404 0l-161.939 161.94c-9.37012 9.36914 -9.37012 24.5693 0 33.9395l40.9697 40.9697c9.29004 9.31055 24.5 9.44043 33.9404 0l13.0996 -13.0996\nl77.0898 77.0898c37.4697 37.5 98.2803 37.5 135.75 0z\" />\n    <glyph glyph-name=\"paint-brush\" unicode=\"&#xf1fc;\" \nd=\"M167.02 138.66l88.0107 -73.3398c0.319336 -3.05078 0.969727 -6.02051 0.969727 -9.12988c0 -76.4209 -52.1396 -120.19 -128 -120.19c-90.0703 0 -128 72.3799 -128.01 154.73c9.79004 -6.68066 44.1396 -34.3506 55.25 -34.3506\nc6.58984 0 12.2402 3.77051 14.5898 9.98047c20.6602 54.4395 57.0703 69.7197 97.1895 72.2998zM457.89 448c28.1104 0 54.1104 -20.6396 54.1104 -49.5498c0 -16.1406 -6.51953 -31.6406 -13.9004 -45.9902c-113.05 -210.99 -149.05 -256.46 -211.159 -256.46\nc-7.75 0 -15.1807 1.23047 -22.3906 3.03027l-63.8193 53.1797c-5.48047 11.9404 -8.73047 25 -8.73047 38.7002c0 53.75 21.2695 58.04 225.68 240.64c10.8398 9.74023 25.0508 16.4502 40.21 16.4502z\" />\n    <glyph glyph-name=\"birthday-cake\" unicode=\"&#xf1fd;\" horiz-adv-x=\"448\" \nd=\"M448 64c-28.0195 0 -31.2598 32 -74.5 32c-43.4297 0 -46.8252 -32 -74.75 -32c-27.6953 0 -31.4541 32 -74.75 32c-42.8418 0 -47.2178 -32 -74.5 -32c-28.1484 0 -31.2021 32 -74.75 32c-43.5469 0 -46.6533 -32 -74.75 -32v80c0 26.5 21.5 48 48 48h16v144h64v-144h64\nv144h64v-144h64v144h64v-144h16c26.5 0 48 -21.5 48 -48v-80zM448 -64h-448v96c43.3564 0 46.7666 32 74.75 32c27.9512 0 31.2529 -32 74.75 -32c42.8428 0 47.2168 32 74.5 32c28.1484 0 31.2012 -32 74.75 -32c43.3574 0 46.7666 32 74.75 32\nc27.4883 0 31.252 -32 74.5 -32v-96zM96 352c-17.75 0 -32 14.25 -32 32c0 31 32 23 32 64c12 0 32 -29.5 32 -56s-14.25 -40 -32 -40zM224 352c-17.75 0 -32 14.25 -32 32c0 31 32 23 32 64c12 0 32 -29.5 32 -56s-14.25 -40 -32 -40zM352 352c-17.75 0 -32 14.25 -32 32\nc0 31 32 23 32 64c12 0 32 -29.5 32 -56s-14.25 -40 -32 -40z\" />\n    <glyph glyph-name=\"chart-area\" unicode=\"&#xf1fe;\" \nd=\"M500 64c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-488c-6.59961 0 -12 5.40039 -12 12v360c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-308h436zM372.7 288.5c6 4 14.2002 1.7998 17.3994 -4.7002l89.9004 -187.8h-384v104\nl86.7998 144.7c4.40039 7.2998 14.7998 7.7998 19.9004 1l85.2998 -113.7z\" />\n    <glyph glyph-name=\"chart-pie\" unicode=\"&#xf200;\" horiz-adv-x=\"544\" \nd=\"M527.79 160c9.5498 0 17.4004 -8.38965 16.0596 -17.8496c-7.80957 -55.25 -34.4297 -104.4 -73.1299 -140.86c-6.20996 -5.84961 -16.1494 -5.36035 -22.1895 0.679688l-158.03 158.03h237.29zM511.96 224.8c0.629883 -9.12012 -7.0498 -16.7998 -16.1904 -16.7998\nh-223.77v223.76c0 9.14062 7.67969 16.8301 16.7998 16.2002c119.46 -8.24023 214.92 -103.7 223.16 -223.16zM224 160l155.86 -155.87c6.84961 -6.84961 6.33008 -18.4795 -1.57031 -24.0801c-38.29 -27.1602 -84.8604 -43.3994 -135.26 -44.0303\nc-128.2 -1.60938 -238.53 103.471 -242.891 231.61c-4.23926 124.771 86.8506 228.88 206.021 245.72c9.4502 1.34082 17.8398 -6.50977 17.8398 -16.0596v-237.29z\" />\n    <glyph glyph-name=\"chart-line\" unicode=\"&#xf201;\" \nd=\"M496 64c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-464c-17.6699 0 -32 14.3301 -32 32v336c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-304h432zM464 352c8.83984 0 16 -7.16016 15.9902 -16v-118.05\nc0 -21.3799 -25.8506 -32.0898 -40.9707 -16.9697l-32.3994 32.3994l-96 -96c-12.4902 -12.5 -32.75 -12.5 -45.25 0l-73.3701 73.3701l-46.0596 -46.0703c-6.25 -6.25 -16.3809 -6.25 -22.6309 0l-22.6191 22.6201c-6.25 6.25 -6.25 16.3799 0 22.6299l68.6895 68.6904\nc12.4902 12.5 32.75 12.5 45.25 0l73.3701 -73.3701l73.3701 73.3799l-32.4004 32.4004c-15.1201 15.1201 -4.41016 40.9697 16.9707 40.9697h118.06z\" />\n    <glyph glyph-name=\"toggle-off\" unicode=\"&#xf204;\" horiz-adv-x=\"576\" \nd=\"M384 384c106.039 0 192 -85.9609 192 -192s-85.9609 -192 -192 -192h-192c-106.039 0 -192 85.9609 -192 192s85.9609 192 192 192h192zM64 192c0 -70.751 57.2588 -128 128 -128c70.751 0 128 57.2588 128 128c0 70.751 -57.2588 128 -128 128\nc-70.751 0 -128 -57.2588 -128 -128zM384 64c70.751 0 128 57.2598 128 128c0 70.751 -57.2588 128 -128 128h-48.9053c65.2363 -72.8799 65.2168 -183.142 0 -256h48.9053z\" />\n    <glyph glyph-name=\"toggle-on\" unicode=\"&#xf205;\" horiz-adv-x=\"576\" \nd=\"M384 384c106 0 192 -86 192 -192s-86 -192 -192 -192h-192c-106 0 -192 86 -192 192s86 192 192 192h192zM384 64c70.7002 0 128 57.2002 128 128c0 70.7002 -57.2002 128 -128 128c-70.7002 0 -128 -57.2002 -128 -128c0 -70.7002 57.2002 -128 128 -128z\" />\n    <glyph glyph-name=\"bicycle\" unicode=\"&#xf206;\" horiz-adv-x=\"640\" \nd=\"M512.509 255.999c70.9502 -0.276367 128.562 -59.0547 127.477 -129.996c-1.07422 -70.1934 -58.6494 -126.681 -129.255 -125.996c-68.8301 0.667969 -126.584 58.8857 -126.729 127.719c-0.078125 37.3564 15.8516 70.9893 41.3066 94.4375l-14.9375 24.0674\nl-85.9619 -138.863c-3.88477 -6.27441 -13.0264 -11.3672 -20.4062 -11.3672h-52.0332c-14.209 -55.207 -64.3252 -96 -123.967 -96c-70.9473 0 -128.415 57.7207 -128 128.764c0.410156 70.2246 58.0918 127.406 128.317 127.236\nc15.0879 -0.0371094 29.5586 -2.69043 42.9912 -7.51953l29.417 47.5195h-48.7256c-13.1191 0 -23.7627 10.5186 -23.9951 23.5635c-0.241211 13.4375 11.0947 24.4365 24.5361 24.4365h87.459c8.83691 0 16 -7.16309 16 -16v-16h113.544l-14.8955 24h-50.6494\nc-8.83691 0 -16 7.16309 -16 16v16c0 8.83691 7.16309 16 16 16h64h0.000976562c7.36914 0 16.5049 -5.08203 20.3906 -11.3428l77.6807 -125.153c14.4053 5.54004 30.0625 8.55957 46.4355 8.49512zM186.75 182.228l-23.6641 -38.2275h43.3057\nc-2.96875 14.5674 -9.91504 27.6992 -19.6416 38.2275zM128.002 48c32.7383 0 60.9297 19.7754 73.2998 48h-81.2998c-18.7891 0 -30.2871 20.6729 -20.4062 36.6318l45.5049 73.5088c-5.5127 1.20605 -11.2295 1.85938 -17.0986 1.85938c-44.1123 0 -80 -35.8877 -80 -80\ns35.8877 -80 80 -80zM290.632 144l74.2861 120h-127.547l-24.7461 -39.9736c22.8271 -20.1328 38.4229 -48.2705 42.3828 -80.0264h35.624zM507.689 48.1143c46.0605 -2.43164 84.3115 34.3447 84.3125 79.8848c0 44.1123 -35.8877 80 -80 80h-0.0390625\nc-5.55664 0 -14.4355 -1.11914 -19.8193 -2.49707l44.4688 -71.6426c4.66113 -7.50879 2.35156 -17.3721 -5.15625 -22.0322l-13.5938 -8.4375c-7.50879 -4.65918 -17.3721 -2.35156 -22.0322 5.15625l-44.4326 71.5859\nc-12.7021 -14.7451 -20.1475 -34.1416 -19.3359 -55.2627c1.57812 -41.0635 34.5918 -74.5898 75.6279 -76.7549z\" />\n    <glyph glyph-name=\"bus\" unicode=\"&#xf207;\" \nd=\"M488 320c13.25 0 24 -10.7402 24 -24v-80c0 -13.25 -10.75 -24 -24 -24h-8v-166.4c0 -12.7998 -9.59961 -25.5996 -25.5996 -25.5996h-6.40039v-32c0 -17.6699 -14.3301 -32 -32 -32h-32c-17.6699 0 -32 14.3301 -32 32v32h-192v-32c0 -17.6699 -14.3301 -32 -32 -32h-32\nc-17.6699 0 -32 14.3301 -32 32v32c-17.6699 0 -32 14.3301 -32 32v160h-8c-13.25 0 -24 10.75 -24 24v80c0 13.2598 10.75 24 24 24h8v48c0 44.7998 99.2002 80 224 80s224 -35.2002 224 -80v-48h8zM112 48c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32\ns-32 -14.3301 -32 -32s14.3301 -32 32 -32zM128 160h256c17.6699 0 32 14.3301 32 32v128c0 17.6699 -14.3301 32 -32 32h-256c-17.6699 0 -32 -14.3301 -32 -32v-128c0 -17.6699 14.3301 -32 32 -32zM400 48c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32\ns-32 -14.3301 -32 -32s14.3301 -32 32 -32z\" />\n    <glyph glyph-name=\"closed-captioning\" unicode=\"&#xf20a;\" \nd=\"M464 384c26.5 0 48 -21.5 48 -48v-288c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v288c0 26.5 21.5 48 48 48h416zM218.1 160.3c-41.1992 -37.8994 -92.1992 -15.3994 -92.2998 32.6006c0 46.0996 53.7998 63.1992 94.6006 31.1992\nc2.89941 -2.2998 7.19922 -1.39941 9.09961 1.7002l17.5 30.5c1.5 2.5 1.09961 3.7002 -1 5.7002c-50.7998 49.4004 -172.5 27.2002 -172.5 -70.0996c0 -100 119.2 -124.7 172.8 -67.9004c2 2.09961 2.2002 5.2998 0.5 7.7002l-19.5 27.7002\nc-2.09961 3 -6.39941 3.39941 -9.2002 0.899414zM408.5 160.3c-41.2002 -37.8994 -92.2002 -15.3994 -92.2002 32.6006c0 46.0996 53.7998 63.1992 94.6006 31.1992c2.89941 -2.2998 7.19922 -1.39941 9.09961 1.7002l17.5 30.5c1.5 2.5 1.09961 3.7002 -1 5.7002\nc-50.7998 49.4004 -172.5 27.2002 -172.5 -70.0996c0 -100 119.2 -124.801 172.7 -67.9004c2 2.09961 2.2002 5.2998 0.5 7.7002l-19.5 27.7002c-2.10059 3 -6.40039 3.39941 -9.2002 0.899414z\" />\n    <glyph glyph-name=\"shekel-sign\" unicode=\"&#xf20b;\" horiz-adv-x=\"448\" \nd=\"M248 280c0 30.9297 -25.0703 56 -56 56h-112v-352c0 -8.83984 -7.16016 -16 -16 -16h-48c-8.83984 0 -16 7.16016 -16 16v408c0 13.2598 10.75 24 24 24h168c75.1104 0 136 -60.8896 136 -136v-168c0 -8.83984 -7.16016 -16 -16 -16h-48c-8.83984 0 -16 7.16016 -16 16\nv168zM432 416c8.83984 0 16 -7.16016 16 -16v-296c0 -75.1104 -60.8896 -136 -136 -136h-168c-13.25 0 -24 10.75 -24 24v280c0 8.83984 7.16016 16 16 16h48c8.83984 0 16 -7.16016 16 -16v-224h112c30.9297 0 56 25.0703 56 56v296c0 8.83984 7.16016 16 16 16h48z\" />\n    <glyph glyph-name=\"cart-plus\" unicode=\"&#xf217;\" horiz-adv-x=\"576\" \nd=\"M504.717 128h-293.145l6.54492 -32h268.418c15.4004 0 26.8154 -14.3008 23.4033 -29.3193l-5.51758 -24.2754c18.6914 -9.07324 31.5791 -28.2334 31.5791 -50.4053c0 -31.2021 -25.5186 -56.4443 -56.8242 -55.9941\nc-29.8232 0.428711 -54.3496 24.6309 -55.1543 54.4473c-0.44043 16.2871 6.08496 31.0488 16.8027 41.5479h-209.648c10.377 -10.166 16.8242 -24.3271 16.8242 -40.001c0 -31.8135 -26.5283 -57.4307 -58.6699 -55.9385c-28.54 1.3252 -51.751 24.3857 -53.251 52.917\nc-1.1582 22.0342 10.4355 41.4551 28.0508 51.5869l-70.2471 343.435h-69.8828c-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24h102.529c11.4004 0 21.2275 -8.02148 23.5127 -19.1904l9.16602 -44.8096h392.782\nc15.4004 0 26.8154 -14.3008 23.4023 -29.3193l-47.2725 -208c-2.4834 -10.9268 -12.1973 -18.6807 -23.4033 -18.6807zM408 280h-48v40c0 8.83691 -7.16309 16 -16 16h-16c-8.83691 0 -16 -7.16309 -16 -16v-40h-48c-8.83691 0 -16 -7.16309 -16 -16v-16\nc0 -8.83691 7.16309 -16 16 -16h48v-40c0 -8.83691 7.16309 -16 16 -16h16c8.83691 0 16 7.16309 16 16v40h48c8.83691 0 16 7.16309 16 16v16c0 8.83691 -7.16309 16 -16 16z\" />\n    <glyph glyph-name=\"cart-arrow-down\" unicode=\"&#xf218;\" horiz-adv-x=\"576\" \nd=\"M504.717 128h-293.145l6.54492 -32h268.418c15.4004 0 26.8154 -14.3008 23.4033 -29.3193l-5.51758 -24.2754c18.6914 -9.07324 31.5791 -28.2334 31.5791 -50.4053c0 -31.2021 -25.5186 -56.4443 -56.8242 -55.9941\nc-29.8232 0.428711 -54.3496 24.6309 -55.1543 54.4473c-0.44043 16.2871 6.08496 31.0488 16.8027 41.5479h-209.648c10.377 -10.166 16.8242 -24.3271 16.8242 -40.001c0 -31.8135 -26.5283 -57.4307 -58.6699 -55.9385c-28.54 1.3252 -51.751 24.3857 -53.251 52.917\nc-1.1582 22.0342 10.4355 41.4551 28.0508 51.5869l-70.2471 343.435h-69.8828c-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24h102.529c11.4004 0 21.2275 -8.02148 23.5127 -19.1904l9.16602 -44.8096h392.782\nc15.4004 0 26.8154 -14.3008 23.4023 -29.3193l-47.2725 -208c-2.4834 -10.9268 -12.1973 -18.6807 -23.4033 -18.6807zM403.029 256h-43.0293v60c0 6.62695 -5.37305 12 -12 12h-24c-6.62695 0 -12 -5.37305 -12 -12v-60h-43.0293\nc-10.6904 0 -16.0449 -12.9258 -8.48438 -20.4854l67.0283 -67.0283c4.68652 -4.68652 12.2842 -4.68652 16.9717 0l67.0283 67.0283c7.55957 7.55957 2.20508 20.4854 -8.48535 20.4854z\" />\n    <glyph glyph-name=\"ship\" unicode=\"&#xf21a;\" horiz-adv-x=\"640\" \nd=\"M496.616 75.3613c17.8418 -44.3604 58.5664 -75.3613 119.384 -75.3613c13.2549 0 24 -10.7451 24 -24v-16c0 -13.2549 -10.7451 -24 -24 -24c-61.0322 0 -107.505 20.6162 -143.258 59.3965c-14.4189 -34.8281 -48.7637 -59.3965 -88.7422 -59.3965h-128\nc-39.9785 0 -74.3232 24.5684 -88.7422 59.3965c-35.7588 -38.7861 -82.2344 -59.3965 -143.258 -59.3965c-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24c61.5869 0 101.828 31.7129 119.384 75.3613l-70.0117 70.0117\nc-16.918 16.9189 -9.91699 45.7793 12.8359 53.0918l41.792 13.4336v140.102c0 17.6729 14.3271 32 32 32h64v40c0 13.2549 10.7451 24 24 24h144c13.2549 0 24 -10.7451 24 -24v-40h64c17.6729 0 32 -14.3271 32 -32v-140.102l41.792 -13.4336\nc22.7783 -7.32129 29.7354 -36.1914 12.8359 -53.0918zM192 320v-87.5312l118.208 37.9951c2.63574 0.847656 7.02344 1.53516 9.79199 1.53516s7.15625 -0.6875 9.79199 -1.53516l118.208 -37.9951v87.5312h-256z\" />\n    <glyph glyph-name=\"user-secret\" unicode=\"&#xf21b;\" horiz-adv-x=\"448\" \nd=\"M383.9 139.7c38.2998 -23.7002 64.0996 -65.7002 64.0996 -114.101v-44.7998c0 -24.7002 -20.0996 -44.7998 -44.7998 -44.7998h-358.4c-24.7002 0 -44.7998 20.0996 -44.7998 44.7998v44.7998c0 49.7002 27.2998 92.6006 67.4004 115.9l-25.8008 60.2002\nc-4.5 10.5996 3.2002 22.2998 14.7002 22.2998h57.5c-11 18.9004 -17.7998 40.5996 -17.7998 64v0.299805c-39.2002 7.7998 -64 19.1006 -64 31.7002c0 13.2998 27.2998 25.0996 70 33c9.2002 32.7998 27.0996 65.7998 40.5996 82.7998\nc9.5 11.9004 25.9004 15.6006 39.5 8.7998l27.6006 -13.7998c9 -4.5 19.5996 -4.5 28.5996 0l27.6006 13.7998c13.5996 6.80078 30 3.10059 39.5 -8.7998c13.5996 -17 31.3994 -50 40.5996 -82.7998c42.7998 -7.90039 70.0996 -19.7002 70.0996 -33\nc0 -12.5996 -24.7998 -23.9004 -64 -31.7002v-0.299805c0 -23.4004 -6.7998 -45.0996 -17.7998 -64h58.5c11.2998 0 19 -11.2002 15 -21.7002zM176 -32l32 120l-24 40l-49.5996 32zM272 -32l41.5996 192l-49.5996 -32l-24 -40zM313.7 266.5\nc0.799805 2.59961 6.2998 5.7002 6.39941 5.7998v10.7998c-28.2998 -3.69922 -61 -5.7998 -96 -5.7998s-67.6992 2.2002 -96 5.7998v-10.7998c0 -0.0996094 5.5 -3.2998 6.30078 -5.7998c3.7998 -11.9004 7 -24.5996 16.5 -33.4004c8 -7.39941 47 -25.1992 64 25\nc2.89941 8.40039 15.5 8.40039 18.2998 0c16 -47.3994 53.8994 -34.2998 64 -25c9.5 8.80078 12.5996 21.5 16.5 33.4004z\" />\n    <glyph glyph-name=\"motorcycle\" unicode=\"&#xf21c;\" horiz-adv-x=\"640\" \nd=\"M512.9 256c69.5996 -0.5 126.5 -57.2998 127.199 -126.9c0.600586 -71.5996 -57.5996 -129.8 -129.199 -129.1c-69.6006 0.599609 -126.301 57.5 -126.801 127.1c-0.299805 39.3008 17.2002 74.5 44.8008 98.2002l-12.5 20.7998\nc-38.7002 -31.2998 -58.3008 -77.8994 -56.2002 -125c0.599609 -13.6992 -10.2998 -25.0996 -24 -25.0996h-84.2002c-14.2998 -55.2002 -64.4004 -96 -124 -96c-71.7002 0 -129.6 58.9004 -128 131c1.59961 67.4004 55.9004 122.5 123.2 124.9\nc14.3994 0.5 28.2998 -1.30078 41.2998 -5.2002l11.2998 20.5c-9.09961 13.8994 -23.2998 24.7998 -47.7998 24.7998h-56c-13.0996 0 -23.7998 10.5 -24 23.5c-0.299805 13.5 11 24.5 24.5 24.5h55.5c55 0 82.2002 -16.9004 99.9004 -40h153.699l-19.1992 32h-66.4004\nc-8.7998 0 -16 7.2002 -16 16v16c0 8.7998 7.2002 16 16 16h80c8.40039 0 16.2002 -4.40039 20.5996 -11.5996l22.8008 -38l37.5 41.6992c4.5 5 11 7.90039 17.7998 7.90039h45.2998c13.2998 0 24 -10.7002 24 -24v-32c0 -13.2998 -10.7002 -24 -24 -24h-82.4004\nl32.9004 -54.9004c13.2998 4.60059 27.5 7 42.4004 6.90039zM128 48c32.7002 0 60.9004 19.7998 73.2998 48h-81.2998c-18.2002 0 -29.7998 19.5996 -21 35.5996l41.5 75.4004c-4.09961 0.700195 -8.2998 1 -12.5 1c-44.0996 0 -80 -35.9004 -80 -80s35.9004 -80 80 -80z\nM591.9 123.6c2.39941 46.1006 -34.3008 84.4004 -79.9004 84.3008c-5.40039 0 -10.7002 -0.5 -15.9004 -1.60059l48.6006 -80.8994c4.5 -7.60059 2.09961 -17.5 -5.5 -22l-13.7002 -8.2002c-7.59961 -4.5 -17.5 -2.10059 -22 5.5l-49.4004 82.3994\nc-13.6992 -14.2998 -22.0996 -33.6992 -22.0996 -55.0996c0 -45.5996 38.2998 -82.4004 84.4004 -79.9004c40.5 2.10059 73.2998 34.9004 75.5 75.5z\" />\n    <glyph glyph-name=\"street-view\" unicode=\"&#xf21d;\" \nd=\"M367.9 118.24c85.2295 -15.5801 144.1 -48.29 144.1 -86.2402c0 -53.0195 -114.62 -96 -256 -96s-256 42.9805 -256 96c0 37.9502 58.8701 70.6602 144.1 86.2402c4.62012 -5.2998 9.78027 -10.1006 15.9004 -13.6504v-22.9395\nc-66.5195 -9.35059 -112 -28.0508 -112 -49.6504c0 -30.9297 93.1201 -56 208 -56s208 25.0703 208 56c0 21.5996 -45.4805 40.3096 -112 49.6504v22.9395c6.12012 3.5498 11.2803 8.35059 15.9004 13.6504zM256 320c-35.3496 0 -64 28.6504 -64 64s28.6504 64 64 64\ns64 -28.6504 64 -64s-28.6504 -64 -64 -64zM192 128c-17.6699 0 -32 14.3301 -32 32v96c0 26.5098 21.4902 48 48 48h11.7998c11.0703 -5.03027 23.2598 -8 36.2002 -8s25.1299 2.96973 36.2002 8h11.7998c26.5098 0 48 -21.4902 48 -48v-96\nc0 -17.6699 -14.3301 -32 -32 -32v-96c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v96z\" />\n    <glyph glyph-name=\"heartbeat\" unicode=\"&#xf21e;\" \nd=\"M320.2 204.2l22.0996 -44.2002h109.101l-182.601 -186.5c-7.09961 -7.2998 -18.5996 -7.2998 -25.7002 0l-182.5 186.5h94.1006l30 71.7002l56.8994 -126.3c5.5 -12.3008 22.9004 -12.7002 28.9004 -0.600586zM473.7 374.1\nc48.7002 -49.7998 50.7998 -129.1 7.2998 -182.1h-118.9l-27.5996 55.2002c-5.90039 11.7998 -22.7002 11.7998 -28.5996 0l-49 -97.9004l-58.2002 129.3c-5.7998 12.8008 -24 12.5 -29.4004 -0.399414l-35.8994 -86.2002h-102.4c-43.5 53 -41.4004 132.3 7.2998 182.1\nl2.40039 2.40039c51.5 52.7002 135.899 52.7002 187.399 0l27.9004 -28.5l27.9004 28.5996c51.5996 52.6006 135.899 52.6006 187.399 0z\" />\n    <glyph glyph-name=\"venus\" unicode=\"&#xf221;\" horiz-adv-x=\"288\" \nd=\"M288 272c0 -68.5 -47.9004 -125.9 -112 -140.4v-51.5996h36c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-36v-36c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v36h-36c-6.59961 0 -12 5.40039 -12 12v40\nc0 6.59961 5.40039 12 12 12h36v51.5996c-64.0996 14.5 -112 71.9004 -112 140.4c0 79.5 64.5 144 144 144s144 -64.5 144 -144zM64 272c0 -44.0996 35.9004 -80 80 -80s80 35.9004 80 80s-35.9004 80 -80 80s-80 -35.9004 -80 -80z\" />\n    <glyph glyph-name=\"mars\" unicode=\"&#xf222;\" horiz-adv-x=\"384\" \nd=\"M372 384c6.59961 0 12 -5.40039 12 -12v-79c0 -10.7002 -12.9004 -16.0996 -20.5 -8.5l-16.9004 16.9004l-80.6992 -80.7002c14 -22.2002 22.0996 -48.5 22.0996 -76.7002c0 -79.5 -64.5 -144 -144 -144s-144 64.5 -144 144s64.5 144 144 144\nc28.2002 0 54.5 -8.09961 76.7002 -22.0996l80.7002 80.6992l-16.9004 16.9004c-7.5 7.59961 -2.2002 20.5 8.5 20.5h79zM144 64c44.0996 0 80 35.9004 80 80s-35.9004 80 -80 80s-80 -35.9004 -80 -80s35.9004 -80 80 -80z\" />\n    <glyph glyph-name=\"mercury\" unicode=\"&#xf223;\" horiz-adv-x=\"288\" \nd=\"M288 240c0 -68.5 -47.9004 -125.9 -112 -140.4v-51.5996h36c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-36v-36c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v36h-36c-6.59961 0 -12 5.40039 -12 12v40\nc0 6.59961 5.40039 12 12 12h36v51.5996c-64.0996 14.5 -112 71.9004 -112 140.4c0 44.2002 19.9004 83.7002 51.2002 110c-2.5 1.90039 -4.90039 3.7998 -7.2002 5.7998c-24.7998 21.2002 -39.7998 48.7998 -43.2002 78.9004\nc-0.899414 7.09961 4.7002 13.2998 11.9004 13.2998h40.5c5.7002 0 10.5996 -4.09961 11.7002 -9.7998c2.5 -12.5 9.59961 -24.2998 20.6992 -33.7998c15.4004 -13.2002 36.1006 -20.4004 58.4004 -20.4004s43 7.2002 58.2998 20.4004\nc11.1006 9.5 18.2998 21.2998 20.7002 33.7998c1.09961 5.7002 6 9.7998 11.7998 9.7998h40.5c7.2002 0 12.7998 -6.2002 11.9004 -13.2998c-3.40039 -30 -18.5 -57.6006 -43.2002 -78.7998c-2.2998 -2 -4.7002 -4 -7.2002 -5.80078\nc31.2998 -26.3994 51.2002 -65.8994 51.2002 -110.1zM64 240c0 -44.0996 35.9004 -80 80 -80s80 35.9004 80 80s-35.9004 80 -80 80s-80 -35.9004 -80 -80z\" />\n    <glyph glyph-name=\"transgender\" unicode=\"&#xf224;\" horiz-adv-x=\"384\" \nd=\"M372 448c6.59961 0 12 -5.40039 12 -12v-79c0 -10.7002 -12.9004 -16.0996 -20.5 -8.5l-16.9004 16.9004l-80.6992 -80.7002c14 -22.2002 22.0996 -48.5 22.0996 -76.7002c0 -68.5 -47.9004 -125.8 -112 -140.4v-27.5996h36c6.59961 0 12 -5.40039 12 -12v-40\nc0 -6.59961 -5.40039 -12 -12 -12h-36v-28c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v28h-36c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h36v27.5996c-64.0996 14.5 -112 71.9004 -112 140.4c0 79.5 64.5 144 144 144\nc28.2002 0 54.5 -8.09961 76.7002 -22.0996l80.7002 80.6992l-16.9004 16.9004c-7.5 7.59961 -2.2002 20.5 8.5 20.5h79zM144 128c44.0996 0 80 35.9004 80 80s-35.9004 80 -80 80s-80 -35.9004 -80 -80s35.9004 -80 80 -80z\" />\n    <glyph glyph-name=\"transgender-alt\" unicode=\"&#xf225;\" horiz-adv-x=\"480\" \nd=\"M468 448c6.59961 0 12 -5.40039 12 -12v-79c0 -10.7002 -12.9004 -16.0996 -20.5 -8.5l-16.9004 16.9004l-80.6992 -80.7002c14 -22.2002 22.0996 -48.5 22.0996 -76.7002c0 -68.5 -47.9004 -125.8 -112 -140.4v-27.5996h36c6.59961 0 12 -5.40039 12 -12v-40\nc0 -6.59961 -5.40039 -12 -12 -12h-36v-28c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v28h-36c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h36v27.5996c-64.0996 14.5 -112 71.9004 -112 140.4\nc0 28.2002 8.09961 54.5 22.2002 76.5996l-16.5 16.5l-19.7998 -19.7998c-4.7002 -4.7002 -12.3008 -4.7002 -17 0l-28.3008 28.2998c-4.69922 4.7002 -4.69922 12.3008 0 17l19.8008 19.8008l-19 19l-16.9004 -16.9004c-7.59961 -7.5 -20.5 -2.2002 -20.5 8.5v79\nc0 6.59961 5.40039 12 12 12h79c10.7002 0 16.0996 -12.9004 8.40039 -20.4004l-16.9004 -16.8994l19 -19l19.7998 19.7998c4.7002 4.7002 12.2998 4.7002 17 0l28.2998 -28.2998c4.7002 -4.7002 4.7002 -12.2998 0 -17l-19.7998 -19.7998l16.5 -16.5\nc22.2002 14 48.5 22.0996 76.7002 22.0996s54.5 -8.09961 76.7002 -22.0996l80.7002 80.6992l-16.9004 16.9004c-7.5 7.59961 -2.2002 20.5 8.5 20.5h79zM240 128c44.0996 0 80 35.9004 80 80s-35.9004 80 -80 80s-80 -35.9004 -80 -80s35.9004 -80 80 -80z\" />\n    <glyph glyph-name=\"venus-double\" unicode=\"&#xf226;\" \nd=\"M288 272c0 -68.5 -47.9004 -125.9 -112 -140.4v-51.5996h36c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-36v-36c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v36h-36c-6.59961 0 -12 5.40039 -12 12v40\nc0 6.59961 5.40039 12 12 12h36v51.5996c-64.0996 14.5 -112 71.9004 -112 140.4c0 79.5 64.5 144 144 144s144 -64.5 144 -144zM64 272c0 -44.0996 35.9004 -80 80 -80s80 35.9004 80 80s-35.9004 80 -80 80s-80 -35.9004 -80 -80zM400 131.6v-51.5996h36\nc6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-36v-36c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v36h-36c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h36v51.5996\nc-21.2002 4.80078 -40.5996 14.3008 -57.2002 27.3008c14 16.6992 25 36 32.1006 57.0996c14.5 -14.7998 34.6992 -24 57.0996 -24c44.0996 0 80 35.9004 80 80s-35.9004 80 -80 80c-22.2998 0 -42.5996 -9.2002 -57.0996 -24\nc-7.10059 21.0996 -18 40.4004 -32.1006 57.0996c24.6006 19.3008 55.5 30.9004 89.2002 30.9004c79.5 0 144 -64.5 144 -144c0 -68.5 -47.9004 -125.9 -112 -140.4z\" />\n    <glyph glyph-name=\"mars-double\" unicode=\"&#xf227;\" \nd=\"M340 448c6.59961 0 12 -5.40039 12 -12v-79c0 -7.2002 -5.90039 -12 -12.0996 -12c-2.90039 0 -6 1.09961 -8.40039 3.5l-16.9004 16.9004l-48.6992 -48.7002c14 -22.2002 22.0996 -48.5 22.0996 -76.7002c0 -79.5 -64.5 -144 -144 -144s-144 64.5 -144 144\ns64.5 144 144 144c28.2002 0 54.5 -8.09961 76.7002 -22.0996l48.7002 48.6992l-16.9004 16.9004c-7.5 7.59961 -2.2002 20.5 8.5 20.5h79zM144 160c44.0996 0 80 35.9004 80 80s-35.9004 80 -80 80s-80 -35.9004 -80 -80s35.9004 -80 80 -80zM500 288.1\nc6.59961 0 12 -5.39941 12 -12.0996v-79c0 -7.2002 -5.90039 -12 -12.0996 -12c-3 0 -6 1.09961 -8.40039 3.5l-16.9004 16.9004l-48.6992 -48.7002c14 -22.2002 22.0996 -48.5 22.0996 -76.7002c0 -79.5 -64.5 -144 -144 -144c-74.4004 0 -135.6 56.4004 -143.2 128.9\nc21.7998 2 43.2998 8.19922 63.2998 18.3994c-0.0996094 -1 -0.0996094 -2.09961 -0.0996094 -3.2002c0 -44.0996 35.9004 -80 80 -80s80 35.9004 80 80c0 44.1006 -35.9004 80 -80 80c-1 0 -2.09961 -0.0996094 -3.2002 -0.0996094\nc10.2002 20 16.2998 41.5 18.4004 63.2998c22.5 -2.39941 43.2998 -9.89941 61.5 -21.2998l48.7002 48.7002l-16.9004 16.8994c-7.5 7.60059 -2.2002 20.5 8.5 20.5h79z\" />\n    <glyph glyph-name=\"venus-mars\" unicode=\"&#xf228;\" horiz-adv-x=\"576\" \nd=\"M564 448c6.59961 0 12 -5.40039 12 -12v-79c0 -7.2002 -5.90039 -12 -12.0996 -12c-3 0 -6 1.09961 -8.40039 3.5l-16.9004 16.9004l-48.6992 -48.7002c14 -22.2002 22.0996 -48.5 22.0996 -76.7002c0 -79.5 -64.5 -144 -144 -144\nc-33.7002 0 -64.7002 11.5 -89.2002 30.9004c14.1006 16.6992 25 36 32.1006 57.0996c14.5 -14.7998 34.7998 -24 57.0996 -24c44.0996 0 80 35.9004 80 80s-35.9004 80 -80 80c-22.4004 0 -42.5996 -9.2002 -57.0996 -24\nc-7.10059 21.0996 -18.1006 40.4004 -32.1006 57.0996c24.6006 19.3008 55.5 30.9004 89.2002 30.9004c28.2002 0 54.5 -8.09961 76.7002 -22.0996l48.7002 48.6992l-16.9004 16.9004c-7.5 7.59961 -2.2002 20.5 8.5 20.5h79zM144 384c79.5 0 144 -64.5 144 -144\nc0 -68.5 -47.9004 -125.8 -112 -140.4v-51.5996h36c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-36v-36c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v36h-36c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12\nh36v51.5996c-64.0996 14.5 -112 71.9004 -112 140.4c0 79.5 64.5 144 144 144zM144 160c44.0996 0 80 35.9004 80 80s-35.9004 80 -80 80s-80 -35.9004 -80 -80s35.9004 -80 80 -80z\" />\n    <glyph glyph-name=\"mars-stroke\" unicode=\"&#xf229;\" horiz-adv-x=\"384\" \nd=\"M372 384c6.59961 0 12 -5.40039 12.0996 -12v-78.9004c0 -10.6992 -12.8994 -16.0996 -20.5 -8.5l-16.8994 16.9004l-17.5 -17.5l14.0996 -14.0996c4.7002 -4.7002 4.7002 -12.3008 0 -17l-28.2998 -28.3008c-4.7002 -4.69922 -12.2998 -4.69922 -17 0l-14.0996 14.1006\nl-18 -18c14 -22.2002 22.0996 -48.5 22.0996 -76.7002c0 -79.5 -64.5 -144 -144 -144s-144 64.5 -144 144s64.5 144 143.9 144c28.1992 0 54.5 -8.09961 76.6992 -22.0996l18 18l-14.0996 14.0996c-4.7002 4.7002 -4.7002 12.2998 0 17l28.2998 28.2002\nc4.7002 4.7002 12.2998 4.7002 17 0l14.1006 -14.1006l17.5 17.5l-16.9004 16.9004c-7.5 7.59961 -2.2002 20.5 8.5 20.5h79zM144 64c44.0996 0 80 35.9004 80 80s-35.9004 80 -80 80s-80 -35.9004 -80 -80s35.9004 -80 80 -80z\" />\n    <glyph glyph-name=\"mars-stroke-v\" unicode=\"&#xf22a;\" horiz-adv-x=\"288\" \nd=\"M245.8 213.8c56.2998 -56.2002 56.2998 -147.399 0 -203.6c-56.2002 -56.2002 -147.399 -56.2002 -203.6 0s-56.2002 147.399 0 203.6c19.8994 19.9004 44.2002 32.7998 69.7998 38.6006v25.3994h-20c-6.59961 0 -12 5.40039 -12 12v40c0 6.60059 5.40039 12 12 12h20\nv24.7002h-23.9004c-10.6992 0 -16.0996 12.9004 -8.5 20.5l55.9004 55.9004c4.7002 4.69922 12.2998 4.69922 17 0l55.9004 -55.8008c7.5 -7.59961 2.19922 -20.5 -8.5 -20.5h-23.9004v-24.7998h20c6.59961 0 12 -5.39941 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-20\nv-25.3994c25.5996 -5.80078 49.9004 -18.7002 69.7998 -38.6006zM200.6 55.4004c31.2002 31.1992 31.2002 82 0 113.1c-31.1992 31.2002 -81.8994 31.2002 -113.1 0s-31.2002 -81.9004 0 -113.1c31.2002 -31.2002 81.9004 -31.2002 113.1 0z\" />\n    <glyph glyph-name=\"mars-stroke-h\" unicode=\"&#xf22b;\" horiz-adv-x=\"480\" \nd=\"M476.2 200.5c4.7002 -4.7002 4.7002 -12.2998 0.0996094 -17l-55.8994 -55.9004c-7.60059 -7.5 -20.5 -2.19922 -20.5 8.5v23.9004h-23.9004v-20c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v20h-27.5996\nc-5.80078 -25.5996 -18.7002 -49.9004 -38.6006 -69.7998c-56.2002 -56.2002 -147.399 -56.2002 -203.6 0s-56.2002 147.399 0 203.6s147.399 56.2002 203.6 0c19.9004 -19.8994 32.7998 -44.2002 38.6006 -69.7998h27.5996v20c0 6.59961 5.40039 12 12 12h40\nc6.59961 0 12 -5.40039 12 -12v-20h23.7998v23.9004c0 10.6992 12.9004 16.0996 20.5 8.5zM200.6 135.4c31.2002 31.1992 31.2002 82 0 113.1c-31.1992 31.2002 -81.8994 31.2002 -113.1 0s-31.2002 -81.9004 0 -113.1c31.2002 -31.2002 81.9004 -31.2002 113.1 0z\" />\n    <glyph glyph-name=\"neuter\" unicode=\"&#xf22c;\" horiz-adv-x=\"288\" \nd=\"M288 272c0 -68.5 -47.9004 -125.9 -112 -140.4v-151.6c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v151.6c-64.0996 14.5 -112 71.9004 -112 140.4c0 79.5 64.5 144 144 144s144 -64.5 144 -144zM144 192c44.0996 0 80 35.9004 80 80\ns-35.9004 80 -80 80s-80 -35.9004 -80 -80s35.9004 -80 80 -80z\" />\n    <glyph glyph-name=\"genderless\" unicode=\"&#xf22d;\" horiz-adv-x=\"288\" \nd=\"M144 272c-44.0996 0 -80 -35.9004 -80 -80s35.9004 -80 80 -80s80 35.9004 80 80s-35.9004 80 -80 80zM144 336c79.5 0 144 -64.5 144 -144s-64.5 -144 -144 -144s-144 64.5 -144 144s64.5 144 144 144z\" />\n    <glyph glyph-name=\"server\" unicode=\"&#xf233;\" \nd=\"M480 288h-448c-17.6729 0 -32 14.3271 -32 32v64c0 17.6729 14.3271 32 32 32h448c17.6729 0 32 -14.3271 32 -32v-64c0 -17.6729 -14.3271 -32 -32 -32zM432 376c-13.2549 0 -24 -10.7451 -24 -24s10.7451 -24 24 -24s24 10.7451 24 24s-10.7451 24 -24 24zM368 376\nc-13.2549 0 -24 -10.7451 -24 -24s10.7451 -24 24 -24s24 10.7451 24 24s-10.7451 24 -24 24zM480 128h-448c-17.6729 0 -32 14.3271 -32 32v64c0 17.6729 14.3271 32 32 32h448c17.6729 0 32 -14.3271 32 -32v-64c0 -17.6729 -14.3271 -32 -32 -32zM432 216\nc-13.2549 0 -24 -10.7451 -24 -24s10.7451 -24 24 -24s24 10.7451 24 24s-10.7451 24 -24 24zM368 216c-13.2549 0 -24 -10.7451 -24 -24s10.7451 -24 24 -24s24 10.7451 24 24s-10.7451 24 -24 24zM480 -32h-448c-17.6729 0 -32 14.3271 -32 32v64\nc0 17.6729 14.3271 32 32 32h448c17.6729 0 32 -14.3271 32 -32v-64c0 -17.6729 -14.3271 -32 -32 -32zM432 56c-13.2549 0 -24 -10.7451 -24 -24s10.7451 -24 24 -24s24 10.7451 24 24s-10.7451 24 -24 24zM368 56c-13.2549 0 -24 -10.7451 -24 -24s10.7451 -24 24 -24\ns24 10.7451 24 24s-10.7451 24 -24 24z\" />\n    <glyph glyph-name=\"user-plus\" unicode=\"&#xf234;\" horiz-adv-x=\"640\" \nd=\"M624 240c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-64v-64c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v64h-64c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h64v64c0 8.7998 7.2002 16 16 16h32\nc8.7998 0 16 -7.2002 16 -16v-64h64zM224 192c-70.7002 0 -128 57.2998 -128 128s57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128zM313.6 160c74.2002 0 134.4 -60.2002 134.4 -134.4v-41.5996c0 -26.5 -21.5 -48 -48 -48h-352\nc-26.5 0 -48 21.5 -48 48v41.5996c0 74.2002 60.2002 134.4 134.4 134.4h16.6992c22.3008 -10.2002 46.9004 -16 72.9004 -16s50.7002 5.7998 72.9004 16h16.6992z\" />\n    <glyph glyph-name=\"user-times\" unicode=\"&#xf235;\" horiz-adv-x=\"640\" \nd=\"M589.6 208l45.6006 -45.5996c6.2998 -6.30078 6.2998 -16.5 0 -22.8008l-22.7998 -22.7998c-6.30078 -6.2998 -16.5 -6.2998 -22.8008 0l-45.5996 45.6006l-45.5996 -45.6006c-6.30078 -6.2998 -16.5 -6.2998 -22.8008 0l-22.7998 22.7998\nc-6.2998 6.30078 -6.2998 16.5 0 22.8008l45.6006 45.5996l-45.6006 45.5996c-6.2998 6.30078 -6.2998 16.5 0 22.8008l22.7998 22.7998c6.30078 6.2998 16.5 6.2998 22.8008 0l45.5996 -45.6006l45.5996 45.6006c6.30078 6.2998 16.5 6.2998 22.8008 0l22.7998 -22.7998\nc6.2998 -6.30078 6.2998 -16.5 0 -22.8008zM224 192c-70.7002 0 -128 57.2998 -128 128s57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128zM313.6 160c74.2002 0 134.4 -60.2002 134.4 -134.4v-41.5996c0 -26.5 -21.5 -48 -48 -48h-352\nc-26.5 0 -48 21.5 -48 48v41.5996c0 74.2002 60.2002 134.4 134.4 134.4h16.6992c22.3008 -10.2002 46.9004 -16 72.9004 -16s50.7002 5.7998 72.9004 16h16.6992z\" />\n    <glyph glyph-name=\"bed\" unicode=\"&#xf236;\" horiz-adv-x=\"640\" \nd=\"M176 192c-44.1104 0 -80 35.8896 -80 80s35.8896 80 80 80s80 -35.8896 80 -80s-35.8896 -80 -80 -80zM528 320c61.8604 0 112 -50.1396 112 -112v-192c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v48h-512v-48c0 -8.83984 -7.16016 -16 -16 -16\nh-32c-8.83984 0 -16 7.16016 -16 16v352c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-208h224v144c0 8.83984 7.16016 16 16 16h224z\" />\n    <glyph glyph-name=\"train\" unicode=\"&#xf238;\" horiz-adv-x=\"448\" \nd=\"M448 352v-256c0 -51.8154 -61.624 -96 -130.022 -96l62.9805 -49.7207c5.94727 -4.69629 2.60352 -14.2793 -4.95801 -14.2793h-304c-7.57812 0 -10.8916 9.59375 -4.95703 14.2793l62.9795 49.7207c-68.2021 0 -130.022 44.0459 -130.022 96v256c0 53.0186 64 96 128 96\nh192c65 0 128 -42.9814 128 -96zM400 216v112c0 13.2549 -10.7451 24 -24 24h-304c-13.2549 0 -24 -10.7451 -24 -24v-112c0 -13.2549 10.7451 -24 24 -24h304c13.2549 0 24 10.7451 24 24zM224 152c-30.9277 0 -56 -25.0723 -56 -56s25.0723 -56 56 -56s56 25.0723 56 56\ns-25.0723 56 -56 56z\" />\n    <glyph glyph-name=\"subway\" unicode=\"&#xf239;\" horiz-adv-x=\"448\" \nd=\"M448 352v-256c0 -51.8154 -61.624 -96 -130.022 -96l62.9805 -49.7207c5.94727 -4.69629 2.60352 -14.2793 -4.95801 -14.2793h-304c-7.57812 0 -10.8916 9.59375 -4.95703 14.2793l62.9795 49.7207c-68.2021 0 -130.022 44.0459 -130.022 96v256c0 53.0186 64 96 128 96\nh192c65 0 128 -42.9814 128 -96zM200 216v112c0 13.2549 -10.7451 24 -24 24h-104c-13.2549 0 -24 -10.7451 -24 -24v-112c0 -13.2549 10.7451 -24 24 -24h104c13.2549 0 24 10.7451 24 24zM400 216v112c0 13.2549 -10.7451 24 -24 24h-104c-13.2549 0 -24 -10.7451 -24 -24\nv-112c0 -13.2549 10.7451 -24 24 -24h104c13.2549 0 24 10.7451 24 24zM352 160c-26.5098 0 -48 -21.4902 -48 -48s21.4902 -48 48 -48s48 21.4902 48 48s-21.4902 48 -48 48zM96 160c-26.5098 0 -48 -21.4902 -48 -48s21.4902 -48 48 -48s48 21.4902 48 48\ns-21.4902 48 -48 48z\" />\n    <glyph glyph-name=\"battery-full\" unicode=\"&#xf240;\" horiz-adv-x=\"640\" \nd=\"M544 288h-480v-192h480v64h32v64h-32v64zM560 352c26.5098 0 48 -21.4902 48 -48v-16h8c13.2549 0 24 -10.7451 24 -24v-144c0 -13.2549 -10.7451 -24 -24 -24h-8v-16c0 -26.5098 -21.4902 -48 -48 -48h-512c-26.5098 0 -48 21.4902 -48 48v224\nc0 26.5098 21.4902 48 48 48h512zM512 256v-128h-416v128h416z\" />\n    <glyph glyph-name=\"battery-three-quarters\" unicode=\"&#xf241;\" horiz-adv-x=\"640\" \nd=\"M544 288h-480v-192h480v64h32v64h-32v64zM560 352c26.5098 0 48 -21.4902 48 -48v-16h8c13.2549 0 24 -10.7451 24 -24v-144c0 -13.2549 -10.7451 -24 -24 -24h-8v-16c0 -26.5098 -21.4902 -48 -48 -48h-512c-26.5098 0 -48 21.4902 -48 48v224\nc0 26.5098 21.4902 48 48 48h512zM416 256v-128h-320v128h320z\" />\n    <glyph glyph-name=\"battery-half\" unicode=\"&#xf242;\" horiz-adv-x=\"640\" \nd=\"M544 288h-480v-192h480v64h32v64h-32v64zM560 352c26.5098 0 48 -21.4902 48 -48v-16h8c13.2549 0 24 -10.7451 24 -24v-144c0 -13.2549 -10.7451 -24 -24 -24h-8v-16c0 -26.5098 -21.4902 -48 -48 -48h-512c-26.5098 0 -48 21.4902 -48 48v224\nc0 26.5098 21.4902 48 48 48h512zM320 256v-128h-224v128h224z\" />\n    <glyph glyph-name=\"battery-quarter\" unicode=\"&#xf243;\" horiz-adv-x=\"640\" \nd=\"M544 288h-480v-192h480v64h32v64h-32v64zM560 352c26.5098 0 48 -21.4902 48 -48v-16h8c13.2549 0 24 -10.7451 24 -24v-144c0 -13.2549 -10.7451 -24 -24 -24h-8v-16c0 -26.5098 -21.4902 -48 -48 -48h-512c-26.5098 0 -48 21.4902 -48 48v224\nc0 26.5098 21.4902 48 48 48h512zM224 256v-128h-128v128h128z\" />\n    <glyph glyph-name=\"battery-empty\" unicode=\"&#xf244;\" horiz-adv-x=\"640\" \nd=\"M544 288h-480v-192h480v64h32v64h-32v64zM560 352c26.5098 0 48 -21.4902 48 -48v-16h8c13.2549 0 24 -10.7451 24 -24v-144c0 -13.2549 -10.7451 -24 -24 -24h-8v-16c0 -26.5098 -21.4902 -48 -48 -48h-512c-26.5098 0 -48 21.4902 -48 48v224\nc0 26.5098 21.4902 48 48 48h512z\" />\n    <glyph glyph-name=\"mouse-pointer\" unicode=\"&#xf245;\" horiz-adv-x=\"320\" \nd=\"M302.189 118.874h-106.084l55.8301 -135.993c3.88965 -9.42773 -0.554688 -19.999 -9.44336 -23.999l-49.165 -21.4268c-9.16504 -4 -19.4434 0.571289 -23.332 9.71387l-53.0527 129.136l-86.6641 -89.1377c-11.5498 -11.877 -30.2783 -2.7207 -30.2783 12.8564v429.678\nc0 16.3994 19.9209 24.3945 30.2773 12.8555l284.412 -292.542c11.4717 -11.1787 3.00684 -31.1406 -12.5 -31.1406z\" />\n    <glyph glyph-name=\"i-cursor\" unicode=\"&#xf246;\" horiz-adv-x=\"256\" \nd=\"M256 395.952c0 -6.64648 -5.4043 -12.0098 -12.0498 -11.9922c-27.875 0.0712891 -83.9502 -3.20996 -83.9502 -48.1416v-111.818h36c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-36v-112c0 -44.9395 57.8887 -48.5527 83.8555 -48.2422\nc6.68652 0.0800781 12.1445 -5.31055 12.1445 -11.998v-39.6445c0 -6.5957 -5.31836 -11.957 -11.9131 -12c-35.0654 -0.228516 -78.3525 0.62207 -116.087 37.8447c-38.4688 -37.9482 -83.6211 -38.3027 -116.158 -37.8936\nc-6.56738 0.0820312 -11.8418 5.42969 -11.8418 11.999v39.9824c0 6.64648 5.4043 12.0098 12.0498 11.9932c27.875 -0.0722656 83.9502 3.02734 83.9502 47.959v112h-36c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h36v111.818\nc0 44.9385 -57.8887 48.7344 -83.8555 48.4248c-6.68652 -0.0800781 -12.1445 5.31055 -12.1445 11.998v39.6445c0 6.5957 5.31836 11.957 11.9131 12c35.0654 0.228516 78.3525 -0.62207 116.087 -37.8447c38.4688 37.9482 83.6211 38.3027 116.158 37.8926\nc6.56738 -0.0820312 11.8418 -5.42969 11.8418 -11.999v-39.9824z\" />\n    <glyph glyph-name=\"object-group\" unicode=\"&#xf247;\" \nd=\"M480 320v-288h20c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v20h-384v-20c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h20v320h-20\nc-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-20h384v20c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-20v-32zM96 172c0 -6.62695 5.37305 -12 12 -12h168\nc6.62695 0 12 5.37305 12 12v136c0 6.62695 -5.37305 12 -12 12h-168c-6.62695 0 -12 -5.37305 -12 -12v-136zM416 76v136c0 6.62695 -5.37305 12 -12 12h-84v-72c0 -13.2549 -10.7451 -24 -24 -24h-72v-52c0 -6.62695 5.37305 -12 12 -12h168c6.62695 0 12 5.37305 12 12z\n\" />\n    <glyph glyph-name=\"object-ungroup\" unicode=\"&#xf248;\" horiz-adv-x=\"576\" \nd=\"M64 128v-26c0 -3.31152 -2.68848 -6 -6 -6h-52c-3.31152 0 -6 2.68848 -6 6v52c0 3.31152 2.68848 6 6 6h26v192h-26c-3.31152 0 -6 2.68848 -6 6v52c0 3.31152 2.68848 6 6 6h52c3.31152 0 6 -2.68848 6 -6v-26h288v26c0 3.31152 2.68848 6 6 6h52\nc3.31152 0 6 -2.68848 6 -6v-52c0 -3.31152 -2.68848 -6 -6 -6h-26v-192h26c3.31152 0 6 -2.68848 6 -6v-52c0 -3.31152 -2.68848 -6 -6 -6h-52c-3.31152 0 -6 2.68848 -6 6v26h-288zM544 192v-160h26c3.31152 0 6 -2.68848 6 -6v-52c0 -3.31152 -2.68848 -6 -6 -6h-52\nc-3.31152 0 -6 2.68848 -6 6v26h-288v-26c0 -3.31152 -2.68848 -6 -6 -6h-52c-3.31152 0 -6 2.68848 -6 6v52c0 3.31152 2.68848 6 6 6h26v72h136v-8c0 -13.2549 10.7451 -24 24 -24h64c13.2549 0 24 10.7451 24 24v64c0 13.2549 -10.7451 24 -24 24h-8v72h104v26\nc0 3.31152 2.68848 6 6 6h52c3.31152 0 6 -2.68848 6 -6v-52c0 -3.31152 -2.68848 -6 -6 -6h-26v-32z\" />\n    <glyph glyph-name=\"sticky-note\" unicode=\"&#xf249;\" horiz-adv-x=\"448\" \nd=\"M312 128c-13.2002 0 -24 -10.7998 -24 -24v-136h-264c-13.2998 0 -24 10.7002 -24 24v400c0 13.2998 10.7002 24 24 24h400c13.2998 0 24 -10.7002 24 -24v-264h-136zM441 73l-98 -98c-4.5 -4.5 -10.5996 -7 -17 -7h-6v128h128v-6.09961\nc0 -6.30078 -2.5 -12.4004 -7 -16.9004z\" />\n    <glyph glyph-name=\"clone\" unicode=\"&#xf24d;\" \nd=\"M464 448c26.5098 0 48 -21.4902 48 -48v-288c0 -26.5098 -21.4902 -48 -48 -48h-288c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h288zM176 32h208v-48c0 -26.5098 -21.4902 -48 -48 -48h-288c-26.5098 0 -48 21.4902 -48 48v288\nc0 26.5098 21.4902 48 48 48h48v-208c0 -44.1123 35.8877 -80 80 -80z\" />\n    <glyph glyph-name=\"balance-scale\" unicode=\"&#xf24e;\" horiz-adv-x=\"640\" \nd=\"M256 112c0 -44.1797 -57.3096 -80 -128 -80s-128 35.8203 -128 80h0.0195312c0 15.6699 -2.0791 7.25 85.04 181.51c17.6807 35.3604 68.2207 35.29 85.8701 0c86.3906 -172.779 85.0508 -165.33 85.0508 -181.51h0.0195312zM128 272l-72 -144h144zM639.98 112\nc0 -44.1797 -57.29 -80 -127.98 -80s-128 35.8203 -128 80h0.0195312c0 15.6699 -2.0791 7.25 85.04 181.51c17.6807 35.3604 68.2207 35.29 85.8701 0c86.3906 -172.779 85.0508 -165.33 85.0508 -181.51zM440 128h144l-72 144zM528 0c8.83984 0 16 -7.16016 16 -16v-32\nc0 -8.83984 -7.16016 -16 -16 -16h-416c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h176v294.75c-23.5195 10.29 -41.1602 31.4902 -46.3896 57.25h-129.61c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h144.36\nc14.5996 19.3203 37.5498 32 63.6396 32s49.04 -12.6797 63.6396 -32h144.36c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-129.61c-5.22949 -25.7695 -22.8799 -46.96 -46.3896 -57.25v-294.75h176z\" />\n    <glyph glyph-name=\"hourglass-start\" unicode=\"&#xf251;\" horiz-adv-x=\"384\" \nd=\"M360 448c13.2549 0 24 -10.7451 24 -24v-16c0 -13.2549 -10.7451 -24 -24 -24c0 -90.9648 -51.0156 -167.734 -120.842 -192c69.8262 -24.2656 120.842 -101.035 120.842 -192c13.2549 0 24 -10.7451 24 -24v-16c0 -13.2549 -10.7451 -24 -24 -24h-336\nc-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24c0 90.9648 51.0156 167.734 120.842 192c-69.8262 24.2656 -120.842 101.035 -120.842 192c-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24h336zM296 0c0 77.4834 -46.2139 144 -104 144\nc-57.7959 0 -104 -66.542 -104 -144h208z\" />\n    <glyph glyph-name=\"hourglass-half\" unicode=\"&#xf252;\" horiz-adv-x=\"384\" \nd=\"M360 448c13.2549 0 24 -10.7451 24 -24v-16c0 -13.2549 -10.7451 -24 -24 -24c0 -90.9648 -51.0156 -167.734 -120.842 -192c69.8262 -24.2656 120.842 -101.035 120.842 -192c13.2549 0 24 -10.7451 24 -24v-16c0 -13.2549 -10.7451 -24 -24 -24h-336\nc-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24c0 90.9648 51.0156 167.734 120.842 192c-69.8262 24.2656 -120.842 101.035 -120.842 192c-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24h336zM284.922 64\nc-17.0596 46.8037 -52.1006 80 -92.9219 80c-40.8242 0 -75.8613 -33.2031 -92.9199 -80h185.842zM284.941 320c7.07129 19.4131 11.0586 41.1953 11.0586 64h-208c0 -22.748 3.98828 -44.5479 11.0781 -64h185.863z\" />\n    <glyph glyph-name=\"hourglass-end\" unicode=\"&#xf253;\" horiz-adv-x=\"384\" \nd=\"M360 384c0 -90.9648 -51.0156 -167.734 -120.842 -192c69.8262 -24.2656 120.842 -101.035 120.842 -192c13.2549 0 24 -10.7451 24 -24v-16c0 -13.2549 -10.7451 -24 -24 -24h-336c-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24\nc0 90.9648 51.0156 167.734 120.842 192c-69.8262 24.2656 -120.842 101.035 -120.842 192c-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24h336c13.2549 0 24 -10.7451 24 -24v-16c0 -13.2549 -10.7451 -24 -24 -24zM192 240c57.4902 0 104 66.0547 104 144\nh-208c0 -77.4824 46.2129 -144 104 -144z\" />\n    <glyph glyph-name=\"hourglass\" unicode=\"&#xf254;\" horiz-adv-x=\"384\" \nd=\"M360 384c0 -90.9648 -51.0156 -167.734 -120.842 -192c69.8262 -24.2656 120.842 -101.035 120.842 -192c13.2549 0 24 -10.7451 24 -24v-16c0 -13.2549 -10.7451 -24 -24 -24h-336c-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24\nc0 90.9648 51.0156 167.734 120.842 192c-69.8262 24.2656 -120.842 101.035 -120.842 192c-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24h336c13.2549 0 24 -10.7451 24 -24v-16c0 -13.2549 -10.7451 -24 -24 -24z\" />\n    <glyph glyph-name=\"hand-rock\" unicode=\"&#xf255;\" \nd=\"M464.8 368c26.2998 -0.400391 47.2002 -22.5 47.2002 -48.7998v-133.5c0 -12.7998 -2.5 -25.5 -7.5 -37.2998l-49 -116.301c-4.90039 -11.7998 -7.5 -24.5 -7.5 -37.2998v-2.89941c0 -13.3008 -10.7002 -24 -24 -24h-240c-13.2998 0 -24 10.6992 -24 24v6.69922\nc0 13.7002 -5.90039 26.8008 -16.0996 35.9004l-111.7 99.2998c-20.5 18.2998 -32.2002 44.4004 -32.2002 71.7998v66.4004c0 26.7998 21.9004 48.4004 48.7998 48c26.2998 -0.5 47.2002 -22.5 47.2002 -48.7998v-48.1006l8 -7.09961v136\nc0 26.7998 21.9004 48.4004 48.7998 48c26.2998 -0.5 47.2002 -22.5 47.2002 -48.7998v-31.2002h8v48c0 26.7998 21.9004 48.4004 48.7998 48c26.2998 -0.5 47.2002 -22.5 47.2002 -48.7998v-47.2002h8v32c0 26.7998 21.9004 48.4004 48.7998 48\nc26.2998 -0.5 47.2002 -22.5 47.2002 -48.7998v-31.2002h8c0 26.7998 21.9004 48.4004 48.7998 48z\" />\n    <glyph glyph-name=\"hand-paper\" unicode=\"&#xf256;\" horiz-adv-x=\"448\" \nd=\"M408.781 319.993c21.7305 -0.416016 39.2188 -18.1621 39.2178 -39.9932v-150.359c0 -12.2998 -2.28711 -32.001 -5.10449 -43.9746l-26.5078 -112.66c-5.10156 -21.6816 -24.4502 -37.0059 -46.7236 -37.0059h-197.59c-13.4922 0 -30.8838 8.85645 -38.8193 19.7676\nl-125.601 172.705c-12.9932 17.8672 -9.04297 42.8838 8.82129 55.877c17.8682 12.9941 42.8848 9.04297 55.877 -8.82227l31.6484 -43.5195v235.992c0 21.8311 17.4883 39.5771 39.2188 39.9932c22.4248 0.428711 40.7812 -18.3535 40.7812 -40.7832v-175.21h8v216\nc0 21.8311 17.4883 39.5771 39.2188 39.9932c22.4248 0.428711 40.7812 -18.3535 40.7812 -40.7832v-215.21h8v177c0 21.8311 17.4883 39.5771 39.2188 39.9932c22.4248 0.428711 40.7812 -18.3535 40.7812 -40.7832v-176.21h8v87.21\nc0 22.4297 18.3564 41.2119 40.7812 40.7832z\" />\n    <glyph glyph-name=\"hand-scissors\" unicode=\"&#xf257;\" \nd=\"M216 8c0 22.0918 17.9092 40 40 40v8h-32c-22.0908 0 -40 17.9082 -40 40s17.9092 40 40 40h32v8h-208c-26.5098 0 -48 21.4902 -48 48s21.4902 48 48 48h208v13.5723l-177.551 69.7393c-24.6738 9.69434 -36.8184 37.5557 -27.125 62.2285\nc9.69238 24.6738 37.5537 36.8174 62.2275 27.124l190.342 -74.7646l24.8721 31.0898c12.3066 15.3809 33.9785 19.5146 51.0811 9.74121l112 -64c11.125 -6.3584 20.1533 -21.917 20.1533 -34.7305v-240c0 -18.5615 -12.7695 -34.6855 -30.8379 -38.9365l-136 -32\nc-2.49414 -0.586914 -6.59668 -1.06348 -9.1582 -1.06348h-0.00390625h-80c-22.0908 0 -40 17.9082 -40 40z\" />\n    <glyph glyph-name=\"hand-lizard\" unicode=\"&#xf258;\" horiz-adv-x=\"576\" \nd=\"M384 -32v61.4609c0 7.28906 -4.99707 16.3711 -11.1543 20.2734l-111.748 70.8105c-6.49316 4.11523 -18.0029 7.45508 -25.6904 7.45508h-0.000976562h-147.406c-13.2549 0 -24 10.7451 -24 24v8c0 35.3457 28.6543 64 64 64h123.648\nc11.7754 0 25.0088 8.82227 29.5371 19.6924l21.4102 51.3848c4.94141 11.8555 -3.77051 24.9229 -16.6143 24.9229h-229.981c-30.9277 0 -56 25.0723 -56 56v16c0 13.2549 10.7451 24 24 24h333.544c14.6035 0 32.7852 -10.0205 40.583 -22.3682l163.04 -258.146\nc8.1875 -12.9639 14.833 -35.9297 14.833 -51.2627v-0.000976562v-116.222h-192z\" />\n    <glyph glyph-name=\"hand-spock\" unicode=\"&#xf259;\" \nd=\"M481.3 350.9c21.4004 -5.10059 34.7002 -26.7002 29.7002 -48.2002l-36.2998 -152.5c-1.7002 -7.2002 -2.60059 -14.7002 -2.60059 -22.2002v-42c0 -9.2998 -1.39941 -18.4004 -4 -27.2998l-26.1992 -88.2998c-6 -20.4004 -24.7002 -34.4004 -46 -34.4004h-216.7\nc-12.2002 0 -24 4.59961 -32.9004 13l-133.7 125.9c-16.0996 15.0996 -16.7998 40.3994 -1.69922 56.5c15.0996 16.0996 40.3994 16.7998 56.5 1.69922l60.5996 -57v79.4004l-39 171.6c-4.90039 21.6006 8.59961 43 30.0996 47.9004\nc21.6006 4.90039 43 -8.59961 47.9004 -30.0996l34.7998 -152.801h9.7998l-47.5996 207c-5 21.5 8.5 43 30 47.9004c21.5996 4.90039 43 -8.5 48 -30.0996l51.7002 -224.9h15.0996l48.4004 193.7c5.39941 21.3994 27.0996 34.5 48.5 29.0996\nc21.3994 -5.39941 34.5 -27.0996 29.0996 -48.5l-43.5996 -174.3h11.0996l30.7998 129.3c5.10059 21.4004 26.7002 34.7002 48.2002 29.6006z\" />\n    <glyph glyph-name=\"hand-pointer\" unicode=\"&#xf25a;\" horiz-adv-x=\"448\" \nd=\"M448 208v-96c0 -3.08398 -0.356445 -6.15918 -1.06348 -9.16211l-32 -136c-4.25098 -18.0684 -20.375 -30.8379 -38.9365 -30.8379h-208c-11.2432 0 -25.7363 7.37988 -32.3496 16.4727l-127.997 176c-12.9932 17.8662 -9.04297 42.8838 8.82129 55.876\nc17.8672 12.9941 42.8848 9.04297 55.877 -8.82227l31.6484 -43.5186v275.992c0 22.0908 17.9082 40 40 40s40 -17.9092 40 -40v-200h8v40c0 22.0908 17.9082 40 40 40s40 -17.9092 40 -40v-40h8v24c0 22.0908 17.9082 40 40 40s40 -17.9092 40 -40v-24h8\nc0 22.0908 17.9082 40 40 40s40 -17.9092 40 -40zM192 128h-8v-96h8v96zM280 128h-8v-96h8v96zM368 128h-8v-96h8v96z\" />\n    <glyph glyph-name=\"hand-peace\" unicode=\"&#xf25b;\" horiz-adv-x=\"448\" \nd=\"M408 232c22.0918 0 40 -17.9092 40 -40v-80v-0.00488281c0 -2.56152 -0.476562 -6.66406 -1.06348 -9.15723l-32 -136c-4.25098 -18.0684 -20.375 -30.8379 -38.9365 -30.8379h-240h-0.000976562c-12.8125 0 -28.3711 9.0293 -34.7275 20.1543l-64 112\nc-9.77441 17.1025 -5.64062 38.7744 9.74023 51.0811l31.0898 24.8721l-74.7646 190.342c-9.69336 24.6738 2.4502 52.5342 27.124 62.2266c24.6729 9.69434 52.5332 -2.4502 62.2275 -27.125l69.7393 -177.551h13.5723v208c0 26.5098 21.4902 48 48 48s48 -21.4902 48 -48\nv-208h8v32c0 22.0908 17.9082 40 40 40s40 -17.9092 40 -40v-32h8c0 22.0908 17.9082 40 40 40z\" />\n    <glyph glyph-name=\"trademark\" unicode=\"&#xf25c;\" horiz-adv-x=\"640\" \nd=\"M260.6 352c6.60059 0 12 -5.40039 11.9004 -12v-43.0996c0 -6.60059 -5.40039 -12 -12 -12h-85.0996v-240.9c0 -6.59961 -5.40039 -12 -12 -12h-54.3008c-6.59961 0 -12 5.40039 -12 12v240.9h-85.0996c-6.59961 0 -12 5.39941 -12 12v43.0996\nc0 6.59961 5.40039 12 12 12h248.6zM640 45c0.5 -7 -5 -13 -12 -13h-53.9004c-6.2998 0 -11.5996 4.90039 -12 11.2002l-9.09961 132.899c-1.7998 24.2002 0 53.7002 0 53.7002h-0.900391s-10.6992 -33.5996 -17.8994 -53.7002l-30.7002 -84.6992\nc-1.7002 -4.7002 -6.2002 -7.90039 -11.2998 -7.90039h-50.2998c-5.10059 0 -9.60059 3.2002 -11.3008 7.90039l-30.6992 84.6992c-7.2002 20.1006 -17.9004 53.7002 -17.9004 53.7002h-0.900391s1.80078 -29.5 0 -53.7002l-9.09961 -132.899\nc-0.5 -6.2998 -5.7002 -11.2002 -12 -11.2002h-54.5c-7.09961 0 -12.5996 6 -12 13l24.4004 296c0.599609 6.2002 5.7998 11 12 11h65.3994c5.10059 0 9.60059 -3.2998 11.2998 -8.09961l43.8008 -127.101c7.19922 -20.5996 16.0996 -52.7998 16.0996 -52.7998h0.900391\ns8.89941 32.2002 16.0996 52.7998l43.7998 127.101c1.60059 4.7998 6.2002 8.09961 11.2998 8.09961h65.4004c6.2998 0 11.5 -4.7998 12 -11z\" />\n    <glyph glyph-name=\"registered\" unicode=\"&#xf25d;\" \nd=\"M285.363 240.525c0 -18.6006 -9.83105 -28.4316 -28.4316 -28.4316h-29.876v56.1406h23.3779c28.668 0 34.9297 -8.77344 34.9297 -27.709zM504 192c0 -136.967 -111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248s248 -111.033 248 -248z\nM363.411 87.5859c-46.7295 84.8252 -43.2988 78.6357 -44.7021 80.9805c23.4316 15.1719 37.9453 42.9785 37.9453 74.4854c0 54.2441 -31.5 89.252 -105.498 89.252h-70.667c-13.2549 0 -24 -10.7451 -24 -24v-232.304c0 -13.2549 10.7451 -24 24 -24h22.5664\nc13.2549 0 24 10.7451 24 24v71.6631h25.5566l44.1289 -82.9375c3.73828 -7.02441 13.2305 -12.7266 21.1875 -12.7266h24.4639c18.2617 0.000976562 29.8291 19.5908 21.0186 35.5869z\" />\n    <glyph glyph-name=\"tv\" unicode=\"&#xf26c;\" horiz-adv-x=\"640\" \nd=\"M592 448c26.5 0 48 -21.5 48 -48v-320c0 -26.5 -21.5 -48 -48 -48h-234.9v-32h160c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32h-384c-17.6992 0 -32 14.2998 -32 32s14.3008 32 32 32h160v32h-245.1c-26.5 0 -48 21.5 -48 48v320c0 26.5 21.5 48 48 48h544z\nM576 96v288h-512v-288h512z\" />\n    <glyph glyph-name=\"calendar-plus\" unicode=\"&#xf271;\" horiz-adv-x=\"448\" \nd=\"M436 288h-424c-6.59961 0 -12 5.40039 -12 12v36c0 26.5 21.5 48 48 48h48v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h128v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h48c26.5 0 48 -21.5 48 -48v-36\nc0 -6.59961 -5.40039 -12 -12 -12zM12 256h424c6.59961 0 12 -5.40039 12 -12v-260c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v260c0 6.59961 5.40039 12 12 12zM328 116c0 6.59961 -5.40039 12 -12 12h-60v60c0 6.59961 -5.40039 12 -12 12h-40\nc-6.59961 0 -12 -5.40039 -12 -12v-60h-60c-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h60v-60c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12v60h60c6.59961 0 12 5.40039 12 12v40z\" />\n    <glyph glyph-name=\"calendar-minus\" unicode=\"&#xf272;\" horiz-adv-x=\"448\" \nd=\"M436 288h-424c-6.59961 0 -12 5.40039 -12 12v36c0 26.5 21.5 48 48 48h48v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h128v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h48c26.5 0 48 -21.5 48 -48v-36\nc0 -6.59961 -5.40039 -12 -12 -12zM12 256h424c6.59961 0 12 -5.40039 12 -12v-260c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v260c0 6.59961 5.40039 12 12 12zM316 64c6.59961 0 12 5.40039 12 12v40c0 6.59961 -5.40039 12 -12 12h-184\nc-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h184z\" />\n    <glyph glyph-name=\"calendar-times\" unicode=\"&#xf273;\" horiz-adv-x=\"448\" \nd=\"M436 288h-424c-6.59961 0 -12 5.40039 -12 12v36c0 26.5 21.5 48 48 48h48v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h128v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h48c26.5 0 48 -21.5 48 -48v-36\nc0 -6.59961 -5.40039 -12 -12 -12zM12 256h424c6.59961 0 12 -5.40039 12 -12v-260c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v260c0 6.59961 5.40039 12 12 12zM269.3 96l48.1006 48.0996c4.69922 4.7002 4.69922 12.3008 0 17l-28.3008 28.3008\nc-4.69922 4.69922 -12.2998 4.69922 -17 0l-48.0996 -48.1006l-48.0996 48.1006c-4.7002 4.69922 -12.3008 4.69922 -17 0l-28.3008 -28.3008c-4.69922 -4.69922 -4.69922 -12.2998 0 -17l48.1006 -48.0996l-48.1006 -48.0996c-4.69922 -4.7002 -4.69922 -12.3008 0 -17\nl28.3008 -28.3008c4.69922 -4.69922 12.2998 -4.69922 17 0l48.0996 48.1006l48.0996 -48.1006c4.7002 -4.69922 12.3008 -4.69922 17 0l28.3008 28.3008c4.69922 4.69922 4.69922 12.2998 0 17z\" />\n    <glyph glyph-name=\"calendar-check\" unicode=\"&#xf274;\" horiz-adv-x=\"448\" \nd=\"M436 288h-424c-6.62695 0 -12 5.37305 -12 12v36c0 26.5098 21.4902 48 48 48h48v52c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-52h128v52c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-52h48c26.5098 0 48 -21.4902 48 -48v-36\nc0 -6.62695 -5.37305 -12 -12 -12zM12 256h424c6.62695 0 12 -5.37305 12 -12v-260c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v260c0 6.62695 5.37305 12 12 12zM345.296 160.053l-28.1689 28.3984\nc-4.66699 4.70508 -12.2646 4.73535 -16.9697 0.0673828l-106.037 -105.184l-45.9805 46.3516c-4.66699 4.70508 -12.2656 4.73633 -16.9707 0.0683594l-28.3965 -28.1699c-4.70508 -4.66699 -4.73633 -12.2646 -0.0683594 -16.9697l82.6006 -83.2695\nc4.66699 -4.70508 12.2656 -4.73535 16.9707 -0.0673828l142.952 141.805c4.70508 4.66699 4.73633 12.2646 0.0683594 16.9697z\" />\n    <glyph glyph-name=\"industry\" unicode=\"&#xf275;\" \nd=\"M475.115 284.219c15.9541 10.1514 36.8848 -1.33105 36.8848 -20.248v-271.971c0 -13.2549 -10.7451 -24 -24 -24h-464c-13.2549 0 -24 10.7451 -24 24v400c0 13.2549 10.7451 24 24 24h112c13.2549 0 24 -10.7451 24 -24v-196.309l139.115 88.5273\nc15.9541 10.1514 36.8848 -1.33203 36.8848 -20.248v-68.2793z\" />\n    <glyph glyph-name=\"map-pin\" unicode=\"&#xf276;\" horiz-adv-x=\"288\" \nd=\"M112 131.06c10.3896 -1.91992 21.0596 -3.05957 32 -3.05957s21.6104 1.13965 32 3.05957v-156.689l-22.0098 -33.0205c-4.75 -7.11914 -15.2207 -7.11914 -19.9707 0l-22.0195 33.0205v156.689zM144 448c79.5303 0 144 -64.4697 144 -144s-64.4697 -144 -144 -144\ns-144 64.4697 -144 144s64.4697 144 144 144zM144 372c6.62012 0 12 5.37988 12 12s-5.37988 12 -12 12c-50.7197 0 -92 -41.2695 -92 -92c0 -6.62012 5.37988 -12 12 -12s12 5.37988 12 12c0 37.5 30.5 68 68 68z\" />\n    <glyph glyph-name=\"map-signs\" unicode=\"&#xf277;\" \nd=\"M507.31 363.31c6.25 -6.25 6.25 -16.3691 0 -22.6299l-43.3096 -43.3096c-6.00977 -6 -14.1396 -9.37012 -22.6299 -9.37012h-385.37c-13.25 0 -24 10.75 -24 24v80c0 13.25 10.75 24 24 24h168v16c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-16\nh153.37c8.49023 0 16.6299 -3.37012 22.6299 -9.37012zM224 -48v112h64v-112c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16zM456 224c13.25 0 24 -10.75 24 -24v-80c0 -13.25 -10.75 -24 -24 -24h-385.37\nc-8.49023 0 -16.6299 3.37012 -22.6299 9.37012l-43.3096 43.3096c-6.25 6.25 -6.25 16.3799 0 22.6299l43.3096 43.3203c6.00977 6 14.1396 9.37012 22.6299 9.37012h153.37v32h64v-32h168z\" />\n    <glyph glyph-name=\"map\" unicode=\"&#xf279;\" horiz-adv-x=\"576\" \nd=\"M0 330.34c0.00292969 11.959 9.0166 25.2686 20.1201 29.71l139.88 55.9502v-384l-138.06 -62.8398c-10.5107 -4.2002 -21.9404 3.54004 -21.9404 14.8594v346.32zM192 32v384l192 -64v-384zM554.06 414.84c10.5107 4.2002 21.9404 -3.54004 21.9404 -14.8594v-346.32\nc0 -11.9609 -9.01367 -25.2705 -20.1201 -29.71l-139.88 -55.9502v384z\" />\n    <glyph glyph-name=\"comment-alt\" unicode=\"&#xf27a;\" \nd=\"M448 448c35.2998 0 64 -28.7002 64 -64v-288c0 -35.2998 -28.7002 -64 -64 -64h-144l-124.9 -93.7002c-7.89941 -5.7998 -19.0996 -0.0996094 -19.0996 9.7002v84h-96c-35.2998 0 -64 28.7002 -64 64v288c0 35.2998 28.7002 64 64 64h384z\" />\n    <glyph glyph-name=\"pause-circle\" unicode=\"&#xf28b;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM240 112v160c0 8.7998 -7.2002 16 -16 16h-48c-8.7998 0 -16 -7.2002 -16 -16v-160c0 -8.7998 7.2002 -16 16 -16h48c8.7998 0 16 7.2002 16 16zM352 112v160\nc0 8.7998 -7.2002 16 -16 16h-48c-8.7998 0 -16 -7.2002 -16 -16v-160c0 -8.7998 7.2002 -16 16 -16h48c8.7998 0 16 7.2002 16 16z\" />\n    <glyph glyph-name=\"stop-circle\" unicode=\"&#xf28d;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM352 112v160c0 8.7998 -7.2002 16 -16 16h-160c-8.7998 0 -16 -7.2002 -16 -16v-160c0 -8.7998 7.2002 -16 16 -16h160c8.7998 0 16 7.2002 16 16z\" />\n    <glyph glyph-name=\"shopping-bag\" unicode=\"&#xf290;\" horiz-adv-x=\"448\" \nd=\"M352 288h96v-272c0 -44.1826 -35.8174 -80 -80 -80h-288c-44.1826 0 -80 35.8174 -80 80v272h96v32c0 70.5801 57.4199 128 128 128c70.5791 0 128 -57.4199 128 -128v-32zM160 320v-32h128v32c0 35.29 -28.71 64 -64 64s-64 -28.71 -64 -64zM320 200\nc13.2549 0 24 10.7451 24 24s-10.7451 24 -24 24s-24 -10.7451 -24 -24s10.7451 -24 24 -24zM128 200c13.2549 0 24 10.7451 24 24s-10.7451 24 -24 24s-24 -10.7451 -24 -24s10.7451 -24 24 -24z\" />\n    <glyph glyph-name=\"shopping-basket\" unicode=\"&#xf291;\" horiz-adv-x=\"576\" \nd=\"M576 232v-16c0 -13.2549 -10.7451 -24 -24 -24h-8l-26.1133 -182.788c-3.37793 -23.6465 -23.6299 -41.2119 -47.5166 -41.2119h-364.74c-23.8867 0 -44.1387 17.5654 -47.5176 41.2119l-26.1123 182.788h-8c-13.2549 0 -24 10.7451 -24 24v16\nc0 13.2549 10.7451 24 24 24h67.3408l106.78 146.821c10.3945 14.292 30.4072 17.4531 44.7012 7.05762c14.293 -10.3945 17.4531 -30.4082 7.05762 -44.7012l-79.4033 -109.178h235.047l-79.4033 109.179c-10.3955 14.292 -7.23438 34.3066 7.05859 44.7012\nc14.291 10.3955 34.3066 7.23535 44.7012 -7.05762l106.779 -146.822h67.3408c13.2549 0 24 -10.7451 24 -24zM312 56v112c0 13.2549 -10.7451 24 -24 24s-24 -10.7451 -24 -24v-112c0 -13.2549 10.7451 -24 24 -24s24 10.7451 24 24zM424 56v112\nc0 13.2549 -10.7451 24 -24 24s-24 -10.7451 -24 -24v-112c0 -13.2549 10.7451 -24 24 -24s24 10.7451 24 24zM200 56v112c0 13.2549 -10.7451 24 -24 24s-24 -10.7451 -24 -24v-112c0 -13.2549 10.7451 -24 24 -24s24 10.7451 24 24z\" />\n    <glyph glyph-name=\"hashtag\" unicode=\"&#xf292;\" horiz-adv-x=\"448\" \nd=\"M440.667 265.891c-0.974609 -5.45898 -6.2666 -9.89062 -11.8135 -9.89062h-79.0957l-22.8564 -128h74.8096c7.4707 0 13.126 -6.75391 11.8135 -14.1094l-7.14355 -40c-0.974609 -5.45898 -6.2666 -9.89062 -11.8125 -9.89062h-79.0967l-15.377 -86.1094\nc-0.974609 -5.45898 -6.2666 -9.89062 -11.8125 -9.89062h-40.6318c-7.47266 0 -13.127 6.75391 -11.8135 14.1094l14.623 81.8906h-98.6338l-15.3779 -86.1094c-0.974609 -5.45898 -6.26758 -9.89062 -11.8135 -9.89062h-40.6318\nc-7.4707 0 -13.126 6.75391 -11.8125 14.1094l14.623 81.8906h-74.8105c-7.4707 0 -13.126 6.75391 -11.8125 14.1094l7.14258 40c0.974609 5.45898 6.2666 9.89062 11.8135 9.89062h79.0957l22.8564 128h-74.8096c-7.4707 0 -13.126 6.75391 -11.8135 14.1094l7.14355 40\nc0.974609 5.45898 6.2666 9.89062 11.8125 9.89062h79.0967l15.377 86.1094c0.974609 5.45898 6.2666 9.89062 11.8125 9.89062h40.6318c7.47266 0 13.127 -6.75391 11.8135 -14.1094l-14.623 -81.8906h98.6348l15.377 86.1094\nc0.974609 5.45898 6.26758 9.89062 11.8135 9.89062h40.6318c7.4707 0 13.126 -6.75391 11.8125 -14.1094l-14.623 -81.8906h74.8105c7.4707 0 13.126 -6.75391 11.8125 -14.1094zM261.889 128l22.8574 128h-98.6338l-22.8574 -128h98.6338z\" />\n    <glyph glyph-name=\"percent\" unicode=\"&#xf295;\" horiz-adv-x=\"448\" \nd=\"M112 224c-61.9004 0 -112 50.0996 -112 112s50.0996 112 112 112s112 -50.0996 112 -112s-50.0996 -112 -112 -112zM112 384c-26.5 0 -48 -21.5 -48 -48s21.5 -48 48 -48s48 21.5 48 48s-21.5 48 -48 48zM336 160c61.9004 0 112 -50.0996 112 -112\ns-50.0996 -112 -112 -112s-112 50.0996 -112 112s50.0996 112 112 112zM336 0c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48zM392.3 447.8l31.6006 0.100586c19.3994 0.0996094 30.8994 -21.8008 19.6992 -37.8008l-366.199 -463.699\nc-3.94629 -5.62793 -12.7275 -10.1973 -19.6006 -10.2002l-33.3994 -0.100586c-19.5 0 -30.9004 21.9004 -19.7002 37.8008l368 463.699c4.5 6.40039 11.7998 10.2002 19.5996 10.2002z\" />\n    <glyph glyph-name=\"universal-access\" unicode=\"&#xf29a;\" \nd=\"M256 400c-114.971 0 -208 -93.0469 -208 -208c0 -114.971 93.0469 -208 208 -208c114.971 0 208 93.0469 208 208c0 114.971 -93.0469 208 -208 208zM256 440c136.967 0 248 -111.033 248 -248s-111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248z\nM256 384c106.039 0 192 -85.9609 192 -192s-85.9609 -192 -192 -192s-192 85.9609 -192 192s85.9609 192 192 192zM256 340c-19.8818 0 -36 -16.1182 -36 -36s16.1182 -36 36 -36s36 16.1182 36 36s-16.1182 36 -36 36zM373.741 241.977\nc8.59961 2.03027 13.9258 10.6484 11.8965 19.249c-2.03027 8.60156 -10.6494 13.9258 -19.249 11.8955c-96.4912 -22.7832 -124.089 -22.8291 -220.774 0c-8.60254 2.03125 -17.2178 -3.29395 -19.249 -11.8955c-2.03125 -8.60059 3.29492 -17.2178 11.8945 -19.249\nc28.7129 -6.7793 55.5127 -12.749 82.1416 -15.8066c-0.852539 -101.08 -12.3242 -123.08 -25.0371 -155.621c-3.61719 -9.25879 0.957031 -19.6982 10.2168 -23.3145c9.26465 -3.61914 19.7002 0.961914 23.3154 10.2168c8.72754 22.3408 17.0947 40.6982 22.2617 78.5488\nh9.68555c5.1748 -37.9131 13.5566 -56.2412 22.2617 -78.5488c3.61621 -9.25977 14.0547 -13.834 23.3154 -10.2168c9.25977 3.61621 13.834 14.0547 10.2168 23.3145c-12.7305 32.5693 -24.1855 54.5986 -25.0371 155.621c26.6299 3.05859 53.4287 9.02832 82.1406 15.8066\nz\" />\n    <glyph glyph-name=\"blind\" unicode=\"&#xf29d;\" horiz-adv-x=\"384\" \nd=\"M380.15 -62.8369c-1.05664 -0.640625 -2.91602 -1.16113 -4.15137 -1.16113c-2.48438 0 -5.54785 1.72363 -6.83789 3.84766l-125.33 206.428c4.25684 1.68848 10.0615 5.9375 12.958 9.48438l126.048 -207.607c0.641602 -1.05664 1.16211 -2.91699 1.16211 -4.15234\nc0 -2.48535 -1.72461 -5.5498 -3.84863 -6.83887zM142.803 133.662l62.8145 -153.537c6.69141 -16.3584 -1.14453 -35.042 -17.501 -41.7344c-16.3564 -6.69043 -35.04 1.1416 -41.7334 17.501l-36.1201 88.2852zM96 360c-24.3008 0 -44 19.6992 -44 44s19.6992 44 44 44\ns44 -19.6992 44 -44s-19.6992 -44 -44 -44zM250.837 190.872c8.19336 -10.374 6.44434 -25.4922 -3.96582 -33.708c-9.33984 -7.37402 -24.5635 -7.61914 -33.708 3.96484l-102.3 129.217c-0.663086 0.836914 -2.06738 1.51562 -3.13477 1.51562\nc-2.20801 0 -4 -1.79297 -4 -4.00098c0 -0.769531 0.387695 -1.88281 0.865234 -2.48535l31.4062 -39.8164v-107.196l-65.9258 -181.288c-6.04102 -16.6143 -24.4072 -25.1768 -41.0088 -19.1387c-16.6104 6.04004 -25.1787 24.4004 -19.1387 41.0098l54.0732 148.693\nv140.698l-16 -20.5713v-79.7656c0 -13.0996 -10.4951 -23.748 -23.5361 -23.9961c-13.4531 -0.254883 -24.4639 11.0811 -24.4639 24.5361v95.6943l61.0557 78.5c4.72754 6.0791 11.7979 9.23633 18.9443 9.23926v0.0263672h32v-0.015625\nc7.08691 -0.00390625 14.1035 -3.11719 18.8369 -9.1123z\" />\n    <glyph glyph-name=\"audio-description\" unicode=\"&#xf29e;\" \nd=\"M162.925 209.291l8.82227 -30.6553h-25.6064l9.04102 30.6523c1.27734 4.4209 2.65137 9.99414 3.87207 15.2451c1.2207 -5.25098 2.59473 -10.8232 3.87109 -15.2422zM329.399 241.39c28.6846 0 46.1748 -16.7656 46.1748 -49.0049\nc0 -32.0977 -16.3994 -49.7754 -46.1748 -49.7754h-14.5234v98.7803h14.5234zM512 336v-288c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h416c26.5098 0 48 -21.4902 48 -48zM245.459 111.861l-57.0967 168\nc-1.52734 4.49219 -6.61719 8.13867 -11.3623 8.13867h-35.8936c-4.74512 0 -9.83594 -3.64648 -11.3623 -8.13867l-57.0967 -168c-2.64453 -7.7832 3.1416 -15.8613 11.3613 -15.8613h29.1328c4.99219 0 10.1602 3.89453 11.5352 8.69336l8.57422 29.9053h51.3672\nl8.79297 -29.9766c1.39648 -4.75977 6.55469 -8.62207 11.5146 -8.62207v0h29.1719c8.2207 0 14.0059 8.07812 11.3613 15.8613zM430.16 192.386c0 58.9775 -37.9189 95.6143 -98.96 95.6143h-57.3662c-6.62695 0 -12 -5.37305 -12 -12v-168c0 -6.62695 5.37305 -12 12 -12\nh57.3662c61.041 0 98.96 36.9326 98.96 96.3857z\" />\n    <glyph glyph-name=\"phone-volume\" unicode=\"&#xf2a0;\" horiz-adv-x=\"384\" \nd=\"M97.333 -58.9658c-129.874 129.874 -129.681 340.252 0 469.933c5.69824 5.69824 14.5273 6.63184 21.2627 2.42188l64.8174 -40.5127c4.45898 -2.78711 8.07812 -9.31641 8.07812 -14.5752c0 -1.82715 -0.550781 -4.68652 -1.22949 -6.38281l-32.4082 -81.0205\nc-2.38477 -5.96484 -9.53418 -10.8047 -15.958 -10.8047c-0.473633 0 -1.23926 0.0380859 -1.71094 0.0849609l-55.8096 5.58008c-21.0508 -58.2607 -20.6123 -122.471 0 -179.515l55.8105 5.58105c0.47168 0.046875 1.2373 0.0849609 1.71094 0.0849609\nc6.42383 0 13.5732 -4.83984 15.959 -10.8037l32.4072 -81.0225c0.678711 -1.69629 1.22949 -4.55566 1.22949 -6.38281c0 -5.25879 -3.61914 -11.7881 -8.07812 -14.5752l-64.8174 -40.5127c-2.30762 -1.44238 -6.38867 -2.6123 -9.10938 -2.6123\nc-3.92969 0 -9.375 2.25488 -12.1543 5.03418zM247.126 352.527c11.832 -20.0469 11.832 -45.0088 0 -65.0557c-3.9502 -6.69238 -13.1084 -7.95898 -18.7178 -2.58105l-5.97559 5.72656c-3.91016 3.74805 -4.79297 9.62207 -2.26074 14.4102\nc2.04883 3.87793 3.71094 10.5859 3.71094 14.9717c0 4.38672 -1.66211 11.0947 -3.71094 14.9727c-2.5332 4.78809 -1.64941 10.6621 2.26074 14.4102l5.97559 5.72656c5.60938 5.37793 14.7676 4.11133 18.7178 -2.58105zM338.913 443.714\nc60.1396 -71.6035 60.0918 -175.882 0 -247.428c-4.47363 -5.32715 -12.5303 -5.74609 -17.5518 -0.933594l-5.79785 5.55762c-4.56055 4.37109 -4.97754 11.5293 -0.930664 16.3789c49.6875 59.5381 49.6465 145.933 0 205.422\nc-4.04688 4.84961 -3.63086 12.0078 0.930664 16.3789l5.79785 5.55762c5.02148 4.8125 13.0781 4.39355 17.5518 -0.933594zM292.941 398.773c36.0498 -46.3223 36.1074 -111.149 0 -157.547c-4.39062 -5.64062 -12.6973 -6.25098 -17.8564 -1.30371l-5.81836 5.5791\nc-4.39941 4.21875 -4.99805 11.0947 -1.28418 15.9307c26.5352 34.5645 26.5332 82.5723 0 117.135c-3.71387 4.83594 -3.11523 11.7109 1.28418 15.9307l5.81836 5.5791c5.15918 4.94727 13.4658 4.33691 17.8564 -1.30371z\" />\n    <glyph glyph-name=\"braille\" unicode=\"&#xf2a1;\" horiz-adv-x=\"640\" \nd=\"M128 192c0 -35.3457 -28.6543 -64 -64 -64s-64 28.6543 -64 64s28.6543 64 64 64s64 -28.6543 64 -64zM64 64c17.6729 0 32 -14.3271 32 -32s-14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32zM64 416c35.3457 0 64 -28.6543 64 -64s-28.6543 -64 -64 -64\ns-64 28.6543 -64 64s28.6543 64 64 64zM224 224c17.6729 0 32 -14.3271 32 -32s-14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32zM224 64c17.6729 0 32 -14.3271 32 -32s-14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32zM224 416\nc35.3457 0 64 -28.6543 64 -64s-28.6543 -64 -64 -64s-64 28.6543 -64 64s28.6543 64 64 64zM448 224c17.6729 0 32 -14.3271 32 -32s-14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32zM448 64c17.6729 0 32 -14.3271 32 -32s-14.3271 -32 -32 -32\ns-32 14.3271 -32 32s14.3271 32 32 32zM448 416c35.3457 0 64 -28.6543 64 -64s-28.6543 -64 -64 -64s-64 28.6543 -64 64s28.6543 64 64 64zM608 224c17.6729 0 32 -14.3271 32 -32s-14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32zM608 64\nc17.6729 0 32 -14.3271 32 -32s-14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32zM608 384c17.6729 0 32 -14.3271 32 -32s-14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32z\" />\n    <glyph glyph-name=\"assistive-listening-systems\" unicode=\"&#xf2a2;\" \nd=\"M216 188c0 -15.4639 -12.5361 -28 -28 -28s-28 12.5361 -28 28c0 44.1123 35.8877 80 80 80s80 -35.8877 80 -80c0 -15.4639 -12.5361 -28 -28 -28s-28 12.5361 -28 28c0 13.2344 -10.7666 24 -24 24s-24 -10.7656 -24 -24zM240 364c97.0469 0 176 -78.9531 176 -176\nc0 -95.9863 -71.4053 -109.798 -72 -144.226c-0.124023 -59.4463 -48.5254 -107.774 -108 -107.774c-15.4639 0 -28 12.5361 -28 28s12.5361 28 28 28c28.6729 0 52 23.3271 52 52l0.00292969 0.37793c0.988281 73.3115 71.9971 68.458 71.9971 143.622\nc0 66.168 -53.832 120 -120 120s-120 -53.832 -120 -120c0 -15.4639 -12.5361 -28 -28 -28s-28 12.5361 -28 28c0 97.0469 78.9531 176 176 176zM160 128c17.6729 0 32 -14.3271 32 -32s-14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32zM32 0\nc17.6729 0 32 -14.3271 32 -32s-14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32zM512 187.993c0 -15.4639 -12.5371 -28 -28.001 -28s-28 12.5361 -28 28c0 1.12695 -0.00683594 2.24512 -0.0332031 3.36328l-0.00292969 0.1875\nc-1.4668 91.4404 -60.1709 172.599 -146.077 201.953c-14.6318 5.00098 -22.4414 20.917 -17.4414 35.5498c5.00098 14.6328 20.917 22.4404 35.5498 17.4424c108.163 -36.959 182.082 -139.015 183.961 -253.965c0.0332031 -1.50684 0.0449219 -3.01367 0.0449219 -4.53125\nzM152.971 8.9707l-33.9404 -33.9404l-80 80l33.9404 33.9404z\" />\n    <glyph glyph-name=\"american-sign-language-interpreting\" unicode=\"&#xf2a3;\" horiz-adv-x=\"640\" \nd=\"M290.547 258.961c-20.2949 10.1494 -44.1465 11.1992 -64.7393 3.88965c42.6064 0 71.208 -20.4746 85.5781 -50.5752c8.57617 -17.8994 -5.14746 -38.0713 -23.6172 -38.0713c18.4297 0 32.2119 -20.1357 23.6172 -38.0713\nc-14.7246 -30.8457 -46.123 -50.8535 -80.2979 -50.8535c-0.556641 0 -94.4707 8.61426 -94.4707 8.61426l-66.4062 -33.3467c-9.38379 -4.69336 -19.8145 -0.378906 -23.8945 7.78125l-44.4561 88.9248c-4.16699 8.61523 -1.11133 18.8975 6.94531 23.6211l58.0723 33.0693\nl41.1221 74.1953c6.38965 57.2451 34.7314 109.768 79.7432 146.727c11.3906 9.44824 28.3408 7.78125 37.5098 -3.61328c9.44629 -11.3936 7.78027 -28.0674 -3.6123 -37.5156c-12.5029 -10.5596 -23.6172 -22.5098 -32.5088 -35.5703\nc21.6719 14.7285 46.6787 24.7324 74.1865 28.0674c14.7246 1.94434 28.0625 -8.33594 29.7295 -23.0654c1.94531 -14.7275 -8.33594 -28.0674 -23.0615 -29.7344c-16.1162 -1.94434 -31.1201 -7.50293 -44.1787 -15.2832c26.1143 5.71289 58.7119 3.1377 88.0791 -11.1152\nc13.3359 -6.66895 18.8936 -22.5088 12.2246 -35.8486c-6.38965 -13.0596 -22.5039 -18.6162 -35.5645 -12.2256zM263.318 189.489c-6.1123 12.5049 -18.3379 20.2861 -32.2314 20.2861h-0.105469c-19.5732 0 -35.46 -15.8867 -35.46 -35.46\nc0 -0.0302734 0 -0.0800781 0.000976562 -0.110352c0 -21.4277 17.8076 -35.5703 35.5645 -35.5703c13.8936 0 26.1191 7.78125 32.2314 20.2861c4.44531 9.44922 13.6133 15.0059 23.3389 15.2842c-9.72559 0.277344 -18.8936 5.83496 -23.3389 15.2842zM638.139 226.726\nc4.16797 -8.61426 1.11133 -18.8965 -6.94531 -23.6201l-58.0713 -33.0693l-41.1221 -74.1963c-6.38965 -57.2451 -34.7314 -109.767 -79.7432 -146.726c-10.9316 -9.1123 -27.7988 -8.14453 -37.5098 3.6123c-9.44629 11.3945 -7.78027 28.0674 3.61328 37.5166\nc12.5029 10.5586 23.6162 22.5088 32.5078 35.5703c-21.6719 -14.7295 -46.6787 -24.7324 -74.1865 -28.0674c-10.0205 -2.50586 -27.5518 5.64258 -29.7295 23.0645c-1.94531 14.7285 8.33594 28.0674 23.0615 29.7344c16.1162 1.94629 31.1201 7.50293 44.1787 15.2842\nc-26.1143 -5.71289 -58.7119 -3.1377 -88.0791 11.1152c-13.3359 6.66895 -18.8936 22.5088 -12.2246 35.8477c6.38965 13.0605 22.5049 18.6191 35.5654 12.2266c20.2949 -10.1484 44.1465 -11.1982 64.7393 -3.88965c-42.6064 0 -71.208 20.4746 -85.5781 50.5762\nc-8.57617 17.8984 5.14746 38.0713 23.6172 38.0713c-18.4297 0 -32.2109 20.1357 -23.6172 38.0703c14.0332 29.3965 44.0391 50.8877 81.9658 50.8545l92.8027 -8.61523l66.4062 33.3467c9.4082 4.7041 19.8281 0.354492 23.8936 -7.78027zM408.912 245.344\nc-13.8936 0 -26.1191 -7.78027 -32.2314 -20.2861c-4.44531 -9.44824 -13.6133 -15.0059 -23.3389 -15.2832c9.72559 -0.27832 18.8936 -5.83594 23.3389 -15.2842c6.1123 -12.5049 18.3379 -20.2861 32.2314 -20.2861h0.105469c19.5732 0 35.46 15.8857 35.46 35.46\nc0 0.0302734 0 0.0791016 -0.000976562 0.110352c0 21.4287 -17.8076 35.5693 -35.5645 35.5693z\" />\n    <glyph glyph-name=\"deaf\" unicode=\"&#xf2a4;\" \nd=\"M216 188c0 -15.4639 -12.5361 -28 -28 -28s-28 12.5361 -28 28c0 44.1123 35.8877 80 80 80s80 -35.8877 80 -80c0 -15.4639 -12.5361 -28 -28 -28s-28 12.5361 -28 28c0 13.2344 -10.7666 24 -24 24s-24 -10.7656 -24 -24zM240 364c97.0469 0 176 -78.9531 176 -176\nc0 -95.9863 -71.4053 -109.798 -72 -144.226c-0.124023 -59.4463 -48.5254 -107.774 -108 -107.774c-15.4639 0 -28 12.5361 -28 28s12.5361 28 28 28c28.6729 0 52 23.3271 52 52l0.00292969 0.37793c0.988281 73.3115 71.9971 68.458 71.9971 143.622\nc0 66.168 -53.832 120 -120 120s-120 -53.832 -120 -120c0 -15.4639 -12.5361 -28 -28 -28s-28 12.5361 -28 28c0 97.0469 78.9531 176 176 176zM508.485 416.201c4.68652 -4.68652 4.68652 -12.2842 0 -16.9727l-87.0303 -87.0283\nc-4.68652 -4.68652 -12.2842 -4.68652 -16.9697 0l-28.2852 28.2852c-4.68652 4.68652 -4.68652 12.2842 0 16.9707l87.0283 87.0293c4.6875 4.68555 12.2842 4.68555 16.9717 0zM168.97 133.255l28.2861 -28.2842c4.68652 -4.68652 4.68652 -12.2852 0 -16.9707\nl-148.484 -148.485c-4.6875 -4.68555 -12.2842 -4.68555 -16.9717 0l-28.2852 28.2842c-4.68555 4.6875 -4.68555 12.2852 0 16.9707l148.485 148.485c4.68555 4.68652 12.2842 4.68652 16.9697 0z\" />\n    <glyph glyph-name=\"sign-language\" unicode=\"&#xf2a7;\" horiz-adv-x=\"448\" \nd=\"M91.4336 -35.9873c-0.306641 16.0186 13.1094 29.1289 29.1309 29.1289h62.293v5.71484h-125.864c-16.0215 0 -29.4375 13.1104 -29.1299 29.1289c0.296875 15.5234 12.9717 28.0146 28.5645 28.0146h126.43v5.71387h-153.722\nc-16.0205 0 -29.4365 13.1113 -29.1299 29.1289c0.296875 15.5225 12.9727 28.0137 28.5664 28.0137h154.286v5.71387h-125.151c-16.0215 0 -29.4375 13.1104 -29.1299 29.1289c0.296875 15.5215 12.9727 28.0127 28.5654 28.0127h168.566l-31.085 22.6064\nc-12.7617 9.28027 -15.583 27.1484 -6.30176 39.9121c9.28027 12.7607 27.1494 15.5811 39.9121 6.30176l123.36 -89.7148c7.79395 -5.66895 14.1201 -18.0908 14.1201 -27.7285v-141.136c0 -15.9102 -10.9463 -29.7305 -26.4326 -33.374l-80.4717 -18.9346\nc-8.55176 -2.01172 -22.624 -3.64551 -31.4102 -3.64551h-107.4c-15.5928 0.000976562 -28.2686 12.4922 -28.5664 28.0137zM164.683 189.714l-36.3711 46.71c-9.5791 12.3027 -7.51172 29.9795 4.55371 39.75c12.4502 10.083 31.0371 7.55273 40.8799 -5.08789\nl13.0039 -16.7002c-17.1426 -15.6484 -15.4092 -43.0244 3.16992 -56.5361l11.1875 -8.13574h-36.4238zM447.981 191.817c0.00976562 -0.311523 0.0175781 -0.81543 0.0175781 -1.12695c0 -9.24902 -5.92188 -21.3682 -13.2197 -27.0508l-61.0645 -47.5488v16.999\nc0 13.4834 -6.51074 26.2686 -17.415 34.1982l-123.359 89.7139c-12.6357 9.18945 -29.1934 9.16113 -41.6904 0.904297l-52.0527 66.8486c-9.84375 12.6416 -7.74121 31.2822 5.08594 40.8809c12.4297 9.30273 30.0732 6.97559 39.6523 -5.32812l77.6758 -99.7539\nl4.50879 3.51172l-94.4434 121.287c-9.84277 12.6416 -7.74121 31.2822 5.08594 40.8818c12.4307 9.30176 30.0732 6.97461 39.6533 -5.32812l94.79 -121.734l4.50879 3.51074l-76.8887 98.7451c-9.84277 12.6416 -7.74121 31.2822 5.08594 40.8809\nc12.4297 9.30273 30.0732 6.97559 39.6533 -5.32715l103.562 -133.001l-1.26172 38.4141c-0.518555 15.7715 11.8457 28.9756 27.6191 29.4932c15.7705 0.517578 28.9746 -11.8477 29.4922 -27.6191z\" />\n    <glyph glyph-name=\"low-vision\" unicode=\"&#xf2a8;\" horiz-adv-x=\"576\" \nd=\"M569.344 216.369c3.67383 -6.22461 6.65625 -17.1416 6.65625 -24.3691s-2.98242 -18.1455 -6.65723 -24.3701c-31.9746 -54.2607 -79.6484 -98.3232 -136.81 -126.301l0.00683594 -0.00878906l43.1201 -58.377c7.60156 -10.8594 4.95996 -25.8252 -5.90039 -33.4268\nl-13.1133 -9.17773c-10.8594 -7.59863 -25.8223 -4.95801 -33.4238 5.90039l-251.836 356.544c-11.1797 -5.09375 -28.5518 -14.7539 -38.7764 -21.5635l189.979 -271.399c-9.52637 -1.00488 -25.0342 -1.82031 -34.6133 -1.82031\nc-12.29 0 -32.1484 1.33984 -44.3262 2.99023l-40.6309 58.04h-0.00976562l-119.399 170.58c-8.64453 -9.25391 -21.3203 -25.3428 -28.2939 -35.9121l124.19 -177.417c-73.1172 25.4863 -134.358 76.0166 -172.858 141.349c-8.96484 15.2109 -8.76562 33.8643 0 48.7393\nc0.0107422 0.0166016 0.0234375 0.0332031 0.0332031 0.0498047c33.5459 56.8984 82.7676 99.8506 136.79 126.242l-43.1309 58.3945c-7.60156 10.8604 -4.95996 25.8252 5.90039 33.4268l13.1143 9.17773c10.8584 7.59961 25.8213 4.95801 33.4229 -5.90039\nl52.7705 -72.1689c26.3496 6.79004 53.9834 10.4092 82.4512 10.4092c119.81 0 224.96 -63.9492 281.344 -159.631zM390.026 102.06c21.1406 23.9658 33.9736 55.4365 33.9736 89.9404c0 75.1738 -60.8379 136 -136 136c-17.5117 0 -34.2422 -3.30566 -49.6084 -9.32324\nl19.0684 -27.2363c25.9883 7.96289 54.7598 5.56836 79.5098 -7.68066h-0.0292969c-23.6504 0 -42.8203 -19.1699 -42.8203 -42.8193c0 -23.4717 18.9922 -42.8203 42.8203 -42.8203c23.6494 0 42.8193 19.1699 42.8193 42.8203v0.0292969\nc18.9111 -35.3271 15.8818 -79.1123 -8.7998 -111.68z\" />\n    <glyph glyph-name=\"handshake\" unicode=\"&#xf2b5;\" horiz-adv-x=\"640\" \nd=\"M434.7 384c8.5 0 16.7002 -3.40039 22.5996 -9.40039l54.6006 -54.5996v-193.5c-2.40039 2.7002 -5 5.2998 -7.90039 7.7002l-145.6 118.2l26.0996 23.8994c6.5 6 7 16.1006 1 22.6006c-5.90039 6.5 -16.0996 6.89941 -22.5996 1l-79.9004 -73.2002\nc-0.0996094 -0.100586 -0.299805 -0.100586 -0.400391 -0.200195c-16.6992 -14.9004 -43.3994 -11.2002 -56.0996 2.7002c-14.2002 15.5 -14.5 40.3994 2.09961 56c0.100586 0.0996094 0.200195 0.299805 0.300781 0.399414l98.2998 90\nc5.89941 5.40039 13.5996 8.40039 21.5996 8.40039h85.9004zM544 319.8h96v-255.899h-64c-17.7002 0 -32 14.2998 -32 32v223.899zM592 95.9004c8.7998 0 16 7.19922 16 16c0 8.7998 -7.2002 16 -16 16s-16 -7.2002 -16 -16c0 -8.80078 7.2002 -16 16 -16zM0 64v255.8h96\nv-223.8c0 -17.7002 -14.2998 -32 -32 -32h-64zM48 127.9c-8.7998 0 -16 -7.10059 -16 -16c0 -8.80078 7.2002 -16 16 -16s16 7.19922 16 16c0 8.7998 -7.2002 16 -16 16zM483.9 109.3c13.6992 -11.2002 15.7998 -31.2998 4.59961 -45.0996l-9.5 -11.7002\nc-11.0996 -13.7998 -31.2998 -15.7998 -45 -4.7002l-5.40039 4.40039l-31.3994 -38.6006c-12.9004 -15.8994 -36.4004 -18.3994 -52.2998 -5.39941l-17.9004 15.5l-0.200195 -0.200195c-22.2998 -27.4004 -62.5996 -31.5996 -90 -9.2998l-90.5 81.8994h-18.2998v223.9\nl54.7002 54.5996c6 6 14.0996 9.40039 22.5996 9.40039h83.7998l-81.7998 -74.9004c-29.2002 -26.7998 -31.2998 -72.2998 -4.39941 -101.699c26.5 -28.9004 72 -31.5 101.699 -4.40039l30 27.5z\" />\n    <glyph glyph-name=\"envelope-open\" unicode=\"&#xf2b6;\" \nd=\"M512 -16c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v263.276c0 12.8955 8.2373 29.8193 18.3867 37.7754c24.9131 19.5293 45.501 35.3652 164.2 121.512c16.8252 12.2666 50.21 41.7832 73.4131 41.4336\nc23.1982 0.353516 56.5957 -29.1719 73.4131 -41.4326c118.687 -86.1377 139.303 -101.995 164.2 -121.513c10.1494 -7.95605 18.3867 -24.8799 18.3867 -37.7754v-263.276zM446.334 180.605c-2.5625 3.72754 -7.7002 4.59473 -11.3389 1.90625\nc-22.8447 -16.873 -55.4619 -40.7051 -105.582 -77.0791c-16.8252 -12.2656 -50.21 -41.7803 -73.4131 -41.4297c-23.2109 -0.34375 -56.5586 29.1436 -73.4131 41.4297c-50.1143 36.3701 -82.7344 60.2041 -105.582 77.0791\nc-3.63867 2.68848 -8.77637 1.82129 -11.3389 -1.90625l-9.07227 -13.1963c-0.777344 -1.13086 -1.4082 -3.16113 -1.4082 -4.5332c0 -2.22754 1.45508 -5.11035 3.24707 -6.43359c22.8877 -16.8994 55.4541 -40.6904 105.304 -76.8682\nc20.2734 -14.7812 56.5234 -47.8135 92.2637 -47.5732c35.7236 -0.242188 71.9609 32.7715 92.2627 47.5732c49.8506 36.1787 82.418 59.9697 105.304 76.8682c1.79199 1.32324 3.24707 4.20605 3.24707 6.43359c0 1.37207 -0.630859 3.40234 -1.4082 4.5332z\" />\n    <glyph glyph-name=\"address-book\" unicode=\"&#xf2b9;\" horiz-adv-x=\"448\" \nd=\"M436 288h-20v-64h20c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-20v-64h20c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-20v-48c0 -26.5 -21.5 -48 -48 -48h-320c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48\nh320c26.5 0 48 -21.5 48 -48v-48h20c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12zM208 320c-35.2998 0 -64 -28.7002 -64 -64s28.7002 -64 64 -64s64 28.7002 64 64s-28.7002 64 -64 64zM320 83.2002v19.2002\nc0 31.7998 -30.0996 57.5996 -67.2002 57.5996h-5c-12.2002 -5.09961 -25.7002 -8 -39.7998 -8s-27.5 2.90039 -39.7998 8h-5c-37.1006 0 -67.2002 -25.7998 -67.2002 -57.5996v-19.2002c0 -10.6006 10 -19.2002 22.4004 -19.2002h179.199\nc12.4004 0 22.4004 8.59961 22.4004 19.2002z\" />\n    <glyph glyph-name=\"address-card\" unicode=\"&#xf2bb;\" horiz-adv-x=\"576\" \nd=\"M528 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h480zM176 320c-35.2998 0 -64 -28.7002 -64 -64s28.7002 -64 64 -64s64 28.7002 64 64s-28.7002 64 -64 64zM288 83.2002v19.2002\nc0 31.7998 -30.0996 57.5996 -67.2002 57.5996h-5c-12.2002 -5.09961 -25.7002 -8 -39.7998 -8s-27.5 2.90039 -39.7998 8h-5c-37.1006 0 -67.2002 -25.7998 -67.2002 -57.5996v-19.2002c0 -10.6006 10 -19.2002 22.4004 -19.2002h179.199\nc12.4004 0 22.4004 8.59961 22.4004 19.2002zM512 136v16c0 4.40039 -3.59961 8 -8 8h-144c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h144c4.40039 0 8 3.59961 8 8zM512 200v16c0 4.40039 -3.59961 8 -8 8h-144c-4.40039 0 -8 -3.59961 -8 -8v-16\nc0 -4.40039 3.59961 -8 8 -8h144c4.40039 0 8 3.59961 8 8zM512 264v16c0 4.40039 -3.59961 8 -8 8h-144c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h144c4.40039 0 8 3.59961 8 8z\" />\n    <glyph glyph-name=\"user-circle\" unicode=\"&#xf2bd;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 344c-48.5996 0 -88 -39.4004 -88 -88s39.4004 -88 88 -88s88 39.4004 88 88s-39.4004 88 -88 88zM248 0c58.7002 0 111.3 26.5996 146.5 68.2002\nc-18.7998 35.3994 -55.5996 59.7998 -98.5 59.7998c-2.40039 0 -4.7998 -0.400391 -7.09961 -1.09961c-12.9004 -4.2002 -26.6006 -6.90039 -40.9004 -6.90039s-27.9004 2.7002 -40.9004 6.90039c-2.2998 0.699219 -4.69922 1.09961 -7.09961 1.09961\nc-42.9004 0 -79.7002 -24.4004 -98.5 -59.7998c35.2002 -41.6006 87.7998 -68.2002 146.5 -68.2002z\" />\n    <glyph glyph-name=\"id-badge\" unicode=\"&#xf2c1;\" horiz-adv-x=\"384\" \nd=\"M336 448c26.5 0 48 -21.5 48 -48v-416c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48h288zM144 416c-8.7998 0 -16 -7.2002 -16 -16s7.2002 -16 16 -16h96c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16h-96zM192 288\nc-35.2998 0 -64 -28.7002 -64 -64s28.7002 -64 64 -64s64 28.7002 64 64s-28.7002 64 -64 64zM304 51.2002v19.2002c0 31.7998 -30.0996 57.5996 -67.2002 57.5996h-5c-12.2002 -5.09961 -25.7002 -8 -39.7998 -8s-27.5 2.90039 -39.7998 8h-5\nc-37.1006 0 -67.2002 -25.7998 -67.2002 -57.5996v-19.2002c0 -10.6006 10 -19.2002 22.4004 -19.2002h179.199c12.4004 0 22.4004 8.59961 22.4004 19.2002z\" />\n    <glyph glyph-name=\"id-card\" unicode=\"&#xf2c2;\" horiz-adv-x=\"576\" \nd=\"M528 416c26.5 0 48 -21.5 48 -48v-16h-576v16c0 26.5 21.5 48 48 48h480zM0 16v304h576v-304c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48zM352 248v-16c0 -4.40039 3.59961 -8 8 -8h144c4.40039 0 8 3.59961 8 8v16c0 4.40039 -3.59961 8 -8 8h-144\nc-4.40039 0 -8 -3.59961 -8 -8zM352 184v-16c0 -4.40039 3.59961 -8 8 -8h144c4.40039 0 8 3.59961 8 8v16c0 4.40039 -3.59961 8 -8 8h-144c-4.40039 0 -8 -3.59961 -8 -8zM352 120v-16c0 -4.40039 3.59961 -8 8 -8h144c4.40039 0 8 3.59961 8 8v16\nc0 4.40039 -3.59961 8 -8 8h-144c-4.40039 0 -8 -3.59961 -8 -8zM176 256c-35.2998 0 -64 -28.7002 -64 -64s28.7002 -64 64 -64s64 28.7002 64 64s-28.7002 64 -64 64zM67.0996 51.7998c-3.19922 -9.7998 5.2002 -19.7998 15.6006 -19.7998h186.6\nc10.4004 0 18.7998 9.90039 15.6006 19.7998c-8.40039 25.7002 -32.5 44.2002 -60.9004 44.2002h-8.2002c-12.2002 -5.09961 -25.7002 -8 -39.7998 -8s-27.5 2.90039 -39.7998 8h-8.2002c-28.4004 0 -52.5 -18.5 -60.9004 -44.2002z\" />\n    <glyph glyph-name=\"thermometer-full\" unicode=\"&#xf2c7;\" horiz-adv-x=\"256\" \nd=\"M224 352v-203.347c19.9121 -22.5635 32 -52.1943 32 -84.6533c0 -70.6963 -57.3018 -128 -128 -128c-0.298828 0 -0.610352 0.000976562 -0.90918 0.00292969c-70.3018 0.488281 -127.448 58.3613 -127.089 128.664c0.164062 32.1973 12.2227 61.5771 31.998 83.9863\nv203.347c0 53.0186 42.9814 96 96 96s96 -42.9814 96 -96zM128 -16c44.1123 0 80 35.8877 80 80c0 34.3379 -19.3701 52.1904 -32 66.502v221.498c0 26.4668 -21.5332 48 -48 48s-48 -21.5332 -48 -48v-221.498c-12.7334 -14.4277 -31.8262 -32.0996 -31.999 -66.0801\nc-0.223633 -43.876 35.5635 -80.1162 79.4229 -80.4199zM192 64c0 -35.3457 -28.6543 -64 -64 -64s-64 28.6543 -64 64c0 23.6846 12.876 44.3486 32 55.417v232.583c0 17.6729 14.3271 32 32 32s32 -14.3271 32 -32v-232.583c19.124 -11.0684 32 -31.7324 32 -55.417z\" />\n    <glyph glyph-name=\"thermometer-three-quarters\" unicode=\"&#xf2c8;\" horiz-adv-x=\"256\" \nd=\"M192 64c0 -35.3457 -28.6543 -64 -64 -64s-64 28.6543 -64 64c0 23.6846 12.876 44.3486 32 55.417v168.583c0 17.6729 14.3271 32 32 32s32 -14.3271 32 -32v-168.583c19.124 -11.0684 32 -31.7324 32 -55.417zM224 148.653c19.9121 -22.5635 32 -52.1943 32 -84.6533\nc0 -70.6963 -57.3027 -128 -128 -128c-0.298828 0 -0.609375 0.000976562 -0.90918 0.00292969c-70.3018 0.488281 -127.448 58.3613 -127.089 128.664c0.164062 32.1982 12.2227 61.5781 31.998 83.9863v203.347c0 53.0186 42.9814 96 96 96s96 -42.9814 96 -96v-203.347z\nM208 64c0 34.3389 -19.3701 52.1904 -32 66.502v221.498c0 26.4668 -21.5332 48 -48 48s-48 -21.5332 -48 -48v-221.498c-12.7324 -14.4277 -31.8252 -32.0996 -31.999 -66.0801c-0.223633 -43.876 35.5635 -80.1162 79.4229 -80.4199l0.576172 -0.00195312\nc44.1123 0 80 35.8877 80 80z\" />\n    <glyph glyph-name=\"thermometer-half\" unicode=\"&#xf2c9;\" horiz-adv-x=\"256\" \nd=\"M192 64c0 -35.3457 -28.6543 -64 -64 -64s-64 28.6543 -64 64c0 23.6846 12.876 44.3486 32 55.417v104.583c0 17.6729 14.3271 32 32 32s32 -14.3271 32 -32v-104.583c19.124 -11.0684 32 -31.7324 32 -55.417zM224 148.653c19.9121 -22.5635 32 -52.1943 32 -84.6533\nc0 -70.6963 -57.3027 -128 -128 -128c-0.298828 0 -0.609375 0.000976562 -0.90918 0.00292969c-70.3018 0.488281 -127.448 58.3613 -127.089 128.664c0.164062 32.1982 12.2227 61.5781 31.998 83.9863v203.347c0 53.0186 42.9814 96 96 96s96 -42.9814 96 -96v-203.347z\nM208 64c0 34.3389 -19.3701 52.1904 -32 66.502v221.498c0 26.4668 -21.5332 48 -48 48s-48 -21.5332 -48 -48v-221.498c-12.7324 -14.4277 -31.8252 -32.0996 -31.999 -66.0801c-0.223633 -43.876 35.5635 -80.1162 79.4229 -80.4199l0.576172 -0.00195312\nc44.1123 0 80 35.8877 80 80z\" />\n    <glyph glyph-name=\"thermometer-quarter\" unicode=\"&#xf2ca;\" horiz-adv-x=\"256\" \nd=\"M192 64c0 -35.3457 -28.6543 -64 -64 -64s-64 28.6543 -64 64c0 23.6846 12.876 44.3486 32 55.417v40.583c0 17.6729 14.3271 32 32 32s32 -14.3271 32 -32v-40.583c19.124 -11.0684 32 -31.7324 32 -55.417zM224 148.653c19.9121 -22.5635 32 -52.1943 32 -84.6533\nc0 -70.6963 -57.3027 -128 -128 -128c-0.298828 0 -0.609375 0.000976562 -0.90918 0.00292969c-70.3018 0.488281 -127.448 58.3613 -127.089 128.664c0.164062 32.1982 12.2227 61.5781 31.998 83.9863v203.347c0 53.0186 42.9814 96 96 96s96 -42.9814 96 -96v-203.347z\nM208 64c0 34.3389 -19.3701 52.1904 -32 66.502v221.498c0 26.4668 -21.5332 48 -48 48s-48 -21.5332 -48 -48v-221.498c-12.7324 -14.4277 -31.8252 -32.0996 -31.999 -66.0801c-0.223633 -43.876 35.5635 -80.1162 79.4229 -80.4199l0.576172 -0.00195312\nc44.1123 0 80 35.8877 80 80z\" />\n    <glyph glyph-name=\"thermometer-empty\" unicode=\"&#xf2cb;\" horiz-adv-x=\"256\" \nd=\"M192 64c0 -35.3457 -28.6543 -64 -64 -64s-64 28.6543 -64 64s28.6543 64 64 64s64 -28.6543 64 -64zM224 148.653c19.9121 -22.5635 32 -52.1943 32 -84.6533c0 -70.6963 -57.3027 -128 -128 -128c-0.298828 0 -0.609375 0.000976562 -0.90918 0.00292969\nc-70.3018 0.488281 -127.448 58.3613 -127.089 128.664c0.164062 32.1982 12.2227 61.5781 31.998 83.9863v203.347c0 53.0186 42.9814 96 96 96s96 -42.9814 96 -96v-203.347zM208 64c0 34.3389 -19.3701 52.1904 -32 66.502v221.498c0 26.4668 -21.5332 48 -48 48\ns-48 -21.5332 -48 -48v-221.498c-12.7324 -14.4277 -31.8252 -32.0996 -31.999 -66.0801c-0.223633 -43.876 35.5635 -80.1162 79.4229 -80.4199l0.576172 -0.00195312c44.1123 0 80 35.8877 80 80z\" />\n    <glyph glyph-name=\"shower\" unicode=\"&#xf2cc;\" \nd=\"M389.66 312.4l-158.061 -158.061c-9.36914 -9.37012 -24.5693 -9.37012 -33.9395 0l-11.3203 11.3203c-9.37012 9.37012 -9.37012 24.5703 0 33.9395l0.110352 0.110352c-34.0303 40.21 -35.1602 98.9404 -3.39062 140.38\nc-11.9697 7.5498 -26.1396 11.9102 -41.2998 11.9102c-42.8799 0 -77.7598 -34.8799 -77.7598 -77.7598v-306.24h-64v306.24c0 78.1699 63.5898 141.76 141.76 141.76c36.9307 0 70.6104 -14.2002 95.8604 -37.4199c35.8994 11.5098 76.5 4.5 106.67 -21.0303\nl0.110352 0.110352c9.36914 9.37012 24.5693 9.37012 33.9395 0l11.3203 -11.3203c9.37012 -9.37012 9.37012 -24.5703 0 -33.9395zM384 240c0 -8.83691 -7.16309 -16 -16 -16s-16 7.16309 -16 16s7.16309 16 16 16s16 -7.16309 16 -16zM416 240c0 8.83691 7.16309 16 16 16\ns16 -7.16309 16 -16s-7.16309 -16 -16 -16s-16 7.16309 -16 16zM512 240c0 -8.83691 -7.16309 -16 -16 -16s-16 7.16309 -16 16s7.16309 16 16 16s16 -7.16309 16 -16zM352 208c0 -8.83691 -7.16309 -16 -16 -16s-16 7.16309 -16 16s7.16309 16 16 16s16 -7.16309 16 -16z\nM400 224c8.83691 0 16 -7.16309 16 -16s-7.16309 -16 -16 -16s-16 7.16309 -16 16s7.16309 16 16 16zM480 208c0 -8.83691 -7.16309 -16 -16 -16s-16 7.16309 -16 16s7.16309 16 16 16s16 -7.16309 16 -16zM320 176c0 -8.83691 -7.16309 -16 -16 -16s-16 7.16309 -16 16\ns7.16309 16 16 16s16 -7.16309 16 -16zM352 176c0 8.83691 7.16309 16 16 16s16 -7.16309 16 -16s-7.16309 -16 -16 -16s-16 7.16309 -16 16zM448 176c0 -8.83691 -7.16309 -16 -16 -16s-16 7.16309 -16 16s7.16309 16 16 16s16 -7.16309 16 -16zM320 144\nc0 8.83691 7.16309 16 16 16s16 -7.16309 16 -16s-7.16309 -16 -16 -16s-16 7.16309 -16 16zM416 144c0 -8.83691 -7.16309 -16 -16 -16s-16 7.16309 -16 16s7.16309 16 16 16s16 -7.16309 16 -16zM320 112c0 -8.83691 -7.16309 -16 -16 -16s-16 7.16309 -16 16\ns7.16309 16 16 16s16 -7.16309 16 -16zM384 112c0 -8.83691 -7.16309 -16 -16 -16s-16 7.16309 -16 16s7.16309 16 16 16s16 -7.16309 16 -16zM352 80c0 -8.83691 -7.16309 -16 -16 -16s-16 7.16309 -16 16s7.16309 16 16 16s16 -7.16309 16 -16zM320 48\nc0 -8.83691 -7.16309 -16 -16 -16s-16 7.16309 -16 16s7.16309 16 16 16s16 -7.16309 16 -16z\" />\n    <glyph glyph-name=\"bath\" unicode=\"&#xf2cd;\" \nd=\"M488 192c13.2549 0 24 -10.7451 24 -24v-16c0 -13.2549 -10.7451 -24 -24 -24h-8v-32c0 -28.4297 -12.3623 -53.9688 -32 -71.5469v-32.4531c0 -13.2549 -10.7451 -24 -24 -24h-16c-13.2549 0 -24 10.7451 -24 24v8h-256v-8c0 -13.2549 -10.7451 -24 -24 -24h-16\nc-13.2549 0 -24 10.7451 -24 24v32.4531c-19.6377 17.5781 -32 43.1172 -32 71.5469v32h-8c-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24h8v144c0 44.1123 35.8877 80 80 80c27.2119 0 51.2812 -13.667 65.7393 -34.4873\nc21.8838 6.06445 46.2285 1.10449 64.1777 -15.3643c4.71289 4.1748 11.916 4.02051 16.4277 -0.491211l11.3145 -11.3145c4.68555 -4.68652 4.68555 -12.2852 0 -16.9707l-95.0303 -95.0293c-4.68652 -4.68555 -12.2852 -4.68555 -16.9707 0l-11.3145 11.3145\nc-4.51172 4.51172 -4.66699 11.7148 -0.491211 16.4277c-21.5244 23.459 -23.3291 57.8281 -6.83789 83.0352c-5.68262 8.93457 -15.6641 14.8799 -27.0146 14.8799c-17.6445 0 -32 -14.3555 -32 -32v-144h408z\" />\n    <glyph glyph-name=\"podcast\" unicode=\"&#xf2ce;\" horiz-adv-x=\"448\" \nd=\"M267.429 -40.5635c-5.14258 -19.0098 -24.5703 -23.4365 -43.4287 -23.4365c-18.8574 0 -38.2861 4.42676 -43.4277 23.4365c-7.64551 28.4297 -20.5723 99.665 -20.5723 132.813c0 35.1562 31.1416 43.75 64 43.75s64 -8.59375 64 -43.75\nc0 -32.9492 -12.8711 -104.179 -20.5713 -132.813zM156.867 159.446c2.6748 -2.61914 2.39941 -6.98535 -0.628906 -9.18555c-9.3125 -6.76465 -16.4609 -15.3418 -21.2354 -25.3623c-1.74219 -3.65723 -6.5 -4.6582 -9.45312 -1.8877\nc-28.0176 26.2891 -45.5498 63.6279 -45.5498 104.989c0 80.7852 66.8691 146.247 148.163 143.941c76.1982 -2.16113 137.938 -64.1631 139.793 -140.369c1.04199 -42.7822 -16.6846 -81.5225 -45.5107 -108.565c-2.95215 -2.76855 -7.70801 -1.7627 -9.44922 1.8916\nc-4.77441 10.0195 -11.9219 18.5977 -21.2344 25.3623c-3.02832 2.20117 -3.30273 6.56738 -0.62793 9.1875c17.8018 17.4355 28.8662 41.7246 28.8662 68.5518c0 54.1934 -45.1377 98.042 -99.793 95.9258c-49.7295 -1.9248 -90.0703 -42.1572 -92.124 -91.8809\nc-1.17383 -28.4258 10.0908 -54.291 28.7842 -72.5986zM224 448c123.815 0 224 -100.205 224 -224c0 -90.1865 -52.7734 -165.727 -125.739 -201.407c-4.33203 -2.11914 -9.2666 1.54297 -8.53516 6.31055c2.55566 16.6416 4.625 33.1924 5.62402 47.2295\nc48.4922 31.377 80.6504 85.9355 80.6504 147.867c0 97.2031 -79.207 176.253 -176.468 175.999c-96.2393 -0.250977 -174.938 -78.6621 -175.529 -174.899c-0.376953 -61.3311 30.7871 -115.541 78.1875 -147.347c1.52832 -1.02637 2.53125 -2.67578 2.67773 -4.51172\nc1.06348 -13.3936 3.02344 -28.8271 5.40625 -44.3389c0.731445 -4.7666 -4.20215 -8.42871 -8.53516 -6.31055c-73.1377 35.7607 -125.739 111.416 -125.739 201.408c0 123.815 100.204 224 224 224zM224 288c35.3457 0 64 -28.6543 64 -64s-28.6543 -64 -64 -64\ns-64 28.6543 -64 64s28.6543 64 64 64z\" />\n    <glyph glyph-name=\"window-maximize\" unicode=\"&#xf2d0;\" \nd=\"M464 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h416zM448 256v84c0 6.59961 -5.40039 12 -12 12h-360c-6.59961 0 -12 -5.40039 -12 -12v-84h384z\" />\n    <glyph glyph-name=\"window-minimize\" unicode=\"&#xf2d1;\" \nd=\"M464 96c26.5 0 48 -21.5 48 -48v-32c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v32c0 26.5 21.5 48 48 48h416z\" />\n    <glyph glyph-name=\"window-restore\" unicode=\"&#xf2d2;\" \nd=\"M512 400v-288c0 -26.5 -21.5 -48 -48 -48h-48v208c0 44.0996 -35.9004 80 -80 80h-208v48c0 26.5 21.5 48 48 48h288c26.5 0 48 -21.5 48 -48zM384 272v-288c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v288c0 26.5 21.5 48 48 48h288\nc26.5 0 48 -21.5 48 -48zM316 244c0 6.59961 -5.40039 12 -12 12h-228c-6.59961 0 -12 -5.40039 -12 -12v-52h252v52z\" />\n    <glyph glyph-name=\"microchip\" unicode=\"&#xf2db;\" \nd=\"M416 400v-416c0 -26.5098 -21.4902 -48 -48 -48h-224c-26.5098 0 -48 21.4902 -48 48v416c0 26.5098 21.4902 48 48 48h224c26.5098 0 48 -21.4902 48 -48zM512 342v-12c0 -3.31152 -2.68848 -6 -6 -6h-18v-6c0 -3.31152 -2.68848 -6 -6 -6h-42v48h42\nc3.31152 0 6 -2.68848 6 -6v-6h18c3.31152 0 6 -2.68848 6 -6zM512 246v-12c0 -3.31152 -2.68848 -6 -6 -6h-18v-6c0 -3.31152 -2.68848 -6 -6 -6h-42v48h42c3.31152 0 6 -2.68848 6 -6v-6h18c3.31152 0 6 -2.68848 6 -6zM512 150v-12c0 -3.31152 -2.68848 -6 -6 -6h-18v-6\nc0 -3.31152 -2.68848 -6 -6 -6h-42v48h42c3.31152 0 6 -2.68848 6 -6v-6h18c3.31152 0 6 -2.68848 6 -6zM512 54v-12c0 -3.31152 -2.68848 -6 -6 -6h-18v-6c0 -3.31152 -2.68848 -6 -6 -6h-42v48h42c3.31152 0 6 -2.68848 6 -6v-6h18c3.31152 0 6 -2.68848 6 -6zM30 72h42\nv-48h-42c-3.31152 0 -6 2.68848 -6 6v6h-18c-3.31152 0 -6 2.68848 -6 6v12c0 3.31152 2.68848 6 6 6h18v6c0 3.31152 2.68848 6 6 6zM30 168h42v-48h-42c-3.31152 0 -6 2.68848 -6 6v6h-18c-3.31152 0 -6 2.68848 -6 6v12c0 3.31152 2.68848 6 6 6h18v6\nc0 3.31152 2.68848 6 6 6zM30 264h42v-48h-42c-3.31152 0 -6 2.68848 -6 6v6h-18c-3.31152 0 -6 2.68848 -6 6v12c0 3.31152 2.68848 6 6 6h18v6c0 3.31152 2.68848 6 6 6zM30 360h42v-48h-42c-3.31152 0 -6 2.68848 -6 6v6h-18c-3.31152 0 -6 2.68848 -6 6v12\nc0 3.31152 2.68848 6 6 6h18v6c0 3.31152 2.68848 6 6 6z\" />\n    <glyph glyph-name=\"snowflake\" unicode=\"&#xf2dc;\" horiz-adv-x=\"448\" \nd=\"M440.3 102.8c7.40039 -4.2002 9.90039 -13.7002 5.60059 -21l-15.5 -26.7998c-4.30078 -7.40039 -13.7002 -10 -21.1006 -5.7002l-33.7998 19.5l7 -26c2.2002 -8.2002 -2.7002 -16.7002 -10.9004 -18.8994l-14.8994 -4\nc-8.2002 -2.2002 -16.7002 2.69922 -18.9004 10.8994l-19 70.7998l-62.7998 36.2002v-77.5l53.4004 -53.7002c6.19922 -6.19922 6.19922 -16.3994 0 -22.5996l-11.3008 -11.2998c-6.19922 -6.2002 -16.3994 -6.2002 -22.5996 0l-19.7002 19.7002v-40.4004\nc0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v40.2998l-19.7002 -19.7002c-6.19922 -6.19922 -16.3994 -6.19922 -22.5996 0l-11.2998 11.3008c-6.2998 6.19922 -6.2998 16.3994 0 22.5996l53.7002 53.7002v77.5l-62.8008 -36.2002l-19 -70.7998\nc-2.19922 -8.2002 -10.6992 -13.1006 -18.8994 -10.9004l-14.9004 4c-8.2002 2.2002 -13.0996 10.7002 -10.8994 18.9004l7 26l-33.8008 -19.5c-7.39941 -4.2002 -16.7998 -1.7002 -21.0996 5.7002l-15.5 26.7998c-4.2002 7.39941 -1.7002 16.7998 5.7002 21.0996\nl33.7998 19.6006l-26 7c-8.2002 2.19922 -13.0996 10.6992 -10.9004 18.8994l4 14.9004c2.2002 8.2002 10.7002 13.0996 18.9004 10.8994l70.7998 -19l63.7998 36.9004l-63.7998 36.9004l-70.7998 -19c-8.2002 -2.2002 -16.7002 2.69922 -18.9004 10.8994l-4 14.9004\nc-2.19922 8.2998 2.7002 16.7998 11 19l26 7l-33.7998 19.5c-7.39941 4.2998 -10 13.7002 -5.7002 21.0996l15.5 26.7002c4.30078 7.40039 13.7002 10 21.1006 5.7002l33.7998 -19.5l-7 26c-2.2002 8.2002 2.7002 16.7002 10.9004 18.8994l14.8994 4\nc8.2002 2.2002 16.7002 -2.69922 18.9004 -10.8994l19 -70.7998l62.7998 -36.2002v77.5l-53.7002 53.7002c-6.2998 6.19922 -6.2998 16.3994 0 22.5996l11.4004 11.2998c6.2002 6.2002 16.3994 6.2002 22.5996 0l19.7002 -19.7002v40.4004c0 8.7998 7.2002 16 16 16h32\nc8.7998 0 16 -7.2002 16 -16v-40.4004l19.7998 19.7002c6.2002 6.2002 16.4004 6.2002 22.6006 0l11.2998 -11.2998c6.2002 -6.2002 6.2002 -16.4004 0 -22.5996l-53.7002 -53.7002v-77.5l62.7998 36.2002l19 70.7998c2.2002 8.2002 10.7002 13.0996 18.9004 10.8994\nl14.8994 -4c8.2002 -2.19922 13.1006 -10.6992 10.9004 -18.8994l-7 -26l33.7998 19.5c7.40039 4.2002 16.7998 1.7002 21.1006 -5.7002l15.5 -26.7998c4.19922 -7.40039 1.69922 -16.7998 -5.7002 -21.1006l-33.7998 -19.5l26 -7\nc8.19922 -2.19922 13.0996 -10.6992 10.8994 -18.8994l-4 -14.9004c-2.2002 -8.2002 -10.7002 -13.0996 -18.8994 -10.8994l-70.8008 19l-63.7998 -36.9004l63.9004 -37l70.7998 19c8.2002 2.2002 16.7002 -2.7002 18.9004 -10.9004l4 -14.8994\nc2.19922 -8.2002 -2.7002 -16.7002 -10.9004 -18.9004l-26 -7z\" />\n    <glyph glyph-name=\"utensil-spoon\" unicode=\"&#xf2e5;\" \nd=\"M480.1 416.1c55.1006 -55 34.5 -164.899 -28.5 -227.8c-49.2998 -49.2998 -110 -55.0996 -160.399 -28.7998l-192.4 -214.4c-10.3994 -11.5996 -28.5 -12.0996 -39.5 -1.09961l-51.2998 51.2998c-11.0996 11 -10.5996 29 1 39.5l214.5 192.4\nc-26.2998 50.3994 -20.5 111.1 28.7998 160.399c62.9004 63 172.8 83.6006 227.8 28.5z\" />\n    <glyph glyph-name=\"utensils\" unicode=\"&#xf2e7;\" horiz-adv-x=\"416\" \nd=\"M207.9 432.8c0.799805 -4.7002 16.0996 -94.5 16.0996 -128.8c0 -52.2998 -27.7998 -89.5996 -68.9004 -104.6l12.9004 -238.101c0.700195 -13.7002 -10.2002 -25.2998 -24 -25.2998h-64c-13.7002 0 -24.7002 11.5 -24 25.2998l12.9004 238.101\nc-41.2002 15 -68.9004 52.3994 -68.9004 104.6c0 34.4004 15.2998 124.1 16.0996 128.8c3.2002 20.2998 45.3008 20.6006 47.9004 -1.09961v-141.2c1.2998 -3.40039 15.0996 -3.2002 16 0c1.40039 25.2998 7.90039 139.2 8 141.8c3.2998 20.7998 44.7002 20.7998 47.9004 0\nc0.199219 -2.7002 6.59961 -116.5 8 -141.8c0.899414 -3.2002 14.7998 -3.40039 16 0v141.2c2.59961 21.5996 44.7998 21.3994 48 1.09961zM327.1 147.1c-156.5 122.4 -17.5996 300.9 64.9004 300.9c13.2998 0 24 -10.7998 24 -24v-464c0 -13.2998 -10.7002 -24 -24 -24h-56\nc-14 0 -25.0996 12 -23.9004 26z\" />\n    <glyph glyph-name=\"undo-alt\" unicode=\"&#xf2ea;\" \nd=\"M255.545 440c136.809 0.245117 248.456 -111.193 248.455 -248.002c-0.000976562 -136.965 -111.034 -247.998 -248 -247.998c-63.9258 0 -122.202 24.1865 -166.178 63.9082c-5.11328 4.61816 -5.35449 12.5605 -0.482422 17.4326l39.6621 39.6621\nc4.46191 4.46094 11.625 4.71387 16.3682 0.552734c30.6328 -26.8779 69.5029 -41.5557 110.63 -41.5557c93.8164 0 167.236 75.9912 167.994 166.552c0.798828 95.4648 -77.0859 170.24 -169.484 169.442c-42.4287 -0.366211 -82.3662 -16.374 -113.229 -45.2734\nl41.75 -41.75c15.1191 -15.1201 4.41113 -40.9707 -16.9717 -40.9707h-134.059c-13.2549 0 -24 10.7451 -24 24v134.059c0 21.3828 25.8506 32.0908 40.9707 16.9707l35.7139 -35.7139c44.4229 42.4512 104.592 68.5654 170.86 68.6846z\" />\n    <glyph glyph-name=\"trash-alt\" unicode=\"&#xf2ed;\" horiz-adv-x=\"448\" \nd=\"M32 -16v336h384v-336c0 -26.4961 -21.5039 -48 -48 -48h-288c-26.4961 0 -48 21.5039 -48 48zM304 240v-224c0 -8.83203 7.16797 -16 16 -16s16 7.16797 16 16v224c0 8.83203 -7.16797 16 -16 16s-16 -7.16797 -16 -16zM208 240v-224c0 -8.83203 7.16797 -16 16 -16\ns16 7.16797 16 16v224c0 8.83203 -7.16797 16 -16 16s-16 -7.16797 -16 -16zM112 240v-224c0 -8.83203 7.16797 -16 16 -16s16 7.16797 16 16v224c0 8.83203 -7.16797 16 -16 16s-16 -7.16797 -16 -16zM432 416c8.83203 0 16 -7.16797 16 -16v-32\nc0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h120l9.40039 18.7002c3.58984 7.3418 13.1357 13.2998 21.3086 13.2998h0.0908203h114.3h0.0175781c8.20215 0 17.8262 -5.95801 21.4824 -13.2998l9.40039 -18.7002\nh120z\" />\n    <glyph glyph-name=\"sync-alt\" unicode=\"&#xf2f1;\" \nd=\"M370.72 314.72c-31.2617 29.2725 -71.832 45.3184 -114.872 45.2803c-77.458 -0.0683594 -144.328 -53.1777 -162.791 -126.85c-1.34375 -5.36328 -6.12207 -9.15039 -11.6504 -9.15039h-57.3037c-7.49707 0 -13.1934 6.80664 -11.8066 14.1758\nc21.6367 114.9 122.518 201.824 243.704 201.824c66.4482 0 126.791 -26.1357 171.315 -68.6846l35.7148 35.7148c15.1191 15.1191 40.9697 4.41113 40.9697 -16.9717v-134.059c0 -13.2549 -10.7451 -24 -24 -24h-134.059c-21.3828 0 -32.0908 25.8506 -16.9717 40.9707z\nM32 152h134.059c21.3828 0 32.0908 -25.8506 16.9717 -40.9707l-41.75 -41.75c31.2617 -29.2734 71.835 -45.3193 114.876 -45.2803c77.418 0.0703125 144.314 53.1436 162.787 126.849c1.34375 5.36328 6.12207 9.15039 11.6504 9.15039h57.3047\nc7.49805 0 13.1934 -6.80664 11.8066 -14.1758c-21.6377 -114.898 -122.519 -201.822 -243.705 -201.822c-66.4482 0 -126.791 26.1357 -171.315 68.6846l-35.7148 -35.7148c-15.1191 -15.1191 -40.9697 -4.41113 -40.9697 16.9717v134.059c0 13.2549 10.7451 24 24 24z\" />\n    <glyph glyph-name=\"stopwatch\" unicode=\"&#xf2f2;\" horiz-adv-x=\"448\" \nd=\"M432 144c0 -114.9 -93.0996 -208 -208 -208s-208 93.0996 -208 208c0 104 76.2998 190.2 176 205.5v34.5h-28c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h120c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-28v-34.5\nc37.5 -5.7998 71.7002 -21.5996 99.7002 -44.5996l27.5 27.5c4.7002 4.69922 12.2998 4.69922 17 0l28.2998 -28.3008c4.7002 -4.69922 4.7002 -12.2998 0 -17l-29.4004 -29.3994l-0.599609 -0.600586c21.2002 -32.3994 33.5 -71.2998 33.5 -113.1zM256 108v151.5\nc0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-151.5c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12z\" />\n    <glyph glyph-name=\"sign-out-alt\" unicode=\"&#xf2f5;\" \nd=\"M497 175l-168 -168c-15 -15 -41 -4.5 -41 17v96h-136c-13.2998 0 -24 10.7002 -24 24v96c0 13.2998 10.7002 24 24 24h136v96c0 21.4004 25.9004 32 41 17l168 -168c9.2998 -9.40039 9.2998 -24.5996 0 -34zM192 12c0 -6.59961 -5.40039 -12 -12 -12h-84\nc-53 0 -96 43 -96 96v192c0 53 43 96 96 96h84c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-84c-17.7002 0 -32 -14.2998 -32 -32v-192c0 -17.7002 14.2998 -32 32 -32h84c6.59961 0 12 -5.40039 12 -12v-40z\" />\n    <glyph glyph-name=\"sign-in-alt\" unicode=\"&#xf2f6;\" \nd=\"M416 0h-84c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h84c17.7002 0 32 14.2998 32 32v192c0 17.7002 -14.2998 32 -32 32h-84c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h84c53 0 96 -43 96 -96v-192c0 -53 -43 -96 -96 -96z\nM369 201c9.2998 -9.40039 9.2998 -24.5996 0 -34l-168 -168c-15 -15 -41 -4.5 -41 17v96h-136c-13.2998 0 -24 10.7002 -24 24v96c0 13.2998 10.7002 24 24 24h136v96c0 21.5 26 32 41 17z\" />\n    <glyph glyph-name=\"redo-alt\" unicode=\"&#xf2f9;\" \nd=\"M256.455 440c66.2686 -0.119141 126.437 -26.2334 170.859 -68.6846l35.7148 35.7148c15.1201 15.1191 40.9707 4.41113 40.9707 -16.9717v-134.059c0 -13.2549 -10.7451 -24 -24 -24h-134.059c-21.3828 0 -32.0908 25.8506 -16.9717 40.9707l41.75 41.75\nc-30.8633 28.8994 -70.8008 44.9072 -113.229 45.2734c-92.3984 0.797852 -170.283 -73.9775 -169.484 -169.442c0.757812 -90.5605 74.1777 -166.552 167.994 -166.552c41.127 0 79.9971 14.6777 110.629 41.5557c4.74316 4.16113 11.9062 3.9082 16.3682 -0.552734\nl39.6621 -39.6621c4.87207 -4.87207 4.63086 -12.8145 -0.482422 -17.4326c-43.9746 -39.7217 -102.251 -63.9082 -166.177 -63.9082c-136.966 0 -247.999 111.033 -248 247.998c-0.000976562 136.809 111.646 248.247 248.455 248.002z\" />\n    <glyph glyph-name=\"poo\" unicode=\"&#xf2fe;\" \nd=\"M451.4 78.9004c34.2998 -5.5 60.5996 -35 60.5996 -70.9004c0 -39.7998 -32.2002 -72 -72 -72h-368c-39.7998 0 -72 32.2002 -72 72c0 35.9004 26.2998 65.4004 60.5996 70.9004c-17.2998 13.0996 -28.5996 33.6992 -28.5996 57.0996c0 39.7998 32.2002 72 72 72h14.0996\nc-13.3994 11.7002 -22.0996 28.7998 -22.0996 48c0 35.2998 28.7002 64 64 64h16c44.2002 0 80 35.7998 80 80c0 17.4004 -5.7002 33.4004 -15.0996 46.5c4.89941 0.799805 9.89941 1.5 15.0996 1.5c53 0 96 -43 96 -96c0 -11.2998 -2.2998 -21.9004 -5.90039 -32h5.90039\nc35.2998 0 64 -28.7002 64 -64c0 -19.2002 -8.7002 -36.2998 -22.0996 -48h14.0996c39.7998 0 72 -32.2002 72 -72c0 -23.4004 -11.2998 -44 -28.5996 -57.0996zM192 192c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32s32 14.2998 32 32s-14.2998 32 -32 32z\nM351.5 53c2 5.2998 -2 11 -7.7998 11h-175.4c-5.7998 0 -9.7998 -5.7002 -7.7998 -11c10.5 -27.9004 58.5 -53 95.5 -53s85 25.0996 95.5 53zM320 128c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32z\" />\n    <glyph glyph-name=\"images\" unicode=\"&#xf302;\" horiz-adv-x=\"576\" \nd=\"M480 32v-16c0 -26.5098 -21.4902 -48 -48 -48h-384c-26.5098 0 -48 21.4902 -48 48v256c0 26.5098 21.4902 48 48 48h16v-208c0 -44.1123 35.8877 -80 80 -80h336zM576 112c0 -26.5098 -21.4902 -48 -48 -48h-384c-26.5098 0 -48 21.4902 -48 48v256\nc0 26.5098 21.4902 48 48 48h384c26.5098 0 48 -21.4902 48 -48v-256zM256 320c0 26.5098 -21.4902 48 -48 48s-48 -21.4902 -48 -48s21.4902 -48 48 -48s48 21.4902 48 48zM160 176v-48h352v112l-87.5137 87.5146c-4.6875 4.68652 -12.2852 4.68652 -16.9717 0\nl-135.515 -135.515l-39.5137 39.5146c-4.6875 4.68652 -12.2852 4.68652 -16.9717 0z\" />\n    <glyph glyph-name=\"pencil-alt\" unicode=\"&#xf303;\" \nd=\"M497.9 305.9l-46.1006 -46.1006c-4.7002 -4.7002 -12.2998 -4.7002 -17 0l-111 111c-4.7002 4.7002 -4.7002 12.2998 0 17l46.1006 46.1006c18.6992 18.6992 49.0996 18.6992 67.8994 0l60.1006 -60.1006c18.7998 -18.7002 18.7998 -49.0996 0 -67.8994zM284.2 348.2\nc4.7002 4.7002 12.2998 4.7002 17.0996 0l111 -111c4.7002 -4.7002 4.7002 -12.2998 0 -17l-262.6 -262.601l-121.5 -21.2998c-16.4004 -2.7998 -30.7002 11.4004 -27.7998 27.7998l21.1992 121.5zM124.1 108.1c5.5 -5.5 14.3008 -5.5 19.8008 0l154 154\nc5.5 5.5 5.5 14.3008 0 19.8008s-14.3008 5.5 -19.8008 0l-154 -154c-5.5 -5.5 -5.5 -14.3008 0 -19.8008zM88 24v48h-36.2998l-11.2998 -64.5l31.0996 -31.0996l64.5 11.2998v36.2998h-48z\" />\n    <glyph glyph-name=\"pen\" unicode=\"&#xf304;\" \nd=\"M290.74 354.76l128.02 -128.02l-277.99 -277.99l-114.14 -12.5996c-15.2803 -1.69043 -28.1895 11.2295 -26.4902 26.5098l12.7002 114.22zM497.94 373.82c18.75 -18.75 18.75 -49.1504 0 -67.9102l-56.5508 -56.5498l-128.02 128.02l56.5498 56.5498\nc18.75 18.75 49.1602 18.75 67.9102 0z\" />\n    <glyph glyph-name=\"pen-alt\" unicode=\"&#xf305;\" \nd=\"M497.94 373.83c18.75 -18.7598 18.75 -49.1602 0 -67.9102l-56.5508 -56.5498l-128.02 128.02l56.5498 56.5508c18.75 18.75 49.1602 18.75 67.9102 0zM251.14 394.36l84.8506 -84.8506l82.7695 -82.7695l-196.79 -196.79\nc-44.8223 -44.8203 -132.335 -86.8428 -195.34 -93.7998c-15.2803 -1.69043 -28.1895 11.2295 -26.4902 26.5098l0.0302734 0.229492c7.00195 62.9189 49.0156 150.315 93.7803 195.08l151.56 151.55l-22.6299 22.6201l-101.82 -101.819\nc-6.25 -6.25 -16.3799 -6.25 -22.6299 0l-22.6299 22.6299c-6.25 6.24023 -6.25 16.3701 0 22.6201l118.78 118.79c15.6201 15.6201 40.9395 15.6201 56.5596 0z\" />\n    <glyph glyph-name=\"long-arrow-alt-down\" unicode=\"&#xf309;\" horiz-adv-x=\"256\" \nd=\"M168 102.059h46.0576c21.3828 0 32.0908 -25.8516 16.9717 -40.9707l-86.0596 -86.0586c-9.37207 -9.37305 -24.5674 -9.37305 -33.9404 0l-86.0596 86.0586c-15.1191 15.1201 -4.41113 40.9707 16.9717 40.9707h46.0586v301.941c0 6.62695 5.37305 12 12 12h56\nc6.62695 0 12 -5.37305 12 -12v-301.941z\" />\n    <glyph glyph-name=\"long-arrow-alt-left\" unicode=\"&#xf30a;\" horiz-adv-x=\"448\" \nd=\"M134.059 152v-46.0576c0 -21.3828 -25.8516 -32.0908 -40.9707 -16.9717l-86.0586 86.0596c-9.37305 9.37207 -9.37305 24.5674 0 33.9404l86.0586 86.0596c15.1201 15.1191 40.9707 4.41113 40.9707 -16.9717v-46.0586h301.941c6.62695 0 12 -5.37305 12 -12v-56\nc0 -6.62695 -5.37305 -12 -12 -12h-301.941z\" />\n    <glyph glyph-name=\"long-arrow-alt-right\" unicode=\"&#xf30b;\" horiz-adv-x=\"448\" \nd=\"M313.941 232v46.0576c0 21.3828 25.8516 32.0908 40.9707 16.9717l86.0586 -86.0596c9.37305 -9.37207 9.37305 -24.5674 0 -33.9404l-86.0586 -86.0596c-15.1201 -15.1191 -40.9707 -4.41113 -40.9707 16.9717v46.0586h-301.941c-6.62695 0 -12 5.37305 -12 12v56\nc0 6.62695 5.37305 12 12 12h301.941z\" />\n    <glyph glyph-name=\"long-arrow-alt-up\" unicode=\"&#xf30c;\" horiz-adv-x=\"256\" \nd=\"M88 281.941h-46.0576c-21.3828 0 -32.0908 25.8516 -16.9717 40.9707l86.0596 86.0586c9.37207 9.37305 24.5674 9.37305 33.9404 0l86.0596 -86.0586c15.1191 -15.1201 4.41113 -40.9707 -16.9717 -40.9707h-46.0586v-301.941c0 -6.62695 -5.37305 -12 -12 -12h-56\nc-6.62695 0 -12 5.37305 -12 12v301.941z\" />\n    <glyph glyph-name=\"expand-arrows-alt\" unicode=\"&#xf31e;\" horiz-adv-x=\"448\" \nd=\"M448 104v-112v-0.0605469c0 -13.2148 -10.7246 -23.9395 -23.9395 -23.9395h-0.0605469h-112c-21.3896 0 -32.0898 25.9004 -17 41l36.2002 36.2002l-107.2 107.2l-107.23 -107.301l36.2305 -36.0996c15.0898 -15.0996 4.38965 -41 -17 -41h-112h-0.0605469\nc-13.2148 0 -23.9395 10.7246 -23.9395 23.9395v0.0605469v112c0 21.4004 25.8896 32.0996 41 17l36.1904 -36.2002l107.27 107.2l-107.28 107.3l-36.1797 -36.2998c-15.0996 -15.0996 -41 -4.40039 -41 17v112v0.0605469c0 13.2148 10.7246 23.9395 23.9395 23.9395\nh0.0605469h112c21.3896 0 32.0898 -25.9004 17 -41l-36.2002 -36.2002l107.2 -107.2l107.23 107.301l-36.2305 36.0996c-15.0898 15.0996 -4.38965 41 17 41h112h0.0605469c13.2148 0 23.9395 -10.7246 23.9395 -23.9395v-0.0605469v-112\nc0 -21.4004 -25.8896 -32.0996 -41 -17l-36.1904 36.2002l-107.27 -107.2l107.28 -107.3l36.1797 36.2002c15.0996 15.1992 41 4.5 41 -16.9004z\" />\n    <glyph glyph-name=\"clipboard\" unicode=\"&#xf328;\" horiz-adv-x=\"384\" \nd=\"M384 336v-352c0 -26.5098 -21.4902 -48 -48 -48h-288c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h80c0 35.29 28.71 64 64 64s64 -28.71 64 -64h80c26.5098 0 48 -21.4902 48 -48zM192 408c-13.2549 0 -24 -10.7451 -24 -24s10.7451 -24 24 -24\ns24 10.7451 24 24s-10.7451 24 -24 24zM288 294v20c0 3.31152 -2.68848 6 -6 6h-180c-3.31152 0 -6 -2.68848 -6 -6v-20c0 -3.31152 2.68848 -6 6 -6h180c3.31152 0 6 2.68848 6 6z\" />\n    <glyph glyph-name=\"arrows-alt-h\" unicode=\"&#xf337;\" \nd=\"M377.941 278.059c0 21.3828 25.8516 32.0908 40.9707 16.9707l86.0586 -86.0596c9.37305 -9.37305 9.37305 -24.5674 0 -33.9404l-86.0586 -86.0596c-15.1201 -15.1191 -40.9707 -4.41113 -40.9707 16.9717v46.0586h-243.883v-46.0576\nc0 -21.3828 -25.8516 -32.0908 -40.9707 -16.9717l-86.0586 86.0596c-9.37305 9.37305 -9.37305 24.5674 0 33.9404l86.0586 86.0596c15.1201 15.1191 40.9707 4.41113 40.9707 -16.9717v-46.0586h243.883v46.0586z\" />\n    <glyph glyph-name=\"arrows-alt-v\" unicode=\"&#xf338;\" horiz-adv-x=\"256\" \nd=\"M214.059 70.0586c21.3828 0 32.0908 -25.8516 16.9707 -40.9707l-86.0596 -86.0586c-9.37305 -9.37305 -24.5674 -9.37305 -33.9404 0l-86.0596 86.0586c-15.1191 15.1201 -4.41113 40.9707 16.9717 40.9707h46.0586v243.883h-46.0576\nc-21.3828 0 -32.0908 25.8516 -16.9717 40.9707l86.0596 86.0586c9.37305 9.37305 24.5674 9.37305 33.9404 0l86.0596 -86.0586c15.1191 -15.1201 4.41113 -40.9707 -16.9717 -40.9707h-46.0586v-243.883h46.0586z\" />\n    <glyph glyph-name=\"arrow-alt-circle-down\" unicode=\"&#xf358;\" \nd=\"M504 192c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248s248 -111 248 -248zM212 308v-116h-70.9004c-10.6992 0 -16.0996 -13 -8.5 -20.5l114.9 -114.3c4.7002 -4.7002 12.2002 -4.7002 16.9004 0l114.899 114.3c7.60059 7.59961 2.2002 20.5 -8.5 20.5\nh-70.7998v116c0 6.59961 -5.40039 12 -12 12h-64c-6.59961 0 -12 -5.40039 -12 -12z\" />\n    <glyph glyph-name=\"arrow-alt-circle-left\" unicode=\"&#xf359;\" \nd=\"M256 -56c-137 0 -248 111 -248 248s111 248 248 248s248 -111 248 -248s-111 -248 -248 -248zM372 236h-116v70.9004c0 10.6992 -13 16.0996 -20.5 8.5l-114.3 -114.9c-4.7002 -4.7002 -4.7002 -12.2002 0 -16.9004l114.3 -114.899\nc7.59961 -7.60059 20.5 -2.2002 20.5 8.5v70.7998h116c6.59961 0 12 5.40039 12 12v64c0 6.59961 -5.40039 12 -12 12z\" />\n    <glyph glyph-name=\"arrow-alt-circle-right\" unicode=\"&#xf35a;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM140 148h116v-70.9004c0 -10.6992 13 -16.0996 20.5 -8.5l114.3 114.9c4.7002 4.7002 4.7002 12.2002 0 16.9004l-114.3 115c-7.59961 7.59961 -20.5 2.19922 -20.5 -8.5\nv-70.9004h-116c-6.59961 0 -12 -5.40039 -12 -12v-64c0 -6.59961 5.40039 -12 12 -12z\" />\n    <glyph glyph-name=\"arrow-alt-circle-up\" unicode=\"&#xf35b;\" \nd=\"M8 192c0 137 111 248 248 248s248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248zM300 76v116h70.9004c10.6992 0 16.0996 13 8.5 20.5l-114.9 114.3c-4.7002 4.7002 -12.2002 4.7002 -16.9004 0l-115 -114.3c-7.59961 -7.59961 -2.19922 -20.5 8.5 -20.5\nh70.9004v-116c0 -6.59961 5.40039 -12 12 -12h64c6.59961 0 12 5.40039 12 12z\" />\n    <glyph glyph-name=\"external-link-alt\" unicode=\"&#xf35d;\" horiz-adv-x=\"576\" \nd=\"M576 424v-127.984c0 -21.4609 -25.96 -31.9795 -40.9707 -16.9707l-35.707 35.709l-243.523 -243.522c-9.37305 -9.37305 -24.5674 -9.37305 -33.9404 0l-22.627 22.627c-9.37305 9.37305 -9.37305 24.5684 0 33.9404l243.524 243.525l-35.7031 35.7051\nc-15.0703 15.0703 -4.39648 40.9707 16.9717 40.9707h127.976c13.2549 0 24 -10.7451 24 -24zM407.029 177.206c15.1191 15.1201 40.9707 4.41211 40.9707 -16.9697v-176.236c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352\nc0 26.5098 21.4902 48 48 48h296c21.3809 0 32.0889 -25.8506 16.9697 -40.9707l-16 -16c-3.87988 -3.87988 -11.4824 -7.0293 -16.9697 -7.0293h-264v-320h320v144.235v0.000976562c0 5.4873 3.14941 13.0898 7.0293 16.9697z\" />\n    <glyph glyph-name=\"external-link-square-alt\" unicode=\"&#xf360;\" horiz-adv-x=\"448\" \nd=\"M448 368v-352c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h352c26.5098 0 48 -21.4902 48 -48zM360 352h-111.971c-21.3135 0 -32.0801 -25.8613 -16.9717 -40.9707l31.9844 -31.9873l-195.527 -195.527\nc-4.68555 -4.68555 -4.68555 -12.2832 0 -16.9707l31.0293 -31.0293c4.6875 -4.68555 12.2852 -4.68555 16.9707 0l195.526 195.526l31.9883 -31.9912c15.0283 -15.0264 40.9707 -4.47461 40.9707 16.9717v111.979c0 13.2549 -10.7451 24 -24 24z\" />\n    <glyph glyph-name=\"exchange-alt\" unicode=\"&#xf362;\" \nd=\"M0 280v16c0 13.2549 10.7451 24 24 24h360v48c0 21.3672 25.8994 32.042 40.9707 16.9707l80 -80c9.37207 -9.37305 9.37207 -24.5684 0 -33.9404l-80 -80c-15.0146 -15.0127 -40.9707 -4.48633 -40.9707 16.9697v48h-360c-13.2549 0 -24 10.7451 -24 24zM488 128\nc13.2549 0 24 -10.7451 24 -24v-16c0 -13.2549 -10.7451 -24 -24 -24h-360v-48c0 -21.4365 -25.9434 -31.9971 -40.9707 -16.9697l-80 80c-9.37207 9.37207 -9.37207 24.5674 0 33.9404l80 80c15.1084 15.1094 40.9707 4.34375 40.9707 -16.9707v-48h360z\" />\n    <glyph glyph-name=\"cloud-download-alt\" unicode=\"&#xf381;\" horiz-adv-x=\"640\" \nd=\"M537.6 221.4c58.4004 -11.8008 102.4 -63.5 102.4 -125.4c0 -70.7002 -57.2998 -128 -128 -128h-368c-79.5 0 -144 64.5 -144 144c0 62.7998 40.2002 116.2 96.2002 135.9c-0.100586 2.69922 -0.200195 5.39941 -0.200195 8.09961c0 88.4004 71.5996 160 160 160\nc59.2998 0 111 -32.2002 138.7 -80.2002c15.2002 10.2002 33.5996 16.2002 53.2998 16.2002c53 0 96 -43 96 -96c0 -12.2002 -2.2998 -23.9004 -6.40039 -34.5996zM404.7 132.7c10.0996 10.0996 2.89941 27.2998 -11.2998 27.2998h-65.4004v112c0 8.7998 -7.2002 16 -16 16\nh-48c-8.7998 0 -16 -7.2002 -16 -16v-112h-65.4004c-14.1992 0 -21.3994 -17.2002 -11.2998 -27.2998l105.4 -105.4c6.2002 -6.2002 16.3994 -6.2002 22.5996 0z\" />\n    <glyph glyph-name=\"cloud-upload-alt\" unicode=\"&#xf382;\" horiz-adv-x=\"640\" \nd=\"M537.6 221.4c58.4004 -11.8008 102.4 -63.5 102.4 -125.4c0 -70.7002 -57.2998 -128 -128 -128h-368c-79.5 0 -144 64.5 -144 144c0 62.7998 40.2002 116.2 96.2002 135.9c-0.100586 2.69922 -0.200195 5.39941 -0.200195 8.09961c0 88.4004 71.5996 160 160 160\nc59.2998 0 111 -32.2002 138.7 -80.2002c15.2002 10.2002 33.5996 16.2002 53.2998 16.2002c53 0 96 -43 96 -96c0 -12.2002 -2.2998 -23.9004 -6.40039 -34.5996zM393.4 160c14.1992 0 21.3994 17.2002 11.2998 27.2998l-105.4 105.4\nc-6.2002 6.2002 -16.3994 6.2002 -22.5996 0l-105.4 -105.4c-10.0996 -10.0996 -3 -27.2998 11.2998 -27.2998h65.4004v-112c0 -8.7998 7.2002 -16 16 -16h48c8.7998 0 16 7.2002 16 16v112h65.4004z\" />\n    <glyph glyph-name=\"gem\" unicode=\"&#xf3a5;\" horiz-adv-x=\"576\" \nd=\"M485.5 448l90.5 -160h-101.1l-69.2002 160h79.7998zM357.5 448l69.2002 -160h-277.4l69.2002 160h139zM90.5 448h79.7998l-69.2002 -160h-101.1zM0 256h100.7l123 -251.7c1.5 -3.09961 -2.7002 -5.89941 -5 -3.2998zM148.2 256h279.6l-137 -318.2\nc-1 -2.39941 -4.5 -2.39941 -5.5 0zM352.3 4.2998l123 251.7h100.7l-218.7 -254.9c-2.2998 -2.69922 -6.5 0.100586 -5 3.2002z\" />\n    <glyph glyph-name=\"level-down-alt\" unicode=\"&#xf3be;\" horiz-adv-x=\"320\" \nd=\"M313.553 55.6689l-103.966 -112.003c-9.48535 -10.2139 -25.6758 -10.2295 -35.1738 0l-103.975 112.003c-14.2061 15.2998 -3.37695 40.3311 17.5869 40.3311h63.9746v272h-83.9756h-0.00195312c-2.74316 0 -6.54395 1.5752 -8.4834 3.51465l-56 56\nc-7.56055 7.55957 -2.20605 20.4854 8.48535 20.4854h195.976c13.2549 0 24 -10.7451 24 -24v-328h63.9658c20.8779 0 31.8516 -24.9688 17.5869 -40.3311z\" />\n    <glyph glyph-name=\"level-up-alt\" unicode=\"&#xf3bf;\" horiz-adv-x=\"320\" \nd=\"M313.553 328.331c14.2646 -15.3623 3.29102 -40.3311 -17.5869 -40.3311h-63.9658v-328c0 -13.2549 -10.7451 -24 -24 -24h-195.976c-10.6914 0 -16.0459 12.9258 -8.48535 20.4854l56 56c1.93945 1.93945 5.74023 3.51465 8.4834 3.51465h0.00195312h83.9756v272\nh-63.9746c-20.9639 0 -31.793 25.0312 -17.5869 40.3311l103.975 112.003c9.49805 10.2295 25.6885 10.2139 35.1738 0z\" />\n    <glyph glyph-name=\"lock-open\" unicode=\"&#xf3c1;\" horiz-adv-x=\"576\" \nd=\"M423.5 448c84 0.299805 152.5 -68 152.5 -152v-80c0 -13.2998 -10.7002 -24 -24 -24h-32c-13.2998 0 -24 10.7002 -24 24v80c0 39.9004 -32.7002 72.4004 -72.7002 72c-39.5996 -0.400391 -71.2998 -33.2998 -71.2998 -72.9004v-71.0996h48c26.5 0 48 -21.5 48 -48v-192\nc0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v192c0 26.5 21.5 48 48 48h224v70.5c0 84 67.5 153.2 151.5 153.5z\" />\n    <glyph glyph-name=\"map-marker-alt\" unicode=\"&#xf3c5;\" horiz-adv-x=\"384\" \nd=\"M172.268 -53.6699c-145.298 210.639 -172.268 232.257 -172.268 309.67c0 106.039 85.9609 192 192 192s192 -85.9609 192 -192c0 -77.4131 -26.9697 -99.0312 -172.268 -309.67c-9.53516 -13.7744 -29.9307 -13.7734 -39.4648 0zM192 176c44.1826 0 80 35.8174 80 80\ns-35.8174 80 -80 80s-80 -35.8174 -80 -80s35.8174 -80 80 -80z\" />\n    <glyph glyph-name=\"microphone-alt\" unicode=\"&#xf3c9;\" horiz-adv-x=\"352\" \nd=\"M336 256c8.83984 0 16 -7.16016 16 -16v-48c0 -88.9004 -66.29 -162.47 -152 -174.23v-33.7695h56c8.83984 0 16 -7.16016 16 -16v-16c0 -8.83984 -7.16016 -16 -16 -16h-160c-8.83984 0 -16 7.16016 -16 16v16c0 8.83984 7.16016 16 16 16h56v34.1504\nc-88.0303 12.1396 -152 92.0498 -152 181.689v40.1602c0 8.83984 7.16016 16 16 16h16c8.83984 0 16 -7.16016 16 -16v-42.2998c0 -66.8105 48.71 -126.59 115.21 -133.08c76.2998 -7.44043 140.79 52.5801 140.79 127.38v48c0 8.83984 7.16016 16 16 16h16zM176 96\nc-53.0195 0 -96 42.9805 -96 96v160c0 53.0195 42.9805 96 96 96s96 -42.9805 96 -96h-85.3301c-5.88965 0 -10.6699 -3.58008 -10.6699 -8v-16c0 -4.41992 4.78027 -8 10.6699 -8h85.3301v-32h-85.3301c-5.88965 0 -10.6699 -3.58008 -10.6699 -8v-16\nc0 -4.41992 4.78027 -8 10.6699 -8h85.3301v-32h-85.3301c-5.88965 0 -10.6699 -3.58008 -10.6699 -8v-16c0 -4.41992 4.78027 -8 10.6699 -8h85.3301c0 -53.0195 -42.9805 -96 -96 -96z\" />\n    <glyph glyph-name=\"mobile-alt\" unicode=\"&#xf3cd;\" horiz-adv-x=\"320\" \nd=\"M272 448c26.5 0 48 -21.5 48 -48v-416c0 -26.5 -21.5 -48 -48 -48h-224c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48h224zM160 -32c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM272 76v312\nc0 6.59961 -5.40039 12 -12 12h-200c-6.59961 0 -12 -5.40039 -12 -12v-312c0 -6.59961 5.40039 -12 12 -12h200c6.59961 0 12 5.40039 12 12z\" />\n    <glyph glyph-name=\"money-bill-alt\" unicode=\"&#xf3d1;\" horiz-adv-x=\"640\" \nd=\"M352 160c4.41992 0 8 -3.58008 8 -8v-16c0 -4.41992 -3.58008 -8 -8 -8h-64c-4.41992 0 -8 3.58008 -8 8v16c0 4.41992 3.58008 8 8 8h16v55.4404l-0.469727 -0.310547c-1.1123 -0.741211 -3.09961 -1.34375 -4.43652 -1.34375\nc-2.36328 0 -5.34375 1.59668 -6.65332 3.56348l-8.88086 13.3105c-0.741211 1.1123 -1.34375 3.09961 -1.34375 4.43555c0 2.36328 1.59668 5.34473 3.56445 6.6543l15.3301 10.2197c3.93945 2.62988 8.56934 4.03027 13.3096 4.03027h13.5801c4.41992 0 8 -3.58008 8 -8\nv-88h16zM608 384c17.6699 0 32 -14.3301 32 -32v-320c0 -17.6699 -14.3301 -32 -32 -32h-576c-17.6699 0 -32 14.3301 -32 32v320c0 17.6699 14.3301 32 32 32h576zM48 48h64c0 35.3496 -28.6504 64 -64 64v-64zM48 272c35.3496 0 64 28.6504 64 64h-64v-64zM320 80\nc53 0 96 50.1299 96 112c0 61.8604 -42.9805 112 -96 112s-96 -50.1396 -96 -112c0 -61.8496 42.9805 -112 96 -112zM592 48v64c-35.3496 0 -64 -28.6504 -64 -64h64zM592 272v64h-64c0 -35.3496 28.6504 -64 64 -64z\" />\n    <glyph glyph-name=\"phone-slash\" unicode=\"&#xf3dd;\" horiz-adv-x=\"640\" \nd=\"M268.2 66.5996c11.5 5.40039 22.7002 11.6006 33.5996 18.1006l80 -61.7998c-76 -54.5 -169 -86.9004 -269.7 -86.9004c-11.2998 0 -20.8994 7.7998 -23.3994 18.5996l-24 104c-2.60059 11.4004 3.2002 22.9004 13.8994 27.5l112 48\nc9.80078 4.2002 21.2002 1.40039 28 -6.89941zM633.8 -10.0996c7 -5.40039 8.2998 -15.5 2.90039 -22.3008l-19.6006 -25.2998c-5.5 -7 -15.5 -8.2002 -22.5 -2.7998l-588.399 454.7c-7 5.39941 -8.2002 15.3994 -2.7998 22.3994l19.5996 25.2002\nc5.5 7 15.5 8.2002 22.5 2.7998l353.9 -273.5c18.0996 22.5 33.7998 46.7002 46 72.8008l-60.6006 49.5996c-8.2998 6.7002 -11.0996 18.2002 -6.89941 28l48 112c4.59961 10.5996 16.1992 16.5 27.5 13.9004l104 -24c10.8994 -2.5 18.5996 -12.2002 18.5996 -23.4004\nc0 -108.9 -38.0996 -208.4 -100.9 -287.5z\" />\n    <glyph glyph-name=\"portrait\" unicode=\"&#xf3e0;\" horiz-adv-x=\"384\" \nd=\"M336 448c26.5 0 48 -21.5 48 -48v-416c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48h288zM192 320c-35.2998 0 -64 -28.7002 -64 -64s28.7002 -64 64 -64s64 28.7002 64 64s-28.7002 64 -64 64zM304 83.2002v19.2002\nc0 31.7998 -30.0996 57.5996 -67.2002 57.5996h-5c-12.2002 -5.09961 -25.7002 -8 -39.7998 -8s-27.5 2.90039 -39.7998 8h-5c-37.1006 0 -67.2002 -25.7998 -67.2002 -57.5996v-19.2002c0 -10.6006 10 -19.2002 22.4004 -19.2002h179.199\nc12.4004 0 22.4004 8.59961 22.4004 19.2002z\" />\n    <glyph glyph-name=\"reply\" unicode=\"&#xf3e5;\" \nd=\"M8.30859 258.164l176.005 151.985c15.4053 13.3047 39.6865 2.50391 39.6865 -18.1641v-80.0537c160.629 -1.83887 288 -34.0312 288 -186.258c0 -61.4404 -39.5811 -122.309 -83.333 -154.132c-13.6533 -9.93066 -33.1113 2.5332 -28.0771 18.6309\nc45.3438 145.012 -21.5068 183.51 -176.59 185.742v-87.915c0 -20.7002 -24.2998 -31.4531 -39.6865 -18.1641l-176.005 152c-11.0703 9.5625 -11.0859 26.7529 0 36.3281z\" />\n    <glyph glyph-name=\"shield-alt\" unicode=\"&#xf3ed;\" \nd=\"M466.5 364.3c17.7998 -7.39941 29.5 -24.8994 29.5 -44.2998c0 -221.3 -135.9 -344.6 -221.6 -380.3c-11.8008 -4.90039 -25.1006 -4.90039 -36.9004 0c-107 44.5996 -221.5 181.8 -221.5 380.3c0 19.4004 11.7002 36.9004 29.5996 44.2998l192 80\nc4.89062 2.0293 13.1562 3.6748 18.4502 3.6748c5.29492 0 13.5596 -1.64551 18.4502 -3.6748zM256.1 1.7002c93.7002 46.5996 172.5 156.3 175.801 307.7l-175.9 73.2998z\" />\n    <glyph glyph-name=\"tablet-alt\" unicode=\"&#xf3fa;\" horiz-adv-x=\"448\" \nd=\"M400 448c26.5 0 48 -21.5 48 -48v-416c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48h352zM224 -32c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM400 76v312\nc0 6.59961 -5.40039 12 -12 12h-328c-6.59961 0 -12 -5.40039 -12 -12v-312c0 -6.59961 5.40039 -12 12 -12h328c6.59961 0 12 5.40039 12 12z\" />\n    <glyph glyph-name=\"tachometer-alt\" unicode=\"&#xf3fd;\" horiz-adv-x=\"576\" \nd=\"M288 416c159.06 0 288 -128.94 288 -288c0 -52.7998 -14.25 -102.26 -39.0596 -144.8c-5.61035 -9.62012 -16.3008 -15.2002 -27.4404 -15.2002h-443c-11.1396 0 -21.8301 5.58008 -27.4404 15.2002c-24.8096 42.54 -39.0596 92 -39.0596 144.8\nc0 159.06 128.94 288 288 288zM288 352c-17.6699 0 -31.9902 -14.3301 -31.9902 -32s14.3301 -32 32 -32c6.66992 0 12.5098 2.51953 17.6406 6.00977l9.21973 27.6699c0.80957 2.44043 2.33984 4.41016 3.4502 6.66992c-3.74023 13.5205 -15.6104 23.6504 -30.3203 23.6504\nzM96 64c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM144 224c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM390.77 296.41c4.18066 12.5703 -2.59961 26.1699 -15.1699 30.3594\nc-12.6299 4.28027 -26.1895 -2.60938 -30.3594 -15.1699l-61.3398 -184.01c-33.4004 -2.16016 -59.9004 -29.6494 -59.9004 -63.5898c0 -11.7197 3.37988 -22.5498 8.87988 -32h110.24c5.5 9.4502 8.87988 20.2803 8.87988 32c0 19.46 -8.87012 36.6699 -22.5596 48.4102z\nM405.43 239.21c5.68066 -8.94043 15.1904 -15.21 26.5703 -15.2197c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32c-3.91992 0 -7.58008 -0.94043 -11.0498 -2.23047zM480 64c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z\n\" />\n    <glyph glyph-name=\"ticket-alt\" unicode=\"&#xf3ff;\" horiz-adv-x=\"576\" \nd=\"M128 288h320v-192h-320v192zM528 192c0 -26.5098 21.4902 -48 48 -48v-96c0 -26.5098 -21.4902 -48 -48 -48h-480c-26.5098 0 -48 21.4902 -48 48v96c26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48v96c0 26.5098 21.4902 48 48 48h480c26.5098 0 48 -21.4902 48 -48\nv-96c-26.5098 0 -48 -21.4902 -48 -48zM480 296c0 13.2549 -10.7451 24 -24 24h-336c-13.2549 0 -24 -10.7451 -24 -24v-208c0 -13.2549 10.7451 -24 24 -24h336c13.2549 0 24 10.7451 24 24v208z\" />\n    <glyph glyph-name=\"user-alt\" unicode=\"&#xf406;\" \nd=\"M256 160c-79.5 0 -144 64.5 -144 144s64.5 144 144 144s144 -64.5 144 -144s-64.5 -144 -144 -144zM384 128c70.7002 0 128 -57.2998 128 -128v-16c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v16c0 70.7002 57.2998 128 128 128h55.0996\nc22.3008 -10.2002 46.9004 -16 72.9004 -16s50.7002 5.7998 72.9004 16h55.0996z\" />\n    <glyph glyph-name=\"window-close\" unicode=\"&#xf410;\" \nd=\"M464 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h416zM380.4 125.5l-67.1006 66.5l67.1006 66.5c4.7998 4.7998 4.7998 12.5996 0 17.4004l-40.5 40.5\nc-4.80078 4.7998 -12.6006 4.7998 -17.4004 0l-66.5 -67.1006l-66.5 67.1006c-4.7998 4.7998 -12.5996 4.7998 -17.4004 0l-40.5 -40.5c-4.7998 -4.80078 -4.7998 -12.6006 0 -17.4004l67.1006 -66.5l-67.1006 -66.5c-4.7998 -4.7998 -4.7998 -12.5996 0 -17.4004\nl40.5 -40.5c4.80078 -4.7998 12.6006 -4.7998 17.4004 0l66.5 67.1006l66.5 -67.1006c4.7998 -4.7998 12.5996 -4.7998 17.4004 0l40.5 40.5c4.7998 4.80078 4.7998 12.6006 0 17.4004z\" />\n    <glyph glyph-name=\"baseball-ball\" unicode=\"&#xf433;\" horiz-adv-x=\"496\" \nd=\"M368.5 84.0996c12.9004 -26.6992 30.2998 -50.1992 51.4004 -70.5996c-44.6006 -43 -105.101 -69.5 -171.9 -69.5c-66.9004 0 -127.5 26.5996 -172 69.7002c21.2002 20.3994 38.5996 44 51.5 70.7002l-28.7998 13.8994c-11.1006 -23 -26.1006 -43.2998 -44.2998 -61\nc-34 42.4004 -54.4004 96.1006 -54.4004 154.7s20.4004 112.3 54.4004 154.8c17.7998 -17.2998 32.5 -37.0996 43.5 -59.3994l28.6992 14.0996c-12.7998 25.9004 -30 48.9004 -50.6992 68.7998c44.5996 43.1006 105.199 69.7002 172.1 69.7002\nc67 0 127.6 -26.7002 172.2 -69.7998c-20.7998 -20 -38 -43 -50.7998 -69l28.6992 -14.1006c11 22.4004 25.8008 42.2002 43.6006 59.5c33.7998 -42.3994 54.2002 -96.0996 54.2002 -154.6c0 -58.5996 -20.5 -112.4 -54.5 -154.9c-18.1006 17.7002 -33 38 -44.1006 60.9004z\nM140.2 116.1c17.2998 53.9004 14.2998 108.2 -0.700195 153.801l-30.4004 -10c13.3008 -40.2002 15.5 -87.6006 0.600586 -134zM356.5 269.5c-15 -45.5 -18 -99.7998 -0.700195 -153.8l30.5 9.7998c-14.8994 46.5 -12.5996 93.9004 0.600586 134z\" />\n    <glyph glyph-name=\"basketball-ball\" unicode=\"&#xf434;\" horiz-adv-x=\"496\" \nd=\"M212.3 437.7c-1.5 -50 -17 -95.4004 -44.7998 -131.2l-77.4004 77.4004c36 29.6992 78.4004 47.5 122.2 53.7998zM248 226l-46.2998 46.2998c37.2002 45.4004 57.5 103.8 58.7002 167.7c51.8994 -2.59961 103.1 -21.0996 145.5 -56.0996zM56.0996 349.9l77.4004 -77.4004\nc-35.7002 -27.7998 -81.2002 -43.2998 -131.2 -44.7998c6.2998 43.7998 24.1006 86.2002 53.7998 122.2zM328.3 145.7l-46.2998 46.2998l157.9 157.9c35 -42.4004 53.5 -93.6006 56.0996 -145.5c-64 -1.30078 -122.4 -21.6006 -167.7 -58.7002zM248 158l46.2998 -46.2998\nc-37.0996 -45.2998 -57.3994 -103.7 -58.7002 -167.7c-51.8994 2.59961 -103.1 21.2002 -145.5 56.0996zM439.9 34.0996l-77.4004 77.4004c35.7002 27.7002 81.0996 43.2002 131.2 44.7998c-6.2998 -43.7998 -24.1006 -86.2002 -53.7998 -122.2zM167.7 238.3\nl46.2998 -46.2998l-157.9 -157.9c-35 42.4004 -53.5 93.6006 -56.0996 145.5c63.9004 1.10059 122.3 21.5 167.7 58.7002zM283.7 -53.7002c1.59961 50 17.0996 95.5 44.7998 131.2l77.4004 -77.4004c-36 -29.6992 -78.4004 -47.5 -122.2 -53.7998z\" />\n    <glyph glyph-name=\"bowling-ball\" unicode=\"&#xf436;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM120 256c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM184 352c0 -17.7002 14.2998 -32 32 -32s32 14.2998 32 32\ns-14.2998 32 -32 32s-32 -14.2998 -32 -32zM232 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32z\" />\n    <glyph glyph-name=\"chess\" unicode=\"&#xf439;\" \nd=\"M74 240l-33.9102 90.3799c-0.5625 1.5 -1.01953 4.01758 -1.01953 5.62012c0 8.83203 7.16797 16 16 16h0.0195312h56.9102v32h-24c-4.41602 0 -8 3.58398 -8 8v16c0 4.41602 3.58398 8 8 8h24v24c0 4.41602 3.58398 8 8 8h16c4.41602 0 8 -3.58398 8 -8v-24h24\nc4.41602 0 8 -3.58398 8 -8v-16c0 -4.41602 -3.58398 -8 -8 -8h-24v-32h56.8896h0.0195312c8.83203 0 16 -7.16797 16 -16c0 -1.60254 -0.456055 -4.12012 -1.01953 -5.62012l-33.8896 -90.3799h10c8.83203 0 16 -7.16797 16 -16v-16c0 -8.83203 -7.16797 -16 -16 -16\nh-15.9404c0.116211 -35.8613 7.25684 -93.2051 15.9404 -128h-128c8.68359 34.7949 15.8242 92.1387 15.9404 128h-15.9404c-8.83203 0 -16 7.16797 -16 16v16c0 8.83203 7.16797 16 16 16h10zM247.16 -11.5801c4.87988 -2.44141 8.83984 -8.85156 8.83984 -14.3086\nv-0.000976562v-22.1104c0 -8.83203 -7.16797 -16 -16 -16h-224c-8.83203 0 -16 7.16797 -16 16v22.1104c0.000976562 5.45898 3.96582 11.8701 8.84961 14.3096l23.1504 11.5801v16c0 8.83203 7.16797 16 16 16h160c8.83203 0 16 -7.16797 16 -16v-16zM339.93 146.2\nl-24.5693 20.7998c-6.25684 5.28125 -11.3467 16.2119 -11.3604 24.4004v58.5996c0 3.31152 2.68848 6 6 6h26.3896c3.3125 0 6 -2.68848 6 -6v-26h24.71v26c0 3.31152 2.68848 6 6 6h53.8105c3.31152 0 6 -2.68848 6 -6v-26h24.71v26c0 3.31152 2.6875 6 6 6h26.3799\nc3.31152 0 6 -2.68848 6 -6v-58.54v-0.03125c0 -8.19238 -5.07617 -19.1367 -11.3301 -24.4287l-24.5996 -20.79l3.29004 -82.21h-126.721zM384 144v-32h32v32c0 8.83203 -7.16797 16 -16 16s-16 -7.16797 -16 -16zM503.16 -11.5801\nc4.87988 -2.44141 8.83984 -8.85156 8.83984 -14.3086v-0.000976562v-22.1104c0 -8.83203 -7.16797 -16 -16 -16h-192c-8.83203 0 -16 7.16797 -16 16v22.1104c0.000976562 5.45898 3.96582 11.8701 8.84961 14.3096l23.1504 11.5801v16c0 8.83203 7.16797 16 16 16h128\nc8.83203 0 16 -7.16797 16 -16v-16z\" />\n    <glyph glyph-name=\"chess-bishop\" unicode=\"&#xf43a;\" horiz-adv-x=\"320\" \nd=\"M8 160.12c0 73.3799 59.8096 181.08 112.6 225.37c-14 3.41992 -24.5996 15.5098 -24.5996 30.5098c0 17.6641 14.3359 32 32 32h64c17.6641 0 32 -14.3359 32 -32c0 -15.0498 -10.5996 -27.0898 -24.5996 -30.5098c24.3994 -20.4902 50.0693 -54.6807 70.8691 -92.5898\nl-107.89 -107.931c-1.29199 -1.29297 -2.34082 -3.82617 -2.34082 -5.6543c0 -1.8291 1.04883 -4.3623 2.34082 -5.65527l11.3105 -11.3105c1.29297 -1.29199 3.82617 -2.34082 5.6543 -2.34082s4.3623 1.04883 5.65527 2.34082l100.31 100.33\nc15.96 -35.46 26.6904 -71.9492 26.6904 -102.56c0 -51.6006 -22.1396 -73.8301 -56 -84.6006v-43.5195h-192v43.5195c-33.8604 10.7705 -56 32.9609 -56 84.6006zM304 0c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-288\nc-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h288z\" />\n    <glyph glyph-name=\"chess-board\" unicode=\"&#xf43c;\" \nd=\"M255.9 447.8v-64h-64v64h64zM0 383.83h64v-64h-64v64zM128 447.8v-64h-64v64h64zM192 191.9h64v-64h-64v64zM0 255.88h64v-64h-64v64zM383.85 447.8v-64h-64v64h64zM511.85 447.8v-64h-64v64h64zM128 191.9v-64h-64v64h64zM511.8 0h-64v64h64v-64zM511.8 128h-64v64h64\nv-64zM383.85 -64v64h64v-64h-64zM511.85 255.88h-64v64h64v-64zM128 -64v64h64v-64h-64zM0 -64v64h64v-64h-64zM255.9 -64v64h64v-64h-64zM0 127.93h64v-64h-64v64zM319.88 319.85h-64v64h64v-64zM255.88 191.85v64h64v-64h-64zM191.88 63.8496h64v-64h-64v64z\nM319.88 127.85v64h64v-64h-64zM319.88 255.8v64h64v-64h-64zM319.88 63.8701h64v-64h-64v64zM64 63.9502h64v-64h-64v64zM192 319.85h-64v64h64v-64zM383.92 63.9502v64h64v-64h-64zM255.92 255.88h-64v64h64v-64zM383.92 383.83h64v-64h-64v64zM255.92 127.93h64v-64h-64\nv64zM191.92 255.88l0.0800781 -64h-64v64h63.9199zM383.84 191.88v64h64v-64h-64zM128 319.85v-64h-64v64h64zM128 127.93h64v-64h-64v64z\" />\n    <glyph glyph-name=\"chess-king\" unicode=\"&#xf43f;\" horiz-adv-x=\"448\" \nd=\"M400 0c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-352c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h352zM416 288c17.6504 -0.0136719 31.9756 -14.3496 31.9756 -32c0 -2.69434 -0.652344 -6.96777 -1.45605 -9.54004\nl-73.0791 -214.46h-298.881l-73.0791 214.46c-0.803711 2.57227 -1.45605 6.8457 -1.45605 9.54004c0 17.6504 14.3252 31.9863 31.9756 32h160v48h-40c-4.41602 0 -8 3.58398 -8 8v48c0 4.41602 3.58398 8 8 8h40v40c0 4.41602 3.58398 8 8 8h48c4.41602 0 8 -3.58398 8 -8\nv-40h40c4.41602 0 8 -3.58398 8 -8v-48c0 -4.41602 -3.58398 -8 -8 -8h-40v-48h160z\" />\n    <glyph glyph-name=\"chess-knight\" unicode=\"&#xf441;\" horiz-adv-x=\"384\" \nd=\"M19 175.53c-10.4883 4.66211 -19 17.7627 -19 29.2402v0.0195312v137.21v0.0585938c0 5.47461 3.13574 13.0635 7 16.9414l9 9l-14.21 28.4199c-0.988281 1.97266 -1.79004 5.36328 -1.79004 7.56934v0.0107422c0 6.62402 5.37598 12 12 12h147.94\nc106 0 191.92 -86 191.92 -192v-192h-319.86v14.5195v0.0224609c0 27.2783 19.7969 59.3271 44.1904 71.5381l57.2197 28.6504c14.6445 7.32324 26.5303 26.5566 26.5303 42.9297v0.00976562v50.3301l-22.1201 -11.0801\nc-5.45117 -2.72559 -11.0732 -9.7373 -12.5508 -15.6504l-9.21973 -30.6494c-2.4502 -8.15332 -10.8545 -17.3379 -18.7598 -20.5l-12.7803 -5.12012c-3.1582 -1.2627 -8.48145 -2.28809 -11.8828 -2.28809c-3.74902 0 -9.57129 1.23535 -12.9971 2.75781zM52 320\nc-11.04 0 -20 -8.95996 -20 -20s8.95996 -20 20 -20s20 8.95996 20 20s-8.95996 20 -20 20zM368 0c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-352c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h352z\" />\n    <glyph glyph-name=\"chess-pawn\" unicode=\"&#xf443;\" horiz-adv-x=\"320\" \nd=\"M105.1 224c-29.3896 18.3799 -49.0996 50.7803 -49.0996 88c0 57.4082 46.5918 104 104 104s104 -46.5918 104 -104c0 -37.2197 -19.71 -69.6201 -49.0996 -88h25.0996c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-16v-5.49023\nc0 -44 4.11035 -86.5996 24 -122.51h-176c19.8604 35.9102 24 78.5098 24 122.51v5.49023h-16c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h25.0996zM304 0c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-288\nc-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h288z\" />\n    <glyph glyph-name=\"chess-queen\" unicode=\"&#xf445;\" \nd=\"M256 336c-30.9121 0 -56 25.0879 -56 56s25.0879 56 56 56s56 -25.0879 56 -56s-25.0879 -56 -56 -56zM432 0c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-352c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h352zM504.87 263.84\nc3.93457 -2.62109 7.12891 -8.58691 7.12891 -13.3154c0 -2.08496 -0.756836 -5.29004 -1.68945 -7.1543l-102.55 -211.37h-303.52l-102.55 211.33c-0.932617 1.86426 -1.68945 5.06934 -1.68945 7.1543c0 4.72852 3.19434 10.6943 7.12891 13.3154l28.5703 16\nc7.35938 4.91016 16.8096 2.5498 22.0898 -4.54004c7.86035 -10.6357 24.9736 -19.2676 38.1992 -19.2676c0.922852 0 2.41992 0.0527344 3.34082 0.118164c25.6699 1.73926 44.6699 24.7998 44.6699 50.4893c0 7.39746 6.00293 13.4004 13.4004 13.4004v0h38.7695\nc6.04004 0 11.6104 -3.99023 12.8604 -9.91016c4.42969 -21.0361 25.4717 -38.1094 46.9697 -38.1094s42.54 17.0732 46.9697 38.1094c1.25 5.91016 6.86035 9.91016 12.8604 9.91016h38.7695c7.39746 0 13.4004 -6.00293 13.4004 -13.4004\nc0 -23.5293 15.7002 -45.46 38.8398 -49.75c2.48926 -0.484375 6.56738 -0.878906 9.10352 -0.878906c13.166 0 30.2471 8.56152 38.127 19.1094c5.37988 7.13965 14.8496 9.67969 22.29 4.67969z\" />\n    <glyph glyph-name=\"chess-rook\" unicode=\"&#xf447;\" horiz-adv-x=\"384\" \nd=\"M368 416c8.83203 0 16 -7.16797 16 -16v-176l-64 -32c0 -47.7197 1.54004 -95 13.21 -160h-282.42c11.6699 65 13.21 111.67 13.21 160l-64 32v176c0 8.83203 7.16797 16 16 16h56.0996c8.83203 0 16 -7.16797 16 -16v-48h47.9004v48c0 8.83203 7.16797 16 16 16h80\nc8.83203 0 16 -7.16797 16 -16v-48h48v48c0 8.83203 7.16797 16 16 16h56zM224 128v64c0 17.6641 -14.3359 32 -32 32s-32 -14.3359 -32 -32v-64h64zM368 0c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-352c-8.83203 0 -16 7.16797 -16 16v32\nc0 8.83203 7.16797 16 16 16h352z\" />\n    <glyph glyph-name=\"dumbbell\" unicode=\"&#xf44b;\" horiz-adv-x=\"640\" \nd=\"M104 352c13.2998 0 24 -10.7002 24 -24v-272c0 -13.2998 -10.7002 -24 -24 -24h-48c-13.2998 0 -24 10.7002 -24 24v104h-24c-4.40039 0 -8 3.59961 -8 8v48c0 4.40039 3.59961 8 8 8h24v104c0 13.2998 10.7002 24 24 24h48zM632 224c4.40039 0 8 -3.59961 8 -8v-48\nc0 -4.40039 -3.59961 -8 -8 -8h-24v-104c0 -13.2998 -10.7002 -24 -24 -24h-48c-13.2998 0 -24 10.7002 -24 24v272c0 13.2998 10.7002 24 24 24h48c13.2998 0 24 -10.7002 24 -24v-104h24zM456 416c13.2998 0 24 -10.7002 24 -24v-400c0 -13.2998 -10.7002 -24 -24 -24h-48\nc-13.2998 0 -24 10.7002 -24 24v168h-128v-168c0 -13.2998 -10.7002 -24 -24 -24h-48c-13.2998 0 -24 10.7002 -24 24v400c0 13.2998 10.7002 24 24 24h48c13.2998 0 24 -10.7002 24 -24v-168h128v168c0 13.2998 10.7002 24 24 24h48z\" />\n    <glyph glyph-name=\"football-ball\" unicode=\"&#xf44e;\" horiz-adv-x=\"496\" \nd=\"M481.5 387.7c6.2998 -23.9004 13.7002 -61 14.5 -104.5l-156.6 156.8c43.5996 -0.900391 80.8994 -8.5 104.8 -14.9004c18.2002 -4.89941 32.5 -19.1992 37.2998 -37.3994zM14.5 -3.7002c-6.2998 23.9004 -13.7002 61 -14.5 104.5l156.6 -156.8\nc-43.5996 0.900391 -80.8994 8.5 -104.8 14.9004c-18.2002 4.89941 -32.5 19.1992 -37.2998 37.3994zM4.2002 164.6c22.5996 152.7 138.899 252 271.399 271.4l216.301 -216.6c-22.7002 -152.7 -139 -252 -271.5 -271.4zM321.5 288.2l-28.2998 -28.5l-28.2998 28.2998\nc-3.10059 3.09961 -8.2002 3.09961 -11.3008 0l-11.2998 -11.2998c-3.09961 -3.10059 -3.09961 -8.2002 0 -11.2998l28.2998 -28.3008l-22.5996 -22.5996l-28.2998 28.2998c-3.10059 3.10059 -8.2002 3.10059 -11.2998 0l-11.3008 -11.2998\nc-3.09961 -3.09961 -3.09961 -8.2002 0 -11.2998l28.3008 -28.2998l-22.6006 -22.6006l-28.2998 28.2998c-3.09961 3.10059 -8.2002 3.10059 -11.2998 0l-11.2998 -11.2998c-3.10059 -3.09961 -3.10059 -8.2002 0 -11.2998l28.2998 -28.2002l-28.2998 -28.2998\nc-3.10059 -3.09961 -3.10059 -8.2002 0 -11.2998l11.2998 -11.2998c3.09961 -3.10059 8.2002 -3.10059 11.2998 0l28.2998 28.2998l28.2998 -28.2998c3.10059 -3.10059 8.2002 -3.10059 11.3008 0l11.2998 11.2998c3.09961 3.09961 3.09961 8.2002 0 11.2998\nl-28.2998 28.2998l22.5996 22.6006l28.2998 -28.3008c3.10059 -3.09961 8.2002 -3.09961 11.2998 0l11.3008 11.3008c3.09961 3.09961 3.09961 8.19922 0 11.2998l-28.3008 28.2998l22.6006 22.7002l28.2998 -28.2998c3.09961 -3.10059 8.2002 -3.10059 11.2998 0\nl11.2998 11.2998c3.10059 3.09961 3.10059 8.2002 0 11.2998l-28.2998 28.2998l28.2998 28.2998c3.10059 3.10059 3.10059 8.2002 0 11.3008l-11.2998 11.2998c-3.09961 3.09961 -8.2002 3.09961 -11.2998 0z\" />\n    <glyph glyph-name=\"golf-ball\" unicode=\"&#xf450;\" horiz-adv-x=\"416\" \nd=\"M96 32h224c0 -17.7002 -14.2998 -32 -32 -32h-16c-17.7002 0 -32 -14.2998 -32 -32v-20c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v20c0 17.7002 -14.2998 32 -32 32h-16c-17.7002 0 -32 14.2998 -32 32zM416 240\nc0 -74.2002 -39 -139.2 -97.5 -176h-221c-58.5 36.7998 -97.5 101.8 -97.5 176c0 114.9 93.0996 208 208 208s208 -93.0996 208 -208zM235.9 196.1c18.2998 0 33.0996 14.8008 33.0996 33.1006c0 14.3994 -9.2998 26.2998 -22.0996 30.8994\nc9.59961 -26.7998 -15.6006 -51.2998 -41.9004 -41.8994c4.59961 -12.7998 16.5 -22.1006 30.9004 -22.1006zM285 149.2c0 14.3994 -9.2998 26.2998 -22.0996 30.8994c9.59961 -26.7998 -15.6006 -51.2998 -41.9004 -41.8994\nc4.59961 -12.7998 16.5 -22.1006 30.9004 -22.1006c18.2998 0 33.0996 14.9004 33.0996 33.1006zM349 213.2c0 14.3994 -9.2998 26.2998 -22.0996 30.8994c9.59961 -26.7998 -15.6006 -51.2998 -41.9004 -41.8994c4.59961 -12.7998 16.5 -22.1006 30.9004 -22.1006\nc18.2998 0 33.0996 14.9004 33.0996 33.1006z\" />\n    <glyph glyph-name=\"hockey-puck\" unicode=\"&#xf453;\" \nd=\"M0 288c0 53 114.6 96 256 96s256 -43 256 -96s-114.6 -96 -256 -96s-256 43 -256 96zM0 205.8c113.5 -82.3994 398.6 -82.2998 512 0v-109.8c0 -53 -114.6 -96 -256 -96s-256 43 -256 96v109.8z\" />\n    <glyph glyph-name=\"quidditch\" unicode=\"&#xf458;\" horiz-adv-x=\"640\" \nd=\"M256.5 231.2l86.7002 -109.2s-16.6006 -102.4 -76.6006 -150.1c-59.8994 -47.7002 -266.6 -34.1006 -266.6 -34.1006s3.7998 23.1006 11 55.4004l94.5996 112.2c4 4.69922 -0.899414 11.5996 -6.59961 9.5l-60.4004 -22.1006c14.4004 41.7002 32.7002 80 54.6006 97.5\nc59.8994 47.7998 163.3 40.9004 163.3 40.9004zM494.5 96.2002c44 0 79.7998 -35.7002 79.7998 -79.9004c0 -44.0996 -35.7002 -79.8994 -79.7998 -79.8994s-79.7998 35.7998 -79.7998 79.8994c0 44.1006 35.7998 79.9004 79.7998 79.9004zM636.5 417\nc5.5 -6.90039 4.40039 -17 -2.5 -22.5l-232.5 -177.9l34.0996 -42.8994c5.10059 -6.40039 1.7002 -15.9004 -6.2998 -17.6006l-58.7998 -12.3994l-86.7002 109.2l25.2998 54.5996c3.5 7.40039 13.5 8.59961 18.6006 2.2002l34.0996 -43l232.5 177.899\nc6.90039 5.40039 16.9004 4.30078 22.4004 -2.59961z\" />\n    <glyph glyph-name=\"square-full\" unicode=\"&#xf45c;\" \nd=\"M512 -64h-512v512h512v-512z\" />\n    <glyph glyph-name=\"table-tennis\" unicode=\"&#xf45d;\" \nd=\"M496.2 151.5c-64.1006 43.2002 -149.5 27.9004 -195.601 -34.2002l-211.5 211.5l56 56.1006c83.9004 84.0996 220 84.0996 303.9 0c63 -63.1006 78.7002 -155.601 47.2002 -233.4zM278.3 71.7998c-3.7002 -12.7002 -6.2998 -25.8994 -6.2002 -39.7002\nc0 -19.5 3.90039 -38.0996 11 -55.0996c-25.6992 2.7998 -50.5996 13.5996 -70.2998 33.2998l-35.7002 35.7002l-89.2998 -103.3c-7.5 -8.60059 -20.7002 -9.10059 -28.7002 -1l-53.3994 53.5c-8.10059 8.09961 -7.60059 21.2998 1 28.7998l103 89.4004l-34.5 34.5996\nc-39 39.0996 -44.6006 98.7998 -17.2998 144.1zM416 128c53 0 96 -43 96 -96s-43 -96 -96 -96s-96 43 -96 96s43 96 96 96z\" />\n    <glyph glyph-name=\"volleyball-ball\" unicode=\"&#xf45f;\" \nd=\"M231.39 204.52c-60.8945 -37.4102 -126.348 -123.516 -146.1 -192.199c-20.248 19.1953 -45.7393 55.5283 -56.9004 81.0996c22.8008 94.4004 89.5 174.4 180.301 216.8c11.8887 -27.9648 22.0586 -75.3184 22.6992 -105.7zM194.49 338.92\nc-84 -39.5 -149 -108.4 -182.4 -191.5c-19.7998 109.3 34 212.4 125 262.2c19.0098 -16.9424 44.7246 -48.6162 57.4004 -70.7002zM382.09 173.82c-30.1689 3.6709 -76.2686 18.5352 -102.899 33.1797c-1.9541 71.4844 -43.8428 171.263 -93.5 222.72\nc47.2998 14 84.1992 10.2002 98.8994 8.5c70.2002 -66.8994 106.101 -164.6 97.5 -264.399zM257.39 164.32c49.7002 -26.8008 104 -40.8008 158.601 -40.9004c22.6787 0.140625 58.9219 4.7998 80.8994 10.4004c-6.55762 -27.2012 -25.4639 -67.4766 -42.1992 -89.9004\nc-93 -27.2998 -195.5 -9.5 -277.5 47.7998c18.2803 24.2959 54.21 56.8213 80.1992 72.6006zM159.09 64.6201c53.6006 -37.2998 144 -78.2002 256.9 -62.1006c-38.1611 -32.3467 -109.732 -58.5986 -159.758 -58.5986c-38.5156 0 -96.416 16.3516 -129.242 36.499\nc6.39941 29.7998 16.8994 58.2002 32.0996 84.2002zM339.39 425.22c95.9004 -34.2998 164.601 -125.6 164.601 -233.399c0 -2 -0.299805 -4 -0.299805 -6c-23.9658 -7.83887 -63.8799 -14.2012 -89.0947 -14.2012c-0.166992 0 -0.438477 0.000976562 -0.605469 0.000976562\nc7.89941 92.3994 -19.2998 183.2 -74.6006 253.6z\" />\n    <glyph glyph-name=\"allergies\" unicode=\"&#xf461;\" horiz-adv-x=\"448\" \nd=\"M416 336c17.5996 0 32 -14.4004 32 -32v-176.1c-0.200195 -14 -1.90039 -28.6006 -5.09961 -42.3008l-26.5 -112.699c-5.10059 -21.7002 -24.4004 -37 -46.7002 -37h-197.601c-15.2998 0 -29.7998 7.39941 -38.7998 19.7998l-125.6 172.7\nc-13 17.8994 -9.10059 42.8994 8.7998 55.8994s42.9004 9.10059 55.9004 -8.7998l23.5996 -32.5v241c0 17.5996 14.4004 32 32 32s32 -14.4004 32 -32v-152c0 -4.40039 3.59961 -8 8 -8h16c4.40039 0 8 3.59961 8 8v184c0 17.5996 14.4004 32 32 32s32 -14.4004 32 -32v-184\nc0 -4.40039 3.59961 -8 8 -8h16c4.40039 0 8 3.59961 8 8v152c0 17.5996 14.4004 32 32 32s32 -14.4004 32 -32v-152c0 -4.40039 3.59961 -8 8 -8h16c4.40039 0 8 3.59961 8 8v72c0 17.5996 14.4004 32 32 32zM176 32c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16\ns-16 -7.2002 -16 -16s7.2002 -16 16 -16zM176 128c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM240 0c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM240 96c8.7998 0 16 7.2002 16 16\ns-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM304 64c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM336 0c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM368 128\nc8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16z\" />\n    <glyph glyph-name=\"band-aid\" unicode=\"&#xf462;\" horiz-adv-x=\"640\" \nd=\"M0 288c0 35.2998 28.7002 64 64 64h96v-320h-96c-35.2998 0 -64 28.7002 -64 64v192zM576 352c35.2998 0 64 -28.7002 64 -64v-192c0 -35.2998 -28.7002 -64 -64 -64h-96v320h96zM192 32v320h256v-320h-256zM368 264c-13.2998 0 -24 -10.7002 -24 -24s10.7002 -24 24 -24\ns24 10.7002 24 24s-10.7002 24 -24 24zM368 168c-13.2998 0 -24 -10.7002 -24 -24s10.7002 -24 24 -24s24 10.7002 24 24s-10.7002 24 -24 24zM272 264c-13.2998 0 -24 -10.7002 -24 -24s10.7002 -24 24 -24s24 10.7002 24 24s-10.7002 24 -24 24zM272 168\nc-13.2998 0 -24 -10.7002 -24 -24s10.7002 -24 24 -24s24 10.7002 24 24s-10.7002 24 -24 24z\" />\n    <glyph glyph-name=\"box\" unicode=\"&#xf466;\" \nd=\"M509.5 263.4c0.799805 -2.40039 0.799805 -4.90039 1.2002 -7.40039h-238.7v192h141.4c20.6992 0 39 -13.2002 45.5 -32.7998zM240 448v-192h-238.7c0.400391 2.5 0.400391 5 1.2002 7.40039l50.5996 151.8c6.5 19.5996 24.8008 32.7998 45.5 32.7998h141.4zM0 224h512\nv-240c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v240z\" />\n    <glyph glyph-name=\"boxes\" unicode=\"&#xf468;\" horiz-adv-x=\"576\" \nd=\"M560 160c8.7998 0 16 -7.2002 16 -16v-192c0 -8.7998 -7.2002 -16 -16 -16h-224c-8.7998 0 -16 7.2002 -16 16v192c0 8.7998 7.2002 16 16 16h80v-96l32 21.2998l32 -21.2998v96h80zM176 224c-8.7998 0 -16 7.2002 -16 16v192c0 8.7998 7.2002 16 16 16h80v-96\nl32 21.2998l32 -21.2998v96h80c8.7998 0 16 -7.2002 16 -16v-192c0 -8.7998 -7.2002 -16 -16 -16h-224zM240 160c8.7998 0 16 -7.2002 16 -16v-192c0 -8.7998 -7.2002 -16 -16 -16h-224c-8.7998 0 -16 7.2002 -16 16v192c0 8.7998 7.2002 16 16 16h80v-96l32 21.2998\nl32 -21.2998v96h80z\" />\n    <glyph glyph-name=\"briefcase-medical\" unicode=\"&#xf469;\" \nd=\"M464 320c26.5 0 48 -21.5 48 -48v-288c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v288c0 26.5 21.5 48 48 48h80v48c0 26.5 21.5 48 48 48h160c26.5 0 48 -21.5 48 -48v-48h80zM192 352v-32h128v32h-128zM352 104v48c0 4.40039 -3.59961 8 -8 8h-56v56\nc0 4.40039 -3.59961 8 -8 8h-48c-4.40039 0 -8 -3.59961 -8 -8v-56h-56c-4.40039 0 -8 -3.59961 -8 -8v-48c0 -4.40039 3.59961 -8 8 -8h56v-56c0 -4.40039 3.59961 -8 8 -8h48c4.40039 0 8 3.59961 8 8v56h56c4.40039 0 8 3.59961 8 8z\" />\n    <glyph glyph-name=\"burn\" unicode=\"&#xf46a;\" horiz-adv-x=\"384\" \nd=\"M192 448c111.8 -100.9 192 -220.6 192 -300.5c0 -124.5 -79 -211.5 -192 -211.5s-192 87 -192 211.5c0 79.5996 79.7002 199.2 192 300.5zM192 0c56.5 0 96 39 96 94.7998c0 13.5 -4.59961 61.5 -96 161.2c-91.4004 -99.7002 -96 -147.7 -96 -161.2\nc0 -55.7998 39.5 -94.7998 96 -94.7998z\" />\n    <glyph glyph-name=\"capsules\" unicode=\"&#xf46b;\" horiz-adv-x=\"576\" \nd=\"M555.3 147.9c36.2002 -51.7002 23.7002 -123 -28 -159.2c-20 -14 -42.7998 -20.7002 -65.5 -20.7002c-36.0996 0 -71.5996 17 -93.7998 48.7998l-131.2 187.3c-5.5 7.90039 -9.5 16.4004 -12.7998 25v-149.1c0 -61.9004 -50.0996 -112 -112 -112s-112 50.0996 -112 112\nv224c0 61.9004 50.0996 112 112 112c60 0 108.5 -47.2002 111.4 -106.5c7.7998 21 21.7998 40 41.5 53.7998c20 14 42.8994 20.7002 65.5 20.7002c36 0 71.5 -17 93.7998 -48.7998zM160 192v112c0 26.5 -21.5 48 -48 48s-48 -21.5 -48 -48v-112h96zM354.8 147.1\nl82.5 57.7002l-65.5996 93.7002c-9.40039 13.5 -24.7998 21.5 -41.2998 21.5c-10.3008 0 -20.3008 -3.09961 -28.8008 -9.09961c-11 -7.7002 -18.3994 -19.3008 -20.6992 -32.5c-2.40039 -13.2002 0.599609 -26.6006 8.2998 -37.6006z\" />\n    <glyph glyph-name=\"clipboard-check\" unicode=\"&#xf46c;\" horiz-adv-x=\"384\" \nd=\"M336 384c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h80c0 35.2998 28.7002 64 64 64s64 -28.7002 64 -64h80zM192 408c-13.2998 0 -24 -10.7002 -24 -24s10.7002 -24 24 -24s24 10.7002 24 24\ns-10.7002 24 -24 24zM313.2 176.2c4.7002 4.7002 4.7998 12.2002 0.0996094 17l-28.2002 28.3994c-4.69922 4.7002 -12.2998 4.80078 -17 0.100586l-106 -105.2l-46 46.4004c-4.69922 4.69922 -12.2998 4.7998 -17 0.0996094l-28.3994 -28.2002\nc-4.7002 -4.7002 -4.7998 -12.2998 -0.100586 -17l82.6006 -83.2998c4.7002 -4.7002 12.2998 -4.7998 17 -0.0996094z\" />\n    <glyph glyph-name=\"clipboard-list\" unicode=\"&#xf46d;\" horiz-adv-x=\"384\" \nd=\"M336 384c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h80c0 35.2998 28.7002 64 64 64s64 -28.7002 64 -64h80zM96 24c13.2998 0 24 10.7002 24 24s-10.7002 24 -24 24s-24 -10.7002 -24 -24\ns10.7002 -24 24 -24zM96 120c13.2998 0 24 10.7002 24 24s-10.7002 24 -24 24s-24 -10.7002 -24 -24s10.7002 -24 24 -24zM96 216c13.2998 0 24 10.7002 24 24s-10.7002 24 -24 24s-24 -10.7002 -24 -24s10.7002 -24 24 -24zM192 408c-13.2998 0 -24 -10.7002 -24 -24\ns10.7002 -24 24 -24s24 10.7002 24 24s-10.7002 24 -24 24zM320 40v16c0 4.40039 -3.59961 8 -8 8h-144c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h144c4.40039 0 8 3.59961 8 8zM320 136v16c0 4.40039 -3.59961 8 -8 8h-144\nc-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h144c4.40039 0 8 3.59961 8 8zM320 232v16c0 4.40039 -3.59961 8 -8 8h-144c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h144c4.40039 0 8 3.59961 8 8z\" />\n    <glyph glyph-name=\"diagnoses\" unicode=\"&#xf470;\" horiz-adv-x=\"640\" \nd=\"M496 192c-8.7998 0 -16 7.2002 -16 16s7.2002 16 16 16s16 -7.2002 16 -16s-7.2002 -16 -16 -16zM320 272c-48.5 0 -88 39.5 -88 88s39.5 88 88 88s88 -39.5 88 -88s-39.5 -88 -88 -88zM59.7998 84l-17.7002 26.7002c-8.7998 13.2998 -7.59961 34.5996 10 45.0996\nc7.40039 4.40039 17.5 10 28.7002 16c31.6006 -27.2998 79 -4.2002 79.2002 36c47.0996 17.7002 103 32.2002 160 32.2002c45.0996 0 89.2998 -9.2002 129.2 -21.7998c-11.7002 -52.9004 59.5996 -81.2002 87.7002 -35.1006\nc21.3994 -10.3994 39.1992 -20.2998 51.0996 -27.3994c17.5996 -10.5 18.7998 -31.9004 10 -45.1006l-17.7998 -26.6992c-10.2002 -15.1006 -29.2998 -17.8008 -42.9004 -9.80078c-16.2002 9.60059 -56.2002 31.8008 -105.3 48.6006v-90.7002h-224v90.7998\nc-49.0996 -16.8994 -89.0996 -39 -105.3 -48.5996c-13.6006 -8 -32.7002 -5.5 -42.9004 9.7998zM368 104c-13.2998 0 -24 -10.7002 -24 -24s10.7002 -24 24 -24s24 10.7002 24 24s-10.7002 24 -24 24zM272 200c-13.2998 0 -24 -10.7002 -24 -24s10.7002 -24 24 -24\ns24 10.7002 24 24s-10.7002 24 -24 24zM112 192c-8.7998 0 -16 7.2002 -16 16s7.2002 16 16 16s16 -7.2002 16 -16s-7.2002 -16 -16 -16zM624 0c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-608c-8.7998 0 -16 7.2002 -16 16v32\nc0 8.7998 7.2002 16 16 16h608z\" />\n    <glyph glyph-name=\"dna\" unicode=\"&#xf471;\" horiz-adv-x=\"448\" \nd=\"M0.0996094 -46.0996c5.2002 42.8994 31.4004 153.899 159.9 238.1c-128.6 84.2002 -154.7 195.2 -159.9 238.1c-1.09961 9.5 6.40039 17.8008 16 17.8008l32.3008 0.0996094c8.09961 0.0996094 14.8994 -5.90039 16 -13.9004\nc0.699219 -5 1.7998 -11.0996 3.39941 -18.0996h312.4c1.59961 7 2.7002 13.2002 3.39941 18.0996c1.10059 8 7.90039 13.9004 16 13.9004l32.4004 -0.0996094c9.59961 0 17 -8.30078 15.9004 -17.8008c-5.80078 -47.8994 -37.4004 -181.199 -209.5 -266.699\nc-31.7002 -15.8008 -57.4004 -33.3008 -78.7002 -51.4004h127.6c-5.59961 4.7998 -10.7998 9.59961 -17 14.2002c21.4004 11.2002 40.9004 23 58.5 35.3994c93.2998 -78.6992 114.3 -169.8 118.9 -207.699c1.2002 -9.5 -6.2998 -17.8008 -15.9004 -17.8008\nl-32.2998 -0.0996094c-8.09961 -0.0996094 -14.9004 5.90039 -16 13.9004c-0.599609 4.89941 -1.90039 11.1992 -3.5 18.0996h-312.3c-1.60059 -7 -2.7002 -13.2002 -3.40039 -18.0996c-1.09961 -8 -7.89941 -13.9004 -16 -13.9004l-32.2998 0.0996094\nc-9.59961 0 -17 8.30078 -15.9004 17.8008zM224 228.4c25.0996 13.5996 46.4004 28.3994 64.2002 43.5996h-128.5c17.8994 -15.2002 39.2002 -29.9004 64.2998 -43.5996zM355.1 352h-262.1c5.7002 -10.4004 12.7002 -21.0996 21 -32h220.1\nc8.2002 10.9004 15.2002 21.5996 21 32zM92.9004 32h261.6c-5.7998 10.4004 -12.9004 21.0996 -21.2002 32h-219.399c-8.2002 -10.9004 -15.2002 -21.5996 -21 -32z\" />\n    <glyph glyph-name=\"dolly\" unicode=\"&#xf472;\" horiz-adv-x=\"576\" \nd=\"M294.2 170.3l-53 159.4c-2.7998 8.2998 1.7002 17.3994 10.0996 20.2002l61.6006 20.5l33.0996 -99.4004l60.7002 20.0996l-33.1006 99.4004l61.1006 20.4004c8.2998 2.7998 17.3994 -1.7002 20.2002 -10.1006l60.3994 -181.2\nc2.7998 -8.2998 -1.7002 -17.3994 -10.0996 -20.1992l-161.5 -53.8008c-14.7998 11.3008 -31.5 19.7002 -49.5 24.7002zM575.2 121.6c2.7998 -8.39941 -1.7998 -17.3994 -10.1006 -20.1992l-213.3 -71.2002c-1.09961 -57.7998 -53.2002 -103.3 -113.399 -92.6006\nc-39.4004 6.90039 -71.2002 39.8008 -77.3008 79.2002c-5.69922 36.9004 9.90039 70.1006 36 90.5l-92.1992 276.7h-88.9004c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h112c13.7998 0 26 -8.7998 30.4004 -21.9004l99.3994 -298.199\nc29.9004 -0.600586 56.2998 -15 73.5 -37l213.5 71.1992c8.2998 2.80078 17.4004 -1.69922 20.2002 -10.0996zM256 -16c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48z\" />\n    <glyph glyph-name=\"dolly-flatbed\" unicode=\"&#xf474;\" horiz-adv-x=\"640\" \nd=\"M208 128c-8.7998 0 -16 7.2002 -16 16v256c0 8.7998 7.2002 16 16 16h144v-128l48 32l48 -32v128h144c8.7998 0 16 -7.2002 16 -16v-256c0 -8.7998 -7.2002 -16 -16 -16h-384zM624 64c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-82.7998\nc1.7002 -5 2.89941 -10.4004 2.89941 -16c0 -26.5 -21.5 -48 -48 -48s-48 21.5 -48 48c0 5.59961 1.10059 11 2.90039 16h-197.9c1.7002 -5 2.90039 -10.4004 2.90039 -16c0 -26.5 -21.5 -48 -48 -48s-48 21.5 -48 48c0 5.59961 1.09961 11 2.90039 16h-82.9004\nc-8.7998 0 -16 7.2002 -16 16v368h-48c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h96c8.7998 0 16 -7.2002 16 -16v-368h496z\" />\n    <glyph glyph-name=\"file-medical\" unicode=\"&#xf477;\" horiz-adv-x=\"384\" \nd=\"M377 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7zM224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136z\nM288 152c0 4.40039 -3.59961 8 -8 8h-56v56c0 4.40039 -3.59961 8 -8 8h-48c-4.40039 0 -8 -3.59961 -8 -8v-56h-56c-4.40039 0 -8 -3.59961 -8 -8v-48c0 -4.40039 3.59961 -8 8 -8h56v-56c0 -4.40039 3.59961 -8 8 -8h48c4.40039 0 8 3.59961 8 8v56h56\nc4.40039 0 8 3.59961 8 8v48z\" />\n    <glyph glyph-name=\"file-medical-alt\" unicode=\"&#xf478;\" horiz-adv-x=\"448\" \nd=\"M288 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v168h70.0996l34.8008 -69.5c2.89941 -5.90039 11.3994 -5.90039 14.2998 0l56.7998 113.7l22.0996 -44.2002h89.9004c8.7998 0 16 7.2002 16 16\ns-7.2002 16 -16 16h-70.2002l-34.7002 69.5c-2.89941 5.90039 -11.3994 5.90039 -14.2998 0l-56.7998 -113.7l-19.9004 39.7998c-1.39941 2.7002 -4.19922 4.40039 -7.19922 4.40039h-140.9c-4.40039 0 -8 3.59961 -8 8v16c0 4.40039 3.59961 8 8 8h56v232\nc0 13.2998 10.7002 24 24 24h200v-136zM441 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7z\" />\n    <glyph glyph-name=\"first-aid\" unicode=\"&#xf479;\" horiz-adv-x=\"576\" \nd=\"M0 368c0 26.5 21.5 48 48 48h48v-448h-48c-26.5 0 -48 21.5 -48 48v352zM128 -32v448h320v-448h-320zM192 216v-48c0 -4.40039 3.59961 -8 8 -8h56v-56c0 -4.40039 3.59961 -8 8 -8h48c4.40039 0 8 3.59961 8 8v56h56c4.40039 0 8 3.59961 8 8v48\nc0 4.40039 -3.59961 8 -8 8h-56v56c0 4.40039 -3.59961 8 -8 8h-48c-4.40039 0 -8 -3.59961 -8 -8v-56h-56c-4.40039 0 -8 -3.59961 -8 -8zM528 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-48v448h48z\" />\n    <glyph glyph-name=\"hospital-alt\" unicode=\"&#xf47d;\" horiz-adv-x=\"576\" \nd=\"M544 352c17.7002 0 32 -14.2998 32 -32v-368c0 -8.7998 -7.2002 -16 -16 -16h-544c-8.7998 0 -16 7.2002 -16 16v368c0 17.7002 14.2998 32 32 32h128v64c0 17.7002 14.2998 32 32 32h192c17.7002 0 32 -14.2998 32 -32v-64h128zM160 12v40c0 6.59961 -5.40039 12 -12 12\nh-40c-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12zM160 140v40c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12zM320 12v40\nc0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12zM320 140v40c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h40\nc6.59961 0 12 5.40039 12 12zM336 310v20c0 3.2998 -2.7002 6 -6 6h-26v26c0 3.2998 -2.7002 6 -6 6h-20c-3.2998 0 -6 -2.7002 -6 -6v-26h-26c-3.2998 0 -6 -2.7002 -6 -6v-20c0 -3.2998 2.7002 -6 6 -6h26v-26c0 -3.2998 2.7002 -6 6 -6h20c3.2998 0 6 2.7002 6 6v26h26\nc3.2998 0 6 2.7002 6 6zM480 12v40c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12zM480 140v40c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-40\nc0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12z\" />\n    <glyph glyph-name=\"hospital-symbol\" unicode=\"&#xf47e;\" \nd=\"M256 448c141.4 0 256 -114.6 256 -256s-114.6 -256 -256 -256s-256 114.6 -256 256s114.6 256 256 256zM368 72v240c0 4.40039 -3.59961 8 -8 8h-48c-4.40039 0 -8 -3.59961 -8 -8v-88h-96v88c0 4.40039 -3.59961 8 -8 8h-48c-4.40039 0 -8 -3.59961 -8 -8v-240\nc0 -4.40039 3.59961 -8 8 -8h48c4.40039 0 8 3.59961 8 8v88h96v-88c0 -4.40039 3.59961 -8 8 -8h48c4.40039 0 8 3.59961 8 8z\" />\n    <glyph glyph-name=\"id-card-alt\" unicode=\"&#xf47f;\" horiz-adv-x=\"576\" \nd=\"M528 384c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h144v-96h192v96h144zM288 224c-35.2998 0 -64 -28.7002 -64 -64s28.7002 -64 64 -64s64 28.7002 64 64s-28.7002 64 -64 64zM381.3 0\nc10.4004 0 18.7998 10 15.6006 19.7998c-8.40039 25.7002 -32.5 44.2002 -60.9004 44.2002h-8.2002c-12.2002 -5.09961 -25.7002 -8 -39.7998 -8s-27.5 2.90039 -39.7998 8h-8.2002c-28.5 0 -52.5996 -18.5996 -60.9004 -44.2002\nc-3.19922 -9.7998 5.2002 -19.7998 15.6006 -19.7998h186.6zM352 416v-96h-128v96c0 17.7002 14.2998 32 32 32h64c17.7002 0 32 -14.2998 32 -32z\" />\n    <glyph glyph-name=\"notes-medical\" unicode=\"&#xf481;\" horiz-adv-x=\"384\" \nd=\"M336 384c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h80c0 35.2998 28.7002 64 64 64s64 -28.7002 64 -64h80zM192 408c-13.2998 0 -24 -10.7002 -24 -24s10.7002 -24 24 -24s24 10.7002 24 24\ns-10.7002 24 -24 24zM288 104v48c0 4.40039 -3.59961 8 -8 8h-56v56c0 4.40039 -3.59961 8 -8 8h-48c-4.40039 0 -8 -3.59961 -8 -8v-56h-56c-4.40039 0 -8 -3.59961 -8 -8v-48c0 -4.40039 3.59961 -8 8 -8h56v-56c0 -4.40039 3.59961 -8 8 -8h48c4.40039 0 8 3.59961 8 8\nv56h56c4.40039 0 8 3.59961 8 8zM288 296v16c0 4.40039 -3.59961 8 -8 8h-176c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h176c4.40039 0 8 3.59961 8 8z\" />\n    <glyph glyph-name=\"pallet\" unicode=\"&#xf482;\" horiz-adv-x=\"640\" \nd=\"M144 192c-8.7998 0 -16 7.2002 -16 16v224c0 8.7998 7.2002 16 16 16h112v-128l64 32l64 -32v128h112c8.7998 0 16 -7.2002 16 -16v-224c0 -8.7998 -7.2002 -16 -16 -16h-352zM624 64h-48v-64h48c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-608\nc-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h48v64h-48c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h608c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16zM288 0v64h-160v-64h160zM512 0v64h-160v-64h160z\" />\n    <glyph glyph-name=\"pills\" unicode=\"&#xf484;\" horiz-adv-x=\"576\" \nd=\"M112 416c61.9004 0 112 -50.0996 112 -112v-224c0 -61.9004 -50.0996 -112 -112 -112s-112 50.0996 -112 112v224c0 61.9004 50.0996 112 112 112zM160 192v112c0 26.5 -21.5 48 -48 48s-48 -21.5 -48 -48v-112h96zM299.7 221.7l210.8 -210.8\nc3.5 -3.5 3.2002 -9.40039 -0.799805 -12.3008c-62.5 -45.2998 -150.101 -40.3994 -206.4 15.9004s-61.2002 143.9 -15.8994 206.4c2.89941 3.89941 8.7998 4.2998 12.2998 0.799805zM529.5 240.7c56.4004 -56.2998 61.2002 -143.8 15.9004 -206.4\nc-2.90039 -3.89941 -8.80078 -4.2998 -12.3008 -0.799805l-210.8 210.8c-3.5 3.5 -3.2002 9.40039 0.799805 12.2998c62.5 45.3008 150.101 40.4004 206.4 -15.8994z\" />\n    <glyph glyph-name=\"prescription-bottle\" unicode=\"&#xf485;\" horiz-adv-x=\"384\" \nd=\"M32 256v64h320v-352c0 -17.5996 -14.4004 -32 -32 -32h-256c-17.5996 0 -32 14.4004 -32 32v64h120c4.40039 0 8 3.59961 8 8v16c0 4.40039 -3.59961 8 -8 8h-120v64h120c4.40039 0 8 3.59961 8 8v16c0 4.40039 -3.59961 8 -8 8h-120v64h120c4.40039 0 8 3.59961 8 8v16\nc0 4.40039 -3.59961 8 -8 8h-120zM360 448c13.2002 0 24 -10.7998 24 -24v-48c0 -13.2002 -10.7998 -24 -24 -24h-336c-13.2002 0 -24 10.7998 -24 24v48c0 13.2002 10.7998 24 24 24h336z\" />\n    <glyph glyph-name=\"prescription-bottle-alt\" unicode=\"&#xf486;\" horiz-adv-x=\"384\" \nd=\"M360 448c13.2002 0 24 -10.7998 24 -24v-48c0 -13.2002 -10.7998 -24 -24 -24h-336c-13.2002 0 -24 10.7998 -24 24v48c0 13.2002 10.7998 24 24 24h336zM32 -32v352h320v-352c0 -17.5996 -14.4004 -32 -32 -32h-256c-17.5996 0 -32 14.4004 -32 32zM96 152v-48\nc0 -4.40039 3.59961 -8 8 -8h56v-56c0 -4.40039 3.59961 -8 8 -8h48c4.40039 0 8 3.59961 8 8v56h56c4.40039 0 8 3.59961 8 8v48c0 4.40039 -3.59961 8 -8 8h-56v56c0 4.40039 -3.59961 8 -8 8h-48c-4.40039 0 -8 -3.59961 -8 -8v-56h-56c-4.40039 0 -8 -3.59961 -8 -8z\n\" />\n    <glyph glyph-name=\"procedures\" unicode=\"&#xf487;\" horiz-adv-x=\"640\" \nd=\"M528 224c61.9004 0 112 -50.0996 112 -112v-160c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v48h-512v-48c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v352c0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-240h192\nv144c0 8.7998 7.2002 16 16 16h256zM136 352c-4.40039 0 -8 3.59961 -8 8v16c0 4.40039 3.59961 8 8 8h140.9c3.09961 0 5.7998 -1.7002 7.19922 -4.40039l19.9004 -39.7998l49.7002 99.4004c5.89941 11.7998 22.7002 11.7998 28.5996 0l27.6006 -55.2002h102.1\nc8.7998 0 16 -7.2002 16 -16s-7.2002 -16 -16 -16h-121.9l-22.0996 44.2002l-49.7002 -99.4004c-5.89941 -11.7998 -22.7002 -11.7998 -28.5996 0l-27.6006 55.2002h-126.1zM160 96c-35.2998 0 -64 28.7002 -64 64s28.7002 64 64 64s64 -28.7002 64 -64\ns-28.7002 -64 -64 -64z\" />\n    <glyph glyph-name=\"shipping-fast\" unicode=\"&#xf48b;\" horiz-adv-x=\"640\" \nd=\"M624 96c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-48c0 -53 -43 -96 -96 -96s-96 43 -96 96h-128c0 -53 -43 -96 -96 -96s-96 43 -96 96v128h152c4.40039 0 8 3.59961 8 8v16c0 4.40039 -3.59961 8 -8 8h-208c-4.40039 0 -8 3.59961 -8 8v16\nc0 4.40039 3.59961 8 8 8h240c4.40039 0 8 3.59961 8 8v16c0 4.40039 -3.59961 8 -8 8h-208c-4.40039 0 -8 3.59961 -8 8v16c0 4.40039 3.59961 8 8 8h240c4.40039 0 8 3.59961 8 8v16c0 4.40039 -3.59961 8 -8 8h-272c-4.40039 0 -8 3.59961 -8 8v16\nc0 4.40039 3.59961 8 8 8h56v48c0 26.5 21.5 48 48 48h256c26.5 0 48 -21.5 48 -48v-48h44.0996c12.7002 0 24.9004 -5.09961 33.9004 -14.0996l99.9004 -99.9004c9 -9 14.0996 -21.2002 14.0996 -33.9004v-108.1h16zM160 -16c26.5 0 48 21.5 48 48s-21.5 48 -48 48\ns-48 -21.5 -48 -48s21.5 -48 48 -48zM480 -16c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48zM560 192v12.0996l-99.9004 99.9004h-44.0996v-112h144z\" />\n    <glyph glyph-name=\"smoking\" unicode=\"&#xf48d;\" horiz-adv-x=\"640\" \nd=\"M632 96c4.40039 0 8 -3.59961 8 -8v-144c0 -4.40039 -3.59961 -8 -8 -8h-48c-4.40039 0 -8 3.59961 -8 8v144c0 4.40039 3.59961 8 8 8h48zM553.3 360.9c54.2998 -36.4004 86.7002 -97.1006 86.7002 -162.601v-30.2998c0 -4.40039 -3.59961 -8 -8 -8h-48\nc-4.40039 0 -8 3.59961 -8 8v30.2998c0 50.2002 -25.2002 96.7002 -67.4004 124c-18.3994 12 -28.5996 33.4004 -28.5996 55.4004v62.2998c0 4.40039 3.59961 8 8 8h48c4.40039 0 8 -3.59961 8 -8v-62.2998c0 -6.7998 3.59961 -13 9.2998 -16.7998zM432 96\nc8.7998 0 16 -7.2002 16 -16v-128c0 -8.7998 -7.2002 -16 -16 -16h-384c-26.5 0 -48 21.5 -48 48v64c0 26.5 21.5 48 48 48h384zM400 -16v64h-176v-64h176zM487.7 306.4c35.2998 -24.7002 56.2998 -64.8008 56.2998 -108.101v-30.2998c0 -4.40039 -3.59961 -8 -8 -8h-48\nc-4.40039 0 -8 3.59961 -8 8v30.2998c0 27.4004 -13.2998 52.9004 -35.7002 68.6006c-35.7002 25.0996 -60.2998 63 -60.2998 106.699v66.4004c0 4.40039 3.59961 8 8 8h48c4.40039 0 8 -3.59961 8 -8v-62.2998c0 -29 15.7998 -54.7002 39.7002 -71.2998zM536 96\nc4.40039 0 8 -3.59961 8 -8v-144c0 -4.40039 -3.59961 -8 -8 -8h-48c-4.40039 0 -8 3.59961 -8 8v144c0 4.40039 3.59961 8 8 8h48z\" />\n    <glyph glyph-name=\"syringe\" unicode=\"&#xf48e;\" \nd=\"M201.5 273.2l64.9004 65l135.699 -135.7l-181.899 -181.9c-17.5 -17.5996 -41.5 -25.5996 -65.4004 -23l-63.5996 7.10059l-66.2998 -66.2998c-3.10059 -3.10059 -8.2002 -3.10059 -11.3008 0l-11.2998 11.2998c-3.09961 3.09961 -3.09961 8.2002 0 11.2998\nl66.4004 66.4004l-7.10059 63.5996c-2.59961 24.2998 5.7002 48.0996 23 65.4004l26.4004 26.3994l55.7998 -55.8994c3.10059 -3.10059 8.2002 -3.10059 11.2998 0l11.3008 11.2998c3.09961 3.09961 3.09961 8.2002 0 11.2998l-55.8008 55.7998l45.3008 45.2998\nl55.6992 -55.7998c3.10059 -3.09961 8.2002 -3.09961 11.3008 0l11.2998 11.2998c3.09961 3.10059 3.09961 8.2002 0 11.3008zM509.7 366.5c3.09961 -3.2002 3.09961 -8.2002 0 -11.4004l-11.2998 -11.2998c-3.10059 -3.09961 -8.2002 -3.09961 -11.3008 0l-28.2998 28.2998\nl-45.2998 -45.2998l73.5 -73.5c3.09961 -3.09961 3.09961 -8.2002 0 -11.2998l-33.9004 -34c-3.09961 -3.09961 -8.19922 -3.09961 -11.2998 0l-17 17l-135.7 135.9l-17 17c-3.09961 3.09961 -3.09961 8.19922 0 11.2998l33.9004 33.8994\nc3.09961 3.10059 8.2002 3.10059 11.2998 0l17 -17l56.6006 -56.5996l45.2998 45.2998l-28.2998 28.2998c-3.10059 3.10059 -3.10059 8.2002 0 11.3008l11.2998 11.2998c3.09961 3.09961 8.2002 3.09961 11.2998 0z\" />\n    <glyph glyph-name=\"tablets\" unicode=\"&#xf490;\" horiz-adv-x=\"640\" \nd=\"M160 256c81.0996 0 147.5 -58.5 160 -134.7c0.799805 -4.7998 -3.2998 -9.2998 -8.2998 -9.2998h-303.3c-5 0 -9.10059 4.5 -8.30078 9.2998c12.4004 76.2002 78.8008 134.7 159.9 134.7zM311.6 80c5 0 9.10059 -4.5 8.30078 -9.2998\nc-12.4004 -76.2002 -78.8008 -134.7 -159.9 -134.7s-147.5 58.5 -159.9 134.7c-0.799805 4.7998 3.30078 9.2998 8.30078 9.2998h303.199zM593.4 401.4c56.5 -56.5 61.3994 -144.2 15.8994 -206.9c-2.7998 -4 -8.7998 -4.2998 -12.2998 -0.799805l-211.3 211.399\nc-3.5 3.40039 -3.2002 9.40039 0.799805 12.3008c62.7002 45.3994 150.4 40.5 206.9 -16zM363 382.3l211.3 -211.3c3.5 -3.40039 3.2002 -9.40039 -0.799805 -12.2998c-62.7002 -45.5 -150.4 -40.6006 -206.9 15.8994c-56.3994 56.5 -61.2998 144.2 -15.8994 206.9\nc2.7998 4 8.7998 4.2998 12.2998 0.799805z\" />\n    <glyph glyph-name=\"thermometer\" unicode=\"&#xf491;\" \nd=\"M476.8 427.6c49.4004 -40.6992 42.1006 -107.3 7.2002 -142.199l-254.2 -253.301h-99.8994l-89 -89c-9.30078 -9.39941 -24.5 -9.39941 -33.9004 0c-9.40039 9.30078 -9.40039 24.5 0 33.9004l89 89v100.9l45.2998 45.6992l50.1006 -50.1992\nc3.09961 -3.10059 8.19922 -3.10059 11.2998 0l11.2998 11.2998c3.09961 3.09961 3.09961 8.2002 0 11.2998l-50.0996 50.2002l45.0996 45.3994l50.2998 -50.1992c3.10059 -3.10059 8.2002 -3.10059 11.2998 0l11.3008 11.2998c3.09961 3.09961 3.09961 8.2002 0 11.2998\nl-50.3008 50.4004l45.1006 45.3994l50.3994 -50.5c3.10059 -3.09961 8.2002 -3.09961 11.3008 0l11.2998 11.2998c3.09961 3.10059 3.09961 8.2002 0 11.3008l-50.5 50.5l45.7002 46c36.3994 36.5 94.3994 40.8994 131.899 10.1992z\" />\n    <glyph glyph-name=\"vial\" unicode=\"&#xf492;\" horiz-adv-x=\"480\" \nd=\"M477.7 261.9c3.09961 -3.10059 3.09961 -8.2002 0 -11.2002l-34 -33.9004c-3.10059 -3.09961 -8.2002 -3.09961 -11.2998 0l-11.2002 11.1006l-246.3 -245.7c-20.1006 -20.1006 -46.5 -30.1006 -72.9004 -30.1006c-28.9004 -0.0996094 -57.7998 11.9004 -78.4004 35.9004\nc-35.6992 41.5 -29.3994 104.8 9.40039 143.5l242.4 241.9l-11.2002 11.0996c-3.10059 3.09961 -3.10059 8.2002 0 11.2998l34 33.9004c3.09961 3.09961 8.2002 3.09961 11.2998 0zM318 192l69.5 69.4004l-78.5 78.2998l-148 -147.7h157z\" />\n    <glyph glyph-name=\"vials\" unicode=\"&#xf493;\" horiz-adv-x=\"640\" \nd=\"M72 384c-4.40039 0 -8 3.59961 -8 8v48c0 4.40039 3.59961 8 8 8h208c4.40039 0 8 -3.59961 8 -8v-48c0 -4.40039 -3.59961 -8 -8 -8h-24v-240c0 -44.0996 -35.9004 -80 -80 -80s-80 35.9004 -80 80v240h-24zM144 384v-96h64v96h-64zM624 0c8.7998 0 16 -7.2002 16 -16\nv-32c0 -8.7998 -7.2002 -16 -16 -16h-608c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h608zM360 384c-4.40039 0 -8 3.59961 -8 8v48c0 4.40039 3.59961 8 8 8h208c4.40039 0 8 -3.59961 8 -8v-48c0 -4.40039 -3.59961 -8 -8 -8h-24v-240\nc0 -44.0996 -35.9004 -80 -80 -80s-80 35.9004 -80 80v240h-24zM432 384v-96h64v96h-64z\" />\n    <glyph glyph-name=\"warehouse\" unicode=\"&#xf494;\" horiz-adv-x=\"640\" \nd=\"M504 96c4.40039 0 8 -3.59961 8 -8v-48c0 -4.40039 -3.59961 -8 -8 -8h-367.7c-4.39941 0 -8 3.59961 -8 8l0.100586 48c0 4.40039 3.59961 8 8 8h367.6zM504 0c4.40039 0 8 -3.59961 8 -8v-48c0 -4.40039 -3.59961 -8 -8 -8h-368c-4.40039 0 -8 3.59961 -8 8\nl0.0996094 48c0 4.40039 3.60059 8 8 8h367.9zM504 192c4.40039 0 8 -3.59961 8 -8v-48c0 -4.40039 -3.59961 -8 -8 -8h-367.5c-4.40039 0 -8 3.59961 -8 8l0.0996094 48c0 4.40039 3.60059 8 8 8h367.4zM610.5 331c17.7998 -7.5 29.5 -24.9004 29.5 -44.2998v-342.7\nc0 -4.40039 -3.59961 -8 -8 -8h-80c-4.40039 0 -8 3.59961 -8 8v248c0 17.5996 -14.5996 32 -32.5996 32h-382.801c-18 0 -32.5996 -14.4004 -32.5996 -32v-248c0 -4.40039 -3.59961 -8 -8 -8h-80c-4.40039 0 -8 3.59961 -8 8v342.7c0 19.3994 11.7002 36.7998 29.5 44.2998\nl272 113.3c4.89062 2.0293 13.1553 3.6748 18.4502 3.6748c5.29395 0 13.5596 -1.64551 18.4502 -3.6748z\" />\n    <glyph glyph-name=\"weight\" unicode=\"&#xf496;\" \nd=\"M448 384c35.29 0 64 -28.71 64 -64v-320c0 -35.29 -28.71 -64 -64 -64h-384c-35.29 0 -64 28.71 -64 64v320c0 35.29 28.71 64 64 64h25.9805c-16.4209 -28.2803 -25.9805 -61.0098 -25.9805 -96c0 -105.87 86.1299 -192 192 -192s192 86.1299 192 192\nc0 34.9902 -9.55957 67.7197 -25.9805 96h25.9805zM256 128c-88.3701 0 -160 71.6299 -160 160s71.6299 160 160 160s160 -71.6299 160 -160s-71.6299 -160 -160 -160zM255.7 279.94c-21.9404 -0.170898 -39.7002 -17.96 -39.7002 -39.9404c0 -22.0898 17.9102 -40 40 -40\ns40 17.9102 40 40c0 10.5498 -4.26953 20 -10.9502 27.1602l33.6699 78.5498c3.4707 8.11035 -0.290039 17.5205 -8.41016 21c-8.08984 3.50977 -17.5293 -0.240234 -21.0293 -8.41016z\" />\n    <glyph glyph-name=\"x-ray\" unicode=\"&#xf497;\" horiz-adv-x=\"640\" \nd=\"M240 64c8.7998 0 16 -7.2002 16 -16s-7.2002 -16 -16 -16s-16 7.2002 -16 16s7.2002 16 16 16zM400 32c-8.7998 0 -16 7.2002 -16 16s7.2002 16 16 16s16 -7.2002 16 -16s-7.2002 -16 -16 -16zM624 448c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16\nh-608c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h608zM624 0c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-608c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h48v352h512v-352h48zM480 200v16c0 4.40039 -3.59961 8 -8 8\nh-136v32h104c4.40039 0 8 3.59961 8 8v16c0 4.40039 -3.59961 8 -8 8h-104v24c0 4.40039 -3.59961 8 -8 8h-16c-4.40039 0 -8 -3.59961 -8 -8v-24h-104c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h104v-32h-136c-4.40039 0 -8 -3.59961 -8 -8v-16\nc0 -4.40039 3.59961 -8 8 -8h136v-32h-104c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h104v-32h-64c-26.5 0 -48 -21.5 -48 -48s21.5 -48 48 -48s48 21.5 48 48v16h64v-16c0 -26.5 21.5 -48 48 -48s48 21.5 48 48s-21.5 48 -48 48h-64v32h104\nc4.40039 0 8 3.59961 8 8v16c0 4.40039 -3.59961 8 -8 8h-104v32h136c4.40039 0 8 3.59961 8 8z\" />\n    <glyph glyph-name=\"box-open\" unicode=\"&#xf49e;\" horiz-adv-x=\"640\" \nd=\"M425.7 192c4.5 0 9 0.599609 13.2998 1.90039l137 39.0996v-178c0 -14.5996 -10 -27.4004 -24.2002 -31l-216.399 -54.0996c-10.1006 -2.5 -20.8008 -2.5 -31 0l-216.2 54.0996c-14.2002 3.5 -24.2002 16.2998 -24.2002 31v178l137 -39.2002\nc4.2998 -1.2998 8.7998 -1.89941 13.2998 -1.89941c16.9004 0 32.7998 9 41.5 23.5l64.2002 106.6l64.2998 -106.6c8.60059 -14.4004 24.5 -23.4004 41.4004 -23.4004zM638.3 304.2c4.5 -9.2002 -0.299805 -20.2002 -10.2002 -23.1006l-197.899 -56.5\nc-7.10059 -2 -14.7002 1 -18.5 7.30078l-91.7002 152.1l250.1 31.9004c6.90039 0.899414 13.6006 -2.7002 16.7002 -8.90039zM53.2002 407c3.09961 6.2002 9.7002 9.7002 16.5996 8.90039l250.2 -31.9004l-91.7998 -152c-3.7998 -6.2998 -11.4004 -9.2998 -18.5 -7.2998\nl-197.9 56.5c-9.7998 2.7998 -14.7002 13.7998 -10.0996 23z\" />\n    <glyph glyph-name=\"comment-dots\" unicode=\"&#xf4ad;\" \nd=\"M256 416c141.4 0 256 -93.0996 256 -208s-114.6 -208 -256 -208c-38.4004 0 -74.7002 7.09961 -107.4 19.4004c-24.5996 -19.6006 -74.2998 -51.4004 -140.6 -51.4004c-3.2002 0 -6 1.7998 -7.2998 4.7998s-0.700195 6.40039 1.5 8.7002\nc0.5 0.5 42.2998 45.4004 54.7998 95.7998c-35.5996 35.7002 -57 81.1006 -57 130.7c0 114.9 114.6 208 256 208zM128 176c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM256 176c17.7002 0 32 14.2998 32 32\ns-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM384 176c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32z\" />\n    <glyph glyph-name=\"comment-slash\" unicode=\"&#xf4b3;\" horiz-adv-x=\"640\" \nd=\"M64 208c0 18.5996 3.2998 36.5 8.90039 53.5996l325.5 -251.6c-24.7002 -6.40039 -51 -10 -78.4004 -10c-38.4004 0 -74.7002 7.09961 -107.4 19.4004c-24.5996 -19.6006 -74.2998 -51.4004 -140.6 -51.4004c-3.2002 0 -6 1.90039 -7.2998 4.7998\nc-1.2998 3 -0.700195 6.40039 1.5 8.7002c0.5 0.599609 42.2002 45.5 54.7998 95.7998c-35.5996 35.7002 -57 81.1006 -57 130.7zM633.8 -10.0996c7 -5.40039 8.2998 -15.5 2.90039 -22.3008l-19.6006 -25.2998c-5.5 -7 -15.5 -8.2002 -22.5 -2.7998l-588.399 454.7\nc-7 5.39941 -8.2002 15.3994 -2.7998 22.3994l19.5996 25.2002c5.5 7 15.5 8.2002 22.5 2.7998l105.1 -81.2998c45.2002 32.6006 104.301 52.7002 169.4 52.7002c141.4 0 256 -93.0996 256 -208c0 -49.2002 -21.4004 -94.0996 -56.5996 -129.7z\" />\n    <glyph glyph-name=\"couch\" unicode=\"&#xf4b8;\" horiz-adv-x=\"640\" \nd=\"M160 224c0 35.2998 -28.7002 64 -64 64h-32c0 53 43 96 96 96h320c53 0 96 -43 96 -96h-32c-35.2998 0 -64 -28.7002 -64 -64v-64h-320v64zM576 256c35.2998 0 64 -28.7002 64 -64c0 -23.5996 -13 -44 -32 -55.0996v-120.9c0 -8.7998 -7.2002 -16 -16 -16h-64\nc-8.7998 0 -16 7.2002 -16 16v16h-384v-16c0 -8.7998 -7.2002 -16 -16 -16h-64c-8.7998 0 -16 7.2002 -16 16v120.9c-19 11.0996 -32 31.5 -32 55.0996c0 35.2998 28.7002 64 64 64h32c17.7002 0 32 -14.2998 32 -32v-96h384v96c0 17.7002 14.2998 32 32 32h32z\" />\n    <glyph glyph-name=\"donate\" unicode=\"&#xf4b9;\" \nd=\"M256 32c-114.9 0 -208 93.0996 -208 208s93.0996 208 208 208s208 -93.0996 208 -208s-93.0996 -208 -208 -208zM233.8 350.6c-32.7002 -0.899414 -59 -28.3994 -59.0996 -62.3994c0 -27.7002 18 -52.4004 43.7002 -60.1006l62.2998 -18.6992\nc7.09961 -2.10059 12.0996 -9.40039 12.0996 -17.6006c0 -10.0996 -7.2998 -18.2998 -16.2998 -18.2998h-38.9004c-6.39941 0 -12.3994 1.7002 -17.7998 5.09961c-4.5 2.80078 -10.2002 2.7002 -14 -1l-16.2998 -15.5c-5 -4.7998 -4.40039 -13 1.2002 -17.0996\nc12.5 -9.2998 27.5 -14.5996 43 -15.4004v-17c0 -9.19922 7.39941 -16.5996 16.5996 -16.5996h11.1006c9.19922 0 16.5996 7.40039 16.5996 16.5996v16.8008c32.7002 0.899414 59.0996 28.3994 59.0996 62.3994c0 27.7002 -18 52.4004 -43.6992 60.1006l-62.3008 18.6992\nc-7.09961 2.10059 -12.0996 9.40039 -12.0996 17.6006c0 10.0996 7.2998 18.2998 16.2998 18.2998h38.9004c6.39941 0 12.3994 -1.7002 17.7998 -5.09961c4.5 -2.80078 10.2002 -2.7002 14 1l16.2998 15.5c5 4.7998 4.40039 13 -1.2002 17.0996\nc-12.5 9.2998 -27.5 14.5996 -43 15.4004v17c0 9.19922 -7.39941 16.5996 -16.5996 16.5996h-11.0996c-9.2002 0 -16.6006 -7.40039 -16.6006 -16.5996v-16.8008zM480 96c17.7002 0 32 -14.2998 32 -32v-96c0 -17.7002 -14.2998 -32 -32 -32h-448\nc-17.7002 0 -32 14.2998 -32 32v96c0 17.7002 14.2998 32 32 32h32.4004c19.6992 -26 44.5996 -47.7002 73 -64h-63.8008c-5.2998 0 -9.59961 -3.59961 -9.59961 -8v-16c0 -4.40039 4.2998 -8 9.59961 -8h364.7c5.2998 0 9.60059 3.59961 9.60059 8v16\nc0 4.40039 -4.30078 8 -9.60059 8h-63.7998c28.4004 16.2998 53.4004 38 73 64h32.5z\" />\n    <glyph glyph-name=\"dove\" unicode=\"&#xf4ba;\" \nd=\"M288 280.8c-50.7998 10.5 -96.5996 36.7998 -130.8 75.1006c11.2002 32.3994 27.7998 61.5996 48.8994 86.5c8.80078 10.5 25.7002 5.19922 27.8008 -8.30078c7 -45.8994 25.8994 -88.8994 54.0996 -125.199v-28.1006zM400 384h112l-32 -64v-160.1\nc0 -88.4004 -71.5996 -159.9 -160 -159.9h-76.9004l-65.1992 -56.0996c-6.10059 -5.30078 -14.1006 -8.2002 -22.1006 -7.90039c-92.7998 3.7998 -135.8 49.4004 -153.2 76.2998c-6 9.2998 -1.19922 21.7002 9.5 24.4004l143.9 36\nc-12.7998 9.59961 -25.7002 20.0996 -38.9004 32.7998c-51 49 -85.0996 115.1 -85.0996 185.9c0 41.3994 9.40039 80.5996 26 115.699c5.7998 12.3008 23.5 11.6006 29 -0.899414c40 -91.2002 128.6 -155.5 233 -161.7v59.4004c0 44.1992 35.7998 80.0996 80 80.0996z\nM400 287.9c8.7998 0 16 7.19922 16 16c0 8.7998 -7.2002 16 -16 16s-16 -7.2002 -16 -16c0 -8.80078 7.2002 -16 16 -16z\" />\n    <glyph glyph-name=\"hand-holding\" unicode=\"&#xf4bd;\" horiz-adv-x=\"576\" \nd=\"M565.3 119.9c15.1006 -13.6006 13.9004 -36.8008 -1.2998 -48.9004l-151.2 -121c-11.3994 -9.09961 -25.5 -14 -40 -14h-356.8c-8.7998 0 -16 7.2002 -16 16v96c0 8.7998 7.2002 16 16 16h55.4004l46.5 37.7002c21 17 47.0996 26.2998 74.0996 26.2998h160\nc19.5 0 34.9004 -17.4004 31.5996 -37.4004c-2.59961 -15.6992 -17.3994 -26.5996 -33.2998 -26.5996h-78.2998c-8.7998 0 -16 -7.2002 -16 -16s7.2002 -16 16 -16h118.3c14.6006 0 28.7002 4.90039 40 14l92.4004 73.9004c12.3994 10 30.7998 10.6992 42.5996 0z\" />\n    <glyph glyph-name=\"hand-holding-heart\" unicode=\"&#xf4be;\" horiz-adv-x=\"576\" \nd=\"M275.3 197.5l-108.899 114.2c-31.6006 33.2002 -29.7002 88.2002 5.59961 118.8c30.7998 26.7002 76.7002 21.9004 104.9 -7.7998l11.0996 -11.6006l11.2002 11.7002c28.2002 29.6006 74.0996 34.4004 104.899 7.7002c35.4004 -30.5996 37.2002 -85.5996 5.60059 -118.8\nl-108.9 -114.2c-7.09961 -7.40039 -18.5 -7.40039 -25.5 0zM565.3 119.9c15.1006 -13.6006 13.9004 -36.8008 -1.2998 -48.9004l-151.2 -121c-11.3994 -9.09961 -25.5 -14 -40 -14h-356.8c-8.7998 0 -16 7.2002 -16 16v96c0 8.7998 7.2002 16 16 16h55.4004l46.5 37.7002\nc21 17 47.0996 26.2998 74.0996 26.2998h160c19.5 0 34.9004 -17.4004 31.5996 -37.4004c-2.59961 -15.6992 -17.3994 -26.5996 -33.2998 -26.5996h-78.2998c-8.7998 0 -16 -7.2002 -16 -16s7.2002 -16 16 -16h118.3c14.6006 0 28.7002 4.90039 40 14l92.4004 73.9004\nc12.3994 10 30.7998 10.6992 42.5996 0z\" />\n    <glyph glyph-name=\"hand-holding-usd\" unicode=\"&#xf4c0;\" horiz-adv-x=\"544\" \nd=\"M257.6 303.7c-22.1992 6.39941 -40 24.7002 -42.8994 47.7002c-4 32 19 59.3994 49.2998 63v17.5996c0 8.7998 7.2002 16 16 16h16c8.7998 0 16 -7.2002 16 -16v-17.7002c11.5 -1.39941 22.2998 -5.2002 31.7998 -11.5c6.2002 -4.09961 6.7998 -13.0996 1.5 -18.3994\nl-17.5 -17.5c-3.7002 -3.7002 -9.2998 -4.2002 -14.0996 -2c-3.2002 1.39941 -6.7002 2.19922 -10.2998 2.19922h-32.8008c-4.59961 0 -8.39941 -3.7998 -8.39941 -8.39941c0 -3.7002 2.5 -7.10059 6.09961 -8.10059l50 -14.2998\nc22.2002 -6.39941 40 -24.7002 42.9004 -47.7002c4 -32 -19 -59.3994 -49.2998 -63v-17.5996c0 -8.7998 -7.2002 -16 -16 -16h-16c-8.80078 0 -16 7.2002 -16 16v17.7002c-11.5 1.39941 -22.3008 5.2002 -31.8008 11.5c-6.19922 4.09961 -6.7998 13.0996 -1.5 18.3994\nl17.5 17.5c3.7002 3.7002 9.30078 4.2002 14.1006 2c3.2002 -1.39941 6.7002 -2.19922 10.2998 -2.19922h32.7998c4.60059 0 8.40039 3.7998 8.40039 8.39941c0 3.7002 -2.5 7.10059 -6.10059 8.10059zM533.9 119.9c14.1992 -13.6006 13.0996 -36.8008 -1.30078 -48.9004\nl-142.8 -121c-10.7998 -9.09961 -24.0996 -14 -37.7998 -14h-336.9c-8.2998 0 -15.0996 7.2002 -15.0996 16v96c0 8.7998 6.7998 16 15.0996 16h52.4004l43.9004 37.7002c19.6992 17 44.3994 26.2998 69.8994 26.2998h151.101c18.2998 0 32.8994 -17.4004 29.7998 -37.4004\nc-2.40039 -15.6992 -16.2998 -26.5996 -31.4004 -26.5996h-73.8994c-8.30078 0 -15.1006 -7.2002 -15.1006 -16s6.7998 -16 15.1006 -16h111.699c13.8008 0 27.1006 4.90039 37.8008 14l87.1992 73.9004c11.8008 10 29.1006 10.6992 40.3008 0z\" />\n    <glyph glyph-name=\"hands\" unicode=\"&#xf4c2;\" horiz-adv-x=\"640\" \nd=\"M204.8 217.6l57.6006 -76.7998c16.5996 -22.2002 25.5996 -49.0996 25.5996 -76.7998v-112c0 -8.7998 -7.2002 -16 -16 -16h-131.7c-7.2002 0 -13.5 4.7002 -15.2998 11.5996c-2 7.80078 -5.40039 15.2002 -10.4004 21.7002l-104.1 134.3\nc-6.7998 8.5 -10.5 19.1006 -10.5 30v218.4c0 17.7002 14.2998 32 32 32s32 -14.2998 32 -32v-148.4l89.7998 -107.8c6 -7.2998 16.9004 -7.7998 23.6006 -1.09961l12.7998 12.7998c5.59961 5.59961 6.2998 14.5 1.5 20.9004l-38.1006 50.7998\nc-10.5996 14.0996 -7.69922 34.2002 6.40039 44.7998s34.2002 7.7002 44.7998 -6.40039zM608 384c17.7002 0 32 -14.2998 32 -32v-218.4c0 -10.8994 -3.7002 -21.5 -10.5 -30l-104.1 -134.3c-5 -6.5 -8.40039 -13.8994 -10.4004 -21.7002\nc-1.7998 -6.89941 -8.2002 -11.5996 -15.2998 -11.5996h-131.7c-8.7998 0 -16 7.2002 -16 16v112c0 27.7002 9 54.5996 25.5996 76.7998l57.6006 76.7998c10.5996 14.1006 30.7002 17 44.7998 6.40039s17 -30.7002 6.40039 -44.7998l-38.1006 -50.7998\nc-4.7998 -6.40039 -4.09961 -15.3008 1.5 -20.9004l12.7998 -12.7998c6.60059 -6.60059 17.6006 -6.10059 23.6006 1.09961l89.7998 107.8v148.4c0 17.7002 14.2998 32 32 32z\" />\n    <glyph glyph-name=\"hands-helping\" unicode=\"&#xf4c4;\" horiz-adv-x=\"640\" \nd=\"M488 256c13.2998 0 24 -10.7002 24 -24v-48c0 -13.2998 -10.7002 -24 -24 -24h-8v-64c0 -17.7002 -14.2998 -32 -32 -32h-16c0 -35.2998 -28.7002 -64 -64 -64h-136.6l-103.4 -59.7002c-15.2998 -8.7998 -34.9004 -3.59961 -43.7002 11.7002l-80 138.6\nc-8.89941 15.3008 -3.59961 34.9004 11.7002 43.7002l80 46.2002v47.2998c0 22.4004 11.7998 43.2998 31.0996 54.7998l64.9004 39v-121.6c0 -39.7002 32.2998 -72 72 -72s72 32.2998 72 72v56h152zM635.7 293.4c8.7998 -15.3008 3.59961 -34.8008 -11.7002 -43.7002\nl-80 -46.2002v28.5c0 30.9004 -25.0996 56 -56 56h-184v-88c0 -22.0996 -17.9004 -40 -40 -40s-40 17.9004 -40 40v126.3c0 11 5.59961 21.2998 15 27.1006l33.5 20.8994c10.2002 6.2998 21.9004 9.7002 33.9004 9.7002h102.199l103.4 59.7002\nc15.2998 8.7998 34.9004 3.59961 43.7002 -11.7002z\" />\n    <glyph glyph-name=\"parachute-box\" unicode=\"&#xf4cd;\" \nd=\"M511.9 273c1.09961 -9.2002 -6.80078 -17 -16.1006 -17h-8.7002l-136.8 -151.9c0.700195 -2.69922 1.60059 -5.19922 1.60059 -8.09961v-128c0 -17.7002 -14.3008 -32 -32 -32h-128c-17.7002 0 -32 14.2998 -32 32v128c0 2.90039 0.899414 5.5 1.59961 8.09961\nl-136.7 151.9h-8.7002c-9.19922 0 -17.0996 7.90039 -16 17c9.10059 75.5 78.4004 132.3 158.301 158.7c-36.4004 -39.4004 -62.4004 -100.601 -62.4004 -175.7h-28.0996l116.6 -129.5c2.5 0.599609 4.7998 1.5 7.5 1.5h48v128h-112c0 115.2 68.9004 192 128 192\ns128 -76.7998 128 -192h-112v-128h48c2.7002 0 5 -0.900391 7.5 -1.5l116.6 129.5h-28.0996c0 75.0996 -26 136.3 -62.4004 175.7c79.9004 -26.2998 149.2 -83.1006 158.301 -158.7z\" />\n    <glyph glyph-name=\"people-carry\" unicode=\"&#xf4ce;\" horiz-adv-x=\"640\" \nd=\"M128 352c-26.5 0 -48 21.5 -48 48s21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48zM512 352c-26.5 0 -48 21.5 -48 48s21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48zM637.7 -20.0996c6.59961 -16.4004 -1.40039 -35 -17.7998 -41.6006\nc-3.90039 -1.59961 -7.90039 -2.2998 -11.9004 -2.2998c-12.7002 0 -24.7002 7.59961 -29.7002 20.0996l-27.7002 69.2002l2 18.2002l41.1006 46.4004zM603.5 189.7c4.59961 -20 -0.799805 -41.2002 -14.4004 -56.7002l-67.1992 -75.9004l-10.1006 -92.5996\nc-1.7998 -16.4004 -15.7002 -28.5 -31.7998 -28.5c-1.2002 0 -2.2998 0.0996094 -3.5 0.200195c-17.5 1.89941 -30.2002 17.7002 -28.2998 35.2998l10.0996 92.7998c1.5 13 6.90039 25.1006 15.6006 35l43.2998 49l-17.6006 70.2998l-6.7998 -20.3994\nc-4.09961 -12.6006 -11.8994 -23.4004 -24.5 -32.6006l-51.0996 -32.5c-4.60059 -2.89941 -12.1006 -4.59961 -17.2002 -5h-160c-5.09961 0.400391 -12.5996 2.10059 -17.2002 5l-51.0996 32.5c-12.6006 9.2002 -20.4004 20.1006 -24.5 32.6006l-6.7998 20.3994\nl-17.6006 -70.2998l43.2998 -49c8.7002 -9.89941 14.1006 -22 15.6006 -35l10.0996 -92.7998c1.90039 -17.5996 -10.7002 -33.4004 -28.2998 -35.2998c-1.2002 -0.100586 -2.2998 -0.200195 -3.5 -0.200195c-16.2002 0 -30 12.2002 -31.7998 28.5l-10.1006 92.5996\nl-67.1992 75.9004c-13.7002 15.5 -19 36.7002 -14.4004 56.7002l18.4004 80.2002c4.59961 20 18.5996 36.7998 37.5 44.8994c18.5 8 38.8994 6.7002 56.0996 -3.2998c22.7002 -13.4004 39.7998 -34.4004 48.0996 -59.4004l11.3008 -33.8994l16.0996 -10.2002v96\nc0 8.7998 7.2002 16 16 16h160c8.7998 0 16 -7.2002 16 -16v-96l16 10.2002l11.2998 33.8994c8.40039 24.9004 25.4004 46 48.1006 59.4004c17.0996 10 37.5996 11.2998 56.0996 3.2998c18.9004 -8.09961 32.9004 -24.8994 37.5 -44.8994zM46.2998 89.9004l41.1006 -46.4004\nl2 -18.2002l-27.7002 -69.2002c-6.5 -16.0996 -24.7998 -24.3994 -41.6006 -17.7998c-16.3994 6.60059 -24.3994 25.2002 -17.7998 41.6006z\" />\n    <glyph glyph-name=\"piggy-bank\" unicode=\"&#xf4d3;\" horiz-adv-x=\"576\" \nd=\"M560 224c8.7998 0 16 -7.2002 16 -16v-128c0 -8.7998 -7.2002 -16 -16 -16h-48.7002c-9 -11.9004 -19.5 -22.4004 -31.2998 -31.2998v-80.7002c0 -8.7998 -7.2002 -16 -16 -16h-64c-8.7998 0 -16 7.2002 -16 16v48h-128v-48c0 -8.7998 -7.2002 -16 -16 -16h-64\nc-8.7998 0 -16 7.2002 -16 16v80.7002c-38.5996 29.2002 -64 75.0996 -64 127.3h-40c-33.2998 0 -59.9004 29.2002 -55.5 63.4004c3.59961 28.1992 29 48.5996 57.5 48.5996c3.2998 0 6 -2.7002 6 -6v-20c0 -3.2998 -2.7002 -6 -6 -6h-1\nc-11.5996 0 -22.2998 -7.7998 -24.5 -19.2002c-3 -15.2998 8.7002 -28.7998 23.5 -28.7998h43.2002c14.8994 73 79.3994 128 156.8 128h128c7.90039 0 15.4004 -1.2002 23 -2.2998c17.5996 20.7998 43.5996 34.2998 73 34.2998h32l-18.9004 -75.5\nc15.8008 -14.7998 28.6006 -32.5 37.4004 -52.5h29.5zM432 160c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM256 352c-16.4004 0 -32.2002 -2.2998 -47.4004 -6.2002c-0.0996094 2.10059 -0.599609 4.10059 -0.599609 6.2002\nc0 53 43 96 96 96s96 -43 96 -96c0 -0.299805 -0.0996094 -0.5 -0.0996094 -0.799805c-5.2002 0.399414 -10.5 0.799805 -15.9004 0.799805h-128z\" />\n    <glyph glyph-name=\"ribbon\" unicode=\"&#xf4d6;\" horiz-adv-x=\"448\" \nd=\"M6.09961 3.7002l117.2 130l79.2002 -87.9004l-91.7998 -101.899c-8 -8.80078 -21.4004 -10.5 -31.2998 -3.80078l-68.8008 27.9004c-12 8.09961 -14.0996 24.9004 -4.5 35.7002zM441.9 3.7002c9.69922 -10.7998 7.59961 -27.6006 -4.30078 -35.6006l-68.7998 -27.8994\nc-9.89941 -6.7002 -23.2998 -5.10059 -31.2998 3.7998l-248.1 275.3c-48.6006 53.7998 -13 113.5 -11.5 116l43.5996 73.2002c4.2998 7.2002 9.90039 13.2998 16.7998 18c44 29.7002 130.7 27.5996 171.4 0c6.89941 -4.7002 12.5 -10.7998 16.7998 -18l43.7002 -73.5\nc21.8994 -36.9004 17.2998 -83.5996 -11.4004 -115.5l-34.2002 -38l-79.0996 87.7002s52.7002 59 56 64.5996c-15.4004 8.40039 -40.2002 17.9004 -77.5 17.9004s-62.0996 -9.5 -77.5 -17.9004c3.40039 -5.5 295.4 -330.1 295.4 -330.1z\" />\n    <glyph glyph-name=\"route\" unicode=\"&#xf4d7;\" \nd=\"M416 128c52.9004 0 96 -43.0996 96 -96s-43.0996 -96 -96 -96h-277.8c13.5 16.2998 31.2998 39.2002 47.2998 64h230.5c17.5996 0 32 14.4004 32 32s-14.4004 32 -32 32h-96c-52.9004 0 -96 43.0996 -96 96s43.0996 96 96 96h45.2998\nc-23.0996 32.5996 -45.2998 70.5 -45.2998 96c0 53 43 96 96 96s96 -43 96 -96s-96 -160 -96 -160h-96c-17.5996 0 -32 -14.4004 -32 -32s14.4004 -32 32 -32h96zM416 384c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32s32 14.2998 32 32s-14.2998 32 -32 32zM96 192\nc53 0 96 -43 96 -96s-96 -160 -96 -160s-96 107 -96 160s43 96 96 96zM96 64c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32z\" />\n    <glyph glyph-name=\"seedling\" unicode=\"&#xf4d8;\" \nd=\"M64 352c123.7 0 224 -100.3 224 -224v-144c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v144c-123.7 0 -224 100.3 -224 224h64zM448 416h64c0 -115.9 -88 -211.1 -200.7 -222.8c-10.7998 40.7002 -31.2998 77.3994 -59 107.6\nc38.2998 68.7002 111.5 115.2 195.7 115.2z\" />\n    <glyph glyph-name=\"sign\" unicode=\"&#xf4d9;\" \nd=\"M496 384c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-368v-368c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v368h-48c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h48v48c0 8.7998 7.2002 16 16 16h32\nc8.7998 0 16 -7.2002 16 -16v-48h368zM160 64v224h320v-224h-320z\" />\n    <glyph glyph-name=\"smile-wink\" unicode=\"&#xf4da;\" horiz-adv-x=\"496\" \nd=\"M0 192c0 137 111 248 248 248s248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248zM200 240c0 17.7002 -14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32s32 14.2998 32 32zM358.5 223.5l9.7002 -8.5c8.39941 -7.5 21.5 -0.299805 19.7998 10.7998\nc-4 25.2002 -34.2002 42.1006 -59.9004 42.1006c-25.6992 0 -55.8994 -16.9004 -59.8994 -42.1006c-1.7998 -11.2002 11.5 -18.2002 19.7998 -10.7998l9.5 8.5c14.7998 13.2002 46.2002 13.2002 61 0zM157.8 122.2c-13.3994 16.2998 -38.0996 -4.10059 -24.5996 -20.4004\nc28.5 -34.2002 70.2998 -53.7998 114.8 -53.7998s86.2998 19.5996 114.8 53.7002c13.5 16.2998 -11 36.7002 -24.5996 20.5c-22.4004 -26.7998 -55.2002 -42.2002 -90.2002 -42.2002s-67.7998 15.2998 -90.2002 42.2002z\" />\n    <glyph glyph-name=\"tape\" unicode=\"&#xf4db;\" horiz-adv-x=\"640\" \nd=\"M224 256c35.2998 0 64 -28.7002 64 -64s-28.7002 -64 -64 -64s-64 28.7002 -64 64s28.7002 64 64 64zM624 32c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-400c-123.7 0 -224 100.3 -224 224s100.3 224 224 224s224 -100.3 224 -224\nc0 -62.7002 -25.9004 -119.3 -67.4004 -160h243.4zM224 96c53 0 96 43 96 96s-43 96 -96 96s-96 -43 -96 -96s43 -96 96 -96z\" />\n    <glyph glyph-name=\"truck-loading\" unicode=\"&#xf4de;\" horiz-adv-x=\"640\" \nd=\"M50.2002 72.4004l-49.6006 185.5c-2.2998 8.5 2.80078 17.2998 11.3008 19.5996l77.2998 20.7002l24.7998 -92.7002l61.7998 16.5l-24.7998 92.7002l77.2002 20.7998c8.5 2.2998 17.2998 -2.7998 19.5996 -11.2998l49.7002 -185.5\nc2.2998 -8.5 -2.7998 -17.2998 -11.2998 -19.6006l-216.4 -58c-8.5 -2.2998 -17.2998 2.80078 -19.5996 11.3008zM384 448h256v-400c0 -61.9004 -50.0996 -112 -112 -112c-60.4004 0 -109.2 47.9004 -111.6 107.7l-393.7 -107.4\nc-4.2002 -1.2002 -8.60059 1.2998 -9.7998 5.60059l-12.6006 46.2998c-1.2002 4.2002 1.2998 8.59961 5.60059 9.7998l346.1 94.4004v323.6c0 17.7002 14.2998 32 32 32zM528 0c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48z\" />\n    <glyph glyph-name=\"truck-moving\" unicode=\"&#xf4df;\" horiz-adv-x=\"640\" \nd=\"M621.3 210.7c12 -12 18.7002 -28.2002 18.7002 -45.2002v-85.5c0 -8.7998 -7.2002 -16 -16 -16h-17.5996c1 -5.2002 1.59961 -10.5 1.59961 -16c0 -44.2002 -35.7998 -80 -80 -80s-80 35.7998 -80 80c0 5.5 0.5 10.7998 1.59961 16h-163.199\nc1 -5.2002 1.59961 -10.5 1.59961 -16c0 -44.2002 -35.7998 -80 -80 -80c-26.2998 0 -49.4004 12.7998 -64 32.4004c-14.5996 -19.5 -37.7002 -32.4004 -64 -32.4004c-44.2002 0 -80 35.7998 -80 80v336c0 17.7002 14.2998 32 32 32h416c17.7002 0 32 -14.2998 32 -32\nv-96.0996h37.5c17 0 33.2998 -6.7002 45.2998 -18.7002zM80 16c17.5996 0 32 14.4004 32 32s-14.4004 32 -32 32s-32 -14.4004 -32 -32s14.4004 -32 32 -32zM208 16c17.5996 0 32 14.4004 32 32s-14.4004 32 -32 32s-32 -14.4004 -32 -32s14.4004 -32 32 -32zM480 240v-48\nh92.0996l-43.2998 43.2998c-3 3 -7 4.7002 -11.2998 4.7002h-37.5zM528 16c17.5996 0 32 14.4004 32 32s-14.4004 32 -32 32s-32 -14.4004 -32 -32s14.4004 -32 32 -32z\" />\n    <glyph glyph-name=\"video-slash\" unicode=\"&#xf4e2;\" horiz-adv-x=\"640\" \nd=\"M633.8 -10.0996c7 -5.40039 8.2998 -15.5 2.7998 -22.4004l-19.5996 -25.2998c-5.5 -7 -15.5 -8.2002 -22.5 -2.7998l-178.5 138l-373.3 288.6l-36.5 28.2002c-7 5.39941 -8.2002 15.3994 -2.7998 22.3994l19.5996 25.2002c5.5 7 15.5 8.2002 22.5 2.7998\nl78.4004 -60.5996h244.3c26.3994 0 47.7998 -21.4004 47.7998 -47.7998v-178l32 -24.7002v137.2l109.6 75.5996c21.3008 14.6006 50.4004 -0.299805 50.4004 -25.7998v-257c0 -17.4004 -13.7998 -29.7002 -29.2002 -31.0996zM32 47.7998v245.5l365.8 -282.8\nc-8.2002 -6.5 -18.3994 -10.5 -29.5996 -10.5h-288.4c-26.3994 0 -47.7998 21.4004 -47.7998 47.7998z\" />\n    <glyph glyph-name=\"wine-glass\" unicode=\"&#xf4e3;\" horiz-adv-x=\"288\" \nd=\"M216 -16c22.0898 0 40 -17.9102 40 -40c0 -4.41992 -3.58008 -8 -8 -8h-208c-4.41992 0 -8 3.58008 -8 8c0 22.0898 17.9102 40 40 40h40v117.18c-68.4697 15.8906 -118.05 79.9102 -111.4 154.16l15.96 178.11c0.730469 8.24023 7.55078 14.5498 15.7002 14.5498h223.48\nc8.16016 0 14.9697 -6.30957 15.71 -14.5498l15.9502 -178.101c6.64941 -74.25 -42.9307 -138.27 -111.4 -154.159v-117.19h40z\" />\n    <glyph glyph-name=\"user-alt-slash\" unicode=\"&#xf4fa;\" horiz-adv-x=\"640\" \nd=\"M633.8 -10.0996c7 -5.40039 8.2998 -15.5 2.90039 -22.3008l-19.6006 -25.2998c-5.5 -7 -15.5 -8.2002 -22.5 -2.7998l-588.399 454.7c-7 5.39941 -8.2002 15.3994 -2.7998 22.3994l19.5996 25.2002c5.5 7 15.5 8.2002 22.5 2.7998l135.5 -104.8\nc16 62.1006 71.9004 108.2 139 108.2c79.5 0 144 -64.5 144 -144c0 -54.0996 -30.2002 -100.7 -74.4004 -125.3zM198.4 128h47.3994l248.4 -192h-382.2c-26.5 0 -48 21.5 -48 48v9.59961c0 74.2002 60.2002 134.4 134.4 134.4z\" />\n    <glyph glyph-name=\"user-astronaut\" unicode=\"&#xf4fb;\" horiz-adv-x=\"448\" \nd=\"M64 224c-8.7998 0 -16 7.2002 -16 16v96c0 8.7998 7.2002 16 16 16h13.5c24.7002 56.5 80.9004 96 146.5 96s121.8 -39.5 146.5 -96h13.5c8.7998 0 16 -7.2002 16 -16v-96c0 -8.7998 -7.2002 -16 -16 -16h-13.5c-24.7002 -56.5 -80.9004 -96 -146.5 -96\ns-121.8 39.5 -146.5 96h-13.5zM104 312v-24c0 -53 43 -96 96 -96h48c53 0 96 43 96 96v24c0 22.0996 -21.5 40 -48 40h-144c-26.5 0 -48 -17.9004 -48 -40zM176 240l-12 36l-36 12l36 12l12 36l12 -36l36 -12l-36 -12zM327.6 126.6c67.5 -7.09961 120.4 -63.5996 120.4 -133\nv-9.59961c0 -26.5 -21.5 -48 -48 -48h-80v64c0 17.7002 -14.2998 32 -32 32h-128c-17.7002 0 -32 -14.2998 -32 -32v-64h-80c-26.5 0 -48 21.5 -48 48v9.59961c0 69.4004 52.9004 125.9 120.4 133c29.8994 -19.2998 65.3994 -30.5996 103.6 -30.5996\ns73.7002 11.2998 103.6 30.5996zM272 0c8.7998 0 16 -7.2002 16 -16s-7.2002 -16 -16 -16s-16 7.2002 -16 16s7.2002 16 16 16zM176 0c8.7998 0 16 -7.2002 16 -16v-48h-32v48c0 8.7998 7.2002 16 16 16z\" />\n    <glyph glyph-name=\"user-check\" unicode=\"&#xf4fc;\" horiz-adv-x=\"640\" \nd=\"M224 192c-70.7002 0 -128 57.2998 -128 128s57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128zM313.6 160c74.2002 0 134.4 -60.2002 134.4 -134.4v-41.5996c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v41.5996\nc0 74.2002 60.2002 134.4 134.4 134.4h16.6992c22.3008 -10.2002 46.9004 -16 72.9004 -16s50.7002 5.7998 72.9004 16h16.6992zM636.6 288.4c4.60059 -4.60059 4.5 -12.1006 -0.0996094 -16.8008l-141.3 -140.199c-4.7002 -4.60059 -12.2002 -4.60059 -16.7998 0.0996094\nl-81.7002 82.2998c-4.60059 4.7002 -4.60059 12.2002 0.0996094 16.7998l28.1006 27.9004c4.69922 4.59961 12.1992 4.59961 16.7998 -0.0996094l45.5 -45.8008l104.8 104c4.7002 4.60059 12.2002 4.60059 16.7998 -0.0996094z\" />\n    <glyph glyph-name=\"user-clock\" unicode=\"&#xf4fd;\" horiz-adv-x=\"640\" \nd=\"M496 224c79.5996 0 144 -64.4004 144 -144s-64.4004 -144 -144 -144s-144 64.4004 -144 144s64.4004 144 144 144zM560 73.7002v12.5996c0 5.2998 -4.40039 9.7002 -9.7002 9.7002h-38.2998v54.2998c0 5.2998 -4.40039 9.7002 -9.7002 9.7002h-12.5996\nc-5.2998 0 -9.7002 -4.40039 -9.7002 -9.7002v-76.5996c0 -5.2998 4.40039 -9.7002 9.7002 -9.7002h60.5996c5.2998 0 9.7002 4.40039 9.7002 9.7002zM320 80c0 -59.5 29.7998 -112.1 75.0996 -144h-347.1c-26.5 0 -48 21.5 -48 48v41.5996\nc0 74.2002 60.2002 134.4 134.4 134.4h16.6992c22.3008 -10.2002 46.9004 -16 72.9004 -16s50.7002 5.7998 72.9004 16h16.6992c8.40039 0 16.6006 -1 24.6006 -2.5c-11.5 -23.4004 -18.2002 -49.7002 -18.2002 -77.5zM224 192c-70.7002 0 -128 57.2998 -128 128\ns57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128z\" />\n    <glyph glyph-name=\"user-cog\" unicode=\"&#xf4fe;\" horiz-adv-x=\"640\" \nd=\"M610.5 74.7002l25.7998 -14.9004c2.90039 -1.7002 4.2998 -5.2002 3.2998 -8.5c-6.69922 -21.5996 -18.1992 -41.2002 -33.1992 -57.3994c-2.30078 -2.5 -6.10059 -3.10059 -9 -1.40039l-25.8008 14.9004c-10.8994 -9.30078 -23.3994 -16.5 -36.8994 -21.3008v-29.7998\nc0 -3.39941 -2.40039 -6.39941 -5.7002 -7.09961c-21.2002 -4.7998 -43.9004 -5 -66.2002 0c-3.2998 0.700195 -5.7002 3.7002 -5.7002 7.09961v29.7998c-13.5 4.80078 -26 12 -36.8994 21.3008l-25.7998 -14.9004c-3 -1.7002 -6.7002 -1.09961 -9 1.40039\nc-15 16.2998 -26.5 35.7998 -33.2002 57.3994c-1 3.2998 0.299805 6.7998 3.2998 8.5l25.7998 14.9004c-2.59961 14.0996 -2.59961 28.5 0 42.5996l-25.7998 14.9004c-2.90039 1.7002 -4.2998 5.2002 -3.2998 8.5c6.7002 21.5996 18.2002 41.2002 33.2002 57.3994\nc2.2998 2.5 6.09961 3.10059 9 1.40039l25.7998 -14.9004c10.8994 9.30078 23.3994 16.5 36.8994 21.3008v29.7998c0 3.39941 2.40039 6.39941 5.7002 7.09961c21.2002 4.7998 43.9004 5 66.2002 0c3.2998 -0.700195 5.7002 -3.7002 5.7002 -7.09961v-29.7998\nc13.5 -4.80078 26 -12 36.8994 -21.3008l25.8008 14.9004c3 1.7002 6.69922 1.09961 9 -1.40039c15 -16.1992 26.5 -35.7998 33.1992 -57.3994c1 -3.2998 -0.299805 -6.7998 -3.2998 -8.5l-25.7998 -14.9004c2.59961 -14.0996 2.59961 -28.5 0 -42.5996zM496 47.5\nc26.7998 0 48.5 21.7998 48.5 48.5s-21.7998 48.5 -48.5 48.5s-48.5 -21.7998 -48.5 -48.5s21.7002 -48.5 48.5 -48.5zM224 192c-70.7002 0 -128 57.2998 -128 128s57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128zM425.2 -34.5v-9.2002\nc0 -4.09961 0.799805 -8 2 -11.7998c-7.7002 -5.2998 -17.1006 -8.5 -27.2002 -8.5h-352c-26.5 0 -48 21.5 -48 48v41.5996c0 74.2002 60.2002 134.4 134.4 134.4h16.6992c22.3008 -10.2002 46.9004 -16 72.9004 -16s50.7002 5.7998 72.9004 16h16.6992\nc3.90039 0 7.60059 -0.900391 11.4004 -1.2002c-1 -2.89941 -2.2998 -5.7998 -3.2002 -8.7002c-5.5 -17.6992 1.90039 -36.5 17.9004 -45.6992l7.89941 -4.60059c-0.0996094 -2.59961 -0.0996094 -5.2002 0 -7.7998l-7.89941 -4.59961\nc-16 -9.30078 -23.4004 -28 -17.9004 -45.7002c7.90039 -25.7002 21.9004 -49.7998 40.2002 -69.6006c7.5 -8 18 -12.5996 28.9004 -12.5996c6.7998 0 13.5996 1.90039 19.5996 5.2998l7.90039 4.60059c2.19922 -1.30078 4.5 -2.7002 6.7998 -3.90039z\" />\n    <glyph glyph-name=\"user-edit\" unicode=\"&#xf4ff;\" horiz-adv-x=\"640\" \nd=\"M224 192c-70.7002 0 -128 57.2998 -128 128s57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128zM313.6 160c39.9004 0 75.4004 -17.7998 99.9004 -45.5l-77.2998 -77.2998l-7.90039 -7.90039l-1.2002 -11.0996l-6.7998 -60.9004\nc-0.799805 -7.2998 0.200195 -14.5 2.60059 -21.2998h-274.9c-26.5 0 -48 21.5 -48 48v41.5996c0 74.2002 60.2002 134.4 134.4 134.4h16.6992c22.3008 -10.2002 46.9004 -16 72.9004 -16s50.7002 5.7998 72.9004 16h16.6992zM358.9 14.7002l137.899 137.8l71.7002 -71.7002\nl-137.9 -137.899l-60.8994 -6.80078c-10.1006 -1.19922 -18.7002 7.40039 -17.6006 17.6006zM633 179.1c9.2998 -9.39941 9.2998 -24.5 0 -33.8994l-41.7998 -41.7998l-71.7998 71.6992l4.09961 4.10059l37.7998 37.7998c9.2998 9.2998 24.5 9.2998 33.7998 0z\" />\n    <glyph glyph-name=\"user-friends\" unicode=\"&#xf500;\" horiz-adv-x=\"640\" \nd=\"M192 192c-61.9004 0 -112 50.0996 -112 112s50.0996 112 112 112s112 -50.0996 112 -112s-50.0996 -112 -112 -112zM268.8 160c63.6006 0 115.2 -51.5996 115.2 -115.2v-28.7998c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v28.7998\nc0 63.6006 51.5996 115.2 115.2 115.2h8.2998c20.9004 -10 43.9004 -16 68.5 -16s47.7002 6 68.5 16h8.2998zM480 192c-53 0 -96 43 -96 96s43 96 96 96s96 -43 96 -96s-43 -96 -96 -96zM528 160c61.9004 0 112 -50.0996 112 -112c0 -26.5 -21.5 -48 -48 -48h-176.6\nc0.0996094 2.09961 0.599609 4.2002 0.599609 6.40039v38.3994c0 38.6006 -15.2998 73.5 -39.7002 99.7998c16.5 9.5 35.2998 15.4004 55.7002 15.4004h3.7998c13.9004 -4.7998 28.6006 -8 44.2002 -8s30.2998 3.2002 44.2002 8h3.7998z\" />\n    <glyph glyph-name=\"user-graduate\" unicode=\"&#xf501;\" horiz-adv-x=\"448\" \nd=\"M319.4 127.4c71.5 -3.10059 128.6 -61.6006 128.6 -133.801v-9.59961c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v9.59961c0 72.2002 57.0996 130.7 128.6 133.801l95.4004 -95.4004zM13.5996 368.2c-18.0996 4.39941 -18.0996 27.2002 0 31.5996\nl190.601 45.9004c13 3.09961 26.7002 3.09961 39.7002 0l190.399 -46c18.2002 -4.40039 18.2002 -27.1006 0 -31.5l-96.2998 -23.2002c8.7002 -17.2002 14 -36.4004 14 -57c0 -70.7002 -57.2998 -128 -128 -128s-128 57.2998 -128 128c0 20.5996 5.40039 39.7998 14 57\nl-66 15.9004v-52.6006c7 -4.2002 12 -11.5 12 -20.2998c0 -8.40039 -4.59961 -15.4004 -11.0996 -19.7002l15.5996 -62.2998c1.7002 -6.90039 -2.09961 -14 -7.59961 -14h-41.8008c-5.5 0 -9.2998 7.09961 -7.59961 14l15.5996 62.2998\nc-6.5 4.2998 -11.0996 11.2998 -11.0996 19.7002c0 8.7998 5 16.0996 12 20.2998v58.4004z\" />\n    <glyph glyph-name=\"user-lock\" unicode=\"&#xf502;\" horiz-adv-x=\"640\" \nd=\"M224 192c-70.6562 0 -128 57.3438 -128 128s57.3438 128 128 128s128 -57.3438 128 -128s-57.3438 -128 -128 -128zM320 128v-160c0.0644531 -9.49707 4.05176 -23.833 8.90039 -32h-280.9c-26.4961 0 -48 21.5039 -48 48v41.5996\nc0.0166016 74.1729 60.2275 134.384 134.4 134.4h16.6992c19.1514 -8.83203 51.8105 -16 72.9004 -16s53.749 7.16797 72.9004 16h16.6992c5 0 9.7002 -1 14.5 -1.5c-4.41016 -7.84082 -8.03906 -21.5049 -8.09961 -30.5zM608 160c17.6641 0 32 -14.3359 32 -32v-160\nc0 -17.6641 -14.3359 -32 -32 -32h-224c-17.6641 0 -32 14.3359 -32 32v160c0 17.6641 14.3359 32 32 32h32v80c0 44.1602 35.8398 80 80 80s80 -35.8398 80 -80v-80h32zM496 16c17.6641 0 32 14.3359 32 32s-14.3359 32 -32 32s-32 -14.3359 -32 -32s14.3359 -32 32 -32z\nM528 160v80c0 17.6641 -14.3359 32 -32 32s-32 -14.3359 -32 -32v-80h64z\" />\n    <glyph glyph-name=\"user-minus\" unicode=\"&#xf503;\" horiz-adv-x=\"640\" \nd=\"M624 240c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-192c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h192zM224 192c-70.7002 0 -128 57.2998 -128 128s57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128z\nM313.6 160c74.2002 0 134.4 -60.2002 134.4 -134.4v-41.5996c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v41.5996c0 74.2002 60.2002 134.4 134.4 134.4h16.6992c22.3008 -10.2002 46.9004 -16 72.9004 -16s50.7002 5.7998 72.9004 16h16.6992z\" />\n    <glyph glyph-name=\"user-ninja\" unicode=\"&#xf504;\" horiz-adv-x=\"448\" \nd=\"M325.4 158.8c68.5996 -6.09961 122.6 -63 122.6 -133.2v-41.5996c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v41.5996c0 70.2002 54 127.101 122.6 133.2l101.4 -101.399zM32 256c0 33.4004 17.0996 62.7998 43.0996 80\nc-26 17.2002 -43.0996 46.5996 -43.0996 80c32 0 60.0996 -15.7998 77.5 -39.7998c20.9004 42.3994 64.0996 71.7998 114.5 71.7998c70.7002 0 128 -57.2998 128 -128s-57.2998 -128 -128 -128c-58.7998 0 -107.7 39.7998 -122.8 93.7002\nc-17.4004 -18.2002 -41.9004 -29.7002 -69.2002 -29.7002zM176 352c-17.7002 0 -32 -14.2998 -32 -32h160c0 17.7002 -14.2998 32 -32 32h-96z\" />\n    <glyph glyph-name=\"user-shield\" unicode=\"&#xf505;\" horiz-adv-x=\"640\" \nd=\"M622.3 176.9c10.7002 -4.2002 17.7002 -14 17.7002 -24.9004c0 -124.5 -81.5996 -193.9 -132.9 -213.9c-4.19922 -1.59961 -12.5996 -3.69922 -22.1992 0c-64.2002 25.1006 -132.9 102.301 -132.9 213.9c0 10.9004 7 20.7002 17.7002 24.9004l115.2 45\nc9.59961 3.69922 18.0996 1.59961 22.1992 0zM496 -14.4004c34.5996 16.4004 89.9004 64.7002 95.5 151.801l-95.5 37.2998v-189.101zM224 192c-70.7002 0 -128 57.2998 -128 128s57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128zM320 152\nc0 -95.2998 45.2002 -169.1 99.2002 -212c-5.90039 -2.5 -12.4004 -4 -19.2002 -4h-352c-26.5 0 -48 21.5 -48 48v41.5996c0 74.2002 60.2002 134.4 134.4 134.4h16.6992c22.3008 -10.2002 46.9004 -16 72.9004 -16s50.7002 5.7998 72.9004 16h16.6992\nc2.60059 0 5 -0.700195 7.5 -0.799805c-0.299805 -2.40039 -1.09961 -4.7002 -1.09961 -7.2002z\" />\n    <glyph glyph-name=\"user-slash\" unicode=\"&#xf506;\" horiz-adv-x=\"640\" \nd=\"M633.8 -10.0996c7 -5.40039 8.2998 -15.5 2.90039 -22.3008l-19.6006 -25.2998c-5.5 -7 -15.5 -8.2002 -22.5 -2.7998l-588.399 454.7c-7 5.39941 -8.2002 15.3994 -2.7998 22.3994l19.5996 25.2002c5.5 7 15.5 8.2002 22.5 2.7998l147.6 -114\nc5.40039 65.6006 59.8008 117.4 126.9 117.4c70.7002 0 128 -57.2998 128 -128c0 -55.7998 -35.9004 -102.7 -85.7002 -120.3zM96 25.5996c0 66.4004 48.2002 121.101 111.4 132.101l286.8 -221.7h-350.2c-26.5 0 -48 21.5 -48 48v41.5996z\" />\n    <glyph glyph-name=\"user-tag\" unicode=\"&#xf507;\" horiz-adv-x=\"640\" \nd=\"M630.6 83.0996c12.5 -12.5 12.5 -32.6992 -0.0996094 -45.1992l-92.5 -92.5c-12.5 -12.5 -32.7998 -12.5 -45.2998 0l-90.2998 90.1992c-12 12 -18.7002 28.2002 -18.7002 45.2002v79.2002c0 17.7002 14.2998 32 32 32h79.2998c17 0 33.2998 -6.7002 45.2998 -18.7002z\nM447.8 104.1c13.2998 0 24 10.8008 24 24c0 13.3008 -10.7002 24 -24 24s-24 -10.6992 -24 -24c0 -13.2998 10.7002 -24 24 -24zM224 192.1c-70.7002 0 -128 57.3008 -128 127.9c0 70.7002 57.2998 128 128 128s128 -57.2998 128 -127.9c0 -70.6992 -57.2998 -128 -128 -128\nzM351.8 80.9004c0 -25.7002 10 -49.8008 28.1006 -67.9004l58 -58c-8.80078 -11.4004 -22.4004 -18.9004 -37.9004 -18.9004h-352c-26.5 0 -48 21.5 -48 48v41.6006c0 74.2002 60.2002 134.399 134.4 134.5h16.6992c22.3008 -10.2002 46.9004 -16 72.9004 -16\ns50.7002 5.7998 72.9004 16h16.6992c13.3008 0 26 -2.60059 38.2002 -6.2002v-73.0996z\" />\n    <glyph glyph-name=\"user-tie\" unicode=\"&#xf508;\" horiz-adv-x=\"448\" \nd=\"M224 192c-70.7002 0 -128 57.2998 -128 128s57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128zM319.8 159.4c71.2998 -3.40039 128.2 -61.7002 128.2 -133.801v-41.5996c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v41.5996\nc0 72.1006 56.9004 130.4 128.2 133.801l47.7998 -191.4l32 136l-32 56h96l-32 -56l32 -136z\" />\n    <glyph glyph-name=\"users-cog\" unicode=\"&#xf509;\" horiz-adv-x=\"640\" \nd=\"M610.5 106.7l25.7998 -14.9004c2.90039 -1.7002 4.2998 -5.2002 3.2998 -8.5c-6.69922 -21.5996 -18.1992 -41.2002 -33.1992 -57.3994c-2.30078 -2.5 -6.10059 -3.10059 -9 -1.40039l-25.8008 14.9004c-10.8994 -9.30078 -23.3994 -16.5 -36.8994 -21.3008v-29.7998\nc0 -3.39941 -2.40039 -6.39941 -5.7002 -7.09961c-21.2002 -4.7998 -43.9004 -5 -66.2002 0c-3.2998 0.700195 -5.7002 3.7002 -5.7002 7.09961v29.7998c-13.5 4.80078 -26 12 -36.8994 21.3008l-25.7998 -14.9004c-3 -1.7002 -6.7002 -1.09961 -9 1.40039\nc-15 16.2998 -26.5 35.7998 -33.2002 57.3994c-1 3.2998 0.299805 6.7998 3.2998 8.5l25.7998 14.9004c-2.59961 14.0996 -2.59961 28.5 0 42.5996l-25.7998 14.9004c-2.90039 1.7002 -4.2998 5.2002 -3.2998 8.5c6.7002 21.5996 18.2002 41.2002 33.2002 57.3994\nc2.2998 2.5 6.09961 3.10059 9 1.40039l25.7998 -14.9004c10.8994 9.30078 23.3994 16.5 36.8994 21.3008v29.7998c0 3.39941 2.40039 6.39941 5.7002 7.09961c21.2002 4.7998 43.9004 5 66.2002 0c3.2998 -0.700195 5.7002 -3.7002 5.7002 -7.09961v-29.7998\nc13.5 -4.80078 26 -12 36.8994 -21.3008l25.8008 14.9004c3 1.7002 6.69922 1.09961 9 -1.40039c15 -16.1992 26.5 -35.7998 33.1992 -57.3994c1 -3.2998 -0.299805 -6.7998 -3.2998 -8.5l-25.7998 -14.9004c2.59961 -14.0996 2.59961 -28.5 0 -42.5996zM496 79.5\nc26.7998 0 48.5 21.7998 48.5 48.5s-21.7998 48.5 -48.5 48.5s-48.5 -21.7998 -48.5 -48.5s21.7002 -48.5 48.5 -48.5zM96 224c-35.2998 0 -64 28.7002 -64 64s28.7002 64 64 64s64 -28.7002 64 -64s-28.7002 -64 -64 -64zM320 192c-61.9004 0 -112 50.0996 -112 112\ns50 111.9 111.9 111.9c61.8994 0 112 -50.1006 112 -112c0 -17.2002 -4.2002 -33.4004 -11.2002 -48c-0.799805 -0.5 -1.60059 -0.900391 -2.40039 -1.40039l-7.89941 4.59961c-5.90039 3.5 -12.7002 5.30078 -19.6006 5.30078c-11 0 -21.5 -4.60059 -28.8994 -12.6006\nc-15.8008 -17.0996 -28 -37.5 -36.3008 -59.2002c-1.89941 -0.0996094 -3.69922 -0.599609 -5.59961 -0.599609zM425.2 -2.5v-9.2002c0 -7.5 2.5 -14.2998 6.2002 -20.2998h-255.4c-26.5 0 -48 21.5 -48 48v28.7998c0 63.6006 51.5996 115.2 115.3 115.2h8.2998\nc20.9004 -10 43.9004 -16 68.5 -16c3.30078 0 6.5 0.400391 9.80078 0.599609c2.7998 -3.09961 6 -5.89941 9.7998 -8.09961l7.89941 -4.59961c-0.0996094 -2.60059 -0.0996094 -5.2002 0 -7.80078c-0.899414 -0.599609 -36.5 -15.7998 -25.7998 -50.2998\nc7.90039 -25.7002 21.9004 -49.7998 40.2002 -69.5996c7.5 -8 18 -12.6006 28.9004 -12.6006c12.1992 0 19.2998 5 27.5 9.80078c2.19922 -1.30078 4.5 -2.7002 6.7998 -3.90039zM173.1 173.4c-40.2998 -22.1006 -68.8994 -62 -75.1992 -109.4h-65.9004\nc-17.7002 0 -32 14.2998 -32 32v32c0 35.2998 28.7002 64 64 64h64c17.5996 0 33.5 -7.09961 45.0996 -18.5996z\" />\n    <glyph glyph-name=\"balance-scale-left\" unicode=\"&#xf515;\" horiz-adv-x=\"640\" \nd=\"M528 0c8.83984 0 16 -7.16016 16.0098 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-224c-8.83984 0 -16 7.16016 -16 16v342.75c-4.55957 2 -8.91992 4.34961 -12.9902 7.12012l-142.05 -47.6299c-8.37988 -2.81055 -17.4502 1.7002 -20.2598 10.0801l-10.1699 30.3398\nc-2.80957 8.37988 1.7002 17.4502 10.0801 20.2598l128.39 43.0498c-0.419922 3.32031 -1.00977 6.60059 -1.00977 10.0303c0 44.1797 35.8203 80 80 80c29.6904 0 55.2998 -16.3604 69.1104 -40.3701l117.92 39.5303c8.37988 2.80957 17.4502 -1.7002 20.2598 -10.0801\nl10.1699 -30.3398c2.80957 -8.37988 -1.7002 -17.4502 -10.0801 -20.2598l-132 -44.2607c-7.28027 -21.25 -22.96 -38.5293 -43.3799 -47.4697v-294.75h176zM639.98 144c0 -44.1797 -57.29 -80 -127.98 -80s-128 35.8203 -128 80h0.0195312\nc0 15.6699 -2.0791 7.25 85.04 181.51c17.6807 35.3604 68.2207 35.29 85.8701 0c86.3906 -172.779 85.0508 -165.33 85.0508 -181.51zM440 160h144l-72 144zM170.93 197.51c86.3906 -172.779 85.0508 -165.33 85.0508 -181.51h0.0195312c0 -44.1797 -57.3096 -80 -128 -80\ns-128 35.8203 -128 80h0.0195312c0 15.6699 -2.0791 7.25 85.04 181.51c17.6807 35.3604 68.2207 35.29 85.8701 0zM56 32h144l-72 144z\" />\n    <glyph glyph-name=\"balance-scale-right\" unicode=\"&#xf516;\" horiz-adv-x=\"640\" \nd=\"M96 -16c0 8.83984 7.16016 16 16 16h175.99v294.76c-20.4199 8.93066 -36.1006 26.2207 -43.3799 47.4707l-132 44.2598c-8.37012 2.80957 -12.8906 11.8799 -10.0801 20.2598l10.1699 30.3398c2.80957 8.37012 11.8799 12.8906 20.2598 10.0801l117.93 -39.54\nc13.8105 24.0098 39.4199 40.3701 69.1104 40.3701c44.1797 0 80 -35.8203 80 -80c0 -3.42969 -0.589844 -6.70996 -1.00977 -10.0303l128.399 -43.0498c8.37012 -2.80957 12.8906 -11.8799 10.0801 -20.2598l-10.1699 -30.3398\nc-2.80957 -8.37012 -11.8799 -12.8906 -20.2598 -10.0801l-142.05 47.6299c-4.07031 -2.77051 -8.43066 -5.12012 -12.9902 -7.12012v-342.75c0 -8.83984 -7.16016 -16 -16 -16h-224c-8.83984 0 -16 7.16016 -16 16v32zM0 144c0 16.1797 -1.32031 8.73047 85.0596 181.51\nc17.6504 35.29 68.1904 35.3604 85.8701 0c87.1299 -174.26 85.0508 -165.84 85.0508 -181.51h0.0195312c0 -44.1797 -57.3096 -80 -128 -80s-128 35.8203 -128 80zM56 160h144l-72 144zM384.02 16c0 16.1797 -1.33984 8.73047 85.04 181.51\nc17.6504 35.29 68.1904 35.3604 85.8701 0c87.1299 -174.26 85.0508 -165.84 85.0508 -181.51h0.0195312c0 -44.1797 -57.3096 -80 -128 -80s-128 35.8203 -128 80h0.0195312zM440 32h144l-72 144z\" />\n    <glyph glyph-name=\"blender\" unicode=\"&#xf517;\" \nd=\"M416 64c35.3496 0 64 -28.6504 64 -64v-32c0 -17.6699 -14.3301 -32 -32 -32h-320c-17.6699 0 -32 14.3301 -32 32v32c0 35.3496 28.6504 64 64 64h256zM288 -32c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM328 384\nc-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h157.82l-17.46 -64h-140.36c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h131.64l-17.46 -64h-114.18c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h105.46l-17.46 -64\nh-256l-8.73047 96h-103.27c-26.5098 0 -48 21.4902 -48 48v160c0 26.5098 21.4902 48 48 48h464l-17.46 -64h-166.54zM64 256h81.46l-11.6396 128h-69.8203v-128z\" />\n    <glyph glyph-name=\"book-open\" unicode=\"&#xf518;\" horiz-adv-x=\"576\" \nd=\"M542.22 415.95c18.4199 1.04004 33.7803 -12.9902 33.7705 -30.7002v-337.84c0 -16.2305 -13.1299 -29.7705 -30.0205 -30.6602c-49.4697 -2.59961 -149.52 -12.0996 -218.7 -46.9199c-10.6494 -5.36035 -23.2793 1.93945 -23.2793 13.4902v363.87\nc0 5.2793 2.62988 10.3291 7.26953 13.1699c67.2402 41.1592 176.16 52.4795 230.96 55.5898zM264.73 360.36c4.64941 -2.85059 7.26953 -7.7002 7.26953 -12.9902v-364.12c0 -11.5195 -12.5898 -18.8096 -23.21 -13.46c-69.1797 34.8398 -169.28 44.3496 -218.771 46.9502\nc-16.8896 0.879883 -30.0195 14.4199 -30.0195 30.6602v337.85c0 17.71 15.3604 31.7402 33.7803 30.7002c54.7998 -3.12012 163.72 -14.4307 230.95 -55.5898z\" />\n    <glyph glyph-name=\"broadcast-tower\" unicode=\"&#xf519;\" horiz-adv-x=\"640\" \nd=\"M150.94 256c-7.01074 0 -13.46 4.5 -15.4004 11.2402c-4.90039 16.9697 -7.54004 34.6396 -7.54004 52.7598s2.63965 35.79 7.53027 52.7695c1.9502 6.74023 8.39941 11.2305 15.4102 11.2305h33.7295c11.0098 0 18.6201 -10.8301 14.8604 -21.1797\nc-4.93066 -13.5801 -7.5498 -27.9805 -7.5498 -42.8203s2.61914 -29.2402 7.5498 -42.8203c3.75 -10.3496 -3.85059 -21.1797 -14.8604 -21.1797h-33.7295zM89.9199 424.66c-16.54 -31.1406 -49.6104 -115.97 0.169922 -209.29\nc5.66016 -10.6299 -1.92969 -23.3701 -13.9502 -23.3701h-34.8398c-6.18945 0 -11.9902 3.50977 -14.6094 9.13965c-23.5703 50.5303 -26.6904 94.1104 -26.6904 118.86c0 42.3496 9.40039 82.46 25.8896 118.69c2.60059 5.71973 8.4707 9.30957 14.7402 9.30957h35.3301\nc12.0098 0 19.5996 -12.7197 13.96 -23.3398zM614.06 438.71c16.5205 -36.2295 25.9404 -76.3496 25.9404 -118.71s-9.42969 -82.4805 -25.96 -118.71c-2.59961 -5.70996 -8.45996 -9.29004 -14.7305 -9.29004h-35.2295c-12.1104 0 -19.6299 12.8398 -13.9102 23.5195\nc48.1396 89.8105 17.9902 174.94 -0.280273 209.23c-5.63965 10.5898 2.04004 23.25 14.0205 23.25h35.4199c6.26953 0 12.1299 -3.58008 14.7295 -9.29004zM489.06 384c7.01074 0 13.46 -4.49023 15.4004 -11.2402c4.90039 -16.9697 7.54004 -34.6396 7.54004 -52.7598\ns-2.62988 -35.79 -7.53027 -52.7598c-1.9502 -6.75 -8.38965 -11.2402 -15.4102 -11.2402h-33.7295c-11.0098 0 -18.6201 10.8301 -14.8604 21.1797c4.93066 13.5801 7.5498 27.9805 7.5498 42.8203s-2.61914 29.2402 -7.5498 42.8203\nc-3.75 10.3496 3.85059 21.1797 14.8604 21.1797h33.7295zM372.76 283.88l130.5 -313.41c3.39062 -8.14941 -0.459961 -17.5195 -8.60938 -20.9199l-29.5107 -12.3096c-8.14941 -3.40039 -17.5098 0.450195 -20.9092 8.60938l-49.2002 118.15h-150.07l-49.1904 -118.15\nc-3.38965 -8.14941 -12.7598 -12.0098 -20.9092 -8.60938l-29.5107 12.3096c-8.14941 3.40039 -12.0098 12.7705 -8.60938 20.9199l130.5 313.41c-7.0498 10.29 -11.2002 22.71 -11.2002 36.1201c0 35.3496 28.6396 64 63.96 64c35.3301 0 63.96 -28.6504 63.96 -64\nc0 -13.4102 -4.15039 -25.8301 -11.2002 -36.1201zM271.62 128h96.7598l-48.3799 116.19z\" />\n    <glyph glyph-name=\"broom\" unicode=\"&#xf51a;\" horiz-adv-x=\"640\" \nd=\"M256.47 231.23l86.7305 -109.181s-16.6006 -102.359 -76.5703 -150.12c-59.9697 -47.7793 -266.63 -34.1201 -266.63 -34.1201s3.7998 23.1406 11 55.4307l94.6201 112.17c3.96973 4.7002 -0.870117 11.6201 -6.65039 9.5l-60.3994 -22.0898\nc14.4395 41.6602 32.7197 80.04 54.5996 97.4697c59.9697 47.7598 163.3 40.9404 163.3 40.9404zM636.53 416.97c5.48926 -6.91016 4.33984 -16.96 -2.5498 -22.4395l-232.48 -177.8l34.0898 -42.9209c5.08008 -6.39941 1.66016 -15.9092 -6.33984 -17.5996\nl-58.7998 -12.4502l-86.7305 109.181l25.3301 54.5498c3.4502 7.41992 13.5 8.62012 18.5898 2.20996l34.1406 -42.9697l232.479 177.8c6.89062 5.48926 16.9199 4.33984 22.4102 -2.56055z\" />\n    <glyph glyph-name=\"chalkboard\" unicode=\"&#xf51b;\" horiz-adv-x=\"640\" \nd=\"M96 384v-352h-64v376c0 22.0596 17.9404 40 40 40h496c22.0596 0 40 -17.9404 40 -40v-376h-64v352h-448zM624 0c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-608c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h272v64h192v-64\nh144z\" />\n    <glyph glyph-name=\"chalkboard-teacher\" unicode=\"&#xf51c;\" horiz-adv-x=\"640\" \nd=\"M208 96c62.0596 0 112.33 -50.4805 112 -112.62c-0.139648 -26.2598 -21.7305 -47.3799 -48 -47.3799h-224c-26.2695 0 -47.8604 21.1201 -48 47.3799c-0.330078 62.1396 49.9404 112.62 112 112.62c2.38965 0 4.76953 -0.349609 7.0498 -1.08984\nc12.9697 -4.20996 26.6006 -6.91016 40.9502 -6.91016s27.9805 2.7002 40.9404 6.91016c2.2793 0.740234 4.66992 1.08984 7.05957 1.08984zM160 128c-53.0195 0 -96 42.9805 -96 96s42.9805 96 96 96s96 -42.9805 96 -96s-42.9805 -96 -96 -96zM592 448\nc26.4697 0 48 -22.25 48 -49.5898v-316.82c0 -27.3398 -21.5303 -49.5898 -48 -49.5898h-244.55c-6.57031 25.2695 -20.5898 47.3096 -39.6904 64h76.2402v64h128v-64h64v288h-352v-49.7998c-18.9004 11.0195 -40.5801 17.7998 -64 17.7998v46.4102\nc0 27.3398 21.5303 49.5898 48 49.5898h384z\" />\n    <glyph glyph-name=\"church\" unicode=\"&#xf51d;\" horiz-adv-x=\"640\" \nd=\"M464.46 201.32c9.63965 -5.78027 15.54 -16.2002 15.54 -27.4404v-237.88h-96v96c0 35.3496 -28.6504 64 -64 64s-64 -28.6504 -64 -64v-96h-96v237.88c0 10.0029 6.96191 22.2959 15.54 27.4404l112.46 67.4795v51.2002h-48c-8.83984 0 -16 7.16016 -16 16v32\nc0 8.83984 7.16016 16 16 16h48v48c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-48h48c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-48v-51.2002zM0 52.04c0.00195312 11.6455 8.68945 24.8252 19.3896 29.4199l108.61 46.54\nv-192h-112c-8.83984 0 -16 7.16016 -16 16v100.04zM620.61 81.46c11.7598 -5.0498 19.3896 -16.6201 19.3896 -29.4199v-100.04c0 -8.83984 -7.16016 -16 -16 -16h-112v192z\" />\n    <glyph glyph-name=\"coins\" unicode=\"&#xf51e;\" \nd=\"M0 42.7002c41.2998 -29.1006 116.8 -42.7002 192 -42.7002s150.7 13.5996 192 42.7002v-42.7002c0 -35.2998 -86 -64 -192 -64s-192 28.7002 -192 64v42.7002zM320 320c-106 0 -192 28.7002 -192 64s86 64 192 64s192 -28.7002 192 -64s-86 -64 -192 -64zM0 147.6\nc41.2998 -34 116.9 -51.5996 192 -51.5996s150.7 17.5996 192 51.5996v-51.5996c0 -35.2998 -86 -64 -192 -64s-192 28.7002 -192 64v51.5996zM416 136.6v63.6006c38.7002 6.89941 72.7998 18.0996 96 34.5v-42.7002c0 -23.7002 -38.7002 -44.2998 -96 -55.4004zM192 288\nc106 0 192 -35.7998 192 -80s-86 -80 -192 -80s-192 35.7998 -192 80s86 80 192 80zM411.3 231.7c-8.7998 23.7002 -30.5 42.8994 -60 57.2002c64.2002 3.19922 125.2 16.6992 160.7 41.7998v-42.7002c0 -24.2998 -40.7002 -45.5 -100.7 -56.2998z\" />\n    <glyph glyph-name=\"compact-disc\" unicode=\"&#xf51f;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM88 192c0 88.2002 71.7998 160 160 160v32c-105.9 0 -192 -86.0996 -192 -192h32zM248 96c53 0 96 43 96 96s-43 96 -96 96s-96 -43 -96 -96s43 -96 96 -96zM248 224\nc17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32z\" />\n    <glyph glyph-name=\"crow\" unicode=\"&#xf520;\" horiz-adv-x=\"640\" \nd=\"M544 416c53.0195 0 96 -28.6504 96 -64l-96 -16v-80c0 -87.2598 -58.2598 -160.8 -137.97 -184.14l41.2393 -111.53c2.27051 -6.23047 -0.939453 -13.1104 -7.16992 -15.3799l-22.5498 -8.20996c-6.22949 -2.27051 -13.1094 0.939453 -15.3799 7.16992l-44.5098 120.38\nc-1.90039 -0.0595703 -3.75 -0.290039 -5.66016 -0.290039h-39.0596l38.3291 -103.68c2.27051 -6.23047 -0.939453 -13.1104 -7.16992 -15.3799l-22.5498 -8.20996c-6.22949 -2.27051 -13.1094 0.939453 -15.3799 7.16992l-44.4102 120.1h-96.4902l-121.539 -60.7695\nc-20.0908 -10.04 -43.7305 4.56934 -43.7305 27.0293c0.00195312 8.33984 5.41797 19.168 12.0898 24.1699l371.91 292.59v20.9805c0 44.1797 35.8203 80 80 80c26.0898 0 49.04 -12.6797 63.6396 -32h16.3604zM464 344c13.25 0 24 10.75 24 24c0 13.2598 -10.75 24 -24 24\ns-24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24z\" />\n    <glyph glyph-name=\"crown\" unicode=\"&#xf521;\" horiz-adv-x=\"640\" \nd=\"M528 0c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-416c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h416zM592 320c26.5 0 48 -21.5 48 -48s-21.5 -48 -48 -48c-2.59961 0 -5.2002 0.400391 -7.7002 0.799805l-72.2998 -192.8h-384\nl-72.2998 192.8c-2.5 -0.399414 -5.10059 -0.799805 -7.7002 -0.799805c-26.5 0 -48 21.5 -48 48s21.5996 48 48.0996 48s48 -21.5 48 -48c0 -7.09961 -1.69922 -13.7998 -4.39941 -19.7998l72.2998 -43.4004c15.2998 -9.2002 35.2998 -4 44.2002 11.6006l81.5 142.6\nc-10.7002 8.7998 -17.7002 22 -17.7002 37c0 26.5 21.5 48 48 48s48 -21.5 48 -48c0 -15 -7 -28.2002 -17.7002 -37l81.5 -142.6c8.90039 -15.6006 28.7998 -20.8008 44.2002 -11.6006l72.4004 43.4004c-2.80078 6.09961 -4.40039 12.7002 -4.40039 19.7998\nc0 26.5 21.5 48 48 48z\" />\n    <glyph glyph-name=\"dice\" unicode=\"&#xf522;\" horiz-adv-x=\"640\" \nd=\"M592 256c26.5098 0 48 -21.4902 48 -48v-224c0 -26.5098 -21.4902 -48 -48 -48h-224c-26.5098 0 -48 21.4902 -48 48v46.4199l136.26 136.26c24.1201 24.1201 29.6904 59.7305 17 89.3203h118.74zM480 72c13.25 0 24 10.75 24 24c0 13.2598 -10.75 24 -24 24\ns-24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24zM433.63 258.7c19.1602 -19.1602 19.1602 -50.2305 0 -69.4004l-174.939 -174.93c-19.1602 -19.1602 -50.2305 -19.1602 -69.3906 0l-174.93 174.939c-19.1602 19.1602 -19.1602 50.2305 0 69.3906l174.939 174.93\nc19.1602 19.1602 50.2305 19.1602 69.3906 0zM96 200c13.25 0 24 10.75 24 24c0 13.2598 -10.75 24 -24 24s-24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24zM224 72c13.25 0 24 10.75 24 24c0 13.2598 -10.75 24 -24 24s-24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24z\nM224 200c13.25 0 24 10.75 24 24c0 13.2598 -10.75 24 -24 24s-24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24zM224 328c13.25 0 24 10.75 24 24c0 13.2598 -10.75 24 -24 24s-24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24zM352 200c13.25 0 24 10.75 24 24\nc0 13.2598 -10.75 24 -24 24s-24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24z\" />\n    <glyph glyph-name=\"dice-five\" unicode=\"&#xf523;\" horiz-adv-x=\"448\" \nd=\"M384 416c35.3496 0 64 -28.6504 64 -64v-320c0 -35.3496 -28.6504 -64 -64 -64h-320c-35.3496 0 -64 28.6504 -64 64v320c0 35.3496 28.6504 64 64 64h320zM128 64c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM128 256\nc17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM224 160c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM320 64c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32\ns-32 -14.3301 -32 -32s14.3301 -32 32 -32zM320 256c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z\" />\n    <glyph glyph-name=\"dice-four\" unicode=\"&#xf524;\" horiz-adv-x=\"448\" \nd=\"M384 416c35.3496 0 64 -28.6504 64 -64v-320c0 -35.3496 -28.6504 -64 -64 -64h-320c-35.3496 0 -64 28.6504 -64 64v320c0 35.3496 28.6504 64 64 64h320zM128 64c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM128 256\nc17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM320 64c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM320 256c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32\ns-32 -14.3301 -32 -32s14.3301 -32 32 -32z\" />\n    <glyph glyph-name=\"dice-one\" unicode=\"&#xf525;\" horiz-adv-x=\"448\" \nd=\"M384 416c35.3496 0 64 -28.6504 64 -64v-320c0 -35.3496 -28.6504 -64 -64 -64h-320c-35.3496 0 -64 28.6504 -64 64v320c0 35.3496 28.6504 64 64 64h320zM224 160c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z\" />\n    <glyph glyph-name=\"dice-six\" unicode=\"&#xf526;\" horiz-adv-x=\"448\" \nd=\"M384 416c35.3496 0 64 -28.6504 64 -64v-320c0 -35.3496 -28.6504 -64 -64 -64h-320c-35.3496 0 -64 28.6504 -64 64v320c0 35.3496 28.6504 64 64 64h320zM128 64c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM128 160\nc17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM128 256c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM320 64c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32\ns-32 -14.3301 -32 -32s14.3301 -32 32 -32zM320 160c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM320 256c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z\" />\n    <glyph glyph-name=\"dice-three\" unicode=\"&#xf527;\" horiz-adv-x=\"448\" \nd=\"M384 416c35.3496 0 64 -28.6504 64 -64v-320c0 -35.3496 -28.6504 -64 -64 -64h-320c-35.3496 0 -64 28.6504 -64 64v320c0 35.3496 28.6504 64 64 64h320zM128 256c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM224 160\nc17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM320 64c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z\" />\n    <glyph glyph-name=\"dice-two\" unicode=\"&#xf528;\" horiz-adv-x=\"448\" \nd=\"M384 416c35.3496 0 64 -28.6504 64 -64v-320c0 -35.3496 -28.6504 -64 -64 -64h-320c-35.3496 0 -64 28.6504 -64 64v320c0 35.3496 28.6504 64 64 64h320zM128 256c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM320 64\nc17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z\" />\n    <glyph glyph-name=\"divide\" unicode=\"&#xf529;\" horiz-adv-x=\"448\" \nd=\"M224 96c35.3496 0 64 -28.6504 64 -64s-28.6504 -64 -64 -64s-64 28.6504 -64 64s28.6504 64 64 64zM224 288c-35.3496 0 -64 28.6504 -64 64s28.6504 64 64 64s64 -28.6504 64 -64s-28.6504 -64 -64 -64zM416 240c17.6699 0 32 -14.3301 32 -32v-32\nc0 -17.6699 -14.3301 -32 -32 -32h-384c-17.6699 0 -32 14.3301 -32 32v32c0 17.6699 14.3301 32 32 32h384z\" />\n    <glyph glyph-name=\"door-closed\" unicode=\"&#xf52a;\" horiz-adv-x=\"640\" \nd=\"M624 0c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-608c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h111.99v397.2c0 28.0195 21.5293 50.7998 48 50.7998h288.01c26.4697 0 48 -22.7803 48 -50.7998v-397.2h112zM415.99 160\nc17.6797 0 32.0098 14.3301 32 32c0 17.6699 -14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z\" />\n    <glyph glyph-name=\"door-open\" unicode=\"&#xf52b;\" horiz-adv-x=\"640\" \nd=\"M624 0c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-144v384h-96v64h112c26.4697 0 48 -22.1904 48 -49.4502v-334.55h80zM312.24 446.99c20.2002 5.24023 39.7598 -10.5898 39.7598 -32.1699v-478.82h-336c-8.83984 0 -16 7.16016 -16 16v32\nc0 8.83984 7.16016 16 16 16h80v365.08c0 15.2197 9.99023 28.4795 24.2402 32.1699zM264 160c13.25 0 24 14.3301 24 32s-10.75 32 -24 32s-24 -14.3301 -24 -32s10.75 -32 24 -32z\" />\n    <glyph glyph-name=\"equals\" unicode=\"&#xf52c;\" horiz-adv-x=\"448\" \nd=\"M416 144c17.6699 0 32 -14.3301 32 -32v-32c0 -17.6699 -14.3301 -32 -32 -32h-384c-17.6699 0 -32 14.3301 -32 32v32c0 17.6699 14.3301 32 32 32h384zM416 336c17.6699 0 32 -14.3301 32 -32v-32c0 -17.6699 -14.3301 -32 -32 -32h-384c-17.6699 0 -32 14.3301 -32 32\nv32c0 17.6699 14.3301 32 32 32h384z\" />\n    <glyph glyph-name=\"feather\" unicode=\"&#xf52d;\" \nd=\"M467.14 403.16c50.5703 -50.5205 61.7002 -124.9 16.2607 -199.36l-131.54 -43.7998h97.7793c-9.92969 -10.6797 3.68066 3.07031 -46.3096 -46.8604l-147.57 -49.1396h98.1904c-74.9502 -73.1104 -194.53 -70.6504 -246.83 -54.9404l-66.1006 -66.0293\nc-9.37988 -9.37012 -24.5996 -9.37012 -33.9795 0s-9.37988 24.5693 0 33.9395l259.52 259.25c6.25 6.25 6.25 16.3799 0 22.6299s-16.3896 6.25 -22.6494 0l-178.44 -178.25c-6.75 60.3408 3.18066 150.78 63.6406 211.17c24.7695 24.7402 7.13965 7.14062 85.75 85.6602\nc90.6094 90.5107 189.729 88.21 252.279 25.7305z\" />\n    <glyph glyph-name=\"frog\" unicode=\"&#xf52e;\" horiz-adv-x=\"576\" \nd=\"M446.53 350.57c0 0 58.4297 -19.0605 98.9893 -41.2803c18.7607 -10.2803 30.4805 -29.8301 30.4805 -51.2305v-0.00292969c0 -18.8037 -13.3105 -41.5283 -29.71 -50.7266l-154.44 -86.6504l98.5205 -104.68h53.6299c17.6699 0 32 -14.3301 32 -32\nc0 -8.83984 -7.16016 -16 -16 -16h-90.3799l-118.53 125.94c5.07031 54.1494 -29.9297 85.0596 -40.7998 93.21c-36.8496 27.6191 -88.29 27.6592 -125.13 0l-34.7803 -26.0908c-7.07031 -5.2998 -8.49023 -15.3291 -3.18945 -22.4092\nc5.31934 -7.10059 15.3496 -8.5 22.4092 -3.19043l32.7607 24.5898c20.6895 15.5303 48.3496 20.8105 72.2393 10.8799c44.0605 -18.3193 57.8506 -70.3701 33.71 -106.6l-35.7998 -48.3301h79.4902c17.6699 0 32 -14.3301 32 -32c0 -8.83984 -7.16016 -16 -16 -16h-304\nc-34.9199 0 -63.8896 28.0996 -64 63.0195c-0.5 166.86 126.75 304.021 289.46 319.44c6.82031 37.25 39.3096 65.54 78.54 65.54c39.1904 0 71.6699 -28.2305 78.5303 -65.4297zM368 312c13.25 0 24 10.75 24 24c0 13.2598 -10.75 24 -24 24\nc-13.2598 0 -24 -10.7402 -24 -24c0 -13.25 10.7402 -24 24 -24z\" />\n    <glyph glyph-name=\"gas-pump\" unicode=\"&#xf52f;\" \nd=\"M336 0c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-320c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h320zM493.2 340.7c12 -12 18.7998 -28.2998 18.7998 -45.2998v-223.4c0 -42.2002 -36.5 -76 -79.5 -71.7002\nc-37.5 3.90039 -64.5 38.2002 -64.5 75.9004v27.7998c0 22.0996 -17.9004 40 -40 40h-8v-112h-288v352c0 35.2998 28.7002 64 64 64h160c35.2998 0 64 -28.7002 64 -64v-192h8c48.5996 0 88 -39.4004 88 -88v-32c0 -13.2002 10.7998 -24 24 -24s24 10.7998 24 24v160.8\nc-27.0996 3.90039 -48 27.1006 -48 55.2002v62.0996l-37.7002 37.7002c-6.2002 6.2002 -6.2002 16.4004 0 22.6006l11.2998 11.2998c6.2002 6.2002 16.4004 6.2002 22.6006 0zM256 256v128h-160v-128h160z\" />\n    <glyph glyph-name=\"glasses\" unicode=\"&#xf530;\" horiz-adv-x=\"576\" \nd=\"M574.1 167.63c1.26074 -5.07031 1.90039 -10.2695 1.90039 -15.5v-70.25c0 -62.8896 -51.5801 -113.88 -115.2 -113.88h-37.1201c-60.2793 0 -110.37 45.9404 -114.87 105.37l-2.92969 38.6299h-35.75l-2.92969 -38.6299\nc-4.50977 -59.4297 -54.6006 -105.37 -114.88 -105.37h-37.1201c-63.6201 0 -115.2 50.9902 -115.2 113.89v70.25c0.000976562 4.33984 0.852539 11.2793 1.90039 15.4902l45.3398 181.73c5.91016 23.6895 21.5898 44.0293 43 55.7998\nc21.4395 11.7402 46.9697 14.1094 70.1895 6.33008l15.25 -5.08008c8.39062 -2.79004 12.9199 -11.8604 10.1201 -20.2402l-5.05957 -15.1797c-2.79004 -8.37988 -11.8506 -12.9102 -20.2305 -10.1201l-13.1699 4.38965\nc-10.8701 3.62012 -22.9902 3.57031 -33.1494 -1.72949c-10.29 -5.36035 -17.5908 -14.5605 -20.3809 -25.8105l-38.46 -153.83c22.1904 6.81055 49.79 12.46 81.21 12.46c34.7803 0 73.9902 -7.00977 114.86 -26.75h73.1797\nc40.8701 19.7207 80.0801 26.7402 114.851 26.7402c31.4102 0 59.0098 -5.64941 81.2002 -12.46l-38.46 153.82c-2.80078 11.2598 -10.0801 20.4502 -20.3701 25.8193c-10.1602 5.30078 -22.29 5.35059 -33.1602 1.73047l-13.1797 -4.38965\nc-8.38086 -2.79004 -17.4404 1.73926 -20.2305 10.1201l-5.05957 15.1797c-2.80078 8.37988 1.72949 17.4502 10.1191 20.2402l15.25 5.08008c23.2207 7.7793 48.75 5.39941 70.1904 -6.33008c21.4102 -11.7607 37.0898 -32.1104 43 -55.8105zM203.38 78.21l3.12988 41.2197\nc-22.6699 8.58984 -46.0693 12.9199 -69.9297 12.9199c-29.1602 0 -54.46 -6.42969 -72.5801 -12.9199v-37.54c0 -27.5098 22.9697 -49.8896 51.2002 -49.8896h37.1201c26.6602 0 49.0898 20.2998 51.0596 46.21zM512 81.8799l-0.00976562 37.54\nc-18.1201 6.49023 -43.4307 12.9297 -72.5498 12.9297c-23.8701 0 -47.2803 -4.33008 -69.9502 -12.9199l3.12988 -41.2197c1.95996 -25.9102 24.3896 -46.21 51.0596 -46.21h37.1201c28.2305 0 51.2002 22.3701 51.2002 49.8799z\" />\n    <glyph glyph-name=\"greater-than\" unicode=\"&#xf531;\" horiz-adv-x=\"384\" \nd=\"M365.52 238.15c11.2803 -5.25 18.4805 -16.5605 18.4902 -29.0107v-34.2295c-0.00195312 -11.2529 -8.28027 -24.2451 -18.4795 -29l-306.471 -142.91c-16.0195 -7.46973 -35.0596 -0.540039 -42.5293 15.4805l-13.5205 29\nc-7.46973 16.0195 -0.540039 35.0596 15.4805 42.5293l218.47 101.891l-218.43 101.85c-16.0605 7.49023 -23.0107 26.5801 -15.5205 42.6396l13.5703 29.0801c7.49023 16.0605 26.5801 23.0107 42.6396 15.5205z\" />\n    <glyph glyph-name=\"greater-than-equal\" unicode=\"&#xf532;\" horiz-adv-x=\"448\" \nd=\"M55.2197 340.31c-18.29 6 -27.7393 24.2607 -21.0996 40.79l12.0303 29.9199c6.63965 16.5303 26.8594 25.0605 45.1494 19.0605l301.72 -119.98c13.7705 -4.51953 22.9805 -16.6094 22.9805 -30.1699v-15.96c0 -13.5596 -9.20996 -25.6494 -22.9805 -30.1699\nl-301.409 -119.859c-18.3906 -6.04004 -38.7002 2.54004 -45.3799 19.1494l-12.0908 30.0801c-6.67969 16.6104 2.81055 34.9697 21.2002 41l175.44 68.0498zM424 48c13.25 0 24 -10.7402 24 -24v-48c0 -13.25 -10.75 -24 -24 -24h-400c-13.25 0 -24 10.75 -24 24v48\nc0 13.2598 10.75 24 24 24h400z\" />\n    <glyph glyph-name=\"helicopter\" unicode=\"&#xf533;\" horiz-adv-x=\"640\" \nd=\"M304 64c-8.83105 0 -20.3018 5.73438 -25.5996 12.7998l-86.4004 115.2l-160 64l-31.5098 108.12c-2.53027 10.0996 5.10938 19.8799 15.5195 19.8799h39.9902c5.03027 0 9.78027 -2.37012 12.7998 -6.40039l43.2002 -57.5996h208v64h-176c-8.83984 0 -16 7.16016 -16 16\nv32c0 8.83984 7.16016 16 16 16h416c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-176v-64c123.71 0 224 -100.29 224 -224c0 -17.6699 -14.3301 -32 -32 -32h-272zM416 252.49v-124.49h124.79c-12.7598 62.5596 -62.2402 111.7 -124.79 124.49z\nM635.37 -10.8096c6.58984 -6.61035 6.04004 -17.5205 -0.980469 -23.6602c-33.1494 -29.0498 -53.5693 -29.5205 -68.4492 -29.5205h-325.94c-8.83984 0 -16 7.18066 -16 16.0303v32.0596c0 8.85059 7.16016 16.0303 16 16.0303h325.94\nc10.7998 0 17.5498 4.48047 24.6396 11.25c6.40039 6.11035 16.3896 6.27051 22.6396 0.00976562z\" />\n    <glyph glyph-name=\"infinity\" unicode=\"&#xf534;\" horiz-adv-x=\"640\" \nd=\"M471.1 352c93.1006 0 168.9 -71.7998 168.9 -160s-75.7998 -160 -168.9 -160c-66.0996 0 -117.8 41.2998 -151.1 78.5996c-33.2998 -37.2998 -85 -78.5996 -151.1 -78.5996c-93.1006 0 -168.9 71.7998 -168.9 160s75.7998 160 168.9 160\nc66.0996 0 117.8 -41.2998 151.1 -78.5996c33.2998 37.2998 85 78.5996 151.1 78.5996zM168.9 128c38.0996 0 73.5996 36.4004 94 64c-20.6006 27.9004 -55.8008 64 -94 64c-40.2002 0 -72.9004 -28.7002 -72.9004 -64s32.7002 -64 72.9004 -64zM471.1 128\nc40.2002 0 72.9004 28.7002 72.9004 64s-32.7002 64 -72.9004 64c-38.0996 0 -73.5996 -36.4004 -94 -64c20.6006 -27.9004 55.8008 -64 94 -64z\" />\n    <glyph glyph-name=\"kiwi-bird\" unicode=\"&#xf535;\" horiz-adv-x=\"576\" \nd=\"M575.81 230.02c0.300781 -5.7793 0.160156 -246.02 0.160156 -246.02c0 -7.30957 -4.95996 -13.7002 -12.0498 -15.5c-1.30957 -0.339844 -2.63965 -0.5 -3.9502 -0.5c-5.75 0 -11.1895 3.11035 -14.0498 8.33984l-74.4102 136.44\nc-7.04004 -0.470703 2.43066 -0.780273 -23.0498 -0.780273c-54.5996 0 -106.39 -19.25 -152.13 -49.0596c-12.46 -8.12012 -26.0996 -14.4502 -40.3398 -19.5107v-59.4297c0 -8.83984 -7.16016 -16 -16 -16h-16c-8.83984 0 -16 7.16016 -16 16v49.1797\nc-5.32031 -0.449219 -10.5605 -1.17969 -16 -1.17969c-16.6006 0 -32.6406 2.2998 -48 6.25977v-54.2598c0 -8.83984 -7.16016 -16 -16 -16h-16c-8.83984 0 -16 7.16016 -16 16v73.9902c-57.3105 33.21 -95.9502 95.0596 -95.9902 166.01\nc-0.0800781 145.76 129.3 182.88 147.31 186.94c57.1709 12.9199 111.221 0.259766 153.21 -28.7002c43.4902 -29.9902 94.9209 -46.2402 147.74 -46.2402h9.37012c60.6504 0 115.01 -45.4102 118.18 -105.98zM463.97 200c13.25 0 24 10.75 24 24\nc0 13.2598 -10.75 24 -24 24s-24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24zM543.97 46.75v99.0596c-11.1299 -11.3799 -24.7393 -20.1494 -39.8594 -25.9795z\" />\n    <glyph glyph-name=\"less-than\" unicode=\"&#xf536;\" horiz-adv-x=\"384\" \nd=\"M365.46 90.2598c16.0703 -7.49023 23.0205 -26.5801 15.5303 -42.6396l-13.5605 -29.0801c-7.48926 -16.0596 -26.5801 -23.0098 -42.6396 -15.5205l-306.31 142.83c-11.2705 5.25 -18.4805 16.5605 -18.4805 29v34.2402c0.00488281 11.252 8.2832 24.2432 18.4805 29\nl306.46 142.91c16.0195 7.46973 35.0596 0.540039 42.5293 -15.4805l13.5205 -29c7.46973 -16.0195 0.540039 -35.0596 -15.4805 -42.5293l-218.47 -101.88z\" />\n    <glyph glyph-name=\"less-than-equal\" unicode=\"&#xf537;\" horiz-adv-x=\"448\" \nd=\"M54.9805 233.8c-13.7705 4.52051 -22.9805 16.6104 -22.9805 30.1699v15.96c0 13.5703 9.20996 25.6602 22.9805 30.1807l301.71 119.96c18.29 6 38.5098 -2.53027 45.1494 -19.0605l12.0303 -29.9199c6.63965 -16.5195 -2.81055 -34.79 -21.1006 -40.79\nl-175.56 -68.0898l175.44 -68.0498c18.3896 -6.03027 27.8896 -24.3906 21.21 -41l-12.0908 -30.0801c-6.66992 -16.6104 -26.9893 -25.1797 -45.3799 -19.1504zM424 48c13.25 0 24 -10.7402 24 -24v-48c0 -13.25 -10.75 -24 -24 -24h-400c-13.25 0 -24 10.75 -24 24v48\nc0 13.2598 10.75 24 24 24h400z\" />\n    <glyph glyph-name=\"memory\" unicode=\"&#xf538;\" horiz-adv-x=\"640\" \nd=\"M640 317.06c-18.5996 -6.60938 -32 -24.1895 -32 -45.0596s13.4004 -38.4502 32 -45.0596v-98.9404h-640v98.9404c18.5996 6.60938 32 24.1895 32 45.0596s-13.4004 38.4502 -32 45.0596v34.9404c0 17.6699 14.3301 32 32 32h576c17.6699 0 32 -14.3301 32 -32v-34.9404z\nM224 192v128h-64v-128h64zM352 192v128h-64v-128h64zM480 192v128h-64v-128h64zM0 0v96h640v-96h-64v26.6699c0 8.83984 -7.16016 16 -16 16s-16 -7.16016 -16 -16v-26.6699h-128v26.6699c0 8.83984 -7.16016 16 -16 16s-16 -7.16016 -16 -16v-26.6699h-128v26.6699\nc0 8.83984 -7.16016 16 -16 16s-16 -7.16016 -16 -16v-26.6699h-128v26.6699c0 8.83984 -7.16016 16 -16 16s-16 -7.16016 -16 -16v-26.6699h-64z\" />\n    <glyph glyph-name=\"microphone-alt-slash\" unicode=\"&#xf539;\" horiz-adv-x=\"640\" \nd=\"M633.82 -10.0996c6.97949 -5.43066 8.22949 -15.4805 2.81934 -22.4502l-19.6396 -25.2705c-5.42969 -6.97949 -15.4805 -8.23926 -22.46 -2.80957l-588.36 454.729c-6.97949 5.43066 -8.22949 15.4805 -2.80957 22.4502l19.6396 25.2705\nc5.41992 6.97949 15.4805 8.22949 22.46 2.80957l178.53 -138v45.3604c0 53.0195 42.9805 96 96 96s96 -42.9805 96 -96h-85.3301c-5.88965 0 -10.6699 -3.58008 -10.6699 -8v-16c0 -4.41992 4.78027 -8 10.6699 -8h85.3301v-32h-85.3301\nc-5.88965 0 -10.6699 -3.58008 -10.6699 -8v-16c0 -4.41992 4.78027 -8 10.6699 -8h85.3301v-32h-85.0596l41.3994 -32h43.6699c0 -10.4502 -2.17969 -20.2705 -5.2793 -29.6699l26.5498 -20.5205c6.75977 15.4004 10.7197 32.2803 10.7197 50.2002v48\nc0 8.83984 7.16016 16 16 16h16c8.83984 0 16 -7.16016 16 -16v-48c0 -28.9805 -7.25977 -56.21 -19.7402 -80.3301zM400 -16c8.83984 0 16 -7.16016 16 -16v-16c0 -8.83984 -7.16016 -16 -16 -16h-160c-8.83984 0 -16 7.16016 -16 16v16c0 8.83984 7.16016 16 16 16h56\nv34.1504c-88.0303 12.1396 -152 92.0498 -152 181.689v6.85059l52.0303 -40.2207c12.4395 -53.2197 55.3301 -96.3994 111.18 -101.85c6.94043 -0.669922 13.6396 -0.200195 20.3496 0.200195l50.4004 -38.96c-10.8604 -3.80078 -22.25 -6.45996 -33.96 -8.08008v-33.7803\nh56z\" />\n    <glyph glyph-name=\"money-bill-wave\" unicode=\"&#xf53a;\" horiz-adv-x=\"640\" \nd=\"M621.16 393.54c11.6094 -4.87012 18.8398 -16.8301 18.8496 -29.4697v-317.25c0 -18.4902 -15.04 -31.8105 -32.25 -31.8105c-3.39941 0 -6.87988 0.520508 -10.3496 1.62012c-30.8906 9.7998 -61.7598 13.7197 -92.6504 13.7197\nc-123.17 0 -246.34 -62.3496 -369.51 -62.3496c-38.7998 0 -77.6201 6.19043 -116.41 22.4697c-11.6094 4.86035 -18.8398 16.8301 -18.8398 29.46v317.261c0 18.4893 15.04 31.8096 32.25 31.8096c3.40039 0 6.87988 -0.519531 10.3496 -1.62012\nc30.8906 -9.7998 61.7607 -13.7197 92.6504 -13.7197c123.17 0 246.33 62.3496 369.5 62.3398c38.7998 0 77.6201 -6.19043 116.41 -22.46zM48 315.78v-60.4707c31 0 56.8398 22.1504 62.7197 51.54c-21.5996 1.36035 -42.5996 3.89062 -62.7197 8.93066zM48 30.7803\nc20.1201 -7.31055 41.1797 -11.8105 63.71 -13.6201c-1.53027 34.1299 -29.3398 61.3994 -63.71 61.3994v-47.7793zM320 96c44.1699 0 80 42.9697 80 96c0 53.0195 -35.8203 96 -80 96s-80 -42.9805 -80 -96c0 -53.0098 35.8096 -96 80 -96zM592 68.2197v57.7207\nc-26.8203 -3.40039 -48.4502 -23.2002 -54.3203 -49.2803c18.6104 -1.58984 36.8008 -4.0498 54.3203 -8.44043zM592 304.33v48.8896c-17.7197 6.43066 -36.2695 10.4902 -55.8096 12.6602c0.949219 -31.8496 24.9199 -57.6396 55.8096 -61.5498z\" />\n    <glyph glyph-name=\"money-bill-wave-alt\" unicode=\"&#xf53b;\" horiz-adv-x=\"640\" \nd=\"M621.16 393.54c11.6094 -4.87012 18.8398 -16.8301 18.8496 -29.4697v-317.25c0 -18.4902 -15.04 -31.8105 -32.25 -31.8105c-3.39941 0 -6.87988 0.520508 -10.3496 1.62012c-30.8906 9.7998 -61.7598 13.7197 -92.6504 13.7197\nc-123.17 0 -246.34 -62.3496 -369.51 -62.3496c-38.7998 0 -77.6201 6.19043 -116.41 22.4697c-11.6094 4.86035 -18.8398 16.8301 -18.8398 29.46v317.261c0 18.4893 15.04 31.8096 32.25 31.8096c3.40039 0 6.87988 -0.519531 10.3496 -1.62012\nc30.8906 -9.7998 61.7607 -13.7197 92.6504 -13.7197c123.17 0 246.33 62.3496 369.5 62.3398c38.7998 0 77.6201 -6.19043 116.41 -22.46zM320 96c44.1699 0 80 42.9697 80 96c0 53.0195 -35.8203 96 -80 96s-80 -42.9805 -80 -96c0 -53.0098 35.8096 -96 80 -96z\" />\n    <glyph glyph-name=\"money-check\" unicode=\"&#xf53c;\" horiz-adv-x=\"640\" \nd=\"M0 0v320h640v-320c0 -17.6699 -14.3301 -32 -32 -32h-576c-17.6699 0 -32 14.3301 -32 32zM448 208v-32c0 -8.83984 7.16016 -16 16 -16h96c8.83984 0 16 7.16016 16 16v32c0 8.83984 -7.16016 16 -16 16h-96c-8.83984 0 -16 -7.16016 -16 -16zM448 88v-16\nc0 -4.41992 3.58008 -8 8 -8h112c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-112c-4.41992 0 -8 -3.58008 -8 -8zM64 184v-16c0 -4.41992 3.58008 -8 8 -8h304c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-304c-4.41992 0 -8 -3.58008 -8 -8z\nM64 88v-16c0 -4.41992 3.58008 -8 8 -8h176c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-176c-4.41992 0 -8 -3.58008 -8 -8zM624 416c8.83984 0 16 -7.16016 16 -16v-48h-640v48c0 8.83984 7.16016 16 16 16h608z\" />\n    <glyph glyph-name=\"money-check-alt\" unicode=\"&#xf53d;\" horiz-adv-x=\"640\" \nd=\"M608 416c17.6699 0 32 -14.3301 32 -32v-384c0 -17.6699 -14.3301 -32 -32 -32h-576c-17.6699 0 -32 14.3301 -32 32v384c0 17.6699 14.3301 32 32 32h576zM176 120.12c23.6201 0.629883 42.6699 20.54 42.6699 45.0703c0 19.9697 -12.9902 37.8096 -31.5801 43.3896\nl-45 13.5c-5.16016 1.54004 -8.76953 6.78027 -8.76953 12.7295c0 7.27051 5.2998 13.1904 11.7998 13.1904h28.1104c4.55957 0 8.94922 -1.29004 12.8193 -3.71973c3.24023 -2.03027 7.36035 -1.91016 10.1299 0.729492l11.75 11.21\nc3.53027 3.37012 3.33008 9.20996 -0.569336 12.1406c-9.10059 6.83984 -20.0801 10.7695 -31.3701 11.3496v16.29c0 4.41992 -3.58008 8 -8 8h-16c-4.41992 0 -8 -3.58008 -8 -8v-16.1201c-23.6201 -0.629883 -42.6699 -20.5498 -42.6699 -45.0703\nc0 -19.9697 12.9893 -37.8096 31.5801 -43.3896l45 -13.5c5.15918 -1.54004 8.76953 -6.78027 8.76953 -12.7295c0 -7.27051 -5.2998 -13.1904 -11.7998 -13.1904h-28.1104c-4.55957 0 -8.9502 1.2998 -12.8193 3.71973\nc-3.24023 2.03027 -7.36035 1.91016 -10.1309 -0.729492l-11.75 -11.21c-3.5293 -3.37012 -3.3291 -9.20996 0.570312 -12.1406c9.10059 -6.83008 20.0801 -10.7695 31.3701 -11.3496v-16.29c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v16.1201zM416 136v16\nc0 4.41992 -3.58008 8 -8 8h-112c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h112c4.41992 0 8 3.58008 8 8zM576 136v16c0 4.41992 -3.58008 8 -8 8h-80c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h80c4.41992 0 8 3.58008 8 8z\nM576 232v16c0 4.41992 -3.58008 8 -8 8h-272c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h272c4.41992 0 8 3.58008 8 8z\" />\n    <glyph glyph-name=\"not-equal\" unicode=\"&#xf53e;\" horiz-adv-x=\"448\" \nd=\"M416 240h-98.4199l-74.5303 -96h172.95c17.6699 0 32 -14.3301 32 -32v-32c0 -17.6699 -14.3301 -32 -32 -32h-247.48l-82.0898 -105.73c-5.37012 -7.00977 -15.4102 -8.34961 -22.4297 -2.96973l-25.4102 19.46c-7.00977 5.37988 -8.33984 15.4199 -2.96973 22.4307\nl51.8701 66.8096h-55.4902c-17.6699 0 -32 14.3301 -32 32v32c0 17.6699 14.3301 32 32 32h130.03l74.5293 96h-204.56c-17.6699 0 -32 14.3301 -32 32v32c0 17.6699 14.3301 32 32 32h279.09l82.0801 105.73c5.37988 7.00977 15.4199 8.34961 22.4404 2.96973\nl25.4092 -19.46c7.01074 -5.37012 8.34082 -15.4102 2.9707 -22.4307l-51.8701 -66.8096h23.8799c17.6699 0 32 -14.3301 32 -32v-32c0 -17.6699 -14.3301 -32 -32 -32z\" />\n    <glyph glyph-name=\"palette\" unicode=\"&#xf53f;\" \nd=\"M204.3 443c163.8 31.9004 307.2 -92.0996 307.7 -249.7c-0.0996094 -35.7002 -29.0996 -65.2998 -64.9004 -65.2998h-79.6992c-51 0 -84 -53 -60.9004 -98.4004c18.9004 -37.0996 -1.2998 -85.2998 -42.5 -91.6992c-127.1 -19.7002 -295.8 119.699 -258.8 306.699\nc19.5996 99.1006 99.7002 179 199.1 198.4zM96 128c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM128 256c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM256 320\nc17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM384 256c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32z\" />\n    <glyph glyph-name=\"parking\" unicode=\"&#xf540;\" horiz-adv-x=\"448\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM240 128c52.9004 0 96 43.0996 96 96s-43.0996 96 -96 96h-96c-8.7998 0 -16 -7.2002 -16 -16v-224c0 -8.7998 7.2002 -16 16 -16h32\nc8.7998 0 16 7.2002 16 16v48h48zM240 256c17.5996 0 32 -14.4004 32 -32s-14.4004 -32 -32 -32h-48v64h48z\" />\n    <glyph glyph-name=\"percentage\" unicode=\"&#xf541;\" horiz-adv-x=\"384\" \nd=\"M109.25 274.75c-24.9902 -25 -65.5098 -25 -90.5098 0c-24.9902 24.9902 -24.9902 65.5195 0 90.5098s65.5195 24.9902 90.5098 0s24.9902 -65.5195 0 -90.5098zM365.25 109.26c25 -25 25 -65.5195 0 -90.5098c-24.9902 -24.9902 -65.5195 -24.9902 -90.5098 0\ns-24.9902 65.5195 0 90.5098s65.5195 24.9902 90.5098 0zM363.31 340.69c12.5 -12.5 12.5 -32.7607 0 -45.25l-274.75 -274.75c-12.4893 -12.5 -32.75 -12.5 -45.25 0l-22.6191 22.6191c-12.5 12.4902 -12.5 32.75 0 45.25l274.75 274.75c12.4893 12.5 32.75 12.5 45.25 0z\n\" />\n    <glyph glyph-name=\"project-diagram\" unicode=\"&#xf542;\" horiz-adv-x=\"640\" \nd=\"M384 128c17.6699 0 32 -14.3301 32 -32v-128c0 -17.6699 -14.3301 -32 -32 -32h-128c-17.6699 0 -32 14.3301 -32 32v128c0 17.6699 14.3301 32 32 32h128zM192 416v-32h224v-64h-224v-47.5098l64.2803 -112.49h-0.280273c-23.5996 0 -44.0195 -12.9805 -55.1201 -32.04\nl-73.1602 128.04h-95.7197c-17.6699 0 -32 14.3301 -32 32v128c0 17.6699 14.3301 32 32 32h128c17.6699 0 32 -14.3301 32 -32zM608 448c17.6699 0 32 -14.3301 32 -32v-128c0 -17.6699 -14.3301 -32 -32 -32h-128c-17.6699 0 -32 14.3301 -32 32v128\nc0 17.6699 14.3301 32 32 32h128z\" />\n    <glyph glyph-name=\"receipt\" unicode=\"&#xf543;\" horiz-adv-x=\"384\" \nd=\"M358.4 444.8c10.5996 7.90039 25.5996 0.400391 25.5996 -12.7998v-480c0 -13.2002 -15.0996 -20.7002 -25.5996 -12.7998l-38.4004 44.7998l-54.4004 -44.7998c-2.35059 -1.78027 -6.65137 -3.22559 -9.59961 -3.22559s-7.24902 1.44531 -9.59961 3.22559\nl-54.4004 44.7998l-54.4004 -44.7998c-2.35059 -1.78027 -6.65137 -3.22559 -9.59961 -3.22559s-7.24902 1.44531 -9.59961 3.22559l-54.4004 44.7998l-38.4004 -44.7998c-10.5996 -7.90039 -25.5996 -0.400391 -25.5996 12.7998v480c0 13.2002 15 20.7002 25.5996 12.7998\nl38.4004 -44.7998l54.4004 44.7998c2.35059 1.78027 6.65137 3.22559 9.59961 3.22559s7.24902 -1.44531 9.59961 -3.22559l54.4004 -44.7998l54.4004 44.7998c2.35059 1.78027 6.65137 3.22559 9.59961 3.22559s7.24902 -1.44531 9.59961 -3.22559l54.4004 -44.7998z\nM320 88v16c0 4.40039 -3.59961 8 -8 8h-240c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h240c4.40039 0 8 3.59961 8 8zM320 184v16c0 4.40039 -3.59961 8 -8 8h-240c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h240\nc4.40039 0 8 3.59961 8 8zM320 280v16c0 4.40039 -3.59961 8 -8 8h-240c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h240c4.40039 0 8 3.59961 8 8z\" />\n    <glyph glyph-name=\"robot\" unicode=\"&#xf544;\" horiz-adv-x=\"640\" \nd=\"M0 192c0 17.7002 14.2998 32 32 32h32v-192h-32c-17.7002 0 -32 14.2998 -32 32v128zM464 352c44.2002 0 80 -35.7998 80 -80v-272c0 -35.2998 -28.7002 -64 -64 -64h-320c-35.2998 0 -64 28.7002 -64 64v272c0 44.2002 35.7998 80 80 80h112v64\nc0 17.7002 14.2998 32 32 32s32 -14.2998 32 -32v-64h112zM256 32v32h-64v-32h64zM224 152c22.0996 0 40 17.9004 40 40s-17.9004 40 -40 40s-40 -17.9004 -40 -40s17.9004 -40 40 -40zM352 32v32h-64v-32h64zM448 32v32h-64v-32h64zM416 152c22.0996 0 40 17.9004 40 40\ns-17.9004 40 -40 40s-40 -17.9004 -40 -40s17.9004 -40 40 -40zM608 224c17.7002 0 32 -14.2998 32 -32v-128c0 -17.7002 -14.2998 -32 -32 -32h-32v192h32z\" />\n    <glyph glyph-name=\"ruler\" unicode=\"&#xf545;\" horiz-adv-x=\"640\" \nd=\"M635.7 280.8c8.7998 -15 3.59961 -34.2002 -11.6006 -42.7998l-496.8 -281.9c-15.2002 -8.59961 -34.7002 -3.5 -43.5 11.5l-79.5996 135.601c-8.7998 15 -3.5 34.0996 11.7002 42.7998l69 39.0996l59.6992 -101.399c2.2002 -3.7998 7.10059 -5.10059 10.9004 -2.90039\nl13.7998 7.7998c3.7998 2.2002 5.10059 7 2.90039 10.7002l-59.7002 101.7l55.2002 31.2998l27.8994 -47.5c2.2002 -3.7998 7.10059 -5.09961 10.9004 -2.89941l13.7998 7.7998c3.7998 2.2002 5.10059 6.89941 2.90039 10.7002l-27.9004 47.3994l55.2002 31.2998\nl59.7002 -101.699c2.2002 -3.80078 7.09961 -5.10059 10.8994 -2.90039l13.8008 7.7998c3.7998 2.2002 5.09961 7 2.89941 10.7002l-59.7998 101.7l55.2002 31.2998l27.8994 -47.2998c2.2002 -3.7998 7.10059 -5.10059 10.9004 -2.90039l13.7998 7.7998\nc3.7998 2.2002 5.10059 6.90039 2.90039 10.7002l-27.9004 47.4004l55.2002 31.2998l59.7002 -101.6c2.2002 -3.80078 7.09961 -5.10059 10.8994 -2.90039l13.8008 7.7998c3.7998 2.2002 5.09961 6.90039 2.89941 10.7002l-59.7002 101.7l69 39.0996\nc15.2002 8.60059 34.7002 3.5 43.5 -11.5z\" />\n    <glyph glyph-name=\"ruler-combined\" unicode=\"&#xf546;\" \nd=\"M160 160v-41.3799l-158.43 -158.42c-0.660156 2.55957 -1.57031 5.03027 -1.57031 7.7998v448c0 17.6699 14.3301 32 32 32h96c17.6699 0 32 -14.3301 32 -32v-32h-56c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h56v-64h-56\nc-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h56v-64h-56c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h56zM480 96c17.6699 0 32 -14.3301 32 -32v-96c0 -17.6699 -14.3301 -32 -32 -32h-448\nc-2.75977 0 -5.24023 0.910156 -7.7998 1.57031l158.43 158.43h41.3701v-56c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v56h64v-56c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v56h64v-56c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8\nv56h32z\" />\n    <glyph glyph-name=\"ruler-horizontal\" unicode=\"&#xf547;\" horiz-adv-x=\"576\" \nd=\"M544 320c17.6699 0 32 -14.3301 32 -32v-192c0 -17.6699 -14.3301 -32 -32 -32h-512c-17.6699 0 -32 14.3301 -32 32v192c0 17.6699 14.3301 32 32 32h48v-88c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v88h64v-88c0 -4.41992 3.58008 -8 8 -8h16\nc4.41992 0 8 3.58008 8 8v88h64v-88c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v88h64v-88c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v88h64v-88c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v88h48z\" />\n    <glyph glyph-name=\"ruler-vertical\" unicode=\"&#xf548;\" horiz-adv-x=\"256\" \nd=\"M168 32h88v-64c0 -17.6699 -14.3301 -32 -32 -32h-192c-17.6699 0 -32 14.3301 -32 32v448c0 17.6699 14.3301 32 32 32h192c17.6699 0 32 -14.3301 32 -32v-64h-88c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h88v-64h-88\nc-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h88v-64h-88c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h88v-64h-88c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8z\" />\n    <glyph glyph-name=\"school\" unicode=\"&#xf549;\" horiz-adv-x=\"640\" \nd=\"M0 224c0 17.6699 14.3301 32 32 32h64v-320h-80c-8.83984 0 -16 7.16016 -16 16v272zM360 272c4.41992 0 8 -3.58008 8 -8v-16c0 -4.41992 -3.58008 -8 -8 -8h-48c-4.41992 0 -8 3.58008 -8 8v64c0 4.41992 3.58008 8 8 8h16c4.41992 0 8 -3.58008 8 -8v-40h24z\nM497.75 335.96c8.90039 -5.92969 14.25 -15.9297 14.25 -26.6299v-373.33h-128v144c0 8.83984 -7.16016 16 -16 16h-96c-8.83984 0 -16 -7.16016 -16 -16v-144h-128v373.34c0.00195312 9.45117 6.38574 21.377 14.25 26.6201l160 106.67\nc4.4502 2.96484 12.4023 5.37012 17.75 5.37012s13.2998 -2.40527 17.75 -5.37012zM320 192c44.1797 0 80 35.8203 80 80s-35.8203 80 -80 80s-80 -35.8203 -80 -80s35.8203 -80 80 -80zM608 256c17.6699 0 32 -14.3301 32 -32v-272c0 -8.83984 -7.16016 -16 -16 -16h-80\nv320h64z\" />\n    <glyph glyph-name=\"screwdriver\" unicode=\"&#xf54a;\" \nd=\"M448 448l64 -64l-96 -128h-62.0596l-83.0303 -83.0303c-4.25 6.79004 -9.07031 13.2705 -14.8701 19.0703c-5.7998 5.80957 -12.2803 10.6201 -19.0703 14.8701l83.0303 83.0303v62.0596zM128 169.41c29.1104 29.1094 76.2998 29.1094 105.41 0\nc29.1094 -29.1104 29.1094 -76.2998 0 -105.41l-117.08 -117.08c-14.5605 -14.5596 -38.1504 -14.5596 -52.71 0l-52.7002 52.7002c-14.5498 14.5596 -14.5498 38.1602 0 52.71z\" />\n    <glyph glyph-name=\"shoe-prints\" unicode=\"&#xf54b;\" horiz-adv-x=\"640\" \nd=\"M192 288c-35.3496 0 -64 28.6504 -64 64s28.6504 64 64 64h32v-128h-32zM0 32c0 35.3496 28.6504 64 64 64h32v-128h-32c-35.3496 0 -64 28.6504 -64 64zM337.46 160c90.3604 0 174.54 -32 174.54 -96c0 -45.2197 -39.0996 -97.2998 -148.58 -120.82\nc-31.9795 -6.87012 -64.8896 -8.50977 -97.5801 -6.19922c-27.2998 1.92969 -54.0996 7.76953 -80.3096 15.0498l-57.5303 15.9697v128c60.21 0 79.9404 15.6201 104.73 32c28.5693 18.8799 69.8193 32 104.729 32zM491.42 440.81\nc109.48 -23.5098 148.58 -75.5898 148.58 -120.81c0 -64 -84.1797 -96 -174.54 -96c-34.9102 0 -76.1602 13.1201 -104.729 32c-24.79 16.3799 -44.5303 32 -104.73 32v128l57.5303 15.9697c26.21 7.27051 53.0098 13.1104 80.3096 15.04\nc32.6904 2.32031 65.6006 0.669922 97.5801 -6.2002z\" />\n    <glyph glyph-name=\"skull\" unicode=\"&#xf54c;\" \nd=\"M256 448c141.4 0 256 -100.3 256 -224c0 -70.0996 -36.9004 -132.6 -94.5 -173.7c-9.7002 -6.89941 -15.2002 -18.2002 -13.5 -29.8994l9.40039 -66.2002c1.39941 -9.60059 -6 -18.2002 -15.7002 -18.2002h-77.7002v56c0 4.40039 -3.59961 8 -8 8h-16\nc-4.40039 0 -8 -3.59961 -8 -8v-56h-64v56c0 4.40039 -3.59961 8 -8 8h-16c-4.40039 0 -8 -3.59961 -8 -8v-56h-77.7002c-9.7002 0 -17.0996 8.59961 -15.7002 18.2002l9.40039 66.2002c1.7002 11.7998 -3.90039 23 -13.5 29.8994\nc-57.5996 41.1006 -94.5 103.601 -94.5 173.7c0 123.7 114.6 224 256 224zM160 128c35.2998 0 64 28.7002 64 64s-28.7002 64 -64 64s-64 -28.7002 -64 -64s28.7002 -64 64 -64zM352 128c35.2998 0 64 28.7002 64 64s-28.7002 64 -64 64s-64 -28.7002 -64 -64\ns28.7002 -64 64 -64z\" />\n    <glyph glyph-name=\"smoking-ban\" unicode=\"&#xf54d;\" \nd=\"M96 144v64c0 8.7998 7.2002 16 16 16h21.5l96 -96h-117.5c-8.7998 0 -16 7.2002 -16 16zM256 448c141.4 0 256 -114.6 256 -256s-114.6 -256 -256 -256s-256 114.6 -256 256s114.6 256 256 256zM256 0c41.4004 0 79.7002 13.2998 111.1 35.7002l-267.399 267.399\nc-22.4004 -31.3994 -35.7002 -69.6992 -35.7002 -111.1c0 -105.9 86.0996 -192 192 -192zM301.2 192l32 -32h50.7998v32h-82.7998zM412.3 80.9004c22.4004 31.3994 35.7002 69.6992 35.7002 111.1c0 105.9 -86.0996 192 -192 192\nc-41.4004 0 -79.7002 -13.2998 -111.1 -35.7002l124.3 -124.3h130.8c8.7998 0 16 -7.2002 16 -16v-64c0 -8.7998 -7.2002 -16 -16 -16h-34.7998zM320.6 320c32.1006 0 58.7002 -23.7002 63.3008 -54.5996c0.699219 -4.90039 -3 -9.40039 -8 -9.40039h-16.2002\nc-3.7002 0 -7 2.5 -7.7002 6.09961c-2.7998 14.7002 -15.7998 25.9004 -31.4004 25.9004c-32.0996 0 -58.6992 23.7002 -63.2998 54.5996c-0.700195 4.90039 3 9.40039 8 9.40039h16.2002c3.7002 0 7 -2.5 7.7002 -6.09961\nc2.7998 -14.7002 15.7998 -25.9004 31.3994 -25.9004z\" />\n    <glyph glyph-name=\"store\" unicode=\"&#xf54e;\" horiz-adv-x=\"616\" \nd=\"M602 329.4c33.5996 -53.6006 3.7998 -128 -59 -136.4c-4.5 -0.599609 -9 -0.900391 -13.7002 -0.900391c-29.5 0 -55.7002 13 -73.7998 33.1006c-18 -20.1006 -44.2002 -33.1006 -73.7998 -33.1006c-29.5 0 -55.7998 13 -73.7998 33.1006\nc-18 -20.1006 -44.2002 -33.1006 -73.8008 -33.1006c-29.5 0 -55.7998 13 -73.7998 33.1006c-18 -20.1006 -44.2002 -33.1006 -73.7998 -33.1006c-4.59961 0 -9.2002 0.300781 -13.7002 0.900391c-62.5996 8.5 -92.2998 82.9004 -58.7998 136.4l64.9004 103.6\nc5.7998 9.2998 16.0996 15 27.0996 15h404c11 0 21.2998 -5.7002 27.0996 -15zM529.5 160c6.09961 0 12.0996 0.400391 18.2002 1.2002c5.59961 0.700195 11 2 16.3994 3.59961v-196.8c0 -17.7002 -14.2998 -32 -32 -32h-448c-17.6992 0 -32 14.2998 -32 32v196.8\nc5.30078 -1.5 10.8008 -2.7998 16.4004 -3.59961c5.90039 -0.799805 12 -1.2002 18 -1.2002c10 0 19.9004 1.59961 29.5 3.7998v-99.7998h384v99.7998c9.59961 -2.2998 19.5 -3.7998 29.5 -3.7998z\" />\n    <glyph glyph-name=\"store-alt\" unicode=\"&#xf54f;\" horiz-adv-x=\"640\" \nd=\"M320 64v160h64v-256c0 -17.7002 -14.2998 -32 -32 -32h-256c-17.7002 0 -32 14.2998 -32 32v256h64v-160h192zM634.6 305.8c14.1006 -21.2998 -1.09961 -49.7998 -26.5996 -49.7998h-575.9c-25.5996 0 -40.7998 28.5 -26.5996 49.7998l85.2998 128\nc5.90039 8.90039 15.9004 14.2002 26.6006 14.2002h405.199c10.7002 0 20.7002 -5.2998 26.7002 -14.2002zM512 -48v272h64v-272c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16z\" />\n    <glyph glyph-name=\"stream\" unicode=\"&#xf550;\" \nd=\"M16 320c-8.83984 0 -16 7.16016 -16 16v64c0 8.83984 7.16016 16 16 16h416c8.83984 0 16 -7.16016 16 -16v-64c0 -8.83984 -7.16016 -16 -16 -16h-416zM496 240c8.83984 0 16 -7.16016 16 -16v-64c0 -8.83984 -7.16016 -16 -16 -16h-416c-8.83984 0 -16 7.16016 -16 16\nv64c0 8.83984 7.16016 16 16 16h416zM432 64c8.83984 0 16 -7.16016 16 -16v-64c0 -8.83984 -7.16016 -16 -16 -16h-416c-8.83984 0 -16 7.16016 -16 16v64c0 8.83984 7.16016 16 16 16h416z\" />\n    <glyph glyph-name=\"stroopwafel\" unicode=\"&#xf551;\" \nd=\"M188.12 237.26l45.25 -45.2598l-45.2598 -45.25l-45.25 45.25zM301.25 259.88l-45.25 -45.25l-45.25 45.2598l45.25 45.25zM210.75 124.12l45.25 45.25l45.2598 -45.25l-45.2598 -45.2598zM256 448c141.38 0 256 -114.62 256 -256s-114.62 -256 -256 -256\ns-256 114.62 -256 256s114.62 256 256 256zM442.68 152.4c1.29199 1.29492 2.34082 3.83008 2.34082 5.65918c0 1.83008 -1.04883 4.36523 -2.34082 5.66016l-28.29 28.2803l28.2705 28.3096c3.12012 3.12012 3.12012 8.19043 0 11.3105l-11.3105 11.3096\nc-3.11914 3.12012 -8.18945 3.12012 -11.3096 0l-28.29 -28.29l-45.25 45.2607l33.9404 33.9395l16.9697 -16.9697c3.12012 -3.12012 8.18945 -3.12012 11.3096 0l11.3105 11.3096c3.12012 3.12012 3.12012 8.19043 0 11.3105l-16.9707 16.9697l16.9707 16.9697\nc3.12012 3.12012 3.12012 8.19043 0 11.3105l-11.3105 11.3096c-3.12012 3.12012 -8.18945 3.12012 -11.3096 0l-16.9697 -16.9697l-16.9707 16.9697c-3.12012 3.12012 -8.18945 3.12012 -11.3096 0l-11.3105 -11.3096c-3.11914 -3.12012 -3.11914 -8.19043 0 -11.3105\nl16.9707 -16.9697l-33.9404 -33.9404l-45.2598 45.25l28.29 28.29c3.12012 3.12012 3.12012 8.19043 0 11.3105l-11.3105 11.3096c-3.11914 3.12012 -8.18945 3.12012 -11.3096 0l-28.29 -28.29l-28.3096 28.2705c-3.12012 3.12012 -8.19043 3.12012 -11.3105 0\nl-11.3096 -11.3105c-3.12012 -3.11914 -3.12012 -8.18945 0 -11.3096l28.29 -28.29l-45.2607 -45.25l-33.9395 33.9404l16.9697 16.9697c3.12012 3.12012 3.12012 8.18945 0 11.3096l-11.3096 11.3105c-3.12012 3.12012 -8.19043 3.12012 -11.3105 0l-16.9697 -16.9707\nl-16.9697 16.9707c-3.12012 3.12012 -8.19043 3.12012 -11.3105 0l-11.3096 -11.3105c-3.12012 -3.12012 -3.12012 -8.18945 0 -11.3096l16.9697 -16.9697l-16.9697 -16.9707c-3.12012 -3.12012 -3.12012 -8.18945 0 -11.3096l11.3096 -11.3105\nc3.12012 -3.11914 8.19043 -3.11914 11.3105 0l16.9697 16.9707l33.9404 -33.9404l-45.25 -45.2598l-28.29 28.29c-3.12012 3.12012 -8.19043 3.12012 -11.3105 0l-11.3096 -11.3105c-3.12012 -3.11914 -3.12012 -8.18945 0 -11.3096l28.29 -28.29l-28.29 -28.29\nc-3.12012 -3.12012 -3.12012 -8.19043 0 -11.3096l11.3398 -11.3301c3.12012 -3.12012 8.18945 -3.12012 11.3096 0l28.29 28.29l45.25 -45.25l-33.9395 -33.9404l-16.9707 16.9697c-3.11914 3.12012 -8.18945 3.12012 -11.3096 0l-11.3096 -11.3096\nc-3.12012 -3.12012 -3.12012 -8.19043 0 -11.3105l16.9697 -16.9697l-16.9697 -16.9697c-3.12012 -3.12012 -3.12012 -8.19043 0 -11.3105l11.3096 -11.3096c3.12012 -3.12012 8.19043 -3.12012 11.3096 0l16.9707 16.9697l16.9697 -16.9697\nc3.12012 -3.12012 8.19043 -3.12012 11.3096 0l11.3105 11.3096c3.12012 3.12012 3.12012 8.19043 0 11.3105l-16.9697 16.9697l33.9395 33.9404l45.25 -45.2598l-28.29 -28.29c-3.12012 -3.12012 -3.12012 -8.19043 0 -11.3105l11.3105 -11.3096\nc3.11914 -3.12012 8.18945 -3.12012 11.3096 0l28.29 28.29l28.3096 -28.2705c3.12012 -3.12012 8.19043 -3.12012 11.3105 0l11.3096 11.3105c3.12012 3.11914 3.12012 8.18945 0 11.3096l-28.29 28.29l45.2607 45.2598l33.9395 -33.9395l-16.9697 -16.9707\nc-3.12012 -3.11914 -3.12012 -8.18945 0 -11.3096l11.3096 -11.3096c3.12012 -3.12012 8.19043 -3.12012 11.3105 0l16.9697 16.9697l16.9697 -16.9697c3.12012 -3.12012 8.19043 -3.12012 11.3105 0l11.3096 11.3096c3.12012 3.12012 3.12012 8.19043 0 11.3096\nl-16.9697 16.9707l16.9697 16.9697c3.12012 3.12012 3.12012 8.19043 0 11.3096l-11.3096 11.3105c-3.12012 3.12012 -8.19043 3.12012 -11.3105 0l-16.9697 -16.9697l-33.9404 33.9395l45.25 45.25l28.29 -28.29c3.12012 -3.12012 8.19043 -3.12012 11.3105 0zM278.63 192\nl45.2598 45.2598l45.25 -45.2598l-45.25 -45.25z\" />\n    <glyph glyph-name=\"toolbox\" unicode=\"&#xf552;\" \nd=\"M502.63 233.37c6 -6 9.37012 -14.1396 9.37012 -22.6201v-82.75h-128v16c0 8.83984 -7.16016 16 -16 16h-32c-8.83984 0 -16 -7.16016 -16 -16v-16h-128v16c0 8.83984 -7.16016 16 -16 16h-32c-8.83984 0 -16 -7.16016 -16 -16v-16h-128v82.7402\nc0 8.49023 3.37012 16.6299 9.37012 22.6299l45.25 45.2598c6.00977 6 14.1396 9.37012 22.6299 9.37012h50.75v80c0 26.5098 21.4902 48 48 48h160c26.5098 0 48 -21.4902 48 -48v-80.0098h50.75c8.49023 0 16.6299 -3.37012 22.6299 -9.37012zM320 288v64h-128v-64h128z\nM384 80v16h128v-96c0 -17.6699 -14.3301 -32 -32 -32h-448c-17.6699 0 -32 14.3301 -32 32v96h128v-16c0 -8.83984 7.16016 -16 16 -16h32c8.83984 0 16 7.16016 16 16v16h128v-16c0 -8.83984 7.16016 -16 16 -16h32c8.83984 0 16 7.16016 16 16z\" />\n    <glyph glyph-name=\"tshirt\" unicode=\"&#xf553;\" horiz-adv-x=\"640\" \nd=\"M631.2 351.5c7.89941 -3.90039 11.0996 -13.5996 7.09961 -21.5l-57.2998 -114.4c-4 -8 -13.5996 -11.1992 -21.5 -7.19922l-56.5996 27.6992c-10.6006 5.2002 -23 -2.59961 -23 -14.3994v-253.7c0 -17.7002 -14.3008 -32 -32 -32h-256c-17.7002 0 -32 14.2998 -32 32\nv253.6c0 11.9004 -12.4004 19.6006 -23 14.4004l-56.6006 -27.7002c-7.89941 -3.89941 -17.5 -0.700195 -21.5 7.2002l-57.2002 114.5c-3.89941 7.90039 -0.699219 17.5 7.2002 21.5l194.7 96.5c20.0996 -27.7998 64.5996 -47.2002 116.5 -47.2002\ns96.4004 19.4004 116.5 47.2002z\" />\n    <glyph glyph-name=\"walking\" unicode=\"&#xf554;\" horiz-adv-x=\"320\" \nd=\"M208 352c-26.5 0 -48 21.5 -48 48s21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48zM302.5 202.9c15.7002 -7.90039 22 -27.3008 14.2998 -43c-7.89941 -15.8008 -26.8994 -22.2002 -42.5 -14.3008l-23.2998 11.8008c-15 7.59961 -26.4004 20.8994 -31.7002 37\nl-5.5 16.5l-17.2002 -68.7002l45.5 -49.7002c7.2002 -7.7998 12.3008 -17.4004 14.9004 -27.7002l22.2002 -89c4.2998 -17.0996 -6.2002 -34.5 -23.2998 -38.7998c-17.1006 -4.2998 -34.5 6.2002 -38.8008 23.2998l-18.2998 73.2998\nc-2.59961 10.3008 -7.7002 19.8008 -14.8994 27.7002l-59.9004 65.4004c-14.5 15.8994 -20.0996 38 -14.9004 58.7998l15.2002 60.7002l-26.7998 -10.7998c-7.2002 -2.90039 -13 -8.40039 -16.5 -15.4004l-6.7002 -13.5996\nc-7.89941 -15.8008 -26.8994 -22.2002 -42.5 -14.3008c-15.7002 7.90039 -22 27.1006 -14.2002 42.9004l6.7002 13.5996c10.4004 21 28.1006 37.5 49.7002 46.2002c37.4004 15.1006 57.2998 25.2998 93.2998 25.2002c46.5 -0.0996094 87.5 -31.2998 102.2 -75.9004\nl9.7002 -29.3994zM73.5996 62.2002l20.7002 51.5c8.7002 -11.9004 -7.89941 6.59961 47.4004 -53.7002l-13.5 -33.7998c-3.2998 -8.10059 -8.10059 -15.4004 -14.2002 -21.5l-59.4004 -59.4004c-12.5 -12.5 -32.6992 -12.5 -45.1992 0s-12.5 32.7998 0 45.2998l50 50.1006\nc6.19922 6.09961 11 13.3994 14.1992 21.5z\" />\n    <glyph glyph-name=\"wallet\" unicode=\"&#xf555;\" \nd=\"M461.2 320c28.0195 0 50.7998 -21.5303 50.7998 -48v-256c0 -26.4697 -22.7803 -48 -50.7998 -48h-397.2c-35.3496 0 -64 28.6504 -64 64v320c0 35.3496 28.6504 64 64 64h368c26.5098 0 48 -21.4902 48 -48c0 -8.83984 -7.16016 -16 -16 -16h-384\nc-8.83984 0 -16 -7.16016 -16 -16s7.16016 -16 16 -16h381.2zM416 112c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z\" />\n    <glyph glyph-name=\"angry\" unicode=\"&#xf556;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM136 208c0 -17.7002 14.4004 -32 32.0996 -32c17.7002 0 32 14.2998 32 32c0 2.90039 -1 5.5 -1.69922 8.2002c0.599609 0 1.19922 -0.200195 1.69922 -0.200195\nc6.90039 0 13.2002 4.5 15.3008 11.4004c2.59961 8.39941 -2.2002 17.3994 -10.7002 19.8994l-80 24c-8.5 2.5 -17.4004 -2.2002 -19.9004 -10.7002c-2.59961 -8.39941 2.2002 -17.3994 10.7002 -19.8994l31 -9.2998c-6.40039 -5.90039 -10.5 -14.1006 -10.5 -23.4004z\nM304 53.7998c13.4004 -16.0996 38.2998 4 24.5 20.5c-20 24 -49.4004 37.7998 -80.5996 37.7998c-31.2002 0 -60.6006 -13.7998 -80.6006 -37.7998c-13.5996 -16.2998 11.1006 -36.7998 24.6006 -20.5c27.8994 33.4004 84.2998 33.4004 112.1 0zM380.6 240.7\nc8.5 2.5 13.3008 11.3994 10.8008 19.8994c-2.5 8.40039 -11.5 13.2002 -19.9004 10.7002l-80 -24c-8.40039 -2.5 -13.2002 -11.3994 -10.7002 -19.8994c2.10059 -6.90039 8.40039 -11.4004 15.2998 -11.4004c0.600586 0 1.10059 0.0996094 1.7002 0.200195\nc-0.799805 -2.60059 -1.7002 -5.2998 -1.7002 -8.2002c0 -17.7002 14.3008 -32 32 -32c17.7002 0 32 14.2998 32 32c0 9.2998 -4.19922 17.5996 -10.5 23.4004z\" />\n    <glyph glyph-name=\"archway\" unicode=\"&#xf557;\" horiz-adv-x=\"576\" \nd=\"M560 0c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-159.98c-8.83984 0 -16 7.16016 -16 16v16l-0.0195312 160c0 53.0195 -42.9805 96 -96 96s-96 -42.9805 -96 -96v-176c0 -8.83984 -7.16016 -16 -16 -16h-159.98\nc-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h15.9805v352h512v-352h16zM560 448c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-544c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h544z\" />\n    <glyph glyph-name=\"atlas\" unicode=\"&#xf558;\" horiz-adv-x=\"448\" \nd=\"M318.38 240c-5.28027 -31.2197 -25.5898 -57.1699 -53.2998 -70.4102c7.66992 19.0605 12.7197 43.3799 14.21 70.4102h39.0898zM318.38 272h-39.0898c-1.49023 27.0303 -6.53027 51.3496 -14.21 70.4102c27.71 -13.2402 48.0098 -39.1904 53.2998 -70.4102zM224 350.69\nc7.69043 -7.4502 20.7695 -34.4307 23.4404 -78.6904h-46.8701c2.66016 44.2695 15.7393 71.2402 23.4297 78.6904zM182.92 342.41c-7.67969 -19.0605 -12.7197 -43.3799 -14.21 -70.4102h-39.0898c5.28027 31.2197 25.5898 57.1699 53.2998 70.4102zM182.92 169.59\nc-27.71 13.2402 -48.0195 39.1904 -53.2998 70.4102h39.0898c1.49023 -27.0303 6.53027 -51.3496 14.21 -70.4102zM247.43 240c-2.66016 -44.2598 -15.7393 -71.2402 -23.4395 -78.6904c-7.69043 7.4502 -20.7705 34.4307 -23.4307 78.6904h46.8701zM448 89.5996\nc0 -9.59961 -3.2002 -16 -9.59961 -19.1992c-3.2002 -12.8008 -3.2002 -57.6006 0 -73.6006c6.39941 -6.39941 9.59961 -12.7998 9.59961 -19.2002v-16c0 -16 -12.7998 -25.5996 -25.5996 -25.5996h-326.4c-54.4004 0 -96 41.5996 -96 96v320c0 54.4004 41.5996 96 96 96\nh326.4c16 0 25.5996 -9.59961 25.5996 -25.5996v-332.801zM224 384c-70.6904 0 -128 -57.3096 -128 -128s57.3096 -128 128 -128s128 57.3096 128 128s-57.3096 128 -128 128zM384 0v64h-288c-16 0 -32 -12.7998 -32 -32s12.7998 -32 32 -32h288z\" />\n    <glyph glyph-name=\"award\" unicode=\"&#xf559;\" horiz-adv-x=\"384\" \nd=\"M97.1201 85.3701c13.79 -13.7803 32.1104 -21.3701 51.6104 -21.3701c12.4395 0 24.4697 3.54004 35.3096 9.58008l-52.0498 -127.62c-4.39062 -10.7695 -18.4307 -13.4004 -26.4307 -4.95996l-36.2393 38.2803l-52.6904 -2.01074\nc-11.6201 -0.439453 -19.8203 11.2607 -15.4297 22.0303l45.3701 111.24c7.55957 -5.87012 15.9199 -10.7705 25.4297 -13.3203c20.96 -5.60938 16.4297 -3.16016 25.1201 -11.8496zM382.8 -0.700195c4.39062 -10.7598 -3.80957 -22.4697 -15.4297 -22.0303\nl-52.6904 2.01074l-36.25 -38.2803c-7.98926 -8.44043 -22.04 -5.80957 -26.4297 4.95996l-52.0498 127.62c10.8398 -6.03027 22.8701 -9.58008 35.3096 -9.58008c19.5 0 37.8301 7.58984 51.6201 21.3701c8.66992 8.66992 4.0498 6.20996 25.1201 11.8496\nc9.50977 2.5498 17.8701 7.44043 25.4297 13.3203zM263 108c-13.2305 -13.4697 -33.8398 -15.8799 -49.7305 -5.82031c-5.37305 3.41211 -14.8994 6.18066 -21.2646 6.18066c-6.36426 0 -15.8916 -2.76855 -21.2646 -6.18066\nc-15.9004 -10.0596 -36.5098 -7.64941 -49.7402 5.82031c-14.7305 15 -16.4004 14.04 -38.7803 20.1396c-13.8896 3.79004 -24.75 14.8408 -28.4697 28.9805c-7.48047 28.3994 -5.54004 24.9697 -25.9502 45.75c-10.1699 10.3604 -14.1396 25.4502 -10.4199 39.5898\nc7.48047 28.4199 7.46973 24.46 0 52.8203c-3.72949 14.1396 0.25 29.2295 10.4199 39.5801c20.4102 20.7793 18.4805 17.3594 25.9502 45.75c3.71973 14.1396 14.5801 25.1895 28.4697 28.9795c27.8906 7.61035 24.5303 5.62988 44.9404 26.4102\nc10.1699 10.3604 25 14.4004 38.8896 10.6104c27.9199 -7.61035 24.0303 -7.60059 51.9004 0c13.8896 3.79004 28.7197 -0.260742 38.8896 -10.6104c20.4297 -20.79 17.0703 -18.7998 44.9502 -26.4102c13.8896 -3.79004 24.75 -14.8398 28.4697 -28.9795\nc7.48047 -28.3906 5.54004 -24.9707 25.9502 -45.75c10.1699 -10.3506 14.1396 -25.4404 10.4199 -39.5801c-7.47949 -28.4102 -7.46973 -24.4502 0 -52.8301c3.71973 -14.1406 -0.25 -29.2305 -10.4199 -39.5801c-20.4102 -20.7803 -18.4697 -17.3506 -25.9502 -45.75\nc-3.71973 -14.1396 -14.5801 -25.1904 -28.4697 -28.9805c-21.7598 -5.92969 -23.5098 -4.58984 -38.79 -20.1396zM97.6602 272.04c0 -53.0303 42.2402 -96.0205 94.3398 -96.0205s94.3398 42.9902 94.3398 96.0205s-42.2402 96.0195 -94.3398 96.0195\ns-94.3398 -42.9893 -94.3398 -96.0195z\" />\n    <glyph glyph-name=\"backspace\" unicode=\"&#xf55a;\" horiz-adv-x=\"640\" \nd=\"M576 384c35.3496 0 64 -28.6504 64 -64v-256c0 -35.3496 -28.6504 -64 -64 -64h-370.75c-16.9697 0 -33.25 6.75 -45.25 18.75l-150.63 150.63c-12.5 12.4902 -12.5 32.75 0 45.25l150.63 150.62c10.3438 10.3496 30.6143 18.75 45.2471 18.75h0.0126953h370.74z\nM491.31 129.94l-62.0596 62.0596l62.0596 62.0596c6.25 6.25 6.25 16.3809 0 22.6309l-22.6191 22.6191c-6.25 6.25 -16.3809 6.25 -22.6309 0l-62.0596 -62.0596l-62.0596 62.0596c-6.25 6.25 -16.3809 6.25 -22.6309 0l-22.6191 -22.6191\nc-6.25 -6.25 -6.25 -16.3809 0 -22.6309l62.0596 -62.0596l-62.0596 -62.0596c-6.25 -6.25 -6.25 -16.3809 0 -22.6309l22.6191 -22.6191c6.25 -6.25 16.3809 -6.25 22.6309 0l62.0596 62.0596l62.0596 -62.0596c6.25 -6.25 16.3809 -6.25 22.6309 0l22.6191 22.6191\nc6.25 6.25 6.25 16.3809 0 22.6309z\" />\n    <glyph glyph-name=\"bezier-curve\" unicode=\"&#xf55b;\" horiz-adv-x=\"640\" \nd=\"M368 416c17.6699 0 32 -14.3301 32 -32v-96c0 -17.6699 -14.3301 -32 -32 -32h-96c-17.6699 0 -32 14.3301 -32 32v96c0 17.6699 14.3301 32 32 32h96zM208 360v-72c0 -9.4502 2.17969 -18.3604 5.87988 -26.4404c-34.2695 -24.3496 -59.7402 -59.9492 -71.04 -101.56\nh-49.3994c13.6797 64.6797 54.1699 119.48 109.54 152h-79.7305c-9.5 -23.4404 -32.4102 -40 -59.25 -40c-35.3398 0 -64 28.6504 -64 64s28.6602 64 64 64c26.8398 0 49.75 -16.5596 59.25 -40h84.75zM160 128c17.6699 0 32 -14.3301 32 -32v-96\nc0 -17.6699 -14.3301 -32 -32 -32h-96c-17.6699 0 -32 14.3301 -32 32v96c0 17.6699 14.3301 32 32 32h96zM576 400c35.3398 0 64 -28.6504 64 -64s-28.6602 -64 -64 -64c-26.8398 0 -49.75 16.5596 -59.25 40h-79.7305c55.3701 -32.5195 95.8604 -87.3203 109.54 -152\nh-49.3994c-11.2998 41.6104 -36.7705 77.21 -71.04 101.56c3.68945 8.08008 5.87988 16.9902 5.87988 26.4404v72h84.75c9.5 23.4404 32.4102 40 59.25 40zM576 128c17.6699 0 32 -14.3301 32 -32v-96c0 -17.6699 -14.3301 -32 -32 -32h-96c-17.6699 0 -32 14.3301 -32 32\nv96c0 17.6699 14.3301 32 32 32h96z\" />\n    <glyph glyph-name=\"bong\" unicode=\"&#xf55c;\" horiz-adv-x=\"448\" \nd=\"M302.5 -64h-221c-23.1699 0 -44.4199 12.5801 -56 32.6602c-16.1904 28.0703 -25.5 60.5898 -25.5 95.3398c0 71.0303 38.6699 132.9 96 166.11v153.93l-15.9697 -0.0205078c-8.85059 -0.00976562 -16.0303 7.16016 -16.0205 16.0107l0.0400391 31.7295\nc0.00976562 8.82031 7.16016 15.9707 15.9805 15.9805l223.939 0.259766c8.85059 0.00976562 16.0303 -7.16992 16.0205 -16.0195l-0.0400391 -31.7207c-0.00976562 -8.81934 -7.16016 -15.9697 -15.9805 -15.9795l-15.9697 -0.0205078v-154.16\nc14.1201 -8.17969 27.0898 -18.1396 38.6504 -29.5098l39.4092 39.4102l-9.37988 9.37988c-6.25 6.25 -6.25 16.3799 0 22.6299l11.3105 11.3105c6.25 6.25 16.3799 6.25 22.6299 0l52.6895 -52.6904c6.25 -6.25 6.25 -16.3799 0 -22.6299l-11.2998 -11.3203\nc-6.25 -6.25 -16.3799 -6.25 -22.6299 0l-9.37988 9.37988l-43.4404 -43.4395c17.3604 -28.8105 27.4404 -62.5 27.4404 -98.6201c0 -34.75 -9.30957 -67.2598 -25.5 -95.3398c-11.5703 -20.0801 -32.8203 -32.6602 -56 -32.6602zM120.06 188.57\nc-24.8096 -14.3701 -44.1094 -35.7305 -56.5596 -60.5703h257c-12.4404 24.8398 -31.75 46.2002 -56.5596 60.5703l-23.9404 13.8701v181.76l-96 -0.110352v-181.649z\" />\n    <glyph glyph-name=\"brush\" unicode=\"&#xf55d;\" horiz-adv-x=\"384\" \nd=\"M352 448c17.6699 0 32 -14.3301 32 -32v-224h-384v224c0 17.6699 14.3301 32 32 32h320zM0 128v32h384v-32c0 -35.3496 -28.6602 -64 -64 -64h-64v-64c0 -35.3496 -28.6602 -64 -64 -64s-64 28.6504 -64 64v64h-64c-35.3398 0 -64 28.6504 -64 64zM192 24\nc-13.25 0 -24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24s24 10.75 24 24c0 13.2598 -10.75 24 -24 24z\" />\n    <glyph glyph-name=\"bus-alt\" unicode=\"&#xf55e;\" \nd=\"M488 320c13.25 0 24 -10.7402 24 -24v-80c0 -13.25 -10.75 -24 -24 -24h-8v-166.4c0 -12.7998 -9.59961 -25.5996 -25.5996 -25.5996h-6.40039v-32c0 -17.6699 -14.3301 -32 -32 -32h-32c-17.6699 0 -32 14.3301 -32 32v32h-192v-32c0 -17.6699 -14.3301 -32 -32 -32h-32\nc-17.6699 0 -32 14.3301 -32 32v32c-17.6699 0 -32 14.3301 -32 32v160h-8c-13.25 0 -24 10.75 -24 24v80c0 13.2598 10.75 24 24 24h8v48c0 44.7998 99.2002 80 224 80s224 -35.2002 224 -80v-48h8zM160 376v-16c0 -4.41992 3.58008 -8 8 -8h176c4.41992 0 8 3.58008 8 8\nv16c0 4.41992 -3.58008 8 -8 8h-176c-4.41992 0 -8 -3.58008 -8 -8zM112 48c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM240 160v160h-112c-17.6699 0 -32 -14.3301 -32 -32v-96c0 -17.6699 14.3301 -32 32 -32h112zM272 160\nh112c17.6699 0 32 14.3301 32 32v96c0 17.6699 -14.3301 32 -32 32h-112v-160zM400 48c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z\" />\n    <glyph glyph-name=\"cannabis\" unicode=\"&#xf55f;\" \nd=\"M503.47 87.75c5.24023 -2.75977 8.52051 -8.20996 8.53027 -14.1504c0.00976562 -5.92969 -3.26953 -11.3691 -8.50977 -14.1494c-2.4502 -1.29004 -60.7705 -31.7197 -133.49 -31.7197c-6.12988 0 -11.96 0.0996094 -17.5 0.30957\nc11.3604 -22.2305 16.5195 -38.3096 16.8096 -39.2197c1.80078 -5.68066 0.290039 -11.8906 -3.90918 -16.1104c-2.5918 -2.60059 -7.67578 -4.71094 -11.3467 -4.71094c-1.34277 0 -3.47168 0.322266 -4.75391 0.720703c-1.83008 0.580078 -37.7197 11.9902 -77.2998 39.29\nv-64.0098c0 -4.41992 -3.58008 -8 -8 -8h-16c-4.41992 0 -8 3.58008 -8 8v64.0195c-39.5801 -27.2998 -75.4697 -38.7197 -77.2998 -39.2891c-1.28223 -0.398438 -3.41113 -0.72168 -4.75391 -0.72168c-3.6709 0 -8.75488 2.11035 -11.3467 4.71094\nc-4.19922 4.2207 -5.70996 10.4307 -3.90918 16.1104c0.290039 0.910156 5.43945 16.9902 16.8096 39.2197c-5.54004 -0.209961 -11.3604 -0.30957 -17.5 -0.30957c-72.7305 0 -131.04 30.4297 -133.49 31.7197c-4.69629 2.48926 -8.50879 8.82422 -8.50879 14.1396\nc0 5.32422 3.82129 11.6641 8.5293 14.1504c1.56934 0.820312 32.3896 16.8896 76.7793 25.8096c-64.25 75.1201 -84.0498 161.671 -84.9297 165.641c-0.210938 0.947266 -0.382812 2.50488 -0.382812 3.47559c0 3.65039 2.09375 8.71094 4.67285 11.2939\nc3.03027 3.04004 7.12012 4.7002 11.3203 4.7002c1.14941 0 2.2998 -0.129883 3.43945 -0.379883c3.89062 -0.860352 86.5508 -19.5996 160.58 -79.7598c0 1.45996 -0.00976562 2.92969 -0.00976562 4.39941c0 118.79 59.9805 213.721 62.5303 217.7\nc2.93945 4.58984 8.01953 7.37012 13.4697 7.37012h0.00195312c4.82812 0 10.8574 -3.30176 13.458 -7.37012c2.5498 -3.97949 62.5303 -98.9102 62.5303 -217.7c0 -1.46973 0 -2.93945 -0.00976562 -4.39941c74.0391 60.1699 156.699 78.9102 160.579 79.7598\nc1.15039 0.259766 2.30078 0.379883 3.44043 0.379883c4.2002 0 8.29004 -1.66016 11.3203 -4.7002c3.85938 -3.87012 5.47949 -9.43945 4.2998 -14.7695c-0.879883 -3.96973 -20.6797 -90.5205 -84.9297 -165.641c44.3896 -8.91992 75.2197 -24.9893 76.7793 -25.8096z\" />\n    <glyph glyph-name=\"check-double\" unicode=\"&#xf560;\" \nd=\"M505 273.2c9.2998 -9.2998 9.2998 -24.5 -0.0996094 -34l-296 -296.2c-9.30078 -9.40039 -24.5 -9.40039 -33.9004 0l-168 168.1c-9.40039 9.40039 -9.40039 24.6006 0 34l39.7002 39.7002c9.2998 9.40039 24.5 9.40039 33.8994 0l111.4 -111.5l239.5 239.5\nc9.2998 9.40039 24.5 9.40039 33.9004 0zM180.7 167.2l-112 112.2c-6.2002 6.19922 -6.2002 16.2998 0 22.5996l45.2998 45.2998c6.2002 6.2998 16.4004 6.2998 22.5996 0l55.4004 -55.5l151.5 151.5c6.2002 6.2998 16.4004 6.2998 22.5996 0l45.2002 -45.2998\nc6.2002 -6.2002 6.2002 -16.2998 0 -22.5996l-208 -208.2c-6.2002 -6.2998 -16.3994 -6.2998 -22.5996 0z\" />\n    <glyph glyph-name=\"cocktail\" unicode=\"&#xf561;\" horiz-adv-x=\"576\" \nd=\"M296 -16c22.0898 0 40 -17.9102 40 -40c0 -4.41992 -3.58008 -8 -8 -8h-240c-4.41992 0 -8 3.58008 -8 8c0 22.0898 17.9102 40 40 40h56v125.22l-168.74 168.73c-15.5195 15.5195 -4.5293 42.0498 17.4199 42.0498h366.641c21.9492 0 32.9395 -26.5303 17.4199 -42.0498\nl-168.74 -168.73v-125.22h56zM432 448c79.5303 0 144 -64.4697 144 -144s-64.4697 -144 -144 -144c-27.4102 0 -52.7695 8.08008 -74.5801 21.3799l35.2598 35.2598c12.0303 -5.43945 25.2803 -8.63965 39.3203 -8.63965c52.9297 0 96 43.0596 96 96s-43.0703 96 -96 96\nc-35.3701 0 -65.9902 -19.4502 -82.6396 -48h-52.54c19.8301 55.7998 72.5693 96 135.18 96z\" />\n    <glyph glyph-name=\"concierge-bell\" unicode=\"&#xf562;\" \nd=\"M288 317.46c108.51 -15.5703 192 -108.64 192 -221.46h-448c0 112.82 83.4902 205.89 192 221.46v18.54h-16c-8.83984 0 -16 7.16016 -16 16v16c0 8.83984 7.16016 16 16 16h96c8.83984 0 16 -7.16016 16 -16v-16c0 -8.83984 -7.16016 -16 -16 -16h-16v-18.54zM496 64\nc8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-480c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h480z\" />\n    <glyph glyph-name=\"cookie\" unicode=\"&#xf563;\" \nd=\"M510.37 193.21c4.37988 -27.6602 -0.110352 -56 -12.8203 -80.96l-35.0996 -68.8701c-10.7695 -21.1328 -36.6592 -47.0273 -57.79 -57.7998l-69.1201 -35.21c-24.8301 -12.6396 -53.0098 -17.1104 -80.5205 -12.75l-76.6992 12.1396\nc-23.3896 3.70801 -55.9639 20.3066 -72.71 37.0498l-54.7607 54.75c-16.7959 16.8027 -33.4443 49.4844 -37.1592 72.9502l-12.0801 76.2705c-0.901367 5.68848 -1.63281 14.9805 -1.63281 20.7412c0 17.5723 6.47461 44.541 14.4521 60.1982l35.1006 68.8799\nc10.7666 21.1357 36.6562 47.0303 57.79 57.8008l69.1201 35.21c24.8291 12.6494 53.0098 17.1201 80.5195 12.7598l76.7002 -12.1504c27.5303 -4.34961 52.9795 -17.3301 72.71 -37.0498l54.7598 -54.75c16.7969 -16.8027 33.4443 -49.4844 37.1602 -72.9502zM176 80\nc17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM208 240c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM368 112c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32\ns-32 -14.3301 -32 -32s14.3301 -32 32 -32z\" />\n    <glyph glyph-name=\"cookie-bite\" unicode=\"&#xf564;\" \nd=\"M510.52 192.18c4.10059 -27.3301 -0.349609 -55.2695 -12.9092 -79.9102l-35.1006 -68.8799c-10.7656 -21.1367 -36.6562 -47.0361 -57.79 -57.8096l-69.1299 -35.21c-24.8301 -12.6504 -53.0195 -17.1201 -80.5303 -12.7598l-76.71 12.1494\nc-23.3916 3.70801 -55.9658 20.3105 -72.71 37.0605l-54.7695 54.7598c-16.7969 16.8057 -33.4443 49.4912 -37.1602 72.96l-12.0801 76.2695c-0.900391 5.68945 -1.63184 14.9824 -1.63184 20.7422c0 17.5752 6.47461 44.5479 14.4521 60.208l35.0996 68.8799\nc10.7646 21.1396 36.6543 47.0391 57.79 57.8105l69.1299 35.2197c24.5898 12.5205 52.46 16.96 79.7207 12.8203c0.859375 -69.96 57.6895 -126.45 127.859 -126.45c0 -70.1699 56.5 -127.01 126.47 -127.86zM176 80c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32\ns-32 -14.3301 -32 -32s14.3301 -32 32 -32zM208 240c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM368 112c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z\" />\n    <glyph glyph-name=\"crop-alt\" unicode=\"&#xf565;\" \nd=\"M488 96c13.25 0 24 -10.7402 24 -24v-48c0 -13.25 -10.75 -24 -24 -24h-40v-40c0 -13.25 -10.75 -24 -24 -24h-48c-13.25 0 -24 10.75 -24 24v328h-160v96h224c17.6699 0 32 -14.3301 32 -32v-256h40zM160 424v-328h160v-96h-224c-17.6699 0 -32 14.3301 -32 32v256h-40\nc-13.25 0 -24 10.75 -24 24v48c0 13.2598 10.75 24 24 24h40v40c0 13.2598 10.75 24 24 24h48c13.25 0 24 -10.7402 24 -24z\" />\n    <glyph glyph-name=\"digital-tachograph\" unicode=\"&#xf566;\" horiz-adv-x=\"640\" \nd=\"M608 352c17.6699 0 32 -14.3301 32 -32v-256c0 -17.6699 -14.3301 -32 -32 -32h-576c-17.6699 0 -32 14.3301 -32 32v256c0 17.6699 14.3301 32 32 32h576zM304 96v8c0 4.41992 -3.58008 8 -8 8h-224c-4.41992 0 -8 -3.58008 -8 -8v-8c0 -4.41992 3.58008 -8 8 -8h224\nc4.41992 0 8 3.58008 8 8zM72 160c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-16c-4.41992 0 -8 -3.58008 -8 -8v-16zM136 160c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-16\nc-4.41992 0 -8 -3.58008 -8 -8v-16zM200 160c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-16c-4.41992 0 -8 -3.58008 -8 -8v-16zM264 160c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8\nh-16c-4.41992 0 -8 -3.58008 -8 -8v-16zM304 224v48c0 8.83984 -7.16016 16 -16 16h-208c-8.83984 0 -16 -7.16016 -16 -16v-48c0 -8.83984 7.16016 -16 16 -16h208c8.83984 0 16 7.16016 16 16zM576 96v8c0 4.41992 -3.58008 8 -8 8h-224c-4.41992 0 -8 -3.58008 -8 -8v-8\nc0 -4.41992 3.58008 -8 8 -8h224c4.41992 0 8 3.58008 8 8z\" />\n    <glyph glyph-name=\"dizzy\" unicode=\"&#xf567;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM152 233.4l28.7002 -28.7002c14.7002 -14.7998 37.7998 7.39941 22.5996 22.5996l-28.7002 28.7002l28.7002 28.7002c15 14.8994 -7.59961 37.5996 -22.5996 22.5996\nl-28.7002 -28.7002l-28.7002 28.7002c-14.8994 15 -37.5996 -7.59961 -22.5996 -22.5996l28.7002 -28.7002l-28.7002 -28.7002c-15.2002 -15.0996 7.7998 -37.3994 22.5996 -22.5996zM248 32c35.2998 0 64 28.7002 64 64s-28.7002 64 -64 64s-64 -28.7002 -64 -64\ns28.7002 -64 64 -64zM395.3 227.3l-28.7002 28.7002l28.7002 28.7002c15 14.8994 -7.59961 37.5996 -22.5996 22.5996l-28.7002 -28.7002l-28.7002 28.7002c-14.8994 15 -37.5996 -7.59961 -22.5996 -22.5996l28.7002 -28.7002l-28.7002 -28.7002\nc-15.2002 -15.0996 7.7998 -37.3994 22.5996 -22.5996l28.7002 28.7002l28.7002 -28.7002c14.7002 -14.7998 37.7998 7.39941 22.5996 22.5996z\" />\n    <glyph glyph-name=\"drafting-compass\" unicode=\"&#xf568;\" \nd=\"M457.01 103.58l54.9805 -95.2305l-7.02051 -58.25c-1.2793 -10.5898 -12.3594 -16.9893 -22.1699 -12.7998l-53.9502 23.04l-54.3799 94.1904c29.9102 11.8701 57.4902 28.7197 82.54 49.0498zM499.5 198.14c-52.6201 -83.1299 -144.45 -134.14 -243.5 -134.14\nc-35.3799 0 -69.8701 6.71973 -102.06 18.96l-70.8008 -122.63l-53.9492 -23.04c-9.81055 -4.19043 -20.8906 2.20996 -22.1709 12.7998l-7.01953 58.25l71.2803 123.46c-21.29 17.8105 -40.4102 38.3799 -55.9805 62.0205\nc-4.99023 7.56934 -2.20996 17.9297 5.64062 22.4697l27.75 16.0703c7.40918 4.29004 16.5898 1.76953 21.3799 -5.33008c9.71973 -14.4102 21.1299 -27.3906 33.6797 -39l68.2998 118.31c-7.43945 13.6299 -12.0498 29.0303 -12.0498 45.6602c0 53.0195 42.9805 96 96 96\ns96 -42.9805 96 -96c0 -16.6299 -4.61035 -32.0303 -12.0596 -45.6602l51.79 -89.71c-23.0508 -23.1699 -51.3809 -39.96 -82.6104 -48.9199l-51.0898 88.5c-0.69043 -0.0195312 -1.33984 -0.209961 -2.04004 -0.209961s-1.33984 0.19043 -2.04004 0.209961\nl-67.3604 -116.68c22.1797 -7.28027 45.4805 -11.5303 69.4102 -11.5303c76.25 0 147.01 38.8496 188.12 102.38c4.64941 7.17969 13.7803 9.87012 21.2598 5.71973l28.0703 -15.5693c7.93945 -4.40039 10.9102 -14.7207 6.0498 -22.3906zM256 384\nc-17.6699 0 -32 -14.3301 -32 -32s14.3301 -32 32 -32s32 14.3301 32 32s-14.3301 32 -32 32z\" />\n    <glyph glyph-name=\"drum\" unicode=\"&#xf569;\" horiz-adv-x=\"576\" \nd=\"M458.08 327.12c71.3799 -23.29 117.91 -60.75 117.92 -103.13v-160.83c0 -30.46 -24.0303 -58.4004 -64 -80.3701v96.3701c0 17.5996 -14.4004 32 -32 32s-32 -14.4004 -32 -32v-122.41c-37.4004 -11.1299 -81 -18.4404 -128 -20.75v111.16c0 17.5996 -14.4004 32 -32 32\ns-32 -14.4004 -32 -32v-111.15c-47 2.31055 -90.5996 9.62012 -128 20.75v122.41c0 17.5996 -14.4004 32 -32 32s-32 -14.4004 -32 -32v-96.3701c-39.9697 21.9697 -64 49.9102 -64 80.3701v160.83c0 70.6904 128.94 128 288 128\nc21.8467 -0.00585938 57.167 -2.2373 78.8398 -4.98047l160.69 96.4102c15.1699 9.10059 34.8096 4.18066 43.9102 -10.9697c9.08984 -15.1602 4.18945 -34.8203 -10.9707 -43.9102zM288 144c132.54 0 240 35.8096 240 79.9902c0 30.2695 -50.4502 56.5996 -124.82 70.1895\nl-162.71 -97.6201c-14.3994 -8.63965 -34.3496 -4.95996 -43.9102 10.9707c-9.08984 15.1602 -4.18945 34.8193 10.9707 43.9102l87.4102 52.4395c-2.32031 0.0205078 -4.60059 0.120117 -6.94043 0.120117c-132.55 0 -240 -35.8203 -240 -80s107.45 -80 240 -80z\" />\n    <glyph glyph-name=\"drum-steelpan\" unicode=\"&#xf56a;\" horiz-adv-x=\"576\" \nd=\"M288 416c159.06 0 288 -57.3096 288 -128v-192c0 -70.6904 -128.94 -128 -288 -128s-288 57.3096 -288 128v192c0 70.6904 128.94 128 288 128zM205.01 257.64c5.11035 19.0605 2.49023 38.96 -7.37012 56.0508l-25.5996 44.3398\nc-73.9297 -13.6406 -124.04 -39.8701 -124.04 -70.0303c0 -30.7803 52.2305 -57.46 128.7 -70.8398c13.7695 9.91016 23.8594 23.8701 28.3096 40.4795zM288 208c21.0801 0 41.4102 1 60.8896 2.7002c-8.05957 26.1299 -32.1494 45.2998 -60.8896 45.2998\ns-52.8301 -19.1699 -60.8896 -45.2998c19.4795 -1.7002 39.8096 -2.7002 60.8896 -2.7002zM352 352v13.04c-20.4004 1.87988 -41.7998 2.95996 -64 2.95996s-43.5996 -1.08008 -64 -2.95996v-13.04c0 -35.29 28.71 -64 64 -64s64 28.71 64 64zM398.93 217.1\nc76.6699 13.3604 129.07 40.0703 129.07 70.9004c0 30.21 -50.2803 56.5 -124.44 70.0996l-25.6494 -44.4199c-9.87012 -17.0801 -12.4902 -36.9795 -7.37988 -56.04c4.45996 -16.6396 14.5898 -30.6299 28.3994 -40.54z\" />\n    <glyph glyph-name=\"feather-alt\" unicode=\"&#xf56b;\" \nd=\"M512 448c-1.80957 -26.2598 -11.71 -132.86 -53.6201 -234.79l-106.54 -53.21h81.1406c-9.08008 -16.4102 -19.2002 -32.2305 -30.4502 -47.1201l-146.79 -48.8799h100.95c-35.5605 -30.0703 -79.1006 -51.0996 -132.58 -56.54\nc-41.8105 -4.83008 -83.8701 -7.21973 -125.96 -7.36035l-57.1309 -57.0693c-9.38965 -9.37012 -24.5996 -9.37012 -33.9795 0s-9.37988 24.5693 0 33.9395l259.5 259.24c6.25 6.25 6.25 16.3799 0 22.6299s-16.4004 6.25 -22.6504 0l-178.87 -178.689\nc1.15039 26.7998 2.90039 53.5801 5.99023 80.2393c25.4307 249.41 389.21 284.051 440.99 287.61z\" />\n    <glyph glyph-name=\"file-contract\" unicode=\"&#xf56c;\" horiz-adv-x=\"384\" \nd=\"M224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136zM64 376v-16c0 -4.41992 3.58008 -8 8 -8h80c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8\nh-80c-4.41992 0 -8 -3.58008 -8 -8zM64 312v-16c0 -4.41992 3.58008 -8 8 -8h80c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-80c-4.41992 0 -8 -3.58008 -8 -8zM256.81 64c-4.19922 0 -8.13965 2.44043 -10.1592 6.5\nc-11.9502 23.8604 -46.2305 30.3496 -66 14.1602l-13.8809 41.6396c-3.28906 9.82031 -12.4297 16.4102 -22.7695 16.4102s-19.4805 -6.59961 -22.7803 -16.4102l-18.1895 -54.6396c-1.53027 -4.58008 -5.81055 -7.66016 -10.6406 -7.66016h-12.3896\nc-8.83984 0 -16 -7.16016 -16 -16s7.16016 -16 16 -16h12.3896c18.6201 0 35.1104 11.8701 41 29.5303l10.6104 31.8799l16.8301 -50.46c2.03027 -6.14062 7.58008 -10.4404 14.0303 -10.8906c0.389648 -0.0292969 0.759766 -0.0498047 1.13965 -0.0498047h0.00976562\nc5.45508 0 11.8613 3.96094 14.2998 8.83984l7.6709 15.3408c2.7998 5.59961 7.93945 6.18945 10.0195 6.18945s7.21973 -0.599609 10.1699 -6.51953c7.37012 -14.7207 22.1904 -23.8604 38.6396 -23.8604h47.1904c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16h-47.1904z\nM377 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7z\" />\n    <glyph glyph-name=\"file-download\" unicode=\"&#xf56d;\" horiz-adv-x=\"384\" \nd=\"M224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136zM300.45 100.64c10.1299 10.0703 3.00977 27.3604 -11.2705 27.3604h-65.1797v80\nc0 8.83984 -7.16016 16 -16 16h-32c-8.83984 0 -16 -7.16016 -16 -16v-80h-65.1797c-14.2803 0 -21.4004 -17.29 -11.25 -27.3604l96.4199 -95.6992c6.64941 -6.61035 17.3896 -6.61035 24.04 0zM377 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128v128h6.09961\nc6.40039 0 12.5 -2.5 17 -7z\" />\n    <glyph glyph-name=\"file-export\" unicode=\"&#xf56e;\" horiz-adv-x=\"576\" \nd=\"M384 326.1v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7l97.9004 -98c4.5 -4.5 7 -10.5996 7 -16.9004zM571 140c6.59961 -6.59961 6.59961 -17.4004 0 -24l-95.7002 -96.5c-10.0996 -10.0996 -27.3994 -3 -27.3994 11.2998v65.2002h-64v64h64v65.0996\nc0 14.3008 17.2998 21.4004 27.3994 11.3008zM192 112c0 -8.7998 7.2002 -16 16 -16h176v-136c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136c0 -13.2002 10.7998 -24 24 -24h136v-128h-176\nc-8.7998 0 -16 -7.2002 -16 -16v-32z\" />\n    <glyph glyph-name=\"file-import\" unicode=\"&#xf56f;\" \nd=\"M16 160h112v-64h-112c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16zM505 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7zM352 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24\nh-336c-13.2998 0 -24 10.7002 -24 24v136h127.9v-65.0996c0 -14.3008 17.2998 -21.4004 27.3994 -11.3008l95.7002 96.4004c6.59961 6.59961 6.59961 17.2998 0 24l-95.5996 96.5c-10.1006 10.0996 -27.4004 3 -27.4004 -11.2998v-65.2002h-128v264\nc0 13.2998 10.7002 24 24 24h200v-136z\" />\n    <glyph glyph-name=\"file-invoice\" unicode=\"&#xf570;\" horiz-adv-x=\"384\" \nd=\"M288 192v-64h-192v64h192zM377 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7zM224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464\nc0 13.2998 10.7002 24 24 24h200v-136zM64 376v-16c0 -4.41992 3.58008 -8 8 -8h80c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-80c-4.41992 0 -8 -3.58008 -8 -8zM64 312v-16c0 -4.41992 3.58008 -8 8 -8h80c4.41992 0 8 3.58008 8 8v16\nc0 4.41992 -3.58008 8 -8 8h-80c-4.41992 0 -8 -3.58008 -8 -8zM320 8v16c0 4.41992 -3.58008 8 -8 8h-80c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h80c4.41992 0 8 3.58008 8 8zM320 208c0 8.83984 -7.16016 16 -16 16h-224\nc-8.83984 0 -16 -7.16016 -16 -16v-96c0 -8.83984 7.16016 -16 16 -16h224c8.83984 0 16 7.16016 16 16v96z\" />\n    <glyph glyph-name=\"file-invoice-dollar\" unicode=\"&#xf571;\" horiz-adv-x=\"384\" \nd=\"M377 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7zM224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136z\nM64 376v-16c0 -4.41992 3.58008 -8 8 -8h80c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-80c-4.41992 0 -8 -3.58008 -8 -8zM64 296c0 -4.41992 3.58008 -8 8 -8h80c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-80c-4.41992 0 -8 -3.58008 -8 -8\nv-16zM208 32.1201c23.6201 0.629883 42.6699 20.54 42.6699 45.0703c0 19.9697 -12.9902 37.8096 -31.5801 43.3896l-45 13.5c-5.16016 1.54004 -8.76953 6.78027 -8.76953 12.7295c0 7.27051 5.2998 13.1904 11.7998 13.1904h28.1104\nc4.55957 0 8.94922 -1.29004 12.8193 -3.71973c3.24023 -2.03027 7.36035 -1.91016 10.1299 0.729492l11.75 11.21c3.53027 3.37012 3.33008 9.20996 -0.569336 12.1406c-9.10059 6.83984 -20.0801 10.7695 -31.3701 11.3496v24.29c0 4.41992 -3.58008 8 -8 8h-16\nc-4.41992 0 -8 -3.58008 -8 -8v-24.1201c-23.6201 -0.629883 -42.6699 -20.5498 -42.6699 -45.0703c0 -19.9697 12.9893 -37.8096 31.5801 -43.3896l45 -13.5c5.15918 -1.54004 8.76953 -6.78027 8.76953 -12.7295c0 -7.27051 -5.2998 -13.1904 -11.7998 -13.1904h-28.1104\nc-4.55957 0 -8.9502 1.2998 -12.8193 3.71973c-3.24023 2.03027 -7.36035 1.91016 -10.1309 -0.729492l-11.75 -11.21c-3.5293 -3.37012 -3.3291 -9.20996 0.570312 -12.1406c9.10059 -6.83008 20.0801 -10.7695 31.3701 -11.3496v-24.29c0 -4.41992 3.58008 -8 8 -8h16\nc4.41992 0 8 3.58008 8 8v24.1201z\" />\n    <glyph glyph-name=\"file-prescription\" unicode=\"&#xf572;\" horiz-adv-x=\"384\" \nd=\"M224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136zM292.53 132.52c-6.25 6.25 -16.3799 6.25 -22.6299 0l-29.9004 -29.8994l-33.46 33.46\nc19.8398 10.8701 33.46 31.7002 33.46 55.9199c0 35.3496 -28.6504 64 -64 64h-80c-8.83984 0 -16 -7.16016 -16 -16v-160c0 -8.83984 7.16016 -16 16 -16h16c8.83984 0 16 7.16016 16 16v48h18.7402l59.3193 -59.3096l-30.0596 -30.0605\nc-6.25 -6.25 -6.25 -16.3799 0 -22.6299l11.3096 -11.3096c6.25 -6.25 16.3809 -6.25 22.6309 0l30.0596 30.0596l30.0596 -30.0703c6.25 -6.25 16.3809 -6.25 22.6309 0l11.3096 11.3105c6.25 6.25 6.25 16.3799 0 22.6299l-30.0596 30.0596l29.8994 29.9004\nc6.25 6.25 6.25 16.3799 0 22.6299zM176 176h-48v32h48c8.82031 0 16 -7.17969 16 -16s-7.17969 -16 -16 -16zM384 326.1v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7l97.9004 -98c4.5 -4.5 7 -10.5996 7 -16.9004z\" />\n    <glyph glyph-name=\"file-signature\" unicode=\"&#xf573;\" horiz-adv-x=\"576\" \nd=\"M218.17 23.8604c7.25 -14.4707 21.71 -23.4404 37.8301 -23.75l128 -0.110352v-40c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136c0 -13.2002 10.7998 -24 24 -24h136.01v-46.5498l-128 -127.09\nv-82.1201c-3.87012 0.30957 -7.46973 2.47949 -9.35938 6.25977c-11.9404 23.8604 -46.25 30.3496 -66 14.1602l-13.8809 41.6396c-3.28906 9.82031 -12.4297 16.4102 -22.7695 16.4102s-19.4805 -6.59961 -22.7803 -16.4102l-18.1895 -54.6396\nc-1.53027 -4.58008 -5.81055 -7.66016 -10.6406 -7.66016h-12.3896c-8.83984 0 -16 -7.16016 -16 -16s7.16016 -16 16 -16h12.3896c18.6201 0 35.1104 11.8701 41 29.5303l10.6104 31.8799l16.8301 -50.4697c4.4502 -13.46 23.1104 -14.8701 29.4795 -2.09082\nl7.6709 15.3408c2.7998 5.59961 7.93945 6.18945 10.0195 6.18945s7.21973 -0.599609 10.1699 -6.51953zM384 326.1v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7l97.9004 -98c4.5 -4.5 7 -10.5996 7 -16.9004zM288 101.04l162.79 161.62l67.8799 -67.8799\nl-161.68 -162.78h-68.9902v69.04zM568.54 280.67c9.9502 -9.93945 9.9502 -26.0703 0 -36.0098l-27.25 -27.25l-67.8799 67.8799l27.25 27.25c9.93945 9.94043 26.0703 9.94043 36.0098 0z\" />\n    <glyph glyph-name=\"file-upload\" unicode=\"&#xf574;\" horiz-adv-x=\"384\" \nd=\"M224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136zM289.18 95.9902c14.2803 0 21.4004 17.29 11.25 27.3594l-96.4199 95.7002\nc-6.64941 6.61035 -17.3896 6.61035 -24.04 0l-96.4199 -95.7002c-10.1396 -10.0693 -3.00977 -27.3594 11.2705 -27.3594h65.1797v-80c0 -8.83984 7.16016 -16 16 -16h32c8.83984 0 16 7.16016 16 16v80h65.1797zM377 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128\nv128h6.09961c6.40039 0 12.5 -2.5 17 -7z\" />\n    <glyph glyph-name=\"fill\" unicode=\"&#xf575;\" \nd=\"M502.63 230.94c12.4902 -12.5 12.4902 -32.7607 0 -45.2607l-221.57 -221.569c-18.75 -18.75 -43.3096 -28.1201 -67.8799 -28.1201c-24.5596 0 -49.1201 9.37988 -67.8701 28.1201l-117.189 117.189c-37.4902 37.4902 -37.4902 98.2598 0 135.75l94.7598 94.7598\nl-86.1895 86.1807c-6.24023 6.25 -6.24023 16.3799 0 22.6299l22.6191 22.6104c6.24023 6.25 16.3809 6.25 22.6201 0l86.1807 -86.1807l81.5801 81.5801c6.23926 6.25 14.4297 9.37012 22.6191 9.37012c8.19043 0 16.3809 -3.12012 22.6309 -9.37012zM386.41 159.97\nl48.3496 48.3398l-162.45 162.44l-58.9492 -58.9502l58.6094 -58.5996c12.4902 -12.4902 12.4902 -32.75 0 -45.2402c-12.4893 -12.4902 -32.75 -12.4902 -45.2393 0l-58.6104 58.5996l-81.6104 -81.6094l-13.1494 -13.1504\nc-3.86035 -3.84961 -6.07031 -7.99023 -7.43066 -11.8301h320.48z\" />\n    <glyph glyph-name=\"fill-drip\" unicode=\"&#xf576;\" horiz-adv-x=\"576\" \nd=\"M512 128c0 0 64 -92.6504 64 -128s-28.6602 -64 -64 -64s-64 28.6504 -64 64s64 128 64 128zM502.63 230.94c12.4902 -12.5 12.4902 -32.75 -0.00976562 -45.25l-221.57 -221.57c-18.7402 -18.75 -43.2998 -28.1201 -67.8701 -28.1201\nc-24.5596 0 -49.1299 9.37988 -67.8701 28.1201l-117.189 117.189c-37.4902 37.4902 -37.4902 98.2705 0 135.75l94.7598 94.7607l-86.1895 86.1797c-6.24023 6.24023 -6.24023 16.3701 0 22.6201l22.6191 22.6201c6.24023 6.25 16.3701 6.25 22.6201 0l86.1807 -86.1904\nl81.5801 81.5801c6.23926 6.25 14.4297 9.37012 22.6191 9.37012c8.19043 0 16.3809 -3.12012 22.6309 -9.37012zM386.41 159.97l48.3398 48.3398l-162.44 162.44l-58.9492 -58.9502l58.5996 -58.5996c12.4902 -12.4902 12.4902 -32.75 0 -45.2402\ns-32.75 -12.4902 -45.2402 0l-58.5996 58.5996l-81.6104 -81.6094l-13.1494 -13.1504c-3.86035 -3.84961 -6.07031 -7.99023 -7.43066 -11.8301h320.48z\" />\n    <glyph glyph-name=\"fingerprint\" unicode=\"&#xf577;\" \nd=\"M256.12 202.04c13.2598 0 24 -10.75 23.9902 -24c1.55957 -99.1104 -15.9502 -176.61 -29.4805 -224.521c-2.97949 -10.5996 -12.6104 -17.5195 -23.0898 -17.5195c-20.9697 0 -25.8496 20.7695 -23.1201 30.4902c19.5605 69.6494 28.8398 139.3 27.7002 211.55\nc0 13.2598 10.75 24 24 24zM255.26 283.77c56.9707 -0.839844 104.03 -46.9199 104.91 -102.72c0.790039 -50.8994 -2.99023 -102.08 -11.2695 -152.109c-0.770508 -4.6709 -7.61035 -23.1006 -27.5801 -19.7705c-13.0703 2.16016 -21.9307 14.5205 -19.7607 27.5801\nc7.80078 47.2197 11.3809 95.5 10.6104 143.55c-0.469727 30.1299 -26.3096 55 -57.6201 55.4697c-34.5303 0.150391 -54.8594 -26.3896 -54.4502 -52.3398c0.800781 -51.4395 -4.0293 -102.93 -14.3691 -153.02c-2.69043 -12.9805 -15.3105 -21.3105 -28.3604 -18.6406\nc-12.9697 2.6709 -21.3301 15.3809 -18.6396 28.3604c9.61914 46.6396 14.1191 94.6104 13.3691 142.55c-0.849609 54.0205 41.9004 101.16 103.16 101.09zM144.57 303.55c10.2793 -8.37012 11.8398 -23.4795 3.48926 -33.7598\nc-18.7998 -23.0898 -28.4697 -51.0898 -28 -80.9697c0.640625 -40.6699 -2.66992 -81.4902 -9.85938 -121.33c-0.820312 -4.5498 -7.78027 -22.8604 -27.8906 -19.3604c-13.0498 2.36035 -21.6992 14.8398 -19.3594 27.8896c6.63965 36.7803 9.7002 74.4707 9.10938 112.051\nc-0.639648 40.7197 13.1309 80.5 38.75 112c8.39062 10.2793 23.46 11.8193 33.7607 3.47949zM254.04 365.88c101.09 -1.5 184.6 -83.0801 186.16 -181.83c0.0615234 -3.97852 0.111328 -10.4375 0.111328 -14.417c0 -29.1934 -2.68848 -76.4277 -6.00195 -105.433\nc-1.06934 -9.23047 -9.85938 -23.0605 -26.5791 -21.1104c-13.1602 1.5 -22.6104 13.4102 -21.1104 26.5801c4.2998 37.5205 6.16992 75.75 5.58008 113.63c-1.15039 73.0801 -63.4502 133.45 -138.88 134.58c-11.5303 0.0800781 -22.9502 -1.08008 -34 -3.68945\nc-12.8906 -3 -25.8301 4.93945 -28.8906 17.8291c-3.04004 12.9102 4.94043 25.8301 17.8301 28.8906c14.9102 3.53027 30.3701 5.37988 45.7803 4.96973zM506.11 244.43c6.22949 -28.2295 6.00977 -50.1602 5.83008 -72.3398\nc-0.110352 -13.1895 -10.8301 -23.7998 -24 -23.7998h-0.200195c-13.25 0.110352 -23.9102 10.9297 -23.7998 24.2002c0.209961 24.1895 0.00976562 40.1895 -4.7002 61.5996c-2.86035 12.9502 5.31934 25.75 18.2598 28.6104\nc13.0996 2.92969 25.75 -5.35059 28.6104 -18.2705zM465.99 335.15c7.62012 -10.8408 5 -25.8105 -5.83984 -33.4307c-10.8604 -7.58984 -25.8105 -5 -33.4199 5.86035c-39.8906 56.8301 -105.171 91.3604 -174.62 92.3896\nc-56.3408 0.810547 -108.92 -20.0596 -147.681 -58.8594c-37.1201 -37.1406 -57.1094 -86.5 -56.2793 -139l-0.160156 -23.6406c-0.379883 -13 -11.0498 -23.2998 -23.9707 -23.2998c-0.239258 0 -0.489258 0 -0.719727 0.0205078\nc-13.25 0.379883 -23.6699 11.4395 -23.2803 24.6895l0.120117 21.4697c-1.04004 65.6104 23.9502 127.28 70.3203 173.71c48.0098 48.0303 112.56 73.7607 182.35 72.9209c84.79 -1.27051 164.48 -43.4404 213.181 -112.83z\" />\n    <glyph glyph-name=\"fish\" unicode=\"&#xf578;\" horiz-adv-x=\"576\" \nd=\"M327.1 352c137.46 0 248.9 -128 248.9 -160s-111.44 -160 -248.9 -160c-89.9697 0 -168.55 54.7695 -212.279 101.62l-87.3301 -66.0498c-12.1299 -9.16992 -30.2402 0.599609 -27.1406 14.6602l24.1904 109.77l-24.1797 109.76\nc-3.10059 14.0605 15.0098 23.8398 27.1396 14.6602l87.3301 -66.0498c43.7295 46.8604 122.3 101.63 212.27 101.63zM414.53 168c13.25 0 24 10.75 24 24c0 13.2598 -10.7402 24 -24 24c-13.25 0 -24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24z\" />\n    <glyph glyph-name=\"flushed\" unicode=\"&#xf579;\" horiz-adv-x=\"496\" \nd=\"M344 248c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24s-24 10.7002 -24 24s10.7002 24 24 24zM152 248c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24s-24 10.7002 -24 24s10.7002 24 24 24zM248 440c137 0 248 -111 248 -248s-111 -248 -248 -248\ns-248 111 -248 248s111 248 248 248zM80 224c0 -39.7998 32.2002 -72 72 -72s72 32.2002 72 72s-32.2002 72 -72 72s-72 -32.2002 -72 -72zM312 48c21.2002 0 21.2002 32 0 32h-128c-21.2002 0 -21.2002 -32 0 -32h128zM344 152c39.7998 0 72 32.2002 72 72\ns-32.2002 72 -72 72s-72 -32.2002 -72 -72s32.2002 -72 72 -72z\" />\n    <glyph glyph-name=\"frown-open\" unicode=\"&#xf57a;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM136 240c0 -17.7002 14.2998 -32 32 -32s32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32zM323.3 56.7002c11.4004 -3.5 22.5 6.2002 20.5 18.0996\nc-7 39.9004 -60.0996 61.2002 -95.7998 61.2002s-88.7998 -21.2002 -95.7998 -61.2002c-2 -11.7998 9 -21.5996 20.5 -18.0996c31.2002 9.59961 59.3994 15.2998 75.2998 15.2998s44.0996 -5.7002 75.2998 -15.2998zM328 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32\ns-32 -14.2998 -32 -32s14.2998 -32 32 -32z\" />\n    <glyph glyph-name=\"glass-martini-alt\" unicode=\"&#xf57b;\" \nd=\"M502.05 390.4l-214.05 -214.04v-192.36h56c22.0898 0 40 -17.9102 40 -40c0 -4.41992 -3.58008 -8 -8 -8h-240c-4.41992 0 -8 3.58008 -8 8c0 22.0898 17.9102 40 40 40h56v192.36l-214.05 214.04c-21.25 21.2598 -6.2002 57.5996 23.8496 57.5996h444.4\nc30.0498 0 45.0996 -36.3398 23.8496 -57.5996zM443.77 400h-375.529l48 -48h279.529z\" />\n    <glyph glyph-name=\"globe-africa\" unicode=\"&#xf57c;\" horiz-adv-x=\"496\" \nd=\"M248 440c136.97 0 248 -111.03 248 -248s-111.03 -248 -248 -248s-248 111.03 -248 248s111.03 248 248 248zM408 224.5c0 8.55957 6.94043 15.5 15.5 15.5h18.4297c-19.0693 76.9805 -82.6992 136.37 -161.92 149.21v-21.7002c0 -8.55957 -6.93945 -15.5 -15.5 -15.5\nh-24.21c-5.17969 0 -10.0195 -2.58984 -12.8896 -6.89941l-8.08008 -12.1104c-2.13965 -3.20996 -5.40039 -5.5 -9.13965 -6.44043l-14.4502 -3.60938c-6.90039 -1.73047 -11.7402 -7.93066 -11.7402 -15.04v-4.40039c0 -8.55957 6.94043 -15.5 15.5 -15.5h90.0498\nh0.00292969c3.54297 0 8.45215 -2.0332 10.957 -4.54004l6.91992 -6.91992c2.91016 -2.91016 6.85059 -4.54004 10.96 -4.54004h10.0908c8.55957 0 15.5 -6.93945 15.5 -15.5c0 -6.66992 -4.27051 -12.5898 -10.6006 -14.7002l-47.3096 -15.7695\nc-3.90039 -1.2998 -8.15039 -1 -11.8301 0.839844l-14.7207 7.36035c-7.5791 3.7998 -15.9492 5.76953 -24.4297 5.76953h-0.889648c-10.0527 -0.00195312 -24.7383 -4.89941 -32.7803 -10.9297l-27.5801 -20.6904c-13.75 -10.3193 -21.8496 -26.5098 -21.8496 -43.6992\nv-14.0605c0.00195312 -12.4902 7.16992 -29.7959 16 -38.6299c10.25 -10.2402 24.1396 -16 38.6299 -16h25.8799c8.55957 0 15.5 -6.94043 15.5 -15.5v-29.8896v-0.00390625c0 -10.2822 3.73145 -26.0898 8.33008 -35.2861\nc4.7002 -9.40039 14.3096 -15.3398 24.8203 -15.3398c8.19824 0.000976562 18.542 5.53809 23.0898 12.3594l13.0293 19.5498c5.9248 8.88477 17.125 21.9482 25 29.1602c2.4707 2.27051 4.14062 5.27051 4.76074 8.56055l4.2998 22.8301\nc0.439453 2.3291 1.41016 4.5293 2.83008 6.42969l18.7402 24.9795c2.00977 2.68066 3.09961 5.9502 3.09961 9.30078v11.3398c0 8.55957 -6.94043 15.5 -15.5 15.5h-8.20996c-5.17969 0 -10.0205 2.58984 -12.8896 6.89941l-13.2402 19.8604\nc-5.66992 8.50977 -1.70996 20.0703 7.99023 23.2998l2.64941 0.879883c1.31641 0.4375 3.50977 0.792969 4.89746 0.792969c2.5918 0 6.44531 -1.16602 8.60254 -2.60254l18.21 -12.1396c2.15527 -1.43945 6.00781 -2.60742 8.59961 -2.60742\nc2.01953 0 5.125 0.733398 6.93066 1.63672l15.3896 7.7002c5.25 2.62012 8.57031 7.99023 8.57031 13.8604v6.92969z\" />\n    <glyph glyph-name=\"globe-americas\" unicode=\"&#xf57d;\" horiz-adv-x=\"496\" \nd=\"M248 440c136.97 0 248 -111.03 248 -248s-111.03 -248 -248 -248s-248 111.03 -248 248s111.03 248 248 248zM330.29 82.4004c7.56934 7.52832 13.7168 22.3037 13.7197 32.9795v0.00488281c0 6.97266 -4 16.6338 -8.92969 21.5654l-13.6904 13.6895\nc-6.00977 6 -14.1396 9.37012 -22.6299 9.37012h-66.75c-9.41016 4.70996 -21.4795 32 -32 32c-10.5195 0 -20.8994 2.4502 -30.3096 7.16016l-11.0801 5.54004c-4.0498 2.03027 -6.61035 6.16016 -6.61035 10.6904v0.00292969c0 4.75391 3.66016 9.83301 8.16992 11.3369\nl31.1699 10.3896c1.3584 0.452148 3.62305 0.818359 5.05469 0.818359c3.30078 0 8.00293 -1.75488 10.4961 -3.91797l9.2793 -8.06055c1.4502 -1.25977 3.31055 -1.95996 5.24023 -1.95996h5.63965c5.94043 0 9.81055 6.25977 7.15039 11.5801l-15.5898 31.1904\nc-0.464844 0.931641 -0.84082 2.53223 -0.84082 3.57227c0 1.86621 1.08398 4.43555 2.4209 5.7373l9.91992 9.65039c1.5 1.45996 3.5 2.26953 5.58008 2.26953h8.99023h0.00292969c1.82812 0 4.3623 1.04883 5.65625 2.33984l8 8\nc3.12012 3.12012 3.12012 8.19043 0 11.3105l-4.68945 4.68945c-3.12012 3.12012 -3.12012 8.19043 0 11.3105l10.3398 10.3398l4.69043 4.67969c6.25 6.25 6.25 16.3799 0 22.6299l-28.3008 28.3008c-8.26953 -0.310547 -16.3994 -1.12988 -24.3896 -2.41992v-11.3008\nc0 -11.8994 -12.5195 -19.6299 -23.1602 -14.3096l-24.0098 12.0098c-45.8398 -19.8496 -82.7305 -56.3896 -103.2 -101.89c9.92969 -14.7197 25.21 -37.3701 34.5898 -51.1406c4.29395 -6.3252 12.3848 -15.6172 18.0605 -20.7393l0.799805 -0.720703\nc9.5498 -8.60938 20.1699 -15.9697 31.6504 -21.75c14 -7.0498 34.4395 -18.1592 48.8096 -26.1094c10.1904 -5.62988 16.46 -16.3301 16.46 -27.9707v-32.0098c0 -8.49023 3.37012 -16.6299 9.37012 -22.6299c14.9902 -14.9902 24.3203 -38.6299 22.6299 -51.25v-27.3799\nc14.6504 0 28.8896 1.69043 42.6504 4.69043l17.3896 46.8496c2.04004 5.49023 3.25977 11.21 4.76953 16.8701c1.07031 4.00977 3.18066 7.70996 6.1709 10.71c3.31934 3.33008 7.40918 7.39941 11.3096 11.2803zM417 173.75l29.1797 -7.29004\nc1.08008 8.37988 1.82031 16.8701 1.82031 25.54c0 32.1299 -7.7998 62.4102 -21.3203 89.3301l-12.9795 -6.49023c-3.74023 -1.85938 -6.91992 -4.67969 -9.24023 -8.14941l-19.5898 -29.3809c-2.22754 -3.33594 -4.03516 -9.29883 -4.03516 -13.3096\ns1.80762 -9.97363 4.03516 -13.3096l17.9795 -26.9707c3.31055 -4.96973 8.36035 -8.51953 14.1504 -9.96973z\" />\n    <glyph glyph-name=\"globe-asia\" unicode=\"&#xf57e;\" horiz-adv-x=\"496\" \nd=\"M248 440c136.97 0 248 -111.03 248 -248s-111.03 -248 -248 -248s-248 111.03 -248 248s111.03 248 248 248zM236.66 199.77l17.3701 28.9502c1.7998 2.99023 6.2002 2.82031 7.75977 -0.299805c1.34961 -2.70996 4.12012 -4.41992 7.15039 -4.41992h3.05957\nc4.41992 0 8 3.58008 8 8v78.1201c0 6.05957 -3.41992 11.5996 -8.83984 14.3096l-10.8301 5.41016c-5.49023 2.75 -5.96973 10.4004 -0.860352 13.8105l50.1602 38.5293c-19.4297 6.31055 -40.1201 9.82031 -61.6299 9.82031c-110.28 0 -200 -89.7197 -200 -200\nc0 -10.9199 1.12012 -21.5498 2.80957 -31.9902h62.5703c4.24023 0 8.31055 1.69043 11.3105 4.69043l19.4697 19.46c3.85938 3.85938 10.3701 2.7998 12.8096 -2.08008l22.6201 -45.2305c2.70996 -5.42969 8.25 -8.84961 14.3105 -8.84961h6.10938\nc8.83984 0 16 7.16016 16 16v9.37012c0 4.24023 -1.68945 8.30957 -4.68945 11.3096l-5.66016 5.66016c-3.12012 3.12012 -3.12012 8.19043 0 11.3105l5.66016 5.65918c3 3 7.06934 4.69043 11.3096 4.69043h0.310547c5.61914 0 10.8291 2.9502 13.7197 7.76953z\nM408 89.5703l-0.00976562 24.5996c0 4.24023 -1.69043 8.31055 -4.69043 11.3105l-11.9102 11.9092c-1.5 1.5 -2.33984 3.54004 -2.33984 5.66016v12.9307c0 2.20996 -1.79004 4 -4 4h-6.05957c-1.78027 0 -3.33984 -1.1709 -3.83984 -2.88086l-4.2002 -14.4697\nc-0.490234 -1.7002 -2.06055 -2.87988 -3.83984 -2.87988h-3.80078c-1.4707 0.000976562 -3.12305 1.10254 -3.68945 2.45996l-5.35059 12.8496c-1.23926 2.99023 -4.15918 4.93066 -7.38965 4.93066h-12.0898h-0.0117188c-1.4082 0 -3.48145 -0.663086 -4.62793 -1.48047\nl-23.71 -16.8896c-1.73047 -1.23047 -3.61035 -2.25977 -5.59082 -3.0498l-39.3398 -15.7402c-3.04004 -1.21973 -5.0293 -4.16016 -5.0293 -7.42969v-10.2002v-0.00292969c0 -1.8291 1.04785 -4.36328 2.33984 -5.65723l11.9102 -11.9102\nc3 -3 7.06934 -4.68945 11.3096 -4.68945h10.3398c1.31055 0 2.61035 0.15918 3.87988 0.479492l21.2705 5.32031c1.76465 0.441406 4.67383 0.798828 6.49316 0.798828c6.12012 0 14.5986 -3.51172 18.9268 -7.83887l13.0098 -13.0098\nc3 -3 7.07031 -4.69043 11.3096 -4.69043h15.1602c4.24023 0 8.31055 1.69043 11.3105 4.69043l9.56934 9.56934c3 3 4.69043 7.07031 4.69043 11.3105z\" />\n    <glyph glyph-name=\"grimace\" unicode=\"&#xf57f;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM144 48v40h-40v-8c0 -17.7002 14.2998 -32 32 -32h8zM144 104v40h-8c-17.7002 0 -32 -14.2998 -32 -32v-8h40zM136 240c0 -17.7002 14.2998 -32 32 -32s32 14.2998 32 32\ns-14.2998 32 -32 32s-32 -14.2998 -32 -32zM208 48v40h-48v-40h48zM208 104v40h-48v-40h48zM272 48v40h-48v-40h48zM272 104v40h-48v-40h48zM336 48v40h-48v-40h48zM336 104v40h-48v-40h48zM328 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32\ns14.2998 -32 32 -32zM392 80v8h-40v-40h8c17.7002 0 32 14.2998 32 32zM392 104v8c0 17.7002 -14.2998 32 -32 32h-8v-40h40z\" />\n    <glyph glyph-name=\"grin\" unicode=\"&#xf580;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM328 272c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32s32 14.2998 32 32s-14.2998 32 -32 32zM168 272c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32\ns32 14.2998 32 32s-14.2998 32 -32 32zM248 16c60.5996 0 134.5 38.2998 143.8 93.2998c1.90039 11.7998 -9.39941 21.6006 -20.7002 17.9004c-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002s-92.9004 5.5 -123.1 15.2002\nc-11.4004 3.7002 -22.7002 -6.10059 -20.7002 -17.9004c9.2998 -55 83.2002 -93.2998 143.8 -93.2998z\" />\n    <glyph glyph-name=\"grin-alt\" unicode=\"&#xf581;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM311.7 311.3c-12.4004 -18.3994 -15.2002 -36.8994 -15.7002 -55.2998c0.599609 -18.4004 3.2998 -36.9004 15.7002 -55.2998c8 -11.7002 25.0996 -11.4004 32.7002 0\nc12.3994 18.3994 15.1992 36.8994 15.6992 55.2998c-0.599609 18.4004 -3.2998 36.9004 -15.6992 55.2998c-8 11.7002 -25.1006 11.4004 -32.7002 0zM151.7 311.3c-12.4004 -18.3994 -15.2002 -36.8994 -15.7002 -55.2998\nc0.599609 -18.4004 3.2998 -36.9004 15.7002 -55.2998c8 -11.7002 25.0996 -11.4004 32.7002 0c12.3994 18.3994 15.1992 36.8994 15.6992 55.2998c-0.599609 18.4004 -3.2998 36.9004 -15.6992 55.2998c-8 11.7002 -25.1006 11.4004 -32.7002 0zM248 16\nc60.5996 0 134.5 38.2998 143.8 93.2998c1.90039 11.7998 -9.2998 21.6006 -20.7002 17.9004c-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002s-92.9004 5.5 -123.1 15.2002c-11.4004 3.7002 -22.7002 -6.10059 -20.7002 -17.9004\nc9.2998 -55 83.2002 -93.2998 143.8 -93.2998z\" />\n    <glyph glyph-name=\"grin-beam\" unicode=\"&#xf582;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM328 296c-23.7998 0 -52.7002 -29.2998 -55.7998 -71.4004c-0.700195 -8.5 10.7998 -11.7998 14.8994 -4.5l9.5 17c7.7002 13.7002 19.2002 21.6006 31.5 21.6006\nc12.3008 0 23.8008 -7.90039 31.5 -21.6006l9.5 -17c4.10059 -7.39941 15.6006 -4.09961 14.9004 4.5c-3.2998 42.1006 -32.2002 71.4004 -56 71.4004zM168 296c-23.7998 0 -52.7002 -29.2998 -55.7998 -71.4004c-0.700195 -8.5 10.7002 -11.8994 14.8994 -4.5l9.5 17\nc7.7002 13.7002 19.2002 21.6006 31.5 21.6006c12.3008 0 23.8008 -7.90039 31.5 -21.6006l9.5 -17c4.10059 -7.39941 15.6006 -4.09961 14.9004 4.5c-3.2998 42.1006 -32.2002 71.4004 -56 71.4004zM248 16c60.5996 0 134.5 38.2998 143.8 93.2998\nc1.90039 11.7998 -9.2998 21.6006 -20.7002 17.9004c-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002s-92.9004 5.5 -123.1 15.2002c-11.3008 3.7002 -22.7002 -6 -20.7002 -17.9004c9.2998 -55 83.2002 -93.2998 143.8 -93.2998z\" />\n    <glyph glyph-name=\"grin-beam-sweat\" unicode=\"&#xf583;\" horiz-adv-x=\"504\" \nd=\"M456 320c-26.5 0 -48 21 -48 47c0 20 28.5 60.4004 41.5996 77.7998c3.2002 4.2998 9.60059 4.2998 12.8008 0c13.0996 -17.3994 41.5996 -57.7998 41.5996 -77.7998c0 -26 -21.5 -47 -48 -47zM456 288c6.7998 0 13.2002 1.09961 19.5 2.59961\nc13.0996 -30.1992 20.5 -63.5 20.5 -98.5996c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248c50.2998 0 97 -15.0996 136.1 -40.7998c-7.7998 -18 -8.09961 -27.7998 -8.09961 -32.2002c0 -43.5996 35.9004 -79 80 -79zM328 296\nc-23.7998 0 -52.7002 -29.2998 -55.7998 -71.4004c-0.700195 -8.5 10.7998 -11.8994 14.8994 -4.5l9.5 17c7.7002 13.7002 19.2002 21.6006 31.5 21.6006c12.3008 0 23.8008 -7.90039 31.5 -21.6006l9.5 -17c4.10059 -7.5 15.6006 -4.09961 14.9004 4.5\nc-3.2998 42.1006 -32.2002 71.4004 -56 71.4004zM168 296c-23.7998 0 -52.7002 -29.2998 -55.7998 -71.4004c-0.700195 -8.5 10.7002 -11.8994 14.8994 -4.5l9.5 17c7.7002 13.7002 19.2002 21.6006 31.5 21.6006c12.3008 0 23.8008 -7.90039 31.5 -21.6006l9.5 -17\nc4.10059 -7.5 15.6006 -4.09961 14.9004 4.5c-3.2998 42.1006 -32.2002 71.4004 -56 71.4004zM248 16c60.5996 0 134.5 38.2998 143.8 93.2998c1.90039 11.7002 -9.2002 21.6006 -20.7002 17.9004c-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002\ns-92.9004 5.5 -123.1 15.2002c-11.4004 3.7002 -22.7002 -6.10059 -20.7002 -17.9004c9.2998 -55 83.2002 -93.2998 143.8 -93.2998z\" />\n    <glyph glyph-name=\"grin-hearts\" unicode=\"&#xf584;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM90.4004 264.4c-7.7002 -20.2002 3.7998 -41.8008 24.1992 -47.2002l70.2002 -18.2002c4.60059 -1.2002 9.2998 1.5 10.5 6l19.4004 69.9004\nc5.59961 20.2998 -7.40039 41.0996 -28.7998 44.5c-18.7002 3 -36.5 -9.80078 -41.5 -27.9004l-2 -7.09961l-7.10059 1.89941c-18.2002 4.7998 -38.2002 -4.2998 -44.8994 -21.8994zM248 16c60.5996 0 134.5 38.2998 143.8 93.2998\nc1.90039 11.7998 -9.2998 21.5 -20.7002 17.9004c-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002s-92.9004 5.5 -123.1 15.2002c-11.5 3.59961 -22.7002 -6.10059 -20.7002 -17.9004c9.2998 -55 83.2002 -93.2998 143.8 -93.2998zM381.4 217.3\nc20.3994 5.2998 31.8994 26.9004 24.1992 47.2002c-6.69922 17.5996 -26.6992 26.5996 -44.8994 21.9004l-7.10059 -1.90039l-2 7.09961c-5.09961 18.1006 -22.8994 30.9004 -41.5 27.9004c-21.3994 -3.40039 -34.3994 -24.2002 -28.7998 -44.5l19.4004 -69.9004\nc1.2998 -4.5 6 -7.19922 10.5 -6z\" />\n    <glyph glyph-name=\"grin-squint\" unicode=\"&#xf585;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM281.8 250.3c-7.7002 -4.7002 -7.7002 -15.8994 0 -20.5996l80 -48c11.5 -6.7998 24.1006 7.59961 15.4004 18l-33.6006 40.2998l33.6006 40.2998\nc8.59961 10.2998 -3.7998 24.9004 -15.4004 18zM118.8 280.3l33.6006 -40.2998l-33.6006 -40.2998c-8.59961 -10.4004 3.90039 -24.7998 15.4004 -18l80 48c7.7998 4.7002 7.7998 15.8994 0 20.5996l-80 48c-11.6006 6.90039 -24 -7.7002 -15.4004 -18zM248 16\nc60.5996 0 134.5 38.2998 143.8 93.2998c1.90039 11.7002 -9.2002 21.6006 -20.7002 17.9004c-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002s-92.9004 5.5 -123.1 15.2002c-11.3008 3.7002 -22.7002 -6 -20.7002 -17.9004\nc9.2998 -55 83.2002 -93.2998 143.8 -93.2998z\" />\n    <glyph glyph-name=\"grin-squint-tears\" unicode=\"&#xf586;\" \nd=\"M409.6 336.1c-5.59961 -0.799805 -10.2998 3.90039 -9.5 9.40039c3.30078 22.5996 12 73.5 26.8008 88.2998c19.0996 19.2002 50.6992 18.9004 70.2998 -0.700195c19.5996 -19.5996 19.8994 -51 0.700195 -70.1992\nc-14.8008 -14.8008 -65.7002 -23.6006 -88.3008 -26.8008zM102.4 47.9004c5.59961 0.799805 10.2998 -3.90039 9.5 -9.40039c-3.30078 -22.5996 -12 -73.5 -26.8008 -88.2998c-19.1992 -19.2002 -50.5996 -18.9004 -70.1992 0.700195\nc-19.6006 19.5996 -19.9004 51.0996 -0.800781 70.1992c14.8008 14.8008 65.7002 23.6006 88.3008 26.8008zM414.1 304.4c24 3.5 42.1006 7.39941 56.5 11.5c54.8008 -94.9004 42 -218.2 -39.1992 -299.301c-81.2002 -81.0996 -204.5 -94 -299.301 -39.1992\nc4.10059 14.3994 8.10059 32.5 11.5 56.5c2.90039 20.5 -12.5 49.5996 -45.6992 45.6992c-24.1006 -3.5 -42.1006 -7.39941 -56.5 -11.5c-54.8008 94.9004 -41.9004 218.2 39.1992 299.301c81.2002 81.0996 204.5 94 299.301 39.1992\nc-4.10059 -14.3994 -8.10059 -32.5 -11.5 -56.5c-2.90039 -20.5996 12.6992 -49.5996 45.6992 -45.6992zM255.7 342l-22.5 -90.5996c-2.2002 -8.60059 5.59961 -16.7002 14.5 -14.5l90.5 22.5996c13.0996 3.2998 11.5996 22.4004 -1.7998 23.5996l-52.3008 4.80078\nl-4.7998 52.2998c-1.2002 13.2998 -20.2998 15 -23.5996 1.7998zM164.8 111.7c1.2998 -13.4004 20.4004 -14.9004 23.5 -1.7002l22.6006 90.5c2.19922 8.7002 -5.7002 16.7002 -14.5 14.5l-90.5 -22.5996c-13.1006 -3.30078 -11.6006 -22.4004 1.7998 -23.6006\nl52.2998 -4.7998zM380.5 67.5c42.7998 42.9004 68 122.3 35.7002 167.6c-7.10059 9.90039 -21.9004 8.5 -27.2998 -2c-14.6006 -28.1992 -42.4004 -63.8994 -76.3008 -97.7998c-33.8994 -33.8994 -69.5 -61.7002 -97.7998 -76.2998\nc-10.7002 -5.40039 -11.7998 -20.2998 -2 -27.2002c14.4004 -10.2002 32.1006 -14.7002 51 -14.7002c41 0 87.4004 21.1006 116.7 50.4004z\" />\n    <glyph glyph-name=\"grin-stars\" unicode=\"&#xf587;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM94.5996 279.1c-6.19922 -1 -8.89941 -8.59961 -4.2998 -13.2998l25.4004 -24.5996l-6 -34.9004c-1 -6.2002 5.2998 -11 11 -7.89941l31.2998 16.2998l31.2002 -16.2002\nc5.7002 -3.09961 12 1.7002 11 7.90039l-6 34.8994l25.3994 24.6006c4.60059 4.59961 1.90039 12.1992 -4.2998 13.1992l-34.8994 5l-15.5 31.6006c-2.90039 5.7998 -11 5.7998 -13.9004 0l-15.5 -31.6006zM248 16c60.5996 0 134.5 38.2998 143.8 93.2998\nc1.90039 11.7998 -9.2002 21.6006 -20.7002 17.9004c-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002s-92.9004 5.5 -123.1 15.2002c-11.4004 3.59961 -22.7002 -6.10059 -20.7002 -17.9004c9.2998 -55 83.2002 -93.2998 143.8 -93.2998zM405.7 265.9\nc4.59961 4.59961 1.89941 12.1992 -4.40039 13.0996l-34.8994 5l-15.5 31.5996c-2.90039 5.80078 -11 5.80078 -13.9004 0l-15.5 -31.5996l-34.9004 -5c-6.19922 -1 -8.7998 -8.59961 -4.2998 -13.2002l25.4004 -24.5996l-6 -34.9004c-1 -6.2002 5.2998 -11 11 -7.89941\nl31.2998 16.2998l31.2998 -16.2002c5.7002 -3.09961 12 1.7002 11 7.90039l-6 34.8994z\" />\n    <glyph glyph-name=\"grin-tears\" unicode=\"&#xf588;\" horiz-adv-x=\"640\" \nd=\"M102.4 191.9c5.59961 0.799805 10.2998 -3.90039 9.5 -9.40039c-3.30078 -22.5996 -12 -73.5 -26.8008 -88.2998c-19.1992 -19.2002 -50.5996 -18.9004 -70.1992 0.700195c-19.6006 19.5996 -19.9004 51.0996 -0.800781 70.1992\nc14.8008 14.8008 65.7002 23.6006 88.3008 26.8008zM625.8 165.1c19.2002 -19.0996 18.7998 -50.6992 -0.799805 -70.2998c-19.5996 -19.5996 -51 -19.8994 -70.2002 -0.700195c-14.7998 14.8008 -23.5996 65.7002 -26.7998 88.3008c-0.799805 5.59961 4 10.2998 9.5 9.5\nc22.5996 -3.30078 73.5 -12 88.2998 -26.8008zM496.4 177.9c11.7998 -82.3008 29.8994 -100.4 35.7998 -106.301c0.899414 -1 2 -1.59961 3 -2.5c-42.7002 -74.6992 -123 -125.1 -215.2 -125.1s-172.5 50.4004 -215.2 125c1 0.900391 2.10059 1.59961 3 2.5\nc5.90039 6 24 24.0996 35.7998 106.4c2.90039 20.3994 -12.5 49.5996 -45.6992 45.6992c-8.90039 -1.2998 -16.8008 -2.69922 -24.3008 -4.09961c13.7002 124 118.7 220.5 246.4 220.5s232.7 -96.5 246.4 -220.5c-7.5 1.40039 -15.4004 2.7998 -24.3008 4.09961\nc-26.5996 3.80078 -49.5 -19.0996 -45.6992 -45.6992zM400 296c-23.7998 0 -52.7002 -29.2998 -55.7998 -71.4004c-0.700195 -8.5 10.7002 -11.8994 14.8994 -4.5l9.5 17c7.7002 13.7002 19.2002 21.6006 31.5 21.6006c12.3008 0 23.8008 -7.90039 31.5 -21.6006l9.5 -17\nc4.10059 -7.5 15.6006 -4.09961 14.9004 4.5c-3.2998 42.1006 -32.2002 71.4004 -56 71.4004zM240 296c-23.7998 0 -52.7002 -29.2998 -55.7998 -71.4004c-0.700195 -8.5 10.7002 -11.8994 14.8994 -4.5l9.5 17c7.7002 13.7002 19.2002 21.6006 31.5 21.6006\nc12.3008 0 23.8008 -7.90039 31.5 -21.6006l9.5 -17c4.10059 -7.5 15.6006 -4.09961 14.9004 4.5c-3.2998 42.1006 -32.2002 71.4004 -56 71.4004zM320 16c60.5996 0 134.5 38.2998 143.8 93.2998c1.90039 11.7998 -9.2998 21.6006 -20.7002 17.9004\nc-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002s-92.9004 5.5 -123.1 15.2002c-11.5 3.7002 -22.7002 -6.2002 -20.7002 -17.9004c9.2998 -55 83.2002 -93.2998 143.8 -93.2998z\" />\n    <glyph glyph-name=\"grin-tongue\" unicode=\"&#xf589;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248c0 -106.3 -67 -196.7 -161 -232c5.59961 12.2002 9 25.7002 9 40v45.5c24.7002 16.2002 43.5 38.0996 47.7998 63.7998c1.90039 11.7998 -9.2998 21.5 -20.7002 17.9004c-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002\ns-92.9004 5.5 -123.1 15.2002c-11.4004 3.59961 -22.7002 -6.10059 -20.7002 -17.9004c4.2998 -25.7002 23.0996 -47.5996 47.7998 -63.7998v-45.5c0 -14.2998 3.40039 -27.7998 9 -40c-94 35.2998 -161 125.7 -161 232c0 137 111 248 248 248zM168 208\nc17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM328 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM293.1 73.4004c0.800781 -0.400391 -0.5 0.299805 19 -9.30078v-64\nc0 -35.5996 -29.1992 -64.5 -64.8994 -64c-35.1006 0.400391 -63.1006 29.7002 -63.1006 64.9004v63c19.2002 9.59961 18 9 18.9004 9.40039c14.4004 6.5 31.0996 -2.2002 34.5996 -17.6006l1.80078 -7.7998c2.09961 -9.2002 15.1992 -9.2002 17.2998 0l1.7998 7.7998\nc3.5 15.4004 20.2002 24.1006 34.5996 17.6006z\" />\n    <glyph glyph-name=\"grin-tongue-squint\" unicode=\"&#xf58a;\" horiz-adv-x=\"496\" \nd=\"M293.1 73.4004c0.800781 -0.400391 -0.5 0.299805 19 -9.30078v-64c0 -35.5996 -29.1992 -64.5 -64.8994 -64c-35.1006 0.400391 -63.1006 29.7002 -63.1006 64.9004v63c19.2002 9.59961 18 9 18.9004 9.40039c14.4004 6.5 31.0996 -2.2002 34.5996 -17.6006\nl1.80078 -7.7998c2.09961 -9.2002 15.1992 -9.2002 17.2998 0l1.7998 7.7998c3.5 15.4004 20.2002 24.1006 34.5996 17.6006zM248 440c137 0 248 -111 248 -248c0 -106.3 -67 -196.7 -161 -232c5.59961 12.2002 9 25.7002 9 40v45.5\nc24.7002 16.2002 43.5 38.0996 47.7998 63.7998c1.90039 11.7998 -9.2998 21.6006 -20.7002 17.9004c-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002s-92.9004 5.5 -123.1 15.2002c-11.5 3.59961 -22.7002 -6.10059 -20.7002 -17.9004\nc4.2998 -25.7002 23.0996 -47.5996 47.7998 -63.7998v-45.5c0 -14.2998 3.40039 -27.7998 9 -40c-94 35.2998 -161 125.7 -161 232c0 137 111 248 248 248zM214.2 229.7c7.7002 4.7002 7.7002 15.8994 0 20.5996l-80 48c-11.6006 6.90039 -24 -7.7002 -15.4004 -18\nl33.6006 -40.2998l-33.6006 -40.2998c-8.59961 -10.4004 3.90039 -24.7998 15.4004 -18zM377.2 199.7l-33.6006 40.2998l33.6006 40.2998c8.5 10.2998 -3.7002 24.9004 -15.4004 18l-80 -48c-7.7998 -4.7002 -7.7998 -15.8994 0 -20.5996l80 -48\nc11.5 -6.7998 24.1006 7.59961 15.4004 18z\" />\n    <glyph glyph-name=\"grin-tongue-wink\" unicode=\"&#xf58b;\" horiz-adv-x=\"496\" \nd=\"M344 264c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24s-24 10.7002 -24 24s10.7002 24 24 24zM248 440c137 0 248 -111 248 -248c0 -106.3 -67 -196.7 -161 -232c5.59961 12.2002 9 25.7002 9 40v45.5c24.7002 16.2002 43.5 38.0996 47.7998 63.7998\nc1.90039 11.7998 -9.2002 21.6006 -20.7002 17.9004c-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002s-92.9004 5.5 -123.1 15.2002c-11.4004 3.59961 -22.7002 -6.10059 -20.7002 -17.9004c4.2998 -25.7002 23.0996 -47.5996 47.7998 -63.7998v-45.5\nc0 -14.2998 3.40039 -27.7998 9 -40c-94 35.2998 -161 125.7 -161 232c0 137 111 248 248 248zM192 215c8.40039 -7.40039 21.5996 -0.299805 20 10.7998c-4 25.2002 -34.2002 42.1006 -59.9004 42.1006c-25.6992 0 -55.8994 -16.9004 -59.8994 -42.1006\nc-1.7998 -11.0996 11.2998 -18.2002 19.7998 -10.7998l9.5 8.5c14.7998 13.2002 46.2002 13.2002 61 0zM344 176c35.2998 0 64 28.7002 64 64s-28.7002 64 -64 64s-64 -28.7002 -64 -64s28.7002 -64 64 -64zM293.1 73.4004c0.800781 -0.400391 -0.5 0.299805 19 -9.30078\nv-64c0 -35.5996 -29.1992 -64.5 -64.8994 -64c-35.1006 0.400391 -63.1006 29.7002 -63.1006 64.9004v63c19.2002 9.59961 18 9 18.9004 9.40039c14.4004 6.5 31.0996 -2.2002 34.5996 -17.6006l1.80078 -7.7998c2.09961 -9.2002 15.1992 -9.2002 17.2998 0l1.7998 7.7998\nc3.5 15.4004 20.2002 24.1006 34.5996 17.6006z\" />\n    <glyph glyph-name=\"grin-wink\" unicode=\"&#xf58c;\" horiz-adv-x=\"496\" \nd=\"M0 192c0 137 111 248 248 248s248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248zM200 240c0 17.7002 -14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32s32 14.2998 32 32zM368 215c8.5 -7.40039 21.5996 -0.200195 20 10.7998\nc-4 25.2002 -34.2002 42.1006 -59.9004 42.1006c-25.6992 0 -55.8994 -16.9004 -59.8994 -42.1006c-1.7998 -11.2002 11.5 -18.2002 19.7998 -10.7998l9.5 8.5c14.7998 13.2002 46.2002 13.2002 61 0zM124.9 127.2c-11.4004 3.7002 -22.7002 -6 -20.7002 -17.9004\nc9.2998 -55 83.2002 -93.2998 143.8 -93.2998s134.6 38.2998 143.8 93.2998c1.90039 11.9004 -9.39941 21.6006 -20.7002 17.9004c-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002s-92.9004 5.5 -123.1 15.2002z\" />\n    <glyph glyph-name=\"grip-horizontal\" unicode=\"&#xf58d;\" horiz-adv-x=\"448\" \nd=\"M96 160c17.6699 0 32 -14.3301 32 -32v-64c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v64c0 17.6699 14.3301 32 32 32h64zM256 160c17.6699 0 32 -14.3301 32 -32v-64c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v64\nc0 17.6699 14.3301 32 32 32h64zM416 160c17.6699 0 32 -14.3301 32 -32v-64c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v64c0 17.6699 14.3301 32 32 32h64zM96 352c17.6699 0 32 -14.3301 32 -32v-64c0 -17.6699 -14.3301 -32 -32 -32h-64\nc-17.6699 0 -32 14.3301 -32 32v64c0 17.6699 14.3301 32 32 32h64zM256 352c17.6699 0 32 -14.3301 32 -32v-64c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v64c0 17.6699 14.3301 32 32 32h64zM416 352c17.6699 0 32 -14.3301 32 -32v-64\nc0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v64c0 17.6699 14.3301 32 32 32h64z\" />\n    <glyph glyph-name=\"grip-vertical\" unicode=\"&#xf58e;\" horiz-adv-x=\"320\" \nd=\"M96 416c17.6699 0 32 -14.3301 32 -32v-64c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v64c0 17.6699 14.3301 32 32 32h64zM96 256c17.6699 0 32 -14.3301 32 -32v-64c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v64\nc0 17.6699 14.3301 32 32 32h64zM96 96c17.6699 0 32 -14.3301 32 -32v-64c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v64c0 17.6699 14.3301 32 32 32h64zM288 416c17.6699 0 32 -14.3301 32 -32v-64c0 -17.6699 -14.3301 -32 -32 -32h-64\nc-17.6699 0 -32 14.3301 -32 32v64c0 17.6699 14.3301 32 32 32h64zM288 256c17.6699 0 32 -14.3301 32 -32v-64c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v64c0 17.6699 14.3301 32 32 32h64zM288 96c17.6699 0 32 -14.3301 32 -32v-64\nc0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v64c0 17.6699 14.3301 32 32 32h64z\" />\n    <glyph glyph-name=\"headphones-alt\" unicode=\"&#xf58f;\" \nd=\"M160 160c17.6699 0 32 -14.3496 32 -32.0596v-127.881c0 -17.6992 -14.3301 -32.0596 -32 -32.0596h-16c-35.3496 0 -64 28.71 -64 64.1201v63.7598c0 35.4199 28.6504 64.1201 64 64.1201h16zM368 160c35.3496 0 64 -28.71 64 -64.1201v-63.7598\nc0 -35.4102 -28.6504 -64.1201 -64 -64.1201h-16c-17.6699 0 -32 14.3604 -32 32.0596v127.881c0 17.71 14.3301 32.0596 32 32.0596h16zM256 416c143.09 0 251.43 -119.13 256 -256v-112c0 -8.83984 -7.16016 -16 -16 -16h-16c-8.83984 0 -16 7.16016 -16 16v112\nc0 114.67 -93.3301 207.8 -208 207.82c-114.67 -0.0205078 -208 -93.1504 -208 -207.82v-112c0 -8.83984 -7.16016 -16 -16 -16h-16c-8.83984 0 -16 7.16016 -16 16v112c4.57031 136.87 112.91 256 256 256z\" />\n    <glyph glyph-name=\"headset\" unicode=\"&#xf590;\" \nd=\"M192 240v-112c0 -17.6699 -14.3301 -32 -32 -32h-16c-35.3496 0 -64 28.6504 -64 64v48c0 35.3496 28.6504 64 64 64h16c17.6699 0 32 -14.3301 32 -32zM368 96h-16c-17.6699 0 -32 14.3301 -32 32v112c0 17.6699 14.3301 32 32 32h16c35.3496 0 64 -28.6504 64 -64v-48\nc0 -35.3496 -28.6504 -64 -64 -64zM256 448c142.82 0 251.42 -118.83 256 -256v-165.72c0 -49.8604 -40.4199 -90.2803 -90.2803 -90.2803h-181.72c-26.5098 0 -48 21.4902 -48 48s21.4902 48 48 48h32c26.5098 0 48 -21.4902 48 -48h101.72\nc23.3506 0 42.2803 18.9297 42.2803 42.2803c0 0 -0.0400391 163.29 -0.120117 165.72h0.120117c0 114.69 -93.3096 208 -208 208s-208 -93.3096 -208 -208v-16c0 -8.83984 -7.16016 -16 -16 -16h-16c-8.83984 0 -16 7.16016 -16 16v16c4.58008 137.17 113.18 256 256 256z\n\" />\n    <glyph glyph-name=\"highlighter\" unicode=\"&#xf591;\" horiz-adv-x=\"544\" \nd=\"M0 -31.9805l68.3301 70.4707l67.04 -67.04l-35.4502 -35.4502zM124.61 208.03l41.5195 35.4395l173.34 -173.34l-35.5498 -41.6396c-9.5 -10.7705 -24.4199 -14.9805 -38.1504 -10.7803l-42.7393 13.0801l-50.8604 -50.8604l-96.2295 96.2305l50.9297 50.9395\nl-13.0498 42.8301c-0.876953 2.87891 -1.58887 7.65625 -1.58887 10.665c0 9.11328 5.5459 21.4043 12.3789 27.4355zM527.92 368.73c20.5 -20.5 21.5303 -53.3906 2.34961 -75.1309l-169.949 -199.06l-169.771 169.78l199.05 169.96\nc21.7402 19.1699 54.6309 18.1396 75.1201 -2.35059z\" />\n    <glyph glyph-name=\"hot-tub\" unicode=\"&#xf593;\" \nd=\"M414.21 270.35c-3.15039 25.3906 -14.6104 47.9707 -31.9697 62.1406c-27.7305 22.6299 -45.79 58.0498 -50.1299 97.1602c-1.09082 9.7793 6.48926 18.3496 16 18.3496h16.1201c7.98926 0 14.7295 -6.13965 15.7393 -14.3398\nc3.16016 -25.4004 14.6104 -47.9805 31.9805 -62.1504c27.7295 -22.6299 45.79 -58.0498 50.1299 -97.1602c1.08008 -9.7793 -6.49023 -18.3496 -16 -18.3496h-16.1201c-8 0 -14.7295 6.13965 -15.75 14.3496zM306.21 270.35\nc-3.15039 25.3906 -14.6104 47.9707 -31.9697 62.1406c-27.7305 22.6299 -45.79 58.0498 -50.1299 97.1602c-1.09082 9.7793 6.48926 18.3496 16 18.3496h16.1201c7.98926 0 14.7295 -6.13965 15.7393 -14.3398c3.16016 -25.4004 14.6104 -47.9805 31.9805 -62.1504\nc27.7295 -22.6299 45.79 -58.0498 50.1299 -97.1602c1.08008 -9.7793 -6.49023 -18.3496 -16 -18.3496h-16.1201c-8 0 -14.7295 6.13965 -15.75 14.3496zM480 192c17.6699 0 32 -14.3301 32 -32v-160c0 -35.3496 -28.6504 -64 -64 -64h-384c-35.3496 0 -64 28.6504 -64 64\nv224c0 35.3496 28.6504 64 64 64h42.6699h0.00292969c11.7754 0 28.9775 -5.73438 38.3975 -12.7998l110.93 -83.2002h224zM128 8v112c0 4.41992 -3.58008 8 -8 8h-16c-4.41992 0 -8 -3.58008 -8 -8v-112c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8zM224 8v112\nc0 4.41992 -3.58008 8 -8 8h-16c-4.41992 0 -8 -3.58008 -8 -8v-112c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8zM320 8v112c0 4.41992 -3.58008 8 -8 8h-16c-4.41992 0 -8 -3.58008 -8 -8v-112c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8zM416 8\nv112c0 4.41992 -3.58008 8 -8 8h-16c-4.41992 0 -8 -3.58008 -8 -8v-112c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8zM64 320c-35.3496 0 -64 28.6504 -64 64s28.6504 64 64 64s64 -28.6504 64 -64s-28.6504 -64 -64 -64z\" />\n    <glyph glyph-name=\"hotel\" unicode=\"&#xf594;\" horiz-adv-x=\"576\" \nd=\"M560 384h-16v-384h16c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-240v80c0 8.7998 -7.2002 16 -16 16h-32c-8.7998 0 -16 -7.2002 -16 -16v-80h-240c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h15.9805v384h-15.9805\nc-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h544c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16zM256 339.2v-38.4004c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h38.4004c6.39941 0 12.7998 6.40039 12.7998 12.7998v38.4004\nc0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-38.4004c-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998zM256 243.2v-38.4004c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h38.4004c6.39941 0 12.7998 6.40039 12.7998 12.7998v38.4004\nc0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-38.4004c-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998zM128 339.2v-38.4004c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h38.4004c6.39941 0 12.7998 6.40039 12.7998 12.7998v38.4004\nc0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-38.4004c-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998zM179.2 192c6.39941 0 12.7998 6.40039 12.7998 12.7998v38.4004c0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-38.4004\nc-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998v-38.4004c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h38.4004zM192 64h192c0 53.0195 -42.9805 96 -96 96s-96 -42.9805 -96 -96zM448 204.8v38.4004c0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-38.4004\nc-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998v-38.4004c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h38.4004c6.39941 0 12.7998 6.40039 12.7998 12.7998zM448 300.8v38.4004c0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-38.4004\nc-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998v-38.4004c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h38.4004c6.39941 0 12.7998 6.40039 12.7998 12.7998z\" />\n    <glyph glyph-name=\"joint\" unicode=\"&#xf595;\" horiz-adv-x=\"640\" \nd=\"M444.34 266.9c-35.7803 25.0693 -60.3398 63.0098 -60.3398 106.699v66.4004c0 4.41992 3.58008 8 8 8h48c4.41992 0 8 -3.58008 8 -8v-62.3096c0 -29.0303 15.8496 -54.71 39.6602 -71.3203c35.3301 -24.6504 56.3398 -64.8203 56.3398 -108.061v-30.3096\nc0 -4.41992 -3.58008 -8 -8 -8h-48c-4.41992 0 -8 3.58008 -8 8v30.3096c0 27.4307 -13.2803 52.9102 -35.6602 68.5908zM194.97 89.0195c22.3701 3.60059 45.0801 -4.30957 59.8203 -21.5098l112.72 -131.51h-88.5693c-98.6406 0 -195.29 27.7197 -278.94 80\nc59.6904 37.3096 126.03 61.9297 194.97 73.0195zM553.28 360.91c54.3096 -36.4102 86.7197 -97.1602 86.7197 -162.601v-30.3096c0 -4.41992 -3.58008 -8 -8 -8h-48c-4.41992 0 -8 3.58008 -8 8v30.3096c0 50.1504 -25.21 96.6504 -67.3604 123.99\nc-18.4697 11.9805 -28.6396 33.3701 -28.6396 55.3906v62.3096c0 4.41992 3.58008 8 8 8h48c4.41992 0 8 -3.58008 8 -8v-62.3096c0 -6.82031 3.61035 -12.9805 9.28027 -16.7803zM360.89 95.9502h0.108398c16.2441 0 38.0049 -10.0127 48.5723 -22.3506l117.949 -137.6\nh-88.4492h-0.00292969c-16.248 0 -38.0146 10.0127 -48.5869 22.3496l-117.801 137.431c1.40039 0.0195312 53.8105 0.109375 88.21 0.169922zM616 96c13.25 0 24 -10.7402 24 -24v-112c0 -13.25 -10.75 -24 -24 -24h-17.4199h-0.00292969\nc-16.248 0 -38.0146 10.0127 -48.5869 22.3496l-117.99 137.65h184z\" />\n    <glyph glyph-name=\"kiss\" unicode=\"&#xf596;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM168 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM304 52c0 13 -13.4004 27.2998 -35.2002 36.4004\nc21.7998 8.69922 35.2002 23 35.2002 36c0 19.1992 -28.7002 41.5 -71.5 44c-8.40039 1.09961 -12.2002 -11.8008 -3.59961 -15.4004l17 -7.2002c13 -5.5 20.7998 -13.5 20.7998 -21.5s-7.7998 -16 -20.7998 -21.5l-17 -7.2002c-6.10059 -2.59961 -6 -12.2998 0 -14.7998\nl17 -7.2002c13 -5.5 20.7998 -13.5 20.7998 -21.5s-7.7998 -16 -20.7998 -21.5l-17 -7.19922c-8.5 -3.60059 -4.90039 -16.2002 3.59961 -15.4004c42.7998 2.5 71.5 24.7998 71.5 44zM328 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32\ns14.2998 -32 32 -32z\" />\n    <glyph glyph-name=\"kiss-beam\" unicode=\"&#xf597;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM209 220.1c4.2002 -7.5 15.5996 -4 15.0996 4.5c-3.2998 42.1006 -32.1992 71.4004 -56 71.4004c-23.7998 0 -52.6992 -29.2998 -56 -71.4004\nc-0.699219 -8.5 10.7002 -11.8994 14.9004 -4.5l9.5 17c7.7002 13.7002 19.2002 21.6006 31.5 21.6006s23.7998 -7.90039 31.5 -21.6006zM304 52c0 13 -13.4004 27.2998 -35.2002 36.4004c21.7998 8.69922 35.2002 23 35.2002 36c0 19.1992 -28.7002 41.5 -71.5 44\nc-8.40039 1.09961 -12.2002 -11.8008 -3.59961 -15.4004l17 -7.2002c13 -5.5 20.7998 -13.5 20.7998 -21.5s-7.7998 -16 -20.7998 -21.5l-17 -7.2002c-6.10059 -2.59961 -6 -12.2998 0 -14.7998l17 -7.2002c13 -5.5 20.7998 -13.5 20.7998 -21.5s-7.7998 -16 -20.7998 -21.5\nl-17 -7.19922c-8.5 -3.60059 -4.90039 -16.2002 3.59961 -15.4004c42.7998 2.5 71.5 24.7998 71.5 44zM369 220.1c4.2002 -7.5 15.5996 -4 15.0996 4.5c-3.2998 42.1006 -32.1992 71.4004 -56 71.4004c-23.7998 0 -52.6992 -29.2998 -56 -71.4004\nc-0.699219 -8.5 10.8008 -11.7998 14.9004 -4.5l9.5 17c7.7002 13.7002 19.2002 21.6006 31.5 21.6006s23.7998 -7.90039 31.5 -21.6006z\" />\n    <glyph glyph-name=\"kiss-wink-heart\" unicode=\"&#xf598;\" horiz-adv-x=\"504\" \nd=\"M501.1 45.5c9.2002 -23.9004 -4.39941 -49.4004 -28.5 -55.7002l-83 -21.5c-5.39941 -1.39941 -10.8994 1.7998 -12.3994 7.10059l-22.9004 82.5996c-6.59961 24 8.7998 48.5996 34 52.5996c22 3.5 43.1006 -11.5996 49 -33l2.2998 -8.39941l8.40039 2.2002\nc21.5996 5.59961 45.0996 -5.10059 53.0996 -25.9004zM323.5 49.5c0 0 23.5996 -83.9004 23.9004 -84.5996c-30.5 -13.4004 -64 -20.9004 -99.4004 -20.9004c-137 0 -248 111 -248 248s111 248 248 248s248 -111 248 -248c0 -31.7998 -6.2002 -62.0996 -17.0996 -90\nc-6 1.5 -12.2002 2.7998 -18.6006 2.90039c-29.0996 49.7998 -98.0996 50.5996 -127.8 4.2998c-11.2998 -17.7002 -14.5996 -39.4004 -9 -59.7002zM168 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM288 52\nc0 13 -13.4004 27.2998 -35.2002 36.4004c21.7998 8.69922 35.2002 23 35.2002 36c0 19.1992 -28.7002 41.5 -71.5 44c-8.2002 1.19922 -12.4004 -11.7002 -3.59961 -15.4004l17 -7.2002c13 -5.5 20.7998 -13.5 20.7998 -21.5s-7.7998 -16 -20.7998 -21.5l-17 -7.2002\nc-5.7002 -2.5 -6 -12.2998 0 -14.7998l17 -7.2002c13 -5.5 20.7998 -13.5 20.7998 -21.5s-7.7998 -16 -20.7998 -21.5l-17 -7.19922c-8.5 -3.60059 -4.90039 -16.2002 3.59961 -15.4004c42.7998 2.5 71.5 24.7998 71.5 44zM304 231l9.7002 8.5\nc14.7998 13.2002 46.2002 13.2002 61 0l9.5 -8.5c8.5 -7.5 21.5 -0.299805 19.7998 10.7998c-4 25.2002 -34.2002 42.1006 -59.9004 42.1006c-25.6992 0 -55.8994 -16.9004 -59.8994 -42.1006c-1.7998 -11.2002 11.5 -18.2002 19.7998 -10.7998z\" />\n    <glyph glyph-name=\"laugh\" unicode=\"&#xf599;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM328 288c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32s32 14.2998 32 32s-14.2998 32 -32 32zM168 288c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32\ns32 14.2998 32 32s-14.2998 32 -32 32zM256 16c73.4004 0 134 55 142.9 126c1.19922 9.59961 -6.30078 18 -15.9004 18h-270c-9.59961 0 -17.0996 -8.5 -15.9004 -18c8.90039 -71 69.5 -126 142.9 -126h16z\" />\n    <glyph glyph-name=\"laugh-beam\" unicode=\"&#xf59a;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM272 240.6c-0.700195 -8.59961 10.9004 -11.8994 15.0996 -4.5l9.5 17c7.7002 13.7002 19.2002 21.6006 31.5 21.6006c12.3008 0 23.8008 -7.90039 31.5 -21.6006l9.5 -17\nc4.10059 -7.39941 15.6006 -4.09961 14.9004 4.5c-3.2998 42.1006 -32.2002 71.4004 -56 71.4004s-52.7002 -29.2998 -56 -71.4004zM112 240.6c-0.700195 -8.5 10.7998 -11.8994 15.0996 -4.5l9.5 17c7.7002 13.7002 19.2002 21.6006 31.5 21.6006\nc12.3008 0 23.8008 -7.90039 31.5 -21.6006l9.5 -17c4.10059 -7.39941 15.6006 -4.09961 14.9004 4.5c-3.2998 42.1006 -32.2002 71.4004 -56 71.4004s-52.7002 -29.2998 -56 -71.4004zM398.9 142c1.19922 9.59961 -6.30078 18 -15.9004 18h-270\nc-9.59961 0 -17.0996 -8.5 -15.9004 -18c8.90039 -71 69.5 -126 142.9 -126h16c73.4004 0 134 55 142.9 126z\" />\n    <glyph glyph-name=\"laugh-squint\" unicode=\"&#xf59b;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM281.8 278.3c-7.7002 -4.7002 -7.7002 -15.8994 0 -20.5996l80 -48c11.5 -6.7998 24.1006 7.59961 15.4004 18l-33.6006 40.2998l33.6006 40.2998\nc8.59961 10.2998 -3.7998 24.9004 -15.4004 18zM118.8 308.3l33.6006 -40.2998l-33.6006 -40.2998c-8.59961 -10.4004 3.90039 -24.7998 15.4004 -18l80 48c7.7998 4.7002 7.7998 15.8994 0 20.5996l-80 48c-11.6006 6.90039 -24 -7.7002 -15.4004 -18zM398.9 142\nc1.19922 9.59961 -6.30078 18 -15.9004 18h-270c-9.59961 0 -17.0996 -8.5 -15.9004 -18c8.90039 -71 69.5 -126 142.9 -126h16c73.4004 0 134 55 142.9 126z\" />\n    <glyph glyph-name=\"laugh-wink\" unicode=\"&#xf59c;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM268.1 241.9c-1.69922 -11.2002 11.5 -18.3008 19.9004 -10.9004l9.59961 8.59961c14.8008 13.2002 46.2002 13.2002 61 0l9.5 -8.5\nc8.40039 -7.5 21.5 -0.299805 19.8008 10.8008c-4 25.1992 -34.2002 42.0996 -59.9004 42.0996s-55.9004 -16.9004 -59.9004 -42.0996zM168 288c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32s32 14.2998 32 32s-14.2998 32 -32 32zM398.9 142\nc1.19922 9.59961 -6.30078 18 -15.9004 18h-270c-9.59961 0 -17.0996 -8.5 -15.9004 -18c8.90039 -71 69.5 -126 142.9 -126h16c73.4004 0 134 55 142.9 126z\" />\n    <glyph glyph-name=\"luggage-cart\" unicode=\"&#xf59d;\" horiz-adv-x=\"640\" \nd=\"M224 128c-17.6699 0 -32 14.3301 -32 32v160c0 17.6699 14.3301 32 32 32h32v-224h-32zM576 160c0 -17.6699 -14.3301 -32 -32 -32h-32v224h32c17.6699 0 32 -14.3301 32 -32v-160zM624 64c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-82.9404\nc1.79004 -5.03027 2.94043 -10.3604 2.94043 -16c0 -26.5098 -21.4902 -48 -48 -48s-48 21.4902 -48 48c0 5.63965 1.15039 10.9697 2.94043 16h-197.881c1.79004 -5.03027 2.94043 -10.3604 2.94043 -16c0 -26.5098 -21.4902 -48 -48 -48s-48 21.4902 -48 48\nc0 5.63965 1.15039 10.9697 2.94043 16h-82.9404c-8.83984 0 -16 7.16016 -16 16v368h-48c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h96c8.83984 0 16 -7.16016 16 -16v-368h496zM480 352v-224h-192v272c0 26.5098 21.4902 48 48 48h96\nc26.5098 0 48 -21.4902 48 -48v-48zM432 352v48h-96v-48h96z\" />\n    <glyph glyph-name=\"map-marked\" unicode=\"&#xf59f;\" horiz-adv-x=\"576\" \nd=\"M288 448c69.5898 0 126 -56.4102 126 -126c0 -56.2598 -82.3496 -158.8 -113.9 -196.02c-6.37988 -7.54004 -17.8096 -7.54004 -24.1992 0c-31.5508 37.2197 -113.9 139.76 -113.9 196.02c0 69.5898 56.4102 126 126 126zM20.1201 232.05l118.63 47.4502\nc5.17969 -14.8799 12.4102 -30.4404 21.25 -46.4199v-233.08l-138.06 -62.8398c-10.5107 -4.2002 -21.9404 3.54004 -21.9404 14.8594v250.32c0.00292969 11.959 9.0166 25.2686 20.1201 29.71zM288 88.3301c14.0703 0 27.3799 6.17969 36.5098 16.9502\nc19.6699 23.2002 40.5703 49.6299 59.4902 76.7197v-245.99l-192 64v182c18.9199 -27.0996 39.8301 -53.5195 59.4902 -76.7197c9.12988 -10.7803 22.4395 -16.96 36.5098 -16.96zM554.06 286.84c10.5107 4.2002 21.9404 -3.54004 21.9404 -14.8594v-250.32\nc0 -11.9609 -9.01367 -25.2705 -20.1201 -29.71l-139.88 -55.9502v288z\" />\n    <glyph glyph-name=\"map-marked-alt\" unicode=\"&#xf5a0;\" horiz-adv-x=\"576\" \nd=\"M288 448c69.5898 0 126 -56.4102 126 -126c0 -56.2598 -82.3496 -158.8 -113.9 -196.02c-6.37988 -7.54004 -17.8096 -7.54004 -24.1992 0c-31.5508 37.2197 -113.9 139.76 -113.9 196.02c0 69.5898 56.4102 126 126 126zM288 280c23.2002 0 42 18.7998 42 42\ns-18.7998 42 -42 42s-42 -18.7998 -42 -42s18.7998 -42 42 -42zM20.1201 232.05l118.63 47.4502c5.17969 -14.8799 12.4102 -30.4404 21.25 -46.4199v-233.08l-138.06 -62.8398c-10.5107 -4.2002 -21.9404 3.54004 -21.9404 14.8594v250.32\nc0.00292969 11.959 9.0166 25.2686 20.1201 29.71zM288 88.3301c14.0703 0 27.3799 6.17969 36.5098 16.9502c19.6699 23.2002 40.5703 49.6299 59.4902 76.7197v-245.99l-192 64v182c18.9199 -27.0996 39.8301 -53.5195 59.4902 -76.7197\nc9.12988 -10.7803 22.4395 -16.96 36.5098 -16.96zM554.06 286.84c10.5107 4.2002 21.9404 -3.54004 21.9404 -14.8594v-250.32c0 -11.9609 -9.01367 -25.2705 -20.1201 -29.71l-139.88 -55.9502v288z\" />\n    <glyph glyph-name=\"marker\" unicode=\"&#xf5a1;\" \nd=\"M93.9502 157.97l75.3994 75.4004l128.021 -128.021l-75.4004 -75.3994c-44.8223 -44.8203 -132.335 -86.8428 -195.34 -93.7998c-15.2803 -1.69043 -28.1895 11.2295 -26.4902 26.5098l0.0302734 0.229492c7.00195 62.9189 49.0156 150.315 93.7803 195.08z\nM485.49 421.49c35.3496 -35.3604 35.3496 -92.6699 0 -128.021l-165.49 -165.489l-128.02 128.02l98.4795 98.4697l-19.5898 19.5898l-87.1504 -87.1494c-6.25 -6.25 -16.3799 -6.25 -22.6299 0l-22.6201 22.6201c-6.25 6.25 -6.25 16.3799 0 22.6299l104.12 104.12\nc15.6104 15.6201 40.9404 15.6201 56.5605 0l36.5596 -36.5498l21.7598 21.7598c35.3506 35.3496 92.6699 35.3496 128.021 0z\" />\n    <glyph glyph-name=\"medal\" unicode=\"&#xf5a2;\" \nd=\"M223.75 317.25c-42.04 -6.55957 -79.8398 -25.6201 -109.56 -53.3896l-111.271 158.96c-7.41992 10.6094 0.160156 25.1797 13.1104 25.1797h111.149c10.0029 0 22.2959 -6.96191 27.4404 -15.54zM495.97 448c12.9502 0 20.5303 -14.5703 13.1104 -25.1797\nl-111.271 -158.95c-29.7197 27.7598 -67.5195 46.8203 -109.56 53.3799l69.1299 115.21c5.78027 9.63965 16.2002 15.54 27.4404 15.54h111.149zM256 288c97.2002 0 176 -78.7998 176 -176s-78.7998 -176 -176 -176s-176 78.7998 -176 176s78.7998 176 176 176z\nM348.52 130.74c6.82031 6.63965 3.05078 18.2295 -6.34961 19.5898l-52.4297 7.63965l-23.4307 47.5205c-2.10938 4.25 -6.21973 6.38965 -10.3291 6.38965c-4.09082 0 -8.1709 -2.11035 -10.2803 -6.38965l-23.4307 -47.5205l-52.4297 -7.63965\nc-9.39941 -1.36035 -13.1699 -12.9502 -6.34961 -19.5898l37.9297 -36.96l-8.96973 -52.2207c-1.60059 -9.34961 8.25 -16.54 16.6494 -12.0898l46.9004 24.6504l46.9102 -24.6504c8.38965 -4.41992 18.25 2.73047 16.6494 12.0898l-8.96973 52.2207z\" />\n    <glyph glyph-name=\"meh-blank\" unicode=\"&#xf5a4;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM168 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM328 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32\ns-32 -14.2998 -32 -32s14.2998 -32 32 -32z\" />\n    <glyph glyph-name=\"meh-rolling-eyes\" unicode=\"&#xf5a5;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM88 224c0 -35.2998 28.7002 -64 64 -64s64 28.7002 64 64c0 24.2998 -13.7002 45.2002 -33.5996 56c0.699219 -2.59961 1.59961 -5.2002 1.59961 -8\nc0 -17.7002 -14.2998 -32 -32 -32s-32 14.2998 -32 32c0 2.7998 0.900391 5.40039 1.59961 8c-19.8994 -10.7998 -33.5996 -31.7002 -33.5996 -56zM312 48c21.2002 0 21.2002 32 0 32h-128c-21.2002 0 -21.2002 -32 0 -32h128zM344 160c35.2998 0 64 28.7002 64 64\nc0 24.2998 -13.7002 45.2002 -33.5996 56c0.699219 -2.59961 1.59961 -5.2002 1.59961 -8c0 -17.7002 -14.2998 -32 -32 -32s-32 14.2998 -32 32c0 2.7998 0.900391 5.40039 1.59961 8c-19.8994 -10.7998 -33.5996 -31.7002 -33.5996 -56c0 -35.2998 28.7002 -64 64 -64z\n\" />\n    <glyph glyph-name=\"monument\" unicode=\"&#xf5a6;\" horiz-adv-x=\"384\" \nd=\"M368 0c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-352c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h352zM289.14 347.26l30.8604 -315.26h-256l30.8701 315.26c0.625 6.27344 4.75098 14.9834 9.20996 19.4404\nl76.5996 76.6094c6.25 6.25 16.3799 6.25 22.6299 0l76.6201 -76.6094c4.45898 -4.45703 8.58496 -13.167 9.20996 -19.4404zM240 140.8v38.4004c0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-70.4004c-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998v-38.4004\nc0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h70.4004c6.39941 0 12.7998 6.40039 12.7998 12.7998z\" />\n    <glyph glyph-name=\"mortar-pestle\" unicode=\"&#xf5a7;\" \nd=\"M501.54 387.09l-99.0801 -99.0898h-151.37l203.811 152.86c5.25293 3.93848 14.8457 7.13477 21.4121 7.13477c4.64941 0 11.7988 -1.68652 15.957 -3.76465c21.7803 -10.8906 26.4902 -39.9209 9.27051 -57.1406zM496 256c8.83984 0 16 -7.16016 16 -16v-32\nc0 -8.83984 -7.16016 -16 -16 -16h-16c0 -80.9805 -50.2002 -150.11 -121.13 -178.32c12.7695 -16.8701 21.7295 -36.7998 24.9502 -58.6895c1.45996 -9.91992 -6.04004 -18.9805 -16.0703 -18.9805h-223.5c-10.0303 0 -17.5303 9.06055 -16.0703 18.9805\nc3.23047 21.8896 12.1904 41.8193 24.9502 58.6895c-70.9297 28.21 -121.13 97.3398 -121.13 178.32h-16c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h480z\" />\n    <glyph glyph-name=\"paint-roller\" unicode=\"&#xf5aa;\" \nd=\"M416 320c0 -17.6699 -14.3301 -32 -32 -32h-352c-17.6699 0 -32 14.3301 -32 32v96c0 17.6699 14.3301 32 32 32h352c17.6699 0 32 -14.3301 32 -32v-96zM448 384c35.3496 0 64 -28.6504 64 -64v-64c0 -53.0195 -42.9805 -96 -96 -96h-160v-32\nc17.6699 0 32 -14.3301 32 -32v-128c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v128c0 17.6699 14.3301 32 32 32v32c0 35.3496 28.6504 64 64 64h160c17.6699 0 32 14.3301 32 32v128z\" />\n    <glyph glyph-name=\"passport\" unicode=\"&#xf5ab;\" horiz-adv-x=\"448\" \nd=\"M129.62 272c5.28027 31.2197 25.5898 57.1699 53.2998 70.4102c-7.66992 -19.0605 -12.7197 -43.3799 -14.21 -70.4102h-39.0898zM129.62 240h39.0898c1.49023 -27.0303 6.53027 -51.3496 14.21 -70.4102c-27.71 13.2402 -48.0098 39.1904 -53.2998 70.4102zM224 161.31\nc-7.69043 7.4502 -20.7695 34.4307 -23.4404 78.6904h46.8701c-2.66016 -44.2695 -15.7393 -71.2402 -23.4297 -78.6904zM200.57 272c2.66016 44.2598 15.7393 71.2402 23.4395 78.6904c7.69043 -7.4502 20.7705 -34.4307 23.4307 -78.6904h-46.8701zM265.08 169.59\nc7.67969 19.0605 12.7197 43.3799 14.21 70.4102h39.0898c-5.28027 -31.2197 -25.5898 -57.1699 -53.2998 -70.4102zM416 448c17.6699 0 32 -14.3301 32 -32v-448c0 -17.6699 -14.3301 -32 -32 -32h-352c-35.3496 0 -64 28.6504 -64 64v384c0 35.3496 28.6504 64 64 64h352z\nM336 32c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16h-224c-8.7998 0 -16 -7.2002 -16 -16s7.2002 -16 16 -16h224zM224 128c70.6904 0 128 57.3096 128 128s-57.3096 128 -128 128s-128 -57.3096 -128 -128s57.3096 -128 128 -128zM265.08 342.41\nc27.71 -13.2402 48.0195 -39.1904 53.2998 -70.4102h-39.0898c-1.49023 27.0303 -6.53027 51.3496 -14.21 70.4102z\" />\n    <glyph glyph-name=\"pen-fancy\" unicode=\"&#xf5ac;\" \nd=\"M79.1797 165.06l84.0703 33.0703l98.8799 -98.8799l-33.0703 -84.0703c-2.79102 -8.38086 -11.8584 -17.4482 -20.2393 -20.2393l-176.82 -58.9404l-4.67969 4.67969l92.8896 92.8906c2.55957 -0.660156 5.03027 -1.57031 7.7998 -1.57031c17.6699 0 32 14.3301 32 32\ns-14.3301 32 -32 32s-32 -14.3301 -32 -32c0 -2.76953 0.910156 -5.24023 1.57031 -7.7998l-92.8896 -92.8906l-4.69043 4.69043l58.9404 176.82c2.79297 8.37891 11.8604 17.4463 20.2393 20.2393zM369.25 419.68c74.4805 84.2607 199.15 -39.1602 114.23 -114.229\nl-199.49 -183.11l-97.8506 97.8506z\" />\n    <glyph glyph-name=\"pen-nib\" unicode=\"&#xf5ad;\" \nd=\"M136.6 309.21l151.4 42.79l128 -128l-42.79 -151.4c-5.08594 -17.9932 -23.6104 -37.3965 -41.3496 -43.3096l-279.86 -93.29l-14.6904 14.6904l150.11 150.109c6.25977 -2.99023 13.1797 -4.7998 20.5801 -4.7998c26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48\ns-48 -21.4902 -48 -48c0 -7.40039 1.80957 -14.3203 4.7998 -20.5801l-150.109 -150.11l-14.6904 14.6904l93.29 279.86c5.91309 17.7393 25.3164 36.2637 43.3096 41.3496zM497.94 373.83c18.75 -18.7598 18.75 -49.1602 0 -67.9102l-56.5508 -56.5498l-128.02 128.02\nl56.5498 56.5508c18.75 18.75 49.1602 18.75 67.9102 0z\" />\n    <glyph glyph-name=\"pencil-ruler\" unicode=\"&#xf5ae;\" \nd=\"M109.46 203.96l-100.17 100.18c-12.3896 12.3906 -12.3799 32.4707 0 44.8604l89.71 89.71c12.3896 12.3896 32.4697 12.3896 44.8604 0l33.6396 -33.6504l-61.6797 -61.6797c-3.10059 -3.08984 -3.10059 -8.11035 0 -11.21l11.21 -11.21\nc1.28027 -1.2832 3.79199 -2.3252 5.60449 -2.3252c1.81348 0 4.32422 1.04199 5.60547 2.3252l61.6797 61.6797l44.1201 -44.1201zM497.93 320.76l-46.0195 -46.0293l-113.2 113.199l46.0205 46.0107c18.7695 18.7598 49.1895 18.7598 67.9492 0l45.25 -45.25\nc18.75 -18.7607 18.7607 -49.1709 0 -67.9307zM316.08 365.29l113.2 -113.19l-296.92 -296.93l-107.45 -18.8398c-14.5 -2.5498 -27.1201 10.0703 -24.5898 24.5596l18.7598 107.44zM502.71 79.8604c12.3896 -12.3906 12.3896 -32.4707 0 -44.8604l-89.71 -89.7002\nc-12.3896 -12.3896 -32.4697 -12.3896 -44.8604 0l-100.21 100.2l134.58 134.56l44.1406 -44.1396l-61.6807 -61.6797c-3.08984 -3.08984 -3.08984 -8.11035 0 -11.21l11.21 -11.21c3.08984 -3.10059 8.11035 -3.10059 11.21 0l61.6807 61.6797z\" />\n    <glyph glyph-name=\"plane-arrival\" unicode=\"&#xf5af;\" horiz-adv-x=\"640\" \nd=\"M624 0c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-608c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h608zM44.8096 242.34c-6.5498 5.91016 -12.3896 14.3398 -12.5791 23.25l-0.230469 101.78\nc0.19043 10.8799 10.3799 18.7002 20.7197 15.8799l39.7305 -10.8301c5.00977 -1.36035 9.08984 -5.04004 11.0195 -9.92969l27.5898 -67.8799l102.2 -27.8408l-47.9199 164.211c-0.189453 11.1191 10.1504 19.3193 20.71 16.4395l65.0898 -17.7295\nc5.70996 -1.56055 10.1504 -6.10059 11.6602 -11.9102l100.36 -191.851l97.5098 -26.5596c26.4805 -7.20996 51.5498 -20.1797 70.8301 -40c21.6396 -22.25 27.2002 -40.46 23.3701 -54.96c-3.81055 -14.5 -17.5801 -27.4404 -47.25 -35.71\nc-26.4404 -7.36035 -54.5205 -5.85059 -81 1.35938l-287.601 78.3506c-7.94531 2.16895 -19.3564 8.41016 -25.4697 13.9297z\" />\n    <glyph glyph-name=\"plane-departure\" unicode=\"&#xf5b0;\" horiz-adv-x=\"640\" \nd=\"M624 0c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-608c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h608zM80.5498 106.73l-76.21 82.9697c-7.62012 8.95996 -4.87012 22.7803 5.57031 28.0801l40.1299 20.3701\nc2.0957 1.0625 5.7041 1.92578 8.05469 1.92578c2.33691 0 5.92773 -0.853516 8.01562 -1.90625l72.3496 -36.4697l103.21 52.3799l-156.22 98.0996c-8.08008 8.87988 -5.5 23.1201 5.16992 28.5303l65.75 33.3701c2.0957 1.06348 5.70508 1.92676 8.05566 1.92676\nc3 0 7.45508 -1.36035 9.94434 -3.03711l218.7 -82.0596l98.5098 49.9902c26.7402 13.5596 56.4297 21.4199 86.2803 19.4795c33.5098 -2.17969 51.04 -12.8799 58.25 -27.4502c7.22949 -14.5596 5.23926 -35.1699 -13.0703 -63.6494\nc-16.3096 -25.3701 -40.2803 -44.7402 -67.0205 -58.3105l-290.96 -147.649c-7.71094 -3.91895 -20.9893 -7.1084 -29.6396 -7.12012l-130.54 -0.180664c-9.22949 -0.00976562 -18.0498 3.87012 -24.3301 10.7109z\" />\n    <glyph glyph-name=\"prescription\" unicode=\"&#xf5b1;\" horiz-adv-x=\"384\" \nd=\"M301.26 96l78.0605 -78.0498c6.25 -6.25 6.25 -16.3799 0 -22.6299l-22.6299 -22.6299c-6.25 -6.25 -16.3809 -6.25 -22.6309 0l-78.0596 78.0596l-78.0498 -78.0703c-6.25 -6.25 -16.3799 -6.25 -22.6299 0l-22.6299 22.6299c-6.25 6.25 -6.25 16.3809 0 22.6309\nl78.0596 78.0596l-128 128h-18.75v-80c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v256c0 8.83984 7.16016 16 16 16h144c53.0195 0 96 -42.9805 96 -96c0 -48.8896 -36.6904 -88.7998 -83.96 -94.7803l83.96 -83.96l78.0596 78.0605\nc6.25 6.25 16.3809 6.25 22.6309 0l22.6299 -22.6299c6.25 -6.25 6.25 -16.3809 0 -22.6309zM64 352v-64h96c17.6396 0 32 14.3604 32 32s-14.3604 32 -32 32h-96z\" />\n    <glyph glyph-name=\"sad-cry\" unicode=\"&#xf5b3;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248c0 -90 -48.2002 -168.7 -120 -212.1v180.1c0 8.7998 -7.2002 16 -16 16s-16 -7.2002 -16 -16v-196.7c-29.5 -12.3994 -62 -19.2998 -96 -19.2998s-66.5 6.90039 -96 19.2998v196.7c0 8.7998 -7.2002 16 -16 16s-16 -7.2002 -16 -16\nv-180.1c-71.7998 43.3994 -120 122 -120 212.1c0 137 111 248 248 248zM182.5 223.5l9.7002 -8.5c2.5 -2.2998 7.89941 -4.7002 13.7002 -1.59961c4.39941 2.39941 6.89941 7.39941 6.09961 12.3994c-4 25.2002 -34.2002 42.1006 -59.9004 42.1006\nc-25.6992 0 -55.8994 -16.9004 -59.8994 -42.1006c-0.799805 -5 1.7002 -10 6.09961 -12.3994c4.40039 -2.40039 9.90039 -1.7002 13.7002 1.59961l9.5 8.5c14.7998 13.2002 46.2002 13.2002 61 0zM248 32c26.5 0 48 28.7002 48 64s-21.5 64 -48 64s-48 -28.7002 -48 -64\ns21.5 -64 48 -64zM397.8 213.5c4.40039 2.40039 6.7998 7.40039 6.2002 12.2998c-4 25.2002 -34.2002 42.1006 -59.9004 42.1006c-25.6992 0 -55.8994 -16.9004 -59.8994 -42.1006c-0.799805 -5 1.7002 -10 6.09961 -12.3994\nc4.40039 -2.40039 9.90039 -1.7002 13.7002 1.59961l9.59961 8.59961c14.8008 13.2002 46.2002 13.2002 61 0l9.5 -8.5c2.5 -2.2998 7.90039 -4.69922 13.7002 -1.59961z\" />\n    <glyph glyph-name=\"sad-tear\" unicode=\"&#xf5b4;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM328 272c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32s32 14.2998 32 32s-14.2998 32 -32 32zM152 32c26.5 0 48 21 48 47c0 20 -28.5 60.4004 -41.5996 77.7998\nc-3.2002 4.2998 -9.60059 4.2998 -12.8008 0c-13.0996 -17.3994 -41.5996 -57.7998 -41.5996 -77.7998c0 -26 21.5 -47 48 -47zM168 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM338.2 53.7998\nc13.2998 -16.0996 38.2998 4 24.5 20.4004c-28.4004 34.2002 -70.2998 53.7998 -114.7 53.7998c-21.2002 0 -21.2002 -32 0 -32c34.9004 0 67.7998 -15.4004 90.2002 -42.2002z\" />\n    <glyph glyph-name=\"shuttle-van\" unicode=\"&#xf5b6;\" horiz-adv-x=\"640\" \nd=\"M628.88 237.35c7.17969 -8.62988 11.1201 -19.5 11.1201 -30.7295v-110.62c0 -17.6699 -14.3301 -32 -32 -32h-32c0 -53.0195 -42.9805 -96 -96 -96s-96 42.9805 -96 96h-128c0 -53.0195 -42.9805 -96 -96 -96s-96 42.9805 -96 96h-32c-17.6699 0 -32 14.3301 -32 32v288\nc0 17.6699 14.3301 32 32 32h425.52c12.4082 -0.00195312 28.9258 -7.73926 36.8701 -17.2695zM64 256h96v96h-96v-96zM160 16c26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48s-48 -21.4902 -48 -48s21.4902 -48 48 -48zM320 256v96h-96v-96h96zM480 16\nc26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48s-48 -21.4902 -48 -48s21.4902 -48 48 -48zM384 256h146.02l-80 96h-66.0195v-96z\" />\n    <glyph glyph-name=\"signature\" unicode=\"&#xf5b7;\" horiz-adv-x=\"640\" \nd=\"M623.2 256c9.09961 0.599609 16.7998 -7.09961 16.5996 -16.2002v-32.0996c0 -8.5 -6.7002 -15.1006 -15.2002 -15.7998c-39.3994 -3.2002 -105.399 -51 -138.399 -65.8008c-34.2998 -15.3994 -66.7002 -30 -102.3 -30c-28.2002 0 -50.2002 8.5 -65.5 25.3008\nc-22.7002 24.8994 -22.8008 55.2998 -20.6006 83.7998c-56.5 -45.1006 -169 -153.601 -211.2 -195.8c-6.09961 -6.2002 -14.2998 -9.40039 -22.5996 -9.40039c-27 0 -36.5 27 -29.7002 43.9004l98.2002 245.6c8 19.9004 -14.2998 38.7998 -32.7002 27.0996l-58 -38.8994\nc-7.5 -4.7998 -17.3994 -2.60059 -22.0996 4.89941l-17.2002 27c-4.7002 7.5 -2.5 17.4004 4.90039 22.1006l54.8994 36.8994c76.5 48.7002 160.101 -26.8994 129.7 -102.8l-41.5 -103.7c105.2 101.2 144.4 124.5 169.5 126\nc54.4004 3.10059 43.7998 -68.0996 42.7002 -76.0996c-4.7002 -35.7002 -1.2998 -51.9004 21.2998 -51.9004c21.9004 0 47 11.3008 76.0996 24.4004c37.4004 16.7998 111.301 68 163.101 71.5z\" />\n    <glyph glyph-name=\"smile-beam\" unicode=\"&#xf5b8;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM112 224.6c-0.700195 -8.5 10.7998 -11.8994 15.0996 -4.5l9.5 17c7.7002 13.7002 19.2002 21.6006 31.5 21.6006c12.3008 0 23.8008 -7.90039 31.5 -21.6006l9.5 -17\nc4.10059 -7.39941 15.6006 -4.09961 14.9004 4.5c-3.2998 42.1006 -32.2002 71.4004 -56 71.4004s-52.7002 -29.2998 -56 -71.4004zM362.8 101.8c13.5 16.2002 -11 36.7002 -24.5996 20.5c-22.4004 -26.7998 -55.2002 -42.2002 -90.2002 -42.2002\ns-67.7998 15.3008 -90.2002 42.2002c-13.5996 16.2002 -38.0996 -4.2002 -24.5996 -20.5c28.5 -34.2002 70.2998 -53.7998 114.8 -53.7998s86.2998 19.5996 114.8 53.7998zM369 220.1c4.09961 -7.39941 15.7002 -4.09961 15.0996 4.5\nc-3.2998 42.1006 -32.1992 71.4004 -56 71.4004c-23.7998 0 -52.6992 -29.2998 -56 -71.4004c-0.699219 -8.5 10.8008 -11.7998 14.9004 -4.5l9.5 17c7.7002 13.7002 19.2002 21.6006 31.5 21.6006s23.7998 -7.90039 31.5 -21.6006z\" />\n    <glyph glyph-name=\"solar-panel\" unicode=\"&#xf5ba;\" horiz-adv-x=\"640\" \nd=\"M431.98 -0.00976562c8.84961 0.00976562 16.0293 -7.16992 16.0195 -16.0205l-0.0400391 -31.7295c-0.00976562 -8.82031 -7.16016 -15.9707 -15.9795 -15.9805l-223.961 -0.259766c-8.84961 -0.00976562 -16.0293 7.16992 -16.0195 16.0195l0.0498047 31.7305\nc0.00976562 8.83008 7.16016 15.9805 15.9805 15.9902l47.9795 0.0498047v32.21h128v-32.0596zM585.2 421.26c58.1094 -342.42 54.7803 -321.39 54.7598 -325.47c-0.0800781 -17.2305 -14.3604 -31.79 -32.5898 -31.79h-574.74c-18.3096 0 -32.6299 14.6797 -32.5996 32\nc0.00976562 3.91992 -3.35059 -17.1602 54.7598 325.26c2.62012 15.4307 16.21 26.7402 32.1396 26.7402h466.13c15.9307 0 29.5205 -11.3096 32.1406 -26.7402zM259.83 384l-9.77051 -96h139.87l-9.76953 96h-120.33zM184.66 128l11.4102 112h-105.971l-19.0098 -112\nh113.57zM200.95 288l9.76953 96h-96.1895l-16.29 -96h102.71zM233.77 128h172.45l-11.3994 112h-149.65zM429.27 384l9.77051 -96h102.71l-16.29 96h-96.1904zM455.33 128h113.58l-19.0098 112h-105.971z\" />\n    <glyph glyph-name=\"spa\" unicode=\"&#xf5bb;\" horiz-adv-x=\"576\" \nd=\"M568.25 256c4.41016 0.0195312 7.79004 -3.40039 7.75 -7.82031c-0.230469 -27.9199 -7.12988 -126.13 -88.7695 -199.3c-84.04 -81.8301 -167.23 -80.8799 -199.23 -80.8799s-115.21 -0.94043 -199.23 80.8799c-81.6299 73.1602 -88.5391 171.38 -88.7695 199.3\nc-0.0400391 4.41992 3.33984 7.83984 7.75 7.82031c29.04 -0.129883 135.01 -6.16016 213.84 -83c33.1201 -29.6299 53.3604 -63.2998 66.4102 -94.8604c13.0498 31.5605 33.29 65.2305 66.4102 94.8604c78.8301 76.8398 184.8 82.8701 213.84 83zM287.98 145.4\nc-10.7012 15.7168 -30.8789 38.7705 -45.04 51.46c-18.7207 18.25 -38.8506 32.6895 -59.2207 44.3896c16.4707 70.4404 51.75 132.93 96.7402 172.07c4.12012 3.58008 11.0303 3.58008 15.1396 0c45.0107 -39.1699 80.29 -101.721 96.7305 -172.221\nc-20.6797 -11.8799 -41.1699 -26.5693 -60.2598 -45.1797c-16.4902 -14.7402 -31.2705 -31.6699 -44.0898 -50.5195z\" />\n    <glyph glyph-name=\"splotch\" unicode=\"&#xf5bc;\" \nd=\"M472.29 252.11c48.54 -16.6201 53.8301 -73.8301 8.9502 -96.79l-62 -31.7402c-17.8301 -9.12988 -29.2803 -25.2002 -30.6299 -42.9902l-4.7002 -61.8594c-3.41016 -44.79 -65.1299 -66.7803 -104.45 -37.2207l-54.3203 40.8301\nc-15.6201 11.7305 -36.96 16.1201 -57.0693 11.7305l-69.96 -15.2803c-50.6504 -11.0596 -94.0801 32.5596 -73.4902 73.8096l28.4297 56.9805c8.18066 16.3799 6.44043 35.1699 -4.63965 50.2402l-38.54 52.4199c-27.9004 37.9502 6.97949 86.8994 59.0303 82.8301\nl71.8799 -5.62012c20.6602 -1.62012 40.9395 5.59961 54.2002 19.3096l46.1396 47.6699c33.4102 34.5107 98.3994 21.1504 109.979 -22.6201l15.9902 -60.4492c4.60059 -17.3799 18.8604 -31.7002 38.1406 -38.3008z\" />\n    <glyph glyph-name=\"spray-can\" unicode=\"&#xf5bd;\" \nd=\"M224 416v-96h-128v96c0 17.6699 14.3301 32 32 32h64c17.6699 0 32 -14.3301 32 -32zM480 320c17.6699 0 32 -14.3301 32 -32s-14.3301 -32 -32 -32s-32 14.3301 -32 32s14.3301 32 32 32zM224 288c53.0195 0 96 -42.9805 96 -96v-224c0 -17.6699 -14.3301 -32 -32 -32\nh-256c-17.6699 0 -32 14.3301 -32 32v224c0 53.0195 42.9805 96 96 96h128zM160 32c44.1797 0 80 35.8203 80 80s-35.8203 80 -80 80s-80 -35.8203 -80 -80s35.8203 -80 80 -80zM480 352c-17.6699 0 -32 14.3301 -32 32s14.3301 32 32 32s32 -14.3301 32 -32\ns-14.3301 -32 -32 -32zM384 320c17.6699 0 32 -14.3301 32 -32s-14.3301 -32 -32 -32s-32 14.3301 -32 32s14.3301 32 32 32zM288 416c17.6699 0 32 -14.3301 32 -32s-14.3301 -32 -32 -32s-32 14.3301 -32 32s14.3301 32 32 32zM384 416c17.6699 0 32 -14.3301 32 -32\ns-14.3301 -32 -32 -32s-32 14.3301 -32 32s14.3301 32 32 32zM480 224c17.6699 0 32 -14.3301 32 -32s-14.3301 -32 -32 -32s-32 14.3301 -32 32s14.3301 32 32 32z\" />\n    <glyph glyph-name=\"stamp\" unicode=\"&#xf5bf;\" \nd=\"M32 -64v64h448v-64h-448zM416 192c53.0195 0 96 -42.9805 96 -96v-32c0 -17.6699 -14.3301 -32 -32 -32h-448c-17.6699 0 -32 14.3301 -32 32v32c0 53.0195 42.9805 96 96 96h66.5596c16.2607 0 29.4404 13.1797 29.4404 29.4404v0.0693359\nc0 31.79 -9.98047 62.0605 -23.3096 90.9102c-5.57031 12.04 -8.69043 25.4199 -8.69043 39.5801c0 58.6699 52.6201 105.04 113.25 94.4902c38.79 -6.75 70.4902 -38.6699 77.2598 -77.4502c3.85059 -22.0303 0.0605469 -42.8096 -9.0498 -60.4199\nc-12.5801 -24.3105 -21.46 -50.3506 -21.46 -77.7197v-9.45996c0 -16.2607 13.1797 -29.4404 29.4404 -29.4404h66.5596z\" />\n    <glyph glyph-name=\"star-half-alt\" unicode=\"&#xf5c0;\" horiz-adv-x=\"536\" \nd=\"M508.55 276.49c26.25 -3.7998 36.7705 -36.1006 17.7305 -54.6006l-105.91 -102.979l25.0303 -145.49c3.55957 -20.79 -13.0605 -37.4004 -31.6602 -37.4004c-4.91016 0 -9.9707 1.16016 -14.8301 3.71094l-130.94 68.6992l-130.95 -68.6797\nc-4.86914 -2.58008 -9.93945 -3.75 -14.8691 -3.75c-18.5801 0 -35.1699 16.6699 -31.6104 37.4502l25.0596 145.479l-105.89 103c-19.0303 18.5 -8.50977 50.79 17.7402 54.5898l146.38 21.29l65.4297 132.381c5.90039 11.9092 17.29 17.8096 28.6904 17.8096\nc11.4697 0 22.9395 -5.98047 28.8193 -17.8096l65.4102 -132.391zM386.81 153.29l82.6504 80.3799l-114.229 16.6299l-25.0107 3.64062l-11.1797 22.6299l-51.0303 103.29l-0.0292969 -317.19l22.3799 -11.7402l102.13 -53.5898l-19.5205 113.45l-4.2793 24.8799z\" />\n    <glyph glyph-name=\"suitcase-rolling\" unicode=\"&#xf5c1;\" horiz-adv-x=\"384\" \nd=\"M336 288c26.5098 0 48 -21.4902 48 -48v-224c0 -26.5098 -21.4902 -48 -48 -48h-16v-16c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v16h-128v-16c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v16h-16\nc-26.5098 0 -48 21.4902 -48 48v224c0 26.5098 21.4902 48 48 48h288zM320 72v16c0 4.41992 -3.58008 8 -8 8h-240c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h240c4.41992 0 8 3.58008 8 8zM320 168v16c0 4.41992 -3.58008 8 -8 8h-240\nc-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h240c4.41992 0 8 3.58008 8 8zM144 400v-80h-48v80c0 26.5098 21.4902 48 48 48h96c26.5098 0 48 -21.4902 48 -48v-80h-48v80h-96z\" />\n    <glyph glyph-name=\"surprise\" unicode=\"&#xf5c2;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM136 240c0 -17.7002 14.2998 -32 32 -32s32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32zM248 32c35.2998 0 64 28.7002 64 64s-28.7002 64 -64 64\ns-64 -28.7002 -64 -64s28.7002 -64 64 -64zM328 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32z\" />\n    <glyph glyph-name=\"swatchbook\" unicode=\"&#xf5c3;\" horiz-adv-x=\"511\" \nd=\"M479.06 128c17.6406 0 31.9404 -14.3301 31.9404 -32v-128c0 -17.6699 -14.2998 -32 -31.9404 -32h-299.579c2.17969 1.91016 4.60938 3.41992 6.66992 5.49023l186.14 186.51h106.77zM434.56 280.9c12.4707 -12.4902 12.4707 -32.7607 0 -45.2607l-211.869 -212.279\nc0.199219 2.90918 0.869141 5.67969 0.869141 8.63965v263.76l75.5 75.6504c12.4805 12.5 32.7002 12.5 45.1709 0zM191.62 416v-384c0 -53.0195 -42.9004 -96 -95.8105 -96c-52.9092 0 -95.8096 42.9805 -95.8096 96v384c0 17.6699 14.2998 32 31.9404 32h127.739\nc17.6406 0 31.9404 -14.3301 31.9404 -32zM95.8096 8c13.2305 0 23.96 10.75 23.9502 24c0 13.2598 -10.7295 24 -23.9502 24c-13.2197 0 -23.9492 -10.7402 -23.9492 -24c0 -13.25 10.7197 -24 23.9492 -24zM127.75 192l0.00976562 64h-63.8799v-64h63.8701zM127.75 320\nl0.00976562 64h-63.8799v-64h63.8701z\" />\n    <glyph glyph-name=\"swimmer\" unicode=\"&#xf5c4;\" horiz-adv-x=\"640\" \nd=\"M189.61 137.42c-5.04004 4.65039 -10.3906 8.34961 -15.8604 11.5801l68.6299 98.04c7.36035 10.5 16.3398 19.5498 26.7197 26.9404l80.0205 57.1699c25.54 18.2598 57.8301 24.96 88.5596 18.3799l100.351 -21.5303c25.9297 -5.55957 42.4297 -31.0801 36.8799 -57\nc-5.56055 -25.9102 -31.0898 -42.4102 -57 -36.8799l-100.351 21.5303c-4.33984 0.90918 -8.97949 -0.0302734 -12.6191 -2.61035l-18 -12.8604l112.84 -80.5996c-17.5107 -1.04004 -34.5303 -8.4502 -49.3906 -22.1602\nc-3.5293 -3.25977 -15.2695 -9.41992 -34.3896 -9.41992s-30.8496 6.16016 -34.3896 9.41992c-16.0107 14.7705 -34.5 22.5801 -53.46 22.5801h-16.3008c-18.96 0 -37.4395 -7.80957 -53.46 -22.5801c-3.5293 -3.25977 -15.2695 -9.41992 -34.3896 -9.41992\ns-30.8496 6.16016 -34.3896 9.41992zM624 96c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-16c-38.6201 0 -72.7197 12.1797 -96 31.8398c-23.2803 -19.6494 -57.3799 -31.8398 -96 -31.8398s-72.7197 12.1797 -96 31.8398\nc-23.2803 -19.6494 -57.3799 -31.8398 -96 -31.8398s-72.7197 12.1797 -96 31.8398c-23.2803 -19.6494 -57.3799 -31.8398 -96 -31.8398h-16c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h16c26.04 0 45.7998 8.41992 56.0703 17.9004\nc8.89941 8.20996 19.6602 14.0996 31.7695 14.0996h16.2998c12.1104 0 22.8701 -5.88965 31.7705 -14.0996c10.29 -9.48047 30.0498 -17.9004 56.0898 -17.9004s45.7998 8.41992 56.0703 17.9004c8.89941 8.20996 19.6602 14.0996 31.7695 14.0996h16.2998\nc12.1104 0 22.8701 -5.88965 31.7705 -14.0996c10.29 -9.48047 30.0498 -17.9004 56.0898 -17.9004s45.7998 8.41992 56.0703 17.9004c8.89941 8.20996 19.6602 14.0996 31.7695 14.0996h16.2998c12.1104 0 22.8701 -5.88965 31.7705 -14.0996\nc10.29 -9.48047 30.0498 -17.9004 56.0898 -17.9004h16zM112 192c-44.1797 0 -80 35.8203 -80 80s35.8203 80 80 80s80 -35.8203 80 -80s-35.8203 -80 -80 -80z\" />\n    <glyph glyph-name=\"swimming-pool\" unicode=\"&#xf5c5;\" horiz-adv-x=\"640\" \nd=\"M624 32c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-16c-38.6201 0 -72.7197 12.1797 -96 31.8398c-23.2803 -19.6494 -57.3799 -31.8398 -96 -31.8398s-72.7197 12.1797 -96 31.8398c-23.2803 -19.6494 -57.3799 -31.8398 -96 -31.8398\ns-72.7197 12.1797 -96 31.8398c-23.2803 -19.6494 -57.3799 -31.8398 -96 -31.8398h-16c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h16c26.04 0 45.7998 8.41992 56.0703 17.9004c8.89941 8.20996 19.6602 14.0996 31.7695 14.0996h16.2998\nc12.1104 0 22.8701 -5.88965 31.7705 -14.0996c10.29 -9.48047 30.0498 -17.9004 56.0898 -17.9004s45.7998 8.41992 56.0703 17.9004c8.89941 8.20996 19.6602 14.0996 31.7695 14.0996h16.2998c12.1104 0 22.8701 -5.88965 31.7705 -14.0996\nc10.29 -9.48047 30.0498 -17.9004 56.0898 -17.9004s45.7998 8.41992 56.0703 17.9004c8.89941 8.20996 19.6602 14.0996 31.7695 14.0996h16.2998c12.1104 0 22.8701 -5.88965 31.7705 -14.0996c10.29 -9.48047 30.0498 -17.9004 56.0898 -17.9004h16zM224 64\nc-19.1201 0 -30.8604 6.16016 -34.3896 9.42969c-9.16992 8.4502 -19.2002 14.3398 -29.6104 18.0703v228.5c0 52.9404 43.0596 96 96 96s96 -43.0596 96 -96v-16c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v16c0 17.6396 -14.3604 32 -32 32\ns-32 -14.3604 -32 -32v-96h192v96c0 52.9404 43.0596 96 96 96s96 -43.0596 96 -96v-16c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v16c0 17.6396 -14.3604 32 -32 32s-32 -14.3604 -32 -32v-228.51\nc-10.4102 -3.73047 -20.4404 -9.61035 -29.6104 -18.0703c-3.5293 -3.25977 -15.2695 -9.41992 -34.3896 -9.41992v96h-192v-96z\" />\n    <glyph glyph-name=\"tint-slash\" unicode=\"&#xf5c7;\" horiz-adv-x=\"640\" \nd=\"M633.82 -10.0996c6.97949 -5.43066 8.22949 -15.4805 2.81934 -22.4502l-19.6396 -25.2705c-5.42969 -6.97949 -15.4805 -8.23926 -22.46 -2.80957l-588.36 454.729c-6.97949 5.43066 -8.22949 15.4805 -2.80957 22.4502l19.6396 25.2705\nc5.41992 6.97949 15.4805 8.22949 22.46 2.80957l186.82 -144.399c21.6201 33.7197 42.9697 73.3398 58.4902 125.68c9 30.1201 50.5 28.7803 58.4395 0c46.9902 -158.48 146.78 -200.061 146.78 -311.82c0 -5.70996 -0.509766 -11.2998 -1.03027 -16.8701zM144 114.09\nc0 29.7803 7.30957 54.6299 18.7197 78.1299l273.681 -211.52c-31.0303 -27.7402 -71.6904 -44.7002 -116.4 -44.7002c-97.2803 0 -176 79.6504 -176 178.09z\" />\n    <glyph glyph-name=\"tired\" unicode=\"&#xf5c8;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM281.8 250.3c-7.7002 -4.7002 -7.7002 -15.8994 0 -20.5996l80 -48c11.5 -6.7998 24.1006 7.59961 15.4004 18l-33.6006 40.2998l33.6006 40.2998\nc8.59961 10.2998 -3.7998 24.9004 -15.4004 18zM118.8 280.3l33.6006 -40.2998l-33.6006 -40.2998c-8.59961 -10.4004 3.90039 -24.7998 15.4004 -18l80 48c7.7998 4.7002 7.7998 15.8994 0 20.5996l-80 48c-11.6006 6.90039 -24 -7.7002 -15.4004 -18zM248 160\nc-51.9004 0 -115.3 -43.7998 -123.2 -106.7c-1.7002 -13.3994 7.90039 -24.5996 17.7002 -20.3994c25.9004 11.0996 64.4004 17.3994 105.5 17.3994s79.5996 -6.2998 105.5 -17.3994c9.7002 -4.2002 19.4004 6.7998 17.7002 20.3994\nc-7.90039 62.9004 -71.2998 106.7 -123.2 106.7z\" />\n    <glyph glyph-name=\"tooth\" unicode=\"&#xf5c9;\" horiz-adv-x=\"448\" \nd=\"M443.98 351.75c10.1299 -41.6299 0.419922 -80.8203 -21.5303 -110.43c-23.3604 -31.5703 -32.6807 -68.6504 -36.29 -107.351c-4.41016 -47.1602 -10.3301 -94.1699 -20.9404 -140.319l-7.7998 -33.9502c-3.18945 -13.8701 -15.4902 -23.7002 -29.6699 -23.7002\nc-13.9697 0 -26.1504 9.5498 -29.54 23.1602l-34.4697 138.42c-4.56055 18.3096 -20.96 31.1602 -39.7598 31.1602c-18.8008 0 -35.2002 -12.8398 -39.7607 -31.1602l-34.4697 -138.42c-3.38965 -13.6104 -15.5703 -23.1602 -29.54 -23.1602\nc-14.1797 0 -26.4795 9.83008 -29.6699 23.7002l-7.7998 33.9502c-10.6104 46.1592 -16.54 93.1592 -20.9404 140.319c-3.60938 38.6904 -12.9297 75.7803 -36.29 107.351c-21.9199 29.6201 -31.6299 68.8096 -21.5 110.43c11.0098 45.2197 47.1104 82.0498 92.0098 93.7197\nc23.4307 6.08984 46.1104 0.540039 66.8105 -10.3096l100.51 -64.6201c7.83984 -5.05957 17.6504 -2.15039 22.1104 4.7998c4.78027 7.44043 2.62012 17.3398 -4.7998 22.1104l-28.3203 18.21c3.54004 1.75 7.25 3.08984 10.5 5.47949\nc26.1396 19.2305 56.9502 32.6904 89.1396 24.3301c44.9004 -11.6602 81 -48.5 92.0107 -93.7197z\" />\n    <glyph glyph-name=\"umbrella-beach\" unicode=\"&#xf5ca;\" horiz-adv-x=\"640\" \nd=\"M115.38 311.1c-10.0801 3.66992 -14.1104 16.3203 -7.41992 24.7207c59.75 74.8398 152.65 116.689 248.53 111.8c-52.79 -29.4102 -103.811 -92.1602 -139 -173.7zM247.63 262.94c44.4902 101.979 114.74 171.14 172.76 171.149c7.95996 0 15.6904 -1.2998 23.0908 -4\nc61.3291 -22.3203 78.3896 -132.6 42.6299 -253.979zM521.48 387.5c76.5293 -57.9199 120.76 -149.67 118.439 -245.36c-0.259766 -10.7393 -11.4795 -17.8398 -21.5703 -14.1699l-102.619 37.3604c17.5293 58.75 24.6895 117.09 18.9492 166.979\nc-2.37012 20.5908 -6.97949 38.8906 -13.1992 55.1904zM560 0.0195312c8.83984 0 16 -7.15918 16 -16v-32.0098c0 -8.83984 -7.16016 -16.0098 -16 -16.0098h-544c-8.83984 0 -16 7.16992 -16 16.0098v32.0098c0 8.85059 7.16016 16.0107 16 16.0107h236.96l72.9004 200.37\nl60.1396 -21.9004l-64.9404 -178.48h238.94z\" />\n    <glyph glyph-name=\"vector-square\" unicode=\"&#xf5cb;\" \nd=\"M512 320c0 -17.6699 -14.3301 -32 -32 -32v-192c17.6699 0 32 -14.3301 32 -32v-96c0 -17.6699 -14.3301 -32 -32 -32h-96c-17.6699 0 -32 14.3301 -32 32h-192c0 -17.6699 -14.3301 -32 -32 -32h-96c-17.6699 0 -32 14.3301 -32 32v96c0 17.6699 14.3301 32 32 32v192\nc-17.6699 0 -32 14.3301 -32 32v96c0 17.6699 14.3301 32 32 32h96c17.6699 0 32 -14.3301 32 -32h192c0 17.6699 14.3301 32 32 32h96c17.6699 0 32 -14.3301 32 -32v-96zM416 384v-32h32v32h-32zM64 384v-32h32v32h-32zM96 0v32h-32v-32h32zM448 0v32h-32v-32h32zM416 96\nv192h-32c-17.6699 0 -32 14.3301 -32 32v32h-192v-32c0 -17.6699 -14.3301 -32 -32 -32h-32v-192h32c17.6699 0 32 -14.3301 32 -32v-32h192v32c0 17.6699 14.3301 32 32 32h32z\" />\n    <glyph glyph-name=\"weight-hanging\" unicode=\"&#xf5cd;\" \nd=\"M510.28 2.13965c8.33008 -33.3096 -14.6602 -66.1396 -46.2998 -66.1396h-415.95c-31.6504 0 -54.6406 32.8301 -46.3105 66.1396l73.0498 292.13c3.79004 15.1807 16.4404 25.7207 30.8701 25.7207h60.25c-3.58008 10.0498 -5.87988 20.7197 -5.87988 32\nc0 53.0195 42.9805 96 96 96c53.0205 0 96 -42.9805 96 -96c0 -11.2803 -2.30957 -21.9502 -5.87988 -32h60.25c14.4297 0 27.0703 -10.5303 30.8701 -25.7207zM256 320c17.6396 0 32 14.3604 32 32s-14.3604 32 -32 32s-32 -14.3604 -32 -32s14.3604 -32 32 -32z\" />\n    <glyph glyph-name=\"wine-glass-alt\" unicode=\"&#xf5ce;\" horiz-adv-x=\"288\" \nd=\"M216 -16c22.0898 0 40 -17.9102 40 -40c0 -4.41992 -3.58008 -8 -8 -8h-208c-4.41992 0 -8 3.58008 -8 8c0 22.0898 17.9102 40 40 40h40v117.18c-68.4697 15.8906 -118.05 79.9102 -111.4 154.16l15.96 178.11c0.730469 8.24023 7.55078 14.5498 15.7002 14.5498h223.48\nc8.16016 0 14.9697 -6.30957 15.71 -14.5498l15.9502 -178.101c6.64941 -74.25 -42.9307 -138.27 -111.4 -154.159v-117.19h40zM61.75 400l-7.16992 -80h178.84l-7.16992 80h-164.5z\" />\n    <glyph glyph-name=\"air-freshener\" unicode=\"&#xf5d0;\" horiz-adv-x=\"384\" \nd=\"M378.94 126.59c11.75 -12.1494 1.71973 -30.5898 -16.6406 -30.5898h-138.3v-32h112c8.83984 0 16 -7.16016 16 -16v-96c0 -8.83984 -7.16016 -16 -16 -16h-288c-8.83984 0 -16 7.16016 -16 16v96c0 8.83984 7.16016 16 16 16h112v32h-138.3\nc-18.3604 0 -28.3906 18.4404 -16.6406 30.5898l94.2402 97.4102h-49.2197c-15.2998 0 -23.6602 16.5996 -13.8604 27.5303l113.33 126.51c-3.42969 6.61035 -5.5498 14 -5.5498 21.96c0 26.5098 21.4902 48 48 48s48 -21.4902 48 -48\nc0 -7.95996 -2.12012 -15.3496 -5.5498 -21.96l113.33 -126.51c9.7998 -10.9307 1.43945 -27.5303 -13.8604 -27.5303h-49.2197zM192 416.02c-8.84961 0 -16.0195 -7.16992 -16.0195 -16.0195c0 -8.83984 7.16992 -16.0195 16.0195 -16.0195\ns16.0195 7.17969 16.0195 16.0195c0 8.84961 -7.16992 16.0195 -16.0195 16.0195zM304 16h-224v-32h224v32z\" />\n    <glyph glyph-name=\"apple-alt\" unicode=\"&#xf5d1;\" horiz-adv-x=\"448\" \nd=\"M350.85 319c25.9707 -4.66992 47.2705 -18.6699 63.9199 -42c14.6504 -20.6699 24.6406 -46.6699 29.9609 -78c4.66992 -28.6699 4.31934 -57.3301 -1 -86c-7.99023 -47.3301 -23.9707 -87 -47.9404 -119c-28.6396 -38.6699 -64.5898 -58 -107.87 -58\nc-10.6602 0 -22.2998 3.33008 -34.96 10c-8.66016 5.33008 -18.3096 8 -28.9697 8s-20.2998 -2.66992 -28.9707 -8c-12.6592 -6.66992 -24.2998 -10 -34.96 -10c-43.2793 0 -79.2295 19.3301 -107.869 58c-23.9707 32 -39.9502 71.6699 -47.9404 119\nc-5.32031 28.6699 -5.66992 57.3301 -1 86c5.32031 31.3301 15.3096 57.3301 29.96 78c16.6504 23.3301 37.9502 37.3301 63.9199 42c15.9805 2.66992 37.9502 0.330078 65.9199 -7c23.9697 -6.66992 44.2803 -14.6699 60.9307 -24\nc16.6494 9.33008 36.96 17.3301 60.9297 24c27.9795 7.33008 49.96 9.66992 65.9395 7zM295.91 360c-9.32031 -8.66992 -21.6504 -15 -36.96 -19c-10.6602 -3.33008 -22.2998 -5 -34.96 -5l-14.9805 1c-1.33008 9.33008 -1.33008 20 0 32\nc2.66992 24 10.3203 42.3301 22.9707 55c9.31934 8.66992 21.6494 15 36.96 19c10.6592 3.33008 22.2998 5 34.96 5l14.9795 -1l1 -15c0 -12.6699 -1.66992 -24.3301 -4.99023 -35c-3.98926 -15.3301 -10.3096 -27.6699 -18.9795 -37z\" />\n    <glyph glyph-name=\"atom\" unicode=\"&#xf5d2;\" horiz-adv-x=\"448\" \nd=\"M413.03 192c40.1396 -54.9102 41.5195 -98.5996 25.1396 -128c-29.2197 -52.3398 -101.689 -43.5801 -116.33 -41.8799c-21.4697 -51.2197 -54.2002 -86.1201 -97.8398 -86.1201s-76.3701 34.9004 -97.8398 86.1201c-14.6504 -1.7002 -87.1201 -10.46 -116.33 41.8799\nc-16.3701 29.3799 -14.9902 73.1104 25.1396 128c-40.1396 54.9102 -41.5195 98.5996 -25.1396 128c10.9004 19.5195 40.5996 50.6602 116.33 41.8799c21.4795 51.2305 54.2002 86.1201 97.8398 86.1201s76.3604 -34.8896 97.8398 -86.1201\nc75.79 8.85059 105.42 -22.3604 116.33 -41.8799c16.3701 -29.3799 14.9902 -73.1104 -25.1396 -128zM63.3799 96c3.69043 -6.59961 19.0205 -11.8604 43.5801 -10.9697c-2.75977 13 -5.0498 26.3701 -6.75977 40.0801c-7.66992 6.29004 -14.9102 12.6494 -21.8701 19.1797\nc-15.1396 -23.4902 -18.9805 -41.0801 -14.9502 -48.29zM100.2 258.88c1.39355 11.1816 4.43555 29.2002 6.79004 40.2197c-1.82031 0.0703125 -3.98047 0.370117 -5.69043 0.370117c-21.5303 0 -34.5098 -5.33008 -37.9199 -11.4697\nc-4.01953 -7.20996 -0.179688 -24.7998 14.9502 -48.2998c6.96973 6.53027 14.21 12.8896 21.8701 19.1797zM224 384c-9.46973 0 -22.2002 -13.5195 -33.8604 -37.2598c11.1904 -3.7002 22.4404 -8 33.8604 -12.8604c11.4199 4.86035 22.6699 9.16016 33.8604 12.8604\nc-11.6602 23.7402 -24.3906 37.2598 -33.8604 37.2598zM224 0c9.46973 0 22.2002 13.5195 33.8604 37.2598c-11.1904 3.7002 -22.4404 8 -33.8604 12.8604c-11.4199 -4.86035 -22.6699 -9.16016 -33.8604 -12.8604c11.6602 -23.7402 24.3906 -37.2598 33.8604 -37.2598z\nM286.5 157.33c1.99023 27.7998 1.98047 41.5498 0 69.3301c-26.6396 19.04 -46.1104 29.3096 -62.5 37.4795c-16.3701 -8.15918 -35.8301 -18.4297 -62.5 -37.4795c-1.99023 -27.79 -1.99023 -41.54 0 -69.3301c26.7002 -19.0703 46.1504 -29.3398 62.5 -37.4805\nc16.3604 8.15039 35.7998 18.4004 62.5 37.4805zM384.62 96c4.01953 7.20996 0.179688 24.7998 -14.9502 48.29c-6.96973 -6.53027 -14.21 -12.8896 -21.8701 -19.1797c-1.70996 -13.6904 -4 -27.0605 -6.75977 -40.0605c24.5801 -0.870117 39.9102 4.33008 43.5801 10.9502\nzM369.67 239.71c15.1299 23.4902 18.9697 41.0801 14.9502 48.2998c-3.41016 6.12988 -16.4004 11.4707 -37.9199 11.4707c-1.71973 0 -3.87012 -0.300781 -5.69043 -0.370117c2.35254 -11.0205 5.39453 -29.0391 6.79004 -40.2207\nc7.66992 -6.29004 14.9102 -12.6494 21.8701 -19.1797zM224 224c17.6699 0 32 -14.3301 32 -32s-14.3301 -32 -32 -32s-32 14.3301 -32 32s14.3301 32 32 32z\" />\n    <glyph glyph-name=\"bone\" unicode=\"&#xf5d7;\" horiz-adv-x=\"640\" \nd=\"M598.88 203.44c-9.42969 -4.70996 -9.42969 -18.1709 -0.00976562 -22.8809c25.2002 -12.5996 41.1201 -38.3496 41.1201 -66.5293v-7.64062c0 -41.0898 -33.2998 -74.3896 -74.3799 -74.3896c-32.0107 0 -60.4404 20.4902 -70.5703 50.8604\nc-6.53027 19.5996 -10.7305 45.1396 -38.1104 45.1396h-273.87c-26.5098 0 -30.4297 -22.1104 -38.1094 -45.1396c-10.1299 -30.3701 -38.5498 -50.8604 -70.5703 -50.8604c-41.0801 0 -74.3799 33.2998 -74.3799 74.3896v7.64062\nc0 28.1699 15.9199 53.9297 41.1201 66.5293c9.42969 4.70996 9.42969 18.1709 0 22.8809c-25.2002 12.5996 -41.1201 38.3594 -41.1201 66.5293v7.64062c0 41.0898 33.2998 74.3896 74.3896 74.3896c32.0107 0 60.4404 -20.4902 70.5605 -50.8604\nc6.53027 -19.5996 10.7295 -45.1396 38.1094 -45.1396h273.87c26.5107 0 30.4307 22.1104 38.1104 45.1396c10.1299 30.3701 38.5498 50.8604 70.5703 50.8604c41.0898 0 74.3896 -33.2998 74.3896 -74.3896v-7.64062c0 -28.1699 -15.9199 -53.9297 -41.1201 -66.5293z\" />\n    <glyph glyph-name=\"book-reader\" unicode=\"&#xf5da;\" \nd=\"M352 352c0 -53.0195 -42.9805 -96 -96 -96s-96 42.9805 -96 96s42.9805 96 96 96s96 -42.9805 96 -96zM233.59 206.9c4.10059 -2.51074 6.41016 -6.79004 6.41992 -11.46v-245.99c0 -10.1602 -11.1094 -16.5898 -20.4795 -11.8701\nc-61.0498 30.75 -149.38 39.1396 -193.04 41.4297c-14.9004 0.770508 -26.4902 12.7207 -26.4902 27.0498v222.801c0 15.6299 13.5498 28.0098 29.7998 27.0898c48.3604 -2.75 144.46 -12.7305 203.79 -49.0498zM482.2 255.95\nc16.25 0.919922 29.7998 -11.46 29.8096 -27.0898v-222.82c0 -14.3301 -11.5898 -26.2803 -26.4902 -27.0596c-43.6494 -2.29004 -131.93 -10.6807 -192.97 -41.4004c-9.39941 -4.73047 -20.54 1.70996 -20.54 11.9004v245.789c0 4.6709 2.31055 9.12012 6.41016 11.6309\nc59.3203 36.3193 155.43 46.3096 203.78 49.0498z\" />\n    <glyph glyph-name=\"brain\" unicode=\"&#xf5dc;\" horiz-adv-x=\"576\" \nd=\"M208 448c35.2998 0 64 -28.7002 64 -64v-376c0 -39.7998 -32.2002 -72 -72 -72c-31.7998 0 -58.4004 20.7002 -68 49.2002c-3.90039 -0.700195 -7.90039 -1.2002 -12 -1.2002c-39.7998 0 -72 32.2002 -72 72c0 4.7998 0.5 9.5 1.40039 14.0996\nc-29 12 -49.4004 40.6006 -49.4004 73.9004c0 29.7002 16.2998 55.2998 40.2998 69.0996c-5.09961 10.6006 -8.2998 22.3008 -8.2998 34.9004c0 33.4004 20.5 62 49.7002 74c-1.10059 4.5 -1.7002 9.2002 -1.7002 14c0 35.2998 28.7002 64 64 64\nc0.799805 0 1.40039 -0.200195 2.2002 -0.200195c7.09961 27.7002 31.8994 48.2002 61.7998 48.2002zM576 144c0 -33.2998 -20.4004 -61.9004 -49.4004 -73.9004c0.900391 -4.59961 1.40039 -9.2998 1.40039 -14.0996c0 -39.7998 -32.2002 -72 -72 -72\nc-4.09961 0 -8.09961 0.5 -12 1.2002c-9.59961 -28.5 -36.2002 -49.2002 -68 -49.2002c-39.7998 0 -72 32.2002 -72 72v376c0 35.4004 28.7002 64 64 64c29.9004 0 54.7002 -20.5 61.7998 -48.2002c0.700195 0 1.40039 0.200195 2.2002 0.200195\nc35.2998 0 64 -28.7002 64 -64c0 -4.7998 -0.700195 -9.5 -1.7002 -14c29.2002 -12 49.7002 -40.5996 49.7002 -74c0 -12.5996 -3.09961 -24.2998 -8.2998 -34.9004c24 -13.7998 40.2998 -39.3994 40.2998 -69.0996z\" />\n    <glyph glyph-name=\"car-alt\" unicode=\"&#xf5de;\" horiz-adv-x=\"480\" \nd=\"M438.66 235.67c24.1201 -9.16992 41.3398 -32.3301 41.3398 -59.6699v-48c0 -16.1299 -6.16016 -30.6797 -16 -41.9297v-54.0703c0 -17.6699 -14.3301 -32 -32 -32h-32c-17.6699 0 -32 14.3301 -32 32v32h-256v-32c0 -17.6699 -14.3301 -32 -32 -32h-32\nc-17.6699 0 -32 14.3301 -32 32v54.0703c-9.83984 11.2598 -16 25.8096 -16 41.9297v48c0 27.3398 17.2197 50.5 41.3398 59.6699l11.2402 28.0996l19.9297 49.8301c17.1104 42.7705 57.9307 70.4004 103.99 70.4004h127c46.0703 0 86.8799 -27.6299 103.99 -70.4004\nl19.9297 -49.8301zM131.93 289.83l-19.9297 -49.8301h256l-19.9297 49.8301c-7.29004 18.2197 -24.9404 30.1699 -44.5703 30.1699h-127c-19.6299 0 -37.2803 -11.9502 -44.5703 -30.1699zM80 128.2c19.2002 0 48 -3.19043 48 15.9502\nc0 19.1396 -28.7998 47.8496 -48 47.8496s-32 -12.7598 -32 -31.9004c0 -19.1396 12.7998 -31.8994 32 -31.8994zM400 128.2c19.2002 0 32 12.7598 32 31.8994c0 19.1406 -12.7998 31.9004 -32 31.9004s-48 -28.71 -48 -47.8496c0 -19.1406 28.7998 -15.9502 48 -15.9502z\n\" />\n    <glyph glyph-name=\"car-battery\" unicode=\"&#xf5df;\" \nd=\"M480 320c17.6699 0 32 -14.3301 32 -32v-256c0 -17.6699 -14.3301 -32 -32 -32h-448c-17.6699 0 -32 14.3301 -32 32v256c0 17.6699 14.3301 32 32 32h32v48c0 8.83984 7.16016 16 16 16h96c8.83984 0 16 -7.16016 16 -16v-48h128v48c0 8.83984 7.16016 16 16 16h96\nc8.83984 0 16 -7.16016 16 -16v-48h32zM192 184v16c0 4.41992 -3.58008 8 -8 8h-112c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h112c4.41992 0 8 3.58008 8 8zM448 184v16c0 4.41992 -3.58008 8 -8 8h-40v40c0 4.41992 -3.58008 8 -8 8h-16\nc-4.41992 0 -8 -3.58008 -8 -8v-40h-40c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h40v-40c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v40h40c4.41992 0 8 3.58008 8 8z\" />\n    <glyph glyph-name=\"car-crash\" unicode=\"&#xf5e1;\" horiz-adv-x=\"640\" \nd=\"M143.25 227.19l-12.4199 -46.3701c-3.00977 -11.25 -3.62988 -22.8906 -2.41016 -34.3906l-35.2002 -28.9795c-6.56934 -5.41016 -16.3096 0.429688 -14.6201 8.76953l15.4404 76.6807c1.05957 5.25977 -2.66016 10.2793 -8 10.79l-77.8604 7.5498\nc-8.46973 0.819336 -11.2295 11.8301 -4.13965 16.54l65.1504 43.2998c4.45996 2.96973 5.37988 9.15039 1.97949 13.29l-49.71 60.4102c-5.41016 6.56934 0.429688 16.2998 8.78027 14.6201l76.6797 -15.4404c5.25977 -1.05957 10.2803 2.66016 10.7998 8l7.5498 77.8604\nc0.820312 8.47949 11.8301 11.2295 16.5508 4.13965l43.2998 -65.1396c2.96973 -4.45996 9.14941 -5.37988 13.29 -1.98047l60.3994 49.71c6.57031 5.41016 16.3008 -0.429688 14.6201 -8.76953l-11.3301 -56.1602c-2.70996 -3.0498 -5.42969 -6.08984 -7.90918 -9.40039\nl-32.1504 -42.9697l-10.71 -14.3203c-32.7305 -8.75977 -59.1797 -34.5293 -68.0801 -67.7393zM637.82 94.6797l-12.4199 -46.3594c-3.13086 -11.6807 -9.38086 -21.6104 -17.5508 -29.3604c-2.25488 -2.13574 -6.17969 -5.27148 -8.75977 -7l-13.9902 -52.2295\nc-1.13965 -4.27051 -3.09961 -8.10059 -5.64941 -11.3809c-7.66992 -9.83984 -20.7402 -14.6797 -33.54 -11.25l-30.9102 8.28027c-17.0703 4.57031 -27.2002 22.1201 -22.6299 39.1904l8.28027 30.9102l-247.28 66.2598l-8.28027 -30.9102\nc-4.57031 -17.0703 -22.1201 -27.2002 -39.1895 -22.6299l-30.9102 8.28027c-12.7998 3.42969 -21.7002 14.1592 -23.4199 26.5098c-0.570312 4.12012 -0.350586 8.41992 0.790039 12.6797l13.9893 52.2305c-1.37207 2.78809 -3.2041 7.46973 -4.08984 10.4492\nc-3.2002 10.79 -3.64941 22.5205 -0.519531 34.2002l12.4199 46.3701c5.30957 19.7998 19.3594 34.8301 36.8896 42.21c4.9082 2.06836 13.1914 4.18262 18.4902 4.71973l18.1299 24.2305l32.1504 42.9697c3.44922 4.61035 7.18945 8.90039 11.1992 12.8398\nc8 7.89062 17.0303 14.4404 26.7402 19.5107c4.86035 2.54004 9.89062 4.70996 15.0498 6.48926c10.3301 3.58008 21.1904 5.62988 32.2402 6.04004s22.3105 -0.819336 33.4307 -3.7998l122.68 -32.8701c11.1201 -2.97949 21.4795 -7.54004 30.8496 -13.4297\nc11.7236 -7.36133 27.2646 -22.8174 34.6904 -34.5c8.81934 -13.8799 14.6396 -29.8398 16.6797 -46.9902l6.36035 -53.29l3.58984 -30.0498c8.79297 -6.34863 18.9805 -19.7568 22.7402 -29.9297c4.38965 -11.8799 5.29004 -25.1904 1.75 -38.3906zM255.58 213.66\nc-18.5498 4.96973 -34.21 -4.04004 -39.1699 -22.5303s4.10938 -34.1201 22.6494 -39.0898c18.5508 -4.96973 45.54 -15.5098 50.4902 2.97949c4.95996 18.4902 -15.4297 53.6709 -33.9697 58.6406zM546.19 185.49l-6.36035 53.29\nc-0.580078 4.87012 -1.88965 9.5293 -3.82031 13.8594c-5.7998 12.9902 -17.2002 23.0107 -31.4199 26.8203l-122.68 32.8701c-3.36914 0.902344 -8.93457 1.63477 -12.4229 1.63477c-13.2676 0 -30.4883 -8.62207 -38.4375 -19.2451l-32.1494 -42.9697l172 -46.0801z\nM564.68 130.84c-18.5498 4.96973 -53.7998 -15.3096 -58.75 -33.79c-4.94922 -18.4902 23.6904 -22.8594 42.2402 -27.8301c18.5498 -4.96973 34.21 4.04004 39.1699 22.5303c4.9502 18.4805 -4.10938 34.1201 -22.6602 39.0898z\" />\n    <glyph glyph-name=\"car-side\" unicode=\"&#xf5e4;\" horiz-adv-x=\"640\" \nd=\"M544 256c53.0195 0 96 -42.9805 96 -96v-80c0 -8.83984 -7.16016 -16 -16 -16h-48c0 -53.0195 -42.9805 -96 -96 -96s-96 42.9805 -96 96h-128c0 -53.0195 -42.9805 -96 -96 -96s-96 42.9805 -96 96h-48c-8.83984 0 -16 7.16016 -16 16v112\nc0 29.79 20.4404 54.5996 48 61.7402l47.9102 122.029c9.71973 24.3008 33.25 40.2305 59.4199 40.2305h213.91c16.9795 -0.00195312 39.3701 -10.7627 49.9795 -24.0195l108.78 -135.98h16zM160 16c26.4697 0 48 21.5303 48 48s-21.5303 48 -48 48s-48 -21.5303 -48 -48\ns21.5303 -48 48 -48zM232 256v96h-76.6699l-38.4004 -96h115.07zM280 256h166.04l-76.7998 96h-89.2402v-96zM480 16c26.4697 0 48 21.5303 48 48s-21.5303 48 -48 48s-48 -21.5303 -48 -48s21.5303 -48 48 -48z\" />\n    <glyph glyph-name=\"charging-station\" unicode=\"&#xf5e7;\" horiz-adv-x=\"576\" \nd=\"M336 0c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-320c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h320zM544 320h16c8.83984 0 16 -7.16016 16 -16v-32c0 -35.7598 -23.6201 -65.6904 -56 -75.9297v-120.07\nc0 -44.4102 -38.29 -80.0498 -83.5898 -75.6201c-39.4902 3.85059 -68.4102 39.3398 -68.4102 79.0098v24.6104c0 22.0898 -17.9102 40 -40 40h-8v-112h-288v352c0 35.3496 28.6504 64 64 64h160c35.3496 0 64 -28.6504 64 -64v-192h8c48.5996 0 88 -39.4004 88 -88v-28\nc0 -16.9902 15.2197 -30.5 32.7402 -27.6104c13.7598 2.27051 23.2598 15.2402 23.2598 29.1904v118.49c-32.3799 10.2393 -56 40.1699 -56 75.9297v32c0 8.83984 7.16016 16 16 16h16v48c0 8.83984 7.16016 16 16 16s16 -7.16016 16 -16v-48h32v48\nc0 8.83984 7.16016 16 16 16s16 -7.16016 16 -16v-48zM260.09 272.24c4.62012 6.97949 -1.14941 15.7598 -10.3896 15.7598h-57.7002l11.5996 50.79c2.02051 6.66992 -3.71973 13.21 -11.5996 13.21h-68c-6.01953 0 -11.0996 -3.90039 -11.8896 -9.11035l-16 -107\nc-0.959961 -6.2998 4.63965 -11.8896 11.8896 -11.8896h59.3496l-23.0195 -83.0801c-1.7998 -6.63965 4 -12.9199 11.6699 -12.9199c4.17969 0 8.19043 1.91016 10.3896 5.24023z\" />\n    <glyph glyph-name=\"directions\" unicode=\"&#xf5eb;\" \nd=\"M502.61 214.68c12.5195 -12.5293 12.5195 -32.8301 0 -45.3594l-223.931 -223.931c-12.5293 -12.5293 -32.8398 -12.5293 -45.3594 0l-223.931 223.931c-12.5195 12.5293 -12.5195 32.8301 0 45.3594l223.931 223.931c12.5293 12.5195 32.8398 12.5195 45.3594 0z\nM401.63 202.12c3.42969 3.16992 3.42969 8.58984 0 11.7598l-84.21 77.7305c-5.12988 4.72949 -13.4297 1.08984 -13.4297 -5.87988v-53.7305h-112c-17.6699 0 -32 -14.3301 -32 -32v-80c0 -4.41992 3.58008 -8 8 -8h32c4.41992 0 8 3.58008 8 8v64h96v-53.7305\nc0 -6.97949 8.30957 -10.6094 13.4297 -5.87988z\" />\n    <glyph glyph-name=\"draw-polygon\" unicode=\"&#xf5ee;\" horiz-adv-x=\"448\" \nd=\"M384 96c35.3496 0 64 -28.6504 63.9902 -64c0 -35.3496 -28.6504 -64 -64 -64c-23.6299 0 -44.0303 12.9502 -55.1201 32h-209.75c-11.0801 -19.0498 -31.4902 -32 -55.1201 -32c-35.3496 0 -64 28.6504 -64 64c0 23.6299 12.9502 44.04 32 55.1299v209.75\nc-19.0498 11.0801 -32 31.4902 -32 55.1201c0 35.3496 28.6504 64 64 64c23.6299 0 44.04 -12.9502 55.1201 -32h209.76c11.0801 19.0498 31.4902 32 55.1201 32c35.3496 0 64 -28.6504 64 -64s-28.6504 -64 -64 -64c-0.349609 0 -0.669922 0.0898438 -1.01953 0.0996094\nl-39.2002 -65.3193c5.08008 -9.16992 8.21973 -19.5605 8.21973 -30.7803s-3.15039 -21.6104 -8.21973 -30.7803l39.2002 -65.3193c0.349609 0 0.669922 0.0996094 1.01953 0.0996094zM96 87.1201c8.07422 -4.68848 18.4316 -15.0459 23.1201 -23.1201h208.36\nl-38.4609 64.0996c-0.349609 0 -0.669922 -0.0996094 -1.01953 -0.0996094c-35.3496 0 -64 28.6504 -64 64s28.6504 64 64 64c0.349609 0 0.669922 -0.0898438 1.01953 -0.0996094l38.4609 64.0996h-208.36c-4.69043 -8.07227 -15.0479 -18.4297 -23.1201 -23.1201v-209.76z\nM272 192c0 -8.82031 7.17969 -16 16 -16s16 7.17969 16 16s-7.17969 16 -16 16s-16 -7.17969 -16 -16zM400 352c0 8.82031 -7.17969 16 -16 16s-16 -7.17969 -16 -16s7.17969 -16 16 -16s16 7.17969 16 16zM64 368c-8.82031 0 -16 -7.17969 -16 -16s7.17969 -16 16 -16\ns16 7.17969 16 16s-7.17969 16 -16 16zM48 32c0 -8.82031 7.17969 -16 16 -16s16 7.17969 16 16s-7.17969 16 -16 16s-16 -7.17969 -16 -16zM384 16c8.82031 0 16 7.17969 16 16s-7.17969 16 -16 16s-16 -7.17969 -16 -16s7.17969 -16 16 -16z\" />\n    <glyph glyph-name=\"laptop-code\" unicode=\"&#xf5fc;\" horiz-adv-x=\"640\" \nd=\"M255.03 186.35l-58.3506 58.3408c-6.25 6.25 -6.25 16.3799 0 22.6299l58.3398 58.3398c6.25 6.25 16.3809 6.25 22.6309 0l11.3096 -11.3105c6.25 -6.25 6.25 -16.3799 0 -22.6299l-35.71 -35.7197l35.7197 -35.71c6.25 -6.25 6.25 -16.3799 0 -22.6299\nl-11.3096 -11.3105c-6.25 -6.25 -16.3799 -6.25 -22.6299 0zM351.04 197.65c-6.25 6.25 -6.25 16.3799 0 22.6299l35.71 35.7197l-35.71 35.71c-6.25 6.25 -6.25 16.3799 0 22.6299l11.3096 11.3105c6.25 6.25 16.3809 6.25 22.6309 0l58.3398 -58.3408\nc6.25 -6.25 6.25 -16.3799 0 -22.6299l-58.3398 -58.3398c-6.25 -6.25 -16.3809 -6.25 -22.6309 0zM624 32c8.7998 0 16 -7.2002 16 -16v-16c0 -35.2002 -28.7998 -64 -64 -64h-512c-35.2002 0 -64 28.7998 -64 64v16c0 8.7998 7.2002 16 16 16h239.23\nc-0.25 -14.5303 14.0791 -32 32.7695 -32h60.7998c18.0303 0 32 12.1904 32.7402 32h242.46zM576 400v-336h-512v336c0 26.4004 21.5996 48 48 48h416c26.4004 0 48 -21.5996 48 -48zM512 128v256h-384v-256h384z\" />\n    <glyph glyph-name=\"layer-group\" unicode=\"&#xf5fd;\" \nd=\"M12.4102 299.98c-16.5498 7.50977 -16.5498 32.5293 0 40.0391l232.95 105.671c2.79883 1.2793 7.56738 2.31738 10.6445 2.31738s7.84668 -1.03809 10.6455 -2.31738l232.93 -105.681c16.5498 -7.50977 16.5498 -32.5195 0 -40.0293l-232.94 -105.671\nc-6.7998 -3.08984 -14.4893 -3.08984 -21.29 0zM499.59 211.7c16.5498 -7.5 16.5498 -32.5 0 -40l-232.95 -105.59c-6.7998 -3.08008 -14.4893 -3.08008 -21.29 0l-232.939 105.59c-16.5498 7.5 -16.5498 32.5 0 40l58.0996 26.3301l161.63 -73.2705\nc7.57031 -3.42969 15.5908 -5.16992 23.8604 -5.16992s16.2998 1.74023 23.8604 5.16992l161.64 73.2705zM499.59 83.9004c16.5498 -7.5 16.5498 -32.5 0 -40l-232.95 -105.591c-6.7998 -3.0791 -14.4893 -3.0791 -21.29 0l-232.939 105.591\nc-16.5498 7.5 -16.5498 32.5 0 40l57.8799 26.2295l161.85 -73.3701c7.57031 -3.42969 15.5908 -5.16992 23.8604 -5.16992s16.2998 1.74023 23.8604 5.16992l161.859 73.3701z\" />\n    <glyph glyph-name=\"microscope\" unicode=\"&#xf610;\" \nd=\"M160 128c-17.6699 0 -32 14.3301 -32 32v224c0 17.6699 14.3301 32 32 32v16c0 8.83984 7.16016 16 16 16h64c8.83984 0 16 -7.16016 16 -16v-16c17.6699 0 32 -14.3301 32 -32v-224c0 -17.6699 -14.3301 -32 -32 -32h-12v-16c0 -8.83984 -7.16016 -16 -16 -16h-40\nc-8.83984 0 -16 7.16016 -16 16v16h-12zM464 0c26.5098 0 48 -21.4902 48 -48c0 -8.83984 -7.16016 -16 -16 -16h-480c-8.83984 0 -16 7.16016 -16 16c0 26.5098 21.4902 48 48 48h272c70.5801 0 128 57.4199 128 128s-57.4199 128 -128 128v64\nc105.88 0 192 -86.1201 192 -192c0 -49.2002 -18.7598 -93.9902 -49.29 -128h1.29004zM104 32c-4.41992 0 -8 3.58008 -8 8v16c0 4.41992 3.58008 8 8 8h208c4.41992 0 8 -3.58008 8 -8v-16c0 -4.41992 -3.58008 -8 -8 -8h-208z\" />\n    <glyph glyph-name=\"oil-can\" unicode=\"&#xf613;\" horiz-adv-x=\"640\" \nd=\"M629.8 287.69c5.11035 1.45996 10.2002 -2.38086 10.1904 -7.69043v-18.0801c0 -2.12012 -0.839844 -4.16016 -2.33984 -5.66016l-212.261 -214.75c-6.00977 -6.08984 -14.21 -9.50977 -22.7598 -9.50977h-274.63c-17.6699 0 -32 14.3301 -32 32v46.54l-69.7197 12.6904\nc-15.2207 2.75977 -26.2803 16.0195 -26.2803 31.4795v94.9502c0 17.9795 14.6699 32.0098 31.9297 32.0098c1.61133 0 4.20605 -0.237305 5.79004 -0.530273l138.28 -25.1396h56v48h-56c-8.83984 0 -16 7.16016 -16 16v16c0 8.83984 7.16016 16 16 16h160\nc8.83984 0 16 -7.16016 16 -16v-16c0 -8.83984 -7.16016 -16 -16 -16h-56v-48h56.8896c8.33984 -0.00292969 21.1611 -3.03125 28.6201 -6.75977l50.4902 -25.2402zM96 159.33v62.4297l-48 8.73047v-62.4307zM549.33 74.6699c0 23.5605 42.6699 85.3301 42.6699 85.3301\ns42.6699 -61.7598 42.6699 -85.3301s-19.0996 -42.6699 -42.6699 -42.6699s-42.6699 19.1104 -42.6699 42.6699z\" />\n    <glyph glyph-name=\"poop\" unicode=\"&#xf619;\" \nd=\"M451.36 78.8604c34.3301 -5.48047 60.6396 -34.9805 60.6396 -70.8604c0 -39.7598 -32.2402 -72 -72 -72h-368c-39.7598 0 -72 32.2402 -72 72c0 35.8799 26.3096 65.3799 60.6396 70.8604c-17.2998 13.1494 -28.6396 33.7295 -28.6396 57.1396\nc0 39.7695 32.2402 72 72 72h14.0703c-13.4199 11.7305 -22.0703 28.7803 -22.0703 48c0 35.3496 28.6504 64 64 64h16c44.1797 0 80 35.8203 80 80c0 17.3799 -5.69043 33.3604 -15.1104 46.4805c4.95996 0.779297 9.94043 1.51953 15.1104 1.51953\nc53.0195 0 96 -42.9805 96 -96c0 -11.2803 -2.30957 -21.9502 -5.87988 -32h5.87988c35.3496 0 64 -28.6504 64 -64c0 -19.2197 -8.65039 -36.2695 -22.0703 -48h14.0703c39.7598 0 72 -32.2305 72 -72c0 -23.4102 -11.3398 -43.9902 -28.6396 -57.1396z\" />\n    <glyph glyph-name=\"shapes\" unicode=\"&#xf61f;\" \nd=\"M512 128v-160c0 -17.6699 -14.3301 -32 -32 -32h-160c-17.6699 0 -32 14.3301 -32 32v160c0 17.6699 14.3301 32 32 32h160c17.6699 0 32 -14.3301 32 -32zM128 192c70.6904 0 128 -57.3096 128 -128s-57.3096 -128 -128 -128s-128 57.3096 -128 128s57.3096 128 128 128\nzM479.03 224h-190.061c-25.3398 0 -41.1797 26.6699 -28.5098 48l95.0303 160c12.6699 21.3301 44.3496 21.3301 57.0195 0l95.0303 -160c12.6699 -21.3301 -3.16992 -48 -28.5098 -48z\" />\n    <glyph glyph-name=\"star-of-life\" unicode=\"&#xf621;\" horiz-adv-x=\"480\" \nd=\"M471.99 113.57c7.66016 -4.41992 10.2793 -14.2002 5.85938 -21.8506l-32.0195 -55.4297c-4.41992 -7.66016 -14.21 -10.2803 -21.8701 -5.86035l-135.93 78.4307v-156.86c0 -8.83984 -7.16992 -16 -16.0107 -16h-64.0391c-8.84082 0 -16.0107 7.16016 -16.0107 16\nv156.85l-135.93 -78.4297c-7.66016 -4.41016 -17.4502 -1.79004 -21.8701 5.86035l-32.0195 55.4297c-4.41992 7.65039 -1.80078 17.4404 5.85938 21.8604l135.931 78.4297l-135.931 78.4297c-7.66016 4.41992 -10.2793 14.21 -5.85938 21.8604l32.0195 55.4199\nc4.41992 7.65039 14.21 10.2803 21.8701 5.86035l135.93 -78.4307v156.86c0 8.83984 7.16992 16 16.0107 16h64.0391c8.84082 0 16.0107 -7.16016 16.0107 -16v-156.85l135.93 78.4297c7.66016 4.41992 17.4502 1.79004 21.8701 -5.86035l32.0195 -55.4297\nc4.41992 -7.66016 1.80078 -17.4404 -5.85938 -21.8604l-135.931 -78.4297z\" />\n    <glyph glyph-name=\"teeth\" unicode=\"&#xf62e;\" horiz-adv-x=\"640\" \nd=\"M544 448c53.0195 0 96 -42.9805 96 -96v-320c0 -53.0195 -42.9805 -96 -96 -96h-448c-53.0195 0 -96 42.9805 -96 96v320c0 53.0195 42.9805 96 96 96h448zM160 80v64c0 8.83984 -7.16016 16 -16 16h-64c-8.83984 0 -16 -7.16016 -16 -16v-64\nc0 -26.5098 21.4902 -48 48 -48s48 21.4902 48 48zM160 208v64c0 26.5098 -21.4902 48 -48 48s-48 -21.4902 -48 -48v-64c0 -8.83984 7.16016 -16 16 -16h64c8.83984 0 16 7.16016 16 16zM304 88v56c0 8.83984 -7.16016 16 -16 16h-80c-8.83984 0 -16 -7.16016 -16 -16v-56\nc0 -30.9297 25.0703 -56 56 -56s56 25.0703 56 56zM304 208v88c0 30.9297 -25.0703 56 -56 56s-56 -25.0703 -56 -56v-88c0 -8.83984 7.16016 -16 16 -16h80c8.83984 0 16 7.16016 16 16zM448 88v56c0 8.83984 -7.16016 16 -16 16h-80c-8.83984 0 -16 -7.16016 -16 -16v-56\nc0 -30.9297 25.0703 -56 56 -56s56 25.0703 56 56zM448 208v88c0 30.9297 -25.0703 56 -56 56s-56 -25.0703 -56 -56v-88c0 -8.83984 7.16016 -16 16 -16h80c8.83984 0 16 7.16016 16 16zM576 80v64c0 8.83984 -7.16016 16 -16 16h-64c-8.83984 0 -16 -7.16016 -16 -16v-64\nc0 -26.5098 21.4902 -48 48 -48s48 21.4902 48 48zM576 208v64c0 26.5098 -21.4902 48 -48 48s-48 -21.4902 -48 -48v-64c0 -8.83984 7.16016 -16 16 -16h64c8.83984 0 16 7.16016 16 16z\" />\n    <glyph glyph-name=\"teeth-open\" unicode=\"&#xf62f;\" horiz-adv-x=\"640\" \nd=\"M544 448c53.0195 0 96 -42.9805 96 -96v-64c0 -35.3496 -28.6602 -64 -64 -64h-512c-35.3398 0 -64 28.6504 -64 64v64c0 53.0195 42.9805 96 96 96h448zM160 272v32c0 26.5098 -21.4902 48 -48 48s-48 -21.4902 -48 -48v-32c0 -8.83984 7.16016 -16 16 -16h64\nc8.83984 0 16 7.16016 16 16zM304 272v56c0 30.9297 -25.0703 56 -56 56s-56 -25.0703 -56 -56v-56c0 -8.83984 7.16016 -16 16 -16h80c8.83984 0 16 7.16016 16 16zM448 272v56c0 30.9297 -25.0703 56 -56 56s-56 -25.0703 -56 -56v-56c0 -8.83984 7.16016 -16 16 -16h80\nc8.83984 0 16 7.16016 16 16zM576 272v32c0 26.5098 -21.4902 48 -48 48s-48 -21.4902 -48 -48v-32c0 -8.83984 7.16016 -16 16 -16h64c8.83984 0 16 7.16016 16 16zM576 128c35.3398 0 64 -28.6504 64 -64v-32c0 -53.0195 -42.9805 -96 -96 -96h-448\nc-53.0195 0 -96 42.9805 -96 96v32c0 35.3496 28.6602 64 64 64h512zM160 48v32c0 8.83984 -7.16016 16 -16 16h-64c-8.83984 0 -16 -7.16016 -16 -16v-32c0 -26.5098 21.4902 -48 48 -48s48 21.4902 48 48zM304 56v24c0 8.83984 -7.16016 16 -16 16h-80\nc-8.83984 0 -16 -7.16016 -16 -16v-24c0 -30.9297 25.0703 -56 56 -56s56 25.0703 56 56zM448 56v24c0 8.83984 -7.16016 16 -16 16h-80c-8.83984 0 -16 -7.16016 -16 -16v-24c0 -30.9297 25.0703 -56 56 -56s56 25.0703 56 56zM576 48v32c0 8.83984 -7.16016 16 -16 16h-64\nc-8.83984 0 -16 -7.16016 -16 -16v-32c0 -26.5098 21.4902 -48 48 -48s48 21.4902 48 48z\" />\n    <glyph glyph-name=\"theater-masks\" unicode=\"&#xf630;\" horiz-adv-x=\"640\" \nd=\"M206.86 202.85l-7.62988 -43.1797c-21.0908 -7.21973 -38.5 -18.2002 -49.9004 -30.9199c-2.41992 32.9004 21.6504 63.6504 57.5303 74.0996zM95.8096 153c5.87012 -33.1699 64.3203 -71.8096 111.931 -84.79c10.5596 -27.0996 25.9795 -50.5 39.5 -67.5801\nc-3.25977 -0.339844 -6.41992 -0.799805 -10.0098 -0.799805c-68.1201 0 -190.221 61.5596 -204.45 142.08l-31.7305 179.51c-4.96973 28.0996 7.98047 56.0996 32.1504 69.5205c67.8193 37.6396 143.46 57.0596 220.12 57.0596c23.9199 0 47.9492 -1.88965 71.8594 -5.7002\nc17.29 -2.76953 31.7803 -13.0498 41.7705 -27c-19.1299 -0.769531 -38.29 -2.2998 -57.1807 -5.31934c-19.8594 -3.1709 -37.6396 -12.5303 -51.5898 -26c-1.62012 0.0195312 -3.23926 0.189453 -4.84961 0.189453c-65.8896 0 -131.25 -16.9502 -189.01 -49.0098\nc0.0400391 -0.0302734 -0.530273 -1.03027 -0.240234 -2.65039zM193.36 290.46c3.83984 -21.7002 -10.6904 -42.4004 -32.4404 -46.2197c-21.7598 -3.82031 -42.5 10.6699 -46.3398 32.3701c-0.730469 4.12012 -0.610352 8.15918 -0.0898438 12.0996\nc10.8096 -5.57031 24.8301 -7.75 39.4795 -5.16992c14.6504 2.57031 27.0703 9.41016 35.3203 18.3203c1.83984 -3.53027 3.33984 -7.28027 4.07031 -11.4004zM606.8 327.1c24.1699 -13.4092 37.1201 -41.4092 32.1504 -69.5195l-31.7305 -179.51\nc-15.3896 -87.0508 -156.83 -151.931 -219.859 -140.84c-63.0303 11.0791 -173.7 120.3 -158.311 207.35l31.7305 179.51c4.95996 28.1006 26.7295 50 54.04 54.3604c100.55 16.0596 203 -1.96973 291.979 -51.3506zM333.56 230.3\nc-0.729492 -4.12012 -0.609375 -8.16016 -0.0791016 -12.1094c10.8096 5.56934 24.8291 7.75 39.4795 5.16992c14.6504 -2.57031 27.0703 -9.41016 35.3203 -18.3203c1.83984 3.53027 3.33984 7.28027 4.06934 11.4004c3.83008 21.6992 -10.6895 42.3896 -32.4492 46.2197\nc-21.7607 3.83008 -42.5 -10.6602 -46.3408 -32.3604zM404.03 31.54c55.6699 -9.79004 108.2 23.7803 122.38 75.7197c-28.1104 -16.9697 -68.6504 -24.21 -111.93 -16.5996c-43.2803 7.60938 -78.8906 28.2402 -99.4902 53.7803\nc-4.48047 -53.6309 33.3594 -103.11 89.04 -112.9zM534.33 182.88c1.83984 3.52051 3.33984 7.27051 4.07031 11.4004c3.83008 21.7002 -10.7002 42.3896 -32.4502 46.2197c-21.7598 3.82031 -42.5 -10.6699 -46.3398 -32.3701\nc-0.730469 -4.12012 -0.610352 -8.16016 -0.0908203 -12.0996c10.8105 5.56934 24.8301 7.75 39.4805 5.16992c14.6504 -2.57031 27.0801 -9.41016 35.3301 -18.3203z\" />\n    <glyph glyph-name=\"traffic-light\" unicode=\"&#xf637;\" horiz-adv-x=\"384\" \nd=\"M384 256c0 -41.7402 -26.7998 -76.9004 -64 -90.1201v-37.8799h64c0 -42.8398 -28.25 -78.6904 -66.9902 -91.0498c-12.4297 -57.6699 -63.6094 -100.95 -125.01 -100.95s-112.58 43.2803 -125.01 100.95c-38.7402 12.3594 -66.9902 48.21 -66.9902 91.0498h64v37.8799\nc-37.2002 13.2197 -64 48.3799 -64 90.1201h64v37.8799c-37.2002 13.2197 -64 48.3799 -64 90.1201h64v32c0 17.6699 14.3301 32 32 32h192c17.6699 0 32 -14.3301 32 -32v-32h64c0 -41.7402 -26.7998 -76.9004 -64 -90.1201v-37.8799h64zM192 32\nc26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48s-48 -21.4902 -48 -48s21.4902 -48 48 -48zM192 160c26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48s-48 -21.4902 -48 -48s21.4902 -48 48 -48zM192 288c26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48\ns-48 -21.4902 -48 -48s21.4902 -48 48 -48z\" />\n    <glyph glyph-name=\"truck-monster\" unicode=\"&#xf63b;\" horiz-adv-x=\"640\" \nd=\"M624 224c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-16.71c-29.21 38.6504 -75.0996 64 -127.28 64c-52.1797 0 -98.0693 -25.3496 -127.279 -64h-65.4502c-29.21 38.6504 -75.1006 64 -127.28 64s-98.0703 -25.3496 -127.28 -64h-16.7197\nc-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h16v80c0 8.83984 7.16016 16 16 16h176v96c0 17.6699 14.3301 32 32 32h113.24c16.9795 -0.00195312 39.3701 -10.7627 49.9795 -24.0195l83.1807 -103.98h73.5996c17.6699 0 32 -14.3301 32 -32v-64h16z\nM288 320h132.44l-51.2002 64h-81.2402v-64zM592 96c8.83984 0 16 -7.16016 16.0195 -16v-32c0 -8.83984 -7.15918 -16 -16 -16h-5.19922c-1.79688 -6.01074 -5.67188 -15.3691 -8.65039 -20.8896l3.66992 -3.66992c6.25 -6.25 6.25 -16.3809 0 -22.6309l-22.6299 -22.6299\nc-6.25 -6.25 -16.3799 -6.25 -22.6299 0l-3.66992 3.66992c-6.62012 -3.58008 -13.5703 -6.44922 -20.9004 -8.64941v-5.2002c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v5.2002c-7.33008 2.2002 -14.29 5.08008 -20.8994 8.64941\nl-3.66992 -3.66992c-6.25 -6.25 -16.3809 -6.25 -22.6309 0l-22.6299 22.6299c-6.25 6.25 -6.25 16.3809 0 22.6309l3.66992 3.66992c-3.58008 6.60938 -6.44922 13.5596 -8.64941 20.8896h-5.2002c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h5.2002\nc1.7959 6.01074 5.6709 15.3691 8.64941 20.8896l-3.66992 3.66992c-6.25 6.25 -6.25 16.3809 0 22.6309l22.6299 22.6299c6.25 6.25 16.3809 6.25 22.6309 0l3.66992 -3.66992c6.60938 3.58008 13.5596 6.44922 20.8896 8.64941v5.2002c0 8.83984 7.16016 16 16 16h32\nc8.83984 0 16 -7.16016 16 -16v-5.2002c6.01074 -1.7959 15.3691 -5.6709 20.8896 -8.64941l3.66992 3.66992c6.25 6.25 16.3809 6.25 22.6309 0l22.6299 -22.6299c6.25 -6.25 6.25 -16.3809 0 -22.6309l-3.66992 -3.66992\nc3.58008 -6.60938 6.44922 -13.5596 8.64941 -20.8896h5.2002zM480 16c26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48s-48 -21.4902 -48 -48s21.4902 -48 48 -48zM272 96c8.83984 0 16 -7.16016 16.0195 -15.9902v-32c0 -8.83984 -7.15918 -16 -16 -16h-5.19922\nc-1.79688 -6.00977 -5.67188 -15.3691 -8.65039 -20.8896l3.66992 -3.66992c6.25 -6.25 6.25 -16.3799 0 -22.6299l-22.6299 -22.6299c-6.25 -6.25 -16.3799 -6.25 -22.6299 0l-3.66992 3.66992c-6.62012 -3.58008 -13.5703 -6.4502 -20.9004 -8.65039v-5.2002\nc0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v5.2002c-7.33008 2.2002 -14.29 5.08008 -20.8994 8.65039l-3.66992 -3.66992c-6.25 -6.25 -16.3809 -6.25 -22.6309 0l-22.6299 22.6299c-6.25 6.25 -6.25 16.3799 0 22.6299l3.66992 3.66992\nc-3.58008 6.61035 -6.44922 13.5596 -8.64941 20.8896h-5.2002c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h5.2002c1.7959 6.01074 5.6709 15.3691 8.64941 20.8906l-3.66992 3.66992c-6.25 6.25 -6.25 16.3799 0 22.6299l22.6299 22.6201\nc6.25 6.25 16.3809 6.25 22.6309 0l3.66992 -3.66992c6.60938 3.58008 13.5596 6.44922 20.8896 8.64941v5.2002c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-5.2002c6.01074 -1.7959 15.3691 -5.6709 20.8896 -8.64941l3.66992 3.66992\nc6.25 6.25 16.3809 6.25 22.6309 0l22.6299 -22.6299c6.25 -6.25 6.25 -16.3809 0 -22.6309l-3.66992 -3.66992c3.58008 -6.60938 6.44922 -13.5596 8.64941 -20.8896h5.2002zM160 16c26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48s-48 -21.4902 -48 -48\ns21.4902 -48 48 -48z\" />\n    <glyph glyph-name=\"truck-pickup\" unicode=\"&#xf63c;\" horiz-adv-x=\"640\" \nd=\"M624 160c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-49.5996c0.759766 -5.26953 1.60938 -10.5195 1.60938 -16c0 -61.8604 -50.1396 -112 -112 -112c-61.8594 0 -112 50.1396 -112 112c0 5.48047 0.850586 10.7305 1.61035 16h-67.2305\nc0.760742 -5.26953 1.61035 -10.5195 1.61035 -16c0 -61.8604 -50.1396 -112 -112 -112s-112 50.1396 -112 112c0 5.48047 0.849609 10.7305 1.61035 16h-49.6104c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h16v64c0 17.6699 14.3301 32 32 32h160v128\nc0 17.6699 14.3301 32 32 32h113.24c16.9795 -0.00195312 39.3701 -10.7627 49.9795 -24.0195l108.78 -135.98h48c17.6699 0 32 -14.3301 32 -32v-64h16zM288 352v-96h158.04l-76.7998 96h-81.2402zM176 32c26.4697 0 48 21.5303 48 48s-21.5303 48 -48 48\ns-48 -21.5303 -48 -48s21.5303 -48 48 -48zM464 32c26.4697 0 48 21.5303 48 48s-21.5303 48 -48 48s-48 -21.5303 -48 -48s21.5303 -48 48 -48z\" />\n    <glyph glyph-name=\"ad\" unicode=\"&#xf641;\" \nd=\"M157.52 176l18.4805 53.2197l18.4805 -53.2197h-36.9609zM352 192c13.2305 0 24 -10.7695 24 -24s-10.7695 -24 -24 -24s-24 10.7695 -24 24s10.7695 24 24 24zM464 384c26.5 0 48 -21.5 48 -48v-288c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v288\nc0 26.5 21.5 48 48 48h416zM250.58 96c11 0 18.7197 10.8496 15.1104 21.25l-53.6904 154.62c-3.08789 8.90332 -13.2422 16.1299 -22.666 16.1299h-0.00390625h-26.6602h-0.00390625c-9.41992 0 -19.5742 -7.22168 -22.666 -16.1201l-53.7002 -154.63\nc-3.60938 -10.4004 4.11035 -21.25 15.1201 -21.25h16.9404h0.00585938c6.28125 0 13.0527 4.81641 15.1143 10.75l7.37988 21.25h70.29l7.36914 -21.25c2.24023 -6.42969 8.31055 -10.75 15.1201 -10.75h16.9404zM424 112v160c0 8.83984 -7.16016 16 -16 16h-16\nc-8.83984 0 -16 -7.16016 -16 -16v-36.4199c-7.54004 2.68945 -15.54 4.41992 -24 4.41992c-39.7002 0 -72 -32.2998 -72 -72s32.2998 -72 72 -72c9.92969 0 19.4004 2.01953 28.0195 5.67969c2.94043 -3.41016 7.13086 -5.67969 11.9805 -5.67969h16\nc8.83984 0 16 7.16016 16 16z\" />\n    <glyph glyph-name=\"ankh\" unicode=\"&#xf644;\" horiz-adv-x=\"320\" \nd=\"M296 192c13.25 0 24 -10.7402 24 -24v-32c0 -13.25 -10.75 -24 -24 -24h-96v-152c0 -13.25 -10.75 -24 -24 -24h-32c-13.25 0 -24 10.75 -24 24v152h-96c-13.25 0 -24 10.75 -24 24v32c0 13.2598 10.75 24 24 24h44.6201c-21.0801 33.9902 -36.6201 74.3496 -36.6201 112\nc0 88.3701 57.3096 144 128 144s128 -55.6299 128 -144c0 -37.6504 -15.54 -78.0098 -36.6201 -112h44.6201zM160 368c-29.6104 0 -48 -24.5195 -48 -64c0 -34.6602 27.1396 -78.1504 48 -100.87c20.8604 22.7305 48 66.21 48 100.87c0 39.4805 -18.3896 64 -48 64z\" />\n    <glyph glyph-name=\"bible\" unicode=\"&#xf647;\" horiz-adv-x=\"448\" \nd=\"M448 89.5996c0 -9.59961 -3.2002 -16 -9.59961 -19.1992c-3.2002 -12.8008 -3.2002 -57.6006 0 -73.6006c6.39941 -6.39941 9.59961 -12.7998 9.59961 -19.2002v-16c0 -16 -12.7998 -25.5996 -25.5996 -25.5996h-326.4c-54.4004 0 -96 41.5996 -96 96v320\nc0 54.4004 41.5996 96 96 96h326.4c16 0 25.5996 -9.59961 25.5996 -25.5996v-332.801zM144 304v-32c0 -8.83984 7.16016 -16 16 -16h48v-112c0 -8.83984 7.16016 -16 16 -16h32c8.83984 0 16 7.16016 16 16v112h48c8.83984 0 16 7.16016 16 16v32\nc0 8.83984 -7.16016 16 -16 16h-48v48c0 8.83984 -7.16016 16 -16 16h-32c-8.83984 0 -16 -7.16016 -16 -16v-48h-48c-8.83984 0 -16 -7.16016 -16 -16zM380.8 0v64h-284.8c-16 0 -32 -12.7998 -32 -32s12.7998 -32 32 -32h284.8z\" />\n    <glyph glyph-name=\"business-time\" unicode=\"&#xf64a;\" horiz-adv-x=\"640\" \nd=\"M496 224c79.5898 0 144 -64.4102 144 -144s-64.4102 -144 -144 -144s-144 64.4102 -144 144s64.4102 144 144 144zM560 73.71v12.5801c0 5.33984 -4.37012 9.70996 -9.70996 9.70996h-38.29v54.2803c0 5.33984 -4.37012 9.70996 -9.70996 9.70996h-12.5703\nc-5.33984 0 -9.70996 -4.37012 -9.70996 -9.70996v-76.5703c0 -5.33984 4.37012 -9.70996 9.70996 -9.70996h60.5703c5.33984 0 9.70996 4.37012 9.70996 9.70996zM496 256c-37.5303 0 -72.2803 -11.9102 -100.88 -32h-395.12v80c0 25.5996 22.4004 48 48 48h80v48\nc0 25.5996 22.4004 48 48 48h160c25.5996 0 48 -22.4004 48 -48v-48h80c25.5996 0 48 -22.4004 48 -48v-48.8096c-5.28027 0.479492 -10.5996 0.80957 -16 0.80957zM320 352v32h-128v-32h128zM326.82 128c-4.33984 -15.2803 -6.82031 -31.3398 -6.82031 -48\nc0 -28.8203 7.09961 -55.96 19.4297 -80h-291.43c-25.5996 0 -48 22.4004 -48 48v144h192v-48c0 -8.83984 7.16016 -16 16 -16h118.82z\" />\n    <glyph glyph-name=\"city\" unicode=\"&#xf64f;\" horiz-adv-x=\"640\" \nd=\"M616 256c13.25 0 24 -10.7402 24 -24v-264c0 -17.6699 -14.3301 -32 -32 -32h-576c-17.6699 0 -32 14.3301 -32 32v360c0 13.2598 10.7402 24 24 24h40v80c0 8.83984 7.16016 16 16 16h16c8.83984 0 16 -7.16016 16 -16v-80h64v80c0 8.83984 7.16016 16 16 16h16\nc8.83984 0 16 -7.16016 16 -16v-80h64v72c0 13.2598 10.7402 24 24 24h144c13.2598 0 24 -10.7402 24 -24v-168h136zM128 44v40c0 6.62988 -5.37012 12 -12 12h-40c-6.62988 0 -12 -5.37012 -12 -12v-40c0 -6.62988 5.37012 -12 12 -12h40c6.62988 0 12 5.37012 12 12z\nM128 140v40c0 6.62988 -5.37012 12 -12 12h-40c-6.62988 0 -12 -5.37012 -12 -12v-40c0 -6.62988 5.37012 -12 12 -12h40c6.62988 0 12 5.37012 12 12zM128 236v40c0 6.62988 -5.37012 12 -12 12h-40c-6.62988 0 -12 -5.37012 -12 -12v-40c0 -6.62988 5.37012 -12 12 -12h40\nc6.62988 0 12 5.37012 12 12zM256 44v40c0 6.62988 -5.37012 12 -12 12h-40c-6.62988 0 -12 -5.37012 -12 -12v-40c0 -6.62988 5.37012 -12 12 -12h40c6.62988 0 12 5.37012 12 12zM256 140v40c0 6.62988 -5.37012 12 -12 12h-40c-6.62988 0 -12 -5.37012 -12 -12v-40\nc0 -6.62988 5.37012 -12 12 -12h40c6.62988 0 12 5.37012 12 12zM256 236v40c0 6.62988 -5.37012 12 -12 12h-40c-6.62988 0 -12 -5.37012 -12 -12v-40c0 -6.62988 5.37012 -12 12 -12h40c6.62988 0 12 5.37012 12 12zM416 140v40c0 6.62988 -5.37012 12 -12 12h-40\nc-6.62988 0 -12 -5.37012 -12 -12v-40c0 -6.62988 5.37012 -12 12 -12h40c6.62988 0 12 5.37012 12 12zM416 236v40c0 6.62988 -5.37012 12 -12 12h-40c-6.62988 0 -12 -5.37012 -12 -12v-40c0 -6.62988 5.37012 -12 12 -12h40c6.62988 0 12 5.37012 12 12zM416 332v40\nc0 6.62988 -5.37012 12 -12 12h-40c-6.62988 0 -12 -5.37012 -12 -12v-40c0 -6.62988 5.37012 -12 12 -12h40c6.62988 0 12 5.37012 12 12zM576 44v40c0 6.62988 -5.37012 12 -12 12h-40c-6.62988 0 -12 -5.37012 -12 -12v-40c0 -6.62988 5.37012 -12 12 -12h40\nc6.62988 0 12 5.37012 12 12zM576 140v40c0 6.62988 -5.37012 12 -12 12h-40c-6.62988 0 -12 -5.37012 -12 -12v-40c0 -6.62988 5.37012 -12 12 -12h40c6.62988 0 12 5.37012 12 12z\" />\n    <glyph glyph-name=\"comment-dollar\" unicode=\"&#xf651;\" \nd=\"M256 416c141.38 0 256 -93.1201 256 -208s-114.62 -208 -256 -208c-38.4102 0 -74.71 7.07031 -107.4 19.3799c-24.6094 -19.6299 -74.3398 -51.3799 -140.6 -51.3799h-0.00195312c-4.41309 0 -7.99512 3.58203 -7.99512 7.99512\nc0 1.76172 0.984375 4.22754 2.19727 5.50488c0.5 0.530273 42.2598 45.4502 54.8193 95.7598c-35.6094 35.7305 -57.0195 81.1807 -57.0195 130.74c0 114.88 114.62 208 256 208zM280 113.56c30.29 3.62012 53.3701 30.9805 49.3203 63.04\nc-2.90039 22.96 -20.6602 41.3105 -42.9102 47.6699l-50.0703 14.3008c-3.59961 1.0293 -6.12012 4.35938 -6.12012 8.10938c0 4.64062 3.78027 8.41992 8.44043 8.41992h32.7803h0.0654297c2.94727 0 7.51367 -0.994141 10.1943 -2.21973\nc4.7998 -2.20996 10.3701 -1.70996 14.1094 2.03027l17.5205 17.5195c5.26953 5.27051 4.66992 14.2705 -1.5498 18.3799c-9.5 6.27051 -20.3604 10.1104 -31.7803 11.46v17.7305c0 8.83984 -7.16016 16 -16 16h-16c-8.83984 0 -16 -7.16016 -16 -16v-17.5498\nc-30.29 -3.62012 -53.3701 -30.9805 -49.3203 -63.0498c2.90039 -22.96 20.6602 -41.3203 42.9102 -47.6699l50.0703 -14.3008c3.59961 -1.0293 6.12012 -4.35938 6.12012 -8.10938c0 -4.64062 -3.78027 -8.41992 -8.44043 -8.41992h-32.7803\nc-3.59961 0 -7.0791 0.759766 -10.2598 2.21973c-4.7998 2.20996 -10.3701 1.70996 -14.1094 -2.03027l-17.5205 -17.5195c-5.26953 -5.27051 -4.66992 -14.2705 1.5498 -18.3799c9.5 -6.27051 20.3604 -10.1104 31.7803 -11.46v-17.7305c0 -8.83984 7.16016 -16 16 -16h16\nc8.83984 0 16 7.16016 16 16v17.5596z\" />\n    <glyph glyph-name=\"comments-dollar\" unicode=\"&#xf653;\" horiz-adv-x=\"576\" \nd=\"M416 256c0 -88.3701 -93.1201 -160 -208 -160c-40.9805 0 -79.0703 9.24023 -111.27 24.9805c-21.8008 -12.7305 -52.1504 -24.9805 -88.7305 -24.9805h-0.00195312c-4.41309 0 -7.99512 3.58203 -7.99512 7.99512c0 1.76172 0.984375 4.22754 2.19727 5.50488\nc0.319336 0.339844 22.4102 24.2803 35.7695 54.5195c-23.8398 26.0303 -37.9697 57.7109 -37.9697 91.9805c0 88.3701 93.1201 160 208 160s208 -71.6299 208 -160zM192 160c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v16.1201\nc23.6201 0.629883 42.6699 20.54 42.6699 45.0703c0 19.9697 -12.9902 37.8096 -31.5801 43.3896l-45 13.5c-5.16016 1.54004 -8.76953 6.78027 -8.76953 12.7295c0 7.27051 5.2998 13.1904 11.7998 13.1904h28.1104c4.55957 0 8.94922 -1.29004 12.8193 -3.71973\nc3.24023 -2.03027 7.36035 -1.91016 10.1299 0.729492l11.75 11.21c3.53027 3.37012 3.33008 9.20996 -0.569336 12.1406c-9.10059 6.83984 -20.0801 10.7695 -31.3701 11.3496v16.29c0 4.41992 -3.58008 8 -8 8h-16c-4.41992 0 -8 -3.58008 -8 -8v-16.1201\nc-23.6201 -0.629883 -42.6699 -20.5498 -42.6699 -45.0703c0 -19.9697 12.9893 -37.8096 31.5801 -43.3896l45 -13.5c5.15918 -1.54004 8.76953 -6.78027 8.76953 -12.7295c0 -7.27051 -5.2998 -13.1904 -11.7998 -13.1904h-28.1104\nc-4.55957 0 -8.9502 1.2998 -12.8193 3.71973c-3.24023 2.03027 -7.36035 1.91016 -10.1309 -0.729492l-11.75 -11.21c-3.5293 -3.37012 -3.3291 -9.20996 0.570312 -12.1406c9.10059 -6.83008 20.0801 -10.7695 31.3701 -11.3496v-16.29zM538.01 36.0098\nc13.3604 -30.2598 35.4707 -54.1699 35.7803 -54.5c2.20996 -2.33008 2.82031 -5.72949 1.5498 -8.66992c-1.25 -2.92969 -4.13965 -4.83984 -7.33984 -4.83984c-36.5801 0 -66.9297 12.25 -88.7305 24.9805c-32.1992 -15.7402 -70.2891 -24.9805 -111.27 -24.9805\nc-86.2305 0 -160.2 40.3701 -191.73 97.8799c10.4102 -1.11035 20.9502 -1.87988 31.7305 -1.87988c132.34 0 240 86.1299 240 192c0 6.78027 -0.469727 13.4697 -1.33008 20.0703c75.8398 -23.8701 129.33 -81.1299 129.33 -148.07\nc0 -34.2695 -14.1299 -65.96 -37.9902 -91.9902z\" />\n    <glyph glyph-name=\"cross\" unicode=\"&#xf654;\" horiz-adv-x=\"384\" \nd=\"M352 320c17.6699 0 32 -14.3301 32 -32v-64c0 -17.6699 -14.3301 -32 -32 -32h-96v-224c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v224h-96c-17.6699 0 -32 14.3301 -32 32v64c0 17.6699 14.3301 32 32 32h96v96c0 17.6699 14.3301 32 32 32\nh64c17.6699 0 32 -14.3301 32 -32v-96h96z\" />\n    <glyph glyph-name=\"dharmachakra\" unicode=\"&#xf655;\" \nd=\"M495 222.94c9.20996 0.569336 17 -6.74023 17.0098 -15.9707v-29.9395c0 -9.23047 -7.79004 -16.5498 -17 -15.9707l-17.2197 1.08008c-5.28027 -39.4795 -20.7998 -75.6299 -43.8604 -105.83l12.9502 -11.4297c6.91992 -6.09961 7.25977 -16.7803 0.730469 -23.3096\nl-21.1699 -21.1699c-6.52051 -6.52051 -17.2002 -6.19043 -23.3105 0.729492l-11.4297 12.9502c-30.2002 -23.0703 -66.3506 -38.5898 -105.84 -43.8604l1.08008 -17.2197c0.569336 -9.20996 -6.74023 -17 -15.9707 -17h-29.9395c-9.23047 0 -16.5498 7.79004 -15.9707 17\nl1.09082 17.2197c-39.4902 5.28027 -75.6406 20.7998 -105.841 43.8604l-11.4297 -12.9502c-6.09961 -6.91992 -16.7803 -7.25977 -23.3096 -0.729492l-21.1699 21.1699c-6.52051 6.51953 -6.19043 17.1992 0.729492 23.3096l12.9502 11.4297\nc-23.0703 30.1904 -38.5898 66.3408 -43.8604 105.83l-17.2197 -1.08008c-9.20996 -0.569336 -17 6.74023 -17 15.9707v29.9395c0 9.23047 7.79004 16.5498 17 15.9707l17.2197 -1.08008c5.28027 39.4893 20.7998 75.6396 43.8604 105.84l-12.9502 11.4297\nc-6.91992 6.10059 -7.25977 16.7803 -0.729492 23.3105l21.1699 21.1592c6.51953 6.52051 17.1992 6.19043 23.3096 -0.729492l11.4297 -12.9502c30.1904 23.0703 66.3408 38.5898 105.83 43.8604l-1.08008 17.2197c-0.569336 9.20996 6.74023 17 15.9707 17h29.9395\nc9.23047 0 16.5498 -7.79004 15.9707 -17l-1.07031 -17.21c39.4795 -5.28027 75.6299 -20.7998 105.83 -43.8604l11.4297 12.9404c6.10059 6.91992 16.7803 7.25977 23.3105 0.729492l21.1592 -21.1592c6.52051 -6.52051 6.19043 -17.2002 -0.729492 -23.3105\nl-12.9502 -11.4297c23.0703 -30.2002 38.5898 -66.3506 43.8604 -105.84zM281.84 349.39l-4.00977 -64.1201c10.2998 -2.40918 19.8896 -6.50977 28.6201 -11.9492l42.6201 48.29c-19.6006 14.1201 -42.4199 23.71 -67.2305 27.7793zM230.16 349.39\nc-24.8105 -4.06934 -47.6299 -13.6592 -67.2305 -27.7793l42.6201 -48.29c8.73047 5.42969 18.3301 9.54004 28.6201 11.9492zM126.39 285.06c-14.1201 -19.5996 -23.71 -42.4092 -27.7793 -67.2197l64.1201 -4.00977c2.41992 10.29 6.51953 19.8896 11.96 28.6201z\nM98.6104 166.16c4.06934 -24.8105 13.6592 -47.6299 27.7793 -67.2305l48.29 42.6201c-5.42969 8.73047 -9.54004 18.3301 -11.9492 28.6201zM230.16 34.6104l4 64.1201c-10.29 2.41992 -19.8906 6.51953 -28.6201 11.96l-42.6104 -48.3008\nc19.6006 -14.1201 42.4199 -23.71 67.2305 -27.7793zM256 160c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM281.84 34.6104c24.8105 4.06934 47.6201 13.6592 67.2197 27.7793l-42.6094 48.3008\nc-8.73047 -5.44043 -18.3301 -9.55078 -28.6201 -11.96zM385.61 98.9404c14.1201 19.5898 23.71 42.4092 27.7793 67.2295l-64.1201 4.00977c-2.40918 -10.2998 -6.50977 -19.8896 -11.9492 -28.6201zM349.27 213.83l64.1201 4\nc-4.06934 24.8096 -13.6592 47.6299 -27.7793 67.2295l-48.3008 -42.6094c5.44043 -8.73047 9.55078 -18.3301 11.96 -28.6201z\" />\n    <glyph glyph-name=\"envelope-open-text\" unicode=\"&#xf658;\" \nd=\"M176 232c-8.83984 0 -16 7.16016 -16 16v16c0 8.83984 7.16016 16 16 16h160c8.83984 0 16 -7.16016 16 -16v-16c0 -8.83984 -7.16016 -16 -16 -16h-160zM160 152v16c0 8.83984 7.16016 16 16 16h160c8.83984 0 16 -7.16016 16 -16v-16c0 -8.83984 -7.16016 -16 -16 -16\nh-160c-8.83984 0 -16 7.16016 -16 16zM256 30.8701c16.4199 0 32.8398 5.07031 46.8604 15.1895l209.14 151.08v-213.14c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v213.14l209.14 -151.08c14.0205 -10.1299 30.4404 -15.1895 46.8604 -15.1895z\nM493.61 285.05c11.6094 -9.09961 18.3896 -23.0303 18.3896 -37.7695v-10.6504l-96 -69.3496v184.72h-320v-184.72l-96 69.3496v10.6504c0.00195312 12.8945 8.24023 29.8154 18.3896 37.7695c8.85059 6.94043 17.2402 13.4805 29.6104 22.8105v44.1396\nc0 26.5098 21.4902 48 48 48h77.5498c3.04004 2.2002 5.87012 4.25977 9.04004 6.55957c16.8203 12.2705 50.21 41.79 73.4102 41.4404c23.2002 0.349609 56.5996 -29.1699 73.4102 -41.4404c3.16992 -2.2998 6 -4.35938 9.04004 -6.55957h77.5498\nc26.5098 0 48 -21.4902 48 -48v-44.1396c12.3701 -9.34082 20.7598 -15.8701 29.6104 -22.8105z\" />\n    <glyph glyph-name=\"folder-minus\" unicode=\"&#xf65d;\" \nd=\"M464 320c26.5098 0 48 -21.4902 48 -48v-224c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h160l64 -64h192zM368 152v16c0 8.83984 -7.16016 16 -16 16h-192c-8.83984 0 -16 -7.16016 -16 -16v-16\nc0 -8.83984 7.16016 -16 16 -16h192c8.83984 0 16 7.16016 16 16z\" />\n    <glyph glyph-name=\"folder-plus\" unicode=\"&#xf65e;\" \nd=\"M464 320c26.5098 0 48 -21.4902 48 -48v-224c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h160l64 -64h192zM368 152v16c0 8.83984 -7.16016 16 -16 16h-72v72c0 8.83984 -7.16016 16 -16 16h-16\nc-8.83984 0 -16 -7.16016 -16 -16v-72h-72c-8.83984 0 -16 -7.16016 -16 -16v-16c0 -8.83984 7.16016 -16 16 -16h72v-72c0 -8.83984 7.16016 -16 16 -16h16c8.83984 0 16 7.16016 16 16v72h72c8.83984 0 16 7.16016 16 16z\" />\n    <glyph glyph-name=\"funnel-dollar\" unicode=\"&#xf662;\" horiz-adv-x=\"640\" \nd=\"M433.46 282.06c-83.4102 -20.8896 -145.46 -96.2695 -145.46 -186.06c0 -54.3496 22.7998 -103.38 59.21 -138.35c-10.75 -20.54 -38.3604 -29.21 -59.2197 -13.5703l-79.9902 60c-10.0703 7.55957 -16 19.4102 -16 32v155.92l-182.66 201.93\nc-19.9502 19.9502 -5.82031 54.0703 22.4004 54.0703h480.52c28.2207 0 42.3506 -34.1201 22.4004 -54.0703zM480 256c88.3701 0 160 -71.6299 160 -160s-71.6299 -160 -160 -160s-160 71.6299 -160 160s71.6299 160 160 160zM496 16.1201\nc23.6299 0.629883 42.6699 20.54 42.6699 45.0703c0 19.9697 -12.9902 37.8096 -31.5801 43.3896l-45 13.5c-5.16016 1.54004 -8.76953 6.78027 -8.76953 12.7295c0 7.27051 5.2998 13.1904 11.7998 13.1904h28.1104c4.55957 0 8.94922 -1.29004 12.8193 -3.71973\nc3.24023 -2.03027 7.36035 -1.91016 10.1299 0.729492l11.75 11.21c3.53027 3.37012 3.33008 9.20996 -0.569336 12.1406c-9.10059 6.83984 -20.0801 10.7695 -31.3701 11.3496v16.29c0 4.41992 -3.58008 8 -8 8h-16c-4.41992 0 -8 -3.58008 -8 -8v-16.1201\nc-23.6201 -0.629883 -42.6699 -20.5498 -42.6699 -45.0703c0 -19.9697 12.9893 -37.8096 31.5801 -43.3896l45 -13.5c5.15918 -1.54004 8.76953 -6.78027 8.76953 -12.7295c0 -7.27051 -5.2998 -13.1904 -11.7998 -13.1904h-28.1104\nc-4.55957 0 -8.9502 1.2998 -12.8193 3.71973c-3.24023 2.03027 -7.36035 1.91016 -10.1309 -0.729492l-11.75 -11.21c-3.5293 -3.37012 -3.3291 -9.20996 0.570312 -12.1406c9.10059 -6.83008 20.0801 -10.7695 31.3701 -11.3496v-16.29c0 -4.41992 3.58008 -8 8 -8h16\nc4.41992 0 8 3.58008 8 8v16.1201z\" />\n    <glyph glyph-name=\"gopuram\" unicode=\"&#xf664;\" \nd=\"M496 96c8.7998 0 16 -7.2002 16 -16v-128c0 -8.7998 -7.2002 -16 -16 -16h-80v160h-32v128h-32v96h-32v-96h32v-128h32v-160h-80v80c0 8.7998 -7.2002 16 -16 16h-64c-8.7998 0 -16 -7.2002 -16 -16v-80h-80v160h32v128h32v96h-32v-96h-32v-128h-32v-160h-80\nc-8.7998 0 -16 7.2002 -16 16v128c0 8.7998 7.2002 16 16 16h16v112c0 8.7998 7.2002 16 16 16h16v80c0 8.7998 7.2002 16 16 16h16v112c0 8.7998 7.2002 16 16 16s16 -7.2002 16 -16v-16h64v16c0 8.7998 7.2002 16 16 16s16 -7.2002 16 -16v-16h64v16\nc0 8.7998 7.2002 16 16 16s16 -7.2002 16 -16v-16h64v16c0 8.7998 7.2002 16 16 16s16 -7.2002 16 -16v-112h16c8.7998 0 16 -7.2002 16 -16v-80h16c8.7998 0 16 -7.2002 16 -16v-112h16zM232 272v-48h48v48c0 8.7998 -7.2002 16 -16 16h-16c-8.7998 0 -16 -7.2002 -16 -16z\nM288 96v64c0 8.7998 -7.2002 16 -16 16h-32c-8.7998 0 -16 -7.2002 -16 -16v-64h64z\" />\n    <glyph glyph-name=\"hamsa\" unicode=\"&#xf665;\" \nd=\"M509.34 140.75c1.46875 -3.37012 2.66016 -9.08984 2.66016 -12.7656c0 -6.95703 -3.85254 -16.7295 -8.59961 -21.8145l-102.681 -110.03c-35.6895 -38.2197 -88.4102 -60.1396 -144.72 -60.1396s-109.03 21.9199 -144.71 60.1396l-102.69 110.03\nc-4.74707 5.08496 -8.59961 14.8574 -8.59961 21.8145c0 3.67578 1.19141 9.39551 2.66016 12.7656c5.05957 11.6904 16.5898 19.25 29.3398 19.25h64v208c0 22 18 40 40 40s40 -18 40 -40v-134c0 -5.51953 4.48047 -10 10 -10h20c5.51953 0 10 4.48047 10 10v174\nc0 22 18 40 40 40s40 -18 40 -40v-174c0 -5.51953 4.48047 -10 10 -10h20c5.51953 0 10 4.48047 10 10v134c0 22 18 40 40 40s40 -18 40 -40v-208h64c12.75 0 24.2803 -7.55957 29.3398 -19.25zM256 32c53.0195 0 96 64 96 64s-42.9805 64 -96 64s-96 -64 -96 -64\ns42.9805 -64 96 -64zM256 128c17.6699 0 32 -14.3301 32 -32s-14.3301 -32 -32 -32s-32 14.3301 -32 32s14.3301 32 32 32z\" />\n    <glyph glyph-name=\"haykal\" unicode=\"&#xf666;\" \nd=\"M496.25 245.48c17.54 -2.46094 21.6797 -26.2705 6.04004 -34.6602l-98.1602 -52.6602l74.4805 -83.54c11.8594 -13.29 0.00976562 -34.25 -17.3506 -30.4902l-108.569 23.6504l4.10938 -112.55c0.430664 -11.6504 -8.87012 -19.2207 -18.4102 -19.2207\nc-5.15918 0 -10.3896 2.20996 -14.1992 7.18066l-68.1807 88.8994l-68.1797 -88.8994c-3.81055 -4.9707 -9.0498 -7.18066 -14.2002 -7.18066c-9.54004 0 -18.8398 7.57031 -18.4102 19.2207l4.11035 112.55l-108.57 -23.6504\nc-1.39941 -0.30957 -2.75977 -0.450195 -4.06934 -0.450195c-15.0107 0 -24.21 18.6807 -13.29 30.9307l74.4795 83.54l-98.1602 52.6592c-15.6494 8.40039 -11.5098 32.21 6.03027 34.6709l110 15.4297l-41.8203 104.34c-6.66016 16.6396 11.6006 32.1797 26.5898 22.6299\nl94.04 -59.8896l34.0908 107.189c2.70996 8.55078 10.0293 12.8203 17.3496 12.8203s14.6396 -4.26953 17.3496 -12.8203l34.0908 -107.18l94.04 59.8896c14.9893 9.55078 33.2598 -5.98926 26.5898 -22.6299l-41.8203 -104.34zM338.51 136.32l-35.6094 39.9297\nl46.9199 25.1699l-52.5703 7.37988l19.9902 49.8701l-44.9502 -28.6201l-16.29 51.2305l-16.3096 -51.2305l-44.9502 28.6201l19.9902 -49.8701l-52.5703 -7.37988l46.9199 -25.1699l-35.5996 -39.9297l51.8896 11.2998l-1.95996 -53.79l32.5898 42.4902l32.5898 -42.4902\nl-1.96973 53.79z\" />\n    <glyph glyph-name=\"jedi\" unicode=\"&#xf669;\" horiz-adv-x=\"544\" \nd=\"M479.99 96h39.96c-42.6299 -94.1699 -137.641 -160 -247.98 -160c-4.25977 0 -8.5498 0.0898438 -12.8496 0.290039c-103.97 4.76953 -193.851 69.4795 -235.101 159.71h39.9102l-58.5996 58.5996c-2.57031 12.8809 -4.49023 25.9805 -5.11035 39.4102\nc-0.469727 10.0801 -0.129883 20.0703 0.5 29.9902h47.21l-41.3799 41.3799c14.3701 64.7002 52.1006 122.55 107.97 162.07c2.77051 1.95996 5.9707 3 9.27051 3c5.37988 0 10.4297 -2.70996 13.5098 -7.25c3.0498 -4.5 3.64062 -10 1.62012 -15.0898\nc-6.53027 -16.4502 -9.83984 -33.7002 -9.83984 -51.2607c0 -45.1191 21.04 -86.5801 57.71 -113.739c4.00977 -2.9707 6.4502 -7.48047 6.69043 -12.3799c0.239258 -4.90039 -1.76074 -9.65039 -5.48047 -13.0107c-26.5498 -23.9795 -41.1699 -56.5 -41.1699 -91.5801\nc0 -60.0293 42.9502 -110.279 99.8896 -121.92l2.5 65.2607l-27.1602 -18.4805c-2.96973 -2 -7.40918 -1.7002 -10 0.75c-2.72949 2.61035 -3.30957 6.70996 -1.38965 9.94043l20.1299 33.7695l-42.0693 8.71973c-3.71094 0.75 -6.38086 4.05078 -6.38086 7.83008\nc0 3.78027 2.68066 7.08008 6.38086 7.83008l42.0693 8.73047l-20.1094 33.7295c-1.94043 3.27051 -1.36035 7.35059 1.35938 9.94043c2.73047 2.60938 6.86035 2.89941 10 0.779297l30.3906 -20.6592l11.5195 287.97c0.160156 4.29004 3.66992 7.66992 8 7.66992h0.0400391\nc4.25293 0 7.81934 -3.44922 7.95996 -7.7002l11.5303 -287.93l30.3896 20.6699c3.03027 2.08984 7.2998 1.75 10 -0.799805c2.71973 -2.60059 3.2998 -6.68066 1.37988 -9.91016l-20.1299 -33.7705l42.0703 -8.72949c3.68945 -0.770508 6.37988 -4.06055 6.37988 -7.83008\nc0 -3.78027 -2.67969 -7.08008 -6.37988 -7.83008l-42.0703 -8.71973l20.1104 -33.7305c0.631836 -1.05078 1.14453 -2.89844 1.14453 -4.12402c0 -1.89355 -1.11328 -4.49023 -2.48438 -5.7959c-2.63086 -2.49023 -7.04004 -2.85938 -10.0205 -0.799805l-27.1699 18.4697\nl2.5 -65.3398c48.4697 9.40039 87.5703 48.1504 97.3096 96.5c8.78027 43.5605 -5.63965 87.3203 -38.5693 117.07c-3.73047 3.37012 -5.73047 8.10938 -5.49023 13.0303c0.240234 4.89941 2.67969 9.41992 6.7002 12.3994c36.6602 27.1602 57.6895 68.6104 57.6895 113.73\nc0 17.5801 -3.30957 34.8496 -9.85938 51.3096c-2.03027 5.09961 -1.44043 10.5996 1.60938 15.0898c3.08008 4.53027 8.12012 7.24023 13.4902 7.24023c3.28027 0 6.48047 -1.03027 9.25 -2.99023c55.4805 -39.2197 93.4102 -97.4795 107.91 -162.27l-41.25 -41.2402\nh46.9502c0.370117 -5.75977 1.0498 -11.46 1.0498 -17.2695c0 -17.7402 -1.83984 -35.0605 -5.12988 -51.8604z\" />\n    <glyph glyph-name=\"journal-whills\" unicode=\"&#xf66a;\" horiz-adv-x=\"448\" \nd=\"M448 89.5996c0 -9.59961 -3.2002 -16 -9.59961 -19.1992c-3.2002 -12.8008 -3.2002 -57.6006 0 -73.6006c6.39941 -6.39941 9.59961 -12.7998 9.59961 -19.2002v-16c0 -16 -12.7998 -25.5996 -25.5996 -25.5996h-326.4c-54.4004 0 -96 41.5996 -96 96v320\nc0 54.4004 41.5996 96 96 96h326.4c16 0 25.5996 -9.59961 25.5996 -25.5996v-332.801zM133.08 303.61c-2.98047 -10.0908 -5.08008 -20.5605 -5.07031 -31.6201c0 -0.520508 0.140625 -0.990234 0.150391 -1.50977l37.1094 -32.4707\nc3.33008 -2.89941 3.6709 -7.9502 0.75 -11.2793c-1.5791 -1.81055 -3.7998 -2.73047 -6.01953 -2.73047h-0.0175781c-1.65527 0 -4.00879 0.886719 -5.25195 1.98047l-23.5908 20.6396c11.54 -49.5801 55.7705 -86.6201 108.86 -86.6201s97.3203 37.04 108.87 86.6299\nl-23.5898 -20.6396c-1.52051 -1.32031 -3.39062 -1.98047 -5.27051 -1.98047h-0.0146484c-2 0 -4.69043 1.22363 -6.00488 2.73047c-1.09668 1.24707 -1.98633 3.60645 -1.98633 5.2666c0 2.00293 1.22559 4.69727 2.73633 6.0127l37.1094 32.4707\nc0.0107422 0.519531 0.150391 0.990234 0.150391 1.50977c0 11.0498 -2.09961 21.5195 -5.07031 31.5996l-21.2598 -21.2598c-1.57031 -1.55957 -3.61035 -2.33984 -5.66016 -2.33984s-4.09961 0.780273 -5.66016 2.33984c-3.11914 3.12012 -3.11914 8.19043 0 11.3105\nl26.4199 26.4199c-10 20.8994 -26.2393 37.9795 -46.3691 49.2598c5.97949 -9.73047 9.59961 -21.0703 9.59961 -33.3301c0 -19.96 -9.33008 -37.5703 -23.6602 -49.3096c9.65039 -10.0605 15.6602 -23.6504 15.6602 -38.6904c0 -26.9404 -19.04 -49.4004 -44.3701 -54.7402\nl-1.42969 34.2803l12.6797 -8.62012c0.69043 -0.459961 1.46973 -0.689453 2.25 -0.689453c0.980469 0 1.98047 0.369141 2.75 1.08984c1.36035 1.2793 1.63965 3.33984 0.69043 4.94922l-8.54004 14.3105l17.9102 3.71973\nc1.85938 0.390625 3.18945 2.03027 3.18945 3.91992c0 1.89062 -1.33008 3.53027 -3.18945 3.91992l-17.9102 3.7207l8.54004 14.3096c0.308594 0.521484 0.55957 1.43652 0.55957 2.04297c0 0.950195 -0.55957 2.25293 -1.25 2.90723\nc-0.645508 0.59668 -1.88281 1.08105 -2.76172 1.08105c-0.672852 0 -1.67578 -0.300781 -2.23828 -0.670898l-14.2002 -9.65039l-4.67969 112.29c-0.0898438 2.13965 -1.86035 3.83008 -4 3.83008s-3.91016 -1.69043 -4 -3.83008l-4.62012 -110.81l-12.0098 8.15918\nc-1.56055 1.03027 -3.63965 0.890625 -5 -0.40918c-1.36035 -1.28027 -1.63965 -3.34082 -0.69043 -4.9502l8.54004 -14.3105l-17.9102 -3.71973c-1.85938 -0.389648 -3.18945 -2.03027 -3.18945 -3.91992s1.33008 -3.53027 3.18945 -3.91992l17.9102 -3.71973\nl-8.54004 -14.3105c-0.308594 -0.521484 -0.55957 -1.43652 -0.55957 -2.04297c0 -0.950195 0.55957 -2.25293 1.25 -2.90723c0.769531 -0.709961 1.75 -1.08984 2.75 -1.08984c0.780273 0 1.55957 0.240234 2.25 0.69043l10.3701 7.04004l-1.36035 -32.71\nc-25.3398 5.35938 -44.3799 27.8193 -44.3799 54.7598c0 15.04 6.00977 28.6299 15.6602 38.6904c-14.3301 11.7393 -23.6602 29.3496 -23.6602 49.3096c0 12.2598 3.62012 23.5996 9.61035 33.3398c-20.1299 -11.29 -36.3701 -28.3594 -46.3701 -49.2598l26.4199 -26.4199\nc3.12012 -3.12012 3.12012 -8.19043 0 -11.3105c-1.57031 -1.55957 -3.61035 -2.33984 -5.66016 -2.33984s-4.09961 0.780273 -5.66016 2.33984zM380.8 0v64h-284.8c-16 0 -32 -12.7998 -32 -32s12.7998 -32 32 -32h284.8z\" />\n    <glyph glyph-name=\"kaaba\" unicode=\"&#xf66b;\" horiz-adv-x=\"576\" \nd=\"M554.12 364.49c13.0703 -4.36035 21.8799 -16.5898 21.8799 -30.3604v-49.0098l-265 79.5098c-15.0596 4.5 -30.9502 4.5 -45.9805 0l-265.02 -79.5098v49.0098c0.000976562 12.7314 9.80273 26.332 21.8799 30.3604l235.771 78.5801\nc8.15723 2.71973 21.7559 4.92676 30.3545 4.92676s22.1982 -2.20703 30.3555 -4.92676zM274.22 333.97c9 2.7207 18.5498 2.7207 27.5898 0l274.2 -82.2598v-228.39c0 -15 -10.4199 -27.9902 -25.0596 -31.2402l-242.12 -53.7998\nc-5.67871 -1.2627 -15.0078 -2.28809 -20.8252 -2.28809s-15.1465 1.02539 -20.8252 2.28809l-242.12 53.7998c-14.6396 3.25977 -25.0596 16.2402 -25.0596 31.2402v228.38zM128 217.89v16.5801c0 5.28027 -5.01953 9.11035 -10.1104 7.7207l-80 -21.8203\nc-3.47949 -0.950195 -5.88965 -4.11035 -5.88965 -7.71973v-16.5801c0 -5.27051 5.01953 -9.10059 10.1104 -7.7207l80 21.8203c3.47949 0.950195 5.88965 4.11035 5.88965 7.71973zM272 257.17v16.5801c0 5.28027 -5.01953 9.11035 -10.1104 7.71973l-96 -26.1797\nc-3.47949 -0.950195 -5.88965 -4.11035 -5.88965 -7.71973v-16.5801c0 -5.28027 5.01953 -9.11035 10.1104 -7.7207l96 26.1807c3.47949 0.950195 5.88965 4.10938 5.88965 7.71973zM448 234.47v-16.5801v-0.00488281c0 -3.37109 2.63867 -6.82715 5.88965 -7.71484\nl80 -21.8203c5.09082 -1.38965 10.1104 2.44043 10.1104 7.7207v16.5801c0 3.60938 -2.41016 6.76953 -5.88965 7.71973l-80 21.8203c-5.09082 1.38965 -10.1104 -2.44043 -10.1104 -7.7207zM304 273.74v-16.5801v-0.00585938c0 -3.37012 2.63867 -6.82617 5.88965 -7.71387\nl96 -26.1807c5.09082 -1.38965 10.1104 2.44043 10.1104 7.7207v16.5791c0 3.61035 -2.41016 6.77051 -5.88965 7.7207l-96 26.1797c-5.09082 1.38965 -10.1104 -2.44043 -10.1104 -7.71973z\" />\n    <glyph glyph-name=\"khanda\" unicode=\"&#xf66d;\" \nd=\"M415.81 382c73.71 -40.2402 111.78 -123.85 90.1602 -207.51c-7.25 -28.0898 -22.3799 -53.5703 -41.25 -75.5898l-52.5098 -61.3105c-4.87012 -5.67969 -13.04 -7.22949 -19.6504 -3.70996l-79.3496 42.2305l-29.21 -20.3408l47.0801 -32.7793\nc1.66992 0.370117 3.22949 1.00977 5.00977 1.00977c13.25 0 23.9902 -10.7402 23.9902 -24c0 -13.25 -10.7402 -24 -23.9902 -24c-12.0898 0 -21.6797 9.11035 -23.3301 20.7598l-40.9102 28.4805v-30.1504c9.38086 -5.58008 15.9902 -15.3896 15.9902 -27.0996\nc0 -17.6699 -14.3203 -32 -31.9795 -32c-17.6602 0 -31.9805 14.3301 -31.9805 32c0 11.7197 6.60059 21.5293 15.9902 27.0996v29.9502l-40.6299 -28.2803c-1.64062 -11.6494 -11.2305 -20.7598 -23.3301 -20.7598c-13.25 0 -23.9902 10.75 -23.9902 24\nc0 13.2598 10.7402 24 23.9902 24c1.78027 0 3.33984 -0.639648 5.00977 -1.00977l47.0801 32.7793l-29.21 20.3301l-79.3496 -42.2295c-6.61035 -3.52051 -14.7803 -1.96973 -19.6504 3.71973l-55.9697 65.3604c-12.5703 14.6797 -23.3906 31.0693 -30.46 49.0596\nc-35.6602 90.6904 2.95996 186.391 81.4893 229.24c6.34082 3.5 15.0205 2.63965 20.0205 -2.7002c4.99023 -5.30957 6.45996 -12.9199 2.58984 -19.0801c-16.4902 -26.1602 -25.2002 -56.3896 -25.2002 -87.4697c0.180664 -53.1904 26.7598 -102.62 71.0303 -132.18\nl76.5898 -53.3301v19.8994l-44.0498 36.0908c-3.91016 4.20996 -5 10.0996 -2.81055 15.2793l7.85059 17.2402c-33.8506 19.2598 -56.9404 55.2402 -56.9404 96.9902c0 40.79 22.0205 76.1396 54.5898 95.7197l-5.21973 11.4404\nc-2.33008 5.5293 -0.929688 11.8301 3.57031 16.04l58.9902 52.8096l58.9893 -52.8203c4.5 -4.20996 5.91016 -10.5098 3.57031 -16.04l-5.21973 -11.4395c32.5693 -19.5801 54.5898 -54.9199 54.5898 -95.71c0 -41.7402 -23.0996 -77.7305 -56.9404 -96.9902\nl7.85059 -17.2402c2.18945 -5.18945 1.10938 -11.0801 -2.81055 -15.2793l-44.0498 -36.0908v-20.0996l76.6299 53.3496c44.5 29.7207 71.0801 79.1602 71.2705 132.41c0 31.0205 -8.70996 61.25 -25.2002 87.4102c-1.36328 2.15723 -2.46973 5.97949 -2.46973 8.53223\nc0 3.51465 1.96191 8.43652 4.37988 10.9883c4.99023 5.34961 12.9902 6.51953 19.3594 3.01953zM319.82 272c0 21.3203 -10.5801 40.1201 -26.6504 51.7695l-7.83008 -17.1797c-8.75 -24.5195 -8.75 -51.04 0 -75.5596l5.65039 -12.4102\nc17.3398 11.46 28.8301 31.0801 28.8301 53.3799zM191.89 272c0 -22.2998 11.5 -41.9297 28.8408 -53.3896l5.64941 12.4092c8.75 24.5303 8.75 51.04 0 75.5605l-7.83008 17.1797c-16.0801 -11.6396 -26.6602 -30.4395 -26.6602 -51.7598z\" />\n    <glyph glyph-name=\"landmark\" unicode=\"&#xf66f;\" \nd=\"M501.62 355.89c6.24023 -2.33984 10.3799 -8.30957 10.3799 -14.9795v-36.9102c0 -8.83984 -7.16016 -16 -16 -16h-480c-8.83984 0 -16 7.16016 -16 16v36.9102c0 6.11914 4.65039 12.8301 10.3799 14.9795l234.39 90.0703\nc2.99902 1.12598 8.03223 2.04004 11.2354 2.04004s8.23633 -0.914062 11.2354 -2.04004zM64 256h64v-160h96v160h64v-160h96v160h64v-160h16c8.83984 0 16 -7.16016 16 -16v-48h-448v48c0 8.83984 7.16016 16 16 16h16v160zM496 0c8.83984 0 16 -7.16016 16 -16v-32\nc0 -8.83984 -7.16016 -16 -16 -16h-480c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h480z\" />\n    <glyph glyph-name=\"mail-bulk\" unicode=\"&#xf674;\" horiz-adv-x=\"576\" \nd=\"M160 0c25.5996 0 51.2002 22.4004 64 32c64 44.7998 83.2002 60.7998 96 70.4004v-134.4c0 -17.6699 -14.3301 -32 -32 -32h-256c-17.6699 0 -32 14.3301 -32 32v134.4c12.7998 -9.60059 32 -25.6006 96 -70.4004c12.7998 -9.59961 38.4004 -32 64 -32zM288 192\nc17.6699 0 32 -14.3301 32 -32v-19.2002c-25.5996 -19.2002 -22.4004 -19.2002 -115.2 -86.3994c-9.59961 -3.2002 -28.7998 -22.4004 -44.7998 -22.4004s-35.2002 19.2002 -44.7998 25.5996c-92.7998 67.2002 -89.6006 67.2002 -115.2 86.4004v16\nc0 17.6699 14.3301 32 32 32h256zM544 288c17.6699 0 32 -14.3301 32 -32v-192c0 -17.6699 -14.3301 -32 -32 -32h-192v134.4l-0.290039 -0.220703c-3.12012 32.4004 -30.5 57.8203 -63.71 57.8203h-96v32c0 17.6699 14.3301 32 32 32h320zM512 160v64h-64v-64h64zM160 256\nv-32h-96v192c0 17.6699 14.3301 32 32 32h320c17.6699 0 32 -14.3301 32 -32v-96h-224c-35.29 0 -64 -28.71 -64 -64z\" />\n    <glyph glyph-name=\"menorah\" unicode=\"&#xf676;\" horiz-adv-x=\"640\" \nd=\"M144 320c8.83984 0 16 -7.16016 16 -16v-144h-64v144c0 8.83984 7.16016 16 16 16h32zM240 320c8.83984 0 16 -7.16016 16 -16v-144h-64v144c0 8.83984 7.16016 16 16 16h32zM432 320c8.83984 0 16 -7.16016 16 -16v-144h-64v144c0 8.83984 7.16016 16 16 16h32zM528 320\nc8.83984 0 16 -7.16016 16 -16v-144h-64v144c0 8.83984 7.16016 16 16 16h32zM608 352c-17.6699 0 -32 14.3301 -32 32s32 64 32 64s32 -46.3301 32 -64s-14.3301 -32 -32 -32zM512 352c-17.6699 0 -32 14.3301 -32 32s32 64 32 64s32 -46.3301 32 -64s-14.3301 -32 -32 -32\nzM416 352c-17.6699 0 -32 14.3301 -32 32s32 64 32 64s32 -46.3301 32 -64s-14.3301 -32 -32 -32zM320 352c-17.6699 0 -32 14.3301 -32 32s32 64 32 64s32 -46.3301 32 -64s-14.3301 -32 -32 -32zM224 352c-17.6699 0 -32 14.3301 -32 32s32 64 32 64s32 -46.3301 32 -64\ns-14.3301 -32 -32 -32zM128 352c-17.6699 0 -32 14.3301 -32 32s32 64 32 64s32 -46.3301 32 -64s-14.3301 -32 -32 -32zM32 352c-17.6699 0 -32 14.3301 -32 32s32 64 32 64s32 -46.3301 32 -64s-14.3301 -32 -32 -32zM576 160v144c0 8.83984 7.16016 16 16 16h32\nc8.83984 0 16 -7.16016 16 -16v-144c0 -53.0195 -42.9805 -96 -96 -96h-192v-64h176c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-416c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h176v64h-192c-53.0195 0 -96 42.9805 -96 96\nv144c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-144c0 -17.6699 14.3301 -32 32 -32h192v176c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-176h192c17.6699 0 32 14.3301 32 32z\" />\n    <glyph glyph-name=\"mosque\" unicode=\"&#xf678;\" horiz-adv-x=\"640\" \nd=\"M0 -32v320h128v-320c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32zM579.16 160h-358.32c-17.8594 17.3896 -28.8398 37.3398 -28.8398 58.9102c0 52.8594 41.79 93.79 87.9199 122.899c41.9502 26.46 80.6299 57.7705 111.96 96.2207\nl8.12012 9.96973l8.12012 -9.96973c31.3301 -38.4502 70.0195 -69.75 111.96 -96.2207c46.1299 -29.1094 87.9199 -70.04 87.9199 -122.899c0 -21.5703 -10.9805 -41.5205 -28.8398 -58.9102zM608 128c17.6699 0 32 -14.3301 32 -32v-128c0 -17.6699 -14.3301 -32 -32 -32\nh-32v64c0 17.6699 -14.3301 32 -32 32s-32 -14.3301 -32 -32v-64h-64v72c0 48 -48 72 -48 72s-48 -24 -48 -72v-72h-64v64c0 17.6699 -14.3301 32 -32 32s-32 -14.3301 -32 -32v-64h-32c-17.6699 0 -32 14.3301 -32 32v128c0 17.6699 14.3301 32 32 32h416zM64 448\nc0 0 64 -32 64 -96v-32h-128v32c0 64 64 96 64 96z\" />\n    <glyph glyph-name=\"om\" unicode=\"&#xf679;\" \nd=\"M360.6 387.06l-21.5801 21.5605c-1.68848 1.68652 -3.05957 4.99316 -3.05957 7.37988s1.37109 5.69336 3.05957 7.37988l21.5703 21.5605c4.08008 4.06934 10.6797 4.06934 14.7598 0l21.5801 -21.5605c1.68945 -1.68652 3.06055 -4.99316 3.06055 -7.37988\ns-1.37109 -5.69336 -3.06055 -7.37988l-21.5693 -21.5605c-1.6875 -1.68848 -4.99316 -3.05957 -7.37988 -3.05957c-2.3877 0 -5.69336 1.37109 -7.38086 3.05957zM412.11 256c55.0898 0 99.8896 -44.7998 99.8896 -99.8799v-100.12c0 -48.5303 -47.4805 -88 -96.0195 -88\nc-96.0205 0 -96.0205 64 -96.0205 64v37.8701c0 7.55957 9.42969 10.8896 14.2002 5.01953c15.1494 -18.6494 42.4199 -42.8896 81.8203 -42.8896c13.2393 0 32.0098 10.7695 32.0098 24v100.12c0 19.79 -16.1006 35.8799 -35.8799 35.8799\nc-9.60059 0 -18.6006 -3.73047 -25.3799 -10.5l-24.25 -24.25c-18.8701 -18.8604 -43.9502 -29.25 -70.6406 -29.25h-21.6895c11.0293 -18.9004 17.8096 -40.5801 17.8096 -64c0 -70.5801 -57.4297 -128 -128.02 -128c-118.811 0 -160.03 96 -159.94 150.81\nc0.0195312 8.80078 10.2598 12.7705 14.79 5.2207c22.7998 -38.0107 49.1299 -92.0303 145.15 -92.0303c35.2998 0 64.0098 28.7002 64.0098 64s-28.71 64 -64.0098 64h-33.0303c-5.57031 0.450195 -10.6406 3.49023 -13.1699 8.5498l-16.0898 32.1699\nc-5.35059 10.7002 2.42969 23.2803 14.3896 23.2803h31.9004c26.4697 0 48.0098 21.5303 48.0098 48s-21.54 48 -48.0098 48c-11.25 0 -21.8203 -3.80957 -30.2705 -10.71c-5.54004 -4.53027 -13.4795 -4.50977 -19.2002 -0.209961l-26.1494 19.6299\nc-8.08984 6.08008 -8.48047 17.9697 -1.12012 24.9297c25.1094 23.7402 59.8594 34.71 96.0098 28.7803c43.1602 -7.08008 79.4199 -40.6396 89.5205 -83.1895c6.43945 -27.1201 2.80957 -53.1309 -7.73047 -75.2305h46.8398c9.60059 0 18.6006 3.73047 25.3799 10.5\nl24.25 24.25c18.8701 18.8604 43.9502 29.25 70.6406 29.25zM454.29 380.73c10.5596 7.95996 25.7002 0.489258 25.7002 -12.7305v-35.5195c0 -2.36035 -0.509766 -4.71094 -1.53027 -6.83008c-2.96973 -6.30078 -21.8301 -37.6602 -101.75 -37.6602\nc-78.4297 0 -117.19 69.3896 -118.8 72.3398c-3.61035 6.62988 -2.08008 14.8799 3.66016 19.7998c5.69922 4.92969 14.1201 5.16992 20.1396 0.549805c3.53027 -2.69922 87.0303 -65.0693 172.58 0.0507812z\" />\n    <glyph glyph-name=\"pastafarianism\" unicode=\"&#xf67b;\" horiz-adv-x=\"640\" \nd=\"M624.54 100.33c12.4004 -4.71973 18.5996 -18.5801 13.8896 -30.9805c-4.69922 -12.4092 -18.5801 -18.6299 -30.9697 -13.8799c-8.11035 3.08984 -14.3398 0.19043 -31.3896 -11.3594c-13.5508 -9.15039 -30.8301 -20.8408 -52.4199 -20.8408\nc-7.16992 0 -14.8301 1.28027 -22.9707 4.39062c-32.6602 12.4395 -39.9893 41.3301 -45.3301 62.4395c-2.20996 8.7207 -3.98926 14.4902 -5.94922 18.8701c-16.6201 -13.5996 -36.9307 -25.8701 -61.6201 -34.1602c10.0098 -37 32.2793 -90.8096 60.2197 -90.8096\nc13.25 0 24 -10.75 24 -24s-10.75 -24 -24 -24c-66.7402 0 -97.0498 88.6299 -107.42 129.14c-6.69043 -0.599609 -13.4199 -1.13965 -20.5801 -1.13965s-13.8896 0.540039 -20.5801 1.13965c-10.3701 -40.5098 -40.6797 -129.14 -107.42 -129.14c-13.25 0 -24 10.75 -24 24\ns10.75 24 24 24c28.0801 0 50.2998 53.7998 60.2598 90.7998c-24.6895 8.29004 -45.0195 20.5605 -61.6396 34.1699c-1.95996 -4.37988 -3.74023 -10.1494 -5.9502 -18.8701c-5.34961 -21.1094 -12.6699 -50 -45.3301 -62.4395\nc-8.13965 -3.11035 -15.7998 -4.39062 -22.9697 -4.39062c-21.5898 -0.0195312 -38.8701 11.6807 -52.4199 20.8408c-17.0498 11.5498 -23.2305 14.4492 -31.3906 11.3594c-12.3594 -4.72949 -26.25 1.4707 -30.9697 13.8799\nc-4.71973 12.3906 1.48047 26.25 13.8701 30.9707c32.6504 12.4697 57.3398 -4.25 75.3701 -16.4502c17.0801 -11.5303 23.2998 -14.4199 31.4102 -11.3604c8.12012 3.10059 10.8301 9.37988 15.8896 29.3799c3.33008 13.1504 7.44043 29.3203 17.9502 42.6504\nc-2.24023 2.91016 -4.42969 5.78027 -6.37988 8.57031c-10.1699 -9.56055 -23.4102 -17.1104 -41.7002 -17.1104c-33.9502 0 -50.8701 25.7803 -62.0596 42.8301c-10.6006 16.1396 -15 21.1699 -21.9404 21.1699c-13.25 0 -24 10.75 -24 24s10.75 24 24 24\nc33.96 0 50.8799 -25.7803 62.0596 -42.8301c10.6006 -16.1396 15 -21.1699 21.9404 -21.1699c17.1504 0 37.6797 61.5596 97.2695 101.9l-17.25 34.5c-33.46 2.09961 -60.0195 29.6191 -60.0195 63.5996c0 35.3496 28.6504 64 64 64s64 -28.6504 64 -64\nc0 -13.0195 -3.94043 -25.0996 -10.5996 -35.21l18.1494 -36.2998c16.9697 4.59961 35.6006 7.50977 56.46 7.50977c20.8604 0 39.4805 -2.91016 56.46 -7.50977l18.1504 36.2998c-6.67969 10.1104 -10.6201 22.1904 -10.6201 35.21c0 35.3496 28.6504 64 64 64\ns64 -28.6504 64 -64c0 -33.9805 -26.5703 -61.5 -60.0098 -63.5898l-17.25 -34.5c59.7793 -40.4805 79.9502 -101.91 97.2598 -101.91c6.94043 0 11.3398 5.03027 21.9404 21.1699c11.1895 17.0498 28.1094 42.8301 62.0596 42.8301c13.25 0 24 -10.75 24 -24\ns-10.75 -24 -24 -24c-6.94043 0 -11.3496 -5.03027 -21.9404 -21.1699c-11.1895 -17.0498 -28.1094 -42.8301 -62.0596 -42.8301c-18.29 0 -31.5303 7.5498 -41.7002 17.1201c-1.9502 -2.78027 -4.13965 -5.66016 -6.37988 -8.57031\nc10.5098 -13.3301 14.6201 -29.5 17.9502 -42.6494c5.05957 -20 7.76953 -26.29 15.8896 -29.3809c8.16016 -3.05957 14.3506 -0.169922 31.4102 11.3604c18.0098 12.2002 42.6699 28.9697 75.3701 16.4502zM448 400c-8.82031 0 -16 -7.17969 -16 -16s7.17969 -16 16 -16\ns16 7.17969 16 16s-7.17969 16 -16 16zM192 400c-8.82031 0 -16 -7.17969 -16 -16s7.17969 -16 16 -16s16 7.17969 16 16s-7.17969 16 -16 16z\" />\n    <glyph glyph-name=\"peace\" unicode=\"&#xf67c;\" horiz-adv-x=\"496\" \nd=\"M248 440c136.97 0 248 -111.03 248 -248s-111.03 -248 -248 -248s-248 111.03 -248 248s111.03 248 248 248zM432 192c0 90.5303 -65.7695 165.82 -152 181.03v-165.66l129.43 -103.54c14.3701 26.2002 22.5703 56.2402 22.5703 88.1699zM216 10.9697v114.46\nl-89.29 -71.4395c24.7998 -21.8203 55.4297 -37.0498 89.29 -43.0205zM280 125.43v-114.449c33.8604 5.96973 64.4902 21.1992 89.29 43.0195zM216 373.03c-86.2305 -15.21 -152 -90.5 -152 -181.03c0 -31.9297 8.2002 -61.9697 22.5703 -88.1699l129.43 103.54v165.66z\" />\n    <glyph glyph-name=\"place-of-worship\" unicode=\"&#xf67f;\" horiz-adv-x=\"640\" \nd=\"M620.61 81.4502c10.7031 -4.58887 19.3896 -17.7646 19.3896 -29.4102v-100.04c0 -8.83984 -7.16016 -16 -16 -16h-112v192zM0 52.04c0 11.6455 8.68652 24.8213 19.3896 29.4102l108.61 46.5498v-192h-112c-8.83984 0 -16 7.16016 -16 16v100.04zM464.46 201.32\nc9.63965 -5.78027 15.54 -16.2002 15.54 -27.4404v-237.88h-96v96c0 35.3496 -28.6602 64 -64 64s-64 -28.6504 -64 -64v-96h-96v237.88c0 10.0029 6.96191 22.2959 15.54 27.4404l48.46 29.0801v114.97c0 8.49023 3.37988 16.6299 9.37988 22.6299l75.3105 75.3096\nc6.23926 6.25 16.3691 6.25 22.6191 0l75.3105 -75.3096c6.00977 -6.00977 9.37988 -14.1396 9.37988 -22.6299v-114.97z\" />\n    <glyph glyph-name=\"poll\" unicode=\"&#xf681;\" horiz-adv-x=\"448\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM160 80v128c0 8.83984 -7.16016 16 -16 16h-32c-8.83984 0 -16 -7.16016 -16 -16v-128c0 -8.83984 7.16016 -16 16 -16h32\nc8.83984 0 16 7.16016 16 16zM256 80v224c0 8.83984 -7.16016 16 -16 16h-32c-8.83984 0 -16 -7.16016 -16 -16v-224c0 -8.83984 7.16016 -16 16 -16h32c8.83984 0 16 7.16016 16 16zM352 80v64c0 8.83984 -7.16016 16 -16 16h-32c-8.83984 0 -16 -7.16016 -16 -16v-64\nc0 -8.83984 7.16016 -16 16 -16h32c8.83984 0 16 7.16016 16 16z\" />\n    <glyph glyph-name=\"poll-h\" unicode=\"&#xf682;\" horiz-adv-x=\"448\" \nd=\"M448 16c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48v-352zM112 256h128c8.83984 0 16 7.16016 16 16v32c0 8.83984 -7.16016 16 -16 16h-128c-8.83984 0 -16 -7.16016 -16 -16v-32\nc0 -8.83984 7.16016 -16 16 -16zM112 160h224c8.83984 0 16 7.16016 16 16v32c0 8.83984 -7.16016 16 -16 16h-224c-8.83984 0 -16 -7.16016 -16 -16v-32c0 -8.83984 7.16016 -16 16 -16zM112 64h64c8.83984 0 16 7.16016 16 16v32c0 8.83984 -7.16016 16 -16 16h-64\nc-8.83984 0 -16 -7.16016 -16 -16v-32c0 -8.83984 7.16016 -16 16 -16z\" />\n    <glyph glyph-name=\"pray\" unicode=\"&#xf683;\" horiz-adv-x=\"384\" \nd=\"M256 320c-35.3496 0 -64 28.6504 -64 64s28.6504 64 64 64s64 -28.6504 64 -64s-28.6504 -64 -64 -64zM225.37 150.25l-24.1504 28.7598l-34.7998 -64.8701l109.86 -109.859c25.4893 -25.4902 5.7998 -68.2803 -28.2803 -68.2803h-208c-22.0898 0 -40 17.9102 -40 40\ns17.9102 40 40 40h91.5596l-44.8096 34.8896c-42.8799 27.3799 -57.5898 80.1104 -34.1904 123.75l49.3701 92.0303c11.1201 20.6504 32.1807 34.4404 56.3701 36.9199c24.7803 2.58984 48.5605 -6.93945 64 -25.3301l38.9102 -46.3096l57.4404 47\nc17.1191 13.9697 42.3398 11.4902 56.3096 -5.62012c13.9697 -17.0898 11.4697 -42.2998 -5.62012 -56.2803l-88 -72.0195c-16.9697 -13.8701 -41.9102 -11.5 -55.9697 5.21973z\" />\n    <glyph glyph-name=\"praying-hands\" unicode=\"&#xf684;\" horiz-adv-x=\"640\" \nd=\"M272 256.09c17.5996 0 32 -14.3994 32 -32v-128c0 -51.8896 -34.8398 -98.0801 -84.75 -112.35l-179.19 -46.6201c-2.64941 -0.69043 -5.36914 -1.03027 -8.05957 -1.03027c-23.4805 0 -32 21.1797 -32 32v96v0.0117188c0 12.7285 9.80176 26.3203 21.8799 30.3389\nl90.1201 30.04v80.2295c0 18.9805 5.55957 37.3896 16.1201 53.2305l117.26 175.899c0.169922 0.270508 0.589844 0.25 0.790039 0.480469c9.58008 13.5098 27.8496 17.8799 42.2998 9.20996c15.1602 -9.10059 20.0605 -28.75 10.9707 -43.9102l-77.75 -129.59\nc-8.9707 -14.9199 -13.6904 -32 -13.6904 -49.3906v-76.5498c0 -8.83984 7.16016 -16 16 -16s16 7.16016 16 16v80c0 17.6006 14.4004 32 32 32zM618.12 94.3604c13.0703 -4.36035 21.8799 -16.5801 21.8799 -30.3506v-96c0 -10.8193 -8.51953 -32 -32 -32\nc-2.67969 0 -5.40039 0.339844 -8.05957 1.03027l-179.19 46.6201c-49.9102 14.2598 -84.75 60.4502 -84.75 112.34v128c0 17.5996 14.4004 32 32 32s32 -14.4004 32 -32v-80c0 -8.83984 7.16016 -16 16 -16s16 7.16016 16 16v76.5498\nc0 17.3906 -4.71973 34.4697 -13.6904 49.3906l-77.75 129.59c-9.08984 15.1602 -4.18945 34.8193 10.9707 43.9102c14.4502 8.66992 32.7197 4.2998 42.2998 -9.20996c0.200195 -0.240234 0.610352 -0.210938 0.790039 -0.480469l117.26 -175.89\nc10.5605 -15.8408 16.1201 -34.25 16.1201 -53.2305v-80.2295z\" />\n    <glyph glyph-name=\"quran\" unicode=\"&#xf687;\" horiz-adv-x=\"448\" \nd=\"M448 89.5996c0 -9.59961 -3.2002 -16 -9.59961 -19.1992c-3.2002 -12.8008 -3.2002 -57.6006 0 -73.6006c6.39941 -6.39941 9.59961 -12.7998 9.59961 -19.2002v-16c0 -16 -12.7998 -25.5996 -25.5996 -25.5996h-326.4c-54.4004 0 -96 41.5996 -96 96v320\nc0 54.4004 41.5996 96 96 96h326.4c16 0 25.5996 -9.59961 25.5996 -25.5996v-332.801zM301.08 302.18l-11.1904 -22.6494l-24.9893 -3.62988c-2.68066 -0.390625 -3.75 -3.66992 -1.81055 -5.56055l18.0898 -17.6299l-4.26953 -24.8896\nc-0.360352 -2.11035 1.30957 -3.82031 3.20996 -3.82031c0.5 0 1.01953 0.120117 1.51953 0.379883l22.3604 11.75l22.3604 -11.75c0.5 -0.259766 1.01953 -0.379883 1.51953 -0.379883c1.90039 0 3.57031 1.70996 3.20996 3.82031l-4.26953 24.8896l18.0898 17.6299\nc1.92969 1.89062 0.859375 5.16992 -1.81055 5.56055l-25 3.62988l-11.1797 22.6494c-0.599609 1.20996 -1.75977 1.82031 -2.91992 1.82031s-2.32031 -0.610352 -2.91992 -1.82031zM243.19 371.19c-63.5205 0 -115.19 -51.6709 -115.19 -115.19\nc0 -63.5098 51.6699 -115.19 115.18 -115.18c13.6006 0 27.1201 2.46973 40.1904 7.33984c2.67969 0.910156 4.62012 3.43945 4.62012 6.41992c0 3.63965 -2.87012 6.78027 -6.7998 6.78027c-0.650391 0 -3.10059 -0.209961 -4.13086 -0.209961\nc-52.3096 0 -94.8594 42.5596 -94.8594 94.8594c0 52.3105 42.5498 94.8604 94.8594 94.8604c1.04004 0 3.45996 -0.209961 4.13086 -0.209961c0.633789 -0.237305 1.69727 -0.429688 2.375 -0.429688c3.73926 0 6.77441 3.03516 6.77441 6.77441\nc0 3.7373 -3.03223 6.77246 -6.76953 6.77539c-13.1201 4.91992 -26.71 7.41016 -40.3799 7.41016zM380.8 0v64h-284.8c-16 0 -32 -12.7998 -32 -32s12.7998 -32 32 -32h284.8z\" />\n    <glyph glyph-name=\"search-dollar\" unicode=\"&#xf688;\" \nd=\"M505.04 5.33984c9.2998 -9.39941 9.2998 -24.5898 -0.0996094 -33.9902l-28.3008 -28.2998c-9.2998 -9.39941 -24.5 -9.39941 -33.8994 0l-99.71 99.6904c-4.5 4.5 -7 10.5996 -7 17v16.2998c-35.2998 -27.5996 -79.71 -44 -128.011 -44\nc-114.909 0 -208.02 93.0898 -208.02 207.979c0 114.891 93.1201 207.98 208.02 207.98c114.9 0 208.011 -93.0898 208.011 -207.98c0 -48.2998 -16.4004 -92.6895 -44 -127.989h16.2998c6.40039 0 12.5 -2.5 17 -7zM208.02 96.04c79.6504 0 144 64.4502 144 143.979\nc0 79.6406 -64.46 143.98 -144 143.98c-79.6494 0 -144 -64.4502 -144 -143.98c0 -79.6396 64.4609 -143.979 144 -143.979zM235.13 248.58c18.6006 -5.58008 31.5898 -23.4199 31.5898 -43.3896c0 -24.5303 -19.0498 -44.4404 -42.6797 -45.0703v-16.1201\nc0 -4.41992 -3.58008 -8 -8 -8h-16c-4.41992 0 -8 3.58008 -8 8v16.29c-11.29 0.580078 -22.2705 4.51953 -31.3701 11.3496c-3.90039 2.93066 -4.09961 8.77051 -0.570312 12.1406l11.75 11.21c2.77051 2.63965 6.89062 2.75977 10.1309 0.729492\nc3.85938 -2.42969 8.25977 -3.71973 12.8193 -3.71973h28.1006c6.5 0 11.7998 5.91992 11.7998 13.1904c0 5.94922 -3.61035 11.1797 -8.77051 12.7295l-45.0098 13.5c-18.5898 5.58008 -31.5801 23.4199 -31.5801 43.3896c0 24.5205 19.0498 44.4404 42.6797 45.0703\nv16.1201c0 4.41992 3.58008 8 8 8h16c4.4209 0 8 -3.58008 8 -8v-16.29c11.29 -0.580078 22.2705 -4.51953 31.3701 -11.3496c3.90039 -2.93066 4.10059 -8.77051 0.570312 -12.1406l-11.75 -11.21c-2.76953 -2.63965 -6.88965 -2.75977 -10.1299 -0.729492\nc-3.86035 2.42969 -8.25977 3.71973 -12.8203 3.71973h-28.1094c-6.5 0 -11.8008 -5.91992 -11.8008 -13.1904c0 -5.94922 3.61035 -11.1797 8.77051 -12.7295z\" />\n    <glyph glyph-name=\"search-location\" unicode=\"&#xf689;\" \nd=\"M505.04 5.33984c9.2998 -9.39941 9.2998 -24.5898 -0.0996094 -33.9902l-28.3008 -28.2998c-9.2998 -9.39941 -24.5 -9.39941 -33.8994 0l-99.71 99.6904c-4.5 4.5 -7 10.5996 -7 17v16.2998c-35.2998 -27.5996 -79.71 -44 -128.011 -44\nc-114.909 0 -208.02 93.0898 -208.02 207.979c0 114.891 93.1201 207.98 208.02 207.98c114.9 0 208.011 -93.0898 208.011 -207.98c0 -48.2998 -16.4004 -92.6895 -44 -127.989h16.2998c6.40039 0 12.5 -2.5 17 -7zM208.02 96.04c79.6504 0 144 64.4502 144 143.979\nc0 79.6406 -64.46 143.98 -144 143.98c-79.6494 0 -144 -64.4502 -144 -143.98c0 -79.6396 64.4609 -143.979 144 -143.979zM208.04 336c40.7803 0 73.8398 -33.0498 73.8398 -73.8301c0 -32.9697 -48.2598 -93.0498 -66.75 -114.86\nc-1.5293 -1.8291 -4.70508 -3.31445 -7.08984 -3.31445s-5.56055 1.48535 -7.08984 3.31445c-18.4902 21.8105 -66.75 81.9004 -66.75 114.86c0 40.7803 33.0596 73.8301 73.8398 73.8301zM208.04 240c13.25 0 24 10.75 24 24c0 13.2598 -10.75 24 -24 24\ns-24 -10.7402 -24 -24c0 -13.25 10.7402 -24 24 -24z\" />\n    <glyph glyph-name=\"socks\" unicode=\"&#xf696;\" \nd=\"M214.66 136.99c-52.7402 -39.5605 -69.0498 -110.021 -39.2002 -165.4l-21.8604 -16.3896c-17.2695 -12.9502 -37.4893 -19.2002 -57.5195 -19.2002c-32.8105 0 -65.6904 16.75 -83.9404 48.3301c-24.6494 42.6396 -10.1895 97.5 29.21 127.06l86.6504 64.6104v176h160\nv-160zM288 416v-32h-160v32c0 17.6699 14.3301 32 32 32h128c2.84961 0 5.40039 -0.919922 8.01953 -1.62012c-4.94922 -9.08008 -8.01953 -19.3301 -8.01953 -30.3799zM480 448c17.6699 0 32 -14.3301 32 -32v-32h-192v32c0 17.6699 14.3301 32 32 32h128zM320 176v176h192\nv-208v-0.00195312c0 -35.3271 -22.9375 -81.2021 -51.2002 -102.398l-115.2 -86.3994c-17.2695 -12.9502 -37.4893 -19.2002 -57.5195 -19.2002c-32.8105 0 -65.1699 16.75 -83.4199 48.3301c-24.6504 42.6396 -10.1904 97.5 29.21 127.06z\" />\n    <glyph glyph-name=\"square-root-alt\" unicode=\"&#xf698;\" horiz-adv-x=\"576\" \nd=\"M571.31 196.69c6.25 -6.25 6.25 -16.3809 0 -22.6309l-46.0596 -46.0596l46.0596 -46.0596c6.25 -6.25 6.25 -16.3809 0 -22.6309l-22.6191 -22.6191c-6.25 -6.25 -16.3809 -6.25 -22.6309 0l-46.0596 46.0596l-46.0596 -46.0596c-6.25 -6.25 -16.3809 -6.25 -22.6309 0\nl-22.6191 22.6191c-6.25 6.25 -6.25 16.3809 0 22.6309l46.0596 46.0596l-46.0596 46.0596c-6.25 6.25 -6.25 16.3809 0 22.6309l22.6191 22.6191c6.25 6.25 16.3809 6.25 22.6309 0l46.0596 -46.0596l46.0596 46.0596c6.25 6.25 16.3809 6.25 22.6309 0zM552 448\nc13.25 0 24 -10.7402 24 -24v-48c0 -13.25 -10.75 -24 -24 -24h-194.97l-97.8105 -374.52c-9.83984 -32.4805 -37.0098 -41.4805 -54.2793 -41.4805c-18.6406 0 -35.9502 8.5 -48.4404 28.2695l-88.8799 163.73h-43.6201c-13.25 0 -24 10.75 -24 24v48\nc0 13.2598 10.75 24 24 24h81.4697c10.4385 -0.00292969 22.9961 -7.42578 28.0303 -16.5703l58.4102 -106.1l84.79 322.8c3.68945 14.0703 16.4102 23.8701 30.9502 23.8701h244.35z\" />\n    <glyph glyph-name=\"star-and-crescent\" unicode=\"&#xf699;\" \nd=\"M340.47 -18.3604c8.74023 0 15.1299 -6.96973 15.1299 -15.0596c0 -6.62012 -4.31934 -12.2402 -10.2793 -14.2598c-29.04 -10.8301 -59.0898 -16.3203 -89.3203 -16.3203c-141.16 0 -256 114.84 -256 256s114.84 256 256 256c30.3896 0 60.5801 -5.54004 89.75 -16.4805\nc6.91992 -2.59961 10.9297 -9.83984 9.46973 -17.0898c-1.41992 -7.04004 -7.62012 -12.0693 -14.75 -12.0693c-1.47949 0 -6.85938 0.459961 -9.17969 0.459961c-116.25 0 -210.82 -94.5703 -210.82 -210.82s94.5703 -210.82 210.82 -210.82\nc2.29004 0 7.72949 0.459961 9.17969 0.459961zM503.46 234.14c8.16992 -1.17969 11.4297 -11.2197 5.52051 -16.9893l-55.2705 -53.8701l13.0498 -76.0703c1.11035 -6.42969 -4.00977 -11.6602 -9.80957 -11.6602c-1.53027 0 -3.11035 0.370117 -4.64062 1.16992\nl-68.3096 35.9102l-68.3301 -35.9102c-1.53027 -0.80957 -3.11035 -1.16992 -4.63965 -1.16992c-5.7998 0 -10.9199 5.21973 -9.81055 11.6602l13.0498 76.0703l-55.2695 53.8701c-5.91016 5.76953 -2.65039 15.8096 5.51953 16.9893l76.3809 11.1006l34.1592 69.21\nc1.83008 3.7002 5.38086 5.5498 8.93066 5.5498s7.09961 -1.84961 8.92969 -5.5498l34.1602 -69.21z\" />\n    <glyph glyph-name=\"star-of-david\" unicode=\"&#xf69a;\" horiz-adv-x=\"464\" \nd=\"M405.68 192l53.2207 -89.3896c14.4092 -24.21 -3.41016 -54.6104 -32.0107 -54.6104h-106.93l-55.9502 -93.9805c-7.14941 -12.0098 -19.5801 -18.0195 -32.0098 -18.0195s-24.8604 6.00977 -32.0098 18.0195l-55.9502 93.9805h-106.93\nc-28.6006 0 -46.4199 30.4004 -32.0107 54.6104l53.2207 89.3896l-53.2207 89.3896c-14.4092 24.21 3.41016 54.6104 32.0107 54.6104h106.93l55.9502 93.9805c7.14941 12.0098 19.5801 18.0195 32.0098 18.0195s24.8604 -6.00977 32.0098 -18.0195l55.9502 -93.9805h106.92\nc28.6006 0 46.4199 -30.4004 32.0098 -54.6104zM392.9 280h-39.6006l19.7998 -33.2598zM340.51 192l-52.3896 88h-112.25l-52.3799 -88l52.3896 -88h112.24zM232 374.28l-22.7803 -38.2803h45.5703zM71.0996 280l19.8008 -33.2598l19.7998 33.2598h-39.6006zM71.0996 104\nh39.6006l-19.7998 33.2598zM232 9.71973l22.7803 38.2803h-45.5703zM353.29 104h39.6104l-19.8105 33.2598z\" />\n    <glyph glyph-name=\"synagogue\" unicode=\"&#xf69b;\" horiz-adv-x=\"640\" \nd=\"M70 251.49c5.30957 6.00977 14.6904 6.00977 20 0l38 -43.0703v-272.42h-128v226.07v0.00683594c0 5.5625 2.98828 13.4629 6.66992 17.6328zM633.33 179.71c4.2998 -4.87012 6.66992 -11.1396 6.66992 -17.6396v-226.07h-128v272.42l38 43.0703\nc5.30957 6.01953 14.6904 6.01953 20 0zM339.99 440.99l128 -102.4c7.58984 -6.07031 12.0098 -15.2695 12.0098 -24.9902v-377.6h-96v96c0 38.8701 -34.6602 69.6504 -74.75 63.1201c-31.4697 -5.12012 -53.25 -34.6699 -53.25 -66.5498v-92.5703h-96v377.6\nc0 8.49023 5.38086 19.6865 12.0098 24.9902l128 102.4c11.6904 9.34961 28.29 9.34961 39.9805 0zM392.06 225.44l-19.1895 30.5596l19.2002 30.5703c1.97949 3.14941 -0.290039 7.23926 -4 7.23926h-38.9502l-25.1201 39.9805c-1.84961 2.9502 -6.15039 2.9502 -8 0\nl-25.1201 -40h-38.9395c-3.70996 0 -5.98047 -4.08984 -4 -7.24023l19.1992 -30.5596l-19.1992 -30.5605c-1.98047 -3.14941 0.279297 -7.23926 4 -7.23926h38.9395l25.1201 -39.9805c1.84961 -2.9502 6.15039 -2.9502 8 0l25.1201 39.9902h38.9395\nc3.70996 0 5.98047 4.08984 4 7.24023z\" />\n    <glyph glyph-name=\"torah\" unicode=\"&#xf6a0;\" horiz-adv-x=\"640\" \nd=\"M320.05 81.5195l-17.7402 29.6406h35.46zM419.26 247.52l-18.3994 -30.8193l-18.46 30.8193h36.8594zM48 448c26.5098 0 48 -14.3301 48 -32v-448c0 -17.6699 -21.4902 -32 -48 -32s-48 14.3301 -48 32v448c0 17.6699 21.4902 32 48 32zM220.74 136.5l18.3896 30.8203\nl18.46 -30.8203h-36.8496zM382.45 136.5l18.4102 30.7998l18.4492 -30.7998h-36.8594zM128 -16v416h384v-416h-384zM194.77 262.13c-1.53711 -2.65625 -2.78516 -7.30176 -2.78516 -10.3711c0 -3.20312 1.35059 -8.02246 3.01562 -10.7588l29.3604 -49l-29.21 -48.8398\nc-1.6709 -2.77344 -3.02637 -7.65234 -3.02637 -10.8906c0 -11.6523 9.45703 -21.1094 21.1104 -21.1094h0.015625h59.5l29.25 -48.8799c3.33105 -5.6416 11.3516 -10.2207 17.9023 -10.2207h0.0976562c6.64844 0.0136719 14.7842 4.67285 18.1602 10.4004l29.1299 48.7002\nh59.4697h0.0224609c6.8125 0 15.082 4.80273 18.458 10.7197c1.53418 2.65332 2.7793 7.29297 2.7793 10.3584c0 3.2041 -1.35254 8.02539 -3.01953 10.7617l-29.3701 49l29.2402 48.8496c1.66602 2.77246 3.01758 7.64648 3.01758 10.8809\nc0 11.6562 -9.46094 21.1182 -21.1182 21.1191h-59.5195l-29.25 48.8604c-3.3252 5.63574 -11.3359 10.21 -17.8799 10.21h-0.0703125h-0.0341797c-6.65137 0 -14.7988 -4.64551 -18.1855 -10.3701l-29.1299 -48.71h-59.4502h-0.0458984\nc-6.80469 0 -15.0635 -4.79785 -18.4346 -10.71zM592 448c26.5098 0 48 -14.3301 48 -32v-448c0 -17.6699 -21.4902 -32 -48 -32s-48 14.3301 -48 32v448c0 17.6699 21.4902 32 48 32zM320 302.47l17.6797 -29.6201h-35.46zM257.55 247.47l-18.3701 -30.7998\nl-18.4395 30.7998h36.8096zM287.13 136.47l-33.2295 55.5303l33.1699 55.5195h65.79l33.2295 -55.5195l-33.1699 -55.5303h-65.79z\" />\n    <glyph glyph-name=\"torii-gate\" unicode=\"&#xf6a1;\" \nd=\"M376.45 416c39.4961 0.00195312 100.223 14.3389 135.55 32v-96c0 -17.6699 -14.3301 -32 -32 -32h-32v-64h48c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-48v-240c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v240\nh-256v-240c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v240h-48c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h48v64h-32c-17.6699 0 -32 14.3301 -32 32v96c35.3271 -17.6611 96.0537 -31.998 135.55 -32h240.9zM128 320v-64h96\nv64h-96zM384 256v64h-96v-64h96z\" />\n    <glyph glyph-name=\"vihara\" unicode=\"&#xf6a7;\" horiz-adv-x=\"640\" \nd=\"M632.88 47.29c5.41992 -3.61035 7.7002 -9.62012 6.99023 -15.29c-0.620117 -5.00977 -3.56055 -9.75 -8.71973 -12.3301l-55.1504 -19.6699v-48c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v48h-160v-48c0 -8.83984 -7.16016 -16 -16 -16h-32\nc-8.83984 0 -16 7.16016 -16 16v48h-160v-48c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v48l-55.1602 19.6699c-5.14941 2.58008 -8.09961 7.32031 -8.71973 12.3301c-0.700195 5.66016 1.58008 11.6699 7 15.29l88.8799 48.71v64\nl-55.1602 17.6904c-11.79 5.89941 -11.79 22.7197 0 28.6191l119.16 49.6904v64l-27.3096 16.3096c-7.7207 7.7207 -5.61035 20.7402 4.15918 25.6201l183.15 86.0703l183.15 -86.0801c9.76953 -4.87988 11.8799 -17.9004 4.15918 -25.6201l-27.3096 -16.2998v-64\nl119.16 -49.6904c11.79 -5.89941 11.79 -22.7197 0 -28.6191l-55.1602 -17.6904v-64zM224 320v-64h192v64h-192zM160 96h320v64h-320v-64z\" />\n    <glyph glyph-name=\"volume-mute\" unicode=\"&#xf6a9;\" \nd=\"M215.03 376.95c15.0098 15.0098 40.9697 4.49023 40.9697 -16.9697v-335.961c0 -21.4395 -25.9404 -32 -40.9697 -16.9697l-88.9707 88.9502h-102.06c-13.2598 0 -24 10.75 -24 24v144c0 13.2598 10.7402 24 24 24h102.06zM461.64 192l45.6406 -45.6396\nc6.2998 -6.30078 6.2998 -16.5205 0 -22.8203l-22.8203 -22.8203c-6.2998 -6.2998 -16.5195 -6.2998 -22.8203 0l-45.6396 45.6406l-45.6299 -45.6299c-6.2998 -6.30078 -16.5205 -6.30078 -22.8203 0l-22.8193 22.8193c-6.30078 6.2998 -6.30078 16.5205 0 22.8203\nl45.6299 45.6299l-45.6406 45.6396c-6.2998 6.30078 -6.2998 16.5205 0 22.8203l22.8203 22.8203c6.2998 6.2998 16.5195 6.2998 22.8203 0l45.6396 -45.6406l45.6396 45.6406c6.30078 6.2998 16.5205 6.2998 22.8203 0l22.8203 -22.8203\nc6.2998 -6.2998 6.2998 -16.5195 0 -22.8203z\" />\n    <glyph glyph-name=\"yin-yang\" unicode=\"&#xf6ad;\" horiz-adv-x=\"496\" \nd=\"M248 440c136.97 0 248 -111.03 248 -248s-111.03 -248 -248 -248s-248 111.03 -248 248s111.03 248 248 248zM248 64c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM248 192c53.0195 0 96 42.9805 96 96s-42.9805 96 -96 96\nc-106.04 0 -192 -85.96 -192 -192s85.96 -192 192 -192c-53.0195 0 -96 42.9805 -96 96s42.9805 96 96 96zM248 320c17.6699 0 32 -14.3301 32 -32s-14.3301 -32 -32 -32s-32 14.3301 -32 32s14.3301 32 32 32z\" />\n    <glyph glyph-name=\"blender-phone\" unicode=\"&#xf6b6;\" horiz-adv-x=\"576\" \nd=\"M392 384c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h157.82l-17.46 -64h-140.36c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h131.64l-17.46 -64h-114.18c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h105.46\nl-17.46 -64h-288v352h384l-17.46 -64h-166.54zM158.8 112.99c3.00977 -7.40039 0.200195 -15.8506 -6.68945 -20.0703l-39.4102 -24.1797c-12.5303 -7.68066 -31.7803 -6 -41.6504 4.7998c-94.0996 102.94 -94.6699 258.89 -2.09961 362.49\nc11.1396 12.4697 29.5596 15.8398 43.8896 7.0498l39.2803 -24.0996c6.87988 -4.2207 9.7002 -12.6807 6.67969 -20.0703l-25.7803 -63.2598c-2.7793 -6.80078 -9.80957 -10.9902 -17.2393 -10.2607l-45.0303 4.41992c-17.6504 -47.9395 -17.2803 -100.779 0 -147.72\nl45.0303 4.41992c7.43945 0.730469 14.46 -3.4502 17.2393 -10.2598zM480 64c35.3496 0 64 -28.6504 64 -64v-32c0 -17.6699 -14.3301 -32 -32 -32h-352c-17.6699 0 -32 14.3301 -32 32v32c0 35.3496 28.6504 64 64 64h288zM336 -32c17.6699 0 32 14.3301 32 32\ns-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z\" />\n    <glyph glyph-name=\"book-dead\" unicode=\"&#xf6b7;\" horiz-adv-x=\"448\" \nd=\"M272 312c-8.7998 0 -16 7.2002 -16 16s7.2002 16 16 16s16 -7.2002 16 -16s-7.2002 -16 -16 -16zM448 89.5996c0 -9.59961 -3.2002 -16 -9.59961 -19.1992c-3.2002 -12.8008 -3.2002 -57.6006 0 -73.6006c6.39941 -6.39941 9.59961 -12.7998 9.59961 -19.2002v-16\nc0 -16 -12.7998 -25.5996 -25.5996 -25.5996h-326.4c-54.4004 0 -96 41.5996 -96 96v320c0 54.4004 41.5996 96 96 96h326.4c16 0 25.5996 -9.59961 25.5996 -25.5996v-332.801zM240 392c-44.2002 0 -80 -28.7002 -80 -64c0 -20.9004 12.7002 -39.2002 32 -50.9004v-13.0996\nc0 -8.7998 7.2002 -16 16 -16h64c8.7998 0 16 7.2002 16 16v13.0996c19.2998 11.7002 32 30 32 50.9004c0 35.2998 -35.7998 64 -80 64zM124.8 224.7c-1.7002 -4.10059 0.100586 -8.7998 4.2002 -10.5l70.5 -30.2998l-70.4004 -30.1006\nc-4.09961 -1.7002 -5.89941 -6.39941 -4.19922 -10.5l6.2998 -14.7002c1.7002 -4.09961 6.39941 -5.89941 10.5 -4.19922l98.2998 42.1992l98.2998 -42.0996c4.10059 -1.7002 8.7998 0.0996094 10.5 4.2002l6.2998 14.7002c1.7002 4.09961 -0.0996094 8.7998 -4.19922 10.5\nl-70.3008 30.0996l70.3008 30.2002c4.09961 1.7002 5.89941 6.39941 4.19922 10.5l-6.2998 14.7002c-1.7002 4.09961 -6.39941 5.89941 -10.5 4.19922l-98.3994 -42.0996l-98.3008 42.0996c-4.09961 1.7002 -8.7998 -0.0996094 -10.5 -4.19922zM380.8 0v64h-284.8\nc-16 0 -32 -12.7998 -32 -32s12.7998 -32 32 -32h284.8zM208 312c-8.7998 0 -16 7.2002 -16 16s7.2002 16 16 16s16 -7.2002 16 -16s-7.2002 -16 -16 -16z\" />\n    <glyph glyph-name=\"campground\" unicode=\"&#xf6bb;\" horiz-adv-x=\"640\" \nd=\"M624 0c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-608c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h24.6797l239.79 330.25l-53.4102 73.5498c-5.19922 7.15039 -3.60938 17.1602 3.54004 22.3506l25.8809 18.7998\nc7.14941 5.18945 17.1592 3.59961 22.3496 -3.5498l41.1699 -56.7002l41.1602 56.6895c5.2002 7.16016 15.2002 8.74023 22.3496 3.55078l25.9004 -18.79c7.14941 -5.19043 8.72949 -15.2002 3.54004 -22.3506l-53.4102 -73.5498l239.78 -330.25h24.6797zM320 160\nl-116.36 -160h232.721z\" />\n    <glyph glyph-name=\"cat\" unicode=\"&#xf6be;\" \nd=\"M290.59 256c11.8906 -58.3496 63.6006 -102.4 125.41 -102.4c11.1104 0 21.71 1.87012 32 4.54004v-206.14c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v144l-128 -96h32c17.6699 0 32 -14.3301 32 -32v-16c0 -8.83984 -7.16016 -16 -16 -16\nh-176c-35.2998 0 -64 28.7002 -64 64v256c0 17.6396 -14.3604 32 -32 32c-17.6699 0 -32 14.3301 -32 32s14.3301 32 32 32c52.9404 0 96 -43.0596 96 -96v-85.9502c55.7695 83.9697 142.41 85.9502 162.59 85.9502zM448 352l64 64v-134.4c0 -53.0195 -42.9805 -96 -96 -96\ns-96 42.9805 -96 96v134.4l64 -64h64zM376 272c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16s-16 -7.16016 -16 -16s7.16016 -16 16 -16zM456 272c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16s-16 -7.16016 -16 -16s7.16016 -16 16 -16z\" />\n    <glyph glyph-name=\"chair\" unicode=\"&#xf6c0;\" horiz-adv-x=\"448\" \nd=\"M112 320v-128h-48v128c0 70.7002 57.2998 128 128 128h64c70.7002 0 128 -57.2998 128 -128v-128h-48v128c0 29.5 -16.2002 55 -40 68.9004v-196.9h-48v208h-48v-208h-48v196.9c-23.7998 -13.9004 -40 -39.4004 -40 -68.9004zM446.3 106.1\nc6.90039 -20.6992 -8.5 -42.0996 -30.2998 -42.0996v-112c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v112h-256v-112c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v112c-21.7998 0 -37.2002 21.4004 -30.4004 42.0996l10.7002 32\nc4.40039 13.1006 16.6006 21.9004 30.4004 21.9004h362.5c13.7998 0 26 -8.7998 30.3994 -21.9004z\" />\n    <glyph glyph-name=\"cloud-moon\" unicode=\"&#xf6c3;\" horiz-adv-x=\"576\" \nd=\"M342.8 95.2998c40.9004 -3.5 73.2002 -37.3994 73.2002 -79.2998c0 -44.2002 -35.7998 -80 -80 -80h-240c-53 0 -96 43 -96 96c0 41.9004 27.0996 77.2002 64.5996 90.2998c-0.0996094 1.90039 -0.599609 3.7002 -0.599609 5.7002c0 53 43 96 96 96\nc36.2002 0 67.4004 -20.2998 83.7002 -49.9004c11.5 11 27.0996 17.9004 44.2998 17.9004c35.2998 0 64 -28.7002 64 -64c0 -12 -3.5 -23.0996 -9.2002 -32.7002zM565.3 149.6c8.2002 1.60059 14 -8 8.7002 -14.5c-33.4004 -41.0996 -82.7002 -67 -137.1 -70.3994\nc-11.1006 23.0996 -29.9004 41.7998 -53.5 52.5996c0.399414 3.5 0.599609 7.10059 0.599609 10.7002c0 52.9004 -43.0996 96 -96 96c-12.7002 0 -25 -2.5 -36.4004 -7.2002c-5.09961 5.2998 -10.7998 9.90039 -16.6992 14.2002c-1.10059 8.2002 -1.80078 16.5 -1.80078 25\nc0 106.1 86 192 191.9 192c11.7002 0 23.4004 -1.09961 35.0996 -3.2002c8.2002 -1.59961 10.1006 -12.5996 2.80078 -16.7002c-47.1006 -26.7998 -76.1006 -76.5996 -76.1006 -130.8c0 -94 85.4004 -165.399 178.5 -147.7z\" />\n    <glyph glyph-name=\"cloud-sun\" unicode=\"&#xf6c4;\" horiz-adv-x=\"640\" \nd=\"M575.2 122.3c37.5996 -13 64.7998 -48.2998 64.7998 -90.3994c0 -53 -43 -96 -96 -96h-272c-53 0 -96 43 -96 96c0 50.5996 39.2998 91.5996 88.9004 95.2998c-0.200195 2.89941 -0.900391 5.7002 -0.900391 8.7002c0 61.8994 50.2002 112 112 112\nc45.4004 0 84.2998 -27.2002 101.9 -66c9.89941 6.19922 21.5 10 34.0996 10c35.2998 0 64 -28.7002 64 -64c0 -1.90039 -0.599609 -3.7002 -0.799805 -5.60059zM144.8 144.9c10.6006 -10.6006 22.9004 -18.6006 36 -24c-9.59961 -9.80078 -17.5 -21.1006 -23.5996 -33.5\nl-76.1006 -25.3008c-11.8994 -3.89941 -23.1992 7.30078 -19.1992 19.2002l29.2998 87.7998l-82.7998 41.4004c-11.2002 5.59961 -11.2002 21.5 0 27.0996l82.7998 41.5l-29.2998 87.8008c-3.90039 11.7998 7.39941 23.0996 19.1992 19.1992l87.9004 -29.2998\nl41.4004 82.7998c5.59961 11.2002 21.5996 11.2002 27.0996 0l41.5 -82.7998l87.7998 29.2998c11.9004 3.90039 23.2002 -7.2998 19.2002 -19.1992l-29.7998 -88.9004c-10.6006 -1.5 -20.9004 -3.7998 -30.7002 -7.5c-5.40039 11.7998 -12.5996 23 -22.2998 32.7002\nc-43.7002 43.7002 -114.7 43.7002 -158.4 0c-43.7002 -43.6006 -43.7002 -114.601 0 -158.3zM140 224.1c0 46.3008 37.7002 83.9004 84 83.9004c34 0 63.2998 -20.4004 76.5 -49.5c-36.4004 -22.5 -62 -60.7002 -67.4004 -105\nc-8.89941 -2.90039 -17.1992 -7 -25.1992 -11.7002c-38.6006 7.5 -67.9004 41.5 -67.9004 82.2998z\" />\n    <glyph glyph-name=\"dice-d20\" unicode=\"&#xf6cf;\" horiz-adv-x=\"480\" \nd=\"M106.75 232.94l108.64 -190.101l-208.26 22.0703c-5.83008 0.639648 -9.00977 7.13965 -5.92969 12.1396zM7.41016 132.57c-2.12012 -3.44043 -7.41016 -1.94043 -7.41016 2.08984v162.81c0 3.11035 3.38965 5.03027 6.05957 3.43066l76.6406 -45.9805zM18.25 24.4004\nc-4.03027 1.97949 -2.25 8.06934 2.2002 7.56934l203.55 -22.2998v-65.6699c0 -5.83008 -6.0498 -9.70996 -11.3496 -7.25977zM99.4697 282.18l-81.5293 48.6904c-2.52051 1.51953 -2.60059 5.16016 -0.130859 6.78027l150.811 98.6094\nc7.18945 4.11035 15.1201 -4.08008 10.7803 -11.1396zM240 272h-109.21l95.5801 168.38c3.12988 5.08008 8.37988 7.62012 13.6299 7.62012s10.5 -2.54004 13.6299 -7.62012l95.5801 -168.38h-109.21zM473.94 300.9c2.66992 1.59961 6.05957 -0.320312 6.05957 -3.43066\nv-162.81c0 -4.04004 -5.2998 -5.54004 -7.41016 -2.10059l-75.29 122.351zM380.53 282.18l-79.9307 142.94c-4.33984 7.05957 3.59082 15.25 10.7803 11.1396l150.811 -98.5996c2.46973 -1.62012 2.39941 -5.25977 -0.130859 -6.78027zM459.55 31.9697\nc4.4502 0.5 6.23047 -5.58984 2.2002 -7.55957l-194.4 -87.6602c-5.2998 -2.4502 -11.3496 1.41992 -11.3496 7.25977v65.6699zM373.25 232.94l105.56 -155.891c3.08008 -5 -0.0996094 -11.4902 -5.92969 -12.1396l-208.26 -22.0703zM240 240h100.43l-100.43 -175.75\nl-100.43 175.75h100.43z\" />\n    <glyph glyph-name=\"dice-d6\" unicode=\"&#xf6d1;\" horiz-adv-x=\"448\" \nd=\"M422.19 338.05c5.3291 -3.24023 5.2998 -11.2695 -0.0507812 -14.46l-198.14 -118.14l-198.13 118.14c-5.35059 3.19043 -5.37988 11.2305 -0.0605469 14.46l165.971 100.88c19.9102 12.1006 44.5195 12.1006 64.4297 0zM436.03 293.42\nc5.33008 3.17969 11.9697 -0.839844 11.9697 -7.25v-197.7c0 -23.7598 -12.1104 -45.7393 -31.79 -57.7002l-152.16 -92.4795c-10.6602 -6.48047 -24.0498 1.5498 -24.0498 14.4297v223.82zM0 286.17c0 6.41016 6.63965 10.4297 11.9697 7.25l196.03 -116.88v-223.81\nc0 -12.8906 -13.3799 -20.9102 -24.0498 -14.4307l-152.16 92.4697c-19.6797 11.9609 -31.79 33.9307 -31.79 57.7002v197.7z\" />\n    <glyph glyph-name=\"dog\" unicode=\"&#xf6d3;\" \nd=\"M496 352c8.83984 0 16 -7.16016 16 -16v-32c0 -35.3496 -28.6504 -64 -64 -64h-32v-35.5801l-128 45.71v149.84c0 14.25 17.2305 21.3906 27.3203 11.3105l27.2793 -27.2803h53.6201c10.917 -0.000976562 23.7383 -7.92578 28.6201 -17.6904l7.16016 -14.3096h64z\nM384 304c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16s-16 -7.16016 -16 -16s7.16016 -16 16 -16zM96 224h170.05l149.95 -53.5498v-218.45c0 -8.83984 -7.16016 -16 -16 -16h-64c-8.83984 0 -16 7.16016 -16 16v112h-160v-112c0 -8.83984 -7.16016 -16 -16 -16h-64\nc-8.83984 0 -16 7.16016 -16 16v213.9c-37.1699 13.25 -64 48.4395 -64 90.0996c0 17.6699 14.3301 32 32 32s32 -14.3301 32 -32c0 -17.6396 14.3604 -32 32 -32z\" />\n    <glyph glyph-name=\"dragon\" unicode=\"&#xf6d5;\" horiz-adv-x=\"640\" \nd=\"M18.3203 192.22c-15.96 -2.2793 -24.8906 17.8105 -12.5107 28.1406l117.4 116.34c21.7705 18.5996 53.2402 20.4697 77.0596 4.58984l119.73 -87.5996v-42.2705c0 -28.9102 5.29004 -56.9795 14.7305 -83.3799h-222.7c-14.25 0 -21.3906 17.2295 -11.3105 27.3096\nl91.2803 68.6904zM575.19 158.12c41.9092 -20.96 67.1592 -64.0801 64.6396 -111.36c-3.37988 -63.2002 -59.7002 -110.77 -122.99 -110.76h-499.08c-9.80957 0 -17.7598 8 -17.7598 17.7998c0 8.32031 5.78027 15.5303 13.9004 17.3301\nc89.54 19.9004 238.51 54.1006 434.1 60.9102c-59.9697 39.9902 -96 107.3 -96 179.38v108.62l-59.5801 24.8496c-5.90039 2.9502 -5.90039 11.3604 0 14.3105l59.5801 24.8398l-61.6396 50.3496c-5.04004 5.04004 -1.4707 13.6104 5.65918 13.6104h237.45\nc10.0703 0 19.5498 -4.7002 25.6006 -12.7598l74.5293 -99.3799c3.53223 -4.71094 6.39844 -13.3115 6.39844 -19.1992c0 -4.16992 -1.51367 -10.5811 -3.37793 -14.3115l-14.3105 -28.6191c-4.88086 -9.76465 -17.7031 -17.6895 -28.6191 -17.6904h-30.9707\nc-8.48926 0 -16.6299 3.37012 -22.6299 9.37012l-28.0898 22.6299h-64v-36.6904c0.00195312 -16.3701 11.8877 -35.5986 26.5303 -42.9199zM489.18 381.75c-4.33008 -17.1396 8.56055 -28.96 21.5205 -29.6699c11.6602 -0.629883 21.3799 7.34961 24.1299 18.2598z\" />\n    <glyph glyph-name=\"drumstick-bite\" unicode=\"&#xf6d7;\" \nd=\"M462.8 398.43c34.3203 -34.2793 50.4307 -79.5996 49.1299 -124.56c-41.9795 22.6602 -94.3594 17.5596 -128.739 -16.7998c-40.8809 -40.8398 -40.6904 -107.181 -1.05078 -151.07c-16.2383 -5.52246 -43.3389 -10.0049 -60.4912 -10.0049\nc-0.385742 0 -1.0127 0.00195312 -1.39844 0.00488281h-85.8896l-40.6104 -40.5596c-9.71973 -9.75 -11.0898 -24.0205 -6 -36.75c2.38477 -5.95898 4.32031 -16.0049 4.32031 -22.4229c0 -33.3135 -27.0371 -60.3496 -60.3506 -60.3496\nc-13.8428 0 -33.0039 7.96191 -42.7695 17.7725c-15.2803 15.2695 -19.6006 36.5 -15.1006 56.0996c-19.6094 -4.49023 -40.8496 -0.179688 -56.1191 15.0703c-9.77148 9.75684 -17.7021 28.8828 -17.7021 42.6914c0 33.3018 27.0273 60.3301 60.3301 60.3301\nc6.40234 0 16.4248 -1.92773 22.3721 -4.30176c12.7793 -5.07031 27.0791 -3.69043 36.7793 6l40.6201 40.5898v85.8301c0 64 27.6904 107 63.1699 142.43c27.3887 27.3604 81.0371 49.5664 119.75 49.5664c38.7139 0 92.3613 -22.2061 119.75 -49.5664z\" />\n    <glyph glyph-name=\"dungeon\" unicode=\"&#xf6d9;\" \nd=\"M128.73 252.68c6.58984 -4.12012 8.89941 -12.2393 6.33984 -19.5801c-3 -8.60938 -5.15039 -17.6094 -6.24023 -26.9395c-0.929688 -7.91016 -7.0498 -14.1602 -15.0098 -14.1602h-97.1299c-9.10059 0 -16.7402 7.62988 -16.1504 16.7197\nc1.66016 25.7793 11.7178 65.7725 22.4502 89.2705c3.93945 8.62012 14.8896 11.4697 22.9297 6.4502zM319.03 440c9.16992 -2.36035 13.9102 -12.5996 10.3896 -21.3896l-37.4697 -104.03c-2.28027 -6.34961 -8.2998 -10.5801 -15.0498 -10.5801h-41.8008\nc-6.2041 0.00195312 -12.9473 4.74219 -15.0498 10.5801l-37.4697 104.03c-3.52051 8.79004 1.21973 19.04 10.3896 21.3896c20.1699 5.17969 41.2607 8 63.0303 8s42.8604 -2.82031 63.0303 -8zM112 160c8.83984 0 16 -7.16016 16 -16v-64c0 -8.83984 -7.16016 -16 -16 -16\nh-96c-8.83984 0 -16 7.16016 -16 16v64c0 8.83984 7.16016 16 16 16h96zM112 32c8.83984 0 16 -7.16016 16 -16v-64c0 -8.83984 -7.16016 -16 -16 -16h-96c-8.83984 0 -16 7.16016 -16 16v64c0 8.83984 7.16016 16 16 16h96zM189.31 315.67\nc2.85059 -7.12012 -0.0195312 -14.8799 -6.2998 -19.29c-6 -4.2002 -11.6094 -8.89941 -16.79 -14.0498c-5.4502 -5.41016 -13.5996 -6.86035 -20.1094 -2.79004l-82.9307 51.8301c-8.06934 5.04004 -10.2793 16.2002 -4.21973 23.5195\nc16.7148 20.1758 48.7969 47.0068 71.6104 59.8906c8.29004 4.67969 18.8896 0.519531 22.4199 -8.31055zM398.18 192c-7.95996 0 -14.0801 6.25 -15.0098 14.1602c-1.08984 9.32031 -3.22949 18.3301 -6.24023 26.9395c-2.55957 7.34082 -0.25 15.46 6.33984 19.5801\nl82.8105 51.7607c8.04004 5.01953 18.9902 2.16992 22.9297 -6.4502c10.7334 -23.498 20.791 -63.4902 22.4502 -89.2705c0.589844 -9.08984 -7.0498 -16.7197 -16.1504 -16.7197h-97.1299zM453.03 354.89c6.06934 -7.31934 3.84961 -18.4795 -4.2207 -23.5098\nl-82.9297 -51.8301c-6.50977 -4.06934 -14.6699 -2.62012 -20.1104 2.79004c-5.17969 5.15039 -10.7891 9.85059 -16.7891 14.0498c-6.28027 4.40039 -9.15039 12.1602 -6.30078 19.2803l36.3203 90.7998c3.54004 8.83008 14.1396 12.9902 22.4199 8.31055\nc22.8135 -12.8838 54.8945 -39.7148 71.6104 -59.8906zM496 160c8.83984 0 16 -7.16016 16 -16v-64c0 -8.83984 -7.16016 -16 -16 -16h-96c-8.83984 0 -16 7.16016 -16 16v64c0 8.83984 7.16016 16 16 16h96zM496 32c8.83984 0 16 -7.16016 16 -16v-64\nc0 -8.83984 -7.16016 -16 -16 -16h-96c-8.83984 0 -16 7.16016 -16 16v64c0 8.83984 7.16016 16 16 16h96zM240 270.38c5.23047 0.889648 10.5195 1.62012 16 1.62012s10.7695 -0.730469 16 -1.62012v-294.38c0 -4.41992 -3.58008 -8 -8 -8h-16c-4.41992 0 -8 3.58008 -8 8\nv294.38zM176 228.87c8.16016 12.2998 19.2197 22.3203 32 29.7695v-282.64c0 -4.41992 -3.58008 -8 -8 -8h-16c-4.41992 0 -8 3.58008 -8 8v252.87zM304 258.64c12.7803 -7.44922 23.8398 -17.4697 32 -29.7695v-252.87c0 -4.41992 -3.58008 -8 -8 -8h-16\nc-4.41992 0 -8 3.58008 -8 8v282.64z\" />\n    <glyph glyph-name=\"file-csv\" unicode=\"&#xf6dd;\" horiz-adv-x=\"384\" \nd=\"M224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136zM128 168v16c0 4.41992 -3.58008 8 -8 8h-8c-26.5098 0 -48 -21.4902 -48 -48v-32\nc0 -26.5098 21.4902 -48 48 -48h8c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-8c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h8c4.41992 0 8 3.58008 8 8zM172.27 64c23.3906 0 42.4004 17.3301 42.3906 38.6201\nc0 10.6602 -4.86035 20.9199 -13.3301 28.1396l-21.8896 18.7705c-1.37012 1.17969 -2.12012 2.54004 -2.12012 3.83984c0 3.12012 4.45996 6.62012 10.4102 6.62012h12.2695c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-12.25\nc-23.3896 0 -42.4102 -17.3203 -42.4102 -38.6201c0 -10.6602 4.86035 -20.9199 13.3301 -28.1396l21.8896 -18.7705c1.37012 -1.17969 2.12012 -2.54004 2.12012 -3.83984c0 -3.12012 -4.45996 -6.62012 -10.4102 -6.62012h-12.2695c-4.41992 0 -8 -3.58008 -8 -8v-16\nc0 -4.41992 3.58008 -8 8 -8h12.2695zM256 184c0 4.41992 -3.58008 8 -8 8h-16c-4.41992 0 -8 -3.58008 -8 -8v-20.7998c0 -35.4805 12.8799 -68.8906 36.2803 -94.0898c3.01953 -3.25 7.26953 -5.11035 11.7197 -5.11035s8.7002 1.86035 11.7197 5.11035\nc23.4004 25.1992 36.2803 58.6094 36.2803 94.0898v20.7998c0 4.41992 -3.58008 8 -8 8h-16c-4.41992 0 -8 -3.58008 -8 -8v-20.7998c0 -20.2705 -5.7002 -40.1807 -16 -56.8799c-10.2998 16.71 -16 36.6094 -16 56.8799v20.7998zM377 343c4.5 -4.5 7 -10.5996 7 -16.9004\nv-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7z\" />\n    <glyph glyph-name=\"fist-raised\" unicode=\"&#xf6de;\" horiz-adv-x=\"384\" \nd=\"M255.98 288h-48.0303c-5.62988 0 -10.9502 -1.15039 -15.9697 -2.92969v146.93c0 8.83984 7.15918 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-144zM383.98 192.01l0.0195312 -88.2197v-0.0107422c0 -21.9551 -12.5977 -52.373 -28.1201 -67.8994l-35.9102 -35.9199\nv-63.96h-255.979v64l-26.5 26.5098c-24.0098 24.0098 -37.4902 56.5605 -37.4902 90.5098v77.9307c5.03027 -1.7998 10.3604 -2.9502 16 -2.9502h32c12.3301 0 23.4805 4.80957 32 12.4902c8.50977 -7.66992 19.6602 -12.4805 32 -12.4805h32\nc7.91016 0 15.2803 2.11035 21.8701 5.52051c7.46973 -16.3301 21.5996 -28.9404 38.8701 -34.4502c-17.1104 -14.8203 -31.5801 -34.4805 -47.3105 -58.0801l-6.30957 -9.46973c-0.742188 -1.1123 -1.34375 -3.09961 -1.34375 -4.43652\nc0 -2.36328 1.59668 -5.34375 3.56348 -6.65332l13.3105 -8.88086c1.11133 -0.741211 3.09863 -1.34375 4.43555 -1.34375c2.36328 0 5.34473 1.59668 6.6543 3.56445l6.30957 9.46973c31.8906 47.8398 51.5303 70.2695 96.0498 72.5498\nc4.29004 0.219727 7.88086 3.70996 7.88086 8v16.2002c0 4.41992 -3.52051 8 -13.2002 8h-35.2607c-26.2695 0 -47.5693 21.3203 -47.5693 47.5898v0.560547c0 8.7793 7.12012 15.8496 15.8994 15.8496h112.141c35.3301 0 63.9795 -28.6504 63.9902 -63.9902zM351.97 282.1\nc-10.0596 3.59082 -20.7197 5.90039 -32 5.90039h-32v112c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-117.9zM16 224c-8.83984 0 -16 7.16016 -16 16v128c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-128\nc0 -8.83984 -7.16016 -16 -16 -16h-32zM111.99 224c-8.83984 0 -16 7.16016 -16 16v160c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-160c0 -8.83984 -7.16016 -16 -16 -16h-32z\" />\n    <glyph glyph-name=\"ghost\" unicode=\"&#xf6e2;\" horiz-adv-x=\"384\" \nd=\"M186.1 447.91c108.73 3.25977 197.9 -83.9102 197.9 -191.91v-271.97c0 -14.25 -17.2305 -21.3906 -27.3096 -11.3105l-24.9209 18.5303c-6.65918 4.95996 -16 3.99023 -21.5098 -2.20996l-42.9502 -48.3496c-6.25 -6.25 -16.3799 -6.25 -22.6299 0l-40.7197 45.8496\nc-6.36035 7.16992 -17.5498 7.16992 -23.9199 0l-40.7197 -45.8496c-6.25 -6.25 -16.3799 -6.25 -22.6299 0l-42.9502 48.3496c-5.50977 6.2002 -14.8506 7.16016 -21.5098 2.20996l-24.9209 -18.5303c-10.0791 -10.0801 -27.3096 -2.9502 -27.3096 11.3105v263.92\nc0 105.13 81.0098 196.81 186.1 199.96zM128 224c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM256 224c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z\" />\n    <glyph glyph-name=\"hammer\" unicode=\"&#xf6e3;\" horiz-adv-x=\"576\" \nd=\"M571.31 254.06c6.25 -6.25 6.25 -16.3799 0.0205078 -22.6191l-90.5098 -90.5107c-6.25 -6.25 -16.3799 -6.25 -22.6299 0l-22.6309 22.6299c-6.25 6.25 -6.25 16.3809 0 22.6309l11.3105 11.3096l-28.9004 28.9004\nc-21.3096 -5.63086 -44.8994 -0.360352 -61.6094 16.3496l-49.1406 49.1396c-12.0098 12 -18.75 28.2803 -18.75 45.25v18.75l-90.5098 45.25c62.4902 62.4805 163.8 62.4805 226.28 0l45.25 -45.25c16.71 -16.71 21.9795 -40.2998 16.3496 -61.6094l28.9004 -28.9004\nl11.3096 11.3105c6.25 6.25 16.3799 6.25 22.6299 0zM284.59 269.26l49.1406 -49.1396c3.53906 -3.54004 7.47949 -6.5 11.4395 -9.41016l-238.13 -255.07c-23.8799 -25.5801 -64.2002 -26.2695 -88.9297 -1.5293c-24.7305 24.7393 -24.04 65.0498 1.5293 88.9297\nl255.101 238.17c3.00977 -4.16016 6.14941 -8.25 9.84961 -11.9502z\" />\n    <glyph glyph-name=\"hanukiah\" unicode=\"&#xf6e6;\" horiz-adv-x=\"640\" \nd=\"M232 288h16c4.41992 0 8 -3.58008 8 -8v-120h-32v120c0 4.41992 3.58008 8 8 8zM168 288h16c4.41992 0 8 -3.58008 8 -8v-120h-32v120c0 4.41992 3.58008 8 8 8zM392 288h16c4.41992 0 8 -3.58008 8 -8v-120h-32v120c0 4.41992 3.58008 8 8 8zM456 288h16\nc4.41992 0 8 -3.58008 8 -8v-120h-32v120c0 4.41992 3.58008 8 8 8zM544 280v-120h-32v120c0 4.41992 3.58008 8 8 8h16c4.41992 0 8 -3.58008 8 -8zM104 288h16c4.41992 0 8 -3.58008 8 -8v-120h-32v120c0 4.41992 3.58008 8 8 8zM624 288c8.83984 0 16 -7.16016 16 -16\nv-112c0 -53.0195 -42.9805 -96 -96 -96h-192v-64h176c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-416c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h176v64h-192c-53.0195 0 -96 42.9805 -96 96v112c0 8.83984 7.16016 16 16 16\nh32c8.83984 0 16 -7.16016 16 -16v-112c0 -17.6699 14.3301 -32 32 -32h192v192c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-192h192c17.6699 0 32 14.3301 32 32v112c0 8.83984 7.16016 16 16 16h32zM608 320c-13.25 0 -24 11.9502 -24 26.6699\ns24 53.3301 24 53.3301s24 -38.5996 24 -53.3301c0 -14.7295 -10.75 -26.6699 -24 -26.6699zM32 320c-13.25 0 -24 11.9502 -24 26.6699s24 53.3301 24 53.3301s24 -38.5996 24 -53.3301c0 -14.7295 -10.75 -26.6699 -24 -26.6699zM320 368\nc-13.25 0 -24 11.9502 -24 26.6699s24 53.3301 24 53.3301s24 -38.5996 24 -53.3301c0 -14.7295 -10.75 -26.6699 -24 -26.6699zM112 320c-13.25 0 -24 11.9502 -24 26.6699s24 53.3301 24 53.3301s24 -38.5996 24 -53.3301c0 -14.7295 -10.75 -26.6699 -24 -26.6699z\nM176 320c-13.25 0 -24 11.9502 -24 26.6699s24 53.3301 24 53.3301s24 -38.5996 24 -53.3301c0 -14.7295 -10.75 -26.6699 -24 -26.6699zM240 320c-13.25 0 -24 11.9502 -24 26.6699s24 53.3301 24 53.3301s24 -38.5996 24 -53.3301\nc0 -14.7295 -10.75 -26.6699 -24 -26.6699zM400 320c-13.25 0 -24 11.9502 -24 26.6699s24 53.3301 24 53.3301s24 -38.5996 24 -53.3301c0 -14.7295 -10.75 -26.6699 -24 -26.6699zM464 320c-13.25 0 -24 11.9502 -24 26.6699s24 53.3301 24 53.3301\ns24 -38.5996 24 -53.3301c0 -14.7295 -10.75 -26.6699 -24 -26.6699zM528 320c-13.25 0 -24 11.9502 -24 26.6699s24 53.3301 24 53.3301s24 -38.5996 24 -53.3301c0 -14.7295 -10.75 -26.6699 -24 -26.6699z\" />\n    <glyph glyph-name=\"hat-wizard\" unicode=\"&#xf6e8;\" \nd=\"M496 0c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-480c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h480zM192 64l16 -32h-144l110.96 249.66c9.4043 21.1611 33.3545 47.6611 53.46 59.1494l187.58 107.19l-56.2998 -168.92\nc-1.81543 -5.43945 -3.28809 -14.5078 -3.28809 -20.2412c0 -7.25098 2.31934 -18.5449 5.17773 -25.209l86.4102 -201.63h-208l16 32l64 32l-64 32l-32 64l-32 -64l-64 -32zM256 288l-32 -16l32 -16l16 -32l16 32l32 16l-32 16l-16 32z\" />\n    <glyph glyph-name=\"hiking\" unicode=\"&#xf6ec;\" horiz-adv-x=\"384\" \nd=\"M80.9502 -24.2305l34.5596 138.221l52.7803 -52.7803l-25.2402 -100.97c-3.64941 -14.5303 -16.6895 -24.2305 -31.0195 -24.2305c-2.58008 0 -5.19043 0.290039 -7.7998 0.950195c-17.1406 4.28027 -27.5605 21.6504 -23.2803 38.8096zM95.8398 171.89\nc-2.18945 -8.41992 -11.0801 -13.54 -19.8701 -11.4395l-63.5596 15.25c-8.78027 2.10938 -14.1104 10.6396 -11.9199 19.0596l25.2695 98.1299c10.9707 42.1006 55.4404 67.6904 99.3203 57.1699c8.78027 -2.10938 14.1104 -10.6396 11.9199 -19.0596zM368 288\nc8.83984 0 16 -7.16016 15.9902 -16v-320.01c0 -8.83984 -7.16016 -16 -16 -16h-16c-8.83984 0 -16 7.16016 -16 16v240h-48c-8.48047 0 -16.6201 3.37988 -22.6201 9.37988l-22.4297 22.4297l-19.8906 -79.5693\nc-0.129883 -0.520508 -0.469727 -0.910156 -0.620117 -1.41016l46.8203 -46.8203c12.0898 -12.0898 18.75 -28.1602 18.75 -45.25v-82.75c0 -17.6699 -14.3301 -32 -32 -32s-32 14.3301 -32 32v82.75l-86.6201 86.6201c-5.17383 5.1748 -9.37402 15.3154 -9.37402 22.6338\nc0 2.17285 0.427734 5.64746 0.954102 7.75586l26.9199 107.721c6.56055 26.2197 30.0098 44.5195 57.0303 44.5195c15.7002 0 30.4697 -6.11035 41.5596 -17.2197l46.7803 -46.7803h34.75v16c0 8.83984 7.16016 16 16 16h16zM240 352c-26.5098 0 -48 21.4902 -48 48\ns21.4902 48 48 48s48 -21.4902 48 -48s-21.4902 -48 -48 -48z\" />\n    <glyph glyph-name=\"hippo\" unicode=\"&#xf6ed;\" horiz-adv-x=\"640\" \nd=\"M581.12 351.8c34.0898 -0.189453 58.8799 -33.6895 58.8799 -67.7803v-92.0195c0 -17.6699 -14.3301 -32 -32 -32v-32c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v32h-128v-176c0 -8.83984 -7.16016 -16 -16 -16h-64\nc-8.83984 0 -16 7.16016 -16 16v70.79c-32.3496 -14.3604 -70.7197 -22.79 -112 -22.79s-79.6504 8.42969 -112 22.79v-70.79c0 -8.83984 -7.16016 -16 -16 -16h-64c-8.83984 0 -16 7.16016 -16 16v240c0 88.3604 85.96 160 192 160\nc49.2402 0 94.0098 -15.5801 128 -40.9805v48.9805c0 13.2598 10.75 24 24 24h16c13.25 0 24 -10.7402 24 -24v-13.8799c10.0498 3.58008 20.7197 5.87988 32 5.87988c39.8301 0 73.9805 -24.2695 88.5195 -58.8203c24.1006 9.04004 48.9307 26.7705 76.6006 26.6201z\nM448 272c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16s-16 -7.16016 -16 -16s7.16016 -16 16 -16z\" />\n    <glyph glyph-name=\"horse\" unicode=\"&#xf6f0;\" horiz-adv-x=\"576\" \nd=\"M575.92 371.4l0.0605469 -77.71v-0.0292969c0 -11.9609 -9.01465 -25.2715 -20.1201 -29.7109l-32.5508 -13.0205c-15.4395 -6.17969 -33.04 0.5 -40.4893 15.3701l-18.9004 37.7002l-16 7.11035v-102.471c0.00976562 -0.219727 0.0800781 -0.419922 0.0800781 -0.639648\nc0 -30.4697 -12.2598 -58.0303 -32 -78.2197v-177.78c0 -8.83984 -7.16016 -16 -16 -16h-64c-8.83984 0 -16 7.16016 -16 16v150.4l-133.97 22.3301l-23.8398 -63.5908l26.3096 -105.26c2.53027 -10.0996 -5.11035 -19.8799 -15.5195 -19.8799h-65.9609h-0.000976562\nc-6.89453 0 -13.8428 5.42969 -15.5088 12.1201l-24.8496 99.4102c-1.05664 4.2207 -1.91406 11.1777 -1.91406 15.5293c0 6.40332 1.8252 16.4648 4.07422 22.46l25.7197 68.6006c-18.7002 17.5195 -30.54 42.2402 -30.54 69.8799\nc0 2.62988 0.570312 5.09961 0.780273 7.67969c-9.91016 -7.29004 -16.7803 -18.46 -16.7803 -31.6797v-56c0 -8.83984 -7.16016 -16 -16 -16h-16c-8.83984 0 -16 7.16016 -16 16v56c0 48.5303 39.4697 88 88 88v-1.11035c17.5996 20.1299 43.1602 33.1104 72 33.1104\nh159.92c0 70.6904 57.3105 128 128 128h119.98c5.05957 0 8.94922 -4.67969 7.92969 -9.63965c-2.67969 -13.1699 -11.1201 -23.8203 -22.1797 -30.6602c5.10938 -5.37988 9.90918 -10.4697 13.6895 -14.5c5.56055 -5.93066 8.57031 -13.6699 8.58008 -21.7998zM511.92 352\nc8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16s-16 -7.16016 -16 -16s7.16016 -16 16 -16z\" />\n    <glyph glyph-name=\"house-damage\" unicode=\"&#xf6f1;\" horiz-adv-x=\"576\" \nd=\"M288 333.04l218.74 -192.94c1.54004 -1.37988 3.55957 -2.04004 5.25977 -3.19922v-184.9c0 -8.83984 -7.16016 -16 -16 -16h-176.19l-39.9199 55.25l104.11 64l-148.05 136.78l60.1602 -119.221l-104.11 -64l37.2305 -72.8096h-149.23c-8.83984 0 -16 7.16016 -16 16\nv184.94c1.78027 1.20996 3.84961 1.88965 5.46973 3.34961zM570.69 211.72c6.5791 -5.89941 7.11914 -16.0195 1.21973 -22.5898l-21.4004 -23.8203c-5.91016 -6.56934 -16.0293 -7.10938 -22.5996 -1.20996l-229.32 202.271c-6.0498 5.33008 -15.1201 5.33008 -21.1699 0\nl-229.32 -202.28c-6.58008 -5.91016 -16.6992 -5.35938 -22.5996 1.20996l-21.4004 23.8203c-5.90918 6.58008 -5.35938 16.6895 1.20996 22.5996l255.99 226.011c7.60059 6.85938 17.1406 10.2793 26.7002 10.2695s19.1201 -3.4502 26.75 -10.3096l101.25 -89.3809v51.6904\nc0 8.83984 7.16016 16 16 16h64c8.83984 0 16 -7.16016 16 -16v-136.45z\" />\n    <glyph glyph-name=\"hryvnia\" unicode=\"&#xf6f2;\" horiz-adv-x=\"384\" \nd=\"M368 208h-99.7002l-34.6699 -32h134.37c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-203.7l-29.4902 -27.2197c-4.3291 -4 -6.80957 -9.66992 -6.80957 -15.5801c0 -11.6807 9.50977 -21.2002 21.2002 -21.2002h83.6299h0.00195312\nc4.79395 0 11.6748 2.49121 15.3584 5.55957l11.75 9.80078c10.1895 8.48926 25.3193 7.12012 33.8096 -3.07031l20.4902 -24.5898c8.49023 -10.1807 7.10938 -25.3105 -3.07031 -33.7998l-11.7695 -9.81055c-18.6807 -15.5596 -42.2207 -24.0898 -66.54 -24.0898h-78.8203\nc-37.1396 0 -73.3799 17.8496 -92.0498 49.9502c-17.8701 30.7197 -17.54 65.4199 -4.12988 94.0498h-41.8604c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h99.7002l34.6699 32h-134.37c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16\nh203.7l29.4902 27.21c4.3291 4 6.80957 9.66992 6.80957 15.5801c0 11.6797 -9.50977 21.2002 -21.2002 21.2002h-83.6201c-5.62012 0 -11.0693 -1.9707 -15.3896 -5.57031l-11.7305 -9.78027c-10.1895 -8.48926 -25.3193 -7.12012 -33.8096 3.07031l-20.4902 24.5898\nc-8.49023 10.1807 -7.10938 25.3105 3.07031 33.7998l11.7695 9.81055c18.6807 15.5596 42.2207 24.0898 66.54 24.0898h78.8203c37.1396 0 73.3799 -17.8398 92.0498 -49.9502c17.8701 -30.7197 17.54 -65.4199 4.12988 -94.0498h41.8604c8.83984 0 16 -7.16016 16 -16v-32\nc0 -8.83984 -7.16016 -16 -16 -16z\" />\n    <glyph glyph-name=\"mask\" unicode=\"&#xf6fa;\" horiz-adv-x=\"640\" \nd=\"M320.67 384c449.09 0 348.32 -384 158.46 -384c-39.8994 0 -77.4697 20.6904 -101.41 55.8604l-25.7295 37.79c-15.6602 22.9893 -46.9707 22.9893 -62.6299 0l-25.7305 -37.79c-23.9502 -35.1699 -61.5195 -55.8604 -101.42 -55.8604c-199.11 0 -284.14 384 158.46 384z\nM184 139.64c41.0596 0 67.7598 25.6504 80.0801 41.0508c5.22949 6.54004 5.22949 16.0996 0 22.6299c-12.3203 15.3896 -39.0098 41.0498 -80.0801 41.0498s-67.7598 -25.6504 -80.0801 -41.0498c-5.22949 -6.54004 -5.22949 -16.1006 0 -22.6299\nc12.3203 -15.3906 39.0205 -41.0508 80.0801 -41.0508zM456 139.64c41.0596 0 67.7598 25.6504 80.0801 41.0508c5.22949 6.54004 5.22949 16.0996 0 22.6299c-12.3203 15.3896 -39.0098 41.0498 -80.0801 41.0498s-67.7598 -25.6504 -80.0801 -41.0498\nc-5.22949 -6.54004 -5.22949 -16.1006 0 -22.6299c12.3203 -15.3906 39.0205 -41.0508 80.0801 -41.0508z\" />\n    <glyph glyph-name=\"mountain\" unicode=\"&#xf6fc;\" horiz-adv-x=\"640\" \nd=\"M634.92 -14.7002c2.80566 -4.3623 5.08301 -12.1133 5.08301 -17.3008c0 -4.50586 -1.75293 -11.374 -3.91309 -15.3291c-5.60938 -10.2803 -16.3799 -16.6699 -28.0898 -16.6699h-576h-0.00390625c-10.4795 0 -23.0615 7.46387 -28.0859 16.6602\nc-2.16016 3.95605 -3.91309 10.8262 -3.91309 15.334c0 5.18848 2.27734 12.9414 5.08301 17.3057l288 448c5.88965 9.16016 16.0303 14.7002 26.9199 14.7002s21.0303 -5.54004 26.9199 -14.7002zM320 356.82l-102.06 -158.761l38.0596 -38.0596l64 64h85.3896z\" />\n    <glyph glyph-name=\"network-wired\" unicode=\"&#xf6ff;\" horiz-adv-x=\"640\" \nd=\"M640 184c0 -8.83984 -7.16016 -16 -16 -16h-104v-40h56c17.6699 0 32 -14.3301 32 -32v-128c0 -17.6699 -14.3301 -32 -32 -32h-160c-17.6699 0 -32 14.3301 -32 32v128c0 17.6699 14.3301 32 32 32h56v40h-304v-40h56c17.6699 0 32 -14.3301 32 -32v-128\nc0 -17.6699 -14.3301 -32 -32 -32h-160c-17.6699 0 -32 14.3301 -32 32v128c0 17.6699 14.3301 32 32 32h56v40h-104c-8.83984 0 -16 7.16016 -16 16v16c0 8.83984 7.16016 16 16 16h280v40h-72c-17.6699 0 -32 14.3301 -32 32v128c0 17.6699 14.3301 32 32 32h192\nc17.6699 0 32 -14.3301 32 -32v-128c0 -17.6699 -14.3301 -32 -32 -32h-72v-40h280c8.83984 0 16 -7.16016 16 -16v-16zM256 320h128v64h-128v-64zM192 0v64h-96v-64h96zM544 0v64h-96v-64h96z\" />\n    <glyph glyph-name=\"otter\" unicode=\"&#xf700;\" horiz-adv-x=\"640\" \nd=\"M608 416c17.6699 0 32 -14.3301 32 -32v-32c0 -53.0195 -42.9805 -96 -96 -96h-22.8604l-92.4697 -49.79l55.1104 -110.21h28.2197c17.6699 0 32 -14.3301 32 -32v-16c0 -8.83984 -7.16016 -16 -16 -16h-80l-74.5098 144.5l-149.49 -80.5h64\nc17.6699 0 32 -14.3301 32 -32v-16c0 -8.83984 -7.16016 -16 -16 -16h-224c-8.83008 0 -16 -7.16992 -16 -16s7.16992 -16 16 -16h112c17.6699 0 32 -14.3301 32 -32s-14.3301 -32 -32 -32h-108.47c-39.3799 0 -75.5205 26.9004 -82.2803 65.7002\nc-4.91016 28.1201 5 54.2197 23.1904 71.7998c23.5596 22.75 39.5596 52.1396 39.5596 84.8896v1.61035c0 106.04 85.96 192 192 192h56l153.25 87.5703c9.66992 5.51953 20.6104 8.42969 31.75 8.42969h20.4902h0.0126953c14.6328 0 34.9033 -8.40039 45.2471 -18.75\nl13.25 -13.25h32zM512 400c-8.83984 0 -16 -7.16016 -16 -16s7.16016 -16 16 -16s16 7.16016 16 16s-7.16016 16 -16 16zM544 304c20.8301 0 38.4297 13.4199 45.0498 32h-77.0498l-118.57 -59.29l13.7705 -27.5498l101.84 54.8398h34.96z\" />\n    <glyph glyph-name=\"ring\" unicode=\"&#xf70b;\" \nd=\"M256 384c145.94 0 256 -61.9102 256 -144v-98.1299c0 -78.3506 -114.62 -141.87 -256 -141.87s-256 63.5195 -256 141.87v98.1299c0 82.0898 110.06 144 256 144zM256 320c-106.04 0 -192 -35.8203 -192 -80c0 -9.25977 3.96973 -18.1201 10.9102 -26.3896\nc44.9395 26.1797 108.859 42.3896 181.09 42.3896s136.15 -16.21 181.09 -42.3896c6.94043 8.26953 10.9102 17.1299 10.9102 26.3896c0 44.1797 -85.96 80 -192 80zM120.43 183.36c34.7305 -14.4307 82.6406 -23.3604 135.57 -23.3604s100.84 8.92969 135.57 23.3604\nc-34.6104 14.71 -81.21 24.6396 -135.57 24.6396s-100.96 -9.92969 -135.57 -24.6396z\" />\n    <glyph glyph-name=\"running\" unicode=\"&#xf70c;\" horiz-adv-x=\"416\" \nd=\"M272 352c-26.5098 0 -48 21.4902 -48 48s21.4902 48 48 48s48 -21.4902 48 -48s-21.4902 -48 -48 -48zM113.69 130.53c7.92969 -17.2402 20.6699 -32.3799 37.9893 -42.6104l10.6699 -6.2998l-8.79004 -20.5205c-7.5293 -17.6494 -24.8594 -29.0898 -44.1094 -29.0898\nh-77.4502c-17.6699 0 -32 14.3301 -32 32s14.3301 32 32 32h66.8896zM384 224.01c17.6699 0 32 -14.3193 32 -31.9902c0 -17.6699 -14.3301 -32 -32 -32h-53.9902c-18.1895 0 -35.1094 10.5508 -43.1094 26.8906l-20.2705 41.4297l-31.3096 -78.2803l61.2393 -36.1396\nc18.75 -11.3096 27.5508 -33.6201 21.6406 -54.3896l-31.6406 -101.061c-4.29004 -13.6797 -16.9092 -22.4502 -30.5195 -22.4502c-3.16992 0 -6.38965 0.480469 -9.58008 1.48047c-16.8604 5.28027 -26.25 23.2305 -20.9697 40.0898l27.4697 87.7305l-84.9795 50.1699\nc-27.6104 16.2998 -38.9209 50.8301 -26.3008 80.3096l37.46 87.3906l-14.6992 4.36914c-7.83008 1.86035 -17.6006 -0.25 -25.2705 -6.13965l-39.6895 -30.4102c-14.0205 -10.7402 -34.0908 -8.10938 -44.8604 5.91992c-10.7705 14.0303 -8.11035 34.1104 5.91992 44.8604\nl39.6699 30.4102c23.0703 17.6895 52.54 23.9395 80.8398 17.1396l71.0801 -21.1396c26.3301 -6.70996 49.2803 -25.3906 61.7803 -50.9404l26.0596 -53.25h44.0303z\" />\n    <glyph glyph-name=\"scroll\" unicode=\"&#xf70e;\" horiz-adv-x=\"640\" \nd=\"M48 448c26.4697 0 48 -21.5303 48 -48v-80h-80c-8.83984 0 -16 7.16016 -16 16v64c0 26.4697 21.5303 48 48 48zM256 35.4297c0 -31.8896 -21.7803 -61.4297 -53.25 -66.5498c-40.0996 -6.53027 -74.75 24.25 -74.75 63.1201v368c0 18.0801 -6.25977 34.5898 -16.4102 48\nh336.41c52.9404 0 96 -43.0596 96 -96v-256h-288v-60.5703zM288 64h336c8.83984 0 16 -7.16016 16 -16c0 -61.8604 -50.1396 -112 -112 -112h-336c52.9404 0 96 43.0703 96 96v32z\" />\n    <glyph glyph-name=\"skull-crossbones\" unicode=\"&#xf714;\" horiz-adv-x=\"448\" \nd=\"M439.15 -5.05957c7.89941 -3.9502 11.1094 -13.5605 7.15918 -21.4707l-14.3096 -28.6299c-3.95996 -7.89941 -13.5703 -11.0996 -21.4697 -7.14941l-186.53 90.7197l-186.52 -90.7197c-7.91016 -3.95996 -17.5205 -0.75 -21.4707 7.14941l-14.3096 28.6299\nc-3.95996 7.91016 -0.75 17.5205 7.14941 21.4707l141.98 69.0596l-141.99 69.0596c-7.89941 3.9502 -11.0996 13.5605 -7.14941 21.46l14.3096 28.6309c3.95996 7.90918 13.5703 11.1094 21.4697 7.15918l186.53 -90.7197l186.53 90.7197\nc7.91016 3.9502 17.5195 0.740234 21.4697 -7.15918l14.3096 -28.6309c3.95996 -7.89941 0.75 -17.5098 -7.14941 -21.46l-141.99 -69.0596zM150 210.72c-41.7803 22.4102 -70 62.75 -70 109.28c0 70.6904 64.4697 128 144 128s144 -57.3096 144 -128\nc0 -46.5303 -28.2197 -86.8701 -70 -109.28l5.5 -25.8701c2.66992 -12.6191 -5.41992 -24.8496 -16.4502 -24.8496h-126.08c-11.0293 0 -19.1201 12.2305 -16.4502 24.8496zM280 336c-17.6504 0 -32 -14.3496 -32 -32s14.3496 -32 32 -32s32 14.3496 32 32\ns-14.3496 32 -32 32zM168 336c-17.6504 0 -32 -14.3496 -32 -32s14.3496 -32 32 -32s32 14.3496 32 32s-14.3496 32 -32 32z\" />\n    <glyph glyph-name=\"slash\" unicode=\"&#xf715;\" horiz-adv-x=\"640\" \nd=\"M594.53 -60.6299l-588.351 454.729c-6.96973 5.41992 -8.22949 15.4707 -2.80957 22.4502l19.6396 25.2705c5.41992 6.97949 15.4805 8.23926 22.46 2.80957l588.351 -454.729c6.96973 -5.41992 8.22949 -15.4707 2.80957 -22.4502l-19.6396 -25.2705\nc-5.41992 -6.97949 -15.4805 -8.22949 -22.46 -2.80957z\" />\n    <glyph glyph-name=\"spider\" unicode=\"&#xf717;\" horiz-adv-x=\"576\" \nd=\"M151.17 280.65l-27.1504 54.2998c-1.86035 3.72949 -3.37109 10.1387 -3.37109 14.3066c0 2.86719 0.735352 7.40234 1.6416 10.123l25.8896 77.6797c2.79004 8.39062 11.8604 12.9209 20.2402 10.1201l15.1699 -5.05957\nc8.39062 -2.7998 12.9102 -11.8604 10.1201 -20.2402l-23.7998 -71.3896l20.29 -40.5801c-1.41016 -4.20996 -2.49023 -8.20996 -3.20996 -11.79l-5.2207 -26.1201h-4.66992zM573.31 98.6201c4.90039 -7.35059 2.9209 -17.2803 -4.43945 -22.1797l-13.3105 -8.88086\nc-7.34961 -4.89941 -17.29 -2.90918 -22.1895 4.44043l-48 72h-47.0605l60.8301 -97.3301c3.16992 -5.08008 4.86035 -10.96 4.86035 -16.96v-77.71c0 -8.83984 -7.16016 -16 -16 -16h-16c-8.83984 0 -16 7.16016 -16 16v73.1104l-74.0801 118.529\nc1 -14.0498 2.08008 -28.1094 2.08008 -42.21c0 -53.0693 -40.7598 -101.43 -96 -101.43s-96 48.3604 -96 101.43c0 14.1006 1.07031 28.1602 2.08008 42.21l-74.0801 -118.529v-73.1104c0 -8.83984 -7.16016 -16 -16 -16h-16c-8.83984 0 -16 7.16016 -16 16v77.7002\nv0.00976562c0 5.0625 2.17773 12.6562 4.86035 16.9502l60.8301 97.3301h-47.0605l-48 -72c-4.89941 -7.35059 -14.8398 -9.33984 -22.1895 -4.44043l-13.3105 8.87988c-7.36035 4.90039 -9.33984 14.8398 -4.43945 22.1904l52.7393 79.1299\nc5.24707 7.86426 17.1768 14.248 26.6299 14.25h77.9404l-68.9902 24.3496c-5.75 1.91895 -13.1465 7.56738 -16.5098 12.6104l-53.5996 80.4102c-4.90039 7.36035 -2.91016 17.29 4.43945 22.1895l13.3105 8.88086c7.35938 4.89941 17.29 2.90918 22.1895 -4.44043\nl50.5703 -75.8301l60.4902 -20.1699h36.0996l10.3701 51.8496c2.18945 10.9707 17.3701 60.1504 69.6299 60.1504s67.4404 -49.1797 69.6299 -60.1504l10.3701 -51.8496h36.0996l60.5 20.1699l50.5605 75.8301c4.89941 7.34961 14.8398 9.33984 22.1895 4.44043\nl13.3105 -8.88086c7.34961 -4.89941 9.33984 -14.8398 4.43945 -22.1895l-53.5996 -80.4102c-3.36328 -5.04297 -10.7598 -10.6914 -16.5098 -12.6104l-68.9902 -24.3594h77.9404c9.45117 -0.00195312 21.377 -6.38672 26.6191 -14.25zM406.09 350.49l-23.7998 71.3896\nc-2.79004 8.37988 1.74023 17.4404 10.1201 20.2402l15.1699 5.05957c8.37988 2.80078 17.4502 -1.73926 20.2402 -10.1201l25.8896 -77.6797c0.908203 -2.72168 1.64551 -7.25781 1.64551 -10.127c0 -4.16699 -1.5127 -10.5752 -3.375 -14.3027l-27.1504 -54.2998\nl-25.9297 -8.65039h-4.66992l-5.2207 26.1201c-0.719727 3.58008 -1.7998 7.58008 -3.20996 11.79z\" />\n    <glyph glyph-name=\"toilet-paper\" unicode=\"&#xf71e;\" horiz-adv-x=\"576\" \nd=\"M128 448h284.44c-36.7705 -38.4805 -60.4404 -108.4 -60.4404 -192v-172.07c0 -53.6494 -11.8799 -87.5693 -24.71 -126.05c-4.36035 -13.0703 -16.5898 -21.8799 -30.3604 -21.8799h-280.92c-10.9199 0 -18.6299 10.7002 -15.1797 21.0596\nc21.3701 64.1006 31.1699 85.75 31.1699 126.87v172.07c0 106.04 42.9805 192 96 192zM96 224c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16s-16 -7.16016 -16 -16s7.16016 -16 16 -16zM160 224c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16s-16 -7.16016 -16 -16\ns7.16016 -16 16 -16zM224 224c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16s-16 -7.16016 -16 -16s7.16016 -16 16 -16zM288 224c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16s-16 -7.16016 -16 -16s7.16016 -16 16 -16zM480 448c53.0195 0 96 -85.96 96 -192\ns-42.9805 -192 -96 -192s-96 85.96 -96 192s42.9805 192 96 192zM480 192c17.6699 0 32 28.6504 32 64s-14.3301 64 -32 64s-32 -28.6504 -32 -64s14.3301 -64 32 -64z\" />\n    <glyph glyph-name=\"tractor\" unicode=\"&#xf722;\" horiz-adv-x=\"640\" \nd=\"M528 112c48.5996 0 88 -39.4004 88 -88s-39.4004 -88 -88 -88s-88 39.4004 -88 88s39.4004 88 88 88zM528 0c13.2305 0 24 10.7695 24 24s-10.7695 24 -24 24s-24 -10.7695 -24 -24s10.7695 -24 24 -24zM608 288c17.6699 0 32 -14.3301 31.9902 -32v-50.7598\nc0 -8.49023 -3.37012 -16.6299 -9.37012 -22.6299l-50.8203 -50.8203c-15.7295 7.58984 -33.1602 12.2002 -51.7998 12.2002c-39.1396 0 -73.5498 -19.0098 -95.46 -48h-80.54v-6c0 -12.1504 -9.84961 -22 -22 -22h-7.16016\nc-2.9502 -9.90039 -6.91992 -19.46 -11.9102 -28.7207l5.06055 -5.05957c8.58984 -8.58984 8.58984 -22.5195 0 -31.1104l-31.1104 -31.1094c-8.58984 -8.58984 -22.5195 -8.58984 -31.1104 0l-5.05957 5.05957c-9.25977 -4.99023 -18.8203 -8.95996 -28.7197 -11.9102\nv-7.13965c0 -12.1504 -9.85059 -22 -22 -22h-44c-12.1504 0 -22 9.84961 -22 22v7.15039c-9.90039 2.94922 -19.46 6.91992 -28.7207 11.9092l-5.05957 -5.05957c-8.58984 -8.58984 -22.5195 -8.58984 -31.1104 0l-31.1094 31.1104\nc-8.58984 8.58984 -8.58984 22.5195 0 31.1094l5.05957 5.06055c-4.99023 9.26953 -8.9502 18.8193 -11.9102 28.7295h-7.13965c-12.1504 0 -22 9.85059 -22 22v44c0 12.1504 9.84961 22 22 22h7.15039c2.94922 9.90039 6.91992 19.46 11.9092 28.7207l-5.05957 5.05957\nc-8.58984 8.58984 -8.58984 22.5195 0 31.1104l31.1104 31.1094c7.92969 7.93066 20.2598 8.2002 28.8896 1.4707v146.52c0 26.4697 21.5303 48 48 48h133.45h0.046875c17.4834 0 37.2324 -13.0547 44.083 -29.1396l56.0898 -130.86h102.33v40.2002\nc0 29.9902 10.5801 58.8994 29.5 81.7197c6.37988 7.7002 18.04 8.23047 24.7002 0.780273l21.6299 -24.1699c4.87012 -5.43066 5.74023 -13.6904 1.32031 -19.4902c-8.4502 -11.0801 -13.1504 -24.7197 -13.1504 -38.8398v-40.2002h64zM176 32c44.1797 0 80 35.8203 80 80\ns-35.8203 80 -80 80s-80 -35.8203 -80 -80s35.8203 -80 80 -80zM198 288h110.04l-41.1504 96h-106.89v-96h38z\" />\n    <glyph glyph-name=\"user-injured\" unicode=\"&#xf728;\" horiz-adv-x=\"448\" \nd=\"M277.37 436.02l-90.6904 -68.0195h-81.1895c19.0098 46.8701 64.8193 80 118.51 80c19.1104 0 37.0801 -4.46973 53.3701 -11.9805zM342.51 368h-102.52l66.0293 49.5195c15.8203 -13.3193 28.5908 -30.0498 36.4902 -49.5195zM224 192c-70.6904 0 -128 57.3096 -128 128\nc0 5.48047 0.94043 10.7002 1.61035 16h252.779c0.660156 -5.2998 1.61035 -10.5195 1.61035 -16c0 -70.6904 -57.3096 -128 -128 -128zM80 148.3c7.92676 3.51758 21.2812 7.64844 29.8096 9.21973l98.4502 -221.52h-128.26v212.3zM0 -16v41.5996\nc0 41.1406 18.8799 77.5107 48 102.16v-191.76c-26.5098 0 -48 21.4902 -48 48zM256 32c26.4697 0 48 -21.5303 48 -48s-21.5303 -48 -48 -48h-12.71l-42.6699 96h55.3799zM313.6 160c74.2305 0 134.4 -60.1699 134.4 -134.4v-41.5996c0 -26.5098 -21.4902 -48 -48 -48\nh-80.4102c10.1504 13.4102 16.4102 29.9199 16.4102 48c0 44.1104 -35.8896 80 -80 80h-69.5898l-42.6699 96h7.37012c22.2393 -10.1797 46.8799 -16 72.8896 -16s50.6504 5.82031 72.8896 16h16.71z\" />\n    <glyph glyph-name=\"vr-cardboard\" unicode=\"&#xf729;\" horiz-adv-x=\"640\" \nd=\"M608 384c17.6699 0 32 -14.3301 32 -32v-320c0 -17.6699 -14.3301 -32 -32 -32h-160.22c-25.1807 0 -48.0303 14.7695 -58.3604 37.7402l-27.7402 61.6396c-7.88965 17.54 -24.0293 28.6201 -41.6797 28.6201s-33.79 -11.0801 -41.6797 -28.6201l-27.7402 -61.6396\nc-10.3301 -22.9707 -33.1699 -37.7402 -58.3604 -37.7402h-160.22c-17.6699 0 -32 14.3301 -32 32v320c0 17.6699 14.3301 32 32 32h576zM160 144c35.3496 0 64 28.6504 64 64s-28.6504 64 -64 64s-64 -28.6504 -64 -64s28.6504 -64 64 -64zM480 144\nc35.3496 0 64 28.6504 64 64s-28.6504 64 -64 64s-64 -28.6504 -64 -64s28.6504 -64 64 -64z\" />\n    <glyph glyph-name=\"wind\" unicode=\"&#xf72e;\" \nd=\"M156.7 192c48.7002 0 92.2998 -35 98.3994 -83.4004c7.5 -58.5 -38.0996 -108.6 -95.1992 -108.6c-46.6006 0 -85.6006 33.5 -94.2002 77.5996c-1.7998 9.60059 6.09961 18.4004 15.8994 18.4004h32.8008c6.59961 0 13.0996 -3.7998 15.1992 -10.0996\nc4.30078 -12.7002 16.3008 -21.9004 30.4004 -21.9004c19.5 0 34.9004 17.4004 31.5996 37.4004c-2.59961 15.6992 -17.5 26.5996 -33.3994 26.5996h-142.2c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h140.7zM16 224c-8.7998 0 -16 7.2002 -16 16v32\nc0 8.7998 7.2002 16 16 16h334.2c16 0 30.7998 10.9004 33.3994 26.5996c3.30078 20 -12.1992 37.4004 -31.5996 37.4004c-14.0996 0 -26.0996 -9.2002 -30.4004 -21.9004c-2.09961 -6.2998 -8.5 -10.0996 -15.1992 -10.0996h-32.8008\nc-9.69922 0 -17.6992 8.7002 -15.7998 18.2998c9.7998 50.6006 59.5 87.1006 114.9 75.5c36.2002 -7.59961 65.5 -36.8994 73.0996 -73.0996c13 -61.9004 -34.0996 -116.7 -93.7998 -116.7h-336zM400 192c70.5 0 126 -65.5 108.9 -138.7\nc-9.60059 -41.0996 -43.5 -74 -84.7002 -82.7002c-58.9004 -12.5 -111.601 21.7002 -129.4 72.3008c-3.7002 10.2998 4.40039 21.0996 15.2998 21.0996h33.8008c5.7998 0 11.5996 -2.59961 14.5 -7.59961c8.2998 -14.5 23.6992 -24.4004 41.5996 -24.4004\nc26.5 0 48 21.5 48 48s-21.5 48 -48 48h-116.5c-6.59961 25.2002 -20.5 47.4004 -39.7998 64h156.3z\" />\n    <glyph glyph-name=\"wine-bottle\" unicode=\"&#xf72f;\" \nd=\"M507.31 375.43c6.25 -6.25 6.25 -16.3799 0.0107422 -22.6201l-22.6299 -22.6299c-6.25 -6.25 -16.3809 -6.25 -22.6309 0l-76.6699 -76.6699c19.7002 -46.5801 10.7305 -102.41 -27.2295 -140.37l-158.391 -158.39c-24.9893 -24.9902 -65.5195 -24.9902 -90.5098 0\nl-90.5098 90.5098c-24.9902 24.9902 -24.9902 65.5205 0 90.5098l158.38 158.381c37.9697 37.96 93.79 46.9297 140.37 27.2295l76.6699 76.6699c-6.25 6.25 -6.25 16.3799 0 22.6299l22.6299 22.6299c6.25 6.25 16.3799 6.25 22.6299 0zM179.22 24.71l122.04 122.04\nl-90.5098 90.5098l-122.04 -122.04z\" />\n    <glyph glyph-name=\"cloud-meatball\" unicode=\"&#xf73b;\" \nd=\"M48 96c26.5 0 48 -21.5 48 -48s-21.5 -48 -48 -48s-48 21.5 -48 48s21.5 48 48 48zM464 96c26.5 0 48 -21.5 48 -48s-21.5 -48 -48 -48s-48 21.5 -48 48s21.5 48 48 48zM345 84.9004c13.5 -7 23 -20.7002 23 -36.9004s-9.5 -29.9004 -23 -36.9004\nc4.59961 -14.5 1.7002 -30.7998 -9.7998 -42.2998c-8.2002 -8.2002 -18.9004 -12.2998 -29.7002 -12.2998c-4.2998 0 -8.5 1.2002 -12.5996 2.5c-7 -13.5 -20.7002 -23 -36.9004 -23s-29.9004 9.5 -36.9004 23c-4.09961 -1.40039 -8.2998 -2.5 -12.5996 -2.5\nc-10.7998 0 -21.5 4.09961 -29.7002 12.2998c-11.5 11.5 -14.5 27.7998 -9.89941 42.2998c-13.5 7 -23 20.7002 -23 36.9004s9.5 29.9004 23 36.9004c-4.5 14.5 -1.60059 30.7998 9.89941 42.2998s27.7998 14.5 42.2998 9.89941c7 13.5 20.7002 23 36.9004 23\ns29.9004 -9.5 36.9004 -23c14.5 4.5 30.7998 1.60059 42.2998 -9.89941c11.3994 -11.5 14.3994 -27.7998 9.7998 -42.2998zM512 224c0 -53 -43 -96 -96 -96h-43.4004c-3.5 8 -8.39941 15.4004 -14.7998 21.7998c-13.5 13.5 -31.5 21.1006 -50.7998 21.2998\nc-13.5 13.2002 -31.7002 20.9004 -51 20.9004s-37.5 -7.7002 -51 -20.9004c-19.2998 -0.199219 -37.2998 -7.7998 -50.7998 -21.2998c-6.40039 -6.39941 -11.2002 -13.7998 -14.7998 -21.7998h-43.4004c-53 0 -96 43 -96 96c0 42.5 27.7998 78.2002 66.0996 90.7998\nc-1.2998 6.90039 -2.09961 13.9004 -2.09961 21.2002c0 61.9004 50.0996 112 112 112c43.2998 0 80.4004 -24.7998 99 -60.7998c14.7002 17.5 36.4004 28.7998 61 28.7998c44.2002 0 80 -35.7998 80 -80c0 -5.59961 -0.5 -11 -1.59961 -16.2002\nc0.5 0 1 0.200195 1.59961 0.200195c53 0 96 -43 96 -96z\" />\n    <glyph glyph-name=\"cloud-moon-rain\" unicode=\"&#xf73c;\" horiz-adv-x=\"576\" \nd=\"M350.5 222.5c37.2998 -6.7998 65.5 -39.2998 65.5 -78.5c0 -44.2002 -35.7998 -80 -80 -80h-256c-44.2002 0 -80 35.7998 -80 80c0 38.7998 27.5996 71.0996 64.2002 78.4004c0 0.5 -0.200195 1.09961 -0.200195 1.59961c0 53 43 96 96 96\nc32.0996 0 60.2998 -15.9004 77.7002 -40c10.3994 5 22 8 34.2998 8c39.2002 0 71.5996 -28.2998 78.5 -65.5zM567.9 224.2c6.19922 1.2002 10.5996 -6 6.39941 -10.7998c-27 -33.1006 -67.8994 -53.3008 -112.6 -53.3008c-5.2002 0 -10.1006 1 -15.2002 1.5\nc-6.2002 39.4004 -33.0996 72.5 -70.2002 86.8008c-10.7002 27.8994 -32.2002 49.7998 -58.8994 61.6992c3.2998 76.7002 66.5 137.9 144.399 137.9c8.90039 0 17.7998 -0.799805 26.5 -2.40039c6.2002 -1.09961 7.60059 -9.39941 2.10059 -12.5\nc-35.6006 -20.0996 -57.5 -57.5 -57.5 -98.0996c0 -70.5 64.5996 -124.1 135 -110.8zM364.5 29.9004c7.7002 -4.40039 10.2998 -14.1006 6 -21.8008l-36.5996 -64c-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961c-2.7002 0 -5.40039 0.700195 -7.90039 2.09961\nc-7.69922 4.40039 -10.3994 14.1006 -6 21.8008l36.6006 64c4.39941 7.7998 14.2002 10.2998 21.7998 6zM268.5 29.9004c7.7002 -4.40039 10.2998 -14.1006 6 -21.8008l-36.5996 -64c-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961\nc-2.7002 0 -5.40039 0.700195 -7.90039 2.09961c-7.69922 4.40039 -10.3994 14.1006 -6 21.8008l36.6006 64c4.39941 7.7998 14.2002 10.2998 21.7998 6zM172.5 29.9004c7.7002 -4.40039 10.2998 -14.1006 6 -21.8008l-36.5996 -64\nc-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961c-2.7002 0 -5.40039 0.700195 -7.90039 2.09961c-7.69922 4.40039 -10.3994 14.1006 -6 21.8008l36.6006 64c4.39941 7.7998 14.2002 10.2998 21.7998 6zM76.5 29.9004c7.7002 -4.40039 10.2998 -14.1006 6 -21.8008\nl-36.5996 -64c-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961c-2.7002 0 -5.40039 0.700195 -7.90039 2.09961c-7.69922 4.40039 -10.3994 14.1006 -6 21.8008l36.6006 64c4.39941 7.7998 14.2002 10.2998 21.7998 6z\" />\n    <glyph glyph-name=\"cloud-rain\" unicode=\"&#xf73d;\" \nd=\"M416 320c53 0 96 -43 96 -96s-43 -96 -96 -96h-320c-53 0 -96 43 -96 96c0 42.5 27.7998 78.2002 66.0996 90.7998c-1.2998 6.90039 -2.09961 13.9004 -2.09961 21.2002c0 61.9004 50.0996 112 112 112c43.2998 0 80.4004 -24.7998 99 -60.7998\nc14.7002 17.5 36.4004 28.7998 61 28.7998c44.2002 0 80 -35.7998 80 -80c0 -5.59961 -0.5 -11 -1.59961 -16.2002c0.5 0 1 0.200195 1.59961 0.200195zM88 73.7998c2.5 8.5 13.7998 8.10059 16 0c12.7998 -44.5996 40 -56.2998 40 -87.7002\nc0 -27.6992 -21.5 -50.0996 -48 -50.0996s-48 22.4004 -48 50.0996c0 31.3008 27.2002 43.3008 40 87.7002zM248 73.7998c2.5 8.5 13.7998 8.10059 16 0c12.7998 -44.5996 40 -56.2998 40 -87.7002c0 -27.6992 -21.5 -50.0996 -48 -50.0996s-48 22.4004 -48 50.0996\nc0 31.3008 27.2002 43.3008 40 87.7002zM408 73.7998c2.5 8.5 13.7998 8.10059 16 0c12.7998 -44.5996 40 -56.2998 40 -87.7002c0 -27.6992 -21.5 -50.0996 -48 -50.0996s-48 22.4004 -48 50.0996c0 31.3008 27.2002 43.3008 40 87.7002z\" />\n    <glyph glyph-name=\"cloud-showers-heavy\" unicode=\"&#xf740;\" \nd=\"M183.9 77.9004c7.69922 -4.40039 10.3994 -14.2002 6 -21.8008l-64 -112c-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961c-2.7002 0 -5.40039 0.700195 -7.90039 2.09961c-7.69922 4.30078 -10.3994 14.1006 -6 21.8008l64 112\nc4.40039 7.7998 14.2002 10.3994 21.8008 6zM279.9 77.9004c7.69922 -4.40039 10.3994 -14.2002 6 -21.8008l-64 -112c-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961c-2.7002 0 -5.40039 0.700195 -7.90039 2.09961c-7.69922 4.30078 -10.3994 14.1006 -6 21.8008\nl64 112c4.40039 7.7998 14.2002 10.3994 21.8008 6zM87.9004 77.9004c7.69922 -4.40039 10.3994 -14.2002 6 -21.8008l-64 -112c-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961c-2.7002 0 -5.40039 0.700195 -7.90039 2.09961\nc-7.69922 4.30078 -10.3994 14.1006 -6 21.8008l64 112c4.40039 7.7998 14.2002 10.3994 21.8008 6zM471.9 77.9004c7.69922 -4.40039 10.3994 -14.2002 6 -21.8008l-64 -112c-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961\nc-2.7002 0 -5.40039 0.700195 -7.90039 2.09961c-7.69922 4.30078 -10.3994 14.1006 -6 21.8008l64 112c4.40039 7.7998 14.2002 10.3994 21.8008 6zM375.9 77.9004c7.69922 -4.40039 10.3994 -14.2002 6 -21.8008l-64 -112\nc-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961c-2.7002 0 -5.40039 0.700195 -7.90039 2.09961c-7.69922 4.30078 -10.3994 14.1006 -6 21.8008l64 112c4.40039 7.7998 14.2002 10.3994 21.8008 6zM416 320c53 0 96 -43 96 -96s-43 -96 -96 -96h-320\nc-53 0 -96 43 -96 96c0 42.5 27.7998 78.2002 66.0996 90.7998c-1.2998 6.90039 -2.09961 13.9004 -2.09961 21.2002c0 61.9004 50.2002 112 112 112c43.2998 0 80.4004 -24.7998 99 -60.7998c14.7002 17.5 36.4004 28.7998 61 28.7998c44.2002 0 80 -35.7998 80 -80\nc0 -5.59961 -0.5 -11 -1.59961 -16.2002c0.5 0 1 0.200195 1.59961 0.200195z\" />\n    <glyph glyph-name=\"cloud-sun-rain\" unicode=\"&#xf743;\" horiz-adv-x=\"576\" \nd=\"M510.5 222.5c37.2998 -6.7998 65.5 -39.2998 65.5 -78.5c0 -44.2002 -35.7998 -80 -80 -80h-256c-44.2002 0 -80 35.7998 -80 80c0 38.7998 27.5996 71 64.2002 78.4004c0 0.5 -0.200195 1.09961 -0.200195 1.59961c0 53 43 96 96 96\nc32.0996 0 60.2998 -15.9004 77.7002 -40c10.3994 5 22 8 34.2998 8c39.2002 0 71.5996 -28.2998 78.5 -65.5zM124.1 188.1c3.10059 -3.09961 6.60059 -5.59961 10.2002 -8.2998c-3.89941 -11.3994 -6.2002 -23.3994 -6.2002 -35.8994c0 -2.5 0.5 -4.80078 0.700195 -7.2002\nl-59.2002 -19.7002c-10.1992 -3.2998 -19.8994 6.2998 -16.5 16.5l25.1006 75.2998l-71 35.5c-9.60059 4.7998 -9.60059 18.5 0 23.2998l71 35.5l-25.1006 75.3008c-3.39941 10.1992 6.2002 19.8994 16.4004 16.5l75.2998 -25.1006l35.5 71\nc4.7998 9.60059 18.5 9.60059 23.2998 0l35.5 -71l75.3008 25.1006c10.1992 3.39941 19.8994 -6.2002 16.5 -16.4004l-8.90039 -26.7002c-0.700195 0 -1.2998 0.200195 -2 0.200195c-25.5996 0 -49.2002 -7.7998 -69.2002 -20.7002\nc-37.5996 29.4004 -92.0996 27.2002 -126.7 -7.39941c-37.3994 -37.5 -37.3994 -98.4004 0 -135.801zM193.9 246.1c-18.2002 -8.2998 -33.5 -21.2998 -44.8008 -37.1992c-12.8994 11.6992 -21.0996 28.3994 -21.0996 47.0996c0 35.2998 28.7002 64 64 64\nc12.4004 0 24 -3.7002 33.7998 -9.90039c-16.0996 -17.5996 -27.5996 -39.5 -31.8994 -64zM524.5 29.9004c7.7002 -4.40039 10.2998 -14.1006 6 -21.8008l-36.5996 -64c-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961c-2.7002 0 -5.40039 0.700195 -7.90039 2.09961\nc-7.69922 4.40039 -10.3994 14.1006 -6 21.8008l36.6006 64c4.39941 7.7998 14.2002 10.2998 21.7998 6zM428.5 29.9004c7.7002 -4.40039 10.2998 -14.1006 6 -21.8008l-36.5996 -64c-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961\nc-2.7002 0 -5.40039 0.700195 -7.90039 2.09961c-7.69922 4.40039 -10.3994 14.1006 -6 21.8008l36.6006 64c4.39941 7.7998 14.2002 10.2998 21.7998 6zM332.5 29.9004c7.7002 -4.40039 10.2998 -14.1006 6 -21.8008l-36.5996 -64\nc-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961c-2.7002 0 -5.40039 0.700195 -7.90039 2.09961c-7.69922 4.40039 -10.3994 14.1006 -6 21.8008l36.6006 64c4.39941 7.7998 14.2002 10.2998 21.7998 6zM236.5 29.9004c7.7002 -4.40039 10.2998 -14.1006 6 -21.8008\nl-36.5996 -64c-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961c-2.7002 0 -5.40039 0.700195 -7.90039 2.09961c-7.69922 4.40039 -10.3994 14.1006 -6 21.8008l36.6006 64c4.39941 7.7998 14.2002 10.2998 21.7998 6z\" />\n    <glyph glyph-name=\"democrat\" unicode=\"&#xf747;\" horiz-adv-x=\"640\" \nd=\"M637.3 191.1c4.90039 -7.39941 2.90039 -17.2998 -4.39941 -22.2998l-26.6006 -17.7002c-7.39941 -4.89941 -17.2998 -3 -22.2002 4.40039c-21.7998 32.7002 -23.8994 38.0996 -40.0996 50.2998v-77.7998h-352l-54 108l-38.0996 -34.5996\nc-6 -6 -14.1006 -9.40039 -22.6006 -9.40039h-31c-12.0996 0 -23.2002 6.90039 -28.5996 17.7002l-14.2998 28.5996c-5.40039 10.7998 -4.30078 23.7998 3 33.5l74.5996 99.2998c1.7002 2.30078 4.2002 3.7002 6.40039 5.40039c-4 2.2002 -8 4.2002 -11.3008 7.5\nc-16.3994 16.4004 -18.3994 41.7998 -6.09961 60.4004c2.7998 4.19922 8.7998 4.7998 12.4004 1.19922l42.8994 -42.7998l41.7998 41.7998c4.40039 4.40039 11.8008 3.7002 15.2002 -1.5c15.1006 -22.7998 12.6006 -53.7998 -7.5 -73.8994l81.2002 -81.2002h235.6\nc50.8008 0 97.9004 -25.2002 126.101 -67.5zM296.2 204.7c3 2.89941 1.39941 7.89941 -2.60059 8.5l-22.7998 3.2998l-10.2002 20.7002c-1.89941 3.7002 -7.19922 3.7002 -9 0l-10.1992 -20.7002l-22.8008 -3.2998c-4.09961 -0.600586 -5.7998 -5.60059 -2.7998 -8.5\nl16.5 -16.1006l-3.89941 -22.6992c-0.700195 -4.10059 3.59961 -7.2002 7.19922 -5.30078l20.4004 10.7002l20.4004 -10.7002c3.59961 -1.89941 7.89941 1.2002 7.19922 5.30078l-3.89941 22.6992zM408.2 204.7c3 2.89941 1.39941 7.89941 -2.60059 8.5l-22.7998 3.2998\nl-10.2002 20.7002c-1.89941 3.7002 -7.19922 3.7002 -9 0l-10.1992 -20.7002l-22.8008 -3.2998c-4.09961 -0.600586 -5.7998 -5.60059 -2.7998 -8.5l16.5 -16.1006l-3.89941 -22.6992c-0.700195 -4.10059 3.59961 -7.2002 7.19922 -5.30078l20.4004 10.7002\nl20.4004 -10.7002c3.59961 -1.89941 7.89941 1.2002 7.19922 5.30078l-3.89941 22.6992zM520.2 204.7c3 2.89941 1.39941 7.89941 -2.60059 8.5l-22.7998 3.2998l-10.2002 20.7002c-1.89941 3.7002 -7.19922 3.7002 -9 0l-10.1992 -20.7002l-22.8008 -3.2998\nc-4.09961 -0.600586 -5.7998 -5.60059 -2.7998 -8.5l16.5 -16.1006l-3.89941 -22.6992c-0.700195 -4.10059 3.59961 -7.2002 7.19922 -5.30078l20.4004 10.7002l20.4004 -10.7002c3.59961 -1.89941 7.89941 1.2002 7.19922 5.30078l-3.89941 22.6992zM192 -48v144h352v-144\nc0 -8.7998 -7.2002 -16 -16 -16h-64c-8.7998 0 -16 7.2002 -16 16v80h-160v-80c0 -8.7998 -7.2002 -16 -16 -16h-64c-8.7998 0 -16 7.2002 -16 16z\" />\n    <glyph glyph-name=\"flag-usa\" unicode=\"&#xf74d;\" \nd=\"M32 448c17.7002 0 32 -14.2998 32 -32v-464c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v464c0 17.7002 14.2998 32 32 32zM299.9 144.4c31.0996 -8.2002 62.5996 -16.5 100 -16.6006c31.8994 0 68.5 6.7998 112.1 24.1006v-36\nc0 -12.3008 -7.09961 -23.8008 -18.5 -28.8008c-175.8 -76.3994 -211.8 69.1006 -397.5 -23.0996v69.2998c92.2002 39.9004 146.7 26.2002 203.9 11.1006zM299.9 240.4c31.0996 -8.2002 62.5996 -16.5 100 -16.5c31.8994 0 68.5 6.7998 112.1 24.0996v-61.5\nc-92.2002 -39.9004 -146.7 -26.2002 -203.9 -11.0996c-57.5 15.0996 -117.3 30 -212.1 -7.60059v61.5c92.2002 39.9004 146.7 26.2002 203.9 11.1006zM309.4 366.3c-7 2.10059 -14.1006 4.2002 -21.3008 6.2002v-33.2002c4 -1.09961 8.10059 -2.2998 12.1006 -3.5\nc26.7002 -8.09961 52.8994 -15.8994 85.7002 -15.8994c32.7998 0 72.5 7.89941 126.1 31.3994v-68.8994c-92.2002 -39.8008 -146.7 -26.1006 -203.9 -11.1006c-57.5 15.1006 -117.3 29.9004 -212.1 -7.59961v151.899c209.4 94.6006 195.3 -59.0996 366.6 28.2002\nc22.6006 11.5 49.4004 -1.5 49.4004 -26.5996v-30.7998c-105.2 -49.1006 -150.8 -35.7002 -202.6 -20.1006zM160 319.9c8.7998 0 16 7.09961 16 16c0 8.89941 -7.2002 16 -16 16s-16 -7.2002 -16 -16c0 -8.90039 7.2002 -16 16 -16zM160 375.7c8.7998 0 16 7.2002 16 16\nc0 8.89941 -7.2002 16 -16 16s-16 -7.2002 -16 -16c0 -8.90039 7.2002 -16 16 -16zM224 327.8c8.7998 0 16 7.2002 16 16c0 8.90039 -7.2002 16 -16 16s-16 -7.2002 -16 -16c0 -8.89941 7.2002 -16 16 -16zM224 383.7c8.7998 0 16 7.2002 16 16c0 8.89941 -7.2002 16 -16 16\ns-16 -7.2002 -16 -16c0 -8.90039 7.2002 -16 16 -16z\" />\n    <glyph glyph-name=\"meteor\" unicode=\"&#xf753;\" \nd=\"M491.2 447.3c12.3994 3.7002 23.7998 -7.7002 20.2002 -20.0996c-11.6006 -38.7002 -34.3008 -111.7 -61.3008 -187.7c7 -2.09961 13.4004 -4 18.6006 -5.59961c9.7002 -3 14.2002 -13.9004 9.5 -22.9004c-22.1006 -42.2998 -82.7002 -152.8 -142.5 -214.4\nc-1 -1.09961 -2 -2.5 -3 -3.5c-38.1006 -38.0996 -88 -57.0996 -137.9 -57.0996c-49.8994 -0.0996094 -99.7998 19 -137.8 57c-38 38.0996 -57 88 -57 137.8c0 49.9004 19 99.7998 57.0996 137.8c1 1 2.40039 2 3.5 3c61.6006 59.9004 172 120.4 214.4 142.5\nc9 4.7002 19.9004 0.200195 22.9004 -9.5c1.59961 -5.09961 3.5 -11.5996 5.59961 -18.5996c75.9004 27 149 49.7002 187.7 61.2998zM192 0c70.7002 0 128 57.2998 128 128s-57.2998 128 -128 128s-128 -57.2998 -128 -128s57.2998 -128 128 -128zM160 192\nc17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32zM208 96c8.7998 0 16 -7.2002 16 -16s-7.2002 -16 -16 -16s-16 7.2002 -16 16s7.2002 16 16 16z\" />\n    <glyph glyph-name=\"person-booth\" unicode=\"&#xf756;\" horiz-adv-x=\"576\" \nd=\"M192 -48v176h64v-176c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16zM224 224c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32h-57.5c-12.7998 0 -24.7998 5 -33.9004 14.0996l-20.8994 20.9004v-80.5996l41.2002 -61.3008\nc4.39941 -8.7998 6.69922 -18.6992 6.69922 -28.5996v-56.5c0 -17.7002 -14.2998 -32 -32 -32c-17.6992 0 -32 14.2998 -32 32v56l-29.0996 43c-0.900391 0.400391 -1.59961 1.2002 -2.5 1.7002l-0.0996094 -100.7c0 -17.7002 -14.4004 -32 -32 -32\nc-17.6006 0 -31.9004 14.2998 -31.9004 32l0.200195 160l-0.200195 95.9004c0 17.0996 6.7002 33.1992 18.7002 45.2998c12.0996 12.0996 28.2002 18.7998 45.2998 18.7998h18.7002c17 0 33.0996 -6.59961 45.2002 -18.7002l45.1992 -45.2998h50.9004zM64 320\nc-26.5 0 -48 21.5 -48 48s21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48zM288 416v32h192v-416c0 -17.7002 -14.2998 -32 -32 -32s-32 14.2998 -32 32c0 -17.7002 -14.2998 -32 -32 -32c-17.0996 0 -30.7998 13.5 -31.7002 30.4004\nc-4.2998 -21.3008 -17.0996 -30.4004 -32.2998 -30.4004c-18.4004 0 -35.7002 16.7002 -31.4004 38.2998l30.9004 154.601zM192 416c0 17.7002 14.2998 32 32 32h32v-192h-64v160zM544 448c17.7002 0 32 -14.2998 32 -32v-464c0 -8.7998 -7.2002 -16 -16 -16h-32\nc-8.7998 0 -16 7.2002 -16 16v496h32z\" />\n    <glyph glyph-name=\"poo-storm\" unicode=\"&#xf75a;\" horiz-adv-x=\"448\" \nd=\"M308 112c9.2002 0 15 -10 10.4004 -18l-88 -152c-2.2002 -3.7998 -6.2002 -6 -10.4004 -6c-7.7002 0 -13.5 7.2002 -11.7002 14.7998l23 97.2002h-59.2998c-7.2998 0 -12.9004 6.40039 -11.9004 13.5996l16 120c0.800781 5.90039 5.90039 10.4004 11.9004 10.4004h68\nc7.90039 0 13.5996 -7.5 11.5996 -15.0996l-17.2998 -64.9004h57.7002zM374.4 223.3c41 -3.2998 73.5996 -37.5 73.5 -79.2998c0 -44 -36 -80 -80 -80h-30l8.09961 14c7.7998 13.5 7.7998 30.4004 0 44s-22.4004 22 -38.0996 22h-16l6.59961 24.7002\nc3.59961 13.2998 0.799805 27.2002 -7.59961 38.0996c-8.40039 10.9004 -21.1006 17.2002 -34.9004 17.2002h-68c-22 0 -40.7002 -16.4004 -43.7002 -38.2002l-16 -120c0 -0.599609 0.100586 -1.2002 0 -1.7998h-48.2998c-44 0 -80 36 -80 80\nc0 41.7998 32.5996 76 73.5996 79.2998c-5.89941 9.60059 -9.59961 20.6006 -9.59961 32.7002c0 35.2998 28.7002 64 64 64h16c44.2002 0 80 35.7998 80 80c0 17.4004 -5.7002 33.4004 -15.0996 46.5c4.89941 0.799805 9.89941 1.5 15.0996 1.5c53 0 96 -43 96 -96\nc0 -11.2998 -2.2998 -21.9004 -5.90039 -32h5.90039c35.2998 0 64 -28.7002 64 -64c0 -12.0996 -3.7002 -23.0996 -9.59961 -32.7002z\" />\n    <glyph glyph-name=\"rainbow\" unicode=\"&#xf75b;\" horiz-adv-x=\"576\" \nd=\"M268.3 415.3c167.7 11.2998 307.7 -122 307.7 -287.3v-144c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v136.2c0 113.8 -81.5996 215.399 -194.5 229.899c-136.6 17.6006 -253.5 -88.8994 -253.5 -222.1v-144c0 -8.7998 -7.2002 -16 -16 -16h-32\nc-8.7998 0 -16 7.2002 -16 16v133.8c0 153.3 115.4 287.3 268.3 297.5zM262.7 318.4c117.1 15 217.3 -76.2002 217.3 -190.4v-144c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v138.3c0 66.9004 -48.7002 126.601 -115.2 133.101\nc-76.2998 7.39941 -140.8 -52.6006 -140.8 -127.4v-144c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v137.3c0 97.6006 70 184.7 166.7 197.101zM268.9 222.1c61.2998 11.9004 115.1 -34.8994 115.1 -94.0996v-144c0 -8.7998 -7.2002 -16 -16 -16h-32\nc-8.7998 0 -16 7.2002 -16 16v144c0 17.5996 -14.2998 32 -32 32s-32 -14.4004 -32 -32v-144c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v140.2c0 46.3994 31.2998 89 76.9004 97.8994z\" />\n    <glyph glyph-name=\"republican\" unicode=\"&#xf75e;\" horiz-adv-x=\"640\" \nd=\"M544 256v-64h-544v64c0 88.4004 71.5996 160 160 160h224c88.4004 0 160 -71.5996 160 -160zM176.3 277.6c3.5 3.5 1.60059 9.5 -3.39941 10.2002l-27.4004 4l-12.2002 24.7998c-2.09961 4.40039 -8.5 4.5 -10.7002 0l-12.1992 -24.7998l-27.4004 -4\nc-4.90039 -0.700195 -6.90039 -6.7002 -3.2998 -10.2002l19.7998 -19.2998l-4.7002 -27.2998c-0.799805 -4.90039 4.40039 -8.59961 8.7002 -6.2998l24.5 12.8994l24.5 -12.8994c4.40039 -2.2998 9.5 1.39941 8.7002 6.2998l-4.7002 27.2998zM320.3 277.6\nc3.5 3.5 1.60059 9.5 -3.39941 10.2002l-27.4004 4l-12.2002 24.7998c-2.09961 4.40039 -8.5 4.5 -10.7002 0l-12.1992 -24.7998l-27.4004 -4c-4.90039 -0.700195 -6.90039 -6.7002 -3.2998 -10.2002l19.7998 -19.2998l-4.7002 -27.2998\nc-0.799805 -4.90039 4.40039 -8.59961 8.7002 -6.2998l24.5 12.8994l24.5 -12.8994c4.40039 -2.2998 9.5 1.39941 8.7002 6.2998l-4.7002 27.2998zM464.3 277.6c3.5 3.5 1.60059 9.5 -3.39941 10.2002l-27.4004 4l-12.2002 24.7998c-2.09961 4.40039 -8.5 4.5 -10.7002 0\nl-12.1992 -24.7998l-27.4004 -4c-4.90039 -0.700195 -6.90039 -6.7002 -3.2998 -10.2002l19.7998 -19.2998l-4.7002 -27.2998c-0.799805 -4.90039 4.40039 -8.59961 8.7002 -6.2998l24.5 12.8994l24.5 -12.8994c4.40039 -2.2998 9.5 1.39941 8.7002 6.2998l-4.7002 27.2998z\nM624 128c8.7998 0 16 -7.2002 16 -16v-64c0 -46.9004 -40.5996 -84.5 -88.4004 -79.5996c-41.5996 4.19922 -71.5996 42.5 -71.5996 84.2998v43.2998h-32v-112c0 -8.7998 -7.2002 -16 -16 -16h-96c-8.7998 0 -16 7.2002 -16 16v80h-192v-80c0 -8.7998 -7.2002 -16 -16 -16\nh-96c-8.7998 0 -16 7.2002 -16 16v176h544v-112c0 -8.7998 7.2002 -16 16 -16s16 7.2002 16 16v64c0 8.7998 7.2002 16 16 16h32z\" />\n    <glyph glyph-name=\"smog\" unicode=\"&#xf75f;\" horiz-adv-x=\"640\" \nd=\"M624 80c8.7998 0 16 -7.2002 16 -16v-16c0 -8.7998 -7.2002 -16 -16 -16h-544c-8.7998 0 -16 7.2002 -16 16v16c0 8.7998 7.2002 16 16 16h544zM144 -16c8.7998 0 16 -7.2002 16 -16v-16c0 -8.7998 -7.2002 -16 -16 -16h-128c-8.7998 0 -16 7.2002 -16 16v16\nc0 8.7998 7.2002 16 16 16h128zM560 -16c8.7998 0 16 -7.2002 16 -16v-16c0 -8.7998 -7.2002 -16 -16 -16h-336c-8.7998 0 -16 7.2002 -16 16v16c0 8.7998 7.2002 16 16 16h336zM144 160c-79.5 0 -144 64.5 -144 144s64.5 144 144 144c41 0 77.7998 -17.2998 104 -44.7998\nc26.2002 27.5 63 44.7998 104 44.7998c54.7998 0 102 -31 126.3 -76.0996c15 7.5 31.7002 12.0996 49.7002 12.0996c61.9004 0 112 -50.0996 112 -112s-50.0996 -112 -112 -112h-60.0996c-22.6006 -19.7002 -51.6006 -32 -83.9004 -32s-61.4004 12.2998 -83.9004 32h-156.1z\n\" />\n    <glyph glyph-name=\"temperature-high\" unicode=\"&#xf769;\" \nd=\"M416 448c52.9004 0 96 -43.0996 96 -96s-43.0996 -96 -96 -96s-96 43.0996 -96 96s43.0996 96 96 96zM416 320c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM256 336v-166.5c19.7002 -24.5996 32 -55.5 32 -89.5\nc0 -79.5 -64.5 -144 -144 -144s-144 64.5 -144 144c0 34 12.2998 64.7998 32 89.5v166.5c0 61.9004 50.0996 112 112 112s112 -50.0996 112 -112zM144 0c44.0996 0 80 35.9004 80 80c0 25.5 -12.2002 49 -32 63.7998v192.2c0 26.5 -21.5 48 -48 48s-48 -21.5 -48 -48v-192.2\nc-19.7998 -14.8994 -32 -38.2998 -32 -63.7998c0 -44.0996 35.9004 -80 80 -80zM160 125.1c18.5996 -6.59961 32 -24.1992 32 -45.0996c0 -26.5 -21.5 -48 -48 -48s-48 21.5 -48 48c0 20.9004 13.4004 38.5 32 45.0996v210.9c0 8.7998 7.2002 16 16 16s16 -7.2002 16 -16\nv-210.9z\" />\n    <glyph glyph-name=\"temperature-low\" unicode=\"&#xf76b;\" \nd=\"M416 448c52.9004 0 96 -43.0996 96 -96s-43.0996 -96 -96 -96s-96 43.0996 -96 96s43.0996 96 96 96zM416 320c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM256 336v-166.5c19.7002 -24.5996 32 -55.5 32 -89.5\nc0 -79.5 -64.5 -144 -144 -144s-144 64.5 -144 144c0 34 12.2998 64.7998 32 89.5v166.5c0 61.9004 50.0996 112 112 112s112 -50.0996 112 -112zM144 0c44.0996 0 80 35.9004 80 80c0 25.5 -12.2002 49 -32 63.7998v192.2c0 26.5 -21.5 48 -48 48s-48 -21.5 -48 -48v-192.2\nc-19.7998 -14.8994 -32 -38.2998 -32 -63.7998c0 -44.0996 35.9004 -80 80 -80zM160 125.1c18.5996 -6.59961 32 -24.1992 32 -45.0996c0 -26.5 -21.5 -48 -48 -48s-48 21.5 -48 48c0 20.9004 13.4004 38.5 32 45.0996v18.9004c0 8.7998 7.2002 16 16 16s16 -7.2002 16 -16\nv-18.9004z\" />\n    <glyph glyph-name=\"vote-yea\" unicode=\"&#xf772;\" horiz-adv-x=\"640\" \nd=\"M608 128c17.7002 0 32 -14.2998 32 -32v-96c0 -17.7002 -14.2998 -32 -32 -32h-576c-17.7002 0 -32 14.2998 -32 32v96c0 17.7002 14.2998 32 32 32h64v-64h-22.4004c-5.2998 0 -9.59961 -3.59961 -9.59961 -8v-16c0 -4.40039 4.2998 -8 9.59961 -8h492.801\nc5.2998 0 9.59961 3.59961 9.59961 8v16c0 4.40039 -4.2998 8 -9.59961 8h-22.4004v64h64zM512 64h-384v319.7c0 17.7998 14.5 32.2998 32.4004 32.2998h319.3c17.7998 0 32.2998 -14.4004 32.2998 -32.2998v-319.7zM211.2 246c-4.2002 -4.2002 -4.2998 -11 0 -15.2002\nl74.0996 -74.7002c4.2002 -4.2998 11 -4.2998 15.2002 -0.0996094l128.3 127.2c4.2998 4.2002 4.2998 11 0.100586 15.2002l-25.3008 25.5c-4.19922 4.2998 -11 4.2998 -15.1992 0.0996094l-95.2002 -94.4004l-41.2998 41.6006\nc-4.2002 4.2998 -11 4.2998 -15.2002 0.0996094z\" />\n    <glyph glyph-name=\"water\" unicode=\"&#xf773;\" horiz-adv-x=\"576\" \nd=\"M562.1 64.0996c8.10059 -0.899414 13.9004 -8.2998 13.8008 -16.2998v-31.5996c0 -9.10059 -7.60059 -16.7998 -16.7002 -16c-28.2002 2.5 -55.7998 11.5996 -79.1006 25.7998c-55 -34.0996 -135.5 -34.5996 -192 0c-55 -34.0996 -135.5 -34.5996 -192 0\nc-23.2998 -14.5 -50.5996 -23.4004 -79.3994 -25.9004c-9.10059 -0.799805 -16.7002 6.90039 -16.7002 16v32.2002c0 7.90039 5.7002 14.9004 13.5996 15.7002c21.7002 2.2998 42.2002 10.2002 57.7002 22.4004c13.7998 10.8994 33.6006 13.1992 47.1006 2\nc38.2998 -31.7002 107.199 -31.8008 145.199 -1.7002c13.7002 10.8994 33.2002 13 46.7002 1.7998c38.5 -31.9004 107.8 -31.9004 145.7 -1.5c14 11.2998 34.0996 11.0996 48.2002 0c15.7998 -12.4004 36.3994 -20.5 57.8994 -22.9004zM562.1 208.1\nc8.10059 -0.899414 13.9004 -8.2998 13.8008 -16.2998v-31.5996c0 -9.10059 -7.60059 -16.7998 -16.7002 -16c-28.2002 2.5 -55.7998 11.5996 -79.1006 25.7998c-55 -34.0996 -135.5 -34.5996 -192 0c-55 -34.0996 -135.5 -34.5996 -192 0\nc-23.2998 -14.5 -50.5996 -23.4004 -79.3994 -25.9004c-9.10059 -0.799805 -16.7002 6.90039 -16.7002 16v32.2002c0 7.90039 5.7002 14.9004 13.5996 15.7002c21.7002 2.2998 42.2002 10.2002 57.7002 22.4004c13.7998 10.8994 33.6006 13.1992 47.1006 2\nc38.2998 -31.7002 107.199 -31.8008 145.199 -1.7002c13.7002 10.8994 33.2002 13 46.7002 1.7998c38.5 -31.9004 107.8 -31.9004 145.7 -1.5c14 11.2998 34.0996 11.0996 48.2002 0c15.7998 -12.4004 36.3994 -20.5 57.8994 -22.9004zM562.1 352.1\nc8.10059 -0.899414 13.9004 -8.2998 13.8008 -16.2998v-31.5996c0 -9.10059 -7.60059 -16.7998 -16.7002 -16c-28.2002 2.5 -55.7998 11.5996 -79.1006 25.7998c-55 -34.0996 -135.5 -34.5996 -192 0c-55 -34.0996 -135.5 -34.5996 -192 0\nc-23.2998 -14.5 -50.5996 -23.4004 -79.3994 -25.9004c-9.10059 -0.799805 -16.7002 6.90039 -16.7002 16v32.2002c0 7.90039 5.7002 14.9004 13.5996 15.7002c21.7002 2.2998 42.2002 10.2002 57.7002 22.4004c13.7998 10.8994 33.6006 13.1992 47.1006 2\nc38.2998 -31.7002 107.199 -31.8008 145.199 -1.7002c13.7002 10.8994 33.2002 13 46.7002 1.7998c38.5 -31.9004 107.8 -31.9004 145.7 -1.5c14 11.2998 34.0996 11.0996 48.2002 0c15.7998 -12.4004 36.3994 -20.4004 57.8994 -22.9004z\" />\n    <glyph glyph-name=\"baby\" unicode=\"&#xf77c;\" horiz-adv-x=\"384\" \nd=\"M192 288c-44.2002 0 -80 35.7998 -80 80s35.7998 80 80 80s80 -35.7998 80 -80s-35.7998 -80 -80 -80zM138.6 39.2002l29.4004 -39.2002c13.2002 -17.7002 9.7002 -42.7998 -8 -56c-7.2002 -5.40039 -15.7002 -8 -24 -8c-12.0996 0 -24.0996 5.5 -32 16l-48 64\nc-10.9004 14.5996 -10.5996 34.7998 0.799805 49l45.9004 57.4004l61.5 -51.2002zM281.3 122.4l45.9004 -57.4004c11.3994 -14.2002 11.7002 -34.4004 0.799805 -49l-48 -64c-7.7998 -10.5 -19.7998 -16 -32 -16c-8.40039 0 -16.7998 2.59961 -24 8\nc-17.7002 13.2002 -21.2002 38.2998 -8 56l29.4004 39.2002l-25.6006 32zM376.7 303c12.7002 -18.0996 8.39941 -43 -9.7002 -55.7998l-40.5996 -28.5c-17 -11.9004 -35.4004 -20.9004 -54.4004 -27.9004v-30.7998h-160v30.9004c-19 7 -37.4004 16 -54.4004 27.8994\nl-40.5996 28.5c-18 12.7002 -22.4004 37.6006 -9.7002 55.7002c12.7002 18 37.6006 22.4004 55.7002 9.7002l40.5996 -28.4004c52.6006 -37 124.101 -37 176.801 0l40.5996 28.5c18.0996 12.6006 43 8.2998 55.7002 -9.7998z\" />\n    <glyph glyph-name=\"baby-carriage\" unicode=\"&#xf77d;\" \nd=\"M144.8 431l111.2 -175h-256c0 74 35.2998 140.1 90.7998 184.4c16.7998 13.3994 42.7002 8.39941 54 -9.40039zM496 352c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-48v-64c0 -50.5996 -23 -96.4004 -60.2998 -130.7\nc34.5996 -8.89941 60.2998 -40 60.2998 -77.2998c0 -44.2002 -35.7998 -80 -80 -80s-80 35.7998 -80 80c0 8.90039 1.7002 17.2002 4.40039 25.2002c-21.5 -5.90039 -44.6006 -9.2002 -68.4004 -9.2002s-46.7998 3.2998 -68.4004 9.2002\nc2.60059 -8 4.40039 -16.2998 4.40039 -25.2002c0 -44.2002 -35.7998 -80 -80 -80s-80 35.7998 -80 80c0 37.2998 25.7002 68.4004 60.2998 77.2998c-37.2998 34.2998 -60.2998 80.1006 -60.2998 130.7h384v64c0 35.2998 28.7002 64 64 64h48zM80 -16\nc17.5996 0 32 14.4004 32 32s-14.4004 32 -32 32s-32 -14.4004 -32 -32s14.4004 -32 32 -32zM400 16c0 17.5996 -14.4004 32 -32 32s-32 -14.4004 -32 -32s14.4004 -32 32 -32s32 14.4004 32 32z\" />\n    <glyph glyph-name=\"biohazard\" unicode=\"&#xf780;\" horiz-adv-x=\"576\" \nd=\"M287.9 336c-18.5 0 -36 -3.7998 -52.5 -9.5c-13.3008 10.2998 -23.6006 24.2998 -29.5 40.7002c25.1992 10.8994 53 16.8994 82.0996 16.8994c29.2002 0 57 -6.09961 82.2002 -17c-5.90039 -16.3994 -16.2002 -30.3994 -29.5 -40.6992\nc-16.6006 5.7998 -34.2002 9.59961 -52.7998 9.59961zM163.6 9.2998c-47.5 35.5 -79.1992 90.7002 -83.2998 153.5c7.2998 2.10059 14.9004 3.10059 22.5 3.10059c9.2002 0 17.9004 -1.80078 26.4004 -4.60059c4.09961 -44.2998 26 -83.2002 58.8994 -109.6\nc-4.09961 -16 -12.5 -30.6006 -24.5 -42.4004zM387.8 51.9004c32.7002 26.3994 54.6006 65.0996 58.7002 109.3c8.59961 2.7998 17.4004 4.7002 26.5996 4.7002c7.5 0 15 -1 22.2002 -3c-3.89941 -62.8008 -35.5996 -118 -83 -153.5c-12 11.7998 -20.3994 26.5 -24.5 42.5z\nM501.3 256.9c34.6006 -20.4004 61 -53.3008 74.1006 -92.4004c1.2998 -3.7002 -0.200195 -7.7998 -3.5 -9.7998c-3.30078 -2 -7.5 -1.2998 -10 1.59961c-9.40039 10.7998 -19 19 -29.2002 25.1006c-57.2998 33.8994 -130.8 13.6992 -163.9 -45\nc-33.0996 -58.7002 -13.3994 -134 43.9004 -167.9c10.2002 -6.09961 21.8994 -10.5 35.7998 -13.4004c3.7998 -0.799805 6.40039 -4.19922 6.40039 -8.09961c-0.100586 -4 -2.7002 -7.2998 -6.5 -8c-39.7002 -7.7998 -80.6006 -0.799805 -115.2 19.7002\nc-18 10.5996 -32.9004 24.5 -45.2998 40.0996c-12.4004 -15.5996 -27.3008 -29.5 -45.3008 -40.0996c-34.5996 -20.5 -75.5 -27.5 -115.199 -19.7002c-3.80078 0.700195 -6.40039 4 -6.5 8c0 3.90039 2.69922 7.2998 6.39941 8.09961\nc13.7998 3 25.6006 7.30078 35.7998 13.4004c57.3008 33.9004 77 109.2 43.9004 167.9c-33.0996 58.6992 -106.6 78.8994 -163.9 45c-10.1992 -6 -19.7998 -14.3008 -29.1992 -25.1006c-2.5 -2.89941 -6.7002 -3.59961 -10 -1.59961\nc-3.30078 2.09961 -4.80078 6.09961 -3.5 9.7998c13.2998 39.0996 39.6992 71.9004 74.2998 92.4004c17.5996 10.3994 36.3994 16.5996 55.2998 19.8994c-6.09961 17.7002 -10 36.4004 -10 56.2002c0 41 14.5996 80.7998 41 112.2c2.5 3 6.59961 3.7002 10 1.7998\nc3.2998 -1.90039 4.7998 -6 3.59961 -9.7002c-4.39941 -13.7998 -6.59961 -26.3994 -6.59961 -38.5c0 -67.7998 53.7998 -122.899 120 -122.899s120 55.0996 120 122.899c0 12.2002 -2.09961 24.7002 -6.59961 38.5c-1.2002 3.7002 0.299805 7.7998 3.59961 9.7002\nc3.40039 1.90039 7.5 1.2002 10 -1.7998c26.5 -31.4004 41 -71.2002 41 -112.2c0 -19.7998 -4 -38.5 -10 -56.2002c19 -3.2998 37.7002 -9.5 55.2998 -19.8994zM287.9 127.9c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48z\" />\n    <glyph glyph-name=\"blog\" unicode=\"&#xf781;\" \nd=\"M172.2 221.2c75.5 -15 129.899 -89.2998 112.5 -172.2c-11.4004 -54.2998 -55.2998 -98.2998 -109.7 -109.7c-92.9004 -19.5 -175 51.2002 -175 140.7v248c0 13.2998 10.7002 24 24 24h48c13.2998 0 24 -10.7002 24 -24v-248c0 -26.5 21.5 -48 48 -48s48 21.5 48 48\nc0 20.5996 -13.0996 38.2002 -31.2998 45c-9.60059 3.59961 -16.7002 11.7998 -16.7002 22v50.4004c0 14.8994 13.5996 26.6992 28.2002 23.7998zM209 448c163.2 -8.59961 294.4 -139.8 302.9 -303c0.5 -9.2002 -6.80078 -17 -16 -17h-32.1006\nc-8.39941 0 -15.3994 6.59961 -15.8994 15c-7.5 129.5 -111.5 234.5 -240.9 241.5c-8.40039 0.400391 -15 7.40039 -15 15.9004v31.5996c0 9.2002 7.7998 16.5 17 16zM209.3 352c110.101 -8.5 198.2 -96.5996 206.601 -206.7\nc0.699219 -9.2998 -6.80078 -17.2998 -16.1006 -17.2998h-32.2002c-8.2998 0 -15.0996 6.40039 -15.8994 14.7002c-6.90039 77 -68.1006 138.899 -144.9 145.2c-8.2998 0.599609 -14.7998 7.5 -14.7998 15.8994v32.1006c0 9.39941 8 16.7998 17.2998 16.0996z\" />\n    <glyph glyph-name=\"calendar-day\" unicode=\"&#xf783;\" horiz-adv-x=\"448\" \nd=\"M0 -16v272h448v-272c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48zM64 176v-96c0 -8.7998 7.2002 -16 16 -16h96c8.7998 0 16 7.2002 16 16v96c0 8.7998 -7.2002 16 -16 16h-96c-8.7998 0 -16 -7.2002 -16 -16zM400 384c26.5 0 48 -21.5 48 -48v-48h-448v48\nc0 26.5 21.5 48 48 48h48v48c0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-48h128v48c0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-48h48z\" />\n    <glyph glyph-name=\"calendar-week\" unicode=\"&#xf784;\" horiz-adv-x=\"448\" \nd=\"M0 -16v272h448v-272c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48zM64 176v-64c0 -8.7998 7.2002 -16 16 -16h288c8.7998 0 16 7.2002 16 16v64c0 8.7998 -7.2002 16 -16 16h-288c-8.7998 0 -16 -7.2002 -16 -16zM400 384c26.5 0 48 -21.5 48 -48v-48h-448\nv48c0 26.5 21.5 48 48 48h48v48c0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-48h128v48c0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-48h48z\" />\n    <glyph glyph-name=\"candy-cane\" unicode=\"&#xf786;\" \nd=\"M497.5 356c35.7002 -75.5 2.7998 -166.1 -68.9004 -209l-347.3 -206.5c-5.2002 -3 -10.7998 -4.5 -16.3994 -4.5c-10.9004 0 -21.5 5.59961 -27.5 15.5996l-32.8008 54.9004c-9.09961 15.2002 -4.19922 34.7998 11 43.9004l353.601 210.1\nc15.0996 9.09961 20.0996 28.7998 11 43.9004c-6 10 -16.6006 15.5996 -27.5 15.5996c-5.60059 0 -11.2998 -1.40039 -16.4004 -4.5l-27.5 -16.4004c-5.2002 -3 -10.7998 -4.5 -16.3994 -4.5c-10.9004 0 -21.5 5.60059 -27.5 15.6006l-32.8008 54.8994\nc-9.09961 15.2002 -4.19922 34.8008 11 43.9004l27.5 16.4004c25.6006 15.2998 53.9004 22.5996 81.8008 22.5996c59.3994 0 117.199 -33.0996 145.1 -92zM319.8 343c8.5 5.09961 18.1006 7.59961 27.9004 8.40039l-20.6006 61.7998\nc-10.5 -2.10059 -20.5996 -5.5 -30.2998 -10.2002l20.5 -61.5zM145.9 16.2002l30.7998 18.2998l-60.5 38.5l-30.7998 -18.2998zM253.4 80.0996l30.7998 18.3008l-60.5 38.5l-30.7998 -18.3008zM364.3 146l30.7998 18.2998l-60.5 38.5l-30.7998 -18.2998zM384.7 343.3\nc9.2002 -5.39941 17.2002 -13 22.8994 -22.2998l45.7002 45.7002c-6.59961 8.5 -14.2002 16.0996 -22.5996 22.5996zM466.8 235.5c4.60059 9.7998 8 20 10.1006 30.4004l-60.4004 20.0996c-0.0996094 -4.5 -0.700195 -9.09961 -1.7998 -13.5996\nc-1.60059 -6.2002 -4.2002 -11.8008 -7.40039 -17.1006z\" />\n    <glyph glyph-name=\"carrot\" unicode=\"&#xf787;\" \nd=\"M298.2 291.4c61.7002 -30.1006 87.2998 -104.5 57.2002 -166.2c-12.6006 -25.7998 -33.1006 -45.4004 -57.1006 -57.1006l-102 -49.7998l-57 57c-6.2002 6.2002 -16.2998 6.2002 -22.5996 0s-6.2998 -16.3994 0 -22.5996l49.2002 -49.2002l-133.601 -65.2002\nc-11.0996 -5.39941 -24.5996 -0.799805 -30 10.2998c-3.09961 6.40039 -2.89941 13.7002 0 19.7002l128.101 262.7l50.1992 -50.2002c3.10059 -3.09961 7.2002 -4.7002 11.3008 -4.7002c4.09961 0 8.19922 1.60059 11.2998 4.7002c6.2998 6.2002 6.2998 16.2998 0 22.6006\nl-55.2002 55.1992c35.7002 43.3008 97.5 58.5 150.2 32.8008zM390.3 326.3c40.7002 19.5 88.7998 9.40039 121.7 -30.2998c-41.5996 -50.2998 -107.5 -52.5 -151.9 -7.90039l-8 8c-44.5996 44.4004 -42.3994 110.2 7.90039 151.9\nc39.7002 -32.9004 49.7998 -81 30.2998 -121.7z\" />\n    <glyph glyph-name=\"cash-register\" unicode=\"&#xf788;\" \nd=\"M511.1 69.2002c0.600586 -3.5 0.900391 -7 0.800781 -10.5v-90.7002c0 -17.7002 -14.3008 -32 -32 -32h-448c-17.7002 0 -32 14.2998 -32 32v90.7998c0 3.5 0.299805 7 0.899414 10.5l26.7002 160c2.59961 15.4004 16 26.7002 31.5996 26.7002h84.9004v64h-96\nc-8.7998 0 -16 7.2002 -16 16v96c0 8.7998 7.2002 16 16 16h256c8.7998 0 16 -7.2002 16 -16v-96.0996c0 -8.80078 -7.2002 -16 -16 -16h-96v-64h244.8c15.7002 0 29 -11.3008 31.6006 -26.7002zM280 200v-16c0 -8.7998 7.2002 -16 16 -16h16c8.7998 0 16 7.2002 16 16v16\nc0 8.7998 -7.2002 16 -16 16h-16c-8.7998 0 -16 -7.2002 -16 -16zM248 136c-8.7998 0 -16 -7.2002 -16 -16v-16c0 -8.7998 7.2002 -16 16 -16h16c8.7998 0 16 7.2002 16 16v16c0 8.7998 -7.2002 16 -16 16h-16zM216 216h-16c-8.7998 0 -16 -7.2002 -16 -16v-16\nc0 -8.7998 7.2002 -16 16 -16h16c8.7998 0 16 7.2002 16 16v16c0 8.7998 -7.2002 16 -16 16zM80 368h192v32h-192v-32zM120 168c8.7998 0 16 7.2002 16 16v16c0 8.7998 -7.2002 16 -16 16h-16c-8.7998 0 -16 -7.2002 -16 -16v-16c0 -8.7998 7.2002 -16 16 -16h16zM136 104\nc0 -8.7998 7.2002 -16 16 -16h16c8.7998 0 16 7.2002 16 16v16c0 8.7998 -7.2002 16 -16 16h-16c-8.7998 0 -16 -7.2002 -16 -16v-16zM352 -8v16c0 4.40039 -3.59961 8 -8 8h-176c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h176c4.40039 0 8 3.59961 8 8\nzM376 104v16c0 8.7998 -7.2002 16 -16 16h-16c-8.7998 0 -16 -7.2002 -16 -16v-16c0 -8.7998 7.2002 -16 16 -16h16c8.7998 0 16 7.2002 16 16zM424 184v16c0 8.7998 -7.2002 16 -16 16h-16c-8.7998 0 -16 -7.2002 -16 -16v-16c0 -8.7998 7.2002 -16 16 -16h16\nc8.7998 0 16 7.2002 16 16z\" />\n    <glyph glyph-name=\"compress-arrows-alt\" unicode=\"&#xf78c;\" \nd=\"M200 160c13.2998 0 24 -10.7002 24 -24v-112c0 -21.4004 -25.7998 -32.0996 -40.9004 -17l-31.0996 33l-99.2998 -99.2998c-6.2002 -6.2002 -16.4004 -6.2002 -22.6006 0l-25.3994 25.3994c-6.2002 6.2002 -6.2002 16.4004 0 22.6006l99.2002 99.2998l-32.9004 31\nc-15.0996 15.2002 -4.40039 41 17 41h112zM312 224c-13.2998 0 -24 10.7002 -24 24v112c0 21.4004 25.7998 32.0996 40.9004 17l31.0996 -33l99.2998 99.2998c6.2002 6.2002 16.4004 6.2002 22.6006 0l25.3994 -25.3994c6.2002 -6.2002 6.2002 -16.4004 0 -22.6006\nl-99.2998 -99.2998l33 -31c15.0996 -15.0996 4.40039 -41 -17 -41h-112zM408 88l99.2998 -99.4004c6.2002 -6.19922 6.2002 -16.3994 0 -22.5996l-25.3994 -25.4004c-6.2002 -6.19922 -16.4004 -6.19922 -22.6006 0l-99.2998 99.3008l-31 -32.9004\nc-15.0996 -15.0996 -41 -4.40039 -41 17v112c0 13.2998 10.7002 24 24 24h112c21.4004 0 32.0996 -25.7998 17 -40.9004zM183 376.9c15.0996 15.0996 41 4.39941 41 -16.9004v-112c0 -13.2998 -10.7002 -24 -24 -24h-112c-21.4004 0 -32.0996 25.7998 -17 40.9004\nl33 31.0996l-99.2998 99.2998c-6.2002 6.2002 -6.2002 16.4004 0 22.6006l25.3994 25.3994c6.2002 6.2002 16.4004 6.2002 22.6006 0l99.2998 -99.2998z\" />\n    <glyph glyph-name=\"dumpster\" unicode=\"&#xf793;\" horiz-adv-x=\"576\" \nd=\"M560 288h-97.2998l-25.6006 128h98.9004c7.2998 0 13.7002 -5 15.5 -12.0996l24 -96c2.5 -10.1006 -5.09961 -19.9004 -15.5 -19.9004zM272 416v-128h-126.1l25.5996 128h100.5zM404.5 416l25.5996 -128h-126.1v128h100.5zM16 288c-10.4004 0 -18 9.7998 -15.5 19.9004\nl24 96c1.7998 7.09961 8.2002 12.0996 15.5 12.0996h98.9004l-25.6006 -128h-97.2998zM560 224c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-28l-20 -160v-16c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v16h-320v-16\nc0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v16l-20 160h-28c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h20l-4 32h512l-4 -32h20z\" />\n    <glyph glyph-name=\"dumpster-fire\" unicode=\"&#xf794;\" horiz-adv-x=\"640\" \nd=\"M418.7 343.9c-19.7002 -17.6006 -37.7002 -36.5 -53.9004 -55.8008h-60.7998v128h100.5l14.4004 -72zM272 416v-128h-126.1l25.5996 128h100.5zM461.3 343.9l-11.8994 10.5996l-12.3008 61.5h98.9004c7.2998 0 13.7002 -5 15.4004 -12.0996l24 -96\nc0.199219 -0.800781 -0.100586 -1.5 0 -2.30078c-1 1 -2 2.2002 -3.10059 3.10059l-21.2998 19l-21.2998 -19c-5.90039 -5.2002 -11.6006 -10.7002 -17.2998 -16.2998c-15.6006 17.7998 -32.9004 35.1992 -51.1006 51.5zM16 288c-10.4004 0 -18 9.7998 -15.5 19.9004l24 96\nc1.7998 7.09961 8.2002 12.0996 15.5 12.0996h98.9004l-25.6006 -128h-97.2998zM340.6 256c-32.6992 -46.7002 -52.5996 -93.7002 -52.5996 -129.6c0 -48.5 18.5996 -92.7002 48.7998 -126.4h-208.8v-16c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v16\nl-20 160h-28c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h20l-4 32h308.6zM551.1 284.8c51.8008 -46.2002 88.9004 -121.8 88.8008 -158.399c0 -87.5 -71.6006 -158.4 -160 -158.4c-88.4004 0 -160 70.9004 -160 158.4c0 49.2998 49.7998 130.899 120 193.6\nc27.3994 -24.4004 51.5 -50.5996 71 -76.4004c11.8994 14 25.2998 27.9004 40.1992 41.2002zM532.5 55.4004c33.4004 24.1992 41.2002 71.0996 22.5996 107.8c-2.2998 4.5 -4.89941 9.2002 -7.69922 14l-39.8008 -47s-62.3994 82.5 -67.0996 88.0996\nc-32.9004 -40.8994 -49.4004 -64.7998 -49.4004 -91.8994c0 -54.5 39.9004 -88 88.9004 -88c19.5996 0 37.7998 6.2998 52.5 17z\" />\n    <glyph glyph-name=\"ethernet\" unicode=\"&#xf796;\" \nd=\"M496 256c8.7998 0 16 -7.2002 16 -16v-224c0 -8.7998 -7.2002 -16 -16 -16h-80v128h-32v-128h-64v128h-32v-128h-64v128h-32v-128h-64v128h-32v-128h-80c-8.7998 0 -16 7.2002 -16 16v224c0 8.7998 7.2002 16 16 16h48v48c0 8.7998 7.2002 16 16 16h48v48\nc0 8.7998 7.2002 16 16 16h224c8.7998 0 16 -7.2002 16 -16v-48h48c8.7998 0 16 -7.2002 16 -16v-48h48z\" />\n    <glyph glyph-name=\"gifts\" unicode=\"&#xf79c;\" horiz-adv-x=\"640\" \nd=\"M240.6 253.9c-27.7998 -6.90039 -48.5996 -32 -48.5996 -61.9004v-224c0 -11.7002 3.40039 -22.5 8.90039 -32h-168.9c-17.7002 0 -32 14.2998 -32 32v352c0 17.7002 14.2998 32 32 32h29.4004l-30.7002 22c-7.2002 5.09961 -8.7998 15.0996 -3.7002 22.2998l9.2998 13\nc5.10059 7.2002 15.1006 8.7998 22.2998 3.7002l32.1006 -22.7998l-11.5 30.5996c-3.2002 8.2002 1 17.5 9.2998 20.6006l15 5.59961c8.2998 3.09961 17.5 -1.09961 20.5996 -9.40039l19.9004 -53.0996l19.9004 53c3.09961 8.2998 12.2998 12.5 20.5996 9.40039l15 -5.60059\nc8.2998 -3.09961 12.5 -12.2998 9.40039 -20.5996l-11.5 -30.6006l32 22.9004c7.19922 5.2002 17.1992 3.5 22.2998 -3.7002l9.2998 -13c5.2002 -7.2002 3.5 -17.2002 -3.7002 -22.2998l-30.7002 -22h29.4004c12.7002 0 23.4004 -7.5 28.5996 -18.2998\nc-26.6992 -18.6006 -42.0996 -49 -44 -79.7998zM224 -32v96h192v-128h-160c-17.7002 0 -32 14.2998 -32 32zM448 -64v128h192v-96c0 -17.7002 -14.2998 -32 -32 -32h-160zM608 224c17.7002 0 32 -14.2998 32 -32v-96h-192v128h-15.2998l-0.700195 0.200195\nl-0.700195 -0.200195h-15.2998v-128h-192v96c0 17.7002 14.2998 32 32 32h20.4004c-2.7002 7.59961 -4.40039 15.5 -4.40039 23.7998c0 35.5 27 72.2002 72.0996 72.2002c48 0 75.8008 -47.7002 87.9004 -75.2998c12 27.5996 39.7998 75.2998 87.9004 75.2998\nc45.0996 0 72.0996 -36.7002 72.0996 -72.2002c0 -8.2998 -1.7998 -16.2002 -4.40039 -23.7998h20.4004zM336 224h52.5996c-8.89941 20.5996 -25.7998 48 -44.5 48c-17.6992 0 -24.0996 -14.5 -24.0996 -24.2002c0 -5.2002 1.5 -12.5996 8.7998 -19\nc2.10059 -1.7998 4.5 -3.39941 7.2002 -4.7998zM535.2 228.8c7.2998 6.40039 8.7998 13.7998 8.7998 19c0 9.7002 -6.40039 24.2002 -24.0996 24.2002c-18.7002 0 -35.7002 -27.7002 -44.5 -48h52.5996c2.7002 1.40039 5.09961 3 7.2002 4.7998z\" />\n    <glyph glyph-name=\"glass-cheers\" unicode=\"&#xf79f;\" horiz-adv-x=\"640\" \nd=\"M639.4 14.4004c1.69922 -4.10059 -0.300781 -8.7002 -4.30078 -10.4004l-162.399 -67.4004c-4 -1.69922 -8.7002 0.200195 -10.4004 4.30078c-8.5 20.3994 1.2002 43.7998 21.6006 52.2998l22.0996 9.2002l-39.2998 103.6\nc-4.40039 -0.5 -8.7998 -1.2998 -13.1006 -1.2998c-51.6992 0 -99.3994 33.0996 -113.399 85.2998l-20.2002 75.4004l-20.2002 -75.4004c-14 -52.2002 -61.7002 -85.2998 -113.399 -85.2998c-4.30078 0 -8.7002 0.799805 -13.1006 1.2998l-39.3994 -103.6l22.0996 -9.2002\nc20.4004 -8.5 30 -31.9004 21.5996 -52.2998c-1.69922 -4.10059 -6.2998 -6 -10.3994 -4.30078l-162.3 67.4004c-4.10059 1.7002 -6 6.40039 -4.30078 10.5c8.5 20.4004 31.8008 30.0996 52.2002 21.5996l22.1006 -9.19922l38.6992 101.899\nc-47.8994 34.9004 -64.6992 100.2 -34.5 152.7l86.6006 150.5c8 13.9004 25.0996 19.7998 40 13.5996l114.3 -47.3994l114.3 47.3994c14.9004 6.10059 32 0.300781 40 -13.5996l86.6006 -150.5c30.2998 -52.5 13.3994 -117.8 -34.5 -152.8l38.6992 -101.9l22.1006 9.2002\nc20.3994 8.5 43.7998 -1.2002 52.2002 -21.5996zM275.9 285.9l18.8994 70.6992l-94.5 39.2002l-36.5 -63.3994zM364.1 285.9l112.101 46.5l-36.5 63.3994l-94.5 -39.2002z\" />\n    <glyph glyph-name=\"glass-whiskey\" unicode=\"&#xf7a0;\" \nd=\"M480 416c19.5 0 34.4004 -17.2002 31.7002 -36.5l-55.6006 -356.5c-4.5 -31.5 -31.5996 -54.9004 -63.3994 -54.9004h-273c-31.9004 0 -58.9004 23.4004 -63.4004 54.9004l-56 356.5c-2.7002 19.2998 12.2002 36.5 31.7002 36.5h448zM442.6 352h-373.199l30.1992 -192\nh313z\" />\n    <glyph glyph-name=\"globe-europe\" unicode=\"&#xf7a2;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM448 192c0 110.3 -89.7002 200 -200.2 200c-1.89941 0 -3.7998 -0.200195 -5.7002 -0.299805l-28.8994 -21.7002c-2 -1.5 -3.2002 -3.90039 -3.2002 -6.40039v-20\nc0 -4.39941 3.59961 -8 8 -8h16c4.40039 0 8 3.60059 8 8v8l16 16h20.7002c6.2002 0 11.2998 -5.09961 11.2998 -11.2998c0 -3 -1.2002 -5.89941 -3.2998 -8l-26.7998 -26.7998c-1.2002 -1.2002 -2.7002 -2.09961 -4.40039 -2.7002l-40 -13.2998\nc-3.2998 -1.09961 -5.5 -4.2002 -5.5 -7.59961c0 -6.60059 -2.59961 -12.9004 -7.2002 -17.5l-20.0996 -20.1006c-3 -3 -4.7002 -7.09961 -4.7002 -11.2998v-25.2998c0 -8.7998 7.2002 -16 16 -16h22.0996c6.10059 0 11.6006 3.39941 14.3008 8.7998l9.39941 18.7002\nc1.40039 2.7002 4.2002 4.39941 7.2002 4.39941h3.09961c4.40039 0 8 -3.59961 8 -8c0 -4.39941 3.60059 -8 8 -8h16c4.40039 0 8 3.60059 8 8v2.2002c0 3.5 2.2002 6.5 5.5 7.60059l31.6006 10.5c6.5 2.19922 10.8994 8.2998 10.8994 15.1992v4.5\nc0 8.80078 7.2002 16 16 16h36.7002c6.2002 0 11.2998 -5.09961 11.2998 -11.2998v-9.39941c0 -6.2002 -5.09961 -11.3008 -11.2998 -11.3008h-32c-3 0 -5.89941 -1.19922 -8 -3.2998l-9.39941 -9.39941c-2.10059 -2.10059 -3.30078 -5 -3.30078 -8\nc0 -6.2002 5.10059 -11.3008 11.3008 -11.3008h16c3 0 5.89941 -1.19922 8 -3.2998l9.39941 -9.39941c2.10059 -2.10059 3.2998 -5 3.2998 -8v-8.7002l-12.5 -12.5c-4.59961 -4.60059 -4.59961 -12.1006 -0.0996094 -16.7002l32 -32.5996\nc3 -3.10059 7.09961 -4.80078 11.4004 -4.80078h20.2998c6.89941 20.2002 10.7998 41.9004 10.7998 64.4004zM130.1 298.9c0 -6.2002 5.10059 -11.3008 11.3008 -11.3008h16c3 0 5.89941 1.2002 8 3.30078l9.39941 9.39941c2.10059 2.10059 3.2998 5 3.2998 8v16\nc0 6.2002 -5.09961 11.2998 -11.2998 11.2998c-3 0 -5.89941 -1.19922 -8 -3.2998l-25.3994 -25.3994c-2.10059 -2.10059 -3.30078 -5 -3.30078 -8zM258.1 -7.5c71.1006 3.59961 132.5 44.2002 164.9 103.1h-13.4004c-4.7998 0 -9.5 1.90039 -12.8994 5.30078\nl-17.2998 17.2998c-6 6 -14.1006 9.39941 -22.6006 9.39941h-18.2998l-43.2002 37.1006c-8.2002 7 -18.7002 10.8994 -29.5996 10.8994h-31.2002c-8.2002 0 -16.2998 -2.2998 -23.4004 -6.5l-42.8994 -25.6992c-13.7002 -8.2002 -22.1006 -23 -22.1006 -39v-23.9004\nc0 -14.2998 6.7002 -27.7998 18.2002 -36.4004l22.2002 -16.6992c8.7002 -6.5 24.5996 -11.8008 35.4004 -11.8008h20.1992c8.80078 0 16 -7.19922 16 -16v-7.09961z\" />\n    <glyph glyph-name=\"grip-lines\" unicode=\"&#xf7a4;\" \nd=\"M496 160c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-480c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h480zM496 288c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-480c-8.7998 0 -16 7.2002 -16 16v32\nc0 8.7998 7.2002 16 16 16h480z\" />\n    <glyph glyph-name=\"grip-lines-vertical\" unicode=\"&#xf7a5;\" horiz-adv-x=\"256\" \nd=\"M96 -48c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v480c0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-480zM224 -48c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v480c0 8.7998 7.2002 16 16 16h32\nc8.7998 0 16 -7.2002 16 -16v-480z\" />\n    <glyph glyph-name=\"guitar\" unicode=\"&#xf7a6;\" \nd=\"M502.6 393.4c12.5 -12.5 12.5 -32.8008 0.100586 -45.2002l-67.9004 -67.9004c-12.5 -12.5 -32.7998 -12.5 -45.2998 0l-54.2002 -54.2002c28.9004 -45.3994 28.9004 -100.399 -4.2002 -133.5c-9.69922 -9.69922 -21.1992 -16.3994 -33.8994 -20.5\nc-18.7998 -6.09961 -33.1006 -23.5996 -34.9004 -42.6992c-2.2998 -24.1006 -11.5996 -46.4004 -28.7998 -63.5c-46.0996 -46.1006 -129.1 -37.9004 -185.3 18.2998s-64.5 139.2 -18.2998 185.3c17.0996 17.2002 39.3994 26.5 63.3994 28.7998\nc19.2002 1.7998 36.6006 16.1006 42.7002 34.9004c4.09961 12.7002 10.7998 24.2002 20.5 33.8994c33.0996 33.1006 88.0996 33.2002 133.5 4.2002l54.2002 54.1006c-12.5 12.5 -12.5 32.7998 0 45.2998l67.8994 67.8994c12.5 12.5 32.8008 12.5 45.3008 0zM208 96\nc26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48z\" />\n    <glyph glyph-name=\"heart-broken\" unicode=\"&#xf7a9;\" \nd=\"M473.7 374.2c48.7002 -49.7998 50.7998 -129.101 7.2998 -182.101l-212.2 -218.699c-7.09961 -7.30078 -18.5996 -7.30078 -25.7002 0l-212.1 218.6c-43.5 53.0996 -41.4004 132.4 7.2998 182.2l2.40039 2.39941c46.2998 47.4004 119 51.8008 170.7 14l28.5996 -86.5\nl-96 -64l144 -144l-48 128l96 64l-34.2998 103.4c51.5996 36.9004 123.6 32.2002 169.6 -14.7998z\" />\n    <glyph glyph-name=\"holly-berry\" unicode=\"&#xf7aa;\" horiz-adv-x=\"448\" \nd=\"M144 256c-26.5 0 -48 21.5 -48 48s21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48zM256 304c0 26.5 21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48s-48 21.5 -48 48zM224 352c-26.5 0 -48 21.5 -48 48s21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48z\nM207.8 212.9c-0.399414 -39.8008 7.40039 -78.1006 22.9004 -112.301c4 -8.89941 -2 -19.1992 -11.7002 -20.1992c-15.2002 -1.5 -30.4004 -4.60059 -45.2998 -9.10059c-14.9004 -4.5 -23.7998 -19.8994 -20.2002 -35.0996s8.5 -29.9004 14.7002 -43.7998\nc4 -8.90039 -1.90039 -19.3008 -11.6006 -20.2002c-35.8994 -3.40039 -71.5996 -14.9004 -104.8 -33.9004c-12.3994 -7.09961 -27.5 1.60059 -27.5996 16c-0.100586 38.2002 -8 74.9004 -23 107.7c-4 8.90039 2 19.2002 11.7002 20.2002\nc15.1992 1.5 30.3994 4.59961 45.2998 9.09961c14.8994 4.5 23.7998 19.9004 20.2002 35.1006c-3.60059 15.1992 -8.5 29.8994 -14.7002 43.7998c-4 8.89941 1.89941 19.2998 11.5996 20.2002c37.2998 3.5 74.4004 15.8994 108.7 36.1992\nc10.7002 6.40039 23.9004 -1.2998 23.7998 -13.6992zM435 82.4004c9.7002 -1 15.7998 -11.4004 11.5 -20.1006c-15 -32.7002 -22.7998 -69.5 -23 -107.7c0 -14.3994 -15.0996 -23.0996 -27.5996 -16c-33.2002 19 -68.9004 30.5 -104.801 33.9004\nc-9.69922 0.900391 -15.5996 11.2998 -11.5996 20.2002c6.2002 14 11.0996 28.5996 14.7002 43.7998c3.59961 15.2002 -5.2998 30.5996 -20.2002 35.0996c-4.90039 1.5 -9.90039 2.5 -14.7998 3.7002c5.7998 12.2998 6.2998 26.5 0.599609 38.9004\nc-12.8994 28.2998 -19.7002 60.7002 -19.8994 94c0 1.7002 0.199219 3.2998 0.199219 4.89941c-0.0996094 12.3008 13.1006 20 23.8008 13.7002c34.2998 -20.2998 71.3994 -32.7002 108.699 -36.2002c9.7002 -0.899414 15.6006 -11.2998 11.6006 -20.1992\nc-6.2002 -14 -11.1006 -28.6006 -14.7002 -43.8008c-3.59961 -15.1992 5.2998 -30.5996 20.2002 -35.0996c15 -4.40039 30.0996 -7.5 45.2998 -9.09961z\" />\n    <glyph glyph-name=\"horse-head\" unicode=\"&#xf7ab;\" \nd=\"M509.8 115.5c4.60059 -11.7998 1.7998 -25.2998 -7.09961 -34.4004l-45.2998 -39.7998c-6 -6 -14.1006 -9.39941 -22.6006 -9.39941h-50.2998c-10.2998 0 -20 4.89941 -26 13.2998l-46 63.8994c-13.7998 -8.09961 -29.5996 -13.1992 -46.7998 -13.1992\nc-39.2002 0 -72.6006 23.6992 -87.4004 57.3994c-2.2998 5.10059 -9 6.2998 -12.8994 2.40039l-12.1006 -12.1006c-2.5 -2.39941 -3.2002 -6.19922 -1.59961 -9.2998c19.7002 -38.8994 58.7002 -66.0996 104.3 -69.5996v-0.700195l40.7998 -81.7002\nc10.7002 -21.2998 -4.7998 -46.2998 -28.5996 -46.2998h-236.2c-17.7002 0 -32 14.2998 -32 32v81.2002c0 159.899 35.9004 275.399 166.9 322.5l202.199 75.7002c4.90039 1.7998 10.7002 -1.10059 12 -6.10059c12.1006 -46.3994 -16.1992 -71.7002 -34.1992 -82.2998\nc42.5996 -8.2002 78.0996 -38 93 -79.2002zM328 224c13.2998 0 24 10.7002 24 24s-10.7002 24 -24 24s-24 -10.7002 -24 -24s10.7002 -24 24 -24z\" />\n    <glyph glyph-name=\"icicles\" unicode=\"&#xf7ad;\" \nd=\"M511.4 410.1l-87.5 -467.699c-1.7002 -8.60059 -14 -8.60059 -15.7002 0l-66.7002 363.8l-45.7998 -172.5c-2.2998 -7.60059 -13 -7.60059 -15.2998 0l-34.1006 133.399l-46.5 -196.899c-1.89941 -8.2998 -13.7002 -8.2998 -15.5996 0l-44.2002 187.3l-36.4004 -124.1\nc-2.39941 -7.2002 -12.5996 -7.2002 -15.0996 0l-87.0996 273.399c-6.2002 20.5 9.19922 41.2002 30.5996 41.2002h448c20 0 35.0996 -18.2002 31.4004 -37.9004z\" />\n    <glyph glyph-name=\"igloo\" unicode=\"&#xf7ae;\" horiz-adv-x=\"576\" \nd=\"M320 414.1v-126.1h-271.4c51.6006 77.2002 139.601 128 239.4 128c10.7998 0 21.5 -0.700195 32 -1.90039zM96 256v-128h-96c0 46 11.0996 89.4004 30.2998 128h65.7002zM352 408.6c72.7998 -16.5 135.2 -60.5 175.4 -120.6h-175.4v120.6zM480 128v128h65.7002\nc19.2002 -38.5996 30.2998 -82 30.2998 -128h-96zM416 64c0 11.0996 -1.90039 21.7002 -4.5 32h164.5v-96c0 -17.7002 -14.2998 -32 -32 -32h-128v96zM448 256v-128h-49.7998c-22.2002 38.0996 -63 64 -110.2 64s-88 -25.9004 -110.2 -64h-49.7998v128h320zM0 0v96h164.5\nc-2.59961 -10.2998 -4.5 -20.9004 -4.5 -32v-96h-128c-17.7002 0 -32 14.2998 -32 32zM288 160c53 0 96 -43 96 -96v-96h-192v96c0 53 43 96 96 96z\" />\n    <glyph glyph-name=\"mitten\" unicode=\"&#xf7b5;\" horiz-adv-x=\"448\" \nd=\"M368 32c8.7998 0 16 -7.2002 16 -16v-64c0 -8.7998 -7.2002 -16 -16 -16h-320c-8.7998 0 -16 7.2002 -16 16v64c0 8.7998 7.2002 16 16 16h320zM425 241.1c27.0996 -22.5996 30.7998 -62.8994 8.09961 -90.0996l-72.5 -87h-309l-47.8994 207.6\nc-17.9004 77.5 30.5 154.801 107.899 172.7c77.4004 17.9004 154.801 -30.5 172.801 -108l29.5996 -128.399l20.9004 25c22.5996 27.1992 62.8994 30.7998 90.0996 8.19922z\" />\n    <glyph glyph-name=\"mug-hot\" unicode=\"&#xf7b6;\" \nd=\"M127.1 301.5c-2.69922 16.5996 -10.3994 31.9004 -22.3994 44.0996c-22.6006 23.1006 -36.7002 52.5 -40.6006 84.4004c-1.09961 9.5 6.5 18 16.3008 18h16.3994c8.2002 0 15 -5.90039 16.1006 -13.7998c2.7998 -20.2002 12 -38.7998 26.3994 -53.5\nc20.2002 -20.5 32.7998 -46.5 36.6006 -74.7002c1.2998 -9.5 -6.5 -18 -16.3008 -18h-16.5c-8 0 -14.6992 5.7998 -16 13.5zM239.1 301.5c-2.69922 16.5996 -10.3994 31.9004 -22.3994 44.0996c-22.6006 23.1006 -36.7002 52.5 -40.6006 84.4004\nc-1.19922 9.5 6.5 18 16.3008 18h16.3994c8.2002 0 15 -5.90039 16.1006 -13.7998c2.7998 -20.2002 12 -38.7998 26.3994 -53.5c20.2002 -20.5 32.7998 -46.5 36.6006 -74.7002c1.2998 -9.5 -6.5 -18 -16.3008 -18h-16.5c-8 0 -14.6992 5.7998 -16 13.5zM400 256\nc61.7998 0 112 -50.2002 112 -112s-50.2002 -112 -112 -112h-16c0 -53 -43 -96 -96 -96h-192c-53 0 -96 43 -96 96v192c0 17.7002 14.2998 32 32 32h368zM400 96c26.5 0 48 21.5 48 48s-21.5 48 -48 48h-16v-96h16z\" />\n    <glyph glyph-name=\"radiation\" unicode=\"&#xf7b9;\" horiz-adv-x=\"496\" \nd=\"M328.2 192.2c0 28.5996 -15.2002 53.5 -37.7998 67.7998l80.3994 128.4c4.7998 7.69922 15.2998 10.0996 22.7002 4.7998c58.0996 -42 97.4004 -108.4 102.5 -184.2c0.599609 -9.09961 -7.09961 -16.7998 -16.2002 -16.7998h-151.6zM290.4 124.5l80.3994 -128.5\nc4.7998 -7.59961 2.40039 -18.0996 -5.59961 -22.4004c-34.9004 -18.7998 -74.7998 -29.5996 -117.2 -29.5996s-82.2998 10.7998 -117.2 29.5996c-8 4.30078 -10.3994 14.7002 -5.59961 22.4004l80.3994 128.5c12.4004 -7.7002 26.8008 -12.4004 42.4004 -12.4004\ns30.0996 4.7002 42.4004 12.4004zM248 144.2c-26.5 0 -48 21.5 -48 48s21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48zM16.2002 192.2c-9.10059 0 -16.7998 7.7002 -16.2002 16.7002c5.09961 75.7998 44.4004 142.199 102.5 184.199\nc7.40039 5.40039 17.9004 2.90039 22.7002 -4.7998l80.3994 -128.399c-22.5996 -14.2002 -37.7998 -39.1006 -37.7998 -67.7002h-151.6z\" />\n    <glyph glyph-name=\"radiation-alt\" unicode=\"&#xf7ba;\" horiz-adv-x=\"496\" \nd=\"M312 192c0 22.7998 -12.0996 42.7998 -30.0996 54l41.6992 66.7998c5.2002 8.2998 16.4004 9.90039 24 3.7998c32.5 -26 54.9004 -64.1992 59.5 -107.8c0.900391 -9.09961 -6.7998 -16.7998 -16 -16.7998h-79.0996zM214.2 137.9\nc9.7998 -6.2002 21.5 -9.90039 33.8994 -9.90039c12.4004 0 24 3.7002 33.8008 9.90039l41.7998 -66.9004c4.7998 -7.7998 2.39941 -18.4004 -5.7998 -22.5c-21.2002 -10.4004 -44.8008 -16.5 -69.9004 -16.5s-48.7002 6.09961 -69.7998 16.5\nc-8.2002 4.09961 -10.7002 14.7002 -5.7998 22.5zM104.9 192c-9.2002 0 -17 7.7002 -15.9004 16.9004c4.59961 43.5996 26.9004 81.7998 59.5 107.8c7.59961 6.09961 18.7998 4.5 24 -3.7998l41.7002 -66.8008c-18.1006 -11.2998 -30.2002 -31.2998 -30.2002 -54.0996\nh-79.0996zM248 -56c-137 0 -248 111 -248 248s111 248 248 248s248 -111 248 -248s-111 -248 -248 -248zM248 376c-101.5 0 -184 -82.5 -184 -184s82.5 -184 184 -184s184 82.5 184 184s-82.5 184 -184 184zM248 160c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32\ns32 -14.2998 32 -32s-14.2998 -32 -32 -32z\" />\n    <glyph glyph-name=\"restroom\" unicode=\"&#xf7bd;\" horiz-adv-x=\"640\" \nd=\"M128 320c-35.2998 0 -64 28.7002 -64 64s28.7002 64 64 64s64 -28.7002 64 -64s-28.7002 -64 -64 -64zM512 320c-35.2998 0 -64 28.7002 -64 64s28.7002 64 64 64s64 -28.7002 64 -64s-28.7002 -64 -64 -64zM639.3 93.5c3.7002 -15.0996 -8.2998 -29.5 -24.5 -29.5\nh-54.7998v-104c0 -13.2998 -10.7002 -24 -24 -24h-48c-13.2998 0 -24 10.7002 -24 24v104h-54.7998c-16.2002 0 -28.2002 14.4004 -24.7002 29.5l45.5996 185.8c3.30078 13.5 15.5 23 29.8008 24.2002c15 -9.7002 32.7998 -15.5 52 -15.5c19.1992 0 37 5.7998 52 15.5\nc14.2998 -1.2002 26.5 -10.7002 29.7998 -24.2002zM336 448c8.7998 0 16 -7.2002 16 -16v-480c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v480c0 8.7998 7.2002 16 16 16h32zM180.1 303.6c24.6006 -2.09961 43.9004 -22.5 43.9004 -47.5996v-136\nc0 -13.2998 -10.7002 -24 -24 -24h-8v-136c0 -13.2998 -10.7002 -24 -24 -24h-80c-13.2998 0 -24 10.7002 -24 24v136h-8c-13.2998 0 -24 10.7002 -24 24v136c0 25.0996 19.2998 45.5 43.9004 47.5996c15 -9.7998 32.8994 -15.5996 52.0996 -15.5996\ns37.0996 5.7998 52.0996 15.5996z\" />\n    <glyph glyph-name=\"satellite\" unicode=\"&#xf7bf;\" \nd=\"M502.7 183c12.3994 -12.4004 12.3994 -32.5996 -0.100586 -45l-96.6992 -96.7002c-6.2002 -6.2002 -14.4004 -9.2998 -22.5 -9.2998c-8.10059 0 -16.3008 3.09961 -22.5 9.2998l-80.3008 80.4004l-9.89941 -9.90039c24.2998 -53.7002 22.7002 -116.2 -5.40039 -168.5\nc-4.5 -8.5 -16.3994 -9.59961 -23.2002 -2.7998l-107.5 107.5l-17.7998 -17.7998c0.700195 -2.60059 1.60059 -5 1.60059 -7.7998c0 -17.7002 -14.3008 -32 -32 -32c-17.7002 0 -32 14.2998 -32 32c0 17.6992 14.2998 32 32 32c2.7998 0 5.19922 -0.900391 7.7998 -1.60059\nl17.7998 17.7998l-107.5 107.5c-6.7998 6.80078 -5.7002 18.6006 2.7998 23.2002c52.2998 28.1006 114.8 29.7002 168.5 5.40039l9.7998 9.7998l-80.2998 80.4004c-12.3994 12.5 -12.3994 32.6992 0 45.0996l96.7002 96.7002c6.2002 6.2002 14.2998 9.2998 22.5 9.2998\ns16.2998 -3.09961 22.5996 -9.2998l80.3008 -80.2998l47.7998 47.8994c13.0996 13.1006 34.3994 13.1006 47.5 0l47.5 -47.5c13.0996 -13.0996 13.0996 -34.3994 0 -47.5l-47.7998 -47.8994zM150.7 319.5l68.8994 -68.9004l73.8008 73.8008l-68.9004 68.8994zM383.5 86.7002\nl73.7998 73.7998l-68.8994 68.9004l-73.8008 -73.8008z\" />\n    <glyph glyph-name=\"satellite-dish\" unicode=\"&#xf7c0;\" \nd=\"M188.8 102.1l116.601 -116.6c7.39941 -7.2998 6.19922 -20.0996 -3 -25c-77.7002 -41.7998 -176.7 -29.9004 -242.301 35.7002c-65.5996 65.5996 -77.5 164.5 -35.6992 242.3c4.89941 9.09961 17.6992 10.2998 25 3l116.8 -116.8l27.3994 27.3994\nc-0.699219 2.60059 -1.59961 5 -1.59961 7.80078c0 17.6992 14.2998 32 32 32s32 -14.3008 32 -32c0 -17.7002 -14.2998 -32 -32 -32c-2.7998 0 -5.2002 0.899414 -7.7998 1.59961zM209 448c163.2 -8.59961 294.4 -139.8 302.9 -303c0.5 -9.2002 -6.80078 -17 -16 -17\nh-32.1006c-8.39941 0 -15.3994 6.59961 -15.8994 15c-7.5 129.5 -111.5 234.5 -240.9 241.5c-8.40039 0.400391 -15 7.40039 -15 15.9004v31.5996c0 9.2002 7.7998 16.5 17 16zM209.3 352c110.101 -8.5 198.2 -96.5996 206.601 -206.7\nc0.699219 -9.2998 -6.80078 -17.2998 -16.1006 -17.2998h-32.2002c-8.2998 0 -15.0996 6.40039 -15.8994 14.7002c-6.90039 77 -68.1006 138.899 -144.9 145.2c-8.2998 0.599609 -14.7998 7.5 -14.7998 15.8994v32.1006c0 9.39941 8 16.7998 17.2998 16.0996z\" />\n    <glyph glyph-name=\"sd-card\" unicode=\"&#xf7c2;\" horiz-adv-x=\"384\" \nd=\"M320 448c35.2998 0 64 -28.7002 64 -64v-384c0 -35.2998 -28.7002 -64 -64 -64h-256c-35.2998 0 -64 28.7002 -64 64v320l128 128h192zM160 288v96h-48v-96h48zM240 288v96h-48v-96h48zM320 288v96h-48v-96h48z\" />\n    <glyph glyph-name=\"sim-card\" unicode=\"&#xf7c4;\" horiz-adv-x=\"384\" \nd=\"M0 384c0 35.2998 28.7002 64 64 64h192l128 -128v-320c0 -35.2998 -28.7002 -64 -64 -64h-256c-35.2998 0 -64 28.7002 -64 64v384zM224 192v64h-64v-64h64zM320 192v32c0 17.7002 -14.2998 32 -32 32h-32v-64h64zM256 64v-64h32c17.7002 0 32 14.2998 32 32v32h-64z\nM160 64v-64h64v64h-64zM64 64v-32c0 -17.7002 14.2998 -32 32 -32h32v64h-64zM64 160v-64h256v64h-256zM64 224v-32h64v64h-32c-17.7002 0 -32 -14.2998 -32 -32z\" />\n    <glyph glyph-name=\"skating\" unicode=\"&#xf7c5;\" horiz-adv-x=\"448\" \nd=\"M400 448c26.5 0 48 -21.5 48 -48s-21.5 -48 -48 -48s-48 21.5 -48 48s21.5 48 48 48zM400 0c8.7998 0 16 -7.2002 16 -16c0 -26.5 -21.5 -48 -48 -48h-96c-8.7998 0 -16 7.2002 -16 16s7.2002 16 16 16h96c8.7998 0 16 7.2002 16 16s7.2002 16 16 16zM117.8 -8.59961\nc6.2998 6.2998 16.5 6.19922 22.7002 0c6.2002 -6.2002 6.2002 -16.4004 0 -22.6006c-9.2998 -9.2998 -21.5996 -14 -33.9004 -14c-12.2998 0 -24.5996 4.60059 -34 14l-67.8994 67.9004c-6.2002 6.2002 -6.2002 16.3994 0 22.5996s16.3994 6.2002 22.5996 0\nl67.9004 -67.8994c6.2002 -6.30078 16.3994 -6.2002 22.5996 0zM173.9 171.2c3.7998 -6.10059 8.19922 -11.7998 13.1992 -16.7998l30.2002 -30.2002l-91.8994 -91.9004c-6.2002 -6.2998 -14.4004 -9.39941 -22.6006 -9.39941s-16.3994 3.19922 -22.5996 9.39941\nc-12.5 12.4004 -12.5 32.7002 0 45.2002zM128 288c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32h204.6c16.3008 0 30.8008 -9.7002 37 -24.7002c6.2002 -15 2.80078 -32.0996 -8.69922 -43.5996l-82.3008 -82.2998c-0.5 -0.5 -1.19922 -0.700195 -1.69922 -1.10059\nl61 -61c9 -8.89941 14.0996 -21.2998 14.0996 -33.8994v-89.4004c0 -17.7002 -14.2998 -32 -32 -32s-32 14.2998 -32 32v82.7998l-78.2002 78.2002c-12.5996 12.5 -19.3994 29.9004 -18.7002 47.7002c0.700195 17.7002 8.80078 34.5996 22.3008 46.0996l20.0996 17.2002\nh-105.5z\" />\n    <glyph glyph-name=\"skiing\" unicode=\"&#xf7c9;\" \nd=\"M432 352c-26.5 0 -48 21.5 -48 48s21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48zM505 -4.09961c9.2998 -9.30078 9.2998 -24.5 0 -33.8008c-17 -17 -39.7998 -26 -63 -26c-12.5996 0 -25.2002 2.60059 -37.0996 8.10059l-391.9 202.5\nc-11.7998 6 -16.4004 20.5 -10.2998 32.2998c6.09961 11.7998 20.5996 16.2998 32.2998 10.2998l197.9 -102.3l45.8994 68.7998l-75.0996 75.2002c-14.2998 14.4004 -20.6006 34.5 -17.7002 54.4004l107 -53.1006l40.4004 -40.5\nc16.1992 -16.0996 18.6992 -41.5996 6 -60.5996l-49.2002 -73.7998l135.8 -70.2002c14.5996 -6.7002 33 -3.40039 45.0996 8.7002c9.30078 9.39941 24.5 9.39941 33.9004 0zM120 356.4l-26.2002 23c-2.2002 1.89941 -2.39941 5.19922 -0.5 7.39941\nc1.2998 1.5 3.2002 2.10059 5 1.7002l34.4004 -7h0.200195l11.0996 21.7002c13.7002 -7 21.2002 -21.1006 20.9004 -35.6006l62.5 -31l81.1992 32.5c43.6006 17.4004 76.4004 -15 84.5 -39.1992l17.1006 -51.2002l52.0996 -26.1006\nc15.7998 -7.89941 22.2002 -27.0996 14.2998 -42.8994c-7.89941 -15.7998 -27 -22.2002 -42.8994 -14.2998l-58.1006 29c-11.3994 5.69922 -20 15.5996 -24 27.6992l-6.39941 19.1006l-32.4004 -13l-114.5 56.7998c0.100586 0.0996094 0.100586 0.200195 0.200195 0.299805\nl-47.2002 23.4004c-11.5996 -9.7002 -28.3994 -12.1006 -42.7998 -4.7998z\" />\n    <glyph glyph-name=\"skiing-nordic\" unicode=\"&#xf7ca;\" horiz-adv-x=\"576\" \nd=\"M336 352c-26.5 0 -48 21.5 -48 48s21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48zM552 32c13.2002 0 24 -10.7998 24 -24c0 -39.7002 -32.2998 -72 -72 -72h-480c-13.2002 0 -24 10.7002 -24 24s10.7998 24 24 24h42.9004l54.0996 270.8\nc-0.700195 0.799805 -1.7002 1.2002 -2.40039 2.10059c-10.7998 14.0996 -8.09961 34.1992 5.90039 44.8994l39.7002 30.4004c23 17.5996 52.5 23.8994 80.7998 17.0996l71.2002 -21.2002c26.2998 -6.69922 49.2998 -25.3994 61.7998 -50.8994l26.0996 -53.2002h44\nc17.7002 0 32 -14.2998 32 -32c0 -13.4004 -8.39941 -24.9004 -20.0996 -29.5996l-25.5 -178.4h69.5c13.2002 0 24 10.7998 24 24c0 13.2998 10.7998 24 24 24zM291.5 -16l25.5 81.2002l-85 50.2002c-27.5996 16.2998 -38.9004 50.7998 -26.2998 80.2998l37.5 87.3994\nl-14.7002 4.40039c-7.90039 1.90039 -17.5996 -0.200195 -25.2998 -6.09961l-39.7002 -30.4004c-3.59961 -2.7002 -7.59961 -4.59961 -11.7002 -5.59961l-52.2998 -261.4h24.2002l62.5 131.8c7.59961 -10.8994 17.3994 -20.5996 29.5 -27.7998l22 -13l-43.1006 -91h96.9004z\nM402.1 -16l25.2002 176h-33.2998c-18.2002 0 -35.0996 10.5996 -43.0996 26.9004l-20.3008 41.3994l-31.2998 -78.2998l61.2002 -36.0996c18.7002 -11.3008 27.5 -33.6006 21.5996 -54.4004l-23.5996 -75.5h43.5996z\" />\n    <glyph glyph-name=\"sleigh\" unicode=\"&#xf7cc;\" horiz-adv-x=\"640\" \nd=\"M612.7 97.2998c18.5 -14.7002 28.5996 -37.2002 27.2002 -61c-2.2002 -39 -36.9004 -68.2998 -75.9004 -68.2998h-516c-8.7998 0 -16 7.2002 -16 16v16c0 8.7998 7.2002 16 16 16h519.3c13.6006 0 24.6006 11 24.6006 24.5996c0 7.5 -3.30078 14.5 -9.2002 19.2002\nl-9.2998 7.40039c-6.90039 5.5 -8 15.5996 -2.5 22.5l10 12.5c5.5 6.89941 15.5996 8 22.5 2.5zM32 224v128c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32h20.7002c65.7002 0 125.899 -37.2002 155.3 -96s89.5 -96 155.3 -96h20.7002c35.2998 0 64 28.7002 64 64v64h96\nc17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32v-96c0 -53 -43 -96 -96 -96v-48h-64v48h-192v-48h-64v52.5c-55.0996 14.2998 -96 63.9004 -96 123.5z\" />\n    <glyph glyph-name=\"sms\" unicode=\"&#xf7cd;\" \nd=\"M256 416c141.4 0 256 -93.0996 256 -208s-114.6 -208 -256 -208c-38.4004 0 -74.7002 7.09961 -107.4 19.4004c-24.5996 -19.6006 -74.2998 -51.4004 -140.6 -51.4004c-3.2002 0 -6 1.7998 -7.2998 4.7998s-0.700195 6.40039 1.5 8.7002\nc0.5 0.5 42.2998 45.4004 54.7998 95.7998c-35.5996 35.7002 -57 81.1006 -57 130.7c0 114.9 114.6 208 256 208zM128.2 144c23.3994 0 42.5 17.2998 42.3994 38.5996c0 10.6006 -4.7998 20.9004 -13.2998 28.1006l-21.8994 18.7998\nc-1.30078 1.09961 -2.10059 2.5 -2.10059 3.7998c0 3.10059 4.40039 6.60059 10.4004 6.60059h12.2998c4.40039 0 8 3.59961 8 8v16c0 4.39941 -3.59961 8 -8 8h-12.2002c-23.3994 0 -42.3994 -17.3008 -42.3994 -38.6006c0 -10.5996 4.7998 -20.8994 13.2998 -28.0996\nl21.8994 -18.7998c1.30078 -1.10059 2.10059 -2.5 2.10059 -3.80078c0 -3.09961 -4.40039 -6.59961 -10.4004 -6.59961h-12.2998c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h12.2002zM320 152v104c0 8.7998 -7.2002 16 -16 16h-16\nc-6 0 -11.5996 -3.40039 -14.2998 -8.7998l-17.7002 -35.4004l-17.7002 35.4004c-2.7002 5.39941 -8.2002 8.7998 -14.2998 8.7998h-16c-8.7998 0 -16 -7.2002 -16 -16v-104c0 -4.40039 3.59961 -8 8 -8h16c4.40039 0 8 3.59961 8 8v68.2002l24.9004 -55.7998\nc2.89941 -5.90039 11.3994 -5.90039 14.2998 0l24.7998 55.7998v-68.2002c0 -4.40039 3.59961 -8 8 -8h16c4.40039 0 8 3.59961 8 8zM368.3 144c23.4004 0 42.4004 17.2998 42.2998 38.5996c0 10.6006 -4.7998 20.9004 -13.2998 28.1006l-21.8994 18.7998\nc-1.30078 1.09961 -2.10059 2.5 -2.10059 3.7998c0 3.10059 4.40039 6.60059 10.4004 6.60059h12.2998c4.40039 0 8 3.59961 8 8v16c0 4.39941 -3.59961 8 -8 8h-12.2002c-23.3994 0 -42.3994 -17.3008 -42.3994 -38.6006c0 -10.5996 4.7998 -20.8994 13.2998 -28.0996\nl21.8994 -18.7998c1.30078 -1.10059 2.10059 -2.5 2.10059 -3.80078c0 -3.09961 -4.40039 -6.59961 -10.4004 -6.59961h-12.2998c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h12.2998z\" />\n    <glyph glyph-name=\"snowboarding\" unicode=\"&#xf7ce;\" \nd=\"M432 352c-26.5 0 -48 21.5 -48 48s21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48zM460.8 198.4l-83.5 62.8994l-66 -30.5l52 -39c14.9004 -11.2002 22 -30.2002 18.1006 -48.3994l-21.9004 -102c-2.2002 -10.1006 -9.09961 -17.8008 -17.7998 -21.9004\nl90.7998 -33.0996c9.7002 -3.5 20.2002 -3.10059 29.5 1.2998c12 5.59961 26.2998 0.399414 31.9004 -11.6006c5.59961 -12 0.399414 -26.2998 -11.6006 -31.8994c-11.5996 -5.5 -24 -8.2002 -36.5 -8.2002c-10 0 -20 1.7998 -29.7002 5.2998l-364.8 132.7\nc-21.7998 7.90039 -39.0996 23.7998 -48.8994 44.7998c-5.60059 12 -0.400391 26.2998 11.5996 31.9004c12 5.59961 26.2998 0.399414 31.9004 -11.6006c4.39941 -9.39941 12.0996 -16.5 21.7998 -20l38.7002 -14.0996c-3.80078 3.5 -7 7.7002 -8.7002 12.9004\nc-5.60059 16.7998 3.39941 34.8994 20.2002 40.5l74.0996 24.6992v53.1006c0 24.3994 13.5996 46.2998 35.4004 57.2002l41.1992 20.5996l-16.3994 5.5c-12.1006 4.09961 -22 12.5996 -27.7002 24l-29.0996 58.0996c-7.90039 15.8008 -1.5 35 14.2998 42.9004\ns35 1.5 42.8994 -14.2998l26.1006 -52.1006l63.7002 -21.1992c16.2998 -5.40039 31.5996 -13.5 45.3994 -23.8008l111.4 -83.5c14.2002 -10.5996 17 -30.6992 6.39941 -44.7998c-6.2998 -8.39941 -15.8994 -12.7998 -25.5996 -12.7998\nc-6.7002 0 -13.4004 2.09961 -19.2002 6.40039zM316.4 146.7l-60.5 45.2998v-20.5c0 -20.7002 -13.2002 -39 -32.8008 -45.5l-85 -28.4004c-2.59961 -0.899414 -5.2998 -1.09961 -8 -1.2998l169.4 -61.5996c-2.90039 6.09961 -4.2998 12.8994 -2.7998 20z\" />\n    <glyph glyph-name=\"snowman\" unicode=\"&#xf7d0;\" \nd=\"M510.9 295.7c3.19922 -8.10059 -0.800781 -17.2002 -8.90039 -20.2998l-135.2 -55.2002c0.400391 -4.10059 1.2002 -8 1.2002 -12.2002c0 -10 -1.7002 -19.5 -4.2002 -28.7002c21.1006 -21.3994 36.1006 -48.7998 41.6006 -79\nc11.5 -63.2002 -16.4004 -120.3 -62.9004 -152.6c-10.9004 -7.60059 -23.9004 -11.7002 -37.2002 -11.7002h-99.2002c-11 0 -22 2.2998 -31.2998 8.2002c-42.3994 26.8994 -70.7998 73.7998 -70.7998 127.8c0 41.7998 16.9004 79.5996 44.2998 107.1\nc-2.5 9.30078 -4.2002 18.8008 -4.2002 28.9004c0 4.2002 0.800781 8.2002 1.2002 12.2002l-135.2 55.2002c-8.19922 3.19922 -12.1992 12.2998 -8.89941 20.2998l5.89941 14.5c3.30078 8 12.6006 11.8994 20.8008 8.7002l28.0996 -11.5v29\nc0 8.59961 7.2002 15.5996 16 15.5996h16c8.7998 0 16 -7 15.7998 -15.5996v-46.9004c0 -0.5 -0.200195 -1 -0.299805 -1.5l56.4004 -23c6 10 13.2998 18.9004 22 26.5996c-13.5 16.6006 -22 37.4004 -22 60.5c0 53 43 96 96 96s96 -43 96 -96\nc0 -23.0996 -8.40039 -43.8994 -22 -60.5c8.69922 -7.69922 16.0996 -16.5996 22 -26.5996l56.3994 23c0 0.5 -0.299805 1 -0.299805 1.5v46.9004c0 8.59961 7.2002 15.5996 16 15.5996h16c8.7998 0 16 -7 16 -15.5996v-29l28.2002 11.5\nc8.2002 3.19922 17.5 -0.700195 20.7998 -8.7002zM224 352c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM256 80c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM256 144\nc8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM256 208c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM256 296c0 0 16 23.2002 16 32s-7.2002 16 -16 16s-16 -7.2002 -16 -16s16 -32 16 -32z\nM288 352c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16z\" />\n    <glyph glyph-name=\"snowplow\" unicode=\"&#xf7d2;\" horiz-adv-x=\"640\" \nd=\"M120 72c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24s-24 10.7002 -24 24s10.7002 24 24 24zM200 72c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24s-24 10.7002 -24 24s10.7002 24 24 24zM280 72c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24\ns-24 10.7002 -24 24s10.7002 24 24 24zM360 72c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24s-24 10.7002 -24 24s10.7002 24 24 24zM598.6 22.5996l36.7002 -36.6992c6.2002 -6.2002 6.2002 -16.4004 0 -22.6006l-22.5996 -22.5996\nc-6.2002 -6.2002 -16.4004 -6.2002 -22.6006 0l-36.6992 36.7002c-26.5 26.5 -41.4004 62.3994 -41.4004 99.8994v18.7002h-43.2002c7 -14.5996 11.2002 -30.7002 11.2002 -48c0 -61.9004 -50.0996 -112 -112 -112h-256c-61.9004 0 -112 50.0996 -112 112\nc0 44.5996 26.2998 82.7998 64 100.8v91.2002c0 26.5 21.5 48 48 48h16v112c0 26.5 21.5 48 48 48h144.3c19.2998 0 36.6006 -11.4004 44.2002 -29.0996l78.2998 -182.801c3.40039 -8 5.2002 -16.5 5.2002 -25.1992v-50.9004h64v18.7002\nc0 37.5 14.9004 73.3994 41.4004 99.8994l36.6992 36.7002c6.2002 6.2002 16.4004 6.2002 22.6006 0l22.5996 -22.5996c6.2002 -6.2002 6.2002 -16.4004 0 -22.6006l-36.7002 -36.6992c-14.5 -14.5 -22.5996 -34.1006 -22.5996 -54.6006v-101.6\nc0 -20.5 8.09961 -40.1006 22.5996 -54.6006zM192 384v-96l64 -64h122.4l-68.6006 160h-117.8zM368 0c26.5 0 48 21.5 48 48s-21.5 48 -48 48h-256c-26.5 0 -48 -21.5 -48 -48s21.5 -48 48 -48h256z\" />\n    <glyph glyph-name=\"tenge\" unicode=\"&#xf7d7;\" horiz-adv-x=\"384\" \nd=\"M372 288c6.59961 0 12 -5.40039 12 -12v-56c0 -6.59961 -5.40039 -12 -12 -12h-140v-228c0 -6.59961 -5.40039 -12 -12 -12h-56c-6.59961 0 -12 5.40039 -12 12v228h-140c-6.59961 0 -12 5.40039 -12 12v56c0 6.59961 5.40039 12 12 12h360zM372 416\nc6.59961 0 12 -5.40039 12 -12v-56c0 -6.59961 -5.40039 -12 -12 -12h-360c-6.59961 0 -12 5.40039 -12 12v56c0 6.59961 5.40039 12 12 12h360z\" />\n    <glyph glyph-name=\"toilet\" unicode=\"&#xf7d8;\" horiz-adv-x=\"384\" \nd=\"M368 400h-16v-156.7c20.2002 -10.0996 32 -22.2002 32 -35.2998c0 -67.2002 -34.5996 -126.2 -86.7998 -160.5l21.3994 -70.2002c6.30078 -20.5 -9.09961 -41.2998 -30.5996 -41.2998h-192c-21.5 0 -36.9004 20.7998 -30.5996 41.2998l21.3994 70.2002\nc-52.2002 34.2998 -86.7998 93.2998 -86.7998 160.5c0 13.0996 11.7998 25.2002 32 35.2998v156.7h-16c-8.7998 0 -16 7.2002 -16 16v16c0 8.7998 7.2002 16 16 16h352c8.7998 0 16 -7.2002 16 -16v-16c0 -8.7998 -7.2002 -16 -16 -16zM80 376v-16\nc0 -4.40039 3.59961 -8 8 -8h48c4.40039 0 8 3.59961 8 8v16c0 4.40039 -3.59961 8 -8 8h-48c-4.40039 0 -8 -3.59961 -8 -8zM192 176c77.0996 0 139.6 14.2998 139.6 32s-62.5 32 -139.6 32s-139.6 -14.2998 -139.6 -32s62.5 -32 139.6 -32z\" />\n    <glyph glyph-name=\"tools\" unicode=\"&#xf7d9;\" \nd=\"M501.1 52.2998c14.5 -14.5 14.5 -38.0996 0 -52.7002l-52.6992 -52.6992c-14.5 -14.6006 -38.1006 -14.6006 -52.7002 0l-117.101 117.1c-23.0996 23.0996 -27.5 57.5996 -13.8994 85.4004l-106.601 106.6h-62.0996l-96 128l64 64l128 -96v-62.0996l106.6 -106.601\nc27.8008 13.7002 62.3008 9.2002 85.4004 -13.8994zM331.7 223c-8.2002 0 -16.6006 -1 -24.7002 -2.90039l-82.0996 82.1006c-0.700195 37.5 12.6992 75.0996 41.1992 103.6c37 37 89.2002 49.6006 136.601 37.9004c9.09961 -2.2998 12.2998 -13.6006 5.7002 -20.2002\nl-74.4004 -74.4004l11.2998 -67.8994l67.9004 -11.2998l74.3994 74.3994c6.60059 6.60059 17.9004 3.5 20.1006 -5.5c11.7998 -47.3994 -0.799805 -99.5996 -37.9004 -136.7c-13 -13 -28 -22.5996 -43.7998 -29.5l-19.4004 19.4004c-20 20 -46.5996 31 -74.8994 31z\nM227.8 141c-4.89941 -21.0996 -2.59961 -42.7998 5 -62.7002l-123.6 -123.6c-25 -25 -65.5 -25 -90.5 0s-25 65.5 0 90.5l152.399 152.5zM64 -24c13.2998 0 24 10.7998 24 24c0 13.2998 -10.7002 24 -24 24s-24 -10.7002 -24 -24c0 -13.2002 10.7998 -24 24 -24z\" />\n    <glyph glyph-name=\"tram\" unicode=\"&#xf7da;\" \nd=\"M288 384c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32zM511.5 396.1c2.2002 -8.5 -2.7998 -17.2998 -11.4004 -19.5996l-228.1 -60.7998v-91.7002h176c17.7002 0 32 -14.2998 32 -32v-224c0 -17.7002 -14.2998 -32 -32 -32\nh-384c-17.7002 0 -32 14.2998 -32 32v224c0 17.7002 14.2998 32 32 32h176v83.2002l-219.9 -58.7002c-1.2998 -0.299805 -2.69922 -0.5 -4.09961 -0.5c-7.09961 0 -13.5 4.7002 -15.4004 11.7998c-2.2998 8.60059 2.80078 17.2998 11.3008 19.6006l480 128\nc8.59961 2.2998 17.2998 -2.7002 19.5996 -11.3008zM176 64v96h-96v-96h96zM336 160v-96h96v96h-96zM304 160h-96v-96h96v96zM192 352c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32z\" />\n    <glyph glyph-name=\"fire-alt\" unicode=\"&#xf7e4;\" horiz-adv-x=\"448\" \nd=\"M323.56 396.8c72.46 -67.2598 124.44 -177.13 124.44 -230.399c0 -127.25 -100.29 -230.4 -224 -230.4s-224 103.15 -224 230.4c0 71.6396 69.7402 190.43 168 281.6c38.2803 -35.5303 72.0801 -73.6201 99.3398 -111.17\nc16.6406 20.3799 35.4199 40.6699 56.2197 59.9697zM304.09 56.1504c49.2402 34.4492 60.7803 101.229 33.4297 153.42c-3.35938 6.41992 -7.12988 13.1201 -11.2695 19.9697l-58.6299 -66.8799s-91.9004 117.359 -98.8301 125.34\nc-48.4805 -58.1201 -72.79 -92.1396 -72.79 -130.75c0 -77.5098 58.71 -125.25 130.86 -125.25c28.8594 0 55.5693 8.99023 77.2295 24.1504z\" />\n    <glyph glyph-name=\"bacon\" unicode=\"&#xf7e5;\" horiz-adv-x=\"576\" \nd=\"M218.92 111.61c-34.8604 -34.8799 -59.6504 -44.1602 -85.9199 -54c-26 -9.76074 -53 -20.1299 -88.1699 -52.7305l-35.7598 35.5098c-12.7002 12.6104 -12.0703 33.6104 1.79004 45.0605c36.3398 29.9795 66.21 41.0996 91.0693 50.3594\nc9.16992 3.41016 68.9707 19.2607 98.7207 98.0908c8.60938 22.8096 46.3496 134.58 188.979 187.72c15.8506 5.91016 27.3604 10.2002 41 20.2998c4.53516 3.35449 12.7939 6.07617 18.4346 6.07617c7.00879 0 16.751 -3.98926 21.7451 -8.90625l37.6709 -37.3896\nc-30.1504 -27.6904 -52.9102 -36.3701 -76.79 -45.3701c-28.3008 -10.6104 -57.5703 -21.5801 -97.3506 -61.3799s-50.7598 -69.0498 -61.3701 -97.3398c-9.84961 -26.3008 -19.1602 -51.1104 -54.0498 -86zM566.92 343.61\nc12.7002 -12.5996 12.0801 -33.6602 -1.80957 -45.0605c-36.3701 -30.0098 -66.2402 -41.1396 -91.1104 -50.4102c-9.2002 -3.43945 -69 -19.3193 -98.7305 -98.1094c-8.93945 -23.5898 -46.7393 -134.69 -188.939 -187.69\nc-15.8496 -5.89941 -27.3398 -10.1797 -40.9404 -20.2402c-4.53613 -3.35645 -12.7969 -6.08008 -18.4395 -6.08008c-7.00586 0 -16.7461 3.9873 -21.7402 8.90039l-37.6797 37.4297c30.1094 27.6699 52.8594 36.3301 76.7197 45.3301\nc28.2998 10.5898 57.5098 21.54 97.2998 61.3203s50.7803 69 61.4199 97.3301c9.81055 26.3096 19.1104 51.1602 54 86c34.8906 34.8398 59.6904 44.1504 85.9502 54c26.0703 9.79004 53.0605 20.1602 88.25 52.79z\" />\n    <glyph glyph-name=\"book-medical\" unicode=\"&#xf7e6;\" horiz-adv-x=\"448\" \nd=\"M448 89.5996c0 -9.59961 -3.2002 -15.999 -9.59961 -19.1992c-3.2002 -12.8008 -3.2002 -57.6006 0 -73.6006c6.39941 -6.39941 9.59961 -12.7998 9.59961 -19.2002v-16c0 -16 -12.7998 -25.5996 -25.5996 -25.5996h-326.4c-54.4004 0 -96 41.5996 -96 96v320\nc0 54.4004 41.5996 96 96 96h326.4c16 0 25.5996 -9.59961 25.5996 -25.5996v-332.801zM144 280v-48c0 -4.41602 3.58398 -8 8 -8h56v-56c0 -4.41602 3.58398 -8 8 -8h48c4.41602 0 8 3.58398 8 8v56h56c4.41602 0 8 3.58398 8 8v48c0 4.41602 -3.58398 8 -8 8h-56v56\nc0 4.41602 -3.58398 8 -8 8h-48c-4.41602 0 -8 -3.58398 -8 -8v-56h-56c-4.41602 0 -8 -3.58398 -8 -8zM380.8 0v64h-284.8c-16 0 -32 -12.7998 -32 -32s12.7998 -32 32 -32h284.8z\" />\n    <glyph glyph-name=\"bread-slice\" unicode=\"&#xf7ec;\" horiz-adv-x=\"576\" \nd=\"M288 448c180 0 288 -93.4004 288 -169.14c0 -30.3008 -24.2402 -54.8604 -64 -54.8604v-256c0 -17.6699 -16.1201 -32 -36 -32h-376c-19.8799 0 -36 14.3301 -36 32v256c-39.7598 0 -64 24.5596 -64 54.8604c0 75.7393 108 169.14 288 169.14z\" />\n    <glyph glyph-name=\"cheese\" unicode=\"&#xf7ef;\" \nd=\"M0 160h512v-160c0 -17.6641 -14.3359 -32 -32 -32h-448c-17.6641 0 -32 14.3359 -32 32v160zM299.83 416c118.17 -6.2002 212.17 -104.11 212.17 -224h-512l278.7 217c4.83984 3.875 13.7998 7.01953 20 7.01953c0.311523 0 0.818359 -0.00878906 1.12988 -0.0195312z\n\" />\n    <glyph glyph-name=\"clinic-medical\" unicode=\"&#xf7f2;\" horiz-adv-x=\"576\" \nd=\"M288 333l218.74 -192.9c1.54004 -1.37988 3.55957 -2.04004 5.25977 -3.19922v-184.9c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16v184.94c1.78027 1.20996 3.84961 1.88965 5.46973 3.34961zM384 72v48c0 4.41602 -3.58398 8 -8 8h-56v56\nc0 4.41602 -3.58398 8 -8 8h-48c-4.41602 0 -8 -3.58398 -8 -8v-56h-56c-4.41602 0 -8 -3.58398 -8 -8v-48c0 -4.41602 3.58398 -8 8 -8h56v-56c0 -4.41602 3.58398 -8 8 -8h48c4.41602 0 8 3.58398 8 8v56h56c4.41602 0 8 3.58398 8 8zM570.69 211.72\nc2.93066 -2.63184 5.31055 -7.96484 5.31055 -11.9053c0 -3.38086 -1.83301 -8.16797 -4.09082 -10.6846l-21.4004 -23.8203c-2.63184 -2.93066 -7.96484 -5.30957 -11.9043 -5.30957c-3.38574 0 -8.17773 1.83691 -10.6953 4.09961l-229.32 202.271\nc-2.50391 2.20898 -7.24609 4.00195 -10.585 4.00195s-8.08105 -1.79297 -10.585 -4.00195l-229.32 -202.28c-2.51758 -2.2627 -7.30957 -4.09961 -10.6953 -4.09961c-3.93848 0 -9.27246 2.37891 -11.9043 5.30957l-21.4102 23.8203\nc-2.2627 2.51758 -4.09961 7.30957 -4.09961 10.6953c0 3.93945 2.37891 9.27246 5.30957 11.9043l256 226c6.2832 5.68066 18.2559 10.29 26.7256 10.29c8.46875 0 20.4424 -4.60938 26.7246 -10.29z\" />\n    <glyph glyph-name=\"comment-medical\" unicode=\"&#xf7f5;\" \nd=\"M256 416c141.39 0 256 -93.1201 256 -208s-114.61 -208 -256 -208h-0.473633c-30.4814 0 -78.3838 8.68164 -106.927 19.3799c-24.5996 -19.6299 -74.3398 -51.3799 -140.6 -51.3799c-4.41113 0.00488281 -7.99023 3.58887 -7.99023 8\nc0 1.75879 0.981445 4.22266 2.19043 5.5c0.5 0.5 42.2598 45.4502 54.7998 95.7598c-35.5898 35.7402 -57 81.1807 -57 130.74c0 114.88 114.62 208 256 208zM352 184v48c0 4.41602 -3.58398 8 -8 8h-56v56c0 4.41602 -3.58398 8 -8 8h-48c-4.41602 0 -8 -3.58398 -8 -8\nv-56h-56c-4.41602 0 -8 -3.58398 -8 -8v-48c0 -4.41602 3.58398 -8 8 -8h56v-56c0 -4.41602 3.58398 -8 8 -8h48c4.41602 0 8 3.58398 8 8v56h56c4.41602 0 8 3.58398 8 8z\" />\n    <glyph glyph-name=\"crutch\" unicode=\"&#xf7f7;\" \nd=\"M507.31 262.29c2.56348 -2.58301 4.64355 -7.63184 4.64355 -11.2695c0 -3.66602 -2.10742 -8.74219 -4.70312 -11.3301l-22.6201 -22.6309c-2.58691 -2.58691 -7.65625 -4.6875 -11.3145 -4.6875c-3.65918 0 -8.72852 2.10059 -11.3154 4.6875l-181 181\nc-2.58789 2.58691 -4.6875 7.65625 -4.6875 11.3154s2.09961 8.72852 4.6875 11.3154l22.6904 22.5996c2.58594 2.58496 7.65332 4.68262 11.3096 4.68262s8.72363 -2.09766 11.3096 -4.68262zM327.77 195.88l55.1006 55.1201l45.25 -45.2695l-109.68 -109.681\nc-10.7441 -10.748 -31.4814 -22.2393 -46.29 -25.6494l-120.25 -27.75l-102 -102c-2.58691 -2.58789 -7.65625 -4.6875 -11.3154 -4.6875s-8.72754 2.09961 -11.3154 4.6875l-22.6191 22.6191c-2.58789 2.58789 -4.6875 7.65625 -4.6875 11.3154\ns2.09961 8.72852 4.6875 11.3154l102 102l27.7393 120.26c3.4248 14.8057 14.9248 35.5439 25.6699 46.29l109.671 109.67l45.25 -45.25l-55.1006 -55.1006zM273.2 141.31l9.30957 9.31055l-67.8896 67.8896l-9.31055 -9.30957\nc-3.57715 -3.59082 -7.41211 -10.5127 -8.55957 -15.4502l-18.2998 -79.2998l79.2998 18.3193c4.94043 1.13379 11.8623 4.95996 15.4502 8.54004z\" />\n    <glyph glyph-name=\"egg\" unicode=\"&#xf7fb;\" horiz-adv-x=\"384\" \nd=\"M192 448c106 0 192 -214 192 -320s-86 -192 -192 -192s-192 86 -192 192s86 320 192 320z\" />\n    <glyph glyph-name=\"hamburger\" unicode=\"&#xf805;\" \nd=\"M464 192c26.4961 0 48 -21.5039 48 -48s-21.5039 -48 -48 -48h-416c-26.4961 0 -48 21.5039 -48 48s21.5039 48 48 48h416zM480 64c8.83203 0 16 -7.16797 16 -16v-16c0 -35.3281 -28.6719 -64 -64 -64h-352c-35.3281 0 -64 28.6719 -64 64v16\nc0 8.83203 7.16797 16 16 16h448zM58.6396 224c-34.5693 0 -54.6396 43.9102 -34.8193 75.8896c40.1797 64.9102 128.64 116.011 232.18 116.11c103.55 -0.0996094 192 -51.2002 232.18 -116.12c19.8008 -31.9795 -0.25 -75.8799 -34.8193 -75.8799h-394.721zM384 336\nc-8.83203 0 -16 -7.16797 -16 -16s7.16797 -16 16 -16s16 7.16797 16 16s-7.16797 16 -16 16zM256 368c-8.83203 0 -16 -7.16797 -16 -16s7.16797 -16 16 -16s16 7.16797 16 16s-7.16797 16 -16 16zM128 336c-8.83203 0 -16 -7.16797 -16 -16s7.16797 -16 16 -16\ns16 7.16797 16 16s-7.16797 16 -16 16z\" />\n    <glyph glyph-name=\"hand-middle-finger\" unicode=\"&#xf806;\" \nd=\"M479.93 130.88l0.0703125 -82.8799v0c0 -61.7969 -50.1533 -111.973 -111.95 -112h-215c-25.6074 0.00292969 -61.084 14.7012 -79.1895 32.8096l-30.9307 30.9307c-6.0332 6.03223 -10.9297 17.8525 -10.9297 26.3838v0.00585938v73.4697v0.00292969\nc0 12.7383 9.24707 27.7002 20.6396 33.3975l27.3604 15v-76c0 -4.41602 3.58398 -8 8 -8s8 3.58398 8 8v147.04c0 15.2598 12.8701 28.3799 30.8701 31.3799l30.6797 5.12012c17.8203 2.96973 34.4502 -8.38965 34.4502 -23.54v-32c0 -4.41602 3.58398 -8 8 -8\ns8 3.58398 8 8v200v0.0224609c0 26.4961 21.5039 48 48 48c0.408203 0 1.07129 -0.00976562 1.48047 -0.0224609c26.2695 -0.799805 46.5195 -23.7197 46.5195 -50v-198c0 -4.41602 3.58398 -8 8 -8s8 3.58398 8 8v32c0 15.1396 16.6299 26.5 34.4502 23.5303\nl38.3994 -6.40039c13.46 -2.25 23.1504 -12.0996 23.1504 -23.54v-49.5898l35.6504 -8.92969c15.5986 -3.89844 28.2686 -20.1113 28.2793 -36.1904z\" />\n    <glyph glyph-name=\"hard-hat\" unicode=\"&#xf807;\" \nd=\"M480 160v-64h-448v64c0 80.25 49.2803 148.92 119.19 177.62l40.8096 -81.6201v112c0 8.83203 7.16797 16 16 16h96c8.83203 0 16 -7.16797 16 -16v-112l40.8096 81.6201c69.9102 -28.7002 119.19 -97.3701 119.19 -177.62zM496 64c8.83203 0 16 -7.16797 16 -16v-32\nc0 -8.83203 -7.16797 -16 -16 -16h-480c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h480z\" />\n    <glyph glyph-name=\"hotdog\" unicode=\"&#xf80f;\" \nd=\"M488.56 424.56c12.9297 -12.9326 23.4238 -38.2715 23.4238 -56.5596s-10.4941 -43.627 -23.4238 -56.5596l-352 -352c-13.0205 -13.4824 -38.7998 -24.4238 -57.543 -24.4238c-44.1592 0 -80 35.8408 -80 80c0 18.7432 10.9414 44.5225 24.4238 57.543l352 352\nc12.9326 12.9297 38.2715 23.4238 56.5596 23.4238s43.627 -10.4941 56.5596 -23.4238zM438.63 329.37c2.58691 2.58691 4.68652 7.65625 4.68652 11.3145c0 8.83301 -7.16797 16.002 -16.001 16.002c-3.65918 0 -8.72852 -2.09961 -11.3154 -4.68652\nc-12.4102 -12.4102 -21.7598 -14 -34.71 -16.2305c-14.4004 -2.46973 -32.3203 -5.55957 -51.9199 -25.1494c-19.6006 -19.5898 -22.6699 -37.5205 -25.1396 -51.9199c-2.24023 -12.9502 -3.84082 -22.3105 -16.2402 -34.71\nc-12.4004 -12.4004 -21.7002 -14.0098 -34.7002 -16.2305c-14.4004 -2.46973 -32.3203 -5.5498 -51.9199 -25.1396c-19.6006 -19.5898 -22.6699 -37.5205 -25.1504 -51.9199c-2.21973 -12.9502 -3.80957 -22.29 -16.2197 -34.7002s-21.71 -14.0098 -34.71 -16.2305\nc-14.4004 -2.46973 -32.3203 -5.5498 -51.9199 -25.1396c-2.58691 -2.58691 -4.68652 -7.65625 -4.68652 -11.3145c0 -8.83301 7.16797 -16.002 16.001 -16.002c3.65918 0 8.72852 2.09961 11.3154 4.68652c12.4004 12.4004 21.7598 14 34.7002 16.2305\nc14.3994 2.46973 32.3301 5.55957 51.9297 25.1494c19.6006 19.5898 22.6699 37.5205 25.1396 51.9199c2.23047 12.9502 3.83008 22.2998 16.2305 34.7002s21.75 14 34.7002 16.2197c14.3994 2.48047 32.3193 5.56055 51.9199 25.1504\nc19.5996 19.5898 22.6699 37.5195 25.1494 51.9199c2.23047 12.9502 3.83008 22.3096 16.2305 34.71s21.7598 14 34.7002 16.2305c14.4102 2.46973 32.3301 5.5498 51.9297 25.1396zM31.4404 125.82l-11.5508 11.5498c-24.9893 24.9902 -26.6592 63.8398 -3.71973 86.7803\nl207.68 207.68c22.9404 22.9395 61.79 21.2803 86.79 -3.71973l11.54 -11.5508zM480.56 258.18l11.5508 -11.54c24.9893 -25 26.6592 -63.8496 3.71973 -86.79l-207.68 -207.68c-22.9404 -22.9395 -61.79 -21.2803 -86.79 3.71973l-11.54 11.5508z\" />\n    <glyph glyph-name=\"ice-cream\" unicode=\"&#xf810;\" horiz-adv-x=\"448\" \nd=\"M368 288c26.4961 0 48 -21.5039 48 -48s-21.5039 -48 -48 -48h-288c-26.4961 0 -48 21.5039 -48 48s21.5039 48 48 48h0.94043c-0.519531 4.51855 -0.94043 11.8779 -0.94043 16.4268c0 79.4883 64.5117 144 144 144s144 -64.5117 144 -144\nc0 -4.54883 -0.420898 -11.9082 -0.94043 -16.4268h0.94043zM195.38 -45.6904l-99.3799 205.69h256l-99.3799 -205.69c-4.66504 -10.1084 -17.4863 -18.3135 -28.6201 -18.3135s-23.9551 8.20508 -28.6201 18.3135z\" />\n    <glyph glyph-name=\"laptop-medical\" unicode=\"&#xf812;\" horiz-adv-x=\"640\" \nd=\"M232 224c-4.41602 0 -8 3.58398 -8 8v48c0 4.41602 3.58398 8 8 8h56v56c0 4.41602 3.58398 8 8 8h48c4.41602 0 8 -3.58398 8 -8v-56h56c4.41602 0 8 -3.58398 8 -8v-48c0 -4.41602 -3.58398 -8 -8 -8h-56v-56c0 -4.41602 -3.58398 -8 -8 -8h-48\nc-4.41602 0 -8 3.58398 -8 8v56h-56zM576 400v-336h-512v336c0.0771484 26.4189 21.5811 47.9229 48 48h416c26.4189 -0.0771484 47.9229 -21.5811 48 -48zM512 128v256h-384v-256h384zM624 32c8.83203 0 16 -7.16797 16 -16v-16\nc-0.104492 -35.2236 -28.7764 -63.8955 -64 -64h-512c-35.2236 0.104492 -63.8955 28.7764 -64 64v16c0 8.83203 7.16797 16 16 16h239.23c-0.230469 -14.5303 14.0791 -32 32.7695 -32h60.7998c18.0303 0 32 12.1904 32.7402 32h242.46z\" />\n    <glyph glyph-name=\"pager\" unicode=\"&#xf815;\" \nd=\"M448 384c35.3281 0 64 -28.6719 64 -64v-256c0 -35.3281 -28.6719 -64 -64 -64h-384c-35.3281 0 -64 28.6719 -64 64v256c0 35.3281 28.6719 64 64 64h384zM160 80v48h-80c-8.83203 0 -16 -7.16797 -16 -16v-16c0 -8.83203 7.16797 -16 16 -16h80zM288 96v16\nc0 8.83203 -7.16797 16 -16 16h-80v-48h80c8.83203 0 16 7.16797 16 16zM448 224v64c0 17.6641 -14.3359 32 -32 32h-320c-17.6641 0 -32 -14.3359 -32 -32v-64c0 -17.6641 14.3359 -32 32 -32h320c17.6641 0 32 14.3359 32 32z\" />\n    <glyph glyph-name=\"pepper-hot\" unicode=\"&#xf816;\" \nd=\"M330.67 184.88h107.46l37.0498 -38.54c-48.5293 -87.4697 -206.54 -210.34 -419.18 -210.34c-30.9121 0 -56 25.0879 -56 56s25.0879 56 56 56c141.58 0 163.44 181.24 221.92 250.82l52.75 -24.2207v-89.7197zM461.76 313.25\nc27.7324 -25.2861 50.2402 -76.2676 50.2402 -113.798v-0.142578c0 -13.6797 -2.2998 -26.6895 -5.55957 -39.3096l-54.6807 56.8799h-89.0898v78.2402l-74.6699 34.29c22.3398 14.0498 48.3398 22.5898 76.3398 22.5898\nc16.4658 -0.00683594 42.0732 -5.36523 57.1602 -11.96c18.4502 37.2197 8.25977 61.96 1.40039 72.3203c-0.787109 1.14062 -1.42578 3.19043 -1.42578 4.57617c0 1.82227 1.03711 4.35449 2.31543 5.65332l22.9004 23c1.29688 1.31836 3.85156 2.38867 5.70117 2.38867\nc2.1123 0 4.90234 -1.33398 6.22852 -2.97852c18.5596 -23.4805 35.2998 -71.9102 3.13965 -131.75z\" />\n    <glyph glyph-name=\"pizza-slice\" unicode=\"&#xf818;\" \nd=\"M158.87 447.85c181.91 -17.1699 332.02 -164.93 352.899 -345.71c1.87012 -16.2197 -7.89941 -31.54 -23.6191 -35.8994l-56.9404 -15.7803c-7.94043 186.39 -134.86 311.51 -322.479 317l14.8096 56.2705c4.12988 15.6992 19.1699 25.6396 35.3301 24.1191z\nM100.4 335.85c176.069 -1.95996 294.88 -119.25 299.149 -294.14l-379 -105.1c-1.1709 -0.324219 -3.1084 -0.587891 -4.32422 -0.587891c-8.94824 0 -16.21 7.26172 -16.21 16.21c0 1.1582 0.239258 3.00781 0.53418 4.12793zM128 32c17.6641 0 32 14.3359 32 32\ns-14.3359 32 -32 32s-32 -14.3359 -32 -32s14.3359 -32 32 -32zM176 184c17.6641 0 32 14.3359 32 32s-14.3359 32 -32 32s-32 -14.3359 -32 -32s14.3359 -32 32 -32zM280 80c17.6641 0 32 14.3359 32 32s-14.3359 32 -32 32s-32 -14.3359 -32 -32s14.3359 -32 32 -32z\" />\n    <glyph glyph-name=\"trash-restore\" unicode=\"&#xf829;\" horiz-adv-x=\"448\" \nd=\"M53.2002 -19l-21.2002 339h384l-21.2002 -339c-1.55469 -24.8369 -23.0146 -44.9971 -47.8994 -45h-245.801c-24.8848 0.00292969 -46.3447 20.1631 -47.8994 45zM123.31 156.8c-10.0791 -10.6201 -2.93945 -28.7998 11.3203 -28.7998h57.3701v-112\nc0 -8.83203 7.16797 -16 16 -16h32c8.83203 0 16 7.16797 16 16v112h57.3701c14.2598 0 21.3994 18.1797 11.3203 28.7998l-89.3809 94.2598c-2.52441 2.72949 -7.5918 4.94336 -11.3096 4.94336s-8.78516 -2.21387 -11.3096 -4.94336zM432 416\nc8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h120l9.40039 18.7002c3.58984 7.3418 13.1357 13.2998 21.3086 13.2998h0.0908203h114.3h0.0175781\nc8.20215 0 17.8262 -5.95801 21.4824 -13.2998l9.40039 -18.7002h120z\" />\n    <glyph glyph-name=\"trash-restore-alt\" unicode=\"&#xf82a;\" horiz-adv-x=\"448\" \nd=\"M32 -16v336h384v-336c0 -26.4961 -21.5039 -48 -48 -48h-288c-26.4961 0 -48 21.5039 -48 48zM123.31 156.8c-10.0791 -10.6201 -2.93945 -28.7998 11.3203 -28.7998h57.3701v-112c0 -8.83203 7.16797 -16 16 -16h32c8.83203 0 16 7.16797 16 16v112h57.3701\nc14.2598 0 21.3994 18.1797 11.3203 28.7998l-89.3809 94.2598c-2.52441 2.72949 -7.5918 4.94336 -11.3096 4.94336s-8.78516 -2.21387 -11.3096 -4.94336zM432 416c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16\nv32c0 8.83203 7.16797 16 16 16h120l9.40039 18.7002c3.58984 7.3418 13.1357 13.2998 21.3086 13.2998h0.0908203h114.3h0.0175781c8.20215 0 17.8262 -5.95801 21.4824 -13.2998l9.40039 -18.7002h120z\" />\n    <glyph glyph-name=\"user-nurse\" unicode=\"&#xf82f;\" horiz-adv-x=\"448\" \nd=\"M57.7803 160c-8.82227 0.00976562 -15.9814 7.17773 -15.9814 16c0 2.09277 0.761719 5.30957 1.70117 7.17969c15.2305 29.8203 31.2803 62.2305 42.1699 95.54c7.58008 23.1904 10.3301 47.6904 10.3301 72.0801v49.2002l128 48l128 -48v-49.2002\nc0 -24.3896 2.78027 -48.8896 10.3496 -72.0801c10.8701 -33.3096 26.9199 -65.6895 42.1504 -95.54c0.939453 -1.87012 1.70117 -5.08691 1.70117 -7.17969c0 -8.82227 -7.15918 -15.9902 -15.9814 -16h-82.3594c-22.5107 -19.6797 -51.6201 -32 -83.8604 -32\ns-61.3496 12.3203 -83.8604 32h-82.3594zM184 376.33v-16.6602c0 -2.75977 2.24023 -5 5 -5h21.6699v-21.6699c0 -2.75977 2.24023 -5 5 -5h16.6602c2.75977 0 5 2.24023 5 5v21.6699h21.6699c2.75977 0 5 2.24023 5 5v16.6602c0 2.75977 -2.24023 5 -5 5h-21.6699v21.6699\nc0 2.75977 -2.24023 5 -5 5h-16.6602c-2.75977 0 -5 -2.24023 -5 -5v-21.6699h-21.6699c-2.75977 0 -5 -2.24023 -5 -5zM144 288v-32c0 -44.1602 35.8398 -80 80 -80s80 35.8398 80 80v32h-160zM319.41 128c71.4902 -3.09961 128.59 -61.5996 128.59 -133.79\nc0 -32.1318 -26.0781 -58.21 -58.21 -58.21v0h-331.58c-32.1318 0 -58.21 26.0781 -58.21 58.21c0 72.1904 57.0996 130.69 128.59 133.79l95.4102 -95.3896z\" />\n    <glyph glyph-name=\"wave-square\" unicode=\"&#xf83e;\" horiz-adv-x=\"640\" \nd=\"M476 -32h-152c-19.8721 0 -36 16.1279 -36 36v348h-96v-156c0 -19.8721 -16.1279 -36 -36 -36h-140c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h112v156c0 19.8721 16.1279 36 36 36h152c19.8721 0 36 -16.1279 36 -36v-348h96v156\nc0 19.8721 16.1279 36 36 36h140c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-112v-156c0 -19.8721 -16.1279 -36 -36 -36z\" />\n    <glyph glyph-name=\"biking\" unicode=\"&#xf84a;\" horiz-adv-x=\"640\" \nd=\"M400 352c-26.4961 0 -48 21.5039 -48 48s21.5039 48 48 48s48 -21.5039 48 -48s-21.5039 -48 -48 -48zM396 231l-41.3604 33.1104l-58.25 -49.9199l41.3604 -27.5703c7.86426 -5.24316 14.248 -17.1689 14.25 -26.6201v-128c0 -17.6641 -14.3359 -32 -32 -32\ns-32 14.3359 -32 32v110.88l-81.7305 54.5205c-7.86621 5.24316 -14.251 17.1719 -14.251 26.626c0 8.12305 5.00488 19.0068 11.1719 24.2939l112 96c4.95508 4.25781 14.2803 7.71289 20.8135 7.71289c6.20215 0 15.1602 -3.15039 19.9961 -7.0332l71.2197 -57h52.7803\nc17.6641 0 32 -14.3359 32 -32s-14.3359 -32 -32 -32h-64h-0.0595703c-6.18262 0 -15.1152 3.13574 -19.9404 7zM512 192c70.6562 0 128 -57.3438 128 -128s-57.3438 -128 -128 -128s-128 57.3438 -128 128s57.3438 128 128 128zM512 0c35.3281 0 64 28.6719 64 64\ns-28.6719 64 -64 64s-64 -28.6719 -64 -64s28.6719 -64 64 -64zM128 192c70.6562 0 128 -57.3438 128 -128s-57.3438 -128 -128 -128s-128 57.3438 -128 128s57.3438 128 128 128zM128 0c35.3281 0 64 28.6719 64 64s-28.6719 64 -64 64s-64 -28.6719 -64 -64\ns28.6719 -64 64 -64z\" />\n    <glyph glyph-name=\"border-all\" unicode=\"&#xf84c;\" horiz-adv-x=\"448\" \nd=\"M416 416c17.6641 0 32 -14.3359 32 -32v-384c0 -17.6641 -14.3359 -32 -32 -32h-384c-17.6641 0 -32 14.3359 -32 32v384c0 17.6641 14.3359 32 32 32h384zM384 352h-128v-128h128v128zM192 352h-128v-128h128v128zM64 32h128v128h-128v-128zM256 32h128v128h-128v-128z\n\" />\n    <glyph glyph-name=\"border-none\" unicode=\"&#xf850;\" horiz-adv-x=\"448\" \nd=\"M240 224c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM336 224c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32\nc0 8.83203 7.16797 16 16 16h32zM432 224c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM144 224c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32\nc-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM240 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM336 32c8.83203 0 16 -7.16797 16 -16v-32\nc0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM432 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM432 128\nc8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM432 320c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32\nc0 8.83203 7.16797 16 16 16h32zM240 128c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM240 320c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32\nc-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM144 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM240 416c8.83203 0 16 -7.16797 16 -16v-32\nc0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM336 416c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM432 416\nc8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM48 224c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32\nc0 8.83203 7.16797 16 16 16h32zM48 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM48 128c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32\nc-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM48 320c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM48 416c8.83203 0 16 -7.16797 16 -16v-32\nc0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM144 416c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32z\" />\n    <glyph glyph-name=\"border-style\" unicode=\"&#xf853;\" horiz-adv-x=\"448\" \nd=\"M240 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM144 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32\nc0 8.83203 7.16797 16 16 16h32zM336 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM432 224c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32\nc-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM432 128c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM432 32c8.83203 0 16 -7.16797 16 -16v-32\nc0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM432 320c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM432 416\nc8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-368v-368c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v400c0 17.6641 14.3359 32 32 32h400z\" />\n    <glyph glyph-name=\"fan\" unicode=\"&#xf863;\" \nd=\"M352.57 320c81.79 0 149.3 -61.6299 159.3 -141.33c1.30957 -10.4795 -7.17969 -19.6396 -17.6201 -18.5898l-123.11 12.4102c8.34082 -22.9707 12.8604 -48.9707 12.8604 -77.0605c0 -81.79 -61.6299 -149.3 -141.33 -159.3\nc-10.4795 -1.30957 -19.6396 7.19043 -18.5898 17.6201l12.4102 123.11c-22.9707 -8.34082 -48.9707 -12.8604 -77.0605 -12.8604c-81.79 0 -149.3 61.6299 -159.3 141.33c-1.30957 10.4795 7.17969 19.6699 17.6201 18.5898l123.11 -12.4102\nc-8.34082 22.9707 -12.8604 48.9707 -12.8604 77.0605c0 81.79 61.6299 149.3 141.33 159.3c10.4795 1.30957 19.6699 -7.17969 18.5898 -17.6201l-12.4102 -123.11c22.9707 8.34082 48.9707 12.8604 77.0605 12.8604zM256 160c17.6641 0 32 14.3359 32 32\ns-14.3359 32 -32 32s-32 -14.3359 -32 -32s14.3359 -32 32 -32z\" />\n    <glyph glyph-name=\"icons\" unicode=\"&#xf86d;\" \nd=\"M116.65 228.65l-96.79 99.8301c-28 29.0293 -26.4102 77.0996 5 103.88c27.3896 23.3398 68.1895 19.1396 93.29 -6.80078l9.84961 -10.1396l9.86035 10.1396c25.1396 25.9404 65.8896 30.1406 93.2793 6.80078c31.4102 -26.7803 33.0605 -74.8799 4.91016 -103.88\nl-96.75 -99.8301c-2.55566 -2.66992 -7.62891 -4.83594 -11.3252 -4.83594c-3.69531 0 -8.76855 2.16602 -11.3242 4.83594zM260.57 128.16c15.1406 -0.0107422 27.4297 -12.3086 27.4297 -27.4502v-0.00976562v-137.25v0c0 -15.1416 -12.2891 -27.4395 -27.4297 -27.4502\nh-233.141c-15.1406 0.00585938 -27.4297 12.2988 -27.4297 27.4404v0.00976562v137.25v0.00976562c0 15.1523 12.2979 27.4502 27.4502 27.4502h0.00976562h48l7 14.2402c3.67773 9.81445 15.168 17.7793 25.6484 17.7793h0.0117188h71.71h0.0107422\nc10.4814 0 21.9717 -7.96484 25.6494 -17.7793l7.08008 -14.2402h48zM144 -20c28.7041 0 52 23.2959 52 52s-23.2959 52 -52 52s-52 -23.2959 -52 -52s23.2959 -52 52 -52zM499.4 95.9004c9.70996 0 15.75 -8.79004 10.8691 -15.7002l-92.3994 -138.91\nc-2.19629 -2.90039 -6.93262 -5.25488 -10.5713 -5.25488c-0.0957031 0 -0.25293 0.00195312 -0.348633 0.00488281c-8.03027 0 -14.1201 6.25 -12.2305 12.9004l24.2002 83h-62.3096c-7.62012 0 -13.5 5.58984 -12.5 11.8896l16.7998 106.93\nc0.839844 5.2002 6.2002 9.10059 12.5 9.10059h75.5898c8.25 0 14.2803 -6.56055 12.1797 -13.21l-22.3594 -50.75h60.5801zM478.08 447.67c17.9199 2.75 33.9199 -12.1895 33.9199 -31.6699v-144.26c-0.269531 -26.3398 -28.7998 -47.6602 -64 -47.6602\nc-35.3496 0 -64 21.4795 -64 48c0 26.5195 28.6504 48 64 48c4.46191 -0.0400391 11.6299 -0.801758 16 -1.7002v47.1797l-112 -17.2197v-108.58c-0.269531 -26.3398 -28.7998 -47.6602 -64 -47.6602c-35.3496 0 -64 21.4805 -64 48c0 26.5205 28.6504 48 64 48\nc4.46191 -0.0400391 11.6299 -0.801758 16 -1.69922v106.77c0 15.9102 10.8701 29.4102 25.5098 31.6602z\" />\n    <glyph glyph-name=\"phone-alt\" unicode=\"&#xf879;\" \nd=\"M497.39 86.2002c8.06055 -3.50586 14.6016 -13.4844 14.6016 -22.2744c0 -1.48828 -0.264648 -3.87402 -0.59082 -5.32617l-24 -104c-2.37109 -10.2666 -12.8477 -18.5996 -23.3848 -18.5996h-0.015625c-256.1 0 -464 207.5 -464 464v0.00585938\nc0 10.5371 8.33301 21.0137 18.5996 23.3838l104 24c1.45996 0.332031 3.8584 0.601562 5.35547 0.601562c8.73242 0 18.6533 -6.49707 22.1445 -14.501l48 -112c1.06836 -2.49219 1.93457 -6.71582 1.93457 -9.42773c0 -6.28613 -3.95801 -14.6064 -8.83398 -18.5723\nl-60.6006 -49.6006c31.3398 -66.4688 110.721 -145.85 177.19 -177.189l49.5996 60.5996c3.97559 4.86914 12.3047 8.82129 18.5908 8.82129c2.70508 0 6.9209 -0.860352 9.40918 -1.9209z\" />\n    <glyph glyph-name=\"phone-square-alt\" unicode=\"&#xf87b;\" horiz-adv-x=\"448\" \nd=\"M400 416c26.4961 0 48 -21.5039 48 -48v-352c0 -26.4961 -21.5039 -48 -48 -48h-352c-26.4961 0 -48 21.5039 -48 48v352c0 26.4961 21.5039 48 48 48h352zM383.61 108.63c0.198242 0.919922 0.373047 2.42969 0.389648 3.37012\nc-0.262695 5.28613 -4.33496 11.4648 -9.08984 13.79l-70 30c-1.57422 0.613281 -4.22168 1.15527 -5.91016 1.20996c-3.82422 -0.209961 -9.02539 -2.67383 -11.6104 -5.5l-31 -37.8896c-41.5469 19.6025 -91.1768 69.2324 -110.779 110.779l37.8896 31\nc2.82617 2.58496 5.29004 7.78613 5.5 11.6104c-0.0546875 1.68848 -0.597656 4.33594 -1.20996 5.91016l-30 70c-2.32812 4.75098 -8.50586 8.82324 -13.79 9.08984c-0.94043 -0.0205078 -2.4502 -0.195312 -3.37012 -0.389648l-65 -15\nc-6.19238 -1.6582 -11.4033 -8.20312 -11.6299 -14.6104c0 -160.29 130 -290 290 -290c6.58496 0.00292969 13.1309 5.21289 14.6104 11.6299z\" />\n    <glyph glyph-name=\"photo-video\" unicode=\"&#xf87c;\" horiz-adv-x=\"640\" \nd=\"M608 448c17.6641 0 32 -14.3359 32 -32v-320c0 -17.6641 -14.3359 -32 -32 -32h-128v320h-192v-64h-160v96c0 17.6641 14.3359 32 32 32h448zM232 345v30c0 4.96777 -4.03223 9 -9 9h-30c-4.96777 0 -9 -4.03223 -9 -9v-30c0 -4.96777 4.03223 -9 9 -9h30\nc4.96777 0 9 4.03223 9 9zM584 137v30c0 4.96777 -4.03223 9 -9 9h-30c-4.96777 0 -9 -4.03223 -9 -9v-30c0 -4.96777 4.03223 -9 9 -9h30c4.96777 0 9 4.03223 9 9zM584 241v30c0 4.96777 -4.03223 9 -9 9h-30c-4.96777 0 -9 -4.03223 -9 -9v-30\nc0 -4.96777 4.03223 -9 9 -9h30c4.96777 0 9 4.03223 9 9zM584 345v30c0 4.96777 -4.03223 9 -9 9h-30c-4.96777 0 -9 -4.03223 -9 -9v-30c0 -4.96777 4.03223 -9 9 -9h30c4.96777 0 9 4.03223 9 9zM416 288c17.6641 0 32 -14.3359 32 -32v-288\nc0 -17.6641 -14.3359 -32 -32 -32h-384c-17.6641 0 -32 14.3359 -32 32v288c0 17.6641 14.3359 32 32 32h384zM96 224c-17.6641 0 -32 -14.3359 -32 -32s14.3359 -32 32 -32s32 14.3359 32 32s-14.3359 32 -32 32zM384 0v96l-96 96l-128 -128l-32 32l-64 -64v-32h320z\" />\n    <glyph glyph-name=\"remove-format\" unicode=\"&#xf87d;\" horiz-adv-x=\"640\" \nd=\"M336 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-128c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32.4902l26.5098 79.5996l67.0898 -51.8301l-9.25977 -27.7695h11.1699zM633.82 -10.0996\nc3.41309 -2.65234 6.18359 -8.3125 6.18359 -12.6357c0 -3.02734 -1.50684 -7.42383 -3.36426 -9.81445l-19.6396 -25.2705c-2.65234 -3.41211 -8.31152 -6.18262 -12.6338 -6.18262c-3.03125 0 -7.43359 1.51172 -9.82617 3.37305l-588.36 454.72\nc-3.41016 2.65234 -6.17773 8.31055 -6.17773 12.6309c0 3.02832 1.50879 7.42773 3.36816 9.81934l19.6299 25.2695c2.65234 3.41309 8.31152 6.18262 12.6338 6.18262c3.03125 0 7.43359 -1.51074 9.82617 -3.37207l114.54 -88.5205v43.9004c0 8.83203 7.16797 16 16 16\nh416c8.83203 0 16 -7.16797 16 -16v-96c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32h-117.83l-49.1699 -147.59zM309.91 240.24l31.9199 95.7598h-117.83v-29.3604z\" />\n    <glyph glyph-name=\"sort-alpha-down-alt\" unicode=\"&#xf881;\" horiz-adv-x=\"448\" \nd=\"M176 96c14.2197 0 21.3496 -17.2598 11.3301 -27.3096l-80 -96c-2.58691 -2.58496 -7.65332 -4.68262 -11.3105 -4.68262c-3.65625 0 -8.72266 2.09766 -11.3096 4.68262l-80 96c-10.0703 10.0693 -2.90039 27.3096 11.29 27.3096h48v304c0 8.83203 7.16797 16 16 16h32\nc8.83203 0 16 -7.16797 16 -16v-304h48zM288 224c-8.83203 0 -16 7.16797 -16 16v17.6299v0.00292969c0 7.93262 4.81152 18.6475 10.7402 23.917l61.2598 70.4502h-56c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h128c8.83203 0 16 -7.16797 16 -16\nv-17.6299v-0.00292969c0 -7.93262 -4.81152 -18.6475 -10.7402 -23.917l-61.2598 -70.4502h56c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-128zM447.06 -10.6201c0.514648 -1.44043 0.931641 -3.85059 0.931641 -5.37988\nc0 -8.82715 -7.16406 -15.9951 -15.9912 -16h-24.8398h-0.0449219c-6.42773 0 -13.249 4.96387 -15.2256 11.0801l-4.40918 12.9199h-71l-4.4209 -12.9199c-1.97559 -6.11621 -8.79688 -11.0801 -15.2246 -11.0801h-0.00488281h-24.8301\nc-8.82715 0.00488281 -15.9912 7.17285 -15.9912 16c0 1.5293 0.416992 3.93945 0.931641 5.37988l59.2695 160c2.09277 5.8623 8.84375 10.6201 15.0684 10.6201h0.00195312h41.4395h0.00195312c6.22461 0 12.9756 -4.75781 15.0684 -10.6201zM335.61 48h32.7793\nl-16.3896 48z\" />\n    <glyph glyph-name=\"sort-alpha-up-alt\" unicode=\"&#xf882;\" horiz-adv-x=\"448\" \nd=\"M16 288c-14.2197 0 -21.3496 17.2598 -11.3096 27.3096l80 96c2.58594 2.58496 7.65332 4.68262 11.3096 4.68262s8.72363 -2.09766 11.3096 -4.68262l80 -96c10.0703 -10.0693 2.90039 -27.3096 -11.3096 -27.3096h-48v-304c0 -8.83203 -7.16797 -16 -16 -16h-32\nc-8.83203 0 -16 7.16797 -16 16v304h-48zM288 224c-8.83203 0 -16 7.16797 -16 16v17.6299v0.00292969c0 7.93262 4.81152 18.6475 10.7402 23.917l61.2598 70.4502h-56c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h128c8.83203 0 16 -7.16797 16 -16\nv-17.6299v-0.00292969c0 -7.93262 -4.81152 -18.6475 -10.7402 -23.917l-61.2598 -70.4502h56c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-128zM447.06 -10.6201c0.514648 -1.44043 0.931641 -3.85059 0.931641 -5.37988\nc0 -8.82715 -7.16406 -15.9951 -15.9912 -16h-24.8398h-0.0449219c-6.42773 0 -13.249 4.96387 -15.2256 11.0801l-4.40918 12.9199h-71l-4.4209 -12.9199c-1.97559 -6.11621 -8.79688 -11.0801 -15.2246 -11.0801h-0.00488281h-24.8301\nc-8.82715 0.00488281 -15.9912 7.17285 -15.9912 16c0 1.5293 0.416992 3.93945 0.931641 5.37988l59.2695 160c2.09277 5.8623 8.84375 10.6201 15.0684 10.6201h0.00195312h41.4395h0.00195312c6.22461 0 12.9756 -4.75781 15.0684 -10.6201zM335.61 48h32.7793\nl-16.3896 48z\" />\n    <glyph glyph-name=\"sort-amount-down-alt\" unicode=\"&#xf884;\" \nd=\"M240 352c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h64c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-64zM240 224c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h128c8.83203 0 16 -7.16797 16 -16v-32\nc0 -8.83203 -7.16797 -16 -16 -16h-128zM496 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-256c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h256zM240 96c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h192\nc8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-192zM176 96c14.2197 0 21.3496 -17.2598 11.3301 -27.3096l-80 -96c-2.58691 -2.58496 -7.65332 -4.68262 -11.3105 -4.68262c-3.65625 0 -8.72266 2.09766 -11.3096 4.68262l-80 96\nc-10.0801 10.0693 -2.90039 27.3096 11.29 27.3096h48v304c0 8.83203 7.16797 16 16 16h32c8.83203 0 16 -7.16797 16 -16v-304h48z\" />\n    <glyph glyph-name=\"sort-amount-up-alt\" unicode=\"&#xf885;\" \nd=\"M240 352c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h64c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-64zM240 224c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h128c8.83203 0 16 -7.16797 16 -16v-32\nc0 -8.83203 -7.16797 -16 -16 -16h-128zM496 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-256c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h256zM240 96c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h192\nc8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-192zM16 288c-14.2197 0 -21.3496 17.2598 -11.3096 27.3096l80 96c2.58594 2.58496 7.65332 4.68262 11.3096 4.68262s8.72363 -2.09766 11.3096 -4.68262l80 -96\nc10.0801 -10.0693 2.90039 -27.3096 -11.3096 -27.3096h-48v-304c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v304h-48z\" />\n    <glyph glyph-name=\"sort-numeric-down-alt\" unicode=\"&#xf886;\" horiz-adv-x=\"448\" \nd=\"M176 96c14.2197 0 21.3496 -17.2598 11.3301 -27.3096l-80 -96c-2.58691 -2.58496 -7.65332 -4.68262 -11.3105 -4.68262c-3.65625 0 -8.72266 2.09766 -11.3096 4.68262l-80 96c-10.0703 10.0693 -2.90039 27.3096 11.29 27.3096h48v304c0 8.83203 7.16797 16 16 16h32\nc8.83203 0 16 -7.16797 16 -16v-304h48zM400 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-96c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h16v64h-16c-8.82422 0.0078125 -15.9863 7.17578 -15.9863 16\nc0 2.08984 0.759766 5.30176 1.69629 7.16992l16 32c2.44141 4.87012 8.84277 8.8252 14.29 8.83008h48c8.83203 0 16 -7.16797 16 -16v-112h16zM330.17 413.09c53.4502 14.25 101.83 -25.8799 101.85 -77.0898v-10.7695c0 -70.3906 -28.25 -107.23 -86.25 -132\nc-8.36914 -3.58008 -18.0293 1.2793 -20.8994 9.90918l-9.90039 20c-2.62012 7.87012 0.610352 16.9404 8.18066 20.3408c6.2793 2.71387 15.6201 8.49805 20.8496 12.9092c-47.6396 4.76074 -83.0996 51.4805 -68.8301 102.53c6.80762 23.4512 31.4482 47.7197 55 54.1699z\nM352 316c11.04 0 20 8.95996 20 20s-8.95996 20 -20 20s-20 -8.95996 -20 -20s8.95996 -20 20 -20z\" />\n    <glyph glyph-name=\"sort-numeric-up-alt\" unicode=\"&#xf887;\" horiz-adv-x=\"448\" \nd=\"M107.31 411.31l80 -96c10.0703 -10.0693 2.90039 -27.3096 -11.3096 -27.3096h-48v-304c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v304h-48c-14.2197 0 -21.3496 17.2598 -11.3096 27.3096l80 96\nc2.58594 2.58496 7.65332 4.68262 11.3096 4.68262s8.72363 -2.09766 11.3096 -4.68262zM400 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-96c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h16v64h-16\nc-8.82422 0.0078125 -15.9863 7.17578 -15.9863 16c0 2.08984 0.759766 5.30176 1.69629 7.16992l16 32c2.44141 4.87012 8.84277 8.8252 14.29 8.83008h48c8.83203 0 16 -7.16797 16 -16v-112h16zM330.17 413.09c53.4502 14.25 101.83 -25.8799 101.85 -77.0898v-10.7695\nc0 -70.3906 -28.25 -107.23 -86.25 -132c-8.36914 -3.58008 -18.0293 1.2793 -20.8994 9.90918l-9.90039 20c-2.62012 7.87012 0.610352 16.9404 8.18066 20.3408c6.2793 2.71387 15.6201 8.49805 20.8496 12.9092c-47.6396 4.76074 -83.0996 51.4805 -68.8301 102.53\nc6.80762 23.4512 31.4482 47.7197 55 54.1699zM352 316c11.04 0 20 8.95996 20 20s-8.95996 20 -20 20s-20 -8.95996 -20 -20s8.95996 -20 20 -20z\" />\n    <glyph glyph-name=\"spell-check\" unicode=\"&#xf891;\" horiz-adv-x=\"576\" \nd=\"M272 192c-8.83203 0 -16 7.16797 -16 16v224c0 8.83203 7.16797 16 16 16h75c42.2998 0 80.9004 -30.5703 84.6699 -72.6797c0.186523 -2.02051 0.337891 -5.30762 0.337891 -7.33691c0 -11.0186 -4.20996 -27.8516 -9.39746 -37.5732\nc14.0186 -13.0674 25.3965 -39.2256 25.3965 -58.3906c0 -1.29199 -0.0615234 -3.38867 -0.136719 -4.67969c-2.50977 -43.1396 -41.3105 -75.3398 -84.5098 -75.3398h-91.3604zM312 392v-48h40c13.248 0 24 10.752 24 24s-10.752 24 -24 24h-40zM312 296v-48h56\nc13.248 0 24 10.752 24 24s-10.752 24 -24 24h-56zM155.12 425.75l68.2998 -213.48c0.320312 -1.15625 0.580078 -3.06934 0.580078 -4.26953c0 -8.83203 -7.16797 -16 -16 -16v0h-24.9297h-0.000976562c-6.71875 0 -13.626 5.25488 -15.4189 11.7305l-11.9404 36.2695\nh-87.4199l-11.9404 -36.2695c-1.79297 -6.47559 -8.7002 -11.7305 -15.4189 -11.7305h-0.000976562h-24.9297c-8.82617 0.00488281 -15.9902 7.17383 -15.9902 16c0 1.2002 0.259766 3.11328 0.580078 4.26953l68.29 213.48c3.92871 12.2822 17.583 22.25 30.4785 22.25\nh0.00195312h25.2793h0.00195312c12.8955 0 26.5498 -9.96777 30.4785 -22.25zM89.3701 304h45.2598l-22.6299 68.7002zM571.37 171.52c2.58203 -2.58594 4.65723 -7.65039 4.65723 -11.3047c0 -3.64551 -2.08594 -8.70117 -4.65723 -11.2852l-208 -208.21\nc-2.5752 -2.60449 -7.6377 -4.71777 -11.2998 -4.71777c-3.66309 0 -8.72559 2.11328 -11.3008 4.71777l-112 112.21c-2.57617 2.58496 -4.66699 7.64551 -4.66699 11.2949c0 3.65039 2.09082 8.70996 4.66699 11.2949l45.3008 45.3008\nc2.57324 2.60352 7.63379 4.71777 11.2949 4.71777s8.72168 -2.11426 11.2949 -4.71777l55.4102 -55.5l151.5 151.5c2.57324 2.60352 7.63379 4.71777 11.2949 4.71777s8.72168 -2.11426 11.2949 -4.71777z\" />\n    <glyph glyph-name=\"voicemail\" unicode=\"&#xf897;\" horiz-adv-x=\"640\" \nd=\"M496 320c79.4883 0 144 -64.5117 144 -144s-64.5117 -144 -144 -144h-352c-79.4844 0.00390625 -143.993 64.5156 -143.993 144c0 79.4883 64.5117 144 144 144s144 -64.5117 144 -144c0 -24.1113 -10.8711 -59.9512 -24.2666 -80h112.52\nc-13.3955 20.0488 -24.2666 55.8887 -24.2666 80c0 79.4883 64.5117 144 144 144h0.00683594zM64 176c0 -44.1602 35.8398 -80 80 -80s80 35.8398 80 80s-35.8398 80 -80 80s-80 -35.8398 -80 -80zM496 96c44.1602 0 80 35.8398 80 80s-35.8398 80 -80 80\ns-80 -35.8398 -80 -80s35.8398 -80 80 -80z\" />\n  </font>\n</defs></svg>\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_023_update_sample_app/app/src/static/css/styles.css",
    "content": "body {\n    background-color: #f4f4f4;\n    margin-top: 50px;\n    font-family: 'Lato';\n}\n\n.item {\n    background-color: white;\n    padding: 15px;\n    margin-bottom: 15px;\n    border: transparent;\n    border-radius: 5px;\n    box-shadow: 0 0 1em #ccc;\n    transition: all .2s ease-in-out;\n}\n\n.item:hover {\n    box-shadow: 0 0 1em #aaa;\n}\n\n.item.completed {\n    text-decoration: line-through;\n}\n\n.toggles {\n    color: black;\n}\n\n.name {\n    padding-top: 3px;\n}\n\n.remove {\n    padding-left: 0;\n}\n\nbutton:focus {\n    border: 1px solid #333;\n}"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_023_update_sample_app/app/src/static/index.html",
    "content": "\n<!DOCTYPE html>\n<html>\n<head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no, maximum-scale=1.0, user-scalable=0\" />\n    <link rel=\"stylesheet\" href=\"css/bootstrap.min.css\" crossorigin=\"anonymous\" />\n    <link rel=\"stylesheet\" href=\"css/font-awesome/all.min.css\" crossorigin=\"anonymous\" />\n    <link href=\"https://fonts.googleapis.com/css?family=Lato&display=swap\" rel=\"stylesheet\" />\n    <link rel=\"stylesheet\" href=\"css/styles.css\" />\n    <title>Todo App</title>\n</head>\n<body>\n    <div id=\"root\"></div>\n    <script src=\"js/react.production.min.js\"></script>\n    <script src=\"js/react-dom.production.min.js\"></script>\n    <script src=\"js/react-bootstrap.js\"></script>\n    <script src=\"js/babel.min.js\"></script>\n    <script type=\"text/babel\" src=\"js/app.js\"></script>\n</body>\n</html>\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_023_update_sample_app/app/src/static/js/app.js",
    "content": "function App() {\n    const { Container, Row, Col } = ReactBootstrap;\n    return (\n        <Container>\n            <Row>\n                <Col md={{ offset: 3, span: 6 }}>\n                    <TodoListCard />\n                </Col>\n            </Row>\n        </Container>\n    );\n}\n\nfunction TodoListCard() {\n    const [items, setItems] = React.useState(null);\n\n    React.useEffect(() => {\n        fetch('/items')\n            .then(r => r.json())\n            .then(setItems);\n    }, []);\n\n    const onNewItem = React.useCallback(\n        newItem => {\n            setItems([...items, newItem]);\n        },\n        [items],\n    );\n\n    const onItemUpdate = React.useCallback(\n        item => {\n            const index = items.findIndex(i => i.id === item.id);\n            setItems([\n                ...items.slice(0, index),\n                item,\n                ...items.slice(index + 1),\n            ]);\n        },\n        [items],\n    );\n\n    const onItemRemoval = React.useCallback(\n        item => {\n            const index = items.findIndex(i => i.id === item.id);\n            setItems([...items.slice(0, index), ...items.slice(index + 1)]);\n        },\n        [items],\n    );\n\n    if (items === null) return 'Loading...';\n\n    return (\n        <React.Fragment>\n            <AddItemForm onNewItem={onNewItem} />\n            {items.length === 0 && (\n                <p className=\"text-center\">You have no todo items yet! Add one above!</p>\n            )}\n            {items.map(item => (\n                <ItemDisplay\n                    item={item}\n                    key={item.id}\n                    onItemUpdate={onItemUpdate}\n                    onItemRemoval={onItemRemoval}\n                />\n            ))}\n        </React.Fragment>\n    );\n}\n\nfunction AddItemForm({ onNewItem }) {\n    const { Form, InputGroup, Button } = ReactBootstrap;\n\n    const [newItem, setNewItem] = React.useState('');\n    const [submitting, setSubmitting] = React.useState(false);\n\n    const submitNewItem = e => {\n        e.preventDefault();\n        setSubmitting(true);\n        fetch('/items', {\n            method: 'POST',\n            body: JSON.stringify({ name: newItem }),\n            headers: { 'Content-Type': 'application/json' },\n        })\n            .then(r => r.json())\n            .then(item => {\n                onNewItem(item);\n                setSubmitting(false);\n                setNewItem('');\n            });\n    };\n\n    return (\n        <Form onSubmit={submitNewItem}>\n            <InputGroup className=\"mb-3\">\n                <Form.Control\n                    value={newItem}\n                    onChange={e => setNewItem(e.target.value)}\n                    type=\"text\"\n                    placeholder=\"New Item\"\n                    aria-describedby=\"basic-addon1\"\n                />\n                <InputGroup.Append>\n                    <Button\n                        type=\"submit\"\n                        variant=\"success\"\n                        disabled={!newItem.length}\n                        className={submitting ? 'disabled' : ''}\n                    >\n                        {submitting ? 'Adding...' : 'Add Item'}\n                    </Button>\n                </InputGroup.Append>\n            </InputGroup>\n        </Form>\n    );\n}\n\nfunction ItemDisplay({ item, onItemUpdate, onItemRemoval }) {\n    const { Container, Row, Col, Button } = ReactBootstrap;\n\n    const toggleCompletion = () => {\n        fetch(`/items/${item.id}`, {\n            method: 'PUT',\n            body: JSON.stringify({\n                name: item.name,\n                completed: !item.completed,\n            }),\n            headers: { 'Content-Type': 'application/json' },\n        })\n            .then(r => r.json())\n            .then(onItemUpdate);\n    };\n\n    const removeItem = () => {\n        fetch(`/items/${item.id}`, { method: 'DELETE' }).then(() =>\n            onItemRemoval(item),\n        );\n    };\n\n    return (\n        <Container fluid className={`item ${item.completed && 'completed'}`}>\n            <Row>\n                <Col xs={1} className=\"text-center\">\n                    <Button\n                        className=\"toggles\"\n                        size=\"sm\"\n                        variant=\"link\"\n                        onClick={toggleCompletion}\n                        aria-label={\n                            item.completed\n                                ? 'Mark item as incomplete'\n                                : 'Mark item as complete'\n                        }\n                    >\n                        <i\n                            className={`far ${\n                                item.completed ? 'fa-check-square' : 'fa-square'\n                            }`}\n                        />\n                    </Button>\n                </Col>\n                <Col xs={10} className=\"name\">\n                    {item.name}\n                </Col>\n                <Col xs={1} className=\"text-center remove\">\n                    <Button\n                        size=\"sm\"\n                        variant=\"link\"\n                        onClick={removeItem}\n                        aria-label=\"Remove Item\"\n                    >\n                        <i className=\"fa fa-trash text-danger\" />\n                    </Button>\n                </Col>\n            </Row>\n        </Container>\n    );\n}\n\nReactDOM.render(<App />, document.getElementById('root'));\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_023_update_sample_app/app/src/static/js/react-bootstrap.js",
    "content": "(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"), require(\"react-dom\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\", \"react-dom\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ReactBootstrap\"] = factory(require(\"react\"), require(\"react-dom\"));\n\telse\n\t\troot[\"ReactBootstrap\"] = factory(root[\"React\"], root[\"ReactDOM\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE__1__, __WEBPACK_EXTERNAL_MODULE__6__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 86);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nif (false) { var throwOnDirectAccess, ReactIs; } else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = __webpack_require__(58)();\n}\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__1__;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n  Copyright (c) 2017 Jed Watson.\n  Licensed under the MIT License (MIT), see\n  http://jedwatson.github.io/classnames\n*/\n\n/* global define */\n(function () {\n  'use strict';\n\n  var hasOwn = {}.hasOwnProperty;\n\n  function classNames() {\n    var classes = [];\n\n    for (var i = 0; i < arguments.length; i++) {\n      var arg = arguments[i];\n      if (!arg) continue;\n      var argType = typeof arg;\n\n      if (argType === 'string' || argType === 'number') {\n        classes.push(arg);\n      } else if (Array.isArray(arg) && arg.length) {\n        var inner = classNames.apply(null, arg);\n\n        if (inner) {\n          classes.push(inner);\n        }\n      } else if (argType === 'object') {\n        for (var key in arg) {\n          if (hasOwn.call(arg, key) && arg[key]) {\n            classes.push(key);\n          }\n        }\n      }\n    }\n\n    return classes.join(' ');\n  }\n\n  if ( true && module.exports) {\n    classNames.default = classNames;\n    module.exports = classNames;\n  } else if (true) {\n    // register as 'classnames', consistent with npm package name\n    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {\n      return classNames;\n    }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n  } else {}\n})();\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n\nmodule.exports = _assertThisInitialized;\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports) {\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nmodule.exports = _defineProperty;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports) {\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    \"default\": obj\n  };\n}\n\nmodule.exports = _interopRequireDefault;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__6__;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = uncontrollable;\n\nvar _react = _interopRequireDefault(__webpack_require__(1));\n\nvar _invariant = _interopRequireDefault(__webpack_require__(24));\n\nvar Utils = _interopRequireWildcard(__webpack_require__(39));\n\nfunction _interopRequireWildcard(obj) {\n  if (obj && obj.__esModule) {\n    return obj;\n  } else {\n    var newObj = {};\n\n    if (obj != null) {\n      for (var key in obj) {\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\n          var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};\n\n          if (desc.get || desc.set) {\n            Object.defineProperty(newObj, key, desc);\n          } else {\n            newObj[key] = obj[key];\n          }\n        }\n      }\n    }\n\n    newObj.default = obj;\n    return newObj;\n  }\n}\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n\nfunction uncontrollable(Component, controlledValues, methods) {\n  if (methods === void 0) {\n    methods = [];\n  }\n\n  var displayName = Component.displayName || Component.name || 'Component';\n  var canAcceptRef = Utils.canAcceptRef(Component);\n  var controlledProps = Object.keys(controlledValues);\n  var PROPS_TO_OMIT = controlledProps.map(Utils.defaultKey);\n  !(canAcceptRef || !methods.length) ?  false ? undefined : invariant(false) : void 0;\n\n  var UncontrolledComponent =\n  /*#__PURE__*/\n  function (_React$Component) {\n    _inheritsLoose(UncontrolledComponent, _React$Component);\n\n    function UncontrolledComponent() {\n      var _this;\n\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n      _this.handlers = Object.create(null);\n      controlledProps.forEach(function (propName) {\n        var handlerName = controlledValues[propName];\n\n        var handleChange = function handleChange(value) {\n          if (_this.props[handlerName]) {\n            var _this$props;\n\n            _this._notifying = true;\n\n            for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n              args[_key2 - 1] = arguments[_key2];\n            }\n\n            (_this$props = _this.props)[handlerName].apply(_this$props, [value].concat(args));\n\n            _this._notifying = false;\n          }\n\n          _this._values[propName] = value;\n          if (!_this.unmounted) _this.forceUpdate();\n        };\n\n        _this.handlers[handlerName] = handleChange;\n      });\n      if (methods.length) _this.attachRef = function (ref) {\n        _this.inner = ref;\n      };\n      return _this;\n    }\n\n    var _proto = UncontrolledComponent.prototype;\n\n    _proto.shouldComponentUpdate = function shouldComponentUpdate() {\n      //let the forceUpdate trigger the update\n      return !this._notifying;\n    };\n\n    _proto.componentWillMount = function componentWillMount() {\n      var _this2 = this;\n\n      var props = this.props;\n      this._values = Object.create(null);\n      controlledProps.forEach(function (key) {\n        _this2._values[key] = props[Utils.defaultKey(key)];\n      });\n    };\n\n    _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n      var _this3 = this;\n\n      var props = this.props;\n      controlledProps.forEach(function (key) {\n        /**\n         * If a prop switches from controlled to Uncontrolled\n         * reset its value to the defaultValue\n         */\n        if (!Utils.isProp(nextProps, key) && Utils.isProp(props, key)) {\n          _this3._values[key] = nextProps[Utils.defaultKey(key)];\n        }\n      });\n    };\n\n    _proto.componentWillUnmount = function componentWillUnmount() {\n      this.unmounted = true;\n    };\n\n    _proto.render = function render() {\n      var _this4 = this;\n\n      var _this$props2 = this.props,\n          innerRef = _this$props2.innerRef,\n          props = _objectWithoutPropertiesLoose(_this$props2, [\"innerRef\"]);\n\n      PROPS_TO_OMIT.forEach(function (prop) {\n        delete props[prop];\n      });\n      var newProps = {};\n      controlledProps.forEach(function (propName) {\n        var propValue = _this4.props[propName];\n        newProps[propName] = propValue !== undefined ? propValue : _this4._values[propName];\n      });\n      return _react.default.createElement(Component, _extends({}, props, newProps, this.handlers, {\n        ref: innerRef || this.attachRef\n      }));\n    };\n\n    return UncontrolledComponent;\n  }(_react.default.Component);\n\n  UncontrolledComponent.displayName = \"Uncontrolled(\" + displayName + \")\";\n  UncontrolledComponent.propTypes = _extends({\n    innerRef: function innerRef() {}\n  }, Utils.uncontrolledPropTypes(controlledValues, displayName));\n  methods.forEach(function (method) {\n    UncontrolledComponent.prototype[method] = function $proxiedMethod() {\n      var _this$inner;\n\n      return (_this$inner = this.inner)[method].apply(_this$inner, arguments);\n    };\n  });\n  var WrappedComponent = UncontrolledComponent;\n\n  if (_react.default.forwardRef) {\n    WrappedComponent = _react.default.forwardRef(function (props, ref) {\n      return _react.default.createElement(UncontrolledComponent, _extends({}, props, {\n        innerRef: ref\n      }));\n    });\n    WrappedComponent.propTypes = UncontrolledComponent.propTypes;\n  }\n\n  WrappedComponent.ControlledComponent = Component;\n  /**\n   * useful when wrapping a Component and you want to control\n   * everything\n   */\n\n  WrappedComponent.deferControlTo = function (newComponent, additions, nextMethods) {\n    if (additions === void 0) {\n      additions = {};\n    }\n\n    return uncontrollable(newComponent, _extends({}, controlledValues, additions), nextMethods);\n  };\n\n  return WrappedComponent;\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = useEventCallback;\n\nvar _react = __webpack_require__(1);\n\nvar _useCommittedRef = _interopRequireDefault(__webpack_require__(71));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction useEventCallback(fn) {\n  var ref = (0, _useCommittedRef.default)(fn);\n  return (0, _react.useCallback)(function () {\n    return ref.current.apply(void 0, arguments);\n  }, [ref]);\n}\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = qsa; // Zepto.js\n// (c) 2010-2015 Thomas Fuchs\n// Zepto.js may be freely distributed under the MIT license.\n\nvar simpleSelectorRE = /^[\\w-]*$/;\nvar toArray = Function.prototype.bind.call(Function.prototype.call, [].slice);\n\nfunction qsa(element, selector) {\n  var maybeID = selector[0] === '#',\n      maybeClass = selector[0] === '.',\n      nameOnly = maybeID || maybeClass ? selector.slice(1) : selector,\n      isSimple = simpleSelectorRE.test(nameOnly),\n      found;\n\n  if (isSimple) {\n    if (maybeID) {\n      element = element.getElementById ? element : document;\n      return (found = element.getElementById(nameOnly)) ? [found] : [];\n    }\n\n    if (element.getElementsByClassName && maybeClass) return toArray(element.getElementsByClassName(nameOnly));\n    return toArray(element.getElementsByTagName(selector));\n  }\n\n  return toArray(element.querySelectorAll(selector));\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _default = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = style;\n\nvar _camelizeStyle = _interopRequireDefault(__webpack_require__(40));\n\nvar _hyphenateStyle = _interopRequireDefault(__webpack_require__(60));\n\nvar _getComputedStyle2 = _interopRequireDefault(__webpack_require__(62));\n\nvar _removeStyle = _interopRequireDefault(__webpack_require__(63));\n\nvar _properties = __webpack_require__(26);\n\nvar _isTransform = _interopRequireDefault(__webpack_require__(64));\n\nfunction style(node, property, value) {\n  var css = '';\n  var transforms = '';\n  var props = property;\n\n  if (typeof property === 'string') {\n    if (value === undefined) {\n      return node.style[(0, _camelizeStyle.default)(property)] || (0, _getComputedStyle2.default)(node).getPropertyValue((0, _hyphenateStyle.default)(property));\n    } else {\n      (props = {})[property] = value;\n    }\n  }\n\n  Object.keys(props).forEach(function (key) {\n    var value = props[key];\n\n    if (!value && value !== 0) {\n      (0, _removeStyle.default)(node, (0, _hyphenateStyle.default)(key));\n    } else if ((0, _isTransform.default)(key)) {\n      transforms += key + \"(\" + value + \") \";\n    } else {\n      css += (0, _hyphenateStyle.default)(key) + \": \" + value + \";\";\n    }\n  });\n\n  if (transforms) {\n    css += _properties.transform + \": \" + transforms + \";\";\n  }\n\n  node.style.cssText += ';' + css;\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = exports.EXITING = exports.ENTERED = exports.ENTERING = exports.EXITED = exports.UNMOUNTED = void 0;\n\nvar PropTypes = _interopRequireWildcard(__webpack_require__(0));\n\nvar _react = _interopRequireDefault(__webpack_require__(1));\n\nvar _reactDom = _interopRequireDefault(__webpack_require__(6));\n\nvar _reactLifecyclesCompat = __webpack_require__(65);\n\nvar _PropTypes = __webpack_require__(66);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _interopRequireWildcard(obj) {\n  if (obj && obj.__esModule) {\n    return obj;\n  } else {\n    var newObj = {};\n\n    if (obj != null) {\n      for (var key in obj) {\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\n          var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};\n\n          if (desc.get || desc.set) {\n            Object.defineProperty(newObj, key, desc);\n          } else {\n            newObj[key] = obj[key];\n          }\n        }\n      }\n    }\n\n    newObj.default = obj;\n    return newObj;\n  }\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n\nvar UNMOUNTED = 'unmounted';\nexports.UNMOUNTED = UNMOUNTED;\nvar EXITED = 'exited';\nexports.EXITED = EXITED;\nvar ENTERING = 'entering';\nexports.ENTERING = ENTERING;\nvar ENTERED = 'entered';\nexports.ENTERED = ENTERED;\nvar EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n *   transition: `opacity ${duration}ms ease-in-out`,\n *   opacity: 0,\n * }\n *\n * const transitionStyles = {\n *   entering: { opacity: 0 },\n *   entered:  { opacity: 1 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n *   <Transition in={inProp} timeout={duration}>\n *     {state => (\n *       <div style={{\n *         ...defaultStyle,\n *         ...transitionStyles[state]\n *       }}>\n *         I'm a fade Transition!\n *       </div>\n *     )}\n *   </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n *  - `'entering'`\n *  - `'entered'`\n *  - `'exiting'`\n *  - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n *   const [inProp, setInProp] = useState(false);\n *   return (\n *     <div>\n *       <Transition in={inProp} timeout={500}>\n *         {state => (\n *           // ...\n *         )}\n *       </Transition>\n *       <button onClick={() => setInProp(true)}>\n *         Click to Enter\n *       </button>\n *     </div>\n *   );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nexports.EXITING = EXITING;\n\nvar Transition =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Transition, _React$Component);\n\n  function Transition(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n    var parentGroup = context.transitionGroup; // In the context of a TransitionGroup all enters are really appears\n\n    var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n    var initialStatus;\n    _this.appearStatus = null;\n\n    if (props.in) {\n      if (appear) {\n        initialStatus = EXITED;\n        _this.appearStatus = ENTERING;\n      } else {\n        initialStatus = ENTERED;\n      }\n    } else {\n      if (props.unmountOnExit || props.mountOnEnter) {\n        initialStatus = UNMOUNTED;\n      } else {\n        initialStatus = EXITED;\n      }\n    }\n\n    _this.state = {\n      status: initialStatus\n    };\n    _this.nextCallback = null;\n    return _this;\n  }\n\n  var _proto = Transition.prototype;\n\n  _proto.getChildContext = function getChildContext() {\n    return {\n      transitionGroup: null // allows for nested Transitions\n\n    };\n  };\n\n  Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n    var nextIn = _ref.in;\n\n    if (nextIn && prevState.status === UNMOUNTED) {\n      return {\n        status: EXITED\n      };\n    }\n\n    return null;\n  }; // getSnapshotBeforeUpdate(prevProps) {\n  //   let nextStatus = null\n  //   if (prevProps !== this.props) {\n  //     const { status } = this.state\n  //     if (this.props.in) {\n  //       if (status !== ENTERING && status !== ENTERED) {\n  //         nextStatus = ENTERING\n  //       }\n  //     } else {\n  //       if (status === ENTERING || status === ENTERED) {\n  //         nextStatus = EXITING\n  //       }\n  //     }\n  //   }\n  //   return { nextStatus }\n  // }\n\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.updateStatus(true, this.appearStatus);\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    var nextStatus = null;\n\n    if (prevProps !== this.props) {\n      var status = this.state.status;\n\n      if (this.props.in) {\n        if (status !== ENTERING && status !== ENTERED) {\n          nextStatus = ENTERING;\n        }\n      } else {\n        if (status === ENTERING || status === ENTERED) {\n          nextStatus = EXITING;\n        }\n      }\n    }\n\n    this.updateStatus(false, nextStatus);\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.cancelNextCallback();\n  };\n\n  _proto.getTimeouts = function getTimeouts() {\n    var timeout = this.props.timeout;\n    var exit, enter, appear;\n    exit = enter = appear = timeout;\n\n    if (timeout != null && typeof timeout !== 'number') {\n      exit = timeout.exit;\n      enter = timeout.enter; // TODO: remove fallback for next major\n\n      appear = timeout.appear !== undefined ? timeout.appear : enter;\n    }\n\n    return {\n      exit: exit,\n      enter: enter,\n      appear: appear\n    };\n  };\n\n  _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n    if (mounting === void 0) {\n      mounting = false;\n    }\n\n    if (nextStatus !== null) {\n      // nextStatus will always be ENTERING or EXITING.\n      this.cancelNextCallback();\n\n      var node = _reactDom.default.findDOMNode(this);\n\n      if (nextStatus === ENTERING) {\n        this.performEnter(node, mounting);\n      } else {\n        this.performExit(node);\n      }\n    } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n      this.setState({\n        status: UNMOUNTED\n      });\n    }\n  };\n\n  _proto.performEnter = function performEnter(node, mounting) {\n    var _this2 = this;\n\n    var enter = this.props.enter;\n    var appearing = this.context.transitionGroup ? this.context.transitionGroup.isMounting : mounting;\n    var timeouts = this.getTimeouts();\n    var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n    // if we are mounting and running this it means appear _must_ be set\n\n    if (!mounting && !enter) {\n      this.safeSetState({\n        status: ENTERED\n      }, function () {\n        _this2.props.onEntered(node);\n      });\n      return;\n    }\n\n    this.props.onEnter(node, appearing);\n    this.safeSetState({\n      status: ENTERING\n    }, function () {\n      _this2.props.onEntering(node, appearing);\n\n      _this2.onTransitionEnd(node, enterTimeout, function () {\n        _this2.safeSetState({\n          status: ENTERED\n        }, function () {\n          _this2.props.onEntered(node, appearing);\n        });\n      });\n    });\n  };\n\n  _proto.performExit = function performExit(node) {\n    var _this3 = this;\n\n    var exit = this.props.exit;\n    var timeouts = this.getTimeouts(); // no exit animation skip right to EXITED\n\n    if (!exit) {\n      this.safeSetState({\n        status: EXITED\n      }, function () {\n        _this3.props.onExited(node);\n      });\n      return;\n    }\n\n    this.props.onExit(node);\n    this.safeSetState({\n      status: EXITING\n    }, function () {\n      _this3.props.onExiting(node);\n\n      _this3.onTransitionEnd(node, timeouts.exit, function () {\n        _this3.safeSetState({\n          status: EXITED\n        }, function () {\n          _this3.props.onExited(node);\n        });\n      });\n    });\n  };\n\n  _proto.cancelNextCallback = function cancelNextCallback() {\n    if (this.nextCallback !== null) {\n      this.nextCallback.cancel();\n      this.nextCallback = null;\n    }\n  };\n\n  _proto.safeSetState = function safeSetState(nextState, callback) {\n    // This shouldn't be necessary, but there are weird race conditions with\n    // setState callbacks and unmounting in testing, so always make sure that\n    // we can cancel any pending setState callbacks after we unmount.\n    callback = this.setNextCallback(callback);\n    this.setState(nextState, callback);\n  };\n\n  _proto.setNextCallback = function setNextCallback(callback) {\n    var _this4 = this;\n\n    var active = true;\n\n    this.nextCallback = function (event) {\n      if (active) {\n        active = false;\n        _this4.nextCallback = null;\n        callback(event);\n      }\n    };\n\n    this.nextCallback.cancel = function () {\n      active = false;\n    };\n\n    return this.nextCallback;\n  };\n\n  _proto.onTransitionEnd = function onTransitionEnd(node, timeout, handler) {\n    this.setNextCallback(handler);\n    var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n    if (!node || doesNotHaveTimeoutOrListener) {\n      setTimeout(this.nextCallback, 0);\n      return;\n    }\n\n    if (this.props.addEndListener) {\n      this.props.addEndListener(node, this.nextCallback);\n    }\n\n    if (timeout != null) {\n      setTimeout(this.nextCallback, timeout);\n    }\n  };\n\n  _proto.render = function render() {\n    var status = this.state.status;\n\n    if (status === UNMOUNTED) {\n      return null;\n    }\n\n    var _this$props = this.props,\n        children = _this$props.children,\n        childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\"]); // filter props for Transtition\n\n\n    delete childProps.in;\n    delete childProps.mountOnEnter;\n    delete childProps.unmountOnExit;\n    delete childProps.appear;\n    delete childProps.enter;\n    delete childProps.exit;\n    delete childProps.timeout;\n    delete childProps.addEndListener;\n    delete childProps.onEnter;\n    delete childProps.onEntering;\n    delete childProps.onEntered;\n    delete childProps.onExit;\n    delete childProps.onExiting;\n    delete childProps.onExited;\n\n    if (typeof children === 'function') {\n      return children(status, childProps);\n    }\n\n    var child = _react.default.Children.only(children);\n\n    return _react.default.cloneElement(child, childProps);\n  };\n\n  return Transition;\n}(_react.default.Component);\n\nTransition.contextTypes = {\n  transitionGroup: PropTypes.object\n};\nTransition.childContextTypes = {\n  transitionGroup: function transitionGroup() {}\n};\nTransition.propTypes =  false ? undefined : {};\n\nfunction noop() {}\n\nTransition.defaultProps = {\n  in: false,\n  mountOnEnter: false,\n  unmountOnExit: false,\n  appear: false,\n  enter: true,\n  exit: true,\n  onEnter: noop,\n  onEntering: noop,\n  onEntered: noop,\n  onExit: noop,\n  onExiting: noop,\n  onExited: noop\n};\nTransition.UNMOUNTED = 0;\nTransition.EXITED = 1;\nTransition.ENTERING = 2;\nTransition.ENTERED = 3;\nTransition.EXITING = 4;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(Transition);\n\nexports.default = _default;\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = isRequiredForA11y;\n\nfunction isRequiredForA11y(validator) {\n  return function validate(props, propName, componentName, location, propFullName) {\n    var componentNameSafe = componentName || '<<anonymous>>';\n    var propFullNameSafe = propFullName || propName;\n\n    if (props[propName] == null) {\n      return new Error('The ' + location + ' `' + propFullNameSafe + '` is required to make ' + ('`' + componentNameSafe + '` accessible for users of assistive ') + 'technologies such as screen readers.');\n    }\n\n    for (var _len = arguments.length, args = Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++) {\n      args[_key - 5] = arguments[_key];\n    }\n\n    return validator.apply(undefined, [props, propName, componentName, location, propFullName].concat(args));\n  };\n}\n\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports) {\n\nfunction _extends() {\n  module.exports = _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = useUncontrolled;\n\nvar _react = __webpack_require__(1);\n\nvar Utils = _interopRequireWildcard(__webpack_require__(39));\n\nfunction _interopRequireWildcard(obj) {\n  if (obj && obj.__esModule) {\n    return obj;\n  } else {\n    var newObj = {};\n\n    if (obj != null) {\n      for (var key in obj) {\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\n          var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};\n\n          if (desc.get || desc.set) {\n            Object.defineProperty(newObj, key, desc);\n          } else {\n            newObj[key] = obj[key];\n          }\n        }\n      }\n    }\n\n    newObj.default = obj;\n    return newObj;\n  }\n}\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nfunction _toPropertyKey(arg) {\n  var key = _toPrimitive(arg, \"string\");\n\n  return typeof key === \"symbol\" ? key : String(key);\n}\n\nfunction _toPrimitive(input, hint) {\n  if (typeof input !== \"object\" || input === null) return input;\n  var prim = input[Symbol.toPrimitive];\n\n  if (prim !== undefined) {\n    var res = prim.call(input, hint || \"default\");\n    if (typeof res !== \"object\") return res;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n\n  return (hint === \"string\" ? String : Number)(input);\n}\n\nfunction useUncontrolled(props, config) {\n  return Object.keys(config).reduce(function (result, fieldName) {\n    var _extends2;\n\n    var defaultValue = result[Utils.defaultKey(fieldName)],\n        propsValue = result[fieldName],\n        rest = _objectWithoutPropertiesLoose(result, [Utils.defaultKey(fieldName), fieldName].map(_toPropertyKey));\n\n    var handlerName = config[fieldName];\n    var prevProps = (0, _react.useRef)({});\n\n    var _useState = (0, _react.useState)(defaultValue),\n        stateValue = _useState[0],\n        setState = _useState[1];\n\n    var isProp = Utils.isProp(props, fieldName);\n    var wasProp = Utils.isProp(prevProps.current, fieldName);\n    prevProps.current = props;\n    /**\n     * If a prop switches from controlled to Uncontrolled\n     * reset its value to the defaultValue\n     */\n\n    if (!isProp && wasProp) {\n      setState(defaultValue);\n    }\n\n    var propsHandler = props[handlerName];\n    var handler = (0, _react.useCallback)(function (value) {\n      for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        args[_key - 1] = arguments[_key];\n      }\n\n      if (propsHandler) propsHandler.apply(void 0, [value].concat(args));\n      setState(value);\n    }, [setState, propsHandler]);\n    return _extends({}, rest, (_extends2 = {}, _extends2[fieldName] = isProp ? propsValue : stateValue, _extends2[handlerName] = handler, _extends2));\n  }, props);\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = ownerDocument;\n\nfunction ownerDocument(node) {\n  return node && node.ownerDocument || document;\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports) {\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n\nmodule.exports = _inheritsLoose;\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = scrollbarSize;\n\nvar _inDOM = _interopRequireDefault(__webpack_require__(10));\n\nvar size;\n\nfunction scrollbarSize(recalc) {\n  if (!size && size !== 0 || recalc) {\n    if (_inDOM.default) {\n      var scrollDiv = document.createElement('div');\n      scrollDiv.style.position = 'absolute';\n      scrollDiv.style.top = '-9999px';\n      scrollDiv.style.width = '50px';\n      scrollDiv.style.height = '50px';\n      scrollDiv.style.overflow = 'scroll';\n      document.body.appendChild(scrollDiv);\n      size = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n      document.body.removeChild(scrollDiv);\n    }\n  }\n\n  return size;\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.isRequiredForA11y = exports.elementType = exports.deprecated = exports.componentOrElement = exports.all = undefined;\n\nvar _all = __webpack_require__(34);\n\nvar _all2 = _interopRequireDefault(_all);\n\nvar _componentOrElement = __webpack_require__(20);\n\nvar _componentOrElement2 = _interopRequireDefault(_componentOrElement);\n\nvar _deprecated = __webpack_require__(67);\n\nvar _deprecated2 = _interopRequireDefault(_deprecated);\n\nvar _elementType = __webpack_require__(28);\n\nvar _elementType2 = _interopRequireDefault(_elementType);\n\nvar _isRequiredForA11y = __webpack_require__(13);\n\nvar _isRequiredForA11y2 = _interopRequireDefault(_isRequiredForA11y);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nexports.all = _all2.default;\nexports.componentOrElement = _componentOrElement2.default;\nexports.deprecated = _deprecated2.default;\nexports.elementType = _elementType2.default;\nexports.isRequiredForA11y = _isRequiredForA11y2.default;\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n  return typeof obj;\n} : function (obj) {\n  return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _createChainableTypeChecker = __webpack_require__(27);\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(_createChainableTypeChecker);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction validate(props, propName, componentName, location, propFullName) {\n  var propValue = props[propName];\n  var propType = typeof propValue === 'undefined' ? 'undefined' : _typeof(propValue);\n\n  if (_react2.default.isValidElement(propValue)) {\n    return new Error('Invalid ' + location + ' `' + propFullName + '` of type ReactElement ' + ('supplied to `' + componentName + '`, expected a ReactComponent or a ') + 'DOMElement. You can usually obtain a ReactComponent or DOMElement ' + 'from a ReactElement by attaching a ref to it.');\n  }\n\n  if ((propType !== 'object' || typeof propValue.render !== 'function') && propValue.nodeType !== 1) {\n    return new Error('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected a ReactComponent or a ') + 'DOMElement.');\n  }\n\n  return null;\n}\n\nexports.default = (0, _createChainableTypeChecker2.default)(validate);\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = \"production\" !== 'production';\n\nvar warning = function () {};\n\nif (__DEV__) {\n  var printWarning = function printWarning(format, args) {\n    var len = arguments.length;\n    args = new Array(len > 1 ? len - 1 : 0);\n\n    for (var key = 1; key < len; key++) {\n      args[key - 1] = arguments[key];\n    }\n\n    var argIndex = 0;\n    var message = 'Warning: ' + format.replace(/%s/g, function () {\n      return args[argIndex++];\n    });\n\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) {}\n  };\n\n  warning = function (condition, format, args) {\n    var len = arguments.length;\n    args = new Array(len > 2 ? len - 2 : 0);\n\n    for (var key = 2; key < len; key++) {\n      args[key - 2] = arguments[key];\n    }\n\n    if (format === undefined) {\n      throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n    }\n\n    if (!condition) {\n      printWarning.apply(null, [format].concat(args));\n    }\n  };\n}\n\nmodule.exports = warning;\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = _interopRequireDefault(__webpack_require__(10));\n\nvar _default = function () {\n  // HTML DOM and SVG DOM may have different support levels,\n  // so we need to check on context instead of a document root element.\n  return _inDOM.default ? function (context, node) {\n    if (context.contains) {\n      return context.contains(node);\n    } else if (context.compareDocumentPosition) {\n      return context === node || !!(context.compareDocumentPosition(node) & 16);\n    } else {\n      return fallback(context, node);\n    }\n  } : fallback;\n}();\n\nexports.default = _default;\n\nfunction fallback(context, node) {\n  if (node) do {\n    if (node === context) return true;\n  } while (node = node.parentNode);\n  return false;\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _properties = _interopRequireDefault(__webpack_require__(26));\n\nvar _style = _interopRequireDefault(__webpack_require__(11));\n\nfunction onEnd(node, handler, duration) {\n  var fakeEvent = {\n    target: node,\n    currentTarget: node\n  },\n      backup;\n  if (!_properties.default.end) duration = 0;else if (duration == null) duration = parseDuration(node) || 0;\n\n  if (_properties.default.end) {\n    node.addEventListener(_properties.default.end, done, false);\n    backup = setTimeout(function () {\n      return done(fakeEvent);\n    }, (duration || 100) * 1.5);\n  } else setTimeout(done.bind(null, fakeEvent), 0);\n\n  function done(event) {\n    if (event.target !== event.currentTarget) return;\n    clearTimeout(backup);\n    event.target.removeEventListener(_properties.default.end, done);\n    handler.call(this);\n  }\n}\n\nonEnd._parseDuration = parseDuration;\nvar _default = onEnd;\nexports.default = _default;\n\nfunction parseDuration(node) {\n  var str = (0, _style.default)(node, _properties.default.duration),\n      mult = str.indexOf('ms') === -1 ? 1000 : 1;\n  return parseFloat(str) * mult;\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function (condition, format, a, b, c, d, e, f) {\n  if (false) {}\n\n  if (!condition) {\n    var error;\n\n    if (format === undefined) {\n      error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n    } else {\n      var args = [a, b, c, d, e, f];\n      var argIndex = 0;\n      error = new Error(format.replace(/%s/g, function () {\n        return args[argIndex++];\n      }));\n      error.name = 'Invariant Violation';\n    }\n\n    error.framesToPop = 1; // we don't care about invariant's own frame\n\n    throw error;\n  }\n};\n\nmodule.exports = invariant;\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _on = _interopRequireDefault(__webpack_require__(43));\n\nexports.on = _on.default;\n\nvar _off = _interopRequireDefault(__webpack_require__(44));\n\nexports.off = _off.default;\n\nvar _filter = _interopRequireDefault(__webpack_require__(78));\n\nexports.filter = _filter.default;\n\nvar _listen = _interopRequireDefault(__webpack_require__(30));\n\nexports.listen = _listen.default;\nvar _default = {\n  on: _on.default,\n  off: _off.default,\n  filter: _filter.default,\n  listen: _listen.default\n};\nexports.default = _default;\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = exports.animationEnd = exports.animationDelay = exports.animationTiming = exports.animationDuration = exports.animationName = exports.transitionEnd = exports.transitionDuration = exports.transitionDelay = exports.transitionTiming = exports.transitionProperty = exports.transform = void 0;\n\nvar _inDOM = _interopRequireDefault(__webpack_require__(10));\n\nvar transform = 'transform';\nexports.transform = transform;\nvar prefix, transitionEnd, animationEnd;\nexports.animationEnd = animationEnd;\nexports.transitionEnd = transitionEnd;\nvar transitionProperty, transitionDuration, transitionTiming, transitionDelay;\nexports.transitionDelay = transitionDelay;\nexports.transitionTiming = transitionTiming;\nexports.transitionDuration = transitionDuration;\nexports.transitionProperty = transitionProperty;\nvar animationName, animationDuration, animationTiming, animationDelay;\nexports.animationDelay = animationDelay;\nexports.animationTiming = animationTiming;\nexports.animationDuration = animationDuration;\nexports.animationName = animationName;\n\nif (_inDOM.default) {\n  var _getTransitionPropert = getTransitionProperties();\n\n  prefix = _getTransitionPropert.prefix;\n  exports.transitionEnd = transitionEnd = _getTransitionPropert.transitionEnd;\n  exports.animationEnd = animationEnd = _getTransitionPropert.animationEnd;\n  exports.transform = transform = prefix + \"-\" + transform;\n  exports.transitionProperty = transitionProperty = prefix + \"-transition-property\";\n  exports.transitionDuration = transitionDuration = prefix + \"-transition-duration\";\n  exports.transitionDelay = transitionDelay = prefix + \"-transition-delay\";\n  exports.transitionTiming = transitionTiming = prefix + \"-transition-timing-function\";\n  exports.animationName = animationName = prefix + \"-animation-name\";\n  exports.animationDuration = animationDuration = prefix + \"-animation-duration\";\n  exports.animationTiming = animationTiming = prefix + \"-animation-delay\";\n  exports.animationDelay = animationDelay = prefix + \"-animation-timing-function\";\n}\n\nvar _default = {\n  transform: transform,\n  end: transitionEnd,\n  property: transitionProperty,\n  timing: transitionTiming,\n  delay: transitionDelay,\n  duration: transitionDuration\n};\nexports.default = _default;\n\nfunction getTransitionProperties() {\n  var style = document.createElement('div').style;\n  var vendorMap = {\n    O: function O(e) {\n      return \"o\" + e.toLowerCase();\n    },\n    Moz: function Moz(e) {\n      return e.toLowerCase();\n    },\n    Webkit: function Webkit(e) {\n      return \"webkit\" + e;\n    },\n    ms: function ms(e) {\n      return \"MS\" + e;\n    }\n  };\n  var vendors = Object.keys(vendorMap);\n  var transitionEnd, animationEnd;\n  var prefix = '';\n\n  for (var i = 0; i < vendors.length; i++) {\n    var vendor = vendors[i];\n\n    if (vendor + \"TransitionProperty\" in style) {\n      prefix = \"-\" + vendor.toLowerCase();\n      transitionEnd = vendorMap[vendor]('TransitionEnd');\n      animationEnd = vendorMap[vendor]('AnimationEnd');\n      break;\n    }\n  }\n\n  if (!transitionEnd && 'transitionProperty' in style) transitionEnd = 'transitionend';\n  if (!animationEnd && 'animationName' in style) animationEnd = 'animationend';\n  style = null;\n  return {\n    animationEnd: animationEnd,\n    transitionEnd: transitionEnd,\n    prefix: prefix\n  };\n}\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = createChainableTypeChecker;\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n// Mostly taken from ReactPropTypes.\n\nfunction createChainableTypeChecker(validate) {\n  function checkType(isRequired, props, propName, componentName, location, propFullName) {\n    var componentNameSafe = componentName || '<<anonymous>>';\n    var propFullNameSafe = propFullName || propName;\n\n    if (props[propName] == null) {\n      if (isRequired) {\n        return new Error('Required ' + location + ' `' + propFullNameSafe + '` was not specified ' + ('in `' + componentNameSafe + '`.'));\n      }\n\n      return null;\n    }\n\n    for (var _len = arguments.length, args = Array(_len > 6 ? _len - 6 : 0), _key = 6; _key < _len; _key++) {\n      args[_key - 6] = arguments[_key];\n    }\n\n    return validate.apply(undefined, [props, propName, componentNameSafe, location, propFullNameSafe].concat(args));\n  }\n\n  var chainedCheckType = checkType.bind(null, false);\n  chainedCheckType.isRequired = checkType.bind(null, true);\n  return chainedCheckType;\n}\n\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactIs = __webpack_require__(69);\n\nvar _createChainableTypeChecker = __webpack_require__(27);\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(_createChainableTypeChecker);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction elementType(props, propName, componentName, location, propFullName) {\n  var propValue = props[propName];\n\n  if (_react2.default.isValidElement(propValue)) {\n    return new Error('Invalid ' + location + ' `' + propFullName + '` of type ReactElement ' + ('supplied to `' + componentName + '`,expected an element type (a string ') + ', component class, or function component).');\n  }\n\n  if (!(0, _reactIs.isValidElementType)(propValue)) {\n    return new Error('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected an element type (a string ') + ', component class, or function component).');\n  }\n\n  return null;\n}\n\nexports.default = (0, _createChainableTypeChecker2.default)(elementType);\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(__webpack_require__(1));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nvar DropdownContext = _react.default.createContext({\n  menuRef: function menuRef() {},\n  toggleRef: function toggleRef() {},\n  onToggle: function onToggle() {},\n  toggleNode: undefined,\n  alignEnd: null,\n  show: null,\n  drop: null\n});\n\nvar _default = DropdownContext;\nexports.default = _default;\nmodule.exports = exports.default;\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = _interopRequireDefault(__webpack_require__(10));\n\nvar _on = _interopRequireDefault(__webpack_require__(43));\n\nvar _off = _interopRequireDefault(__webpack_require__(44));\n\nvar listen = function listen() {};\n\nif (_inDOM.default) {\n  listen = function listen(node, eventName, handler, capture) {\n    (0, _on.default)(node, eventName, handler, capture);\n    return function () {\n      (0, _off.default)(node, eventName, handler, capture);\n    };\n  };\n}\n\nvar _default = listen;\nexports.default = _default;\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 31 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n\n// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js\nvar objectWithoutPropertiesLoose = __webpack_require__(53);\nvar objectWithoutPropertiesLoose_default = /*#__PURE__*/__webpack_require__.n(objectWithoutPropertiesLoose);\n\n// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/extends.js\nvar helpers_extends = __webpack_require__(14);\nvar extends_default = /*#__PURE__*/__webpack_require__.n(helpers_extends);\n\n// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/inheritsLoose.js\nvar inheritsLoose = __webpack_require__(17);\nvar inheritsLoose_default = /*#__PURE__*/__webpack_require__.n(inheritsLoose);\n\n// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/assertThisInitialized.js\nvar assertThisInitialized = __webpack_require__(3);\nvar assertThisInitialized_default = /*#__PURE__*/__webpack_require__.n(assertThisInitialized);\n\n// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/defineProperty.js\nvar defineProperty = __webpack_require__(4);\nvar defineProperty_default = /*#__PURE__*/__webpack_require__.n(defineProperty);\n\n// EXTERNAL MODULE: external {\"root\":\"React\",\"commonjs2\":\"react\",\"commonjs\":\"react\",\"amd\":\"react\"}\nvar external_root_React_commonjs2_react_commonjs_react_amd_react_ = __webpack_require__(1);\n\n// EXTERNAL MODULE: ./node_modules/popper.js/dist/esm/popper.js\nvar popper = __webpack_require__(38);\n\n// EXTERNAL MODULE: ./node_modules/react-popper/node_modules/create-react-context/lib/index.js\nvar lib = __webpack_require__(54);\nvar lib_default = /*#__PURE__*/__webpack_require__.n(lib);\n\n// CONCATENATED MODULE: ./node_modules/react-popper/lib/esm/Manager.js\n\n\n\n\n\n\nvar ManagerContext = lib_default()({\n  setReferenceNode: undefined,\n  referenceNode: undefined\n});\n\nvar Manager_Manager =\n/*#__PURE__*/\nfunction (_React$Component) {\n  inheritsLoose_default()(Manager, _React$Component);\n\n  function Manager() {\n    var _this;\n\n    _this = _React$Component.call(this) || this;\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"setReferenceNode\", function (referenceNode) {\n      if (!referenceNode || _this.state.context.referenceNode === referenceNode) {\n        return;\n      }\n\n      _this.setState(function (_ref) {\n        var context = _ref.context;\n        return {\n          context: extends_default()({}, context, {\n            referenceNode: referenceNode\n          })\n        };\n      });\n    });\n\n    _this.state = {\n      context: {\n        setReferenceNode: _this.setReferenceNode,\n        referenceNode: undefined\n      }\n    };\n    return _this;\n  }\n\n  var _proto = Manager.prototype;\n\n  _proto.render = function render() {\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_[\"createElement\"](ManagerContext.Provider, {\n      value: this.state.context\n    }, this.props.children);\n  };\n\n  return Manager;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"Component\"]);\n\n\n// CONCATENATED MODULE: ./node_modules/react-popper/lib/esm/utils.js\n/**\n * Takes an argument and if it's an array, returns the first item in the array,\n * otherwise returns the argument. Used for Preact compatibility.\n */\nvar unwrapArray = function unwrapArray(arg) {\n  return Array.isArray(arg) ? arg[0] : arg;\n};\n/**\n * Takes a maybe-undefined function and arbitrary args and invokes the function\n * only if it is defined.\n */\n\nvar safeInvoke = function safeInvoke(fn) {\n  if (typeof fn === \"function\") {\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    return fn.apply(void 0, args);\n  }\n};\n// CONCATENATED MODULE: ./node_modules/react-popper/lib/esm/Popper.js\n\n\n\n\n\n\n\n\n\nvar initialStyle = {\n  position: 'absolute',\n  top: 0,\n  left: 0,\n  opacity: 0,\n  pointerEvents: 'none'\n};\nvar initialArrowStyle = {};\nvar Popper_InnerPopper =\n/*#__PURE__*/\nfunction (_React$Component) {\n  inheritsLoose_default()(InnerPopper, _React$Component);\n\n  function InnerPopper() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"state\", {\n      data: undefined,\n      placement: undefined\n    });\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"popperInstance\", void 0);\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"popperNode\", null);\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"arrowNode\", null);\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"setPopperNode\", function (popperNode) {\n      if (!popperNode || _this.popperNode === popperNode) return;\n      safeInvoke(_this.props.innerRef, popperNode);\n      _this.popperNode = popperNode;\n\n      _this.updatePopperInstance();\n    });\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"setArrowNode\", function (arrowNode) {\n      _this.arrowNode = arrowNode;\n    });\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"updateStateModifier\", {\n      enabled: true,\n      order: 900,\n      fn: function fn(data) {\n        var placement = data.placement;\n\n        _this.setState({\n          data: data,\n          placement: placement\n        });\n\n        return data;\n      }\n    });\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"getOptions\", function () {\n      return {\n        placement: _this.props.placement,\n        eventsEnabled: _this.props.eventsEnabled,\n        positionFixed: _this.props.positionFixed,\n        modifiers: extends_default()({}, _this.props.modifiers, {\n          arrow: extends_default()({}, _this.props.modifiers && _this.props.modifiers.arrow, {\n            enabled: !!_this.arrowNode,\n            element: _this.arrowNode\n          }),\n          applyStyle: {\n            enabled: false\n          },\n          updateStateModifier: _this.updateStateModifier\n        })\n      };\n    });\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"getPopperStyle\", function () {\n      return !_this.popperNode || !_this.state.data ? initialStyle : extends_default()({\n        position: _this.state.data.offsets.popper.position\n      }, _this.state.data.styles);\n    });\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"getPopperPlacement\", function () {\n      return !_this.state.data ? undefined : _this.state.placement;\n    });\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"getArrowStyle\", function () {\n      return !_this.arrowNode || !_this.state.data ? initialArrowStyle : _this.state.data.arrowStyles;\n    });\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"getOutOfBoundariesState\", function () {\n      return _this.state.data ? _this.state.data.hide : undefined;\n    });\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"destroyPopperInstance\", function () {\n      if (!_this.popperInstance) return;\n\n      _this.popperInstance.destroy();\n\n      _this.popperInstance = null;\n    });\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"updatePopperInstance\", function () {\n      _this.destroyPopperInstance();\n\n      var _assertThisInitialize = assertThisInitialized_default()(assertThisInitialized_default()(_this)),\n          popperNode = _assertThisInitialize.popperNode;\n\n      var referenceElement = _this.props.referenceElement;\n      if (!referenceElement || !popperNode) return;\n      _this.popperInstance = new popper[\"a\" /* default */](referenceElement, popperNode, _this.getOptions());\n    });\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"scheduleUpdate\", function () {\n      if (_this.popperInstance) {\n        _this.popperInstance.scheduleUpdate();\n      }\n    });\n\n    return _this;\n  }\n\n  var _proto = InnerPopper.prototype;\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n    // If the Popper.js options have changed, update the instance (destroy + create)\n    if (this.props.placement !== prevProps.placement || this.props.referenceElement !== prevProps.referenceElement || this.props.positionFixed !== prevProps.positionFixed) {\n      this.updatePopperInstance();\n    } else if (this.props.eventsEnabled !== prevProps.eventsEnabled && this.popperInstance) {\n      this.props.eventsEnabled ? this.popperInstance.enableEventListeners() : this.popperInstance.disableEventListeners();\n    } // A placement difference in state means popper determined a new placement\n    // apart from the props value. By the time the popper element is rendered with\n    // the new position Popper has already measured it, if the place change triggers\n    // a size change it will result in a misaligned popper. So we schedule an update to be sure.\n\n\n    if (prevState.placement !== this.state.placement) {\n      this.scheduleUpdate();\n    }\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    safeInvoke(this.props.innerRef, null);\n    this.destroyPopperInstance();\n  };\n\n  _proto.render = function render() {\n    return unwrapArray(this.props.children)({\n      ref: this.setPopperNode,\n      style: this.getPopperStyle(),\n      placement: this.getPopperPlacement(),\n      outOfBoundaries: this.getOutOfBoundariesState(),\n      scheduleUpdate: this.scheduleUpdate,\n      arrowProps: {\n        ref: this.setArrowNode,\n        style: this.getArrowStyle()\n      }\n    });\n  };\n\n  return InnerPopper;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"Component\"]);\n\ndefineProperty_default()(Popper_InnerPopper, \"defaultProps\", {\n  placement: 'bottom',\n  eventsEnabled: true,\n  referenceElement: undefined,\n  positionFixed: false\n});\n\nvar placements = popper[\"a\" /* default */].placements;\n\nfunction Popper(_ref) {\n  var referenceElement = _ref.referenceElement,\n      props = objectWithoutPropertiesLoose_default()(_ref, [\"referenceElement\"]);\n\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_[\"createElement\"](ManagerContext.Consumer, null, function (_ref2) {\n    var referenceNode = _ref2.referenceNode;\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_[\"createElement\"](Popper_InnerPopper, extends_default()({\n      referenceElement: referenceElement !== undefined ? referenceElement : referenceNode\n    }, props));\n  });\n}\n// EXTERNAL MODULE: ./node_modules/warning/warning.js\nvar warning = __webpack_require__(21);\nvar warning_default = /*#__PURE__*/__webpack_require__.n(warning);\n\n// CONCATENATED MODULE: ./node_modules/react-popper/lib/esm/Reference.js\n\n\n\n\n\n\n\n\n\nvar Reference_InnerReference =\n/*#__PURE__*/\nfunction (_React$Component) {\n  inheritsLoose_default()(InnerReference, _React$Component);\n\n  function InnerReference() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"refHandler\", function (node) {\n      safeInvoke(_this.props.innerRef, node);\n      safeInvoke(_this.props.setReferenceNode, node);\n    });\n\n    return _this;\n  }\n\n  var _proto = InnerReference.prototype;\n\n  _proto.render = function render() {\n    warning_default()(Boolean(this.props.setReferenceNode), '`Reference` should not be used outside of a `Manager` component.');\n    return unwrapArray(this.props.children)({\n      ref: this.refHandler\n    });\n  };\n\n  return InnerReference;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"Component\"]);\n\nfunction Reference(props) {\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_[\"createElement\"](ManagerContext.Consumer, null, function (_ref) {\n    var setReferenceNode = _ref.setReferenceNode;\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_[\"createElement\"](Reference_InnerReference, extends_default()({\n      setReferenceNode: setReferenceNode\n    }, props));\n  });\n}\n// CONCATENATED MODULE: ./node_modules/react-popper/lib/esm/index.js\n/* concated harmony reexport Popper */__webpack_require__.d(__webpack_exports__, \"Popper\", function() { return Popper; });\n/* concated harmony reexport placements */__webpack_require__.d(__webpack_exports__, \"placements\", function() { return placements; });\n/* concated harmony reexport Manager */__webpack_require__.d(__webpack_exports__, \"Manager\", function() { return Manager_Manager; });\n/* concated harmony reexport Reference */__webpack_require__.d(__webpack_exports__, \"Reference\", function() { return Reference; });\n// Public components\n\n\n\n // Public types\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = forwardRef;\n\nvar _react = _interopRequireDefault(__webpack_require__(1));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction forwardRef(renderFn, _temp) {\n  var _ref = _temp === void 0 ? {} : _temp,\n      propTypes = _ref.propTypes,\n      defaultProps = _ref.defaultProps,\n      _ref$allowFallback = _ref.allowFallback,\n      allowFallback = _ref$allowFallback === void 0 ? false : _ref$allowFallback,\n      _ref$displayName = _ref.displayName,\n      displayName = _ref$displayName === void 0 ? renderFn.name || renderFn.displayName : _ref$displayName;\n\n  var render = function render(props, ref) {\n    return renderFn(props, ref);\n  };\n\n  return Object.assign(_react.default.forwardRef || !allowFallback ? _react.default.forwardRef(render) : function (props) {\n    return render(props, null);\n  }, {\n    displayName: displayName,\n    propTypes: propTypes,\n    defaultProps: defaultProps\n  });\n}\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = camelize;\nvar rHyphen = /-(.)/g;\n\nfunction camelize(string) {\n  return string.replace(rHyphen, function (_, chr) {\n    return chr.toUpperCase();\n  });\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = all;\n\nvar _createChainableTypeChecker = __webpack_require__(27);\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(_createChainableTypeChecker);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction all() {\n  for (var _len = arguments.length, validators = Array(_len), _key = 0; _key < _len; _key++) {\n    validators[_key] = arguments[_key];\n  }\n\n  function allPropTypes() {\n    for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n\n    var error = null;\n    validators.forEach(function (validator) {\n      if (error != null) {\n        return;\n      }\n\n      var result = validator.apply(undefined, args);\n\n      if (result != null) {\n        error = result;\n      }\n    });\n    return error;\n  }\n\n  return (0, _createChainableTypeChecker2.default)(allPropTypes);\n}\n\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(0));\n\nvar _react = _interopRequireDefault(__webpack_require__(1));\n\nvar _reactPopper = __webpack_require__(31);\n\nvar _DropdownContext = _interopRequireDefault(__webpack_require__(29));\n\nvar _RootCloseWrapper = _interopRequireDefault(__webpack_require__(42));\n\nvar _mapContextToProps = _interopRequireDefault(__webpack_require__(77));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n\nvar DropdownMenu =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(DropdownMenu, _React$Component);\n\n  function DropdownMenu() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n    _this.state = {\n      toggleId: null\n    };\n    _this.popperIsInitialized = false;\n\n    _this.handleClose = function (e) {\n      if (!_this.props.onToggle) return;\n\n      _this.props.onToggle(false, e);\n    };\n\n    return _this;\n  }\n\n  var _proto = DropdownMenu.prototype;\n\n  _proto.getSnapshotBeforeUpdate = function getSnapshotBeforeUpdate(prevProps) {\n    // If, to the best we can tell, this update won't reinitialize popper,\n    // manually schedule an update\n    var shouldUpdatePopper = !prevProps.show && this.props.show && this.popperIsInitialized && // a new reference node will already trigger this internally\n    prevProps.toggleNode === this.props.toggleNode;\n\n    if (this.props.show && this.props.usePopper && !this.popperIsInitialized) {\n      this.popperIsInitialized = true;\n    }\n\n    return !!shouldUpdatePopper;\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(_, __, shouldUpdatePopper) {\n    if (shouldUpdatePopper && this.scheduleUpdate) {\n      this.scheduleUpdate();\n    }\n  };\n\n  _proto.render = function render() {\n    var _this2 = this;\n\n    var _this$props = this.props,\n        show = _this$props.show,\n        flip = _this$props.flip,\n        menuRef = _this$props.menuRef,\n        alignEnd = _this$props.alignEnd,\n        drop = _this$props.drop,\n        usePopper = _this$props.usePopper,\n        toggleNode = _this$props.toggleNode,\n        rootCloseEvent = _this$props.rootCloseEvent,\n        _this$props$popperCon = _this$props.popperConfig,\n        popperConfig = _this$props$popperCon === void 0 ? {} : _this$props$popperCon;\n    var placement = alignEnd ? 'bottom-end' : 'bottom-start';\n    if (drop === 'up') placement = alignEnd ? 'top-end' : 'top-start';\n    if (drop === 'right') placement = alignEnd ? 'right-end' : 'right-start';\n    if (drop === 'left') placement = alignEnd ? 'left-end' : 'left-start';\n    var menu = null;\n    var menuProps = {\n      ref: menuRef,\n      'aria-labelledby': toggleNode && toggleNode.id\n    };\n    var childArgs = {\n      show: show,\n      alignEnd: alignEnd,\n      close: this.handleClose\n    };\n\n    if (!usePopper) {\n      menu = this.props.children(_extends({}, childArgs, {\n        props: menuProps\n      }));\n    } else if (this.popperIsInitialized || show) {\n      // Add it this way, so it doesn't override someones usage\n      // with react-poppers <Reference>\n      if (toggleNode) popperConfig.referenceElement = toggleNode;\n      menu = _react.default.createElement(_reactPopper.Popper, _extends({}, popperConfig, {\n        innerRef: menuRef,\n        placement: placement,\n        eventsEnabled: !!show,\n        modifiers: _extends({\n          flip: {\n            enabled: !!flip\n          }\n        }, popperConfig.modifiers)\n      }), function (_ref) {\n        var ref = _ref.ref,\n            style = _ref.style,\n            popper = _objectWithoutPropertiesLoose(_ref, [\"ref\", \"style\"]);\n\n        _this2.scheduleUpdate = popper.scheduleUpdate;\n        return _this2.props.children(_extends({}, popper, childArgs, {\n          props: _extends({}, menuProps, {\n            ref: ref,\n            style: style\n          })\n        }));\n      });\n    }\n\n    return menu && _react.default.createElement(_RootCloseWrapper.default, {\n      disabled: !show,\n      event: rootCloseEvent,\n      onRootClose: this.handleClose\n    }, menu);\n  };\n\n  return DropdownMenu;\n}(_react.default.Component);\n\nDropdownMenu.displayName = 'ReactOverlaysDropdownMenu';\nDropdownMenu.propTypes = {\n  /**\n   * A render prop that returns a Menu element. The `props`\n   * argument should spread through to **a component that can accept a ref**.\n   *\n   * @type {Function ({\n   *   show: boolean,\n   *   alignEnd: boolean,\n   *   close: (?SyntheticEvent) => void,\n   *   placement: Placement,\n   *   outOfBoundaries: ?boolean,\n   *   scheduleUpdate: () => void,\n   *   props: {\n   *     ref: (?HTMLElement) => void,\n   *     style: { [string]: string | number },\n   *     aria-labelledby: ?string\n   *   },\n   *   arrowProps: {\n   *     ref: (?HTMLElement) => void,\n   *     style: { [string]: string | number },\n   *   },\n   * }) => React.Element}\n   */\n  children: _propTypes.default.func.isRequired,\n\n  /**\n   * Controls the visible state of the menu, generally this is\n   * provided by the parent `Dropdown` component,\n   * but may also be specified as a prop directly.\n   */\n  show: _propTypes.default.bool,\n\n  /**\n   * Aligns the dropdown menu to the 'end' of it's placement position.\n   * Generally this is provided by the parent `Dropdown` component,\n   * but may also be specified as a prop directly.\n   */\n  alignEnd: _propTypes.default.bool,\n\n  /**\n   * Enables the Popper.js `flip` modifier, allowing the Dropdown to\n   * automatically adjust it's placement in case of overlap with the viewport or toggle.\n   * Refer to the [flip docs](https://popper.js.org/popper-documentation.html#modifiers..flip.enabled) for more info\n   */\n  flip: _propTypes.default.bool,\n  usePopper: _propTypes.default.oneOf([true, false]),\n\n  /**\n   * A set of popper options and props passed directly to react-popper's Popper component.\n   */\n  popperConfig: _propTypes.default.object,\n\n  /**\n   * Override the default event used by RootCloseWrapper.\n   */\n  rootCloseEvent: _propTypes.default.string,\n\n  /** @private */\n  onToggle: _propTypes.default.func,\n\n  /** @private */\n  menuRef: _propTypes.default.func,\n\n  /** @private */\n  drop: _propTypes.default.string,\n\n  /** @private */\n  toggleNode: _propTypes.default.any\n};\nDropdownMenu.defaultProps = {\n  usePopper: true\n};\nvar DecoratedDropdownMenu = (0, _mapContextToProps.default)(_DropdownContext.default, function (_ref2, props) {\n  var show = _ref2.show,\n      alignEnd = _ref2.alignEnd,\n      toggle = _ref2.toggle,\n      drop = _ref2.drop,\n      menuRef = _ref2.menuRef,\n      toggleNode = _ref2.toggleNode;\n  return {\n    drop: drop,\n    menuRef: menuRef,\n    toggleNode: toggleNode,\n    onToggle: toggle,\n    show: show == null ? props.show : show,\n    alignEnd: alignEnd == null ? props.alignEnd : alignEnd\n  };\n}, DropdownMenu);\nvar _default = DecoratedDropdownMenu;\nexports.default = _default;\nmodule.exports = exports.default;\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(0));\n\nvar _react = _interopRequireDefault(__webpack_require__(1));\n\nvar _DropdownContext = _interopRequireDefault(__webpack_require__(29));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nvar propTypes = {\n  /**\n   * A render prop that returns a Toggle element. The `props`\n   * argument should spread through to **a component that can accept a ref**. Use\n   * the `onToggle` argument to toggle the menu open or closed\n   *\n   * @type {Function ({\n   *   show: boolean,\n   *   toggle: (show: boolean) => void,\n   *   props: {\n   *     ref: (?HTMLElement) => void,\n   *     aria-haspopup: true\n   *     aria-expanded: boolean\n   *   },\n   * }) => React.Element}\n   */\n  children: _propTypes.default.func.isRequired\n};\n\nfunction DropdownToggle(_ref) {\n  var children = _ref.children;\n  return _react.default.createElement(_DropdownContext.default.Consumer, null, function (_ref2) {\n    var show = _ref2.show,\n        toggle = _ref2.toggle,\n        toggleRef = _ref2.toggleRef;\n    return children({\n      show: show,\n      toggle: toggle,\n      props: {\n        ref: toggleRef,\n        'aria-haspopup': true,\n        'aria-expanded': !!show\n      }\n    });\n  });\n}\n\nDropdownToggle.displayName = 'ReactOverlaysDropdownToggle';\nDropdownToggle.propTypes = propTypes;\nvar _default = DropdownToggle;\nexports.default = _default;\nmodule.exports = exports.default;\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _class = _interopRequireDefault(__webpack_require__(80));\n\nvar _style = _interopRequireDefault(__webpack_require__(11));\n\nvar _scrollbarSize = _interopRequireDefault(__webpack_require__(18));\n\nvar _isOverflowing = _interopRequireDefault(__webpack_require__(83));\n\nvar _manageAriaHidden = __webpack_require__(85);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction findIndexOf(arr, cb) {\n  var idx = -1;\n  arr.some(function (d, i) {\n    if (cb(d, i)) {\n      idx = i;\n      return true;\n    }\n  });\n  return idx;\n}\n/**\n * Proper state managment for containers and the modals in those containers.\n *\n * @internal Used by the Modal to ensure proper styling of containers.\n */\n\n\nvar ModalManager =\n/*#__PURE__*/\nfunction () {\n  function ModalManager(_temp) {\n    var _ref = _temp === void 0 ? {} : _temp,\n        _ref$hideSiblingNodes = _ref.hideSiblingNodes,\n        hideSiblingNodes = _ref$hideSiblingNodes === void 0 ? true : _ref$hideSiblingNodes,\n        _ref$handleContainerO = _ref.handleContainerOverflow,\n        handleContainerOverflow = _ref$handleContainerO === void 0 ? true : _ref$handleContainerO;\n\n    this.hideSiblingNodes = hideSiblingNodes;\n    this.handleContainerOverflow = handleContainerOverflow;\n    this.modals = [];\n    this.containers = [];\n    this.data = [];\n    this.scrollbarSize = (0, _scrollbarSize.default)();\n  }\n\n  var _proto = ModalManager.prototype;\n\n  _proto.isContainerOverflowing = function isContainerOverflowing(modal) {\n    var data = this.data[this.containerIndexFromModal(modal)];\n    return data && data.overflowing;\n  };\n\n  _proto.containerIndexFromModal = function containerIndexFromModal(modal) {\n    return findIndexOf(this.data, function (d) {\n      return d.modals.indexOf(modal) !== -1;\n    });\n  };\n\n  _proto.setContainerStyle = function setContainerStyle(containerState, container) {\n    var style = {\n      overflow: 'hidden' // we are only interested in the actual `style` here\n      // becasue we will override it\n\n    };\n    containerState.style = {\n      overflow: container.style.overflow,\n      paddingRight: container.style.paddingRight\n    };\n\n    if (containerState.overflowing) {\n      // use computed style, here to get the real padding\n      // to add our scrollbar width\n      style.paddingRight = parseInt((0, _style.default)(container, 'paddingRight') || 0, 10) + this.scrollbarSize + \"px\";\n    }\n\n    (0, _style.default)(container, style);\n  };\n\n  _proto.removeContainerStyle = function removeContainerStyle(containerState, container) {\n    var style = containerState.style;\n    Object.keys(style).forEach(function (key) {\n      container.style[key] = style[key];\n    });\n  };\n\n  _proto.add = function add(modal, container, className) {\n    var modalIdx = this.modals.indexOf(modal);\n    var containerIdx = this.containers.indexOf(container);\n\n    if (modalIdx !== -1) {\n      return modalIdx;\n    }\n\n    modalIdx = this.modals.length;\n    this.modals.push(modal);\n\n    if (this.hideSiblingNodes) {\n      (0, _manageAriaHidden.hideSiblings)(container, modal);\n    }\n\n    if (containerIdx !== -1) {\n      this.data[containerIdx].modals.push(modal);\n      return modalIdx;\n    }\n\n    var data = {\n      modals: [modal],\n      //right now only the first modal of a container will have its classes applied\n      classes: className ? className.split(/\\s+/) : [],\n      overflowing: (0, _isOverflowing.default)(container)\n    };\n\n    if (this.handleContainerOverflow) {\n      this.setContainerStyle(data, container);\n    }\n\n    data.classes.forEach(_class.default.addClass.bind(null, container));\n    this.containers.push(container);\n    this.data.push(data);\n    return modalIdx;\n  };\n\n  _proto.remove = function remove(modal) {\n    var modalIdx = this.modals.indexOf(modal);\n\n    if (modalIdx === -1) {\n      return;\n    }\n\n    var containerIdx = this.containerIndexFromModal(modal);\n    var data = this.data[containerIdx];\n    var container = this.containers[containerIdx];\n    data.modals.splice(data.modals.indexOf(modal), 1);\n    this.modals.splice(modalIdx, 1); // if that was the last modal in a container,\n    // clean up the container\n\n    if (data.modals.length === 0) {\n      data.classes.forEach(_class.default.removeClass.bind(null, container));\n\n      if (this.handleContainerOverflow) {\n        this.removeContainerStyle(data, container);\n      }\n\n      if (this.hideSiblingNodes) {\n        (0, _manageAriaHidden.showSiblings)(container, modal);\n      }\n\n      this.containers.splice(containerIdx, 1);\n      this.data.splice(containerIdx, 1);\n    } else if (this.hideSiblingNodes) {\n      //otherwise make sure the next top modal is visible to a SR\n      var _data$modals = data.modals[data.modals.length - 1],\n          backdrop = _data$modals.backdrop,\n          dialog = _data$modals.dialog;\n      (0, _manageAriaHidden.ariaHidden)(false, dialog);\n      (0, _manageAriaHidden.ariaHidden)(false, backdrop);\n    }\n  };\n\n  _proto.isTopModal = function isTopModal(modal) {\n    return !!this.modals.length && this.modals[this.modals.length - 1] === modal;\n  };\n\n  return ModalManager;\n}();\n\nvar _default = ModalManager;\nexports.default = _default;\nmodule.exports = exports.default;\n\n/***/ }),\n/* 38 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.15.0\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\nvar longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nvar timeoutDuration = 0;\n\nfor (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n  if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n    timeoutDuration = 1;\n    break;\n  }\n}\n\nfunction microtaskDebounce(fn) {\n  var called = false;\n  return function () {\n    if (called) {\n      return;\n    }\n\n    called = true;\n    window.Promise.resolve().then(function () {\n      called = false;\n      fn();\n    });\n  };\n}\n\nfunction taskDebounce(fn) {\n  var scheduled = false;\n  return function () {\n    if (!scheduled) {\n      scheduled = true;\n      setTimeout(function () {\n        scheduled = false;\n        fn();\n      }, timeoutDuration);\n    }\n  };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\n\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\n\nfunction isFunction(functionToCheck) {\n  var getType = {};\n  return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\n\n\nfunction getStyleComputedProperty(element, property) {\n  if (element.nodeType !== 1) {\n    return [];\n  } // NOTE: 1 DOM access here\n\n\n  var window = element.ownerDocument.defaultView;\n  var css = window.getComputedStyle(element, null);\n  return property ? css[property] : css;\n}\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\n\n\nfunction getParentNode(element) {\n  if (element.nodeName === 'HTML') {\n    return element;\n  }\n\n  return element.parentNode || element.host;\n}\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\n\n\nfunction getScrollParent(element) {\n  // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n  if (!element) {\n    return document.body;\n  }\n\n  switch (element.nodeName) {\n    case 'HTML':\n    case 'BODY':\n      return element.ownerDocument.body;\n\n    case '#document':\n      return element.body;\n  } // Firefox want us to check `-x` and `-y` variations as well\n\n\n  var _getStyleComputedProp = getStyleComputedProperty(element),\n      overflow = _getStyleComputedProp.overflow,\n      overflowX = _getStyleComputedProp.overflowX,\n      overflowY = _getStyleComputedProp.overflowY;\n\n  if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n    return element;\n  }\n\n  return getScrollParent(getParentNode(element));\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\n\nfunction isIE(version) {\n  if (version === 11) {\n    return isIE11;\n  }\n\n  if (version === 10) {\n    return isIE10;\n  }\n\n  return isIE11 || isIE10;\n}\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\n\n\nfunction getOffsetParent(element) {\n  if (!element) {\n    return document.documentElement;\n  }\n\n  var noOffsetParent = isIE(10) ? document.body : null; // NOTE: 1 DOM access here\n\n  var offsetParent = element.offsetParent || null; // Skip hidden elements which don't have an offsetParent\n\n  while (offsetParent === noOffsetParent && element.nextElementSibling) {\n    offsetParent = (element = element.nextElementSibling).offsetParent;\n  }\n\n  var nodeName = offsetParent && offsetParent.nodeName;\n\n  if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n    return element ? element.ownerDocument.documentElement : document.documentElement;\n  } // .offsetParent will return the closest TH, TD or TABLE in case\n  // no offsetParent is present, I hate this job...\n\n\n  if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n    return getOffsetParent(offsetParent);\n  }\n\n  return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n  var nodeName = element.nodeName;\n\n  if (nodeName === 'BODY') {\n    return false;\n  }\n\n  return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\n\n\nfunction getRoot(node) {\n  if (node.parentNode !== null) {\n    return getRoot(node.parentNode);\n  }\n\n  return node;\n}\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\n\n\nfunction findCommonOffsetParent(element1, element2) {\n  // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n  if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n    return document.documentElement;\n  } // Here we make sure to give as \"start\" the element that comes first in the DOM\n\n\n  var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n  var start = order ? element1 : element2;\n  var end = order ? element2 : element1; // Get common ancestor container\n\n  var range = document.createRange();\n  range.setStart(start, 0);\n  range.setEnd(end, 0);\n  var commonAncestorContainer = range.commonAncestorContainer; // Both nodes are inside #document\n\n  if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n    if (isOffsetContainer(commonAncestorContainer)) {\n      return commonAncestorContainer;\n    }\n\n    return getOffsetParent(commonAncestorContainer);\n  } // one of the nodes is inside shadowDOM, find which one\n\n\n  var element1root = getRoot(element1);\n\n  if (element1root.host) {\n    return findCommonOffsetParent(element1root.host, element2);\n  } else {\n    return findCommonOffsetParent(element1, getRoot(element2).host);\n  }\n}\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\n\n\nfunction getScroll(element) {\n  var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n  var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n  var nodeName = element.nodeName;\n\n  if (nodeName === 'BODY' || nodeName === 'HTML') {\n    var html = element.ownerDocument.documentElement;\n    var scrollingElement = element.ownerDocument.scrollingElement || html;\n    return scrollingElement[upperSide];\n  }\n\n  return element[upperSide];\n}\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\n\n\nfunction includeScroll(rect, element) {\n  var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n  var scrollTop = getScroll(element, 'top');\n  var scrollLeft = getScroll(element, 'left');\n  var modifier = subtract ? -1 : 1;\n  rect.top += scrollTop * modifier;\n  rect.bottom += scrollTop * modifier;\n  rect.left += scrollLeft * modifier;\n  rect.right += scrollLeft * modifier;\n  return rect;\n}\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\n\nfunction getBordersSize(styles, axis) {\n  var sideA = axis === 'x' ? 'Left' : 'Top';\n  var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n  return parseFloat(styles['border' + sideA + 'Width'], 10) + parseFloat(styles['border' + sideB + 'Width'], 10);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n  return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\n\nfunction getWindowSizes(document) {\n  var body = document.body;\n  var html = document.documentElement;\n  var computedStyle = isIE(10) && getComputedStyle(html);\n  return {\n    height: getSize('Height', body, html, computedStyle),\n    width: getSize('Width', body, html, computedStyle)\n  };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n};\n\nvar createClass = function () {\n  function defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  return function (Constructor, protoProps, staticProps) {\n    if (protoProps) defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) defineProperties(Constructor, staticProps);\n    return Constructor;\n  };\n}();\n\nvar defineProperty = function (obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  return target;\n};\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\n\n\nfunction getClientRect(offsets) {\n  return _extends({}, offsets, {\n    right: offsets.left + offsets.width,\n    bottom: offsets.top + offsets.height\n  });\n}\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\n\n\nfunction getBoundingClientRect(element) {\n  var rect = {}; // IE10 10 FIX: Please, don't ask, the element isn't\n  // considered in DOM in some circumstances...\n  // This isn't reproducible in IE10 compatibility mode of IE11\n\n  try {\n    if (isIE(10)) {\n      rect = element.getBoundingClientRect();\n      var scrollTop = getScroll(element, 'top');\n      var scrollLeft = getScroll(element, 'left');\n      rect.top += scrollTop;\n      rect.left += scrollLeft;\n      rect.bottom += scrollTop;\n      rect.right += scrollLeft;\n    } else {\n      rect = element.getBoundingClientRect();\n    }\n  } catch (e) {}\n\n  var result = {\n    left: rect.left,\n    top: rect.top,\n    width: rect.right - rect.left,\n    height: rect.bottom - rect.top\n  }; // subtract scrollbar size from sizes\n\n  var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n  var width = sizes.width || element.clientWidth || result.right - result.left;\n  var height = sizes.height || element.clientHeight || result.bottom - result.top;\n  var horizScrollbar = element.offsetWidth - width;\n  var vertScrollbar = element.offsetHeight - height; // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n  // we make this check conditional for performance reasons\n\n  if (horizScrollbar || vertScrollbar) {\n    var styles = getStyleComputedProperty(element);\n    horizScrollbar -= getBordersSize(styles, 'x');\n    vertScrollbar -= getBordersSize(styles, 'y');\n    result.width -= horizScrollbar;\n    result.height -= vertScrollbar;\n  }\n\n  return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n  var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n  var isIE10 = isIE(10);\n  var isHTML = parent.nodeName === 'HTML';\n  var childrenRect = getBoundingClientRect(children);\n  var parentRect = getBoundingClientRect(parent);\n  var scrollParent = getScrollParent(children);\n  var styles = getStyleComputedProperty(parent);\n  var borderTopWidth = parseFloat(styles.borderTopWidth, 10);\n  var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10); // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n\n  if (fixedPosition && isHTML) {\n    parentRect.top = Math.max(parentRect.top, 0);\n    parentRect.left = Math.max(parentRect.left, 0);\n  }\n\n  var offsets = getClientRect({\n    top: childrenRect.top - parentRect.top - borderTopWidth,\n    left: childrenRect.left - parentRect.left - borderLeftWidth,\n    width: childrenRect.width,\n    height: childrenRect.height\n  });\n  offsets.marginTop = 0;\n  offsets.marginLeft = 0; // Subtract margins of documentElement in case it's being used as parent\n  // we do this only on HTML because it's the only element that behaves\n  // differently when margins are applied to it. The margins are included in\n  // the box of the documentElement, in the other cases not.\n\n  if (!isIE10 && isHTML) {\n    var marginTop = parseFloat(styles.marginTop, 10);\n    var marginLeft = parseFloat(styles.marginLeft, 10);\n    offsets.top -= borderTopWidth - marginTop;\n    offsets.bottom -= borderTopWidth - marginTop;\n    offsets.left -= borderLeftWidth - marginLeft;\n    offsets.right -= borderLeftWidth - marginLeft; // Attach marginTop and marginLeft because in some circumstances we may need them\n\n    offsets.marginTop = marginTop;\n    offsets.marginLeft = marginLeft;\n  }\n\n  if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n    offsets = includeScroll(offsets, parent);\n  }\n\n  return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n  var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n  var html = element.ownerDocument.documentElement;\n  var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n  var width = Math.max(html.clientWidth, window.innerWidth || 0);\n  var height = Math.max(html.clientHeight, window.innerHeight || 0);\n  var scrollTop = !excludeScroll ? getScroll(html) : 0;\n  var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n  var offset = {\n    top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n    left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n    width: width,\n    height: height\n  };\n  return getClientRect(offset);\n}\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\n\n\nfunction isFixed(element) {\n  var nodeName = element.nodeName;\n\n  if (nodeName === 'BODY' || nodeName === 'HTML') {\n    return false;\n  }\n\n  if (getStyleComputedProperty(element, 'position') === 'fixed') {\n    return true;\n  }\n\n  var parentNode = getParentNode(element);\n\n  if (!parentNode) {\n    return false;\n  }\n\n  return isFixed(parentNode);\n}\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\n\nfunction getFixedPositionOffsetParent(element) {\n  // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n  if (!element || !element.parentElement || isIE()) {\n    return document.documentElement;\n  }\n\n  var el = element.parentElement;\n\n  while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n    el = el.parentElement;\n  }\n\n  return el || document.documentElement;\n}\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\n\n\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n  var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; // NOTE: 1 DOM access here\n\n  var boundaries = {\n    top: 0,\n    left: 0\n  };\n  var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference); // Handle viewport case\n\n  if (boundariesElement === 'viewport') {\n    boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n  } else {\n    // Handle other cases based on DOM element used as boundaries\n    var boundariesNode = void 0;\n\n    if (boundariesElement === 'scrollParent') {\n      boundariesNode = getScrollParent(getParentNode(reference));\n\n      if (boundariesNode.nodeName === 'BODY') {\n        boundariesNode = popper.ownerDocument.documentElement;\n      }\n    } else if (boundariesElement === 'window') {\n      boundariesNode = popper.ownerDocument.documentElement;\n    } else {\n      boundariesNode = boundariesElement;\n    }\n\n    var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition); // In case of HTML, we need a different computation\n\n    if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n      var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n          height = _getWindowSizes.height,\n          width = _getWindowSizes.width;\n\n      boundaries.top += offsets.top - offsets.marginTop;\n      boundaries.bottom = height + offsets.top;\n      boundaries.left += offsets.left - offsets.marginLeft;\n      boundaries.right = width + offsets.left;\n    } else {\n      // for all the other DOM elements, this one is good\n      boundaries = offsets;\n    }\n  } // Add paddings\n\n\n  padding = padding || 0;\n  var isPaddingNumber = typeof padding === 'number';\n  boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n  boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n  boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n  boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n  return boundaries;\n}\n\nfunction getArea(_ref) {\n  var width = _ref.width,\n      height = _ref.height;\n  return width * height;\n}\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n  var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n  if (placement.indexOf('auto') === -1) {\n    return placement;\n  }\n\n  var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n  var rects = {\n    top: {\n      width: boundaries.width,\n      height: refRect.top - boundaries.top\n    },\n    right: {\n      width: boundaries.right - refRect.right,\n      height: boundaries.height\n    },\n    bottom: {\n      width: boundaries.width,\n      height: boundaries.bottom - refRect.bottom\n    },\n    left: {\n      width: refRect.left - boundaries.left,\n      height: boundaries.height\n    }\n  };\n  var sortedAreas = Object.keys(rects).map(function (key) {\n    return _extends({\n      key: key\n    }, rects[key], {\n      area: getArea(rects[key])\n    });\n  }).sort(function (a, b) {\n    return b.area - a.area;\n  });\n  var filteredAreas = sortedAreas.filter(function (_ref2) {\n    var width = _ref2.width,\n        height = _ref2.height;\n    return width >= popper.clientWidth && height >= popper.clientHeight;\n  });\n  var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n  var variation = placement.split('-')[1];\n  return computedPlacement + (variation ? '-' + variation : '');\n}\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\n\n\nfunction getReferenceOffsets(state, popper, reference) {\n  var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n  var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);\n  return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\n\n\nfunction getOuterSizes(element) {\n  var window = element.ownerDocument.defaultView;\n  var styles = window.getComputedStyle(element);\n  var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n  var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n  var result = {\n    width: element.offsetWidth + y,\n    height: element.offsetHeight + x\n  };\n  return result;\n}\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\n\n\nfunction getOppositePlacement(placement) {\n  var hash = {\n    left: 'right',\n    right: 'left',\n    bottom: 'top',\n    top: 'bottom'\n  };\n  return placement.replace(/left|right|bottom|top/g, function (matched) {\n    return hash[matched];\n  });\n}\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\n\n\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n  placement = placement.split('-')[0]; // Get popper node sizes\n\n  var popperRect = getOuterSizes(popper); // Add position, width and height to our offsets object\n\n  var popperOffsets = {\n    width: popperRect.width,\n    height: popperRect.height\n  }; // depending by the popper placement we have to compute its offsets slightly differently\n\n  var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n  var mainSide = isHoriz ? 'top' : 'left';\n  var secondarySide = isHoriz ? 'left' : 'top';\n  var measurement = isHoriz ? 'height' : 'width';\n  var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n  popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n\n  if (placement === secondarySide) {\n    popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n  } else {\n    popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n  }\n\n  return popperOffsets;\n}\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\n\n\nfunction find(arr, check) {\n  // use native find if supported\n  if (Array.prototype.find) {\n    return arr.find(check);\n  } // use `filter` to obtain the same behavior of `find`\n\n\n  return arr.filter(check)[0];\n}\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\n\n\nfunction findIndex(arr, prop, value) {\n  // use native findIndex if supported\n  if (Array.prototype.findIndex) {\n    return arr.findIndex(function (cur) {\n      return cur[prop] === value;\n    });\n  } // use `find` + `indexOf` if `findIndex` isn't supported\n\n\n  var match = find(arr, function (obj) {\n    return obj[prop] === value;\n  });\n  return arr.indexOf(match);\n}\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\n\n\nfunction runModifiers(modifiers, data, ends) {\n  var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n  modifiersToRun.forEach(function (modifier) {\n    if (modifier['function']) {\n      // eslint-disable-line dot-notation\n      console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n    }\n\n    var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n\n    if (modifier.enabled && isFunction(fn)) {\n      // Add properties to offsets to make them a complete clientRect object\n      // we do this before each modifier to make sure the previous one doesn't\n      // mess with these values\n      data.offsets.popper = getClientRect(data.offsets.popper);\n      data.offsets.reference = getClientRect(data.offsets.reference);\n      data = fn(data, modifier);\n    }\n  });\n  return data;\n}\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\n\n\nfunction update() {\n  // if popper is destroyed, don't perform any further update\n  if (this.state.isDestroyed) {\n    return;\n  }\n\n  var data = {\n    instance: this,\n    styles: {},\n    arrowStyles: {},\n    attributes: {},\n    flipped: false,\n    offsets: {}\n  }; // compute reference element offsets\n\n  data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed); // compute auto placement, store placement inside the data object,\n  // modifiers will be able to edit `placement` if needed\n  // and refer to originalPlacement to know the original value\n\n  data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding); // store the computed placement inside `originalPlacement`\n\n  data.originalPlacement = data.placement;\n  data.positionFixed = this.options.positionFixed; // compute the popper offsets\n\n  data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n  data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute'; // run the modifiers\n\n  data = runModifiers(this.modifiers, data); // the first `update` will call `onCreate` callback\n  // the other ones will call `onUpdate` callback\n\n  if (!this.state.isCreated) {\n    this.state.isCreated = true;\n    this.options.onCreate(data);\n  } else {\n    this.options.onUpdate(data);\n  }\n}\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\n\n\nfunction isModifierEnabled(modifiers, modifierName) {\n  return modifiers.some(function (_ref) {\n    var name = _ref.name,\n        enabled = _ref.enabled;\n    return enabled && name === modifierName;\n  });\n}\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\n\n\nfunction getSupportedPropertyName(property) {\n  var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n  var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n  for (var i = 0; i < prefixes.length; i++) {\n    var prefix = prefixes[i];\n    var toCheck = prefix ? '' + prefix + upperProp : property;\n\n    if (typeof document.body.style[toCheck] !== 'undefined') {\n      return toCheck;\n    }\n  }\n\n  return null;\n}\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\n\n\nfunction destroy() {\n  this.state.isDestroyed = true; // touch DOM only if `applyStyle` modifier is enabled\n\n  if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n    this.popper.removeAttribute('x-placement');\n    this.popper.style.position = '';\n    this.popper.style.top = '';\n    this.popper.style.left = '';\n    this.popper.style.right = '';\n    this.popper.style.bottom = '';\n    this.popper.style.willChange = '';\n    this.popper.style[getSupportedPropertyName('transform')] = '';\n  }\n\n  this.disableEventListeners(); // remove the popper if user explicity asked for the deletion on destroy\n  // do not use `remove` because IE11 doesn't support it\n\n  if (this.options.removeOnDestroy) {\n    this.popper.parentNode.removeChild(this.popper);\n  }\n\n  return this;\n}\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\n\n\nfunction getWindow(element) {\n  var ownerDocument = element.ownerDocument;\n  return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n  var isBody = scrollParent.nodeName === 'BODY';\n  var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n  target.addEventListener(event, callback, {\n    passive: true\n  });\n\n  if (!isBody) {\n    attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n  }\n\n  scrollParents.push(target);\n}\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\n\n\nfunction setupEventListeners(reference, options, state, updateBound) {\n  // Resize event listener on window\n  state.updateBound = updateBound;\n  getWindow(reference).addEventListener('resize', state.updateBound, {\n    passive: true\n  }); // Scroll event listener on scroll parents\n\n  var scrollElement = getScrollParent(reference);\n  attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n  state.scrollElement = scrollElement;\n  state.eventsEnabled = true;\n  return state;\n}\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\n\n\nfunction enableEventListeners() {\n  if (!this.state.eventsEnabled) {\n    this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n  }\n}\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\n\n\nfunction removeEventListeners(reference, state) {\n  // Remove resize event listener on window\n  getWindow(reference).removeEventListener('resize', state.updateBound); // Remove scroll event listener on scroll parents\n\n  state.scrollParents.forEach(function (target) {\n    target.removeEventListener('scroll', state.updateBound);\n  }); // Reset state\n\n  state.updateBound = null;\n  state.scrollParents = [];\n  state.scrollElement = null;\n  state.eventsEnabled = false;\n  return state;\n}\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\n\n\nfunction disableEventListeners() {\n  if (this.state.eventsEnabled) {\n    cancelAnimationFrame(this.scheduleUpdate);\n    this.state = removeEventListeners(this.reference, this.state);\n  }\n}\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\n\n\nfunction isNumeric(n) {\n  return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\n\n\nfunction setStyles(element, styles) {\n  Object.keys(styles).forEach(function (prop) {\n    var unit = ''; // add unit if the value is numeric and is one of the following\n\n    if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n      unit = 'px';\n    }\n\n    element.style[prop] = styles[prop] + unit;\n  });\n}\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\n\n\nfunction setAttributes(element, attributes) {\n  Object.keys(attributes).forEach(function (prop) {\n    var value = attributes[prop];\n\n    if (value !== false) {\n      element.setAttribute(prop, attributes[prop]);\n    } else {\n      element.removeAttribute(prop);\n    }\n  });\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\n\n\nfunction applyStyle(data) {\n  // any property present in `data.styles` will be applied to the popper,\n  // in this way we can make the 3rd party modifiers add custom styles to it\n  // Be aware, modifiers could override the properties defined in the previous\n  // lines of this modifier!\n  setStyles(data.instance.popper, data.styles); // any property present in `data.attributes` will be applied to the popper,\n  // they will be set as HTML attributes of the element\n\n  setAttributes(data.instance.popper, data.attributes); // if arrowElement is defined and arrowStyles has some properties\n\n  if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n    setStyles(data.arrowElement, data.arrowStyles);\n  }\n\n  return data;\n}\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\n\n\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n  // compute reference element offsets\n  var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed); // compute auto placement, store placement inside the data object,\n  // modifiers will be able to edit `placement` if needed\n  // and refer to originalPlacement to know the original value\n\n  var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n  popper.setAttribute('x-placement', placement); // Apply `position` to popper before anything else because\n  // without the position applied we can't guarantee correct computations\n\n  setStyles(popper, {\n    position: options.positionFixed ? 'fixed' : 'absolute'\n  });\n  return options;\n}\n/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\n\n\nfunction getRoundedOffsets(data, shouldRound) {\n  var _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n  var round = Math.round,\n      floor = Math.floor;\n\n  var noRound = function noRound(v) {\n    return v;\n  };\n\n  var referenceWidth = round(reference.width);\n  var popperWidth = round(popper.width);\n  var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n  var isVariation = data.placement.indexOf('-') !== -1;\n  var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n  var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n  var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n  var verticalToInteger = !shouldRound ? noRound : round;\n  return {\n    left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n    top: verticalToInteger(popper.top),\n    bottom: verticalToInteger(popper.bottom),\n    right: horizontalToInteger(popper.right)\n  };\n}\n\nvar isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\nfunction computeStyle(data, options) {\n  var x = options.x,\n      y = options.y;\n  var popper = data.offsets.popper; // Remove this legacy support in Popper.js v2\n\n  var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n    return modifier.name === 'applyStyle';\n  }).gpuAcceleration;\n\n  if (legacyGpuAccelerationOption !== undefined) {\n    console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n  }\n\n  var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n  var offsetParent = getOffsetParent(data.instance.popper);\n  var offsetParentRect = getBoundingClientRect(offsetParent); // Styles\n\n  var styles = {\n    position: popper.position\n  };\n  var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n  var sideA = x === 'bottom' ? 'top' : 'bottom';\n  var sideB = y === 'right' ? 'left' : 'right'; // if gpuAcceleration is set to `true` and transform is supported,\n  //  we use `translate3d` to apply the position to the popper we\n  // automatically use the supported prefixed version if needed\n\n  var prefixedProperty = getSupportedPropertyName('transform'); // now, let's make a step back and look at this code closely (wtf?)\n  // If the content of the popper grows once it's been positioned, it\n  // may happen that the popper gets misplaced because of the new content\n  // overflowing its reference element\n  // To avoid this problem, we provide two options (x and y), which allow\n  // the consumer to define the offset origin.\n  // If we position a popper on top of a reference element, we can set\n  // `x` to `top` to make the popper grow towards its top instead of\n  // its bottom.\n\n  var left = void 0,\n      top = void 0;\n\n  if (sideA === 'bottom') {\n    // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\n    // and not the bottom of the html element\n    if (offsetParent.nodeName === 'HTML') {\n      top = -offsetParent.clientHeight + offsets.bottom;\n    } else {\n      top = -offsetParentRect.height + offsets.bottom;\n    }\n  } else {\n    top = offsets.top;\n  }\n\n  if (sideB === 'right') {\n    if (offsetParent.nodeName === 'HTML') {\n      left = -offsetParent.clientWidth + offsets.right;\n    } else {\n      left = -offsetParentRect.width + offsets.right;\n    }\n  } else {\n    left = offsets.left;\n  }\n\n  if (gpuAcceleration && prefixedProperty) {\n    styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n    styles[sideA] = 0;\n    styles[sideB] = 0;\n    styles.willChange = 'transform';\n  } else {\n    // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n    var invertTop = sideA === 'bottom' ? -1 : 1;\n    var invertLeft = sideB === 'right' ? -1 : 1;\n    styles[sideA] = top * invertTop;\n    styles[sideB] = left * invertLeft;\n    styles.willChange = sideA + ', ' + sideB;\n  } // Attributes\n\n\n  var attributes = {\n    'x-placement': data.placement\n  }; // Update `data` attributes, styles and arrowStyles\n\n  data.attributes = _extends({}, attributes, data.attributes);\n  data.styles = _extends({}, styles, data.styles);\n  data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n  return data;\n}\n/**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\n\n\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n  var requesting = find(modifiers, function (_ref) {\n    var name = _ref.name;\n    return name === requestingName;\n  });\n  var isRequired = !!requesting && modifiers.some(function (modifier) {\n    return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n  });\n\n  if (!isRequired) {\n    var _requesting = '`' + requestingName + '`';\n\n    var requested = '`' + requestedName + '`';\n    console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n  }\n\n  return isRequired;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction arrow(data, options) {\n  var _data$offsets$arrow; // arrow depends on keepTogether in order to work\n\n\n  if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n    return data;\n  }\n\n  var arrowElement = options.element; // if arrowElement is a string, suppose it's a CSS selector\n\n  if (typeof arrowElement === 'string') {\n    arrowElement = data.instance.popper.querySelector(arrowElement); // if arrowElement is not found, don't run the modifier\n\n    if (!arrowElement) {\n      return data;\n    }\n  } else {\n    // if the arrowElement isn't a query selector we must check that the\n    // provided DOM node is child of its popper node\n    if (!data.instance.popper.contains(arrowElement)) {\n      console.warn('WARNING: `arrow.element` must be child of its popper element!');\n      return data;\n    }\n  }\n\n  var placement = data.placement.split('-')[0];\n  var _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n  var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n  var len = isVertical ? 'height' : 'width';\n  var sideCapitalized = isVertical ? 'Top' : 'Left';\n  var side = sideCapitalized.toLowerCase();\n  var altSide = isVertical ? 'left' : 'top';\n  var opSide = isVertical ? 'bottom' : 'right';\n  var arrowElementSize = getOuterSizes(arrowElement)[len]; //\n  // extends keepTogether behavior making sure the popper and its\n  // reference have enough pixels in conjunction\n  //\n  // top/left side\n\n  if (reference[opSide] - arrowElementSize < popper[side]) {\n    data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n  } // bottom/right side\n\n\n  if (reference[side] + arrowElementSize > popper[opSide]) {\n    data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n  }\n\n  data.offsets.popper = getClientRect(data.offsets.popper); // compute center of the popper\n\n  var center = reference[side] + reference[len] / 2 - arrowElementSize / 2; // Compute the sideValue using the updated popper offsets\n  // take popper margin in account because we don't have this info available\n\n  var css = getStyleComputedProperty(data.instance.popper);\n  var popperMarginSide = parseFloat(css['margin' + sideCapitalized], 10);\n  var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width'], 10);\n  var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide; // prevent arrowElement from being placed not contiguously to its popper\n\n  sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n  data.arrowElement = arrowElement;\n  data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n  return data;\n}\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\n\n\nfunction getOppositeVariation(variation) {\n  if (variation === 'end') {\n    return 'start';\n  } else if (variation === 'start') {\n    return 'end';\n  }\n\n  return variation;\n}\n/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\n\n\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start']; // Get rid of `auto` `auto-start` and `auto-end`\n\nvar validPlacements = placements.slice(3);\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\n\nfunction clockwise(placement) {\n  var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n  var index = validPlacements.indexOf(placement);\n  var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n  return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n  FLIP: 'flip',\n  CLOCKWISE: 'clockwise',\n  COUNTERCLOCKWISE: 'counterclockwise'\n};\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\nfunction flip(data, options) {\n  // if `inner` modifier is enabled, we can't use the `flip` modifier\n  if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n    return data;\n  }\n\n  if (data.flipped && data.placement === data.originalPlacement) {\n    // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n    return data;\n  }\n\n  var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n  var placement = data.placement.split('-')[0];\n  var placementOpposite = getOppositePlacement(placement);\n  var variation = data.placement.split('-')[1] || '';\n  var flipOrder = [];\n\n  switch (options.behavior) {\n    case BEHAVIORS.FLIP:\n      flipOrder = [placement, placementOpposite];\n      break;\n\n    case BEHAVIORS.CLOCKWISE:\n      flipOrder = clockwise(placement);\n      break;\n\n    case BEHAVIORS.COUNTERCLOCKWISE:\n      flipOrder = clockwise(placement, true);\n      break;\n\n    default:\n      flipOrder = options.behavior;\n  }\n\n  flipOrder.forEach(function (step, index) {\n    if (placement !== step || flipOrder.length === index + 1) {\n      return data;\n    }\n\n    placement = data.placement.split('-')[0];\n    placementOpposite = getOppositePlacement(placement);\n    var popperOffsets = data.offsets.popper;\n    var refOffsets = data.offsets.reference; // using floor because the reference offsets may contain decimals we are not going to consider here\n\n    var floor = Math.floor;\n    var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n    var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n    var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n    var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n    var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n    var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom; // flip the variation if required\n\n    var isVertical = ['top', 'bottom'].indexOf(placement) !== -1; // flips variation if reference element overflows boundaries\n\n    var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom); // flips variation if popper content overflows boundaries\n\n    var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);\n    var flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n    if (overlapsRef || overflowsBoundaries || flippedVariation) {\n      // this boolean to detect any flip loop\n      data.flipped = true;\n\n      if (overlapsRef || overflowsBoundaries) {\n        placement = flipOrder[index + 1];\n      }\n\n      if (flippedVariation) {\n        variation = getOppositeVariation(variation);\n      }\n\n      data.placement = placement + (variation ? '-' + variation : ''); // this object contains `position`, we want to preserve it along with\n      // any additional property we may add in the future\n\n      data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n      data = runModifiers(data.instance.modifiers, data, 'flip');\n    }\n  });\n  return data;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction keepTogether(data) {\n  var _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n  var placement = data.placement.split('-')[0];\n  var floor = Math.floor;\n  var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n  var side = isVertical ? 'right' : 'bottom';\n  var opSide = isVertical ? 'left' : 'top';\n  var measurement = isVertical ? 'width' : 'height';\n\n  if (popper[side] < floor(reference[opSide])) {\n    data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n  }\n\n  if (popper[opSide] > floor(reference[side])) {\n    data.offsets.popper[opSide] = floor(reference[side]);\n  }\n\n  return data;\n}\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\n\n\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n  // separate value from unit\n  var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n  var value = +split[1];\n  var unit = split[2]; // If it's not a number it's an operator, I guess\n\n  if (!value) {\n    return str;\n  }\n\n  if (unit.indexOf('%') === 0) {\n    var element = void 0;\n\n    switch (unit) {\n      case '%p':\n        element = popperOffsets;\n        break;\n\n      case '%':\n      case '%r':\n      default:\n        element = referenceOffsets;\n    }\n\n    var rect = getClientRect(element);\n    return rect[measurement] / 100 * value;\n  } else if (unit === 'vh' || unit === 'vw') {\n    // if is a vh or vw, we calculate the size based on the viewport\n    var size = void 0;\n\n    if (unit === 'vh') {\n      size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n    } else {\n      size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n    }\n\n    return size / 100 * value;\n  } else {\n    // if is an explicit pixel unit, we get rid of the unit and keep the value\n    // if is an implicit unit, it's px, and we return just the value\n    return value;\n  }\n}\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\n\n\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n  var offsets = [0, 0]; // Use height if placement is left or right and index is 0 otherwise use width\n  // in this way the first offset will use an axis and the second one\n  // will use the other one\n\n  var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1; // Split the offset string to obtain a list of values and operands\n  // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n\n  var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n    return frag.trim();\n  }); // Detect if the offset string contains a pair of values or a single one\n  // they could be separated by comma or space\n\n  var divider = fragments.indexOf(find(fragments, function (frag) {\n    return frag.search(/,|\\s/) !== -1;\n  }));\n\n  if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n    console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n  } // If divider is found, we divide the list of values and operands to divide\n  // them by ofset X and Y.\n\n\n  var splitRegex = /\\s*,\\s*|\\s+/;\n  var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments]; // Convert the values with units to absolute pixels to allow our computations\n\n  ops = ops.map(function (op, index) {\n    // Most of the units rely on the orientation of the popper\n    var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n    var mergeWithPrevious = false;\n    return op // This aggregates any `+` or `-` sign that aren't considered operators\n    // e.g.: 10 + +5 => [10, +, +5]\n    .reduce(function (a, b) {\n      if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n        a[a.length - 1] = b;\n        mergeWithPrevious = true;\n        return a;\n      } else if (mergeWithPrevious) {\n        a[a.length - 1] += b;\n        mergeWithPrevious = false;\n        return a;\n      } else {\n        return a.concat(b);\n      }\n    }, []) // Here we convert the string values into number values (in px)\n    .map(function (str) {\n      return toValue(str, measurement, popperOffsets, referenceOffsets);\n    });\n  }); // Loop trough the offsets arrays and execute the operations\n\n  ops.forEach(function (op, index) {\n    op.forEach(function (frag, index2) {\n      if (isNumeric(frag)) {\n        offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n      }\n    });\n  });\n  return offsets;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction offset(data, _ref) {\n  var offset = _ref.offset;\n  var placement = data.placement,\n      _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n  var basePlacement = placement.split('-')[0];\n  var offsets = void 0;\n\n  if (isNumeric(+offset)) {\n    offsets = [+offset, 0];\n  } else {\n    offsets = parseOffset(offset, popper, reference, basePlacement);\n  }\n\n  if (basePlacement === 'left') {\n    popper.top += offsets[0];\n    popper.left -= offsets[1];\n  } else if (basePlacement === 'right') {\n    popper.top += offsets[0];\n    popper.left += offsets[1];\n  } else if (basePlacement === 'top') {\n    popper.left += offsets[0];\n    popper.top -= offsets[1];\n  } else if (basePlacement === 'bottom') {\n    popper.left += offsets[0];\n    popper.top += offsets[1];\n  }\n\n  data.popper = popper;\n  return data;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction preventOverflow(data, options) {\n  var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper); // If offsetParent is the reference element, we really want to\n  // go one step up and use the next offsetParent as reference to\n  // avoid to make this modifier completely useless and look like broken\n\n  if (data.instance.reference === boundariesElement) {\n    boundariesElement = getOffsetParent(boundariesElement);\n  } // NOTE: DOM access here\n  // resets the popper's position so that the document size can be calculated excluding\n  // the size of the popper element itself\n\n\n  var transformProp = getSupportedPropertyName('transform');\n  var popperStyles = data.instance.popper.style; // assignment to help minification\n\n  var top = popperStyles.top,\n      left = popperStyles.left,\n      transform = popperStyles[transformProp];\n  popperStyles.top = '';\n  popperStyles.left = '';\n  popperStyles[transformProp] = '';\n  var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed); // NOTE: DOM access here\n  // restores the original style properties after the offsets have been computed\n\n  popperStyles.top = top;\n  popperStyles.left = left;\n  popperStyles[transformProp] = transform;\n  options.boundaries = boundaries;\n  var order = options.priority;\n  var popper = data.offsets.popper;\n  var check = {\n    primary: function primary(placement) {\n      var value = popper[placement];\n\n      if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n        value = Math.max(popper[placement], boundaries[placement]);\n      }\n\n      return defineProperty({}, placement, value);\n    },\n    secondary: function secondary(placement) {\n      var mainSide = placement === 'right' ? 'left' : 'top';\n      var value = popper[mainSide];\n\n      if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n        value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n      }\n\n      return defineProperty({}, mainSide, value);\n    }\n  };\n  order.forEach(function (placement) {\n    var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n    popper = _extends({}, popper, check[side](placement));\n  });\n  data.offsets.popper = popper;\n  return data;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction shift(data) {\n  var placement = data.placement;\n  var basePlacement = placement.split('-')[0];\n  var shiftvariation = placement.split('-')[1]; // if shift shiftvariation is specified, run the modifier\n\n  if (shiftvariation) {\n    var _data$offsets = data.offsets,\n        reference = _data$offsets.reference,\n        popper = _data$offsets.popper;\n    var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n    var side = isVertical ? 'left' : 'top';\n    var measurement = isVertical ? 'width' : 'height';\n    var shiftOffsets = {\n      start: defineProperty({}, side, reference[side]),\n      end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n    };\n    data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n  }\n\n  return data;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction hide(data) {\n  if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n    return data;\n  }\n\n  var refRect = data.offsets.reference;\n  var bound = find(data.instance.modifiers, function (modifier) {\n    return modifier.name === 'preventOverflow';\n  }).boundaries;\n\n  if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n    // Avoid unnecessary DOM access if visibility hasn't changed\n    if (data.hide === true) {\n      return data;\n    }\n\n    data.hide = true;\n    data.attributes['x-out-of-boundaries'] = '';\n  } else {\n    // Avoid unnecessary DOM access if visibility hasn't changed\n    if (data.hide === false) {\n      return data;\n    }\n\n    data.hide = false;\n    data.attributes['x-out-of-boundaries'] = false;\n  }\n\n  return data;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction inner(data) {\n  var placement = data.placement;\n  var basePlacement = placement.split('-')[0];\n  var _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n  var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n  var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n  popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n  data.placement = getOppositePlacement(placement);\n  data.offsets.popper = getClientRect(popper);\n  return data;\n}\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\n\n\nvar modifiers = {\n  /**\n   * Modifier used to shift the popper on the start or end of its reference\n   * element.<br />\n   * It will read the variation of the `placement` property.<br />\n   * It can be one either `-end` or `-start`.\n   * @memberof modifiers\n   * @inner\n   */\n  shift: {\n    /** @prop {number} order=100 - Index used to define the order of execution */\n    order: 100,\n\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n\n    /** @prop {ModifierFn} */\n    fn: shift\n  },\n\n  /**\n   * The `offset` modifier can shift your popper on both its axis.\n   *\n   * It accepts the following units:\n   * - `px` or unit-less, interpreted as pixels\n   * - `%` or `%r`, percentage relative to the length of the reference element\n   * - `%p`, percentage relative to the length of the popper element\n   * - `vw`, CSS viewport width unit\n   * - `vh`, CSS viewport height unit\n   *\n   * For length is intended the main axis relative to the placement of the popper.<br />\n   * This means that if the placement is `top` or `bottom`, the length will be the\n   * `width`. In case of `left` or `right`, it will be the `height`.\n   *\n   * You can provide a single value (as `Number` or `String`), or a pair of values\n   * as `String` divided by a comma or one (or more) white spaces.<br />\n   * The latter is a deprecated method because it leads to confusion and will be\n   * removed in v2.<br />\n   * Additionally, it accepts additions and subtractions between different units.\n   * Note that multiplications and divisions aren't supported.\n   *\n   * Valid examples are:\n   * ```\n   * 10\n   * '10%'\n   * '10, 10'\n   * '10%, 10'\n   * '10 + 10%'\n   * '10 - 5vh + 3%'\n   * '-10px + 5vh, 5px - 6%'\n   * ```\n   * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n   * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n   * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  offset: {\n    /** @prop {number} order=200 - Index used to define the order of execution */\n    order: 200,\n\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n\n    /** @prop {ModifierFn} */\n    fn: offset,\n\n    /** @prop {Number|String} offset=0\n     * The offset value as described in the modifier description\n     */\n    offset: 0\n  },\n\n  /**\n   * Modifier used to prevent the popper from being positioned outside the boundary.\n   *\n   * A scenario exists where the reference itself is not within the boundaries.<br />\n   * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n   * In this case we need to decide whether the popper should either:\n   *\n   * - detach from the reference and remain \"trapped\" in the boundaries, or\n   * - if it should ignore the boundary and \"escape with its reference\"\n   *\n   * When `escapeWithReference` is set to`true` and reference is completely\n   * outside its boundaries, the popper will overflow (or completely leave)\n   * the boundaries in order to remain attached to the edge of the reference.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  preventOverflow: {\n    /** @prop {number} order=300 - Index used to define the order of execution */\n    order: 300,\n\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n\n    /** @prop {ModifierFn} */\n    fn: preventOverflow,\n\n    /**\n     * @prop {Array} [priority=['left','right','top','bottom']]\n     * Popper will try to prevent overflow following these priorities by default,\n     * then, it could overflow on the left and on top of the `boundariesElement`\n     */\n    priority: ['left', 'right', 'top', 'bottom'],\n\n    /**\n     * @prop {number} padding=5\n     * Amount of pixel used to define a minimum distance between the boundaries\n     * and the popper. This makes sure the popper always has a little padding\n     * between the edges of its container\n     */\n    padding: 5,\n\n    /**\n     * @prop {String|HTMLElement} boundariesElement='scrollParent'\n     * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n     * `viewport` or any DOM element.\n     */\n    boundariesElement: 'scrollParent'\n  },\n\n  /**\n   * Modifier used to make sure the reference and its popper stay near each other\n   * without leaving any gap between the two. Especially useful when the arrow is\n   * enabled and you want to ensure that it points to its reference element.\n   * It cares only about the first axis. You can still have poppers with margin\n   * between the popper and its reference element.\n   * @memberof modifiers\n   * @inner\n   */\n  keepTogether: {\n    /** @prop {number} order=400 - Index used to define the order of execution */\n    order: 400,\n\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n\n    /** @prop {ModifierFn} */\n    fn: keepTogether\n  },\n\n  /**\n   * This modifier is used to move the `arrowElement` of the popper to make\n   * sure it is positioned between the reference element and its popper element.\n   * It will read the outer size of the `arrowElement` node to detect how many\n   * pixels of conjunction are needed.\n   *\n   * It has no effect if no `arrowElement` is provided.\n   * @memberof modifiers\n   * @inner\n   */\n  arrow: {\n    /** @prop {number} order=500 - Index used to define the order of execution */\n    order: 500,\n\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n\n    /** @prop {ModifierFn} */\n    fn: arrow,\n\n    /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n    element: '[x-arrow]'\n  },\n\n  /**\n   * Modifier used to flip the popper's placement when it starts to overlap its\n   * reference element.\n   *\n   * Requires the `preventOverflow` modifier before it in order to work.\n   *\n   * **NOTE:** this modifier will interrupt the current update cycle and will\n   * restart it if it detects the need to flip the placement.\n   * @memberof modifiers\n   * @inner\n   */\n  flip: {\n    /** @prop {number} order=600 - Index used to define the order of execution */\n    order: 600,\n\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n\n    /** @prop {ModifierFn} */\n    fn: flip,\n\n    /**\n     * @prop {String|Array} behavior='flip'\n     * The behavior used to change the popper's placement. It can be one of\n     * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n     * placements (with optional variations)\n     */\n    behavior: 'flip',\n\n    /**\n     * @prop {number} padding=5\n     * The popper will flip if it hits the edges of the `boundariesElement`\n     */\n    padding: 5,\n\n    /**\n     * @prop {String|HTMLElement} boundariesElement='viewport'\n     * The element which will define the boundaries of the popper position.\n     * The popper will never be placed outside of the defined boundaries\n     * (except if `keepTogether` is enabled)\n     */\n    boundariesElement: 'viewport',\n\n    /**\n     * @prop {Boolean} flipVariations=false\n     * The popper will switch placement variation between `-start` and `-end` when\n     * the reference element overlaps its boundaries.\n     *\n     * The original placement should have a set variation.\n     */\n    flipVariations: false,\n\n    /**\n     * @prop {Boolean} flipVariationsByContent=false\n     * The popper will switch placement variation between `-start` and `-end` when\n     * the popper element overlaps its reference boundaries.\n     *\n     * The original placement should have a set variation.\n     */\n    flipVariationsByContent: false\n  },\n\n  /**\n   * Modifier used to make the popper flow toward the inner of the reference element.\n   * By default, when this modifier is disabled, the popper will be placed outside\n   * the reference element.\n   * @memberof modifiers\n   * @inner\n   */\n  inner: {\n    /** @prop {number} order=700 - Index used to define the order of execution */\n    order: 700,\n\n    /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n    enabled: false,\n\n    /** @prop {ModifierFn} */\n    fn: inner\n  },\n\n  /**\n   * Modifier used to hide the popper when its reference element is outside of the\n   * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n   * be used to hide with a CSS selector the popper when its reference is\n   * out of boundaries.\n   *\n   * Requires the `preventOverflow` modifier before it in order to work.\n   * @memberof modifiers\n   * @inner\n   */\n  hide: {\n    /** @prop {number} order=800 - Index used to define the order of execution */\n    order: 800,\n\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n\n    /** @prop {ModifierFn} */\n    fn: hide\n  },\n\n  /**\n   * Computes the style that will be applied to the popper element to gets\n   * properly positioned.\n   *\n   * Note that this modifier will not touch the DOM, it just prepares the styles\n   * so that `applyStyle` modifier can apply it. This separation is useful\n   * in case you need to replace `applyStyle` with a custom implementation.\n   *\n   * This modifier has `850` as `order` value to maintain backward compatibility\n   * with previous versions of Popper.js. Expect the modifiers ordering method\n   * to change in future major versions of the library.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  computeStyle: {\n    /** @prop {number} order=850 - Index used to define the order of execution */\n    order: 850,\n\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n\n    /** @prop {ModifierFn} */\n    fn: computeStyle,\n\n    /**\n     * @prop {Boolean} gpuAcceleration=true\n     * If true, it uses the CSS 3D transformation to position the popper.\n     * Otherwise, it will use the `top` and `left` properties\n     */\n    gpuAcceleration: true,\n\n    /**\n     * @prop {string} [x='bottom']\n     * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n     * Change this if your popper should grow in a direction different from `bottom`\n     */\n    x: 'bottom',\n\n    /**\n     * @prop {string} [x='left']\n     * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n     * Change this if your popper should grow in a direction different from `right`\n     */\n    y: 'right'\n  },\n\n  /**\n   * Applies the computed styles to the popper element.\n   *\n   * All the DOM manipulations are limited to this modifier. This is useful in case\n   * you want to integrate Popper.js inside a framework or view library and you\n   * want to delegate all the DOM manipulations to it.\n   *\n   * Note that if you disable this modifier, you must make sure the popper element\n   * has its position set to `absolute` before Popper.js can do its work!\n   *\n   * Just disable this modifier and define your own to achieve the desired effect.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  applyStyle: {\n    /** @prop {number} order=900 - Index used to define the order of execution */\n    order: 900,\n\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n\n    /** @prop {ModifierFn} */\n    fn: applyStyle,\n\n    /** @prop {Function} */\n    onLoad: applyStyleOnLoad,\n\n    /**\n     * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n     * @prop {Boolean} gpuAcceleration=true\n     * If true, it uses the CSS 3D transformation to position the popper.\n     * Otherwise, it will use the `top` and `left` properties\n     */\n    gpuAcceleration: undefined\n  }\n};\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overridden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n *   modifiers: {\n *     preventOverflow: { enabled: false }\n *   }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\n\nvar Defaults = {\n  /**\n   * Popper's placement.\n   * @prop {Popper.placements} placement='bottom'\n   */\n  placement: 'bottom',\n\n  /**\n   * Set this to true if you want popper to position it self in 'fixed' mode\n   * @prop {Boolean} positionFixed=false\n   */\n  positionFixed: false,\n\n  /**\n   * Whether events (resize, scroll) are initially enabled.\n   * @prop {Boolean} eventsEnabled=true\n   */\n  eventsEnabled: true,\n\n  /**\n   * Set to true if you want to automatically remove the popper when\n   * you call the `destroy` method.\n   * @prop {Boolean} removeOnDestroy=false\n   */\n  removeOnDestroy: false,\n\n  /**\n   * Callback called when the popper is created.<br />\n   * By default, it is set to no-op.<br />\n   * Access Popper.js instance with `data.instance`.\n   * @prop {onCreate}\n   */\n  onCreate: function onCreate() {},\n\n  /**\n   * Callback called when the popper is updated. This callback is not called\n   * on the initialization/creation of the popper, but only on subsequent\n   * updates.<br />\n   * By default, it is set to no-op.<br />\n   * Access Popper.js instance with `data.instance`.\n   * @prop {onUpdate}\n   */\n  onUpdate: function onUpdate() {},\n\n  /**\n   * List of modifiers used to modify the offsets before they are applied to the popper.\n   * They provide most of the functionalities of Popper.js.\n   * @prop {modifiers}\n   */\n  modifiers: modifiers\n};\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n// Utils\n// Methods\n\nvar Popper = function () {\n  /**\n   * Creates a new Popper.js instance.\n   * @class Popper\n   * @param {Element|referenceObject} reference - The reference element used to position the popper\n   * @param {Element} popper - The HTML / XML element used as the popper\n   * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n   * @return {Object} instance - The generated Popper.js instance\n   */\n  function Popper(reference, popper) {\n    var _this = this;\n\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    classCallCheck(this, Popper);\n\n    this.scheduleUpdate = function () {\n      return requestAnimationFrame(_this.update);\n    }; // make update() debounced, so that it only runs at most once-per-tick\n\n\n    this.update = debounce(this.update.bind(this)); // with {} we create a new object with the options inside it\n\n    this.options = _extends({}, Popper.Defaults, options); // init state\n\n    this.state = {\n      isDestroyed: false,\n      isCreated: false,\n      scrollParents: []\n    }; // get reference and popper elements (allow jQuery wrappers)\n\n    this.reference = reference && reference.jquery ? reference[0] : reference;\n    this.popper = popper && popper.jquery ? popper[0] : popper; // Deep merge modifiers options\n\n    this.options.modifiers = {};\n    Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n      _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n    }); // Refactoring modifiers' list (Object => Array)\n\n    this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n      return _extends({\n        name: name\n      }, _this.options.modifiers[name]);\n    }) // sort the modifiers by order\n    .sort(function (a, b) {\n      return a.order - b.order;\n    }); // modifiers have the ability to execute arbitrary code when Popper.js get inited\n    // such code is executed in the same order of its modifier\n    // they could add new properties to their options configuration\n    // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n\n    this.modifiers.forEach(function (modifierOptions) {\n      if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n        modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n      }\n    }); // fire the first update to position the popper in the right place\n\n    this.update();\n    var eventsEnabled = this.options.eventsEnabled;\n\n    if (eventsEnabled) {\n      // setup event listeners, they will take care of update the position in specific situations\n      this.enableEventListeners();\n    }\n\n    this.state.eventsEnabled = eventsEnabled;\n  } // We can't use class properties because they don't get listed in the\n  // class prototype and break stuff like Sinon stubs\n\n\n  createClass(Popper, [{\n    key: 'update',\n    value: function update$$1() {\n      return update.call(this);\n    }\n  }, {\n    key: 'destroy',\n    value: function destroy$$1() {\n      return destroy.call(this);\n    }\n  }, {\n    key: 'enableEventListeners',\n    value: function enableEventListeners$$1() {\n      return enableEventListeners.call(this);\n    }\n  }, {\n    key: 'disableEventListeners',\n    value: function disableEventListeners$$1() {\n      return disableEventListeners.call(this);\n    }\n    /**\n     * Schedules an update. It will run on the next UI update available.\n     * @method scheduleUpdate\n     * @memberof Popper\n     */\n\n    /**\n     * Collection of utilities useful when writing custom modifiers.\n     * Starting from version 1.7, this method is available only if you\n     * include `popper-utils.js` before `popper.js`.\n     *\n     * **DEPRECATION**: This way to access PopperUtils is deprecated\n     * and will be removed in v2! Use the PopperUtils module directly instead.\n     * Due to the high instability of the methods contained in Utils, we can't\n     * guarantee them to follow semver. Use them at your own risk!\n     * @static\n     * @private\n     * @type {Object}\n     * @deprecated since version 1.8\n     * @member Utils\n     * @memberof Popper\n     */\n\n  }]);\n  return Popper;\n}();\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.<br />\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n/* harmony default export */ __webpack_exports__[\"a\"] = (Popper);\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(41)))\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.uncontrolledPropTypes = uncontrolledPropTypes;\nexports.isProp = isProp;\nexports.defaultKey = defaultKey;\nexports.canAcceptRef = canAcceptRef;\n\nvar _invariant = _interopRequireDefault(__webpack_require__(24));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nvar noop = function noop() {};\n\nfunction readOnlyPropType(handler, name) {\n  return function (props, propName) {\n    if (props[propName] !== undefined) {\n      if (!props[handler]) {\n        return new Error(\"You have provided a `\" + propName + \"` prop to `\" + name + \"` \" + (\"without an `\" + handler + \"` handler prop. This will render a read-only field. \") + (\"If the field should be mutable use `\" + defaultKey(propName) + \"`. \") + (\"Otherwise, set `\" + handler + \"`.\"));\n      }\n    }\n  };\n}\n\nfunction uncontrolledPropTypes(controlledValues, displayName) {\n  var propTypes = {};\n  Object.keys(controlledValues).forEach(function (prop) {\n    // add default propTypes for folks that use runtime checks\n    propTypes[defaultKey(prop)] = noop;\n\n    if (false) { var handler; }\n  });\n  return propTypes;\n}\n\nfunction isProp(props, prop) {\n  return props[prop] !== undefined;\n}\n\nfunction defaultKey(key) {\n  return 'default' + key.charAt(0).toUpperCase() + key.substr(1);\n}\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n\nfunction canAcceptRef(component) {\n  return !!component && (typeof component !== 'function' || component.prototype && component.prototype.isReactComponent);\n}\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = camelizeStyleName;\n\nvar _camelize = _interopRequireDefault(__webpack_require__(33));\n/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/camelizeStyleName.js\n */\n\n\nvar msPattern = /^-ms-/;\n\nfunction camelizeStyleName(string) {\n  return (0, _camelize.default)(string.replace(msPattern, 'ms-'));\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports) {\n\nvar g; // This works in non-strict mode\n\ng = function () {\n  return this;\n}();\n\ntry {\n  // This works if eval is allowed (see CSP)\n  g = g || new Function(\"return this\")();\n} catch (e) {\n  // This works if the window reference is available\n  if (typeof window === \"object\") g = window;\n} // g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\n\nmodule.exports = g;\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _contains = _interopRequireDefault(__webpack_require__(22));\n\nvar _listen = _interopRequireDefault(__webpack_require__(30));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(0));\n\nvar _react = _interopRequireDefault(__webpack_require__(1));\n\nvar _reactDom = _interopRequireDefault(__webpack_require__(6));\n\nvar _ownerDocument = _interopRequireDefault(__webpack_require__(45));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n\nvar escapeKeyCode = 27;\n\nvar noop = function noop() {};\n\nfunction isLeftClickEvent(event) {\n  return event.button === 0;\n}\n\nfunction isModifiedEvent(event) {\n  return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n/**\n * The `<RootCloseWrapper/>` component registers your callback on the document\n * when rendered. Powers the `<Overlay/>` component. This is used achieve modal\n * style behavior where your callback is triggered when the user tries to\n * interact with the rest of the document or hits the `esc` key.\n */\n\n\nvar RootCloseWrapper =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(RootCloseWrapper, _React$Component);\n\n  function RootCloseWrapper(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n\n    _this.addEventListeners = function () {\n      var event = _this.props.event;\n      var doc = (0, _ownerDocument.default)(_assertThisInitialized(_assertThisInitialized(_this))); // Use capture for this listener so it fires before React's listener, to\n      // avoid false positives in the contains() check below if the target DOM\n      // element is removed in the React mouse callback.\n\n      _this.removeMouseCaptureListener = (0, _listen.default)(doc, event, _this.handleMouseCapture, true);\n      _this.removeMouseListener = (0, _listen.default)(doc, event, _this.handleMouse);\n      _this.removeKeyupListener = (0, _listen.default)(doc, 'keyup', _this.handleKeyUp);\n\n      if ('ontouchstart' in doc.documentElement) {\n        _this.mobileSafariHackListeners = [].slice.call(document.body.children).map(function (el) {\n          return (0, _listen.default)(el, 'mousemove', noop);\n        });\n      }\n    };\n\n    _this.removeEventListeners = function () {\n      if (_this.removeMouseCaptureListener) _this.removeMouseCaptureListener();\n      if (_this.removeMouseListener) _this.removeMouseListener();\n      if (_this.removeKeyupListener) _this.removeKeyupListener();\n      if (_this.mobileSafariHackListeners) _this.mobileSafariHackListeners.forEach(function (remove) {\n        return remove();\n      });\n    };\n\n    _this.handleMouseCapture = function (e) {\n      _this.preventMouseRootClose = isModifiedEvent(e) || !isLeftClickEvent(e) || (0, _contains.default)(_reactDom.default.findDOMNode(_assertThisInitialized(_assertThisInitialized(_this))), e.target);\n    };\n\n    _this.handleMouse = function (e) {\n      if (!_this.preventMouseRootClose && _this.props.onRootClose) {\n        _this.props.onRootClose(e);\n      }\n    };\n\n    _this.handleKeyUp = function (e) {\n      if (e.keyCode === escapeKeyCode && _this.props.onRootClose) {\n        _this.props.onRootClose(e);\n      }\n    };\n\n    _this.preventMouseRootClose = false;\n    return _this;\n  }\n\n  var _proto = RootCloseWrapper.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    if (!this.props.disabled) {\n      this.addEventListeners();\n    }\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    if (!this.props.disabled && prevProps.disabled) {\n      this.addEventListeners();\n    } else if (this.props.disabled && !prevProps.disabled) {\n      this.removeEventListeners();\n    }\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    if (!this.props.disabled) {\n      this.removeEventListeners();\n    }\n  };\n\n  _proto.render = function render() {\n    return this.props.children;\n  };\n\n  return RootCloseWrapper;\n}(_react.default.Component);\n\nRootCloseWrapper.displayName = 'RootCloseWrapper';\nRootCloseWrapper.propTypes = {\n  /**\n   * Callback fired after click or mousedown. Also triggers when user hits `esc`.\n   */\n  onRootClose: _propTypes.default.func,\n\n  /**\n   * Children to render.\n   */\n  children: _propTypes.default.element,\n\n  /**\n   * Disable the the RootCloseWrapper, preventing it from triggering `onRootClose`.\n   */\n  disabled: _propTypes.default.bool,\n\n  /**\n   * Choose which document mouse event to bind to.\n   */\n  event: _propTypes.default.oneOf(['click', 'mousedown'])\n};\nRootCloseWrapper.defaultProps = {\n  event: 'click'\n};\nvar _default = RootCloseWrapper;\nexports.default = _default;\nmodule.exports = exports.default;\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = _interopRequireDefault(__webpack_require__(10));\n\nvar on = function on() {};\n\nif (_inDOM.default) {\n  on = function () {\n    if (document.addEventListener) return function (node, eventName, handler, capture) {\n      return node.addEventListener(eventName, handler, capture || false);\n    };else if (document.attachEvent) return function (node, eventName, handler) {\n      return node.attachEvent('on' + eventName, function (e) {\n        e = e || window.event;\n        e.target = e.target || e.srcElement;\n        e.currentTarget = node;\n        handler.call(node, e);\n      });\n    };\n  }();\n}\n\nvar _default = on;\nexports.default = _default;\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = _interopRequireDefault(__webpack_require__(10));\n\nvar off = function off() {};\n\nif (_inDOM.default) {\n  off = function () {\n    if (document.addEventListener) return function (node, eventName, handler, capture) {\n      return node.removeEventListener(eventName, handler, capture || false);\n    };else if (document.attachEvent) return function (node, eventName, handler) {\n      return node.detachEvent('on' + eventName, handler);\n    };\n  }();\n}\n\nvar _default = off;\nexports.default = _default;\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = _default;\n\nvar _reactDom = _interopRequireDefault(__webpack_require__(6));\n\nvar _ownerDocument = _interopRequireDefault(__webpack_require__(16));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _default(componentOrElement) {\n  return (0, _ownerDocument.default)(_reactDom.default.findDOMNode(componentOrElement));\n}\n\nmodule.exports = exports.default;\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = forwardRef;\n\nvar _react = _interopRequireDefault(__webpack_require__(1));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction forwardRef(renderFn, _ref) {\n  var displayName = _ref.displayName,\n      propTypes = _ref.propTypes,\n      defaultProps = _ref.defaultProps,\n      _ref$allowFallback = _ref.allowFallback,\n      allowFallback = _ref$allowFallback === void 0 ? false : _ref$allowFallback;\n\n  var render = function render(props, ref) {\n    return renderFn(props, ref);\n  };\n\n  Object.assign(render, {\n    displayName: displayName\n  });\n  if (_react.default.forwardRef || !allowFallback) return Object.assign(_react.default.forwardRef(render), {\n    propTypes: propTypes,\n    defaultProps: defaultProps\n  });\n  return Object.assign(function (props) {\n    return render(props, null);\n  }, {\n    displayName: displayName,\n    propTypes: propTypes,\n    defaultProps: defaultProps\n  });\n}\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = hasClass;\n\nfunction hasClass(element, className) {\n  if (element.classList) return !!className && element.classList.contains(className);else return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(0));\n\nvar _componentOrElement = _interopRequireDefault(__webpack_require__(20));\n\nvar _react = _interopRequireDefault(__webpack_require__(1));\n\nvar _reactDom = _interopRequireDefault(__webpack_require__(6));\n\nvar _WaitForContainer = _interopRequireDefault(__webpack_require__(49));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n/**\n * The `<Portal/>` component renders its children into a new \"subtree\" outside of current component hierarchy.\n * You can think of it as a declarative `appendChild()`, or jQuery's `$.fn.appendTo()`.\n * The children of `<Portal/>` component will be appended to the `container` specified.\n */\n\n\nvar Portal =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Portal, _React$Component);\n\n  function Portal() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = Portal.prototype;\n\n  _proto.render = function render() {\n    var _this = this;\n\n    return this.props.children ? _react.default.createElement(_WaitForContainer.default, {\n      container: this.props.container,\n      onContainerResolved: this.props.onRendered\n    }, function (container) {\n      return _reactDom.default.createPortal(_this.props.children, container);\n    }) : null;\n  };\n\n  return Portal;\n}(_react.default.Component);\n\nPortal.displayName = 'Portal';\nPortal.propTypes = {\n  /**\n   * A Node, Component instance, or function that returns either. The `container` will have the Portal children\n   * appended to it.\n   */\n  container: _propTypes.default.oneOfType([_componentOrElement.default, _propTypes.default.func]),\n  onRendered: _propTypes.default.func\n};\nvar _default = Portal;\nexports.default = _default;\nmodule.exports = exports.default;\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(0));\n\nvar _componentOrElement = _interopRequireDefault(__webpack_require__(20));\n\nvar _inDOM = _interopRequireDefault(__webpack_require__(10));\n\nvar _ownerDocument = _interopRequireDefault(__webpack_require__(16));\n\nvar _react = _interopRequireDefault(__webpack_require__(1));\n\nvar _reactDom = _interopRequireDefault(__webpack_require__(6));\n\nvar _getContainer = _interopRequireDefault(__webpack_require__(50));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n\nvar propTypes = {\n  /**\n   * A Node, Component instance, or function that returns either. The `container` will have the Portal children\n   * appended to it.\n   */\n  container: _propTypes.default.oneOfType([_componentOrElement.default, _propTypes.default.func]),\n  onContainerResolved: _propTypes.default.func\n};\n\nvar WaitForContainer =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(WaitForContainer, _React$Component);\n\n  function WaitForContainer() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n    if (!_inDOM.default) return _assertThisInitialized(_this);\n    var container = _this.props.container;\n    if (typeof container === 'function') container = container();\n\n    if (container && !_reactDom.default.findDOMNode(container)) {\n      // The container is a React component that has not yet been rendered.\n      // Don't set the container node yet.\n      return _assertThisInitialized(_this);\n    }\n\n    _this.setContainer(container);\n\n    return _this;\n  }\n\n  var _proto = WaitForContainer.prototype;\n\n  _proto.UNSAFE_componentWillReceiveProps = function UNSAFE_componentWillReceiveProps(nextProps) {\n    if (nextProps.container !== this.props.container) {\n      this.setContainer(nextProps.container);\n    }\n  };\n\n  _proto.componentDidMount = function componentDidMount() {\n    if (!this._container) {\n      this.setContainer(this.props.container);\n      this.forceUpdate(this.props.onContainerResolved);\n    } else if (this.props.onContainerResolved) {\n      this.props.onContainerResolved();\n    }\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this._container = null;\n  };\n\n  _proto.setContainer = function setContainer(container) {\n    this._container = (0, _getContainer.default)(container, (0, _ownerDocument.default)().body);\n  };\n\n  _proto.render = function render() {\n    return this._container ? this.props.children(this._container) : null;\n  };\n\n  return WaitForContainer;\n}(_react.default.Component);\n\nWaitForContainer.propTypes = propTypes;\nvar _default = WaitForContainer;\nexports.default = _default;\nmodule.exports = exports.default;\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = getContainer;\n\nvar _reactDom = _interopRequireDefault(__webpack_require__(6));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction getContainer(container, defaultContainer) {\n  if (container == null) return defaultContainer;\n  container = typeof container === 'function' ? container() : container;\n  return _reactDom.default.findDOMNode(container) || null;\n}\n\nmodule.exports = exports.default;\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _end = _interopRequireDefault(__webpack_require__(23));\n\nexports.end = _end.default;\n\nvar _properties = _interopRequireDefault(__webpack_require__(26));\n\nexports.properties = _properties.default;\nvar _default = {\n  end: _end.default,\n  properties: _properties.default\n};\nexports.default = _default;\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _matches = _interopRequireDefault(__webpack_require__(72));\n\nvar _querySelectorAll = _interopRequireDefault(__webpack_require__(9));\n\nvar _react = _interopRequireDefault(__webpack_require__(1));\n\nvar _reactDom = _interopRequireDefault(__webpack_require__(6));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(0));\n\nvar _uncontrollable = _interopRequireDefault(__webpack_require__(7));\n\nvar Popper = _interopRequireWildcard(__webpack_require__(31));\n\nvar _DropdownContext = _interopRequireDefault(__webpack_require__(29));\n\nvar _DropdownMenu = _interopRequireDefault(__webpack_require__(35));\n\nvar _DropdownToggle = _interopRequireDefault(__webpack_require__(36));\n\nfunction _interopRequireWildcard(obj) {\n  if (obj && obj.__esModule) {\n    return obj;\n  } else {\n    var newObj = {};\n\n    if (obj != null) {\n      for (var key in obj) {\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\n          var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};\n\n          if (desc.get || desc.set) {\n            Object.defineProperty(newObj, key, desc);\n          } else {\n            newObj[key] = obj[key];\n          }\n        }\n      }\n    }\n\n    newObj.default = obj;\n    return newObj;\n  }\n}\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n\nvar propTypes = {\n  /**\n   * A render prop that returns the root dropdown element. The `props`\n   * argument should spread through to an element containing _both_ the\n   * menu and toggle in order to handle keyboard events for focus management.\n   *\n   * @type {Function ({\n   *   props: {\n   *     onKeyDown: (SyntheticEvent) => void,\n   *   },\n   * }) => React.Element}\n   */\n  children: _propTypes.default.func.isRequired,\n\n  /**\n   * Determines the direction and location of the Menu in relation to it's Toggle.\n   */\n  drop: _propTypes.default.oneOf(['up', 'left', 'right', 'down']),\n\n  /**\n   * Controls the focus behavior for when the Dropdown is opened. Set to\n   * `true` to always focus the first menu item, `keyboard` to focus only when\n   * navigating via the keyboard, or `false` to disable completely\n   *\n   * The Default behavior is `false` **unless** the Menu has a `role=\"menu\"`\n   * where it will default to `keyboard` to match the recommended [ARIA Authoring practices](https://www.w3.org/TR/wai-aria-practices-1.1/#menubutton).\n   */\n  focusFirstItemOnShow: _propTypes.default.oneOf([false, true, 'keyboard']),\n\n  /**\n   * A css slector string that will return __focusable__ menu items.\n   * Selectors should be relative to the menu component:\n   * e.g. ` > li:not('.disabled')`\n   */\n  itemSelector: _propTypes.default.string.isRequired,\n\n  /**\n   * Align the menu to the 'end' side of the placement side of the Dropdown toggle. The default placement is `top-start` or `bottom-start`.\n   */\n  alignEnd: _propTypes.default.bool,\n\n  /**\n   * Whether or not the Dropdown is visible.\n   *\n   * @controllable onToggle\n   */\n  show: _propTypes.default.bool,\n\n  /**\n   * A callback fired when the Dropdown wishes to change visibility. Called with the requested\n   * `show` value, the DOM event, and the source that fired it: `'click'`,`'keydown'`,`'rootClose'`, or `'select'`.\n   *\n   * ```js\n   * function(\n   *   isOpen: boolean,\n   *   event: SyntheticEvent,\n   * ): void\n   * ```\n   *\n   * @controllable show\n   */\n  onToggle: _propTypes.default.func\n};\nvar defaultProps = {\n  itemSelector: '* > *'\n};\n/**\n * `Dropdown` is set of structural components for building, accessible dropdown menus with close-on-click,\n * keyboard navigation, and correct focus handling. As with all the react-overlay's\n * components its BYOS (bring your own styles). Dropdown is primarily\n * built from three base components, you should compose to build your Dropdowns.\n *\n * - `Dropdown`, which wraps the menu and toggle, and handles keyboard navigation\n * - `Dropdown.Toggle` generally a button that triggers the menu opening\n * - `Dropdown.Menu` The overlaid, menu, positioned to the toggle with PopperJs\n */\n\nvar Dropdown =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Dropdown, _React$Component);\n\n  Dropdown.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n    var drop = _ref.drop,\n        alignEnd = _ref.alignEnd,\n        show = _ref.show;\n    var lastShow = prevState.context.show;\n    return {\n      lastShow: lastShow,\n      context: _extends({}, prevState.context, {\n        drop: drop,\n        show: show,\n        alignEnd: alignEnd\n      })\n    };\n  };\n\n  function Dropdown(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n\n    _this.handleClick = function (event) {\n      _this.toggleOpen(event);\n    };\n\n    _this.handleKeyDown = function (event) {\n      var key = event.key,\n          target = event.target; // Second only to https://github.com/twbs/bootstrap/blob/8cfbf6933b8a0146ac3fbc369f19e520bd1ebdac/js/src/dropdown.js#L400\n      // in inscrutability\n\n      var isInput = /input|textarea/i.test(target.tagName);\n\n      if (isInput && (key === ' ' || key !== 'Escape' && _this.menu.contains(target))) {\n        return;\n      }\n\n      _this._lastSourceEvent = event.type;\n\n      switch (key) {\n        case 'ArrowUp':\n          {\n            var next = _this.getNextFocusedChild(target, -1);\n\n            if (next && next.focus) next.focus();\n            event.preventDefault();\n            return;\n          }\n\n        case 'ArrowDown':\n          event.preventDefault();\n\n          if (!_this.props.show) {\n            _this.toggleOpen(event);\n          } else {\n            var _next = _this.getNextFocusedChild(target, 1);\n\n            if (_next && _next.focus) _next.focus();\n          }\n\n          return;\n\n        case 'Escape':\n        case 'Tab':\n          _this.props.onToggle(false, event);\n\n          break;\n\n        default:\n      }\n    };\n\n    _this._focusInDropdown = false;\n    _this.menu = null;\n    _this.state = {\n      context: {\n        close: _this.handleClose,\n        toggle: _this.handleClick,\n        menuRef: function menuRef(r) {\n          _this.menu = r;\n        },\n        toggleRef: function toggleRef(r) {\n          var toggleNode = r && _reactDom.default.findDOMNode(r);\n\n          _this.setState(function (_ref2) {\n            var context = _ref2.context;\n            return {\n              context: _extends({}, context, {\n                toggleNode: toggleNode\n              })\n            };\n          });\n        }\n      }\n    };\n    return _this;\n  }\n\n  var _proto = Dropdown.prototype;\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    var show = this.props.show;\n    var prevOpen = prevProps.show;\n\n    if (show && !prevOpen) {\n      this.maybeFocusFirst();\n    }\n\n    this._lastSourceEvent = null;\n\n    if (!show && prevOpen) {\n      // if focus hasn't already moved from the menu let's return it\n      // to the toggle\n      if (this._focusInDropdown) {\n        this._focusInDropdown = false;\n        this.focus();\n      }\n    }\n  };\n\n  _proto.getNextFocusedChild = function getNextFocusedChild(current, offset) {\n    if (!this.menu) return null;\n    var itemSelector = this.props.itemSelector;\n    var items = (0, _querySelectorAll.default)(this.menu, itemSelector);\n    var index = items.indexOf(current) + offset;\n    index = Math.max(0, Math.min(index, items.length));\n    return items[index];\n  };\n\n  _proto.hasMenuRole = function hasMenuRole() {\n    return this.menu && (0, _matches.default)(this.menu, '[role=menu]');\n  };\n\n  _proto.focus = function focus() {\n    var toggleNode = this.state.context.toggleNode;\n\n    if (toggleNode && toggleNode.focus) {\n      toggleNode.focus();\n    }\n  };\n\n  _proto.maybeFocusFirst = function maybeFocusFirst() {\n    var type = this._lastSourceEvent;\n    var focusFirstItemOnShow = this.props.focusFirstItemOnShow;\n\n    if (focusFirstItemOnShow == null) {\n      focusFirstItemOnShow = this.hasMenuRole() ? 'keyboard' : false;\n    }\n\n    if (focusFirstItemOnShow === false || focusFirstItemOnShow === 'keyboard' && !/^key.+$/.test(type)) {\n      return;\n    }\n\n    var itemSelector = this.props.itemSelector;\n    var first = (0, _querySelectorAll.default)(this.menu, itemSelector)[0];\n    if (first && first.focus) first.focus();\n  };\n\n  _proto.toggleOpen = function toggleOpen(event) {\n    var show = !this.props.show;\n    this.props.onToggle(show, event);\n  };\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        children = _this$props.children,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"children\"]);\n\n    delete props.onToggle;\n\n    if (this.menu && this.state.lastShow && !this.props.show) {\n      this._focusInDropdown = this.menu.contains(document.activeElement);\n    }\n\n    return _react.default.createElement(_DropdownContext.default.Provider, {\n      value: this.state.context\n    }, _react.default.createElement(Popper.Manager, null, children({\n      props: {\n        onKeyDown: this.handleKeyDown\n      }\n    })));\n  };\n\n  return Dropdown;\n}(_react.default.Component);\n\nDropdown.displayName = 'ReactOverlaysDropdown';\nDropdown.propTypes = propTypes;\nDropdown.defaultProps = defaultProps;\nvar UncontrolledDropdown = (0, _uncontrollable.default)(Dropdown, {\n  show: 'onToggle'\n});\nUncontrolledDropdown.Menu = _DropdownMenu.default;\nUncontrolledDropdown.Toggle = _DropdownToggle.default;\nvar _default = UncontrolledDropdown;\nexports.default = _default;\nmodule.exports = exports.default;\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports) {\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _implementation = __webpack_require__(73);\n\nvar _implementation2 = _interopRequireDefault(_implementation);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nexports.default = _react2.default.createContext || _implementation2.default;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = mapContextToProps;\n\nvar _react = _interopRequireDefault(__webpack_require__(1));\n\nvar _forwardRef = _interopRequireDefault(__webpack_require__(32));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nvar getDisplayName = function getDisplayName(Component) {\n  var name = typeof Component === 'string' ? Component : Component.name || Component.displayName;\n  return name ? \"ContextTransform(\" + name + \")\" : 'ContextTransform';\n};\n\nvar ensureConsumer = function ensureConsumer(c) {\n  return c.Consumer || c;\n};\n\nfunction $mapContextToProps(_ref, Component) {\n  var maybeArrayOfConsumers = _ref.consumers,\n      mapToProps = _ref.mapToProps,\n      displayName = _ref.displayName,\n      _ref$forwardRefAs = _ref.forwardRefAs,\n      forwardRefAs = _ref$forwardRefAs === void 0 ? 'ref' : _ref$forwardRefAs;\n  var consumers = maybeArrayOfConsumers;\n\n  if (!Array.isArray(maybeArrayOfConsumers)) {\n    consumers = [maybeArrayOfConsumers];\n  }\n\n  var SingleConsumer = ensureConsumer(consumers[0]);\n\n  function singleRender(props, ref) {\n    var _extends2;\n\n    var propsWithRef = _extends((_extends2 = {}, _extends2[forwardRefAs] = ref, _extends2), props);\n\n    return _react.default.createElement(SingleConsumer, null, function (value) {\n      return _react.default.createElement(Component, _extends({}, propsWithRef, mapToProps(value, props)));\n    });\n  }\n\n  function multiRender(props, ref) {\n    var _extends3;\n\n    var propsWithRef = _extends((_extends3 = {}, _extends3[forwardRefAs] = ref, _extends3), props);\n\n    return consumers.reduceRight(function (inner, Context) {\n      return function () {\n        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n          args[_key] = arguments[_key];\n        }\n\n        var Consumer = ensureConsumer(Context);\n        return _react.default.createElement(Consumer, null, function (value) {\n          return inner.apply(void 0, args.concat([value]));\n        });\n      };\n    }, function () {\n      for (var _len2 = arguments.length, contexts = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        contexts[_key2] = arguments[_key2];\n      }\n\n      return _react.default.createElement(Component, _extends({}, propsWithRef, mapToProps.apply(void 0, contexts.concat([props]))));\n    })();\n  }\n\n  var contextTransform = consumers.length === 1 ? singleRender : multiRender;\n  return (0, _forwardRef.default)(contextTransform, {\n    displayName: displayName || getDisplayName(Component)\n  });\n}\n\nfunction mapContextToProps(maybeOpts, mapToProps, Component) {\n  if (arguments.length === 2) return $mapContextToProps(maybeOpts, mapToProps);\n  return $mapContextToProps({\n    consumers: maybeOpts,\n    mapToProps: mapToProps\n  }, Component);\n}\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _activeElement = _interopRequireDefault(__webpack_require__(79));\n\nvar _contains = _interopRequireDefault(__webpack_require__(22));\n\nvar _inDOM = _interopRequireDefault(__webpack_require__(10));\n\nvar _listen = _interopRequireDefault(__webpack_require__(30));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(0));\n\nvar _componentOrElement = _interopRequireDefault(__webpack_require__(20));\n\nvar _elementType = _interopRequireDefault(__webpack_require__(28));\n\nvar _react = _interopRequireDefault(__webpack_require__(1));\n\nvar _reactDom = _interopRequireDefault(__webpack_require__(6));\n\nvar _ModalManager = _interopRequireDefault(__webpack_require__(37));\n\nvar _Portal = _interopRequireDefault(__webpack_require__(48));\n\nvar _getContainer = _interopRequireDefault(__webpack_require__(50));\n\nvar _ownerDocument = _interopRequireDefault(__webpack_require__(45));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n\nvar modalManager = new _ModalManager.default();\n\nfunction omitProps(props, propTypes) {\n  var keys = Object.keys(props);\n  var newProps = {};\n  keys.map(function (prop) {\n    if (!Object.prototype.hasOwnProperty.call(propTypes, prop)) {\n      newProps[prop] = props[prop];\n    }\n  });\n  return newProps;\n}\n/**\n * Love them or hate them, `<Modal />` provides a solid foundation for creating dialogs, lightboxes, or whatever else.\n * The Modal component renders its `children` node in front of a backdrop component.\n *\n * The Modal offers a few helpful features over using just a `<Portal/>` component and some styles:\n *\n * - Manages dialog stacking when one-at-a-time just isn't enough.\n * - Creates a backdrop, for disabling interaction below the modal.\n * - It properly manages focus; moving to the modal content, and keeping it there until the modal is closed.\n * - It disables scrolling of the page content while open.\n * - Adds the appropriate ARIA roles are automatically.\n * - Easily pluggable animations via a `<Transition/>` component.\n *\n * Note that, in the same way the backdrop element prevents users from clicking or interacting\n * with the page content underneath the Modal, Screen readers also need to be signaled to not to\n * interact with page content while the Modal is open. To do this, we use a common technique of applying\n * the `aria-hidden='true'` attribute to the non-Modal elements in the Modal `container`. This means that for\n * a Modal to be truly modal, it should have a `container` that is _outside_ your app's\n * React hierarchy (such as the default: document.body).\n */\n\n\nvar Modal =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Modal, _React$Component);\n\n  function Modal() {\n    var _this;\n\n    for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n      _args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(_args)) || this;\n    _this.state = {\n      exited: !_this.props.show\n    };\n\n    _this.onPortalRendered = function () {\n      if (_this.props.onShow) {\n        _this.props.onShow();\n      } // autofocus after onShow, to not trigger a focus event for previous\n      // modals before this one is shown.\n\n\n      _this.autoFocus();\n    };\n\n    _this.onShow = function () {\n      var doc = (0, _ownerDocument.default)(_assertThisInitialized(_assertThisInitialized(_this)));\n      var container = (0, _getContainer.default)(_this.props.container, doc.body);\n\n      _this.props.manager.add(_assertThisInitialized(_assertThisInitialized(_this)), container, _this.props.containerClassName);\n\n      _this.removeKeydownListener = (0, _listen.default)(doc, 'keydown', _this.handleDocumentKeyDown);\n      _this.removeFocusListener = (0, _listen.default)(doc, 'focus', // the timeout is necessary b/c this will run before the new modal is mounted\n      // and so steals focus from it\n      function () {\n        return setTimeout(_this.enforceFocus);\n      }, true);\n    };\n\n    _this.onHide = function () {\n      _this.props.manager.remove(_assertThisInitialized(_assertThisInitialized(_this)));\n\n      _this.removeKeydownListener();\n\n      _this.removeFocusListener();\n\n      if (_this.props.restoreFocus) {\n        _this.restoreLastFocus();\n      }\n    };\n\n    _this.setDialogRef = function (ref) {\n      _this.dialog = ref;\n    };\n\n    _this.setBackdropRef = function (ref) {\n      _this.backdrop = ref && _reactDom.default.findDOMNode(ref);\n    };\n\n    _this.handleHidden = function () {\n      _this.setState({\n        exited: true\n      });\n\n      _this.onHide();\n\n      if (_this.props.onExited) {\n        var _this$props;\n\n        (_this$props = _this.props).onExited.apply(_this$props, arguments);\n      }\n    };\n\n    _this.handleBackdropClick = function (e) {\n      if (e.target !== e.currentTarget) {\n        return;\n      }\n\n      if (_this.props.onBackdropClick) {\n        _this.props.onBackdropClick(e);\n      }\n\n      if (_this.props.backdrop === true) {\n        _this.props.onHide();\n      }\n    };\n\n    _this.handleDocumentKeyDown = function (e) {\n      if (_this.props.keyboard && e.keyCode === 27 && _this.isTopModal()) {\n        if (_this.props.onEscapeKeyDown) {\n          _this.props.onEscapeKeyDown(e);\n        }\n\n        _this.props.onHide();\n      }\n    };\n\n    _this.enforceFocus = function () {\n      if (!_this.props.enforceFocus || !_this._isMounted || !_this.isTopModal()) {\n        return;\n      }\n\n      var currentActiveElement = (0, _activeElement.default)((0, _ownerDocument.default)(_assertThisInitialized(_assertThisInitialized(_this))));\n\n      if (_this.dialog && !(0, _contains.default)(_this.dialog, currentActiveElement)) {\n        _this.dialog.focus();\n      }\n    };\n\n    _this.renderBackdrop = function () {\n      var _this$props2 = _this.props,\n          renderBackdrop = _this$props2.renderBackdrop,\n          Transition = _this$props2.backdropTransition;\n      var backdrop = renderBackdrop({\n        ref: _this.setBackdropRef,\n        onClick: _this.handleBackdropClick\n      });\n\n      if (Transition) {\n        backdrop = _react.default.createElement(Transition, {\n          appear: true,\n          in: _this.props.show\n        }, backdrop);\n      }\n\n      return backdrop;\n    };\n\n    return _this;\n  }\n\n  Modal.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps) {\n    if (nextProps.show) {\n      return {\n        exited: false\n      };\n    } else if (!nextProps.transition) {\n      // Otherwise let handleHidden take care of marking exited.\n      return {\n        exited: true\n      };\n    }\n\n    return null;\n  };\n\n  var _proto = Modal.prototype;\n\n  _proto.getSnapshotBeforeUpdate = function getSnapshotBeforeUpdate(prevProps) {\n    if (_inDOM.default && !prevProps.show && this.props.show) {\n      this.lastFocus = (0, _activeElement.default)();\n    }\n\n    return null;\n  };\n\n  _proto.componentDidMount = function componentDidMount() {\n    this._isMounted = true;\n\n    if (this.props.show) {\n      this.onShow();\n    }\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    var transition = this.props.transition;\n\n    if (prevProps.show && !this.props.show && !transition) {\n      // Otherwise handleHidden will call this.\n      this.onHide();\n    } else if (!prevProps.show && this.props.show) {\n      this.onShow();\n    }\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    var _this$props3 = this.props,\n        show = _this$props3.show,\n        transition = _this$props3.transition;\n    this._isMounted = false;\n\n    if (show || transition && !this.state.exited) {\n      this.onHide();\n    }\n  };\n\n  _proto.autoFocus = function autoFocus() {\n    if (!this.props.autoFocus) return;\n    var currentActiveElement = (0, _activeElement.default)((0, _ownerDocument.default)(this));\n\n    if (this.dialog && !(0, _contains.default)(this.dialog, currentActiveElement)) {\n      this.lastFocus = currentActiveElement;\n      this.dialog.focus();\n    }\n  };\n\n  _proto.restoreLastFocus = function restoreLastFocus() {\n    // Support: <=IE11 doesn't support `focus()` on svg elements (RB: #917)\n    if (this.lastFocus && this.lastFocus.focus) {\n      this.lastFocus.focus();\n      this.lastFocus = null;\n    }\n  };\n\n  _proto.isTopModal = function isTopModal() {\n    return this.props.manager.isTopModal(this);\n  };\n\n  _proto.render = function render() {\n    var _this$props4 = this.props,\n        show = _this$props4.show,\n        container = _this$props4.container,\n        children = _this$props4.children,\n        renderDialog = _this$props4.renderDialog,\n        _this$props4$role = _this$props4.role,\n        role = _this$props4$role === void 0 ? 'dialog' : _this$props4$role,\n        Transition = _this$props4.transition,\n        backdrop = _this$props4.backdrop,\n        className = _this$props4.className,\n        style = _this$props4.style,\n        onExit = _this$props4.onExit,\n        onExiting = _this$props4.onExiting,\n        onEnter = _this$props4.onEnter,\n        onEntering = _this$props4.onEntering,\n        onEntered = _this$props4.onEntered,\n        props = _objectWithoutPropertiesLoose(_this$props4, [\"show\", \"container\", \"children\", \"renderDialog\", \"role\", \"transition\", \"backdrop\", \"className\", \"style\", \"onExit\", \"onExiting\", \"onEnter\", \"onEntering\", \"onEntered\"]);\n\n    if (!(show || Transition && !this.state.exited)) {\n      return null;\n    }\n\n    var dialogProps = _extends({\n      role: role,\n      ref: this.setDialogRef,\n      // apparently only works on the dialog role element\n      'aria-modal': role === 'dialog' ? true : undefined\n    }, omitProps(props, Modal.propTypes), {\n      style: style,\n      className: className,\n      tabIndex: '-1'\n    });\n\n    var dialog = renderDialog ? renderDialog(dialogProps) : _react.default.createElement(\"div\", dialogProps, _react.default.cloneElement(children, {\n      role: 'document'\n    }));\n\n    if (Transition) {\n      dialog = _react.default.createElement(Transition, {\n        appear: true,\n        unmountOnExit: true,\n        in: show,\n        onExit: onExit,\n        onExiting: onExiting,\n        onExited: this.handleHidden,\n        onEnter: onEnter,\n        onEntering: onEntering,\n        onEntered: onEntered\n      }, dialog);\n    }\n\n    return _react.default.createElement(_Portal.default, {\n      container: container,\n      onRendered: this.onPortalRendered\n    }, _react.default.createElement(_react.default.Fragment, null, backdrop && this.renderBackdrop(), dialog));\n  };\n\n  return Modal;\n}(_react.default.Component);\n\nModal.propTypes = {\n  /**\n   * Set the visibility of the Modal\n   */\n  show: _propTypes.default.bool,\n\n  /**\n   * A Node, Component instance, or function that returns either. The Modal is appended to it's container element.\n   *\n   * For the sake of assistive technologies, the container should usually be the document body, so that the rest of the\n   * page content can be placed behind a virtual backdrop as well as a visual one.\n   */\n  container: _propTypes.default.oneOfType([_componentOrElement.default, _propTypes.default.func]),\n\n  /**\n   * A callback fired when the Modal is opening.\n   */\n  onShow: _propTypes.default.func,\n\n  /**\n   * A callback fired when either the backdrop is clicked, or the escape key is pressed.\n   *\n   * The `onHide` callback only signals intent from the Modal,\n   * you must actually set the `show` prop to `false` for the Modal to close.\n   */\n  onHide: _propTypes.default.func,\n\n  /**\n   * Include a backdrop component.\n   */\n  backdrop: _propTypes.default.oneOfType([_propTypes.default.bool, _propTypes.default.oneOf(['static'])]),\n\n  /**\n   * A function that returns the dialog component. Useful for custom\n   * rendering. **Note:** the component should make sure to apply the provided ref.\n   *\n   * ```js\n   *  renderDialog={props => <MyDialog {...props} />}\n   * ```\n   */\n  renderDialog: _propTypes.default.func,\n\n  /**\n   * A function that returns a backdrop component. Useful for custom\n   * backdrop rendering.\n   *\n   * ```js\n   *  renderBackdrop={props => <MyBackdrop {...props} />}\n   * ```\n   */\n  renderBackdrop: _propTypes.default.func,\n\n  /**\n   * A callback fired when the escape key, if specified in `keyboard`, is pressed.\n   */\n  onEscapeKeyDown: _propTypes.default.func,\n\n  /**\n   * A callback fired when the backdrop, if specified, is clicked.\n   */\n  onBackdropClick: _propTypes.default.func,\n\n  /**\n   * A css class or set of classes applied to the modal container when the modal is open,\n   * and removed when it is closed.\n   */\n  containerClassName: _propTypes.default.string,\n\n  /**\n   * Close the modal when escape key is pressed\n   */\n  keyboard: _propTypes.default.bool,\n\n  /**\n   * A `react-transition-group@2.0.0` `<Transition/>` component used\n   * to control animations for the dialog component.\n   */\n  transition: _elementType.default,\n\n  /**\n   * A `react-transition-group@2.0.0` `<Transition/>` component used\n   * to control animations for the backdrop components.\n   */\n  backdropTransition: _elementType.default,\n\n  /**\n   * When `true` The modal will automatically shift focus to itself when it opens, and\n   * replace it to the last focused element when it closes. This also\n   * works correctly with any Modal children that have the `autoFocus` prop.\n   *\n   * Generally this should never be set to `false` as it makes the Modal less\n   * accessible to assistive technologies, like screen readers.\n   */\n  autoFocus: _propTypes.default.bool,\n\n  /**\n   * When `true` The modal will prevent focus from leaving the Modal while open.\n   *\n   * Generally this should never be set to `false` as it makes the Modal less\n   * accessible to assistive technologies, like screen readers.\n   */\n  enforceFocus: _propTypes.default.bool,\n\n  /**\n   * When `true` The modal will restore focus to previously focused element once\n   * modal is hidden\n   */\n  restoreFocus: _propTypes.default.bool,\n\n  /**\n   * Callback fired before the Modal transitions in\n   */\n  onEnter: _propTypes.default.func,\n\n  /**\n   * Callback fired as the Modal begins to transition in\n   */\n  onEntering: _propTypes.default.func,\n\n  /**\n   * Callback fired after the Modal finishes transitioning in\n   */\n  onEntered: _propTypes.default.func,\n\n  /**\n   * Callback fired right before the Modal transitions out\n   */\n  onExit: _propTypes.default.func,\n\n  /**\n   * Callback fired as the Modal begins to transition out\n   */\n  onExiting: _propTypes.default.func,\n\n  /**\n   * Callback fired after the Modal finishes transitioning out\n   */\n  onExited: _propTypes.default.func,\n\n  /**\n   * A ModalManager instance used to track and manage the state of open\n   * Modals. Useful when customizing how modals interact within a container\n   */\n  manager: _propTypes.default.object.isRequired\n};\nModal.defaultProps = {\n  show: false,\n  role: 'dialog',\n  backdrop: true,\n  keyboard: true,\n  autoFocus: true,\n  enforceFocus: true,\n  restoreFocus: true,\n  onHide: function onHide() {},\n  manager: modalManager,\n  renderBackdrop: function renderBackdrop(props) {\n    return _react.default.createElement(\"div\", props);\n  }\n};\nModal.Manager = _ModalManager.default;\nvar _default = Modal;\nexports.default = _default;\nmodule.exports = exports.default;\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(0));\n\nvar _elementType = _interopRequireDefault(__webpack_require__(28));\n\nvar _componentOrElement = _interopRequireDefault(__webpack_require__(20));\n\nvar _react = _interopRequireDefault(__webpack_require__(1));\n\nvar _reactDom = _interopRequireDefault(__webpack_require__(6));\n\nvar _Portal = _interopRequireDefault(__webpack_require__(48));\n\nvar _RootCloseWrapper = _interopRequireDefault(__webpack_require__(42));\n\nvar _reactPopper = __webpack_require__(31);\n\nvar _forwardRef = _interopRequireDefault(__webpack_require__(46));\n\nvar _WaitForContainer = _interopRequireDefault(__webpack_require__(49));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n/**\n * Built on top of `<Position/>` and `<Portal/>`, the overlay component is\n * great for custom tooltip overlays.\n */\n\n\nvar Overlay =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Overlay, _React$Component);\n\n  function Overlay(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n\n    _this.handleHidden = function () {\n      _this.setState({\n        exited: true\n      });\n\n      if (_this.props.onExited) {\n        var _this$props;\n\n        (_this$props = _this.props).onExited.apply(_this$props, arguments);\n      }\n    };\n\n    _this.state = {\n      exited: !props.show\n    };\n    _this.onHiddenListener = _this.handleHidden.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n    _this._lastTarget = null;\n    return _this;\n  }\n\n  Overlay.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps) {\n    if (nextProps.show) {\n      return {\n        exited: false\n      };\n    } else if (!nextProps.transition) {\n      // Otherwise let handleHidden take care of marking exited.\n      return {\n        exited: true\n      };\n    }\n\n    return null;\n  };\n\n  var _proto = Overlay.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.setState({\n      target: this.getTarget()\n    });\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    if (this.props === prevProps) return;\n    var target = this.getTarget();\n\n    if (target !== this.state.target) {\n      this.setState({\n        target: target\n      });\n    }\n  };\n\n  _proto.getTarget = function getTarget() {\n    var target = this.props.target;\n    target = typeof target === 'function' ? target() : target;\n    return target && _reactDom.default.findDOMNode(target) || null;\n  };\n\n  _proto.render = function render() {\n    var _this2 = this;\n\n    var _this$props2 = this.props,\n        _0 = _this$props2.target,\n        container = _this$props2.container,\n        containerPadding = _this$props2.containerPadding,\n        placement = _this$props2.placement,\n        rootClose = _this$props2.rootClose,\n        children = _this$props2.children,\n        flip = _this$props2.flip,\n        _this$props2$popperCo = _this$props2.popperConfig,\n        popperConfig = _this$props2$popperCo === void 0 ? {} : _this$props2$popperCo,\n        Transition = _this$props2.transition,\n        props = _objectWithoutPropertiesLoose(_this$props2, [\"target\", \"container\", \"containerPadding\", \"placement\", \"rootClose\", \"children\", \"flip\", \"popperConfig\", \"transition\"]);\n\n    var target = this.state.target; // Don't un-render the overlay while it's transitioning out.\n\n    var mountOverlay = props.show || Transition && !this.state.exited;\n\n    if (!mountOverlay) {\n      // Don't bother showing anything if we don't have to.\n      return null;\n    }\n\n    var child = children;\n    var _popperConfig$modifie = popperConfig.modifiers,\n        modifiers = _popperConfig$modifie === void 0 ? {} : _popperConfig$modifie;\n\n    var popperProps = _extends({}, popperConfig, {\n      placement: placement,\n      referenceElement: target,\n      enableEvents: props.show,\n      modifiers: _extends({}, modifiers, {\n        preventOverflow: _extends({\n          padding: containerPadding || 5\n        }, modifiers.preventOverflow),\n        flip: _extends({\n          enabled: !!flip\n        }, modifiers.preventOverflow)\n      })\n    });\n\n    child = _react.default.createElement(_reactPopper.Popper, popperProps, function (_ref) {\n      var arrowProps = _ref.arrowProps,\n          style = _ref.style,\n          ref = _ref.ref,\n          popper = _objectWithoutPropertiesLoose(_ref, [\"arrowProps\", \"style\", \"ref\"]);\n\n      _this2.popper = popper;\n\n      var innerChild = _this2.props.children(_extends({}, popper, {\n        // popper doesn't set the initial placement\n        placement: popper.placement || placement,\n        show: props.show,\n        arrowProps: arrowProps,\n        props: {\n          ref: ref,\n          style: style\n        }\n      }));\n\n      if (Transition) {\n        var onExit = props.onExit,\n            onExiting = props.onExiting,\n            onEnter = props.onEnter,\n            onEntering = props.onEntering,\n            onEntered = props.onEntered;\n        innerChild = _react.default.createElement(Transition, {\n          in: props.show,\n          appear: true,\n          onExit: onExit,\n          onExiting: onExiting,\n          onExited: _this2.onHiddenListener,\n          onEnter: onEnter,\n          onEntering: onEntering,\n          onEntered: onEntered\n        }, innerChild);\n      }\n\n      return innerChild;\n    });\n\n    if (rootClose) {\n      child = _react.default.createElement(_RootCloseWrapper.default, {\n        onRootClose: props.onHide,\n        event: props.rootCloseEvent,\n        disabled: props.rootCloseDisabled\n      }, child);\n    }\n\n    return _react.default.createElement(_Portal.default, {\n      container: container\n    }, child);\n  };\n\n  return Overlay;\n}(_react.default.Component);\n\nOverlay.propTypes = _extends({}, _Portal.default.propTypes, {\n  /**\n   * Set the visibility of the Overlay\n   */\n  show: _propTypes.default.bool,\n\n  /** Specify where the overlay element is positioned in relation to the target element */\n  placement: _propTypes.default.oneOf(_reactPopper.placements),\n\n  /**\n   * A Node, Component instance, or function that returns either. The `container` will have the Portal children\n   * appended to it.\n   */\n  container: _propTypes.default.oneOfType([_componentOrElement.default, _propTypes.default.func]),\n\n  /**\n   * Enables the Popper.js `flip` modifier, allowing the Overlay to\n   * automatically adjust it's placement in case of overlap with the viewport or toggle.\n   * Refer to the [flip docs](https://popper.js.org/popper-documentation.html#modifiers..flip.enabled) for more info\n   */\n  flip: _propTypes.default.bool,\n\n  /**\n   * A render prop that returns an element to overlay and position. See\n   * the [react-popper documentation](https://github.com/FezVrasta/react-popper#children) for more info.\n   *\n   * @type {Function ({\n   *   show: boolean,\n   *   placement: Placement,\n   *   outOfBoundaries: ?boolean,\n   *   scheduleUpdate: () => void,\n   *   props: {\n   *     ref: (?HTMLElement) => void,\n   *     style: { [string]: string | number },\n   *     aria-labelledby: ?string\n   *   },\n   *   arrowProps: {\n   *     ref: (?HTMLElement) => void,\n   *     style: { [string]: string | number },\n   *   },\n   * }) => React.Element}\n   */\n  children: _propTypes.default.func.isRequired,\n\n  /**\n   * A set of popper options and props passed directly to react-popper's Popper component.\n   */\n  popperConfig: _propTypes.default.object,\n\n  /**\n   * Specify whether the overlay should trigger `onHide` when the user clicks outside the overlay\n   */\n  rootClose: _propTypes.default.bool,\n\n  /**\n   * Specify event for toggling overlay\n   */\n  rootCloseEvent: _RootCloseWrapper.default.propTypes.event,\n\n  /**\n   * Specify disabled for disable RootCloseWrapper\n   */\n  rootCloseDisabled: _RootCloseWrapper.default.propTypes.disabled,\n\n  /**\n   * A Callback fired by the Overlay when it wishes to be hidden.\n   *\n   * __required__ when `rootClose` is `true`.\n   *\n   * @type func\n   */\n  onHide: function onHide(props) {\n    var propType = _propTypes.default.func;\n\n    if (props.rootClose) {\n      propType = propType.isRequired;\n    }\n\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    return propType.apply(void 0, [props].concat(args));\n  },\n\n  /**\n   * A `react-transition-group@2.0.0` `<Transition/>` component\n   * used to animate the overlay as it changes visibility.\n   */\n  transition: _elementType.default,\n\n  /**\n   * Callback fired before the Overlay transitions in\n   */\n  onEnter: _propTypes.default.func,\n\n  /**\n   * Callback fired as the Overlay begins to transition in\n   */\n  onEntering: _propTypes.default.func,\n\n  /**\n   * Callback fired after the Overlay finishes transitioning in\n   */\n  onEntered: _propTypes.default.func,\n\n  /**\n   * Callback fired right before the Overlay transitions out\n   */\n  onExit: _propTypes.default.func,\n\n  /**\n   * Callback fired as the Overlay begins to transition out\n   */\n  onExiting: _propTypes.default.func,\n\n  /**\n   * Callback fired after the Overlay finishes transitioning out\n   */\n  onExited: _propTypes.default.func\n});\n\nvar _default = (0, _forwardRef.default)(function (props, ref) {\n  return (// eslint-disable-next-line react/prop-types\n    _react.default.createElement(_WaitForContainer.default, {\n      container: props.container\n    }, function (container) {\n      return _react.default.createElement(Overlay, _extends({}, props, {\n        ref: ref,\n        container: container\n      }));\n    })\n  );\n}, {\n  displayName: 'withContainer(Overlay)'\n});\n\nexports.default = _default;\nmodule.exports = exports.default;\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\nvar ReactPropTypesSecret = __webpack_require__(59);\n\nfunction emptyFunction() {}\n\nfunction emptyFunctionWithReset() {}\n\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function () {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n\n    var err = new Error('Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use PropTypes.checkPropTypes() to call them. ' + 'Read more at http://fb.me/use-check-prop-types');\n    err.name = 'Invariant Violation';\n    throw err;\n  }\n\n  ;\n  shim.isRequired = shim;\n\n  function getShim() {\n    return shim;\n  }\n\n  ; // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n\n  var ReactPropTypes = {\n    array: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n  ReactPropTypes.PropTypes = ReactPropTypes;\n  return ReactPropTypes;\n};\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\nmodule.exports = ReactPropTypesSecret;\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = hyphenateStyleName;\n\nvar _hyphenate = _interopRequireDefault(__webpack_require__(61));\n/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/hyphenateStyleName.js\n */\n\n\nvar msPattern = /^ms-/;\n\nfunction hyphenateStyleName(string) {\n  return (0, _hyphenate.default)(string).replace(msPattern, '-ms-');\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = hyphenate;\nvar rUpper = /([A-Z])/g;\n\nfunction hyphenate(string) {\n  return string.replace(rUpper, '-$1').toLowerCase();\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = _getComputedStyle;\n\nvar _camelizeStyle = _interopRequireDefault(__webpack_require__(40));\n\nvar rposition = /^(top|right|bottom|left)$/;\nvar rnumnonpx = /^([+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|))(?!px)[a-z%]+$/i;\n\nfunction _getComputedStyle(node) {\n  if (!node) throw new TypeError('No Element passed to `getComputedStyle()`');\n  var doc = node.ownerDocument;\n  return 'defaultView' in doc ? doc.defaultView.opener ? node.ownerDocument.defaultView.getComputedStyle(node, null) : window.getComputedStyle(node, null) : {\n    //ie 8 \"magic\" from: https://github.com/jquery/jquery/blob/1.11-stable/src/css/curCSS.js#L72\n    getPropertyValue: function getPropertyValue(prop) {\n      var style = node.style;\n      prop = (0, _camelizeStyle.default)(prop);\n      if (prop == 'float') prop = 'styleFloat';\n      var current = node.currentStyle[prop] || null;\n      if (current == null && style && style[prop]) current = style[prop];\n\n      if (rnumnonpx.test(current) && !rposition.test(prop)) {\n        // Remember the original values\n        var left = style.left;\n        var runStyle = node.runtimeStyle;\n        var rsLeft = runStyle && runStyle.left; // Put in the new values to get a computed value out\n\n        if (rsLeft) runStyle.left = node.currentStyle.left;\n        style.left = prop === 'fontSize' ? '1em' : current;\n        current = style.pixelLeft + 'px'; // Revert the changed values\n\n        style.left = left;\n        if (rsLeft) runStyle.left = rsLeft;\n      }\n\n      return current;\n    }\n  };\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = removeStyle;\n\nfunction removeStyle(node, key) {\n  return 'removeProperty' in node.style ? node.style.removeProperty(key) : node.style.removeAttribute(key);\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = isTransform;\nvar supportedTransforms = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;\n\nfunction isTransform(property) {\n  return !!(property && supportedTransforms.test(property));\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 65 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"polyfill\", function() { return polyfill; });\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nfunction componentWillMount() {\n  // Call this.constructor.gDSFP to support sub-classes.\n  var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n\n  if (state !== null && state !== undefined) {\n    this.setState(state);\n  }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n  // Call this.constructor.gDSFP to support sub-classes.\n  // Use the setState() updater to ensure state isn't stale in certain edge cases.\n  function updater(prevState) {\n    var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n    return state !== null && state !== undefined ? state : null;\n  } // Binding \"this\" is important for shallow renderer support.\n\n\n  this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n  try {\n    var prevProps = this.props;\n    var prevState = this.state;\n    this.props = nextProps;\n    this.state = nextState;\n    this.__reactInternalSnapshotFlag = true;\n    this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(prevProps, prevState);\n  } finally {\n    this.props = prevProps;\n    this.state = prevState;\n  }\n} // React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\n\n\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n  var prototype = Component.prototype;\n\n  if (!prototype || !prototype.isReactComponent) {\n    throw new Error('Can only polyfill class components');\n  }\n\n  if (typeof Component.getDerivedStateFromProps !== 'function' && typeof prototype.getSnapshotBeforeUpdate !== 'function') {\n    return Component;\n  } // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n  // Error if any of these lifecycles are present,\n  // Because they would work differently between older and newer (16.3+) versions of React.\n\n\n  var foundWillMountName = null;\n  var foundWillReceivePropsName = null;\n  var foundWillUpdateName = null;\n\n  if (typeof prototype.componentWillMount === 'function') {\n    foundWillMountName = 'componentWillMount';\n  } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n    foundWillMountName = 'UNSAFE_componentWillMount';\n  }\n\n  if (typeof prototype.componentWillReceiveProps === 'function') {\n    foundWillReceivePropsName = 'componentWillReceiveProps';\n  } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n    foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n  }\n\n  if (typeof prototype.componentWillUpdate === 'function') {\n    foundWillUpdateName = 'componentWillUpdate';\n  } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n    foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n  }\n\n  if (foundWillMountName !== null || foundWillReceivePropsName !== null || foundWillUpdateName !== null) {\n    var componentName = Component.displayName || Component.name;\n    var newApiName = typeof Component.getDerivedStateFromProps === 'function' ? 'getDerivedStateFromProps()' : 'getSnapshotBeforeUpdate()';\n    throw Error('Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' + componentName + ' uses ' + newApiName + ' but also contains the following legacy lifecycles:' + (foundWillMountName !== null ? '\\n  ' + foundWillMountName : '') + (foundWillReceivePropsName !== null ? '\\n  ' + foundWillReceivePropsName : '') + (foundWillUpdateName !== null ? '\\n  ' + foundWillUpdateName : '') + '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' + 'https://fb.me/react-async-component-lifecycle-hooks');\n  } // React <= 16.2 does not support static getDerivedStateFromProps.\n  // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n  // Newer versions of React will ignore these lifecycles if gDSFP exists.\n\n\n  if (typeof Component.getDerivedStateFromProps === 'function') {\n    prototype.componentWillMount = componentWillMount;\n    prototype.componentWillReceiveProps = componentWillReceiveProps;\n  } // React <= 16.2 does not support getSnapshotBeforeUpdate.\n  // As a workaround, use cWU to invoke the new lifecycle.\n  // Newer versions of React will ignore that lifecycle if gSBU exists.\n\n\n  if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n    if (typeof prototype.componentDidUpdate !== 'function') {\n      throw new Error('Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype');\n    }\n\n    prototype.componentWillUpdate = componentWillUpdate;\n    var componentDidUpdate = prototype.componentDidUpdate;\n\n    prototype.componentDidUpdate = function componentDidUpdatePolyfill(prevProps, prevState, maybeSnapshot) {\n      // 16.3+ will not execute our will-update method;\n      // It will pass a snapshot value to did-update though.\n      // Older versions will require our polyfilled will-update value.\n      // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n      // Because for <= 15.x versions this might be a \"prevContext\" object.\n      // We also can't just check \"__reactInternalSnapshot\",\n      // Because get-snapshot might return a falsy value.\n      // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n      var snapshot = this.__reactInternalSnapshotFlag ? this.__reactInternalSnapshot : maybeSnapshot;\n      componentDidUpdate.call(this, prevProps, prevState, snapshot);\n    };\n  }\n\n  return Component;\n}\n\n\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.classNamesShape = exports.timeoutsShape = void 0;\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(0));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nvar timeoutsShape =  false ? undefined : null;\nexports.timeoutsShape = timeoutsShape;\nvar classNamesShape =  false ? undefined : null;\nexports.classNamesShape = classNamesShape;\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = deprecated;\n\nvar _warning = __webpack_require__(68);\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nvar warned = {};\n\nfunction deprecated(validator, reason) {\n  return function validate(props, propName, componentName, location, propFullName) {\n    var componentNameSafe = componentName || '<<anonymous>>';\n    var propFullNameSafe = propFullName || propName;\n\n    if (props[propName] != null) {\n      var messageKey = componentName + '.' + propName;\n      (0, _warning2.default)(warned[messageKey], 'The ' + location + ' `' + propFullNameSafe + '` of ' + ('`' + componentNameSafe + '` is deprecated. ' + reason + '.'));\n      warned[messageKey] = true;\n    }\n\n    for (var _len = arguments.length, args = Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++) {\n      args[_key - 5] = arguments[_key];\n    }\n\n    return validator.apply(undefined, [props, propName, componentName, location, propFullName].concat(args));\n  };\n}\n/* eslint-disable no-underscore-dangle */\n\n\nfunction _resetWarned() {\n  warned = {};\n}\n\ndeprecated._resetWarned = _resetWarned;\n/* eslint-enable no-underscore-dangle */\n\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = function () {};\n\nif (false) {}\n\nmodule.exports = warning;\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nif (true) {\n  module.exports = __webpack_require__(70);\n} else {}\n\n/***/ }),\n/* 70 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/** @license React v16.8.6\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: !0\n});\nvar b = \"function\" === typeof Symbol && Symbol.for,\n    c = b ? Symbol.for(\"react.element\") : 60103,\n    d = b ? Symbol.for(\"react.portal\") : 60106,\n    e = b ? Symbol.for(\"react.fragment\") : 60107,\n    f = b ? Symbol.for(\"react.strict_mode\") : 60108,\n    g = b ? Symbol.for(\"react.profiler\") : 60114,\n    h = b ? Symbol.for(\"react.provider\") : 60109,\n    k = b ? Symbol.for(\"react.context\") : 60110,\n    l = b ? Symbol.for(\"react.async_mode\") : 60111,\n    m = b ? Symbol.for(\"react.concurrent_mode\") : 60111,\n    n = b ? Symbol.for(\"react.forward_ref\") : 60112,\n    p = b ? Symbol.for(\"react.suspense\") : 60113,\n    q = b ? Symbol.for(\"react.memo\") : 60115,\n    r = b ? Symbol.for(\"react.lazy\") : 60116;\n\nfunction t(a) {\n  if (\"object\" === typeof a && null !== a) {\n    var u = a.$$typeof;\n\n    switch (u) {\n      case c:\n        switch (a = a.type, a) {\n          case l:\n          case m:\n          case e:\n          case g:\n          case f:\n          case p:\n            return a;\n\n          default:\n            switch (a = a && a.$$typeof, a) {\n              case k:\n              case n:\n              case h:\n                return a;\n\n              default:\n                return u;\n            }\n\n        }\n\n      case r:\n      case q:\n      case d:\n        return u;\n    }\n  }\n}\n\nfunction v(a) {\n  return t(a) === m;\n}\n\nexports.typeOf = t;\nexports.AsyncMode = l;\nexports.ConcurrentMode = m;\nexports.ContextConsumer = k;\nexports.ContextProvider = h;\nexports.Element = c;\nexports.ForwardRef = n;\nexports.Fragment = e;\nexports.Lazy = r;\nexports.Memo = q;\nexports.Portal = d;\nexports.Profiler = g;\nexports.StrictMode = f;\nexports.Suspense = p;\n\nexports.isValidElementType = function (a) {\n  return \"string\" === typeof a || \"function\" === typeof a || a === e || a === m || a === g || a === f || a === p || \"object\" === typeof a && null !== a && (a.$$typeof === r || a.$$typeof === q || a.$$typeof === h || a.$$typeof === k || a.$$typeof === n);\n};\n\nexports.isAsyncMode = function (a) {\n  return v(a) || t(a) === l;\n};\n\nexports.isConcurrentMode = v;\n\nexports.isContextConsumer = function (a) {\n  return t(a) === k;\n};\n\nexports.isContextProvider = function (a) {\n  return t(a) === h;\n};\n\nexports.isElement = function (a) {\n  return \"object\" === typeof a && null !== a && a.$$typeof === c;\n};\n\nexports.isForwardRef = function (a) {\n  return t(a) === n;\n};\n\nexports.isFragment = function (a) {\n  return t(a) === e;\n};\n\nexports.isLazy = function (a) {\n  return t(a) === r;\n};\n\nexports.isMemo = function (a) {\n  return t(a) === q;\n};\n\nexports.isPortal = function (a) {\n  return t(a) === d;\n};\n\nexports.isProfiler = function (a) {\n  return t(a) === g;\n};\n\nexports.isStrictMode = function (a) {\n  return t(a) === f;\n};\n\nexports.isSuspense = function (a) {\n  return t(a) === p;\n};\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _react = __webpack_require__(1);\n\nfunction useCommittedRef(value) {\n  var ref = (0, _react.useRef)(value);\n  (0, _react.useEffect)(function () {\n    ref.current = value;\n  }, [value]);\n  return ref;\n}\n\nvar _default = useCommittedRef;\nexports.default = _default;\n\n/***/ }),\n/* 72 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = matches;\n\nvar _inDOM = _interopRequireDefault(__webpack_require__(10));\n\nvar _querySelectorAll = _interopRequireDefault(__webpack_require__(9));\n\nvar matchesCache;\n\nfunction matches(node, selector) {\n  if (!matchesCache && _inDOM.default) {\n    var body = document.body;\n    var nativeMatch = body.matches || body.matchesSelector || body.webkitMatchesSelector || body.mozMatchesSelector || body.msMatchesSelector;\n    matchesCache = nativeMatch ? function (node, selector) {\n      return nativeMatch.call(node, selector);\n    } : ie8MatchesSelector;\n  }\n\n  return matchesCache ? matchesCache(node, selector) : null;\n}\n\nfunction ie8MatchesSelector(node, selector) {\n  var matches = (0, _querySelectorAll.default)(node.document || node.ownerDocument, selector),\n      i = 0;\n\n  while (matches[i] && matches[i] !== node) {\n    i++;\n  }\n\n  return !!matches[i];\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 73 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(0);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _gud = __webpack_require__(74);\n\nvar _gud2 = _interopRequireDefault(_gud);\n\nvar _warning = __webpack_require__(75);\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n  if (!self) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823; // Inlined Object.is polyfill.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n\nfunction objectIs(x, y) {\n  if (x === y) {\n    return x !== 0 || 1 / x === 1 / y;\n  } else {\n    return x !== x && y !== y;\n  }\n}\n\nfunction createEventEmitter(value) {\n  var handlers = [];\n  return {\n    on: function on(handler) {\n      handlers.push(handler);\n    },\n    off: function off(handler) {\n      handlers = handlers.filter(function (h) {\n        return h !== handler;\n      });\n    },\n    get: function get() {\n      return value;\n    },\n    set: function set(newValue, changedBits) {\n      value = newValue;\n      handlers.forEach(function (handler) {\n        return handler(value, changedBits);\n      });\n    }\n  };\n}\n\nfunction onlyChild(children) {\n  return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n  var _Provider$childContex, _Consumer$contextType;\n\n  var contextProp = '__create-react-context-' + (0, _gud2.default)() + '__';\n\n  var Provider = function (_Component) {\n    _inherits(Provider, _Component);\n\n    function Provider() {\n      var _temp, _this, _ret;\n\n      _classCallCheck(this, Provider);\n\n      for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      return _ret = (_temp = (_this = _possibleConstructorReturn(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.emitter = createEventEmitter(_this.props.value), _temp), _possibleConstructorReturn(_this, _ret);\n    }\n\n    Provider.prototype.getChildContext = function getChildContext() {\n      var _ref;\n\n      return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n    };\n\n    Provider.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n      if (this.props.value !== nextProps.value) {\n        var oldValue = this.props.value;\n        var newValue = nextProps.value;\n        var changedBits = void 0;\n\n        if (objectIs(oldValue, newValue)) {\n          changedBits = 0; // No change\n        } else {\n          changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n\n          if (false) {}\n\n          changedBits |= 0;\n\n          if (changedBits !== 0) {\n            this.emitter.set(nextProps.value, changedBits);\n          }\n        }\n      }\n    };\n\n    Provider.prototype.render = function render() {\n      return this.props.children;\n    };\n\n    return Provider;\n  }(_react.Component);\n\n  Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = _propTypes2.default.object.isRequired, _Provider$childContex);\n\n  var Consumer = function (_Component2) {\n    _inherits(Consumer, _Component2);\n\n    function Consumer() {\n      var _temp2, _this2, _ret2;\n\n      _classCallCheck(this, Consumer);\n\n      for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      return _ret2 = (_temp2 = (_this2 = _possibleConstructorReturn(this, _Component2.call.apply(_Component2, [this].concat(args))), _this2), _this2.state = {\n        value: _this2.getValue()\n      }, _this2.onUpdate = function (newValue, changedBits) {\n        var observedBits = _this2.observedBits | 0;\n\n        if ((observedBits & changedBits) !== 0) {\n          _this2.setState({\n            value: _this2.getValue()\n          });\n        }\n      }, _temp2), _possibleConstructorReturn(_this2, _ret2);\n    }\n\n    Consumer.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n      var observedBits = nextProps.observedBits;\n      this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n      : observedBits;\n    };\n\n    Consumer.prototype.componentDidMount = function componentDidMount() {\n      if (this.context[contextProp]) {\n        this.context[contextProp].on(this.onUpdate);\n      }\n\n      var observedBits = this.props.observedBits;\n      this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n      : observedBits;\n    };\n\n    Consumer.prototype.componentWillUnmount = function componentWillUnmount() {\n      if (this.context[contextProp]) {\n        this.context[contextProp].off(this.onUpdate);\n      }\n    };\n\n    Consumer.prototype.getValue = function getValue() {\n      if (this.context[contextProp]) {\n        return this.context[contextProp].get();\n      } else {\n        return defaultValue;\n      }\n    };\n\n    Consumer.prototype.render = function render() {\n      return onlyChild(this.props.children)(this.state.value);\n    };\n\n    return Consumer;\n  }(_react.Component);\n\n  Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = _propTypes2.default.object, _Consumer$contextType);\n  return {\n    Provider: Provider,\n    Consumer: Consumer\n  };\n}\n\nexports.default = createReactContext;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 74 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {// @flow\n\n\nvar key = '__global_unique_id__';\n\nmodule.exports = function () {\n  return global[key] = (global[key] || 0) + 1;\n};\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(41)))\n\n/***/ }),\n/* 75 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\nvar emptyFunction = __webpack_require__(76);\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\n\nvar warning = emptyFunction;\n\nif (false) { var printWarning; }\n\nmodule.exports = warning;\n\n/***/ }),\n/* 76 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\nfunction makeEmptyFunction(arg) {\n  return function () {\n    return arg;\n  };\n}\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\n\n\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\n\nemptyFunction.thatReturnsThis = function () {\n  return this;\n};\n\nemptyFunction.thatReturnsArgument = function (arg) {\n  return arg;\n};\n\nmodule.exports = emptyFunction;\n\n/***/ }),\n/* 77 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = mapContextToProps;\n\nvar _react = _interopRequireDefault(__webpack_require__(1));\n\nvar _forwardRef = _interopRequireDefault(__webpack_require__(46));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nvar getDisplayName = function getDisplayName(Component) {\n  var name = typeof Component === 'string' ? Component : Component.name || Component.displayName;\n  return name ? \"ContextTransform(\" + name + \")\" : 'ContextTransform';\n};\n\nvar ensureConsumer = function ensureConsumer(c) {\n  return c.Consumer || c;\n};\n\nfunction $mapContextToProps(_ref, Component) {\n  var maybeArrayOfConsumers = _ref.consumers,\n      mapToProps = _ref.mapToProps,\n      displayName = _ref.displayName,\n      _ref$forwardRefAs = _ref.forwardRefAs,\n      forwardRefAs = _ref$forwardRefAs === void 0 ? 'ref' : _ref$forwardRefAs;\n  var consumers = maybeArrayOfConsumers;\n\n  if (!Array.isArray(maybeArrayOfConsumers)) {\n    consumers = [maybeArrayOfConsumers];\n  }\n\n  var SingleConsumer = ensureConsumer(consumers[0]);\n\n  function singleRender(props, ref) {\n    var _extends2;\n\n    var propsWithRef = _extends((_extends2 = {}, _extends2[forwardRefAs] = ref, _extends2), props);\n\n    return _react.default.createElement(SingleConsumer, null, function (value) {\n      return _react.default.createElement(Component, _extends({}, propsWithRef, mapToProps(value, props)));\n    });\n  }\n\n  function multiRender(props, ref) {\n    var _extends3;\n\n    var propsWithRef = _extends((_extends3 = {}, _extends3[forwardRefAs] = ref, _extends3), props);\n\n    return consumers.reduceRight(function (inner, Context) {\n      return function () {\n        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n          args[_key] = arguments[_key];\n        }\n\n        var Consumer = ensureConsumer(Context);\n        return _react.default.createElement(Consumer, null, function (value) {\n          return inner.apply(void 0, args.concat([value]));\n        });\n      };\n    }, function () {\n      for (var _len2 = arguments.length, contexts = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        contexts[_key2] = arguments[_key2];\n      }\n\n      return _react.default.createElement(Component, _extends({}, propsWithRef, mapToProps.apply(void 0, contexts.concat([props]))));\n    })();\n  }\n\n  var contextTransform = consumers.length === 1 ? singleRender : multiRender;\n  return (0, _forwardRef.default)(contextTransform, {\n    displayName: displayName || getDisplayName(Component)\n  });\n}\n\nfunction mapContextToProps(maybeOpts, mapToProps, Component) {\n  if (arguments.length === 2) return $mapContextToProps(maybeOpts, mapToProps);\n  return $mapContextToProps({\n    consumers: maybeOpts,\n    mapToProps: mapToProps\n  }, Component);\n}\n\n/***/ }),\n/* 78 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = filterEvents;\n\nvar _contains = _interopRequireDefault(__webpack_require__(22));\n\nvar _querySelectorAll = _interopRequireDefault(__webpack_require__(9));\n\nfunction filterEvents(selector, handler) {\n  return function filterHandler(e) {\n    var top = e.currentTarget,\n        target = e.target,\n        matches = (0, _querySelectorAll.default)(top, selector);\n    if (matches.some(function (match) {\n      return (0, _contains.default)(match, target);\n    })) handler.call(this, e);\n  };\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 79 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = activeElement;\n\nvar _ownerDocument = _interopRequireDefault(__webpack_require__(16));\n\nfunction activeElement(doc) {\n  if (doc === void 0) {\n    doc = (0, _ownerDocument.default)();\n  }\n\n  try {\n    return doc.activeElement;\n  } catch (e) {\n    /* ie throws if no active element */\n  }\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 80 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _addClass = _interopRequireDefault(__webpack_require__(81));\n\nexports.addClass = _addClass.default;\n\nvar _removeClass = _interopRequireDefault(__webpack_require__(82));\n\nexports.removeClass = _removeClass.default;\n\nvar _hasClass = _interopRequireDefault(__webpack_require__(47));\n\nexports.hasClass = _hasClass.default;\nvar _default = {\n  addClass: _addClass.default,\n  removeClass: _removeClass.default,\n  hasClass: _hasClass.default\n};\nexports.default = _default;\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = addClass;\n\nvar _hasClass = _interopRequireDefault(__webpack_require__(47));\n\nfunction addClass(element, className) {\n  if (element.classList) element.classList.add(className);else if (!(0, _hasClass.default)(element, className)) if (typeof element.className === 'string') element.className = element.className + ' ' + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + ' ' + className);\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction replaceClassName(origClass, classToRemove) {\n  return origClass.replace(new RegExp('(^|\\\\s)' + classToRemove + '(?:\\\\s|$)', 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n\nmodule.exports = function removeClass(element, className) {\n  if (element.classList) element.classList.remove(className);else if (typeof element.className === 'string') element.className = replaceClassName(element.className, className);else element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n};\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = isOverflowing;\n\nvar _isWindow = _interopRequireDefault(__webpack_require__(84));\n\nvar _ownerDocument = _interopRequireDefault(__webpack_require__(16));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction isBody(node) {\n  return node && node.tagName.toLowerCase() === 'body';\n}\n\nfunction bodyIsOverflowing(node) {\n  var doc = (0, _ownerDocument.default)(node);\n  var win = (0, _isWindow.default)(doc);\n  return doc.body.clientWidth < win.innerWidth;\n}\n\nfunction isOverflowing(container) {\n  var win = (0, _isWindow.default)(container);\n  return win || isBody(container) ? bodyIsOverflowing(container) : container.scrollHeight > container.clientHeight;\n}\n\nmodule.exports = exports.default;\n\n/***/ }),\n/* 84 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = getWindow;\n\nfunction getWindow(node) {\n  return node === node.window ? node : node.nodeType === 9 ? node.defaultView || node.parentWindow : false;\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.ariaHidden = ariaHidden;\nexports.hideSiblings = hideSiblings;\nexports.showSiblings = showSiblings;\nvar BLACKLIST = ['template', 'script', 'style'];\n\nvar isHidable = function isHidable(_ref) {\n  var nodeType = _ref.nodeType,\n      tagName = _ref.tagName;\n  return nodeType === 1 && BLACKLIST.indexOf(tagName.toLowerCase()) === -1;\n};\n\nvar siblings = function siblings(container, exclude, cb) {\n  exclude = [].concat(exclude);\n  [].forEach.call(container.children, function (node) {\n    if (exclude.indexOf(node) === -1 && isHidable(node)) {\n      cb(node);\n    }\n  });\n};\n\nfunction ariaHidden(show, node) {\n  if (!node) return;\n\n  if (show) {\n    node.setAttribute('aria-hidden', 'true');\n  } else {\n    node.removeAttribute('aria-hidden');\n  }\n}\n\nfunction hideSiblings(container, _ref2) {\n  var root = _ref2.root,\n      backdrop = _ref2.backdrop;\n  siblings(container, [root, backdrop], function (node) {\n    return ariaHidden(true, node);\n  });\n}\n\nfunction showSiblings(container, _ref3) {\n  var root = _ref3.root,\n      backdrop = _ref3.backdrop;\n  siblings(container, [root, backdrop], function (node) {\n    return ariaHidden(false, node);\n  });\n}\n\n/***/ }),\n/* 86 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/extends.js\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n// EXTERNAL MODULE: ./node_modules/classnames/index.js\nvar classnames = __webpack_require__(2);\nvar classnames_default = /*#__PURE__*/__webpack_require__.n(classnames);\n\n// EXTERNAL MODULE: external {\"root\":\"React\",\"commonjs2\":\"react\",\"commonjs\":\"react\",\"amd\":\"react\"}\nvar external_root_React_commonjs2_react_commonjs_react_amd_react_ = __webpack_require__(1);\nvar external_root_React_commonjs2_react_commonjs_react_amd_react_default = /*#__PURE__*/__webpack_require__.n(external_root_React_commonjs2_react_commonjs_react_amd_react_);\n\n// EXTERNAL MODULE: ./node_modules/prop-types/index.js\nvar prop_types = __webpack_require__(0);\nvar prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);\n\n// EXTERNAL MODULE: ./node_modules/uncontrollable/hook.js\nvar hook = __webpack_require__(15);\nvar hook_default = /*#__PURE__*/__webpack_require__.n(hook);\n\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n// EXTERNAL MODULE: ./node_modules/@restart/context/forwardRef.js\nvar forwardRef = __webpack_require__(32);\nvar forwardRef_default = /*#__PURE__*/__webpack_require__.n(forwardRef);\n\n// CONCATENATED MODULE: ./src/ThemeProvider.js\n\n\nvar _jsxFileName = \"/Users/jason/src/react-bootstrap/src/ThemeProvider.js\";\n\n\n\nvar ThemeContext = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createContext(new Map());\nvar Consumer = ThemeContext.Consumer,\n    Provider = ThemeContext.Provider;\n\nvar ThemeProvider_ThemeProvider =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(ThemeProvider, _React$Component);\n\n  function ThemeProvider() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n    _this.prefixes = new Map();\n    Object.keys(_this.props.prefixes).forEach(function (key) {\n      _this.prefixes.set(key, _this.props.prefixes[key]);\n    });\n    return _this;\n  }\n\n  var _proto = ThemeProvider.prototype;\n\n  _proto.render = function render() {\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Provider, {\n      value: this.prefixes,\n      __source: {\n        fileName: _jsxFileName,\n        lineNumber: 22\n      },\n      __self: this\n    }, this.props.children);\n  };\n\n  return ThemeProvider;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nThemeProvider_ThemeProvider.propTypes = {\n  prefixes: prop_types_default.a.object.isRequired\n};\nfunction useBootstrapPrefix(prefix, defaultPrefix) {\n  var prefixes = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(ThemeContext);\n  return prefix || prefixes.get(defaultPrefix) || defaultPrefix;\n}\n\nfunction createBootstrapComponent(Component, opts) {\n  if (typeof opts === 'string') opts = {\n    prefix: opts\n  };\n  var isClassy = Component.prototype && Component.prototype.isReactComponent; // If it's a functional component make sure we don't break it with a ref\n\n  var _opts = opts,\n      prefix = _opts.prefix,\n      _opts$forwardRefAs = _opts.forwardRefAs,\n      forwardRefAs = _opts$forwardRefAs === void 0 ? isClassy ? 'ref' : 'innerRef' : _opts$forwardRefAs;\n  return forwardRef_default()(function (_ref, ref) {\n    var props = _extends({}, _ref);\n\n    props[forwardRefAs] = ref;\n    var prefixes = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(ThemeContext);\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n      // eslint-disable-next-line react/prop-types\n      bsPrefix: props.bsPrefix || prefixes.get(prefix) || prefix,\n      __source: {\n        fileName: _jsxFileName,\n        lineNumber: 42\n      },\n      __self: this\n    }));\n  }, {\n    displayName: \"Bootstrap(\" + (Component.displayName || Component.name) + \")\"\n  });\n}\n\n\n/* harmony default export */ var src_ThemeProvider = (ThemeProvider_ThemeProvider);\n// CONCATENATED MODULE: ./src/SelectableContext.js\n\nvar SelectableContext = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createContext();\nvar makeEventKey = function makeEventKey(eventKey, href) {\n  if (eventKey != null) return String(eventKey);\n  return href || null;\n};\n/* harmony default export */ var src_SelectableContext = (SelectableContext);\n// CONCATENATED MODULE: ./src/AccordionToggle.js\n\n\nvar AccordionToggle_jsxFileName = \"/Users/jason/src/react-bootstrap/src/AccordionToggle.js\";\n\n\n\nvar propTypes = {\n  /** Set a custom element for this component */\n  as: prop_types_default.a.elementType,\n\n  /**\n   * A key that corresponds to the collapse component that gets triggered\n   * when this has been clicked.\n   */\n  eventKey: prop_types_default.a.string.isRequired,\n\n  /** A callback function for when this component is clicked */\n  onClick: prop_types_default.a.func,\n\n  /** Children prop should only contain a single child, and  is enforced as such */\n  children: prop_types_default.a.element\n};\nvar AccordionToggle_defaultProps = {\n  as: 'button'\n};\nvar AccordionToggle = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var Component = _ref.as,\n      children = _ref.children,\n      eventKey = _ref.eventKey,\n      _onClick = _ref.onClick,\n      props = _objectWithoutPropertiesLoose(_ref, [\"as\", \"children\", \"eventKey\", \"onClick\"]);\n\n  var onSelect = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(src_SelectableContext);\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({\n    ref: ref,\n    onClick: function onClick(e) {\n      onSelect(eventKey, e);\n      if (_onClick) _onClick(e);\n    }\n  }, props, {\n    __source: {\n      fileName: AccordionToggle_jsxFileName,\n      lineNumber: 31\n    },\n    __self: this\n  }), children);\n});\nAccordionToggle.propTypes = propTypes;\nAccordionToggle.defaultProps = AccordionToggle_defaultProps;\n/* harmony default export */ var src_AccordionToggle = (AccordionToggle);\n// EXTERNAL MODULE: ./node_modules/dom-helpers/style/index.js\nvar dom_helpers_style = __webpack_require__(11);\nvar style_default = /*#__PURE__*/__webpack_require__.n(dom_helpers_style);\n\n// EXTERNAL MODULE: ./node_modules/dom-helpers/transition/end.js\nvar end = __webpack_require__(23);\nvar end_default = /*#__PURE__*/__webpack_require__.n(end);\n\n// EXTERNAL MODULE: ./node_modules/react-transition-group/Transition.js\nvar react_transition_group_Transition = __webpack_require__(12);\nvar Transition_default = /*#__PURE__*/__webpack_require__.n(react_transition_group_Transition);\n\n// CONCATENATED MODULE: ./src/utils/triggerBrowserReflow.js\n// reading a dimension prop will cause the browser to recalculate,\n// which will let our animations work\nfunction triggerBrowserReflow(node) {\n  node.offsetHeight; // eslint-disable-line no-unused-expressions\n}\n// CONCATENATED MODULE: ./src/utils/createChainedFunction.js\n/**\n * Safe chained function\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n *\n * @param {function} functions to chain\n * @returns {function|null}\n */\nfunction createChainedFunction() {\n  for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n    funcs[_key] = arguments[_key];\n  }\n\n  return funcs.filter(function (f) {\n    return f != null;\n  }).reduce(function (acc, f) {\n    if (typeof f !== 'function') {\n      throw new Error('Invalid Argument Type, must only provide functions, undefined, or null.');\n    }\n\n    if (acc === null) return f;\n    return function chainedFunction() {\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      acc.apply(this, args);\n      f.apply(this, args);\n    };\n  }, null);\n}\n\n/* harmony default export */ var utils_createChainedFunction = (createChainedFunction);\n// CONCATENATED MODULE: ./src/Collapse.js\n\n\n\n\nvar _collapseStyles,\n    Collapse_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Collapse.js\";\n\n\n\n\n\n\n\n\n\nvar MARGINS = {\n  height: ['marginTop', 'marginBottom'],\n  width: ['marginLeft', 'marginRight']\n};\n\nfunction getDimensionValue(dimension, elem) {\n  var offset = \"offset\" + dimension[0].toUpperCase() + dimension.slice(1);\n  var value = elem[offset];\n  var margins = MARGINS[dimension];\n  return value + parseInt(style_default()(elem, margins[0]), 10) + parseInt(style_default()(elem, margins[1]), 10);\n}\n\nvar collapseStyles = (_collapseStyles = {}, _collapseStyles[react_transition_group_Transition[\"EXITED\"]] = 'collapse', _collapseStyles[react_transition_group_Transition[\"EXITING\"]] = 'collapsing', _collapseStyles[react_transition_group_Transition[\"ENTERING\"]] = 'collapsing', _collapseStyles[react_transition_group_Transition[\"ENTERED\"]] = 'collapse show', _collapseStyles);\nvar Collapse_propTypes = {\n  /**\n   * Show the component; triggers the expand or collapse animation\n   */\n  in: prop_types_default.a.bool,\n\n  /**\n   * Wait until the first \"enter\" transition to mount the component (add it to the DOM)\n   */\n  mountOnEnter: prop_types_default.a.bool,\n\n  /**\n   * Unmount the component (remove it from the DOM) when it is collapsed\n   */\n  unmountOnExit: prop_types_default.a.bool,\n\n  /**\n   * Run the expand animation when the component mounts, if it is initially\n   * shown\n   */\n  appear: prop_types_default.a.bool,\n\n  /**\n   * Duration of the collapse animation in milliseconds, to ensure that\n   * finishing callbacks are fired even if the original browser transition end\n   * events are canceled\n   */\n  timeout: prop_types_default.a.number,\n\n  /**\n   * Callback fired before the component expands\n   */\n  onEnter: prop_types_default.a.func,\n\n  /**\n   * Callback fired after the component starts to expand\n   */\n  onEntering: prop_types_default.a.func,\n\n  /**\n   * Callback fired after the component has expanded\n   */\n  onEntered: prop_types_default.a.func,\n\n  /**\n   * Callback fired before the component collapses\n   */\n  onExit: prop_types_default.a.func,\n\n  /**\n   * Callback fired after the component starts to collapse\n   */\n  onExiting: prop_types_default.a.func,\n\n  /**\n   * Callback fired after the component has collapsed\n   */\n  onExited: prop_types_default.a.func,\n\n  /**\n   * The dimension used when collapsing, or a function that returns the\n   * dimension\n   *\n   * _Note: Bootstrap only partially supports 'width'!\n   * You will need to supply your own CSS animation for the `.width` CSS class._\n   */\n  dimension: prop_types_default.a.oneOfType([prop_types_default.a.oneOf(['height', 'width']), prop_types_default.a.func]),\n\n  /**\n   * Function that returns the height or width of the animating DOM node\n   *\n   * Allows for providing some custom logic for how much the Collapse component\n   * should animate in its specified dimension. Called with the current\n   * dimension prop value and the DOM node.\n   *\n   * @default element.offsetWidth | element.offsetHeight\n   */\n  getDimensionValue: prop_types_default.a.func,\n\n  /**\n   * ARIA role of collapsible element\n   */\n  role: prop_types_default.a.string\n};\nvar Collapse_defaultProps = {\n  in: false,\n  timeout: 300,\n  mountOnEnter: false,\n  unmountOnExit: false,\n  appear: false,\n  dimension: 'height',\n  getDimensionValue: getDimensionValue\n};\n\nvar Collapse_Collapse =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Collapse, _React$Component);\n\n  function Collapse() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n    _this.handleEnter = function (elem) {\n      elem.style[_this.getDimension()] = '0';\n    };\n\n    _this.handleEntering = function (elem) {\n      var dimension = _this.getDimension();\n\n      elem.style[dimension] = _this._getScrollDimensionValue(elem, dimension);\n    };\n\n    _this.handleEntered = function (elem) {\n      elem.style[_this.getDimension()] = null;\n    };\n\n    _this.handleExit = function (elem) {\n      var dimension = _this.getDimension();\n\n      elem.style[dimension] = _this.props.getDimensionValue(dimension, elem) + \"px\";\n      triggerBrowserReflow(elem);\n    };\n\n    _this.handleExiting = function (elem) {\n      elem.style[_this.getDimension()] = '0';\n    };\n\n    return _this;\n  }\n\n  var _proto = Collapse.prototype;\n\n  _proto.getDimension = function getDimension() {\n    return typeof this.props.dimension === 'function' ? this.props.dimension() : this.props.dimension;\n  }\n  /* -- Expanding -- */\n  ;\n\n  // for testing\n  _proto._getScrollDimensionValue = function _getScrollDimensionValue(elem, dimension) {\n    var scroll = \"scroll\" + dimension[0].toUpperCase() + dimension.slice(1);\n    return elem[scroll] + \"px\";\n  };\n\n  _proto.render = function render() {\n    var _this2 = this;\n\n    var _this$props = this.props,\n        onEnter = _this$props.onEnter,\n        onEntering = _this$props.onEntering,\n        onEntered = _this$props.onEntered,\n        onExit = _this$props.onExit,\n        onExiting = _this$props.onExiting,\n        className = _this$props.className,\n        children = _this$props.children,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"className\", \"children\"]);\n\n    delete props.dimension;\n    delete props.getDimensionValue;\n    var handleEnter = utils_createChainedFunction(this.handleEnter, onEnter);\n    var handleEntering = utils_createChainedFunction(this.handleEntering, onEntering);\n    var handleEntered = utils_createChainedFunction(this.handleEntered, onEntered);\n    var handleExit = utils_createChainedFunction(this.handleExit, onExit);\n    var handleExiting = utils_createChainedFunction(this.handleExiting, onExiting);\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Transition_default.a, _extends({\n      addEndListener: end_default.a\n    }, props, {\n      \"aria-expanded\": props.role ? props.in : null,\n      onEnter: handleEnter,\n      onEntering: handleEntering,\n      onEntered: handleEntered,\n      onExit: handleExit,\n      onExiting: handleExiting,\n      __source: {\n        fileName: Collapse_jsxFileName,\n        lineNumber: 200\n      },\n      __self: this\n    }), function (state, innerProps) {\n      return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.cloneElement(children, _extends({}, innerProps, {\n        className: classnames_default()(className, children.props.className, collapseStyles[state], _this2.getDimension() === 'width' && 'width')\n      }));\n    });\n  };\n\n  return Collapse;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nCollapse_Collapse.propTypes = Collapse_propTypes;\nCollapse_Collapse.defaultProps = Collapse_defaultProps;\n/* harmony default export */ var src_Collapse = (Collapse_Collapse);\n// CONCATENATED MODULE: ./src/AccordionContext.js\n\n/* harmony default export */ var AccordionContext = (external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createContext(null));\n// CONCATENATED MODULE: ./src/AccordionCollapse.js\n\n\nvar AccordionCollapse_jsxFileName = \"/Users/jason/src/react-bootstrap/src/AccordionCollapse.js\";\n\n\n\n\nvar AccordionCollapse_propTypes = {\n  /**\n   * A key that corresponds to the toggler that triggers this collapse's expand or collapse.\n   */\n  eventKey: prop_types_default.a.string.isRequired,\n  children: prop_types_default.a.element.isRequired\n};\nvar AccordionCollapse = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var children = _ref.children,\n      eventKey = _ref.eventKey,\n      props = _objectWithoutPropertiesLoose(_ref, [\"children\", \"eventKey\"]);\n\n  var contextEventKey = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(AccordionContext);\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Collapse, _extends({\n    ref: ref,\n    in: contextEventKey === eventKey\n  }, props, {\n    __source: {\n      fileName: AccordionCollapse_jsxFileName,\n      lineNumber: 21\n    },\n    __self: this\n  }), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", {\n    __source: {\n      fileName: AccordionCollapse_jsxFileName,\n      lineNumber: 22\n    },\n    __self: this\n  }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Children.only(children)));\n});\nAccordionCollapse.propTypes = AccordionCollapse_propTypes;\n/* harmony default export */ var src_AccordionCollapse = (AccordionCollapse);\n// CONCATENATED MODULE: ./src/Accordion.js\n\n\nvar Accordion_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Accordion.js\";\n\n\n\n\n\n\n\n\n\nvar Accordion_propTypes = {\n  /** Set a custom element for this component */\n  as: prop_types_default.a.elementType,\n\n  /** @default 'accordion' */\n  bsPrefix: prop_types_default.a.string,\n\n  /** The current active key that corresponds to the currently expanded card */\n  activeKey: prop_types_default.a.string,\n\n  /** The default active key that is expanded on start */\n  defaultActiveKey: prop_types_default.a.string\n};\nvar Accordion_defaultProps = {\n  as: 'div'\n};\nvar Accordion = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (props, ref) {\n  var _useUncontrolled = hook_default()(props, {\n    activeKey: 'onSelect'\n  }),\n      Component = _useUncontrolled.as,\n      activeKey = _useUncontrolled.activeKey,\n      bsPrefix = _useUncontrolled.bsPrefix,\n      children = _useUncontrolled.children,\n      className = _useUncontrolled.className,\n      onSelect = _useUncontrolled.onSelect,\n      controlledProps = _objectWithoutPropertiesLoose(_useUncontrolled, [\"as\", \"activeKey\", \"bsPrefix\", \"children\", \"className\", \"onSelect\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'accordion');\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(AccordionContext.Provider, {\n    value: activeKey,\n    __source: {\n      fileName: Accordion_jsxFileName,\n      lineNumber: 45\n    },\n    __self: this\n  }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_SelectableContext.Provider, {\n    value: onSelect,\n    __source: {\n      fileName: Accordion_jsxFileName,\n      lineNumber: 46\n    },\n    __self: this\n  }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({\n    ref: ref\n  }, controlledProps, {\n    className: classnames_default()(className, bsPrefix),\n    __source: {\n      fileName: Accordion_jsxFileName,\n      lineNumber: 47\n    },\n    __self: this\n  }), children)));\n});\nAccordion.propTypes = Accordion_propTypes;\nAccordion.defaultProps = Accordion_defaultProps;\nAccordion.Toggle = src_AccordionToggle;\nAccordion.Collapse = src_AccordionCollapse;\n/* harmony default export */ var src_Accordion = (Accordion);\n// EXTERNAL MODULE: ./node_modules/prop-types-extra/lib/index.js\nvar lib = __webpack_require__(19);\n\n// EXTERNAL MODULE: ./node_modules/@restart/hooks/useEventCallback.js\nvar useEventCallback = __webpack_require__(8);\nvar useEventCallback_default = /*#__PURE__*/__webpack_require__.n(useEventCallback);\n\n// EXTERNAL MODULE: ./node_modules/dom-helpers/util/camelize.js\nvar camelize = __webpack_require__(33);\nvar camelize_default = /*#__PURE__*/__webpack_require__.n(camelize);\n\n// CONCATENATED MODULE: ./src/utils/createWithBsPrefix.js\n\n\nvar createWithBsPrefix_jsxFileName = \"/Users/jason/src/react-bootstrap/src/utils/createWithBsPrefix.js\";\n\n\n\n\n\nvar createWithBsPrefix_pascalCase = function pascalCase(str) {\n  return str[0].toUpperCase() + camelize_default()(str).slice(1);\n};\n\nfunction createWithBsPrefix(prefix, _temp) {\n  var _ref = _temp === void 0 ? {} : _temp,\n      _ref$displayName = _ref.displayName,\n      displayName = _ref$displayName === void 0 ? createWithBsPrefix_pascalCase(prefix) : _ref$displayName,\n      _ref$Component = _ref.Component,\n      Component = _ref$Component === void 0 ? 'div' : _ref$Component,\n      defaultProps = _ref.defaultProps;\n\n  var BsComponent = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef( // eslint-disable-next-line react/prop-types\n  function (_ref2, ref) {\n    var className = _ref2.className,\n        bsPrefix = _ref2.bsPrefix,\n        _ref2$as = _ref2.as,\n        Tag = _ref2$as === void 0 ? Component : _ref2$as,\n        props = _objectWithoutPropertiesLoose(_ref2, [\"className\", \"bsPrefix\", \"as\"]);\n\n    var resolvedPrefix = useBootstrapPrefix(bsPrefix, prefix);\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Tag, _extends({\n      ref: ref,\n      className: classnames_default()(className, resolvedPrefix)\n    }, props, {\n      __source: {\n        fileName: createWithBsPrefix_jsxFileName,\n        lineNumber: 18\n      },\n      __self: this\n    }));\n  });\n  BsComponent.defaultProps = defaultProps;\n  BsComponent.displayName = displayName;\n  return BsComponent;\n}\n// CONCATENATED MODULE: ./src/utils/divWithClassName.js\n\nvar divWithClassName_jsxFileName = \"/Users/jason/src/react-bootstrap/src/utils/divWithClassName.js\";\n\n\n/* harmony default export */ var divWithClassName = (function (className) {\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (p, ref) {\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", _extends({}, p, {\n      ref: ref,\n      className: classnames_default()(p.className, className),\n      __source: {\n        fileName: divWithClassName_jsxFileName,\n        lineNumber: 6\n      },\n      __self: this\n    }));\n  });\n});\n// CONCATENATED MODULE: ./src/Fade.js\n\n\n\n\nvar _fadeStyles,\n    Fade_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Fade.js\";\n\n\n\n\n\n\n\nvar Fade_propTypes = {\n  /**\n   * Show the component; triggers the fade in or fade out animation\n   */\n  in: prop_types_default.a.bool,\n\n  /**\n   * Wait until the first \"enter\" transition to mount the component (add it to the DOM)\n   */\n  mountOnEnter: prop_types_default.a.bool,\n\n  /**\n   * Unmount the component (remove it from the DOM) when it is faded out\n   */\n  unmountOnExit: prop_types_default.a.bool,\n\n  /**\n   * Run the fade in animation when the component mounts, if it is initially\n   * shown\n   */\n  appear: prop_types_default.a.bool,\n\n  /**\n   * Duration of the fade animation in milliseconds, to ensure that finishing\n   * callbacks are fired even if the original browser transition end events are\n   * canceled\n   */\n  timeout: prop_types_default.a.number,\n\n  /**\n   * Callback fired before the component fades in\n   */\n  onEnter: prop_types_default.a.func,\n\n  /**\n   * Callback fired after the component starts to fade in\n   */\n  onEntering: prop_types_default.a.func,\n\n  /**\n   * Callback fired after the has component faded in\n   */\n  onEntered: prop_types_default.a.func,\n\n  /**\n   * Callback fired before the component fades out\n   */\n  onExit: prop_types_default.a.func,\n\n  /**\n   * Callback fired after the component starts to fade out\n   */\n  onExiting: prop_types_default.a.func,\n\n  /**\n   * Callback fired after the component has faded out\n   */\n  onExited: prop_types_default.a.func\n};\nvar Fade_defaultProps = {\n  in: false,\n  timeout: 300,\n  mountOnEnter: false,\n  unmountOnExit: false,\n  appear: false\n};\nvar fadeStyles = (_fadeStyles = {}, _fadeStyles[react_transition_group_Transition[\"ENTERING\"]] = 'show', _fadeStyles[react_transition_group_Transition[\"ENTERED\"]] = 'show', _fadeStyles);\n\nvar Fade_Fade =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Fade, _React$Component);\n\n  function Fade() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n    _this.handleEnter = function (node) {\n      triggerBrowserReflow(node);\n      if (_this.props.onEnter) _this.props.onEnter(node);\n    };\n\n    return _this;\n  }\n\n  var _proto = Fade.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        className = _this$props.className,\n        children = _this$props.children,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"className\", \"children\"]);\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Transition_default.a, _extends({\n      addEndListener: end_default.a\n    }, props, {\n      onEnter: this.handleEnter,\n      __source: {\n        fileName: Fade_jsxFileName,\n        lineNumber: 89\n      },\n      __self: this\n    }), function (status, innerProps) {\n      return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.cloneElement(children, _extends({}, innerProps, {\n        className: classnames_default()('fade', className, children.props.className, fadeStyles[status])\n      }));\n    });\n  };\n\n  return Fade;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nFade_Fade.propTypes = Fade_propTypes;\nFade_Fade.defaultProps = Fade_defaultProps;\n/* harmony default export */ var src_Fade = (Fade_Fade);\n// CONCATENATED MODULE: ./src/CloseButton.js\nvar CloseButton_jsxFileName = \"/Users/jason/src/react-bootstrap/src/CloseButton.js\";\n\n\nvar CloseButton_propTypes = {\n  label: prop_types_default.a.string.isRequired,\n  onClick: prop_types_default.a.func\n};\nvar CloseButton_defaultProps = {\n  label: 'Close'\n};\nvar CloseButton = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var label = _ref.label,\n      onClick = _ref.onClick;\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"button\", {\n    ref: ref,\n    type: \"button\",\n    className: \"close\",\n    onClick: onClick,\n    __source: {\n      fileName: CloseButton_jsxFileName,\n      lineNumber: 14\n    },\n    __self: this\n  }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"span\", {\n    \"aria-hidden\": \"true\",\n    __source: {\n      fileName: CloseButton_jsxFileName,\n      lineNumber: 15\n    },\n    __self: this\n  }, \"\\xD7\"), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"span\", {\n    className: \"sr-only\",\n    __source: {\n      fileName: CloseButton_jsxFileName,\n      lineNumber: 16\n    },\n    __self: this\n  }, label));\n});\nCloseButton.displayName = 'CloseButton';\nCloseButton.propTypes = CloseButton_propTypes;\nCloseButton.defaultProps = CloseButton_defaultProps;\n/* harmony default export */ var src_CloseButton = (CloseButton);\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n// CONCATENATED MODULE: ./src/SafeAnchor.js\n\n\n\n\nvar SafeAnchor_jsxFileName = \"/Users/jason/src/react-bootstrap/src/SafeAnchor.js\";\n\n\n\nvar SafeAnchor_propTypes = {\n  href: prop_types_default.a.string,\n  onClick: prop_types_default.a.func,\n  onKeyDown: prop_types_default.a.func,\n  disabled: prop_types_default.a.bool,\n  role: prop_types_default.a.string,\n  tabIndex: prop_types_default.a.oneOfType([prop_types_default.a.number, prop_types_default.a.string]),\n\n  /**\n   * this is sort of silly but needed for Button\n   */\n  as: prop_types_default.a.elementType,\n\n  /** @private */\n  innerRef: prop_types_default.a.any\n};\nvar SafeAnchor_defaultProps = {\n  as: 'a'\n};\n\nfunction isTrivialHref(href) {\n  return !href || href.trim() === '#';\n}\n/**\n * There are situations due to browser quirks or Bootstrap CSS where\n * an anchor tag is needed, when semantically a button tag is the\n * better choice. SafeAnchor ensures that when an anchor is used like a\n * button its accessible. It also emulates input `disabled` behavior for\n * links, which is usually desirable for Buttons, NavItems, DropdownItems, etc.\n */\n\n\nvar SafeAnchor_SafeAnchor =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(SafeAnchor, _React$Component);\n\n  function SafeAnchor(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n    _this.handleClick = _this.handleClick.bind(_assertThisInitialized(_this));\n    _this.handleKeyDown = _this.handleKeyDown.bind(_assertThisInitialized(_this));\n    return _this;\n  }\n\n  var _proto = SafeAnchor.prototype;\n\n  _proto.handleClick = function handleClick(event) {\n    var _this$props = this.props,\n        disabled = _this$props.disabled,\n        href = _this$props.href,\n        onClick = _this$props.onClick;\n\n    if (disabled || isTrivialHref(href)) {\n      event.preventDefault();\n    }\n\n    if (disabled) {\n      event.stopPropagation();\n      return;\n    }\n\n    if (onClick) {\n      onClick(event);\n    }\n  };\n\n  _proto.handleKeyDown = function handleKeyDown(event) {\n    if (event.key === ' ') {\n      event.preventDefault();\n      this.handleClick(event);\n    }\n  };\n\n  _proto.render = function render() {\n    var _this$props2 = this.props,\n        Component = _this$props2.as,\n        disabled = _this$props2.disabled,\n        onKeyDown = _this$props2.onKeyDown,\n        innerRef = _this$props2.innerRef,\n        props = _objectWithoutPropertiesLoose(_this$props2, [\"as\", \"disabled\", \"onKeyDown\", \"innerRef\"]);\n\n    if (isTrivialHref(props.href)) {\n      props.role = props.role || 'button'; // we want to make sure there is a href attribute on the node\n      // otherwise, the cursor incorrectly styled (except with role='button')\n\n      props.href = props.href || '#';\n    }\n\n    if (disabled) {\n      props.tabIndex = -1;\n      props['aria-disabled'] = true;\n    }\n\n    if (innerRef) props.ref = innerRef;\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n      onClick: this.handleClick,\n      onKeyDown: utils_createChainedFunction(this.handleKeyDown, onKeyDown),\n      __source: {\n        fileName: SafeAnchor_jsxFileName,\n        lineNumber: 92\n      },\n      __self: this\n    }));\n  };\n\n  return SafeAnchor;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nSafeAnchor_SafeAnchor.propTypes = SafeAnchor_propTypes;\nSafeAnchor_SafeAnchor.defaultProps = SafeAnchor_defaultProps;\n/* harmony default export */ var src_SafeAnchor = (SafeAnchor_SafeAnchor);\n// CONCATENATED MODULE: ./src/Alert.js\n\n\nvar Alert_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Alert.js\";\n\n\n\n\n\n\n\n\n\n\n\n\nvar Alert_propTypes = {\n  /**\n   * @default 'alert'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * The Alert visual variant\n   *\n   * @type {'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'dark' | 'light'}\n   */\n  variant: prop_types_default.a.string,\n\n  /**\n   * Renders a properly aligned dismiss button, as well as\n   * adding extra horizontal padding to the Alert.\n   */\n  dismissible: prop_types_default.a.bool,\n\n  /**\n   * Controls the visual state of the Alert.\n   *\n   * @controllable onClose\n   */\n  show: prop_types_default.a.bool,\n\n  /**\n   * Callback fired when alert is closed.\n   *\n   * @controllable show\n   */\n  onClose: prop_types_default.a.func,\n\n  /**\n   * Sets the text for alert close button.\n   */\n  closeLabel: prop_types_default.a.string,\n\n  /** A `react-transition-group` Transition component used to animate the Alert on dismissal. */\n  transition: lib[\"elementType\"]\n};\nvar Alert_defaultProps = {\n  show: true,\n  transition: src_Fade,\n  closeLabel: 'Close alert'\n};\nvar controllables = {\n  show: 'onClose'\n};\nvar Alert = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (uncontrolledProps, ref) {\n  var _useControllable = hook_default()(uncontrolledProps, controllables),\n      bsPrefix = _useControllable.bsPrefix,\n      show = _useControllable.show,\n      closeLabel = _useControllable.closeLabel,\n      className = _useControllable.className,\n      children = _useControllable.children,\n      variant = _useControllable.variant,\n      onClose = _useControllable.onClose,\n      dismissible = _useControllable.dismissible,\n      Transition = _useControllable.transition,\n      props = _objectWithoutPropertiesLoose(_useControllable, [\"bsPrefix\", \"show\", \"closeLabel\", \"className\", \"children\", \"variant\", \"onClose\", \"dismissible\", \"transition\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'alert');\n  var handleClose = useEventCallback_default()(function (e) {\n    onClose(false, e);\n  });\n  var alert = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", _extends({\n    role: \"alert\"\n  }, Transition ? props : undefined, {\n    className: classnames_default()(className, prefix, variant && prefix + \"-\" + variant, dismissible && prefix + \"-dismissible\"),\n    __source: {\n      fileName: Alert_jsxFileName,\n      lineNumber: 87\n    },\n    __self: this\n  }), dismissible && external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_CloseButton, {\n    onClick: handleClose,\n    label: closeLabel,\n    __source: {\n      fileName: Alert_jsxFileName,\n      lineNumber: 97\n    },\n    __self: this\n  }), children);\n  if (!Transition) return show ? alert : null;\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Transition, _extends({\n    unmountOnExit: true,\n    ref: ref\n  }, props, {\n    in: show,\n    __source: {\n      fileName: Alert_jsxFileName,\n      lineNumber: 105\n    },\n    __self: this\n  }), alert);\n});\nvar DivStyledAsH4 = divWithClassName('h4');\nDivStyledAsH4.displayName = 'DivStyledAsH4';\nAlert.displayName = 'Alert';\nAlert.propTypes = Alert_propTypes;\nAlert.defaultProps = Alert_defaultProps;\nAlert.Link = createWithBsPrefix('alert-link', {\n  Component: src_SafeAnchor\n});\nAlert.Heading = createWithBsPrefix('alert-heading', {\n  Component: DivStyledAsH4\n});\n/* harmony default export */ var src_Alert = (Alert);\n// CONCATENATED MODULE: ./src/Badge.js\n\n\nvar Badge_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Badge.js\";\n\n\n\n\nvar Badge_propTypes = {\n  /** @default 'badge' */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * The visual style of the badge\n   *\n   * @type {('primary'|'secondary'|'success'|'danger'|'warning'|'info'|'light'|'dark')}\n   */\n  variant: prop_types_default.a.string,\n\n  /**\n   * Add the `pill` modifier to make badges more rounded with\n   * some additional horizontal padding\n   */\n  pill: prop_types_default.a.bool.isRequired\n};\nvar Badge_defaultProps = {\n  pill: false\n};\nvar Badge = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      variant = _ref.variant,\n      pill = _ref.pill,\n      className = _ref.className,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"variant\", \"pill\", \"className\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'badge');\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"span\", _extends({\n    ref: ref\n  }, props, {\n    className: classnames_default()(className, prefix, pill && prefix + \"-pill\", variant && prefix + \"-\" + variant),\n    __source: {\n      fileName: Badge_jsxFileName,\n      lineNumber: 33\n    },\n    __self: this\n  }));\n});\nBadge.displayName = 'Badge';\nBadge.propTypes = Badge_propTypes;\nBadge.defaultProps = Badge_defaultProps;\n/* harmony default export */ var src_Badge = (Badge);\n// CONCATENATED MODULE: ./src/BreadcrumbItem.js\n\n\nvar BreadcrumbItem_jsxFileName = \"/Users/jason/src/react-bootstrap/src/BreadcrumbItem.js\";\n\n\n\n\n\nvar BreadcrumbItem_propTypes = {\n  /**\n   * @default 'breadcrumb-item'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * Adds a visual \"active\" state to a Breadcrumb\n   * Item and disables the link.\n   */\n  active: prop_types_default.a.bool,\n\n  /**\n   * `href` attribute for the inner `a` element\n   */\n  href: prop_types_default.a.string,\n\n  /**\n   * `title` attribute for the inner `a` element\n   */\n  title: prop_types_default.a.node,\n\n  /**\n   * `target` attribute for the inner `a` element\n   */\n  target: prop_types_default.a.string,\n  as: prop_types_default.a.elementType\n};\nvar BreadcrumbItem_defaultProps = {\n  active: false,\n  as: 'li'\n};\nvar BreadcrumbItem = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      active = _ref.active,\n      className = _ref.className,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"active\", \"className\", \"as\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'breadcrumb-item');\n\n  var href = props.href,\n      title = props.title,\n      target = props.target,\n      elementProps = _objectWithoutPropertiesLoose(props, [\"href\", \"title\", \"target\"]);\n\n  var linkProps = {\n    href: href,\n    title: title,\n    target: target\n  };\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, {\n    ref: ref,\n    className: classnames_default()(prefix, className, {\n      active: active\n    }),\n    \"aria-current\": active ? 'page' : undefined,\n    __source: {\n      fileName: BreadcrumbItem_jsxFileName,\n      lineNumber: 47\n    },\n    __self: this\n  }, active ? external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"span\", _extends({}, elementProps, {\n    className: classnames_default()({\n      active: active\n    }),\n    __source: {\n      fileName: BreadcrumbItem_jsxFileName,\n      lineNumber: 53\n    },\n    __self: this\n  })) : external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_SafeAnchor, _extends({}, elementProps, linkProps, {\n    __source: {\n      fileName: BreadcrumbItem_jsxFileName,\n      lineNumber: 55\n    },\n    __self: this\n  })));\n});\nBreadcrumbItem.displayName = 'BreadcrumbItem';\nBreadcrumbItem.propTypes = BreadcrumbItem_propTypes;\nBreadcrumbItem.defaultProps = BreadcrumbItem_defaultProps;\n/* harmony default export */ var src_BreadcrumbItem = (BreadcrumbItem);\n// CONCATENATED MODULE: ./src/Breadcrumb.js\n\n\nvar Breadcrumb_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Breadcrumb.js\";\n\n\n\n\n\nvar Breadcrumb_propTypes = {\n  /**\n   * @default 'breadcrumb'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * ARIA label for the nav element\n   * https://www.w3.org/TR/wai-aria-practices/#breadcrumb\n   */\n  label: prop_types_default.a.string,\n\n  /**\n   * Additional props passed as-is to the underlying `<ul>` element\n   */\n  listProps: prop_types_default.a.object,\n  as: prop_types_default.a.elementType\n};\nvar Breadcrumb_defaultProps = {\n  label: 'breadcrumb',\n  listProps: {},\n  as: 'nav'\n};\nvar Breadcrumb = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      listProps = _ref.listProps,\n      children = _ref.children,\n      label = _ref.label,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"listProps\", \"children\", \"label\", \"as\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'breadcrumb');\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({\n    \"aria-label\": label,\n    className: className,\n    ref: ref\n  }, props, {\n    __source: {\n      fileName: Breadcrumb_jsxFileName,\n      lineNumber: 48\n    },\n    __self: this\n  }), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"ol\", _extends({}, listProps, {\n    className: classnames_default()(prefix, listProps.className),\n    __source: {\n      fileName: Breadcrumb_jsxFileName,\n      lineNumber: 49\n    },\n    __self: this\n  }), children));\n});\nBreadcrumb.displayName = 'Breadcrumb';\nBreadcrumb.propTypes = Breadcrumb_propTypes;\nBreadcrumb.defaultProps = Breadcrumb_defaultProps;\nBreadcrumb.Item = src_BreadcrumbItem;\n/* harmony default export */ var src_Breadcrumb = (Breadcrumb);\n// CONCATENATED MODULE: ./src/Button.js\n\n\nvar Button_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Button.js\";\n\n\n\n\n\nvar Button_propTypes = {\n  /**\n   * @default 'btn'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * One or more button variant combinations\n   *\n   * buttons may be one of a variety of visual variants such as:\n   *\n   * `'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light', 'link'`\n   *\n   * as well as \"outline\" versions (prefixed by 'outline-*')\n   *\n   * `'outline-primary', 'outline-secondary', 'outline-success', 'outline-danger', 'outline-warning', 'outline-info', 'outline-dark', 'outline-light'`\n   */\n  variant: prop_types_default.a.string,\n\n  /**\n   * Specifies a large or small button.\n   *\n   * @type ('sm'|'lg')\n   */\n  size: prop_types_default.a.string,\n\n  /** Spans the full width of the Button parent */\n  block: prop_types_default.a.bool,\n\n  /** Manually set the visual state of the button to `:active` */\n  active: prop_types_default.a.bool,\n\n  /**\n   * Disables the Button, preventing mouse events,\n   * even if the underlying component is an `<a>` element\n   */\n  disabled: prop_types_default.a.bool,\n\n  /** Providing a `href` will render an `<a>` element, _styled_ as a button. */\n  href: prop_types_default.a.string,\n\n  /**\n   * Defines HTML button type attribute.\n   *\n   * @default 'button'\n   */\n  type: prop_types_default.a.oneOf(['button', 'reset', 'submit', null]),\n  as: prop_types_default.a.elementType\n};\nvar Button_defaultProps = {\n  variant: 'primary',\n  active: false,\n  disabled: false,\n  type: 'button'\n};\nvar Button = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      variant = _ref.variant,\n      size = _ref.size,\n      active = _ref.active,\n      className = _ref.className,\n      block = _ref.block,\n      type = _ref.type,\n      as = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"variant\", \"size\", \"active\", \"className\", \"block\", \"type\", \"as\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'btn');\n  var classes = classnames_default()(className, prefix, active && 'active', prefix + \"-\" + variant, block && prefix + \"-block\", size && prefix + \"-\" + size);\n\n  if (props.href) {\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_SafeAnchor, _extends({}, props, {\n      as: as,\n      innerRef: ref,\n      className: classnames_default()(classes, props.disabled && 'disabled'),\n      __source: {\n        fileName: Button_jsxFileName,\n        lineNumber: 84\n      },\n      __self: this\n    }));\n  }\n\n  var Component = as || 'button';\n  if (ref) props.ref = ref;\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n    type: type,\n    className: classes,\n    __source: {\n      fileName: Button_jsxFileName,\n      lineNumber: 96\n    },\n    __self: this\n  }));\n});\nButton.displayName = 'Button';\nButton.propTypes = Button_propTypes;\nButton.defaultProps = Button_defaultProps;\n/* harmony default export */ var src_Button = (Button);\n// CONCATENATED MODULE: ./src/ButtonGroup.js\n\n\nvar ButtonGroup_jsxFileName = \"/Users/jason/src/react-bootstrap/src/ButtonGroup.js\";\n\n\n\n\nvar ButtonGroup_propTypes = {\n  /**\n   * @default 'btn-group'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * Sets the size for all Buttons in the group.\n   *\n   * @type ('sm'|'lg')\n   */\n  size: prop_types_default.a.string,\n\n  /** Make the set of Buttons appear vertically stacked. */\n  vertical: prop_types_default.a.bool,\n\n  /**\n   * Display as a button toggle group.\n   *\n   * (Generally it's better to use `ToggleButtonGroup` directly)\n   */\n  toggle: prop_types_default.a.bool,\n\n  /**\n   * An ARIA role describing the button group. Usually the default\n   * \"group\" role is fine. An `aria-label` or `aria-labelledby`\n   * prop is also recommended.\n   */\n  role: prop_types_default.a.string,\n  as: prop_types_default.a.elementType\n};\nvar ButtonGroup_defaultProps = {\n  vertical: false,\n  toggle: false,\n  role: 'group',\n  as: 'div'\n};\nvar ButtonGroup = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (props, ref) {\n  var bsPrefix = props.bsPrefix,\n      size = props.size,\n      toggle = props.toggle,\n      vertical = props.vertical,\n      className = props.className,\n      Component = props.as,\n      rest = _objectWithoutPropertiesLoose(props, [\"bsPrefix\", \"size\", \"toggle\", \"vertical\", \"className\", \"as\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'btn-group');\n  var baseClass = prefix;\n  if (vertical) baseClass = prefix + \"-vertical\";\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, rest, {\n    ref: ref,\n    className: classnames_default()(className, baseClass, size && prefix + \"-\" + size, toggle && prefix + \"-toggle\"),\n    __source: {\n      fileName: ButtonGroup_jsxFileName,\n      lineNumber: 64\n    },\n    __self: this\n  }));\n});\nButtonGroup.displayName = 'ButtonGroup';\nButtonGroup.propTypes = ButtonGroup_propTypes;\nButtonGroup.defaultProps = ButtonGroup_defaultProps;\n/* harmony default export */ var src_ButtonGroup = (ButtonGroup);\n// CONCATENATED MODULE: ./src/ButtonToolbar.js\n\n\nvar ButtonToolbar_jsxFileName = \"/Users/jason/src/react-bootstrap/src/ButtonToolbar.js\";\n\n\n\n\nvar ButtonToolbar_propTypes = {\n  /**\n   * @default 'btn-toolbar'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * The ARIA role describing the button toolbar. Generally the default\n   * \"toolbar\" role is correct. An `aria-label` or `aria-labelledby`\n   * prop is also recommended.\n   */\n  role: prop_types_default.a.string\n};\nvar ButtonToolbar_defaultProps = {\n  role: 'toolbar'\n};\nvar ButtonToolbar = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'btn-toolbar');\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", _extends({}, props, {\n    ref: ref,\n    className: classnames_default()(className, prefix),\n    __source: {\n      fileName: ButtonToolbar_jsxFileName,\n      lineNumber: 30\n    },\n    __self: this\n  }));\n});\nButtonToolbar.displayName = 'ButtonToolbar';\nButtonToolbar.propTypes = ButtonToolbar_propTypes;\nButtonToolbar.defaultProps = ButtonToolbar_defaultProps;\n/* harmony default export */ var src_ButtonToolbar = (ButtonToolbar);\n// CONCATENATED MODULE: ./src/CardContext.js\n\n/* harmony default export */ var CardContext = (external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createContext(null));\n// CONCATENATED MODULE: ./src/CardImg.js\n\n\nvar CardImg_jsxFileName = \"/Users/jason/src/react-bootstrap/src/CardImg.js\";\n\n\n\n\nvar CardImg_propTypes = {\n  /**\n   * @default 'card-img'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * Defines image position inside\n   * the card.\n   *\n   * @type {('top'|'bottom')}\n   */\n  variant: prop_types_default.a.oneOf(['top', 'bottom', null]),\n  as: prop_types_default.a.elementType\n};\nvar CardImg_defaultProps = {\n  as: 'img',\n  variant: null\n};\nvar CardImg = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      variant = _ref.variant,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"variant\", \"as\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'card-img');\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({\n    ref: ref,\n    className: classnames_default()(variant ? prefix + \"-\" + variant : prefix, className)\n  }, props, {\n    __source: {\n      fileName: CardImg_jsxFileName,\n      lineNumber: 34\n    },\n    __self: this\n  }));\n});\nCardImg.displayName = 'CardImg';\nCardImg.propTypes = CardImg_propTypes;\nCardImg.defaultProps = CardImg_defaultProps;\n/* harmony default export */ var src_CardImg = (CardImg);\n// CONCATENATED MODULE: ./src/Card.js\n\n\nvar Card_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Card.js\";\n\n\n\n\n\n\n\n\nvar DivStyledAsH5 = divWithClassName('h5');\nvar DivStyledAsH6 = divWithClassName('h6');\nvar CardBody = createWithBsPrefix('card-body');\nvar Card_propTypes = {\n  /**\n   * @default 'card'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * Sets card background\n   *\n   * @type {('primary'|'secondary'|'success'|'danger'|'warning'|'info'|'dark'|'light')}\n   */\n  bg: prop_types_default.a.string,\n\n  /**\n   * Sets card text color\n   *\n   * @type {('primary'|'secondary'|'success'|'danger'|'warning'|'info'|'dark'|'light'|'white'|'muted')}\n   */\n  text: prop_types_default.a.string,\n\n  /**\n   * Sets card border color\n   *\n   * @type {('primary'|'secondary'|'success'|'danger'|'warning'|'info'|'dark'|'light')}\n   */\n  border: prop_types_default.a.string,\n\n  /**\n   * When this prop is set, it creates a Card with a Card.Body inside\n   * passing the children directly to it\n   */\n  body: prop_types_default.a.bool,\n  as: prop_types_default.a.elementType\n};\nvar Card_defaultProps = {\n  as: 'div',\n  body: false\n};\nvar Card = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      bg = _ref.bg,\n      text = _ref.text,\n      border = _ref.border,\n      body = _ref.body,\n      children = _ref.children,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"bg\", \"text\", \"border\", \"body\", \"children\", \"as\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'card');\n  var cardContext = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useMemo\"])(function () {\n    return {\n      cardHeaderBsPrefix: prefix + \"-header\"\n    };\n  }, [prefix]);\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(CardContext.Provider, {\n    value: cardContext,\n    __source: {\n      fileName: Card_jsxFileName,\n      lineNumber: 81\n    },\n    __self: this\n  }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({\n    ref: ref\n  }, props, {\n    className: classnames_default()(className, prefix, bg && \"bg-\" + bg, text && \"text-\" + text, border && \"border-\" + border),\n    __source: {\n      fileName: Card_jsxFileName,\n      lineNumber: 82\n    },\n    __self: this\n  }), body ? external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(CardBody, {\n    __source: {\n      fileName: Card_jsxFileName,\n      lineNumber: 93\n    },\n    __self: this\n  }, children) : children));\n});\nCard.displayName = 'Card';\nCard.propTypes = Card_propTypes;\nCard.defaultProps = Card_defaultProps;\nCard.Img = src_CardImg;\nCard.Title = createWithBsPrefix('card-title', {\n  Component: DivStyledAsH5\n});\nCard.Subtitle = createWithBsPrefix('card-subtitle', {\n  Component: DivStyledAsH6\n});\nCard.Body = CardBody;\nCard.Link = createWithBsPrefix('card-link', {\n  Component: 'a'\n});\nCard.Text = createWithBsPrefix('card-text', {\n  Component: 'p'\n});\nCard.Header = createWithBsPrefix('card-header');\nCard.Footer = createWithBsPrefix('card-footer');\nCard.ImgOverlay = createWithBsPrefix('card-img-overlay');\n/* harmony default export */ var src_Card = (Card);\n// CONCATENATED MODULE: ./src/CardColumns.js\n\n/* harmony default export */ var CardColumns = (createWithBsPrefix('card-columns'));\n// CONCATENATED MODULE: ./src/CardDeck.js\n\n/* harmony default export */ var CardDeck = (createWithBsPrefix('card-deck'));\n// CONCATENATED MODULE: ./src/CardGroup.js\n\n/* harmony default export */ var CardGroup = (createWithBsPrefix('card-group'));\n// EXTERNAL MODULE: ./node_modules/dom-helpers/transition/index.js\nvar dom_helpers_transition = __webpack_require__(51);\nvar transition_default = /*#__PURE__*/__webpack_require__.n(dom_helpers_transition);\n\n// EXTERNAL MODULE: ./node_modules/uncontrollable/index.js\nvar uncontrollable = __webpack_require__(7);\nvar uncontrollable_default = /*#__PURE__*/__webpack_require__.n(uncontrollable);\n\n// CONCATENATED MODULE: ./src/CarouselCaption.js\n\n/* harmony default export */ var CarouselCaption = (createWithBsPrefix('carousel-caption', {\n  Component: 'div'\n}));\n// CONCATENATED MODULE: ./src/CarouselItem.js\n\n/* harmony default export */ var CarouselItem = (createWithBsPrefix('carousel-item'));\n// CONCATENATED MODULE: ./src/utils/ElementChildren.js\n\n/**\n * Iterates through children that are typically specified as `props.children`,\n * but only maps over children that are \"valid elements\".\n *\n * The mapFunction provided index will be normalised to the components mapped,\n * so an invalid component would not increase the index.\n *\n */\n\nfunction map(children, func) {\n  var index = 0;\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Children.map(children, function (child) {\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.isValidElement(child) ? func(child, index++) : child;\n  });\n}\n/**\n * Iterates through children that are \"valid elements\".\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child with the index reflecting the position relative to \"valid components\".\n */\n\n\nfunction forEach(children, func) {\n  var index = 0;\n  external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Children.forEach(children, function (child) {\n    if (external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.isValidElement(child)) func(child, index++);\n  });\n}\n\n\n// CONCATENATED MODULE: ./src/Carousel.js\n\n\n\nvar Carousel_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Carousel.js\";\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Carousel_countChildren = function countChildren(c) {\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Children.toArray(c).filter(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.isValidElement).length;\n}; // TODO: `slide` should be `animate`.\n\n\nvar Carousel_propTypes = {\n  /**\n   * @default 'carousel'\n   */\n  bsPrefix: prop_types_default.a.string,\n  as: prop_types_default.a.elementType,\n\n  /**\n   * Enables animation on the Carousel as it transitions between slides.\n   */\n  slide: prop_types_default.a.bool,\n\n  /** Cross fade slides instead of the default slide animation */\n  fade: prop_types_default.a.bool,\n\n  /** Slides will loop to the start when the last one transitions */\n  wrap: prop_types_default.a.bool,\n\n  /**\n   * Show a set of slide position indicators\n   */\n  indicators: prop_types_default.a.bool,\n\n  /**\n   * The amount of time to delay between automatically cycling an item.\n   * If `null`, carousel will not automatically cycle.\n   */\n  interval: prop_types_default.a.number,\n\n  /**\n   * Show the Carousel previous and next arrows for changing the current slide\n   */\n  controls: prop_types_default.a.bool,\n\n  /**\n   * Temporarily puase the slide interval when the mouse hovers over a slide.\n   */\n  pauseOnHover: prop_types_default.a.bool,\n\n  /** Enable keyboard navigation via the Arrow keys for changing slides */\n  keyboard: prop_types_default.a.bool,\n\n  /**\n   * Callback fired when the active item changes.\n   *\n   * ```js\n   * (eventKey: any, direction: 'prev' | 'next', ?event: Object) => any\n   * ```\n   *\n   * @controllable activeIndex\n   */\n  onSelect: prop_types_default.a.func,\n\n  /** A callback fired after a slide transitions in */\n  onSlideEnd: prop_types_default.a.func,\n\n  /**\n   * Controls the current visible slide\n   *\n   * @controllable onSelect\n   */\n  activeIndex: prop_types_default.a.number,\n\n  /** Override the default button icon for the \"previous\" control */\n  prevIcon: prop_types_default.a.node,\n\n  /**\n   * Label shown to screen readers only, can be used to show the previous element\n   * in the carousel.\n   * Set to null to deactivate.\n   */\n  prevLabel: prop_types_default.a.string,\n\n  /** Override the default button icon for the \"next\" control */\n  nextIcon: prop_types_default.a.node,\n\n  /**\n   * Label shown to screen readers only, can be used to show the next element\n   * in the carousel.\n   * Set to null to deactivate.\n   */\n  nextLabel: prop_types_default.a.string\n};\nvar Carousel_defaultProps = {\n  as: 'div',\n  slide: true,\n  fade: false,\n  interval: 5000,\n  keyboard: true,\n  pauseOnHover: true,\n  wrap: true,\n  indicators: true,\n  controls: true,\n  activeIndex: 0,\n  prevIcon: external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"span\", {\n    \"aria-hidden\": \"true\",\n    className: \"carousel-control-prev-icon\",\n    __source: {\n      fileName: Carousel_jsxFileName,\n      lineNumber: 116\n    },\n    __self: undefined\n  }),\n  prevLabel: 'Previous',\n  nextIcon: external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"span\", {\n    \"aria-hidden\": \"true\",\n    className: \"carousel-control-next-icon\",\n    __source: {\n      fileName: Carousel_jsxFileName,\n      lineNumber: 119\n    },\n    __self: undefined\n  }),\n  nextLabel: 'Next'\n};\n\nvar Carousel_Carousel =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Carousel, _React$Component);\n\n  function Carousel(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n\n    _this.handleSlideEnd = function () {\n      var pendingIndex = _this._pendingIndex;\n      _this._isSliding = false;\n      _this._pendingIndex = null;\n      if (pendingIndex != null) _this.to(pendingIndex);else _this.cycle();\n    };\n\n    _this.handleMouseOut = function () {\n      _this.cycle();\n    };\n\n    _this.handleMouseOver = function () {\n      if (_this.props.pauseOnHover) _this.pause();\n    };\n\n    _this.handleKeyDown = function (event) {\n      if (/input|textarea/i.test(event.target.tagName)) return;\n\n      switch (event.key) {\n        case 'ArrowLeft':\n          event.preventDefault();\n\n          _this.handlePrev(event);\n\n          break;\n\n        case 'ArrowRight':\n          event.preventDefault();\n\n          _this.handleNext(event);\n\n          break;\n\n        default:\n          break;\n      }\n    };\n\n    _this.handleNextWhenVisible = function () {\n      if (!_this.isUnmounted && !document.hidden && style_default()(_this.carousel.current, 'visibility') !== 'hidden') {\n        _this.handleNext();\n      }\n    };\n\n    _this.handleNext = function (e) {\n      if (_this._isSliding) return;\n      var _this$props = _this.props,\n          wrap = _this$props.wrap,\n          activeIndex = _this$props.activeIndex;\n      var index = activeIndex + 1;\n      var count = Carousel_countChildren(_this.props.children);\n\n      if (index > count - 1) {\n        if (!wrap) return;\n        index = 0;\n      }\n\n      _this.select(index, e, 'next');\n    };\n\n    _this.handlePrev = function (e) {\n      if (_this._isSliding) return;\n      var _this$props2 = _this.props,\n          wrap = _this$props2.wrap,\n          activeIndex = _this$props2.activeIndex;\n      var index = activeIndex - 1;\n\n      if (index < 0) {\n        if (!wrap) return;\n        index = Carousel_countChildren(_this.props.children) - 1;\n      }\n\n      _this.select(index, e, 'prev');\n    };\n\n    _this.state = {\n      prevClasses: '',\n      currentClasses: 'active'\n    };\n    _this.isUnmounted = false;\n    _this.carousel = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createRef();\n    return _this;\n  }\n\n  var _proto = Carousel.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.cycle();\n  };\n\n  Carousel.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n    var previousActiveIndex = _ref.activeIndex;\n\n    if (nextProps.activeIndex !== previousActiveIndex) {\n      var lastPossibleIndex = Carousel_countChildren(nextProps.children) - 1;\n      var nextIndex = Math.max(0, Math.min(nextProps.activeIndex, lastPossibleIndex));\n      var direction;\n\n      if (nextIndex === 0 && previousActiveIndex >= lastPossibleIndex || previousActiveIndex <= nextIndex) {\n        direction = 'next';\n      } else {\n        direction = 'prev';\n      }\n\n      return {\n        direction: direction,\n        previousActiveIndex: previousActiveIndex,\n        activeIndex: nextIndex\n      };\n    }\n\n    return null;\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(_, prevState) {\n    var _this2 = this;\n\n    var _this$props3 = this.props,\n        bsPrefix = _this$props3.bsPrefix,\n        slide = _this$props3.slide,\n        onSlideEnd = _this$props3.onSlideEnd;\n    if (!slide || this.state.activeIndex === prevState.activeIndex || this._isSliding) return;\n    var _this$state = this.state,\n        activeIndex = _this$state.activeIndex,\n        direction = _this$state.direction;\n    var orderClassName, directionalClassName;\n\n    if (direction === 'next') {\n      orderClassName = bsPrefix + \"-item-next\";\n      directionalClassName = bsPrefix + \"-item-left\";\n    } else if (direction === 'prev') {\n      orderClassName = bsPrefix + \"-item-prev\";\n      directionalClassName = bsPrefix + \"-item-right\";\n    }\n\n    this._isSliding = true;\n    this.pause(); // eslint-disable-next-line react/no-did-update-set-state\n\n    this.safeSetState({\n      prevClasses: 'active',\n      currentClasses: orderClassName\n    }, function () {\n      var items = _this2.carousel.current.children;\n      var nextElement = items[activeIndex];\n      triggerBrowserReflow(nextElement);\n\n      _this2.safeSetState({\n        prevClasses: classnames_default()('active', directionalClassName),\n        currentClasses: classnames_default()(orderClassName, directionalClassName)\n      }, function () {\n        return transition_default.a.end(nextElement, function () {\n          _this2.safeSetState({\n            prevClasses: '',\n            currentClasses: 'active'\n          }, _this2.handleSlideEnd);\n\n          if (onSlideEnd) {\n            onSlideEnd();\n          }\n        });\n      });\n    });\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    clearTimeout(this.timeout);\n    this.isUnmounted = true;\n  };\n\n  _proto.safeSetState = function safeSetState(state, cb) {\n    var _this3 = this;\n\n    if (this.isUnmounted) return;\n    this.setState(state, function () {\n      return !_this3.isUnmounted && cb();\n    });\n  } // This might be a public API.\n  ;\n\n  _proto.pause = function pause() {\n    this._isPaused = true;\n    clearInterval(this._interval);\n    this._interval = null;\n  };\n\n  _proto.cycle = function cycle() {\n    this._isPaused = false;\n    clearInterval(this._interval);\n    this._interval = null;\n\n    if (this.props.interval && !this._isPaused) {\n      this._interval = setInterval(document.visibilityState ? this.handleNextWhenVisible : this.handleNext, this.props.interval);\n    }\n  };\n\n  _proto.to = function to(index, event) {\n    var children = this.props.children;\n\n    if (index < 0 || index > Carousel_countChildren(children) - 1) {\n      return;\n    }\n\n    if (this._isSliding) {\n      this._pendingIndex = index;\n      return;\n    }\n\n    this.select(index, event);\n  };\n\n  _proto.select = function select(index, event, direction) {\n    var _this4 = this;\n\n    clearTimeout(this.selectThrottle);\n    if (event && event.persist) event.persist(); // The timeout throttles fast clicks, in order to give any pending state\n    // a chance to update and propagate back through props\n\n    this.selectThrottle = setTimeout(function () {\n      clearTimeout(_this4.timeout);\n      var _this4$props = _this4.props,\n          activeIndex = _this4$props.activeIndex,\n          onSelect = _this4$props.onSelect;\n      if (index === activeIndex || _this4._isSliding || _this4.isUnmounted) return;\n      onSelect(index, direction || (index < activeIndex ? 'prev' : 'next'), event);\n    }, 50);\n  };\n\n  _proto.renderControls = function renderControls(properties) {\n    var bsPrefix = this.props.bsPrefix;\n    var wrap = properties.wrap,\n        children = properties.children,\n        activeIndex = properties.activeIndex,\n        prevIcon = properties.prevIcon,\n        nextIcon = properties.nextIcon,\n        prevLabel = properties.prevLabel,\n        nextLabel = properties.nextLabel;\n    var count = Carousel_countChildren(children);\n    return [(wrap || activeIndex !== 0) && external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_SafeAnchor, {\n      key: \"prev\",\n      className: bsPrefix + \"-control-prev\",\n      onClick: this.handlePrev,\n      __source: {\n        fileName: Carousel_jsxFileName,\n        lineNumber: 380\n      },\n      __self: this\n    }, prevIcon, prevLabel && external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"span\", {\n      className: \"sr-only\",\n      __source: {\n        fileName: Carousel_jsxFileName,\n        lineNumber: 386\n      },\n      __self: this\n    }, prevLabel)), (wrap || activeIndex !== count - 1) && external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_SafeAnchor, {\n      key: \"next\",\n      className: bsPrefix + \"-control-next\",\n      onClick: this.handleNext,\n      __source: {\n        fileName: Carousel_jsxFileName,\n        lineNumber: 391\n      },\n      __self: this\n    }, nextIcon, nextLabel && external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"span\", {\n      className: \"sr-only\",\n      __source: {\n        fileName: Carousel_jsxFileName,\n        lineNumber: 397\n      },\n      __self: this\n    }, nextLabel))];\n  };\n\n  _proto.renderIndicators = function renderIndicators(children, activeIndex) {\n    var _this5 = this;\n\n    var bsPrefix = this.props.bsPrefix;\n    var indicators = [];\n    forEach(children, function (child, index) {\n      indicators.push(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"li\", {\n        key: index,\n        className: index === activeIndex ? 'active' : null,\n        onClick: function onClick(e) {\n          return _this5.to(index, e);\n        },\n        __source: {\n          fileName: Carousel_jsxFileName,\n          lineNumber: 409\n        },\n        __self: this\n      }), // Force whitespace between indicator elements. Bootstrap requires\n      // this for correct spacing of elements.\n      ' ');\n    });\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"ol\", {\n      className: bsPrefix + \"-indicators\",\n      __source: {\n        fileName: Carousel_jsxFileName,\n        lineNumber: 421\n      },\n      __self: this\n    }, indicators);\n  };\n\n  _proto.render = function render() {\n    var _this$props4 = this.props,\n        Component = _this$props4.as,\n        bsPrefix = _this$props4.bsPrefix,\n        slide = _this$props4.slide,\n        fade = _this$props4.fade,\n        indicators = _this$props4.indicators,\n        controls = _this$props4.controls,\n        wrap = _this$props4.wrap,\n        prevIcon = _this$props4.prevIcon,\n        prevLabel = _this$props4.prevLabel,\n        nextIcon = _this$props4.nextIcon,\n        nextLabel = _this$props4.nextLabel,\n        className = _this$props4.className,\n        children = _this$props4.children,\n        keyboard = _this$props4.keyboard,\n        _5 = _this$props4.activeIndex,\n        _4 = _this$props4.pauseOnHover,\n        _3 = _this$props4.interval,\n        _2 = _this$props4.onSelect,\n        _1 = _this$props4.onSlideEnd,\n        props = _objectWithoutPropertiesLoose(_this$props4, [\"as\", \"bsPrefix\", \"slide\", \"fade\", \"indicators\", \"controls\", \"wrap\", \"prevIcon\", \"prevLabel\", \"nextIcon\", \"nextLabel\", \"className\", \"children\", \"keyboard\", \"activeIndex\", \"pauseOnHover\", \"interval\", \"onSelect\", \"onSlideEnd\"]);\n\n    var _this$state2 = this.state,\n        activeIndex = _this$state2.activeIndex,\n        previousActiveIndex = _this$state2.previousActiveIndex,\n        prevClasses = _this$state2.prevClasses,\n        currentClasses = _this$state2.currentClasses;\n    return (// eslint-disable-next-line jsx-a11y/no-static-element-interactions\n      external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n        className: classnames_default()(className, bsPrefix, slide && 'slide', fade && bsPrefix + \"-fade\"),\n        onKeyDown: keyboard ? this.handleKeyDown : undefined,\n        onMouseOver: this.handleMouseOver,\n        onMouseOut: this.handleMouseOut,\n        __source: {\n          fileName: Carousel_jsxFileName,\n          lineNumber: 457\n        },\n        __self: this\n      }), indicators && this.renderIndicators(children, activeIndex), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", {\n        className: bsPrefix + \"-inner\",\n        ref: this.carousel,\n        __source: {\n          fileName: Carousel_jsxFileName,\n          lineNumber: 471\n        },\n        __self: this\n      }, map(children, function (child, index) {\n        var current = index === activeIndex;\n        var previous = index === previousActiveIndex;\n        return Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"cloneElement\"])(child, {\n          className: classnames_default()(child.props.className, bsPrefix + \"-item\", current && currentClasses, previous && prevClasses)\n        });\n      })), controls && this.renderControls({\n        wrap: wrap,\n        children: children,\n        activeIndex: activeIndex,\n        prevIcon: prevIcon,\n        prevLabel: prevLabel,\n        nextIcon: nextIcon,\n        nextLabel: nextLabel\n      }))\n    );\n  };\n\n  return Carousel;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nCarousel_Carousel.defaultProps = Carousel_defaultProps;\nCarousel_Carousel.propTypes = Carousel_propTypes;\nvar DecoratedCarousel = createBootstrapComponent(uncontrollable_default()(Carousel_Carousel, {\n  activeIndex: 'onSelect'\n}), 'carousel');\nDecoratedCarousel.Caption = CarouselCaption;\nDecoratedCarousel.Item = CarouselItem;\n/* harmony default export */ var src_Carousel = (DecoratedCarousel);\n// CONCATENATED MODULE: ./src/Col.js\n\n\nvar Col_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Col.js\";\n\n\n\n\nvar DEVICE_SIZES = ['xl', 'lg', 'md', 'sm', 'xs'];\nvar colSize = prop_types_default.a.oneOfType([prop_types_default.a.bool, prop_types_default.a.number, prop_types_default.a.string, prop_types_default.a.oneOf(['auto'])]);\nvar stringOrNumber = prop_types_default.a.oneOfType([prop_types_default.a.number, prop_types_default.a.string]);\nvar Col_column = prop_types_default.a.oneOfType([colSize, prop_types_default.a.shape({\n  size: colSize,\n  order: stringOrNumber,\n  offset: stringOrNumber\n})]);\nvar Col_propTypes = {\n  /**\n   * @default 'col'\n   */\n  bsPrefix: prop_types_default.a.string,\n  as: prop_types_default.a.elementType,\n\n  /**\n   * The number of columns to span on sxtra small devices (<576px)\n   *\n   * @type {(true|\"auto\"|number|{ span: true|\"auto\"|number, offset: number, order: number })}\n   */\n  xs: Col_column,\n\n  /**\n   * The number of columns to span on small devices (≥576px)\n   *\n   * @type {(true|\"auto\"|number|{ span: true|\"auto\"|number, offset: number, order: number })}\n   */\n  sm: Col_column,\n\n  /**\n   * The number of columns to span on medium devices (≥768px)\n   *\n   * @type {(true|\"auto\"|number|{ span: true|\"auto\"|number, offset: number, order: number })}\n   */\n  md: Col_column,\n\n  /**\n   * The number of columns to span on large devices (≥992px)\n   *\n   * @type {(true|\"auto\"|number|{ span: true|\"auto\"|number, offset: number, order: number })}\n   */\n  lg: Col_column,\n\n  /**\n   * The number of columns to span on extra large devices (≥1200px)\n   *\n   * @type {(true|\"auto\"|number|{ span: true|\"auto\"|number, offset: number, order: number })}\n   */\n  xl: Col_column\n};\nvar Col_defaultProps = {\n  as: 'div'\n};\nvar Col = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"as\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'col');\n  var spans = [];\n  var classes = [];\n  DEVICE_SIZES.forEach(function (brkPoint) {\n    var propValue = props[brkPoint];\n    delete props[brkPoint];\n    var span, offset, order;\n\n    if (propValue != null && typeof propValue === 'object') {\n      var _propValue$span = propValue.span;\n      span = _propValue$span === void 0 ? true : _propValue$span;\n      offset = propValue.offset;\n      order = propValue.order;\n    } else {\n      span = propValue;\n    }\n\n    var infix = brkPoint !== 'xs' ? \"-\" + brkPoint : '';\n    if (span != null) spans.push(span === true ? \"\" + prefix + infix : \"\" + prefix + infix + \"-\" + span);\n    if (order != null) classes.push(\"order\" + infix + \"-\" + order);\n    if (offset != null) classes.push(\"offset\" + infix + \"-\" + offset);\n  });\n\n  if (!spans.length) {\n    spans.push(prefix); // plain 'col'\n  }\n\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n    ref: ref,\n    className: classnames_default.a.apply(void 0, [className].concat(spans, classes)),\n    __source: {\n      fileName: Col_jsxFileName,\n      lineNumber: 110\n    },\n    __self: this\n  }));\n});\nCol.displayName = 'Col';\nCol.propTypes = Col_propTypes;\nCol.defaultProps = Col_defaultProps;\n/* harmony default export */ var src_Col = (Col);\n// EXTERNAL MODULE: ./node_modules/react-overlays/Dropdown.js\nvar Dropdown = __webpack_require__(52);\nvar Dropdown_default = /*#__PURE__*/__webpack_require__.n(Dropdown);\n\n// EXTERNAL MODULE: external {\"root\":\"ReactDOM\",\"commonjs2\":\"react-dom\",\"commonjs\":\"react-dom\",\"amd\":\"react-dom\"}\nvar external_root_ReactDOM_commonjs2_react_dom_commonjs_react_dom_amd_react_dom_ = __webpack_require__(6);\nvar external_root_ReactDOM_commonjs2_react_dom_commonjs_react_dom_amd_react_dom_default = /*#__PURE__*/__webpack_require__.n(external_root_ReactDOM_commonjs2_react_dom_commonjs_react_dom_amd_react_dom_);\n\n// EXTERNAL MODULE: ./node_modules/react-overlays/DropdownMenu.js\nvar DropdownMenu = __webpack_require__(35);\nvar DropdownMenu_default = /*#__PURE__*/__webpack_require__.n(DropdownMenu);\n\n// CONCATENATED MODULE: ./src/NavbarContext.js\n\n/* harmony default export */ var NavbarContext = (external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createContext(null));\n// CONCATENATED MODULE: ./src/DropdownMenu.js\n\n\nvar DropdownMenu_jsxFileName = \"/Users/jason/src/react-bootstrap/src/DropdownMenu.js\";\n\n\n\n\n\n\n\n\nvar DropdownMenu_wrapRef = function wrapRef(props) {\n  var ref = props.ref;\n\n  props.ref = ref.__wrapped || (ref.__wrapped = function (r) {\n    return ref(Object(external_root_ReactDOM_commonjs2_react_dom_commonjs_react_dom_amd_react_dom_[\"findDOMNode\"])(r));\n  });\n\n  return props;\n};\n\nvar DropdownMenu_propTypes = {\n  /**\n   * @default 'dropdown-menu'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /** Controls the visibility of the Dropdown menu  */\n  show: prop_types_default.a.bool,\n\n  /** Have the dropdown switch to it's opposite placement when necessary to stay on screen. */\n  flip: prop_types_default.a.bool,\n\n  /** Aligns the Dropdown menu to the right of it's container. */\n  alignRight: prop_types_default.a.bool,\n  onSelect: prop_types_default.a.func,\n\n  /**\n   * Which event when fired outside the component will cause it to be closed\n   *\n   * *Note: For custom dropdown components, you will have to pass the\n   * `rootCloseEvent` to `<RootCloseWrapper>` in your custom dropdown menu\n   * component ([similarly to how it is implemented in `<Dropdown.Menu>`](https://github.com/react-bootstrap/react-bootstrap/blob/v0.31.5/src/DropdownMenu.js#L115-L119)).*\n   */\n  rootCloseEvent: prop_types_default.a.oneOf(['click', 'mousedown']),\n\n  /**\n   * Control the rendering of the DropdownMenu. All non-menu props\n   * (listed here) are passed through to the `as` Component.\n   *\n   * If providing a custom, non DOM, component. the `show`, `close` and `alignRight` props\n   * are also injected and should be handled appropriately.\n   */\n  as: prop_types_default.a.elementType,\n\n  /**\n   * A set of popper options and props passed directly to react-popper's Popper component.\n   */\n  popperConfig: prop_types_default.a.object\n};\nvar DropdownMenu_defaultProps = {\n  alignRight: false,\n  as: 'div',\n  flip: true\n};\nvar DropdownMenu_DropdownMenu = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      alignRight = _ref.alignRight,\n      rootCloseEvent = _ref.rootCloseEvent,\n      flip = _ref.flip,\n      popperConfig = _ref.popperConfig,\n      showProps = _ref.show,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"alignRight\", \"rootCloseEvent\", \"flip\", \"popperConfig\", \"show\", \"as\"]);\n\n  var isNavbar = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(NavbarContext);\n  var prefix = useBootstrapPrefix(bsPrefix, 'dropdown-menu');\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(DropdownMenu_default.a, {\n    ref: ref // FIXME: the ref situation is out of hand here\n    ,\n    flip: flip,\n    show: showProps,\n    alignEnd: alignRight,\n    usePopper: !isNavbar,\n    popperConfig: popperConfig,\n    rootCloseEvent: rootCloseEvent,\n    __source: {\n      fileName: DropdownMenu_jsxFileName,\n      lineNumber: 83\n    },\n    __self: this\n  }, function (_ref2) {\n    var placement = _ref2.placement,\n        show = _ref2.show,\n        alignEnd = _ref2.alignEnd,\n        close = _ref2.close,\n        menuProps = _ref2.props;\n    DropdownMenu_wrapRef(menuProps); // For custom components provide additional, non-DOM, props;\n\n    if (typeof Component !== 'string') {\n      menuProps.show = show;\n      menuProps.close = close;\n      menuProps.alignRight = alignEnd;\n    }\n\n    var style = props.style;\n\n    if (placement) {\n      // we don't need the default popper style,\n      // menus are display: none when not shown.\n      style = _extends({}, style, menuProps.style);\n      props['x-placement'] = placement;\n    }\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, menuProps, {\n      style: style,\n      className: classnames_default()(className, prefix, show && 'show', alignEnd && prefix + \"-right\"),\n      __source: {\n        fileName: DropdownMenu_jsxFileName,\n        lineNumber: 108\n      },\n      __self: this\n    }));\n  });\n});\nDropdownMenu_DropdownMenu.displayName = 'DropdownMenu';\nDropdownMenu_DropdownMenu.propTypes = DropdownMenu_propTypes;\nDropdownMenu_DropdownMenu.defaultProps = DropdownMenu_defaultProps;\n/* harmony default export */ var src_DropdownMenu = (DropdownMenu_DropdownMenu);\n// EXTERNAL MODULE: ./node_modules/prop-types-extra/lib/isRequiredForA11y.js\nvar isRequiredForA11y = __webpack_require__(13);\nvar isRequiredForA11y_default = /*#__PURE__*/__webpack_require__.n(isRequiredForA11y);\n\n// EXTERNAL MODULE: ./node_modules/react-overlays/DropdownToggle.js\nvar react_overlays_DropdownToggle = __webpack_require__(36);\nvar DropdownToggle_default = /*#__PURE__*/__webpack_require__.n(react_overlays_DropdownToggle);\n\n// CONCATENATED MODULE: ./src/DropdownToggle.js\n\n\n\nvar DropdownToggle_jsxFileName = \"/Users/jason/src/react-bootstrap/src/DropdownToggle.js\";\n\n\n\n\n\n\n\n\n\nvar DropdownToggle_wrapRef = function wrapRef(props) {\n  var ref = props.ref;\n\n  props.ref = ref.__wrapped || (ref.__wrapped = function (r) {\n    return ref(Object(external_root_ReactDOM_commonjs2_react_dom_commonjs_react_dom_amd_react_dom_[\"findDOMNode\"])(r));\n  });\n\n  return props;\n};\n\nvar DropdownToggle_DropdownToggle =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(DropdownToggle, _React$Component);\n\n  function DropdownToggle() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = DropdownToggle.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        bsPrefix = _this$props.bsPrefix,\n        split = _this$props.split,\n        className = _this$props.className,\n        children = _this$props.children,\n        childBsPrefix = _this$props.childBsPrefix,\n        Component = _this$props.as,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"bsPrefix\", \"split\", \"className\", \"children\", \"childBsPrefix\", \"as\"]);\n\n    if (childBsPrefix !== undefined) {\n      props.bsPrefix = childBsPrefix;\n    } // This intentionally forwards size and variant (if set) to the\n    // underlying component, to allow it to render size and style variants.\n\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(DropdownToggle_default.a, {\n      __source: {\n        fileName: DropdownToggle_jsxFileName,\n        lineNumber: 65\n      },\n      __self: this\n    }, function (_ref) {\n      var toggle = _ref.toggle,\n          toggleProps = _ref.props;\n      return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({\n        onClick: toggle,\n        className: classnames_default()(className, bsPrefix, split && bsPrefix + \"-split\")\n      }, DropdownToggle_wrapRef(toggleProps), props, {\n        __source: {\n          fileName: DropdownToggle_jsxFileName,\n          lineNumber: 67\n        },\n        __self: this\n      }), children);\n    });\n  };\n\n  return DropdownToggle;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component); // Needs to be a class FTM, because it needs to accept a ref that can be used with findDOMNode\n\n\nDropdownToggle_DropdownToggle.propTypes = {\n  /**\n   * @default 'dropdown-toggle'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * An html id attribute, necessary for assistive technologies, such as screen readers.\n   * @type {string|number}\n   * @required\n   */\n  id: isRequiredForA11y_default()(prop_types_default.a.any),\n  split: prop_types_default.a.bool,\n  as: prop_types_default.a.elementType,\n\n  /**\n   * to passthrough to the underlying button or whatever from DropdownButton\n   * @private\n   */\n  childBsPrefix: prop_types_default.a.string\n};\nDropdownToggle_DropdownToggle.defaultProps = {\n  as: src_Button\n};\n/* harmony default export */ var src_DropdownToggle = (createBootstrapComponent(DropdownToggle_DropdownToggle, 'dropdown-toggle'));\n// CONCATENATED MODULE: ./src/NavContext.js\n\nvar NavContext = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createContext(null);\n/* harmony default export */ var src_NavContext = (NavContext);\n// CONCATENATED MODULE: ./src/DropdownItem.js\n\n\nvar DropdownItem_jsxFileName = \"/Users/jason/src/react-bootstrap/src/DropdownItem.js\";\n\n\n\n\n\n\n\n\nvar DropdownItem_propTypes = {\n  /** @default 'dropdown' */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * Highlight the menu item as active.\n   */\n  active: prop_types_default.a.bool,\n\n  /**\n   * Disable the menu item, making it unselectable.\n   */\n  disabled: prop_types_default.a.bool,\n\n  /**\n   * Value passed to the `onSelect` handler, useful for identifying the selected menu item.\n   */\n  eventKey: prop_types_default.a.any,\n\n  /**\n   * HTML `href` attribute corresponding to `a.href`.\n   */\n  href: prop_types_default.a.string,\n\n  /**\n   * Callback fired when the menu item is clicked.\n   */\n  onClick: prop_types_default.a.func,\n\n  /**\n   * Callback fired when the menu item is selected.\n   *\n   * ```js\n   * (eventKey: any, event: Object) => any\n   * ```\n   */\n  onSelect: prop_types_default.a.func,\n  as: prop_types_default.a.elementType\n};\nvar DropdownItem_defaultProps = {\n  as: src_SafeAnchor,\n  disabled: false\n};\nvar DropdownItem = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      children = _ref.children,\n      eventKey = _ref.eventKey,\n      disabled = _ref.disabled,\n      href = _ref.href,\n      onClick = _ref.onClick,\n      onSelect = _ref.onSelect,\n      propActive = _ref.active,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"children\", \"eventKey\", \"disabled\", \"href\", \"onClick\", \"onSelect\", \"active\", \"as\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'dropdown-item');\n  var onSelectCtx = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(src_SelectableContext);\n  var navContext = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(src_NavContext);\n\n  var _ref2 = navContext || {},\n      activeKey = _ref2.activeKey;\n\n  var key = makeEventKey(eventKey, href);\n  var active = propActive == null && key != null ? makeEventKey(activeKey) === key : propActive;\n  var handleClick = useEventCallback_default()(function (event) {\n    // SafeAnchor handles the disabled case, but we handle it here\n    // for other components\n    if (disabled) return;\n    if (onClick) onClick(event);\n    if (onSelectCtx) onSelectCtx(key, event);\n    if (onSelect) onSelect(key, event);\n  });\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n    ref: ref,\n    href: href,\n    disabled: disabled,\n    className: classnames_default()(className, prefix, active && 'active', disabled && 'disabled'),\n    onClick: handleClick,\n    __source: {\n      fileName: DropdownItem_jsxFileName,\n      lineNumber: 96\n    },\n    __self: this\n  }), children);\n});\nDropdownItem.displayName = 'DropdownItem';\nDropdownItem.propTypes = DropdownItem_propTypes;\nDropdownItem.defaultProps = DropdownItem_defaultProps;\n/* harmony default export */ var src_DropdownItem = (DropdownItem);\n// CONCATENATED MODULE: ./src/Dropdown.js\n\n\nvar Dropdown_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Dropdown.js\";\n\n\n\n\n\n\n\n\n\n\n\n\nvar Dropdown_propTypes = {\n  /** @default 'dropdown' */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * Determines the direction and location of the Menu in relation to it's Toggle.\n   */\n  drop: prop_types_default.a.oneOf(['up', 'left', 'right', 'down']),\n  as: prop_types_default.a.elementType,\n\n  /**\n   * Align the menu to the right side of the Dropdown toggle\n   */\n  alignRight: prop_types_default.a.bool,\n\n  /**\n   * Whether or not the Dropdown is visible.\n   *\n   * @controllable onToggle\n   */\n  show: prop_types_default.a.bool,\n\n  /**\n   * Allow Dropdown to flip in case of an overlapping on the reference element. For more information refer to\n   * Popper.js's flip [docs](https://popper.js.org/popper-documentation.html#modifiers..flip.enabled).\n   *\n   */\n  flip: prop_types_default.a.bool,\n\n  /**\n   * A callback fired when the Dropdown wishes to change visibility. Called with the requested\n   * `show` value, the DOM event, and the source that fired it: `'click'`,`'keydown'`,`'rootClose'`, or `'select'`.\n   *\n   * ```js\n   * function(\n   *   isOpen: boolean,\n   *   event: SyntheticEvent,\n   *   metadata: {\n   *     source: 'select' | 'click' | 'rootClose' | 'keydown'\n   *   }\n   * ): void\n   * ```\n   *\n   * @controllable show\n   */\n  onToggle: prop_types_default.a.func,\n\n  /**\n   * A callback fired when a menu item is selected.\n   *\n   * ```js\n   * (eventKey: any, event: Object) => any\n   * ```\n   */\n  onSelect: prop_types_default.a.func,\n\n  /**\n   * Controls the focus behavior for when the Dropdown is opened. Set to\n   * `true` to always focus the first menu item, `keyboard` to focus only when\n   * navigating via the keyboard, or `false` to disable completely\n   *\n   * The Default behavior is `false` **unless** the Menu has a `role=\"menu\"`\n   * where it will default to `keyboard` to match the recommended [ARIA Authoring practices](https://www.w3.org/TR/wai-aria-practices-1.1/#menubutton).\n   */\n  focusFirstItemOnShow: prop_types_default.a.oneOf([false, true, 'keyboard']),\n\n  /** @private */\n  navbar: prop_types_default.a.bool\n};\nvar Dropdown_defaultProps = {\n  as: 'div',\n  navbar: false\n};\nvar Dropdown_Dropdown = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (uncontrolledProps, ref) {\n  var _useUncontrolled = hook_default()(uncontrolledProps, {\n    show: 'onToggle'\n  }),\n      bsPrefix = _useUncontrolled.bsPrefix,\n      drop = _useUncontrolled.drop,\n      show = _useUncontrolled.show,\n      className = _useUncontrolled.className,\n      alignRight = _useUncontrolled.alignRight,\n      onSelect = _useUncontrolled.onSelect,\n      onToggle = _useUncontrolled.onToggle,\n      focusFirstItemOnShow = _useUncontrolled.focusFirstItemOnShow,\n      Component = _useUncontrolled.as,\n      _4 = _useUncontrolled.navbar,\n      props = _objectWithoutPropertiesLoose(_useUncontrolled, [\"bsPrefix\", \"drop\", \"show\", \"className\", \"alignRight\", \"onSelect\", \"onToggle\", \"focusFirstItemOnShow\", \"as\", \"navbar\"]);\n\n  var onSelectCtx = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(src_SelectableContext);\n  var prefix = useBootstrapPrefix(bsPrefix, 'dropdown');\n  var handleToggle = useEventCallback_default()(function (nextShow, event, source) {\n    if (source === void 0) {\n      source = event.type;\n    }\n\n    if (event.currentTarget === document) source = 'rootClose';\n    onToggle(nextShow, event, {\n      source: source\n    });\n  });\n  var handleSelect = useEventCallback_default()(function (key, event) {\n    if (onSelectCtx) onSelectCtx(key, event);\n    if (onSelect) onSelect(key, event);\n    handleToggle(false, event, 'select');\n  });\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_SelectableContext.Provider, {\n    value: handleSelect,\n    __source: {\n      fileName: Dropdown_jsxFileName,\n      lineNumber: 122\n    },\n    __self: this\n  }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Dropdown_default.a.ControlledComponent, {\n    drop: drop,\n    show: show,\n    alignEnd: alignRight,\n    onToggle: handleToggle,\n    focusFirstItemOnShow: focusFirstItemOnShow,\n    itemSelector: \".\" + prefix + \"-item:not(.disabled):not(:disabled)\",\n    __source: {\n      fileName: Dropdown_jsxFileName,\n      lineNumber: 123\n    },\n    __self: this\n  }, function (_ref) {\n    var dropdownProps = _ref.props;\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, dropdownProps, {\n      ref: ref,\n      className: classnames_default()(className, show && 'show', (!drop || drop === 'down') && prefix, drop === 'up' && 'dropup', drop === 'right' && 'dropright', drop === 'left' && 'dropleft'),\n      __source: {\n        fileName: Dropdown_jsxFileName,\n        lineNumber: 132\n      },\n      __self: this\n    }));\n  }));\n});\nDropdown_Dropdown.displayName = 'Dropdown';\nDropdown_Dropdown.propTypes = Dropdown_propTypes;\nDropdown_Dropdown.defaultProps = Dropdown_defaultProps;\nDropdown_Dropdown.Toggle = src_DropdownToggle;\nDropdown_Dropdown.Menu = src_DropdownMenu;\nDropdown_Dropdown.Item = src_DropdownItem;\nDropdown_Dropdown.Header = createWithBsPrefix('dropdown-header', {\n  defaultProps: {\n    role: 'heading'\n  }\n});\nDropdown_Dropdown.Divider = createWithBsPrefix('dropdown-divider', {\n  defaultProps: {\n    role: 'separator'\n  }\n});\n/* harmony default export */ var src_Dropdown = (Dropdown_Dropdown);\n// CONCATENATED MODULE: ./src/DropdownButton.js\n\n\nvar DropdownButton_jsxFileName = \"/Users/jason/src/react-bootstrap/src/DropdownButton.js\";\n\n\n\nvar DropdownButton_propTypes = {\n  /**\n   * An html id attribute for the Toggle button, necessary for assistive technologies, such as screen readers.\n   * @type {string|number}\n   * @required\n   */\n  id: prop_types_default.a.any,\n\n  /** An `href` passed to the Toggle component */\n  href: prop_types_default.a.string,\n\n  /** An `onClick` handler passed to the Toggle component */\n  onClick: prop_types_default.a.func,\n\n  /** The content of the non-toggle Button.  */\n  title: prop_types_default.a.node.isRequired,\n\n  /** Disables both Buttons  */\n  disabled: prop_types_default.a.bool,\n\n  /** An ARIA accessible role applied to the Menu component. When set to 'menu', The dropdown */\n  menuRole: prop_types_default.a.string,\n\n  /**\n   *  Which event when fired outside the component will cause it to be closed.\n   *\n   * _see [DropdownMenu](#menu-props) for more details_\n   */\n  rootCloseEvent: prop_types_default.a.string,\n\n  /** @ignore */\n  bsPrefix: prop_types_default.a.string,\n\n  /** @ignore */\n  variant: prop_types_default.a.string,\n\n  /** @ignore */\n  size: prop_types_default.a.string\n};\n/**\n * A convenience component for simple or general use dropdowns. Renders a `Button` toggle and all `children`\n * are passed directly to the default `Dropdown.Menu`.\n *\n * _All unknown props are passed through to the `Dropdown` component._ Only\n * the Button `variant`, `size` and `bsPrefix` props are passed to the toggle,\n * along with menu related props are passed to the `Dropdown.Menu`\n */\n\nvar DropdownButton = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var title = _ref.title,\n      children = _ref.children,\n      bsPrefix = _ref.bsPrefix,\n      rootCloseEvent = _ref.rootCloseEvent,\n      variant = _ref.variant,\n      size = _ref.size,\n      menuRole = _ref.menuRole,\n      disabled = _ref.disabled,\n      href = _ref.href,\n      id = _ref.id,\n      props = _objectWithoutPropertiesLoose(_ref, [\"title\", \"children\", \"bsPrefix\", \"rootCloseEvent\", \"variant\", \"size\", \"menuRole\", \"disabled\", \"href\", \"id\"]);\n\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Dropdown, _extends({\n    ref: ref\n  }, props, {\n    __source: {\n      fileName: DropdownButton_jsxFileName,\n      lineNumber: 69\n    },\n    __self: this\n  }), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Dropdown.Toggle, {\n    id: id,\n    href: href,\n    size: size,\n    variant: variant,\n    disabled: disabled,\n    childBsPrefix: bsPrefix,\n    __source: {\n      fileName: DropdownButton_jsxFileName,\n      lineNumber: 70\n    },\n    __self: this\n  }, title), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Dropdown.Menu, {\n    role: menuRole,\n    rootCloseEvent: rootCloseEvent,\n    __source: {\n      fileName: DropdownButton_jsxFileName,\n      lineNumber: 80\n    },\n    __self: this\n  }, children));\n});\nDropdownButton.displayName = 'DropdownButton';\nDropdownButton.propTypes = DropdownButton_propTypes;\n/* harmony default export */ var src_DropdownButton = (DropdownButton);\n// CONCATENATED MODULE: ./src/FormContext.js\n\nvar FormContext = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createContext({\n  controlId: undefined\n});\n/* harmony default export */ var src_FormContext = (FormContext);\n// CONCATENATED MODULE: ./src/FormGroup.js\n\n\nvar FormGroup_jsxFileName = \"/Users/jason/src/react-bootstrap/src/FormGroup.js\";\n\n\n\n\n\nvar FormGroup_propTypes = {\n  /**\n   * @default 'form-group'\n   */\n  bsPrefix: prop_types_default.a.string,\n  as: prop_types_default.a.elementType,\n\n  /**\n   * Sets `id` on `<FormControl>` and `htmlFor` on `<FormGroup.Label>`.\n   */\n  controlId: prop_types_default.a.string,\n\n  /**\n   * The FormGroup `ref` will be forwarded to the underlying element.\n   * Unless the FormGroup is rendered `as` a composite component,\n   * it will be a DOM node, when resolved.\n   *\n   * @type {ReactRef}\n   * @alias ref\n   */\n  _ref: prop_types_default.a.any\n};\nvar FormGroup_defaultProps = {\n  as: 'div'\n};\nvar FormGroup = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      children = _ref.children,\n      controlId = _ref.controlId,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"children\", \"controlId\", \"as\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-group');\n  var context = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useMemo\"])(function () {\n    return {\n      controlId: controlId\n    };\n  }, [controlId]);\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_FormContext.Provider, {\n    value: context,\n    __source: {\n      fileName: FormGroup_jsxFileName,\n      lineNumber: 45\n    },\n    __self: this\n  }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n    ref: ref,\n    className: classnames_default()(className, bsPrefix),\n    __source: {\n      fileName: FormGroup_jsxFileName,\n      lineNumber: 46\n    },\n    __self: this\n  }), children));\n});\nFormGroup.displayName = 'FormGroup';\nFormGroup.propTypes = FormGroup_propTypes;\nFormGroup.defaultProps = FormGroup_defaultProps;\n/* harmony default export */ var src_FormGroup = (FormGroup);\n// EXTERNAL MODULE: ./node_modules/warning/warning.js\nvar warning = __webpack_require__(21);\n\n// CONCATENATED MODULE: ./src/Feedback.js\n\n\nvar Feedback_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Feedback.js\";\n\n\n\nvar Feedback_propTypes = {\n  /**\n   * Specify whether the feedback is for valid or invalid fields\n   *\n   * @type {('valid'|'invalid')}\n   */\n  type: prop_types_default.a.string.isRequired,\n  as: prop_types_default.a.elementType\n};\nvar Feedback_defaultProps = {\n  type: 'valid',\n  as: 'div'\n};\nvar Feedback = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var Component = _ref.as,\n      className = _ref.className,\n      type = _ref.type,\n      props = _objectWithoutPropertiesLoose(_ref, [\"as\", \"className\", \"type\"]);\n\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n    ref: ref,\n    className: classnames_default()(className, type && type + \"-feedback\"),\n    __source: {\n      fileName: Feedback_jsxFileName,\n      lineNumber: 22\n    },\n    __self: this\n  }));\n});\nFeedback.displayName = 'Feedback';\nFeedback.propTypes = Feedback_propTypes;\nFeedback.defaultProps = Feedback_defaultProps;\n/* harmony default export */ var src_Feedback = (Feedback);\n// CONCATENATED MODULE: ./src/FormControl.js\n\n\nvar FormControl_jsxFileName = \"/Users/jason/src/react-bootstrap/src/FormControl.js\";\n\n\n\n\n\n\n\nvar FormControl_propTypes = {\n  /**\n   * @default {'form-control'}\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * The FormControl `ref` will be forwarded to the underlying input element,\n   * which means unless `as` is a composite component,\n   * it will be a DOM node, when resolved.\n   *\n   * @type {ReactRef}\n   * @alias ref\n   */\n  _ref: prop_types_default.a.any,\n\n  /**\n   * Input size variants\n   *\n   * @type {('sm'|'lg')}\n   */\n  size: prop_types_default.a.string,\n\n  /**\n   * The underlying HTML element to use when rendering the FormControl.\n   *\n   * @type {('input'|'textarea'|elementType)}\n   */\n  as: prop_types_default.a.elementType,\n\n  /**\n   * Render the input as plain text. Generally used along side `readOnly`.\n   */\n  plaintext: prop_types_default.a.bool,\n\n  /** Make the control readonly */\n  readOnly: prop_types_default.a.bool,\n\n  /** Make the control disabled */\n  disabled: prop_types_default.a.bool,\n\n  /**\n   * The `value` attribute of underlying input\n   *\n   * @controllable onChange\n   * */\n  value: prop_types_default.a.string,\n\n  /** A callback fired when the `value` prop changes */\n  onChange: prop_types_default.a.func,\n\n  /**\n   * The HTML input `type`, which is only relevant if `as` is `'input'` (the default).\n   */\n  type: prop_types_default.a.string,\n\n  /**\n   * Uses `controlId` from `<FormGroup>` if not explicitly specified.\n   */\n  id: prop_types_default.a.string,\n\n  /** Add \"valid\" validation styles to the control */\n  isValid: prop_types_default.a.bool,\n\n  /** Add \"invalid\" validation styles to the control and accompanying label */\n  isInvalid: prop_types_default.a.bool\n};\nvar FormControl_defaultProps = {\n  as: 'input'\n};\nvar FormControl = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      type = _ref.type,\n      size = _ref.size,\n      id = _ref.id,\n      className = _ref.className,\n      isValid = _ref.isValid,\n      isInvalid = _ref.isInvalid,\n      plaintext = _ref.plaintext,\n      readOnly = _ref.readOnly,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"type\", \"size\", \"id\", \"className\", \"isValid\", \"isInvalid\", \"plaintext\", \"readOnly\", \"as\"]);\n\n  var _useContext = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(src_FormContext),\n      controlId = _useContext.controlId;\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-control');\n  var classes;\n\n  if (plaintext) {\n    var _classes;\n\n    classes = (_classes = {}, _classes[bsPrefix + \"-plaintext\"] = true, _classes);\n  } else if (type === 'file') {\n    var _classes2;\n\n    classes = (_classes2 = {}, _classes2[bsPrefix + \"-file\"] = true, _classes2);\n  } else {\n    var _classes3;\n\n    classes = (_classes3 = {}, _classes3[bsPrefix] = true, _classes3[bsPrefix + \"-\" + size] = size, _classes3);\n  }\n\n   false ? undefined : void 0;\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n    type: type,\n    ref: ref,\n    readOnly: readOnly,\n    id: id || controlId,\n    className: classnames_default()(className, classes, isValid && \"is-valid\", isInvalid && \"is-invalid\"),\n    __source: {\n      fileName: FormControl_jsxFileName,\n      lineNumber: 120\n    },\n    __self: this\n  }));\n});\nFormControl.displayName = 'FormControl';\nFormControl.propTypes = FormControl_propTypes;\nFormControl.defaultProps = FormControl_defaultProps;\nFormControl.Feedback = src_Feedback;\n/* harmony default export */ var src_FormControl = (FormControl);\n// CONCATENATED MODULE: ./src/FormCheckInput.js\n\n\nvar FormCheckInput_jsxFileName = \"/Users/jason/src/react-bootstrap/src/FormCheckInput.js\";\n\n\n\n\n\nvar FormCheckInput_propTypes = {\n  /**\n   * @default 'form-check-input'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /** A HTML id attribute, necessary for proper form accessibility. */\n  id: prop_types_default.a.string,\n\n  /** The type of checkable. */\n  type: prop_types_default.a.oneOf(['radio', 'checkbox']).isRequired,\n\n  /**\n   * A convenience prop shortcut for adding `position-static` to the input, for\n   * correct styling when used without an FormCheckLabel\n   */\n  isStatic: prop_types_default.a.bool,\n\n  /** Manually style the input as valid */\n  isValid: prop_types_default.a.bool.isRequired,\n\n  /** Manually style the input as invalid */\n  isInvalid: prop_types_default.a.bool.isRequired\n};\nvar FormCheckInput_defaultProps = {\n  type: 'checkbox'\n};\nvar FormCheckInput = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var id = _ref.id,\n      bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      isValid = _ref.isValid,\n      isInvalid = _ref.isInvalid,\n      isStatic = _ref.isStatic,\n      props = _objectWithoutPropertiesLoose(_ref, [\"id\", \"bsPrefix\", \"className\", \"isValid\", \"isInvalid\", \"isStatic\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-check-input');\n\n  var _useContext = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(src_FormContext),\n      controlId = _useContext.controlId,\n      custom = _useContext.custom;\n\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"input\", _extends({}, props, {\n    ref: ref,\n    id: id || controlId,\n    className: classnames_default()(className, !custom && bsPrefix, custom && 'custom-control-input', isValid && 'is-valid', isInvalid && 'is-invalid', isStatic && 'position-static'),\n    __source: {\n      fileName: FormCheckInput_jsxFileName,\n      lineNumber: 47\n    },\n    __self: this\n  }));\n});\nFormCheckInput.displayName = 'FormCheckInput';\nFormCheckInput.propTypes = FormCheckInput_propTypes;\nFormCheckInput.defaultProps = FormCheckInput_defaultProps;\n/* harmony default export */ var src_FormCheckInput = (FormCheckInput);\n// CONCATENATED MODULE: ./src/FormCheckLabel.js\n\n\nvar FormCheckLabel_jsxFileName = \"/Users/jason/src/react-bootstrap/src/FormCheckLabel.js\";\n\n\n\n\n\nvar FormCheckLabel_propTypes = {\n  /**\n   * @default 'form-check-input'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /** The HTML for attribute for associating the label with an input */\n  htmlFor: prop_types_default.a.string\n};\nvar FormCheckLabel_defaultProps = {\n  type: 'checkbox'\n};\nvar FormCheckLabel = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      htmlFor = _ref.htmlFor,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"htmlFor\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-check-label');\n\n  var _useContext = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(src_FormContext),\n      controlId = _useContext.controlId,\n      custom = _useContext.custom;\n\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"label\", _extends({}, props, {\n    ref: ref,\n    htmlFor: htmlFor || controlId,\n    className: classnames_default()(className, !custom && bsPrefix, custom && 'custom-control-label'),\n    __source: {\n      fileName: FormCheckLabel_jsxFileName,\n      lineNumber: 29\n    },\n    __self: this\n  }));\n});\nFormCheckLabel.displayName = 'FormCheckLabel';\nFormCheckLabel.propTypes = FormCheckLabel_propTypes;\nFormCheckLabel.defaultProps = FormCheckLabel_defaultProps;\n/* harmony default export */ var src_FormCheckLabel = (FormCheckLabel);\n// CONCATENATED MODULE: ./src/FormCheck.js\n\n\nvar FormCheck_jsxFileName = \"/Users/jason/src/react-bootstrap/src/FormCheck.js\";\n\n\n\n\n\n\n\n\nvar FormCheck_propTypes = {\n  /**\n   * @default 'form-check'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * The FormCheck `ref` will be forwarded to the underlying input element,\n   * which means it will be a DOM node, when resolved.\n   *\n   * @type {ReactRef}\n   * @alias ref\n   */\n  _ref: prop_types_default.a.any,\n\n  /** A HTML id attribute, necessary for proper form accessibility. */\n  id: prop_types_default.a.string,\n\n  /**\n   * Provide a function child to manually handle the layout of the FormCheck's inner components.\n   *\n   * ````\n   * <FormCheck>\n   *   <FormCheck.Input isInvalid type={radio} />\n   *   <FormCheck.Label>Allow us to contact you?</FormCheck.Label>\n   *   <Feedback type=\"invalid\">Yo this is required</Feedback>\n   * </FormCheck>\n   * ```\n   */\n  children: prop_types_default.a.node,\n  inline: prop_types_default.a.bool,\n  disabled: prop_types_default.a.bool,\n  title: prop_types_default.a.string,\n  label: prop_types_default.a.node,\n\n  /** Use Bootstrap's custom form elements to replace the browser defaults */\n  custom: prop_types_default.a.bool,\n\n  /** The type of checkable. */\n  type: prop_types_default.a.oneOf(['radio', 'checkbox']).isRequired,\n\n  /** Manually style the input as valid */\n  isValid: prop_types_default.a.bool.isRequired,\n\n  /** Manually style the input as invalid */\n  isInvalid: prop_types_default.a.bool.isRequired,\n\n  /** A message to display when the input is in a validation state */\n  feedback: prop_types_default.a.node\n};\nvar FormCheck_defaultProps = {\n  type: 'checkbox',\n  inline: false,\n  disabled: false,\n  isValid: false,\n  isInvalid: false,\n  title: ''\n};\nvar FormCheck = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var id = _ref.id,\n      bsPrefix = _ref.bsPrefix,\n      inline = _ref.inline,\n      disabled = _ref.disabled,\n      isValid = _ref.isValid,\n      isInvalid = _ref.isInvalid,\n      feedback = _ref.feedback,\n      className = _ref.className,\n      style = _ref.style,\n      title = _ref.title,\n      type = _ref.type,\n      label = _ref.label,\n      children = _ref.children,\n      custom = _ref.custom,\n      props = _objectWithoutPropertiesLoose(_ref, [\"id\", \"bsPrefix\", \"inline\", \"disabled\", \"isValid\", \"isInvalid\", \"feedback\", \"className\", \"style\", \"title\", \"type\", \"label\", \"children\", \"custom\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-check');\n\n  var _useContext = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(src_FormContext),\n      controlId = _useContext.controlId;\n\n  var innerFormContext = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useMemo\"])(function () {\n    return {\n      controlId: id || controlId,\n      custom: custom\n    };\n  }, [controlId, custom, id]);\n  var hasLabel = label != null && label !== false && !children;\n  var input = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_FormCheckInput, _extends({}, props, {\n    type: type,\n    ref: ref,\n    isValid: isValid,\n    isInvalid: isInvalid,\n    isStatic: !hasLabel,\n    disabled: disabled,\n    __source: {\n      fileName: FormCheck_jsxFileName,\n      lineNumber: 107\n    },\n    __self: this\n  }));\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_FormContext.Provider, {\n    value: innerFormContext,\n    __source: {\n      fileName: FormCheck_jsxFileName,\n      lineNumber: 119\n    },\n    __self: this\n  }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", {\n    style: style,\n    className: classnames_default()(className, !custom && bsPrefix, custom && \"custom-control custom-\" + type, inline && (custom ? 'custom-control' : bsPrefix) + \"-inline\"),\n    __source: {\n      fileName: FormCheck_jsxFileName,\n      lineNumber: 120\n    },\n    __self: this\n  }, children || external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Fragment, {\n    __source: {\n      fileName: FormCheck_jsxFileName,\n      lineNumber: 130\n    },\n    __self: this\n  }, input, hasLabel && external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_FormCheckLabel, {\n    title: title,\n    __source: {\n      fileName: FormCheck_jsxFileName,\n      lineNumber: 133\n    },\n    __self: this\n  }, label), (isValid || isInvalid) && external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Feedback, {\n    type: isValid ? 'valid' : 'invalid',\n    __source: {\n      fileName: FormCheck_jsxFileName,\n      lineNumber: 136\n    },\n    __self: this\n  }, feedback))));\n});\nFormCheck.displayName = 'FormCheck';\nFormCheck.propTypes = FormCheck_propTypes;\nFormCheck.defaultProps = FormCheck_defaultProps;\nFormCheck.Input = src_FormCheckInput;\nFormCheck.Label = src_FormCheckLabel;\n/* harmony default export */ var src_FormCheck = (FormCheck);\n// CONCATENATED MODULE: ./src/FormLabel.js\n\n\nvar FormLabel_jsxFileName = \"/Users/jason/src/react-bootstrap/src/FormLabel.js\";\n\n\n\n\n\n\n\nvar FormLabel_propTypes = {\n  /**\n   * @default 'form-label'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * Uses `controlId` from `<FormGroup>` if not explicitly specified.\n   */\n  htmlFor: prop_types_default.a.string,\n\n  /**\n   * Renders the FormLabel as a `<Col>` component (accepting all the same props),\n   * as well as adding additional styling for horizontal forms.\n   */\n  column: prop_types_default.a.bool,\n\n  /**\n   * The FormLabel `ref` will be forwarded to the underlying element.\n   * Unless the FormLabel is rendered `as` a composite component,\n   * it will be a DOM node, when resolved.\n   *\n   * @type {ReactRef}\n   * @alias ref\n   */\n  _ref: prop_types_default.a.any,\n\n  /**\n   * Hides the label visually while still allowing it to be\n   * read by assistive technologies.\n   */\n  srOnly: prop_types_default.a.bool\n};\nvar FormLabel_defaultProps = {\n  column: false,\n  srOnly: false\n};\nvar FormLabel = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      column = _ref.column,\n      srOnly = _ref.srOnly,\n      className = _ref.className,\n      htmlFor = _ref.htmlFor,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"column\", \"srOnly\", \"className\", \"htmlFor\"]);\n\n  var _useContext = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(src_FormContext),\n      controlId = _useContext.controlId;\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-label');\n  var classes = classnames_default()(className, bsPrefix, srOnly && 'sr-only', column && 'col-form-label');\n  if (column) return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Col, _extends({}, props, {\n    className: classes,\n    as: \"label\",\n    __source: {\n      fileName: FormLabel_jsxFileName,\n      lineNumber: 62\n    },\n    __self: this\n  }));\n   false ? undefined : void 0;\n  return (// eslint-disable-next-line jsx-a11y/label-has-for, jsx-a11y/label-has-associated-control\n    external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"label\", _extends({}, props, {\n      htmlFor: htmlFor || controlId,\n      ref: ref,\n      className: classes,\n      __source: {\n        fileName: FormLabel_jsxFileName,\n        lineNumber: 70\n      },\n      __self: this\n    }))\n  );\n});\nFormLabel.displayName = 'FormLabel';\nFormLabel.propTypes = FormLabel_propTypes;\nFormLabel.defaultProps = FormLabel_defaultProps;\n/* harmony default export */ var src_FormLabel = (FormLabel);\n// CONCATENATED MODULE: ./src/FormText.js\n\n\nvar FormText_jsxFileName = \"/Users/jason/src/react-bootstrap/src/FormText.js\";\n\n\n\n\nvar FormText_propTypes = {\n  /** @default 'form-text' */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * The FormText `ref` will be forwarded to the underlying element.\n   * Unless the FormText is rendered `as` a composite component,\n   * it will be a DOM node, when resolved.\n   *\n   * @type {ReactRef}\n   * @alias ref\n   */\n  _ref: prop_types_default.a.any,\n\n  /**\n   * A convenience prop for add the `text-muted` class,\n   * since it's so commonly used here.\n   */\n  muted: prop_types_default.a.bool,\n  as: prop_types_default.a.elementType\n};\nvar FormText_defaultProps = {\n  as: 'small'\n};\nvar FormText = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"as\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-text');\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n    ref: ref,\n    className: classnames_default()(className, bsPrefix),\n    __source: {\n      fileName: FormText_jsxFileName,\n      lineNumber: 38\n    },\n    __self: this\n  }));\n});\nFormText.displayName = 'FormText';\nFormText.propTypes = FormText_propTypes;\nFormText.defaultProps = FormText_defaultProps;\n/* harmony default export */ var src_FormText = (FormText);\n// CONCATENATED MODULE: ./src/Form.js\n\n\nvar Form_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Form.js\";\n\n\n\n\n\n\n\n\n\n\nvar Form_propTypes = {\n  /**\n   * @default {'form'}\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * The Form `ref` will be forwarded to the underlying element,\n   * which means, unless it's rendered `as` a composite component,\n   * it will be a DOM node, when resolved.\n   *\n   * @type {ReactRef}\n   * @alias ref\n   */\n  _ref: prop_types_default.a.any,\n\n  /**\n   * Display the series of labels, form controls,\n   * and buttons on a single horizontal row\n   */\n  inline: prop_types_default.a.bool,\n\n  /**\n   * Mark a form as having been validated. Setting it to `true` will\n   * toggle any validation styles on the forms elements.\n   */\n  validated: prop_types_default.a.bool,\n  as: prop_types_default.a.elementType\n};\nvar Form_defaultProps = {\n  inline: false,\n  as: 'form'\n};\nvar Form = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      inline = _ref.inline,\n      className = _ref.className,\n      validated = _ref.validated,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"inline\", \"className\", \"validated\", \"as\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form');\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n    ref: ref,\n    className: classnames_default()(className, validated && 'was-validated', inline && bsPrefix + \"-inline\"),\n    __source: {\n      fileName: Form_jsxFileName,\n      lineNumber: 55\n    },\n    __self: this\n  }));\n});\nForm.displayName = 'Form';\nForm.propTypes = Form_propTypes;\nForm.defaultProps = Form_defaultProps;\nForm.Row = createWithBsPrefix('form-row');\nForm.Group = src_FormGroup;\nForm.Control = src_FormControl;\nForm.Check = src_FormCheck;\nForm.Label = src_FormLabel;\nForm.Text = src_FormText;\n/* harmony default export */ var src_Form = (Form);\n// CONCATENATED MODULE: ./src/Container.js\n\n\nvar Container_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Container.js\";\n\n\n\n\nvar Container_propTypes = {\n  /**\n   * @default 'container'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * Allow the Container to fill all of it's availble horizontal space.\n   */\n  fluid: prop_types_default.a.bool,\n\n  /**\n   * You can use a custom element for this component\n   */\n  as: prop_types_default.a.elementType\n};\nvar Container_defaultProps = {\n  as: 'div',\n  fluid: false\n};\nvar Container = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      fluid = _ref.fluid,\n      Component = _ref.as,\n      className = _ref.className,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"fluid\", \"as\", \"className\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'container');\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({\n    ref: ref\n  }, props, {\n    className: classnames_default()(className, fluid ? prefix + \"-fluid\" : prefix),\n    __source: {\n      fileName: Container_jsxFileName,\n      lineNumber: 32\n    },\n    __self: this\n  }));\n});\nContainer.displayName = 'Container';\nContainer.propTypes = Container_propTypes;\nContainer.defaultProps = Container_defaultProps;\n/* harmony default export */ var src_Container = (Container);\n// CONCATENATED MODULE: ./src/Image.js\n\n\n\nvar Image_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Image.js\";\n\n\n\n\n\nvar Image_Image =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Image, _React$Component);\n\n  function Image() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = Image.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        bsPrefix = _this$props.bsPrefix,\n        className = _this$props.className,\n        fluid = _this$props.fluid,\n        rounded = _this$props.rounded,\n        roundedCircle = _this$props.roundedCircle,\n        thumbnail = _this$props.thumbnail,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"bsPrefix\", \"className\", \"fluid\", \"rounded\", \"roundedCircle\", \"thumbnail\"]);\n\n    var classes = classnames_default()(fluid && bsPrefix + \"-fluid\", rounded && \"rounded\", roundedCircle && \"rounded-circle\", thumbnail && bsPrefix + \"-thumbnail\");\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"img\", _extends({}, props, {\n      className: classnames_default()(className, classes),\n      __source: {\n        fileName: Image_jsxFileName,\n        lineNumber: 60\n      },\n      __self: this\n    }));\n  };\n\n  return Image;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nImage_Image.propTypes = {\n  /**\n   * @default 'img'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * Sets image as fluid image.\n   */\n  fluid: prop_types_default.a.bool,\n\n  /**\n   * Sets image shape as rounded.\n   */\n  rounded: prop_types_default.a.bool,\n\n  /**\n   * Sets image shape as circle.\n   */\n  roundedCircle: prop_types_default.a.bool,\n\n  /**\n   * Sets image shape as thumbnail.\n   */\n  thumbnail: prop_types_default.a.bool\n};\nImage_Image.defaultProps = {\n  fluid: false,\n  rounded: false,\n  roundedCircle: false,\n  thumbnail: false\n};\n/* harmony default export */ var src_Image = (createBootstrapComponent(Image_Image, 'img'));\n// CONCATENATED MODULE: ./src/FigureImage.js\n\n\nvar FigureImage_jsxFileName = \"/Users/jason/src/react-bootstrap/src/FigureImage.js\";\n\n\n\n\nvar FigureImage_propTypes = {\n  /**\n   * @default 'img'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * Sets image as fluid image.\n   */\n  fluid: prop_types_default.a.bool,\n\n  /**\n   * Sets image shape as rounded.\n   */\n  rounded: prop_types_default.a.bool,\n\n  /**\n   * Sets image shape as circle.\n   */\n  roundedCircle: prop_types_default.a.bool,\n\n  /**\n   * Sets image shape as thumbnail.\n   */\n  thumbnail: prop_types_default.a.bool\n};\nvar FigureImage_defaultProps = {\n  fluid: true\n};\nvar FigureImage = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var className = _ref.className,\n      props = _objectWithoutPropertiesLoose(_ref, [\"className\"]);\n\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Image, _extends({\n    ref: ref\n  }, props, {\n    className: classnames_default()(className, 'figure-img'),\n    __source: {\n      fileName: FigureImage_jsxFileName,\n      lineNumber: 37\n    },\n    __self: this\n  }));\n});\nFigureImage.displayName = 'FigureImage';\nFigureImage.propTypes = FigureImage_propTypes;\nFigureImage.defaultProps = FigureImage_defaultProps;\n/* harmony default export */ var src_FigureImage = (FigureImage);\n// CONCATENATED MODULE: ./src/FigureCaption.js\n\nvar FigureCaption = createWithBsPrefix('figure-caption', {\n  Component: 'figcaption'\n});\n/* harmony default export */ var src_FigureCaption = (FigureCaption);\n// CONCATENATED MODULE: ./src/Figure.js\n\n\n\nvar Figure = createWithBsPrefix('figure', {\n  Component: 'figure'\n});\nFigure.Image = src_FigureImage;\nFigure.Caption = src_FigureCaption;\n/* harmony default export */ var src_Figure = (Figure);\n// CONCATENATED MODULE: ./src/InputGroup.js\n\n\n\nvar InputGroup_jsxFileName = \"/Users/jason/src/react-bootstrap/src/InputGroup.js\";\n\n\n\n\n\n/**\n *\n * @property {InputGroupAppend} Append\n * @property {InputGroupPrepend} Prepend\n * @property {InputGroupText} Text\n * @property {InputGroupRadio} Radio\n * @property {InputGroupCheckbox} Checkbox\n */\n\nvar InputGroup_InputGroup =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(InputGroup, _React$Component);\n\n  function InputGroup() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = InputGroup.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        bsPrefix = _this$props.bsPrefix,\n        size = _this$props.size,\n        className = _this$props.className,\n        Component = _this$props.as,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"bsPrefix\", \"size\", \"className\", \"as\"]);\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n      className: classnames_default()(className, bsPrefix, size && bsPrefix + \"-\" + size),\n      __source: {\n        fileName: InputGroup_jsxFileName,\n        lineNumber: 40\n      },\n      __self: this\n    }));\n  };\n\n  return InputGroup;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nInputGroup_InputGroup.propTypes = {\n  /** @default 'input-group' */\n  bsPrefix: prop_types_default.a.string.isRequired,\n\n  /**\n   * Control the size of buttons and form elements from the top-level .\n   *\n   * @type {('sm'|'lg')}\n   */\n  size: prop_types_default.a.string,\n  as: prop_types_default.a.elementType\n};\nInputGroup_InputGroup.defaultProps = {\n  as: 'div'\n};\nvar InputGroupAppend = createWithBsPrefix('input-group-append');\nvar InputGroupPrepend = createWithBsPrefix('input-group-prepend');\nvar InputGroupText = createWithBsPrefix('input-group-text', {\n  Component: 'span'\n});\n\nvar InputGroup_InputGroupCheckbox = function InputGroupCheckbox(props) {\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(InputGroupText, {\n    __source: {\n      fileName: InputGroup_jsxFileName,\n      lineNumber: 61\n    },\n    __self: this\n  }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"input\", _extends({\n    type: \"checkbox\"\n  }, props, {\n    __source: {\n      fileName: InputGroup_jsxFileName,\n      lineNumber: 62\n    },\n    __self: this\n  })));\n};\n\nvar InputGroup_InputGroupRadio = function InputGroupRadio(props) {\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(InputGroupText, {\n    __source: {\n      fileName: InputGroup_jsxFileName,\n      lineNumber: 67\n    },\n    __self: this\n  }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"input\", _extends({\n    type: \"radio\"\n  }, props, {\n    __source: {\n      fileName: InputGroup_jsxFileName,\n      lineNumber: 68\n    },\n    __self: this\n  })));\n};\n\nvar DecoratedInputGroup = createBootstrapComponent(InputGroup_InputGroup, 'input-group');\nDecoratedInputGroup.Text = InputGroupText;\nDecoratedInputGroup.Radio = InputGroup_InputGroupRadio;\nDecoratedInputGroup.Checkbox = InputGroup_InputGroupCheckbox;\nDecoratedInputGroup.Append = InputGroupAppend;\nDecoratedInputGroup.Prepend = InputGroupPrepend;\n/* harmony default export */ var src_InputGroup = (DecoratedInputGroup);\n// CONCATENATED MODULE: ./src/Jumbotron.js\n\n\n\nvar Jumbotron_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Jumbotron.js\";\n\n\n\n\nvar Jumbotron_propTypes = {\n  as: prop_types_default.a.elementType,\n\n  /** Make the jumbotron full width, and without rounded corners */\n  fluid: prop_types_default.a.bool,\n\n  /** @default 'jumbotron' */\n  bsPrefix: prop_types_default.a.string\n};\nvar Jumbotron_defaultProps = {\n  as: 'div',\n  fluid: false\n};\n\nvar Jumbotron_Jumbotron =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Jumbotron, _React$Component);\n\n  function Jumbotron() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = Jumbotron.prototype;\n\n  _proto.render = function render() {\n    var _classes;\n\n    var _this$props = this.props,\n        Component = _this$props.as,\n        className = _this$props.className,\n        fluid = _this$props.fluid,\n        bsPrefix = _this$props.bsPrefix,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"as\", \"className\", \"fluid\", \"bsPrefix\"]);\n\n    var classes = (_classes = {}, _classes[bsPrefix] = true, _classes[bsPrefix + \"-fluid\"] = fluid, _classes);\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n      className: classnames_default()(className, classes),\n      __source: {\n        fileName: Jumbotron_jsxFileName,\n        lineNumber: 27\n      },\n      __self: this\n    }));\n  };\n\n  return Jumbotron;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nJumbotron_Jumbotron.propTypes = Jumbotron_propTypes;\nJumbotron_Jumbotron.defaultProps = Jumbotron_defaultProps;\n/* harmony default export */ var src_Jumbotron = (createBootstrapComponent(Jumbotron_Jumbotron, 'jumbotron'));\n// EXTERNAL MODULE: ./node_modules/dom-helpers/query/querySelectorAll.js\nvar querySelectorAll = __webpack_require__(9);\nvar querySelectorAll_default = /*#__PURE__*/__webpack_require__.n(querySelectorAll);\n\n// EXTERNAL MODULE: ./node_modules/@restart/context/mapContextToProps.js\nvar mapContextToProps = __webpack_require__(55);\nvar mapContextToProps_default = /*#__PURE__*/__webpack_require__.n(mapContextToProps);\n\n// CONCATENATED MODULE: ./src/TabContext.js\n\nvar TabContext = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createContext(null);\n/* harmony default export */ var src_TabContext = (TabContext);\n// CONCATENATED MODULE: ./src/AbstractNav.js\n\n\n\nvar AbstractNav_jsxFileName = \"/Users/jason/src/react-bootstrap/src/AbstractNav.js\";\n\n\n\n\n\n\n\n\nvar noop = function noop() {};\n\nvar AbstractNav_AbstractNav =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(AbstractNav, _React$Component);\n\n  function AbstractNav() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n    _this.handleSelect = function (key, event) {\n      var _this$props = _this.props,\n          onSelect = _this$props.onSelect,\n          parentOnSelect = _this$props.parentOnSelect;\n      if (key == null) return;\n      if (onSelect) onSelect(key, event);\n      if (parentOnSelect) parentOnSelect(key, event);\n    };\n\n    _this.handleKeyDown = function (event) {\n      var onKeyDown = _this.props.onKeyDown;\n      if (onKeyDown) onKeyDown(event);\n      var nextActiveChild;\n\n      switch (event.key) {\n        case 'ArrowLeft':\n        case 'ArrowUp':\n          nextActiveChild = _this.getNextActiveChild(-1);\n          break;\n\n        case 'ArrowRight':\n        case 'ArrowDown':\n          nextActiveChild = _this.getNextActiveChild(1);\n          break;\n\n        default:\n          return;\n      }\n\n      if (!nextActiveChild) return;\n      event.preventDefault();\n\n      _this.handleSelect(nextActiveChild.dataset.rbEventKey, event);\n\n      _this._needsRefocus = true;\n    };\n\n    _this.attachRef = function (ref) {\n      _this.listNode = ref;\n    };\n\n    _this.state = {\n      navContext: null\n    };\n    return _this;\n  }\n\n  AbstractNav.getDerivedStateFromProps = function getDerivedStateFromProps(_ref) {\n    var activeKey = _ref.activeKey,\n        getControlledId = _ref.getControlledId,\n        getControllerId = _ref.getControllerId,\n        role = _ref.role;\n    return {\n      navContext: {\n        role: role,\n        // used by NavLink to determine it's role\n        activeKey: makeEventKey(activeKey),\n        getControlledId: getControlledId || noop,\n        getControllerId: getControllerId || noop\n      }\n    };\n  };\n\n  var _proto = AbstractNav.prototype;\n\n  _proto.componentDidUpdate = function componentDidUpdate() {\n    if (!this._needsRefocus || !this.listNode) return;\n    var activeChild = this.listNode.querySelector('[data-rb-event-key].active');\n    if (activeChild) activeChild.focus();\n  };\n\n  _proto.getNextActiveChild = function getNextActiveChild(offset) {\n    if (!this.listNode) return null;\n    var items = querySelectorAll_default()(this.listNode, '[data-rb-event-key]:not(.disabled)');\n    var activeChild = this.listNode.querySelector('.active');\n    var index = items.indexOf(activeChild);\n    if (index === -1) return null;\n    var nextIndex = index + offset;\n    if (nextIndex >= items.length) nextIndex = 0;\n    if (nextIndex < 0) nextIndex = items.length - 1;\n    return items[nextIndex];\n  };\n\n  _proto.render = function render() {\n    var _this$props2 = this.props,\n        Component = _this$props2.as,\n        _ = _this$props2.onSelect,\n        _0 = _this$props2.parentOnSelect,\n        _1 = _this$props2.getControlledId,\n        _2 = _this$props2.getControllerId,\n        _3 = _this$props2.activeKey,\n        props = _objectWithoutPropertiesLoose(_this$props2, [\"as\", \"onSelect\", \"parentOnSelect\", \"getControlledId\", \"getControllerId\", \"activeKey\"]);\n\n    if (props.role === 'tablist') {\n      props.onKeyDown = this.handleKeyDown;\n    }\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_SelectableContext.Provider, {\n      value: this.handleSelect,\n      __source: {\n        fileName: AbstractNav_jsxFileName,\n        lineNumber: 129\n      },\n      __self: this\n    }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_NavContext.Provider, {\n      value: this.state.navContext,\n      __source: {\n        fileName: AbstractNav_jsxFileName,\n        lineNumber: 130\n      },\n      __self: this\n    }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n      onKeyDown: this.handleKeyDown,\n      ref: this.attachRef,\n      __source: {\n        fileName: AbstractNav_jsxFileName,\n        lineNumber: 131\n      },\n      __self: this\n    }))));\n  };\n\n  return AbstractNav;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nAbstractNav_AbstractNav.propTypes = {\n  onSelect: prop_types_default.a.func.isRequired,\n  as: prop_types_default.a.elementType,\n\n  /** @private */\n  onKeyDown: prop_types_default.a.func,\n\n  /** @private */\n  parentOnSelect: prop_types_default.a.func,\n\n  /** @private */\n  getControlledId: prop_types_default.a.func,\n\n  /** @private */\n  getControllerId: prop_types_default.a.func,\n\n  /** @private */\n  activeKey: prop_types_default.a.any\n};\nAbstractNav_AbstractNav.defaultProps = {\n  as: 'ul'\n};\n/* harmony default export */ var src_AbstractNav = (mapContextToProps_default()([src_SelectableContext, src_TabContext], function (parentOnSelect, tabContext, _ref2) {\n  var role = _ref2.role;\n  if (!tabContext) return {\n    parentOnSelect: parentOnSelect\n  };\n  var activeKey = tabContext.activeKey,\n      getControllerId = tabContext.getControllerId,\n      getControlledId = tabContext.getControlledId;\n  return {\n    activeKey: activeKey,\n    parentOnSelect: parentOnSelect,\n    role: role || 'tablist',\n    // pass these two through to avoid having to listen to\n    // both Tab and Nav contexts in NavLink\n    getControllerId: getControllerId,\n    getControlledId: getControlledId\n  };\n}, AbstractNav_AbstractNav));\n// CONCATENATED MODULE: ./src/AbstractNavItem.js\n\n\nvar AbstractNavItem_jsxFileName = \"/Users/jason/src/react-bootstrap/src/AbstractNavItem.js\";\n\n\n\n\n\n\nvar AbstractNavItem_propTypes = {\n  active: prop_types_default.a.bool,\n  role: prop_types_default.a.string,\n  href: prop_types_default.a.string,\n  tabIndex: prop_types_default.a.string,\n  eventKey: prop_types_default.a.any,\n  onclick: prop_types_default.a.func,\n  as: prop_types_default.a.any,\n  onClick: prop_types_default.a.func,\n  onSelect: prop_types_default.a.func\n};\nvar AbstractNavItem_defaultProps = {\n  disabled: false\n};\nvar AbstractNavItem = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var active = _ref.active,\n      className = _ref.className,\n      tabIndex = _ref.tabIndex,\n      eventKey = _ref.eventKey,\n      onSelect = _ref.onSelect,\n      onClick = _ref.onClick,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"active\", \"className\", \"tabIndex\", \"eventKey\", \"onSelect\", \"onClick\", \"as\"]);\n\n  var navKey = makeEventKey(eventKey, props.href);\n  var parentOnSelect = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(src_SelectableContext);\n  var navContext = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(src_NavContext);\n  var isActive = active;\n\n  if (navContext) {\n    if (!props.role && navContext.role === 'tablist') props.role = 'tab';\n    props['data-rb-event-key'] = navKey;\n    props.id = navContext.getControllerId(navKey);\n    props['aria-controls'] = navContext.getControlledId(navKey);\n    isActive = active == null && navKey != null ? navContext.activeKey === navKey : active;\n  }\n\n  if (props.role === 'tab') {\n    props.tabIndex = isActive ? tabIndex : -1;\n    props['aria-selected'] = isActive;\n  }\n\n  var handleOnclick = useEventCallback_default()(function (e) {\n    if (onClick) onClick(e);\n    if (navKey == null) return;\n    if (onSelect) onSelect(navKey, e);\n    if (parentOnSelect) parentOnSelect(navKey, e);\n  });\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n    ref: ref,\n    onClick: handleOnclick,\n    className: classnames_default()(className, isActive && 'active'),\n    __source: {\n      fileName: AbstractNavItem_jsxFileName,\n      lineNumber: 72\n    },\n    __self: this\n  }));\n});\nAbstractNavItem.propTypes = AbstractNavItem_propTypes;\nAbstractNavItem.defaultProps = AbstractNavItem_defaultProps;\n/* harmony default export */ var src_AbstractNavItem = (AbstractNavItem);\n// CONCATENATED MODULE: ./src/ListGroupItem.js\n\n\n\nvar ListGroupItem_jsxFileName = \"/Users/jason/src/react-bootstrap/src/ListGroupItem.js\";\n\n\n\n\n\n\n\nvar ListGroupItem_ListGroupItem =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(ListGroupItem, _React$Component);\n\n  function ListGroupItem() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n    _this.handleClick = function (event) {\n      var _this$props = _this.props,\n          onClick = _this$props.onClick,\n          disabled = _this$props.disabled;\n\n      if (disabled) {\n        event.preventDefault();\n        event.stopPropagation();\n        return;\n      }\n\n      if (onClick) onClick(event);\n    };\n\n    return _this;\n  }\n\n  var _proto = ListGroupItem.prototype;\n\n  _proto.render = function render() {\n    var _this$props2 = this.props,\n        bsPrefix = _this$props2.bsPrefix,\n        active = _this$props2.active,\n        disabled = _this$props2.disabled,\n        className = _this$props2.className,\n        variant = _this$props2.variant,\n        action = _this$props2.action,\n        as = _this$props2.as,\n        eventKey = _this$props2.eventKey,\n        props = _objectWithoutPropertiesLoose(_this$props2, [\"bsPrefix\", \"active\", \"disabled\", \"className\", \"variant\", \"action\", \"as\", \"eventKey\"]);\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_AbstractNavItem, _extends({}, props, {\n      eventKey: makeEventKey(eventKey, props.href) // eslint-disable-next-line\n      ,\n      as: as || (action ? props.href ? 'a' : 'button' : 'div'),\n      onClick: this.handleClick,\n      className: classnames_default()(className, bsPrefix, active && 'active', disabled && 'disabled', variant && bsPrefix + \"-\" + variant, action && bsPrefix + \"-action\"),\n      __source: {\n        fileName: ListGroupItem_jsxFileName,\n        lineNumber: 80\n      },\n      __self: this\n    }));\n  };\n\n  return ListGroupItem;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nListGroupItem_ListGroupItem.propTypes = {\n  /**\n   * @default 'list-group-item'\n   */\n  bsPrefix: prop_types_default.a.string.isRequired,\n\n  /**\n   * Sets contextual classes for list item\n   * @type {('primary'|'secondary'|'success'|'danger'|'warning'|'info'|'dark'|'light')}\n   */\n  variant: prop_types_default.a.string,\n\n  /**\n   * Marks a ListGroupItem as actionable, applying additional hover, active and disabled styles\n   * for links and buttons.\n   */\n  action: prop_types_default.a.bool,\n\n  /**\n   * Sets list item as active\n   */\n  active: prop_types_default.a.bool,\n\n  /**\n   * Sets list item state as disabled\n   */\n  disabled: prop_types_default.a.bool,\n  eventKey: prop_types_default.a.string,\n  onClick: prop_types_default.a.func,\n\n  /**\n   * You can use a custom element type for this component. For none `action` items, items render as `li`.\n   * For actions the default is an achor or button element depending on whether a `href` is provided.\n   *\n   * @default {'div' | 'a' | 'button'}\n   */\n  as: prop_types_default.a.elementType\n};\nListGroupItem_ListGroupItem.defaultProps = {\n  variant: null,\n  active: false,\n  disabled: false\n};\n/* harmony default export */ var src_ListGroupItem = (createBootstrapComponent(ListGroupItem_ListGroupItem, 'list-group-item'));\n// CONCATENATED MODULE: ./src/ListGroup.js\n\n\n\nvar ListGroup_jsxFileName = \"/Users/jason/src/react-bootstrap/src/ListGroup.js\";\n\n\n\n\n\n\n\n\nvar ListGroup_ListGroup =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(ListGroup, _React$Component);\n\n  function ListGroup() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = ListGroup.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        className = _this$props.className,\n        bsPrefix = _this$props.bsPrefix,\n        variant = _this$props.variant,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"className\", \"bsPrefix\", \"variant\"]);\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_AbstractNav, _extends({}, props, {\n      className: classnames_default()(className, bsPrefix, variant && bsPrefix + \"-\" + variant),\n      __source: {\n        fileName: ListGroup_jsxFileName,\n        lineNumber: 40\n      },\n      __self: this\n    }));\n  };\n\n  return ListGroup;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nListGroup_ListGroup.propTypes = {\n  /**\n   * @default 'list-group'\n   */\n  bsPrefix: prop_types_default.a.string.isRequired,\n\n  /**\n   * Adds a variant to the list-group\n   *\n   * @type {('flush')}\n   */\n  variant: prop_types_default.a.oneOf(['flush', null]),\n\n  /**\n   * You can use a custom element type for this component.\n   */\n  as: prop_types_default.a.elementType\n};\nListGroup_ListGroup.defaultProps = {\n  as: 'div',\n  variant: null\n};\nvar DecoratedListGroup = uncontrollable_default()(createBootstrapComponent(ListGroup_ListGroup, 'list-group'), {\n  activeKey: 'onSelect'\n});\nDecoratedListGroup.Item = src_ListGroupItem;\n/* harmony default export */ var src_ListGroup = (DecoratedListGroup);\n// CONCATENATED MODULE: ./src/Media.js\n\n\nvar Media_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Media.js\";\n\n\n\n\n\nvar Media_propTypes = {\n  /**\n   * @default 'media'\n   */\n  bsPrefix: prop_types_default.a.string,\n  as: prop_types_default.a.elementType\n};\nvar Media_defaultProps = {\n  as: 'div'\n};\nvar Media = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"as\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'media');\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n    ref: ref,\n    className: classnames_default()(className, prefix),\n    __source: {\n      fileName: Media_jsxFileName,\n      lineNumber: 25\n    },\n    __self: this\n  }));\n});\nMedia.displayName = 'Media';\nMedia.propTypes = Media_propTypes;\nMedia.defaultProps = Media_defaultProps;\nMedia.Body = createWithBsPrefix('media-body');\n/* harmony default export */ var src_Media = (Media);\n// EXTERNAL MODULE: ./node_modules/dom-helpers/events/index.js\nvar events = __webpack_require__(25);\nvar events_default = /*#__PURE__*/__webpack_require__.n(events);\n\n// EXTERNAL MODULE: ./node_modules/dom-helpers/ownerDocument.js\nvar ownerDocument = __webpack_require__(16);\nvar ownerDocument_default = /*#__PURE__*/__webpack_require__.n(ownerDocument);\n\n// EXTERNAL MODULE: ./node_modules/dom-helpers/util/inDOM.js\nvar inDOM = __webpack_require__(10);\nvar inDOM_default = /*#__PURE__*/__webpack_require__.n(inDOM);\n\n// EXTERNAL MODULE: ./node_modules/dom-helpers/util/scrollbarSize.js\nvar scrollbarSize = __webpack_require__(18);\nvar scrollbarSize_default = /*#__PURE__*/__webpack_require__.n(scrollbarSize);\n\n// EXTERNAL MODULE: ./node_modules/react-overlays/Modal.js\nvar react_overlays_Modal = __webpack_require__(56);\nvar Modal_default = /*#__PURE__*/__webpack_require__.n(react_overlays_Modal);\n\n// CONCATENATED MODULE: ./src/ModalBody.js\n\n/* harmony default export */ var ModalBody = (createWithBsPrefix('modal-body'));\n// CONCATENATED MODULE: ./src/ModalDialog.js\n\n\nvar ModalDialog_jsxFileName = \"/Users/jason/src/react-bootstrap/src/ModalDialog.js\";\n\n\n\n\nvar ModalDialog_propTypes = {\n  /** @default 'modal' */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * Specifies a large or small modal.\n   *\n   * @type ('sm'|'lg')\n   */\n  size: prop_types_default.a.string,\n\n  /**\n   * Specify whether the Component should be vertically centered\n   */\n  centered: prop_types_default.a.bool,\n\n  /**\n   * Allows scrolling the `<Modal.Body>` instead of the entire Modal when overflowing.\n   */\n  scrollable: prop_types_default.a.bool\n};\nvar ModalDialog = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      centered = _ref.centered,\n      size = _ref.size,\n      children = _ref.children,\n      scrollable = _ref.scrollable,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"centered\", \"size\", \"children\", \"scrollable\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'modal');\n  var dialogClass = bsPrefix + \"-dialog\";\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", _extends({}, props, {\n    ref: ref,\n    className: classnames_default()(dialogClass, className, size && bsPrefix + \"-\" + size, centered && dialogClass + \"-centered\", scrollable && dialogClass + \"-scrollable\"),\n    __source: {\n      fileName: ModalDialog_jsxFileName,\n      lineNumber: 38\n    },\n    __self: this\n  }), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", {\n    className: classnames_default()(bsPrefix + \"-content\"),\n    __source: {\n      fileName: ModalDialog_jsxFileName,\n      lineNumber: 49\n    },\n    __self: this\n  }, children));\n});\nModalDialog.displayName = 'ModalDialog';\nModalDialog.propTypes = ModalDialog_propTypes;\n/* harmony default export */ var src_ModalDialog = (ModalDialog);\n// CONCATENATED MODULE: ./src/ModalFooter.js\n\n/* harmony default export */ var ModalFooter = (createWithBsPrefix('modal-footer'));\n// CONCATENATED MODULE: ./src/ModalContext.js\n\nvar ModalContext = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createContext({\n  onHide: function onHide() {}\n});\n/* harmony default export */ var src_ModalContext = (ModalContext);\n// CONCATENATED MODULE: ./src/ModalHeader.js\n\n\nvar ModalHeader_jsxFileName = \"/Users/jason/src/react-bootstrap/src/ModalHeader.js\";\n\n\n\n\n\n\n\nvar ModalHeader_propTypes = {\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * Provides an accessible label for the close\n   * button. It is used for Assistive Technology when the label text is not\n   * readable.\n   */\n  closeLabel: prop_types_default.a.string,\n\n  /**\n   * Specify whether the Component should contain a close button\n   */\n  closeButton: prop_types_default.a.bool,\n\n  /**\n   * A Callback fired when the close button is clicked. If used directly inside\n   * a Modal component, the onHide will automatically be propagated up to the\n   * parent Modal `onHide`.\n   */\n  onHide: prop_types_default.a.func\n};\nvar ModalHeader_defaultProps = {\n  closeLabel: 'Close',\n  closeButton: false\n};\nvar ModalHeader = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      closeLabel = _ref.closeLabel,\n      closeButton = _ref.closeButton,\n      onHide = _ref.onHide,\n      className = _ref.className,\n      children = _ref.children,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"closeLabel\", \"closeButton\", \"onHide\", \"className\", \"children\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'modal-header');\n  var context = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(src_ModalContext);\n  var handleClick = useEventCallback_default()(function () {\n    if (context) context.onHide();\n    if (onHide) onHide();\n  });\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", _extends({\n    ref: ref\n  }, props, {\n    className: classnames_default()(className, bsPrefix),\n    __source: {\n      fileName: ModalHeader_jsxFileName,\n      lineNumber: 61\n    },\n    __self: this\n  }), children, closeButton && external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_CloseButton, {\n    label: closeLabel,\n    onClick: handleClick,\n    __source: {\n      fileName: ModalHeader_jsxFileName,\n      lineNumber: 65\n    },\n    __self: this\n  }));\n});\nModalHeader.displayName = 'ModalHeader';\nModalHeader.propTypes = ModalHeader_propTypes;\nModalHeader.defaultProps = ModalHeader_defaultProps;\n/* harmony default export */ var src_ModalHeader = (ModalHeader);\n// CONCATENATED MODULE: ./src/ModalTitle.js\n\n\nvar ModalTitle_DivStyledAsH4 = divWithClassName('h4');\n/* harmony default export */ var ModalTitle = (createWithBsPrefix('modal-title', {\n  Component: ModalTitle_DivStyledAsH4\n}));\n// EXTERNAL MODULE: ./node_modules/react-overlays/ModalManager.js\nvar ModalManager = __webpack_require__(37);\nvar ModalManager_default = /*#__PURE__*/__webpack_require__.n(ModalManager);\n\n// CONCATENATED MODULE: ./src/utils/BootstrapModalManager.js\n\n\n\n\n\nvar Selector = {\n  FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n  STICKY_CONTENT: '.sticky-top',\n  NAVBAR_TOGGLER: '.navbar-toggler'\n};\n\nvar BootstrapModalManager_BootstrapModalManager =\n/*#__PURE__*/\nfunction (_ModalManager) {\n  _inheritsLoose(BootstrapModalManager, _ModalManager);\n\n  function BootstrapModalManager() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _ModalManager.call.apply(_ModalManager, [this].concat(args)) || this;\n\n    _this.adjustAndStore = function (prop, element, adjust) {\n      var actual = element.style[prop];\n      element.dataset[prop] = actual;\n      style_default()(element, prop, parseFloat(style_default()(element, prop)) + adjust + \"px\");\n    };\n\n    _this.restore = function (prop, element) {\n      var value = element.dataset[prop];\n\n      if (value !== undefined) {\n        delete element.dataset[prop];\n        style_default()(element, prop, value);\n      }\n    };\n\n    return _this;\n  }\n\n  var _proto = BootstrapModalManager.prototype;\n\n  _proto.setContainerStyle = function setContainerStyle(containerState, container) {\n    var _this2 = this;\n\n    _ModalManager.prototype.setContainerStyle.call(this, containerState, container);\n\n    if (!containerState.overflowing) return;\n    var size = scrollbarSize_default()();\n    querySelectorAll_default()(container, Selector.FIXED_CONTENT).forEach(function (el) {\n      return _this2.adjustAndStore('paddingRight', el, size);\n    });\n    querySelectorAll_default()(container, Selector.STICKY_CONTENT).forEach(function (el) {\n      return _this2.adjustAndStore('margingRight', el, -size);\n    });\n    querySelectorAll_default()(container, Selector.NAVBAR_TOGGLER).forEach(function (el) {\n      return _this2.adjustAndStore('margingRight', el, size);\n    });\n  };\n\n  _proto.removeContainerStyle = function removeContainerStyle(containerState, container) {\n    var _this3 = this;\n\n    _ModalManager.prototype.removeContainerStyle.call(this, containerState, container);\n\n    querySelectorAll_default()(container, Selector.FIXED_CONTENT).forEach(function (el) {\n      return _this3.restore('paddingRight', el);\n    });\n    querySelectorAll_default()(container, Selector.STICKY_CONTENT).forEach(function (el) {\n      return _this3.restore('margingRight', el);\n    });\n    querySelectorAll_default()(container, Selector.NAVBAR_TOGGLER).forEach(function (el) {\n      return _this3.restore('margingRight', el);\n    });\n  };\n\n  return BootstrapModalManager;\n}(ModalManager_default.a);\n\n\n// CONCATENATED MODULE: ./src/Modal.js\n\n\n\nvar Modal_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Modal.js\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Modal_propTypes = {\n  /**\n   * @default 'modal'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * Render a large or small modal.\n   *\n   * @type ('sm'|'lg')\n   */\n  size: prop_types_default.a.string,\n\n  /**\n   * vertically center the Dialog in the window\n   */\n  centered: prop_types_default.a.bool,\n\n  /**\n   * Include a backdrop component. Specify 'static' for a backdrop that doesn't\n   * trigger an \"onHide\" when clicked.\n   */\n  backdrop: prop_types_default.a.oneOf(['static', true, false]),\n\n  /**\n   * Add an optional extra class name to .modal-backdrop\n   * It could end up looking like class=\"modal-backdrop foo-modal-backdrop in\".\n   */\n  backdropClassName: prop_types_default.a.string,\n\n  /**\n   * Close the modal when escape key is pressed\n   */\n  keyboard: prop_types_default.a.bool,\n\n  /**\n   * Allows scrolling the `<Modal.Body>` instead of the entire Modal when overflowing.\n   */\n  scrollable: prop_types_default.a.bool,\n\n  /**\n   * Open and close the Modal with a slide and fade animation.\n   */\n  animation: prop_types_default.a.bool,\n\n  /**\n   * A css class to apply to the Modal dialog DOM node.\n   */\n  dialogClassName: prop_types_default.a.string,\n\n  /**\n   * A Component type that provides the modal content Markup. This is a useful\n   * prop when you want to use your own styles and markup to create a custom\n   * modal component.\n   */\n  dialogAs: prop_types_default.a.elementType,\n\n  /**\n   * When `true` The modal will automatically shift focus to itself when it\n   * opens, and replace it to the last focused element when it closes.\n   * Generally this should never be set to false as it makes the Modal less\n   * accessible to assistive technologies, like screen-readers.\n   */\n  autoFocus: prop_types_default.a.bool,\n\n  /**\n   * When `true` The modal will prevent focus from leaving the Modal while\n   * open. Consider leaving the default value here, as it is necessary to make\n   * the Modal work well with assistive technologies, such as screen readers.\n   */\n  enforceFocus: prop_types_default.a.bool,\n\n  /**\n   * When `true` The modal will restore focus to previously focused element once\n   * modal is hidden\n   */\n  restoreFocus: prop_types_default.a.bool,\n\n  /**\n   * When `true` The modal will show itself.\n   */\n  show: prop_types_default.a.bool,\n\n  /**\n   * A callback fired when the Modal is opening.\n   */\n  onShow: prop_types_default.a.func,\n\n  /**\n   * A callback fired when the header closeButton or non-static backdrop is\n   * clicked. Required if either are specified.\n   */\n  onHide: prop_types_default.a.func,\n\n  /**\n   * A callback fired when the escape key, if specified in `keyboard`, is pressed.\n   */\n  onEscapeKeyDown: prop_types_default.a.func,\n\n  /**\n   * Callback fired before the Modal transitions in\n   */\n  onEnter: prop_types_default.a.func,\n\n  /**\n   * Callback fired as the Modal begins to transition in\n   */\n  onEntering: prop_types_default.a.func,\n\n  /**\n   * Callback fired after the Modal finishes transitioning in\n   */\n  onEntered: prop_types_default.a.func,\n\n  /**\n   * Callback fired right before the Modal transitions out\n   */\n  onExit: prop_types_default.a.func,\n\n  /**\n   * Callback fired as the Modal begins to transition out\n   */\n  onExiting: prop_types_default.a.func,\n\n  /**\n   * Callback fired after the Modal finishes transitioning out\n   */\n  onExited: prop_types_default.a.func,\n\n  /**\n   * A ModalManager instance used to track and manage the state of open\n   * Modals. Useful when customizing how modals interact within a container\n   */\n  manager: prop_types_default.a.object.isRequired,\n\n  /**\n   * @private\n   */\n  container: prop_types_default.a.any\n};\nvar Modal_defaultProps = {\n  show: false,\n  backdrop: true,\n  keyboard: true,\n  autoFocus: true,\n  enforceFocus: true,\n  restoreFocus: true,\n  animation: true,\n  dialogAs: src_ModalDialog,\n  manager: new BootstrapModalManager_BootstrapModalManager()\n};\n/* eslint-disable no-use-before-define, react/no-multi-comp */\n\nfunction DialogTransition(props) {\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Fade, _extends({}, props, {\n    __source: {\n      fileName: Modal_jsxFileName,\n      lineNumber: 176\n    },\n    __self: this\n  }));\n}\n\nfunction BackdropTransition(props) {\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Fade, _extends({}, props, {\n    __source: {\n      fileName: Modal_jsxFileName,\n      lineNumber: 180\n    },\n    __self: this\n  }));\n}\n/* eslint-enable no-use-before-define */\n\n\nvar Modal_Modal =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Modal, _React$Component);\n\n  function Modal(_props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, _props, context) || this;\n\n    _this.setModalRef = function (ref) {\n      _this._modal = ref;\n    };\n\n    _this.handleDialogMouseDown = function () {\n      _this._waitingForMouseUp = true;\n    };\n\n    _this.handleMouseUp = function (e) {\n      if (_this._waitingForMouseUp && e.target === _this._modal.dialog) {\n        _this._ignoreBackdropClick = true;\n      }\n\n      _this._waitingForMouseUp = false;\n    };\n\n    _this.handleClick = function (e) {\n      if (_this._ignoreBackdropClick || e.target !== e.currentTarget) {\n        _this._ignoreBackdropClick = false;\n        return;\n      }\n\n      _this.props.onHide();\n    };\n\n    _this.handleEnter = function (node) {\n      var _this$props;\n\n      if (node) {\n        node.style.display = 'block';\n\n        _this.updateDialogStyle(node);\n      }\n\n      for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        args[_key - 1] = arguments[_key];\n      }\n\n      if (_this.props.onEnter) (_this$props = _this.props).onEnter.apply(_this$props, [node].concat(args));\n    };\n\n    _this.handleEntering = function (node) {\n      var _this$props2;\n\n      for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n        args[_key2 - 1] = arguments[_key2];\n      }\n\n      if (_this.props.onEntering) (_this$props2 = _this.props).onEntering.apply(_this$props2, [node].concat(args)); // FIXME: This should work even when animation is disabled.\n\n      events_default.a.on(window, 'resize', _this.handleWindowResize);\n    };\n\n    _this.handleExited = function (node) {\n      var _this$props3;\n\n      if (node) node.style.display = ''; // RHL removes it sometimes\n\n      for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n        args[_key3 - 1] = arguments[_key3];\n      }\n\n      if (_this.props.onExited) (_this$props3 = _this.props).onExited.apply(_this$props3, args); // FIXME: This should work even when animation is disabled.\n\n      events_default.a.off(window, 'resize', _this.handleWindowResize);\n    };\n\n    _this.handleWindowResize = function () {\n      _this.updateDialogStyle(_this._modal.dialog);\n    };\n\n    _this.renderBackdrop = function (props) {\n      var _this$props4 = _this.props,\n          bsPrefix = _this$props4.bsPrefix,\n          backdropClassName = _this$props4.backdropClassName;\n      return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", _extends({}, props, {\n        className: classnames_default()(bsPrefix + \"-backdrop\", backdropClassName),\n        __source: {\n          fileName: Modal_jsxFileName,\n          lineNumber: 282\n        },\n        __self: this\n      }));\n    };\n\n    _this.state = {\n      style: {}\n    };\n    _this.modalContext = {\n      onHide: function onHide() {\n        return _this.props.onHide();\n      }\n    };\n    return _this;\n  }\n\n  var _proto = Modal.prototype;\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    // Clean up the listener if we need to.\n    events_default.a.off(window, 'resize', this.handleWindowResize);\n  };\n\n  _proto.updateDialogStyle = function updateDialogStyle(node) {\n    if (!inDOM_default.a) return;\n    var manager = this.props.manager;\n    var containerIsOverflowing = manager.isContainerOverflowing(this._modal);\n    var modalIsOverflowing = node.scrollHeight > ownerDocument_default()(node).documentElement.clientHeight;\n    this.setState({\n      style: {\n        paddingRight: containerIsOverflowing && !modalIsOverflowing ? scrollbarSize_default()() : undefined,\n        paddingLeft: !containerIsOverflowing && modalIsOverflowing ? scrollbarSize_default()() : undefined\n      }\n    });\n  };\n\n  _proto.render = function render() {\n    var _this$props5 = this.props,\n        bsPrefix = _this$props5.bsPrefix,\n        className = _this$props5.className,\n        style = _this$props5.style,\n        dialogClassName = _this$props5.dialogClassName,\n        children = _this$props5.children,\n        Dialog = _this$props5.dialogAs,\n        show = _this$props5.show,\n        animation = _this$props5.animation,\n        backdrop = _this$props5.backdrop,\n        keyboard = _this$props5.keyboard,\n        manager = _this$props5.manager,\n        onEscapeKeyDown = _this$props5.onEscapeKeyDown,\n        onShow = _this$props5.onShow,\n        onHide = _this$props5.onHide,\n        container = _this$props5.container,\n        autoFocus = _this$props5.autoFocus,\n        enforceFocus = _this$props5.enforceFocus,\n        restoreFocus = _this$props5.restoreFocus,\n        onEntered = _this$props5.onEntered,\n        onExit = _this$props5.onExit,\n        onExiting = _this$props5.onExiting,\n        _ = _this$props5.onExited,\n        _1 = _this$props5.onEntering,\n        _6 = _this$props5.onEnter,\n        _4 = _this$props5.onEntering,\n        _2 = _this$props5.backdropClassName,\n        props = _objectWithoutPropertiesLoose(_this$props5, [\"bsPrefix\", \"className\", \"style\", \"dialogClassName\", \"children\", \"dialogAs\", \"show\", \"animation\", \"backdrop\", \"keyboard\", \"manager\", \"onEscapeKeyDown\", \"onShow\", \"onHide\", \"container\", \"autoFocus\", \"enforceFocus\", \"restoreFocus\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"onEntering\", \"onEnter\", \"onEntering\", \"backdropClassName\"]);\n\n    var clickHandler = backdrop === true ? this.handleClick : null;\n\n    var baseModalStyle = _extends({}, style, this.state.style); // Sets `display` always block when `animation` is false\n\n\n    if (!animation) baseModalStyle.display = 'block';\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_ModalContext.Provider, {\n      value: this.modalContext,\n      __source: {\n        fileName: Modal_jsxFileName,\n        lineNumber: 332\n      },\n      __self: this\n    }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Modal_default.a, _extends({\n      show: show,\n      backdrop: backdrop,\n      container: container,\n      keyboard: keyboard,\n      autoFocus: autoFocus,\n      enforceFocus: enforceFocus,\n      restoreFocus: restoreFocus,\n      onEscapeKeyDown: onEscapeKeyDown,\n      onShow: onShow,\n      onHide: onHide,\n      onEntered: onEntered,\n      onExit: onExit,\n      onExiting: onExiting,\n      manager: manager,\n      ref: this.setModalRef,\n      style: baseModalStyle,\n      className: classnames_default()(className, bsPrefix),\n      containerClassName: bsPrefix + \"-open\",\n      transition: animation ? DialogTransition : undefined,\n      backdropTransition: animation ? BackdropTransition : undefined,\n      renderBackdrop: this.renderBackdrop,\n      onClick: clickHandler,\n      onMouseUp: this.handleMouseUp,\n      onEnter: this.handleEnter,\n      onEntering: this.handleEntering,\n      onExited: this.handleExited\n    }, {\n      __source: {\n        fileName: Modal_jsxFileName,\n        lineNumber: 333\n      },\n      __self: this\n    }), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Dialog, _extends({}, props, {\n      onMouseDown: this.handleDialogMouseDown,\n      className: dialogClassName,\n      __source: {\n        fileName: Modal_jsxFileName,\n        lineNumber: 363\n      },\n      __self: this\n    }), children)));\n  };\n\n  return Modal;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nModal_Modal.propTypes = Modal_propTypes;\nModal_Modal.defaultProps = Modal_defaultProps;\nvar DecoratedModal = createBootstrapComponent(Modal_Modal, 'modal');\nDecoratedModal.Body = ModalBody;\nDecoratedModal.Header = src_ModalHeader;\nDecoratedModal.Title = ModalTitle;\nDecoratedModal.Footer = ModalFooter;\nDecoratedModal.Dialog = src_ModalDialog;\nDecoratedModal.TRANSITION_DURATION = 300;\nDecoratedModal.BACKDROP_TRANSITION_DURATION = 150;\n/* harmony default export */ var src_Modal = (DecoratedModal);\n// EXTERNAL MODULE: ./node_modules/prop-types-extra/lib/all.js\nvar lib_all = __webpack_require__(34);\nvar all_default = /*#__PURE__*/__webpack_require__.n(lib_all);\n\n// CONCATENATED MODULE: ./src/NavItem.js\n\n\nvar NavItem_jsxFileName = \"/Users/jason/src/react-bootstrap/src/NavItem.js\";\n\n\n\n\nvar NavItem_propTypes = {\n  /**\n   * @default 'nav-item'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /** The ARIA role of the component */\n  role: prop_types_default.a.string,\n  as: prop_types_default.a.elementType\n};\nvar NavItem_defaultProps = {\n  as: 'div'\n};\nvar NavItem = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      children = _ref.children,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"children\", \"as\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'nav-item');\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n    ref: ref,\n    className: classnames_default()(className, bsPrefix),\n    __source: {\n      fileName: NavItem_jsxFileName,\n      lineNumber: 27\n    },\n    __self: this\n  }), children);\n});\nNavItem.displayName = 'NavItem';\nNavItem.propTypes = NavItem_propTypes;\nNavItem.defaultProps = NavItem_defaultProps;\n/* harmony default export */ var src_NavItem = (NavItem);\n// CONCATENATED MODULE: ./src/NavLink.js\n\n\nvar NavLink_jsxFileName = \"/Users/jason/src/react-bootstrap/src/NavLink.js\";\n\n\n\n\n\n\nvar NavLink_propTypes = {\n  /**\n   * @default 'nav-link'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * The active state of the NavItem item.\n   */\n  active: prop_types_default.a.bool,\n\n  /**\n   * The disabled state of the NavItem item.\n   */\n  disabled: prop_types_default.a.bool,\n\n  /**\n   * The ARIA role for the `NavLink`, In the context of a 'tablist' parent Nav,\n   * the role defaults to 'tab'\n   * */\n  role: prop_types_default.a.string,\n\n  /** The HTML href attribute for the `NavLink` */\n  href: prop_types_default.a.string,\n\n  /** A callback fired when the `NavLink` is selected.\n   *\n   * ```js\n   * function (eventKey: any, event: SyntheticEvent) {}\n   * ```\n   */\n  onSelect: prop_types_default.a.func,\n\n  /**\n   * Uniquely idenifies the `NavItem` amoungst its siblings,\n   * used to determine and control the active state ofthe parent `Nav`\n   */\n  eventKey: prop_types_default.a.any,\n\n  /** @default 'a' */\n  as: prop_types_default.a.elementType,\n\n  /** @private */\n  innerRef: prop_types_default.a.any\n};\nvar NavLink_defaultProps = {\n  disabled: false,\n  as: src_SafeAnchor\n};\nvar NavLink = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      disabled = _ref.disabled,\n      className = _ref.className,\n      href = _ref.href,\n      eventKey = _ref.eventKey,\n      onSelect = _ref.onSelect,\n      as = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"disabled\", \"className\", \"href\", \"eventKey\", \"onSelect\", \"as\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'nav-link');\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_AbstractNavItem, _extends({}, props, {\n    href: href,\n    ref: ref,\n    eventKey: eventKey,\n    as: as,\n    disabled: disabled,\n    onSelect: onSelect,\n    className: classnames_default()(className, bsPrefix, disabled && 'disabled'),\n    __source: {\n      fileName: NavLink_jsxFileName,\n      lineNumber: 68\n    },\n    __self: this\n  }));\n});\nNavLink.displayName = 'NavLink';\nNavLink.propTypes = NavLink_propTypes;\nNavLink.defaultProps = NavLink_defaultProps;\n/* harmony default export */ var src_NavLink = (NavLink);\n// CONCATENATED MODULE: ./src/Nav.js\n\n\nvar Nav_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Nav.js\";\n\n\n\n\n\n\n\n\n\n\n\nvar Nav_propTypes = {\n  /**\n   * @default 'nav'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /** @private */\n  navbarBsPrefix: prop_types_default.a.string,\n\n  /** @private */\n  cardHeaderBsPrefix: prop_types_default.a.string,\n\n  /**\n   * The visual variant of the nav items.\n   *\n   * @type {('tabs'|'pills')}\n   */\n  variant: prop_types_default.a.string,\n\n  /**\n   * Marks the NavItem with a matching `eventKey` (or `href` if present) as active.\n   *\n   * @type {string}\n   */\n  activeKey: prop_types_default.a.any,\n\n  /**\n   * Have all `NavItem`s to proportionatly fill all available width.\n   */\n  fill: prop_types_default.a.bool,\n\n  /**\n   * Have all `NavItem`s to evenly fill all available width.\n   *\n   * @type {boolean}\n   */\n  justify: all_default()(prop_types_default.a.bool, function (_ref) {\n    var justify = _ref.justify,\n        navbar = _ref.navbar;\n    return justify && navbar ? Error('justify navbar `Nav`s are not supported') : null;\n  }),\n\n  /**\n   * A callback fired when a NavItem is selected.\n   *\n   * ```js\n   * function (\n   *  Any eventKey,\n   *  SyntheticEvent event?\n   * )\n   * ```\n   */\n  onSelect: prop_types_default.a.func,\n\n  /**\n   * ARIA role for the Nav, in the context of a TabContainer, the default will\n   * be set to \"tablist\", but can be overridden by the Nav when set explicitly.\n   *\n   * When the role is \"tablist\", NavLink focus is managed according to\n   * the ARIA authoring practices for tabs:\n   * https://www.w3.org/TR/2013/WD-wai-aria-practices-20130307/#tabpanel\n   */\n  role: prop_types_default.a.string,\n\n  /**\n   * Apply styling an alignment for use in a Navbar. This prop will be set\n   * automatically when the Nav is used inside a Navbar.\n   */\n  navbar: prop_types_default.a.bool,\n  as: prop_types_default.a.elementType,\n\n  /** @private */\n  onKeyDown: prop_types_default.a.func\n};\nvar Nav_defaultProps = {\n  justify: false,\n  fill: false,\n  as: 'div'\n};\nvar Nav = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (uncontrolledProps, ref) {\n  var _classNames;\n\n  var _useUncontrolled = hook_default()(uncontrolledProps, {\n    activeKey: 'onSelect'\n  }),\n      as = _useUncontrolled.as,\n      bsPrefix = _useUncontrolled.bsPrefix,\n      variant = _useUncontrolled.variant,\n      fill = _useUncontrolled.fill,\n      justify = _useUncontrolled.justify,\n      navbar = _useUncontrolled.navbar,\n      className = _useUncontrolled.className,\n      children = _useUncontrolled.children,\n      activeKey = _useUncontrolled.activeKey,\n      props = _objectWithoutPropertiesLoose(_useUncontrolled, [\"as\", \"bsPrefix\", \"variant\", \"fill\", \"justify\", \"navbar\", \"className\", \"children\", \"activeKey\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'nav');\n  var navbarBsPrefix, cardHeaderBsPrefix;\n  var navbarContext = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(NavbarContext);\n  var cardContext = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(CardContext);\n\n  if (navbarContext) {\n    navbarBsPrefix = navbarContext.bsPrefix;\n    navbar = navbar == null ? true : navbar;\n  } else if (cardContext) {\n    cardHeaderBsPrefix = cardContext.cardHeaderBsPrefix;\n  }\n\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_AbstractNav, _extends({\n    as: as,\n    ref: ref,\n    activeKey: activeKey,\n    className: classnames_default()(className, (_classNames = {}, _classNames[bsPrefix] = !navbar, _classNames[navbarBsPrefix + \"-nav\"] = navbar, _classNames[cardHeaderBsPrefix + \"-\" + variant] = !!cardHeaderBsPrefix, _classNames[bsPrefix + \"-\" + variant] = !!variant, _classNames[bsPrefix + \"-fill\"] = fill, _classNames[bsPrefix + \"-justified\"] = justify, _classNames))\n  }, props, {\n    __source: {\n      fileName: Nav_jsxFileName,\n      lineNumber: 123\n    },\n    __self: this\n  }), children);\n});\nNav.displayName = 'Nav';\nNav.propTypes = Nav_propTypes;\nNav.defaultProps = Nav_defaultProps;\nNav.Item = src_NavItem;\nNav.Link = src_NavLink;\nNav._Nav = Nav; // for Testing until enzyme is working with context\n\n/* harmony default export */ var src_Nav = (Nav);\n// CONCATENATED MODULE: ./src/NavbarBrand.js\n\n\nvar NavbarBrand_jsxFileName = \"/Users/jason/src/react-bootstrap/src/NavbarBrand.js\";\n\n\n\n\nvar NavbarBrand_propTypes = {\n  /** @default 'navbar' */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * An href, when provided the Brand will render as an `<a>` element (unless `as` is provided).\n   */\n  href: prop_types_default.a.string,\n\n  /**\n   * Set a custom element for this component.\n   */\n  as: prop_types_default.a.elementType\n};\nvar NavbarBrand = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      as = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"as\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'navbar-brand');\n  var Component = as || (props.href ? 'a' : 'span');\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n    ref: ref,\n    className: classnames_default()(className, bsPrefix),\n    __source: {\n      fileName: NavbarBrand_jsxFileName,\n      lineNumber: 29\n    },\n    __self: this\n  }));\n});\nNavbarBrand.displayName = 'NavbarBrand';\nNavbarBrand.propTypes = NavbarBrand_propTypes;\n/* harmony default export */ var src_NavbarBrand = (NavbarBrand);\n// CONCATENATED MODULE: ./src/NavbarCollapse.js\n\n\nvar NavbarCollapse_jsxFileName = \"/Users/jason/src/react-bootstrap/src/NavbarCollapse.js\";\n\n\n\n\n\nvar NavbarCollapse_propTypes = {\n  /** @default 'navbar-collapse' */\n  bsPrefix: prop_types_default.a.string\n};\nvar NavbarCollapse = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var children = _ref.children,\n      bsPrefix = _ref.bsPrefix,\n      props = _objectWithoutPropertiesLoose(_ref, [\"children\", \"bsPrefix\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'navbar-collapse');\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(NavbarContext.Consumer, {\n    __source: {\n      fileName: NavbarCollapse_jsxFileName,\n      lineNumber: 17\n    },\n    __self: this\n  }, function (context) {\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Collapse, _extends({\n      in: !!(context && context.expanded)\n    }, props, {\n      __source: {\n        fileName: NavbarCollapse_jsxFileName,\n        lineNumber: 19\n      },\n      __self: this\n    }), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", {\n      ref: ref,\n      className: bsPrefix,\n      __source: {\n        fileName: NavbarCollapse_jsxFileName,\n        lineNumber: 20\n      },\n      __self: this\n    }, children));\n  });\n});\nNavbarCollapse.displayName = 'NavbarCollapse';\nNavbarCollapse.propTypes = NavbarCollapse_propTypes;\n/* harmony default export */ var src_NavbarCollapse = (NavbarCollapse);\n// CONCATENATED MODULE: ./src/NavbarToggle.js\n\n\nvar NavbarToggle_jsxFileName = \"/Users/jason/src/react-bootstrap/src/NavbarToggle.js\";\n\n\n\n\n\n\nvar NavbarToggle_propTypes = {\n  /** @default 'navbar-toggler' */\n  bsPrefix: prop_types_default.a.string,\n\n  /** An accessible ARIA label for the toggler button. */\n  label: prop_types_default.a.string,\n\n  /** @private */\n  onClick: prop_types_default.a.func,\n\n  /**\n   * The toggle content. When empty, the default toggle will be rendered.\n   */\n  children: prop_types_default.a.node,\n  as: prop_types_default.a.elementType\n};\nvar NavbarToggle_defaultProps = {\n  label: 'Toggle navigation',\n  as: 'button'\n};\nvar NavbarToggle = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      children = _ref.children,\n      label = _ref.label,\n      Component = _ref.as,\n      onClick = _ref.onClick,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"children\", \"label\", \"as\", \"onClick\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'navbar-toggler');\n\n  var _ref2 = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(NavbarContext) || {},\n      onToggle = _ref2.onToggle,\n      expanded = _ref2.expanded;\n\n  var handleClick = useEventCallback_default()(function (e) {\n    if (onClick) onClick(e);\n    if (onToggle) onToggle();\n  });\n\n  if (Component === 'button') {\n    props.type = 'button';\n  }\n\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n    ref: ref,\n    onClick: handleClick,\n    \"aria-label\": label,\n    className: classnames_default()(className, bsPrefix, !!expanded && 'collapsed'),\n    __source: {\n      fileName: NavbarToggle_jsxFileName,\n      lineNumber: 51\n    },\n    __self: this\n  }), children || external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"span\", {\n    className: bsPrefix + \"-icon\",\n    __source: {\n      fileName: NavbarToggle_jsxFileName,\n      lineNumber: 58\n    },\n    __self: this\n  }));\n});\nNavbarToggle.displayName = 'NavbarToggle';\nNavbarToggle.propTypes = NavbarToggle_propTypes;\nNavbarToggle.defaultProps = NavbarToggle_defaultProps;\n/* harmony default export */ var src_NavbarToggle = (NavbarToggle);\n// CONCATENATED MODULE: ./src/Navbar.js\n\n\n\nvar Navbar_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Navbar.js\";\n\n\n\n\n\n\n\n\n\n\n\nvar Navbar_propTypes = {\n  /** @default 'navbar' */\n  bsPrefix: prop_types_default.a.string.isRequired,\n\n  /**\n   * The general visual variant a the Navbar.\n   * Use in combination with the `bg` prop, `background-color` utilities,\n   * or your own background styles.\n   *\n   * @type {('light'|'dark')}\n   */\n  variant: prop_types_default.a.string,\n\n  /**\n   * The breakpoint, below which, the Navbar will collapse.\n   * When `true` the Navbar will always be expanded regardless of screen size.\n   */\n  expand: prop_types_default.a.oneOf([true, 'sm', 'md', 'lg', 'xl']).isRequired,\n\n  /**\n   * A convenience prop for adding `bg-*` utility classes since they are so commonly used here.\n   * `light` and `dark` are common choices but any `bg-*` class is supported, including any custom ones you might define.\n   *\n   * Pairs nicely with the `variant` prop.\n   */\n  bg: prop_types_default.a.string,\n\n  /**\n   * Create a fixed navbar along the top or bottom of the screen, that scrolls with the\n   * page. A convenience prop for the `fixed-*` positioning classes.\n   */\n  fixed: prop_types_default.a.oneOf(['top', 'bottom']),\n\n  /**\n   * Position the navbar at the top or bottom of the viewport,\n   * but only after scrolling past it. . A convenience prop for the `sticky-*` positioning classes.\n   *\n   *  __Not supported in <= IE11 and other older browsers without a polyfill__\n   */\n  sticky: prop_types_default.a.oneOf(['top', 'bottom']),\n\n  /**\n   * Set a custom element for this component.\n   */\n  as: prop_types_default.a.elementType,\n\n  /**\n   * A callback fired when the `<Navbar>` body collapses or expands. Fired when\n   * a `<Navbar.Toggle>` is clicked and called with the new `expanded`\n   * boolean value.\n   *\n   * @controllable expanded\n   */\n  onToggle: prop_types_default.a.func,\n\n  /**\n   * A callback fired when a descendant of a child `<Nav>` is selected. Should\n   * be used to execute complex closing or other miscellaneous actions desired\n   * after selecting a descendant of `<Nav>`. Does nothing if no `<Nav>` or `<Nav>`\n   * descendants exist. The callback is called with an eventKey, which is a\n   * prop from the selected `<Nav>` descendant, and an event.\n   *\n   * ```js\n   * function (\n   *  eventKey: mixed,\n   *  event?: SyntheticEvent\n   * )\n   * ```\n   *\n   * For basic closing behavior after all `<Nav>` descendant onSelect events in\n   * mobile viewports, try using collapseOnSelect.\n   *\n   * Note: If you are manually closing the navbar using this `OnSelect` prop,\n   * ensure that you are setting `expanded` to false and not *toggling* between\n   * true and false.\n   */\n  onSelect: prop_types_default.a.func,\n\n  /**\n   * Toggles `expanded` to `false` after the onSelect event of a descendant of a\n   * child `<Nav>` fires. Does nothing if no `<Nav>` or `<Nav>` descendants exist.\n   *\n   * Manually controlling `expanded` via the onSelect callback is recommended instead,\n   * for more complex operations that need to be executed after\n   * the `select` event of `<Nav>` descendants.\n   */\n  collapseOnSelect: prop_types_default.a.bool,\n\n  /**\n   * Controls the visiblity of the navbar body\n   *\n   * @controllable onToggle\n   */\n  expanded: prop_types_default.a.bool,\n\n  /**\n   * The ARIA role for the navbar, will default to 'navigation' for\n   * Navbars whose `as` is something other than `<nav>`.\n   *\n   * @default 'navigation'\n   */\n  role: prop_types_default.a.string\n};\nvar Navbar_defaultProps = {\n  as: 'nav',\n  expand: true,\n  variant: 'light',\n  collapseOnSelect: false\n};\n\nvar Navbar_Navbar =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Navbar, _React$Component);\n\n  function Navbar() {\n    var _this;\n\n    for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n      _args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(_args)) || this;\n\n    _this.handleCollapse = function () {\n      var _this$props = _this.props,\n          onToggle = _this$props.onToggle,\n          expanded = _this$props.expanded,\n          collapseOnSelect = _this$props.collapseOnSelect,\n          onSelect = _this$props.onSelect;\n      if (onSelect) onSelect.apply(void 0, arguments);\n\n      if (collapseOnSelect && expanded) {\n        onToggle(false);\n      }\n    };\n\n    _this.handleToggle = function () {\n      var _this$props2 = _this.props,\n          onToggle = _this$props2.onToggle,\n          expanded = _this$props2.expanded;\n      onToggle(!expanded);\n    };\n\n    _this.state = {\n      navbarContext: {\n        onToggle: _this.handleToggle\n      }\n    };\n    return _this;\n  }\n\n  Navbar.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n    var bsPrefix = _ref.bsPrefix,\n        expanded = _ref.expanded;\n    return {\n      navbarContext: _extends({}, prevState.navbarContext, {\n        bsPrefix: bsPrefix,\n        expanded: expanded\n      })\n    };\n  };\n\n  var _proto = Navbar.prototype;\n\n  _proto.render = function render() {\n    var _this$props3 = this.props,\n        bsPrefix = _this$props3.bsPrefix,\n        expand = _this$props3.expand,\n        variant = _this$props3.variant,\n        bg = _this$props3.bg,\n        fixed = _this$props3.fixed,\n        sticky = _this$props3.sticky,\n        className = _this$props3.className,\n        children = _this$props3.children,\n        Component = _this$props3.as,\n        _1 = _this$props3.expanded,\n        _2 = _this$props3.onToggle,\n        _3 = _this$props3.onSelect,\n        _4 = _this$props3.collapseOnSelect,\n        props = _objectWithoutPropertiesLoose(_this$props3, [\"bsPrefix\", \"expand\", \"variant\", \"bg\", \"fixed\", \"sticky\", \"className\", \"children\", \"as\", \"expanded\", \"onToggle\", \"onSelect\", \"collapseOnSelect\"]); // will result in some false positives but that seems better\n    // than false negatives. strict `undefined` check allows explicit\n    // \"nulling\" of the role if the user really doesn't want one\n\n\n    if (props.role === undefined && Component !== 'nav') {\n      props.role = 'navigation';\n    }\n\n    var expandClass = bsPrefix + \"-expand\";\n    if (typeof expand === 'string') expandClass = expandClass + \"-\" + expand;\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(NavbarContext.Provider, {\n      value: this.state.navbarContext,\n      __source: {\n        fileName: Navbar_jsxFileName,\n        lineNumber: 190\n      },\n      __self: this\n    }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_SelectableContext.Provider, {\n      value: this.handleCollapse,\n      __source: {\n        fileName: Navbar_jsxFileName,\n        lineNumber: 191\n      },\n      __self: this\n    }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n      className: classnames_default()(className, bsPrefix, expand && expandClass, variant && bsPrefix + \"-\" + variant, bg && \"bg-\" + bg, sticky && \"sticky-\" + sticky, fixed && \"fixed-\" + fixed),\n      __source: {\n        fileName: Navbar_jsxFileName,\n        lineNumber: 192\n      },\n      __self: this\n    }), children)));\n  };\n\n  return Navbar;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nNavbar_Navbar.propTypes = Navbar_propTypes;\nNavbar_Navbar.defaultProps = Navbar_defaultProps;\nvar DecoratedNavbar = createBootstrapComponent(uncontrollable_default()(Navbar_Navbar, {\n  expanded: 'onToggle'\n}), 'navbar');\nDecoratedNavbar.Brand = src_NavbarBrand;\nDecoratedNavbar.Toggle = src_NavbarToggle;\nDecoratedNavbar.Collapse = src_NavbarCollapse;\nDecoratedNavbar.Text = createWithBsPrefix('navbar-text', {\n  Component: 'span'\n});\n/* harmony default export */ var src_Navbar = (DecoratedNavbar);\n// CONCATENATED MODULE: ./src/NavDropdown.js\n\n\n\nvar NavDropdown_jsxFileName = \"/Users/jason/src/react-bootstrap/src/NavDropdown.js\";\n\n\n\n\n\nvar NavDropdown_propTypes = {\n  /**\n   * An html id attribute for the Toggle button, necessary for assistive technologies, such as screen readers.\n   * @type {string|number}\n   * @required\n   */\n  id: prop_types_default.a.any,\n\n  /** An `onClick` handler passed to the Toggle component */\n  onClick: prop_types_default.a.func,\n\n  /** The content of the non-toggle Button.  */\n  title: prop_types_default.a.node.isRequired,\n\n  /** Disables the toggle NavLink  */\n  disabled: prop_types_default.a.bool,\n\n  /** Style the toggle NavLink as active  */\n  active: prop_types_default.a.bool,\n\n  /** An ARIA accessible role applied to the Menu component. When set to 'menu', The dropdown */\n  menuRole: prop_types_default.a.string,\n\n  /**\n   *  Which event when fired outside the component will cause it to be closed.\n   *\n   * _see [DropdownMenu](#menu-props) for more details_\n   */\n  rootCloseEvent: prop_types_default.a.string,\n\n  /** @ignore */\n  bsPrefix: prop_types_default.a.string\n};\n\nvar NavDropdown_NavDropdown =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(NavDropdown, _React$Component);\n\n  function NavDropdown() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = NavDropdown.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        id = _this$props.id,\n        title = _this$props.title,\n        children = _this$props.children,\n        bsPrefix = _this$props.bsPrefix,\n        rootCloseEvent = _this$props.rootCloseEvent,\n        menuRole = _this$props.menuRole,\n        disabled = _this$props.disabled,\n        active = _this$props.active,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"id\", \"title\", \"children\", \"bsPrefix\", \"rootCloseEvent\", \"menuRole\", \"disabled\", \"active\"]);\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Dropdown, _extends({}, props, {\n      as: src_NavItem,\n      __source: {\n        fileName: NavDropdown_jsxFileName,\n        lineNumber: 57\n      },\n      __self: this\n    }), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Dropdown.Toggle, {\n      id: id,\n      eventKey: null,\n      active: active,\n      disabled: disabled,\n      childBsPrefix: bsPrefix,\n      as: src_NavLink,\n      __source: {\n        fileName: NavDropdown_jsxFileName,\n        lineNumber: 58\n      },\n      __self: this\n    }, title), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Dropdown.Menu, {\n      role: menuRole,\n      rootCloseEvent: rootCloseEvent,\n      __source: {\n        fileName: NavDropdown_jsxFileName,\n        lineNumber: 69\n      },\n      __self: this\n    }, children));\n  };\n\n  return NavDropdown;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nNavDropdown_NavDropdown.propTypes = NavDropdown_propTypes;\nNavDropdown_NavDropdown.Item = src_Dropdown.Item;\nNavDropdown_NavDropdown.Divider = src_Dropdown.Divider;\nNavDropdown_NavDropdown.Header = src_Dropdown.Header;\n/* harmony default export */ var src_NavDropdown = (NavDropdown_NavDropdown);\n// EXTERNAL MODULE: ./node_modules/react-overlays/Overlay.js\nvar Overlay = __webpack_require__(57);\nvar Overlay_default = /*#__PURE__*/__webpack_require__.n(Overlay);\n\n// CONCATENATED MODULE: ./src/Overlay.js\n\n\nvar Overlay_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Overlay.js\";\n\n\n\n\n\n\n\nvar Overlay_propTypes = {\n  /**\n   * A component instance, DOM node, or function that returns either.\n   * The `container` element will have the Overlay appended to it via a React portal.\n   */\n  container: prop_types_default.a.oneOfType([lib[\"componentOrElement\"], prop_types_default.a.func]),\n\n  /**\n   * A component instance, DOM node, or function that returns either.\n   * The overlay will be positioned in relation to the `target`\n   */\n  target: prop_types_default.a.oneOfType([lib[\"componentOrElement\"], prop_types_default.a.func]),\n\n  /**\n   * Set the visibility of the Overlay\n   */\n  show: prop_types_default.a.bool,\n\n  /**\n   * A set of popper options and props passed directly to react-popper's Popper component.\n   */\n  popperConfig: prop_types_default.a.object,\n\n  /**\n   * Specify whether the overlay should trigger onHide when the user clicks outside the overlay\n   */\n  rootClose: prop_types_default.a.bool,\n\n  /**\n   * Specify event for triggering a \"root close\" toggle.\n   */\n  rootCloseEvent: prop_types_default.a.oneOf(['click', 'mousedown']),\n\n  /**\n   * A callback invoked by the overlay when it wishes to be hidden. Required if\n   * `rootClose` is specified.\n   */\n  onHide: prop_types_default.a.func,\n\n  /**\n   * Animate the entering and exiting of the Ovelay. `true` will use the `<Fade>` transition,\n   * or a custom react-transition-group `<Transition>` component can be provided.\n   */\n  transition: prop_types_default.a.oneOfType([prop_types_default.a.bool, lib[\"elementType\"]]),\n\n  /**\n   * Callback fired before the Overlay transitions in\n   */\n  onEnter: prop_types_default.a.func,\n\n  /**\n   * Callback fired as the Overlay begins to transition in\n   */\n  onEntering: prop_types_default.a.func,\n\n  /**\n   * Callback fired after the Overlay finishes transitioning in\n   */\n  onEntered: prop_types_default.a.func,\n\n  /**\n   * Callback fired right before the Overlay transitions out\n   */\n  onExit: prop_types_default.a.func,\n\n  /**\n   * Callback fired as the Overlay begins to transition out\n   */\n  onExiting: prop_types_default.a.func,\n\n  /**\n   * Callback fired after the Overlay finishes transitioning out\n   */\n  onExited: prop_types_default.a.func,\n\n  /**\n   * The placement of the OVerlay in relation to it's `target`.\n   */\n  placement: prop_types_default.a.oneOf(['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'])\n};\nvar Overlay_defaultProps = {\n  transition: src_Fade,\n  rootClose: false,\n  show: false,\n  placement: 'top'\n};\n\nfunction wrapRefs(props, arrowProps) {\n  var ref = props.ref;\n  var aRef = arrowProps.ref;\n\n  props.ref = ref.__wrapped || (ref.__wrapped = function (r) {\n    return ref(Object(external_root_ReactDOM_commonjs2_react_dom_commonjs_react_dom_amd_react_dom_[\"findDOMNode\"])(r));\n  });\n\n  arrowProps.ref = aRef.__wrapped || (aRef.__wrapped = function (r) {\n    return aRef(Object(external_root_ReactDOM_commonjs2_react_dom_commonjs_react_dom_amd_react_dom_[\"findDOMNode\"])(r));\n  });\n}\n\nfunction Overlay_Overlay(_ref) {\n  var overlay = _ref.children,\n      transition = _ref.transition,\n      outerProps = _objectWithoutPropertiesLoose(_ref, [\"children\", \"transition\"]);\n\n  transition = transition === true ? src_Fade : transition || null;\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Overlay_default.a, _extends({}, outerProps, {\n    transition: transition,\n    __source: {\n      fileName: Overlay_jsxFileName,\n      lineNumber: 127\n    },\n    __self: this\n  }), function (_ref2) {\n    var overlayProps = _ref2.props,\n        arrowProps = _ref2.arrowProps,\n        show = _ref2.show,\n        props = _objectWithoutPropertiesLoose(_ref2, [\"props\", \"arrowProps\", \"show\"]);\n\n    wrapRefs(overlayProps, arrowProps);\n    if (typeof overlay === 'function') return overlay(_extends({}, props, overlayProps, {\n      show: show,\n      arrowProps: arrowProps\n    }));\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.cloneElement(overlay, _extends({}, props, overlayProps, {\n      arrowProps: arrowProps,\n      className: classnames_default()(overlay.props.className, !transition && show && 'show'),\n      style: _extends({}, overlay.props.style, overlayProps.style)\n    }));\n  });\n}\n\nOverlay_Overlay.propTypes = Overlay_propTypes;\nOverlay_Overlay.defaultProps = Overlay_defaultProps;\n/* harmony default export */ var src_Overlay = (Overlay_Overlay);\n// EXTERNAL MODULE: ./node_modules/dom-helpers/query/contains.js\nvar contains = __webpack_require__(22);\nvar contains_default = /*#__PURE__*/__webpack_require__.n(contains);\n\n// CONCATENATED MODULE: ./src/OverlayTrigger.js\n\n\n\nvar OverlayTrigger_jsxFileName = \"/Users/jason/src/react-bootstrap/src/OverlayTrigger.js\";\n\n\n\n\n\n\n\nvar OverlayTrigger_RefHolder =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(RefHolder, _React$Component);\n\n  function RefHolder() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = RefHolder.prototype;\n\n  _proto.render = function render() {\n    return this.props.children;\n  };\n\n  return RefHolder;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nvar normalizeDelay = function normalizeDelay(delay) {\n  return delay && typeof delay === 'object' ? delay : {\n    show: delay,\n    hide: delay\n  };\n};\n\nvar triggerType = prop_types_default.a.oneOf(['click', 'hover', 'focus']);\nvar OverlayTrigger_propTypes = {\n  children: prop_types_default.a.element.isRequired,\n\n  /**\n   * Specify which action or actions trigger Overlay visibility\n   *\n   * @type {'hover' | 'click' |'focus' | Array<'hover' | 'click' |'focus'>}\n   */\n  trigger: prop_types_default.a.oneOfType([triggerType, prop_types_default.a.arrayOf(triggerType)]),\n\n  /**\n   * A millisecond delay amount to show and hide the Overlay once triggered\n   */\n  delay: prop_types_default.a.oneOfType([prop_types_default.a.number, prop_types_default.a.shape({\n    show: prop_types_default.a.number,\n    hide: prop_types_default.a.number\n  })]),\n\n  /**\n   * The initial visibility state of the Overlay. For more nuanced visibility\n   * control, consider using the Overlay component directly.\n   */\n  defaultShow: prop_types_default.a.bool,\n\n  /**\n   * An element or text to overlay next to the target.\n   */\n  overlay: prop_types_default.a.oneOfType([prop_types_default.a.func, prop_types_default.a.element.isRequired]),\n\n  /**\n   * A Popper.js config object passed to the the underlying popper instance.\n   */\n  popperConfig: prop_types_default.a.object,\n  // Overridden props from `<Overlay>`.\n\n  /**\n   * @private\n   */\n  target: prop_types_default.a.oneOf([null]),\n\n  /**\n   * @private\n   */\n  onHide: prop_types_default.a.oneOf([null]),\n\n  /**\n   * @private\n   */\n  show: prop_types_default.a.oneOf([null])\n};\nvar OverlayTrigger_defaultProps = {\n  defaultOverlayShown: false,\n  trigger: ['hover', 'focus']\n}; // eslint-disable-next-line react/no-multi-comp\n\nvar OverlayTrigger_OverlayTrigger =\n/*#__PURE__*/\nfunction (_React$Component2) {\n  _inheritsLoose(OverlayTrigger, _React$Component2);\n\n  function OverlayTrigger(props, context) {\n    var _this;\n\n    _this = _React$Component2.call(this, props, context) || this;\n\n    _this.getTarget = function () {\n      return external_root_ReactDOM_commonjs2_react_dom_commonjs_react_dom_amd_react_dom_default.a.findDOMNode(_this.trigger.current);\n    };\n\n    _this.handleShow = function () {\n      clearTimeout(_this._timeout);\n      _this._hoverState = 'show';\n      var delay = normalizeDelay(_this.props.delay);\n\n      if (!delay.show) {\n        _this.show();\n\n        return;\n      }\n\n      _this._timeout = setTimeout(function () {\n        if (_this._hoverState === 'show') _this.show();\n      }, delay.show);\n    };\n\n    _this.handleHide = function () {\n      clearTimeout(_this._timeout);\n      _this._hoverState = 'hide';\n      var delay = normalizeDelay(_this.props.delay);\n\n      if (!delay.hide) {\n        _this.hide();\n\n        return;\n      }\n\n      _this._timeout = setTimeout(function () {\n        if (_this._hoverState === 'hide') _this.hide();\n      }, delay.hide);\n    };\n\n    _this.handleFocus = function (e) {\n      var _this$getChildProps = _this.getChildProps(),\n          onFocus = _this$getChildProps.onFocus;\n\n      _this.handleShow(e);\n\n      if (onFocus) onFocus(e);\n    };\n\n    _this.handleBlur = function (e) {\n      var _this$getChildProps2 = _this.getChildProps(),\n          onBlur = _this$getChildProps2.onBlur;\n\n      _this.handleHide(e);\n\n      if (onBlur) onBlur(e);\n    };\n\n    _this.handleClick = function (e) {\n      var _this$getChildProps3 = _this.getChildProps(),\n          onClick = _this$getChildProps3.onClick;\n\n      if (_this.state.show) _this.hide();else _this.show();\n      if (onClick) onClick(e);\n    };\n\n    _this.handleMouseOver = function (e) {\n      _this.handleMouseOverOut(_this.handleShow, e, 'fromElement');\n    };\n\n    _this.handleMouseOut = function (e) {\n      return _this.handleMouseOverOut(_this.handleHide, e, 'toElement');\n    };\n\n    _this.trigger = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createRef();\n    _this.state = {\n      show: !!props.defaultShow\n    }; // We add aria-describedby in the case where the overlay is a role=\"tooltip\"\n    // for other cases describedby isn't appropriate (e.g. a popover with inputs) so we don't add it.\n\n    _this.ariaModifier = {\n      enabled: true,\n      order: 900,\n      fn: function fn(data) {\n        var popper = data.instance.popper;\n\n        var target = _this.getTarget();\n\n        if (!_this.state.show || !target) return data;\n        var role = popper.getAttribute('role') || '';\n\n        if (popper.id && role.toLowerCase() === 'tooltip') {\n          target.setAttribute('aria-describedby', popper.id);\n        }\n\n        return data;\n      }\n    };\n    return _this;\n  }\n\n  var _proto2 = OverlayTrigger.prototype;\n\n  _proto2.componentWillUnmount = function componentWillUnmount() {\n    clearTimeout(this._timeout);\n  };\n\n  _proto2.getChildProps = function getChildProps() {\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Children.only(this.props.children).props;\n  };\n\n  // Simple implementation of mouseEnter and mouseLeave.\n  // React's built version is broken: https://github.com/facebook/react/issues/4251\n  // for cases when the trigger is disabled and mouseOut/Over can cause flicker\n  // moving from one child element to another.\n  _proto2.handleMouseOverOut = function handleMouseOverOut(handler, e, relatedNative) {\n    var target = e.currentTarget;\n    var related = e.relatedTarget || e.nativeEvent[relatedNative];\n\n    if ((!related || related !== target) && !contains_default()(target, related)) {\n      handler(e);\n    }\n  };\n\n  _proto2.hide = function hide() {\n    this.setState({\n      show: false\n    });\n  };\n\n  _proto2.show = function show() {\n    this.setState({\n      show: true\n    });\n  };\n\n  _proto2.render = function render() {\n    var _this$props = this.props,\n        trigger = _this$props.trigger,\n        overlay = _this$props.overlay,\n        children = _this$props.children,\n        _this$props$popperCon = _this$props.popperConfig,\n        popperConfig = _this$props$popperCon === void 0 ? {} : _this$props$popperCon,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"trigger\", \"overlay\", \"children\", \"popperConfig\"]);\n\n    delete props.delay;\n    delete props.defaultShow;\n    var child = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Children.only(children);\n    var triggerProps = {};\n    var triggers = trigger == null ? [] : [].concat(trigger);\n\n    if (triggers.indexOf('click') !== -1) {\n      triggerProps.onClick = this.handleClick;\n    }\n\n    if (triggers.indexOf('focus') !== -1) {\n      triggerProps.onFocus = this.handleShow;\n      triggerProps.onBlur = this.handleHide;\n    }\n\n    if (triggers.indexOf('hover') !== -1) {\n       false ? undefined : void 0;\n      triggerProps.onMouseOver = this.handleMouseOver;\n      triggerProps.onMouseOut = this.handleMouseOut;\n    }\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Fragment, null, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(OverlayTrigger_RefHolder, {\n      ref: this.trigger,\n      __source: {\n        fileName: OverlayTrigger_jsxFileName,\n        lineNumber: 240\n      },\n      __self: this\n    }, Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"cloneElement\"])(child, triggerProps)), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Overlay, _extends({}, props, {\n      popperConfig: _extends({}, popperConfig, {\n        modifiers: _extends({}, popperConfig.modifiers, {\n          ariaModifier: this.ariaModifier\n        })\n      }),\n      show: this.state.show,\n      onHide: this.handleHide,\n      target: this.getTarget,\n      __source: {\n        fileName: OverlayTrigger_jsxFileName,\n        lineNumber: 243\n      },\n      __self: this\n    }), overlay));\n  };\n\n  return OverlayTrigger;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nOverlayTrigger_OverlayTrigger.propTypes = OverlayTrigger_propTypes;\nOverlayTrigger_OverlayTrigger.defaultProps = OverlayTrigger_defaultProps;\n/* harmony default export */ var src_OverlayTrigger = (OverlayTrigger_OverlayTrigger);\n// CONCATENATED MODULE: ./src/PageItem.js\n\n\n\nvar PageItem_jsxFileName = \"/Users/jason/src/react-bootstrap/src/PageItem.js\";\n\n/* eslint-disable react/no-multi-comp */\n\n\n\n\nvar PageItem_propTypes = {\n  /** Disables the PageItem */\n  disabled: prop_types_default.a.bool,\n\n  /** Styles PageItem as active, and renders a `<span>` instead of an `<a>`. */\n  active: prop_types_default.a.bool,\n\n  /** An accessible label indicating the active state.. */\n  activeLabel: prop_types_default.a.string\n};\nvar PageItem_defaultProps = {\n  active: false,\n  disabled: false,\n  activeLabel: '(current)'\n};\nfunction PageItem(_ref) {\n  var active = _ref.active,\n      disabled = _ref.disabled,\n      className = _ref.className,\n      style = _ref.style,\n      activeLabel = _ref.activeLabel,\n      children = _ref.children,\n      props = _objectWithoutPropertiesLoose(_ref, [\"active\", \"disabled\", \"className\", \"style\", \"activeLabel\", \"children\"]);\n\n  var Component = active || disabled ? 'span' : src_SafeAnchor;\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"li\", {\n    style: style,\n    className: classnames_default()(className, 'page-item', {\n      active: active,\n      disabled: disabled\n    }),\n    __source: {\n      fileName: PageItem_jsxFileName,\n      lineNumber: 36\n    },\n    __self: this\n  }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({\n    className: \"page-link\",\n    disabled: disabled\n  }, props, {\n    __source: {\n      fileName: PageItem_jsxFileName,\n      lineNumber: 40\n    },\n    __self: this\n  }), children, active && activeLabel && external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"span\", {\n    className: \"sr-only\",\n    __source: {\n      fileName: PageItem_jsxFileName,\n      lineNumber: 43\n    },\n    __self: this\n  }, activeLabel)));\n}\nPageItem.propTypes = PageItem_propTypes;\nPageItem.defaultProps = PageItem_defaultProps;\n\nfunction createButton(name, defaultValue, label) {\n  var _class, _temp;\n\n  if (label === void 0) {\n    label = name;\n  }\n\n  return _temp = _class =\n  /*#__PURE__*/\n  function (_React$Component) {\n    _inheritsLoose(_class, _React$Component);\n\n    function _class() {\n      return _React$Component.apply(this, arguments) || this;\n    }\n\n    var _proto = _class.prototype;\n\n    _proto.render = function render() {\n      var _this$props = this.props,\n          children = _this$props.children,\n          props = _objectWithoutPropertiesLoose(_this$props, [\"children\"]);\n\n      delete props.active;\n      return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(PageItem, _extends({}, props, {\n        __source: {\n          fileName: PageItem_jsxFileName,\n          lineNumber: 61\n        },\n        __self: this\n      }), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"span\", {\n        \"aria-hidden\": \"true\",\n        __source: {\n          fileName: PageItem_jsxFileName,\n          lineNumber: 62\n        },\n        __self: this\n      }, children || defaultValue), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"span\", {\n        className: \"sr-only\",\n        __source: {\n          fileName: PageItem_jsxFileName,\n          lineNumber: 63\n        },\n        __self: this\n      }, label));\n    };\n\n    return _class;\n  }(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component), _class.displayName = name, _temp;\n}\n\nvar First = createButton('First', \"\\xAB\");\nvar Prev = createButton('Prev', \"\\u2039\", 'Previous');\nvar Ellipsis = createButton('Ellipsis', \"\\u2026\", 'More');\nvar Next = createButton('Next', \"\\u203A\");\nvar Last = createButton('Last', \"\\xBB\");\n// CONCATENATED MODULE: ./src/Pagination.js\n\n\n\nvar Pagination_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Pagination.js\";\n\n\n\n\n\n/**\n * @property {PageItem} Item\n * @property {PageItem} First\n * @property {PageItem} Prev\n * @property {PageItem} Ellipsis\n * @property {PageItem} Next\n * @property {PageItem} Last\n */\n\nvar Pagination_Pagination =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Pagination, _React$Component);\n\n  function Pagination() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = Pagination.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        bsPrefix = _this$props.bsPrefix,\n        className = _this$props.className,\n        children = _this$props.children,\n        size = _this$props.size,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"bsPrefix\", \"className\", \"children\", \"size\"]);\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"ul\", _extends({}, props, {\n      className: classnames_default()(className, bsPrefix, size && bsPrefix + \"-\" + size),\n      __source: {\n        fileName: Pagination_jsxFileName,\n        lineNumber: 33\n      },\n      __self: this\n    }), children);\n  };\n\n  return Pagination;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nPagination_Pagination.propTypes = {\n  /** @default 'pagination' */\n  bsPrefix: prop_types_default.a.string.isRequired,\n\n  /**\n   * Set's the size of all PageItems.\n   *\n   * @type {('sm'|'lg')}\n   */\n  size: prop_types_default.a.string\n};\nvar DecoratedPagination = createBootstrapComponent(Pagination_Pagination, 'pagination');\nDecoratedPagination.First = First;\nDecoratedPagination.Prev = Prev;\nDecoratedPagination.Ellipsis = Ellipsis;\nDecoratedPagination.Item = PageItem;\nDecoratedPagination.Next = Next;\nDecoratedPagination.Last = Last;\n/* harmony default export */ var src_Pagination = (DecoratedPagination);\n// CONCATENATED MODULE: ./src/Popover.js\n\n\nvar Popover_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Popover.js\";\n\n\n\n\n\nvar Popover_propTypes = {\n  /**\n   * @default 'popover'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * An html id attribute, necessary for accessibility\n   * @type {string|number}\n   * @required\n   */\n  id: isRequiredForA11y_default()(prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.number])),\n\n  /**\n   * Sets the direction the Popover is positioned towards.\n   *\n   * > This is generally provided by the `Overlay` component positioning the popover\n   */\n  placement: prop_types_default.a.oneOf(['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start']),\n\n  /**\n   * An Overlay injected set of props for positioning the popover arrow.\n   *\n   * > This is generally provided by the `Overlay` component positioning the popover\n   */\n  arrowProps: prop_types_default.a.shape({\n    ref: prop_types_default.a.any,\n    style: prop_types_default.a.object\n  }),\n\n  /** @private */\n  innerRef: prop_types_default.a.any,\n\n  /** @private */\n  scheduleUpdate: prop_types_default.a.func,\n\n  /** @private */\n  outOfBoundaries: prop_types_default.a.bool,\n\n  /**\n   * Title content\n   */\n  title: prop_types_default.a.node\n};\nvar Popover_defaultProps = {\n  placement: 'right'\n};\n\nfunction Popover(_ref) {\n  var bsPrefix = _ref.bsPrefix,\n      innerRef = _ref.innerRef,\n      placement = _ref.placement,\n      className = _ref.className,\n      style = _ref.style,\n      title = _ref.title,\n      children = _ref.children,\n      arrowProps = _ref.arrowProps,\n      _ = _ref.scheduleUpdate,\n      _1 = _ref.outOfBoundaries,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"innerRef\", \"placement\", \"className\", \"style\", \"title\", \"children\", \"arrowProps\", \"scheduleUpdate\", \"outOfBoundaries\"]);\n\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", _extends({\n    role: \"tooltip\",\n    ref: innerRef,\n    style: style,\n    \"x-placement\": placement,\n    className: classnames_default()(className, bsPrefix, \"bs-popover-\" + placement)\n  }, props, {\n    __source: {\n      fileName: Popover_jsxFileName,\n      lineNumber: 86\n    },\n    __self: this\n  }), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", _extends({\n    className: \"arrow\"\n  }, arrowProps, {\n    __source: {\n      fileName: Popover_jsxFileName,\n      lineNumber: 94\n    },\n    __self: this\n  })), title && external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", {\n    className: bsPrefix + \"-header h3\",\n    __source: {\n      fileName: Popover_jsxFileName,\n      lineNumber: 96\n    },\n    __self: this\n  }, title), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", {\n    className: bsPrefix + \"-body\",\n    __source: {\n      fileName: Popover_jsxFileName,\n      lineNumber: 98\n    },\n    __self: this\n  }, children));\n}\n\nPopover.propTypes = Popover_propTypes;\nPopover.defaultProps = Popover_defaultProps;\n/* harmony default export */ var src_Popover = (createBootstrapComponent(Popover, 'popover'));\n// CONCATENATED MODULE: ./src/ProgressBar.js\n\n\n\nvar ProgressBar_jsxFileName = \"/Users/jason/src/react-bootstrap/src/ProgressBar.js\";\n\n\n\n\n\nvar ROUND_PRECISION = 1000;\n/**\n * Validate that children, if any, are instances of `<ProgressBar>`.\n */\n\nfunction onlyProgressBar(props, propName, componentName) {\n  var children = props[propName];\n\n  if (!children) {\n    return null;\n  }\n\n  var error = null;\n  external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Children.forEach(children, function (child) {\n    if (error) {\n      return;\n    }\n    /**\n     * Compare types in a way that works with libraries that patch and proxy\n     * components like react-hot-loader.\n     *\n     * see https://github.com/gaearon/react-hot-loader#checking-element-types\n     */\n\n\n    var element = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(DecoratedProgressBar, {\n      __source: {\n        fileName: ProgressBar_jsxFileName,\n        lineNumber: 33\n      },\n      __self: this\n    });\n    if (child.type === element.type) return;\n    var childIdentifier = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.isValidElement(child) ? child.type.displayName || child.type.name || child.type : child;\n    error = new Error(\"Children of \" + componentName + \" can contain only ProgressBar \" + (\"components. Found \" + childIdentifier + \".\"));\n  });\n  return error;\n}\n\nvar ProgressBar_propTypes = {\n  /**\n   * Minimum value progress can begin from\n   */\n  min: prop_types_default.a.number,\n\n  /**\n   * Current value of progress\n   */\n  now: prop_types_default.a.number,\n\n  /**\n   * Maximum value progress can reach\n   */\n  max: prop_types_default.a.number,\n\n  /**\n   * Show label that represents visual percentage.\n   * EG. 60%\n   */\n  label: prop_types_default.a.node,\n\n  /**\n   * Hide's the label visually.\n   */\n  srOnly: prop_types_default.a.bool,\n\n  /**\n   * Uses a gradient to create a striped effect.\n   */\n  striped: prop_types_default.a.bool,\n\n  /**\n   * Animate's the stripes from right to left\n   */\n  animated: prop_types_default.a.bool,\n\n  /**\n   * @private\n   * @default 'progress-bar'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * Sets the background class of the progress bar.\n   *\n   * @type ('success'|'danger'|'warning'|'info')\n   */\n  variant: prop_types_default.a.string,\n\n  /**\n   * Child elements (only allows elements of type <ProgressBar />)\n   */\n  children: onlyProgressBar,\n\n  /**\n   * @private\n   */\n  isChild: prop_types_default.a.bool\n};\nvar ProgressBar_defaultProps = {\n  min: 0,\n  max: 100,\n  animated: false,\n  isChild: false,\n  srOnly: false,\n  striped: false\n};\n\nfunction getPercentage(now, min, max) {\n  var percentage = (now - min) / (max - min) * 100;\n  return Math.round(percentage * ROUND_PRECISION) / ROUND_PRECISION;\n}\n\nvar ProgressBar_ProgressBar =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(ProgressBar, _React$Component);\n\n  function ProgressBar() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = ProgressBar.prototype;\n\n  _proto.renderProgressBar = function renderProgressBar(_ref) {\n    var _classNames;\n\n    var min = _ref.min,\n        now = _ref.now,\n        max = _ref.max,\n        label = _ref.label,\n        srOnly = _ref.srOnly,\n        striped = _ref.striped,\n        animated = _ref.animated,\n        className = _ref.className,\n        style = _ref.style,\n        variant = _ref.variant,\n        bsPrefix = _ref.bsPrefix,\n        props = _objectWithoutPropertiesLoose(_ref, [\"min\", \"now\", \"max\", \"label\", \"srOnly\", \"striped\", \"animated\", \"className\", \"style\", \"variant\", \"bsPrefix\"]);\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", _extends({}, props, {\n      role: \"progressbar\",\n      className: classnames_default()(className, bsPrefix + \"-bar\", (_classNames = {}, _classNames[\"bg-\" + variant] = variant, _classNames[bsPrefix + \"-bar-animated\"] = animated, _classNames[bsPrefix + \"-bar-striped\"] = animated || striped, _classNames)),\n      style: _extends({\n        width: getPercentage(now, min, max) + \"%\"\n      }, style),\n      \"aria-valuenow\": now,\n      \"aria-valuemin\": min,\n      \"aria-valuemax\": max,\n      __source: {\n        fileName: ProgressBar_jsxFileName,\n        lineNumber: 139\n      },\n      __self: this\n    }), srOnly ? external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"span\", {\n      className: \"sr-only\",\n      __source: {\n        fileName: ProgressBar_jsxFileName,\n        lineNumber: 152\n      },\n      __self: this\n    }, label) : label);\n  };\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        isChild = _this$props.isChild,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"isChild\"]);\n\n    if (isChild) {\n      return this.renderProgressBar(props);\n    }\n\n    var min = props.min,\n        now = props.now,\n        max = props.max,\n        label = props.label,\n        srOnly = props.srOnly,\n        striped = props.striped,\n        animated = props.animated,\n        bsPrefix = props.bsPrefix,\n        variant = props.variant,\n        className = props.className,\n        children = props.children,\n        wrapperProps = _objectWithoutPropertiesLoose(props, [\"min\", \"now\", \"max\", \"label\", \"srOnly\", \"striped\", \"animated\", \"bsPrefix\", \"variant\", \"className\", \"children\"]);\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", _extends({}, wrapperProps, {\n      className: classnames_default()(className, bsPrefix),\n      __source: {\n        fileName: ProgressBar_jsxFileName,\n        lineNumber: 180\n      },\n      __self: this\n    }), children ? map(children, function (child) {\n      return Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"cloneElement\"])(child, {\n        isChild: true\n      });\n    }) : this.renderProgressBar({\n      min: min,\n      now: now,\n      max: max,\n      label: label,\n      srOnly: srOnly,\n      striped: striped,\n      animated: animated,\n      bsPrefix: bsPrefix,\n      variant: variant\n    }));\n  };\n\n  return ProgressBar;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nProgressBar_ProgressBar.propTypes = ProgressBar_propTypes;\nProgressBar_ProgressBar.defaultProps = ProgressBar_defaultProps;\nvar DecoratedProgressBar = createBootstrapComponent(ProgressBar_ProgressBar, 'progress');\n/* harmony default export */ var src_ProgressBar = (DecoratedProgressBar);\n// CONCATENATED MODULE: ./src/ResponsiveEmbed.js\n\n\n\nvar ResponsiveEmbed_jsxFileName = \"/Users/jason/src/react-bootstrap/src/ResponsiveEmbed.js\";\n\n\n\n\nvar ResponsiveEmbed_propTypes = {\n  /**\n   * @default 'embed-responsive'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * This component requires a single child element\n   */\n  children: prop_types_default.a.element.isRequired,\n\n  /**\n   * Set the aspect ration of the embed\n   */\n  aspectRatio: prop_types_default.a.oneOf(['21by9', '16by9', '4by3', '1by1'])\n};\nvar ResponsiveEmbed_defaultProps = {\n  aspectRatio: '1by1'\n};\n\nvar ResponsiveEmbed_ResponsiveEmbed =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(ResponsiveEmbed, _React$Component);\n\n  function ResponsiveEmbed() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = ResponsiveEmbed.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        bsPrefix = _this$props.bsPrefix,\n        className = _this$props.className,\n        children = _this$props.children,\n        aspectRatio = _this$props.aspectRatio,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"bsPrefix\", \"className\", \"children\", \"aspectRatio\"]);\n\n    var child = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Children.only(children);\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", _extends({}, props, {\n      className: classnames_default()(bsPrefix, className, aspectRatio && bsPrefix + \"-\" + aspectRatio),\n      __source: {\n        fileName: ResponsiveEmbed_jsxFileName,\n        lineNumber: 33\n      },\n      __self: this\n    }), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.cloneElement(child, {\n      className: classnames_default()(child.props.className, bsPrefix + \"-item\")\n    }));\n  };\n\n  return ResponsiveEmbed;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nResponsiveEmbed_ResponsiveEmbed.propTypes = ResponsiveEmbed_propTypes;\nResponsiveEmbed_ResponsiveEmbed.defaultProps = ResponsiveEmbed_defaultProps;\n/* harmony default export */ var src_ResponsiveEmbed = (createBootstrapComponent(ResponsiveEmbed_ResponsiveEmbed, 'embed-responsive'));\n// CONCATENATED MODULE: ./src/Row.js\n\n\n\nvar Row_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Row.js\";\n\n\n\n\n\nvar Row_Row =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Row, _React$Component);\n\n  function Row() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = Row.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        bsPrefix = _this$props.bsPrefix,\n        noGutters = _this$props.noGutters,\n        Component = _this$props.as,\n        className = _this$props.className,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"bsPrefix\", \"noGutters\", \"as\", \"className\"]);\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n      className: classnames_default()(className, bsPrefix, noGutters && 'no-gutters'),\n      __source: {\n        fileName: Row_jsxFileName,\n        lineNumber: 35\n      },\n      __self: this\n    }));\n  };\n\n  return Row;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nRow_Row.propTypes = {\n  /**\n   * @default 'row'\n   */\n  bsPrefix: prop_types_default.a.string.isRequired,\n\n  /** Removes the gutter spacing between `Col`s as well as any added negative margins. */\n  noGutters: prop_types_default.a.bool.isRequired,\n  as: prop_types_default.a.elementType\n};\nRow_Row.defaultProps = {\n  as: 'div',\n  noGutters: false\n};\n/* harmony default export */ var src_Row = (createBootstrapComponent(Row_Row, 'row'));\n// CONCATENATED MODULE: ./src/Spinner.js\n\n\n\nvar Spinner_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Spinner.js\";\n\n\n\n\n\nvar Spinner_Spinner =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Spinner, _React$Component);\n\n  function Spinner() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = Spinner.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        bsPrefix = _this$props.bsPrefix,\n        variant = _this$props.variant,\n        animation = _this$props.animation,\n        size = _this$props.size,\n        children = _this$props.children,\n        as = _this$props.as,\n        className = _this$props.className,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"bsPrefix\", \"variant\", \"animation\", \"size\", \"children\", \"as\", \"className\"]);\n\n    var Component = as;\n    var bsSpinnerPrefix = bsPrefix + \"-\" + animation;\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n      className: classnames_default()(className, bsSpinnerPrefix, size && bsSpinnerPrefix + \"-\" + size, variant && \"text-\" + variant),\n      __source: {\n        fileName: Spinner_jsxFileName,\n        lineNumber: 71\n      },\n      __self: this\n    }), children);\n  };\n\n  return Spinner;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nSpinner_Spinner.propTypes = {\n  /**\n   * @default 'spinner'\n   */\n  bsPrefix: prop_types_default.a.string.isRequired,\n\n  /**\n   * The visual color style of the spinner\n   *\n   * @type {('primary'|'secondary'|'success'|'danger'|'warning'|'info'|'light'|'dark')}\n   */\n  variant: prop_types_default.a.string,\n\n  /**\n   * Changes the animation style of the spinner.\n   *\n   * @type {('border'|'grow')}\n   * @default true\n   */\n  animation: prop_types_default.a.oneOf(['border', 'grow']).isRequired,\n\n  /**\n   * Component size variations.\n   *\n   * @type {('sm')}\n   */\n  size: prop_types_default.a.string,\n\n  /**\n   * This component may be used to wrap child elements or components.\n   */\n  children: prop_types_default.a.element,\n\n  /**\n   * An ARIA accessible role applied to the Menu component. This should generally be set to 'status'\n   */\n  role: prop_types_default.a.string,\n\n  /**\n   * @default div\n   */\n  as: prop_types_default.a.elementType\n};\nSpinner_Spinner.defaultProps = {\n  as: 'div'\n};\n/* harmony default export */ var src_Spinner = (createBootstrapComponent(Spinner_Spinner, 'spinner'));\n// CONCATENATED MODULE: ./src/SplitButton.js\n\n\n\nvar SplitButton_jsxFileName = \"/Users/jason/src/react-bootstrap/src/SplitButton.js\";\n\n\n\n\n\n/**\n * @inherits Button, Dropdown\n */\n\nvar SplitButton_SplitButton =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(SplitButton, _React$Component);\n\n  function SplitButton() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = SplitButton.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        id = _this$props.id,\n        bsPrefix = _this$props.bsPrefix,\n        size = _this$props.size,\n        variant = _this$props.variant,\n        title = _this$props.title,\n        toggleLabel = _this$props.toggleLabel,\n        children = _this$props.children,\n        onClick = _this$props.onClick,\n        href = _this$props.href,\n        target = _this$props.target,\n        menuRole = _this$props.menuRole,\n        rootCloseEvent = _this$props.rootCloseEvent,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"id\", \"bsPrefix\", \"size\", \"variant\", \"title\", \"toggleLabel\", \"children\", \"onClick\", \"href\", \"target\", \"menuRole\", \"rootCloseEvent\"]);\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Dropdown, _extends({}, props, {\n      as: src_ButtonGroup,\n      __source: {\n        fileName: SplitButton_jsxFileName,\n        lineNumber: 79\n      },\n      __self: this\n    }), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Button, {\n      size: size,\n      variant: variant,\n      disabled: props.disabled,\n      bsPrefix: bsPrefix,\n      href: href,\n      target: target,\n      onClick: onClick,\n      __source: {\n        fileName: SplitButton_jsxFileName,\n        lineNumber: 80\n      },\n      __self: this\n    }, title), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Dropdown.Toggle, {\n      split: true,\n      id: id,\n      size: size,\n      variant: variant,\n      disabled: props.disabled,\n      childBsPrefix: bsPrefix,\n      __source: {\n        fileName: SplitButton_jsxFileName,\n        lineNumber: 91\n      },\n      __self: this\n    }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"span\", {\n      className: \"sr-only\",\n      __source: {\n        fileName: SplitButton_jsxFileName,\n        lineNumber: 99\n      },\n      __self: this\n    }, toggleLabel)), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Dropdown.Menu, {\n      role: menuRole,\n      rootCloseEvent: rootCloseEvent,\n      __source: {\n        fileName: SplitButton_jsxFileName,\n        lineNumber: 102\n      },\n      __self: this\n    }, children));\n  };\n\n  return SplitButton;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nSplitButton_SplitButton.propTypes = {\n  /**\n   * An html id attribute for the Toggle button, necessary for assistive technologies, such as screen readers.\n   * @type {string|number}\n   * @required\n   */\n  id: prop_types_default.a.any,\n\n  /**\n   * Accessible label for the toggle; the value of `title` if not specified.\n   */\n  toggleLabel: prop_types_default.a.string,\n\n  /** An `href` passed to the non-toggle Button */\n  href: prop_types_default.a.string,\n\n  /** An anchor `target` passed to the non-toggle Button */\n  target: prop_types_default.a.string,\n\n  /** An `onClick` handler passed to the non-toggle Button */\n  onClick: prop_types_default.a.func,\n\n  /** The content of the non-toggle Button.  */\n  title: prop_types_default.a.node.isRequired,\n\n  /** Disables both Buttons  */\n  disabled: prop_types_default.a.bool,\n\n  /** An ARIA accessible role applied to the Menu component. When set to 'menu', The dropdown */\n  menuRole: prop_types_default.a.string,\n\n  /**\n   *  Which event when fired outside the component will cause it to be closed.\n   *\n   * _see [DropdownMenu](#menu-props) for more details_\n   */\n  rootCloseEvent: prop_types_default.a.string,\n\n  /** @ignore */\n  bsPrefix: prop_types_default.a.string,\n\n  /** @ignore */\n  variant: prop_types_default.a.string,\n\n  /** @ignore */\n  size: prop_types_default.a.string\n};\nSplitButton_SplitButton.defaultProps = {\n  toggleLabel: 'Toggle dropdown'\n};\n/* harmony default export */ var src_SplitButton = (SplitButton_SplitButton);\n// CONCATENATED MODULE: ./src/TabContainer.js\n\n\nvar TabContainer_jsxFileName = \"/Users/jason/src/react-bootstrap/src/TabContainer.js\";\n\n\n\n\n\n\nvar TabContainer_TabContainer =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(TabContainer, _React$Component);\n\n  function TabContainer() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n    _this.getControlledId = function (key) {\n      return _this.getKey(key, 'tabpane');\n    };\n\n    _this.getControllerId = function (key) {\n      return _this.getKey(key, 'tab');\n    };\n\n    _this.state = {\n      tabContext: {\n        onSelect: _this.props.onSelect,\n        activeKey: _this.props.activeKey,\n        transition: _this.props.transition,\n        mountOnEnter: _this.props.mountOnEnter,\n        unmountOnExit: _this.props.unmountOnExit,\n        getControlledId: _this.getControlledId,\n        getControllerId: _this.getControllerId\n      }\n    };\n    return _this;\n  }\n\n  TabContainer.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n    var activeKey = _ref.activeKey,\n        mountOnEnter = _ref.mountOnEnter,\n        unmountOnExit = _ref.unmountOnExit,\n        transition = _ref.transition;\n    return {\n      tabContext: _extends({}, prevState.tabContext, {\n        activeKey: activeKey,\n        mountOnEnter: mountOnEnter,\n        unmountOnExit: unmountOnExit,\n        transition: transition\n      })\n    };\n  };\n\n  var _proto = TabContainer.prototype;\n\n  _proto.getKey = function getKey(key, type) {\n    var _this$props = this.props,\n        generateChildId = _this$props.generateChildId,\n        id = _this$props.id;\n    if (generateChildId) return generateChildId(key, type);\n    return id ? id + \"-\" + type + \"-\" + key : null;\n  };\n\n  _proto.render = function render() {\n    var _this$props2 = this.props,\n        children = _this$props2.children,\n        onSelect = _this$props2.onSelect;\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_TabContext.Provider, {\n      value: this.state.tabContext,\n      __source: {\n        fileName: TabContainer_jsxFileName,\n        lineNumber: 129\n      },\n      __self: this\n    }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_SelectableContext.Provider, {\n      value: onSelect,\n      __source: {\n        fileName: TabContainer_jsxFileName,\n        lineNumber: 130\n      },\n      __self: this\n    }, children));\n  };\n\n  return TabContainer;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nTabContainer_TabContainer.propTypes = {\n  /**\n   * HTML id attribute, required if no `generateChildId` prop\n   * is specified.\n   *\n   * @type {string}\n   */\n  id: function id(props) {\n    var error = null;\n\n    if (!props.generateChildId) {\n      for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n        args[_key2 - 1] = arguments[_key2];\n      }\n\n      error = prop_types_default.a.string.apply(prop_types_default.a, [props].concat(args));\n\n      if (!error && !props.id) {\n        error = new Error('In order to properly initialize Tabs in a way that is accessible ' + 'to assistive technologies (such as screen readers) an `id` or a ' + '`generateChildId` prop to TabContainer is required');\n      }\n    }\n\n    return error;\n  },\n\n  /**\n   * Sets a default animation strategy for all children `<TabPane>`s. Use\n   * `false` to disable, `true` to enable the default `<Fade>` animation or\n   * a react-transition-group v2 `<Transition/>` component.\n   *\n   * @type {{Transition | false}}\n   * @default {Fade}\n   */\n  transition: prop_types_default.a.oneOfType([prop_types_default.a.oneOf([false]), prop_types_default.a.elementType]),\n\n  /**\n   * Wait until the first \"enter\" transition to mount tabs (add them to the DOM)\n   */\n  mountOnEnter: prop_types_default.a.bool,\n\n  /**\n   * Unmount tabs (remove it from the DOM) when they are no longer visible\n   */\n  unmountOnExit: prop_types_default.a.bool,\n\n  /**\n   * A function that takes an `eventKey` and `type` and returns a unique id for\n   * child tab `<NavItem>`s and `<TabPane>`s. The function _must_ be a pure\n   * function, meaning it should always return the _same_ id for the same set\n   * of inputs. The default value requires that an `id` to be set for the\n   * `<TabContainer>`.\n   *\n   * The `type` argument will either be `\"tab\"` or `\"pane\"`.\n   *\n   * @defaultValue (eventKey, type) => `${this.props.id}-${type}-${eventKey}`\n   */\n  generateChildId: prop_types_default.a.func,\n\n  /**\n   * A callback fired when a tab is selected.\n   *\n   * @controllable activeKey\n   */\n  onSelect: prop_types_default.a.func,\n\n  /**\n   * The `eventKey` of the currently active tab.\n   *\n   * @controllable onSelect\n   */\n  activeKey: prop_types_default.a.any\n};\n/* harmony default export */ var src_TabContainer = (uncontrollable_default()(TabContainer_TabContainer, {\n  activeKey: 'onSelect'\n}));\n// CONCATENATED MODULE: ./src/TabContent.js\n\n\n\nvar TabContent_jsxFileName = \"/Users/jason/src/react-bootstrap/src/TabContent.js\";\n\n\n\n\n\nvar TabContent_TabContent =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(TabContent, _React$Component);\n\n  function TabContent() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = TabContent.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        bsPrefix = _this$props.bsPrefix,\n        Component = _this$props.as,\n        className = _this$props.className,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"bsPrefix\", \"as\", \"className\"]);\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n      className: classnames_default()(className, bsPrefix),\n      __source: {\n        fileName: TabContent_jsxFileName,\n        lineNumber: 24\n      },\n      __self: this\n    }));\n  };\n\n  return TabContent;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nTabContent_TabContent.propTypes = {\n  /**\n   * @default 'tab-content'\n   */\n  bsPrefix: prop_types_default.a.string,\n  as: prop_types_default.a.elementType\n};\nTabContent_TabContent.defaultProps = {\n  as: 'div'\n};\n/* harmony default export */ var src_TabContent = (createBootstrapComponent(TabContent_TabContent, 'tab-content'));\n// CONCATENATED MODULE: ./src/TabPane.js\n\n\nvar TabPane_jsxFileName = \"/Users/jason/src/react-bootstrap/src/TabPane.js\";\n\n\n\n\n\n\n\nvar TabPane_propTypes = {\n  /**\n   * @default 'tab-pane'\n   */\n  bsPrefix: prop_types_default.a.string,\n  as: prop_types_default.a.elementType,\n\n  /**\n   * A key that associates the `TabPane` with it's controlling `NavLink`.\n   */\n  eventKey: prop_types_default.a.any,\n\n  /**\n   * Toggles the active state of the TabPane, this is generally controlled by a\n   * TabContainer.\n   */\n  active: prop_types_default.a.bool,\n\n  /**\n   * Use animation when showing or hiding `<TabPane>`s. Use `false` to disable,\n   * `true` to enable the default `<Fade>` animation or\n   * a react-transition-group v2 `<Transition/>` component.\n   */\n  transition: prop_types_default.a.oneOfType([prop_types_default.a.bool, prop_types_default.a.elementType]),\n\n  /**\n   *\n   * @default 'tab-pane'\n   */\n  bsClass: prop_types_default.a.string,\n\n  /**\n   * Transition onEnter callback when animation is not `false`\n   */\n  onEnter: prop_types_default.a.func,\n\n  /**\n   * Transition onEntering callback when animation is not `false`\n   */\n  onEntering: prop_types_default.a.func,\n\n  /**\n   * Transition onEntered callback when animation is not `false`\n   */\n  onEntered: prop_types_default.a.func,\n\n  /**\n   * Transition onExit callback when animation is not `false`\n   */\n  onExit: prop_types_default.a.func,\n\n  /**\n   * Transition onExiting callback when animation is not `false`\n   */\n  onExiting: prop_types_default.a.func,\n\n  /**\n   * Transition onExited callback when animation is not `false`\n   */\n  onExited: prop_types_default.a.func,\n\n  /**\n   * Wait until the first \"enter\" transition to mount the tab (add it to the DOM)\n   */\n  mountOnEnter: prop_types_default.a.bool,\n\n  /**\n   * Unmount the tab (remove it from the DOM) when it is no longer visible\n   */\n  unmountOnExit: prop_types_default.a.bool,\n\n  /** @ignore * */\n  id: prop_types_default.a.string,\n\n  /** @ignore * */\n  'aria-labelledby': prop_types_default.a.string\n};\n\nfunction useTabContext(props) {\n  var context = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(src_TabContext);\n  if (!context) return props;\n\n  var activeKey = context.activeKey,\n      getControlledId = context.getControlledId,\n      getControllerId = context.getControllerId,\n      rest = _objectWithoutPropertiesLoose(context, [\"activeKey\", \"getControlledId\", \"getControllerId\"]);\n\n  var shouldTransition = props.transition !== false && rest.transition !== false;\n  var key = makeEventKey(props.eventKey);\n  return _extends({}, props, {\n    active: props.active == null && key != null ? makeEventKey(activeKey) === key : props.active,\n    id: getControlledId(props.eventKey),\n    'aria-labelledby': getControllerId(props.eventKey),\n    transition: shouldTransition && (props.transition || rest.transition || src_Fade),\n    mountOnEnter: props.mountOnEnter != null ? props.mountOnEnter : rest.mountOnEnter,\n    unmountOnExit: props.unmountOnExit != null ? props.unmountOnExit : rest.unmountOnExit\n  });\n}\n\nvar TabPane = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (props, ref) {\n  var _useTabContext = useTabContext(props),\n      bsPrefix = _useTabContext.bsPrefix,\n      className = _useTabContext.className,\n      active = _useTabContext.active,\n      onEnter = _useTabContext.onEnter,\n      onEntering = _useTabContext.onEntering,\n      onEntered = _useTabContext.onEntered,\n      onExit = _useTabContext.onExit,\n      onExiting = _useTabContext.onExiting,\n      onExited = _useTabContext.onExited,\n      mountOnEnter = _useTabContext.mountOnEnter,\n      unmountOnExit = _useTabContext.unmountOnExit,\n      Transition = _useTabContext.transition,\n      _useTabContext$as = _useTabContext.as,\n      Component = _useTabContext$as === void 0 ? 'div' : _useTabContext$as,\n      _ = _useTabContext.eventKey,\n      rest = _objectWithoutPropertiesLoose(_useTabContext, [\"bsPrefix\", \"className\", \"active\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"mountOnEnter\", \"unmountOnExit\", \"transition\", \"as\", \"eventKey\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'tab-pane');\n  if (!active && unmountOnExit) return null;\n  var pane = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, rest, {\n    ref: ref,\n    role: \"tabpanel\",\n    \"aria-hidden\": !active,\n    className: classnames_default()(className, prefix, {\n      active: active\n    }),\n    __source: {\n      fileName: TabPane_jsxFileName,\n      lineNumber: 141\n    },\n    __self: this\n  }));\n  if (Transition) pane = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Transition, {\n    in: active,\n    onEnter: onEnter,\n    onEntering: onEntering,\n    onEntered: onEntered,\n    onExit: onExit,\n    onExiting: onExiting,\n    onExited: onExited,\n    mountOnEnter: mountOnEnter,\n    unmountOnExit: mountOnEnter,\n    __source: {\n      fileName: TabPane_jsxFileName,\n      lineNumber: 152\n    },\n    __self: this\n  }, pane); // We provide an empty the TabContext so `<Nav>`s in `<TabPane>`s don't\n  // conflict with the top level one.\n\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_TabContext.Provider, {\n    value: null,\n    __source: {\n      fileName: TabPane_jsxFileName,\n      lineNumber: 170\n    },\n    __self: this\n  }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_SelectableContext.Provider, {\n    value: null,\n    __source: {\n      fileName: TabPane_jsxFileName,\n      lineNumber: 171\n    },\n    __self: this\n  }, pane));\n});\nTabPane.displayName = 'TabPane';\nTabPane.propTypes = TabPane_propTypes;\n/* harmony default export */ var src_TabPane = (TabPane);\n// CONCATENATED MODULE: ./src/Tab.js\n\n\n\n\n\n\n/* eslint-disable react/require-render-return, react/no-unused-prop-types */\n\nvar Tab_Tab =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Tab, _React$Component);\n\n  function Tab() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = Tab.prototype;\n\n  _proto.render = function render() {\n    throw new Error('ReactBootstrap: The `Tab` component is not meant to be rendered! ' + \"It's an abstract component that is only valid as a direct Child of the `Tabs` Component. \" + 'For custom tabs components use TabPane and TabsContainer directly');\n  };\n\n  return Tab;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nTab_Tab.propTypes = {\n  title: prop_types_default.a.node.isRequired\n};\nTab_Tab.Container = src_TabContainer;\nTab_Tab.Content = src_TabContent;\nTab_Tab.Pane = src_TabPane;\n/* harmony default export */ var src_Tab = (Tab_Tab);\n// CONCATENATED MODULE: ./src/Table.js\n\n\n\nvar Table_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Table.js\";\n\n\n\n\n\nvar Table_Table =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Table, _React$Component);\n\n  function Table() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = Table.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        bsPrefix = _this$props.bsPrefix,\n        className = _this$props.className,\n        striped = _this$props.striped,\n        bordered = _this$props.bordered,\n        borderless = _this$props.borderless,\n        hover = _this$props.hover,\n        size = _this$props.size,\n        variant = _this$props.variant,\n        responsive = _this$props.responsive,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"bsPrefix\", \"className\", \"striped\", \"bordered\", \"borderless\", \"hover\", \"size\", \"variant\", \"responsive\"]);\n\n    var classes = classnames_default()(bsPrefix, className, variant && bsPrefix + \"-\" + variant, size && bsPrefix + \"-\" + size, striped && bsPrefix + \"-striped\", bordered && bsPrefix + \"-bordered\", borderless && bsPrefix + \"-borderless\", hover && bsPrefix + \"-hover\");\n    var table = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"table\", _extends({}, props, {\n      className: classes,\n      __source: {\n        fileName: Table_jsxFileName,\n        lineNumber: 83\n      },\n      __self: this\n    }));\n\n    if (responsive) {\n      var responsiveClass = bsPrefix + \"-responsive\";\n\n      if (typeof responsive === 'string') {\n        responsiveClass = responsiveClass + \"-\" + responsive;\n      }\n\n      return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", {\n        className: responsiveClass,\n        __source: {\n          fileName: Table_jsxFileName,\n          lineNumber: 91\n        },\n        __self: this\n      }, table);\n    }\n\n    return table;\n  };\n\n  return Table;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nTable_Table.propTypes = {\n  /**\n   * @default 'table'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * Adds zebra-striping to any table row within the `<tbody>`.\n   */\n  striped: prop_types_default.a.bool,\n\n  /**\n   * Adds borders on all sides of the table and cells.\n   */\n  bordered: prop_types_default.a.bool,\n\n  /**\n   * Removes all borders on the table and cells, including table header.\n   */\n  borderless: prop_types_default.a.bool,\n\n  /**\n   * Enable a hover state on table rows within a `<tbody>`.\n   */\n  hover: prop_types_default.a.bool,\n\n  /**\n   * Make tables more compact by cutting cell padding in half by setting\n   * size as `sm`.\n   */\n  size: prop_types_default.a.string,\n\n  /**\n   * Invert the colors of the table — with light text on dark backgrounds\n   * by setting variant as `dark`.\n   */\n  variant: prop_types_default.a.string,\n\n  /**\n   * Responsive tables allow tables to be scrolled horizontally with ease.\n   * Across every breakpoint, use `responsive` for horizontally\n   * scrolling tables. Responsive tables are wrapped automatically in a `div`.\n   * Use `responsive=\"sm\"`, `responsive=\"md\"`, `responsive=\"lg\"`, or\n   * `responsive=\"xl\"` as needed to create responsive tables up to\n   * a particular breakpoint. From that breakpoint and up, the table will\n   * behave normally and not scroll horizontally.\n   */\n  responsive: prop_types_default.a.oneOfType([prop_types_default.a.bool, prop_types_default.a.string])\n};\n/* harmony default export */ var src_Table = (createBootstrapComponent(Table_Table, 'table'));\n// CONCATENATED MODULE: ./src/Tabs.js\n\n\n\nvar Tabs_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Tabs.js\";\n\n\n\n\n\n\n\n\n\n\n\nvar Tabs_TabContainer = src_TabContainer.ControlledComponent;\nvar Tabs_propTypes = {\n  /**\n   * Mark the Tab with a matching `eventKey` as active.\n   *\n   * @controllable onSelect\n   */\n  activeKey: prop_types_default.a.any,\n\n  /**\n   * Navigation style\n   *\n   * @type {('tabs'| 'pills')}\n   */\n  variant: prop_types_default.a.string,\n\n  /**\n   * Sets a default animation strategy for all children `<TabPane>`s. Use\n   * `false` to disable, `true` to enable the default `<Fade>` animation or\n   * a react-transition-group v2 `<Transition/>` component.\n   *\n   * @type {Transition | false}\n   * @default {Fade}\n   */\n  transition: prop_types_default.a.oneOfType([prop_types_default.a.oneOf([false]), prop_types_default.a.elementType]),\n\n  /**\n   * HTML id attribute, required if no `generateChildId` prop\n   * is specified.\n   *\n   * @type {string}\n   */\n  id: isRequiredForA11y_default()(prop_types_default.a.string),\n\n  /**\n   * Callback fired when a Tab is selected.\n   *\n   * ```js\n   * function (\n   *   Any eventKey,\n   *   SyntheticEvent event?\n   * )\n   * ```\n   *\n   * @controllable activeKey\n   */\n  onSelect: prop_types_default.a.func,\n\n  /**\n   * Wait until the first \"enter\" transition to mount tabs (add them to the DOM)\n   */\n  mountOnEnter: prop_types_default.a.bool,\n\n  /**\n   * Unmount tabs (remove it from the DOM) when it is no longer visible\n   */\n  unmountOnExit: prop_types_default.a.bool\n};\nvar Tabs_defaultProps = {\n  variant: 'tabs',\n  mountOnEnter: false,\n  unmountOnExit: false\n};\n\nfunction getDefaultActiveKey(children) {\n  var defaultActiveKey;\n  forEach(children, function (child) {\n    if (defaultActiveKey == null) {\n      defaultActiveKey = child.props.eventKey;\n    }\n  });\n  return defaultActiveKey;\n}\n\nvar Tabs_Tabs =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Tabs, _React$Component);\n\n  function Tabs() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = Tabs.prototype;\n\n  _proto.renderTab = function renderTab(child) {\n    var _child$props = child.props,\n        title = _child$props.title,\n        eventKey = _child$props.eventKey,\n        disabled = _child$props.disabled,\n        tabClassName = _child$props.tabClassName;\n\n    if (title == null) {\n      return null;\n    }\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_NavItem, {\n      as: src_NavLink,\n      eventKey: eventKey,\n      disabled: disabled,\n      className: tabClassName,\n      __source: {\n        fileName: Tabs_jsxFileName,\n        lineNumber: 104\n      },\n      __self: this\n    }, title);\n  };\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        id = _this$props.id,\n        onSelect = _this$props.onSelect,\n        transition = _this$props.transition,\n        mountOnEnter = _this$props.mountOnEnter,\n        unmountOnExit = _this$props.unmountOnExit,\n        children = _this$props.children,\n        _this$props$activeKey = _this$props.activeKey,\n        activeKey = _this$props$activeKey === void 0 ? getDefaultActiveKey(children) : _this$props$activeKey,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"id\", \"onSelect\", \"transition\", \"mountOnEnter\", \"unmountOnExit\", \"children\", \"activeKey\"]);\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Tabs_TabContainer, {\n      id: id,\n      activeKey: activeKey,\n      onSelect: onSelect,\n      transition: transition,\n      mountOnEnter: mountOnEnter,\n      unmountOnExit: unmountOnExit,\n      __source: {\n        fileName: Tabs_jsxFileName,\n        lineNumber: 128\n      },\n      __self: this\n    }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Nav, _extends({}, props, {\n      role: \"tablist\",\n      as: \"nav\",\n      __source: {\n        fileName: Tabs_jsxFileName,\n        lineNumber: 136\n      },\n      __self: this\n    }), map(children, this.renderTab)), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_TabContent, {\n      __source: {\n        fileName: Tabs_jsxFileName,\n        lineNumber: 140\n      },\n      __self: this\n    }, map(children, function (child) {\n      var childProps = _extends({}, child.props);\n\n      delete childProps.title;\n      delete childProps.disabled;\n      delete childProps.tabClassName;\n      return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_TabPane, _extends({}, childProps, {\n        __source: {\n          fileName: Tabs_jsxFileName,\n          lineNumber: 147\n        },\n        __self: this\n      }));\n    })));\n  };\n\n  return Tabs;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nTabs_Tabs.propTypes = Tabs_propTypes;\nTabs_Tabs.defaultProps = Tabs_defaultProps;\n/* harmony default export */ var src_Tabs = (uncontrollable_default()(Tabs_Tabs, {\n  activeKey: 'onSelect'\n}));\n// CONCATENATED MODULE: ./src/ToggleButton.js\n\n\n\nvar ToggleButton_jsxFileName = \"/Users/jason/src/react-bootstrap/src/ToggleButton.js\";\n\n\n\n\n\nvar ToggleButton_noop = function noop() {};\n\nvar ToggleButton_propTypes = {\n  /**\n   * The `<input>` element `type`\n   */\n  type: prop_types_default.a.oneOf(['checkbox', 'radio']),\n\n  /**\n   * The HTML input name, used to group like checkboxes or radio buttons together\n   * semantically\n   */\n  name: prop_types_default.a.string,\n\n  /**\n   * The checked state of the input, managed by `<ToggleButtonGroup>` automatically\n   */\n  checked: prop_types_default.a.bool,\n\n  /**\n   * The disabled state of both the label and input\n   */\n  disabled: prop_types_default.a.bool,\n\n  /**\n   * A callback fired when the underlying input element changes. This is passed\n   * directly to the `<input>` so shares the same signature as a native `onChange` event.\n   */\n  onChange: prop_types_default.a.func,\n\n  /**\n   * The value of the input, should be unique amoungst it's siblings when nested in a\n   * `ToggleButtonGroup`.\n   */\n  value: prop_types_default.a.any.isRequired,\n\n  /**\n   * A ref attached to the `<input>` element\n   * @type {ReactRef}\n   */\n  inputRef: prop_types_default.a.any,\n\n  /** @ignore */\n  innerRef: prop_types_default.a.any\n};\n\nvar ToggleButton_ToggleButton =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(ToggleButton, _React$Component);\n\n  function ToggleButton() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n    _this.state = {\n      focused: false\n    };\n\n    _this.handleFocus = function (e) {\n      if (e.target.tagName === 'INPUT') _this.setState({\n        focused: true\n      });\n    };\n\n    _this.handleBlur = function (e) {\n      if (e.target.tagName === 'INPUT') _this.setState({\n        focused: false\n      });\n    };\n\n    return _this;\n  }\n\n  var _proto = ToggleButton.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        children = _this$props.children,\n        name = _this$props.name,\n        className = _this$props.className,\n        checked = _this$props.checked,\n        type = _this$props.type,\n        onChange = _this$props.onChange,\n        value = _this$props.value,\n        disabled = _this$props.disabled,\n        inputRef = _this$props.inputRef,\n        innerRef = _this$props.innerRef,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"name\", \"className\", \"checked\", \"type\", \"onChange\", \"value\", \"disabled\", \"inputRef\", \"innerRef\"]);\n\n    var focused = this.state.focused;\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Button, _extends({}, props, {\n      ref: innerRef,\n      className: classnames_default()(className, focused && 'focus', disabled && 'disabled'),\n      type: null,\n      active: !!checked,\n      as: \"label\",\n      __source: {\n        fileName: ToggleButton_jsxFileName,\n        lineNumber: 80\n      },\n      __self: this\n    }), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"input\", {\n      name: name,\n      type: type,\n      value: value,\n      ref: inputRef,\n      autoComplete: \"off\",\n      checked: !!checked,\n      disabled: !!disabled,\n      onFocus: this.handleFocus,\n      onBlur: this.handleBlur,\n      onChange: onChange || ToggleButton_noop,\n      __source: {\n        fileName: ToggleButton_jsxFileName,\n        lineNumber: 92\n      },\n      __self: this\n    }), children);\n  };\n\n  return ToggleButton;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nToggleButton_ToggleButton.propTypes = ToggleButton_propTypes;\n/* harmony default export */ var src_ToggleButton = (external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (props, ref) {\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(ToggleButton_ToggleButton, _extends({\n    innerRef: ref\n  }, props, {\n    __source: {\n      fileName: ToggleButton_jsxFileName,\n      lineNumber: 114\n    },\n    __self: this\n  }));\n}));\n// EXTERNAL MODULE: ./node_modules/invariant/browser.js\nvar browser = __webpack_require__(24);\nvar browser_default = /*#__PURE__*/__webpack_require__.n(browser);\n\n// CONCATENATED MODULE: ./src/ToggleButtonGroup.js\n\n\n\nvar ToggleButtonGroup_jsxFileName = \"/Users/jason/src/react-bootstrap/src/ToggleButtonGroup.js\";\n\n\n\n\n\n\n\n\nvar ToggleButtonGroup_propTypes = {\n  /**\n   * An HTML `<input>` name for each child button.\n   *\n   * __Required if `type` is set to `'radio'`__\n   */\n  name: prop_types_default.a.string,\n\n  /**\n   * The value, or array of values, of the active (pressed) buttons\n   *\n   * @controllable onChange\n   */\n  value: prop_types_default.a.any,\n\n  /**\n   * Callback fired when a button is pressed, depending on whether the `type`\n   * is `'radio'` or `'checkbox'`, `onChange` will be called with the value or\n   * array of active values\n   *\n   * @controllable values\n   */\n  onChange: prop_types_default.a.func,\n\n  /**\n   * The input `type` of the rendered buttons, determines the toggle behavior\n   * of the buttons\n   */\n  type: prop_types_default.a.oneOf(['checkbox', 'radio']).isRequired\n};\nvar ToggleButtonGroup_defaultProps = {\n  type: 'radio'\n};\n\nvar ToggleButtonGroup_ToggleButtonGroup =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(ToggleButtonGroup, _React$Component);\n\n  function ToggleButtonGroup() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = ToggleButtonGroup.prototype;\n\n  _proto.getValues = function getValues() {\n    var value = this.props.value;\n    return value == null ? [] : [].concat(value);\n  };\n\n  _proto.handleToggle = function handleToggle(value, event) {\n    var _this$props = this.props,\n        type = _this$props.type,\n        onChange = _this$props.onChange;\n    var values = this.getValues();\n    var isActive = values.indexOf(value) !== -1;\n\n    if (type === 'radio') {\n      if (!isActive) onChange(value, event);\n      return;\n    }\n\n    if (isActive) {\n      onChange(values.filter(function (n) {\n        return n !== value;\n      }), event);\n    } else {\n      onChange([].concat(values, [value]), event);\n    }\n  };\n\n  _proto.render = function render() {\n    var _this = this;\n\n    var _this$props2 = this.props,\n        children = _this$props2.children,\n        type = _this$props2.type,\n        name = _this$props2.name,\n        props = _objectWithoutPropertiesLoose(_this$props2, [\"children\", \"type\", \"name\"]);\n\n    delete props.onChange;\n    delete props.value;\n    var values = this.getValues();\n    !(type !== 'radio' || !!name) ?  false ? undefined : browser_default()(false) : void 0;\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_ButtonGroup, _extends({}, props, {\n      toggle: true,\n      __source: {\n        fileName: ToggleButtonGroup_jsxFileName,\n        lineNumber: 84\n      },\n      __self: this\n    }), map(children, function (child) {\n      var _child$props = child.props,\n          value = _child$props.value,\n          onChange = _child$props.onChange;\n\n      var handler = function handler(e) {\n        return _this.handleToggle(value, e);\n      };\n\n      return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.cloneElement(child, {\n        type: type,\n        name: child.name || name,\n        checked: values.indexOf(value) !== -1,\n        onChange: utils_createChainedFunction(onChange, handler)\n      });\n    }));\n  };\n\n  return ToggleButtonGroup;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nToggleButtonGroup_ToggleButtonGroup.propTypes = ToggleButtonGroup_propTypes;\nToggleButtonGroup_ToggleButtonGroup.defaultProps = ToggleButtonGroup_defaultProps;\nvar UncontrolledToggleButtonGroup = uncontrollable_default()(ToggleButtonGroup_ToggleButtonGroup, {\n  value: 'onChange'\n});\nUncontrolledToggleButtonGroup.Button = src_ToggleButton;\n/* harmony default export */ var src_ToggleButtonGroup = (UncontrolledToggleButtonGroup);\n// CONCATENATED MODULE: ./src/Tooltip.js\n\n\nvar Tooltip_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Tooltip.js\";\n\n\n\n\n\nvar Tooltip_propTypes = {\n  /**\n   * @default 'tooltip'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * An html id attribute, necessary for accessibility\n   * @type {string|number}\n   * @required\n   */\n  id: isRequiredForA11y_default()(prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.number])),\n\n  /**\n   * Sets the direction the Tooltip is positioned towards.\n   *\n   * > This is generally provided by the `Overlay` component positioning the tooltip\n   */\n  placement: prop_types_default.a.oneOf(['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start']),\n\n  /**\n   * An Overlay injected set of props for positioning the tooltip arrow.\n   *\n   * > This is generally provided by the `Overlay` component positioning the tooltip\n   *\n   * @type {{ ref: ReactRef, style: Object }}\n   */\n  arrowProps: prop_types_default.a.shape({\n    ref: prop_types_default.a.any,\n    style: prop_types_default.a.object\n  }),\n\n  /** @private */\n  innerRef: prop_types_default.a.any,\n\n  /** @private */\n  scheduleUpdate: prop_types_default.a.func,\n\n  /** @private */\n  outOfBoundaries: prop_types_default.a.any\n};\nvar Tooltip_defaultProps = {\n  placement: 'right'\n};\n\nfunction Tooltip(_ref) {\n  var bsPrefix = _ref.bsPrefix,\n      innerRef = _ref.innerRef,\n      placement = _ref.placement,\n      className = _ref.className,\n      style = _ref.style,\n      children = _ref.children,\n      arrowProps = _ref.arrowProps,\n      _ = _ref.scheduleUpdate,\n      _1 = _ref.outOfBoundaries,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"innerRef\", \"placement\", \"className\", \"style\", \"children\", \"arrowProps\", \"scheduleUpdate\", \"outOfBoundaries\"]);\n\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", _extends({\n    ref: innerRef,\n    style: style,\n    role: \"tooltip\",\n    \"x-placement\": placement,\n    className: classnames_default()(className, bsPrefix, \"bs-tooltip-\" + placement)\n  }, props, {\n    __source: {\n      fileName: Tooltip_jsxFileName,\n      lineNumber: 84\n    },\n    __self: this\n  }), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", _extends({\n    className: \"arrow\"\n  }, arrowProps, {\n    __source: {\n      fileName: Tooltip_jsxFileName,\n      lineNumber: 92\n    },\n    __self: this\n  })), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", {\n    className: bsPrefix + \"-inner\",\n    __source: {\n      fileName: Tooltip_jsxFileName,\n      lineNumber: 93\n    },\n    __self: this\n  }, children));\n}\n\nTooltip.propTypes = Tooltip_propTypes;\nTooltip.defaultProps = Tooltip_defaultProps;\n/* harmony default export */ var src_Tooltip = (createBootstrapComponent(Tooltip, 'tooltip'));\n// CONCATENATED MODULE: ./src/index.js\n/* concated harmony reexport Accordion */__webpack_require__.d(__webpack_exports__, \"Accordion\", function() { return src_Accordion; });\n/* concated harmony reexport Alert */__webpack_require__.d(__webpack_exports__, \"Alert\", function() { return src_Alert; });\n/* concated harmony reexport Badge */__webpack_require__.d(__webpack_exports__, \"Badge\", function() { return src_Badge; });\n/* concated harmony reexport Breadcrumb */__webpack_require__.d(__webpack_exports__, \"Breadcrumb\", function() { return src_Breadcrumb; });\n/* concated harmony reexport BreadcrumbItem */__webpack_require__.d(__webpack_exports__, \"BreadcrumbItem\", function() { return src_BreadcrumbItem; });\n/* concated harmony reexport Button */__webpack_require__.d(__webpack_exports__, \"Button\", function() { return src_Button; });\n/* concated harmony reexport ButtonGroup */__webpack_require__.d(__webpack_exports__, \"ButtonGroup\", function() { return src_ButtonGroup; });\n/* concated harmony reexport ButtonToolbar */__webpack_require__.d(__webpack_exports__, \"ButtonToolbar\", function() { return src_ButtonToolbar; });\n/* concated harmony reexport Card */__webpack_require__.d(__webpack_exports__, \"Card\", function() { return src_Card; });\n/* concated harmony reexport CardColumns */__webpack_require__.d(__webpack_exports__, \"CardColumns\", function() { return CardColumns; });\n/* concated harmony reexport CardDeck */__webpack_require__.d(__webpack_exports__, \"CardDeck\", function() { return CardDeck; });\n/* concated harmony reexport CardImg */__webpack_require__.d(__webpack_exports__, \"CardImg\", function() { return src_CardImg; });\n/* concated harmony reexport CardGroup */__webpack_require__.d(__webpack_exports__, \"CardGroup\", function() { return CardGroup; });\n/* concated harmony reexport Carousel */__webpack_require__.d(__webpack_exports__, \"Carousel\", function() { return src_Carousel; });\n/* concated harmony reexport CarouselItem */__webpack_require__.d(__webpack_exports__, \"CarouselItem\", function() { return CarouselItem; });\n/* concated harmony reexport CloseButton */__webpack_require__.d(__webpack_exports__, \"CloseButton\", function() { return src_CloseButton; });\n/* concated harmony reexport Col */__webpack_require__.d(__webpack_exports__, \"Col\", function() { return src_Col; });\n/* concated harmony reexport Collapse */__webpack_require__.d(__webpack_exports__, \"Collapse\", function() { return src_Collapse; });\n/* concated harmony reexport Dropdown */__webpack_require__.d(__webpack_exports__, \"Dropdown\", function() { return src_Dropdown; });\n/* concated harmony reexport DropdownButton */__webpack_require__.d(__webpack_exports__, \"DropdownButton\", function() { return src_DropdownButton; });\n/* concated harmony reexport DropdownItem */__webpack_require__.d(__webpack_exports__, \"DropdownItem\", function() { return src_DropdownItem; });\n/* concated harmony reexport Fade */__webpack_require__.d(__webpack_exports__, \"Fade\", function() { return src_Fade; });\n/* concated harmony reexport Form */__webpack_require__.d(__webpack_exports__, \"Form\", function() { return src_Form; });\n/* concated harmony reexport FormControl */__webpack_require__.d(__webpack_exports__, \"FormControl\", function() { return src_FormControl; });\n/* concated harmony reexport FormCheck */__webpack_require__.d(__webpack_exports__, \"FormCheck\", function() { return src_FormCheck; });\n/* concated harmony reexport FormGroup */__webpack_require__.d(__webpack_exports__, \"FormGroup\", function() { return src_FormGroup; });\n/* concated harmony reexport FormLabel */__webpack_require__.d(__webpack_exports__, \"FormLabel\", function() { return src_FormLabel; });\n/* concated harmony reexport FormText */__webpack_require__.d(__webpack_exports__, \"FormText\", function() { return src_FormText; });\n/* concated harmony reexport Container */__webpack_require__.d(__webpack_exports__, \"Container\", function() { return src_Container; });\n/* concated harmony reexport Image */__webpack_require__.d(__webpack_exports__, \"Image\", function() { return src_Image; });\n/* concated harmony reexport Figure */__webpack_require__.d(__webpack_exports__, \"Figure\", function() { return src_Figure; });\n/* concated harmony reexport InputGroup */__webpack_require__.d(__webpack_exports__, \"InputGroup\", function() { return src_InputGroup; });\n/* concated harmony reexport Jumbotron */__webpack_require__.d(__webpack_exports__, \"Jumbotron\", function() { return src_Jumbotron; });\n/* concated harmony reexport ListGroup */__webpack_require__.d(__webpack_exports__, \"ListGroup\", function() { return src_ListGroup; });\n/* concated harmony reexport ListGroupItem */__webpack_require__.d(__webpack_exports__, \"ListGroupItem\", function() { return src_ListGroupItem; });\n/* concated harmony reexport Media */__webpack_require__.d(__webpack_exports__, \"Media\", function() { return src_Media; });\n/* concated harmony reexport Modal */__webpack_require__.d(__webpack_exports__, \"Modal\", function() { return src_Modal; });\n/* concated harmony reexport ModalBody */__webpack_require__.d(__webpack_exports__, \"ModalBody\", function() { return ModalBody; });\n/* concated harmony reexport ModalDialog */__webpack_require__.d(__webpack_exports__, \"ModalDialog\", function() { return src_ModalDialog; });\n/* concated harmony reexport ModalFooter */__webpack_require__.d(__webpack_exports__, \"ModalFooter\", function() { return ModalFooter; });\n/* concated harmony reexport ModalTitle */__webpack_require__.d(__webpack_exports__, \"ModalTitle\", function() { return ModalTitle; });\n/* concated harmony reexport Nav */__webpack_require__.d(__webpack_exports__, \"Nav\", function() { return src_Nav; });\n/* concated harmony reexport Navbar */__webpack_require__.d(__webpack_exports__, \"Navbar\", function() { return src_Navbar; });\n/* concated harmony reexport NavbarBrand */__webpack_require__.d(__webpack_exports__, \"NavbarBrand\", function() { return src_NavbarBrand; });\n/* concated harmony reexport NavDropdown */__webpack_require__.d(__webpack_exports__, \"NavDropdown\", function() { return src_NavDropdown; });\n/* concated harmony reexport NavItem */__webpack_require__.d(__webpack_exports__, \"NavItem\", function() { return src_NavItem; });\n/* concated harmony reexport Overlay */__webpack_require__.d(__webpack_exports__, \"Overlay\", function() { return src_Overlay; });\n/* concated harmony reexport OverlayTrigger */__webpack_require__.d(__webpack_exports__, \"OverlayTrigger\", function() { return src_OverlayTrigger; });\n/* concated harmony reexport PageItem */__webpack_require__.d(__webpack_exports__, \"PageItem\", function() { return PageItem; });\n/* concated harmony reexport Pagination */__webpack_require__.d(__webpack_exports__, \"Pagination\", function() { return src_Pagination; });\n/* concated harmony reexport Popover */__webpack_require__.d(__webpack_exports__, \"Popover\", function() { return src_Popover; });\n/* concated harmony reexport ProgressBar */__webpack_require__.d(__webpack_exports__, \"ProgressBar\", function() { return src_ProgressBar; });\n/* concated harmony reexport ResponsiveEmbed */__webpack_require__.d(__webpack_exports__, \"ResponsiveEmbed\", function() { return src_ResponsiveEmbed; });\n/* concated harmony reexport Row */__webpack_require__.d(__webpack_exports__, \"Row\", function() { return src_Row; });\n/* concated harmony reexport SafeAnchor */__webpack_require__.d(__webpack_exports__, \"SafeAnchor\", function() { return src_SafeAnchor; });\n/* concated harmony reexport Spinner */__webpack_require__.d(__webpack_exports__, \"Spinner\", function() { return src_Spinner; });\n/* concated harmony reexport SplitButton */__webpack_require__.d(__webpack_exports__, \"SplitButton\", function() { return src_SplitButton; });\n/* concated harmony reexport Tab */__webpack_require__.d(__webpack_exports__, \"Tab\", function() { return src_Tab; });\n/* concated harmony reexport TabContainer */__webpack_require__.d(__webpack_exports__, \"TabContainer\", function() { return src_TabContainer; });\n/* concated harmony reexport TabContent */__webpack_require__.d(__webpack_exports__, \"TabContent\", function() { return src_TabContent; });\n/* concated harmony reexport Table */__webpack_require__.d(__webpack_exports__, \"Table\", function() { return src_Table; });\n/* concated harmony reexport TabPane */__webpack_require__.d(__webpack_exports__, \"TabPane\", function() { return src_TabPane; });\n/* concated harmony reexport Tabs */__webpack_require__.d(__webpack_exports__, \"Tabs\", function() { return src_Tabs; });\n/* concated harmony reexport ThemeProvider */__webpack_require__.d(__webpack_exports__, \"ThemeProvider\", function() { return src_ThemeProvider; });\n/* concated harmony reexport ToggleButton */__webpack_require__.d(__webpack_exports__, \"ToggleButton\", function() { return src_ToggleButton; });\n/* concated harmony reexport ToggleButtonGroup */__webpack_require__.d(__webpack_exports__, \"ToggleButtonGroup\", function() { return src_ToggleButtonGroup; });\n/* concated harmony reexport Tooltip */__webpack_require__.d(__webpack_exports__, \"Tooltip\", function() { return src_Tooltip; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/***/ })\n/******/ ]);\n});"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_024_sample_app_persist_db/ReadMe.md",
    "content": "[Persist Data](https://docs.docker.com/get-started/05_persisting_data/)\n\n\n- Start an ubuntu container that will create a file named /data.txt with a random number between 1 and 10000.\n\n```bash\n$ docker run -d ubuntu bash -c \"shuf -i 1-10000 -n 1 -o /data.txt && tail -f /dev/null\"\nUnable to find image 'ubuntu:latest' locally\nlatest: Pulling from library/ubuntu\n405f018f9d1d: Pull complete \nDigest: sha256:b6b83d3c331794420340093eb706a6f152d9c1fa51b262d9bf34594887c2c7ac\nStatus: Downloaded newer image for ubuntu:latest\ne50a2711cff9a7297fe7fa056f3bd63ea80ca2ea84d12e74a8c7724d31ab5e22\n```\n\n- Let's exec into the container to check\n\n```bash\n$ docker ps            \nCONTAINER ID   IMAGE                  COMMAND                  CREATED              STATUS              PORTS     NAMES\ne50a2711cff9   ubuntu                 \"bash -c 'shuf -i 1-…\"   About a minute ago   Up About a minute             gracious_hofstadter\n\n$ docker exec -it e50a2711cff9 sh     \n# cat /data.txt\n8364\n```\n\n- Now, let’s start another ubuntu container (the same image) and we’ll see we don’t have the same file.\n\n```bash\n$ docker run -it ubuntu ls /\nbin   dev  home  lib32  libx32  mnt  proc  run   srv  tmp  var\nboot  etc  lib   lib64  media   opt  root  sbin  sys  usr\n```\n\n- And look! There’s no data.txt file there! That’s because it was written to the scratch space for only the first container.\n\n```bash\n$ docker rm -f e50a2711cff9\ne50a2711cff9\n```\n\n\n- Now we will try to persist the data. Create a volume by using the docker volume create command.\n\n```bash\n docker volume create todo-db\ntodo-db\n```\n\n- Stop any existing containers if its already running\n\n```bash\n$ docker run -dp 3000:3000 -v todo-db:/etc/todos getting-started\naebdfdb8fdc54fbbfd30b3850718745d0a3e0df0b5f79f496f2ce1365a9a3cac\n```\n\n- Add some items \n\n![](.images/2022-07-25-17-23-50.png)\n\n- Now let's remove the container completely\n\n```bash\n$ docker rm -f aebdfdb8fdc5\naebdfdb8fdc5\n```\n\n\n- Start a new container again using the same command\n\n```bash\n$ docker run -dp 3000:3000 -v todo-db:/etc/todos getting-started\n5acf95e35e0dc8d3b50fda6faf6d7618c66948103f7e423e1be033951f338059\n```\n\n- You will find that the items are still there\n\n- Let's inspect the docker volume to know more about where its actually storing it.\n\n```bash\n$ docker volume inspect todo-db\n[\n    {\n        \"CreatedAt\": \"2022-07-25T13:21:53Z\",\n        \"Driver\": \"local\",\n        \"Labels\": {},\n        \"Mountpoint\": \"/var/lib/docker/volumes/todo-db/_data\",\n        \"Name\": \"todo-db\",\n        \"Options\": {},\n        \"Scope\": \"local\"\n    }\n]\n```"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_024_sample_app_persist_db/app/Dockerfile",
    "content": "# syntax=docker/dockerfile:1\nFROM node:12-alpine\nRUN apk add --no-cache python2 g++ make\nWORKDIR /app\nCOPY . .\nRUN yarn install --production\nCMD [\"node\", \"src/index.js\"]\nEXPOSE 3000"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_024_sample_app_persist_db/app/package.json",
    "content": "{\n  \"name\": \"101-app\",\n  \"version\": \"1.0.0\",\n  \"main\": \"index.js\",\n  \"license\": \"MIT\",\n  \"scripts\": {\n    \"prettify\": \"prettier -l --write \\\"**/*.js\\\"\",\n    \"test\": \"jest\",\n    \"dev\": \"nodemon src/index.js\"\n  },\n  \"dependencies\": {\n    \"express\": \"^4.17.1\",\n    \"mysql\": \"^2.17.1\",\n    \"sqlite3\": \"^5.0.0\",\n    \"uuid\": \"^3.3.3\",\n    \"wait-port\": \"^0.2.2\"\n  },\n  \"resolutions\": {\n    \"ansi-regex\": \"5.0.1\"\n  },\n  \"prettier\": {\n    \"trailingComma\": \"all\",\n    \"tabWidth\": 4,\n    \"useTabs\": false,\n    \"semi\": true,\n    \"singleQuote\": true\n  },\n  \"devDependencies\": {\n    \"jest\": \"^27.2.5\",\n    \"nodemon\": \"^2.0.13\",\n    \"prettier\": \"^1.18.2\"\n  }\n}\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_024_sample_app_persist_db/app/spec/persistence/sqlite.spec.js",
    "content": "const db = require('../../src/persistence/sqlite');\nconst fs = require('fs');\nconst location = process.env.SQLITE_DB_LOCATION || '/etc/todos/todo.db';\n\nconst ITEM = {\n    id: '7aef3d7c-d301-4846-8358-2a91ec9d6be3',\n    name: 'Test',\n    completed: false,\n};\n\nbeforeEach(() => {\n    if (fs.existsSync(location)) {\n        fs.unlinkSync(location);\n    }\n});\n\ntest('it initializes correctly', async () => {\n    await db.init();\n});\n\ntest('it can store and retrieve items', async () => {\n    await db.init();\n\n    await db.storeItem(ITEM);\n\n    const items = await db.getItems();\n    expect(items.length).toBe(1);\n    expect(items[0]).toEqual(ITEM);\n});\n\ntest('it can update an existing item', async () => {\n    await db.init();\n\n    const initialItems = await db.getItems();\n    expect(initialItems.length).toBe(0);\n\n    await db.storeItem(ITEM);\n\n    await db.updateItem(\n        ITEM.id,\n        Object.assign({}, ITEM, { completed: !ITEM.completed }),\n    );\n\n    const items = await db.getItems();\n    expect(items.length).toBe(1);\n    expect(items[0].completed).toBe(!ITEM.completed);\n});\n\ntest('it can remove an existing item', async () => {\n    await db.init();\n    await db.storeItem(ITEM);\n\n    await db.removeItem(ITEM.id);\n\n    const items = await db.getItems();\n    expect(items.length).toBe(0);\n});\n\ntest('it can get a single item', async () => {\n    await db.init();\n    await db.storeItem(ITEM);\n\n    const item = await db.getItem(ITEM.id);\n    expect(item).toEqual(ITEM);\n});\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_024_sample_app_persist_db/app/spec/routes/addItem.spec.js",
    "content": "const db = require('../../src/persistence');\nconst addItem = require('../../src/routes/addItem');\nconst ITEM = { id: 12345 };\nconst uuid = require('uuid/v4');\n\njest.mock('uuid/v4', () => jest.fn());\n\njest.mock('../../src/persistence', () => ({\n    removeItem: jest.fn(),\n    storeItem: jest.fn(),\n    getItem: jest.fn(),\n}));\n\ntest('it stores item correctly', async () => {\n    const id = 'something-not-a-uuid';\n    const name = 'A sample item';\n    const req = { body: { name } };\n    const res = { send: jest.fn() };\n\n    uuid.mockReturnValue(id);\n\n    await addItem(req, res);\n\n    const expectedItem = { id, name, completed: false };\n\n    expect(db.storeItem.mock.calls.length).toBe(1);\n    expect(db.storeItem.mock.calls[0][0]).toEqual(expectedItem);\n    expect(res.send.mock.calls[0].length).toBe(1);\n    expect(res.send.mock.calls[0][0]).toEqual(expectedItem);\n});\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_024_sample_app_persist_db/app/spec/routes/deleteItem.spec.js",
    "content": "const db = require('../../src/persistence');\nconst deleteItem = require('../../src/routes/deleteItem');\nconst ITEM = { id: 12345 };\n\njest.mock('../../src/persistence', () => ({\n    removeItem: jest.fn(),\n    getItem: jest.fn(),\n}));\n\ntest('it removes item correctly', async () => {\n    const req = { params: { id: 12345 } };\n    const res = { sendStatus: jest.fn() };\n\n    await deleteItem(req, res);\n\n    expect(db.removeItem.mock.calls.length).toBe(1);\n    expect(db.removeItem.mock.calls[0][0]).toBe(req.params.id);\n    expect(res.sendStatus.mock.calls[0].length).toBe(1);\n    expect(res.sendStatus.mock.calls[0][0]).toBe(200);\n});\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_024_sample_app_persist_db/app/spec/routes/getItems.spec.js",
    "content": "const db = require('../../src/persistence');\nconst getItems = require('../../src/routes/getItems');\nconst ITEMS = [{ id: 12345 }];\n\njest.mock('../../src/persistence', () => ({\n    getItems: jest.fn(),\n}));\n\ntest('it gets items correctly', async () => {\n    const req = {};\n    const res = { send: jest.fn() };\n    db.getItems.mockReturnValue(Promise.resolve(ITEMS));\n\n    await getItems(req, res);\n\n    expect(db.getItems.mock.calls.length).toBe(1);\n    expect(res.send.mock.calls[0].length).toBe(1);\n    expect(res.send.mock.calls[0][0]).toEqual(ITEMS);\n});\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_024_sample_app_persist_db/app/spec/routes/updateItem.spec.js",
    "content": "const db = require('../../src/persistence');\nconst updateItem = require('../../src/routes/updateItem');\nconst ITEM = { id: 12345 };\n\njest.mock('../../src/persistence', () => ({\n    getItem: jest.fn(),\n    updateItem: jest.fn(),\n}));\n\ntest('it updates items correctly', async () => {\n    const req = {\n        params: { id: 1234 },\n        body: { name: 'New title', completed: false },\n    };\n    const res = { send: jest.fn() };\n\n    db.getItem.mockReturnValue(Promise.resolve(ITEM));\n\n    await updateItem(req, res);\n\n    expect(db.updateItem.mock.calls.length).toBe(1);\n    expect(db.updateItem.mock.calls[0][0]).toBe(req.params.id);\n    expect(db.updateItem.mock.calls[0][1]).toEqual({\n        name: 'New title',\n        completed: false,\n    });\n\n    expect(db.getItem.mock.calls.length).toBe(1);\n    expect(db.getItem.mock.calls[0][0]).toBe(req.params.id);\n\n    expect(res.send.mock.calls[0].length).toBe(1);\n    expect(res.send.mock.calls[0][0]).toEqual(ITEM);\n});\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_024_sample_app_persist_db/app/src/index.js",
    "content": "const express = require('express');\nconst app = express();\nconst db = require('./persistence');\nconst getItems = require('./routes/getItems');\nconst addItem = require('./routes/addItem');\nconst updateItem = require('./routes/updateItem');\nconst deleteItem = require('./routes/deleteItem');\n\napp.use(express.json());\napp.use(express.static(__dirname + '/static'));\n\napp.get('/items', getItems);\napp.post('/items', addItem);\napp.put('/items/:id', updateItem);\napp.delete('/items/:id', deleteItem);\n\ndb.init().then(() => {\n    app.listen(3000, () => console.log('Listening on port 3000'));\n}).catch((err) => {\n    console.error(err);\n    process.exit(1);\n});\n\nconst gracefulShutdown = () => {\n    db.teardown()\n        .catch(() => {})\n        .then(() => process.exit());\n};\n\nprocess.on('SIGINT', gracefulShutdown);\nprocess.on('SIGTERM', gracefulShutdown);\nprocess.on('SIGUSR2', gracefulShutdown); // Sent by nodemon\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_024_sample_app_persist_db/app/src/persistence/index.js",
    "content": "if (process.env.MYSQL_HOST) module.exports = require('./mysql');\nelse module.exports = require('./sqlite');\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_024_sample_app_persist_db/app/src/persistence/mysql.js",
    "content": "const waitPort = require('wait-port');\nconst fs = require('fs');\nconst mysql = require('mysql');\n\nconst {\n    MYSQL_HOST: HOST,\n    MYSQL_HOST_FILE: HOST_FILE,\n    MYSQL_USER: USER,\n    MYSQL_USER_FILE: USER_FILE,\n    MYSQL_PASSWORD: PASSWORD,\n    MYSQL_PASSWORD_FILE: PASSWORD_FILE,\n    MYSQL_DB: DB,\n    MYSQL_DB_FILE: DB_FILE,\n} = process.env;\n\nlet pool;\n\nasync function init() {\n    const host = HOST_FILE ? fs.readFileSync(HOST_FILE) : HOST;\n    const user = USER_FILE ? fs.readFileSync(USER_FILE) : USER;\n    const password = PASSWORD_FILE ? fs.readFileSync(PASSWORD_FILE) : PASSWORD;\n    const database = DB_FILE ? fs.readFileSync(DB_FILE) : DB;\n\n    await waitPort({ host, port : 3306});\n\n    pool = mysql.createPool({\n        connectionLimit: 5,\n        host,\n        user,\n        password,\n        database,\n        charset: 'utf8mb4',\n    });\n\n    return new Promise((acc, rej) => {\n        pool.query(\n            'CREATE TABLE IF NOT EXISTS todo_items (id varchar(36), name varchar(255), completed boolean) DEFAULT CHARSET utf8mb4',\n            err => {\n                if (err) return rej(err);\n\n                console.log(`Connected to mysql db at host ${HOST}`);\n                acc();\n            },\n        );\n    });\n}\n\nasync function teardown() {\n    return new Promise((acc, rej) => {\n        pool.end(err => {\n            if (err) rej(err);\n            else acc();\n        });\n    });\n}\n\nasync function getItems() {\n    return new Promise((acc, rej) => {\n        pool.query('SELECT * FROM todo_items', (err, rows) => {\n            if (err) return rej(err);\n            acc(\n                rows.map(item =>\n                    Object.assign({}, item, {\n                        completed: item.completed === 1,\n                    }),\n                ),\n            );\n        });\n    });\n}\n\nasync function getItem(id) {\n    return new Promise((acc, rej) => {\n        pool.query('SELECT * FROM todo_items WHERE id=?', [id], (err, rows) => {\n            if (err) return rej(err);\n            acc(\n                rows.map(item =>\n                    Object.assign({}, item, {\n                        completed: item.completed === 1,\n                    }),\n                )[0],\n            );\n        });\n    });\n}\n\nasync function storeItem(item) {\n    return new Promise((acc, rej) => {\n        pool.query(\n            'INSERT INTO todo_items (id, name, completed) VALUES (?, ?, ?)',\n            [item.id, item.name, item.completed ? 1 : 0],\n            err => {\n                if (err) return rej(err);\n                acc();\n            },\n        );\n    });\n}\n\nasync function updateItem(id, item) {\n    return new Promise((acc, rej) => {\n        pool.query(\n            'UPDATE todo_items SET name=?, completed=? WHERE id=?',\n            [item.name, item.completed ? 1 : 0, id],\n            err => {\n                if (err) return rej(err);\n                acc();\n            },\n        );\n    });\n}\n\nasync function removeItem(id) {\n    return new Promise((acc, rej) => {\n        pool.query('DELETE FROM todo_items WHERE id = ?', [id], err => {\n            if (err) return rej(err);\n            acc();\n        });\n    });\n}\n\nmodule.exports = {\n    init,\n    teardown,\n    getItems,\n    getItem,\n    storeItem,\n    updateItem,\n    removeItem,\n};\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_024_sample_app_persist_db/app/src/persistence/sqlite.js",
    "content": "const sqlite3 = require('sqlite3').verbose();\nconst fs = require('fs');\nconst location = process.env.SQLITE_DB_LOCATION || '/etc/todos/todo.db';\n\nlet db, dbAll, dbRun;\n\nfunction init() {\n    const dirName = require('path').dirname(location);\n    if (!fs.existsSync(dirName)) {\n        fs.mkdirSync(dirName, { recursive: true });\n    }\n\n    return new Promise((acc, rej) => {\n        db = new sqlite3.Database(location, err => {\n            if (err) return rej(err);\n\n            if (process.env.NODE_ENV !== 'test')\n                console.log(`Using sqlite database at ${location}`);\n\n            db.run(\n                'CREATE TABLE IF NOT EXISTS todo_items (id varchar(36), name varchar(255), completed boolean)',\n                (err, result) => {\n                    if (err) return rej(err);\n                    acc();\n                },\n            );\n        });\n    });\n}\n\nasync function teardown() {\n    return new Promise((acc, rej) => {\n        db.close(err => {\n            if (err) rej(err);\n            else acc();\n        });\n    });\n}\n\nasync function getItems() {\n    return new Promise((acc, rej) => {\n        db.all('SELECT * FROM todo_items', (err, rows) => {\n            if (err) return rej(err);\n            acc(\n                rows.map(item =>\n                    Object.assign({}, item, {\n                        completed: item.completed === 1,\n                    }),\n                ),\n            );\n        });\n    });\n}\n\nasync function getItem(id) {\n    return new Promise((acc, rej) => {\n        db.all('SELECT * FROM todo_items WHERE id=?', [id], (err, rows) => {\n            if (err) return rej(err);\n            acc(\n                rows.map(item =>\n                    Object.assign({}, item, {\n                        completed: item.completed === 1,\n                    }),\n                )[0],\n            );\n        });\n    });\n}\n\nasync function storeItem(item) {\n    return new Promise((acc, rej) => {\n        db.run(\n            'INSERT INTO todo_items (id, name, completed) VALUES (?, ?, ?)',\n            [item.id, item.name, item.completed ? 1 : 0],\n            err => {\n                if (err) return rej(err);\n                acc();\n            },\n        );\n    });\n}\n\nasync function updateItem(id, item) {\n    return new Promise((acc, rej) => {\n        db.run(\n            'UPDATE todo_items SET name=?, completed=? WHERE id = ?',\n            [item.name, item.completed ? 1 : 0, id],\n            err => {\n                if (err) return rej(err);\n                acc();\n            },\n        );\n    });\n} \n\nasync function removeItem(id) {\n    return new Promise((acc, rej) => {\n        db.run('DELETE FROM todo_items WHERE id = ?', [id], err => {\n            if (err) return rej(err);\n            acc();\n        });\n    });\n}\n\nmodule.exports = {\n    init,\n    teardown,\n    getItems,\n    getItem,\n    storeItem,\n    updateItem,\n    removeItem,\n};\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_024_sample_app_persist_db/app/src/routes/addItem.js",
    "content": "const db = require('../persistence');\nconst uuid = require('uuid/v4');\n\nmodule.exports = async (req, res) => {\n    const item = {\n        id: uuid(),\n        name: req.body.name,\n        completed: false,\n    };\n\n    await db.storeItem(item);\n    res.send(item);\n};\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_024_sample_app_persist_db/app/src/routes/deleteItem.js",
    "content": "const db = require('../persistence');\n\nmodule.exports = async (req, res) => {\n    await db.removeItem(req.params.id);\n    res.sendStatus(200);\n};\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_024_sample_app_persist_db/app/src/routes/getItems.js",
    "content": "const db = require('../persistence');\n\nmodule.exports = async (req, res) => {\n    const items = await db.getItems();\n    res.send(items);\n};\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_024_sample_app_persist_db/app/src/routes/updateItem.js",
    "content": "const db = require('../persistence');\n\nmodule.exports = async (req, res) => {\n    await db.updateItem(req.params.id, {\n        name: req.body.name,\n        completed: req.body.completed,\n    });\n    const item = await db.getItem(req.params.id);\n    res.send(item);\n};\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_024_sample_app_persist_db/app/src/static/css/font-awesome/fa-brands-400.svg#fontawesome",
    "content": "<?xml version=\"1.0\" standalone=\"no\"?>\n<!--\nFont Awesome Free 5.10.2 by @fontawesome - https://fontawesome.com\nLicense - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n-->\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\" >\n<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\">\n<metadata>\nCreated by FontForge 20190801 at Thu Aug 22 14:41:09 2019\n By Robert Madole\nCopyright (c) Font Awesome\n</metadata>\n<defs>\n<font id=\"FontAwesome5Brands-Regular\" horiz-adv-x=\"448\" >\n  <font-face \n    font-family=\"Font Awesome 5 Brands Regular\"\n    font-weight=\"400\"\n    font-stretch=\"normal\"\n    units-per-em=\"512\"\n    panose-1=\"2 0 5 3 0 0 0 0 0 0\"\n    ascent=\"448\"\n    descent=\"-64\"\n    bbox=\"-0.200195 -66.9505 641.5 448.3\"\n    underline-thickness=\"25\"\n    underline-position=\"-50\"\n    unicode-range=\"U+0020-F89E\"\n  />\n    <missing-glyph />\n    <glyph glyph-name=\"twitter-square\" unicode=\"&#xf081;\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM351.1 257.2c12.8008 9.2998 24 20.8994 32.9004 34c-11.7998 -5.10059 -24.5996 -8.7998 -37.7998 -10.2002\nc13.5996 8.09961 23.8994 20.9004 28.7998 36.0996c-12.5996 -7.5 -26.7998 -13 -41.5996 -15.7998c-12 12.7998 -29 20.7002 -47.9004 20.7002c-40 0 -73.2998 -36.0996 -64 -80.5996c-54.4004 2.7998 -102.9 28.7998 -135.2 68.5996\nc-5.7002 -9.7002 -8.89941 -20.9004 -8.89941 -33.0996v-0.107422c0 -19.3584 13.0811 -43.7715 29.1992 -54.4932c-10.6992 0.400391 -20.8994 3.40039 -29.5996 8.2998v-0.799805c0 -31.8994 22.5 -58.2998 52.5 -64.3994\nc-10.4004 -2.7002 -19.5 -2.7002 -29.5996 -1.2002c8.2998 -26 32.5 -44.9004 61.2998 -45.5c-22.5 -17.6006 -50.7002 -28 -81.4004 -28c-5.39941 0 -10.5 0.200195 -15.7998 0.799805c29 -18.5996 63.5 -29.4004 100.7 -29.4004c120.6 0 186.6 99.9004 186.6 186.601\nc0 2.7998 0 5.7002 -0.200195 8.5z\" />\n    <glyph glyph-name=\"facebook-square\" unicode=\"&#xf082;\" \nd=\"M400 416c26.4961 0 48 -21.5039 48 -48v-352c0 -26.4961 -21.5039 -48 -48 -48h-137.25v152.31h57.7803l11 71.6904h-68.7803v46.5498c0 19.6104 9.61035 38.7305 40.4199 38.7305h31.2705v61s-28.3809 4.83984 -55.5205 4.83984\nc-56.6699 0 -93.6699 -34.3301 -93.6699 -96.4805v-54.6396h-63v-71.6904h63v-152.31h-137.25c-26.4961 0 -48 21.5039 -48 48v352c0 26.4961 21.5039 48 48 48h352z\" />\n    <glyph glyph-name=\"linkedin\" unicode=\"&#xf08c;\" \nd=\"M416 416c17.5996 0 32 -14.5 32 -32.2998v-383.4c0 -17.7998 -14.4004 -32.2998 -32 -32.2998h-384.1c-17.6006 0 -31.9004 14.5 -31.9004 32.2998v383.4c0 17.7998 14.2998 32.2998 31.9004 32.2998h384.1zM135.4 32h0.0996094v213.8h-66.5v-213.8h66.4004zM102.2 275\nc21.2998 0 38.5 17.2002 38.5 38.5c0 21.2002 -17.2998 38.5 -38.5 38.5c-21.2998 0 -38.5 -17.2998 -38.5 -38.5s17.2002 -38.5 38.5 -38.5zM384.3 32v117.2c0 57.5996 -12.5 101.899 -79.7002 101.899c-32.2998 0 -54 -17.6992 -62.8994 -34.5h-0.900391v29.2002h-63.7002\nv-213.8h66.4004v105.8c0 27.9004 5.2998 54.9004 39.9004 54.9004c34 0 34.5 -31.9004 34.5 -56.7002v-104h66.3994z\" />\n    <glyph glyph-name=\"github-square\" unicode=\"&#xf092;\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM277.3 32.2998c66 22 110.8 84.9004 110.7 158.3c0 91.8008 -74.4004 161.5 -166.2 161.5s-162 -69.6992 -162 -161.5\nc0 -73.3994 46.2002 -136.199 112.2 -158.3c8.5 -1.5 11.5 3.7002 11.5 8c0 4.10059 -0.200195 26.7002 -0.200195 40.6006c0 0 -46.3994 -10 -56.0996 19.6992c0 0 -7.60059 19.2002 -18.4004 24.2002c0 0 -15.0996 10.4004 1.10059 10.2002\nc0 0 16.3994 -1.2998 25.5 -17.0996c14.5 -25.6006 38.7998 -18.2002 48.2998 -13.9004c1.5 10.5996 5.7998 18 10.5996 22.2998c-37 4.10059 -74.2998 9.5 -74.2998 73.1006c0 18.1992 5 27.2998 15.5996 39c-1.7998 4.39941 -7.39941 22.0996 1.7002 45\nc13.9004 4.2998 45.7002 -17.9004 45.7002 -17.9004c13.2002 3.7002 27.5 5.59961 41.5996 5.59961c14.1006 0 28.4004 -1.89941 41.6006 -5.59961c0 0 31.7998 22.2002 45.7002 17.9004c9.09961 -23 3.39941 -40.7002 1.69922 -45\nc10.6006 -11.7002 17.1006 -20.8008 17.1006 -39c0 -63.9004 -39 -69 -76 -73.1006c6.09961 -5.2002 11.2998 -15.0996 11.2998 -30.7002c0 -22.2998 -0.200195 -49.8994 -0.200195 -55.2998c0 -4.2998 3.10059 -9.5 11.5 -8zM179.2 93.4004\nc-1.90039 -0.400391 -3.7002 0.399414 -3.90039 1.69922c-0.200195 1.5 1.10059 2.80078 3 3.2002c1.90039 0.200195 3.7002 -0.599609 3.90039 -1.89941c0.299805 -1.30078 -1 -2.60059 -3 -3zM169.7 94.2998c0 1.5 -1.7998 2.60059 -3.7002 2.40039\nc-2 0 -3.5 -1.10059 -3.5 -2.40039c0 -1.5 1.5 -2.59961 3.7002 -2.39941c2 0 3.5 1.09961 3.5 2.39941zM156 95.4004c-0.400391 -1.30078 -2.40039 -1.90039 -4.09961 -1.30078c-1.90039 0.400391 -3.2002 1.90039 -2.80078 3.2002\nc0.400391 1.2998 2.40039 1.90039 4.10059 1.5c2 -0.599609 3.2998 -2.09961 2.7998 -3.39941zM143.7 100.8c0.899414 0.799805 0.399414 2.7998 -0.900391 4.10059c-1.5 1.5 -3.39941 1.69922 -4.2998 0.599609c-1 -0.900391 -0.599609 -2.7998 0.900391 -4.09961\nc1.5 -1.5 3.39941 -1.7002 4.2998 -0.600586zM134.6 109.9c1.10059 0.799805 1.10059 2.59961 0 4.09961c-0.899414 1.5 -2.59961 2.2002 -3.69922 1.2998c-1.10059 -0.700195 -1.10059 -2.39941 0 -3.89941c1.09961 -1.5 2.7998 -2.10059 3.69922 -1.5zM128.1 119.6\nc0.900391 0.700195 0.700195 2.2002 -0.399414 3.5c-1.10059 1 -2.60059 1.5 -3.5 0.600586c-0.900391 -0.700195 -0.700195 -2.2002 0.399414 -3.5c1.10059 -1 2.60059 -1.5 3.5 -0.600586zM121.4 127c0.399414 0.799805 -0.200195 1.90039 -1.5 2.59961\nc-1.30078 0.5 -2.40039 0.200195 -2.80078 -0.399414c-0.399414 -0.900391 0.200195 -2 1.5 -2.60059c1.10059 -0.699219 2.40039 -0.5 2.80078 0.400391z\" />\n    <glyph glyph-name=\"twitter\" unicode=\"&#xf099;\" horiz-adv-x=\"512\" \nd=\"M459.37 296.284c0.325195 -4.54785 0.325195 -9.09766 0.325195 -13.6455c0 -138.72 -105.583 -298.558 -298.559 -298.558c-59.4521 0 -114.68 17.2188 -161.137 47.1055c8.44727 -0.973633 16.5684 -1.29883 25.3398 -1.29883\nc49.0547 0 94.2129 16.5684 130.274 44.832c-46.1318 0.975586 -84.792 31.1885 -98.1123 72.7725c6.49805 -0.974609 12.9951 -1.62402 19.8184 -1.62402c9.4209 0 18.8428 1.2998 27.6133 3.57324c-48.0811 9.74707 -84.1426 51.9795 -84.1426 102.984v1.29883\nc13.9688 -7.79688 30.2139 -12.6699 47.4307 -13.3184c-28.2637 18.8428 -46.7803 51.0049 -46.7803 87.3906c0 19.4922 5.19629 37.3604 14.2939 52.9541c51.6543 -63.6748 129.3 -105.258 216.364 -109.807c-1.62402 7.79688 -2.59863 15.918 -2.59863 24.04\nc0 57.8271 46.7822 104.934 104.934 104.934c30.2139 0 57.502 -12.6699 76.6709 -33.1367c23.7148 4.54785 46.4551 13.3193 66.5986 25.3398c-7.79785 -24.3662 -24.3662 -44.833 -46.1318 -57.8271c21.1172 2.27344 41.584 8.12207 60.4258 16.2432\nc-14.292 -20.791 -32.1611 -39.3086 -52.6279 -54.2529z\" />\n    <glyph glyph-name=\"facebook\" unicode=\"&#xf09a;\" horiz-adv-x=\"512\" \nd=\"M504 192c0 -123.78 -90.6904 -226.38 -209.25 -245v173.31h57.7803l11 71.6904h-68.7803v46.5498c0 19.6104 9.61035 38.7305 40.4102 38.7305h31.2803v61s-28.3809 4.83984 -55.5205 4.83984c-56.6699 0 -93.6699 -34.3301 -93.6699 -96.4805v-54.6396h-63v-71.6904h63\nv-173.31c-118.56 18.6201 -209.25 121.22 -209.25 245c0 137 111 248 248 248s248 -111 248 -248z\" />\n    <glyph glyph-name=\"github\" unicode=\"&#xf09b;\" horiz-adv-x=\"496\" \nd=\"M165.9 50.5996c0 -2 -2.30078 -3.59961 -5.2002 -3.59961c-3.2998 -0.299805 -5.60059 1.2998 -5.60059 3.59961c0 2 2.30078 3.60059 5.2002 3.60059c3 0.299805 5.60059 -1.2998 5.60059 -3.60059zM134.8 55.0996c0.700195 2 3.60059 3 6.2002 2.30078\nc3 -0.900391 4.90039 -3.2002 4.2998 -5.2002c-0.599609 -2 -3.59961 -3 -6.2002 -2c-3 0.599609 -5 2.89941 -4.2998 4.89941zM179 56.7998c2.90039 0.299805 5.59961 -1 5.90039 -2.89941c0.299805 -2 -1.7002 -3.90039 -4.60059 -4.60059\nc-3 -0.700195 -5.59961 0.600586 -5.89941 2.60059c-0.300781 2.2998 1.69922 4.19922 4.59961 4.89941zM244.8 440c138.7 0 251.2 -105.3 251.2 -244c0 -110.9 -67.7998 -205.8 -167.8 -239c-12.7002 -2.2998 -17.2998 5.59961 -17.2998 12.0996\nc0 8.2002 0.299805 49.9004 0.299805 83.6006c0 23.5 -7.7998 38.5 -17 46.3994c55.8994 6.30078 114.8 14 114.8 110.5c0 27.4004 -9.7998 41.2002 -25.7998 58.9004c2.59961 6.5 11.0996 33.2002 -2.60059 67.9004c-20.8994 6.59961 -69 -27 -69 -27\nc-20 5.59961 -41.5 8.5 -62.7998 8.5s-42.7998 -2.90039 -62.7998 -8.5c0 0 -48.0996 33.5 -69 27c-13.7002 -34.6006 -5.2002 -61.4004 -2.59961 -67.9004c-16 -17.5996 -23.6006 -31.4004 -23.6006 -58.9004c0 -96.1992 56.4004 -104.3 112.3 -110.5\nc-7.19922 -6.59961 -13.6992 -17.6992 -16 -33.6992c-14.2998 -6.60059 -51 -17.7002 -72.8994 20.8994c-13.7002 23.7998 -38.6006 25.7998 -38.6006 25.7998c-24.5 0.300781 -1.59961 -15.3994 -1.59961 -15.3994c16.4004 -7.5 27.7998 -36.6006 27.7998 -36.6006\nc14.7002 -44.7998 84.7002 -29.7998 84.7002 -29.7998c0 -21 0.299805 -55.2002 0.299805 -61.3994c0 -6.5 -4.5 -14.4004 -17.2998 -12.1006c-99.7002 33.4004 -169.5 128.3 -169.5 239.2c0 138.7 106.1 244 244.8 244zM97.2002 95.0996\nc1.2998 1.30078 3.59961 0.600586 5.2002 -1c1.69922 -1.89941 2 -4.19922 0.699219 -5.19922c-1.2998 -1.30078 -3.59961 -0.600586 -5.19922 1c-1.7002 1.89941 -2 4.19922 -0.700195 5.19922zM86.4004 103.2c0.699219 1 2.2998 1.2998 4.2998 0.700195\nc2 -1 3 -2.60059 2.2998 -3.90039c-0.700195 -1.40039 -2.7002 -1.7002 -4.2998 -0.700195c-2 1 -3 2.60059 -2.2998 3.90039zM118.8 67.5996c1.2998 1.60059 4.2998 1.30078 6.5 -1c2 -1.89941 2.60059 -4.89941 1.2998 -6.19922\nc-1.2998 -1.60059 -4.19922 -1.30078 -6.5 1c-2.2998 1.89941 -2.89941 4.89941 -1.2998 6.19922zM107.4 82.2998c1.59961 1.2998 4.19922 0.299805 5.59961 -2c1.59961 -2.2998 1.59961 -4.89941 0 -6.2002c-1.2998 -1 -4 0 -5.59961 2.30078\nc-1.60059 2.2998 -1.60059 4.89941 0 5.89941z\" />\n    <glyph glyph-name=\"pinterest\" unicode=\"&#xf0d2;\" horiz-adv-x=\"496\" \nd=\"M496 192c0 -137 -111 -248 -248 -248c-25.5996 0 -50.2002 3.90039 -73.4004 11.0996c10.1006 16.5 25.2002 43.5 30.8008 65c3 11.6006 15.3994 59 15.3994 59c8.10059 -15.3994 31.7002 -28.5 56.7998 -28.5c74.8008 0 128.7 68.8008 128.7 154.301\nc0 81.8994 -66.8994 143.199 -152.899 143.199c-107 0 -163.9 -71.7998 -163.9 -150.1c0 -36.4004 19.4004 -81.7002 50.2998 -96.0996c4.7002 -2.2002 7.2002 -1.2002 8.2998 3.2998c0.800781 3.39941 5 20.2998 6.90039 28.0996\nc0.599609 2.5 0.299805 4.7002 -1.7002 7.10059c-10.0996 12.5 -18.2998 35.2998 -18.2998 56.5996c0 54.7002 41.4004 107.6 112 107.6c60.9004 0 103.6 -41.5 103.6 -100.899c0 -67.1006 -33.8994 -113.601 -78 -113.601c-24.2998 0 -42.5996 20.1006 -36.6992 44.8008\nc7 29.5 20.5 61.2998 20.5 82.5996c0 19 -10.2002 34.9004 -31.4004 34.9004c-24.9004 0 -44.9004 -25.7002 -44.9004 -60.2002c0 -22 7.40039 -36.7998 7.40039 -36.7998s-24.5 -103.801 -29 -123.2c-5 -21.4004 -3 -51.6006 -0.900391 -71.2002\nc-92.1992 36.0996 -157.6 125.9 -157.6 231c0 137 111 248 248 248s248 -111 248 -248z\" />\n    <glyph glyph-name=\"pinterest-square\" unicode=\"&#xf0d3;\" \nd=\"M448 368v-352c0 -26.5 -21.5 -48 -48 -48h-245.6c9.7998 16.4004 22.3994 40 27.3994 59.2998c3 11.5 15.2998 58.4004 15.2998 58.4004c8 -15.2998 31.4004 -28.2002 56.3008 -28.2002c74.0996 0 127.399 68.0996 127.399 152.7\nc0 81.0996 -66.2002 141.8 -151.399 141.8c-106 0 -162.2 -71.0996 -162.2 -148.6c0 -36 19.2002 -80.8008 49.7998 -95.1006c4.7002 -2.2002 7.09961 -1.2002 8.2002 3.2998c0.799805 3.40039 5 20.1006 6.7998 27.8008c0.599609 2.5 0.299805 4.59961 -1.7002 7\nc-10.0996 12.2998 -18.2998 34.8994 -18.2998 56c0 54.1992 41 106.6 110.9 106.6c60.2998 0 102.6 -41.0996 102.6 -99.9004c0 -66.3994 -33.5 -112.399 -77.2002 -112.399c-24.0996 0 -42.0996 19.8994 -36.3994 44.3994c6.89941 29.2002 20.2998 60.7002 20.2998 81.8008\nc0 53 -75.5 45.6992 -75.5 -25c0 -21.7002 7.2998 -36.5 7.2998 -36.5c-31.4004 -132.801 -36.0996 -134.5 -29.5996 -192.601l2.19922 -0.799805h-88.5996c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48z\" />\n    <glyph glyph-name=\"google-plus-square\" unicode=\"&#xf0d4;\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM164 92c57.7002 0 96 40.5 96 97.5996c0 6.5 -0.599609 11.6006 -1.59961 16.6006h-94.4004v-34.4004h56.9004\nc-2.40039 -14.5996 -17.2002 -43.0996 -56.8008 -43.0996c-34.0996 0 -61.8994 28.2998 -61.8994 63.2002c0 35 27.7998 63.1992 61.8994 63.1992c19.5 0 32.4004 -8.2998 39.8008 -15.3994l27.0996 26.0996c-17.5 16.4004 -40 26.2002 -67 26.2002\nc-55.2998 0 -100 -44.7002 -100 -100s44.7002 -100 100 -100zM384 173.8v29.2002h-29v29h-29.2002v-29h-29v-29.2002h29v-29h29.2002v29h29z\" />\n    <glyph glyph-name=\"google-plus-g\" unicode=\"&#xf0d5;\" horiz-adv-x=\"640\" \nd=\"M386.061 219.504c1.83398 -9.69238 3.14355 -19.3838 3.14355 -31.9561c0 -109.753 -73.6055 -187.548 -184.404 -187.548c-106.084 0 -192 85.915 -192 192s85.916 192 192 192c51.8643 0 95.083 -18.8594 128.611 -50.292l-52.126 -50.0303\nc-14.1455 13.6211 -39.0283 29.5996 -76.4854 29.5996c-65.4834 0 -118.92 -54.2217 -118.92 -121.277s53.4365 -121.277 118.92 -121.277c75.9609 0 104.514 54.7451 108.965 82.7734h-108.965v66.0088h181.261v-0.000976562zM571.467 213.067h55.7334v-56.001h-55.7334\nv-55.7334h-56.001v55.7334h-55.7324v56.001h55.7324v55.7324h56.001v-55.7324z\" />\n    <glyph glyph-name=\"linkedin-in\" unicode=\"&#xf0e1;\" \nd=\"M100.28 0h-92.8799v299.1h92.8799v-299.1zM53.79 339.9c-29.7002 0 -53.79 24.5996 -53.79 54.2998c0 29.6914 24.0977 53.79 53.79 53.79s53.79 -24.0986 53.79 -53.79c0 -29.7002 -24.0996 -54.2998 -53.79 -54.2998zM447.9 0h-92.6807v145.6\nc0 34.7002 -0.700195 79.2002 -48.29 79.2002c-48.29 0 -55.6895 -37.7002 -55.6895 -76.7002v-148.1h-92.7803v299.1h89.0801v-40.7998h1.2998c12.4004 23.5 42.6904 48.2998 87.8799 48.2998c94 0 111.28 -61.8994 111.28 -142.3v-164.3h-0.0996094z\" />\n    <glyph glyph-name=\"github-alt\" unicode=\"&#xf113;\" horiz-adv-x=\"480\" \nd=\"M186.1 119.3c0 -20.8994 -10.8994 -55.0996 -36.6992 -55.0996c-25.8008 0 -36.7002 34.2002 -36.7002 55.0996c0 20.9004 10.8994 55.1006 36.7002 55.1006c25.7998 0 36.6992 -34.2002 36.6992 -55.1006zM480 169.8c0 -31.8994 -3.2002 -65.7002 -17.5 -95\nc-37.9004 -76.5996 -142.1 -74.7998 -216.7 -74.7998c-75.7998 0 -186.2 -2.7002 -225.6 74.7998c-14.6006 29 -20.2002 63.1006 -20.2002 95c0 41.9004 13.9004 81.5 41.5 113.601c-5.2002 15.7998 -7.7002 32.3994 -7.7002 48.7998\nc0 21.5 4.90039 32.2998 14.6006 51.7998c45.2998 0 74.2998 -9 108.8 -36c29 6.90039 58.7998 10 88.7002 10c27 0 54.1992 -2.90039 80.3994 -9.2002c34 26.7002 63 35.2002 107.8 35.2002c9.80078 -19.5 14.6006 -30.2998 14.6006 -51.7998\nc0 -16.4004 -2.60059 -32.7002 -7.7002 -48.2002c27.5 -32.4004 39 -72.2998 39 -114.2zM415.7 119.3c0 43.9004 -26.7002 82.6006 -73.5 82.6006c-18.9004 0 -37 -3.40039 -56 -6c-14.9004 -2.30078 -29.7998 -3.2002 -45.1006 -3.2002\nc-15.1992 0 -30.0996 0.899414 -45.0996 3.2002c-18.7002 2.59961 -37 6 -56 6c-46.7998 0 -73.5 -38.7002 -73.5 -82.6006c0 -87.7998 80.4004 -101.3 150.4 -101.3h48.1992c70.3008 0 150.601 13.4004 150.601 101.3zM333.1 174.4\nc25.8008 0 36.7002 -34.2002 36.7002 -55.1006c0 -20.8994 -10.8994 -55.0996 -36.7002 -55.0996c-25.7998 0 -36.6992 34.2002 -36.6992 55.0996c0 20.9004 10.8994 55.1006 36.6992 55.1006z\" />\n    <glyph glyph-name=\"maxcdn\" unicode=\"&#xf136;\" horiz-adv-x=\"512\" \nd=\"M461.1 5.2998h-97.3994l51.8994 242.7c2.30078 10.2002 0.900391 19.5 -4.39941 25.7002c-5 6.09961 -13.7002 9.59961 -24.2002 9.59961h-49.2998l-59.5 -278h-97.4004l59.5 278h-83.3994l-59.5 -278h-97.4004l59.5 278l-44.5996 95.4004h372.1\nc39.4004 0 75.2998 -16.2998 98.2998 -44.9004c23.2998 -28.5996 31.7998 -67.3994 23.6006 -105.899z\" />\n    <glyph glyph-name=\"html5\" unicode=\"&#xf13b;\" horiz-adv-x=\"384\" \nd=\"M0 416h384l-34.9004 -395.8l-157.6 -52.2002l-156.6 52.2002zM308.2 288.1l4.39941 47.7002h-241.1l12.7998 -145.6h166.9l-6 -62.2002l-53.7002 -14.5l-53.5 14.5l-3.5 38.0996h-47.7002l6 -75.7998l98.7002 -27.2998h1.09961v0.299805l97.9004 27l13.5996 148.4h-175.6\nl-4.09961 49.3994h183.8z\" />\n    <glyph glyph-name=\"css3\" unicode=\"&#xf13c;\" horiz-adv-x=\"512\" \nd=\"M480 416l-64 -368l-223.3 -80l-192.7 80l19.5996 94.7998h82l-8 -40.5996l116.4 -44.4004l134.1 44.4004l18.8008 97.0996h-333.4l16 82h333.7l10.5 52.7002h-333.4l16.2998 82h407.4z\" />\n    <glyph glyph-name=\"btc\" unicode=\"&#xf15a;\" horiz-adv-x=\"384\" \nd=\"M310.204 205.362c46.0059 -11.0283 74.9971 -38.4443 69.3262 -99.8906c-7.24805 -76.5723 -61.5967 -97.0547 -142.896 -101.467v-68.0049h-48.5273v66.7451c-12.29 0 -25.21 0 -38.4443 0.314453v-67.0596h-48.5283v68.0049s-8.88867 0.31543 -97.3701 0.31543\nl9.76758 57.666c34.7305 -0.614258 50.3301 -3.4209 53.2549 16.0703v217.43c-4.60645 24.5664 -24.709 22.1045 -63.0234 21.4268v51.6777c58.748 -0.275391 79.5283 -0.539062 97.3701 0v79.4092h48.5283v-77.833c12.9189 0.31543 25.8389 0.629883 38.4443 0.629883\nv77.2031h48.5273v-79.4092c62.3926 -5.35547 109.492 -24.5781 114.851 -81.9287c4.09668 -41.9102 -13.5508 -67.1201 -41.2803 -81.2998zM150.608 313.447v-96.7402c27.416 0 113.126 -6.30273 113.126 48.2119c0 57.0352 -85.7109 48.5283 -113.126 48.5283z\nM150.608 61.6709c32.7715 0 133.126 -6.93262 133.127 53.2529c0 62.3936 -100.355 53.2549 -133.127 53.2549v-106.508z\" />\n    <glyph glyph-name=\"youtube\" unicode=\"&#xf167;\" horiz-adv-x=\"576\" \nd=\"M549.655 323.917c11.4121 -42.8672 11.4121 -132.305 11.4121 -132.305s0 -89.4385 -11.4121 -132.306c-6.28125 -23.6494 -24.7871 -41.5 -48.2842 -47.8203c-42.5908 -11.4863 -213.371 -11.4863 -213.371 -11.4863s-170.78 0 -213.371 11.4863\nc-23.4971 6.32031 -42.0029 24.1709 -48.2842 47.8203c-11.4121 42.8672 -11.4121 132.306 -11.4121 132.306s0 89.4375 11.4121 132.305c6.28125 23.6504 24.7871 42.2754 48.2842 48.5967c42.5908 11.4863 213.371 11.4863 213.371 11.4863s170.781 0 213.371 -11.4863\nc23.4971 -6.32031 42.0029 -24.9463 48.2842 -48.5967zM232.145 110.409l142.739 81.2012l-142.739 81.2051v-162.406z\" />\n    <glyph glyph-name=\"xing\" unicode=\"&#xf168;\" horiz-adv-x=\"384\" \nd=\"M162.7 238c-1.7998 -3.2998 -25.2002 -44.4004 -70.1006 -123.5c-4.89941 -8.2998 -10.7998 -12.5 -17.6992 -12.5h-65.1006c-7.7002 0 -12.0996 7.5 -8.5 14.4004l69 121.3c0.200195 0 0.200195 0.0996094 0 0.299805l-43.8994 75.5996\nc-4.30078 7.80078 0.299805 14.1006 8.5 14.1006h65.0996c7.2998 0 13.2998 -4.10059 18 -12.2002zM382.6 401.9l-144 -253v-0.300781l91.6006 -166.6c3.89941 -7.09961 0.200195 -14.0996 -8.5 -14.0996h-65.2002c-7.59961 0 -13.5996 4 -18 12.1992l-92.4004 168.5\nc3.30078 5.80078 51.5 90.8008 144.801 255.2c4.59961 8.10059 10.3994 12.2002 17.5 12.2002h65.6992c8 0 12.3008 -6.7002 8.5 -14.0996z\" />\n    <glyph glyph-name=\"xing-square\" unicode=\"&#xf169;\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM140.4 127.8c4.89941 0 9.09961 2.90039 12.5996 9.10059c32.0996 56.5 48.7998 85.8994 50.0996 88.1992l-31.8994 55.3008\nc-3.40039 5.7998 -7.7002 8.69922 -12.9004 8.69922h-46.5996c-5.7998 0 -9 -4.5 -6 -10.0996l31.3994 -54c0.100586 -0.0996094 0.100586 -0.200195 0 -0.200195l-49.2998 -86.7002c-2.7002 -5 0.5 -10.2998 6 -10.2998h46.6006zM360.1 341.9\nc2.80078 5.2998 -0.299805 10.0996 -6 10h-46.8994c-5.10059 0 -9.2002 -2.90039 -12.5 -8.7002c-66.6006 -117.4 -101.101 -178.2 -103.4 -182.3l66 -120.301c3.2002 -5.7998 7.40039 -8.69922 12.9004 -8.69922h46.5996c6.10059 0 8.7998 5 6 10.0996l-65.5 119v0.200195z\n\" />\n    <glyph glyph-name=\"dropbox\" unicode=\"&#xf16b;\" horiz-adv-x=\"528\" \nd=\"M264.4 331.7l-132 -84.2998l132 -84.3008l-132 -84.2998l-132.4 85.1006l132.3 84.2998l-132.3 83.5l132.3 84.2998zM131.6 52.2998l132 84.2998l132 -84.2998l-132 -84.2998zM264.4 163.9l132 84.2998l-132 83.5996l131.3 84.2002l132.3 -84.2998l-132.3 -84.2998\nl132.3 -84.2002l-132.3 -84.2998z\" />\n    <glyph glyph-name=\"stack-overflow\" unicode=\"&#xf16c;\" horiz-adv-x=\"384\" \nd=\"M290.7 137l-8.2002 -39l-195.7 41l8.2002 39.2998zM341.7 224l-25.5 -30.7998l-153.5 128.3l25.5 30.7998zM310.5 184.3l-16.7998 -36.2998l-181.2 84.5l16.7002 36.5zM262 416l119.3 -160.3l-32 -24l-119.3 160.3zM282.5 88v-39.7002h-200v39.7002h200zM322.2 8v120h40\nv-160h-359.5v160h40v-120h279.5z\" />\n    <glyph glyph-name=\"instagram\" unicode=\"&#xf16d;\" \nd=\"M224.1 307c63.6006 0 114.9 -51.2998 114.9 -114.9c0 -63.5996 -51.2998 -114.899 -114.9 -114.899c-63.5996 0 -114.899 51.2998 -114.899 114.899c0 63.6006 51.2998 114.9 114.899 114.9zM224.1 117.4c41.1006 0 74.7002 33.5 74.7002 74.6992\nc0 41.2002 -33.5 74.7002 -74.7002 74.7002c-41.1992 0 -74.6992 -33.5 -74.6992 -74.7002c0 -41.1992 33.5996 -74.6992 74.6992 -74.6992zM370.5 311.7c0 -14.9004 -12 -26.7998 -26.7998 -26.7998c-14.9004 0 -26.7998 12 -26.7998 26.7998s12 26.7998 26.7998 26.7998\ns26.7998 -12 26.7998 -26.7998zM446.6 284.5c2.10059 -37 2.10059 -147.8 0 -184.8c-1.7998 -35.9004 -10 -67.7002 -36.1992 -93.9004c-26.2002 -26.2998 -58 -34.5 -93.9004 -36.2002c-37 -2.09961 -147.9 -2.09961 -184.9 0\nc-35.8994 1.80078 -67.5996 10 -93.8994 36.2002s-34.5 58 -36.2002 93.9004c-2.09961 37 -2.09961 147.899 0 184.899c1.7998 35.9004 9.90039 67.7002 36.2002 93.9004s58.0996 34.4004 93.8994 36.0996c37 2.10059 147.9 2.10059 184.9 0\nc35.9004 -1.7998 67.7002 -10 93.9004 -36.1992c26.2998 -26.2002 34.5 -58 36.1992 -93.9004zM398.8 60c11.7002 29.4004 9 99.5 9 132.1c0 32.6006 2.7002 102.601 -9 132.101c-7.89941 19.7002 -23 34.7998 -42.5996 42.5996c-29.4004 11.6006 -99.5 9 -132.101 9\nc-32.5996 0 -102.6 2.7002 -132.1 -9c-19.7002 -7.89941 -34.7998 -23 -42.5996 -42.5996c-11.6006 -29.4004 -9 -99.5 -9 -132.101c0 -32.5996 -2.7002 -102.6 9 -132.1c7.89941 -19.7002 23 -34.7998 42.5996 -42.5996c29.4004 -11.6006 99.5 -9 132.1 -9\nc32.6006 0 102.601 -2.7002 132.101 9c19.7002 7.89941 34.7998 23 42.5996 42.5996z\" />\n    <glyph glyph-name=\"flickr\" unicode=\"&#xf16e;\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM144.5 129c35.0996 0 63.5 28.4004 63.5 63.5s-28.4004 63.5 -63.5 63.5s-63.5 -28.4004 -63.5 -63.5s28.4004 -63.5 63.5 -63.5z\nM303.5 129c35.0996 0 63.5 28.4004 63.5 63.5s-28.4004 63.5 -63.5 63.5s-63.5 -28.4004 -63.5 -63.5s28.4004 -63.5 63.5 -63.5z\" />\n    <glyph glyph-name=\"adn\" unicode=\"&#xf170;\" horiz-adv-x=\"496\" \nd=\"M248 280.5l64.9004 -98.7998h-129.801zM496 192c0 -136.9 -111.1 -248 -248 -248s-248 111.1 -248 248s111.1 248 248 248s248 -111.1 248 -248zM396.2 109.3l-148.2 223.2l-148.2 -223.2h30.4004l33.5996 51.7002h168.601l33.5996 -51.7002h30.2002z\" />\n    <glyph glyph-name=\"bitbucket\" unicode=\"&#xf171;\" horiz-adv-x=\"512\" \nd=\"M22.2002 416l466.8 -0.200195c0.776367 -0.0107422 2.03027 -0.100586 2.7998 -0.200195c7.39648 -1.21875 13.3984 -8.29102 13.3984 -15.7871c0 -0.697266 -0.0888672 -1.82324 -0.198242 -2.5127l-67.9004 -416.8\nc-1.2168 -7.39746 -8.29004 -13.4014 -15.7871 -13.4014c-0.0585938 0 -0.154297 0.000976562 -0.212891 0.000976562h-325.699c-10.1016 0.0820312 -19.6445 8.23535 -21.3008 18.2002l-67.8994 412.101c-0.0966797 0.769531 -0.186523 2.02344 -0.200195 2.7998\nc0.108398 8.72168 7.27539 15.8008 15.999 15.8008c0.0556641 0 0.145508 0 0.201172 -0.000976562zM308.1 118.2l25.2002 147h-157.3l28.0996 -147h104z\" />\n    <glyph glyph-name=\"tumblr\" unicode=\"&#xf173;\" horiz-adv-x=\"320\" \nd=\"M309.8 -32.2998c-13.5996 -14.5 -50 -31.7002 -97.3994 -31.7002c-120.801 0 -147 88.7998 -147 140.6v144h-47.5c-5.5 0 -10 4.5 -10 10v68c0 7.2002 4.5 13.6006 11.2998 16c62 21.8008 81.5 76 84.2998 117.101c0.799805 11 6.5 16.2998 16.0996 16.2998h70.9004\nc5.5 0 10 -4.5 10 -10v-115.2h83c5.5 0 10 -4.39941 10 -9.89941v-81.7002c0 -5.5 -4.5 -10 -10 -10h-83.4004v-133.2c0 -34.2002 23.7002 -53.5996 68 -35.7998c4.80078 1.89941 9 3.2002 12.7002 2.2002c3.5 -0.900391 5.7998 -3.40039 7.40039 -7.90039l22 -64.2998\nc1.7998 -5 3.2998 -10.6006 -0.400391 -14.5z\" />\n    <glyph glyph-name=\"tumblr-square\" unicode=\"&#xf174;\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM317.7 51.7998c2.2998 2.40039 1.2998 5.90039 0.299805 9.10059l-13.7998 40.1992c-1 2.80078 -2.40039 4.40039 -4.60059 4.90039\nc-2.39941 0.599609 -5 -0.200195 -8 -1.40039c-27.6992 -11.0996 -42.5 1 -42.5 22.4004v83.2998h52.1006c3.39941 0 6.2002 2.7998 6.2002 6.2002v51.0996c0 3.40039 -2.80078 6.2002 -6.2002 6.2002h-51.9004v72c0 3.40039 -2.7998 6.2002 -6.2002 6.2002h-44.2998\nc-5.89941 0 -9.5 -3.2998 -10 -10.2002c-1.7998 -25.7002 -13.8994 -59.5 -52.7002 -73.2002c-4.2998 -1.5 -7.09961 -5.5 -7.09961 -10v-42.5c0 -3.39941 2.7998 -6.19922 6.2002 -6.19922h29.7002v-90c0 -32.4004 16.3994 -87.9004 91.8994 -87.9004\nc29.7002 0 52.4004 10.7002 60.9004 19.7998z\" />\n    <glyph glyph-name=\"apple\" unicode=\"&#xf179;\" horiz-adv-x=\"384\" \nd=\"M318.7 179.3c0 -1.89941 -3.5 -61.2002 61.7002 -91.8994c-12.2002 -36.8008 -54 -118.601 -102.601 -119.301c-28.0996 0 -44.5996 17.9004 -76.3994 17.9004c-32.8008 0 -50.6006 -17.2998 -75.8008 -17.9004c-48.1992 -1.5 -94.3994 88.5 -107.199 125.2\nc-9.60059 27.9336 -14.4004 55 -14.4004 81.2002c0 88.7002 59.2998 132.3 115.1 133.2c27 0 61.4004 -19.7002 76.4004 -19.7002c14.2002 0 53 23.5 88.5 20.7002c37.5 -2.90039 65.9004 -17.7002 84.7002 -44.6006c-33.6006 -20.3994 -50.2002 -48.0996 -50 -84.7998z\nM262.1 343.5c-19.5996 -22.9004 -43.3994 -36.2998 -69.5 -34.2998c-2.19922 27.5996 8.10059 52.0996 25.6006 71.8994c15.8994 18.5 43.7998 33.5 67.8994 34.9004c0.800781 -10.5996 3.30078 -40.0996 -24 -72.5z\" />\n    <glyph glyph-name=\"windows\" unicode=\"&#xf17a;\" \nd=\"M0 354.3l183.6 25.2998v-177.399h-183.6v152.1zM0 29.7002v149.899h183.6v-175.199zM203.8 1.7002v177.899h244.2v-211.6zM203.8 382.3l244.2 33.7002v-213.8h-244.2v180.1z\" />\n    <glyph glyph-name=\"android\" unicode=\"&#xf17b;\" \nd=\"M89.5996 243.5v-115.8c0 -15.4004 -12.0996 -27.7002 -27.5 -27.7002c-15.2998 0 -30.0996 12.4004 -30.0996 27.7002v115.8c0 15.0996 14.7998 27.5 30.0996 27.5c15.1006 0 27.5 -12.4004 27.5 -27.5zM100.4 86.5v179.4h247.3v-179.4\nc0 -16.4004 -13.2002 -29.5996 -29.4004 -29.5996h-20.2002v-61.1006c0 -36.7998 -55.5 -36.7002 -55.5 0v61.1006h-37.1992v-61.1006c0 -36.5996 -55.2002 -36.8994 -55.2002 0l-0.299805 61.1006h-19.9004c-16.4004 0 -29.5996 13.1992 -29.5996 29.5996zM348.4 275.6\nh-249.101c0 42.8008 25.6006 80 63.6006 99.4004l-19.1006 35.2998c-2.7998 4.90039 4.2998 8 6.7002 3.7998l19.4004 -35.5996c34.8994 15.5 75 14.7002 108.3 0l19.2998 35.5c2.5 4.2998 9.5 1.09961 6.7002 -3.7998l-19.1006 -35.2002\nc37.7002 -19.4004 63.3008 -56.5996 63.3008 -99.4004zM177.7 331.1c0 5.7002 -4.60059 10.5 -10.5 10.5c-5.7002 0 -10.2002 -4.7998 -10.2002 -10.5c0 -5.69922 4.59961 -10.5 10.2002 -10.5c5.89941 0 10.5 4.80078 10.5 10.5zM291.1 331.1\nc0 5.7002 -4.59961 10.5 -10.1992 10.5c-5.90039 0 -10.5 -4.7998 -10.5 -10.5c0 -5.69922 4.59961 -10.5 10.5 -10.5c5.59961 0 10.1992 4.80078 10.1992 10.5zM385.9 271c15.2998 0 30.0996 -12.0996 30.0996 -27.5v-115.8\nc0 -15.2998 -14.7002 -27.7002 -30.0996 -27.7002c-15.1006 0 -27.5 12.2998 -27.5 27.7002v115.8c0 15.4004 12.3994 27.5 27.5 27.5z\" />\n    <glyph glyph-name=\"linux\" unicode=\"&#xf17c;\" \nd=\"M220.8 324.7c-1.09961 0.599609 -3.09961 0.399414 -3.39941 1.7002c-0.200195 0.399414 0.199219 0.899414 0.599609 1.09961c1.59961 0.900391 3.7998 0.599609 5.5 -0.0996094c1.2998 -0.600586 3.40039 -1.5 3.2002 -2.90039\nc-0.100586 -1.09961 -1.7998 -1.5 -2.90039 -1.5c-1.2002 0 -2 1.2002 -3 1.7002zM198.9 323c-1 -0.0996094 -2.7002 0.400391 -2.80078 1.40039c-0.199219 1.39941 1.90039 2.2998 3.2002 2.89941c1.7002 0.700195 3.90039 1 5.5 0.100586\nc0.400391 -0.200195 0.799805 -0.700195 0.600586 -1.10059c-0.400391 -1.2002 -2.40039 -1 -3.5 -1.59961c-1 -0.5 -1.80078 -1.7002 -3 -1.7002zM420 44.2002c11.0996 -12.4004 15.9004 -21.5 15.5 -29.7002c-0.5 -8.2002 -6.5 -13.7998 -13.9004 -18.2998\nc-14.8994 -9 -37.2998 -15.7998 -50.8994 -32.2002c-14.2002 -16.9004 -31.7002 -26.5996 -48.2998 -27.9004c-16.5 -1.2998 -32 6.30078 -40.3008 23v0.100586c-1.09961 2.09961 -1.89941 4.39941 -2.5 6.7002c-21.5 -1.2002 -40.1992 5.2998 -55.0996 4.09961\nc-22 -1.2002 -35.7998 -6.5 -48.2998 -6.59961c-4.7998 -10.6006 -14.2998 -17.6006 -25.9004 -20.2002c-16 -3.7002 -36.0996 0 -55.8994 10.3994c-18.5 9.80078 -42 8.90039 -59.3008 12.5c-8.69922 1.80078 -16.2998 5 -20.0996 12.3008\nc-3.7002 7.2998 -3 17.2998 2.2002 31.6992c1.7002 5.10059 0.399414 12.7002 -0.799805 20.8008c-0.600586 3.89941 -1.2002 7.89941 -1.2002 11.7998c0 4.2998 0.700195 8.5 2.7998 12.3994c4.5 8.5 11.7998 12.1006 18.5 14.5c6.7002 2.40039 12.7998 4 17 8.30078\nc5.2002 5.5 10.0996 14.3994 16.5996 20.1992c-2.59961 17.2002 0.200195 35.4004 6.2002 53.3008c12.6006 37.8994 39.2002 74.1992 58.1006 96.6992c16.0996 22.9004 20.7998 41.3008 22.5 64.7002c1.09961 31.7998 -24.5 135.4 77.8994 135.2\nc80.9004 -0.0996094 76.2998 -85.4004 75.7998 -131.3c-0.299805 -30.1006 16.3008 -50.5 33.4004 -72c15.2002 -18 35.0996 -44.2998 46.5 -74.4004c9.2998 -24.5996 12.9004 -51.7998 3.7002 -79.0996c1.39941 -0.5 2.7998 -1.2002 4.09961 -2\nc1.40039 -0.799805 2.7002 -1.7998 4 -2.90039c6.60059 -5.59961 8.7002 -14.2998 10.5 -22.3994c1.90039 -8.10059 3.60059 -15.7002 7.2002 -19.7002zM223.7 360.7c-3.2002 -7.2002 -3.90039 -14.9004 -2.90039 -21.7998c3.60059 -0.900391 8.90039 -2.40039 13 -4.40039\nc-2.09961 12.2002 4.5 23.5 11.7998 23c8.90039 -0.299805 13.9004 -15.5 9.10059 -27.2998c-0.799805 -1.90039 -2.7998 -3.40039 -3.90039 -4.60059c6.7002 -2.2998 11 -4.09961 12.6006 -4.89941c7.89941 9.5 10.7998 26.2002 4.2998 40.3994\nc-9.7998 21.4004 -34.2002 21.8008 -44 -0.399414zM183 372.2c-18.9004 0 -24 -37.5 -8.40039 -52.1006c7.80078 5.7002 6.90039 4.7002 5.90039 5.5c-8 6.90039 -6.59961 27.4004 1.7998 28.1006c6.2998 0.5 10.7998 -10.7002 9.60059 -19.6006\nc3.09961 2.10059 6.69922 3.60059 10.1992 4.60059c1.7002 19.2998 -9 33.5 -19.0996 33.5zM169.4 311.5c-4.2002 -3.2998 -5.60059 -7.40039 -4.2002 -12.2998c1.5 -4.90039 6.09961 -10.5 14.7002 -15.2998c7.7998 -4.60059 12 -11.5 20 -15\nc2.59961 -1.10059 5.69922 -1.90039 9.59961 -2.10059c18.4004 -1.09961 27.0996 11.2998 38.2002 14.9004c11.7002 3.7002 20.0996 11 22.7002 18.0996c3.19922 8.5 -2.10059 14.7002 -10.5 18.2002c-11.3008 4.90039 -16.3008 5.2002 -22.6006 9.2998\nc-10.2998 6.60059 -18.7998 8.90039 -25.8994 8.90039c-14.4004 0 -23.2002 -9.7998 -27.9004 -14.2002c-0.5 -0.5 -7.90039 -5.90039 -14.0996 -10.5zM172.7 -22.5c2.09961 20.5 -31.5 49 -41 68.9004l-19.6006 35.5996c-6.7998 9.2002 -13.7998 14.7998 -21.8994 16\nc-7.7002 1.2002 -12.6006 -1.40039 -17.7002 -6.90039c-4.7998 -5.09961 -8.7998 -12.2998 -14.2998 -18c-7.7998 -6.5 -9.2998 -6.19922 -19.6006 -9.89941c-6.2998 -2.2002 -11.2998 -4.60059 -14.7998 -11.2998c-2.7002 -5 -2.09961 -12.2002 -0.899414 -20\nc1.19922 -7.90039 3 -16.3008 0.599609 -23.9004v-0.200195c-5 -13.7002 -5 -21.7002 -2.59961 -26.3994c7.89941 -15.4004 46.5996 -6.10059 76.5 -21.9004c31.3994 -16.4004 72.5996 -17.0996 75.2998 18zM171.3 3.40039c37.6006 -25.7002 82.2002 -15.7002 114.3 7.19922\nc3.2002 11 6.30078 21.3008 6.80078 29c0.799805 15.2002 1.59961 28.7002 4.39941 39.9004c3.10059 12.5996 9.2998 23.0996 21.4004 27.2998c2.2998 21.1006 18.7002 21.1006 38.2998 12.5c18.9004 -8.5 26 -16 22.7998 -26.0996c1 0 2 0.0996094 4.2002 0\nc5.2002 16.8994 -14.2998 28 -30.7002 34.7998c2.90039 12 2.40039 24.0996 -0.399414 35.7002c-6 25.2998 -22.6006 47.7998 -35.2002 59c-2.2998 0.0996094 -2.10059 -1.90039 2.59961 -6.5c11.6006 -10.7002 37.1006 -49.2002 23.2998 -84.9004\nc-3.89941 1 -7.59961 1.5 -10.8994 1.40039c-5.2998 29.0996 -17.5 53.2002 -23.6006 64.5996c-11.5 21.4004 -29.5 65.2998 -37.1992 95.7002c-4.5 -6.40039 -12.4004 -11.9004 -22.3008 -15c-4.69922 -1.5 -9.69922 -5.5 -15.8994 -9\nc-13.9004 -8 -30 -8.7998 -42.4004 1.2002c-4.5 3.59961 -8 7.59961 -12.5996 10.2998c-1.60059 0.900391 -5.10059 3.2998 -6.2002 4.09961c-2 -37.7998 -27.2998 -85.2998 -39.2998 -112.699c-8.2998 -19.7002 -13.2002 -40.8008 -13.7998 -61.5\nc-21.8008 29.0996 -5.90039 66.2998 2.59961 82.3994c9.5 17.6006 11 22.5 8.7002 20.7998c-8.60059 -14 -22 -36.2998 -27.2002 -59.1992c-2.7002 -11.9004 -3.2002 -24 0.299805 -35.2002s11.1006 -21.5 24.6006 -29.9004c0 0 24.7998 -14.2998 38.2998 -32.5\nc7.39941 -10 9.7002 -18.7002 7.39941 -24.8994c-2.5 -6.7002 -9.59961 -8.90039 -16.6992 -8.90039c4.7998 -6 10.2998 -13 14.3994 -19.5996zM428.7 14.9004c0.299805 5.09961 -3.10059 13 -13.7002 24.5996c-10 11.2998 -7.2002 33.0996 -17.0996 41.5996\nc-6.90039 6 -13.6006 5.40039 -22.6006 5.10059c-7.7002 -8.7998 -25.7998 -19.6006 -38.3994 -16.2998c-11.5 2.89941 -18 16.2998 -18.8008 29.5c-0.299805 -0.200195 -0.699219 -0.300781 -1 -0.5c-7.09961 -3.90039 -11.0996 -10.8008 -13.6992 -21.1006\nc-2.5 -10.2002 -3.40039 -23.5 -4.2002 -38.7002c-0.700195 -11.7998 -6.2002 -26.3994 -9.90039 -40.5996c-3.5 -13.2002 -5.7998 -25.2002 -1.09961 -36.2998c7.2002 -14.5 19.5 -20.4004 33.7002 -19.2998c14.1992 1.09961 30.3994 9.7998 43.5996 25.5\nc22 26.5996 62.2998 29.6992 63.2002 46.5zM173.3 299.3c-3.5 2.7998 -3.09961 6.60059 -1.7002 6.5c2.40039 -0.299805 2.80078 -3.5 4.30078 -4.89941c2 -1.90039 4.59961 -4.40039 7.69922 -6.90039c6.2002 -4.90039 14.5 -9.7002 24.9004 -9.7002\ns22.5 6 29.9004 10.2002c4.19922 2.40039 9.5 6.59961 13.8994 9.7998c3.40039 2.5 3.2002 5.40039 6 5.10059c2.7998 -0.300781 0.799805 -3.2002 -3.09961 -6.60059c-3.90039 -3.39941 -9.90039 -7.7998 -14.7998 -10.3994\nc-9.30078 -4.90039 -20.2002 -10.8008 -31.8008 -10.8008c-11.5 0 -20.6992 5.40039 -27.2998 10.6006c-3.2998 2.59961 -6 5.2002 -8 7.09961z\" />\n    <glyph glyph-name=\"dribbble\" unicode=\"&#xf17d;\" horiz-adv-x=\"512\" \nd=\"M256 440c136.748 0 248 -111.252 248 -248s-111.252 -248 -248 -248s-248 111.252 -248 248s111.252 248 248 248zM419.97 325.634c-4.46582 -6.04102 -39.9629 -51.5459 -118.284 -83.5225c7.43652 -15.2217 12.8652 -27.5732 18.6172 -41.6143\nc70.4844 8.86426 140.519 -5.34082 147.502 -6.81836c-0.46582 49.998 -18.332 95.9092 -47.835 131.955zM396.421 350.13c-52.0947 46.2188 -122.885 63.6816 -190.061 47.4893c5.85449 -7.83984 44.3281 -60.2324 79.04 -124.008\nc75.3232 28.2324 107.211 71.0918 111.021 76.5186zM165.941 383.38c-59.2637 -27.9531 -103.562 -82.585 -117.298 -148.318c9.47461 -0.125 96.7471 -0.503906 195.834 25.8096c-35.0986 62.3926 -72.9512 114.85 -78.5361 122.509zM44.1699 191.677\nc0 -54.4072 20.624 -104.082 54.457 -141.636c34.3369 58.7793 103.932 120.731 180.531 142.306c-5.31738 12.0342 -11.1104 24.0811 -17.1738 35.9492c-105.786 -31.6592 -208.438 -30.3359 -217.706 -30.1455c-0.0654297 -2.15137 -0.108398 -4.30762 -0.108398 -6.47363\nzM125.977 24.5645c62.7539 -48.9355 144.656 -56.8955 212.769 -27.8828c-3.15039 18.585 -15.4492 83.3555 -45.1895 160.639c-85.4004 -29.1348 -145.452 -87.5234 -167.579 -132.756zM374.357 16.0752c47.5215 32.1338 81.3525 83.0371 90.7949 141.978\nc-7.24707 2.28711 -65.5674 19.6816 -131.947 9.05566c27.7061 -76.1367 38.9805 -138.147 41.1523 -151.033z\" />\n    <glyph glyph-name=\"skype\" unicode=\"&#xf17e;\" \nd=\"M424.7 148.2c14.5996 -18.9004 23.2998 -42.5 23.2002 -68.1006c0 -61.7998 -50.2002 -112 -112 -112c-25.6006 0 -49.2002 8.7002 -68.2002 23.3008c-14.1006 -3 -28.9004 -4.7002 -43.7998 -4.7002c-113.4 0 -205.301 91.7998 -205.301 205.3\nc0 14.9004 1.80078 29.7998 4.7002 43.7998c-14.5996 18.9004 -23.2998 42.5 -23.2998 68.2002c0 61.7998 50.2002 112 112 112c25.7002 0 49.2998 -8.7002 68.2998 -23.4004c14.1006 3 28.9004 4.7002 43.7998 4.7002c113.4 0 205.301 -91.7998 205.301 -205.3\nc0 -14.9004 -1.80078 -29.7998 -4.7002 -43.7998zM230.1 56.7002c54.9004 0 112 27.3994 112 86.5c0 50.7998 -49.2998 68.2998 -90.6992 77.5996c-48.3008 11.2002 -69.1006 13.2002 -69.1006 33c0 15.5 16.2998 22.5 42 22.5c45.7998 0 46.7002 -33.5 75 -33.5\nc18.9004 0 30.2998 14.9004 30.2998 31.7998c0 33.5 -55.6992 55.4004 -110.8 55.4004c-50.5 0 -109.1 -21.9004 -109.1 -81.0996c0 -65.2002 55.2998 -71.8008 117.8 -87.2002c26 -6.40039 42 -9.2998 42 -28c0 -14.9004 -16.5996 -26.2998 -42.2998 -26.2998\nc-54 0 -56.9004 44.8994 -88.1006 44.8994c-20.5 0 -29.5 -14.5996 -29.5 -30.5996c0 -35.7998 54.9004 -65 120.5 -65z\" />\n    <glyph glyph-name=\"foursquare\" unicode=\"&#xf180;\" horiz-adv-x=\"368\" \nd=\"M323.1 445c40 0 50.7002 -22.7998 42.2002 -65.2002l-48.5996 -243c-3.7002 -14.5 -9.2002 -39.7002 -44.2998 -39.7002h-83.4004c-3.40039 0 -3.7002 0.300781 -6.7998 -3.09961c0 0 -2.2002 -2.5 -131.101 -151.9\nc-10.0996 -11.6992 -26.6992 -9.59961 -32.8994 -7.09961c-6.10059 2.40039 -18.2002 9.7998 -18.2002 30.0996v433.801c0 17.7998 12.4004 46.0996 49.9004 46.0996h273.199zM306.8 371.2c2.10059 9.7998 -5.2998 17.5 -13.5 17.5h-219\nc-9.7998 0 -16.5996 -8.90039 -16.5996 -16.6006v-338.8c0 -0.899414 0.899414 -1.2002 1.7998 -0.299805c80.5996 96.9004 89.5 108.3 89.5 108.3c9.2998 10.7998 13 12.6006 26.5 12.6006h73.5c10.0996 0 16 8.59961 16.9004 13.5\nc0.899414 5 9.59961 49.8994 11.3994 58.7998c1.7998 9 -6.5 18.2002 -14.7998 18.2002h-90.4004c-12 0 -20.5996 8.59961 -20.5996 20.5996v13c0 12 8.59961 20.2998 20.5996 20.2998h106.4c7.40039 0 15.7002 6.7002 16.9004 13.2002z\" />\n    <glyph glyph-name=\"trello\" unicode=\"&#xf181;\" \nd=\"M392.3 416c30.7998 -0.200195 55.7002 -25.2002 55.6006 -56v-336c0 -30.7998 -24.9004 -55.7998 -55.7002 -56h-336.2c-30.9004 0 -56 25.0996 -56 56c0 340 -0.0996094 336 0 336c0 30.9004 25.0996 56 56.0996 56h336.2zM197 76.7002h0.0996094v254.2\nc0 14.8994 -12.0996 26.8994 -26.8994 26.8994h-82.9004c-14.8994 0 -26.8994 -12.0996 -26.8994 -26.8994v-254.2c0.0996094 -14.7998 12.1992 -26.7002 27 -26.6006h82.6992c14.8008 0 26.7002 11.9004 26.9004 26.6006zM390.1 188.7v142.1\nc0 14.9004 -12.0996 26.9004 -26.8994 26.9004h-81.1006c-14.7998 0 -26.7998 -12.1006 -26.7998 -26.9004v-142.1c0 -14.9004 12.1006 -26.9004 26.9004 -26.9004h81c14.8994 0 26.8994 12.1006 26.8994 26.9004z\" />\n    <glyph glyph-name=\"gratipay\" unicode=\"&#xf184;\" horiz-adv-x=\"496\" \nd=\"M248 440c136.9 0 248 -111.1 248 -248s-111.1 -248 -248 -248s-248 111.1 -248 248s111.1 248 248 248zM362.6 213.6c8.80078 12 19.1006 50.4004 -13.7998 72c-27.7002 18.1006 -54.2002 4.2002 -68.0996 -11.8994c-15.1006 -16.9004 -45.7998 -17.9004 -61.7002 0\nc-13.9004 16.0996 -40.4004 30 -68.5 11.8994c-32.7002 -21.5996 -22.2998 -60.0996 -13.5996 -72l112.699 -152.699z\" />\n    <glyph glyph-name=\"vk\" unicode=\"&#xf189;\" horiz-adv-x=\"576\" \nd=\"M545 330.3c-7.40039 -34.2998 -79.2998 -135.5 -79.4004 -135.6c-6.19922 -10 -8.69922 -15 0 -26.2002c3.40039 -4.7998 79.1006 -76.5996 90.3008 -111.5c4.89941 -16.5996 -3.60059 -25 -20.4004 -25h-58.9004c-22.3994 0 -29 17.9004 -69 57.9004\nc-35 33.6992 -50 38.0996 -58.6992 38.0996c-18.8008 0 -15.4004 -6.2998 -15.4004 -73.0996c0 -14.5 -4.59961 -22.9004 -42.0996 -22.9004c-62.4004 0 -131 37.9004 -179.7 107.8c-73.1006 102.4 -93.1006 179.9 -93.1006 195.5c0 8.7998 3.40039 16.7002 20.2002 16.7002\nh58.9004c15.0996 0 20.7998 -6.59961 26.5996 -22.9004c28.7998 -84 77.4004 -157.399 97.4004 -157.399c7.5 0 10.8994 3.5 10.8994 22.5v86.7998c-2.19922 40 -23.3994 43.2998 -23.3994 57.5c0 6.5 5.59961 13.5 15 13.5h92.5996\nc12.4004 0 16.6006 -6.7002 16.6006 -21.7002v-116.7c0 -12.5 5.69922 -16.8994 9.39941 -16.8994c7.5 0 13.7998 4.39941 27.5 18.0996c42.4004 47.4004 72.4004 120.5 72.4004 120.5c3.7002 8.7998 10.5996 16.7002 25.5996 16.7002h58.9004\nc17.7998 0 21.5 -9.2002 17.7998 -21.7002z\" />\n    <glyph glyph-name=\"weibo\" unicode=\"&#xf18a;\" horiz-adv-x=\"512\" \nd=\"M407 270.4c7.59961 24 -13.4004 46.7998 -37.4004 41.6992c-22 -4.7998 -28.7998 28.1006 -7.09961 32.8008c50.0996 10.8994 92.2998 -37.1006 76.5 -84.8008c-6.7998 -21.1992 -38.7998 -10.7998 -32 10.3008zM214.8 1.2998c-106.3 0 -214.8 51.4004 -214.8 136.3\nc0 44.3008 28 95.4004 76.2998 143.7c99.7002 99.7002 203.2 100.9 173.601 5.7002c-4 -13.0996 12.2998 -5.7002 12.2998 -6c79.5 33.5996 140.5 16.7998 114 -51.4004c-3.7002 -9.39941 1.09961 -10.8994 8.2998 -13.0996c135.7 -42.2998 34.7998 -215.2 -169.7 -215.2z\nM358.5 147.6c-5.40039 55.7002 -78.5 94 -163.4 85.7002c-84.7998 -8.59961 -148.8 -60.2998 -143.399 -116c5.39941 -55.7002 78.5 -94 163.399 -85.7002c84.8008 8.60059 148.801 60.3008 143.4 116zM347.9 412.9c102.3 21.5996 189.3 -74.5 157.399 -174.301\nc-8.2998 -25 -44.7998 -12.1992 -37.3994 12c23.0996 71.2002 -39.4004 139.2 -111.7 124c-25.1006 -5.39941 -34.2002 32.7002 -8.2998 38.3008zM269.4 101.9c-17.1006 -38.8008 -66.8008 -60 -109.101 -46.3008c-40.7998 13.1006 -58 53.4004 -40.2998 89.7002\nc17.7002 35.4004 63.0996 55.4004 103.4 45.1006c42 -10.8008 63.0996 -50.2002 46 -88.5zM183.1 131.9c-12.8994 5.39941 -30 -0.300781 -38 -12.9004c-8.2998 -12.9004 -4.2998 -28 8.60059 -34c13.0996 -6 30.7998 -0.299805 39.0996 12.9004\nc8 13.0996 3.7002 28.2998 -9.7002 34zM215.7 145.3c-5.10059 1.7002 -11.4004 -0.599609 -14.2998 -5.39941c-2.90039 -5.10059 -1.40039 -10.6006 3.69922 -12.9004c5.10059 -2 11.7002 0.299805 14.6006 5.40039c2.7998 5.19922 1.09961 10.8994 -4 12.8994z\" />\n    <glyph glyph-name=\"renren\" unicode=\"&#xf18b;\" horiz-adv-x=\"512\" \nd=\"M214 278.9c0 -110.4 -61 -205.4 -147.6 -247.4c-36.4004 43.2998 -58.4004 98.7998 -58.4004 159.9c0 122.699 89.0996 224.399 206 244.1v-156.6zM255 -56c-42.9004 0 -83.2998 11 -118.5 30.4004c57.2002 36.0996 103.4 90.6992 118.5 154.6\nc15.5 -63.9004 61.7002 -118.5 118.8 -154.7c-35.0996 -19.2998 -75.5 -30.2998 -118.8 -30.2998zM445.6 31.5c-86.5996 42 -147.6 136.9 -147.6 247.4v156.6c116.9 -19.7002 206 -121.4 206 -244.1c0 -61.1006 -22 -116.601 -58.4004 -159.9z\" />\n    <glyph glyph-name=\"pagelines\" unicode=\"&#xf18c;\" horiz-adv-x=\"384\" \nd=\"M384 135.3c-55.0996 -136.7 -187.1 -54 -187.1 -54c-40.5 -81.7998 -107.4 -134.399 -184.601 -134.7c-16.0996 0 -16.5996 24.4004 0 24.4004c64.4004 0.299805 120.5 42.7002 157.2 110.1c-41.0996 -15.8994 -118.6 -27.8994 -161.6 82.2002\nc109 44.9004 159.1 -11.2002 178.3 -45.5c9.89941 24.4004 17 50.9004 21.5996 79.7002c0 0 -139.7 -21.9004 -149.5 98.0996c119.101 47.9004 152.601 -76.6992 152.601 -76.6992c1.59961 16.6992 3.2998 52.5996 3.2998 53.3994c0 0 -106.3 73.7002 -38.1006 165.2\nc124.601 -43 61.4004 -162.4 61.4004 -162.4c0.5 -1.59961 0.5 -23.7998 0 -33.3994c0 0 45.2002 89 136.4 57.5c-4.2002 -134 -141.9 -106.4 -141.9 -106.4c-4.40039 -27.3994 -11.2002 -53.3994 -20 -77.5c0 0 83 91.7998 172 20z\" />\n    <glyph glyph-name=\"stack-exchange\" unicode=\"&#xf18d;\" \nd=\"M17.7002 115.7h412.7v-22c0 -37.7002 -29.3008 -68 -65.3008 -68h-19l-86.7998 -89.7002v89.7002h-176.3c-36 0 -65.2998 30.2998 -65.2998 68v22zM17.7002 139.3v85h412.7v-85h-412.7zM17.7002 248.7v85h412.7v-85h-412.7zM365 448\nc36 0 65.2998 -30.2998 65.4004 -67.7002v-22.2998h-412.7v22.2998c0 37.4004 29.2998 67.7002 65.2998 67.7002h282z\" />\n    <glyph glyph-name=\"vimeo-square\" unicode=\"&#xf194;\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM383.8 266.4c1.90039 41.5996 -13.5996 63 -46.5 64c-44.2998 1.39941 -74.3994 -23.6006 -90.0996 -75.1006\nc19.5996 8.40039 48.5996 10.6006 45.2002 -22.2002c-0.900391 -11.0996 -8.10059 -27.0996 -21.5 -48.2998c-37.2002 -58.7002 -46.3008 -39.0996 -66.8008 90.5c-5.7998 36.5 -21.0996 53.5 -46 51.1006c-22 -2 -57.1992 -38 -94.0996 -70.4004l15 -19.4004\nc14.2998 10.1006 22.7002 15.1006 25.0996 15.1006c20.8008 0 31.5 -54.1006 56.7002 -146.4c12.9004 -34.3994 28.6006 -51.5996 47.2998 -51.5996c30.1006 0 66.9004 28.2998 110.4 84.7998c42.0996 54.0996 63.9004 96.7998 65.2998 127.9z\" />\n    <glyph glyph-name=\"slack\" unicode=\"&#xf198;\" \nd=\"M94.1201 132.9c0 -25.9004 -21.1602 -47.0605 -47.0605 -47.0605c-25.8994 0 -47.0596 21.1602 -47.0596 47.0605c0 25.8994 21.1602 47.0596 47.0596 47.0596h47.0605v-47.0596zM117.84 132.9c0 25.8994 21.1602 47.0596 47.0605 47.0596\nc25.8994 0 47.0596 -21.1602 47.0596 -47.0596v-117.841c0 -25.8994 -21.1602 -47.0596 -47.0596 -47.0596c-25.9004 0 -47.0605 21.1602 -47.0605 47.0596v117.841zM164.9 321.88c-25.9004 0 -47.0605 21.1602 -47.0605 47.0605c0 25.8994 21.1602 47.0596 47.0605 47.0596\nc25.8994 0 47.0596 -21.1602 47.0596 -47.0596v-47.0605h-47.0596zM164.9 298.16c25.8994 0 47.0596 -21.1602 47.0596 -47.0605c0 -25.8994 -21.1602 -47.0596 -47.0596 -47.0596h-117.841c-25.8994 0 -47.0596 21.1602 -47.0596 47.0596\nc0 25.9004 21.1602 47.0605 47.0596 47.0605h117.841zM353.88 251.1c0 25.9004 21.1602 47.0605 47.0605 47.0605c25.8994 0 47.0596 -21.1602 47.0596 -47.0605c0 -25.8994 -21.1602 -47.0596 -47.0596 -47.0596h-47.0605v47.0596zM330.16 251.1\nc0 -25.8994 -21.1602 -47.0596 -47.0605 -47.0596c-25.8994 0 -47.0596 21.1602 -47.0596 47.0596v117.841c0 25.8994 21.1602 47.0596 47.0596 47.0596c25.9004 0 47.0605 -21.1602 47.0605 -47.0596v-117.841zM283.1 62.1201c25.9004 0 47.0605 -21.1602 47.0605 -47.0605\nc0 -25.8994 -21.1602 -47.0596 -47.0605 -47.0596c-25.8994 0 -47.0596 21.1602 -47.0596 47.0596v47.0605h47.0596zM283.1 85.8398c-25.8994 0 -47.0596 21.1602 -47.0596 47.0605c0 25.8994 21.1602 47.0596 47.0596 47.0596h117.841\nc25.8994 0 47.0596 -21.1602 47.0596 -47.0596c0 -25.9004 -21.1602 -47.0605 -47.0596 -47.0605h-117.841z\" />\n    <glyph glyph-name=\"wordpress\" unicode=\"&#xf19a;\" horiz-adv-x=\"512\" \nd=\"M61.7002 278.6l101.5 -278c-71 34.4004 -119.9 107.2 -119.9 191.4c0 30.9004 6.60059 60.0996 18.4004 86.5996zM399.6 202.7c0 -18.2002 -7 -39.2998 -16 -68.7002l-21.1992 -70.9004l-76.9004 228.7c12.7998 0.700195 24.2998 2 24.2998 2\nc11.4004 1.2998 10.1006 18.2002 -1.39941 17.5c0 0 -34.5 -2.7002 -56.7002 -2.7002c-20.9004 0 -56 2.7002 -56 2.7002c-11.4004 0.700195 -12.7998 -16.7998 -1.2998 -17.5c0 0 10.7998 -1.2998 22.2998 -2l33.0996 -90.7998l-46.5996 -139.6l-77.5 230.399\nc12.7998 0.700195 24.2998 2 24.2998 2c11.4004 1.2998 10.0996 18.2002 -1.40039 17.5c0 0 -34.5 -2.7002 -56.6992 -2.7002c-4 0 -8.7002 0.100586 -13.7002 0.300781c38.0996 57.7998 103.5 95.8994 177.8 95.8994c55.4004 0 105.8 -21.2002 143.7 -55.8994\nc-1 0.0996094 -1.90039 0.199219 -2.7998 0.199219c-20.9004 0 -35.7002 -18.1992 -35.7002 -37.7998c0 -17.5 10.0996 -32.3994 20.8994 -49.8994c8.10059 -14.2002 17.5 -32.4004 17.5 -58.7002zM259.7 173.4l65.3994 -179.2c0.400391 -1 0.900391 -2 1.5 -2.90039\nc-22.0996 -7.7998 -45.7998 -12.0996 -70.5996 -12.0996c-20.9004 0 -41 3.09961 -60.0996 8.7002zM442.7 294.1c16.5996 -30.2998 26 -65.0996 26 -102.1c0 -78.5 -42.5 -147 -105.8 -183.9l65 187.9c12.1992 30.4004 16.1992 54.5996 16.1992 76.2002\nc0 7.89941 -0.5 15.0996 -1.39941 21.8994zM504 192c0 -136.8 -111.3 -248 -248 -248c-136.8 0 -248 111.3 -248 248c0 136.8 111.2 248 248 248c136.7 0 248 -111.2 248 -248zM492.6 192c0 130.5 -106.199 236.6 -236.6 236.6c-130.5 0 -236.6 -106.1 -236.6 -236.6\ns106.199 -236.6 236.6 -236.6c130.5 0 236.6 106.1 236.6 236.6z\" />\n    <glyph glyph-name=\"openid\" unicode=\"&#xf19b;\" \nd=\"M271.5 16l-68 -32c-115 10.2998 -203.5 71.5 -203.5 145.8c0 71.5 82.5 131 191.7 144.3v-43c-71.5 -12.5 -124 -53 -124 -101.3c0 -51 58.5 -93.2998 135.7 -103v340l68 33.2002v-384h0.0996094zM448 157l-131.3 28.5l36.7998 20.7002c-19.5 11.5 -43.5 20 -70 24.7998\nv43c46.2002 -5.5 87.7002 -19.5 120.3 -39.2998l35 19.7998z\" />\n    <glyph glyph-name=\"yahoo\" unicode=\"&#xf19e;\" \nd=\"M252 156l4 -220c-12.7002 2.2002 -23.5 3.90039 -32.2998 3.90039c-8.40039 0 -19.2002 -1.7002 -32.2998 -3.90039l4 220c-55 94.7998 -110.4 196.8 -174 292c11.8994 -3.09961 23 -3.90039 33.1992 -3.90039c9 0 20.4004 0.800781 34.1006 3.90039\nc40.8994 -72.2002 82.0996 -138.7 135 -225.5c37.2998 61.5996 91.0996 144.1 134.899 225.5c11.1006 -2.90039 22 -3.90039 32.9004 -3.90039c11.5 0 23.2002 1 35 3.90039c-34.4004 -47.9004 -131.6 -216.9 -174.5 -292z\" />\n    <glyph glyph-name=\"google\" unicode=\"&#xf1a0;\" horiz-adv-x=\"488\" \nd=\"M488 186.2c0 -141.5 -96.9004 -242.2 -240 -242.2c-137.2 0 -248 110.8 -248 248s110.8 248 248 248c66.7998 0 123 -24.5 166.3 -64.9004l-67.5 -64.8994c-88.2998 85.2002 -252.5 21.2002 -252.5 -118.2c0 -86.5 69.1006 -156.6 153.7 -156.6\nc98.2002 0 135 70.3994 140.8 106.899h-140.8v85.2998h236.1c2.30078 -12.6992 3.90039 -24.8994 3.90039 -41.3994z\" />\n    <glyph glyph-name=\"reddit\" unicode=\"&#xf1a1;\" horiz-adv-x=\"512\" \nd=\"M201.5 142.5c-13.7998 0 -24.9004 11.0996 -24.9004 24.5996c0 13.8008 11.1006 24.9004 24.9004 24.9004c13.5996 0 24.5996 -11.0996 24.5996 -24.9004c0 -13.5996 -11.0996 -24.5996 -24.5996 -24.5996zM504 192c0 -137 -111 -248 -248 -248s-248 111 -248 248\ns111 248 248 248s248 -111 248 -248zM371.7 233.2c-9.40039 0 -17.7002 -3.90039 -23.7998 -10c-22.4004 15.5 -52.6006 25.5 -86.1006 26.5996l17.4004 78.2998l55.3994 -12.5c0 -13.5996 11.1006 -24.5996 24.6006 -24.5996c13.7998 0 24.8994 11.2998 24.8994 24.9004\nc0 13.5996 -11.0996 24.8994 -24.8994 24.8994c-9.7002 0 -18 -5.7998 -22.1006 -13.7998l-61.1992 13.5996c-3 0.800781 -6.10059 -1.39941 -6.90039 -4.39941l-19.0996 -86.4004c-33.2002 -1.39941 -63.1006 -11.2998 -85.5 -26.7998\nc-6.10059 6.40039 -14.7002 10.2002 -24.1006 10.2002c-34.8994 0 -46.2998 -46.9004 -14.3994 -62.7998c-1.10059 -5 -1.7002 -10.2002 -1.7002 -15.5c0 -52.6006 59.2002 -95.2002 132 -95.2002c73.0996 0 132.3 42.5996 132.3 95.2002\nc0 5.2998 -0.599609 10.7998 -1.90039 15.7998c31.3008 16 19.8008 62.5 -14.8994 62.5zM302.8 117c2.2002 2.2002 6.10059 2.2002 8.2998 0c2.5 -2.5 2.5 -6.40039 0 -8.59961c-22.8994 -22.8008 -87.3994 -22.8008 -110.199 0c-2.5 2.19922 -2.5 6.09961 0 8.59961\nc2.19922 2.2002 6.09961 2.2002 8.2998 0c17.5 -17.9004 75.3994 -18.2002 93.5996 0zM310.5 192c13.9004 0 24.9004 -11.0996 24.9004 -24.9004c0 -13.5 -11.1006 -24.5996 -24.9004 -24.5996c-13.5 0 -24.5996 11 -24.5996 24.5996c0 13.8008 11 24.9004 24.5996 24.9004z\n\" />\n    <glyph glyph-name=\"reddit-square\" unicode=\"&#xf1a2;\" \nd=\"M283.2 102.5c2.7002 -2.7002 2.7002 -6.7998 0 -9.2002c-24.5 -24.5 -93.7998 -24.5996 -118.4 0c-2.7002 2.40039 -2.7002 6.5 0 9.2002c2.40039 2.40039 6.5 2.40039 8.90039 0c18.7002 -19.2002 81 -19.5996 100.5 0c2.39941 2.2998 6.59961 2.2998 9 0zM191.9 156.3\nc0 -14.5996 -11.9004 -26.5 -26.5 -26.5c-14.9004 0 -26.8008 11.9004 -26.8008 26.5c0 14.9004 11.9004 26.7998 26.8008 26.7998c14.5996 0 26.5 -11.8994 26.5 -26.7998zM282.6 183.1c14.9004 0 26.8008 -11.8994 26.8008 -26.7998\nc0 -14.5996 -11.9004 -26.5 -26.8008 -26.5c-14.5996 0 -26.5 11.9004 -26.5 26.5c0 14.9004 11.9004 26.7998 26.5 26.7998zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM348.3 227.4\nc-10.0996 0 -19 -4.2002 -25.5996 -10.7002c-24.1006 16.7002 -56.5 27.3994 -92.5 28.5996l18.7002 84.2002l59.5 -13.4004c0 -14.5996 11.8994 -26.5 26.5 -26.5c14.8994 0 26.7998 12.2002 26.7998 26.8008c0 14.5996 -11.9004 26.7998 -26.7998 26.7998\nc-10.4004 0 -19.3008 -6.2002 -23.8008 -14.9004l-65.6992 14.6006c-3.30078 0.899414 -6.5 -1.5 -7.40039 -4.80078l-20.5 -92.7998c-35.7002 -1.5 -67.7998 -12.2002 -91.9004 -28.8994c-6.5 6.7998 -15.7998 11 -25.8994 11c-37.5 0 -49.7998 -50.4004 -15.5 -67.5\nc-1.2002 -5.40039 -1.7998 -11 -1.7998 -16.7002c0 -56.5 63.6992 -102.3 141.899 -102.3c78.5 0 142.2 45.7998 142.2 102.3c0 5.7002 -0.599609 11.5996 -2.09961 17c33.5996 17.2002 21.1992 67.2002 -16.1006 67.2002z\" />\n    <glyph glyph-name=\"stumbleupon-circle\" unicode=\"&#xf1a3;\" horiz-adv-x=\"496\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM256 262.5c9.7998 0 17.7998 -8 17.7002 -17.5996v-20.6006l22.8994 -10.7002l34.1006 10.1006v23.7002c0 40.2998 -34 72.5996 -74.7002 72.5996\nc-40.5 0 -74.7002 -32.0996 -74.7002 -72.0996v-108.4c0 -9.90039 -8 -17.7998 -17.7998 -17.7998s-17.7998 7.7998 -17.7998 17.7998v45.7998h-57.2998v-46.5c0 -41.3994 33.5 -74.8994 74.8994 -74.8994c41 0 74.9004 33 74.9004 73.8994v106.9\nc0 9.7998 8 17.7998 17.7998 17.7998zM423.6 138.9c0 0 0 0.5 0.100586 46.3994h-57.2998v-48c0 -9.7002 -8 -17.5996 -17.8008 -17.5996c-9.7998 0 -17.7998 7.7998 -17.7998 17.5996v47.1006l-34.0996 -10.1006l-22.9004 10.7002v-46.7998\nc0 -41 33.7002 -74.2002 74.9004 -74.2002c41.3994 0 74.8994 33.5 74.8994 74.9004z\" />\n    <glyph glyph-name=\"stumbleupon\" unicode=\"&#xf1a4;\" horiz-adv-x=\"512\" \nd=\"M502.9 182v-69.7002c0 -62.0996 -50.3008 -112.399 -112.4 -112.399c-61.7998 0 -112.4 49.7998 -112.4 111.3v70.2002l34.3008 -16l51.0996 15.1992v-70.5996c0 -14.7002 12 -26.5 26.7002 -26.5s26.7998 11.7998 26.7998 26.5v72h85.9004zM278.2 240.2v30.8994\nc0 14.7002 -12 26.7002 -26.7002 26.7002s-26.7002 -12 -26.7002 -26.7002v-160.3c0 -61.2998 -50.7998 -110.8 -112.399 -110.8c-62.1006 0 -112.4 50.2998 -112.4 112.3v69.7002h86v-68.5996c0 -14.9004 12 -26.7002 26.7002 -26.7002s26.7002 11.7998 26.7002 26.7002\nv162.399c0 60 51.2998 108.2 112.1 108.2c61 0 112.1 -48.5 112.1 -109v-35.5996l-51.0996 -15.2002z\" />\n    <glyph glyph-name=\"delicious\" unicode=\"&#xf1a5;\" \nd=\"M446.5 380c1 -3.7998 1.5 -7.90039 1.59961 -12v-352.1c0 -26.5 -21.5 -48 -48 -48h-352c-4.09961 0 -8.19922 0.5 -12 1.5c-7.69922 2 -14.5996 5.7998 -20.2998 11c-1.2002 1.09961 -2.2998 2.19922 -3.2998 3.2998c-5.2002 5.7002 -9 12.5996 -11 20.2998\nc-1 3.7998 -1.5 7.90039 -1.5 12v352c0 26.5 21.5 48 48 47.9004h352c4.09961 0 8.2002 -0.5 12 -1.5c1.90039 -0.400391 3.7002 -1 5.40039 -1.7002c1.89941 -0.700195 3.69922 -1.5 5.5 -2.5c1.39941 -0.700195 2.69922 -1.5 4 -2.40039\nc1.09961 -0.799805 2.19922 -1.59961 3.2998 -2.5c2.5 -2 4.7998 -4.2998 6.89941 -6.7998c1.7002 -2.09961 3.30078 -4.5 4.7002 -6.90039c1.2998 -2.2998 2.40039 -4.59961 3.2998 -7.09961c0.5 -1.5 1 -3 1.40039 -4.5zM416 16v176h-192v192h-176\nc-8.7998 0 -16 -7.2002 -16 -16v-176h192v-192h176c8.7998 0 16 7.2002 16 16z\" />\n    <glyph glyph-name=\"digg\" unicode=\"&#xf1a6;\" horiz-adv-x=\"512\" \nd=\"M81.7002 275.7v76.2998h51v-250.7h-132.7v174.4h81.7002zM81.7002 142.3v92.2998h-30.7998v-92.2998h30.7998zM378.9 275.7h133.1v-243.7h-133.1v40.7998h81.7998v28.5h-81.7998v174.4zM460.7 142.3v92.2998h-30.7998v-92.2998h30.7998zM225.1 101.3v174.4h133.301\nv-243.7h-133.301v40.7998h82.1006v28.5h-82.1006zM276.3 234.6v-92.2998h30.7998v92.2998h-30.7998zM153.3 352h51.2998v-51h-51.2998v51zM153.3 275.7h51.2998v-174.4h-51.2998v174.4z\" />\n    <glyph glyph-name=\"pied-piper-pp\" unicode=\"&#xf1a7;\" \nd=\"M205.3 273.4c0 -21.1006 -14.2002 -38.1006 -31.7002 -38.1006c-7.09961 0 -12.7998 1.2002 -17.1992 3.7002v68c4.39941 2.7002 10.0996 4.2002 17.1992 4.2002c17.5 0 31.7002 -16.9004 31.7002 -37.7998zM257.9 206.4c17.3994 0 31.6992 -17 31.6992 -38.1006\nc0 -20.8994 -14.2998 -37.7998 -31.6992 -37.7998c-7.10059 0 -12.8008 1.2002 -17.2002 3.7002v68c4.39941 2.7002 10.0996 4.2002 17.2002 4.2002zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352\nc26.5 0 48 -21.5 48 -48zM185 192.9c41 0 74.2002 35.5996 74.2002 79.5996s-33.2002 79.5996 -74.2002 79.5996c-12 0 -24.0996 -3.19922 -34.5996 -8.7998h-45.7002v-206.3l51.7998 10.0996v50.6006c8.59961 -3.10059 18.0996 -4.7998 28.5 -4.7998zM343.4 167.6\nc0 44 -33.2002 79.6006 -73.9004 79.6006c-3.2002 0 -6.40039 -0.200195 -9.59961 -0.700195c-3.7002 -12.5 -10.1006 -23.7998 -19.2002 -33.4004c-13.7998 -15 -32.2002 -23.7998 -51.7998 -24.7998v-156.3l51.7998 10.0996v50.6006\nc8.59961 -3.2002 18.2002 -4.7002 28.7002 -4.7002c40.7998 0 74 35.5996 74 79.5996z\" />\n    <glyph glyph-name=\"pied-piper-alt\" unicode=\"&#xf1a8;\" horiz-adv-x=\"576\" \nd=\"M244 202l-27.7002 -5.7002l-1.7002 4.90039c6.7002 0.5 12.7002 3.7002 19.3008 3.7002c3.7998 0 6.89941 -0.900391 10.0996 -2.90039zM379.9 4.09961c9.5 0 28.1992 -45.0996 33 -55.0996c-35.9004 -13.4004 -70.3008 -15.9004 -106 -9.7998l-6.90039 45.0996\nc15.7998 10.2998 60.9004 19.7998 79.9004 19.7998zM340.8 271c-7.59961 3.5 -63.8994 6.40039 -98.7998 -10c6.2998 11.7998 13.2002 17 25.9004 21.7998c27.2998 10.2998 40.1992 30.5 58.8994 51.1006c11.9004 -8.40039 12 -24.6006 31.6006 -23v-21.8008\nl6.2998 -0.299805c37.3994 14.4004 74.7002 30.2002 106.6 54.6006c48.2998 36.7998 52.9004 50 81.2998 100l2 2.59961c-0.599609 -14.0996 -6.2998 -27.2998 -12.3994 -39.9004c-30.5 -63.7998 -78.7002 -100.3 -146.8 -116.699\nc-12.4004 -2.90039 -26.4004 -3.2002 -37.6006 -8.90039c1.40039 -9.7998 13.2002 -18.0996 13.2002 -23c0 -3.40039 -5.5 -7.2002 -7.5 -8.59961c-11.2002 12.8994 -16.0996 19.2998 -22.7002 22.0996zM555.5 448l-0.299805 -1.40039l-0.600586 -0.599609\nl0.300781 0.900391zM496.3 65.9004c20.1006 -34.2002 43.7002 -54.3008 72.7002 -79.9004c-31 -19.2998 -70.4004 -32.2002 -103.5 -47.2002c-55.2002 46.2998 -23 229.9 -111.5 229.9c-3.5 -0.700195 -2.40039 -0.299805 -4.59961 -1.7002\nc1.09961 -1.40039 2.59961 -2.90039 3.69922 -4c23.9004 -20.0996 33.4004 -24.4004 34.8008 -58.5996l0.299805 -9.5c0.799805 -21.6006 -5.5 -42.5 -9.7998 -63.5c-25.9004 0.699219 -51.2002 -11 -77.9004 -2.90039c-0.700195 5.90039 -1.09961 30.9004 0.299805 41.0996\nc1.40039 9.5 33.6006 29.9004 33 43.7002c-5.5 0.600586 -9.2002 -2.59961 -12.3994 -6.89941c-13.3008 -19.5 -47.2002 -41.9004 -71.3008 -41.9004c-16.5996 0 -56.2998 71.5 -76.3994 85.9004c-3.2002 2.2998 -5.2002 5.39941 -7.7998 8.59961\nc-16.1006 -3.7998 -139.4 -32.2002 -147.4 -32.2002c-6 0 -11.5 4.90039 -11.5 10.9004c0 5.5 3.40039 10.7002 8.90039 11.7998l139.6 30.4004c-9.5 17.1992 12.2998 17.5 21.5 20.0996c3.2002 0.799805 6.2998 4 9.5 4c6.2998 0 11.7998 -8.90039 13.7998 -14.0996\nc6.2998 1.39941 45.7002 10.5996 49.4004 10.5996c15.2002 0 15.8994 -20.0996 2.89941 -22.7002l-52.2998 -11.5l-0.299805 -4.59961c-0.299805 -10.1006 45.4004 -60.1006 53.4004 -60.1006c18.0996 0 54.8994 41.7002 54.8994 60.1006\nc0 30.7002 -42.7998 12.5996 -42.7998 33.5996c0 3.5 1.2002 6.60059 2.90039 9.7998l-19.5 5.5c13.0996 13.6006 13.7998 31.7002 10.8994 50.3008c14.7002 2.89941 26.7002 4.59961 41.4004 4.59961c56.8994 0 45.7002 -8.59961 65.5 -54.2998l14.3994 7.2002\nc-2.2998 -34.2002 -36.1992 -17.5 -35.0996 -31l0.299805 -6c74.7002 2.89941 116.101 -58.6006 150 -115.5zM300.1 19.7998h8.90039l2.90039 -23.7998l-11.8008 -3.40039v27.2002zM231.4 170.2l13.7998 3.5l31.2998 -50.9004l-21 -13.7998zM315.8 15.2998\nc22.6006 2.5 32.7002 6.2998 59.5 6.2998c0.299805 -1.39941 0.900391 -3.19922 0.900391 -4.59961c0 -7.5 -49.4004 -12.5996 -58.4004 -14.0996z\" />\n    <glyph glyph-name=\"drupal\" unicode=\"&#xf1a9;\" \nd=\"M319.5 333.3c13.5 -8.2998 96.5 -67 96.5 -179.3c0 -112 -88.5 -186 -190.2 -186c-102 0 -193.8 80.2998 -193.8 189.5c0 109 85 167.5 100.8 175.8c18.7002 10.1006 32.2002 15.2998 53.5 32.2998c10.5 8.30078 19.2998 20.2002 22 49.5\nc15.2002 -18.2998 33.5 -39.5 46.5 -48.2998c21.2002 -14 42.5 -19.5 64.7002 -33.5zM322 7.7002c4.2002 4.2002 1.90039 13.0996 -4.2002 8.5c-8.5 -6.2998 -27.5 -14 -54.5 -14c-34.5 0 -51.5 13.2998 -51.5 13.2998c-6.2002 0 -11.2998 -7.2002 -6.5 -12\nc26.6006 -24.5 96.6006 -15.9004 116.7 4.2002zM267.5 60.2998c-6.5 -2.7002 -28.4004 -16.7998 -22.4004 -25c2.40039 -3.2998 5.2002 -1.2998 12.2002 4.7002c7.2002 5.7998 12 11 26.7002 11c25.2998 0 18.0996 -19.9004 26.5 -15.7002\nc9.90039 4.90039 -2.09961 20.9004 -6.2002 23.7002c-7.7998 5.09961 -28.0996 4.90039 -36.7998 1.2998zM360 43c39.0996 -3.2998 64.5 106 15.7998 106c-20 0 -60.5 -41.5 -81.7998 -41.7998c-24.7002 -0.5 -59 49 -108.5 48.5\nc-66.4004 -0.400391 -90.5996 -78.6006 -51.7998 -105.2c57.2002 -38.7002 130.399 42.9004 161.3 42c19.5 -0.700195 49.7998 -48.5 65 -49.5z\" />\n    <glyph glyph-name=\"joomla\" unicode=\"&#xf1aa;\" \nd=\"M0.599609 355.9c0 33.2998 26.8008 60.0996 59.8008 60.0996c30 0 54.5 -21.9004 59.1992 -50.2002c32.6006 7.60059 67.1006 -0.599609 96.5 -30l-44.2998 -44.2998c-20.5 20.5 -42.5996 16.2998 -55.3994 3.5c-14.3008 -14.2998 -14.3008 -37.9004 0 -52.2002\nl99.5 -99.5l-44 -44.2998c-87.7002 87.2002 -49.7002 49.7002 -99.8008 99.7002c-26.7998 26.5 -35 64.7998 -24.7998 98.8994c-26.8994 5.80078 -46.7002 29.7002 -46.7002 58.3008zM130.1 239.5c28.5 28.4004 81.3008 80.7998 99.6006 99.9004\nc26.5996 26.5996 64.5 35 98.2998 25.0996c4.09961 29.0996 29.2002 51.5996 59.5 51.5996c33 0 59.7998 -26.8994 59.7998 -60.0996c0 -30.2998 -22.7002 -55.4004 -51.8994 -59.5c9.59961 -33.5996 2.2998 -70 -28.9004 -101.2l-44 44.2998\nc20.5 20.4004 16.2998 42.6006 3.5 55.4004c-14.2998 14.2998 -37.5996 14.2998 -51.9004 0c-10 -10.0996 -89.6992 -89.7998 -99.6992 -99.7998zM396.4 87.2998c29.0996 -4.09961 51.5996 -28.8994 51.5996 -59.0996c0 -33.2998 -26.7998 -60.1006 -59.7998 -60.1006\nc-29.2002 0 -53.4004 20.7002 -58.9004 48.1006c-34.7002 -10.7998 -75.0996 -2.2002 -102.7 28l44 44.2998c20.4004 -20.5 42.6006 -16.2998 55.4004 -3.5c14.2998 14.2998 14.2998 37.5996 0 51.9004l-99.7002 99.6992l44.2998 44.3008\nc104.5 -104.4 87.7002 -87.5 99.5 -99.7002c25.4004 -25.4004 34.5 -61.2002 26.3008 -93.9004zM312.1 140.4c-87.2998 -87.3008 -67.3994 -67.7002 -99.5 -99.7002c-25.6992 -25.4004 -61.5 -34.2002 -94.1992 -26c-6.10059 -26.9004 -30 -46.7002 -58.6006 -46.7002\nc-33 0 -59.7998 26.7998 -59.7998 60.0996c0 28.3008 19.5 52.2002 46.2002 58.2002c-8.5 33.1006 -0.700195 68.1006 29.5 98.2998l44 -44.2998c-20.1006 -20.0996 -16.2998 -42 -3.2002 -55.3994c14.2998 -14.3008 37.5996 -14.3008 51.9004 0\nc49.2998 49.3994 12.6992 13.3994 99.6992 99.7998z\" />\n    <glyph glyph-name=\"behance\" unicode=\"&#xf1b4;\" horiz-adv-x=\"576\" \nd=\"M232 210.8c43.5996 -12.2998 64.7002 -45.2002 64.7002 -89.7002c0 -72 -60.5 -102.899 -124.9 -102.899h-171.8v354.399h167.1c60.7002 0 113.301 -17.1992 113.301 -87.7998c0 -35.7998 -16.6006 -58.7998 -48.4004 -74zM77.9004 312.1v-82.6992h79\nc27.7998 0 47.5 12.0996 47.5 42.1992c0 32.6006 -25.3008 40.5 -53.4004 40.5h-73.0996zM161.2 78.4004c31.7002 0 57.5996 11.1992 57.5996 47c0 36.2998 -21.7002 50.5996 -56 50.5996h-84.8994v-97.5996h83.2998zM519.7 319.1h-143.7v34.9004h143.7v-34.9004zM576 142.8\nc0 -4.5 -0.299805 -9 -0.599609 -13.2002h-185.101c0 -41.0996 21.7002 -65.2998 63 -65.2998c21.4004 0 49 11.6006 55.7002 33.5h62.2002c-19.1006 -58.7002 -58.7998 -86.2998 -120.101 -86.2998c-81 0 -131.3 54.7998 -131.3 134.7c0 77 53.1006 135.8 131.3 135.8\nc80.5 0 124.9 -63.2998 124.9 -139.2zM390.4 174h114.699c-3 34 -20.7998 54.7998 -56.1992 54.7998c-33.8008 0 -56.2002 -21.0996 -58.5 -54.7998z\" />\n    <glyph glyph-name=\"behance-square\" unicode=\"&#xf1b5;\" \nd=\"M186.5 155c0 -19.2998 -14 -25.4004 -31.2002 -25.4004h-45.0996v52.9004h46c18.5996 -0.0996094 30.2998 -7.7998 30.2998 -27.5zM178.8 237.3c0 -16.2998 -10.7002 -22.8994 -25.7998 -22.8994h-42.7002v44.7998h39.6006c15.1992 0 28.8994 -4.2002 28.8994 -21.9004z\nM311.1 214.1c19.2002 0 28.8008 -11.1992 30.5 -29.6992h-62.1992c1.19922 18.2998 13.3994 29.6992 31.6992 29.6992zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM271.7 263h77.7998\nv18.9004h-77.7998v-18.9004zM228.7 152.7c0 24.0996 -11.4004 44.8994 -35 51.5996c17.2002 8.2002 26.2002 17.7002 26.2002 37c0 38.2002 -28.5 47.5 -61.4004 47.5h-90.5v-192h93.0996c34.9004 0.200195 67.6006 16.9004 67.6006 55.9004zM380 167.5\nc0 41.0996 -24.0996 75.4004 -67.5996 75.4004c-42.4004 0 -71.1006 -31.8008 -71.1006 -73.6006c0 -43.2998 27.2998 -73 71.1006 -73c33.1992 0 54.6992 14.9004 65.0996 46.7998h-33.7002c-3.7002 -11.8994 -18.5996 -18.0996 -30.2002 -18.0996\nc-22.3994 0 -34.0996 13.0996 -34.0996 35.2998h100.2c0.0996094 2.2998 0.299805 4.7998 0.299805 7.2002z\" />\n    <glyph glyph-name=\"steam\" unicode=\"&#xf1b6;\" horiz-adv-x=\"496\" \nd=\"M496 192c0 -137 -111.2 -248 -248.4 -248c-113.8 0 -209.6 76.2998 -239 180.4l95.2002 -39.3008c6.40039 -32.0996 34.9004 -56.3994 68.9004 -56.3994c39.2002 0 71.8994 32.3994 70.2002 73.5l84.5 60.2002c52.0996 -1.30078 95.7998 40.8994 95.7998 93.5\nc0 51.5996 -42 93.5 -93.7002 93.5s-93.7002 -42 -93.7002 -93.5v-1.2002l-59.2002 -85.7002c-15.5 0.900391 -30.6992 -3.40039 -43.5 -12.0996l-133.1 55c10.2002 127.699 117.1 228.1 247.6 228.1c137.2 0 248.4 -111 248.4 -248zM155.7 63.7002\nc19.7998 -8.2002 42.5 1.09961 50.7998 21c8.2998 19.7998 -1.09961 42.5 -20.9004 50.7002l-31.5 13c12.2002 4.59961 26 4.7998 38.9004 -0.600586c13 -5.39941 23.0996 -15.5996 28.5 -28.5996s5.2998 -27.2998 -0.0996094 -40.2998\nc-11.2002 -26.8008 -42.1006 -39.6006 -69 -28.4004c-10.2119 4.26953 -22.3975 15.8281 -27.2002 25.7998zM329.5 193.6c-34.4004 0 -62.4004 28 -62.4004 62.3008c0 34.2998 28 62.2998 62.4004 62.2998s62.4004 -28 62.4004 -62.2998\nc0 -34.3008 -27.9004 -62.3008 -62.4004 -62.3008zM329.6 209.2c25.9004 0 46.9004 21 46.9004 46.7998c0 25.9004 -21 46.7998 -46.9004 46.7998c-25.8994 0 -46.8994 -21 -46.8994 -46.7998c0.0996094 -25.7998 21.0996 -46.7998 46.8994 -46.7998z\" />\n    <glyph glyph-name=\"steam-square\" unicode=\"&#xf1b7;\" \nd=\"M185.2 91.5c7.7002 18.5 -1 39.7002 -19.6006 47.4004l-29.5 12.1992c11.4004 4.30078 24.3008 4.5 36.4004 -0.5c12.2002 -5.09961 21.5996 -14.5996 26.7002 -26.6992c5 -12.2002 5 -25.6006 -0.100586 -37.7002c-10.5 -25.1006 -39.3994 -37 -64.5996 -26.5\nc-11.5996 4.7998 -20.4004 13.5996 -25.4004 24.2002l28.5 -11.8008c18.6006 -7.7998 39.9004 0.900391 47.6006 19.4004zM400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v112.8l89.0996 -36.8994\nc6 -30 32.7002 -52.7002 64.5 -52.7002c36.6006 0 67.3008 30.2998 65.7002 68.7998l79 56.2998c48.7002 -1.2002 89.6006 38.2998 89.6006 87.5c0 48.2002 -39.3008 87.5 -87.6006 87.5s-87.5996 -39.2998 -87.5996 -87.5v-1.09961l-55.4004 -80.2002\nc-14.5 0.799805 -28.7002 -3.09961 -40.7002 -11.2998l-116.6 48.0996v160.7c0 26.5 21.5 48 48 48h352zM300.3 193.5c-32.2002 0 -58.3994 26.0996 -58.3994 58.2998s26.1992 58.2998 58.3994 58.2998s58.4004 -26.1992 58.4004 -58.2998\nc0 -32.0996 -26.2002 -58.2998 -58.4004 -58.2998zM300.4 208.1c24.1992 0 43.8994 19.6006 43.8994 43.8008c0 24.1992 -19.5996 43.7998 -43.8994 43.7998c-24.2002 0 -43.9004 -19.6006 -43.9004 -43.7998c0 -24.2002 19.7002 -43.8008 43.9004 -43.8008z\" />\n    <glyph glyph-name=\"spotify\" unicode=\"&#xf1bc;\" horiz-adv-x=\"496\" \nd=\"M248 440c136.9 0 248 -111.1 248 -248s-111.1 -248 -248 -248s-248 111.1 -248 248s111.1 248 248 248zM348.7 75.0996c8.09961 0 15.2002 6.30078 15.2002 15.4004s-3.60059 12.5996 -9.7002 16.5c-71.4004 42.7002 -155.101 44.2998 -237 26.2002\nc-7.5 -1.60059 -13.6006 -6.5 -13.6006 -16.7998c0 -8.10059 6.10059 -15.8008 15.8008 -15.8008c2.89941 0 8 1.60059 11.8994 2.60059c71.7002 14.7002 144.3 13.0996 206.7 -24.5c3.90039 -2.2998 6.5 -3.60059 10.7002 -3.60059zM375.6 140.7\nc10.9004 0 19.3008 8.7002 19.4004 19.5c0 8.7002 -3.2002 14.8994 -11.2998 19.7002c-49.4004 29.3994 -112.101 45.5 -177 45.5c-41.6006 0 -70 -5.80078 -97.7998 -13.6006c-10.3008 -2.89941 -15.5 -10 -15.5 -20.7002c0 -10.6992 8.69922 -19.3994 19.3994 -19.3994\nc4.5 0 7.10059 1.2998 11.9004 2.59961c82.8994 22.5 176.1 7.60059 238.6 -29.3994c3.60059 -1.90039 7.10059 -4.2002 12.2998 -4.2002zM406.6 216.9c12.2002 0 23.2002 9.69922 23.2002 23.2998c0 11.8994 -5.09961 18.0996 -12.8994 22.5996\nc-55.9004 32.6006 -132.4 47.7998 -205.4 47.7998c-42.9004 0 -82.2998 -4.89941 -117.5 -15.1992c-9 -2.60059 -17.4004 -10.3008 -17.4004 -23.9004c0 -13.2998 10.1006 -23.5996 23.3008 -23.5996c4.7998 0 9.2998 1.59961 12.8994 2.59961\nc82.4004 23 209.7 12.7998 280.9 -29.7002c4.5 -2.59961 7.7002 -3.89941 12.8994 -3.89941z\" />\n    <glyph glyph-name=\"deviantart\" unicode=\"&#xf1bd;\" horiz-adv-x=\"320\" \nd=\"M320 354.8l-98.2002 -179.1l7.40039 -9.5h90.7998v-127.7h-160.9l-13.5 -9.2002l-43.6992 -84c-0.300781 0 -8.60059 -8.59961 -9.2002 -9.2002h-92.7002v93.2002l93.2002 179.4l-7.40039 9.2002h-85.7998v127.6h156l13.5 9.2002l43.7002 84\nc0.299805 0 8.59961 8.59961 9.2002 9.2002h97.5996v-93.1006z\" />\n    <glyph glyph-name=\"soundcloud\" unicode=\"&#xf1be;\" horiz-adv-x=\"640\" \nd=\"M111.4 191.7l5.7998 -65l-5.7998 -68.2998c-0.300781 -2.5 -2.2002 -4.40039 -4.40039 -4.40039s-4.2002 1.90039 -4.2002 4.40039l-5.59961 68.2998l5.59961 65c0 2.2002 1.90039 4.2002 4.2002 4.2002c2.2002 0 4.09961 -2 4.40039 -4.2002zM132.8 237.3\nc2.5 0 4.7002 -2.2002 4.7002 -5l5.7998 -105.6l-5.7998 -68.2998c0 -2.80078 -2.2002 -5 -4.7002 -5c-2.7998 0 -4.7002 2.19922 -5 5l-5 68.2998l5 105.6c0.299805 2.7998 2.2002 5 5 5zM158.3 261.4c2.7998 0 5.2998 -2.2002 5.2998 -5.30078l5.30078 -130\nl-5.30078 -67.7998c0 -3.09961 -2.5 -5.2998 -5.2998 -5.2998c-3.09961 0 -5.2998 2.2002 -5.59961 5.2998l-4.40039 67.7998l4.40039 130c0.299805 3.10059 2.5 5.30078 5.59961 5.30078zM7.2002 164.8c1.39941 0 2.2002 -1.09961 2.5 -2.5l5.59961 -35.5996l-5.59961 -35\nc-0.299805 -1.40039 -1.10059 -2.5 -2.5 -2.5c-1.40039 0 -2.2002 1.09961 -2.5 2.5l-4.7002 35l4.7002 35.5996c0.299805 1.40039 1.09961 2.5 2.5 2.5zM30.7998 186.7c1.40039 0 2.5 -1.10059 2.7998 -2.5l7.2002 -57.5l-7.2002 -56.4004\nc-0.299805 -1.39941 -1.39941 -2.5 -2.7998 -2.5c-1.39941 0 -2.5 1.10059 -2.5 2.7998l-6.39941 56.1006l6.39941 57.5c0 1.39941 1.10059 2.5 2.5 2.5zM56.0996 198.1c1.7002 0 3.10059 -1.39941 3.10059 -3.2998l6.89941 -68.0996l-6.89941 -65.7998\nc0 -1.7002 -1.40039 -3.10059 -3.10059 -3.10059c-1.59961 0 -3 1.40039 -3.2998 3.10059l-5.7998 65.7998l5.7998 68.0996c0.200195 1.90039 1.60059 3.2998 3.2998 3.2998zM81.4004 200.3c1.89941 0 3.59961 -1.39941 3.89941 -3.59961l6.40039 -70l-6.40039 -67.7998\nc-0.299805 -2.2002 -2 -3.60059 -3.89941 -3.60059c-1.90039 0 -3.60059 1.40039 -3.60059 3.60059l-5.7998 67.7998l5.7998 70c0 2.2002 1.7002 3.59961 3.60059 3.59961zM322.8 311.2c2.5 -1.40039 4.10059 -4.2002 4.5 -7.2002l3.90039 -177.5l-3.90039 -64.2002\nc0 -4.7002 -3.89941 -8.59961 -8.59961 -8.59961s-8.60059 3.89941 -8.90039 8.59961l-1.7002 31.7002l-1.69922 32.5l3.2998 176.7v0.799805c0.200195 2.5 1.39941 5 3.2998 6.7002c1.40039 1.09961 3.40039 1.89941 5.59961 1.89941\nc1.40039 0 3.10059 -0.599609 4.2002 -1.39941zM296.1 295.9c2.2002 -1.40039 3.60059 -3.90039 3.90039 -6.7002l3.2998 -162.8l-3.09961 -58.6006l-0.299805 -6.7002c0 -2.2998 -0.800781 -4.19922 -2.5 -5.59961c-1.40039 -1.40039 -3.40039 -2.5 -5.60059 -2.5\nc-2.5 0 -4.7002 1.2002 -6.39941 3.09961c-1.10059 1.40039 -1.7002 3 -1.7002 4.7002v0.299805c-3.10059 65.3008 -3.10059 65.6006 -3.10059 65.6006l2.80078 160.8l0.299805 1.7002c0 2.7998 1.39941 5.2998 3.59961 6.7002\nc1.2998 0.799805 2.7998 1.39941 4.40039 1.39941c1.59961 0 3 -0.599609 4.39941 -1.39941zM184.7 273.4c3.39941 0 5.89941 -2.80078 6.09961 -6.10059l5 -140.6l-5 -67.2002c-0.299805 -3.2998 -2.7998 -5.7998 -6.09961 -5.7998c-3 0 -5.5 2.5 -5.7998 5.7998\nl-4.40039 67.2002l4.40039 140.6c0 3.2998 2.69922 6.10059 5.7998 6.10059zM561.4 210.6c43.2998 0 78.5996 -35.2998 78.5 -78.8994c0 -43.2998 -35.3008 -78.2998 -78.6006 -78.2998h-218.3c-4.7002 0.599609 -8.59961 4.19922 -8.59961 9.19922v249.7\nc0 4.7998 1.69922 7 7.7998 9.2002c15.2998 6.09961 32.5 9.40039 50.2998 9.40039c72.5 0 131.9 -55.6006 138.3 -126.4c9.5 3.90039 19.7998 6.09961 30.6006 6.09961zM264.7 270.9c4.2002 0 7.2002 -3.30078 7.5 -7.80078l3.89941 -136.699l-3.89941 -65.6006\nc0 -4.2002 -3.2998 -7.5 -7.5 -7.5s-7.5 3.2998 -7.7998 7.5l-3.30078 65.6006l3.30078 136.699c0.299805 4.5 3.59961 7.80078 7.7998 7.80078zM211.1 278.7c3.60059 0 6.40039 -3.10059 6.7002 -6.7002l4.40039 -145.3l-4.40039 -66.9004\nc-0.299805 -3.59961 -3.09961 -6.39941 -6.7002 -6.39941c-3.2998 0 -6.09961 2.7998 -6.39941 6.39941l-3.90039 66.9004l3.90039 145.3c0 3.59961 3.09961 6.7002 6.39941 6.7002zM237.8 275.3c3.90039 0 6.90039 -3 6.90039 -6.89941l4.2002 -141.7l-4.2002 -66.4004\nc0 -3.7998 -3.10059 -6.89941 -6.90039 -6.89941s-6.59961 3 -6.89941 6.89941l-3.90039 66.4004l3.90039 141.7c0 3.7998 3 6.89941 6.89941 6.89941z\" />\n    <glyph glyph-name=\"vine\" unicode=\"&#xf1ca;\" horiz-adv-x=\"384\" \nd=\"M384 193.3v-52.0996c-18.4004 -4.2002 -36.9004 -6.10059 -52.0996 -6.10059c-36.9004 -77.3994 -103 -143.8 -125.101 -156.199c-14 -7.90039 -27.0996 -8.40039 -42.7002 0.799805c-27.0996 16.2998 -129.899 100.6 -164.1 365.6h74.5\nc18.7002 -159.1 64.5 -240.7 114.8 -301.8c27.9004 27.9004 54.7998 65.0996 75.6006 106.9c-49.8008 25.2998 -80.1006 80.8994 -80.1006 145.6c0 65.5996 37.7002 115.1 102.2 115.1c114.9 0 106.2 -127.899 81.5996 -181.5c0 0 -46.3994 -9.19922 -63.5 20.5\nc3.40039 11.3008 8.2002 30.8008 8.2002 48.5c0 31.3008 -11.2998 46.6006 -28.3994 46.6006c-18.2002 0 -30.8008 -17.1006 -30.8008 -50c0.100586 -79.2002 59.4004 -118.7 129.9 -101.9z\" />\n    <glyph glyph-name=\"codepen\" unicode=\"&#xf1cb;\" horiz-adv-x=\"512\" \nd=\"M502.285 288.296c6.00098 -3.99902 9.71484 -11.1426 9.71582 -18.2852v-155.999c0 -7.14258 -3.71484 -14.2871 -9.71484 -18.2861l-234 -156.021c-8.06055 -4.95996 -16.584 -4.91504 -24.5713 0l-234 156.021c-6.00098 4 -9.71484 11.1436 -9.71484 18.2861v155.999\nc0 7.14258 3.71387 14.2861 9.71387 18.2852l234 156c8.06055 4.95996 16.584 4.91504 24.5713 0zM278 384.869v-102.572l95.4287 -63.7148l76.8574 51.4287zM234 384.869l-172.286 -114.858l76.8574 -51.4287l95.4287 63.7148v102.572zM44 228.868v-73.7139\nl55.1426 36.8564zM234 -0.84668v102.571l-95.4287 63.7158l-76.8574 -51.4297zM256 140.011l77.7148 52l-77.7148 52l-77.7148 -52zM278 -0.84668l172.286 114.857l-76.8574 51.4297l-95.4287 -63.7158v-102.571zM468 155.154v73.7139l-55.1426 -36.8574z\" />\n    <glyph glyph-name=\"jsfiddle\" unicode=\"&#xf1cc;\" horiz-adv-x=\"576\" \nd=\"M510.634 210.538c45.6885 -25.334 68.3721 -74.5605 56.832 -122.634c-12.1035 -50.4199 -55.5479 -86.6592 -108.212 -87.293c-84.0303 -1.01172 -168.079 -0.458984 -252.12 -0.480469c-30.3223 -0.00683594 -60.668 -0.492188 -90.959 0.539062\nc-48.0938 1.63672 -91.7764 35.8643 -105.607 81.4326c-14.1289 46.5508 2.18945 94.623 41.9014 124.615c2.54688 1.92383 4.86914 6.52051 4.51465 9.54492c-3.74609 31.8604 7.14453 57.6709 32.6758 76.4082c26.2822 19.2881 55.2285 21.5879 85.3311 9.16699\nc2.36621 -0.975586 4.63965 -2.17773 7.82422 -3.68555c16.5215 27.5332 38.1221 48.6523 65.4922 63.9023c92.8594 51.7402 210.954 8.31152 246.85 -91.6455c5.55762 -15.4766 6.74512 -32.6074 9.09668 -49.0947c0.716797 -5.02832 1.6543 -8.15527 6.38086 -10.7764z\nM531.741 53.6582c39.3135 48.375 22.418 117.668 -35.1426 144.497c-7.43555 3.46582 -9.72559 7.74414 -9.84766 15.8936c-1.87012 125.129 -132.78 187.063 -230.24 132.697c-26.1133 -14.5674 -46.4492 -34.8955 -60.6709 -61.2939\nc-7.59082 -14.0908 -11.9287 -7.97754 -22.1982 -2.52734c-24.6113 13.0635 -49.0469 12.6406 -72.0332 -3.08301c-21.9678 -15.0244 -31.9102 -36.6201 -26.4199 -62.9805c2.4082 -11.5703 -0.914062 -17.0635 -10.0967 -23.1367\nc-38.1895 -25.2578 -53.0879 -74.8604 -34.1855 -116.105c18.4355 -40.2295 51.3135 -59.6631 95.1748 -59.9951c0.700195 -0.00488281 163.728 -0.545898 163.728 0.154297c56.8857 0 113.778 -0.551758 170.652 0.229492\nc28.9375 0.397461 53.0498 13.2178 71.2803 35.6504zM443.952 134.157c-5.84863 -31.1572 -34.6221 -55.0967 -66.666 -55.0957c-16.9531 0.00195312 -32.0586 6.5459 -44.0791 17.7051c-27.6973 25.7139 -71.1406 74.9805 -95.9375 93.3877\nc-20.0557 14.8877 -41.9893 12.333 -60.2715 -3.78223c-49.9961 -44.0713 15.8594 -121.775 67.0625 -77.1885c4.54883 3.95996 7.84082 9.54297 12.7441 12.8447c8.18457 5.50879 20.7666 0.883789 13.168 -10.6221c-17.3574 -26.2842 -49.3301 -38.1973 -78.8623 -29.3008\nc-28.8975 8.70312 -48.8408 35.9678 -48.626 70.1787c1.22461 22.4844 12.3633 43.0596 35.4141 55.9648c22.5742 12.6377 46.3682 13.1455 66.9902 -2.47363c50.791 -38.4756 75.5781 -81.7451 107.296 -101.245c24.5586 -15.0996 54.2549 -7.36328 68.8232 17.5059\nc28.8301 49.209 -34.5918 105.016 -78.8682 63.46c-3.98828 -3.74414 -6.91699 -8.93164 -11.4092 -11.7197c-10.9756 -6.81152 -17.333 4.1123 -12.8096 10.3525c20.7031 28.5537 50.4639 40.4404 83.2715 28.2139c31.4287 -11.7139 49.1074 -44.3662 42.7598 -78.1855z\n\" />\n    <glyph glyph-name=\"rebel\" unicode=\"&#xf1d0;\" horiz-adv-x=\"512\" \nd=\"M256.5 -56c-139.3 0 -247.5 116.2 -243.3 254.1c2.7998 79.2002 43.2002 152.2 116.5 200.4c0.299805 0 1.89941 0.599609 1.09961 -0.799805c-5.7998 -5.5 -111.3 -129.8 -14.0996 -226.4c49.7998 -49.5 90 -2.5 90 -2.5c38.5 50.1006 -0.600586 125.9 -0.600586 125.9\nc-10 24.8994 -45.6992 40.0996 -45.6992 40.0996l28.7998 31.7998c24.3994 -10.5 43.2002 -38.6992 43.2002 -38.6992c0.799805 29.5996 -21.9004 61.3994 -21.9004 61.3994l44.5996 50.7002l44.3008 -50.0996c-20.5 -28.8008 -21.9004 -62.6006 -21.9004 -62.6006\nc13.7998 23 43.5 39.2998 43.5 39.2998l28.5 -31.7998c-27.4004 -8.89941 -45.4004 -39.8994 -45.4004 -39.8994c-15.7998 -28.5 -27.0996 -89.4004 0.600586 -127.301c32.3994 -44.5996 87.7002 2.80078 87.7002 2.80078c102.699 91.8994 -10.5 225 -10.5 225\nc-6.10059 5.5 0.799805 2.7998 0.799805 2.7998c50.0996 -36.5 114.6 -84.4004 116.2 -204.8c2 -145.601 -99.9004 -249.4 -242.4 -249.4z\" />\n    <glyph glyph-name=\"empire\" unicode=\"&#xf1d1;\" horiz-adv-x=\"496\" \nd=\"M287.6 393.8c-10.7998 2.2002 -22.0996 3.2998 -33.5 3.60059v18.1992c78.1006 -2.19922 146.101 -44 184.601 -106.6l-15.7998 -9.09961c-6.10059 9.69922 -12.7002 18.7998 -20.2002 27.0996l-18 -15.5c-26 29.5996 -61.4004 50.7002 -101.9 58.4004zM53.4004 125.6\nc3.89941 -10.7998 8.2998 -21.0996 13.5996 -31.0996l-15.7998 -9.09961c-17.1006 31.5996 -27.1006 68.0996 -27.1006 106.6s9.90039 75 27.1006 106.5l15.7998 -9.09961c-5.2998 -9.7002 -10 -20.2002 -13.5996 -31l22.6992 -7.7002\nc-6.39941 -18.2998 -9.69922 -38.2002 -9.69922 -58.7002s3.59961 -40.4004 10 -58.7002zM213.1 14l-4.69922 -23.7998c10.7998 -1.90039 22.1992 -3.2998 33.5 -3.60059v-18.2998c-78.1006 2.2998 -146.4 44.2998 -184.9 106.601l16 9.39941\nc5.7998 -9.7002 12.7002 -18.7998 20.2002 -27.3994l18 15.7998c26.0996 -29.6006 61.5 -50.7002 101.899 -58.7002zM93.2998 327.1c-7.5 -8.2998 -14.0996 -17.5 -20.0996 -27.1992l-15.7998 9.09961c38.5 62.5996 106.5 104.4 184.6 106.6v-18.1992\nc-11.4004 -0.300781 -22.7002 -1.40039 -33.5 -3.60059l4.7002 -23.7998c-40.5 -7.7002 -75.9004 -28.7998 -101.9 -58.4004zM402.7 56.9004c7.5 8.59961 14.3994 17.6992 20.0996 27.3994l16.1006 -9.39941c-38.5 -62.3008 -106.801 -104.4 -184.9 -106.601v18.2998\nc11.4004 0.300781 22.7002 1.7002 33.5 3.60059l-4.7002 23.7998c40.5 8 75.9004 29.0996 101.9 58.7002zM496 192c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248s248 -111 248 -248zM483.8 192c0 130.1 -105.7 235.8 -235.8 235.8\ns-235.8 -105.7 -235.8 -235.8s105.7 -235.8 235.8 -235.8s235.8 105.7 235.8 235.8zM444.8 298.6c17.2002 -31.5996 27.1006 -68.0996 27.1006 -106.6s-9.90039 -75 -27.1006 -106.4l-15.7998 9.10059c5.2998 10 9.7002 20.2002 13.5996 31l-23 7.7002\nc6.40039 18.2998 10 38.1992 10 58.6992s-3.2998 40.4004 -9.69922 58.7002l22.6992 7.7002c-3.59961 10.7998 -8.2998 21.2998 -13.5996 31zM261.8 120.9l13.2998 -66.7002c-8.59961 -1.7002 -17.6992 -2.7998 -27.0996 -2.7998s-18.5 1.09961 -27.0996 2.7998\nl13.2998 66.7002c-16.2998 3.2998 -30.5 11.5996 -40.7002 23.5l-51.2002 -44.8008c-11.8994 13.6006 -21.2998 29.4004 -27.0996 46.8008l64.2002 22.0996c-2.5 7.40039 -3.90039 15.2002 -3.90039 23.5s1.40039 16 3.90039 23.5l-64.5 22.0996\nc6.09961 17.5 15.5 33.2002 27.3994 46.8008l51.2002 -44.8008c10.2998 11.9004 24.4004 20.5 40.7002 23.8008l-13.2998 66.3994c8.59961 2 17.6992 2.7998 27.0996 2.7998s18.5 -0.899414 27.0996 -2.7998l-13.2998 -66.3994\nc16.2998 -3.30078 30.5 -11.9004 40.7002 -23.8008l51.2002 44.8008c11.8994 -13.6006 21.2998 -29.4004 27.3994 -46.8008l-64.5 -22.0996c2.5 -7.40039 3.90039 -15.2002 3.90039 -23.5s-1.40039 -16 -3.90039 -23.5l64.2002 -22.0996\nc-5.7998 -17.5 -15.2002 -33.2002 -27.0996 -46.8008l-51.2002 44.8008c-10.2998 -11.9004 -24.4004 -20.2002 -40.7002 -23.5z\" />\n    <glyph glyph-name=\"git-square\" unicode=\"&#xf1d2;\" \nd=\"M100.59 113.76c48.5703 -3.30957 58.9502 -2.10938 58.9502 -11.9395c0 -20 -65.5498 -20.0605 -65.5498 -1.52051c0.00976562 5.08984 3.29004 9.40039 6.59961 13.46zM128.54 230.4c30.96 0 31.7598 -44.4707 -0.75 -44.4707c-33 0 -31.54 44.4707 0.75 44.4707z\nM448 368v-352c0 -26.4961 -21.5039 -48 -48 -48h-352c-26.4961 0 -48 21.5039 -48 48v352c0 26.4961 21.5039 48 48 48h352c26.4961 0 48 -21.5039 48 -48zM221 298.69c0 -14.4902 8.37988 -22.8809 22.8604 -22.8809c14.7393 0 23.1299 8.39062 23.1299 22.8809\nc0 14.4893 -8.37012 22.3096 -23.1104 22.3096c-14.4795 0 -22.8799 -7.83984 -22.8799 -22.3096zM199.18 253h-49.5498c-25 6.5498 -81.5596 4.84961 -81.5596 -46.75c0 -18.7998 9.39941 -32 21.8496 -38.1104c-15.6895 -14.3701 -23.1201 -21.1396 -23.1201 -30.7393\nc0 -6.87012 2.79004 -13.2207 11.1807 -16.7607c-8.90039 -8.39941 -14 -14.4795 -14 -25.9199c0.0195312 -20.0693 17.5498 -31.7197 63.5391 -31.7197c44.2207 0 69.8701 16.5098 69.8701 45.7305c0 36.6699 -28.2295 35.3193 -94.7695 39.3799l8.37988 13.4297\nc17 -4.74023 74.1904 -6.23047 74.1904 42.4297c0 11.6904 -4.83008 19.8203 -9.40039 25.6699l23.3799 1.78027zM283.52 143.16l-13 1.78027c-3.81934 0.509766 -4.06934 1 -4.06934 5.08984v105.45h-52.6006l-2.79004 -20.5703c15.75 -5.5498 17 -4.86035 17 -10.1699\nv-74.7402c0 -5.62012 -0.30957 -4.58008 -17 -6.87012v-20.0596h72.4209zM384 133l-6.87012 22.3701c-40.9297 -15.3701 -37.8496 12.4102 -37.8496 16.7295v60.7207h37.8496v25.4102h-35.8203c-2.86914 0 -2 -2.52051 -2 38.6299h-24.1797\nc-2.79004 -27.7002 -11.6797 -38.8799 -34 -41.4199v-22.6201c20.4697 0 19.8203 0.849609 19.8203 -2.54004v-66.5703c0 -28.7197 11.4297 -40.9102 41.6699 -40.9102c14.4502 0 30.4502 4.83008 41.3799 10.2002z\" />\n    <glyph glyph-name=\"git\" unicode=\"&#xf1d3;\" horiz-adv-x=\"512\" \nd=\"M216.29 289.61l0.0400391 -34.5508l-37.4102 -2.83984c7.27051 -9.35938 15 -22.3701 15 -41.0693c0 -77.8906 -91.4297 -75.4707 -118.7 -67.8906l-13.4297 -21.5498c106.47 -6.5 151.63 -4.33984 151.63 -63c0 -46.7598 -41.04 -73.1797 -111.79 -73.1797\nc-73.5801 0 -101.63 18.71 -101.63 50.8193c0 18.3008 8.12988 28.04 22.4004 41.4502c-13.4199 5.66992 -17.8906 15.8105 -17.8906 26.8105c0 15.3594 11.9004 26.21 37 49.21c-20 9.76953 -35 30.9102 -35 61c0 82.5498 90.4902 85.2793 130.49 74.79h79.29z\nM152.87 47.71c0 15.7402 -16.6104 13.8096 -94.3203 19.1104c-5.2998 -6.54004 -10.5693 -13.4004 -10.5693 -21.54c0 -29.6699 104.89 -29.6299 104.89 2.42969zM102.06 182.29c52.0205 0 50.7402 71.1602 1.2002 71.1602c-51.6602 0 -54 -71.1602 -1.2002 -71.1602z\nM235.36 81.7803v32.0996c26.75 3.66016 27.2393 2 27.2393 11v119.51c0 8.5 -2.0498 7.37988 -27.2393 16.2607l4.46973 32.9199h84.1699v-168.71c0 -6.51074 0.400391 -7.32031 6.50977 -8.14062l20.7305 -2.83984v-32.0996h-115.88zM287.81 326.09\nc-23.1699 0 -36.5898 13.4297 -36.5898 36.6104c0 23.1797 13.4199 35.7695 36.5898 35.7695c23.5801 0 37 -12.6201 37 -35.7695c0 -23.1504 -13.4199 -36.6104 -37 -36.6104zM512 97.54c-17.4902 -8.53027 -43.0996 -16.2598 -66.2803 -16.2598\nc-48.3799 0 -66.6699 19.5 -66.6699 65.46v106.51c0 5.41992 1.0498 4.05957 -31.71 4.05957v36.1904c35.7803 4.07031 50 22 54.4697 66.2695h38.6309c0 -65.8291 -1.34082 -61.8096 3.25977 -61.8096h57.2998v-40.6504h-60.5596v-97.1494\nc0 -6.91992 -4.9209 -51.4102 60.5693 -26.8398z\" />\n    <glyph glyph-name=\"hacker-news\" unicode=\"&#xf1d4;\" \nd=\"M0 416h448v-448h-448v448zM21.2002 218.8h-0.200195c0.0996094 0.100586 0.200195 0.299805 0.299805 0.400391c0 -0.100586 0 -0.299805 -0.0996094 -0.400391zM239.2 164.9l80.7998 155.1h-34.7998c-54.7998 -101.2 -48.2998 -98.5996 -60.6006 -125.6\nc-10.0996 24.3994 -6.7998 27.2998 -59.2998 125.6h-37.2998l79.7998 -153.3v-102.7h31.4004v100.9z\" />\n    <glyph glyph-name=\"tencent-weibo\" unicode=\"&#xf1d5;\" horiz-adv-x=\"384\" \nd=\"M72.2998 -47.7998c1.40039 -19.9004 -27.5996 -22.2002 -29.7002 -2.90039c-11.5996 129.9 31.1006 239.5 101.4 313.2c-15.5996 34 9.2002 77.0996 50.5996 77.0996c30.3008 0 55.1006 -24.5996 55.1006 -55.0996c0 -44 -49.5 -70.7998 -86.9004 -45.0996\nc-65.7002 -71.3008 -101.399 -169.801 -90.5 -287.2zM192 447.9c92 0 166.6 -74.6006 166.6 -166.5c0 -102.301 -93.2998 -185.5 -204 -162.301c-19 4.7002 -12.5 33.2002 6.60059 29.1006c80.7998 -20.7998 167.7 42.2998 167.7 133.1c0 75.5 -61.5 136.9 -136.9 136.9\nc-101 0 -168.3 -106.601 -122 -199.2c9 -17.9004 -17.5996 -30.7998 -26.2998 -13.4004c-56 108.101 22.3994 242.301 148.3 242.301z\" />\n    <glyph glyph-name=\"qq\" unicode=\"&#xf1d6;\" \nd=\"M433.754 27.5547c-11.5264 -1.39258 -44.8604 52.7412 -44.8604 52.7412c0 -31.3447 -16.1357 -72.2471 -51.0508 -101.786c16.8418 -5.19141 54.8428 -19.167 45.8037 -34.4209c-7.31641 -12.3428 -125.511 -7.88086 -159.633 -4.03711\nc-34.1221 -3.84375 -152.315 -8.30566 -159.632 4.03711c-9.04492 15.25 28.918 29.2139 45.7832 34.415c-34.9199 29.5391 -51.0586 70.4453 -51.0586 101.792c0 0 -33.334 -54.1338 -44.8594 -52.7412c-5.37012 0.650391 -12.4238 29.6445 9.34668 99.7041\nc10.2617 33.0244 21.9951 60.4785 40.1445 105.779c-3.05566 116.898 45.2441 214.956 160.262 214.962c113.737 -0.00585938 163.156 -96.1328 160.264 -214.963c18.1182 -45.2227 29.9121 -72.8506 40.1445 -105.778c21.7676 -70.0596 14.7158 -99.0527 9.3457 -99.7041z\n\" />\n    <glyph glyph-name=\"weixin\" unicode=\"&#xf1d7;\" horiz-adv-x=\"576\" \nd=\"M385.2 280.4c-92.4004 0 -165.4 -69.1006 -165.3 -154c0 -14.2002 2.19922 -27.9004 6.19922 -40.8008c-6.19922 -0.5 -12.0996 -0.799805 -18.2998 -0.799805c-24.3994 0 -43.7998 4.90039 -68.2002 9.7002l-68 -34.0996l19.3008 58.5996\nc-48.6006 34.0996 -77.9004 78.2002 -77.9004 131.6c0 92.6006 87.5 165.4 194.7 165.4c95.5996 0 179.7 -58.2998 196.3 -136.7c-6.2002 0.799805 -12.4004 1.10059 -18.7998 1.10059zM280.7 333.3c-14.7002 0 -29.2002 -9.7002 -29.2998 -24.3994\nc0 -14.5 14.5 -24.2002 29.2998 -24.2002c14.5 0 24.2002 9.7002 24.2002 24.2002c0 14.6992 -9.7002 24.3994 -24.2002 24.3994zM144.3 284.7c14.7998 0 24.4004 9.59961 24.4004 24.2002c0 14.6992 -9.60059 24.3994 -24.4004 24.3994\nc-14.5 0 -29.2998 -9.59961 -29.2998 -24.3994c0 -14.5 14.7998 -24.2002 29.2998 -24.2002zM563 128.6c0 -43.7998 -29 -82.6992 -68.2002 -112.1l14.7998 -48.5996l-53.3994 29.2998c-19.7002 -4.7998 -39.2998 -9.90039 -58.6006 -9.90039\nc-92.5996 0 -165.399 63.4004 -165.399 141.3c0 77.9004 72.7002 141.301 165.399 141.301c87.5 0 165.4 -63.4004 165.4 -141.301zM343.9 153.1c14.6992 0 24.3994 9.60059 24.3994 19.6006c0 9.59961 -9.59961 19.2998 -24.3994 19.2998\nc-9.60059 0 -19.3008 -9.59961 -19.3008 -19.2998c0 -9.90039 9.60059 -19.6006 19.3008 -19.6006zM451 153.1c14.5 0 24.5 9.60059 24.4004 19.6006c0 9.59961 -9.90039 19.2998 -24.4004 19.2998c-9.59961 0 -19.2998 -9.59961 -19.2998 -19.2998\nc0 -9.90039 9.59961 -19.6006 19.2998 -19.6006z\" />\n    <glyph glyph-name=\"slideshare\" unicode=\"&#xf1e7;\" horiz-adv-x=\"512\" \nd=\"M187.7 294.3c34 0 61.7002 -25.7002 61.7002 -57.7002c0 -31.6992 -27.7002 -57.6992 -61.7002 -57.6992s-61.7002 26 -61.7002 57.6992c0 32 27.7002 57.7002 61.7002 57.7002zM331.1 294.3c34.3008 0 61.8008 -25.7002 61.7002 -57.7002\nc0 -31.6992 -27.3994 -57.6992 -61.7002 -57.6992c-34 0 -61.6992 26 -61.6992 57.6992c0 32 27.6992 57.7002 61.6992 57.7002zM487.7 204.3c15.2002 10.5 25.2002 -4 16.0996 -17.7998c-18.2998 -22.5996 -53.2002 -50.2998 -106.3 -72\nc56.2998 -191.7 -137.4 -222.3 -134.3 -124c0 0.700195 -0.299805 53.7998 -0.299805 93.5c-4.30078 0.799805 -8.60059 2 -13.7002 3.09961c0 -40 -0.299805 -95.8994 -0.299805 -96.5996c3.09961 -98.2002 -190.601 -67.5996 -134.301 124.1\nc-53.1992 21.7002 -88 49.4004 -106.3 72c-9.09961 13.7002 0.900391 28.3008 16 17.7002c2 -1.39941 4.2998 -2.89941 6.2998 -4.2998v198.3c0 27.4004 20.6006 49.7002 46 49.7002h359.101c25.3994 0 46 -22.2998 46 -49.7002v-198.3zM457.2 185.1h0.0996094v190.601\nc0 32.7998 -10.5996 45.7002 -40.8994 45.7002h-317.7c-31.7002 0 -40.6006 -10.8008 -40.6006 -45.7002v-192.4c67.7002 -35.3994 125.7 -29.0996 157.4 -28c13.4004 0.299805 22 -2.2998 27.0996 -7.7002c1.7002 -1.59961 10 -9.39941 20.3008 -17.0996\nc1.09961 15.7998 10 25.7998 33.6992 24.9004c32.3008 -1.40039 91.7002 -7.7002 160.601 29.6992z\" />\n    <glyph glyph-name=\"twitch\" unicode=\"&#xf1e8;\" \nd=\"M40.0996 416h397.9v-274.2l-117 -117h-87l-56.7998 -56.7998h-60.2002v56.7998h-107v314.3zM397.9 161.9v214h-321v-280.9h90.2998v-56.7998l56.7998 56.7998h107zM331 299v-116.9h-40.0996v116.9h40.0996zM224 299v-116.9h-40.0996v116.9h40.0996z\" />\n    <glyph glyph-name=\"yelp\" unicode=\"&#xf1e9;\" horiz-adv-x=\"384\" \nd=\"M42.9004 207.68l99.6191 -48.6094c19.2002 -9.40039 16.2002 -37.5107 -4.5 -42.71l-107.52 -26.8105c-1.51074 -0.379883 -4 -0.6875 -5.55762 -0.6875c-11.2676 0 -21.415 9.08887 -22.6523 20.2881c-0.708984 6.18164 -1.28516 16.25 -1.28516 22.4727\nc0 17.8105 4.60742 45.9658 10.2852 62.8467c2.88574 8.56836 12.5664 15.5215 21.6074 15.5215c2.9082 0 7.38867 -1.03516 10.0029 -2.31152zM86.9004 -31.5703c-5.48535 3.75195 -9.92773 12.1904 -9.92773 18.8359c0 4.8291 2.61914 11.6631 5.84766 15.2539\nl74.21 82.4004c14.3096 15.8105 40.5098 5.2002 39.8096 -16.0996l-3.89941 -110.82c-0.412109 -12.1484 -10.6123 -22.0078 -22.7676 -22.0078c-1.07129 0 -2.79688 0.146484 -3.85254 0.328125c-23.8691 4.04199 -59.4492 18.4277 -79.4199 32.1094zM232.24 78.3496\nc-11.2998 18.1104 6.2002 40.4102 26.5098 33.9102l105.42 -34.2598c8.69043 -2.88965 15.7422 -12.667 15.7422 -21.8252c0 -2.8125 -0.963867 -7.16504 -2.15234 -9.71484c-10.418 -21.8799 -34.0322 -52.1689 -52.71 -67.6104\nc-3.50586 -2.88867 -10.0391 -5.2334 -14.582 -5.2334c-6.99707 0 -15.6963 4.80859 -19.418 10.7334zM380.57 210.58c1.04688 -2.41602 1.93652 -6.5127 1.93652 -9.14551c0 -9.49805 -7.39551 -19.3828 -16.5068 -22.0645l-106.64 -30.5098\nc-20.5 -5.90039 -37.1006 17.0098 -25.2002 34.71l62 91.9199c3.75 5.55664 12.2354 10.0654 18.9385 10.0654c4.74512 0 11.4932 -2.53809 15.0615 -5.66602c18.166 -16.0361 40.75 -47.0869 50.4102 -69.3096zM62.1104 417.82\nc29.4697 14.0293 79.793 27.5137 112.33 30.0996c0.503906 0.0410156 1.32422 0.0742188 1.83008 0.0742188c12.5146 0 22.6709 -10.1562 22.6709 -22.6699c0 -0.0566406 -0.000976562 -0.147461 -0.000976562 -0.204102v-208.34\nc0 -23.2998 -30.9102 -31.6006 -42.6104 -11.4004l-104.12 180.44c-1.68164 2.92188 -3.0459 8.0293 -3.0459 11.4014c0 7.93066 5.7998 17.1592 12.9463 20.5986z\" />\n    <glyph glyph-name=\"paypal\" unicode=\"&#xf1ed;\" horiz-adv-x=\"384\" \nd=\"M111.4 152.1c-3.5 -19.1992 -17.4004 -108.699 -21.5 -134c-0.300781 -1.7998 -1 -2.5 -3 -2.5h-74.6006c-7.59961 0 -13.0996 6.60059 -12.0996 13.9004l58.5996 371.9c1.5 9.59961 10.1006 16.8994 20 16.8994c152.3 0 165.101 3.7002 204 -11.3994\nc60.1006 -23.3008 65.6006 -79.5 44 -140.301c-21.5 -62.5996 -72.5 -89.5 -140.1 -90.2998c-43.4004 -0.700195 -69.5 7 -75.2998 -24.2002zM357.1 296c28.4004 -21.2002 30.3008 -57.7998 23.8008 -92.5996c-16.5 -83.5 -71.9004 -112.301 -142.9 -112.301\nc-15 0 -24.7002 2.30078 -29.2998 -19.6992c-15.5 -97.4004 -13.7002 -85.9004 -14.4004 -91.3008c-1.7002 -8.59961 -8.7998 -14.8994 -17.3994 -14.8994h-63.5c-7.10059 0 -11.6006 5.7998 -10.6006 12.8994c0 0 4.5 29.3008 27.1006 169.7\nc0.799805 6.10059 4.7998 9.40039 10.8994 9.40039c54 0 164.601 -9.90039 204.5 103.899c3.7002 11.1006 6.7998 22.2002 8.7998 33.6006c0.5 3.09961 1.2002 2.59961 3 1.2998z\" />\n    <glyph glyph-name=\"google-wallet\" unicode=\"&#xf1ee;\" \nd=\"M156.8 321.2c37.6006 -60.6006 64.2002 -113.101 84.2998 -162.5c-8.2998 -33.7998 -18.7998 -66.5 -31.2998 -98.2998c-13.2002 52.2998 -26.5 101.3 -56 148.5c6.5 36.3994 2.2998 73.5996 3 112.3zM109.3 248c5 0 10 -2.5 13 -6.5\nc43.7998 -59.7998 66.2998 -123.8 82.5 -193.5h-103.5c-20 69.5 -49.5 133 -91.7002 187.3c-4 5.2002 0 12.7002 6.5 12.7002h93.2002zM157.1 336h108.7c74.7998 -103 131.2 -230 143.2 -368h-113.7c-8.2002 133.5 -69.7002 260 -138.2 368zM408.9 404.5\nc19 -67.5 31.0996 -139 31.0996 -212.6c0 -69.5 -9.5 -142.5 -25.2998 -203c-10.9004 92.5 -42.4004 184.6 -90.6006 270.8c-4.19922 50.5 -13.2998 99.5 -26.5 146c-1.19922 5.2998 2.5 10.2998 7.80078 10.2998h88.2998c7 0 13.3994 -4.7002 15.2002 -11.5z\" />\n    <glyph glyph-name=\"cc-visa\" unicode=\"&#xf1f0;\" horiz-adv-x=\"576\" \nd=\"M470.1 216.7c0 0 7.60059 -37.2002 9.30078 -45h-33.4004c3.2998 8.89941 16 43.5 16 43.5c-0.200195 -0.299805 3.2998 9.09961 5.2998 14.8994zM576 368v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h480\nc26.5 0 48 -21.5 48 -48zM152.5 116.8l63.2002 155.2h-42.5l-39.2998 -106l-4.30078 21.5l-14 71.4004c-2.2998 9.89941 -9.39941 12.6992 -18.1992 13.0996h-64.7002l-0.700195 -3.09961c15.7998 -4 29.9004 -9.80078 42.2002 -17.1006l35.7998 -135h42.5zM246.9 116.6\nl25.1992 155.4h-40.1992l-25.1006 -155.4h40.1006zM386.8 167.4c0.200195 17.6992 -10.5996 31.1992 -33.7002 42.2998c-14.0996 7.09961 -22.6992 11.8994 -22.6992 19.2002c0.199219 6.59961 7.2998 13.3994 23.0996 13.3994\nc13.0996 0.299805 22.7002 -2.7998 29.9004 -5.89941l3.59961 -1.7002l5.5 33.5996c-7.90039 3.10059 -20.5 6.60059 -36 6.60059c-39.7002 0 -67.5996 -21.2002 -67.7998 -51.4004c-0.299805 -22.2998 20 -34.7002 35.2002 -42.2002\nc15.5 -7.59961 20.7998 -12.5996 20.7998 -19.2998c-0.200195 -10.4004 -12.6006 -15.2002 -24.1006 -15.2002c-16 0 -24.5996 2.5 -37.6992 8.2998l-5.30078 2.5l-5.59961 -34.8994c9.40039 -4.2998 26.7998 -8.10059 44.7998 -8.2998\nc42.2002 -0.100586 69.7002 20.7998 70 53zM528 116.6l-32.4004 155.4h-31.0996c-9.59961 0 -16.9004 -2.7998 -21 -12.9004l-59.7002 -142.5h42.2002s6.90039 19.2002 8.40039 23.3008h51.5996c1.2002 -5.5 4.7998 -23.3008 4.7998 -23.3008h37.2002z\" />\n    <glyph glyph-name=\"cc-mastercard\" unicode=\"&#xf1f1;\" horiz-adv-x=\"576\" \nd=\"M482.9 37.7002c0 -6.7998 -4.60059 -11.7002 -11.2002 -11.7002c-6.7998 0 -11.2002 5.2002 -11.2002 11.7002s4.40039 11.7002 11.2002 11.7002c6.59961 0 11.2002 -5.2002 11.2002 -11.7002zM172.1 49.4004c6.5 0 10.8008 -5.2002 10.9004 -11.7002\nc0 -6.7998 -4.40039 -11.7002 -10.9004 -11.7002c-7.09961 0 -11.1992 5.2002 -11.1992 11.7002s4.09961 11.7002 11.1992 11.7002zM289.6 49.7002c5.2002 0 8.7002 -3 9.60059 -8.7002h-19.1006c0.800781 5.2002 4.10059 8.7002 9.5 8.7002zM397.4 49.4004\nc6.7998 0 11.1992 -5.2002 11.1992 -11.7002c0 -6.7998 -4.39941 -11.7002 -11.1992 -11.7002c-6.80078 0 -10.9004 5.2002 -10.9004 11.7002s4.09961 11.7002 10.9004 11.7002zM503.3 23.2998c0 -0.299805 0.299805 -0.5 0.299805 -1.09961\nc0 -0.299805 -0.299805 -0.5 -0.299805 -1.10059c-0.299805 -0.299805 -0.299805 -0.5 -0.5 -0.799805c-0.299805 -0.299805 -0.5 -0.5 -1.09961 -0.5c-0.299805 -0.299805 -0.5 -0.299805 -1.10059 -0.299805c-0.299805 0 -0.5 0 -1.09961 0.299805\nc-0.299805 0 -0.5 0.299805 -0.799805 0.5c-0.299805 0.299805 -0.5 0.5 -0.5 0.799805c-0.299805 0.5 -0.299805 0.800781 -0.299805 1.10059c0 0.5 0 0.799805 0.299805 1.09961c0 0.5 0.299805 0.799805 0.5 1.10059c0.299805 0.299805 0.5 0.299805 0.799805 0.5\nc0.5 0.299805 0.799805 0.299805 1.09961 0.299805c0.5 0 0.800781 0 1.10059 -0.299805c0.5 -0.300781 0.799805 -0.300781 1.09961 -0.5c0.299805 -0.200195 0.200195 -0.600586 0.5 -1.10059zM501.1 21.9004c0.5 0 0.5 0.299805 0.800781 0.299805\nc0.299805 0.299805 0.299805 0.5 0.299805 0.799805s0 0.5 -0.299805 0.799805c-0.300781 0 -0.5 0.299805 -1.10059 0.299805h-1.59961v-3.5h0.799805v1.40039h0.299805l1.10059 -1.40039h0.799805zM576 367v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48\nv352c0 26.5 21.5 48 48 48h480c26.5 0 48 -21.5 48 -48zM64 227.4c0 -76.5 62.0996 -138.5 138.5 -138.5c27.2002 0 53.9004 8.19922 76.5 23.0996c-72.9004 59.2998 -72.4004 171.2 0 230.5c-22.5996 15 -49.2998 23.0996 -76.5 23.0996\nc-76.4004 0.100586 -138.5 -62 -138.5 -138.199zM288 118.6c70.5 55 70.2002 162.2 0 217.5c-70.2002 -55.2998 -70.5 -162.6 0 -217.5zM145.7 42.2998c0 8.7002 -5.7002 14.4004 -14.7002 14.7002c-4.59961 0 -9.5 -1.40039 -12.7998 -6.5\nc-2.40039 4.09961 -6.5 6.5 -12.2002 6.5c-3.7998 0 -7.59961 -1.40039 -10.5996 -5.40039v4.40039h-8.2002v-36.7002h8.2002c0 18.9004 -2.5 30.2002 9 30.2002c10.1992 0 8.19922 -10.2002 8.19922 -30.2002h7.90039c0 18.2998 -2.5 30.2002 9 30.2002\nc10.2002 0 8.2002 -10 8.2002 -30.2002h8.2002v23h-0.200195zM190.6 56h-7.89941v-4.40039c-2.7002 3.30078 -6.5 5.40039 -11.7002 5.40039c-10.2998 0 -18.2002 -8.2002 -18.2002 -19.2998c0 -11.2002 7.90039 -19.2998 18.2002 -19.2998\nc5.2002 0 9 1.89941 11.7002 5.39941v-4.59961h7.89941v36.7998zM231.1 30.4004c0 15 -22.8994 8.19922 -22.8994 15.1992c0 5.7002 11.8994 4.80078 18.5 1.10059l3.2998 6.5c-9.40039 6.09961 -30.2002 6 -30.2002 -8.2002c0 -14.2998 22.9004 -8.2998 22.9004 -15\nc0 -6.2998 -13.5 -5.7998 -20.7002 -0.799805l-3.5 -6.2998c11.2002 -7.60059 32.5996 -6 32.5996 7.5zM266.5 21.0996l-2.2002 6.80078c-3.7998 -2.10059 -12.2002 -4.40039 -12.2002 4.09961v16.5996h13.1006v7.40039h-13.1006v11.2002h-8.19922v-11.2002h-7.60059\nv-7.2998h7.60059v-16.7002c0 -17.5996 17.2998 -14.4004 22.5996 -10.9004zM279.8 34.5h27.5c0 16.2002 -7.39941 22.5996 -17.3994 22.5996c-10.6006 0 -18.2002 -7.89941 -18.2002 -19.2998c0 -20.5 22.5996 -23.8994 33.7998 -14.2002l-3.7998 6\nc-7.7998 -6.39941 -19.6006 -5.7998 -21.9004 4.90039zM338.9 56c-4.60059 2 -11.6006 1.7998 -15.2002 -4.40039v4.40039h-8.2002v-36.7002h8.2002v20.7002c0 11.5996 9.5 10.0996 12.7998 8.40039zM349.5 37.7002c0 11.3994 11.5996 15.0996 20.7002 8.39941l3.7998 6.5\nc-11.5996 9.10059 -32.7002 4.10059 -32.7002 -15c0 -19.7998 22.4004 -23.7998 32.7002 -15l-3.7998 6.5c-9.2002 -6.5 -20.7002 -2.59961 -20.7002 8.60059zM416.2 56h-8.2002v-4.40039c-8.2998 11 -29.9004 4.80078 -29.9004 -13.8994\nc0 -19.2002 22.4004 -24.7002 29.9004 -13.9004v-4.59961h8.2002v36.7998zM449.9 56c-2.40039 1.2002 -11 2.90039 -15.2002 -4.40039v4.40039h-7.90039v-36.7002h7.90039v20.7002c0 11 9 10.2998 12.7998 8.40039zM490.2 70.9004h-7.90039v-19.3008\nc-8.2002 10.9004 -29.8994 5.10059 -29.8994 -13.8994c0 -19.4004 22.5 -24.6006 29.8994 -13.9004v-4.59961h7.90039v51.7002zM497.8 146v-4.59961h0.799805v4.59961h1.90039v0.799805h-4.59961v-0.799805h1.89941zM504.4 22.2002c0 0.5 0 1.09961 -0.300781 1.59961\nc-0.299805 0.299805 -0.5 0.799805 -0.799805 1.10059c-0.299805 0.299805 -0.799805 0.5 -1.09961 0.799805c-0.5 0 -1.10059 0.299805 -1.60059 0.299805c-0.299805 0 -0.799805 -0.299805 -1.39941 -0.299805c-0.5 -0.299805 -0.799805 -0.5 -1.10059 -0.799805\nc-0.5 -0.300781 -0.799805 -0.800781 -0.799805 -1.10059c-0.299805 -0.5 -0.299805 -1.09961 -0.299805 -1.59961c0 -0.299805 0 -0.799805 0.299805 -1.40039c0 -0.299805 0.299805 -0.799805 0.799805 -1.09961c0.300781 -0.299805 0.5 -0.5 1.10059 -0.799805\nc0.5 -0.300781 1.09961 -0.300781 1.39941 -0.300781c0.5 0 1.10059 0 1.60059 0.300781c0.299805 0.299805 0.799805 0.5 1.09961 0.799805s0.5 0.799805 0.799805 1.09961c0.300781 0.600586 0.300781 1.10059 0.300781 1.40039zM507.6 146.9h-1.39941l-1.60059 -3.5\nl-1.59961 3.5h-1.40039v-5.40039h0.800781v4.09961l1.59961 -3.5h1.09961l1.40039 3.5v-4.09961h1.09961v5.40039zM512 227.4c0 76.1992 -62.0996 138.3 -138.5 138.3c-27.2002 0 -53.9004 -8.2002 -76.5 -23.1006c72.0996 -59.2998 73.2002 -171.5 0 -230.5\nc22.5996 -15 49.5 -23.0996 76.5 -23.0996c76.4004 -0.0996094 138.5 61.9004 138.5 138.4z\" />\n    <glyph glyph-name=\"cc-discover\" unicode=\"&#xf1f2;\" horiz-adv-x=\"576\" \nd=\"M520.4 251.9c0 -8.40039 -5.5 -12.8008 -15.8008 -12.8008h-4.69922v24.9004h4.89941c10.1006 0 15.6006 -4.2002 15.6006 -12.0996zM528 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h480z\nM483.9 277.1v-82h16v32.8008h2.19922l22.2002 -32.8008h19.6006l-25.8008 34.4004c12.1006 2.5 18.7002 10.5996 18.7002 23.2002c0 28.5 -30.2998 24.3994 -52.8994 24.3994zM428 277v-82h45.2998v13.7998h-29.2998v22.2002h28.2998v13.7998h-28.2998v18.2002h29.2998v14\nh-45.2998zM359.3 277h-17.5l35 -84.2002h8.60059l35.5 84.2002h-17.5l-22.2002 -55.2002zM303.4 280c-24.6006 0 -44.6006 -19.9004 -44.6006 -44.5996c0 -24.6006 19.9004 -44.6006 44.6006 -44.6006c24.5996 0 44.5996 19.9004 44.5996 44.6006\nc0 24.5996 -19.9004 44.5996 -44.5996 44.5996zM254.1 273.9c-30.1992 15 -63.2998 -6.80078 -63.2998 -38c0 -32.5 33.6006 -52.5 63.2998 -38.2002v19c-19.2998 -19.2998 -46.7998 -5.7998 -46.7998 19.2002c0 23.6992 26.7002 39.0996 46.7998 19v19zM156.9 207.6\nc-7.60059 0 -13.8008 3.7002 -17.5 10.8008l-10.3008 -9.90039c17.8008 -26.0996 56.6006 -18.2002 56.6006 11.2998c0 13.1006 -5.40039 19 -23.6006 25.6006c-9.59961 3.39941 -12.2998 5.89941 -12.2998 10.2998c0 8.7002 14.5 14.0996 24.9004 2.5l8.39941 10.7998\nc-19.0996 17.0996 -49.6992 8.90039 -49.6992 -14.2998c0 -11.2998 5.19922 -17.2002 20.1992 -22.7002c25.7002 -9.09961 14.7002 -24.4004 3.30078 -24.4004zM55.4004 195c30.8994 0 44.0996 22.4004 44.0996 40.9004c0 24.0996 -18 41.0996 -44.0996 41.0996h-23.4004\nv-82h23.4004zM122.9 195v82h-16v-82h16zM544 15v145c-33.2998 -20.7998 -226.4 -124.4 -416 -160h401c8.2002 0 15 6.7998 15 15zM74.0996 256.4c5.7002 -5 8.90039 -12.6006 8.90039 -20.5c0 -7.90039 -3.2002 -15.5 -8.90039 -20.7002\nc-4.89941 -4.40039 -11.5996 -6.40039 -21.8994 -6.40039h-4.2002v54.2002h4.2002c10.2998 0 16.7002 -1.7002 21.8994 -6.59961z\" />\n    <glyph glyph-name=\"cc-amex\" unicode=\"&#xf1f3;\" horiz-adv-x=\"576\" \nd=\"M325.1 280.2c0.100586 -8 -4.2998 -15.7002 -11.6992 -18.7002c9.5 -3.2998 11 -9.2002 11 -18.4004v-13.5h-16.6006c-0.299805 14.8008 3.60059 25.1006 -14.7998 25.1006h-18v-25.1006h-16.4004v69.3008l39.1006 -0.300781c13.2998 0 27.3994 -2 27.3994 -18.3994z\nM295.7 268.9c5.7002 0 11 1.2998 11 7.89941c0 6.40039 -5.60059 7.40039 -10.7002 7.40039h-21v-15.2998h20.7002zM279 179.4c15.5996 0 27.9004 -5.40039 27.9004 -22.7002c0 -27.9004 -30.4004 -23.2998 -49.3008 -23.2998l-0.0996094 -23.3008h-32.2002l-20.3994 23\nl-21.3008 -23h-65.3994l0.0996094 69.3008h66.5l20.5 -22.8008l21 22.8008h52.7002zM175.2 124.7l19 20.2002l-17.9004 20.1992h-41.7002v-12.5h36.3008v-14.0996h-36.3008v-13.7998h40.6006zM241 116.5v55.5l-25.2998 -27.4004zM278.8 147.5\nc5.90039 0 10.5 2.7998 10.5 9.2002c0 6.09961 -4.59961 8.39941 -10.2002 8.39941h-21.5v-17.5996h21.2002zM247.2 284.2h-38.9004v-12.5h37.7998v-14.1006h-37.7998v-13.7998h38.9004v-14.2998h-55.5v69.2998h55.5v-14.5996zM576 192.6h-0.200195h0.200195zM381.4 160.7\nc-0.100586 -7.60059 -4.2002 -15.2998 -11.9004 -18.4004c9.2002 -3.2998 11 -9.5 11 -18.3994l-0.0996094 -13.8008h-16.6006l0.100586 11.5c0 11.8008 -3.80078 13.8008 -14.8008 13.8008h-17.5996l-0.0996094 -25.3008h-16.6006l0.100586 69.3008h39.3994\nc13 0 27.1006 -2.30078 27.1006 -18.7002zM352.2 149.5c5.59961 0 11 1.2998 11 8.2002c0 6.39941 -5.60059 7.39941 -10.7002 7.39941h-21v-15.5996h20.7002zM179.4 229.5h-16.8008v54.2002l-24 -54.2002h-14.5996l-24 54.2002v-54.2002h-33.7998l-6.40039 15.2998h-34.5\nl-6.39941 -15.2998h-17.9004l29.7002 69.2998h24.5l28.0996 -65.7002v65.7002h27.1006l21.6992 -47l19.7002 47h27.6006v-69.2998zM31.2002 259.2h22.7002l-11.5 27.5996zM508.6 100.3c34.8008 0 54.8008 -2.2002 67.5 6.10059v-90.4004c0 -26.5 -21.5 -48 -48 -48h-480.1\nc-26.5 0 -48 21.5 -48 48v203.7h26.5996c4.2002 10.0996 2.2002 5.2998 6.40039 15.2998h19.2002c4.2002 -10 2.2002 -5.2002 6.39941 -15.2998h52.9004v11.3994c2.2002 -5 1.09961 -2.5 5.09961 -11.3994h29.5c2.40039 5.5 2.60059 5.7998 5.10059 11.3994v-11.3994h135.5\nv25.0996c6.39941 0 8 0.100586 9.7998 -0.200195c0 0 -0.200195 -10.8994 0.0996094 -24.7998h66.5v8.90039c7.40039 -5.90039 17.4004 -8.90039 29.7002 -8.90039h26.7998c4.2002 10.1006 2.2002 5.2998 6.40039 15.2998h19c6.5 -15 0.200195 -0.5 6.59961 -15.2998\nh52.8008v21.9004c11.7998 -19.7002 7.7998 -12.9004 13.1992 -21.9004h41.6006v92h-39.9004v-18.3994c-12.2002 20.1992 -6.2998 10.3994 -11.2002 18.3994h-43.2998v-20.5996c-6.2002 14.5996 -4.59961 10.7998 -8.7998 20.5996h-32.4004\nc-0.399414 0 -2.2998 -0.200195 -2.2998 0.299805h-27.5996c-12.7998 0 -23.1006 -3.19922 -30.7002 -9.2998v9.2998h-39.9004v-5.2998c-10.7998 6.10059 -20.6992 5.10059 -64.3994 5.2998c-0.100586 0 -11.6006 0.100586 -11.6006 0h-103\nc-2.5 -6.09961 -6.7998 -16.3994 -12.5996 -30c-2.7998 6 -11 23.8008 -13.9004 30h-46v-21.0996c-7.39941 17.4004 -4.69922 11 -9 21.0996h-39.6992c-3.40039 -7.89941 -13.7002 -32 -23.1006 -53.8994v109.8c0 26.5 21.5 48 48 48h480c26.5 0 48 -21.5 48 -48v-175.4\nc-37.7002 0.200195 -44 0.900391 -54.2998 -5v5c-45.2998 0 -53.5 1.7002 -64.9004 -5.19922v5.19922h-78.1992v-5.09961c-11.4004 6.5 -21.4004 5.09961 -75.7002 5.09961v-5.59961c-6.2998 3.7002 -14.5 5.59961 -24.2998 5.59961h-58\nc-3.5 -3.7998 -12.5 -13.6992 -15.7002 -17.1992c-12.7002 14.0996 -10.5 11.5996 -15.5 17.1992h-83.1006v-92.2998h82c3.30078 3.5 12.9004 13.9004 16.1006 17.4004c12.7002 -14.2998 10.2998 -11.7002 15.3994 -17.4004h48.9004\nc0 14.7002 0.0996094 8.2998 0.0996094 23c11.5 -0.200195 24.3008 0.200195 34.3008 6.2002c0 -13.9004 -0.100586 -17.0996 -0.100586 -29.2002h39.6006c0 18.5 0.0996094 7.40039 0.0996094 25.2998c6.2002 0 7.7002 0 9.40039 -0.0996094\nc0.0996094 -1.2998 0 0 0 -25.2002c152.8 0 145.899 -1.09961 156.699 4.5v-4.5zM544.9 164.8c-4.60059 0 -9.2002 -0.700195 -9.2002 -6.5c0 -12.2002 28.7998 0.299805 39.2998 -13.5v-25.7998c-4.90039 -7.09961 -14.0996 -8.90039 -22.5 -8.90039h-32l0.0996094 14.8008\nh32c4.10059 0 8.40039 1.2998 8.40039 6.39941c0 14.6006 -42.7002 -5.59961 -42.7002 27.4004c0 14.0996 11 20.7002 23.7998 20.7002h32.9004v-14.6006h-30.0996zM487.9 125c4.09961 0 8.69922 1 8.7998 6.40039c0 14.8994 -42.7002 -5.60059 -42.7002 27.3994\nc0 14.1006 10.7002 20.7002 23.5 20.7002h33.2002v-14.5996h-30.4004c-4.2998 0 -9.2002 -0.800781 -9.2002 -6.40039c0 -15.0996 42.9004 6.90039 42.9004 -26.2998c0 -16.4004 -11.4004 -22 -26.2002 -22h-32.2002l0.100586 14.7998h32.2002zM445.7 165.1h-38.5v-12.5\nh37.7998v-14.0996h-37.9004v-13.7998l38.6006 -0.299805l-0.100586 -14.3008h-55.1992l0.0996094 69.3008h55.2002v-14.3008zM389.4 273.2c0.299805 0.299805 1.69922 1 7.2998 1c1 0 2 -0.100586 3.09961 -0.100586l-7.2998 -16.8994\nc-2.2998 0 -3.2002 0.399414 -3.40039 0.5c-0.199219 0.200195 -1.09961 1.89941 -1.09961 7.89941c0 5.40039 1.09961 7.40039 1.40039 7.60059zM409.8 283.7h-0.0996094h0.0996094zM393.6 298.9h16.1006v-15.2002c-17.4004 0.299805 -33.1006 4.09961 -33.1006 -19.7002\nc0 -11.7998 2.80078 -19.9004 16.1006 -19.9004h7.39941l23.5 54.5h24.8008l27.8994 -65.3994v65.3994h25.2998l29.1006 -48.0996v48.0996h16.8994v-69h-23.5996l-31.2002 51.9004v-51.9004h-33.7002l-6.59961 15.3008h-34.2998l-6.40039 -15.3008h-19.2002\nc-22.7998 0 -33 11.8008 -33 34c0 23.3008 10.5 35.3008 34 35.3008zM435.7 286.8l-11.6006 -27.5996h22.8008zM334.6 298.8h16.9004v-69.2998h-16.9004v69.2998z\" />\n    <glyph glyph-name=\"cc-paypal\" unicode=\"&#xf1f4;\" horiz-adv-x=\"576\" \nd=\"M186.3 189.8c0 -12.2002 -9.7002 -21.5 -22 -21.5c-9.2002 0 -16 5.2002 -16 15c0 12.2002 9.5 22 21.7002 22c9.2998 0 16.2998 -5.7002 16.2998 -15.5zM80.5 238.3c11.2998 0 19.7998 -1.5 17.5 -14.8994c-2 -12.7002 -10.5 -14.2002 -21.5 -14.2002l-8.2002 -0.299805\nl4.2998 26.6992c0.200195 1.7002 1.7002 2.7002 3.2002 2.7002h4.7002zM364.5 238.3c8.5 0 18 -0.5 18.0996 -11.0996c0 -15 -9 -18 -22 -18l-8 -0.299805l4.2002 26.6992c0.200195 1.7002 1.40039 2.7002 3.2002 2.7002h4.5zM576 368v-352c0 -26.5 -21.5 -48 -48 -48h-480\nc-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h480c26.5 0 48 -21.5 48 -48zM128.3 232.6c0 21 -16.2002 28 -34.7002 28h-40c-2.5 0 -5 -2 -5.19922 -4.69922l-16.4004 -102.101c-0.299805 -2 1.2002 -4 3.2002 -4h19c2.7002 0 5.2002 2.90039 5.5 5.7002l4.5 26.5996\nc1 7.2002 13.2002 4.7002 18 4.7002c28.5996 0 46.0996 17 46.0996 45.7998zM212.5 223.8h-19c-3.7998 0 -4 -5.5 -4.2002 -8.2002c-5.7998 8.5 -14.2002 10 -23.7002 10c-24.5 0 -43.1992 -21.5 -43.1992 -45.1992c0 -19.5 12.1992 -32.2002 31.6992 -32.2002\nc9 0 20.2002 4.89941 26.5 11.8994c-0.5 -1.5 -1 -4.69922 -1 -6.19922c0 -2.30078 1 -4 3.2002 -4h17.2002c2.7002 0 5 2.89941 5.5 5.69922l10.2002 64.3008c0.299805 1.89941 -1.2002 3.89941 -3.2002 3.89941zM253 125.9l63.7002 92.5996c0.5 0.5 0.5 1 0.5 1.7002\nc0 1.7002 -1.5 3.5 -3.2002 3.5h-19.2002c-1.7002 0 -3.5 -1 -4.5 -2.5l-26.5 -39l-11 37.5c-0.799805 2.2002 -3 4 -5.5 4h-18.7002c-1.69922 0 -3.19922 -1.7998 -3.19922 -3.5c0 -1.2002 19.5 -56.7998 21.1992 -62.1006c-2.69922 -3.7998 -20.5 -28.5996 -20.5 -31.5996\nc0 -1.7998 1.5 -3.2002 3.2002 -3.2002h19.2002c1.7998 0.100586 3.5 1.10059 4.5 2.60059zM412.3 232.6c0 21 -16.2002 28 -34.7002 28h-39.6992c-2.7002 0 -5.2002 -2 -5.5 -4.69922l-16.2002 -102c-0.200195 -2 1.2998 -4 3.2002 -4h20.5c2 0 3.5 1.5 4 3.19922l4.5 29\nc1 7.2002 13.1992 4.7002 18 4.7002c28.3994 0 45.8994 17 45.8994 45.7998zM496.5 223.8h-19c-3.7998 0 -4 -5.5 -4.2998 -8.2002c-5.5 8.5 -14 10 -23.7002 10c-24.5 0 -43.2002 -21.5 -43.2002 -45.1992c0 -19.5 12.2002 -32.2002 31.7002 -32.2002\nc9.2998 0 20.5 4.89941 26.5 11.8994c-0.299805 -1.5 -1 -4.69922 -1 -6.19922c0 -2.30078 1 -4 3.2002 -4h17.2998c2.7002 0 5 2.89941 5.5 5.69922l10.2002 64.3008c0.299805 1.89941 -1.2002 3.89941 -3.2002 3.89941zM544 257.1c0 2 -1.5 3.5 -3.2002 3.5h-18.5\nc-1.5 0 -3 -1.19922 -3.2002 -2.69922l-16.1992 -104l-0.300781 -0.5c0 -1.80078 1.5 -3.5 3.5 -3.5h16.5c2.5 0 5 2.89941 5.2002 5.69922l16.2002 101.2v0.299805zM454 205.3c9.2998 0 16.2998 -5.7002 16.2002 -15.5c0 -12.2998 -9.7002 -21.5 -21.7002 -21.5\nc-9.2002 0 -16.2002 5.2998 -16.2002 15c0 12.2998 9.5 22 21.7002 22z\" />\n    <glyph glyph-name=\"cc-stripe\" unicode=\"&#xf1f5;\" horiz-adv-x=\"576\" \nd=\"M492.4 227.2c8.69922 0 18 -6.7002 18 -22.7002h-36.7002c0 16 9.7998 22.7002 18.7002 22.7002zM375 224.6c12.9004 0.100586 21.9004 -14.5 21.9004 -33.0996c0 -19.0996 -8.80078 -33.4004 -21.9004 -33.4004c-8.2998 0 -13.2998 3 -16.7998 6.7002l-0.200195 52.7998\nc3.7002 4.10059 8.7998 7 17 7zM528 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h480zM122.2 166.9c0 42.2998 -54.2998 34.6992 -54.2998 50.6992c0 5.5 4.59961 7.7002 12.0996 7.7002\nc10.7998 0 24.5 -3.2998 35.2998 -9.09961v33.3994c-11.7998 4.7002 -23.5 6.5 -35.2998 6.5c-28.7998 0 -48 -15 -48 -40.1992c0 -39.3008 54 -32.9004 54 -49.9004c0 -6.59961 -5.7002 -8.7002 -13.5996 -8.7002c-11.8008 0 -26.9004 4.90039 -38.9004 11.2998v-33.8994\nc13.2002 -5.7002 26.5996 -8.10059 38.7998 -8.10059c29.6006 0.200195 49.9004 14.7002 49.9004 40.3008zM191 223.5v30.2998h-26.9004v30.7998l-34.6992 -7.39941l-0.200195 -113.9c0 -21 15.7998 -36.5 36.8994 -36.5c11.6006 0 20.2002 2.10059 24.9004 4.7002v28.9004\nc-4.5 -1.80078 -27 -8.30078 -27 12.5996v50.5h27zM265 221.1v32.7002h-0.0996094c-4.7002 1.7002 -21.3008 4.7998 -29.6006 -10.5l-2.2002 10.5h-30.6992v-124.5h35.5v84.4004c8.39941 11 22.5996 8.89941 27.0996 7.39941zM309.1 129.3v124.5h-35.6992v-124.5h35.6992z\nM309.1 272.2v28.8994l-35.6992 -7.59961v-28.9004zM383.2 126.7c25.3994 0.0996094 48.5996 20.5 48.5996 65.5996c0 41.2998 -23.5 63.7998 -48.3994 63.7998c-13.9004 0 -22.9004 -6.59961 -27.8008 -11.0996l-1.7998 8.7998h-31.2998v-165.8l35.5 7.5l0.0996094 40.2002\nc5.10059 -3.7002 12.7002 -9 25.1006 -9zM543.6 178.2c0.100586 2 0.400391 9.39941 0.400391 12.8994c0 36.4004 -17.5996 65.1006 -51.2998 65.1006c-33.7998 0 -54.2998 -28.7002 -54.2998 -64.9004c0 -42.7998 24.1992 -64.5 58.7998 -64.5\nc17 0 29.7002 3.90039 39.3994 9.2002v28.5996c-9.69922 -4.89941 -20.7998 -7.89941 -34.8994 -7.89941c-13.7998 0 -26 4.89941 -27.6006 21.5h69.5z\" />\n    <glyph glyph-name=\"lastfm\" unicode=\"&#xf202;\" horiz-adv-x=\"512\" \nd=\"M225.8 80.9004c0 0 -31.7002 -31.1006 -97.8994 -31.1006c-82.2002 0 -127.9 48.1006 -127.9 137.2c0 92.7002 45.7002 147.2 131.8 147.2c117.7 0 129.3 -66.2002 161.3 -163c14 -42.7998 38.7002 -73.9004 97.9004 -73.9004c39.9004 0 61 8.7998 61 30.5\nc0 31.9004 -34.9004 35.1006 -79.7998 45.7002c-48.6006 11.7002 -68 36.9004 -68 76.7998c0 64 51.5996 83.9004 104.399 83.9004c59.8008 0 96.2002 -21.7002 100.9 -74.5l-58.5996 -7c-2.30078 25.2002 -17.5 35.7998 -45.7002 35.7998\nc-25.7998 0 -41.6006 -11.7998 -41.6006 -31.7002c0 -17.5996 7.60059 -28.0996 33.4004 -34c52.2998 -11.5 115 -19.2002 115 -92.0996c0 -58.6006 -49.2998 -80.9004 -122 -80.9004c-101.4 0 -136.6 45.7002 -155.4 102.601\nc-26.0996 81.5996 -34.3994 134.899 -100.899 134.899c-35.7002 0 -72.1006 -25.7998 -72.1006 -97.8994c0 -56.3008 28.7002 -91.5 69.2002 -91.5c45.7002 0 76.2002 34 76.2002 34z\" />\n    <glyph glyph-name=\"lastfm-square\" unicode=\"&#xf203;\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM307.8 103.1c45.4004 0 76.2002 13.9004 76.1006 50.6006c0 45.5 -39.1006 50.3994 -71.8008 57.5\nc-16.0996 3.7002 -20.8994 10.2998 -20.8994 21.2998c0 12.5 9.89941 19.7998 26 19.7998c17.5996 0 27.0996 -6.59961 28.5996 -22.3994l36.7002 4.39941c-2.90039 33 -25.5996 46.6006 -63 46.6006c-32.9004 0 -65.2002 -12.4004 -65.2002 -52.4004\nc0 -24.9004 12.1006 -40.7002 42.5 -48c28.1006 -6.59961 49.9004 -8.7002 49.9004 -28.5996c0 -13.6006 -13.2002 -19.1006 -38.1006 -19.1006c-37 0 -52.3994 19.4004 -61.1992 46.2002c-20 60.5 -27.3008 101.9 -100.801 101.9c-53.8994 0 -82.5 -34.1006 -82.5 -92\nc0 -55.7002 28.6006 -85.8008 79.9004 -85.8008c41.4004 0 61.2002 19.4004 61.2002 19.4004l-11.7002 31.9004s-19 -21.3008 -47.5996 -21.3008c-25.3008 0 -43.3008 22 -43.3008 57.2002c0 45.1006 22.7002 61.2002 45.1006 61.2002c41.5 0 46.7002 -33.2998 63 -84.2998\nc11.7002 -35.5 33.7002 -64.1006 97.0996 -64.1006z\" />\n    <glyph glyph-name=\"ioxhost\" unicode=\"&#xf208;\" horiz-adv-x=\"640\" \nd=\"M616 288c13.2998 0 24 -10.7002 24 -24c0 -13.2002 -10.7002 -24 -24 -24h-52.7002c3.10059 -15.5 4.7002 -31.5996 4.7002 -48c0 -137 -111 -248 -248 -248c-102.9 0 -191.2 62.7002 -228.7 152h-67.2998c-13.2998 0 -24 10.7002 -24 24c0 13.2002 10.7002 24 24 24\nh52.7002c-3.10059 15.5 -4.7002 31.5996 -4.7002 48c0 137 111 248 248 248c102.9 0 191.2 -62.7002 228.7 -152h67.2998zM520 192c0 16.5996 -2 32.5996 -5.7998 48h-298.2c-13.2998 0 -24 10.7002 -24 24c0 13.2002 10.7002 24 24 24h279.5\nc-33.9004 62 -99.7998 104 -175.5 104c-110.5 0 -200 -89.5 -200 -200c0 -16.5996 2 -32.5996 5.7998 -48h298.2c13.2998 0 24 -10.7002 24 -24c0 -13.2002 -10.7002 -24 -24 -24h-279.5c33.9004 -62 99.7998 -104 175.5 -104c110.5 0 200 89.5 200 200zM216 216h208\nc13.2998 0 24 -10.7002 24 -24c0 -13.2002 -10.7002 -24 -24 -24h-208c-13.2998 0 -24 10.7002 -24 24c0 13.2002 10.7002 24 24 24z\" />\n    <glyph glyph-name=\"angellist\" unicode=\"&#xf209;\" \nd=\"M347.1 232.6c48 -11.6992 54.9004 -50.5996 54.9004 -93.6992c0 -114.301 -73.4004 -202.9 -191.4 -202.9c-96.1992 0 -164.6 76.4004 -164.5 148.6c0 37.1006 14.2002 61.7002 51.1006 71.7002c-3.10059 8.2998 -8 20.7998 -8 29.7002\nc0 23.5 24.8994 52.5996 48.2998 52.5996c6.90039 0 13.7002 -2 20 -4.2998c-12.4004 35.2002 -46.5996 126.7 -46.5996 162c0 28.7998 14.5996 51.7002 45.6992 51.7002c40 0 85.4004 -144 95.1006 -172.5c12.5 31.4004 52.5 163.1 97.0996 163.1\nc28 0 43.7002 -22.2998 43.7002 -48.8994c0 -30.2002 -33.7002 -124.5 -45.4004 -157.101zM311.7 340l-33.1006 -93.7002l34 -6c8.5 23.4004 47.1006 128.9 47.1006 148c0 7.10059 -2.2998 16 -10.9004 16c-16 0 -33.0996 -52 -37.0996 -64.2998zM142.3 399.7\nc0 -29.1006 34.6006 -120 45.5 -148.8c7.7002 4.39941 19.7998 2.69922 35.4004 1.39941l-34.6006 100.3c-31.7998 92.8008 -46.2998 59 -46.2998 47.1006zM140 204c-7.7002 0 -20.2998 -13.4004 -20.4004 -21.0996c0 -20.8008 56 -97.7002 76.9004 -97.7002\nc5.7002 0 10.5996 6.2998 10.5996 11.3994c0 12.8008 -37.7998 107.4 -67.0996 107.4zM324.3 17.7002c55.2998 61.5 49.1006 158.6 31 174.7c-24 21.0996 -106 29.0996 -138.3 29.0996c-17.2998 0 -17.4004 -6.40039 -17.4004 -13.0996\nc0 -43.7002 92.9004 -39.7002 120.601 -39.7002c11.2002 0 15.7998 -9.90039 16.8994 -21.1006c-7.39941 -7.39941 -17.6992 -11.6992 -27.3994 -15.3994c-9.40039 -3.40039 -19.1006 -7.10059 -27.1006 -13.1006c-22 -16 -43.6992 -43.3994 -43.6992 -71.6992\nc0 -17.7002 10.5996 -32.9004 10.5996 -50.3008c0 -0.299805 -2 -6.5 -2 -7.39941c-32.5996 2.2998 -40.5996 34.5996 -41.7002 61.7002c-3.39941 -0.900391 -8 -0.600586 -11.7002 -0.600586c5.10059 -17.7998 -11.8994 -42 -38 -42\nc-37.7998 0 -88 57.2002 -58.2998 86.9004c28.7002 -35.9004 35 -51.4004 51.1006 -51.4004c4 0 11.6992 3.40039 11.6992 8.2998c0 12.8008 -42.8994 73.1006 -54.2998 73.1006c-16.7998 0 -37.7002 -24.9004 -20.5996 -68.2998\nc22.5996 -55.7002 69.5 -88.3008 128.899 -88.3008c43.4004 0 80.6006 16.6006 109.7 48.6006zM225.7 143.7c3.2002 -8.2998 6.59961 -16.6006 9.39941 -25.1006c6.30078 7.10059 12.9004 13.7002 20.3008 19.1006c-10 2 -20 2.89941 -29.7002 6z\" />\n    <glyph glyph-name=\"buysellads\" unicode=\"&#xf20d;\" \nd=\"M224 297.3l42.9004 -160.7h-85.8008zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM382.7 42.7002l-94.5 298.7h-128.4l-94.5 -298.7h90.7002l111.7 91.5996l24.2002 -91.5996h90.7998z\n\" />\n    <glyph glyph-name=\"connectdevelop\" unicode=\"&#xf20e;\" horiz-adv-x=\"576\" \nd=\"M550.5 207c6.69629 -1.33887 11.7861 -7.5 11.7881 -14.7324c0 -7.5 -5.3584 -13.6602 -12.3223 -15l-54.9111 -95.3574c0.536133 -1.60742 0.804688 -3.21387 0.804688 -4.82129c0 -7.23145 -5.09082 -13.3926 -12.0547 -14.7314l-51.6963 -90.2686\nc0.535156 -1.33887 0.802734 -2.67773 0.802734 -4.28516c0 -8.30371 -6.69727 -15.2676 -15.2686 -15.2676c-4.28516 0 -8.30371 1.875 -10.9814 4.82129h-107.144c-2.67871 -3.21484 -6.96484 -5.35742 -11.5176 -5.35742s-8.83887 2.14258 -11.5166 5.35645h-106.875\nc-2.67969 -3.21484 -6.69727 -5.35742 -11.5186 -5.35742c-8.30371 0 -15.2676 6.69727 -15.2676 15.2676c0 1.875 0.535156 3.75 1.07031 5.35742l-51.6963 89.7324c-6.96484 1.33887 -12.0547 7.5 -12.0547 14.7314c0 1.875 0.268555 3.21387 0.804688 4.82129\nl-55.1797 95.3574c-6.96484 1.60742 -12.0537 7.76855 -12.0537 15c0 7.5 5.3584 13.6611 12.5898 15l53.3047 92.1436c0 0.536133 -0.268555 1.07227 -0.268555 1.60645c0 6.16113 3.75098 11.251 9.10742 13.6611l55.9824 97.2334\nc-0.536133 1.33887 -1.07129 3.21387 -1.07129 4.82129c0 8.57129 6.96484 15.2676 15.2676 15.2676c4.82227 0 8.83887 -2.14258 11.7861 -5.625h106.071c2.67871 3.48242 6.69629 5.625 11.5176 5.625s8.83887 -2.14258 11.5176 -5.62402h106.606\nc2.94727 3.48242 6.96484 5.625 11.7861 5.625c8.30371 0 15.2676 -6.69727 15.2676 -15.2676c0 -1.60742 -0.535156 -3.21484 -1.07031 -4.82129l55.4463 -95.8936c8.03613 -0.267578 14.7324 -6.96484 14.7324 -15.001c0 -2.67871 -0.803711 -5.08984 -1.875 -7.23145z\nM153.535 -2.73242v75.8037h-43.6602zM153.535 81.1074v50.624l-44.999 -47.4102c0.535156 -1.07227 1.07129 -2.14355 1.33887 -3.21387h43.6602zM153.535 143.518l0.000976562 92.9463l-50.0889 51.9648c-2.41113 -1.60645 -5.08887 -2.41113 -7.76855 -2.67871\nl-51.9648 -90c0.268555 -1.07227 0.268555 -2.14258 0.268555 -3.48242c0 -1.33887 0 -2.67871 -0.535156 -4.01758l55.7129 -96.4287c1.33887 -0.267578 2.67871 -1.07129 4.01758 -1.60742zM153.535 245.84v72.0527l-43.9277 -15.8037\nc0 -0.267578 0.267578 -0.803711 0.267578 -1.07227c0 -2.94531 -0.803711 -5.62402 -2.14258 -7.7666zM153.535 326.465v59.7324l-43.6602 -75.5361zM480.054 287.357l-0.267578 0.267578l-98.0361 -101.518l63.75 -67.2324l35.3584 167.143zM291.75 92.8926\nl-11.25 -11.7852h22.7676zM291.482 104.143l79.2852 82.2324l-83.0352 87.5889l-79.5537 -84.375zM296.839 98.25l16.875 -17.1426h124.02l5.8916 28.125l-67.5 71.25zM410.411 403.607l-117.053 -124.019l83.0342 -87.5889l97.5 101.25\nc-1.33984 2.14258 -2.14258 4.82129 -2.14258 7.7666v0.536133l-57.8574 100.714c-1.33984 0.268555 -2.41016 0.804688 -3.48145 1.34082zM401.304 405.75h-4.28711l-166.339 -60l57.0547 -60.2676zM277.821 405.75h-103.929l50.8936 -53.5713l148.393 53.5713h-75\nc-2.67871 -2.67773 -6.16016 -4.28516 -10.1787 -4.28516s-7.50098 1.60742 -10.1787 4.28516zM161.572 400.125v-70.7148l54.9111 19.8213l-51.1611 53.8398c-0.730469 -0.25293 -1.93066 -0.613281 -2.67969 -0.804688zM161.572 320.839v-83.3037l40.9814 -42.0527\nl79.5537 84.1064l-59.7324 63.2139zM161.572 228.161v-76.0723l36.4277 38.3037zM161.572 140.303v-59.1953h107.678l17.1426 17.6777l-82.7676 85.9814zM168.536 -21.75h1.33887l91.6074 94.8213h-99.9102v-89.7324l1.07031 -1.60645\nc2.41113 -0.804688 4.28613 -1.875 5.89355 -3.48242zM298.447 -21.75h104.194l-91.6064 94.8213h-38.3037l-91.6074 -94.8213h96.4287c2.68066 2.41016 6.42871 4.28516 10.4473 4.28516s7.76758 -1.875 10.4473 -4.28516zM418.447 -9.96387l17.4121 83.0361h-114.376\nl89.1953 -91.875c1.07227 0.536133 2.14355 1.07031 3.48242 1.33887zM431.303 12.2676l34.8223 60.8037h-21.9639zM466.125 81.1074c0.267578 1.07129 0.803711 2.14258 1.33887 2.94531l-17.1426 18.2139l-4.55371 -21.1592h20.3574zM532.286 188.518\nc-0.268555 1.33984 -0.536133 2.41113 -0.536133 3.75c0 1.60742 0.536133 2.94629 0.802734 4.28516l-45.8027 79.2861l-34.5537 -163.928l20.625 -21.9639c1.33887 0.802734 2.67871 1.33887 4.01758 1.87402z\" />\n    <glyph glyph-name=\"dashcube\" unicode=\"&#xf210;\" \nd=\"M326.6 344l102.2 104v-427c0 -50.5 -40.0996 -85 -91.2002 -85h-227.199c-51.1006 0 -91.2002 34.5 -91.2002 85v229.5c0 50.2002 40.0996 93.5 91.2002 93.5h216.199zM153.9 31.5v-0.0996094h223.8l-51.1006 52.2998v123.5c0 17.7002 -14.2998 32.5 -32 32.5h-140.699\nc-17.7002 0 -32.4004 -14.7998 -32.4004 -32.5v-142.9c0 -17.7002 14.7002 -32.7998 32.4004 -32.7998z\" />\n    <glyph glyph-name=\"forumbee\" unicode=\"&#xf211;\" \nd=\"M5.7998 138.3c-3.7998 17 -5.7998 34.2002 -5.7998 51.4004c0 123.3 99.7998 223.3 223.1 223.3c16.6006 0 33.3008 -2 49.3008 -5.5c-123.4 -47 -220.5 -145.5 -266.601 -269.2zM398.7 327.5c-151.101 -44 -269.2 -164.4 -312.3 -315.7\nc-17.2002 13.4004 -32.7002 30.9004 -45.2002 49c43.3994 149.9 160.1 267.7 309.7 312c18.0996 -12.5996 34.0996 -27.7998 47.7998 -45.2998zM414.5 74.7998c13.0996 -35.2998 24.2002 -73.2998 33.5 -109.8c-36.0996 9.2998 -72 20.5 -107 33.5996\nc-25.7002 -16 -54.5996 -26.8994 -84.5996 -31.2998c42.5996 79.7002 108.199 147.4 187.6 190.3c-4.09961 -29.0996 -14.2998 -57.6992 -29.5 -82.7998zM444.2 220.3c-113.7 -46.7002 -204.2 -139.399 -250.5 -253.5c-19.6006 2.7002 -38.5 7.60059 -56.6006 15.2002\nc44.9004 138.5 153.4 249.3 291.301 295.1c7.89941 -18.0996 13.1992 -37.2998 15.7998 -56.7998z\" />\n    <glyph glyph-name=\"leanpub\" unicode=\"&#xf212;\" horiz-adv-x=\"576\" \nd=\"M386.539 336.515l15.0957 -248.955l-10.9785 0.275391c-36.2324 0.824219 -71.6406 -8.7832 -102.657 -27.9971c-31.0156 19.2139 -66.4238 27.9971 -102.657 27.9971c-45.5635 0 -82.0693 -10.7051 -123.516 -27.7227l31.291 258.288\nc28.5459 11.8027 61.4834 18.1143 92.2256 18.1143c41.1729 0 73.8359 -13.1748 102.657 -42.5439c27.7227 28.2715 59.0127 41.7217 98.5391 42.5439zM569.07 0c-25.5264 0 -47.4854 5.21484 -70.542 15.6445c-34.3105 15.6455 -69.9932 24.9785 -107.871 24.9785\nc-38.9775 0 -74.9346 -12.9014 -102.657 -40.623c-27.7227 27.7227 -63.6797 40.623 -102.657 40.623c-37.8779 0 -73.5605 -9.33301 -107.871 -24.9785c-22.2324 -9.88086 -44.7402 -15.6445 -69.1689 -15.6445h-1.37305l42.5449 349.141\nc39.251 22.2334 87.0117 34.8594 132.301 34.8594c37.0547 0 75.209 -7.68457 106.225 -29.0947c31.0156 21.4102 69.1699 29.0947 106.225 29.0947c45.2891 0 93.0498 -12.626 132.301 -34.8594zM525.702 44.7412l-34.0361 280.246\nc-30.7422 13.999 -67.248 21.4102 -101.009 21.4102c-38.4287 0 -74.3848 -12.0771 -102.657 -38.7021c-28.2725 26.625 -64.2275 38.7021 -102.657 38.7021c-33.7607 0 -70.2666 -7.41113 -101.009 -21.4102l-34.0361 -280.246\nc47.2109 19.4863 82.8945 33.4854 135.045 33.4854c37.6045 0 70.8174 -9.60547 102.657 -29.6436c31.8398 20.0381 65.0518 29.6436 102.657 29.6436c52.1504 0 87.834 -13.999 135.045 -33.4854z\" />\n    <glyph glyph-name=\"sellsy\" unicode=\"&#xf213;\" horiz-adv-x=\"640\" \nd=\"M539.71 210.692c55.1572 -13.4834 94.0742 -63.124 94.0732 -119.509c0 -68.0264 -55.4639 -123.184 -123.185 -123.184h-381.197c-67.7217 0 -123.186 55.1572 -123.185 123.185c0 47.4961 27.8848 91.0098 70.7852 111.234\nc-2.14453 7.35449 -3.06543 15.0146 -3.06543 22.3691c0 46.2705 37.6914 83.9609 83.9629 83.9609c20.2227 0 39.835 -7.35449 55.1562 -20.5303c18.3867 74.7695 85.8008 127.781 163.021 127.781c92.542 0 167.924 -75.3818 167.924 -167.924\nc0 -12.5635 -1.22559 -25.127 -4.29004 -37.3838zM199.88 46.4463v110.928c0 8.27344 -7.04688 15.3213 -15.3213 15.3213h-30.9482c-8.27344 0 -15.3213 -7.04785 -15.3213 -15.3213v-110.928c0 -8.27344 7.04688 -15.3213 15.3213 -15.3213h30.9482\nc8.27344 0 15.3213 7.04688 15.3213 15.3213zM289.357 46.4463v131.458c0 8.27246 -7.04883 15.3203 -15.3223 15.3203h-30.9492c-8.27246 0 -15.3213 -7.04688 -15.3213 -15.3203v-131.458c0 -8.27344 7.04688 -15.3213 15.3213 -15.3213h30.9492\nc8.27344 0 15.3223 7.04688 15.3223 15.3213zM378.834 46.4463v162.714c0 8.27246 -7.04688 15.3213 -15.3213 15.3213h-30.9482c-8.27441 0 -15.3223 -7.04785 -15.3223 -15.3213v-162.714c0 -8.27344 7.04785 -15.3213 15.3223 -15.3213h30.9482\nc8.27441 0 15.3213 7.04688 15.3213 15.3213zM465.861 46.4463v224.612c0 8.58008 -7.04785 15.6279 -15.3223 15.6279h-28.4971c-8.27441 0 -15.3213 -7.04883 -15.3213 -15.6279v-224.612c0 -8.27344 7.04688 -15.3213 15.3213 -15.3213h28.4971\nc8.27441 0 15.3223 7.04688 15.3223 15.3213z\" />\n    <glyph glyph-name=\"shirtsinbulk\" unicode=\"&#xf214;\" \nd=\"M100 37.7002l4.40039 9.89941l30.5996 -13.3994l-4.40039 -9.90039zM139.4 20.2002l4.39941 9.89941l30.6006 -13.3994l-4.40039 -9.90039zM311.5 34.2002l30.5996 13.3994l4.40039 -9.89941l-30.5996 -13.4004zM179.1 3l4.40039 9.59961l30.2998 -13.3994\nl-4.39941 -9.90039zM60.4004 55.2002l4.39941 9.89941l30.6006 -13.6992l-4.40039 -9.60059zM271.8 16.7002l30.6006 13.3994l4.39941 -9.89941l-30.5996 -13.4004zM232.5 -0.799805l30.5996 13.3994l4.40039 -9.59961l-30.5996 -13.7002zM350.9 51.4004l30.5996 13.6992\nl4.40039 -9.89941l-30.6006 -13.4004zM170 401.4v-10.5h-33.5v10.5h33.5zM122.8 401.4l-0.0996094 -10.5h-33.5v10.5h33.5996zM75.5 401.4l0.0996094 -10.5h-33.2998v10.5h33.2002zM217 401.4v-10.5h-33.2002v10.5h33.2002zM311.5 401.4v-10.5h-33.5v10.5h33.5zM358.8 401.4\nv-10.5h-33.5v10.5h33.5zM264.2 401.4v-10.5h-33.2002v10.5h33.2002zM405.7 401.4v-10.5h-33.2998v10.5h33.2998zM52.7998 96.9004v-33.5h-10.7998v33.5h10.7998zM122.8 312.8l-0.0996094 -10.5h-33.5v10.5h33.5996zM52.7998 302.2v-23h-10.7998v33.5h33.5996v-10.5h-22.7998\nzM221.7 73.5996c-50.2002 0 -91.2998 40.8008 -91.2998 91.3008c0 50.1992 41.0996 91.2998 91.2998 91.2998c50.5 0 91.2998 -41.1006 91.2998 -91.2998c0 -50.5 -40.7998 -91.3008 -91.2998 -91.3008zM173.5 184.7c0 -44.2998 77.5996 -11.9004 77.5996 -38\nc0 -13.1006 -24 -14.2998 -32.6992 -14.2998c-12.3008 0 -29.8008 2.69922 -35.9004 14.8994h-0.900391l-9 -18.3994c14.8008 -9.30078 29.1006 -12.2002 47.2002 -12.2002c19.5 0 51 5.7998 51 31.2002c0 48.0996 -78.5 16.2998 -78.5 37.8994\nc0 13.1006 20.7998 14.9004 29.7998 14.9004c10.8008 0 29.2002 -3.2002 35.6006 -13.1006h0.899414l8.80078 16.9004c-15.1006 6.2002 -27.4004 12 -44.3008 12c-20.0996 0 -49.5996 -6.40039 -49.5996 -31.7998zM52.7998 269.6v-33.5996h-10.7998v33.5996h10.7998z\nM395.2 63.4004v33.5h10.7998v-33.5h-10.7998zM52.7998 140.1v-33.5h-10.7998v33.5h10.7998zM0 444.3h448v-406l-226.3 -98.5996l-221.7 98.5996v406zM418.8 57.2002h0.100586v270.1h-389.7v-270.1l192.8 -85.7002zM418.8 356.5h0.100586v58.5996h-389.7v-58.5996h389.6z\nM52.7998 226.4v-33.5h-10.7998v33.5h10.7998zM52.7998 183.2v-33.5h-10.7998v33.5h10.7998zM170 312.8v-10.5h-33.5v10.5h33.5zM395.2 149.7v33.5h10.7998v-33.5h-10.7998zM395.2 192.9v33.5h10.7998v-33.5h-10.7998zM217 312.8v-10.5h-33.2002v10.5h33.2002zM395.2 236\nv33.5h10.7998v-33.5h-10.7998zM395.2 106.5v33.5h10.7998v-33.5h-10.7998zM264.2 312.8v-10.5h-33.2002v10.5h33.2002zM311.5 312.8v-10.5h-33.5v10.5h33.5zM395.2 279.2l0.0996094 23h-22.7998v10.5h33.5v-33.5h-10.7998zM358.8 312.8v-10.5h-33.5v10.5h33.5z\" />\n    <glyph glyph-name=\"simplybuilt\" unicode=\"&#xf215;\" horiz-adv-x=\"512\" \nd=\"M481.2 384c14.7002 0 26.5 -11.7998 26.7002 -26.2998v-331.4c0 -14.5 -11.8008 -26.2998 -26.6006 -26.2998h-450.399c-14.8008 0 -26.6006 11.7998 -26.6006 26.2998v331.4c0 14.5 11.7998 26.2998 26.4004 26.2998h106c14.5996 0 26.5996 -11.7998 26.5996 -26.2998\nv-39.6006h185.3v39.6006c0 14.5 12.1006 26.2998 26.6006 26.2998h106zM149.8 92.2002c36.9004 0 66.6006 29.7002 66.6006 66.3994c0 36.9004 -29.7002 66.6006 -66.6006 66.6006c-36.7002 0 -66.3994 -29.7002 -66.3994 -66.6006\nc0 -36.6992 29.7998 -66.3994 66.3994 -66.3994zM362.2 92.2002c36.5996 0 66.3994 29.7002 66.3994 66.5996c0 36.7002 -29.7998 66.4004 -66.3994 66.4004c-36.9004 0 -66.6006 -29.7998 -66.6006 -66.4004c0 -36.8994 29.7002 -66.5996 66.6006 -66.5996z\" />\n    <glyph glyph-name=\"skyatlas\" unicode=\"&#xf216;\" horiz-adv-x=\"640\" \nd=\"M640 118.7c0 -65.9004 -52.5 -114.4 -117.5 -114.4c-165.9 0 -196.6 249.7 -359.7 249.7c-146.899 0 -147.1 -212.2 5.60059 -212.2c42.5 0 90.8994 17.7998 125.3 42.5c5.59961 4.10059 16.8994 16.2998 22.7998 16.2998s10.9004 -5 10.9004 -10.8994\nc0 -7.7998 -13.1006 -19.1006 -18.7002 -24.1006c-40.9004 -35.5996 -100.3 -61.1992 -154.7 -61.1992c-83.4004 -0.100586 -154 59 -154 144.899c0 85.9004 67.5 149.101 152.8 149.101c185.3 0 222.5 -245.9 361.9 -245.9c99.8994 0 94.7998 139.7 3.39941 139.7\nc-17.5 0 -35 -11.6006 -46.8994 -11.6006c-8.40039 0 -15.9004 7.2002 -15.9004 15.6006c0 11.5996 5.2998 23.7002 5.2998 36.2998c0 66.5996 -50.8994 114.7 -116.899 114.7c-53.1006 0 -80 -36.9004 -88.7998 -36.9004c-6.2002 0 -11.2002 5 -11.2002 11.2002\nc0 5.59961 4.09961 10.2998 7.7998 14.4004c25.2998 28.7998 64.7002 43.6992 102.8 43.6992c79.4004 0 139.101 -58.3994 139.101 -137.8c0 -6.89941 -0.300781 -13.7002 -1.2002 -20.5996c11.8994 3.09961 24.0996 4.7002 35.8994 4.7002\nc60.7002 0 111.9 -45.3008 111.9 -107.2z\" />\n    <glyph glyph-name=\"pinterest-p\" unicode=\"&#xf231;\" horiz-adv-x=\"384\" \nd=\"M204 441.5c94.2002 0 180 -64.7998 180 -164.1c0 -93.3008 -47.7002 -196.801 -153.9 -196.801c-25.1992 0 -57 12.6006 -69.2998 36c-22.7998 -90.2998 -21 -103.8 -71.3994 -172.8c-5.2002 -1.89941 -3.5 -2.2998 -6.90039 1.5c-1.7998 18.9004 -4.5 37.5 -4.5 56.4004\nc0 61.2002 28.2002 149.7 42 209.1c-7.5 15.2998 -9.59961 33.9004 -9.59961 50.7002c0 80 93.8994 92 93.8994 25.7998c0 -39 -26.3994 -75.5996 -26.3994 -113.399c0 -25.8008 21.2998 -43.8008 46.1992 -43.8008c69 0 90.3008 99.6006 90.3008 152.7\nc0 71.1006 -50.4004 109.8 -118.5 109.8c-79.2002 0 -140.4 -57 -140.4 -137.399c0 -38.7002 23.7002 -58.5 23.7002 -67.7998c0 -7.80078 -5.7002 -35.4004 -15.6006 -35.4004c-24 0 -63.5996 40 -63.5996 110.4c0 110.699 101.4 179.1 204 179.1z\" />\n    <glyph glyph-name=\"whatsapp\" unicode=\"&#xf232;\" \nd=\"M380.9 350.9c41.8994 -42 67.0996 -97.7002 67.0996 -157c0 -122.4 -101.8 -222 -224.1 -222h-0.100586c-37.2002 0 -73.7002 9.2998 -106.1 27l-117.7 -30.9004l31.5 115c-19.4004 33.7002 -29.5996 71.9004 -29.5996 111c0 122.4 99.5996 222 222 222\nc59.2998 0 115.1 -23.0996 157 -65.0996zM223.9 9.2998c101.699 0 186.6 82.7998 186.6 184.601c0.0996094 49.2998 -21.2998 95.5996 -56.0996 130.5c-34.8008 34.8994 -81.1006 54.0996 -130.4 54.0996c-101.8 0 -184.6 -82.7998 -184.6 -184.5\nc0 -34.9004 9.69922 -68.7998 28.1992 -98.2002l4.40039 -7l-18.5996 -68.0996l69.7998 18.2998l6.7002 -4c28.2998 -16.7998 60.7998 -25.7002 94 -25.7002zM325.1 147.5c5.5 -2.7002 9.2002 -4.09961 10.5 -6.59961c1.40039 -2.30078 1.40039 -13.4004 -3.19922 -26.4004\nc-4.60059 -13 -26.7002 -24.7998 -37.4004 -26.4004c-17.5996 -2.59961 -31.4004 -1.2998 -66.5996 13.9004c-55.7002 24.0996 -92 80.0996 -94.8008 83.7998c-2.69922 3.7002 -22.5996 30.1006 -22.5996 57.4004s14.2998 40.7002 19.4004 46.2998\nc5.09961 5.5 11.0996 6.90039 14.7998 6.90039s7.39941 0 10.5996 -0.200195c3.40039 -0.200195 8 1.2998 12.5 -9.5c4.60059 -11.1006 15.7002 -38.4004 17.1006 -41.2002c1.39941 -2.7998 2.2998 -6 0.5 -9.7002c-10.6006 -21.2002 -22 -20.5 -16.3008 -30.2998\nc21.5 -36.9004 42.9004 -49.7002 75.5 -66c5.5 -2.7998 8.80078 -2.2998 12 1.40039c3.30078 3.7998 13.9004 16.1992 17.6006 21.7998c3.7002 5.59961 7.39941 4.7002 12.5 2.7998c5.09961 -1.7998 32.3994 -15.2002 37.8994 -18z\" />\n    <glyph glyph-name=\"viacoin\" unicode=\"&#xf237;\" horiz-adv-x=\"384\" \nd=\"M384 416l-48 -112h48v-48h-68.5l-13.7998 -32h82.2998v-48h-102.8l-89.2002 -208l-89.2002 208h-102.8v48h82.2998l-13.7998 32h-68.5v48h48l-48 112h64l80.7998 -192h94.5l80.7002 192h64zM192 112l27 64h-54z\" />\n    <glyph glyph-name=\"medium\" unicode=\"&#xf23a;\" \nd=\"M0 416h448v-448h-448v448zM372.2 309.9v5h-83.2002l-59.2998 -147.9l-67.4004 148h-87.2998v-5.09961l28.0996 -33.9004c2.80078 -2.5 4.2002 -6.09961 3.80078 -9.7998v-133c0.799805 -4.7998 -0.700195 -9.7002 -4.10059 -13.2002l-31.5996 -38.2998v-5.10059h89.7998\nv5.10059l-31.5996 38.2998c-3.40039 3.5 -5.10059 8.40039 -4.40039 13.2002v115l78.7002 -171.601h9.09961l67.6006 171.601v-136.9c0 -3.59961 0 -4.2998 -2.40039 -6.7002l-24.2998 -23.5996v-4.90039h118v5.10059l-23.5 23\nc-2.10059 1.5 -3.10059 4.09961 -2.7002 6.7002v169.3c-0.400391 2.5 0.599609 5.09961 2.7002 6.7002z\" />\n    <glyph glyph-name=\"y-combinator\" unicode=\"&#xf23b;\" \nd=\"M448 416v-448h-448v448h448zM236 160.5l77.5 145.5h-32.7002l-45.7998 -91c-4.7002 -9.2998 -9 -18.2998 -12.7998 -26.7998l-12.2002 26.7998l-45.2002 91h-35l76.7002 -143.8v-94.5h29.5v92.7998z\" />\n    <glyph glyph-name=\"optin-monster\" unicode=\"&#xf23c;\" horiz-adv-x=\"576\" \nd=\"M572.6 26.5996c1 -3.5 1.90039 -7 1.7002 -10.6992c0.799805 -31.6006 -44.2998 -64 -73.5 -65.1006c-17.2998 -0.799805 -34.5996 8.40039 -42.7002 23.5c-113.5 -4.09961 -227 -4.89941 -340.199 0c-8.40039 -15.0996 -25.7002 -24 -43 -23.5\nc-28.9004 1.10059 -74 33.5 -73.5 65.1006c0.299805 3.7998 0.799805 7.2998 1.89941 10.7998c-5.59961 9.39941 -4.7998 15.2998 5.40039 11.5996c3.2998 5.2002 7 9.5 11.0996 13.7998c-2.5 10.9004 1.2998 14.1006 11.1006 9.2002c4.5 3.2998 10 6.5 15.8994 9.2002\nc0 15.7998 11.7998 11.2002 17.2998 5.7002c12.5 1.7998 20.2002 -0.700195 26.8008 -5.7002v19.7002c-12.9004 0 -40.6006 11.3994 -45.9004 36.2002c-5 20.7998 2.59961 38.0996 25.0996 47.5996c0.800781 5.90039 8.10059 14 14.9004 15.9004\nc7.59961 1.89941 12.5 -4.60059 14.0996 -10.3008c7.40039 0 17.8008 -1.5 21.1006 -8.09961c5.39941 0.5 11.0996 1.40039 16.5 1.90039c-2.40039 1.89941 -5.10059 3.5 -8.10059 4.59961c-5.09961 8.90039 -13.7998 11.0996 -24.5996 11.5996\nc0 0.800781 0 1.60059 0.299805 2.7002c-19.7998 0.5 -44.0996 5.60059 -54.8994 17.7998c-21.3008 23.6006 -15.9004 83.6006 12.1992 103.5c8.40039 5.7002 21.6006 0.800781 22.7002 -9.69922c2.40039 -20.6006 0.400391 -26.8008 26.2002 -25.9004\nc8.09961 7.7998 16.7998 14.5996 26.5 20c-14.9004 1.2998 -28.9004 -1.59961 -43.7998 -3.7998c12.7002 12.5 23.8994 25.3994 56.7002 42.3994c23.5 11.9004 50 20.8008 76.1992 23.2002c-18.5996 7.90039 -40 11.9004 -59.6992 16.5\nc76.5 16.2002 174.6 22.1006 244.199 -37.5996c18.1006 -15.4004 32.4004 -36.2002 42.7002 -60c39.7998 -4.90039 36.4004 5.5 38.6006 25.0996c1.09961 10.2998 14.2998 15.4004 22.6992 9.5c14.9004 -10.5 22.2002 -30.7998 24.6006 -48.0996\nc2.2002 -17.7998 0.299805 -41.2998 -12.4004 -55.1006c-10.7998 -12.1992 -34.2998 -17.5996 -53.7998 -18.0996v-2.7998c-11.0996 -0.200195 -20.2998 -2.40039 -25.7002 -11.6006c-3 -1.09961 -5.7002 -2.69922 -8.39941 -4.59961\nc5.69922 -0.5 11.3994 -1.40039 16.7998 -1.90039c1.89941 5.60059 12.5996 8.40039 21.0996 8.40039c1.7002 5.40039 6.7998 11.9004 14.1006 10.2998c7.2998 -1.59961 14.0996 -10 14.8994 -15.8994c10.7998 -4.40039 22.1006 -12.2002 25.1006 -25.7002\nc1.89941 -8.10059 1.69922 -15.1006 0.299805 -21.9004c-5.7002 -25.2002 -33.2998 -36.2002 -45.9004 -36.2002c0 -6.69922 0 -13.1992 -0.299805 -19.6992c8.09961 6 16.4004 7.19922 26.7998 5.69922c6 5.90039 17.6006 9.40039 17.6006 -5.69922\nc5.59961 -2.7002 11.2998 -6 15.8994 -9.2002c10.1006 5 13.7002 0.5 10.7998 -9.2002c4.10059 -4.2998 8.10059 -8.90039 11.1006 -13.7998c10.0996 3.59961 11 -2.10059 5.39941 -11.6006zM498.8 280.6c17.2998 -6.69922 26.2002 -22.0996 30.2998 -35.6992\nc1.10059 10.5996 -2.69922 39.5 -13.7998 51.0996c-7.2998 7.2998 -14.0996 5.09961 -14.0996 -0.799805c0 -6.2002 -1.2998 -11.6006 -2.40039 -14.6006zM494.2 273.9c-3.2002 -3.30078 -9.2002 -4.90039 -14.1006 -5.7002c13 -15.7002 17 -41.7002 12.7002 -63\nc10.7998 2.2002 20.5 6.2998 26.2002 12.2002c1.90039 2.19922 3.7998 4.89941 4.90039 7.59961c-1.10059 21.2998 -10.2002 42.7002 -29.7002 48.9004zM470.1 267.1c-3.69922 0 -8.09961 0 -11.7998 0.300781c7.5 -20.6006 12.4004 -42.7002 14.2998 -64.6006\nc3.5 0 7.5 0.299805 11.6006 0.799805c5.89941 24.3008 -0.299805 51.6006 -14.1006 63.5zM47.5 245c4.09961 13.5 13 28.9004 30.2998 35.7002c-1 3 -2.39941 8.39941 -2.39941 14.5996c0 5.90039 -7.10059 8.10059 -14.1006 0.799805\nc-11.3994 -11.5996 -14.8994 -40.5996 -13.7998 -51.0996zM57.2002 217.4c5.7002 -6.2002 15.3994 -10 26.2002 -12.2002c-4.30078 21.3994 -0.300781 47.2998 12.6992 63c-4.89941 0.799805 -10.8994 2.5 -14.0996 5.7002\nc-19.4004 -6.2002 -28.2998 -27.6006 -29.7002 -48.9004c1.40039 -2.7002 3 -5.40039 4.90039 -7.59961zM105.1 202.8c2.40039 22.2002 9.10059 43.7998 19.8008 63.5c-5.2002 -1.09961 -10 -3 -14.9004 -4.89941l-12.2002 -5.10059v0.299805\nc-7.2998 -14.0996 -10 -34.3994 -5.39941 -53c4.59961 -0.5 8.59961 -0.799805 12.6992 -0.799805zM289.1 365.5c-41.8994 0 -76.1992 -34.0996 -76.1992 -75.9004c0 -42.1992 34.2998 -76.1992 76.1992 -76.1992c41.9004 0 76.2002 34 76.2002 76.1992\nc0 41.9004 -34.2998 75.9004 -76.2002 75.9004zM404.7 191.2c-12.9004 0.799805 -26.2002 0.799805 -39.5 1.09961c10 -50.5996 3.2998 -64.7002 16.5 -58.0996c16 8.09961 22.7002 39.2002 23 57zM350.7 192.8c-18.9004 0.299805 -38.1006 0.299805 -57 0v0.299805\nc-0.299805 -5.19922 0.200195 -38.0996 4.2998 -41.0996c11.0996 -5.40039 39.5 -4.59961 51.0996 -1.09961c5.40039 1.59961 2.40039 37 1.60059 41.8994zM278.3 139c4.60059 2.5 2.40039 45.4004 1.2998 53.7002v0.299805\nc-19.3994 -0.299805 -38.5996 -0.299805 -57.7998 -0.799805c-1.89941 -9.2002 -4.59961 -48.9004 1.90039 -51.6006c13 -5.69922 41.5996 -5.09961 54.5996 -1.59961zM171.8 190.1c-5.39941 -19.6992 0.299805 -45.0996 22.2002 -54.8994\nc5.40039 -2.5 8.59961 -2.5 9.7002 4.2998c1.89941 8.7002 2.5 36.7998 4.89941 52.2002c-12.1992 -0.200195 -24.5996 -0.799805 -36.7998 -1.60059zM136.4 158.8c2.39941 -3.7002 1.59961 -9.09961 -8 -12.5c43.7998 -47 92.6992 -85.7002 155.899 -106.5\nc67.5 19.2002 115.601 60 163.2 107c-11.0996 4.2998 -7.7002 10.2998 -7.2998 11.6006c-8.90039 0.799805 -17.9004 1.89941 -26.5 2.69922c-9.5 -33 -36 -52.8994 -46.7998 -31.5996c-2.7002 5.2002 -3.5 11.7002 -4.60059 16.7998\nc-3.7998 -8.39941 -13.2998 -8.09961 -24.5996 -8.89941c-13.2002 -1.10059 -31.6006 -1.30078 -44 3c-3 -12.9004 -11.1006 -12.9004 -26.7998 -14.3008c-14.1006 -1.39941 -48.7002 -4.09961 -54.9004 10.8008c-1.09961 -28.7002 -35.0996 -10 -45.0996 7\nc-3.2002 5.69922 -5.40039 11.3994 -7 17.5996c-7.80078 -0.799805 -15.7002 -1.59961 -23.5 -2.7002zM114.8 -13.7002c0.5 2.5 0.799805 5.2002 0.799805 8.2002c-5.69922 23.2002 -18.5996 49.7002 -33.5 54c-22.3994 6.7002 -68.8994 -23.5 -66.1992 -54.5996\nc12.6992 -19.5 40 -35.7002 59.1992 -36.5c17.8008 -0.800781 35.9004 11.0996 39.7002 28.8994zM106.1 52.2998c9 -16 15.5 -33.2998 16.7002 -51.8994c33.5 19.3994 69.1006 35.6992 105.9 47c-38.7002 20.5 -68.1006 47.7998 -97.2998 77\nc-2.10059 -1.30078 -5.10059 -2.40039 -7.80078 -3.5c-1.59961 -4.90039 8.7002 -5.30078 5.40039 -12.4004c-2.09961 -4.09961 -8.59961 -7.59961 -15.0996 -9.2002c-2.10059 -2.7002 -5.10059 -4.89941 -7.80078 -6.5h-0.299805\nc-0.200195 -13.5 -0.200195 -27 0.299805 -40.5zM443.7 -12.2998c-36.7998 21.2998 -74.1006 41.2998 -115.601 53c-13.7998 -6.2002 -27.8994 -11.2998 -42.1992 -15.4004c-2.10059 -0.799805 -2.10059 -0.799805 -4.30078 0\nc-11.8994 3.7002 -23.2998 8.10059 -34.8994 13.2002c-40.2002 -11.5996 -77.2998 -29.2002 -112.4 -50.7998h-0.299805v-0.299805c0.299805 0 0.299805 0 0.299805 0.299805c103.2 -4.10059 206.4 -3.5 309.4 0zM454.2 0.0996094c1 14.7002 7.2002 35.8008 16.5 51.7002\nl-0.299805 -0.299805c0.5 13.7002 0.799805 27.5 0.799805 41.2998c-3 1.7002 -5.7002 4.10059 -8.10059 6.7998c-6.5 1.30078 -12.8994 5.10059 -15.0996 8.90039c-1.90039 4.09961 1.2998 7.59961 5.90039 10.2998c-0.200195 0.5 -0.5 1.60059 -0.5 2.40039\nc-3 0.799805 -5.40039 1.7998 -7.60059 3.2002c-31.5996 -29.4004 -65.3994 -56.7002 -103.5 -76.7002c38.9004 -11.7002 76 -28.1006 111.9 -47.6006zM560.1 -6.09961c3 31.0996 -43.5 61.3994 -66.1992 54.5c-14.6006 -4.30078 -27.8008 -30.8008 -33.5 -54\nc0 -23.8008 21.1992 -37.9004 40.5 -37c19.1992 0.799805 46.5 17 59.1992 36.5zM372.9 372.8c-35.7002 39.2002 -81.4004 47.7998 -126 23.5c25.1992 56.2002 122.199 48.6006 126 -23.5zM74.7998 40.9004c14.9004 1.89941 24.6006 -19.2002 18.6006 -30.8008\nc-4.80078 -9.69922 -23.7002 -24.0996 -35.9004 -27.2998c-16.5 -4.59961 -32.2002 3.2998 -32.2002 14.9004c0 17.7998 33.7998 41.5996 49.5 43.2002zM290.7 217.1c-30.9004 0 -57.6006 25.7002 -50.2998 59.8008c13.1992 -20.7002 46.5 -12 46.5 11.2998\nc0 10 -7 18.5996 -16.5 21.5996c31.6992 13.7998 72.1992 -8.2002 72.1992 -44.2998c0 -26.7998 -23.2998 -48.4004 -51.8994 -48.4004zM68 -26.0996c-0.5 8.39941 20.2998 23.5 29.2002 25.0996c8.59961 1.59961 12.7002 -11.4004 9.7002 -18.4004\nc-2.7002 -5.69922 -10.5 -13.5 -17.3008 -16.1992c-9.39941 -3.2002 -21.0996 3 -21.5996 9.5zM501.2 40.9004c15.7002 -1.60059 49.5 -25.4004 49.5 -43.2002c0 -11.7002 -15.7002 -19.5 -32.2002 -14.9004c-12.0996 3.2002 -31.2998 17.6006 -36.2002 27.2998\nc-5.7002 11.6006 4 32.7002 18.9004 30.8008zM478.8 -1c8.90039 -1.59961 30 -16.7002 29.1006 -25.0996c-0.200195 -6.5 -12.1006 -12.7002 -21.3008 -9.5c-7 2.69922 -14.8994 10.5 -17.2998 16.1992c-2.89941 7.10059 1.10059 20 9.5 18.4004z\" />\n    <glyph glyph-name=\"opencart\" unicode=\"&#xf23d;\" horiz-adv-x=\"640\" \nd=\"M423.3 7.2998c0 -25.2998 -20.2998 -45.5996 -45.5996 -45.5996s-45.7998 20.2998 -45.7998 45.5996s20.5996 45.7998 45.7998 45.7998c25.3994 0 45.5996 -20.5 45.5996 -45.7998zM169.4 53.0996c25.2998 0 45.7998 -20.5 45.7998 -45.7998\ns-20.5 -45.5996 -45.7998 -45.5996c-25.3008 0 -45.6006 20.3994 -45.6006 45.5996s20.2998 45.7998 45.6006 45.7998zM461.1 323.1c302.2 0 169.5 -67.1992 -17.1992 -233.899c59.1992 102.8 262.5 193.899 -70.8008 188.899c-319.8 -4.69922 -338.699 92.5 -373.1 144.2\nc81.9004 -86.3994 158.9 -99.2002 461.1 -99.2002z\" />\n    <glyph glyph-name=\"expeditedssl\" unicode=\"&#xf23e;\" horiz-adv-x=\"496\" \nd=\"M248 404.6c117.4 0 212.6 -95.1992 212.6 -212.6s-95.1992 -212.6 -212.6 -212.6s-212.6 95.1992 -212.6 212.6s95.1992 212.6 212.6 212.6zM150.6 271.7h-0.199219v-26.6006c0 -5 3.89941 -8.89941 8.89941 -8.89941h17.7002c5 0 8.90039 3.89941 8.90039 8.89941\nv26.6006c0 82.0996 124 82.0996 124 0v-26.6006c0 -5 3.89941 -8.89941 8.89941 -8.89941h17.7002c5 0 8.90039 3.89941 8.90039 8.89941v26.6006c0 53.7002 -43.7002 97.3994 -97.4004 97.3994s-97.4004 -43.6992 -97.4004 -97.3994zM389.7 68v141.7\nc0 9.7002 -8 17.7002 -17.7002 17.7002h-248c-9.7002 0 -17.7002 -8 -17.7002 -17.7002v-141.7c0 -9.7002 8 -17.7002 17.7002 -17.7002h248c9.7002 0 17.7002 8 17.7002 17.7002zM141.7 205.3v-132.899c0 -2.5 -1.90039 -4.40039 -4.40039 -4.40039h-8.89941\nc-2.5 0 -4.40039 1.90039 -4.40039 4.40039v132.899c0 2.5 1.90039 4.40039 4.40039 4.40039h8.89941c2.5 0 4.40039 -1.90039 4.40039 -4.40039zM283.4 156.6c0 -13 -7.2002 -24.3994 -17.7002 -30.3994v-31.6006c0 -5 -3.90039 -8.89941 -8.90039 -8.89941h-17.7002\nc-5 0 -8.89941 3.89941 -8.89941 8.89941v31.6006c-10.5 6.09961 -17.7002 17.3994 -17.7002 30.3994c0 19.7002 15.7998 35.4004 35.4004 35.4004c19.5996 0 35.5 -15.7998 35.5 -35.4004zM248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248\ns111 248 248 248zM248 -38.2998c127 0 230.3 103.3 230.3 230.3s-103.3 230.3 -230.3 230.3s-230.3 -103.3 -230.3 -230.3s103.3 -230.3 230.3 -230.3z\" />\n    <glyph glyph-name=\"cc-jcb\" unicode=\"&#xf24b;\" horiz-adv-x=\"576\" \nd=\"M431.5 203.7v32.2998c41.2002 0 38.5 -0.200195 38.5 -0.200195c7.2998 -1.2998 13.2998 -7.2998 13.2998 -16c0 -8.7998 -6 -14.5 -13.2998 -15.7998c-1.2002 -0.400391 -3.2998 -0.299805 -38.5 -0.299805zM474.3 183.5c7.5 -1.5 13.5 -8.2998 13.5 -17\nc0 -9 -6 -15.5 -13.5 -17c-2.7998 -0.700195 -3.2002 -0.5 -42.7998 -0.5v35c39.5 0 40 0.200195 42.7998 -0.5zM576 368v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h480c26.5 0 48 -21.5 48 -48zM182 255.7h-57\nc0 -67.1006 10.7002 -109.7 -35.7998 -109.7c-19.5 0 -38.7998 5.7002 -57.2002 14.7998v-28c30 -8.2998 68 -8.2998 68 -8.2998c97.9004 0 82 47.7002 82 131.2zM360.5 251.2c-63.4004 16 -165 14.8994 -165 -59.2998c0 -77.1006 108.2 -73.6006 165 -59.2002v28.2998\nc-47.5996 -24.7002 -107.5 -22 -107.5 31s59.7998 55.5996 107.5 31.2002v28zM544 161.5c0 18.5 -16.5 30.5 -38 32v0.799805c19.5 2.7002 30.2998 15.5 30.2998 30.2002c0 19 -15.7002 30 -37 31c0 0 6.2998 0.299805 -120.3 0.299805v-127.5h122.7\nc24.2998 -0.0996094 42.2998 12.9004 42.2998 33.2002z\" />\n    <glyph glyph-name=\"cc-diners-club\" unicode=\"&#xf24c;\" horiz-adv-x=\"576\" \nd=\"M239.7 368.1c97.2002 0 175.8 -78.5996 175.8 -175.8c0 -96.8994 -78.5996 -175.8 -175.8 -175.8c-96.9004 0 -175.8 78.9004 -175.8 175.8c0 97.2002 78.8994 175.8 175.8 175.8zM199.8 88.5v207.9c-41.7002 -16.2002 -71.3994 -56.7002 -71.3994 -104.101\nc0 -47.3994 29.6992 -87.8994 71.3994 -103.8zM279.6 88.2002c41.7002 16.2002 71.4004 56.7002 71.4004 104.1c0 47.4004 -29.7002 87.9004 -71.4004 104.101v-208.2zM528 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48v352\nc0 26.5 21.5 48 48 48h480zM329.7 0c105 0 200.7 85.5 200.7 190.2c0 114.6 -95.7002 193.8 -200.7 193.8h-90.2998c-106.2 0 -193.801 -79.2002 -193.801 -193.8c0 -104.7 87.6006 -190.2 193.801 -190.2h90.2998z\" />\n    <glyph glyph-name=\"creative-commons\" unicode=\"&#xf25e;\" horiz-adv-x=\"496\" \nd=\"M245.83 233.13l-33.2197 -17.2803c-9.43066 19.5801 -25.2402 19.9307 -27.46 19.9307c-22.1309 0 -33.2207 -14.6104 -33.2207 -43.8398c0 -23.5703 9.20996 -43.8408 33.2207 -43.8408c14.4697 0 24.6494 7.09082 30.5693 21.2607l30.5498 -15.5\nc-6.16992 -11.5107 -25.6895 -38.9805 -65.0996 -38.9805c-22.5996 0 -73.96 10.3203 -73.96 77.0498c0 58.6904 43 77.0605 72.6299 77.0605c30.7197 0.00976562 52.7002 -11.9502 65.9902 -35.8604zM388.88 233.13l-32.7803 -17.2803\nc-9.5 19.7705 -25.7197 19.9307 -27.8994 19.9307c-22.1406 0 -33.2197 -14.6104 -33.2197 -43.8398c0 -23.5508 9.22949 -43.8408 33.2197 -43.8408c14.4502 0 24.6494 7.09082 30.54 21.2607l31 -15.5c-2.10059 -3.75 -21.3906 -38.9805 -65.0898 -38.9805\nc-22.6904 0 -73.96 9.87012 -73.96 77.0498c0 58.6699 42.9697 77.0605 72.6299 77.0605c30.71 0.00976562 52.5801 -11.9502 65.5596 -35.8604zM247.56 439.95c141.82 0 248.44 -110.13 248.44 -248c0 -147.13 -118.51 -248 -248.44 -248\nc-133.96 0 -247.56 109.51 -247.56 248c0 132.939 104.74 248 247.56 248zM248.43 -10.8604c103.16 0 202.83 81.1299 202.84 202.82c0 113.8 -90.2891 203.26 -202.819 203.26c-118.29 0 -203.72 -97.8496 -203.72 -203.27c0 -109.771 91.1592 -202.811 203.699 -202.811z\n\" />\n    <glyph glyph-name=\"gg\" unicode=\"&#xf260;\" horiz-adv-x=\"512\" \nd=\"M179.2 217.6l102.399 -102.399l-102.399 -102.4l-179.2 179.2l179.2 179.2l44.7998 -44.7998l-25.5996 -25.6006l-19.2002 19.2002l-128 -128l128 -128l51.5 51.5l-77.1006 76.5zM332.8 371.2l179.2 -179.2l-179.2 -179.2l-44.7998 44.7998l25.5996 25.6006\nl19.2002 -19.2002l128 128l-128 128l-51.5 -51.5l77.1006 -76.5l-25.6006 -25.5996l-102.399 102.399z\" />\n    <glyph glyph-name=\"gg-circle\" unicode=\"&#xf261;\" horiz-adv-x=\"512\" \nd=\"M257 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM207.5 65.2002l75 75.2002l-77.2002 77.1992l-24.3994 -24.3994l53.0996 -52.9004l-26.5996 -26.5996l-77.2002 77.2002l77.2002 77.1992l11.0996 -11.0996l24.2002 24.2002\nl-35.2002 35.3994l-125.7 -125.699zM306.5 67.4004l125.7 125.6l-125.7 125.7l-75 -75l77.2002 -77.2002l24.3994 24.4004l-53.0996 52.8994l26.5 26.5l77.2002 -77.2002l-77.2002 -77.1992l-11.0996 11.0996l-24.1006 -24.4004z\" />\n    <glyph glyph-name=\"tripadvisor\" unicode=\"&#xf262;\" horiz-adv-x=\"576\" \nd=\"M166.4 167.479c0 -13.2354 -10.7305 -23.9658 -23.9668 -23.9658c-13.2354 0 -23.9658 10.7305 -23.9658 23.9658c0 13.2363 10.7305 23.9668 23.9658 23.9668c13.2363 0 23.9668 -10.7295 23.9668 -23.9668zM431.362 191.435\nc13.2295 0 23.9551 -10.7246 23.9561 -23.9561c0 -13.2305 -10.7266 -23.9551 -23.9561 -23.9551c-13.2314 0 -23.9561 10.7256 -23.9561 23.9551c0 13.2314 10.7256 23.9561 23.9561 23.9561zM520.75 51.9453c-62.667 -49.1045 -153.276 -38.1094 -202.379 24.5586\nl-30.9795 -46.3252l-30.6826 45.9395c-48.2773 -60.3906 -135.622 -71.8916 -197.885 -26.0547c-64.0586 47.1572 -77.7588 137.315 -30.6016 201.373c-5.05762 17.1221 -17.7021 42.7236 -28.2227 57.1475l90.2861 0.0498047\nc48.0039 29.8701 132.851 54.1123 189.389 54.1123c2.11914 0 5.55762 -0.0371094 7.67578 -0.0820312c1.72363 0.0302734 4.52246 0.0556641 6.24609 0.0556641c55.5518 0 138.851 -23.9258 185.936 -53.4043l96.2178 -0.0742188\nc-10.6191 -14.5371 -23.3213 -40.3643 -28.3516 -57.6494c46.793 -62.7471 34.9639 -151.37 -26.6484 -199.646zM259.366 166.239c-0.00683594 63.5566 -51.5352 115.075 -115.092 115.067c-63.5576 -0.00683594 -115.074 -51.5342 -115.068 -115.092\nc0.00683594 -63.5566 51.5352 -115.075 115.092 -115.067c63.5127 0.0742188 114.984 51.5381 115.068 115.052v0.0400391zM287.957 176.694c5.43262 73.4395 65.5098 130.884 139.12 133.021c-35.5576 15.374 -95.8555 27.8506 -134.594 27.8506\nc-1.41699 0 -3.7168 -0.0166016 -5.13379 -0.0380859c-0.953125 0.00878906 -2.50098 0.0166016 -3.45508 0.0166016c-39.2324 0 -100.479 -12.2168 -136.709 -27.2695c74.3447 -1.58203 135.3 -59.4248 140.771 -133.581zM539.663 205.461\nc-21.9922 59.6338 -88.1621 90.1484 -147.795 68.1572c-59.6338 -21.9922 -90.1484 -88.1621 -68.1572 -147.795v-0.0322266c22.0381 -59.6074 88.1982 -90.0908 147.827 -68.1133c59.6152 22.0039 90.1133 88.1621 68.125 147.783zM213.624 167.486v-0.115234\nc-0.0566406 -39.3281 -31.9863 -71.1631 -71.3145 -71.1064c-39.3271 0.0576172 -71.1621 31.9863 -71.1055 71.3145s31.9863 71.1631 71.3135 71.1055c39.2598 -0.115234 71.042 -31.9395 71.1064 -71.1982zM189.112 167.486v0.0839844\nc-0.0517578 25.7832 -20.9941 46.6445 -46.7783 46.5938s-46.6445 -20.9941 -46.5938 -46.7773c0.0507812 -25.7842 20.9941 -46.6445 46.7764 -46.5938c25.7266 0.113281 46.5371 20.9678 46.5957 46.6934zM502.535 167.486\nc-0.0205078 -39.3281 -31.918 -71.2422 -71.2471 -71.2217c-39.3291 0.0214844 -71.1943 31.918 -71.1729 71.2471c0.0195312 39.3281 31.918 71.1943 71.2471 71.1729c39.29 -0.0654297 71.1211 -31.9082 71.1729 -71.1982zM478.031 167.494\nc-0.00878906 25.7842 -20.918 46.6787 -46.7021 46.6699s-46.6787 -20.918 -46.6699 -46.7021s20.918 -46.6777 46.7021 -46.6699c25.7646 0.0458984 46.6357 20.9277 46.6699 46.6934v0.00878906z\" />\n    <glyph glyph-name=\"odnoklassniki\" unicode=\"&#xf263;\" horiz-adv-x=\"320\" \nd=\"M275.1 114c-27.3994 -17.4004 -65.0996 -24.2998 -90 -26.9004l20.9004 -20.5996l76.2998 -76.2998c27.9004 -28.6006 -17.5 -73.2998 -45.7002 -45.7002c-19.0996 19.4004 -47.0996 47.4004 -76.2998 76.5996l-76.2998 -76.5\nc-28.2002 -27.5 -73.5996 17.6006 -45.4004 45.7002c19.4004 19.4004 47.1006 47.4004 76.3008 76.2998l20.5996 20.6006c-24.5996 2.59961 -62.9004 9.09961 -90.5996 26.8994c-32.6006 21 -46.9004 33.3008 -34.3008 59c7.40039 14.6006 27.7002 26.9004 54.6006 5.7002\nc0 0 36.2998 -28.8994 94.8994 -28.8994c58.6006 0 94.9004 28.8994 94.9004 28.8994c26.9004 21.1006 47.0996 8.90039 54.5996 -5.7002c12.4004 -25.6992 -1.89941 -38 -34.5 -59.0996zM30.2998 318.3c0 71.7002 58.2998 129.7 129.7 129.7s129.7 -58 129.7 -129.7\nc0 -71.3994 -58.2998 -129.399 -129.7 -129.399s-129.7 58 -129.7 129.399zM96.2998 318.3c0 -35.0996 28.6006 -63.7002 63.7002 -63.7002s63.7002 28.6006 63.7002 63.7002c0 35.4004 -28.6006 64 -63.7002 64s-63.7002 -28.5996 -63.7002 -64z\" />\n    <glyph glyph-name=\"odnoklassniki-square\" unicode=\"&#xf264;\" \nd=\"M184.2 270.9c0 22.0996 17.8994 40 39.7998 40s39.7998 -17.9004 39.7998 -40c0 -22 -17.8994 -39.8008 -39.7998 -39.8008s-39.7998 17.9004 -39.7998 39.8008zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352\nc26.5 0 48 -21.5 48 -48zM142.9 270.9c0 -44.6006 36.3994 -80.9004 81.0996 -80.9004s81.0996 36.2002 81.0996 80.9004c0 44.7998 -36.3994 81.0996 -81.0996 81.0996s-81.0996 -36.2002 -81.0996 -81.0996zM317.4 180.2\nc-4.60059 9.09961 -17.3008 16.7998 -34.1006 3.59961c0 0 -22.7002 -18 -59.2998 -18s-59.2998 18 -59.2998 18c-16.7998 13.2002 -29.5 5.5 -34.1006 -3.59961c-7.89941 -16.1006 1.10059 -23.7002 21.4004 -37c17.2998 -11.1006 41.2002 -15.2002 56.5996 -16.7998\nl-12.8994 -12.9004c-18.2002 -18 -35.5 -35.5 -47.7002 -47.7002c-17.5996 -17.5996 10.7002 -45.7998 28.4004 -28.5996l47.6992 47.8994c18.2002 -18.1992 35.7002 -35.6992 47.7002 -47.8994c17.6006 -17.2002 46 10.7002 28.6006 28.5996l-47.7002 47.7002l-13 12.9004\nc15.5 1.59961 39.0996 5.89941 56.2002 16.7998c20.3994 13.2998 29.2998 21 21.5 37z\" />\n    <glyph glyph-name=\"get-pocket\" unicode=\"&#xf265;\" \nd=\"M407.6 384c22.7002 0 40.4004 -18.2002 40.4004 -40.5996v-135.2c0 -124.7 -99.7998 -224.2 -223.8 -224.2c-124.5 0 -224.2 99.5 -224.2 224.2v135.2c0 22.0996 18.5 40.5996 40.5996 40.5996h367zM245.6 115.5c111.9 107.5 114.801 105.4 114.801 123.2\nc0 16.8994 -13.8008 30.7002 -30.7002 30.7002c-16.9004 0 -14.9004 -2.40039 -105.5 -89.3008c-89.1006 85.5 -88.2002 89.3008 -105.2 89.3008c-16.9004 0 -30.7002 -13.8008 -30.7002 -30.7002c0 -18.1006 1.2002 -14.2998 114.9 -123.2\nc11 -11.0996 30 -11.7998 42.3994 0z\" />\n    <glyph glyph-name=\"wikipedia-w\" unicode=\"&#xf266;\" horiz-adv-x=\"640\" \nd=\"M640 396.8l-0.299805 -12.2002c-28.1006 -0.799805 -45 -15.7998 -55.7998 -40.2998c-25 -57.7998 -103.301 -240 -155.301 -358.6h-13.5996l-81.9004 193.1c-32.5 -63.5996 -68.2998 -130 -99.1992 -193.1c-0.300781 -0.299805 -15 0 -15 0.299805\nc-46.9004 109.7 -96.1006 218.6 -143.101 328.6c-11.3994 26.7002 -49.3994 70 -75.5996 69.7002c0 3.10059 -0.299805 10 -0.299805 14.2002h161.899v-13.9004c-19.2002 -1.09961 -52.7998 -13.2998 -43.2998 -34.1992c21.9004 -49.7002 103.6 -240.301 125.6 -288.601\nc15 29.7002 57.8008 109.2 75.3008 142.8c-13.9004 28.3008 -58.6006 133.9 -72.8008 160c-9.69922 17.8008 -36.0996 19.4004 -55.7998 19.7002v13.9004l142.5 -0.299805v-13.1006c-19.3994 -0.599609 -38.0996 -7.7998 -29.3994 -26.0996\nc18.8994 -40 30.5996 -68.1006 48.0996 -104.7c5.59961 10.7998 34.7002 69.4004 48.0996 100.8c8.90039 20.6006 -3.89941 28.6006 -38.5996 29.4004c0.299805 3.59961 0 10.2998 0.299805 13.5996c44.4004 0.299805 111.101 0.299805 123.101 0.600586v-13.6006\nc-22.5 -0.799805 -45.8008 -12.7998 -58.1006 -31.7002l-59.2002 -122.8c6.40039 -16.0996 63.3008 -142.8 69.2002 -156.7l122.4 282.601c-8.60059 23.0996 -36.4004 28.0996 -47.2002 28.2998v13.9004l127.8 -1.10059z\" />\n    <glyph glyph-name=\"safari\" unicode=\"&#xf267;\" horiz-adv-x=\"512\" \nd=\"M236.9 191.2c0 9.09961 6.59961 17.7002 16.2998 17.7002c8.89941 0 17.3994 -6.40039 17.3994 -16.1006c0 -9.09961 -6.39941 -17.7002 -16.0996 -17.7002c-9 0 -17.5996 6.7002 -17.5996 16.1006zM504 192c0 -137 -111 -248 -248 -248s-248 111 -248 248\ns111 248 248 248s248 -111 248 -248zM477.4 192c0 122.3 -99.1006 221.4 -221.4 221.4s-221.4 -99.1006 -221.4 -221.4s99.1006 -221.4 221.4 -221.4s221.4 99.1006 221.4 221.4zM404.9 95.4004c0 -3.60059 13 -10.2002 16.2998 -12.2002\nc-27.4004 -41.5 -69.7998 -71.4004 -117.9 -83.2998l-4.39941 18.5c-0.300781 2.5 -1.90039 2.7998 -4.2002 2.7998c-1.90039 0 -3 -2.7998 -2.7998 -4.2002l4.39941 -18.7998c-13.2998 -2.7998 -26.7998 -4.2002 -40.3994 -4.2002c-36.3008 0 -72 10.2002 -103 29.0996\nc1.69922 2.80078 12.1992 18 12.1992 20.2002c0 1.90039 -1.69922 3.60059 -3.59961 3.60059c-3.90039 0 -12.2002 -16.6006 -14.7002 -19.9004c-41.7998 27.7002 -72 70.5996 -83.5996 119.6l19.0996 4.2002c2.2002 0.600586 2.7998 2.2002 2.7998 4.2002\nc0 1.90039 -2.7998 3 -4.39941 2.7998l-18.7002 -4.2998c-2.5 12.7002 -3.90039 25.5 -3.90039 38.5c0 37.0996 10.5 73.5996 30.2002 104.9c2.7998 -1.7002 16.1006 -10.8008 18.2998 -10.8008c1.90039 0 3.60059 1.40039 3.60059 3.30078\nc0 3.89941 -14.7002 11.2998 -18 13.5996c28.2002 41.2002 71.0996 70.9004 119.8 81.9004l4.2002 -18.5c0.599609 -2.2002 2.2002 -2.80078 4.2002 -2.80078s3 2.80078 2.7998 4.40039l-4.2002 18.2998c12.2002 2.2002 24.5996 3.60059 37.0996 3.60059\nc37.1006 0 73.3008 -10.5 104.9 -30.2002c-1.90039 -2.7998 -10.7998 -15.7998 -10.7998 -18c0 -1.90039 1.39941 -3.60059 3.2998 -3.60059c3.90039 0 11.2998 14.4004 13.2998 17.7002c41 -27.7002 70.2998 -70 81.7002 -118.2l-15.5 -3.2998\nc-2.5 -0.599609 -2.7998 -2.2002 -2.7998 -4.39941c0 -1.90039 2.7998 -3 4.2002 -2.80078l15.7998 3.60059c2.5 -12.7002 3.89941 -25.7002 3.89941 -38.7002c0 -36.2998 -10 -72 -28.7998 -102.7c-2.7998 1.40039 -14.3994 9.7002 -16.5996 9.7002\nc-2.10059 0 -3.7998 -1.7002 -3.7998 -3.59961zM371.7 337.6c-13 -12.1992 -134.2 -123.699 -137.601 -129.5l-96.5996 -160.5c12.7002 11.9004 134.2 124 137.3 129.301z\" />\n    <glyph glyph-name=\"chrome\" unicode=\"&#xf268;\" horiz-adv-x=\"496\" \nd=\"M131.5 230.5l-76.4004 117.4c47.6006 59.1992 119 91.7998 192 92.0996c42.3008 0.299805 85.5 -10.5 124.801 -33.2002c43.3994 -25.2002 76.3994 -61.3994 97.3994 -103l-205.3 10.7998c-58.0996 3.40039 -113.4 -29.2998 -132.5 -84.0996zM164.4 192\nc0 46.2998 37.3994 83.5996 83.5996 83.5996s83.5996 -37.3994 83.5996 -83.5996s-37.3994 -83.5996 -83.5996 -83.5996s-83.5996 37.3994 -83.5996 83.5996zM479.3 281.2c43.5 -111.9 0 -241.9 -107.399 -303.9c-43.4004 -25.2002 -91.3008 -35.3994 -137.801 -32.8994\nl112.101 172.399c31.8994 49 31.2998 112.9 -6.60059 157.2zM133.7 144.4c26.2998 -51.7002 81.8994 -83.3008 139.5 -72.5l-63.7002 -124.801c-118.7 18.2002 -209.5 120.9 -209.5 244.9c0 50.0996 14.9004 96.9004 40.4004 135.9z\" />\n    <glyph glyph-name=\"firefox\" unicode=\"&#xf269;\" horiz-adv-x=\"480\" \nd=\"M478.1 212.7c1.30078 -7.10059 1.90039 -14.2998 1.90039 -21.6006v-2.7998c-1.40039 -34 -11.5996 -67 -29.5996 -95.8994c-1 -1.5 -1.80078 -2.90039 -2.7002 -4.30078c2.7002 -7.19922 2.59961 -15.0996 -0.400391 -22.1992\nc-5 -19.4004 -16.5996 -36.4004 -32.8994 -48.1006c-10.8008 -8.7002 -22.7002 -16.2002 -35.3008 -22.0996l-1.89941 -0.900391l-1 -0.5c-1.7002 -0.700195 -3.2998 -1.39941 -4.90039 -2.09961c-2.39941 -5.10059 -5.7998 -9.60059 -9.89941 -13.2998\nc-2.5 -3.10059 -30.1006 -35 -113.801 -35c-23.5996 0 -47.1992 3.5 -69.7998 10.2998c0.799805 -0.299805 1.60059 -0.700195 2.40039 -1c-2.60059 0.899414 -5.2002 1.7998 -7.7002 2.7002c-19.0996 5.89941 -37.2002 14.5996 -53.7998 25.7998\nc-40.7002 24.7002 -72.9004 61.2002 -92.2998 104.7c-14.5 31.3994 -21.1006 65.7998 -19.4004 100.3c-2.7998 -8.2998 -5.2002 -16.7002 -7 -25.2998c0 29.1992 5.5 58.0996 16.2002 85.1992c-5.5 -7.89941 -10.2998 -16.2998 -14.2998 -25.0996\nc5.69922 23.0996 14.6992 45.2002 26.7998 65.5996c3.7002 6.10059 7.89941 11.9004 12.7002 17.1006v0.200195c-0.100586 2.69922 0.0996094 5.5 0.5 8.2998c1.5 16.2998 5.69922 32.2002 12.3994 47.0996l0.299805 0.700195c0.100586 0.299805 0 -1 0 -1.7002\ns-0.0996094 -1.2998 0 -1c0.600586 2 1.40039 4 2.30078 5.90039c1 2.09961 2.39941 4.09961 3.89941 5.7998c0.100586 0.0996094 0.200195 0.200195 0.299805 0.400391c0.100586 0.199219 -0.399414 -2 -0.5 -3.10059v-0.5c0.600586 1.2002 1.30078 2.40039 2.2002 4.5\nc2.10059 5.90039 6 11 11.1006 14.5l0.199219 0.100586c-0.299805 -9 1.2002 -17.9004 4.40039 -26.2002v-0.100586c0.299805 -0.399414 0.5 1.30078 0.900391 1.30078c0.0996094 0 0.199219 -0.100586 0.199219 -0.200195\nc0.900391 -1.7998 1.80078 -3.60059 2.7002 -5.2002c1.2998 -2.2002 2.5 -4.2002 3.7002 -6l0.400391 -0.200195l0.199219 0.100586c2.60059 -4.2002 5.90039 -7.80078 9.7002 -10.9004h-0.200195l0.200195 -0.0996094c18.2998 3.59961 37.2002 2 54.6006 -4.7002\nl0.0996094 0.0996094c2.09961 2.60059 4.59961 4.90039 7.2998 6.90039c0 -0.900391 -0.0996094 -1.7998 -0.200195 -2.7002c4 5 9.10059 9 15 11.5c-0.399414 -0.700195 -0.5 -1.40039 -0.5 -2.2002c7.40039 4.2998 15.5 7.40039 23.9004 9\nc1.09961 0 -3.5 -1.7998 -5.09961 -3.09961c3.69922 1.59961 7.69922 2.59961 11.6992 2.7998c6.60059 0.700195 14 -2.09961 12.6006 -2.7002c-2.7998 -1 -5.5 -2.2002 -8.2002 -3.5c-0.799805 -0.700195 3.2002 0.200195 2.40039 -0.5\nc-14 -9.2002 -24.8008 -22.5996 -30.8008 -38.2998v-0.0996094c2.5 -11 11.4004 -19.3008 22.5 -21.1006c31.5 -3 37.5 -5.59961 38.4004 -9.09961v-1.5c-0.0996094 -1 -0.200195 -1.90039 -0.299805 -2.7998c-1.2002 -6.90039 -4.90039 -13.2002 -10.2002 -17.7002\nc-1.40039 -1.2998 -2.90039 -2.5 -4.5 -3.5c-1.09961 -0.700195 -6.40039 -2.7998 -12.7998 -5.60059c-7.90039 -3.19922 -15.5 -7.09961 -22.7002 -11.5996c-1.2998 -0.799805 -2.40039 -1.7002 -3.40039 -2.7002c-0.399414 -0.399414 -1.19922 -1.5 -1.19922 -1.5\nv-0.0996094c0.5 -1.2002 1 -2.40039 1.19922 -3.7002c-1.39941 1.7002 -2.69922 1.09961 -1.89941 -0.5c0.899414 -2.5 1.2998 -5.2002 1.09961 -7.7998c0.200195 -4.7998 -0.700195 -9.60059 -2.59961 -14c-2.10059 1.5 -4.2998 2.89941 -6.60059 4.09961h-0.199219\nc2.5 -1.59961 4.2998 -3.89941 5.39941 -6.59961c0.700195 -2.2002 -0.299805 -2.7002 -0.299805 -2.7002c-1.40039 2 -3.09961 3.59961 -5.2002 4.7002c-3.09961 1.7998 -8.7998 4.7002 -11.3994 5.7998c-0.300781 -0.200195 -0.5 -0.0996094 -0.800781 -0.200195\nc0.800781 -1.2998 2.10059 -3.7998 2.10059 -3.7998s-1.7998 1.09961 -4.7998 2.59961c-3.90039 -1.7998 -7.2002 -4.89941 -9.30078 -8.69922c-3.5 -7.7002 -3.09961 -16.7002 1 -24.1006c4 -6 9.10059 -11.2002 15 -15.2002\nc0.400391 -0.299805 -3.39941 1.10059 -3.09961 0.800781c4.59961 -3.2002 9.40039 -6.10059 14.4004 -8.60059c1.5 -1 -5 1.2002 -3.40039 0.299805c1.40039 -0.899414 2.7998 -1.69922 4.2998 -2.5c22.9004 -12.0996 38.9004 0.400391 56.4004 2.90039\nc16.7998 3 33.7998 -3.59961 44.2002 -17c6 -8.5 -0.600586 -16.7002 -9 -14h-0.200195c-8.60059 2.90039 -19.1006 -4.2998 -36.6006 -14c-17.2998 -8.2998 -36.8994 -10.5996 -55.5996 -6.59961c-4.7998 0.899414 -9.40039 2.09961 -14 3.69922l-2 0.700195\nl0.200195 -0.299805c8.7998 -12.2002 19.8994 -22.5 32.7998 -30.2998c8.7002 -4.40039 17.9004 -7.5 27.4004 -9.2998c8 -1.90039 16.1992 -2.80078 24.5 -2.80078c61 -0.0996094 110.6 49.4004 110.6 110.4c0.0996094 15.9004 -3.09961 31.7998 -9.2998 46.5\nc20.7002 -12.2998 37.5996 -30.2002 48.7998 -51.5c-13.9004 40.5996 -40.2998 56.4004 -64.7002 76.5996c-19.5996 14.8008 -34.7002 34.9004 -43.3994 57.9004c-25.2002 67.7998 33.0996 132.9 33.0996 132.9s-3.59961 -15.1006 27.4004 -44.3008\nc6.39941 -5.89941 16.7998 -14.5 28.8994 -26.6992c1.7002 9.2998 4.2002 18.3994 7.40039 27.2998c2.5 -14.7002 7.7998 -28.7998 15.3994 -41.6006c11.7002 -16.6992 21.9004 -25.5996 30.7002 -40c1.90039 -2.5 3.7998 -5.19922 5.60059 -7.89941\nc5.09961 -7.2002 9.5 -14.7998 13.2998 -22.7998c6 -12 10.7998 -24.5 14.5 -37.4004c3 -10.4004 4.89941 -20.9004 5.7998 -31.5996c2.90039 3.89941 4.7002 5.89941 4.7002 5.89941s0.700195 -2.59961 1.39941 -7.09961zM179.1 310.3\nc-0.5 -1.2002 -0.899414 -2.2998 -1.2998 -3.5c0.400391 1.2002 0.900391 2.40039 1.2998 3.5z\" />\n    <glyph glyph-name=\"opera\" unicode=\"&#xf26a;\" horiz-adv-x=\"496\" \nd=\"M313.9 415.3c-170.2 0 -252.601 -223.8 -147.5 -355.1c36.5 -45.4004 88.5996 -75.6006 147.5 -75.6006c36.2998 0 70.2998 11.1006 99.3994 30.4004c-43.7998 -39.2002 -101.899 -63 -165.3 -63c-3.90039 0 -8 0 -11.9004 0.299805\nc-131.5 6.10059 -236.1 114.601 -236.1 247.7c0 137 111 248 248 248h0.799805c63.1006 -0.299805 120.7 -24.0996 164.4 -63.0996c-29 19.3994 -63.1006 30.3994 -99.2998 30.3994zM415.7 17.5996c-40.9004 -24.6992 -90.7002 -23.5996 -132 5.80078\nc56.2002 20.5 97.7002 91.5996 97.7002 176.6c0 84.7002 -41.2002 155.8 -97.4004 176.6c41.7998 29.2002 91.2002 30.3008 132.9 5c105.899 -98.6992 105.5 -265.699 -1.2002 -364z\" />\n    <glyph glyph-name=\"internet-explorer\" unicode=\"&#xf26b;\" horiz-adv-x=\"512\" \nd=\"M483.049 288.294c25.1963 -45.4473 33.2578 -97.5811 26.8516 -141.162h-328.792c0 -100.432 144.31 -136.029 196.818 -47.4355h120.833c-32.5645 -91.7285 -119.689 -146.022 -216.813 -146.022c-35.1367 0 -70.2725 0.143555 -101.695 15.5732\nc-87.3975 -44.4941 -180.251 -56.5693 -180.251 42.0059c0 45.8066 23.2461 107.096 43.9922 145.022c35.1357 63.7227 81.4121 124.875 135.687 173.168c-43.7061 -18.8604 -91.125 -66.2959 -121.977 -101.158c25.877 112.787 129.466 193.638 237.098 186.457\nc130.032 59.7939 209.673 34.1445 209.673 -38.5771c0 -27.4326 -10.5684 -63.2959 -21.4238 -87.8711zM64.5586 101.123c-73.001 -152.4 11.5254 -172.244 100.267 -123.304c-46.5635 27.4326 -82.5557 72.1533 -100.267 123.304zM180.536 209.996h207.961\nc-2 55.1514 -50.5635 94.8711 -103.981 94.8711c-53.7041 0 -101.979 -39.7197 -103.979 -94.8711zM365.072 397.596c46.2764 -18.002 85.9824 -57.2939 112.263 -99.5859c7.1416 18.8604 14.5693 47.8643 14.5693 67.8672c0 32.0049 -22.8525 53.7217 -54.2744 53.7217\nc-23.9951 0 -51.1328 -11.7158 -72.5576 -22.0029z\" />\n    <glyph glyph-name=\"contao\" unicode=\"&#xf26d;\" horiz-adv-x=\"512\" \nd=\"M45.4004 143c14.3994 -67.0996 26.3994 -129 68.1992 -175h-79.5996c-18.7002 0 -34 15.2002 -34 34v380c0 18.7002 15.2002 34 34 34h57.7002c-13.7998 -12.5996 -26.1006 -27.2002 -36.9004 -43.5996c-45.3994 -70 -27 -146.801 -9.39941 -229.4zM478 416\nc18.7998 0 34 -15.2002 34 -34v-380.1c0 -18.8008 -15.2998 -34 -34 -34h-52.0996c38.6992 38.3994 60.5996 92.0996 57.3994 163.6l-137.399 -29.5996c-1.7002 -32.5 -12.9004 -63.8008 -57.4004 -73.2002c-24.9004 -5.2998 -45.4004 0.599609 -58.2998 11.7002\nc-15.7998 13.5 -28.4004 31 -49.5 131.199c-21.4004 100.5 -17 121.601 -8.2002 140.301c7.2998 15.2998 23.7002 29.2998 48.2998 34.5996c44.7998 9.40039 67.7002 -14.9004 82.6006 -43.9004l137.1 29.3008c-13.5 34.5996 -31.2998 62.6992 -52.7002 84.0996h90.2002z\n\" />\n    <glyph glyph-name=\"500px\" unicode=\"&#xf26e;\" \nd=\"M103.3 103.7c-6.5 14.2002 -6.89941 18.2998 7.40039 23.0996c25.5996 8 8 -9.2002 43.2002 -49.2002h0.299805v93.9004c1.2002 50.2002 44 92.2002 97.7002 92.2002c53.8994 0 97.6992 -43.5 97.6992 -96.7998c0 -63.4004 -60.7998 -113.2 -128.5 -93.3008\nc-10.5 4.2002 -2.09961 31.7002 8.5 28.6006c53 0 89.4004 10.0996 89.4004 64.3994c0 61 -77.0996 89.6006 -116.9 44.6006c-23.5 -26.4004 -17.5996 -42.1006 -17.5996 -157.601c50.7002 -31 118.3 -22 160.4 20.1006c24.7998 24.7998 38.5 58 38.5 93\nc0 35.2002 -13.8008 68.2002 -38.8008 93.2998c-24.7998 24.7998 -57.7998 38.5 -93.2998 38.5s-68.7998 -13.7998 -93.5 -38.5c-0.299805 -0.299805 -16 -16.5 -21.2002 -23.9004l-0.5 -0.599609c-3.2998 -4.7002 -6.2998 -9.09961 -20.0996 -6.09961\nc-6.90039 1.69922 -14.2998 5.7998 -14.2998 11.7998v186.8c0 5 3.89941 10.5 10.5 10.5h241.3c8.2998 0 8.2998 -11.5996 8.2998 -15.0996c0 -3.90039 0 -15.1006 -8.2998 -15.1006h-223.2v-132.899h0.299805c104.2 109.8 282.801 36 282.801 -108.9\nc0 -178.1 -244.801 -220.3 -310.101 -62.7998zM166.6 364.5c3.80078 18.7998 145.101 50.7998 238.301 -38.2002c8.5 -7.5 -9.5 -22.7998 -14.3008 -22.7998c-6.59961 0 -84.5996 87.9004 -209.399 40.4004c-10 -3.90039 -15.1006 16.3994 -14.6006 20.5996zM393 33.2998\nc8.09961 8 27.5996 -12.5996 20.7002 -20.3994c-135.601 -135.601 -357.601 -52.1006 -381.601 121.3c-1.5 10.7002 28.9004 15.5 28.9004 3.2998c33 -165 222 -214.1 332 -104.2zM213.6 141.4c0 3.39941 2.30078 4.69922 20.4004 22.5996l-18.2002 18.2002\nc-5.59961 5.59961 7.40039 17.2998 12.4004 17.2998c3.09961 0 2.89941 -0.700195 21.5 -19.5l17.8994 17.9004c6.10059 6.09961 22.5 -8.90039 16.2002 -15.7002l-18.2002 -18.2002l17.3008 -17.2998c7.7998 -7.7998 -5.30078 -18.2002 -10.7002 -18.2002\nc-3.2002 0 -2.7002 0.200195 -22.2998 19.5c-19.7002 -19.7002 -18.5 -19.5 -22.3008 -19.5c-2.39941 0 -5.5 1.40039 -8.5 4.40039c-1.19922 1.19922 -5.5 4.5 -5.5 8.5z\" />\n    <glyph glyph-name=\"amazon\" unicode=\"&#xf270;\" \nd=\"M257.2 285.3c0 39.2998 5.2002 69.2002 -35.5 69.1006c0 0 -37.9004 0 -54.2002 -49.5l-73.5 6.7998c0 49.2998 46.7002 104.3 134.7 104.3c87.7998 0 112.3 -57 112.3 -82.2998v-147.101c0 -27.5 32.2998 -52.7998 32.2998 -52.7998l-56.7998 -56\nc-9.90039 9.2998 -38.7998 36.6006 -45.2998 46.7998c-45.2002 -70.7998 -183.5 -66.2998 -183.5 43.2002c0 102 120.8 115.7 169.5 117.5zM257.2 198.5v40.5996c-33.7002 -1.09961 -84.2002 -10.5996 -84.2002 -57.7998c0 -50.7998 84.2002 -62.7998 84.2002 17.2002z\nM393.2 35c-7.7002 -10 -70 -67 -174.5 -67s-184.5 71.5 -209 101c-6.7998 7.7002 1 11.2998 5.5 8.2998c73.2998 -44.5 187.8 -117.8 372.5 -30.2998c7.5 3.7002 13.2998 -2 5.5 -12zM433 32.7998c-6.5 -15.7998 -16 -26.7998 -21.2002 -31\nc-5.5 -4.5 -9.5 -2.7002 -6.5 3.7998s19.2998 46.5 12.7002 55c-6.5 8.30078 -37 4.30078 -48 3.2002c-10.7998 -1 -13 -2 -14 0.299805c-2.2998 5.7002 21.7002 15.5 37.5 17.5c15.7002 1.80078 41 0.800781 46 -5.69922c3.7002 -5.10059 0 -27.1006 -6.5 -43.1006z\" />\n    <glyph glyph-name=\"houzz\" unicode=\"&#xf27c;\" \nd=\"M275.9 117.3h-104.601v-149.3h-154.3v448h109.5v-104.5l305.1 -85.5996v-257.9h-155.699v149.3z\" />\n    <glyph glyph-name=\"vimeo-v\" unicode=\"&#xf27d;\" \nd=\"M447.8 294.4c-2 -43.6006 -32.3994 -103.301 -91.3994 -179.101c-60.9004 -79.2002 -112.4 -118.8 -154.601 -118.8c-26.0996 0 -48.2002 24.0996 -66.2998 72.2998c-35.2002 129.2 -50.2002 204.9 -79.2998 204.9c-3.40039 0 -15.1006 -7.10059 -35.2002 -21.1006\nl-21 27.2002c51.5996 45.2998 100.9 95.7002 131.8 98.5c34.9004 3.40039 56.2998 -20.5 64.4004 -71.5c28.7002 -181.5 41.3994 -208.899 93.5996 -126.7c18.7002 29.6006 28.7998 52.1006 30.2002 67.6006c4.7998 45.8994 -35.7998 42.7998 -63.2998 31\nc22 72.0996 64.0996 107.1 126.2 105.1c45.7998 -1.2002 67.5 -31.0996 64.8994 -89.3994z\" />\n    <glyph glyph-name=\"black-tie\" unicode=\"&#xf27e;\" \nd=\"M0 416h448v-448h-448v448zM316.5 90.7998l-64.5 184l64.4004 86.6006h-184.9l64.5 -86.6006l-64.5 -184l92.5 -88.7002z\" />\n    <glyph glyph-name=\"fonticons\" unicode=\"&#xf280;\" \nd=\"M0 416h448v-448h-448v448zM187 275.1c11.9004 0 16.5996 -4.2998 16.2998 -23l50.7002 6.10059c0 44.5996 -30.5996 52.7998 -64.7002 52.7998c-50.7998 0 -77.2998 -20.4004 -77.2998 -70v-21h-28v-37.4004h22.2002c2.89941 0 5.7998 0 5.7998 -2.2998v-111.399\nc0 -5.60059 -1.5 -7.30078 -6.7002 -7.90039l-21.2998 -2v-25.7002h130.7v25.1006l-43.5 4.09961c-5.2002 0.599609 -3.2002 1.5 -3.2002 7.2998v112.9h55.7002l11.0996 37.2998h-67.3994c-2.90039 0 0.599609 2 0.599609 4.40039v23.2998\nc0 17.5 0.599609 27.3994 19 27.3994zM261.3 33.2998h102.601v25.1006l-15.7002 2.59961c-5.5 0.900391 -2.90039 1.5 -2.90039 7.2998v151.7h-80.2002l-6.69922 -29.5l24.1992 -6.40039c3.80078 -1.19922 6.7002 -3.7998 6.7002 -7.89941v-107.9\nc0 -5.59961 -2.39941 -6.7002 -7.59961 -7.2998l-20.4004 -2.59961v-25.1006zM342.1 288.8l21.9004 24.2002l-3.5 9.59961h-27.7002l-15.5 28h-9.2998l-15.5 -28h-27.7002l-3.5 -9.59961l21.7998 -24.2002l-9 -33.2002l7.30078 -7.2998l31.1992 16.6006l31.2002 -16.6006\nl7.2998 7.2998z\" />\n    <glyph glyph-name=\"reddit-alien\" unicode=\"&#xf281;\" horiz-adv-x=\"512\" \nd=\"M440.3 244.5c55.2998 0 73.7002 -74.0996 23.7998 -99.7002c2.2002 -7.89941 3.10059 -16.7002 3.10059 -25.0996c0 -83.7998 -94.4004 -151.7 -210.8 -151.7c-115.9 0 -210.301 67.9004 -210.301 151.7c0 8.39941 0.800781 16.7998 2.60059 24.7002\nc-50.9004 25.5 -32.7002 100.1 22.8994 100.1c15 0 28.7002 -6.2002 38.4004 -16.2998c35.7998 24.7002 83.4004 40.5996 136.3 42.7998l30.4004 137.6c1.2998 4.90039 6.09961 8.40039 11 7.10059l97.3994 -21.6006c6.60059 12.7002 19.9004 22 35.3008 22\nc22.0996 0 39.6992 -18.0996 39.6992 -39.6992c0 -21.6006 -17.6992 -39.7002 -39.6992 -39.7002c-21.6006 0 -39.2002 17.5996 -39.2002 39.2002l-88.2002 19.7998l-27.7002 -124.8c53.2998 -1.7002 101.4 -17.6006 137.101 -42.3008\nc9.69922 9.7002 22.8994 15.9004 37.8994 15.9004zM129.4 139.1c0 -21.5996 17.6992 -39.2998 39.6992 -39.1992c21.6006 0 39.2002 17.5996 39.2002 39.1992c0 22.1006 -17.5996 39.7002 -39.2002 39.7002c-22.0996 0 -39.6992 -17.7002 -39.6992 -39.7002zM343.7 45.5996\nc4 3.5 4 9.7002 -0.100586 13.7002c-3.5 3.5 -9.69922 3.5 -13.1992 0c-29 -29 -121.2 -28.5 -149 0c-3.5 3.5 -9.7002 3.5 -13.2002 0c-4 -4 -4 -10.2002 0 -13.7002c36.3994 -36.3994 139.1 -36.3994 175.5 0zM342.9 99.7998c22 0 39.5996 17.7002 39.6992 39.2002\nc0 22.0996 -17.6992 39.7002 -39.6992 39.7002c-21.6006 0 -39.2002 -17.7002 -39.2002 -39.7002c0 -21.5996 17.5996 -39.2002 39.2002 -39.2002z\" />\n    <glyph glyph-name=\"edge\" unicode=\"&#xf282;\" horiz-adv-x=\"512\" \nd=\"M25.7139 219.837c0.111328 0.162109 0.230469 0.323242 0.341797 0.485352c-0.0205078 -0.162109 -0.0449219 -0.323242 -0.0644531 -0.485352h-0.277344zM486.286 204.329l0.000976562 -52.0645h-314.073c1.38379 -128.497 191.392 -124.065 272.255 -67.5713v-104.404\nc-47.3555 -28.5244 -156.774 -53.1709 -240.132 -21.3242c-70.6191 27.1406 -119.913 100.528 -120.743 171.977c-1.10742 92.2188 45.6943 153.422 120.742 188.314c-15.7852 -19.9395 -27.9697 -41.54 -34.3389 -78.9258h175.853\nc10.2471 104.957 -99.4189 104.957 -99.4189 104.957c-103.302 -3.58984 -177.945 -63.6543 -220.375 -124.966c14.5615 114.465 92.9062 219.955 232.837 219.678c85.0195 0 157.605 -39.8779 198.593 -113.265c21.0469 -37.9404 28.8008 -78.373 28.8008 -122.405z\" />\n    <glyph glyph-name=\"codiepie\" unicode=\"&#xf284;\" horiz-adv-x=\"472\" \nd=\"M422.5 245.1c30.7002 0 33.5 -53.0996 -0.299805 -53.0996h-10.7998v-44.2998h-26.6006v97.3994h37.7002zM472 95.4004c-42.0996 -91.9004 -121.6 -151.4 -224 -151.4c-137 0 -248 111 -248 248s111 248 248 248c97.4004 0 172.8 -53.7002 218.2 -138.4l-186 -108.8z\nM433.5 82.9004l-60.2998 30.6992c-27.1006 -44.2998 -70.4004 -71.3994 -122.4 -71.3994c-82.5 0 -149.2 66.7002 -149.2 148.899c0 82.5 66.7002 149.2 149.2 149.2c48.4004 0 88.9004 -23.5 116.9 -63.3994l59.5 34.5996c-40.7002 62.5996 -104.7 100 -179.2 100\nc-121.2 0 -219.5 -98.2998 -219.5 -219.5s98.2998 -219.5 219.5 -219.5c78.5996 0 146.5 42.0996 185.5 110.4z\" />\n    <glyph glyph-name=\"modx\" unicode=\"&#xf285;\" \nd=\"M356 206.2l36.7002 -23.7002v-214.5l-133 83.7998zM440 373l-83.2002 -134.3l-153.5 96.5l23 37.7998h213.7zM351 230.2l-249.8 -57.7002l-46 29v214.5zM97 153.8l249.7 57.7002l-125 -200.5h-213.7z\" />\n    <glyph glyph-name=\"fort-awesome\" unicode=\"&#xf286;\" horiz-adv-x=\"512\" \nd=\"M489.2 160.1c2.59961 0 4.59961 -2 4.5 -4.59961v-219.5h-182.9v96c0 72.5996 -109.7 72.5996 -109.7 0v-96h-182.899v219.5c0 2.59961 2 4.59961 4.59961 4.59961h27.4004c2.59961 0 4.59961 -2 4.59961 -4.59961v-32h36.6006v178.3\nc0 2.60059 2 4.60059 4.59961 4.60059h27.4004c2.59961 0 4.59961 -2 4.59961 -4.60059v-32h36.2998v32c0 2.60059 2 4.60059 4.60059 4.60059h27.3994c2.60059 0 4.60059 -2 4.60059 -4.60059v-32h36.5996v32c0 6 8 4.60059 11.7002 4.60059v111.699\nc-5.40039 2.60059 -9.10059 8.30078 -9.10059 14.3008c0 20.7998 31.4004 20.6992 31.4004 0c0 -6 -3.7002 -11.7002 -9.09961 -14.3008v-4.89941c7.69922 1.7998 15.6992 2.89941 23.6992 2.89941c11.7002 0 22.9004 -4.2998 32.6006 -4.2998\nc8.89941 0 18.8994 4.2998 24 4.2998c2.59961 0 4.59961 -2 4.59961 -4.59961v-60c0 -6.90039 -23.0996 -8 -27.7002 -8c-10.5 0 -20.5 4.2998 -31.3994 4.2998c-8.60059 0 -17.4004 -1.39941 -25.7002 -3.39941v-38c3.7002 0 11.7002 1.39941 11.7002 -4.60059v-32h36.5996\nv32c0 2.60059 2 4.60059 4.60059 4.60059h27.3994c2.60059 0 4.60059 -2 4.60059 -4.60059v-32h36.5996v32c0 2.60059 2 4.60059 4.59961 4.60059h27.4004c2.59961 0 4.59961 -2 4.59961 -4.60059v-178.3h36.6006v32c0 2.59961 2 4.59961 4.59961 4.59961h27.4004z\nM201.1 164.6v64c0 2.60059 -2 4.60059 -4.59961 4.60059h-27.4004c-2.59961 0 -4.59961 -2 -4.59961 -4.60059v-64c0 -2.59961 2 -4.59961 4.59961 -4.59961h27.4004c2.59961 0 4.59961 2 4.59961 4.59961zM347.5 164.6v64c0 2.60059 -2 4.60059 -4.59961 4.60059h-27.4004\nc-2.59961 0 -4.59961 -2 -4.59961 -4.60059v-64c0 -2.59961 2 -4.59961 4.59961 -4.59961h27.4004c2.59961 0 4.59961 2 4.59961 4.59961z\" />\n    <glyph glyph-name=\"usb\" unicode=\"&#xf287;\" horiz-adv-x=\"640\" \nd=\"M641.5 192c0 -3.09961 -1.7002 -6.09961 -4.5 -7.5l-89.0996 -53.5c-1.40039 -0.799805 -2.80078 -1.40039 -4.5 -1.40039c-1.40039 0 -3.10059 0.300781 -4.5 1.10059c-2.80078 1.7002 -4.5 4.5 -4.5 7.7998v35.5996h-238.7\nc25.2998 -39.5996 40.5 -106.899 69.5996 -106.899h26.7002v26.7998c0 5 3.90039 8.90039 8.90039 8.90039h89.0996c5 0 8.90039 -3.90039 8.90039 -8.90039v-89.0996c0 -5 -3.90039 -8.90039 -8.90039 -8.90039h-89.0996c-5 0 -8.90039 3.90039 -8.90039 8.90039v26.6992\nh-26.7002c-75.3994 0 -81.0996 142.5 -124.7 142.5h-100.3c-8.09961 -30.5996 -35.8994 -53.5 -69 -53.5c-39.2998 0.100586 -71.2998 32.1006 -71.2998 71.4004s32 71.2998 71.2998 71.2998c33.1006 0 61 -22.7998 69 -53.5c39.1006 0 43.9004 -9.5 74.6006 60.4004\nc40.0996 89.0996 58.0996 82.0996 108.899 82.0996c7.5 20.9004 27 35.6006 50.4004 35.6006c29.5 0 53.5 -23.9004 53.5 -53.5c0 -29.6006 -23.9004 -53.5 -53.5 -53.5c-23.4004 0 -42.9004 14.7998 -50.4004 35.5996h-29.7998\nc-29.0996 0 -44.2998 -67.4004 -69.5996 -106.9h310.1v35.6006c0 3.2998 1.7002 6.09961 4.5 7.7998s6.40039 1.40039 8.90039 -0.299805l89.0996 -53.5c2.7998 -1.10059 4.5 -4.10059 4.5 -7.2002z\" />\n    <glyph glyph-name=\"product-hunt\" unicode=\"&#xf288;\" horiz-adv-x=\"512\" \nd=\"M326.3 229.2c0 -20.5 -16.7002 -37.2002 -37.2002 -37.2002h-70.2998v74.4004h70.2998c20.5 0 37.2002 -16.7002 37.2002 -37.2002zM504 192c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248s248 -111 248 -248zM375.9 229.2\nc0 47.8994 -38.9004 86.7998 -86.8008 86.7998h-119.899v-248h49.5996v74.4004h70.2998c47.9004 0 86.8008 38.8994 86.8008 86.7998z\" />\n    <glyph glyph-name=\"mixcloud\" unicode=\"&#xf289;\" horiz-adv-x=\"640\" \nd=\"M424.43 228.271c42.3623 -9.1377 74.4805 -47.0693 74.4805 -92.2002c0 -52.3311 -42.6406 -94.6934 -94.9688 -94.6934h-289.614c-62.5752 0 -113.243 50.668 -113.243 112.966c0 56.7598 42.085 103.554 96.6299 111.582\nc22.9814 67.5586 86.9395 114.074 159.205 114.074c87.2158 0 159.205 -66.7266 167.511 -151.729zM403.941 83.7412c29.0713 0 52.6064 23.5352 52.6064 52.3301c0 22.1494 -14.1211 40.9766 -33.502 48.4531c-1.38477 -8.58301 -3.59961 -17.166 -6.36914 -25.4727\nc-8.01367 -25.6484 -49.0898 -14.2266 -40.1465 13.29c4.15332 12.7373 6.36914 26.0264 6.36914 39.5938c0 69.2197 -56.4834 125.702 -125.979 125.702c-49.8379 0 -94.6934 -29.626 -114.628 -73.9258c19.3809 -4.98438 37.3779 -14.9512 52.0527 -29.3486\nc19.9531 -19.9531 -10.2168 -50.1436 -30.1797 -30.1807c-13.29 13.291 -31.0107 20.7666 -49.8379 20.7666c-39.04 0 -70.8809 -31.5645 -70.8809 -70.6045s31.8408 -70.6035 70.8809 -70.6035h289.614zM639.01 136.071c0 -44.0244 -12.7363 -86.3867 -37.1016 -122.657\nc-4.15332 -6.0918 -10.7979 -9.41406 -17.7197 -9.41406c-16.3174 0 -27.1279 18.8262 -17.4434 32.9492c19.3809 29.3486 29.9033 63.6816 29.9033 99.1221c0 35.4395 -10.5215 69.7725 -29.9033 98.8447c-15.6553 22.8311 19.3613 47.2402 35.1631 23.5342\nc24.3662 -35.9932 37.1016 -78.3564 37.1016 -122.379zM568.13 136.071c0 -31.5654 -9.13672 -62.0215 -26.8564 -88.3252c-4.15332 -6.09082 -10.7988 -9.13574 -17.7207 -9.13574c-17.2012 0 -27.0215 18.9785 -17.4424 32.9473\nc13.0127 19.1045 19.6572 41.2559 19.6572 64.5137c0 22.9805 -6.64453 45.4072 -19.6572 64.5117c-15.7617 22.9863 19.0078 47.0947 35.1631 23.5352c17.7188 -26.0264 26.8564 -56.4834 26.8564 -88.0469z\" />\n    <glyph glyph-name=\"scribd\" unicode=\"&#xf28a;\" horiz-adv-x=\"384\" \nd=\"M42.2998 195.3c-16.0996 19 -24.7002 45.9004 -24.7998 79.9004c0 100.399 75.2002 153.1 167.2 153.1c98.5996 1.60059 156.8 -49 184.3 -70.5996l-50.5 -72.1006l-37.2998 24.6006l26.8994 38.5996c-36.5 24 -79.3994 36.5 -123 35.7998\nc-50.6992 0.800781 -111.699 -27.1992 -111.699 -76.1992c0 -18.7002 11.1992 -20.7002 28.5996 -15.6006c23.2998 5.2998 41.9004 -0.599609 55.7998 -14c26.4004 -24.2998 23.2002 -67.5996 -0.700195 -91.8994c-29.1992 -29.5 -85.1992 -27.3008 -114.8 8.39941z\nM360 189.4c33.9004 -40.4004 36.7998 -138.2 -20.2998 -189.601c-39.2002 -33.5996 -82.2002 -44.0996 -133.601 -44.0996c-70.2998 -0.299805 -138.199 25.3994 -190.699 72.2002l-15.4004 13.7998l60.7998 71.7998l35.6006 -27.4004l-33.7002 -39.3994\nc41.7002 -30.9004 92.2002 -47.5 144.1 -47.2998c61.9004 0 104.7 23.5 121.4 64.3994c0.899414 4.2002 1.39941 8.40039 1.39941 12.7002c0 18.7002 -11.1992 20.7002 -28.5996 15.5996c-23.2998 -5.2998 -42.2002 0.5 -56.2998 14.4004\nc-12.4004 11.2998 -19.1006 27.5 -18.4004 44.2998c-0.599609 39.2002 32.4004 69.2002 70.5 67.2002c24.2998 0.799805 47.7002 -9.7998 63.2002 -28.5996z\" />\n    <glyph glyph-name=\"bluetooth\" unicode=\"&#xf293;\" \nd=\"M292.6 276.9l-42.8994 -42.9004l-0.299805 86zM249.4 57.0996l0.199219 86l42.9004 -42.8994zM416 188.6c0 -205.6 -71.9004 -252.6 -185.1 -252.6c-113.2 0 -198.9 47 -198.9 252.6c0 205.601 83.4004 259.4 196.6 259.4c113.2 0 187.4 -53.9004 187.4 -259.4z\nM257.5 188.6l79.4004 88.6006l-125.101 134.3v-176.9l-73.7998 73.8008l-27 -26.9004l92.7002 -93l-92.7002 -93l26.9004 -26.9004l73.7998 73.8008l2.2998 -170l127.4 127.5z\" />\n    <glyph glyph-name=\"bluetooth-b\" unicode=\"&#xf294;\" horiz-adv-x=\"320\" \nd=\"M196.48 187.977l97.9111 -103.333l-148.552 -148.644l-2.71484 198.284l-86.1113 -86.1113l-31.4053 31.4053l108.061 108.398l-108.061 108.399l31.4053 31.4053l86.1113 -86.1113v206.33l145.981 -156.69zM237.34 290.973l-50.3145 50.3174l0.337891 -100.295z\nM187.363 134.96l-0.337891 -100.294l50.3145 50.3164z\" />\n    <glyph glyph-name=\"gitlab\" unicode=\"&#xf296;\" horiz-adv-x=\"512\" \nd=\"M105.2 423.1c0 0 56.5 -174.8 56.5996 -174.8h-132l56.5 174.8c3.2002 8.90039 15.7998 8.90039 18.9004 0zM0.900391 160.3l28.7998 88l226.2 -294l-247.9 184c-6.7998 5.10059 -9.7002 14 -7.09961 22zM161.7 248.3h188.6l-94.2998 -294zM511.1 160.3\nc2.5 -8 -0.299805 -16.8994 -7.19922 -22l-247.9 -184l226.3 294zM425.7 423.1l56.5 -174.8h-132l56.5996 174.8c3.2002 8.90039 15.7998 8.90039 18.9004 0z\" />\n    <glyph glyph-name=\"wpbeginner\" unicode=\"&#xf297;\" horiz-adv-x=\"512\" \nd=\"M462.799 125.626c56.2109 -64.3076 4.16211 -157.626 -91.8545 -157.626c-39.6025 0 -78.8242 17.6865 -100.143 50.04c-6.88672 -0.356445 -22.7021 -0.356445 -29.5898 0c-21.3643 -32.4209 -60.624 -50.04 -100.143 -50.04\nc-95.4902 0 -148.349 92.9961 -91.8555 157.626c-79.1387 131.851 31.2646 290.374 206.792 290.374c175.632 0 285.87 -158.626 206.793 -290.374zM123.152 208.598h41.5283v58.0752h-41.5283v-58.0752zM340.332 122.526v23.8389\nc-60.5059 -20.915 -132.355 -9.19824 -187.589 33.9707l0.246094 -24.8965c51.1006 -46.3672 131.746 -57.875 187.343 -32.9131zM189.579 208.598h166.058v58.0752h-166.058v-58.0752z\" />\n    <glyph glyph-name=\"wpforms\" unicode=\"&#xf298;\" \nd=\"M448 372.8v-361.7c0 -24.2998 -19 -43.1992 -43.2002 -43.1992h-361.6c-23.9004 0.0996094 -43.2002 18.6992 -43.2002 43.2998v361.6c0 24.1006 18.7998 43.2002 43.2002 43.2002h361.7c24 0 43.0996 -18.7998 43.0996 -43.2002zM410.7 11.2002v361.6\nc0 3 -2.60059 5.7998 -5.7998 5.7998h-9.30078l-110.3 -74.5996l-61.2998 49.9004l-61.2002 -49.9004l-110.3 74.7002h-9.2998c-3.2002 0 -5.7998 -2.7998 -5.7998 -5.7998v-361.7c0 -3 2.59961 -5.7998 5.7998 -5.7998h361.7\nc3.19922 -0.100586 5.7998 2.69922 5.7998 5.7998zM150.2 262v-37h-73.5v37h73.5zM150.2 187.6v-37.2998h-73.5v37.2998h73.5zM161.3 334.9l54 43.6992h-118.5zM371.3 262v-37h-196v37h196zM371.3 187.6v-37.2998h-196v37.2998h196zM286.7 334.9l64.5 43.6992h-118.4z\nM371.3 113v-37.2998h-99.3994v37.2998h99.3994z\" />\n    <glyph glyph-name=\"envira\" unicode=\"&#xf299;\" \nd=\"M0 416c477.6 0 366.6 -317.3 367.1 -366.3l80.9004 -81.7002h-26l-70.4004 71.2002c-39 -4.2002 -124.399 -34.5 -214.399 37c-90.2002 71.5 -85.2002 157.1 -137.2 339.8zM79.7002 370c-49.7002 23.5 -5.2002 -9.2002 -5.2002 -9.2002\nc45.2002 -31.2002 66 -73.7002 90.2002 -119.899c31.5 -60.2002 79 -139.7 144.2 -167.7c65 -28 34.1992 -12.5 6 8.5c-28.2002 21.2002 -68.2002 87 -91 130.2c-31.7002 60 -61 118.6 -144.2 158.1z\" />\n    <glyph glyph-name=\"glide\" unicode=\"&#xf2a5;\" \nd=\"M252.8 299.4c0 -8.80078 -1.59961 -17.7002 -3.39941 -26.4004c-5.80078 -27.7998 -11.6006 -55.7998 -17.3008 -83.5996c-1.39941 -6.30078 -8.2998 -4.90039 -13.6992 -4.90039c-23.8008 0 -30.5 26 -30.5 45.5c0 29.2998 11.1992 68.0996 38.5 83.0996\nc4.2998 2.5 9.19922 4.2002 14.0996 4.2002c11.4004 0 12.2998 -8.2998 12.2998 -17.8994zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM384 181c0 5.09961 -20.7998 37.7002 -25.5 39.5\nc-2.2002 0.900391 -7.2002 2.2998 -9.59961 2.2998c-23.1006 0 -38.7002 -10.5 -58.2002 -21.5l-0.5 0.5c4.2998 29.4004 14.5996 57.2002 14.5996 87.4004c0 44.5996 -23.7998 62.7002 -67.5 62.7002c-71.7002 0 -108 -70.8008 -108 -123.5c0 -54.7002 32 -85 86.2998 -85\nc7.5 0 6.90039 0.599609 6.90039 -2.30078c-10.5 -80.2998 -56.5 -82.8994 -56.5 -58.8994c0 24.3994 28 36.5 28.2998 38c-0.200195 7.59961 -29.2998 17.2002 -36.7002 17.2002c-21.0996 0 -32.6992 -33 -32.6992 -50.6006c0 -32.2998 20.3994 -54.7002 53.2998 -54.7002\nc48.2002 0 83.3994 49.7002 94.2998 91.7002c9.40039 37.7002 7 39.4004 12.2998 42.1006c20 10.0996 35.7998 16.7998 58.4004 16.7998c11.0996 0 19 -2.2998 36.7002 -5.2002c1.7998 -0.0996094 4.09961 1.7002 4.09961 3.5z\" />\n    <glyph glyph-name=\"glide-g\" unicode=\"&#xf2a6;\" \nd=\"M407.1 236.8c7.5 -2.89941 40.9004 -55.3994 40.9004 -63.3994c0 -2.90039 -3.7998 -5.80078 -6.7002 -5.80078c-28.3994 4.7002 -41.0996 8.40039 -58.8994 8.40039c-36.3008 0 -61.6006 -10.7998 -93.8008 -27c-8.5 -4.2998 -4.59961 -7.09961 -19.6992 -67.5996\nc-17.4004 -67.6006 -74 -145.4 -151.4 -145.4c-52.7002 0 -85.5 36 -85.5 87.9004c0 28.0996 18.5 79.1992 52.4004 79.2998c11.8994 0 58.5996 -15.4004 58.8994 -27.6006c-0.5 -2.39941 -45.5 -21.7998 -45.5 -61c0 -38.5 73.9004 -34.2998 90.7998 94.6006\nc0 4.7998 1 3.7998 -11 3.7998c-87.2998 0 -138.6 48.7002 -138.6 136.6c0 84.7002 58.2998 198.4 173.4 198.4c70.1992 0 108.399 -29.0996 108.399 -100.6c0 -48.5 -16.5 -93.1006 -23.5 -140.4l0.900391 -0.900391c31.2998 17.7002 56.3994 34.5 93.5 34.5\nc3.7998 0 11.8994 -2.39941 15.3994 -3.7998zM231.8 321.2c2.90039 13.8994 5.5 28.0996 5.60059 42.3994c0 15.4004 -1.40039 28.7002 -20 28.7002c-7.80078 0 -15.6006 -2.59961 -22.6006 -6.7002c-43.7998 -24.0996 -61.7998 -86.3994 -61.7998 -133.399\nc0 -31.2998 10.7002 -73.1006 49 -73.1006c8.7002 0 19.7002 -2.39941 22 7.80078c9.2002 44.6992 18.5 89.5996 27.7998 134.3z\" />\n    <glyph glyph-name=\"viadeo\" unicode=\"&#xf2a9;\" \nd=\"M276.2 297.5v-0.700195c-17.9004 52.6006 -42.6006 103.4 -70.7998 151.2c43.2998 -29.2002 67 -100 70.7998 -150.5zM308.9 175.8c15.0996 3.10059 29.5 9 42.1992 17c24.5 -58.5996 20.2002 -139.7 -36.3994 -201c-67.7998 -73.8994 -191.9 -74.5996 -259.8 0\nc-108.801 117.8 -31.6006 313.7 129.899 313.7c21.2998 0 42.6006 -3.5 62.5 -10.7002c-6.89941 -13.3994 -11.7002 -28.2002 -13.3994 -43.2998c-15.4004 6.5 -32.3008 9.59961 -49.1006 9.59961c-78 0 -135.399 -66.6992 -135.399 -142.3\nc0 -68.7998 45.5996 -126 111.3 -137.399c98.5 38.3994 116.6 188.199 116.6 280c0 11.6992 0 23.6992 -1 35.3994c12.4004 -36.0996 18.9004 -73.8994 18.9004 -112c0 -86.5 -35.1006 -158.399 -109.3 -205.1l-3.80078 -0.299805\nc80 -1.60059 137.801 61.6992 137.801 139.399c0 19.5 -3.40039 38.7998 -11 57zM418.1 436.3c52 -74 20.9004 -208.6 -58.0996 -208.6c-21.2998 0 -40.2002 11.3994 -55 25.7998c35.0996 19.2998 79.4004 49.2002 99.7002 84.9004\nc2.39941 4.7998 6.5 13.6992 7.2002 19.1992c-19.9004 -44.6992 -70.8008 -79.6992 -118.2 -90.6992c-7.5 11.6992 -12 24.6992 -12 38.7998c0 16.5 8.2002 38.5 20.5996 50.5c34.5 32.8994 84.7998 13.5996 115.8 80.0996z\" />\n    <glyph glyph-name=\"viadeo-square\" unicode=\"&#xf2aa;\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM280.7 66.7998c35.3994 38.2998 38.0996 89 22.7998 125.601c-7.90039 -4.90039 -16.9004 -8.60059 -26.4004 -10.5\nc4.80078 -11.4004 6.90039 -23.5 6.90039 -35.7002c0 -48.6006 -36.2002 -88.2002 -86.2002 -87.2002l2.40039 0.200195c46.3994 29.2002 68.2998 74.0996 68.2998 128.2c0 23.7998 -4.09961 47.5 -11.7998 70v0.399414c-2.2998 31.6006 -17.1006 75.7998 -44.2002 94.1006\nc17.5996 -29.9004 33 -61.6006 44.2002 -94.5c0.599609 -7.30078 0.599609 -14.8008 0.599609 -22.1006c0 -57.3994 -11.3994 -151 -72.8994 -175c-41 7.2002 -69.5 42.9004 -69.5 85.9004c0 47.2002 35.7998 88.8994 84.5996 88.8994c10.5 0 21 -1.89941 30.7002 -6\nc1.09961 9.5 4.09961 18.7002 8.39941 27.1006c-12.5 4.59961 -25.7998 6.7002 -39.0996 6.7002c-101 0 -149.2 -122.5 -81.2002 -196.101c42.4004 -46.5996 120 -46.2002 162.4 0zM309 214.3c49.4004 0 68.7998 84.1006 36.2998 130.3\nc-19.3994 -41.5 -50.7998 -29.5 -72.3994 -50c-7.7002 -7.5 -12.9004 -21.2998 -12.9004 -31.5996c0 -8.7998 2.7998 -17 7.5 -24.2998c29.7002 6.89941 61.4004 28.7998 73.9004 56.7002c-0.400391 -3.40039 -3 -9 -4.5 -12c-12.7002 -22.3008 -40.4004 -41 -62.3008 -53\nc9.30078 -9 21.1006 -16.1006 34.4004 -16.1006z\" />\n    <glyph glyph-name=\"snapchat\" unicode=\"&#xf2ab;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM417.5 101.1c2.2002 5.30078 -0.900391 9.80078 -4.90039 10.8008c-46.2998 7.59961 -67.0996 55.0996 -68 57.0996\nc-0.0996094 0.0996094 -0.0996094 0.200195 -0.199219 0.299805c-2.40039 5 -3 9.2002 -1.60059 12.5c2.60059 6.2998 12.5 9.40039 19 11.5c1.7998 0.600586 3.5 1.10059 4.90039 1.7002c11.5 4.5 17.2998 10.0996 17.2002 16.5996\nc-0.100586 5.10059 -4.10059 9.60059 -10.4004 11.9004c-4 1.59961 -9.59961 1.90039 -13.5996 0c-5.5 -2.59961 -10.4004 -4 -14.7002 -4.2002c-2.7998 0.100586 -4.60059 0.799805 -5.7002 1.40039c1.40039 24 4.7002 58 -3.7998 77.0996\nc-16.2998 36.5 -49.6006 54.2998 -84.2998 54.2998c-0.600586 0 -6.10059 -0.0996094 -6.7002 -0.0996094c-14 0 -61.6006 -4 -84.1006 -54.2998c-8.5 -19.1006 -5.19922 -53.2002 -3.7998 -77.1006c-1.09961 -0.599609 -3.2998 -1.39941 -6.59961 -1.39941\nc-4.5 0 -9.7998 1.39941 -15.7002 4.2002c-7.5 3.5 -20.2998 -1.80078 -21.9004 -10.3008c-1 -4.89941 1.2002 -12.0996 17 -18.2998c6.10059 -2.5 20.6006 -5.2998 24 -13.2002c1.40039 -3.2998 0.900391 -7.5 -1.59961 -12.5\nc-0.0996094 -0.0996094 -0.200195 -0.199219 -0.200195 -0.299805c-0.899414 -2 -21.7002 -49.5 -68 -57.0996c-3.59961 -0.600586 -6.09961 -3.7998 -5.89941 -7.40039c0.699219 -13.8994 31.6992 -19.2998 45.5 -21.3994c1.39941 -1.90039 2.5 -9.90039 4.2998 -16\nc0.799805 -2.7002 2.89941 -6 8.2998 -6s13.2998 3.09961 25.7998 3.09961c17.6006 0 23.6006 -4 37.4004 -13.7002c9.89941 -7 27.5 -19.7998 48.5 -18.2002c20.7998 -0.899414 34.7002 7.90039 49.2002 18.2002c13.6992 9.7002 19.7998 13.7002 37.3994 13.7002\nc13 0 19.6006 -2.90039 25.7998 -2.90039h0.200195c4.40039 0 7 2.2002 8.10059 5.90039c1.7998 6.09961 2.89941 14 4.2998 15.9004c26.7002 4.19922 41.2998 10.0996 44.7998 18.1992z\" />\n    <glyph glyph-name=\"snapchat-ghost\" unicode=\"&#xf2ac;\" horiz-adv-x=\"512\" \nd=\"M510.846 55.3271c-5.21094 -12.1572 -27.2383 -21.0889 -67.3594 -27.3184c-2.06445 -2.78613 -3.77539 -14.6855 -6.50781 -23.9561c-1.625 -5.56543 -5.62207 -8.86914 -12.1279 -8.86914l-0.296875 0.00585938c-9.39453 0 -19.2031 4.32227 -38.8516 4.32227\nc-26.5215 0 -35.6621 -6.04297 -56.2539 -20.5879c-21.832 -15.4375 -42.7715 -28.7637 -74.0273 -27.3984c-31.6455 -2.33398 -58.0244 16.9072 -72.8711 27.4033c-20.7139 14.6436 -29.8281 20.582 -56.2412 20.582c-18.8633 0 -30.7354 -4.71973 -38.8516 -4.71973\nc-8.07324 0 -11.2129 4.92188 -12.4219 9.04004c-2.70312 9.18848 -4.4043 21.2627 -6.52344 24.1299c-20.6787 3.20898 -67.3096 11.3438 -68.498 32.1504c-0.00878906 0.161133 -0.015625 0.422852 -0.015625 0.583984c0 4.97559 3.98438 9.67285 8.89258 10.4844\nc69.583 11.4551 100.925 82.9014 102.228 85.9346c0.0742188 0.175781 0.155273 0.34375 0.237305 0.514648c3.71289 7.53711 4.54395 13.8486 2.46289 18.7529c-5.05078 11.8965 -26.8721 16.1641 -36.0537 19.7959c-23.7148 9.36621 -27.0146 20.1279 -25.6113 27.5039\nc2.43652 12.8359 21.7246 20.7354 33.002 15.4531c8.91895 -4.18066 16.8428 -6.29688 23.5469 -6.29688c5.02148 0 8.21191 1.2041 9.95996 2.1709c-2.04297 35.9365 -7.10156 87.29 5.68652 115.969c33.7734 75.7188 105.356 81.6025 126.478 81.6025\nc0.943359 0 9.14062 0.0888672 10.1094 0.0888672c52.1484 0 102.255 -26.7803 126.724 -81.6426c12.7764 -28.6504 7.74902 -79.792 5.69434 -116.01c1.58203 -0.87207 4.35742 -1.94141 8.59961 -2.13867c6.39648 0.286133 13.8145 2.38867 22.0693 6.25684\nc6.08496 2.84668 14.4053 2.46094 20.4795 -0.0576172l0.0292969 -0.00976562c9.47559 -3.38574 15.4385 -10.2158 15.5889 -17.8701c0.183594 -9.74707 -8.52246 -18.165 -25.8779 -25.0186c-2.11816 -0.834961 -4.69434 -1.6543 -7.43457 -2.52441\nc-9.79688 -3.10645 -24.5996 -7.80566 -28.6152 -17.2715c-2.0791 -4.9043 -1.25684 -11.2109 2.45996 -18.748c0.0869141 -0.167969 0.166016 -0.341797 0.238281 -0.514648c1.30176 -3.03027 32.6152 -74.46 102.23 -85.9346\nc6.42676 -1.05762 11.1631 -7.87695 7.72461 -15.8584z\" />\n    <glyph glyph-name=\"snapchat-square\" unicode=\"&#xf2ad;\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM393.5 101.1c2.2002 5.30078 -0.900391 9.80078 -4.90039 10.8008c-46.2998 7.59961 -67.0996 55.0996 -68 57.0996\nc-0.0996094 0.0996094 -0.0996094 0.200195 -0.199219 0.299805c-2.40039 5 -3 9.2002 -1.60059 12.5c2.60059 6.2998 12.5 9.40039 19 11.5c1.7998 0.600586 3.5 1.10059 4.90039 1.7002c11.5 4.5 17.2998 10.0996 17.2002 16.5996\nc-0.100586 5.10059 -4.10059 9.60059 -10.4004 11.9004c-4 1.59961 -9.59961 1.90039 -13.5996 0c-5.5 -2.59961 -10.4004 -4 -14.7002 -4.2002c-2.7998 0.100586 -4.60059 0.799805 -5.7002 1.40039c1.40039 24 4.7002 58 -3.7998 77.0996\nc-16.2998 36.5 -49.6006 54.2998 -84.2998 54.2998c-0.600586 0 -6.10059 -0.0996094 -6.7002 -0.0996094c-14 0 -61.6006 -4 -84.1006 -54.2998c-8.5 -19.1006 -5.19922 -53.2002 -3.7998 -77.1006c-1.09961 -0.599609 -3.2998 -1.39941 -6.59961 -1.39941\nc-4.5 0 -9.7998 1.39941 -15.7002 4.2002c-7.5 3.5 -20.2998 -1.80078 -21.9004 -10.3008c-1 -4.89941 1.2002 -12.0996 17 -18.2998c6.10059 -2.5 20.6006 -5.2998 24 -13.2002c1.40039 -3.2998 0.900391 -7.5 -1.59961 -12.5\nc-0.0996094 -0.0996094 -0.200195 -0.199219 -0.200195 -0.299805c-0.899414 -2 -21.7002 -49.5 -68 -57.0996c-3.59961 -0.600586 -6.09961 -3.7998 -5.89941 -7.40039c0.699219 -13.8994 31.6992 -19.2998 45.5 -21.3994c1.39941 -1.90039 2.5 -9.90039 4.2998 -16\nc0.799805 -2.7002 2.89941 -6 8.2998 -6s13.2998 3.09961 25.7998 3.09961c17.6006 0 23.6006 -4 37.4004 -13.7002c9.89941 -7 27.5 -19.7998 48.5 -18.2002c20.7998 -0.899414 34.7002 7.90039 49.2002 18.2002c13.6992 9.7002 19.7998 13.7002 37.3994 13.7002\nc13 0 19.6006 -2.90039 25.7998 -2.90039h0.200195c4.40039 0 7 2.2002 8.10059 5.90039c1.7998 6.09961 2.89941 14 4.2998 15.9004c26.7002 4.19922 41.2998 10.0996 44.7998 18.1992z\" />\n    <glyph glyph-name=\"pied-piper\" unicode=\"&#xf2ae;\" \nd=\"M32 29l-32 -60.2002l0.799805 328c0 65.9004 53.2002 119.2 119.2 119.2h327.2c-93 -28.9004 -189.9 -94.2002 -253.9 -168.6c-70.5996 -81.4004 -110.7 -137.4 -161.3 -218.4zM448 416c0 0 0 -328.8 0.0996094 -328.8c0 -65.9004 -53.2998 -119.2 -119.3 -119.2\nh-328.399c18.5 25.5 61.6992 54 84.8994 66c35.5 18.0996 76.4004 28.5 105.3 56.2998c42.1006 40.5 47.8008 105 71 158.601c43.6006 100.3 186.4 167.1 186.4 167.1z\" />\n    <glyph glyph-name=\"first-order\" unicode=\"&#xf2b0;\" \nd=\"M12.9004 218.8c0.0996094 0.100586 0.199219 0.299805 0.299805 0.400391c0 -0.100586 0 -0.299805 -0.100586 -0.400391h-0.199219zM224 351.4c7.40039 0 14.5996 -0.5 21.7002 -1.7002l-4 -67.7002l22.2998 64.2998c14.2998 -3.7998 27.7002 -9.5 40 -16.8994\nl-29.4004 -61.1006l45.1006 50.9004c11.5 -8.90039 21.7002 -19.2002 30.5996 -30.9004l-50.5996 -45.3994l60.8994 29.6992c7.5 -12.2998 12.9004 -26 16.6006 -40.2998l-64 -22.2998l67.7002 4c1.09961 -7.09961 1.39941 -14.5996 1.39941 -22\ns-0.299805 -14.5996 -1.39941 -21.7002l-67.4004 4l64 -22.2998c-3.7002 -14.5996 -9.5 -28 -16.5996 -40.2998l-61.1006 29.3994l50.6006 -45.0996c-8.60059 -11.7998 -18.9004 -22 -30.6006 -30.9004l-44.8994 50.9004l29.3994 -61.2998\nc-12.2998 -7.5 -25.7002 -12.9004 -40 -16.9004l-22.5996 65.1006l4 -68.6006c-7.10059 -1.09961 -14.2998 -1.7002 -21.7002 -1.7002c-7.09961 0 -14.5996 0.600586 -21.7002 1.7002l4 68l-22.2998 -64.5996c-14.2998 3.7998 -27.7002 9.5 -40 16.8994l29.5 61.4004\nl-44.9004 -50.9004c-11.7998 8.60059 -22 19.2002 -30.8994 30.9004l50.8994 45.0996l-61.0996 -29.6992c-7.2002 12.5996 -12.9004 26 -16.5996 40.2998l64 22.5996l-67.7002 -4c-0.799805 7.10059 -1.40039 14.2998 -1.40039 21.7002s0.5 14.9004 1.40039 22l68 -4\nl-64.2998 22.5996c3.69922 14.3008 9.5 27.7002 16.5996 40l61.0996 -29.6992l-50.5996 45.3994c8.90039 11.7998 19.2002 22 30.5996 30.9004l45.1006 -50.9004l-29.4004 61.4004c12.2998 7.2002 25.7002 12.8994 40 16.5996l22 -64l-3.7002 67.4004\nc6.80078 1.09961 14.3008 1.7002 21.4004 1.7002zM443.4 320v-256l-219.4 -128l-219.4 128v256l219.4 128zM426.3 309.7l-202.3 117.399l-202.3 -117.399v-235.101l202.3 -117.699l202.3 117.699v235.101zM224 410.9l187.7 -109.4v-218.9l-187.7 -109.5l-187.7 109.5\nv218.801zM224 360c-92.2998 0 -166.9 -75.0996 -166.9 -168c0 -92.5996 74.6006 -167.7 166.9 -167.7c92 0 166.9 75.1006 166.9 167.7c0 92.9004 -74.9004 168 -166.9 168z\" />\n    <glyph glyph-name=\"yoast\" unicode=\"&#xf2b1;\" \nd=\"M91.2998 372h186l-7 -18.9004h-179c-39.7002 0 -71.8994 -31.5996 -71.8994 -70.2998v-205.399c0 -35.4004 24.8994 -70.3008 84 -70.3008v-19.0996h-12.1006c-50.0996 0 -91.2998 40.2002 -91.2998 89.5v205.3c0 49.2998 40.7002 89.2002 91.2998 89.2002zM320.4 428\nh66.5c-143.801 -378.1 -145.7 -398.9 -184.7 -439.3c-20.7998 -21.6006 -49.2998 -31.7002 -78.2998 -32.7002v51.0996c49.1992 7.7002 64.5996 49.9004 64.5996 75.3008c0 20.0996 0.599609 12.5996 -82.0996 223.199h61.3994l50.4004 -156.6zM448 286.5v-298.5h-214\nc6.59961 9.59961 10.7002 16.2998 12.0996 19.4004h182.5v279.1c0 32.5 -17.0996 51.9004 -48.1992 62.9004l6.69922 17.5996c41.7002 -13.5996 60.9004 -43.0996 60.9004 -80.5z\" />\n    <glyph glyph-name=\"themeisle\" unicode=\"&#xf2b2;\" horiz-adv-x=\"512\" \nd=\"M208 359.714c0 10 6.28613 21.7139 17.7148 21.7139c11.1426 0 17.7139 -11.7139 17.7139 -21.7139c0 -10.2852 -6.57129 -21.7139 -17.7139 -21.7139c-11.4287 0 -17.7148 11.4287 -17.7148 21.7139zM512 199.714c0 -36.001 -11.4287 -102.286 -36.2861 -129.714\nc-22.8574 -24.8584 -87.4277 -61.1426 -120.856 -70.5723l-1.14355 -0.286133v-32.5703c0 -16.2861 -12.5723 -30.5713 -29.1426 -30.5713c-10 0 -19.4297 5.71387 -24.5723 14.2861c-5.42676 -8.57227 -14.8564 -14.2861 -24.8564 -14.2861\ns-19.4287 5.71387 -24.8574 14.2861c-5.14258 -8.57227 -14.5713 -14.2861 -24.5703 -14.2861c-10.2861 0 -19.4287 5.71387 -24.8574 14.2861c-5.14355 -8.57227 -14.5713 -14.2861 -24.5713 -14.2861c-18.8574 0 -29.4287 15.7139 -29.4287 32.8574\nc-16.2861 -12.2852 -35.7158 -19.4287 -56.5713 -19.4287c-22 0 -43.4287 8.28516 -60.2861 22.8574c10.2852 0.286133 20.5713 2.28613 30.2852 5.71387c-20.8574 5.71387 -39.4277 18.8574 -52 36.2861c21.3701 -4.64551 46.209 -1.67285 67.1426 11.1426\nc-22 22 -56.5703 58.8574 -68.5713 87.4287c-5.71387 13.4287 -6.85645 31.4287 -6.85645 45.7139c0 49.7139 20.2861 160 86.2861 160c10.5713 0 18.8564 -4.8584 23.1426 -14.8574c3.0498 4.46289 8.42578 11.374 12 15.4277c2 2.57227 5.71387 5.42969 7.14355 8.28613\nc7.99902 12.5713 11.7139 21.1426 21.7139 34c32.2852 41.1445 81.7139 69.4297 134.856 69.4297c6 0 12 -0.285156 17.7148 -1.14355c10.8564 11.7148 26 18.2861 41.7148 18.2861c14.5703 0 29.7139 -6 40 -16.2861c0.856445 -0.857422 1.42773 -2.28613 1.42773 -3.42773\nc0 -3.71387 -10.2852 -13.4287 -12.8574 -16.2861c4.28613 -1.42871 15.7148 -6.8584 15.7148 -12c0 -2.85742 -2.85742 -5.14258 -4.57129 -7.14258c31.4287 -27.7148 49.4287 -67.1436 56.2861 -108c4.28613 5.14258 10.2852 8.57129 17.1426 8.57129\nc10.5713 0 20.8574 -7.14355 28.5713 -14.001c20.8564 -18.5703 25.7139 -53.1416 25.7139 -79.7139zM188 358.572c0 -18.2861 12.5713 -37.1436 32.2861 -37.1436c19.7139 0 32.2852 18.8574 32.2852 37.1436c0 18 -12.5713 36.8564 -32.2852 36.8564\nc-19.7148 0 -32.2861 -18.8574 -32.2861 -36.8564zM237.714 254c0 19.7139 3.71387 39.1426 8.57129 58.2861c-52.0391 -79.5342 -13.5312 -184.571 68.8574 -184.571c21.4287 0 42.5713 7.71387 60 20c2 7.42871 3.71484 14.8574 3.71484 22.5723\nc0 14.2861 -6.28613 21.4277 -20.5723 21.4277c-4.57129 0 -9.14355 -0.856445 -13.4287 -1.71387c-63.3438 -12.668 -107.143 -3.66895 -107.143 63.999zM196.572 -0.858398c0 11.1436 -8.8584 20.8574 -20.2861 20.8574c-11.4287 0 -20 -9.71484 -20 -20.8574v-32.5703\nc0 -11.1436 8.57129 -21.1426 20 -21.1426c11.4277 0 20.2861 9.71484 20.2861 21.1426v32.5703zM245.715 -0.858398c0 11.1436 -8.57227 20.8574 -20 20.8574c-11.4287 0 -20.2861 -9.71484 -20.2861 -20.8574v-32.5703c0 -11.1436 8.85742 -21.1426 20.2861 -21.1426\nc11.4277 0 20 10 20 21.1426v32.5703zM295.428 -0.858398c0 11.1436 -8.85645 20.8574 -20.2852 20.8574s-20.2852 -9.71484 -20.2852 -20.8574v-32.5703c0 -11.1436 8.85645 -21.1426 20.2852 -21.1426s20.2852 9.71484 20.2852 21.1426v32.5703zM345.143 -0.858398\nc0 11.1436 -8.85645 20.8574 -20.2852 20.8574s-20.2861 -9.71484 -20.2861 -20.8574v-32.5703c0 -11.1436 8.85742 -21.1426 20.2861 -21.1426s20.2852 10 20.2852 21.1426v32.5703zM421.714 162c-30.8564 -59.1416 -90.2852 -102.572 -158.571 -102.572\nc-96.5703 0 -160.57 84.5723 -160.57 176.572c0 16.8574 2 33.4287 6 49.7139c-20 -33.7148 -29.7139 -72.5723 -29.7139 -111.429c0 -60.2861 24.8564 -121.715 71.4287 -160.857c5.14258 9.71387 14.8564 16.2861 26 16.2861c10 0 19.4277 -5.71387 24.5713 -14.2861\nc5.42871 8.57129 14.5703 14.2861 24.8574 14.2861c10 0 19.4277 -5.71387 24.5713 -14.2861c5.42871 8.57129 14.8564 14.2861 24.8574 14.2861c10 0 19.4287 -5.71387 24.8574 -14.2861c5.14258 8.57129 14.5713 14.2861 24.5723 14.2861\nc10.8564 0 20.8564 -6.57227 25.7139 -16c43.4268 36.2861 68.5693 92 71.4258 148.286zM432.286 261.714c0 53.7139 -34.5713 105.714 -92.5723 105.714c-30.2852 0 -58.5713 -15.1426 -78.8564 -36.8564c-19.9951 -66.3828 -27.4473 -136.571 41.4287 -136.571\nc28.8047 0 97.3564 28.5381 84.2861 -36.8574c28.8564 26 45.7139 65.7148 45.7139 104.571z\" />\n    <glyph glyph-name=\"google-plus\" unicode=\"&#xf2b3;\" horiz-adv-x=\"496\" \nd=\"M248 440c136.9 0 248 -111.1 248 -248s-111.1 -248 -248 -248s-248 111.1 -248 248s111.1 248 248 248zM177.3 68c71.2998 0 118.8 50.4004 118.8 121.2c0 7.09961 -0.599609 13.8994 -1.89941 20.7002h-116.9v-42.6006h70.1006\nc-5.2002 -34.2002 -37.5 -53.2998 -70.1006 -53.2998c-43 0 -77.2002 35.5 -77.2002 78.0996c0 42.6006 34.3008 78.1006 77.2002 78.1006c18.1006 0 36.2002 -6.2002 49.4004 -19.1006l33.5996 32.6006c-22.8994 21.2998 -51.7002 32.2998 -83 32.2998\nc-68.7998 0 -124 -55.5 -124 -124s55.2002 -124 124 -124zM407.5 174.2h35.2002v35.5h-35.2002v35.5h-35.5v-35.5h-35.5v-35.5h35.5v-35.5h35.5v35.5z\" />\n    <glyph glyph-name=\"font-awesome\" unicode=\"&#xf2b4;\" \nd=\"M397.8 416c27.5 0 50.2002 -22.7002 50.2002 -50.2002v-347.6c0 -27.5 -22.7002 -50.2002 -50.2002 -50.2002h-347.6c-27.5 0 -50.2002 22.7002 -50.2002 50.2002v347.6c0 27.5 22.7002 50.2002 50.2002 50.2002h347.6zM352.4 131.7h0.0996094v140.3\nc0 4.2002 -4.2002 7.7998 -9 7.7998c-6 0 -31.0996 -16.0996 -53.7998 -16.0996c-4.7002 0 -8.90039 0.599609 -13.1006 2.39941c-20.2998 7.7002 -38.1992 13.7002 -60.8994 13.7002c-20.9004 0 -43 -6.5 -61.5 -14.2998\nc-1.7998 -1.2002 -3.60059 -1.7998 -5.40039 -2.40039v18.5c8.2998 6 13.1006 15.5 13.1006 26.3008c0 18.5996 -15 33.5 -33.5 33.5c-18.6006 0 -33.5 -15 -33.5 -33.5c0 -10.8008 5.2998 -20.3008 13.0996 -26.3008v-218.6c0 -11.2998 9 -20.2998 20.2998 -20.2998\nc8.90039 0 16.7002 5.89941 19.1006 14.2998v1.2002c0.599609 1.2002 0.599609 3 0.599609 4.7998v45.4004c1.2002 0.599609 2.40039 0.599609 3.59961 1.19922c19.7002 8.90039 44.2002 17.3008 67.5 17.3008c32.3008 0 44.8008 -16.7002 71.7002 -16.7002\nc19.2002 0 37.1006 6.5 53.7998 13.7002c4.2002 1.7998 7.80078 3.59961 7.80078 7.7998z\" />\n    <glyph glyph-name=\"linode\" unicode=\"&#xf2b8;\" \nd=\"M437.4 221.7c0.599609 -2 -8.80078 -66.2998 -9.7002 -72.7998c0 -0.900391 -0.5 -1.7002 -1.10059 -2l-54.5996 -43.7002c-1.09961 -0.900391 -2.59961 -0.900391 -3.7002 0l-20.2998 14l-2.2998 -33.4004c0 -0.899414 -0.200195 -1.7002 -1.10059 -2.2998\nl-66.8994 -53.4004c-1.10059 -0.899414 -2.90039 -0.899414 -4 0l-28 23.7002l2 -46c0 -0.899414 -0.200195 -1.7002 -1.10059 -2.2998l-83.6992 -66.9004c-0.600586 -0.299805 -1.10059 -0.599609 -1.7002 -0.599609c-0.900391 0.299805 -1.7002 0.299805 -2.2998 0.900391\nl-65.1006 69.0996c-1.5 1.40039 -15.5 72 -16.8994 79.0996c-0.300781 1.10059 0.5 2.5 1.39941 3.10059l17.4004 10.5996c-3.40039 3.2002 -26.5 23.4004 -27.1006 26.2998l-20.5996 100.301c-0.299805 1.09961 0.299805 2.5 1.7002 3.39941l26.8994 12.9004\nc-4.59961 3.5 -37.6992 27.5 -38.5996 30.8994l-27.4004 133.101c-0.299805 1.7002 0.600586 3.09961 2 3.7002l123.7 38.5996c0.600586 0 1.40039 0 2.2998 -0.299805l90.6006 -43.7002c0.799805 -0.599609 1.7002 -1.7002 1.7002 -2.59961l5.69922 -132.301\nc0 -1.19922 -0.599609 -2.2998 -1.69922 -2.89941l-33.7002 -17.4004l36 -24.2998c0.799805 -0.299805 1.39941 -1.40039 1.39941 -2.2998l1.40039 -35.1006l34.5996 21.2002c0.800781 0.600586 2.2002 0.600586 3.10059 0l24 -16l0.899414 31.4004\nc0 0.899414 0.5 2 1.40039 2.59961l58.9004 36c1.09961 0.600586 2.19922 0.600586 3.09961 0l70 -38.5996c0.5 -0.600586 1.09961 -1.10059 1.40039 -2zM232.6 216.9l-100.6 -57.2002l14 -96.6006l90.5996 61.2002zM224.9 396.9l-120.9 -46.6006l19.7002 -134.8\nl106.6 55.4004zM44 274.9l73.0996 -57.2002l-19.3994 132.899l-79.7002 49.4004zM74.5996 127.1l64.8008 -60.7998l-13.7002 93.4004l-70 58.2998zM98.9004 9.40039l57.6992 -61.2002l-9.69922 67.3994l-61.7002 60.9004zM163.4 -55.0996l78.1992 62.2998l-3.09961 70\nl-85.7002 -61.4004zM245.4 60l27.0996 -22.9004l-0.599609 68.3008l-29.4004 22.5996c0 -2.2998 1.2002 -6.2998 -1.09961 -8l-22.3008 -14.9004l24.3008 -20c2.89941 -2.19922 2 -21.6992 2 -25.0996zM339.7 85.4004l4.2002 66.8994l-65.7002 -46.8994l0.599609 -68.6006z\nM367.4 111.1l5.7998 66.6006l-64.6006 40.5996l-0.599609 -30l41.2002 -27.2002c0.799805 -0.599609 1.39941 -1.69922 1.09961 -2.59961l-2 -34zM422 150.9l8.5 63.3994l-51.0996 -36.5996l-5.7002 -65.1006z\" />\n    <glyph glyph-name=\"quora\" unicode=\"&#xf2c4;\" \nd=\"M440.5 61.2998c1.7998 -18 -7.2002 -93.2998 -89 -93.2998c-49.5 0 -75.5 28.7002 -95.2002 62.2998c-117.7 -32.5996 -249 54.9004 -249 189c0 117 98 196.7 197.7 196.7c101.8 0 198.5 -79.2002 198.4 -196.7c0 -65.5 -30.5 -118.8 -74.7002 -153\nc14.2002 -21.5996 29 -35.7998 49.5 -35.7998c22.5 0 31.5 17.2998 33 30.7998h29.2998zM297 118.8c11.2998 24.9004 16.7998 58.7002 16.7002 100.5c0 104.2 -32.5 157.7 -108.7 157.7c-75 0 -107.5 -53.5 -107.5 -157.9c0 -103.699 32.5 -156.699 107.5 -156.699\nc12 0 22.7002 1.19922 32.7002 4.19922c-15.5 30.5 -33.7002 61.3008 -69.2002 61.3008c-6.7998 0 -13.5996 -1 -19.7998 -4l-12.2002 24.2998c14.7002 12.7998 38.5 22.7998 69 22.7998c47.7998 0 72 -23 91.5 -52.2002z\" />\n    <glyph glyph-name=\"free-code-camp\" unicode=\"&#xf2c5;\" horiz-adv-x=\"576\" \nd=\"M69.2998 303.5c-41 -68.5 -36.3994 -163 1 -227c22.2002 -38.2002 49.7002 -52.4004 49.7002 -66.5c0 -6.7998 -6 -13 -12.7998 -13c-19.5 0 -99.2002 75.5 -99.2002 197.8c0 111.5 78 186 97.0996 186c6 0 14.9004 -4.7998 14.9004 -11.0996\nc0 -12.7002 -28.2998 -28.6006 -50.7002 -66.2002zM265.1 89.7002c-37.1992 13.5996 -65.5 45.8994 -65.2998 86.2002c0 48 57.7002 90.0996 57.7002 136.199c0 16.8008 -10.4004 32.6006 -19.5996 38.2002c-1.90039 1 -4.60059 2.7002 -4.60059 5.10059\nc0 9.59961 26.1006 2.7998 36.5 -2.2002c33.6006 -15.9004 40.6006 -40.2998 46.4004 -74.1006c1.39941 -7.89941 4.2998 -33.2998 15.8994 -33.2998c7.5 0 12.3008 5.10059 12.3008 12.2998c0 12.6006 -15.4004 31.2002 -7.2002 31.2002\nc6.09961 0 18.5996 -12.7998 22.5 -16.8994c23.3994 -24.9004 32.0996 -49 32.0996 -82.6006c0 -42.2002 -23.3994 -74.7002 -53.0996 -89.7998c-9.2002 -5.7998 -12.1006 0.900391 -12.1006 1.90039c0 7 29.5 23.5996 29.5 56c0 10.5996 -2.69922 22.5 -8.5 31.3994\nc-1.69922 2.40039 -7.69922 10.1006 -11.0996 10.1006c-0.700195 0 -0.700195 -0.5 -0.700195 -1.2002c0 -5.7998 3.60059 -11.4004 3.60059 -17.4004c0 -13 -31.9004 -20.2002 -31.9004 6.7998c0 7.10059 0.700195 14.3008 0.700195 21.3008\nc0 5.09961 -0.200195 6.5 -2.40039 11.0996c-3.39941 6.5 -14.5 19.7998 -22.5 19.7998c-2.2002 0 -2.89941 0 -2.89941 -2.2002c0 -3.39941 7.69922 -7 7.69922 -19.2998c0 -32.0996 -44.1992 -37.8994 -44.1992 -70c0 -14.3994 1.89941 -26.5 10.0996 -38.5996\nc5.09961 -7.5 10.5996 -11.7998 19.0996 -15.2002c2.10059 -0.700195 4.30078 -0.900391 4.30078 -3.59961c0 -6.40039 -7.80078 -3 -12.3008 -1.2002zM470.4 381c21.3994 0 97.5996 -78.9004 97.5 -198.2c0 -104.899 -73.4004 -185.7 -98.8008 -185.7\nc-5 0 -13.1992 6.30078 -13.1992 11.4004c0 8.2002 28.2998 34.5996 35.2998 43.5c61 76.7002 64 205.9 -17.6006 291c-5.5 5.7998 -17.5996 16.7002 -17.5996 25.4004c0 6.09961 8.40039 12.5996 14.4004 12.5996zM428.1 57.9004c8.40039 0 11.9004 -7 11.9004 -15.5\nc0 -8.90039 -2.5 -16.4004 -11.9004 -16.4004h-261.1c-8.5 0 -15.5 7 -15.5 15.5c0 8.90039 6.09961 16.4004 15.5 16.4004h261.1z\" />\n    <glyph glyph-name=\"telegram\" unicode=\"&#xf2c6;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM369.8 270.1c3.60059 16.8008 -6.09961 23.5 -17.2002 19.5l-239.1 -92.1992c-16.4004 -6.40039 -16.0996 -15.5 -2.7998 -19.7002l61.2002 -19.1006l142 89.4004\nc6.59961 4.40039 12.6992 1.90039 7.69922 -2.5l-114.899 -103.8l-4.40039 -63.1006c6.40039 0 9.2002 2.80078 12.5 6.10059l29.9004 28.7998l62 -45.7002c11.2998 -6.39941 19.3994 -3.09961 22.3994 10.5z\" />\n    <glyph glyph-name=\"bandcamp\" unicode=\"&#xf2d5;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM296.2 113.9l84.7002 156.1h-181l-84.7002 -156.1h181z\" />\n    <glyph glyph-name=\"grav\" unicode=\"&#xf2d6;\" horiz-adv-x=\"512\" \nd=\"M301.1 236c4.40039 -4.40039 4.40039 -11.9004 0 -16.2998l-9.69922 -9.7002c-4.40039 -4.7002 -11.9004 -4.7002 -16.6006 0l-10.5 10.5c-4.39941 4.7002 -4.39941 11.9004 0 16.5996l9.7002 9.7002c4.40039 4.40039 11.9004 4.40039 16.5996 0zM270.9 255.7\nc-2.7002 -2.7998 -7.40039 -2.7998 -10.5 0c-2.80078 3 -2.80078 7.7002 0 10.5c3 3 7.69922 3 10.5 0c3 -2.7002 3 -7.5 0 -10.5zM244.9 250.4c2.7998 3 7.5 3 10.5 0c2.7998 -2.7002 2.7998 -7.40039 0 -10.2002c-3 -3 -7.7002 -3 -10.5 0c-3 2.7002 -3 7.39941 0 10.2002\nzM317.4 263.7c-19.9004 14.3994 -33.8008 43.2002 -11.9004 68.0996c21.5996 24.9004 40.7002 17.2002 59.7998 -0.799805c11.9004 -11.2998 29.2998 -24.9004 17.2002 -48.2002c-12.5 -23.5 -45.0996 -33.2002 -65.0996 -19.0996zM365.1 308.2\nc-8.89941 10 -23.2998 -6.90039 -15.5 -16.1006c7.40039 -9 32.1006 -2.39941 15.5 16.1006zM504 192c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248s248 -111 248 -248zM437.8 149.4c2.5 16.0996 -20.2002 16.5996 -25.2002 25.6992\nc-13.5996 24.1006 -27.6992 36.8008 -54.5 30.4004c11.6006 8 23.5 6.09961 23.5 6.09961c0.300781 6.40039 0 13 -9.39941 24.9004c3.89941 12.5 0.299805 22.4004 0.299805 22.4004c15.5 8.59961 26.7998 24.3994 29.0996 43.1992\nc3.60059 31 -18.7998 59.2002 -49.7998 62.8008c-22.0996 2.5 -43.7002 -7.7002 -54.2998 -25.7002c-23.2002 -40.1006 1.40039 -70.9004 22.4004 -81.4004c-14.4004 1.40039 -34.3008 11.9004 -40.1006 34.2998c-6.59961 25.7002 2.7998 49.8008 8.90039 61.4004\nc0 0 -4.40039 5.7998 -8 8.90039c0 0 -13.7998 0 -24.6006 -5.30078c11.9004 15.2002 25.2002 14.4004 25.2002 14.4004c0 6.40039 -0.599609 14.9004 -3.59961 21.5996c-5.40039 11 -23.7998 12.9004 -31.7002 -2.7998c0.0996094 0.200195 0.299805 0.400391 0.400391 0.5\nc-5 -11.8994 -1.10059 -55.8994 16.8994 -87.2002c-2.5 -1.39941 -9.09961 -6.09961 -13 -10c-21.5996 -9.69922 -56.2002 -60.2998 -56.2002 -60.2998c-28.1992 -10.7998 -77.1992 -50.8994 -70.5996 -79.7002c0.299805 -3 1.40039 -5.5 3 -7.5\nc-2.7998 -2.19922 -5.5 -5 -8.2998 -8.2998c-11.9004 -13.7998 -5.2998 -35.2002 17.7002 -24.3994c15.7998 7.19922 29.5996 20.1992 36.2998 30.3994c0 0 -5.5 5 -16.2998 4.40039c27.6992 6.59961 34.2998 9.39941 46.1992 9.09961c8 -3.89941 8 34.2998 8 34.2998\nc0 14.7002 -2.19922 31 -11.0996 41.5c12.5 -12.1992 29.0996 -32.6992 28 -60.5996c-0.799805 -18.2998 -15.2002 -23 -15.2002 -23c-9.09961 -16.5996 -43.2002 -65.9004 -30.3994 -106c0 0 -9.7002 14.9004 -10.2002 22.0996\nc-17.4004 -19.3994 -46.5 -52.2998 -24.6006 -64.5c26.6006 -14.6992 108.801 88.6006 126.2 142.301c34.6006 20.7998 55.4004 47.2998 63.9004 65c22 -43.5 95.2998 -94.5 101.1 -59z\" />\n    <glyph glyph-name=\"etsy\" unicode=\"&#xf2d7;\" horiz-adv-x=\"384\" \nd=\"M384 100c-1.75 -10.75 -13.75 -110 -15.5 -132c-117.879 4.29883 -219.895 4.74316 -368.5 0v25.5c45.457 8.94824 60.627 8.01855 61 35.25c1.79297 72.3223 3.52441 244.143 0 322c-1.0293 28.46 -12.1299 26.7646 -61 36v25.5\nc73.8857 -2.3584 255.933 -8.55078 362.999 3.75c-3.5 -38.25 -7.75 -126.5 -7.75 -126.5h-23.249c-11.0527 42.835 -18.7588 90.5 -54.75 90.5h-137c-10.25 0 -10.75 -3.5 -10.75 -9.75v-163.75c58 -0.5 88.5 2.5 88.5 2.5c29.7695 0.951172 27.5596 8.50195 40.75 65.251\nh25.75c-4.40723 -101.351 -3.91016 -61.8291 -1.75 -160.25h-25.75c-9.15527 40.0859 -9.06543 61.0449 -39.501 61.5c0 0 -21.5 2 -88 2v-139c0 -26 14.25 -38.25 44.25 -38.25h89.251c63.6357 0 66.5645 24.9961 98.751 99.75h22.249v-0.000976562z\" />\n    <glyph glyph-name=\"imdb\" unicode=\"&#xf2d8;\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM21.2998 218.8h-0.299805c0.0996094 0.100586 0.200195 0.299805 0.299805 0.400391v-0.400391zM97 128.2v127.8h-33v-127.8h33z\nM210.2 128.2v127.8h-43l-7.60059 -59.9004c-2.69922 20 -5.39941 40.1006 -8.69922 59.9004h-42.8008v-127.8h29v84.5l12.2002 -84.5h20.6006l11.5996 86.3994v-86.3994h28.7002zM221.6 128.2c86.1006 -0.100586 75 -6 75 82.5c0 8.09961 0.300781 16.7998 -1.39941 24.3994\nc-4.2998 22.5 -31.4004 20.9004 -49 20.9004h-24.6006v-127.8zM382.5 157.4v36c0 17.2998 -0.799805 30.0996 -22.2002 30.0996c-8.89941 0 -14.8994 -2.7002 -20.8994 -9.2002v41.7002h-31.7002v-127.8h29.7998l1.90039 8.09961\nc5.69922 -6.7998 11.8994 -9.7998 20.8994 -9.7998c19.7998 0 22.2002 15.2002 22.2002 30.9004zM265 218.1v-49.2998c0 -9.7002 1.90039 -18.7002 -10.2998 -18.3994v83.6992c11.8994 0 10.2998 -6.2998 10.2998 -16zM350.5 192v-32.7002\nc0 -5.39941 1.59961 -14.3994 -6.2002 -14.3994c-1.59961 0 -3 0.799805 -3.7998 2.39941c-2.2002 5.10059 -1.09961 44.1006 -1.09961 44.7002c0 3.7998 -1.10059 12.7002 4.89941 12.7002c7.2998 0 6.2002 -7.2998 6.2002 -12.7002z\" />\n    <glyph glyph-name=\"ravelry\" unicode=\"&#xf2d9;\" horiz-adv-x=\"512\" \nd=\"M407.4 386.5c72.6992 -37.9004 112 -117.2 103.3 -199.5c-1.7002 -16.7002 -4.40039 -36.2002 -9.7998 -52.2002c-22.2002 -65.7002 -52.9004 -108.6 -123.101 -147.7c-6.39941 -4.39941 -13.2998 -8.59961 -20.2002 -10.7998\nc-12.5 -4.39941 -26.0996 -5.39941 -40.0996 -3.89941c-5.90039 -0.5 -11.7998 -0.700195 -18 -0.700195c-93.7002 0 -173 64 -196.9 151.399c-0.699219 0 -1.5 0.200195 -2.19922 0.200195c-5.60059 -44.2998 27.0996 -104.1 27.0996 -104.1s2 -3 13.2998 -20.2002\nc-62.7998 33.2002 -64.5 131.2 -64.5 131.2c-15 5.59961 -67.2002 23.3994 -76.2998 37.8994c0 0 40.9004 -22.3994 76.2002 -27c-0.200195 0.300781 0.5 7.90039 0.5 7.90039c2.2002 30 12.5 53.4004 23.0996 71.4004c6.90039 33.7998 22.1006 64.2998 43.2998 89.8994\nc3.7002 15.2998 9.60059 33.5 19.9004 52.7002c4.40039 8.40039 8.59961 13.7998 19.9004 19c74.8994 35 148.699 43.9004 224.5 4.5zM138.8 284.8c-7.59961 -11.2998 -13.7002 -23.5996 -18.8994 -36.3994c8.09961 8.59961 14.7998 14.1992 18.1992 16.6992\nc-0.5 7.40039 0.700195 19.7002 0.700195 19.7002zM107.6 162.9c0.700195 -9.60059 2 -18.9004 4.2002 -28.1006l41.4004 -6.89941c-14.1006 42.0996 -15.7998 90.0996 -15.7998 90.0996c-16.5 -16 -25.4004 -37.9004 -29.8008 -55.0996zM115.5 120.1\nc21.4004 -69.6992 81 -122.8 154.1 -134.399c-1 0.299805 -1.69922 0.5 -2.69922 1c0 0 -81 47.5 -108.301 124.3c-9.09961 1.5 -28.2998 5.90039 -43.0996 9.09961zM386 3.90039c63 32 106.6 98 106.8 174c0 107.399 -86.5996 194.5 -193 194.5\nc-49.2998 0 -94.0996 -18.7002 -128.3 -49.5c-5.2002 -10.1006 -8.59961 -22.9004 -11.0996 -39.4004c52.5 44.5996 146 33.5 146 33.5c23.3994 -1 20.5996 -21.7002 20.3994 -28.0996c-85.2002 7.19922 -127 -17.2002 -168.399 -52.4004\nc0 0 8.09961 -78.7998 26.7998 -110.8c107.8 -4.90039 189.8 53.7002 189.8 53.7002c10.2998 7.39941 19.4004 8.09961 21.4004 -4.7002c1.5 -10.4004 2.19922 -24.4004 -9.60059 -29.7998c-36 -16.8008 -75.5996 -27.3008 -115 -33\nc-25.5996 -3.7002 -39.7998 -4.60059 -78 -3.90039c36.4004 -84.7002 127.5 -107.8 127.5 -107.8c28.5 -4.7002 50.2002 -1 64.7002 3.7002z\" />\n    <glyph glyph-name=\"sellcast\" unicode=\"&#xf2da;\" \nd=\"M353.4 416c52.0996 0 94.6992 -42.5996 94.6992 -94.5996v-258.801c0 -52 -42.5996 -94.5996 -94.6992 -94.5996h-258.7c-52.1006 0 -94.7002 42.5996 -94.7002 94.7002v258.7c0 52 42.5996 94.5996 94.7002 94.5996h258.7zM303.4 99.5996\nc27.8994 48.2002 11.1992 110.5 -37.2002 138.5c-18.6006 10.8008 0.0996094 -0.0996094 -18.5 10.7002c-25 14.4004 -46.2002 -23.2998 -21.6006 -37.5c18 -10.2002 0.800781 -0.399414 18.6006 -10.5996c27.5996 -16 37.2002 -51.7998 21.2998 -79.4004\nc-16 -27.5996 -51.7998 -37.2002 -79.4004 -21.2998c-18.5996 10.7998 0.100586 -0.0996094 -18.5 10.7002c-10.2998 6 -23.5996 2.39941 -29.5 -7.90039l-15.6992 -27.2002c-12.6006 -21.7998 19.3994 -53 42.2998 -13.1992c48.2998 -27.7002 110.3 -11 138.2 37.1992z\nM325.2 308.4c14.2998 24.7998 -23.4004 46.3994 -37.7002 21.5l-4.7998 -8.40039c-48.2998 27.7002 -110.3 11 -138.2 -37.2002c-27.7998 -48.2998 -11.0996 -110.6 37.0996 -138.399c18.6006 -10.8008 -0.0996094 0.0996094 18.5 -10.7002\nc25 -14.4004 46.2002 23.2998 21.6006 37.5c-0.100586 0 -18.6006 10.5996 -18.6006 10.5996c-27.5996 16 -37.2998 51.7998 -21.2998 79.4004c16 27.5996 51.7998 37.2002 79.4004 21.2998c18.5996 -10.7998 -0.100586 0.0996094 18.5 -10.7002\nc10.2002 -5.09961 20 -2.89941 26.5 3.60059c2.7002 2.69922 2 2 19 31.5z\" />\n    <glyph glyph-name=\"superpowers\" unicode=\"&#xf2dd;\" \nd=\"M448 416l-87.2002 -87c39.7002 -38.7002 61.2002 -92.7002 57.7002 -148.2c-5.40039 -93 -76.9004 -167.3 -168.7 -179.8c-83.2998 -11 -166.5 -22 -249.8 -33l86.7998 86.7998c-39.7998 38.7002 -61.0996 92.7002 -57.7998 148.2c5.7002 93.2998 77 167.5 169 180\nc83.2002 11 166.7 22 250 33zM368.3 183.7c4.40039 80 -56.7998 146.3 -136.1 151c-78.7002 4.7998 -148.5 -55.2998 -153 -134.5c-4.40039 -80 56.7998 -146.3 136.3 -151c78.7998 -4.7002 148.6 55 152.8 134.5z\" />\n    <glyph glyph-name=\"wpexplorer\" unicode=\"&#xf2de;\" horiz-adv-x=\"512\" \nd=\"M512 192c0 -141.2 -114.7 -256 -256 -256c-141.2 0 -256 114.7 -256 256s114.7 256 256 256s256 -114.7 256 -256zM480 192c0 123.2 -100.3 224 -224 224c-123.5 0 -224 -100.5 -224 -224s100.5 -224 224 -224s224 100.5 224 224zM160.9 323.4l86.8994 -37.1006\nl-37.0996 -86.8994l-86.9004 37.0996zM270.9 154.3l46.5996 -94h-14.5996l-50 100l-48.9004 -100h-14l51.0996 106.9l-22.2998 9.39941l6 14l68.6006 -29.0996l-6 -14.2998zM259.1 270.6l68.6006 -29.3994l-29.4004 -68.2998l-68.2998 29.0996zM339.4 227.7\nl54.5996 -23.1006l-23.4004 -54.2998l-54.2998 23.1006z\" />\n    <glyph glyph-name=\"meetup\" unicode=\"&#xf2e0;\" horiz-adv-x=\"512\" \nd=\"M99 33.7002c1.09961 -5.7002 -2.2998 -11.1006 -8 -12.2998c-5.40039 -1.10059 -10.9004 2.2998 -12 8c-1.09961 5.39941 2.2998 11.0996 7.7002 12.2998c5.39941 1.2002 11.0996 -2.2998 12.2998 -8zM242.1 -37.7002c6.60059 4.60059 15.5 2.7998 19.7002 -3.7002\nc4.60059 -6.59961 2.90039 -15.3994 -3.39941 -20c-6.60059 -4.59961 -15.4004 -2.89941 -20 3.7002c-4.30078 6.60059 -2.60059 15.4004 3.69922 20zM156.1 424.6c-6.2998 -1.5 -12.5 2.5 -13.8994 9.10059c-1.2002 6.2998 2.7998 12.5996 9.09961 14\nc6.2998 1.5 12.6006 -2.5 13.7002 -9.10059c1.40039 -6.2998 -2.59961 -12.5996 -8.90039 -14zM34.4004 221.7c10 -7.10059 12.5996 -20.7998 5.69922 -31.2002c-6.89941 -10.2998 -20.5996 -12.7998 -30.5996 -5.7002c-10 6.90039 -12.5996 20.9004 -5.7002 30.9004\nc6.90039 10.2998 20.6006 12.8994 30.6006 6zM306.4 392.6c-10.3008 -6.2998 -23.7002 -2.89941 -29.7002 7.40039c-6.2998 10.5996 -2.90039 24.2998 7.39941 30.5996c10.3008 6.30078 23.7002 2.90039 30 -7.69922c6 -10.3008 2.90039 -24 -7.69922 -30.3008zM115.3 334.6\nc-7.5 -5.19922 -18 -3.5 -23.0996 4.30078c-5.10059 7.69922 -3.40039 18.2998 4.2998 23.6992c7.40039 5.10059 18 3.40039 23.0996 -4.2998c5.10059 -7.7002 3.40039 -18.2998 -4.2998 -23.7002zM487.6 178.6c7.40039 1.40039 14.8008 -3.5 16.3008 -10.8994\nc1.69922 -7.7002 -3.2002 -15.2002 -10.6006 -16.6006c-7.39941 -1.69922 -14.8994 3.2002 -16.2998 10.6006c-1.7002 7.7998 3.2002 15.2002 10.5996 16.8994zM527.3 235.4c1.40039 -5.7002 -2.2998 -11.1006 -7.7002 -12.6006\nc-5.69922 -1.09961 -11.1992 2.60059 -12.2998 8c-1.09961 5.7002 2.2998 11.5 8 12.6006c5.40039 1.09961 10.9004 -2.30078 12 -8zM447 309.1c8.2998 6 20 3.80078 25.7002 -4.89941c5.7002 -8.60059 3.7002 -20.2998 -4.60059 -26.2998\nc-8.59961 -5.7002 -20.2998 -3.7002 -26 4.89941c-5.69922 8.60059 -3.69922 20.2998 4.90039 26.2998zM440.7 169.7c26.2998 -43.1006 15.0996 -100 -26.2998 -129.101c-17.4004 -12.2998 -37.1006 -17.6992 -56.9004 -17.0996\nc-12 -47.0996 -69.4004 -64.5996 -105.1 -32.5996c-1.10059 -0.900391 -2.60059 -1.7002 -3.7002 -2.90039c-39.1006 -27.0996 -92.2998 -17.4004 -119.4 22.2998c-9.7002 14.2998 -14.5996 30.6006 -15.0996 46.9004c-65.4004 10.8994 -90 94 -41.1006 139.7\nc-28.2998 46.8994 0.600586 107.399 53.4004 114.899c25.0996 66.2002 107.6 97.6006 163.6 54.2002c67.4004 22.2998 136.301 -29.4004 130.9 -101.1c41.0996 -12.6006 52.7998 -66.9004 19.7002 -95.2002zM370.7 95.4004\nc-3.10059 20.5996 -40.9004 4.59961 -43.1006 27.0996c-3.09961 32 43.7002 101.1 40 128c-3.39941 24 -19.3994 29.0996 -33.3994 29.4004c-13.4004 0.299805 -16.9004 -2 -21.4004 -4.60059c-2.89941 -1.7002 -6.59961 -4.89941 -11.7002 0.299805\nc-6.2998 6 -11.0996 11.7002 -19.3994 12.9004c-12.2998 2 -17.7002 -2 -26.6006 -9.7002c-3.39941 -2.89941 -12 -12.8994 -20 -9.09961c-3.39941 1.7002 -15.3994 7.7002 -24 11.3994c-16.2998 7.10059 -40 -4.59961 -48.5996 -20\nc-12.9004 -22.8994 -38 -113.1 -41.7002 -125.1c-8.59961 -26.5996 10.9004 -48.5996 36.9004 -47.0996c11.0996 0.599609 18.2998 4.59961 25.3994 17.3994c4 7.40039 41.7002 107.7 44.6006 112.601c2 3.39941 8.89941 8 14.5996 5.09961\nc5.7002 -3.09961 6.90039 -9.40039 6 -15.0996c-1.09961 -9.7002 -28 -70.9004 -28.8994 -77.7002c-3.40039 -22.9004 26.8994 -26.6006 38.5996 -4c3.7002 7.09961 45.7002 92.5996 49.4004 98.2998c4.2998 6.2998 7.39941 8.2998 11.6992 8\nc3.10059 0 8.30078 -0.900391 7.10059 -10.9004c-1.40039 -9.39941 -35.1006 -72.2998 -38.9004 -87.6992c-4.59961 -20.6006 6.60059 -41.4004 24.9004 -50.6006c11.3994 -5.7002 62.5 -15.7002 58.5 11.1006zM376.4 3.09961c10.5996 7.5 24.8994 4.60059 32.2998 -6\nc7.09961 -10.5996 4.59961 -25.1992 -6 -32.5996c-10.6006 -7.09961 -24.9004 -4.59961 -32 6c-7.2002 10.5996 -4.60059 25.2002 5.7002 32.5996z\" />\n    <glyph glyph-name=\"font-awesome-alt\" unicode=\"&#xf35c;\" \nd=\"M339.3 276.8c5.40039 0 9.5 -3 7.7002 -7.09961v-134.4c0 -4.2002 -3 -6 -7.2002 -7.7998c-15.5996 -7.09961 -33.5 -13.7002 -52 -13.7002c-26.2998 0 -38.2002 16.1006 -69.2998 16.1006c-22.7002 0 -46 -8.30078 -65.7002 -16.7002\nc-0.599609 -0.600586 -1.7998 -1.2002 -3 -1.2002v-44.2002c0 -1.7998 0 -3 -0.599609 -4.7998v-1.2998c-2.40039 -7.7002 -9.5 -13.7002 -18.5 -13.7002c-10.7002 0 -19.7002 8.90039 -19.7002 19.7002v212.1c-7.7002 6 -12.5 15.5 -12.5 25.7002\nc0 18 14.2998 32.2998 32.2998 32.2998s32.2998 -14.3994 32.2998 -32.2998c0 -10.7998 -4.69922 -19.7002 -12.5 -25.7002v-17.8994c1.2002 0.599609 3 1.19922 4.80078 1.7998c17.8994 7.09961 39.3994 13.7002 59.6992 13.7002\nc22.1006 0 39.4004 -5.90039 59.1006 -13.7002c4.09961 -1.7998 8.2998 -2.40039 12.5 -2.40039c22.7002 0 46.5996 15.5 52.5996 15.5zM397.8 416c27.5 0 50.2002 -22.7002 50.2002 -50.2002v-347.6c0 -27.5 -22.7002 -50.2002 -50.2002 -50.2002h-347.6\nc-27.5 0 -50.2002 22.7002 -50.2002 50.2002v347.6c0 27.5 22.7002 50.2002 50.2002 50.2002h347.6zM412.1 18.2998v347.601c0 7.69922 -6.5 14.2998 -14.2998 14.2998v-0.100586h-347.6c-7.7002 0 -14.2998 -6.5 -14.2998 -14.2998v-347.5\nc0 -7.7002 6.5 -14.2998 14.2998 -14.2998h347.6c7.7002 0 14.2998 6.5 14.2998 14.2998z\" />\n    <glyph glyph-name=\"accessible-icon\" unicode=\"&#xf368;\" \nd=\"M423.9 192.2l-12.9004 -157.3c-3.2998 -40.7002 -63.9004 -35.1006 -60.5996 4.89941l10 122.5l-41.1006 -2.2998c10.1006 -20.7002 15.7998 -43.9004 15.7998 -68.5c0 -41.2002 -16.0996 -78.7002 -42.2998 -106.5l-39.2998 39.2998\nc57.9004 63.7002 13.0996 167.2 -74 167.2c-25.9004 0 -49.5 -9.90039 -67.2002 -26l-39.2998 39.2998c22 20.7002 50.0996 35.1006 81.4004 40.2002l75.2998 85.7002l-42.6006 24.7998l-51.5996 -46c-30 -26.7998 -70.5996 18.5 -40.5 45.4004l68 60.6992\nc9.7998 8.80078 24.0996 10.2002 35.5 3.60059c0 0 139.3 -80.9004 139.5 -81.1006c16.2002 -10.0996 20.7002 -36 6.09961 -52.5996l-58.3994 -66.5l106.1 5.90039c18.5 1.09961 33.6006 -14.4004 32.1006 -32.7002zM359 346.2\nc-28.0996 0 -50.9004 22.7998 -50.9004 50.8994c0 28.1006 22.8008 50.9004 50.9004 50.9004s50.9004 -22.7998 50.9004 -50.9004c0 -28.0996 -22.8008 -50.8994 -50.9004 -50.8994zM179.6 -8.5c20.8008 0 40.1006 6.40039 56.1006 17.2998l39.7002 -39.7002\nc-100.7 -78.8994 -251.4 -8.19922 -251.4 122.5c0 36.1006 12.4004 69.4004 33.2002 95.7002l39.7002 -39.7002c-44.7002 -65.5 2.09961 -156.1 82.6992 -156.1z\" />\n    <glyph glyph-name=\"accusoft\" unicode=\"&#xf369;\" horiz-adv-x=\"640\" \nd=\"M322.1 196c-1.69922 -1.59961 -89.5996 -82.5 -90.1992 -83.2998l-92.6006 -33.7998c-4.7998 -2 -7.59961 -3.7002 -7 -8.90039c0.200195 -1.5 0.600586 -22.5996 1 -27.7002c-0.700195 -0.5 -0.0996094 0 -0.599609 -0.599609c0 0 -113.7 -36.6006 -114.5 -36.6006\nc-14.1006 -5.09961 -22.7002 -8.2998 -15.7002 1.7002c1.2998 1.7998 234.4 231.601 243.4 240.9c13 13.5 25 15.0996 25 15.0996l51.1992 -65.7998v-1zM482.2 75.9004c-5.7002 6.89941 -232.2 297.1 -239.9 306.6c-13.7002 17.2002 0 16.7998 19.2002 16.9004\nc9.7002 0.0996094 106.3 0.599609 116.5 0.599609c24.0996 0.0996094 28.7002 -0.599609 38.4004 -12.7998c2.09961 -2.7002 205.1 -245.8 207.199 -248.3c5.5 -6.7002 15.2002 -19.1006 7.2002 -23.4004c-2.39941 -1.2998 -114.6 -47.7002 -117.8 -48.9004\nc-10.0996 -4 -17.5 -6.7998 -30.7998 9.30078zM634.9 74.2998c6 -1.39941 7.09961 -4.2002 1.69922 -8.2002c-2 -1.39941 -123.699 -76.5996 -125.8 -77.7998c-15.0996 -8.7998 -38 -1.59961 -53.5996 1.7002c-7.10059 1.5 -305.3 68.2998 -308 69.0996\nc-2.60059 0.900391 -4.40039 1 -4.60059 3.5c-0.299805 4 6 5.60059 11.1006 7.60059c5 1.89941 145.3 52.5996 150.2 54.7002c4.7998 2.09961 11.2998 2.69922 14.3994 2.89941c4.90039 0.299805 59.9004 -8.39941 65.2998 -9.2998l57.1006 -74\nc9.7998 -11.4004 20.7002 -21.9004 36.7002 -14.5996c2.5 1.19922 117.5 51.5996 117.5 51.5996c13.3994 -2.5 35.6992 -6.90039 38 -7.2002z\" />\n    <glyph glyph-name=\"adversal\" unicode=\"&#xf36a;\" horiz-adv-x=\"512\" \nd=\"M482.1 416c24.5 0 29.9004 -5.59961 29.9004 -30.2002v-388.1c0 -24.5 -5.5 -29.7002 -29.9004 -29.7002h-453.399c-22.9004 0 -28.7002 5.59961 -28.7002 28.9004v390.199c0 23 5.7998 28.9004 28.7002 28.9004h453.399zM178.4 227.7\nc9.39941 -7.2002 12.3994 -17.1006 11.2998 -27.2998c-1.7998 -19.1006 -75.7998 -11.4004 -114 -30.9004c-27.2002 -13.9004 -42.7002 -41.7002 -39.6006 -71c6.7002 -64.7002 89.6006 -79.7002 147 -43.2998c4.60059 3.2002 8.30078 4.89941 11.9004 1\nc2.09961 -2.60059 2 -4 3.90039 -6.2002c7.2998 -9.59961 38.1992 -14.0996 46.5996 -7.40039c3.09961 2.80078 4.59961 6.30078 2.7002 10.7002c-13.6006 30.5 -6.60059 63 -9.2998 88.7998c0 69.3008 6.39941 111.7 -34.5 128.5\nc-41.9004 17.4004 -84.2002 16.6006 -125.301 -4.7998c-16.2998 -9 -53.6992 -52.8994 -24.8994 -64.2998c5.2998 -2.2998 12.7998 -4 22.5 -5.5c8.2002 -1.2002 13.2002 -2.7998 17.5 8.2998c12.0996 32.1006 56.7002 43.6006 84.2002 23.4004zM465.1 5.7002\nc0 14.2998 -9.7998 9.89941 -16.5996 9.89941c-132.3 0.400391 -264.5 0.400391 -396.8 0c-6.60059 0 -16.7002 4.80078 -17.1006 -9.09961c-0.399414 -15.5 10.4004 -10.7002 17.8008 -10.7002h394.899c6.7002 0 17.7998 -5.2002 17.7998 9.90039zM468.9 346.2\nc0 0.200195 0 0.299805 0.0996094 0.5c0 9.89941 -3.5 15.0996 -13.5996 14.2998c-3.10059 -0.400391 -6.60059 0 -9.7002 0c-26.1006 0 -26 0 -26 -26.2002v-71c-79.2002 45.6006 -124.3 -6.59961 -136.101 -30.5c-16.3994 -32.8994 -21.7998 -66.5996 -15.6992 -100\nc16.2998 -92.2998 91 -114.899 144.399 -85.2002c4.60059 2.80078 6.60059 7.5 12.4004 -1.19922c8.59961 -12.7002 23.7002 -5.2002 36.0996 -5.60059c7.40039 0 8.10059 8.2002 8.10059 13.9004v291zM417.4 113.9c-19.5 -47.6006 -72.9004 -43.3008 -90 -5.2002\nc-15.1006 33.2998 -15.5 68.2002 0.399414 101.5c16.2998 34.0996 59.7002 35.7002 81.5 4.7998c20.6006 -28.7998 14.9004 -84.5996 8.10059 -101.1zM122.6 78.5996c-7.5 1.30078 -33 3.30078 -33.6992 27.8008c-0.400391 13.8994 7.7998 23 19.7998 25.7998\nc24.3994 5.89941 49.2998 9.89941 73.7002 14.7002c8.89941 2 7.39941 -4.40039 7.7998 -9.5c1.39941 -33 -26.1006 -59.2002 -67.6006 -58.8008z\" />\n    <glyph glyph-name=\"affiliatetheme\" unicode=\"&#xf36b;\" horiz-adv-x=\"512\" \nd=\"M159.7 210.6c-51.2998 -70.8994 -116.601 -110.8 -145.7 -89.1992c-29.2002 21.6992 -11.2002 96.5996 40.2002 167.5c51.2998 70.8994 116.6 110.8 145.7 89.1992c29.0996 -21.5996 11.0996 -96.5996 -40.2002 -167.5zM510.9 267.9\nc0.699219 -8.2002 1.09961 -16.5 1 -25c0 -151.801 -121.601 -274.9 -271.601 -274.9c-82.8994 0 -157.2 37.5996 -207 96.9004c71.2998 19.3994 130.5 68.3994 164.101 133.199c7.69922 -32.5996 24 -58.5996 49 -73.7998c72.5996 -44.0996 190.699 20.2002 264.5 143.601z\n\" />\n    <glyph glyph-name=\"algolia\" unicode=\"&#xf36c;\" \nd=\"M229.3 265.4c49.2002 0 89.2002 -39.9004 89.2002 -89.2002s-39.9004 -89.2002 -89.2002 -89.2002s-89.2002 39.9004 -89.2002 89.2002s39.9004 89.2002 89.2002 89.2002zM292 208.8c1.2998 0.700195 1.7998 2.40039 1.09961 3.7002\nc-12.1992 21.4004 -34.8994 36.0996 -61.0996 37.0996c-1.40039 0.100586 -2.7002 -1.09961 -2.7002 -2.59961v-66.5c0 -1.90039 2 -3.2002 3.7998 -2.2998zM389.1 416c32.5 0 58.9004 -26.4004 58.8008 -58.9004v-330.199c0 -32.5 -26.3008 -58.9004 -58.9004 -58.9004\nh-330.1c-32.5 0 -58.9004 26.4004 -58.9004 59v330.1c0 32.5 26.4004 58.9004 58.9004 58.9004h330.199zM186.5 331.3h0.0996094v-15.7998c0 -1.7002 1.7002 -3 3.40039 -2.5c12.7002 3.7002 25.9004 5.5 39.4004 5.5c13 0 25.7998 -1.7002 38.0996 -5.09961\nc1.59961 -0.5 3.2998 0.699219 3.2998 2.5v15.3994c0 10.7998 -8.7002 19.5 -19.5 19.5h-45.2998c-10.7998 0 -19.5 -8.7002 -19.5 -19.5zM102.1 294.3c-7.59961 -7.59961 -7.59961 -19.8994 0 -27.3994l7.7002 -7.7002c1.10059 -1.2002 3 -1 4 0.299805\nc4.40039 6.09961 9.40039 12 14.7998 17.4004c5.5 5.5 11.4004 10.3994 17.6006 14.8994c1.2998 1 1.39941 2.90039 0.299805 4l-7.7002 7.7002c-7.59961 7.59961 -19.8994 7.59961 -27.5 0zM229.3 49.5c69.9004 0 126.601 56.7998 126.601 126.6\nc0 70 -56.6006 126.601 -126.601 126.601c-69.8994 0 -126.6 -56.7002 -126.6 -126.601c0 -69.8994 56.5996 -126.6 126.6 -126.6z\" />\n    <glyph glyph-name=\"amilia\" unicode=\"&#xf36d;\" \nd=\"M240.1 416c134.101 0 191.9 -55.7002 192 -136v-296.6c0 -3 -1 -8.10059 -5.09961 -9.10059c-4 -1 -57.2998 -0.700195 -66.5 -0.700195s-56.7998 1 -59.9004 2c-4 0.900391 -6.09961 6.10059 -6.09961 9.10059v25.3994\nc-39.5996 -21.3994 -105.5 -42.0996 -153.3 -42.0996c-109.7 0 -124.9 85.7002 -124.9 104s-5.09961 95.5 30.4004 111.8c31.5 13.2002 156.3 36.5 243.7 47.7998v38.5c0 44.7002 -1 73.1006 -58.9004 73.1006c-55.7998 0 -119.8 -25.4004 -152.3 -47.7002\nc-6.10059 -4.09961 -16.2002 -4.09961 -20.2998 6.09961c-5.10059 12.2002 -9.10059 34.5 -10.2002 39.6006c-1.90039 10.2002 2.09961 16.2998 7.2002 19.3994c52.6992 38.5 122.3 55.4004 184.199 55.4004zM290.3 68v106.7c-44.7002 -4.10059 -95.5 -20.2998 -119.8 -33.5\nc-21.2998 -10.2002 -18.2998 -40.7002 -18.2998 -52.9004c0.0996094 -11.2002 6.2002 -44.7002 59 -44.7002c30.3994 0 57.7002 11.2002 79.0996 24.4004z\" />\n    <glyph glyph-name=\"angrycreative\" unicode=\"&#xf36e;\" horiz-adv-x=\"640\" \nd=\"M640 209.8l-3.2002 -28.2002l-34.5 -2.2998l-2 -18.0996l34.5 2.2998l-3.2002 -28.2002l-34.3994 -2.2002l-2.2998 -20.0996l34.3994 2.2002l-3 -26.1006l-64.7002 -4.09961l12.7002 113.2l-47.2998 -115.4l-31.9004 -2l-23.7998 117.8l30.2998 2l13.6006 -79.3994\nl31.7002 82.3994zM426.8 76.5l12.7998 120l28.4004 1.90039l-12.9004 -120.101zM162 59.9004l-19.4004 36l-3.5 -37.4004l-28.1992 -1.7002l2.69922 29.1006c-11 -18 -32 -34.3008 -56.8994 -35.8008c-32.7998 -2 -59.7002 20.9004 -56.4004 58.2002\nc2.60059 29.2998 26.7002 62.7998 67.5 65.4004c37.7002 2.39941 47.6006 -23.2002 51.2998 -28.7998l2.80078 30.7998l38.8994 2.5c20.1006 1.2998 38.7002 -3.7002 42.5 -23.7002l2.60059 26.5996l64.7998 4.2002l-2.7002 -27.8994l-36.4004 -2.40039l-1.69922 -17.9004\nl36.3994 2.30078l-2.7002 -27.9004l-36.3994 -2.2998l-1.90039 -19.9004l36.2998 2.2998l-2.09961 -20.7998l55 117.2l23.7998 1.59961l32.1006 -110.6l8.89941 85.5996l-22.2998 -1.39941l2.90039 27.8994l75 4.90039l-3 -28l-24.3008 -1.59961l-9.69922 -91.9004\nl-58 -3.7002l-4.30078 15.6006l-39.3994 -2.5l-8 -16.3008zM117.7 130.1l-26.4004 -1.69922c-6.7002 12.3994 -14.3994 16.5996 -26.2998 15.7998c-19 -1.2002 -33.2998 -17.5 -34.5996 -33.2998c-1.40039 -16 7.2998 -32.5 28.6992 -31.2002\nc12.8008 0.799805 21.3008 8.59961 28.9004 18.8994l27 1.7002zM173.8 137.8c1.2002 12.9004 -7.59961 13.6006 -26.0996 12.4004l-2.7002 -28.5c14.2002 0.899414 27.5 2.09961 28.7998 16.0996zM194.9 67l5.7998 60c-5 -13.5 -14.7002 -21.0996 -27.9004 -26.5996z\nM330.3 112l-7.89941 37.7998l-15.8008 -39.2998zM160.2 186.6l-4.2998 17.5l-39.6006 -2.59961l-8.09961 -18.2002l-31.9004 -2.09961l57 121.899l23.9004 1.60059l30.7002 -102l9.89941 104.7l27 1.7998l37.7998 -63.6006l6.5 66.6006l28.5 1.89941l-4 -41.1992\nc7.40039 13.5 22.9004 44.6992 63.6006 47.5c40.5 2.7998 52.3994 -29.3008 53.3994 -30.3008l3.30078 32l39.2998 2.7002c12.7002 0.900391 27.7998 -0.299805 36.2998 -9.7002l-4.40039 11.9004l32.2002 2.2002l12.9004 -43.2002l23 45.7002l31 2.2002l-43.6006 -78.4004\nl-4.7998 -44.2998l-28.3994 -1.90039l4.7998 44.2998l-15.7998 43c1 -22.2998 -9.2002 -40.0996 -32 -49.5996l25.1992 -38.7998l-36.3994 -2.40039l-19.2002 36.7998l-4 -38.2998l-28.4004 -1.89941l3.30078 31.5c-6.7002 -9.30078 -19.7002 -35.4004 -59.6006 -38\nc-26.2002 -1.7002 -45.5996 10.2998 -55.3994 39.1992l-4 -40.2998l-25 -1.59961l-37.6006 63.2998l-6.2998 -66.2002zM436.8 268.7c10.2002 0.700195 17.5 2.09961 21.6006 4.2998c4.5 2.40039 7 6.40039 7.59961 12.0996\nc0.599609 5.30078 -0.599609 8.80078 -3.40039 10.4004c-3.59961 2.09961 -10.5996 2.7998 -22.8994 2zM327.7 234c5.59961 -5.90039 12.7002 -8.5 21.2998 -7.90039c4.7002 0.300781 9.09961 1.80078 13.2998 4.10059c5.5 3 10.6006 8 15.1006 14.2998l-34.2002 -2.2998\nl2.39941 23.8994l63.1006 4.30078l1.2002 12l-31.2002 -2.10059c-4.10059 3.7002 -7.7998 6.60059 -11.1006 8.10059c-4 1.69922 -8.09961 2.7998 -12.1992 2.5c-8 -0.5 -15.3008 -3.60059 -22 -9.2002c-7.7002 -6.40039 -12 -14.5 -12.9004 -24.4004\nc-1.09961 -9.59961 1.40039 -17.2998 7.2002 -23.2998zM126.4 225.8l23.7998 1.60059l-8.2998 37.5996z\" />\n    <glyph glyph-name=\"app-store\" unicode=\"&#xf36f;\" horiz-adv-x=\"512\" \nd=\"M255.9 327.1l9.09961 15.7002c5.59961 9.7998 18.0996 13.1006 27.9004 7.5c9.7998 -5.59961 13.0996 -18.0996 7.5 -27.8994l-87.5 -151.5h63.2998c20.5 0 32 -24.1006 23.0996 -40.8008h-185.5c-11.2998 0 -20.3994 9.10059 -20.3994 20.4004\ns9.09961 20.4004 20.3994 20.4004h52l66.6006 115.399l-20.8008 36.1006c-5.59961 9.7998 -2.2998 22.1992 7.5 27.8994c9.80078 5.60059 22.2002 2.2998 27.9004 -7.5zM177.2 109.1l-19.6006 -34c-5.59961 -9.7998 -18.0996 -13.0996 -27.8994 -7.5\nc-9.7998 5.60059 -13.1006 18.1006 -7.5 27.9004l14.5996 25.2002c16.4004 5.09961 29.7998 1.2002 40.4004 -11.6006zM346.1 170.8h53.1006c11.2998 0 20.3994 -9.09961 20.3994 -20.3994c0 -11.3008 -9.09961 -20.4004 -20.3994 -20.4004h-29.5l19.8994 -34.5\nc5.60059 -9.7998 2.30078 -22.2002 -7.5 -27.9004c-9.7998 -5.59961 -22.1992 -2.2998 -27.8994 7.5c-33.5 58.1006 -58.7002 101.601 -75.4004 130.601c-17.0996 29.5 -4.89941 59.0996 7.2002 69.0996c13.4004 -23 33.4004 -57.7002 60.0996 -104zM256 440\nc137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM472 192c0 119.9 -97.2998 216 -216 216c-119.9 0 -216 -97.2998 -216 -216c0 -119.9 97.2998 -216 216 -216c119.9 0 216 97.2998 216 216z\" />\n    <glyph glyph-name=\"app-store-ios\" unicode=\"&#xf370;\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM127 63.5l19.2998 33.2998c-10.2998 12.5 -23.5 16.2998 -39.5996 11.4004l-14.2998 -24.7002\nc-5.5 -9.5 -2.30078 -21.7998 7.2998 -27.2998c9.5 -5.5 21.7998 -2.2998 27.2998 7.2998zM265.9 117.4c8.7998 16.2998 -2.5 40 -22.7002 40h-62.1006l85.8008 148.6c5.5 9.5 2.2998 21.7998 -7.30078 27.2998c-9.5 5.5 -21.7998 2.2998 -27.2998 -7.2998\nl-8.89941 -15.4004l-8.90039 15.4004c-5.5 9.5 -17.7002 12.7998 -27.2998 7.2998c-9.5 -5.5 -12.7998 -17.7002 -7.2998 -27.2998l20.5 -35.4004l-65.4004 -113.199h-51c-11 0 -20 -9 -20 -20s9 -20 20 -20h181.9zM364 117.4c11 0 20 8.89941 20 20c0 11 -9 20 -20 20h-52\nc-26.2002 45.2998 -45.7998 79.2998 -58.9004 102c-11.8994 -9.80078 -23.7998 -38.8008 -7.09961 -67.8008c16.5 -28.3994 41.0996 -71.1992 74 -128.1c5.5 -9.5 17.7002 -12.7998 27.2998 -7.2998c9.5 5.5 12.7998 17.7002 7.2998 27.2998l-19.5996 33.9004h29z\" />\n    <glyph glyph-name=\"apper\" unicode=\"&#xf371;\" horiz-adv-x=\"640\" \nd=\"M42.0996 208.9c22.2002 0 29 -2.80078 33.5 -14.6006h0.800781v22.9004c0 11.2998 -4.80078 15.3994 -17.9004 15.3994c-11.2998 0 -14.4004 -2.5 -15.0996 -12.7998h-38.6006c0.299805 13.9004 1.5 19.1006 5.7998 24.4004\nc7.30078 8.7998 18.9004 11.7998 46.1006 11.7998c33 0 47.0996 -5 53.8994 -18.9004c2 -4.2998 4 -15.5996 4 -23.6992v-76.3008h-38.2998l1.2998 19.1006h-1c-5.2998 -15.6006 -13.5996 -20.4004 -35.5 -20.4004c-30.2998 0 -41.0996 10.1006 -41.0996 37.2998\nc0 25.2002 12.2998 35.8008 42.0996 35.8008zM59.2002 160.8c13.0996 0 16.8994 3 16.8994 13.4004c0 9.09961 -4.2998 11.5996 -19.5996 11.5996c-13.0996 0 -17.9004 -3 -17.9004 -12.0996c-0.0996094 -10.4004 3.7002 -12.9004 20.6006 -12.9004zM137 255.7h38.2998\nl-1.5 -20.6006h0.799805c9.10059 17.1006 15.9004 20.9004 37.5 20.9004c14.4004 0 24.7002 -3 31.5 -9.09961c9.80078 -8.60059 12.8008 -20.4004 12.8008 -48.1006c0 -30 -3 -43.0996 -12.1006 -52.8994c-6.7998 -7.30078 -16.3994 -10.1006 -33.2002 -10.1006\nc-20.3994 0 -29.1992 5.5 -33.7998 21.2002h-0.799805v-70.2998h-39.5v169zM217.9 195c0 27.5 -3.30078 32.5 -20.7002 32.5c-16.9004 0 -20.7002 -5 -20.7002 -28.7002c0 -28 3.5 -33.5 21.2002 -33.5c16.3994 0 20.2002 5.60059 20.2002 29.7002zM275.8 255.7h38.2998\nl-1.5 -20.6006h0.800781c9.09961 17.1006 15.8994 20.9004 37.5 20.9004c14.3994 0 24.6992 -3 31.5 -9.09961c9.7998 -8.60059 12.7998 -20.4004 12.7998 -48.1006c0 -30 -3 -43.0996 -12.1006 -52.8994c-6.7998 -7.30078 -16.3994 -10.1006 -33.2998 -10.1006\nc-20.3994 0 -29.2002 5.5 -33.7998 21.2002h-0.799805v-70.2998h-39.5v169h0.0996094zM356.7 195c0 27.5 -3.2998 32.5 -20.7002 32.5c-16.9004 0 -20.7002 -5 -20.7002 -28.7002c0 -28 3.5 -33.5 21.2002 -33.5c16.4004 0 20.2002 5.60059 20.2002 29.7002zM410.5 198.8\nc0 25.4004 3.2998 37.7998 12.2998 45.7998c8.7998 8.10059 22.2002 11.3008 45.1006 11.3008c42.7998 0 55.6992 -12.8008 55.6992 -55.7002v-11.1006h-75.2998c-0.299805 -2 -0.299805 -4 -0.299805 -4.7998c0 -16.8994 4.5 -21.8994 20.0996 -21.8994\nc13.9004 0 17.9004 3 17.9004 13.8994h37.5v-2.2998c0 -9.7998 -2.5 -18.9004 -6.7998 -24.7002c-7.2998 -9.7998 -19.6006 -13.5996 -44.2998 -13.5996c-27.5 0 -41.6006 3.2998 -50.6006 12.2998c-8.5 8.5 -11.2998 21.2998 -11.2998 50.7998zM486.9 210.4\nc-0.300781 1.7998 -0.300781 3.2998 -0.300781 3.7998c0 12.2998 -3.2998 14.5996 -19.5996 14.5996c-14.4004 0 -17.0996 -3 -18.0996 -15.0996l-0.300781 -3.2998h38.3008zM542.5 255.7h38.2998l-1.7998 -19.9004h0.700195\nc6.7998 14.9004 14.3994 20.2002 29.7002 20.2002c10.7998 0 19.0996 -3.2998 23.3994 -9.2998c5.2998 -7.2998 6.7998 -14.4004 6.7998 -34c0 -1.5 0 -5 0.200195 -9.2998h-35c0.299805 1.7998 0.299805 3.2998 0.299805 4c0 15.3994 -2 19.3994 -10.2998 19.3994\nc-6.2998 0 -10.7998 -3.2998 -13.0996 -9.2998c-1 -3 -1 -4.2998 -1 -12.2998v-68h-38.2998v118.5h0.0996094z\" />\n    <glyph glyph-name=\"asymmetrik\" unicode=\"&#xf372;\" horiz-adv-x=\"576\" \nd=\"M517.5 138.8c-13.9004 -14.2998 -30.4004 -27.7002 -48.9004 -39.7998l73.4004 -110.4h-101.6l-45.9004 71.8008c-17.5996 -7.2002 -35.9004 -13.4004 -54.5 -18.7002l32.5996 -53.1006h-135.5l22.8008 37.1006c-23.3008 -2.7002 -46.4004 -3.7002 -68.6006 -2.7002\nl-22 -34.4004h-101.6l34.5 51.7002c-45 17.9004 -68.9004 47.9004 -68.4004 83c0.299805 25.7998 14 54.2998 41.7002 82.9004c38.9004 40 96.5 72.5996 161.6 92.8994c-22.2998 -8.09961 -42 -18.5 -62 -30.6992c-31.1992 -16.2002 -58.6992 -35.9004 -79.5 -58.1006\nc-57.3994 -61 -46.5 -121.8 19.1006 -151.2l190.2 285.5l150.899 -226.399c13 9.5 24.7998 19.7998 35 30.5996c98 104.2 53.7002 207.9 -98.7998 231.7c-68.2998 10.5996 -146.8 5.7002 -221.3 -14.7998c-60.1006 -10 -118.7 -31.7002 -170.7 -58.2002\nc118.1 66.9004 277.9 102.1 406.6 82.4004c110 -16.8008 170.2 -69.5 169.4 -135c-0.400391 -36.1006 -19.7002 -76.1006 -58.5 -116.101zM329.9 58.2998c18.3994 5.2998 36.5 11.7998 53.6992 19.2002l-78.6992 123l-101.9 -159.3\nc22.5 -0.700195 45.7998 0.899414 69.2002 4.39941l32.7002 53.3008z\" />\n    <glyph glyph-name=\"audible\" unicode=\"&#xf373;\" horiz-adv-x=\"640\" \nd=\"M640 248.1v-54l-320 -200l-320 199.9v54l320 -200zM445.5 176.1c-70.7998 94.4004 -200.5 110.7 -290.2 36.3008c-2.59961 -2.2002 -5.2002 -4.40039 -7.7002 -6.7002h-0.299805c37.1006 55.7002 100.601 92.3994 172.601 92.3994s135.5 -36.7998 172.699 -92.5996z\nM225.4 157.3c21 29.6006 55.5 49 94.3994 49c39.2002 0 73.9004 -19.5996 94.7998 -49.5l-45.3994 -28.3994c-21.2002 29.1992 -52 47.5996 -86.4004 47.5996c-20.8994 0 -40.5 -6.7998 -57.3994 -18.7002zM103.6 286.9c-11.5 -9.10059 -24.2998 -22.1006 -34.1992 -32.6006\nc53.8994 82.1006 147 135.601 250.5 135.601c104.899 0 197.199 -54 250.699 -135.7l-48.7998 -30.4004l-0.700195 1c-99.2998 138.5 -285.699 166.4 -417.5 62.1006zM570.6 254.2z\" />\n    <glyph glyph-name=\"avianex\" unicode=\"&#xf374;\" horiz-adv-x=\"512\" \nd=\"M453.1 416c39 0 64.8008 -31.2002 57.8008 -69.7998l-56.7002 -308.5c-7.10059 -38.5 -44.4004 -69.7002 -83.2998 -69.7002h-312c-39 0 -64.8008 31.2002 -57.7002 69.7002l56.5996 308.6c7.10059 38.5 44.4004 69.7002 83.2998 69.7002h312zM394.9 68.7002\nl6.2998 7.89941l-94.9004 119.4l-4.5 7.2998c19.7998 14.2002 33.5 24.2998 35.2998 25.6006c7.90039 6.59961 6.30078 20.7998 -2.69922 31.2998c-9.2002 10.7998 -23 14.3994 -30.7002 7.89941c0 0 -14.4004 -13.5996 -33.7998 -32.3994l-4.90039 4.5l-103.1 112.399\nl-8.90039 -4.7998l-18.7998 -28.8994l68.7998 -99.8008l20.5 -29.5996c-12 -12.2998 -23.5 -24.4004 -32.7998 -34.9004l-58 31.1006l-15.7002 -15.4004l52.4004 -48.0996l40.5996 -61l17.9004 12.7002l-22.1006 64.1992c12.5 7.60059 27 17.1006 41.7002 27.1006\nl115.4 -110z\" />\n    <glyph glyph-name=\"aws\" unicode=\"&#xf375;\" horiz-adv-x=\"640\" \nd=\"M180.41 244.99c-0.719727 -22.6504 10.5996 -32.6807 10.8799 -39.0498c-0.238281 -2.31543 -2.0752 -5.12402 -4.09961 -6.27051l-12.8008 -8.95996c-1.39941 -0.981445 -3.92188 -1.8418 -5.62988 -1.91992c-0.429688 0.0195312 -8.18945 -1.83008 -20.4795 25.6104\nc-13.0283 -16.2627 -40.5127 -29.4609 -61.3496 -29.4609c-0.347656 0 -0.913086 0.00488281 -1.26074 0.0107422c-16.2803 -0.890625 -60.4004 9.24023 -58.1299 56.21c-1.58984 38.2803 34.0596 62.0596 70.9297 60.0498\nc7.10059 -0.0195312 21.6006 -0.370117 46.9902 -6.26953v15.6191c2.69043 26.46 -14.7002 46.9902 -44.8096 43.9102c-2.40039 -0.00976562 -19.4004 0.5 -45.8408 -10.1094c-7.35938 -3.37988 -8.2998 -2.82031 -10.75 -2.82031\nc-7.40918 0 -4.35938 21.4795 -2.93945 24.2002c5.20996 6.39941 35.8604 18.3496 65.9395 18.1797c1.86523 0.165039 4.89844 0.298828 6.77148 0.298828c15.2451 0 37.1611 -7.875 48.9189 -17.5791c9.87305 -11.0439 17.8867 -32.0303 17.8867 -46.8438\nc0 -1.52539 -0.0966797 -3.99609 -0.216797 -5.51562zM93.9902 212.6c32.4297 0.470703 46.1602 19.9707 49.29 30.4707c2.45996 10.0498 2.0498 16.4102 2.0498 27.3994c-9.66992 2.32031 -23.5898 4.85059 -39.5605 4.87012\nc-15.1494 1.14062 -42.8193 -5.62988 -41.7393 -32.2598c-1.24023 -16.79 11.1201 -31.4004 29.96 -30.4805zM264.91 189.55c-7.86035 -0.719727 -11.5205 4.86035 -12.6797 10.3701l-49.8008 164.65c-0.969727 2.7793 -1.60938 5.64941 -1.91992 8.58008\nc-0.0283203 0.189453 -0.0517578 0.5 -0.0517578 0.692383c0 2.18555 1.75195 4.22656 3.91211 4.55762h22.25c8.78027 0.879883 11.6396 -6.03027 12.5498 -10.3701l35.7197 -140.83l33.1602 140.83c0.530273 3.21973 2.94043 11.0693 12.7998 10.2393h17.1602\nc2.16992 0.180664 11.1104 0.5 12.6807 -10.3691l33.4199 -142.631l36.8701 142.631c0.479492 2.17969 2.71973 11.3691 12.6797 10.3691h19.7197c0.850586 0.130859 6.15039 0.810547 5.25 -8.5791c-0.429688 -1.85059 3.41016 10.6592 -52.75 -169.9\nc-1.14941 -5.50977 -4.82031 -11.0898 -12.6797 -10.3701h-18.6904c-10.9395 -1.15039 -12.5098 9.66016 -12.6797 10.75l-33.1602 137.13l-32.7803 -136.99c-0.15918 -1.08984 -1.72949 -11.8994 -12.6797 -10.75h-18.2998v-0.00976562zM538.39 183.92\nc-5.87988 -0.00976562 -33.9199 0.299805 -57.3594 12.29c-4.31152 1.8252 -7.81055 7.10645 -7.81055 11.7891v0.121094v10.75c0 8.4502 6.2002 6.89941 8.83008 5.88965c10.04 -4.05957 16.4805 -7.13965 28.8105 -9.59961\nc36.6494 -7.53027 52.7695 2.2998 56.7197 4.47949c13.1504 7.81055 14.1895 25.6807 5.25 34.9502c-10.4805 8.79004 -15.4805 9.12012 -53.1299 21c-4.64062 1.29004 -43.7002 13.6104 -43.79 52.3604c-0.610352 28.2402 25.0498 56.1797 69.5195 55.9502\nc12.6699 0.00976562 46.4307 -4.13086 55.5703 -15.6201c1.34961 -2.08984 2.01953 -4.5498 1.91992 -7.04004v-10.1104c0 -4.43945 -1.62012 -6.66016 -4.87012 -6.66016c-7.70996 0.860352 -21.3896 11.1699 -49.1602 10.75\nc-6.88965 0.360352 -39.8896 -0.910156 -38.4092 -24.9697c-0.430664 -18.96 26.6094 -26.0703 29.6992 -26.8896c36.46 -10.9707 48.6504 -12.79 63.1201 -29.5801c17.1406 -22.25 7.90039 -48.2998 4.35059 -55.4404\nc-19.0801 -37.4902 -68.4199 -34.4395 -69.2607 -34.4199zM578.59 79.0596c-70.0303 -51.7197 -171.689 -79.25 -258.49 -79.25c-0.853516 -0.00488281 -2.23926 -0.00976562 -3.09277 -0.00976562c-99.5195 0 -240.271 54.0918 -314.177 120.74\nc-6.53027 5.88965 -0.770508 13.96 7.16992 9.46973c81.1748 -46.4336 222.955 -84.1201 316.473 -84.1201h0.407227c69.4072 0.373047 177.64 22.5713 241.59 49.5508c11.7803 5 21.7705 -7.80078 10.1201 -16.3809zM607.78 112.35\nc-8.95996 11.5205 -59.2803 5.38086 -81.8105 2.69043c-6.79004 -0.770508 -7.93945 5.12012 -1.79004 9.46973c40.0703 28.1699 105.88 20.1006 113.44 10.6299c7.5498 -9.46973 -2.0498 -75.4092 -39.5605 -106.909c-5.75977 -4.87012 -11.2695 -2.30078 -8.70996 4.09961\nc8.44043 21.25 27.3906 68.4902 18.4307 80.0195z\" />\n    <glyph glyph-name=\"bimobject\" unicode=\"&#xf378;\" \nd=\"M416 416c17.5996 0 32 -14.4004 32 -32v-384c0 -17.5996 -14.4004 -32 -32 -32h-384c-17.5996 0 -32 14.4004 -32 32v384c0 17.5996 14.4004 32 32 32h384zM352 158.6h-0.0996094v35c0 49.4004 -11.4004 82.5 -103.801 82.5h-17.2998\nc-30 0 -65.0996 -8.2998 -69.7002 -38.7998h-1.09961v74.7002h-64v-232h64v34.7998h0.900391c8 -23.8994 26.2998 -38.7998 70.3994 -38.7998h16.9004c92.3994 0 103.8 33.2002 103.8 82.5996zM288 187.5v-22.9004c0 -21.6992 -3.40039 -33.7998 -38.4004 -33.7998h-45.2998\nc-28.8994 0 -44.0996 6.5 -44.0996 35.7002v19c0 29.2998 15.2002 35.7002 44.0996 35.7002h45.2998c35 0.200195 38.4004 -12 38.4004 -33.7002z\" />\n    <glyph glyph-name=\"bitcoin\" unicode=\"&#xf379;\" horiz-adv-x=\"512\" \nd=\"M504 192c0 -136.967 -111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248s248 -111.033 248 -248zM362.349 227.33c4.9375 32.999 -20.1904 50.7393 -54.5498 62.5732l11.1465 44.7021l-27.2129 6.78027l-10.8516 -43.5234\nc-7.1543 1.78223 -14.502 3.46387 -21.8027 5.12988l10.9287 43.8096l-27.1982 6.78125l-11.1523 -44.6855c-5.92188 1.34863 -11.7354 2.68164 -17.377 4.08398l0.0302734 0.139648l-37.5293 9.37012l-7.23926 -29.0625s20.1914 -4.62695 19.7646 -4.91309\nc11.0225 -2.75098 13.0146 -10.0439 12.6807 -15.8242l-12.6963 -50.9258c0.759766 -0.193359 1.74414 -0.472656 2.8291 -0.90625c-0.907227 0.224609 -1.87598 0.472656 -2.87598 0.712891l-17.7959 -71.3379c-1.34961 -3.34863 -4.76758 -8.37012 -12.4717 -6.46484\nc0.271484 -0.394531 -19.7793 4.9375 -19.7793 4.9375l-13.5107 -31.1475l35.4141 -8.82617c6.58887 -1.65137 13.0449 -3.37988 19.4004 -5.00684l-11.2617 -45.2129l27.1816 -6.78027l11.1533 44.7324c5.96875 -1.61719 15.6846 -4.13867 21.6865 -5.62695\nl-11.1152 -44.5225l27.2139 -6.78125l11.2617 45.1279c46.4043 -8.78125 81.2988 -5.23926 95.9863 36.7266c11.8359 33.79 -0.589844 53.2812 -25.0049 65.9912c17.7803 4.09766 31.1748 15.792 34.7471 39.9492zM300.172 140.151\nc-8.41016 -33.79 -65.3076 -15.5234 -83.7549 -10.9434l14.9443 59.8994c18.4453 -4.60352 77.5996 -13.7178 68.8105 -48.9561zM308.589 227.818c-7.67285 -30.7363 -55.0312 -15.1201 -70.3926 -11.292l13.5479 54.3262\nc15.3633 -3.82715 64.8359 -10.9727 56.8447 -43.0342z\" />\n    <glyph glyph-name=\"bity\" unicode=\"&#xf37a;\" horiz-adv-x=\"496\" \nd=\"M78.4004 380.8c95.3994 89.2002 246.1 91.2002 343.1 -3.7998c14.2998 -14.0996 -6.40039 -37.0996 -22.4004 -21.5c-84.7998 82.4004 -215.8 80.2998 -298.899 3.2002c-16.2998 -15.1006 -36.5 8.2998 -21.7998 22.0996zM177.3 -37.7998\nc-128.7 38.2998 -201.899 170.7 -169.8 298.1c5.2998 21 35.2002 12.5 30.2002 -7.09961c-28.2998 -111.3 35.2998 -227.101 147.5 -261c21.3994 -6.40039 11.3994 -35.7002 -7.90039 -30zM325.4 -35.7998c-19.2002 -6.2998 -30 22.7002 -8.80078 29.7002\nc106.101 35.5 167.4 145.699 143.2 253.399c-4.89941 21.7002 25.5 27.6006 30 7.90039c28.5 -124.101 -42.5 -250.8 -164.399 -291zM262.5 43.2002c0 -8.2002 -6.59961 -14.7998 -14.7998 -14.7998s-14.7998 6.59961 -14.7998 14.7998l0.199219 71.7998\nc0 8.09961 6.60059 14.7998 14.8008 14.7998c8.19922 0 14.7998 -6.59961 14.7998 -14.7998zM333.5 312.2c0 21.7998 32.5 19.5996 32.5 0v-71.6006c0 -69.2998 -60.7002 -90.8994 -118 -90.0996c-57.2998 -0.799805 -118 20.7998 -118 90.0996v71.6006\nc0 19.5996 32.5 21.7998 32.5 0c-1.40039 -88.2002 -7 -131.8 85.5 -132.5c90.2002 0.599609 87.5996 41.5996 85.5 132.5z\" />\n    <glyph glyph-name=\"blackberry\" unicode=\"&#xf37b;\" horiz-adv-x=\"512\" \nd=\"M166 331.1c0 -23.3994 -16.4004 -49.0996 -72.5 -49.0996h-70.0996l21 88.7998h67.7998c42.0996 0 53.7998 -23.2998 53.7998 -39.7002zM292.2 370.8c42.0996 0 53.7998 -23.2998 53.7002 -39.7002c0 -23.3994 -16.3008 -49.0996 -70.1006 -49.0996h-70.0996\nl18.7002 88.7998h67.7998zM88.7998 239.9c42.1006 0 53.7998 -23.4004 53.7998 -39.7002c0 -25.7002 -16.3994 -49.1006 -72.5 -49.1006h-70.0996l21 88.8008h67.7998zM268.9 239.9c42 0 53.6992 -23.4004 53.6992 -39.7002c0 -25.7002 -16.2998 -49.1006 -70.0996 -49.1006\nh-70.0996l18.6992 88.8008h67.8008zM458.2 293.7c42.0996 0 53.7998 -23.4004 53.7002 -39.7002c0 -25.7002 -16.3008 -49.0996 -70.1006 -49.0996h-70.0996l18.7002 88.7998h67.7998zM430.2 155.8c42.0996 0 53.7002 -23.3994 53.7002 -39.7002\nc0 -25.6992 -14 -49.0996 -70.1006 -49.0996h-70.0996l18.7002 88.7998h67.7998zM240.8 102c42.1006 0 53.7998 -23.4004 53.7002 -39.7002c0 -23.3994 -14 -49.0996 -70.0996 -49.0996h-70.1006l18.7002 88.7998h67.7998z\" />\n    <glyph glyph-name=\"blogger\" unicode=\"&#xf37c;\" \nd=\"M162.4 252c4.7998 4.90039 6.19922 5.09961 36.3994 5.09961c27.2002 0 28.1006 -0.0996094 32.1006 -2.09961c5.7998 -2.90039 8.2998 -7 8.2998 -13.5996c0 -5.90039 -2.40039 -10 -7.60059 -13.4004c-2.7998 -1.7998 -4.5 -1.90039 -31.0996 -2.09961\nc-16.4004 -0.100586 -29.5 0.199219 -31.5 0.799805c-10.2998 2.89941 -14.0996 17.7002 -6.59961 25.2998zM223.8 157.5c55.4004 0 55.1006 0 60.4004 -4.7002c7.39941 -7 5.89941 -19.2998 -3.10059 -24.3994l-9.19922 -1.5l-47.9004 -0.600586\nc-42.2002 -0.5 -54.0996 0.200195 -56.2998 1.2002c-4.40039 1.90039 -8.5 7.2998 -9.2002 12c-0.599609 4.5 1.59961 10.7998 5.09961 13.9004c4.40039 3.89941 6.30078 4.09961 60.2002 4.09961zM447.2 27.4004c-3.5 -28.4004 -23 -50.4004 -51.1006 -57.5\nc-7.19922 -1.80078 -9.69922 -1.90039 -172.899 -1.80078c-157.8 0 -165.9 0.100586 -172 1.80078c-8.40039 2.19922 -15.6006 5.5 -22.2998 10c-5.60059 3.7998 -13.9004 11.7998 -17 16.3994c-3.80078 5.60059 -8.2002 15.2998 -10 22\nc-1.80078 6.7002 -1.90039 9.40039 -1.90039 173.4c0 163.1 0 166.6 1.7998 173.7c6.2998 24.6992 25.9004 43.5996 51.2002 49.1992c7.2998 1.60059 332.1 1.90039 340 0.300781c21.2002 -4.30078 37.9004 -17.1006 47.5996 -36.4004c7.7002 -15.2998 7 1.5 7.30078 -180.6\nc0.199219 -115.801 0 -164.5 -0.700195 -170.5zM361.8 212.6c-1.09961 5 -4.2002 9.60059 -7.7002 11.5c-1.09961 0.600586 -8 1.30078 -15.5 1.7002c-12.3994 0.600586 -13.7998 0.799805 -17.7998 3.10059c-6.2002 3.59961 -7.89941 7.59961 -8 18.2998\nc0 20.3994 -8.5 39.3994 -25.2998 56.5c-12 12.2002 -25.2998 20.5 -40.5996 25.0996c-3.60059 1.10059 -11.8008 1.5 -39.2002 1.7998c-42.9004 0.5 -52.5 -0.399414 -67.1006 -6.19922c-27 -10.7002 -46.2998 -33.4004 -53.3994 -62.4004\nc-1.2998 -5.40039 -1.60059 -14.2002 -1.90039 -64.2998c-0.399414 -62.7998 0 -72.1006 4 -84.5c9.7002 -30.7002 37.1006 -53.4004 64.6006 -58.4004c9.19922 -1.7002 122.199 -2.09961 133.699 -0.5c20.1006 2.7002 35.9004 10.7998 50.7002 25.9004\nc10.7002 10.8994 17.4004 22.7998 21.7998 38.5c3.2002 10.8994 2.90039 88.3994 1.7002 93.8994z\" />\n    <glyph glyph-name=\"blogger-b\" unicode=\"&#xf37d;\" \nd=\"M446.6 225.3c2 -8.89941 2.40039 -134.1 -2.5 -151.7c-7.09961 -25.2998 -17.8994 -44.3994 -35.1992 -62.0996c-23.9004 -24.4004 -49.4004 -37.5 -81.9004 -41.9004c-18.7002 -2.5 -201.2 -1.89941 -216 0.800781c-44.5 8 -88.7998 44.6992 -104.4 94.2998\nc-6.2998 20.0996 -7 35 -6.39941 136.5c0.5 81 1 95.0996 3.09961 103.899c11.4004 46.8008 42.6006 83.4004 86.1006 100.601c23.5996 9.39941 39 10.7998 108.399 10c44.2002 -0.5 57.4004 -1.10059 63.2998 -2.90039c24.6006 -7.5 46.2002 -20.7998 65.5 -40.5\nc27.1006 -27.5996 40.8008 -58.2998 40.9004 -91.2998c0.0996094 -17.2002 2.7998 -23.5996 12.9004 -29.5c6.39941 -3.7002 8.59961 -4.09961 28.6992 -5c12 -0.5 23.2002 -1.7002 25 -2.7002c5.7002 -3.09961 10.7002 -10.5 12.5 -18.5zM124.5 288.9\nc-12.2002 -12.3008 -6 -36.1006 10.5996 -40.8008c3.10059 -0.799805 24.3008 -1.39941 50.8008 -1.19922c43 0.199219 45.6992 0.399414 50.2998 3.2998c8.5 5.39941 12.2998 12.0996 12.2998 21.5996c0 10.6006 -4.09961 17.2002 -13.4004 21.9004\nc-6.39941 3.2998 -7.89941 3.39941 -51.7998 3.39941c-48.7998 0 -51 -0.299805 -58.7998 -8.19922zM316.3 89.0996c14.4004 8.2002 17 28.1006 4.90039 39.4004c-8.5 7.90039 -8 7.90039 -97.6006 7.7998c-87.0996 -0.0996094 -90.1992 -0.299805 -97.2998 -6.7002\nc-5.59961 -5.09961 -9.2998 -15.0996 -8.2002 -22.3994c1.10059 -7.7002 7.80078 -16.2998 14.9004 -19.4004c3.59961 -1.59961 22.7998 -2.7998 90.9004 -2l77.5 0.900391z\" />\n    <glyph glyph-name=\"buromobelexperte\" unicode=\"&#xf37f;\" \nd=\"M0 416h128v-128h-128v128zM120 296v112h-112v-112h112zM160 416h128v-128h-128v128zM280 296v112h-112v-112h112zM320 416h128v-128h-128v128zM440 296v112h-112v-112h112zM0 256h128v-128h-128v128zM120 136v112h-112v-112h112zM160 256h128v-128h-128v128zM280 136v112\nh-112v-112h112zM320 256h128v-128h-128v128zM440 136v112h-112v-112h112zM0 96h128v-128h-128v128zM120 -24v112h-112v-112h112zM160 96h128v-128h-128v128zM280 -24v112h-112v-112h112zM320 96h128v-128h-128v128z\" />\n    <glyph glyph-name=\"centercode\" unicode=\"&#xf380;\" horiz-adv-x=\"512\" \nd=\"M329.2 179.4c-3.7998 -35.2002 -35.4004 -60.6006 -70.6006 -56.8008c-35.1992 3.80078 -60.5996 35.4004 -56.7998 70.6006s35.4004 60.5996 70.6006 56.7998c35.0996 -3.7998 60.5996 -35.4004 56.7998 -70.5996zM243.4 -55.7002\nc-146.7 7.7002 -251.601 138.2 -233.301 279.4c11.2002 86.5996 65.8008 156.899 139.101 192c161 77.0996 349.7 -37.4004 354.7 -216.601c4.09961 -147 -118.4 -262.199 -260.5 -254.8zM423.3 124.3c27.9004 118 -160.5 205.9 -237.2 234.2\nc-57.5 -56.2998 -69.0996 -188.6 -33.7998 -344.4c68.7998 -15.7998 169.101 26.4004 271 110.2z\" />\n    <glyph glyph-name=\"cloudscale\" unicode=\"&#xf383;\" \nd=\"M318.1 294c6.2002 6.2998 15.8008 -3.09961 9.5 -9.59961l-75.1992 -88.8008c0.899414 -8.19922 -1.80078 -16.7998 -8.10059 -23.0996c-11.0996 -11 -28.8994 -11 -40 0c-11.0996 11.0996 -11.0996 29 0 40c6.2998 6.2998 14.7998 9 23.1006 8.09961l25.1992 20.4004\nc-16.3994 15.2998 -38.3994 24.7002 -62.5996 24.7002c-50.7998 0 -94.5996 -41.4004 -92.5996 -97.4004c-1 6.2998 -1.40039 12.7998 -1.40039 19.4004c0 71.5 57.7998 132.3 129.4 132.3c31.7998 0 60.7998 -14.2998 83.2998 -33.5996zM234.3 182.5\nc5.60059 5.5 5.60059 14.5996 0 20.2002c-5.59961 5.59961 -14.5996 5.59961 -20.2002 0c-5.59961 -5.60059 -5.59961 -14.6006 0 -20.2002c5.60059 -5.5 14.6006 -5.5 20.2002 0zM224 416c123.5 0 224 -100.5 224 -224s-100.5 -224 -224 -224s-224 100.5 -224 224\ns100.5 224 224 224zM224 32c88.2002 0 160 71.7998 160 160s-71.7998 160 -160 160s-160 -71.7998 -160 -160s71.7998 -160 160 -160z\" />\n    <glyph glyph-name=\"cloudsmith\" unicode=\"&#xf384;\" horiz-adv-x=\"332\" \nd=\"M332.5 28.0996c0 -46.3994 -37.5996 -84.0996 -84 -84.0996s-84 37.7002 -84 84.0996c0 46.4004 37.5996 84 84 84s84 -37.5996 84 -84zM248.5 272c-46.4004 0 -80 -33.5996 -80 -80s-37.5996 -80 -84 -80s-84 33.5996 -84 80s37.5996 88 84 88s76 29.5996 76 76\ns41.5996 84 88 84s80 -37.5996 80 -84s-33.5996 -84 -80 -84z\" />\n    <glyph glyph-name=\"cloudversify\" unicode=\"&#xf385;\" horiz-adv-x=\"616\" \nd=\"M148.6 144v-0.0996094h-48.8994c-6.40039 0 -11.7002 5.39941 -11.7002 11.7998v40.3994c0 7.60059 7 11.9004 10.7998 11.9004h46.7998v-6.59961c0 -10.7002 8.80078 -16.7002 19.5 -16.7002h20.2002c10.7998 0 19.5 8.7998 19.5 19.5v20.3994\nc0 10.6006 -3.5 19.5 -15.2002 19.5c18.5 15.2002 37.2002 21.4004 45 24.1006c15 56.5 42 92.3994 99.3008 109.7c55.0996 16.5 153.5 3.09961 186.5 -85c73.8994 -22.6006 106.899 -92.6006 92.0996 -155.101c-13 -54.8994 -62.2998 -100.6 -131.5 -99.5\nc-49.5996 -51.3994 -135.2 -48.8994 -186.4 -5.59961c-78.5996 -4.2002 -137.8 42.7998 -146 111.3zM376 136c8.7002 -54.0996 59.7002 -65.5 91.7998 -59.2002c39.1006 7.7002 70.5 37.5 79.7002 76.5c5.7998 24.4004 2.40039 50 -9.40039 72l-10.5 19.6006\nc1.2002 -22.5 -12.5 -60.6006 -47.5 -76.9004c65.5 67.7002 2.10059 141.2 -67.6992 150.5c-49.8008 6.59961 -83.3008 -13 -114.2 -43.7002c48 -4.7002 87.7002 -26.7998 101.8 -74.7998c-30.0996 49.2998 -103 56.5996 -133.6 40.7998\nc-35.5 -18.2002 -60 -54 -57 -93.8994c3.59961 -47.4004 39.5 -67.4004 57.3994 -79.8008c-4.5 21.7002 -4 71.3008 29.2002 92.9004c-36.2998 -60 28.0996 -144.6 135.3 -110.8c-33.5996 14.3994 -66 40.5 -55.2998 86.7998zM128 240h-39.7998\nc-8.90039 0 -16.2002 7.2998 -16.2002 16.2002v39.5996c0 8.90039 7.2998 16.2002 16.2002 16.2002h39.7998c8.90039 0 16.2002 -7.2998 16.2002 -16.2002v-39.5996c0 -8.90039 -7.2998 -16.2002 -16.2002 -16.2002zM10.0996 280c-5.59961 0 -10.0996 4.5 -10.0996 10.0996\nv27.8008c0 5.59961 4.5 10.0996 10.0996 10.0996h27.7002c5.5 0 10.1006 -4.5 10.1006 -10.0996v-27.8008c0 -5.59961 -4.5 -10.0996 -10.1006 -10.0996h-27.7002zM168 305.3v21.4004c0 5.09961 4.2002 9.2998 9.2998 9.2998h21.4004\nc5.09961 0 9.2998 -4.2002 9.2998 -9.2998v-21.4004c0 -5.09961 -4.2002 -9.2998 -9.2998 -9.2998h-21.4004c-5.09961 0 -9.2998 4.2002 -9.2998 9.2998zM56 212.5v-25c0 -6.2998 -5.09961 -11.5 -11.4004 -11.5h-25.1992c-6.30078 0 -11.4004 5.2002 -11.4004 11.5v25\nc0 6.2998 5.09961 11.5 11.4004 11.5h25.0996c6.40039 0 11.5 -5.2002 11.5 -11.5z\" />\n    <glyph glyph-name=\"cpanel\" unicode=\"&#xf388;\" horiz-adv-x=\"640\" \nd=\"M210.3 227.8c6.60059 -29.0996 -14.5 -65.2998 -51.7002 -65.2998h-32l6.40039 23.7998c1.7998 6.2002 7.2998 10.7998 14.2998 10.7998h10.2998c12.4004 0 20.8008 11.7002 18.3008 22.6006c-2.10059 9.2002 -9.90039 14.7998 -18.3008 14.7998h-19.7998\nl-25.7998 -95.7002c-1.90039 -6.2002 -7.40039 -10.7002 -14.2002 -10.7002l-24.7002 -0.0996094l34.9004 130.1c1.7998 6.40039 7.2002 10.9004 14.2998 10.9004h37c24.1006 0 45.4004 -16.4004 51 -41.2002zM53.7998 199.8c-24.8994 0 -24.7002 -37.3994 0 -37.3994\nh11.2998c4.2002 0 7.60059 -3.90039 6.40039 -8.30078l-7.09961 -26.0996h-12.4004c-33.5 0 -59 31.4004 -50.2998 65.2002c7.2998 27 28.2998 41.0996 51.2002 41.0996h40l-6.2002 -23.5996c-1.90039 -6.5 -7.40039 -10.9004 -14.2998 -10.9004h-18.6006zM301.3 234.6\nc18.7998 0 33.2998 -17.5996 28.5 -36.7998l-14 -51.7998c-2.7998 -10.5996 -12.2002 -17.7998 -23.3994 -17.7998l-57.5 0.200195c-42.9004 0 -38.5 63.7998 0.699219 63.7998h48.4004l-3.5 -13.2002c-1.90039 -6.2002 -7.40039 -10.7998 -14.2002 -10.7998h-21.5996\nc-5.2998 0 -5.2998 -7.90039 0 -7.90039h34.8994c4.60059 0 5.10059 3.90039 5.5 5.2998l8.60059 31.8008c0.299805 1 1.89941 5.2998 -2.10059 5.2998h-57.5c-9.69922 0 -16.5996 8.89941 -14.1992 18.5l3.5 13.3994h77.8994zM633.1 269c4.5 0 7.7002 -4 6.5 -8.2998\nl-26.5 -98.2002c-5.09961 -20.7002 -24.1992 -34.5 -44.8994 -34.5l35.5996 133.1c1.2002 4.7002 5.5 7.90039 10.4004 7.90039h18.8994zM396.8 234.3c34.4004 0 59.2998 -32.2998 50.2998 -65.3994l-8.7998 -33.1006c-1.2002 -4.89941 -5.7002 -7.7998 -10.2998 -7.7998\nh-19.0996c-4.5 0 -7.60059 4 -6.40039 8.2998l10.5996 40c3.30078 11.6006 -5.59961 23.4004 -18.0996 23.4004h-19.7998l-17.2002 -64c-1.2002 -4.7998 -5.59961 -7.7998 -10.4004 -7.7998h-18.8994c-4.2002 0 -7.60059 3.89941 -6.40039 8.2998l26.2002 98h48.2998\nv0.0996094zM495.1 159.7h73.3008l-5.7002 -21c-1.90039 -6.2002 -7.40039 -10.7002 -14.2002 -10.7002h-66.7002c-20 0 -33.2998 19 -28.2998 36.7002l10.7998 40c4.7998 17.5996 20.7002 29.5996 38.6006 29.5996h47.2998c19 0 33.2002 -17.7002 28.2998 -36.7998\nl-3.2002 -12c-2.89941 -11 -12.7002 -17.5996 -23.2002 -17.5996h-53.3994l3.5 13c1.59961 6.19922 7.2002 10.7998 14.2002 10.7998h21.5996c2 0 3.2998 1 3.90039 3l0.699219 2.59961c0.700195 2.7002 -1.2998 5.10059 -3.89941 5.10059h-32.9004\nc-4.09961 0 -6.89941 -2.10059 -7.7998 -6l-8 -30c-0.900391 -3.30078 1.5 -6.7002 5.09961 -6.7002z\" />\n    <glyph glyph-name=\"css3-alt\" unicode=\"&#xf38b;\" horiz-adv-x=\"384\" \nd=\"M0 416h384l-34.9004 -395.8l-157.1 -52.2002l-157.1 52.2002zM313.1 336h-242.199l5.7998 -47.2998h122.899l-6.5 -2.7002l-112.1 -46.7002l3.59961 -46.2998l0.200195 0.0996094v-0.0996094l166.3 -0.5l-3.69922 -61.5996l-54.7002 -15.4004l-52.6006 13.2998\nl-3.19922 38.2998h-48.9004l6.40039 -73.8994l98.7998 -29.2002l98.2002 28.7002l12.7998 146.6h-111.5l0.299805 0.100586l115.3 49.2998z\" />\n    <glyph glyph-name=\"cuttlefish\" unicode=\"&#xf38c;\" horiz-adv-x=\"440\" \nd=\"M344 142.5c13.7002 -50.9004 41.7002 -93.2998 87 -117.8c-45.2998 -49.6006 -110.5 -80.7002 -183 -80.7002c-137 0 -248 111 -248 248s111 248 248 248c72.5 0 137.7 -31.0996 183 -80.7002c-45.2998 -24.5 -73.2998 -66.8994 -87 -117.8\nc-17.5 31.5996 -57.4004 54.5 -96 54.5c-56.5996 0 -104 -47.4004 -104 -104s47.4004 -104 104 -104c38.5996 0 78.5 22.9004 96 54.5z\" />\n    <glyph glyph-name=\"d-and-d\" unicode=\"&#xf38d;\" horiz-adv-x=\"576\" \nd=\"M82.5 349.1c-0.599609 17.2002 2 33.8008 12.7002 48.2002c0.299805 -7.39941 1.2002 -14.5 4.2002 -21.5996c5.89941 27.5 19.6992 49.2998 42.2998 65.5c-1.90039 -5.90039 -3.5 -11.7998 -3 -17.7002c8.7002 7.40039 18.7998 17.7998 44.3994 22.7002\nc14.7002 2.7998 29.7002 2 42.1006 -1c38.5 -9.2998 61 -34.2998 69.7002 -72.2998c5.2998 -23.1006 0.699219 -45 -8.30078 -66.4004c-5.19922 -12.4004 -12 -24.4004 -20.6992 -35.0996c-2 1.89941 -3.90039 3.7998 -5.80078 5.59961\nc-42.7998 40.7998 -26.7998 25.2002 -37.3994 37.4004c-1.10059 1.19922 -1 2.19922 -0.100586 3.59961c8.30078 13.5 11.8008 28.2002 10 44c-1.09961 9.7998 -4.2998 18.9004 -11.2998 26.2002c-14.5 15.2998 -39.2002 15 -53.5 -0.600586\nc-11.3994 -12.5 -14.0996 -27.3994 -10.8994 -43.5996c0.199219 -1.2998 0.399414 -2.7002 0 -3.90039c-3.40039 -13.6992 -4.60059 -27.5996 -2.5 -41.5996c0.0996094 -0.5 0.0996094 -1.09961 0.0996094 -1.59961c0 -0.300781 -0.0996094 -0.5 -0.200195 -1.10059\nc-21.7998 11 -36 28.2998 -43.2002 52.2002c-8.2998 -17.7998 -11.0996 -35.5 -6.59961 -54.0996c-15.5996 15.1992 -21.2998 34.2998 -22 55.1992zM552.1 225.9c0.5 -0.600586 1.2002 -1 1.7002 -1.40039v-0.5c-15 3.59961 -29.7998 1.7998 -44.5 -1.2998\nc-9.2998 -2 -18.2998 -4.7002 -26.7002 -9c-2.89941 -1.5 -5.69922 -3.2998 -8 -4.7002c-5.7998 2.40039 -11.2998 5.5 -17.1992 6.7998c-24.5 5.2998 -45.8008 -1.2002 -62.5 -20c-19.7002 -22.2002 -34.5 -47.5996 -46.7002 -74.5l-1.2002 -2.7002\nc-0.0996094 -0.199219 -0.200195 -0.299805 -0.400391 -0.399414c-12.0996 8.2998 -21.5996 20.2998 -36.0996 25.5996c0.299805 0.400391 0.400391 0.900391 0.700195 1.2998c20.5996 28.2002 44.8994 52.5 75.0996 70.4004c16 9.5 33 16.0996 51.5 18.5\nc1.7998 0.200195 3.5 0.400391 5.2998 1.09961c-4.39941 0 -8.7998 0.300781 -13.0996 -0.0996094c-21.2002 -1.90039 -40.5 -9.59961 -58.7002 -20.2002c-13.7998 -8 -26.2002 -17.7002 -36.5996 -29.7998c-0.400391 -0.5 -0.600586 -1.09961 -0.900391 -1.7002\nc-0.299805 0.299805 -0.700195 0.600586 -1 0.900391c11 30.8994 30.7002 55 57.7002 73.2998c0.200195 -0.200195 0.5 -0.299805 0.700195 -0.5c-1.2002 -1.7002 -2.5 -3.2998 -3.5 -5.09961c-1.7998 -3.30078 -3.7002 -6.5 -5.10059 -10\nc-1.7998 -4.30078 1.60059 -8.60059 12 -0.5c18.2002 14.0996 29.6006 26.2998 48.9004 29.5996c0.700195 0.0996094 1.2998 0.299805 1.90039 0.299805h2.5c-1 -0.700195 -1.60059 -1.09961 -2.2002 -1.5c-11.6006 -7.7998 -11.7998 -7.39941 -15 -12\nc-2.60059 -3.7002 -0.200195 -8 4.7002 -6.7998c2.59961 0.599609 5.19922 1.2998 7.69922 2.2002c9.40039 3.2998 19 5.7998 29 6.39941c13.9004 0.800781 27.1006 -1.89941 39.9004 -7.09961c15.0996 -6.2002 28.5 -15 40.0996 -26.5996zM316.7 50.4004\nc1.5 -1.30078 1.89941 -2.40039 0.899414 -4.2002c-25.2998 -50.2002 -61.0996 -89.1006 -116 -98.7998c-26.7998 -4.7002 -52.8994 -2.7002 -77.8994 8.59961c-18.5 8.2002 -34.6006 19.5996 -47.2002 35.5996c-2 2.60059 -3.7002 5.40039 -5.90039 8.60059\nc-0.699219 -7.7998 0.100586 -14.9004 1.5 -21.9004c-0.199219 -0.200195 -0.399414 -0.299805 -0.599609 -0.5c-3.2002 3.40039 -6.59961 6.60059 -9.5 10.2998c-12.2002 15.5 -19.5 33.3008 -24.0996 52.3008c-11.8008 48.2998 -0.5 78.7998 7.7998 101.1\nc-8.7002 -4.7998 -16.2002 -10.2998 -23.6006 -16.2002c11.6006 32.7998 31.9004 59.9004 56.1006 84.6006c2.39941 -2.10059 3.2998 -4.7002 3 -7.40039c-0.200195 -1 -5.90039 -38.9004 -5.60059 -44.7002c18.9004 18.9004 40.5 33.2998 64.8008 43.9004\nc-7.5 -11.1006 -11 -23.4004 -11.8008 -37.2998c13.4004 12.1992 27.7002 20.0996 46.4004 13.8994c-8.5 -9.09961 -30.7998 -30.5 -38.5996 -64.2998c-5.10059 -21.9004 -3.80078 -43.0996 8.19922 -62.5996c11.2002 -18.3008 27.8008 -27.8008 49.4004 -27.8008\nc12.5996 0 23.7998 5 34.0996 11.8008c18.5 12.2998 32.8008 28.5 44 47.5996c1.90039 3.2002 1.10059 2.09961 1.90039 3c19.9004 -16.0996 3.2998 -2.59961 42.7002 -35.5996zM488.7 96.7998c20.2002 -6.59961 35.5 -18.7998 43.7998 -38.8994\nc9.2002 -23.1006 2.09961 -49.4004 -17.4004 -66c-16.3994 -14 -35.6992 -19.2002 -57 -17.4004c-0.599609 0 -1.19922 0 -1.89941 -0.299805c15.0996 -10.7002 31.5996 -15.2002 50.8994 -10.6006c-2.19922 -2.39941 -3.89941 -4.69922 -5.89941 -6.5\nc-12.2998 -10.8994 -26.9004 -16.8994 -42.9004 -19.7998c-39.5996 -7.2998 -75.5996 12.7998 -85 56.9004c-0.5 2.09961 -0.599609 4.2002 -0.899414 6.39941c-10.8008 -8.19922 -16.4004 -34.0996 -0.700195 -52.2998c-1.60059 0.5 -2.60059 0.700195 -3.60059 1.10059\nc-21.2998 8.2998 -34.3994 28.2998 -33.5 51.1992c0.900391 23.2002 4.90039 41 -13 56c-16.5 13.8008 -33 27.4004 -49.5 41.1006c-8.09961 6.7002 -14.7998 14.5 -17 25.0996c-1 4.60059 -1.39941 9.40039 -1.7998 14.1006c-0.5 6.09961 -3.2998 11 -7.89941 14.7998\nc-4.5 3.89941 -9.30078 7.39941 -13.8008 11.2002c-8.89941 7.5 -12.2998 18.8994 -7.2998 29.8994c2.7998 -12.8994 9.60059 -18.8994 22.6006 -20.2998c4.39941 -0.5 8.89941 -0.799805 13.2998 -1.5c8.09961 -1.2002 12.7998 -6.09961 14.2998 -14.2002\nc0.700195 -3.39941 1.2998 -6.7998 2.2002 -10.2002c1.59961 -5.59961 4.5 -8 10.3994 -8.39941c4.60059 -0.299805 9.30078 -0.5 13.9004 -0.900391c7.59961 -0.599609 14.2002 -3.7998 20.0996 -8.7002c19.4004 -16.1992 39 -32.1992 58.5 -48.2998\nc5.7002 -4.7002 12 -8.2002 19.6006 -8.5c16.7002 -0.599609 29 15.2002 24.7998 31.7998c-0.200195 0.700195 -0.400391 1.5 -0.0996094 2.80078c2.39941 -2 4.89941 -3.80078 7 -5.90039c14.0996 -14 18.0996 -39.2998 8.69922 -56.0996\nc-2.09961 -3.80078 -5.2998 -7.10059 -8.09961 -10.8008c0.700195 -0.199219 1.7998 -0.5 3 -0.599609c14 -1.40039 27.2002 1 38.9004 9.09961c15.7998 10.9004 18 31.2002 5.39941 45.6006c-4.7002 5.39941 -8.89941 8 -18.7998 12\nc6.5 1.2998 19.2002 0.200195 28.7002 -2.90039zM99.4004 268.7c-5.30078 9.2002 -13.2002 15.5996 -22.1006 21.2998c13.7002 0.5 26.6006 -0.200195 39.6006 -3.7002c-7 12.2002 -8.5 24.7002 -5 38.7002c5.2998 -11.9004 13.6992 -20.0996 23.5996 -26.7998\nc19.7002 -13.2002 35.7002 -19.6006 46.7002 -30.2002c3.39941 -3.2998 6.2998 -7.09961 9.59961 -10.9004c-0.799805 2.10059 -1.39941 4.10059 -2.2002 6c-5 10.6006 -13 18.6006 -22.5996 25c-1.7998 1.2002 -2.7998 2.5 -3.40039 4.5\nc-3.2998 12.5 -3 25.1006 -0.699219 37.6006c1 5.5 2.7998 10.8994 4.5 16.2998c0.799805 2.40039 2.2998 4.59961 4 6.59961c0.599609 -6.89941 0 -25.5 19.5996 -46c10.7998 -11.2998 22.4004 -21.8994 33.9004 -32.6992c9 -8.5 18.2998 -16.7002 25.5 -26.8008\nc1.09961 -1.59961 2.19922 -3.2998 3.7998 -4.69922c-5 13 -14.2002 24.0996 -24.2002 33.7998c-9.59961 9.2998 -19.4004 18.3994 -29.2002 27.3994c-3.2998 3 -4.59961 6.7002 -5.09961 10.9004c-1.2002 10.4004 0 20.5996 4.2998 30.2002c0.5 1 1.09961 2 1.90039 3.2998\nc0.5 -4.2002 0.599609 -7.90039 1.39941 -11.5996c4.7998 -23.1006 20.4004 -36.3008 49.2998 -63.5c10 -9.40039 19.3008 -19.2002 25.6006 -31.6006c4.7998 -9.2998 7.2998 -19 5.7002 -29.5996c-0.100586 -0.600586 0.5 -1.7002 1.09961 -2\nc6.2002 -2.60059 10 -6.90039 9.7002 -14.2998c7.7002 2.59961 12.5 8 16.3994 14.5c4.2002 -20.2002 -9.09961 -50.3008 -27.1992 -58.7002c0.399414 4.5 5 23.3994 -16.5 27.7002c-6.80078 1.2998 -12.8008 1.2998 -22.9004 2.09961c4.7002 9 10.4004 20.5996 0.5 22.4004\nc-24.9004 4.59961 -52.7998 -1.90039 -57.7998 -4.60059c8.2002 -0.399414 16.2998 -1 23.5 -3.2998c-2 -6.5 -4 -12.7002 -5.7998 -18.9004c-1.90039 -6.5 2.09961 -14.5996 9.2998 -9.59961c1.2002 0.900391 2.2998 1.90039 3.2998 2.7002\nc-3.09961 -17.9004 -2.90039 -15.9004 -2.7998 -18.2998c0.299805 -10.2002 9.5 -7.80078 15.7002 -7.30078c-2.5 -11.7998 -29.5 -27.2998 -45.4004 -25.7998c7 4.7002 12.7002 10.2998 15.9004 17.9004c-6.5 -0.799805 -12.9004 -1.60059 -19.2002 -2.40039\nl-0.299805 0.900391c4.69922 3.39941 8 7.7998 10.1992 13.0996c8.7002 21.1006 -3.59961 38 -25 39.9004c-9.09961 0.799805 -17.7998 -0.799805 -25.8994 -5.5c6.2002 15.5996 17.2002 26.5996 32.5996 34.5c-15.2002 4.2998 -8.89941 2.7002 -24.5996 6.2998\nc14.5996 9.2998 30.2002 13.2002 46.5 14.5996c-5.2002 3.2002 -48.1006 3.60059 -70.2002 -20.8994c7.90039 -1.40039 15.5 -2.7998 23.2002 -4.2002c-23.7998 -7 -44 -19.7002 -62.4004 -35.5996c1.10059 4.7998 2.7002 9.5 3.2998 14.2998\nc0.600586 4.5 0.800781 9.2002 0.100586 13.5996c-1.5 9.40039 -8.90039 15.1006 -19.7002 16.2998c-7.90039 0.900391 -15.5996 -0.0996094 -23.2998 -1.2998c-0.900391 -0.0996094 -1.7002 -0.299805 -2.90039 0c15.7998 14.7998 36 21.7002 53.1006 33.5\nc6 4.5 6.7998 8.2002 3 14.9004zM227.8 241.9c3.2998 -16 12.6006 -25.5 23.7998 -24.3008c-4.59961 11.3008 -12.0996 19.5 -23.7998 24.3008z\" />\n    <glyph glyph-name=\"deploydog\" unicode=\"&#xf38e;\" horiz-adv-x=\"512\" \nd=\"M382.2 312h51.7002v-239.6h-51.7002v20.6992c-19.7998 -24.7998 -52.7998 -24.0996 -73.7998 -14.6992c-26.2002 11.6992 -44.3008 38.0996 -44.3008 71.7998c0 29.7998 14.8008 57.8994 43.3008 70.7998c20.1992 9.09961 52.6992 10.5996 74.7998 -12.9004v103.9z\nM317.5 150.2c0 -18.2002 13.5996 -33.5 33.2002 -33.5c19.7998 0 33.2002 16.3994 33.2002 32.8994c0 17.1006 -13.7002 33.2002 -33.2002 33.2002c-19.6006 0 -33.2002 -16.3994 -33.2002 -32.5996zM188.5 312h51.7002v-239.6h-51.7002v20.6992\nc-19.7998 -24.7998 -52.7998 -24.0996 -73.7998 -14.6992c-26.2002 11.6992 -44.2998 38.0996 -44.2998 71.7998c0 29.7998 14.7998 57.8994 43.2998 70.7998c20.2002 9.09961 52.7002 10.5996 74.7998 -12.9004v103.9zM123.8 150.2c0 -18.2002 13.6006 -33.5 33.2002 -33.5\nc19.7998 0 33.2002 16.3994 33.2002 32.8994c0 17.1006 -13.7002 33.2002 -33.2002 33.2002c-19.7002 0 -33.2002 -16.3994 -33.2002 -32.5996zM448 352h-384c-17.5996 0 -32 -14.5 -32 -32v-256c0 -17.5996 14.5 -32 32 -32h384c17.5996 0 32 14.5 32 32v256\nc0 17.5996 -14.5 32 -32 32zM448 384c35.2002 0 64 -28.7998 64 -64v-256c0 -35.2002 -28.7998 -64 -64 -64h-384c-35.2002 0 -64 28.7998 -64 64v256c0 35.2002 28.7998 64 64 64h384z\" />\n    <glyph glyph-name=\"deskpro\" unicode=\"&#xf38f;\" horiz-adv-x=\"480\" \nd=\"M205.9 -64l31.0996 38.4004c12.2998 0.199219 25.5996 1.39941 36.5 6.59961c38.9004 18.5996 38.4004 61.9004 38.2998 63.7998c-0.0996094 5 -0.799805 4.40039 -28.8994 37.4004h79.0996c-0.200195 -50.1006 -7.2998 -68.5 -10.2002 -75.7002\nc-9.39941 -23.7002 -43.8994 -62.7998 -95.2002 -69.4004c-8.69922 -1.09961 -32.7998 -1.19922 -50.6992 -1.09961zM406.3 103.7l-119.2 -0.100586l17.4004 31.3008l175.5 -0.300781c-15.2002 -17.2998 -35.0996 -30.8994 -73.7002 -30.8994zM362.7 327.6v-168.3h-73.5\nl-32.7002 -55.5h-6.5c-52.2998 0 -58.0996 56.5 -58.2998 58.9004c-1.2002 13.2002 -21.2998 11.5996 -20.1006 -1.7998c1.40039 -15.8008 8.80078 -40 26.4004 -57.1006h-91c-25.5 0 -110.8 26.7998 -107 114v213.3c0 16 9.7002 16.6006 15 16.8008h82\nc0.200195 0 0.299805 -0.100586 0.5 -0.100586c4.2998 0.400391 50.0996 2.10059 50.0996 -43.7002c0 -13.2998 20.2002 -13.3994 20.2002 0c0 18.2002 -5.5 32.8008 -15.7998 43.7002h84.2002c108.7 0.400391 126.5 -79.3994 126.5 -120.2zM230.2 271.6l64 -29.2998\nc13.2998 45.5 -42.2002 71.7002 -64 29.2998z\" />\n    <glyph glyph-name=\"digital-ocean\" unicode=\"&#xf391;\" horiz-adv-x=\"512\" \nd=\"M87 -33.7998v73.5996h73.7002v-73.5996h-73.7002zM25.4004 101.4h61.5996v-61.6006h-61.5996v61.6006zM491.6 271.1c53.2002 -170.3 -73 -327.1 -235.6 -327.1v95.7998h0.299805v0.299805c101.7 0.200195 180.5 101 141.4 208\nc-14.2998 39.6006 -46.1006 71.4004 -85.7998 85.7002c-107.101 38.7998 -208.101 -39.8994 -208.101 -141.7h-95.7998c0 162.2 156.9 288.7 327 235.601c74.2002 -23.2998 133.6 -82.4004 156.6 -156.601zM256.3 40.0996h-0.299805v-0.299805h-95.2998v95.6006h95.5996\nv-95.3008z\" />\n    <glyph glyph-name=\"discord\" unicode=\"&#xf392;\" \nd=\"M297.216 204.8c0 -15.6162 -11.5195 -28.416 -26.1123 -28.416c-14.3359 0 -26.1113 12.7998 -26.1113 28.416s11.5195 28.416 26.1113 28.416c14.5928 0 26.1123 -12.7998 26.1123 -28.416zM177.664 233.216c14.5918 0 26.3682 -12.7998 26.1123 -28.416\nc0 -15.6162 -11.5205 -28.416 -26.1123 -28.416c-14.3359 0 -26.1123 12.7998 -26.1123 28.416s11.5205 28.416 26.1123 28.416zM448 395.264v-459.264c-64.4941 56.9941 -43.8682 38.1279 -118.784 107.776l13.5684 -47.3604h-290.304\nc-28.9287 0 -52.4805 23.5518 -52.4805 52.7363v346.111c0 29.1846 23.5518 52.7363 52.4805 52.7363h343.039c28.9287 0 52.4805 -23.5518 52.4805 -52.7363zM375.04 152.576c0 82.4316 -36.8643 149.248 -36.8643 149.248\nc-36.8643 27.6475 -71.9355 26.8799 -71.9355 26.8799l-3.58398 -4.0957c43.5195 -13.3125 63.7441 -32.5127 63.7441 -32.5127c-60.8115 33.3291 -132.244 33.335 -191.232 7.42383c-9.47168 -4.35156 -15.1035 -7.42383 -15.1035 -7.42383\ns21.2471 20.2246 67.3271 33.5361l-2.55957 3.07227s-35.0723 0.767578 -71.9355 -26.8799c0 0 -36.8643 -66.8164 -36.8643 -149.248c0 0 21.5039 -37.1201 78.0801 -38.9121c0 0 9.47168 11.5195 17.1514 21.248c-32.5117 9.72754 -44.7998 30.208 -44.7998 30.208\nc3.7666 -2.63574 9.97656 -6.05273 10.4961 -6.40039c43.21 -24.1973 104.588 -32.126 159.744 -8.95996c8.95996 3.32812 18.9443 8.19238 29.4395 15.1045c0 0 -12.7998 -20.9922 -46.3359 -30.4639c7.68066 -9.72852 16.8965 -20.7363 16.8965 -20.7363\nc56.5762 1.79199 78.3359 38.9121 78.3359 38.9121z\" />\n    <glyph glyph-name=\"discourse\" unicode=\"&#xf393;\" \nd=\"M225.9 416c122.699 0 222.1 -102.3 222.1 -223.9c0 -121.6 -99.4004 -223.899 -222.1 -223.899l-225.801 -0.200195s-0.0996094 224 -0.0996094 227.9c0 121.6 103.3 220.1 225.9 220.1zM224 64c70.7002 0 128 57.2998 128 128s-57.2998 128 -128 128\ns-128 -57.2998 -128 -128c0 -22.0996 5.59961 -42.9004 15.4004 -61l-22.9004 -75l81.0996 20.0996c16.5 -7.7998 35 -12.0996 54.4004 -12.0996z\" />\n    <glyph glyph-name=\"dochub\" unicode=\"&#xf394;\" horiz-adv-x=\"416\" \nd=\"M397.9 288h-141.9v140.4zM304 256h96v-126.1c0 -129.301 -70.2998 -193.9 -210.8 -193.9h-189.2v512h189.2c12.2002 0 23.7002 -1.09961 34.5996 -3.2998v-84c-10 1.7002 -21.0996 2.5 -33.0996 2.5h-94.7002v-337.3h94.7002c76.7998 0 113.3 33.2998 113.3 100.1v130z\n\" />\n    <glyph glyph-name=\"docker\" unicode=\"&#xf395;\" horiz-adv-x=\"640\" \nd=\"M349.9 211.7h-66.1006v59.3994h66.1006v-59.3994zM349.9 416v-60.7002h-66.1006v60.7002h66.1006zM428.1 271.2v-59.4004h-66.0996v59.4004h66.0996zM271.8 343.3v-60.0996h-66.0996v60.0996h66.0996zM349.9 343.3v-60.0996h-66.1006v60.0996h66.1006zM626.7 243.3\nl13.2998 -8.89941c-1.90039 -3.90039 -7 -14.6006 -8.5 -17.1006c-23.7002 -45.2998 -69.9004 -45.5996 -91.2998 -45.2002c-54.5 -131.699 -171 -204.199 -328.4 -204.199c-72.7002 0 -128.3 22.2998 -165.399 66.1992c-38.2002 45.3008 -52.7002 111.301 -44 162.101\nh434.699c22.6006 -0.400391 39.7002 6 48.4004 10.7002c-19.7002 30.1992 -14.7002 76 3.7002 103.8l9.2998 14l14 -9.2998c24.4004 -18.8008 37.7998 -39.7002 41.0996 -63.7002c25.5 4.7998 58.7002 1.2998 73.1006 -8.40039zM115.6 271.2h0.100586v-59.4004h-66.1006\nv59.4004h66zM193.7 271.2v-59.4004h-66.1006v59.4004h66.1006zM271.8 271.2v-59.4004h-66.0996v59.4004h66.0996zM193.7 343.3v-60.0996h-66.1006v60.0996h66.1006z\" />\n    <glyph glyph-name=\"draft2digital\" unicode=\"&#xf396;\" horiz-adv-x=\"480\" \nd=\"M480 49.9004l-144 -81.9004v64.2002l-336 -0.100586c18.2998 19.1006 84.5 87.8008 161.1 174.801c32.6006 37.1992 78 83.2998 69.7002 127.6c-5.2998 28.2998 -42.2002 50.7998 -83.2998 33.5c-8.59961 -3.59961 -24.5 -17.4004 -26.2998 -24.7002\nc28.2998 -4.7002 48 -29.7002 48 -56.7998c0 -31.7002 -25.6006 -57.4004 -57.2998 -57.4004c-37.3008 0 -62.2002 34.1006 -56.7002 67.1006c1.2002 7.89941 5.09961 26.7998 18.2002 47.7002c14.8994 23.8994 45.1992 54.8994 104.3 67.2998\nc103.8 21.7002 161.6 -36.6006 166 -41.2002c28.8994 -29.9004 48 -90.7002 12.7998 -153.3c-30 -53.4004 -81 -114.3 -111.8 -149.3h91.2998v64.6992zM369.9 77v-54.4004l47.0996 27.2002zM134.2 286.6c0 12.3008 -10 22.4004 -22.4004 22.4004\nc-12.3994 0 -22.3994 -10 -22.3994 -22.4004c0 -12.3994 10 -22.3994 22.3994 -22.3994c12.4004 0 22.4004 10 22.4004 22.3994zM82.5 67.5h114.4c17.5996 19.2002 91.5 100.8 128.5 166.7c36.5996 65.0996 -5.80078 113.3 -5.80078 113.3\nc-14.1992 14.9004 -36.8994 36.2002 -82.1992 38.2998c6.7998 -5.5 16.8994 -16.8994 24.2998 -35.7002c11.8994 -30.2998 6.7002 -69.5996 -28.4004 -112.699c-53.0996 -65.2002 -125.2 -142.5 -150.8 -169.9z\" />\n    <glyph glyph-name=\"dribbble-square\" unicode=\"&#xf397;\" \nd=\"M90.2002 219.8c8.89941 42.4004 37.3994 77.7002 75.7002 95.7002c3.59961 -4.90039 28 -38.7998 50.6992 -79c-64 -17 -120.3 -16.7998 -126.399 -16.7002zM314.6 294c-2.5 -3.5 -23 -31.0996 -71.5996 -49.4004c-22.4004 41.1006 -47.2002 74.9004 -51 80\nc43.2998 10.5 89 -0.799805 122.6 -30.5996zM140.1 84c14.3008 29.2002 53 66.7998 108.101 85.5996c19.2002 -49.7998 27.2002 -91.5996 29.2002 -103.6c-44 -18.7002 -96.8008 -13.5996 -137.301 18zM238.9 192.2c-49.4004 -13.9004 -94.3008 -53.9004 -116.5 -91.7998\nc-21.8008 24.2998 -35.1006 56.2998 -35.1006 91.3994c0 1.40039 0.100586 2.7998 0.100586 4.2002c6 -0.200195 72.1992 -1 140.399 19.4004c3.90039 -7.7002 7.7002 -15.4004 11.1006 -23.2002zM273.8 175.9c42.7998 6.89941 80.5 -4.30078 85.1006 -5.80078\nc-6.10059 -38 -27.9004 -70.8994 -58.6006 -91.5996c-1.39941 8.2998 -8.59961 48.2998 -26.5 97.4004zM253.5 224.3c50.5 20.7002 73.4004 50 76.2998 53.9004c19.1006 -23.2002 30.6006 -52.7998 30.9004 -85.1006c-4.5 1 -49.7002 10.1006 -95.2002 4.40039\nc-3.7002 9 -7.2002 17 -12 26.7998zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM384 192c0 88.2002 -71.7998 160 -160 160s-160 -71.7998 -160 -160s71.7998 -160 160 -160\ns160 71.7998 160 160z\" />\n    <glyph glyph-name=\"dyalog\" unicode=\"&#xf399;\" horiz-adv-x=\"416\" \nd=\"M0 416h171.2c74.5 0 137.7 -24 182.5 -69.5996c40.2002 -40.9004 62.2998 -95.6006 62.2998 -154.301c0 -111.399 -84.0996 -224.1 -244.8 -224.1h-171.2v64h171.2c122.2 0 180.8 84 180.8 160.1c0 79.7002 -67.4004 159.9 -180.8 159.9h-107.2v-55.2002h-64v119.2z\" />\n    <glyph glyph-name=\"earlybirds\" unicode=\"&#xf39a;\" horiz-adv-x=\"480\" \nd=\"M313.2 400.5c1.2002 13 21.2998 14 36.5996 8.7002c0.900391 -0.299805 26.2002 -9.7002 19 -15.2002c-27.8994 7.40039 -56.3994 -18.2002 -55.5996 6.5zM112.2 393.6c-7.7998 6.2002 19.8994 16.4004 20.8994 16.7002c16.8008 5.7002 38.9004 4.60059 40.2002 -9.59961\nc0.900391 -27.1006 -30.3994 1 -61.0996 -7.10059zM319.4 288c8.7998 0 16 -7.2002 16 -16s-7.2002 -16 -16 -16c-8.80078 0 -16 7.2002 -16 16s7.19922 16 16 16zM159.7 288c8.7998 0 16 -7.2002 16 -16s-7.2002 -16 -16 -16s-16 7.2002 -16 16s7.2002 16 16 16z\nM478.2 124.8c-9.90039 -24 -40.7002 -11 -63.9004 1.2002c-13.5 -69.0996 -58.0996 -111.4 -126.3 -124.2c0.299805 -0.899414 -2 0.100586 24 -1c33.5996 -1.39941 63.7998 3.10059 97.4004 8c-19.8008 13.7998 -11.4004 37.1006 -9.80078 38.1006\nc1.40039 0.899414 14.7002 -1.7002 21.6006 -11.5c8.59961 12.5 28.3994 14.7998 30.2002 13.5996c1.59961 -1.09961 6.59961 -20.9004 -6.90039 -34.5996c4.7002 0.899414 8.2002 1.59961 9.7998 2.09961c2.60059 0.799805 17.7002 -11.2998 3.10059 -13.2998\nc-14.3008 -2.2998 -22.6006 -5.10059 -47.1006 -10.7998c-45.8994 -10.7002 -85.8994 -11.8008 -117.7 -12.8008l1 -11.5996c3.80078 -18.0996 -23.3994 -24.2998 -27.5996 -6.2002c0.799805 -17.8994 -27.0996 -21.7998 -28.4004 1l-0.5 -5.2998\nc-0.699219 -18.4004 -28.3994 -17.9004 -28.2998 0.599609c-7.5 -13.5 -28.0996 -6.7998 -26.3994 8.5l1.19922 12.4004c-36.6992 -0.900391 -59.6992 -3.09961 -61.7998 -3.09961c-20.8994 0 -20.8994 31.5996 0 31.5996c2.40039 0 27.7002 -1.2998 63.2002 -2.7998\nc-61.0996 15.5 -103.7 55 -114.9 118.2c-25 -12.8008 -57.5 -26.8008 -68.1992 -0.800781c-10.5 25.4004 21.5 42.6006 66.7998 73.4004c0.700195 6.59961 1.59961 13.2998 2.7002 19.7998c-14.4004 19.6006 -11.6006 36.2998 -16.1006 60.4004\nc-16.7998 -2.40039 -23.2002 9.09961 -23.5996 23.0996c0.299805 7.2998 2.09961 14.9004 2.39941 15.4004c1.10059 1.7998 10.1006 2 12.7002 2.59961c6 31.7002 50.6006 33.2002 90.9004 34.5c19.7002 21.7998 45.2002 41.5 80.8994 48.2998\nc-15.2998 19.4004 -3.39941 39.9004 -2.39941 40.4004c1.7002 0.799805 21.2002 -4.2998 26.2998 -23.2002c5.2002 8.7998 18.2998 11.4004 19.5996 10.7002c1.10059 -0.599609 6.40039 -15 -4.89941 -25.9004c40.2998 -3.5 72.2002 -24.6992 96 -50.6992\nc36.0996 -1.5 71.7998 -5.90039 77.0996 -34c2.7002 -0.600586 11.6006 -0.800781 12.7002 -2.60059c0.299805 -0.5 2.09961 -8.09961 2.40039 -15.3994c-0.5 -13.9004 -6.80078 -25.4004 -23.6006 -23.1006c-3.2002 -17.2998 -2.7002 -32.8994 -8.7002 -47.7002\nc2.40039 -11.6992 4 -23.7998 4.80078 -36.3994c37 -25.4004 70.2998 -42.5 60.2998 -66.9004zM207.4 288.1c0.899414 44 -37.9004 42.2002 -78.6006 40.3008c-21.7002 -1 -38.8994 -1.90039 -45.5 -13.9004c-11.3994 -20.9004 5.90039 -92.9004 23.2002 -101.2\nc9.7998 -4.7002 73.4004 -7.89941 86.2998 7.10059c8.2002 9.39941 15 49.3994 14.6006 67.6992zM259.4 229.8c-4.30078 12.4004 -6 30.1006 -15.3008 32.7002c-2 0.5 -9 0.5 -11 0c-10 -2.7998 -10.7998 -22.0996 -17 -37.2002c15.4004 0 19.3008 -9.7002 23.7002 -9.7002\nc4.2998 0 6.2998 11.3008 19.6006 14.2002zM395.1 314.5c-6.59961 12.0996 -24.7998 12.9004 -46.5 13.9004c-40.1992 1.89941 -78.1992 3.7998 -77.2998 -40.3008c-0.5 -18.2998 5 -58.2998 13.2002 -67.7998c13 -14.8994 76.5996 -11.7998 86.2998 -7.09961\nc15.7998 7.59961 36.5 78.8994 24.2998 101.3z\" />\n    <glyph glyph-name=\"erlang\" unicode=\"&#xf39d;\" horiz-adv-x=\"640\" \nd=\"M87.2002 394.5c-41.5 -50.2002 -65.6006 -116.2 -65.5 -192.9c-0.100586 -86.7998 29 -159.5 78.7002 -212.1h-100.4v405h87.2002zM325.4 384.8c46.1992 -0.0996094 79.5996 -33.5 80.6992 -83.2002h-169.899c4.09961 49.7002 43.2998 83.1006 89.2002 83.2002z\nM556.1 394.4h0.300781l-0.100586 0.0996094zM556.4 394.4h83.5996v-405h-80.7998c21.3994 23 40.5 49.8994 57.8994 80.7998l-96.3994 48.2002c-33.9004 -55.1006 -83.4004 -105.801 -151.9 -106.101c-99.7002 0.400391 -138.8 85.6006 -138.6 195.3h372.399\nc0.5 12.4004 0.5 18.1006 0 24.1006c2.5 65.2002 -14.7998 120 -46.1992 162.7z\" />\n    <glyph glyph-name=\"facebook-f\" unicode=\"&#xf39e;\" horiz-adv-x=\"320\" \nd=\"M279.14 160h-74.6895v-224h-100.17v224h-81.3906v92.6602h81.3906v70.6201c0 80.3398 47.8594 124.72 121.08 124.72c35.0693 0 71.75 -6.25977 71.75 -6.25977v-78.8906h-40.4199c-39.8203 0 -52.2402 -24.71 -52.2402 -50.0596v-60.1299h88.9102z\" />\n    <glyph glyph-name=\"facebook-messenger\" unicode=\"&#xf39f;\" horiz-adv-x=\"512\" \nd=\"M256.55 440c140.04 0 247.45 -102.34 247.45 -240.57c0 -175.13 -166.15 -273.229 -319.44 -231.04c-8.96973 2.44043 -9.64941 0.600586 -62.5596 -22.6992c-2.10449 -0.918945 -5.67578 -1.66504 -7.97168 -1.66504c-10.624 0 -19.543 8.61719 -19.9082 19.2344\nc-1.41992 46.3701 0.299805 50.7207 -8.0498 58.2305c-48.3604 43.1602 -78.0703 105.64 -78.0703 177.939c0 138.23 108.52 240.57 248.55 240.57zM405.79 254.87c7.0498 11.0801 -6.65039 23.5996 -17.0898 15.6201l-78.4102 -59.3799\nc-2.20801 -1.65625 -6.24023 -3 -9 -3s-6.79199 1.34375 -9 3l-58.0596 43.46c-5.48926 4.09961 -15.5049 7.42676 -22.3564 7.42676c-11.3438 0 -25.4805 -7.77637 -31.5537 -17.3574l-73 -115.569c-7.05078 -11.0703 6.64941 -23.6006 17.1094 -15.6699l78.3701 59.4395\nc2.20801 1.65625 6.24023 3 9 3s6.79199 -1.34375 9 -3l58.0801 -43.4697c5.48926 -4.09766 15.5039 -7.42285 22.3535 -7.42285c11.3428 0 25.4805 7.77441 31.5566 17.3525z\" />\n    <glyph glyph-name=\"firstdraft\" unicode=\"&#xf3a1;\" horiz-adv-x=\"384\" \nd=\"M384 256h-64v-128h-128v-128h-192v25.5996h166.4v128h128v128h89.5996v-25.5996zM358.4 217.6h25.5996v-153.6h-128v-128h-192v25.5996h166.4v128h128v128zM384 25.5996v-25.5996h-64v-64h-25.5996v89.5996h89.5996zM0 448h384v-128h-128v-128h-128v-128h-128v384z\" />\n    <glyph glyph-name=\"fonticons-fi\" unicode=\"&#xf3a2;\" horiz-adv-x=\"384\" \nd=\"M114.4 224h92.3994l-15.2002 -51.2002h-76.3994v-157.8c0 -8 -2.7998 -9.2002 4.39941 -10l59.6006 -5.59961v-34.4004h-179.2v35.2002l29.2002 2.7998c7.2002 0.799805 9.2002 3.2002 9.2002 10.7998v155.8c0 3.2002 -4 3.2002 -8 3.2002h-30.4004v51.2002h38.4004\nv28.7998c0 68 36.3994 96 106 96c46.7998 0 88.7998 -11.2002 88.7998 -72.3994l-69.6006 -8.40039c0.400391 25.5996 -6 31.5996 -22.3994 31.5996c-25.2002 0 -26 -13.5996 -26 -37.5996v-32c0 -3.2002 -4.7998 -6 -0.799805 -6zM384 -35h-140.8v34.4004l28 3.59961\nc7.2002 0.799805 10.3994 2.40039 10.3994 10v148c0 5.59961 -4 9.2002 -9.19922 10.7998l-33.2002 8.7998l9.2002 40.4004h110v-208c0 -8 -3.60059 -8.7998 4 -10l21.5996 -3.59961v-34.4004zM354 312.2l12.4004 -45.6006l-10 -10l-42.8008 22.8008l-42.7998 -22.8008\nl-10 10l12.4004 45.6006l-30 36.3994l4.7998 10h38l21.2002 38.4004h12.7998l21.2002 -38.4004h38l4.7998 -13.1992z\" />\n    <glyph glyph-name=\"fort-awesome-alt\" unicode=\"&#xf3a3;\" horiz-adv-x=\"512\" \nd=\"M208 210.6c2.09961 0 3.7002 -1.59961 3.7002 -3.69922v-51.7002c0 -2.10059 -1.60059 -3.7002 -3.7002 -3.7002h-22.2002c-2.09961 0 -3.7002 1.59961 -3.7002 3.7002v51.7002c0 2.09961 1.60059 3.69922 3.7002 3.69922h22.2002zM326.2 210.6\nc2 0 3.59961 -1.59961 3.7002 -3.69922v-51.7002c0 -2.10059 -1.60059 -3.7002 -3.7002 -3.7002h-22.2002c-2.09961 0 -3.7002 1.59961 -3.7002 3.7002v51.7002c0 2.09961 1.60059 3.69922 3.7002 3.69922h22.2002zM458.2 335.7\nc28.8994 -40.7002 45.7998 -90.2002 45.7998 -143.7c0 -2 0 -4 -0.0996094 -6c0 -0.700195 0 -1.2998 -0.100586 -2c0 -1.2998 -0.0996094 -2.7002 -0.200195 -4c0 -0.799805 -0.0996094 -1.5 -0.0996094 -2.2998\nc-0.0996094 -1.2002 -0.0996094 -2.40039 -0.200195 -0.700195c-0.0996094 -0.799805 -0.0996094 -1.59961 -0.200195 -2.40039c-0.0996094 -1.19922 -0.199219 -2.39941 -0.299805 -3.5c-0.0996094 -0.799805 -0.200195 -1.59961 -0.200195 -2.39941\nc-0.0996094 -1.2002 -0.299805 -2.40039 -0.399414 -3.60059c-0.100586 -0.799805 -0.200195 -1.5 -0.299805 -2.2998c-0.200195 -1.2998 -0.400391 -2.59961 -0.5 -3.89941c-0.100586 -0.600586 -0.200195 -1.30078 -0.300781 -1.90039l-0.899414 -5.7002\nc-0.100586 -0.599609 -0.200195 -1.09961 -0.299805 -1.7002c-0.200195 -1.2998 -0.5 -2.69922 -0.800781 -4c-0.199219 -0.799805 -0.299805 -1.59961 -0.5 -2.39941c-0.199219 -1.10059 -0.5 -2.2002 -0.699219 -3.2002\nc-0.200195 -0.900391 -0.400391 -1.7002 -0.600586 -2.59961c-0.200195 -1 -0.5 -2 -0.700195 -3c-0.199219 -0.900391 -0.5 -1.80078 -0.699219 -2.7002c-0.300781 -1 -0.5 -1.90039 -0.800781 -2.90039c-0.199219 -0.899414 -0.5 -1.7998 -0.799805 -2.7002\nc-0.299805 -0.899414 -0.599609 -1.89941 -0.799805 -2.7998c-0.299805 -0.899414 -0.5 -1.7998 -0.799805 -2.7002c-0.299805 -0.899414 -0.600586 -1.7998 -0.900391 -2.7998c-0.5 -1.59961 -1.09961 -3.2998 -1.7002 -4.89941\nc-0.299805 -0.900391 -0.599609 -1.80078 -1 -2.80078c-0.399414 -1 -0.699219 -2 -1.09961 -3c-0.299805 -0.799805 -0.599609 -1.5 -0.900391 -2.2998l-1.19922 -3c-0.300781 -0.700195 -0.600586 -1.5 -0.900391 -2.2002c-0.400391 -1 -0.799805 -2 -1.2998 -3\nl-0.900391 -2.09961c-0.399414 -1 -0.899414 -2 -1.39941 -3c-0.300781 -0.700195 -0.600586 -1.2998 -0.900391 -2c-0.5 -1 -1 -2.09961 -1.5 -3.09961c-0.299805 -0.600586 -0.599609 -1.10059 -0.799805 -1.7002c-0.600586 -1.10059 -1.10059 -2.2002 -1.7002 -3.2998\nc-0.0996094 -0.200195 -0.200195 -0.300781 -0.299805 -0.5c-2.2002 -4.10059 -4.40039 -8.2002 -6.7998 -12.2002c-0.200195 -0.400391 -0.5 -0.799805 -0.700195 -1.2002c-0.700195 -1.09961 -1.2998 -2.2002 -2 -3.2998\nc-0.299805 -0.5 -0.600586 -0.900391 -0.900391 -1.40039c-0.700195 -1.09961 -1.39941 -2.09961 -2 -3.2002c-0.299805 -0.5 -0.599609 -0.899414 -0.899414 -1.39941c-0.700195 -1.10059 -1.40039 -2.10059 -2.10059 -3.2002\nc-0.299805 -0.400391 -0.599609 -0.799805 -0.799805 -1.2002c-0.799805 -1.09961 -1.5 -2.2002 -2.2998 -3.2998c-0.200195 -0.200195 -0.299805 -0.5 -0.5 -0.700195c-37.6006 -54.7002 -94.5 -91.3994 -160.101 -102.399\nc-0.899414 -0.100586 -1.69922 -0.300781 -2.59961 -0.400391c-1 -0.200195 -2.09961 -0.299805 -3.09961 -0.5c-0.900391 -0.0996094 -1.80078 -0.299805 -2.80078 -0.400391c-1 -0.0996094 -2 -0.299805 -3 -0.399414c-1 -0.100586 -2 -0.200195 -2.89941 -0.299805\nc-1 -0.100586 -1.90039 -0.200195 -2.90039 -0.300781c-1 -0.0996094 -2.09961 -0.199219 -3.09961 -0.299805c-0.900391 -0.0996094 -1.7998 -0.200195 -2.7002 -0.200195c-1.09961 -0.0996094 -2.2998 -0.0996094 -3.40039 -0.199219\nc-0.799805 0 -1.69922 -0.100586 -2.5 -0.100586c-1.2998 -0.0996094 -2.59961 -0.0996094 -3.89941 -0.0996094c-0.700195 0 -1.40039 -0.100586 -2.10059 -0.100586c-2 0 -4 -0.0996094 -6 -0.0996094s-4 0 -6 0.0996094c-0.699219 0 -1.39941 0 -2.09961 0.100586\nc-1.2998 0 -2.59961 0.0996094 -3.90039 0.0996094c-0.799805 0 -1.69922 0.100586 -2.5 0.100586c-1.09961 0.0996094 -2.2998 0.0996094 -3.39941 0.199219c-0.900391 0.100586 -1.7998 0.100586 -2.7002 0.200195c-1 0.100586 -2.09961 0.200195 -3.09961 0.299805\nc-1 0.100586 -1.90039 0.200195 -2.90039 0.300781c-1 0.0996094 -2 0.199219 -2.90039 0.299805c-1 0.0996094 -2 0.200195 -3 0.399414c-0.899414 0.100586 -1.7998 0.300781 -2.7998 0.400391s-2.09961 0.299805 -3.09961 0.5\nc-0.900391 0.0996094 -1.7002 0.299805 -2.60059 0.400391c-65.5996 10.8994 -122.5 47.6992 -160 99.3994c-0.199219 0.200195 -0.299805 0.5 -0.5 0.700195c-0.799805 1.09961 -1.59961 2.2002 -2.2998 3.2998c-0.299805 0.400391 -0.599609 0.799805 -0.799805 1.2002\nc-0.700195 1.09961 -1.40039 2.09961 -2.09961 3.2002c-0.300781 0.5 -0.600586 0.899414 -0.900391 1.39941c-0.700195 1.10059 -1.40039 2.10059 -2 3.2002c-0.299805 0.5 -0.599609 0.900391 -0.900391 1.40039c-0.699219 1.09961 -1.2998 2.2002 -2 3.2998\nc-0.199219 0.400391 -0.5 0.799805 -0.699219 1.2002c-2.40039 4 -4.60059 8.09961 -6.80078 12.2002c-0.0996094 0.199219 -0.199219 0.299805 -0.299805 0.5c-0.599609 1.09961 -1.09961 2.19922 -1.7002 3.2998c-0.299805 0.599609 -0.599609 1.09961 -0.799805 1.7002\nc-0.5 1 -1 2.09961 -1.5 3.09961c-0.299805 0.700195 -0.599609 1.2998 -0.899414 2c-0.5 1 -0.900391 2 -1.40039 3l-0.900391 2.09961c-0.399414 1 -0.899414 2 -1.2998 3c-0.299805 0.700195 -0.599609 1.5 -0.899414 2.2002l-1.2002 3\nc-0.299805 0.799805 -0.600586 1.5 -0.900391 2.2998c-0.399414 1 -0.799805 2 -1.09961 3c-0.299805 0.900391 -0.600586 1.80078 -1 2.80078c-0.600586 1.59961 -1.10059 3.2998 -1.7002 4.89941c-0.299805 0.900391 -0.599609 1.7998 -0.900391 2.7998\nc-0.299805 0.900391 -0.5 1.80078 -0.799805 2.7002c-0.299805 0.900391 -0.599609 1.90039 -0.799805 2.7998c-0.299805 0.900391 -0.5 1.80078 -0.799805 2.7002c-0.299805 1 -0.5 1.90039 -0.799805 2.90039c-0.200195 0.899414 -0.5 1.7998 -0.700195 2.7002\nc-0.299805 1 -0.5 2 -0.700195 3c-0.200195 0.899414 -0.400391 1.69922 -0.599609 2.59961c-0.200195 1.09961 -0.5 2.2002 -0.700195 3.2002c-0.200195 0.799805 -0.299805 1.59961 -0.5 2.39941c-0.299805 1.30078 -0.5 2.7002 -0.799805 4\nc-0.100586 0.600586 -0.200195 1.10059 -0.300781 1.7002l-0.899414 5.7002c-0.100586 0.599609 -0.200195 1.2998 -0.299805 1.90039c-0.200195 1.2998 -0.400391 2.59961 -0.5 3.89941c-0.100586 0.799805 -0.200195 1.5 -0.300781 2.2998\nc-0.0996094 1.2002 -0.299805 2.40039 -0.399414 3.60059c-0.100586 0.799805 -0.200195 1.59961 -0.200195 2.39941c-0.0996094 1.2002 -0.200195 2.40039 -0.299805 3.5c-0.100586 0.800781 -0.100586 1.60059 -0.200195 2.40039\nc-0.0996094 1.2002 -0.200195 2.40039 -0.200195 3.7002c0 0.799805 -0.0996094 1.5 -0.0996094 2.2998c-0.100586 1.2998 -0.100586 2.7002 -0.200195 4c0 0.700195 0 1.2998 -0.0996094 2c0 2 -0.100586 4 -0.100586 6c0 53.5 16.9004 103 45.7998 143.6\nc2.30078 3.2002 4.7002 6.40039 7.10059 9.5c4.89941 6.2002 10.0996 12.3008 15.5996 18c2.7002 2.90039 5.5 5.7002 8.40039 8.40039c2.89941 2.7002 5.7998 5.40039 8.7998 8c4.5 3.90039 9.09961 7.59961 13.9004 11.2002c1.59961 1.2002 3.19922 2.39941 4.7998 3.5\nc27.2998 19.5996 59 33.7002 93.2998 40.7998c16.0996 3.2998 32.9004 5 50 5s33.7998 -1.7002 50 -5c34.2998 -7 66 -21.0996 93.5996 -40.7002c1.60059 -1.2002 3.2002 -2.2998 4.80078 -3.5c4.7998 -3.59961 9.39941 -7.2998 13.8994 -11.2002\nc12 -10.3994 23 -21.8994 32.7998 -34.3994c2.5 -3.10059 4.80078 -6.2998 7.10059 -9.5zM448 76.5v71.2998c0 2.10059 -1.59961 3.7002 -3.7002 3.7002h-22.2002c-2.09961 0 -3.69922 -1.59961 -3.69922 -3.7002v-25.7998h-29.5v144\nc0 2.09961 -1.60059 3.7002 -3.7002 3.7002h-22.1006c-2.09961 0 -3.69922 -1.60059 -3.69922 -3.7002v-25.9004h-29.5v25.9004c0 2.09961 -1.60059 3.7002 -3.7002 3.7002h-22.2002c-2.09961 0 -3.7002 -1.60059 -3.7002 -3.7002v-25.9004h-29.5v25.9004\nc0 4.7998 -6.5 3.7002 -9.5 3.7002v30.7002c6.7002 1.59961 13.7998 2.7998 20.7998 2.7998c8.80078 0 16.8008 -3.5 25.4004 -3.5c3.7002 0 22.4004 0.899414 22.4004 6.5v48.3994c0 2.10059 -1.60059 3.7002 -3.7002 3.7002c-4.2002 0 -12.2002 -3.5 -19.4004 -3.5\nc-7.89941 0 -16.8994 3.5 -26.2998 3.5c-6.5 0 -12.9004 -0.899414 -19.2002 -2.2998v3.90039c4.40039 2.09961 7.40039 6.69922 7.40039 11.5c0 16.7998 -25.4004 16.7998 -25.4004 0c0 -4.80078 3 -9.5 7.40039 -11.5v-90.2002c-3 0 -9.5 1.09961 -9.5 -3.7002v-25.9004\nh-29.5v25.9004c0 2.09961 -1.60059 3.7002 -3.7002 3.7002h-22.2002c-2.09961 0 -3.7002 -1.60059 -3.7002 -3.7002v-25.9004h-29.5v25.9004c0 2.09961 -1.59961 3.7002 -3.69922 3.7002h-22.1006c-2.09961 0 -3.7002 -1.60059 -3.7002 -3.7002v-144h-29.5996v25.7998\nc0 2.10059 -1.59961 3.7002 -3.7002 3.7002h-22.0996c-2.10059 0 -3.7002 -1.59961 -3.7002 -3.7002v-71.2998c9.40039 -15.5 20.5996 -29.9004 33.5996 -42.9004c20.6006 -20.5996 44.5 -36.6992 71.2002 -48c13.9004 -5.89941 28.2002 -10.2998 42.9004 -13.1992v75.7998\nc0 58.5996 88.5996 58.5996 88.5996 0v-75.7998c14.7002 2.89941 29 7.39941 42.9004 13.1992c26.7002 11.3008 50.5996 27.4004 71.2002 48c13 13 24.1992 27.4004 33.5996 42.9004z\" />\n    <glyph glyph-name=\"freebsd\" unicode=\"&#xf3a4;\" \nd=\"M303.7 351.8c11.0996 11.1006 115.5 77 139.2 53.2002c23.6992 -23.7002 -42.1006 -128.1 -53.2002 -139.2c-11.1006 -11.0996 -39.4004 -0.899414 -63.1006 22.9004c-23.7998 23.7002 -34.0996 52 -22.8994 63.0996zM109.9 379.9\nc-31.6006 -19.4004 -57.9004 -46.5 -76.4004 -78.7002c-20.7998 36.2998 -44.5 89.0996 -27.9004 105.7c16.4004 16.5 68 -6.40039 104.301 -27zM406.7 274c3.2998 5.5 7 11.7998 10.8994 18.7998c17.6006 -31.2998 27.7002 -67.3994 27.7002 -105.8\nc0 -119.1 -96.5 -215.6 -215.6 -215.6c-119.101 0 -215.601 96.5996 -215.601 215.6c0 119.1 96.5 215.6 215.601 215.6c35.8994 0 69.7002 -8.7998 99.5 -24.2998c-7.2998 -4 -13.9004 -8 -19.6006 -11.5996c-26 4.7002 -32.8994 -16.4004 -14.8994 -48.7002\nc21.7998 -43.0996 89 -90.4004 109.3 -70.0996c5.40039 5.39941 6 14.7998 2.7002 26.0996z\" />\n    <glyph glyph-name=\"gitkraken\" unicode=\"&#xf3a6;\" horiz-adv-x=\"592\" \nd=\"M565.7 329.9c11.7998 -31.6006 18.2998 -65.7002 18.2998 -101.4c0 -155.1 -122.6 -281.6 -276.3 -287.7v145.8c-8.40039 -0.5 -16.6006 -0.399414 -23.4004 0v-145.899c-153.7 6.2002 -276.3 132.7 -276.3 287.8c0 35.7002 6.5 69.7998 18.2998 101.3\nc2.2998 6.2002 9.2998 9.2002 15.2998 6.60059c5.7002 -2.40039 8.5 -8.80078 6.30078 -14.6006c-10.9004 -29 -16.9004 -60.5 -16.9004 -93.2998c0 -134.6 100.4 -245.7 230.2 -262.7v123.7c-7.90039 1.59961 -15.4004 3.7002 -23 6.2002v-104\nc-106.7 26 -185.9 122.1 -185.9 236.8c0 91.7998 50.7998 171.8 125.8 213.3c5.80078 3.2002 13 0.900391 15.9004 -5c2.7002 -5.5 0.700195 -12.0996 -4.7002 -15.0996c-67.8994 -37.7002 -113.899 -110.101 -113.899 -193.2c0 -93.4004 57.8994 -173.2 139.8 -205.4\nv92.2002c-14.2002 4.5 -24.7998 17.7002 -24.7998 33.5c0 13.1006 6.69922 24.4004 17.2998 30.5c-8.2002 79.6006 -44.5 58.6006 -44.5 83.9004v14.7998c0 38 87.8994 161.7 129.1 164.7c2.60059 0.200195 5.10059 0.200195 7.60059 0\nc41.0996 -2.90039 129 -126.7 129 -164.7v-14.7002c0 -25.2998 -36.2002 -4.39941 -44.5 -83.8994c10.5 -6.10059 17.2998 -17.4004 17.2998 -30.5c0 -15.8008 -10.7002 -29 -24.9004 -33.5v-92.2002c81.9004 32.2998 139.8 112.1 139.8 205.399\nc0 83.2002 -46 155.601 -113.899 193.2c-5.2998 2.90039 -7.40039 9.60059 -4.7002 15.1006c2.90039 5.89941 10.2002 8.19922 15.9004 5c75 -41.5 125.8 -121.5 125.8 -213.301c0 -114.699 -79.2002 -210.899 -185.9 -236.8v104\nc-7.5 -2.59961 -15.0996 -4.7002 -23 -6.2002v-123.699c129.9 17 230.2 128.1 230.2 262.699c0 32.8008 -6 64.3008 -16.9004 93.3008c-2.19922 5.69922 0.600586 12.1992 6.30078 14.5996c6 2.59961 13 -0.5 15.2998 -6.59961zM365.9 172.5\nc-13.1006 0 -23.7002 -10.5996 -23.7002 -23.7002c0 -13.2002 10.7002 -23.7002 23.7002 -23.7002c13.0996 0 23.6992 10.6006 23.6992 23.7002c0 13.2002 -10.6992 23.7002 -23.6992 23.7002zM226.1 125.2c13.2002 0 23.7002 10.7002 23.7002 23.7002\nc0 13.0996 -10.5996 23.6992 -23.7002 23.6992c-13.1992 0 -23.6992 -10.6992 -23.6992 -23.6992s10.5 -23.7002 23.6992 -23.7002z\" />\n    <glyph glyph-name=\"gofore\" unicode=\"&#xf3a7;\" horiz-adv-x=\"400\" \nd=\"M324 128.2c54.2998 0 65.7002 -50.1006 67.7002 -77.7002c-46.5 -56.2998 -107.8 -82.5 -171 -82.5c-123.7 0 -220.7 101.5 -220.7 224c0 123.4 98 224 220.7 224c59 0 114.3 -23.2998 156.1 -65.5996l-62.2998 -63.3008c-25 25.4004 -58.2998 39.4004 -93.5996 39.4004\nc-73.2002 0 -132.4 -60.2998 -132.4 -134.4c0 -74.1992 59.2002 -134.399 132.4 -134.399c33.5996 0 65.3994 12.7002 89.8994 35.7998v34.7002h13.2002zM311.9 240.7c47.6992 0 88.0996 -35 88.0996 -100.2v-30.5996c-15.5 26.6992 -42.5 41.7998 -76 41.7998h-118.4v89\nh106.301z\" />\n    <glyph glyph-name=\"goodreads\" unicode=\"&#xf3a8;\" \nd=\"M299.9 256.8c5.09961 -37.2998 -4.7002 -79 -35.9004 -100.7c-22.2998 -15.5 -52.7998 -14.0996 -70.7998 -5.69922c-37.1006 17.2998 -49.5 58.5996 -46.7998 97.1992c4.2998 60.9004 40.8994 87.9004 75.2998 87.5c46.8994 0.200195 71.7998 -31.7998 78.2002 -78.2998\nzM448 360v-336c0 -30.9004 -25.0996 -56 -56 -56h-336c-30.9004 0 -56 25.0996 -56 56v336c0 30.9004 25.0996 56 56 56h336c30.9004 0 56 -25.0996 56 -56zM330 134.8c0 0 -0.0996094 34 -0.0996094 217.3h-29v-40.2998c-0.800781 -0.299805 -1.2002 0.5 -1.60059 1.2002\nc-9.59961 20.7002 -35.8994 46.2998 -76 46c-51.8994 -0.400391 -87.2002 -31.2002 -100.6 -77.7998c-4.2998 -14.9004 -5.7998 -30.1006 -5.5 -45.6006c1.7002 -77.8994 45.0996 -117.8 112.399 -115.199c28.9004 1.09961 54.5 17 69 45.1992\nc0.5 1 1.10059 1.90039 1.7002 2.90039c0.200195 -0.0996094 0.400391 -0.0996094 0.600586 -0.200195c0.299805 -3.7998 0.199219 -30.7002 0.0996094 -34.5c-0.200195 -14.7998 -2 -29.5 -7.2002 -43.5c-7.7998 -21 -22.2998 -34.7002 -44.5 -39.5\nc-17.7998 -3.89941 -35.5996 -3.7998 -53.2002 1.2002c-21.5 6.09961 -36.5 19 -41.0996 41.7998c-0.299805 1.60059 -1.2998 1.2998 -2.2998 1.2998h-26.7998c0.799805 -10.5996 3.19922 -20.2998 8.5 -29.1992c24.1992 -40.5 82.6992 -48.5 128.199 -37.4004\nc49.9004 12.2998 67.3008 54.9004 67.4004 106.3z\" />\n    <glyph glyph-name=\"goodreads-g\" unicode=\"&#xf3a9;\" horiz-adv-x=\"384\" \nd=\"M42.5996 44.7002h2.80078c12.6992 0 25.5 0 38.1992 -0.100586c1.60059 0 3.10059 0.400391 3.60059 -2.09961c7.09961 -34.9004 30 -54.5996 62.8994 -63.9004c26.9004 -7.59961 54.1006 -7.7998 81.3008 -1.7998c33.7998 7.40039 56 28.2998 68 60.4004\nc8 21.5 10.6992 43.7998 11 66.5c0.0996094 5.7998 0.299805 47 -0.200195 52.7998l-0.900391 0.299805c-0.799805 -1.5 -1.7002 -2.89941 -2.5 -4.39941c-22.0996 -43.1006 -61.2998 -67.4004 -105.399 -69.1006c-103 -4 -169.4 57 -172 176.2\nc-0.5 23.7002 1.7998 46.9004 8.2998 69.7002c20.5996 71.0996 74.5996 118.2 153.899 118.8c61.3008 0.400391 101.5 -38.7002 116.2 -70.2998c0.5 -1.10059 1.2998 -2.2998 2.40039 -1.90039v61.6006h44.2998c0 -280.301 0.0996094 -332.2 0.0996094 -332.2\nc-0.0996094 -78.5 -26.6992 -143.7 -103 -162.2c-69.5 -16.9004 -159 -4.7998 -196 57.2002c-8 13.5 -11.7998 28.2998 -13 44.5zM188.9 411.5c-52.5 0.5 -108.5 -40.7002 -115 -133.8c-4.10059 -59 14.7998 -122.2 71.5 -148.601\nc27.5996 -12.8994 74.2998 -15 108.3 8.7002c47.5996 33.2002 62.7002 97 54.7998 154c-9.7002 71.1006 -47.7998 120 -119.6 119.7z\" />\n    <glyph glyph-name=\"google-drive\" unicode=\"&#xf3aa;\" horiz-adv-x=\"512\" \nd=\"M339 133.1l-163.6 282.9h161.199l163.601 -282.9h-161.2zM201.5 109.5h310.5l-80.5996 -141.5h-310.5zM154.1 380.6l82.9004 -141.399l-156.4 -271.2l-80.5996 141.5z\" />\n    <glyph glyph-name=\"google-play\" unicode=\"&#xf3ab;\" horiz-adv-x=\"512\" \nd=\"M325.3 213.7l-220.7 221.3l280.801 -161.2zM47 448l256.6 -255.9l-256.6 -256c-13 6.80078 -21.7002 19.2002 -21.7002 35.3008v441.3c0 16.0996 8.7002 28.5 21.7002 35.2998zM472.2 222.4c19.2002 -14.3008 19.2002 -46.5 1.2002 -60.8008l-60.1006 -34.0996\nl-65.7002 64.5l65.7002 64.5zM104.6 -51l220.7 221.3l60.1006 -60.0996z\" />\n    <glyph glyph-name=\"gripfire\" unicode=\"&#xf3ac;\" horiz-adv-x=\"384\" \nd=\"M112.5 146.6c0 -26.8994 16.5996 -47.1992 32.5996 -69.5c22.5 -30.1992 44.2002 -56.8994 44.2002 -86.5c-0.0996094 -14.5 -4.39941 -29.6992 -17.5 -46.3994c0 5.2998 4.7998 12.2002 4.7998 22.2998c0 15.2002 -13 39.9004 -78.0996 86.5996\nc-34.2998 29.1006 -66.5 58.5 -66.5 108.301c0 114.699 147.1 176.5 147.1 268.6c0 3.2998 -0.199219 6.7002 -0.599609 10c5.09961 -2.40039 39.0996 -43.2998 39.0996 -90.4004c0 -80.5 -105.1 -129.199 -105.1 -203zM317.8 185.6\nc1.5 -8.39941 2.2002 -16.5996 2.2002 -24.5996c0 -51.7998 -29.4004 -97.5 -67.2998 -136.8c-1 -1 -2.2002 -2.40039 -3.2002 -2.40039c-3.59961 0 -35.5 41.6006 -35.5 53.2002c0 0 41.7998 55.7002 41.7998 96.9004c0 10.7998 -2.7002 21.6992 -9.09961 33.3994\nc-1.5 -32.2998 -55.7002 -87.7002 -58.1006 -87.7002c-2.69922 0 -17.8994 22 -17.8994 42.1006c0 5.2998 1 10.7002 3.2002 15.7998c2.39941 5.5 56.5996 72 56.5996 116.7c0 6.2002 -1 12 -3.40039 17.0996l-4 7.2002c16.7002 -6.5 82.6006 -64.0996 94.7002 -130.9z\" />\n    <glyph glyph-name=\"grunt\" unicode=\"&#xf3ad;\" horiz-adv-x=\"384\" \nd=\"M61.2998 258.7c0.5 4.89941 2.7998 10 7 12h0.100586c-4.60059 1.7002 -9.2002 3.09961 -13.5 4.09961c42.1992 10.2002 73.3994 -20.5996 83.0996 -31.7998c16.5996 -19.2002 35.5 -8.7998 35.5 -8.7998c0.299805 -11.1006 -10.2998 -19 -21.0996 -19.5\nc1.19922 -15.4004 -13.9004 -32.5 -13.9004 -32.5s5.59961 15 2.7002 25.2998c-0.900391 3.2002 -2 6.09961 -3 8.5c-19.2998 -17.2002 -48 -1.5 -54.9004 6.09961c-9.59961 10.6006 -12.3994 23.8008 -12.7998 34.1006c-1.7998 -3.7998 -3.2998 -9.10059 -4 -16.6006\nc0 0 -6.2998 9.10059 -5.2002 19.1006zM89.5996 260.5c-2.89941 -9.09961 -3.39941 -27.7002 6.90039 -35.2998c16.2998 -12.1006 32.2998 -5 38 -1.7002c-7.5 11.2998 -25.4004 26 -44.9004 37zM231.7 214.7c-10.7998 0.399414 -21.4004 8.39941 -21.2002 19.2998\nc0 0 18.7998 -10.4004 35.5 8.7998c9.7002 11.2002 40.7998 42 83.0996 31.7998c-4.2998 -0.899414 -8.89941 -2.2998 -13.5 -4.09961h0.100586c4.09961 -1.7998 6.39941 -6.7998 7 -11.7998c1.2002 -10 -5.2002 -19.1006 -5.2002 -19.1006\nc-0.599609 7.5 -2.2002 12.8008 -4 16.6006c-0.5 -10.2998 -3.2002 -23.5 -12.7998 -34.1006c-6.7998 -7.59961 -35.5 -23.3994 -54.7998 -6.09961c-1 -2.5 -2.10059 -5.2998 -3 -8.5c-2.90039 -10.2998 2.69922 -25.2998 2.69922 -25.2998s-15.0996 17 -13.8994 32.5z\nM294.4 260.5c-19.5 -11 -37.4004 -25.5996 -44.9004 -37c5.7002 -3.40039 21.5996 -10.5 37.9004 1.59961c10.3994 7.7002 10 26.3008 7 35.4004zM160 29.5c4.09961 0 7 -0.900391 8.7998 -2.7002c2.2002 -2.2998 1.5 -5.2998 0.900391 -6.7998\nc-1.10059 -2.7002 -5.5 -11.5996 -13 -19.7998c-2.7002 -2.90039 -6.60059 -4.60059 -11 -4.60059c-4.2998 0 -8.7002 1.60059 -11.7998 4.30078c-2.30078 2.09961 -10.2002 9.5 -13.7002 18.5996c-1.2998 3.40039 -1 6.09961 0.899414 8.09961\nc1.30078 1.30078 4 2.90039 9.5 2.90039h29.4004zM349.2 130.7c0 0 29.2998 -22.5 21.0996 -70.9004c-5.2998 -29.5 -23.2002 -46 -47 -54.7002c-8.7998 -19.0996 -29.3994 -45.6992 -67.2998 -49.5996c-14.5 -11.7998 -34.5 -19.5 -63.5996 -19.5h-0.200195\nc-29.2002 0 -49.2002 7.7002 -63.6006 19.5c-37.8994 3.90039 -58.5 30.5 -67.2998 49.5996c-23.7998 8.60059 -41.7998 25.2002 -47 54.7002c-8.59961 48.2002 20.6006 70.7998 20.6006 70.7998c2.39941 -17.8994 13 -33.8994 24.5996 -43.7998\nc3.09961 22.7002 3.7002 55.5 3.7002 62.4004c0 14.7002 -9.5 24.5 -12.2002 26.0996c-2.5 1.5 -5.2998 3 -8.2998 4.60059c-18 9.59961 -40.4004 21.5996 -40.4004 43.6992c0 16.1006 9.2998 23.2002 15.4004 27.8008c0.799805 0.599609 1.5 1.19922 2.2002 1.69922\nc2.09961 1.7002 3.69922 3 4.2998 4.40039c4.39941 9.7998 3.59961 34.2002 1.7002 37.5996c-0.600586 0.700195 -16.8008 21 -11.8008 39.2002c2 7.40039 6.90039 13.2998 14.1006 17c5.2998 2.7002 11.7998 4.2002 19.5 4.5c0.0996094 2 0.5 4 0.899414 5.90039\nc0.5 2.59961 1.10059 5.2998 0.900391 8.09961c-0.400391 4.7002 -0.799805 9.10059 -2.2002 11.2998c-8.39941 13.3008 -28.7998 17.6006 -29 17.6006l-12.2998 2.39941l8.09961 9.40039c0.200195 0.200195 17.3008 17.5 46.3008 17.5c7.89941 0 16 -1.2998 23.8994 -3.5\nc24.2998 -7.7998 42.9004 -30.5 49.4004 -39.2998c2 0.599609 3.89941 1.2002 5.89941 1.7002c-1 26.3994 20.7002 47.3994 28.2002 48.2998c0.5 -4.5 -0.399414 -22.2002 7.2002 -27.6006c2.2002 14.4004 9.59961 30.3008 39.0996 40.7002\nc-6.2998 -16.7002 -0.799805 -30.7002 1.80078 -37.2002c20.0996 18.2002 33.6992 15.2002 33.6992 15.2002s-13.1992 -22.7002 -9 -38.5c3.30078 -0.799805 6.5 -1.7002 9.60059 -2.7002c6.5 8.80078 25.2002 31.5 49.3994 39.3008\nc8.10059 2.59961 16.2002 3.89941 24.1006 3.89941c29 0 46.2002 -17.2998 46.2998 -17.5l8.09961 -9.5l-12.2998 -2.39941c-0.200195 0 -20.5996 -4.30078 -29 -17.6006c-1.39941 -2.2998 -1.7998 -6.59961 -2.2002 -11.2998\nc-0.199219 -2.7998 0.300781 -5.5 0.900391 -8.09961c0.400391 -2 0.799805 -3.90039 0.900391 -5.90039c7.59961 -0.299805 14.1992 -1.7998 19.5 -4.5c7.19922 -3.7002 12.0996 -9.59961 14.0996 -17c4.90039 -18.2998 -11.2002 -38.5996 -11.7998 -39.2002\nc-1.90039 -3.39941 -2.7002 -27.7998 1.7002 -37.5996c0.599609 -1.40039 2.19922 -2.7002 4.2998 -4.40039c0.700195 -0.599609 1.39941 -1.09961 2.2002 -1.7002c6.09961 -4.59961 15.3994 -11.5996 15.3994 -27.7998c0 -22.0996 -22.3994 -34.0996 -40.3994 -43.7002\nc-2.90039 -1.59961 -5.80078 -3.09961 -8.30078 -4.59961c-2.69922 -1.59961 -12.1992 -11.4004 -12.1992 -26.0996c0 -6.90039 0.599609 -39.7002 3.69922 -62.4004c11.6006 9.90039 22.2002 25.7998 24.6006 43.7002zM305.7 410.3\nc-17.7998 -5.7002 -31.6006 -23.0996 -37.7002 -32.2002c1.59961 -0.699219 3.09961 -1.39941 4.7002 -2.19922c2.59961 -1.2002 4.89941 -2.40039 7.09961 -3.7002c2.7002 5.5 8.40039 13.7002 20.7002 22.3994c8.2002 5.80078 18.2002 8.90039 28.7002 8.90039\nc3.59961 0 6.7998 -0.400391 9.2002 -0.799805c3.2998 2.09961 6.59961 3.89941 9.69922 5.2998c-4.7998 2 -13.6992 5 -24.6992 5c-6.10059 0 -12.1006 -0.900391 -17.7002 -2.7002zM326.7 392.1c-7.40039 -0.299805 -14 -2.69922 -19.6006 -7\nc-8 -6.39941 -12.0996 -17.6992 -13.5 -22.5c4.90039 -4.19922 8.2002 -8.09961 10.5 -11.1992c3.40039 1 7.30078 1.89941 11.5 2.69922c3.30078 4.5 3.90039 10.6006 4.40039 17c0.5 6.2002 1.09961 12.6006 4.40039 17.8008c0.699219 1.09961 1.5 2.19922 2.2998 3.19922\nzM45.5996 402.7c2.40039 0.399414 5.60059 0.799805 9 0.899414c10.6006 0 20.5 -3.09961 28.8008 -8.89941c12.3994 -8.7002 18.0996 -17 20.6992 -22.4004c2.2002 1.2002 4.60059 2.5 7.10059 3.7002c1.59961 0.799805 3.2002 1.5 4.7998 2.2002\nc-6.09961 8.89941 -19.9004 26.2998 -37.7002 32.0996c-5.7002 1.7998 -11.5996 2.7002 -17.7002 2.7002c-11 0 -19.8994 -3 -24.6992 -5c3.09961 -1.2998 6.39941 -3.09961 9.69922 -5.2998zM90.2998 362.6c-1.39941 4.80078 -5.5 16.1006 -13.5 22.4004\nc-5.5 4.40039 -12.0996 6.7002 -19.5 7c0.799805 -1 1.60059 -2.09961 2.2998 -3.2002c3.30078 -5.2002 3.90039 -11.5996 4.40039 -17.7998c0.5 -6.40039 1 -12.5 4.2998 -16.9004c4.2002 -0.799805 8.10059 -1.7998 11.5 -2.69922c2.2002 3.19922 5.60059 7 10.5 11.1992z\nM58.0996 188.1c8.7002 -5 18.1006 -16.7998 19 -34.1992c0.900391 -14.7002 -0.899414 -49.9004 -3.39941 -75.9004c12.5 -4.7998 26.7002 -6.40039 39.7002 -6.7998c2 4.09961 3.89941 8.5 5.5 13.0996c0.699219 1.90039 19.5996 51 26.3994 62.2002\nc-5.39941 -39 -17.5 -73.7002 -23.5 -89.5996c3.40039 0.399414 7.2998 0.699219 11.7002 0.699219h117c4.40039 0 8.2002 -0.199219 11.7002 -0.699219c-6 15.8994 -18 50.5996 -23.5 89.5996c6.7998 -11.0996 25.7002 -60.2002 26.3994 -62.2002\nc1.60059 -4.59961 3.5 -9 5.5 -13.0996c13 0.399414 27.3008 2 39.7002 6.7998c-2.5 26 -4.2998 61.2998 -3.39941 75.9004c1.09961 17.5 10.3994 29.1992 19.0996 34.1992c2.7002 1.5 5.5 3.10059 8.40039 4.60059c14.7998 8 30.1992 16.2998 30.1992 30.5\nc0 11.0996 -4.2998 14.5 -8.89941 18.2002l-0.5 0.399414c-0.700195 0.600586 -1.5 1.2002 -2.2002 1.7998c0.900391 -7.19922 1.90039 -13.2998 2.7002 -14.8994c0 0 -12.1006 15 -15.7002 44.2998c-1.40039 11.5 1.09961 34.2002 5.09961 43\nc-0.199219 -4.90039 0 -9.7998 0.300781 -14.4004c0.399414 0.900391 0.799805 1.60059 1.2998 2.2002c3.2998 4 11.8994 17.5 9.39941 26.6006c-1 3.39941 -3.19922 6 -6.69922 7.7998c-3.80078 1.89941 -8.80078 2.89941 -15.1006 2.89941\nc-12.2998 0 -25.8994 -3.7998 -32.8994 -6c-25.1006 -7.89941 -55.4004 -30.8994 -64.1006 -37.6992c-0.200195 -0.200195 -0.399414 -0.300781 -0.399414 -0.300781l-5.60059 -3.89941l3.5 5.7998c0.200195 0.299805 19.1006 31.4004 53.1006 46.5\nc-2 2.90039 -7.40039 8.2002 -21.6006 15.0996c-21.3994 10.5 -46.3994 15.8008 -74.2998 15.8008c-27.7998 0 -52.9004 -5.30078 -74.2998 -15.8008c-14.2002 -7 -19.6006 -12.1992 -21.6006 -15.0996c34.1006 -15.0996 53 -46.2002 53.2002 -46.5l3.5 -5.7998\nl-5.59961 3.89941s-0.200195 0.100586 -0.400391 0.300781c-8.7002 6.7998 -39 29.6992 -64.0996 37.6992c-7 2.30078 -20.6006 6 -32.9004 6c-6.2998 0 -11.2998 -1 -15.0996 -2.89941c-3.60059 -1.7998 -5.7998 -4.2998 -6.7002 -7.7998\nc-2.40039 -9.10059 6.2002 -22.6006 9.40039 -26.6006c0.5 -0.599609 0.899414 -1.39941 1.2998 -2.2002c0.299805 4.60059 0.5 9.5 0.299805 14.4004c4 -8.7002 6.5 -31.5 5.09961 -43c-3.59961 -29.2998 -15.6992 -44.2998 -15.6992 -44.2998\nc0.799805 1.59961 1.7998 7.7002 2.69922 14.8994c-0.799805 -0.599609 -1.5 -1.19922 -2.19922 -1.7998l-0.5 -0.399414c-4.60059 -3.60059 -8.90039 -7.10059 -8.90039 -18.2002c0 -14.2002 15.2998 -22.5 30.2002 -30.5c2.7998 -1.5 5.7002 -3 8.39941 -4.60059z\nM34.7998 43.4004c11.9004 -19.7002 35.5 -29.4004 58.2002 -29.5c-4.5 13.2998 -3.09961 24 4.09961 31.7998l1.40039 1.39941c1.7998 2.40039 4.2998 5.80078 7 10c-27.2002 1.10059 -63.5 11 -74.4004 45.4004c-5 -5 -8.39941 -39.0996 3.7002 -59.0996zM80.5 -0.0996094\nc6.5 -9.5 16.5 -19.6006 30.9004 -25.5c-4.90039 7.19922 -8.80078 15.0996 -12.3008 23.0996c-6.39941 0.5 -12.5996 1.2998 -18.5996 2.40039zM192 -50.2002c60.5996 0.100586 78.2998 45.9004 84.9004 64.7002c3.59961 10.5 3.2998 18.2998 -0.900391 23.0996\nc-2.7998 3.30078 -9.5 7.2002 -24.5996 7.2002h-118.801c-15.0996 0 -21.6992 -3.89941 -24.5996 -7.2002c-4.2998 -4.89941 -4.59961 -12.5996 -0.900391 -23.0996c6.60059 -18.9004 24.3008 -64.5996 84.9004 -64.7002zM272.6 -25.5996\nc14.4004 5.89941 24.4004 16 30.9004 25.5c-6 -1.10059 -12.2002 -1.90039 -18.5996 -2.40039c-3.5 -8 -7.40039 -15.9004 -12.3008 -23.0996zM349.2 43.4004c12.2002 19.8994 8.7998 54 3.7998 59c-10.9004 -34.4004 -47.2002 -44.2002 -74.4004 -45.4004\nc2.7002 -4.2002 5.2002 -7.59961 7 -10c0.5 -0.5 1 -1 1.40039 -1.5c7.2002 -7.7002 8.59961 -18.5 4.09961 -31.7998c22.5 0.399414 46.1006 10 58.1006 29.7002zM191.9 260.3c-12.7002 0.200195 -27.2002 17.7998 -27.2002 17.7998\nc9.89941 -6 18.7998 -8.09961 27.2998 -8.2998c8.5 0.200195 17.4004 2.2998 27.2998 8.2998c0 0 -14.5 -17.6992 -27.2002 -17.7998h-0.199219zM253.6 29.5996c5.40039 -0.0996094 8.10059 -1.69922 9.40039 -3c1.90039 -1.89941 2.2002 -4.59961 0.900391 -7.89941\nc-3.5 -8.90039 -11.4004 -16.1006 -13.7002 -18.1006c-3.10059 -2.59961 -7.40039 -4.19922 -11.7998 -4.19922c-4.40039 0 -8.30078 1.59961 -11 4.5c-7.5 8 -12 16.6992 -13 19.2998c-0.600586 1.5 -1.30078 4.39941 0.899414 6.7002\nc1.7002 1.7998 4.7002 2.69922 8.90039 2.69922h29.3994z\" />\n    <glyph glyph-name=\"gulp\" unicode=\"&#xf3ae;\" horiz-adv-x=\"256\" \nd=\"M209.8 56.9004l-14.0996 -24.6006l-4.60059 -80.2002c0 -8.89941 -28.2998 -16.0996 -63.0996 -16.0996s-63.0996 7.2002 -63.0996 16.0996l-5.80078 79.4004l-14.8994 25.4004c41.2002 -17.3008 126 -16.7002 165.6 0zM13.7998 310.2\nc30.7002 -17 197.8 -16.9004 228.3 0.200195l-14.7998 -136.801c-4.7998 -4.19922 -11.5996 -10.1992 -16.5996 -14.0996c-1.60059 -1.2002 -6 -4.7002 -8 -4.7002c-1.2998 0 -2.2002 0.5 -2.2002 1.7998c0.0996094 1 3.40039 4.5 5 6.40039\nc4.90039 5.7002 13.7998 16 13.7998 23.4004c0 7 -10.7002 14.0996 -25.7002 0.199219c-1.59961 -1.5 -3.09961 -3 -4.5 -4.5c0.400391 1.10059 1.10059 5.10059 1.10059 6.2002c0 2.7998 -1.40039 4 -4.2002 4c-1 0 -1.90039 -0.599609 -2.7002 -1.59961\nc-2.59961 -3.10059 -3.89941 -7.5 -5.2998 -11.2998c-0.5 -1.80078 -1.09961 -3.60059 -1.7002 -5.5c-0.399414 -0.200195 -0.700195 -0.300781 -0.899414 -0.600586c-3.80078 -3.89941 -17.7002 -17 -23.1006 -17c-2.2998 0 -1.59961 3.60059 -1 5.7998\nc1 3.40039 6.7998 17.7002 8.7002 22.3008c4.59961 11.0996 8 19.7998 13.2002 31.8994c3.89941 9.2002 3.7998 8.60059 4.5 10.5c0.700195 2.10059 0.700195 4.90039 -1 6.2002c-1 0.700195 -2 1.09961 -3.2002 1.09961c-2.40039 0 -4.7998 -1.39941 -6.09961 -4.69922\nc-25.5 -64.4004 -25.2002 -63.3008 -26.4004 -68.2002c-2 -1.7002 -4.40039 -3.40039 -6.7998 -4.5c-3.10059 -1.40039 -6.7998 -2.2002 -6.7998 1.2002c0 3.69922 1.39941 8.19922 2.69922 11.6992c2.2002 6.10059 4.90039 11.1006 6.90039 16.7002\nc0.900391 2.40039 1.2998 4.7002 -0.400391 6.90039c-0.799805 1 -1.89941 1.5 -3.19922 1.5c-2.60059 0 -4.10059 -2.60059 -5.2002 -5.10059c-0.700195 -1.5 -1.2998 -3.09961 -1.7998 -4.7998c-1.2002 -4 -3.60059 -8.7002 -5.60059 -12.2998\nc-2.7998 -5 -6.5 -10.0996 -11.0996 -13.5c-2.2002 -1.59961 -4.5 -2.40039 -6.90039 -2.40039c-3.5 0 -2.39941 5.7002 -1.5 9c2.2002 7.80078 5.5 13.3008 9.2998 20.8008c1.30078 2.69922 2.30078 5.39941 -0.299805 7.19922c-0.5 0.300781 -1 0.5 -1.59961 0.700195\nc-3.40039 0.900391 -6 -1.09961 -7.60059 -4.5c-3.09961 -6.2998 -5.39941 -11.7002 -7.09961 -16.2002c-3.2998 -8.89941 -6.90039 -18.2998 -4.59961 -23.7998c1.5 -3.7002 4.5 -5.09961 8.59961 -5.09961c9.7998 0 17.7998 6.7002 22.4004 14.8994\nc-4.30078 -19.7998 8.19922 -17.2998 20 -8.09961c0.0996094 -0.400391 0.0996094 -0.799805 0.199219 -1.2002c1.5 -6.7002 8.7002 -6.7002 14.5 -4.09961c3.5 1.59961 8.2002 4.5 14.4004 10.5c0.200195 0.299805 0.799805 1.39941 -0.799805 -2.2998\nc-7.2002 -16.2002 -13.5 -28.2002 -15 -34.3008c-0.200195 -0.899414 -0.299805 -1.7998 -0.299805 -2.69922c0 -1.80078 0.399414 -3.10059 1.2998 -3.7002c1.59961 -1.2002 4.2002 -1.2998 6.09961 -0.299805c1.7998 1 3.10059 2.59961 4 4.5\nc1 2.19922 0.200195 0.699219 5.2002 14c5 13.3994 2.90039 7.7998 9.09961 22c1.90039 4.2998 4.2002 9.5 8.5 15.5c2.5 3.39941 5.5 7 8.7002 9.69922c5.7002 4.7002 11.7002 5.40039 11.7002 2.5c0 -2.19922 -3.2998 -6.39941 -4.7002 -8.09961\nc-5.2998 -6.7002 -14.3994 -16.2998 -14.3994 -21.5c0 -9.5 12 -8 17.3994 -5.7002c7.2998 3.2002 13.9004 9.60059 19.6006 14.7998l-10.9004 -94.5996c-1.90039 -4.90039 -39.0996 -17.0996 -88.2002 -17.0996c-49 0 -86.2002 12.0996 -88.2002 17.0996l-7.59961 79.5996\nc2.09961 -1.5 4.2998 -2.39941 7.7002 -2.39941c7.39941 0 16.0996 6.7002 21.5 11.7998c2.2998 2.2002 4.39941 4.40039 6.39941 6.59961c-1 -3 -7.09961 -22 -7.2998 -25.1992c-0.0996094 -1 -0.200195 -4.90039 0.799805 -6.30078\nc0.5 -0.799805 1.40039 -1.19922 2.60059 -1.19922c2.89941 0 5.59961 4.69922 6.2998 7.5c0 0 1.7998 6.2998 7.59961 25.7998c6.30078 21.0996 10 24.5 10 34.7002c0 5.59961 -7.2998 6.7998 -9.89941 0l-5.2002 -15.5c-2.2002 -4.5 -8 -11.5 -12.5 -16\nc-3.5 -3.5 -10.7998 -10.1006 -15.7998 -10.1006c-2.40039 0 -3.90039 1.40039 -4.90039 3.60059c-2.2998 5.2998 -0.899414 14.2998 0.600586 19.8994c2.59961 9.7002 6.89941 19.4004 12 28.2002c4.19922 7.2998 10.1992 15.7002 17.0996 20.7002\nc6.59961 4.7998 12.7998 4.5 16.9004 -2.7998c1.5 -2.7002 3.7998 -7.30078 6.7998 -7.30078c2.5 0 5.7002 2.60059 4.5 9.10059c-0.5 2.5 -4.90039 8.7998 -10.1006 11.7998c-6 3.59961 -12.3994 3.59961 -18.6992 0.900391\nc-19.2002 -8.2002 -34.1006 -35.2002 -40 -55.2002zM243.5 318.7c0 -21 -231.2 -21 -231.2 0c0 8.7998 51.7998 15.8994 115.601 15.8994c9 0 17.7998 -0.0996094 26.2998 -0.399414l12.5996 48.7002l61.2998 64.5c1.40039 1.39941 5.80078 0.199219 9.90039 -3.5\nc4.09961 -3.7002 6.59961 -7.90039 5.2998 -9.30078l-0.0996094 -0.0996094l-57.2998 -60.5l-10 -40.7002c39.8994 -2.59961 67.5996 -8.09961 67.5996 -14.5996zM174.1 314.1c0 0.800781 -0.899414 1.5 -2.5 2.10059l-0.199219 -0.799805\nc0 -1.30078 -5 -2.40039 -11.1006 -2.40039c-6.09961 0 -11.0996 1.09961 -11.0996 2.40039c0 0.0996094 0 0.199219 0.0996094 0.299805l0.200195 0.700195c-1.7998 -0.600586 -3 -1.40039 -3 -2.30078c0 -2.09961 6.2002 -3.69922 13.7002 -3.69922\nc7.7002 -0.100586 13.8994 1.59961 13.8994 3.69922z\" />\n    <glyph glyph-name=\"hacker-news-square\" unicode=\"&#xf3af;\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM21.2002 218.8h-0.200195c0.0996094 0.100586 0.200195 0.299805 0.299805 0.400391c0 -0.100586 0 -0.299805 -0.0996094 -0.400391z\nM239.2 164.9l80.7998 155.1h-34.7998c-54.7998 -101.2 -48.2998 -98.5996 -60.6006 -125.6c-10.0996 24.3994 -6.7998 27.2998 -59.2998 125.6h-37.2998l79.7998 -153.3v-102.7h31.4004v100.9z\" />\n    <glyph glyph-name=\"hire-a-helper\" unicode=\"&#xf3b0;\" horiz-adv-x=\"512\" \nd=\"M443.1 448c3.90039 -36.4004 32.5 -65.7998 68.9004 -71.7002v-370.5c-35.4004 -4 -64.9004 -33.3994 -67.9004 -69.7998h-372.199c-5.90039 36.4004 -34.5 63.9004 -71.9004 68.7998v371.5c37.4004 3.90039 67.9004 34.4004 71.9004 71.7002h371.199zM406.1 43.0996\nc7.80078 0 5.80078 10.8008 0 10.8008c-10.2998 3.39941 -13.5 3.59961 -21.6992 13.7998c-7.80078 12.8994 -7.90039 44.3994 -7.90039 127.8v101.2c0 22.0996 12.2002 28.2998 28.5996 32.3994c8.90039 2.2002 3.90039 11.8008 -1 11.8008\nc-36.5 0 -20.5996 -2 -57.0996 -2c-32.7002 0 -16.5 2 -49.2002 2c-3.2998 0 -8.5 -8.30078 -1 -10.8008c4.90039 -1.59961 27.6006 -3.69922 27.6006 -39.2998c0 -45.5996 0.199219 -55.7998 -1 -68.7998c0 -1.2998 -2.30078 -12.7998 -12.8008 -12.7998h-109.199\nc-10.5 0 -12.8008 11.5 -12.8008 12.7998c-1.19922 13 -1 23.2002 -1 68.7998c0 35.6006 22.7002 37.7002 27.6006 39.2998c7.5 2.5 2.2998 10.8008 -1 10.8008c-32.7002 0 -16.5 -2 -49.2002 -2c-36.5 0 -20.5996 2 -57.0996 2c-5 0 -9.80078 -9.60059 -1 -11.8008\nc16.3994 -4.09961 28.5996 -10.1992 28.5996 -32.3994v-101.2c0 -83.4004 -0.200195 -114.9 -7.90039 -127.8c-8.19922 -10.2998 -11.5 -10.4004 -21.6992 -13.7998c-5.80078 0 -7.90039 -10.8008 0 -10.8008c36.2998 0 18.7998 2 55.0996 2c35.7998 0 21 -2 56.0996 -2\nc6 0 4.90039 8.2002 0 9.80078c-22.7998 7.59961 -22.8994 10.2998 -24.5996 12.7998c-10.4004 15.5996 -5.90039 83 -5.90039 113c0 5.2998 6.40039 12.7998 13.8008 12.7998h111.199c7.40039 0 13.8008 -7.5 13.8008 -12.7998c0 -30 4.5 -97.4004 -5.90039 -113\nc-1.7002 -2.60059 -1.7998 -5.2002 -24.5996 -12.7998c-4.90039 -1.60059 -5.90039 -9.80078 0 -9.80078c35.0996 0 20.2998 2 56.0996 2c36.2998 0 18.7998 -2 55.0996 -2z\" />\n    <glyph glyph-name=\"hotjar\" unicode=\"&#xf3b1;\" \nd=\"M414.9 286.5c30 -53 41.7998 -121.6 26.2998 -180.9c-14.7002 -56.6992 -68.2998 -120.3 -148.8 -145.6c54.5 76.9004 43.8994 200.1 -27.1006 215.5c54.2002 -93.9004 -53.7002 -180.3 -110.8 -93.9004c-2.5 -7.19922 -25.0996 -74.5 4.09961 -129.6\nc-61.0996 9.09961 -117.8 33.5 -144.6 93.4004c-35 78.1992 -2.7002 149.8 79 204.899c129.2 87.2998 28.0996 197.7 28.0996 197.7s219.101 -29 293.801 -161.5z\" />\n    <glyph glyph-name=\"hubspot\" unicode=\"&#xf3b2;\" horiz-adv-x=\"512\" \nd=\"M267.4 236.4l-163.2 114.699c-7.90039 -4.69922 -17 -7.59961 -26.7998 -7.59961c-28.8008 0 -52.2002 23.4004 -52.2002 52.2998c0 28.7998 23.3994 52.2002 52.2002 52.2002c28.8994 0 52.3994 -23.4004 52.3994 -52.2002c0 -4.7998 -0.799805 -9.39941 -2 -13.7998\nc51.4004 -39.0996 141.3 -103.9 168.9 -124.8c13.0996 6.89941 27.5 11.5 42.7002 13.5996v61.2002c-17.5 7.40039 -28.2002 23.7998 -28.2002 42.9004c0 26.0996 20.5996 47.8994 46.7002 47.8994c26.0996 0 47 -21.7998 47 -47.8994\nc0 -19.1006 -10.7002 -35.5 -28.2002 -42.9004v-61.5996c62.5 -9.5 110.2 -63.5 110.2 -128.7c0 -71.9004 -58.1006 -130.2 -130 -130.2c-29.9004 0 -57.3008 10 -79.3008 26.9004l-50 -50.2002c1.30078 -3.90039 1.90039 -7.90039 1.90039 -12.1006\nc0 -10.6992 -4.2002 -20.8994 -11.7998 -28.5c-7.7002 -7.69922 -17.7998 -11.5996 -28.6006 -11.5996c-10.6992 0 -20.8994 4 -28.5 11.5996c-7.59961 7.60059 -11.7998 17.7002 -11.7998 28.5c0 10.8008 4.2002 21 11.7998 28.6006\nc7.60059 7.59961 17.7002 11.7998 28.5 11.7998c4.90039 0 9.60059 -0.900391 14 -2.5l49.5 49.7998c-16.2998 21.7002 -26 48.7002 -26 78c0 37.2998 15.7002 70.9004 40.8008 94.6006zM356.9 72.7998c38.0996 0 69 30.9004 69 69c0 38.1006 -30.9004 69 -69 69\nc-38.1006 0 -69 -30.8994 -69 -69c0 -38.0996 30.8994 -69 69 -69z\" />\n    <glyph glyph-name=\"itunes\" unicode=\"&#xf3b4;\" \nd=\"M223.6 367.7c94.5 0 171.2 -76.7002 171.2 -171.3c0 -94.5 -76.5996 -171.2 -171.2 -171.2c-94.5996 0 -171.1 76.7998 -171.1 171.3s76.5 171.2 171.1 171.2zM303 127.7c1.40039 6.2002 0.900391 -3 1 167.6c0 5.7002 -3.2998 9.10059 -9 8.7002\nc-1.7998 0 -14.0996 -2.40039 -115.1 -21.4004c-0.900391 0 -4.60059 -1 -6.7002 -2.69922c-2 -1.60059 -3.10059 -3.80078 -3.5 -6.40039c-1.7002 -6.7002 2.39941 -128 -2.60059 -133.7c-2.09961 -2.5 -4.69922 -3.2002 -7.69922 -3.7002\nc-17.7002 -3.19922 -29.6006 -4.7998 -38 -12.7998c-14.5 -14.2002 -7 -38.8994 14.3994 -42.8994c8 -1.40039 23.1006 0.599609 31.4004 5.19922c7.2998 3.80078 12.7998 10.6006 14.8994 19.6006c1.7002 7.7002 1.2002 2.39941 1.2002 118.5\nc0 5.7002 1.7002 7.2002 6.7002 8.2998c0 0 87.9004 16.4004 91.9004 17.0996c5.69922 1 8.39941 -0.5 8.39941 -6.09961c0 -78.7998 1 -77.2002 -2.2002 -80.7998c-2.09961 -2.5 -4.69922 -3.2002 -7.69922 -3.7002c-17.7002 -3.2002 -29.6006 -4.7998 -38 -12.7998\nc-10.6006 -10.4004 -10.4004 -26.7998 1.39941 -36.7998c9.7002 -7.80078 19.7998 -7.2002 31.9004 -5c13.7998 2.59961 24.0996 10.1992 27.2998 23.7998zM345.2 416c56.8994 0 102.8 -45.9004 102.8 -102.8v-242.4c0 -56.8994 -45.7998 -102.8 -102.8 -102.8h-242.4\nc-56.8994 0 -102.8 45.9004 -102.8 102.8v242.4c0 56.8994 45.9004 102.8 102.8 102.8h242.4zM223.6 4c106.301 0 192.5 86.2002 192.5 192.5s-86.1992 192.5 -192.5 192.5c-106.3 0 -192.5 -86.2002 -192.5 -192.5s86.2002 -192.5 192.5 -192.5z\" />\n    <glyph glyph-name=\"itunes-note\" unicode=\"&#xf3b5;\" horiz-adv-x=\"384\" \nd=\"M381.9 59.7998c-6.40039 -27.3994 -27.2002 -42.7998 -55.1006 -48c-24.5 -4.5 -44.8994 -5.59961 -64.5 10.2002c-23.8994 20.0996 -24.2002 53.4004 -2.7002 74.4004c17 16.1992 40.9004 19.5 76.8008 25.7998c6 1.09961 11.1992 2.5 15.5996 7.39941\nc6.40039 7.2002 4.40039 4.10059 4.40039 163.2c0 11.2002 -5.5 14.2998 -17 12.2998c-8.2002 -1.39941 -185.7 -34.5996 -185.7 -34.5996c-10.2002 -2.2002 -13.4004 -5.2002 -13.4004 -16.7002c0 -234.7 1.10059 -223.899 -2.5 -239.5\nc-4.2002 -18.2002 -15.3994 -31.8994 -30.2002 -39.5c-16.7998 -9.2998 -47.1992 -13.3994 -63.3994 -10.3994c-43.2002 8.09961 -58.4004 58 -29.1006 86.5996c17 16.2002 40.9004 19.5 76.8008 25.7998c6 1.10059 11.1992 2.5 15.5996 7.40039\nc10.0996 11.5 1.7998 256.6 5.2002 270.2c0.799805 5.19922 3 9.59961 7.09961 12.8994c4.2002 3.5 11.7998 5.5 13.4004 5.5c204 38.2002 228.899 43.1006 232.399 43.1006c11.5 0.799805 18.1006 -6 18.1006 -17.6006c0.200195 -344.5 1.09961 -326 -1.7998 -338.5z\" />\n    <glyph glyph-name=\"jenkins\" unicode=\"&#xf3b6;\" horiz-adv-x=\"512\" \nd=\"M487.1 23c1.5 -11.9004 -5.2998 -28.2998 -8.69922 -39.7002c-4.90039 -16.2998 -9.7002 -31.8994 -14.6006 -47.2002h-422c-0.700195 1.90039 -1.39941 4 -2.09961 6c-4.60059 14.2002 -12.6006 31.7002 -14.7002 45.8008\nc-3.09961 20.8994 16.5996 22.0996 29.2002 31.0996c19.5 14 34.7998 21.7998 55.8994 34.2998c6.30078 3.7998 25.1006 13.2002 27.3008 17.6006c4.2998 8.69922 -7.30078 20.8994 -10.4004 27.6992c-4.90039 10.7002 -7.5 19.8008 -8.2002 30.4004\nc-17.7002 2.7998 -31.0996 13.2998 -39.2002 25.2002c-13.3994 19.7002 -22.6992 56 -11.0996 83.7002c0.900391 2.19922 5.40039 6.5 6.09961 9.7998c1.40039 6.59961 -2.5 15.3994 -2.69922 22.3994c-1.2002 36 6.09961 67 30.2998 77.8008\nc9.7998 39.0996 45 52.1992 78.0996 71.5996c12.2998 7.2998 26 11.9004 40.1006 17.0996c50.5 18.7002 128.1 15.1006 170.1 -16.5996c17.7998 -13.5 46.2002 -41.9004 56.4004 -62.5c26.8994 -54.2998 25 -145.1 6.19922 -211.2\nc-2.5 -8.89941 -6.19922 -21.8994 -11.2998 -32.5996c-3.59961 -7.40039 -14.7002 -22.2998 -13.2998 -28.9004c1.40039 -6.7998 25.2998 -24.8994 30.4004 -29.8994c9.19922 -8.80078 26.7998 -20.7002 28.1992 -31.9004zM205.9 414.3\nc-33.2002 -9.39941 -75.7002 -33.5 -89.3008 -63.3994c10.6006 1.5 17.9004 6.7998 28.3008 7.5c3.89941 0.299805 9.09961 -1.60059 13.5996 -0.5c9 2.2998 16.5996 22.5 23.4004 30c6.59961 7.39941 14.5996 10.5 20 17.1992c3.5 1.7002 8.69922 1.60059 8.89941 6.80078\nc-1.5 1.69922 -3.09961 2.89941 -4.89941 2.39941zM101.1 320.7c-14.6992 -16.1006 -11.5996 -46.2998 -9.7998 -67.7998c26.5 16.6992 61.6006 -1.30078 61.2998 -29.6006c12.6006 0.299805 4.7002 15.7998 2.40039 25.7002c-7.5 32.5996 12.5996 67.9004 0.900391 97.5996\nc-22.7002 -1.7998 -41.3008 -11 -54.8008 -25.8994zM137.8 120.5c4.90039 -20 15.7002 -46 26.2998 -61.4004c13.6006 -19.3994 40.1006 -22.2998 68.7002 -24.1992c5.10059 11 23.9004 10.0996 36.2002 7.19922c-14.7002 5.80078 -28.4004 19.9004 -39.7002 32.4004\nc-13 14.2998 -26.0996 29.7002 -26.7998 48.4004c24.5 -34 44.7998 -63.8008 89.5 -78.8008c33.7998 -11.2998 73.2002 5.2002 99.2002 23.4004c10.7998 7.59961 17.2002 19.5996 24.8994 30.5996c28.7002 41.2002 42 100.101 39.1006 157.101\nc-1.2002 23.5 -1.10059 47 -9 62.7998c-8.2998 16.5996 -36.2002 31.2998 -52.5 16.4004c-3 16.0996 13.5996 26.0996 33.0996 20.2998c-13.8994 18 -28.5996 39.5996 -48.2998 50.7002c-34.4004 19.5 -92.7002 34.0996 -129.3 15.7998\nc-29.6006 -14.7002 -69.5 -39.1006 -83.1006 -70c12.7002 -29.7998 -3.7998 -57.1006 -4.7998 -87.4004c-0.599609 -16.0996 7.60059 -30.2002 8.2002 -47.7002c-4.40039 -7.19922 -17.7002 -8.09961 -26.9004 -7.59961c-3.09961 15.5 -8.5 32.9004 -24.5 34.7002\nc-22.5 2.39941 -39.0996 -16.2998 -40.0996 -35.7998c-1.2002 -23 17.7002 -61 44.4004 -58.4004c10.2998 1.09961 12.7998 11.4004 24.0996 11.2998c6.09961 -12.2002 -9.40039 -16 -11 -24.7002c-0.400391 -2.19922 1.2998 -11 2.2998 -15.0996zM359.8 -3.59961\nc-1.59961 -4.40039 0.299805 -10.4004 -0.599609 -16.5c14.8994 -4.2002 31.8994 -6.40039 50.7002 -7c3.69922 4.7998 4.89941 13.7998 4.5 22.7998c-0.600586 10.7998 -3.40039 33.0996 -10.1006 37c-14.0996 8.2002 -39 -16.5 -49.5996 -20.2998\nc1.2002 -3.40039 3.09961 -6 3.2002 -10.2002c6.2998 1.5 13.8994 0.5 19.2998 -2.2002c-6.2998 -0.700195 -13.2998 -0.599609 -17.4004 -3.59961zM342.6 16.4004c7.60059 5.5 14.3008 12 22.2002 17.0996c-18.2002 -1.59961 -41 -12.9004 -59 -4.90039\nc-0.0996094 -0.899414 -1.2998 -0.599609 -1.5 -1.39941c12.2998 -9.60059 21.5 -11.6006 38.2998 -10.7998zM330.5 -16.7998c26.9004 -8.40039 22.2002 36.7998 -2.7998 20.2002c-0.700195 -8.2002 1.2002 -10.8008 2.7998 -20.2002zM226 9.40039\nc0 6.19922 3.59961 12 2.7998 16.3994c-13.7998 2.40039 -31.8994 0.799805 -41.2998 7.2998c-9.59961 -9.69922 26.9004 -23 38.5 -23.6992zM57.7002 -49.0996v-0.100586h180.7c-0.800781 2.5 -1.5 4.90039 -2.2002 7.2002c-4.7998 15.2998 -7.5 26.7002 -8.7002 35.5\nc-19.2002 9.2002 -39.7002 18.5 -56.2002 30.2002c-3 2.2002 -23.3994 28.7002 -26.2002 27.5996c-36.8994 -14.5996 -71.3994 -39.7002 -102.199 -63.5c5.59961 -11.7998 10.5 -24.2002 14.7998 -36.8994zM298.3 -54.7998h-0.799805\nc0.299805 0.200195 0.5 0.399414 0.799805 0.5v-0.5zM305.8 -49.0996h9.60059c-1 1.5 -2.10059 2.89941 -3.2002 4.2998c-2.10059 -1.5 -4.2998 -2.90039 -6.40039 -4.2998zM320.9 -24.4004c0.0996094 3.60059 0.299805 7.2002 0.399414 10.6006\nc-6.5 3.2002 -14 5.5 -23.5 5.89941c6.5 3.30078 15.9004 3.2002 21.7998 7.10059c0.100586 1.5 0.100586 2.89941 0.200195 4.2998c-10.7998 0.900391 -14.7998 5.59961 -21.8994 9.5c-11.6006 6.40039 -29 13.2002 -43.9004 16.0996\nc-18.5 3.60059 -16.7998 -25.1992 -16 -42.3994c0.700195 -13.6006 7.7002 -28 10.7998 -37c1.5 -4.2002 1.7998 -8.7002 5.40039 -9.5c6.39941 -1.5 27.3994 6.89941 33.3994 10.2002c12.7002 6.89941 22.5 17.8994 33.3008 25.1992zM374.3 -49.0996l0.600586 12.5996\nc-11.2002 -0.700195 -17.5 10.2002 -25.4004 11c-6.90039 0.700195 -12.7002 -7.90039 -21.7002 -4.2002c-2 -2.2002 -3.89941 -4.7002 -6 -6.89941c3.2002 -3.90039 6.10059 -8.10059 8.90039 -12.5h17.3994c0.200195 3.19922 2.80078 5.7998 6.10059 5.7998\ns6 -2.60059 6.09961 -5.7998h14zM383 -49.0996h36.2998c-6.7002 10.1992 -20.0996 18.7998 -35.7002 11.5c-0.199219 -3.7002 -0.399414 -7.5 -0.599609 -11.5zM466.4 -12.0996c1.19922 6.19922 4.59961 19.5996 3.7998 25.0996\nc-1.40039 9.7998 -14.6006 17.0996 -21.4004 23.0996c-12.3994 11.1006 -20.2002 21 -33.2002 31.4004c-5.19922 -7.7998 -16.5 -13 -20.7998 -19.2998c30.7002 14.8994 36.2998 -55.7998 24.2002 -78.5c1.90039 -6.7998 8.2998 -9.40039 10.9004 -15.5\nc-0.700195 -1.10059 -1.30078 -2.2002 -1.90039 -3.2998h27.9004c0.199219 0 0.399414 0 0.599609 -0.100586c4.09961 13.1006 7.59961 25.9004 9.90039 37.1006zM222.2 317.5c5.39941 14.9004 27.2002 34.7002 45 32c7.7002 -1.2002 18 -8.2002 12.2002 -17.7002\nc-30.2002 7 -45.2002 -12.5996 -54.4004 -33.0996c-8.09961 2 -4.90039 13.0996 -2.7998 18.7998zM406.3 254.4c8.2002 3.59961 22.4004 0.699219 29.6006 5.2998c-4.2002 11.5 -10.3008 21.3994 -9.30078 37.7002c0.5 0 1 0 1.40039 -0.100586\nc6.7998 -14.2002 12.7002 -29.2002 21.4004 -41.7002c-5.7002 -13.5 -43.6006 -25.3994 -43.1006 -1.19922zM309.5 251.7c-6.7998 10.8994 -19 32.5 -14.5 45.2998c6.5 -11.9004 8.59961 -24.4004 17.7998 -33.2998c4.10059 -4 12.2002 -9 8.2002 -20.2002\nc-0.900391 -2.7002 -7.7998 -8.59961 -11.7002 -9.7002c-14.3994 -4.2998 -47.8994 -0.899414 -36.5996 17.1006c11.8994 -0.700195 27.8994 -7.80078 36.7998 0.799805zM336.8 181.7c3.7998 -6.60059 1.40039 -18.7002 12.1006 -20.6006\nc20.1992 -3.39941 43.5996 12.3008 58.0996 17.8008c9 15.1992 -0.799805 20.6992 -8.90039 30.5c-16.5996 20 -38.7998 44.7998 -38 74.6992c6.7002 4.90039 7.30078 -7.39941 8.2002 -9.69922c8.7002 -20.3008 30.4004 -46.2002 46.2998 -63.5\nc3.90039 -4.30078 10.3008 -8.40039 11 -11.2002c2.10059 -8.2002 -5.39941 -18 -4.5 -23.5c-21.6992 -13.9004 -45.7998 -29.1006 -81.3994 -25.6006c-7.40039 6.7002 -10.2998 21.4004 -2.90039 31.1006zM135.5 190.9c-6.7998 3.89941 -8.40039 21 -16.4004 21.3994\nc-11.3994 0.700195 -9.2998 -22.2002 -9.2998 -35.5c-7.7998 7.10059 -9.2002 29.1006 -3.5 40.2998c-6.59961 3.2002 -9.5 -3.59961 -13.0996 -5.89941c4.7002 34.0996 49.7998 15.7998 42.2998 -20.2998zM435.1 162.1c-10.0996 -19.1992 -24.3994 -40.3994 -54 -41\nc-0.599609 6.2002 -1.09961 15.6006 0 19.4004c22.7002 2.2002 36.6006 13.7002 54 21.5996zM293.2 149.7c18.8994 -9.90039 53.5996 -11 79.2998 -10.2002c1.40039 -5.59961 1.2998 -12.5996 1.40039 -19.4004c-33 -1.7998 -72 6.40039 -80.7002 29.6006zM385.4 103\nc-1.7002 -4.2998 -5.30078 -9.2998 -9.80078 -11.0996c-12.0996 -4.90039 -45.5996 -8.7002 -62.3994 0.299805c-10.7002 5.7002 -17.5 18.5 -23.4004 26c-2.7998 3.59961 -16.8994 12.8994 -0.200195 12.8994c13.1006 -32.6992 58 -29 95.8008 -28.0996z\" />\n    <glyph glyph-name=\"joget\" unicode=\"&#xf3b7;\" horiz-adv-x=\"496\" \nd=\"M378.1 403c116.601 -71.7998 152.9 -224.6 81 -341.2c-71.8994 -116.5 -224.6 -152.8 -341.199 -80.8994c-116.601 71.8994 -152.9 224.6 -81 341.199c46.8994 76 128.1 117.9 211.3 117.9c44.3994 0 89.3994 -11.9004 129.899 -37zM429.9 79.7998\nc5.2998 8.7002 9.89941 17.6006 13.8994 26.6006c-32.0996 -1.10059 -157.1 1.5 -208.8 -17.6006c-58.4004 -21.5 -36.9004 -53.3994 -31.2002 -67.0996c3.7998 -9.10059 14.7002 -28.7998 23.7002 -42.4004c6.7998 -0.599609 13.5996 -1 20.4004 -1\nc71.5996 0 141.6 36 182 101.5zM229.1 166.1c51 -1.2998 205.4 -4.39941 230.301 -4.89941c11.8994 81.7998 -24.5 166.6 -99.3008 212.7c-100.5 61.8994 -232.1 30.6992 -294 -69.8008c-28.5996 -46.3994 -37.2998 -99.3994 -28.5 -149.1\nc11 40.9004 49.7002 131.5 178.301 140.2c50.8994 4 41.5 -19.2002 23.5996 -29.7002c-17.7998 -10.5 -45.7002 -23.7998 -68.9004 -51.2002c-23.1992 -27.3994 3 -46.7998 58.5 -48.2002zM412.9 220.9c22.6992 -6 19.0996 -15.5 19.0996 -15.5l-46.5 -23.4004\nl-169.5 -1.59961s33.7998 10.7998 65.2998 31.2998c26 16.8994 49.7002 35.5996 67.5 35.5996c3.7002 0 7.2002 -0.899414 10.4004 -2.7002c18.5 -10.5996 -2.90039 -18.1992 -13.4004 -24.5996s-50.7002 -34.5 -50.7002 -34.5s1.40039 -7.59961 31.1006 8.2002\nc29.7002 15.8994 64 33.2002 86.7002 27.2002z\" />\n    <glyph glyph-name=\"js\" unicode=\"&#xf3b8;\" \nd=\"M0 416h448v-448h-448v448zM243.8 66.5996v143.7h-42.0996v-143.1c0 -21.1006 -8.7998 -26.5 -22.6006 -26.5c-14.5 0 -20.5 9.89941 -27.0996 21.5996l-34.2998 -20.7002c10 -21.0996 29.5 -38.5 63.2002 -38.5c37.2998 0 62.8994 19.9004 62.8994 63.5zM343.4 3.09961\nc39.8994 0 69.6992 20.8008 69.6992 58.6006c0 35.2002 -20.0996 50.8994 -55.8994 66.2002l-10.5 4.5c-18.1006 7.89941 -25.9004 13 -25.9004 25.5996c0 10.2002 7.7998 18 20.1006 18c12.0996 0 19.8994 -5.09961 27.0996 -18l32.7998 21\nc-13.7998 24.4004 -33 33.7002 -59.7998 33.7002c-37.5 0 -61.5996 -24 -61.5996 -55.6006c0 -34.2998 20.0996 -50.5996 50.5 -63.5l10.5 -4.5c19.2998 -8.5 30.6992 -13.5996 30.6992 -28c0 -12.0996 -11.1992 -20.7998 -28.5996 -20.7998\nc-20.7002 0 -32.5 10.9004 -41.5 25.6006l-34.2998 -19.8008c12.2998 -24.3994 37.5996 -43 76.7002 -43z\" />\n    <glyph glyph-name=\"js-square\" unicode=\"&#xf3b9;\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM243.8 66.5996v143.7h-42.0996v-143.1c0 -21.1006 -8.7998 -26.5 -22.6006 -26.5c-14.5 0 -20.5 9.89941 -27.0996 21.5996\nl-34.2998 -20.7002c10 -21.0996 29.5 -38.5 63.2002 -38.5c37.2998 0 62.8994 19.9004 62.8994 63.5zM343.4 3.09961c39.8994 0 69.6992 20.8008 69.6992 58.6006c0 35.2002 -20.0996 50.8994 -55.8994 66.2002l-10.5 4.5c-18.1006 7.89941 -25.9004 13 -25.9004 25.5996\nc0 10.2002 7.7998 18 20.1006 18c12.0996 0 19.8994 -5.09961 27.0996 -18l32.7998 21c-13.7998 24.4004 -33 33.7002 -59.7998 33.7002c-37.5 0 -61.5996 -24 -61.5996 -55.6006c0 -34.2998 20.0996 -50.5996 50.5 -63.5l10.5 -4.5\nc19.2998 -8.5 30.6992 -13.5996 30.6992 -28c0 -12.0996 -11.1992 -20.7998 -28.5996 -20.7998c-20.7002 0 -32.5 10.9004 -41.5 25.6006l-34.2998 -19.8008c12.2998 -24.3994 37.5996 -43 76.7002 -43z\" />\n    <glyph glyph-name=\"keycdn\" unicode=\"&#xf3ba;\" horiz-adv-x=\"512\" \nd=\"M63.7998 38.7002l60.5 59c32.1006 -42.7998 71.1006 -66 126.601 -67.4004c30.5 -0.700195 60.2998 7 86.3994 22.4004c5.10059 -5.2998 18.5 -19.5 20.9004 -22c-32.2002 -20.7002 -69.6006 -31.1006 -108.101 -30.2002\nc-43.2998 1.09961 -84.5996 16.7002 -117.699 44.4004c0.299805 0.599609 -38.2002 -37.5 -38.6006 -37.9004c9.5 -29.7998 -13.0996 -62.4004 -46.2998 -62.4004c-26.7998 0.100586 -47.5 21.7002 -47.5 48.5c0 34.3008 33.0996 56.6006 63.7998 45.6006zM418.7 291.1\nc19.0996 -31.2998 29.5996 -67.3994 28.7002 -104c-1.10059 -44.7998 -19 -87.5 -48.6006 -121c0.299805 -0.299805 23.7998 -25.1992 24.1006 -25.5c9.59961 1.30078 19.1992 -2 25.8994 -9.09961c11.2998 -12 10.9004 -30.9004 -1.09961 -42.4004\nc-12 -11.2998 -30.9004 -10.8994 -42.4004 1.10059c-6.7002 7 -9.39941 16.7998 -7.59961 26.2998c-24.9004 26.5996 -44.4004 47.2002 -44.4004 47.2002c42.7002 34.0996 63.2998 79.5996 64.4004 124.2c0.700195 28.8994 -7.2002 57.1992 -21.1006 82.1992zM104 394.9\nc6.7002 -7 9.40039 -16.8008 7.59961 -26.3008l45.9004 -48.0996c-4.7002 -3.7998 -13.2998 -10.4004 -22.7998 -21.2998c-25.4004 -28.5 -39.6006 -64.7998 -40.7002 -102.9c-0.700195 -28.8994 6.09961 -57.2002 20 -82.3994l-22 -21.5\nc-19.2998 31.5996 -28.9004 67.6992 -27.7998 104.699c1 44.6006 18.2998 87.6006 47.5 121.101l-25.2998 26.3994c-9.60059 -1.2998 -19.2002 2 -25.9004 9.10059c-11.2998 12 -10.9004 30.8994 1.09961 42.3994c11.9004 11.2002 30.6006 10.9004 42.4004 -1.19922z\nM464.9 440c26 0 47.0996 -22.4004 47.0996 -48.2998c0 -25.9004 -21.0996 -47.7002 -47.0996 -47.7002c-6.30078 -0.0996094 -14 1.09961 -15.9004 1.7998l-62.9004 -59.7002c-32.6992 43.6006 -76.6992 65.9004 -126.899 67.2002\nc-30.5 0.700195 -60.2998 -6.7998 -86.2002 -22.3994l-21.0996 22c32.1992 20.7998 69.5996 31.0996 108.1 30.1992c43.2998 -1.09961 84.5996 -16.6992 117.7 -44.5996l41.0996 38.5996c-1.5 4.7002 -2.2002 9.60059 -2.2002 14.5\nc-0.0996094 26.7002 22.3008 48.4004 48.3008 48.4004zM256.7 334.6c5.5 0 10.8994 -0.399414 16.3994 -1.09961c78.1006 -9.7998 133.4 -81.0996 123.801 -159.1c-9.80078 -78.1006 -81.1006 -133.4 -159.101 -123.801c-78.0996 9.80078 -133.399 81.1006 -123.8 159.2\nc9.2998 72.4004 70.0996 124.601 142.7 124.8zM197.7 215.2c0.599609 -22.7002 12.2002 -41.7998 32.3994 -52.2002l-11 -51.7002h73.7002l-11 51.7002c20.1006 10.9004 32.1006 29 32.4004 52.2002c-0.400391 32.7998 -25.7998 57.5 -58.2998 58.2998\nc-32.1006 -0.799805 -57.3008 -24.7998 -58.2002 -58.2998zM256 288z\" />\n    <glyph glyph-name=\"kickstarter\" unicode=\"&#xf3bb;\" \nd=\"M400 -32h-352c-26.4004 0 -48 21.5996 -48 48v352c0 26.4004 21.5996 48 48 48h352c26.4004 0 48 -21.5996 48 -48v-352c0 -26.4004 -21.5996 -48 -48 -48zM199.6 269.5c0 30.7002 -17.5996 45.0996 -39.6992 45.0996c-25.8008 0 -40 -19.7998 -40 -44.5v-154.8\nc0 -25.7998 13.6992 -45.5996 40.5 -45.5996c21.5 0 39.1992 14 39.1992 45.5996v41.7998l60.6006 -75.6992c12.2998 -14.9004 39 -16.8008 55.7998 0c14.5996 15.0996 14.7998 36.7998 4 50.3994l-49.0996 62.7998l40.5 58.7002c9.39941 13.5 9.5 34.5 -5.60059 49.1006\nc-16.3994 15.8994 -44.5996 17.2998 -61.3994 -7l-44.8008 -64.7002v38.7998z\" />\n    <glyph glyph-name=\"kickstarter-k\" unicode=\"&#xf3bc;\" horiz-adv-x=\"384\" \nd=\"M147.3 333.6v-70.5996l82.7998 118.2c31.2002 44.3994 83.3008 41.7998 113.601 12.7998c27.8994 -26.7002 27.7998 -65.0996 10.3994 -89.7998l-74.8994 -107.4l90.7998 -114.8c19.9004 -24.7998 19.5996 -64.5996 -7.40039 -92.2002\nc-31.0996 -30.7002 -80.5 -27.2002 -103.199 0l-112.101 138.3v-76.5c0 -57.7998 -32.5996 -83.3994 -72.3994 -83.3994c-49.6006 0 -74.9004 36.0996 -74.9004 83.3994v283c0 45.2002 26.2002 81.4004 73.9004 81.4004c40.8994 0 73.3994 -26.2002 73.3994 -82.4004z\" />\n    <glyph glyph-name=\"laravel\" unicode=\"&#xf3bd;\" horiz-adv-x=\"640\" \nd=\"M637.5 206.4c4.2998 -4.80078 3.2002 -8.60059 -4.7002 -10.6006c-6.7002 -1.89941 -69.5996 -18.5996 -87.2998 -23.2998c25.7998 -34.5996 75.0996 -100.6 79.2998 -106.8c5.7002 -8.5 0.5 -10.9004 -7.89941 -14.4004c-8.40039 -3.39941 -195.2 -70.5996 -208 -74.5\nc-16.3008 -5 -23.7002 -7.5 -34.3008 7.40039c-8 11.0996 -51.0996 88.7002 -72.1992 127c-40 -10.5 -113.2 -29.6006 -134.301 -34.7002c-20.5996 -5 -29.3994 7.40039 -32.7998 15c-3.39941 7.59961 -124.8 269.2 -132.399 287.2c-7.60059 18 0.799805 21.3994 8.39941 22\nc7.60059 0.700195 114.5 9.59961 128.5 10.2002c14 0.699219 15.2998 -2.5 21.4004 -11.6006l154.2 -257.5l193.699 46.4004c-10.7998 15.2002 -59.5 84.2998 -64.1992 90.8994c-5.30078 7.40039 0.0996094 10.8008 8.69922 12.3008\nc8.60059 1.39941 82.7002 13.8994 89.1006 14.7998c6.2998 0.899414 11.3994 3.09961 21.7002 -9.2998c10.2998 -12.4004 68.8994 -85.7002 73.0996 -90.5zM285.3 134.4c2.2998 0.5 3.7998 1.7998 1.2002 6.09961c-2.40039 4.2998 -144.6 249.7 -144.6 249.7\nc-1.30078 2.2002 -0.900391 3 -4.5 2.7998c-3.5 -0.200195 -104.301 -9.2002 -106 -9.2002c-1.7002 0 -1.80078 -2.59961 0 -5.89941c1.7998 -3.30078 130.1 -268 130.8 -270s0.700195 -2.60059 6.5 -1.30078c5.7998 1.30078 114.3 27.3008 116.6 27.8008zM591.3 77\nc-1.7002 2.7002 -61.2002 83.4004 -64.0996 88.2002c-3 4.7002 -4.5 3.7002 -9.2002 2.2002l-188.8 -49.1006s58 -100.3 62.3994 -106.8c4.40039 -6.5 7.10059 -6 10.6006 -4.5c3.39941 1.5 181.7 61.5996 187.1 63.5996c5.5 1.90039 3.7002 3.7002 2 6.40039zM603.4 211.1\nc4.19922 1 7.39941 2.40039 5.59961 4.7002c-1.90039 2.40039 -50.9004 64.5 -54.5 69.4004c-3.59961 4.89941 -6.09961 4.09961 -9 3.39941c-2.90039 -0.599609 -67.2998 -12.2998 -71.2998 -12.7998s-2.7002 -2.7002 -1.10059 -5l56.7002 -77.7998\ns69.4004 17.2002 73.6006 18.0996z\" />\n    <glyph glyph-name=\"line\" unicode=\"&#xf3c0;\" \nd=\"M272.1 243.8v-71.0996c0 -1.7998 -1.39941 -3.2002 -3.19922 -3.2002h-11.4004c-1.09961 0 -2.09961 0.599609 -2.59961 1.2998l-32.6006 44v-42.2002c0 -1.7998 -1.39941 -3.19922 -3.2002 -3.19922h-11.3994c-1.7998 0 -3.2002 1.39941 -3.2002 3.19922v71.1006\nc0 1.7998 1.40039 3.2002 3.2002 3.2002h11.2998c1 0 2.09961 -0.5 2.59961 -1.40039l32.6006 -44v42.2002c0 1.7998 1.39941 3.2002 3.2002 3.2002h11.3994c1.7998 0.0996094 3.2998 -1.40039 3.2998 -3.10059zM190.1 247c1.80078 0 3.2002 -1.5 3.2002 -3.2002v-71.0996\nc0 -1.7998 -1.39941 -3.2002 -3.2002 -3.2002h-11.3994c-1.7998 0 -3.2002 1.40039 -3.2002 3.2002v71.0996c0 1.7998 1.40039 3.2002 3.2002 3.2002h11.3994zM162.6 187.4c1.7002 0 3.10059 -1.5 3.10059 -3.2002v-11.4004c0 -1.7998 -1.40039 -3.2002 -3.2002 -3.2002\nh-45.7002c-0.899414 0 -1.59961 0.400391 -2.2002 0.900391c-0.599609 0.599609 -0.899414 1.2998 -0.899414 2.2002v71.0996c0 1.7998 1.39941 3.2002 3.2002 3.2002h11.3994c1.7998 0 3.2002 -1.40039 3.2002 -3.2002v-56.3994h31.0996zM332.1 247\nc1.7002 0 3.10059 -1.5 3.2002 -3.2002v-11.3994c0 -1.80078 -1.39941 -3.2002 -3.2002 -3.2002h-31.0996v-12h31.0996c1.80078 0 3.2002 -1.40039 3.2002 -3.2002v-11.5c0 -1.7998 -1.39941 -3.2002 -3.2002 -3.2002h-31.0996v-12h31.0996\nc1.80078 0 3.2002 -1.39941 3.2002 -3.2002v-11.3994c0 -1.7998 -1.39941 -3.2002 -3.2002 -3.2002h-45.6992c-1.80078 0 -3.2002 1.5 -3.2002 3.2002v71.0996c0 1.7998 1.5 3.2002 3.2002 3.2002h45.6992zM448 334.3v-285.3\nc-0.0996094 -44.7998 -36.7998 -81.0996 -81.7002 -81h-285.3c-44.7998 0.0996094 -81.0996 36.9004 -81 81.7002v285.3c0.0996094 44.7998 36.9004 81.0996 81.7002 81h285.3c44.7998 -0.0996094 81.0996 -36.7998 81 -81.7002zM386.4 211.7\nc0 73 -73.2002 132.399 -163.101 132.399c-89.8994 0 -163.1 -59.3994 -163.1 -132.399c0 -65.4004 58 -120.2 136.399 -130.601c19.1006 -4.09961 16.9004 -11.0996 12.6006 -36.7998c-0.700195 -4.09961 -3.2998 -16.0996 14.0996 -8.7998\nc17.4004 7.2998 93.9004 55.2998 128.2 94.7002c23.5996 26 34.9004 52.2998 34.9004 81.5z\" />\n    <glyph glyph-name=\"lyft\" unicode=\"&#xf3c3;\" horiz-adv-x=\"512\" \nd=\"M0 366.9h77.7998v-208.7c0 -33.1006 15 -52.7998 27.2002 -61c-12.7002 -11.1006 -51.2002 -20.9004 -80.2002 2.7998c-17 14 -24.7998 37.2998 -24.7998 59v207.9zM485.9 193.4c0 -14.2002 11.5996 -25.9004 26.0996 -25.9004v-76.5\nc-56.7002 0 -102.7 46.0996 -102.7 102.7v77.0996c0 34.6006 -52.2002 34.6006 -52.2002 0v-23.2998h38.8008v-76.7998h-38.8008v-6.7002c0 -21.7998 -7.69922 -45 -24.7998 -59c-16.2998 -13.7002 -35.7002 -16.2998 -51.7002 -14v179.2\nc0 56.7002 46.1006 102.7 102.7 102.7c49.1006 0 90.2002 -34.4004 100.3 -80.7002h26.1006v-76.7998h-23.7998v-22zM191.6 292.4v0.5h77.1006v-178.2c0 -52.4004 -29.7002 -91.7002 -76.7998 -100.8c-26.1006 -5.10059 -52.5 -2.80078 -77.6006 4.69922v70.3008\nc9.7998 -4.2002 29.5 -9.40039 45 -7.80078c20.4004 2 32.7998 11.9004 34.9004 25.3008c0 0 -21.2002 -20.4004 -58.2002 -10.6006c-37 9.90039 -45 40.1006 -45 63.9004v132.7h76.7998v-113c0 -15.4004 23.7998 -15.4004 23.7998 0v113z\" />\n    <glyph glyph-name=\"magento\" unicode=\"&#xf3c4;\" \nd=\"M445.7 320.1v-256.1l-63.4004 -36.5v255.8l-158.5 91.6006l-158.6 -91.6006l0.399414 -255.899l-63.2998 36.5996v255.9l221.9 128.1zM255.6 27.5v255.9l63.4004 -36.6006v-256l-95.0996 -54.8994l-94.9004 54.8994l-0.0996094 255.9l63.2998 36.5996v-256\nl31.7998 -18.2002z\" />\n    <glyph glyph-name=\"medapps\" unicode=\"&#xf3c6;\" horiz-adv-x=\"320\" \nd=\"M118.3 209.6c3.5 12.5 6.90039 33.6006 13.2002 33.6006c8.2998 -1.7998 9.59961 -23.4004 18.5996 -36.6006c4.60059 23.5 5.30078 85.1006 14.1006 86.7002c9 0.700195 19.7002 -66.5 22 -77.5c9.89941 -4.09961 48.8994 -6.59961 48.8994 -6.59961\nc1.90039 -7.2998 -24 -7.60059 -40 -7.7998c-4.59961 -14.8008 -5.39941 -27.7002 -11.3994 -28c-4.7002 -0.200195 -8.2002 28.7998 -17.5 49.5996l-9.40039 -65.5c-4.39941 -13 -15.5 22.5 -21.8994 39.2998c-3.30078 0.100586 -62.4004 1.60059 -47.6006 7.7998zM228 0\nh-136c-21.2002 0 -21.2002 32 0 32h136c21.2002 0 21.2002 -32 0 -32zM204 -64h-88c-21.2002 0 -21.2002 32 0 32h88c21.2002 0 21.2002 -32 0 -32zM238.2 77.5c-3.60059 -21.2998 -36 -15.5 -32.6006 5.09961c3.60059 21.2002 5.60059 40.6006 15.3008 58.6006\nc32.5996 60.2998 66.0996 95.5 66.0996 151.6c0 67.9004 -57 123.2 -127 123.2s-127 -55.2998 -127 -123.2c0 -56.0996 33.5 -91.2998 66.0996 -151.7c9.7002 -17.8994 11.7002 -36.8994 15.3008 -58.5996c3.5 -20.7998 -29.1006 -26.0996 -32.6006 -5.09961\nc-3.2002 19.0996 -5.2002 36.3994 -11.8994 48.8994c-8 14.7002 -16.1006 28.1006 -24 41c-24.6006 40.4004 -45.9004 75.2998 -45.9004 125.5c0 85.6006 71.7998 155.2 160 155.2s160 -69.5996 160 -155.2c0 -50.2998 -21.2998 -85.0996 -45.9004 -125.5\nc-7.89941 -12.8994 -16.0996 -26.2998 -24 -41c-6.69922 -12.3994 -8.69922 -29.8994 -11.8994 -48.7998z\" />\n    <glyph glyph-name=\"medium-m\" unicode=\"&#xf3c7;\" horiz-adv-x=\"512\" \nd=\"M71.5 305.7c0.599609 5.89941 -1.7002 11.7998 -6.09961 15.7998l-45.1006 54.4004v8.09961h140.2l108.4 -237.7l95.2998 237.7h133.7v-8.09961l-38.6006 -37c-3.2998 -2.5 -5 -6.7002 -4.2998 -10.8008v-272c-0.700195 -4.09961 1 -8.2998 4.2998 -10.7998l37.7002 -37\nv-8.09961h-189.7v8.09961l39.1006 37.9004c3.7998 3.7998 3.7998 5 3.7998 10.7998v219.8l-108.7 -275.899h-14.7002l-126.399 275.899v-184.899c-1.10059 -7.80078 1.5 -15.6006 7 -21.2002l50.7998 -61.6006v-8.09961h-144v8l50.7998 61.7002\nc5.40039 5.59961 7.90039 13.5 6.5 21.2002v213.8z\" />\n    <glyph glyph-name=\"medrt\" unicode=\"&#xf3c8;\" horiz-adv-x=\"544\" \nd=\"M113.7 192c0 -121.8 83.8994 -222.8 193.5 -241.1c-18.7002 -4.5 -38.2002 -6.90039 -58.2002 -6.90039c-137.6 0 -249 111 -249 248s111.4 248 248.9 248c20.0996 0 39.5996 -2.40039 58.1992 -6.90039c-109.6 -18.2998 -193.399 -119.3 -193.399 -241.1zM411.1 91.7002\nc77.7002 55.3994 104.4 155.1 67 233.899c11.2002 -9.89941 21.5 -21.2998 30.5 -34.1992c61.6006 -88.3008 40.8008 -210.301 -46.5 -272.601c-87.2998 -62.2998 -208.1 -41.2002 -269.699 47c-9 12.7998 -16.2002 26.4004 -21.7002 40.5\nc60.7998 -62.0996 162.7 -70 240.399 -14.5996zM192.3 335.7c72.5 54.5996 171.601 45.7002 221.601 -19.7998c45.2998 -59.7002 34.3994 -145.601 -22.3008 -201.801c18.5 51.4004 11.3008 111 -24.3994 158c-43 56.5 -114.601 78.3008 -178.9 60.5\nc1.2998 1 2.60059 2.10059 4 3.10059zM296 224h40c4.40039 0 8 -3.59961 8 -8v-48c0 -4.40039 -3.59961 -8 -8 -8h-40c-4.40039 0 -8 -3.59961 -8 -8v-40c0 -4.40039 -3.59961 -8 -8 -8h-48c-4.40039 0 -8 3.59961 -8 8v40c0 4.40039 -3.59961 8 -8 8h-40\nc-4.40039 0 -8 3.59961 -8 8v48c0 4.40039 3.59961 8 8 8h40c4.40039 0 8 3.59961 8 8v40c0 4.40039 3.59961 8 8 8h48c4.40039 0 8 -3.59961 8 -8v-40c0 -4.40039 3.59961 -8 8 -8z\" />\n    <glyph glyph-name=\"microsoft\" unicode=\"&#xf3ca;\" \nd=\"M0 416h214.6v-214.6h-214.6v214.6zM233.4 416h214.6v-214.6h-214.6v214.6zM0 182.6h214.6v-214.6h-214.6v214.6zM233.4 182.6h214.6v-214.6h-214.6v214.6z\" />\n    <glyph glyph-name=\"mix\" unicode=\"&#xf3cb;\" \nd=\"M0 384h448v-204.1c0 -56.6006 -88 -59.9004 -88 0v23.7998c0 56.7998 -82.7002 59 -88 4.2998v-116.1c0 -58 -96 -57.9004 -96 0v175.3c0 56.8994 -80.0996 59.3994 -88 6.5v-238.601c0 -58.0996 -88 -56.1992 -88 0v348.9z\" />\n    <glyph glyph-name=\"mizuni\" unicode=\"&#xf3cc;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111.1 248 -248c0 -137 -111 -248 -248 -248s-248 111 -248 248c0 136.9 111 248 248 248zM168 88.0996v223.9c0 22.0996 -17.9004 40 -40 40s-40 -17.9004 -40 -40v-272.1c21.2002 20.8994 48.5996 37.5996 80 48.1992zM288 98v214\nc0 22.0996 -17.9004 40 -40 40s-40 -17.9004 -40 -40v-214c13 2 26.4004 3.09961 40.2002 3.09961c13.5996 0 26.8994 -1.09961 39.7998 -3.09961zM408 40.2998v271.7c0 22.0996 -17.9004 40 -40 40s-40 -17.9004 -40 -40v-223.7c31.4004 -10.5996 58.7998 -27.2002 80 -48z\n\" />\n    <glyph glyph-name=\"monero\" unicode=\"&#xf3d0;\" horiz-adv-x=\"496\" \nd=\"M352 64h108.4c-43.4004 -71.9004 -122.301 -120 -212.4 -120s-169 48.0996 -212.4 120h108.4v127.8l104 -104.8l104 105v-128zM88 112h-74.7998c-8.60059 25.0996 -13.2002 52 -13.2002 80c0 137 111 248 248 248s248 -111 248 -248c0 -28 -4.7002 -54.9004 -13.2002 -80\nh-74.7998v208l-160.6 -159.4l-159.4 159.4v-208z\" />\n    <glyph glyph-name=\"napster\" unicode=\"&#xf3d2;\" horiz-adv-x=\"496\" \nd=\"M298.3 74.4004c-14.2002 -13.6006 -31.2998 -24.1006 -50.3994 -30.5c-19 6.39941 -36.2002 16.8994 -50.3008 30.5h100.7zM342.3 274c-56.3994 39.7998 -132.1 39.9004 -188.899 -0.0996094c-19.9004 16.7998 -43.6006 29.5 -69.5 36.3994v-161.6\nc0 -217.3 328 -219.101 328 0.299805v161.2c-26 -7 -49.6006 -19.2998 -69.6006 -36.2002zM133.5 332.5c6.5 -3.2002 14.0996 -7.40039 20.4004 -11.4004c58.6992 30.5 129.199 30.6006 187.899 0.100586c6.7002 4.2002 13.5 8 20.6006 11.5\nc-64.6006 59.8994 -164.5 59.7998 -228.9 -0.200195zM43.7998 354.8c17.5 -0.5 34.2998 -3.09961 50.6006 -7.5c82 91.6006 225.5 91.6006 307.5 0.100586c16.0996 4.39941 32.7998 6.89941 50.0996 7.39941v-69.2002c58.7002 -36.5 58.5 -121.899 -0.200195 -158.199\nl-0.299805 -1.7002c-25.9004 -238.8 -381.2 -243.601 -407.6 1.5c-58.5 37.2002 -58.5 121.8 -0.100586 158.3v69.2998zM259.2 96c13.0996 59.2998 33.5 56 113 55.4004c-0.799805 -8.2002 0.0996094 -32.3008 -26.2002 -47.4004c-4.40039 -2.5 -15.2998 -6 -25.5 -6.5\nc-25.2998 -1.2002 -61.2998 -1.5 -61.2998 -1.5zM123.7 151.3c79.2998 0.700195 99.7998 4 113 -55.3994c0 0 -36 0.399414 -61.2998 1.5c-10.3008 0.5 -21.1006 4 -25.5 6.5c-26.3008 15.0996 -25.4004 39.1992 -26.2002 47.3994zM292.8 27.9004\nc3 -4.90039 3.2002 -8.80078 3.2998 -8.90039c-29.0996 -17.5996 -67.0996 -17.5996 -96.1992 0c0 0 0.899414 5.5 3.69922 9.59961c3.5 5.10059 6.40039 6.60059 6.40039 6.60059c23.7002 -6.90039 51.0996 -7.2998 75.9004 0c0 0 3.69922 -2 6.89941 -7.2998z\" />\n    <glyph glyph-name=\"node-js\" unicode=\"&#xf3d3;\" \nd=\"M224 -60c-6.7002 0 -13.5 1.7998 -19.4004 5.2002l-61.6992 36.5c-9.2002 5.2002 -4.7002 7 -1.7002 8c12.2998 4.2998 14.7998 5.2002 27.8994 12.7002c1.40039 0.799805 3.2002 0.5 4.60059 -0.400391l47.3994 -28.0996c1.7002 -1 4.10059 -1 5.7002 0l184.7 106.6\nc1.7002 1 2.7998 3 2.7998 5v213.2c0 2.09961 -1.09961 4 -2.89941 5.09961l-184.601 106.5c-1.7002 1 -4 1 -5.7002 0l-184.5 -106.6c-1.7998 -1 -2.89941 -3 -2.89941 -5.10059v-213.1c0 -2 1.09961 -4 2.89941 -4.90039l50.6006 -29.1992\nc27.5 -13.7002 44.2998 2.39941 44.2998 18.6992v210.4c0 3 2.40039 5.2998 5.40039 5.2998h23.3994c2.90039 0 5.40039 -2.2998 5.40039 -5.2998v-210.5c0 -36.5996 -20 -57.5996 -54.7002 -57.5996c-10.7002 0 -19.0996 0 -42.5 11.5996l-48.4004 27.9004\nc-12 6.89941 -19.3994 19.7998 -19.3994 33.6992v213.101c0 13.7998 7.39941 26.7998 19.3994 33.7002l184.5 106.6c11.7002 6.59961 27.2002 6.59961 38.8008 0l184.699 -106.7c12 -6.89941 19.4004 -19.7998 19.4004 -33.7002v-213.1\nc0 -13.7998 -7.40039 -26.7002 -19.4004 -33.7002l-184.699 -106.6c-5.90039 -3.40039 -12.6006 -5.2002 -19.4004 -5.2002zM373.1 150.1c0 -40.1992 -33.5996 -63.2998 -92 -63.3994c-80.8994 0 -97.7998 37.0996 -97.7998 68.2002c0 2.89941 2.2998 5.2998 5.2998 5.2998\nh23.9004c2.7002 0 4.90039 -1.90039 5.2998 -4.5c3.60059 -24.2998 14.2998 -36.6006 63.2002 -36.6006c38.9004 0 55.5 8.80078 55.5 29.4004c0 11.9004 -4.7002 20.7998 -65.2002 26.7002c-50.5 5 -81.7998 16.2002 -81.7998 56.5996c0 37.2998 31.4004 59.5 84.0996 59.5\nc59.2002 0 88.5 -20.5 92.2002 -64.5996c0.100586 -1.5 -0.399414 -3 -1.39941 -4.10059c-1 -1.09961 -2.40039 -1.69922 -3.90039 -1.69922h-24c-2.5 0 -4.7002 1.7998 -5.2002 4.19922c-5.7998 25.6006 -19.7998 33.8008 -57.7002 33.8008\nc-42.5 0 -47.3994 -14.8008 -47.3994 -25.9004c0 -13.4004 5.7998 -17.2998 63.2002 -24.9004c56.6992 -7.5 83.6992 -18.0996 83.6992 -58z\" />\n    <glyph glyph-name=\"npm\" unicode=\"&#xf3d4;\" horiz-adv-x=\"576\" \nd=\"M288 160h-32v64h32v-64zM576 288v-192h-288v-32h-128v32h-160v192h576zM160 256h-128v-128h64v96h32v-96h32v128zM320 256h-128v-160h64v32h64v128zM544 256h-192v-128h64v96h32v-96h32v96h32v-96h32v128z\" />\n    <glyph glyph-name=\"ns8\" unicode=\"&#xf3d5;\" horiz-adv-x=\"640\" \nd=\"M187.1 288.1h44.9004l-48.5 -160.1h-56.9004l-50.5996 106.5l-31.0996 -106.5h-44.9004l49 160.1h49.4004l54.5 -113.699zM639.6 289c4.60059 -28.5996 -36.0996 -44.7002 -65.6992 -50.5996h-0.100586c17.5 -29.3008 22.1006 -69.3008 3.40039 -105.5\nc-26.4004 -51.2002 -86.5 -79.9004 -135.101 -68c-29.3994 7.19922 -51.3994 29 -56.7998 59.5c-0.700195 3.5 -1 7.09961 -1.2002 10.7998c-5.5 -2.7998 -11.8994 -4.2002 -18.5 -4.90039c-15.5996 -1.7002 -21 -2.2998 -160.899 -2.2998l11.5996 39.5h126.8\nc9.10059 0 12.2002 3.2002 13.8008 7.40039c1.69922 4.59961 3.39941 10.1992 4.5 14.5996c1.09961 3.90039 0.0996094 6.59961 -7.7002 6.59961h-87.2998c-33.4004 0 -38.2002 9.2002 -32.8008 28.6006c3.2002 11.5 10.8008 37.2002 17.6006 47.0996\nc7.09961 10.2002 18.2998 13.7002 30.5996 15c15.6006 1.7002 20.4004 1.2002 160.101 1.2002l-9.7002 -31.5h-133.5c-5.5 0 -11.2002 -0.700195 -13.2998 -7.09961c-1.80078 -5.40039 -2.10059 -6.7002 -3.7002 -12.2002c-1.40039 -5.10059 2.2002 -7.40039 11.5 -7.40039\nh87.5996c20.4004 0 31 -6.7998 34 -16.5996c19.9004 21.3994 50.4004 39.5 94.2002 48.2002v0.0996094c-13.4004 42.5 43.9004 66.5996 88.5 58.7998c18.2002 -3.2002 39.2002 -13.2998 42.0996 -31.2998zM530.7 184.3c3.09961 15.7998 -0.5 33.7002 -7.2002 47.7998\nc-23.2998 -2.89941 -52.2998 -10.0996 -68.5 -26.8994c-24.4004 -25.2998 -16.7998 -60 14.0996 -64.7998c25 -3.90039 55.7002 14.3994 61.6006 43.8994zM552.5 267.4c10.5996 1.5 23.5 3.5 34.2002 9.59961c14.7998 8.5 10.3994 21 -4.90039 24.4004\nc-10.8994 2.39941 -25.0996 -0.5 -31.7998 -7.7002c-7.2998 -7.7998 -1.7002 -20.2998 2.5 -26.2998z\" />\n    <glyph glyph-name=\"nutritionix\" unicode=\"&#xf3d6;\" horiz-adv-x=\"400\" \nd=\"M88 439.9c0 0 133.4 8.19922 121 -104.4c0 0 19.0996 74.9004 103 40.5996c0 0 -17.7002 -74 -88 -56c0 0 14.5996 54.6006 66.0996 56.6006c0 0 -39.8994 10.2998 -82.0996 -48.7998c0 0 -19.7998 94.5 -93.5996 99.6992c0 0 75.1992 -19.3994 77.5996 -107.5\nc0 -0.0996094 -106.4 -7 -104 119.801zM400 124.3c0 -48.5 -9.7002 -95.2998 -32 -132.3c-42.2002 -30.9004 -105 -48 -168 -48c-62.9004 0 -125.8 17.0996 -168 48c-22.2998 37 -32 83.7998 -32 132.3c0 48.4004 17.7002 94.7002 40 131.7\nc42.2002 30.9004 97.0996 48.5996 160 48.5996c63 0 117.8 -17.5996 160 -48.5996c22.2998 -37 40 -83.2998 40 -131.7zM120 20c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28s12.5 -28 28 -28s28 12.5 28 28zM120 86.2002c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28\ns12.5 -28 28 -28s28 12.5 28 28zM120 152.4c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28s12.5 -28 28 -28s28 12.5 28 28zM192 20c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28s12.5 -28 28 -28s28 12.5 28 28zM192 86.2002c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28\ns12.5 -28 28 -28s28 12.5 28 28zM192 152.4c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28s12.5 -28 28 -28s28 12.5 28 28zM264 20c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28s12.5 -28 28 -28s28 12.5 28 28zM264 86.2002c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28\ns12.5 -28 28 -28s28 12.5 28 28zM264 152.4c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28s12.5 -28 28 -28s28 12.5 28 28zM336 20c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28s12.5 -28 28 -28s28 12.5 28 28zM336 86.2002c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28\ns12.5 -28 28 -28s28 12.5 28 28zM336 152.4c0 15.5 -12.5 28 -28 28s-28 -12.5 -28 -28s12.5 -28 28 -28s28 12.5 28 28zM360 192c-4.7998 22.2998 -7.40039 36.9004 -16 56c-38.7998 19.9004 -90.5 32 -144 32s-105.2 -12.0996 -144 -32\nc-8.7998 -19.5 -11.2002 -33.9004 -16 -56c42.2002 7.90039 98.7002 14.7998 160 14.7998s117.8 -6.89941 160 -14.7998z\" />\n    <glyph glyph-name=\"page4\" unicode=\"&#xf3d7;\" horiz-adv-x=\"496\" \nd=\"M248 -56c-137 0 -248 111 -248 248s111 248 248 248c20.9004 0 41.2998 -2.59961 60.7002 -7.5l-266.4 -376.5h205.7v-112zM248 87.5996h-149.4l149.4 213.601v-213.601zM344 56h111.4c-26.9004 -41 -65.7002 -73.5 -111.4 -92.7002v92.7002zM401.4 194.2v-16.7002\nl-21.2002 8.2998zM381.1 139.7c5.90039 0 8.2002 -4.7002 8.2002 -10.6006v-10h-16.2002v7.7002c0 6.60059 1.30078 12.9004 8 12.9004zM496 192c0 -37.2998 -8.2002 -72.7002 -23 -104.4h-129v333.101c89.2998 -37.5 152 -125.8 152 -228.7zM360.4 304.4h68.1992v47.5996\nh-13.8994v-32.5996h-13.9004v29.5996h-13.8994v-29.5996h-12.7002v32.5996h-13.9004v-47.5996h0.100586zM428.5 119.1h-26.5v11c0 15.4004 -5.59961 25.2002 -20.9004 25.2002c-15.3994 0 -20.6992 -10.5996 -20.6992 -25.8994v-25.3008h68.1992v15h-0.0996094zM428.5 222.1\nl-68.2002 -29.6992v-12.4004l68.2002 -29.5v16.5996l-14.4004 5.7002v26.5l14.4004 5.90039v16.8994zM423.7 290.6h-35.6006v-26.5996h13.9004v12.2002h11c8.59961 -15.7998 1.2998 -35.2998 -18.5996 -35.2998c-22.5 0 -28.3008 25.2998 -15.5 37.6992l-11.6006 10.6006\nc-16.2002 -17.5 -12.2002 -63.9004 27.1006 -63.9004c34 0 44.6992 35.9004 29.2998 65.2998z\" />\n    <glyph glyph-name=\"palfed\" unicode=\"&#xf3d8;\" horiz-adv-x=\"576\" \nd=\"M384.9 254.1c0.0996094 -53.3994 -46.5 -96.1992 -83.3008 -96.1992c-12.5 0 -14.3994 3.39941 -15.0996 6.19922c0.5 39.1006 1.7002 80.4004 3 119.801c40.2002 14.3994 95.4004 17.5996 95.4004 -29.8008zM190.4 181.9\nc-0.200195 0.599609 -0.400391 2.09961 -0.600586 4.59961c0 25.5996 37 60.9004 58.5 75.9004c-1.2002 -36.4004 -5.5 -198.101 -1.39941 -242.5c3 -32.3008 26.7998 -32.9004 36.3994 -22.3008c5.90039 6.60059 5.5 15.7002 5.2998 19.1006v0.200195\nc-1.7998 25.5996 -2.7998 60.5996 -2.69922 100c60.7998 -14.4004 140.1 60.2998 140.1 138.199c0 71 -63 94.2002 -135.2 72c-2.89941 14.6006 -18.2998 20.1006 -29.5 11.1006c-7.5 -6.2002 -9.5 -15.7998 -10.5 -28.2002c-57.7998 -30.9004 -100.7 -84.5 -100.7 -126.5\nc0 -24.9004 15.6006 -43 37.1006 -43c35.0996 0 41 44.0996 14.3994 44.0996c-4.69922 0 -11 -2.69922 -11.1992 -2.69922zM8 266.9c0 38.5996 38.4004 37.3994 38.4004 37.3994h29c15.5 70.1006 120.5 74.2998 120.5 74.2998h28.0996v19.1006\nc0 18.3994 21.0996 18.3994 21.0996 18.3994h85.8008c18.3994 0 21.0996 -18.3994 21.0996 -18.3994v-19.1006h28c89.2002 0 112.1 -48.6992 119.4 -74.2998h30.0996c38.5 0 38.4004 -37.3994 38.4004 -37.3994c0 -38.6006 -38.4004 -37.4004 -38.4004 -37.4004h-30\nl-22.4004 -217.2c0 -43.8994 -44.6992 -44.2998 -44.6992 -44.2998h-288.9c-44.7002 0 -44.7002 44.2998 -44.7002 44.2998l-22.3994 217.2h-30c-38.5 0 -38.4004 37.4004 -38.4004 37.4004z\" />\n    <glyph glyph-name=\"patreon\" unicode=\"&#xf3d9;\" horiz-adv-x=\"512\" \nd=\"M512 253.2c0 -101.3 -82.4004 -183.8 -183.8 -183.8c-101.7 0 -184.4 82.3994 -184.4 183.8c0 101.6 82.7002 184.3 184.4 184.3c101.399 0 183.8 -82.7002 183.8 -184.3zM0 -53.5v491h90v-491h-90z\" />\n    <glyph glyph-name=\"periscope\" unicode=\"&#xf3da;\" \nd=\"M370 384.4c38.4004 -40.7002 59.5 -94.3008 59.5 -150.801c0 -74.2998 -57.4004 -159.5 -82 -192.6c-8 -10.7998 -79.2998 -105 -120.9 -105c-34 0 -88.7998 56.5 -125.399 104.9c-24.9004 32.8994 -82.7002 117.6 -82.7002 192.699c0 118.2 93.4004 214.4 208.1 214.4\nc53.9004 0 104.801 -22.5996 143.4 -63.5996zM226.6 -45.9004c37.3008 0 184.801 167.301 184.7 279.4c0 107.3 -83.8994 196.3 -184.7 196.3c-106.1 0 -190 -88.8994 -190 -196.3c0 -112.1 147.5 -279.4 190 -279.4zM338 241.2c0 -59.1006 -51.0996 -109.7 -110.8 -109.7\nc-100.601 0 -150.7 108.2 -92.9004 181.8v-0.399414c0 -24.5 20.1006 -44.4004 44.7998 -44.4004c24.7002 0 44.8008 19.9004 44.8008 44.4004c0 18.1992 -11.1006 33.7998 -26.9004 40.6992c76.5996 19.2002 141 -39.2998 141 -112.399z\" />\n    <glyph glyph-name=\"phabricator\" unicode=\"&#xf3db;\" horiz-adv-x=\"496\" \nd=\"M323 185.9c0 0 21.5996 -19.6006 20.9004 -20.7002l-8.10059 -19.7998c-0.5 -1.40039 -29.7002 -0.5 -29.7002 -0.5l-9.09961 -9.10059s1.59961 -31.5 0.200195 -32.0996l-20 -7.5c-1.2998 -0.5 -21.7998 23.2998 -21.7998 23.2998l-13.1006 0.200195\ns-19.2998 -24.1006 -20.7002 -23.5l-20.0996 8.2998c-1.40039 0.5 -1.2002 32.2998 -1.2002 32.2998l-9.39941 9.2998s-28.9004 -0.899414 -29.5 0.5l-9.5 20c-0.600586 1.40039 21.0996 21.2002 21.0996 21.2002l-0.0996094 12.9004s-21.6006 19.5996 -21 21\nl8.09961 19.7998c0.5 1.2998 29.7002 0.400391 29.7002 0.400391l9.09961 9.09961s-1.59961 28.4004 -0.200195 28.9004l20 8.2998c1.40039 0.599609 21.9004 -20.7998 21.9004 -20.7998l13.0996 -0.200195s19.3008 21.5996 20.7002 21l20.1006 -9.2002\nc1.39941 -0.599609 1.19922 -29.0996 1.19922 -29.0996l9.40039 -9.30078s28.9004 0.900391 29.5 -0.5l9.5 -20c0.599609 -1.39941 -21.0996 -21.1992 -21.0996 -21.1992zM278.1 194.6c-0.699219 17 -15.5 30.3008 -32.7998 29.5\nc-17.2998 -0.699219 -30.7998 -15.1992 -30.0996 -32.2998c0.700195 -17.0996 15.5 -30.3994 32.7998 -29.5996s30.7998 15.2998 30.0996 32.3994zM479.3 232.5c22.2998 -22.2998 22.2998 -58.7002 0 -81c-67.3994 -67.4004 -44.2998 -44.4004 -95.2998 -95.2998\nc-74.4004 -74.5 -194.7 -74.9004 -269.8 -1.60059l-0.100586 -0.0996094c-51 51 -27.5 27.5996 -97.3994 97c-22.2998 22.2998 -22.2998 58.7002 0 81c67.8994 67.4004 44.7998 44.2998 95.7002 95.2998c74.3994 74.4004 194.699 74.9004 269.8 1.60059l0.0996094 0.0996094\nzM140.4 84.2002c59.5996 -59.5 156 -59.6006 215.6 -0.100586c59.5996 59.6006 59.5 156.101 0 215.601c-59.5996 59.5 -156.1 59.5996 -215.6 0c-59.6006 -59.5 -59.6006 -156 0 -215.5z\" />\n    <glyph glyph-name=\"phoenix-framework\" unicode=\"&#xf3dc;\" horiz-adv-x=\"640\" \nd=\"M212.9 103.7c-36.7002 -1.2002 -108.7 29.2998 -127.7 106.399c-8.7002 35.3008 -2.7002 51.8008 -8 86.1006c-8.2002 53.3994 -32.1006 72.2002 -55.9004 76.5c-6.2002 1.09961 -12.3994 1.2998 -18.7002 0.299805\nc-0.799805 -0.0996094 -1.59961 -0.200195 -2.39941 -0.200195c-0.100586 0.200195 -0.100586 0.299805 -0.200195 0.5c0.700195 0.600586 1.40039 1.2002 2.2002 1.7998c36.8994 26.9004 92 38.4004 136.3 35c123.6 -9.5 141.3 -156.6 252.5 -173.1\nc6.09961 -0.900391 12.2998 -1.09961 18.5 -1.7002c0.700195 -0.0996094 1.40039 -0.0996094 2.5 -0.200195c-2.09961 -2.19922 -21.5996 -11.7998 -36.5 -14.5c-18.4004 -3.39941 -35.7002 -0.0996094 -51.2998 10.3008c-14.5 9.7998 -24.5 23.5 -38.9004 27.3994\nc-13 3.60059 -34.0996 1.7002 -35.8994 -19.5996c-1.30078 -15.9004 14.1992 -51.7998 51.7998 -74.6006c40.3994 -24.5 101.399 -26.8994 134.7 -14.7998c0.299805 0.100586 0.699219 0.200195 1.09961 0.299805c0.200195 0.100586 0.400391 0 1 -0.0996094\nc-23.5996 -28.4004 -71.2002 -49.9004 -108.2 -45.4004c-50.3994 6.2002 -77.7002 75.9004 -113.7 97.5c-19.0996 11.5 -49.0996 7 -52 -18.5c-1.09961 -10 2.10059 -19 6.40039 -27.5996c24.4004 -48.5996 65.5996 -47 68 -49.5996\nc-2.7998 -0.800781 -21.7998 -2.10059 -25.5996 -2.2002zM75.2998 383.1c13.1006 -14.5 34.2002 -7.89941 35.2998 6.80078c-12.3994 -0.700195 -24.5 -2.2002 -36.5996 -4.80078c0.400391 -0.799805 0.400391 -1 1.2998 -2zM272.2 32.5996\nc-42.7998 -1.19922 -92 26.7002 -123.5 61.4004c-4.60059 5 -16.7998 20.2002 -18.6006 23.4004l0.400391 0.399414c6.59961 -4.09961 25.7002 -18.5996 54.7998 -27c24.2002 -7 48.1006 -6.2998 71.6006 3.2998c22.6992 9.30078 41 0.5 43.0996 -2.89941\nc-18.5 -3.7998 -20.0996 -4.40039 -24 -7.90039c-5.09961 -4.39941 -4.59961 -11.7002 7 -17.2002c26.2002 -12.3994 63 2.80078 97.2002 -25.3994c2.39941 -2 8.09961 -7.7998 10.0996 -10.7002c-0.0996094 -0.200195 -0.299805 -0.299805 -0.399414 -0.5\nc-4.80078 1.5 -16.4004 7.5 -40.2002 9.2998c-24.7002 2 -46.2998 -5.2998 -77.5 -6.2002zM447 284.6c16.4004 5.2002 41.2998 13.4004 66.5 3.30078c16.0996 -6.5 26.2002 -18.7002 32.0996 -34.6006c3.5 -9.39941 5.10059 -19.7002 5.10059 -28.7002\nc-0.200195 0 -0.400391 0 -0.600586 -0.0996094c-0.199219 0.400391 -0.399414 0.900391 -0.5 1.2998c-5 22 -29.8994 43.7998 -67.5996 29.9004c-50.2002 -18.6006 -130.4 -9.7002 -176.9 48c-0.699219 0.899414 -2.39941 1.7002 -1.2998 3.2002\nc0.100586 0.199219 2.10059 -0.600586 3 -1.30078c18.1006 -13.3994 38.2998 -21.8994 60.2998 -26.1992c30.5 -6.10059 54.6006 -2.90039 79.9004 5.19922zM549.7 167.1c-32.4004 -0.199219 -33.7998 -50.0996 -103.601 -64.3994\nc-18.1992 -3.7002 -38.6992 -4.60059 -44.8994 -4.2002v0.400391c2.7998 1.5 14.7002 2.59961 29.7002 16.5996c7.89941 7.2998 15.2998 15.0996 22.7998 22.9004c19.5 20.1992 41.3994 42.1992 81.8994 39c23.1006 -1.80078 29.3008 -8.2002 36.1006 -12.7002\nc0.299805 -0.200195 0.399414 -0.5 0.700195 -0.900391c-0.5 0 -0.700195 -0.0996094 -0.900391 0c-7 2.7002 -14.2998 3.2998 -21.7998 3.2998zM537.4 191.2c-0.100586 -0.200195 -0.100586 -0.400391 -0.200195 -0.600586c-28.9004 4.40039 -48 7.90039 -68.5 -4\nc-17 -9.89941 -31.4004 -20.5 -62 -24.3994c-27.1006 -3.40039 -45.1006 -2.40039 -66.1006 8c-0.299805 0.200195 -0.599609 0.399414 -1 0.599609c0 0.200195 0.100586 0.299805 0.100586 0.5c24.8994 -3.7998 36.3994 -5.09961 55.5 5.7998\nc22.2998 12.9004 40.0996 26.6006 71.2998 31c29.5996 4.10059 51.2998 -2.5 70.9004 -16.8994zM268.6 350.7c-0.599609 0.599609 -1.09961 1.2002 -2.09961 2.2998c7.59961 0 29.7002 1.2002 53.4004 -8.40039c19.6992 -8 32.1992 -21 50.1992 -32.8994\nc11.1006 -7.2998 23.4004 -9.2998 36.4004 -8.10059c4.2998 0.400391 8.5 1.2002 12.7998 1.7002c0.400391 0.100586 0.900391 0 1.5 -0.299805c-0.599609 -0.400391 -1.2002 -0.900391 -1.7998 -1.2002c-8.09961 -4 -16.7002 -6.2998 -25.5996 -7.09961\nc-26.1006 -2.60059 -50.3008 3.7002 -73.4004 15.3994c-19.2998 9.90039 -36.4004 22.9004 -51.4004 38.6006zM640 112.3c-3.5 -3.09961 -22.7002 -11.5996 -42.7002 -5.2998c-12.2998 3.90039 -19.5 14.9004 -31.5996 24.0996\nc-10 7.60059 -20.9004 7.90039 -28.1006 8.40039c0.600586 0.799805 0.900391 1.2002 1.2002 1.40039c14.7998 9.19922 30.5 12.1992 47.2998 6.5c12.5 -4.2002 19.2002 -13.5 30.4004 -24.2002c10.7998 -10.4004 21 -9.90039 23.0996 -10.5\nc0.100586 0.0996094 0.200195 0 0.400391 -0.400391zM427.5 -24.7002c2.2002 -1.2002 1.59961 -1.5 1.5 -2c-18.5 1.40039 -33.9004 7.60059 -46.7998 22.2002c-21.7998 24.7002 -41.7002 27.9004 -48.6006 29.7002c0.5 0.200195 0.800781 0.399414 1.10059 0.399414\nc13.0996 -0.0996094 26.0996 -0.699219 38.8994 -3.89941c25.3008 -6.40039 35 -25.4004 41.6006 -35.2998c3.2002 -4.80078 7.2998 -8.30078 12.2998 -11.1006z\" />\n    <glyph glyph-name=\"playstation\" unicode=\"&#xf3df;\" horiz-adv-x=\"576\" \nd=\"M570.9 75.7002c-11.3008 -14.2002 -38.8008 -24.2998 -38.8008 -24.2998l-205.1 -73.6006v54.2998l150.9 53.8008c17.0996 6.09961 19.7998 14.7998 5.7998 19.3994c-13.9004 4.60059 -39.1006 3.2998 -56.2002 -2.89941l-100.5 -35.5v56.3994\nc23.2002 7.7998 47.0996 13.6006 75.7002 16.7998c40.8994 4.5 90.8994 -0.599609 130.2 -15.5c44.1992 -14 49.1992 -34.6992 38 -48.8994zM346.5 168.2v139c0 16.2998 -3 31.2998 -18.2998 35.5996c-11.7002 3.7998 -19 -7.09961 -19 -23.3994v-347.9l-93.7998 29.7998\nv414.7c39.8994 -7.40039 98 -24.9004 129.199 -35.4004c79.5 -27.2998 106.4 -61.2998 106.4 -137.8c0 -74.5 -46 -102.8 -104.5 -74.5996zM43.2002 37.7998c-45.4004 12.7998 -53 39.5 -32.2998 54.7998c19.0996 14.2002 51.6992 24.9004 51.6992 24.9004l134.5 47.7998\nv-54.5l-96.7998 -34.5996c-17.0996 -6.10059 -19.7002 -14.7998 -5.7998 -19.4004c13.9004 -4.59961 39.0996 -3.2998 56.2002 2.90039l46.3994 16.8994v-48.7998c-51.5996 -9.2998 -101.399 -7.2998 -153.899 10z\" />\n    <glyph glyph-name=\"pushed\" unicode=\"&#xf3e1;\" horiz-adv-x=\"432\" \nd=\"M407 336.1c21.7002 -1.89941 33.7998 -28 17.4004 -44.7998l-235.2 -231.3l-35.2998 -80.7998c-11 -17.2002 -41.2002 -14.2998 -47.7002 7l-105.101 348.3c-4.59961 18.2998 6.30078 33.9004 21.4004 36.5996l271.3 44.4004c17.9004 3.40039 39.1006 -13.5 28.7002 -37\nl-14 -33.4004zM297.6 394.4l-189 -31l177.4 -16.3008l16.7998 39.9004c2.2998 4.90039 -0.0996094 8.09961 -5.2002 7.40039zM22.7002 340.1l157.899 -244.3l96.9004 230.7l-248.7 22.7002c-5.09961 0.899414 -9.2002 -4 -6.09961 -9.10059zM136 -8.40039\nc0 0 28.2002 64.1006 35.2002 79.1006l-127.7 197.6l83.0996 -275.5c1.5 -4.2998 6.80078 -5.2002 9.40039 -1.2002zM408.8 306.1c3.10059 3.30078 1.40039 7.5 -2.59961 8.60059l-106.4 9.7002l-89.7002 -213.7z\" />\n    <glyph glyph-name=\"python\" unicode=\"&#xf3e2;\" \nd=\"M439.8 247.5c10.7002 -42.9004 11.2002 -75.0996 0 -108.6c-10.7998 -32.5 -22.2998 -54.2002 -53.3994 -54.2002h-160.2v-13.6006h106.7v-40.6992c0 -30.8008 -26.5 -46.5 -53.4004 -54.3008c-40.5 -11.6992 -73 -9.89941 -106.8 0\nc-28.2002 8.30078 -53.4004 25.3008 -53.4004 54.3008v101.8c0 29.2998 24.2002 54.2998 53.4004 54.2998h106.8c35.5996 0 66.7998 31 66.7998 67.7998v47.4004h40.1006c31.0996 0 45.6992 -23.2998 53.3994 -54.2002zM286.2 44c-11 0 -20 -9 -20.1006 -20.2998\nc0 -11.2002 9.10059 -20.4004 20.1006 -20.4004c11.0996 0 20.0996 9.10059 20.0996 20.4004c0 11.2002 -9 20.2998 -20.0996 20.2998zM167.8 199.9c-36.2998 0 -66.7998 -31.1006 -66.7998 -66.4004v-48.7998h-36.7002c-31.0996 0 -49.2002 22.5996 -56.7998 54.2002\nc-10.2002 42.5 -9.7998 67.8994 0 108.6c8.5 35.5 35.7002 54.2002 66.7998 54.2002h147v13.5996h-106.899v40.7002c0 30.9004 8.19922 47.5996 53.3994 55.5996c32.1006 5.7002 71 6 106.8 0.100586c29 -4.90039 53.4004 -26.6006 53.4004 -55.6006v-101.899\nc0 -29.7998 -23.7002 -54.2998 -53.4004 -54.2998h-106.8zM161.1 342.5c11.1006 0 20.1006 9.09961 20.1006 20.2998s-9.10059 20.4004 -20.1006 20.4004c-11.0996 0 -20 -9.10059 -20.0996 -20.4004c0 -11.2002 9 -20.2998 20.0996 -20.2998z\" />\n    <glyph glyph-name=\"red-river\" unicode=\"&#xf3e3;\" \nd=\"M353.2 416c52.3994 0 94.7998 -42.4004 94.7998 -94.7998v-258.4c0 -52.3994 -42.4004 -94.7998 -94.7998 -94.7998h-258.4c-52.3994 0 -94.7998 42.4004 -94.7998 94.7998v258.4c0 52.3994 42.4004 94.7998 94.7998 94.7998h258.4zM144.9 247.1\nc-0.600586 12.4004 11.6992 24.6006 24 24h56.2998c27 0 48.8994 21.9004 48.8994 48.9004h-154.199c-13.2002 0 -23.9004 -10.7002 -23.9004 -23.9004v-154.199c27 0 48.9004 21.8994 48.9004 48.8994v56.2998zM321.2 175.1c27 0 48.8994 21.9004 48.8994 48.9004h-154.199\nc-13.2002 0 -23.9004 -10.7002 -23.9004 -23.9004v-154.199c27 0 48.9004 21.8994 48.9004 48.8994v56.2998c-0.600586 12.4004 11.6992 24.6006 24 24h56.2998z\" />\n    <glyph glyph-name=\"wpressr\" unicode=\"&#xf3e4;\" horiz-adv-x=\"496\" \nd=\"M248 440c136.97 0 248 -111.03 248 -248s-111.03 -248 -248 -248s-248 111.03 -248 248s111.03 248 248 248zM419.33 281.4c2.41016 5.47949 0.459961 8.2793 -5.62012 8.26953c-104.8 0.00976562 -107.69 -0.0302734 -130.78 0.0302734\nc-4.31934 0.00976562 -7.10938 -1.82031 -8.83984 -5.78027c-5.70996 -13.0996 -11.5195 -26.1504 -17.2998 -39.21c-2.57031 -5.7998 -1 -8.26953 5.26953 -8.26953c25.2607 0 50.5205 -0.0107422 75.7803 0.0195312\nc10.0303 0.00976562 8.54004 -13.6602 -3.89941 -13.6396c-26.4307 0.0498047 -52.8604 0 -79.29 0.0498047c-4.91016 0.00976562 -8.33008 -1.88965 -10.3506 -6.5c-4.2998 -9.83008 -32.1494 -73.0801 -32.1895 -73.1602\nc-3.2002 -7.16016 -16.2607 -6.09961 -11.2803 5.33008c8.26953 18.9902 16.6504 37.9297 24.9795 56.8896c2.25 5.11035 -0.0996094 8.74023 -5.65918 8.75c-15.21 0.0205078 -30.4307 -0.0400391 -45.6406 0.0400391\nc-3.35938 0.0107422 -5.41016 -1.29004 -6.76953 -4.38965c-31.4307 -71.8701 -29.7803 -67.3203 -30.0098 -67.6904c-3.87012 -6.37012 -14.8604 -3.34961 -10.9502 5.60059c5.66992 13.0098 11.3701 26.0098 17.0898 39c13.5703 30.7793 27.1396 61.5596 40.7402 92.3301\nc2.54004 5.75 -0.419922 10.5801 -6.66016 10.5898c-14.2402 0.0302734 -28.4805 -0.0498047 -42.7197 0.0498047c-4.26074 0.0302734 -6.84082 -1.76953 -8.54004 -5.65039c-12.8604 -29.3896 -25.8203 -58.7295 -38.75 -88.0791\nc-8.62012 -19.5605 -17.2305 -39.1201 -25.8906 -58.6602c-1.58008 -3.55078 -1.47949 -6.78027 1.20996 -9.73047c11.2207 -12.3096 22.4707 -24.6094 33.6807 -36.9395c2.08984 -2.30078 4.58984 -3.4502 7.71973 -3.4502c45.9395 0.0195312 91.8701 0.00976562 137.81 0\nc3.86035 0 6.37988 1.78027 7.91992 5.29004c10.3203 23.5 20.7607 46.9395 30.9502 70.5c2.08984 4.83008 5.21973 6.75 10.3398 6.71973c23.0205 -0.110352 46.0303 -0.0400391 69.0508 -0.0498047c6.0791 0 10.5293 2.72949 12.9697 8.24023\nc15.2598 34.4795 30.4502 68.9893 45.6299 103.5z\" />\n    <glyph glyph-name=\"replyd\" unicode=\"&#xf3e6;\" \nd=\"M320 -32h-192c-70.4004 0 -128 57.5996 -128 128v192c0 70.4004 57.5996 128 128 128h192c70.4004 0 128 -57.5996 128 -128v-192c0 -70.4004 -57.5996 -128 -128 -128zM193.4 174.8c-6.10059 2 -11.6006 3.10059 -16.4004 3.10059\nc-7.2002 0 -13.5 -1.90039 -18.9004 -5.60059c-5.39941 -3.7002 -9.59961 -9 -12.7998 -15.7998h-1.09961l-4.2002 18.2998h-28v-138.899h36.0996v89.6992c1.5 5.40039 4.40039 9.80078 8.7002 13.2002c4.2998 3.40039 9.7998 5.10059 16.2002 5.10059\nc4.59961 0 9.7998 -1 15.5996 -3.10059zM308.6 71.4004c-3.19922 -2.40039 -7.69922 -4.80078 -13.6992 -7.10059s-12.8008 -3.5 -20.4004 -3.5c-12.2002 0 -21.0996 3 -26.5 8.90039c-5.5 5.89941 -8.5 14.7002 -9 26.3994h83.2998\nc0.900391 4.80078 1.60059 9.40039 2.10059 13.9004c0.5 4.40039 0.699219 8.59961 0.699219 12.5c0 10.7002 -1.59961 19.7002 -4.69922 26.9004c-3.2002 7.19922 -7.30078 13 -12.5 17.1992c-5.2002 4.30078 -11.1006 7.30078 -17.8008 9.2002\nc-6.69922 1.7998 -13.5 2.7998 -20.5996 2.7998c-21.0996 0 -37.5 -6.09961 -49.2002 -18.2998s-17.5 -30.5 -17.5 -55c0 -22.7998 5.2002 -40.7002 15.6006 -53.7002c10.3994 -13.0996 26.7998 -19.5996 49.1992 -19.5996c10.7002 0 20.9004 1.5 30.4004 4.59961\nc9.5 3.10059 17.0996 6.80078 22.5996 11.2002zM286.8 141.7c3.7998 -5.40039 5.2998 -13.1006 4.60059 -23.1006h-51.7002c0.899414 9.40039 3.7002 17 8.2002 22.6006c4.5 5.59961 11.5 8.5 21 8.5c8.19922 0.0996094 14.0996 -2.60059 17.8994 -8zM366.7 139.2\nc4.09961 -3.90039 9.39941 -5.7998 16.0996 -5.7998c7 0 12.6006 1.89941 16.7002 5.7998c4.09961 3.89941 6.09961 9.09961 6.09961 15.5996s-2 11.6006 -6.09961 15.4004s-9.59961 5.7002 -16.7002 5.7002c-6.7002 0 -12 -1.90039 -16.0996 -5.7002\nc-4.10059 -3.7998 -6.10059 -8.90039 -6.10059 -15.4004s2 -11.7002 6.10059 -15.5996zM366.7 38.7002c4.09961 -3.90039 9.39941 -5.7998 16.0996 -5.7998c7 0 12.6006 1.89941 16.7002 5.7998c4.09961 3.89941 6.09961 9.09961 6.09961 15.5996\ns-2 11.6006 -6.09961 15.4004s-9.59961 5.7002 -16.7002 5.7002c-6.7002 0 -12 -1.90039 -16.0996 -5.7002c-4.10059 -3.7998 -6.10059 -8.90039 -6.10059 -15.4004c0 -6.59961 2 -11.7002 6.10059 -15.5996z\" />\n    <glyph glyph-name=\"resolving\" unicode=\"&#xf3e7;\" horiz-adv-x=\"496\" \nd=\"M281.2 169.8l-197.9 -57.2002l-28.5996 98.6006l188.2 54.0996c52.6992 15.2998 65 8.10059 71.0996 -12.7998l11.2002 -39.2998c5.59961 -19.9004 2 -30.1006 -44 -43.4004zM248.5 440c137 0 248.5 -111.4 247.5 -247.7c0 -136.899 -111.5 -248.3 -248.5 -248.3\nc-46 0 -89.5 12.7002 -126.3 34.7002l-23 80.2002l286.8 -37.3008l48.0996 13.3008l-9.69922 34.1992l-220.4 27.1006l92.5996 26.5996c30.2002 8.7002 42 15.7998 61.4004 33.2002c24.5 23 31.7002 45.5 23.5 73.5996l-10.7002 37.8008\nc-8.7002 30.1992 -25.0996 49.0996 -61.3994 55.1992c-25.1006 3.5 -44.5 2 -79.3008 -8.19922l-221.899 -63.9004c26 108.8 124.2 189.5 241.3 189.5zM38.2998 59.4004c-24 38.3994 -38.2998 83.2998 -38.2998 131.8z\" />\n    <glyph glyph-name=\"rocketchat\" unicode=\"&#xf3e8;\" horiz-adv-x=\"576\" \nd=\"M486.41 340.43c119.649 -76.54 119.26 -221 0 -297.14c-77.1201 -50.9199 -179.37 -62.3896 -264.12 -47.1602c-95.5205 -91.1895 -201.72 -49.1602 -222.29 -37c0 0 73.0801 62.1006 61.21 116.49c-45.3896 46.3701 -86.5195 144.57 0 232.77\nc11.8701 54.3906 -61.21 116.49 -61.21 116.49c20.7695 12.1201 127.26 54.2803 222.29 -37.3799c84.9404 15.3301 187.19 3.75977 264.12 -47.0703zM294.18 43.7803c126.67 0 229.409 66.2197 229.409 148.22s-102.74 148.43 -229.41 148.43\ns-229.41 -66.4297 -229.41 -148.43c0 -35.79 19.4707 -68.5195 52 -94.1299c9.11426 -29.127 3.78125 -62.0234 -15.999 -98.6904c-0.889648 -1.67969 -1.76953 -3.45996 -2.76953 -5.23926c15.0498 1.33594 38.2158 7.93555 51.71 14.7295\nc11.0684 6.26562 27.46 18.5361 36.5898 27.3896l19.7705 19.0908c23.6396 -6.27734 62.6758 -11.3721 87.1348 -11.3721c0.269531 0 0.706055 0.000976562 0.974609 0.00195312zM184.119 156.7c-0.133789 -0.00195312 -0.351562 -0.00390625 -0.485352 -0.00390625\nc-18.6182 0 -33.9912 15.1084 -34.3145 33.7236c-0.700195 45.3896 67.8301 46.3799 68.5195 1.08984v-0.509766c0.000976562 -0.0888672 0.00195312 -0.232422 0.00195312 -0.321289c0 -18.6152 -15.1074 -33.8467 -33.7217 -33.999v0.0205078zM257.889 190.42\nc-0.790039 45.3896 67.7402 46.4805 68.5303 1.19043v-0.610352c0.389648 -45.0801 -67.7402 -45.5703 -68.5303 -0.580078zM401.269 156.7c-0.133789 -0.00195312 -0.350586 -0.00390625 -0.485352 -0.00390625c-18.6182 0 -33.9951 15.1084 -34.3242 33.7236\nc-0.69043 45.3896 67.8398 46.3799 68.5303 1.08984v-0.509766c0.000976562 -0.119141 0.00292969 -0.311523 0.00292969 -0.430664c0 -18.6152 -15.1084 -33.7979 -33.7236 -33.8896v0.0205078z\" />\n    <glyph glyph-name=\"rockrms\" unicode=\"&#xf3e9;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM405.4 20.5l-101.5 118.9s73.5996 0.199219 74.1992 0.199219c29.6006 -1.09961 46.6006 33.3008 27.6006 56.1006l-157.7 185.1c-13.2002 17.2998 -40.0996 18.4004 -54.5 0\nl-147.1 -172.5h90l84.2998 98.9004l84.5996 -99.2998h-75.2998c-30.5 0 -44.5 -35.7002 -26.5996 -56.1006l112 -131.3h90z\" />\n    <glyph glyph-name=\"schlix\" unicode=\"&#xf3ea;\" \nd=\"M350.5 290.3l-54.2002 46.1006l73.4004 39l78.2998 -44.2002zM192 325.9l45.7002 28.1992l34.7002 -34.5996l-55.4004 -29zM126.9 319.3l31.8994 22.1006l17.2002 -28.4004l-36.7002 -22.5zM103.6 231.1l-8.7998 34.8008l29.6006 18.2998l13.0996 -35.2998z\nM82.4004 314.8l23.8994 18.1006l8.90039 -24l-26.7002 -18.3008zM59 241.5l-3.59961 28.4004l22.2998 15.5l6.09961 -28.7002zM28.4004 224.9l20.7998 12.7998l3.2998 -33.4004l-22.9004 -12zM1.40039 180l19.1992 10.2002l0.400391 -38.2002l-21 -8.7998zM60.5 120.7\nl-28.2998 -8.2998l-1.60059 46.7998l25.1006 10.7002zM99 184.8l-31.0996 -13l-5.2002 40.7998l27.3994 14.4004zM123.2 71l-41.6006 -5.90039l-8.09961 63.5l35.2002 10.8008zM151.7 210.9l21.2002 -57.1006l-46.2002 -13.5996l-13.7002 54.0996zM237.4 -19.5996\nl-70.9004 3.2998l-24.2998 95.7998l55.2002 8.59961zM152.5 260.1l42.2002 22.4004l28 -45.9004l-50.7998 -21.2998zM193.5 165.2l61.2998 18.7002l52.7998 -86.6006l-79.7998 -11.2998zM244.9 250.8l67.2998 28.7998l65.5 -65.3994l-88.6006 -26.2002z\" />\n    <glyph glyph-name=\"searchengin\" unicode=\"&#xf3eb;\" horiz-adv-x=\"460\" \nd=\"M220.6 317.7l-67.1992 -209.3v130.3l-54.7002 -24.2002l54.7002 190.3v-115.3zM137.4 414.4l-1.30078 -4.7002l-15.1992 -52.9004c-40.3008 -15.5 -68.9004 -54.5996 -68.9004 -100.3c0 -52.2998 34.2998 -95.9004 83.4004 -105.5v-53.5996\nc-77.9004 10.5 -135.4 78.1992 -135.4 159c0 80.5 59.7998 147.199 137.4 158zM448.8 -32.7998c-11.2002 -11.2002 -23.0996 -12.2998 -28.5996 -10.5c-5.40039 1.7998 -27.1006 19.8994 -60.4004 44.3994c-33.2998 24.6006 -33.5996 35.7002 -43 56.7002\nc-9.39941 20.9004 -30.3994 42.6006 -57.5 52.4004l-9.7002 14.7002c-24.6992 -16.9004 -53 -26.9004 -81.2998 -28.7002l2.10059 6.59961l15.8994 49.5c46.5 11.9004 80.9004 54 80.9004 104.2c0 54.5 -38.4004 102.1 -96 107.1v52.1006\nc83.2002 -5.10059 148.8 -74.5 148.8 -159.3c0 -33.6006 -11.2002 -64.7002 -29 -90.4004l14.5996 -9.59961c9.80078 -27.1006 31.5 -48 52.4004 -57.4004s32.2002 -9.7002 56.7998 -43c24.6006 -33.2002 42.7002 -54.9004 44.5 -60.2998\nc1.7998 -5.40039 0.700195 -17.2998 -10.5 -28.5zM438.9 -14.9004c0 4.40039 -3.60059 8 -8 8c-4.40039 0 -8 -3.59961 -8 -8c0 -4.39941 3.59961 -8 8 -8c4.39941 0 8 3.60059 8 8z\" />\n    <glyph glyph-name=\"servicestack\" unicode=\"&#xf3ec;\" horiz-adv-x=\"496\" \nd=\"M88 232c81.7002 -10.2002 273.7 -102.3 304 -232h-392c99.5 8.09961 184.5 137 88 232zM120 384c102.8 -15.5 335.3 -167.9 376 -384h-96c-26.2998 126.7 -150.7 216.7 -233.6 250.4c1.2998 49.6992 -14.1006 98 -46.4004 133.6z\" />\n    <glyph glyph-name=\"sistrix\" unicode=\"&#xf3ee;\" \nd=\"M448 -1l-30.5 -31l-146 148.1c-28.7002 -23.6992 -65.2002 -37.8994 -105 -37.8994c-91.7998 0 -166.5 75.7998 -166.5 168.899c0 93.1006 74.7002 168.9 166.6 168.801c91.8008 0 166.5 -75.8008 166.5 -168.9c0 -37 -11.8994 -71.2998 -31.8994 -99.2002zM166.5 117.2\nc70.7002 0 128.1 58.2998 128.1 129.899c0 71.6006 -57.5 129.9 -128.1 129.9s-128.1 -58.2998 -128.1 -129.9c0 -71.5996 57.5 -129.899 128.1 -129.899z\" />\n    <glyph glyph-name=\"slack-hash\" unicode=\"&#xf3ef;\" \nd=\"M446.2 177.6c6.2002 -19 -3.90039 -39.6992 -22.9004 -45.6992l-45.3994 -15.1006l15.6992 -47c6.10059 -19.0996 -3.89941 -39.7002 -23 -45.8994c-21.2998 -6.10059 -40.0996 6 -46 22.8994l-15.6992 47l-93.6006 -31.2998l15.7002 -47\nc6.09961 -19.0996 -3.90039 -39.7002 -23 -45.9004c-21.2998 -6.09961 -40.0996 6 -46 22.9004l-15.7002 47c-45.7002 -15.2002 -50.8994 -17.7998 -57.7002 -16.7998c-14.5 0.599609 -28.5996 10.0996 -33.5996 24.5996c-6.09961 19 4 39.7002 23 45.9004l45.4004 15.0996\nl-30.3008 90c-45.6992 -15.2002 -50.8994 -17.7998 -57.6992 -16.7998c-14.5 0.599609 -28.6006 10.0996 -33.6006 24.5996c-6.09961 19.1006 3.90039 39.7002 23 45.9004l45.2998 15l-15.6992 47c-6.10059 19.0996 3.89941 39.7002 23 45.9004\nc19.0996 6.19922 39.7998 -3.90039 46 -22.9004l15.6992 -47l93.4004 31.2002l-15.7002 47c-6.09961 19.0996 3.90039 39.7002 23 45.8994c19.1006 6.2002 39.7998 -3.89941 46 -22.8994l15.7002 -47l45.4004 15.0996c19.0996 6.2002 39.7998 -3.89941 46 -22.8994\nc6.09961 -19.1006 -3.90039 -39.7002 -23 -45.9004l-45.4004 -15.0996l30.2998 -90l45.4004 15.0996c19.0996 6.2002 39.7998 -3.90039 46 -22.9004zM192.1 130.4l93.5 31.2998l-30.2998 90.2002l-93.5 -31.3008z\" />\n    <glyph glyph-name=\"speakap\" unicode=\"&#xf3f3;\" \nd=\"M64 56.2197c-79.4102 88.1904 -72 224.36 16.6396 304.141c88.6406 79.7793 224.801 73 304.21 -15.2402c79.4102 -88.2402 72 -224.36 -16.6396 -304.14c-18.7402 -16.8701 64 -43.0908 42 -52.2607c-82.0596 -34.21 -253.91 -35 -346.229 67.5h0.0195312z\nM277.31 267.82l38.5 40.8594c-9.60938 8.89062 -32 26.8301 -76.1699 27.6006c-52.3301 0.910156 -95.8594 -28.2998 -96.7695 -80c-0.200195 -11.3301 0.290039 -36.7207 29.4199 -54.8301c34.46 -21.4199 86.5195 -21.5098 86 -52.2598\nc-0.370117 -21.2803 -26.4199 -25.8105 -38.5898 -25.6006c-3 0.0498047 -30.2305 0.459961 -47.6104 24.6201l-40 -42.6104c28.1602 -27 59 -32.6191 83.4902 -33.0498c10.2295 -0.179688 96.4199 -0.330078 97.8398 81\nc0.280273 15.8105 -2.07031 39.7197 -28.8604 56.5898c-34.3594 21.6406 -85 19.4502 -84.4297 49.75c0.410156 23.25 31 25.3701 37.5303 25.2607c0.429688 0 26.6201 -0.260742 39.6201 -17.3701z\" />\n    <glyph glyph-name=\"staylinked\" unicode=\"&#xf3f5;\" horiz-adv-x=\"440\" \nd=\"M382.7 155.5l44.2998 -41.2998c3.7002 -3.5 3.2998 -9 -0.700195 -12.2002l-198 -163.9c-9.89941 -7.59961 -17.2998 -0.799805 -17.2998 -0.799805l-208.7 196.101c-3.5 3.5 -3 9 1.2002 12.1992l45.7998 34.9004c4.2002 3.2002 10.4004 3 13.9004 -0.5l151.899 -147.5\nc3.7002 -3.5 10 -3.7002 14.2002 -0.400391l93.2002 74c4.09961 3.2002 4.5 8.7002 0.900391 12.2002l-84 81.2998c-3.60059 3.5 -9.90039 3.7002 -14 0.5l-0.100586 -0.0996094c-4.09961 -3.2002 -10.3994 -3 -14 0.5l-68.0996 64.2998\nc-3.5 3.5 -3.10059 9 1.09961 12.2002l57.2998 43.5996c4.10059 3.2002 10.3008 3 13.8008 -0.5l170 -167.3zM437.2 238.9c3.7002 -3.5 3.39941 -9 -0.700195 -12.2002l-45.7998 -35.7998c-4.10059 -3.2002 -10.4004 -3 -14.1006 0.5l-160.399 159\nc-3.60059 3.5 -9.7998 3.69922 -13.9004 0.5l-92.2002 -71.5c-4.19922 -3.30078 -4.69922 -8.7002 -1.09961 -12.2002l94.5996 -91.7998c3.7002 -3.5 10 -3.60059 14.2002 -0.400391l0.100586 0.0996094c4.19922 3.2002 10.5996 3 14.1992 -0.5l57.1006 -54.3994\nc3.7002 -3.5 3.2998 -9 -0.900391 -12.2002l-7.7002 -6l0.300781 -0.299805l-50.2002 -38.7998c-4.2002 -3.30078 -10.6006 -3.10059 -14.2998 0.399414l-171.7 165.101l-42.2998 41.6992c-3.60059 3.5 -3 9 1.19922 12.2002l206.801 162.101\nc8.2998 6.59961 14.7998 2.2998 16.2998 1.09961z\" />\n    <glyph glyph-name=\"steam-symbol\" unicode=\"&#xf3f6;\" \nd=\"M395.5 270.5c0 -33.7998 -27.5 -61 -61 -61c-33.7998 0 -61 27.2998 -61 61s27.2998 61 61 61c33.5 0 61 -27.2002 61 -61zM448 270.3c0 -63 -51 -113.8 -113.7 -113.8l-109.3 -79.7998c-4 -43 -40.5 -76.7998 -84.5 -76.7998c-40.5 0 -74.7002 28.7998 -83 67\nl-57.5 23.0996v107.3l97.2002 -39.2998c15.0996 9.2002 32.2002 13.2998 52 11.5l71 101.7c0.5 62.2998 51.5 112.8 114 112.8c62.7998 0 113.8 -51 113.8 -113.7zM203 85c0 34.7002 -27.7998 62.5 -62.5 62.5c-4.5 0 -9 -0.5 -13.5 -1.5l26 -10.5\nc25.5 -10.2002 38 -39 27.7002 -64.5c-10.2002 -25.5 -39.2002 -38 -64.7002 -27.5c-10.2002 4 -20.5 8.2998 -30.7002 12.2002c10.5 -19.7002 31.2002 -33.2002 55.2002 -33.2002c34.7002 0 62.5 27.7998 62.5 62.5zM410.5 270.3c0 42 -34.2998 76.2002 -76.2002 76.2002\nc-42.2998 0 -76.5 -34.2002 -76.5 -76.2002c0 -42.2002 34.2998 -76.2002 76.5 -76.2002c41.9004 -0.0996094 76.2002 33.9004 76.2002 76.2002z\" />\n    <glyph glyph-name=\"sticker-mule\" unicode=\"&#xf3f7;\" horiz-adv-x=\"576\" \nd=\"M561.7 248.4c-1.2998 -0.300781 0.299805 0 0 0zM555.5 325.8c20.2002 -50.0996 20.5996 -45.2002 20.5996 -52.8994c0 -7.5 -4.09961 -11 -7.19922 -16.5c-1.5 -3 -4.60059 -7.5 -7.2002 -8c-0.400391 0 -3 -0.5 -13.4004 -2.5c-7.2002 -1 -13.3994 4.5 -14.8994 9.5\nc-1.60059 4.69922 2.7998 10.0996 -11.8008 22.8994c-10.2998 10 -21.0996 11.2998 -31.8994 17c-9.7998 5.7002 -11.9004 -1 -18 -8c-18 -22.8994 -34 -46.8994 -52 -69.7998c-11.7998 -15 -24.2002 -30.4004 -33.5 -47.4004\nc-3.90039 -6.7998 -9.5 -28.0996 -10.2998 -29.8994c-6.2002 -17.7002 -5.5 -25.7998 -16.5 -68.2998c-3.10059 -10 -5.7002 -21.4004 -8.7002 -32.4004c-2.2002 -6.7998 -7.40039 -49.2998 -0.5 -59.4004c2.09961 -3.5 8.7002 -4.5 11.2998 -8\nc0.0996094 -0.0996094 9.59961 -18.1992 9.2998 -20c0 -6.09961 -9.39941 -5.59961 -11.2998 -6.5c-4.7998 -2.89941 -3.7998 -5.89941 -6.40039 -7.39941c-5.89941 -2.90039 -32.0996 -3.2002 -36.5 0.5c-4.09961 3 -2.19922 11.8994 -1.5 15\nc2.2002 15 -2.5 7.89941 -9.7998 11.5c-3.09961 1.5 -4.09961 5.5 -4.59961 10c-0.5 1.5 -1 2.5 -1.5 3.5c-1.7002 10.7002 6.7998 33.5996 8.2002 43.3994c4.89941 23.7002 -0.700195 37.2002 1.5 46.9004c3.69922 16.2002 4.09961 3.5 4.09961 29.9004\nc-1.40039 25.8994 3.2998 36.8994 0.5 38.8994c-14.7998 0 -64.2998 -10.7002 -112.2 -2c-46.0996 8.90039 -59.3994 29 -65.3994 30.9004c-10.3008 4.5 -23.2002 -0.5 -27.3008 -7c-0.0996094 -0.100586 -35 -70.6006 -39.5996 -87.7998\nc-6.2002 -20.5 -0.5 -47.4004 4.09961 -66.8008c0 -0.0996094 4.5 -14.5996 10.3008 -19.5c2.09961 -1.5 5.09961 -2.5 7.19922 -4.5c2.80078 -2.69922 9.40039 -15.1992 9.80078 -16c2.59961 -4.5 3.59961 -8 -1.5 -10.5c-3.60059 -2 -9.30078 -2.5 -14.4004 -2.5\nc-2.59961 -0.5 -1.5 -3.5 -3.09961 -5c-2.90039 -2.7998 -20.7002 -6.09961 -29.9004 -2.5c-2.59961 1 -5.7002 3 -6.2002 5c-1.5 4 2.10059 9 -1 12.5c-4.5 2.90039 -13.0996 2 -17 12c-2.2002 5.40039 -2.59961 7.60059 -2.59961 49.4004\nc0 9.7002 -5.90039 38.7002 -8.2002 46.9004c-1.5 5.5 -1.5 11.5 0 16c0.299805 0.899414 4.09961 4.59961 4.09961 13c-1 1.5 -4.59961 0.5 -5.09961 1.5c-10.4004 80.5996 -5.90039 79 -7.7002 98.2998c-1.5 16 -10.8994 43.8994 -6.7002 64.2998\nc0.5 2.40039 3.40039 21 24.2002 38.9004c31 26.6992 48.4004 38.2998 159 11.5c1.10059 -0.400391 66.2998 -21.1006 110.7 9c15.5 11.2998 28.7998 11.2998 35.5 16c0.0996094 0.0996094 61.7002 52.0996 87 65.2998c47.2002 29.3994 69.9004 16.7002 75.0996 18\nc4.7002 1 13.4004 25.7998 17 25.7998c5.5 0 1.60059 -20.2002 3.60059 -25.9004c0.5 -2 3.59961 -5 6.2002 -5c2.2998 0 1.69922 0.800781 10.2998 5c8.39941 5.40039 14.8994 17.6006 20.5996 17c11.7002 -1.59961 -19 -41.5996 -19 -46.8994\nc0 -2 0.200195 -0.799805 4.60059 -9.5c2.59961 -5.5 4.59961 -13.5 6.19922 -20c8.30078 -29.7002 5.7002 -14.6006 13.4004 -36.9004z\" />\n    <glyph glyph-name=\"studiovinari\" unicode=\"&#xf3f8;\" horiz-adv-x=\"512\" \nd=\"M480.3 260.3l4.2002 -28v-28l-25.0996 -44.0996l-39.8008 -78.4004l-56.0996 -67.5l-79.0996 -37.7998l-17.7002 -24.5l-7.7002 -12l-9.59961 -4s17.2998 63.5996 19.3994 63.5996c2.10059 0 20.2998 -0.699219 20.2998 -0.699219l66.7002 38.5996l-92.5 -26.0996\nl-55.8994 -36.8008l-22.8008 -28l-6.59961 -1.39941l20.7998 73.5996l6.90039 5.5l20.7002 -12.8994l88.2998 45.1992l56.7998 51.5l14.7998 68.4004l-125.399 -23.2998l15.1992 18.2002l-173.399 53.2998l81.8994 10.5l-166 122.899l114.9 -18.0996l-101.3 108\nl252.899 -126.6l-31.5 38l124.4 -74.4004l-143.3 99l18.7002 -38.4004l-49.6006 18.1006l-45.5 84.2998l194.601 -122l-42.9004 55.7998l108 -96.3994l12 8.89941l-21 16.4004l4.2002 37.7998l37.7998 10.4004l29.2002 -24.7002l11.5 -4.2002l-7 -6.2002l8.5 -12\nl-13.1006 -7.39941l-10.2998 -20.2002z\" />\n    <glyph glyph-name=\"supple\" unicode=\"&#xf3f9;\" horiz-adv-x=\"640\" \nd=\"M640 185.5c0 -64.0996 -109 -116.1 -243.5 -116.1c-24.7998 0 -48.5996 1.7998 -71.0996 5c7.69922 -0.400391 15.5 -0.600586 23.3994 -0.600586c134.5 0 243.5 56.9004 243.5 127.101c0 29.3994 -19.0996 56.3994 -51.2002 78\nc60 -21.1006 98.9004 -55.1006 98.9004 -93.4004zM47.7002 220.1c0.0996094 -29.3994 19.2998 -56.5 51.5996 -78c-60.2002 21 -99.2002 55 -99.2998 93.3008c-0.0996094 64.0996 108.8 116.3 243.3 116.699c24.7002 0 48.5 -1.69922 71 -4.89941\nc-7.7002 0.299805 -15.3994 0.5 -23.2998 0.5c-134.5 -0.299805 -243.4 -57.4004 -243.3 -127.601zM107.9 180.2l8.7998 10.8994s8.7998 -10.0996 20.7002 -10.0996c6.5 0 12.2998 3.5 12.2998 10.0996c0 14.5 -40.2002 13.3008 -40.2002 39.9004\nc0 13.9004 12 24.0996 28.5 24.0996c10 0 25.4004 -4.69922 25.4004 -16.7998v-7.89941h-14.2002v3.89941c0 4 -5.60059 6.60059 -11.2998 6.60059c-7.2002 0 -12.5 -3.7002 -12.5 -9.10059c0 -14.5996 40.1992 -11.7002 40.1992 -39.7002\nc0 -13.5996 -10.5 -25.0996 -28.3994 -25.0996c-18.7998 0 -29.2998 13.2002 -29.2998 13.2002zM228.7 253.8h15.7002v-55c0 -18.8994 -13.3008 -31.8994 -33.4004 -31.8994c-20.2998 0 -33.7002 13 -33.7002 31.8994v55h15.7998v-54.5\nc0 -11.2002 7.10059 -17.7002 17.8008 -17.7002c10.6992 0 17.7998 6.5 17.7998 17.8008v54.3994zM263.1 168.4v72h-7.7998v13.3994h39.1006c16 0 27.1992 -11.2002 27.1992 -27.7998s-11.1992 -28.0996 -27.1992 -28.0996h-15.5v-29.5h-15.8008zM278.9 211.4h12.5996\nc8.90039 0 14 5.7998 14 14.6992c0 8.7002 -5 14.4004 -13.7002 14.4004h-12.8994v-29.0996zM335.9 168.4v72h-7.80078v13.3994h39.1006c16 0 27.2002 -11.2002 27.2002 -27.7998s-11.2002 -28.0996 -27.2002 -28.0996h-15.5v-29.5h-15.7998zM351.6 211.4h12.6006\nc9 0 14 5.7998 14 14.6992c0 8.7002 -5 14.4004 -13.7002 14.4004h-12.9004v-29.0996zM408.7 176.6h0.0996094v61.2002c0 1.60059 -0.899414 2.60059 -2.59961 2.60059h-5.2002v13.3994h15.4004c5.7998 0 8.19922 -2.5 8.19922 -8.2002v-61.1992\nc0 -1.60059 0.900391 -2.60059 2.60059 -2.60059h18.5996c1.60059 0 2.60059 0.900391 2.60059 2.60059v5.19922h14.2998v-13c0 -5.7998 -2.40039 -8.19922 -8.2002 -8.19922h-37.5996c-5.80078 0 -8.2002 2.39941 -8.2002 8.19922zM472.1 176.6h-0.0996094v63.9004h-7.7998\nv13.4004h51.5996c5.7002 0 8.2002 -2.5 8.2002 -8.2002v-13h-14.2002v5.2002c0 1.59961 -0.899414 2.59961 -2.59961 2.59961h-19.2002v-22.4004h27.7002v-13.3994h-27.7002v-20.2998c0 -1.60059 0.900391 -2.60059 2.59961 -2.60059h19.7002\nc1.60059 0 2.60059 0.900391 2.60059 2.60059v5.19922h14.2998v-13c0 -5.7998 -2.5 -8.19922 -8.2002 -8.19922h-38.7002c-5.7998 0 -8.2002 2.39941 -8.2002 8.19922zM531 252.6h-2.7002v1.2002h7v-1.2002h-2.7002v-5.89941h-1.59961v5.89941zM536.7 253.8h2.39941\nl2.10059 -5.09961l2.09961 5.09961h2.2998v-7.09961h-1.5v5.7002l-2.2998 -5.7002h-1.2998l-2.2998 5.7002v-5.7002h-1.5v7.09961z\" />\n    <glyph glyph-name=\"telegram-plane\" unicode=\"&#xf3fe;\" \nd=\"M446.7 349.4l-67.6006 -318.801c-5.09961 -22.5 -18.3994 -28.0996 -37.2998 -17.5l-103 75.9004l-49.7002 -47.7998c-5.5 -5.5 -10.0996 -10.1006 -20.6992 -10.1006l7.39941 104.9l190.9 172.5c8.2998 7.40039 -1.7998 11.5 -12.9004 4.09961l-236 -148.6\nl-101.6 31.7998c-22.1006 6.90039 -22.5 22.1006 4.59961 32.7002l397.4 153.1c18.3994 6.90039 34.5 -4.09961 28.5 -32.1992z\" />\n    <glyph glyph-name=\"uber\" unicode=\"&#xf402;\" \nd=\"M414.1 416c18.7002 0 33.9004 -15.2002 33.8008 -33.9004v-380.199c0 -18.7002 -15.2002 -33.9004 -33.9004 -33.9004h-380.1c-18.7002 0 -33.9004 15.2002 -33.9004 34v380.1c0 18.7002 15.2002 33.9004 33.9004 33.9004h380.199zM237.6 56.9004\nc74.6006 7.5 129 74.0996 121.5 148.6c-7 69.4004 -65.3994 122.2 -135.1 122.2s-128.1 -52.7998 -135.1 -122.2h94.3994v20.4004c0 3.7998 3.10059 6.7998 6.7998 6.7998h67.9004c3.7998 0 6.7998 -3.10059 6.7998 -6.7998v-67.9004\nc0 -3.7998 -3.09961 -6.7998 -6.7998 -6.7998h-67.9004c-3.7998 0 -6.7998 3.09961 -6.7998 6.7998v20.4004h-94.3994c7.5 -74.6006 74.0996 -129 148.699 -121.5z\" />\n    <glyph glyph-name=\"uikit\" unicode=\"&#xf403;\" \nd=\"M443.9 320v-256l-225.9 -128l-218 128v214.3l87.5996 -45.0996v-117l133.5 -75.5l135.801 75.5v151l-101.101 57.5996l87.6006 53.1006zM308.6 398.9l-87.3994 -53l-86 47.2998l88.5996 54.7998z\" />\n    <glyph glyph-name=\"uniregistry\" unicode=\"&#xf404;\" horiz-adv-x=\"384\" \nd=\"M192 -32c-39.5 0 -76.2002 11.7998 -106.7 32.2002h213.5c-30.5996 -20.4004 -67.2998 -32.2002 -106.8 -32.2002zM102.9 161.1c0 -2.5 0.0996094 -5 0.299805 -7.39941h-103.101c-0.0996094 2.39941 -0.0996094 4.89941 -0.0996094 7.39941v12.4004h102.9v-12.4004z\nM123.4 104.1c8.89941 -10.5996 20.0996 -19.0996 33 -24.7998h-138.301c-3.7998 8 -7 16.2998 -9.59961 24.7998h114.9zM105.7 138.8c2 -7.89941 5.2002 -15.3994 9.2002 -22.2998h-109.7c-1.7002 7.2998 -3 14.7002 -3.90039 22.2998h104.4zM102.9 208.1v-17.2998h-102.9\nv17.2998h102.9zM102.9 381.3v-4.89941h-102.9v4.89941h102.9zM102.9 416v-2.5h-102.9v2.5h102.9zM102.9 346.7v-7.40039h-102.9v7.40039h102.9zM102.9 242.7v-14.7998h-102.9v14.7998h102.9zM102.9 312v-9.90039h-102.9v9.90039h102.9zM102.9 277.4v-12.4004h-102.9v12.4004\nh102.9zM269.1 116.5c4 6.90039 7.10059 14.4004 9.2002 22.2998h104.4c-0.799805 -7.59961 -2.10059 -15 -3.90039 -22.2998h-109.7zM281.1 302.2v9.7998h102.9v-9.7998h-102.9zM281.1 265v12.4004h102.9v-12.4004h-102.9zM281.1 339.3v7.40039h102.9v-7.40039h-102.9z\nM281.1 416h102.9v-2.5h-102.9v2.5zM78.0996 5.09961c-11.7998 8.7002 -23.5996 18.7002 -33.1992 29.7002h293.1c-9.5 -11.0996 -20.4004 -21 -32.2002 -29.7002h-227.7zM281.1 376.4v4.89941h102.9v-4.89941h-102.9zM281.1 227.9v14.7998h102.9v-14.7998h-102.9z\nM38.7998 42.2998c-6.59961 8.5 -10.5996 17.6006 -15.7998 27.2002h338.9c-5.2002 -9.59961 -11.1006 -18.7002 -17.8008 -27.2002h-305.3zM227.6 79.4004c12.8008 5.59961 24.1006 14.0996 32.9004 24.7998h115c-2.7002 -8.60059 -4.7998 -16.7998 -8.5 -24.7998h-139.4z\nM281.1 161.1v12.4004h102.9v-12.4004c0 -2.5 -0.0996094 -4.89941 -0.200195 -7.39941h-103.1c0.299805 2.39941 0.399414 4.89941 0.399414 7.39941zM281.1 190.8v17.2998h102.9v-17.2998h-102.9z\" />\n    <glyph glyph-name=\"untappd\" unicode=\"&#xf405;\" horiz-adv-x=\"640\" \nd=\"M401.3 398.1c-79.7998 -160.1 -84.5996 -152.5 -87.8994 -173.199l-5.2002 -32.8008c-1.90039 -12 -6.60059 -23.5 -13.7002 -33.3994l-148.9 -207.8c-7.59961 -10.6006 -20.3994 -16.2002 -33.3994 -14.6006c-40.2998 5 -77.7998 32.2002 -95.2998 68.5\nc-5.7002 11.7998 -4.5 25.7998 3.09961 36.4004l148.9 207.899c7.09961 9.90039 16.3994 18 27.1992 23.7002l29.3008 15.5c18.5 9.7998 9.69922 11.9004 135.6 138.9c1 4.7998 1 7.2998 3.59961 8c3 0.700195 6.60059 1 6.30078 4.59961l-0.400391 4.60059\nc-0.200195 1.89941 1.2998 3.59961 3.2002 3.59961c4.5 0.0996094 13.2002 -1.2002 25.5996 -10c12.2998 -8.90039 16.4004 -16.7998 17.7002 -21.0996c0.599609 -1.80078 -0.599609 -3.7002 -2.40039 -4.2002l-4.5 -1.10059\nc-3.39941 -0.899414 -2.5 -4.39941 -2.2998 -7.39941c0.100586 -2.7998 -2.2998 -3.60059 -6.5 -6.10059zM230.1 411.6c-3.19922 0.800781 -8.19922 1.2002 -6.7998 5.40039c1.2998 4.2998 5.40039 12.2002 17.7002 21.0996c12.4004 8.90039 21.0996 10.1006 25.5996 10\nc4.2002 -0.0996094 3.10059 -4.89941 2.80078 -8.19922c-0.300781 -3.60059 3.2998 -3.80078 6.2998 -4.60059c2.59961 -0.700195 2.59961 -3.2998 3.59961 -8c9.10059 -9.2002 17.6006 -17.8994 25.6006 -26.0996c1.2998 -1.40039 1.19922 -3.5 -0.100586 -4.90039\nc-15.8994 -16.3994 -29.2998 -30.5996 -40.5 -42.5996c-1 -1 -2.59961 -0.799805 -3.2998 0.5c-6.90039 13.5 -14.2998 28.0996 -22.2002 44c-4.2998 2.5 -6.59961 3.2998 -6.39941 6c0.199219 3 1.09961 6.5 -2.30078 7.39941zM620 41.2998\nc7.7002 -10.7002 8.7998 -24.7002 3.40039 -36.5996c-17.7002 -36.6006 -55.4004 -63.7002 -95.7002 -68.6006c-12.9004 -1.5 -25.5 4.10059 -33.1006 14.7002l-148.899 207.9c-7.10059 9.89941 -11.7998 21.3994 -13.7002 33.3994\nc-1.59961 9.80078 -2 19.1006 -0.299805 29.8008c1.89941 12 2.7002 6 49 94.7998c0.700195 1.39941 2.59961 1.59961 3.59961 0.5c16.2998 -18 19.2998 -23 30.5 -28.9004c29.7998 -15.7002 43.2002 -20.5996 56.4004 -39.0996z\" />\n    <glyph glyph-name=\"ussunnah\" unicode=\"&#xf407;\" horiz-adv-x=\"512\" \nd=\"M156.8 162.9l5.7002 -14.4004h-8.2002c-1.2998 3.2002 -3.09961 7.7002 -3.7998 9.5c-2.5 6.2998 -1.09961 8.40039 0 10c1.90039 2.7002 3.2002 4.40039 3.59961 5.2002c0 -2.2002 0.800781 -5.7002 2.7002 -10.2998zM454.1 144.1\nc-2.09961 -13.7998 -5.69922 -27.0996 -10.5 -39.6992l43 -23.4004l-44.7998 18.7998c-5.2998 -13.2002 -12 -25.5996 -19.8994 -37.2002l34.1992 -30.1992l-36.7998 26.3994c-8.39941 -11.7998 -18 -22.5996 -28.7002 -32.2998l24.9004 -34.7002l-28.0996 31.7998\nc-11 -9.59961 -23.1006 -18 -36.1006 -25.0996l15.7002 -37.2002l-19.2998 35.2998c-13.1006 -6.7998 -27 -12.0996 -41.6006 -15.8994l6.7002 -38.4004l-10.5 37.4004c-14.2998 -3.40039 -29.2002 -5.2998 -44.5 -5.40039l-1.7998 -38.2998l-1.90039 38.4004\nc-15.2998 0.0996094 -30.1992 2 -44.5 5.2998l-10.5996 -37.2998l6.7002 38.1992c-14.6006 3.7002 -28.6006 9.10059 -41.7002 15.8008l-19.2002 -35.1006l15.6006 37c-13 7 -25.2002 15.4004 -36.2002 25.1006l-27.9004 -31.6006l24.7002 34.4004\nc-10.7002 9.7002 -20.4004 20.5 -28.7998 32.2998l-36.5 -26.2002l33.8994 29.9004c-7.89941 11.5996 -14.5996 24.0996 -20 37.2998l-44.3994 -18.7002l42.5996 23.2002c-4.7998 12.7002 -8.39941 26.0996 -10.5 39.9004l-51 -9l50.2998 14.1992\nc-1.09961 8.5 -1.69922 17.1006 -1.69922 25.9004c0 4.7002 0.199219 9.40039 0.5 14.0996l-55.4004 2.90039l56 2.7998c1.2998 13.1006 3.7998 25.7998 7.5 38.1006l-57.0996 16.0996l58.8994 -10.4004c4 12 9.10059 23.5 15.2002 34.4004l-55.0996 30l58.2998 -24.5996\nc6.2998 10.5996 13.5 20.3994 21.5996 29.5996l-49.5 43.5996l53.9004 -38.6992c8.09961 8.59961 17 16.5 26.5996 23.5996l-40 55.5996l45.6006 -51.5996c9.5 6.59961 19.6992 12.2998 30.2998 17.2002l-27.2998 64.8994l33.7998 -62.0996\nc10.5 4.40039 21.3994 7.90039 32.7002 10.4004l-12.4004 70.6992l19.5 -69.1992c11 2.09961 22.2998 3.19922 33.7998 3.39941l3.7002 72.2002l3.59961 -72.2002c11.5 -0.200195 22.8008 -1.39941 33.8008 -3.5l19.5996 69.2998l-12.4004 -70.6992\nc11.3008 -2.60059 22.2002 -6.10059 32.6006 -10.5l33.8994 62.1992l-27.3994 -65.0996c10.5996 -4.90039 20.7002 -10.7002 30.2002 -17.2002l45.7998 51.7998l-40.1006 -55.8994c9.5 -7.10059 18.4004 -15 26.5 -23.6006l54.2002 38.9004l-49.7002 -43.9004\nc8 -9.09961 15.2002 -18.8994 21.5 -29.3994l58.7002 24.7002l-55.5 -30.2002c6.10059 -10.9004 11.1006 -22.2998 15.1006 -34.2998l59.2998 10.3994l-57.5 -16.2002c3.7002 -12.1992 6.2002 -24.8994 7.5 -37.8994l56.2998 -2.7002l-56 -2.7998\nc0.299805 -4.60059 0.5 -9.2998 0.5 -14.1006c0 -8.69922 -0.599609 -17.2998 -1.59961 -25.7998l50.6992 -14.2998zM432.3 175.1c0 97.5 -79 176.5 -176.5 176.5s-176.5 -79 -176.5 -176.5s79 -176.5 176.5 -176.5s176.5 79 176.5 176.5zM408.3 175.1\nc0 -84.2998 -68.2998 -152.6 -152.6 -152.6s-152.601 68.2998 -152.601 152.6c0 84.3008 68.3008 152.601 152.601 152.601s152.6 -68.2998 152.6 -152.601zM195 207c0 -2.09961 1.2998 -3.7998 3.59961 -5.09961c3.30078 -1.90039 6.2002 -4.60059 8.2002 -8.2002\nc2.7998 5.7002 4.2998 9.5 4.2998 11.2002c0 2.19922 -1.09961 4.39941 -3.19922 7c-2.10059 2.5 -3.2002 5.19922 -3.30078 7.69922c-6.5 -6.7998 -9.59961 -10.8994 -9.59961 -12.5996zM154.3 226c0 -2.09961 1.2998 -3.7998 3.60059 -5.09961\nc3.5 -1.90039 6.19922 -4.60059 8.19922 -8.2002c2.80078 5.7002 4.30078 9.5 4.30078 11.2002c0 2.19922 -1.10059 4.39941 -3.2002 7c-2.10059 2.5 -3.2002 5.19922 -3.2998 7.69922c-6.5 -6.7998 -9.60059 -10.8994 -9.60059 -12.5996zM135.3 226\nc0 -2.09961 1.2998 -3.7998 3.60059 -5.09961c3.2998 -1.90039 6.19922 -4.60059 8.19922 -8.2002c2.80078 5.7002 4.30078 9.5 4.30078 11.2002c0 2.19922 -1.10059 4.39941 -3.2002 7c-2.10059 2.5 -3.2002 5.19922 -3.2998 7.69922\nc-6.40039 -6.7998 -9.60059 -10.8994 -9.60059 -12.5996zM340.2 138.1c-8.40039 3 -8.7002 6.80078 -8.7002 15.6006v112.3c-8.2002 -12.5 -14.2002 -18.5996 -18 -18.5996c6.2998 -14.4004 9.5 -23.9004 9.5 -28.3008v-64.2998c0 -2.2002 -2.2002 -6.5 -4.7002 -6.5h-18\nc-2.7998 7.5 -10.2002 26.9004 -15.2998 40.2998c-2 -2.5 -7.2002 -9.19922 -10.7002 -13.6992c2.40039 -1.60059 4.10059 -3.60059 5.2002 -6.30078c2.59961 -6.69922 6.40039 -16.5 7.90039 -20.1992h-9.2002c-3.90039 10.3994 -9.60059 25.3994 -11.7998 31.0996\nc-2 -2.5 -7.2002 -9.2002 -10.7002 -13.7002c2.39941 -1.59961 4.09961 -3.59961 5.2002 -6.2998c0.799805 -2 2.7998 -7.2998 4.2998 -10.9004h-9.2002c-1.5 4.10059 -5.59961 14.6006 -8.40039 22c-2 -2.5 -7.19922 -9.19922 -10.6992 -13.6992\nc2.5 -1.60059 4.2998 -3.60059 5.19922 -6.30078c0.200195 -0.599609 0.5 -1.39941 0.600586 -1.69922h-17.7002c-4.59961 13.8994 -11.4004 27.6992 -11.4004 34.0996c0 2.2002 0.300781 5.09961 1.10059 8.2002c-8.7998 -10.7998 -14 -15.9004 -14 -25\nc0 -7.5 10.3994 -28.2998 10.3994 -33.2998c0 -1.7002 -0.5 -3.30078 -1.39941 -4.90039c-9.60059 12.7002 -15.5 20.7002 -18.7998 20.7002h-12l-11.2002 28c-3.7998 9.59961 -5.7002 16 -5.7002 18.7998c0 3.7998 0.5 7.7002 1.7002 12.2002\nc-1 -1.2998 -3.7002 -4.7002 -5.5 -7.10059c-0.799805 2.10059 -3.10059 7.7002 -4.60059 11.5c-2.09961 -2.5 -7.5 -9.09961 -11.1992 -13.5996c0.899414 -2.2998 3.2998 -8.09961 4.89941 -12.2002c-2.5 -3.2998 -9.09961 -11.7998 -13.5996 -17.7002\nc-4 -5.2998 -5.7998 -13.2998 -2.7002 -21.7998c2.5 -6.7002 2 -7.89941 -1.7002 -14.0996h61.7002c5.5 0 14.2998 -14 15.5 -22c13.2002 16 15.4004 19.5996 16.7998 21.5996h107c3.90039 0 7.2002 1.90039 9.90039 5.7998zM360.3 164.7v101.6\nc-9 -12.5 -15.8994 -18.5996 -20.7002 -18.5996c7.10059 -14.4004 10.7002 -23.9004 10.7002 -28.2998v-66.3008c0 -17.5 8.60059 -20.3994 24 -20.3994c8.10059 0 12.5 0.799805 13.7002 2.7002c-4.2998 1.59961 -7.59961 2.5 -9.90039 3.2998\nc-8.09961 3.2002 -17.7998 7.39941 -17.7998 26z\" />\n    <glyph glyph-name=\"vaadin\" unicode=\"&#xf408;\" \nd=\"M224.5 307.3c1.5 17.6006 4.90039 52.7002 49.7998 52.7002h98.6006c20.6992 0 32.0996 7.7998 32.0996 21.5996v12.3008c0 12.1992 9.2998 22.0996 21.5 22.0996s21.5 -9.90039 21.5 -22.0996v-36.5c0 -42.9004 -21.5 -62 -66.7998 -62h-100.5\nc-30.1006 0 -33 -14.7002 -33 -27.1006c0 -1.2998 -0.100586 -2.5 -0.200195 -3.7002c-0.700195 -12.2998 -10.9004 -22.1992 -23.4004 -22.1992s-22.6992 9.7998 -23.3994 22.1992c-0.100586 1.2002 -0.200195 2.40039 -0.200195 3.7002c0 12.2998 -3 27.1006 -33 27.1006\nh-100.7c-45.2998 0 -66.7998 19.0996 -66.7998 62v36.5c0 12.1992 9.40039 22.0996 21.5996 22.0996c12.2002 0 21.5 -9.90039 21.5 -22.0996v-12.3008c0 -13.7998 11.4004 -21.5996 32.1006 -21.5996h98.5996c44.7998 0 48.2998 -35.0996 49.7998 -52.7002h0.900391z\nM224 -8c-11.5 0 -21.4004 7 -25.7002 16.2998c-1.09961 1.7998 -97.0996 169.5 -98.2002 171.4c-11.8994 19.7002 3.2002 44.2998 27.2002 44.2998c13.9004 0 23.4004 -6.40039 29.7998 -20.2998l66.9004 -117.7l66.9004 117.7c6.5 13.8994 15.8994 20.2998 29.7998 20.2998\nc24 0 39.0996 -24.7002 27.2002 -44.2998c-1.10059 -1.7998 -97.1006 -169.601 -98.2002 -171.4c-4.2998 -9.2998 -14.2002 -16.2998 -25.7002 -16.2998z\" />\n    <glyph glyph-name=\"viber\" unicode=\"&#xf409;\" horiz-adv-x=\"512\" \nd=\"M444 398.1c42.2002 -36.6992 65.5996 -117.899 49.7998 -246.5c-15.2002 -124.6 -109.1 -136.6 -125.7 -142c-7.19922 -2.2998 -70.2998 -18.0996 -152.5 -11.1992c-9.09961 -10.5 -21.0996 -24.3008 -29.7998 -33.7002\nc-15.8994 -17.1006 -25.7002 -33 -42.2998 -27.7998c-13.7998 4.19922 -13 25.0996 -13 25.0996l0.0996094 51.5996h-0.0996094c-120.1 33.8008 -118.4 158.4 -117 224.9s14.2998 120.2 50.9004 156.8c65.7998 60.4004 200.899 52.2998 200.899 52.2998\nc114.601 -0.5 166 -37.7998 178.7 -49.5zM457.9 161c13.2998 107.3 -4.90039 180.5 -40.6006 211.1c-10.7998 9.80078 -57.2002 39 -154.1 39.4004c0 0 -114.7 7.5 -170.4 -43c-31 -30.5996 -41.5 -76.0996 -42.5996 -131.6\nc-1.10059 -55.5 -7.10059 -161.601 94.7002 -189.801c-0.100586 0 -0.100586 0 0 0c0 0 -0.400391 -78.7998 -0.400391 -85.6992c-0.0996094 -10.5 5.7002 -11 11 -5.7002c16.2002 16.2998 68.2002 79 68.2002 79c69.7002 -4.5 125.2 9.2998 131.2 11.2002\nc14 4.5 90.0996 11.0996 103 115.1zM318.9 241.8c0.399414 -8.59961 -12.5 -9.2002 -12.9004 -0.599609c-1.09961 22 -11.4004 32.7002 -32.5996 33.8994c-8.60059 0.5 -7.80078 13.4004 0.699219 12.9004c27.9004 -1.5 43.4004 -17.5 44.8008 -46.2002zM339.2 230.5\nc1 42.4004 -25.5 75.5996 -75.7998 79.2998c-8.5 0.600586 -7.60059 13.5 0.899414 12.9004c58 -4.2002 88.9004 -44.1006 87.7998 -92.5c-0.0996094 -8.60059 -13.0996 -8.2002 -12.8994 0.299805zM386.2 217.1c0.0996094 -8.59961 -12.9004 -8.69922 -12.9004 -0.0996094\nc-0.599609 81.5 -54.8994 125.9 -120.8 126.4c-8.5 0.0996094 -8.5 12.8994 0 12.8994c73.7002 -0.5 133 -51.3994 133.7 -139.2zM374.9 119v-0.200195c-10.8008 -19 -31 -40 -51.8008 -33.2998l-0.199219 0.299805c-21.1006 5.90039 -70.8008 31.5 -102.2 56.5\nc-16.2002 12.7998 -31 27.9004 -42.4004 42.4004c-10.2998 12.8994 -20.7002 28.2002 -30.7998 46.5996c-21.2998 38.5 -26 55.7002 -26 55.7002c-6.7002 20.7998 14.2002 41 33.2998 51.7998h0.200195c9.2002 4.7998 18 3.2002 23.9004 -3.89941\nc0 0 12.3994 -14.8008 17.6992 -22.1006c5 -6.7998 11.7002 -17.7002 15.2002 -23.7998c6.10059 -10.9004 2.2998 -22 -3.7002 -26.5996l-12 -9.60059c-6.09961 -4.89941 -5.2998 -14 -5.2998 -14s17.7998 -67.2998 84.2998 -84.2998c0 0 9.10059 -0.799805 14 5.2998\nl9.60059 12c4.59961 6 15.7002 9.7998 26.5996 3.7002c14.7002 -8.2998 33.4004 -21.2002 45.7998 -32.9004c7 -5.69922 8.60059 -14.3994 3.80078 -23.5996z\" />\n    <glyph glyph-name=\"vimeo\" unicode=\"&#xf40a;\" \nd=\"M403.2 416c24.7002 0 44.7998 -20.0996 44.7998 -44.7998v-358.4c0 -24.7002 -20.0996 -44.7998 -44.7998 -44.7998h-358.4c-24.7002 0 -44.7998 20.0996 -44.7998 44.7998v358.4c0 24.7002 20.0996 44.7998 44.7998 44.7998h358.4zM377 267.2\nc1.90039 42.2002 -13.7998 63.7998 -47.0996 64.7002c-44.9004 1.39941 -75.3008 -23.9004 -91.2002 -76c19.8994 8.5 49.2998 10.7998 45.7998 -22.4004c-1 -11.2002 -8.2998 -27.5 -21.7998 -48.9004c-37.7002 -59.3994 -46.9004 -39.5996 -67.6006 91.6006\nc-5.7998 36.8994 -21.2998 54.0996 -46.5 51.7002c-22.2998 -2 -57.8994 -38.4004 -95.1992 -71.2002l15.1992 -19.6006c14.5 10.1006 23 15.2002 25.4004 15.2002c21 0 31.9004 -54.7002 57.4004 -148c13.0996 -34.8994 29 -52.2998 47.8994 -52.2998\nc30.4004 0 67.7002 28.5996 111.7 85.7998c42.5996 54.7002 64.5996 97.9004 66 129.4z\" />\n    <glyph glyph-name=\"vnv\" unicode=\"&#xf40b;\" horiz-adv-x=\"640\" \nd=\"M104.9 96c-34.1006 0 -46.4004 30.4004 -46.4004 30.4004l-55.9004 111.5s-10.3994 18.0996 10.4004 18.0996h32.7998c10.4004 0 13.2002 -8.7002 18.7998 -18.0996l36.7002 -74.5s5.2002 -13.1006 21.1006 -13.1006c15.8994 0 21.0996 13.1006 21.0996 13.1006\nl36.7002 74.5c5.59961 9.5 8.39941 18.0996 18.7998 18.0996h32.7998c20.7998 0 10.4004 -18.0996 10.4004 -18.0996l-55.7998 -111.5s-12.2002 -30.4004 -46.4004 -30.4004h-35.0996zM499.9 96c-34.1006 0 -46.4004 30.4004 -46.4004 30.4004l-55.9004 111.5\ns-10.3994 18.0996 10.4004 18.0996h32.7998c10.4004 0 13.2002 -8.7002 18.7998 -18.0996l36.7002 -74.5s5.2002 -13.1006 21.1006 -13.1006c15.8994 0 21.0996 13.1006 21.0996 13.1006l36.7998 74.5c5.60059 9.5 8.40039 18.0996 18.7998 18.0996h32.9004\nc20.7998 0 10.4004 -18.0996 10.4004 -18.0996l-55.9004 -111.5s-12.2002 -30.4004 -46.4004 -30.4004h-35.1992zM337.6 256c34.1006 0 46.4004 -30.4004 46.4004 -30.4004l55.9004 -111.5s10.3994 -18.0996 -10.4004 -18.0996h-32.7998\nc-10.4004 0 -13.2002 8.7002 -18.7998 18.0996l-36.7002 74.5s-5.2002 13.1006 -21.1006 13.1006c-15.8994 0 -21.0996 -13.1006 -21.0996 -13.1006l-36.7002 -74.5c-5.59961 -9.39941 -8.39941 -18.0996 -18.7998 -18.0996h-32.9004\nc-20.7998 0 -10.3994 18.0996 -10.3994 18.0996l55.8994 111.5s12.2002 30.4004 46.4004 30.4004h35.0996z\" />\n    <glyph glyph-name=\"whatsapp-square\" unicode=\"&#xf40c;\" \nd=\"M224 325.2c35.2002 0 68.2002 -13.7002 93.2002 -38.7002c24.8994 -24.9004 40.0996 -58 40.0996 -93.2002c0 -72.7002 -60.7002 -131.8 -133.3 -131.8h-0.0996094c-23.7002 0 -46.9004 6.40039 -67.1006 18.4004l-4.7998 2.89941l-49.9004 -13.0996l13.3008 48.5996\nl-3.10059 5c-13.2002 20.9004 -20.2002 45.2002 -20.2002 70.1006c0.100586 72.6992 59.2002 131.8 131.9 131.8zM301.5 136.8c3.2998 9.2002 3.2998 17.2002 2.40039 19.1006c-1 1.59961 -3.60059 2.59961 -7.60059 4.59961s-23.5 11.5996 -27.0996 12.9004\nc-3.60059 1.2998 -6.2998 2 -8.90039 -2c-2.59961 -3.90039 -10.2002 -12.9004 -12.5 -15.5c-2.2998 -2.7002 -4.59961 -3 -8.59961 -1c-23.2998 11.6992 -38.6006 20.7998 -53.9004 47.0996c-4.09961 7 4 6.40039 11.6006 21.5996\nc1.39941 2.60059 0.699219 4.90039 -0.300781 6.90039s-8.89941 21.5 -12.1992 29.4004c-3.2002 7.69922 -6.5 6.69922 -8.90039 6.7998c-2.2998 0.0996094 -5 0.0996094 -7.59961 0.0996094c-2.7002 0 -7 -1 -10.6006 -5c-3.7002 -4 -13.8994 -13.5996 -13.8994 -33.0996\ns14.1992 -38.4004 16.1992 -41c2 -2.60059 28 -42.6006 67.7002 -59.7998c25.1006 -10.8008 34.9004 -11.8008 47.5 -9.90039c7.60059 1.09961 23.4004 9.5 26.7002 18.7998zM400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48\nv352c0 26.5 21.5 48 48 48h352zM223.9 34.7998c87.3994 0 160.1 71.1006 160.1 158.5c0 42.4004 -18 82.2002 -47.9004 112.2c-30 30 -69.7998 46.5 -112.199 46.5c-87.4004 0 -158.5 -71.0996 -158.601 -158.5c0 -28 7.2998 -55.2998 21.2002 -79.2998l-22.5 -82.2002\nl84.0996 22.0996c23.1006 -12.5996 49.2002 -19.2998 75.8008 -19.2998z\" />\n    <glyph glyph-name=\"whmcs\" unicode=\"&#xf40d;\" \nd=\"M448 287l-29.0996 -7l-2.2002 -12.0996l20.8994 -18.8008l-10.2998 -20.0996l-28.7998 8.7998l-7.7998 -8.09961l8.7998 -28l-20.4004 -12.1006l-20.6992 21.6006l-11.6006 -3.5l-6.7002 -28.7998l-22.5996 0.299805l-6.7002 28.5l-11.5996 2.89941l-19.4004 -20.3994\nl-19.8994 11.5996l8.09961 26.9004l-7.2002 8.59961l-29.5996 -7.5l-10.4004 18.5l20.1006 19.9004l-2.40039 12.0996l-28.7998 7.5l0.299805 21.7002l28.5 7.7998l2.90039 10.4004l-20.7002 21l11 19.0996l28.5 -7.5l8.09961 8.40039l-8.09961 27.7002l19.3994 11\nl19.7002 -21l12.1006 3.19922l6.19922 26.4004h22.6006l7 -26.4004l10.7002 -3.19922l21.2998 21l19.0996 -11.6006l-7.5 -28.2002l7.2002 -7.5l29 7.5l10.4004 -19.3994l-20.1006 -20.7002l2.2002 -10.4004l28.5 -8.7998v-21.2998zM328.8 241.8\nc31.4004 0 56.7998 25.2998 56.7998 56.7998c0 31.4004 -25.3994 56.8008 -56.7998 56.8008c-31.3994 0 -56.7998 -25.4004 -56.7998 -56.8008c0 -31.3994 25.5 -56.7998 56.7998 -56.7998zM401.1 225.4l46.9004 -14.5v-39.9004l-55.0996 -13.4004l-4.10059 -22.6992\nl38.9004 -35.3008l-19.2002 -37.8994l-54 16.7002l-14.5996 -15.2002l16.6992 -52.5l-38.2998 -22.7002l-38.8994 40.5l-21.7002 -6.59961l-12.6006 -54l-42.3994 0.5l-12.6006 53.5996l-21.6992 5.59961l-36.4004 -38.3994l-37.4004 21.7002l15.2002 50.5l-13.7002 16.0996\nl-55.5 -14.0996l-19.6992 34.7998l37.8994 37.3994l-4.7998 22.8008l-54 14.0996l0.5 40.9004l53.5 14.6992l5.7002 19.7002l-38.9004 39.4004l20.7002 35.7998l53.5996 -14.0996l15.2002 15.6992l-15.2002 52l36.4004 20.7002l36.7998 -39.3994l22.7002 6.09961l11.5996 52\nh42.4004l11.5996 -45.9004l-22.5996 5.90039l-6.2998 1.7002l-3.2998 -5.7002l-11 -19.0996l-3.30078 -5.60059l4.60059 -4.59961l17.2002 -17.4004l-0.300781 -1l-23.7998 -6.5l-6.2002 -1.7002l-0.0996094 -6.39941l-0.200195 -12.9004\nc-47.5 -10.3994 -83.2998 -52.7998 -83.2998 -103.5c0 -58.2998 47.2998 -105.7 105.7 -105.7c50.5 0 92.7002 35.4004 103.2 82.8008l13.1992 -0.200195l6.90039 -0.100586l1.59961 6.7002l5.60059 24l1.89941 0.600586l17.1006 -17.8008l4.7002 -4.89941l5.7998 3.39941\nl20.3994 12.1006l5.80078 3.5l-2 6.5z\" />\n    <glyph glyph-name=\"wordpress-simple\" unicode=\"&#xf411;\" horiz-adv-x=\"512\" \nd=\"M256 440c136.7 0 248 -111.2 248 -248c0 -136.7 -111.3 -248 -248 -248s-248 111.3 -248 248c0 136.8 111.3 248 248 248zM33 192c0 -88.2002 51.2998 -164.5 125.7 -200.7l-106.4 291.4c-12.3994 -27.7002 -19.2998 -58.4004 -19.2998 -90.7002zM256 -31\nc26 0 50.9004 4.5 74 12.5996c-0.599609 1 -1.09961 2 -1.59961 3.10059l-68.5 187.8l-66.9004 -194.4c20 -5.89941 41.0996 -9.09961 63 -9.09961zM286.7 296.5l80.7002 -239.6l22.1992 74.2998c9.7002 30.8994 17 53 17 72.0996c0 27.6006 -9.89941 46.7002 -18.3994 61.5\nc-11.2998 18.4004 -21.9004 33.9004 -21.9004 52.2998c0 20.5 15.5 39.6006 37.4004 39.6006c1 0 1.89941 -0.100586 2.89941 -0.200195c-39.6992 36.2998 -92.5996 58.5 -150.6 58.5c-77.9004 0 -146.4 -40 -186.3 -100.5\nc5.2998 -0.200195 10.2002 -0.299805 14.3994 -0.299805c23.3008 0 59.4004 2.7998 59.4004 2.7998c12 0.700195 13.4004 -17 1.40039 -18.4004c0 0 -12.1006 -1.39941 -25.5 -2.09961l81.1992 -241.5l48.8008 146.3l-34.7002 95.2002\nc-12 0.700195 -23.4004 2.09961 -23.4004 2.09961c-12 0.700195 -10.5996 19.1006 1.40039 18.4004c0 0 36.7998 -2.7998 58.7002 -2.7998c23.2998 0 59.3994 2.7998 59.3994 2.7998c12 0.700195 13.4004 -17 1.40039 -18.4004c0 0 -12.1006 -1.39941 -25.5 -2.09961z\nM368.1 -0.700195c66.3008 38.6006 110.9 110.4 110.9 192.7c0 38.7998 -9.90039 75.2002 -27.2998 107c1 -7.09961 1.5 -14.7002 1.5 -22.9004c0 -22.6992 -4.2998 -48.0996 -17 -79.8994z\" />\n    <glyph glyph-name=\"xbox\" unicode=\"&#xf412;\" horiz-adv-x=\"512\" \nd=\"M369.9 129.8c44.2998 -54.2998 64.6992 -98.7998 54.3994 -118.7c-7.89941 -15.0996 -56.7002 -44.5996 -92.5996 -55.8994c-29.6006 -9.2998 -68.4004 -13.2998 -100.4 -10.2002c-38.2002 3.7002 -76.8994 17.4004 -110.1 39\nc-27.9004 18.2002 -34.2002 25.7002 -34.2002 40.5996c0 29.9004 32.9004 82.3008 89.2002 142.101c32 33.8994 76.5 73.7002 81.3994 72.5996c9.40039 -2.09961 84.3008 -75.0996 112.301 -109.5zM188.6 304.2c-66.3994 -81.5 -106 -155.4 -120.3 -194.4\nc-9.7998 -26.5 -13.7002 -53 -9.5 -64c2.7998 -7.39941 0.200195 -4.7002 -9.2998 9.90039c-23.2002 35.5 -34.9004 70.3994 -40.5 120.899c-1.90039 16.7002 -1.2002 26.3008 4.2002 60.5c6.7998 42.7002 31.0996 92 60.2998 122.4\nc12.4004 12.9004 13.5 13.2002 28.7002 8.09961c28.2998 -9.5 56.7002 -36.5 86.3994 -63.3994zM500.2 240.7c4.7002 -22.6006 5.09961 -70.9004 0.799805 -93.4004c-3.59961 -18.5 -11.2002 -42.5 -18.5996 -58.7002c-5.5 -12.1992 -19.3008 -35.7998 -25.4004 -43.5\nc-3.09961 -3.89941 -3.09961 -3.89941 -1.40039 4.60059c2.30078 11.2002 -0.599609 31.5996 -7.39941 52.2998c-20.7002 62.9004 -80.5 149 -122.9 202.3c23.2998 21.4004 41 38.2998 64.2998 52.7998c11.8008 7.40039 28.7002 13.9004 36 13.9004\nc7.10059 0 57.7002 -50.2998 74.6006 -130.3zM141.3 405c-14.5996 -0.700195 -14 0.0996094 9.40039 11.2002c81.2002 38.2998 170 27.5996 233.899 -11.7002c-13.3994 0.599609 -43.5 5.90039 -107.399 -25.2002c-11.2002 -5.5 -20.9004 -9.7998 -21.6006 -9.7002\nc-4.59961 0.900391 -66.5996 37.9004 -114.3 35.4004z\" />\n    <glyph glyph-name=\"yandex\" unicode=\"&#xf413;\" horiz-adv-x=\"256\" \nd=\"M153.1 132.2l-87.3994 -196.2h-63.7002l96 209.8c-45.0996 22.9004 -75.2002 64.4004 -75.2002 141.101c-0.0996094 107.399 68 161.1 148.9 161.1h82.2998v-512h-55.0996v196.2h-45.8008zM198.9 401.5h-29.4004c-44.4004 0 -87.4004 -29.4004 -87.4004 -114.6\nc0 -82.3008 39.4004 -108.801 87.4004 -108.801h29.4004v223.4z\" />\n    <glyph glyph-name=\"yandex-international\" unicode=\"&#xf414;\" horiz-adv-x=\"320\" \nd=\"M129.5 -64v166.1l-111 297.9h55.7998l81.7998 -229.7l94.1006 277.7h51.2998l-120.7 -347.8v-164.2h-51.2998z\" />\n    <glyph glyph-name=\"apple-pay\" unicode=\"&#xf415;\" horiz-adv-x=\"640\" \nd=\"M116.9 289.5c-7.5 -8.90039 -19.5 -15.9004 -31.5 -14.9004c-1.5 12 4.39941 24.8008 11.2998 32.6006c7.5 9.09961 20.5996 15.5996 31.2998 16.0996c1.2002 -12.3994 -3.7002 -24.7002 -11.0996 -33.7998zM127.8 272.3c6.7998 -0.5 26.2998 -2.5 38.7998 -21.0996\nc-1 -0.799805 -23.1992 -13.5 -22.8994 -40.2998c0.299805 -32 28 -42.6006 28.2998 -42.9004c-0.200195 -0.799805 -4.40039 -15.0996 -14.5 -29.9004c-8.90039 -13 -18 -25.6992 -32.5 -26c-14 -0.199219 -18.7002 8.40039 -34.7998 8.40039\nc-16 0 -21.2002 -8.09961 -34.5 -8.59961c-14 -0.5 -24.6006 13.7998 -33.5 26.7998c-18.2002 26.2998 -32.1006 74 -13.2998 106.3c9.09961 16.0996 25.6992 26.2002 43.5996 26.5c13.7998 0.299805 26.4004 -9.09961 34.7998 -9.09961\nc8.2002 0 23.1006 10.8994 40.5 9.89941zM228.2 308.5h73.2002c37.6992 0 64.0996 -26 64.0996 -64s-26.7998 -64.2998 -65.0996 -64.2998h-41.9004v-66.6006h-30.2998v194.9zM258.5 283v-77.4004h34.7998c26.4004 0 41.4004 14.2002 41.4004 38.8008\nc0 24.5996 -15 38.5996 -41.2998 38.5996h-34.9004zM420.7 112.1c-28.1006 0 -47.7002 16.8008 -47.7998 42c0 25 19 39.4004 54.0996 41.5l37.7998 2.30078v10.7998c0 15.8994 -10.3994 24.5 -28.8994 24.5c-15.2002 0 -26.3008 -7.90039 -28.6006 -19.9004h-27.2998\nc0.900391 25.2002 24.7002 43.6006 56.7998 43.6006c34.6006 0 57.1006 -18.2002 57.1006 -46.3008v-97h-28v23.4004h-0.600586c-8 -15.2998 -25.5996 -24.9004 -44.5996 -24.9004zM428.9 135.2c20.5 0 36 13 36 31.2002v11l-33.6006 -2.10059\nc-18.8994 -1.09961 -28.7998 -8.2002 -28.7998 -20.5c0 -11.7998 10.2998 -19.5996 26.4004 -19.5996zM531.4 60.5996c-2.30078 0 -9.80078 0.300781 -11.6006 0.700195v23.4004c1.90039 -0.200195 6.5 -0.5 8.90039 -0.5c13.3994 0 20.8994 5.7002 25.5 20.2998\nl2.7998 8.59961l-51.2002 141.9h31.6006l35.5996 -115.1h0.599609l35.6006 115.1h30.7998l-53.0996 -149c-12.1006 -34.0996 -26 -45.4004 -55.5 -45.4004z\" />\n    <glyph glyph-name=\"cc-apple-pay\" unicode=\"&#xf416;\" horiz-adv-x=\"576\" \nd=\"M302.2 229.6c0 -17.1992 -10.5 -27.0996 -29 -27.0996h-24.2998v54.2002h24.3994c18.4004 0 28.9004 -9.7998 28.9004 -27.1006zM349.7 167c0 8.59961 6.89941 13.5 20.2002 14.4004l23.5 1.5v-7.7002c0 -12.7998 -10.8008 -21.9004 -25.2002 -21.9004\nc-11.2998 0 -18.5 5.40039 -18.5 13.7002zM576 369v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h480c26.5 0 48 -21.5 48 -48zM127.8 250.8c8.40039 -0.700195 16.7998 4.2002 22.1006 10.4004\nc5.19922 6.39941 8.59961 15 7.69922 23.7002c-7.39941 -0.300781 -16.5996 -4.90039 -21.8994 -11.3008c-4.7998 -5.5 -8.90039 -14.3994 -7.90039 -22.7998zM188.4 176.3c-0.200195 0.200195 -19.6006 7.60059 -19.8008 30c-0.199219 18.7002 15.3008 27.7002 16 28.2002\nc-8.7998 13 -22.3994 14.4004 -27.0996 14.7002c-12.2002 0.700195 -22.5996 -6.90039 -28.4004 -6.90039c-5.89941 0 -14.6992 6.60059 -24.2998 6.40039c-12.5 -0.200195 -24.2002 -7.2998 -30.5 -18.6006c-13.0996 -22.5996 -3.39941 -56 9.2998 -74.3994\nc6.2002 -9.10059 13.7002 -19.1006 23.5 -18.7002c9.30078 0.400391 13 6 24.2002 6c11.2998 0 14.5 -6 24.2998 -5.90039c10.2002 0.200195 16.5 9.10059 22.8008 18.2002c6.89941 10.4004 9.7998 20.4004 10 21zM323.8 229.7c0 26.5996 -18.5 44.7998 -44.8994 44.7998\nh-51.2002v-136.4h21.2002v46.6006h29.2998c26.7998 0 45.5996 18.3994 45.5996 45zM413.8 206c0 19.7002 -15.7998 32.4004 -40 32.4004c-22.5 0 -39.0996 -12.9004 -39.7002 -30.5h19.1006c1.59961 8.39941 9.39941 13.8994 20 13.8994c13 0 20.2002 -6 20.2002 -17.2002\nv-7.5l-26.4004 -1.59961c-24.5996 -1.5 -37.9004 -11.5996 -37.9004 -29.0996c0 -17.7002 13.7002 -29.4004 33.4004 -29.4004c13.2998 0 25.5996 6.7002 31.2002 17.4004h0.399414v-16.4004h19.6006v68h0.0996094zM516 237.1h-21.5l-24.9004 -80.5996h-0.399414\nl-24.9004 80.5996h-22.2998l35.9004 -99.2998l-1.90039 -6c-3.2002 -10.2002 -8.5 -14.2002 -17.9004 -14.2002c-1.69922 0 -4.89941 0.200195 -6.19922 0.300781v-16.4004c1.19922 -0.400391 6.5 -0.5 8.09961 -0.5c20.7002 0 30.4004 7.90039 38.9004 31.7998z\" />\n    <glyph glyph-name=\"fly\" unicode=\"&#xf417;\" horiz-adv-x=\"384\" \nd=\"M197.8 20.2002c12.9004 -11.7002 33.7002 -33.2998 33.2002 -50.7002c0 -0.799805 -0.0996094 -1.59961 -0.0996094 -2.5c-1.80078 -19.7998 -18.8008 -31.0996 -39.1006 -31c-25 0.0996094 -39.8994 16.7998 -38.7002 35.7998c1 16.2002 20.5 36.7002 32.4004 47.6006\nc2.2998 2.09961 2.7002 2.69922 5.59961 3.59961c3.40039 0 3.90039 -0.299805 6.7002 -2.7998zM331.9 380.7c23.8994 -40 27.7998 -73.2998 20.7998 -112.5c-15.2002 -69.9004 -103.601 -166.5 -155.9 -215.7c-1.7002 -1.59961 -1.39941 -1.40039 -3.5 -2.09961\nl-3.2998 0.0996094c-1.7002 0.599609 -4.5 3.5 -6.2002 5.09961c-58.7998 57.8008 -148.7 151.601 -155.8 233.801c-1.5 71.3994 29.2998 113.399 82.9004 141.3c9.89941 4.09961 37 17.2998 81.0996 17.2998c22 0.200195 51.0996 -4.5 76.5996 -15.2002\nc24.7002 -11.5 47 -26.3994 63.3008 -52.0996zM186.8 96.0996v325.7c-57.8994 -5.5 -72.7002 -89.2002 -69.2998 -136.7c4.09961 -58.2998 41.2998 -137.899 69.2998 -189zM328.7 268c15.7998 54.9004 -10.9004 134.7 -99.7002 153\nc38.2002 -25.5996 49.5996 -85.5 48 -131.4c-2 -58.5996 -39.4004 -140 -67.2002 -191.899c41.6006 42.2998 102.5 113.5 118.9 170.3z\" />\n    <glyph glyph-name=\"node\" unicode=\"&#xf419;\" horiz-adv-x=\"640\" \nd=\"M316.3 -4c-2.09961 0 -4.2002 0.599609 -6.09961 1.59961l-19.2002 11.4004c-2.90039 1.59961 -1.5 2.2002 -0.5 2.5c3.7998 1.2998 4.59961 1.59961 8.7002 4c0.399414 0.200195 1 0.0996094 1.39941 -0.0996094l14.8008 -8.80078\nc0.5 -0.299805 1.2998 -0.299805 1.7998 0l57.7998 33.4004c0.5 0.299805 0.900391 0.900391 0.900391 1.59961v66.7002c0 0.700195 -0.300781 1.2998 -0.900391 1.60059l-57.7998 33.2998c-0.5 0.299805 -1.2002 0.299805 -1.7998 0l-57.8008 -33.2998\nc-0.599609 -0.300781 -0.899414 -1 -0.899414 -1.60059v-66.7002c0 -0.599609 0.399414 -1.19922 0.899414 -1.5l15.8008 -9.09961c8.59961 -4.2998 13.8994 0.799805 13.8994 5.7998v65.9004c0 0.899414 0.700195 1.7002 1.7002 1.7002h7.2998\nc0.900391 0 1.7002 -0.700195 1.7002 -1.7002v-65.9004c0 -11.5 -6.2002 -18 -17.0996 -18c-3.30078 0 -6 0 -13.3008 3.60059l-15.1992 8.69922c-3.7002 2.2002 -6.10059 6.2002 -6.10059 10.5v66.7002c0 4.2998 2.2998 8.40039 6.10059 10.5l57.7998 33.4004\nc3.7002 2.09961 8.5 2.09961 12.0996 0l57.7998 -33.4004c3.7002 -2.2002 6.10059 -6.2002 6.10059 -10.5v-66.7002c0 -4.2998 -2.2998 -8.39941 -6.10059 -10.5l-57.7998 -33.3994c-1.7002 -1.10059 -3.7998 -1.7002 -6 -1.7002zM363 61.7998\nc0 -12.5996 -10.5 -19.7998 -29 -19.7998c-25.2998 0 -30.5996 11.5996 -30.5996 21.2998c0 1 0.799805 1.7002 1.69922 1.7002h7.5c0.900391 0 1.60059 -0.599609 1.7002 -1.40039c1.10059 -7.59961 4.5 -11.3994 19.7998 -11.3994\nc12.2002 0 17.4004 2.7002 17.4004 9.2002c0 3.69922 -1.5 6.39941 -20.4004 8.2998c-15.7998 1.59961 -25.5996 5 -25.5996 17.7002c0 11.5996 9.7998 18.5996 26.2998 18.5996c18.5 0 27.6006 -6.40039 28.7998 -20.2002\nc0.100586 -0.5 -0.0996094 -0.899414 -0.399414 -1.2998c-0.299805 -0.299805 -0.700195 -0.5 -1.2002 -0.5h-7.5c-0.799805 0 -1.40039 0.5 -1.59961 1.2998c-1.80078 8 -6.2002 10.6006 -18.1006 10.6006c-13.2998 0 -14.7998 -4.60059 -14.7998 -8.10059\nc0 -4.2002 1.7998 -5.39941 19.7998 -7.7998c17.7998 -2.40039 26.2002 -5.7002 26.2002 -18.2002zM417.5 111.9c0 -6.10059 -5 -11.1006 -11.0996 -11.1006c-6.10059 0 -11.1006 5 -11.1006 11.1006c0 6.2998 5.2002 11.0996 11.1006 11.0996\nc6 0.0996094 11.0996 -4.7998 11.0996 -11.0996zM415.7 111.9c0 5.19922 -4.2002 9.2998 -9.40039 9.2998c-5.09961 0 -9.2998 -4.10059 -9.2998 -9.2998c0 -5.2002 4.2002 -9.40039 9.2998 -9.40039c5.2002 0.0996094 9.40039 4.2998 9.40039 9.40039zM411.2 105.7\nh-2.60059c-0.0996094 0.599609 -0.5 3.7998 -0.5 3.89941c-0.199219 0.700195 -0.399414 1.10059 -1.2998 1.10059h-2.2002v-5h-2.39941v12.5h4.2998c1.5 0 4.40039 0 4.40039 -3.2998c0 -2.30078 -1.5 -2.80078 -2.40039 -3.10059\nc1.7002 -0.0996094 1.7998 -1.2002 2.09961 -2.7998c0.100586 -1 0.300781 -2.7002 0.600586 -3.2998zM408.4 114.5c0 1.7002 -1.2002 1.7002 -1.80078 1.7002h-2v-3.5h1.90039c1.59961 0 1.90039 1.09961 1.90039 1.7998zM137.3 257l-0.200195 -95\nc0 -1.2998 -0.699219 -2.59961 -1.7998 -3.2002c-1.09961 -0.700195 -2.59961 -0.700195 -3.7002 0l-36.3994 20.9004c-2.2998 1.2998 -3.7002 3.7998 -3.7002 6.39941v44.4004c0 2.59961 -1.40039 5.09961 -3.7002 6.40039l-15.5 8.89941\nc-1.09961 0.700195 -2.39941 1 -3.7002 1c-1.2998 0 -2.5 -0.299805 -3.69922 -1l-15.5 -8.89941c-2.30078 -1.30078 -3.7002 -3.80078 -3.7002 -6.40039v-44.4004c0 -2.59961 -1.40039 -5 -3.7002 -6.39941l-36.4004 -20.9004\nc-1.19922 -0.700195 -2.59961 -0.700195 -3.69922 0c-1.10059 0.700195 -1.80078 1.90039 -1.80078 3.2002l-0.0996094 95c0 2.59961 1.40039 5.09961 3.7002 6.40039l61.2002 35.2998c1.09961 0.599609 2.19922 1 3.39941 1h0.600586\nc1.19922 -0.100586 2.39941 -0.400391 3.39941 -1l61.2998 -35.2998c2.30078 -1.30078 3.7002 -3.7002 3.7002 -6.40039zM472.5 360.7v-176.4c0 -2.59961 -1.40039 -5.09961 -3.7002 -6.39941l-61.2998 -35.4004c-2.2998 -1.2998 -5.09961 -1.2998 -7.40039 0\nl-61.2998 35.4004c-2.2998 1.2998 -3.7002 3.7998 -3.7002 6.39941v70.7998c0 2.60059 1.40039 5.10059 3.7002 6.40039l61.2998 35.4004c2.30078 1.2998 5.10059 1.2998 7.40039 0l15.2998 -8.80078c1.7002 -1 3.90039 0.300781 3.90039 2.2002v94\nc0 2.7998 3 4.60059 5.5 3.2002l36.5 -20.4004c2.2998 -1.19922 3.7998 -3.69922 3.7998 -6.39941zM426.5 231.8c0 0.700195 -0.400391 1.2998 -0.900391 1.60059l-21 12.1992c-0.599609 0.300781 -1.2998 0.300781 -1.89941 0l-21 -12.1992\nc-0.600586 -0.300781 -0.900391 -0.900391 -0.900391 -1.60059v-24.2998c0 -0.700195 0.400391 -1.2998 0.900391 -1.59961l21 -12.1006c0.599609 -0.299805 1.2998 -0.299805 1.7998 0l21 12.1006c0.599609 0.299805 0.900391 0.899414 0.900391 1.59961v24.2998h0.0996094\nzM636.3 232.5l-36.7002 -21.2998c-2.5 -1.40039 -5.59961 0.399414 -5.59961 3.2002v17.3994c0 1.2998 -0.799805 2.5 -1.90039 3.2002l-19.1992 11.0996c-1.10059 0.700195 -2.60059 0.700195 -3.7002 0l-19.2002 -11.0996\nc-1.2002 -0.700195 -1.90039 -1.90039 -1.90039 -3.2002v-22.2002c0 -1.2998 0.700195 -2.5 1.90039 -3.19922l61.7002 -35.4004c2.5 -1.40039 2.5 -5 0 -6.40039l-36.7998 -20.5c-2.30078 -1.2998 -5.10059 -1.2998 -7.30078 0l-60.8994 34.7002\nc-2.2998 1.2998 -3.7002 3.7002 -3.7002 6.40039v70.7998c0 2.59961 1.40039 5.09961 3.7002 6.40039l61.2998 35.3994c2.2998 1.2998 5.09961 1.2998 7.40039 0l60.8994 -35.3994c2.2998 -1.30078 3.7002 -3.80078 3.7002 -6.40039v-17.0996\nc0 -2.60059 -1.40039 -5.10059 -3.7002 -6.40039zM559 229l11.7998 6.7998c0.400391 0.299805 1 0.299805 1.40039 0l11.7998 -6.7998c0.400391 -0.200195 0.700195 -0.700195 0.700195 -1.2002v-13.5996c0 -0.5 -0.299805 -0.900391 -0.700195 -1.2002l-11.7998 -6.7998\nc-0.400391 -0.299805 -1 -0.299805 -1.40039 0l-11.7998 6.7998c-0.400391 0.200195 -0.700195 0.700195 -0.700195 1.2002v13.5996c0 0.5 0.299805 0.900391 0.700195 1.2002zM304.8 185.5c0 -0.599609 -0.0996094 -1.2002 -0.200195 -1.7002\nc-0.5 -2 -1.7998 -3.7002 -3.59961 -4.7002l-61 -35.1992c-2.2002 -1.30078 -5 -1.40039 -7.40039 0l-61.1992 35.1992c-2.10059 1.2002 -4 3.60059 -4 6.40039v70.4004c0 2.69922 1.59961 5.09961 3.89941 6.39941l61.1006 35.2002\nc2.39941 1.40039 5.2998 1.2002 7.39941 0l61.1006 -35.2002c2.2998 -1.2998 3.89941 -3.7998 3.89941 -6.39941v-70.4004zM230.5 310.4l-0.799805 -0.5h1.09961zM306.7 180.2l-0.400391 0.700195v-0.900391z\" />\n    <glyph glyph-name=\"osi\" unicode=\"&#xf41a;\" horiz-adv-x=\"512\" \nd=\"M8 181.56c2.2998 135.801 97.3994 232.441 213.799 248.102c138.8 18.5996 255.601 -75.7998 278 -201.101c21.2998 -118.8 -44 -230 -151.6 -274c-9.2998 -3.7998 -14.4004 -1.69922 -18 7.7002c-17.7998 46.2998 -35.5996 92.6328 -53.3994 138.999\nc-3.09961 8.10059 -1 13.2002 7 16.7998c24.2002 11 39.2998 29.4004 43.2998 55.8008c0.469727 3.01562 0.850586 7.94043 0.850586 10.9922c0 36.2061 -29.2764 68.1074 -65.3506 71.207c-39 3.40039 -71.7998 -23.6992 -77.5 -59.6992\nc-5.19922 -33 11.1006 -63.7002 41.9004 -77.7002c9.59961 -4.40039 11.5 -8.60059 7.7998 -18.4004c-17.8994 -46.5996 -35.7998 -93.2324 -53.7002 -139.899c-2.59961 -6.90039 -8.2998 -9.30078 -15.5 -6.5c-52.5996 20.2998 -101.399 61 -130.8 119\nc-24.8994 49.1992 -25.2002 87.6992 -26.7998 108.699zM28.8994 183.461c0.399414 -6.59961 0.599609 -14.3008 1.2998 -22.1006c6.2998 -71.9004 49.5996 -143.5 131 -183.101c3.2002 -1.5 4.39941 -0.799805 5.59961 2.2998c14.9004 39.1006 29.9004 78.2012 45 117.302\nc1.2998 3.2998 0.600586 4.7998 -2.39941 6.69922c-31.6006 19.9004 -47.3008 48.5 -45.6006 86c1 21.6006 9.2998 40.5 23.7998 56.3008c30 32.6992 77 39.7998 115.5 17.5996c25.3174 -14.5977 45.8643 -50.1641 45.8643 -79.3877\nc0 -3.05078 -0.296875 -7.98438 -0.664062 -11.0127c-3.59961 -30.5996 -19.2998 -53.8994 -45.7002 -69.7998c-2.69922 -1.59961 -3.5 -2.89941 -2.2998 -6c15.2002 -39.2002 30.2666 -78.4336 45.2002 -117.7c1.2002 -3.09961 2.40039 -3.7998 5.59961 -2.2998\nc35.5 16.6006 65.2002 40.2998 88.1006 72c34.7998 48.2002 49.0996 101.9 42.2998 161c-13.7002 117.5 -119.4 214.8 -255.5 198c-106.1 -13 -195.3 -102.5 -197.1 -225.8z\" />\n    <glyph glyph-name=\"react\" unicode=\"&#xf41b;\" horiz-adv-x=\"512\" \nd=\"M418.2 270.8c54.3994 -18.7002 93.7998 -48.0996 93.7998 -78.3994c0 -31.7002 -41.7998 -62.6006 -99.5 -81.7002c-3.09961 -1 -6.2002 -2 -9.40039 -2.90039c1.10059 -4.59961 2.10059 -9.09961 3 -13.5c11.4004 -57.5996 2.60059 -104.899 -24.3994 -120.5\nc-26.1006 -15.0996 -68.4004 -0.200195 -111.2 36.6006c-4.59961 4 -9.2002 8.09961 -13.5996 12.3994c-3.5 -3.39941 -7 -6.59961 -10.5 -9.7002c-44.2002 -38.6992 -89.6006 -54.6992 -116.601 -39.0996c-26.2002 15.0996 -34.3994 59.0996 -23.8994 114.6\nc1.19922 6.10059 2.5 12 4 18c-4.60059 1.30078 -9.10059 2.80078 -13.6006 4.30078c-55.5 19 -96.2998 50.2998 -96.2998 81.5c0 30.1992 38.2998 59.3994 91.7002 77.8994c5.89941 2.10059 12.2002 4.10059 18.5996 5.90039\nc-1.39941 5.59961 -2.59961 11.0996 -3.7002 16.7002c-11 56.3994 -3.19922 101.5 23 116.699c27.3008 15.9004 72.9004 -1.09961 118.4 -41.5c2.7998 -2.5 5.59961 -5.09961 8.2998 -7.69922c4 3.89941 8.2002 7.7998 12.5 11.5\nc43.4004 37.7998 86.2998 53.5 112.601 38.3994c27.2998 -15.7998 35.3994 -63.7002 23.0996 -123.3c-0.799805 -3.7002 -1.59961 -7.40039 -2.5 -11.0996c5.40039 -1.60059 10.7998 -3.30078 16.2002 -5.10059zM282.9 355.7c-4 -3.5 -7.80078 -7 -11.7002 -10.7002\nc15.3994 -16.7002 29.5996 -34.5 42.5996 -53.0996c22.6006 -2 45.1006 -5.60059 67.2998 -10.6006c0.900391 3.2998 1.60059 6.60059 2.30078 10c10.5996 51.5 4.09961 90.7002 -12.8008 100.4c-15.7998 9.09961 -50.5 -3.60059 -87.6992 -36zM167.2 140.5\nc-5 8.59961 -9.7002 17.2998 -14.2998 26.0996c-6.40039 -15.1992 -11.9004 -30.0996 -16.3008 -44.5c15.3008 -3.2998 30.8008 -5.7998 46.4004 -7.5c-5.5 8.5 -10.7002 17.2002 -15.7998 25.9004zM136.9 260.8c4.39941 -14.0996 9.69922 -28.7002 16 -43.5996\nc4.5 8.7998 9.2998 17.5 14.1992 26c4.90039 8.59961 10.1006 17.0996 15.4004 25.3994c-15.9004 -2 -31.2002 -4.59961 -45.5996 -7.7998zM164.3 191.9c6.7002 -13.8008 13.7998 -27.3008 21.5 -40.6006s15.9004 -26.2998 24.6006 -39\nc14.6992 -0.899414 29.8994 -1.39941 45.5996 -1.39941s31.2002 0.5 46.0996 1.59961c8.5 12.7998 16.6006 25.7002 24.2002 39c7.7002 13.4004 14.9004 27 21.6006 40.7998c-6.80078 13.7002 -14 27.2002 -21.7002 40.4004s-15.7998 26.0996 -24.2998 38.7002\nc-14.9004 1.09961 -30.3008 1.69922 -45.9004 1.69922s-30.9004 -0.599609 -45.9004 -1.69922c-8.59961 -12.7002 -16.7998 -25.6006 -24.3994 -38.9004c-7.60059 -13.2998 -14.7998 -26.7998 -21.4004 -40.5996zM344.9 140.7c-5 -8.60059 -10.1006 -17.2002 -15.5 -25.6006\nc15.7998 1.80078 31.5 4.5 47 8c-4.90039 15.1006 -10.5 29.8008 -16.9004 44.3008c-4.7002 -9 -9.5 -17.9004 -14.5996 -26.7002zM359.3 217.2c6.10059 14.2002 11.5 28.5996 16.1006 43.3994c-14.4004 3.30078 -29.8008 6 -45.9004 8\nc5.2998 -8.2998 10.4004 -16.6992 15.2998 -25.1992c5 -8.60059 9.7998 -17.4004 14.5 -26.2002zM256.2 329.7c-10 -10.9004 -20.1006 -22.9004 -29.9004 -35.7998c19.7998 0.899414 39.7002 0.899414 59.5 0c-9.2002 12.3994 -19.0996 24.3994 -29.5996 35.7998zM140.2 391\nc-15.7998 -9.09961 -22 -45.5996 -12.6006 -94c1.10059 -5.2002 2.2002 -10.4004 3.5 -15.5c22.2002 4.90039 44.6006 8.40039 67.2002 10.4004c13.1006 18.5996 27.4004 36.3994 42.9004 53.0996c-2.60059 2.40039 -5.10059 4.7998 -7.60059 7\nc-39.2998 34.7998 -76.5996 48.7998 -93.3994 39zM115.7 127.4c6.89941 22 15.2002 43.5996 24.7998 64.5c-9.5 20.5996 -17.7002 41.8994 -24.5 63.5996c-5.7998 -1.7002 -11.5996 -3.5 -17.2998 -5.5c-45.6006 -15.9004 -77.2002 -39.2998 -77.2002 -57.5996\nc1.90039 -12.1006 8.7002 -22.9004 18.7998 -29.9004c17.5 -13.9004 41.7002 -24.5 63 -31.2002c4.10059 -1.39941 8.2002 -2.7002 12.4004 -3.89941zM232.3 29.4004c3.2002 2.7998 6.40039 5.7998 9.60059 8.89941c-15.5 16.7998 -30 34.7002 -43.2002 53.4004\nc-22.9004 1.7002 -45.5 5 -67.9004 9.7998c-1.39941 -5.5 -2.59961 -11.0996 -3.7002 -16.7002c-9 -47.5 -2.39941 -82.7998 13.5 -92c11.4004 -4.5 24.2002 -4 35.3008 1.2998c20.7998 8.2002 39.8994 20.2002 56.3994 35.3008zM256.8 53.7002\nc10.5 11.5996 20.4004 23.7002 29.6006 36.3994c-10 -0.5 -20.1006 -0.699219 -30.4004 -0.699219c-10 0 -19.9004 0.199219 -29.5 0.599609c9.90039 -13.0996 20.0996 -25.2998 30.2998 -36.2998zM387.5 23.7002c3.2002 22.2002 2.40039 44.7002 -2.5 66.2998\nc-0.799805 4 -1.7002 8.09961 -2.7002 12.2002c-22.5 -5.10059 -45.2998 -8.60059 -68.2002 -10.5c-12.7998 -18.7998 -26.8994 -36.7002 -42.1992 -53.6006c4.2998 -4 8.5 -7.89941 12.6992 -11.5c36.6006 -31.3994 70.5 -43.3994 86.4004 -34.1992\nc9.59961 7.69922 15.5996 19.0996 16.5 31.2998zM405.7 131.2c49.8994 16.5 84.7998 41.7998 84.7998 61.3994c0 18.2002 -32.7002 42 -79.2998 58c-4.7998 1.60059 -9.7998 3.2002 -15 4.7002c-6.7998 -21.5 -14.9004 -42.5 -24.5 -62.8994\nc9.89941 -20.7002 18.5 -42 25.5 -63.8008c2.89941 0.800781 5.7002 1.7002 8.5 2.60059zM256 146.2c-25.2998 0 -45.7998 20.5 -45.7998 45.7998s20.5 45.7998 45.7998 45.7998s45.7998 -20.5 45.7998 -45.7998s-20.5 -45.7998 -45.7998 -45.7998z\" />\n    <glyph glyph-name=\"autoprefixer\" unicode=\"&#xf41c;\" horiz-adv-x=\"640\" \nd=\"M318.4 432l164.1 -480h-77.5l-25.2002 81.4004h-119.5l-25.3994 -81.4004h-77.5zM278.1 90.0996h83.6006l-40.9004 130.4h-1.5zM640 43l-158.5 -9.5l-19.4004 56.5l167.9 -15.5996zM177.9 90l-19.4004 -56.4004l-158.5 9.40039l10 31.2998z\" />\n    <glyph glyph-name=\"less\" unicode=\"&#xf41d;\" horiz-adv-x=\"640\" \nd=\"M612.7 229c0 -11 6.7998 -22.5996 27.2998 -23.2998v-27.2998c-20.5 -1 -27.2998 -12.6006 -27.2998 -23.6006c0 -20.3994 3.2002 -32 3.2002 -54.5996c0 -34.2002 -12.7002 -45.2002 -40.5 -45.2002h-20.5v25.2002h6.2998v0.5c13.5996 0 17.2998 4.7002 17.2998 22.5996\nc0 17.2998 -1.59961 32.6006 -1.59961 51.5c0 24.2002 7.7998 33.6006 23.5996 37.2998v1.60059c-15.7002 3.7002 -23.5996 13.0996 -23.5996 37.2998c0 18.9004 1.59961 35.2002 1.59961 51.5c0 17.4004 -3.09961 22.0996 -17.2998 22.0996h-6.2998v24.2002h20.5\nc27.8994 0 40.5 -11 40.5 -45.2002c0 -22 -3.2002 -34.0996 -3.2002 -54.5996zM507.1 197c20.5 -6.7998 43 -18.9004 43 -47.7998c0 -28.9004 -22.5996 -51 -64.5996 -51c-20 0 -44.0996 9 -59.9004 22.0996l21 30.5c14.2002 -11 27.4004 -16.2998 40.5 -16.2998\nc14.2002 0 20.5 5.2002 20.5 13.0996c0 10.5 -15.7998 15.8008 -32.0996 22.1006c-18.9004 7.2998 -41.5 20.5 -41.5 46.2002c0 28.8994 24.2002 49.3994 59.9004 49.3994c24.1992 0 42.0996 -10.5 55.1992 -20.5l-21 -27.7998c-11.5 8.40039 -22 13.0996 -33.5996 13.0996\ns-17.9004 -4.69922 -17.9004 -12.5996c0 -10.5 14.7002 -14.2002 30.5 -20.5zM148.2 137.6c1.59961 0 3.09961 0 6.2002 0.800781l5.2998 -34.2002c-5.7002 -2.10059 -13.6006 -3.7002 -23.6006 -3.7002c-32.0996 0 -43.0996 21 -43.0996 53.0996v150.801h-14.0996\nc-13.6006 0 -17.3008 -4.80078 -17.3008 -22.1006s1.60059 -32.5996 1.60059 -51.5c0 -24.2002 -7.7998 -33.5996 -23.6006 -37.2998v-1.59961c15.7002 -3.7002 23.6006 -13.1006 23.6006 -37.3008c0 -19.3994 -1.60059 -34.1992 -1.60059 -51.5\nc0 -17.2998 4.2002 -22.5996 17.3008 -22.5996h6.2998v-24.2002h-20.5c-27.9004 0 -40.5 11 -40.5 45.2002c0 22.5996 3.2002 34.2002 3.2002 53.5996c0 11 -6.80078 22.6006 -27.3008 23.1006v27.2998c20.5 1 27.3008 12.5996 27.3008 23.5996\nc0 19.4004 -3.2002 32 -3.2002 54.6006c0 34.2002 12.5996 45.2002 41 45.2002h74.5996v-178.2c0 -9.90039 4.7002 -13.1006 8.40039 -13.1006zM379.9 197c20.5 -6.7998 43.0996 -18.9004 43 -47.7998c0 -28.9004 -22.6006 -51 -64.6006 -51\nc-20 0 -44.0996 9 -59.8994 22.0996l20.5 30.5c14.1992 -11 27.3994 -16.2998 40.5 -16.2998c14.1992 0 20.5 5.2002 20.5 13.0996c0 10.5 -15.8008 15.8008 -32.1006 22.1006c-18.8994 7.2998 -41.5 20.5 -41.5 46.2002c0 28.8994 24.2002 49.3994 59.9004 49.3994\nc24.2002 0 42.0996 -10.5 55.2002 -20.5l-21 -27.7998c-11.5 8.40039 -22 13.0996 -33.6006 13.0996c-11.5996 0 -17.8994 -4.69922 -17.8994 -12.5996c0 -10.5 14.6992 -14.2002 31 -20.5zM224.9 265.8c44.0996 0 67.2998 -33.0996 66.6992 -75.7002\nc0 -8.39941 -1.09961 -15.6992 -1.59961 -19.3994h-95.2002c4.2002 -24.2002 20.5 -34.2002 41.5 -34.2002c11.6006 0 22.6006 3.2002 34.2002 10l15.7998 -27.7998c-16.2998 -11.1006 -37.2998 -17.9004 -56.2002 -17.9004c-45.0996 0 -79.2998 30.5 -79.2998 82.5\nc-1 50.4004 35.7002 82.5 74.1006 82.5zM194.9 199.6h56.7998c0 17.9004 -7.40039 31 -26.2998 31c-14.7002 0 -27.3008 -10 -30.5 -31z\" />\n    <glyph glyph-name=\"sass\" unicode=\"&#xf41e;\" horiz-adv-x=\"640\" \nd=\"M301.84 69.0801c-0.299805 -0.599609 -0.599609 -1.08008 0 0zM550.97 156.08c57.9092 0.300781 90.5703 -37.0801 88.9707 -71.0801c-1.10059 -26.9004 -25.6904 -37.9004 -30.29 -38.7002c-3.30078 -0.599609 -5.10059 -0.700195 -5.60059 1.90039\nc-0.299805 1.7998 0.900391 2.7002 4.7998 5.09961c3.90039 2.40039 15.6006 10.5 17.7002 25c2.10059 14.5 -8.7998 49.2998 -64.4795 55.7998c-26 3 -46.3906 -0.599609 -62.0898 -7.19922c2.89941 -7.60059 5.09961 -15.5 5.39941 -23.4004\nc0.799805 -17.5 -11.29 -30.4004 -23.79 -39.5996c-5.48535 -3.98535 -15.1572 -8.95801 -21.5898 -11.1006c-5.2002 -2.2002 -12.2002 -4.5 -17.0996 -3.5c-10.9004 2.2002 -16.7002 11.7998 -9.30078 33.1006c4 11.5 15.5 29 34.0908 44.0996\nc-4.30078 8.7002 -8.99023 17.5996 -11.3906 25.7002c-2.18164 7.00781 -4.95898 18.5664 -6.2002 25.7998c0 0 -15.2998 -31.7197 -35.0898 -60.6201c-1.09961 -1.7002 -2.2998 -3.39941 -3.39941 -5c3.7998 -9 6.89941 -18.5996 7.2998 -28.2002\nc0.700195 -17.3994 -6.90039 -30.5996 -19.4004 -39.7998c-5.16211 -3.70605 -14.208 -8.45508 -20.1895 -10.5996c-3.90039 -1.7998 -12 -4.60059 -23.5 -5.40039c-6.29004 -0.5 -12.29 -0.0996094 -15.6904 2.5c-4.59961 3.40039 -5.2002 7.7998 -2.7998 13.7002\nc2 5 17.21 22.4004 30 37.5996c3.5 4.2002 6.90039 8.5 9.90039 12.5c-0.0498047 0.0449219 -0.09375 0.134766 -0.100586 0.200195c0 0 2.2998 3 6.10059 8.2002c-4.7002 10.0996 -10.6006 20.5 -13.4004 30c-2.18164 7.00781 -4.95898 18.5664 -6.2002 25.7998\nc0 0 -15.4902 -39.7002 -31.6895 -71.5c-12.4902 -24.5996 -20.79 -39.5 -24.5908 -46v-0.299805s-0.5 -0.900391 -1.5 -2.40039c-0.5 -0.799805 -0.699219 -1.19922 -0.699219 -1.19922v0.0996094c-4.20996 -6.2002 -13.6104 -18.2998 -23 -18.2998\nc-25.7002 0 -16.3008 52.2002 -16.3008 52.2002s-7.5 -19.3008 -16 -35.9004c-6.88965 -13.5996 -13.0898 -25 -26.8896 -25c-3.90039 0 -10.1904 0.0996094 -15.3896 5c-11.8008 11.2002 -20.9004 39.7002 -19.1006 61.7002c1.5 18.7998 4.40039 31.7998 8.40039 42.5996\nc-7.10059 -3.89941 -15.2002 -8.39941 -23.4902 -13.2998c-4.2998 -2.5 -8.59961 -5 -12.7998 -7.5c0.0996094 -0.299805 0.299805 -0.5 0.400391 -0.799805c10.5996 -20.4004 13.3896 -65.2002 -9.60059 -99.5s-65.7803 -55.2002 -107.57 -43.6006\nc-13.3896 3.80078 -33.79 31.6006 -16.29 70.4004c15.4902 34.2002 77.3809 66.5996 93.6709 74.7002c1.39941 0.799805 2.89941 1.59961 4.5 2.5c-32.4902 28.3994 -113.671 66.7998 -125.061 125.7c-3.2002 16.5996 4.58984 56.2998 53.2803 101.899\nc40.9902 38.2998 97.9697 67.7002 150.66 86.4004c88.4297 31.3994 181.949 12.8994 196.31 -43.5c14.1006 -55.5 -33.9902 -121.8 -95.7695 -145.601c-54.9902 -21.2998 -100.471 -17.8994 -119.17 -11.7998c-21.29 7 -33.79 21 -36.79 28.9004\nc-1.2002 3.09961 -3.30078 8.2998 0 10.0996c2 1.10059 2.7998 0.799805 8.09961 -5.09961c5.09961 -5.60059 25.4902 -20.6006 64.2803 -16.2998c101.77 11.3994 163.06 90.5 143.66 133c-13.4902 29.7998 -91.8408 43.1992 -189.841 -5.60059\nc-119.569 -59.5996 -126.069 -108.7 -127.069 -127.399c-2.7998 -51.3008 63.2793 -78.3008 99.0693 -116.5c0.5 -0.5 0.900391 -1 1.40039 -1.5c6.7002 3.69922 13.7998 7.59961 20.7002 11.3994c18 9.90039 35.0996 19.2002 43 23.5\nc12.5801 18.2998 38.1797 38.5 56.5801 38.5c29.4893 0 19.3896 -42.3994 19.3896 -42.3994s0.599609 2 1.40039 2c0.799805 0 4.09961 5.5 13.1992 2.19922c9.40039 -3.5 7.2002 -10 7.30078 -10.6992c0.0996094 -1.30078 -11 -38.9004 -15.7002 -63.1006\nc-2.2002 -11.5 -0.900391 -19.8994 -0.299805 -19.8994c0.899414 0 2.7998 2.89941 4.5 6.09961v0.0996094s1.2998 2.40039 3.5 6.7002c0 0.200195 -0.200195 -0.299805 -0.5 -0.799805c0.199219 0.400391 0.5 0.900391 0.899414 1.7002\nc2.60059 5 6.2002 12.3994 10.4004 21.5996c8.18945 18.1006 39.4795 87.7002 42.0801 95.4004c2.59961 7.7002 4 15.7002 5.2998 19.0996c1.2998 3.40039 12.4102 6 25.2998 5.90039c12.8906 -0.100586 14.1904 -5.60059 14.29 -6.7002\nc0.100586 -1.09961 -6.2002 -16.4004 -7.59961 -27.2002c-1.40039 -10.7998 -0.100586 -16.2002 1.09961 -25.2998c0.799805 -6 4.5 -13.5 8.90039 -22c13.2998 21.7998 36.79 63.5996 39.0898 75.2998c1.03613 5.38965 3.41016 13.9473 5.2998 19.1006\nc1.29004 3.39941 12.3896 6 25.29 5.89941c12.9004 -0.0996094 14.2002 -5.59961 14.2998 -6.7002c0.100586 -1.09961 -6.2002 -16.3994 -7.59961 -27.1992c-1.40039 -10.8008 -0.100586 -16.2002 1.09961 -25.3008c1 -7.7998 7.10059 -18.1992 13 -30.0996\nc15.1289 7.45215 41.0938 13.5 57.958 13.5h0.0419922zM121.79 11.3799c19.4004 21.0996 27.3896 47.9199 19.0996 78.3203c-1 -0.600586 -2 -1.10059 -2.89941 -1.7002c0 0 -0.400391 -0.200195 -1.2002 -0.700195c-4.7998 -2.89941 -8.7002 -5.2998 -11.4004 -6.89941\nc-11.7998 -7.40039 -29.5898 -19.4004 -43.3896 -32.4004c-22.6904 -21.4199 -27.3896 -51 -15.4902 -57.9199c11.0898 -6.40039 36.8906 1.2002 55.2803 21.2998zM256.15 102.78c4 9.7998 19.6992 53.2998 16.1992 59.2002c-2.59961 4.5 -13.6992 0.899414 -23.79 -10.4004\nc-6.2998 -7 -16.8994 -25 -21.8994 -40.0996c-9.90039 -30 -5.60059 -60.5 1.39941 -62.3008c8.2002 -2.09961 21.6904 37.9004 28.0908 53.6006zM367.15 49.7803c7.7998 4.7998 24.96 16.8994 25.0898 34.7998c0 0.599609 -0.100586 1.09961 -0.100586 1.59961\nc-3.98926 -5.19922 -7.68945 -9.89941 -10.8896 -13.8994c-5.5 -6.7998 -19.4004 -21.7002 -19.4004 -21.7002s-2 -1.90039 -1.09961 -2.40039c1.2002 -0.699219 3.7002 0.200195 6.40039 1.60059zM452.73 69.2803c9.68945 3.5 25.7998 11.8994 25.8994 34.3994\nc-0.0673828 3.06152 -0.918945 7.90039 -1.89941 10.8008c-10.4102 -9.2002 -16.4004 -18.8008 -19 -24.5c-6.7002 -14.6006 -7 -19.3008 -5 -20.7002z\" />\n    <glyph glyph-name=\"vuejs\" unicode=\"&#xf41f;\" \nd=\"M356.9 383.7h91.0996l-224 -383.7l-224 383.7h176l48 -88.6006l56 88.6006h76.9004zM55.7002 351.7l168.3 -288.2l168.2 288.2h-53.7998l-114.4 -198.2l-114.5 198.2h-53.7998z\" />\n    <glyph glyph-name=\"angular\" unicode=\"&#xf420;\" \nd=\"M185.7 179.9l38.0996 91.5996l38.1006 -91.5996h-76.2002zM223.8 416l207.8 -74.4004l-31.7998 -275.699l-176 -97.9004l-176 97.9004l-31.7998 275.699zM354 74.2002l-130.2 292.3l-130.1 -292.3h48.7002l26.1992 65.3994h110.601l26.2002 -65.3994h48.5996z\" />\n    <glyph glyph-name=\"aviato\" unicode=\"&#xf421;\" horiz-adv-x=\"640\" \nd=\"M107.2 164.5l-19 41.7998h-52.1006l-19 -41.7998h-17.0996l62.2002 131.4l62.2002 -131.4h-17.2002zM62.2002 262.6l-19.6006 -42.5h39.2002zM174.9 160.2l-62.2002 131.399h17.0996l45.1006 -96l45.0996 96h17zM255.5 164.5v127.1h15.5v-127.1h-15.5zM464.6 280.1\nv-115.6h-17.2998v115.6h-41.2002v11.5h99.6006v-11.5h-41.1006zM640 229.2c0 -9.2002 -1.7002 -17.7998 -5.09961 -25.7998c-3.40039 -8 -8.2002 -15.1006 -14.2002 -21.1006s-13.1006 -10.7998 -21.1006 -14.2002c-8 -3.39941 -16.5996 -5.09961 -25.7998 -5.09961\ns-17.7998 1.7002 -25.7998 5.09961c-8 3.40039 -15.0996 8.2002 -21.0996 14.2002s-10.8008 13 -14.2002 21.1006c-3.40039 8 -5.10059 16.5996 -5.10059 25.7998s1.7002 17.7998 5.10059 25.7998c3.39941 8 8.2002 15.0996 14.2002 21.0996s13 8.40039 21.0996 11.9004\nc8 3.40039 16.5996 5.09961 25.7998 5.09961s17.7998 -1.69922 25.7998 -5.09961s15.1006 -5.7998 21.1006 -11.9004c6 -6 10.7002 -13.0996 14.2002 -21.0996c3.39941 -8 5.09961 -16.5996 5.09961 -25.7998zM624.5 229.2c0 7.2998 -1.2998 14 -3.90039 20.2998\nc-2.59961 6.2998 -6.19922 11.7002 -10.7998 16.2998c-4.59961 4.60059 -10 8.2002 -16.2002 10.9004c-6.19922 2.7002 -12.7998 4 -19.7998 4s-13.5996 -1.2998 -19.7998 -4s-11.5996 -6.2998 -16.2002 -10.9004c-4.59961 -4.59961 -8.2002 -10 -10.7998 -16.2998\ns-3.90039 -13.0996 -3.90039 -20.2998c0 -7.2998 1.30078 -14 3.90039 -20.2998c2.59961 -6.30078 6.2002 -11.7002 10.7998 -16.3008c4.60059 -4.59961 10 -8.19922 16.2002 -10.8994s12.7998 -4 19.7998 -4s13.6006 1.2998 19.7998 4\nc6.2002 2.7002 11.6006 6.2998 16.2002 10.8994c4.60059 4.60059 8.2002 10 10.7998 16.3008c2.60059 6.2998 3.90039 13.0996 3.90039 20.2998zM529.7 132.5c6 -0.900391 10.5 -6 10.7002 -12.2998c0 -6.7998 -5.60059 -12.4004 -12.4004 -12.4004\ns-12.4004 5.60059 -12.4004 12.4004c0 6.2002 4.60059 11.2998 10.5 12.2002v5.7998l-80.2998 -9v-5.40039c5.60059 -1.09961 9.90039 -6.09961 9.90039 -12.0996c0 -6.7998 -5.60059 -10.2002 -12.4004 -10.2002s-12.3994 3.40039 -12.3994 10.2002\nc0 5.89941 4.19922 11 9.89941 12.0996v4.90039l-28.3994 -3.2002v-23.7002h5.89941v-13.7998h-5.89941v6.59961h-5v-6.59961h-5.90039v13.7998h5.90039v23.2002l-38.3008 -4.2998c-8.09961 -11.5 -19 -13.6006 -19 -13.6006l0.100586 -6.69922l5.09961 -0.200195\nl0.100586 -12.1006h-4.10059l-0.0996094 5h-5.2002l-0.0996094 -5h-4.10059l0.100586 12.1006l5.09961 0.200195l0.0996094 6.69922s-10.8994 2.2002 -19 13.6006l-38.2998 4.2998v-23.2002h5.90039v-13.7998h-5.90039v6.59961h-5v-6.59961h-5.89941v13.9004h5.89941\nv23.6992l-28.3994 3.2002v-4.89941c5.59961 -1.10059 9.89941 -6.10059 9.89941 -12.1006c0 -6.7998 -5.59961 -10.2002 -12.3994 -10.2002c-6.80078 0 -12.4004 3.40039 -12.4004 10.2002c0 5.90039 4.2002 11 9.90039 12.1006v5.39941l-80.3008 9v-5.7998\nc5.90039 -0.900391 10.5 -6 10.5 -12.2002c0 -6.7998 -5.59961 -12.3994 -12.3994 -12.3994s-12.4004 5.59961 -12.4004 12.3994c0 6.2002 4.60059 11.2998 10.5 12.2002v6.2998l-88.8994 10l242.899 -13.5c-0.599609 2.2002 -1.09961 4.60059 -1.39941 7.2002\nc-0.300781 2.09961 -0.5 4.2002 -0.600586 6.5l-64.7998 8.09961l64.9004 -1.89941c0 0.399414 0 0.799805 0.0996094 1.09961c2.7998 17.2002 25.5 23.7002 25.5 23.7002l1.09961 26.4004h-23.5996l-19 -41.8008h-17.0996l62.1992 131.4l62.2002 -131.4h-17.0996\nl-19 41.8008h-23.7998l1.09961 -26.3008s22.7002 -6.5 25.5 -23.6992c0 -0.400391 0.0996094 -0.700195 0.0996094 -1.10059l64.9004 1.90039l-64.7998 -8.10059c-0.100586 -2.2998 -0.299805 -4.5 -0.600586 -6.5c-0.299805 -2.59961 -0.799805 -5 -1.39941 -7.19922\nl242.899 13.3994l-88.8994 -10v-6.2998zM328.9 220.1h17.8994l1.7002 40.3008l1.7002 -40.3008h17.8994l-19.5996 42.5z\" />\n    <glyph glyph-name=\"ember\" unicode=\"&#xf423;\" horiz-adv-x=\"640\" \nd=\"M639.9 193.4c1.09961 -10.8008 -5.30078 -14.3008 -5.30078 -14.3008s-26.5996 -19.5996 -47 -13.6992c-20.3994 5.89941 -21.5 43.1992 -21.5 43.1992h-1.89941l-20.7002 -57.1992s-8.2998 -27.9004 -20.7002 -22.8008\nc-12.3994 5.10059 -12.0996 18.6006 -12.0996 18.6006s-19.2998 -21.2998 -54.7998 -18.6006c-31.1006 2.30078 -41.1006 26.7002 -41.1006 26.7002s-20.7998 -14.3994 -79.0996 -25.8994c-26.1006 -2.90039 -44.6006 12.8994 -44.6006 12.8994\nc-2.39941 -2.39941 -18 -10.2002 -18 -10.2002s-22.2998 -10.2998 -30.8994 5.30078c-8.60059 15.5996 -3 63.6992 -3 63.6992h-1.60059s-12.8994 -26.2998 -19.5996 -49.8994c-6.7002 -23.6006 -15 -21.2002 -15 -21.2002s-15.2998 -1.40039 -18.7998 11.4004\nc-3.5 12.8994 5.59961 59.6992 5.59961 59.6992l-1.2998 -0.299805s-0.799805 1.40039 -12.5996 -23.5996c-20.1006 -48.9004 -24.9004 -50 -36.5 -47.9004c-11.6006 2.10059 -12.1006 16.7002 -12.1006 16.7002l-15.8994 -8.7998s-38.6006 -16.6006 -58.8008 -1.2998\nc-13.3994 10.1992 -18 22.1992 -19.5996 29.6992c0 0 -17 1.80078 -28.0996 6.10059c-11.1006 4.2998 0.0996094 18.2998 0.0996094 18.2998s3.5 5.2998 10 0s18.7998 -2.90039 18.7998 -2.90039c1 8.5 2.5 19.7002 7.7998 31.5c11 24.7002 27.6006 33 41.3008 33.3008\nc13.6992 0.199219 23.3994 -3.5 31.6992 -15.3008c18.6006 -45.8994 -49.3994 -69.1992 -49.3994 -69.1992s-1.7998 -12.1006 16.7002 -11.8008c18.5996 0.200195 46.7998 20.4004 46.7998 20.4004c1.2998 15.4004 12.0996 63.5 15 70.7002\nc2.89941 7.2002 14.2002 5.89941 14.2002 5.89941s8.89941 1.90039 10.5 -7.5c1.69922 -9.39941 -6.40039 -47.5996 -6.40039 -47.5996l1.2998 -1.59961c0.799805 3.69922 20.4004 36.5 20.4004 36.5s11.2998 19.5996 28.5 18.7998s-0.799805 -53.5 -0.799805 -53.5\nl1.2998 -1.60059l1.2998 2.40039c2.2002 5.90039 27.7002 44.5996 27.7002 44.5996s9.59961 11.3008 18.5 8.60059c8.7998 -2.60059 9.39941 -6.7002 9.89941 -14.2002s-7 -52.0996 -7 -52.0996s-4.2998 -29.2002 5.40039 -28.7002s20.2002 10.7002 20.2002 10.7002\ns7.5 57.5996 12.5996 105.1c5.10059 47.5 27.1006 79.5 27.1006 79.5s6.5 10 23.5 16.7002c11.1992 4 23.3994 1.2998 29.1992 -23.1006c9.5 -41 -23.2998 -87.8994 -36.8994 -105.199c5.89941 5.7998 15.7998 12.0996 27.2002 5.2998\nc40.2998 -25.2998 7.2998 -80.9004 7.2998 -80.9004c11.7998 3.7998 33 18 33 18s0.5 6.10059 0.700195 7.5c7.19922 41.2998 32 56.2002 36.5996 59.7002c4.7998 3.59961 47.0996 19.7998 49 -24s-52.9004 -59.0996 -52.9004 -59.0996s4.80078 -12.6006 25 -9.40039\nc20.2002 3.2002 43.3008 22.7998 43.3008 22.7998c0.799805 18 12.5996 61 15 67.2002c2.39941 6.2002 17.1992 6.5 18.7998 3c2.2002 -7 0.299805 -37.5996 0.299805 -37.5996l1.59961 0.5c5.90039 17.5 18.3008 31.1992 18.3008 31.1992s9.89941 9.7002 18 7.30078\nc8.09961 -2.30078 5.09961 -30.4004 5.09961 -30.4004s-4.2998 -30.7002 9.40039 -32c13.6992 -1.40039 29.2998 10.7002 29.2998 10.7002s9.59961 3.89941 10.7002 -6.7998zM61.9004 188.1c0 0 6.19922 -1.89941 19.8994 7.60059\nc13.7002 9.39941 16.4004 24.3994 9.10059 31.3994c-7.2002 6.90039 -28.2002 -7 -29 -39zM334.7 311.9c0 0 -15.9004 -54.5 -16.4004 -70.7002c0 0 44.5 72 40 96.2002c-4.5 24.1992 -23.5996 -25.5 -23.5996 -25.5zM357.5 173.5\nc12.5996 33.0996 -3.59961 45.5 -3.59961 45.5s-23.4004 12.9004 -33.3008 -20.2002c-9.89941 -33.0996 -6.39941 -44.8994 -6.39941 -44.8994s30.7002 -13.4004 43.2998 19.5996zM442.1 188.1c0 0 15.7002 -1.09961 26.4004 14.2002s1.2998 25.5 1.2998 25.5\ns-8.59961 11.1006 -19.5996 -9.09961c-11.1006 -20.1006 -8.10059 -30.6006 -8.10059 -30.6006z\" />\n    <glyph glyph-name=\"font-awesome-flag\" unicode=\"&#xf425;\" \nd=\"M444.373 88.5762c0 -7.16797 -6.14453 -10.2402 -13.3125 -13.3125c-28.6719 -12.2881 -59.3916 -23.5518 -92.1592 -23.5518c-46.0801 0 -67.584 28.6719 -122.88 28.6719c-39.9365 0 -81.9209 -14.3359 -115.713 -29.6953\nc-2.04785 -1.02441 -4.0957 -1.02441 -6.14355 -2.04883v-77.8232c0 -21.4053 -16.1221 -34.8164 -33.792 -34.8164c-19.4561 0 -34.8164 15.3604 -34.8164 34.8164v374.783c-13.3115 10.2402 -22.5273 26.624 -22.5273 45.0566c0 31.7441 25.5996 57.3438 57.3438 57.3438\ns57.3438 -25.5996 57.3438 -57.3438c0 -18.4326 -8.19141 -34.8164 -22.5273 -45.0566v-31.7432c4.12402 1.37402 58.7676 28.6719 114.688 28.6719c65.2705 0 97.6758 -27.6484 126.976 -27.6484c38.9121 0 81.9209 27.6484 92.1602 27.6484\nc8.19238 0 15.3604 -6.14453 15.3604 -13.3125v-240.64z\" />\n    <glyph glyph-name=\"gitter\" unicode=\"&#xf426;\" horiz-adv-x=\"384\" \nd=\"M66.4004 125.5h-50.4004v322.5h50.4004v-322.5zM166.9 371.9v-435.9h-50.4004v435.9h50.4004zM267.5 371.9v-435.9h-50.4004v435.9h50.4004zM368 372v-247h-50.4004v247h50.4004z\" />\n    <glyph glyph-name=\"hooli\" unicode=\"&#xf427;\" horiz-adv-x=\"640\" \nd=\"M144.5 96v16c12.2998 -6.59961 25.0996 -12.2002 38.2998 -16.7998zM202.2 101.3c29.5 -10.7002 55.3994 -13.5 75.2998 -13.2998c-24.7998 -7 -58.2002 -5.2998 -94.7002 7.2002l19.4004 0.799805v5.2998zM611.1 216.5c-16 0 -28.8994 13 -28.8994 28.9004\nc0 15.8994 13 24.5 28.8994 24.5c16 0 28.9004 -8.5 28.9004 -24.5s-13 -28.9004 -28.9004 -28.9004zM582.1 96v110.5h57.9004v-110.5h-57.9004zM508.4 96v168l57.8994 27.2998v-195.3h-57.8994zM477.4 215.4c18.0996 -18.1006 16.6992 -33.8008 16.7998 -52.6006\nc0 -18.7002 1.39941 -34.2998 -16.7998 -52.5c-18.1006 -18.2002 -50.4004 -17.0996 -50.4004 -17.0996s-32.2002 -1.10059 -50.4004 17.0996c-18.1992 18.2002 -16.7998 33.7998 -16.7998 52.5s-1.39941 34.4004 16.7998 52.6006\nc18.1006 18.1992 50.4004 17.0996 50.4004 17.0996s32.2002 1.09961 50.4004 -17.0996zM437.6 143.5v40.4004c0 8.7998 -7.2998 10.8994 -10.6992 10.8994c-3.40039 0 -10.7002 -2.2002 -10.7002 -10.8994v-40.4004c0 -3.59961 1.7998 -12.5 10.7002 -12.5\nc8.89941 0 10.6992 8.90039 10.6992 12.5zM331.4 215.4c18.1992 -18.1006 16.6992 -33.8008 16.6992 -52.3008c0 -18.6992 1.5 -34.2998 -16.6992 -52.5c-18.1006 -18.1992 -50.4004 -17.0996 -50.4004 -17.0996s-32.2002 -1.09961 -50.4004 17.0996\nc-18.1992 18.2002 -16.7998 33.8008 -16.7998 52.5c0 15.6006 -0.899414 29.1006 9.2998 43.7002c-16 11.7998 -58 37.4004 -99.8994 58.2998v-54.2998c8 13.7002 22.7002 22 38.5 21.9004c27.2002 0 40.5996 -18.7002 40.5996 -37.4004v-93.8994\nc-20.3994 7.5 -39.7002 17.3994 -57.7002 29.5996v48.7002c0 8.09961 -1.5 15 -10.5996 15s-10.7998 -11.2998 -10.7998 -18.2002v-29.7998l-4.5 3.59961c-22.9004 18.9004 -40.2998 35.6006 -53.4004 50.2998v-31c11 -9.7998 23.6006 -20.1992 38.4004 -31.3994\nc6.39941 -4.90039 12.8994 -9.40039 19.3994 -13.6006v-28.5996h-57.8994v73.7002c-86.7002 78 -61.7998 110.8 -61.7998 110.8c8.2998 18.2998 42.8994 22.2002 97.2998 0.0996094l22.5 10.6006v-20.7002c29.5996 -14.5996 63.8994 -31.5 102.1 -61.0996\nc1.60059 2.09961 3.40039 4.09961 5.2998 6c18.2002 18.1992 50.4004 17.0996 50.4004 17.0996s32.2002 1.09961 50.4004 -17.0996zM65.2002 264l29.2002 13.7002c-26.9004 10.0996 -50.9004 13.5 -64.4004 2.09961c-3.7002 -3.09961 -13.5 -24.5996 35.2002 -79.0996\nv63.2998zM291.7 143.5v40.4004c0 8.7998 -7.2998 10.8994 -10.7002 10.8994s-10.7002 -2.2002 -10.7002 -10.8994v-40.4004c0 -3.59961 1.7998 -12.5 10.7002 -12.5s10.7002 8.90039 10.7002 12.5z\" />\n    <glyph glyph-name=\"strava\" unicode=\"&#xf428;\" horiz-adv-x=\"384\" \nd=\"M158.4 448l150.199 -292h-88.5l-61.6992 116.1l-62.2002 -116.1h-89.2002zM308.6 156h67.6006l-111.5 -220l-112.2 220h67.5996l44.6006 -88.2002z\" />\n    <glyph glyph-name=\"stripe\" unicode=\"&#xf429;\" horiz-adv-x=\"640\" \nd=\"M165 303.3l0.0996094 -38.5h33.7002v-37.7998h-33.7002v-63.2002c0 -26.2002 28 -18 33.7002 -15.7002v-33.7998c-5.89941 -3.2002 -16.5996 -5.89941 -31.2002 -5.89941c-26.2998 0 -46.0996 17 -46.0996 43.2998l0.200195 142.399zM254.1 251.7\nc10.4004 19.0996 31.1006 15.2002 37.1006 13.0996v-40.7998c-5.7002 1.7998 -23.4004 4.5 -33.9004 -9.2998v-103.101h-44.2998v153.2h38.4004zM346.4 324v-36.2002l-44.6006 -9.5v36.2002zM44.9004 219.7c0 -20 67.8994 -10.5 67.8994 -63.4004\nc0 -32 -25.3994 -47.7998 -62.2998 -47.7998c-15.2998 0 -32 3 -48.5 10.0996v40c14.9004 -8.09961 33.9004 -14.1992 48.5996 -14.1992c9.90039 0 17 2.69922 17 10.8994c0 21.2002 -67.5 13.2002 -67.5 62.4004c0 31.3994 24 50.2002 60 50.2002\nc14.7002 0 29.4004 -2.30078 44.1006 -8.10059v-41.7998c-13.5 7.2998 -30.7002 11.4004 -44.2002 11.4004c-9.2998 -0.100586 -15.0996 -2.80078 -15.0996 -9.7002zM640 186.4c0 -4.30078 -0.400391 -13.6006 -0.599609 -15.9004h-86.9004\nc2 -20.7998 17.2002 -26.9004 34.5 -26.9004c17.5996 0 31.5 3.7002 43.5996 9.80078v-33.4004c-12.0996 -6.7002 -28 -11.5 -49.1992 -11.5c-43.2002 0 -73.5 24.7002 -73.5 78.2002c0 45.2002 25.6992 81.0996 67.8994 81.0996s64.2002 -35.8994 64.2002 -81.3994z\nM552.1 203.2h45.9004c0 20 -11.5996 28.3994 -22.5 28.3994c-11.0996 0 -23.4004 -8.39941 -23.4004 -28.3994zM439.2 267.8c31.2002 0 60.5996 -28.0996 60.5 -79.7002c0 -56.3994 -29 -79.5996 -60.7998 -79.5996c-15.5 0 -25 6.5 -31.4004 11.2002l-0.0996094 -50.2002\nl-44.4004 -9.40039v204.801h39.0996l2.30078 -11c6.19922 5.69922 17.3994 13.8994 34.7998 13.8994zM428.6 145.3c16.5 0 27.5 17.9004 27.4004 41.7998c0 23.2002 -11.2002 41.4004 -27.4004 41.4004c-10.1992 0 -16.5996 -3.7002 -21.1992 -8.7998l0.299805 -66\nc4.2998 -4.60059 10.5 -8.40039 20.8994 -8.40039zM301.9 111.6v153.2h44.5996v-153.2h-44.5996z\" />\n    <glyph glyph-name=\"stripe-s\" unicode=\"&#xf42a;\" horiz-adv-x=\"384\" \nd=\"M155.3 293.4c0 -64.2002 218 -33.7002 218 -203.9c0 -102.6 -81.7002 -153.6 -200.3 -153.6c-44.8916 0.101562 -114.78 14.6172 -156 32.3994v128.5c47.9004 -26 108.9 -45.5 156.1 -45.5c31.8008 0 54.7002 8.5 54.7002 34.9004c0 68.0996 -216.8 42.5 -216.8 200.399\nc0 101 77.0996 161.4 192.8 161.4c47.2998 0 94.5 -7.2002 141.8 -26.0996v-134.301c-43.3994 23.4004 -98.5 36.7002 -141.899 36.7002c-29.7998 0 -48.4004 -8.59961 -48.4004 -30.8994z\" />\n    <glyph glyph-name=\"typo3\" unicode=\"&#xf42b;\" \nd=\"M178.7 369.6c0 -66.3994 83.3994 -264.899 140.6 -264.899c6.90039 0 11.5 0 18.5 2.2998c-49.3994 -79.5 -110.399 -139 -146.7 -139c-77.2998 0 -184.1 234 -184.1 337.5c0 16.2998 3.90039 29.4004 9.2998 37.0996c27 32.4004 106.8 57.9004 176.3 66.4004\nc-8.5 -7 -13.8994 -14.7002 -13.8994 -39.4004zM301.5 416c71.7998 0 138.8 -11.5996 138.8 -52.5c0 -82.5996 -52.5 -182.3 -78.7998 -182.3c-47.9004 0 -101.7 132.1 -101.7 198.5c0 30.8994 11.6006 36.2998 41.7002 36.2998z\" />\n    <glyph glyph-name=\"amazon-pay\" unicode=\"&#xf42c;\" horiz-adv-x=\"640\" \nd=\"M14 122.7c2.2998 4.2002 5.2002 4.89941 9.7002 2.5c10.3994 -5.60059 20.5996 -11.4004 31.2002 -16.7002c33.6992 -16.8047 90.7744 -37.5469 127.399 -46.2998c17.2734 -4.16797 45.5869 -9.4541 63.2002 -11.7998c22.083 -2.96875 58.0898 -5.37793 80.3721 -5.37793\nc4.03809 0 10.5908 0.0800781 14.6279 0.177734c17.4004 0.399414 34.7998 1.7998 52.0996 3.7998c46.7393 5.44824 119.897 24.623 163.301 42.7998c2.89941 1.2002 5.89941 2 9.09961 1.2002c6.7002 -1.7998 9 -9 4.09961 -13.9004\nc-2.47168 -2.27246 -6.77246 -5.58789 -9.59961 -7.39941c-30.7002 -21.1006 -64.2002 -36.4004 -99.5996 -47.9004c-20.3311 -6.55176 -53.9756 -14.4365 -75.1006 -17.5996c-14.6006 -2.23633 -38.4346 -4.38672 -53.2002 -4.7998\nc-0.694336 -0.0419922 -1.81445 -0.176758 -2.5 -0.300781h-21.0996c-0.685547 0.124023 -1.80469 0.258789 -2.5 0.300781c-3.59961 0.199219 -7.2002 0.299805 -10.7002 0.399414c-13.9971 0.634766 -36.5762 3.00879 -50.3994 5.2998\nc-22.7275 3.7041 -58.7471 13.0674 -80.4004 20.9004c-44.8652 16.1797 -110.094 55.1562 -145.6 87c-1.80078 1.59961 -3 3.7998 -4.40039 5.7002v2zM172 382.9c2.7998 0 5.5 0 8.2998 -0.100586c3.2998 -0.5 6.60059 -0.799805 9.7998 -1.5\nc21.3008 -4.39941 35.4004 -17.2998 43.9004 -36.8994c6.90039 -15.9004 8.59961 -32.7002 8.09961 -49.8008c-0.399414 -15.3994 -3.2998 -30.1992 -10.2998 -44.0996c-9.2002 -18.4004 -23.3994 -30.9004 -43.7998 -34.9004c-22.5 -4.39941 -43.0996 0.5 -61 15.4004\nc-0.5 0.5 -1.09961 1 -2.2002 1.90039v-72.4004c0 -1 0 -2 -0.0996094 -3c-0.299805 -3 -2.10059 -5 -5 -5c-7 -0.0996094 -14.1006 -0.0996094 -21.1006 0c-2.89941 0.0996094 -4.69922 2 -4.89941 5c-0.100586 1 -0.100586 2 -0.100586 3v209.3\nc0 6.90039 1.30078 8.2002 8.2002 8.2002h11.5c4.60059 0 6.90039 -2 7.60059 -6.59961c0.5 -2.7002 0.899414 -5.5 1.2998 -8.2002c0.0439453 -0.405273 0.222656 -1.0332 0.399414 -1.40039c2.5 1.90039 4.7002 3.7002 7.10059 5.40039\nc9.39941 6.90625 26.4238 13.6709 38 15.0996zM124.6 341c0.100586 -14.0996 0 -28 0 -42.0996c0 -14.1006 0.100586 -28.1006 0 -42.2002c-0.00488281 -0.0703125 -0.00878906 -0.183594 -0.00878906 -0.253906c0 -1.10547 0.765625 -2.46973 1.70898 -3.0459\nc11.2002 -7.90039 23.4004 -13.3008 37.4004 -13.9004c20.2002 -0.900391 35.7998 7.2002 42.5996 28.5c3.2002 10 4 20.2002 4 30.5996c0 11.2002 -1 22.3008 -4.89941 33c-6.40039 17.5 -18.6006 24.8008 -33.5 25.9004\nc-16.8008 1.2998 -31.9004 -3.7002 -45.6006 -13.2002c-0.945312 -0.556641 -1.71289 -1.90039 -1.71289 -2.99805c0 -0.0830078 0.00585938 -0.21875 0.0126953 -0.301758zM330.3 382.9c4 0 8 0 11.9004 0.0996094c3.59961 -0.5 7.2002 -0.799805 10.7998 -1.2998\nc7.7002 -1.10059 15.0996 -3.10059 21.7998 -7.10059c11.6006 -6.89941 17.1006 -17.5 19 -30.3994c0.5 -3.29297 0.905273 -8.66895 0.905273 -12c0 -0.248047 -0.00195312 -0.651367 -0.00488281 -0.900391v-106\nc0.00195312 -0.128906 0.00390625 -0.336914 0.00390625 -0.46582c0 -0.645508 -0.046875 -1.69141 -0.104492 -2.33398c-0.0742188 -2.57422 -2.22461 -4.67969 -4.7998 -4.7002c-5.39941 -0.0996094 -10.8994 -0.0996094 -16.2998 0\nc-2.90039 0.100586 -4.7998 2.10059 -5.40039 5.2002c-0.699219 3.59961 -1.19922 7.2002 -1.7998 11c-0.481445 -0.245117 -1.19824 -0.737305 -1.59961 -1.09961c-11.7998 -9.7002 -25.2002 -16.1006 -40.2998 -18.4004c-13.1006 -2 -26 -1.2002 -37.9004 5.40039\nc-12.4004 6.89941 -19.4004 17.6992 -21.4004 31.6992c-1.5 10.5 -0.799805 20.9004 3.90039 30.7002c6.09961 12.6006 16.5 20.4004 29.4004 24.9004c10.7998 3.7998 22 4.5 33.2998 3.89941c8.95312 -0.556641 23.2891 -2.75195 32 -4.89941\nc0.399414 -0.100586 0.799805 0 1.2998 -0.100586c0.0898438 0.381836 0.179688 1.00879 0.200195 1.40039c-0.100586 8.2998 0 16.5996 -0.299805 24.9004c-0.200195 5.89941 -1.60059 11.5996 -5.30078 16.3994c-4.19922 5.5 -10.2998 7.40039 -16.7998 8.40039\nc-12.5 1.89941 -24.8994 0.899414 -37.2002 -1.40039c-7.89941 -1.5 -15.6992 -3.7002 -23.5 -5.7002c-4.69922 -1.19922 -6.69922 0.100586 -6.7998 4.90039c-0.0996094 3.2998 0.100586 6.59961 0 9.90039c-0.0996094 3.89941 1.7002 6.5 5.2998 7.69922\nc5.90039 2 11.8008 4.2002 17.9004 5.80078c7.86426 1.92188 20.8115 3.75879 28.9004 4.09961c0.899414 0.0996094 1.89941 0.299805 2.89941 0.400391zM365.3 255.2c-0.0996094 4.7002 0.100586 9.2998 0.100586 14.0996s-0.100586 9.5 0 14.2998\nc0 1.60059 -0.5 2.40039 -2.10059 2.60059c-8.39941 1.09961 -16.5996 2.7002 -25 3.39941c-1.95117 0.227539 -5.12891 0.412109 -7.09375 0.412109c-4.99316 0 -12.9258 -1.16992 -17.7061 -2.61133c-8 -2.60059 -13.9004 -7.30078 -16.4004 -15.6006\nc-0.779297 -2.57422 -1.41211 -6.84766 -1.41211 -9.53809c0 -2.78613 0.677734 -7.2041 1.5127 -9.86133c1.55762 -5.40918 7.11328 -11.3672 12.3994 -13.3008c5.40039 -2.19922 11.1006 -2.39941 16.8008 -1.7998c13.8994 1.40039 26.1992 6.7998 37.3994 14.9004\nc0.832031 0.543945 1.50684 1.79199 1.50684 2.78613c0 0.0595703 -0.00292969 0.155273 -0.00683594 0.213867zM625.2 125.8v-17.2998c-0.700195 -3.59961 -1.2998 -7.2998 -2.10059 -10.9004c-4.39941 -20.2998 -11.8994 -39.1992 -24.6992 -55.5996\nc-3.27148 -3.9209 -8.96094 -9.92383 -12.7002 -13.4004c-1.1416 -1.04102 -3.29199 -2.16113 -4.7998 -2.5c-2.90039 -0.699219 -4.60059 1.2002 -4.10059 4.10059c0.201172 0.852539 0.649414 2.19629 1 3c5.7998 14.7998 11.7002 29.7002 15.7998 45.0996\nc2.10059 7.60059 3.90039 15.2998 3.5 23.2998c-0.199219 5.2002 -2.5 9 -7.59961 10.4004c-3.89746 1.15332 -10.3486 2.36328 -14.4004 2.7002c-11.3994 0.899414 -22.8994 0.200195 -34.2998 -0.900391c-7.7998 -0.799805 -15.5 -1.7002 -23.2998 -2.5\nc-0.504883 -0.0576172 -1.32617 -0.103516 -1.83398 -0.103516c-0.100586 0 -0.264648 0.000976562 -0.366211 0.00390625c-1.5 -0.100586 -3.2002 0.299805 -3.59961 1.7998c-0.111328 0.383789 -0.201172 1.01855 -0.201172 1.41797\nc0 0.764648 0.314453 1.92188 0.701172 2.58203c0.838867 1.1582 2.49609 2.72656 3.7002 3.5c12.0996 8.2998 25.6992 12.9004 40 15.5996c7.29883 1.34375 19.2461 2.43457 26.668 2.43457c3.46484 0 9.0791 -0.239258 12.5312 -0.53418\nc5.92773 -0.371094 15.335 -2.11816 21 -3.90039c4.30078 -1.39941 8.10059 -3.2998 9.10059 -8.2998zM493.1 249c0.300781 -0.700195 0.501953 -1.2998 0.902344 -2.40039c2.59961 7.7002 5.2002 15 7.7002 22.2002l34.7998 100\nc0.5 1.40039 1.09961 2.7002 1.59961 4.10059c0.932617 2.87988 4.14648 5.21777 7.17383 5.21777c0.145508 0 0.381836 -0.0078125 0.526367 -0.0185547c6.60059 0 13.2998 0.100586 19.9004 0c2.7998 0 4.09961 -1.59961 3.7002 -4.39941\nc-0.277344 -1.56641 -0.994141 -4.03027 -1.60059 -5.5c-23.3662 -59.9336 -46.8994 -119.801 -70.5996 -179.601c-2.1416 -5.27734 -6.2627 -13.5205 -9.2002 -18.3994c-8.7998 -14.9004 -22.4004 -21.7998 -39.5 -21.4004c-4.70801 0.18457 -12.2793 1.08008 -16.9004 2\nc-5.39941 0.900391 -7.2998 3.40039 -7.39941 8.90039c-0.100586 3.2666 -0.100586 6.56641 0 9.89941c0.0996094 3.5 1.7998 5 5.2002 4.80078c2.5 -0.200195 5 -0.800781 7.5 -1c1.30664 -0.148438 3.43359 -0.268555 4.74902 -0.268555\nc2.98828 0 7.75977 0.612305 10.6504 1.36816c7.2002 1.90039 12.2002 6.7998 15.2002 13.2998c3.40039 7.2998 6 15 9.2998 22.2998c1.90039 4.2002 1.5 7.7002 -0.200195 11.8008c-19.7998 48.5 -39.5 97 -59.1006 145.5\nc-0.649414 1.64453 -1.50098 4.37695 -1.90039 6.09961c-0.5 2.5 0.700195 4.5 3.2002 4.5c7.7002 0.0996094 15.2998 0 22.9004 -0.0996094c3.2002 0 5.2998 -1.90039 6.39941 -4.80078c2.10059 -5.59961 4.30078 -11.1992 6.30078 -16.8994\nc12.8994 -35.7666 25.7988 -71.5 38.6982 -107.2z\" />\n    <glyph glyph-name=\"cc-amazon-pay\" unicode=\"&#xf42d;\" horiz-adv-x=\"576\" \nd=\"M124.7 246.2c0.0996094 11.7998 0 23.5 0 35.2998v35.2998c0 1.2998 0.399414 2 1.39941 2.7002c11.5 8 24.1006 12.0996 38.2002 11.0996c12.5 -0.899414 22.7002 -7 28.1006 -21.6992c3.2998 -8.90039 4.09961 -18.2002 4.09961 -27.7002\nc0 -8.7002 -0.700195 -17.2998 -3.40039 -25.6006c-5.69922 -17.7998 -18.6992 -24.6992 -35.6992 -23.8994c-11.7002 0.5 -21.9004 5 -31.4004 11.7002c-0.900391 0.799805 -1.40039 1.59961 -1.2998 2.7998zM279.6 231.6c-5.19922 2 -8.7998 5.7002 -10.3994 11.2002\nc-1.7002 5.40039 -1.7002 10.7998 -0.100586 16.2002c2 6.90039 7 10.9004 13.7002 13.0996c6.7998 2.2002 13.7998 2.5 20.7998 1.90039c7 -0.700195 13.9004 -2 20.9004 -2.90039c1.40039 -0.199219 1.7998 -0.799805 1.7998 -2.19922c-0.0996094 -4 0 -8 0 -12\nc0 -3.90039 -0.0996094 -7.90039 0 -11.8008c0 -1.19922 -0.399414 -1.89941 -1.2998 -2.5c-9.40039 -6.7998 -19.7002 -11.2998 -31.2998 -12.5c-4.7998 -0.5 -9.5 -0.299805 -14.1006 1.5zM576 368v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48v352\nc0 26.5 21.5 48 48 48h480c26.5 0 48 -21.5 48 -48zM368.5 344.1c0.400391 -1.69922 0.900391 -3.39941 1.59961 -5.09961c16.5 -40.5996 32.9004 -81.2998 49.5 -121.9c1.40039 -3.5 1.7002 -6.39941 0.200195 -9.89941\nc-2.7998 -6.2002 -4.89941 -12.6006 -7.7998 -18.7002c-2.59961 -5.5 -6.7002 -9.5 -12.7002 -11.2002c-4.2002 -1.09961 -8.5 -1.2998 -12.8994 -0.899414c-2.10059 0.199219 -4.2002 0.699219 -6.30078 0.799805c-2.7998 0.200195 -4.19922 -1.10059 -4.2998 -4\nc-0.0996094 -2.7998 -0.0996094 -5.60059 0 -8.2998c0.100586 -4.60059 1.60059 -6.7002 6.2002 -7.5c4.7002 -0.800781 9.40039 -1.60059 14.2002 -1.7002c14.2998 -0.299805 25.7002 5.39941 33.0996 17.8994c2.90039 4.90039 5.60059 10.1006 7.7002 15.4004\nc19.7998 50.0996 39.5 100.3 59.2002 150.5c0.599609 1.5 1.09961 3 1.2998 4.59961c0.400391 2.40039 -0.700195 3.60059 -3.09961 3.7002c-5.60059 0.100586 -11.1006 0 -16.7002 0c-3.10059 0 -5.2998 -1.39941 -6.40039 -4.2998\nc-0.399414 -1.09961 -0.899414 -2.2998 -1.2998 -3.40039l-29.0996 -83.6992c-2.10059 -6.10059 -4.2002 -12.1006 -6.5 -18.6006c-0.400391 0.900391 -0.600586 1.40039 -0.800781 1.90039c-10.7998 29.8994 -21.5996 59.8994 -32.3994 89.7998\nc-1.7002 4.7002 -3.5 9.5 -5.2998 14.2002c-0.900391 2.5 -2.7002 4 -5.40039 4c-6.40039 0.0996094 -12.7998 0.200195 -19.2002 0.0996094c-2.2002 0 -3.2998 -1.59961 -2.7998 -3.7002zM242.4 242c1.69922 -11.7002 7.59961 -20.7998 18 -26.5996\nc9.89941 -5.5 20.6992 -6.2002 31.6992 -4.60059c12.7002 1.90039 23.9004 7.2998 33.8008 15.5c0.399414 0.299805 0.799805 0.600586 1.39941 1c0.5 -3.2002 0.900391 -6.2002 1.5 -9.2002c0.5 -2.59961 2.10059 -4.2998 4.5 -4.39941\nc4.60059 -0.100586 9.10059 -0.100586 13.7002 0c2.2998 0.0996094 3.7998 1.59961 4 3.89941c0.0996094 0.800781 0.0996094 1.60059 0.0996094 2.30078v88.7998c0 3.59961 -0.199219 7.2002 -0.699219 10.7998c-1.60059 10.7998 -6.2002 19.7002 -15.9004 25.4004\nc-5.59961 3.2998 -11.7998 5 -18.2002 5.89941c-3 0.400391 -6 0.700195 -9.09961 1.10059h-10c-0.799805 -0.100586 -1.60059 -0.300781 -2.5 -0.300781c-8.2002 -0.399414 -16.2998 -1.39941 -24.2002 -3.5c-5.09961 -1.2998 -10 -3.19922 -15 -4.89941\nc-3 -1 -4.5 -3.2002 -4.40039 -6.5c0.100586 -2.7998 -0.0996094 -5.60059 0 -8.2998c0.100586 -4.10059 1.80078 -5.2002 5.7002 -4.10059c6.5 1.7002 13.1006 3.5 19.7002 4.7998c10.2998 1.90039 20.7002 2.7002 31.0996 1.2002\nc5.40039 -0.799805 10.5 -2.39941 14.1006 -7c3.09961 -4 4.2002 -8.7998 4.39941 -13.7002c0.300781 -6.89941 0.200195 -13.8994 0.300781 -20.7998c0 -0.399414 -0.100586 -0.700195 -0.200195 -1.2002c-0.400391 0 -0.799805 0 -1.10059 0.100586\nc-8.7998 2.09961 -17.6992 3.59961 -26.7998 4.09961c-9.5 0.5 -18.8994 -0.0996094 -27.8994 -3.2002c-10.8008 -3.7998 -19.5 -10.2998 -24.6006 -20.7998c-4.09961 -8.2998 -4.59961 -17 -3.39941 -25.7998zM98.7002 341.1v-175.3c0 -0.799805 0 -1.7002 0.0996094 -2.5\nc0.200195 -2.5 1.7002 -4.09961 4.10059 -4.2002c5.89941 -0.0996094 11.7998 -0.0996094 17.6992 0c2.5 0 4 1.7002 4.10059 4.10059c0.0996094 0.799805 0.0996094 1.7002 0.0996094 2.5v60.7002c0.900391 -0.700195 1.40039 -1.2002 1.90039 -1.60059\nc15 -12.5 32.2002 -16.5996 51.0996 -12.8994c17.1006 3.39941 28.9004 13.8994 36.7002 29.1992c5.7998 11.6006 8.2998 24.1006 8.7002 37c0.5 14.3008 -1 28.4004 -6.7998 41.7002c-7.10059 16.4004 -18.9004 27.2998 -36.7002 30.9004\nc-2.7002 0.599609 -5.5 0.799805 -8.2002 1.2002h-7c-1.2002 -0.200195 -2.40039 -0.300781 -3.59961 -0.5c-11.7002 -1.40039 -22.3008 -5.80078 -31.8008 -12.7002c-2 -1.40039 -3.89941 -3 -5.89941 -4.5c-0.100586 0.5 -0.299805 0.799805 -0.400391 1.2002\nc-0.399414 2.2998 -0.700195 4.59961 -1.09961 6.89941c-0.600586 3.90039 -2.5 5.5 -6.40039 5.60059h-9.7002c-5.89941 0.0996094 -6.89941 -1 -6.89941 -6.80078zM493.6 109c-2.69922 0.700195 -5.09961 0 -7.59961 -1c-43.9004 -18.4004 -89.5 -30.2002 -136.8 -35.7998\nc-14.5 -1.7002 -29.1006 -2.7998 -43.7002 -3.2002c-26.5996 -0.700195 -53.2002 0.799805 -79.5996 4.2998c-17.8008 2.40039 -35.5 5.7002 -53 9.90039c-37 8.89941 -72.7002 21.7002 -106.7 38.7998c-8.7998 4.40039 -17.4004 9.2998 -26.1006 14\nc-3.7998 2.09961 -6.19922 1.5 -8.19922 -2.09961v-1.7002c1.19922 -1.60059 2.19922 -3.40039 3.69922 -4.7998c36 -32.2002 76.6006 -56.5 122 -72.9004c21.9004 -7.90039 44.4004 -13.7002 67.3008 -17.5c14 -2.2998 28 -3.7998 42.1992 -4.5\nc3 -0.0996094 6 -0.200195 9 -0.400391c0.700195 0 1.40039 -0.199219 2.10059 -0.299805h17.7002c0.699219 0.100586 1.39941 0.299805 2.09961 0.299805c14.9004 0.400391 29.7998 1.80078 44.5996 4c21.4004 3.2002 42.4004 8.10059 62.9004 14.7002\nc29.5996 9.60059 57.7002 22.4004 83.4004 40.1006c2.7998 1.89941 5.69922 3.7998 8 6.19922c4.2998 4.40039 2.2998 10.4004 -3.30078 11.9004zM544 136.7c-0.799805 4.2002 -4 5.7998 -7.59961 7c-5.7002 1.89941 -11.6006 2.7998 -17.6006 3.2998\nc-11 0.900391 -22 0.400391 -32.7998 -1.59961c-12 -2.2002 -23.4004 -6.10059 -33.5 -13.1006c-1.2002 -0.799805 -2.40039 -1.7998 -3.09961 -3c-0.600586 -0.899414 -0.700195 -2.2998 -0.5 -3.39941c0.299805 -1.30078 1.69922 -1.60059 3 -1.5\nc0.599609 0 1.19922 0 1.7998 0.0996094l19.5 2.09961c9.59961 0.900391 19.2002 1.5 28.7998 0.800781c4.09961 -0.300781 8.09961 -1.2002 12 -2.2002c4.2998 -1.10059 6.2002 -4.40039 6.40039 -8.7002c0.299805 -6.7002 -1.2002 -13.0996 -2.90039 -19.5\nc-3.5 -12.9004 -8.2998 -25.4004 -13.2998 -37.7998c-0.299805 -0.799805 -0.700195 -1.7002 -0.799805 -2.5c-0.400391 -2.5 1 -4 3.39941 -3.5c1.40039 0.299805 3 1.09961 4 2.09961c3.7002 3.60059 7.5 7.2002 10.6006 11.2002\nc10.6992 13.7998 17 29.5996 20.6992 46.5996c0.700195 3 1.2002 6.10059 1.7002 9.10059c0.200195 4.7002 0.200195 9.59961 0.200195 14.5z\" />\n    <glyph glyph-name=\"ethereum\" unicode=\"&#xf42e;\" horiz-adv-x=\"320\" \nd=\"M311.9 187.2l-151.9 -92.7998l-152 92.7998l152 260.8zM160 64.5996l152 92.8008l-152 -221.4l-152 221.4z\" />\n    <glyph glyph-name=\"korvue\" unicode=\"&#xf42f;\" horiz-adv-x=\"446\" \nd=\"M386.5 414c32.7002 0 59.5 -26.7998 59.5996 -59.5v-327c0 -32.7002 -26.5 -59.5 -59.5 -59.5h-327.1c-32.7002 0 -59.5 26.7998 -59.5 59.4004v327.1c0 32.7002 26.7998 59.5 59.5 59.5h327zM87.0996 327.2v-132h187.5l81.2002 132h-110.899l-61.8008 -116v116h-96z\nM248.9 55.0996h118.399l-88.5996 130.801h-191.5v-130.801h96v113.601z\" />\n    <glyph glyph-name=\"elementor\" unicode=\"&#xf430;\" \nd=\"M425.6 416c12.4004 0 22.4004 -10 22.4004 -22.4004v-403.199c0 -12.4004 -10 -22.4004 -22.4004 -22.4004h-403.199c-12.4004 0 -22.4004 10 -22.4004 22.4004v403.199c0 12.4004 10 22.4004 22.4004 22.4004h403.199zM164.3 92.5v199h-39.7998v-199h39.7998z\nM323.6 92.5v39.7998h-119.5v-39.7998h119.5zM323.6 172.1v39.8008h-119.5v-39.8008h119.5zM323.6 251.8v39.7998h-119.5v-39.7998h119.5z\" />\n    <glyph glyph-name=\"youtube-square\" unicode=\"&#xf431;\" \nd=\"M186.8 245.9l95.2002 -54.1006l-95.2002 -54.0996v108.2zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM406 191.7c0 0 0 59.5996 -7.59961 88.2002\nc-4.2002 15.7998 -16.5 28.1992 -32.2002 32.3994c-28.2998 7.7002 -142.2 7.7002 -142.2 7.7002s-113.9 0 -142.2 -7.7002c-15.7002 -4.2002 -28 -16.5996 -32.2002 -32.3994c-7.59961 -28.5 -7.59961 -88.2002 -7.59961 -88.2002s0 -59.6006 7.59961 -88.2002\nc4.2002 -15.7998 16.5 -27.7002 32.2002 -31.9004c28.2998 -7.59961 142.2 -7.59961 142.2 -7.59961s113.9 0 142.2 7.7002c15.7002 4.2002 28 16.0996 32.2002 31.8994c7.59961 28.5 7.59961 88.1006 7.59961 88.1006z\" />\n    <glyph glyph-name=\"flipboard\" unicode=\"&#xf44d;\" \nd=\"M0 416h448v-448h-448v448zM358.4 236.8v89.6006h-268.801v-268.801h89.6006v89.6006h89.5996v89.5996h89.6006z\" />\n    <glyph glyph-name=\"hips\" unicode=\"&#xf452;\" horiz-adv-x=\"640\" \nd=\"M251.6 290.4v-201.801c0 -1.89941 -0.899414 -2.7998 -2.7998 -2.7998h-40.8994c-1.60059 0 -2.7002 1.40039 -2.7002 2.7998v201.801c0 1.39941 1.09961 2.7998 2.7002 2.7998h40.8994c1.90039 0 2.7998 -0.900391 2.7998 -2.7998zM156.5 280\nc18.7002 -13.5 28 -31.9004 28 -55.2998v-136.101c0 -1.89941 -0.900391 -2.7998 -2.7002 -2.7998h-27.2998c-9.09961 0 -16.4004 7.2998 -16.4004 16.2998v122.601c0 0.899414 2.7002 27 -45.7998 27c-48.5996 0 -45.7998 -26.2002 -45.7998 -27v-136.101\nc0 -1.89941 -0.900391 -2.7998 -2.7998 -2.7998h-41c-1.7998 0 -2.7002 0.900391 -2.7002 2.7998v279.2c0 1.7998 0.900391 2.7002 2.7002 2.7002h40.8994c1.90039 0 2.80078 -0.900391 2.80078 -2.7002v-81.2002c15.1992 7.7002 31.6992 11.5 49.7998 11.4004\nc24 -0.0996094 44.2002 -6.2002 60.2998 -18zM634.9 169.9c5.5 -12.6006 6.59961 -25.6006 3.09961 -39.1006c-9.59961 -36.8994 -44.9004 -45.5 -45.5996 -45.7998c-10.5 -3.09961 -23.6006 -4.2998 -36.3008 -4.2998c-16.5996 0 -32.5996 2.7002 -48.1992 8.2002\nc-9.7002 3.39941 -14.6006 10.2998 -14.6006 20.6992v34.4004c0 2.09961 2.2998 3.7002 4.40039 2.2998c13.7002 -10.2002 34.0996 -19.0996 58.3994 -19.0996c23.3008 0 32.8008 4.5 36.5 13.5996c3 7.90039 -0.599609 16.1006 -12.1992 21.2002l-53.6006 23.5\nc-21.3994 9.40039 -33.7998 24 -37.2002 43.5996c-5.69922 33.7002 22.2002 53.3008 22.7002 53.7002c13.2002 9.60059 32 15.4004 58.5 15.4004c19 0 37.4004 -3.2998 55.1006 -9.90039c1.2998 -0.5 1.89941 -1.2998 1.89941 -2.59961v-44.7002\nc0 -2.09961 -2.2998 -3.40039 -4 -2.40039c-39.7002 20.7002 -76.5996 12.3008 -84 6.80078c-6.59961 -4.90039 -6 -12.5 2.60059 -16.1006l57.5996 -25.2998c16.5 -7.09961 28.0996 -18.4004 34.9004 -34.0996zM376.2 298.2c60.3994 0 108.7 -48.2998 108.6 -108.601\nc0 -60.1992 -48.2002 -108.699 -108.7 -108.699c-21.8994 0 -41.1992 6.39941 -57.6992 19.0996v-88.7998c0 -1.7998 -0.900391 -2.7002 -2.80078 -2.7002h-40.8994c-2.10059 0 -2.7002 1.90039 -2.7002 2.7002v183.5c0 83.3994 72.5 103.5 104.2 103.5zM376.2 127.3\nc34.8994 0 62.2998 27.9004 62.2002 62.2002c0 34.5996 -27.7002 62.2002 -62.2002 62.2002c-34.6006 0 -62.2002 -27.7002 -62.2002 -62.2002c0 -17.2002 6 -31.7998 18.2002 -44c12.0996 -12.0996 26.7998 -18.2002 44 -18.2002zM228.3 375.5\nc15.9004 0 28.9004 -12.7002 28.9004 -28.9004c0 -15.7998 -12.7002 -28.8994 -28.9004 -28.8994s-28.8994 13.2998 -28.8994 28.8994c0.0996094 16 13 28.9004 28.8994 28.9004z\" />\n    <glyph glyph-name=\"php\" unicode=\"&#xf457;\" horiz-adv-x=\"640\" \nd=\"M320 343.5c-171.3 0 -303.2 -72.2002 -303.2 -151.5s131.8 -151.5 303.2 -151.5c171.3 0 303.2 72.2002 303.2 151.5s-131.8 151.5 -303.2 151.5zM320 360.3c176.7 0 320 -75.2998 320 -168.3s-143.3 -168.3 -320 -168.3s-320 75.2998 -320 168.3s143.3 168.3 320 168.3z\nM218.2 205.5c7.39941 38.4004 -18.4004 34.2998 -56.4004 34.2998l-13.7002 -70.5996c34.3008 0 62.2002 -4.2002 70.1006 36.2998zM97.4004 97.7002l32.6992 168.7h70.7002c21.2002 0 36.7998 -5.5 46.5 -16.7002c18.6006 -21.4004 11.7998 -64.1006 -14.2998 -88.1006\nc-23.5996 -22.0996 -49.0996 -19.0996 -90.2002 -19.0996l-8.7002 -44.7998h-36.6992zM283.1 311.3h36.5l-8.69922 -44.7998c31.5 0 60.6992 2.2998 74.7998 -10.7002c14.7998 -13.5996 7.7002 -31 -8.2998 -113.1h-37c15.3994 79.3994 18.2998 86 12.6992 92\nc-5.39941 5.7998 -17.6992 4.59961 -47.3994 4.59961l-18.7998 -96.5996h-36.5zM505 205.5c7.40039 38.4004 -18.2002 34.2998 -56.4004 34.2998l-13.6992 -70.5996c33.3994 0 62.0996 -4.7998 70.0996 36.2998zM384.2 97.7002l32.7998 168.7h70.7002\nc21.2002 0 36.7998 -5.5 46.5 -16.7002c18.5996 -21.4004 11.7998 -64.1006 -14.2998 -88.1006c-23.1006 -21.5996 -47 -19.0996 -90.2002 -19.0996l-8.7002 -44.7998h-36.7998z\" />\n    <glyph glyph-name=\"quinscape\" unicode=\"&#xf459;\" horiz-adv-x=\"512\" \nd=\"M313.6 -26.5996c4.40039 -4.40039 8.10059 -9 13.3008 -12.5c-18.5029 -5.58008 -49.2031 -10.1074 -68.5283 -10.1074c-0.516602 0 -1.35547 0.00292969 -1.87207 0.00683594c-135 0 -244.5 109.5 -244.5 244.601c0 135.1 109.4 244.6 244.5 244.6\ns244.6 -109.5 244.6 -244.6c0 -35.3008 -6.89941 -67.4004 -20.2998 -97.7002c-3 5.7002 -7.2002 10.2002 -11.2002 15.2998c11.2002 93.5 -62.0996 176.6 -157 176.6c-87.2705 0 -158.1 -70.8281 -158.1 -158.1s70.8291 -158.1 158.1 -158.1h1zM313.5 -26.5\nl0.400391 -0.0996094zM391.9 142.4c54.7471 0 99.1992 -44.4326 99.1992 -99.1807v-0.0195312c0 -54.7588 -44.4414 -99.2002 -99.1992 -99.2002c-54.7588 0 -99.2002 44.4414 -99.2002 99.2002c0 54.7578 44.4414 99.2002 99.2002 99.2002z\" />\n    <glyph glyph-name=\"readme\" unicode=\"&#xf4d5;\" horiz-adv-x=\"576\" \nd=\"M528.3 401.5c26.4004 -0.200195 47.7002 -21.7002 47.7002 -48.0996v-245.7c0 -26.5 -21.5 -48 -48 -48h-89.7002c-102.1 0 -132.6 -24.4004 -147.3 -75c-0.799805 -2.7998 -5.2998 -2.7998 -6 0c-14.5996 50.5996 -45.0996 75 -147.3 75h-89.7002\nc-26.5 0 -48 21.5 -48 48v245.8c0 26.5 21.5 48 48 48h139.7c48.0996 0 89.7998 -33.2998 100.399 -80.2998c10.5 47 52.3008 80.2998 100.4 80.2998h139.8zM242 136.1h0.0996094v22.9004c0 2 -1.59961 3.5 -3.5 3.5h-160.399c-2 0 -3.5 -1.59961 -3.5 -3.5v-22.9004\nc0 -2 1.59961 -3.5 3.5 -3.5h160.3c2 0 3.5 1.60059 3.5 3.5zM242 197h0.0996094v22.9004c0 2 -1.59961 3.5 -3.5 3.5h-160.399c-2 0 -3.5 -1.60059 -3.5 -3.5v-22.9004c0 -2 1.59961 -3.5 3.5 -3.5h160.3c2 0 3.5 1.59961 3.5 3.5zM242 257.9h0.0996094v22.8994\nc0 2 -1.59961 3.5 -3.5 3.5h-160.399c-2 0 -3.5 -1.59961 -3.5 -3.5v-22.8994c0 -2 1.59961 -3.5 3.5 -3.5h160.3c2 0 3.5 1.59961 3.5 3.5zM501.3 136.2h0.100586v22.8994c0 2 -1.60059 3.5 -3.5 3.5h-160.4c-2 0 -3.5 -1.59961 -3.5 -3.5v-22.8994\nc0 -2 1.59961 -3.5 3.5 -3.5h160.3c2 0 3.5 1.59961 3.5 3.5zM501.3 197.1h0.100586v22.9004c0 2 -1.60059 3.5 -3.5 3.5h-160.4c-2 0 -3.5 -1.59961 -3.5 -3.5v-22.9004c0 -2 1.59961 -3.5 3.5 -3.5h160.3c2 0 3.5 1.60059 3.5 3.5zM501.3 258h0.100586v22.7998\nc0 2 -1.60059 3.5 -3.5 3.5h-160.4c-2 0 -3.5 -1.59961 -3.5 -3.5v-22.7998c0 -2 1.59961 -3.5 3.5 -3.5h160.3c2 0 3.5 1.59961 3.5 3.5z\" />\n    <glyph glyph-name=\"java\" unicode=\"&#xf4e4;\" horiz-adv-x=\"384\" \nd=\"M277.74 135.1c-94.5 -24.8994 -277 -13.2998 -224.5 12.1006c44.5 21.3994 80.5996 19 80.5996 19s-93.0996 -22.1006 -33 -30.1006c25.4004 -3.39941 76 -2.59961 123.101 1.30078c38.5 3.19922 77.1992 10.1992 77.1992 10.1992s-13.5996 -5.7998 -23.3994 -12.5z\nM192.34 167.2c-48.5 43.7998 -84.0996 82.2998 -60.2002 118.2c35.1006 52.5 132.2 78.0996 110.7 162.6c0 0 53.1602 -53.2002 -50.5 -135c-83.0996 -65.5996 -19 -103.1 0 -145.8zM306.94 343.4c-111.601 -64.7002 -91 -83.5 -64.1006 -121.301\nc28.7998 -40.5 -33.8994 -72.8994 -33.8994 -72.8994s31.1992 25.5996 6.5 54c-83.7002 96.3994 91.5996 140.2 91.5 140.2zM300.84 72.9004c96.1006 49.8994 51.6006 97.8994 20.6006 91.3994c-3.10352 -0.581055 -8.03125 -1.92578 -11 -3\nc1.71973 2.44629 5.39258 5.26855 8.19922 6.2998c61.3008 21.6006 108.5 -63.5996 -19.7998 -97.2998c0.649414 0.642578 1.5459 1.80762 2 2.60059zM348 10.5996c53 -23.8994 -115.16 -72 -319.4 -38.7998c-74.8994 12.1006 36.1006 54.5 56.4004 40.2002\nc0 0 -6.5 0.400391 -17.7002 -2c-10.7998 -2.2998 -45.0996 -13.4004 -26.7998 -21.2998c50.7998 -22.1006 233.7 -16.7998 291.6 0.700195c30.4004 9.2998 15.9004 21.1992 15.9004 21.1992zM124.44 52c0 0 -19.6006 -11.4004 13.8994 -15.2002\nc40.6006 -4.59961 61.2998 -4 106 4.5c7.46094 -4.46777 20.0938 -10.6504 28.2002 -13.7998c-100.2 -42.9004 -226.8 2.5 -148.1 24.5zM304.24 -45.2002c69.7998 13.2002 76.2002 29.7002 76.2002 29.7002c-3.30078 -43.5996 -144.9 -52.7998 -237.101 -46.9004\nc-60.5996 3.90039 -72.3994 13.7002 -72.3994 13.6006c57.5 -9.5 154.6 -11.2002 233.3 3.59961zM260.64 95c5.08594 -4.74902 14.5391 -10.4834 21.1006 -12.7998c-121.3 -35.5 -256.3 -2.90039 -169.5 25.8994c0 0 -21.9004 -16.1992 11.5996 -19.6992\nc43.2998 -4.5 77.6006 -4.80078 136.8 6.59961z\" />\n    <glyph glyph-name=\"pied-piper-hat\" unicode=\"&#xf4e5;\" horiz-adv-x=\"640\" \nd=\"M640 423.1c-80.7998 -53.5996 -89.4004 -92.5 -96.4004 -104.399c-6.69922 -12.2002 -11.6992 -60.2998 -23.2998 -83.6006c-11.7002 -23.5996 -54.2002 -42.1992 -66.0996 -50c-11.7002 -7.7998 -28.2998 -38.0996 -41.9004 -64.1992\nc-108.1 4.39941 -167.399 -38.8008 -259.2 -93.6006c29.4004 9.7002 43.3008 16.7002 43.3008 16.7002c94.1992 36 139.3 68.2998 281.1 49.2002c1.09961 0 1.90039 -0.600586 2.7998 -0.799805c3.90039 -2.2002 5.2998 -6.90039 3.10059 -10.8008l-53.9004 -95.7998\nc-2.5 -4.7002 -7.7998 -7.2002 -13.0996 -6.09961c-126.801 23.7998 -226.9 -17.2998 -318.9 -18.6006c-73.4004 -1.09961 -97.5 33.5 -97.5 35.1006c0 1.09961 0.599609 1.7002 1.7002 1.7002c0 0 38.2998 0 103.1 15.2998c73.6006 140.3 139.2 189.399 210.601 189.399\nc0 0 71.6992 0 90.5996 -61.8994c22.7998 39.7002 28.2998 49.2002 28.2998 49.2002c5.2998 9.39941 35 77.1992 86.4004 141.399c51.5 64 90.3994 79.9004 119.3 91.7998z\" />\n    <glyph glyph-name=\"creative-commons-by\" unicode=\"&#xf4e7;\" horiz-adv-x=\"496\" \nd=\"M314.9 253.6v-101.399h-28.3008v-120.5h-77.0996v120.399h-28.2998v101.5c0 4.40039 1.59961 8.2002 4.59961 11.3008c3.10059 3.09961 6.90039 4.69922 11.2998 4.69922h101.9c4.09961 0 7.7998 -1.59961 11.0996 -4.69922\nc3.10059 -3.2002 4.80078 -6.90039 4.80078 -11.3008zM213.4 317.3c0 23.2998 11.5 35 34.5 35s34.5 -11.7002 34.5 -35c0 -23 -11.5 -34.5 -34.5 -34.5s-34.5 11.5 -34.5 34.5zM247.6 440c141.801 0 248.4 -110.1 248.4 -248c0 -147.1 -118.5 -248 -248.4 -248\nc-134 0 -247.6 109.5 -247.6 248c0 132.9 104.7 248 247.6 248zM248.4 395.3c-118.2 0 -203.7 -97.8994 -203.7 -203.3c0 -109.8 91.2002 -202.8 203.7 -202.8c103.199 0 202.8 81.0996 202.8 202.8c0.0996094 113.8 -90.2002 203.3 -202.8 203.3z\" />\n    <glyph glyph-name=\"creative-commons-nc\" unicode=\"&#xf4e8;\" horiz-adv-x=\"496\" \nd=\"M247.6 440c139.801 0 248.4 -107.9 248.4 -248c0 -147.2 -118.5 -248 -248.4 -248c-134.5 0 -247.6 110.8 -247.6 248c0 132.9 104.7 248 247.6 248zM55.7998 258.9c-7.39941 -20.4004 -11.0996 -42.7002 -11.0996 -66.9004c0 -110.9 92.0996 -202.4 203.7 -202.4\nc122.399 0 177.199 101.801 178.5 104.101l-93.4004 41.5996c-7.7002 -37.0996 -41.2002 -53 -68.2002 -55.3994v-38.1006h-28.7998v38.2002c-27.5 0.299805 -52.5996 10.2002 -75.2998 29.7002l34.0996 34.5c31.7002 -29.4004 86.4004 -31.7998 86.4004 2.2002\nc0 6.19922 -2.2002 11.1992 -6.60059 15.0996c-14.1992 6 -1.7998 0.0996094 -219.3 97.4004zM248.4 395.7c-38.4004 0 -112.4 -8.7002 -170.5 -93l94.7998 -42.5c10 31.2998 40.3994 42.8994 63.7998 44.2998v38.0996h28.7998v-38.0996\nc22.7002 -1.2002 43.4004 -8.90039 62 -23l-32.2998 -33.2002c-42.7002 29.9004 -83.5 8 -70 -11.0996c53.4004 -24.1006 43.7998 -19.7998 93 -41.6006l127.1 -56.6992c4.10059 17.3994 6.2002 35.0996 6.2002 53.0996c0 57 -19.7998 105 -59.2998 143.9\nc-39.2998 39.8994 -87.2002 59.7998 -143.6 59.7998z\" />\n    <glyph glyph-name=\"creative-commons-nc-eu\" unicode=\"&#xf4e9;\" horiz-adv-x=\"496\" \nd=\"M247.7 440c140.7 0 248.3 -109 248.3 -248c0 -147.1 -118.1 -248 -248.3 -248c-136 0 -247.7 111.7 -247.7 248c0 131.2 103.6 248 247.7 248zM248.3 -10.7002c122.601 0 177.3 102.2 178.8 104.3l-128.3 56.8008h-90.2998\nc9.2002 -39.3008 39.0996 -50.2002 67.2998 -50.2002c19.1006 0 38.6006 6.2002 47.2998 10.7998l10 -46.0996c-14.1992 -7.90039 -38.1992 -15.8008 -64.7998 -15.8008c-57.3994 0 -113.2 34.3008 -124.6 101.301h-27v29.5h22.7998\nc0 16.2998 0.400391 13.2998 0.400391 19.5h-23.3008v29.5h4.7002l-65.7002 29.0996c-7.19922 -20.7998 -10.8994 -42.7998 -10.8994 -66c0 -110.2 91.5996 -202.7 203.6 -202.7zM231.6 179.9l-0.5 0.399414l0.900391 -0.399414h-0.400391zM308.8 199.4l136.101 -60.5\nc4.19922 16.5996 6.2998 34.1992 6.2998 52.8994c0 113.2 -90 203.4 -203 203.4c-13 0 -106.101 3.2002 -170.7 -93.6006l81.5996 -36.0996c4.10059 7.2002 8.60059 14 13.9004 20.0996c23.7002 26.5 56.9004 42.3008 95.9004 42.3008\nc25.2998 0 47.2998 -5.80078 62.2998 -12.4004l-11.6006 -47.2998c-10.7998 4.59961 -27.7998 10 -46.0996 10c-20 0 -38.2002 -6.60059 -51.0996 -22.4004c-3.40039 -3.7998 -6.30078 -8.7998 -8.80078 -14.2998l28.6006 -12.5996h70.2998v-29.5h-3.7002z\" />\n    <glyph glyph-name=\"creative-commons-nc-jp\" unicode=\"&#xf4ea;\" horiz-adv-x=\"496\" \nd=\"M247.7 440c140.8 0 248.3 -109.2 248.3 -248c0 -147.2 -118.1 -248 -248.3 -248c-135.9 0 -247.7 111.6 -247.7 248c0 131.2 103.6 248 247.7 248zM248.3 -10.7002c118.101 0 173.7 96.1006 175.2 98.2998l-81 36.1006v-35.7002h-64.2002v-56h-61.7002v56h-63.7998\nv38.7002h63.7998v18.7002l-5.69922 11.7998h-58.1006v38.5996h27.9004l-127 56.5c-6 -19.0996 -9 -39.2002 -9 -60.2998c0 -110.2 91.5996 -202.7 203.6 -202.7zM335.9 126.6l-54.7002 24.3008l-2.90039 -5.60059v-18.7002h57.6006zM342.4 178l101 -45.0996\nc5.19922 18.3994 7.89941 38 7.89941 59c0 113.399 -90.2002 203.399 -203 203.399c-91.0996 0 -145.899 -54 -173.7 -98.0996l81.9004 -36.5l-27.2998 51h65.7998l39.5996 -85.7002l23 -10.2002l43.4004 96h65.7998l-63 -116h38.6006v-17.7998z\" />\n    <glyph glyph-name=\"creative-commons-nd\" unicode=\"&#xf4eb;\" horiz-adv-x=\"496\" \nd=\"M247.6 440c141.801 0 248.4 -110.1 248.4 -248c0 -147.1 -118.5 -248 -248.4 -248c-134 0 -247.6 109.5 -247.6 248c0 132.9 104.7 248 247.6 248zM248.4 395.3c-118.2 0 -203.7 -97.8994 -203.7 -203.3c0 -109.8 91.2002 -202.8 203.7 -202.8\nc103.199 0 202.8 81.0996 202.8 202.8c0.0996094 113.8 -90.2002 203.3 -202.8 203.3zM342.4 251v-42.5h-180.301v42.5h180.301zM342.4 171.2v-42.5h-180.301v42.5h180.301z\" />\n    <glyph glyph-name=\"creative-commons-pd\" unicode=\"&#xf4ec;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111.1 248 -248c0 -137 -111 -248 -248 -248s-248 111 -248 248c0 136.9 111 248 248 248zM248 -9.5c76.0996 0 142.4 42.4004 176.7 104.8c-1.40039 0.299805 12.5 -5.7998 -217.9 96.7998c0.200195 -32 16.1006 -71.8994 53.9004 -71.8994\nc18.7002 0 30.7998 10.3994 36.2998 16.7002l36.0996 -43.9004c-25.8994 -22.7998 -56.5 -29.5 -79.3994 -29.5c-46.5 0 -120.4 27.9004 -120.4 126.9c0 11.3994 1.2002 22.3994 3.2998 32.8994l-78.7998 35.1006c-45.5996 -129.9 51 -267.9 190.2 -267.9zM442.2 140.5\nc0.200195 -0.200195 0.299805 -0.299805 0.599609 -0.400391c4.40039 16.6006 6.7998 34 6.7998 52c0 111.101 -90.3994 201.5 -201.5 201.5c-70.3994 0 -132.399 -36.2998 -168.5 -91.1992l74.9004 -33.4004c19.7998 31.0996 53.2998 51.5996 100.7 51.5996\nc20.0996 0 51 -4.19922 78.0996 -27.5l-40.3994 -41.5996c-19.8008 19.7002 -55.9004 23 -74.7002 -11z\" />\n    <glyph glyph-name=\"creative-commons-pd-alt\" unicode=\"&#xf4ed;\" horiz-adv-x=\"496\" \nd=\"M247.6 440c141.801 0 248.4 -110.1 248.4 -248c0 -147.1 -118.5 -248 -248.4 -248c-134 0 -247.6 109.5 -247.6 248c0 132.9 104.7 248 247.6 248zM248.4 -10.7998c103.199 0 202.8 81.0996 202.8 202.8c0.0996094 113.8 -90.2002 203.3 -202.8 203.3\nc-118.2 0 -203.7 -97.8994 -203.7 -203.3c0 -109.8 91.2002 -202.8 203.7 -202.8zM316.7 262c21.3994 0 70 -5.2002 70 -68.5996c0 -63.5 -48.6006 -68.6006 -70 -68.6006h-53.2002v137.2h53.2002zM317.5 153.5c24 0 34.5 15.2998 34.5 39.9004\nc0 42 -31.2002 39.8994 -35 39.8994l-19.4004 -0.0996094v-79.7002h19.9004zM203.7 262c33.7002 0 50.5 -15.5 50.5 -46.5c0 -9 -3 -46.5 -57.1006 -46.5h-27v-44.2998h-34.5996v137.3h68.2002zM198.8 194.7c27.9004 0 30 41.5996 -0.899414 41.5996h-28.3008v-41.5996\nh29.2002z\" />\n    <glyph glyph-name=\"creative-commons-remix\" unicode=\"&#xf4ee;\" horiz-adv-x=\"496\" \nd=\"M247.6 440c141.801 0 248.4 -110.1 248.4 -248c0 -147.1 -118.5 -248 -248.4 -248c-134 0 -247.6 109.5 -247.6 248c0 132.9 104.7 248 247.6 248zM248.4 395.3c-118.2 0 -203.7 -97.8994 -203.7 -203.3c0 -109.8 91.2002 -202.8 203.7 -202.8\nc103.199 0 202.8 81.0996 202.8 202.8c0.0996094 113.8 -90.2002 203.3 -202.8 203.3zM410.1 187.6l4.90039 -2.19922v-70c-7.2002 -3.60059 -63.4004 -27.5 -67.2998 -28.8008c-6.5 1.80078 -113.7 46.8008 -137.3 56.2002l-64.2002 -26.5996l-63.2998 27.5v63.7998\nl59.2998 24.7998c-0.700195 0.700195 -0.400391 -5 -0.400391 70.4004l67.2998 29.7002l151.9 -62.9004v-61.5996zM339.7 106.1v43.8008h-0.400391v1.7998l-113.8 46.5v-45.2002l113.8 -46.9004v0.400391zM347.2 163.7l39.8994 16.3994l-36.7998 15.5l-39 -16.3994z\nM399.5 125.6v43l-44.2998 -18.5996v-43.4004z\" />\n    <glyph glyph-name=\"creative-commons-sa\" unicode=\"&#xf4ef;\" horiz-adv-x=\"496\" \nd=\"M247.6 440c141.801 0 248.4 -110.1 248.4 -248c0 -147.1 -118.5 -248 -248.4 -248c-134 0 -247.6 109.5 -247.6 248c0 132.9 104.7 248 247.6 248zM248.4 395.3c-118.2 0 -203.7 -97.8994 -203.7 -203.3c0 -109.8 91.2002 -202.8 203.7 -202.8\nc103.199 0 202.8 81.0996 202.8 202.8c0.0996094 113.8 -90.2002 203.3 -202.8 203.3zM137.7 227c13 83.9004 80.5 95.7002 108.899 95.7002c99.8008 0 127.5 -82.5 127.5 -134.2c0 -63.5996 -41 -132.9 -128.899 -132.9c-38.9004 0 -99.1006 20 -109.4 97h62.5\nc1.5 -30.0996 19.6006 -45.1992 54.5 -45.1992c23.2998 0 58 18.1992 58 82.7998c0 82.5 -49.0996 80.5996 -56.7002 80.5996c-33.0996 0 -51.6992 -14.5996 -55.7998 -43.7998h18.2002l-49.2002 -49.2002l-49 49.2002h19.4004z\" />\n    <glyph glyph-name=\"creative-commons-sampling\" unicode=\"&#xf4f0;\" horiz-adv-x=\"496\" \nd=\"M247.6 440c141.801 0 248.4 -110.1 248.4 -248c0 -147.1 -118.5 -248 -248.4 -248c-134 0 -247.6 109.5 -247.6 248c0 132.9 104.7 248 247.6 248zM248.4 395.3c-118.2 0 -203.7 -97.8994 -203.7 -203.3c0 -109.8 91.2002 -202.8 203.7 -202.8\nc103.199 0 202.8 81.0996 202.8 202.8c0.0996094 113.8 -90.2002 203.3 -202.8 203.3zM252 342.1c2.7998 0.300781 11.5 -1 11.5 -11.5l6.59961 -107.199l4.90039 59.2998c0 6 4.7002 10.5996 10.5996 10.5996c5.90039 0 10.6006 -4.7002 10.6006 -10.5996\nc0 -2.5 -0.5 5.7002 5.7002 -81.5l5.7998 64.2002c0.299805 2.89941 2.89941 9.2998 10.2002 9.2998c3.7998 0 9.89941 -2.2998 10.5996 -8.90039l11.5 -96.5l5.2998 12.7998c1.7998 4.40039 5.2002 6.60059 10.2002 6.60059h58v-21.2998h-50.9004l-18.1992 -44.3008\nc-3.90039 -9.89941 -19.5 -9.09961 -20.8008 3.10059l-4 31.8994l-7.5 -92.5996c-0.299805 -3 -3 -9.2998 -10.1992 -9.2998c-3 0 -9.80078 2.09961 -10.6006 9.2998c0 1.90039 0.600586 -5.7998 -6.2002 77.9004l-5.2998 -72.2002\nc-1.09961 -4.7998 -4.7998 -9.2998 -10.5996 -9.2998c-2.90039 0 -9.7998 2 -10.6006 9.2998c0 1.89941 0.5 -6.7002 -5.7998 87.7002l-5.7998 -94.8008c0 -6.2998 -3.59961 -12.3994 -10.5996 -12.3994c-5.2002 0 -10.6006 4.09961 -10.6006 12l-5.7998 87.7002\nc-5.7998 -92.5 -5.2998 -84 -5.2998 -85.9004c-1.10059 -4.7998 -4.7998 -9.2998 -10.6006 -9.2998c-3 0 -9.7998 2.09961 -10.5996 9.2998c0 0.700195 -0.400391 1.09961 -0.400391 2.59961l-6.19922 88.6006l-4.90039 -56.7002\nc-0.700195 -6.5 -6.7002 -9.2998 -10.5996 -9.2998c-5.80078 0 -9.60059 4.09961 -10.6006 8.89941l-11.0996 76.4004c-2 -4 -3.5 -8.40039 -11.1006 -8.40039h-51.3994v21.3008h44.7998l13.7002 27.8994c4.39941 9.90039 18.2002 7.2002 19.8994 -2.7002l3.10059 -20.3994\nl8.39941 97.8994c0 6 4.80078 10.6006 10.6006 10.6006c0.5 0 10.5996 0.200195 10.5996 -12.4004l4.90039 -69.0996l6.59961 92.5996c0 10.1006 9.5 10.6006 10.2002 10.6006c0.599609 0 10.5996 -0.700195 10.5996 -10.6006l5.30078 -80.5996l6.19922 97.8994\nc0.100586 1.10059 -0.599609 10.3008 9.90039 11.5z\" />\n    <glyph glyph-name=\"creative-commons-sampling-plus\" unicode=\"&#xf4f1;\" horiz-adv-x=\"496\" \nd=\"M247.6 440c141.801 0 248.4 -110.1 248.4 -248c0 -147.1 -118.5 -248 -248.4 -248c-134 0 -247.6 109.5 -247.6 248c0 132.9 104.7 248 247.6 248zM248.4 395.3c-118.2 0 -203.7 -97.8994 -203.7 -203.3c0 -109.8 91.2002 -202.8 203.7 -202.8\nc103.199 0 202.8 81.0996 202.8 202.8c0.0996094 113.8 -90.2002 203.3 -202.8 203.3zM355.4 189.7l58.3994 0.299805v-23.2002h-50.5l-18 -43.3994c-4.59961 -11 -20.8994 -8.7002 -22.2998 3.09961l-2.7002 22.2998l-6.7998 -83\nc-1.09961 -14.0996 -22 -14.2002 -23.0996 0.100586l-4.90039 64.3994l-4.59961 -58.5996c-1.10059 -14.2998 -22.3008 -14.1006 -23.2002 0.200195l-4.5 71.7998l-4.90039 -80.5c-0.899414 -14.5 -22.2998 -14.5 -23.2002 -0.100586l-4.7998 73.3008l-4.59961 -70.4004\nc-0.900391 -14.2998 -22.1006 -14.5 -23.2002 -0.0996094l-5.7002 78.2998l-3.7998 -43.6006c-1.2002 -13.6992 -21.0996 -14.1992 -23.0996 -0.699219l-10.7002 73.0996c-2 -3.90039 -6 -6.40039 -10.4004 -6.40039h-51.2998v23.2002h43.9004l13.1992 27.7002\nc4.90039 10.2998 20.3008 8.09961 22 -3.2998l1.80078 -12.2002l7.69922 89.7998c1.2002 14.1006 22.1006 14.1006 23.2002 -0.200195l4.10059 -57l5.2998 80.2002c1 14.4004 22.2998 14.4004 23.2002 0l4.2998 -66.2998l5.09961 83.7002\nc0.900391 14.3994 22.2998 14.5 23.2002 0l5.90039 -94.2998l3.5 44.8994c1.09961 14.2002 22.0996 14.2998 23.1992 0l5.2002 -68.7998l4.2998 51.4004c1.10059 13.7998 21.4004 14.2998 23.1006 0.399414l11 -92.7998l4 9.5c1.7002 4.40039 6 7.2002 10.7002 7.2002z\nM277.4 184.5c4.09961 0 7.5 3.40039 7.5 7.5c0 4.2002 -3.40039 7.5 -7.5 7.5h-21.9004v21.9004c0 4.19922 -3.40039 7.5 -7.5 7.5s-7.5 -3.40039 -7.5 -7.5v-21.9004h-21.9004c-4.09961 0 -7.5 -3.40039 -7.5 -7.5c0 -4.2002 3.40039 -7.5 7.5 -7.5h21.9004v-21.9004\nc0 -4.19922 3.40039 -7.5 7.5 -7.5c4.2002 0 7.5 3.40039 7.5 7.5v21.9004h21.9004z\" />\n    <glyph glyph-name=\"creative-commons-share\" unicode=\"&#xf4f2;\" horiz-adv-x=\"496\" \nd=\"M247.6 440c141.801 0 248.4 -110.1 248.4 -248c0 -147.1 -118.5 -248 -248.4 -248c-134 0 -247.6 109.5 -247.6 248c0 132.9 104.7 248 247.6 248zM248.4 395.3c-118.2 0 -203.7 -97.8994 -203.7 -203.3c0 -109.8 91.2002 -202.8 203.7 -202.8\nc103.199 0 202.8 81.0996 202.8 202.8c0.0996094 113.8 -90.2002 203.3 -202.8 203.3zM349.4 262.9c7.7998 0 13.6992 -6.10059 13.6992 -13.7002v-182.5c0 -7.7002 -6.09961 -13.7002 -13.6992 -13.7002h-135.101c-7.7002 0 -13.7002 6 -13.7002 13.7002v54h-54\nc-7.7998 0 -13.6992 6 -13.6992 13.7002v182.5c0 8.19922 6.59961 12.6992 12.3994 13.6992h136.4c7.7002 0 13.7002 -6 13.7002 -13.6992v-54h54zM159.9 147.7h40.6992v101.399c0 7.40039 5.80078 12.6006 12 13.7002h55.8008v40.2998h-108.5v-155.399zM336.1 235.8h-108.5\nv-155.399h108.5v155.399z\" />\n    <glyph glyph-name=\"creative-commons-zero\" unicode=\"&#xf4f3;\" horiz-adv-x=\"496\" \nd=\"M247.6 440c141.801 0 248.4 -110.1 248.4 -248c0 -147.1 -118.5 -248 -248.4 -248c-134 0 -247.6 109.5 -247.6 248c0 132.9 104.7 248 247.6 248zM248.4 395.3c-118.2 0 -203.7 -97.8994 -203.7 -203.3c0 -109.8 91.2002 -202.8 203.7 -202.8\nc103.199 0 202.8 81.0996 202.8 202.8c0.0996094 113.8 -90.2002 203.3 -202.8 203.3zM248 334.8c81.9004 0 102.5 -77.2998 102.5 -142.8s-20.5996 -142.8 -102.5 -142.8s-102.5 77.2998 -102.5 142.8s20.5996 142.8 102.5 142.8zM248 280.9\nc-42.0996 0 -44.0996 -60.1006 -44.0996 -88.9004c0 -9.2998 0.199219 -21.7002 1.89941 -34.4004l54.5 100.2c5.7002 9.7998 2.7998 16.7998 -3.09961 21.9004c-2.7998 0.700195 -5.90039 1.2002 -9.2002 1.2002zM288.8 234.7l-60.8994 -105.2\nc-12.5 -18.7002 6.59961 -26.4004 20.0996 -26.4004c42.0996 0 44.0996 60 44.0996 88.9004c0 11.2998 -0.399414 27.2998 -3.2998 42.7002z\" />\n    <glyph glyph-name=\"ebay\" unicode=\"&#xf4f4;\" horiz-adv-x=\"640\" \nd=\"M606 258.5h34l-99.2002 -194.8h-35.8994l28.5 54.0996l-61.5 116.101c3.09961 -6.60059 4.7998 -14.5 4.7998 -23.8008v-65.5996c0 -9.2998 0.299805 -18.5996 1 -26.7998h-29.7998c-0.800781 6.89941 -1.10059 13.5996 -1.10059 20.2002\nc-16.0996 -19.8008 -35.2998 -25.5 -61.8994 -25.5c-39.5 0 -60.6006 20.8994 -60.6006 45c0 3.19922 0.200195 6.19922 0.700195 9c-8.40039 -32.3008 -36.4004 -54.2002 -73.2998 -54.2002c-23.2998 0 -45.1006 8.2998 -58.7002 24.8994\nc0 -6.59961 -0.400391 -13.1992 -1.09961 -19.5h-31.5c0.5 10.2002 1.09961 22.8008 1.09961 33.1006v169.5h32.0996v-80.6006c15.7002 18.7002 37.4004 24.2002 58.7002 24.2002c35.7002 0 75.4004 -24.0996 75.4004 -76.2002c0 -5.59961 -0.5 -11 -1.5 -16.1992\nc7.09961 24.3994 34.2998 33.5 76.7002 34.3994c13.6992 0.299805 29 0.400391 41.6992 0.400391v3.39941c0 23.4004 -15 33 -41 33c-19.2998 0 -33.5996 -8 -35 -21.7998h-33.6992c3.59961 34.4004 39.6992 43.1006 71.5 43.1006c27.3994 0 51.7998 -7 63.2998 -26\nl-10.9004 20.5996h37.5l54.9004 -109.9zM243.7 134.2c29.7998 0 50.2002 21.5 50.2002 53.7998c0 32.4004 -20.4004 53.7998 -50.2002 53.7998c-29.6006 0 -50.2002 -21.3994 -50.2002 -53.7998c0 -32.2998 20.5996 -53.7998 50.2002 -53.7998zM444.6 181.5v3.2998\nc-11.7998 0 -26.2998 -0.0996094 -39.3994 -0.599609c-29.1006 -0.900391 -47.2002 -6.2002 -47.2002 -25.2998c0 -12.4004 9.90039 -25.8008 35 -25.8008c33.7002 0 51.5996 18.4004 51.5996 48.4004zM32.7002 179.9c3.5 -58.3008 79.2002 -57.4004 91.2002 -21.6006\nh33.0996c-6.40039 -34.3994 -43 -46.0996 -74.4004 -46.0996c-57.1992 0 -82.5 31.5 -82.5 74c0 46.7998 26.2002 77.5996 83 77.5996c45.3008 0 78.4004 -23.7002 78.4004 -75.3994v-8.5h-128.8zM127.7 201.3c-2.2998 54.7002 -87.5 56.6006 -94.4004 0h94.4004z\" />\n    <glyph glyph-name=\"keybase\" unicode=\"&#xf4f5;\" \nd=\"M286.17 29c9.93652 0 18 -8.06445 18 -18s-8.06348 -18 -18 -18c-9.93555 0 -18 8.06445 -18 18s8.06445 18 18 18zM398.09 176.6c22.9102 -33.46 35.9102 -72.3398 35.9102 -110.92c0 -31.6797 -5 -60.6797 -14.5996 -86.2295\nc-3.04004 -8.0498 -10.9502 -12.7197 -18.3701 -11.1504c-6.83984 1.24023 -11.1201 9.28027 -8.60059 15.7402c11.1904 28.71 14.8799 58.3398 14.8799 81.6396c-0.0517578 7.91797 -1.30566 20.6543 -2.7998 28.4307\nc-0.649414 -1.06055 -1.12988 -2.2207 -1.84961 -3.2207c-17.29 -24.5293 -50.54 -33.8896 -84.7402 -23.8398c-78.8701 23.1699 -178.02 3.81055 -236.25 -38.5898l24.6602 74.1104l-46.8203 -59.8301c2.04297 -15.3486 9.10352 -39.1504 15.7598 -53.1299\nc6.25 -13.1904 0.460938 -18.2402 -3.75 -20.1104c-4.76953 -2.12012 -13.8594 -2.7998 -19.6396 7.33008c-5.43652 9.81641 -11.96 26.6436 -14.5596 37.5596l-23.3203 -29.7998v33.6406c0 55.7695 0 125.109 62.6504 188.409c11.4258 11.5684 32.1631 27.4902 46.29 35.54\nl-8.93066 0.540039c-27.8799 1.64062 -49.2402 24.8506 -47.6299 51.8506l2.36035 36.6797c0 -6.24023 0.139648 45.8799 50.75 45.8799c2.05957 0 -0.470703 0.120117 41.0596 -2.33008c2.31641 -0.15625 6.03027 -0.71582 8.29004 -1.25\nc7.41992 11.3398 15.6504 22.8301 24.3398 34.8906l5.48047 7.55957l22.8994 -13.5195c-11.29 -24 -10 -33 -9.39941 -35c9.08008 0.229492 20 -1.6709 32.4102 -5.77051c29.6523 -9.84375 53.7188 -43.1914 53.7188 -74.4355\nc0 -8.5127 -2.61621 -21.8154 -5.83887 -29.6943c6.18652 -2.13965 12.3135 -4.56348 18.3799 -7.27051c47.8896 -21.2598 77.7598 -59.0898 87.2598 -73.71zM142.37 319.42c1.55664 5.42773 4.69336 14.0156 7 19.1699l-29.1104 1.73047\nc0.610352 -0.0507812 -12.2598 0.849609 -13.2598 -11.3203l-2.41016 -36.6602c-0.00585938 -0.143555 -0.0107422 -0.376953 -0.0107422 -0.520508c0 -6.50293 5.27344 -12 11.7705 -12.2695l22.3809 -1.33984c-0.380859 3.10645 -0.689453 8.16797 -0.689453 11.2969\nc0 2.28809 0.165039 5.99414 0.369141 8.27344l-13.1299 0.779297l1.38965 21.79zM290.79 147.24c2.06152 1.58789 3.73438 4.9873 3.73438 7.58887c0 1.80273 -0.893555 4.42383 -1.99414 5.85059l-81.0898 96.3203c-1.71484 1.99023 -5.23828 3.60547 -7.86523 3.60547\nc-1.99023 0 -4.87305 -1.00098 -6.43555 -2.23535c-2.05957 -1.58398 -3.73242 -4.97949 -3.73242 -7.57812c0 -1.7998 0.892578 -4.41699 1.99316 -5.8418c0.0898438 -0.140625 18.5996 -22.1406 18.5996 -22.1406l-16.9102 -13.29\nc-1.59473 -1.22266 -2.88867 -3.8457 -2.88867 -5.85547c0 -1.37988 0.680664 -3.38867 1.51855 -4.48438c0.0800781 -0.109375 2.52246 -3.07324 3.7998 -4.5293c1.27832 -1.45703 3.8877 -2.63867 5.8252 -2.63867c1.4707 0 3.60547 0.734375 4.76562 1.63867\nl17.0898 13.4492l14.1396 -16.7393l-34.5703 -27.1807c-1.58398 -1.22266 -2.86914 -3.83984 -2.86914 -5.84082c0 -1.38574 0.685547 -3.40039 1.5293 -4.49902l15.7803 -18.6396c1.33594 -1.55176 4.08203 -2.81055 6.12988 -2.81055\nc1.54492 0 3.78516 0.775391 5 1.73047l34.4199 27l9.68066 -11.4902c1.7334 -1.98242 5.27832 -3.5918 7.91211 -3.5918c1.98438 0 4.86816 0.986328 6.4375 2.20215zM187.44 29c9.93555 0 18 -8.06445 18 -18s-8.06445 -18 -18 -18c-9.93652 0 -18 8.06445 -18 18\ns8.06348 18 18 18z\" />\n    <glyph glyph-name=\"mastodon\" unicode=\"&#xf4f6;\" \nd=\"M433 268.89c0 0 0.799805 -71.6992 -9 -121.5c-6.23047 -31.5996 -55.1104 -66.1992 -111.23 -72.8994c-20.0996 -2.40039 -93.1191 -14.2002 -178.75 6.7002v-0.339844c0 -3.75977 0.40332 -9.83496 0.900391 -13.5605c6.62988 -49.5996 49.2197 -52.5996 89.6299 -54\nc40.8105 -1.2998 77.1201 10.0996 77.1201 10.0996l1.7002 -36.8994s-28.5098 -15.2998 -79.3203 -18.1006c-28.0098 -1.59961 -62.8193 0.700195 -103.33 11.4004c-112.229 29.7002 -105.63 173.4 -105.63 289.1c0 97.2002 63.7197 125.7 63.7197 125.7\nc61.9209 28.4004 227.96 28.7002 290.48 0c0 0 63.71 -28.5 63.71 -125.7zM357.88 143.69c0 122 5.29004 147.71 -18.4199 175.01c-25.71 28.7002 -79.7197 31 -103.83 -6.10059l-11.5996 -19.5l-11.6006 19.5c-24.0098 36.9004 -77.9297 35 -103.83 6.10059\nc-23.6094 -27.1006 -18.4092 -52.9004 -18.4092 -175h46.7295v114.2c0 49.6992 64 51.5996 64 -6.90039v-62.5098h46.3301v62.5c0 58.5 64 56.5996 64 6.89941v-114.199h46.6299z\" />\n    <glyph glyph-name=\"r-project\" unicode=\"&#xf4f7;\" horiz-adv-x=\"581\" \nd=\"M581 221.4c0 -54.8008 -33.9004 -104.301 -88.4004 -139.7l67.4004 -113.7h-112l-40.0996 75.4004c-21.8008 -6.5 -45.1006 -11.2002 -69.4004 -13.9004v-61.5h-99.0996v61.9004c-136.101 16.0996 -239.4 95.6992 -239.4 191.5c0 107.5 130.1 194.6 290.5 194.6\ns290.5 -87.0996 290.5 -194.6zM114.2 206.9c0 -52.8008 51.0996 -98.4004 125.2 -119.9v208.3h199s90.5996 -1.59961 90.5996 -87.8994c0 -86.3008 -86.5996 -92.7002 -86.5996 -92.7002s17.5996 -5.2998 27.7998 -10.5c1.7002 -0.799805 4 -2.10059 6.39941 -3.7002\nc43.8008 21.4004 70.3008 56.2998 70.3008 106.4c0 92.2998 -90 133 -211.9 133s-220.8 -59.5 -220.8 -133zM339.3 168.6c49.6006 0 87.7998 -8.19922 87.7998 28.3008c0 34.0996 -30 27.2998 -87.7998 27.2998v-55.6006zM338.4 96.0996v-22.0996\nc17.5996 0.0996094 34.5 1 50.5996 2.90039c-5.09961 7.5 -13.2002 19.1992 -24 19.1992h-26.5996z\" />\n    <glyph glyph-name=\"researchgate\" unicode=\"&#xf4f8;\" \nd=\"M0 416h448v-448h-448v448zM262.2 81.5996v7.30078c-10 0 -20 6.89941 -27.2002 14.6992c-12.2002 13.3008 -28.5996 34.7002 -42.2002 58.9004c22.5 5.2998 39.2002 26.4004 39.2002 47.5c0 31.2002 -24.2002 45.5996 -55.9004 45.5996\nc-17.7998 0 -45.0996 -1.59961 -70.8994 -0.599609v-8.09961c15.5996 -2.90039 22 -1.30078 22 -23.9004v-109.4c0 -22.5996 -6.5 -21 -22 -23.8994v-8.10059c7.5 0.200195 20.5 0.800781 33.5996 0.800781c12.5 0 28.7002 -0.5 35.6006 -0.800781v8.10059\nc-19.8008 2.7002 -25.8008 0.399414 -25.8008 23.8994v46.4004c6.7002 -0.599609 12.5 -0.599609 21.4004 -0.599609c16.9004 -30.3008 33 -53 42.2002 -63.6006c16.7998 -20.2002 43.3994 -17.2002 50 -14.2002zM285.1 216.6c38.7002 0 34 29.4004 34 49.9004h-30.3994\nv-10.7002h17.8994c0 -15.8994 -7.39941 -26.7998 -21.5 -26.7998c-11.2998 0 -17.8994 9.90039 -17.8994 23.2998v26.7998c0 12.4004 11.7998 19.7002 19.7002 19.7002c14.1992 0 19.6992 -12.5 19.6992 -12.5l10.7002 7.2002s-5.2002 17.9004 -30.3994 17.9004\nc-25.2002 0 -34 -18.2002 -34 -30.4004v-32.2002c0 -16.5 8.89941 -32.2002 32.1992 -32.2002zM168.6 171.9c-9.39941 0 -13.5996 0.299805 -20 0.799805v69.7002c6.40039 0.599609 15 0.599609 22.5 0.599609c23.3008 0 37.2002 -12.2002 37.2002 -34.5\nc0 -21.9004 -15 -36.5996 -39.7002 -36.5996z\" />\n    <glyph glyph-name=\"teamspeak\" unicode=\"&#xf4f9;\" horiz-adv-x=\"512\" \nd=\"M244.2 101.21c-2.40039 -12.5 -10.6006 -20 -22.5 -24.2998c-9.2002 -3.2002 -50.1006 -1.60059 -61.7002 -1c-18 1.2998 -33.2002 8.5 -43.4004 24c-14.5 22.5 -19.5 47.7002 -14.5 73.8994c4.60059 24.5 24.6006 34.7002 46.3008 22.7002\nc15.1992 -7.5 42.5 -27.3994 63.3994 -46.5996c20.4004 -18.7002 34.7998 -36.4004 32.4004 -48.7002zM449.2 80.4102c6.7002 -5.41016 11.2002 -22 11.5996 -32.1006c1 -50.3994 -23.8994 -68 -46.5996 -85.3994c-65.1006 -50 -295.101 -16.9004 -145.4 -6.40039\nc127.4 9 164.101 96.1006 172.101 121.5c0.647461 1.99023 2.87109 3.60547 4.96387 3.60547c1.04102 0 2.53516 -0.540039 3.33594 -1.20508zM511.2 202.81c0 -17.1992 1.89941 -34.5996 -1 -51.6992c-4 -24.7002 -29.1006 -41.7002 -53.2002 -36.7002\nc-7.2002 1.7002 -9.40039 7.2002 -9.40039 14.2002c0 28.0996 0.800781 56.3994 0 84.5996c-1.89941 75.79 -36.1992 132.79 -102.3 169.4c-111 60.3896 -253.2 -7 -277.8 -131.5c-6.09961 -30.4004 -1.7002 -48.3008 -3.7002 -125.801\nc-0.299805 -7.19922 -4.2998 -11.1992 -12 -11.5c-30.7998 -1.39941 -51.7998 18.2002 -51.7998 49v20.9004l0.799805 26.4902c2.40039 15.5 10.7002 27 24.9004 34c3.5 1.7998 5.7002 3.5 6.39941 7.7998c6.10059 33.4102 19.5 64 39.3008 91.71\nc2.2998 3.09961 4 5.2998 1 9.2998c-3.7002 5.40039 -1 10.2002 3 14.5c28.0996 31.7998 61.8994 55.1006 102 67.4004c96 29.4668 180.1 9.29688 252.3 -60.5098c6.7002 -6.40039 15.5 -12.9004 7 -24.4004c-1.2998 -1.7998 1.09961 -3.5 2.2002 -5\nc17.2246 -23.209 35.3242 -65.1367 40.3994 -93.5898c0.900391 -3.7002 3 -5.10059 5.90039 -6.40039c17.3994 -8.7998 25.7002 -23.2998 26 -42.2002zM351.6 71.3096l-51.5996 7.7002c-22.7998 5.90039 -51 32.7002 22.2002 60.7998\nc21.5996 8.5 85.7002 37.2002 87.7998 -8c0.900391 -32 -21.9004 -63.2998 -58.4004 -60.5z\" />\n    <glyph glyph-name=\"first-order-alt\" unicode=\"&#xf50a;\" horiz-adv-x=\"496\" \nd=\"M248 440c136.97 0 248 -111.03 248 -248s-111.03 -248 -248 -248s-248 111.03 -248 248s111.03 248 248 248zM248 -48.21c132.66 0 240.21 107.55 240.21 240.21s-107.55 240.21 -240.21 240.21s-240.21 -107.55 -240.21 -240.21s107.55 -240.21 240.21 -240.21z\nM248 411.71c121.34 0 219.71 -98.3701 219.71 -219.71s-98.3701 -219.71 -219.71 -219.71s-219.71 98.3701 -219.71 219.71s98.3701 219.71 219.71 219.71zM248 -19.5098c116.81 0 211.51 94.7002 211.51 211.51s-94.7002 211.51 -211.51 211.51\ns-211.51 -94.6895 -211.51 -211.51s94.7002 -211.51 211.51 -211.51zM434.23 143.47c-3.69141 -14.209 -12.709 -36.0225 -20.1309 -48.6895l-74.1299 35.8799l61.4805 -54.8203c-8.85352 -11.7021 -25.5195 -28.4082 -37.2002 -37.29l-54.7998 61.5703l35.8799 -74.2705\nc-12.6445 -7.45215 -34.4307 -16.5156 -48.6299 -20.2295l-27.29 78.4697l4.79004 -82.9297c-8.61035 -1.17969 -17.4004 -1.7998 -26.3301 -1.7998s-17.7197 0.620117 -26.3301 1.7998l4.75977 82.46l-27.1494 -78.0303c-14.2021 3.70996 -35.998 12.7588 -48.6504 20.2002\nl35.9297 74.3398l-54.8701 -61.6396c-11.6836 8.87988 -28.3584 25.582 -37.2197 37.2793l61.5898 54.9004l-74.2598 -35.9297c-7.42383 12.667 -16.4463 34.4795 -20.1396 48.6895l77.8398 27.1104l-82.2305 -4.75977c-1.15918 8.56934 -1.7793 17.3193 -1.7793 26.21\nc0 9 0.629883 17.8398 1.81934 26.5098l82.3799 -4.76953l-77.9395 27.1592c3.71973 14.208 12.7822 36.0127 20.2295 48.6699l74.2207 -35.9199l-61.5205 54.8604c8.88086 11.6836 25.582 28.3584 37.2803 37.2197l54.7598 -61.5293l-35.8301 74.1699\nc12.6562 7.41895 34.4521 16.4375 48.6504 20.1299l26.8701 -77.25l-4.70996 81.6094c8.60938 1.18066 17.3896 1.80078 26.3193 1.80078c8.93066 0 17.71 -0.620117 26.3203 -1.80078l-4.74023 -82.1592l27.0498 77.7598c17.2705 -4.5 33.6006 -11.3506 48.6309 -20.1699\nl-35.8203 -74.1201l54.7197 61.4697c11.6924 -8.86133 28.376 -25.54 37.2402 -37.2295l-61.4502 -54.7705l74.1201 35.8604c7.43945 -12.6533 16.4893 -34.4492 20.2002 -48.6504l-77.8105 -27.0996l82.2402 4.75c1.19043 -8.66016 1.82031 -17.5 1.82031 -26.4902\nc0 -8.87988 -0.610352 -17.6299 -1.78027 -26.1904l-82.1201 4.75z\" />\n    <glyph glyph-name=\"fulcrum\" unicode=\"&#xf50b;\" horiz-adv-x=\"320\" \nd=\"M95.75 283.86l-35.3799 -43.5508l-35.3701 43.5508l35.3799 43.5498zM144.23 448v-211.11l-41.0801 -44.8896l41.0801 -44.8896v-211.11l-20.5107 198.18l-51 57.8203l50.9707 57.8203zM223.9 283.86l35.3799 43.5498l35.3799 -43.5498l-35.3799 -43.5508zM175.42 236.86\nv211.14l20.5801 -198.18l51 -57.8203l-51 -57.8203l-20.5801 -198.18v211.11l41.0801 44.8896z\" />\n    <glyph glyph-name=\"galactic-republic\" unicode=\"&#xf50c;\" horiz-adv-x=\"496\" \nd=\"M248 -56c-136.75 0 -248 111.25 -248 248s111.25 248 248 248s248 -111.25 248 -248s-111.25 -248 -248 -248zM248 423.47c-127.63 0 -231.47 -103.84 -231.47 -231.47s103.84 -231.47 231.47 -231.47s231.47 103.84 231.47 231.47s-103.84 231.47 -231.47 231.47z\nM275.62 401.66c37.6602 -4.91016 72.21 -19.7402 100.96 -41.7998l-17.3896 -17.3604c-20.6758 15.3154 -58.1152 30.7891 -83.5703 34.54v24.6201zM220.25 401.59v-24.54c-30.9697 -4.60938 -59.4502 -16.8301 -83.5195 -34.6699h-0.0800781l-17.2803 17.3604\nc28.7197 22.0498 63.2402 36.9102 100.88 41.8496zM232.5 351.42h31v-82.8604c10.0498 -2.0293 19.3701 -6.00977 27.6201 -11.5l58.6699 58.6709l21.9297 -21.9307l-58.6699 -58.6699c5.46973 -8.24023 9.48047 -17.5996 11.5 -27.6201h82.8701v-31h-82.8701\nc-2.03027 -10.0195 -6.04004 -19.3096 -11.5 -27.54l58.6699 -58.6895l-21.9297 -21.9307l-58.6699 58.6904c-8.25 -5.49023 -17.5703 -9.52051 -27.6201 -11.5498v-82.9004h-31v82.9004c-8.25781 1.66895 -20.6533 6.80762 -27.6699 11.4697l-58.6201 -58.6201\nl-21.9297 21.9297l58.6699 58.6904c-5.45996 8.23047 -9.4502 17.5205 -11.4697 27.54h-82.9004v31h82.9004c2.01953 10.0303 6 19.3896 11.4697 27.6201l-58.6699 58.6699l21.9297 21.9297l58.6201 -58.5898c8.25 5.48047 17.6299 9.38965 27.6699 11.4199v82.8701z\nM415.74 320.7c22.0996 -28.7402 36.9795 -63.3398 41.9297 -101.03h-24.6201c-3.7832 25.4902 -19.3154 62.9746 -34.6699 83.6699zM80.1904 320.57l17.3896 -17.3906c-17.8301 -24.0693 -29.9902 -52.5596 -34.5898 -83.5195h-24.6504\nc4.94043 37.6494 19.79 72.1895 41.8506 100.91zM38.3398 164.33l24.6504 0.00976562c4.58984 -30.9502 16.7002 -59.4502 34.5098 -83.5195l-17.3604 -17.3906c-22.0498 28.7207 -36.8799 63.2607 -41.7998 100.9zM433.04 164.33h24.6201\nc-4.9502 -37.6699 -19.8506 -72.2197 -41.9297 -100.96l-17.3604 17.3604c17.8701 24.0996 30.0596 52.6094 34.6699 83.5996zM136.66 41.6201c24.0703 -17.8604 52.6094 -30.0205 83.5996 -34.6504v-24.6396c-37.6602 4.9502 -72.2295 19.8398 -100.96 41.9297z\nM359.19 41.5703h0.0791016l17.3105 -17.3906c-28.75 -22.0596 -63.29 -36.9297 -100.96 -41.8496v24.5703c30.9902 4.58984 59.4795 16.8301 83.5703 34.6699z\" />\n    <glyph glyph-name=\"galactic-senate\" unicode=\"&#xf50d;\" horiz-adv-x=\"512\" \nd=\"M249.86 414.52h12.2793v-26.0693c13.5801 -20.6201 23.8604 -108.59 24.4902 -215.351c-11.7402 15.6201 -19.1299 33.3301 -19.1299 48.2402v16.8799c0.0302734 5.32031 -0.75 10.5303 -2.19043 15.6504c-0.649414 2.13965 -1.38965 4.07031 -2.61914 5.82031\nc-1.23047 1.73926 -3.44043 3.79004 -6.68066 3.79004c-3.25 0 -5.4502 -2.04004 -6.67969 -3.79004c-1.23047 -1.74023 -1.96973 -3.68066 -2.62012 -5.82031c-1.44043 -5.12012 -2.21973 -10.3301 -2.19043 -15.6504v-16.8799\nc0 -14.9102 -7.38965 -32.6201 -19.1299 -48.2402c0.610352 106.761 10.8906 194.73 24.4707 215.351v26.0693zM223.52 266.75c-1.59961 -22.4004 -2.75 -46.5195 -3.47949 -72.0703c-23.2998 -11.2793 -40.7705 -33.1602 -46.3203 -59.5098\nc-7.71973 -2.25977 -22.71 -3.91992 -40.4893 -4.21973c-7.51074 3.66016 -16.5 5.85938 -26.1807 6.04004c1.90039 14.9102 5.87012 29.1699 11.6504 42.4199c15.4395 -8.10059 30.9297 -8.66016 35.4697 -0.959961c4.57031 7.74023 -3.58984 21.04 -18.3203 30.6602\nc8.68066 11.7695 18.9805 22.2998 30.5605 31.0898c9.50977 -15.5898 23.3594 -24.4404 31.3594 -19.8203c8.05078 4.65039 7.19043 21.1699 -1.70996 37.29c8.76074 3.88965 17.9404 6.92969 27.46 9.08008zM288.48 266.75\nc7.82227 -1.75977 20.1201 -5.82812 27.4492 -9.08008c-8.89941 -16.1299 -9.75977 -32.6396 -1.70996 -37.29c8 -4.62012 21.8506 4.23047 31.3604 19.8203c11.5801 -8.79004 21.8799 -19.3203 30.5596 -31.0898c-14.7197 -9.61035 -22.8896 -22.9199 -18.3193 -30.6602\nc4.54004 -7.7002 20.0293 -7.14062 35.4697 0.959961c5.79004 -13.25 9.75 -27.5098 11.6504 -42.4199c-9.68066 -0.19043 -18.6709 -2.37988 -26.1807 -6.04004c-17.7793 0.299805 -32.7695 1.95996 -40.4902 4.21973c-5.5498 26.3496 -23.0293 48.2305 -46.3193 59.5098\nc-0.719727 25.5508 -1.87988 49.6699 -3.46973 72.0703zM256 258.15c3.23047 0 5.86035 -8.81055 6.08984 -19.9307h0.0498047v-16.8799c0 -41.4199 49.0107 -95.04 93.4902 -95.04c52 0 122.76 1.4502 156.37 -29.1699v-2.50977\nc-9.41992 -17.1104 -20.5801 -33.1699 -33.1797 -47.9697c-12.5303 21.0898 -51.5898 40.96 -108.021 41.3496c-45.6797 -1.01953 -79.0195 -20.3301 -90.7598 -40.8701c-0.00976562 -0.00976562 0.00976562 -0.0400391 0 -0.0498047\nc-7.66992 -2.13965 -15.8496 -3.23047 -24.04 -3.20996c-8.19043 -0.0205078 -16.3701 1.07031 -24.04 3.20996c-0.00976562 0.00976562 0.00976562 0.0400391 0 0.0498047c-11.7295 20.54 -45.0801 39.8506 -90.7598 40.8701\nc-56.4307 -0.400391 -95.5 -20.2598 -108.021 -41.3496c-12.5996 14.7998 -23.7598 30.8496 -33.1797 47.9697v2.50977c33.6201 30.6201 104.37 29.1699 156.37 29.1699c44.4795 0 93.4902 53.6201 93.4902 95.04v16.8799h0.0498047\nc0.229492 11.1201 2.85938 19.9307 6.08984 19.9307zM256 161.56c-22.4199 0 -40.5996 -18.1797 -40.5996 -40.5996s18.1797 -40.6504 40.5996 -40.6504s40.5996 18.2305 40.5996 40.6504s-18.1797 40.5996 -40.5996 40.5996zM256 153.92\nc18.1904 0 32.96 -14.7695 32.96 -32.96s-14.7695 -32.96 -32.96 -32.96s-32.96 14.7695 -32.96 32.96s14.7695 32.96 32.96 32.96zM256 147.78c-14.8096 0 -26.8203 -12.0107 -26.8203 -26.8203s12.0107 -26.8203 26.8203 -26.8203s26.8203 12.0107 26.8203 26.8203\ns-12.0107 26.8203 -26.8203 26.8203zM141.2 81.1104c18.75 -0.419922 35.1895 -4.18066 48.6094 -9.66992c12.5508 -16.0303 29.1602 -30.04 49.5801 -33.0703c0.100586 -0.00976562 0.169922 -0.0302734 0.270508 -0.0498047\nc0.0498047 -0.0107422 0.109375 -0.0400391 0.160156 -0.0507812c5.23926 -1.06934 10.6396 -1.59961 16.1895 -1.59961c5.56055 0 10.9502 0.530273 16.1904 1.59961c0.0498047 0.0107422 0.109375 0.0400391 0.160156 0.0507812\nc0.0996094 0.00976562 0.179688 0.0292969 0.269531 0.0498047c20.4199 3.04004 37.04 17.04 49.5801 33.0703c13.4199 5.5 29.8496 9.25 48.6104 9.66992c10.1797 -0.0800781 21.5996 -0.360352 30.5 -1.66016c-0.430664 -4.41992 -1.51074 -18.6299 -7.11035 -29.7598\nc-9.11035 2.55957 -18.3604 3.89941 -27.6201 3.89941c-41.2803 -0.939453 -71.4795 -34.3496 -78.2598 -74.4697l-0.110352 -4.7002c-10.3994 -1.91992 -21.1797 -2.93945 -32.21 -2.93945c-11.0195 0 -21.8096 1.0293 -32.21 2.93945l-0.109375 4.7002\nc-6.78027 40.1201 -36.9805 73.5303 -78.2607 74.4697c-9.25977 0 -18.5098 -1.33984 -27.6201 -3.89941c-5.59961 11.1299 -6.67969 25.3398 -7.10938 29.7598c8.89941 1.2998 20.3096 1.58984 30.5 1.66016z\" />\n    <glyph glyph-name=\"jedi-order\" unicode=\"&#xf50e;\" \nd=\"M398.5 74.4004c0 0 26.2998 16.1992 49.9004 77.6992c0 0 -17 -183.3 -222 -185.699h-4.10059c-205.1 2.39941 -222 185.699 -222 185.699c23.2002 -61.5996 49.4004 -77.6992 49.4004 -77.6992c-95.9004 122.1 -17.2002 233.1 -17.2002 233.1\nc-45.4004 -85.7002 41.4004 -170.5 41.4004 -170.5c-105 171.6 60.5 271.5 60.5 271.5c-96.9004 -72.5996 10.0996 -190.7 10.0996 -190.7c-85.7998 -158.399 68.5996 -230.1 68.5996 -230.1s0.400391 16.8994 2.2002 85.7002l-34.5 -36.2002l24.2002 47.3994\nl-62.5996 9.10059l62.5996 9.09961l-20.2002 55.5l31.4004 -45.8994c2.2998 87.8994 7.89941 305.899 7.89941 306.899v2.40039v-1v1v-2.40039c0.100586 -1.7998 5.7002 -219.2 7.90039 -306.899l31.4004 45.8994l-20.2002 -55.5l62.5996 -9.09961l-62.5996 -9.10059\nl24.2002 -47.3994s-30.2002 31.7002 -34.5 36.2002c1.7998 -68.8008 2.19922 -85.7002 2.19922 -85.7002s154.4 71.7002 68.6006 230.1c0 0 107 118 10.0996 190.7c0 0 165.5 -100 60.5 -271.5c0 0 86.7998 84.7002 41.4004 170.5c0 0 78.7002 -111 -17.2002 -233.1z\" />\n    <glyph glyph-name=\"mandalorian\" unicode=\"&#xf50f;\" \nd=\"M232.27 -63.8896c-1 3.25977 -1.68945 15.8301 -1.38965 24.5801c0.549805 15.8896 1 24.7197 1.40039 28.7598c0.639648 6.2002 2.87012 20.7197 3.2793 21.3799c0.600586 1 0.400391 27.8701 -0.239258 33.1299c-0.310547 2.58008 -0.629883 11.9004 -0.69043 20.7305\nc-0.129883 16.4697 -0.530273 20.1191 -2.72949 24.7598c-1.10059 2.31934 -1.23047 3.83984 -1 11.4297c0.0449219 1.07324 0.0820312 2.81641 0.0820312 3.89062c0 2.43945 -0.189453 6.39062 -0.422852 8.81934c-2 13 -3.45996 27.7002 -3.25 33.9004\ns0.430664 7.14941 2.06055 9.66992c3.0498 4.70996 6.50977 14 8.62012 23.2695c2.25977 9.86035 3.87988 17.1807 4.58984 20.7402c0.921875 4.24121 2.90137 10.9834 4.41992 15.0498c2.26953 6.25 2.49023 15.3906 0.370117 15.3906\nc-0.299805 0 -1.37988 -1.2207 -2.41016 -2.70996c-1.03027 -1.49023 -4.75977 -4.80078 -8.29004 -7.36035c-8.37012 -6.08008 -11.7002 -9.38965 -12.6602 -12.5801s-1 -7.22949 -0.160156 -7.75977c0.34082 -0.209961 1.29004 -2.40039 2.11035 -4.87988\nc0.791992 -2.41602 1.43457 -6.43945 1.43457 -8.98145c0 -1.78223 -0.320312 -4.64062 -0.714844 -6.37891c-0.389648 -1.76953 -1 -5.46973 -1.45996 -8.22949c-0.459961 -2.76074 -1 -6.46094 -1.25 -8.2207c-0.149414 -1.27637 -0.84375 -3.18555 -1.5498 -4.25977\nc-1 -1 -1.13965 -0.910156 -2.0498 0.530273c-0.619141 1.24316 -1.26465 3.37109 -1.44043 4.75c-0.25 1.73926 -1.62988 7.10938 -3.08008 11.9297c-3.2793 10.9004 -3.51953 16.1504 -1 21c0.683594 1.19141 1.43164 3.25684 1.66992 4.61035\nc0 2.38965 -2.19922 5.31934 -7.40918 9.88965c-7 6.17969 -8.62988 7.91992 -10.2305 11.2998c-1.70996 3.60059 -3.05957 4.06055 -4.54004 1.54004c-1.78027 -3 -2.59961 -9.10938 -3 -22l-0.339844 -12.1895l2 -2.25c3.20996 -3.7002 12.0703 -16.4502 13.7803 -19.8301\nc3.41016 -6.74023 4.33984 -11.6904 4.41016 -23.5605c0.0693359 -11.8701 0.949219 -22.75 2 -24.71c0.359375 -0.660156 0.509766 -1.34961 0.339844 -1.51953s0.410156 -2.08984 1.29004 -4.27051c0.871094 -2.41406 1.79395 -6.44629 2.05957 -9\nc0.306641 -2.88867 1.07227 -7.53516 1.70996 -10.3701c2.23047 -9.55957 2.77051 -14.0801 2.39062 -20.1396c-0.200195 -3.26953 -0.530273 -11.0703 -0.730469 -17.3203c-1.30957 -41.7598 -1.84961 -58 -2 -61.21c-0.120117 -2 -0.389648 -11.5098 -0.599609 -21.0693\nc-0.360352 -16.3008 -1.30078 -27.3701 -2.41992 -28.6504c-0.640625 -0.729492 -8.07031 4.91016 -12.5205 9.49023c-3.75 3.87012 -4 4.79004 -2.83008 9.9502c0.700195 3 2.25977 18.29 3.33008 32.6191c0.360352 4.78027 0.80957 10.5 1 12.7109\nc0.830078 9.36914 1.66016 20.3496 2.61035 34.7793c0.55957 8.45996 1.33008 16.4404 1.71973 17.7305s0.889648 9.88965 1.12988 19.1094l0.429688 16.7705l-2.25977 4.2998c-1.71973 3.28027 -4.87012 6.94043 -13.2197 15.3398\nc-6 6.07031 -11.8398 12.2998 -12.9102 13.8506l-1.9502 2.80957l0.75 10.9004c1.08984 15.71 1.10059 48.5693 0 59.0596l-0.889648 8.7002l-3.28027 4.51953c-5.85938 8.08008 -5.7998 7.75 -6.21973 33.2705c-0.100586 6.07031 -0.379883 11.5 -0.629883 12.0596\nc-0.830078 1.87012 -3.0498 2.66016 -8.54004 3.05078c-8.86035 0.619141 -11 1.89941 -23.8506 14.5498c-6.14941 6 -12.3398 12 -13.75 13.1895c-2.80957 2.41992 -2.79004 2 -0.55957 9.62988l1.34961 4.65039l-1.68945 3c-0.630859 1.17676 -1.79102 3 -2.58984 4.07031\nc-1.33008 1.50977 -5.5 10.8896 -6 13.4893c-0.0859375 0.307617 -0.155273 0.816406 -0.155273 1.13574c0 0.868164 0.458984 2.10645 1.02539 2.76465c2.22949 2.86035 3.39941 5.67969 4.44922 10.7305c2.33008 11.1895 7.74023 26.0898 10.6006 29.2197\nc3.17969 3.46973 7.7002 1 9.41016 -5c1.33984 -4.79004 1.36914 -9.79004 0.0996094 -18.5498c-0.445312 -3.05176 -0.893555 -8.02832 -1 -11.1104c0 -4 0.19043 -4.69043 2.25 -7.38965c3.33008 -4.37012 7.72949 -7.41016 15.2002 -10.5205\nc1.41992 -0.591797 3.53418 -1.86914 4.71973 -2.84961c11.1699 -10.7207 18.6201 -16.1807 22.9502 -16.8506c5.17969 -0.799805 8 -4.54004 10 -13.3896c1.30957 -5.65039 4 -11.1396 5.45996 -11.1396c0.994141 0.203125 2.48633 0.826172 3.33008 1.38965\nc2 1.21973 2.25 1.73047 2.25 4.17969c-0.21875 4.96191 -1.11523 12.9541 -2 17.8398c-0.370117 1.66016 -0.780273 4.06055 -0.930664 5.35059c-0.149414 1.29004 -0.609375 3.84961 -1 5.68945c-2.5498 11.1602 -3.64941 15.46 -4.09961 16\nc-1.5498 2 -4.08008 10.2002 -4.92969 15.9209c-1.64062 11.1094 -4 14.2295 -12.9102 17.3896c-4.0791 1.50293 -10.0547 5.0332 -13.3398 7.87988c-1.15039 1 -4 3.21973 -6.35059 5.05957c-2.34961 1.84082 -4.40918 3.53027 -4.59961 3.76074\nc-0.701172 0.606445 -1.90625 1.50293 -2.69043 2c-6.23926 4.21973 -8.83984 7 -11.2598 12l-2.43945 5l-0.220703 13l-0.219727 13l6.91016 6.5498c3.9502 3.75 8.47949 7.34961 10.5898 8.42969c3.30957 1.69043 4.4502 1.89062 11.3701 2\nc8.53027 0.19043 10.1201 0 11.6602 -1.55957c1.54004 -1.56055 1.35938 -6.40039 -0.290039 -8.5c-0.501953 -0.564453 -1.10156 -1.60352 -1.33984 -2.32031c0 -0.580078 -2.61035 -4.91016 -5.41992 -9c-0.879883 -1.80371 -1.94141 -4.85938 -2.37012 -6.82031\nc20.4395 -13.3896 21.5498 -3.76953 14.0693 -29l11.3604 -2.51953c3.11035 8.66016 6.46973 17.2598 8.61035 26.2197c0.290039 7.62988 -12 4.19043 -15.4004 8.68066c-2.33008 5.92969 3.12988 14.1797 6.05957 19.1992c1.60059 2.33984 6.62012 4.7002 8.82031 4.15039\nc0.879883 -0.219727 4.16016 0.349609 7.37012 1.28027c2.04395 0.641602 5.42676 1.39453 7.5498 1.67969c1.69336 0.183594 4.38184 0.760742 6 1.29004c3.65039 1.11035 4.5 1.16992 6.35059 0.400391c1.56738 -0.539062 4.1748 -1.14844 5.81934 -1.36035\nc1.74902 -0.236328 4.43652 -1.0918 6 -1.91016c1.30762 -0.765625 3.54785 -1.73828 5 -2.16992c2.51074 -0.679688 3 -0.570312 7.05078 1.66992l4.34961 2.40039l10.7402 0.389648c10.4395 0.400391 10.8096 0.469727 15.2598 2.67969l4.58008 2.32031l2.45996 -1.42969\nc1.75977 -1 3.13965 -2.73047 4.84961 -6c2.36035 -4.51074 2.37988 -4.58008 1.37012 -7.37012c-0.879883 -2.44043 -0.889648 -3.2998 -0.0996094 -6.39062c0.435547 -1.68164 1.37695 -4.3291 2.09961 -5.90918c0.535156 -1.04785 1.12207 -2.83984 1.31055 -4\nc0.30957 -4.33008 0 -5.30078 -2.41016 -6.91992c-2.16992 -1.4707 -7 -7.91016 -7 -9.34082c-0.206055 -0.859375 -0.685547 -2.2041 -1.07031 -3c-5 -11.5098 -6.75977 -13.5596 -14.2598 -17c-9.2002 -4.19922 -12.2998 -5.18945 -16.21 -5.18945\nc-3.10059 0 -4 -0.25 -4.54004 -1.25977c-0.972656 -1.19629 -2.80566 -2.8584 -4.08984 -3.70996c-1.53223 -1.02344 -3.49512 -3.16504 -4.37988 -4.78027c-0.411133 -1.04004 -1.52734 -2.34375 -2.49023 -2.91016\nc-0.78125 -0.321289 -1.87891 -1.08789 -2.4502 -1.70996c-1.83496 -1.61133 -4.9707 -4.02148 -7 -5.37988c-3.33008 -2.33984 -6.87012 -5 -7.87012 -6c-0.560547 -0.604492 -1.62695 -1.36621 -2.37988 -1.7002c-0.697266 -0.314453 -1.65137 -1.05273 -2.12988 -1.65039\nc-1.31055 -1.38965 -1.49023 -2.10938 -1.13965 -4.59961c0.255859 -1.65527 0.892578 -4.29004 1.41992 -5.87988c1.31934 -3.7998 1.30957 -7.86035 0 -10.5703c-1.31055 -2.70996 -0.890625 -6.64941 1.34961 -9.58984c2 -2.62988 2.16016 -4.55957 0.709961 -8.83984\nc-0.587891 -2.27344 -1.06445 -6.02344 -1.06445 -8.37109c0 -0.148438 0.00195312 -0.390625 0.00488281 -0.539062c0 -4.87988 0.219727 -6.28027 1.45996 -8.37988c1.23926 -2.09961 1.81934 -2.48047 3.23926 -2.32031c2 0.230469 2.30078 1.0498 4.70996 12.1201\nc2.18066 10 3.70996 11.9199 13.7607 17.0801c2.93945 1.50977 7.45996 4 10 5.44043c2.54004 1.43945 6.79004 3.68945 9.37012 4.90918c4.99414 2.18652 11.8125 7.41504 15.2197 11.6709c7.10938 8.78906 10 16.2197 12.8496 33.2998\nc0.298828 2.31445 1.58008 5.77832 2.86035 7.72949c1.19434 1.86133 2.48828 5.13574 2.88965 7.31055c1 5.2998 2.85059 9.08008 5.58008 11.5098c4.7002 4.17969 6 1.08984 4.58984 -10.8701c-0.459961 -3.86035 -1.09961 -10.3301 -1.43945 -14.3799l-0.610352 -7.36035\nl4.4502 -4.08984l4.4502 -4.08984l0.109375 -8.41992c0.0605469 -4.62988 0.470703 -9.53027 0.919922 -10.8896l0.820312 -2.4707l-6.42969 -6.2793c-8.54004 -8.33008 -12.8799 -13.9307 -16.7598 -21.6104c-1.77051 -3.49023 -3.74023 -7.11035 -4.38086 -8\nc-2.17969 -3.11035 -6.45996 -13 -8.75977 -20.2598l-2.29004 -7.2207l-7 -6.48926c-3.83008 -3.57031 -8 -7.25 -9.16992 -8.16992c-3.0498 -2.32031 -4.25977 -5.15039 -4.25977 -10c-0.00683594 -0.166992 -0.0126953 -0.438477 -0.0126953 -0.605469\nc0 -1.94336 0.717773 -4.9248 1.60254 -6.65527c0.660156 -1.29688 1.59668 -3.45996 2.08984 -4.83008c0.290039 -0.875 0.993164 -2.16992 1.57031 -2.88965c1.40039 -1.58984 1.91992 -16.1201 0.830078 -23.2197c-0.679688 -4.48047 -3.62988 -12 -4.7002 -12\nc-1.79004 0 -4.05957 -9.27051 -5.07031 -20.7402c-0.179688 -2 -0.620117 -5.94043 -1 -8.7002s-1 -10 -1.34961 -16.0498c-0.770508 -12.2197 -0.19043 -18.7705 2 -23.1504c3.41016 -6.68945 0.519531 -12.6895 -11 -22.8398l-4 -3.49023l0.0703125 -5.18945\nc0.0439453 -2.4834 0.554688 -6.45703 1.13965 -8.87012c4.61035 -16 4.73047 -16.9199 4.37988 -37.1299c-0.459961 -26.4004 -0.259766 -40.2705 0.629883 -44.1504c0.410156 -1.91406 0.893555 -5.05078 1.08008 -7c0.169922 -2 0.660156 -5.33008 1.08008 -7.35938\nc0.469727 -2.26074 0.780273 -11 0.790039 -22.7402v-19.0605l-1.80957 -2.62988c-2.70996 -3.91016 -15.1104 -13.54 -15.4902 -12.29zM261.8 -18.7803c-0.179688 0.299805 -0.330078 6.87012 -0.330078 14.5898c0 14.0605 -0.889648 27.54 -2.25977 34.4502\nc-0.400391 2 -0.80957 9.7002 -0.900391 17.0605c-0.149414 11.9297 -1.39941 24.3701 -2.63965 26.3799c-0.660156 1.06934 -3 17.6602 -3 21.2998c0 4.23047 1 6 5.28027 9.12988s4.85938 3.13965 5.47949 0.719727c0.280273 -1.09961 1.4502 -5.61914 2.60059 -10\nc3.92969 -15.1191 4.13965 -16.2695 4.0498 -21.7393c-0.0996094 -5.78027 -0.129883 -6.12988 -1.74023 -17.7305c-1 -7.07031 -1.16992 -12.3896 -1 -28.4297c0.169922 -19.4004 -0.639648 -35.7305 -2 -41.2705c-0.709961 -2.7793 -2.7998 -5.47949 -3.42969 -4.42969z\nM190.8 18.7998c-0.638672 2.95215 -1.41406 7.78613 -1.72949 10.79s-1.09082 7.83789 -1.73047 10.79c-0.433594 1.76758 -0.880859 4.6748 -1 6.49023c-0.30957 3.18945 -0.910156 7.45996 -1.33008 9.47949c-1 4.79004 -3.34961 19.3506 -3.41992 21.0703\nc0 0.740234 -0.339844 4.0498 -0.700195 7.36035c-0.669922 6.20996 -0.839844 27.6699 -0.219727 28.29c1 1 6.62988 -2.76074 11.3301 -7.43066l5.28027 -5.25l-0.450195 -6.46973c-0.25 -3.55957 -0.599609 -10.2295 -0.780273 -14.8301\nc-0.179688 -4.59961 -0.490234 -9.87012 -0.669922 -11.71s-0.610352 -9.36035 -0.939453 -16.7197c-0.790039 -17.4102 -1.94043 -31.29 -2.65039 -32c-0.101562 -0.107422 -0.302734 -0.193359 -0.450195 -0.193359c-0.208008 0 -0.454102 0.149414 -0.549805 0.333008\nh0.00976562zM103.62 285.39c21.0703 -12.79 17.8398 -14.1494 28.4902 -17.6592c13 -4.29004 18.8701 -7.13086 23.1494 -16.8701c-43.6602 -36.1406 -69.0098 -57.8604 -76.71 -70.8604c-31 -52 -6 -101.59 62.75 -87.21c-14.1797 -29.2305 -78 -28.6299 -98.6797 4.90039\nc-24.6797 39.9492 -22.0898 118.3 61 187.659v0.0400391zM314.41 106.39c56.6602 -6.87988 82.3203 37.7402 46.54 89.2305c0 0 -26.8701 29.3398 -64.2803 68c3 15.4502 9.49023 32.1201 30.5703 53.8203c89.2002 -63.5107 92 -141.61 92.46 -149.36\nc4.2998 -70.6396 -78.7002 -91.1797 -105.29 -61.71v0.0195312z\" />\n    <glyph glyph-name=\"old-republic\" unicode=\"&#xf510;\" horiz-adv-x=\"496\" \nd=\"M235.76 437.77c7.5 0.310547 15 0.280273 22.5 0.0908203c3.61035 -0.140625 7.2002 -0.400391 10.79 -0.730469c4.91992 -0.269531 9.79004 -1.03027 14.6699 -1.62012c2.93066 -0.429688 5.83008 -0.979492 8.75 -1.45996\nc7.90039 -1.33008 15.6699 -3.28027 23.3906 -5.39941c12.2393 -3.4707 24.1895 -7.91992 35.7598 -13.21c26.5596 -12.2402 50.9395 -29.21 71.6299 -49.8809c20.0303 -20.0898 36.7197 -43.5498 48.8896 -69.1895c1.12988 -2.58984 2.44043 -5.10059 3.4707 -7.74023\nc2.80957 -6.42969 5.38965 -12.9697 7.58008 -19.6299c4.13965 -12.3301 7.33984 -24.9902 9.41992 -37.8301c0.569336 -3.13965 1.04004 -6.2998 1.39941 -9.46973c0.549805 -3.83008 0.94043 -7.69043 1.18066 -11.5605\nc0.829102 -8.33984 0.839844 -16.7295 0.769531 -25.0996c-0.0703125 -4.96973 -0.259766 -9.94043 -0.75 -14.8896c-0.240234 -3.38086 -0.509766 -6.76074 -0.979492 -10.1201c-0.390625 -2.7207 -0.630859 -5.45996 -1.11035 -8.16992\nc-0.900391 -5.15039 -1.7002 -10.3105 -2.87012 -15.4102c-4.09961 -18.5 -10.2998 -36.5498 -18.5098 -53.6299c-15.7705 -32.8301 -38.8301 -62.1699 -67.1201 -85.1201c-14.3926 -11.7676 -39.8887 -27.3848 -56.9102 -34.8604\nc-6.20996 -2.67969 -12.46 -5.25 -18.8701 -7.41016c-3.50977 -1.16016 -7.00977 -2.37988 -10.5703 -3.38965c-6.61914 -1.87988 -13.2891 -3.63965 -20.0391 -5c-4.66016 -0.910156 -9.34082 -1.73047 -14.0303 -2.48047c-5.25 -0.65918 -10.5 -1.43945 -15.79 -1.73926\nc-6.69043 -0.660156 -13.4102 -0.839844 -20.1201 -0.810547c-6.82031 -0.0292969 -13.6504 0.120117 -20.4502 0.790039c-3.29004 0.230469 -6.57031 0.5 -9.83008 0.950195c-2.71973 0.389648 -5.45996 0.629883 -8.16992 1.11035\nc-4.12012 0.719727 -8.25 1.37012 -12.3496 2.21973c-4.25 0.939453 -8.49023 1.88965 -12.6904 3.01953c-8.62988 2.16992 -17.0801 5.01074 -25.4102 8.13086c-10.4893 4.11914 -20.79 8.75 -30.6396 14.25c-2.13965 1.14941 -4.28027 2.28906 -6.34961 3.56934\nc-11.2207 6.58008 -21.8604 14.1006 -31.9199 22.3398c-34.6807 28.4102 -61.4102 66.4307 -76.3506 108.7c-3.08984 8.74023 -5.70996 17.6504 -7.7998 26.6797c-1.48047 6.16016 -2.52051 12.4209 -3.58008 18.6602\nc-0.400391 2.35059 -0.610352 4.73047 -0.950195 7.08984c-0.599609 3.96094 -0.75 7.96094 -1.16992 11.9404c-0.799805 9.46973 -0.709961 18.9902 -0.509766 28.4902c0.139648 3.50977 0.339844 7.00977 0.700195 10.5098\nc0.30957 3.16992 0.459961 6.37012 0.919922 9.52051c0.410156 2.80957 0.649414 5.64941 1.16016 8.43945c0.699219 3.94043 1.2998 7.90039 2.11914 11.8203c3.43066 16.5195 8.4707 32.7295 15.2607 48.1797c1.14941 2.91992 2.58984 5.71973 3.85938 8.58984\nc8.05078 16.71 17.9004 32.5605 29.4902 47.0605c20 25.3799 45.1006 46.6797 73.2705 62.4697c7.5 4.15039 15.1592 8.0498 23.0693 11.3701c15.8203 6.87988 32.4102 11.9502 49.3105 15.3799c3.50977 0.669922 7.04004 1.24023 10.5596 1.84961\nc2.62012 0.470703 5.28027 0.700195 7.91016 1.08008c3.53027 0.530273 7.09961 0.680664 10.6504 1.04004c2.45996 0.240234 4.90918 0.360352 7.35938 0.509766zM244.4 413.36c-9.23047 -0.100586 -18.4307 -0.990234 -27.5703 -2.23047\nc-7.2998 -1.08008 -14.5303 -2.59961 -21.71 -4.2998c-13.9102 -3.5 -27.4805 -8.33984 -40.46 -14.4199c-10.46 -4.99023 -20.5898 -10.7002 -30.1797 -17.2197c-4.18066 -2.9209 -8.40039 -5.80078 -12.3408 -9.03027\nc-5.08008 -3.96973 -9.97949 -8.16992 -14.6797 -12.5898c-2.50977 -2.24023 -4.80957 -4.7002 -7.21973 -7.06055c-28.2207 -28.79 -48.4404 -65.3896 -57.5 -104.689c-2.04004 -8.44043 -3.54004 -17.0205 -4.44043 -25.6504\nc-1.09961 -8.88965 -1.43945 -17.8496 -1.41016 -26.7998c0.110352 -7.13965 0.379883 -14.2803 1.2207 -21.3701c0.620117 -7.12012 1.87012 -14.1602 3.19922 -21.1797c1.07031 -4.65039 2.03027 -9.32031 3.33008 -13.9102\nc6.29004 -23.3799 16.5 -45.7002 30.0703 -65.75c8.63965 -12.9805 18.7803 -24.9297 29.9805 -35.7705c16.2793 -15.8193 35.0498 -29.04 55.3398 -39.2197c7.2793 -3.51953 14.6602 -6.87012 22.2695 -9.62988c5.04004 -1.75977 10.0605 -3.57031 15.2197 -4.98047\nc11.2607 -3.22949 22.7705 -5.59961 34.3906 -7.05957c2.91016 -0.290039 5.80957 -0.610352 8.71973 -0.900391c13.8203 -1.08008 27.7402 -1 41.54 0.430664c4.4502 0.599609 8.91992 0.989258 13.3496 1.7793c3.63086 0.670898 7.28027 1.25 10.8701 2.10059\nc4.12988 0.979492 8.28027 1.91016 12.3604 3.07031c26.5 7.33984 51.5801 19.71 73.5801 36.1992c15.7803 11.8203 29.96 25.7607 42.1201 41.2803c3.25977 4.02051 6.16992 8.30957 9.12988 12.5498c3.38965 5.06055 6.58008 10.25 9.59961 15.54\nc2.40039 4.44043 4.74023 8.91016 6.9502 13.4502c5.69043 12.0498 10.2803 24.6201 13.75 37.4902c2.58984 10.0098 4.75 20.1602 5.90039 30.4502c1.76953 13.4697 1.93945 27.0996 1.29004 40.6494c-0.290039 3.89062 -0.669922 7.77051 -1 11.6602\nc-2.23047 19.0801 -6.79004 37.9102 -13.8203 55.7998c-5.9502 15.1299 -13.5303 29.6299 -22.6104 43.1299c-12.6895 18.8008 -28.2393 35.6807 -45.9697 49.8301c-25.0498 20 -54.4697 34.5498 -85.6504 42.0801c-7.7793 1.92969 -15.6895 3.33984 -23.6299 4.4502\nc-3.90918 0.589844 -7.84961 0.820312 -11.7695 1.24023c-7.38965 0.569336 -14.8105 0.719727 -22.2197 0.580078zM139.26 364.47c13.2998 8.89062 28.0801 15.3799 43.2998 20.1807c-3.16992 -1.77051 -6.43945 -3.38086 -9.5293 -5.29004\nc-11.21 -6.68066 -21.5205 -14.9004 -30.3799 -24.4902c-6.80078 -7.42969 -12.7607 -15.7305 -17.0107 -24.8896c-3.29004 -6.86035 -5.63965 -14.1904 -6.85938 -21.7109c-0.930664 -4.84961 -1.2998 -9.80957 -1.16992 -14.75\nc0.129883 -13.6592 4.43945 -27.0791 11.29 -38.8193c5.91992 -10.2197 13.6299 -19.3301 22.3594 -27.2598c4.85059 -4.36035 10.2402 -8.09082 14.9502 -12.6006c2.25977 -2.18945 4.49023 -4.41992 6.42969 -6.91016c2.62012 -3.30957 4.89062 -6.98926 5.99023 -11.0996\nc0.900391 -3.02051 0.660156 -6.2002 0.69043 -9.31055c0.0195312 -4.09961 -0.0400391 -8.19922 0.0292969 -12.2998c0.140625 -3.54004 -0.0195312 -7.08984 0.110352 -10.6299c0.0800781 -2.37988 0.0205078 -4.75977 0.0498047 -7.13965\nc0.160156 -5.77051 0.0605469 -11.5303 0.150391 -17.2998c0.109375 -2.91016 0.0195312 -5.82031 0.129883 -8.74023c0.0302734 -1.62988 0.129883 -3.28027 -0.0302734 -4.91016c-0.910156 -0.120117 -1.81934 -0.179688 -2.72949 -0.160156\nc-10.9902 0 -21.8799 2.62988 -31.9502 6.92969c-6 2.7002 -11.8105 5.89062 -17.0898 9.83008c-5.75 4.19043 -11.0898 8.95996 -15.79 14.3105c-6.53027 7.24023 -11.9805 15.3896 -16.6201 23.9502c-1.07031 2.0293 -2.24023 4.01953 -3.17969 6.12012\nc-1.16016 2.63965 -2.62012 5.13965 -3.66992 7.81934c-4.05078 9.68066 -6.57031 19.9404 -8.08008 30.3105c-0.490234 4.43945 -1.09082 8.87988 -1.2002 13.3496c-0.700195 15.7305 0.839844 31.5498 4.66992 46.8203c2.12012 8.14941 4.76953 16.1797 8.30957 23.8301\nc6.32031 14.1992 15.3398 27.1797 26.3008 38.1895c6.2793 6.2002 13.1299 11.8398 20.5293 16.6699zM314.63 384.59c2.74023 -0.740234 5.41016 -1.74023 8.08984 -2.67969c6.36035 -2.33008 12.6807 -4.83984 18.71 -7.95996\nc13.1104 -6.44043 25.3105 -14.8105 35.8203 -24.9697c10.2002 -9.9502 18.7402 -21.6006 25.1396 -34.3408c1.28027 -2.75 2.64062 -5.45996 3.81055 -8.25977c6.30957 -15.0996 10 -31.2598 11.2295 -47.5703c0.410156 -4.54004 0.44043 -9.08984 0.450195 -13.6396\nc0.0703125 -11.6396 -1.49023 -23.25 -4.2998 -34.5303c-1.96973 -7.26953 -4.34961 -14.4893 -7.86035 -21.1797c-3.17969 -6.63965 -6.67969 -13.1602 -10.8398 -19.2402c-6.93945 -10.4697 -15.5996 -19.8701 -25.8203 -27.2197\nc-10.4795 -7.63965 -22.6396 -13.0195 -35.3994 -15.3799c-3.50977 -0.69043 -7.08008 -1.08008 -10.6602 -1.20996c-1.84961 -0.0605469 -3.71973 -0.160156 -5.55957 0.0996094c-0.280273 2.15039 0 4.31055 -0.0107422 6.45996\nc-0.0292969 3.73047 0.140625 7.4502 0.100586 11.1699c0.189453 7.02051 0.0195312 14.0508 0.209961 21.0703c0.0292969 2.37988 -0.0302734 4.75977 0.0292969 7.13965c0.170898 5.07031 -0.0390625 10.1406 0.140625 15.21\nc0.0996094 2.99023 -0.240234 6.04004 0.509766 8.95996c0.660156 2.5 1.78027 4.86035 3.08984 7.08008c4.45996 7.31055 11.0605 12.96 17.6807 18.2607c5.37988 4.17969 10.4697 8.76953 15.0195 13.8398c7.67969 8.37012 14.1699 17.8799 18.7803 28.2695\nc2.5 5.93066 4.51953 12.1006 5.5498 18.46c0.860352 4.37012 1.05957 8.83008 1.00977 13.2705c-0.0195312 7.84961 -1.39941 15.6494 -3.63965 23.1699c-1.75 5.72949 -4.27051 11.1797 -7.08984 16.4502c-3.87012 6.92969 -8.65039 13.3096 -13.96 19.1992\nc-9.94043 10.8506 -21.75 19.9404 -34.6006 27.1006c-1.84961 1.01953 -3.83984 1.82031 -5.62988 2.96973zM213.83 326.14c0.979492 1.18066 1.99023 2.33008 3.12012 3.37988c-0.610352 -0.929688 -1.27051 -1.80957 -1.9502 -2.67969\nc-3.09961 -3.87988 -5.54004 -8.30957 -7.03027 -13.0596c-0.870117 -3.27051 -1.67969 -6.60059 -1.72949 -10c-0.0703125 -2.52051 -0.0800781 -5.07031 0.319336 -7.57031c1.13086 -7.62988 4.33008 -14.8496 8.77051 -21.1201c2 -2.7002 4.25 -5.26953 6.91992 -7.33008\nc1.62012 -1.26953 3.53027 -2.08984 5.33984 -3.0498c3.11035 -1.67969 6.32031 -3.22949 9.07031 -5.47949c2.66992 -2.09082 4.5498 -5.33008 4.39941 -8.79004c-0.00976562 -73.6709 0 -147.341 -0.00976562 -221.021c0 -1.34961 -0.0800781 -2.7002 0.0400391 -4.04004\nc0.129883 -1.47949 0.820312 -2.83008 1.46973 -4.14941c0.860352 -1.66016 1.78027 -3.34082 3.18066 -4.62012c0.849609 -0.770508 1.96973 -1.40039 3.14941 -1.24023c1.5 0.200195 2.66016 1.34961 3.4502 2.57031c0.959961 1.50977 1.67969 3.15918 2.28027 4.84961\nc0.759766 2.12988 0.439453 4.41992 0.540039 6.62988c0.139648 4.03027 -0.0205078 8.06055 0.139648 12.0898c0.0302734 5.89062 0.0302734 11.7705 0.0605469 17.6602c0.139648 3.62012 0.0292969 7.24023 0.109375 10.8604\nc0.150391 4.0293 -0.0195312 8.05957 0.140625 12.0898c0.0292969 5.99023 0.0292969 11.9795 0.0693359 17.9697c0.140625 3.62012 0.0205078 7.24023 0.110352 10.8604c0.139648 3.92969 -0.0205078 7.85938 0.139648 11.7803\nc0.0302734 5.98926 0.0302734 11.9795 0.0605469 17.9697c0.160156 3.93945 -0.00976562 7.87988 0.189453 11.8193c0.290039 -1.43945 0.129883 -2.91992 0.220703 -4.37988c0.189453 -3.60938 0.419922 -7.22949 0.759766 -10.8398\nc0.320312 -3.43945 0.439453 -6.88965 0.859375 -10.3193c0.370117 -3.10059 0.510742 -6.2207 0.950195 -9.31055c0.570312 -4.08984 0.870117 -8.20996 1.54004 -12.29c1.45996 -9.04004 2.83008 -18.1104 5.08984 -26.9902c1.13086 -4.81934 2.40039 -9.60938 4 -14.2998\nc2.54004 -7.89941 5.7207 -15.6699 10.3105 -22.6201c1.72949 -2.63965 3.87012 -4.97949 6.09961 -7.20996c0.270508 -0.25 0.549805 -0.509766 0.879883 -0.709961c0.600586 -0.25 1.31055 0.0703125 1.7002 0.570312c0.709961 0.879883 1.16992 1.93945 1.7002 2.92969\nc4.0498 7.7998 8.17969 15.5605 12.3398 23.3105c0.700195 1.30957 1.44043 2.62012 2.56055 3.60938c1.75 1.57031 3.83984 2.69043 5.97949 3.62988c2.87988 1.2207 5.90039 2.19043 9.03027 2.41992c6.58008 0.620117 13.1094 -0.75 19.5596 -1.84961\nc3.69043 -0.580078 7.40039 -1.16992 11.1299 -1.41016c3.74023 -0.0996094 7.48047 -0.0498047 11.21 0.280273c8.55078 0.919922 16.9902 2.95996 24.9404 6.25c5.2998 2.24023 10.46 4.83008 15.3096 7.92969c11.46 7.20996 21.46 16.5703 30.04 27.0107\nc1.16992 1.41992 2.25 2.89941 3.45996 4.2793c-1.19922 -3.24023 -2.66992 -6.37012 -4.15918 -9.47949c-1.25 -2.90039 -2.84082 -5.61035 -4.27051 -8.41992c-5.16016 -9.62988 -11.0195 -18.9102 -17.75 -27.5205\nc-4.03027 -5.20996 -8.53027 -10.0498 -13.3301 -14.5703c-6.63965 -6.0498 -14.0703 -11.3691 -22.4297 -14.7598c-8.20996 -3.37012 -17.3105 -4.62988 -26.0898 -3.29004c-3.56055 0.580078 -7.01074 1.69043 -10.4102 2.87988\nc-2.79004 0.970703 -5.39062 2.38086 -8.03027 3.69043c-3.42969 1.70996 -6.63965 3.80957 -9.70996 6.08008c2.70996 -3.06055 5.69043 -5.86035 8.7002 -8.61035c4.26953 -3.75977 8.74023 -7.30957 13.6299 -10.2295c3.98047 -2.4502 8.29004 -4.40039 12.8398 -5.51074\nc1.45996 -0.369141 2.95996 -0.459961 4.4502 -0.599609c-1.25 -1.09961 -2.62988 -2.04004 -3.99023 -2.97949c-9.60938 -6.54004 -20.0098 -11.8604 -30.6895 -16.4307c-20.8604 -8.7002 -43.1699 -13.9697 -65.7402 -15.3398\nc-4.66016 -0.240234 -9.32031 -0.360352 -13.9805 -0.360352c-4.97949 0.110352 -9.96973 0.130859 -14.9199 0.650391c-11.2002 0.759766 -22.29 2.73047 -33.1699 5.42969c-10.3496 2.70996 -20.5498 6.12012 -30.2998 10.5508\nc-8.70996 3.85938 -17.1201 8.41992 -24.9902 13.79c-1.83008 1.30957 -3.74023 2.5293 -5.37012 4.0791c6.60059 1.19043 13.0303 3.39062 18.9902 6.48047c5.74023 2.86035 10.9902 6.66016 15.6299 11.0703c2.24023 2.18945 4.29004 4.58984 6.19043 7.08984\nc-3.43066 -2.12988 -6.93066 -4.15039 -10.6201 -5.78027c-4.41016 -2.16016 -9.07031 -3.76953 -13.8105 -5.01953c-5.72949 -1.52051 -11.7393 -1.73047 -17.6094 -1.14062c-8.12988 0.950195 -15.8604 4.27051 -22.5098 8.98047\nc-4.32031 2.93945 -8.2207 6.42969 -11.96 10.0596c-9.93066 10.1602 -18.2002 21.8105 -25.6602 33.8604c-3.94043 6.26953 -7.53027 12.75 -11.1201 19.2197c-1.0498 2.04004 -2.15039 4.0498 -3.17969 6.10059c2.84961 -2.9209 5.56934 -5.9707 8.42969 -8.88086\nc8.99023 -8.96973 18.5596 -17.4395 29.1602 -24.4795c7.5498 -4.90039 15.6699 -9.23047 24.5596 -11.0303c3.11035 -0.729492 6.32031 -0.469727 9.46973 -0.80957c2.77051 -0.280273 5.56055 -0.200195 8.34082 -0.299805\nc5.0498 -0.0605469 10.1094 -0.0400391 15.1592 0.15918c3.65039 0.160156 7.27051 0.660156 10.8906 1.09082c2.06934 0.25 4.10938 0.709961 6.13965 1.19922c3.87988 0.950195 8.11035 0.959961 11.8301 -0.609375c4.75977 -1.85059 8.44043 -5.64062 11.3799 -9.70996\nc2.16016 -3.02051 4.06055 -6.2207 5.66016 -9.58008c1.16016 -2.43066 2.45996 -4.79004 3.5498 -7.26074c1 -2.23926 2.15039 -4.41992 3.41992 -6.51953c0.669922 -1.01953 1.40039 -2.15039 2.62012 -2.5498c1.06055 0.75 1.70996 1.91016 2.28027 3.03027\nc2.09961 4.15918 3.41992 8.64941 4.88965 13.0498c2.02051 6.58984 3.78027 13.2695 5.19043 20.0195c2.20996 9.25 3.25 18.7197 4.54004 28.1299c0.55957 3.98047 0.830078 7.99023 1.30957 11.9707c0.870117 10.6396 1.90039 21.2695 2.24023 31.9395\nc0.0800781 1.86035 0.240234 3.70996 0.25 5.57031c0.00976562 4.34961 0.25 8.68945 0.219727 13.0303c-0.00976562 2.37988 -0.00976562 4.75977 0 7.12988c0.0498047 5.06934 -0.200195 10.1396 -0.219727 15.21c-0.200195 6.60938 -0.709961 13.2002 -1.29004 19.7793\nc-0.730469 5.88086 -1.5498 11.7803 -3.12012 17.5107c-2.0498 7.75 -5.58984 15.0293 -9.7998 21.8193c-3.16016 5.07031 -6.79004 9.87988 -11.0898 14.0303c-3.87988 3.86035 -8.58008 7.08008 -13.9404 8.4502c-1.5 0.410156 -3.05957 0.450195 -4.58984 0.639648\nc0.0703125 2.99023 0.700195 5.93066 1.25977 8.85059c1.58984 7.70996 3.7998 15.2998 6.76074 22.5996c1.51953 4.03027 3.40918 7.90039 5.38965 11.7197c3.4502 6.56055 7.62012 12.79 12.46 18.46zM245.1 324.44\nc0.350586 0.0595703 0.709961 0.119141 1.07031 0.189453c0.19043 -1.79004 0.0898438 -3.58008 0.0996094 -5.37012v-38.1299c-0.00976562 -1.74023 0.130859 -3.49023 -0.149414 -5.21973c-0.360352 0.0302734 -0.709961 0.0498047 -1.06055 0.0498047\nc-0.949219 3.75 -1.71973 7.5498 -2.61914 11.3096c-0.380859 1.53027 -0.580078 3.09082 -1.07031 4.59082c-1.7002 0.239258 -3.42969 0.169922 -5.15039 0.199219c-5.05957 0.0107422 -10.1299 0 -15.1895 0.0107422\nc-1.66016 0.00976562 -3.32031 -0.0898438 -4.98047 0.0292969c-0.0302734 0.390625 -0.259766 0.910156 0.160156 1.18066c1.28027 0.649414 2.71973 0.879883 4.05957 1.34961c3.43066 1.13965 6.88086 2.16016 10.3105 3.31055\nc1.38965 0.479492 2.90039 0.719727 4.16016 1.54004c0.0400391 0.55957 0.0195312 1.12988 -0.0498047 1.67969c-1.23047 0.549805 -2.53027 0.870117 -3.81055 1.28027c-3.12988 1.0293 -6.29004 1.95996 -9.41016 3.01953c-1.79004 0.620117 -3.66992 1 -5.41016 1.79004\nc-0.0292969 0.370117 -0.0693359 0.730469 -0.109375 1.08984c5.08984 0.19043 10.2002 -0.0595703 15.2998 0.120117c3.36035 0.129883 6.73047 -0.0800781 10.0898 0.0703125c0.120117 0.389648 0.259766 0.769531 0.370117 1.16016\nc1.08008 4.93945 2.33008 9.8291 3.38965 14.75zM251.07 324.64c0.359375 -0.0498047 0.719727 -0.120117 1.08008 -0.199219c0.979492 -3.85059 1.72949 -7.76074 2.70996 -11.6104c0.359375 -1.41992 0.55957 -2.87988 1.0293 -4.27051\nc2.53027 -0.179688 5.07031 0.0107422 7.61035 -0.0498047c5.16016 -0.120117 10.3301 -0.120117 15.4902 -0.0693359c0.759766 0.00976562 1.51953 -0.0302734 2.2793 -0.0800781c-0.0390625 -0.360352 -0.0693359 -0.720703 -0.0996094 -1.08008\nc-1.82031 -0.830078 -3.78027 -1.25 -5.66992 -1.89062c-3.73047 -1.22949 -7.48047 -2.38965 -11.2197 -3.56934c-0.570312 -0.169922 -1.12012 -0.419922 -1.66992 -0.640625c-0.150391 -0.549805 -0.180664 -1.12012 -0.120117 -1.68945\nc0.870117 -0.480469 1.81934 -0.810547 2.76953 -1.08984c4.87988 -1.52051 9.73047 -3.14062 14.6299 -4.60059c0.379883 -0.129883 0.780273 -0.269531 1.12988 -0.490234c0.400391 -0.269531 0.230469 -0.790039 0.150391 -1.17969\nc-1.66016 -0.129883 -3.30957 -0.0302734 -4.96973 -0.0400391c-5.16992 -0.00976562 -10.3301 0.00976562 -15.5 -0.00976562c-1.61035 -0.0302734 -3.21973 0.0195312 -4.82031 -0.209961c-0.519531 -1.66992 -0.719727 -3.41992 -1.16992 -5.11035\nc-0.94043 -3.56934 -1.51953 -7.24023 -2.54004 -10.7793c-0.360352 -0.0107422 -0.709961 -0.0205078 -1.05957 -0.0605469c-0.290039 1.73047 -0.150391 3.48047 -0.150391 5.21973v38.1299c0.0205078 1.78027 -0.0800781 3.58008 0.110352 5.37012zM65.0498 279.67\nc1.12012 2.15039 2.08008 4.40039 3.37012 6.45996c-1.82031 -7.55957 -2.91016 -15.2695 -3.62012 -23c-0.799805 -7.70996 -0.849609 -15.4902 -0.540039 -23.2295c1.0498 -19.9404 5.54004 -39.8301 14.2305 -57.8809c2.99023 -5.98926 6.34961 -11.8291 10.5 -17.1094\nc6.12012 -7.46973 12.5293 -14.7598 19.8398 -21.0898c4.7998 -4.10059 9.99023 -7.78027 15.54 -10.8008c3.26953 -1.64941 6.50977 -3.38965 9.93945 -4.67969c5.01074 -2.03027 10.1904 -3.60938 15.4209 -4.93945c3.8291 -0.959961 7.7793 -1.41016 11.5195 -2.70996\nc5 -1.57031 9.46973 -4.61035 13.0303 -8.43066c4.92969 -5.22949 8.08984 -11.8701 10.2002 -18.6699c0.989258 -2.89941 1.58984 -5.91016 2.16992 -8.91992c0.149414 -0.75 0.219727 -1.51953 0.15918 -2.29004c-6.5 -2.78027 -13.2598 -5.05957 -20.2598 -6.17969\nc-4.10938 -0.780273 -8.29004 -0.990234 -12.46 -1.08008c-10.25 -0.240234 -20.4697 1.75977 -30.1201 5.12012c-3.73926 1.41992 -7.48926 2.84961 -11.0293 4.71973c-8.06055 3.83984 -15.6406 8.7002 -22.46 14.46c-2.9209 2.5498 -5.83008 5.12988 -8.40039 8.03027\nc-9.16016 9.83008 -16.2998 21.4102 -21.79 33.6494c-2.38965 5.55078 -4.61035 11.1807 -6.37012 16.96c-1.16992 3.94043 -2.36035 7.89062 -3.25977 11.9102c-0.75 2.94043 -1.21973 5.9502 -1.87012 8.91992c-0.459961 2.14062 -0.69043 4.32031 -1.03027 6.48047\nc-0.849609 5.42969 -1.2793 10.9297 -1.33008 16.4297c0.110352 6.18066 0.25 12.3701 1.07031 18.5c0.400391 2.86035 0.669922 5.74023 1.15039 8.60059c0.979492 5.69922 2.13965 11.3691 3.70996 16.9297c3.08984 11.6504 7.47949 22.9502 12.6895 33.8398z\nM428.78 286.11c1.09961 -1.66016 1.91016 -3.48047 2.7793 -5.26074c2.10059 -4.44922 4.24023 -8.89941 6.02051 -13.4893c7.61035 -18.7607 12.2998 -38.79 13.04 -59.0508c0.0195312 -1.75977 0.0703125 -3.51953 0.110352 -5.29004\nc0.129883 -9.56934 -1.27051 -19.0898 -3.18066 -28.4492c-0.729492 -3.58984 -1.54004 -7.16992 -2.58008 -10.6904c-4.04004 -14.7197 -10 -29 -18.4102 -41.7803c-8.20996 -12.5693 -19.0098 -23.5498 -31.8398 -31.4092\nc-5.72949 -3.59082 -11.79 -6.64062 -18.0498 -9.19043c-5.78027 -2.19043 -11.71 -4.03027 -17.7998 -5.11035c-6.40039 -1.0498 -12.9102 -1.51953 -19.4004 -1.22949c-7.91992 0.479492 -15.7793 2.07031 -23.21 4.84961\nc-1.93945 0.799805 -3.93945 1.45996 -5.83984 2.33008c-0.209961 1.50977 0.25 2.99023 0.530273 4.45996c1.16016 5.74023 3.03027 11.3604 5.7002 16.5801c2.36914 4.50977 5.51953 8.65039 9.45996 11.9004c2.42969 2.0498 5.23926 3.60938 8.15918 4.83008\nc3.58008 1.5 7.4707 1.96973 11.2402 2.83008c7.23047 1.70996 14.3701 3.92969 21.1504 7c10.3496 4.64941 19.71 11.3799 27.6494 19.46c1.59082 1.60938 3.23047 3.17969 4.74023 4.86914c3.37012 3.76074 6.70996 7.57031 9.85059 11.5303\nc7.47949 10.0703 12.8193 21.5898 16.71 33.4805c1.58008 5.2998 3.20996 10.5996 4.20996 16.0498c0.629883 2.87012 1.04004 5.78027 1.51953 8.67969c0.870117 6.08984 1.58984 12.2207 1.67969 18.3799c0.120117 6.65039 0.140625 13.3203 -0.529297 19.9404\nc-0.730469 7.99023 -1.87012 15.96 -3.70996 23.7803z\" />\n    <glyph glyph-name=\"phoenix-squadron\" unicode=\"&#xf511;\" horiz-adv-x=\"512\" \nd=\"M96 384.62c46.4902 36.1299 105.55 56.0703 164.51 54.5703c29.5801 0.379883 59.1104 -5.37012 86.9102 -15.3301c-24.1299 4.62988 -49 6.33984 -73.3799 2.44922c-42.8701 -5.30957 -83.04 -27.1494 -111.83 -59.1797c5.66992 1 10.7803 3.66992 16 5.86035\nc18.1396 7.87012 37.4902 13.2598 57.2305 14.8301c19.7393 2.12988 39.6396 0.429688 59.2793 -1.91992c-14.4199 -2.79004 -29.1201 -4.57031 -43 -9.59082c-34.4297 -11.0693 -65.2695 -33.1592 -86.2998 -62.6299c-13.7998 -19.71 -23.6299 -42.8594 -24.6699 -67.1299\nc-0.349609 -16.4902 5.21973 -34.8096 19.8301 -44c7.01465 -4.23926 19.3594 -7.67969 27.5547 -7.67969c2.77539 0 7.23926 0.420898 9.96484 0.939453c15.4502 2.45996 30.0703 8.64062 43.6006 16.3301c11.5195 6.82031 22.6699 14.5508 32 24.25\nc3.79004 3.2207 2.53027 8.4502 2.62012 12.79c-2.12012 0.339844 -4.37988 1.11035 -6.30078 -0.299805c-9.47656 -5.19531 -25.5244 -12.0811 -35.8193 -15.3701c-20 -6.16992 -42.1602 -8.45996 -62.1006 -0.779297c12.79 -1.73047 26.0605 -0.310547 37.7402 5.43945\nc20.2305 9.71973 36.8105 25.2002 54.4404 38.7705c23.0107 17.7168 62.8379 42.4951 88.8994 55.3096c25.71 12 52.9404 22.7803 81.5703 24.1201c-15.6299 -13.7197 -32.1504 -26.5205 -46.7803 -41.3799c-14.5098 -14 -27.46 -29.5 -40.1094 -45.1807\nc-3.52051 -4.59961 -8.9502 -6.93945 -13.5801 -10.1592c-18.8516 -12.6768 -42.0986 -39.6016 -51.8906 -60.1006c-9.33008 -19.6797 -14.5 -41.8496 -11.7695 -63.6494c1.93945 -13.6904 8.70996 -27.5908 20.8994 -34.9102c12.9004 -8 29.0508 -8.07031 43.4805 -5.10059\nc32.7998 7.4502 61.4297 28.8906 81 55.8408c20.4404 27.5195 30.5195 62.1992 29.1602 96.3496c-0.520508 7.5 -1.57031 15 -1.66016 22.4902c8 -19.4805 14.8203 -39.71 16.6504 -60.8301c2 -14.2803 0.75 -28.7598 -1.62012 -42.9004\nc-1.91016 -11 -5.66992 -21.5098 -7.78027 -32.4297c17.209 19.293 34.833 55.6123 39.3398 81.0703c1.24121 7.8584 2.24902 20.6953 2.24902 28.6514c0 21.957 -7.37305 55.999 -16.459 75.9883c20.7803 -32 32.3398 -69.5801 35.71 -107.48\nc0.490234 -12.7295 0.490234 -25.5098 0 -38.2295c-2.37305 -28.7334 -15.6289 -72.5254 -29.5898 -97.75c-26.1201 -47.3398 -68 -85.6299 -117.19 -108c-78.29 -36.2305 -174.68 -31.3203 -248 14.6797c-32.9014 20.1289 -73.8711 64.3281 -91.4492 98.6602\nc-12.291 24.2021 -23.6523 65.8301 -25.3604 92.9199v31.3398c3.92969 69.7402 40.8701 135.92 96 178.36zM318 304.29c4.54688 0.770508 11.7148 2.77734 16 4.47949c5 1.77051 9.24023 5.94043 10.3203 11.2207c-8.95996 -4.99023 -17.9805 -9.91992 -26.3203 -15.7002z\n\" />\n    <glyph glyph-name=\"sith\" unicode=\"&#xf512;\" \nd=\"M0 416l118.75 -69.71l-11.5195 58.9004l91.0596 -69.8701c8.5 1.50977 17.0996 2.29004 25.71 2.29004s17.21 -0.770508 25.71 -2.29004l91.0596 69.8701l-11.5195 -58.9004l118.75 69.71l-69.71 -118.75l58.8604 11.5195l-69.8408 -91.0293\nc3.04004 -17.0098 3.03027 -34.4404 0 -51.4502l69.8408 -91.0303l-58.8604 11.5205l69.71 -118.78l-118.75 69.71l11.5195 -58.8604l-91.0293 69.8408c-17.0098 -3.04004 -34.46 -3.04004 -51.4805 0l-91.0293 -69.8408l11.5195 58.8604l-118.75 -69.71l69.71 118.78\nl-58.8604 -11.5205l69.8408 91.0303c-1.25488 7.04492 -2.27246 18.5693 -2.27246 25.7246c0 7.15625 1.01758 18.6807 2.27246 25.7256l-69.8408 91.0293l58.8604 -11.5195zM224 316.22c-31.7998 0 -63.6104 -12.0898 -87.8496 -36.3398\nc-48.4902 -48.4902 -48.5 -127.2 0 -175.7c48.5 -48.4893 127.21 -48.5195 175.699 -0.0292969c48.4902 48.4893 48.5 127.199 0 175.699c-24.25 24.25 -56.0498 36.3701 -87.8496 36.3701zM224 279.56c22.4199 0 44.8301 -8.51953 61.9199 -25.6094\nc34.1904 -34.1904 34.1797 -89.6904 0 -123.87c-34.1895 -34.1797 -89.6504 -34.1904 -123.84 0c-34.1904 34.1895 -34.1797 89.6895 0 123.87c17.0898 17.0898 39.5 25.6094 61.9199 25.6094z\" />\n    <glyph glyph-name=\"trade-federation\" unicode=\"&#xf513;\" horiz-adv-x=\"496\" \nd=\"M248 439.2c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -43.5996c129.7 0 234.8 105.1 234.8 234.8s-105.1 234.8 -234.8 234.8s-234.8 -105.1 -234.8 -234.8s105.1 -234.8 234.8 -234.8zM403.1 284.9v-0.100586h-145.699\nv-34.7998h83.2998v-47h-83.2998v-195.8h-48.8008v196.8h-117.699l-36.7002 46h155.1v81.7002h193.8v-46.7998zM329.8 239.8h-82.8994v56.2002h145v24.4004h-171.801v-80.6006h-143.899l20.0996 -23.8994h123.8v-197.4h26.8008v197.4h82.8994v23.8994zM168.5 308.8l22 9.2998\nl-15.7998 -18.0996l15.7002 -18.0996l-22.2002 9.5l-12.2998 -20.5l2.09961 24l-23.2998 5.39941l23.5 5.40039l-2.10059 23.7998zM138.9 328.5l9.5 -10.2002l-13.8008 5.2998l-6.7998 -12.1992l0.799805 14.6992l-13.6992 2.7002l14.2998 3.7998l-1.7002 13.9004\nl8 -12.4004l12.7002 5.90039zM304.3 183.3l-9.2998 -10.7998l9.40039 -10.7002l-13.1006 5.5l-7.2998 -12.2002l1.2002 14.2002l-13.9004 3.2002l13.9004 3.2002l-1.2998 14.2002l7.2998 -12.2002zM411.2 260.5l-15 -17.5996l15.0996 -17l-21.2002 8.7998l-11.5 -19.6006\nl1.80078 22.9004l-22.2002 4.90039l22.2998 5.39941l-2.2002 22.7002l12 -19.5996zM248 418.1c125.3 0 226.9 -101.6 226.9 -226.899s-101.601 -226.9 -226.9 -226.9s-226.9 101.601 -226.9 226.9s101.601 226.899 226.9 226.899zM342.6 252h-83.1992v30.9004h145.699\nv50.6992h-197.8v-81.5996h-157.399l40 -49.9004h116.699v-196.8h52.7002v195.7h83.2998v51zM248 404.8c-94.5996 0 -174.9 -61.5996 -202.9 -146.8h157.4v81.5996h199.1c-38.7998 40.2002 -93.2998 65.2002 -153.6 65.2002zM248 -22.2998c117.9 0 213.5 95.5996 213.4 213.5\nc0 51.8994 -18.5 99.5 -49.3008 136.5v-50.7998h-145.6v-19.2002h83.2002v-62.7002h-83.2998v-195.8h-64.6006v196.8h-114.7l-43.7998 56.2998c-5.7998 -19.2998 -8.89941 -39.8994 -8.89941 -61.0996c0 -117.9 95.6992 -213.5 213.6 -213.5zM178.8 173l22.7002 9.2998\nl-16.9004 -17.0996l15.8008 -18.7998l-21.5 10.7998l-13 -20.9004l3.69922 23.7998l-23.7998 5.90039l23.7002 3.90039l-1.7002 24.5z\" />\n    <glyph glyph-name=\"wolf-pack-battalion\" unicode=\"&#xf514;\" horiz-adv-x=\"512\" \nd=\"M267.73 -23.5303l-11.4404 -21.1396l-11.4404 21.1104l-10.5596 -15.8408l-5.28027 12.3203l-5.2793 -7v-29.8301c-21.0605 7.91992 -21.1104 66.8604 -25.5107 97.21c-4.62012 31.8799 0.879883 92.8105 -81.3701 149.11c8.88086 23.5996 12 49.4297 2.64062 80.0498\nc-27.8701 -3.33008 -53.9404 -10.5801 -63.3398 -54.0996l30.3496 -8.36035c-11.2002 -23.04 -17.0195 -46.7598 -13.2002 -72.1396l27.2705 7l6.16016 -33.4307l18.4697 7l8.7998 -33.4297l19.3496 7l-26.4297 -21.0596l-8.7998 28.1494l-24.6299 -5.28027l-7 35.6309\nl-26.3906 -14.5205c-0.25 20.0205 -6.95996 58.0605 8.80078 84.4502l-26.3906 -5.28027c-3.99023 22.0703 2.37988 39.21 7.91992 56.7402l-22.4297 -9.67969c0.44043 25.0693 29.9404 56.79 61.5898 58.5098c20.2197 1.08984 56.7305 25.1602 54.1006 51.8994\nc-1.95996 19.8701 -17.4502 42.6201 -43.1104 49.7002c43.9795 -36.5098 9.71973 -67.2998 -5.28027 -73.46c-4.39941 11.4404 -17.54 69.0801 0 130.2c40.4697 -22.8701 89.7002 -65.0996 93.21 -147.86l58.0605 -38.71l3.51953 -93.25l-107.33 59.8203l-7 -7\nl17.5801 -3.50977l44 -38.71l15.8398 5.2793l28.1504 -49.2598l3.51953 -119.64l-21.1094 -15.8398l32.5498 -15.8398l32.5498 15.8398l-21.1094 15.8398l3.51953 119.64l28.0996 49.25l15.8408 -5.28027l44 38.7109l17.5898 3.51953l-7 7l-107.3 -59.7695l3.51953 93.25\nl58 38.71c3.5498 82.6895 52.8096 124.92 93.2002 147.79c17.54 -61.1201 4.39941 -118.761 0 -130.2c-14.96 6.16016 -49.2803 36.9502 -5.28027 73.46c-25.6602 -7.08008 -41.1104 -29.8301 -43.1104 -49.7002c-2.63965 -26.7305 33.8809 -50.8096 54.1006 -51.9004\nc31.6396 -1.70996 61.1396 -33.4297 61.5801 -58.5l-22.4307 9.68066c5.54004 -17.5303 11.9209 -34.6699 7.9209 -56.7402l-26.3906 5.28027c15.7998 -26.3906 9.0498 -64.4502 8.7998 -84.4502l-26.3896 14.5195l-7 -35.6299l-24.5898 5.24023l-8.7998 -28.1504\nl-26.3906 21.1104l19.3506 -7l8.7998 33.3896l18.4697 -7l6.16016 33.4307l27.2803 -7.05078c3.7998 25.3809 -2.0498 49.1406 -13.2002 72.1406l30.3496 8.35938c-9.42969 43.5205 -35.4297 50.7305 -63.3398 54.1006\nc-9.35938 -30.6201 -6.24023 -56.4404 2.64062 -80.0498c-82.25 -56.3008 -76.75 -117.221 -81.3701 -149.11c-4.40039 -30.3496 -4.4502 -89.29 -25.5107 -97.21v29.9502l-5.2793 7l-5.28027 -12.3203zM346.9 71.4697l-15.8408 10.5303\nc7.4707 4.36035 13.7607 8.41992 19.3506 12.3203c-0.600586 -7.2207 -0.270508 -13.8398 -3.50977 -22.8398v-0.0107422zM375.05 120.73c-0.399414 -10.9404 -0.899414 -21.6602 -1.75977 -31.6709c-7.84961 1.86035 -15.5703 3.80078 -21.1104 7\nc8.24023 7.94043 15.5508 16.3203 22.8701 24.6807v-0.00976562zM399.68 115.45l-23.75 6.16016c5.62695 7.16797 13.9014 19.3848 18.4707 27.2695c3.22949 -9.21973 5.2793 -20 5.2793 -33.4297zM403.2 196.39c19.4395 -12.8096 27.7998 -33.6592 29.9102 -56.2998\nc-12.3203 4.53027 -24.6299 9.31055 -36.9502 10.5605c5.05957 12 6.64941 28.1396 7 45.7393h0.0400391zM401.44 242.13c18.5596 -2.62988 35.1494 -9.18945 45.7598 -28.1494c-14.2197 -4.36035 -24.7803 -5.9707 -44 -14.0801\nc0.0800781 13.4092 -0.950195 27.9297 -1.75977 42.2295zM165.68 71.4805c-3.23926 9 -2.91016 15.5791 -3.50977 22.8398c5.58984 -3.90039 11.8799 -7.95996 19.3496 -12.3203zM137.53 120.74c7.31934 -8.36035 14.6299 -16.7402 22.8701 -24.6699\nc-5.54004 -3.2002 -13.2607 -5.14062 -21.1104 -7c-0.860352 10.0098 -1.36035 20.7295 -1.75977 31.6699zM112.89 115.46c0 13.4297 2 24.21 5.28027 33.4297c4.56934 -7.88477 12.8438 -20.1016 18.4697 -27.2695zM109.37 196.4h0.0898438\nc0.349609 -17.6006 2 -33.7402 7 -45.7402c-12.3701 -1.25 -24.6797 -6.03027 -37 -10.5605c2.11035 22.6406 10.4697 43.4902 29.9102 56.3008zM111.13 242.14c-0.80957 -14.2998 -1.83984 -28.8193 -1.75977 -42.2295c-19.2197 8.10938 -29.7803 9.71973 -44 14.0801\nc10.6299 18.9502 27.2295 25.5195 45.7598 28.1494z\" />\n    <glyph glyph-name=\"hornbill\" unicode=\"&#xf592;\" horiz-adv-x=\"512\" \nd=\"M76.3799 77.7002c0.182617 -1.37207 0.331055 -3.6084 0.331055 -4.99219c0 -20.8662 -16.9346 -37.8008 -37.7998 -37.8008s-37.7998 16.9346 -37.7998 37.8008c0 20.8652 16.9346 37.7998 37.7998 37.7998c1.49805 0 3.91602 -0.173828 5.39844 -0.387695\nc-78.2793 111.35 52 190.53 52 190.53c-5.85938 -43 -8.23926 -91.1602 -8.23926 -91.1602c-67.3105 -41.4902 0.929688 -64.0605 39.8096 -72.8701c18.6445 -50.7129 77.6279 -91.9023 131.66 -91.9404c1.91992 0 3.76953 0.209961 5.66992 0.280273l0.110352 -18.8604\nc-99.2207 -1.38965 -158.7 29.1406 -188.94 51.6006zM184.38 405.4c109.75 73.9395 187.601 -54.0605 187.601 -54.0605c-43.04 5.86035 -91.1807 8.24023 -91.1807 8.24023c-43.0996 70.0098 -65.7998 -6.58008 -73.7998 -44.29\nc-48.4805 -19.5557 -87.8545 -77.8545 -87.8896 -130.13c0 -0.910156 0.139648 -1.78027 0.139648 -2.67969l-21.8398 -0.150391c-1.41016 100.43 29.8701 160.09 52.4199 190c-0.842773 -0.0683594 -2.21191 -0.123047 -3.05664 -0.123047\nc-20.9482 0 -37.9502 17.001 -37.9502 37.9492c0 20.9492 17.002 37.9502 37.9502 37.9502c13.1934 0 28.5273 -9.65723 34.2266 -21.5566c2.04199 -4.25488 3.7002 -11.5381 3.7002 -16.2578c0 -1.35547 -0.143555 -3.54785 -0.320312 -4.8916zM488.57 271.23\nc-4.21777 -2.00879 -11.3906 -3.63867 -16.0615 -3.63867c-0.886719 0 -2.32422 0.0625 -3.20898 0.138672c84.4502 -113.45 -49 -194.61 -49 -194.61c5.87012 43.0303 8.20996 91.1602 8.20996 91.1602c66.6006 40.96 0.640625 63.54 -38.46 72.54\nc-19.3633 48.9775 -77.8232 88.7422 -130.49 88.7598c-2.75 0 -5.43945 -0.259766 -8.13965 -0.410156l-0.139648 22.5c93.6094 1.33008 151.72 -25.7998 183.45 -47.7402c-0.226562 1.52539 -0.40918 4.01465 -0.40918 5.55566c0 20.9434 16.9971 37.9404 37.9395 37.9404\nc20.9434 0 37.9404 -16.9971 37.9404 -37.9404c0 -13.2236 -9.69043 -28.5703 -21.6309 -34.2549zM374.06 11.7598v-0.0595703c0.0917969 0.000976562 0.239258 0.000976562 0.330078 0.000976562c20.9375 0 37.9297 -16.9922 37.9297 -37.9297\ns-16.9922 -37.9297 -37.9297 -37.9297c-13.1963 0 -28.5273 9.66211 -34.2197 21.5684c-1.76367 3.66602 -3.39453 9.93848 -3.63965 14c-111.98 -80.3398 -191.9 51 -191.9 51c43.0703 -5.87988 91.1904 -8.21973 91.1904 -8.21973\nc41.3301 -67.1709 63.9199 0.540039 72.7695 39.4893c50.418 18.7646 91.3604 77.6543 91.3906 131.45c0 2.08008 -0.220703 4.08984 -0.300781 6.15039l19.5205 0.139648c1.28027 -89.9697 -23.71 -147.2 -45.1406 -179.66z\" />\n    <glyph glyph-name=\"mailchimp\" unicode=\"&#xf59e;\" \nd=\"M330.61 204.48c-2.50977 3.17969 -4.70996 8.31934 -5.9707 14.3193c-2.22949 10.6807 -1.98926 18.4102 4.24023 19.4199c6.23047 1.01074 9.25 -5.45996 11.4805 -16.1299c1.5 -7.17969 1.20996 -13.7803 -0.450195 -17.6094\nc-1.27832 0.165039 -3.36133 0.299805 -4.65039 0.299805c-1.28809 0 -3.37207 -0.134766 -4.64941 -0.299805zM277.05 196c-4.45996 1.95996 -10.2598 4.13965 -17.2598 3.7002c-12.5996 -0.770508 -21.75 -7.21973 -22.5996 -3.48047\nc-0.400391 1.83984 2.40918 4.87988 5.40918 7.06055c4.5791 3.35254 12.9014 6.07422 18.5762 6.07422c3.45312 0 8.84473 -1.07324 12.0342 -2.39453c8.63965 -3.7002 14.0098 -11.1504 12.1201 -13.0898c-1.08008 -1.12988 -3.81055 0.129883 -8.28027 2.12988z\nM268.05 190.87c9.68066 1.14941 16.8604 -4.62988 15.4004 -6.85059c-0.629883 -1.00977 -2.02051 -0.829102 -4.94043 -0.489258c-1.55078 0.239258 -4.08301 0.433594 -5.65234 0.433594c-3.72656 0 -9.58105 -1.06738 -13.0674 -2.38379\nc-4.04004 -1.62012 -4.30957 -1.15039 -5.20996 -0.810547c-1.53027 3.57031 4.40039 8.68066 13.4697 10.1006zM322.22 173.77c-3.40039 -6.91016 -17.7002 0.0703125 -14.2998 7c3.40039 6.93066 17.6797 -0.129883 14.2998 -7zM337.88 194.24\nc7.69922 -0.149414 7.42969 -16.0605 -0.259766 -15.9307c-7.69043 0.130859 -7.40039 16.0605 0.259766 15.9307zM119.09 115.34c4.0293 0.910156 3.40039 -1.25 3.37012 -0.359375c0.256836 -0.317383 0.46582 -0.904297 0.46582 -1.3125\nc0 -0.299805 -0.119141 -0.755859 -0.265625 -1.01758c-3.16016 -7.37012 -20.1904 -7.68066 -21.5801 9c-0.910156 10.8594 9.30957 21.0293 -2.28027 28.6191c-1.77734 1.17773 -4.95117 2.13281 -7.08301 2.13281c-3.84961 0 -8.67285 -2.62207 -10.7666 -5.85254\nc-3.2998 -5.16016 -3.11035 -12.2002 -7.37988 -11.6299c-3.7207 0.540039 -3.70996 14.4805 5 24.0801c7.22949 8 25.9492 11.9297 35.0498 -5.54004c8.11035 -15.3896 -8.2002 -27.7695 -3 -35.7695c2.46973 -3.80078 7.14941 -2.66016 8.46973 -2.35059zM418.81 132.41\nc6.44043 0 16.5605 -7.5 16.5605 -25.2705c0 -17.7695 -7.37012 -37.9092 -9.11035 -42.3799c-54.3896 -130.279 -264.56 -130.06 -322.29 3c-31.5293 -0.0400391 -64.1699 26.9805 -67.5293 60.3799c-0.256836 2.25195 -0.463867 5.91992 -0.463867 8.18652\nc0 7.21289 2.04395 18.5537 4.56348 25.3135l-14.7598 12.5107c-67.5498 57.04 143.72 291.85 211.27 232.93c0.339844 -0.299805 22.9902 -22.5205 23.0498 -22.5703l12.5508 5.33008c59.2695 24.5303 107.359 12.6904 107.42 -26.4697\nc0.0292969 -20.3604 -12.9404 -44.1006 -33.7305 -65.6504c26.1699 -24.2998 20.0205 -71.6094 21.5205 -83c7.19922 -2 30.6992 -7.62012 41.0996 -18.54c18.3604 -19.25 5.52051 -39.5801 3.07031 -43.25c4.20996 -11.2998 3.42969 -8.79004 6.7793 -20.5195z\nM102.81 84.25c29.4502 -0.680664 38.6309 28.2002 34.0908 57.8398c-9.74023 62.9404 -90.1699 48.9805 -84 -12.3301c2.44922 -24.3594 27.0898 -44.8994 49.9092 -45.5098zM84.2998 198.45c19.3105 51.8096 51.54 99.5498 94.2002 132.399\nc31.6504 26.4102 65.7998 45.3506 65.7998 45.3506s-18.3896 21.3193 -23.9395 22.8896c-34.1699 9.23047 -107.94 -41.6494 -155.051 -108.88c-19.0596 -27.21 -46.3096 -75.3604 -33.2998 -100.21c1.58984 -3 10.71 -10.9297 15.5898 -15\nc8.18066 11.9102 21.54 20.5 36.7002 23.4502zM323.18 97.2998c2.58984 0.259766 0.560547 -2.53027 0.560547 -2.53027s-27.4004 -12.75 -71 0.740234c1.20996 -10.2295 11.1699 -14.8193 15.9395 -16.6699c31.4004 -12.21 86.6904 -2.58008 128.46 26\nc0.850586 0.589844 1.41992 0 0.730469 -1c-28.9697 -41.3496 -128.73 -54.7598 -151.37 -21.3496c-12.0801 17.8301 -0.599609 43.8594 19.5498 41.1494c6.7998 -0.769531 53.7705 -8 100.48 13.6807c27.4893 12.7598 37.8701 26.79 36.3096 38.1602\nc-0.447266 3.00293 -2.57031 7.16504 -4.74023 9.28906c-5 4.83008 -12.79 8.60059 -26 12.3105c-4.35938 1.22949 -7.31934 2.00977 -10.5098 3.05957c-5.67969 1.83008 -8.47949 3.33008 -9.10938 14c-0.280273 4.62988 -1.09082 20.9102 -1.38086 27.6299\nc-0.519531 11.7607 -1.91992 27.8506 -11.9199 34.4902c-2.37305 1.51953 -6.58691 2.75195 -9.40527 2.75195c-1.1748 0 -3.05371 -0.229492 -4.19434 -0.511719c-5.69043 -0.969727 -9.06055 -4.00977 -13.2598 -7.50977\nc-12.4404 -10.3701 -22.9502 -12.0605 -34.6406 -11.5605c-6.98926 0.290039 -14.3994 1.37988 -22.8799 1.87988l-5 0.290039c-19.5801 1 -40.5693 -15.9092 -44.0693 -39.9092c-4.86035 -33.4307 19.3291 -50.7002 26.3291 -60.8301\nc0.912109 -1.0918 1.77246 -3.12598 1.9209 -4.54004c0 -1.94043 -1.25 -3.48047 -2.48047 -4.79004c-19.9805 -20.54 -26.3701 -53.1699 -18.8398 -80.3701c0.768555 -2.76562 2.35938 -7.12891 3.5498 -9.74023c17.7002 -41.2598 72.4902 -60.4795 126 -43\nc5.81152 1.89844 14.9238 5.74219 20.3398 8.58008c9.78906 4.8418 23.7441 15.2852 31.1504 23.3096c14.2002 14.8408 22.6396 30.9707 25.9297 50.8408c2.81055 18.6191 -7.78027 18.7598 -11.4395 18.0996c-1.13477 6.94531 -4.32422 17.8223 -7.12012 24.2803\nc-15.6299 -12.3506 -35.71 -20.9707 -51 -25.3506c-69.4004 -19.9102 -90.1904 6.35059 -96.4004 -13.8096c33.7705 -12.3701 69.5098 -7.07031 69.5098 -7.07031zM171.31 290.5l0.0605469 0.00976562c-0.0947266 -0.115234 -0.171875 -0.331055 -0.171875 -0.481445\nc0 -0.418945 0.34082 -0.759766 0.759766 -0.759766c0.124023 0 0.308594 0.0546875 0.412109 0.121094c11.4199 8.30078 64.9502 42.7705 134.5 26.8301c0.860352 -0.189453 1.39941 1.29004 0.639648 1.7207c-11.3398 6.33984 -28.6895 10.6494 -41 10.7393\nc-0.404297 0.00976562 -0.732422 0.345703 -0.732422 0.75c0 0.134766 0.0634766 0.332031 0.142578 0.44043c1.84668 2.41602 5.30078 5.88379 7.70996 7.74023c0.166992 0.126953 0.302734 0.401367 0.302734 0.611328c0 0.424805 -0.344727 0.770508 -0.770508 0.770508\nc-0.0146484 0 -0.0380859 -0.000976562 -0.0517578 -0.00195312c-17.5205 -1.08008 -37.5107 -9.4707 -49 -17.2998c-0.107422 -0.0751953 -0.300781 -0.136719 -0.431641 -0.136719c-0.414062 0 -0.75 0.335938 -0.75 0.75\nc0 0.0498047 0.00976562 0.12793 0.0214844 0.176758c0.899414 4.30957 3.72949 9.98926 5.18945 12.6494c0.0566406 0.0947266 0.102539 0.261719 0.102539 0.37207c0 0.402344 -0.327148 0.729492 -0.730469 0.729492\nc-0.110352 0 -0.276367 -0.0449219 -0.37207 -0.101562c-18.4697 -9.4502 -39.0898 -26.2803 -55.8301 -45.6299z\" />\n    <glyph glyph-name=\"megaport\" unicode=\"&#xf5a3;\" horiz-adv-x=\"496\" \nd=\"M214.5 238.4l33.4004 33.3994l33.3994 -33.3994v-66.4004l-33.2998 -33.2998l-33.5 33.5v66.2002zM248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM393.1 25.5996h0.100586v87.1006l-59.7002 59.7002v87.5996l-59.5 59.5\nv75.5996l-26.0996 19.2002l-26.1006 -19.2002v-75.5996l-59.5 -59.5v-87.9004l-59.5 -59.5v-87l26.1006 -19.1992l26.0996 19.1992v65.5l33.5 33.4004l33.4004 -33.4004v-65.5l26.0996 -19.1992l26.2002 19.1992v65.5l33.3994 33.4004l33.4004 -33.4004v-65.5l26 -19.1992z\n\" />\n    <glyph glyph-name=\"nimblr\" unicode=\"&#xf5a8;\" horiz-adv-x=\"384\" \nd=\"M246.6 148.71c15.5703 0 27.1504 -11.46 27.1504 -27s-11.6201 -27 -27.1504 -27c-15.6992 0 -27.1494 11.5703 -27.1494 27s11.5498 27 27.1494 27zM113 121.75c0 15.6104 11.6797 27 27.1504 27c15.4697 0 27.1494 -11.46 27.1494 -27s-11.4697 -27 -27.1494 -27\nc-15.4404 0 -27.1504 11.3096 -27.1504 27zM191.76 289c98.3701 0 177.76 -78.9102 177.76 -176.48c0 -97.5693 -79.6094 -176.52 -177.76 -176.52c-98.1494 0 -177.76 78.8701 -177.76 176.52v335.48l45.25 -227c30.2002 48.2305 97.75 68 132.51 68zM191.76 -19.1201\nc73.2402 0 132.51 58.96 132.51 131.64c0 72.6807 -59.2393 131.54 -132.51 131.54c-73.2695 0 -132.51 -58.8994 -132.51 -131.59c0 -72.6895 59.2402 -131.59 132.51 -131.59z\" />\n    <glyph glyph-name=\"rev\" unicode=\"&#xf5b2;\" \nd=\"M289.67 173.11c0 -36.1943 -29.375 -65.5801 -65.5703 -65.5801c-36.1943 0 -65.5693 29.375 -65.5693 65.5693c0 36.1953 29.375 65.5703 65.5693 65.5703h0.0107422c36.1445 -0.0439453 65.5156 -29.415 65.5596 -65.5596zM429.22 178.16v-210.16h-210.16v0.110352\nc-110.939 2.70996 -200.06 93.4092 -200.06 205c0 108.569 84.2998 197.319 191 204.569v38.3203l108.77 -62.7803l-108.77 -62.79v39.1201c-80 -7.16016 -143 -74.5498 -143 -156.43c0 -86.6201 70.4902 -157.12 157.11 -157.12s157.09 70.5 157.09 157.12\nc-0.0224609 47.1709 -32.1934 106.235 -71.8105 131.84l45.3799 26.2002c39.8018 -32.8584 73.0977 -101.402 74.3203 -153h0.129883z\" />\n    <glyph glyph-name=\"shopware\" unicode=\"&#xf5b5;\" horiz-adv-x=\"512\" \nd=\"M403.5 -7.41016c-36.0898 -26.8223 -101.875 -48.5908 -146.841 -48.5908c-0.181641 0 -0.477539 0.000976562 -0.65918 0.000976562c-137.19 0 -248 111 -248 248c0 137.19 111 248 248 248h0.211914c52.3994 0 126.538 -28.4482 165.488 -63.5\nc0.643555 -0.585938 1.16602 -1.76855 1.16602 -2.63965c0 -1.9707 -1.59961 -3.56934 -3.57031 -3.56934c-0.125977 0 -0.330078 0.0126953 -0.456055 0.0292969c-15.2227 2.03223 -40.042 3.68164 -55.4004 3.68164\nc-0.361328 0 -0.948242 -0.000976562 -1.30957 -0.00195312c-129.36 0 -222.399 -53.4697 -222.399 -155.35c0 -109 92.1299 -145.881 176.829 -178.73c33.6406 -13 65.4004 -25.3604 87 -41.5898c0.788086 -0.592773 1.42676 -1.87402 1.42676 -2.86035\nc0 -0.985352 -0.638672 -2.2666 -1.42676 -2.85938zM503 214.91c0.578125 -6.2832 1.04688 -16.5039 1.04688 -22.8135c0 -25.8613 -7.62793 -66.4043 -17.0273 -90.4971c-0.495117 -1.2373 -1.98047 -2.24316 -3.31348 -2.24316\nc-0.495117 0 -1.25 0.19043 -1.68652 0.423828c-29.4893 16.3594 -61.6094 28.3398 -92.6797 39.9297c-60.2803 22.4902 -112.34 41.8896 -112.34 84.4902c0 1.45996 -3.87988 53.6299 80.25 53.6299c50.8604 0 92.7197 -17.4805 144.48 -60.4805\nc0.625 -0.530273 1.19336 -1.62305 1.26953 -2.43945z\" />\n    <glyph glyph-name=\"squarespace\" unicode=\"&#xf5be;\" horiz-adv-x=\"512\" \nd=\"M186.12 104.66l157.22 157.2c38.5703 38.5898 101.13 38.5898 139.72 0c38.5908 -38.5801 38.5908 -101.13 0 -139.721l-119.25 -119.239l-0.0400391 -0.0400391c-19.2891 -19.2705 -50.5498 -19.25 -69.8193 0.0400391l154.149 154.14\nc19.29 19.29 19.29 50.5703 0 69.8604s-50.5693 19.29 -69.8594 0l-157.181 -157.181c-9.64941 -9.64941 -25.29 -9.64941 -34.9395 0c-9.65039 9.65039 -9.65039 25.29 0 34.9404zM430.65 209.46c9.63965 -9.63965 9.63965 -25.2803 -0.0107422 -34.9297l-157.199 -157.2\nc-38.5801 -38.5703 -101.141 -38.5703 -139.721 0l-0.0195312 0.0195312c-9.64062 9.65039 -9.62988 25.29 0.0195312 34.9307l0.0107422 0.00976562c9.64941 9.63965 25.2793 9.62988 34.9199 -0.00976562l0.0498047 -0.0498047\nc19.29 -19.2607 50.5498 -19.2402 69.8193 0.0498047l157.2 157.18c9.64062 9.65039 25.2803 9.65039 34.9307 0zM168.66 122.13c-38.6006 -38.5801 -101.13 -38.5801 -139.73 0.00976562c-38.5801 38.5801 -38.5801 101.13 0 139.721l119.23 119.25l0.0195312 0.0195312\nc19.3008 19.2803 50.5703 19.2705 69.8506 -0.0195312l-154.17 -154.17l-0.0302734 -0.0302734c-19.2803 -19.2998 -19.2598 -50.5605 0.0302734 -69.8398l0.00976562 -0.0107422c19.29 -19.29 50.5703 -19.2793 69.8496 0.0107422l157.21 157.18\nc9.64062 9.63965 25.2705 9.63965 34.9102 0c9.64062 -9.65039 9.64062 -25.29 0 -34.9404zM81.3301 174.53c-9.64062 9.64941 -9.65039 25.29 0 34.9297l157.189 157.19c38.5908 38.5898 101.131 38.5898 139.721 0c9.64941 -9.64062 9.64941 -25.2803 0 -34.9307\nc-9.64062 -9.64941 -25.2803 -9.64941 -34.9307 0l-0.0195312 0.0205078c-19.29 19.2793 -50.5596 19.2695 -69.8398 -0.0205078l-157.21 -157.189c-9.64062 -9.64062 -25.2705 -9.64062 -34.9102 0z\" />\n    <glyph glyph-name=\"themeco\" unicode=\"&#xf5c6;\" \nd=\"M202.9 439.57c9.89941 5.72949 26 5.81934 35.9492 0.209961l191.15 -107.63c10 -5.60059 18 -19.4404 18 -30.8604v-217.29c0 -11.4404 -8.05957 -25.29 -18 -31l-191.19 -108.74c-9.92969 -5.66016 -26 -5.56934 -35.8496 0.209961l-185.1 108.41\nc-9.86035 5.78027 -17.8604 19.7402 -17.8604 31.1201v217.29c0 11.4404 8 25.3604 17.9102 31.0801zM125.5 239.74c-15.9404 0 -31.8896 -0.140625 -47.8301 -0.140625v-101.449h19.1299v29.8496h28.7002c49.71 0 49.5596 71.7402 0 71.7402zM265.64 139.45\nl-30.7295 34.6396c37 7.50977 34.7998 65.2305 -10.8701 65.5098c-16.0898 0 -32.1699 0.140625 -48.2598 0.140625v-101.59h19.1299v33.9092h18.4102l29.5596 -33.9092h22.7598v1.2998zM224.05 221.77c23.3398 0 23.2598 -32.46 0 -32.46h-29.1299v32.46h29.1299z\nM128.49 223.37c21.1797 0 21.1094 -38.8506 0 -38.8506h-32.3105v38.8408zM321.14 241.62c-68.46 0 -71 -105.8 0 -105.8c69.4805 0.00976562 69.4102 105.8 0 105.8zM321.14 224.23c44.1201 0 44.8008 -70.8604 0 -70.8604c-44.7998 0 -44.4297 70.8604 0 70.8604z\" />\n    <glyph glyph-name=\"weebly\" unicode=\"&#xf5cc;\" horiz-adv-x=\"512\" \nd=\"M425.09 382.17c50.9102 0 87.5498 -35.1504 86.9199 -83.4697c0 -21.6201 -0.950195 -18.5498 -77.5 -227.2c-22.3799 -60.5703 -67.7695 -69.6699 -92.7402 -69.6699c-39.2393 0 -70.0391 19.46 -85.9297 54.29c-15.8896 -34.5205 -46.7002 -53.9805 -85.9297 -53.9805\nc-24.9697 0 -70.3701 8.78027 -92.7402 69.3506c-72.9902 200.21 -77.1699 204.52 -77.1699 233.479c0 43.3105 38.5898 77.2002 87.54 77.2002c40.21 0 73.2803 -25.7295 83.6602 -64.3301c18.4795 58.0498 65.5 64.3301 85.2803 64.3301\nc19.4492 0 66.7891 -6.26953 84.9492 -64.3301c10.3799 38.6006 43.7803 64.3301 83.6602 64.3301zM451.43 267.36c3.49023 11.1992 7.29004 19.3701 7.61035 27.2393c0 22.3906 -16.1602 35.71 -38.3301 35.71c-18.6904 0 -31.9902 -11.7998 -36.1104 -29.0498\nl-44.0293 -139.819h-0.950195l-44.6602 136.79c-6.01953 19.9697 -16.4697 32.0791 -38.96 32.0791s-32.9404 -12.4092 -38.96 -32.0791l-44.6602 -136.79h-0.950195l-44.0293 139.819c-4.12012 17.25 -17.4199 29.0498 -36.1104 29.0498\nc-22.4902 0 -38.3301 -13.0195 -38.3301 -29.3594c0 -10.5898 2.54004 -19.6699 7.91992 -34.5l64.9404 -175.23c7.91016 -21.4795 21.2197 -37.2197 46.2393 -37.2197c23.1201 0 37.0605 12.0996 44.0205 33.5996l39.2803 117.42h0.949219l39.2803 -117.42\nc6.65039 -21.4893 20.5898 -33.8994 44.0303 -33.8994c25.0195 0 38.3203 15.7295 46.2402 37.2197z\" />\n    <glyph glyph-name=\"wix\" unicode=\"&#xf5cf;\" horiz-adv-x=\"640\" \nd=\"M393.38 316.31c0 -13.0293 2.08008 -32.6895 -28.6797 -43.8291c-9.52051 -3.4502 -15.9502 -9.66016 -15.9502 -9.66016c0 31 4.71973 42.2197 17.4004 48.8594c9.75 5.11035 27.2295 4.62988 27.2295 4.62988zM277.58 280.77\nc5.47949 26.3408 30.8799 38.3408 55.2998 35.2705l-65.5703 -247.93s-21.6396 -1.56055 -32.46 3.95996c-14.2197 7.25 -20.9893 12.8398 -29.5898 46.5693c-7.66992 30.0703 -29.1494 118.4 -31.1201 124.7c-4.30957 13.8105 -10.6396 14.9404 -15.3994 0\nc-2.00977 -6.29004 -23.4502 -94.6299 -31.1201 -124.7c-8.61035 -33.7295 -15.3701 -39.3193 -29.5898 -46.5693c-10.8301 -5.52051 -32.46 -3.95996 -32.46 -3.95996l-65.5703 247.93c23.8604 3 49.7305 -8.5498 55.2803 -35.2705l34.2393 -132.659l28.4805 108.569\nc7.76953 32.3506 21.0596 48.5303 48.4297 48.5303c27.6201 0 40.7402 -16.54 48.4307 -48.5303l28.4795 -108.569zM393.36 275.56v-8.97949l0.0195312 0.00976562v-150.27c-0.129883 -30.8301 -3.33008 -37.6807 -17.2598 -44.7803\nc-10.8203 -5.52051 -27.3701 -3.42969 -27.3701 -3.42969v152.069c0 21.25 -1.95996 27.9404 13.1797 35.2002c6.19043 2.96973 11.96 5.25 17.9707 8.61035c9.35938 5.22949 13.46 11.5693 13.46 11.5693zM556.8 191.48l82.9902 -123.36s-35.9297 -4.62012 -53.3203 11.21\nc-13.9102 12.6602 -23.7393 28.3398 -53.1396 70.7197c-0.5 0.770508 -6.25977 10.5205 -13.0703 0c-34.9297 -50.3496 -41.0195 -60.2598 -52.5098 -70.7197c-17.3799 -15.8301 -53.9502 -11.21 -53.9502 -11.21l82.9697 123.36l-83.1992 123.739\ns35.1094 5.98047 52.5 -9.84961c13.3799 -12.1797 24.8896 -30.2402 54.1797 -72.4697c6.82031 -10.54 12.5996 -0.730469 13.0703 0c29.7695 42.9199 40.8799 60.3691 54.1797 72.4697c17.3896 15.8301 52.5 9.84961 52.5 9.84961z\" />\n    <glyph glyph-name=\"ello\" unicode=\"&#xf5f1;\" horiz-adv-x=\"496\" \nd=\"M248 440c136.97 0 248 -111.03 248 -248s-111.03 -248 -248 -248s-248 111.03 -248 248s111.03 248 248 248zM391.84 154.8c2.48047 7.44043 -2.47949 15.71 -9.91992 17.3604c-7.43945 2.47949 -15.71 -2.48047 -17.3604 -9.91992\nc-14.0498 -52.9102 -62 -90.1104 -116.56 -90.1104s-102.51 37.2002 -116.56 90.1104c-1.65039 7.43945 -9.9209 11.5693 -17.3604 9.91992c-7.44043 -1.65039 -11.5703 -9.91992 -9.91992 -17.3604c16.5303 -65.3096 76.0498 -111.6 143.84 -111.6\ns127.31 46.29 143.84 111.6z\" />\n    <glyph glyph-name=\"hackerrank\" unicode=\"&#xf5f7;\" horiz-adv-x=\"512\" \nd=\"M477.5 320c14.5 -25 14.4805 -230.92 -0.00976562 -256s-192.391 -128 -221.33 -128c-28.9404 0 -206.83 102.8 -221.32 128s-14.4102 230.79 0 256s192.351 128 221.32 128s206.84 -103.05 221.34 -128zM316.13 33.7803c3.95996 0 40.4404 35.7793 37.5605 38.6895\nc-0.870117 0.839844 -8.82031 1.49023 -17.6904 1.83984c0 32.4004 -3 19.0508 0.679688 210.341c0.0703125 3.65918 -1.04004 5.37988 -4.5 5.37988c-11.0801 0.0693359 -22.1602 0.0195312 -33.2295 -0.0605469c-3.25977 -0.0292969 -4.31055 -1.80957 -4.20996 -5.2002\nc1.58984 -48.8994 1.2002 -79.0898 1.2002 -83.6396h-80.2607c0.629883 25.7998 0.209961 79.6396 2.62988 105.39v3.16016c8.87012 0.350586 15.9004 0.970703 16.7705 1.83984c2.90039 2.91016 -34.3203 38.6904 -38.2705 38.6904\nc-3.94922 0 -41.4092 -35.7695 -38.4893 -38.6904c0.879883 -0.839844 7.58984 -1.48926 17.2598 -1.83984v-3.16992c3.15039 -128.67 1.07031 -179.229 0.150391 -212.67c-0.130859 -4.58008 1.63965 -6.10938 5.73926 -6.10938\nc10.1406 0.0292969 20.2803 -0.0800781 30.4102 -0.0800781c4.16016 -0.0605469 5.96973 1.39941 5.74023 5.93945c-1.83008 36.6797 -1.37012 65.7803 -1.37012 72.8799h79.9297c0 -2.41992 0.44043 -3.84961 0.44043 -5.84961\nc-0.350586 -17.7305 -0.94043 -60.0898 -0.94043 -86.3203c-11.29 -0.349609 -16.6797 -0.959961 -17.5498 -1.83008c-2.91016 -2.91992 34 -38.6895 38 -38.6895z\" />\n    <glyph glyph-name=\"kaggle\" unicode=\"&#xf5fa;\" horiz-adv-x=\"320\" \nd=\"M304.2 -53.5l1.39941 -7.59961c-0.5 -2 -2.5 -3 -6 -3h-66.8994c-4 0 -7.5 1.7998 -10.5 5.2998l-110.5 140.6l-30.7998 -29.2998v-109c0 -5 -2.5 -7.5 -7.5 -7.5h-51.9004c-5 0 -7.5 2.5 -7.5 7.5v497c0 5 2.5 7.5 7.5 7.5h51.9004c5 0 7.5 -2.5 7.5 -7.5v-306\nl132.3 133.7c3.5 3.5 7 5.2998 10.5 5.2998h69.2002c7 0 7.89941 -7.7998 5.2998 -10.5l-139.8 -135.3z\" />\n    <glyph glyph-name=\"markdown\" unicode=\"&#xf60f;\" horiz-adv-x=\"640\" \nd=\"M593.8 388.9c25.5 0 46.2002 -20.7002 46.2002 -46.1006v-301.6c0.0996094 -25.4004 -20.5996 -46.1006 -46.0996 -46.1006h-547.7c-25.5 0 -46.2002 20.7002 -46.2002 46.2002v301.5c0 25.4004 20.7002 46.1006 46.2002 46.1006h547.6zM338.5 87.4004h-0.200195v209.199\nh-61.5l-61.5 -76.8994l-61.5 76.8994h-61.5v-209.199h61.7002v120l61.5 -76.9004l61.5 76.9004v-120h61.5zM473.8 84.2998l92.2002 107.7h-61.5v104.6h-61.5v-104.6h-61.5z\" />\n    <glyph glyph-name=\"neos\" unicode=\"&#xf612;\" horiz-adv-x=\"512\" \nd=\"M415.44 -64h-95.1104l-108.21 154.54v-91.0996l-86.4297 -63.4404h-97.6904v482.18l40.4697 29.8203h108.05l123.74 -176.13v112.68l86.4307 63.4502h97.6895v-461.5zM38.7695 412.73v-460.73l72 52.8799v249.12l215.5 -307.64h84.79l52.3506 38.1699h-78.2705\nl-316.14 450.47zM121.31 -53.8799l80 58.7803v101l-79.7598 114.399v-220.939l-72.5498 -53.25h72.3398zM80.6299 437.23l310.601 -442.57h82.3691v442.57h-79.75v-317.561l-222.939 317.561h-90.2803zM311 256.35l72 -102.81v278.53l-72 -53v-122.721z\" />\n    <glyph glyph-name=\"zhihu\" unicode=\"&#xf63f;\" horiz-adv-x=\"640\" \nd=\"M170.54 299.87h122.68v-217.55h-49.5293l-42.0107 -26.3701l-7.70996 26.3701l-23.4297 0.00976562v217.54zM268.29 105.94v170.31h-72.8203v-170.31l11.9004 -0.0400391l5.08008 -17.4707l27.8994 17.5107h27.9404zM149.83 200.33\nc7.5 0 7.58984 -23.6104 7.58984 -23.6104h-61.6504c-0.879883 -13.1201 -3.50977 -26.6895 -7.86914 -40.6699l14.6191 11.6201c8.73047 -8.75 29.2109 -32.8896 36.79 -41.8096c9.15039 -13.1006 1.24023 -39.9902 1.24023 -39.9902l-53.96 64.9395\nc-12.6094 -48.3496 -35.5898 -69.25 -35.5898 -69.25c-10.0898 -8.96973 -30.5098 -15.75 -51 -9.89941c42.8301 33.2197 66.4502 75.2402 70.8496 125.1h-65.5801s3.82031 23.6201 15.5605 23.6201h52.2695c0.480469 6.56055 1.68066 62.9404 1.68066 73.4404h-28.8701\nc-2.62988 -7.87012 -3.03027 -8.64062 -5.14062 -14.5303c-11.4697 -21.0303 -30.9492 -21.5703 -36.8398 -22.21c17.4902 34.9795 27.3105 69.2197 30.7002 78.1201c8.2002 21.5693 32.2705 21.5693 32.2705 21.5693c-5.25 -14.0098 -9.63086 -27.5498 -13.1201 -40.6699\nh88.5c10.5498 0.25 8.58008 -22.3096 8.58008 -22.3096h-51.1602c0 -21.8701 -0.459961 -46.3604 -2.2002 -73.46h52.3301zM561.85 201.93l-19.2295 14.4307s30.8301 40.0498 36.8301 48.1992c8.72949 10.7402 27.3799 -4.05957 27.3799 -4.05957\ns-24.1504 -32.9297 -44.9805 -58.5703zM411.76 261.02l0.00976562 0.0107422c8.99023 -8.25 34.6602 -45.8604 34.6602 -45.8604l-19.46 -13.7295c-1.59961 2.40918 -41.1201 57.4492 -41.1201 57.4492s16.9004 10.3799 25.9102 2.12988zM640 189.65\nc0 0 0.950195 -23.79 -8.73047 -23.79h-122.359v-73.3203c0.780273 -28.0303 -15.3301 -45.3096 -44.8906 -45.3096c-9.84961 0 -16.1396 1.75977 -26.0195 6.56934c-12.9805 7.4502 -17.3203 17.8701 -19.3096 21.8398c15.6094 -0.65918 27.6094 -1.91992 41.6895 -1.80957\nc13.29 -0.870117 24.4805 7.15039 24.4805 21.1201v70.9199h-107.94c-22.6895 0.540039 -25.5098 22.8496 -25.5098 22.8496h133.47v99.8105c-12.8301 0 -31.6797 -0.830078 -56.5098 -2.43066c-26.46 -0.80957 -35.8398 -2.58984 -49.1504 0.890625\nc-8.16016 2.46973 -14.1797 10.7295 -15.7793 19.5498c67.1396 1.55957 232.359 18.0498 232.359 18.0498s20.1006 5.75977 23.1699 4.58008c12.8105 -6.25 0.589844 -33.4395 0.589844 -33.4395c-17.6396 -0.810547 -46.8896 -2.40039 -87.7695 -4.81055\nc-10.4297 -0.799805 -18.04 -1.2002 -22.8496 -1.2002v-101c0.149414 0 111.279 0.930664 131.06 0.930664z\" />\n    <glyph glyph-name=\"alipay\" unicode=\"&#xf642;\" \nd=\"M377.74 416c38.6895 0 70.0898 -31.5703 69.9297 -70.2598v-234.41c-48.6104 16.7002 -99.6895 36.04 -148.62 52.7402c23.1406 44.2998 38.3506 90.9199 38.3506 90.9199h-88.7705v31.2402h109.45v19.0098h-109.44v50.4199h-50.9199v-50.4199h-109.439v-19.0098h109.439\nv-31.2402h-92.0801v-16.7002h178.2s-9.91992 -30.25 -26.4502 -60.3398c-47.7793 14.71 -91.75 24.96 -127.13 24.96c-84.6396 0 -103.49 -42.4902 -99.5195 -81.5c3.30957 -31.0703 26.4502 -76.3701 97.04 -76.3701c64.4795 0 116.55 37.0303 148.62 81\nc61.0098 -28.0996 125.64 -62.8203 171.6 -88.4404c-0.5 -38.5195 -31.7402 -69.5996 -70.2598 -69.5996h-307.48c-38.8496 0 -70.2598 31.4102 -70.2598 70.2598v307.48c0 38.8496 31.4102 70.2598 70.2598 70.2598h307.48zM47.2803 125.05\nc-0.990234 17.5205 10.9102 50.5801 78.3594 50.5801c24.96 0 64.8105 -12.7295 109.44 -31.4102c-25.29 -33.2197 -65.7998 -72.8994 -117.87 -72.8994c-59.6797 0 -68.9404 33.5596 -69.9297 53.7295z\" />\n    <glyph glyph-name=\"the-red-yeti\" unicode=\"&#xf69d;\" horiz-adv-x=\"512\" \nd=\"M488.23 206.3c2.49805 -3.35254 5.51465 -9.31152 6.76953 -13.2998c3.37793 -9.19922 7.36523 -24.5205 8.90039 -34.2002l-2.5 -0.5l-13 14.2998c-17.9004 -28.0996 -9.90039 -15.3994 -16.7002 -25.0996c0 -124.2 -101.3 -211.5 -223 -211.5\nc-61.5 0 -113.9 20.2002 -157.5 60.2002c-64.5 60.8994 -64.9004 125 -64.9004 150.5c-0.5 1.7998 -0.700195 3.5 -1.2002 5.2002l-20.1992 -22.4004c-6.80078 43 25.6992 74.2998 33 80.7002c0.5 1 0.699219 2.2002 1.19922 3.2002l-28.7998 1l-3 3.39941\nc8.5 3.5 25.2998 13.2998 40.2998 14.2998c6.30273 12.0684 18.7568 30.123 27.8008 40.3008c1.2998 6.39941 3.2998 14.1992 6.59961 25.7998l-7.59961 -4.7002l-1.7002 1.7002l1.7002 8.39941c8.87207 21.3857 29.7939 51.5811 46.6992 67.4004l-33 14.2998h3.7002\nc20.9004 4.90039 33.2002 3.2998 49.2002 0c-2.5 4.10059 -5.40039 10.5 -8.40039 18.9004c-1.16699 3.20996 -2.11426 8.58691 -2.11426 12.0029c0 3.81152 1.1709 9.76855 2.61426 13.2969c8.90039 -7.40039 14.3008 -24.5996 15.2002 -27\nc0.700195 3.59961 2.10059 21.2998 33.7002 45.5l1.83008 -0.5l-12 -44.2002c30 17.7002 63 21.9004 97.9004 11.7998c-12.7002 -12.1992 -24.3008 -28.8994 -42.5 -33c7.39941 -2.2998 28.6992 -9.69922 34.1992 -15.1992l-24.7998 7.09961\nc6.5 -6 19.6006 -16.4004 25.1006 -25.0996c19.418 -0.893555 50.0615 -6.85254 68.3994 -13.3008l-0.5 0.5c29.4004 14.7002 37.7002 27.3008 74.7998 3c0 -30.1992 -2.2998 -23.3994 3 -29.7998c6.41602 5.42383 17.75 12.8154 25.3008 16.5\nc13 6.40039 23.0996 4.7002 30.6992 -5.89941c11.8008 0 17.8008 -15.7002 18.4004 -27c14.7998 -2.90039 2.7002 -30.7002 2.5 -30.7002l-7.09961 -18.2002c7.7998 -7.7998 22.0996 -20.9004 31.6992 -44.7998zM398 336.8c-13.0996 8.90039 -22.7002 11.9004 -28.2998 8.5\nc8.09961 -7.2002 13 -14.2998 13.5 -20.7002c1.2002 -7.59961 -2.2002 -14.7998 -10.6006 -21.8994l-4.19922 -3.40039c3.60059 -5.90918 7.36328 -16.2578 8.39941 -23.0996h2.5c-2.09961 13.8994 -2.5 11 0.700195 14.7998c11 -6.40039 14.9004 -14.5 16 -19.9004\nc21.7998 10.1006 29.5 12.7002 54.7998 20.9004l-18.2002 -16c11.4004 0 25.6006 0.299805 46.5 -8.40039c7 24.3008 7.10059 20.7002 2.5 20.7002l-4.69922 -11.2998c-1.7002 10.5 -2.90039 18.9004 -3.40039 25.2998c-0.5 6.7002 -3.90039 9.60059 -9.2998 10.1006\nc-0.00976562 -0.384766 -0.0175781 -1.00781 -0.0175781 -1.3916c0 -3.87012 0.769531 -10.0566 1.71777 -13.8086l-1.7002 -5.90039c-2.90039 10.6006 -5.90039 20.2002 -9.2998 27.7998c-9.7002 17.7002 -30.2002 -9.19922 -43 -11.2998\nc3.72266 -0.207031 9.77051 -0.375977 13.5 -0.375977c3.72852 0 9.77637 0.168945 13.5 0.375977l-22.4004 -5.39941l3.40039 -4.7002c-5.5 0 -16.9004 -0.900391 -22.4004 17.2002zM358.4 346.9l-20.3008 -11.8008c11.3008 -7.59961 20.2002 -18.1992 27.8008 -31.1992\nc6.39941 2.89941 10.0996 5.09961 11.7998 7.59961c2.5 2.7998 2.5 4.7002 3 7.09961c0.599609 1.30078 0.799805 2.7002 -3.40039 11.1006c-7.5 11.7998 -16.2002 15.2998 -18.8994 17.2002zM91 304.9c-7.7998 -24.1006 -11.7002 -49.4004 -13.2002 -74.6006l13.2002 -5\nl1.2002 27c9.5 -16.3994 11.2002 -23.2998 12.2998 -28.7998c2.7998 2.09961 7.7002 7 22.5996 11.2998l1.2002 -1.7002l-7.59961 -10.5996c10.0996 3.5 19.5 3.5 28.2998 0.5l-10.5996 -8.40039c22.7998 -8.39941 26.5996 -7.59961 38.3994 -26.0996l-11.7998 1.2002\nc34.9297 -20.5 66 -47.9004 141.2 -63.2002c15.5996 24.0996 14 21.0996 14 22.9004l0.200195 0.199219l-0.200195 0.200195c-0.700195 1.90039 -14.1006 16.6006 -18.2002 20.7002c7.2998 -1.7998 6 -0.900391 10.7998 -3.7002\nc1.7002 -0.899414 -5.39941 5.40039 -21.8994 20.2002c16.5 -6.7002 27.5996 -15.5 33 -27.7998l1.69922 30.7002l-22.3994 17.6992l6.39941 5.90039c-7.2998 0 -31 3.7002 -49.1992 -16l-2.5 0.5c5.89844 12.1807 13.0664 32.7881 16 46\nc1.61914 7.72656 2.96289 20.4053 3 28.2998c0 19.5 -4.7002 38.4004 -13.5 56.6006c-6.40039 13.5 -16.5 25.2998 -30 35.3994c-5.4707 4.09961 -14.7441 10.1475 -20.7002 13.5c3 0.700195 1 1.2002 -5.40039 1.2002c-6.39941 0.200195 -13 0.700195 -19.3994 1.2002v-3\nc-8.67773 -1.375 -20.0127 -8.18457 -25.3008 -15.2002h-1.19922l-5.40039 -3.40039c-1.2002 2.90039 0 6.30078 4.2002 9.30078l10.5996 11.2998l-3.39941 -0.5l2 3.39941c-2.30078 0.200195 -4.2002 0.5 -6.2002 0.700195l-0.5 1.2002l2.5 1.7002\nc2.2002 -0.200195 4.59961 -0.5 7.09961 -0.700195c2.52539 1.3457 6.89746 2.43848 9.75879 2.43848c1.18359 0 3.08301 -0.196289 4.24121 -0.438477l2.5 -1.2002l0.200195 -0.5c6.50488 0.421875 16.9883 1.7207 23.4004 2.90039\nc20.6992 2.89941 36.6992 11.2998 48.5 24.7998l-21.1006 0.5c-25.7998 0.5 -49.3994 -5.40039 -71.2998 -18.9004l-2.5 2.5l0.5 4.7002l1.7002 7.10059c1.37695 7.08105 4.24414 18.415 6.39941 25.2998c-1.69922 -0.700195 -4.59961 -4.90039 -9.2998 -11.2998\nc-4.7002 -6.40039 -8.39941 -13 -10.0996 -19.4004c-0.905273 -4.24512 -3.54785 -10.6514 -5.90039 -14.2998l-13.5 29l8.40039 -35.7998l-0.5 -1.7002h-0.015625c-4.51953 0 -11.6807 1.12012 -15.9844 2.5c-3.40039 0.700195 -10.6006 1.2002 -20.9004 1.2002\nc0.5 0 -0.700195 0 -3.2002 -0.5c5.40039 -1.30078 13.5 -4.2002 24.8008 -8.40039l6.39941 1.2002c-4.2002 -3.40039 -10.8994 -10.1006 -20.2002 -19.4004c-9.39941 -8.89941 -20.1992 -26.0996 -32.5 -50.2002l4.2002 1.2002l10.1006 9.2998l-5.40039 -4.69922\nl13 12.2998l-2.5 -3.40039c-5.09961 -7.59961 -8.09961 -12.2998 -9.2998 -15.2002zM367.5 -25.0996c8.2998 40.2998 3.59961 55.1992 -0.700195 89.5c-35.5 -11.8008 -20.2998 -6 -32 -10.8008l10.5 -14.1992l-1.2002 -1.2002c-20.1992 6 -23.1992 10.7998 -27.7998 15\nc6 -22.2002 13.9004 -26.4004 29.5 -31.7002c-9.5 -9.59961 -25.3994 4 -34.3994 13l2.5 -23.5996l-4.2002 -3c-5 22.0996 -22 39.0996 -25.2998 39.0996c-44 -13 -79.1006 -5.7998 -113.9 10.5996c-1.59961 -0.399414 -70.5996 -18 -120.5 37.1006\nc13.7002 -35 32.2998 -63.7002 71.2998 -82.6006c-4.13574 8.56934 -13.4102 20.4863 -20.7002 26.6006c0 0 0.700195 3.7002 1.2002 10.0996c19.4004 -19.3994 50.7002 -39.5 93.2002 -60.2002c-59.5996 24.5 -59.9004 24.8008 -69.0996 29l16 -20.6992\nc-3 -1.30078 -6.7002 -0.5 -10.1006 1.19922c-10.3359 6.03809 -26.1943 17.1484 -35.3994 24.8008c1.89941 -2.2002 80.0996 -98.5 200.899 -74.3008c-43.0996 21.8008 -52.3994 52.4004 -66.5996 73.5l17.7002 -7.59961l-11.8008 23.0996\nc20.1006 -27.7998 28.6006 -35 38.4004 -44.2998l-30 16.5c12.5996 -27.0996 33.7002 -47 63.5 -58.7998c2.90039 1.5 9.09961 -1.09961 59 23.9004zM482.8 189.3l8.93066 -12.7998l-12.3008 32.5c10.9004 0 10 -0.0996094 21.2002 -3.40039\nc-6.72168 9.44824 -18.8184 23.7842 -27 32l-26.5996 23.1006l1.2002 3l23.5996 2.5c-9.00293 1.98535 -23.7871 3.86719 -33 4.2002l-17.7002 -0.5l-0.5 2.89941l14.7998 13l-41.7998 -20.2002l-12.2998 18.9004l3.40039 -16l-2.5 -1.2002l-5.90039 4.2002h-10.0996\nl5.39941 -4.2002v-2l-13.5 -27.7998c-10.0996 -31.2002 -21.8994 -67.9004 -35.3994 -109.7l1.19922 16l-1.19922 -3v-0.5c-6.40039 -16 -13.6006 -29.5 -21.2002 -39.5996l9.2998 21.8994l-46.7002 -20.1992c11.7998 13.5 23.6006 19.3994 34.9004 18.8994\nc-71.2002 11.4004 -106.2 41 -110.4 46c3.60059 -6.2002 13.2002 -17.7998 16 -40.0996l-1.7002 -1.2002c-4.2998 15.5996 -16.3994 46.5996 -55.7998 69.5996l23.6006 -2.5c-10.5 12.6006 -36.3008 17.8008 -40.8008 16l-2.5 2.5l8.40039 8.40039l-22.2998 -5.7998\nl5.39941 13.5c-8.09961 -4.40039 -4.2998 -2.40039 -17 -8.90039l-1.69922 0.5c0.599609 0.600586 0.899414 -0.700195 -3 9.2998c-0.600586 -11 -0.400391 -8.59961 -1 -11.7998c-1.07324 -0.355469 -2.73145 -1.11719 -3.7002 -1.7002c-40 20.6006 -57.2002 11 -73 5.2002\nc36.7998 -6 29.2998 -4 38.3994 -9.2998c-25.7998 -12.2002 -31.8994 -12.5996 -51.3994 -70.0996l22.2695 22.2998l2.5 -16.4004c13.4004 -58 68.7002 -92.5 126.4 -83.3994l-26.1006 22.3994l44.8008 -22.3994l-1.2002 -3c4.59961 -1.7002 9.2998 -3 13.5 -4.2002\nc16.4727 -4.87598 43.7852 -8.83203 60.9648 -8.83203c8.94727 0 23.3887 1.08887 32.2354 2.43164l-32.5 21.2002c35.7998 -7 50.6992 -31.4004 56.7998 -39.5996l-7.60059 29l1.2002 2.5l19 -27.9004l-9.2998 26.5996l21.9004 -13.5h1.19922l-3.39941 4.2002\nl7.09961 -4.7002l-14.2998 16l1.2002 3l7.59961 -7.09961c4.2998 1.2002 41.4004 10.5 80.9004 40.2998c47.8994 35.4004 68.0996 73.7998 71.5996 79.7002l-3 9.2998zM476.7 260.6l-18.2002 -1.19922l14.2998 -11.8008zM221.9 253.5\nc2.69922 -5.09961 5.69922 -12.4004 18.3994 -18.7998c-7.5 -10.9004 -8.2998 -10.5 -20.2002 -16c-7.59961 -7.7002 -13.5 -13.1006 -17.6992 -14.7998l7.09961 13c-4.61914 -1.69336 -12.3604 -3.06641 -17.2793 -3.06641c-2.08789 0 -5.45703 0.25293 -7.52051 0.566406\nl-0.5 1.19922c19 2.10059 37.2002 9.40039 46.5 16c-4.10059 4.2002 -7.10059 11.3008 -8.7998 21.9004zM225.6 355.8c4.92578 -2.78809 11.3486 -8.9707 14.3008 -13.7998c14.6992 -24.0996 19.1992 -40.0996 11.2998 -47.7002\nc-7.90039 -7.59961 -16.7998 -7.09961 -26.1006 3c-9.2998 10.1006 -13.5 23.7002 -11.7998 39.6006c1.7002 15.8994 5.90039 22.2998 12.2998 18.8994zM220.9 309.5c7.09961 -21.2998 33.3994 -23.0996 26.8994 4.90039c-3.89941 16.5 -8.7998 27.0996 -15.2002 32.5\nc-6.59961 5.39941 -10.0996 6.69922 -11.2998 4.19922c-2.5 -2.89941 -3.5 -11.2998 -3 -24.7998c7.5 12.7998 11.6006 5.90039 12.5 4.7002l-0.5 -0.5c-0.799805 -1.7002 -2.59961 -3.09961 1.7002 -6.2002l1.2002 0.5v-4.7002\nc-1.7998 -12.5 -6.90039 -12.7998 -12.2998 -10.5996zM175.9 315c-2.09375 0.388672 -4.49707 2.27051 -5.40039 4.2002c-3.5 8.5 0 21.2002 8.09961 21.2002c2 -0.5 3.7002 -1.7002 5.40039 -4.7002c-1.5 -0.400391 -4.7002 -4.7998 0.700195 -5.90039h0.5\nc0 -13.7002 -7.7002 -15.0996 -9.2998 -14.7998zM216 365.1l-3.7002 2.40039l-0.5 2.5c18.2998 0 25.7998 -8.7998 28.2998 -14.2998c-6.0459 3.29688 -16.542 5.97266 -23.4297 5.97266c-0.737305 0 -1.93359 -0.0322266 -2.66992 -0.0732422l-0.5 3zM144.2 315.7\nc1.59961 -1.60059 0.599609 -0.299805 4.89941 -6.60059c-25.3994 -4.69922 -23.1992 -12.2998 -30 -12.2998c0.300781 0.600586 7.10059 16 23.6006 16l-7.10059 7.60059c9.40039 0.5 15.2002 2.09961 19.9004 -5.90039c0.0175781 6.60938 1.31641 17.1826 2.90039 23.5996\nc2 7.60059 3.69922 11.8008 5.39941 13.5c1 1.5 16.2998 15.7002 29 22.4004c2.05469 1.48047 5.77637 2.68262 8.30859 2.68262c1.48438 0 3.81055 -0.44043 5.19141 -0.982422c0.285156 -0.345703 0.515625 -0.989258 0.515625 -1.43652\nc0 -0.0732422 -0.00683594 -0.191406 -0.015625 -0.263672l-13 -7.59961c7.60059 -11.8008 10.5 -25.3008 8.7998 -41.3008c-0.932617 -9.45898 -7.5625 -22.1377 -14.7998 -28.2998l2.90039 -4.7002c-30 2.2002 -24.7998 6.80078 -46.5 23.6006zM162.9 334.4\nc-1.80078 -7.2002 -2.30078 -16 -3.10059 -26l5.40039 -6.40039l7.09961 -3.40039c2.01465 -0.384766 5.31445 -0.697266 7.36523 -0.697266c1.08887 0 2.85156 0.0888672 3.93457 0.197266c1 1.7002 3.5 4.2002 6.40039 7.60059c5 5.89941 7.90039 13.7998 8.40039 23.0996\nc0.0703125 1.18262 0.126953 3.10449 0.126953 4.28906c0 5.92773 -1.40137 15.3408 -3.12695 21.0107c-3 8.10059 -5.90039 11 -10.1006 9.30078c-5.39941 -1.7002 -10.5996 -5.40039 -16 -11.8008c-3 -4.19922 -5.2002 -9.59961 -6.39941 -17.1992zM204.9 278.3\nl-3.10059 -6.5c7.10059 4.2002 13.5 7.2002 19.4004 8.40039l7.09961 0.5l11.7998 -7.60059h-2.5c-8.7998 3.7002 -19.3994 1.2002 -30.6992 -7.59961c-0.5 -4.7002 1.69922 -14.7002 5.89941 -29.5l9.2002 0.5c-21.9004 -6.59961 -37.5996 -8.40039 -48.9004 -5.40039\nc-24.8994 6.7002 -27.3994 23.6006 -27.5 24.1006c-1.47754 5.69238 -2.67676 15.0869 -2.67676 20.9688c0 3.53418 0.438477 9.23828 0.977539 12.7314c-6.40039 -0.5 -11 -4.2002 -15.2002 -10.6006c-2.90039 5.90039 -5.40039 8.7998 -5.90039 9.2998\nc1.5 0.700195 12.2998 7.5 32.5 4.90039l0.5 -2.5l-5.89941 -1.2002c-0.100586 -0.399414 -1.90039 -29.5 18.8994 -24.7998c1.40039 0.299805 1.2998 -0.0996094 36.1006 14.2998z\" />\n    <glyph glyph-name=\"acquisitions-incorporated\" unicode=\"&#xf6af;\" horiz-adv-x=\"384\" \nd=\"M357.45 -20.2002c2.2002 -14.2998 4.09961 -28.7002 6.59961 -43.7002h-337.1c-4 0 -6.10059 0.700195 -5.2998 5.7002c2.09961 12.9004 3.5 25.9004 5 38.7998c0.5 4.80078 2.2998 6.80078 7.59961 6.80078c118.1 -1 114.9 -0.300781 121.4 2.39941\nc9.39941 4 14.8994 12.9004 14.8994 23.1006c-0.0996094 42.8994 -0.299805 85.8994 -0.200195 128.8c0 3.7998 -1.19922 5.89941 -4.59961 6.7998c-15.7002 3.90039 -31.2998 7.7002 -47.5996 11.7002c-5.30078 -12.2998 -10.4004 -24.4004 -15.7002 -36.7002\nc1.7998 -3.2998 28.3994 -2.90039 35.2998 -2.90039v-27.5996h-114.3c1 8.59961 1.7002 16.7998 3.2002 24.9004c0.299805 1.39941 3.59961 3.09961 5.5 3.19922c8.39941 0.400391 16.8994 0.300781 25.3994 0.100586c4 0 5.90039 1.09961 7.60059 5.2002\nc16.5996 40.6992 13.5 31.1992 67.2998 161c31.5 76.0996 33 76 32.5996 87.3994c-0.700195 18.6006 -25.3994 22.2998 -37.7002 22.1006c-30 -0.400391 -38.3994 0.5 -101.8 0.5c-7.2002 44.5 -4.2002 32.0996 -6.39941 45.2998c-0.700195 4.2002 1 5.2998 4.59961 5.2998\nl339.1 -0.200195c-0.799805 -5.39941 -1.59961 -10.7998 -2.39941 -16.0996c-1.2998 -9.7002 -2.7998 -19.4004 -4 -29.2002c-0.299805 -2.90039 -1.2002 -4.2998 -4.2998 -4.2998c-20.6006 -0.100586 -41.2002 -0.100586 -61.8008 -0.5\nc-18.6992 -0.400391 -37.5996 -0.299805 -56.1992 -2c-13.4004 -1.2002 -23.3008 -12.6006 -18.9004 -26.6006c8.59961 -27.0996 27.7002 -69.0996 36.5 -89.1992c65.7002 -154.2 61.4004 -157 84 -158.601c6.59961 -0.5 13.4004 -0.0996094 20.4004 -0.0996094\nc1.2998 -9.40039 2.59961 -18 4 -27.5h-116v27c10.3994 0 20.3994 0.0996094 30.3994 -0.100586c3.5 0 5 0.700195 3.40039 4.40039c-4.40039 10.2998 -8.7002 20.5996 -13.2002 30.9004c-1.59961 3.69922 -4.09961 4.7998 -8.40039 3.5\nc-12.3994 -3.60059 -24.7998 -6.7002 -37.2998 -9.7002c-4.2998 -1.10059 -6 -2.7998 -5.89941 -7.5c0.799805 -57.5 0.899414 -127.5 1 -129.101c0.399414 -12.5996 8.69922 -21.3994 21 -23.0996c0.899414 -0.200195 12.8994 -2.7998 112.699 -2.59961\nc8.30078 0 8.40039 0.0996094 9.60059 -7.60059zM182.55 185.5c2.46484 -0.869141 6.58691 -1.5752 9.2002 -1.5752s6.73535 0.706055 9.2002 1.5752c13 4.2002 26.2998 7.7998 39.3994 11.7002c1.1123 0.512695 2.86035 1.45312 3.90039 2.09961\nc-6.7002 17.4004 -13.0996 34.2002 -19.7002 50.9004c-8.89941 22.7002 -17.7002 60.2998 -27 82.7998c-1.5 0.799805 -1.89941 -2.40039 -9.39941 0c-17.1006 -44 -34.1006 -87.7998 -51.3008 -132.1c1.54297 -0.917969 4.1416 -2.2168 5.80078 -2.90039\nc13.2998 -4.2998 26.5996 -8.2998 39.8994 -12.5z\" />\n    <glyph glyph-name=\"critical-role\" unicode=\"&#xf6c9;\" \nd=\"M225.82 448c0.259766 -0.150391 216.569 -124.51 217.12 -124.72c3 -1.18066 3.69922 -3.45996 3.69922 -6.56055c-0.0732422 -83.4463 -0.0732422 -166.899 0 -250.359c0.00976562 -0.124023 0.0175781 -0.326172 0.0175781 -0.450195\nc0 -2.06836 -1.52148 -4.45703 -3.39746 -5.33008c-21.3701 -12 -207.859 -118.29 -218.93 -124.58h-3c-79.3301 45.6602 -218.25 125.44 -218.4 125.52c-1.04297 0.491211 -1.89062 1.8252 -1.89062 2.97754c0 0.0732422 0.00488281 0.19043 0.0107422 0.262695\nc0 0.870117 0 225.94 -0.0498047 253.101c-0.0078125 0.102539 -0.0136719 0.269531 -0.0136719 0.37207c0 1.78223 1.31836 3.82422 2.94336 4.55762c23.2607 13.0996 209.271 119.21 220.141 125.21h1.75zM215.4 427.58l-0.219727 0.158203\nc-64.7471 -36.8604 -129.474 -73.7305 -194.18 -110.61c0 -0.120117 0.0800781 -0.229492 0.129883 -0.349609l30.8604 -11.6406c-7.70996 -6 -8.32031 -6 -10.6504 -5.12988c-0.0996094 0 -24.1699 9.28027 -26.7998 10v-230.43\nc0.879883 1.41016 64.0703 110.91 64.1299 111c1.62012 2.82031 3 1.91992 9.12012 1.51953c1.40039 -0.0898438 1.47949 -0.219727 0.780273 -1.41992c-41.1904 -71.3301 -36.4004 -63 -67.4805 -116.939c-0.80957 -1.40039 -0.609375 -1.12988 1.25 -1.12988h186.5\nc1.44043 0 1.69043 0.229492 1.7002 1.63965v8.87988c0 1.33984 2.36035 0.810547 -18.3701 1c-7.45996 0.0703125 -14.1396 3.21973 -21.3799 12.7002c-7.37988 9.66016 -14.6201 19.4297 -21.8496 29.21c-2.28027 3.08008 -3.4502 2.37988 -16.7607 2.37988\nc-1.75 0 -1.7793 0 -1.75977 -1.82031c0.290039 -26.21 0.150391 -25.2695 1 -32.6592c0.520508 -4.37012 2.16016 -4.2002 9.69043 -4.81055c3.13965 -0.259766 3.87988 -4.08008 0.519531 -4.91992c-1.57031 -0.389648 -31.5996 -0.509766 -33.6699 0.0996094\nc-0.982422 0.269531 -1.78027 1.31543 -1.78027 2.33398c0 1.16016 0.931641 2.2334 2.08008 2.39648c3.29004 0.759766 6.16016 -0.80957 6.66016 4.44043c1.2998 13.6592 1.16992 9 1.09961 79.4199c0 10.8193 -0.349609 12.5801 -5.35938 13.5498\nc-1.21973 0.240234 -3.54004 0.160156 -4.69043 0.549805c-2.87988 1 -2 4.83984 1.77051 4.84961c33.6699 0 46.0801 1.07031 56.0596 -4.85938c7.74023 -4.61035 12 -11.4805 12.5098 -20.4004c0.880859 -14.5898 -6.50977 -22.3496 -15 -32.5898\nc-0.282227 -0.241211 -0.510742 -0.738281 -0.510742 -1.11035c0 -0.371094 0.228516 -0.868164 0.510742 -1.10938c2.60059 -3.25 5 -6.62988 7.70996 -9.83008c27.5605 -33.2305 24.1104 -30.54 41.2803 -33.0605c0.890625 -0.129883 1 0.419922 1 1.15039v11\nc0 1 0.320312 1.42969 1.41016 1.25977c2.98633 -0.454102 7.86133 -0.822266 10.8818 -0.822266c3.53223 0 9.2207 0.50293 12.6982 1.12207c1.08008 0.150391 1.5 -0.199219 1.47949 -1.33008c0 -0.109375 0.880859 -26.6895 0.870117 -26.7998\nc-0.0498047 -1.51953 0.669922 -1.62012 1.89062 -1.62012h186.71c-27.1533 47.0342 -54.2334 93.9746 -81.2402 140.821c2.25977 0.660156 -0.400391 0 6.69043 1.38965c2 0.390625 2.0498 0.410156 3.10938 -1.43945c7.31055 -12.6396 77.3105 -134 77.3701 -134.061\nv230.44c-1.71973 -0.5 -103.3 -38.7197 -105.76 -39.6797c-1.08008 -0.419922 -1.5498 -0.200195 -1.91016 0.879883c-0.629883 1.89941 -1.33984 3.75977 -2.08984 5.62012c-0.320312 0.790039 -0.0898438 1.12988 0.649414 1.38965\nc0.100586 0 95.5303 35.8496 103 38.7705c-65.4199 37.5693 -130.56 75 -196 112.6l86.8203 -150.39l-0.280273 -0.330078c-9.56934 0.899414 -10.46 1.59961 -11.7998 3.93945c-1 1.69043 -73.5 127.71 -82 142.16c-9.09961 -14.6699 -83.5596 -146.21 -85.3701 -146.32\nc-2.92969 -0.169922 -5.87988 -0.0800781 -9.25 -0.0800781c28.833 49.8271 57.5596 99.4941 86.1797 149.001zM267.331 297.658c1.54688 0.120117 4.02832 0.500977 5.54004 0.849609c1.68945 0.299805 2.53027 -0.200195 2.59961 -1.91992\nc0 -0.109375 0.0703125 -19.0596 -0.859375 -20.4502c-0.930664 -1.38965 -1.87988 -1.21973 -2.60059 0.19043c-5 9.68945 6.2207 9.66016 -39.1201 12c-0.699219 0 -1 -0.230469 -1 -0.929688c0 -0.130859 3.7207 -122 3.73047 -122.11\nc0 -0.889648 0.519531 -1.2002 1.20996 -1.50977c2.46484 -0.980469 6.3623 -2.79492 8.7002 -4.0498c7.30957 -4.33008 11.3799 -10.8408 12.4102 -19.3105c1.43945 -11.7998 -2.77051 -35.7695 -32.21 -37.1396c-2.75 -0.129883 -28.2607 -1.08008 -34.1406 23.25\nc-4.66016 19.2598 8.25977 32.7002 19.8906 36.3994c1.11035 0.202148 2.0127 1.28223 2.0127 2.41113c0 0.0683594 -0.00585938 0.180664 -0.0126953 0.249023c0.0996094 5.62988 3 107.101 3.70996 121.351c0.0498047 1.0791 -0.620117 1.15918 -1.35059 1.14941\nc-32.3496 -0.519531 -36.75 0.339844 -40.2197 -8.51953c-2.41992 -6.18066 -4.13965 -1.32031 -3.9502 -0.230469c1.05957 6 2.16309 12 3.31055 18c0.399414 2.11035 1.42969 2.61035 3.42969 1.86035c5.58984 -2.11035 6.71973 -1.7002 37.25 -1.91992\nc1.72949 0 1.78027 0.0800781 1.82031 1.84961c0.679688 27.4902 0.579102 22.5898 1 29.5498c0.00976562 0.0878906 0.0185547 0.231445 0.0185547 0.320312c0 0.986328 -0.738281 2.09766 -1.64941 2.48047c-5.59961 2.90918 -8.75 7.5498 -8.89941 13.8691\nc-0.350586 14.8105 17.7197 21.6699 27.3799 11.5107c6.83984 -7.19043 5.7998 -18.9102 -2.4502 -24.1504c-1.24316 -0.68457 -2.25195 -2.3916 -2.25195 -3.81055c0 -0.146484 0.0146484 -0.383789 0.0322266 -0.529297c0 -0.589844 -0.110352 4.30957 1 -30.0498\nc0 -0.900391 0.429688 -1.12012 1.24023 -1.11035c0.0996094 0 23 0.0898438 34.4697 0.370117zM68.2705 306.298c19.8408 4.50977 32.6807 0.560547 52.4902 -1.68945c2.75977 -0.310547 3.74023 -1.2207 3.62012 -4c-0.209961 -5 -1.16016 -22.3301 -1.24023 -23.1504\nc-0.0371094 -0.932617 -0.767578 -1.98145 -1.62988 -2.33984c-4.05957 -1.7002 -3.60938 4.4502 -4 7.29004c-3.12988 22.4297 -73.8701 32.7002 -74.6299 -25.4004c-0.30957 -23.9199 17 -53.6299 54.0801 -50.8799c27.2402 2 19 20.1904 24.8398 20.4697\nc0.0996094 0.0136719 0.261719 0.0244141 0.362305 0.0244141c1.50195 0 2.7207 -1.21875 2.7207 -2.71973c0 -0.186523 -0.0371094 -0.483398 -0.0830078 -0.664062c-1.83008 -10.8506 -3.41992 -18.9502 -3.4502 -19.1504\nc-1.54004 -9.16992 -86.6992 -22.0898 -93.3496 42.0605c-2.70996 25.8496 10.4404 53.3691 40.2695 60.1494zM148.271 218.628h-19.4893c-0.0576172 -0.00488281 -0.151367 -0.00878906 -0.208984 -0.00878906c-1.04102 0 -2.13867 0.805664 -2.45117 1.79883\nc2.37988 3.75 5.88965 -0.919922 5.86035 6.13965c-0.0800781 25.75 0.209961 38 0.229492 40.1006c0 3.41992 -0.530273 4.64941 -3.32031 4.93945c-7 0.720703 -3.10938 3.37012 -1.10938 3.38086c11.8398 0.0996094 22.6201 0.179688 30.0498 -0.720703\nc8.76953 -1.06934 16.71 -12.6299 7.92969 -22.6201c-2 -2.25 -4 -4.41992 -6.13965 -6.72949c0.950195 -1.15039 6.89941 -8.82031 17.2803 -19.6797c2.65918 -2.78027 6.14941 -3.51074 9.87988 -3.13086h0.0214844c1.1709 0 2.16016 0.950195 2.20801 2.12012\nc0.299805 3.41992 0.259766 -4.72949 0.450195 40.5801c0 5.65039 -0.339844 6.58008 -3.22949 6.83008c-3.9502 0.350586 -4 2.25977 -0.69043 3.37012l19.0898 0.0898438c0.320312 0 4.49023 -0.530273 1 -3.37988c0 -0.0498047 -0.160156 0 -0.240234 0\nc-3.60938 -0.259766 -3.93945 -1 -4 -4.62012c-0.269531 -43.9297 0.0703125 -40.2295 0.410156 -42.8203c0.110352 -0.839844 0.270508 -2.22949 5.10059 -2.13965c2.48926 0 3.85938 -3.37012 0 -3.39941c-10.3701 -0.0800781 -20.7402 0 -31.1104 -0.0703125\nc-10.6699 0 -13.4697 6.2002 -24.21 20.8203c-1.59961 2.17969 -8.31055 2.35938 -8.2002 0.369141c0.879883 -16.4697 0 -17.7793 4 -17.6699c4.75 0.100586 4.73047 -3.56934 0.830078 -3.5498h0.0595703zM423.271 228.778\nc-1.20996 -7.12988 0.170898 -10.3799 -5.2998 -10.3398c-61.5498 0.419922 -47.8193 0.219727 -50.7197 0.30957c-1.02246 0.100586 -2.64844 0.426758 -3.62988 0.730469c-2.53027 0.599609 1.47949 1.22949 -0.379883 5.59961\nc-1.43066 3.37012 -2.78027 6.78027 -4.11035 10.1895c-0.210938 0.797852 -1.05078 1.44434 -1.875 1.44434c-0.0351562 0 -0.0908203 -0.00195312 -0.125 -0.00390625c-1.82812 0.0878906 -4.79785 0.15918 -6.62793 0.15918\nc-2.19727 0 -5.75879 -0.102539 -7.95215 -0.229492c-0.587891 -0.0771484 -1.31348 -0.551758 -1.62012 -1.05957c-1.58008 -3.62012 -3.06934 -7.29004 -4.50977 -11c-1.26953 -3.23047 7.86035 -1.32031 12.1904 -2.16016c3 -0.570312 4.5293 -3.71973 0.65918 -3.72949\nh-26.3691c-2.91992 0 -3.09082 3.14941 -0.740234 3.20996c0.0791016 -0.00390625 0.208008 -0.00683594 0.288086 -0.00683594c2.14648 0 4.66992 1.55762 5.63184 3.47656c1.5 3 2.7998 6 4.11035 9.08984c18.1797 42.1396 17.0596 40.1699 18.4199 41.6104\nc0.300781 0.431641 0.973633 0.78125 1.5 0.78125s1.19824 -0.349609 1.5 -0.78125c2.92969 -3.33984 18.3994 -44.71 23.6201 -51.9199c2 -2.7002 5.73926 -2 6.35938 -2c3.61035 -0.130859 4 1.10938 4.12988 4.29004\nc0.0898438 1.86914 0.0800781 -1.1709 0.0703125 41.2393c0 4.45996 -2.36035 3.74023 -5.5498 4.27051c-0.259766 0 -2.56055 0.629883 -0.0800781 3.05957c0.209961 0.200195 -0.890625 0.240234 21.7002 0.150391c2.31934 0 5.31934 -2.75 -1.20996 -3.4502\nc-0.0322266 0.000976562 -0.0830078 0.00292969 -0.115234 0.00292969c-1.41309 0 -2.55957 -1.14746 -2.55957 -2.56055c0 -0.0751953 0.00683594 -0.197266 0.0146484 -0.272461c-0.0703125 -1.62988 -0.19043 -38.8896 0.290039 -41.21\nc0.27832 -1.34668 1.62109 -2.43848 2.99609 -2.43848c0.0644531 0 0.168945 0.00390625 0.233398 0.00878906c13.25 -0.430664 14.9199 -0.44043 16 3.41016c1.66992 5.7793 4.12988 2.51953 3.73047 0.189453zM318.551 164.408\nc-4.24023 0 -4.41992 3.38965 -0.609375 3.41016c35.9092 0.160156 28.1094 -0.379883 37.1895 0.649414c1.67969 0.19043 2.37988 -0.239258 2.25 -1.88965c-0.259766 -3.38965 -0.639648 -6.78027 -1 -10.1602c-0.25 -2.16016 -3.2002 -2.61035 -3.39941 0.150391\nc-0.380859 5.30957 -2.15039 4.44922 -15.6309 5.08008c-1.58008 0.0693359 -1.63965 0 -1.63965 -1.52051v-16.1299c0 -1.65039 0 -1.59961 1.62012 -1.46973c3.12012 0.25 10.3096 -0.339844 15.6895 1.51953c0.470703 0.160156 3.30078 1.79004 3.07031 -1.75977\nc0 -0.209961 -0.759766 -10.3496 -1.17969 -11.3896c-0.530273 -1.29004 -1.87988 -1.51074 -2.58008 -0.320312c-1.16992 2 0 5.08008 -3.70996 5.2998c-15.4199 0.900391 -12.9102 2.5498 -12.9102 -6c0 -12.25 -0.759766 -16.1104 3.88965 -16.2402\nc16.6406 -0.479492 14.4004 0 16.4307 5.70996c0.839844 2.37012 3.5 1.77051 3.17969 -0.580078c-0.44043 -3.20996 -0.849609 -6.42969 -1.22949 -9.63965c0 -0.360352 -0.160156 -2.39941 -4.66016 -2.38965c-37.1602 0.0800781 -34.54 0.189453 -35.21 0.30957\nc-2.7207 0.509766 -2.2002 3 0.219727 3.4502c1.09961 0.19043 4 -0.540039 4.16016 2.55957c2.43945 56.2207 -0.0703125 51.3408 -3.91016 51.3301zM318.141 273.928c2.45996 -0.609375 3.12988 -1.75977 2.9502 -4.64941\nc-0.330078 -5.2998 -0.339844 -9 -0.549805 -9.69043c-0.660156 -2.22949 -3.15039 -2.12012 -3.33984 0.270508c-0.379883 4.80957 -3.0498 7.81934 -7.57031 9.14941c-26.2803 7.73047 -32.8096 -15.46 -27.1699 -30.2197c5.87988 -15.4102 22 -15.9199 28.8604 -13.7803\nc5.91992 1.85059 5.87988 6.5 6.91016 7.58008c1.22949 1.2998 2.25 1.83984 3.11914 -1.09961c0 -0.100586 0.570312 -11.8906 -6 -12.75c-1.59961 -0.209961 -19.3799 -3.69043 -32.6797 3.38965c-21 11.1904 -16.7402 35.4697 -6.87988 45.3301\nc14 14.0596 39.9102 7.05957 42.3203 6.46973h0.0292969zM289.801 167.858c3.28027 0 3.66016 -3 0.160156 -3.43066c-2.61035 -0.319336 -5 0.419922 -5 -5.45996c0 -2 -0.19043 -29.0498 0.400391 -41.4502c0.109375 -2.28906 1.14941 -3.51953 3.43945 -3.64941\nc22 -1.20996 14.9502 1.64941 18.79 6.33984c1.83008 2.24023 2.75977 -0.839844 2.75977 -1.08008c0.350586 -13.6201 -4 -12.3896 -5.18945 -12.3994l-38.1602 0.189453c-1.92969 0.230469 -2.05957 3 -0.419922 3.37988c2 0.480469 4.93945 -0.399414 5.12988 2.7998\nc1 15.8701 0.570312 44.6504 0.339844 47.8105c-0.269531 3.76953 -2.7998 3.26953 -5.67969 3.70996c-2.46973 0.379883 -2 3.21973 0.339844 3.21973c1.4502 0.0205078 17.9697 0.0302734 23.0898 0.0205078zM258.171 225.648\nc0.0703125 -4.08008 2.86035 -3.45996 6 -3.58008c2.61035 -0.100586 2.53027 -3.41016 -0.0703125 -3.43066c-6.47949 0 -13.6992 0 -21.6094 0.0605469c-3.83984 0 -3.37988 3.34961 0 3.37012c4.49023 0 3.24023 -1.61035 3.41016 45.54\nc0 5.08008 -3.27051 3.54004 -4.7207 4.22949c-2.58008 1.23047 -1.35938 3.08984 0.410156 3.15039c1.29004 0 20.1904 0.410156 21.1699 -0.209961c0.980469 -0.620117 1.87012 -1.65039 -0.419922 -2.86035c-1 -0.519531 -3.85938 0.280273 -4.14941 -2.46973\nc0 -0.209961 -0.820312 -1.62988 -0.0703125 -43.7998h0.0498047zM221.261 -48.6221c0.408203 -0.273438 1.13867 -0.495117 1.62988 -0.495117c0.492188 0 1.22168 0.22168 1.62988 0.495117c17 9.79004 182 103.57 197.421 112.51\nc-0.140625 0.430664 11.2598 0.180664 -181.521 0.270508c-1.21973 0 -1.57031 -0.370117 -1.53027 -1.56055c0 -0.0996094 1.25 -44.5098 1.2207 -50.3799c-0.0791016 -2.17969 -0.688477 -5.63379 -1.36035 -7.70996c-0.549805 -1.83008 0.379883 0.5 -13.5 -32.2295\nc-0.730469 -1.7207 -1 -2.20996 -2 0.0800781c-4.19043 10.3398 -8.28027 20.7197 -12.5703 31c-1.12109 2.52441 -2.03125 6.81543 -2.03125 9.57812c0 0.333984 0.0146484 0.876953 0.03125 1.21191c0.160156 2.45996 0.800781 16.1191 1.51074 48c0 1.94922 0 2 -2 2\nh-183c2.5791 -1.63086 178.319 -102.57 196 -112.761zM130.361 140.128c0 -2.39941 0.359375 -2.79004 2.75977 -3c11.54 -1.16992 21 -3.74023 25.6396 7.32031c6 14.46 2.66016 34.4102 -12.4795 38.8398c-2 0.589844 -16 2.75977 -15.9404 -1.50977\nc0.0498047 -8.04004 0.00976562 -11.6104 0.0205078 -41.6504zM236.111 155.178c0 -2.12988 1.06934 -38.6797 1.08984 -39.1299c0.339844 -9.93945 -25.5801 -5.76953 -25.2305 2.58984c0.0800781 2 1.37012 37.4199 1.10059 39.4307\nc-14.1006 -7.44043 -14.4199 -40.21 6.43945 -48.8008c1.88184 -0.816406 5.0752 -1.47949 7.12695 -1.47949c5.53418 0 12.3721 3.83008 15.2637 8.5498c4.90918 7.75977 6.83984 29.4697 -5.43066 39c-0.0966797 -0.0400391 -0.257812 -0.09375 -0.359375 -0.120117\nv-0.0400391zM223.831 353.178c-9.83008 0 -9.73047 -14.75 -0.0703125 -14.8701c9.66016 -0.119141 10.1006 14.8809 0.0703125 14.9102v-0.0400391zM143.681 249.348c0 -1.7998 0.410156 -2.39941 2.16992 -2.58008c13.6201 -1.38965 12.5107 11 12.1602 13.3604\nc-1.68945 11.2197 -14.3799 10.2002 -14.3496 7.81055c0.0498047 -4.5 -0.0302734 -13.6807 0.0195312 -18.5908zM356.001 242.948l-6.09961 15.8398c-2.16016 -5.48047 -4.16016 -10.5703 -6.23047 -15.8398h12.3301z\" />\n    <glyph glyph-name=\"d-and-d-beyond\" unicode=\"&#xf6ca;\" horiz-adv-x=\"640\" \nd=\"M313.8 206.5c-9.89941 0 -16 7 -15.7002 7.09961c-4.2998 5.7002 -3 -0.299805 -2.39941 -1.89941c-10.9004 10.2998 -5.2998 25.3994 -5.10059 26c0.700195 1.89941 0 2.2002 -0.599609 1.89941c-1 -0.299805 -2.09961 -1.89941 -2.09961 -1.89941\nc0.799805 9.09961 9.2998 14.7002 9.2998 14.7002l0.200195 -0.200195c1 -1.5 -0.400391 -3.2002 -0.600586 -9c1.60059 2.2998 7.90039 6.59961 11.4004 7.89941c-1.10059 -1.5 -2.10059 -3.59961 -2.10059 -6.59961c3.7002 4.2002 7.5 2.59961 8 2.40039\nc-12.1992 -11.9004 -7 -26.6006 3.2002 -26.6006c5.7002 0 11.5 6.40039 13.9004 10.7002c2.39941 -2.40039 6.39941 -5.5 7.39941 -6.59961c-3.7998 -7.80078 -11 -17.9004 -24.7998 -17.9004zM366.2 227.6c0 -2.89941 -2.90039 -4.09961 -5.40039 -4.5\nc0.700195 1.5 1.7998 5.10059 -0.200195 9c0.700195 -0.0996094 5.60059 -0.5 5.60059 -4.5zM376.5 222.4c-0.400391 -6.5 -6.90039 -11.6006 -14.5996 -10.6006c2 -1.7002 6.59961 -3 9 -1.89941c-3.90039 -6.90039 -23.1006 -7.5 -23.1006 6.39941\nc-2.89941 -2.89941 -2.09961 -7.39941 0 -9.2998c-2.2002 0.700195 -5.7998 3.09961 -6.39941 7.40039c-1.30078 10.0996 4.39941 6.5 -10.4004 18.0996c-4.7998 3.7002 -3 6.59961 -4 8.5c-1.09961 2.2002 -7 4.09961 -4.5 8.5\nc-0.0996094 -1.59961 1 -2.90039 2.59961 -3.5c1.80078 -0.700195 3.2002 -0.200195 4.80078 -1c1.69922 -1.2002 0.899414 -3.90039 2.19922 -5c1.10059 -0.799805 4.2002 0.299805 6.60059 -1.7998c2.59961 -2 8.2002 -6.7002 10.5996 -8.60059\nc4.40039 -3.59961 8.7998 0.400391 7.40039 4.60059c4.5 -2.60059 5 -9.90039 1.2998 -12.5c10.5996 -2.40039 13 10.0996 5 11.3994c7.2998 0.700195 13.5 -4.2998 13.5 -10.6992zM337.1 240.8c4.30078 6.10059 13.3008 15.2998 23.8008 15.7998\nc-5.90039 0.800781 -15.1006 -3.19922 -19.7002 -9c0.899414 3.90039 5.09961 10.1006 10.2002 13c0 0 -2.5 -3.19922 -1.40039 -3.69922c1.59961 -0.800781 5.7998 5.69922 11.2002 5.89941c0 0 -4 -2 -3.2002 -3.39941c0.599609 -0.900391 3.2998 1.2998 8 1.2998\nc5.7998 0 10.9004 -3.5 13.2998 -6.2002c-4 1.09961 -11.5996 -0.799805 -13.7998 -2.7002c-0.299805 0.200195 -11.7998 9 -22 -15.5c-4.7998 3.7998 -4.40039 3.7002 -6.40039 4.5zM579.6 188.9c37.2002 0 60.4004 -19.6006 60.4004 -48.9004\nc0 -28.2002 -17 -48.9004 -59.0996 -48.9004c-20.7002 0 -41.2002 1.30078 -51.6006 2.10059l7.40039 8.2002v77.1992l-7.40039 8.2002c10.2998 0.799805 29.6006 2.10059 50.2998 2.10059zM564.5 113.3c25.4004 -3.2002 46.7998 1.40039 46.7998 27\nc0 22.5 -16.7002 29.6006 -46.7998 26.2998v-53.2998zM301.6 267c0.100586 -0.299805 -2.7998 2.2998 -3.2998 7.5c-0.200195 2.2998 0 19.7998 20 18.9004c11.2002 -0.600586 16.7002 -8.30078 16.7002 -16.5c0 -4.30078 -2.2998 -10.1006 -5.5 -13.8008\nc-2.2002 2.2002 -5.59961 4.60059 -7.7002 7.80078c3.7998 5.59961 2.2002 14.3994 -4.7002 14.3994c-4.2998 0 -7.7998 -4.5 -6.39941 -9.89941c-0.700195 -2.40039 -1 -5.60059 -0.5 -8c-4.90039 2.59961 -6.5 6 -7.5 9c-1.2998 -2.5 -2.10059 -6 -1.10059 -9.40039z\nM301.2 261c0.299805 1.7002 -3.10059 4.59961 -4.7998 5.2002c4.7998 0.200195 7 -0.600586 7 -0.600586c-1.30078 1.7002 -1.60059 4.5 -1 6.7002c2.5 -6.09961 11.6992 -7.09961 13.8994 -12.2002c-0.299805 2.30078 -2.39941 4.7002 -4.7998 6.10059\nc-1.2998 3.2002 -0.299805 9.39941 1.2998 11c-0.5 -8.7998 12 -13.7998 14.6006 -20.2002c-1.40039 5.5 -7.40039 9 -10.1006 12.2002c-1 2.09961 -0.200195 5.7998 0.799805 7.09961c-0.5 -9.7002 15.8008 -14.2998 14.1006 -23.8994\nc0.899414 -0.400391 2.09961 -1.2002 1.89941 -2.60059c1.30078 0.299805 2.60059 1.7002 2.90039 2.7002c0.700195 -4.5 -1.90039 -9 -4.7998 -10.4004c1.59961 4 -2.7002 5.60059 -6.7002 5.10059c0 0 1.59961 2.2998 1 3.39941\nc-0.799805 1.5 -8 0.800781 -11.2002 -0.299805c1.10059 0.100586 3.60059 -0.200195 4.60059 -0.5c-2.10059 -2.89941 -1 -7.09961 1.2998 -4.2002c0 0 -1.10059 -3.5 -0.299805 -4.2998c0.799805 -0.799805 2.59961 -0.200195 2.59961 -0.200195\nc-1.2002 -2.69922 -5.2998 -4.59961 -8.2002 -4.59961c1.10059 0.400391 2.7002 2.2998 3 3.40039c-0.799805 -0.5 -2.7002 -0.700195 -3.5 -0.5c6.10059 3 0 13.1992 -7 8.19922c1 2.7002 3.7002 5.30078 5.7998 6.10059c-1.2998 0.5 -2.69922 0.799805 -4.2998 1.09961\nc1.7998 1.5 6.2998 2.7998 8.5 2.60059c-3.5 0.799805 -9.89941 -0.300781 -12.7998 -3.7002c0.900391 0 3.2998 -0.5 4.2998 -0.799805c-4 -0.700195 -9.39941 -4.40039 -11 -6.2002c0.299805 2.2002 1 4.2002 0.5 5.59961c-0.799805 2 -3 2.7998 -7.7998 1.7998\nc3.2002 3.2002 9.7002 5.10059 10.2002 6.90039zM327.1 253.6c0 0 -0.899414 3 -4.19922 4.30078c0.699219 -2.2002 1.5 -4.30078 4.19922 -4.30078zM366 249.9l0.700195 0.699219c0.5 0.400391 1.59961 0.900391 2.7002 1.40039v-18.4004\nc-1.7002 0.800781 -3.5 1.10059 -5.60059 1.10059c-2.39941 0 -5 -0.5 -5 -0.5c-0.5 0.5 -3.59961 2.89941 -5.09961 3.2002c4.09961 -4.30078 0.5 -9.80078 -3 -7.2002v15.7002c0.700195 0.799805 1.2998 1.7998 2.09961 2.59961\nc1.7002 2.09961 4.60059 3.40039 7.5 3.40039c1.7998 0 3.60059 -0.400391 4.7002 -1.40039zM79.9004 142.1c22 -6.39941 19.3994 -20.0996 19.3994 -25.1992c0 -7.80078 -3.2002 -13.6006 -9.89941 -17.6006c-12.6006 -7.39941 -24.7002 -5.89941 -86.4004 -5.89941\nl8.40039 8.59961v32.2998l-11.4004 14.6006h11.2998v29.5l-8.2998 8.59961h56.0996c12.9004 0 37 -4.40039 37 -25c0 -1.90039 1 -15.2998 -16.1992 -19.9004zM38.5996 169.6v-20.8994c10.6006 0 29.6006 -3.2998 29.6006 8.7998v3\nc0 9.90039 -9.60059 9.09961 -29.6006 9.09961zM38.5996 110.4c20.4004 0 32.9004 -1.90039 32.9004 9.2998h-0.200195v4.5c0 11.0996 -20.5 8.7998 -32.7002 8.7998v-22.5996zM139.8 129.7v-15.4004l60.1006 0.200195l-14.1006 -21.2002h-81.2002l7.40039 8.2002v77.0996\nl-7.40039 8.2002l73.5 0.200195v-0.200195l14.1006 -21h-52.4004v-14.8994h37.2002l-14.0996 -21.2002v-0.200195zM354.5 189.8c73.7998 0 77.5996 -99.2998 -0.299805 -99.2998c-77.2002 0 -73.6006 99.2998 0.299805 99.2998zM354.2 112.3\nc39 0 37 55.2002 0.200195 55.2998c-37.1006 0 -37.6006 -55.2998 -0.200195 -55.2998zM262.9 120.6l0.199219 -19l7.2002 -8.19922h-42.5996l7.7002 8.19922l-0.200195 19.4004l-44.1006 65.7998h44.9004l-6.40039 -7.2002l21 -37.1992h0.300781l20.5 37.1992\nl-6.10059 7.2002h41.7002zM234.5 271.9c-9.09961 6.69922 -9.5 14.0996 -9.59961 14.8994c7.2998 -4.2998 9 -4 39.8994 -4c-5.7998 0 24 3.10059 32.2002 -22.8994c-0.400391 0 -8.40039 -4.80078 -10.4004 -7.90039c5.30078 1.90039 8.90039 1.09961 9 1.09961\nc-8 -5.09961 -9.59961 -14.7998 -9.59961 -20.5c0.900391 2.10059 2.7002 3.7002 2.7002 3.5c-0.600586 -2.5 -1.40039 -7 -0.799805 -12c-8.60059 -7.09961 -16 -8.59961 -26 -8.59961h-35.1006c0.400391 0.0996094 7.7998 4.5 7.90039 4.59961\nc1.89941 1.10059 2.7002 2.2002 2.7002 6.40039v38.7998c0 4.2002 -1.30078 5.2998 -2.90039 6.60059zM256 266.4v-34.6006c4.7002 0 23.0996 -3.39941 23.0996 17.2998c0 20.6006 -18.5 17.3008 -23.0996 17.3008zM484.9 186.8l39.1992 -0.0996094l-7.39941 -8.2998\nv-85.2002h-21.2998c-4 12.7002 -44.8008 45 -48.5 55.5996h-0.300781v-47.3994l7.40039 -8.2002h-39l7.2002 8.2998v76.9004l-7.40039 8.5h31.6006c2.89941 -9.40039 39.7998 -36.5 45.1992 -50.9004h0.300781v42.5zM378.2 282.9\nc32.7002 -1.60059 33.7998 -29.8008 33.7998 -33.6006c0 -6.7002 -3.2998 -34 -36.7002 -34h-0.299805c3.59961 4.2998 3.5 11.9004 -2.2002 16.2998c1.2002 0 19.7002 -3.19922 19.7002 17.3008c0 20.6992 -18.4004 17.2998 -23.0996 17.2998v-4.2998\nc-5.40039 0.799805 -7.40039 -0.300781 -7.5 -0.300781c2.09961 1.80078 4.5 2.60059 6.09961 2.90039c-7.09961 1.59961 -13.5996 -2.40039 -14.5996 -3.5c0.799805 1.7998 2.39941 3.40039 3.5 4.5c-2.30078 -0.799805 -4.30078 -1.90039 -6.10059 -3\nc0 5.2002 0.200195 7.5 -2.89941 9.5c-9.10059 6.59961 -9.5 14.2002 -9.60059 14.9004c7.10059 -4.2002 7.7002 -4 39.9004 -4z\" />\n    <glyph glyph-name=\"dev\" unicode=\"&#xf6cc;\" \nd=\"M120.12 239.71c3.87012 -2.90039 5.82031 -7.25977 5.83008 -13.0596v-69.6504c0 -5.80957 -1.94043 -10.1602 -5.82031 -13.0596c-3.87988 -2.90039 -7.76953 -4.35059 -11.6494 -4.35059h-17.4502v104.47h17.4395c3.87988 0 7.77051 -1.44922 11.6504 -4.34961z\nM404.1 416c24.2002 0 43.8408 -19.5898 43.9004 -43.7998v-360.4c-0.0595703 -24.21 -19.6904 -43.7998 -43.9004 -43.7998h-360.199c-24.2002 0 -43.8408 19.5898 -43.9004 43.7998v360.4c0.0595703 24.21 19.7002 43.7998 43.9004 43.7998h360.199zM154.2 156.81\nl-0.00976562 70.9307c-0.0107422 18.8193 -11.9307 47.2793 -47.3701 47.2793h-47.3799v-165.46h46.3994c36.75 -0.0595703 48.3604 28.4404 48.3604 47.25zM254.88 245.47l0.00976562 29.5205h-63.1895c-11.1504 -0.280273 -19.9805 -9.54004 -19.71 -20.6904v-125.109\nc0.279297 -11.1602 9.55957 -19.9805 20.7197 -19.6904h62.1797v29.5703h-53.29v38.4102h32.5703v29.5693h-32.5703v38.4199h53.2803zM358.52 130.18l38.4609 144.801h-32.5801l-29.5703 -113.721l-29.71 113.721h-32.5703l38.5303 -144.801\nc10.5898 -24.6299 34.2402 -30.75 47.4395 0z\" />\n    <glyph glyph-name=\"fantasy-flight-games\" unicode=\"&#xf6dc;\" horiz-adv-x=\"512\" \nd=\"M256 415.14l223.14 -223.14l-223.14 -223.14l-223.14 223.14zM88.3398 192.17c11.3447 -11.2461 29.7705 -29.4893 41.1299 -40.7197c20.1602 19.8799 40.46 39.8994 61.8506 60.9902c12.0596 -12.5801 24.5195 -25.5703 36.54 -38.1104\nc12.0293 11.6895 23.7393 23.0596 35.6895 34.6602c-6.99023 7.4502 -32.1494 32.8301 -35.0898 35.7793c-1.91016 1.9209 -2.29004 3.2207 -0.120117 5.35059c15.5801 15.2295 39.21 17.79 56.9805 5.09961c7.98926 -5.70996 14.2998 -11.6396 48.5098 -43.9502\nc10.8203 11.1504 22.2295 22.8506 33.5 34.6904c0.490234 0.520508 0.0996094 2.63965 -0.580078 3.37988c-0.0898438 0.100586 -37.5195 40.6006 -62.1504 59c-33.5801 25.0801 -78.3193 23.0605 -119.77 -18.6895c-84.5703 -85.1807 -94.5303 -95.4805 -96.4902 -97.4805z\nM323.16 90.5703c18.8203 18.79 80.3301 80.6396 100.5 101.5c-13.7305 13.4492 -27.1797 26.6299 -40.8604 40.0293c-20.0098 -19.7393 -40.2402 -39.6895 -61.25 -60.4199c-12.3301 12.8301 -24.8799 25.8799 -37.25 38.75\nc-1.25977 -0.689453 -1.64941 -0.80957 -1.91016 -1.06934c-10.7295 -10.7705 -21.4199 -21.5801 -32.21 -32.29c-2.22949 -2.20996 -0.519531 -3.35059 0.800781 -4.69043c10.5791 -10.7402 21.1797 -21.4502 31.7695 -32.1797\nc3.5498 -3.60059 3.54004 -3.85059 -0.139648 -7.24023c-16.8008 -15.4697 -40.8408 -16.54 -59.3203 -1.7998c-7.62012 6.08008 -11.6602 10.1797 -44.6797 42.0898c-11.5801 -11.8896 -23.3203 -23.9404 -35.3701 -36.3096\nc33.5498 -34.7607 50.8496 -53.3408 72.9297 -66.8408c28.9004 -17.6699 71.5 -14.96 106.99 20.4707zM256 448l256 -256l-256 -256l-256 256zM16 192l240 -240l240 240l-240 240z\" />\n    <glyph glyph-name=\"penny-arcade\" unicode=\"&#xf704;\" horiz-adv-x=\"640\" \nd=\"M421.91 283.73c7.33984 -16.2705 2.29004 -5.07031 24.6299 -54.6807l-39.7305 -10.6094c13.7002 59.2295 10.6104 45.8398 15.1006 65.29zM215.82 232.62c32.5 8.99023 41.9492 -37.6396 -0.350586 -47.4297c-14.2002 -3.77051 -6.64941 -1.75 -34.8193 -9.34082\nl-4.45996 46.1904c28.3193 7.5498 19.4395 5.17969 39.6299 10.5801zM541.98 258.81c75.7998 -37.9092 98 -76.3193 97.9893 -104.47c2.10059 -78.8496 -183.3 -130.33 -399.89 -84.8301c0.540039 -13 -8.00977 -24.6494 -20.5801 -28.0195\nc-125.54 -33.54 -117.35 -31.75 -122.53 -31.7598c-14.3701 -0.0107422 -26.4102 10.8896 -27.7998 25.1992l-4.2998 44.4805c-0.0683594 0.724609 -0.125 1.90332 -0.125 2.63184c0 10.5811 8.01758 22.2461 17.8945 26.0381l-1.73926 17.8799\nc-50.2305 28.2598 -80.9004 61.8701 -80.9004 95.3701c0 72.9199 144.26 113.4 309.41 98.3701c2.68945 7.54395 11.1514 15.3438 18.8896 17.4102c96.8701 25.9092 65.3203 17.4795 135.59 36.2295c13.1602 3.50977 26.9307 -2.95996 32.6201 -15.3301zM255.14 149.7\nc17.5 4.0498 40.2363 19.1562 50.75 33.7197c21.6006 32.5898 14.1104 105.561 -42.5498 104.43c-16.04 -0.229492 -8.07031 0.890625 -186.22 -46.6494l4.34961 -44.5l20.1201 5.38965l11.1104 -114.64l-20.0205 -5.35059l4.30078 -44.5195l115.31 30.7803\nl-4.50977 44.5098l-20.5303 -5.50977l-2.45996 23.5498l48.4404 12.9102zM454.32 133.08l108.55 28.96l-4.2998 44.4795l-20.79 -5.55957l-66.6699 145.47c-70.5801 -18.8301 -42.2305 -11.25 -135.591 -36.2393l4.2002 -44.4805l17.1504 4.55957l-33.0801 -126.47\nl-20.9902 -5.58984l4.45996 -44.4297l112.851 30.0693l-4.05078 39.54l-19.1992 -5.12012l4.09961 17.54l57.7598 15.4209l6.61035 -14.6807l-14.9004 -3.97949z\" />\n    <glyph glyph-name=\"wizards-of-the-coast\" unicode=\"&#xf730;\" horiz-adv-x=\"640\" \nd=\"M219.19 102.31c7.44922 5.80078 16.2598 0.680664 21.7295 -7.0791c7.08984 -10.1201 6.24023 -18.1602 -0.259766 -23.04c-7.62012 -6.24023 -17.0898 0.129883 -21.7305 6.5498c-10.8096 15.1299 -1.63965 22.1895 0.260742 23.5693zM555.94 26.3701\nc1.30957 4.4502 3.92969 10.21 3.93945 20.1699c0 34.04 -41.6299 64.4102 -100.03 68.0801c-53.1592 3.39941 -120.46 -15.4502 -184.35 -73.8506l-0.790039 0.260742c1.58008 10.4697 -0.780273 16.2295 -3.40039 21.21l0.260742 1.56934\nc64.4199 51.3203 134.069 66.5107 188.8 60.4902c61.0098 -6.54004 104.479 -39.54 101.34 -78.0303c-0.790039 -9.68945 -2.88965 -15.71 -4.97949 -19.8994c-1.34082 -1.66992 -1.13086 -1.7002 -0.790039 0zM392.28 207.58\nc-0.530273 7.07031 3.13965 11.7803 6.7998 15.46c3.66992 3.91992 14.9297 10.4697 14.9297 10.4697s-1.2998 -26.4502 -2.08984 -29.8496c-1.04004 -3.92969 -4.96973 -6.81055 -10.4697 -6.5498c-4.98047 0.259766 -8.37988 3.39941 -9.16992 10.4697zM342.26 358.68\nc147.17 0 275.48 -86.6797 291.21 -196.939c0 0 -3.66992 -1.31055 -9.68945 -4.4502c0 -0.259766 1.0498 -10.7402 0.259766 -16.5c-0.259766 -1.83008 -1.0498 -1.0498 -1.0498 0c-0.270508 5.24023 -1.57031 11.5303 -2.36035 14.9297\nc-4.70996 -2.60938 -10.21 -6.54004 -15.9697 -11.7793c0 0 4.70996 -10.21 4.70996 -25.9209c0 -21.21 -8.37988 -32.9893 -16.5 -37.9697l-0.259766 0.520508c9.16992 9.16992 12.5693 21.4795 12.5693 31.9492c0 13.8701 -6.80957 33.25 -14.3994 41.3701\nc0 0 4.4502 -8.12012 6.80957 -17.8096c0 0 -21.21 -21.4697 -26.9697 -62.3203c0 0 -3.66992 9.16992 -10.7402 16.2402c0 0 12.0498 -15.4502 12.0498 -38.2305c0 -19.3799 -12.8398 -37.4395 -27.5 -48.1797c-0.989258 0 -0.790039 -0.169922 -0.790039 0.790039\nc15.71 12.8301 22.2607 28.0205 22.2607 46.3506c0 38.2295 -49.2305 80.3896 -130.15 80.3896c-96.1104 0 -181.74 -58.1299 -236.99 -128.05l-1.0498 0.259766c-40.3203 120.979 -135.64 185.66 -196.13 202.16c-2.09961 0.519531 -1.83984 0.790039 -0.790039 1.30957\nc12.3096 14.4004 136.96 151.88 341.47 151.88zM243.02 69.0596c16.8408 14.5908 4.99023 30.7705 4.71094 31.1602c-4.08008 5.99023 -16.3105 16.8506 -31.1602 5.5c-10.9502 -8.37988 -11.6406 -22.8896 -4.19043 -32.4697\nc6.44043 -8.26953 19.5801 -13.1797 30.6396 -4.19043zM245.11 205.49l1.83008 -8.11035l-3.6709 4.4502l-14.1396 -26.71l24.6201 -28.7998l12.5703 6.01953l-11.7803 70.96zM263.7 87.9102c3.41016 2.35938 7.33984 4.97949 9.67969 6.57031l-0.259766 0.259766\nc-1.56055 -0.780273 -3.11035 -1.0498 -12.5703 15.9697v0.259766c6.87012 5.16016 8.45996 4.89062 11.5205 5.5l0.259766 0.260742c-1.31055 3.66992 -1.31055 3.66992 -1.83008 5.5h-0.259766c-3.95996 -3.31055 -1.4707 -1.58008 -11.5205 -7.86035h-0.259766\nc-1.83008 3.13965 -4.19043 7.33008 -5.75977 9.68945v1.31055c4.4502 3.91992 10.2197 6.7998 12.3096 7.58984c2.87988 1.0498 4.19043 0.520508 5.24023 0.259766l0.259766 0.520508c-1.30957 1.83008 -2.08984 2.87988 -3.39941 4.70996l-0.520508 0.259766\nc-9.9502 -5.5 -17.54 -9.9502 -25.3994 -15.71l0.259766 -0.519531c1.30957 0.259766 3.13965 -0.260742 4.4502 -2.62012c15.04 -25.0801 19.5898 -27.5908 17.54 -31.6904zM318.96 120.38v0.25c-1.99023 0 -2.34961 -1.37012 -14.6602 30.6396v0.260742\nc4.95996 1.85938 8.78027 4.37988 12.3105 2.62012l0.259766 0.519531l-3.13965 4.98047l-0.520508 0.259766c-2.22949 -0.929688 -20.4697 -8.00977 -27.7598 -12.5703l-0.259766 -0.519531l1.0498 -5.76074h0.519531c1.0498 3.68066 9.7998 7.33008 9.9502 7.33008\nl0.259766 -0.259766c12.9404 -29.7598 13.0703 -29.8799 11.7803 -32.4697l0.259766 -0.259766c3.93066 2.09961 6.81055 3.40918 9.9502 4.97949zM363.73 136.88c-0.780273 0.520508 -2.09082 1.31055 -2.63086 3.92969c-1.56934 6.02051 -4.70996 20.1709 -6.2793 26.4502\nc-0.530273 1.57031 -0.530273 3.14062 0.519531 4.4502l-0.259766 0.259766c-3.41016 -0.529297 -6.29004 -1.30957 -10.7402 -2.35938v-0.260742c1.57031 -0.529297 2.10059 -2.09961 2.62012 -3.92969l2.62012 -9.42969l-0.259766 -0.259766\nc-3.40039 -1.05078 -8.90039 -2.62012 -12.8301 -3.93066h-0.259766c-0.780273 2.10059 -1.83008 5.75977 -3.14062 9.69043l0.259766 4.70996l-0.259766 0.259766c-4.71973 -1.30957 -7.59961 -2.34961 -10.7402 -3.40039v-0.519531\nc1.05078 0 2.10059 -1.30957 2.62012 -3.13965c1.0498 -3.40039 8.12012 -24.0908 9.16992 -27.2305c0.790039 -2.09961 0.790039 -3.66992 -0.259766 -4.97949l0.259766 -0.260742c3.14062 1.31055 6.54004 2.87988 10.21 3.93066v0.519531\nc-1.0498 0.259766 -2.08984 0.780273 -2.87988 3.13965c-1.0498 3.93066 -3.39941 11.2607 -4.18945 13.8809l0.259766 0.259766c3.92969 1.30957 9.42969 3.13965 12.8301 3.92969l0.259766 -0.259766c0.530273 -2.09961 2.62012 -10.2197 3.66992 -13.6201\nl-0.519531 -4.4502l0.259766 -0.259766c4.4502 1.57031 5.5 1.83008 9.69043 2.87988zM395.94 143.69c0.529297 1.8291 1.0498 3.65918 1.5791 6.04004h-0.259766c-2.0293 -4.06055 -15.0898 -5.09082 -16.2402 -4.71094l-0.259766 0.260742\nc-0.519531 3.13965 -1.83008 10.4795 -2.08984 12.5693l0.259766 0.260742c8.06055 0.899414 5.40039 1.0293 10.21 0h0.260742c0 3.40918 0.259766 3.66992 0.259766 5.23926h-0.259766c-5.98047 -2.2998 -1.2207 -0.679688 -10.7402 -2.35938l-0.259766 0.259766\nc-0.520508 3.40039 -1.31055 8.37988 -1.57031 9.9502l0.259766 0.259766c12.9004 2.41016 15.1006 0.349609 16.2402 -0.790039l0.259766 0.259766c-0.780273 2.36035 -1.0498 3.14062 -1.57031 5.5l-0.259766 0.260742\nc-4.71973 -0.260742 -15.71 -1.05078 -24.8799 -2.62012l-0.790039 -0.520508c1.83008 -0.790039 2.36035 -1.83984 2.62012 -3.66992c1.58008 -7.59961 3.41016 -18.3301 4.98047 -26.1895l-0.790039 -4.19043l0.259766 -0.259766\nc8.37988 1.83008 17.8096 3.66992 22.5195 4.18945zM406.68 188.2c3.14062 1.56934 7.33008 5.5 7.33008 5.50977c1.95996 -4.58008 0.970703 -2.70996 4.19043 -7.86035c10.1494 -0.459961 8.60938 0.0205078 20.4297 -1.0498l0.790039 4.70996\ns-4.18945 0 -5.75977 1.83008c-1.0498 1.31055 -1.31055 3.14062 -1.57031 5.5c0 2.36035 0.270508 16.5 0.790039 20.6904c0.259766 4.18945 2.08984 20.4199 2.08984 23.04c0.260742 2.62012 1.0498 8.91016 0.260742 12.0498\nc-4.82031 19.2803 -24.4307 17.8096 -50.0205 16.2402l-5.24023 -16.2402l2.62012 -2.87988c16.5498 16.5498 37.6201 4.56934 29.5898 -5.75977c-5.18945 -6.9209 -19.7393 -8.90039 -28.54 -17.0205c-6.47949 -6.49023 -12.2393 -20.9004 -5.5 -31.6904\nc6.12988 -11.0391 17.29 -9.96973 17.54 -9.94922c2.87988 0 6.55078 0.519531 11 2.87988zM443.86 166.99c0 1.83984 0.269531 4.18945 0.269531 5.25l-0.259766 0.519531c-14.3604 8.98047 -26.8604 0.919922 -28.7998 -9.9502\nc-2.83984 -16.0898 15.3594 -25.46 25.6602 -18.5898l0.519531 0.520508c0 0.259766 1.30957 4.4502 1.83008 6.2793l-0.259766 0.260742c-6.39062 -9.58008 -23.3203 -6.87012 -20.6904 10.21c1.91016 12.6602 15.3799 16.0801 21.7305 5.5zM449.63 254.72\nc0 0 4.96973 -0.790039 4.99023 -3.66016c0 -2.08984 -4.98047 -55.25 -4.98047 -55.25c-0.109375 -1.48926 -0.339844 -6.80957 -7.58984 -6.80957l-0.790039 -4.70996c18.3906 -2.83008 19.3701 -3.04004 36.9199 -7.33008l0.520508 4.70996\nc-13.0498 3.91992 -9.74023 7.37012 -4.4502 46.0898c1.09961 0.870117 8.62012 7.14062 20.6904 0.790039l11.2598 11.2598s-9.69043 8.90039 -14.9307 7.33008c-5.23926 -1.30957 -15.4492 -10.7393 -15.4492 -10.7393l1.56934 17.54\nc-8.10938 4.0498 -27.0693 7.3291 -27.7598 7.3291v-6.5498zM460.62 140.28c9.42969 -2.35059 16.2402 2.62012 18.8496 11.5195c2.08984 7.60059 -1.56934 16.7598 -10.7393 19.3799c-6.54004 2.10059 -15.7109 -0.779297 -18.8506 -10.21\nc-3.39941 -9.68945 2.62012 -18.5996 10.7402 -20.6895zM502.78 130.59c-0.780273 1.31055 -1.04004 2.10059 -0.799805 3.91016c1.22949 27.0098 1.5293 24.6602 1.0498 25.1396c-2.08984 0.790039 -5.5 2.09082 -7.58984 2.87988l-0.520508 -0.259766v-2.08984\nc-3.92969 -6.01953 -10.4795 -15.4502 -13.8799 -20.1602l-2.62012 -1.83008v-0.259766c2.08984 -0.259766 4.70996 -1.30957 6.02051 -1.57031v0.260742l0.790039 3.39941c0.789062 1.0498 2.35938 3.66992 3.66992 5.5c0.40918 0 2.25 -0.549805 7.06934 -2.35938\nc0.330078 -0.320312 0.330078 0.649414 -0.259766 -7.59082l-1.57031 -1.8291v-0.260742c1.57031 -0.519531 6.28027 -2.35938 8.64062 -2.87988zM498.07 220.41c-13.2207 -21.1504 -9.39062 -51.6006 9.66992 -52.9004c5.75977 -0.259766 9.42969 3.93066 9.68945 3.66992\nl-2.08984 -6.80957c8.91016 -4.21973 11.4404 -5.29004 17.8105 -8.63965l1.83008 4.44922c-6.14062 3.51074 -1.29004 11.25 24.6191 84.3203c-6.13965 6.45996 -10.2998 10.0596 -22.5195 20.4297l-1.83008 -3.66992c1.62988 -1.35938 6.79004 -5.00977 4.4502 -11.2598\nl-7.58984 -26.1904c-3.28027 12.79 -22.79 14.8701 -34.04 -3.39941zM527.4 141.07l2.35938 3.39941v0.520508c-3.41016 6.83008 -11.9395 7.41992 -14.6602 2.35938c-1.83984 -3.40918 0.260742 -7.06934 1.83008 -9.68945\nc1.57031 -2.87988 3.14062 -6.29004 2.08984 -8.37988c-2.31934 -4.62988 -8.94922 -0.680664 -8.37988 4.97949l-0.790039 -0.259766c-2.09961 -4.7998 -1.83008 -4.00977 -1.83008 -4.70996c3.05078 -6.09961 12.8105 -7.12988 15.4502 -0.790039\nc1.57031 3.15039 0.520508 6.80957 -1.0498 9.42969c-1.83008 3.40039 -4.18945 6.29004 -2.87988 8.37988c1.51953 2.65039 7.86035 0.470703 7.86035 -5.23926zM548.61 127.71l1.30957 3.91016l-0.259766 0.259766c-2.36035 2.08984 -8.64062 6.54004 -12.3105 8.90039\nh-0.259766l-3.13965 -3.40039v-0.259766c4.7998 -0.320312 3.37988 0.149414 6.01953 -1.83008v-0.259766c-2.62012 -4.9707 -6.0293 -11.2607 -9.16992 -17.0205l-2.08984 -1.30957l-0.259766 -0.259766l5.75977 -4.4502l0.259766 0.259766\nc-0.259766 0.530273 -0.519531 1.57031 0.790039 3.92969c2.87988 5.77051 6.28027 12.0508 8.64062 16.2402h0.259766c3.54004 -2.57031 2.49023 -1.43945 4.4502 -4.70996zM575.84 171.97l7.85059 10.46s-9.4209 18.8604 -23.04 16.5\nc-20.8408 -4.0293 -3.15039 -34.21 -2.09082 -38.2295c4.33008 -15.1299 -16.3193 -12.5605 -13.3496 5.24023l-2.87988 2.08984l-4.98047 -14.4004s11.7803 -11.2598 20.1602 -10.4697c8.12012 0.790039 13.8799 6.29004 13.8799 16.5\nc0 8.37988 -7.85938 22.7803 -7.85938 27.7598c0 6.86035 12.2695 4.75977 11.5195 -4.97949c-0.259766 -2.61035 -1.2998 -5.23047 -2.08984 -7.59082zM611.46 182.18c0.780273 -2.35938 1.57031 -1.83008 0.790039 0.270508\nc-32.4697 98.9795 -132.76 138.78 -199.8 139.83c-50.54 0.779297 -89.5605 -11.79 -131.98 -35.8799l20.6904 61.0098l-33.7803 -65.7305l-8.89941 20.9502c3.13965 1.04004 6.2793 2.08984 6.2793 2.08984l-2.62012 8.64062s-3.13965 -0.780273 -7.33008 -2.09082\nl-12.0498 28.2803l13.6201 -61.0098c-5.12012 2.55957 -19.0996 6.83008 -6.5498 19.3799l-2.62012 11c-6.97949 -2.21973 -13.2295 -3.62012 -32.21 -9.68945l-23.0801 11.5l59.1797 -42.6807l-4.70996 -2.08984l-17.2793 13.8799\nc2.23926 -5.13965 3.2998 -12.1699 4.70996 -19.6396l-28.54 -13.0898l-30.1104 36.1396l-17.2803 -9.16992l13.6201 -42.4199l-11.2598 -4.98047l94.2695 29.3301l-3.66992 -10.4697l-0.519531 3.13965l-13.0898 -3.39941l4.97949 -24.6201l-4.4502 -12.3105\nl-25.6592 30.6406l-39.8008 -10.21l18.8506 -58.9199c-60.1299 62.3994 -67.7002 66.3994 -61.7998 75.6797c2.09961 2.87988 7.85938 7.07031 7.85938 7.07031l-4.18945 7.06934c-26.7803 -18.3496 -27.8398 -19.1494 -58.4004 -42.6797l4.98047 -6.01953\ns8.12012 5.75977 13.6201 5.5c7.81934 -0.350586 1.76953 2.93945 113.659 -98.7305l11.7803 8.37988l-27.7598 93.4805l35.8799 -42.1602l-4.70996 -13.8799l41.9004 88.5098c34.6699 -80.5098 29.1494 -66.9502 32.9893 -78.8203l-33.5195 67.2998l-2.36035 -4.44922\nc1.2998 -1.30078 -0.919922 3.05957 22.7803 -59.4404c3.22949 -8.88965 -1.10059 -9.88965 -5.5 -12.8301l2.36035 -4.70996c15.3594 6.79004 22.9395 9.54004 39.0195 14.4004l-1.0498 4.97949c-8.89062 -1.33008 -10.1006 0.169922 -12.0498 4.4502\nc-1.05078 2.09961 -14.1504 40.0703 -20.4307 58.6602l-10.21 4.97949l-2.35938 8.12012l61.54 -36.6602l-13.0908 -43.21c12.1904 3.26074 27.0303 6.74023 49.4902 9.9502l-0.259766 26.71l-4.98047 -1.0498c-0.669922 -13.7998 -6.0293 -22.0801 -19.6396 -22.7803\nl22.2598 80.3906c-27.6201 -0.450195 -59.2695 -7.19043 -66.7695 -8.90039l3.92969 -16.5l-25.1396 19.6396l91.3896 20.6904l-85.6299 -9.16992c38.4902 22.5195 79.3398 39.0195 132.76 37.9697c131.46 -2.08984 180.95 -99.2402 191.95 -129.62zM203.48 295.57\nl2.35938 -8.64062c7.82031 2.61035 10.8604 2.36035 11.2598 2.36035l-9.42969 7.58984c-2.36035 -0.790039 -4.18945 -1.30957 -4.18945 -1.30957zM347.24 257.07l-11.5303 -37.71l-21.7295 17.0195c6.7998 25.5 31.6895 21.29 33.2598 20.6904zM318.43 380.93\nc224.94 0 321.83 -143.76 321.57 -227.55c0 -11 -0.269531 -17.5498 -0.790039 -19.6396c-0.259766 -2.10059 -1.0498 -0.790039 -1.0498 0.519531v9.9502c0 106.58 -121.51 223.37 -301.67 223.37c-61.2705 0 -103.69 -12.0498 -110.24 -13.8799l-1.57031 0.259766\nc-6.80957 7.58984 -12.8301 9.69043 -21.21 11.7803v0.790039c8.91016 2.34961 56.5605 14.3994 114.96 14.3994zM529.49 211.25c-8.61035 -34.4502 -13.6504 -35.3496 -18.3301 -35.3604c-7.33008 0 -6.81055 9.43066 -6.02051 14.9307\nc0.879883 9.72949 7.40039 34.6494 17.0205 33.5195c7.33008 -0.780273 8.63965 -7.33008 7.33008 -13.0898zM467.96 168.3c3.40039 -0.780273 7.84961 -4.4502 5.23047 -14.3896c-2.88086 -11.2598 -8.11035 -11.79 -11.7803 -10.7402\nc-5.5 1.31055 -7.85059 7.84961 -6.02051 14.6602c3.14062 11.2598 9.9502 11.2598 12.5703 10.4697zM491 147.35v0.270508c1.0498 1.83008 5.5 8.63965 6.5498 9.9502c-0.269531 -3.66992 -0.790039 -10.2207 -0.790039 -12.0508\nc-2.62012 0.780273 -3.92969 1.31055 -5.75977 1.83008z\" />\n    <glyph glyph-name=\"think-peaks\" unicode=\"&#xf731;\" horiz-adv-x=\"576\" \nd=\"M465.4 38.5996l-206.2 353.801l-204.2 -352.101l-32 0.299805l236.2 407.4l206.2 -353.9l55.0996 95l32 -0.299805zM110.1 82.7002l149.601 257.899l235.8 -404.6l-32.5 0.0996094l-203.4 349.101l-117.399 -202.5h-32.1006z\" />\n    <glyph glyph-name=\"reacteurope\" unicode=\"&#xf75d;\" horiz-adv-x=\"576\" \nd=\"M250.6 236.26l2 6.7998l-5.69922 4.30078l7.19922 0.0996094l2.30078 6.7998l2.2998 -6.7998l7.09961 -0.0996094l-5.7002 -4.30078l2.10059 -6.7998l-5.7998 4.10059zM314.3 236.26l1.90039 6.7998l-5.7002 4.30078l7.2002 0.0996094l2.2998 6.7998l2.2998 -6.7998\nl7.2002 -0.0996094l-5.7002 -4.30078l2.10059 -6.7998l-5.80078 4.10059zM223 185.76c4.90039 0 3.7998 -3.89941 3.7998 -13.7598c0 -10.2998 -6.7002 -14.0996 -16.7998 -14.0996h-0.200195c-10.0996 0 -16.7998 3.69922 -16.7998 14.0996v40.0596\nc0 9.90039 6.7002 14.1006 16.7998 14.1006h0.200195c10.0996 0 16.7998 -4.2002 16.7998 -14.1006c0 -8.39941 0.900391 -12.1992 -3.7998 -12.2998h-3.40039c-4.5 0 -3.7998 3.2998 -3.7998 10.5c0 4.7002 -2.2998 6.10059 -5.7998 6.10059\ns-5.7998 -1.40039 -5.7998 -6.10059v-36.5996c0 -4.7002 2.2998 -6.10059 5.7998 -6.10059s5.7998 1.40039 5.7998 6.10059c0 8.09961 -1 12.0996 3.7998 12.0996h3.40039zM142.3 168.36c2.5 0 3.7998 -1.30078 3.7998 -3.80078v-2.09961\nc0 -2.5 -1.2998 -3.7998 -3.7998 -3.7998h-21.8994c-2.5 0 -3.80078 1.2998 -3.80078 3.7998v59.0996c0 2.5 1.30078 3.90039 3.7002 3.80078h21.7002c2.5 0 3.7998 -1.30078 3.7998 -3.80078v-2.09961c0 -2.5 -1.2998 -3.7998 -3.7998 -3.7998h-14.4004v-18.2998h11.4004\nc2.5 0 3.7998 -1.30078 3.7998 -3.80078v-2.09961c0 -2.5 -1.2998 -3.7998 -3.7998 -3.7998h-11.4004v-19.2998h14.7002zM100.3 186.86l8.10059 -23.9004c0.799805 -2.59961 -0.400391 -4.40039 -3.2002 -4.40039h-3.2998\nc-0.0820312 -0.00585938 -0.21582 -0.0107422 -0.297852 -0.0107422c-1.81543 0 -3.6084 1.43848 -4.00293 3.21094l-7.39941 23.5h-5.60059v-22.8994c0 -2.5 -1.2998 -3.80078 -3.7998 -3.80078h-3.39941c-2.5 0 -3.80078 1.30078 -3.80078 3.80078v59.0996\nc0 2.5 1.30078 3.7998 3.80078 3.7998h13.3994c10.1006 0 16.7998 -4 16.7998 -14.0996v-11.9004c0 -6.39941 -2.69922 -10.3994 -7.2998 -12.3994zM96.5 200.86v8.69922c0 4.80078 -2.5 6.10059 -6.09961 6.10059h-5.80078v-20.9004h5.80078\nc3.59961 0 6.09961 1.2998 6.09961 6.10059zM176 222l11.2002 -59.2002c0.5 -2.7002 -0.799805 -4.09961 -3.40039 -4.09961h-3.5c-0.100586 -0.00976562 -0.264648 -0.0185547 -0.366211 -0.0185547c-1.94531 0 -3.61816 1.57617 -3.7334 3.51855l-1.7998 11.2998h-12.2002\nl-1.7998 -11.2998c-0.116211 -1.94238 -1.78809 -3.51855 -3.7334 -3.51855c-0.101562 0 -0.265625 0.00878906 -0.367188 0.0185547h-3c-2.5 0 -3.89941 1.39941 -3.39941 4.09961l11 59.2002c0.135742 1.88477 1.78027 3.41504 3.66992 3.41504\nc0.0908203 0 0.239258 -0.00683594 0.330078 -0.0146484h6.89941c0.110352 0.0117188 0.290039 0.0205078 0.401367 0.0205078c1.89844 0 3.60059 -1.53223 3.79883 -3.4209zM163.7 182.7h9.39941l-4.69922 29.7002zM253 162.5c0 -2.45996 -1.2998 -3.83984 -3.7998 -3.7998\nh-3.40039c-2.5 0 -3.7998 1.2998 -3.7998 3.7998v53.2002h-7.2998c-2.5 0 -3.7998 1.2998 -3.7998 3.7998v2.09961c0 2.5 1.2998 3.80078 3.7998 3.80078h25.7998c2.5 0 3.7998 -1.30078 3.7998 -3.80078v-2.09961c0 -2.5 -1.2998 -3.7998 -3.7998 -3.7998h-7.5v-53.2002z\nM501 163.3c0.0449219 0.00390625 0.119141 -0.0322266 0.164062 -0.0322266c1.01562 0 1.84082 -0.824219 1.84082 -1.83984c0 -0.0351562 -0.00292969 -0.0927734 -0.00488281 -0.12793v-0.799805c0.00195312 -0.0273438 0.00292969 -0.0722656 0.00292969 -0.100586\nc0 -0.999023 -0.810547 -1.80957 -1.81055 -1.80957c-0.0527344 0 -0.139648 0.00488281 -0.192383 0.00976562h-22.5c-0.0527344 -0.00488281 -0.139648 -0.00976562 -0.192383 -0.00976562c-1 0 -1.81055 0.810547 -1.81055 1.80957\nc0 0.0283203 0.000976562 0.0732422 0.00292969 0.100586v63c-0.00878906 0.0625 -0.0166016 0.166016 -0.0166016 0.229492c0 0.893555 0.725586 1.62012 1.62012 1.62012c0.111328 0 0.289062 -0.0224609 0.396484 -0.0498047h22.2002\nc0.0644531 0.00878906 0.169922 0.015625 0.235352 0.015625c0.977539 0 1.77051 -0.792969 1.77051 -1.76953c0 -0.0400391 -0.00292969 -0.105469 -0.00585938 -0.145508v-0.800781c0.00195312 -0.03125 0.00292969 -0.0820312 0.00292969 -0.113281\nc0 -1.04297 -0.84668 -1.88965 -1.88965 -1.88965c-0.03125 0 -0.0820312 0.000976562 -0.113281 0.00292969h-19.1006v-25.7998h16.1006c0.03125 0.00195312 0.0820312 0.00390625 0.113281 0.00390625c1.04297 0 1.88965 -0.84668 1.88965 -1.89062\nc0 -0.03125 -0.000976562 -0.0820312 -0.00292969 -0.113281v-0.799805c0.00195312 -0.03125 0.00292969 -0.0820312 0.00292969 -0.113281c0 -1.04297 -0.84668 -1.88965 -1.88965 -1.88965c-0.03125 0 -0.0820312 0.000976562 -0.113281 0.00292969h-16.1006v-26.7002\nh19.4004zM407.9 226.2c10.0996 0 15.2998 -4.74023 15.2998 -14.1006v-40.0996c0 -9.2998 -5.2002 -14.0996 -15.2998 -14.0996h-0.800781c-10.0996 0 -15.2998 4.7998 -15.2998 14.0996v40.0996c0 9.40039 5.2002 14.1006 15.2998 14.1006h0.800781zM418.1 173.8v36.6006\nc0 7.89941 -3 11.0996 -10.5 11.0996s-10.5 -3.2002 -10.5 -11.0996v-36.6006c0 -8 3 -11.0996 10.5 -11.0996s10.4004 3.09961 10.5 11.0996zM371.6 188.3l10.6006 -27.2998c0.5 -1.2998 -0.100586 -2.2998 -1.5 -2.2998h-1.5\nc-0.0351562 -0.00195312 -0.0927734 -0.00390625 -0.128906 -0.00390625c-0.886719 0 -1.85938 0.673828 -2.1709 1.50391l-10.4004 27.2002h-11.5996v-26.9004c0.00390625 -0.0458984 0.0078125 -0.12207 0.0078125 -0.167969\nc0 -0.960938 -0.779297 -1.74023 -1.74023 -1.74023c-0.0458984 0 -0.12207 0.00390625 -0.167969 0.0078125h-1.2002c-0.0527344 -0.00488281 -0.139648 -0.00976562 -0.192383 -0.00976562c-0.999023 0 -1.81055 0.810547 -1.81055 1.80957\nc0 0.0283203 0.00195312 0.0732422 0.00292969 0.100586v63c-0.000976562 0.0273438 -0.00292969 0.0722656 -0.00292969 0.100586c0 0.999023 0.811523 1.80957 1.81055 1.80957c0.0527344 0 0.139648 -0.00488281 0.192383 -0.00976562h13.7002\nc10.0996 0 15.2998 -4.7002 15.2998 -14.1006v-9.7002c0 -7.19922 -3.09961 -11.6992 -9.2002 -13.2998zM365.2 192.2c7.5 0 10.5 3.16016 10.5 11v6.39941c0 8 -3 11.1006 -10.5 11.1006h-10.2002v-28.5h10.2002zM451.1 225.3c10.1006 0 15.3008 -4.7002 15.3008 -14.0996\nv-10.5c0 -9.2998 -5.2002 -14.1006 -15.3008 -14.1006h-10.5996v-26.0996c0.00488281 -0.0458984 0.0078125 -0.12207 0.0078125 -0.167969c0 -0.960938 -0.779297 -1.74023 -1.73926 -1.74023c-0.046875 0 -0.12207 0.00390625 -0.168945 0.0078125h-1.19922\nc-0.0537109 -0.00488281 -0.139648 -0.00976562 -0.193359 -0.00976562c-0.999023 0 -1.80957 0.810547 -1.80957 1.80957c0 0.0283203 0.000976562 0.0732422 0.00292969 0.100586v63c-0.00976562 0.0625 -0.0166016 0.166016 -0.0166016 0.229492\nc0 0.893555 0.725586 1.62012 1.62012 1.62012c0.111328 0 0.288086 -0.0224609 0.396484 -0.0498047h13.6992zM461.3 202.5v7.09961c0 7.90039 -3 11.1006 -10.5 11h-10.2002v-29.1992h10.2002c7.5 0 10.5 3.19922 10.5 11.0996zM259.5 140l7.09961 -0.0996094\nl-5.69922 -4.30078l2.09961 -6.7998l-5.7998 4.10059l-5.7998 -4.10059l2.09961 6.7998l-5.7002 4.30078l7.10059 0.0996094l2.2998 6.7998zM487.1 276.1c122.301 -46.0996 118.401 -132.54 -33.8984 -176.34c13.3994 -49.7002 18.0996 -101.899 0.0996094 -133.8\nc-3.7998 -6.7002 -16.7998 -27.7002 -47.5996 -27.7002c-41.5 0 -110.2 41.6006 -182.101 142c-42.7998 3.5 -72.1992 10.1006 -84.5996 13c-20.5 -82.2998 -6.7998 -125.3 15.5 -137.899c1.2002 -0.700195 38.4004 -27.2002 120.9 52.7998\nc3.39941 -3.5 6.79883 -6.90039 10.1982 -10.2002c-63.0996 -61.2002 -110.199 -71 -138.199 -55.2002c-32.4004 18.2998 -42.8008 72 -22.3008 153.9c-18.8994 5 -121.6 33.2002 -122.1 92.7998c-0.400391 40.9004 49.7998 74.7002 120.3 95\nc-13.3994 49.5996 -18.2002 101.8 -0.0996094 133.8c3.7998 6.74023 16.7998 27.7402 47.5996 27.7402c41.6006 0 110.3 -41.6396 182.2 -142.14c23.6113 -1.88379 61.5127 -7.70801 84.5996 -13c20.5 82 6.90039 125.1 -15.5 137.8\nc-1.2998 0.700195 -38.3994 27.2002 -120.899 -52.7998c-3.40039 3.5 -6.80078 6.89941 -10.2002 10.1992c52.2998 50.9404 103.7 74.6006 138.2 55.2402c33.8994 -19.2002 41.8994 -75.8994 22.2998 -153.899c9.98535 -2.61523 25.9346 -7.67773 35.5996 -11.3008z\nM135.901 411.16c-23.1006 -40.7998 1 -121.562 1.19922 -122.961c22.9912 5.78516 60.8018 12.3262 84.4004 14.5996c12.7793 18.6787 35.4922 47.4404 50.7002 64.2002c3.39941 -3.33301 6.7998 -6.74609 10.2002 -10.2393\nc-12.5371 -13.7451 -31.4434 -37.2207 -42.2002 -52.3994c14.8213 1.11914 38.9141 2.02734 53.7783 2.02734c11.082 0 29.0566 -0.504883 40.1211 -1.12793c-64.5 86.6006 -126.5 126.2 -163.3 126.2c-23 0 -32 -15.2002 -34.8994 -20.2998zM440.701 -27.1406\nc3.2998 6 21.5 38.5996 -1.2002 123c-4.09961 -1.10059 -37.0996 -9.90039 -84.4004 -14.6006c-12.7578 -18.6943 -35.4717 -47.4551 -50.6992 -64.2002c-3.40039 3.2998 -6.80078 6.7002 -10.2002 10.2002c12.5371 13.7461 31.4424 37.2207 42.2002 52.4004\nc-14.7715 -1.14258 -38.7842 -2.06934 -53.5996 -2.06934c-11.1328 0 -29.1875 0.524414 -40.3008 1.16895c64.5996 -86.7998 126.6 -126.2 163.3 -126.2c23.1006 0 32 15.2002 34.9004 20.3008zM449.801 111.459c25.6006 7.2998 85.9004 27.4004 105.7 62.5\nc1.40039 2.5 33.5 50.5 -72.5996 90.4004c-9.36914 3.51562 -24.8252 8.44336 -34.5 11c-3.60059 -12.9004 -7.90039 -26.1006 -12.8008 -39.5c-3.15723 -0.430664 -7.14453 -2.93945 -8.89941 -5.60059l-0.100586 0.100586\nc-1.6416 1.55762 -4.68848 3.48438 -6.7998 4.2998c5.7002 15 10.6006 29.7998 14.6006 44.2002c-7.2002 1.69922 -31.8008 7.59961 -72.2002 11.6992c16.7002 -24.5 27.8994 -44.0996 34.2998 -55.5c-3.50781 -1.14648 -8.16699 -4.46094 -10.4004 -7.39941\nc-13.5996 16.3994 -11 19.8994 -42.5 64.5c-13.752 0.96582 -36.1016 1.75 -49.8877 1.75c-17.2871 0 -45.292 -1.23145 -62.5117 -2.75c-16.9004 -25 -28.2998 -45.2002 -34.7998 -56.9004c-3.49707 -1.49023 -8.06738 -5.25391 -10.2002 -8.39941\nc-0.914062 2.88965 -3.78125 6.47363 -6.40039 8c6.10059 11.3994 16.9004 31 32.7998 55.2998c-39.5996 -4.60059 -65 -11.2002 -72 -13c4.30078 -14.1006 9.40039 -28.6006 15.2002 -43.2998c-0.71582 -0.522461 -1.74609 -1.50781 -2.2998 -2.2002\nc-1.5 1.89941 -4 5.2998 -14.4004 5.2998c-4.69922 12.2998 -8.7998 24.5 -12.3994 36.4004c-138.8 -40.3604 -158.4 -121.36 1.5 -164c3.59961 12.8994 7.7998 26 12.7002 39.3994c0.269531 -0.0146484 0.708008 -0.0273438 0.978516 -0.0273438\nc1.68359 0 4.33594 0.460938 5.9209 1.02734c3 -1.2002 5.2002 -1 8.40039 -1c-5.5 -14.5996 -10.2002 -28.8994 -14.1006 -42.8994c19.7119 -4.56055 52.0576 -9.80176 72.2002 -11.7002c-16.2998 23.8994 -27.5 43.3994 -33.7998 54.5996\nc8.7002 0 10.7002 1.60059 12.5996 3.2002c0.794922 -0.480469 2.13965 -1.15234 3 -1.5c15.3008 -26.7002 28.9004 -46.5996 36.8008 -57.7998c13.751 -0.96582 36.1006 -1.75 49.8857 -1.75c17.2871 0 45.2939 1.23145 62.5137 2.75\nc16.5 24.2998 27.7002 44 33.9004 55.2002c7.2998 0 9.7998 3 10.8994 4.19922c1.5332 -1.11426 4.2207 -2.54785 6 -3.19922c-15 -28 -28.6992 -48.9004 -32.1992 -54.2002c20.1172 2.22656 52.373 8.05078 72 13c-4.10059 13.7998 -9 27.8994 -14.7002 42.2002\nc1.65723 0.743164 4.07617 2.35645 5.39941 3.59961l0.100586 0.0996094c2.07227 -3.14648 6.8125 -5.7002 10.5811 -5.7002c0.0322266 0 0.0859375 0 0.119141 0.000976562c4.69922 -12.3008 8.7998 -24.5 12.3994 -36.4004zM335.401 225.459\nc0.0556641 0.00585938 0.145508 0.0107422 0.201172 0.0107422c1.05566 0 1.95117 -0.856445 1.99805 -1.91113v-51.5c0 -9.5 -5 -14.0996 -15.0996 -14.0996h-0.400391c-10.0996 0 -15.0996 4.5 -15.0996 14.0996v51.5\nc-0.00195312 0.0283203 -0.00292969 0.0732422 -0.00292969 0.100586c0 0.999023 0.810547 1.81055 1.81055 1.81055c0.0527344 0 0.139648 -0.00488281 0.192383 -0.0107422h1.2002c0.0615234 0.00878906 0.162109 0.0146484 0.224609 0.0146484\nc0.933594 0 1.69043 -0.756836 1.69043 -1.68945c0 -0.0625 -0.00683594 -0.163086 -0.015625 -0.225586v-49.7998c0 -8 2.60059 -11.0996 10.1006 -11.0996s10.0996 3.2002 10.0996 11.0996v49.7998c-0.00390625 0.046875 -0.0078125 0.12207 -0.0078125 0.168945\nc0 0.959961 0.779297 1.73926 1.74023 1.73926c0.0458984 0 0.121094 -0.00292969 0.167969 -0.0078125h1.2002zM321.701 139.999l7.09961 -0.0996094l-5.7002 -4.30078l2.10059 -6.7998l-5.7998 4.10059l-5.80078 -4.10059l2.10059 6.7998l-5.7002 4.30078\nl7.09961 0.0996094l2.30078 6.7998zM290.601 132.599l7.10059 -0.0996094l-5.7002 -4.2998l2.09961 -6.7998l-5.7998 4.09961l-5.7998 -4.09961l2.09961 6.7998l-5.69922 4.2998l7.09961 0.0996094l2.2998 6.80078zM295.701 163.399\nc0.0507812 0.00488281 0.133789 -0.03125 0.185547 -0.03125c1.00977 0 1.83008 -0.819336 1.83008 -1.83008c0 -0.0664062 -0.00683594 -0.172852 -0.015625 -0.239258v-0.799805c0.00292969 -0.0400391 0.00585938 -0.105469 0.00585938 -0.145508\nc0 -0.977539 -0.792969 -1.77051 -1.77051 -1.77051c-0.0654297 0 -0.170898 0.00683594 -0.235352 0.015625h-22.5c-0.0537109 -0.00488281 -0.139648 -0.00976562 -0.193359 -0.00976562c-0.999023 0 -1.80957 0.810547 -1.80957 1.80957\nc0 0.0283203 0.000976562 0.0732422 0.00292969 0.100586v63c-0.00195312 0.0273438 -0.00292969 0.0722656 -0.00292969 0.100586c0 0.999023 0.810547 1.80957 1.80957 1.80957c0.0537109 0 0.139648 -0.00488281 0.193359 -0.00976562h22.2002\nc0.0644531 0.00878906 0.169922 0.015625 0.235352 0.015625c0.977539 0 1.77051 -0.792969 1.77051 -1.77051c0 -0.0400391 -0.00292969 -0.105469 -0.00585938 -0.145508v-0.799805c0.00195312 -0.03125 0.00292969 -0.0820312 0.00292969 -0.113281\nc0 -1.04395 -0.84668 -1.89062 -1.88965 -1.89062c-0.03125 0 -0.0820312 0.00195312 -0.113281 0.00390625h-19.1006v-25.7998h16.1006c0.03125 0.00195312 0.0820312 0.00292969 0.113281 0.00292969c1.04297 0 1.88965 -0.84668 1.88965 -1.88965\nc0 -0.03125 -0.000976562 -0.0820312 -0.00292969 -0.113281v-0.800781c0.00195312 -0.03125 0.00292969 -0.0820312 0.00292969 -0.113281c0 -1.04297 -0.84668 -1.88965 -1.88965 -1.88965c-0.03125 0 -0.0820312 0.000976562 -0.113281 0.00292969h-16.1006v-26.6992\nh19.4004zM288.301 262.799l2.2998 -6.7998l7.10059 -0.0996094l-5.7002 -4.30078l2.09961 -6.7998l-5.7998 4.10059l-5.7998 -4.10059l2.09961 6.7998l-5.69922 4.30078l7.09961 0.0996094z\" />\n    <glyph glyph-name=\"adobe\" unicode=\"&#xf778;\" horiz-adv-x=\"512\" \nd=\"M315.5 384h170.9v-384zM196.5 384l-170.9 -384v384h170.9zM256 241.9l107.5 -241.9h-73l-30.7002 76.7998h-78.7002z\" />\n    <glyph glyph-name=\"artstation\" unicode=\"&#xf77a;\" horiz-adv-x=\"512\" \nd=\"M2 70.5996h315.1l59.2002 -102.6h-285.399h-0.0146484c-17.4814 0 -38.0381 12.6787 -45.8857 28.2998zM501.8 98c19 -29.4004 -0.0996094 -55.9004 -2 -59.0996l-40.7002 -70.5l-257.3 447.6h88.4004h0.0117188c17.0596 0 37.3936 -12.2305 45.3877 -27.2998zM275 143.5\nh-231l115.5 200z\" />\n    <glyph glyph-name=\"atlassian\" unicode=\"&#xf77b;\" horiz-adv-x=\"512\" \nd=\"M152.2 211.6c66.2998 -70.7998 89.0996 -189.3 51.2002 -267.1c-2.40039 -5.2002 -7.60059 -8.5 -13.4004 -8.40039h-175c-11 0 -18.4004 11.7002 -13.4004 21.7002l125.801 251c5.09961 10.5 17.0996 11 24.7998 2.7998zM244.4 439.9\nc6.7998 10.8994 20.2998 10.6992 25.5996 0.0996094c5.90039 -11.7002 240.4 -482.3 240.4 -482.3c5 -9.90039 -2.2002 -21.7002 -13.4004 -21.7002h-174.2c-5.7002 0 -10.8994 3.2998 -13.3994 8.40039c-73.5 146.899 -187.301 302.1 -65 495.5z\" />\n    <glyph glyph-name=\"canadian-maple-leaf\" unicode=\"&#xf785;\" horiz-adv-x=\"512\" \nd=\"M383.8 96.2998c-5 -5 -10 -7.5 -5 -22.5s10 -35.0996 10 -35.0996s-95.2002 20.0996 -105.2 22.5996c-8.89941 0.900391 -18.3994 -2.39941 -18.3994 -12.5c0 -10.0996 5.7998 -112.8 5.7998 -112.8h-30s5.7998 102.8 5.7998 112.8s-9.59961 13.4004 -18.2998 12.5\nc-10.0996 -2.5 -105.3 -22.5996 -105.3 -22.5996s5 20.0996 10.0996 35.0996c4.90039 15 0 17.5 -5.09961 22.5c-2.60059 2.5 -105.2 92.4004 -105.2 92.4004l17.5 7.59961c10 4.90039 7.40039 11.4004 5 17.4004c-2.5 7.59961 -20.0996 67.2998 -20.0996 67.2998\ns47.5996 -10 57.6992 -12.5c7.5 -2.40039 10 2.5 12.5 7.5s15 32.2998 15 32.2998s52.6006 -59.7998 55.1006 -62.2998c10.0996 -7.5 20.0996 0 17.5996 10c0 10 -27.5996 129.6 -27.5996 129.6s30.0996 -17.3994 40.0996 -22.3994c7.60059 -5 12.6006 -5 17.6006 5\nc5 7.5 42.5 79.7998 42.5 79.7998s37.5996 -72.2998 42.6992 -79.7998c5 -10 10.1006 -10 17.6006 -5c10 5 40.0996 22.3994 40.0996 22.3994s-27.5996 -119.6 -27.5996 -129.6c-2.5 -10 7.59961 -17.5 17.5996 -10c2.5 2.40039 55.1006 62.2998 55.1006 62.2998\ns12.5 -27.3994 15 -32.3994s5 -9.90039 12.5 -7.5c10 2.5 57.6992 12.5 57.6992 12.5s-17.6992 -59.7002 -20.0996 -67.3008c-2.40039 -5.89941 -5 -12.5 5 -17.3994l17.5 -7.5s-102.7 -89.9004 -105.2 -92.4004z\" />\n    <glyph glyph-name=\"centos\" unicode=\"&#xf789;\" \nd=\"M289.6 350.5l31.6006 -31.7002l-76.2998 -76.5v108.2h44.6992zM127.2 318.8l31.5996 31.7002h44.7002v-108.2zM168.7 360.4l55.5 55.5996l55.5 -55.5996h-44.7002v-127.9l-10.7998 -10.7998l-10.7998 10.7998v127.9h-44.7002zM194.9 192.3l-10.8008 -10.7998h-128.6\nv-44.7998l-55.5 55.5996l55.5 55.6006v-44.8008h128.6zM274.2 213l76.2998 76.5l31.5996 -31.7002v-44.7998h-107.899zM447.5 192.3l-55.5 -55.5996v44.7998h-127.7l-10.7998 10.7998l10.7998 10.7998h127.7v44.8008zM65.4004 271.8v78.7002h79.3994l-31.5996 -31.7002\nl90.2998 -90.5v-15.2998h-15.2998l-90.2998 90.5zM382.1 350.5v-78.7002l-31.5996 31.7002l-90.2998 -90.5h-15.2998v15.2998l90.2998 90.5l-31.6006 31.7002h78.5zM203.5 34.0996v-0.0996094h-44.7002l-31.5996 31.7002l76.2998 76.5v-108.101zM65.4004 213v44.7998\nl32.5 31.7002l76.2998 -76.5h-108.8zM382.1 112.8v-78.7002h-78.5l31.6006 31.7002l-90.2998 90.5v15.2998h15.2998l90.2998 -90.5zM382.1 171.6v-44.7998l-31.5996 -31.7002l-76.2998 76.5h107.899zM321.2 65.7998l-31.6006 -31.5996h-44.6992v108.1zM97.9004 95.0996\nl-32.5 31.7002v44.7998h108.8zM279.7 24.2002l-55.5 -55.6006l-55.5 55.6006h44.7002v127.899l10.7998 10.8008l10.7998 -10.8008v-127.899h44.7002zM113.2 65.7998l31.5996 -31.7002h-79.3994v78.7002l32.5 -31.7002l90.2998 90.5h15.2998v-15.2998z\" />\n    <glyph glyph-name=\"confluence\" unicode=\"&#xf78d;\" horiz-adv-x=\"512\" \nd=\"M2.2998 35.7998c42.2998 66.9004 125.2 233.2 373.101 112.601c39.6992 -19.1006 83.6992 -39.9004 105.899 -50.3008c8 -3.69922 11.7002 -13.1992 8.10059 -21.2998l-50.4004 -114.1c-0.0996094 -0.100586 -0.0996094 -0.299805 -0.200195 -0.400391\nc-3.89941 -8.09961 -13.5996 -11.5996 -21.7002 -7.7002c-200.399 95.2002 -213.8 111.5 -280.899 -0.699219c0 0 -0.100586 -0.100586 -0.100586 -0.200195c-4.69922 -7.7002 -14.6992 -10 -22.3994 -5.2998l-105.9 65.1992c-7.59961 4.7002 -10 14.6006 -5.5 22.2002z\nM509.7 347.9c-42.6006 -67.5 -125.4 -232.9 -373.4 -112.9c-39.7002 19.2002 -83.7998 40 -106 50.4004c-8 3.69922 -11.7002 13.1992 -8.09961 21.2998l50.5 114.1c0.0996094 0.100586 0.0996094 0.299805 0.200195 0.400391\nc3.89941 8.09961 13.5996 11.5996 21.6992 7.7002c199.5 -94.7002 213.301 -111.7 280.601 0.899414c0.200195 0.400391 0.399414 0.700195 0.599609 1c5 7.5 15.1006 9.40039 22.6006 4.40039l105.8 -65.1006c7.59961 -4.69922 10 -14.5996 5.5 -22.1992z\" />\n    <glyph glyph-name=\"dhl\" unicode=\"&#xf790;\" horiz-adv-x=\"640\" \nd=\"M238 146.8l22.2998 30.2002h58.7002l-22.2998 -30.2002h-58.7002zM0 165.1h86.5l-4.7002 -6.39941h-81.7998v6.39941zM172.9 177h68.1992c-5.69922 -7.7998 -24.0996 -30.2998 -57.1992 -30.2998h-100.101l41.1006 55.7998h51c5.59961 0 5.59961 -2.2002 2.7998 -5.90039\nc-2.7998 -3.69922 -7.60059 -10.2998 -10.4004 -14.0996c-1.39941 -1.90039 -4.09961 -5.5 4.60059 -5.5zM490.4 183.9h-62.2002l39.2998 53.3994h62.2002zM95.2998 177l-4.7002 -6.40039h-90.5996v6.40039h95.2998zM206.3 203.6\nc2.7998 3.7002 2.90039 5.90039 -2.7002 5.90039h-111.399l20.3994 27.7998h117.9c29.9004 0 37.5996 -23.5996 29.2002 -35c-6.2002 -8.39941 -13.5 -18.3994 -13.5 -18.3994h-45.6006c-8.69922 0 -6 3.5 -4.59961 5.5c2.7998 3.7998 7.5 10.3994 10.2998 14.1992zM0 146.8\nv6.40039h77.7998l-4.7002 -6.40039h-73.0996zM323 146.8c0 0 22.2002 30.2002 22.2998 30.2002h58.7002l-22.2998 -30.2002h-58.7002zM545 146.7l4.7002 6.39941h90.2998v-6.39941h-95zM567.3 177h72.7002v-6.40039h-77.4004zM553.8 158.7l4.7002 6.39941h81.5v-6.39941\nh-86.2002zM389.6 237.3h58.7002l-39.2998 -53.3994h-143.6l39.2998 53.3994h58.7002l-22.5 -30.5996h26.1992zM423.1 177h133.4l-22.2998 -30.2998h-94.2998c-24.1006 0 -30.6006 11.5996 -23.2002 21.5996c2.09961 2.7998 6.39941 8.7002 6.39941 8.7002z\" />\n    <glyph glyph-name=\"diaspora\" unicode=\"&#xf791;\" horiz-adv-x=\"512\" \nd=\"M251.64 93.4502c-1.39941 0 -88 -119.9 -88.6992 -119.9c-0.700195 0 -86.6006 60.4502 -86.9404 61.2002s86.5996 125.7 86.5996 127.4c0 2.19922 -129.6 44 -137.6 47.0996c-1.2998 0.5 31.4004 101.8 31.7002 102.1c0.599609 0.700195 144.399 -47 145.5 -47\nc0.399414 0 0.899414 0.600586 1 1.30078c0.399414 2 1 148.6 1.7002 149.6c0.799805 1.2002 104.5 0.700195 105.1 0.299805c1.5 -1 3.5 -156.1 6.09961 -156.1c1.40039 0 138.7 47 139.301 46.2998c0.799805 -0.900391 31.8994 -102.2 31.5 -102.6\nc-0.900391 -0.900391 -140.2 -47.1006 -140.601 -48.8008c-0.299805 -1.39941 82.7998 -122.1 82.5 -122.899s-85.5 -63.5 -86.2998 -63.5c-1 0.200195 -89 125.5 -90.9004 125.5h0.0400391z\" />\n    <glyph glyph-name=\"fedex\" unicode=\"&#xf797;\" horiz-adv-x=\"640\" \nd=\"M586 163.5l54 -60.5h-64.4004l-22.2998 25l-22.0996 -25h-212.2v11.9004h-0.5c-7.90039 -11.7002 -20.7998 -18.6006 -34.9004 -18.6006c-32.6992 0 -56.3994 26.4004 -60.0996 56.9004h-85.5c0 -23.5 31.0996 -35.5 45.7998 -14.6006h42\nc-27.5996 -67.6992 -130.2 -49.3994 -130.2 23.7002c0 6.40039 0.800781 12.5 2.30078 18.2002h-48.9004v-77.5h-49v184.4h109v-41.1006h-60v-26.2002h54.7998v-24.1992c24.5 43.5996 103.9 45.3994 121.9 -14c7.5 25.5 28.8994 44.8994 57.2998 44.8994\nc13.9004 0 25.7998 -3.7998 35.4004 -14.7998h0.5v75.5h151.199v-48.0996h-56.0996v-16h118.7l22.5 -24.8008l21.7002 24.8008h62.3994zM139.3 180.1h46.5c-4.7998 25.6006 -40.3994 26.3008 -46.5 0zM292.7 131.2c34.5 0 32.5996 62.7998 0 62.7998\nc-34 0 -34.6006 -62.7998 0 -62.7998zM460.5 112.1v29.6006h-56.0996v44.7002h56.0996v28.0996h-55.5v33.9004h56.0996v30.1992h-95v-166.5h94.4004zM414.6 151.9h56.1006v-45.6006l50.7002 57l-50.7002 57v-44h-56.1006v-24.3994zM553.2 141.6l26.2998 -29.5h40.5\nl-46 51.4004l45.4004 51h-38.5l-25.6006 -29.2998l-26.5996 29.2998h-39.7002l45.5996 -51.2002l-45.5996 -51.2002h38.0996z\" />\n    <glyph glyph-name=\"fedora\" unicode=\"&#xf798;\" \nd=\"M225 416c123.7 -0.299805 223.7 -100.9 223.4 -224.6c-0.300781 -123.7 -100.9 -223.7 -224.601 -223.4l-170.2 0.400391v0c-29.5879 0 -53.6006 24.0127 -53.6006 53.5996c0 0.0830078 0.000976562 0.216797 0.000976562 0.299805l0.400391 170.3\nc0.399414 123.7 100.899 223.7 224.6 223.4zM394.8 258.8c-0.0771484 6.26953 -1.33203 16.3047 -2.7998 22.4004l-55.2002 56.0996v-1.59961c0 -5.10059 -1.5 -9.60059 -3.7998 -14.2998zM331 353.7c1.65332 -2.31348 3.53516 -6.43555 4.2002 -9.2002l54.2998 -54.5996\nc-8.27539 24.8252 -34.4834 53.4082 -58.5 63.7998zM118.1 200.8c-4.54785 -0.369141 -11.8057 -1.66895 -16.1992 -2.89941l8.5 -8.5c1.68457 3.44336 5.13477 8.55078 7.69922 11.3994zM97 196.6c-3.91211 -1.08984 -10.0498 -3.41895 -13.7002 -5.19922l27 -27.2002\nc-1.30469 3.32617 -2.37988 8.92676 -2.39941 12.5l0.899414 8zM78.7998 189.2c-3.21484 -1.79492 -8.23242 -5.02051 -11.2002 -7.2002l35.3008 -35.9004c3.70801 1.84668 10.0254 3.95215 14.0996 4.7002zM63.5996 179.4\nc-3.06738 -2.29395 -7.5918 -6.50488 -10.0996 -9.40039l34.9004 -34.5996c2.66113 2.6377 7.36523 6.44629 10.5 8.5zM50.2998 167.1c-2.89941 -3.2998 -5.7998 -6.69922 -8.59961 -10.5l35.7998 -35.8994c1.74121 3.40527 5.19141 8.5127 7.7002 11.3994zM39.2998 152.8\nc-2.07715 -3.18457 -5.0791 -8.56055 -6.7002 -12l39.5 -39.7998c0.306641 4.3584 1.91895 11.168 3.60059 15.2002zM30.5 136.5c-1.7998 -4.90039 -3.2998 -9.59961 -4.7002 -14.5l52.7002 -53.5c-3.42578 6.82812 -6.42773 18.5654 -6.7002 26.2002zM22.5996 93.5\nc0.0380859 -6.14551 1.33789 -15.957 2.90039 -21.9004l55.4004 -55.6992v1.09961c0.0341797 4.18848 1.64746 10.5947 3.59961 14.2998zM27.9004 62.7998c8.29785 -24.8047 34.5059 -53.3867 58.5 -63.7998c-1.61816 2.33008 -3.5 6.45117 -4.2002 9.2002zM22.5996 99.7998\nl64.4004 -64.2002c2.30469 2.8877 6.74023 6.78613 9.90039 8.7002l-72.2002 72.5c-1.08105 -4.62988 -2.02148 -12.2461 -2.10059 -17zM275.9 151.6c32.5996 -0.0996094 32.6992 49.2002 0.199219 49.4004l-33.5996 0.0996094\nc-4.91309 0.0224609 -8.90039 4.02734 -8.90039 8.94043v0.0595703l0.100586 47c0.0996094 40.5 38.5996 60.8008 66 54.9004c15.3994 -3.90039 30.2998 8.40039 30.2998 23.9004c0 12.0996 -8.7002 22.1992 -19.9004 24\nc-5.39062 1.26953 -14.2617 2.30078 -19.8008 2.30078c-0.110352 0 -0.289062 -0.000976562 -0.398438 -0.000976562c-0.116211 0 -0.304688 0.000976562 -0.420898 0.000976562c-57.96 0 -105.081 -47.041 -105.18 -105.001l-0.0996094 -56l-42.6006 0.0996094\nc-32.5996 0.100586 -32.6992 -49.2002 -0.0996094 -49.2998l33.5996 -0.0996094c4.40039 0 8.90039 -4.5 8.90039 -9l-0.0996094 -47c-0.00585938 -30.8574 -25.0537 -55.9004 -55.9102 -55.9004h-0.19043c-9.39941 0 -9.39941 1.59961 -15.7002 1.59961\nc-13.3691 -0.208008 -24.3457 -11.2295 -24.5 -24.5996c0 -15.5 14.2002 -24.2002 19.9004 -24.2002c61.2998 -12.8994 125.5 33.6006 125.7 102.9l0.0996094 56zM299.4 151.9c4.50781 0.442383 11.7207 1.74219 16.0996 2.89941l-8.5 8.5\nc-1.48047 -3.55762 -4.88477 -8.66504 -7.59961 -11.3994zM320.4 156.1c3.9248 1.09082 10.0625 3.46484 13.6992 5.30078l-27 27.1992c1.30566 -3.32617 2.38086 -8.92578 2.40039 -12.5l-0.900391 -8.09961zM338.4 163.5c4 2.2002 8.09961 4.7002 11.8994 7.2002\nl-36.2002 35.8994c-4.09961 -2.2998 -8.7998 -3.59961 -13.6992 -4.69922zM353.9 173.3c2.92188 2.33301 7.44727 6.36426 10.0996 9l-34.9004 35c-2.63672 -2.66797 -7.34082 -6.47656 -10.5 -8.5zM367.1 185.6c2.52539 2.77441 6.37793 7.47852 8.60059 10.5\nl-35.7998 35.9004c-1.78125 -3.37891 -5.23047 -8.48633 -7.7002 -11.4004zM378.1 199.9c2.10938 3.16602 5.11133 8.54199 6.7002 12l-39.5 39.7998c-0.305664 -4.3584 -1.91895 -11.168 -3.59961 -15.2002zM391.6 230.8l-53.0996 53.4004\nc3.69434 -6.76172 6.875 -18.499 7.09961 -26.2002l41.3008 -41.5c1.50879 3.87695 3.61426 10.2832 4.69922 14.2998zM392.6 236.4c1.05957 4.52246 2.08984 11.959 2.30078 16.5996l-64.3008 64.7002c-2.18359 -3.12988 -6.61816 -7.25098 -9.89941 -9.2002z\" />\n    <glyph glyph-name=\"figma\" unicode=\"&#xf799;\" horiz-adv-x=\"384\" \nd=\"M277 277.3h-85.4004v-256c-0.0273438 -47.085 -38.2637 -85.2998 -85.3496 -85.2998c-47.1133 0 -85.3496 38.2363 -85.3496 85.3496s38.2363 85.3506 85.3496 85.3506h0.0498047c-47.1133 0 -85.3496 38.2363 -85.3496 85.3496s38.2363 85.3506 85.3496 85.3506\nc-47.085 0 -85.2998 38.2139 -85.2998 85.2998c0 47.085 38.2148 85.2998 85.2998 85.2998h170.7c47.1133 0 85.3496 -38.2363 85.3496 -85.3496s-38.2363 -85.3506 -85.3496 -85.3506zM277 277.3c47.0801 -0.00488281 85.2949 -38.2197 85.2998 -85.2998\nc0 -47.0859 -38.2139 -85.2998 -85.2998 -85.2998s-85.2998 38.2139 -85.2998 85.2998s38.2139 85.2998 85.2998 85.2998z\" />\n    <glyph glyph-name=\"intercom\" unicode=\"&#xf7af;\" \nd=\"M392 416c30.9004 0 56 -25.0996 56 -56v-336c0 -30.9004 -25.0996 -56 -56 -56h-336c-30.9004 0 -56 25.0996 -56 56v336c0 30.9004 25.0996 56 56 56h336zM283.7 333.9v-199.5c0 -19.8008 29.8994 -19.8008 29.8994 0v199.5c0 19.7998 -29.8994 19.7998 -29.8994 0z\nM209.1 341.4v-216.5c0 -19.8008 29.9004 -19.8008 29.9004 0v216.5c0 19.7998 -29.9004 19.7998 -29.9004 0zM134.4 333.9v-199.5c0 -19.8008 29.8994 -19.8008 29.8994 0v199.5c0 19.7998 -29.8994 19.7998 -29.8994 0zM59.7002 304v-134.3\nc0 -19.7998 29.8994 -19.7998 29.8994 0v134.3c0 19.7998 -29.8994 19.7998 -29.8994 0zM383.1 76.2002c14.9004 12.8994 -4.5 35.5996 -19.3994 22.7002c-63.2002 -53.9004 -213.4 -55.3008 -279.3 0c-15 12.7998 -34.4004 -9.90039 -19.4004 -22.7002\nc76.4004 -65.4004 245.3 -63 318.1 0zM388.3 169.7v134.3c0 19.7998 -29.8994 19.7998 -29.8994 0v-134.3c0 -19.7998 29.8994 -19.7998 29.8994 0z\" />\n    <glyph glyph-name=\"invision\" unicode=\"&#xf7b0;\" \nd=\"M407.4 416c22.3994 0 40.5996 -18.2002 40.5996 -40.5996v-366.801c0 -22.3994 -18.2002 -40.5996 -40.5996 -40.5996h-366.801c-22.3994 0 -40.5996 18.2002 -40.5996 40.5996v366.801c0 22.3994 18.2002 40.5996 40.5996 40.5996h366.801zM176.1 302.4\nc-0.599609 35.0996 -53.5996 34.7998 -53.6992 -0.400391c0 -15 12.1992 -27 27.0996 -27c4.2002 0.0996094 27 4 26.5996 27.4004zM332.8 71c23.7998 0 42.7002 15.2998 53.2002 52l-17.9004 6.7002c-14.2998 -39.5 -31.7998 -32.4004 -31.7998 -16.9004\nc0.299805 8.10059 0.700195 7.7002 14.9004 58.7998c26.0996 85.8008 -61.2998 113.5 -101.8 38l8.89941 40.5h-68.7998l-9.7002 -35.5996h32.2998l-19.7998 -79.4004c-16.5 -36.6992 -57.3994 -44.0996 -57.3994 -23.1992c0.299805 11.2998 -0.700195 4.5 32.8994 138.199\nh-76.3994l-9.7002 -35.5996h31.7998c-22.0996 -90.0996 -22.9004 -89.7998 -23 -104.1c0 -48.7002 63.0996 -56.1006 94.5996 -4.30078l-8.09961 -32.5h45.0996l25.8008 103.301c14.6992 59.6992 74 47.0996 59.8994 0.699219c-9.09961 -32.5996 -40.5996 -106.6 25 -106.6z\n\" />\n    <glyph glyph-name=\"jira\" unicode=\"&#xf7b1;\" horiz-adv-x=\"496\" \nd=\"M490 206.3c8 -7.89941 8 -20.7002 0 -28.5996c-225.8 -225 137.9 136.3 -241.5 -241.7c-180.7 180.1 -109.7 109.3 -242.5 241.6c-7.90039 8 -7.90039 20.8008 0 28.7002c0 0 77 76.7998 242.5 241.7c72.0996 -71.7998 168.6 -169 241.5 -241.7zM248.5 116.3l76 75.7002\nl-76 75.7002l-76 -75.7002z\" />\n    <glyph glyph-name=\"mendeley\" unicode=\"&#xf7b3;\" horiz-adv-x=\"640\" \nd=\"M624.6 122.8c23.1006 -22.7002 17.8008 -73.5 0 -88.2998c-36.1992 -38.9004 -100 -18.2002 -104.899 35.2002c-1 11.7002 1.09961 23 5.7002 33c47.2998 103.7 -185.9 106.1 -146.5 8.2002c0.0996094 -0.100586 0.199219 -0.200195 0.299805 -0.400391\nc26.5996 -42.5996 -6.7002 -97.2998 -58.7998 -95.2002c-52 -2.2002 -85.6006 52.4004 -58.8008 95.2002c0.100586 0.200195 0.200195 0.299805 0.300781 0.400391c39.3994 97.8994 -193.801 95.5 -146.5 -8.2002c20.3994 -44.9004 -14.1006 -93.7002 -61.2002 -87.7998\nc-61.9004 7.7998 -62.5 82.8994 -42.6006 102.6c16 16 31.8008 24.7998 53 22.5c43.3008 1 49.7002 34.9004 37.5 98.7998c-22.6992 57.5 14.5 131.601 87.4004 130.8c76.9004 -0.699219 82.7998 -82 130.9 -82c49.1992 0 53.5 81.3008 130.899 82\nc72.5 0.700195 110.2 -73.2998 87.4004 -130.8c-12.2002 -63.8994 -5.7998 -97.7998 37.5 -98.7998c18.7002 2 36.0996 -4.7998 48.3994 -17.2002zM320.7 141.9c43.5996 0 62.7998 37.7998 62.7998 62.7998c0 34.7002 -28.0996 62.7998 -62.7998 62.7998h-0.600586\nc-34.5996 0 -62.7998 -28.0996 -62.7998 -62.7998c0 -25.2998 19.4004 -62.7998 62.7998 -62.7998h0.600586z\" />\n    <glyph glyph-name=\"raspberry-pi\" unicode=\"&#xf7bb;\" horiz-adv-x=\"407\" \nd=\"M372 215.5c28.7002 -17.2002 54.5996 -72.5996 14 -117.7c-2.59961 -14.0996 -7.09961 -24.2002 -11 -35.3994c-5.90039 -45.2002 -44.4004 -66.3008 -54.5996 -68.8008c-14.9004 -11.1992 -30.7002 -21.7998 -52.2002 -29.1992\nc-20.2002 -20.6006 -42.1006 -28.4004 -64.2002 -28.4004h-1c-22 0 -44 7.7998 -64.2998 28.4004c-21.4004 7.39941 -37.2998 18 -52.2002 29.1992c-10.0996 2.5 -48.7002 23.6006 -54.5996 68.8008c-3.90039 11.1992 -8.40039 21.2998 -11 35.3994\nc-40.5 45 -14.6006 100.5 14.1992 117.7l3.7002 6.5c-0.0996094 46.4004 21.4004 65.2998 46.5 79.7002c-7.59961 2 -15.3994 3.7002 -17.5996 13.2002c-13.1006 3.39941 -15.7998 9.39941 -17.1006 15.7998c-3.39941 2.2998 -14.7998 8.7002 -13.5996 19.7002\nc-6.2998 4.39941 -9.90039 10.0996 -8.09961 18.0996c-6.90039 7.5 -8.7002 13.7002 -5.80078 19.4004c-8.2998 10.1992 -4.59961 15.5 -1.09961 20.8994c-6.2002 11.2002 -0.799805 23.2002 16.5 21.2002c6.90039 10.0996 21.9004 7.7998 24.2002 7.7998\nc2.5 3.2998 6 6 16.5 4.7002c6.7998 6.09961 14.3994 5.09961 22.2998 2.09961c3.2002 2.5 6.09961 3.40039 8.7002 3.5c5 0.100586 9.2998 -2.89941 13.8994 -4.2998c11.3008 3.60059 13.8008 -1.39941 19.4004 -3.39941c12.2998 2.59961 16.0996 -3 22 -8.90039\nl6.90039 0.0996094c18.5996 -10.7998 27.7998 -32.7998 31.0996 -44.0996c3.2998 11.2998 12.5 33.2998 31.0996 44.0996l6.90039 -0.0996094c5.90039 5.90039 9.7002 11.5 22 8.90039c5.5 2.09961 8.09961 7 19.4004 3.39941\nc7.09961 2.2002 13.2998 8.10059 22.5996 0.799805c7.90039 2.90039 15.5 4 22.2998 -2.09961c10.5 1.2998 13.9004 -1.5 16.5 -4.7002c2.2998 0 17.2998 2.2998 24.2002 -7.7998c17.2998 2 22.7998 -10 16.5996 -21.2002c3.5 -5.2998 7.2002 -10.5996 -1.09961 -20.8994\nc2.90039 -5.7002 1.09961 -11.9004 -5.7998 -19.4004c1.89941 -8 -1.7002 -13.7002 -8.10059 -18.0996c1.2002 -11 -10.1992 -17.4004 -13.5996 -19.7002c-1.2998 -6.40039 -4 -12.5 -17.0996 -15.7998c-2.2002 -9.60059 -10 -11.2002 -17.6006 -13.2002\nc25.1006 -14.4004 46.6006 -33.2998 46.5 -79.7002zM349.8 223.5c1.5 48.7002 -36.3994 75.4004 -82.0996 67.9004c-16.7998 -2.80078 80.5996 -86.6006 82.0996 -67.9004zM306.8 130.4c24.5 15.7998 28.9004 51.5996 9.90039 80\nc-19 28.3994 -54.2998 38.5996 -78.7998 22.7998s-28.9004 -51.6006 -9.90039 -80c19 -28.4004 54.2998 -38.6006 78.7998 -22.7998zM238.9 418.7c-16.6006 -15.9004 -40.1006 -55.9004 -5.80078 -71.7998c29 23.5 63.6006 40.6992 102 53.5\nc-49.2998 -25.1006 -78 -45.3008 -93.6992 -62.6006c8.09961 -31.7002 50 -33.2002 65.3994 -32.2998c-3.09961 1.40039 -5.7998 3.09961 -6.7002 5.7998c3.80078 2.7002 17.5 0.299805 27 5.60059c-3.69922 0.699219 -5.39941 1.39941 -7.09961 4.09961\nc9 2.90039 18.7002 5.2998 24.4004 10c-3.10059 0 -6 -0.599609 -10 2.09961c8.09961 4.30078 16.6992 7.7002 23.3994 14.2002c-4.2002 0.100586 -8.7002 0.100586 -10 1.60059c7.40039 4.5 13.6006 9.5 18.7998 15c-5.7998 -0.700195 -8.2998 -0.100586 -9.69922 0.899414\nc5.59961 5.60059 12.5996 10.4004 16 17.2998c-4.40039 -1.5 -8.30078 -2.09961 -11.2002 0.100586c1.89941 4.2998 10 6.7002 14.7002 16.5996c-4.60059 -0.399414 -9.40039 -1 -10.4004 0c2.09961 8.5 5.7002 13.2002 9.2998 18.2002\nc-9.7998 0.200195 -24.5996 0 -23.8994 0.799805l6 6.10059c-9.5 2.5 -19.3008 -0.400391 -26.4004 -2.60059c-3.2002 2.5 0 5.60059 3.90039 8.7998c-8.10059 -1 -15.5 -2.89941 -22.1006 -5.39941c-3.59961 3.09961 2.2998 6.2998 5.10059 9.39941\nc-12.5 -2.2998 -17.8008 -5.59961 -23.1006 -8.89941c-3.7998 3.59961 -0.200195 6.7002 2.40039 9.7998c-9.40039 -3.5 -14.2998 -7.90039 -19.4004 -12.2998c-1.7998 2.2998 -4.39941 4 -1.2002 9.59961c-6.69922 -3.7998 -11.7998 -8.2998 -15.5 -13.2998\nc-4.19922 2.59961 -2.5 6.09961 -2.5 9.40039c-7 -5.60059 -11.3994 -11.5 -16.7998 -17.3008c-1.09961 0.800781 -2.09961 3.40039 -2.89941 7.60059zM204.5 304.1c-27.2002 0.700195 -53.4004 -19.8994 -53.4004 -31.7998\nc-0.0996094 -14.5996 21.5 -29.3994 53.6006 -29.7998c32.7998 -0.200195 53.7002 11.9004 53.7998 26.9004c0.0996094 16.8994 -29.7998 35 -54 34.6992zM81.5 316.9c9.59961 -5.2002 23.2002 -2.80078 27.2002 -5.60059\nc-0.900391 -2.59961 -3.60059 -4.39941 -6.7002 -5.7998c15.4004 -0.900391 57.4004 0.5 65.4004 32.2998c-15.7002 17.2998 -44.4004 37.6006 -93.7002 62.6006c38.3994 -12.8008 73 -30 102 -53.5c34.0996 15.8994 10.5996 55.8994 -6 71.7998\nc-0.900391 -4.2002 -1.7998 -6.7998 -2.90039 -7.60059c-5.39941 5.80078 -9.7998 11.7002 -16.7998 17.3008c0 -3.2002 1.59961 -6.80078 -2.5 -9.40039c-3.7002 5 -8.7998 9.5 -15.5 13.2998c3.2002 -5.59961 0.5 -7.2998 -1.2002 -9.59961\nc-5.09961 4.39941 -10 8.89941 -19.3994 12.2998c2.59961 -3.09961 6.19922 -6.2002 2.39941 -9.7998c-5.2998 3.2998 -10.5996 6.59961 -23.0996 8.89941c2.7998 -3.09961 8.59961 -6.2998 5.09961 -9.39941c-6.7002 2.5 -14 4.2998 -22.0996 5.39941\nc3.7998 -3.19922 7.09961 -6.2998 3.89941 -8.7998c-7.09961 2.2002 -16.8994 5.10059 -26.3994 2.60059l6 -6.10059c0.700195 -0.799805 -14.1006 -0.700195 -23.9004 -0.799805c3.5 -4.90039 7.2002 -9.7002 9.2998 -18.2002c-1 -1 -5.7998 -0.399414 -10.3994 0\nc4.7002 -9.89941 12.7998 -12.3994 14.7002 -16.5996c-2.90039 -2.10059 -6.90039 -1.60059 -11.2002 -0.100586c3.2998 -6.89941 10.3994 -11.6992 16 -17.2998c-1.40039 -1 -3.90039 -1.59961 -9.7002 -0.899414c5.2002 -5.5 11.4004 -10.5 18.7998 -15\nc-1.2998 -1.60059 -5.7998 -1.5 -10 -1.60059c6.7002 -6.5 15.2998 -9.89941 23.4004 -14.2002c-4 -2.7998 -6.90039 -2.09961 -10 -2.09961c5.7002 -4.7002 15.3994 -7.2002 24.3994 -10c-1.69922 -2.59961 -3.39941 -3.40039 -7.09961 -4.09961zM141.6 292.8\nc-45.5996 7.60059 -83.5996 -19.2002 -82.0996 -67.8994c1.5 -18.6006 98.9004 65.0996 82.0996 67.8994zM38.2002 106c21.5996 -9.5 39.0996 105.3 12.5996 98.2998c-43.8994 -24.5996 -36.2998 -79.5 -12.5996 -98.2998zM129.2 7.7998\nc14.0996 10.4004 6.39941 45.7002 -10.5 65.7002c-19.4004 22.2002 -44.6006 35.4004 -60.9004 25.5996c-10.8994 -8.19922 -12.8994 -36 2.60059 -63.3994c23 -32.6006 55.5 -35.7998 68.7998 -27.9004zM102.8 127.5c24.4004 -15.7998 59.7002 -5.59961 78.7998 22.7998\nc19 28.4004 14.6006 64.2002 -9.89941 80s-59.7998 5.60059 -78.7998 -22.7998s-14.6006 -64.2002 9.89941 -80zM205 -48c28.4004 -0.5 57.7002 24.4004 57.2002 35.4004c-0.100586 11.3994 -32 19.8994 -55.7002 18.8994c-23.5 0.600586 -59.7002 -9.2998 -59.2998 -22\nc-0.400391 -8.59961 28.3994 -33.5 57.7998 -32.2998zM263.9 76.9004v0.599609c-0.200195 29.5996 -26.8008 53.5996 -59.4004 53.4004c-32.5996 -0.200195 -59 -24.3008 -58.7998 -54v-0.600586c0.200195 -29.5996 26.7998 -53.5996 59.3994 -53.3994\nc32.6006 0.199219 59 24.2998 58.8008 54zM346.1 34.2002c18.4004 23.2002 12.2002 62 1.7002 72.2998c-15.5996 11.9004 -38 -3.2998 -58.8994 -26.5996c-18.3008 -21.1006 -28.4004 -59.6006 -15.1006 -72c12.7002 -9.60059 47 -8.30078 72.2998 26.2998zM369 107.4\nc23.7002 18.6992 31.2998 73.5996 -12.5996 98.2998c-26.4004 7 -8.90039 -107.7 12.5996 -98.2998z\" />\n    <glyph glyph-name=\"redhat\" unicode=\"&#xf7bc;\" horiz-adv-x=\"512\" \nd=\"M341.52 162.59v-0.149414c33.6504 0 82.3408 6.93945 82.3408 47c0.219727 6.73926 0.859375 1.81934 -20.8799 96.2393c-4.62012 19.1504 -8.68066 27.8398 -42.3105 44.6504c-26.0898 13.3398 -82.9199 35.3701 -99.7295 35.3701\nc-15.6602 0 -20.2002 -20.1699 -38.8701 -20.1699c-18 0 -31.3105 15.0596 -48.1201 15.0596c-16.1406 0 -26.6602 -11 -34.7803 -33.6201c-27.5 -77.5498 -26.2803 -74.2695 -26.1201 -78.2695c0 -24.7998 97.6406 -106.11 228.47 -106.11zM429.07 193.19\nl-0.0703125 -0.0302734c4.65039 -22 4.65039 -24.3506 4.65039 -27.25c0 -37.6602 -42.3301 -58.5605 -98 -58.5605c-125.74 -0.0800781 -235.91 73.6504 -235.91 122.33v0.0771484c0 5.65332 1.81836 14.4531 4.05957 19.6436\nc-45.2402 -2.26074 -103.8 -10.3301 -103.8 -62.0303c0 -84.6699 200.63 -189 359.49 -189c121.79 0 152.51 55.0801 152.51 98.5801c0 34.21 -29.5898 73.0498 -82.9297 96.2402z\" />\n    <glyph glyph-name=\"sketch\" unicode=\"&#xf7c6;\" horiz-adv-x=\"512\" \nd=\"M27.5 285.8l78.9004 105.8l-6.90039 -130.699h-90.5zM396.3 402.3l7.10059 -133.5l-135.7 147.2zM112.2 229.7l122.6 -239.7l-224.899 261.7h91.0996zM114.2 260.9l142.1 154.1l60.4004 -65.5996l81.5 -88.5h-284zM411.5 251.8v-0.0996094h90.9004l-224.801 -261.7z\nM415.4 379l87.8994 -118.1h-90.2998l-6.09961 113.399l-0.900391 17.2998zM113.5 354.5l2.59961 47.7998l128.601 13.7002l-135.8 -147.1zM401.2 251.8l-144.9 -283.8l-102.7 200.9l-42.3994 82.8994h290z\" />\n    <glyph glyph-name=\"sourcetree\" unicode=\"&#xf7d3;\" \nd=\"M427.2 245c-0.0947266 -81.5225 -63.1279 -168.031 -140.7 -193.1v-101.601c0 -7.89355 -6.40625 -14.2998 -14.2998 -14.2998v0h-96.4004c-7.89355 0 -14.2998 6.40625 -14.2998 14.2998v101.7c-77.5566 25.0537 -140.5 111.535 -140.5 193.037v0.363281\nc0.200195 112 91.0996 202.8 203.2 202.6c112.1 0 203 -90.9004 203 -203zM155.6 245c0 -91 137.2 -89.9004 137.301 0c0 90.7998 -137.301 90.7998 -137.301 0z\" />\n    <glyph glyph-name=\"suse\" unicode=\"&#xf7d6;\" horiz-adv-x=\"640\" \nd=\"M471.08 345.34c0 1 1.01953 0.759766 0.919922 0.660156c4.2002 -0.599609 92.2002 -13.7002 129.2 -35.2998c12.0996 -6.90039 20.7002 -21.5 34.5 -69.6006c0.700195 -2.7998 -2.7998 -5.09961 -3.60059 -5.69922\nc-26.8994 -18.8008 -56.7998 -36.6006 -145.199 21.6992c11.0996 -26.6992 10.6992 -25.0996 11 -25.5c5.39941 -2.7998 56.2998 -28.6992 81.5996 -28.1992c20.4004 0.399414 42.2002 10.3994 50.9004 15.5996c0 0 4.5 2.7002 3.19922 -2.40039\nc-0.5 -1.89941 -3.2998 -14.5996 -7 -17.6992c-1 -1 -36.5996 -28.4004 -103.1 -28c-42.7002 1 -76.7998 16.3994 -82.4004 -17.4004c-2.7998 -17.0996 6.10059 -37.5 18.9004 -55.7998h-48.5996c-15.9004 28.3994 -23.1006 68.2998 -79.8008 68.2998\nc-51.5996 0 -48.3994 -50.7002 -42.6992 -68.2998h-45.9004c-18.7998 68.7998 -69.2002 98.5996 -102.4 104.3c-74.2998 12.7998 -113 -49.2002 -87 -98.4004c23.1006 -43.5996 81.4004 -44.0996 99.7002 -20.3994c19.2002 25 3.7998 62.8994 -28.5 65.7002\nc-12.2998 1.09961 -25.2998 -4.60059 -25.5 -16.9004v-0.0595703c0 -10.9004 10 -13.8008 12 -14c7.2998 0.399414 8.90039 1.89941 11.7998 2.39941c5.2002 0.900391 16.8008 -1.7998 16.8008 -13.8994c0 -8.40039 -6.80078 -13.1006 -13.3008 -14.9004\nc-4.2373 -1.46777 -11.3154 -2.67773 -15.7998 -2.7002c-17.2002 0 -41.2002 14.7998 -41.5 42.6006c-0.200195 15.6992 7.7002 30 21.6006 39.1992c15.8994 10.5 43.5996 14.1006 69.1992 -1.59961c31.5 -19.2998 39.7002 -57.0996 31.5 -82.9004\nc-11.8994 -37.2998 -45.5996 -57.1992 -90 -53.2998c-31.5 2.7998 -60.6992 19.4004 -78.0996 44.4004c-6.32715 9.0332 -13.7197 25.0264 -16.5 35.7002c-7.12012 28.0596 0 58.0596 5.48047 71.3994c25.6992 63.6006 80.1992 97.2998 99.5996 109.7\nc100.2 61.5996 171.1 59.0996 223 57.2998c61.2998 -2.2002 126.6 -23.2998 135.7 -26.2998c0 2 0.299805 20.2998 0.299805 20.2998zM531.48 272.54c-1.10059 -33.5 39.0996 -51.5996 63.2998 -28.9004c24.3994 22.9004 9 64 -24.4004 65.2002\nc-0.380859 0.0136719 -0.999023 0.0253906 -1.37988 0.0253906c-20.0615 0 -36.8711 -16.2734 -37.5195 -36.3252zM570.08 297.84c14.0312 -0.413086 25.4199 -12.1406 25.4199 -26.1787c0 -0.282227 -0.00878906 -0.739258 -0.0195312 -1.02148\nc-0.50293 -13.9795 -12.2646 -25.3262 -26.2539 -25.3262c-14.501 0 -26.2695 11.7695 -26.2695 26.2705s11.7686 26.2695 26.2695 26.2695c0.236328 0 0.618164 -0.00585938 0.853516 -0.0136719zM574.38 269.04c15.4004 0 15.4004 15.5996 0 15.5996\nc-15.3994 0 -15.3994 -15.5996 0 -15.5996z\" />\n    <glyph glyph-name=\"ubuntu\" unicode=\"&#xf7df;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM300.7 347c-8.7998 -15.2002 -3.60059 -34.7002 11.7002 -43.5996c15.1992 -8.80078 34.6992 -3.5 43.5 11.6992c8.7998 15.3008 3.59961 34.8008 -11.7002 43.6006\nc-15.2002 8.7998 -34.7002 3.5 -43.5 -11.7002zM87.4004 160.1c17.5996 0 31.8994 14.3008 31.8994 31.9004s-14.2998 31.9004 -31.8994 31.9004c-17.6006 0 -31.9004 -14.3008 -31.9004 -31.9004s14.2998 -31.9004 31.9004 -31.9004zM115.5 157\nc8.7002 -32.7002 29.0996 -60.7002 56.5 -79l23.7002 39.5996c-51.5 36.3008 -51.5 112.5 0 148.801l-23.7002 39.5996c-27.4004 -18.4004 -47.9004 -46.2998 -56.5 -79.0996c22.4004 -18 22.2998 -52 0 -69.9004zM344.2 25.2998\nc15.2998 8.7998 20.5 28.2998 11.7002 43.6006c-8.80078 15.2998 -28.3008 20.5 -43.5 11.6992c-15.3008 -8.7998 -20.5 -28.2998 -11.7002 -43.5996s28.2002 -20.5 43.5 -11.7002zM344.5 94.7998c23 22.9004 38 53.9004 40.2998 88.4004l-46.0996 0.700195\nc-5.5 -62.7002 -71.9004 -100.9 -128.9 -74.4004l-22.5 -40.2998c47.7998 -23.7002 91.5 -10.7998 96.7002 -9.40039c4.40039 28.4004 33.7998 45.2998 60.5 35zM338.6 200.1l46 0.600586c-2.19922 34.5996 -17.0996 65.5996 -40.1992 88.5\nc-26.7002 -10.2998 -56.1006 6.7002 -60.5 35c-5.2002 1.39941 -48.8008 14.2998 -96.7002 -9.40039l22.5 -40.2998c57.5996 26.7998 123.5 -12.4004 128.899 -74.4004z\" />\n    <glyph glyph-name=\"ups\" unicode=\"&#xf7e0;\" horiz-adv-x=\"384\" \nd=\"M103.2 145v123h32.5996v-141.6c-17.7002 -12.1006 -97.8994 -35.9004 -97.8994 39v102.6h32.6992v-104c0 -32.0996 27.4004 -22.5996 32.6006 -19zM4 373.18c93.5996 49.6006 259.1 61.6006 375.4 0v-220.899c0 -103.9 -75.3008 -135.2 -187.7 -184.101\nc-112.8 48.9004 -187.7 80.4004 -187.7 184.101v220.899zM362.1 152.28v216.2c-109.3 10.1992 -238.6 4 -340.899 -89.8008v-126.399c0 -86.6006 53 -113.5 170.5 -165.3c117.2 51.6992 170.399 78.6992 170.399 165.3zM152.5 259.68\nc23.7002 15.3203 104.4 31.8008 104.4 -65.5996c0 -75.9004 -47.3008 -85.7998 -71.7002 -78.5v-68.7002h-32.7002v212.8zM185.2 142.38c2 -0.799805 38.3994 -16.8994 38.3994 51c0 62 -30 53.5 -38.3994 49.2998v-100.3zM264.3 228.78\nc-0.200195 41.0996 51.2002 53.8994 79.7002 31.8994v-28.3994c-17.9004 18.2998 -47.9004 18.0996 -48.5 -2.2002c-0.700195 -26.5996 55.0996 -21.7002 53.4004 -73.2002c-1.30078 -41.5996 -47 -55 -83.2002 -33.5v30.1006\nc20.3994 -18.1006 51.3994 -18.6006 50.7998 4.89941c-0.599609 27.9004 -52.0996 23.1006 -52.2002 70.4004z\" />\n    <glyph glyph-name=\"usps\" unicode=\"&#xf7e1;\" horiz-adv-x=\"576\" \nd=\"M460.3 206.3c-1.39941 -2.2002 -4.2998 -4.39941 -3.7998 0.100586c2.90039 11.5996 13.9004 30.5 4.40039 32c-17.8008 3.09961 -88.1006 -4.5 -88.1006 0c0 2.39941 26.7002 3.09961 37.9004 8.69922c9.39941 9.40039 10.7998 8 10.8994 8h27\nc26.9004 0 37.5 -7.5 11.7002 -48.7998zM348.2 183.7c-62.2998 -21.2002 -124.8 -54.2002 -321.2 -151.5l52.4004 245.5c185 0 335.199 5.59961 337.899 -22.6006h-196.6l30.7002 -93.2998c35 16.7998 120.899 51.7002 172.6 53.9004\nc21.7998 0.799805 30.5996 -2.90039 26.2002 -5.7998c-4.7002 -2.30078 -38 -4.90039 -102 -26.2002zM94.7002 352h454.3l-67.7002 -319.7h-423.1s402 157.3 406.399 160.2c0 0 35.7002 48 14.6006 67.7002c-6.5 6.59961 -16 6.59961 -52.4004 6.59961\nc-2.09961 19.5 -78.7998 31.5 -332.1 85.2002z\" />\n    <glyph glyph-name=\"yarn\" unicode=\"&#xf7e3;\" horiz-adv-x=\"496\" \nd=\"M393.9 102.8c-39 -9.2998 -48.4004 -32.0996 -104 -47.3994c0 0 -2.7002 -4 -10.4004 -5.80078c-13.4004 -3.2998 -63.9004 -6 -68.5 -6.09961c-12.4004 -0.0996094 -19.9004 3.2002 -22 8.2002c-6.40039 15.2998 9.2002 22 9.2002 22\nc-8.10059 5 -9 9.89941 -9.7998 8.09961c-2.40039 -5.7998 -3.60059 -20.0996 -10.1006 -26.5c-8.7998 -8.89941 -25.5 -5.89941 -35.2998 -0.799805c-10.7998 5.7002 0.799805 19.2002 0.799805 19.2002s-5.7998 -3.40039 -10.5 3.59961\nc-6 9.2998 -17.0996 37.2998 11.5 62c-1.2998 10.1006 -4.59961 53.7002 40.6006 85.6006c0 0 -20.6006 22.7998 -12.9004 43.2998c5 13.3994 7 13.2998 8.59961 13.8994c5.7002 2.2002 11.3008 4.60059 15.4004 9.10059c20.5996 22.2002 46.7998 18 46.7998 18\ns12.4004 37.7998 23.9004 30.3994c3.5 -2.2998 16.2998 -30.5996 16.2998 -30.5996s13.5996 7.90039 15.0996 5c8.2002 -16 9.2002 -46.5 5.60059 -65.0996c-6.10059 -30.6006 -21.4004 -47.1006 -27.6006 -57.5c-1.39941 -2.40039 16.5 -10 27.8008 -41.3008\nc10.3994 -28.5996 1.09961 -52.6992 2.7998 -55.2998c0.799805 -1.39941 13.7002 -0.799805 36.3994 13.2002c12.8008 7.90039 28.1006 16.9004 45.4004 17c16.7002 0.5 17.5996 -19.2002 4.90039 -22.2002zM496 192c0 -136.9 -111.1 -248 -248 -248s-248 111.1 -248 248\ns111.1 248 248 248s248 -111.1 248 -248zM416.7 116.8c-1.7002 13.6006 -13.2002 23 -28 22.7998c-22 -0.299805 -40.5 -11.6992 -52.7998 -19.1992c-4.80078 -3 -8.90039 -5.2002 -12.4004 -6.80078c3.09961 44.5 -22.5 73.1006 -28.7002 79.4004\nc7.7998 11.2998 18.4004 27.7998 23.4004 53.2002c4.2998 21.7002 3 55.5 -6.90039 74.5c-1.59961 3.09961 -7.39941 11.2002 -21 7.39941c-9.7002 20 -13 22.1006 -15.5996 23.8008c-1.10059 0.699219 -23.6006 16.3994 -41.4004 -28\nc-12.2002 -0.900391 -31.2998 -5.30078 -47.5 -22.8008c-2 -2.19922 -5.89941 -3.7998 -10.0996 -5.39941h0.0996094c-8.39941 -3 -12.2998 -9.90039 -16.8994 -22.2998c-6.5 -17.4004 0.199219 -34.6006 6.7998 -45.7002c-17.7998 -15.9004 -37 -39.7998 -35.7002 -82.5\nc-34 -36 -11.7998 -73 -5.59961 -79.6006c-1.60059 -11.0996 3.69922 -19.3994 12 -23.7998c12.5996 -6.7002 30.2998 -9.59961 43.8994 -2.7998c4.90039 -5.2002 13.7998 -10.0996 30 -10.0996c6.7998 0 58 2.89941 72.6006 6.5c6.7998 1.59961 11.5 4.5 14.5996 7.09961\nc9.7998 3.09961 36.7998 12.2998 62.2002 28.7002c18 11.7002 24.2002 14.2002 37.5996 17.3994c12.9004 3.2002 21 15.1006 19.4004 28.2002z\" />\n    <glyph glyph-name=\"airbnb\" unicode=\"&#xf834;\" \nd=\"M224 74.8799h0.0595703c24.71 31.1797 39.5508 58.9297 45 83.1797c22.5508 88 -112.609 88 -90.0596 0c4.91992 -23.75 19.7598 -51.5098 45 -83.1797zM362.15 1.65039c35.6396 15.3496 50.1797 53.5693 37.0098 86.6396\nc-25.4902 61.6104 -78.8398 168.47 -114.84 239.09c-16.9707 33.9297 -28.0303 59.8701 -60.3701 59.8701c-33.8203 0 -43.6299 -27.3301 -59.3799 -57.4004c-4.15039 -10.3799 -100.771 -202.399 -115.87 -241.56c-17.8105 -50.0303 21.2998 -98.5205 71.2998 -91.0898\nc24.5996 2.22949 52.6201 18.8701 85.1504 54.9199c-29.2002 37.1104 -47.5 70.3096 -54.4307 99.5c-11.8799 53.9902 18.3604 100.5 73.2803 100.5c64.96 0 122.75 -69.9297 18.8496 -200c35.6309 -39.5898 77.2402 -68.7803 119.301 -50.4697zM409.15 137.77\nc0 -0.679688 16.8496 -35.6895 16.8301 -39.5791c25.2393 -69.3301 -26.7207 -130.24 -89.6104 -130.19c-11.1104 0 -53.6904 -1.37988 -112.37 62.4004c-51.7598 -56.3408 -90.6602 -62.4004 -112.37 -62.4004c-62.8896 0 -114.85 60.8604 -89.6299 130.19\nc0.889648 2.61914 11.1797 32.71 117.34 245.02c19.79 41.1201 39.1406 72.79 84.6602 72.79c49.1299 0 56.2695 -3.92969 185.15 -278.23z\" />\n    <glyph glyph-name=\"battle-net\" unicode=\"&#xf835;\" horiz-adv-x=\"512\" \nd=\"M448.61 222.38c60.75 -36.25 71.9893 -73.8096 57.3193 -93.6895c-4.70996 -6.88086 -25.1797 -36.2402 -148 -31.6406c-21.8193 -30.3994 -45.25 -53.2695 -67.4697 -69.2695c28.54 -53.7803 54.2998 -85.0303 62.54 -91.7803c0 0 -3.44043 0.160156 -8.58008 3.37012\nc-2.69434 1.61133 -6.61426 4.78809 -8.75 7.08984c-15.6299 16.1797 -35.5195 41.9404 -55.7002 74.1201c-43.9502 -28.1104 -81.1299 -29.0996 -88.4395 -9.4502c-4.83984 10.8301 1.5293 26.5 9.05957 39.3398c-31.3203 -17.5098 -61.7002 -26.8496 -86.7002 -21.1396\nc-6.79004 1.54004 -17.6299 5.50977 -23.1992 18.2598c-4.52051 9.53027 -6.02051 24.2598 -0.150391 47.1406c9.07031 35.3398 37.5801 82.2998 47.3096 97.6992c3.75 -8.62988 -20.7793 40.1904 -26 93.1904c-89.1592 0 -110.56 -8.83984 -111.56 -9.21973\nc1.54004 2.44922 7.86035 7.26953 17.7598 9.71973c22 5.47949 54.6406 9.84961 93 11.2295c-2.38965 52.0703 15.3398 84.7705 36 81.29h0.180664c11.3291 -1.2998 21.2598 -13.5801 28.5 -25.9297c0.669922 35.2002 7.7998 65.54 25 84.0703\nc4.72949 5.14941 13.5693 12.5498 27.3994 11h0.0498047c10.5205 -0.850586 24 -6.91992 40.8398 -23.4707c25.6006 -25.0693 51.54 -71.9893 60.4805 -88.9297c37.25 -3.7002 68.7695 -12.5801 93.7695 -23.7998c32.3506 51.5898 46.4805 89.5303 48.2002 100.05\nc0.640625 -1.25 2.93066 -8.41992 -0.450195 -20.25c-6.22949 -21.6201 -18.5791 -51.7197 -36.3398 -85.2998c45.79 -23.7305 65.3203 -55.0098 52.8506 -71.3301c-3.35059 -4.94043 -12.0498 -12.5498 -38.9199 -12.3701zM370.76 116.16\nc70.4102 4.37988 79.6504 20.5703 78.5098 33.5c-1.87988 21.25 -21.1992 41.2598 -49.0596 58.8301c0.889648 -24.5605 -5.63965 -54.6201 -29.4502 -92.3301zM216.9 60.3096c-19.04 -30.46 9.19922 -39.5596 49.7998 -17.6992\nc-7 12.0898 -13.9199 24.8594 -20.6006 38.1895c-9.66992 -7.37012 -19.4395 -14.2598 -29.1992 -20.4902zM431.9 231.66c36.2598 -1.23047 29.4199 27.8496 -9.64062 51.9502c-5.9707 -10.373 -16.1582 -26.9043 -22.7402 -36.9004\nc11.2207 -4.70996 22.0908 -9.70996 32.3809 -15.0498zM279.18 50c28.3799 18.2002 60.1689 48.1201 84.7695 85.4297c18.46 27.96 26.1494 56.0205 25.4102 79.5703c-30.5801 17.3203 -89.3604 42.7197 -167.23 57.21c0.350586 18.4805 2.08984 19.8799 2.16016 20.3301\nc10.9229 -1.33496 28.5693 -4.04492 39.3896 -6.0498c32.5664 -6.08984 84.2383 -20.2959 115.34 -31.71c-15.6191 33.1494 -41.4092 47.2197 -41.5195 47.2197c1.59961 0.160156 28.1299 -6 48.8604 -43.7197c8.42676 11.2061 16.2031 22.0293 23.3301 32.4697\nc-29.96 15.46 -71.75 28.04 -116.32 30.71c-33.4502 1.99023 -61.6299 -5.38965 -81.6299 -17.8096c0.240234 -35.2607 7.66992 -98.96 34 -173.431c-16.8301 -9.12988 -17.7402 -7.87012 -18.6699 -8.25c-17.1924 40.7627 -37.2041 109.235 -44.6699 152.84\nc-21.0908 -30.3994 -20.1406 -59.5 -20.1406 -59.5693c-0.919922 1.22949 -8.81934 27.4297 13.4707 64.2295c-13.5801 1.70996 -26.5508 2.9707 -38.8506 3.87988c1.57031 -33.6797 11.5703 -76.1494 31.5703 -116.069c14.8701 -29.71 35.1201 -50.3105 55.71 -61.4902\nc30.4102 17.9199 81.0498 55.6504 132.75 115.92c14.9697 -9 16.1494 -11.71 16.5098 -12c-7.91309 -10.5332 -16.2227 -20.9033 -24.9287 -31.1104c-21.542 -25.1426 -59.6494 -62.7744 -85.0605 -84c37.5303 -3.38965 62.5303 12.1807 62.5303 12.25\nc-0.860352 -1.67969 -20.0303 -21.6797 -63.2803 -20.4092c5.5 -12.9404 10.9902 -25.0908 16.5 -36.4404zM306.579 337c-1.58008 2.4502 -39.5801 58.8496 -56.4805 54.6104c-16.8994 1.09961 -36.21 -22.9805 -38.21 -75.2803\nc21.1104 13.2402 50.1299 22.3301 94.6904 20.6699zM175.929 333.9c-3.7998 6.68945 -8.66992 12.4795 -14.4297 13.5693h-0.0898438c-24.79 1.41016 -24.75 -52.8301 -24.6699 -49.5898c13.6602 -0.00976562 27.8496 -0.410156 42.3994 -1.25977\nc-1.62012 12.6602 -2.72949 25.1699 -3.20996 37.2803zM147.869 171.9c-30.7998 -61.5098 -19.8701 -76.6104 -19.6699 -76.8203c7.38965 -15.4902 38.1299 -20.25 84.9199 4.50977c-21.9502 11.7402 -44.4902 32.6104 -65.25 72.3105zM357.929 97.0996z\" />\n    <glyph glyph-name=\"bootstrap\" unicode=\"&#xf836;\" \nd=\"M292.3 136.07c0 -42.4102 -39.7197 -41.4307 -43.9199 -41.4307h-80.8896v81.6904h80.8896c42.5605 0 43.9199 -31.9004 43.9199 -40.2598zM242.15 209.2h-74.6602v72.1797h74.6602c34.9297 0 38.4395 -20.3496 38.4395 -35.8701\nc0 -37.3096 -37.7695 -36.3096 -38.4395 -36.3096zM448 341.33v-298.66c-0.120117 -41.0977 -33.5723 -74.5498 -74.6699 -74.6699h-298.66c-41.0977 0.120117 -74.5498 33.5723 -74.6699 74.6699v298.66c0.120117 41.0977 33.5723 74.5498 74.6699 74.6699h298.66\nc41.0977 -0.120117 74.5498 -33.5723 74.6699 -74.6699zM338.05 130.14c0 21.5703 -6.64941 58.29 -49.0498 67.3506v0.729492c22.9102 9.78027 37.3398 28.25 37.3398 55.6406c0 7 2 64.7793 -77.5996 64.7793h-127v-261.33c128.229 0 139.87 -1.67969 163.6 5.70996\nc14.21 4.4209 52.71 17.9805 52.71 67.1201z\" />\n    <glyph glyph-name=\"buffer\" unicode=\"&#xf837;\" \nd=\"M427.84 67.3301l-196.5 -97.8203c-1.93848 -0.832031 -5.22461 -1.50684 -7.33496 -1.50684c-2.10938 0 -5.39551 0.674805 -7.33496 1.50684l-196.51 97.8203c-4 2 -4 5.28027 0 7.29004l47.0596 23.3799c1.94238 0.832031 5.23242 1.50684 7.3457 1.50684\nc2.1123 0 5.40234 -0.674805 7.34473 -1.50684l134.76 -67c1.93848 -0.836914 5.22461 -1.51562 7.33496 -1.51562c2.11133 0 5.39746 0.678711 7.33496 1.51562l134.76 67c1.94043 0.832031 5.22949 1.50781 7.34082 1.50781s5.39941 -0.675781 7.33984 -1.50781\nl47.0596 -23.4297c4.0498 -1.95996 4.0498 -5.24023 0 -7.24023zM427.84 203.86c4.0498 -2.01074 4.0498 -5.29004 0 -7.31055l-196.5 -97.7998c-1.93848 -0.832031 -5.22461 -1.50781 -7.33496 -1.50781c-2.10938 0 -5.39551 0.675781 -7.33496 1.50781l-196.51 97.7998\nc-4 2.02051 -4 5.31055 0 7.31055l47.0596 23.4297c1.94238 0.832031 5.23242 1.50684 7.3457 1.50684c2.1123 0 5.40234 -0.674805 7.34473 -1.50684l134.76 -67.0801c1.93945 -0.828125 5.22559 -1.5 7.33496 -1.5s5.39551 0.671875 7.33496 1.5l134.76 67.0801\nc1.94043 0.832031 5.22949 1.50781 7.34082 1.50781s5.39941 -0.675781 7.33984 -1.50781zM20.1602 317.58c-4.0498 1.86035 -4.0498 4.88965 0 6.74023l196.5 90.2793c1.9502 0.774414 5.23633 1.40332 7.33496 1.40332s5.38477 -0.628906 7.33496 -1.40332\nl196.51 -90.2793c4 -1.85059 4 -4.87988 0 -6.74023l-196.51 -90.29c-1.95215 -0.765625 -5.23828 -1.3877 -7.33496 -1.3877s-5.38281 0.62207 -7.33496 1.3877z\" />\n    <glyph glyph-name=\"chromecast\" unicode=\"&#xf838;\" horiz-adv-x=\"512\" \nd=\"M447.83 384h0.169922c23.5811 0 42.7197 -19.1387 42.7197 -42.7197v-298.561c0 -23.5811 -19.1387 -42.7197 -42.7197 -42.7197v0h-149.36v42.7197h149.19v298.561h-383.83v-63.9199h-42.7197v63.9199c0 23.5811 19.1387 42.7197 42.7197 42.7197h383.83z\nM21.2803 64.4199c35.2783 0 63.9102 -28.6318 63.9102 -63.9102v-0.00976562h-63.9102v63.9199zM21.2803 149.7l0.0292969 -0.339844h0.330078c82.248 -0.105469 149 -66.9424 149 -149.19v-0.169922h-42.7197v0.339844v0.0302734c0 58.8594 -47.7705 106.63 -106.63 106.63\nh-0.00976562v42.7002zM21.2803 234.97v-0.330078c129.46 -0.370117 234.34 -105.18 234.8 -234.64h-42.7197v0.5c-0.0800781 106 -86.0801 191.85 -192.08 191.75v42.7197z\" />\n    <glyph glyph-name=\"evernote\" unicode=\"&#xf839;\" horiz-adv-x=\"384\" \nd=\"M120.82 315.79c1.59961 -22.3096 -17.5508 -21.5898 -21.6104 -21.5898c-68.9297 0 -73.6396 1 -83.5801 -3.33984c-0.55957 -0.220703 -0.740234 0 -0.370117 0.370117l108.53 110.319c0.379883 0.370117 0.599609 0.219727 0.379883 -0.370117\nc-4.34961 -9.98926 -3.34961 -15.0898 -3.34961 -85.3896zM199.82 7.79004c-14.6807 37.0801 13 76.9297 52.5195 76.6201c17.4902 0 22.6006 -23.21 7.9502 -31.4199c-6.19043 -3.2998 -24.9502 -1.74023 -25.1396 -19.2002\nc-0.0507812 -17.0898 19.6699 -25 31.1992 -24.8896h0.0107422c25.1934 0 45.6396 20.4463 45.6396 45.6396v0.00976562v0.0800781c0 11.6299 -7.79004 47.2197 -47.54 55.3398c-7.71973 1.54004 -65 6.35059 -68.3496 50.5205\nc-3.74023 -16.9307 -17.4004 -63.4902 -43.1104 -69.0898c-8.74023 -1.94043 -69.6797 -7.64062 -112.92 36.7695c0 0 -18.5703 15.2305 -28.2305 57.9502c-3.37988 15.75 -9.2793 39.7002 -11.1396 62c0 18 11.1396 30.4502 25.0703 32.2002c81 0 90 -2.32031 101 7.7998\nc9.81934 9.24023 7.7998 15.5 7.7998 102.78c1 8.2998 7.79004 30.8096 53.4102 24.1396c6 -0.860352 31.9102 -4.17969 37.4795 -30.6396l64.2607 -11.1504c20.4297 -3.70996 70.9395 -7 80.5996 -57.9404c22.6602 -121.09 8.91016 -238.46 7.7998 -238.46\nc-15.9795 -114.38 -111.07 -108.85 -111.07 -108.85c-18.9492 0.230469 -54.25 9.40039 -67.2695 39.8301zM280.76 212.63c-1 -1.91992 -2.2002 -6 0.850586 -7c14.0898 -4.92969 39.75 -6.83984 45.8799 -5.53027c3.10938 0.25 3.0498 4.43066 2.47949 6.65039\nc-3.5293 21.8496 -40.8301 26.5 -49.2393 5.91992z\" />\n    <glyph glyph-name=\"itch-io\" unicode=\"&#xf83a;\" horiz-adv-x=\"512\" \nd=\"M71.9199 413.23c19.2197 1.66992 114.32 2.76953 184.08 2.76953s116.56 -0.400391 184 -2.73047c21.7197 -12.9297 64.5195 -62.0996 64.9199 -75v-21.3398c0 -27.0596 -25.25 -50.8398 -48.25 -50.8398c-27.54 0 -50.54 22.8799 -50.54 50\nc0 -27.1494 -22.2295 -50 -49.7598 -50s-49 22.8799 -49 50c0 -27.1494 -23.5898 -50 -51.1602 -50h-0.5c-27.5703 0 -51.1602 22.8799 -51.1602 50c0 -27.1494 -21.4199 -50 -49 -50s-49.7598 22.8799 -49.7598 50c0 -27.1494 -22.9697 -50 -50.54 -50\nc-22.96 0 -48.25 23.7803 -48.25 50.8398v21.3398c0.400391 12.8906 43.2002 62.0605 64.9199 74.9609zM204.24 278.84c9.14844 -15.9902 31.5527 -28.9785 49.9746 -28.9785c0.498047 0 1.30664 0.0126953 1.80469 0.0283203c28.7109 0 44.6602 16.4502 51.7607 28.9404\nc22 -38.3398 77.8496 -38.7598 99.8496 -0.240234c13.1201 -23.0596 43.0801 -32.0996 56 -27.6602c3.57031 -37.1494 13.9004 -236.88 -17.75 -269.149c-77.6797 -18.1201 -299.76 -18.6699 -379.76 0c-31.4004 32.0195 -21.6006 229 -17.7305 269.149\nc12.8301 -4.41016 42.8301 4.52051 56 27.6602c21.9502 -38.46 77.8506 -38.1494 99.8506 0.25zM162.66 225.07l-0.0205078 -0.0703125c-52.3193 0 -65.21 -77.4502 -83.8799 -144.45c-17.2598 -62.1494 5.52051 -63.6699 33.9404 -63.7295\nc42.1494 1.56934 65.4902 32.1797 65.4902 62.79c53.6191 -8.79004 116.3 -6.43066 155.55 0c0 -30.6104 23.3398 -61.2207 65.4902 -62.79c28.4297 0.0595703 51.21 1.58008 33.9492 63.7295c-18.6494 66.9199 -31.54 144.45 -83.8701 144.45\nc-16.46 0 -31.0898 0 -49.25 -19.71c-12.1377 1.23145 -31.8896 2.23047 -44.0898 2.23047c-12.1992 0 -31.9521 -0.999023 -44.0898 -2.23047c-18.1299 19.7803 -32.75 19.7803 -49.2197 19.7803zM256 177.21l-0.0595703 -0.00976562s44.3496 -40.7598 52.3496 -55.2402\nl-29 1.16992v-25.2803c0 -1.15918 -11.6602 -0.699219 -23.3096 -0.15918c-1.99023 0 -23.3301 -1.39062 -23.3301 0.15918v25.3203l-29 -1.16992c7.96973 14.4404 52.3496 55.21 52.3496 55.21z\" />\n    <glyph glyph-name=\"salesforce\" unicode=\"&#xf83b;\" horiz-adv-x=\"640\" \nd=\"M248.89 202.36h-26.3496c0.69043 5.15918 3.32031 14.1201 13.6396 14.1201c6.75 0 11.9707 -3.82031 12.71 -14.1201zM385.55 216.24c0.450195 0 14.1104 1.75977 14.1104 -20c0 -6.45996 -1.11035 -20 -14.1104 -20c-0.479492 0 -14.1094 -1.77051 -14.1094 20\nc0 21.7695 13.6396 20 14.1094 20zM142.33 192.48c4.2002 3.60938 15.6104 2.71973 20.9297 1.64941v-16.9395c-5.85938 -1.1709 -16.2295 -2.75 -20.9297 0.949219c-1.20996 1 -3.29004 2.27051 -3.29004 7.05078\nc-0.0078125 0.137695 -0.0146484 0.361328 -0.0146484 0.499023c0 2.31738 1.48047 5.36035 3.30469 6.79102zM640 216c0 -87.5801 -80 -154.39 -165.36 -136.43c-18.3701 -33 -70.7295 -70.75 -132.199 -41.6299c-41.1602 -96.0508 -177.891 -92.1807 -213.811 5.16992\nc-119.72 -23.8906 -178.82 138.37 -75.2695 199.279c-34.75 79.4307 22.6396 173.61 114.31 173.61c33.834 -0.0214844 77.9883 -21.8389 98.5605 -48.7002c20.6992 21.4004 49.3994 34.8105 81.1494 34.8105c42.3398 0 79 -23.5205 98.7998 -58.5703\nc92.8203 40.6797 193.82 -28.2305 193.82 -127.54zM120.45 184.2c0 11.7598 -11.6904 15.1699 -17.8701 17.1699c-5.27051 2.11035 -13.4102 3.50977 -13.4102 8.93945c0 9.45996 17 6.66016 25.1699 2.12012c0 0 1.16992 -0.709961 1.64062 0.470703\nc0.239258 0.699219 2.35938 6.58008 2.58984 7.29004c0.0292969 0.0927734 0.0537109 0.24707 0.0537109 0.34375c0 0.441406 -0.337891 0.918945 -0.753906 1.06543c-12.3301 7.63086 -40.7002 8.51074 -40.7002 -12.6992c0 -12.46 11.4902 -15.4404 17.8799 -17.1699\nc4.71973 -1.58008 13.1699 -3 13.1699 -8.7002c0 -4 -3.5293 -7.06055 -9.16992 -7.06055c-5.82617 0.00976562 -14.3379 2.85449 -19 6.35059c-0.469727 0.229492 -1.41992 0.709961 -1.64941 -0.709961l-2.40039 -7.4707\nc-0.469727 -0.939453 0.230469 -1.17969 0.230469 -1.40918c1.75 -1.40039 10.2998 -6.59082 22.8193 -6.59082c13.1699 0 21.4004 7.06055 21.4004 18.1104v-0.0498047zM152.45 226.78c-10.1299 0 -18.6602 -3.16992 -21.4004 -5.18066\nc-0.237305 -0.164062 -0.430664 -0.532227 -0.430664 -0.822266c0 -0.178711 0.0859375 -0.442383 0.19043 -0.586914l2.59082 -7.06055c0.114258 -0.399414 0.544922 -0.723633 0.960938 -0.723633c0.0605469 0 0.15918 0.0107422 0.21875 0.0234375\nc0.650391 0 6.7998 4 16.9297 4c4 0 7.06055 -0.709961 9.18066 -2.35938c3.59961 -2.80078 3.05957 -8.29004 3.05957 -10.5801c-4.79004 0.299805 -19.1104 3.43945 -29.4102 -3.75977c-4.05762 -2.7832 -7.34961 -9.03418 -7.34961 -13.9541\nc0 -0.162109 0.00390625 -0.424805 0.00976562 -0.585938c0 -5.90039 1.50977 -10.4004 6.58984 -14.3506c12.2402 -8.16016 36.2803 -2 38.1006 -1.41016c1.5791 0.320312 3.5293 0.660156 3.5293 1.87988v33.8809c0.0400391 4.60938 0.320312 21.6396 -22.7793 21.6396z\nM199 247.76c0.000976562 0.0205078 0.00195312 0.0527344 0.00195312 0.0722656c0 0.613281 -0.49707 1.11035 -1.10938 1.11035c-0.0205078 0 -0.0527344 -0.000976562 -0.0722656 -0.00195312h-9.82031\nc-0.0175781 0.000976562 -0.0449219 0.000976562 -0.0625 0.000976562c-0.612305 0 -1.10938 -0.49707 -1.10938 -1.10938c0 -0.0205078 0.000976562 -0.0527344 0.00195312 -0.0722656v-79c-0.000976562 -0.0195312 -0.00195312 -0.0517578 -0.00195312 -0.0712891\nc0 -0.613281 0.49707 -1.11035 1.10938 -1.11035c0.0175781 0 0.0449219 0.000976562 0.0625 0.00195312h9.87988c0.0205078 -0.000976562 0.0527344 -0.00195312 0.0722656 -0.00195312c0.613281 0 1.11035 0.49707 1.11035 1.10938\nc0 0.0205078 -0.000976562 0.0527344 -0.00292969 0.0722656zM254.75 218.83c-2.09961 2.30957 -6.79004 7.53027 -17.6504 7.53027c-3.50977 0 -14.1592 -0.230469 -20.6992 -8.94043c-6.35059 -7.62988 -6.58008 -18.1104 -6.58008 -21.4102\nc0 -3.12012 0.149414 -14.2598 7.05957 -21.1699c2.63965 -2.91016 9.06055 -8.22949 22.8105 -8.22949c10.8193 0 16.4697 2.34961 18.5791 3.75977c0.470703 0.240234 0.710938 0.709961 0.240234 1.87988l-2.34961 6.83008\nc-0.1875 0.402344 -0.699219 0.728516 -1.14258 0.728516c-0.0751953 0 -0.194336 -0.0126953 -0.267578 -0.0283203c-2.58984 -0.94043 -6.34961 -2.82031 -15.29 -2.82031c-17.4199 0 -16.8496 14.7402 -16.9404 16.7002h37.1709\nc0.522461 0.0107422 1.04688 0.431641 1.16992 0.939453c-0.290039 0 2.06934 14.7002 -6.09082 24.2305h-0.0195312zM291.44 166.14c13.1699 0 21.4092 7.06055 21.4092 18.1104c0 11.7598 -11.6992 15.1699 -17.8799 17.1699\nc-4.13965 1.66016 -13.4102 3.37988 -13.4102 8.94043c0 3.75977 3.29004 6.34961 8.4707 6.34961c4.87988 -0.0976562 12.3613 -1.99316 16.7002 -4.22949c4.33789 -2.2373 1.17969 -0.710938 1.64941 0.469727c0.230469 0.700195 2.35059 6.58008 2.58008 7.29004\nc0.0292969 0.0927734 0.0537109 0.24707 0.0537109 0.34375c0 0.441406 -0.337891 0.918945 -0.753906 1.06641c-7.91016 4.89941 -16.7402 4.93945 -20.2295 4.93945c-12 0 -20.46 -7.29004 -20.46 -17.6396c0 -12.46 11.4795 -15.4404 17.8701 -17.1699\nc6.10938 -2 13.1699 -3.26074 13.1699 -8.7002c0 -4 -3.52051 -7.06055 -9.16992 -7.06055c-5.82617 0.0126953 -14.3379 2.85742 -19 6.35059c-0.155273 0.132812 -0.447266 0.241211 -0.651367 0.241211c-0.526367 0 -0.973633 -0.426758 -0.999023 -0.951172\nl-2.34961 -7.52051c-0.470703 -0.939453 0.229492 -1.17969 0.229492 -1.40918c1.71973 -1.40039 10.3301 -6.59082 22.79 -6.59082h-0.0195312zM357.09 224c0 0.709961 -0.240234 1.17969 -1.17969 1.17969h-11.7598c0 0.140625 0.939453 8.94043 4.46973 12.4707\nc4.16016 4.14941 11.7598 1.63965 12 1.63965c1.16992 -0.469727 1.41016 0 1.63965 0.469727l2.83008 7.77051c0.700195 0.939453 0 1.16992 -0.240234 1.41016c-5.08984 2 -17.3496 2.86914 -24.46 -4.24023c-5.47949 -5.48047 -7 -13.9199 -8 -19.5205h-8.46973\nc-0.600586 -0.0498047 -1.125 -0.578125 -1.16992 -1.17969l-1.41992 -7.75977c0 -0.700195 0.240234 -1.16992 1.17969 -1.16992h8.23047c-8.50977 -47.9004 -8.75 -50.21 -10.3506 -55.5205c-1.08008 -3.62012 -3.29004 -6.89941 -5.87988 -7.75977\nc-0.0898438 0 -3.87988 -1.67969 -9.63965 0.240234c0 0 -0.94043 0.469727 -1.41016 -0.709961c-0.240234 -0.709961 -2.58984 -6.82031 -2.83008 -7.53027s0 -1.41016 0.469727 -1.41016c5.11035 -2 13 -1.76953 17.8809 0\nc6.2793 2.28027 9.71973 7.88965 11.5293 12.9404c2.75 7.70996 2.81055 9.79004 11.7598 59.7393h12.2305c0.601562 0.0498047 1.13086 0.578125 1.17969 1.18066zM410.48 208c-0.560547 1.67969 -5.10059 18.1104 -25.1709 18.1104c-15.25 0 -23 -10 -25.1592 -18.1104\nc-1 -3 -3.18066 -14 0 -23.5195c0.0898438 -0.300781 4.40918 -18.1201 25.1592 -18.1201c14.9502 0 22.9004 9.60938 25.1709 18.1201c3.20996 9.60938 1.00977 20.5195 0 23.5195zM455.88 224.7c-5 1.64941 -16.6201 1.89941 -22.1104 -5.41016v4.46973\nc0.000976562 0.0175781 0.00195312 0.0449219 0.00195312 0.0625c0 0.612305 -0.49707 1.11035 -1.10938 1.11035c-0.0205078 0 -0.0527344 -0.000976562 -0.0722656 -0.00292969h-9.39941c-0.0205078 0.00195312 -0.0527344 0.00292969 -0.0722656 0.00292969\nc-0.612305 0 -1.11035 -0.498047 -1.11035 -1.11035c0 -0.0175781 0.000976562 -0.0449219 0.00195312 -0.0625v-55.2793c-0.000976562 -0.0175781 -0.00195312 -0.0449219 -0.00195312 -0.0625c0 -0.618164 0.501953 -1.12012 1.12012 -1.12012\nc0.0175781 0 0.0449219 0.000976562 0.0625 0.00195312h9.63965c0.0166016 -0.000976562 0.0449219 -0.00195312 0.0615234 -0.00195312c0.618164 0 1.12012 0.501953 1.12012 1.12012c0 0.0175781 -0.000976562 0.0449219 -0.00195312 0.0625v27.7695\nc0 2.91016 0.0498047 11.3701 4.45996 15.0498c4.90039 4.90039 12 3.36035 13.4102 3.06055c0.555664 0.00976562 1.1875 0.430664 1.41016 0.939453c0.972656 2.15918 2.34375 5.74316 3.05957 8c0.0449219 0.113281 0.0800781 0.302734 0.0800781 0.423828\nc0 0.356445 -0.246094 0.798828 -0.549805 0.986328v-0.00976562zM502.69 170.6l-2.12012 7.29004c-0.470703 1.18066 -1.41016 0.709961 -1.41016 0.709961c-4.23047 -1.81934 -10.1504 -1.88965 -11.29 -1.88965c-4.63965 0 -17.1699 1.12988 -17.1699 19.7598\nc0 6.23047 1.84961 19.7607 16.4697 19.7607c0.245117 0.00585938 0.643555 0.0107422 0.888672 0.0107422c3.00586 0 7.76855 -0.744141 10.6318 -1.66113c2.8623 -0.916992 0.939453 -0.469727 1.17969 0.709961c0.939453 2.58984 1.63965 4.46973 2.58984 7.53027\nc0.230469 0.939453 -0.469727 1.16992 -0.709961 1.16992c-11.5898 3.87012 -22.3398 2.5293 -27.7598 0c-1.58984 -0.740234 -16.2305 -6.49023 -16.2305 -27.5205c0 -2.89941 -0.580078 -30.1094 28.9404 -30.1094c4.42383 0.00878906 11.377 1.27637 15.5195 2.83008\nc0.290039 0.214844 0.525391 0.682617 0.525391 1.04395c0 0.105469 -0.0244141 0.274414 -0.0546875 0.375977v-0.0107422zM556.56 210.12c-0.799805 3 -5.36914 16.2295 -22.3496 16.2295c-16 0 -23.5195 -10.1094 -25.6396 -18.5898\nc-0.913086 -3.0166 -1.6543 -8.02441 -1.6543 -11.1768c0 -0.161133 0.00195312 -0.421875 0.00390625 -0.583008c0 -25.8701 18.8398 -29.4004 29.8799 -29.4004c10.8203 0 16.46 2.35059 18.5801 3.76074c0.469727 0.239258 0.709961 0.709961 0.240234 1.87988\nl-2.36035 6.83008c-0.186523 0.402344 -0.698242 0.728516 -1.14258 0.728516c-0.0742188 0 -0.194336 -0.0126953 -0.267578 -0.0292969c-2.58984 -0.939453 -6.34961 -2.81934 -15.29 -2.81934c-17.4199 0 -16.8496 14.7402 -16.9297 16.7002h37.1602\nc0.522461 0.0126953 1.05078 0.433594 1.17969 0.939453c-0.239258 0.00976562 0.94043 7.07031 -1.41016 15.54v-0.00976562zM533.27 216.47c5.11035 0 11.8506 -2.2002 12.7305 -14.1201h-26.3701c0.639648 5.12012 3.31055 14.1201 13.6396 14.1201z\" />\n    <glyph glyph-name=\"speaker-deck\" unicode=\"&#xf83c;\" horiz-adv-x=\"512\" \nd=\"M213.86 152h-113.86c-55.2002 0 -100 44.7998 -100 100s44.7998 100 100 100h132.84c22.0801 0 40 -17.9199 40 -40s-17.9199 -40 -40 -40h-134.84c-26.4697 0 -26.4502 -40 0 -40h113.82c55.1992 0 100 -44.7998 100 -100s-44.8008 -100 -100 -100h-171.82\nc-22.0801 0 -40 17.9199 -40 40s17.9199 40 40 40h173.86c26.4795 0 26.46 40 0 40zM298 32c23.5957 16.0176 46.4932 51.8574 51.1104 80h64.5498c10.8525 0.0927734 19.6602 8.97656 19.6602 19.8291v0.170898v120v0.170898c0 10.8525 -8.80762 19.7363 -19.6602 19.8291\nh-117.24c8.29199 9.4834 15.0205 27.4033 15.0205 40s-6.72852 30.5166 -15.0205 40h136.93c43.4404 0 78.6504 -35.8203 78.6504 -80v-160c0 -44.1797 -35.21 -80 -78.6504 -80h-135.35z\" />\n    <glyph glyph-name=\"symfony\" unicode=\"&#xf83d;\" horiz-adv-x=\"512\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM389.74 296.46c15.3496 0.540039 19.7695 15.4404 19.5195 23.1299c-0.639648 18.0605 -19.6699 29.46 -44.8301 28.6504\nc-1.89941 -0.0703125 -65.2598 3.46973 -102.43 -105.53c-10.0596 8.29004 -57.7695 65.1602 -110.58 25.8096c-18.9502 -14.1797 -31.4199 -47.9199 -2.9502 -79.6699c16.9502 -18.1396 26.7207 -25.3301 22.25 -39.8496c-9.14941 -29.79 -55.5596 -16.1602 -51 -1.38965\nc1.36035 4.38965 3.49023 4.46973 6.28027 13.0693c7.74023 25.3203 -27.1104 37.75 -34.6201 13.6006c-4.32031 -14.0605 2.37988 -39.5107 38.3799 -50.6201c42.1602 -12.96 77.8203 10.0098 82.8799 39.9395c3.2002 18.75 -5.29004 32.6904 -20.7998 50.6201l-12.6299 14\nc-7.66016 7.7002 -10.29 20.7002 -2.37012 30.7002c6.69043 8.45996 16.2002 12.0605 31.8105 7.83008c22.7695 -6.16992 32.9199 -21.9697 49.8496 -34.7197c-1.23047 -4 -10.04 -32.3398 -18.2305 -82c-12.1094 -63.4902 -21.3496 -98.3506 -45.3496 -118.351\nc-4.83984 -3.48926 -11.7598 -8.63965 -22.1797 -9c-1.94043 -0.0595703 -14.1406 2.83984 -2.0498 12.5508c15.2393 8.3291 7.00977 34.75 -14.8809 34c-9.85938 -0.330078 -24.8691 -9.59082 -24.3096 -26.5908c0.580078 -17.5293 16.9297 -30.6895 41.5801 -29.8398\nc13.1797 0.44043 42.5801 5.7998 71.5801 40.2598c39.8496 46.7207 47.4395 102.2 58.2002 161.721c51.6797 -6.11035 77.2393 17.8398 77.5996 35.7002c0.549805 24.2998 -28 23.46 -32 5.2998c-1.91992 -8.83984 13.4199 -16.8105 1.41992 -24.5605\nc-8.49023 -5.5 -23.71 -9.37012 -45.1396 -6.21973c10.2998 56.8496 19.1094 112.56 58.8896 113.85c2.70996 0.150391 12.6396 -0.119141 12.8701 -6.66992c0.150391 -5.41016 -6.7998 -9.66992 -6.53027 -18.8496c0.370117 -10.4199 8.2998 -17.2803 19.7705 -16.8701z\n\" />\n    <glyph glyph-name=\"waze\" unicode=\"&#xf83f;\" horiz-adv-x=\"512\" \nd=\"M502.17 246.33c14.5205 -85.8604 -30.9395 -167.92 -113.17 -208.13c13 -34.1006 -12.4004 -70.2002 -48.3203 -70.2002c-27.0625 0.0214844 -50.166 21.9736 -51.5693 49c-6.44043 -0.19043 -64.2002 0 -76.3301 0.639648\nc-1.10645 -27.3809 -24.2441 -49.6035 -51.6484 -49.6035c-0.588867 0 -1.54395 0.0195312 -2.13184 0.0439453c-33.8604 1.36035 -57.9502 34.8398 -47 67.9199c-37.21 13.1104 -72.54 34.8701 -99.6201 70.7998c-13 17.2803 -0.479492 41.7998 20.8398 41.7998\nc46.3105 0 32.2207 54.1699 43.1504 110.261c18.4297 93.9395 116.75 157.14 211.72 157.14c102.48 0 197.15 -70.6699 214.08 -169.67zM373.51 59.7197c42 19.1807 81.3301 56.71 96.29 102.141c40.4805 123.09 -64.1494 228 -181.71 228\nc-83.4502 0 -170.32 -55.4199 -186.07 -136c-9.5293 -48.9102 5 -131.351 -68.75 -131.351c24.9404 -33.1094 58.3301 -52.6201 93.7305 -64.0498c24.6602 21.7998 63.8701 15.4697 79.8301 -14.3398c14.2197 -1 79.1895 -1.17969 87.9004 -0.820312\nc7.9502 15.5303 28.5635 28.1348 46.0107 28.1348c10.2002 0 24.8799 -5.24805 32.7686 -11.7148zM205.12 260.87c0 34.7402 50.8398 34.75 50.8398 0s-50.8398 -34.7402 -50.8398 0zM321.69 260.87c0 34.7402 50.8594 34.75 50.8594 0s-50.8594 -34.75 -50.8594 0z\nM199.08 190.18c-3.44043 16.9404 22.1797 22.1807 25.6201 5.20996l0.0595703 -0.279297c4.14062 -21.4199 29.8506 -44 64.1201 -43.0703c35.6797 0.94043 59.25 22.21 64.1104 42.7695c4.45996 16.0508 28.5996 10.3604 25.4697 -6\nc-5.22949 -22.1797 -31.21 -62 -91.46 -62.8994c-42.5498 0 -80.8799 27.8398 -87.9004 64.25z\" />\n    <glyph glyph-name=\"yammer\" unicode=\"&#xf840;\" horiz-adv-x=\"512\" \nd=\"M421.78 295.83c-48.1602 -26.3896 -118.561 -58.1504 -130.2 -50s91.4395 80.3701 106.689 88.7695c0.920898 0.5 1.80078 0.970703 2.63086 1.40039c1.76562 0.521484 4.69336 0.945312 6.53516 0.945312c12.7295 0 23.0605 -10.3311 23.0605 -23.0596\nc0 -6.14453 -3.90527 -14.2334 -8.71582 -18.0557zM421.78 78.6602c4.76855 -3.82324 8.63965 -11.8877 8.63965 -18c0 -12.7344 -10.335 -23.0703 -23.0703 -23.0703c-1.81641 0 -4.70605 0.412109 -6.44922 0.919922\nc-0.830078 0.410156 -1.70996 0.900391 -2.63086 1.41016c-15.2695 8.38965 -118.25 80.6396 -106.689 88.7402c11.5596 8.09961 82.04 -23.6201 130.2 -50zM464.21 211c10.0947 -2.11328 18.2559 -12.1992 18.2559 -22.5117\nc0 -10.7881 -8.63965 -20.9561 -19.2861 -22.6982c-54.9102 0.0195312 -131.93 6.00977 -138.21 18.7598c-6.2793 12.75 118.84 26.5098 136.24 26.5098c1.0498 0 2.0498 -0.0595703 3 -0.0595703zM31 351.35c-0.699219 2.10742 -1.2666 5.61914 -1.2666 7.83887\nc0 13.7334 11.1455 24.8799 24.8799 24.8799c8.72949 0 18.8213 -6.41504 22.5264 -14.3184l81 -205.06h1.20996l77 203.529c3.22559 8.26074 13.041 14.9648 21.9092 14.9648c12.9834 0 23.5205 -10.5371 23.5205 -23.5195\nc0 -1.89258 -0.438477 -4.90137 -0.979492 -6.71484l-109.6 -273.391c-18.5498 -47.2197 -37.1201 -79.5596 -93.29 -79.5596c-0.151367 -0.000976562 -0.395508 -0.000976562 -0.545898 -0.000976562c-6.4668 0 -16.8887 0.874023 -23.2646 1.95117\nc-8.52051 2.44238 -15.4365 11.6201 -15.4365 20.4844c0 11.7637 9.54688 21.3105 21.3096 21.3105c0.28418 0 0.744141 -0.0117188 1.02734 -0.0253906c0.660156 -0.0595703 10.9102 -0.660156 13.8604 -0.660156c30.4697 0 43.7393 18.9404 58.0693 59.4102z\" />\n    <glyph glyph-name=\"git-alt\" unicode=\"&#xf841;\" \nd=\"M439.55 211.95c4.66504 -4.66602 8.45117 -13.8076 8.45117 -20.4053s-3.78613 -15.7393 -8.45117 -20.4053l-194.689 -194.689c-4.66602 -4.66211 -13.8047 -8.44629 -20.4004 -8.44629s-15.7344 3.78418 -20.4004 8.44629l-195.609 195.6\nc-4.66504 4.66602 -8.45117 13.8076 -8.45117 20.4053s3.78613 15.7393 8.45117 20.4053l134.12 134.14l50.79 -50.8496c-5.95996 -14.2607 -2.16016 -36.4902 18.6396 -45v-123c-22.3203 -9.09082 -28.8203 -38.4004 -11.25 -56\nc5.55176 -5.54883 16.4268 -10.0518 24.2754 -10.0518c7.84766 0 18.7236 4.50293 24.2744 10.0518c13.1807 13.1494 16.2197 42.46 -9.08008 55v121.85l46.3506 -46.29c-14.21 -34.4697 29.5098 -63.8301 56 -37.3398c25.71 25.6895 -1.24023 68.4902 -35.4707 56.6895\nl-49.6592 49.6602c9.29004 26.9102 -16.3301 52.8203 -43.3906 43.6807l-51.5195 51.5195l40.6602 40.6299c4.66602 4.66309 13.8076 8.44727 20.4043 8.44727s15.7383 -3.78418 20.4053 -8.44727z\" />\n    <glyph glyph-name=\"stackpath\" unicode=\"&#xf842;\" \nd=\"M244.6 215.6c0 -8.5 -4.25977 -20.4893 -21.3398 -20.4893h-19.6094v41.4697h19.6094c17.1299 0 21.3398 -12.3604 21.3398 -20.9805zM448 416v-448h-448v448h448zM151.3 160.16c0 21.2402 -12.1201 34.54 -46.7197 44.8496c-20.5703 7.41016 -26 10.9102 -26 18.6299\nc0 7.7207 7 14.6104 20.4102 14.6104c14.0898 0 20.79 -8.4502 20.79 -18.3496h30.7002l0.189453 0.569336c0.5 19.5703 -15.0596 41.6504 -51.1201 41.6504c-23.3701 0 -52.5498 -10.75 -52.5498 -38.29c0 -19.4004 9.25 -31.29 50.7402 -44.3701\nc17.2598 -6.15039 21.9102 -10.4004 21.9102 -19.4795c0 -15.2002 -19.1309 -14.2305 -19.4707 -14.2305c-20.3994 0 -25.6494 9.09961 -25.6494 21.9004h-30.7998l-0.180664 -0.560547c-0.679688 -31.3203 28.3799 -45.2197 56.6299 -45.2197\nc29.9805 0 51.1201 13.5498 51.1201 38.29zM276.68 215.79c0 25.2998 -18.4297 45.46 -53.4199 45.46h-51.7793v-138.18h32.1699v47.3594h19.6094c30.25 0 53.4199 15.9502 53.4199 45.3604zM297.94 123l49.0596 138.22h-31.0898l-47.9102 -138.22h29.9404zM404.46 261.22\nh-31.0898l-47.9102 -138.22h29.9404z\" />\n    <glyph glyph-name=\"cotton-bureau\" unicode=\"&#xf89e;\" horiz-adv-x=\"512\" \nd=\"M474.31 117.59h25.1807c-25.7998 -109.78 -111.4 -173.59 -239.67 -173.59c-154.63 -0.339844 -247.82 92.8604 -247.82 248.18c0 154.63 93 247.82 247.82 247.82c128.399 0 214.06 -63.5098 240.18 -173.61h-25.2598\nc-24.8506 95.6104 -99.9199 148.811 -214.69 148.811c-141.85 0 -223.2 -81.3799 -223.2 -223.2c0 -137.93 76.6699 -218 211.101 -223v49.2002c0 48.1602 -26.5498 74.3896 -74.5498 74.3896c-62.1309 0 -99.4004 37.2803 -99.4004 99.4102\nc0 61.3701 36.5195 98.2803 97.3799 99.0596c30.7402 64.6504 144.24 69.3203 177.24 0c60.8496 -0.779297 97.3799 -37.6895 97.3799 -99.0596c0 -62.0098 -37.2002 -99.21 -99.2002 -99.21c-47.9795 0 -74.3896 -26.3896 -74.3896 -74.3896v-49.1602\nc107.67 3.75977 178.24 56.5 201.899 148.35zM357 265.67c3.7998 -21.0801 11.2695 -104.2 -71.79 -120.75c12.2598 -17.7402 32.9805 -27.3301 61.5898 -27.3301c47.9697 0 74.4004 26.4102 74.4004 74.4102c0 44.6699 -22.8301 70.2197 -64.2002 73.6699zM275.32 168.31\nc72.7803 9.89062 58.5 86.9102 56.2295 97c-72.5596 -10 -58.6895 -86.6592 -56.2295 -97zM260 316l-0.179688 -0.259766c-28.3008 0 -49.1602 -9.66016 -61.5703 -27.3506c28.3701 -5.44922 49.3701 -20.5898 61.5996 -43.4492\nc12.2305 22.8594 33.2305 37.9697 61.5908 43.4492c-12.4404 17.9404 -32.8301 27.6104 -61.4404 27.6104zM188.48 265.28h0.239258c-2.75 -10.0498 -16.1602 -87.1602 56.25 -97c2.41992 10.1895 16.6807 86.4297 -56.4893 97zM173.2 117.59l0.330078 0.0302734\nc28.2998 0 49 9.66992 61.1396 27.2998c-73.0303 14.2197 -78.4004 83.5498 -71.6504 120.75c-41.3594 -3.66992 -64.2197 -29.3096 -64.2197 -73.6699c0 -48.0098 26.4004 -74.4102 74.4004 -74.4102zM226.41 105.2h0.269531\nc14.4902 -7.60059 25.5605 -19.3301 33.5605 -33.8301c6.36523 12.2188 21.4092 27.374 33.5801 33.8301c-14.4902 8.00977 -26.0508 19.0596 -33.8203 33.5498c-6.4248 -12.1094 -21.4736 -27.1396 -33.5898 -33.5498z\" />\n  </font>\n</defs></svg>\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_024_sample_app_persist_db/app/src/static/css/font-awesome/fa-regular-400.svg#fontawesome",
    "content": "<?xml version=\"1.0\" standalone=\"no\"?>\n<!--\nFont Awesome Free 5.10.2 by @fontawesome - https://fontawesome.com\nLicense - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n-->\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\" >\n<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\">\n<metadata>\nCreated by FontForge 20190801 at Thu Aug 22 14:41:09 2019\n By Robert Madole\nCopyright (c) Font Awesome\n</metadata>\n<defs>\n<font id=\"FontAwesome5Free-Regular\" horiz-adv-x=\"512\" >\n  <font-face \n    font-family=\"Font Awesome 5 Free Regular\"\n    font-weight=\"400\"\n    font-stretch=\"normal\"\n    units-per-em=\"512\"\n    panose-1=\"2 0 5 3 0 0 0 0 0 0\"\n    ascent=\"448\"\n    descent=\"-64\"\n    bbox=\"-0.0663408 -64.0662 640.01 448.1\"\n    underline-thickness=\"25\"\n    underline-position=\"-50\"\n    unicode-range=\"U+0020-F5C8\"\n  />\n    <missing-glyph />\n    <glyph glyph-name=\"heart\" unicode=\"&#xf004;\" \nd=\"M458.4 383.7c75.2998 -63.4004 64.0996 -166.601 10.5996 -221.3l-175.4 -178.7c-10 -10.2002 -23.2998 -15.7998 -37.5996 -15.7998c-14.2002 0 -27.5996 5.69922 -37.5996 15.8994l-175.4 178.7c-53.5996 54.7002 -64.5996 157.9 10.5996 221.2\nc57.8008 48.7002 147.101 41.2998 202.4 -15c55.2998 56.2998 144.6 63.5996 202.4 15zM434.8 196.2c36.2002 36.8994 43.7998 107.7 -7.2998 150.8c-38.7002 32.5996 -98.7002 27.9004 -136.5 -10.5996l-35 -35.7002l-35 35.7002\nc-37.5996 38.2998 -97.5996 43.1992 -136.5 10.5c-51.2002 -43.1006 -43.7998 -113.5 -7.2998 -150.7l175.399 -178.7c2.40039 -2.40039 4.40039 -2.40039 6.80078 0z\" />\n    <glyph glyph-name=\"star\" unicode=\"&#xf005;\" horiz-adv-x=\"576\" \nd=\"M528.1 276.5c26.2002 -3.7998 36.7002 -36.0996 17.7002 -54.5996l-105.7 -103l25 -145.5c4.5 -26.3008 -23.1992 -45.9004 -46.3994 -33.7002l-130.7 68.7002l-130.7 -68.7002c-23.2002 -12.2998 -50.8994 7.39941 -46.3994 33.7002l25 145.5l-105.7 103\nc-19 18.5 -8.5 50.7998 17.7002 54.5996l146.1 21.2998l65.2998 132.4c11.7998 23.8994 45.7002 23.5996 57.4004 0l65.2998 -132.4zM388.6 135.7l100.601 98l-139 20.2002l-62.2002 126l-62.2002 -126l-139 -20.2002l100.601 -98l-23.7002 -138.4l124.3 65.2998\nl124.3 -65.2998z\" />\n    <glyph glyph-name=\"user\" unicode=\"&#xf007;\" horiz-adv-x=\"448\" \nd=\"M313.6 144c74.2002 0 134.4 -60.2002 134.4 -134.4v-25.5996c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v25.5996c0 74.2002 60.2002 134.4 134.4 134.4c28.7998 0 42.5 -16 89.5996 -16s60.9004 16 89.5996 16zM400 -16v25.5996\nc0 47.6006 -38.7998 86.4004 -86.4004 86.4004c-14.6992 0 -37.8994 -16 -89.5996 -16c-51.2998 0 -75 16 -89.5996 16c-47.6006 0 -86.4004 -38.7998 -86.4004 -86.4004v-25.5996h352zM224 160c-79.5 0 -144 64.5 -144 144s64.5 144 144 144s144 -64.5 144 -144\ns-64.5 -144 -144 -144zM224 400c-52.9004 0 -96 -43.0996 -96 -96s43.0996 -96 96 -96s96 43.0996 96 96s-43.0996 96 -96 96z\" />\n    <glyph glyph-name=\"clock\" unicode=\"&#xf017;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM256 -8c110.5 0 200 89.5 200 200s-89.5 200 -200 200s-200 -89.5 -200 -200s89.5 -200 200 -200zM317.8 96.4004l-84.8994 61.6992\nc-3.10059 2.30078 -4.90039 5.90039 -4.90039 9.7002v164.2c0 6.59961 5.40039 12 12 12h32c6.59961 0 12 -5.40039 12 -12v-141.7l66.7998 -48.5996c5.40039 -3.90039 6.5 -11.4004 2.60059 -16.7998l-18.8008 -25.9004c-3.89941 -5.2998 -11.3994 -6.5 -16.7998 -2.59961z\n\" />\n    <glyph glyph-name=\"list-alt\" unicode=\"&#xf022;\" \nd=\"M464 416c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h416zM458 16c3.31152 0 6 2.68848 6 6v340c0 3.31152 -2.68848 6 -6 6h-404c-3.31152 0 -6 -2.68848 -6 -6v-340\nc0 -3.31152 2.68848 -6 6 -6h404zM416 108v-24c0 -6.62695 -5.37305 -12 -12 -12h-200c-6.62695 0 -12 5.37305 -12 12v24c0 6.62695 5.37305 12 12 12h200c6.62695 0 12 -5.37305 12 -12zM416 204v-24c0 -6.62695 -5.37305 -12 -12 -12h-200c-6.62695 0 -12 5.37305 -12 12\nv24c0 6.62695 5.37305 12 12 12h200c6.62695 0 12 -5.37305 12 -12zM416 300v-24c0 -6.62695 -5.37305 -12 -12 -12h-200c-6.62695 0 -12 5.37305 -12 12v24c0 6.62695 5.37305 12 12 12h200c6.62695 0 12 -5.37305 12 -12zM164 288c0 -19.8818 -16.1182 -36 -36 -36\ns-36 16.1182 -36 36s16.1182 36 36 36s36 -16.1182 36 -36zM164 192c0 -19.8818 -16.1182 -36 -36 -36s-36 16.1182 -36 36s16.1182 36 36 36s36 -16.1182 36 -36zM164 96c0 -19.8818 -16.1182 -36 -36 -36s-36 16.1182 -36 36s16.1182 36 36 36s36 -16.1182 36 -36z\" />\n    <glyph glyph-name=\"flag\" unicode=\"&#xf024;\" \nd=\"M336.174 368c35.4668 0 73.0195 12.6914 108.922 28.1797c31.6406 13.6514 66.9043 -9.65723 66.9043 -44.1162v-239.919c0 -16.1953 -8.1543 -31.3057 -21.7129 -40.1631c-26.5762 -17.3643 -70.0693 -39.9814 -128.548 -39.9814c-68.6084 0 -112.781 32 -161.913 32\nc-56.5674 0 -89.957 -11.2803 -127.826 -28.5566v-83.4434c0 -8.83691 -7.16309 -16 -16 -16h-16c-8.83691 0 -16 7.16309 -16 16v406.438c-14.3428 8.2998 -24 23.7979 -24 41.5615c0 27.5693 23.2422 49.71 51.2012 47.8965\nc22.9658 -1.49023 41.8662 -19.4717 44.4805 -42.3379c0.177734 -1.52441 0.321289 -4.00781 0.321289 -5.54199c0 -4.30176 -1.10352 -11.1035 -2.46289 -15.1846c22.418 8.68555 49.4199 15.168 80.7207 15.168c68.6084 0 112.781 -32 161.913 -32zM464 112v240\nc-31.5059 -14.6338 -84.5547 -32 -127.826 -32c-59.9111 0 -101.968 32 -161.913 32c-41.4365 0 -80.4766 -16.5879 -102.261 -32v-232c31.4473 14.5967 84.4648 24 127.826 24c59.9111 0 101.968 -32 161.913 -32c41.4365 0 80.4775 16.5879 102.261 32z\" />\n    <glyph glyph-name=\"bookmark\" unicode=\"&#xf02e;\" horiz-adv-x=\"384\" \nd=\"M336 448c26.5098 0 48 -21.4902 48 -48v-464l-192 112l-192 -112v464c0 26.5098 21.4902 48 48 48h288zM336 19.5703v374.434c0 3.31348 -2.68555 5.99609 -6 5.99609h-276c-3.31152 0 -6 -2.68848 -6 -6v-374.43l144 84z\" />\n    <glyph glyph-name=\"image\" unicode=\"&#xf03e;\" \nd=\"M464 384c26.5098 0 48 -21.4902 48 -48v-288c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h416zM458 48c3.31152 0 6 2.68848 6 6v276c0 3.31152 -2.68848 6 -6 6h-404c-3.31152 0 -6 -2.68848 -6 -6v-276\nc0 -3.31152 2.68848 -6 6 -6h404zM128 296c22.0908 0 40 -17.9092 40 -40s-17.9092 -40 -40 -40s-40 17.9092 -40 40s17.9092 40 40 40zM96 96v48l39.5137 39.5146c4.6875 4.68652 12.2852 4.68652 16.9717 0l39.5146 -39.5146l119.514 119.515\nc4.6875 4.68652 12.2852 4.68652 16.9717 0l87.5146 -87.5146v-80h-320z\" />\n    <glyph glyph-name=\"edit\" unicode=\"&#xf044;\" horiz-adv-x=\"576\" \nd=\"M402.3 103.1l32 32c5 5 13.7002 1.5 13.7002 -5.69922v-145.4c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h273.5c7.09961 0 10.7002 -8.59961 5.7002 -13.7002l-32 -32c-1.5 -1.5 -3.5 -2.2998 -5.7002 -2.2998h-241.5v-352h352\nv113.5c0 2.09961 0.799805 4.09961 2.2998 5.59961zM558.9 304.9l-262.601 -262.601l-90.3994 -10c-26.2002 -2.89941 -48.5 19.2002 -45.6006 45.6006l10 90.3994l262.601 262.601c22.8994 22.8994 59.8994 22.8994 82.6992 0l43.2002 -43.2002\nc22.9004 -22.9004 22.9004 -60 0.100586 -82.7998zM460.1 274l-58.0996 58.0996l-185.8 -185.899l-7.2998 -65.2998l65.2998 7.2998zM524.9 353.7l-43.2002 43.2002c-4.10059 4.09961 -10.7998 4.09961 -14.7998 0l-30.9004 -30.9004l58.0996 -58.0996l30.9004 30.8994\nc4 4.2002 4 10.7998 -0.0996094 14.9004z\" />\n    <glyph glyph-name=\"times-circle\" unicode=\"&#xf057;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM256 -8c110.5 0 200 89.5 200 200s-89.5 200 -200 200s-200 -89.5 -200 -200s89.5 -200 200 -200zM357.8 254.2l-62.2002 -62.2002l62.2002 -62.2002\nc4.7002 -4.7002 4.7002 -12.2998 0 -17l-22.5996 -22.5996c-4.7002 -4.7002 -12.2998 -4.7002 -17 0l-62.2002 62.2002l-62.2002 -62.2002c-4.7002 -4.7002 -12.2998 -4.7002 -17 0l-22.5996 22.5996c-4.7002 4.7002 -4.7002 12.2998 0 17l62.2002 62.2002l-62.2002 62.2002\nc-4.7002 4.7002 -4.7002 12.2998 0 17l22.5996 22.5996c4.7002 4.7002 12.2998 4.7002 17 0l62.2002 -62.2002l62.2002 62.2002c4.7002 4.7002 12.2998 4.7002 17 0l22.5996 -22.5996c4.7002 -4.7002 4.7002 -12.2998 0 -17z\" />\n    <glyph glyph-name=\"check-circle\" unicode=\"&#xf058;\" \nd=\"M256 440c136.967 0 248 -111.033 248 -248s-111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248zM256 392c-110.549 0 -200 -89.4678 -200 -200c0 -110.549 89.4678 -200 200 -200c110.549 0 200 89.4678 200 200c0 110.549 -89.4678 200 -200 200z\nM396.204 261.733c4.66699 -4.70508 4.63672 -12.3037 -0.0673828 -16.9717l-172.589 -171.204c-4.70508 -4.66797 -12.3027 -4.63672 -16.9697 0.0683594l-90.7812 91.5156c-4.66797 4.70605 -4.63672 12.3047 0.0683594 16.9717l22.7188 22.5361\nc4.70508 4.66699 12.3027 4.63574 16.9697 -0.0693359l59.792 -60.2773l141.353 140.216c4.70508 4.66797 12.3027 4.6377 16.9697 -0.0673828z\" />\n    <glyph glyph-name=\"question-circle\" unicode=\"&#xf059;\" \nd=\"M256 440c136.957 0 248 -111.083 248 -248c0 -136.997 -111.043 -248 -248 -248s-248 111.003 -248 248c0 136.917 111.043 248 248 248zM256 -8c110.569 0 200 89.4697 200 200c0 110.529 -89.5088 200 -200 200c-110.528 0 -200 -89.5049 -200 -200\nc0 -110.569 89.4678 -200 200 -200zM363.244 247.2c0 -67.0518 -72.4209 -68.084 -72.4209 -92.8633v-6.33691c0 -6.62695 -5.37305 -12 -12 -12h-45.6475c-6.62695 0 -12 5.37305 -12 12v8.65918c0 35.7451 27.1006 50.0342 47.5791 61.5156\nc17.5615 9.84473 28.3242 16.541 28.3242 29.5791c0 17.2461 -21.999 28.6934 -39.7842 28.6934c-23.1885 0 -33.8936 -10.9775 -48.9424 -29.9697c-4.05664 -5.11914 -11.46 -6.07031 -16.666 -2.12402l-27.8232 21.0986\nc-5.10742 3.87207 -6.25098 11.0654 -2.64453 16.3633c23.627 34.6934 53.7217 54.1846 100.575 54.1846c49.0713 0 101.45 -38.3037 101.45 -88.7998zM298 80c0 -23.1592 -18.8408 -42 -42 -42s-42 18.8408 -42 42s18.8408 42 42 42s42 -18.8408 42 -42z\" />\n    <glyph glyph-name=\"eye\" unicode=\"&#xf06e;\" horiz-adv-x=\"576\" \nd=\"M288 304c0.0927734 0 0.244141 0.000976562 0.336914 0.000976562c61.6641 0 111.71 -50.0469 111.71 -111.711c0 -61.6631 -50.0459 -111.71 -111.71 -111.71s-111.71 50.0469 -111.71 111.71c0 8.71289 1.95898 22.5781 4.37305 30.9502\nc6.93066 -3.94141 19.0273 -7.18457 27 -7.24023c30.9121 0 56 25.0879 56 56c-0.0556641 7.97266 -3.29883 20.0693 -7.24023 27c8.42383 2.62207 22.4189 4.8623 31.2402 5zM572.52 206.6c1.9209 -3.79883 3.47949 -10.3379 3.47949 -14.5947\ns-1.55859 -10.7959 -3.47949 -14.5947c-54.1992 -105.771 -161.59 -177.41 -284.52 -177.41s-230.29 71.5898 -284.52 177.4c-1.9209 3.79883 -3.47949 10.3379 -3.47949 14.5947s1.55859 10.7959 3.47949 14.5947c54.1992 105.771 161.59 177.41 284.52 177.41\ns230.29 -71.5898 284.52 -177.4zM288 48c98.6602 0 189.1 55 237.93 144c-48.8398 89 -139.27 144 -237.93 144s-189.09 -55 -237.93 -144c48.8398 -89 139.279 -144 237.93 -144z\" />\n    <glyph glyph-name=\"eye-slash\" unicode=\"&#xf070;\" horiz-adv-x=\"640\" \nd=\"M634 -23c3.31738 -2.65137 6.00977 -8.25098 6.00977 -12.498c0 -3.10449 -1.57715 -7.58984 -3.51953 -10.0117l-10 -12.4902c-2.65234 -3.31152 -8.24707 -6 -12.4902 -6c-3.09961 0 -7.58008 1.57227 -10 3.50977l-598 467.49\nc-3.31738 2.65137 -6.00977 8.25098 -6.00977 12.498c0 3.10449 1.57715 7.58984 3.51953 10.0117l10 12.4902c2.65234 3.31152 8.24707 6 12.4902 6c3.09961 0 7.58008 -1.57227 10 -3.50977zM296.79 301.53c6.33496 1.35059 16.7324 2.45801 23.21 2.46973\nc60.4805 0 109.36 -47.9102 111.58 -107.85zM343.21 82.46c-6.33496 -1.34375 -16.7334 -2.44629 -23.21 -2.45996c-60.4697 0 -109.35 47.9102 -111.58 107.84zM320 336c-19.8799 0 -39.2803 -2.7998 -58.2197 -7.09961l-46.4102 36.29\nc32.9199 11.8096 67.9297 18.8096 104.63 18.8096c122.93 0 230.29 -71.5898 284.57 -177.4c1.91992 -3.79883 3.47949 -10.3379 3.47949 -14.5947s-1.55957 -10.7959 -3.47949 -14.5947c-11.7197 -22.7598 -35.4189 -56.4092 -52.9004 -75.1104l-37.7402 29.5\nc14.333 15.0156 34.0449 41.9854 44 60.2002c-48.8398 89 -139.279 144 -237.93 144zM320 48c19.8896 0 39.2803 2.7998 58.2197 7.08984l46.4102 -36.2803c-32.9199 -11.7598 -67.9297 -18.8096 -104.63 -18.8096c-122.92 0 -230.28 71.5898 -284.51 177.4\nc-1.9209 3.79883 -3.47949 10.3379 -3.47949 14.5947s1.55859 10.7959 3.47949 14.5947c11.7168 22.7568 35.4111 56.4014 52.8896 75.1006l37.7402 -29.5c-14.3467 -15.0107 -34.0811 -41.9756 -44.0498 -60.1904c48.8496 -89 139.279 -144 237.93 -144z\" />\n    <glyph glyph-name=\"calendar-alt\" unicode=\"&#xf073;\" horiz-adv-x=\"448\" \nd=\"M148 160h-40c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12zM256 172c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h40\nc6.59961 0 12 -5.40039 12 -12v-40zM352 172c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40zM256 76c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v40\nc0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40zM160 76c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40zM352 76c0 -6.59961 -5.40039 -12 -12 -12h-40\nc-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40zM448 336v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h48v52c0 6.59961 5.40039 12 12 12h40\nc6.59961 0 12 -5.40039 12 -12v-52h128v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h48c26.5 0 48 -21.5 48 -48zM400 -10v298h-352v-298c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z\" />\n    <glyph glyph-name=\"comment\" unicode=\"&#xf075;\" \nd=\"M256 416c141.4 0 256 -93.0996 256 -208s-114.6 -208 -256 -208c-32.7998 0 -64 5.2002 -92.9004 14.2998c-29.0996 -20.5996 -77.5996 -46.2998 -139.1 -46.2998c-9.59961 0 -18.2998 5.7002 -22.0996 14.5c-3.80078 8.7998 -2 19 4.59961 26\nc0.5 0.400391 31.5 33.7998 46.4004 73.2002c-33 35.0996 -52.9004 78.7002 -52.9004 126.3c0 114.9 114.6 208 256 208zM256 48c114.7 0 208 71.7998 208 160s-93.2998 160 -208 160s-208 -71.7998 -208 -160c0 -42.2002 21.7002 -74.0996 39.7998 -93.4004\nl20.6006 -21.7998l-10.6006 -28.0996c-5.5 -14.5 -12.5996 -28.1006 -19.8994 -40.2002c23.5996 7.59961 43.1992 18.9004 57.5 29l19.5 13.7998l22.6992 -7.2002c25.3008 -8 51.7002 -12.0996 78.4004 -12.0996z\" />\n    <glyph glyph-name=\"folder\" unicode=\"&#xf07b;\" \nd=\"M464 320c26.5098 0 48 -21.4902 48 -48v-224c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h146.74c8.49023 0 16.6299 -3.37012 22.6299 -9.37012l54.6299 -54.6299h192zM464 48v224h-198.62\nc-8.49023 0 -16.6299 3.37012 -22.6299 9.37012l-54.6299 54.6299h-140.12v-288h416z\" />\n    <glyph glyph-name=\"folder-open\" unicode=\"&#xf07c;\" horiz-adv-x=\"576\" \nd=\"M527.9 224c37.6992 0 60.6992 -41.5 40.6992 -73.4004l-79.8994 -128c-8.7998 -14.0996 -24.2002 -22.5996 -40.7002 -22.5996h-400c-26.5 0 -48 21.5 -48 48v288c0 26.5 21.5 48 48 48h160l64 -64h160c26.5 0 48 -21.5 48 -48v-48h47.9004zM48 330v-233.4l62.9004 104.2\nc8.69922 14.4004 24.2998 23.2002 41.0996 23.2002h280v42c0 3.2998 -2.7002 6 -6 6h-173.9l-64 64h-134.1c-3.2998 0 -6 -2.7002 -6 -6zM448 48l80 128h-378.8l-77.2002 -128h376z\" />\n    <glyph glyph-name=\"chart-bar\" unicode=\"&#xf080;\" \nd=\"M396.8 96c-6.39941 0 -12.7998 6.40039 -12.7998 12.7998v230.4c0 6.39941 6.40039 12.7998 12.7998 12.7998h22.4004c6.39941 0 12.7998 -6.40039 12.7998 -12.7998v-230.4c0 -6.39941 -6.40039 -12.7998 -12.7998 -12.7998h-22.4004zM204.8 96\nc-6.39941 0 -12.7998 6.40039 -12.7998 12.7998v198.4c0 6.39941 6.40039 12.7998 12.7998 12.7998h22.4004c6.39941 0 12.7998 -6.40039 12.7998 -12.7998v-198.4c0 -6.39941 -6.40039 -12.7998 -12.7998 -12.7998h-22.4004zM300.8 96\nc-6.39941 0 -12.7998 6.40039 -12.7998 12.7998v134.4c0 6.39941 6.40039 12.7998 12.7998 12.7998h22.4004c6.39941 0 12.7998 -6.40039 12.7998 -12.7998v-134.4c0 -6.39941 -6.40039 -12.7998 -12.7998 -12.7998h-22.4004zM496 48c8.83984 0 16 -7.16016 16 -16v-16\nc0 -8.83984 -7.16016 -16 -16 -16h-464c-17.6699 0 -32 14.3301 -32 32v336c0 8.83984 7.16016 16 16 16h16c8.83984 0 16 -7.16016 16 -16v-320h448zM108.8 96c-6.39941 0 -12.7998 6.40039 -12.7998 12.7998v70.4004c0 6.39941 6.40039 12.7998 12.7998 12.7998h22.4004\nc6.39941 0 12.7998 -6.40039 12.7998 -12.7998v-70.4004c0 -6.39941 -6.40039 -12.7998 -12.7998 -12.7998h-22.4004z\" />\n    <glyph glyph-name=\"comments\" unicode=\"&#xf086;\" horiz-adv-x=\"576\" \nd=\"M532 61.7998c15.2998 -30.7002 37.4004 -54.5 37.7998 -54.7998c6.2998 -6.7002 8 -16.5 4.40039 -25c-3.7002 -8.5 -12 -14 -21.2002 -14c-53.5996 0 -96.7002 20.2998 -125.2 38.7998c-19 -4.39941 -39 -6.7998 -59.7998 -6.7998\nc-86.2002 0 -159.9 40.4004 -191.3 97.7998c-9.7002 1.2002 -19.2002 2.7998 -28.4004 4.90039c-28.5 -18.6006 -71.7002 -38.7998 -125.2 -38.7998c-9.19922 0 -17.5996 5.5 -21.1992 14c-3.7002 8.5 -1.90039 18.2998 4.39941 25\nc0.400391 0.399414 22.4004 24.1992 37.7002 54.8994c-27.5 27.2002 -44 61.2002 -44 98.2002c0 88.4004 93.0996 160 208 160c86.2998 0 160.3 -40.5 191.8 -98.0996c99.7002 -11.8008 176.2 -77.9004 176.2 -157.9c0 -37.0996 -16.5 -71.0996 -44 -98.2002zM139.2 154.1\nl19.7998 -4.5c16 -3.69922 32.5 -5.59961 49 -5.59961c86.7002 0 160 51.2998 160 112s-73.2998 112 -160 112s-160 -51.2998 -160 -112c0 -28.7002 16.2002 -50.5996 29.7002 -64l24.7998 -24.5l-15.5 -31.0996c-2.59961 -5.10059 -5.2998 -10.1006 -8 -14.8008\nc14.5996 5.10059 29 12.3008 43.0996 21.4004zM498.3 96c13.5 13.4004 29.7002 35.2998 29.7002 64c0 49.2002 -48.2998 91.5 -112.7 106c0.299805 -3.2998 0.700195 -6.59961 0.700195 -10c0 -80.9004 -78 -147.5 -179.3 -158.3\nc29.0996 -29.6006 77.2998 -49.7002 131.3 -49.7002c16.5 0 33 1.90039 49 5.59961l19.9004 4.60059l17.0996 -11.1006c14.0996 -9.09961 28.5 -16.2998 43.0996 -21.3994c-2.69922 4.7002 -5.39941 9.7002 -8 14.7998l-15.5 31.0996z\" />\n    <glyph glyph-name=\"star-half\" unicode=\"&#xf089;\" horiz-adv-x=\"576\" \nd=\"M288 62.7002v-54.2998l-130.7 -68.6006c-23.3994 -12.2998 -50.8994 7.60059 -46.3994 33.7002l25 145.5l-105.7 103c-19 18.5 -8.5 50.7998 17.7002 54.5996l146.1 21.2002l65.2998 132.4c5.90039 11.8994 17.2998 17.7998 28.7002 17.7998v-68.0996l-62.2002 -126\nl-139 -20.2002l100.601 -98l-23.7002 -138.4z\" />\n    <glyph glyph-name=\"lemon\" unicode=\"&#xf094;\" \nd=\"M484.112 420.111c28.1221 -28.123 35.9434 -68.0039 19.0215 -97.0547c-23.0576 -39.584 50.1436 -163.384 -82.3311 -295.86c-132.301 -132.298 -256.435 -59.3594 -295.857 -82.3291c-29.0459 -16.917 -68.9219 -9.11426 -97.0576 19.0205\nc-28.1221 28.1221 -35.9434 68.0029 -19.0215 97.0547c23.0566 39.5859 -50.1436 163.386 82.3301 295.86c132.308 132.309 256.407 59.3496 295.862 82.332c29.0498 16.9219 68.9307 9.09863 97.0537 -19.0234zM461.707 347.217\nc13.5166 23.2031 -27.7578 63.7314 -50.4883 50.4912c-66.6025 -38.7939 -165.646 45.5898 -286.081 -74.8457c-120.444 -120.445 -36.0449 -219.472 -74.8447 -286.08c-13.542 -23.2471 27.8145 -63.6953 50.4932 -50.4883\nc66.6006 38.7949 165.636 -45.5996 286.076 74.8428c120.444 120.445 36.0449 219.472 74.8447 286.08zM291.846 338.481c1.37012 -10.96 -6.40332 -20.957 -17.3643 -22.3271c-54.8467 -6.85547 -135.779 -87.7871 -142.636 -142.636\nc-1.37305 -10.9883 -11.3984 -18.7334 -22.3262 -17.3643c-10.9609 1.37012 -18.7344 11.3652 -17.3643 22.3262c9.16211 73.2852 104.167 168.215 177.364 177.364c10.9531 1.36816 20.9561 -6.40234 22.3262 -17.3633z\" />\n    <glyph glyph-name=\"credit-card\" unicode=\"&#xf09d;\" horiz-adv-x=\"576\" \nd=\"M527.9 416c26.5996 0 48.0996 -21.5 48.0996 -48v-352c0 -26.5 -21.5 -48 -48.0996 -48h-479.801c-26.5996 0 -48.0996 21.5 -48.0996 48v352c0 26.5 21.5 48 48.0996 48h479.801zM54.0996 368c-3.2998 0 -6 -2.7002 -6 -6v-42h479.801v42c0 3.2998 -2.7002 6 -6 6\nh-467.801zM521.9 16c3.2998 0 6 2.7002 6 6v170h-479.801v-170c0 -3.2998 2.7002 -6 6 -6h467.801zM192 116v-40c0 -6.59961 -5.40039 -12 -12 -12h-72c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h72c6.59961 0 12 -5.40039 12 -12zM384 116v-40\nc0 -6.59961 -5.40039 -12 -12 -12h-136c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h136c6.59961 0 12 -5.40039 12 -12z\" />\n    <glyph glyph-name=\"hdd\" unicode=\"&#xf0a0;\" horiz-adv-x=\"576\" \nd=\"M567.403 212.358c5.59668 -8.04688 8.59668 -17.6113 8.59668 -27.4121v-136.946c0 -26.5098 -21.4902 -48 -48 -48h-480c-26.5098 0 -48 21.4902 -48 48v136.946c0 8.30957 3.85156 20.5898 8.59668 27.4121l105.08 151.053\nc7.90625 11.3652 25.5596 20.5889 39.4033 20.5889h0.000976562h269.838h0.000976562c13.8438 0 31.4971 -9.22363 39.4033 -20.5889zM153.081 336l-77.9131 -112h425.664l-77.9131 112h-269.838zM528 48v128h-480v-128h480zM496 112c0 -17.6729 -14.3271 -32 -32 -32\ns-32 14.3271 -32 32s14.3271 32 32 32s32 -14.3271 32 -32zM400 112c0 -17.6729 -14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32s32 -14.3271 32 -32z\" />\n    <glyph glyph-name=\"hand-point-right\" unicode=\"&#xf0a4;\" \nd=\"M428.8 310.4c45.0996 0 83.2002 -38.1016 83.2002 -83.2002c0 -45.6162 -37.7646 -83.2002 -83.2002 -83.2002h-35.6475c-1.41602 -6.36719 -4.96875 -16.252 -7.92969 -22.0645c2.50586 -22.0059 -3.50293 -44.9775 -15.9844 -62.791\nc-1.14062 -52.4863 -37.3984 -91.1445 -99.9404 -91.1445h-21.2988c-60.0635 0 -98.5117 40 -127.2 40h-2.67871c-5.74707 -4.95215 -13.5361 -8 -22.1201 -8h-64c-17.6729 0 -32 12.8936 -32 28.7998v230.4c0 15.9062 14.3271 28.7998 32 28.7998h64.001\nc8.58398 0 16.373 -3.04785 22.1201 -8h2.67871c6.96387 0 14.8623 6.19336 30.1816 23.6689l0.128906 0.148438l0.130859 0.145508c8.85645 9.93652 18.1162 20.8398 25.8506 33.2529c18.7051 30.2471 30.3936 78.7842 75.707 78.7842c56.9277 0 92 -35.2861 92 -83.2002\nv-0.0839844c0 -6.21777 -0.974609 -16.2148 -2.17578 -22.3154h86.1768zM428.8 192c18.9756 0 35.2002 16.2246 35.2002 35.2002c0 18.7002 -16.7754 35.2002 -35.2002 35.2002h-158.399c0 17.3242 26.3994 35.1992 26.3994 70.3994c0 26.4004 -20.625 35.2002 -44 35.2002\nc-8.79395 0 -20.4443 -32.7119 -34.9258 -56.0996c-9.07422 -14.5752 -19.5244 -27.2256 -30.7988 -39.875c-16.1094 -18.374 -33.8359 -36.6328 -59.0752 -39.5967v-176.753c42.79 -3.7627 74.5088 -39.6758 120 -39.6758h21.2988\nc40.5244 0 57.124 22.1973 50.6006 61.3252c14.6113 8.00098 24.1514 33.9785 12.9248 53.625c19.3652 18.2246 17.7871 46.3809 4.9502 61.0498h91.0254zM88 64c0 13.2549 -10.7451 24 -24 24s-24 -10.7451 -24 -24s10.7451 -24 24 -24s24 10.7451 24 24z\" />\n    <glyph glyph-name=\"hand-point-left\" unicode=\"&#xf0a5;\" \nd=\"M0 227.2c0 45.0986 38.1006 83.2002 83.2002 83.2002h86.1758c-1.3623 6.91016 -2.17578 14.374 -2.17578 22.3994c0 47.9141 35.0723 83.2002 92 83.2002c45.3135 0 57.002 -48.5371 75.7061 -78.7852c7.73438 -12.4121 16.9951 -23.3154 25.8506 -33.2529\nl0.130859 -0.145508l0.128906 -0.148438c15.3213 -17.4746 23.2197 -23.668 30.1836 -23.668h2.67871c5.74707 4.95215 13.5361 8 22.1201 8h64c17.6729 0 32 -12.8936 32 -28.7998v-230.4c0 -15.9062 -14.3271 -28.7998 -32 -28.7998h-64\nc-8.58398 0 -16.373 3.04785 -22.1201 8h-2.67871c-28.6885 0 -67.1367 -40 -127.2 -40h-21.2988c-62.542 0 -98.8008 38.6582 -99.9404 91.1445c-12.4814 17.8135 -18.4922 40.7852 -15.9844 62.791c-2.96094 5.8125 -6.51367 15.6973 -7.92969 22.0645h-35.6465\nc-45.4355 0 -83.2002 37.584 -83.2002 83.2002zM48 227.2c0 -18.9756 16.2246 -35.2002 35.2002 -35.2002h91.0244c-12.8369 -14.6689 -14.415 -42.8252 4.9502 -61.0498c-11.2256 -19.6465 -1.68652 -45.624 12.9248 -53.625\nc-6.52246 -39.1279 10.0771 -61.3252 50.6016 -61.3252h21.2988c45.4912 0 77.21 35.9131 120 39.6768v176.752c-25.2393 2.96289 -42.9658 21.2227 -59.0752 39.5967c-11.2744 12.6494 -21.7246 25.2998 -30.7988 39.875\nc-14.4814 23.3877 -26.1318 56.0996 -34.9258 56.0996c-23.375 0 -44 -8.7998 -44 -35.2002c0 -35.2002 26.3994 -53.0752 26.3994 -70.3994h-158.399c-18.4248 0 -35.2002 -16.5 -35.2002 -35.2002zM448 88c-13.2549 0 -24 -10.7451 -24 -24s10.7451 -24 24 -24\ns24 10.7451 24 24s-10.7451 24 -24 24z\" />\n    <glyph glyph-name=\"hand-point-up\" unicode=\"&#xf0a6;\" horiz-adv-x=\"448\" \nd=\"M105.6 364.8c0 45.0996 38.1016 83.2002 83.2002 83.2002c45.6162 0 83.2002 -37.7646 83.2002 -83.2002v-35.6465c6.36719 -1.41602 16.252 -4.96875 22.0645 -7.92969c22.0059 2.50684 44.9775 -3.50293 62.791 -15.9844\nc52.4863 -1.14062 91.1445 -37.3984 91.1445 -99.9404v-21.2988c0 -60.0635 -40 -98.5117 -40 -127.2v-2.67871c4.95215 -5.74707 8 -13.5361 8 -22.1201v-64c0 -17.6729 -12.8936 -32 -28.7998 -32h-230.4c-15.9062 0 -28.7998 14.3271 -28.7998 32v64\nc0 8.58398 3.04785 16.373 8 22.1201v2.67871c0 6.96387 -6.19336 14.8623 -23.6689 30.1816l-0.148438 0.128906l-0.145508 0.130859c-9.93652 8.85645 -20.8398 18.1162 -33.2529 25.8506c-30.2471 18.7051 -78.7842 30.3936 -78.7842 75.707\nc0 56.9277 35.2861 92 83.2002 92h0.0839844c6.21777 0 16.2148 -0.974609 22.3154 -2.17578v86.1768zM224 364.8c0 18.9756 -16.2246 35.2002 -35.2002 35.2002c-18.7002 0 -35.2002 -16.7754 -35.2002 -35.2002v-158.399c-17.3242 0 -35.1992 26.3994 -70.3994 26.3994\nc-26.4004 0 -35.2002 -20.625 -35.2002 -44c0 -8.79395 32.7119 -20.4443 56.0996 -34.9258c14.5752 -9.07422 27.2256 -19.5244 39.875 -30.7988c18.374 -16.1094 36.6328 -33.8359 39.5967 -59.0752h176.753c3.7627 42.79 39.6758 74.5088 39.6758 120v21.2988\nc0 40.5244 -22.1973 57.124 -61.3252 50.6006c-8.00098 14.6113 -33.9785 24.1514 -53.625 12.9248c-18.2246 19.3652 -46.3809 17.7871 -61.0498 4.9502v91.0254zM352 24c-13.2549 0 -24 -10.7451 -24 -24s10.7451 -24 24 -24s24 10.7451 24 24s-10.7451 24 -24 24z\" />\n    <glyph glyph-name=\"hand-point-down\" unicode=\"&#xf0a7;\" horiz-adv-x=\"448\" \nd=\"M188.8 -64c-45.0986 0 -83.2002 38.1006 -83.2002 83.2002v86.1758c-6.91016 -1.3623 -14.374 -2.17578 -22.3994 -2.17578c-47.9141 0 -83.2002 35.0723 -83.2002 92c0 45.3135 48.5371 57.002 78.7852 75.707c12.4121 7.73438 23.3154 16.9951 33.2529 25.8506\nl0.145508 0.130859l0.148438 0.128906c17.4746 15.3213 23.668 23.2197 23.668 30.1836v2.67871c-4.95215 5.74707 -8 13.5361 -8 22.1201v64c0 17.6729 12.8936 32 28.7998 32h230.4c15.9062 0 28.7998 -14.3271 28.7998 -32v-64.001\nc0 -8.58398 -3.04785 -16.373 -8 -22.1201v-2.67871c0 -28.6885 40 -67.1367 40 -127.2v-21.2988c0 -62.542 -38.6582 -98.8008 -91.1445 -99.9404c-17.8135 -12.4814 -40.7852 -18.4922 -62.791 -15.9844c-5.8125 -2.96094 -15.6973 -6.51367 -22.0645 -7.92969v-35.6465\nc0 -45.4355 -37.584 -83.2002 -83.2002 -83.2002zM188.8 -16c18.9756 0 35.2002 16.2246 35.2002 35.2002v91.0244c14.6689 -12.8369 42.8252 -14.415 61.0498 4.9502c19.6465 -11.2256 45.624 -1.68652 53.625 12.9248c39.1279 -6.52246 61.3252 10.0771 61.3252 50.6016\nv21.2988c0 45.4912 -35.9131 77.21 -39.6768 120h-176.752c-2.96289 -25.2393 -21.2227 -42.9658 -39.5967 -59.0752c-12.6494 -11.2744 -25.2998 -21.7246 -39.875 -30.7988c-23.3877 -14.4814 -56.0996 -26.1318 -56.0996 -34.9258c0 -23.375 8.7998 -44 35.2002 -44\nc35.2002 0 53.0752 26.3994 70.3994 26.3994v-158.399c0 -18.4248 16.5 -35.2002 35.2002 -35.2002zM328 384c0 -13.2549 10.7451 -24 24 -24s24 10.7451 24 24s-10.7451 24 -24 24s-24 -10.7451 -24 -24z\" />\n    <glyph glyph-name=\"copy\" unicode=\"&#xf0c5;\" horiz-adv-x=\"448\" \nd=\"M433.941 382.059c7.75977 -7.75977 14.0586 -22.9658 14.0586 -33.9404v-268.118c0 -26.5098 -21.4902 -48 -48 -48h-80v-48c0 -26.5098 -21.4902 -48 -48 -48h-224c-26.5098 0 -48 21.4902 -48 48v320c0 26.5098 21.4902 48 48 48h80v48c0 26.5098 21.4902 48 48 48\nh172.118c10.9746 0 26.1807 -6.29883 33.9404 -14.0586zM266 -16c3.31152 0 6 2.68848 6 6v42h-96c-26.5098 0 -48 21.4902 -48 48v224h-74c-3.31152 0 -6 -2.68848 -6 -6v-308c0 -3.31152 2.68848 -6 6 -6h212zM394 80c3.31152 0 6 2.68848 6 6v202h-88\nc-13.2549 0 -24 10.7451 -24 24v88h-106c-3.31152 0 -6 -2.68848 -6 -6v-308c0 -3.31152 2.68848 -6 6 -6h212zM400 336v9.63184v0.000976562c0 1.37207 -0.787109 3.27246 -1.75684 4.24219l-48.3682 48.3682c-1.12598 1.125 -2.65234 1.75684 -4.24316 1.75684h-9.63184\nv-64h64z\" />\n    <glyph glyph-name=\"save\" unicode=\"&#xf0c7;\" horiz-adv-x=\"448\" \nd=\"M433.941 318.059c7.75977 -7.75977 14.0586 -22.9658 14.0586 -33.9404v-268.118c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h268.118c10.9746 0 26.1807 -6.29883 33.9404 -14.0586zM272 368h-128v-80h128v80\nzM394 16c3.31152 0 6 2.68848 6 6v259.632v0.000976562c0 1.37207 -0.787109 3.27246 -1.75684 4.24219l-78.2432 78.2432v-100.118c0 -13.2549 -10.7451 -24 -24 -24h-176c-13.2549 0 -24 10.7451 -24 24v104h-42c-3.31152 0 -6 -2.68848 -6 -6v-340\nc0 -3.31152 2.68848 -6 6 -6h340zM224 216c48.5234 0 88 -39.4766 88 -88s-39.4766 -88 -88 -88s-88 39.4766 -88 88s39.4766 88 88 88zM224 88c22.0557 0 40 17.9443 40 40s-17.9443 40 -40 40s-40 -17.9443 -40 -40s17.9443 -40 40 -40z\" />\n    <glyph glyph-name=\"square\" unicode=\"&#xf0c8;\" horiz-adv-x=\"448\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM394 16c3.2998 0 6 2.7002 6 6v340c0 3.2998 -2.7002 6 -6 6h-340c-3.2998 0 -6 -2.7002 -6 -6v-340c0 -3.2998 2.7002 -6 6 -6h340z\" />\n    <glyph glyph-name=\"envelope\" unicode=\"&#xf0e0;\" \nd=\"M464 384c26.5098 0 48 -21.4902 48 -48v-288c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h416zM464 336h-416v-40.8047c22.4248 -18.2627 58.1797 -46.6602 134.587 -106.49\nc16.834 -13.2422 50.2051 -45.0762 73.4131 -44.7012c23.2119 -0.371094 56.5723 31.4541 73.4131 44.7012c76.4189 59.8389 112.165 88.2305 134.587 106.49v40.8047zM48 48h416v185.601c-22.915 -18.252 -55.4189 -43.8691 -104.947 -82.6523\nc-22.5439 -17.748 -60.3359 -55.1787 -103.053 -54.9473c-42.9277 -0.231445 -81.2051 37.75 -103.062 54.9551c-49.5293 38.7842 -82.0244 64.3945 -104.938 82.6455v-185.602z\" />\n    <glyph glyph-name=\"lightbulb\" unicode=\"&#xf0eb;\" horiz-adv-x=\"352\" \nd=\"M176 368c8.83984 0 16 -7.16016 16 -16s-7.16016 -16 -16 -16c-35.2803 0 -64 -28.7002 -64 -64c0 -8.83984 -7.16016 -16 -16 -16s-16 7.16016 -16 16c0 52.9404 43.0596 96 96 96zM96.0596 -11.1699l-0.0400391 43.1797h159.961l-0.0507812 -43.1797\nc-0.00976562 -3.13965 -0.939453 -6.21973 -2.67969 -8.83984l-24.5098 -36.8398c-2.95996 -4.45996 -7.95996 -7.14062 -13.3203 -7.14062h-78.8496c-5.35059 0 -10.3506 2.68066 -13.3203 7.14062l-24.5098 36.8398c-1.75 2.62012 -2.68066 5.68945 -2.68066 8.83984z\nM176 448c97.2002 0 176 -78.7998 176 -176c0 -44.3701 -16.4502 -84.8496 -43.5498 -115.79c-16.6406 -18.9795 -42.7402 -58.79 -52.4199 -92.1602v-0.0498047h-48v0.0996094c0.00390625 4.04199 0.999023 10.4482 2.21973 14.3008\nc5.67969 17.9893 22.9902 64.8496 62.0996 109.46c20.4102 23.29 31.6504 53.1699 31.6504 84.1396c0 70.5801 -57.4199 128 -128 128c-68.2803 0 -128.15 -54.3604 -127.95 -128c0.0898438 -30.9902 11.0703 -60.71 31.6104 -84.1396\nc39.3496 -44.9004 56.5801 -91.8604 62.1699 -109.67c1.42969 -4.56055 2.13965 -9.30078 2.15039 -14.0703v-0.120117h-48v0.0595703c-9.68066 33.3604 -35.7803 73.1709 -52.4209 92.1602c-27.1094 30.9307 -43.5596 71.4102 -43.5596 115.78\nc0 93.0303 73.7197 176 176 176z\" />\n    <glyph glyph-name=\"bell\" unicode=\"&#xf0f3;\" horiz-adv-x=\"448\" \nd=\"M439.39 85.71c6 -6.44043 8.66016 -14.1602 8.61035 -21.71c-0.0996094 -16.4004 -12.9805 -32 -32.0996 -32h-383.801c-19.1191 0 -31.9893 15.5996 -32.0996 32c-0.0498047 7.5498 2.61035 15.2598 8.61035 21.71c19.3193 20.7598 55.4697 51.9902 55.4697 154.29\nc0 77.7002 54.4795 139.9 127.939 155.16v20.8398c0 17.6699 14.3203 32 31.9805 32s31.9805 -14.3301 31.9805 -32v-20.8398c73.46 -15.2598 127.939 -77.46 127.939 -155.16c0 -102.3 36.1504 -133.53 55.4697 -154.29zM67.5303 80h312.939\nc-21.2197 27.96 -44.4199 74.3203 -44.5293 159.42c0 0.200195 0.0595703 0.379883 0.0595703 0.580078c0 61.8604 -50.1396 112 -112 112s-112 -50.1396 -112 -112c0 -0.200195 0.0595703 -0.379883 0.0595703 -0.580078\nc-0.109375 -85.0898 -23.3096 -131.45 -44.5293 -159.42zM224 -64c-35.3203 0 -63.9697 28.6504 -63.9697 64h127.939c0 -35.3496 -28.6494 -64 -63.9697 -64z\" />\n    <glyph glyph-name=\"hospital\" unicode=\"&#xf0f8;\" horiz-adv-x=\"448\" \nd=\"M128 204v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12zM268 192c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40\nc0 -6.62695 -5.37305 -12 -12 -12h-40zM192 108c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40zM268 96c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40\nc6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-40zM448 -28v-36h-448v36c0 6.62695 5.37305 12 12 12h19.5v378.965c0 11.6172 10.7451 21.0352 24 21.0352h88.5v40c0 13.2549 10.7451 24 24 24h112c13.2549 0 24 -10.7451 24 -24v-40h88.5\nc13.2549 0 24 -9.41797 24 -21.0352v-378.965h19.5c6.62695 0 12 -5.37305 12 -12zM79.5 -15h112.5v67c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-67h112.5v351h-64.5v-24c0 -13.2549 -10.7451 -24 -24 -24h-112c-13.2549 0 -24 10.7451 -24 24v24\nh-64.5v-351zM266 384h-26v26c0 3.31152 -2.68848 6 -6 6h-20c-3.31152 0 -6 -2.68848 -6 -6v-26h-26c-3.31152 0 -6 -2.68848 -6 -6v-20c0 -3.31152 2.68848 -6 6 -6h26v-26c0 -3.31152 2.68848 -6 6 -6h20c3.31152 0 6 2.68848 6 6v26h26c3.31152 0 6 2.68848 6 6v20\nc0 3.31152 -2.68848 6 -6 6z\" />\n    <glyph glyph-name=\"plus-square\" unicode=\"&#xf0fe;\" horiz-adv-x=\"448\" \nd=\"M352 208v-32c0 -6.59961 -5.40039 -12 -12 -12h-88v-88c0 -6.59961 -5.40039 -12 -12 -12h-32c-6.59961 0 -12 5.40039 -12 12v88h-88c-6.59961 0 -12 5.40039 -12 12v32c0 6.59961 5.40039 12 12 12h88v88c0 6.59961 5.40039 12 12 12h32c6.59961 0 12 -5.40039 12 -12\nv-88h88c6.59961 0 12 -5.40039 12 -12zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM400 22v340c0 3.2998 -2.7002 6 -6 6h-340c-3.2998 0 -6 -2.7002 -6 -6v-340\nc0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z\" />\n    <glyph glyph-name=\"circle\" unicode=\"&#xf111;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM256 -8c110.5 0 200 89.5 200 200s-89.5 200 -200 200s-200 -89.5 -200 -200s89.5 -200 200 -200z\" />\n    <glyph glyph-name=\"smile\" unicode=\"&#xf118;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM168 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32\ns32 -14.2998 32 -32s-14.2998 -32 -32 -32zM328 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32zM332 135.4c8.5 10.1992 23.7002 11.5 33.7998 3.09961c10.2002 -8.5 11.6006 -23.5996 3.10059 -33.7998\nc-30 -36 -74.1006 -56.6006 -120.9 -56.6006s-90.9004 20.6006 -120.9 56.6006c-8.39941 10.2002 -7.09961 25.2998 3.10059 33.7998c10.0996 8.40039 25.2998 7.09961 33.7998 -3.09961c20.7998 -25.1006 51.5 -39.4004 84 -39.4004s63.2002 14.4004 84 39.4004z\" />\n    <glyph glyph-name=\"frown\" unicode=\"&#xf119;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM168 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32\ns32 -14.2998 32 -32s-14.2998 -32 -32 -32zM328 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32zM248 144c40.2002 0 78 -17.7002 103.8 -48.5996c8.40039 -10.2002 7.10059 -25.3008 -3.09961 -33.8008\nc-10.7002 -8.7998 -25.7002 -6.59961 -33.7998 3.10059c-16.6006 20 -41 31.3994 -66.9004 31.3994s-50.2998 -11.5 -66.9004 -31.3994c-8.5 -10.2002 -23.5996 -11.5 -33.7998 -3.10059c-10.2002 8.5 -11.5996 23.6006 -3.09961 33.8008\nc25.7998 30.8994 63.5996 48.5996 103.8 48.5996z\" />\n    <glyph glyph-name=\"meh\" unicode=\"&#xf11a;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM168 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32\ns32 -14.2998 32 -32s-14.2998 -32 -32 -32zM328 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32zM336 128c13.2002 0 24 -10.7998 24 -24s-10.7998 -24 -24 -24h-176c-13.2002 0 -24 10.7998 -24 24s10.7998 24 24 24h176z\n\" />\n    <glyph glyph-name=\"keyboard\" unicode=\"&#xf11c;\" horiz-adv-x=\"576\" \nd=\"M528 384c26.5098 0 48 -21.4902 48 -48v-288c0 -26.5098 -21.4902 -48 -48 -48h-480c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h480zM536 48v288c0 4.41113 -3.58887 8 -8 8h-480c-4.41113 0 -8 -3.58887 -8 -8v-288c0 -4.41113 3.58887 -8 8 -8\nh480c4.41113 0 8 3.58887 8 8zM170 178c0 -6.62695 -5.37305 -12 -12 -12h-28c-6.62695 0 -12 5.37305 -12 12v28c0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM266 178c0 -6.62695 -5.37305 -12 -12 -12h-28c-6.62695 0 -12 5.37305 -12 12v28\nc0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM362 178c0 -6.62695 -5.37305 -12 -12 -12h-28c-6.62695 0 -12 5.37305 -12 12v28c0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM458 178c0 -6.62695 -5.37305 -12 -12 -12h-28\nc-6.62695 0 -12 5.37305 -12 12v28c0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM122 96c0 -6.62695 -5.37305 -12 -12 -12h-28c-6.62695 0 -12 5.37305 -12 12v28c0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM506 96\nc0 -6.62695 -5.37305 -12 -12 -12h-28c-6.62695 0 -12 5.37305 -12 12v28c0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM122 260c0 -6.62695 -5.37305 -12 -12 -12h-28c-6.62695 0 -12 5.37305 -12 12v28c0 6.62695 5.37305 12 12 12h28\nc6.62695 0 12 -5.37305 12 -12v-28zM218 260c0 -6.62695 -5.37305 -12 -12 -12h-28c-6.62695 0 -12 5.37305 -12 12v28c0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM314 260c0 -6.62695 -5.37305 -12 -12 -12h-28c-6.62695 0 -12 5.37305 -12 12v28\nc0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM410 260c0 -6.62695 -5.37305 -12 -12 -12h-28c-6.62695 0 -12 5.37305 -12 12v28c0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM506 260c0 -6.62695 -5.37305 -12 -12 -12h-28\nc-6.62695 0 -12 5.37305 -12 12v28c0 6.62695 5.37305 12 12 12h28c6.62695 0 12 -5.37305 12 -12v-28zM408 102c0 -6.62695 -5.37305 -12 -12 -12h-216c-6.62695 0 -12 5.37305 -12 12v16c0 6.62695 5.37305 12 12 12h216c6.62695 0 12 -5.37305 12 -12v-16z\" />\n    <glyph glyph-name=\"calendar\" unicode=\"&#xf133;\" horiz-adv-x=\"448\" \nd=\"M400 384c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h48v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h128v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12\nv-52h48zM394 -16c3.2998 0 6 2.7002 6 6v298h-352v-298c0 -3.2998 2.7002 -6 6 -6h340z\" />\n    <glyph glyph-name=\"play-circle\" unicode=\"&#xf144;\" \nd=\"M371.7 210c16.3994 -9.2002 16.3994 -32.9004 0 -42l-176 -101c-15.9004 -8.7998 -35.7002 2.59961 -35.7002 21v208c0 18.5 19.9004 29.7998 35.7002 21zM504 192c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248s248 -111 248 -248zM56 192\nc0 -110.5 89.5 -200 200 -200s200 89.5 200 200s-89.5 200 -200 200s-200 -89.5 -200 -200z\" />\n    <glyph glyph-name=\"minus-square\" unicode=\"&#xf146;\" horiz-adv-x=\"448\" \nd=\"M108 164c-6.59961 0 -12 5.40039 -12 12v32c0 6.59961 5.40039 12 12 12h232c6.59961 0 12 -5.40039 12 -12v-32c0 -6.59961 -5.40039 -12 -12 -12h-232zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352\nc26.5 0 48 -21.5 48 -48zM400 22v340c0 3.2998 -2.7002 6 -6 6h-340c-3.2998 0 -6 -2.7002 -6 -6v-340c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z\" />\n    <glyph glyph-name=\"check-square\" unicode=\"&#xf14a;\" horiz-adv-x=\"448\" \nd=\"M400 416c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h352zM400 16v352h-352v-352h352zM364.136 257.724l-172.589 -171.204\nc-4.70508 -4.66699 -12.3027 -4.63672 -16.9697 0.0683594l-90.7812 91.5156c-4.66699 4.70508 -4.63672 12.3037 0.0693359 16.9717l22.7188 22.5361c4.70508 4.66699 12.3027 4.63672 16.9697 -0.0693359l59.792 -60.2773l141.353 140.217\nc4.70508 4.66699 12.3027 4.63672 16.9697 -0.0683594l22.5361 -22.7178c4.66699 -4.70605 4.63672 -12.3047 -0.0683594 -16.9717z\" />\n    <glyph glyph-name=\"share-square\" unicode=\"&#xf14d;\" horiz-adv-x=\"576\" \nd=\"M561.938 289.94c18.75 -18.7402 18.75 -49.1406 0 -67.8809l-143.998 -144c-29.9727 -29.9727 -81.9404 -9.05273 -81.9404 33.9404v53.7998c-101.266 -7.83691 -99.625 -31.6406 -84.1104 -78.7598c14.2285 -43.0889 -33.4736 -79.248 -71.0195 -55.7402\nc-51.6924 32.3057 -84.8701 83.0635 -84.8701 144.76c0 39.3408 12.2197 72.7402 36.3301 99.3008c19.8398 21.8398 47.7402 38.4697 82.9102 49.4199c36.7295 11.4395 78.3096 16.1094 120.76 17.9893v57.1982c0 42.9355 51.9258 63.9541 81.9404 33.9404zM384 112l144 144\nl-144 144v-104.09c-110.86 -0.90332 -240 -10.5166 -240 -119.851c0 -52.1396 32.79 -85.6094 62.3096 -104.06c-39.8174 120.65 48.999 141.918 177.69 143.84v-103.84zM408.74 27.5068c6.14844 1.75684 15.5449 5.92383 20.9736 9.30273\nc7.97656 4.95215 18.2861 -0.825195 18.2861 -10.2139v-42.5957c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h132c6.62695 0 12 -5.37305 12 -12v-4.48633c0 -4.91699 -2.9873 -9.36914 -7.56934 -11.1514\nc-13.7021 -5.33105 -26.3955 -11.5371 -38.0498 -18.585c-1.59668 -0.974609 -4.41016 -1.77051 -6.28027 -1.77734h-86.1006c-3.31152 0 -6 -2.68848 -6 -6v-340c0 -3.31152 2.68848 -6 6 -6h340c3.31152 0 6 2.68848 6 6v25.9658c0 5.37012 3.5791 10.0596 8.74023 11.541\nz\" />\n    <glyph glyph-name=\"compass\" unicode=\"&#xf14e;\" horiz-adv-x=\"496\" \nd=\"M347.94 318.14c16.6592 7.61035 33.8096 -9.54004 26.1992 -26.1992l-65.9697 -144.341c-2.73047 -5.97363 -9.7959 -13.0391 -15.7695 -15.7695l-144.341 -65.9697c-16.6592 -7.61035 -33.8096 9.5498 -26.1992 26.1992l65.9697 144.341\nc2.73047 5.97363 9.7959 13.0391 15.7695 15.7695zM270.58 169.42c12.4697 12.4697 12.4697 32.6904 0 45.1602s-32.6904 12.4697 -45.1602 0s-12.4697 -32.6904 0 -45.1602s32.6904 -12.4697 45.1602 0zM248 440c136.97 0 248 -111.03 248 -248s-111.03 -248 -248 -248\ns-248 111.03 -248 248s111.03 248 248 248zM248 -8c110.28 0 200 89.7197 200 200s-89.7197 200 -200 200s-200 -89.7197 -200 -200s89.7197 -200 200 -200z\" />\n    <glyph glyph-name=\"caret-square-down\" unicode=\"&#xf150;\" horiz-adv-x=\"448\" \nd=\"M125.1 240h197.801c10.6992 0 16.0996 -13 8.5 -20.5l-98.9004 -98.2998c-4.7002 -4.7002 -12.2002 -4.7002 -16.9004 0l-98.8994 98.2998c-7.7002 7.5 -2.2998 20.5 8.39941 20.5zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352\nc0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM400 22v340c0 3.2998 -2.7002 6 -6 6h-340c-3.2998 0 -6 -2.7002 -6 -6v-340c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z\" />\n    <glyph glyph-name=\"caret-square-up\" unicode=\"&#xf151;\" horiz-adv-x=\"448\" \nd=\"M322.9 144h-197.801c-10.6992 0 -16.0996 13 -8.5 20.5l98.9004 98.2998c4.7002 4.7002 12.2002 4.7002 16.9004 0l98.8994 -98.2998c7.7002 -7.5 2.2998 -20.5 -8.39941 -20.5zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352\nc0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM400 22v340c0 3.2998 -2.7002 6 -6 6h-340c-3.2998 0 -6 -2.7002 -6 -6v-340c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z\" />\n    <glyph glyph-name=\"caret-square-right\" unicode=\"&#xf152;\" horiz-adv-x=\"448\" \nd=\"M176 93.0996v197.801c0 10.6992 13 16.0996 20.5 8.5l98.2998 -98.9004c4.7002 -4.7002 4.7002 -12.2002 0 -16.9004l-98.2998 -98.8994c-7.5 -7.7002 -20.5 -2.2998 -20.5 8.39941zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352\nc0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM400 22v340c0 3.2998 -2.7002 6 -6 6h-340c-3.2998 0 -6 -2.7002 -6 -6v-340c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z\" />\n    <glyph glyph-name=\"file\" unicode=\"&#xf15b;\" horiz-adv-x=\"384\" \nd=\"M369.9 350.1c9 -9 14.0996 -21.2998 14.0996 -34v-332.1c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48.0996h204.1c12.7002 0 24.9004 -5.09961 33.9004 -14.0996zM332.1 320l-76.0996 76.0996v-76.0996h76.0996zM48 -16h288v288\nh-104c-13.2998 0 -24 10.7002 -24 24v104h-160v-416z\" />\n    <glyph glyph-name=\"file-alt\" unicode=\"&#xf15c;\" horiz-adv-x=\"384\" \nd=\"M288 200v-28c0 -6.59961 -5.40039 -12 -12 -12h-168c-6.59961 0 -12 5.40039 -12 12v28c0 6.59961 5.40039 12 12 12h168c6.59961 0 12 -5.40039 12 -12zM276 128c6.59961 0 12 -5.40039 12 -12v-28c0 -6.59961 -5.40039 -12 -12 -12h-168c-6.59961 0 -12 5.40039 -12 12\nv28c0 6.59961 5.40039 12 12 12h168zM384 316.1v-332.1c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48h204.1c12.7002 0 24.9004 -5.09961 33.9004 -14.0996l83.9004 -83.9004c9 -8.90039 14.0996 -21.2002 14.0996 -33.9004z\nM256 396.1v-76.0996h76.0996zM336 -16v288h-104c-13.2998 0 -24 10.7002 -24 24v104h-160v-416h288z\" />\n    <glyph glyph-name=\"thumbs-up\" unicode=\"&#xf164;\" \nd=\"M466.27 161.31c4.6748 -22.6465 0.864258 -44.5371 -8.98926 -62.9893c2.95898 -23.8682 -4.02148 -48.5654 -17.3398 -66.9902c-0.954102 -55.9072 -35.8232 -95.3301 -112.94 -95.3301c-7 0 -15 0.00976562 -22.2197 0.00976562\nc-102.742 0 -133.293 38.9395 -177.803 39.9404c-3.56934 -13.7764 -16.085 -23.9502 -30.9775 -23.9502h-64c-17.6729 0 -32 14.3271 -32 32v240c0 17.6729 14.3271 32 32 32h98.7598c19.1455 16.9531 46.0137 60.6533 68.7598 83.4004\nc13.667 13.667 10.1533 108.6 71.7607 108.6c57.5801 0 95.2695 -31.9355 95.2695 -104.73c0 -18.4092 -3.92969 -33.7295 -8.84961 -46.5391h36.4795c48.6025 0 85.8203 -41.5654 85.8203 -85.5801c0 -19.1504 -4.95996 -34.9902 -13.7305 -49.8408zM404.52 107.48\nc21.5811 20.3838 18.6992 51.0645 5.21094 65.6191c9.44922 0 22.3594 18.9102 22.2695 37.8105c-0.0898438 18.9102 -16.71 37.8203 -37.8203 37.8203h-103.989c0 37.8193 28.3594 55.3691 28.3594 94.5391c0 23.75 0 56.7305 -47.2695 56.7305\nc-18.9102 -18.9102 -9.45996 -66.1797 -37.8203 -94.54c-26.5596 -26.5703 -66.1797 -97.46 -94.54 -97.46h-10.9199v-186.17c53.6113 0 100.001 -37.8203 171.64 -37.8203h37.8203c35.5117 0 60.8203 17.1201 53.1201 65.9004\nc15.2002 8.16016 26.5 36.4395 13.9395 57.5703zM88 16c0 13.2549 -10.7451 24 -24 24s-24 -10.7451 -24 -24s10.7451 -24 24 -24s24 10.7451 24 24z\" />\n    <glyph glyph-name=\"thumbs-down\" unicode=\"&#xf165;\" \nd=\"M466.27 222.69c8.77051 -14.8506 13.7305 -30.6904 13.7305 -49.8408c0 -44.0146 -37.2178 -85.5801 -85.8203 -85.5801h-36.4795c4.91992 -12.8096 8.84961 -28.1299 8.84961 -46.5391c0 -72.7949 -37.6895 -104.73 -95.2695 -104.73\nc-61.6074 0 -58.0938 94.9326 -71.7607 108.6c-22.7461 22.7471 -49.6133 66.4473 -68.7598 83.4004h-7.05176c-5.5332 -9.56152 -15.8662 -16 -27.708 -16h-64c-17.6729 0 -32 14.3271 -32 32v240c0 17.6729 14.3271 32 32 32h64c8.11328 0 15.5146 -3.02539 21.1553 -8\nh10.8447c40.9971 0 73.1953 39.9902 176.78 39.9902c7.21973 0 15.2197 0.00976562 22.2197 0.00976562c77.1172 0 111.986 -39.4229 112.94 -95.3301c13.3184 -18.4248 20.2979 -43.1221 17.3398 -66.9902c9.85352 -18.4521 13.6641 -40.3428 8.98926 -62.9893zM64 152\nc13.2549 0 24 10.7451 24 24s-10.7451 24 -24 24s-24 -10.7451 -24 -24s10.7451 -24 24 -24zM394.18 135.27c21.1104 0 37.7305 18.9102 37.8203 37.8203c0.0898438 18.9004 -12.8203 37.8105 -22.2695 37.8105c13.4883 14.5547 16.3701 45.2354 -5.21094 65.6191\nc12.5605 21.1309 1.26074 49.4102 -13.9395 57.5703c7.7002 48.7803 -17.6084 65.9004 -53.1201 65.9004h-37.8203c-71.6387 0 -118.028 -37.8203 -171.64 -37.8203v-186.17h10.9199c28.3604 0 67.9805 -70.8896 94.54 -97.46\nc28.3604 -28.3604 18.9102 -75.6299 37.8203 -94.54c47.2695 0 47.2695 32.9805 47.2695 56.7305c0 39.1699 -28.3594 56.7197 -28.3594 94.5391h103.989z\" />\n    <glyph glyph-name=\"sun\" unicode=\"&#xf185;\" \nd=\"M494.2 226.1c11.2002 -7.59961 17.7998 -20.0996 17.8994 -33.6992c0 -13.4004 -6.69922 -26 -17.7998 -33.5l-59.7998 -40.5l13.7002 -71c2.5 -13.2002 -1.60059 -26.8008 -11.1006 -36.3008s-22.8994 -13.7998 -36.2998 -11.0996l-70.8994 13.7002l-40.4004 -59.9004\nc-7.5 -11.0996 -20.0996 -17.7998 -33.5 -17.7998s-26 6.7002 -33.5 17.9004l-40.4004 59.8994l-70.7998 -13.7002c-13.3994 -2.59961 -26.7998 1.60059 -36.2998 11.1006s-13.7002 23.0996 -11.0996 36.2998l13.6992 71l-59.7998 40.5\nc-11.0996 7.5 -17.7998 20 -17.7998 33.5s6.59961 26 17.7998 33.5996l59.7998 40.5l-13.6992 71c-2.60059 13.2002 1.59961 26.7002 11.0996 36.3008c9.5 9.59961 23 13.6992 36.2998 11.1992l70.7998 -13.6992l40.4004 59.8994c15.0996 22.2998 51.9004 22.2998 67 0\nl40.4004 -59.8994l70.8994 13.6992c13 2.60059 26.6006 -1.59961 36.2002 -11.0996c9.5 -9.59961 13.7002 -23.2002 11.0996 -36.4004l-13.6992 -71zM381.3 140.5l76.7998 52.0996l-76.7998 52l17.6006 91.1006l-91 -17.6006l-51.9004 76.9004l-51.7998 -76.7998\nl-91 17.5996l17.5996 -91.2002l-76.7998 -52l76.7998 -52l-17.5996 -91.1992l90.8994 17.5996l51.9004 -77l51.9004 76.9004l91 -17.6006zM256 296c57.2998 0 104 -46.7002 104 -104s-46.7002 -104 -104 -104s-104 46.7002 -104 104s46.7002 104 104 104zM256 136\nc30.9004 0 56 25.0996 56 56s-25.0996 56 -56 56s-56 -25.0996 -56 -56s25.0996 -56 56 -56z\" />\n    <glyph glyph-name=\"moon\" unicode=\"&#xf186;\" \nd=\"M279.135 -64c-141.424 0 -256 114.64 -256 256c0 141.425 114.641 256 256 256c13.0068 -0.00195312 33.9443 -1.91797 46.7354 -4.27734c44.0205 -8.13086 53.7666 -66.8691 15.0215 -88.9189c-41.374 -23.5439 -67.4336 -67.4121 -67.4336 -115.836\nc0 -83.5234 75.9238 -146.475 158.272 -130.792c43.6904 8.32129 74.5186 -42.5693 46.248 -77.4004c-47.8613 -58.9717 -120.088 -94.7754 -198.844 -94.7754zM279.135 400c-114.875 0 -208 -93.125 -208 -208s93.125 -208 208 -208\nc65.2314 0 123.439 30.0361 161.575 77.0244c-111.611 -21.2568 -215.252 64.0957 -215.252 177.943c0 67.5127 36.9326 126.392 91.6934 157.555c-12.3271 2.27637 -25.0312 3.47754 -38.0166 3.47754z\" />\n    <glyph glyph-name=\"caret-square-left\" unicode=\"&#xf191;\" horiz-adv-x=\"448\" \nd=\"M272 290.9v-197.801c0 -10.6992 -13 -16.0996 -20.5 -8.5l-98.2998 98.9004c-4.7002 4.7002 -4.7002 12.2002 0 16.9004l98.2998 98.8994c7.5 7.7002 20.5 2.2998 20.5 -8.39941zM448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352\nc0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM400 22v340c0 3.2998 -2.7002 6 -6 6h-340c-3.2998 0 -6 -2.7002 -6 -6v-340c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z\" />\n    <glyph glyph-name=\"dot-circle\" unicode=\"&#xf192;\" \nd=\"M256 392c-110.549 0 -200 -89.4678 -200 -200c0 -110.549 89.4678 -200 200 -200c110.549 0 200 89.4678 200 200c0 110.549 -89.4678 200 -200 200zM256 440c136.967 0 248 -111.033 248 -248s-111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248z\nM256 272c44.1826 0 80 -35.8174 80 -80s-35.8174 -80 -80 -80s-80 35.8174 -80 80s35.8174 80 80 80z\" />\n    <glyph glyph-name=\"building\" unicode=\"&#xf1ad;\" horiz-adv-x=\"448\" \nd=\"M128 300v40c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12zM268 288c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40\nc0 -6.59961 -5.40039 -12 -12 -12h-40zM140 192c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-40zM268 192c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h40\nc6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-40zM192 108c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40zM268 96c-6.59961 0 -12 5.40039 -12 12v40\nc0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-40zM448 -28v-36h-448v36c0 6.59961 5.40039 12 12 12h19.5v440c0 13.2998 10.7002 24 24 24h337c13.2998 0 24 -10.7002 24 -24v-440h19.5\nc6.59961 0 12 -5.40039 12 -12zM79.5 -15h112.5v67c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-67h112.5v414l-288.5 1z\" />\n    <glyph glyph-name=\"file-pdf\" unicode=\"&#xf1c1;\" horiz-adv-x=\"384\" \nd=\"M369.9 350.1c9 -9 14.0996 -21.2998 14.0996 -34v-332.1c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48.0996h204.1c12.7002 0 24.9004 -5.09961 33.9004 -14.0996zM332.1 320l-76.0996 76.0996v-76.0996h76.0996zM48 -16h288v288\nh-104c-13.2998 0 -24 10.7002 -24 24v104h-160v-416zM298.2 127.7c10.5 -10.5 8 -38.7002 -17.5 -38.7002c-14.7998 0 -36.9004 6.7998 -55.7998 17c-21.6006 -3.59961 -46 -12.7002 -68.4004 -20.0996c-50.0996 -86.4004 -79.4004 -47 -76.0996 -31.2002\nc4 20 31 35.8994 51 46.2002c10.5 18.3994 25.3994 50.5 35.3994 74.3994c-7.39941 28.6006 -11.3994 51 -7 67.1006c4.7998 17.6992 38.4004 20.2998 42.6006 -5.90039c4.69922 -15.4004 -1.5 -39.9004 -5.40039 -56c8.09961 -21.2998 19.5996 -35.7998 36.7998 -46.2998\nc17.4004 2.2002 52.2002 5.5 64.4004 -6.5zM100.1 49.9004c0 -0.700195 11.4004 4.69922 30.4004 35c-5.90039 -5.5 -25.2998 -21.3008 -30.4004 -35zM181.7 240.5c-2.5 0 -2.60059 -26.9004 1.7998 -40.7998c4.90039 8.7002 5.59961 40.7998 -1.7998 40.7998zM157.3 103.9\nc15.9004 6.09961 34 14.8994 54.7998 19.1992c-11.1992 8.30078 -21.7998 20.4004 -30.0996 35.5c-6.7002 -17.6992 -15 -37.7998 -24.7002 -54.6992zM288.9 108.9c3.59961 2.39941 -2.2002 10.3994 -37.3008 7.7998c32.3008 -13.7998 37.3008 -7.7998 37.3008 -7.7998z\" />\n    <glyph glyph-name=\"file-word\" unicode=\"&#xf1c2;\" horiz-adv-x=\"384\" \nd=\"M369.9 350.1c9 -9 14.0996 -21.2998 14.0996 -34v-332.1c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48.0996h204.1c12.7002 0 24.9004 -5.09961 33.9004 -14.0996zM332.1 320l-76.0996 76.0996v-76.0996h76.0996zM48 -16h288v288\nh-104c-13.2998 0 -24 10.7002 -24 24v104h-160v-416zM268.1 192v0.200195h15.8008c7.7998 0 13.5 -7.2998 11.5996 -14.9004c-4.2998 -17 -13.7002 -54.0996 -34.5 -136c-1.2998 -5.39941 -6.09961 -9.09961 -11.5996 -9.09961h-24.7002\nc-5.5 0 -10.2998 3.7998 -11.6006 9.09961c-5.2998 20.9004 -17.7998 71 -17.8994 71.4004l-2.90039 17.2998c-0.5 -5.2998 -1.5 -11.0996 -3 -17.2998l-17.8994 -71.4004c-1.30078 -5.39941 -6.10059 -9.09961 -11.6006 -9.09961h-25.2002\nc-5.59961 0 -10.3994 3.7002 -11.6992 9.09961c-6.5 26.5 -25.2002 103.4 -33.2002 136c-1.7998 7.5 3.89941 14.7998 11.7002 14.7998h16.7998c5.7998 0 10.7002 -4.09961 11.7998 -9.69922c5 -25.7002 18.4004 -93.8008 19.0996 -99\nc0.300781 -1.7002 0.400391 -3.10059 0.5 -4.2002c0.800781 7.5 0.400391 4.7002 24.8008 103.7c1.39941 5.2998 6.19922 9.09961 11.6992 9.09961h13.3008c5.59961 0 10.3994 -3.7998 11.6992 -9.2002c23.9004 -99.7002 22.8008 -94.3994 23.6006 -99.5\nc0.299805 -1.7002 0.5 -3.09961 0.700195 -4.2998c0.599609 8.09961 0.399414 5.7998 21 103.5c1.09961 5.5 6 9.5 11.6992 9.5z\" />\n    <glyph glyph-name=\"file-excel\" unicode=\"&#xf1c3;\" horiz-adv-x=\"384\" \nd=\"M369.9 350.1c9 -9 14.0996 -21.2998 14.0996 -34v-332.1c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48.0996h204.1c12.7002 0 24.9004 -5.09961 33.9004 -14.0996zM332.1 320l-76.0996 76.0996v-76.0996h76.0996zM48 -16h288v288\nh-104c-13.2998 0 -24 10.7002 -24 24v104h-160v-416zM260 224c9.2002 0 15 -10 10.2998 -18c-16 -27.5 -45.5996 -76.9004 -46.2998 -78l46.4004 -78c4.59961 -8 -1.10059 -18 -10.4004 -18h-28.7998c-4.40039 0 -8.5 2.40039 -10.6006 6.2998\nc-22.6992 41.7998 -13.6992 27.5 -28.5996 57.7002c-5.59961 -12.7002 -6.90039 -17.7002 -28.5996 -57.7002c-2.10059 -3.89941 -6.10059 -6.2998 -10.5 -6.2998h-28.9004c-9.2998 0 -15.0996 10 -10.4004 18l46.3008 78l-46.3008 78c-4.59961 8 1.10059 18 10.4004 18\nh28.9004c4.39941 0 8.5 -2.40039 10.5996 -6.2998c21.7002 -40.4004 14.7002 -28.6006 28.5996 -57.7002c6.40039 15.2998 10.6006 24.5996 28.6006 57.7002c2.09961 3.89941 6.09961 6.2998 10.5 6.2998h28.7998z\" />\n    <glyph glyph-name=\"file-powerpoint\" unicode=\"&#xf1c4;\" horiz-adv-x=\"384\" \nd=\"M369.9 350.1c9 -9 14.0996 -21.2998 14.0996 -34v-332.1c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48.0996h204.1c12.7002 0 24.9004 -5.09961 33.9004 -14.0996zM332.1 320l-76.0996 76.0996v-76.0996h76.0996zM48 -16h288v288\nh-104c-13.2998 0 -24 10.7002 -24 24v104h-160v-416zM120 44v168c0 6.59961 5.40039 12 12 12h69.2002c36.7002 0 62.7998 -27 62.7998 -66.2998c0 -74.2998 -68.7002 -66.5 -95.5 -66.5v-47.2002c0 -6.59961 -5.40039 -12 -12 -12h-24.5c-6.59961 0 -12 5.40039 -12 12z\nM168.5 131.4h23c7.90039 0 13.9004 2.39941 18.0996 7.19922c8.5 9.80078 8.40039 28.5 0.100586 37.8008c-4.10059 4.59961 -9.90039 7 -17.4004 7h-23.8994v-52h0.0996094z\" />\n    <glyph glyph-name=\"file-image\" unicode=\"&#xf1c5;\" horiz-adv-x=\"384\" \nd=\"M369.9 350.1c9 -9 14.0996 -21.2998 14.0996 -34v-332.1c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48.0996h204.1c12.7002 0 24.9004 -5.09961 33.9004 -14.0996zM332.1 320l-76.0996 76.0996v-76.0996h76.0996zM48 -16h288v288\nh-104c-13.2998 0 -24 10.7002 -24 24v104h-160v-416zM80 32v64l39.5 39.5c4.7002 4.7002 12.2998 4.7002 17 0l39.5 -39.5l87.5 87.5c4.7002 4.7002 12.2998 4.7002 17 0l23.5 -23.5v-128h-224zM128 272c26.5 0 48 -21.5 48 -48s-21.5 -48 -48 -48s-48 21.5 -48 48\ns21.5 48 48 48z\" />\n    <glyph glyph-name=\"file-archive\" unicode=\"&#xf1c6;\" horiz-adv-x=\"384\" \nd=\"M128.3 288h32v-32h-32v32zM192.3 384v-32h-32v32h32zM128.3 352h32v-32h-32v32zM192.3 320v-32h-32v32h32zM369.9 350.1c9 -9 14.0996 -21.2998 14.0996 -34v-332.1c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48.0996h204.1\nc12.7002 0 24.9004 -5.09961 33.9004 -14.0996zM256 396.1v-76.0996h76.0996zM336 -16v288h-104c-13.2998 0 -24 10.7002 -24 24v104h-48.2998v-16h-32v16h-79.7002v-416h288zM194.2 182.3l17.2998 -87.7002c6.40039 -32.3994 -18.4004 -62.5996 -51.5 -62.5996\nc-33.2002 0 -58 30.4004 -51.4004 62.9004l19.7002 97.0996v32h32v-32h22.1006c5.7998 0 10.6992 -4.09961 11.7998 -9.7002zM160.3 57.9004c17.9004 0 32.4004 12.0996 32.4004 27c0 14.8994 -14.5 27 -32.4004 27c-17.8994 0 -32.3994 -12.1006 -32.3994 -27\nc0 -14.9004 14.5 -27 32.3994 -27zM192.3 256v-32h-32v32h32z\" />\n    <glyph glyph-name=\"file-audio\" unicode=\"&#xf1c7;\" horiz-adv-x=\"384\" \nd=\"M369.941 350.059c7.75977 -7.75977 14.0586 -22.9658 14.0586 -33.9404v-332.118c0 -26.5098 -21.4902 -48 -48 -48h-288c-26.5098 0 -48 21.4902 -48 48v416c0 26.5098 21.4902 48 48 48h204.118c10.9746 0 26.1807 -6.29883 33.9404 -14.0586zM332.118 320\nl-76.1182 76.1182v-76.1182h76.1182zM48 -16h288v288h-104c-13.2549 0 -24 10.7451 -24 24v104h-160v-416zM192 60.0244c0 -10.6914 -12.9258 -16.0459 -20.4854 -8.48535l-35.5146 35.9746h-28c-6.62695 0 -12 5.37305 -12 12v56c0 6.62695 5.37305 12 12 12h28\nl35.5146 36.9473c7.56055 7.56055 20.4854 2.20605 20.4854 -8.48535v-135.951zM233.201 107.154c9.05078 9.29688 9.05957 24.1328 0.000976562 33.4385c-22.1494 22.752 12.2344 56.2461 34.3945 33.4814c27.1982 -27.9404 27.2119 -72.4443 0.000976562 -100.401\nc-21.793 -22.3857 -56.9463 10.3154 -34.3965 33.4814z\" />\n    <glyph glyph-name=\"file-video\" unicode=\"&#xf1c8;\" horiz-adv-x=\"384\" \nd=\"M369.941 350.059c7.75977 -7.75977 14.0586 -22.9658 14.0586 -33.9404v-332.118c0 -26.5098 -21.4902 -48 -48 -48h-288c-26.5098 0 -48 21.4902 -48 48v416c0 26.5098 21.4902 48 48 48h204.118c10.9746 0 26.1807 -6.29883 33.9404 -14.0586zM332.118 320\nl-76.1182 76.1182v-76.1182h76.1182zM48 -16h288v288h-104c-13.2549 0 -24 10.7451 -24 24v104h-160v-416zM276.687 195.303c10.0049 10.0049 27.3135 2.99707 27.3135 -11.3135v-111.976c0 -14.2939 -17.2959 -21.332 -27.3135 -11.3135l-52.6865 52.6738v-37.374\nc0 -11.0459 -8.9541 -20 -20 -20h-104c-11.0459 0 -20 8.9541 -20 20v104c0 11.0459 8.9541 20 20 20h104c11.0459 0 20 -8.9541 20 -20v-37.374z\" />\n    <glyph glyph-name=\"file-code\" unicode=\"&#xf1c9;\" horiz-adv-x=\"384\" \nd=\"M149.9 98.9004c3.5 -3.30078 3.69922 -8.90039 0.399414 -12.4004l-17.3994 -18.5996c-1.60059 -1.80078 -4 -2.80078 -6.40039 -2.80078c-2.2002 0 -4.40039 0.900391 -6 2.40039l-57.7002 54.0996c-3.7002 3.40039 -3.7002 9.30078 0 12.8008l57.7002 54.0996\nc3.40039 3.2998 9 3.2002 12.4004 -0.400391l17.3994 -18.5996l0.200195 -0.200195c3.2002 -3.59961 2.7998 -9.2002 -0.799805 -12.3994l-32.7998 -28.9004l32.7998 -28.9004zM369.9 350.1c9 -9 14.0996 -21.2998 14.0996 -34v-332.1c0 -26.5 -21.5 -48 -48 -48h-288\nc-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48.0996h204.1c12.7002 0 24.9004 -5.09961 33.9004 -14.0996zM256 396.1v-76.0996h76.0996zM336 -16v288h-104c-13.2998 0 -24 10.7002 -24 24v104h-160v-416h288zM209.6 234l24.4004 -7\nc4.7002 -1.2998 7.40039 -6.2002 6 -10.9004l-54.7002 -188.199c-1.2998 -4.60059 -6.2002 -7.40039 -10.8994 -6l-24.4004 7.09961c-4.7002 1.2998 -7.40039 6.2002 -6 10.9004l54.7002 188.1c1.39941 4.7002 6.2002 7.40039 10.8994 6zM234.1 157.1\nc-3.5 3.30078 -3.69922 8.90039 -0.399414 12.4004l17.3994 18.5996c3.30078 3.60059 8.90039 3.7002 12.4004 0.400391l57.7002 -54.0996c3.7002 -3.40039 3.7002 -9.30078 0 -12.8008l-57.7002 -54.0996c-3.5 -3.2998 -9.09961 -3.09961 -12.4004 0.400391\nl-17.3994 18.5996l-0.200195 0.200195c-3.2002 3.59961 -2.7998 9.2002 0.799805 12.3994l32.7998 28.9004l-32.7998 28.9004z\" />\n    <glyph glyph-name=\"life-ring\" unicode=\"&#xf1cd;\" \nd=\"M256 -56c-136.967 0 -248 111.033 -248 248s111.033 248 248 248s248 -111.033 248 -248s-111.033 -248 -248 -248zM152.602 20.7197c63.2178 -38.3184 143.579 -38.3184 206.797 0l-53.4111 53.4111c-31.8467 -13.5215 -68.168 -13.5059 -99.9746 0zM336 192\nc0 44.1123 -35.8877 80 -80 80s-80 -35.8877 -80 -80s35.8877 -80 80 -80s80 35.8877 80 80zM427.28 88.6016c38.3184 63.2178 38.3184 143.579 0 206.797l-53.4111 -53.4111c13.5215 -31.8467 13.5049 -68.168 0 -99.9746zM359.397 363.28\nc-63.2168 38.3184 -143.578 38.3184 -206.796 0l53.4111 -53.4111c31.8457 13.5215 68.167 13.5049 99.9736 0zM84.7197 295.398c-38.3184 -63.2178 -38.3184 -143.579 0 -206.797l53.4111 53.4111c-13.5215 31.8467 -13.5059 68.168 0 99.9746z\" />\n    <glyph glyph-name=\"paper-plane\" unicode=\"&#xf1d8;\" \nd=\"M440 441.5c34.5996 19.9004 77.5996 -8.7998 71.5 -48.9004l-59.4004 -387.199c-2.2998 -14.5 -11.0996 -27.3008 -23.8994 -34.5c-7.2998 -4.10059 -15.4004 -6.2002 -23.6006 -6.2002c-6.19922 0 -12.3994 1.2002 -18.2998 3.59961l-111.899 46.2002l-43.8008 -59.0996\nc-27.3994 -36.9004 -86.5996 -17.8008 -86.5996 28.5996v84.4004l-114.3 47.2998c-36.7998 15.0996 -40.1006 66 -5.7002 85.8994zM192 -16l36.5996 49.5l-36.5996 15.0996v-64.5996zM404.6 12.7002l59.4004 387.3l-416 -240l107.8 -44.5996l211.5 184.3\nc14.2002 12.2998 34.4004 -5.7002 23.7002 -21.2002l-140.2 -202.3z\" />\n    <glyph glyph-name=\"futbol\" unicode=\"&#xf1e3;\" horiz-adv-x=\"496\" \nd=\"M483.8 268.6c42.2998 -130.199 -29 -270.1 -159.2 -312.399c-25.5 -8.2998 -51.2998 -12.2002 -76.6992 -12.2002c-104.5 0 -201.7 66.5996 -235.7 171.4c-42.2998 130.199 29 270.1 159.2 312.399c25.5 8.2998 51.2998 12.2002 76.6992 12.2002\nc104.5 0 201.7 -66.5996 235.7 -171.4zM409.3 74.9004c6.10059 8.39941 12.1006 16.8994 16.7998 26.1992c14.3008 28.1006 21.5 58.5 21.7002 89.2002l-38.8994 36.4004l-71.1006 -22.1006l-24.3994 -75.1992l43.6992 -60.9004zM409.3 310.3\nc-24.5 33.4004 -58.7002 58.4004 -97.8994 71.4004l-47.4004 -26.2002v-73.7998l64.2002 -46.5l70.7002 22zM184.9 381.6c-39.9004 -13.2998 -73.5 -38.5 -97.8008 -71.8994l10.1006 -52.5l70.5996 -22l64.2002 46.5v73.7998zM139 68.5l43.5 61.7002l-24.2998 74.2998\nl-71.1006 22.2002l-39 -36.4004c0.5 -55.7002 23.4004 -95.2002 37.8008 -115.3zM187.2 1.5c64.0996 -20.4004 115.5 -1.7998 121.7 0l22.3994 48.0996l-44.2998 61.7002h-78.5996l-43.6006 -61.7002z\" />\n    <glyph glyph-name=\"newspaper\" unicode=\"&#xf1ea;\" horiz-adv-x=\"576\" \nd=\"M552 384c13.2549 0 24 -10.7451 24 -24v-336c0 -13.2549 -10.7451 -24 -24 -24h-496c-30.9277 0 -56 25.0723 -56 56v272c0 13.2549 10.7451 24 24 24h42.752c6.60547 18.623 24.3896 32 45.248 32h440zM48 56c0 -4.41113 3.58887 -8 8 -8s8 3.58887 8 8v248h-16v-248z\nM528 48v288h-416v-280c0 -2.7168 -0.204102 -5.38574 -0.578125 -8h416.578zM172 168c-6.62695 0 -12 5.37305 -12 12v96c0 6.62695 5.37305 12 12 12h136c6.62695 0 12 -5.37305 12 -12v-96c0 -6.62695 -5.37305 -12 -12 -12h-136zM200 248v-40h80v40h-80zM160 108v24\nc0 6.62695 5.37305 12 12 12h136c6.62695 0 12 -5.37305 12 -12v-24c0 -6.62695 -5.37305 -12 -12 -12h-136c-6.62695 0 -12 5.37305 -12 12zM352 108v24c0 6.62695 5.37305 12 12 12h104c6.62695 0 12 -5.37305 12 -12v-24c0 -6.62695 -5.37305 -12 -12 -12h-104\nc-6.62695 0 -12 5.37305 -12 12zM352 252v24c0 6.62695 5.37305 12 12 12h104c6.62695 0 12 -5.37305 12 -12v-24c0 -6.62695 -5.37305 -12 -12 -12h-104c-6.62695 0 -12 5.37305 -12 12zM352 180v24c0 6.62695 5.37305 12 12 12h104c6.62695 0 12 -5.37305 12 -12v-24\nc0 -6.62695 -5.37305 -12 -12 -12h-104c-6.62695 0 -12 5.37305 -12 12z\" />\n    <glyph glyph-name=\"bell-slash\" unicode=\"&#xf1f6;\" horiz-adv-x=\"640\" \nd=\"M633.99 -23.0195c6.91016 -5.52051 8.01953 -15.5908 2.5 -22.4902l-10 -12.4902c-5.53027 -6.88965 -15.5898 -8.00977 -22.4902 -2.49023l-598 467.51c-6.90039 5.52051 -8.01953 15.5908 -2.49023 22.4902l10 12.4902\nc5.52051 6.90039 15.5898 8.00977 22.4902 2.49023zM163.53 80h182.84l61.3994 -48h-279.659c-19.1201 0 -31.9902 15.5996 -32.1006 32c-0.0498047 7.5498 2.61035 15.2598 8.61035 21.71c18.3701 19.7402 51.5703 49.6904 54.8398 140.42l45.4697 -35.5498\nc-6.91992 -54.7803 -24.6895 -88.5498 -41.3994 -110.58zM320 352c-23.3496 0 -45 -7.17969 -62.9404 -19.4004l-38.1699 29.8408c19.6807 15.7793 43.1104 27.3096 69.1299 32.7197v20.8398c0 17.6699 14.3203 32 31.9805 32s31.9805 -14.3301 31.9805 -32v-20.8398\nc73.46 -15.2598 127.939 -77.46 127.939 -155.16c0 -41.3604 6.03027 -70.7197 14.3398 -92.8496l-59.5293 46.54c-1.63086 13.96 -2.77051 28.8896 -2.79004 45.7295c0 0.200195 0.0595703 0.379883 0.0595703 0.580078c0 61.8604 -50.1396 112 -112 112zM320 -64\nc-35.3203 0 -63.9697 28.6504 -63.9697 64h127.939c0 -35.3496 -28.6494 -64 -63.9697 -64z\" />\n    <glyph glyph-name=\"copyright\" unicode=\"&#xf1f9;\" \nd=\"M256 440c136.967 0 248 -111.033 248 -248s-111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248zM256 -8c110.549 0 200 89.4678 200 200c0 110.549 -89.4678 200 -200 200c-110.549 0 -200 -89.4688 -200 -200c0 -110.549 89.4678 -200 200 -200z\nM363.351 93.0645c-9.61328 -9.71289 -45.5293 -41.3965 -104.064 -41.3965c-82.4297 0 -140.484 61.4248 -140.484 141.567c0 79.1514 60.2754 139.4 139.763 139.4c55.5303 0 88.7373 -26.6201 97.5928 -34.7783c2.13379 -1.96289 3.86523 -5.9082 3.86523 -8.80762\nc0 -1.95508 -0.864258 -4.87402 -1.92969 -6.51465l-18.1543 -28.1133c-3.8418 -5.9502 -11.9668 -7.28223 -17.499 -2.9209c-8.5957 6.77637 -31.8145 22.5381 -61.708 22.5381c-48.3037 0 -77.916 -35.3301 -77.916 -80.082c0 -41.5889 26.8877 -83.6924 78.2764 -83.6924\nc32.6572 0 56.8428 19.0391 65.7266 27.2256c5.26953 4.85645 13.5957 4.03906 17.8193 -1.73828l19.8652 -27.1699c1.28613 -1.74512 2.33008 -4.91992 2.33008 -7.08789c0 -2.72363 -1.56055 -6.5 -3.48242 -8.42969z\" />\n    <glyph glyph-name=\"closed-captioning\" unicode=\"&#xf20a;\" \nd=\"M464 384c26.5 0 48 -21.5 48 -48v-288c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v288c0 26.5 21.5 48 48 48h416zM458 48c3.2998 0 6 2.7002 6 6v276c0 3.2998 -2.7002 6 -6 6h-404c-3.2998 0 -6 -2.7002 -6 -6v-276c0 -3.2998 2.7002 -6 6 -6h404z\nM246.9 133.7c1.69922 -2.40039 1.5 -5.60059 -0.5 -7.7002c-53.6006 -56.7998 -172.801 -32.0996 -172.801 67.9004c0 97.2998 121.7 119.5 172.5 70.0996c2.10059 -2 2.5 -3.2002 1 -5.7002l-17.5 -30.5c-1.89941 -3.09961 -6.19922 -4 -9.09961 -1.7002\nc-40.7998 32 -94.5996 14.9004 -94.5996 -31.1992c0 -48 51 -70.5 92.1992 -32.6006c2.80078 2.5 7.10059 2.10059 9.2002 -0.899414zM437.3 133.7c1.7002 -2.40039 1.5 -5.60059 -0.5 -7.7002c-53.5996 -56.9004 -172.8 -32.0996 -172.8 67.9004\nc0 97.2998 121.7 119.5 172.5 70.0996c2.09961 -2 2.5 -3.2002 1 -5.7002l-17.5 -30.5c-1.90039 -3.09961 -6.2002 -4 -9.09961 -1.7002c-40.8008 32 -94.6006 14.9004 -94.6006 -31.1992c0 -48 51 -70.5 92.2002 -32.6006c2.7998 2.5 7.09961 2.10059 9.2002 -0.899414z\n\" />\n    <glyph glyph-name=\"object-group\" unicode=\"&#xf247;\" \nd=\"M500 320h-12v-256h12c6.62695 0 12 -5.37305 12 -12v-72c0 -6.62695 -5.37305 -12 -12 -12h-72c-6.62695 0 -12 5.37305 -12 12v12h-320v-12c0 -6.62695 -5.37305 -12 -12 -12h-72c-6.62695 0 -12 5.37305 -12 12v72c0 6.62695 5.37305 12 12 12h12v256h-12\nc-6.62695 0 -12 5.37305 -12 12v72c0 6.62695 5.37305 12 12 12h72c6.62695 0 12 -5.37305 12 -12v-12h320v12c0 6.62695 5.37305 12 12 12h72c6.62695 0 12 -5.37305 12 -12v-72c0 -6.62695 -5.37305 -12 -12 -12zM448 384v-32h32v32h-32zM32 384v-32h32v32h-32zM64 0v32\nh-32v-32h32zM480 0v32h-32v-32h32zM440 64v256h-12c-6.62695 0 -12 5.37305 -12 12v12h-320v-12c0 -6.62695 -5.37305 -12 -12 -12h-12v-256h12c6.62695 0 12 -5.37305 12 -12v-12h320v12c0 6.62695 5.37305 12 12 12h12zM404 256c6.62695 0 12 -5.37207 12 -12v-168\nc0 -6.62793 -5.37305 -12 -12 -12h-200c-6.62695 0 -12 5.37207 -12 12v52h-84c-6.62695 0 -12 5.37207 -12 12v168c0 6.62793 5.37305 12 12 12h200c6.62695 0 12 -5.37207 12 -12v-52h84zM136 280v-112h144v112h-144zM376 104v112h-56v-76\nc0 -6.62793 -5.37305 -12 -12 -12h-76v-24h144z\" />\n    <glyph glyph-name=\"object-ungroup\" unicode=\"&#xf248;\" horiz-adv-x=\"576\" \nd=\"M564 224h-12v-160h12c6.62695 0 12 -5.37305 12 -12v-72c0 -6.62695 -5.37305 -12 -12 -12h-72c-6.62695 0 -12 5.37305 -12 12v12h-224v-12c0 -6.62695 -5.37305 -12 -12 -12h-72c-6.62695 0 -12 5.37305 -12 12v72c0 6.62695 5.37305 12 12 12h12v24h-88v-12\nc0 -6.62695 -5.37305 -12 -12 -12h-72c-6.62695 0 -12 5.37305 -12 12v72c0 6.62695 5.37305 12 12 12h12v160h-12c-6.62695 0 -12 5.37305 -12 12v72c0 6.62695 5.37305 12 12 12h72c6.62695 0 12 -5.37305 12 -12v-12h224v12c0 6.62695 5.37305 12 12 12h72\nc6.62695 0 12 -5.37305 12 -12v-72c0 -6.62695 -5.37305 -12 -12 -12h-12v-24h88v12c0 6.62695 5.37305 12 12 12h72c6.62695 0 12 -5.37305 12 -12v-72c0 -6.62695 -5.37305 -12 -12 -12zM352 384v-32h32v32h-32zM352 128v-32h32v32h-32zM64 96v32h-32v-32h32zM64 352v32\nh-32v-32h32zM96 136h224v12c0 6.62695 5.37305 12 12 12h12v160h-12c-6.62695 0 -12 5.37305 -12 12v12h-224v-12c0 -6.62695 -5.37305 -12 -12 -12h-12v-160h12c6.62695 0 12 -5.37305 12 -12v-12zM224 0v32h-32v-32h32zM504 64v160h-12c-6.62695 0 -12 5.37305 -12 12v12\nh-88v-88h12c6.62695 0 12 -5.37305 12 -12v-72c0 -6.62695 -5.37305 -12 -12 -12h-72c-6.62695 0 -12 5.37305 -12 12v12h-88v-24h12c6.62695 0 12 -5.37305 12 -12v-12h224v12c0 6.62695 5.37305 12 12 12h12zM544 0v32h-32v-32h32zM544 256v32h-32v-32h32z\" />\n    <glyph glyph-name=\"sticky-note\" unicode=\"&#xf249;\" horiz-adv-x=\"448\" \nd=\"M448 99.8936c0 -10.9746 -6.29883 -26.1797 -14.0586 -33.9404l-83.8828 -83.8818c-7.75977 -7.76074 -22.9658 -14.0596 -33.9404 -14.0596h-268.118c-26.5098 0 -48 21.4902 -48 48v351.988c0 26.5098 21.4902 48 48 48h352c26.5098 0 48 -21.4902 48 -48v-268.106z\nM320 19.8936l76.1182 76.1182h-76.1182v-76.1182zM400 368h-352v-351.988h224v104c0 13.2549 10.7451 24 24 24h104v223.988z\" />\n    <glyph glyph-name=\"clone\" unicode=\"&#xf24d;\" \nd=\"M464 448c26.5098 0 48 -21.4902 48 -48v-320c0 -26.5098 -21.4902 -48 -48 -48h-48v-48c0 -26.5098 -21.4902 -48 -48 -48h-320c-26.5098 0 -48 21.4902 -48 48v320c0 26.5098 21.4902 48 48 48h48v48c0 26.5098 21.4902 48 48 48h320zM362 -16c3.31152 0 6 2.68848 6 6\nv42h-224c-26.5098 0 -48 21.4902 -48 48v224h-42c-3.31152 0 -6 -2.68848 -6 -6v-308c0 -3.31152 2.68848 -6 6 -6h308zM458 80c3.31152 0 6 2.68848 6 6v308c0 3.31152 -2.68848 6 -6 6h-308c-3.31152 0 -6 -2.68848 -6 -6v-308c0 -3.31152 2.68848 -6 6 -6h308z\" />\n    <glyph glyph-name=\"hourglass\" unicode=\"&#xf254;\" horiz-adv-x=\"384\" \nd=\"M368 400c0 -80.0996 -31.8984 -165.619 -97.1797 -208c64.9912 -42.1934 97.1797 -127.436 97.1797 -208h4c6.62695 0 12 -5.37305 12 -12v-24c0 -6.62695 -5.37305 -12 -12 -12h-360c-6.62695 0 -12 5.37305 -12 12v24c0 6.62695 5.37305 12 12 12h4\nc0 80.0996 31.8994 165.619 97.1797 208c-64.9912 42.1934 -97.1797 127.436 -97.1797 208h-4c-6.62695 0 -12 5.37305 -12 12v24c0 6.62695 5.37305 12 12 12h360c6.62695 0 12 -5.37305 12 -12v-24c0 -6.62695 -5.37305 -12 -12 -12h-4zM64 400\nc0 -101.621 57.3066 -184 128 -184s128 82.3799 128 184h-256zM320 -16c0 101.62 -57.3076 184 -128 184s-128 -82.3799 -128 -184h256z\" />\n    <glyph glyph-name=\"hand-rock\" unicode=\"&#xf255;\" \nd=\"M408.864 368.948c48.8213 20.751 103.136 -15.0723 103.136 -67.9111v-114.443c0 -15.3955 -3.08887 -30.3906 -9.18262 -44.5674l-42.835 -99.6562c-4.99707 -11.625 -3.98242 -18.8574 -3.98242 -42.3701c0 -17.6729 -14.3271 -32 -32 -32h-252\nc-17.6729 0 -32 14.3271 -32 32c0 27.3301 1.1416 29.2012 -3.11035 32.9033l-97.71 85.0811c-24.8994 21.6797 -39.1797 52.8926 -39.1797 85.6338v56.9531c0 47.4277 44.8457 82.0215 91.0459 71.1807c1.96094 55.751 63.5107 87.8262 110.671 60.8057\nc29.1895 31.0713 78.8604 31.4473 108.334 -0.0214844c32.7051 18.6846 76.4121 10.3096 98.8135 -23.5879zM464 186.594v114.445c0 34.29 -52 33.8232 -52 0.676758c0 -8.83594 -7.16309 -16 -16 -16h-7c-8.83691 0 -16 7.16406 -16 16v26.751\nc0 34.457 -52 33.707 -52 0.676758v-27.4287c0 -8.83594 -7.16309 -16 -16 -16h-7c-8.83691 0 -16 7.16406 -16 16v40.4658c0 34.3525 -52 33.8115 -52 0.677734v-41.1436c0 -8.83594 -7.16406 -16 -16 -16h-7c-8.83594 0 -16 7.16406 -16 16v26.751\nc0 34.4023 -52 33.7744 -52 0.676758v-116.571c0 -8.83203 -7.16797 -16 -16 -16c-3.30664 0 -8.01367 1.7627 -10.5068 3.93359l-7 6.09473c-3.03223 2.64062 -5.49316 8.04688 -5.49316 12.0674v0v41.2275c0 34.2148 -52 33.8857 -52 0.677734v-56.9531\nc0 -18.8555 8.27441 -36.874 22.7002 -49.4365l97.71 -85.0801c12.4502 -10.8398 19.5898 -26.4463 19.5898 -42.8164v-10.2861h220v7.07617c0 13.21 2.65332 26.0791 7.88281 38.25l42.835 99.6553c2.91602 6.75391 5.28223 18.207 5.28223 25.5635v0.0488281z\" />\n    <glyph glyph-name=\"hand-paper\" unicode=\"&#xf256;\" horiz-adv-x=\"448\" \nd=\"M372.57 335.359c39.9062 5.63281 75.4297 -25.7393 75.4297 -66.3594v-131.564c-0.00195312 -12.7666 -2.33008 -33.2246 -5.19531 -45.666l-30.1836 -130.958c-3.34668 -14.5234 -16.2783 -24.8125 -31.1816 -24.8125h-222.897\nc-9.10352 0 -20.7793 6.01758 -26.0615 13.4316l-119.97 168.415c-21.2441 29.8203 -14.8047 71.3574 14.5498 93.1533c18.7754 13.9395 42.1309 16.2979 62.083 8.87109v126.13c0 44.0547 41.125 75.5439 82.4053 64.9834c23.8926 48.1963 92.3535 50.2471 117.982 0.74707\nc42.5186 11.1445 83.0391 -21.9346 83.0391 -65.5469v-10.8242zM399.997 137.437l-0.00195312 131.563c0 24.9492 -36.5703 25.5508 -36.5703 -0.691406v-76.3086c0 -8.83691 -7.16309 -16 -16 -16h-6.85645c-8.83691 0 -16 7.16309 -16 16v154.184\nc0 25.501 -36.5703 26.3633 -36.5703 0.691406v-154.875c0 -8.83691 -7.16309 -16 -16 -16h-6.85645c-8.83691 0 -16 7.16309 -16 16v188.309c0 25.501 -36.5703 26.3545 -36.5703 0.691406v-189c0 -8.83691 -7.16309 -16 -16 -16h-6.85645c-8.83691 0 -16 7.16309 -16 16\nv153.309c0 25.501 -36.5713 26.3359 -36.5713 0.691406v-206.494c0 -15.5703 -20.0352 -21.9092 -29.0303 -9.2832l-27.1279 38.0791c-14.3711 20.1709 -43.833 -2.33496 -29.3945 -22.6045l115.196 -161.697h201.92l27.3252 118.551\nc2.63086 11.417 3.96484 23.1553 3.96484 34.8857z\" />\n    <glyph glyph-name=\"hand-scissors\" unicode=\"&#xf257;\" \nd=\"M256 -32c-44.9561 0 -77.3428 43.2627 -64.0244 85.8535c-21.6484 13.71 -34.0156 38.7617 -30.3408 65.0068h-87.6348c-40.8037 0 -74 32.8105 -74 73.1406c0 40.3291 33.1963 73.1396 74 73.1396l94 -9.14062l-78.8496 18.6787\nc-38.3076 14.7422 -57.04 57.4707 -41.9424 95.1123c15.0303 37.4736 57.7549 55.7803 95.6416 41.2012l144.929 -55.7568c24.9551 30.5566 57.8086 43.9932 92.2178 24.7324l97.999 -54.8525c20.9746 -11.7393 34.0049 -33.8457 34.0049 -57.6904v-205.702\nc0 -30.7422 -21.4404 -57.5576 -51.7979 -64.5537l-118.999 -27.4268c-4.97168 -1.14648 -10.0889 -1.72949 -15.2031 -1.72949zM256 16.0127l70 -0.000976562c1.23633 0 3.21777 0.225586 4.42285 0.501953l119.001 27.4277\nc8.58203 1.97754 14.5762 9.29102 14.5762 17.7812v205.701c0 6.4873 -3.62109 12.542 -9.44922 15.8047l-98 54.8545c-8.13965 4.55566 -18.668 2.61914 -24.4873 -4.50781l-21.7646 -26.6475c-2.65039 -3.24512 -8.20215 -5.87891 -12.3926 -5.87891\nc-1.64062 0 -4.21484 0.477539 -5.74609 1.06738l-166.549 64.0908c-32.6543 12.5664 -50.7744 -34.5771 -19.2227 -46.7168l155.357 -59.7852c5.66016 -2.17773 10.2539 -8.86816 10.2539 -14.9326v0v-11.6328c0 -8.83691 -7.16309 -16 -16 -16h-182\nc-34.375 0 -34.4297 -50.2803 0 -50.2803h182c8.83691 0 16 -7.16309 16 -16v-6.85645c0 -8.83691 -7.16309 -16 -16 -16h-28c-25.1221 0 -25.1592 -36.5674 0 -36.5674h28c8.83691 0 16 -7.16211 16 -16v-6.85547c0 -8.83691 -7.16309 -16 -16 -16\nc-25.1201 0 -25.1602 -36.5674 0 -36.5674z\" />\n    <glyph glyph-name=\"hand-lizard\" unicode=\"&#xf258;\" horiz-adv-x=\"576\" \nd=\"M556.686 157.458c12.6357 -19.4863 19.3145 -42.0615 19.3145 -65.2871v-124.171h-224v71.582l-99.751 38.7871c-2.7832 1.08203 -5.70996 1.63086 -8.69727 1.63086h-131.552c-30.8789 0 -56 25.1211 -56 56c0 48.5234 39.4766 88 88 88h113.709l18.333 48h-196.042\nc-44.1123 0 -80 35.8877 -80 80v8c0 30.8779 25.1211 56 56 56h293.917c24.5 0 47.084 -12.2725 60.4111 -32.8291zM528 16v76.1709v0.0478516c0 11.7461 -5.19141 29.2734 -11.5879 39.124l-146.358 225.715c-4.44336 6.85254 -11.9707 10.9424 -20.1367 10.9424h-293.917\nc-4.41113 0 -8 -3.58887 -8 -8v-8c0 -17.6445 14.3555 -32 32 -32h213.471c25.2021 0 42.626 -25.293 33.6299 -48.8457l-24.5518 -64.2812c-7.05371 -18.4658 -25.0732 -30.873 -44.8398 -30.873h-113.709c-22.0557 0 -40 -17.9443 -40 -40c0 -4.41113 3.58887 -8 8 -8\nh131.552h0.0517578c7.44141 0 19.1074 -2.19238 26.041 -4.89355l99.752 -38.7881c18.5898 -7.22852 30.6035 -24.7881 30.6035 -44.7363v-23.582h128z\" />\n    <glyph glyph-name=\"hand-spock\" unicode=\"&#xf259;\" \nd=\"M21.0957 66.21c-26.9688 25.3818 -28.2471 67.7461 -2.87109 94.707c24.1982 25.7139 64.2881 28.2373 91.4824 5.72168l-31.04 136.509c-9.38379 41.2803 21.4336 81.0127 64.0713 81.8438c1.74414 28.9062 22.2656 54.4912 51.8818 61.2949\nc36.001 8.27539 72.0176 -14.2266 80.3037 -50.2959l21.6748 -131.99l16.9014 105.25c9.02344 36.0947 45.4473 57.7021 81.25 48.75c27.3066 -6.82715 45.7061 -29.1357 49.8496 -53.9922c43.2285 0.212891 75.6436 -40.1133 65.5439 -82.5244l-31.7295 -133.41\nc-0.938477 -3.94141 -1.41406 -7.99414 -1.41406 -12.0449v-36.8389v-0.00683594c0 -9.29102 -2.14355 -24.0596 -4.78516 -32.9668l-31.8145 -107.312c-4.02734 -13.585 -16.5107 -22.9043 -30.6807 -22.9043h-237.6c-7.00586 0 -16.8311 3.89648 -21.9316 8.69824z\nM53.1641 128.021c-7.17969 -7.62891 -6.81543 -19.6777 0.813477 -26.8574l124.487 -117.164h219.311l28.4199 95.8613c1.86133 6.27637 2.80469 12.7793 2.80469 19.3281v36.8389c0.000976562 6.48047 1.21973 16.8574 2.71973 23.1621l31.7549 133.407\nc5.83105 24.4893 -31.1445 33.25 -36.9658 8.80273l-26.9229 -113.105c-1.61523 -6.78711 -8.58887 -12.2949 -15.5645 -12.2949h-9.69434c-10.4072 0 -18.043 9.79199 -15.5225 19.8799l38.127 152.512c6.09766 24.376 -30.7607 33.6396 -36.8643 9.21777l-42.3721 -169.49\nc-1.67285 -6.68945 -8.62695 -12.1191 -15.5225 -12.1191h-13.2168v0c-7.0332 0 -14.0195 5.5625 -15.5938 12.417l-45.2207 196.828c-5.64453 24.5684 -42.6572 15.9609 -37.0342 -8.50781l41.6191 -181.153c2.30078 -10.0156 -5.31738 -19.583 -15.5938 -19.583h-8.60352\nh-0.000976562c-7.0498 0 -14.04 5.5791 -15.6025 12.4541l-30.3984 133.757c-5.55273 24.4395 -42.6504 16.1963 -37.0547 -8.4209l34.1299 -150.172c0.263672 -1.16309 0.397461 -2.35352 0.397461 -3.5459v-69.4795c0 -13.9941 -16.7754 -21.2432 -26.9658 -11.6523\nl-53.0117 49.8936c-7.61523 7.16699 -19.6377 6.85938 -26.8564 -0.8125z\" />\n    <glyph glyph-name=\"hand-pointer\" unicode=\"&#xf25a;\" horiz-adv-x=\"448\" \nd=\"M358.182 268.639c43.1934 16.6348 89.8184 -15.7949 89.8184 -62.6387v-84c-0.000976562 -4.25 -0.775391 -11.0615 -1.72754 -15.2041l-27.4297 -118.999c-6.98242 -30.2969 -33.7549 -51.7969 -64.5566 -51.7969h-178.286c-21.2588 0 -41.3682 10.4102 -53.791 27.8457\nl-109.699 154.001c-21.2432 29.8193 -14.8047 71.3574 14.5498 93.1523c18.8115 13.9658 42.1748 16.2822 62.083 8.87207v161.129c0 36.9443 29.7363 67 66.2861 67s66.2861 -30.0557 66.2861 -67v-73.6338c20.4131 2.85742 41.4678 -3.94238 56.5947 -19.6289\nc27.1934 12.8467 60.3799 5.66992 79.8721 -19.0986zM80.9854 168.303c-14.4004 20.2119 -43.8008 -2.38281 -29.3945 -22.6055l109.712 -154c3.43457 -4.81934 8.92871 -7.69727 14.6973 -7.69727h178.285c8.49219 0 15.8037 5.99414 17.7822 14.5762l27.4297 119.001\nc0.333008 1.44629 0.501953 2.93457 0.501953 4.42285v84c0 25.1602 -36.5713 25.1211 -36.5713 0c0 -8.83594 -7.16309 -16 -16 -16h-6.85645c-8.83691 0 -16 7.16406 -16 16v21c0 25.1602 -36.5713 25.1201 -36.5713 0v-21c0 -8.83594 -7.16309 -16 -16 -16h-6.85938\nc-8.83691 0 -16 7.16406 -16 16v35c0 25.1602 -36.5703 25.1201 -36.5703 0v-35c0 -8.83594 -7.16309 -16 -16 -16h-6.85742c-8.83691 0 -16 7.16406 -16 16v175c0 25.1602 -36.5713 25.1201 -36.5713 0v-241.493c0 -15.5703 -20.0352 -21.9092 -29.0303 -9.2832z\nM176.143 48v96c0 8.83691 6.26855 16 14 16h6c7.73242 0 14 -7.16309 14 -16v-96c0 -8.83691 -6.26758 -16 -14 -16h-6c-7.73242 0 -14 7.16309 -14 16zM251.571 48v96c0 8.83691 6.26758 16 14 16h6c7.73145 0 14 -7.16309 14 -16v-96c0 -8.83691 -6.26855 -16 -14 -16h-6\nc-7.73242 0 -14 7.16309 -14 16zM327 48v96c0 8.83691 6.26758 16 14 16h6c7.73242 0 14 -7.16309 14 -16v-96c0 -8.83691 -6.26758 -16 -14 -16h-6c-7.73242 0 -14 7.16309 -14 16z\" />\n    <glyph glyph-name=\"hand-peace\" unicode=\"&#xf25b;\" horiz-adv-x=\"448\" \nd=\"M362.146 256.024c42.5908 13.3184 85.8535 -19.0684 85.8535 -64.0244l-0.0117188 -70.001c-0.000976562 -4.25 -0.775391 -11.0615 -1.72949 -15.2031l-27.4268 -118.999c-6.99707 -30.3564 -33.8105 -51.7969 -64.5547 -51.7969h-205.702\nc-23.8447 0 -45.9502 13.0303 -57.6904 34.0059l-54.8525 97.999c-19.2607 34.4092 -5.82422 67.2617 24.7324 92.2178l-55.7568 144.928c-14.5791 37.8867 3.72754 80.6113 41.2012 95.6416c37.6406 15.0977 80.3691 -3.63477 95.1123 -41.9424l18.6787 -78.8496\nl-9.14062 94c0 40.8037 32.8096 74 73.1396 74s73.1406 -33.1963 73.1406 -74v-87.6348c26.2451 3.6748 51.2959 -8.69238 65.0068 -30.3408zM399.987 122l-0.000976562 70c0 25.1602 -36.5674 25.1201 -36.5674 0c0 -8.83691 -7.16309 -16 -16 -16h-6.85547\nc-8.83789 0 -16 7.16309 -16 16v28c0 25.1592 -36.5674 25.1221 -36.5674 0v-28c0 -8.83691 -7.16309 -16 -16 -16h-6.85645c-8.83691 0 -16 7.16309 -16 16v182c0 34.4297 -50.2803 34.375 -50.2803 0v-182c0 -8.83691 -7.16309 -16 -16 -16h-11.6328v0\nc-6.06445 0 -12.7549 4.59375 -14.9326 10.2539l-59.7842 155.357c-12.1396 31.5518 -59.2842 13.4326 -46.7168 -19.2227l64.0898 -166.549c0.589844 -1.53125 1.06738 -4.10547 1.06738 -5.74609c0 -4.19043 -2.63379 -9.74219 -5.87891 -12.3926l-26.6475 -21.7646\nc-7.12695 -5.81934 -9.06445 -16.3467 -4.50781 -24.4873l54.8535 -98c3.26367 -5.82812 9.31934 -9.44922 15.8057 -9.44922h205.701c8.49121 0 15.8037 5.99414 17.7812 14.5762l27.4277 119.001c0.333008 1.44629 0.501953 2.93457 0.501953 4.42285z\" />\n    <glyph glyph-name=\"registered\" unicode=\"&#xf25d;\" \nd=\"M256 440c136.967 0 248 -111.033 248 -248s-111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248zM256 -8c110.549 0 200 89.4678 200 200c0 110.549 -89.4678 200 -200 200c-110.549 0 -200 -89.4688 -200 -200c0 -110.549 89.4678 -200 200 -200z\nM366.442 73.791c4.40332 -7.99219 -1.37012 -17.791 -10.5107 -17.791h-42.8096h-0.0126953c-3.97559 0 -8.71582 2.84961 -10.5801 6.36035l-47.5156 89.3027h-31.958v-83.6631c0 -6.61719 -5.38281 -12 -12 -12h-38.5674c-6.61719 0 -12 5.38281 -12 12v248.304\nc0 6.61719 5.38281 12 12 12h78.667c71.251 0 101.498 -32.749 101.498 -85.252c0 -31.6123 -15.2148 -59.2969 -39.4824 -73.1758c3.02148 -4.61719 0.225586 0.199219 53.2715 -96.085zM256.933 208.094c20.9131 0 32.4307 11.5186 32.4316 32.4316\nc0 19.5752 -6.5127 31.709 -38.9297 31.709h-27.377v-64.1406h33.875z\" />\n    <glyph glyph-name=\"calendar-plus\" unicode=\"&#xf271;\" horiz-adv-x=\"448\" \nd=\"M336 156v-24c0 -6.59961 -5.40039 -12 -12 -12h-76v-76c0 -6.59961 -5.40039 -12 -12 -12h-24c-6.59961 0 -12 5.40039 -12 12v76h-76c-6.59961 0 -12 5.40039 -12 12v24c0 6.59961 5.40039 12 12 12h76v76c0 6.59961 5.40039 12 12 12h24c6.59961 0 12 -5.40039 12 -12\nv-76h76c6.59961 0 12 -5.40039 12 -12zM448 336v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h48v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h128v52c0 6.59961 5.40039 12 12 12h40\nc6.59961 0 12 -5.40039 12 -12v-52h48c26.5 0 48 -21.5 48 -48zM400 -10v298h-352v-298c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z\" />\n    <glyph glyph-name=\"calendar-minus\" unicode=\"&#xf272;\" horiz-adv-x=\"448\" \nd=\"M124 120c-6.59961 0 -12 5.40039 -12 12v24c0 6.59961 5.40039 12 12 12h200c6.59961 0 12 -5.40039 12 -12v-24c0 -6.59961 -5.40039 -12 -12 -12h-200zM448 336v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h48v52\nc0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h128v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h48c26.5 0 48 -21.5 48 -48zM400 -10v298h-352v-298c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z\" />\n    <glyph glyph-name=\"calendar-times\" unicode=\"&#xf273;\" horiz-adv-x=\"448\" \nd=\"M311.7 73.2998l-17 -17c-4.7002 -4.7002 -12.2998 -4.7002 -17 0l-53.7002 53.7998l-53.7002 -53.6992c-4.7002 -4.7002 -12.2998 -4.7002 -17 0l-17 17c-4.7002 4.69922 -4.7002 12.2998 0 17l53.7002 53.6992l-53.7002 53.7002c-4.7002 4.7002 -4.7002 12.2998 0 17\nl17 17c4.7002 4.7002 12.2998 4.7002 17 0l53.7002 -53.7002l53.7002 53.7002c4.7002 4.7002 12.2998 4.7002 17 0l17 -17c4.7002 -4.7002 4.7002 -12.2998 0 -17l-53.7998 -53.7998l53.6992 -53.7002c4.80078 -4.7002 4.80078 -12.2998 0.100586 -17zM448 336v-352\nc0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h48v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h128v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h48c26.5 0 48 -21.5 48 -48zM400 -10\nv298h-352v-298c0 -3.2998 2.7002 -6 6 -6h340c3.2998 0 6 2.7002 6 6z\" />\n    <glyph glyph-name=\"calendar-check\" unicode=\"&#xf274;\" horiz-adv-x=\"448\" \nd=\"M400 384c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h48v52c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-52h128v52c0 6.62695 5.37305 12 12 12h40\nc6.62695 0 12 -5.37305 12 -12v-52h48zM394 -16c3.31152 0 6 2.68848 6 6v298h-352v-298c0 -3.31152 2.68848 -6 6 -6h340zM341.151 184.65l-142.31 -141.169c-4.70508 -4.66699 -12.3027 -4.6377 -16.9707 0.0673828l-75.0908 75.6992\nc-4.66699 4.70508 -4.6377 12.3027 0.0673828 16.9707l22.7197 22.5361c4.70508 4.66699 12.3027 4.63672 16.9697 -0.0693359l44.1035 -44.4609l111.072 110.182c4.70508 4.66699 12.3027 4.63672 16.9707 -0.0683594l22.5361 -22.7178\nc4.66699 -4.70508 4.63672 -12.3027 -0.0683594 -16.9697z\" />\n    <glyph glyph-name=\"map\" unicode=\"&#xf279;\" horiz-adv-x=\"576\" \nd=\"M560.02 416c8.4502 0 15.9805 -6.83008 15.9805 -16.0195v-346.32c0 -11.9609 -9.01367 -25.2705 -20.1201 -29.71l-151.83 -52.8105c-5.32617 -1.7334 -14.1953 -3.13965 -19.7969 -3.13965c-5.7373 0 -14.8105 1.47363 -20.2529 3.29004l-172 60.71l-170.05 -62.8398\nc-1.99023 -0.790039 -4 -1.16016 -5.95996 -1.16016c-8.45996 0 -15.9902 6.83008 -15.9902 16.0195v346.32c0.00292969 11.959 9.0166 25.2686 20.1201 29.71l151.83 52.8105c6.43945 2.08984 13.1201 3.13965 19.8096 3.13965\nc5.73242 -0.00195312 14.8008 -1.47168 20.2402 -3.28027l172 -60.7197h0.00976562l170.05 62.8398c1.98047 0.790039 4 1.16016 5.95996 1.16016zM224 357.58v-285.97l128 -45.1904v285.97zM48 29.9502l127.36 47.0801l0.639648 0.229492v286.2l-128 -44.5303v-288.979z\nM528 65.0801v288.97l-127.36 -47.0693l-0.639648 -0.240234v-286.19z\" />\n    <glyph glyph-name=\"comment-alt\" unicode=\"&#xf27a;\" \nd=\"M448 448c35.2998 0 64 -28.7002 64 -64v-288c0 -35.2998 -28.7002 -64 -64 -64h-144l-124.9 -93.5996c-2.19922 -1.7002 -4.69922 -2.40039 -7.09961 -2.40039c-6.2002 0 -12 4.90039 -12 12v84h-96c-35.2998 0 -64 28.7002 -64 64v288c0 35.2998 28.7002 64 64 64h384z\nM464 96v288c0 8.7998 -7.2002 16 -16 16h-384c-8.7998 0 -16 -7.2002 -16 -16v-288c0 -8.7998 7.2002 -16 16 -16h144v-60l67.2002 50.4004l12.7998 9.59961h160c8.7998 0 16 7.2002 16 16z\" />\n    <glyph glyph-name=\"pause-circle\" unicode=\"&#xf28b;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM256 -8c110.5 0 200 89.5 200 200s-89.5 200 -200 200s-200 -89.5 -200 -200s89.5 -200 200 -200zM352 272v-160c0 -8.7998 -7.2002 -16 -16 -16h-48\nc-8.7998 0 -16 7.2002 -16 16v160c0 8.7998 7.2002 16 16 16h48c8.7998 0 16 -7.2002 16 -16zM240 272v-160c0 -8.7998 -7.2002 -16 -16 -16h-48c-8.7998 0 -16 7.2002 -16 16v160c0 8.7998 7.2002 16 16 16h48c8.7998 0 16 -7.2002 16 -16z\" />\n    <glyph glyph-name=\"stop-circle\" unicode=\"&#xf28d;\" \nd=\"M504 192c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248s248 -111 248 -248zM56 192c0 -110.5 89.5 -200 200 -200s200 89.5 200 200s-89.5 200 -200 200s-200 -89.5 -200 -200zM352 272v-160c0 -8.7998 -7.2002 -16 -16 -16h-160\nc-8.7998 0 -16 7.2002 -16 16v160c0 8.7998 7.2002 16 16 16h160c8.7998 0 16 -7.2002 16 -16z\" />\n    <glyph glyph-name=\"handshake\" unicode=\"&#xf2b5;\" horiz-adv-x=\"640\" \nd=\"M519.2 320.1h120.8v-255.699h-64c-17.5 0 -31.7998 14.1992 -31.9004 31.6992h-57.8994c-1.7998 -8.19922 -5.2998 -16.0996 -10.9004 -23l-26.2002 -32.2998c-15.7998 -19.3994 -41.8994 -25.5 -64 -16.7998c-13.5 -16.5996 -30.5996 -24 -48.7998 -24\nc-15.0996 0 -28.5996 5.09961 -41.0996 15.9004c-31.7998 -21.9004 -74.7002 -21.3008 -105.601 3.7998l-84.5996 76.3994h-9.09961c-0.100586 -17.5 -14.3008 -31.6992 -31.9004 -31.6992h-64v255.699h118l47.5996 47.6006c10.5 10.3994 24.8008 16.2998 39.6006 16.2998\nh226.8v0c12.7812 0 30.5225 -7.30273 39.5996 -16.2998zM48 96.4004c8.7998 0 16 7.09961 16 16c0 8.7998 -7.2002 16 -16 16s-16 -7.2002 -16 -16c0 -8.80078 7.2002 -16 16 -16zM438 103.3c2.7002 3.40039 2.2002 8.5 -1.2002 11.2998l-108.2 87.8008l-8.19922 -7.5\nc-40.3008 -36.8008 -86.7002 -11.8008 -101.5 4.39941c-26.7002 29 -25 74.4004 4.39941 101.3l38.7002 35.5h-56.7002c-2 -0.799805 -3.7002 -1.5 -5.7002 -2.2998l-61.6992 -61.5996h-41.9004v-128.101h27.7002l97.2998 -88\nc16.0996 -13.0996 41.4004 -10.5 55.2998 6.60059l15.6006 19.2002l36.7998 -31.5c3 -2.40039 12 -4.90039 18 2.39941l30 36.5l23.8994 -19.3994c3.5 -2.80078 8.5 -2.2002 11.3008 1.19922zM544 144.1v128h-44.7002l-61.7002 61.6006\nc-1.39941 1.5 -3.39941 2.2998 -5.5 2.2998l-83.6992 -0.200195c-10 0 -19.6006 -3.7002 -27 -10.5l-65.6006 -60.0996c-9.7002 -8.7998 -10.5 -24 -1.2002 -33.9004c8.90039 -9.39941 25.1006 -8.7002 34.6006 0l55.2002 50.6006c6.5 5.89941 16.5996 5.5 22.5996 -1\nl10.9004 -11.7002c6 -6.5 5.5 -16.6006 -1 -22.6006l-12.5 -11.3994l102.699 -83.4004c2.80078 -2.2998 5.40039 -4.89941 7.7002 -7.7002h69.2002zM592 96.4004c8.7998 0 16 7.09961 16 16c0 8.7998 -7.2002 16 -16 16s-16 -7.2002 -16 -16c0 -8.80078 7.2002 -16 16 -16z\n\" />\n    <glyph glyph-name=\"envelope-open\" unicode=\"&#xf2b6;\" \nd=\"M494.586 283.484c9.6123 -7.94824 17.4141 -24.5205 17.4141 -36.9932v-262.491c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v262.515c0 12.5166 7.84668 29.1279 17.5146 37.0771c4.08008 3.35449 110.688 89.0996 135.15 108.549\nc22.6992 18.1426 60.1299 55.8594 103.335 55.8594c43.4365 0 81.2314 -38.1914 103.335 -55.8594c23.5283 -18.707 130.554 -104.773 135.251 -108.656zM464 -10v253.632v0.00488281c0 1.5791 -0.996094 3.66602 -2.22363 4.6582\nc-15.8633 12.8232 -108.793 87.5752 -132.366 106.316c-17.5527 14.0195 -49.7168 45.3887 -73.4102 45.3887c-23.6016 0 -55.2451 -30.8799 -73.4102 -45.3887c-23.5713 -18.7393 -116.494 -93.4795 -132.364 -106.293\nc-1.40918 -1.13965 -2.22559 -2.85254 -2.22559 -4.66504v-253.653c0 -3.31152 2.68848 -6 6 -6h404c3.31152 0 6 2.68848 6 6zM432.009 177.704c4.24902 -5.15918 3.46484 -12.7949 -1.74512 -16.9814c-28.9746 -23.2822 -59.2734 -47.5967 -70.9287 -56.8623\nc-22.6992 -18.1436 -60.1299 -55.8604 -103.335 -55.8604c-43.4521 0 -81.2871 38.2373 -103.335 55.8604c-11.2793 8.9668 -41.7441 33.4131 -70.9268 56.8643c-5.20996 4.1875 -5.99316 11.8223 -1.74512 16.9814l15.2578 18.5283\nc4.17773 5.07227 11.6572 5.84277 16.7793 1.72559c28.6182 -23.001 58.5654 -47.0352 70.5596 -56.5713c17.5527 -14.0195 49.7168 -45.3887 73.4102 -45.3887c23.6016 0 55.2461 30.8799 73.4102 45.3887c11.9941 9.53516 41.9434 33.5703 70.5625 56.5684\nc5.12207 4.11621 12.6016 3.3457 16.7783 -1.72656z\" />\n    <glyph glyph-name=\"address-book\" unicode=\"&#xf2b9;\" horiz-adv-x=\"448\" \nd=\"M436 288h-20v-64h20c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-20v-64h20c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-20v-48c0 -26.5 -21.5 -48 -48 -48h-320c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48\nh320c26.5 0 48 -21.5 48 -48v-48h20c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12zM368 -16v416h-320v-416h320zM208 192c-35.2998 0 -64 28.7002 -64 64s28.7002 64 64 64s64 -28.7002 64 -64s-28.7002 -64 -64 -64zM118.4 64\nc-12.4004 0 -22.4004 8.59961 -22.4004 19.2002v19.2002c0 31.7998 30.0996 57.5996 67.2002 57.5996c11.3994 0 17.8994 -8 44.7998 -8c26.0996 0 34 8 44.7998 8c37.1006 0 67.2002 -25.7998 67.2002 -57.5996v-19.2002c0 -10.6006 -10 -19.2002 -22.4004 -19.2002\nh-179.199z\" />\n    <glyph glyph-name=\"address-card\" unicode=\"&#xf2bb;\" horiz-adv-x=\"576\" \nd=\"M528 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h480zM528 16v352h-480v-352h480zM208 192c-35.2998 0 -64 28.7002 -64 64s28.7002 64 64 64s64 -28.7002 64 -64s-28.7002 -64 -64 -64z\nM118.4 64c-12.4004 0 -22.4004 8.59961 -22.4004 19.2002v19.2002c0 31.7998 30.0996 57.5996 67.2002 57.5996c11.3994 0 17.8994 -8 44.7998 -8c26.0996 0 34 8 44.7998 8c37.1006 0 67.2002 -25.7998 67.2002 -57.5996v-19.2002\nc0 -10.6006 -10 -19.2002 -22.4004 -19.2002h-179.199zM360 128c-4.40039 0 -8 3.59961 -8 8v16c0 4.40039 3.59961 8 8 8h112c4.40039 0 8 -3.59961 8 -8v-16c0 -4.40039 -3.59961 -8 -8 -8h-112zM360 192c-4.40039 0 -8 3.59961 -8 8v16c0 4.40039 3.59961 8 8 8h112\nc4.40039 0 8 -3.59961 8 -8v-16c0 -4.40039 -3.59961 -8 -8 -8h-112zM360 256c-4.40039 0 -8 3.59961 -8 8v16c0 4.40039 3.59961 8 8 8h112c4.40039 0 8 -3.59961 8 -8v-16c0 -4.40039 -3.59961 -8 -8 -8h-112z\" />\n    <glyph glyph-name=\"user-circle\" unicode=\"&#xf2bd;\" horiz-adv-x=\"496\" \nd=\"M248 344c53 0 96 -43 96 -96s-43 -96 -96 -96s-96 43 -96 96s43 96 96 96zM248 200c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48zM248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8\nc49.7002 0 95.0996 18.2998 130.1 48.4004c-14.8994 23 -40.3994 38.5 -69.5996 39.5c-20.7998 -6.5 -40.5996 -9.60059 -60.5 -9.60059s-39.7002 3.2002 -60.5 9.60059c-29.2002 -0.900391 -54.7002 -16.5 -69.5996 -39.5c35 -30.1006 80.3994 -48.4004 130.1 -48.4004z\nM410.7 76.0996c23.3994 32.7002 37.2998 72.7002 37.2998 115.9c0 110.3 -89.7002 200 -200 200s-200 -89.7002 -200 -200c0 -43.2002 13.9004 -83.2002 37.2998 -115.9c24.5 31.4004 62.2002 51.9004 105.101 51.9004c10.1992 0 26.0996 -9.59961 57.5996 -9.59961\nc31.5996 0 47.4004 9.59961 57.5996 9.59961c43 0 80.7002 -20.5 105.101 -51.9004z\" />\n    <glyph glyph-name=\"id-badge\" unicode=\"&#xf2c1;\" horiz-adv-x=\"384\" \nd=\"M336 448c26.5 0 48 -21.5 48 -48v-416c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48h288zM336 -16v416h-288v-416h288zM144 336c-8.7998 0 -16 7.2002 -16 16s7.2002 16 16 16h96c8.7998 0 16 -7.2002 16 -16s-7.2002 -16 -16 -16\nh-96zM192 160c-35.2998 0 -64 28.7002 -64 64s28.7002 64 64 64s64 -28.7002 64 -64s-28.7002 -64 -64 -64zM102.4 32c-12.4004 0 -22.4004 8.59961 -22.4004 19.2002v19.2002c0 31.7998 30.0996 57.5996 67.2002 57.5996c11.3994 0 17.8994 -8 44.7998 -8\nc26.0996 0 34 8 44.7998 8c37.1006 0 67.2002 -25.7998 67.2002 -57.5996v-19.2002c0 -10.6006 -10 -19.2002 -22.4004 -19.2002h-179.199z\" />\n    <glyph glyph-name=\"id-card\" unicode=\"&#xf2c2;\" horiz-adv-x=\"576\" \nd=\"M528 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h480zM528 16v288h-480v-288h32.7998c-1 4.5 -0.799805 -3.59961 -0.799805 22.4004c0 31.7998 30.0996 57.5996 67.2002 57.5996\nc11.3994 0 17.8994 -8 44.7998 -8c26.0996 0 34 8 44.7998 8c37.1006 0 67.2002 -25.7998 67.2002 -57.5996c0 -26 0.0996094 -17.9004 -0.799805 -22.4004h224.8zM360 96c-4.40039 0 -8 3.59961 -8 8v16c0 4.40039 3.59961 8 8 8h112c4.40039 0 8 -3.59961 8 -8v-16\nc0 -4.40039 -3.59961 -8 -8 -8h-112zM360 160c-4.40039 0 -8 3.59961 -8 8v16c0 4.40039 3.59961 8 8 8h112c4.40039 0 8 -3.59961 8 -8v-16c0 -4.40039 -3.59961 -8 -8 -8h-112zM360 224c-4.40039 0 -8 3.59961 -8 8v16c0 4.40039 3.59961 8 8 8h112\nc4.40039 0 8 -3.59961 8 -8v-16c0 -4.40039 -3.59961 -8 -8 -8h-112zM192 128c-35.2998 0 -64 28.7002 -64 64s28.7002 64 64 64s64 -28.7002 64 -64s-28.7002 -64 -64 -64z\" />\n    <glyph glyph-name=\"window-maximize\" unicode=\"&#xf2d0;\" \nd=\"M464 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h416zM464 22v234h-416v-234c0 -3.2998 2.7002 -6 6 -6h404c3.2998 0 6 2.7002 6 6z\" />\n    <glyph glyph-name=\"window-minimize\" unicode=\"&#xf2d1;\" \nd=\"M480 -32h-448c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32h448c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32z\" />\n    <glyph glyph-name=\"window-restore\" unicode=\"&#xf2d2;\" \nd=\"M464 448c26.5 0 48 -21.5 48 -48v-320c0 -26.5 -21.5 -48 -48 -48h-48v-48c0 -26.5 -21.5 -48 -48 -48h-320c-26.5 0 -48 21.5 -48 48v320c0 26.5 21.5 48 48 48h48v48c0 26.5 21.5 48 48 48h320zM368 -16v208h-320v-208h320zM464 80v320h-320v-48h224\nc26.5 0 48 -21.5 48 -48v-224h48z\" />\n    <glyph glyph-name=\"snowflake\" unicode=\"&#xf2dc;\" horiz-adv-x=\"448\" \nd=\"M440.1 92.7998c7.60059 -4.39941 10.1006 -14.2002 5.5 -21.7002l-7.89941 -13.8994c-4.40039 -7.7002 -14 -10.2998 -21.5 -5.90039l-39.2002 23l9.09961 -34.7002c2.30078 -8.5 -2.69922 -17.2998 -11.0996 -19.5996l-15.2002 -4.09961\nc-8.39941 -2.30078 -17.0996 2.7998 -19.2998 11.2998l-21.2998 81l-71.9004 42.2002v-84.5l58.2998 -59.3008c6.10059 -6.19922 6.10059 -16.3994 0 -22.5996l-11.0996 -11.2998c-6.09961 -6.2002 -16.0996 -6.2002 -22.2002 0l-24.8994 25.3994v-46.0996\nc0 -8.7998 -7 -16 -15.7002 -16h-15.7002c-8.7002 0 -15.7002 7.2002 -15.7002 16v45.9004l-24.8994 -25.4004c-6.10059 -6.2002 -16.1006 -6.2002 -22.2002 0l-11.1006 11.2998c-6.09961 6.2002 -6.09961 16.4004 0 22.6006l58.3008 59.2998v84.5l-71.9004 -42.2002\nl-21.2998 -81c-2.2998 -8.5 -10.9004 -13.5996 -19.2998 -11.2998l-15.2002 4.09961c-8.40039 2.2998 -13.2998 11.1006 -11.1006 19.6006l9.10059 34.6992l-39.2002 -23c-7.5 -4.39941 -17.2002 -1.7998 -21.5 5.90039l-7.90039 13.9004\nc-4.2998 7.69922 -1.69922 17.5 5.80078 21.8994l39.1992 23l-34.0996 9.2998c-8.40039 2.30078 -13.2998 11.1006 -11.0996 19.6006l4.09961 15.5c2.2998 8.5 10.9004 13.5996 19.2998 11.2998l79.7002 -21.7002l71.9004 42.2002l-71.9004 42.2002l-79.7002 -21.7002\nc-8.39941 -2.2998 -17.0996 2.7998 -19.2998 11.2998l-4.09961 15.5c-2.30078 8.5 2.69922 17.2998 11.0996 19.6006l34.0996 9.09961l-39.1992 23c-7.60059 4.5 -10.1006 14.2002 -5.80078 21.9004l7.90039 13.8994c4.40039 7.7002 14 10.2998 21.5 5.90039l39.2002 -23\nl-9.10059 34.7002c-2.2998 8.5 2.7002 17.2998 11.1006 19.5996l15.2002 4.09961c8.39941 2.30078 17.0996 -2.7998 19.2998 -11.2998l21.2998 -81l71.9004 -42.2002v84.5l-58.3008 59.3008c-6.09961 6.19922 -6.09961 16.3994 0 22.5996l11.5 11.2998\nc6.10059 6.2002 16.1006 6.2002 22.2002 0l24.9004 -25.3994v46.0996c0 8.7998 7 16 15.7002 16h15.6992c8.7002 0 15.7002 -7.2002 15.7002 -16v-45.9004l24.9004 25.4004c6.09961 6.2002 16.0996 6.2002 22.2002 0l11.0996 -11.2998\nc6.09961 -6.2002 6.09961 -16.4004 0 -22.6006l-58.2998 -59.2998v-84.5l71.8994 42.2002l21.3008 81c2.2998 8.5 10.8994 13.5996 19.2998 11.2998l15.2002 -4.09961c8.39941 -2.2998 13.2998 -11.1006 11.0996 -19.6006l-9.09961 -34.6992l39.1992 23\nc7.5 4.39941 17.2002 1.7998 21.5 -5.90039l7.90039 -13.9004c4.2998 -7.69922 1.7002 -17.5 -5.7998 -21.8994l-39.2002 -23l34.0996 -9.2998c8.40039 -2.30078 13.3008 -11.1006 11.1006 -19.6006l-4.10059 -15.5c-2.2998 -8.5 -10.8994 -13.5996 -19.2998 -11.2998\nl-79.7002 21.7002l-71.8994 -42.2002l71.7998 -42.2002l79.7002 21.7002c8.39941 2.2998 17.0996 -2.7998 19.2998 -11.2998l4.09961 -15.5c2.30078 -8.5 -2.69922 -17.2998 -11.0996 -19.6006l-34.0996 -9.2998z\" />\n    <glyph glyph-name=\"trash-alt\" unicode=\"&#xf2ed;\" horiz-adv-x=\"448\" \nd=\"M268 32c-6.62402 0 -12 5.37598 -12 12v216c0 6.62402 5.37598 12 12 12h24c6.62402 0 12 -5.37598 12 -12v-216c0 -6.62402 -5.37598 -12 -12 -12h-24zM432 368c8.83203 0 16 -7.16797 16 -16v-16c0 -8.83203 -7.16797 -16 -16 -16h-16v-336\nc0 -26.4961 -21.5039 -48 -48 -48h-288c-26.4961 0 -48 21.5039 -48 48v336h-16c-8.83203 0 -16 7.16797 -16 16v16c0 8.83203 7.16797 16 16 16h82.4102l34.0195 56.7002c7.71875 12.8613 26.1572 23.2998 41.1572 23.2998h0.00292969h100.82h0.0224609\nc15 0 33.4385 -10.4385 41.1572 -23.2998l34 -56.7002h82.4102zM171.84 397.09l-17.4502 -29.0898h139.221l-17.46 29.0898c-0.96582 1.60645 -3.26953 2.91016 -5.14355 2.91016h-0.00683594h-94h-0.0166016c-1.87402 0 -4.17871 -1.30371 -5.14355 -2.91016zM368 -16v336\nh-288v-336h288zM156 32c-6.62402 0 -12 5.37598 -12 12v216c0 6.62402 5.37598 12 12 12h24c6.62402 0 12 -5.37598 12 -12v-216c0 -6.62402 -5.37598 -12 -12 -12h-24z\" />\n    <glyph glyph-name=\"images\" unicode=\"&#xf302;\" horiz-adv-x=\"576\" \nd=\"M480 32v-16c0 -26.5098 -21.4902 -48 -48 -48h-384c-26.5098 0 -48 21.4902 -48 48v256c0 26.5098 21.4902 48 48 48h16v-48h-10c-3.31152 0 -6 -2.68848 -6 -6v-244c0 -3.31152 2.68848 -6 6 -6h372c3.31152 0 6 2.68848 6 6v10h48zM522 368h-372\nc-3.31152 0 -6 -2.68848 -6 -6v-244c0 -3.31152 2.68848 -6 6 -6h372c3.31152 0 6 2.68848 6 6v244c0 3.31152 -2.68848 6 -6 6zM528 416c26.5098 0 48 -21.4902 48 -48v-256c0 -26.5098 -21.4902 -48 -48 -48h-384c-26.5098 0 -48 21.4902 -48 48v256\nc0 26.5098 21.4902 48 48 48h384zM264 304c0 -22.0908 -17.9092 -40 -40 -40s-40 17.9092 -40 40s17.9092 40 40 40s40 -17.9092 40 -40zM192 208l39.5146 39.5146c4.68652 4.68652 12.2842 4.68652 16.9717 0l39.5137 -39.5146l103.515 103.515\nc4.68652 4.68652 12.2842 4.68652 16.9717 0l71.5137 -71.5146v-80h-288v48z\" />\n    <glyph glyph-name=\"clipboard\" unicode=\"&#xf328;\" horiz-adv-x=\"384\" \nd=\"M336 384c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h80c0 35.2998 28.7002 64 64 64s64 -28.7002 64 -64h80zM192 408c-13.2998 0 -24 -10.7002 -24 -24s10.7002 -24 24 -24s24 10.7002 24 24\ns-10.7002 24 -24 24zM336 -10v340c0 3.2998 -2.7002 6 -6 6h-42v-36c0 -6.59961 -5.40039 -12 -12 -12h-168c-6.59961 0 -12 5.40039 -12 12v36h-42c-3.2998 0 -6 -2.7002 -6 -6v-340c0 -3.2998 2.7002 -6 6 -6h276c3.2998 0 6 2.7002 6 6z\" />\n    <glyph glyph-name=\"arrow-alt-circle-down\" unicode=\"&#xf358;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM256 -8c110.5 0 200 89.5 200 200s-89.5 200 -200 200s-200 -89.5 -200 -200s89.5 -200 200 -200zM224 308c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-116\nh67c10.7002 0 16.0996 -12.9004 8.5 -20.5l-99 -99c-4.7002 -4.7002 -12.2998 -4.7002 -17 0l-99 99c-7.5 7.59961 -2.2002 20.5 8.5 20.5h67v116z\" />\n    <glyph glyph-name=\"arrow-alt-circle-left\" unicode=\"&#xf359;\" \nd=\"M8 192c0 137 111 248 248 248s248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248zM456 192c0 110.5 -89.5 200 -200 200s-200 -89.5 -200 -200s89.5 -200 200 -200s200 89.5 200 200zM384 212v-40c0 -6.59961 -5.40039 -12 -12 -12h-116v-67\nc0 -10.7002 -12.9004 -16 -20.5 -8.5l-99 99c-4.7002 4.7002 -4.7002 12.2998 0 17l99 99c7.59961 7.59961 20.5 2.2002 20.5 -8.5v-67h116c6.59961 0 12 -5.40039 12 -12z\" />\n    <glyph glyph-name=\"arrow-alt-circle-right\" unicode=\"&#xf35a;\" \nd=\"M504 192c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248s248 -111 248 -248zM56 192c0 -110.5 89.5 -200 200 -200s200 89.5 200 200s-89.5 200 -200 200s-200 -89.5 -200 -200zM128 172v40c0 6.59961 5.40039 12 12 12h116v67\nc0 10.7002 12.9004 16 20.5 8.5l99 -99c4.7002 -4.7002 4.7002 -12.2998 0 -17l-99 -99c-7.59961 -7.59961 -20.5 -2.2002 -20.5 8.5v67h-116c-6.59961 0 -12 5.40039 -12 12z\" />\n    <glyph glyph-name=\"arrow-alt-circle-up\" unicode=\"&#xf35b;\" \nd=\"M256 -56c-137 0 -248 111 -248 248s111 248 248 248s248 -111 248 -248s-111 -248 -248 -248zM256 392c-110.5 0 -200 -89.5 -200 -200s89.5 -200 200 -200s200 89.5 200 200s-89.5 200 -200 200zM276 64h-40c-6.59961 0 -12 5.40039 -12 12v116h-67\nc-10.7002 0 -16 12.9004 -8.5 20.5l99 99c4.7002 4.7002 12.2998 4.7002 17 0l99 -99c7.59961 -7.59961 2.2002 -20.5 -8.5 -20.5h-67v-116c0 -6.59961 -5.40039 -12 -12 -12z\" />\n    <glyph glyph-name=\"gem\" unicode=\"&#xf3a5;\" horiz-adv-x=\"576\" \nd=\"M464 448c4.09961 0 7.7998 -2 10.0996 -5.40039l99.9004 -147.199c2.90039 -4.40039 2.59961 -10.1006 -0.700195 -14.2002l-276 -340.8c-4.7998 -5.90039 -13.7998 -5.90039 -18.5996 0l-276 340.8c-3.2998 4 -3.60059 9.7998 -0.700195 14.2002l100 147.199\nc2.2002 3.40039 6 5.40039 10 5.40039h352zM444.7 400h-56.7998l51.6992 -96h68.4004zM242.6 400l-51.5996 -96h194l-51.7002 96h-90.7002zM131.3 400l-63.2998 -96h68.4004l51.6992 96h-56.7998zM88.2998 256l119.7 -160l-68.2998 160h-51.4004zM191.2 256l96.7998 -243.3\nl96.7998 243.3h-193.6zM368 96l119.6 160h-51.3994z\" />\n    <glyph glyph-name=\"money-bill-alt\" unicode=\"&#xf3d1;\" horiz-adv-x=\"640\" \nd=\"M320 304c53.0195 0 96 -50.1396 96 -112c0 -61.8701 -43 -112 -96 -112c-53.0195 0 -96 50.1504 -96 112c0 61.8604 42.9805 112 96 112zM360 136v16c0 4.41992 -3.58008 8 -8 8h-16v88c0 4.41992 -3.58008 8 -8 8h-13.5801h-0.000976562\nc-4.01074 0 -9.97266 -1.80566 -13.3086 -4.03027l-15.3301 -10.2197c-1.96777 -1.30957 -3.56445 -4.29004 -3.56445 -6.65332c0 -1.33691 0.601562 -3.32422 1.34375 -4.43652l8.88086 -13.3105c1.30859 -1.9668 4.29004 -3.56445 6.65332 -3.56445\nc1.33691 0 3.32422 0.602539 4.43652 1.34473l0.469727 0.310547v-55.4404h-16c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h64c4.41992 0 8 3.58008 8 8zM608 384c17.6699 0 32 -14.3301 32 -32v-320c0 -17.6699 -14.3301 -32 -32 -32h-576\nc-17.6699 0 -32 14.3301 -32 32v320c0 17.6699 14.3301 32 32 32h576zM592 112v160c-35.3496 0 -64 28.6504 -64 64h-416c0 -35.3496 -28.6504 -64 -64 -64v-160c35.3496 0 64 -28.6504 64 -64h416c0 35.3496 28.6504 64 64 64z\" />\n    <glyph glyph-name=\"window-close\" unicode=\"&#xf410;\" \nd=\"M464 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h416zM464 22v340c0 3.2998 -2.7002 6 -6 6h-404c-3.2998 0 -6 -2.7002 -6 -6v-340c0 -3.2998 2.7002 -6 6 -6h404c3.2998 0 6 2.7002 6 6z\nM356.5 253.4l-61.4004 -61.4004l61.4004 -61.4004c4.59961 -4.59961 4.59961 -12.0996 0 -16.7998l-22.2998 -22.2998c-4.60059 -4.59961 -12.1006 -4.59961 -16.7998 0l-61.4004 61.4004l-61.4004 -61.4004c-4.59961 -4.59961 -12.0996 -4.59961 -16.7998 0\nl-22.2998 22.2998c-4.59961 4.60059 -4.59961 12.1006 0 16.7998l61.4004 61.4004l-61.4004 61.4004c-4.59961 4.59961 -4.59961 12.0996 0 16.7998l22.2998 22.2998c4.60059 4.59961 12.1006 4.59961 16.7998 0l61.4004 -61.4004l61.4004 61.4004\nc4.59961 4.59961 12.0996 4.59961 16.7998 0l22.2998 -22.2998c4.7002 -4.60059 4.7002 -12.1006 0 -16.7998z\" />\n    <glyph glyph-name=\"comment-dots\" unicode=\"&#xf4ad;\" \nd=\"M144 240c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32zM256 240c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32zM368 240c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32\ns-32 14.2998 -32 32s14.2998 32 32 32zM256 416c141.4 0 256 -93.0996 256 -208s-114.6 -208 -256 -208c-32.7998 0 -64 5.2002 -92.9004 14.2998c-29.0996 -20.5996 -77.5996 -46.2998 -139.1 -46.2998c-9.59961 0 -18.2998 5.7002 -22.0996 14.5\nc-3.80078 8.7998 -2 19 4.59961 26c0.5 0.400391 31.5 33.7998 46.4004 73.2002c-33 35.0996 -52.9004 78.7002 -52.9004 126.3c0 114.9 114.6 208 256 208zM256 48c114.7 0 208 71.7998 208 160s-93.2998 160 -208 160s-208 -71.7998 -208 -160\nc0 -42.2002 21.7002 -74.0996 39.7998 -93.4004l20.6006 -21.7998l-10.6006 -28.0996c-5.5 -14.5 -12.5996 -28.1006 -19.8994 -40.2002c23.5996 7.59961 43.1992 18.9004 57.5 29l19.5 13.7998l22.6992 -7.2002c25.3008 -8 51.7002 -12.0996 78.4004 -12.0996z\" />\n    <glyph glyph-name=\"smile-wink\" unicode=\"&#xf4da;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM365.8 138.4c10.2002 -8.5 11.6006 -23.6006 3.10059 -33.8008\nc-30 -36 -74.1006 -56.5996 -120.9 -56.5996s-90.9004 20.5996 -120.9 56.5996c-8.39941 10.2002 -7.09961 25.3008 3.10059 33.8008c10.0996 8.39941 25.2998 7.09961 33.7998 -3.10059c20.7998 -25.0996 51.5 -39.3994 84 -39.3994s63.2002 14.3994 84 39.3994\nc8.5 10.2002 23.5996 11.6006 33.7998 3.10059zM168 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32zM328 268c25.7002 0 55.9004 -16.9004 59.7002 -42.0996c1.7998 -11.1006 -11.2998 -18.2002 -19.7998 -10.8008l-9.5 8.5\nc-14.8008 13.2002 -46.2002 13.2002 -61 0l-9.5 -8.5c-8.30078 -7.39941 -21.5 -0.399414 -19.8008 10.8008c4 25.1992 34.2002 42.0996 59.9004 42.0996z\" />\n    <glyph glyph-name=\"angry\" unicode=\"&#xf556;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM248 136c33.5996 0 65.2002 -14.7998 86.7998 -40.5996\nc8.40039 -10.2002 7.10059 -25.3008 -3.09961 -33.8008c-10.6006 -8.89941 -25.7002 -6.69922 -33.7998 3c-24.8008 29.7002 -75 29.7002 -99.8008 0c-8.5 -10.1992 -23.5996 -11.5 -33.7998 -3s-11.5996 23.6006 -3.09961 33.8008\nc21.5996 25.7998 53.2002 40.5996 86.7998 40.5996zM200 208c0 -17.7002 -14.2998 -32.0996 -32 -32.0996s-32 14.2998 -32 32c0 6.19922 2.2002 11.6992 5.2998 16.5996l-28.2002 8.5c-12.6992 3.7998 -19.8994 17.2002 -16.0996 29.9004\nc3.7998 12.6992 17.0996 20 29.9004 16.0996l80 -24c12.6992 -3.7998 19.8994 -17.2002 16.0996 -29.9004c-3.09961 -10.3994 -12.7002 -17.0996 -23 -17.0996zM399 262.9c3.7998 -12.7002 -3.40039 -26.1006 -16.0996 -29.8008l-28.2002 -8.5\nc3.09961 -4.89941 5.2998 -10.3994 5.2998 -16.5996c0 -17.7002 -14.2998 -32 -32 -32s-32 14.2998 -32 32c-10.2998 0 -19.9004 6.7002 -23 17.0996c-3.7998 12.7002 3.40039 26.1006 16.0996 29.9004l80 24c12.8008 3.7998 26.1006 -3.40039 29.9004 -16.0996z\" />\n    <glyph glyph-name=\"dizzy\" unicode=\"&#xf567;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM214.2 209.9\nc-7.90039 -7.90039 -20.5 -7.90039 -28.4004 -0.200195l-17.7998 17.7998l-17.7998 -17.7998c-7.7998 -7.7998 -20.5 -7.7998 -28.2998 0c-7.80078 7.7998 -7.80078 20.5 0 28.2998l17.8994 17.9004l-17.8994 17.8994c-7.80078 7.7998 -7.80078 20.5 0 28.2998\nc7.7998 7.80078 20.5 7.80078 28.2998 0l17.7998 -17.7998l17.9004 17.9004c7.7998 7.7998 20.5 7.7998 28.2998 0s7.7998 -20.5 0 -28.2998l-17.9004 -17.9004l17.9004 -17.7998c7.7998 -7.7998 7.7998 -20.5 0 -28.2998zM374.2 302.1\nc7.7002 -7.7998 7.7002 -20.3994 0 -28.1992l-17.9004 -17.9004l17.7998 -18c7.80078 -7.7998 7.80078 -20.5 0 -28.2998c-7.7998 -7.7998 -20.5 -7.7998 -28.2998 0l-17.7998 17.7998l-17.7998 -17.7998c-7.7998 -7.7998 -20.5 -7.7998 -28.2998 0\nc-7.80078 7.7998 -7.80078 20.5 0 28.2998l17.8994 17.9004l-17.8994 17.8994c-7.80078 7.7998 -7.80078 20.5 0 28.2998c7.7998 7.80078 20.5 7.80078 28.2998 0l17.7998 -17.7998l17.9004 17.7998c7.7998 7.80078 20.5 7.80078 28.2998 0zM248 176\nc35.2998 0 64 -28.7002 64 -64s-28.7002 -64 -64 -64s-64 28.7002 -64 64s28.7002 64 64 64z\" />\n    <glyph glyph-name=\"flushed\" unicode=\"&#xf579;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM344 304c44.2002 0 80 -35.7998 80 -80s-35.7998 -80 -80 -80\ns-80 35.7998 -80 80s35.7998 80 80 80zM344 176c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48zM344 248c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24s-24 10.7002 -24 24s10.7002 24 24 24zM232 224c0 -44.2002 -35.7998 -80 -80 -80\ns-80 35.7998 -80 80s35.7998 80 80 80s80 -35.7998 80 -80zM152 176c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48zM152 248c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24s-24 10.7002 -24 24s10.7002 24 24 24zM312 104\nc13.2002 0 24 -10.7998 24 -24s-10.7998 -24 -24 -24h-128c-13.2002 0 -24 10.7998 -24 24s10.7998 24 24 24h128z\" />\n    <glyph glyph-name=\"frown-open\" unicode=\"&#xf57a;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM200 240c0 -17.7002 -14.2998 -32 -32 -32s-32 14.2998 -32 32\ns14.2998 32 32 32s32 -14.2998 32 -32zM328 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32zM248 160c35.5996 0 88.7998 -21.2998 95.7998 -61.2002c2 -11.7998 -9.09961 -21.5996 -20.5 -18.0996\nc-31.2002 9.59961 -59.3994 15.2998 -75.2998 15.2998s-44.0996 -5.7002 -75.2998 -15.2998c-11.5 -3.40039 -22.5 6.2998 -20.5 18.0996c7 39.9004 60.2002 61.2002 95.7998 61.2002z\" />\n    <glyph glyph-name=\"grimace\" unicode=\"&#xf57f;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM168 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32\ns32 -14.2998 32 -32s-14.2998 -32 -32 -32zM328 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32zM344 192c26.5 0 48 -21.5 48 -48v-32c0 -26.5 -21.5 -48 -48 -48h-192c-26.5 0 -48 21.5 -48 48v32c0 26.5 21.5 48 48 48\nh192zM176 96v24h-40v-8c0 -8.7998 7.2002 -16 16 -16h24zM176 136v24h-24c-8.7998 0 -16 -7.2002 -16 -16v-8h40zM240 96v24h-48v-24h48zM240 136v24h-48v-24h48zM304 96v24h-48v-24h48zM304 136v24h-48v-24h48zM360 112v8h-40v-24h24c8.7998 0 16 7.2002 16 16zM360 136v8\nc0 8.7998 -7.2002 16 -16 16h-24v-24h40z\" />\n    <glyph glyph-name=\"grin\" unicode=\"&#xf580;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM353.6 143.4c10 3.09961 19.3008 -5.5 17.7002 -15.3008\nc-8 -47.0996 -71.2998 -80 -123.3 -80s-115.4 32.9004 -123.3 80c-1.7002 9.90039 7.7998 18.4004 17.7002 15.3008c26 -8.30078 64.3994 -13.1006 105.6 -13.1006s79.7002 4.7998 105.6 13.1006zM168 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32\ns32 -14.2998 32 -32s-14.2998 -32 -32 -32zM328 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32z\" />\n    <glyph glyph-name=\"grin-alt\" unicode=\"&#xf581;\" horiz-adv-x=\"496\" \nd=\"M200.3 200c-7.5 -11.4004 -24.5996 -12 -32.7002 0c-12.3994 18.7002 -15.1992 37.2998 -15.6992 56c0.599609 18.7002 3.2998 37.2998 15.6992 56c7.60059 11.4004 24.7002 12 32.7002 0c12.4004 -18.7002 15.2002 -37.2998 15.7002 -56\nc-0.599609 -18.7002 -3.2998 -37.2998 -15.7002 -56zM328.3 200c-7.5 -11.4004 -24.5996 -12 -32.7002 0c-12.3994 18.7002 -15.1992 37.2998 -15.6992 56c0.599609 18.7002 3.2998 37.2998 15.6992 56c7.60059 11.4004 24.7002 12 32.7002 0\nc12.4004 -18.7002 15.2002 -37.2998 15.7002 -56c-0.599609 -18.7002 -3.2998 -37.2998 -15.7002 -56zM248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200\ns-200 -89.7002 -200 -200s89.7002 -200 200 -200zM353.6 143.4c10 3.09961 19.3008 -5.5 17.7002 -15.3008c-8 -47.0996 -71.2998 -80 -123.3 -80s-115.4 32.8008 -123.3 80c-1.7002 10 7.7998 18.4004 17.7002 15.3008c26 -8.30078 64.3994 -13.1006 105.6 -13.1006\ns79.7002 4.7998 105.6 13.1006z\" />\n    <glyph glyph-name=\"grin-beam\" unicode=\"&#xf582;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM353.6 143.4c10 3.09961 19.3008 -5.5 17.7002 -15.3008\nc-8 -47.0996 -71.2998 -80 -123.3 -80s-115.4 32.9004 -123.3 80c-1.7002 10 7.89941 18.4004 17.7002 15.3008c26 -8.30078 64.3994 -13.1006 105.6 -13.1006s79.7002 4.7998 105.6 13.1006zM117.7 216.3c-3.60059 1.10059 -6 4.60059 -5.7002 8.2998\nc3.2998 42.1006 32.2002 71.4004 56 71.4004s52.7002 -29.2998 56 -71.4004c0.299805 -3.7998 -2.09961 -7.19922 -5.7002 -8.2998c-3.09961 -1 -7.2002 0 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996s-23.7998 -7.89941 -31.5 -21.5996\nl-9.5 -17c-1.90039 -3.2002 -5.7998 -4.7998 -9.2998 -3.7002zM277.7 216.3c-3.60059 1.10059 -6 4.60059 -5.7002 8.2998c3.2998 42.1006 32.2002 71.4004 56 71.4004s52.7002 -29.2998 56 -71.4004c0.299805 -3.7998 -2.09961 -7.19922 -5.7002 -8.2998\nc-3.09961 -1 -7.2002 0 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996s-23.7998 -7.89941 -31.5 -21.5996l-9.5 -17c-1.90039 -3.2002 -5.7998 -4.7998 -9.2998 -3.7002z\" />\n    <glyph glyph-name=\"grin-beam-sweat\" unicode=\"&#xf583;\" horiz-adv-x=\"496\" \nd=\"M440 288c-29.5 0 -53.2998 26.2998 -53.2998 58.7002c0 25 31.7002 75.5 46.2002 97.2998c3.5 5.2998 10.5996 5.2998 14.1992 0c14.5 -21.7998 46.2002 -72.2998 46.2002 -97.2998c0 -32.4004 -23.7998 -58.7002 -53.2998 -58.7002zM248 48\nc-51.9004 0 -115.3 32.9004 -123.3 80c-1.7002 10 7.89941 18.4004 17.7002 15.2998c26 -8.2998 64.3994 -13.0996 105.6 -13.0996s79.7002 4.7998 105.6 13.0996c10 3.2002 19.4004 -5.39941 17.7002 -15.2998c-8 -47.0996 -71.3994 -80 -123.3 -80zM378.3 216.3\nc-3.09961 -0.899414 -7.2002 0.100586 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996s-23.7998 -7.89941 -31.5 -21.5996l-9.5 -17c-1.90039 -3.2002 -5.7998 -4.7998 -9.2998 -3.7002c-3.60059 1.10059 -6 4.60059 -5.7002 8.2998\nc3.2998 42.1006 32.2002 71.4004 56 71.4004s52.7002 -29.2998 56 -71.4004c0.299805 -3.7998 -2.09961 -7.19922 -5.7002 -8.2998zM483.6 269.2c8 -24.2998 12.4004 -50.2002 12.4004 -77.2002c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248\nc45.7002 0 88.4004 -12.5996 125.2 -34.2002c-10.9004 -21.5996 -15.5 -36.2002 -17.2002 -45.7002c-31.2002 20.1006 -68.2002 31.9004 -108 31.9004c-110.3 0 -200 -89.7002 -200 -200s89.7002 -200 200 -200s200 89.7002 200 200\nc0 22.5 -3.90039 44.0996 -10.7998 64.2998c0.399414 0 21.7998 -2.7998 46.3994 12.9004zM168 258.6c-12.2998 0 -23.7998 -7.7998 -31.5 -21.5996l-9.5 -17c-1.90039 -3.2002 -5.7998 -4.7998 -9.2998 -3.7002c-3.60059 1.10059 -6 4.60059 -5.7002 8.2998\nc3.2998 42.1006 32.2002 71.4004 56 71.4004s52.7002 -29.2998 56 -71.4004c0.299805 -3.7998 -2.09961 -7.19922 -5.7002 -8.2998c-3.09961 -1 -7.2002 0 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996z\" />\n    <glyph glyph-name=\"grin-hearts\" unicode=\"&#xf584;\" horiz-adv-x=\"496\" \nd=\"M353.6 143.4c10 3.09961 19.3008 -5.5 17.7002 -15.3008c-8 -47.0996 -71.2998 -80 -123.3 -80s-115.4 32.8008 -123.3 80c-1.7002 10 7.89941 18.4004 17.7002 15.3008c26 -8.30078 64.3994 -13.1006 105.6 -13.1006s79.7002 4.7998 105.6 13.1006zM200.8 192.3\nl-70.2002 18.1006c-20.3994 5.2998 -31.8994 27 -24.1992 47.1992c6.69922 17.7002 26.6992 26.7002 44.8994 22l7.10059 -1.89941l2 7.09961c5.09961 18.1006 22.8994 30.9004 41.5 27.9004c21.3994 -3.40039 34.3994 -24.2002 28.7998 -44.5l-19.4004 -69.9004\nc-1.2998 -4.5 -6 -7.2002 -10.5 -6zM389.6 257.6c7.7002 -20.1992 -3.7998 -41.7998 -24.1992 -47.0996l-70.2002 -18.2002c-4.60059 -1.2002 -9.2998 1.5 -10.5 6l-19.4004 69.9004c-5.59961 20.2998 7.40039 41.0996 28.7998 44.5c18.7002 3 36.5 -9.7998 41.5 -27.9004\nl2 -7.09961l7.10059 1.89941c18.2002 4.7002 38.2002 -4.39941 44.8994 -22zM248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200\ns89.7002 -200 200 -200z\" />\n    <glyph glyph-name=\"grin-squint\" unicode=\"&#xf585;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM353.6 143.4c10 3.09961 19.3008 -5.5 17.7002 -15.3008\nc-8 -47.0996 -71.2998 -80 -123.3 -80s-115.4 32.9004 -123.3 80c-1.7002 9.90039 7.7998 18.4004 17.7002 15.3008c26 -8.30078 64.3994 -13.1006 105.6 -13.1006s79.7002 4.7998 105.6 13.1006zM118.9 184.2c-3.80078 4.39941 -3.90039 11 -0.100586 15.5l33.6006 40.2998\nl-33.6006 40.2998c-3.7002 4.5 -3.7002 11 0.100586 15.5c3.89941 4.40039 10.1992 5.5 15.2998 2.5l80 -48c3.59961 -2.2002 5.7998 -6.09961 5.7998 -10.2998s-2.2002 -8.09961 -5.7998 -10.2998l-80 -48c-5.40039 -3.2002 -11.7002 -1.7002 -15.2998 2.5zM361.8 181.7\nl-80 48c-3.59961 2.2002 -5.7998 6.09961 -5.7998 10.2998s2.2002 8.09961 5.7998 10.2998l80 48c5.10059 2.90039 11.5 1.90039 15.2998 -2.5c3.80078 -4.5 3.90039 -11 0.100586 -15.5l-33.6006 -40.2998l33.6006 -40.2998c3.7002 -4.5 3.7002 -11 -0.100586 -15.5\nc-3.59961 -4.2002 -9.89941 -5.7002 -15.2998 -2.5z\" />\n    <glyph glyph-name=\"grin-squint-tears\" unicode=\"&#xf586;\" \nd=\"M117.1 63.9004c6.30078 0.899414 11.7002 -4.5 10.9004 -10.9004c-3.7002 -25.7998 -13.7002 -84 -30.5996 -100.9c-22 -21.8994 -57.9004 -21.5 -80.3008 0.900391c-22.3994 22.4004 -22.7998 58.4004 -0.899414 80.2998\nc16.8994 16.9004 75.0996 26.9004 100.899 30.6006zM75.9004 105.6c-19.6006 -3.89941 -35.1006 -8.09961 -47.3008 -12.1992c-39.2998 90.5996 -22.0996 199.899 52 274c48.5 48.3994 111.9 72.5996 175.4 72.5996c38.9004 0 77.7998 -9.2002 113.2 -27.4004\nc-4 -12.1992 -8.2002 -28 -12 -48.2998c-30.4004 17.9004 -65 27.7002 -101.2 27.7002c-53.4004 0 -103.6 -20.7998 -141.4 -58.5996c-61.5996 -61.5 -74.2998 -153.4 -38.6992 -227.801zM428.2 293.2c20.2998 3.89941 36.2002 8 48.5 12\nc47.8994 -93.2002 32.8994 -210.5 -45.2002 -288.601c-48.5 -48.3994 -111.9 -72.5996 -175.4 -72.5996c-33.6992 0 -67.2998 7 -98.6992 20.5996c4.19922 12.2002 8.2998 27.7002 12.1992 47.2002c26.6006 -12.7998 55.9004 -19.7998 86.4004 -19.7998\nc53.4004 0 103.6 20.7998 141.4 58.5996c65.6992 65.7002 75.7998 166 30.7998 242.601zM394.9 320.1c-6.30078 -0.899414 -11.7002 4.5 -10.9004 10.9004c3.7002 25.7998 13.7002 84 30.5996 100.9c22 21.8994 57.9004 21.5 80.3008 -0.900391\nc22.3994 -22.4004 22.7998 -58.4004 0.899414 -80.2998c-16.8994 -16.9004 -75.0996 -26.9004 -100.899 -30.6006zM207.9 211.8c3 -3 4.19922 -7.2998 3.19922 -11.5l-22.5996 -90.5c-1.40039 -5.39941 -6.2002 -9.09961 -11.7002 -9.09961h-0.899414\nc-5.80078 0.5 -10.5 5.09961 -11 10.8994l-4.80078 52.3008l-52.2998 4.7998c-5.7998 0.5 -10.3994 5.2002 -10.8994 11c-0.400391 5.89941 3.39941 11.2002 9.09961 12.5996l90.5 22.7002c4.2002 1 8.40039 -0.200195 11.4004 -3.2002zM247.6 236.9\nc-0.0996094 0 -6.39941 -1.80078 -11.3994 3.19922c-3 3 -4.2002 7.30078 -3.2002 11.4004l22.5996 90.5c1.40039 5.7002 7 9.2002 12.6006 9.09961c5.7998 -0.5 10.5 -5.09961 11 -10.8994l4.7998 -52.2998l52.2998 -4.80078c5.7998 -0.5 10.4004 -5.19922 10.9004 -11\nc0.399414 -5.89941 -3.40039 -11.1992 -9.10059 -12.5996zM299.6 148.4c29.1006 29.0996 53 59.5996 65.3008 83.7998c4.89941 9.2998 17.5996 9.89941 23.3994 1.7002c27.7002 -38.9004 6.10059 -106.9 -30.5996 -143.7s-104.8 -58.2998 -143.7 -30.6006\nc-8.2998 5.90039 -7.5 18.6006 1.7002 23.4004c24.2002 12.5 54.7998 36.2998 83.8994 65.4004z\" />\n    <glyph glyph-name=\"grin-stars\" unicode=\"&#xf587;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM353.6 143.4c10 3.09961 19.3008 -5.5 17.7002 -15.3008\nc-8 -47.0996 -71.2998 -80 -123.3 -80s-115.4 32.8008 -123.3 80c-1.7002 10 7.89941 18.4004 17.7002 15.3008c26 -8.30078 64.3994 -13.1006 105.6 -13.1006s79.7002 4.7998 105.6 13.1006zM125.7 200.9l6.09961 34.8994l-25.3994 24.6006\nc-4.60059 4.59961 -1.90039 12.2998 4.2998 13.1992l34.8994 5l15.5 31.6006c2.90039 5.7998 11 5.7998 13.9004 0l15.5 -31.6006l34.9004 -5c6.19922 -1 8.7998 -8.69922 4.2998 -13.1992l-25.4004 -24.6006l6 -34.8994c1 -6.2002 -5.39941 -11 -11 -7.90039\nl-31.2998 16.2998l-31.2998 -16.2998c-5.60059 -3.09961 -12 1.7002 -11 7.90039zM385.4 273.6c6.19922 -1 8.89941 -8.59961 4.39941 -13.1992l-25.3994 -24.6006l6 -34.8994c1 -6.2002 -5.40039 -11 -11 -7.90039l-31.3008 16.2998l-31.2998 -16.2998\nc-5.59961 -3.09961 -12 1.7002 -11 7.90039l6 34.8994l-25.3994 24.6006c-4.60059 4.59961 -1.90039 12.2998 4.2998 13.1992l34.8994 5l15.5 31.6006c2.90039 5.7998 11 5.7998 13.9004 0l15.5 -31.6006z\" />\n    <glyph glyph-name=\"grin-tears\" unicode=\"&#xf588;\" horiz-adv-x=\"640\" \nd=\"M117.1 191.9c6.30078 0.899414 11.7002 -4.5 10.9004 -10.9004c-3.7002 -25.7998 -13.7002 -84 -30.5996 -100.9c-22 -21.8994 -57.9004 -21.5 -80.3008 0.900391c-22.3994 22.4004 -22.7998 58.4004 -0.899414 80.2998c16.8994 16.9004 75.0996 26.9004 100.899 30.6006\nzM623.8 161.3c21.9004 -21.8994 21.5 -57.8994 -0.799805 -80.2002c-22.4004 -22.3994 -58.4004 -22.7998 -80.2998 -0.899414c-16.9004 16.8994 -26.9004 75.0996 -30.6006 100.899c-0.899414 6.30078 4.5 11.7002 10.8008 10.8008\nc25.7998 -3.7002 84 -13.7002 100.899 -30.6006zM497.2 99.5996c12.3994 -37.2998 25.0996 -43.7998 28.2998 -46.5c-44.5996 -65.7998 -120 -109.1 -205.5 -109.1s-160.9 43.2998 -205.5 109.1c3.09961 2.60059 15.7998 9.10059 28.2998 46.5\nc33.4004 -63.8994 100.3 -107.6 177.2 -107.6s143.8 43.7002 177.2 107.6zM122.7 223.5c-2.40039 0.299805 -5 2.5 -49.5 -6.90039c12.3994 125.4 118.1 223.4 246.8 223.4s234.4 -98 246.8 -223.5c-44.2998 9.40039 -47.3994 7.2002 -49.5 7\nc-15.2002 95.2998 -97.7998 168.5 -197.3 168.5s-182.1 -73.2002 -197.3 -168.5zM320 48c-51.9004 0 -115.3 32.9004 -123.3 80c-1.7002 10 7.89941 18.4004 17.7002 15.2998c26 -8.2998 64.3994 -13.0996 105.6 -13.0996s79.7002 4.7998 105.6 13.0996\nc10 3.2002 19.4004 -5.39941 17.7002 -15.2998c-8 -47.0996 -71.3994 -80 -123.3 -80zM450.3 216.3c-3.09961 -0.899414 -7.2002 0.100586 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996s-23.7998 -7.89941 -31.5 -21.5996l-9.5 -17\nc-1.90039 -3.2002 -5.7998 -4.7998 -9.2998 -3.7002c-3.60059 1.10059 -6 4.60059 -5.7002 8.2998c3.2998 42.1006 32.2002 71.4004 56 71.4004s52.7002 -29.2998 56 -71.4004c0.299805 -3.7998 -2.09961 -7.19922 -5.7002 -8.2998zM240 258.6\nc-12.2998 0 -23.7998 -7.7998 -31.5 -21.5996l-9.5 -17c-1.90039 -3.2002 -5.7998 -4.7998 -9.2998 -3.7002c-3.60059 1.10059 -6 4.60059 -5.7002 8.2998c3.2998 42.1006 32.2002 71.4004 56 71.4004s52.7002 -29.2998 56 -71.4004\nc0.299805 -3.7998 -2.09961 -7.19922 -5.7002 -8.2998c-3.09961 -1 -7.2002 0 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996z\" />\n    <glyph glyph-name=\"grin-tongue\" unicode=\"&#xf589;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM312 40h0.0996094v43.7998l-17.6992 8.7998c-15.1006 7.60059 -31.5 -1.69922 -34.9004 -16.5l-2.7998 -12.0996c-2.10059 -9.2002 -15.2002 -9.2002 -17.2998 0\nl-2.80078 12.0996c-3.39941 14.8008 -19.8994 24 -34.8994 16.5l-17.7002 -8.7998v-42.7998c0 -35.2002 28 -64.5 63.0996 -65c35.8008 -0.5 64.9004 28.4004 64.9004 64zM340.2 14.7002c64 33.3994 107.8 100.3 107.8 177.3c0 110.3 -89.7002 200 -200 200\ns-200 -89.7002 -200 -200c0 -77 43.7998 -143.9 107.8 -177.3c-2.2002 8.09961 -3.7998 16.5 -3.7998 25.2998v43.5c-14.2002 12.4004 -24.4004 27.5 -27.2998 44.5c-1.7002 10 7.7998 18.4004 17.7002 15.2998c26 -8.2998 64.3994 -13.0996 105.6 -13.0996\ns79.7002 4.7998 105.6 13.0996c10 3.2002 19.4004 -5.39941 17.7002 -15.2998c-2.89941 -17 -13.0996 -32.0996 -27.2998 -44.5v-43.5c0 -8.7998 -1.59961 -17.2002 -3.7998 -25.2998zM168 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32\ns14.2998 32 32 32zM328 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32z\" />\n    <glyph glyph-name=\"grin-tongue-squint\" unicode=\"&#xf58a;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM312 40h0.0996094v43.7998l-17.6992 8.7998c-15.1006 7.60059 -31.5 -1.69922 -34.9004 -16.5l-2.7998 -12.0996c-2.10059 -9.2002 -15.2002 -9.2002 -17.2998 0\nl-2.80078 12.0996c-3.39941 14.8008 -19.8994 24 -34.8994 16.5l-17.7002 -8.7998v-42.7998c0 -35.2002 28 -64.5 63.0996 -65c35.8008 -0.5 64.9004 28.4004 64.9004 64zM340.2 14.7002c64 33.3994 107.8 100.3 107.8 177.3c0 110.3 -89.7002 200 -200 200\ns-200 -89.7002 -200 -200c0 -77 43.7998 -143.9 107.8 -177.3c-2.2002 8.09961 -3.7998 16.5 -3.7998 25.2998v43.5c-14.2002 12.4004 -24.4004 27.5 -27.2998 44.5c-1.7002 10 7.7998 18.4004 17.7002 15.2998c26 -8.2998 64.3994 -13.0996 105.6 -13.0996\ns79.7002 4.7998 105.6 13.0996c10 3.2002 19.4004 -5.39941 17.7002 -15.2998c-2.89941 -17 -13.0996 -32.0996 -27.2998 -44.5v-43.5c0 -8.7998 -1.59961 -17.2002 -3.7998 -25.2998zM377.1 295.8c3.80078 -4.39941 3.90039 -11 0.100586 -15.5l-33.6006 -40.2998\nl33.6006 -40.2998c3.7002 -4.5 3.7002 -11 -0.100586 -15.5c-3.59961 -4.2002 -9.89941 -5.7002 -15.2998 -2.5l-80 48c-3.59961 2.2002 -5.7998 6.09961 -5.7998 10.2998s2.2002 8.09961 5.7998 10.2998l80 48c5 3 11.5 1.90039 15.2998 -2.5zM214.2 250.3\nc3.59961 -2.2002 5.7998 -6.09961 5.7998 -10.2998s-2.2002 -8.09961 -5.7998 -10.2998l-80 -48c-5.40039 -3.2002 -11.7002 -1.7002 -15.2998 2.5c-3.80078 4.5 -3.90039 11 -0.100586 15.5l33.6006 40.2998l-33.6006 40.2998c-3.7002 4.5 -3.7002 11 0.100586 15.5\nc3.89941 4.5 10.2998 5.5 15.2998 2.5z\" />\n    <glyph glyph-name=\"grin-tongue-wink\" unicode=\"&#xf58b;\" horiz-adv-x=\"496\" \nd=\"M152 268c25.7002 0 55.9004 -16.9004 59.7998 -42.0996c0.799805 -5 -1.7002 -10 -6.09961 -12.4004c-5.7002 -3.09961 -11.2002 -0.599609 -13.7002 1.59961l-9.5 8.5c-14.7998 13.2002 -46.2002 13.2002 -61 0l-9.5 -8.5\nc-3.7998 -3.39941 -9.2998 -4 -13.7002 -1.59961c-4.39941 2.40039 -6.89941 7.40039 -6.09961 12.4004c3.89941 25.1992 34.0996 42.0996 59.7998 42.0996zM328 320c44.2002 0 80 -35.7998 80 -80s-35.7998 -80 -80 -80s-80 35.7998 -80 80s35.7998 80 80 80zM328 192\nc26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48zM328 264c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24s-24 10.7002 -24 24s10.7002 24 24 24zM248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248z\nM312 40h0.0996094v43.7998l-17.6992 8.7998c-15.1006 7.60059 -31.5 -1.69922 -34.9004 -16.5l-2.7998 -12.0996c-2.10059 -9.2002 -15.2002 -9.2002 -17.2998 0l-2.80078 12.0996c-3.39941 14.8008 -19.8994 24 -34.8994 16.5l-17.7002 -8.7998v-42.7998\nc0 -35.2002 28 -64.5 63.0996 -65c35.8008 -0.5 64.9004 28.4004 64.9004 64zM340.2 14.7002c64 33.3994 107.8 100.3 107.8 177.3c0 110.3 -89.7002 200 -200 200s-200 -89.7002 -200 -200c0 -77 43.7998 -143.9 107.8 -177.3\nc-2.2002 8.09961 -3.7998 16.5 -3.7998 25.2998v43.5c-14.2002 12.4004 -24.4004 27.5 -27.2998 44.5c-1.7002 10 7.7998 18.4004 17.7002 15.2998c26 -8.2998 64.3994 -13.0996 105.6 -13.0996s79.7002 4.7998 105.6 13.0996c10 3.2002 19.4004 -5.39941 17.7002 -15.2998\nc-2.89941 -17 -13.0996 -32.0996 -27.2998 -44.5v-43.5c0 -8.7998 -1.59961 -17.2002 -3.7998 -25.2998z\" />\n    <glyph glyph-name=\"grin-wink\" unicode=\"&#xf58c;\" horiz-adv-x=\"496\" \nd=\"M328 268c25.6904 0 55.8799 -16.9199 59.8701 -42.1201c1.72949 -11.0898 -11.3506 -18.2695 -19.8301 -10.8398l-9.5498 8.47949c-14.8105 13.1904 -46.1602 13.1904 -60.9707 0l-9.5498 -8.47949c-8.33008 -7.40039 -21.5801 -0.379883 -19.8301 10.8398\nc3.98047 25.2002 34.1699 42.1201 59.8604 42.1201zM168 208c-17.6699 0 -32 14.3301 -32 32s14.3301 32 32 32s32 -14.3301 32 -32s-14.3301 -32 -32 -32zM353.55 143.36c10.04 3.13965 19.3906 -5.4502 17.71 -15.3408\nc-7.92969 -47.1494 -71.3193 -80.0195 -123.26 -80.0195s-115.33 32.8701 -123.26 80.0195c-1.69043 9.9707 7.76953 18.4707 17.71 15.3408c25.9297 -8.31055 64.3994 -13.0605 105.55 -13.0605s79.6201 4.75977 105.55 13.0605zM248 440c136.97 0 248 -111.03 248 -248\ns-111.03 -248 -248 -248s-248 111.03 -248 248s111.03 248 248 248zM248 -8c110.28 0 200 89.7197 200 200s-89.7197 200 -200 200s-200 -89.7197 -200 -200s89.7197 -200 200 -200z\" />\n    <glyph glyph-name=\"kiss\" unicode=\"&#xf596;\" horiz-adv-x=\"496\" \nd=\"M168 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32zM304 140c0 -13 -13.4004 -27.2998 -35.0996 -36.4004c21.7998 -8.69922 35.1992 -23 35.1992 -36c0 -19.1992 -28.6992 -41.5 -71.5 -44h-0.5\nc-3.69922 0 -7 2.60059 -7.7998 6.2002c-0.899414 3.7998 1.10059 7.7002 4.7002 9.2002l17 7.2002c12.9004 5.5 20.7002 13.5 20.7002 21.5s-7.7998 16 -20.7998 21.5l-16.9004 7.2002c-6 2.59961 -5.7002 12.3994 0 14.7998l17 7.2002\nc12.9004 5.5 20.7002 13.5 20.7002 21.5s-7.7998 16 -20.7998 21.5l-16.9004 7.19922c-3.59961 1.5 -5.59961 5.40039 -4.7002 9.2002c0.799805 3.7998 4.40039 6.60059 8.2002 6.2002c42.7002 -2.5 71.5 -24.7998 71.5 -44zM248 440c137 0 248 -111 248 -248\ns-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM328 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32z\n\" />\n    <glyph glyph-name=\"kiss-beam\" unicode=\"&#xf597;\" horiz-adv-x=\"496\" \nd=\"M168 296c23.7998 0 52.7002 -29.2998 55.7998 -71.4004c0.299805 -3.7998 -2 -7.19922 -5.59961 -8.2998c-3.10059 -1 -7.2002 0 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996c-12.3008 0 -23.8008 -7.89941 -31.5 -21.5996l-9.5 -17\nc-1.80078 -3.2002 -5.80078 -4.7002 -9.30078 -3.7002c-3.59961 1.10059 -5.89941 4.60059 -5.59961 8.2998c3.2998 42.1006 32.2002 71.4004 56 71.4004zM248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8\nc110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM304 140c0 -13 -13.4004 -27.2998 -35.0996 -36.4004c21.7998 -8.69922 35.1992 -23 35.1992 -36c0 -19.1992 -28.6992 -41.5 -71.5 -44h-0.5\nc-3.69922 0 -7 2.60059 -7.7998 6.2002c-0.899414 3.7998 1.10059 7.7002 4.7002 9.2002l17 7.2002c12.9004 5.5 20.7002 13.5 20.7002 21.5s-7.7998 16 -20.7998 21.5l-16.9004 7.2002c-6 2.59961 -5.7002 12.3994 0 14.7998l17 7.2002\nc12.9004 5.5 20.7002 13.5 20.7002 21.5s-7.7998 16 -20.7998 21.5l-16.9004 7.19922c-3.59961 1.5 -5.59961 5.40039 -4.7002 9.2002c0.799805 3.7998 4.40039 6.60059 8.2002 6.2002c42.7002 -2.5 71.5 -24.7998 71.5 -44zM328 296\nc23.7998 0 52.7002 -29.2998 55.7998 -71.4004c0.299805 -3.7998 -2 -7.19922 -5.59961 -8.2998c-3.10059 -1 -7.2002 0 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996c-12.3008 0 -23.8008 -7.89941 -31.5 -21.5996l-9.5 -17\nc-1.80078 -3.2002 -5.80078 -4.7002 -9.30078 -3.7002c-3.59961 1.10059 -5.89941 4.60059 -5.59961 8.2998c3.2998 42.1006 32.2002 71.4004 56 71.4004z\" />\n    <glyph glyph-name=\"kiss-wink-heart\" unicode=\"&#xf598;\" horiz-adv-x=\"504\" \nd=\"M304 139.5c0 -13 -13.4004 -27.2998 -35.0996 -36.4004c21.7998 -8.69922 35.1992 -23 35.1992 -36c0 -19.1992 -28.6992 -41.5 -71.5 -44h-0.5c-3.69922 0 -7 2.60059 -7.7998 6.2002c-0.899414 3.7998 1.10059 7.7002 4.7002 9.2002l17 7.2002\nc12.9004 5.5 20.7002 13.5 20.7002 21.5s-7.7998 16 -20.7998 21.5l-16.9004 7.2002c-6 2.59961 -5.7002 12.3994 0 14.7998l17 7.2002c12.9004 5.5 20.7002 13.5 20.7002 21.5s-7.7998 16 -20.7998 21.5l-16.9004 7.19922c-3.59961 1.5 -5.59961 5.40039 -4.7002 9.2002\nc0.799805 3.7998 4.40039 6.60059 8.2002 6.2002c42.7002 -2.5 71.5 -24.7998 71.5 -44zM374.5 223c-14.7998 13.2002 -46.2002 13.2002 -61 0l-9.5 -8.5c-2.5 -2.2998 -7.90039 -4.7002 -13.7002 -1.59961c-4.39941 2.39941 -6.89941 7.39941 -6.09961 12.3994\nc3.89941 25.2002 34.2002 42.1006 59.7998 42.1006s55.7998 -16.9004 59.7998 -42.1006c0.799805 -5 -1.7002 -10 -6.09961 -12.3994c-4.40039 -2.40039 -9.90039 -1.7002 -13.7002 1.59961zM136 239.5c0 17.7002 14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32\ns-32 14.2998 -32 32zM501.1 45.5c9.2002 -23.9004 -4.39941 -49.4004 -28.5 -55.7002l-83 -21.5c-5.39941 -1.39941 -10.8994 1.7998 -12.3994 7.10059l-22.9004 82.5996c-6.59961 24 8.7998 48.5996 34 52.5996c22 3.5 43.1006 -11.5996 49 -33l2.2998 -8.39941\nl8.40039 2.2002c21.5996 5.59961 45.0996 -5.10059 53.0996 -25.9004zM334 11.7002c17.7002 -64 10.9004 -39.5 13.4004 -46.7998c-30.5 -13.4004 -64 -20.9004 -99.4004 -20.9004c-137 0 -248 111 -248 248s111 248 248 248s248 -111 247.9 -248\nc0 -31.7998 -6.2002 -62.0996 -17.1006 -90c-6 1.5 -12.2002 2.7998 -18.5996 2.90039c-5.60059 9.69922 -13.6006 17.5 -22.6006 23.8994c6.7002 19.9004 10.4004 41.1006 10.4004 63.2002c0 110.3 -89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200\nc30.7998 0 59.9004 7.2002 86 19.7002z\" />\n    <glyph glyph-name=\"laugh\" unicode=\"&#xf599;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM389.4 50.5996c37.7998 37.8008 58.5996 88 58.5996 141.4s-20.7998 103.6 -58.5996 141.4c-37.8008 37.7998 -88 58.5996 -141.4 58.5996s-103.6 -20.7998 -141.4 -58.5996\nc-37.7998 -37.8008 -58.5996 -88 -58.5996 -141.4s20.7998 -103.6 58.5996 -141.4c37.8008 -37.7998 88 -58.5996 141.4 -58.5996s103.6 20.7998 141.4 58.5996zM328 224c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32zM168 224\nc-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32zM362.4 160c8.19922 0 14.5 -7 13.5 -15c-7.5 -59.2002 -58.9004 -105 -121.101 -105h-13.5996c-62.2002 0 -113.601 45.7998 -121.101 105c-1 8 5.30078 15 13.5 15h228.801z\" />\n    <glyph glyph-name=\"laugh-beam\" unicode=\"&#xf59a;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM389.4 50.5996c37.7998 37.8008 58.5996 88 58.5996 141.4s-20.7998 103.6 -58.5996 141.4c-37.8008 37.7998 -88 58.5996 -141.4 58.5996s-103.6 -20.7998 -141.4 -58.5996\nc-37.7998 -37.8008 -58.5996 -88 -58.5996 -141.4s20.7998 -103.6 58.5996 -141.4c37.8008 -37.7998 88 -58.5996 141.4 -58.5996s103.6 20.7998 141.4 58.5996zM328 296c23.7998 0 52.7002 -29.2998 55.7998 -71.4004c0.700195 -8.5 -10.7998 -11.8994 -14.8994 -4.5\nl-9.5 17c-7.7002 13.7002 -19.2002 21.6006 -31.5 21.6006c-12.3008 0 -23.8008 -7.90039 -31.5 -21.6006l-9.5 -17c-4.10059 -7.39941 -15.6006 -4.09961 -14.9004 4.5c3.2998 42.1006 32.2002 71.4004 56 71.4004zM127 220.1c-4.2002 -7.39941 -15.7002 -4 -15.0996 4.5\nc3.2998 42.1006 32.1992 71.4004 56 71.4004c23.7998 0 52.6992 -29.2998 56 -71.4004c0.699219 -8.5 -10.8008 -11.8994 -14.9004 -4.5l-9.5 17c-7.7002 13.7002 -19.2002 21.6006 -31.5 21.6006s-23.7998 -7.90039 -31.5 -21.6006zM362.4 160c8.19922 0 14.5 -7 13.5 -15\nc-7.5 -59.2002 -58.9004 -105 -121.101 -105h-13.5996c-62.2002 0 -113.601 45.7998 -121.101 105c-1 8 5.30078 15 13.5 15h228.801z\" />\n    <glyph glyph-name=\"laugh-squint\" unicode=\"&#xf59b;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM389.4 50.5996c37.7998 37.8008 58.5996 88 58.5996 141.4s-20.7998 103.6 -58.5996 141.4c-37.8008 37.7998 -88 58.5996 -141.4 58.5996s-103.6 -20.7998 -141.4 -58.5996\nc-37.7998 -37.8008 -58.5996 -88 -58.5996 -141.4s20.7998 -103.6 58.5996 -141.4c37.8008 -37.7998 88 -58.5996 141.4 -58.5996s103.6 20.7998 141.4 58.5996zM343.6 252l33.6006 -40.2998c8.59961 -10.4004 -3.90039 -24.7998 -15.4004 -18l-80 48\nc-7.7998 4.7002 -7.7998 15.8994 0 20.5996l80 48c11.6006 6.7998 24 -7.7002 15.4004 -18zM134.2 193.7c-11.6006 -6.7998 -24.1006 7.59961 -15.4004 18l33.6006 40.2998l-33.6006 40.2998c-8.59961 10.2998 3.7998 24.9004 15.4004 18l80 -48\nc7.7998 -4.7002 7.7998 -15.8994 0 -20.5996zM362.4 160c8.19922 0 14.5 -7 13.5 -15c-7.5 -59.2002 -58.9004 -105 -121.101 -105h-13.5996c-62.2002 0 -113.601 45.7998 -121.101 105c-1 8 5.30078 15 13.5 15h228.801z\" />\n    <glyph glyph-name=\"laugh-wink\" unicode=\"&#xf59c;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM389.4 50.5996c37.7998 37.8008 58.5996 88 58.5996 141.4s-20.7998 103.6 -58.5996 141.4c-37.8008 37.7998 -88 58.5996 -141.4 58.5996s-103.6 -20.7998 -141.4 -58.5996\nc-37.7998 -37.8008 -58.5996 -88 -58.5996 -141.4s20.7998 -103.6 58.5996 -141.4c37.8008 -37.7998 88 -58.5996 141.4 -58.5996s103.6 20.7998 141.4 58.5996zM328 284c25.7002 0 55.9004 -16.9004 59.7002 -42.0996c1.7998 -11.1006 -11.2998 -18.2002 -19.7998 -10.8008\nl-9.5 8.5c-14.8008 13.2002 -46.2002 13.2002 -61 0l-9.5 -8.5c-8.30078 -7.39941 -21.5 -0.399414 -19.8008 10.8008c4 25.1992 34.2002 42.0996 59.9004 42.0996zM168 224c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32z\nM362.4 160c8.19922 0 14.5 -7 13.5 -15c-7.5 -59.2002 -58.9004 -105 -121.101 -105h-13.5996c-62.2002 0 -113.601 45.7998 -121.101 105c-1 8 5.30078 15 13.5 15h228.801z\" />\n    <glyph glyph-name=\"meh-blank\" unicode=\"&#xf5a4;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM168 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32\ns-32 14.2998 -32 32s14.2998 32 32 32zM328 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32z\" />\n    <glyph glyph-name=\"meh-rolling-eyes\" unicode=\"&#xf5a5;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM336 296c39.7998 0 72 -32.2002 72 -72s-32.2002 -72 -72 -72\ns-72 32.2002 -72 72s32.2002 72 72 72zM336 184c22.0996 0 40 17.9004 40 40c0 13.5996 -7.2998 25.0996 -17.7002 32.2998c1 -2.59961 1.7002 -5.39941 1.7002 -8.2998c0 -13.2998 -10.7002 -24 -24 -24s-24 10.7002 -24 24c0 3 0.700195 5.7002 1.7002 8.2998\nc-10.4004 -7.2002 -17.7002 -18.7002 -17.7002 -32.2998c0 -22.0996 17.9004 -40 40 -40zM232 224c0 -39.7998 -32.2002 -72 -72 -72s-72 32.2002 -72 72s32.2002 72 72 72s72 -32.2002 72 -72zM120 224c0 -22.0996 17.9004 -40 40 -40s40 17.9004 40 40\nc0 13.5996 -7.2998 25.0996 -17.7002 32.2998c1 -2.59961 1.7002 -5.39941 1.7002 -8.2998c0 -13.2998 -10.7002 -24 -24 -24s-24 10.7002 -24 24c0 3 0.700195 5.7002 1.7002 8.2998c-10.4004 -7.2002 -17.7002 -18.7002 -17.7002 -32.2998zM312 96\nc13.2002 0 24 -10.7998 24 -24s-10.7998 -24 -24 -24h-128c-13.2002 0 -24 10.7998 -24 24s10.7998 24 24 24h128z\" />\n    <glyph glyph-name=\"sad-cry\" unicode=\"&#xf5b3;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM392 53.5996c34.5996 35.9004 56 84.7002 56 138.4c0 110.3 -89.7002 200 -200 200s-200 -89.7002 -200 -200c0 -53.7002 21.4004 -102.4 56 -138.4v114.4\nc0 13.2002 10.7998 24 24 24s24 -10.7998 24 -24v-151.4c28.5 -15.5996 61.2002 -24.5996 96 -24.5996s67.5 9 96 24.5996v151.4c0 13.2002 10.7998 24 24 24s24 -10.7998 24 -24v-114.4zM205.8 213.5c-5.7998 -3.2002 -11.2002 -0.700195 -13.7002 1.59961l-9.5 8.5\nc-14.7998 13.2002 -46.1992 13.2002 -61 0l-9.5 -8.5c-3.7998 -3.39941 -9.2998 -4 -13.6992 -1.59961c-4.40039 2.40039 -6.90039 7.40039 -6.10059 12.4004c3.90039 25.1992 34.2002 42.0996 59.7998 42.0996c25.6006 0 55.8008 -16.9004 59.8008 -42.0996\nc0.799805 -5 -1.7002 -10 -6.10059 -12.4004zM344 268c25.7002 0 55.9004 -16.9004 59.7998 -42.0996c0.799805 -5 -1.7002 -10 -6.09961 -12.4004c-5.7002 -3.09961 -11.2002 -0.599609 -13.7002 1.59961l-9.5 8.5c-14.7998 13.2002 -46.2002 13.2002 -61 0l-9.5 -8.5\nc-3.7998 -3.39941 -9.2002 -4 -13.7002 -1.59961c-4.39941 2.40039 -6.89941 7.40039 -6.09961 12.4004c3.89941 25.1992 34.0996 42.0996 59.7998 42.0996zM248 176c30.9004 0 56 -28.7002 56 -64s-25.0996 -64 -56 -64s-56 28.7002 -56 64s25.0996 64 56 64z\" />\n    <glyph glyph-name=\"sad-tear\" unicode=\"&#xf5b4;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM256 144c38.0996 0 74 -16.7998 98.5 -46.0996\nc8.5 -10.2002 7.09961 -25.3008 -3.09961 -33.8008c-10.6006 -8.7998 -25.7002 -6.69922 -33.8008 3.10059c-15.2998 18.2998 -37.7998 28.7998 -61.5996 28.7998c-13.2002 0 -24 10.7998 -24 24s10.7998 24 24 24zM168 208c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32\ns32 -14.2998 32 -32s-14.2998 -32 -32 -32zM328 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32zM162.4 173.2c2.7998 3.7002 8.39941 3.7002 11.1992 0c11.4004 -15.2998 36.4004 -50.6006 36.4004 -68.1006\nc0 -22.6992 -18.7998 -41.0996 -42 -41.0996s-42 18.4004 -42 41.0996c0 17.5 25 52.8008 36.4004 68.1006z\" />\n    <glyph glyph-name=\"smile-beam\" unicode=\"&#xf5b8;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM332 135.4c8.5 10.1992 23.5996 11.5 33.7998 3.09961\nc10.2002 -8.5 11.6006 -23.5996 3.10059 -33.7998c-30 -36 -74.1006 -56.6006 -120.9 -56.6006s-90.9004 20.6006 -120.9 56.6006c-8.39941 10.2002 -7.09961 25.2998 3.10059 33.7998c10.2002 8.40039 25.2998 7.09961 33.7998 -3.09961\nc20.7998 -25.1006 51.5 -39.4004 84 -39.4004s63.2002 14.4004 84 39.4004zM136.5 237l-9.5 -17c-1.90039 -3.2002 -5.90039 -4.7998 -9.2998 -3.7002c-3.60059 1.10059 -6 4.60059 -5.7002 8.2998c3.2998 42.1006 32.2002 71.4004 56 71.4004s52.7002 -29.2998 56 -71.4004\nc0.299805 -3.7998 -2.09961 -7.19922 -5.7002 -8.2998c-3.09961 -1 -7.2002 0 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996s-23.7998 -7.89941 -31.5 -21.5996zM328 296c23.7998 0 52.7002 -29.2998 56 -71.4004\nc0.299805 -3.7998 -2.09961 -7.19922 -5.7002 -8.2998c-3.09961 -1 -7.2002 0 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996s-23.7998 -7.89941 -31.5 -21.5996l-9.5 -17c-1.90039 -3.2002 -5.7998 -4.7998 -9.2998 -3.7002\nc-3.60059 1.10059 -6 4.60059 -5.7002 8.2998c3.2998 42.1006 32.2002 71.4004 56 71.4004z\" />\n    <glyph glyph-name=\"surprise\" unicode=\"&#xf5c2;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM248 168c35.2998 0 64 -28.7002 64 -64s-28.7002 -64 -64 -64\ns-64 28.7002 -64 64s28.7002 64 64 64zM200 240c0 -17.7002 -14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32zM328 272c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32z\" />\n    <glyph glyph-name=\"tired\" unicode=\"&#xf5c8;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 -8c110.3 0 200 89.7002 200 200s-89.7002 200 -200 200s-200 -89.7002 -200 -200s89.7002 -200 200 -200zM377.1 295.8c3.80078 -4.39941 3.90039 -11 0.100586 -15.5\nl-33.6006 -40.2998l33.6006 -40.2998c3.7998 -4.5 3.7002 -11 -0.100586 -15.5c-3.5 -4.10059 -9.89941 -5.7002 -15.2998 -2.5l-80 48c-3.59961 2.2002 -5.7998 6.09961 -5.7998 10.2998s2.2002 8.09961 5.7998 10.2998l80 48c5 2.90039 11.5 1.90039 15.2998 -2.5z\nM220 240c0 -4.2002 -2.2002 -8.09961 -5.7998 -10.2998l-80 -48c-5.40039 -3.2002 -11.7998 -1.60059 -15.2998 2.5c-3.80078 4.5 -3.90039 11 -0.100586 15.5l33.6006 40.2998l-33.6006 40.2998c-3.7998 4.5 -3.7002 11 0.100586 15.5\nc3.7998 4.40039 10.2998 5.5 15.2998 2.5l80 -48c3.59961 -2.2002 5.7998 -6.09961 5.7998 -10.2998zM248 176c45.4004 0 100.9 -38.2998 107.8 -93.2998c1.5 -11.9004 -7 -21.6006 -15.5 -17.9004c-22.7002 9.7002 -56.2998 15.2002 -92.2998 15.2002\ns-69.5996 -5.5 -92.2998 -15.2002c-8.60059 -3.7002 -17 6.10059 -15.5 17.9004c6.89941 55 62.3994 93.2998 107.8 93.2998z\" />\n  </font>\n</defs></svg>\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_024_sample_app_persist_db/app/src/static/css/font-awesome/fa-solid-900.svg#fontawesome",
    "content": "<?xml version=\"1.0\" standalone=\"no\"?>\n<!--\nFont Awesome Free 5.10.2 by @fontawesome - https://fontawesome.com\nLicense - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n-->\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\" >\n<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\">\n<metadata>\nCreated by FontForge 20190801 at Thu Aug 22 14:41:09 2019\n By Robert Madole\nCopyright (c) Font Awesome\n</metadata>\n<defs>\n<font id=\"FontAwesome5Free-Solid\" horiz-adv-x=\"512\" >\n  <font-face \n    font-family=\"Font Awesome 5 Free Solid\"\n    font-weight=\"900\"\n    font-stretch=\"normal\"\n    units-per-em=\"512\"\n    panose-1=\"2 0 5 3 0 0 0 0 0 0\"\n    ascent=\"448\"\n    descent=\"-64\"\n    bbox=\"-0.983398 -64.9834 640.104 448.427\"\n    underline-thickness=\"25\"\n    underline-position=\"-50\"\n    unicode-range=\"U+0020-F897\"\n  />\n    <missing-glyph />\n    <glyph glyph-name=\"glass-martini\" unicode=\"&#xf000;\" \nd=\"M502.05 390.4l-214.05 -214.04v-192.36h56c22.0898 0 40 -17.9102 40 -40c0 -4.41992 -3.58008 -8 -8 -8h-240c-4.41992 0 -8 3.58008 -8 8c0 22.0898 17.9102 40 40 40h56v192.36l-214.05 214.04c-21.25 21.2598 -6.2002 57.5996 23.8496 57.5996h444.4\nc30.0498 0 45.0996 -36.3398 23.8496 -57.5996z\" />\n    <glyph glyph-name=\"music\" unicode=\"&#xf001;\" \nd=\"M511.99 415.99l0.00976562 -351.99c0 -35.3496 -42.9805 -64 -96 -64s-96 28.6504 -96 64s42.9805 64 96 64c11.2803 0 21.9502 -1.54004 32 -3.91992v184.63l-256 -75.0195v-233.69c0 -35.3496 -42.9805 -64 -96 -64s-96 28.6504 -96 64s42.9805 64 96 64\nc11.2803 0 21.9502 -1.54004 32 -3.91992v261.42c0 14 9.09961 26.2998 22.4004 30.5l319.989 94.5c20.5 6.5 41.6006 -8.7998 41.6006 -30.5098z\" />\n    <glyph glyph-name=\"search\" unicode=\"&#xf002;\" \nd=\"M505 5.2998c9.2998 -9.39941 9.2998 -24.5996 -0.0996094 -34l-28.3008 -28.2998c-9.2998 -9.40039 -24.5 -9.40039 -33.8994 0l-99.7002 99.7002c-4.5 4.5 -7 10.5996 -7 17v16.2998c-35.2998 -27.5996 -79.7002 -44 -128 -44c-114.9 0 -208 93.0996 -208 208\ns93.0996 208 208 208s208 -93.0996 208 -208c0 -48.2998 -16.4004 -92.7002 -44 -128h16.2998c6.40039 0 12.5 -2.5 17 -7zM208 112c70.7998 0 128 57.2998 128 128c0 70.7998 -57.2998 128 -128 128c-70.7998 0 -128 -57.2998 -128 -128c0 -70.7998 57.2998 -128 128 -128z\n\" />\n    <glyph glyph-name=\"heart\" unicode=\"&#xf004;\" \nd=\"M462.3 385.4c62.7998 -53.6006 66.1006 -149.801 9.7998 -207.9l-193.5 -199.8c-12.5 -12.9004 -32.7998 -12.9004 -45.2998 0l-193.5 199.8c-56.2002 58.0996 -52.8994 154.3 9.90039 207.9c54.7998 46.6992 136.399 38.2998 186.6 -13.6006l19.7002 -20.2998\nl19.7002 20.2998c50.2998 51.9004 131.8 60.2998 186.6 13.6006z\" />\n    <glyph glyph-name=\"star\" unicode=\"&#xf005;\" horiz-adv-x=\"576\" \nd=\"M259.3 430.2c11.7998 23.8994 45.7002 23.5996 57.4004 0l65.2998 -132.4l146.1 -21.2998c26.2002 -3.7998 36.7002 -36.0996 17.7002 -54.5996l-105.7 -103l25 -145.5c4.5 -26.3008 -23.1992 -45.9004 -46.3994 -33.7002l-130.7 68.7002l-130.7 -68.7002\nc-23.2002 -12.2998 -50.8994 7.39941 -46.3994 33.7002l25 145.5l-105.7 103c-19 18.5 -8.5 50.7998 17.7002 54.5996l146.1 21.2998z\" />\n    <glyph glyph-name=\"user\" unicode=\"&#xf007;\" horiz-adv-x=\"448\" \nd=\"M224 192c-70.7002 0 -128 57.2998 -128 128s57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128zM313.6 160c74.2002 0 134.4 -60.2002 134.4 -134.4v-41.5996c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v41.5996\nc0 74.2002 60.2002 134.4 134.4 134.4h16.6992c22.3008 -10.2002 46.9004 -16 72.9004 -16s50.7002 5.7998 72.9004 16h16.6992z\" />\n    <glyph glyph-name=\"film\" unicode=\"&#xf008;\" \nd=\"M488 384c13.2998 0 24 -10.7002 24 -24v-336c0 -13.2998 -10.7002 -24 -24 -24h-8v20c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-20h-320v20c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-20h-8\nc-13.2998 0 -24 10.7002 -24 24v336c0 13.2998 10.7002 24 24 24h8v-20c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12v20h320v-20c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12v20h8zM96 76v40c0 6.59961 -5.40039 12 -12 12h-40\nc-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12zM96 172v40c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12zM96 268v40\nc0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12zM368 60v96c0 6.59961 -5.40039 12 -12 12h-200c-6.59961 0 -12 -5.40039 -12 -12v-96c0 -6.59961 5.40039 -12 12 -12h200\nc6.59961 0 12 5.40039 12 12zM368 228v96c0 6.59961 -5.40039 12 -12 12h-200c-6.59961 0 -12 -5.40039 -12 -12v-96c0 -6.59961 5.40039 -12 12 -12h200c6.59961 0 12 5.40039 12 12zM480 76v40c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-40\nc0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12zM480 172v40c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12zM480 268v40c0 6.59961 -5.40039 12 -12 12h-40\nc-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12z\" />\n    <glyph glyph-name=\"th-large\" unicode=\"&#xf009;\" \nd=\"M296 416h192c13.2549 0 24 -10.7451 24 -24v-160c0 -13.2549 -10.7451 -24 -24 -24h-192c-13.2549 0 -24 10.7451 -24 24v160c0 13.2549 10.7451 24 24 24zM216 416c13.2549 0 24 -10.7451 24 -24v-160c0 -13.2549 -10.7451 -24 -24 -24h-192\nc-13.2549 0 -24 10.7451 -24 24v160c0 13.2549 10.7451 24 24 24h192zM0 152c0 13.2549 10.7451 24 24 24h192c13.2549 0 24 -10.7451 24 -24v-160c0 -13.2549 -10.7451 -24 -24 -24h-192c-13.2549 0 -24 10.7451 -24 24v160zM296 -32c-13.2549 0 -24 10.7451 -24 24v160\nc0 13.2549 10.7451 24 24 24h192c13.2549 0 24 -10.7451 24 -24v-160c0 -13.2549 -10.7451 -24 -24 -24h-192z\" />\n    <glyph glyph-name=\"th\" unicode=\"&#xf00a;\" \nd=\"M149.333 392v-80c0 -13.2549 -10.7451 -24 -24 -24h-101.333c-13.2549 0 -24 10.7451 -24 24v80c0 13.2549 10.7451 24 24 24h101.333c13.2549 0 24 -10.7451 24 -24zM330.667 152c0 -13.2549 -10.7451 -24 -24.001 -24h-101.333c-13.2549 0 -24 10.7451 -24 24v80\nc0 13.2549 10.7451 24 24 24h101.334c13.2549 0 24 -10.7451 24 -24v-80zM362.667 392c0 13.2549 10.7451 24 24 24h101.333c13.2549 0 24 -10.7451 24 -24v-80c0 -13.2549 -10.7451 -24 -24 -24h-101.333c-13.2549 0 -24 10.7451 -24 24v80zM330.667 312\nc0 -13.2549 -10.7451 -24 -24.001 -24h-101.333c-13.2549 0 -24 10.7451 -24 24v80c0 13.2549 10.7451 24 24 24h101.334c13.2549 0 24 -10.7451 24 -24v-80zM125.333 256c13.2549 0 24 -10.7451 24 -24v-80c0 -13.2549 -10.7451 -24 -24 -24h-101.333\nc-13.2549 0 -24 10.7451 -24 24v80c0 13.2549 10.7451 24 24 24h101.333zM0 72c0 13.2549 10.7451 24 24 24h101.333c13.2549 0 24 -10.7451 24 -24v-80c0 -13.2549 -10.7451 -24 -24 -24h-101.333c-13.2549 0 -24 10.7451 -24 24v80zM386.667 128\nc-13.2549 0 -24 10.7451 -24 24v80c0 13.2549 10.7451 24 24 24h101.333c13.2549 0 24 -10.7451 24 -24v-80c0 -13.2549 -10.7451 -24 -24 -24h-101.333zM386.667 -32c-13.2549 0 -24 10.7451 -24 24v80c0 13.2549 10.7451 24 24 24h101.333c13.2549 0 24 -10.7451 24 -24\nv-80c0 -13.2549 -10.7451 -24 -24 -24h-101.333zM181.333 72c0 13.2549 10.7451 24 24 24h101.333c13.2549 0 24 -10.7451 24 -24v-80c0 -13.2549 -10.7451 -24 -24 -24h-101.333c-13.2549 0 -24 10.7451 -24 24v80z\" />\n    <glyph glyph-name=\"th-list\" unicode=\"&#xf00b;\" \nd=\"M149.333 232v-80c0 -13.2549 -10.7451 -24 -24 -24h-101.333c-13.2549 0 -24 10.7451 -24 24v80c0 13.2549 10.7451 24 24 24h101.333c13.2549 0 24 -10.7451 24 -24zM0 72c0 13.2549 10.7451 24 24 24h101.333c13.2549 0 24 -10.7451 24 -24v-80\nc0 -13.2549 -10.7451 -24 -24 -24h-101.333c-13.2549 0 -24 10.7451 -24 24v80zM125.333 416c13.2549 0 24 -10.7451 24 -24v-80c0 -13.2549 -10.7451 -24 -24 -24h-101.333c-13.2549 0 -24 10.7451 -24 24v80c0 13.2549 10.7451 24 24 24h101.333zM205.333 -32\nc-13.2549 0 -24 10.7451 -24 24v80c0 13.2549 10.7451 24 24 24h282.667c13.2549 0 24 -10.7451 24 -24v-80c0 -13.2549 -10.7451 -24 -24 -24h-282.667zM181.333 392c0 13.2549 10.7451 24 24 24h282.667c13.2549 0 24 -10.7451 24 -24v-80\nc0 -13.2549 -10.7451 -24 -24 -24h-282.667c-13.2549 0 -24 10.7451 -24 24v80zM205.333 128c-13.2549 0 -24 10.7451 -24 24v80c0 13.2549 10.7451 24 24 24h282.667c13.2549 0 24 -10.7451 24 -24v-80c0 -13.2549 -10.7451 -24 -24 -24h-282.667z\" />\n    <glyph glyph-name=\"check\" unicode=\"&#xf00c;\" \nd=\"M173.898 8.5957l-166.4 166.4c-9.99707 9.99707 -9.99707 26.2061 0 36.2041l36.2031 36.2041c9.99707 9.99805 26.207 9.99805 36.2041 0l112.095 -112.095l240.095 240.095c9.99707 9.99707 26.207 9.99707 36.2041 0l36.2031 -36.2041\nc9.99707 -9.99707 9.99707 -26.2061 0 -36.2041l-294.4 -294.401c-9.99805 -9.99707 -26.207 -9.99707 -36.2031 0.000976562z\" />\n    <glyph glyph-name=\"times\" unicode=\"&#xf00d;\" horiz-adv-x=\"352\" \nd=\"M242.72 192l100.07 -100.07c12.2803 -12.29 12.2803 -32.1992 0 -44.4795l-22.2402 -22.2402c-12.2803 -12.2803 -32.2002 -12.2803 -44.4795 0l-100.07 100.07l-100.07 -100.07c-12.2793 -12.2803 -32.1992 -12.2803 -44.4795 0l-22.2402 22.2402\nc-12.2803 12.29 -12.2803 32.2002 0 44.4795l100.07 100.07l-100.07 100.07c-12.2803 12.29 -12.2803 32.1992 0 44.4795l22.2402 22.2402c12.29 12.2803 32.2002 12.2803 44.4795 0l100.07 -100.07l100.07 100.07c12.29 12.2803 32.1992 12.2803 44.4795 0\nl22.2402 -22.2402c12.2803 -12.29 12.2803 -32.2002 0 -44.4795z\" />\n    <glyph glyph-name=\"search-plus\" unicode=\"&#xf00e;\" \nd=\"M304 256v-32c0 -6.59961 -5.40039 -12 -12 -12h-56v-56c0 -6.59961 -5.40039 -12 -12 -12h-32c-6.59961 0 -12 5.40039 -12 12v56h-56c-6.59961 0 -12 5.40039 -12 12v32c0 6.59961 5.40039 12 12 12h56v56c0 6.59961 5.40039 12 12 12h32c6.59961 0 12 -5.40039 12 -12\nv-56h56c6.59961 0 12 -5.40039 12 -12zM505 -28.7002l-28.2998 -28.2998c-9.40039 -9.40039 -24.6006 -9.40039 -33.9004 0l-99.7998 99.7002c-4.5 4.5 -7 10.5996 -7 17v16.2998c-35.2998 -27.5996 -79.7002 -44 -128 -44c-114.9 0 -208 93.0996 -208 208\ns93.0996 208 208 208s208 -93.0996 208 -208c0 -48.2998 -16.4004 -92.7002 -44 -128h16.2998c6.40039 0 12.5 -2.5 17 -7l99.7002 -99.7002c9.2998 -9.39941 9.2998 -24.5996 0 -34zM344 240c0 75.2002 -60.7998 136 -136 136s-136 -60.7998 -136 -136\ns60.7998 -136 136 -136s136 60.7998 136 136z\" />\n    <glyph glyph-name=\"search-minus\" unicode=\"&#xf010;\" \nd=\"M304 256v-32c0 -6.59961 -5.40039 -12 -12 -12h-168c-6.59961 0 -12 5.40039 -12 12v32c0 6.59961 5.40039 12 12 12h168c6.59961 0 12 -5.40039 12 -12zM505 -28.7002l-28.2998 -28.2998c-9.40039 -9.40039 -24.6006 -9.40039 -33.9004 0l-99.7998 99.7002\nc-4.5 4.5 -7 10.5996 -7 17v16.2998c-35.2998 -27.5996 -79.7002 -44 -128 -44c-114.9 0 -208 93.0996 -208 208s93.0996 208 208 208s208 -93.0996 208 -208c0 -48.2998 -16.4004 -92.7002 -44 -128h16.2998c6.40039 0 12.5 -2.5 17 -7l99.7002 -99.7002\nc9.2998 -9.39941 9.2998 -24.5996 0 -34zM344 240c0 75.2002 -60.7998 136 -136 136s-136 -60.7998 -136 -136s60.7998 -136 136 -136s136 60.7998 136 136z\" />\n    <glyph glyph-name=\"power-off\" unicode=\"&#xf011;\" \nd=\"M400 393.9c63 -45 104 -118.601 104 -201.9c0 -136.8 -110.8 -247.7 -247.5 -248c-136.5 -0.299805 -248.3 111 -248.5 247.6c-0.0996094 83.3008 40.9004 157.101 103.8 202.2c11.7002 8.2998 28 4.7998 35 -7.7002l15.7998 -28.0996\nc5.90039 -10.5 3.10059 -23.7998 -6.59961 -31c-41.5 -30.7998 -68 -79.5996 -68 -134.9c-0.0996094 -92.2998 74.5 -168.1 168 -168.1c91.5996 0 168.6 74.2002 168 169.1c-0.299805 51.8008 -24.7002 101.801 -68.0996 134c-9.7002 7.2002 -12.4004 20.5 -6.5 30.9004\nl15.7998 28.0996c7 12.4004 23.2002 16.1006 34.7998 7.80078zM296 184c0 -13.2998 -10.7002 -24 -24 -24h-32c-13.2998 0 -24 10.7002 -24 24v240c0 13.2998 10.7002 24 24 24h32c13.2998 0 24 -10.7002 24 -24v-240z\" />\n    <glyph glyph-name=\"signal\" unicode=\"&#xf012;\" horiz-adv-x=\"640\" \nd=\"M216 160c8.83984 0 16 -7.16016 16 -16v-192c0 -8.83984 -7.16016 -16 -16 -16h-48c-8.83984 0 -16 7.16016 -16 16v192c0 8.83984 7.16016 16 16 16h48zM88 64c8.83984 0 16 -7.16016 16 -16v-96c0 -8.83984 -7.16016 -16 -16 -16h-48c-8.83984 0 -16 7.16016 -16 16v96\nc0 8.83984 7.16016 16 16 16h48zM344 256c8.83984 0 16 -7.16016 16 -16v-288c0 -8.83984 -7.16016 -16 -16 -16h-48c-8.83984 0 -16 7.16016 -16 16v288c0 8.83984 7.16016 16 16 16h48zM472 352c8.83984 0 16 -7.16016 16 -16v-384c0 -8.83984 -7.16016 -16 -16 -16h-48\nc-8.83984 0 -16 7.16016 -16 16v384c0 8.83984 7.16016 16 16 16h48zM600 448c8.83984 0 16 -7.16016 16 -16v-480c0 -8.83984 -7.16016 -16 -16 -16h-48c-8.83984 0 -16 7.16016 -16 16v480c0 8.83984 7.16016 16 16 16h48z\" />\n    <glyph glyph-name=\"cog\" unicode=\"&#xf013;\" \nd=\"M487.4 132.3c4.89941 -2.7998 7.09961 -8.59961 5.59961 -14.0996c-11.0996 -35.7002 -30 -67.9004 -54.7002 -94.6006c-3.7998 -4.19922 -9.89941 -5.09961 -14.7998 -2.2998l-42.5996 24.6006c-18 -15.3008 -38.6006 -27.2002 -60.8008 -35.1006v-49.2002\nc0 -5.59961 -3.89941 -10.5 -9.39941 -11.6992c-34.9004 -7.80078 -72.5 -8.2002 -109.2 0c-5.5 1.19922 -9.40039 6.09961 -9.40039 11.6992v49.2002c-22.2998 7.7998 -42.8994 19.7002 -60.7998 35.1006l-42.5996 -24.6006c-4.7998 -2.7998 -11 -1.7998 -14.7998 2.2998\nc-24.7002 26.8008 -43.6006 59 -54.7002 94.6006c-1.60059 5.39941 0.599609 11.2002 5.5 14l42.5996 24.5996c-4.2998 23.2002 -4.2998 47 0 70.2002l-42.5996 24.5996c-4.90039 2.80078 -7.2002 8.60059 -5.5 14c11.0996 35.7002 30 67.9004 54.7002 94.6006\nc3.7998 4.2002 9.89941 5.09961 14.7998 2.2998l42.5 -24.5996c18 15.2998 38.5996 27.1992 60.7998 35.0996v49.2002c0 5.59961 3.90039 10.5 9.40039 11.7002c34.8994 7.7998 72.5 8.19922 109.199 0c5.5 -1.2002 9.40039 -6.10059 9.40039 -11.7002v-49.1006\nc22.2998 -7.7998 42.9004 -19.6992 60.7998 -35.0996l42.6006 24.5996c4.7998 2.80078 11 1.80078 14.7998 -2.2998c24.7002 -26.7998 43.5996 -59 54.7002 -94.5996c1.59961 -5.40039 -0.600586 -11.2002 -5.5 -14l-42.6006 -24.6006\nc4.2998 -23.1992 4.2998 -47 0 -70.1992zM256 112c44.0996 0 80 35.9004 80 80s-35.9004 80 -80 80s-80 -35.9004 -80 -80s35.9004 -80 80 -80z\" />\n    <glyph glyph-name=\"home\" unicode=\"&#xf015;\" horiz-adv-x=\"576\" \nd=\"M280.37 299.74c1.84863 1.49023 5.27539 2.69922 7.64941 2.69922c2.375 0 5.80176 -1.20898 7.65039 -2.69922l184.33 -151.74v-164c0 -8.83203 -7.16797 -16 -16 -16l-112.02 0.30957h-0.000976562c-8.83203 0 -16 7.16797 -16 16\nc0 0.0146484 0 0.0371094 0.000976562 0.0507812v95.6396c0 8.83203 -7.16895 16 -16 16h-64c-8.83203 0 -16 -7.16797 -16 -16v-95.71v0c0 -8.78809 -7.13281 -15.9561 -15.9209 -16l-112.06 -0.290039c-8.83203 0 -16 7.16797 -16 16v163.89zM571.6 196.53\nc2.44531 -1.98828 4.42969 -6.15918 4.42969 -9.31055c0 -2.37305 -1.22266 -5.78613 -2.72949 -7.62012l-25.5 -31c-1.98633 -2.40332 -6.13086 -4.35449 -9.24902 -4.35449c-2.38574 0 -5.81348 1.23438 -7.65039 2.75488l-235.23 193.74\nc-1.84863 1.49023 -5.27539 2.69922 -7.65039 2.69922c-2.37402 0 -5.80078 -1.20898 -7.64941 -2.69922l-235.22 -193.74c-1.83691 -1.5166 -5.26074 -2.74805 -7.64258 -2.74805c-3.12793 0 -7.28027 1.96191 -9.26758 4.37793l-25.5 31\nc-1.52051 1.83789 -2.75488 5.26562 -2.75488 7.65039c0 3.11914 1.95117 7.2627 4.35449 9.25l253.13 208.47c7.33594 6.03613 21 10.9355 30.5 10.9355c9.50098 0 23.1641 -4.89941 30.5 -10.9355l89.5303 -73.6602v72.6104c0 6.62402 5.37598 12 12 12h56\nc6.62402 0 12 -5.37598 12 -12v-138.51z\" />\n    <glyph glyph-name=\"clock\" unicode=\"&#xf017;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM313.1 89.9004c5.40039 -3.90039 12.9004 -2.7002 16.8008 2.59961l28.1992 38.7998c3.90039 5.40039 2.80078 12.9004 -2.59961 16.7998l-63.5 46.2002v137.7\nc0 6.59961 -5.40039 12 -12 12h-48c-6.59961 0 -12 -5.40039 -12 -12v-168.3c0 -3.7998 1.7998 -7.40039 4.90039 -9.7002z\" />\n    <glyph glyph-name=\"road\" unicode=\"&#xf018;\" horiz-adv-x=\"576\" \nd=\"M573.19 45.3301c9.25977 -21.1904 -5.5 -45.3301 -27.7305 -45.3301h-196.84l-10.3105 97.6797c-0.859375 8.14062 -7.71973 14.3203 -15.9092 14.3203h-68.8008c-8.18945 0 -15.0498 -6.17969 -15.9092 -14.3203l-10.3105 -97.6797h-196.84\nc-22.2305 0 -36.9902 24.1396 -27.7402 45.3301l139.79 320c4.96973 11.3799 15.7998 18.6699 27.7305 18.6699h97.5898l-2.4502 -23.1602c-0.5 -4.71973 3.20996 -8.83984 7.95996 -8.83984h29.1602c4.75 0 8.45996 4.12012 7.95996 8.83984l-2.4502 23.1602h97.5898\nc11.9199 0 22.75 -7.29004 27.7207 -18.6699zM260.4 312.84l-4.59082 -43.5801c-0.75 -7.08984 4.80078 -13.2598 11.9307 -13.2598h40.54c7.12012 0 12.6797 6.16992 11.9297 13.2598l-4.59961 43.5801c-0.430664 4.07031 -3.87012 7.16016 -7.95996 7.16016h-39.29\nh-0.00488281c-3.97363 0 -7.53809 -3.20801 -7.95508 -7.16016zM315.64 144c9.5 0 16.9102 8.23047 15.9102 17.6797l-5.06934 48c-0.860352 8.14062 -7.7207 14.3203 -15.9102 14.3203h-45.1504c-8.18945 0 -15.0498 -6.17969 -15.9102 -14.3203l-5.06934 -48\nc-1 -9.44922 6.40918 -17.6797 15.9092 -17.6797h55.29z\" />\n    <glyph glyph-name=\"download\" unicode=\"&#xf019;\" \nd=\"M216 448h80c13.2998 0 24 -10.7002 24 -24v-168h87.7002c17.7998 0 26.7002 -21.5 14.0996 -34.0996l-152.1 -152.2c-7.5 -7.5 -19.7998 -7.5 -27.2998 0l-152.301 152.2c-12.5996 12.5996 -3.69922 34.0996 14.1006 34.0996h87.7998v168c0 13.2998 10.7002 24 24 24z\nM512 72v-112c0 -13.2998 -10.7002 -24 -24 -24h-464c-13.2998 0 -24 10.7002 -24 24v112c0 13.2998 10.7002 24 24 24h146.7l49 -49c20.0996 -20.0996 52.5 -20.0996 72.5996 0l49 49h146.7c13.2998 0 24 -10.7002 24 -24zM388 -16c0 11 -9 20 -20 20s-20 -9 -20 -20\ns9 -20 20 -20s20 9 20 20zM452 -16c0 11 -9 20 -20 20s-20 -9 -20 -20s9 -20 20 -20s20 9 20 20z\" />\n    <glyph glyph-name=\"inbox\" unicode=\"&#xf01c;\" horiz-adv-x=\"576\" \nd=\"M567.938 204.092c4.4502 -6.6748 8.06152 -18.6025 8.06152 -26.624v-0.000976562v-129.467c0 -26.5098 -21.4902 -48 -48 -48h-480c-26.5098 0 -48 21.4902 -48 48v129.467v0.000976562c0 8.02148 3.61133 19.9492 8.06152 26.624l105.689 158.534\nc7.86621 11.7988 25.7578 21.374 39.9385 21.374h268.621c14.1807 0 32.0732 -9.57617 39.9395 -21.374zM162.252 320l-85.334 -128h123.082l32 -64h112l32 64h123.082l-85.333 128h-251.497z\" />\n    <glyph glyph-name=\"redo\" unicode=\"&#xf01e;\" \nd=\"M500.33 448c6.62402 0 12 -5.37598 12 -12v-200.34c0 -6.62402 -5.37598 -12 -12 -12h-200.33c-6.62402 0 -12 5.37598 -12 12v47.4102v0.0136719c0 6.62402 5.37598 12 12 12c0.157227 0 0.413086 -0.00683594 0.570312 -0.0136719l101.529 -4.87012\nc-28.8721 42.9609 -94.3145 77.8281 -146.076 77.8281c-97.1514 0 -176 -78.8486 -176 -176c0 -97.1523 78.8486 -176 176 -176c36.6543 0 88.7373 19.6504 116.257 43.8613c1.87207 1.63672 5.40918 2.96387 7.89551 2.96387c2.74316 0 6.54395 -1.57422 8.48438 -3.51367\nl34 -34c1.94141 -1.94043 3.51758 -5.74316 3.51758 -8.48828c0 -2.96094 -1.79102 -6.9668 -3.99805 -8.94141c-38.9707 -35.2783 -113.264 -63.9102 -165.831 -63.9102h-0.348633c-136.9 0 -247.9 110.93 -248 247.81c-0.0996094 136.66 111.34 248.19 248 248.19\nh0.272461c63.2246 0 147.739 -39.124 188.647 -87.3301l-4 82.7598c-0.0078125 0.157227 -0.0136719 0.413086 -0.0136719 0.570312c0 6.62402 5.37598 12 12 12h0.0136719h47.4102z\" />\n    <glyph glyph-name=\"sync\" unicode=\"&#xf021;\" \nd=\"M440.65 435.43c-0.0078125 0.157227 -0.0136719 0.413086 -0.0136719 0.570312c0 6.62012 5.37305 11.9961 11.9932 12h47.3701c6.62402 0 12 -5.37598 12 -12v-200.35c0 -6.62402 -5.37598 -12 -12 -12h-200.22c-6.62402 0 -12 5.37598 -12 12v47.4092v0.0136719\nc0 6.62402 5.37598 12 12 12c0.157227 0 0.412109 -0.00585938 0.569336 -0.0136719l101.46 -4.85938c-28.8584 42.9248 -94.2598 77.7627 -145.984 77.7627c-76.4834 0 -153.099 -60.3467 -171.016 -134.703c-1.19727 -5.10547 -6.4248 -9.25391 -11.6699 -9.25977\nh-49.0498c-6.62402 0 -12 5.37598 -12 12c0 0.606445 0.0898438 1.58301 0.200195 2.17969c21.6201 114.9 122.44 201.82 243.54 201.82h0.28418c63.2031 0 147.667 -39.1279 188.536 -87.3398zM255.83 16c76.4971 0 153.144 60.3633 171.03 134.74\nc1.19727 5.10547 6.4248 9.25391 11.6699 9.25977h49.0498c6.62402 0 12 -5.37598 12 -12c0 -0.606445 -0.0898438 -1.58301 -0.200195 -2.17969c-21.6201 -114.9 -122.439 -201.82 -243.55 -201.82h-0.234375c-63.1289 0 -147.53 39.0518 -188.396 87.1699\nl4.14941 -82.5703c0.00878906 -0.165039 0.015625 -0.433594 0.015625 -0.599609c0 -6.62402 -5.37598 -12 -12 -12h-0.015625h-47.3496c-6.62402 0 -12 5.37598 -12 12v200.33c0 6.62402 5.37598 12 12 12h200.2c6.62402 0 12 -5.37598 12 -12v-47.4004v-0.0136719\nc0 -6.62402 -5.37598 -12 -12 -12c-0.157227 0 -0.413086 0.00683594 -0.570312 0.0136719l-101.8 4.87012c28.7998 -42.9453 94.1406 -77.7998 145.85 -77.7998h0.150391z\" />\n    <glyph glyph-name=\"list-alt\" unicode=\"&#xf022;\" \nd=\"M464 -32h-416c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h416c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48zM128 328c-22.0908 0 -40 -17.9092 -40 -40s17.9092 -40 40 -40s40 17.9092 40 40s-17.9092 40 -40 40zM128 232\nc-22.0908 0 -40 -17.9092 -40 -40s17.9092 -40 40 -40s40 17.9092 40 40s-17.9092 40 -40 40zM128 136c-22.0908 0 -40 -17.9092 -40 -40s17.9092 -40 40 -40s40 17.9092 40 40s-17.9092 40 -40 40zM416 272v32c0 6.62695 -5.37305 12 -12 12h-200\nc-6.62695 0 -12 -5.37305 -12 -12v-32c0 -6.62695 5.37305 -12 12 -12h200c6.62695 0 12 5.37305 12 12zM416 176v32c0 6.62695 -5.37305 12 -12 12h-200c-6.62695 0 -12 -5.37305 -12 -12v-32c0 -6.62695 5.37305 -12 12 -12h200c6.62695 0 12 5.37305 12 12zM416 80v32\nc0 6.62695 -5.37305 12 -12 12h-200c-6.62695 0 -12 -5.37305 -12 -12v-32c0 -6.62695 5.37305 -12 12 -12h200c6.62695 0 12 5.37305 12 12z\" />\n    <glyph glyph-name=\"lock\" unicode=\"&#xf023;\" horiz-adv-x=\"448\" \nd=\"M400 224c26.5 0 48 -21.5 48 -48v-192c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v192c0 26.5 21.5 48 48 48h24v72c0 83.7998 68.2002 152 152 152s152 -68.2002 152 -152v-72h24zM296 224v72c0 39.7002 -32.2998 72 -72 72s-72 -32.2998 -72 -72v-72h144\nz\" />\n    <glyph glyph-name=\"flag\" unicode=\"&#xf024;\" \nd=\"M349.565 349.217c40.4951 0 82.6113 15.9062 116.949 31.8545c21.2168 9.85352 45.4854 -5.62305 45.4854 -29.0166v-243.1c0 -10.5264 -5.16016 -20.4072 -13.8428 -26.3584c-35.8379 -24.5635 -74.3359 -40.8574 -122.505 -40.8574\nc-67.373 0 -111.629 34.7832 -165.218 34.7832c-50.8525 0 -86.124 -10.0586 -114.435 -22.1221v-94.4004c0 -13.2549 -10.7451 -24 -24 -24h-16c-13.2549 0 -24 10.7451 -24 24v386.055c-14.5029 10.1201 -24 26.9189 -24 45.9453\nc0 31.7041 26.3447 57.2539 58.3379 55.9521c28.4678 -1.1582 51.7793 -23.9668 53.5508 -52.4033c0.0625 -0.980469 0.113281 -2.57324 0.113281 -3.55566c0 -5.71094 -1.65723 -14.6738 -3.69922 -20.0059c20.7363 7.62891 43.0898 12.0127 68.0449 12.0127\nc67.373 0 111.63 -34.7832 165.218 -34.7832z\" />\n    <glyph glyph-name=\"headphones\" unicode=\"&#xf025;\" \nd=\"M256 416c141.504 0 256 -114.521 256 -256v-48c0 -10.917 -7.9248 -23.7402 -17.6904 -28.6221l-14.3818 -7.19141c-2.01074 -60.0889 -51.3486 -108.187 -111.928 -108.187h-24c-13.2549 0 -24 10.7451 -24 24v176c0 13.2549 10.7451 24 24 24h24\nc31.3418 0 59.6709 -12.8789 80 -33.627v1.62695c0 105.869 -86.1309 192 -192 192s-192 -86.1309 -192 -192v-1.62695c20.3291 20.748 48.6582 33.627 80 33.627h24c13.2549 0 24 -10.7451 24 -24v-176c0 -13.2549 -10.7451 -24 -24 -24h-24\nc-60.5791 0 -109.917 48.0967 -111.928 108.187l-14.3828 7.19141c-9.76465 4.88184 -17.6895 17.7051 -17.6895 28.6221v0v48c0 141.504 114.52 256 256 256z\" />\n    <glyph glyph-name=\"volume-off\" unicode=\"&#xf026;\" horiz-adv-x=\"256\" \nd=\"M215 377c15 15 41 4.46973 41 -17v-336c0 -21.4697 -26 -32 -41 -17l-88.9404 89h-102.06c-13.248 0 -24 10.752 -24 24v144c0 13.248 10.752 24 24 24h102z\" />\n    <glyph glyph-name=\"volume-down\" unicode=\"&#xf027;\" horiz-adv-x=\"384\" \nd=\"M215.03 375.96c15.0098 15 40.9697 4.49023 40.9697 -16.9795v-335.961c0 -21.4395 -25.9404 -32 -40.9697 -16.9697l-88.9707 88.9502h-102.06c-13.2598 0 -24 10.75 -24 24v144c0 13.2598 10.7402 24 24 24h102.06zM338.23 267.88\nc28.2393 -15.5498 45.7793 -44.9902 45.7793 -76.8701s-17.54 -61.3301 -45.7695 -76.8799c-11.5605 -6.34961 -26.1807 -2.20996 -32.6104 9.4502c-6.38965 11.6104 -2.16016 26.2002 9.4502 32.6104c12.9004 7.08984 20.9199 20.4297 20.9199 34.8096\ns-8.01953 27.7197 -20.9297 34.8203c-11.6104 6.41016 -15.8398 21 -9.4502 32.6094c6.41992 11.6104 21.0303 15.7803 32.6104 9.4502z\" />\n    <glyph glyph-name=\"volume-up\" unicode=\"&#xf028;\" horiz-adv-x=\"576\" \nd=\"M215.03 376.95c15.0098 15.0098 40.9697 4.49023 40.9697 -16.9697v-335.961c0 -21.4395 -25.9404 -32 -40.9697 -16.9697l-88.9707 88.9502h-102.06c-13.2598 0 -24 10.75 -24 24v144c0 13.2598 10.7402 24 24 24h102.06zM448.35 428.03\nc79.9199 -52.46 127.65 -140.7 127.65 -236.03s-47.7305 -183.58 -127.65 -236.04c-11.5801 -7.61035 -26.4697 -3.75977 -33.5098 6.9502c-7.33984 11.1602 -4.21973 26.1797 6.9502 33.5c66.2695 43.4902 105.82 116.6 105.82 195.58\nc0 78.9795 -39.5508 152.09 -105.82 195.58c-11.1699 7.33008 -14.29 22.3398 -6.9502 33.5098c7.33008 11.1895 22.3398 14.2803 33.5098 6.9502zM480 192c0 -63.54 -32.0596 -121.94 -85.7695 -156.24c-12 -7.67969 -26.6104 -2.89941 -33.1201 7.45996\nc-7.09082 11.29 -3.78027 26.2207 7.40918 33.3604c39.75 25.3896 63.4805 68.5303 63.4805 115.42s-23.7305 90.0303 -63.4805 115.42c-11.1895 7.15039 -14.5 22.0801 -7.40918 33.3604c7.08984 11.2793 21.9297 14.5996 33.1201 7.45996\nc53.71 -34.2998 85.7695 -92.71 85.7695 -156.24zM338.23 268.87c28.2393 -15.54 45.7793 -44.9805 45.7793 -76.8604s-17.54 -61.3301 -45.7695 -76.8799c-11.5605 -6.34961 -26.1807 -2.20996 -32.6104 9.4502c-6.38965 11.6104 -2.16016 26.2002 9.4502 32.6104\nc12.9004 7.08984 20.9199 20.4297 20.9199 34.8096c0 14.3701 -8.01953 27.7197 -20.9297 34.8096c-11.6104 6.41016 -15.8398 21 -9.4502 32.6104c6.41992 11.6104 21.0303 15.7803 32.6104 9.4502z\" />\n    <glyph glyph-name=\"qrcode\" unicode=\"&#xf029;\" horiz-adv-x=\"448\" \nd=\"M0 224v192h192v-192h-192zM64 352v-64h64v64h-64zM256 416h192v-192h-192v192zM384 288v64h-64v-64h64zM0 -32v192h192v-192h-192zM64 96v-64h64v64h-64zM416 160h32v-128h-96v32h-32v-96h-64v192h96v-32h64v32zM416 0h32v-32h-32v32zM352 0h32v-32h-32v32z\" />\n    <glyph glyph-name=\"barcode\" unicode=\"&#xf02a;\" \nd=\"M0 0v384h18v-384h-18zM26.8574 0.273438v383.727h9.14258v-383.727h-9.14258zM54 0.273438v383.727h8.85742v-383.727h-8.85742zM98.8574 0.273438v383.727h8.85645v-383.727h-8.85645zM134.857 0.273438v383.727h17.7139v-383.727h-17.7139zM179.714 0.273438v383.727\nh8.85742v-383.727h-8.85742zM197.714 0.273438v383.727h8.85742v-383.727h-8.85742zM215.714 0.273438v383.727h8.85742v-383.727h-8.85742zM251.429 0.273438v383.727h18v-383.727h-18zM296.286 0.273438v383.727h18v-383.727h-18zM332.285 0.273438v383.727h18.001\nv-383.727h-18.001zM368.286 0.273438v383.727h18.001v-383.727h-18.001zM395.143 0.273438v383.727h18v-383.727h-18zM440.286 0.273438v383.727h26.8564v-383.727h-26.8564zM476 0.273438v383.727h9.14258v-383.727h-9.14258zM494 0v384h18v-384h-18z\" />\n    <glyph glyph-name=\"tag\" unicode=\"&#xf02b;\" \nd=\"M0 195.882v204.118c0 26.5098 21.4902 48 48 48h204.118c10.9746 0 26.1807 -6.29883 33.9404 -14.0586l211.883 -211.883c18.7441 -18.7441 18.7441 -49.1367 0 -67.8818l-204.118 -204.118c-18.7451 -18.7441 -49.1377 -18.7441 -67.8818 0l-211.883 211.883\nc-7.75977 7.75977 -14.0586 22.9658 -14.0586 33.9404zM112 384c-26.5098 0 -48 -21.4902 -48 -48s21.4902 -48 48 -48s48 21.4902 48 48s-21.4902 48 -48 48z\" />\n    <glyph glyph-name=\"tags\" unicode=\"&#xf02c;\" horiz-adv-x=\"640\" \nd=\"M497.941 222.059c18.7441 -18.7441 18.7441 -49.1367 0 -67.8818l-204.118 -204.118c-18.7461 -18.7451 -49.1387 -18.7441 -67.8818 0l-211.883 211.883c-7.75977 7.75977 -14.0586 22.9658 -14.0586 33.9404v204.118c0 26.5098 21.4902 48 48 48h204.118\nc10.9746 0 26.1807 -6.29883 33.9404 -14.0586zM112 288c26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48s-48 -21.4902 -48 -48s21.4902 -48 48 -48zM625.941 154.177l-204.118 -204.118c-18.7451 -18.7441 -49.1377 -18.7441 -67.8818 0l-0.360352 0.360352\nl174.059 174.059c16.999 16.999 26.3604 39.6006 26.3604 63.6406s-9.3623 46.6406 -26.3604 63.6396l-196.242 196.242h48.7207c10.9746 0 26.1807 -6.29883 33.9404 -14.0586l211.883 -211.883c18.7441 -18.7441 18.7441 -49.1367 0 -67.8818z\" />\n    <glyph glyph-name=\"book\" unicode=\"&#xf02d;\" horiz-adv-x=\"448\" \nd=\"M448 88c0 -7.5 -3.5 -14.2998 -8.90039 -18.5996c-4.19922 -15.4004 -4.19922 -59.3008 0 -74.7002c5.40039 -4.40039 8.90039 -11.2002 8.90039 -18.7002v-16c0 -13.2998 -10.7002 -24 -24 -24h-328c-53 0 -96 43 -96 96v320c0 53 43 96 96 96h328\nc13.2998 0 24 -10.7002 24 -24v-336zM128 314v-20c0 -3.2998 2.7002 -6 6 -6h212c3.2998 0 6 2.7002 6 6v20c0 3.2998 -2.7002 6 -6 6h-212c-3.2998 0 -6 -2.7002 -6 -6zM128 250v-20c0 -3.2998 2.7002 -6 6 -6h212c3.2998 0 6 2.7002 6 6v20c0 3.2998 -2.7002 6 -6 6h-212\nc-3.2998 0 -6 -2.7002 -6 -6zM381.4 0c-1.90039 17.0996 -1.90039 46.9004 0 64h-285.4c-17.5996 0 -32 -14.4004 -32 -32c0 -17.7002 14.2998 -32 32 -32h285.4z\" />\n    <glyph glyph-name=\"bookmark\" unicode=\"&#xf02e;\" horiz-adv-x=\"384\" \nd=\"M0 -64v464c0 26.5098 21.4902 48 48 48h288c26.5098 0 48 -21.4902 48 -48v-464l-192 112z\" />\n    <glyph glyph-name=\"print\" unicode=\"&#xf02f;\" \nd=\"M448 256c35.3496 0 64 -28.6504 64 -64v-112c0 -8.83984 -7.16016 -16 -16 -16h-48v-96c0 -17.6699 -14.3301 -32 -32 -32h-320c-17.6699 0 -32 14.3301 -32 32v96h-48c-8.83984 0 -16 7.16016 -16 16v112c0 35.3496 28.6504 64 64 64v160c0 17.6699 14.3301 32 32 32\nh274.74c8.49023 0 16.6299 -3.37012 22.6299 -9.37012l45.2598 -45.25c6 -6.00977 9.37012 -14.1396 9.37012 -22.6299v-114.75zM384 0v96h-256v-96h256zM384 224v96h-48c-8.83984 0 -16 7.16016 -16 16v48h-192v-160h256zM432 152c13.25 0 24 10.75 24 24\nc0 13.2598 -10.75 24 -24 24s-24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24z\" />\n    <glyph glyph-name=\"camera\" unicode=\"&#xf030;\" \nd=\"M512 304v-288c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v288c0 26.5 21.5 48 48 48h88l12.2998 32.9004c7 18.6992 24.9004 31.0996 44.9004 31.0996h125.5c20 0 37.8994 -12.4004 44.8994 -31.0996l12.4004 -32.9004h88c26.5 0 48 -21.5 48 -48zM376 160\nc0 66.2002 -53.7998 120 -120 120s-120 -53.7998 -120 -120s53.7998 -120 120 -120s120 53.7998 120 120zM344 160c0 -48.5 -39.5 -88 -88 -88s-88 39.5 -88 88s39.5 88 88 88s88 -39.5 88 -88z\" />\n    <glyph glyph-name=\"font\" unicode=\"&#xf031;\" horiz-adv-x=\"448\" \nd=\"M432 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-128c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h19.5801l-23.2998 64h-152.561l-23.2998 -64h19.5801c8.83203 0 16 -7.16797 16 -16v-32\nc0 -8.83203 -7.16797 -16 -16 -16h-128c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h23.4102l130.71 362.31c4.07422 11.9736 17.6465 21.6904 30.2939 21.6904h0.00585938h47.1602h0.00585938c12.6475 0 26.2197 -9.7168 30.2939 -21.6904\nl130.71 -362.31h23.4102zM176.85 176h94.3008l-47.1504 129.49z\" />\n    <glyph glyph-name=\"bold\" unicode=\"&#xf032;\" horiz-adv-x=\"384\" \nd=\"M333.49 210c34.4395 -27.54 55.5693 -71.1504 50.8301 -119.6c-6.86035 -70.6504 -70.2002 -122.4 -141 -122.4h-209.32c-8.83203 0 -16 7.16797 -16 16v48c0 8.83203 7.16797 16 16 16h31.8701v288h-31.8701c-8.83203 0 -16 7.16797 -16 16v48\nc0 8.83203 7.16797 16 16 16h199.42c74.5801 0 134.45 -64.4902 127.07 -140.79c-2.01367 -20.25 -14.1094 -49.4639 -27 -65.21zM145.66 336v-96h87.7598c26.4961 0 48 21.5039 48 48s-21.5039 48 -48 48h-87.7598zM233.42 48c30.9121 0 56 25.0879 56 56\ns-25.0879 56 -56 56h-87.7598v-112h87.7598z\" />\n    <glyph glyph-name=\"italic\" unicode=\"&#xf033;\" horiz-adv-x=\"320\" \nd=\"M320 400v-32c0 -8.83203 -7.16797 -16 -16 -16h-62.7598l-80 -320h46.7598c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-192c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h62.7598l80 320h-46.7598\nc-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h192c8.83203 0 16 -7.16797 16 -16z\" />\n    <glyph glyph-name=\"text-height\" unicode=\"&#xf034;\" horiz-adv-x=\"576\" \nd=\"M304 416c8.83203 0 16 -7.16797 16 -16v-96c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32h-56v-304h40c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-160c-8.83203 0 -16 7.16797 -16 16v32\nc0 8.83203 7.16797 16 16 16h40v304h-56v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v96c0 8.83203 7.16797 16 16 16h288zM560 80c15.6396 0 20.6396 -18 11.3096 -27.3096l-80 -80c-2.58594 -2.58496 -7.65332 -4.68262 -11.3096 -4.68262\ns-8.72363 2.09766 -11.3096 4.68262l-80 80c-10.0107 10 -3 27.3096 11.3096 27.3096h48v224h-48c-15.6396 0 -20.6396 18 -11.3096 27.3096l80 80c2.58594 2.58496 7.65332 4.68262 11.3096 4.68262s8.72363 -2.09766 11.3096 -4.68262l80 -80\nc10.0205 -10 3 -27.3096 -11.3096 -27.3096h-48v-224h48z\" />\n    <glyph glyph-name=\"text-width\" unicode=\"&#xf035;\" horiz-adv-x=\"448\" \nd=\"M432 416c8.83203 0 16 -7.16797 16 -16v-80c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v16h-120v-112h24c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-128c-8.83203 0 -16 7.16797 -16 16v32\nc0 8.83203 7.16797 16 16 16h24v112h-120v-16c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v80c0 8.83203 7.16797 16 16 16h416zM363.31 155.31l80 -80c2.58496 -2.58594 4.68262 -7.65332 4.68262 -11.3096s-2.09766 -8.72363 -4.68262 -11.3096\nl-80 -80c-10 -10.0205 -27.3096 -3 -27.3096 11.3096v48h-224v-48c0 -15.6396 -18 -20.6396 -27.3096 -11.3096l-80 80c-2.58496 2.58594 -4.68262 7.65332 -4.68262 11.3096s2.09766 8.72363 4.68262 11.3096l80 80c10 10.0107 27.3096 3 27.3096 -11.3096v-48h224v48\nc0 15.6396 18 20.6396 27.3096 11.3096z\" />\n    <glyph glyph-name=\"align-left\" unicode=\"&#xf036;\" horiz-adv-x=\"448\" \nd=\"M12.8301 96c-7.07715 0 -12.8301 5.74316 -12.8301 12.8203v0.00976562v38.3398v0.00976562c0 7.07715 5.74316 12.8203 12.8203 12.8203h0.00976562h262.34h0.00976562c7.07715 0 12.8203 -5.74316 12.8203 -12.8203v-0.00976562v-38.3398v-0.00976562\nc0 -7.07715 -5.74316 -12.8203 -12.8203 -12.8203h-0.00976562h-262.34zM12.8301 352c-7.07715 0 -12.8301 5.74316 -12.8301 12.8203v0.00976562v38.3398v0.00976562c0 7.07715 5.74316 12.8203 12.8203 12.8203h0.00976562h262.34h0.00976562\nc7.07715 0 12.8203 -5.74316 12.8203 -12.8203v-0.00976562v-38.3398v-0.00976562c0 -7.07715 -5.74316 -12.8203 -12.8203 -12.8203h-0.00976562h-262.34zM432 288c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16\nv32c0 8.83203 7.16797 16 16 16h416zM432 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h416z\" />\n    <glyph glyph-name=\"align-center\" unicode=\"&#xf037;\" horiz-adv-x=\"448\" \nd=\"M432 288c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h416zM432 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16\nv32c0 8.83203 7.16797 16 16 16h416zM108.1 352c-6.67871 0 -12.0996 5.4209 -12.0996 12.0996v39.8105c0 6.67383 5.41602 12.0898 12.0898 12.0898h0.00976562h231.811c6.67383 0 12.0898 -5.41602 12.0898 -12.0898v-39.8105v-0.00976562\nc0 -6.67383 -5.41602 -12.0898 -12.0898 -12.0898v0h-231.811zM339.91 96h-231.811c-6.67871 0 -12.0996 5.4209 -12.0996 12.0996v39.8105c0 6.67383 5.41602 12.0898 12.0898 12.0898h0.00976562h231.811c6.67383 0 12.0898 -5.41602 12.0898 -12.0898v-39.8105\nv-0.00976562c0 -6.67383 -5.41602 -12.0898 -12.0898 -12.0898v0z\" />\n    <glyph glyph-name=\"align-right\" unicode=\"&#xf038;\" horiz-adv-x=\"448\" \nd=\"M16 224c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h416c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-416zM432 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16\nv32c0 8.83203 7.16797 16 16 16h416zM435.17 416c7.07715 0 12.8301 -5.74316 12.8301 -12.8203v-0.00976562v-38.3398v-0.00976562c0 -7.07715 -5.74316 -12.8203 -12.8203 -12.8203h-0.00976562h-262.34h-0.00976562c-7.07715 0 -12.8203 5.74316 -12.8203 12.8203\nv0.00976562v38.3398v0.00976562c0 7.07715 5.74316 12.8203 12.8203 12.8203h0.00976562h262.34zM435.17 160c7.07715 0 12.8301 -5.74316 12.8301 -12.8203v-0.00976562v-38.3398v-0.00976562c0 -7.07715 -5.74316 -12.8203 -12.8203 -12.8203h-0.00976562h-262.34\nh-0.00976562c-7.07715 0 -12.8203 5.74316 -12.8203 12.8203v0.00976562v38.3398v0.00976562c0 7.07715 5.74316 12.8203 12.8203 12.8203h0.00976562h262.34z\" />\n    <glyph glyph-name=\"align-justify\" unicode=\"&#xf039;\" horiz-adv-x=\"448\" \nd=\"M432 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h416zM432 160c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16\nv32c0 8.83203 7.16797 16 16 16h416zM432 288c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h416zM432 416c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16\nh-416c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h416z\" />\n    <glyph glyph-name=\"list\" unicode=\"&#xf03a;\" \nd=\"M80 80c8.83203 0 16 -7.16797 16 -16v-64c0 -8.83203 -7.16797 -16 -16 -16h-64c-8.83203 0 -16 7.16797 -16 16v64c0 8.83203 7.16797 16 16 16h64zM80 400c8.83203 0 16 -7.16797 16 -16v-64c0 -8.83203 -7.16797 -16 -16 -16h-64c-8.83203 0 -16 7.16797 -16 16v64\nc0 8.83203 7.16797 16 16 16h64zM80 240c8.83203 0 16 -7.16797 16 -16v-64c0 -8.83203 -7.16797 -16 -16 -16h-64c-8.83203 0 -16 7.16797 -16 16v64c0 8.83203 7.16797 16 16 16h64zM496 64c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-320\nc-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h320zM496 384c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-320c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h320zM496 224c8.83203 0 16 -7.16797 16 -16v-32\nc0 -8.83203 -7.16797 -16 -16 -16h-320c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h320z\" />\n    <glyph glyph-name=\"outdent\" unicode=\"&#xf03b;\" horiz-adv-x=\"448\" \nd=\"M100.69 84.71l-96 95.9805c-2.58496 2.58594 -4.68262 7.65332 -4.68262 11.3096s2.09766 8.72363 4.68262 11.3096l96 96c9.97949 10 27.3096 3.01074 27.3096 -11.3096v-191.98c0 -14.2393 -17.3096 -21.3096 -27.3096 -11.3096zM432 32c8.83203 0 16 -7.16797 16 -16\nv-32c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h416zM435.17 160c7.07715 0 12.8301 -5.74316 12.8301 -12.8203v-0.00976562v-38.3398v-0.00976562c0 -7.07715 -5.74316 -12.8203 -12.8203 -12.8203h-0.00976562\nh-230.34h-0.00976562c-7.07715 0 -12.8203 5.74316 -12.8203 12.8203v0.00976562v38.3398v0.00976562c0 7.07715 5.74316 12.8203 12.8203 12.8203h0.00976562h230.34zM435.17 288c7.07715 0 12.8301 -5.74316 12.8301 -12.8203v-0.00976562v-38.3398v-0.00976562\nc0 -7.07715 -5.74316 -12.8203 -12.8203 -12.8203h-0.00976562h-230.34h-0.00976562c-7.07715 0 -12.8203 5.74316 -12.8203 12.8203v0.00976562v38.3398v0.00976562c0 7.07715 5.74316 12.8203 12.8203 12.8203h0.00976562h230.34zM432 416c8.83203 0 16 -7.16797 16 -16\nv-32c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h416z\" />\n    <glyph glyph-name=\"indent\" unicode=\"&#xf03c;\" horiz-adv-x=\"448\" \nd=\"M27.3096 84.7002c-9.97949 -10 -27.3096 -3.00977 -27.3096 11.2998v192c0 14.2197 17.2695 21.3398 27.3096 11.3203l96 -96c2.58496 -2.58691 4.68262 -7.65332 4.68262 -11.3105c0 -3.65625 -2.09766 -8.72363 -4.68262 -11.3096zM432 32\nc8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h416zM435.17 160c7.07715 0 12.8301 -5.74316 12.8301 -12.8203v-0.00976562v-38.3398v-0.00976562\nc0 -7.07715 -5.74316 -12.8203 -12.8203 -12.8203h-0.00976562h-230.34h-0.00976562c-7.07715 0 -12.8203 5.74316 -12.8203 12.8203v0.00976562v38.3398v0.00976562c0 7.07715 5.74316 12.8203 12.8203 12.8203h0.00976562h230.34zM435.17 288\nc7.07715 0 12.8301 -5.74316 12.8301 -12.8203v-0.00976562v-38.3398v-0.00976562c0 -7.07715 -5.74316 -12.8203 -12.8203 -12.8203h-0.00976562h-230.34h-0.00976562c-7.07715 0 -12.8203 5.74316 -12.8203 12.8203v0.00976562v38.3398v0.00976562\nc0 7.07715 5.74316 12.8203 12.8203 12.8203h0.00976562h230.34zM432 416c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h416z\" />\n    <glyph glyph-name=\"video\" unicode=\"&#xf03d;\" horiz-adv-x=\"576\" \nd=\"M336.2 384c26.3994 0 47.7998 -21.4004 47.7998 -47.7998v-288.4c0 -26.3994 -21.4004 -47.7998 -47.7998 -47.7998h-288.4c-26.3994 0 -47.7998 21.4004 -47.7998 47.7998v288.4c0 26.3994 21.4004 47.7998 47.7998 47.7998h288.4zM525.6 346.3\nc21.3008 14.6006 50.4004 -0.399414 50.4004 -25.7998v-256.9c0 -25.5 -29.2002 -40.3994 -50.4004 -25.7998l-109.6 75.5v157.4z\" />\n    <glyph glyph-name=\"image\" unicode=\"&#xf03e;\" \nd=\"M464 0h-416c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h416c26.5098 0 48 -21.4902 48 -48v-288c0 -26.5098 -21.4902 -48 -48 -48zM112 328c-30.9277 0 -56 -25.0723 -56 -56s25.0723 -56 56 -56s56 25.0723 56 56s-25.0723 56 -56 56zM64 64h384\nv112l-87.5146 87.5146c-4.68652 4.68652 -12.2842 4.68652 -16.9717 0l-135.514 -135.515l-55.5146 55.5146c-4.68652 4.68652 -12.2842 4.68652 -16.9717 0l-71.5137 -71.5146v-48z\" />\n    <glyph glyph-name=\"map-marker\" unicode=\"&#xf041;\" horiz-adv-x=\"384\" \nd=\"M172.268 -53.6699c-145.298 210.639 -172.268 232.257 -172.268 309.67c0 106.039 85.9609 192 192 192s192 -85.9609 192 -192c0 -77.4131 -26.9697 -99.0312 -172.268 -309.67c-9.53516 -13.7744 -29.9307 -13.7734 -39.4648 0z\" />\n    <glyph glyph-name=\"adjust\" unicode=\"&#xf042;\" \nd=\"M8 192c0 136.967 111.034 248 248 248s248 -111.034 248 -248s-111.033 -248 -248 -248s-248 111.034 -248 248zM256 8c101.689 0 184 82.2949 184 184c0 101.689 -82.2949 184 -184 184v-368z\" />\n    <glyph glyph-name=\"tint\" unicode=\"&#xf043;\" horiz-adv-x=\"352\" \nd=\"M205.22 425.91c46.9902 -158.48 146.78 -200.07 146.78 -311.82c0 -98.4395 -78.7197 -178.09 -176 -178.09s-176 79.6504 -176 178.09c0 111.19 100.01 154.061 146.78 311.82c9 30.1201 50.5 28.7803 58.4395 0zM176 0c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16\nc-44.1104 0 -80 35.8896 -80 80c0 8.83984 -7.16016 16 -16 16s-16 -7.16016 -16 -16c0 -61.75 50.25 -112 112 -112z\" />\n    <glyph glyph-name=\"edit\" unicode=\"&#xf044;\" horiz-adv-x=\"576\" \nd=\"M402.6 364.8l90.2002 -90.2002c3.7998 -3.7998 3.7998 -10 0 -13.7998l-218.399 -218.399l-92.8008 -10.3008c-12.3994 -1.39941 -22.8994 9.10059 -21.5 21.5l10.3008 92.8008l218.399 218.399c3.7998 3.7998 10 3.7998 13.7998 0zM564.6 387.7\nc15.2002 -15.2002 15.2002 -39.9004 0 -55.2002l-35.3994 -35.4004c-3.7998 -3.7998 -10 -3.7998 -13.7998 0l-90.2002 90.2002c-3.7998 3.7998 -3.7998 10 0 13.7998l35.3994 35.4004c15.3008 15.2002 40 15.2002 55.2002 0zM384 101.8c0 3.2002 1.2998 6.2002 3.5 8.5\nl40 40c7.59961 7.5 20.5 2.2002 20.5 -8.5v-157.8c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h285.8c10.7002 0 16.1006 -12.9004 8.5 -20.5l-40 -40c-2.2998 -2.2002 -5.2998 -3.5 -8.5 -3.5h-229.8v-320h320v101.8z\" />\n    <glyph glyph-name=\"step-backward\" unicode=\"&#xf048;\" horiz-adv-x=\"448\" \nd=\"M64 -20v424c0 6.59961 5.40039 12 12 12h48c6.59961 0 12 -5.40039 12 -12v-176.4l195.5 181c20.5996 17.1006 52.5 2.80078 52.5 -24.5996v-384c0 -27.4004 -31.9004 -41.7002 -52.5 -24.5996l-195.5 179.899v-175.3c0 -6.59961 -5.40039 -12 -12 -12h-48\nc-6.59961 0 -12 5.40039 -12 12z\" />\n    <glyph glyph-name=\"fast-backward\" unicode=\"&#xf049;\" \nd=\"M0 12v360c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-151.9l171.5 156.5c20.5996 17.1006 52.5 2.80078 52.5 -24.5996v-131.9l171.5 156.5c20.5996 17.1006 52.5 2.80078 52.5 -24.5996v-320c0 -27.4004 -31.9004 -41.7002 -52.5 -24.5996\nl-171.5 155.3v-130.7c0 -27.4004 -31.9004 -41.7002 -52.5 -24.5996l-171.5 155.3v-150.7c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12z\" />\n    <glyph glyph-name=\"backward\" unicode=\"&#xf04a;\" \nd=\"M11.5 167.4c-15.2998 12.7998 -15.2998 36.3994 0 49.1992l192 160c20.5996 17.2002 52.5 2.80078 52.5 -24.5996v-320c0 -27.4004 -31.9004 -41.7998 -52.5 -24.5996zM267.5 167.4c-15.2998 12.7998 -15.2998 36.3994 0 49.1992l192 160\nc20.5996 17.2002 52.5 2.80078 52.5 -24.5996v-320c0 -27.4004 -31.9004 -41.7998 -52.5 -24.5996z\" />\n    <glyph glyph-name=\"play\" unicode=\"&#xf04b;\" horiz-adv-x=\"448\" \nd=\"M424.4 233.3c31.5 -18.5 31.3994 -64.0996 0 -82.5996l-352 -208c-31.7002 -18.7998 -72.4004 3.7998 -72.4004 41.2998v416.1c0 41.8008 43.7998 58.2002 72.4004 41.3008z\" />\n    <glyph glyph-name=\"pause\" unicode=\"&#xf04c;\" horiz-adv-x=\"448\" \nd=\"M144 -31h-96c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h96c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48zM448 17c0 -26.5 -21.5 -48 -48 -48h-96c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h96c26.5 0 48 -21.5 48 -48v-352z\" />\n    <glyph glyph-name=\"stop\" unicode=\"&#xf04d;\" horiz-adv-x=\"448\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352z\" />\n    <glyph glyph-name=\"forward\" unicode=\"&#xf04e;\" \nd=\"M500.5 216.6c15.2998 -12.7998 15.2998 -36.3994 0 -49.1992l-192 -160c-20.5996 -17.2002 -52.5 -2.80078 -52.5 24.5996v320c0 27.4004 31.9004 41.7002 52.5 24.5996zM244.5 216.6c15.2998 -12.7998 15.2998 -36.3994 0 -49.1992l-192 -160\nc-20.5996 -17.2002 -52.5 -2.80078 -52.5 24.5996v320c0 27.4004 31.9004 41.7002 52.5 24.5996z\" />\n    <glyph glyph-name=\"fast-forward\" unicode=\"&#xf050;\" \nd=\"M512 372v-360c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v151.9l-171.5 -156.5c-20.5996 -17.2002 -52.5 -2.80078 -52.5 24.5996v131.9l-171.5 -156.5c-20.5996 -17.2002 -52.5 -2.80078 -52.5 24.5996v320\nc0 27.4004 31.9004 41.7002 52.5 24.5996l171.5 -155.399v130.8c0 27.4004 31.9004 41.7002 52.5 24.5996l171.5 -155.399v150.8c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12z\" />\n    <glyph glyph-name=\"step-forward\" unicode=\"&#xf051;\" horiz-adv-x=\"448\" \nd=\"M384 404v-424c0 -6.59961 -5.40039 -12 -12 -12h-48c-6.59961 0 -12 5.40039 -12 12v176.4l-195.5 -181c-20.5996 -17.1006 -52.5 -2.80078 -52.5 24.5996v384c0 27.4004 31.9004 41.7002 52.5 24.5996l195.5 -179.899v175.3c0 6.59961 5.40039 12 12 12h48\nc6.59961 0 12 -5.40039 12 -12z\" />\n    <glyph glyph-name=\"eject\" unicode=\"&#xf052;\" horiz-adv-x=\"448\" \nd=\"M448 64v-64c0 -17.6729 -14.3271 -32 -32 -32h-384c-17.6729 0 -32 14.3271 -32 32v64c0 17.6729 14.3271 32 32 32h384c17.6729 0 32 -14.3271 32 -32zM48.0527 128c-41.7285 0 -63.5273 49.7324 -35.3828 80.4346l175.946 192.008\nc19.0156 20.7432 51.7529 20.7422 70.7666 0l175.939 -192.008c28.1973 -30.7607 6.26758 -80.4346 -35.3828 -80.4346h-351.887z\" />\n    <glyph glyph-name=\"chevron-left\" unicode=\"&#xf053;\" horiz-adv-x=\"320\" \nd=\"M34.5195 208.97l194.351 194.34c9.37012 9.37012 24.5703 9.37012 33.9395 0l22.6709 -22.6699c9.35938 -9.35938 9.36914 -24.5195 0.0390625 -33.8994l-154.029 -154.74l154.02 -154.75c9.33984 -9.37988 9.32031 -24.54 -0.0400391 -33.9004l-22.6699 -22.6699\nc-9.37012 -9.37012 -24.5693 -9.37012 -33.9395 0l-194.341 194.351c-9.36914 9.37012 -9.36914 24.5693 0 33.9395z\" />\n    <glyph glyph-name=\"chevron-right\" unicode=\"&#xf054;\" horiz-adv-x=\"320\" \nd=\"M285.476 175.029l-194.344 -194.344c-9.37305 -9.37207 -24.5684 -9.37207 -33.9404 0l-22.667 22.667c-9.35742 9.35742 -9.375 24.5225 -0.0400391 33.9014l154.021 154.746l-154.021 154.745c-9.33496 9.37891 -9.31738 24.5439 0.0400391 33.9014l22.667 22.667\nc9.37305 9.37207 24.5684 9.37207 33.9404 0l194.343 -194.344c9.37305 -9.37207 9.37305 -24.5674 0.000976562 -33.9404z\" />\n    <glyph glyph-name=\"plus-circle\" unicode=\"&#xf055;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM400 164v56c0 6.59961 -5.40039 12 -12 12h-92v92c0 6.59961 -5.40039 12 -12 12h-56c-6.59961 0 -12 -5.40039 -12 -12v-92h-92c-6.59961 0 -12 -5.40039 -12 -12v-56\nc0 -6.59961 5.40039 -12 12 -12h92v-92c0 -6.59961 5.40039 -12 12 -12h56c6.59961 0 12 5.40039 12 12v92h92c6.59961 0 12 5.40039 12 12z\" />\n    <glyph glyph-name=\"minus-circle\" unicode=\"&#xf056;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM124 152h264c6.59961 0 12 5.40039 12 12v56c0 6.59961 -5.40039 12 -12 12h-264c-6.59961 0 -12 -5.40039 -12 -12v-56c0 -6.59961 5.40039 -12 12 -12z\" />\n    <glyph glyph-name=\"times-circle\" unicode=\"&#xf057;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM377.6 126.9l-65.5996 65.0996l65.7002 65c4.7002 4.7002 4.7002 12.2998 0 17l-39.6006 39.5996c-4.69922 4.7002 -12.2998 4.7002 -17 0l-65.0996 -65.5996l-65 65.7002\nc-4.7002 4.7002 -12.2998 4.7002 -17 0l-39.5996 -39.6006c-4.7002 -4.69922 -4.7002 -12.2998 0 -17l65.5996 -65.0996l-65.5996 -65c-4.7002 -4.7002 -4.7002 -12.2998 0 -17l39.5 -39.5996c4.69922 -4.7002 12.2998 -4.7002 17 0l65.0996 65.5996l65 -65.5996\nc4.7002 -4.7002 12.2998 -4.7002 17 0l39.5996 39.5c4.7002 4.69922 4.7002 12.2998 0 17z\" />\n    <glyph glyph-name=\"check-circle\" unicode=\"&#xf058;\" \nd=\"M504 192c0 -136.967 -111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248s248 -111.033 248 -248zM227.314 60.6855l184 184c6.24707 6.24805 6.24707 16.3799 0 22.6279l-22.6279 22.627c-6.24707 6.24902 -16.3789 6.24902 -22.6279 0\nl-150.059 -150.059l-70.0586 70.0596c-6.24805 6.24805 -16.3799 6.24805 -22.6279 0l-22.6279 -22.627c-6.24707 -6.24805 -6.24707 -16.3799 0 -22.6279l104 -104c6.24902 -6.24805 16.3799 -6.24805 22.6289 -0.000976562z\" />\n    <glyph glyph-name=\"question-circle\" unicode=\"&#xf059;\" \nd=\"M504 192c0 -136.997 -111.043 -248 -248 -248s-248 111.003 -248 248c0 136.917 111.043 248 248 248s248 -111.083 248 -248zM262.655 358c-54.4971 0 -89.2549 -22.957 -116.549 -63.7578c-3.53613 -5.28613 -2.35352 -12.415 2.71484 -16.2578l34.6982 -26.3105\nc5.20508 -3.94727 12.6211 -3.00781 16.665 2.12207c17.8643 22.6582 30.1133 35.7969 57.3037 35.7969c20.4287 0 45.6973 -13.1475 45.6973 -32.958c0 -14.9756 -12.3623 -22.667 -32.5332 -33.9756c-23.5244 -13.1875 -54.6523 -29.6006 -54.6523 -70.6592v-4\nc0 -6.62695 5.37305 -12 12 -12h56c6.62695 0 12 5.37305 12 12v1.33301c0 28.4619 83.1855 29.6475 83.1855 106.667c0 58.002 -60.1641 102 -116.53 102zM256 110c-25.3652 0 -46 -20.6348 -46 -46c0 -25.3643 20.6348 -46 46 -46s46 20.6357 46 46\nc0 25.3652 -20.6348 46 -46 46z\" />\n    <glyph glyph-name=\"info-circle\" unicode=\"&#xf05a;\" \nd=\"M256 440c136.957 0 248 -111.083 248 -248c0 -136.997 -111.043 -248 -248 -248s-248 111.003 -248 248c0 136.917 111.043 248 248 248zM256 330c-23.1963 0 -42 -18.8037 -42 -42s18.8037 -42 42 -42s42 18.8037 42 42s-18.8037 42 -42 42zM312 76v24\nc0 6.62695 -5.37305 12 -12 12h-12v100c0 6.62695 -5.37305 12 -12 12h-64c-6.62695 0 -12 -5.37305 -12 -12v-24c0 -6.62695 5.37305 -12 12 -12h12v-64h-12c-6.62695 0 -12 -5.37305 -12 -12v-24c0 -6.62695 5.37305 -12 12 -12h88c6.62695 0 12 5.37305 12 12z\" />\n    <glyph glyph-name=\"crosshairs\" unicode=\"&#xf05b;\" \nd=\"M500 224c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-30.3643c-13.9121 -93.6748 -87.9609 -167.724 -181.636 -181.636v-30.3643c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v30.3643\nc-93.6748 13.9121 -167.724 87.9609 -181.636 181.636h-30.3643c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h30.3643c13.9121 93.6748 87.9609 167.724 181.636 181.636v30.3643c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-30.3643\nc93.6748 -13.9121 167.724 -87.9609 181.636 -181.636h30.3643zM288 43.3662c58.2432 12.417 104.232 58.46 116.634 116.634h-40.6338c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40.6338c-12.417 58.2432 -58.46 104.232 -116.634 116.634v-40.6338\nc0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40.6338c-58.2432 -12.417 -104.232 -58.46 -116.634 -116.634h40.6338c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-40.6338\nc12.417 -58.2432 58.46 -104.232 116.634 -116.634v40.6338c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40.6338zM288 192c0 -17.6729 -14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32s32 -14.3271 32 -32z\" />\n    <glyph glyph-name=\"ban\" unicode=\"&#xf05e;\" \nd=\"M256 440c136.967 0 248 -111.034 248 -248s-111.034 -248 -248 -248s-248 111.033 -248 248s111.034 248 248 248zM386.108 322.108c-65.4121 65.4102 -165.435 70.0312 -235.639 20.6758l256.315 -256.313c49.3232 70.1562 44.7705 170.189 -20.6768 235.638z\nM125.892 61.8916c65.4121 -65.4111 165.436 -70.0312 235.639 -20.6758l-256.315 256.313c-49.3232 -70.1562 -44.7705 -170.189 20.6768 -235.638z\" />\n    <glyph glyph-name=\"arrow-left\" unicode=\"&#xf060;\" horiz-adv-x=\"448\" \nd=\"M257.5 2.90039l-22.2002 -22.2002c-9.39941 -9.40039 -24.5996 -9.40039 -33.8994 0l-194.4 194.3c-9.40039 9.40039 -9.40039 24.5996 0 33.9004l194.4 194.399c9.39941 9.40039 24.5996 9.40039 33.8994 0l22.2002 -22.2002c9.5 -9.5 9.2998 -25 -0.400391 -34.2998\nl-120.5 -114.8h287.4c13.2998 0 24 -10.7002 24 -24v-32c0 -13.2998 -10.7002 -24 -24 -24h-287.4l120.5 -114.8c9.80078 -9.2998 10 -24.7998 0.400391 -34.2998z\" />\n    <glyph glyph-name=\"arrow-right\" unicode=\"&#xf061;\" horiz-adv-x=\"448\" \nd=\"M190.5 381.1l22.2002 22.2002c9.39941 9.40039 24.5996 9.40039 33.8994 0l194.4 -194.3c9.40039 -9.40039 9.40039 -24.5996 0 -33.9004l-194.4 -194.399c-9.39941 -9.40039 -24.5996 -9.40039 -33.8994 0l-22.2002 22.2002c-9.5 9.5 -9.2998 25 0.400391 34.2998\nl120.5 114.8h-287.4c-13.2998 0 -24 10.7002 -24 24v32c0 13.2998 10.7002 24 24 24h287.4l-120.5 114.8c-9.80078 9.2998 -10 24.7998 -0.400391 34.2998z\" />\n    <glyph glyph-name=\"arrow-up\" unicode=\"&#xf062;\" horiz-adv-x=\"448\" \nd=\"M34.9004 158.5l-22.2002 22.2002c-9.40039 9.39941 -9.40039 24.5996 0 33.8994l194.3 194.4c9.40039 9.40039 24.5996 9.40039 33.9004 0l194.3 -194.3c9.39941 -9.40039 9.39941 -24.6006 0 -33.9004l-22.2002 -22.2002c-9.5 -9.5 -25 -9.2998 -34.2998 0.400391\nl-114.7 120.4v-287.4c0 -13.2998 -10.7002 -24 -24 -24h-32c-13.2998 0 -24 10.7002 -24 24v287.4l-114.8 -120.5c-9.2998 -9.80078 -24.7998 -10 -34.2998 -0.400391z\" />\n    <glyph glyph-name=\"arrow-down\" unicode=\"&#xf063;\" horiz-adv-x=\"448\" \nd=\"M413.1 225.5l22.2002 -22.2002c9.40039 -9.39941 9.40039 -24.5996 0 -33.8994l-194.3 -194.4c-9.40039 -9.40039 -24.5996 -9.40039 -33.9004 0l-194.399 194.4c-9.40039 9.39941 -9.40039 24.5996 0 33.8994l22.2002 22.2002c9.5 9.5 25 9.2998 34.2998 -0.400391\nl114.8 -120.5v287.4c0 13.2998 10.7002 24 24 24h32c13.2998 0 24 -10.7002 24 -24v-287.4l114.8 120.5c9.2998 9.80078 24.7998 10 34.2998 0.400391z\" />\n    <glyph glyph-name=\"share\" unicode=\"&#xf064;\" \nd=\"M503.691 258.164c11.0859 -9.5752 11.0703 -26.7656 0 -36.3281l-176.005 -152c-15.3867 -13.2891 -39.6865 -2.53613 -39.6865 18.1641v87.915c-155.083 -2.23145 -221.934 -40.7295 -176.59 -185.742c5.03418 -16.0977 -14.4238 -28.5615 -28.0771 -18.6309\nc-43.752 31.8232 -83.333 92.6914 -83.333 154.132c0 152.227 127.371 184.419 288 186.258v80.0537c0 20.668 24.2812 31.4688 39.6865 18.1641z\" />\n    <glyph glyph-name=\"expand\" unicode=\"&#xf065;\" horiz-adv-x=\"448\" \nd=\"M0 268v124c0 13.2998 10.7002 24 24 24h124c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-84v-84c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12zM288 404c0 6.59961 5.40039 12 12 12h124c13.2998 0 24 -10.7002 24 -24\nv-124c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v84h-84c-6.59961 0 -12 5.40039 -12 12v40zM436 128c6.59961 0 12 -5.40039 12 -12v-124c0 -13.2998 -10.7002 -24 -24 -24h-124c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h84\nv84c0 6.59961 5.40039 12 12 12h40zM160 -20c0 -6.59961 -5.40039 -12 -12 -12h-124c-13.2998 0 -24 10.7002 -24 24v124c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-84h84c6.59961 0 12 -5.40039 12 -12v-40z\" />\n    <glyph glyph-name=\"compress\" unicode=\"&#xf066;\" horiz-adv-x=\"448\" \nd=\"M436 256h-124c-13.2998 0 -24 10.7002 -24 24v124c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-84h84c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12zM160 280c0 -13.2998 -10.7002 -24 -24 -24h-124\nc-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h84v84c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-124zM160 -20c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v84h-84c-6.59961 0 -12 5.40039 -12 12v40\nc0 6.59961 5.40039 12 12 12h124c13.2998 0 24 -10.7002 24 -24v-124zM352 -20c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v124c0 13.2998 10.7002 24 24 24h124c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-84v-84z\" />\n    <glyph glyph-name=\"plus\" unicode=\"&#xf067;\" horiz-adv-x=\"448\" \nd=\"M416 240c17.6699 0 32 -14.3301 32 -32v-32c0 -17.6699 -14.3301 -32 -32 -32h-144v-144c0 -17.6699 -14.3301 -32 -32 -32h-32c-17.6699 0 -32 14.3301 -32 32v144h-144c-17.6699 0 -32 14.3301 -32 32v32c0 17.6699 14.3301 32 32 32h144v144\nc0 17.6699 14.3301 32 32 32h32c17.6699 0 32 -14.3301 32 -32v-144h144z\" />\n    <glyph glyph-name=\"minus\" unicode=\"&#xf068;\" horiz-adv-x=\"448\" \nd=\"M416 240c17.6699 0 32 -14.3301 32 -32v-32c0 -17.6699 -14.3301 -32 -32 -32h-384c-17.6699 0 -32 14.3301 -32 32v32c0 17.6699 14.3301 32 32 32h384z\" />\n    <glyph glyph-name=\"asterisk\" unicode=\"&#xf069;\" \nd=\"M478.21 113.907c11.7949 -6.47754 15.96 -21.3828 9.23242 -33.0361l-19.4805 -33.7412c-6.72754 -11.6533 -21.7207 -15.499 -33.2266 -8.52246l-138.735 84.1104l3.47559 -162.204c0.288086 -13.4531 -10.5391 -24.5137 -23.9941 -24.5137h-38.9619\nc-13.4551 0 -24.2822 11.0605 -23.9941 24.5137l3.47461 162.204l-138.735 -84.1113c-11.5059 -6.97656 -26.499 -3.13086 -33.2266 8.52246l-19.4805 33.7412c-6.72852 11.6533 -2.5625 26.5596 9.23242 33.0371l142.21 78.0928l-142.209 78.0918\nc-11.7949 6.47754 -15.9609 21.3838 -9.2334 33.0371l19.4805 33.7412c6.72754 11.6533 21.7207 15.499 33.2266 8.52246l138.735 -84.1104l-3.47363 162.204c-0.289062 13.4531 10.5381 24.5137 23.9932 24.5137h38.9609c13.4561 0 24.2822 -11.0605 23.9941 -24.5137\nl-3.47461 -162.204l138.735 84.1113c11.5068 6.97656 26.499 3.13086 33.2266 -8.52246l19.4805 -33.7412c6.72852 -11.6533 2.5625 -26.5596 -9.23242 -33.0371l-142.21 -78.0928z\" />\n    <glyph glyph-name=\"exclamation-circle\" unicode=\"&#xf06a;\" \nd=\"M504 192c0 -136.997 -111.043 -248 -248 -248s-248 111.003 -248 248c0 136.917 111.043 248 248 248s248 -111.083 248 -248zM256 142c-25.4053 0 -46 -20.5947 -46 -46s20.5947 -46 46 -46s46 20.5947 46 46s-20.5947 46 -46 46zM212.327 307.346l7.41797 -136\nc0.34668 -6.36328 5.6084 -11.3457 11.9814 -11.3457h48.5469c6.37305 0 11.6348 4.98242 11.9814 11.3457l7.41797 136c0.375 6.87402 -5.09766 12.6543 -11.9814 12.6543h-63.3838c-6.88379 0 -12.3555 -5.78027 -11.9805 -12.6543z\" />\n    <glyph glyph-name=\"gift\" unicode=\"&#xf06b;\" \nd=\"M32 0v128h192v-160h-160c-17.7002 0 -32 14.2998 -32 32zM288 -32v160h192v-128c0 -17.7002 -14.2998 -32 -32 -32h-160zM480 288c17.7002 0 32 -14.2998 32 -32v-80c0 -8.7998 -7.2002 -16 -16 -16h-480c-8.7998 0 -16 7.2002 -16 16v80c0 17.7002 14.2998 32 32 32\nh44.0996c-6.2998 12.0996 -10.0996 25.5 -10.0996 40c0 48.5 39.5 88 88 88c41.5996 0 68.5 -21.2998 103 -68.2998c34.5 47 61.4004 68.2998 103 68.2998c48.5 0 88 -39.5 88 -88c0 -14.5 -3.90039 -27.9004 -10.0996 -40h42.0996zM153.9 288h86.0996\nc-51.5 76.7002 -66.2002 80 -86.0996 80c-22.1006 0 -40 -17.9004 -40 -40s17.8994 -40 40 -40zM360 288c22.0996 0 40 17.9004 40 40s-17.9004 40 -40 40c-20.4004 0 -34.7002 -3.5 -86.0996 -80h86.0996z\" />\n    <glyph glyph-name=\"leaf\" unicode=\"&#xf06c;\" horiz-adv-x=\"576\" \nd=\"M546.2 438.3c19 -42.3994 29.7998 -94.3994 29.7998 -144.6c0 -172.4 -110.5 -313.2 -267.5 -324.601c-80.9004 -8.59961 -142.5 33.3008 -174.9 77.2002c-51 -42.7002 -70.3994 -87 -71.8994 -90.5996c-6.7998 -16.2002 -25.4004 -24.1006 -41.7998 -17.2998\nc-16.3008 6.69922 -24.1006 25.2998 -17.5 41.5996c23.5996 57.9004 130.199 212 381.6 212c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16c-130.6 0 -222.7 -38.7998 -286.5 -84.5c-0.700195 6.7998 -1.5 13.5 -1.5 20.5c0 106 86 192 192 192h80\nc63.4004 0 118.9 33.5996 149.9 87.5c6.69922 11.7998 22.6992 11.2998 28.2998 -1.2002z\" />\n    <glyph glyph-name=\"fire\" unicode=\"&#xf06d;\" horiz-adv-x=\"384\" \nd=\"M216 424.14c0 -103.14 168 -125.85 168 -296.14c0 -105.87 -86.1299 -192 -192 -192s-192 86.1299 -192 192c0 58.6699 27.7998 106.84 54.5703 134.96c14.96 15.7305 41.4297 5.2002 41.4297 -16.5v-85.5098c0 -35.1699 27.9805 -64.4902 63.1504 -64.9404\nc35.7393 -0.469727 64.8496 28.3604 64.8496 63.9902c0 88 -176 96.1504 -52.1504 277.18c13.5 19.7305 44.1504 10.7607 44.1504 -13.04z\" />\n    <glyph glyph-name=\"eye\" unicode=\"&#xf06e;\" horiz-adv-x=\"576\" \nd=\"M572.52 206.6c1.9209 -3.79883 3.47949 -10.3379 3.47949 -14.5947s-1.55859 -10.7959 -3.47949 -14.5947c-54.1992 -105.771 -161.59 -177.41 -284.52 -177.41s-230.29 71.5898 -284.52 177.4c-1.9209 3.79883 -3.47949 10.3379 -3.47949 14.5947\ns1.55859 10.7959 3.47949 14.5947c54.1992 105.771 161.59 177.41 284.52 177.41s230.29 -71.5898 284.52 -177.4zM288 48h0.0703125c79.4492 0 143.93 64.4805 143.93 143.93v0.0703125c0 79.4883 -64.5117 144 -144 144s-144 -64.5117 -144 -144s64.5117 -144 144 -144z\nM288 288h0.225586c52.8701 0 95.7803 -42.9092 95.7803 -95.7793c0 -52.8711 -42.9102 -95.7803 -95.7803 -95.7803c-52.8711 0 -95.7803 42.9092 -95.7803 95.7803c0 7.04785 1.49805 18.2871 3.34473 25.0889c6.9834 -5.13867 19.6895 -9.30957 28.3604 -9.30957\nc26.4131 0 47.8496 21.4365 47.8496 47.8496c0 8.6709 -4.1709 21.377 -9.30957 28.3604c6.84375 1.99219 18.1826 3.69043 25.3096 3.79004z\" />\n    <glyph glyph-name=\"eye-slash\" unicode=\"&#xf070;\" horiz-adv-x=\"640\" \nd=\"M320 48c7.24121 0.0673828 18.8896 1.23633 26 2.61035l51.8896 -40.1504c-25.0195 -6.45996 -50.9795 -10.46 -77.8896 -10.46c-122.93 0 -230.29 71.5898 -284.52 177.4c-1.9209 3.79883 -3.47949 10.3379 -3.47949 14.5947s1.55859 10.7959 3.47949 14.5947\nc10.2393 20 22.9297 38.29 36.7197 55.5898l104.899 -81.0693c5.65039 -74.4004 67.0508 -133.11 142.9 -133.11zM633.82 -10.0996c3.41309 -2.65234 6.18359 -8.3125 6.18359 -12.6357c0 -3.02734 -1.50684 -7.42383 -3.36426 -9.81445l-19.6396 -25.2705\nc-2.65234 -3.41211 -8.31152 -6.18262 -12.6338 -6.18262c-3.03125 0 -7.43359 1.51172 -9.82617 3.37305l-588.36 454.729c-3.41016 2.65234 -6.17773 8.31055 -6.17773 12.6309c0 3.0293 1.50879 7.42773 3.36816 9.81934l19.6299 25.2705\nc2.65234 3.41211 8.31152 6.18262 12.6338 6.18262c3.03125 0 7.43359 -1.51172 9.82617 -3.37305l127.22 -98.3301c38.0117 20.7578 104.011 37.6475 147.32 37.7002c122.93 0 230.29 -71.5898 284.52 -177.4c1.9209 -3.79883 3.47949 -10.3379 3.47949 -14.5947\ns-1.55859 -10.7959 -3.47949 -14.5947c-16.7666 -32.6758 -53.166 -78.4033 -81.25 -102.07zM450.1 131.9c8.61035 18.3203 13.9004 38.4697 13.9004 60.0996v0.0800781c0 79.4434 -64.4766 143.92 -143.92 143.92h-0.0800781\nc-28.4697 -0.0214844 -69.3047 -14.8545 -91.1504 -33.1104l73.6104 -56.8896c0.726562 2.71387 1.41602 7.19336 1.54004 10c-0.015625 8.62891 -4.18652 21.2666 -9.30957 28.21c7.17969 2.09668 19.0781 3.79785 26.5576 3.79785\nc52.3076 0 94.7598 -42.4521 94.7598 -94.7598c0 -0.344727 -0.00292969 -0.90332 -0.0078125 -1.24805c-0.112305 -8.43457 -2.44238 -21.749 -5.2002 -29.7197z\" />\n    <glyph glyph-name=\"exclamation-triangle\" unicode=\"&#xf071;\" horiz-adv-x=\"576\" \nd=\"M569.517 7.9873c18.458 -31.9941 -4.71094 -71.9873 -41.5762 -71.9873h-479.887c-36.9365 0 -59.999 40.0547 -41.5771 71.9873l239.946 416.027c18.4668 32.0098 64.7197 31.9512 83.1543 0zM288 94c-25.4053 0 -46 -20.5947 -46 -46s20.5947 -46 46 -46\ns46 20.5947 46 46s-20.5947 46 -46 46zM244.327 259.346l7.41797 -136c0.34668 -6.36328 5.6084 -11.3457 11.9814 -11.3457h48.5469c6.37305 0 11.6348 4.98242 11.9814 11.3457l7.41797 136c0.375 6.87402 -5.09766 12.6543 -11.9814 12.6543h-63.3838\nc-6.88379 0 -12.3555 -5.78027 -11.9805 -12.6543z\" />\n    <glyph glyph-name=\"plane\" unicode=\"&#xf072;\" horiz-adv-x=\"576\" \nd=\"M480 256c35.3496 0 96 -28.6504 96 -64s-60.6504 -64 -96 -64h-114.29l-105.11 -183.94c-2.84961 -4.97949 -8.14941 -8.05957 -13.8896 -8.05957h-65.5c-10.6299 0 -18.2998 10.1797 -15.3799 20.4004l49.0303 171.6h-102.86l-43.2002 -57.5996\nc-3.01953 -4.03027 -7.75977 -6.40039 -12.7998 -6.40039h-39.9902c-10.4102 0 -18.0498 9.78027 -15.5195 19.8799l31.5098 108.12l-31.5098 108.12c-2.53027 10.0996 5.10938 19.8799 15.5195 19.8799h39.9902c5.03027 0 9.78027 -2.37012 12.7998 -6.40039\nl43.2002 -57.5996h102.86l-49.0303 171.61c-2.91992 10.2197 4.75 20.3896 15.3799 20.3896h65.5h0.000976562c5.12598 0 11.3525 -3.61133 13.8994 -8.05957l105.1 -183.94h114.29z\" />\n    <glyph glyph-name=\"calendar-alt\" unicode=\"&#xf073;\" horiz-adv-x=\"448\" \nd=\"M0 -16v272h448v-272c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48zM320 180v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12v40c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12zM320 52v-40\nc0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12v40c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12zM192 180v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12v40c0 6.59961 -5.40039 12 -12 12h-40\nc-6.59961 0 -12 -5.40039 -12 -12zM192 52v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12v40c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12zM64 180v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12v40\nc0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12zM64 52v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12v40c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12zM400 384c26.5 0 48 -21.5 48 -48v-48h-448v48\nc0 26.5 21.5 48 48 48h48v48c0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-48h128v48c0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-48h48z\" />\n    <glyph glyph-name=\"random\" unicode=\"&#xf074;\" \nd=\"M504.971 88.9707c9.37305 -9.37305 9.37305 -24.5684 0 -33.9404l-80 -79.9844c-15.0098 -15.0098 -40.9707 -4.49023 -40.9707 16.9707v39.9834h-58.7852c-2.87793 0 -6.80859 1.70801 -8.77246 3.81152l-70.5566 75.5967l53.333 57.1426l52.7812 -56.5508h32v39.9814\nc0 21.4375 25.9434 31.9971 40.9707 16.9707zM12 272c-6.62695 0 -12 5.37305 -12 12v56c0 6.62695 5.37305 12 12 12h110.785h0.000976562c2.87793 0 6.80762 -1.70801 8.77148 -3.81152l70.5566 -75.5967l-53.333 -57.1426l-52.7812 56.5508h-84zM384 272h-32\nl-220.442 -236.188c-2.26953 -2.43066 -5.44629 -3.81152 -8.77246 -3.81152h-110.785c-6.62695 0 -12 5.37305 -12 12v56c0 6.62695 5.37305 12 12 12h84l220.442 236.188c1.96387 2.10352 5.89453 3.81152 8.77246 3.81152h58.7852v39.9814\nc0 21.4365 25.9434 31.9971 40.9707 16.9697l80 -79.9814c9.37305 -9.37207 9.37305 -24.5674 0 -33.9404l-80 -79.9844c-15.0098 -15.0088 -40.9707 -4.48926 -40.9707 16.9707v39.9844z\" />\n    <glyph glyph-name=\"comment\" unicode=\"&#xf075;\" \nd=\"M256 416c141.4 0 256 -93.0996 256 -208s-114.6 -208 -256 -208c-38.4004 0 -74.7002 7.09961 -107.4 19.4004c-24.5996 -19.6006 -74.2998 -51.4004 -140.6 -51.4004c-3.2002 0 -6 1.7998 -7.2998 4.7998s-0.700195 6.40039 1.5 8.7002\nc0.5 0.5 42.2998 45.4004 54.7998 95.7998c-35.5996 35.7002 -57 81.1006 -57 130.7c0 114.9 114.6 208 256 208z\" />\n    <glyph glyph-name=\"magnet\" unicode=\"&#xf076;\" \nd=\"M164.07 299.9h-152.07c-6.62402 0 -12 5.37598 -12 12v80c0 19.8721 16.1279 36 36 36h104c19.8721 0 36 -16.1279 36 -36v-80c0 -0.03125 0.000976562 -0.0800781 0.000976562 -0.110352c0 -6.56348 -5.32715 -11.8896 -11.8906 -11.8896h-0.0400391zM512 311.9\nc0 -6.56348 -5.32715 -11.9014 -11.8896 -11.9014c-0.0302734 0 -0.0800781 0.000976562 -0.110352 0.000976562h-152c-6.62402 0 -12 5.37598 -12 12v80c0 19.8721 16.1279 36 36 36h104c19.8721 0 36 -16.1279 36 -36v-80.0996zM348 267.9h151.85h0.000976562\nc6.62402 0 12 -5.37598 12 -12c0 -0.0283203 0 -0.0732422 -0.000976562 -0.100586c-0.199219 -20.2002 -0.599609 -40.3994 0 -53.2002c0 -150.699 -134.42 -246.699 -255 -246.699s-256.75 96 -256.75 246.6c0.600586 13 0.100586 31.9004 0 53.2998v0.100586\nc0 6.62402 5.37598 12 12 12v0h151.9c6.62402 0 12 -5.37598 12 -12v-52c0 -127.9 160 -128.101 160 0v52c0 6.62402 5.37598 12 12 12z\" />\n    <glyph glyph-name=\"chevron-up\" unicode=\"&#xf077;\" horiz-adv-x=\"448\" \nd=\"M240.971 317.476l194.344 -194.343c9.37207 -9.37305 9.37207 -24.5684 0 -33.9404l-22.667 -22.667c-9.35742 -9.35742 -24.5225 -9.375 -33.9014 -0.0400391l-154.746 154.02l-154.745 -154.021c-9.37891 -9.33496 -24.5439 -9.31738 -33.9014 0.0400391\nl-22.667 22.667c-9.37207 9.37305 -9.37207 24.5684 0 33.9404l194.344 194.343c9.37207 9.37305 24.5674 9.37305 33.9404 0.000976562z\" />\n    <glyph glyph-name=\"chevron-down\" unicode=\"&#xf078;\" horiz-adv-x=\"448\" \nd=\"M207.029 66.5244l-194.344 194.344c-9.37207 9.37305 -9.37207 24.5684 0 33.9404l22.667 22.667c9.35742 9.35742 24.5225 9.375 33.9014 0.0400391l154.746 -154.021l154.745 154.021c9.37891 9.33496 24.5439 9.31738 33.9014 -0.0400391l22.667 -22.667\nc9.37207 -9.37305 9.37207 -24.5684 0 -33.9404l-194.343 -194.344c-9.37305 -9.37207 -24.5684 -9.37207 -33.9414 0z\" />\n    <glyph glyph-name=\"retweet\" unicode=\"&#xf079;\" horiz-adv-x=\"640\" \nd=\"M629.657 104.402l-100.687 -100.687c-9.37305 -9.37207 -24.5674 -9.37207 -33.9404 0l-100.688 100.687c-9.37305 9.37305 -9.37305 24.5684 0 33.9404l10.8232 10.8232c9.56152 9.56152 25.1328 9.33984 34.4189 -0.492188l40.415 -42.792v182.118h-187.549\nc-5.4873 0 -13.0908 3.14941 -16.9707 7.0293l-16 16c-15.1191 15.1201 -4.41113 40.9707 16.9707 40.9707h243.549c13.2549 0 24 -10.7451 24 -24v-222.118l40.416 42.792c9.28516 9.83105 24.8564 10.0537 34.4189 0.492188l10.8232 -10.8232\nc9.37207 -9.37207 9.37207 -24.5684 -0.000976562 -33.9404zM364.519 88.9707l16.001 -16c15.1191 -15.1201 4.41113 -40.9707 -16.9707 -40.9707h-243.549c-13.2549 0 -24 10.7451 -24 24v222.119l-40.416 -42.793c-9.28613 -9.83105 -24.8574 -10.0527 -34.4189 -0.491211\nl-10.8223 10.8223c-9.37305 9.37207 -9.37305 24.5674 0 33.9404l100.688 100.687c9.37207 9.37305 24.5674 9.37305 33.9404 0l100.687 -100.686c9.37305 -9.37207 9.37305 -24.5674 0 -33.9404l-10.8223 -10.8223c-9.5625 -9.5625 -25.1328 -9.33984 -34.4189 0.491211\nl-40.416 42.792v-182.119h187.548h0.000976562c5.4873 0 13.0898 -3.14941 16.9697 -7.0293z\" />\n    <glyph glyph-name=\"shopping-cart\" unicode=\"&#xf07a;\" horiz-adv-x=\"576\" \nd=\"M528.12 146.681c-2.4834 -10.9268 -12.1973 -18.6807 -23.4033 -18.6807h-293.145l6.54492 -32h268.418c15.4004 0 26.8154 -14.3008 23.4033 -29.3193l-5.51758 -24.2754c18.6914 -9.07324 31.5791 -28.2334 31.5791 -50.4053c0 -30.9277 -25.0723 -56 -56 -56\ns-56 25.0723 -56 56c0 15.6738 6.44727 29.835 16.8232 40h-209.647c10.377 -10.165 16.8242 -24.3262 16.8242 -40c0 -30.9277 -25.0723 -56 -56 -56s-56 25.0723 -56 56c0 20.7783 11.3252 38.9004 28.1309 48.5654l-70.248 343.435h-69.8828\nc-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24h102.529c11.4004 0 21.2285 -8.02148 23.5127 -19.1904l9.16602 -44.8096h392.782c15.4004 0 26.8154 -14.3008 23.4023 -29.3193z\" />\n    <glyph glyph-name=\"folder\" unicode=\"&#xf07b;\" \nd=\"M464 320c26.5098 0 48 -21.4902 48 -48v-224c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h160l64 -64h192z\" />\n    <glyph glyph-name=\"folder-open\" unicode=\"&#xf07c;\" horiz-adv-x=\"576\" \nd=\"M572.694 155.907l-72.4248 -124.155c-10.2236 -17.5273 -34.9883 -31.752 -55.2793 -31.752h-0.000976562h-399.964c-18.5234 0 -30.0645 20.0928 -20.7314 36.0928l72.4238 124.155c10.2246 17.5273 34.9902 31.752 55.2822 31.752v0h399.964\nc18.5234 0 30.0645 -20.0928 20.7305 -36.0928zM152 224c-34.0107 0 -65.7861 -18.25 -82.9229 -47.6279l-69.0771 -118.418v278.046c0 26.5098 21.4902 48 48 48h160l64 -64h160c26.5098 0 48 -21.4902 48 -48v-48h-328z\" />\n    <glyph glyph-name=\"chart-bar\" unicode=\"&#xf080;\" \nd=\"M332.8 128c-6.39941 0 -12.7998 6.40039 -12.7998 12.7998v134.4c0 6.39941 6.40039 12.7998 12.7998 12.7998h38.4004c6.39941 0 12.7998 -6.40039 12.7998 -12.7998v-134.4c0 -6.39941 -6.40039 -12.7998 -12.7998 -12.7998h-38.4004zM428.8 128\nc-6.39941 0 -12.7998 6.40039 -12.7998 12.7998v230.4c0 6.39941 6.40039 12.7998 12.7998 12.7998h38.4004c6.39941 0 12.7998 -6.40039 12.7998 -12.7998v-230.4c0 -6.39941 -6.40039 -12.7998 -12.7998 -12.7998h-38.4004zM140.8 128\nc-6.39941 0 -12.7998 6.40039 -12.7998 12.7998v70.4004c0 6.39941 6.40039 12.7998 12.7998 12.7998h38.4004c6.39941 0 12.7998 -6.40039 12.7998 -12.7998v-70.4004c0 -6.39941 -6.40039 -12.7998 -12.7998 -12.7998h-38.4004zM236.8 128\nc-6.39941 0 -12.7998 6.40039 -12.7998 12.7998v198.4c0 6.39941 6.40039 12.7998 12.7998 12.7998h38.4004c6.39941 0 12.7998 -6.40039 12.7998 -12.7998v-198.4c0 -6.39941 -6.40039 -12.7998 -12.7998 -12.7998h-38.4004zM496 64c8.83984 0 16 -7.16016 16 -16v-32\nc0 -8.83984 -7.16016 -16 -16 -16h-464c-17.6699 0 -32 14.3301 -32 32v336c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-304h432z\" />\n    <glyph glyph-name=\"camera-retro\" unicode=\"&#xf083;\" \nd=\"M48 416h416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48zM48 384c-8.7998 0 -16 -7.2002 -16 -16v-10c0 -3.2998 2.7002 -6 6 -6h116c3.2998 0 6 2.7002 6 6v20c0 3.2998 -2.7002 6 -6 6h-106z\nM474 288c3.2998 0 6 2.7002 6 6v74c0 8.7998 -7.2002 16 -16 16h-252.8c-2 0 -3.90039 -1 -5 -2.7002l-30.2002 -45.2998h-138c-3.2998 0 -6 -2.7002 -6 -6v-36c0 -3.2998 2.7002 -6 6 -6h436zM256 24c66.2002 0 120 53.7998 120 120s-53.7998 120 -120 120\ns-120 -53.7998 -120 -120s53.7998 -120 120 -120zM256 232c48.5 0 88 -39.5 88 -88s-39.5 -88 -88 -88s-88 39.5 -88 88s39.5 88 88 88zM208 128c8.7998 0 16 7.2002 16 16c0 17.5996 14.4004 32 32 32c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16\nc-35.2998 0 -64 -28.7002 -64 -64c0 -8.7998 7.2002 -16 16 -16z\" />\n    <glyph glyph-name=\"key\" unicode=\"&#xf084;\" \nd=\"M512 271.999c0 -97.2021 -78.7979 -175.999 -176 -175.999c-11.2197 0 -22.1904 1.06152 -32.8271 3.06934l-24.0117 -27.0146c-3.95215 -4.44629 -11.9883 -8.05469 -17.9375 -8.05469h-0.000976562h-37.2227v-40c0 -13.2549 -10.7451 -24 -24 -24h-40v-40\nc0 -13.2549 -10.7451 -24 -24 -24h-112c-13.2549 0 -24 10.7451 -24 24v78.0586c0 6.36523 2.5293 12.4707 7.0293 16.9717l161.802 161.802c-5.72266 17.3535 -8.83105 35.8965 -8.83105 55.168c0 97.2021 78.7969 175.999 175.999 176\nc97.4893 0.000976562 176.001 -78.5107 176.001 -176.001zM336 320c0 -26.5098 21.4902 -48 48 -48s48 21.4902 48 48s-21.4902 48 -48 48s-48 -21.4902 -48 -48z\" />\n    <glyph glyph-name=\"cogs\" unicode=\"&#xf085;\" horiz-adv-x=\"640\" \nd=\"M512.1 257l-8.19922 -14.2998c-3 -5.2998 -9.40039 -7.5 -15.1006 -5.40039c-11.7998 4.40039 -22.5996 10.7002 -32.0996 18.6006c-4.60059 3.7998 -5.7998 10.5 -2.7998 15.6992l8.19922 14.3008c-6.89941 8 -12.2998 17.2998 -15.8994 27.3994h-16.5\nc-6 0 -11.2002 4.2998 -12.2002 10.2998c-2 12 -2.09961 24.6006 0 37.1006c1 6 6.2002 10.3994 12.2002 10.3994h16.5c3.59961 10.1006 9 19.4004 15.8994 27.4004l-8.19922 14.2998c-3 5.2002 -1.90039 11.9004 2.7998 15.7002\nc9.5 7.90039 20.3994 14.2002 32.0996 18.5996c5.7002 2.10059 12.1006 -0.0996094 15.1006 -5.39941l8.19922 -14.2998c10.5 1.89941 21.2002 1.89941 31.7002 0l8.2002 14.2998c3 5.2998 9.40039 7.5 15.0996 5.39941c11.8008 -4.39941 22.6006 -10.6992 32.1006 -18.5996\nc4.59961 -3.7998 5.7998 -10.5 2.7998 -15.7002l-8.2002 -14.2998c6.90039 -8 12.2998 -17.2998 15.9004 -27.4004h16.5c6 0 11.2002 -4.2998 12.2002 -10.2998c2 -12 2.09961 -24.5996 0 -37.0996c-1 -6 -6.2002 -10.4004 -12.2002 -10.4004h-16.5\nc-3.60059 -10.0996 -9 -19.3994 -15.9004 -27.3994l8.2002 -14.3008c3 -5.19922 1.90039 -11.8994 -2.7998 -15.6992c-9.5 -7.90039 -20.4004 -14.2002 -32.1006 -18.6006c-5.69922 -2.09961 -12.0996 0.100586 -15.0996 5.40039l-8.2002 14.2998\nc-10.3994 -1.90039 -21.2002 -1.90039 -31.7002 0zM501.6 315.8c38.5 -29.5996 82.4004 14.2998 52.8008 52.7998c-38.5 29.7002 -82.4004 -14.2998 -52.8008 -52.7998zM386.3 161.9l33.7002 -16.8008c10.0996 -5.7998 14.5 -18.0996 10.5 -29.0996\nc-8.90039 -24.2002 -26.4004 -46.4004 -42.5996 -65.7998c-7.40039 -8.90039 -20.2002 -11.1006 -30.3008 -5.2998l-29.0996 16.7998c-16 -13.7002 -34.5996 -24.6006 -54.9004 -31.7002v-33.5996c0 -11.6006 -8.2998 -21.6006 -19.6992 -23.6006\nc-24.6006 -4.2002 -50.4004 -4.39941 -75.9004 0c-11.5 2 -20 11.9004 -20 23.6006v33.5996c-20.2998 7.2002 -38.9004 18 -54.9004 31.7002l-29.0996 -16.7002c-10 -5.7998 -22.9004 -3.59961 -30.2998 5.2998c-16.2002 19.4004 -33.2998 41.6006 -42.2002 65.7002\nc-4 10.9004 0.400391 23.2002 10.5 29.0996l33.2998 16.8008c-3.89941 20.8994 -3.89941 42.3994 0 63.3994l-33.2998 16.9004c-10.0996 5.7998 -14.5996 18.0996 -10.5 29c8.90039 24.2002 26 46.3994 42.2002 65.7998c7.39941 8.90039 20.2002 11.0996 30.2998 5.2998\nl29.0996 -16.7998c16 13.7002 34.6006 24.5996 54.9004 31.7002v33.7002c0 11.5 8.2002 21.5 19.5996 23.5c24.6006 4.19922 50.5 4.39941 76 0.0996094c11.5 -2 20 -11.9004 20 -23.5996v-33.6006c20.3008 -7.2002 38.9004 -18 54.9004 -31.7002l29.0996 16.8008\nc10 5.7998 22.9004 3.59961 30.3008 -5.30078c16.1992 -19.3994 33.1992 -41.5996 42.0996 -65.7998c4 -10.8994 0.0996094 -23.2002 -10 -29.0996l-33.7002 -16.7998c3.90039 -21 3.90039 -42.5 0 -63.5zM268.7 140.8c59.2002 77 -28.7002 164.9 -105.7 105.7\nc-59.2002 -77 28.7002 -164.9 105.7 -105.7zM512.1 -41.9004l-8.19922 -14.2998c-3 -5.2998 -9.40039 -7.5 -15.1006 -5.39941c-11.7998 4.39941 -22.5996 10.6992 -32.0996 18.5996c-4.60059 3.7998 -5.7998 10.5 -2.7998 15.7002l8.19922 14.2998\nc-6.89941 8 -12.2998 17.2998 -15.8994 27.4004h-16.5c-6 0 -11.2002 4.2998 -12.2002 10.2998c-2 12 -2.09961 24.5996 0 37.0996c1 6 6.2002 10.4004 12.2002 10.4004h16.5c3.59961 10.0996 9 19.3994 15.8994 27.3994l-8.19922 14.3008\nc-3 5.19922 -1.90039 11.8994 2.7998 15.6992c9.5 7.90039 20.3994 14.2002 32.0996 18.6006c5.7002 2.09961 12.1006 -0.100586 15.1006 -5.40039l8.19922 -14.2998c10.5 1.90039 21.2002 1.90039 31.7002 0l8.2002 14.2998c3 5.2998 9.40039 7.5 15.0996 5.40039\nc11.8008 -4.40039 22.6006 -10.7002 32.1006 -18.6006c4.59961 -3.7998 5.7998 -10.5 2.7998 -15.6992l-8.2002 -14.3008c6.90039 -8 12.2998 -17.2998 15.9004 -27.3994h16.5c6 0 11.2002 -4.2998 12.2002 -10.2998c2 -12 2.09961 -24.6006 0 -37.1006\nc-1 -6 -6.2002 -10.3994 -12.2002 -10.3994h-16.5c-3.60059 -10.1006 -9 -19.4004 -15.9004 -27.4004l8.2002 -14.2998c3 -5.2002 1.90039 -11.9004 -2.7998 -15.7002c-9.5 -7.90039 -20.4004 -14.2002 -32.1006 -18.5996\nc-5.69922 -2.10059 -12.0996 0.0996094 -15.0996 5.39941l-8.2002 14.2998c-10.3994 -1.89941 -21.2002 -1.89941 -31.7002 0zM501.6 17c38.5 -29.5996 82.4004 14.2998 52.8008 52.7998c-38.5 29.6006 -82.4004 -14.2998 -52.8008 -52.7998z\" />\n    <glyph glyph-name=\"comments\" unicode=\"&#xf086;\" horiz-adv-x=\"576\" \nd=\"M416 256c0 -88.4004 -93.0996 -160 -208 -160c-41 0 -79.0996 9.2998 -111.3 25c-21.7998 -12.7002 -52.1006 -25 -88.7002 -25c-3.2002 0 -6 1.7998 -7.2998 4.7998s-0.700195 6.40039 1.5 8.7002c0.299805 0.299805 22.3994 24.2998 35.7998 54.5\nc-23.9004 26.0996 -38 57.7002 -38 92c0 88.4004 93.0996 160 208 160s208 -71.5996 208 -160zM538 36c13.4004 -30.2998 35.5 -54.2002 35.7998 -54.5c2.2002 -2.40039 2.7998 -5.7998 1.5 -8.7002c-1.2002 -2.89941 -4.09961 -4.7998 -7.2998 -4.7998\nc-36.5996 0 -66.9004 12.2998 -88.7002 25c-32.2002 -15.7998 -70.2998 -25 -111.3 -25c-86.2002 0 -160.2 40.4004 -191.7 97.9004c10.4004 -1.10059 20.9004 -1.90039 31.7002 -1.90039c132.3 0 240 86.0996 240 192c0 6.7998 -0.400391 13.5 -1.2998 20.0996\nc75.7998 -23.8994 129.3 -81.1992 129.3 -148.1c0 -34.2998 -14.0996 -66 -38 -92z\" />\n    <glyph glyph-name=\"star-half\" unicode=\"&#xf089;\" horiz-adv-x=\"576\" \nd=\"M288 448v-439.6l-130.7 -68.6006c-23.3994 -12.2998 -50.8994 7.60059 -46.3994 33.7002l25 145.5l-105.7 103c-19 18.5 -8.5 50.7998 17.7002 54.5996l146.1 21.2002l65.2998 132.4c5.90039 11.8994 17.2998 17.7998 28.7002 17.7998z\" />\n    <glyph glyph-name=\"thumbtack\" unicode=\"&#xf08d;\" horiz-adv-x=\"384\" \nd=\"M298.028 233.733c47.9893 -22.3135 85.9717 -62.5508 85.9727 -113.733c0 -13.2549 -10.7451 -24 -24 -24h-136v-104.007c0 -1.04297 -0.378906 -2.64551 -0.844727 -3.57812l-24 -48c-2.94727 -5.89258 -11.3701 -5.88184 -14.3115 0l-24 48\nc-0.555664 1.11133 -0.844727 2.33594 -0.844727 3.57812v104.007h-136c-13.2549 0 -24 10.7451 -24 24c0 50.7393 37.4648 91.1797 85.9717 113.733l12.2354 118.267h-42.207c-13.2549 0 -24 10.7451 -24 24v48c0 13.2549 10.7451 24 24 24h272\nc13.2549 0 24 -10.7451 24 -24v-48c0 -13.2549 -10.7451 -24 -24 -24h-42.207z\" />\n    <glyph glyph-name=\"trophy\" unicode=\"&#xf091;\" horiz-adv-x=\"576\" \nd=\"M552 384c13.2998 0 24 -10.7002 24 -24v-56c0 -35.7002 -22.5996 -72.4004 -61.9004 -100.7c-31.3994 -22.7002 -69.6992 -37.0996 -110 -41.7002c-31.3994 -52.0996 -68.0996 -73.5996 -68.0996 -73.5996v-72h48c35.2998 0 64 -20.7002 64 -56v-12\nc0 -6.59961 -5.40039 -12 -12 -12h-296c-6.59961 0 -12 5.40039 -12 12v12c0 35.2998 28.7002 56 64 56h48v72s-36.7002 21.5 -68.0996 73.5996c-40.2002 4.60059 -78.5 19 -110 41.7002c-39.4004 28.2998 -61.9004 65 -61.9004 100.7v56c0 13.2998 10.7002 24 24 24h104v40\nc0 13.2998 10.7002 24 24 24h272c13.2998 0 24 -10.7002 24 -24v-40h104zM99.2998 255.2c12.5 -9 26.6006 -16.2002 41.7002 -21.4004c-7 25 -11.7998 53.6006 -12.7998 86.2002h-64.2002v-16c0 -11.5996 10.9004 -31.2002 35.2998 -48.7998zM512 304v16h-64.2998\nc-1 -32.5996 -5.7998 -61.2002 -12.7998 -86.2002c15.0996 5.2002 29.2998 12.4004 41.7998 21.4004c17.5996 12.7002 35.2998 32.7002 35.2998 48.7998z\" />\n    <glyph glyph-name=\"upload\" unicode=\"&#xf093;\" \nd=\"M296 64h-80c-13.2998 0 -24 10.7002 -24 24v168h-87.7002c-17.7998 0 -26.7002 21.5 -14.0996 34.0996l152.1 152.2c7.5 7.5 19.7998 7.5 27.2998 0l152.2 -152.2c12.6006 -12.5996 3.7002 -34.0996 -14.0996 -34.0996h-87.7002v-168c0 -13.2998 -10.7002 -24 -24 -24z\nM512 72v-112c0 -13.2998 -10.7002 -24 -24 -24h-464c-13.2998 0 -24 10.7002 -24 24v112c0 13.2998 10.7002 24 24 24h136v-8c0 -30.9004 25.0996 -56 56 -56h80c30.9004 0 56 25.0996 56 56v8h136c13.2998 0 24 -10.7002 24 -24zM388 -16c0 11 -9 20 -20 20s-20 -9 -20 -20\ns9 -20 20 -20s20 9 20 20zM452 -16c0 11 -9 20 -20 20s-20 -9 -20 -20s9 -20 20 -20s20 9 20 20z\" />\n    <glyph glyph-name=\"lemon\" unicode=\"&#xf094;\" \nd=\"M489.038 425.037c23.0938 -23.0938 28.8916 -54.3906 16.833 -75.0928c-34.3115 -58.9043 53.0762 -181.249 -86.7461 -321.071s-262.167 -52.4326 -321.068 -86.7432c-20.7031 -12.0586 -52 -6.2627 -75.0947 16.832c-23.0928 23.0938 -28.8916 54.3906 -16.833 75.0928\nc34.3125 58.9043 -53.0781 181.247 86.7451 321.07s262.167 52.4336 321.073 86.7461c20.7012 12.0586 51.9971 6.25879 75.0908 -16.834zM243.881 352.478c8.57227 2.14355 13.7832 10.8291 11.6416 19.4023c-2.14258 8.57324 -10.8281 13.7852 -19.4033 11.6426\nc-69.8027 -17.4521 -154.218 -101.949 -171.643 -171.643c-2.1416 -8.57324 3.07031 -17.2588 11.6426 -19.4033c1.30273 -0.324219 2.6084 -0.480469 3.89258 -0.480469c7.16895 0 13.6943 4.85352 15.5117 12.124c14.5498 58.2031 90.1689 133.811 148.357 148.357z\" />\n    <glyph glyph-name=\"phone\" unicode=\"&#xf095;\" \nd=\"M493.4 423.4c10.8994 -2.5 18.5996 -12.2002 18.5996 -23.4004c0 -256.5 -207.9 -464 -464 -464c-11.2998 0 -20.9004 7.7998 -23.4004 18.5996l-24 104c-2.59961 11.3008 3.30078 22.9004 14 27.6006l112 48c9.80078 4.2002 21.2002 1.39941 28 -6.90039\nl49.6006 -60.5996c78.2998 36.7002 141.2 100.5 177.2 177.2l-60.6006 49.5996c-8.2998 6.7002 -11.0996 18.2002 -6.89941 28l48 112c4.59961 10.5996 16.1992 16.5 27.5 13.9004z\" />\n    <glyph glyph-name=\"phone-square\" unicode=\"&#xf098;\" horiz-adv-x=\"448\" \nd=\"M400 416c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h352zM94 32c160.055 0 290 129.708 290 290v0c0 6.58691 -5.20898 13.1338 -11.6279 14.6143l-65 14.998\nc-0.918945 0.211914 -2.42969 0.383789 -3.37305 0.383789c-5.45996 0 -11.6367 -4.07324 -13.7871 -9.09082l-30 -69.998c-0.668945 -1.5625 -1.21191 -4.20898 -1.21191 -5.9082c0 -3.92383 2.46387 -9.125 5.50098 -11.6104l37.8857 -30.9971\nc-22.4834 -47.9219 -61.8369 -87.8164 -110.78 -110.779l-30.9971 37.8848c-2.48535 3.03711 -7.68652 5.50195 -11.6104 5.50195c-1.69922 0 -4.3457 -0.543945 -5.9082 -1.21289l-69.998 -29.999c-5.01855 -2.15039 -9.09082 -8.32715 -9.09082 -13.7871\nc0 -0.943359 0.171875 -2.4541 0.383789 -3.37305l14.998 -65c1.55957 -6.75391 7.58301 -11.627 14.6162 -11.627z\" />\n    <glyph glyph-name=\"unlock\" unicode=\"&#xf09c;\" horiz-adv-x=\"448\" \nd=\"M400 192c26.5 0 48 -21.5 48 -48v-160c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v160c0 26.5 21.5 48 48 48h24v102.5c0 84 67.5 153.2 151.5 153.5s152.5 -68 152.5 -152v-16c0 -13.2998 -10.7002 -24 -24 -24h-32c-13.2998 0 -24 10.7002 -24 24v16\nc0 39.9004 -32.7002 72.4004 -72.7002 72c-39.5996 -0.400391 -71.2998 -33.2998 -71.2998 -72.9004v-103.1h248z\" />\n    <glyph glyph-name=\"credit-card\" unicode=\"&#xf09d;\" horiz-adv-x=\"576\" \nd=\"M0 16v176h576v-176c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48zM192 84v-40c0 -6.59961 5.40039 -12 12 -12h136c6.59961 0 12 5.40039 12 12v40c0 6.59961 -5.40039 12 -12 12h-136c-6.59961 0 -12 -5.40039 -12 -12zM64 84v-40\nc0 -6.59961 5.40039 -12 12 -12h72c6.59961 0 12 5.40039 12 12v40c0 6.59961 -5.40039 12 -12 12h-72c-6.59961 0 -12 -5.40039 -12 -12zM576 368v-48h-576v48c0 26.5 21.5 48 48 48h480c26.5 0 48 -21.5 48 -48z\" />\n    <glyph glyph-name=\"rss\" unicode=\"&#xf09e;\" horiz-adv-x=\"448\" \nd=\"M128.081 32.041c0 -35.3691 -28.6719 -64.041 -64.041 -64.041s-64.04 28.6719 -64.04 64.041s28.6719 64.041 64.041 64.041s64.04 -28.6729 64.04 -64.041zM303.741 -15.209c0.494141 -9.13477 -6.84668 -16.791 -15.9951 -16.79h-48.0693\nc-8.41406 0 -15.4707 6.49023 -16.0176 14.8867c-7.29883 112.07 -96.9404 201.488 -208.772 208.772c-8.39648 0.545898 -14.8867 7.60254 -14.8867 16.0176v48.0693c0 9.14746 7.65625 16.4883 16.791 15.9941c154.765 -8.36328 278.596 -132.351 286.95 -286.95z\nM447.99 -15.4971c0.324219 -9.03027 -6.97168 -16.5029 -16.0049 -16.5039h-48.0684c-8.62598 0 -15.6455 6.83496 -15.999 15.4531c-7.83789 191.148 -161.286 344.626 -352.465 352.465c-8.61816 0.354492 -15.4531 7.37402 -15.4531 15.999v48.0684\nc0 9.03418 7.47266 16.3301 16.5029 16.0059c234.962 -8.43555 423.093 -197.667 431.487 -431.487z\" />\n    <glyph glyph-name=\"hdd\" unicode=\"&#xf0a0;\" horiz-adv-x=\"576\" \nd=\"M576 144v-96c0 -26.5098 -21.4902 -48 -48 -48h-480c-26.5098 0 -48 21.4902 -48 48v96c0 26.5098 21.4902 48 48 48h480c26.5098 0 48 -21.4902 48 -48zM528 224h-480h-0.0693359c-8.81738 0 -22.5742 -2.76172 -30.708 -6.16504l96.5283 144.791\nc7.86621 11.7988 25.7578 21.374 39.9385 21.374h268.621c14.1807 0 32.0732 -9.57617 39.9395 -21.374l96.5273 -144.791c-8.13379 3.40332 -21.8906 6.16504 -30.708 6.16504h-0.0693359zM480 128c-17.6729 0 -32 -14.3271 -32 -32s14.3271 -32 32 -32s32 14.3271 32 32\ns-14.3271 32 -32 32zM384 128c-17.6729 0 -32 -14.3271 -32 -32s14.3271 -32 32 -32s32 14.3271 32 32s-14.3271 32 -32 32z\" />\n    <glyph glyph-name=\"bullhorn\" unicode=\"&#xf0a1;\" horiz-adv-x=\"576\" \nd=\"M576 208c0 -23.6299 -12.9502 -44.04 -32.0098 -55.1299v-152.87c0 -9.21973 -7.08008 -32 -32 -32c-6.19336 0.00585938 -15.1445 3.15039 -19.9805 7.01953l-85.0293 68.0303c-42.7002 34.1406 -96.3203 52.9502 -150.98 52.9502h-28.0801\nc-2.79004 -10.21 -4.41016 -20.8896 -4.41016 -32c0 -29.0801 9.75 -55.9199 26.1504 -77.4404c15.79 -20.7197 0.149414 -50.5596 -25.9004 -50.5596h-74.2793c-11.8809 0 -23.2109 6.37012 -28.4004 17.0596c-16.2998 33.5908 -25.5605 71.1709 -25.5605 110.94\nc0 10.8604 0.790039 21.5195 2.18066 32h-33.7002c-35.3496 0 -64 28.6504 -64 64v96c0 35.3496 28.6504 64 64 64h192c54.6602 0 108.28 18.8096 150.99 52.9502l85.0293 68.0303c5.79004 4.63965 12.8604 7.01953 19.9805 7.01953c25.0195 0 32 -23.2598 32 -32.0098\nv-152.87c19.0498 -11.0801 32 -31.4902 32 -55.1201zM480 66.5801v282.84l-33.0498 -26.4395c-54 -43.2002 -121.83 -66.9805 -190.95 -66.9805v-96c69.1201 0 136.95 -23.7803 190.95 -66.9805z\" />\n    <glyph glyph-name=\"certificate\" unicode=\"&#xf0a3;\" \nd=\"M458.622 192.08l45.9844 -45.0039c13.7012 -12.9727 7.32227 -36.0371 -10.6641 -40.3389l-62.6504 -15.9902l17.6611 -62.0146c4.99023 -17.834 -11.8252 -34.665 -29.6611 -29.6719l-61.9941 17.667l-15.9834 -62.6709\nc-4.33887 -18.1533 -27.8252 -24.1553 -40.3252 -10.668l-44.9893 46.001l-44.9912 -46.001c-12.6289 -13.3496 -35.8857 -7.90625 -40.3252 10.668l-15.9834 62.6709l-61.9941 -17.667c-17.832 -4.99121 -34.6523 11.833 -29.6611 29.6719l17.6611 62.0146\nl-62.6504 15.9902c-17.9795 4.2998 -24.3721 27.3613 -10.6641 40.3389l45.9854 45.0039l-45.9854 45.0049c-13.7012 12.9707 -7.32227 36.0371 10.665 40.3379l62.6504 15.9902l-17.6611 62.0146c-4.99023 17.834 11.8242 34.665 29.6611 29.6709l61.9951 -17.667\nl15.9834 62.6709c4.27832 17.9023 27.6953 24.0195 40.3252 10.6689l44.9893 -46.3418l44.9902 46.3428c12.7744 13.5039 36.0947 7.03027 40.3252 -10.6689l15.9834 -62.6709l61.9941 17.667c17.832 4.99219 34.6523 -11.833 29.6611 -29.6709l-17.6611 -62.0146\nl62.6504 -15.9902c17.9795 -4.2998 24.3721 -27.3623 10.6641 -40.3389z\" />\n    <glyph glyph-name=\"hand-point-right\" unicode=\"&#xf0a4;\" \nd=\"M512 248.348c0 -23.625 -20.6504 -43.8252 -44.7998 -43.8252h-99.8516c16.3408 -17.0488 18.3467 -49.7666 -6.29883 -70.9443c14.2881 -22.8291 2.14746 -53.0176 -16.4502 -62.3154c8.97461 -49.1406 -21.9453 -71.2627 -72.5996 -71.2627\nc-2.74609 0 -13.2764 0.203125 -16 0.195312c-61.9707 -0.167969 -76.8936 31.0645 -123.731 38.3145c-11.6729 1.80762 -20.2686 11.8916 -20.2686 23.7041v171.525l0.00195312 0.000976562c0.0107422 18.3662 10.6074 35.8887 28.4639 43.8447\nc28.8857 12.9941 95.4131 49.0381 107.534 77.3232c7.79688 18.1934 21.3838 29.084 40 29.0918c34.2217 0.0136719 57.752 -35.0977 44.1191 -66.9082c-3.58301 -8.3584 -8.3125 -16.6699 -14.1533 -24.918h149.234c23.4502 0 44.7998 -20.543 44.7998 -43.8262zM96 248\nv-192c0 -13.2549 -10.7451 -24 -24 -24h-48c-13.2549 0 -24 10.7451 -24 24v192c0 13.2549 10.7451 24 24 24h48c13.2549 0 24 -10.7451 24 -24zM68 80c0 11.0459 -8.9541 20 -20 20s-20 -8.9541 -20 -20s8.9541 -20 20 -20s20 8.9541 20 20z\" />\n    <glyph glyph-name=\"hand-point-left\" unicode=\"&#xf0a5;\" \nd=\"M44.7998 292.174h149.234c-5.84082 8.24805 -10.5703 16.5586 -14.1533 24.918c-13.6328 31.8105 9.89746 66.9219 44.1191 66.9082c18.6162 -0.0078125 32.2031 -10.8975 40 -29.0918c12.1221 -28.2861 78.6484 -64.3291 107.534 -77.3232\nc17.8564 -7.95605 28.4531 -25.4785 28.4639 -43.8447l0.00195312 -0.000976562v-171.526c0 -11.8115 -8.5957 -21.8965 -20.2686 -23.7031c-46.8379 -7.25 -61.7607 -38.4824 -123.731 -38.3145c-2.72363 0.00683594 -13.2539 -0.195312 -16 -0.195312\nc-50.6543 0 -81.5742 22.1221 -72.5996 71.2627c-18.5977 9.29688 -30.7383 39.4863 -16.4502 62.3154c-24.6455 21.1768 -22.6396 53.8955 -6.29883 70.9443h-99.8516c-24.1494 0 -44.7998 20.2002 -44.7998 43.8252c0 23.2832 21.3496 43.8262 44.7998 43.8262zM440 272\nh48c13.2549 0 24 -10.7451 24 -24v-192c0 -13.2549 -10.7451 -24 -24 -24h-48c-13.2549 0 -24 10.7451 -24 24v192c0 13.2549 10.7451 24 24 24zM464 60c11.0459 0 20 8.9541 20 20s-8.9541 20 -20 20s-20 -8.9541 -20 -20s8.9541 -20 20 -20z\" />\n    <glyph glyph-name=\"hand-point-up\" unicode=\"&#xf0a6;\" horiz-adv-x=\"384\" \nd=\"M135.652 448c23.625 0 43.8252 -20.6504 43.8252 -44.7998v-99.8516c17.0488 16.3408 49.7666 18.3467 70.9443 -6.29883c22.8291 14.2881 53.0176 2.14746 62.3154 -16.4502c49.1406 8.97461 71.2627 -21.9453 71.2627 -72.5996\nc0 -2.74609 -0.203125 -13.2764 -0.195312 -16c0.167969 -61.9707 -31.0645 -76.8936 -38.3145 -123.731c-1.80762 -11.6729 -11.8916 -20.2686 -23.7041 -20.2686h-171.525l-0.000976562 0.00195312c-18.3662 0.0107422 -35.8887 10.6074 -43.8447 28.4639\nc-12.9941 28.8857 -49.0381 95.4121 -77.3232 107.534c-18.1943 7.79688 -29.084 21.3838 -29.0918 40c-0.0136719 34.2217 35.0977 57.752 66.9082 44.1191c8.3584 -3.58301 16.6699 -8.3125 24.918 -14.1533v149.234c0 23.4502 20.543 44.7998 43.8262 44.7998zM136 32\nh192c13.2549 0 24 -10.7451 24 -24v-48c0 -13.2549 -10.7451 -24 -24 -24h-192c-13.2549 0 -24 10.7451 -24 24v48c0 13.2549 10.7451 24 24 24zM304 4c-11.0459 0 -20 -8.9541 -20 -20s8.9541 -20 20 -20s20 8.9541 20 20s-8.9541 20 -20 20z\" />\n    <glyph glyph-name=\"hand-point-down\" unicode=\"&#xf0a7;\" horiz-adv-x=\"384\" \nd=\"M91.8262 -19.2002v149.234c-8.24805 -5.84082 -16.5586 -10.5703 -24.918 -14.1533c-31.8105 -13.6328 -66.9219 9.89746 -66.9082 44.1191c0.0078125 18.6162 10.8975 32.2031 29.0918 40c28.2861 12.1221 64.3291 78.6484 77.3232 107.534\nc7.95605 17.8564 25.4785 28.4531 43.8447 28.4639l0.000976562 0.00195312h171.526c11.8115 0 21.8965 -8.5957 23.7031 -20.2686c7.25 -46.8379 38.4824 -61.7607 38.3145 -123.731c-0.00683594 -2.72363 0.195312 -13.2539 0.195312 -16\nc0 -50.6543 -22.1221 -81.5742 -71.2627 -72.5996c-9.29688 -18.5977 -39.4863 -30.7383 -62.3154 -16.4502c-21.1768 -24.6455 -53.8955 -22.6396 -70.9443 -6.29883v-99.8516c0 -24.1494 -20.2002 -44.7998 -43.8252 -44.7998\nc-23.2832 0 -43.8262 21.3496 -43.8262 44.7998zM112 376v48c0 13.2549 10.7451 24 24 24h192c13.2549 0 24 -10.7451 24 -24v-48c0 -13.2549 -10.7451 -24 -24 -24h-192c-13.2549 0 -24 10.7451 -24 24zM324 400c0 11.0459 -8.9541 20 -20 20s-20 -8.9541 -20 -20\ns8.9541 -20 20 -20s20 8.9541 20 20z\" />\n    <glyph glyph-name=\"arrow-circle-left\" unicode=\"&#xf0a8;\" \nd=\"M256 -56c-137 0 -248 111 -248 248s111 248 248 248s248 -111 248 -248s-111 -248 -248 -248zM284.9 87.5996l-75.5 72.4004h182.6c13.2998 0 24 10.7002 24 24v16c0 13.2998 -10.7002 24 -24 24h-182.6l75.5 72.4004c9.69922 9.2998 9.89941 24.7998 0.399414 34.2998\nl-11 10.8994c-9.39941 9.40039 -24.5996 9.40039 -33.8994 0l-132.7 -132.6c-9.40039 -9.40039 -9.40039 -24.5996 0 -33.9004l132.7 -132.699c9.39941 -9.40039 24.5996 -9.40039 33.8994 0l11 10.8994c9.5 9.5 9.2998 25 -0.399414 34.2998z\" />\n    <glyph glyph-name=\"arrow-circle-right\" unicode=\"&#xf0a9;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM227.1 296.4l75.5 -72.4004h-182.6c-13.2998 0 -24 -10.7002 -24 -24v-16c0 -13.2998 10.7002 -24 24 -24h182.6l-75.5 -72.4004\nc-9.69922 -9.2998 -9.89941 -24.7998 -0.399414 -34.2998l11 -10.8994c9.39941 -9.40039 24.5996 -9.40039 33.8994 0l132.7 132.6c9.40039 9.40039 9.40039 24.5996 0 33.9004l-132.7 132.8c-9.39941 9.39941 -24.5996 9.39941 -33.8994 0l-11 -10.9004\nc-9.5 -9.59961 -9.2998 -25.0996 0.399414 -34.3994z\" />\n    <glyph glyph-name=\"arrow-circle-up\" unicode=\"&#xf0aa;\" \nd=\"M8 192c0 137 111 248 248 248s248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248zM151.6 163.1l72.4004 75.5v-182.6c0 -13.2998 10.7002 -24 24 -24h16c13.2998 0 24 10.7002 24 24v182.6l72.4004 -75.5c9.2998 -9.69922 24.7998 -9.89941 34.2998 -0.399414\nl10.8994 11c9.40039 9.39941 9.40039 24.5996 0 33.8994l-132.6 132.7c-9.40039 9.40039 -24.5996 9.40039 -33.9004 0l-132.8 -132.7c-9.39941 -9.39941 -9.39941 -24.5996 0 -33.8994l10.9004 -11c9.59961 -9.5 25.0996 -9.2998 34.3994 0.399414z\" />\n    <glyph glyph-name=\"arrow-circle-down\" unicode=\"&#xf0ab;\" \nd=\"M504 192c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248s248 -111 248 -248zM360.4 220.9l-72.4004 -75.5v182.6c0 13.2998 -10.7002 24 -24 24h-16c-13.2998 0 -24 -10.7002 -24 -24v-182.6l-72.4004 75.5\nc-9.2998 9.69922 -24.7998 9.89941 -34.2998 0.399414l-10.8994 -11c-9.40039 -9.39941 -9.40039 -24.5996 0 -33.8994l132.6 -132.7c9.40039 -9.40039 24.5996 -9.40039 33.9004 0l132.699 132.7c9.40039 9.39941 9.40039 24.5996 0 33.8994l-10.8994 11\nc-9.5 9.5 -25 9.2998 -34.2998 -0.399414z\" />\n    <glyph glyph-name=\"globe\" unicode=\"&#xf0ac;\" horiz-adv-x=\"496\" \nd=\"M336.5 288h-177c14.5 89.2998 48.7002 152 88.5 152s74 -62.7002 88.5 -152zM152 192c0 22.2002 1.2002 43.5 3.2998 64h185.3c2.10059 -20.5 3.30078 -41.7998 3.30078 -64s-1.2002 -43.5 -3.30078 -64h-185.3c-2.09961 20.5 -3.2998 41.7998 -3.2998 64zM476.7 288\nh-108c-8.7998 56.9004 -25.6006 107.8 -50 141.6c71.5 -21.1992 129.399 -73.6992 158 -141.6zM177.2 429.6c-24.4004 -33.7998 -41.2002 -84.6992 -49.9004 -141.6h-108c28.5 67.9004 86.5 120.4 157.9 141.6zM487.4 256c5.39941 -20.5 8.5 -41.7998 8.5 -64\ns-3.10059 -43.5 -8.60059 -64h-114.6c2.09961 21 3.2998 42.5 3.2998 64s-1.2002 43 -3.2998 64h114.7zM120 192c0 -21.5 1.2002 -43 3.2002 -64h-114.601c-5.39941 20.5 -8.59961 41.7998 -8.59961 64s3.2002 43.5 8.59961 64h114.7\nc-2.09961 -21 -3.2998 -42.5 -3.2998 -64zM159.5 96h177c-14.5 -89.2998 -48.7002 -152 -88.5 -152s-74 62.7002 -88.5 152zM318.8 -45.5996c24.4004 33.7998 41.2002 84.6992 50 141.6h108c-28.5996 -67.9004 -86.5996 -120.4 -158 -141.6zM19.2998 96h108\nc8.7998 -56.9004 25.6006 -107.8 50 -141.6c-71.5 21.1992 -129.399 73.6992 -158 141.6z\" />\n    <glyph glyph-name=\"wrench\" unicode=\"&#xf0ad;\" \nd=\"M507.73 338.9c11.7891 -47.4102 -0.84082 -99.6602 -37.9102 -136.73c-39.9004 -39.9004 -97.25 -50.9297 -147.37 -34.2197l-213.21 -213.21c-24.9902 -24.9902 -65.5098 -24.9902 -90.5 0s-24.9902 65.5098 0 90.5l213.39 213.39\nc-16.5 50.1006 -5.58984 107.561 34.0498 147.2c37.0303 37.0195 89.2002 49.6699 136.58 37.9297c9.08984 -2.25977 12.2803 -13.54 5.66016 -20.1602l-74.3604 -74.3594l11.3105 -67.8799l67.8799 -11.3105l74.3604 74.3604\nc6.58008 6.58008 17.8799 3.51953 20.1201 -5.50977zM64 -24c13.25 0 24 10.75 24 24c0 13.2598 -10.75 24 -24 24s-24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24z\" />\n    <glyph glyph-name=\"tasks\" unicode=\"&#xf0ae;\" \nd=\"M139.61 412.5l17 -16.5c1.90234 -1.94531 3.44727 -5.7334 3.44727 -8.4541c0 -2.7627 -1.58496 -6.5918 -3.53809 -8.5459l-72.1992 -72.1904l-15.5898 -15.6191c-2.04297 -1.94238 -5.9873 -3.51758 -8.80566 -3.51758c-2.81738 0 -6.7627 1.5752 -8.80469 3.51758\nl-47.5898 47.3994c-1.94824 1.94141 -3.5293 5.75 -3.5293 8.5c0 2.75098 1.58105 6.55859 3.5293 8.5l15.7002 15.7197c1.94141 1.94824 5.74902 3.53027 8.5 3.53027c2.75 0 6.55762 -1.58203 8.5 -3.53027l22.6992 -22.1191l63.6807 63.3096\nc1.94141 1.94824 5.74902 3.5293 8.5 3.5293c2.75 0 6.55859 -1.58105 8.5 -3.5293zM139.61 253.31l16.9795 -17c1.89648 -1.93164 3.43457 -5.69727 3.43457 -8.4043c0 -2.74805 -1.5791 -6.55371 -3.52441 -8.49512l-72.2002 -72.2197l-15.7002 -15.6904\nc-2.04102 -1.94141 -5.9834 -3.5166 -8.7998 -3.5166s-6.75879 1.5752 -8.7998 3.5166l-47.4697 47.5c-1.94824 1.94141 -3.5293 5.74902 -3.5293 8.5s1.58105 6.55859 3.5293 8.5l15.7002 15.6904c1.94141 1.94824 5.74902 3.5293 8.5 3.5293\nc2.75 0 6.55762 -1.58105 8.5 -3.5293l22.6992 -22.1006l63.6807 63.7197c1.94141 1.94824 5.74902 3.53027 8.5 3.53027c2.75 0 6.55859 -1.58203 8.5 -3.53027zM64 80c26.4961 0 48 -21.5039 48 -48s-21.5039 -48 -48 -48c-26.4697 0 -48.5898 21.5 -48.5898 48\ns22.0996 48 48.5898 48zM496 64c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-288c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h288zM496 384c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-288\nc-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h288zM496 224c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-288c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h288z\" />\n    <glyph glyph-name=\"filter\" unicode=\"&#xf0b0;\" \nd=\"M487.976 448c21.3623 0 32.0459 -25.8965 16.9717 -40.9707l-184.947 -184.971v-262.039c0 -19.5127 -21.9805 -30.71 -37.7627 -19.6611l-80 55.9795c-6.41602 4.49219 -10.2373 11.8311 -10.2373 19.6621v206.059l-184.942 184.971\nc-15.1045 15.1045 -4.34766 40.9707 16.9707 40.9707h463.947z\" />\n    <glyph glyph-name=\"briefcase\" unicode=\"&#xf0b1;\" \nd=\"M320 112v48h192v-144c0 -25.5996 -22.4004 -48 -48 -48h-416c-25.5996 0 -48 22.4004 -48 48v144h192v-48c0 -8.83984 7.16016 -16 16 -16h96c8.83984 0 16 7.16016 16 16zM464 320c25.5996 0 48 -22.4004 48 -48v-80h-512v80c0 25.5996 22.4004 48 48 48h80v48\nc0 25.5996 22.4004 48 48 48h160c25.5996 0 48 -22.4004 48 -48v-48h80zM320 320v32h-128v-32h128z\" />\n    <glyph glyph-name=\"arrows-alt\" unicode=\"&#xf0b2;\" \nd=\"M352.201 22.2246l-79.1963 -79.1953c-9.37305 -9.37305 -24.5684 -9.37305 -33.9404 0l-79.1963 79.1953c-15.1191 15.1191 -4.41113 40.9717 16.9707 40.9707h51.1621l-0.000976562 100.805h-100.804v-51.1621c0 -21.3818 -25.8516 -32.0898 -40.9717 -16.9707\nl-79.1953 79.1963c-9.37305 9.37207 -9.37305 24.5684 0 33.9404l79.1953 79.1963c15.1191 15.1191 40.9717 4.41113 40.9717 -16.9717v-51.2285h100.804v100.804h-51.2305c-21.3818 0 -32.0898 25.8516 -16.9707 40.9717l79.1963 79.1953\nc9.37305 9.37305 24.5684 9.37305 33.9404 0l79.1963 -79.1953c15.1191 -15.1191 4.41113 -40.9717 -16.9707 -40.9717h-51.1621v-100.804h100.804v51.1621c0 21.3818 25.8516 32.0898 40.9707 16.9707l79.1953 -79.1963c9.37305 -9.37207 9.37305 -24.5684 0 -33.9404\nl-79.1953 -79.1963c-15.1191 -15.1191 -40.9717 -4.41113 -40.9707 16.9717v51.2285h-100.803v-100.804h51.2305c21.3818 0 32.0898 -25.8516 16.9707 -40.9717z\" />\n    <glyph glyph-name=\"users\" unicode=\"&#xf0c0;\" horiz-adv-x=\"640\" \nd=\"M96 224c-35.2998 0 -64 28.7002 -64 64s28.7002 64 64 64s64 -28.7002 64 -64s-28.7002 -64 -64 -64zM544 224c-35.2998 0 -64 28.7002 -64 64s28.7002 64 64 64s64 -28.7002 64 -64s-28.7002 -64 -64 -64zM576 192c35.2998 0 64 -28.7002 64 -64v-32\nc0 -17.7002 -14.2998 -32 -32 -32h-66c-6.2002 47.4004 -34.7998 87.2998 -75.0996 109.4c11.5996 11.5 27.5 18.5996 45.0996 18.5996h64zM320 192c-61.9004 0 -112 50.0996 -112 112s50.0996 112 112 112s112 -50.0996 112 -112s-50.0996 -112 -112 -112zM396.8 160\nc63.6006 0 115.2 -51.5996 115.2 -115.2v-28.7998c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v28.7998c0 63.6006 51.5996 115.2 115.2 115.2h8.2998c20.9004 -10 43.9004 -16 68.5 -16s47.7002 6 68.5 16h8.2998zM173.1 173.4\nc-40.2998 -22.1006 -68.8994 -62 -75.1992 -109.4h-65.9004c-17.7002 0 -32 14.2998 -32 32v32c0 35.2998 28.7002 64 64 64h64c17.5996 0 33.5 -7.09961 45.0996 -18.5996z\" />\n    <glyph glyph-name=\"link\" unicode=\"&#xf0c1;\" \nd=\"M326.612 262.609c59.7471 -59.8096 58.9268 -155.698 0.359375 -214.591c-0.109375 -0.119141 -0.239258 -0.25 -0.359375 -0.369141l-67.2002 -67.2002c-59.2705 -59.2705 -155.699 -59.2627 -214.96 0c-59.2705 59.2598 -59.2705 155.7 0 214.96l37.1055 37.1055\nc9.84082 9.84082 26.7861 3.30078 27.2939 -10.6055c0.648438 -17.7227 3.82617 -35.5273 9.69043 -52.7207c1.98633 -5.82227 0.567383 -12.2627 -3.7832 -16.6123l-13.0869 -13.0869c-28.0254 -28.0264 -28.9053 -73.6602 -1.15527 -101.96\nc28.0244 -28.5791 74.0859 -28.749 102.325 -0.510742l67.2002 67.1904c28.1914 28.1914 28.0732 73.7568 0 101.83c-3.70117 3.69434 -7.42871 6.56348 -10.3408 8.56934c-3.66504 2.51562 -6.77734 8.16309 -6.94727 12.6055\nc-0.395508 10.5674 3.34766 21.4561 11.6982 29.8057l21.0537 21.0557c5.52148 5.52051 14.1826 6.19922 20.584 1.73047c6.08301 -4.24707 15.2764 -11.9512 20.5225 -17.1963zM467.547 403.551c59.2705 -59.2598 59.2705 -155.7 -0.000976562 -214.959l-37.1055 -37.1055\nc-9.84082 -9.83984 -26.7852 -3.30078 -27.2939 10.6055c-0.648438 17.7227 -3.82617 35.5273 -9.69043 52.7217c-1.98633 5.82129 -0.567383 12.2617 3.7832 16.6113l13.0869 13.0869c28.0264 28.0264 28.9053 73.6602 1.15527 101.96\nc-28.0254 28.5791 -74.0869 28.749 -102.325 0.510742l-67.2002 -67.1904c-28.1914 -28.1914 -28.0732 -73.7568 0 -101.83c3.70117 -3.69434 7.42871 -6.56348 10.3408 -8.56934c3.66504 -2.51562 6.77734 -8.16309 6.94727 -12.6055\nc0.395508 -10.5674 -3.34766 -21.4561 -11.6982 -29.8057l-21.0537 -21.0557c-5.52051 -5.51953 -14.1826 -6.19922 -20.584 -1.73047c-6.08203 4.24609 -15.2754 11.9502 -20.5215 17.1953c-59.7471 59.8096 -58.9258 155.698 -0.359375 214.591\nc0.109375 0.119141 0.239258 0.25 0.359375 0.369141l67.2002 67.2002c59.2705 59.2705 155.699 59.2627 214.96 0z\" />\n    <glyph glyph-name=\"cloud\" unicode=\"&#xf0c2;\" horiz-adv-x=\"640\" \nd=\"M537.6 221.4c58.4004 -11.8008 102.4 -63.5 102.4 -125.4c0 -70.7002 -57.2998 -128 -128 -128h-368c-79.5 0 -144 64.5 -144 144c0 62.7998 40.2002 116.2 96.2002 135.9c-0.100586 2.69922 -0.200195 5.39941 -0.200195 8.09961c0 88.4004 71.5996 160 160 160\nc59.2998 0 111 -32.2002 138.7 -80.2002c15.2002 10.2002 33.5996 16.2002 53.2998 16.2002c53 0 96 -43 96 -96c0 -12.2002 -2.2998 -23.9004 -6.40039 -34.5996z\" />\n    <glyph glyph-name=\"flask\" unicode=\"&#xf0c3;\" horiz-adv-x=\"448\" \nd=\"M437.2 44.5c29.2998 -47 -4.40039 -108.5 -60.1006 -108.5h-306.199c-55.6006 0 -89.4004 61.4004 -60.1006 108.5l117.2 188.5v151h-8c-13.2998 0 -24 10.7002 -24 24v16c0 13.2998 10.7002 24 24 24h208c13.2998 0 24 -10.7002 24 -24v-16\nc0 -13.2998 -10.7002 -24 -24 -24h-8v-151zM137.9 128h172l-48.2002 77.5996c-3.60059 5.2002 -5.7998 11.5 -5.7998 18.4004v160h-64v-160c0 -6.7998 -2.10059 -13.2002 -5.80078 -18.4004z\" />\n    <glyph glyph-name=\"cut\" unicode=\"&#xf0c4;\" horiz-adv-x=\"448\" \nd=\"M278.06 192l166.421 -166.43c4.68945 -4.69043 4.68945 -12.29 0 -16.9707c-32.8008 -32.7998 -85.9902 -32.7998 -118.79 0l-115.511 115.521l-24.8594 -24.8604c4.30957 -10.9199 6.67969 -22.8096 6.67969 -35.2598c0 -53.0195 -42.9805 -96 -96 -96\ns-96 42.9805 -96 96s42.9805 96 96 96c4.53027 0 8.99023 -0.320312 13.3604 -0.929688l32.9297 32.9297l-32.9297 32.9297c-4.37012 -0.609375 -8.82031 -0.929688 -13.3604 -0.929688c-53.0195 0 -96 42.9805 -96 96s42.9805 96 96 96s96 -42.9805 96 -96\nc0 -12.4502 -2.37012 -24.3398 -6.67969 -35.2598l24.8594 -24.8604l115.511 115.521c32.7998 32.7998 85.9893 32.7998 118.79 0c4.68945 -4.68066 4.68945 -12.2803 0 -16.9707zM96 288c17.6396 0 32 14.3604 32 32s-14.3604 32 -32 32s-32 -14.3604 -32 -32\ns14.3604 -32 32 -32zM96 32c17.6396 0 32 14.3604 32 32s-14.3604 32 -32 32s-32 -14.3604 -32 -32s14.3604 -32 32 -32z\" />\n    <glyph glyph-name=\"copy\" unicode=\"&#xf0c5;\" horiz-adv-x=\"448\" \nd=\"M320 0v-40c0 -13.2549 -10.7451 -24 -24 -24h-272c-13.2549 0 -24 10.7451 -24 24v368c0 13.2549 10.7451 24 24 24h72v-296c0 -30.8789 25.1211 -56 56 -56h168zM320 344c0 -13.2002 10.7998 -24 24 -24h104v-264c0 -13.2549 -10.7451 -24 -24 -24h-272\nc-13.2549 0 -24 10.7451 -24 24v368c0 13.2549 10.7451 24 24 24h168v-104zM440.971 375.029c3.87988 -3.88086 7.0293 -11.4834 7.0293 -16.9707v-6.05859h-96v96h6.05859c5.4873 0 13.0898 -3.14941 16.9707 -7.0293z\" />\n    <glyph glyph-name=\"paperclip\" unicode=\"&#xf0c6;\" horiz-adv-x=\"448\" \nd=\"M43.2461 -18.1416c-58.4297 60.2891 -57.3408 157.511 1.38574 217.581l209.76 214.561c44.3164 45.332 116.352 45.3359 160.672 0c43.8896 -44.8936 43.9424 -117.329 0 -162.276l-182.85 -186.852c-29.8545 -30.5371 -78.6328 -30.1113 -107.981 0.998047\nc-28.2754 29.9697 -27.3682 77.4727 1.45117 106.953l143.743 146.835c6.18262 6.31348 16.3125 6.42188 22.626 0.241211l22.8613 -22.3799c6.31445 -6.18164 6.42188 -16.3115 0.241211 -22.626l-143.729 -146.82c-4.93164 -5.04492 -5.23535 -13.4287 -0.647461 -18.292\nc4.37207 -4.63379 11.2451 -4.71094 15.6875 -0.165039l182.85 186.851c19.6123 20.0625 19.6123 52.7256 -0.0117188 72.7979c-19.1885 19.627 -49.957 19.6377 -69.1533 0l-209.762 -214.56c-34.7627 -35.5605 -35.2988 -93.1201 -1.19043 -128.313\nc34.0098 -35.0928 88.9844 -35.1367 123.058 -0.285156l172.061 175.999c6.17676 6.31836 16.3066 6.43262 22.626 0.255859l22.877 -22.3643c6.31836 -6.17676 6.43359 -16.3066 0.255859 -22.626l-172.061 -175.998c-59.5752 -60.9385 -155.942 -60.2158 -214.77 0.485352\nz\" />\n    <glyph glyph-name=\"save\" unicode=\"&#xf0c7;\" horiz-adv-x=\"448\" \nd=\"M433.941 318.059c7.75977 -7.75977 14.0586 -22.9658 14.0586 -33.9404v-268.118c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h268.118c10.9746 0 26.1807 -6.29883 33.9404 -14.0586zM224 32\nc35.3457 0 64 28.6543 64 64s-28.6543 64 -64 64s-64 -28.6543 -64 -64s28.6543 -64 64 -64zM320 336.52c0 2.74316 -1.5752 6.5459 -3.51465 8.48535l-3.48047 3.48047c-2.25 2.25098 -5.30176 3.51465 -8.48535 3.51465h-228.52c-6.62695 0 -12 -5.37305 -12 -12v-104\nc0 -6.62695 5.37305 -12 12 -12h232c6.62695 0 12 5.37305 12 12v100.52z\" />\n    <glyph glyph-name=\"square\" unicode=\"&#xf0c8;\" horiz-adv-x=\"448\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352z\" />\n    <glyph glyph-name=\"bars\" unicode=\"&#xf0c9;\" horiz-adv-x=\"448\" \nd=\"M16 316c-8.83691 0 -16 7.16309 -16 16v40c0 8.83691 7.16309 16 16 16h416c8.83691 0 16 -7.16309 16 -16v-40c0 -8.83691 -7.16309 -16 -16 -16h-416zM16 156c-8.83691 0 -16 7.16309 -16 16v40c0 8.83691 7.16309 16 16 16h416c8.83691 0 16 -7.16309 16 -16v-40\nc0 -8.83691 -7.16309 -16 -16 -16h-416zM16 -4c-8.83691 0 -16 7.16309 -16 16v40c0 8.83691 7.16309 16 16 16h416c8.83691 0 16 -7.16309 16 -16v-40c0 -8.83691 -7.16309 -16 -16 -16h-416z\" />\n    <glyph glyph-name=\"list-ul\" unicode=\"&#xf0ca;\" \nd=\"M48 400c26.4961 0 48 -21.5039 48 -48s-21.5039 -48 -48 -48s-48 21.5039 -48 48s21.5039 48 48 48zM48 240c26.4961 0 48 -21.5039 48 -48s-21.5039 -48 -48 -48s-48 21.5039 -48 48s21.5039 48 48 48zM48 80c26.4961 0 48 -21.5039 48 -48s-21.5039 -48 -48 -48\ns-48 21.5039 -48 48s21.5039 48 48 48zM496 64c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-320c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h320zM496 384c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16\nh-320c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h320zM496 224c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-320c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h320z\" />\n    <glyph glyph-name=\"list-ol\" unicode=\"&#xf0cb;\" \nd=\"M61.7695 47c19.6104 -5.12012 28.7002 -20.5 28.7305 -34.8799c0 -21.3701 -14.3398 -44.1201 -48.5 -44.1201c-16.6201 0 -29.29 4.75 -37 9.44043c-5.82031 4.21973 -6.34961 9.80957 -2.62988 15.9395l5.58984 9.31055c3.86035 6.61914 9.11035 7 15.5996 3.11914\nc4.10352 -1.68652 11.0342 -3.08496 15.4707 -3.11914c10.1602 0 14.3594 3.5 14.3594 8.21973c0 6.64941 -5.60938 9.08984 -15.9395 9.08984h-4.73047c-5.95996 0 -9.25 2.12012 -12.25 7.87988l-1.0498 1.92969c-2.4502 4.75 -1.2002 9.81055 2.7998 14.8809l5.61035 7\nc2.85742 3.55664 7.78516 9.07129 11 12.3096h-22.8301c-4.41602 0 -8 3.58398 -8 8v16c0 4.41602 3.58398 8 8 8h57c7.5 0 11.3398 -4 11.3398 -11.3496v-3.31055c0.0107422 -0.245117 0.0205078 -0.644531 0.0205078 -0.890625\nc0 -4.20801 -2.28027 -10.166 -5.09082 -13.2988zM496 224c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-320c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h320zM496 384c8.83203 0 16 -7.16797 16 -16v-32\nc0 -8.83203 -7.16797 -16 -16 -16h-320c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h320zM496 64c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-320c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h320zM16 288\nc-4.41602 0 -8 3.58398 -8 8v16c0 4.41602 3.58398 8 8 8h16v64h-8c-4.4082 0.0078125 -7.98535 3.5918 -7.98535 8c0 1.04297 0.378906 2.64746 0.845703 3.58008l8 16c1.21777 2.43457 4.41699 4.41504 7.13965 4.41992h24c4.41602 0 8 -3.58398 8 -8v-88h16\nc4.41602 0 8 -3.58398 8 -8v-16c0 -4.41602 -3.58398 -8 -8 -8h-64zM12.0898 128c-7.00977 0 -12.0898 4 -12.0898 11.4102v4c0 47.2803 51 56.3994 50.9697 69.1201c0 7.18945 -5.9502 8.75 -9.2793 8.75h-0.0546875c-3.02832 0 -7.24219 -1.7207 -9.40527 -3.83984\nc-5.12012 -4.91016 -10.5107 -7 -16.1201 -2.44043l-8.58008 6.87988c-5.7998 4.53027 -7.16992 9.78027 -2.7998 15.3701c6.65918 8.75 19.0996 18.75 40.46 18.75c19.4697 0 44.4697 -10.5 44.4697 -39.5596c0 -37.7607 -45.0498 -46.1504 -48.3398 -56.4404h38.6797\nc4.41602 0 8 -3.58398 8 -8v-16c0 -4.41602 -3.58398 -8 -8 -8h-67.9102z\" />\n    <glyph glyph-name=\"strikethrough\" unicode=\"&#xf0cc;\" \nd=\"M496 224c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-480c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h102.29c-11.6797 16.5303 -19.7803 35.4697 -21.7803 56.3604c-0.319336 3.29297 -0.579102 8.65137 -0.579102 11.96\nc0 68.2158 55.3633 123.624 123.579 123.68h68h0.0117188c43.6865 0 94.9863 -31.7188 114.509 -70.7998l0.529297 -1c0.930664 -1.86328 1.68652 -5.06641 1.68652 -7.14844c0 -5.45898 -3.96289 -11.8711 -8.8457 -14.3115l-42.9404 -21.4707\nc-1.86426 -0.931641 -5.06836 -1.6875 -7.15234 -1.6875c-5.45605 0 -11.8652 3.95996 -14.3076 8.83789c-7.61133 15.2246 -27.6025 27.5801 -44.624 27.5801h-0.0361328h-66.79c-24.0391 -0.000976562 -43.5488 -19.5107 -43.5488 -43.5498\nc0 -17.749 13.7666 -36.3945 30.7295 -41.6201l87.1699 -26.8301h202.1zM315.76 128h94.3906c2.21191 -6.56152 4.60352 -17.4746 5.33984 -24.3604c0.319336 -3.29297 0.579102 -8.65137 0.579102 -11.96c0 -68.2158 -55.3633 -123.624 -123.579 -123.68h-68h-0.0117188\nc-43.6865 0 -94.9863 31.7188 -114.509 70.7998l-0.529297 1c-0.930664 1.86328 -1.68652 5.06641 -1.68652 7.14844c0 5.45898 3.96289 11.8711 8.8457 14.3115l42.9404 21.4707c1.86426 0.931641 5.06836 1.6875 7.15234 1.6875\nc5.45605 0 11.8652 -3.95996 14.3076 -8.83789c7.61133 -15.2246 27.6025 -27.5801 44.624 -27.5801h0.0361328h66.79c24.0176 0.0224609 43.5273 19.5322 43.5498 43.5498c-0.00976562 13.1572 -9.07715 29.4863 -20.2402 36.4502z\" />\n    <glyph glyph-name=\"underline\" unicode=\"&#xf0cd;\" horiz-adv-x=\"448\" \nd=\"M32 384c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h144c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32v-160c0 -44.1602 35.8398 -80 80 -80s80 35.8398 80 80v160h-32c-8.83203 0 -16 7.16797 -16 16v32\nc0 8.83203 7.16797 16 16 16h144c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32v-160c0 -88.2197 -71.7803 -160 -160 -160s-160 71.7803 -160 160v160h-32zM432 0c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-416\nc-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h416z\" />\n    <glyph glyph-name=\"table\" unicode=\"&#xf0ce;\" \nd=\"M464 416c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h416zM224 32v96h-160v-96h160zM224 192v96h-160v-96h160zM448 32v96h-160v-96h160zM448 192v96h-160v-96h160z\" />\n    <glyph glyph-name=\"magic\" unicode=\"&#xf0d0;\" \nd=\"M224 352l-16 32l-32 16l32 16l16 32l16 -32l32 -16l-32 -16zM80 288l-26.6602 53.3301l-53.3398 26.6699l53.3398 26.6699l26.6602 53.3301l26.6602 -53.3301l53.3398 -26.6699l-53.3398 -26.6699zM432 160l26.6602 -53.3301l53.3398 -26.6699l-53.3398 -26.6699\nl-26.6602 -53.3301l-26.6602 53.3301l-53.3398 26.6699l53.3398 26.6699zM502.62 353.77c12.5 -12.4893 12.5 -32.7598 0 -45.2393l-363.14 -363.15c-6.25 -6.25 -14.4404 -9.37012 -22.6309 -9.37012c-8.17969 0 -16.3691 3.12012 -22.6191 9.37012l-84.8506 84.8506\nc-12.5 12.4893 -12.5 32.75 0 45.25l363.14 363.14c6.25 6.25977 14.4404 9.37988 22.6309 9.37988c8.18945 0 16.3799 -3.12012 22.6191 -9.37988zM359.45 244.54l86.5996 86.5996l-50.9102 50.9102l-86.5996 -86.5996z\" />\n    <glyph glyph-name=\"truck\" unicode=\"&#xf0d1;\" horiz-adv-x=\"640\" \nd=\"M624 96c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-48c0 -53 -43 -96 -96 -96s-96 43 -96 96h-128c0 -53 -43 -96 -96 -96s-96 43 -96 96h-16c-26.5 0 -48 21.5 -48 48v320c0 26.5 21.5 48 48 48h320c26.5 0 48 -21.5 48 -48v-48h44.0996\nc12.7002 0 24.9004 -5.09961 33.9004 -14.0996l99.9004 -99.9004c9 -9 14.0996 -21.2002 14.0996 -33.9004v-108.1h16zM160 -16c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48zM480 -16c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48\ns21.5 -48 48 -48zM560 192v12.0996l-99.9004 99.9004h-44.0996v-112h144z\" />\n    <glyph glyph-name=\"money-bill\" unicode=\"&#xf0d6;\" horiz-adv-x=\"640\" \nd=\"M608 384c17.6699 0 32 -14.3301 32 -32v-320c0 -17.6699 -14.3301 -32 -32 -32h-576c-17.6699 0 -32 14.3301 -32 32v320c0 17.6699 14.3301 32 32 32h576zM48 48h64c0 35.3496 -28.6504 64 -64 64v-64zM48 272c35.3496 0 64 28.6504 64 64h-64v-64zM320 96\nc44.1699 0 80 42.9697 80 96c0 53.0195 -35.8203 96 -80 96s-80 -42.9805 -80 -96c0 -53.0098 35.8096 -96 80 -96zM592 48v64c-35.3496 0 -64 -28.6504 -64 -64h64zM592 272v64h-64c0 -35.3496 28.6504 -64 64 -64z\" />\n    <glyph glyph-name=\"caret-down\" unicode=\"&#xf0d7;\" horiz-adv-x=\"320\" \nd=\"M31.2998 256h257.3c17.8008 0 26.7002 -21.5 14.1006 -34.0996l-128.601 -128.7c-7.7998 -7.7998 -20.5 -7.7998 -28.2998 0l-128.6 128.7c-12.6006 12.5996 -3.7002 34.0996 14.0996 34.0996z\" />\n    <glyph glyph-name=\"caret-up\" unicode=\"&#xf0d8;\" horiz-adv-x=\"320\" \nd=\"M288.662 96h-257.324c-17.8184 0 -26.7412 21.543 -14.1416 34.1416l128.662 128.662c7.80957 7.81055 20.4736 7.81055 28.2832 0l128.662 -128.662c12.6006 -12.5986 3.67676 -34.1416 -14.1416 -34.1416z\" />\n    <glyph glyph-name=\"caret-left\" unicode=\"&#xf0d9;\" horiz-adv-x=\"192\" \nd=\"M192 320.662v-257.324c0 -17.8184 -21.543 -26.7412 -34.1416 -14.1416l-128.662 128.662c-7.81055 7.80957 -7.81055 20.4736 0 28.2832l128.662 128.662c12.5986 12.6006 34.1416 3.67676 34.1416 -14.1416z\" />\n    <glyph glyph-name=\"caret-right\" unicode=\"&#xf0da;\" horiz-adv-x=\"192\" \nd=\"M0 63.3379v257.324c0 17.8184 21.543 26.7412 34.1416 14.1416l128.662 -128.662c7.81055 -7.80957 7.81055 -20.4736 0 -28.2832l-128.662 -128.662c-12.5986 -12.6006 -34.1416 -3.67676 -34.1416 14.1416z\" />\n    <glyph glyph-name=\"columns\" unicode=\"&#xf0db;\" \nd=\"M464 416c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h416zM224 32v256h-160v-256h160zM448 32v256h-160v-256h160z\" />\n    <glyph glyph-name=\"sort\" unicode=\"&#xf0dc;\" horiz-adv-x=\"320\" \nd=\"M41 160h238c21.4004 0 32.0996 -25.9004 17 -41l-119 -119c-9.40039 -9.40039 -24.5996 -9.40039 -33.9004 0l-119.1 119c-15.0996 15.0996 -4.40039 41 17 41zM296 265c15.0996 -15.0996 4.40039 -41 -17 -41h-238c-21.4004 0 -32.0996 25.9004 -17 41l119.1 119\nc9.30078 9.40039 24.5 9.40039 33.9004 0z\" />\n    <glyph glyph-name=\"sort-down\" unicode=\"&#xf0dd;\" horiz-adv-x=\"320\" \nd=\"M41 160h238c21.4004 0 32.0996 -25.9004 17 -41l-119 -119c-9.40039 -9.40039 -24.5996 -9.40039 -33.9004 0l-119.1 119c-15.0996 15.0996 -4.40039 41 17 41z\" />\n    <glyph glyph-name=\"sort-up\" unicode=\"&#xf0de;\" horiz-adv-x=\"320\" \nd=\"M279 224h-238c-21.4004 0 -32.0996 25.9004 -17 41l119 119c9.40039 9.40039 24.5996 9.40039 33.9004 0l119 -119c15.1992 -15.0996 4.5 -41 -16.9004 -41z\" />\n    <glyph glyph-name=\"envelope\" unicode=\"&#xf0e0;\" \nd=\"M502.3 257.2c3.90039 3.09961 9.7002 0.200195 9.7002 -4.7002v-204.5c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v204.4c0 5 5.7002 7.7998 9.7002 4.69922c22.3994 -17.3994 52.0996 -39.5 154.1 -113.6\nc21.1006 -15.4004 56.7002 -47.7998 92.2002 -47.5996c35.7002 -0.300781 72 32.7998 92.2998 47.5996c102 74.0996 131.601 96.2998 154 113.7zM256 128c-23.2002 -0.400391 -56.5996 29.2002 -73.4004 41.4004c-132.699 96.2998 -142.8 104.8 -173.399 128.699\nc-5.7998 4.60059 -9.2002 11.5 -9.2002 18.9004v19c0 26.5 21.5 48 48 48h416c26.5 0 48 -21.5 48 -48v-19c0 -7.40039 -3.40039 -14.4004 -9.2002 -18.9004c-30.5996 -24 -40.7002 -32.3994 -173.399 -128.699c-16.8008 -12.2002 -50.2002 -41.8008 -73.4004 -41.4004z\" />\n    <glyph glyph-name=\"undo\" unicode=\"&#xf0e2;\" \nd=\"M212.333 223.667h-200.333c-6.62695 0 -12 5.37305 -12 12v200.333c0 6.62695 5.37305 12 12 12h48c6.62695 0 12 -5.37305 12 -12v-78.1123c45.7734 50.833 112.26 82.6426 186.175 82.1055c136.906 -0.994141 246.448 -111.623 246.157 -248.532\nc-0.291016 -136.719 -111.212 -247.461 -247.999 -247.461c-64.0889 0 -122.496 24.3135 -166.51 64.2148c-5.09961 4.62207 -5.33398 12.5537 -0.466797 17.4199l33.9668 33.9668c4.47363 4.47461 11.6621 4.71777 16.4004 0.525391\nc31.0361 -27.4629 71.8564 -44.127 116.609 -44.127c97.2676 0 176 78.7158 176 176c0 97.2666 -78.7158 176 -176 176c-58.4961 0 -110.28 -28.4756 -142.274 -72.333h98.2744c6.62695 0 12 -5.37305 12 -12v-48c0 -6.62695 -5.37305 -12 -12 -12z\" />\n    <glyph glyph-name=\"gavel\" unicode=\"&#xf0e3;\" \nd=\"M504.971 248.638c9.37207 -9.37305 9.37207 -24.5684 0 -33.9404l-124.451 -124.451c-9.37109 -9.37305 -24.5674 -9.37305 -33.9404 0l-22.627 22.627c-9.37305 9.37207 -9.37305 24.5684 0 33.9414l5.65723 5.65625l-39.5986 39.5986l-81.04 -81.04l5.65723 -5.65723\nc12.4971 -12.4971 12.4971 -32.7578 0 -45.2549l-114.745 -114.745c-12.4971 -12.4971 -32.7578 -12.4971 -45.2549 0l-45.2549 45.2549c-12.4971 12.4971 -12.4971 32.7578 0 45.2549l114.744 114.746c12.4971 12.4971 32.7578 12.4971 45.2549 0l5.65723 -5.65723\nl81.04 81.04l-39.5986 39.5986l-5.65625 -5.65723c-9.37207 -9.37305 -24.5684 -9.37305 -33.9414 0l-22.627 22.627c-9.37305 9.37207 -9.37305 24.5684 0 33.9404l124.451 124.451c9.37207 9.37305 24.5674 9.37305 33.9404 0l22.627 -22.6279\nc9.37305 -9.37207 9.37305 -24.5674 0 -33.9404l-5.65625 -5.65723l113.138 -113.137l5.65723 5.65625c9.37207 9.37305 24.5674 9.37305 33.9404 0z\" />\n    <glyph glyph-name=\"bolt\" unicode=\"&#xf0e7;\" horiz-adv-x=\"320\" \nd=\"M296 288c18.5 0 30 -20.0996 20.7002 -36l-176 -304c-4.40039 -7.59961 -12.4004 -12 -20.7998 -12c-15.3008 0 -26.9004 14.2998 -23.3008 29.5l46.1006 194.5h-118.7c-14.5 0 -25.7002 12.7998 -23.7998 27.2002l32 240\nc1.59961 11.8994 11.7998 20.7998 23.7998 20.7998h144c15.7002 0 27.2002 -15 23.2002 -30.2002l-42.6006 -129.8h115.4z\" />\n    <glyph glyph-name=\"sitemap\" unicode=\"&#xf0e8;\" horiz-adv-x=\"640\" \nd=\"M128 96c17.6699 0 32 -14.3301 32 -32v-96c0 -17.6699 -14.3301 -32 -32 -32h-96c-17.6699 0 -32 14.3301 -32 32v96c0 17.6699 14.3301 32 32 32h96zM104 176v-48h-48v57.5898c0 21.1797 17.2305 38.4102 38.4102 38.4102h201.59v64h-40c-17.6699 0 -32 14.3301 -32 32\nv96c0 17.6699 14.3301 32 32 32h128c17.6699 0 32 -14.3301 32 -32v-96c0 -17.6699 -14.3301 -32 -32 -32h-40v-64h201.59c21.1797 0 38.4102 -17.2402 38.4102 -38.4102v-57.5898h-48v48h-192v-48h-48v48h-192zM368 96c17.6699 0 32 -14.3301 32 -32v-96\nc0 -17.6699 -14.3301 -32 -32 -32h-96c-17.6699 0 -32 14.3301 -32 32v96c0 17.6699 14.3301 32 32 32h96zM608 96c17.6699 0 32 -14.3301 32 -32v-96c0 -17.6699 -14.3301 -32 -32 -32h-96c-17.6699 0 -32 14.3301 -32 32v96c0 17.6699 14.3301 32 32 32h96z\" />\n    <glyph glyph-name=\"umbrella\" unicode=\"&#xf0e9;\" horiz-adv-x=\"576\" \nd=\"M575.7 167.2c2.2002 -10.1006 -8.40039 -21.4004 -18.7002 -11.4004c-51.5 54.4004 -107.6 52.5 -158.6 -37c-5.30078 -9.5 -14.9004 -8.59961 -19.7002 0c-2.5 4.40039 -32.2002 73.2002 -90.7002 73.2002c-45.7998 0 -70.5 -37.7998 -90.7002 -73.2002\nc-4.7998 -8.59961 -14.3994 -9.5 -19.7002 0c-50.8994 89.4004 -106.6 92 -158.6 37c-10.2002 -9.89941 -20.9004 1.2998 -18.7002 11.4004c29.2002 136.3 138 218.2 255.7 230.899v17.9004c0 17.7002 14.2998 32 32 32s32 -14.2998 32 -32v-17.9004\nc117.3 -12.6992 227.1 -94.5996 255.7 -230.899zM256 146.3c9.59961 8.90039 19.7002 13.6006 32 13.7002c12.2002 0 22.9004 -5.7002 32 -13.5996v-130.301c0 -44.0996 -35.9004 -80 -80 -80c-33.7998 0 -64.2002 21.4004 -75.4004 53.3008\nc-5.89941 16.5996 2.80078 34.8994 19.5 40.7998c16.7002 5.89941 34.9004 -2.7998 40.8008 -19.5c1.89941 -5.40039 7.2998 -10.7002 15.0996 -10.7002c8.7998 0 16 7.2002 16 16v130.3z\" />\n    <glyph glyph-name=\"paste\" unicode=\"&#xf0ea;\" horiz-adv-x=\"448\" \nd=\"M128 264v-232h-104c-13.2549 0 -24 10.7451 -24 24v336c0 13.2549 10.7451 24 24 24h80.6104c11.084 19.1104 31.7529 32 55.3896 32s44.3057 -12.8896 55.3896 -32h80.6104c13.2549 0 24 -10.7451 24 -24v-72h-136c-30.8779 0 -56 -25.1211 -56 -56zM160 408\nc-13.2549 0 -24 -10.7451 -24 -24s10.7451 -24 24 -24s24 10.7451 24 24s-10.7451 24 -24 24zM344 160h104v-200c0 -13.2549 -10.7451 -24 -24 -24h-240c-13.2549 0 -24 10.7451 -24 24v304c0 13.2549 10.7451 24 24 24h136v-104c0 -13.2002 10.7998 -24 24 -24z\nM448 198.059v-6.05859h-96v96h6.05859c5.4873 0 13.0898 -3.14941 16.9707 -7.0293l65.9404 -65.9404c3.88086 -3.88086 7.03027 -11.4834 7.03027 -16.9717z\" />\n    <glyph glyph-name=\"lightbulb\" unicode=\"&#xf0eb;\" horiz-adv-x=\"352\" \nd=\"M96.0596 -6.34961l-0.0498047 38.3496h159.98l-0.0400391 -38.3496c-0.00585938 -5.3291 -2.40723 -13.2549 -5.36035 -17.6904l-17.0898 -25.6904c-5.24023 -7.88184 -17.1748 -14.2793 -26.6396 -14.2793h-61.71c-9.46582 0 -21.4004 6.39746 -26.6406 14.2793\nl-17.0898 25.6904c-3.49023 5.24023 -5.34961 11.4004 -5.36035 17.6904zM0 272c0 93.0303 73.4404 175.69 175.45 176c97.46 0.299805 176.55 -78.6104 176.55 -176c0 -44.3701 -16.4502 -84.8496 -43.5596 -115.78c-16.5205 -18.8496 -42.3604 -58.2295 -52.21 -91.4502\nc-0.0400391 -0.269531 -0.0703125 -0.519531 -0.110352 -0.779297h-160.24c-0.0400391 0.259766 -0.0703125 0.519531 -0.110352 0.779297c-9.84961 33.2207 -35.6895 72.6006 -52.21 91.4502c-27.1094 30.9307 -43.5596 71.4102 -43.5596 115.78zM176 352\nc8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16c-61.7598 0 -112 -50.2402 -112 -112c0 -8.83984 7.16016 -16 16 -16s16 7.16016 16 16c0 44.1104 35.8896 80 80 80z\" />\n    <glyph glyph-name=\"user-md\" unicode=\"&#xf0f0;\" horiz-adv-x=\"448\" \nd=\"M224 192c-70.7002 0 -128 57.2998 -128 128s57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128zM104 24c0 13.2998 10.7002 24 24 24s24 -10.7002 24 -24s-10.7002 -24 -24 -24s-24 10.7002 -24 24zM320 159.4c71.2002 -3.5 128 -61.8008 128 -133.801\nv-44.7998c0 -24.7002 -20.0996 -44.7998 -44.7998 -44.7998h-358.4c-24.7002 0 -44.7998 20.0996 -44.7998 44.7998v44.7998c0 66.6006 48.5 121.4 112.1 132.101v-80.4004c-23.0996 -6.89941 -40 -28.0996 -40 -53.3994c0 -30.9004 25.1006 -56 56 -56\nc30.9004 0 56 25.0996 56 56c0 25.2998 -16.8994 46.5 -40 53.3994v81.6006c7.7002 -1 15.2002 -2.60059 22.6006 -5.2002c18 -6.2998 37.2998 -9.7998 57.3994 -9.7998c20.1006 0 39.4004 3.5 57.4004 9.7998c2.2002 0.799805 4.40039 1.2002 6.59961 1.89941v-45.1992\nc-36.5 -7.5 -64 -39.8008 -64 -78.4004v-43.7998c0 -8.10059 5.90039 -14.7998 13.8008 -15.9004l31.1992 -4.2002c4.30078 -0.799805 8.5 2 9.40039 6.30078l3.09961 15.6992c0.800781 4.30078 -2 8.5 -6.2998 9.40039l-19.2998 3.90039v26.6992\nc0 67 96 64.7002 96 1.90039v-28.5l-19.2998 -3.90039c-4.40039 -0.799805 -7.2002 -5.09961 -6.2998 -9.39941l3.09961 -15.7002c0.900391 -4.40039 5.09961 -7.2002 9.40039 -6.2998l32.1992 6.39941c7.5 1.5 12.9004 8.10059 12.9004 15.7002v41.7002\nc0 38.5996 -27.5 71 -64 78.4004v49z\" />\n    <glyph glyph-name=\"stethoscope\" unicode=\"&#xf0f1;\" \nd=\"M447.1 336c35.7002 0.5 64.9004 -28.2998 64.9004 -64c0 -23.7002 -12.9004 -44.2998 -32 -55.4004v-112.6c0 -92.5996 -79 -168 -176 -168c-95.4004 0 -173.3 72.7998 -175.9 163.2c-73 14.7998 -128.1 79.5 -128.1 156.8v155.4c0 11.5 8.09961 21.2998 19.2998 23.5996\nl62.7998 12.4004c13 2.59961 25.6006 -5.80078 28.2002 -18.8008l3.10059 -15.6992c2.59961 -13 -5.80078 -25.6006 -18.8008 -28.2002l-30.6992 -6.10059v-122.5c0 -53.2998 43.5 -96.5 96.8994 -96c52.9004 0.5 95.1006 44.3008 95.1006 97.2002v121.4l-30.7002 6.09961\nc-13 2.60059 -21.4004 15.2002 -18.7998 28.2002l3.19922 15.7002c2.60059 13 15.2002 21.3994 28.2002 18.7998l62.9004 -12.5996c11.2002 -2.2002 19.2998 -12.1006 19.2998 -23.5v-155.4c0 -77.2002 -55 -141.8 -127.8 -156.8\nc2.7002 -55.1006 51.8994 -99.2002 111.899 -99.2002c61.8008 0 112 46.7002 112 104v112.6c-19.5 11.2002 -32.5 32.5 -32 56.8008c0.700195 34.1992 28.8008 62.0996 63 62.5996zM448 256c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16\ns7.2002 -16 16 -16z\" />\n    <glyph glyph-name=\"suitcase\" unicode=\"&#xf0f2;\" \nd=\"M128 -32v400c0 26.5 21.5 48 48 48h160c26.5 0 48 -21.5 48 -48v-400h-256zM192 352v-32h128v32h-128zM512 272v-256c0 -26.5 -21.5 -48 -48 -48h-48v352h48c26.5 0 48 -21.5 48 -48zM96 -32h-48c-26.5 0 -48 21.5 -48 48v256c0 26.5 21.5 48 48 48h48v-352z\" />\n    <glyph glyph-name=\"bell\" unicode=\"&#xf0f3;\" horiz-adv-x=\"448\" \nd=\"M224 -64c-35.3203 0 -63.9697 28.6504 -63.9697 64h127.939c0 -35.3496 -28.6494 -64 -63.9697 -64zM439.39 85.71c6 -6.44043 8.66016 -14.1602 8.61035 -21.71c-0.0996094 -16.4004 -12.9805 -32 -32.0996 -32h-383.801c-19.1191 0 -31.9893 15.5996 -32.0996 32\nc-0.0498047 7.5498 2.61035 15.2598 8.61035 21.71c19.3193 20.7598 55.4697 51.9902 55.4697 154.29c0 77.7002 54.4795 139.9 127.939 155.16v20.8398c0 17.6699 14.3203 32 31.9805 32s31.9805 -14.3301 31.9805 -32v-20.8398\nc73.46 -15.2598 127.939 -77.46 127.939 -155.16c0 -102.3 36.1504 -133.53 55.4697 -154.29z\" />\n    <glyph glyph-name=\"coffee\" unicode=\"&#xf0f4;\" horiz-adv-x=\"640\" \nd=\"M192 64c-53 0 -96 43 -96 96v232c0 13.2998 10.7002 24 24 24h392c70.5996 0 128 -57.4004 128 -128s-57.4004 -128 -128 -128h-32c0 -53 -43 -96 -96 -96h-192zM512 352h-32v-128h32c35.2998 0 64 28.7002 64 64s-28.7002 64 -64 64zM559.7 -32h-511.4\nc-47.5996 0 -61 64 -36 64h583.3c25 0 11.8008 -64 -35.8994 -64z\" />\n    <glyph glyph-name=\"hospital\" unicode=\"&#xf0f8;\" horiz-adv-x=\"448\" \nd=\"M448 -44v-20h-448v20c0 6.62695 5.37305 12 12 12h20v360c0 13.2549 10.7451 24 24 24h88v72c0 13.2549 10.7451 24 24 24h112c13.2549 0 24 -10.7451 24 -24v-72h88c13.2549 0 24 -10.7451 24 -24v-360h20c6.62695 0 12 -5.37305 12 -12zM308 256h-40\nc-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12v40c0 6.62695 -5.37305 12 -12 12zM140 192h40c6.62695 0 12 5.37305 12 12v40c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40\nc0 -6.62695 5.37305 -12 12 -12zM244 64h-40c-6.62695 0 -12 -5.37305 -12 -12v-84h64v84c0 6.62695 -5.37305 12 -12 12zM308 160h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12v40c0 6.62695 -5.37305 12 -12 12\nzM192 148c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12v40zM182 352h26v-26c0 -3.31152 2.68848 -6 6 -6h20c3.31152 0 6 2.68848 6 6v26h26c3.31152 0 6 2.68848 6 6v20\nc0 3.31152 -2.68848 6 -6 6h-26v26c0 3.31152 -2.68848 6 -6 6h-20c-3.31152 0 -6 -2.68848 -6 -6v-26h-26c-3.31152 0 -6 -2.68848 -6 -6v-20c0 -3.31152 2.68848 -6 6 -6z\" />\n    <glyph glyph-name=\"ambulance\" unicode=\"&#xf0f9;\" horiz-adv-x=\"640\" \nd=\"M624 96c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-48c0 -53 -43 -96 -96 -96s-96 43 -96 96h-128c0 -53 -43 -96 -96 -96s-96 43 -96 96h-16c-26.5 0 -48 21.5 -48 48v320c0 26.5 21.5 48 48 48h320c26.5 0 48 -21.5 48 -48v-48h44.0996\nc12.7002 0 24.9004 -5.09961 33.9004 -14.0996l99.9004 -99.9004c9 -9 14.0996 -21.2002 14.0996 -33.9004v-108.1h16zM160 -16c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48zM304 232v48c0 4.40039 -3.59961 8 -8 8h-56v56\nc0 4.40039 -3.59961 8 -8 8h-48c-4.40039 0 -8 -3.59961 -8 -8v-56h-56c-4.40039 0 -8 -3.59961 -8 -8v-48c0 -4.40039 3.59961 -8 8 -8h56v-56c0 -4.40039 3.59961 -8 8 -8h48c4.40039 0 8 3.59961 8 8v56h56c4.40039 0 8 3.59961 8 8zM480 -16c26.5 0 48 21.5 48 48\ns-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48zM560 192v12.0996l-99.9004 99.9004h-44.0996v-112h144z\" />\n    <glyph glyph-name=\"medkit\" unicode=\"&#xf0fa;\" \nd=\"M96 -32v352h32v48c0 26.5098 21.4902 48 48 48h160c26.5098 0 48 -21.4902 48 -48v-48h32v-352h-320zM192 352v-32h128v32h-128zM512 272v-256c0 -26.5098 -21.4902 -48 -48 -48h-16v352h16c26.5098 0 48 -21.4902 48 -48zM64 -32h-16c-26.5098 0 -48 21.4902 -48 48v256\nc0 26.5098 21.4902 48 48 48h16v-352zM352 176c0 8.83691 -7.16309 16 -16 16h-48v48c0 8.83691 -7.16309 16 -16 16h-32c-8.83691 0 -16 -7.16309 -16 -16v-48h-48c-8.83691 0 -16 -7.16309 -16 -16v-32c0 -8.83691 7.16309 -16 16 -16h48v-48\nc0 -8.83691 7.16309 -16 16 -16h32c8.83691 0 16 7.16309 16 16v48h48c8.83691 0 16 7.16309 16 16v32z\" />\n    <glyph glyph-name=\"fighter-jet\" unicode=\"&#xf0fb;\" horiz-adv-x=\"640\" \nd=\"M544 224c96 -21.333 96 -26.583 96 -32s0 -10.667 -96 -32l-128 -16l-48 -16h-24l-116.842 -148h39.5088c11.666 0 21.333 -2.625 21.333 -6s-9.66602 -6 -21.333 -6h-114.667v12h16v164h-48l-66.666 -80h-34.667l-10.667 10.667v69.333h8v16h48v2.66699l-64 8v42.667\nl64 8v2.66602h-48v16h-8v69.333l10.667 10.667h34.666l66.667 -80h48v164h-16v12h114.667c11.666 0 21.333 -2.625 21.333 -6s-9.66699 -6 -21.333 -6h-39.5088l116.842 -148h24l48 -16z\" />\n    <glyph glyph-name=\"beer\" unicode=\"&#xf0fc;\" horiz-adv-x=\"448\" \nd=\"M368 352c44.1123 0 80 -35.8877 80 -80v-128.86c0 -31.5273 -18.6035 -60.2031 -47.3936 -73.0527l-80.6064 -35.9766v-42.1104c0 -13.2549 -10.7451 -24 -24 -24h-272c-13.2549 0 -24 10.7451 -24 24v400c0 13.2549 10.7451 24 24 24h272c13.2549 0 24 -10.7451 24 -24\nv-40h48zM384 143.14v128.86c0 8.82227 -7.17773 16 -16 16h-48v-183.805l54.5215 24.334c5.22754 2.33789 9.47461 8.88379 9.47852 14.6104zM208 64c8.83594 0 16 7.16406 16 16v224c0 8.83594 -7.16406 16 -16 16s-16 -7.16406 -16 -16v-224\nc0 -8.83594 7.16406 -16 16 -16zM112 64c8.83594 0 16 7.16406 16 16v224c0 8.83594 -7.16406 16 -16 16s-16 -7.16406 -16 -16v-224c0 -8.83594 7.16406 -16 16 -16z\" />\n    <glyph glyph-name=\"h-square\" unicode=\"&#xf0fd;\" horiz-adv-x=\"448\" \nd=\"M448 368v-352c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h352c26.5098 0 48 -21.4902 48 -48zM336 320h-32c-8.83691 0 -16 -7.16309 -16 -16v-80h-128v80c0 8.83691 -7.16309 16 -16 16h-32\nc-8.83691 0 -16 -7.16309 -16 -16v-224c0 -8.83691 7.16309 -16 16 -16h32c8.83691 0 16 7.16309 16 16v80h128v-80c0 -8.83691 7.16309 -16 16 -16h32c8.83691 0 16 7.16309 16 16v224c0 8.83691 -7.16309 16 -16 16z\" />\n    <glyph glyph-name=\"plus-square\" unicode=\"&#xf0fe;\" horiz-adv-x=\"448\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM368 164v56c0 6.59961 -5.40039 12 -12 12h-92v92c0 6.59961 -5.40039 12 -12 12h-56c-6.59961 0 -12 -5.40039 -12 -12v-92h-92\nc-6.59961 0 -12 -5.40039 -12 -12v-56c0 -6.59961 5.40039 -12 12 -12h92v-92c0 -6.59961 5.40039 -12 12 -12h56c6.59961 0 12 5.40039 12 12v92h92c6.59961 0 12 5.40039 12 12z\" />\n    <glyph glyph-name=\"angle-double-left\" unicode=\"&#xf100;\" horiz-adv-x=\"448\" \nd=\"M223.7 209l136 136c9.39941 9.40039 24.5996 9.40039 33.8994 0l22.6006 -22.5996c9.39941 -9.40039 9.39941 -24.6006 0 -33.9004l-96.2998 -96.5l96.3994 -96.4004c9.40039 -9.39941 9.40039 -24.5996 0 -33.8994l-22.5996 -22.7002\nc-9.40039 -9.40039 -24.6006 -9.40039 -33.9004 0l-136 136c-9.5 9.40039 -9.5 24.5996 -0.0996094 34zM31.7002 175c-9.40039 9.40039 -9.40039 24.5996 0.0996094 34l136 136c9.2998 9.40039 24.5 9.40039 33.9004 0l22.5996 -22.7002\nc9.40039 -9.2998 9.40039 -24.5 0 -33.8994l-96.3994 -96.4004l96.2998 -96.5c9.39941 -9.2998 9.39941 -24.5 0 -33.9004l-22.6006 -22.5996c-9.2998 -9.40039 -24.5 -9.40039 -33.8994 0z\" />\n    <glyph glyph-name=\"angle-double-right\" unicode=\"&#xf101;\" horiz-adv-x=\"448\" \nd=\"M224.3 175l-136 -136c-9.39941 -9.40039 -24.5996 -9.40039 -33.8994 0l-22.6006 22.5996c-9.39941 9.40039 -9.39941 24.6006 0 33.9004l96.4004 96.4004l-96.4004 96.3994c-9.39941 9.40039 -9.39941 24.6006 0 33.9004l22.5 22.7998\nc9.40039 9.40039 24.6006 9.40039 33.9004 0l136 -136c9.5 -9.40039 9.5 -24.5996 0.0996094 -34zM416.3 209c9.40039 -9.40039 9.40039 -24.5996 0 -33.7998l-136 -136c-9.2998 -9.40039 -24.5 -9.40039 -33.8994 0l-22.6006 22.5996\nc-9.39941 9.2998 -9.39941 24.5 0 33.9004l96.4004 96.3994l-96.4004 96.4004c-9.39941 9.2998 -9.39941 24.5 0 33.9004l22.6006 22.5996c9.2998 9.40039 24.5 9.40039 33.8994 0z\" />\n    <glyph glyph-name=\"angle-double-up\" unicode=\"&#xf102;\" horiz-adv-x=\"320\" \nd=\"M177 192.3l136 -136c9.40039 -9.39941 9.40039 -24.5996 0 -33.8994l-22.5996 -22.6006c-9.40039 -9.39941 -24.6006 -9.39941 -33.9004 0l-96.5 96.2998l-96.4004 -96.3994c-9.39941 -9.40039 -24.5996 -9.40039 -33.8994 0l-22.7002 22.5996\nc-9.40039 9.40039 -9.40039 24.6006 0 33.9004l136 136c9.40039 9.5 24.5996 9.5 34 0.0996094zM143 384.3c9.40039 9.40039 24.5996 9.40039 33.7998 0l136 -136c9.40039 -9.2998 9.40039 -24.5 0 -33.8994l-22.5996 -22.6006c-9.2998 -9.39941 -24.5 -9.39941 -33.9004 0\nl-96.3994 96.4004l-96.4004 -96.4004c-9.2998 -9.39941 -24.5 -9.39941 -33.9004 0l-22.5996 22.6006c-9.40039 9.2998 -9.40039 24.5 0 33.8994z\" />\n    <glyph glyph-name=\"angle-double-down\" unicode=\"&#xf103;\" horiz-adv-x=\"320\" \nd=\"M143 191.7l-136 136c-9.40039 9.39941 -9.40039 24.5996 0 33.8994l22.5996 22.6006c9.40039 9.39941 24.6006 9.39941 33.9004 0l96.4004 -96.4004l96.3994 96.4004c9.40039 9.39941 24.6006 9.39941 33.9004 0l22.7998 -22.5\nc9.40039 -9.40039 9.40039 -24.6006 0 -33.9004l-136 -136c-9.40039 -9.5 -24.5996 -9.5 -34 -0.0996094zM177 -0.299805c-9.40039 -9.40039 -24.5996 -9.40039 -34 0.0996094l-136 136c-9.40039 9.2998 -9.40039 24.5 0 33.9004l22.7002 22.5996\nc9.2998 9.40039 24.5 9.40039 33.8994 0l96.4004 -96.3994l96.5 96.2998c9.2998 9.39941 24.5 9.39941 33.9004 0l22.5996 -22.6006c9.40039 -9.2998 9.40039 -24.5 0 -33.8994z\" />\n    <glyph glyph-name=\"angle-left\" unicode=\"&#xf104;\" horiz-adv-x=\"256\" \nd=\"M31.7002 209l136 136c9.39941 9.40039 24.5996 9.40039 33.8994 0l22.6006 -22.5996c9.39941 -9.40039 9.39941 -24.6006 0 -33.9004l-96.2998 -96.5l96.3994 -96.4004c9.40039 -9.39941 9.40039 -24.5996 0 -33.8994l-22.5996 -22.7002\nc-9.40039 -9.40039 -24.6006 -9.40039 -33.9004 0l-136 136c-9.5 9.40039 -9.5 24.5996 -0.0996094 34z\" />\n    <glyph glyph-name=\"angle-right\" unicode=\"&#xf105;\" horiz-adv-x=\"256\" \nd=\"M224.3 175l-136 -136c-9.39941 -9.40039 -24.5996 -9.40039 -33.8994 0l-22.6006 22.5996c-9.39941 9.40039 -9.39941 24.6006 0 33.9004l96.4004 96.4004l-96.4004 96.3994c-9.39941 9.40039 -9.39941 24.6006 0 33.9004l22.5 22.7998\nc9.40039 9.40039 24.6006 9.40039 33.9004 0l136 -136c9.5 -9.40039 9.5 -24.5996 0.0996094 -34z\" />\n    <glyph glyph-name=\"angle-up\" unicode=\"&#xf106;\" horiz-adv-x=\"320\" \nd=\"M177 288.3l136 -136c9.40039 -9.39941 9.40039 -24.5996 0 -33.8994l-22.5996 -22.6006c-9.40039 -9.39941 -24.6006 -9.39941 -33.9004 0l-96.5 96.2998l-96.4004 -96.3994c-9.39941 -9.40039 -24.5996 -9.40039 -33.8994 0l-22.7002 22.5996\nc-9.40039 9.40039 -9.40039 24.6006 0 33.9004l136 136c9.40039 9.5 24.5996 9.5 34 0.0996094z\" />\n    <glyph glyph-name=\"angle-down\" unicode=\"&#xf107;\" horiz-adv-x=\"320\" \nd=\"M143 95.7002l-136 136c-9.40039 9.39941 -9.40039 24.5996 0 33.8994l22.5996 22.6006c9.40039 9.39941 24.6006 9.39941 33.9004 0l96.4004 -96.4004l96.3994 96.4004c9.40039 9.39941 24.6006 9.39941 33.9004 0l22.5996 -22.6006\nc9.40039 -9.39941 9.40039 -24.5996 0 -33.8994l-136 -136c-9.2002 -9.40039 -24.3994 -9.40039 -33.7998 0z\" />\n    <glyph glyph-name=\"desktop\" unicode=\"&#xf108;\" horiz-adv-x=\"576\" \nd=\"M528 448c26.5 0 48 -21.5 48 -48v-320c0 -26.5 -21.5 -48 -48 -48h-192l16 -48h72c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24h-272c-13.2998 0 -24 10.7002 -24 24s10.7002 24 24 24h72l16 48h-192c-26.5 0 -48 21.5 -48 48v320c0 26.5 21.5 48 48 48h480z\nM512 96v288h-448v-288h448z\" />\n    <glyph glyph-name=\"laptop\" unicode=\"&#xf109;\" horiz-adv-x=\"640\" \nd=\"M624 32c8.7998 0 16 -7.2002 16 -16v-16c0 -35.2002 -28.7998 -64 -64 -64h-512c-35.2002 0 -64 28.7998 -64 64v16c0 8.7998 7.2002 16 16 16h239.23c-0.25 -14.5303 14.0791 -32 32.7695 -32h60.7998c18.0303 0 32 12.1904 32.7402 32h242.46zM576 400v-336h-512v336\nc0 26.4004 21.5996 48 48 48h416c26.4004 0 48 -21.5996 48 -48zM512 128v256h-384v-256h384z\" />\n    <glyph glyph-name=\"tablet\" unicode=\"&#xf10a;\" horiz-adv-x=\"448\" \nd=\"M400 448c26.5 0 48 -21.5 48 -48v-416c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48h352zM224 -32c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32z\" />\n    <glyph glyph-name=\"mobile\" unicode=\"&#xf10b;\" horiz-adv-x=\"320\" \nd=\"M272 448c26.5 0 48 -21.5 48 -48v-416c0 -26.5 -21.5 -48 -48 -48h-224c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48h224zM160 -32c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32z\" />\n    <glyph glyph-name=\"quote-left\" unicode=\"&#xf10d;\" \nd=\"M464 192c26.5 0 48 -21.5 48 -48v-128c0 -26.5 -21.5 -48 -48 -48h-128c-26.5 0 -48 21.5 -48 48v240c0 88.4004 71.5996 160 160 160h8c13.2998 0 24 -10.7002 24 -24v-48c0 -13.2998 -10.7002 -24 -24 -24h-8c-35.2998 0 -64 -28.7002 -64 -64v-64h80zM176 192\nc26.5 0 48 -21.5 48 -48v-128c0 -26.5 -21.5 -48 -48 -48h-128c-26.5 0 -48 21.5 -48 48v240c0 88.4004 71.5996 160 160 160h8c13.2998 0 24 -10.7002 24 -24v-48c0 -13.2998 -10.7002 -24 -24 -24h-8c-35.2998 0 -64 -28.7002 -64 -64v-64h80z\" />\n    <glyph glyph-name=\"quote-right\" unicode=\"&#xf10e;\" \nd=\"M464 416c26.5 0 48 -21.5 48 -48v-240c0 -88.4004 -71.5996 -160 -160 -160h-8c-13.2998 0 -24 10.7002 -24 24v48c0 13.2998 10.7002 24 24 24h8c35.2998 0 64 28.7002 64 64v64h-80c-26.5 0 -48 21.5 -48 48v128c0 26.5 21.5 48 48 48h128zM176 416\nc26.5 0 48 -21.5 48 -48v-240c0 -88.4004 -71.5996 -160 -160 -160h-8c-13.2998 0 -24 10.7002 -24 24v48c0 13.2998 10.7002 24 24 24h8c35.2998 0 64 28.7002 64 64v64h-80c-26.5 0 -48 21.5 -48 48v128c0 26.5 21.5 48 48 48h128z\" />\n    <glyph glyph-name=\"spinner\" unicode=\"&#xf110;\" \nd=\"M304 400c0 -26.5098 -21.4902 -48 -48 -48s-48 21.4902 -48 48s21.4902 48 48 48s48 -21.4902 48 -48zM256 32c26.5098 0 48 -21.4902 48 -48s-21.4902 -48 -48 -48s-48 21.4902 -48 48s21.4902 48 48 48zM464 240c26.5098 0 48 -21.4902 48 -48s-21.4902 -48 -48 -48\ns-48 21.4902 -48 48s21.4902 48 48 48zM96 192c0 -26.5098 -21.4902 -48 -48 -48s-48 21.4902 -48 48s21.4902 48 48 48s48 -21.4902 48 -48zM108.922 92.9219c26.5088 0 48 -21.4912 48 -48c0 -26.5098 -21.4902 -48 -48 -48s-48 21.4902 -48 48s21.4902 48 48 48z\nM403.078 92.9219c26.5098 0 48 -21.4912 48 -48c0 -26.5098 -21.4902 -48 -48 -48s-48 21.4902 -48 48s21.4902 48 48 48zM108.922 387.078c26.5088 0 48 -21.4902 48 -48s-21.4902 -48 -48 -48s-48 21.4902 -48 48s21.4902 48 48 48z\" />\n    <glyph glyph-name=\"circle\" unicode=\"&#xf111;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248z\" />\n    <glyph glyph-name=\"smile\" unicode=\"&#xf118;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM328 272c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32s32 14.2998 32 32s-14.2998 32 -32 32zM168 272c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32\ns32 14.2998 32 32s-14.2998 32 -32 32zM362.8 101.8c13.5 16.2998 -11.2002 36.7002 -24.5996 20.5c-22.4004 -26.7998 -55.2002 -42.2002 -90.2002 -42.2002s-67.7998 15.3008 -90.2002 42.2002c-13.5996 16.2002 -38.2002 -4.2002 -24.5996 -20.5\nc28.5 -34.2002 70.2998 -53.7998 114.8 -53.7998s86.2998 19.5996 114.8 53.7998z\" />\n    <glyph glyph-name=\"frown\" unicode=\"&#xf119;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM328 272c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32s32 14.2998 32 32s-14.2998 32 -32 32zM168 272c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32\ns32 14.2998 32 32s-14.2998 32 -32 32zM338.2 53.7998c13.5 -16.2998 38.0996 4.2002 24.5 20.4004c-28.4004 34.2002 -70.2998 53.7998 -114.7 53.7998s-86.2998 -19.5996 -114.8 -53.7002c-13.5 -16.2998 11.0996 -36.7998 24.5996 -20.5\nc22.4004 26.7998 55.2998 42.2002 90.2002 42.2002s67.7998 -15.4004 90.2002 -42.2002z\" />\n    <glyph glyph-name=\"meh\" unicode=\"&#xf11a;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM168 272c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32s32 14.2998 32 32s-14.2998 32 -32 32zM344 80c21.2002 0 21.2002 32 0 32h-192c-21.2002 0 -21.2002 -32 0 -32\nh192zM328 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32z\" />\n    <glyph glyph-name=\"gamepad\" unicode=\"&#xf11b;\" horiz-adv-x=\"640\" \nd=\"M480 352c88.4004 0 159.9 -71.5996 159.9 -160s-71.6006 -160 -160 -160c-44.7002 0 -85.2002 18.4004 -114.2 48h-91.5c-29 -29.5996 -69.4004 -48 -114.2 -48c-88.4004 0 -160 71.5996 -160 160s71.5996 160 160 160h320zM256 172v40c0 6.59961 -5.40039 12 -12 12h-52\nv52c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-52h-52c-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h52v-52c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12v52h52c6.59961 0 12 5.40039 12 12zM440 104\nc26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48zM520 184c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48z\" />\n    <glyph glyph-name=\"keyboard\" unicode=\"&#xf11c;\" horiz-adv-x=\"576\" \nd=\"M528 0h-480c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h480c26.5098 0 48 -21.4902 48 -48v-288c0 -26.5098 -21.4902 -48 -48 -48zM128 268v40c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40\nc0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM224 268v40c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM320 268v40c0 6.62695 -5.37305 12 -12 12h-40\nc-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM416 268v40c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM512 268v40\nc0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM176 172v40c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40\nc6.62695 0 12 5.37305 12 12zM272 172v40c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM368 172v40c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40\nc0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM464 172v40c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM128 76v40c0 6.62695 -5.37305 12 -12 12h-40\nc-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM416 76v40c0 6.62695 -5.37305 12 -12 12h-232c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h232c6.62695 0 12 5.37305 12 12zM512 76v40\nc0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12z\" />\n    <glyph glyph-name=\"flag-checkered\" unicode=\"&#xf11e;\" \nd=\"M243.2 258.1c24.2002 -6.69922 47.5996 -16.3994 73.5996 -22.1992v-68.2002c-24.2998 6.7002 -47.5 16.3994 -73.5996 22.2998v68.0996zM466.5 381.1c21.2002 9.80078 45.5 -5.69922 45.4004 -29v-243.1c0 -10.5996 -5.10059 -20.4004 -13.8008 -26.4004\nc-35.7998 -24.5996 -74.2998 -40.8994 -122.5 -40.8994c-67.3994 0 -111.6 34.7998 -165.199 34.7998c-50.8008 0 -86.1006 -10 -114.4 -22.0996v-94.4004c0 -13.2998 -10.7002 -24 -24 -24h-16c-13.2998 0 -24 10.7002 -24 24v386.1c-14.5 10.1006 -24 26.9004 -24 45.9004\nc0 31.7002 26.2998 57.2998 58.2998 56c28.5 -1.2002 51.7998 -24 53.6006 -52.4004c0.5 -8.39941 -0.800781 -16.2998 -3.60059 -23.5996c20.7002 7.59961 43 12 68 12c67.4004 0 111.7 -34.7998 165.2 -34.7998c40.5 0 82.7002 16 117 31.8994zM169.6 122.5v71.2998\nc-26.0996 -2.39941 -47.3994 -8.09961 -73.5996 -17.3994v-70.5c23.5996 8.39941 47.7998 13.8994 73.5996 16.5996zM464 257v70.5c-21.2998 -8.90039 -46.5996 -17.7002 -73.5996 -22.5v-71.9004c-26 -4.19922 -49.9004 -2.59961 -73.6006 2.7002v68.4004\nc-26.3994 4.59961 -49.8994 13.8994 -73.5996 21.2998v-67.4004c-25.2002 7 -46.6006 9.40039 -73.6006 5.7002v71.6006c-23.5 -2.2002 -40.3994 -9.80078 -73.5996 -22v-70.5c29 10.6992 51.2002 17.7998 73.5996 20.8994v-70c32.8008 3 53.9004 0.600586 73.6006 -3.7998\nv-68.5c26.2998 -4.59961 49.7002 -13.9004 73.5996 -21.2998v67.3994c25.7002 -7.09961 46.6006 -9.2998 73.6006 -5.59961v-71.5996c25.0996 2.39941 48.5 11 73.5996 27.0996v70.5c-22.2002 -14.2002 -48.7998 -22.5996 -73.5996 -26v71.0996\nc27.2998 4.40039 50 14.1006 73.5996 23.9004z\" />\n    <glyph glyph-name=\"terminal\" unicode=\"&#xf120;\" horiz-adv-x=\"640\" \nd=\"M257.981 175.029l-194.344 -194.344c-9.37305 -9.37207 -24.5684 -9.37207 -33.9404 0l-22.668 22.667c-9.35742 9.35742 -9.375 24.5225 -0.0400391 33.9014l154.021 154.746l-154.021 154.745c-9.33496 9.37891 -9.31738 24.5439 0.0400391 33.9014l22.667 22.667\nc9.37305 9.37207 24.5684 9.37207 33.9404 0l194.344 -194.344c9.37207 -9.37207 9.37207 -24.5674 0 -33.9404zM640 -8c0 -13.2549 -10.7451 -24 -24 -24h-304c-13.2549 0 -24 10.7451 -24 24v32c0 13.2549 10.7451 24 24 24h304c13.2549 0 24 -10.7451 24 -24v-32z\" />\n    <glyph glyph-name=\"code\" unicode=\"&#xf121;\" horiz-adv-x=\"640\" \nd=\"M278.9 -63.5l-61 17.7002c-6.40039 1.7998 -10 8.5 -8.2002 14.8994l136.5 470.2c1.7998 6.40039 8.5 10 14.8994 8.2002l61 -17.7002c6.40039 -1.7998 10 -8.5 8.2002 -14.8994l-136.5 -470.2c-1.89941 -6.40039 -8.5 -10.1006 -14.8994 -8.2002zM164.9 48.7002\nc-4.5 -4.90039 -12.1006 -5.10059 -17 -0.5l-144.101 135.1c-5.09961 4.7002 -5.09961 12.7998 0 17.5l144.101 135c4.89941 4.60059 12.5 4.2998 17 -0.5l43.5 -46.3994c4.69922 -4.90039 4.2998 -12.7002 -0.800781 -17.2002l-90.5996 -79.7002l90.5996 -79.7002\nc5.10059 -4.5 5.40039 -12.2998 0.800781 -17.2002zM492.1 48.0996c-4.89941 -4.5 -12.5 -4.2998 -17 0.600586l-43.5 46.3994c-4.69922 4.90039 -4.2998 12.7002 0.800781 17.2002l90.5996 79.7002l-90.5996 79.7998c-5.10059 4.5 -5.40039 12.2998 -0.800781 17.2002\nl43.5 46.4004c4.60059 4.7998 12.2002 5 17 0.5l144.101 -135.2c5.09961 -4.7002 5.09961 -12.7998 0 -17.5z\" />\n    <glyph glyph-name=\"reply-all\" unicode=\"&#xf122;\" horiz-adv-x=\"576\" \nd=\"M136.309 258.164l176.005 151.985c15.4062 13.3047 39.6865 2.50293 39.6865 -18.1641v-82.7637c129.182 -10.2305 224 -52.2119 224 -183.548c0 -61.4404 -39.582 -122.309 -83.333 -154.132c-13.6533 -9.93066 -33.1113 2.5332 -28.0771 18.6309\nc38.5117 123.162 -3.92188 169.482 -112.59 182.016v-84.1758c0 -20.7012 -24.2998 -31.4531 -39.6865 -18.1641l-176.005 151.987c-11.0703 9.56152 -11.0859 26.7529 0 36.3281zM8.30859 221.836c-11.0703 9.56152 -11.0859 26.7529 0 36.3281l176.005 151.985\nc15.4062 13.3047 39.6865 2.50293 39.6865 -18.1641v-15.8174l-108.607 -93.7861c-10.7041 -9.23926 -19.3926 -28.2158 -19.3926 -42.3564v-0.0234375v-0.0244141c0 -14.1416 8.68848 -33.1191 19.3936 -42.3604l108.606 -93.7852v-15.8184\nc0 -20.7002 -24.2998 -31.4531 -39.6865 -18.1641z\" />\n    <glyph glyph-name=\"location-arrow\" unicode=\"&#xf124;\" \nd=\"M444.52 444.48c38.3809 16 79.9609 -25.5801 63.9707 -63.9707l-191.9 -415.779c-22.3896 -47.9805 -92.75 -31.9805 -92.75 19.1895v175.91h-175.91c-51.1699 0 -67.1602 70.3604 -19.1895 92.75z\" />\n    <glyph glyph-name=\"crop\" unicode=\"&#xf125;\" \nd=\"M488 96c13.25 0 24 -10.7402 24 -24v-48c0 -13.25 -10.75 -24 -24 -24h-40v-40c0 -13.25 -10.75 -24 -24 -24h-48c-13.25 0 -24 10.75 -24 24v282.75l-146.75 -146.75h114.75v-96h-232c-13.25 0 -24 10.75 -24 24v264h-40c-13.25 0 -24 10.75 -24 24v48\nc0 13.2598 10.75 24 24 24h40v40c0 13.2598 10.75 24 24 24h48c13.25 0 24 -10.7402 24 -24v-282.75l146.75 146.75h-114.75v96h210.75l59.3096 59.3096c6.25 6.25 16.3809 6.25 22.6309 0l22.6191 -22.6191c6.25 -6.25 6.25 -16.3809 0 -22.6309l-59.3096 -59.3096v-242.75\nh40z\" />\n    <glyph glyph-name=\"code-branch\" unicode=\"&#xf126;\" horiz-adv-x=\"384\" \nd=\"M384 304c0 -35.2002 -22.7998 -65.0996 -54.4004 -75.9004c-0.5 -28.0996 -7.59961 -50.5 -21.5996 -67.8994c-28.2002 -35 -76 -39.5 -118.2 -43.4004c-25.7002 -2.39941 -49.8994 -4.59961 -66.0996 -12.7998c-7.10059 -3.59961 -11.7998 -8.2002 -14.9004 -13.4004\nc30 -11.5 51.2002 -40.5996 51.2002 -74.5996c0 -44.2002 -35.7998 -80 -80 -80s-80 35.7998 -80 80c0 35.7998 23.5 66.0996 56 76.4004v199.3c-32.5 10.2002 -56 40.5 -56 76.2998c0 44.2002 35.7998 80 80 80s80 -35.7998 80 -80c0 -35.7998 -23.5 -66.0996 -56 -76.2998\nv-144c23.9004 11.5 53.0996 14.2998 81.2998 16.8994c35.9004 3.30078 69.7998 6.5 85.2002 25.7002c6.7998 8.40039 10.4004 20.7998 11 36.9004c-33.2002 9.7002 -57.5 40.3994 -57.5 76.7998c0 44.2002 35.7998 80 80 80s80 -35.7998 80 -80zM80 384\nc-8.7998 0 -16 -7.2002 -16 -16s7.2002 -16 16 -16s16 7.2002 16 16s-7.2002 16 -16 16zM80 0c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM304 320c-8.7998 0 -16 -7.2002 -16 -16s7.2002 -16 16 -16s16 7.2002 16 16\ns-7.2002 16 -16 16z\" />\n    <glyph glyph-name=\"unlink\" unicode=\"&#xf127;\" \nd=\"M304.083 42.0928c4.68555 -4.68555 4.68555 -12.2842 0 -16.9707l-44.6738 -44.6738c-59.2627 -59.2627 -155.693 -59.2666 -214.961 0c-59.2646 59.2646 -59.2646 155.695 0 214.96l44.6748 44.6748c4.68555 4.68555 12.2842 4.68555 16.9707 0l39.5986 -39.5977\nc4.68555 -4.68652 4.68555 -12.2842 0 -16.9717l-44.6758 -44.6738c-28.0713 -28.0732 -28.0713 -73.75 0 -101.823c28.0723 -28.0713 73.75 -28.0723 101.824 0l44.6738 44.6748c4.68652 4.68555 12.2842 4.68555 16.9717 0zM247.515 302.309l-39.5967 39.5986\nc-4.68555 4.68652 -4.68555 12.2852 0 16.9707l44.6738 44.6738c59.2666 59.2646 155.695 59.2646 214.961 0s59.2656 -155.694 0 -214.96l-44.6748 -44.6748c-4.68652 -4.68555 -12.2852 -4.68555 -16.9707 0l-39.5986 39.5977c-4.68555 4.6875 -4.68555 12.2852 0 16.9717\nl44.6758 44.6738c28.0713 28.0732 28.0713 73.75 0 101.823c-28.0742 28.0723 -73.752 28.0742 -101.824 0l-44.6738 -44.6748c-4.6875 -4.68555 -12.2852 -4.68555 -16.9717 0zM482.343 -56.9707c-9.37207 -9.37207 -24.5674 -9.37207 -33.9404 0l-441.373 441.373\nc-9.37305 9.37207 -9.37305 24.5674 0 33.9404l22.6279 22.6279c9.37207 9.37305 24.5674 9.37305 33.9404 0l441.372 -441.374c9.37305 -9.37207 9.37305 -24.5674 0 -33.9404z\" />\n    <glyph glyph-name=\"question\" unicode=\"&#xf128;\" horiz-adv-x=\"384\" \nd=\"M202.021 448c84.8809 0 175.482 -66.2559 175.481 -153.6c0 -115.982 -125.268 -117.768 -125.268 -160.627v-5.77344c0 -13.2549 -10.7451 -24 -24 -24h-72.4717c-13.2549 0 -24 10.7451 -24 24v9.78809c0 61.8291 46.876 86.5449 82.2998 106.405\nc30.376 17.0293 48.9922 28.6113 48.9922 51.1641c0 29.832 -38.0518 49.6309 -68.8154 49.6309c-39.127 0 -57.708 -18.0684 -82.7568 -49.4492c-8.12109 -10.1738 -22.8809 -12.0127 -33.2529 -4.14844l-43.1387 32.709c-10.2705 7.78809 -12.541 22.2939 -5.17773 32.874\nc40.5889 58.3232 92.2881 91.0264 172.107 91.0264zM192 74.541c38.1963 0 69.2715 -31.0742 69.2715 -69.2695c0 -38.1963 -31.0752 -69.2715 -69.2715 -69.2715s-69.2715 31.0752 -69.2715 69.2695c0 38.1963 31.0752 69.2715 69.2715 69.2715z\" />\n    <glyph glyph-name=\"info\" unicode=\"&#xf129;\" horiz-adv-x=\"192\" \nd=\"M20 23.7715h20v144.457h-20c-11.0459 0 -20 8.9541 -20 20v47.7715c0 11.0459 8.9541 20 20 20h112c11.0459 0 20 -8.9541 20 -20v-212.229h20c11.0459 0 20 -8.9541 20 -20v-47.7715c0 -11.0459 -8.9541 -20 -20 -20h-152c-11.0459 0 -20 8.9541 -20 20v47.7715\nc0 11.0459 8.9541 20 20 20zM96 448c39.7637 0 72 -32.2354 72 -72s-32.2354 -72 -72 -72s-72 32.2354 -72 72s32.2354 72 72 72z\" />\n    <glyph glyph-name=\"exclamation\" unicode=\"&#xf12a;\" horiz-adv-x=\"192\" \nd=\"M176 16c0 -44.1123 -35.8877 -80 -80 -80s-80 35.8877 -80 80s35.8877 80 80 80s80 -35.8877 80 -80zM25.2598 422.801c-0.68457 13.709 10.2441 25.1992 23.9707 25.1992h93.5391c13.7266 0 24.6553 -11.4902 23.9707 -25.1992l-13.6006 -272\nc-0.638672 -12.7725 -11.1807 -22.8008 -23.9697 -22.8008h-66.3398c-12.7891 0 -23.3311 10.0283 -23.9697 22.8008z\" />\n    <glyph glyph-name=\"superscript\" unicode=\"&#xf12b;\" \nd=\"M496 288c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-96c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h16v96h-16c-8.82422 0.0078125 -15.9863 7.17578 -15.9863 16c0 2.08984 0.759766 5.30176 1.69629 7.16992l16 32\nc2.44141 4.87012 8.84277 8.8252 14.29 8.83008h48c8.83203 0 16 -7.16797 16 -16v-144h16zM336 384c8.83203 0 16 -7.16797 16 -16v-48c0 -8.83203 -7.16797 -16 -16 -16h-33.4805l-77.8096 -112l77.8096 -112h33.4805c8.83203 0 16 -7.16797 16 -16v-48\nc0 -8.83203 -7.16797 -16 -16 -16h-67c-4.58984 0.0224609 -10.4404 3.10059 -13.0596 6.87012l-79.9004 115l-79.9004 -115c-2.63477 -3.79199 -8.52148 -6.87012 -13.1387 -6.87012h-0.000976562h-67c-8.83203 0 -16 7.16797 -16 16v48c0 8.83203 7.16797 16 16 16\nh33.4805l77.8096 112l-77.8096 112h-33.4805c-8.83203 0 -16 7.16797 -16 16v48c0 8.83203 7.16797 16 16 16h67c4.58984 -0.0224609 10.4404 -3.10059 13.0596 -6.87012l79.9004 -115l79.9004 115c2.63477 3.79199 8.52148 6.87012 13.1387 6.87012h0.000976562h67z\" />\n    <glyph glyph-name=\"subscript\" unicode=\"&#xf12c;\" \nd=\"M496 0c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-96c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h16v96h-16c-8.82422 0.0078125 -15.9863 7.17578 -15.9863 16c0 2.08984 0.759766 5.30176 1.69629 7.16992l16 32\nc2.44141 4.87012 8.84277 8.8252 14.29 8.83008h48c8.83203 0 16 -7.16797 16 -16v-144h16zM336 384c8.83203 0 16 -7.16797 16 -16v-48c0 -8.83203 -7.16797 -16 -16 -16h-33.4805l-77.8096 -112l77.8096 -112h33.4805c8.83203 0 16 -7.16797 16 -16v-48\nc0 -8.83203 -7.16797 -16 -16 -16h-67c-4.58984 0.0224609 -10.4404 3.10059 -13.0596 6.87012l-79.9004 115l-79.9004 -115c-2.63477 -3.79199 -8.52148 -6.87012 -13.1387 -6.87012h-0.000976562h-67c-8.83203 0 -16 7.16797 -16 16v48c0 8.83203 7.16797 16 16 16\nh33.4805l77.8096 112l-77.8096 112h-33.4805c-8.83203 0 -16 7.16797 -16 16v48c0 8.83203 7.16797 16 16 16h67c4.58984 -0.0224609 10.4404 -3.10059 13.0596 -6.87012l79.9004 -115l79.9004 115c2.63477 3.79199 8.52148 6.87012 13.1387 6.87012h0.000976562h67z\" />\n    <glyph glyph-name=\"eraser\" unicode=\"&#xf12d;\" \nd=\"M497.941 174.059l-142.059 -142.059h144.117c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-356c-10.9756 0 -26.1816 6.29883 -33.9424 14.0586l-96 96c-18.7441 18.7451 -18.7441 49.1377 0 67.8828l256 256\nc18.7471 18.7451 49.1387 18.7441 67.8838 0l160 -160c18.7441 -18.7451 18.7441 -49.1377 0 -67.8828zM195.314 236.686l-124.687 -124.686l80 -80h114.745l67.3135 67.3135z\" />\n    <glyph glyph-name=\"puzzle-piece\" unicode=\"&#xf12e;\" horiz-adv-x=\"576\" \nd=\"M519.442 159.349c37.5957 0 56.5576 -31.5928 56.5576 -65.792c0 -33.5469 -19.2881 -61.5566 -54.9229 -61.5557c-39.8848 0 -50.3457 36.1523 -86.3086 36.1523c-60.5518 0 -25.8262 -120.102 -25.8262 -120.102c-51.5557 0 -181.23 -35.0732 -181.23 25.7305\nc0 35.8271 36.2881 46.25 36.2881 85.9844c0 35.501 -28.1152 54.7178 -61.7881 54.7178c-34.3271 0 -63.5771 -18.8906 -63.5771 -56.3467c0 -41.3633 40 -58.998 40 -81.4707c0 -69.709 -178.635 -28.6621 -178.635 -28.6621v333.237s175.885 -40.9609 175.884 28.6621\nc0 22.4727 -31.7109 40.3857 -31.7109 81.75c0 37.4551 31.7119 56.3457 66.3662 56.3457c33.3457 0 61.4609 -19.2158 61.4609 -54.7178c0 -39.7354 -36.2881 -50.1582 -36.2881 -85.9854c0 -83.2969 196.288 -3.29688 196.288 -3.29688\ns-54.5908 -176.244 5.38379 -176.244c22.5586 0 40.5391 31.5928 82.0586 31.5928z\" />\n    <glyph glyph-name=\"microphone\" unicode=\"&#xf130;\" horiz-adv-x=\"352\" \nd=\"M176 96c-53.0195 0 -96 42.9805 -96 96v160c0 53.0195 42.9805 96 96 96s96 -42.9805 96 -96v-160c0 -53.0195 -42.9805 -96 -96 -96zM336 256c8.83984 0 16 -7.16016 16 -16v-48c0 -88.9004 -66.29 -162.47 -152 -174.23v-33.7695h56c8.83984 0 16 -7.16016 16 -16v-16\nc0 -8.83984 -7.16016 -16 -16 -16h-160c-8.83984 0 -16 7.16016 -16 16v16c0 8.83984 7.16016 16 16 16h56v34.1504c-88.0303 12.1396 -152 92.0498 -152 181.689v40.1602c0 8.83984 7.16016 16 16 16h16c8.83984 0 16 -7.16016 16 -16v-42.2998\nc0 -66.8105 48.71 -126.59 115.21 -133.08c76.2998 -7.44043 140.79 52.5801 140.79 127.38v48c0 8.83984 7.16016 16 16 16h16z\" />\n    <glyph glyph-name=\"microphone-slash\" unicode=\"&#xf131;\" horiz-adv-x=\"640\" \nd=\"M633.82 -10.0996c6.97949 -5.43066 8.22949 -15.4805 2.81934 -22.4502l-19.6396 -25.2705c-5.42969 -6.97949 -15.4805 -8.23926 -22.46 -2.80957l-588.36 454.729c-6.97949 5.43066 -8.22949 15.4805 -2.80957 22.4502l19.6396 25.2705\nc5.41992 6.97949 15.4805 8.22949 22.46 2.80957l178.54 -137.99v45.3604c0 53.0195 42.9805 96 96 96c53.0205 0 96 -42.9805 96 -96v-160.01c0 -10.4502 -2.17969 -20.2705 -5.2793 -29.6699l26.5498 -20.5205c6.75977 15.4004 10.7197 32.2803 10.7197 50.2002v48\nc0 8.83984 7.16016 16 16 16h16c8.83984 0 16 -7.16016 16 -16v-48c0 -29.0098 -7.38965 -56.1299 -19.9805 -80.1396zM400 -16c8.83984 0 16 -7.16016 16 -16v-16c0 -8.83984 -7.16016 -16 -16 -16h-160c-8.83984 0 -16 7.16016 -16 16v16c0 8.83984 7.16016 16 16 16h56\nv34.1504c-88.0303 12.1396 -152 92.0498 -152 181.689v6.85059l52.0303 -40.2305c12.4395 -53.2197 55.3301 -96.4004 111.18 -101.85c6.94043 -0.669922 13.6396 -0.200195 20.3496 0.199219l50.1104 -38.7295c-10.8203 -3.77051 -22.0098 -6.70996 -33.6699 -8.31055\nv-33.7695h56z\" />\n    <glyph glyph-name=\"calendar\" unicode=\"&#xf133;\" horiz-adv-x=\"448\" \nd=\"M12 256h424c6.59961 0 12 -5.40039 12 -12v-260c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v260c0 6.59961 5.40039 12 12 12zM448 300c0 -6.59961 -5.40039 -12 -12 -12h-424c-6.59961 0 -12 5.40039 -12 12v36c0 26.5 21.5 48 48 48h48v52\nc0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h128v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h48c26.5 0 48 -21.5 48 -48v-36z\" />\n    <glyph glyph-name=\"fire-extinguisher\" unicode=\"&#xf134;\" horiz-adv-x=\"448\" \nd=\"M434.027 421.671c7.31445 1.21875 13.9727 -4.4209 13.9727 -11.8369v-115.668c0 -7.41602 -6.6582 -13.0557 -13.9727 -11.8369l-168 28c-11.7305 1.95508 -10.0273 14.6973 -10.0273 17.6709h-40v-27.0303c41.4043 -10.6582 72 -48.2383 72 -92.9697v-248\nc0 -13.2549 -10.7451 -24 -24 -24h-144c-13.2549 0 -24 10.7451 -24 24v246.795c0 44.8945 30.457 83.2666 72 94.1289v27.0762c-61.0361 0 -92.9424 7.00977 -121.711 -64.9141c-4.91699 -12.2949 -18.8789 -18.2959 -31.1963 -13.3701\nc-12.3066 4.92285 -18.293 18.8906 -13.3701 31.1973c14.668 36.6709 38.0107 77.833 90.0498 90.8838c-14.1406 36.5273 12.793 76.2031 52.2275 76.2031c37.4463 0 64.3525 -36.1084 53.668 -72h58.332c0 4.2002 -1.30664 15.7822 10.0273 17.6709zM144 376\nc8.82227 0 16 7.17773 16 16s-7.17773 16 -16 16s-16 -7.17773 -16 -16s7.17773 -16 16 -16z\" />\n    <glyph glyph-name=\"rocket\" unicode=\"&#xf135;\" \nd=\"M505.05 428.9c6.9502 -32.2002 6.9502 -57.4004 6.85059 -82.6006c0 -102.689 -55.4102 -164.79 -128 -211.09v-104.41v-0.0400391c0 -16.3516 -11.8721 -35.5527 -26.5 -42.8594l-98.7002 -49.3906c-2.79004 -1.38965 -7.58398 -2.5166 -10.7002 -2.5166\nc-13.248 0 -24 10.752 -24 24v0.00683594v103.84l-22.4697 -22.4697c-5.17383 -5.1748 -15.3125 -9.375 -22.6299 -9.375c-7.31836 0 -17.4561 4.2002 -22.6309 9.375l-50.8994 50.9102c-5.17285 5.17285 -9.37012 15.3096 -9.37012 22.625s4.19727 17.4512 9.37012 22.625\nl22.4697 22.4697h-103.77h-0.0126953c-13.248 0 -24 10.752 -24 24c0 3.12012 1.12988 7.91797 2.52246 10.71l49.4199 98.7998c7.32324 14.6094 26.5283 26.4766 42.8701 26.4902h104.2c46.1895 72.7998 108.09 128 211.29 128c25.0996 0 50.29 0 82.4893 -6.90039\nc5.54395 -1.19043 11.0098 -6.65527 12.2002 -12.1992zM384 280c22.0801 0 40 17.9199 40 40s-17.9199 40 -40 40s-40 -17.9199 -40 -40s17.9199 -40 40 -40z\" />\n    <glyph glyph-name=\"chevron-circle-left\" unicode=\"&#xf137;\" \nd=\"M256 -56c-137 0 -248 111 -248 248s111 248 248 248s248 -111 248 -248s-111 -248 -248 -248zM142.1 175l135.5 -135.5c9.40039 -9.40039 24.6006 -9.40039 33.9004 0l17 17c9.40039 9.40039 9.40039 24.5996 0 33.9004l-101.6 101.6l101.6 101.6\nc9.40039 9.40039 9.40039 24.6006 0 33.9004l-17 17c-9.40039 9.40039 -24.5996 9.40039 -33.9004 0l-135.5 -135.5c-9.39941 -9.40039 -9.39941 -24.5996 0 -34z\" />\n    <glyph glyph-name=\"chevron-circle-right\" unicode=\"&#xf138;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM369.9 209l-135.5 135.5c-9.40039 9.40039 -24.6006 9.40039 -33.9004 0l-17 -17c-9.40039 -9.40039 -9.40039 -24.5996 0 -33.9004l101.6 -101.6l-101.6 -101.6\nc-9.40039 -9.40039 -9.40039 -24.6006 0 -33.9004l17 -17c9.40039 -9.40039 24.5996 -9.40039 33.9004 0l135.5 135.5c9.39941 9.40039 9.39941 24.5996 0 34z\" />\n    <glyph glyph-name=\"chevron-circle-up\" unicode=\"&#xf139;\" \nd=\"M8 192c0 137 111 248 248 248s248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248zM239 305.9l-135.5 -135.5c-9.40039 -9.40039 -9.40039 -24.6006 0 -33.9004l17 -17c9.40039 -9.40039 24.5996 -9.40039 33.9004 0l101.6 101.6l101.6 -101.6\nc9.40039 -9.40039 24.6006 -9.40039 33.9004 0l17 17c9.40039 9.40039 9.40039 24.5996 0 33.9004l-135.5 135.5c-9.40039 9.39941 -24.5996 9.39941 -34 0z\" />\n    <glyph glyph-name=\"chevron-circle-down\" unicode=\"&#xf13a;\" \nd=\"M504 192c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248s248 -111 248 -248zM273 78.0996l135.5 135.5c9.40039 9.40039 9.40039 24.6006 0 33.9004l-17 17c-9.40039 9.40039 -24.5996 9.40039 -33.9004 0l-101.6 -101.6l-101.6 101.6\nc-9.40039 9.40039 -24.6006 9.40039 -33.9004 0l-17 -17c-9.40039 -9.40039 -9.40039 -24.5996 0 -33.9004l135.5 -135.5c9.40039 -9.39941 24.5996 -9.39941 34 0z\" />\n    <glyph glyph-name=\"anchor\" unicode=\"&#xf13d;\" horiz-adv-x=\"576\" \nd=\"M12.9707 96c-10.6904 0 -16.0449 12.9258 -8.48535 20.4854l67.0283 67.0283c4.6875 4.68652 12.2852 4.68652 16.9717 0l67.0283 -67.0283c7.56055 -7.55957 2.20605 -20.4854 -8.48438 -20.4854h-35.1465c20.2969 -54.3359 85.1816 -86.6162 144.117 -94.0146v190.015\nh-52c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h52v5.46973c-37.2842 13.1807 -64 48.7324 -64 90.5303c0 53.4746 43.7227 96.7393 97.3701 95.9902c52.2354 -0.728516 94.6348 -43.7627 94.6289 -96.002\nc-0.00488281 -41.793 -26.7188 -77.3398 -64 -90.5186v-5.46973h52c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-52v-190.015c59.1543 7.42676 123.827 39.6973 144.117 94.0146h-35.1465c-10.6904 0 -16.0449 12.9248 -8.48438 20.4854\nl67.0283 67.0283c4.6875 4.68652 12.2852 4.68652 16.9717 0l67.0283 -67.0283c7.56055 -7.55957 2.20605 -20.4854 -8.48438 -20.4854h-32.3945c-21.7822 -102.62 -136.406 -160 -242.635 -160c-106.056 0 -220.828 57.2646 -242.635 160h-32.3945zM288 384\nc-17.6445 0 -32 -14.3555 -32 -32s14.3555 -32 32 -32s32 14.3555 32 32s-14.3555 32 -32 32z\" />\n    <glyph glyph-name=\"unlock-alt\" unicode=\"&#xf13e;\" horiz-adv-x=\"448\" \nd=\"M400 192c26.5 0 48 -21.5 48 -48v-160c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v160c0 26.5 21.5 48 48 48h24v102.5c0 84 67.5 153.2 151.5 153.5s152.5 -68 152.5 -152v-16c0 -13.2998 -10.7002 -24 -24 -24h-32c-13.2998 0 -24 10.7002 -24 24v16\nc0 39.9004 -32.7002 72.4004 -72.7002 72c-39.5996 -0.400391 -71.2998 -33.2998 -71.2998 -72.9004v-103.1h248zM264 40v48c0 22.0996 -17.9004 40 -40 40s-40 -17.9004 -40 -40v-48c0 -22.0996 17.9004 -40 40 -40s40 17.9004 40 40z\" />\n    <glyph glyph-name=\"bullseye\" unicode=\"&#xf140;\" horiz-adv-x=\"496\" \nd=\"M248 440c136.97 0 248 -111.03 248 -248s-111.03 -248 -248 -248s-248 111.03 -248 248s111.03 248 248 248zM248 8c101.71 0 184 82.3096 184 184c0 101.71 -82.3096 184 -184 184c-101.71 0 -184 -82.3096 -184 -184c0 -101.71 82.3096 -184 184 -184zM248 320\nc70.6904 0 128 -57.3096 128 -128s-57.3096 -128 -128 -128s-128 57.3096 -128 128s57.3096 128 128 128zM248 128c35.29 0 64 28.71 64 64s-28.71 64 -64 64s-64 -28.71 -64 -64s28.71 -64 64 -64z\" />\n    <glyph glyph-name=\"ellipsis-h\" unicode=\"&#xf141;\" \nd=\"M328 192c0 -39.7998 -32.2002 -72 -72 -72s-72 32.2002 -72 72s32.2002 72 72 72s72 -32.2002 72 -72zM432 264c39.7998 0 72 -32.2002 72 -72s-32.2002 -72 -72 -72s-72 32.2002 -72 72s32.2002 72 72 72zM80 264c39.7998 0 72 -32.2002 72 -72s-32.2002 -72 -72 -72\ns-72 32.2002 -72 72s32.2002 72 72 72z\" />\n    <glyph glyph-name=\"ellipsis-v\" unicode=\"&#xf142;\" horiz-adv-x=\"192\" \nd=\"M96 264c39.7998 0 72 -32.2002 72 -72s-32.2002 -72 -72 -72s-72 32.2002 -72 72s32.2002 72 72 72zM24 368c0 39.7998 32.2002 72 72 72s72 -32.2002 72 -72s-32.2002 -72 -72 -72s-72 32.2002 -72 72zM24 16c0 39.7998 32.2002 72 72 72s72 -32.2002 72 -72\ns-32.2002 -72 -72 -72s-72 32.2002 -72 72z\" />\n    <glyph glyph-name=\"rss-square\" unicode=\"&#xf143;\" horiz-adv-x=\"448\" \nd=\"M400 416c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h352zM112 32c26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48s-48 -21.4902 -48 -48s21.4902 -48 48 -48zM269.533 32\nc6.53516 0 11.7764 5.46777 11.4248 11.9941c-5.9668 110.428 -94.418 198.99 -204.964 204.964c-6.52637 0.351562 -11.9941 -4.88965 -11.9941 -11.4248v-34.335c0 -6.00977 4.63574 -11.0508 10.6328 -11.4414c79.8799 -5.20312 143.909 -69.0732 149.123 -149.123\nc0.391602 -5.99805 5.43066 -10.6338 11.4424 -10.6338h34.335zM372.56 32c6.4541 0 11.6641 5.33789 11.4326 11.7871c-5.99512 167.014 -140.375 302.18 -308.205 308.205c-6.44922 0.231445 -11.7871 -4.97852 -11.7871 -11.4326v-34.334\nc0 -6.16016 4.88184 -11.1748 11.0391 -11.4277c136.556 -5.59863 246.162 -115.225 251.76 -251.76c0.251953 -6.15625 5.2666 -11.0381 11.4268 -11.0381h34.334z\" />\n    <glyph glyph-name=\"play-circle\" unicode=\"&#xf144;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM371.7 168c16.3994 9.09961 16.3994 32.7998 0 42l-176 107c-15.9004 8.7998 -35.7002 -2.59961 -35.7002 -21v-208c0 -18.5 19.9004 -29.7998 35.7002 -21z\" />\n    <glyph glyph-name=\"minus-square\" unicode=\"&#xf146;\" horiz-adv-x=\"448\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM92 152h264c6.59961 0 12 5.40039 12 12v56c0 6.59961 -5.40039 12 -12 12h-264c-6.59961 0 -12 -5.40039 -12 -12v-56\nc0 -6.59961 5.40039 -12 12 -12z\" />\n    <glyph glyph-name=\"check-square\" unicode=\"&#xf14a;\" horiz-adv-x=\"448\" \nd=\"M400 -32h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h352c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48zM195.314 66.0586l184 184c6.24707 6.24805 6.24707 16.3799 0 22.627l-22.6279 22.6279\nc-6.24707 6.24707 -16.3789 6.24805 -22.6279 0l-150.059 -150.059l-70.0586 70.0596c-6.24805 6.24707 -16.3799 6.24707 -22.6279 0l-22.6279 -22.6279c-6.24707 -6.24707 -6.24707 -16.3789 0 -22.627l104 -104c6.24902 -6.25 16.3799 -6.25 22.6289 -0.000976562z\" />\n    <glyph glyph-name=\"pen-square\" unicode=\"&#xf14b;\" horiz-adv-x=\"448\" \nd=\"M400 -32h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48zM238.1 270.1l-135.699 -135.699l-6.30078 -57.1006c-0.799805 -7.59961 5.60059 -14.0996 13.3008 -13.2998l57.0996 6.2998l135.7 135.7\nc2.2998 2.2998 2.2998 6.09961 0 8.5l-55.5 55.5c-2.5 2.40039 -6.2998 2.40039 -8.60059 0.0996094zM345 282.9l-30.0996 30.0996c-9.40039 9.40039 -24.6006 9.40039 -33.9004 0l-23.0996 -23.0996c-2.30078 -2.30078 -2.30078 -6.10059 0 -8.5l55.5 -55.5\nc2.2998 -2.30078 6.09961 -2.30078 8.5 0l23.0996 23.0996c9.2998 9.2998 9.2998 24.5 0 33.9004z\" />\n    <glyph glyph-name=\"share-square\" unicode=\"&#xf14d;\" horiz-adv-x=\"576\" \nd=\"M568.482 270.552l-144.004 -135.984c-15.1787 -14.335 -40.4785 -3.70703 -40.4785 17.4473v71.9629c-144.575 -0.969727 -205.566 -35.1123 -164.775 -171.353c4.4834 -14.9727 -12.8457 -26.5674 -25.0059 -17.3301\nc-38.9668 29.5996 -74.2188 86.2168 -74.2188 143.366c0 143.937 117.599 172.5 264 173.312v72.0156c0 21.1738 25.3174 31.7676 40.4785 17.4473l144.004 -135.987c10.0195 -9.46289 10.0273 -25.4248 0 -34.8965zM384 68.8721c0 7.34473 6.53027 12.9053 13.7998 11.8594\nc2.81152 -0.405273 7.39844 -0.734375 10.2393 -0.734375c6.80469 0 17.5342 1.8418 23.9502 4.11133c7.81348 2.76367 16.0107 -3.01465 16.0107 -11.3027v-88.8057c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48\nh121.033c12.5508 0 16.6748 -16.8301 5.54492 -22.6309c-18.7773 -9.78613 -36.0615 -22.1084 -51.0137 -37.6758c-1.95312 -2.03711 -5.82715 -3.69141 -8.64844 -3.69336h-50.916v-320h320v68.8721z\" />\n    <glyph glyph-name=\"compass\" unicode=\"&#xf14e;\" horiz-adv-x=\"496\" \nd=\"M225.38 214.63c12.4902 12.4902 32.75 12.4902 45.25 0s12.5 -32.75 0 -45.25c-12.4902 -12.5 -32.7598 -12.5 -45.25 0c-12.5 12.4902 -12.5 32.75 0 45.25zM248 440c136.97 0 248 -111.03 248 -248s-111.03 -248 -248 -248s-248 111.03 -248 248s111.03 248 248 248z\nM374.14 291.95c7.61035 16.6494 -9.54004 33.7998 -26.1895 26.2002l-144.34 -65.9707c-5.97461 -2.73047 -13.04 -9.7959 -15.7705 -15.7695l-65.9795 -144.351c-7.61035 -16.6494 9.5498 -33.8096 26.1992 -26.1992l144.341 65.9697\nc5.97363 2.73047 13.0391 9.7959 15.7695 15.7695z\" />\n    <glyph glyph-name=\"caret-square-down\" unicode=\"&#xf150;\" horiz-adv-x=\"448\" \nd=\"M448 368v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48zM92.5 227.5l123 -123c4.7002 -4.7002 12.2998 -4.7002 17 0l123 123c7.59961 7.59961 2.2002 20.5 -8.5 20.5h-246\nc-10.7002 0 -16.0996 -12.9004 -8.5 -20.5z\" />\n    <glyph glyph-name=\"caret-square-up\" unicode=\"&#xf151;\" horiz-adv-x=\"448\" \nd=\"M0 16v352c0 26.5098 21.4902 48 48 48h352c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48zM355.515 156.485l-123.029 123.029c-4.68652 4.68652 -12.2842 4.68652 -16.9717 0l-123.028 -123.029\nc-7.56055 -7.56055 -2.20605 -20.4854 8.48438 -20.4854h246.06c10.6904 0 16.0449 12.9258 8.48535 20.4854z\" />\n    <glyph glyph-name=\"caret-square-right\" unicode=\"&#xf152;\" horiz-adv-x=\"448\" \nd=\"M48 416h352c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48zM188.485 60.4854l123.028 123.028c4.68652 4.68652 4.68652 12.2842 0 16.9717l-123.028 123.029\nc-7.56055 7.56055 -20.4854 2.20605 -20.4854 -8.48438v-246.06c0 -10.6904 12.9258 -16.0449 20.4854 -8.48535z\" />\n    <glyph glyph-name=\"euro-sign\" unicode=\"&#xf153;\" horiz-adv-x=\"320\" \nd=\"M310.706 34.2354l8.81836 -44.4902c1.23828 -6.24902 -2.62109 -12.3623 -8.78809 -13.957c-12.5391 -3.24414 -34.8008 -7.78809 -61.1016 -7.78809c-104.371 0 -182.496 65.3076 -207.521 155.64h-30.1143c-6.62695 0 -12 5.37305 -12 12v28.3604\nc0 6.62695 5.37305 12 12 12h21.3877c-1 12.958 -0.828125 28.6377 0.181641 42.2451h-21.5693c-6.62695 0 -12 5.37305 -12 12v29.7549c0 6.62695 5.37305 12 12 12h33.0752c28.9551 83.748 107.376 144 204.56 144c21.0752 0 40.582 -2.91211 52.6865 -5.20703\nc6.86035 -1.30078 11.1475 -8.17578 9.32617 -14.917l-11.9912 -44.3682c-1.65527 -6.125 -7.78613 -9.89062 -14.002 -8.62305c-9.28711 1.89551 -23.3652 4.14551 -37.8516 4.14551c-54.9287 0 -96.9854 -30.0391 -117.619 -75.0303h138.278\nc7.66211 0 13.3613 -7.08203 11.7227 -14.5664l-6.51172 -29.7549c-1.13965 -5.20703 -6.3916 -9.43359 -11.7227 -9.43359v0h-146.593c-1.55176 -13.958 -1.34766 -27.917 -0.137695 -42.2451h134.237c7.68945 0 13.3936 -7.12891 11.708 -14.6309l-6.37305 -28.3604\nc-1.16211 -5.17188 -6.40723 -9.36914 -11.708 -9.36914h-113.689c19.5322 -50.6582 64.6982 -85.4482 121.462 -85.4482c18.0039 0 34.7334 2.97363 45.4258 5.41211c6.58887 1.50391 13.1094 -2.73828 14.4238 -9.36816z\" />\n    <glyph glyph-name=\"pound-sign\" unicode=\"&#xf154;\" horiz-adv-x=\"320\" \nd=\"M308 96c6.62695 0 12 -5.37305 12 -12v-104c0 -6.62695 -5.37305 -12 -12 -12h-296c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h36v128h-28c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h28v66.0391\nc0 73.2188 58.0264 125.961 139.931 125.961c48.6455 0 85.1934 -22.5596 101.575 -34.9277c5.39844 -4.07617 6.35254 -11.8057 2.11914 -17.0811l-28.4932 -35.5137c-3.7998 -4.73535 -10.5371 -5.89746 -15.6875 -2.68457\nc-11.7744 7.34375 -33.9941 18.8486 -57.6523 18.8486c-37.2305 0 -61.792 -24.8193 -61.792 -57.0859v-63.5557h84c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-84v-126.848h122.505v50.8477c0 6.62695 5.37305 12 12 12h45.4951z\" />\n    <glyph glyph-name=\"dollar-sign\" unicode=\"&#xf155;\" horiz-adv-x=\"288\" \nd=\"M209.2 214.6c57.8994 -16.8994 94 -80.0996 72.5 -141.699c-15.4004 -44.1006 -59.1006 -71.8008 -105.7 -72.7002v-48.2002c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v48c-31.4004 0.0996094 -62 10.7998 -86.5 30\nc-7.90039 6.09961 -8.90039 17.5996 -1.7998 24.5l34.7998 34c5.2002 5.09961 13.4004 6.09961 19.5 2c10 -6.7998 22 -10.5 34.2002 -10.5h66.2998c16.2998 0 29.5 13.2002 29.5 29.5c0 13 -8.7002 24.5996 -21.2002 28.2998l-102.5 30\nc-44.3994 13 -79.5996 50.5 -83.7998 96.6006c-5.90039 64.8994 45.2998 119.6 109 119.6h2.5v48c0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-48c31.4004 -0.0996094 62 -10.7998 86.5 -30c7.90039 -6.09961 8.90039 -17.5996 1.7998 -24.5l-34.7998 -34\nc-5.2002 -5.09961 -13.4004 -6.09961 -19.5 -2c-10 6.7998 -22 10.5 -34.2002 10.5h-66.2998c-16.2998 0 -29.5 -13.2002 -29.5 -29.5c0 -13 8.7002 -24.7002 21.2002 -28.2998z\" />\n    <glyph glyph-name=\"rupee-sign\" unicode=\"&#xf156;\" horiz-adv-x=\"320\" \nd=\"M308 352h-72.9424c5.97266 -9.75391 10.7666 -20.459 14.252 -32h58.6904c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-52.8105c-7.1748 -74.5107 -61.8193 -125.566 -138.318 -127.906l150.882 -139.275\nc8.02734 -7.41016 2.78516 -20.8184 -8.13867 -20.8184h-82.5625c-2.58984 0 -6.23535 1.42578 -8.13867 3.18164l-165.052 152.356c-2.46094 2.27148 -3.86133 5.46875 -3.86133 8.81836v53.0117c0 6.62695 5.37305 12 12 12h84c41.7959 0 68.54 22.5459 74.7568 58.6318\nh-158.757c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h146.25c-12.709 17.2939 -33.6621 27.252 -60.9697 27.252h-85.2803c-6.62695 0 -12 5.37305 -12 12v44.748c0 6.62695 5.37305 12 12 12h296c6.62695 0 12 -5.37305 12 -12v-40\nc0 -6.62695 -5.37305 -12 -12 -12z\" />\n    <glyph glyph-name=\"yen-sign\" unicode=\"&#xf157;\" horiz-adv-x=\"384\" \nd=\"M351.2 416c9.09961 0 14.8994 -9.7002 10.5996 -17.5996l-80.0996 -150.4h58.2998c6.59961 0 12 -5.40039 12 -12v-32c0 -6.59961 -5.40039 -12 -12 -12h-88.2002l-19.7998 -37.2002v-26.7998h108c6.59961 0 12 -5.40039 12 -12v-32c0 -6.59961 -5.40039 -12 -12 -12\nh-108v-92c0 -6.59961 -5.40039 -12 -12 -12h-56c-6.59961 0 -12 5.40039 -12 12v92h-108c-6.59961 0 -12 5.40039 -12 12v32c0 6.59961 5.40039 12 12 12h108v26.7998l-19.7998 37.2002h-88.2002c-6.59961 0 -12 5.40039 -12 12v32c0 6.59961 5.40039 12 12 12h58.2998\nl-80.0996 150.4c-4.2002 7.89941 1.5 17.5996 10.5996 17.5996h65.2002c4.59961 0 8.7998 -2.59961 10.7998 -6.7002l55.4004 -113.2c14.5 -34.6992 27.0996 -71.8994 27.0996 -71.8994h1.2998s12.6006 37.2002 27.1006 71.8994l55.3994 113.2\nc2 4.10059 6.2002 6.7002 10.8008 6.7002h65.2998z\" />\n    <glyph glyph-name=\"ruble-sign\" unicode=\"&#xf158;\" horiz-adv-x=\"384\" \nd=\"M239.36 128h-92.8008v-32h161.44c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-161.44v-52c0 -6.62695 -5.37305 -12 -12 -12h-58.5596c-6.62695 0 -12 5.37305 -12 12v52h-52c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h52\nv32h-52c-6.62695 0 -12 5.37305 -12 12v45.3682c0 6.62695 5.37305 12 12 12h52v206.632c0 6.62695 5.37305 12 12 12h163.36c85.1201 0 144.64 -57.5996 144.64 -143.071c0 -85.4707 -59.5195 -144.929 -144.64 -144.929zM146.56 347.252v-149.884h77.4404\nc48 0 76.1602 29.7285 76.1602 75.5605c0 45.2129 -28.1602 74.3232 -74.8799 74.3232h-78.7207z\" />\n    <glyph glyph-name=\"won-sign\" unicode=\"&#xf159;\" horiz-adv-x=\"576\" \nd=\"M564 256h-62.7002l-7.39941 -32h70.0996c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-84.9004l-42.0996 -182.7c-1.2998 -5.39941 -6.09961 -9.2998 -11.7002 -9.2998h-56.7998c-5.59961 0 -10.4004 3.90039 -11.7002 9.2998l-42.3994 182.7\nh-55.1006l-42.2998 -182.7c-1.2998 -5.39941 -6.09961 -9.2998 -11.7002 -9.2998h-56.7998c-5.59961 0 -10.5 3.90039 -11.7002 9.40039l-40.8994 182.6h-83.9004c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h69.5l-7.2002 32h-62.2998\nc-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h48l-18.0996 80.7002c-1.7002 7.5 4 14.5996 11.6992 14.5996h42.1006c5.7002 0 10.7002 -4 11.7998 -9.59961l17.5 -85.7002h108.7l20 86c1.2998 5.5 6.09961 9.2998 11.7002 9.2998h44\nc5.59961 0 10.3994 -3.7998 11.6992 -9.2998l19.7002 -86h109.9l14.3994 85.7998c1.10059 5.5 6 9.5 11.7002 9.5h46.1006c7.69922 0 13.3994 -7.2002 11.6992 -14.7002l-18.5996 -80.5996h48c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12zM183.8 106\nl12.6006 54h-38.8008l11 -54c5.10059 -25.2002 6.80078 -47.2002 6.80078 -47.2002h1.09961c0.5 0 1.09961 21.4004 7.2998 47.2002zM211.3 224l7.5 32h-80.7998l6.5 -32h66.7998zM274.2 224h25.3994l-2 8.59961c-1.89941 8 -3.5 16 -4.7998 23.4004h-11.7998\nc-1.2998 -7.40039 -2.90039 -15.4004 -4.7998 -23.4004zM405.1 106l11.5 54h-39.0996l12.4004 -54c6.19922 -25.7998 6.69922 -47.2002 7.2998 -47.2002h1.09961s1.7002 22 6.7998 47.2002zM430.3 224l6.90039 32h-81.6006l7.30078 -32h67.3994z\" />\n    <glyph glyph-name=\"file\" unicode=\"&#xf15b;\" horiz-adv-x=\"384\" \nd=\"M224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136zM384 326.1v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7l97.9004 -98\nc4.5 -4.5 7 -10.5996 7 -16.9004z\" />\n    <glyph glyph-name=\"file-alt\" unicode=\"&#xf15c;\" horiz-adv-x=\"384\" \nd=\"M224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136zM288 76v8c0 6.59961 -5.40039 12 -12 12h-168c-6.59961 0 -12 -5.40039 -12 -12v-8\nc0 -6.59961 5.40039 -12 12 -12h168c6.59961 0 12 5.40039 12 12zM288 140v8c0 6.59961 -5.40039 12 -12 12h-168c-6.59961 0 -12 -5.40039 -12 -12v-8c0 -6.59961 5.40039 -12 12 -12h168c6.59961 0 12 5.40039 12 12zM288 212c0 6.59961 -5.40039 12 -12 12h-168\nc-6.59961 0 -12 -5.40039 -12 -12v-8c0 -6.59961 5.40039 -12 12 -12h168c6.59961 0 12 5.40039 12 12v8zM384 326.1v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7l97.9004 -98c4.5 -4.5 7 -10.5996 7 -16.9004z\" />\n    <glyph glyph-name=\"sort-alpha-down\" unicode=\"&#xf15d;\" horiz-adv-x=\"448\" \nd=\"M176 96c14.2197 0 21.3496 -17.2598 11.3301 -27.3096l-80 -96c-2.58691 -2.58496 -7.65332 -4.68262 -11.3105 -4.68262c-3.65625 0 -8.72266 2.09766 -11.3096 4.68262l-80 96c-10.0703 10.0693 -2.90039 27.3096 11.29 27.3096h48v304c0 8.83203 7.16797 16 16 16h32\nc8.83203 0 16 -7.16797 16 -16v-304h48zM416 160c8.83203 0 16 -7.16797 16 -16v-17.6299v-0.00292969c0 -7.93262 -4.81152 -18.6475 -10.7402 -23.917l-61.2598 -70.4502h56c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-128\nc-8.83203 0 -16 7.16797 -16 16v17.6299v0.00292969c0 7.93262 4.81152 18.6475 10.7402 23.917l61.2598 70.4502h-56c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h128zM447.06 245.38c0.514648 -1.44043 0.931641 -3.85059 0.931641 -5.37988\nc0 -8.82715 -7.16406 -15.9951 -15.9912 -16h-24.8398h-0.0449219c-6.42773 0 -13.249 4.96387 -15.2256 11.0801l-4.40918 12.9199h-71l-4.4209 -12.9199c-1.97559 -6.11621 -8.79688 -11.0801 -15.2246 -11.0801h-0.00488281h-24.8301\nc-8.82715 0.00488281 -15.9912 7.17285 -15.9912 16c0 1.5293 0.416992 3.93945 0.931641 5.37988l59.2695 160c2.09277 5.8623 8.84375 10.6201 15.0684 10.6201h0.00195312h41.4395h0.00195312c6.22461 0 12.9756 -4.75781 15.0684 -10.6201zM335.61 304h32.7793\nl-16.3896 48z\" />\n    <glyph glyph-name=\"sort-alpha-up\" unicode=\"&#xf15e;\" horiz-adv-x=\"448\" \nd=\"M16 288c-14.2197 0 -21.3496 17.2598 -11.3096 27.3096l80 96c2.58594 2.58496 7.65332 4.68262 11.3096 4.68262s8.72363 -2.09766 11.3096 -4.68262l80 -96c10.0703 -10.0693 2.90039 -27.3096 -11.3096 -27.3096h-48v-304c0 -8.83203 -7.16797 -16 -16 -16h-32\nc-8.83203 0 -16 7.16797 -16 16v304h-48zM416 160c8.83203 0 16 -7.16797 16 -16v-17.6299v-0.00292969c0 -7.93262 -4.81152 -18.6475 -10.7402 -23.917l-61.2598 -70.4502h56c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-128\nc-8.83203 0 -16 7.16797 -16 16v17.6299v0.00292969c0 7.93262 4.81152 18.6475 10.7402 23.917l61.2598 70.4502h-56c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h128zM447.06 245.38c0.514648 -1.44043 0.931641 -3.85059 0.931641 -5.37988\nc0 -8.82715 -7.16406 -15.9951 -15.9912 -16h-24.8398h-0.0449219c-6.42773 0 -13.249 4.96387 -15.2256 11.0801l-4.40918 12.9199h-71l-4.4209 -12.9199c-1.97559 -6.11621 -8.79688 -11.0801 -15.2246 -11.0801h-0.00488281h-24.8301\nc-8.82715 0.00488281 -15.9912 7.17285 -15.9912 16c0 1.5293 0.416992 3.93945 0.931641 5.37988l59.2695 160c2.09277 5.8623 8.84375 10.6201 15.0684 10.6201h0.00195312h41.4395h0.00195312c6.22461 0 12.9756 -4.75781 15.0684 -10.6201zM335.61 304h32.7793\nl-16.3896 48z\" />\n    <glyph glyph-name=\"sort-amount-down\" unicode=\"&#xf160;\" \nd=\"M304 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-64c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h64zM176 96c14.2197 0 21.3496 -17.2598 11.3301 -27.3096l-80 -96\nc-2.58691 -2.58496 -7.65332 -4.68262 -11.3105 -4.68262c-3.65625 0 -8.72266 2.09766 -11.3096 4.68262l-80 96c-10.0801 10.0693 -2.90039 27.3096 11.29 27.3096h48v304c0 8.83203 7.16797 16 16 16h32c8.83203 0 16 -7.16797 16 -16v-304h48zM432 288\nc8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-192c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h192zM368 160c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-128c-8.83203 0 -16 7.16797 -16 16v32\nc0 8.83203 7.16797 16 16 16h128zM496 416c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-256c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h256z\" />\n    <glyph glyph-name=\"sort-amount-up\" unicode=\"&#xf161;\" \nd=\"M304 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-64c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h64zM16 288c-14.2305 0 -21.3496 17.2598 -11.3096 27.3096l80 96c2.58594 2.58496 7.65332 4.68262 11.3096 4.68262\ns8.72363 -2.09766 11.3096 -4.68262l80 -96c10.0703 -10.0693 2.90039 -27.3096 -11.3096 -27.3096h-48v-304c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v304h-48zM432 288c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16\nh-192c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h192zM368 160c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-128c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h128zM496 416c8.83203 0 16 -7.16797 16 -16v-32\nc0 -8.83203 -7.16797 -16 -16 -16h-256c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h256z\" />\n    <glyph glyph-name=\"sort-numeric-down\" unicode=\"&#xf162;\" horiz-adv-x=\"448\" \nd=\"M304 352c-8.82422 0.0078125 -15.9863 7.17578 -15.9863 16c0 2.08984 0.759766 5.30176 1.69629 7.16992l16 32c2.44141 4.87012 8.84277 8.8252 14.29 8.83008h48c8.83203 0 16 -7.16797 16 -16v-112h16c8.83203 0 16 -7.16797 16 -16v-32\nc0 -8.83203 -7.16797 -16 -16 -16h-96c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h16v64h-16zM330.15 189.09c53.4502 14.25 101.85 -25.8799 101.869 -77.0898v-10.7695c0 -70.3906 -28.25 -107.24 -86.25 -132\nc-8.36914 -3.58008 -18.0293 1.2793 -20.8994 9.90918l-9.90039 20c-2.62012 7.87012 0.610352 16.9404 8.18066 20.3408c6.2793 2.71387 15.6201 8.49805 20.8496 12.9092c-47.6396 4.76074 -83.0996 51.4805 -68.8496 102.53c6.80762 23.4512 31.4473 47.7197 55 54.1699z\nM352 92c11.04 0 20 8.95996 20 20s-8.95996 20 -20 20s-20 -8.95996 -20 -20s8.95996 -20 20 -20zM176 96c14.2197 0 21.3496 -17.2598 11.3301 -27.3096l-80 -96c-2.58691 -2.58496 -7.65332 -4.68262 -11.3105 -4.68262c-3.65625 0 -8.72266 2.09766 -11.3096 4.68262\nl-80 96c-10.0703 10.0693 -2.90039 27.3096 11.29 27.3096h48v304c0 8.83203 7.16797 16 16 16h32c8.83203 0 16 -7.16797 16 -16v-304h48z\" />\n    <glyph glyph-name=\"sort-numeric-up\" unicode=\"&#xf163;\" horiz-adv-x=\"448\" \nd=\"M330.17 189.09c53.4502 14.25 101.83 -25.8799 101.85 -77.0898v-10.7695c0 -70.3906 -28.25 -107.24 -86.25 -132c-8.36914 -3.58008 -18.0293 1.2793 -20.8994 9.90918l-9.90039 20c-2.62012 7.87012 0.610352 16.9404 8.18066 20.3408\nc6.2793 2.71387 15.6201 8.49805 20.8496 12.9092c-47.6396 4.76074 -83.0996 51.4805 -68.8301 102.53c6.80762 23.4512 31.4482 47.7197 55 54.1699zM352 92c11.04 0 20 8.95996 20 20s-8.95996 20 -20 20s-20 -8.95996 -20 -20s8.95996 -20 20 -20zM304 352\nc-8.82422 0.0078125 -15.9863 7.17578 -15.9863 16c0 2.08984 0.759766 5.30176 1.69629 7.16992l16 32c2.44141 4.87012 8.84277 8.8252 14.29 8.83008h48c8.83203 0 16 -7.16797 16 -16v-112h16c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-96\nc-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h16v64h-16zM107.31 411.31l80 -96c10.0703 -10.0693 2.90039 -27.3096 -11.3096 -27.3096h-48v-304c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v304h-48\nc-14.2197 0 -21.3496 17.2598 -11.3096 27.3096l80 96c2.58594 2.58496 7.65332 4.68262 11.3096 4.68262s8.72363 -2.09766 11.3096 -4.68262z\" />\n    <glyph glyph-name=\"thumbs-up\" unicode=\"&#xf164;\" \nd=\"M104 224c13.2549 0 24 -10.7451 24 -24v-240c0 -13.2549 -10.7451 -24 -24 -24h-80c-13.2549 0 -24 10.7451 -24 24v240c0 13.2549 10.7451 24 24 24h80zM64 -24c13.2549 0 24 10.7451 24 24s-10.7451 24 -24 24s-24 -10.7451 -24 -24s10.7451 -24 24 -24zM384 366.548\nc0 -42.416 -25.9697 -66.208 -33.2773 -94.5479h101.724c33.3965 0 59.3965 -27.7461 59.5527 -58.0977c0.0839844 -17.9385 -7.5459 -37.249 -19.4395 -49.1973l-0.109375 -0.110352c9.83594 -23.3369 8.23633 -56.0371 -9.30859 -79.4688\nc8.68164 -25.8945 -0.0683594 -57.7041 -16.3818 -74.7568c4.29785 -17.5977 2.24414 -32.5752 -6.14746 -44.6318c-20.4102 -29.3242 -70.9961 -29.7373 -113.773 -29.7373l-2.84473 0.000976562c-48.2871 0.0166016 -87.8057 17.5977 -119.561 31.7246\nc-15.957 7.09961 -36.8203 15.8877 -52.6504 16.1787c-6.54004 0.120117 -11.7832 5.45703 -11.7832 11.998v213.77c0 3.2002 1.28223 6.27148 3.55762 8.52148c39.6143 39.1436 56.6484 80.5869 89.1172 113.11c14.8037 14.832 20.1885 37.2363 25.3936 58.9023\nc4.44629 18.501 13.749 57.7939 33.9316 57.7939c24 0 72 -8 72 -81.4521z\" />\n    <glyph glyph-name=\"thumbs-down\" unicode=\"&#xf165;\" \nd=\"M0 392c0 13.2549 10.7451 24 24 24h80c13.2549 0 24 -10.7451 24 -24v-240c0 -13.2549 -10.7451 -24 -24 -24h-80c-13.2549 0 -24 10.7451 -24 24v240zM40 192c0 -13.2549 10.7451 -24 24 -24s24 10.7451 24 24s-10.7451 24 -24 24s-24 -10.7451 -24 -24zM312 -64\nc-20.1826 0 -29.4854 39.293 -33.9307 57.7949c-5.20605 21.666 -10.5889 44.0703 -25.3936 58.9023c-32.4688 32.5234 -49.5029 73.9668 -89.1172 113.11c-1.96387 1.94141 -3.55762 5.75879 -3.55762 8.52051v0.000976562v213.77\nc0 6.54102 5.24316 11.8779 11.7832 11.998c15.8311 0.290039 36.6934 9.0791 52.6504 16.1787c31.7549 14.127 71.2744 31.708 119.561 31.7246h2.84375c42.7773 0 93.3633 -0.413086 113.774 -29.7373c8.3916 -12.0566 10.4453 -27.0342 6.14746 -44.6318\nc16.3125 -17.0527 25.0635 -48.8633 16.3818 -74.7568c17.5439 -23.4316 19.1436 -56.1318 9.30859 -79.4688l0.109375 -0.110352c11.8936 -11.9492 19.5234 -31.2588 19.4395 -49.1973c-0.15625 -30.3516 -26.1572 -58.0977 -59.5527 -58.0977h-101.725\nc7.30762 -28.3398 33.2773 -52.1318 33.2773 -94.5479c0 -73.4521 -48 -81.4521 -72 -81.4521z\" />\n    <glyph glyph-name=\"female\" unicode=\"&#xf182;\" horiz-adv-x=\"256\" \nd=\"M128 448c35.3457 0 64 -28.6543 64 -64s-28.6543 -64 -64 -64s-64 28.6543 -64 64s28.6543 64 64 64zM247.283 93.8213c3.78809 -15.1504 -7.69238 -29.8213 -23.2832 -29.8213h-56v-104c0 -13.2549 -10.7451 -24 -24 -24h-32c-13.2549 0 -24 10.7451 -24 24v104h-56\nc-15.6172 0 -27.0654 14.6953 -23.2832 29.8213l48 192c2.50879 10.0342 12.9395 18.1787 23.2832 18.1787h11.3604c23.6895 -10.8936 50.5684 -10.4434 73.2793 0h11.3604c10.3438 0 20.7744 -8.14453 23.2832 -18.1787z\" />\n    <glyph glyph-name=\"male\" unicode=\"&#xf183;\" horiz-adv-x=\"192\" \nd=\"M96 448c35.3457 0 64 -28.6543 64 -64s-28.6543 -64 -64 -64s-64 28.6543 -64 64s28.6543 64 64 64zM144 304c26.5098 0 48 -21.4902 48 -48v-136c0 -13.2549 -10.7451 -24 -24 -24h-16v-136c0 -13.2549 -10.7451 -24 -24 -24h-64c-13.2549 0 -24 10.7451 -24 24v136h-16\nc-13.2549 0 -24 10.7451 -24 24v136c0 26.5098 21.4902 48 48 48h11.3604c23.6895 -10.8936 50.5684 -10.4434 73.2793 0h11.3604z\" />\n    <glyph glyph-name=\"sun\" unicode=\"&#xf185;\" \nd=\"M256 288c52.9004 0 96 -43.0996 96 -96s-43.0996 -96 -96 -96s-96 43.0996 -96 96s43.0996 96 96 96zM502.4 207.5c12.7998 -6.40039 12.7998 -24.5996 -0.200195 -31.0996l-94.7002 -47.3008l33.5 -100.399c4.59961 -13.5 -8.2998 -26.4004 -21.9004 -21.9004\nl-100.399 33.5l-47.2998 -94.7002c-6.40039 -12.7998 -24.6006 -12.7998 -31 0l-47.3008 94.7002l-100.399 -33.5c-13.5 -4.59961 -26.4004 8.2998 -21.9004 21.9004l33.5 100.5l-94.7002 47.2998c-12.7998 6.40039 -12.7998 24.5996 0 31l94.7002 47.4004l-33.5 100.399\nc-4.59961 13.5 8.2998 26.4004 21.9004 21.9004l100.5 -33.5l47.2998 94.7002c6.40039 12.7998 24.5996 12.7998 31 0l47.4004 -94.8008l100.399 33.5c13.5 4.60059 26.4004 -8.2998 21.9004 -21.8994l-33.5 -100.4zM346.5 101.5c49.9004 49.9004 49.9004 131.1 0 181\ns-131.1 49.9004 -181 0s-49.9004 -131.1 0 -181s131.1 -49.9004 181 0z\" />\n    <glyph glyph-name=\"moon\" unicode=\"&#xf186;\" \nd=\"M283.211 -64c-141.489 0 -256 114.691 -256 256c0 141.489 114.691 256 256 256c13.0176 -0.00195312 33.9727 -1.91895 46.7754 -4.28027c11.0059 -2.0332 13.4414 -16.7178 3.75586 -22.2295c-62.8359 -35.7588 -101.498 -102.172 -101.498 -174.395\nc0 -125.378 114.059 -220.607 238.262 -196.954c10.9229 2.08008 18.6299 -10.6416 11.5625 -19.3496c-47.7783 -58.8672 -119.896 -94.792 -198.857 -94.792z\" />\n    <glyph glyph-name=\"archive\" unicode=\"&#xf187;\" \nd=\"M32 0v288h448v-288c0 -17.7002 -14.2998 -32 -32 -32h-384c-17.7002 0 -32 14.2998 -32 32zM192 212v-8c0 -6.59961 5.40039 -12 12 -12h104c6.59961 0 12 5.40039 12 12v8c0 6.59961 -5.40039 12 -12 12h-104c-6.59961 0 -12 -5.40039 -12 -12zM480 416\nc17.7002 0 32 -14.2998 32 -32v-48c0 -8.7998 -7.2002 -16 -16 -16h-480c-8.7998 0 -16 7.2002 -16 16v48c0 17.7002 14.2998 32 32 32h448z\" />\n    <glyph glyph-name=\"bug\" unicode=\"&#xf188;\" \nd=\"M511.988 159.1c-0.478516 -17.4297 -15.2168 -31.0996 -32.6533 -31.0996h-55.335v-16c0 -21.8643 -4.88184 -42.584 -13.5996 -61.1445l60.2275 -60.2285c12.4961 -12.4971 12.4961 -32.7578 0 -45.2549c-12.498 -12.4971 -32.7588 -12.4961 -45.2559 0\nl-54.7363 54.7363c-24.75 -20.0732 -56.2852 -32.1084 -90.6357 -32.1084v244c0 6.62695 -5.37305 12 -12 12h-24c-6.62695 0 -12 -5.37305 -12 -12v-244c-34.3506 0 -65.8857 12.0352 -90.6357 32.1084l-54.7363 -54.7363c-12.498 -12.4971 -32.7588 -12.4961 -45.2559 0\nc-12.4961 12.4971 -12.4961 32.7578 0 45.2549l60.2275 60.2285c-8.71777 18.5605 -13.5996 39.2803 -13.5996 61.1445v16h-55.334c-17.4355 0 -32.1748 13.6699 -32.6533 31.0996c-0.49707 18.084 14.0156 32.9004 31.9873 32.9004h56v58.7451l-46.6279 46.6279\nc-12.4961 12.4971 -12.4961 32.7578 0 45.2549c12.498 12.4971 32.7578 12.4971 45.2559 0l54.627 -54.6279h229.489l54.627 54.627c12.498 12.4971 32.7578 12.4971 45.2559 0c12.4961 -12.4971 12.4961 -32.7578 0 -45.2549l-46.627 -46.627v-58.7451h56\nc17.9717 0 32.4844 -14.8164 31.9883 -32.9004zM257 448c61.8564 0 112 -50.1436 112 -112h-224c0 61.8564 50.1436 112 112 112z\" />\n    <glyph glyph-name=\"caret-square-left\" unicode=\"&#xf191;\" horiz-adv-x=\"448\" \nd=\"M400 -32h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h352c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48zM259.515 323.515l-123.029 -123.029c-4.68652 -4.68652 -4.68652 -12.2842 0 -16.9717l123.028 -123.028\nc7.56055 -7.56055 20.4854 -2.20605 20.4854 8.48438v246.06c0.000976562 10.6904 -12.9248 16.0449 -20.4844 8.48535z\" />\n    <glyph glyph-name=\"dot-circle\" unicode=\"&#xf192;\" \nd=\"M256 440c136.967 0 248 -111.033 248 -248s-111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248zM336 192c0 44.1123 -35.8877 80 -80 80s-80 -35.8877 -80 -80s35.8877 -80 80 -80s80 35.8877 80 80z\" />\n    <glyph glyph-name=\"wheelchair\" unicode=\"&#xf193;\" \nd=\"M496.101 62.3311l14.2275 -28.6631c3.92871 -7.91504 0.697266 -17.5156 -7.21777 -21.4453l-65.4658 -32.8857c-16.0488 -7.9668 -35.5557 -1.19434 -43.1885 15.0547l-62.7773 133.608h-139.679c-15.9248 0 -29.4258 11.71 -31.6787 27.4746\nc-33.8887 237.218 -31.9414 222.481 -32.3213 228.525c0 36.3584 30.3184 65.6348 67.0518 63.9287c33.2715 -1.54492 60.0479 -28.9043 60.9248 -62.2012c0.868164 -32.9326 -23.1514 -60.4229 -54.6074 -65.0381l4.66992 -32.6904h129.961c8.83691 0 16 -7.16309 16 -16\nv-32c0 -8.83691 -7.16309 -16 -16 -16h-120.818l4.57227 -32h132.246c11.2168 0 24.1924 -8.24023 28.9619 -18.3916l57.5146 -122.407l36.1787 18.3486c7.91504 3.92871 17.5166 0.697266 21.4453 -7.21777zM311.358 96l25.752 -54.8076\nc-27.3047 -61.8848 -89.2402 -105.192 -161.11 -105.192c-97.0469 0 -176 78.9531 -176 176c0 74.0371 45.9561 137.536 110.836 163.489c2.64453 -18.4736 5.77637 -40.3682 9.48828 -66.333c-33.6299 -19.3477 -56.3242 -55.6514 -56.3242 -97.1562\nc0 -61.7568 50.2432 -112 112 -112c56.3242 0 103.064 41.7959 110.852 96h24.5068z\" />\n    <glyph glyph-name=\"lira-sign\" unicode=\"&#xf195;\" horiz-adv-x=\"384\" \nd=\"M371.994 192c6.78613 0 12.2578 -5.62598 11.9971 -12.4082c-5.15332 -133.758 -94.3174 -211.592 -228.408 -211.592h-79.583c-6.62695 0 -12 5.37305 -12 12v193.442l-49.3975 -10.9775c-7.49316 -1.66602 -14.6025 4.03711 -14.6025 11.7139v40.9766\nc0 5.31348 4.20996 10.5615 9.39746 11.7139l54.6025 12.1338v30.4395l-49.3975 -10.9775c-7.49316 -1.66602 -14.6025 4.03711 -14.6025 11.7139v40.9766c0 5.31348 4.20996 10.5615 9.39746 11.7139l54.6025 12.1338v68.9971c0 6.62695 5.37305 12 12 12h56\nc6.62695 0 12 -5.37305 12 -12v-51.2188l129.397 28.7539c7.49316 1.66602 14.6025 -4.03711 14.6025 -11.7139v-40.9756c0 -5.31348 -4.20996 -10.5615 -9.39746 -11.7139l-134.603 -29.9121v-30.4385l129.397 28.7539c7.49316 1.66602 14.6025 -4.03711 14.6025 -11.7139\nv-40.9766c0 -5.31348 -4.20996 -10.5615 -9.39746 -11.7139l-134.603 -29.9121v-159.219c86.1787 0 168 48 168 148.754c0 6.33398 5.63965 11.2461 11.9746 11.2461h48.0195z\" />\n    <glyph glyph-name=\"space-shuttle\" unicode=\"&#xf197;\" horiz-adv-x=\"640\" \nd=\"M592.604 239.756c29.6787 -13.9111 47.3965 -31.7637 47.3965 -47.7559s-17.7178 -33.8447 -47.3965 -47.7559c-32.8682 -15.4082 -76.8262 -24.2441 -120.604 -24.2441h-285.674c-4.95215 -6.55469 -10.585 -11.9775 -16.7197 -16h206.394\nc-146.843 -30.2529 -156.597 -136 -279.997 -136h-0.00292969v128h-16v-128c-26.5098 0 -48 28.6543 -48 64v64c-23.1807 0 -32 10.0166 -32 24v40c0 13.9678 8.80273 24 32 24v16c-23.1807 0 -32 10.0166 -32 24v40c0 13.9678 8.80273 24 32 24v64\nc0 35.3457 21.4902 64 48 64v-128h16v128h0.00292969c123.4 0 133.154 -105.747 279.997 -136h-206.393c6.13477 -4.02246 11.7676 -9.44531 16.7197 -16h285.673c43.7773 0 87.7354 -8.83594 120.604 -24.2441zM488 152c31.9424 0 31.9092 80 0 80\nc-4.41602 0 -8 -3.58398 -8 -8v-64c0 -4.41602 3.58398 -8 8 -8z\" />\n    <glyph glyph-name=\"envelope-square\" unicode=\"&#xf199;\" horiz-adv-x=\"448\" \nd=\"M400 416c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h352zM178.117 185.896c10.5156 -7.66895 31.3799 -26.1133 45.8828 -25.8955\nc14.4912 -0.225586 35.3828 18.2393 45.8828 25.8936c90.6836 65.8145 89.7461 65.9697 114.117 84.9385v25.167c0 13.2549 -10.7451 24 -24 24h-272c-13.2549 0 -24 -10.7451 -24 -24v-25.167c24.3525 -18.9541 23.4287 -19.1201 114.117 -84.9365zM384 230.225\nc-13.958 -10.793 -33.3252 -25.2334 -95.2832 -70.1982c-13.6826 -9.98438 -37.833 -32.1592 -64.7197 -32.0254c-26.7188 -0.134766 -50.5322 21.6689 -64.6943 32.0098c-61.9736 44.9785 -81.3447 59.4199 -95.3027 70.2139v-142.225c0 -13.2549 10.7451 -24 24 -24h272\nc13.2549 0 24 10.7451 24 24v142.225z\" />\n    <glyph glyph-name=\"university\" unicode=\"&#xf19c;\" \nd=\"M496 320v-16c0 -4.41602 -3.58398 -8 -8 -8h-24v-12c0 -6.62695 -5.37305 -12 -12 -12h-392c-6.62695 0 -12 5.37305 -12 12v12h-24c-4.41602 0 -8 3.58398 -8 8v16c0 2.95215 2.21387 6.26367 4.94141 7.3916l232 88\nc0.810547 0.335938 2.18066 0.608398 3.05859 0.608398s2.24805 -0.272461 3.05859 -0.608398l232 -88c2.72754 -1.12793 4.94141 -4.43945 4.94141 -7.3916zM472 16c13.2549 0 24 -10.7451 24 -24v-16c0 -4.41602 -3.58398 -8 -8 -8h-464c-4.41602 0 -8 3.58398 -8 8v16\nc0 13.2549 10.7451 24 24 24h432zM96 256h64v-192h64v192h64v-192h64v192h64v-192h36c6.62695 0 12 -5.37305 12 -12v-20h-416v20c0 6.62695 5.37305 12 12 12h36v192z\" />\n    <glyph glyph-name=\"graduation-cap\" unicode=\"&#xf19d;\" horiz-adv-x=\"640\" \nd=\"M622.34 294.8c23.5498 -7.24023 23.5498 -38.3594 0 -45.5996l-278.95 -85.7002c-20.3496 -6.25 -37.7295 -2.78027 -46.79 0l-195.569 60.0898c-12.25 -8.41992 -19.9307 -21.7002 -20.6904 -36.7197c9.19043 -5.62012 15.6602 -15.2998 15.6602 -26.8701\nc0 -10.7803 -5.67969 -19.8496 -13.8604 -25.6504l25.5303 -114.88c2.21973 -9.98926 -5.37988 -19.4697 -15.6201 -19.4697h-56.1094c-10.2305 0 -17.8301 9.48047 -15.6104 19.4697l25.5303 114.88c-8.18066 5.80078 -13.8604 14.8701 -13.8604 25.6504\nc0 11.8896 6.78027 21.8496 16.4102 27.3701c0.649414 17.6201 7.20996 33.71 17.8799 46.8994l-48.6299 14.9404c-23.54 7.23047 -23.54 38.3604 0 45.5898l278.95 85.7002c15.1895 4.66992 31.5898 4.66992 46.79 0zM352.79 132.91l145.03 44.5596l14.1797 -113.47\nc0 -35.3496 -85.96 -64 -192 -64s-192 28.6504 -192 64l14.1797 113.46l145.021 -44.5498c12.75 -3.91992 37.0596 -8.75977 65.5898 0z\" />\n    <glyph glyph-name=\"language\" unicode=\"&#xf1ab;\" horiz-adv-x=\"640\" \nd=\"M152.1 211.8l10.9004 -37.5h-38.0996l11.0996 37.5c3.5 12.1006 7.7998 33.2002 7.7998 33.2002h0.5s4.2998 -21.0996 7.7998 -33.2002zM616 352c13.2998 0 24 -10.7002 24 -24v-272c0 -13.2998 -10.7002 -24 -24 -24h-280v320h280zM592 232v16\nc0 6.59961 -5.40039 12 -12 12h-64v16c0 6.59961 -5.40039 12 -12 12h-16c-6.59961 0 -12 -5.40039 -12 -12v-16h-64c-6.59961 0 -12 -5.40039 -12 -12v-16c0 -6.59961 5.40039 -12 12 -12h114.3c-6.2002 -14.2998 -16.5 -29 -30 -43.2002\nc-6.59961 6.90039 -12.3994 13.9004 -17.3994 20.9004c-3.60059 5.09961 -10.6006 6.59961 -16 3.39941l-7.30078 -4.2998l-6.5 -3.89941c-5.89941 -3.5 -7.69922 -11.4004 -3.69922 -17.1006c6.09961 -8.7002 13.0996 -17.2998 21 -25.7002\nc-8.10059 -6.2998 -16.8008 -12.2998 -26.1006 -18c-5.59961 -3.39941 -7.39941 -10.5996 -4.2002 -16.1992l7.90039 -13.9004c3.40039 -5.90039 10.9004 -7.7998 16.7002 -4.2998c12.7002 7.7998 24.5 16.2002 35.3994 24.8994\nc10.9004 -8.7998 22.8008 -17.0996 35.4004 -24.8994c5.7998 -3.5 13.2998 -1.60059 16.7002 4.2998l7.89941 13.9004c3.2002 5.69922 1.40039 12.7998 -4.09961 16.1992c-9 5.5 -17.7002 11.6006 -26.0996 18c21 22.5 35.7998 46.3008 42.6992 69.9004h11.4004\nc6.59961 0 12 5.40039 12 12zM0 328c0 13.2998 10.7002 24 24 24h280v-320h-280c-13.2998 0 -24 10.7002 -24 24v272zM58.9004 111.9c-2.60059 -7.80078 3.19922 -15.9004 11.3994 -15.9004h22.9004c5.2998 0 10 3.59961 11.5 8.7002l9.09961 31.7998h60.2002\nl9.40039 -31.9004c1.40137 -4.74316 6.55273 -8.59668 11.5 -8.59961h22.8994c8.2998 0 14 8.09961 11.4004 15.9004l-57.5 169.1c-1.7002 4.7998 -6.2998 8.09961 -11.4004 8.09961h-32.5c-5.2002 0 -9.7002 -3.19922 -11.3994 -8.09961z\" />\n    <glyph glyph-name=\"fax\" unicode=\"&#xf1ac;\" \nd=\"M64 320c17.6699 0 32 -14.3301 32 -32v-320c0 -17.6699 -14.3301 -32 -32 -32h-32c-17.6699 0 -32 14.3301 -32 32v320c0 17.6699 14.3301 32 32 32h32zM480 288c17.6699 0 32 -14.3301 32 -32v-288c0 -17.6699 -14.3301 -32 -32 -32h-320c-17.6699 0 -32 14.3301 -32 32\nv448c0 17.6699 14.3301 32 32 32h242.74c8.49023 0 16.6299 -3.37012 22.6299 -9.37012l45.2598 -45.25c6 -6.00977 9.37012 -14.1396 9.37012 -22.6299v-82.75zM288 16v32c0 8.83984 -7.16016 16 -16 16h-32c-8.83984 0 -16 -7.16016 -16 -16v-32\nc0 -8.83984 7.16016 -16 16 -16h32c8.83984 0 16 7.16016 16 16zM288 144v32c0 8.83984 -7.16016 16 -16 16h-32c-8.83984 0 -16 -7.16016 -16 -16v-32c0 -8.83984 7.16016 -16 16 -16h32c8.83984 0 16 7.16016 16 16zM416 16v32c0 8.83984 -7.16016 16 -16 16h-32\nc-8.83984 0 -16 -7.16016 -16 -16v-32c0 -8.83984 7.16016 -16 16 -16h32c8.83984 0 16 7.16016 16 16zM416 144v32c0 8.83984 -7.16016 16 -16 16h-32c-8.83984 0 -16 -7.16016 -16 -16v-32c0 -8.83984 7.16016 -16 16 -16h32c8.83984 0 16 7.16016 16 16zM432 256v96h-32\nc-8.83984 0 -16 7.16016 -16 16v32h-208v-144h256z\" />\n    <glyph glyph-name=\"building\" unicode=\"&#xf1ad;\" horiz-adv-x=\"448\" \nd=\"M436 -32c6.62695 0 12 -5.37305 12 -12v-20h-448v20c0 6.62695 5.37305 12 12 12h20v456c0 13.2549 10.7451 24 24 24h336c13.2549 0 24 -10.7451 24 -24v-456h20zM128 372v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12v40\nc0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12zM128 276v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12v40c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12zM180 128c6.62695 0 12 5.37305 12 12v40\nc0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40zM256 -32v84c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-84h64zM320 140v40c0 6.62695 -5.37305 12 -12 12h-40\nc-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM320 236v40c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM320 332v40\nc0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12z\" />\n    <glyph glyph-name=\"child\" unicode=\"&#xf1ae;\" horiz-adv-x=\"384\" \nd=\"M120 376c0 39.7646 32.2354 72 72 72s72 -32.2354 72 -72c0 -39.7637 -32.2354 -72 -72 -72s-72 32.2363 -72 72zM374.627 374.627c12.4971 -12.4971 12.4971 -32.7568 0 -45.2539l-94.627 -94.627v-266.746c0 -17.6729 -14.3271 -32 -32 -32h-16\nc-17.6729 0 -32 14.3271 -32 32v112h-16v-112c0 -17.6729 -14.3271 -32 -32 -32h-16c-17.6729 0 -32 14.3271 -32 32v266.746l-94.627 94.626c-12.4971 12.4971 -12.4971 32.7578 0 45.2549c12.4961 12.4971 32.7578 12.4971 45.2539 0l86.627 -86.627h101.491\nl86.6279 86.627c12.4961 12.4971 32.7578 12.4971 45.2539 0z\" />\n    <glyph glyph-name=\"paw\" unicode=\"&#xf1b0;\" \nd=\"M256 224c79.4102 0 192 -122.76 192 -200.25c0 -34.9004 -26.8096 -55.75 -71.7402 -55.75c-48.4102 0 -80.75 25.0801 -120.26 25.0801c-39.1699 0 -71.4199 -25.0801 -120.26 -25.0801c-44.9307 0 -71.7402 20.8496 -71.7402 55.75c0 77.4902 112.59 200.25 192 200.25\nzM108.72 236.61c10.4004 -34.6504 -4.76953 -68.3799 -33.8896 -75.3408c-29.1201 -6.95996 -61.1602 15.4805 -71.5605 50.1309c-10.3994 34.6494 4.77051 68.3799 33.8906 75.3398s61.1602 -15.4805 71.5596 -50.1299zM193.44 257.39\nc-30.9307 -8.14941 -65.6201 20.4502 -77.46 63.8701c-11.8408 43.4199 3.63965 85.2207 34.5791 93.3604c30.9404 8.13965 65.6201 -20.4502 77.46 -63.8701c11.8408 -43.4199 -3.63965 -85.2197 -34.5791 -93.3604zM474.83 286.73\nc29.1201 -6.96094 44.29 -40.6904 33.8896 -75.3408c-10.4102 -34.6494 -42.4395 -57.0898 -71.5596 -50.1299s-44.29 40.6904 -33.8906 75.3398c10.4102 34.6504 42.4404 57.0908 71.5605 50.1309zM318.56 257.39c-30.9395 8.14062 -46.4199 49.9404 -34.5791 93.3604\nc11.8398 43.4199 46.5195 72.0195 77.46 63.8701c30.9395 -8.15039 46.4199 -49.9404 34.5791 -93.3604c-11.8398 -43.4199 -46.5195 -72.0098 -77.46 -63.8701z\" />\n    <glyph glyph-name=\"cube\" unicode=\"&#xf1b2;\" \nd=\"M239.1 441.7c10.9004 4.09961 22.9004 4.09961 33.7002 -0.100586l208 -78c18.7002 -7 31.1006 -24.8994 31.1006 -44.8994v-225.101c0 -18.0996 -10.2002 -34.7998 -26.5 -42.8994l-208 -104c-13.5 -6.7998 -29.4004 -6.7998 -42.9004 0l-208 104\nc-16.2002 8.09961 -26.5 24.7002 -26.5 42.8994v225.101c0 20 12.4004 38 31.0996 45zM256 379.6l-192 -72v-1.09961l192 -78l192 78v1.09961zM288 23.5996l160 80v133.9l-160 -65v-148.9z\" />\n    <glyph glyph-name=\"cubes\" unicode=\"&#xf1b3;\" \nd=\"M488.6 197.8c14.1006 -5.2998 23.4004 -18.7002 23.4004 -33.7002v-110.1c0 -13.5996 -7.7002 -26.0996 -19.9004 -32.2002l-100 -50c-10.0996 -5.09961 -22.0996 -5.09961 -32.1992 0l-103.9 52l-103.9 -52c-10.0996 -5.09961 -22.0996 -5.09961 -32.1992 0l-100 50\nc-12.2002 6.10059 -19.9004 18.6006 -19.9004 32.2002v110.1c0 15 9.2998 28.4004 23.2998 33.7002l96.6006 36.2002v108.5c0 15 9.2998 28.4004 23.3994 33.7002l100 37.5c8.2002 3.09961 17.2002 3.09961 25.2998 0l100 -37.5\nc14.1006 -5.2998 23.4004 -18.7002 23.4004 -33.7002v-108.5zM358 233.2v73.2998l-85 -37v-68.2002zM154 343.9v-0.600586l102 -41.3994l102 41.3994v0.600586l-102 38.1992zM238 52.7998v75.4004l-85 -38.7998v-79.1006zM238 164.8v0.600586l-102 38.1992l-102 -38.1992\nv-0.600586l102 -41.3994zM478 52.7998v75.4004l-85 -38.7998v-79.1006zM478 164.8v0.600586l-102 38.1992l-102 -38.1992v-0.600586l102 -41.3994z\" />\n    <glyph glyph-name=\"recycle\" unicode=\"&#xf1b8;\" \nd=\"M184.561 186.097c3.23242 -13.9971 -12.1221 -24.6348 -24.0674 -17.168l-40.7363 25.4551l-50.8672 -81.4014c-13.2832 -21.2559 2.07031 -48.9824 27.1221 -48.9824h51.9883c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-51.8848\nc-75.334 0 -121.302 83.0479 -81.4082 146.88l50.8223 81.3877l-40.7256 25.4482c-12.0811 7.54688 -8.96582 25.9609 4.87891 29.1582l110.237 25.4502c8.61133 1.9873 17.2012 -3.38086 19.1895 -11.9902zM283.122 369.012\nc-12.2842 19.6543 -41.5449 20.3193 -54.2568 -0.0214844l-17.9609 -28.7432c-3.5127 -5.62012 -10.916 -7.3291 -16.5361 -3.81738l-33.9189 21.1953c-5.62012 3.51172 -7.33008 10.9131 -3.82031 16.5332l17.9629 28.7656c37.6074 60.1709 125.295 60.0332 162.816 0\nl41.2627 -66.082l40.6875 25.4238c12.0771 7.55176 27.2646 -3.32324 24.0674 -17.168l-25.4502 -110.236c-1.97363 -8.55273 -10.5166 -13.9893 -19.1885 -11.9902l-110.237 25.4502c-13.8789 3.20508 -16.9297 21.6299 -4.87891 29.1572l40.7402 25.457zM497.288 146.88\nc39.9268 -63.8828 -6.13379 -146.88 -81.4082 -146.88h-95.8799v-47.9893c0 -14.3105 -17.3105 -21.3184 -27.3135 -11.3145l-80 79.9883c-6.24805 6.24805 -6.24805 16.3799 0 22.627l80 79.9814c10.0713 10.0703 27.3135 2.90039 27.3135 -11.3125v-47.9814h95.9844\nc25.0791 0 40.3926 27.749 27.1357 48.96l-27.5645 44.1123c-3.51172 5.62109 -1.80176 13.0234 3.81836 16.5361l33.8613 21.1582c5.62207 3.51367 13.0264 1.80273 16.5381 -3.82031z\" />\n    <glyph glyph-name=\"car\" unicode=\"&#xf1b9;\" \nd=\"M499.99 272c7.80957 0 13.54 -7.33984 11.6494 -14.9102l-6 -24c-1.33008 -5.33984 -6.12988 -9.08984 -11.6396 -9.08984h-20.0703c13.4199 -11.7305 22.0703 -28.7803 22.0703 -48v-48c0 -16.1299 -6.16016 -30.6797 -16 -41.9297v-54.0703\nc0 -17.6699 -14.3301 -32 -32 -32h-32c-17.6699 0 -32 14.3301 -32 32v32h-256v-32c0 -17.6699 -14.3301 -32 -32 -32h-32c-17.6699 0 -32 14.3301 -32 32v54.0703c-9.83984 11.2598 -16 25.8096 -16 41.9297v48c0 19.2197 8.65039 36.2695 22.0801 48h-20.0703\nc-5.50977 0 -10.3096 3.75 -11.6396 9.08984l-6 24c-1.90039 7.57031 3.83008 14.9102 11.6396 14.9102h59.8604l16.6396 41.5996c17.1104 42.7705 57.9307 70.4004 103.99 70.4004h127c46.0703 0 86.8799 -27.6299 103.98 -70.4004l16.6396 -41.5996h59.8701z\nM147.93 289.83l-19.9297 -49.8301h256l-19.9297 49.8301c-7.29004 18.2197 -24.9404 30.1699 -44.5703 30.1699h-127c-19.6299 0 -37.2803 -11.9502 -44.5703 -30.1699zM96 128.2c19.2002 0 48 -3.19043 48 15.9502c0 19.1396 -28.7998 47.8496 -48 47.8496\ns-32 -12.7598 -32 -31.9004c0 -19.1396 12.7998 -31.8994 32 -31.8994zM416 128.2c19.2002 0 32 12.7598 32 31.8994c0 19.1406 -12.7998 31.9004 -32 31.9004s-48 -28.71 -48 -47.8496c0 -19.1406 28.7998 -15.9502 48 -15.9502z\" />\n    <glyph glyph-name=\"taxi\" unicode=\"&#xf1ba;\" \nd=\"M462 206.36c28.5898 -6.40039 50 -31.8301 50 -62.3604v-48c0 -23.6201 -12.9502 -44.0303 -32 -55.1201v-40.8799c0 -17.6699 -14.3301 -32 -32 -32h-32c-17.6699 0 -32 14.3301 -32 32v32h-256v-32c0 -17.6699 -14.3301 -32 -32 -32h-32c-17.6699 0 -32 14.3301 -32 32\nv40.8799c-19.0498 11.0801 -32 31.4902 -32 55.1201v48c0 30.5303 21.4102 55.96 50 62.3604l22 84.8398c9.59961 35.2002 41.5996 60.7998 76.7998 60.7998h11.2002v32c0 17.6699 14.3301 32 32 32h128c17.6699 0 32 -14.3301 32 -32v-32h11.2002\nc35.2002 0 67.2002 -25.5996 76.7998 -60.7998zM96 96c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM116.55 208h278.9l-17.3906 67.1396c-2.01953 7.37988 -9.37988 12.8604 -14.8496 12.8604h-214.4\nc-5.46973 0 -12.8291 -5.48047 -15.0596 -13.6396zM416 96c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z\" />\n    <glyph glyph-name=\"tree\" unicode=\"&#xf1bb;\" horiz-adv-x=\"384\" \nd=\"M378.31 69.5098c6 -6.79004 7.36035 -16.0898 3.56055 -24.2598c-3.75 -8.0498 -12 -13.25 -21.0098 -13.25h-136.86v-24.4502l30.29 -48.3994c5.32031 -10.6406 -2.41992 -23.1602 -14.3096 -23.1602h-95.9609c-11.8896 0 -19.6299 12.5195 -14.3096 23.1602\nl30.29 48.3994v24.4502h-136.86c-9.00977 0 -17.2598 5.2002 -21.0098 13.25c-3.7998 8.16992 -2.43945 17.4697 3.56055 24.2598l79.8896 90.4902h-30.6299c-9.02051 0 -16.9805 5 -20.7803 13.0498c-3.79004 8.0498 -2.54004 17.2598 3.27051 24.04l78.1396 90.9102\nh-28.8896c-9.10059 0 -17.3105 5.34961 -20.8701 13.6104c-3.51074 8.12988 -1.86035 17.5898 4.23926 24.0801l110.28 117.479c6.04004 6.4502 17.29 6.4502 23.3203 0l110.27 -117.479c6.10059 -6.49023 7.76074 -15.9502 4.24023 -24.0801\nc-3.55957 -8.26074 -11.7598 -13.6104 -20.8604 -13.6104h-28.8896l78.1299 -90.8896c5.83008 -6.79004 7.08008 -16.0107 3.28027 -24.0508c-3.7998 -8.05957 -11.7705 -13.0596 -20.7803 -13.0596h-30.6299z\" />\n    <glyph glyph-name=\"database\" unicode=\"&#xf1c0;\" horiz-adv-x=\"448\" \nd=\"M448 374.857v-45.7148c0 -40.2852 -100.333 -73.1426 -224 -73.1426s-224 32.8574 -224 73.1426v45.7148c0 40.2852 100.333 73.1426 224 73.1426s224 -32.8574 224 -73.1426zM448 272v-102.857c0 -40.2852 -100.333 -73.1426 -224 -73.1426s-224 32.8574 -224 73.1426\nv102.857c48.125 -33.1426 136.208 -48.5723 224 -48.5723s175.874 15.4297 224 48.5723zM448 112v-102.857c0 -40.2852 -100.333 -73.1426 -224 -73.1426s-224 32.8574 -224 73.1426v102.857c48.125 -33.1426 136.208 -48.5723 224 -48.5723s175.874 15.4297 224 48.5723z\n\" />\n    <glyph glyph-name=\"file-pdf\" unicode=\"&#xf1c1;\" horiz-adv-x=\"384\" \nd=\"M181.9 191.9c-5 16 -4.90039 46.8994 -2 46.8994c8.39941 0 7.59961 -36.8994 2 -46.8994zM180.2 144.7c9.59961 -17.4004 21.7998 -31.2002 34.5 -40.7998c-23.9004 -4.7002 -44.6006 -14.9004 -62.9004 -21.9004c11.1006 19.4004 20.7002 42.5 28.4004 62.7002z\nM86.0996 19.9004c5.80078 15.6992 28.2002 33.8994 34.9004 40.1992c-21.7002 -34.7998 -34.9004 -41 -34.9004 -40.1992zM248 288h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136\nc0 -13.2002 10.7998 -24 24 -24zM240 116.2c-20 12.2002 -33.2998 29 -42.7002 53.7998c4.5 18.5 11.6006 46.5996 6.2002 64.2002c-4.7002 29.3994 -42.4004 26.5 -47.7998 6.7998c-5 -18.2998 -0.400391 -44.0996 8.09961 -77\nc-11.5996 -27.5996 -28.7002 -64.5996 -40.7998 -85.7998c-0.0996094 0 -0.0996094 -0.100586 -0.200195 -0.100586c-27.0996 -13.8994 -73.5996 -44.5 -54.5 -68c5.60059 -6.89941 16 -10 21.5 -10c17.9004 0 35.7002 18 61.1006 61.8008\nc25.7998 8.5 54.0996 19.0996 79 23.1992c21.6992 -11.7998 47.0996 -19.5 64 -19.5c29.1992 0 31.1992 32 19.6992 43.4004c-13.8994 13.5996 -54.2998 9.7002 -73.5996 7.2002zM377 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128v128h6c6.40039 0 12.5 -2.5 17 -7z\nM302.9 87.7002c0 0 -5.7002 -6.7998 -42.8008 9c40.3008 2.89941 46.9004 -6.2998 42.8008 -9z\" />\n    <glyph glyph-name=\"file-word\" unicode=\"&#xf1c2;\" horiz-adv-x=\"384\" \nd=\"M224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136zM281.1 192c-5.59961 0 -10.5 -3.90039 -11.5 -9.5c-24.1992 -111.4 -21.7998 -118 -21.5996 -129.2\nc-0.799805 5.40039 -5.59961 29 -29.5996 129.4c-1.30078 5.39941 -6.10059 9.2002 -11.7002 9.2002h-29.1006c-5.59961 0 -10.3994 -3.7002 -11.6992 -9.10059c-22.1006 -90 -27.8008 -112.5 -29.4004 -122.7c-0.900391 12.7002 -5.40039 44.2002 -21 122.2\nc-1.09961 5.7002 -6.09961 9.7002 -11.7998 9.7002h-24.5c-7.7002 0 -13.4004 -7.09961 -11.7002 -14.5996l37.7998 -168c1.2002 -5.5 6.10059 -9.40039 11.7002 -9.40039h37.0996c5.5 0 10.3008 3.7998 11.6006 9.09961c23.2002 93.1006 24.5 96.2002 25.5996 110.5h0.5\nc4.7998 -29.2998 -0.200195 -7 25.6006 -110.5c1.2998 -5.2998 6.09961 -9.09961 11.5996 -9.09961h38c5.59961 0 10.5 3.7998 11.7002 9.2998l38 168c1.7002 7.60059 -4 14.7002 -11.7002 14.7002h-23.9004zM384 326.1v-6.09961h-128v128h6.09961\nc6.40039 0 12.5 -2.5 17 -7l97.9004 -98c4.5 -4.5 7 -10.5996 7 -16.9004z\" />\n    <glyph glyph-name=\"file-excel\" unicode=\"&#xf1c3;\" horiz-adv-x=\"384\" \nd=\"M224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136zM284.1 205.5c5.10059 8 -0.599609 18.5 -10.0996 18.4004h-34.7998\nc-4.40039 0 -8.5 -2.40039 -10.6006 -6.30078c-30.5 -56.7998 -36.5996 -68.5 -36.5996 -68.5c-16.5996 34.9004 -10.5 19.7002 -36.5996 68.5c-2.10059 3.90039 -6.2002 6.30078 -10.6006 6.30078h-34.7998c-9.5 0 -15.2998 -10.5 -10.0996 -18.5l60.2998 -93.5\nl-60.2998 -93.5c-5.10059 -8 0.599609 -18.5 10.0996 -18.5h34.9004c4.39941 0 8.39941 2.39941 10.5 6.2998c26.5996 48.7998 30.1992 54 36.5996 68.7998c0 0 16.9004 -32.5 36.5 -68.7002c2.09961 -3.89941 6.2002 -6.2998 10.5996 -6.2998h34.9004\nc9.5 0 15.2002 10.5 10.0996 18.5l-60.0996 93.5zM384 326.1v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7l97.9004 -98c4.5 -4.5 7 -10.5996 7 -16.9004z\" />\n    <glyph glyph-name=\"file-powerpoint\" unicode=\"&#xf1c4;\" horiz-adv-x=\"384\" \nd=\"M193.7 176.8c8.7998 0 15.5 -2.7002 20.2998 -8.09961c9.59961 -10.9004 9.7998 -32.7002 -0.200195 -44.1006c-4.89941 -5.59961 -11.8994 -8.5 -21.0996 -8.5h-26.9004v60.7002h27.9004zM377 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128v128h6\nc6.40039 0 12.5 -2.5 17 -7zM224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136zM277 146.8c0 44.2002 -28.4004 77 -72.9004 77h-81\nc-6.59961 0 -12 -5.39941 -12 -12v-199.8c0 -6.59961 5.40039 -12 12 -12h30.8008c6.59961 0 12 5.40039 12 12v57.2002c22.2998 0 111.1 -12.7002 111.1 77.5996z\" />\n    <glyph glyph-name=\"file-image\" unicode=\"&#xf1c5;\" horiz-adv-x=\"384\" \nd=\"M384 326.059v-6.05859h-128v128h6.05859c5.4873 0 13.0898 -3.14941 16.9707 -7.0293l97.9404 -97.9404c3.88086 -3.88086 7.03027 -11.4834 7.03027 -16.9717zM248 288h136v-328c0 -13.2549 -10.7451 -24 -24 -24h-336c-13.2549 0 -24 10.7451 -24 24v464\nc0 13.2549 10.7451 24 24 24h200v-136c0 -13.2002 10.7998 -24 24 -24zM112.545 272c-26.5088 0 -48 -21.4902 -48 -48s21.4902 -48 48 -48s48 21.4902 48 48s-21.4902 48 -48 48zM320.545 32v112l-39.5137 39.5146c-4.6875 4.68652 -12.2852 4.68652 -16.9717 0\nl-103.515 -103.515l-39.5146 39.5146c-4.68652 4.68652 -11.7988 5.1709 -16.4854 0.485352l-39.5146 -39.5146l-0.485352 -48.4854h256z\" />\n    <glyph glyph-name=\"file-archive\" unicode=\"&#xf1c6;\" horiz-adv-x=\"384\" \nd=\"M377 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7zM128.4 112c17.8994 0 32.5 -12.0996 32.5 -27s-14.5 -27 -32.4004 -27s-32.5 12 -32.5 27c0 14.9004 14.5 27 32.4004 27zM224 312c0 -13.2002 10.7998 -24 24 -24h136\nv-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h104.4v-32h32v32h63.5996v-136zM95.9004 416v-32h32v32h-32zM128.2 32c33 0 57.7998 30.2002 51.3994 62.5996l-17.2998 87.7002\nc-1.09961 5.60059 -6.09961 9.7002 -11.7998 9.7002h-22.0996v32h32v32h-32v32h32v32h-32v32h32v32h-32v-32h-32v-32h32v-32h-32v-32h32v-32h-32v-32l-19.6006 -97.0996c-6.59961 -32.5 18.2002 -62.9004 51.4004 -62.9004z\" />\n    <glyph glyph-name=\"file-audio\" unicode=\"&#xf1c7;\" horiz-adv-x=\"384\" \nd=\"M224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136zM160 44v136c0 10.7002 -12.9004 16.0996 -20.5 8.5l-35.5 -36.5h-28c-6.59961 0 -12 -5.40039 -12 -12\nv-56c0 -6.59961 5.40039 -12 12 -12h28l35.5 -36.5c7.59961 -7.5 20.5 -2.2002 20.5 8.5zM193.2 91.5996c-22.5 -23.0996 12.5996 -55.7998 34.3994 -33.5c27.2002 28 27.2002 72.5 0 100.4c-22.1992 22.7002 -56.5 -10.7002 -34.3994 -33.5\nc9.09961 -9.2998 9.09961 -24.0996 0 -33.4004zM279.2 208.7c-22.1006 22.7998 -56.5 -10.7002 -34.4004 -33.5c36.2998 -37.2998 36.2002 -96.6006 0 -133.8c-22.5996 -23.2002 12.6006 -55.9004 34.4004 -33.5c54.3994 56 54.3994 144.899 0 200.8zM384 326.1v-6.09961\nh-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7l97.9004 -98c4.5 -4.5 7 -10.5996 7 -16.9004z\" />\n    <glyph glyph-name=\"file-video\" unicode=\"&#xf1c8;\" horiz-adv-x=\"384\" \nd=\"M384 326.059v-6.05859h-128v128h6.05859c6.36523 0 12.4707 -2.5293 16.9717 -7.0293l97.9404 -97.9404c3.87988 -3.88086 7.0293 -11.4834 7.0293 -16.9717zM224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2549 -10.7451 -24 -24 -24h-336\nc-13.2549 0 -24 10.7451 -24 24v464c0 13.2549 10.7451 24 24 24h200v-136zM320 167.984c0 21.4609 -25.96 31.9795 -40.9707 16.9697l-55.0293 -55.0127v38.0586c0 13.2549 -10.7451 24 -24 24h-112c-13.2549 0 -24 -10.7451 -24 -24v-112c0 -13.2549 10.7451 -24 24 -24\nh112c13.2549 0 24 10.7451 24 24v38.0586l55.0293 -55.0088c15.0273 -15.0264 40.9707 -4.47363 40.9707 16.9717v111.963z\" />\n    <glyph glyph-name=\"file-code\" unicode=\"&#xf1c9;\" horiz-adv-x=\"384\" \nd=\"M384 326.059v-6.05859h-128v128h6.05859c6.36523 0 12.4707 -2.5293 16.9717 -7.0293l97.9404 -97.9404c3.87988 -3.88086 7.0293 -11.4834 7.0293 -16.9717zM248 288h136v-328c0 -13.2549 -10.7451 -24 -24 -24h-336c-13.2549 0 -24 10.7451 -24 24v464\nc0 13.2549 10.7451 24 24 24h200v-136c0 -13.2002 10.7998 -24 24 -24zM123.206 47.4951l19.5791 20.8838c0.805664 0.860352 1.45996 2.51465 1.45996 3.69336c0 1.34766 -0.820312 3.16309 -1.83203 4.05371l-40.7627 35.874l40.7627 35.874\nc1.01172 0.890625 1.83203 2.70605 1.83203 4.05371c0 1.17871 -0.654297 2.83301 -1.45996 3.69336l-19.5791 20.8848c-0.882812 0.942383 -2.64844 1.70703 -3.93945 1.70703c-1.17871 0 -2.83398 -0.654297 -3.69336 -1.46094l-64.8662 -60.8115\nc-0.942383 -0.883789 -1.70703 -2.64844 -1.70703 -3.93945c0 -1.29199 0.764648 -3.05664 1.70703 -3.94043l64.8662 -60.8115c0.859375 -0.806641 2.51465 -1.46094 3.69336 -1.46094c1.29102 0 3.05664 0.764648 3.93945 1.70703zM174.501 -2.98438\nc0.407227 -0.118164 1.08203 -0.213867 1.50586 -0.213867c2.23926 0 4.56152 1.74512 5.18457 3.89551l61.4395 211.626c0.118164 0.407227 0.214844 1.08203 0.214844 1.50586c0 2.23828 -1.74512 4.56152 -3.89453 5.18555l-27.4521 7.9707\nc-0.407227 0.117188 -1.08105 0.213867 -1.50488 0.213867c-2.23828 0 -4.5625 -1.74512 -5.1875 -3.89551l-61.4395 -211.626c-0.118164 -0.40625 -0.213867 -1.08105 -0.213867 -1.50391c0 -2.23926 1.74512 -4.56348 3.89453 -5.1875zM335.293 108.061\nc0.942383 0.883789 1.70703 2.64844 1.70703 3.94043c0 1.29102 -0.764648 3.05566 -1.70605 3.93945l-64.8662 60.8115c-0.859375 0.806641 -2.51465 1.46094 -3.69336 1.46094c-1.29102 0 -3.05566 -0.764648 -3.93945 -1.70703l-19.5801 -20.8848\nc-0.805664 -0.860352 -1.45996 -2.51465 -1.45996 -3.69336c0 -1.34766 0.820312 -3.16309 1.83203 -4.05371l40.7627 -35.874l-40.7637 -35.873c-1.01172 -0.890625 -1.83203 -2.70605 -1.83203 -4.05371c0 -1.17871 0.654297 -2.83301 1.45996 -3.69336l19.5801 -20.8848\nc0.882812 -0.942383 2.64844 -1.70703 3.93945 -1.70703c1.17871 0 2.83398 0.654297 3.69336 1.46094z\" />\n    <glyph glyph-name=\"life-ring\" unicode=\"&#xf1cd;\" \nd=\"M256 440c136.967 0 248 -111.033 248 -248s-111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248zM429.696 320.441c-10.6406 14.3398 -30.915 34.6143 -45.2549 45.2549l-63.3994 -63.3994c18.585 -11.0029 34.2676 -26.6963 45.2549 -45.2549zM256 96\nc53.0186 0 96 42.9814 96 96s-42.9814 96 -96 96s-96 -42.9814 -96 -96s42.9814 -96 96 -96zM127.559 365.696c-14.3398 -10.6406 -34.6143 -30.915 -45.2549 -45.2549l63.3994 -63.3994c11.0029 18.585 26.6963 34.2676 45.2549 45.2549zM82.3037 63.5586\nc10.6406 -14.3398 30.915 -34.6143 45.2549 -45.2549l63.3994 63.3994c-18.585 11.0029 -34.2676 26.6963 -45.2549 45.2549zM384.441 18.3037c14.3398 10.6406 34.6143 30.915 45.2549 45.2549l-63.3994 63.3994c-11.0029 -18.585 -26.6963 -34.2676 -45.2549 -45.2549z\n\" />\n    <glyph glyph-name=\"circle-notch\" unicode=\"&#xf1ce;\" \nd=\"M288 408.944c0 15.5996 14.6777 27.167 29.7891 23.292c107.071 -27.457 186.211 -124.604 186.211 -240.236c0 -136.788 -110.745 -247.711 -247.466 -247.999c-137.054 -0.289062 -247.812 109.615 -248.531 246.667c-0.609375 116.126 78.5996 213.85 185.951 241.502\nc15.2119 3.91895 30.0459 -7.52539 30.0459 -23.2344v-16.6475c0 -10.8047 -7.28125 -20.1621 -17.6885 -23.0693c-77.5254 -21.6543 -134.312 -92.749 -134.312 -177.219c0 -101.705 82.3105 -184 184 -184c101.705 0 184 82.3105 184 184\nc0 84.4824 -56.7959 155.566 -134.314 177.219c-10.4043 2.90723 -17.6855 12.2627 -17.6855 23.0664v16.6592z\" />\n    <glyph glyph-name=\"paper-plane\" unicode=\"&#xf1d8;\" \nd=\"M476 444.8c17.2998 10 39 -4.59961 35.5996 -24.7998l-72 -432c-2.59961 -15.2998 -18.7998 -24.2002 -33 -18.2002l-124.6 52.2002l-63.5 -77.2998c-14 -17.1006 -42.5 -7.7998 -42.5 15.7998v80.5l240.9 293.5c4.69922 5.7002 -3.10059 13.2002 -8.60059 8.2998\nl-287.3 -253.2l-106.3 44.6006c-18 7.59961 -20.2998 32.7998 -2.2002 43.2002z\" />\n    <glyph glyph-name=\"history\" unicode=\"&#xf1da;\" \nd=\"M504 192.469c0.25293 -136.64 -111.18 -248.372 -247.82 -248.468c-59.0146 -0.0419922 -113.223 20.5303 -155.821 54.9111c-11.0771 8.93945 -11.9053 25.541 -1.83984 35.6064l11.2676 11.2676c8.6084 8.6084 22.3525 9.55078 31.8906 1.9834\nc31.3848 -24.9043 71.1045 -39.7695 114.323 -39.7695c101.705 0 184 82.3105 184 184c0 101.705 -82.3105 184 -184 184c-48.8145 0 -93.1494 -18.9688 -126.068 -49.9316l50.7539 -50.7539c10.0801 -10.0801 2.94141 -27.3145 -11.3125 -27.3145h-145.373\nc-8.83691 0 -16 7.16309 -16 16v145.373c0 14.2539 17.2344 21.3926 27.3145 11.3135l49.3711 -49.3711c44.5234 42.5488 104.866 68.6846 171.314 68.6846c136.81 0 247.747 -110.78 248 -247.531zM323.088 113.685c-8.1377 -10.4629 -23.2158 -12.3467 -33.6787 -4.20996\nl-65.4092 50.874v135.651c0 13.2549 10.7451 24 24 24h16c13.2549 0 24 -10.7451 24 -24v-104.349l40.7012 -31.6572c10.4629 -8.13672 12.3477 -23.2158 4.20996 -33.6787z\" />\n    <glyph glyph-name=\"heading\" unicode=\"&#xf1dc;\" \nd=\"M448 352v-320h32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-160c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32v128h-192v-128h32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-160\nc-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32v320h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h160c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32v-128h192v128h-32c-8.83203 0 -16 7.16797 -16 16v32\nc0 8.83203 7.16797 16 16 16h160c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32z\" />\n    <glyph glyph-name=\"paragraph\" unicode=\"&#xf1dd;\" horiz-adv-x=\"448\" \nd=\"M448 400v-32c0 -8.83203 -7.16797 -16 -16 -16h-48v-368c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v368h-32v-368c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v112h-32c-88.3203 0 -160 71.6797 -160 160\ns71.6797 160 160 160h240c8.83203 0 16 -7.16797 16 -16z\" />\n    <glyph glyph-name=\"sliders-h\" unicode=\"&#xf1de;\" \nd=\"M496 64c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-336v-16c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v16h-80c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h80v16c0 8.7998 7.2002 16 16 16h32\nc8.7998 0 16 -7.2002 16 -16v-16h336zM496 224c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-80v-16c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v16h-336c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h336v16\nc0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-16h80zM496 384c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-208v-16c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v16h-208c-8.7998 0 -16 7.2002 -16 16v32\nc0 8.7998 7.2002 16 16 16h208v16c0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-16h208z\" />\n    <glyph glyph-name=\"share-alt\" unicode=\"&#xf1e0;\" horiz-adv-x=\"448\" \nd=\"M352 128c53.0186 0 96 -42.9814 96 -96s-42.9814 -96 -96 -96s-96 42.9814 -96 96v0.0283203c0 5.8125 1.01953 15.1367 2.27637 20.8125l-102.486 64.0537c-16.4033 -13.0752 -37.1816 -20.8945 -59.79 -20.8945c-53.0186 0 -96 42.9814 -96 96s42.9814 96 96 96\nc22.6084 0 43.3867 -7.81934 59.79 -20.8945l102.486 64.0537c-1.48633 6.71094 -2.27637 13.6826 -2.27637 20.8408c0 53.0186 42.9814 96 96 96s96 -42.9814 96 -96s-42.9814 -96 -96 -96c-22.6084 0 -43.3867 7.81934 -59.79 20.8965l-102.486 -64.0547\nc1.25684 -5.68359 2.27637 -15.0205 2.27637 -20.8408c0 -5.82129 -1.01953 -15.1582 -2.27637 -20.8418l102.486 -64.0537c16.4033 13.0752 37.1816 20.8945 59.79 20.8945z\" />\n    <glyph glyph-name=\"share-alt-square\" unicode=\"&#xf1e1;\" horiz-adv-x=\"448\" \nd=\"M448 368v-352c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h352c26.5098 0 48 -21.4902 48 -48zM304 152c-14.5615 0 -27.8232 -5.56055 -37.7832 -14.6709l-67.958 40.7744\nc0.960938 3.77539 1.74121 10.001 1.74121 13.8975c0 3.89551 -0.780273 10.1211 -1.74121 13.8965l67.958 40.7744c9.95996 -9.11133 23.2217 -14.6719 37.7832 -14.6719c30.9277 0 56 25.0723 56 56s-25.0723 56 -56 56s-56 -25.0723 -56 -56\nc0 -4.79688 0.605469 -9.45312 1.74023 -13.8975l-67.958 -40.7744c-9.95898 9.11133 -23.2207 14.6719 -37.7822 14.6719c-30.9277 0 -56 -25.0723 -56 -56s25.0723 -56 56 -56c14.5615 0 27.8232 5.56055 37.7832 14.6709l67.958 -40.7744\nc-0.960938 -3.7666 -1.74023 -9.97656 -1.74023 -13.8623v-0.0351562c0 -30.9277 25.0723 -56 56 -56s56 25.0723 56 56c-0.000976562 30.9287 -25.0732 56.001 -56.001 56.001z\" />\n    <glyph glyph-name=\"bomb\" unicode=\"&#xf1e2;\" \nd=\"M440.5 359.5l-52 -52l26.5 -26.5c9.40039 -9.40039 9.40039 -24.5996 0 -33.9004l-17.4004 -17.3994c11.8008 -26.1006 18.4004 -55.1006 18.4004 -85.6006c0 -114.899 -93.0996 -208 -208 -208s-208 93 -208 207.9s93.0996 208 208 208\nc30.5 0 59.5 -6.59961 85.5996 -18.4004l17.4004 17.4004c9.40039 9.40039 24.5996 9.40039 33.9004 0l26.5 -26.5l52 52zM500 388c6.59961 0 12 -5.40039 12 -12s-5.40039 -12 -12 -12h-24c-6.59961 0 -12 5.40039 -12 12s5.40039 12 12 12h24zM440 448\nc6.59961 0 12 -5.40039 12 -12v-24c0 -6.59961 -5.40039 -12 -12 -12s-12 5.40039 -12 12v24c0 6.59961 5.40039 12 12 12zM473.9 393c-4.60059 -4.7002 -12.2002 -4.7002 -17 0c-4.7002 4.7002 -4.7002 12.2998 0 17l17 17c4.69922 4.7002 12.2998 4.7002 17 0\nc4.69922 -4.7002 4.69922 -12.2998 0 -17zM406.1 393l-17 17c-4.69922 4.7002 -4.69922 12.2998 0 17c4.7002 4.7002 12.3008 4.7002 17 0l17 -17c4.7002 -4.7002 4.7002 -12.2998 0 -17c-4.69922 -4.7002 -12.2998 -4.7002 -17 0zM473.9 359l17 -17\nc4.69922 -4.7002 4.69922 -12.2998 0 -17c-4.7002 -4.7002 -12.3008 -4.7002 -17 0l-17 17c-4.7002 4.7002 -4.7002 12.2998 0 17c4.69922 4.7002 12.2998 4.7002 17 0zM112 176c0 35.2998 28.7002 64 64 64c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16\nc-52.9004 0 -96 -43.0996 -96 -96c0 -8.7998 7.2002 -16 16 -16s16 7.2002 16 16z\" />\n    <glyph glyph-name=\"futbol\" unicode=\"&#xf1e3;\" \nd=\"M504 192c0 -136.967 -111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248s248 -111.033 248 -248zM456 192l-0.00292969 0.282227l-26.0645 -22.7412l-62.6787 58.5l16.4541 84.3555l34.3027 -3.07227\nc-24.8887 34.2158 -60.0039 60.0889 -100.709 73.1406l13.6514 -31.9385l-74.9531 -41.5264l-74.9531 41.5254l13.6514 31.9385c-40.6309 -13.0283 -75.7803 -38.8701 -100.709 -73.1406l34.5645 3.07324l16.1924 -84.3555l-62.6777 -58.5l-26.0645 22.7412\nl-0.00292969 -0.282227c0 -43.0146 13.4971 -83.9521 38.4717 -117.991l7.7041 33.8975l85.1387 -10.4473l36.3008 -77.8262l-29.9023 -17.7861c40.2021 -13.1221 84.29 -13.1475 124.572 0l-29.9023 17.7861l36.3008 77.8262l85.1387 10.4473l7.7041 -33.8975\nc24.9756 34.0391 38.4727 74.9766 38.4727 117.991zM207.898 122.429l-29.8945 91.3125l77.9961 56.5264l77.9961 -56.5264l-29.6221 -91.3125h-96.4756z\" />\n    <glyph glyph-name=\"tty\" unicode=\"&#xf1e4;\" \nd=\"M5.37012 344.178c138.532 138.532 362.936 138.326 501.262 0c6.07812 -6.07812 7.07422 -15.4961 2.58301 -22.6807l-43.2139 -69.1377c-2.97266 -4.75684 -9.9375 -8.61719 -15.5459 -8.61719c-1.94922 0 -5 0.587891 -6.81055 1.31152l-86.4219 34.5693\nc-6.36133 2.54492 -11.5244 10.1719 -11.5244 17.0234c0 0.503906 0.0410156 1.32031 0.0908203 1.82227l5.95215 59.5312c-62.1455 22.4541 -130.636 21.9863 -191.483 0l5.95312 -59.5322c0.0507812 -0.501953 0.0908203 -1.32031 0.0908203 -1.8252\nc0 -6.85156 -5.16309 -14.4766 -11.5244 -17.0205l-86.4238 -34.5684c-1.80957 -0.723633 -4.85938 -1.31152 -6.80859 -1.31152c-5.60938 0 -12.5742 3.86035 -15.5469 8.61719l-43.2109 69.1387c-1.53809 2.46094 -2.78711 6.81445 -2.78711 9.7168\nc0 4.19141 2.40625 9.99902 5.37012 12.9629zM96 140c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40zM192 140c0 -6.62695 -5.37305 -12 -12 -12h-40\nc-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40zM288 140c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40zM384 140\nc0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40zM480 140c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40\nc6.62695 0 12 -5.37305 12 -12v-40zM144 44c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40zM240 44c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40\nc0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40zM336 44c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40zM432 44c0 -6.62695 -5.37305 -12 -12 -12h-40\nc-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40zM96 -52c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40zM384 -52\nc0 -6.62695 -5.37305 -12 -12 -12h-232c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h232c6.62695 0 12 -5.37305 12 -12v-40zM480 -52c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40\nc6.62695 0 12 -5.37305 12 -12v-40z\" />\n    <glyph glyph-name=\"binoculars\" unicode=\"&#xf1e5;\" \nd=\"M416 400v-48h-96v48c0 8.83984 7.16016 16 16 16h64c8.83984 0 16 -7.16016 16 -16zM63.9102 288.01c0.479492 17.6201 14.2998 31.9902 31.9297 31.9902h96.1602v-160h-32v-160c0 -17.6699 -14.3301 -32 -32 -32h-96c-17.6699 0 -32 14.3301 -32 32v44\nc3.45996 129.78 61.4004 150.16 63.9102 244.01zM448.09 288.01c2.50977 -93.8496 60.4502 -114.229 63.9102 -244.01v-44c0 -17.6699 -14.3301 -32 -32 -32h-96c-17.6699 0 -32 14.3301 -32 32v160h-32v160h96.1602c17.6299 0 31.4502 -14.3701 31.9297 -31.9902zM176 416\nc8.83984 0 16 -7.16016 16 -16v-48h-96v48c0 8.83984 7.16016 16 16 16h64zM224 160v160h64v-160h-64z\" />\n    <glyph glyph-name=\"plug\" unicode=\"&#xf1e6;\" horiz-adv-x=\"384\" \nd=\"M256 304v112c0 17.6729 14.3271 32 32 32s32 -14.3271 32 -32v-112h-64zM368 288c8.83691 0 16 -7.16309 16 -16v-32c0 -8.83691 -7.16309 -16 -16 -16h-16v-32c0 -77.4062 -54.9688 -141.971 -128 -156.796v-99.2041h-64v99.2041\nc-73.0312 14.8252 -128 79.3896 -128 156.796v32h-16c-8.83691 0 -16 7.16309 -16 16v32c0 8.83691 7.16309 16 16 16h352zM128 304h-64v112c0 17.6729 14.3271 32 32 32s32 -14.3271 32 -32v-112z\" />\n    <glyph glyph-name=\"newspaper\" unicode=\"&#xf1ea;\" horiz-adv-x=\"576\" \nd=\"M552 384c13.2549 0 24 -10.7451 24 -24v-312c0 -26.5098 -21.4902 -48 -48 -48h-472c-30.9277 0 -56 25.0723 -56 56v272c0 13.2549 10.7451 24 24 24h40v8c0 13.2549 10.7451 24 24 24h464zM56 48c4.41602 0 8 3.58398 8 8v248h-16v-248c0 -4.41602 3.58398 -8 8 -8z\nM292 64c6.62695 0 12 5.37305 12 12v8c0 6.62695 -5.37305 12 -12 12h-152c-6.62695 0 -12 -5.37305 -12 -12v-8c0 -6.62695 5.37305 -12 12 -12h152zM500 64c6.62695 0 12 5.37305 12 12v8c0 6.62695 -5.37305 12 -12 12h-152c-6.62695 0 -12 -5.37305 -12 -12v-8\nc0 -6.62695 5.37305 -12 12 -12h152zM292 160c6.62695 0 12 5.37305 12 12v8c0 6.62695 -5.37305 12 -12 12h-152c-6.62695 0 -12 -5.37305 -12 -12v-8c0 -6.62695 5.37305 -12 12 -12h152zM500 160c6.62695 0 12 5.37305 12 12v8c0 6.62695 -5.37305 12 -12 12h-152\nc-6.62695 0 -12 -5.37305 -12 -12v-8c0 -6.62695 5.37305 -12 12 -12h152zM500 256c6.62695 0 12 5.37305 12 12v40c0 6.62695 -5.37305 12 -12 12h-360c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h360z\" />\n    <glyph glyph-name=\"wifi\" unicode=\"&#xf1eb;\" horiz-adv-x=\"640\" \nd=\"M634.91 293.12c6.66016 -6.16016 6.79004 -16.5898 0.359375 -22.9805l-34.2393 -33.9697c-6.14062 -6.08984 -16.0205 -6.22949 -22.4004 -0.379883c-145.95 133.71 -371.33 133.68 -517.25 0c-6.37988 -5.84961 -16.2598 -5.71973 -22.3994 0.379883l-34.2402 33.9697\nc-6.44043 6.39062 -6.31055 16.8203 0.349609 22.9805c177.101 163.81 452.65 163.87 629.82 0zM320 96c35.3496 0 64 -28.6504 64 -64s-28.6504 -64 -64 -64s-64 28.6504 -64 64s28.6504 64 64 64zM522.67 179.59c6.88965 -6.08984 7.12012 -16.6895 0.560547 -23.1494\nl-34.4404 -33.9902c-6 -5.93066 -15.6602 -6.32031 -22.0498 -0.799805c-83.75 72.4092 -209.54 72.5693 -293.49 0c-6.38965 -5.52051 -16.0498 -5.12012 -22.0498 0.799805l-34.4404 33.9902c-6.5498 6.45996 -6.33008 17.0498 0.570312 23.1494\nc115.13 101.82 290.08 101.93 405.34 0z\" />\n    <glyph glyph-name=\"calculator\" unicode=\"&#xf1ec;\" horiz-adv-x=\"448\" \nd=\"M400 448c25.5996 0 48 -22.4004 48 -48v-416c0 -25.5996 -22.4004 -48 -48 -48h-352c-25.5996 0 -48 22.4004 -48 48v416c0 25.5996 22.4004 48 48 48h352zM128 12.7998v38.4004c0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-38.4004\nc-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998v-38.4004c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h38.4004c6.39941 0 12.7998 6.40039 12.7998 12.7998zM128 140.8v38.4004c0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-38.4004\nc-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998v-38.4004c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h38.4004c6.39941 0 12.7998 6.40039 12.7998 12.7998zM256 12.7998v38.4004c0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-38.4004\nc-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998v-38.4004c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h38.4004c6.39941 0 12.7998 6.40039 12.7998 12.7998zM256 140.8v38.4004c0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-38.4004\nc-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998v-38.4004c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h38.4004c6.39941 0 12.7998 6.40039 12.7998 12.7998zM384 12.7998v166.4c0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-38.4004\nc-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998v-166.4c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h38.4004c6.39941 0 12.7998 6.40039 12.7998 12.7998zM384 268.8v102.4c0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-294.4\nc-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998v-102.4c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h294.4c6.39941 0 12.7998 6.40039 12.7998 12.7998z\" />\n    <glyph glyph-name=\"bell-slash\" unicode=\"&#xf1f6;\" horiz-adv-x=\"640\" \nd=\"M633.82 -10.0996c6.97949 -5.43066 8.22949 -15.4805 2.80957 -22.4502l-19.6396 -25.2705c-5.43066 -6.97949 -15.4805 -8.23926 -22.46 -2.80957l-588.351 454.729c-6.97949 5.43066 -8.22949 15.4805 -2.80957 22.4502l19.6396 25.2705\nc5.41992 6.97949 15.4805 8.22949 22.46 2.80957l144.96 -112.04c22.9307 31.5 57.2607 54.1904 97.5898 62.5703v20.8398c0 17.6699 14.3203 32 31.9805 32s31.9805 -14.3301 31.9805 -32v-20.8301c73.46 -15.2598 127.939 -77.46 127.939 -155.16\nc0 -102.3 36.1504 -133.529 55.4697 -154.29c6 -6.43945 8.66016 -14.1602 8.61035 -21.71c0 -1.39941 -0.610352 -2.67969 -0.799805 -4.05957zM157.23 196.46l212.789 -164.46h-241.92c-19.1191 0 -31.9893 15.5996 -32.0996 32\nc-0.0498047 7.5498 2.61035 15.2598 8.61035 21.71c16.21 17.4199 44.0098 42.79 52.6201 110.75zM320 -64c-35.3203 0 -63.9697 28.6504 -63.9697 64h127.939c0 -35.3496 -28.6494 -64 -63.9697 -64z\" />\n    <glyph glyph-name=\"trash\" unicode=\"&#xf1f8;\" horiz-adv-x=\"448\" \nd=\"M432 416c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h120l9.40039 18.7002c3.58984 7.3418 13.1357 13.2998 21.3086 13.2998h0.0908203h114.3h0.0175781\nc8.20215 0 17.8262 -5.95801 21.4824 -13.2998l9.40039 -18.7002h120zM53.2002 -19l-21.2002 339h384l-21.2002 -339c-1.55469 -24.8369 -23.0146 -44.9971 -47.8994 -45h-245.801c-24.8848 0.00292969 -46.3447 20.1631 -47.8994 45z\" />\n    <glyph glyph-name=\"copyright\" unicode=\"&#xf1f9;\" \nd=\"M256 440c136.967 0 248 -111.033 248 -248s-111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248zM373.134 93.2471c1.58203 1.85645 2.86621 5.34375 2.86621 7.7832c0 2.16309 -1.03613 5.33594 -2.31348 7.08301l-24.5469 33.5713\nc-4.44824 6.08691 -13.376 6.61816 -18.5078 1.05371c-0.263672 -0.287109 -26.8467 -28.625 -65.5439 -28.625c-48.7627 0 -74.2773 40.0898 -74.2773 79.6914c0 42.5068 27.8008 76.082 73.916 76.082c35.3516 0 61.6475 -23.666 61.8809 -23.8799\nc5.45996 -5.05566 14.1846 -3.97168 18.2334 2.29492l22.3799 34.6553c1.05957 1.64062 1.91992 4.55762 1.91992 6.51074c0 2.57812 -1.41504 6.21191 -3.15723 8.1123c-1.45703 1.58887 -36.4658 38.9043 -103.423 38.9043\nc-81.7578 0 -143.762 -62.0986 -143.762 -143.401c0 -82.3066 59.792 -145.567 144.484 -145.567c70.0752 0 108.259 43.8643 109.851 45.7314z\" />\n    <glyph glyph-name=\"at\" unicode=\"&#xf1fa;\" \nd=\"M256 440c138.023 0 248 -87.6533 248 -224c0 -75.7979 -41.3906 -147.41 -150.299 -147.41c-30.0977 0 -61.1885 -0.000976562 -70.71 34.1035c-17.6221 -22.6963 -48.0068 -38.333 -74.9912 -38.333c-59.2148 0 -96 40.5664 -96 105.87\nc0 89.2256 63.251 151.46 137.831 151.46c19.5225 0 45.2744 -3.87402 59.9707 -21.7754l0.00976562 0.0917969c0.751953 6.62012 6.76953 11.9932 13.4326 11.9932v0h44.9805c15.083 0 26.4287 -13.75 23.5625 -28.5586l-23.4336 -121.11\nc-3.43359 -17.167 -3.87207 -29.5703 13.4766 -30.0244c37.0771 3.95117 58.1699 44.9072 58.1699 83.6934c0 102.381 -83.8613 160 -184 160c-101.458 0 -184 -82.542 -184 -184s82.542 -184 184 -184c35.3145 0 69.9199 10.2432 99.4102 29.1572\nc10.1934 6.53809 23.7021 4.24219 31.373 -5.12891l10.1768 -12.4336c9.07324 -11.084 6.45312 -27.5566 -5.55176 -35.3721c-40.0664 -26.083 -87.2539 -40.2227 -135.408 -40.2227c-137.081 0 -248 110.941 -248 248c0 137.081 110.941 248 248 248zM234.32 135.57\nc24.2861 0 58.1611 27.6689 58.1611 72.7295c0 25.5293 -13.3096 40.7705 -35.6016 40.7705c-27.8506 0 -58.6299 -27.7363 -58.6299 -72.7295c0 -25.1475 13.8213 -40.7705 36.0703 -40.7705z\" />\n    <glyph glyph-name=\"eye-dropper\" unicode=\"&#xf1fb;\" \nd=\"M50.75 114.75l126.63 126.61l128 -128l-126.64 -126.62c-12 -12 -28.2803 -18.7402 -45.25 -18.7402h-45.4902l-56 -32l-32 32l32 56v45.4902c0 16.9795 6.75 33.2598 18.75 45.2598zM483.88 419.88c37.5 -37.4902 37.5 -98.2695 -0.00976562 -135.75l-77.0898 -77.0898\nl13.0996 -13.0996c9.37012 -9.37012 9.37012 -24.5703 0 -33.9404l-40.9697 -40.96c-9.29004 -9.30957 -24.5 -9.44043 -33.9404 0l-161.939 161.94c-9.37012 9.36914 -9.37012 24.5693 0 33.9395l40.9697 40.9697c9.29004 9.31055 24.5 9.44043 33.9404 0l13.0996 -13.0996\nl77.0898 77.0898c37.4697 37.5 98.2803 37.5 135.75 0z\" />\n    <glyph glyph-name=\"paint-brush\" unicode=\"&#xf1fc;\" \nd=\"M167.02 138.66l88.0107 -73.3398c0.319336 -3.05078 0.969727 -6.02051 0.969727 -9.12988c0 -76.4209 -52.1396 -120.19 -128 -120.19c-90.0703 0 -128 72.3799 -128.01 154.73c9.79004 -6.68066 44.1396 -34.3506 55.25 -34.3506\nc6.58984 0 12.2402 3.77051 14.5898 9.98047c20.6602 54.4395 57.0703 69.7197 97.1895 72.2998zM457.89 448c28.1104 0 54.1104 -20.6396 54.1104 -49.5498c0 -16.1406 -6.51953 -31.6406 -13.9004 -45.9902c-113.05 -210.99 -149.05 -256.46 -211.159 -256.46\nc-7.75 0 -15.1807 1.23047 -22.3906 3.03027l-63.8193 53.1797c-5.48047 11.9404 -8.73047 25 -8.73047 38.7002c0 53.75 21.2695 58.04 225.68 240.64c10.8398 9.74023 25.0508 16.4502 40.21 16.4502z\" />\n    <glyph glyph-name=\"birthday-cake\" unicode=\"&#xf1fd;\" horiz-adv-x=\"448\" \nd=\"M448 64c-28.0195 0 -31.2598 32 -74.5 32c-43.4297 0 -46.8252 -32 -74.75 -32c-27.6953 0 -31.4541 32 -74.75 32c-42.8418 0 -47.2178 -32 -74.5 -32c-28.1484 0 -31.2021 32 -74.75 32c-43.5469 0 -46.6533 -32 -74.75 -32v80c0 26.5 21.5 48 48 48h16v144h64v-144h64\nv144h64v-144h64v144h64v-144h16c26.5 0 48 -21.5 48 -48v-80zM448 -64h-448v96c43.3564 0 46.7666 32 74.75 32c27.9512 0 31.2529 -32 74.75 -32c42.8428 0 47.2168 32 74.5 32c28.1484 0 31.2012 -32 74.75 -32c43.3574 0 46.7666 32 74.75 32\nc27.4883 0 31.252 -32 74.5 -32v-96zM96 352c-17.75 0 -32 14.25 -32 32c0 31 32 23 32 64c12 0 32 -29.5 32 -56s-14.25 -40 -32 -40zM224 352c-17.75 0 -32 14.25 -32 32c0 31 32 23 32 64c12 0 32 -29.5 32 -56s-14.25 -40 -32 -40zM352 352c-17.75 0 -32 14.25 -32 32\nc0 31 32 23 32 64c12 0 32 -29.5 32 -56s-14.25 -40 -32 -40z\" />\n    <glyph glyph-name=\"chart-area\" unicode=\"&#xf1fe;\" \nd=\"M500 64c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-488c-6.59961 0 -12 5.40039 -12 12v360c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-308h436zM372.7 288.5c6 4 14.2002 1.7998 17.3994 -4.7002l89.9004 -187.8h-384v104\nl86.7998 144.7c4.40039 7.2998 14.7998 7.7998 19.9004 1l85.2998 -113.7z\" />\n    <glyph glyph-name=\"chart-pie\" unicode=\"&#xf200;\" horiz-adv-x=\"544\" \nd=\"M527.79 160c9.5498 0 17.4004 -8.38965 16.0596 -17.8496c-7.80957 -55.25 -34.4297 -104.4 -73.1299 -140.86c-6.20996 -5.84961 -16.1494 -5.36035 -22.1895 0.679688l-158.03 158.03h237.29zM511.96 224.8c0.629883 -9.12012 -7.0498 -16.7998 -16.1904 -16.7998\nh-223.77v223.76c0 9.14062 7.67969 16.8301 16.7998 16.2002c119.46 -8.24023 214.92 -103.7 223.16 -223.16zM224 160l155.86 -155.87c6.84961 -6.84961 6.33008 -18.4795 -1.57031 -24.0801c-38.29 -27.1602 -84.8604 -43.3994 -135.26 -44.0303\nc-128.2 -1.60938 -238.53 103.471 -242.891 231.61c-4.23926 124.771 86.8506 228.88 206.021 245.72c9.4502 1.34082 17.8398 -6.50977 17.8398 -16.0596v-237.29z\" />\n    <glyph glyph-name=\"chart-line\" unicode=\"&#xf201;\" \nd=\"M496 64c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-464c-17.6699 0 -32 14.3301 -32 32v336c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-304h432zM464 352c8.83984 0 16 -7.16016 15.9902 -16v-118.05\nc0 -21.3799 -25.8506 -32.0898 -40.9707 -16.9697l-32.3994 32.3994l-96 -96c-12.4902 -12.5 -32.75 -12.5 -45.25 0l-73.3701 73.3701l-46.0596 -46.0703c-6.25 -6.25 -16.3809 -6.25 -22.6309 0l-22.6191 22.6201c-6.25 6.25 -6.25 16.3799 0 22.6299l68.6895 68.6904\nc12.4902 12.5 32.75 12.5 45.25 0l73.3701 -73.3701l73.3701 73.3799l-32.4004 32.4004c-15.1201 15.1201 -4.41016 40.9697 16.9707 40.9697h118.06z\" />\n    <glyph glyph-name=\"toggle-off\" unicode=\"&#xf204;\" horiz-adv-x=\"576\" \nd=\"M384 384c106.039 0 192 -85.9609 192 -192s-85.9609 -192 -192 -192h-192c-106.039 0 -192 85.9609 -192 192s85.9609 192 192 192h192zM64 192c0 -70.751 57.2588 -128 128 -128c70.751 0 128 57.2588 128 128c0 70.751 -57.2588 128 -128 128\nc-70.751 0 -128 -57.2588 -128 -128zM384 64c70.751 0 128 57.2598 128 128c0 70.751 -57.2588 128 -128 128h-48.9053c65.2363 -72.8799 65.2168 -183.142 0 -256h48.9053z\" />\n    <glyph glyph-name=\"toggle-on\" unicode=\"&#xf205;\" horiz-adv-x=\"576\" \nd=\"M384 384c106 0 192 -86 192 -192s-86 -192 -192 -192h-192c-106 0 -192 86 -192 192s86 192 192 192h192zM384 64c70.7002 0 128 57.2002 128 128c0 70.7002 -57.2002 128 -128 128c-70.7002 0 -128 -57.2002 -128 -128c0 -70.7002 57.2002 -128 128 -128z\" />\n    <glyph glyph-name=\"bicycle\" unicode=\"&#xf206;\" horiz-adv-x=\"640\" \nd=\"M512.509 255.999c70.9502 -0.276367 128.562 -59.0547 127.477 -129.996c-1.07422 -70.1934 -58.6494 -126.681 -129.255 -125.996c-68.8301 0.667969 -126.584 58.8857 -126.729 127.719c-0.078125 37.3564 15.8516 70.9893 41.3066 94.4375l-14.9375 24.0674\nl-85.9619 -138.863c-3.88477 -6.27441 -13.0264 -11.3672 -20.4062 -11.3672h-52.0332c-14.209 -55.207 -64.3252 -96 -123.967 -96c-70.9473 0 -128.415 57.7207 -128 128.764c0.410156 70.2246 58.0918 127.406 128.317 127.236\nc15.0879 -0.0371094 29.5586 -2.69043 42.9912 -7.51953l29.417 47.5195h-48.7256c-13.1191 0 -23.7627 10.5186 -23.9951 23.5635c-0.241211 13.4375 11.0947 24.4365 24.5361 24.4365h87.459c8.83691 0 16 -7.16309 16 -16v-16h113.544l-14.8955 24h-50.6494\nc-8.83691 0 -16 7.16309 -16 16v16c0 8.83691 7.16309 16 16 16h64h0.000976562c7.36914 0 16.5049 -5.08203 20.3906 -11.3428l77.6807 -125.153c14.4053 5.54004 30.0625 8.55957 46.4355 8.49512zM186.75 182.228l-23.6641 -38.2275h43.3057\nc-2.96875 14.5674 -9.91504 27.6992 -19.6416 38.2275zM128.002 48c32.7383 0 60.9297 19.7754 73.2998 48h-81.2998c-18.7891 0 -30.2871 20.6729 -20.4062 36.6318l45.5049 73.5088c-5.5127 1.20605 -11.2295 1.85938 -17.0986 1.85938c-44.1123 0 -80 -35.8877 -80 -80\ns35.8877 -80 80 -80zM290.632 144l74.2861 120h-127.547l-24.7461 -39.9736c22.8271 -20.1328 38.4229 -48.2705 42.3828 -80.0264h35.624zM507.689 48.1143c46.0605 -2.43164 84.3115 34.3447 84.3125 79.8848c0 44.1123 -35.8877 80 -80 80h-0.0390625\nc-5.55664 0 -14.4355 -1.11914 -19.8193 -2.49707l44.4688 -71.6426c4.66113 -7.50879 2.35156 -17.3721 -5.15625 -22.0322l-13.5938 -8.4375c-7.50879 -4.65918 -17.3721 -2.35156 -22.0322 5.15625l-44.4326 71.5859\nc-12.7021 -14.7451 -20.1475 -34.1416 -19.3359 -55.2627c1.57812 -41.0635 34.5918 -74.5898 75.6279 -76.7549z\" />\n    <glyph glyph-name=\"bus\" unicode=\"&#xf207;\" \nd=\"M488 320c13.25 0 24 -10.7402 24 -24v-80c0 -13.25 -10.75 -24 -24 -24h-8v-166.4c0 -12.7998 -9.59961 -25.5996 -25.5996 -25.5996h-6.40039v-32c0 -17.6699 -14.3301 -32 -32 -32h-32c-17.6699 0 -32 14.3301 -32 32v32h-192v-32c0 -17.6699 -14.3301 -32 -32 -32h-32\nc-17.6699 0 -32 14.3301 -32 32v32c-17.6699 0 -32 14.3301 -32 32v160h-8c-13.25 0 -24 10.75 -24 24v80c0 13.2598 10.75 24 24 24h8v48c0 44.7998 99.2002 80 224 80s224 -35.2002 224 -80v-48h8zM112 48c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32\ns-32 -14.3301 -32 -32s14.3301 -32 32 -32zM128 160h256c17.6699 0 32 14.3301 32 32v128c0 17.6699 -14.3301 32 -32 32h-256c-17.6699 0 -32 -14.3301 -32 -32v-128c0 -17.6699 14.3301 -32 32 -32zM400 48c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32\ns-32 -14.3301 -32 -32s14.3301 -32 32 -32z\" />\n    <glyph glyph-name=\"closed-captioning\" unicode=\"&#xf20a;\" \nd=\"M464 384c26.5 0 48 -21.5 48 -48v-288c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v288c0 26.5 21.5 48 48 48h416zM218.1 160.3c-41.1992 -37.8994 -92.1992 -15.3994 -92.2998 32.6006c0 46.0996 53.7998 63.1992 94.6006 31.1992\nc2.89941 -2.2998 7.19922 -1.39941 9.09961 1.7002l17.5 30.5c1.5 2.5 1.09961 3.7002 -1 5.7002c-50.7998 49.4004 -172.5 27.2002 -172.5 -70.0996c0 -100 119.2 -124.7 172.8 -67.9004c2 2.09961 2.2002 5.2998 0.5 7.7002l-19.5 27.7002\nc-2.09961 3 -6.39941 3.39941 -9.2002 0.899414zM408.5 160.3c-41.2002 -37.8994 -92.2002 -15.3994 -92.2002 32.6006c0 46.0996 53.7998 63.1992 94.6006 31.1992c2.89941 -2.2998 7.19922 -1.39941 9.09961 1.7002l17.5 30.5c1.5 2.5 1.09961 3.7002 -1 5.7002\nc-50.7998 49.4004 -172.5 27.2002 -172.5 -70.0996c0 -100 119.2 -124.801 172.7 -67.9004c2 2.09961 2.2002 5.2998 0.5 7.7002l-19.5 27.7002c-2.10059 3 -6.40039 3.39941 -9.2002 0.899414z\" />\n    <glyph glyph-name=\"shekel-sign\" unicode=\"&#xf20b;\" horiz-adv-x=\"448\" \nd=\"M248 280c0 30.9297 -25.0703 56 -56 56h-112v-352c0 -8.83984 -7.16016 -16 -16 -16h-48c-8.83984 0 -16 7.16016 -16 16v408c0 13.2598 10.75 24 24 24h168c75.1104 0 136 -60.8896 136 -136v-168c0 -8.83984 -7.16016 -16 -16 -16h-48c-8.83984 0 -16 7.16016 -16 16\nv168zM432 416c8.83984 0 16 -7.16016 16 -16v-296c0 -75.1104 -60.8896 -136 -136 -136h-168c-13.25 0 -24 10.75 -24 24v280c0 8.83984 7.16016 16 16 16h48c8.83984 0 16 -7.16016 16 -16v-224h112c30.9297 0 56 25.0703 56 56v296c0 8.83984 7.16016 16 16 16h48z\" />\n    <glyph glyph-name=\"cart-plus\" unicode=\"&#xf217;\" horiz-adv-x=\"576\" \nd=\"M504.717 128h-293.145l6.54492 -32h268.418c15.4004 0 26.8154 -14.3008 23.4033 -29.3193l-5.51758 -24.2754c18.6914 -9.07324 31.5791 -28.2334 31.5791 -50.4053c0 -31.2021 -25.5186 -56.4443 -56.8242 -55.9941\nc-29.8232 0.428711 -54.3496 24.6309 -55.1543 54.4473c-0.44043 16.2871 6.08496 31.0488 16.8027 41.5479h-209.648c10.377 -10.166 16.8242 -24.3271 16.8242 -40.001c0 -31.8135 -26.5283 -57.4307 -58.6699 -55.9385c-28.54 1.3252 -51.751 24.3857 -53.251 52.917\nc-1.1582 22.0342 10.4355 41.4551 28.0508 51.5869l-70.2471 343.435h-69.8828c-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24h102.529c11.4004 0 21.2275 -8.02148 23.5127 -19.1904l9.16602 -44.8096h392.782\nc15.4004 0 26.8154 -14.3008 23.4023 -29.3193l-47.2725 -208c-2.4834 -10.9268 -12.1973 -18.6807 -23.4033 -18.6807zM408 280h-48v40c0 8.83691 -7.16309 16 -16 16h-16c-8.83691 0 -16 -7.16309 -16 -16v-40h-48c-8.83691 0 -16 -7.16309 -16 -16v-16\nc0 -8.83691 7.16309 -16 16 -16h48v-40c0 -8.83691 7.16309 -16 16 -16h16c8.83691 0 16 7.16309 16 16v40h48c8.83691 0 16 7.16309 16 16v16c0 8.83691 -7.16309 16 -16 16z\" />\n    <glyph glyph-name=\"cart-arrow-down\" unicode=\"&#xf218;\" horiz-adv-x=\"576\" \nd=\"M504.717 128h-293.145l6.54492 -32h268.418c15.4004 0 26.8154 -14.3008 23.4033 -29.3193l-5.51758 -24.2754c18.6914 -9.07324 31.5791 -28.2334 31.5791 -50.4053c0 -31.2021 -25.5186 -56.4443 -56.8242 -55.9941\nc-29.8232 0.428711 -54.3496 24.6309 -55.1543 54.4473c-0.44043 16.2871 6.08496 31.0488 16.8027 41.5479h-209.648c10.377 -10.166 16.8242 -24.3271 16.8242 -40.001c0 -31.8135 -26.5283 -57.4307 -58.6699 -55.9385c-28.54 1.3252 -51.751 24.3857 -53.251 52.917\nc-1.1582 22.0342 10.4355 41.4551 28.0508 51.5869l-70.2471 343.435h-69.8828c-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24h102.529c11.4004 0 21.2275 -8.02148 23.5127 -19.1904l9.16602 -44.8096h392.782\nc15.4004 0 26.8154 -14.3008 23.4023 -29.3193l-47.2725 -208c-2.4834 -10.9268 -12.1973 -18.6807 -23.4033 -18.6807zM403.029 256h-43.0293v60c0 6.62695 -5.37305 12 -12 12h-24c-6.62695 0 -12 -5.37305 -12 -12v-60h-43.0293\nc-10.6904 0 -16.0449 -12.9258 -8.48438 -20.4854l67.0283 -67.0283c4.68652 -4.68652 12.2842 -4.68652 16.9717 0l67.0283 67.0283c7.55957 7.55957 2.20508 20.4854 -8.48535 20.4854z\" />\n    <glyph glyph-name=\"ship\" unicode=\"&#xf21a;\" horiz-adv-x=\"640\" \nd=\"M496.616 75.3613c17.8418 -44.3604 58.5664 -75.3613 119.384 -75.3613c13.2549 0 24 -10.7451 24 -24v-16c0 -13.2549 -10.7451 -24 -24 -24c-61.0322 0 -107.505 20.6162 -143.258 59.3965c-14.4189 -34.8281 -48.7637 -59.3965 -88.7422 -59.3965h-128\nc-39.9785 0 -74.3232 24.5684 -88.7422 59.3965c-35.7588 -38.7861 -82.2344 -59.3965 -143.258 -59.3965c-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24c61.5869 0 101.828 31.7129 119.384 75.3613l-70.0117 70.0117\nc-16.918 16.9189 -9.91699 45.7793 12.8359 53.0918l41.792 13.4336v140.102c0 17.6729 14.3271 32 32 32h64v40c0 13.2549 10.7451 24 24 24h144c13.2549 0 24 -10.7451 24 -24v-40h64c17.6729 0 32 -14.3271 32 -32v-140.102l41.792 -13.4336\nc22.7783 -7.32129 29.7354 -36.1914 12.8359 -53.0918zM192 320v-87.5312l118.208 37.9951c2.63574 0.847656 7.02344 1.53516 9.79199 1.53516s7.15625 -0.6875 9.79199 -1.53516l118.208 -37.9951v87.5312h-256z\" />\n    <glyph glyph-name=\"user-secret\" unicode=\"&#xf21b;\" horiz-adv-x=\"448\" \nd=\"M383.9 139.7c38.2998 -23.7002 64.0996 -65.7002 64.0996 -114.101v-44.7998c0 -24.7002 -20.0996 -44.7998 -44.7998 -44.7998h-358.4c-24.7002 0 -44.7998 20.0996 -44.7998 44.7998v44.7998c0 49.7002 27.2998 92.6006 67.4004 115.9l-25.8008 60.2002\nc-4.5 10.5996 3.2002 22.2998 14.7002 22.2998h57.5c-11 18.9004 -17.7998 40.5996 -17.7998 64v0.299805c-39.2002 7.7998 -64 19.1006 -64 31.7002c0 13.2998 27.2998 25.0996 70 33c9.2002 32.7998 27.0996 65.7998 40.5996 82.7998\nc9.5 11.9004 25.9004 15.6006 39.5 8.7998l27.6006 -13.7998c9 -4.5 19.5996 -4.5 28.5996 0l27.6006 13.7998c13.5996 6.80078 30 3.10059 39.5 -8.7998c13.5996 -17 31.3994 -50 40.5996 -82.7998c42.7998 -7.90039 70.0996 -19.7002 70.0996 -33\nc0 -12.5996 -24.7998 -23.9004 -64 -31.7002v-0.299805c0 -23.4004 -6.7998 -45.0996 -17.7998 -64h58.5c11.2998 0 19 -11.2002 15 -21.7002zM176 -32l32 120l-24 40l-49.5996 32zM272 -32l41.5996 192l-49.5996 -32l-24 -40zM313.7 266.5\nc0.799805 2.59961 6.2998 5.7002 6.39941 5.7998v10.7998c-28.2998 -3.69922 -61 -5.7998 -96 -5.7998s-67.6992 2.2002 -96 5.7998v-10.7998c0 -0.0996094 5.5 -3.2998 6.30078 -5.7998c3.7998 -11.9004 7 -24.5996 16.5 -33.4004c8 -7.39941 47 -25.1992 64 25\nc2.89941 8.40039 15.5 8.40039 18.2998 0c16 -47.3994 53.8994 -34.2998 64 -25c9.5 8.80078 12.5996 21.5 16.5 33.4004z\" />\n    <glyph glyph-name=\"motorcycle\" unicode=\"&#xf21c;\" horiz-adv-x=\"640\" \nd=\"M512.9 256c69.5996 -0.5 126.5 -57.2998 127.199 -126.9c0.600586 -71.5996 -57.5996 -129.8 -129.199 -129.1c-69.6006 0.599609 -126.301 57.5 -126.801 127.1c-0.299805 39.3008 17.2002 74.5 44.8008 98.2002l-12.5 20.7998\nc-38.7002 -31.2998 -58.3008 -77.8994 -56.2002 -125c0.599609 -13.6992 -10.2998 -25.0996 -24 -25.0996h-84.2002c-14.2998 -55.2002 -64.4004 -96 -124 -96c-71.7002 0 -129.6 58.9004 -128 131c1.59961 67.4004 55.9004 122.5 123.2 124.9\nc14.3994 0.5 28.2998 -1.30078 41.2998 -5.2002l11.2998 20.5c-9.09961 13.8994 -23.2998 24.7998 -47.7998 24.7998h-56c-13.0996 0 -23.7998 10.5 -24 23.5c-0.299805 13.5 11 24.5 24.5 24.5h55.5c55 0 82.2002 -16.9004 99.9004 -40h153.699l-19.1992 32h-66.4004\nc-8.7998 0 -16 7.2002 -16 16v16c0 8.7998 7.2002 16 16 16h80c8.40039 0 16.2002 -4.40039 20.5996 -11.5996l22.8008 -38l37.5 41.6992c4.5 5 11 7.90039 17.7998 7.90039h45.2998c13.2998 0 24 -10.7002 24 -24v-32c0 -13.2998 -10.7002 -24 -24 -24h-82.4004\nl32.9004 -54.9004c13.2998 4.60059 27.5 7 42.4004 6.90039zM128 48c32.7002 0 60.9004 19.7998 73.2998 48h-81.2998c-18.2002 0 -29.7998 19.5996 -21 35.5996l41.5 75.4004c-4.09961 0.700195 -8.2998 1 -12.5 1c-44.0996 0 -80 -35.9004 -80 -80s35.9004 -80 80 -80z\nM591.9 123.6c2.39941 46.1006 -34.3008 84.4004 -79.9004 84.3008c-5.40039 0 -10.7002 -0.5 -15.9004 -1.60059l48.6006 -80.8994c4.5 -7.60059 2.09961 -17.5 -5.5 -22l-13.7002 -8.2002c-7.59961 -4.5 -17.5 -2.10059 -22 5.5l-49.4004 82.3994\nc-13.6992 -14.2998 -22.0996 -33.6992 -22.0996 -55.0996c0 -45.5996 38.2998 -82.4004 84.4004 -79.9004c40.5 2.10059 73.2998 34.9004 75.5 75.5z\" />\n    <glyph glyph-name=\"street-view\" unicode=\"&#xf21d;\" \nd=\"M367.9 118.24c85.2295 -15.5801 144.1 -48.29 144.1 -86.2402c0 -53.0195 -114.62 -96 -256 -96s-256 42.9805 -256 96c0 37.9502 58.8701 70.6602 144.1 86.2402c4.62012 -5.2998 9.78027 -10.1006 15.9004 -13.6504v-22.9395\nc-66.5195 -9.35059 -112 -28.0508 -112 -49.6504c0 -30.9297 93.1201 -56 208 -56s208 25.0703 208 56c0 21.5996 -45.4805 40.3096 -112 49.6504v22.9395c6.12012 3.5498 11.2803 8.35059 15.9004 13.6504zM256 320c-35.3496 0 -64 28.6504 -64 64s28.6504 64 64 64\ns64 -28.6504 64 -64s-28.6504 -64 -64 -64zM192 128c-17.6699 0 -32 14.3301 -32 32v96c0 26.5098 21.4902 48 48 48h11.7998c11.0703 -5.03027 23.2598 -8 36.2002 -8s25.1299 2.96973 36.2002 8h11.7998c26.5098 0 48 -21.4902 48 -48v-96\nc0 -17.6699 -14.3301 -32 -32 -32v-96c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v96z\" />\n    <glyph glyph-name=\"heartbeat\" unicode=\"&#xf21e;\" \nd=\"M320.2 204.2l22.0996 -44.2002h109.101l-182.601 -186.5c-7.09961 -7.2998 -18.5996 -7.2998 -25.7002 0l-182.5 186.5h94.1006l30 71.7002l56.8994 -126.3c5.5 -12.3008 22.9004 -12.7002 28.9004 -0.600586zM473.7 374.1\nc48.7002 -49.7998 50.7998 -129.1 7.2998 -182.1h-118.9l-27.5996 55.2002c-5.90039 11.7998 -22.7002 11.7998 -28.5996 0l-49 -97.9004l-58.2002 129.3c-5.7998 12.8008 -24 12.5 -29.4004 -0.399414l-35.8994 -86.2002h-102.4c-43.5 53 -41.4004 132.3 7.2998 182.1\nl2.40039 2.40039c51.5 52.7002 135.899 52.7002 187.399 0l27.9004 -28.5l27.9004 28.5996c51.5996 52.6006 135.899 52.6006 187.399 0z\" />\n    <glyph glyph-name=\"venus\" unicode=\"&#xf221;\" horiz-adv-x=\"288\" \nd=\"M288 272c0 -68.5 -47.9004 -125.9 -112 -140.4v-51.5996h36c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-36v-36c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v36h-36c-6.59961 0 -12 5.40039 -12 12v40\nc0 6.59961 5.40039 12 12 12h36v51.5996c-64.0996 14.5 -112 71.9004 -112 140.4c0 79.5 64.5 144 144 144s144 -64.5 144 -144zM64 272c0 -44.0996 35.9004 -80 80 -80s80 35.9004 80 80s-35.9004 80 -80 80s-80 -35.9004 -80 -80z\" />\n    <glyph glyph-name=\"mars\" unicode=\"&#xf222;\" horiz-adv-x=\"384\" \nd=\"M372 384c6.59961 0 12 -5.40039 12 -12v-79c0 -10.7002 -12.9004 -16.0996 -20.5 -8.5l-16.9004 16.9004l-80.6992 -80.7002c14 -22.2002 22.0996 -48.5 22.0996 -76.7002c0 -79.5 -64.5 -144 -144 -144s-144 64.5 -144 144s64.5 144 144 144\nc28.2002 0 54.5 -8.09961 76.7002 -22.0996l80.7002 80.6992l-16.9004 16.9004c-7.5 7.59961 -2.2002 20.5 8.5 20.5h79zM144 64c44.0996 0 80 35.9004 80 80s-35.9004 80 -80 80s-80 -35.9004 -80 -80s35.9004 -80 80 -80z\" />\n    <glyph glyph-name=\"mercury\" unicode=\"&#xf223;\" horiz-adv-x=\"288\" \nd=\"M288 240c0 -68.5 -47.9004 -125.9 -112 -140.4v-51.5996h36c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-36v-36c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v36h-36c-6.59961 0 -12 5.40039 -12 12v40\nc0 6.59961 5.40039 12 12 12h36v51.5996c-64.0996 14.5 -112 71.9004 -112 140.4c0 44.2002 19.9004 83.7002 51.2002 110c-2.5 1.90039 -4.90039 3.7998 -7.2002 5.7998c-24.7998 21.2002 -39.7998 48.7998 -43.2002 78.9004\nc-0.899414 7.09961 4.7002 13.2998 11.9004 13.2998h40.5c5.7002 0 10.5996 -4.09961 11.7002 -9.7998c2.5 -12.5 9.59961 -24.2998 20.6992 -33.7998c15.4004 -13.2002 36.1006 -20.4004 58.4004 -20.4004s43 7.2002 58.2998 20.4004\nc11.1006 9.5 18.2998 21.2998 20.7002 33.7998c1.09961 5.7002 6 9.7998 11.7998 9.7998h40.5c7.2002 0 12.7998 -6.2002 11.9004 -13.2998c-3.40039 -30 -18.5 -57.6006 -43.2002 -78.7998c-2.2998 -2 -4.7002 -4 -7.2002 -5.80078\nc31.2998 -26.3994 51.2002 -65.8994 51.2002 -110.1zM64 240c0 -44.0996 35.9004 -80 80 -80s80 35.9004 80 80s-35.9004 80 -80 80s-80 -35.9004 -80 -80z\" />\n    <glyph glyph-name=\"transgender\" unicode=\"&#xf224;\" horiz-adv-x=\"384\" \nd=\"M372 448c6.59961 0 12 -5.40039 12 -12v-79c0 -10.7002 -12.9004 -16.0996 -20.5 -8.5l-16.9004 16.9004l-80.6992 -80.7002c14 -22.2002 22.0996 -48.5 22.0996 -76.7002c0 -68.5 -47.9004 -125.8 -112 -140.4v-27.5996h36c6.59961 0 12 -5.40039 12 -12v-40\nc0 -6.59961 -5.40039 -12 -12 -12h-36v-28c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v28h-36c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h36v27.5996c-64.0996 14.5 -112 71.9004 -112 140.4c0 79.5 64.5 144 144 144\nc28.2002 0 54.5 -8.09961 76.7002 -22.0996l80.7002 80.6992l-16.9004 16.9004c-7.5 7.59961 -2.2002 20.5 8.5 20.5h79zM144 128c44.0996 0 80 35.9004 80 80s-35.9004 80 -80 80s-80 -35.9004 -80 -80s35.9004 -80 80 -80z\" />\n    <glyph glyph-name=\"transgender-alt\" unicode=\"&#xf225;\" horiz-adv-x=\"480\" \nd=\"M468 448c6.59961 0 12 -5.40039 12 -12v-79c0 -10.7002 -12.9004 -16.0996 -20.5 -8.5l-16.9004 16.9004l-80.6992 -80.7002c14 -22.2002 22.0996 -48.5 22.0996 -76.7002c0 -68.5 -47.9004 -125.8 -112 -140.4v-27.5996h36c6.59961 0 12 -5.40039 12 -12v-40\nc0 -6.59961 -5.40039 -12 -12 -12h-36v-28c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v28h-36c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h36v27.5996c-64.0996 14.5 -112 71.9004 -112 140.4\nc0 28.2002 8.09961 54.5 22.2002 76.5996l-16.5 16.5l-19.7998 -19.7998c-4.7002 -4.7002 -12.3008 -4.7002 -17 0l-28.3008 28.2998c-4.69922 4.7002 -4.69922 12.3008 0 17l19.8008 19.8008l-19 19l-16.9004 -16.9004c-7.59961 -7.5 -20.5 -2.2002 -20.5 8.5v79\nc0 6.59961 5.40039 12 12 12h79c10.7002 0 16.0996 -12.9004 8.40039 -20.4004l-16.9004 -16.8994l19 -19l19.7998 19.7998c4.7002 4.7002 12.2998 4.7002 17 0l28.2998 -28.2998c4.7002 -4.7002 4.7002 -12.2998 0 -17l-19.7998 -19.7998l16.5 -16.5\nc22.2002 14 48.5 22.0996 76.7002 22.0996s54.5 -8.09961 76.7002 -22.0996l80.7002 80.6992l-16.9004 16.9004c-7.5 7.59961 -2.2002 20.5 8.5 20.5h79zM240 128c44.0996 0 80 35.9004 80 80s-35.9004 80 -80 80s-80 -35.9004 -80 -80s35.9004 -80 80 -80z\" />\n    <glyph glyph-name=\"venus-double\" unicode=\"&#xf226;\" \nd=\"M288 272c0 -68.5 -47.9004 -125.9 -112 -140.4v-51.5996h36c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-36v-36c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v36h-36c-6.59961 0 -12 5.40039 -12 12v40\nc0 6.59961 5.40039 12 12 12h36v51.5996c-64.0996 14.5 -112 71.9004 -112 140.4c0 79.5 64.5 144 144 144s144 -64.5 144 -144zM64 272c0 -44.0996 35.9004 -80 80 -80s80 35.9004 80 80s-35.9004 80 -80 80s-80 -35.9004 -80 -80zM400 131.6v-51.5996h36\nc6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-36v-36c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v36h-36c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h36v51.5996\nc-21.2002 4.80078 -40.5996 14.3008 -57.2002 27.3008c14 16.6992 25 36 32.1006 57.0996c14.5 -14.7998 34.6992 -24 57.0996 -24c44.0996 0 80 35.9004 80 80s-35.9004 80 -80 80c-22.2998 0 -42.5996 -9.2002 -57.0996 -24\nc-7.10059 21.0996 -18 40.4004 -32.1006 57.0996c24.6006 19.3008 55.5 30.9004 89.2002 30.9004c79.5 0 144 -64.5 144 -144c0 -68.5 -47.9004 -125.9 -112 -140.4z\" />\n    <glyph glyph-name=\"mars-double\" unicode=\"&#xf227;\" \nd=\"M340 448c6.59961 0 12 -5.40039 12 -12v-79c0 -7.2002 -5.90039 -12 -12.0996 -12c-2.90039 0 -6 1.09961 -8.40039 3.5l-16.9004 16.9004l-48.6992 -48.7002c14 -22.2002 22.0996 -48.5 22.0996 -76.7002c0 -79.5 -64.5 -144 -144 -144s-144 64.5 -144 144\ns64.5 144 144 144c28.2002 0 54.5 -8.09961 76.7002 -22.0996l48.7002 48.6992l-16.9004 16.9004c-7.5 7.59961 -2.2002 20.5 8.5 20.5h79zM144 160c44.0996 0 80 35.9004 80 80s-35.9004 80 -80 80s-80 -35.9004 -80 -80s35.9004 -80 80 -80zM500 288.1\nc6.59961 0 12 -5.39941 12 -12.0996v-79c0 -7.2002 -5.90039 -12 -12.0996 -12c-3 0 -6 1.09961 -8.40039 3.5l-16.9004 16.9004l-48.6992 -48.7002c14 -22.2002 22.0996 -48.5 22.0996 -76.7002c0 -79.5 -64.5 -144 -144 -144c-74.4004 0 -135.6 56.4004 -143.2 128.9\nc21.7998 2 43.2998 8.19922 63.2998 18.3994c-0.0996094 -1 -0.0996094 -2.09961 -0.0996094 -3.2002c0 -44.0996 35.9004 -80 80 -80s80 35.9004 80 80c0 44.1006 -35.9004 80 -80 80c-1 0 -2.09961 -0.0996094 -3.2002 -0.0996094\nc10.2002 20 16.2998 41.5 18.4004 63.2998c22.5 -2.39941 43.2998 -9.89941 61.5 -21.2998l48.7002 48.7002l-16.9004 16.8994c-7.5 7.60059 -2.2002 20.5 8.5 20.5h79z\" />\n    <glyph glyph-name=\"venus-mars\" unicode=\"&#xf228;\" horiz-adv-x=\"576\" \nd=\"M564 448c6.59961 0 12 -5.40039 12 -12v-79c0 -7.2002 -5.90039 -12 -12.0996 -12c-3 0 -6 1.09961 -8.40039 3.5l-16.9004 16.9004l-48.6992 -48.7002c14 -22.2002 22.0996 -48.5 22.0996 -76.7002c0 -79.5 -64.5 -144 -144 -144\nc-33.7002 0 -64.7002 11.5 -89.2002 30.9004c14.1006 16.6992 25 36 32.1006 57.0996c14.5 -14.7998 34.7998 -24 57.0996 -24c44.0996 0 80 35.9004 80 80s-35.9004 80 -80 80c-22.4004 0 -42.5996 -9.2002 -57.0996 -24\nc-7.10059 21.0996 -18.1006 40.4004 -32.1006 57.0996c24.6006 19.3008 55.5 30.9004 89.2002 30.9004c28.2002 0 54.5 -8.09961 76.7002 -22.0996l48.7002 48.6992l-16.9004 16.9004c-7.5 7.59961 -2.2002 20.5 8.5 20.5h79zM144 384c79.5 0 144 -64.5 144 -144\nc0 -68.5 -47.9004 -125.8 -112 -140.4v-51.5996h36c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-36v-36c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v36h-36c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12\nh36v51.5996c-64.0996 14.5 -112 71.9004 -112 140.4c0 79.5 64.5 144 144 144zM144 160c44.0996 0 80 35.9004 80 80s-35.9004 80 -80 80s-80 -35.9004 -80 -80s35.9004 -80 80 -80z\" />\n    <glyph glyph-name=\"mars-stroke\" unicode=\"&#xf229;\" horiz-adv-x=\"384\" \nd=\"M372 384c6.59961 0 12 -5.40039 12.0996 -12v-78.9004c0 -10.6992 -12.8994 -16.0996 -20.5 -8.5l-16.8994 16.9004l-17.5 -17.5l14.0996 -14.0996c4.7002 -4.7002 4.7002 -12.3008 0 -17l-28.2998 -28.3008c-4.7002 -4.69922 -12.2998 -4.69922 -17 0l-14.0996 14.1006\nl-18 -18c14 -22.2002 22.0996 -48.5 22.0996 -76.7002c0 -79.5 -64.5 -144 -144 -144s-144 64.5 -144 144s64.5 144 143.9 144c28.1992 0 54.5 -8.09961 76.6992 -22.0996l18 18l-14.0996 14.0996c-4.7002 4.7002 -4.7002 12.2998 0 17l28.2998 28.2002\nc4.7002 4.7002 12.2998 4.7002 17 0l14.1006 -14.1006l17.5 17.5l-16.9004 16.9004c-7.5 7.59961 -2.2002 20.5 8.5 20.5h79zM144 64c44.0996 0 80 35.9004 80 80s-35.9004 80 -80 80s-80 -35.9004 -80 -80s35.9004 -80 80 -80z\" />\n    <glyph glyph-name=\"mars-stroke-v\" unicode=\"&#xf22a;\" horiz-adv-x=\"288\" \nd=\"M245.8 213.8c56.2998 -56.2002 56.2998 -147.399 0 -203.6c-56.2002 -56.2002 -147.399 -56.2002 -203.6 0s-56.2002 147.399 0 203.6c19.8994 19.9004 44.2002 32.7998 69.7998 38.6006v25.3994h-20c-6.59961 0 -12 5.40039 -12 12v40c0 6.60059 5.40039 12 12 12h20\nv24.7002h-23.9004c-10.6992 0 -16.0996 12.9004 -8.5 20.5l55.9004 55.9004c4.7002 4.69922 12.2998 4.69922 17 0l55.9004 -55.8008c7.5 -7.59961 2.19922 -20.5 -8.5 -20.5h-23.9004v-24.7998h20c6.59961 0 12 -5.39941 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-20\nv-25.3994c25.5996 -5.80078 49.9004 -18.7002 69.7998 -38.6006zM200.6 55.4004c31.2002 31.1992 31.2002 82 0 113.1c-31.1992 31.2002 -81.8994 31.2002 -113.1 0s-31.2002 -81.9004 0 -113.1c31.2002 -31.2002 81.9004 -31.2002 113.1 0z\" />\n    <glyph glyph-name=\"mars-stroke-h\" unicode=\"&#xf22b;\" horiz-adv-x=\"480\" \nd=\"M476.2 200.5c4.7002 -4.7002 4.7002 -12.2998 0.0996094 -17l-55.8994 -55.9004c-7.60059 -7.5 -20.5 -2.19922 -20.5 8.5v23.9004h-23.9004v-20c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v20h-27.5996\nc-5.80078 -25.5996 -18.7002 -49.9004 -38.6006 -69.7998c-56.2002 -56.2002 -147.399 -56.2002 -203.6 0s-56.2002 147.399 0 203.6s147.399 56.2002 203.6 0c19.9004 -19.8994 32.7998 -44.2002 38.6006 -69.7998h27.5996v20c0 6.59961 5.40039 12 12 12h40\nc6.59961 0 12 -5.40039 12 -12v-20h23.7998v23.9004c0 10.6992 12.9004 16.0996 20.5 8.5zM200.6 135.4c31.2002 31.1992 31.2002 82 0 113.1c-31.1992 31.2002 -81.8994 31.2002 -113.1 0s-31.2002 -81.9004 0 -113.1c31.2002 -31.2002 81.9004 -31.2002 113.1 0z\" />\n    <glyph glyph-name=\"neuter\" unicode=\"&#xf22c;\" horiz-adv-x=\"288\" \nd=\"M288 272c0 -68.5 -47.9004 -125.9 -112 -140.4v-151.6c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v151.6c-64.0996 14.5 -112 71.9004 -112 140.4c0 79.5 64.5 144 144 144s144 -64.5 144 -144zM144 192c44.0996 0 80 35.9004 80 80\ns-35.9004 80 -80 80s-80 -35.9004 -80 -80s35.9004 -80 80 -80z\" />\n    <glyph glyph-name=\"genderless\" unicode=\"&#xf22d;\" horiz-adv-x=\"288\" \nd=\"M144 272c-44.0996 0 -80 -35.9004 -80 -80s35.9004 -80 80 -80s80 35.9004 80 80s-35.9004 80 -80 80zM144 336c79.5 0 144 -64.5 144 -144s-64.5 -144 -144 -144s-144 64.5 -144 144s64.5 144 144 144z\" />\n    <glyph glyph-name=\"server\" unicode=\"&#xf233;\" \nd=\"M480 288h-448c-17.6729 0 -32 14.3271 -32 32v64c0 17.6729 14.3271 32 32 32h448c17.6729 0 32 -14.3271 32 -32v-64c0 -17.6729 -14.3271 -32 -32 -32zM432 376c-13.2549 0 -24 -10.7451 -24 -24s10.7451 -24 24 -24s24 10.7451 24 24s-10.7451 24 -24 24zM368 376\nc-13.2549 0 -24 -10.7451 -24 -24s10.7451 -24 24 -24s24 10.7451 24 24s-10.7451 24 -24 24zM480 128h-448c-17.6729 0 -32 14.3271 -32 32v64c0 17.6729 14.3271 32 32 32h448c17.6729 0 32 -14.3271 32 -32v-64c0 -17.6729 -14.3271 -32 -32 -32zM432 216\nc-13.2549 0 -24 -10.7451 -24 -24s10.7451 -24 24 -24s24 10.7451 24 24s-10.7451 24 -24 24zM368 216c-13.2549 0 -24 -10.7451 -24 -24s10.7451 -24 24 -24s24 10.7451 24 24s-10.7451 24 -24 24zM480 -32h-448c-17.6729 0 -32 14.3271 -32 32v64\nc0 17.6729 14.3271 32 32 32h448c17.6729 0 32 -14.3271 32 -32v-64c0 -17.6729 -14.3271 -32 -32 -32zM432 56c-13.2549 0 -24 -10.7451 -24 -24s10.7451 -24 24 -24s24 10.7451 24 24s-10.7451 24 -24 24zM368 56c-13.2549 0 -24 -10.7451 -24 -24s10.7451 -24 24 -24\ns24 10.7451 24 24s-10.7451 24 -24 24z\" />\n    <glyph glyph-name=\"user-plus\" unicode=\"&#xf234;\" horiz-adv-x=\"640\" \nd=\"M624 240c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-64v-64c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v64h-64c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h64v64c0 8.7998 7.2002 16 16 16h32\nc8.7998 0 16 -7.2002 16 -16v-64h64zM224 192c-70.7002 0 -128 57.2998 -128 128s57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128zM313.6 160c74.2002 0 134.4 -60.2002 134.4 -134.4v-41.5996c0 -26.5 -21.5 -48 -48 -48h-352\nc-26.5 0 -48 21.5 -48 48v41.5996c0 74.2002 60.2002 134.4 134.4 134.4h16.6992c22.3008 -10.2002 46.9004 -16 72.9004 -16s50.7002 5.7998 72.9004 16h16.6992z\" />\n    <glyph glyph-name=\"user-times\" unicode=\"&#xf235;\" horiz-adv-x=\"640\" \nd=\"M589.6 208l45.6006 -45.5996c6.2998 -6.30078 6.2998 -16.5 0 -22.8008l-22.7998 -22.7998c-6.30078 -6.2998 -16.5 -6.2998 -22.8008 0l-45.5996 45.6006l-45.5996 -45.6006c-6.30078 -6.2998 -16.5 -6.2998 -22.8008 0l-22.7998 22.7998\nc-6.2998 6.30078 -6.2998 16.5 0 22.8008l45.6006 45.5996l-45.6006 45.5996c-6.2998 6.30078 -6.2998 16.5 0 22.8008l22.7998 22.7998c6.30078 6.2998 16.5 6.2998 22.8008 0l45.5996 -45.6006l45.5996 45.6006c6.30078 6.2998 16.5 6.2998 22.8008 0l22.7998 -22.7998\nc6.2998 -6.30078 6.2998 -16.5 0 -22.8008zM224 192c-70.7002 0 -128 57.2998 -128 128s57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128zM313.6 160c74.2002 0 134.4 -60.2002 134.4 -134.4v-41.5996c0 -26.5 -21.5 -48 -48 -48h-352\nc-26.5 0 -48 21.5 -48 48v41.5996c0 74.2002 60.2002 134.4 134.4 134.4h16.6992c22.3008 -10.2002 46.9004 -16 72.9004 -16s50.7002 5.7998 72.9004 16h16.6992z\" />\n    <glyph glyph-name=\"bed\" unicode=\"&#xf236;\" horiz-adv-x=\"640\" \nd=\"M176 192c-44.1104 0 -80 35.8896 -80 80s35.8896 80 80 80s80 -35.8896 80 -80s-35.8896 -80 -80 -80zM528 320c61.8604 0 112 -50.1396 112 -112v-192c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v48h-512v-48c0 -8.83984 -7.16016 -16 -16 -16\nh-32c-8.83984 0 -16 7.16016 -16 16v352c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-208h224v144c0 8.83984 7.16016 16 16 16h224z\" />\n    <glyph glyph-name=\"train\" unicode=\"&#xf238;\" horiz-adv-x=\"448\" \nd=\"M448 352v-256c0 -51.8154 -61.624 -96 -130.022 -96l62.9805 -49.7207c5.94727 -4.69629 2.60352 -14.2793 -4.95801 -14.2793h-304c-7.57812 0 -10.8916 9.59375 -4.95703 14.2793l62.9795 49.7207c-68.2021 0 -130.022 44.0459 -130.022 96v256c0 53.0186 64 96 128 96\nh192c65 0 128 -42.9814 128 -96zM400 216v112c0 13.2549 -10.7451 24 -24 24h-304c-13.2549 0 -24 -10.7451 -24 -24v-112c0 -13.2549 10.7451 -24 24 -24h304c13.2549 0 24 10.7451 24 24zM224 152c-30.9277 0 -56 -25.0723 -56 -56s25.0723 -56 56 -56s56 25.0723 56 56\ns-25.0723 56 -56 56z\" />\n    <glyph glyph-name=\"subway\" unicode=\"&#xf239;\" horiz-adv-x=\"448\" \nd=\"M448 352v-256c0 -51.8154 -61.624 -96 -130.022 -96l62.9805 -49.7207c5.94727 -4.69629 2.60352 -14.2793 -4.95801 -14.2793h-304c-7.57812 0 -10.8916 9.59375 -4.95703 14.2793l62.9795 49.7207c-68.2021 0 -130.022 44.0459 -130.022 96v256c0 53.0186 64 96 128 96\nh192c65 0 128 -42.9814 128 -96zM200 216v112c0 13.2549 -10.7451 24 -24 24h-104c-13.2549 0 -24 -10.7451 -24 -24v-112c0 -13.2549 10.7451 -24 24 -24h104c13.2549 0 24 10.7451 24 24zM400 216v112c0 13.2549 -10.7451 24 -24 24h-104c-13.2549 0 -24 -10.7451 -24 -24\nv-112c0 -13.2549 10.7451 -24 24 -24h104c13.2549 0 24 10.7451 24 24zM352 160c-26.5098 0 -48 -21.4902 -48 -48s21.4902 -48 48 -48s48 21.4902 48 48s-21.4902 48 -48 48zM96 160c-26.5098 0 -48 -21.4902 -48 -48s21.4902 -48 48 -48s48 21.4902 48 48\ns-21.4902 48 -48 48z\" />\n    <glyph glyph-name=\"battery-full\" unicode=\"&#xf240;\" horiz-adv-x=\"640\" \nd=\"M544 288h-480v-192h480v64h32v64h-32v64zM560 352c26.5098 0 48 -21.4902 48 -48v-16h8c13.2549 0 24 -10.7451 24 -24v-144c0 -13.2549 -10.7451 -24 -24 -24h-8v-16c0 -26.5098 -21.4902 -48 -48 -48h-512c-26.5098 0 -48 21.4902 -48 48v224\nc0 26.5098 21.4902 48 48 48h512zM512 256v-128h-416v128h416z\" />\n    <glyph glyph-name=\"battery-three-quarters\" unicode=\"&#xf241;\" horiz-adv-x=\"640\" \nd=\"M544 288h-480v-192h480v64h32v64h-32v64zM560 352c26.5098 0 48 -21.4902 48 -48v-16h8c13.2549 0 24 -10.7451 24 -24v-144c0 -13.2549 -10.7451 -24 -24 -24h-8v-16c0 -26.5098 -21.4902 -48 -48 -48h-512c-26.5098 0 -48 21.4902 -48 48v224\nc0 26.5098 21.4902 48 48 48h512zM416 256v-128h-320v128h320z\" />\n    <glyph glyph-name=\"battery-half\" unicode=\"&#xf242;\" horiz-adv-x=\"640\" \nd=\"M544 288h-480v-192h480v64h32v64h-32v64zM560 352c26.5098 0 48 -21.4902 48 -48v-16h8c13.2549 0 24 -10.7451 24 -24v-144c0 -13.2549 -10.7451 -24 -24 -24h-8v-16c0 -26.5098 -21.4902 -48 -48 -48h-512c-26.5098 0 -48 21.4902 -48 48v224\nc0 26.5098 21.4902 48 48 48h512zM320 256v-128h-224v128h224z\" />\n    <glyph glyph-name=\"battery-quarter\" unicode=\"&#xf243;\" horiz-adv-x=\"640\" \nd=\"M544 288h-480v-192h480v64h32v64h-32v64zM560 352c26.5098 0 48 -21.4902 48 -48v-16h8c13.2549 0 24 -10.7451 24 -24v-144c0 -13.2549 -10.7451 -24 -24 -24h-8v-16c0 -26.5098 -21.4902 -48 -48 -48h-512c-26.5098 0 -48 21.4902 -48 48v224\nc0 26.5098 21.4902 48 48 48h512zM224 256v-128h-128v128h128z\" />\n    <glyph glyph-name=\"battery-empty\" unicode=\"&#xf244;\" horiz-adv-x=\"640\" \nd=\"M544 288h-480v-192h480v64h32v64h-32v64zM560 352c26.5098 0 48 -21.4902 48 -48v-16h8c13.2549 0 24 -10.7451 24 -24v-144c0 -13.2549 -10.7451 -24 -24 -24h-8v-16c0 -26.5098 -21.4902 -48 -48 -48h-512c-26.5098 0 -48 21.4902 -48 48v224\nc0 26.5098 21.4902 48 48 48h512z\" />\n    <glyph glyph-name=\"mouse-pointer\" unicode=\"&#xf245;\" horiz-adv-x=\"320\" \nd=\"M302.189 118.874h-106.084l55.8301 -135.993c3.88965 -9.42773 -0.554688 -19.999 -9.44336 -23.999l-49.165 -21.4268c-9.16504 -4 -19.4434 0.571289 -23.332 9.71387l-53.0527 129.136l-86.6641 -89.1377c-11.5498 -11.877 -30.2783 -2.7207 -30.2783 12.8564v429.678\nc0 16.3994 19.9209 24.3945 30.2773 12.8555l284.412 -292.542c11.4717 -11.1787 3.00684 -31.1406 -12.5 -31.1406z\" />\n    <glyph glyph-name=\"i-cursor\" unicode=\"&#xf246;\" horiz-adv-x=\"256\" \nd=\"M256 395.952c0 -6.64648 -5.4043 -12.0098 -12.0498 -11.9922c-27.875 0.0712891 -83.9502 -3.20996 -83.9502 -48.1416v-111.818h36c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-36v-112c0 -44.9395 57.8887 -48.5527 83.8555 -48.2422\nc6.68652 0.0800781 12.1445 -5.31055 12.1445 -11.998v-39.6445c0 -6.5957 -5.31836 -11.957 -11.9131 -12c-35.0654 -0.228516 -78.3525 0.62207 -116.087 37.8447c-38.4688 -37.9482 -83.6211 -38.3027 -116.158 -37.8936\nc-6.56738 0.0820312 -11.8418 5.42969 -11.8418 11.999v39.9824c0 6.64648 5.4043 12.0098 12.0498 11.9932c27.875 -0.0722656 83.9502 3.02734 83.9502 47.959v112h-36c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h36v111.818\nc0 44.9385 -57.8887 48.7344 -83.8555 48.4248c-6.68652 -0.0800781 -12.1445 5.31055 -12.1445 11.998v39.6445c0 6.5957 5.31836 11.957 11.9131 12c35.0654 0.228516 78.3525 -0.62207 116.087 -37.8447c38.4688 37.9482 83.6211 38.3027 116.158 37.8926\nc6.56738 -0.0820312 11.8418 -5.42969 11.8418 -11.999v-39.9824z\" />\n    <glyph glyph-name=\"object-group\" unicode=\"&#xf247;\" \nd=\"M480 320v-288h20c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v20h-384v-20c0 -6.62695 -5.37305 -12 -12 -12h-40c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h20v320h-20\nc-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-20h384v20c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-20v-32zM96 172c0 -6.62695 5.37305 -12 12 -12h168\nc6.62695 0 12 5.37305 12 12v136c0 6.62695 -5.37305 12 -12 12h-168c-6.62695 0 -12 -5.37305 -12 -12v-136zM416 76v136c0 6.62695 -5.37305 12 -12 12h-84v-72c0 -13.2549 -10.7451 -24 -24 -24h-72v-52c0 -6.62695 5.37305 -12 12 -12h168c6.62695 0 12 5.37305 12 12z\n\" />\n    <glyph glyph-name=\"object-ungroup\" unicode=\"&#xf248;\" horiz-adv-x=\"576\" \nd=\"M64 128v-26c0 -3.31152 -2.68848 -6 -6 -6h-52c-3.31152 0 -6 2.68848 -6 6v52c0 3.31152 2.68848 6 6 6h26v192h-26c-3.31152 0 -6 2.68848 -6 6v52c0 3.31152 2.68848 6 6 6h52c3.31152 0 6 -2.68848 6 -6v-26h288v26c0 3.31152 2.68848 6 6 6h52\nc3.31152 0 6 -2.68848 6 -6v-52c0 -3.31152 -2.68848 -6 -6 -6h-26v-192h26c3.31152 0 6 -2.68848 6 -6v-52c0 -3.31152 -2.68848 -6 -6 -6h-52c-3.31152 0 -6 2.68848 -6 6v26h-288zM544 192v-160h26c3.31152 0 6 -2.68848 6 -6v-52c0 -3.31152 -2.68848 -6 -6 -6h-52\nc-3.31152 0 -6 2.68848 -6 6v26h-288v-26c0 -3.31152 -2.68848 -6 -6 -6h-52c-3.31152 0 -6 2.68848 -6 6v52c0 3.31152 2.68848 6 6 6h26v72h136v-8c0 -13.2549 10.7451 -24 24 -24h64c13.2549 0 24 10.7451 24 24v64c0 13.2549 -10.7451 24 -24 24h-8v72h104v26\nc0 3.31152 2.68848 6 6 6h52c3.31152 0 6 -2.68848 6 -6v-52c0 -3.31152 -2.68848 -6 -6 -6h-26v-32z\" />\n    <glyph glyph-name=\"sticky-note\" unicode=\"&#xf249;\" horiz-adv-x=\"448\" \nd=\"M312 128c-13.2002 0 -24 -10.7998 -24 -24v-136h-264c-13.2998 0 -24 10.7002 -24 24v400c0 13.2998 10.7002 24 24 24h400c13.2998 0 24 -10.7002 24 -24v-264h-136zM441 73l-98 -98c-4.5 -4.5 -10.5996 -7 -17 -7h-6v128h128v-6.09961\nc0 -6.30078 -2.5 -12.4004 -7 -16.9004z\" />\n    <glyph glyph-name=\"clone\" unicode=\"&#xf24d;\" \nd=\"M464 448c26.5098 0 48 -21.4902 48 -48v-288c0 -26.5098 -21.4902 -48 -48 -48h-288c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h288zM176 32h208v-48c0 -26.5098 -21.4902 -48 -48 -48h-288c-26.5098 0 -48 21.4902 -48 48v288\nc0 26.5098 21.4902 48 48 48h48v-208c0 -44.1123 35.8877 -80 80 -80z\" />\n    <glyph glyph-name=\"balance-scale\" unicode=\"&#xf24e;\" horiz-adv-x=\"640\" \nd=\"M256 112c0 -44.1797 -57.3096 -80 -128 -80s-128 35.8203 -128 80h0.0195312c0 15.6699 -2.0791 7.25 85.04 181.51c17.6807 35.3604 68.2207 35.29 85.8701 0c86.3906 -172.779 85.0508 -165.33 85.0508 -181.51h0.0195312zM128 272l-72 -144h144zM639.98 112\nc0 -44.1797 -57.29 -80 -127.98 -80s-128 35.8203 -128 80h0.0195312c0 15.6699 -2.0791 7.25 85.04 181.51c17.6807 35.3604 68.2207 35.29 85.8701 0c86.3906 -172.779 85.0508 -165.33 85.0508 -181.51zM440 128h144l-72 144zM528 0c8.83984 0 16 -7.16016 16 -16v-32\nc0 -8.83984 -7.16016 -16 -16 -16h-416c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h176v294.75c-23.5195 10.29 -41.1602 31.4902 -46.3896 57.25h-129.61c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h144.36\nc14.5996 19.3203 37.5498 32 63.6396 32s49.04 -12.6797 63.6396 -32h144.36c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-129.61c-5.22949 -25.7695 -22.8799 -46.96 -46.3896 -57.25v-294.75h176z\" />\n    <glyph glyph-name=\"hourglass-start\" unicode=\"&#xf251;\" horiz-adv-x=\"384\" \nd=\"M360 448c13.2549 0 24 -10.7451 24 -24v-16c0 -13.2549 -10.7451 -24 -24 -24c0 -90.9648 -51.0156 -167.734 -120.842 -192c69.8262 -24.2656 120.842 -101.035 120.842 -192c13.2549 0 24 -10.7451 24 -24v-16c0 -13.2549 -10.7451 -24 -24 -24h-336\nc-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24c0 90.9648 51.0156 167.734 120.842 192c-69.8262 24.2656 -120.842 101.035 -120.842 192c-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24h336zM296 0c0 77.4834 -46.2139 144 -104 144\nc-57.7959 0 -104 -66.542 -104 -144h208z\" />\n    <glyph glyph-name=\"hourglass-half\" unicode=\"&#xf252;\" horiz-adv-x=\"384\" \nd=\"M360 448c13.2549 0 24 -10.7451 24 -24v-16c0 -13.2549 -10.7451 -24 -24 -24c0 -90.9648 -51.0156 -167.734 -120.842 -192c69.8262 -24.2656 120.842 -101.035 120.842 -192c13.2549 0 24 -10.7451 24 -24v-16c0 -13.2549 -10.7451 -24 -24 -24h-336\nc-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24c0 90.9648 51.0156 167.734 120.842 192c-69.8262 24.2656 -120.842 101.035 -120.842 192c-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24h336zM284.922 64\nc-17.0596 46.8037 -52.1006 80 -92.9219 80c-40.8242 0 -75.8613 -33.2031 -92.9199 -80h185.842zM284.941 320c7.07129 19.4131 11.0586 41.1953 11.0586 64h-208c0 -22.748 3.98828 -44.5479 11.0781 -64h185.863z\" />\n    <glyph glyph-name=\"hourglass-end\" unicode=\"&#xf253;\" horiz-adv-x=\"384\" \nd=\"M360 384c0 -90.9648 -51.0156 -167.734 -120.842 -192c69.8262 -24.2656 120.842 -101.035 120.842 -192c13.2549 0 24 -10.7451 24 -24v-16c0 -13.2549 -10.7451 -24 -24 -24h-336c-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24\nc0 90.9648 51.0156 167.734 120.842 192c-69.8262 24.2656 -120.842 101.035 -120.842 192c-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24h336c13.2549 0 24 -10.7451 24 -24v-16c0 -13.2549 -10.7451 -24 -24 -24zM192 240c57.4902 0 104 66.0547 104 144\nh-208c0 -77.4824 46.2129 -144 104 -144z\" />\n    <glyph glyph-name=\"hourglass\" unicode=\"&#xf254;\" horiz-adv-x=\"384\" \nd=\"M360 384c0 -90.9648 -51.0156 -167.734 -120.842 -192c69.8262 -24.2656 120.842 -101.035 120.842 -192c13.2549 0 24 -10.7451 24 -24v-16c0 -13.2549 -10.7451 -24 -24 -24h-336c-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24\nc0 90.9648 51.0156 167.734 120.842 192c-69.8262 24.2656 -120.842 101.035 -120.842 192c-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24h336c13.2549 0 24 -10.7451 24 -24v-16c0 -13.2549 -10.7451 -24 -24 -24z\" />\n    <glyph glyph-name=\"hand-rock\" unicode=\"&#xf255;\" \nd=\"M464.8 368c26.2998 -0.400391 47.2002 -22.5 47.2002 -48.7998v-133.5c0 -12.7998 -2.5 -25.5 -7.5 -37.2998l-49 -116.301c-4.90039 -11.7998 -7.5 -24.5 -7.5 -37.2998v-2.89941c0 -13.3008 -10.7002 -24 -24 -24h-240c-13.2998 0 -24 10.6992 -24 24v6.69922\nc0 13.7002 -5.90039 26.8008 -16.0996 35.9004l-111.7 99.2998c-20.5 18.2998 -32.2002 44.4004 -32.2002 71.7998v66.4004c0 26.7998 21.9004 48.4004 48.7998 48c26.2998 -0.5 47.2002 -22.5 47.2002 -48.7998v-48.1006l8 -7.09961v136\nc0 26.7998 21.9004 48.4004 48.7998 48c26.2998 -0.5 47.2002 -22.5 47.2002 -48.7998v-31.2002h8v48c0 26.7998 21.9004 48.4004 48.7998 48c26.2998 -0.5 47.2002 -22.5 47.2002 -48.7998v-47.2002h8v32c0 26.7998 21.9004 48.4004 48.7998 48\nc26.2998 -0.5 47.2002 -22.5 47.2002 -48.7998v-31.2002h8c0 26.7998 21.9004 48.4004 48.7998 48z\" />\n    <glyph glyph-name=\"hand-paper\" unicode=\"&#xf256;\" horiz-adv-x=\"448\" \nd=\"M408.781 319.993c21.7305 -0.416016 39.2188 -18.1621 39.2178 -39.9932v-150.359c0 -12.2998 -2.28711 -32.001 -5.10449 -43.9746l-26.5078 -112.66c-5.10156 -21.6816 -24.4502 -37.0059 -46.7236 -37.0059h-197.59c-13.4922 0 -30.8838 8.85645 -38.8193 19.7676\nl-125.601 172.705c-12.9932 17.8672 -9.04297 42.8838 8.82129 55.877c17.8682 12.9941 42.8848 9.04297 55.877 -8.82227l31.6484 -43.5195v235.992c0 21.8311 17.4883 39.5771 39.2188 39.9932c22.4248 0.428711 40.7812 -18.3535 40.7812 -40.7832v-175.21h8v216\nc0 21.8311 17.4883 39.5771 39.2188 39.9932c22.4248 0.428711 40.7812 -18.3535 40.7812 -40.7832v-215.21h8v177c0 21.8311 17.4883 39.5771 39.2188 39.9932c22.4248 0.428711 40.7812 -18.3535 40.7812 -40.7832v-176.21h8v87.21\nc0 22.4297 18.3564 41.2119 40.7812 40.7832z\" />\n    <glyph glyph-name=\"hand-scissors\" unicode=\"&#xf257;\" \nd=\"M216 8c0 22.0918 17.9092 40 40 40v8h-32c-22.0908 0 -40 17.9082 -40 40s17.9092 40 40 40h32v8h-208c-26.5098 0 -48 21.4902 -48 48s21.4902 48 48 48h208v13.5723l-177.551 69.7393c-24.6738 9.69434 -36.8184 37.5557 -27.125 62.2285\nc9.69238 24.6738 37.5537 36.8174 62.2275 27.124l190.342 -74.7646l24.8721 31.0898c12.3066 15.3809 33.9785 19.5146 51.0811 9.74121l112 -64c11.125 -6.3584 20.1533 -21.917 20.1533 -34.7305v-240c0 -18.5615 -12.7695 -34.6855 -30.8379 -38.9365l-136 -32\nc-2.49414 -0.586914 -6.59668 -1.06348 -9.1582 -1.06348h-0.00390625h-80c-22.0908 0 -40 17.9082 -40 40z\" />\n    <glyph glyph-name=\"hand-lizard\" unicode=\"&#xf258;\" horiz-adv-x=\"576\" \nd=\"M384 -32v61.4609c0 7.28906 -4.99707 16.3711 -11.1543 20.2734l-111.748 70.8105c-6.49316 4.11523 -18.0029 7.45508 -25.6904 7.45508h-0.000976562h-147.406c-13.2549 0 -24 10.7451 -24 24v8c0 35.3457 28.6543 64 64 64h123.648\nc11.7754 0 25.0088 8.82227 29.5371 19.6924l21.4102 51.3848c4.94141 11.8555 -3.77051 24.9229 -16.6143 24.9229h-229.981c-30.9277 0 -56 25.0723 -56 56v16c0 13.2549 10.7451 24 24 24h333.544c14.6035 0 32.7852 -10.0205 40.583 -22.3682l163.04 -258.146\nc8.1875 -12.9639 14.833 -35.9297 14.833 -51.2627v-0.000976562v-116.222h-192z\" />\n    <glyph glyph-name=\"hand-spock\" unicode=\"&#xf259;\" \nd=\"M481.3 350.9c21.4004 -5.10059 34.7002 -26.7002 29.7002 -48.2002l-36.2998 -152.5c-1.7002 -7.2002 -2.60059 -14.7002 -2.60059 -22.2002v-42c0 -9.2998 -1.39941 -18.4004 -4 -27.2998l-26.1992 -88.2998c-6 -20.4004 -24.7002 -34.4004 -46 -34.4004h-216.7\nc-12.2002 0 -24 4.59961 -32.9004 13l-133.7 125.9c-16.0996 15.0996 -16.7998 40.3994 -1.69922 56.5c15.0996 16.0996 40.3994 16.7998 56.5 1.69922l60.5996 -57v79.4004l-39 171.6c-4.90039 21.6006 8.59961 43 30.0996 47.9004\nc21.6006 4.90039 43 -8.59961 47.9004 -30.0996l34.7998 -152.801h9.7998l-47.5996 207c-5 21.5 8.5 43 30 47.9004c21.5996 4.90039 43 -8.5 48 -30.0996l51.7002 -224.9h15.0996l48.4004 193.7c5.39941 21.3994 27.0996 34.5 48.5 29.0996\nc21.3994 -5.39941 34.5 -27.0996 29.0996 -48.5l-43.5996 -174.3h11.0996l30.7998 129.3c5.10059 21.4004 26.7002 34.7002 48.2002 29.6006z\" />\n    <glyph glyph-name=\"hand-pointer\" unicode=\"&#xf25a;\" horiz-adv-x=\"448\" \nd=\"M448 208v-96c0 -3.08398 -0.356445 -6.15918 -1.06348 -9.16211l-32 -136c-4.25098 -18.0684 -20.375 -30.8379 -38.9365 -30.8379h-208c-11.2432 0 -25.7363 7.37988 -32.3496 16.4727l-127.997 176c-12.9932 17.8662 -9.04297 42.8838 8.82129 55.876\nc17.8672 12.9941 42.8848 9.04297 55.877 -8.82227l31.6484 -43.5186v275.992c0 22.0908 17.9082 40 40 40s40 -17.9092 40 -40v-200h8v40c0 22.0908 17.9082 40 40 40s40 -17.9092 40 -40v-40h8v24c0 22.0908 17.9082 40 40 40s40 -17.9092 40 -40v-24h8\nc0 22.0908 17.9082 40 40 40s40 -17.9092 40 -40zM192 128h-8v-96h8v96zM280 128h-8v-96h8v96zM368 128h-8v-96h8v96z\" />\n    <glyph glyph-name=\"hand-peace\" unicode=\"&#xf25b;\" horiz-adv-x=\"448\" \nd=\"M408 232c22.0918 0 40 -17.9092 40 -40v-80v-0.00488281c0 -2.56152 -0.476562 -6.66406 -1.06348 -9.15723l-32 -136c-4.25098 -18.0684 -20.375 -30.8379 -38.9365 -30.8379h-240h-0.000976562c-12.8125 0 -28.3711 9.0293 -34.7275 20.1543l-64 112\nc-9.77441 17.1025 -5.64062 38.7744 9.74023 51.0811l31.0898 24.8721l-74.7646 190.342c-9.69336 24.6738 2.4502 52.5342 27.124 62.2266c24.6729 9.69434 52.5332 -2.4502 62.2275 -27.125l69.7393 -177.551h13.5723v208c0 26.5098 21.4902 48 48 48s48 -21.4902 48 -48\nv-208h8v32c0 22.0908 17.9082 40 40 40s40 -17.9092 40 -40v-32h8c0 22.0908 17.9082 40 40 40z\" />\n    <glyph glyph-name=\"trademark\" unicode=\"&#xf25c;\" horiz-adv-x=\"640\" \nd=\"M260.6 352c6.60059 0 12 -5.40039 11.9004 -12v-43.0996c0 -6.60059 -5.40039 -12 -12 -12h-85.0996v-240.9c0 -6.59961 -5.40039 -12 -12 -12h-54.3008c-6.59961 0 -12 5.40039 -12 12v240.9h-85.0996c-6.59961 0 -12 5.39941 -12 12v43.0996\nc0 6.59961 5.40039 12 12 12h248.6zM640 45c0.5 -7 -5 -13 -12 -13h-53.9004c-6.2998 0 -11.5996 4.90039 -12 11.2002l-9.09961 132.899c-1.7998 24.2002 0 53.7002 0 53.7002h-0.900391s-10.6992 -33.5996 -17.8994 -53.7002l-30.7002 -84.6992\nc-1.7002 -4.7002 -6.2002 -7.90039 -11.2998 -7.90039h-50.2998c-5.10059 0 -9.60059 3.2002 -11.3008 7.90039l-30.6992 84.6992c-7.2002 20.1006 -17.9004 53.7002 -17.9004 53.7002h-0.900391s1.80078 -29.5 0 -53.7002l-9.09961 -132.899\nc-0.5 -6.2998 -5.7002 -11.2002 -12 -11.2002h-54.5c-7.09961 0 -12.5996 6 -12 13l24.4004 296c0.599609 6.2002 5.7998 11 12 11h65.3994c5.10059 0 9.60059 -3.2998 11.2998 -8.09961l43.8008 -127.101c7.19922 -20.5996 16.0996 -52.7998 16.0996 -52.7998h0.900391\ns8.89941 32.2002 16.0996 52.7998l43.7998 127.101c1.60059 4.7998 6.2002 8.09961 11.2998 8.09961h65.4004c6.2998 0 11.5 -4.7998 12 -11z\" />\n    <glyph glyph-name=\"registered\" unicode=\"&#xf25d;\" \nd=\"M285.363 240.525c0 -18.6006 -9.83105 -28.4316 -28.4316 -28.4316h-29.876v56.1406h23.3779c28.668 0 34.9297 -8.77344 34.9297 -27.709zM504 192c0 -136.967 -111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248s248 -111.033 248 -248z\nM363.411 87.5859c-46.7295 84.8252 -43.2988 78.6357 -44.7021 80.9805c23.4316 15.1719 37.9453 42.9785 37.9453 74.4854c0 54.2441 -31.5 89.252 -105.498 89.252h-70.667c-13.2549 0 -24 -10.7451 -24 -24v-232.304c0 -13.2549 10.7451 -24 24 -24h22.5664\nc13.2549 0 24 10.7451 24 24v71.6631h25.5566l44.1289 -82.9375c3.73828 -7.02441 13.2305 -12.7266 21.1875 -12.7266h24.4639c18.2617 0.000976562 29.8291 19.5908 21.0186 35.5869z\" />\n    <glyph glyph-name=\"tv\" unicode=\"&#xf26c;\" horiz-adv-x=\"640\" \nd=\"M592 448c26.5 0 48 -21.5 48 -48v-320c0 -26.5 -21.5 -48 -48 -48h-234.9v-32h160c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32h-384c-17.6992 0 -32 14.2998 -32 32s14.3008 32 32 32h160v32h-245.1c-26.5 0 -48 21.5 -48 48v320c0 26.5 21.5 48 48 48h544z\nM576 96v288h-512v-288h512z\" />\n    <glyph glyph-name=\"calendar-plus\" unicode=\"&#xf271;\" horiz-adv-x=\"448\" \nd=\"M436 288h-424c-6.59961 0 -12 5.40039 -12 12v36c0 26.5 21.5 48 48 48h48v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h128v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h48c26.5 0 48 -21.5 48 -48v-36\nc0 -6.59961 -5.40039 -12 -12 -12zM12 256h424c6.59961 0 12 -5.40039 12 -12v-260c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v260c0 6.59961 5.40039 12 12 12zM328 116c0 6.59961 -5.40039 12 -12 12h-60v60c0 6.59961 -5.40039 12 -12 12h-40\nc-6.59961 0 -12 -5.40039 -12 -12v-60h-60c-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h60v-60c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12v60h60c6.59961 0 12 5.40039 12 12v40z\" />\n    <glyph glyph-name=\"calendar-minus\" unicode=\"&#xf272;\" horiz-adv-x=\"448\" \nd=\"M436 288h-424c-6.59961 0 -12 5.40039 -12 12v36c0 26.5 21.5 48 48 48h48v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h128v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h48c26.5 0 48 -21.5 48 -48v-36\nc0 -6.59961 -5.40039 -12 -12 -12zM12 256h424c6.59961 0 12 -5.40039 12 -12v-260c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v260c0 6.59961 5.40039 12 12 12zM316 64c6.59961 0 12 5.40039 12 12v40c0 6.59961 -5.40039 12 -12 12h-184\nc-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h184z\" />\n    <glyph glyph-name=\"calendar-times\" unicode=\"&#xf273;\" horiz-adv-x=\"448\" \nd=\"M436 288h-424c-6.59961 0 -12 5.40039 -12 12v36c0 26.5 21.5 48 48 48h48v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h128v52c0 6.59961 5.40039 12 12 12h40c6.59961 0 12 -5.40039 12 -12v-52h48c26.5 0 48 -21.5 48 -48v-36\nc0 -6.59961 -5.40039 -12 -12 -12zM12 256h424c6.59961 0 12 -5.40039 12 -12v-260c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v260c0 6.59961 5.40039 12 12 12zM269.3 96l48.1006 48.0996c4.69922 4.7002 4.69922 12.3008 0 17l-28.3008 28.3008\nc-4.69922 4.69922 -12.2998 4.69922 -17 0l-48.0996 -48.1006l-48.0996 48.1006c-4.7002 4.69922 -12.3008 4.69922 -17 0l-28.3008 -28.3008c-4.69922 -4.69922 -4.69922 -12.2998 0 -17l48.1006 -48.0996l-48.1006 -48.0996c-4.69922 -4.7002 -4.69922 -12.3008 0 -17\nl28.3008 -28.3008c4.69922 -4.69922 12.2998 -4.69922 17 0l48.0996 48.1006l48.0996 -48.1006c4.7002 -4.69922 12.3008 -4.69922 17 0l28.3008 28.3008c4.69922 4.69922 4.69922 12.2998 0 17z\" />\n    <glyph glyph-name=\"calendar-check\" unicode=\"&#xf274;\" horiz-adv-x=\"448\" \nd=\"M436 288h-424c-6.62695 0 -12 5.37305 -12 12v36c0 26.5098 21.4902 48 48 48h48v52c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-52h128v52c0 6.62695 5.37305 12 12 12h40c6.62695 0 12 -5.37305 12 -12v-52h48c26.5098 0 48 -21.4902 48 -48v-36\nc0 -6.62695 -5.37305 -12 -12 -12zM12 256h424c6.62695 0 12 -5.37305 12 -12v-260c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v260c0 6.62695 5.37305 12 12 12zM345.296 160.053l-28.1689 28.3984\nc-4.66699 4.70508 -12.2646 4.73535 -16.9697 0.0673828l-106.037 -105.184l-45.9805 46.3516c-4.66699 4.70508 -12.2656 4.73633 -16.9707 0.0683594l-28.3965 -28.1699c-4.70508 -4.66699 -4.73633 -12.2646 -0.0683594 -16.9697l82.6006 -83.2695\nc4.66699 -4.70508 12.2656 -4.73535 16.9707 -0.0673828l142.952 141.805c4.70508 4.66699 4.73633 12.2646 0.0683594 16.9697z\" />\n    <glyph glyph-name=\"industry\" unicode=\"&#xf275;\" \nd=\"M475.115 284.219c15.9541 10.1514 36.8848 -1.33105 36.8848 -20.248v-271.971c0 -13.2549 -10.7451 -24 -24 -24h-464c-13.2549 0 -24 10.7451 -24 24v400c0 13.2549 10.7451 24 24 24h112c13.2549 0 24 -10.7451 24 -24v-196.309l139.115 88.5273\nc15.9541 10.1514 36.8848 -1.33203 36.8848 -20.248v-68.2793z\" />\n    <glyph glyph-name=\"map-pin\" unicode=\"&#xf276;\" horiz-adv-x=\"288\" \nd=\"M112 131.06c10.3896 -1.91992 21.0596 -3.05957 32 -3.05957s21.6104 1.13965 32 3.05957v-156.689l-22.0098 -33.0205c-4.75 -7.11914 -15.2207 -7.11914 -19.9707 0l-22.0195 33.0205v156.689zM144 448c79.5303 0 144 -64.4697 144 -144s-64.4697 -144 -144 -144\ns-144 64.4697 -144 144s64.4697 144 144 144zM144 372c6.62012 0 12 5.37988 12 12s-5.37988 12 -12 12c-50.7197 0 -92 -41.2695 -92 -92c0 -6.62012 5.37988 -12 12 -12s12 5.37988 12 12c0 37.5 30.5 68 68 68z\" />\n    <glyph glyph-name=\"map-signs\" unicode=\"&#xf277;\" \nd=\"M507.31 363.31c6.25 -6.25 6.25 -16.3691 0 -22.6299l-43.3096 -43.3096c-6.00977 -6 -14.1396 -9.37012 -22.6299 -9.37012h-385.37c-13.25 0 -24 10.75 -24 24v80c0 13.25 10.75 24 24 24h168v16c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-16\nh153.37c8.49023 0 16.6299 -3.37012 22.6299 -9.37012zM224 -48v112h64v-112c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16zM456 224c13.25 0 24 -10.75 24 -24v-80c0 -13.25 -10.75 -24 -24 -24h-385.37\nc-8.49023 0 -16.6299 3.37012 -22.6299 9.37012l-43.3096 43.3096c-6.25 6.25 -6.25 16.3799 0 22.6299l43.3096 43.3203c6.00977 6 14.1396 9.37012 22.6299 9.37012h153.37v32h64v-32h168z\" />\n    <glyph glyph-name=\"map\" unicode=\"&#xf279;\" horiz-adv-x=\"576\" \nd=\"M0 330.34c0.00292969 11.959 9.0166 25.2686 20.1201 29.71l139.88 55.9502v-384l-138.06 -62.8398c-10.5107 -4.2002 -21.9404 3.54004 -21.9404 14.8594v346.32zM192 32v384l192 -64v-384zM554.06 414.84c10.5107 4.2002 21.9404 -3.54004 21.9404 -14.8594v-346.32\nc0 -11.9609 -9.01367 -25.2705 -20.1201 -29.71l-139.88 -55.9502v384z\" />\n    <glyph glyph-name=\"comment-alt\" unicode=\"&#xf27a;\" \nd=\"M448 448c35.2998 0 64 -28.7002 64 -64v-288c0 -35.2998 -28.7002 -64 -64 -64h-144l-124.9 -93.7002c-7.89941 -5.7998 -19.0996 -0.0996094 -19.0996 9.7002v84h-96c-35.2998 0 -64 28.7002 -64 64v288c0 35.2998 28.7002 64 64 64h384z\" />\n    <glyph glyph-name=\"pause-circle\" unicode=\"&#xf28b;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM240 112v160c0 8.7998 -7.2002 16 -16 16h-48c-8.7998 0 -16 -7.2002 -16 -16v-160c0 -8.7998 7.2002 -16 16 -16h48c8.7998 0 16 7.2002 16 16zM352 112v160\nc0 8.7998 -7.2002 16 -16 16h-48c-8.7998 0 -16 -7.2002 -16 -16v-160c0 -8.7998 7.2002 -16 16 -16h48c8.7998 0 16 7.2002 16 16z\" />\n    <glyph glyph-name=\"stop-circle\" unicode=\"&#xf28d;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM352 112v160c0 8.7998 -7.2002 16 -16 16h-160c-8.7998 0 -16 -7.2002 -16 -16v-160c0 -8.7998 7.2002 -16 16 -16h160c8.7998 0 16 7.2002 16 16z\" />\n    <glyph glyph-name=\"shopping-bag\" unicode=\"&#xf290;\" horiz-adv-x=\"448\" \nd=\"M352 288h96v-272c0 -44.1826 -35.8174 -80 -80 -80h-288c-44.1826 0 -80 35.8174 -80 80v272h96v32c0 70.5801 57.4199 128 128 128c70.5791 0 128 -57.4199 128 -128v-32zM160 320v-32h128v32c0 35.29 -28.71 64 -64 64s-64 -28.71 -64 -64zM320 200\nc13.2549 0 24 10.7451 24 24s-10.7451 24 -24 24s-24 -10.7451 -24 -24s10.7451 -24 24 -24zM128 200c13.2549 0 24 10.7451 24 24s-10.7451 24 -24 24s-24 -10.7451 -24 -24s10.7451 -24 24 -24z\" />\n    <glyph glyph-name=\"shopping-basket\" unicode=\"&#xf291;\" horiz-adv-x=\"576\" \nd=\"M576 232v-16c0 -13.2549 -10.7451 -24 -24 -24h-8l-26.1133 -182.788c-3.37793 -23.6465 -23.6299 -41.2119 -47.5166 -41.2119h-364.74c-23.8867 0 -44.1387 17.5654 -47.5176 41.2119l-26.1123 182.788h-8c-13.2549 0 -24 10.7451 -24 24v16\nc0 13.2549 10.7451 24 24 24h67.3408l106.78 146.821c10.3945 14.292 30.4072 17.4531 44.7012 7.05762c14.293 -10.3945 17.4531 -30.4082 7.05762 -44.7012l-79.4033 -109.178h235.047l-79.4033 109.179c-10.3955 14.292 -7.23438 34.3066 7.05859 44.7012\nc14.291 10.3955 34.3066 7.23535 44.7012 -7.05762l106.779 -146.822h67.3408c13.2549 0 24 -10.7451 24 -24zM312 56v112c0 13.2549 -10.7451 24 -24 24s-24 -10.7451 -24 -24v-112c0 -13.2549 10.7451 -24 24 -24s24 10.7451 24 24zM424 56v112\nc0 13.2549 -10.7451 24 -24 24s-24 -10.7451 -24 -24v-112c0 -13.2549 10.7451 -24 24 -24s24 10.7451 24 24zM200 56v112c0 13.2549 -10.7451 24 -24 24s-24 -10.7451 -24 -24v-112c0 -13.2549 10.7451 -24 24 -24s24 10.7451 24 24z\" />\n    <glyph glyph-name=\"hashtag\" unicode=\"&#xf292;\" horiz-adv-x=\"448\" \nd=\"M440.667 265.891c-0.974609 -5.45898 -6.2666 -9.89062 -11.8135 -9.89062h-79.0957l-22.8564 -128h74.8096c7.4707 0 13.126 -6.75391 11.8135 -14.1094l-7.14355 -40c-0.974609 -5.45898 -6.2666 -9.89062 -11.8125 -9.89062h-79.0967l-15.377 -86.1094\nc-0.974609 -5.45898 -6.2666 -9.89062 -11.8125 -9.89062h-40.6318c-7.47266 0 -13.127 6.75391 -11.8135 14.1094l14.623 81.8906h-98.6338l-15.3779 -86.1094c-0.974609 -5.45898 -6.26758 -9.89062 -11.8135 -9.89062h-40.6318\nc-7.4707 0 -13.126 6.75391 -11.8125 14.1094l14.623 81.8906h-74.8105c-7.4707 0 -13.126 6.75391 -11.8125 14.1094l7.14258 40c0.974609 5.45898 6.2666 9.89062 11.8135 9.89062h79.0957l22.8564 128h-74.8096c-7.4707 0 -13.126 6.75391 -11.8135 14.1094l7.14355 40\nc0.974609 5.45898 6.2666 9.89062 11.8125 9.89062h79.0967l15.377 86.1094c0.974609 5.45898 6.2666 9.89062 11.8125 9.89062h40.6318c7.47266 0 13.127 -6.75391 11.8135 -14.1094l-14.623 -81.8906h98.6348l15.377 86.1094\nc0.974609 5.45898 6.26758 9.89062 11.8135 9.89062h40.6318c7.4707 0 13.126 -6.75391 11.8125 -14.1094l-14.623 -81.8906h74.8105c7.4707 0 13.126 -6.75391 11.8125 -14.1094zM261.889 128l22.8574 128h-98.6338l-22.8574 -128h98.6338z\" />\n    <glyph glyph-name=\"percent\" unicode=\"&#xf295;\" horiz-adv-x=\"448\" \nd=\"M112 224c-61.9004 0 -112 50.0996 -112 112s50.0996 112 112 112s112 -50.0996 112 -112s-50.0996 -112 -112 -112zM112 384c-26.5 0 -48 -21.5 -48 -48s21.5 -48 48 -48s48 21.5 48 48s-21.5 48 -48 48zM336 160c61.9004 0 112 -50.0996 112 -112\ns-50.0996 -112 -112 -112s-112 50.0996 -112 112s50.0996 112 112 112zM336 0c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48zM392.3 447.8l31.6006 0.100586c19.3994 0.0996094 30.8994 -21.8008 19.6992 -37.8008l-366.199 -463.699\nc-3.94629 -5.62793 -12.7275 -10.1973 -19.6006 -10.2002l-33.3994 -0.100586c-19.5 0 -30.9004 21.9004 -19.7002 37.8008l368 463.699c4.5 6.40039 11.7998 10.2002 19.5996 10.2002z\" />\n    <glyph glyph-name=\"universal-access\" unicode=\"&#xf29a;\" \nd=\"M256 400c-114.971 0 -208 -93.0469 -208 -208c0 -114.971 93.0469 -208 208 -208c114.971 0 208 93.0469 208 208c0 114.971 -93.0469 208 -208 208zM256 440c136.967 0 248 -111.033 248 -248s-111.033 -248 -248 -248s-248 111.033 -248 248s111.033 248 248 248z\nM256 384c106.039 0 192 -85.9609 192 -192s-85.9609 -192 -192 -192s-192 85.9609 -192 192s85.9609 192 192 192zM256 340c-19.8818 0 -36 -16.1182 -36 -36s16.1182 -36 36 -36s36 16.1182 36 36s-16.1182 36 -36 36zM373.741 241.977\nc8.59961 2.03027 13.9258 10.6484 11.8965 19.249c-2.03027 8.60156 -10.6494 13.9258 -19.249 11.8955c-96.4912 -22.7832 -124.089 -22.8291 -220.774 0c-8.60254 2.03125 -17.2178 -3.29395 -19.249 -11.8955c-2.03125 -8.60059 3.29492 -17.2178 11.8945 -19.249\nc28.7129 -6.7793 55.5127 -12.749 82.1416 -15.8066c-0.852539 -101.08 -12.3242 -123.08 -25.0371 -155.621c-3.61719 -9.25879 0.957031 -19.6982 10.2168 -23.3145c9.26465 -3.61914 19.7002 0.961914 23.3154 10.2168c8.72754 22.3408 17.0947 40.6982 22.2617 78.5488\nh9.68555c5.1748 -37.9131 13.5566 -56.2412 22.2617 -78.5488c3.61621 -9.25977 14.0547 -13.834 23.3154 -10.2168c9.25977 3.61621 13.834 14.0547 10.2168 23.3145c-12.7305 32.5693 -24.1855 54.5986 -25.0371 155.621c26.6299 3.05859 53.4287 9.02832 82.1406 15.8066\nz\" />\n    <glyph glyph-name=\"blind\" unicode=\"&#xf29d;\" horiz-adv-x=\"384\" \nd=\"M380.15 -62.8369c-1.05664 -0.640625 -2.91602 -1.16113 -4.15137 -1.16113c-2.48438 0 -5.54785 1.72363 -6.83789 3.84766l-125.33 206.428c4.25684 1.68848 10.0615 5.9375 12.958 9.48438l126.048 -207.607c0.641602 -1.05664 1.16211 -2.91699 1.16211 -4.15234\nc0 -2.48535 -1.72461 -5.5498 -3.84863 -6.83887zM142.803 133.662l62.8145 -153.537c6.69141 -16.3584 -1.14453 -35.042 -17.501 -41.7344c-16.3564 -6.69043 -35.04 1.1416 -41.7334 17.501l-36.1201 88.2852zM96 360c-24.3008 0 -44 19.6992 -44 44s19.6992 44 44 44\ns44 -19.6992 44 -44s-19.6992 -44 -44 -44zM250.837 190.872c8.19336 -10.374 6.44434 -25.4922 -3.96582 -33.708c-9.33984 -7.37402 -24.5635 -7.61914 -33.708 3.96484l-102.3 129.217c-0.663086 0.836914 -2.06738 1.51562 -3.13477 1.51562\nc-2.20801 0 -4 -1.79297 -4 -4.00098c0 -0.769531 0.387695 -1.88281 0.865234 -2.48535l31.4062 -39.8164v-107.196l-65.9258 -181.288c-6.04102 -16.6143 -24.4072 -25.1768 -41.0088 -19.1387c-16.6104 6.04004 -25.1787 24.4004 -19.1387 41.0098l54.0732 148.693\nv140.698l-16 -20.5713v-79.7656c0 -13.0996 -10.4951 -23.748 -23.5361 -23.9961c-13.4531 -0.254883 -24.4639 11.0811 -24.4639 24.5361v95.6943l61.0557 78.5c4.72754 6.0791 11.7979 9.23633 18.9443 9.23926v0.0263672h32v-0.015625\nc7.08691 -0.00390625 14.1035 -3.11719 18.8369 -9.1123z\" />\n    <glyph glyph-name=\"audio-description\" unicode=\"&#xf29e;\" \nd=\"M162.925 209.291l8.82227 -30.6553h-25.6064l9.04102 30.6523c1.27734 4.4209 2.65137 9.99414 3.87207 15.2451c1.2207 -5.25098 2.59473 -10.8232 3.87109 -15.2422zM329.399 241.39c28.6846 0 46.1748 -16.7656 46.1748 -49.0049\nc0 -32.0977 -16.3994 -49.7754 -46.1748 -49.7754h-14.5234v98.7803h14.5234zM512 336v-288c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h416c26.5098 0 48 -21.4902 48 -48zM245.459 111.861l-57.0967 168\nc-1.52734 4.49219 -6.61719 8.13867 -11.3623 8.13867h-35.8936c-4.74512 0 -9.83594 -3.64648 -11.3623 -8.13867l-57.0967 -168c-2.64453 -7.7832 3.1416 -15.8613 11.3613 -15.8613h29.1328c4.99219 0 10.1602 3.89453 11.5352 8.69336l8.57422 29.9053h51.3672\nl8.79297 -29.9766c1.39648 -4.75977 6.55469 -8.62207 11.5146 -8.62207v0h29.1719c8.2207 0 14.0059 8.07812 11.3613 15.8613zM430.16 192.386c0 58.9775 -37.9189 95.6143 -98.96 95.6143h-57.3662c-6.62695 0 -12 -5.37305 -12 -12v-168c0 -6.62695 5.37305 -12 12 -12\nh57.3662c61.041 0 98.96 36.9326 98.96 96.3857z\" />\n    <glyph glyph-name=\"phone-volume\" unicode=\"&#xf2a0;\" horiz-adv-x=\"384\" \nd=\"M97.333 -58.9658c-129.874 129.874 -129.681 340.252 0 469.933c5.69824 5.69824 14.5273 6.63184 21.2627 2.42188l64.8174 -40.5127c4.45898 -2.78711 8.07812 -9.31641 8.07812 -14.5752c0 -1.82715 -0.550781 -4.68652 -1.22949 -6.38281l-32.4082 -81.0205\nc-2.38477 -5.96484 -9.53418 -10.8047 -15.958 -10.8047c-0.473633 0 -1.23926 0.0380859 -1.71094 0.0849609l-55.8096 5.58008c-21.0508 -58.2607 -20.6123 -122.471 0 -179.515l55.8105 5.58105c0.47168 0.046875 1.2373 0.0849609 1.71094 0.0849609\nc6.42383 0 13.5732 -4.83984 15.959 -10.8037l32.4072 -81.0225c0.678711 -1.69629 1.22949 -4.55566 1.22949 -6.38281c0 -5.25879 -3.61914 -11.7881 -8.07812 -14.5752l-64.8174 -40.5127c-2.30762 -1.44238 -6.38867 -2.6123 -9.10938 -2.6123\nc-3.92969 0 -9.375 2.25488 -12.1543 5.03418zM247.126 352.527c11.832 -20.0469 11.832 -45.0088 0 -65.0557c-3.9502 -6.69238 -13.1084 -7.95898 -18.7178 -2.58105l-5.97559 5.72656c-3.91016 3.74805 -4.79297 9.62207 -2.26074 14.4102\nc2.04883 3.87793 3.71094 10.5859 3.71094 14.9717c0 4.38672 -1.66211 11.0947 -3.71094 14.9727c-2.5332 4.78809 -1.64941 10.6621 2.26074 14.4102l5.97559 5.72656c5.60938 5.37793 14.7676 4.11133 18.7178 -2.58105zM338.913 443.714\nc60.1396 -71.6035 60.0918 -175.882 0 -247.428c-4.47363 -5.32715 -12.5303 -5.74609 -17.5518 -0.933594l-5.79785 5.55762c-4.56055 4.37109 -4.97754 11.5293 -0.930664 16.3789c49.6875 59.5381 49.6465 145.933 0 205.422\nc-4.04688 4.84961 -3.63086 12.0078 0.930664 16.3789l5.79785 5.55762c5.02148 4.8125 13.0781 4.39355 17.5518 -0.933594zM292.941 398.773c36.0498 -46.3223 36.1074 -111.149 0 -157.547c-4.39062 -5.64062 -12.6973 -6.25098 -17.8564 -1.30371l-5.81836 5.5791\nc-4.39941 4.21875 -4.99805 11.0947 -1.28418 15.9307c26.5352 34.5645 26.5332 82.5723 0 117.135c-3.71387 4.83594 -3.11523 11.7109 1.28418 15.9307l5.81836 5.5791c5.15918 4.94727 13.4658 4.33691 17.8564 -1.30371z\" />\n    <glyph glyph-name=\"braille\" unicode=\"&#xf2a1;\" horiz-adv-x=\"640\" \nd=\"M128 192c0 -35.3457 -28.6543 -64 -64 -64s-64 28.6543 -64 64s28.6543 64 64 64s64 -28.6543 64 -64zM64 64c17.6729 0 32 -14.3271 32 -32s-14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32zM64 416c35.3457 0 64 -28.6543 64 -64s-28.6543 -64 -64 -64\ns-64 28.6543 -64 64s28.6543 64 64 64zM224 224c17.6729 0 32 -14.3271 32 -32s-14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32zM224 64c17.6729 0 32 -14.3271 32 -32s-14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32zM224 416\nc35.3457 0 64 -28.6543 64 -64s-28.6543 -64 -64 -64s-64 28.6543 -64 64s28.6543 64 64 64zM448 224c17.6729 0 32 -14.3271 32 -32s-14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32zM448 64c17.6729 0 32 -14.3271 32 -32s-14.3271 -32 -32 -32\ns-32 14.3271 -32 32s14.3271 32 32 32zM448 416c35.3457 0 64 -28.6543 64 -64s-28.6543 -64 -64 -64s-64 28.6543 -64 64s28.6543 64 64 64zM608 224c17.6729 0 32 -14.3271 32 -32s-14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32zM608 64\nc17.6729 0 32 -14.3271 32 -32s-14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32zM608 384c17.6729 0 32 -14.3271 32 -32s-14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32z\" />\n    <glyph glyph-name=\"assistive-listening-systems\" unicode=\"&#xf2a2;\" \nd=\"M216 188c0 -15.4639 -12.5361 -28 -28 -28s-28 12.5361 -28 28c0 44.1123 35.8877 80 80 80s80 -35.8877 80 -80c0 -15.4639 -12.5361 -28 -28 -28s-28 12.5361 -28 28c0 13.2344 -10.7666 24 -24 24s-24 -10.7656 -24 -24zM240 364c97.0469 0 176 -78.9531 176 -176\nc0 -95.9863 -71.4053 -109.798 -72 -144.226c-0.124023 -59.4463 -48.5254 -107.774 -108 -107.774c-15.4639 0 -28 12.5361 -28 28s12.5361 28 28 28c28.6729 0 52 23.3271 52 52l0.00292969 0.37793c0.988281 73.3115 71.9971 68.458 71.9971 143.622\nc0 66.168 -53.832 120 -120 120s-120 -53.832 -120 -120c0 -15.4639 -12.5361 -28 -28 -28s-28 12.5361 -28 28c0 97.0469 78.9531 176 176 176zM160 128c17.6729 0 32 -14.3271 32 -32s-14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32zM32 0\nc17.6729 0 32 -14.3271 32 -32s-14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32zM512 187.993c0 -15.4639 -12.5371 -28 -28.001 -28s-28 12.5361 -28 28c0 1.12695 -0.00683594 2.24512 -0.0332031 3.36328l-0.00292969 0.1875\nc-1.4668 91.4404 -60.1709 172.599 -146.077 201.953c-14.6318 5.00098 -22.4414 20.917 -17.4414 35.5498c5.00098 14.6328 20.917 22.4404 35.5498 17.4424c108.163 -36.959 182.082 -139.015 183.961 -253.965c0.0332031 -1.50684 0.0449219 -3.01367 0.0449219 -4.53125\nzM152.971 8.9707l-33.9404 -33.9404l-80 80l33.9404 33.9404z\" />\n    <glyph glyph-name=\"american-sign-language-interpreting\" unicode=\"&#xf2a3;\" horiz-adv-x=\"640\" \nd=\"M290.547 258.961c-20.2949 10.1494 -44.1465 11.1992 -64.7393 3.88965c42.6064 0 71.208 -20.4746 85.5781 -50.5752c8.57617 -17.8994 -5.14746 -38.0713 -23.6172 -38.0713c18.4297 0 32.2119 -20.1357 23.6172 -38.0713\nc-14.7246 -30.8457 -46.123 -50.8535 -80.2979 -50.8535c-0.556641 0 -94.4707 8.61426 -94.4707 8.61426l-66.4062 -33.3467c-9.38379 -4.69336 -19.8145 -0.378906 -23.8945 7.78125l-44.4561 88.9248c-4.16699 8.61523 -1.11133 18.8975 6.94531 23.6211l58.0723 33.0693\nl41.1221 74.1953c6.38965 57.2451 34.7314 109.768 79.7432 146.727c11.3906 9.44824 28.3408 7.78125 37.5098 -3.61328c9.44629 -11.3936 7.78027 -28.0674 -3.6123 -37.5156c-12.5029 -10.5596 -23.6172 -22.5098 -32.5088 -35.5703\nc21.6719 14.7285 46.6787 24.7324 74.1865 28.0674c14.7246 1.94434 28.0625 -8.33594 29.7295 -23.0654c1.94531 -14.7275 -8.33594 -28.0674 -23.0615 -29.7344c-16.1162 -1.94434 -31.1201 -7.50293 -44.1787 -15.2832c26.1143 5.71289 58.7119 3.1377 88.0791 -11.1152\nc13.3359 -6.66895 18.8936 -22.5088 12.2246 -35.8486c-6.38965 -13.0596 -22.5039 -18.6162 -35.5645 -12.2256zM263.318 189.489c-6.1123 12.5049 -18.3379 20.2861 -32.2314 20.2861h-0.105469c-19.5732 0 -35.46 -15.8867 -35.46 -35.46\nc0 -0.0302734 0 -0.0800781 0.000976562 -0.110352c0 -21.4277 17.8076 -35.5703 35.5645 -35.5703c13.8936 0 26.1191 7.78125 32.2314 20.2861c4.44531 9.44922 13.6133 15.0059 23.3389 15.2842c-9.72559 0.277344 -18.8936 5.83496 -23.3389 15.2842zM638.139 226.726\nc4.16797 -8.61426 1.11133 -18.8965 -6.94531 -23.6201l-58.0713 -33.0693l-41.1221 -74.1963c-6.38965 -57.2451 -34.7314 -109.767 -79.7432 -146.726c-10.9316 -9.1123 -27.7988 -8.14453 -37.5098 3.6123c-9.44629 11.3945 -7.78027 28.0674 3.61328 37.5166\nc12.5029 10.5586 23.6162 22.5088 32.5078 35.5703c-21.6719 -14.7295 -46.6787 -24.7324 -74.1865 -28.0674c-10.0205 -2.50586 -27.5518 5.64258 -29.7295 23.0645c-1.94531 14.7285 8.33594 28.0674 23.0615 29.7344c16.1162 1.94629 31.1201 7.50293 44.1787 15.2842\nc-26.1143 -5.71289 -58.7119 -3.1377 -88.0791 11.1152c-13.3359 6.66895 -18.8936 22.5088 -12.2246 35.8477c6.38965 13.0605 22.5049 18.6191 35.5654 12.2266c20.2949 -10.1484 44.1465 -11.1982 64.7393 -3.88965c-42.6064 0 -71.208 20.4746 -85.5781 50.5762\nc-8.57617 17.8984 5.14746 38.0713 23.6172 38.0713c-18.4297 0 -32.2109 20.1357 -23.6172 38.0703c14.0332 29.3965 44.0391 50.8877 81.9658 50.8545l92.8027 -8.61523l66.4062 33.3467c9.4082 4.7041 19.8281 0.354492 23.8936 -7.78027zM408.912 245.344\nc-13.8936 0 -26.1191 -7.78027 -32.2314 -20.2861c-4.44531 -9.44824 -13.6133 -15.0059 -23.3389 -15.2832c9.72559 -0.27832 18.8936 -5.83594 23.3389 -15.2842c6.1123 -12.5049 18.3379 -20.2861 32.2314 -20.2861h0.105469c19.5732 0 35.46 15.8857 35.46 35.46\nc0 0.0302734 0 0.0791016 -0.000976562 0.110352c0 21.4287 -17.8076 35.5693 -35.5645 35.5693z\" />\n    <glyph glyph-name=\"deaf\" unicode=\"&#xf2a4;\" \nd=\"M216 188c0 -15.4639 -12.5361 -28 -28 -28s-28 12.5361 -28 28c0 44.1123 35.8877 80 80 80s80 -35.8877 80 -80c0 -15.4639 -12.5361 -28 -28 -28s-28 12.5361 -28 28c0 13.2344 -10.7666 24 -24 24s-24 -10.7656 -24 -24zM240 364c97.0469 0 176 -78.9531 176 -176\nc0 -95.9863 -71.4053 -109.798 -72 -144.226c-0.124023 -59.4463 -48.5254 -107.774 -108 -107.774c-15.4639 0 -28 12.5361 -28 28s12.5361 28 28 28c28.6729 0 52 23.3271 52 52l0.00292969 0.37793c0.988281 73.3115 71.9971 68.458 71.9971 143.622\nc0 66.168 -53.832 120 -120 120s-120 -53.832 -120 -120c0 -15.4639 -12.5361 -28 -28 -28s-28 12.5361 -28 28c0 97.0469 78.9531 176 176 176zM508.485 416.201c4.68652 -4.68652 4.68652 -12.2842 0 -16.9727l-87.0303 -87.0283\nc-4.68652 -4.68652 -12.2842 -4.68652 -16.9697 0l-28.2852 28.2852c-4.68652 4.68652 -4.68652 12.2842 0 16.9707l87.0283 87.0293c4.6875 4.68555 12.2842 4.68555 16.9717 0zM168.97 133.255l28.2861 -28.2842c4.68652 -4.68652 4.68652 -12.2852 0 -16.9707\nl-148.484 -148.485c-4.6875 -4.68555 -12.2842 -4.68555 -16.9717 0l-28.2852 28.2842c-4.68555 4.6875 -4.68555 12.2852 0 16.9707l148.485 148.485c4.68555 4.68652 12.2842 4.68652 16.9697 0z\" />\n    <glyph glyph-name=\"sign-language\" unicode=\"&#xf2a7;\" horiz-adv-x=\"448\" \nd=\"M91.4336 -35.9873c-0.306641 16.0186 13.1094 29.1289 29.1309 29.1289h62.293v5.71484h-125.864c-16.0215 0 -29.4375 13.1104 -29.1299 29.1289c0.296875 15.5234 12.9717 28.0146 28.5645 28.0146h126.43v5.71387h-153.722\nc-16.0205 0 -29.4365 13.1113 -29.1299 29.1289c0.296875 15.5225 12.9727 28.0137 28.5664 28.0137h154.286v5.71387h-125.151c-16.0215 0 -29.4375 13.1104 -29.1299 29.1289c0.296875 15.5215 12.9727 28.0127 28.5654 28.0127h168.566l-31.085 22.6064\nc-12.7617 9.28027 -15.583 27.1484 -6.30176 39.9121c9.28027 12.7607 27.1494 15.5811 39.9121 6.30176l123.36 -89.7148c7.79395 -5.66895 14.1201 -18.0908 14.1201 -27.7285v-141.136c0 -15.9102 -10.9463 -29.7305 -26.4326 -33.374l-80.4717 -18.9346\nc-8.55176 -2.01172 -22.624 -3.64551 -31.4102 -3.64551h-107.4c-15.5928 0.000976562 -28.2686 12.4922 -28.5664 28.0137zM164.683 189.714l-36.3711 46.71c-9.5791 12.3027 -7.51172 29.9795 4.55371 39.75c12.4502 10.083 31.0371 7.55273 40.8799 -5.08789\nl13.0039 -16.7002c-17.1426 -15.6484 -15.4092 -43.0244 3.16992 -56.5361l11.1875 -8.13574h-36.4238zM447.981 191.817c0.00976562 -0.311523 0.0175781 -0.81543 0.0175781 -1.12695c0 -9.24902 -5.92188 -21.3682 -13.2197 -27.0508l-61.0645 -47.5488v16.999\nc0 13.4834 -6.51074 26.2686 -17.415 34.1982l-123.359 89.7139c-12.6357 9.18945 -29.1934 9.16113 -41.6904 0.904297l-52.0527 66.8486c-9.84375 12.6416 -7.74121 31.2822 5.08594 40.8809c12.4297 9.30273 30.0732 6.97559 39.6523 -5.32812l77.6758 -99.7539\nl4.50879 3.51172l-94.4434 121.287c-9.84277 12.6416 -7.74121 31.2822 5.08594 40.8818c12.4307 9.30176 30.0732 6.97461 39.6533 -5.32812l94.79 -121.734l4.50879 3.51074l-76.8887 98.7451c-9.84277 12.6416 -7.74121 31.2822 5.08594 40.8809\nc12.4297 9.30273 30.0732 6.97559 39.6533 -5.32715l103.562 -133.001l-1.26172 38.4141c-0.518555 15.7715 11.8457 28.9756 27.6191 29.4932c15.7705 0.517578 28.9746 -11.8477 29.4922 -27.6191z\" />\n    <glyph glyph-name=\"low-vision\" unicode=\"&#xf2a8;\" horiz-adv-x=\"576\" \nd=\"M569.344 216.369c3.67383 -6.22461 6.65625 -17.1416 6.65625 -24.3691s-2.98242 -18.1455 -6.65723 -24.3701c-31.9746 -54.2607 -79.6484 -98.3232 -136.81 -126.301l0.00683594 -0.00878906l43.1201 -58.377c7.60156 -10.8594 4.95996 -25.8252 -5.90039 -33.4268\nl-13.1133 -9.17773c-10.8594 -7.59863 -25.8223 -4.95801 -33.4238 5.90039l-251.836 356.544c-11.1797 -5.09375 -28.5518 -14.7539 -38.7764 -21.5635l189.979 -271.399c-9.52637 -1.00488 -25.0342 -1.82031 -34.6133 -1.82031\nc-12.29 0 -32.1484 1.33984 -44.3262 2.99023l-40.6309 58.04h-0.00976562l-119.399 170.58c-8.64453 -9.25391 -21.3203 -25.3428 -28.2939 -35.9121l124.19 -177.417c-73.1172 25.4863 -134.358 76.0166 -172.858 141.349c-8.96484 15.2109 -8.76562 33.8643 0 48.7393\nc0.0107422 0.0166016 0.0234375 0.0332031 0.0332031 0.0498047c33.5459 56.8984 82.7676 99.8506 136.79 126.242l-43.1309 58.3945c-7.60156 10.8604 -4.95996 25.8252 5.90039 33.4268l13.1143 9.17773c10.8584 7.59961 25.8213 4.95801 33.4229 -5.90039\nl52.7705 -72.1689c26.3496 6.79004 53.9834 10.4092 82.4512 10.4092c119.81 0 224.96 -63.9492 281.344 -159.631zM390.026 102.06c21.1406 23.9658 33.9736 55.4365 33.9736 89.9404c0 75.1738 -60.8379 136 -136 136c-17.5117 0 -34.2422 -3.30566 -49.6084 -9.32324\nl19.0684 -27.2363c25.9883 7.96289 54.7598 5.56836 79.5098 -7.68066h-0.0292969c-23.6504 0 -42.8203 -19.1699 -42.8203 -42.8193c0 -23.4717 18.9922 -42.8203 42.8203 -42.8203c23.6494 0 42.8193 19.1699 42.8193 42.8203v0.0292969\nc18.9111 -35.3271 15.8818 -79.1123 -8.7998 -111.68z\" />\n    <glyph glyph-name=\"handshake\" unicode=\"&#xf2b5;\" horiz-adv-x=\"640\" \nd=\"M434.7 384c8.5 0 16.7002 -3.40039 22.5996 -9.40039l54.6006 -54.5996v-193.5c-2.40039 2.7002 -5 5.2998 -7.90039 7.7002l-145.6 118.2l26.0996 23.8994c6.5 6 7 16.1006 1 22.6006c-5.90039 6.5 -16.0996 6.89941 -22.5996 1l-79.9004 -73.2002\nc-0.0996094 -0.100586 -0.299805 -0.100586 -0.400391 -0.200195c-16.6992 -14.9004 -43.3994 -11.2002 -56.0996 2.7002c-14.2002 15.5 -14.5 40.3994 2.09961 56c0.100586 0.0996094 0.200195 0.299805 0.300781 0.399414l98.2998 90\nc5.89941 5.40039 13.5996 8.40039 21.5996 8.40039h85.9004zM544 319.8h96v-255.899h-64c-17.7002 0 -32 14.2998 -32 32v223.899zM592 95.9004c8.7998 0 16 7.19922 16 16c0 8.7998 -7.2002 16 -16 16s-16 -7.2002 -16 -16c0 -8.80078 7.2002 -16 16 -16zM0 64v255.8h96\nv-223.8c0 -17.7002 -14.2998 -32 -32 -32h-64zM48 127.9c-8.7998 0 -16 -7.10059 -16 -16c0 -8.80078 7.2002 -16 16 -16s16 7.19922 16 16c0 8.7998 -7.2002 16 -16 16zM483.9 109.3c13.6992 -11.2002 15.7998 -31.2998 4.59961 -45.0996l-9.5 -11.7002\nc-11.0996 -13.7998 -31.2998 -15.7998 -45 -4.7002l-5.40039 4.40039l-31.3994 -38.6006c-12.9004 -15.8994 -36.4004 -18.3994 -52.2998 -5.39941l-17.9004 15.5l-0.200195 -0.200195c-22.2998 -27.4004 -62.5996 -31.5996 -90 -9.2998l-90.5 81.8994h-18.2998v223.9\nl54.7002 54.5996c6 6 14.0996 9.40039 22.5996 9.40039h83.7998l-81.7998 -74.9004c-29.2002 -26.7998 -31.2998 -72.2998 -4.39941 -101.699c26.5 -28.9004 72 -31.5 101.699 -4.40039l30 27.5z\" />\n    <glyph glyph-name=\"envelope-open\" unicode=\"&#xf2b6;\" \nd=\"M512 -16c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v263.276c0 12.8955 8.2373 29.8193 18.3867 37.7754c24.9131 19.5293 45.501 35.3652 164.2 121.512c16.8252 12.2666 50.21 41.7832 73.4131 41.4336\nc23.1982 0.353516 56.5957 -29.1719 73.4131 -41.4326c118.687 -86.1377 139.303 -101.995 164.2 -121.513c10.1494 -7.95605 18.3867 -24.8799 18.3867 -37.7754v-263.276zM446.334 180.605c-2.5625 3.72754 -7.7002 4.59473 -11.3389 1.90625\nc-22.8447 -16.873 -55.4619 -40.7051 -105.582 -77.0791c-16.8252 -12.2656 -50.21 -41.7803 -73.4131 -41.4297c-23.2109 -0.34375 -56.5586 29.1436 -73.4131 41.4297c-50.1143 36.3701 -82.7344 60.2041 -105.582 77.0791\nc-3.63867 2.68848 -8.77637 1.82129 -11.3389 -1.90625l-9.07227 -13.1963c-0.777344 -1.13086 -1.4082 -3.16113 -1.4082 -4.5332c0 -2.22754 1.45508 -5.11035 3.24707 -6.43359c22.8877 -16.8994 55.4541 -40.6904 105.304 -76.8682\nc20.2734 -14.7812 56.5234 -47.8135 92.2637 -47.5732c35.7236 -0.242188 71.9609 32.7715 92.2627 47.5732c49.8506 36.1787 82.418 59.9697 105.304 76.8682c1.79199 1.32324 3.24707 4.20605 3.24707 6.43359c0 1.37207 -0.630859 3.40234 -1.4082 4.5332z\" />\n    <glyph glyph-name=\"address-book\" unicode=\"&#xf2b9;\" horiz-adv-x=\"448\" \nd=\"M436 288h-20v-64h20c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-20v-64h20c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-20v-48c0 -26.5 -21.5 -48 -48 -48h-320c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48\nh320c26.5 0 48 -21.5 48 -48v-48h20c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12zM208 320c-35.2998 0 -64 -28.7002 -64 -64s28.7002 -64 64 -64s64 28.7002 64 64s-28.7002 64 -64 64zM320 83.2002v19.2002\nc0 31.7998 -30.0996 57.5996 -67.2002 57.5996h-5c-12.2002 -5.09961 -25.7002 -8 -39.7998 -8s-27.5 2.90039 -39.7998 8h-5c-37.1006 0 -67.2002 -25.7998 -67.2002 -57.5996v-19.2002c0 -10.6006 10 -19.2002 22.4004 -19.2002h179.199\nc12.4004 0 22.4004 8.59961 22.4004 19.2002z\" />\n    <glyph glyph-name=\"address-card\" unicode=\"&#xf2bb;\" horiz-adv-x=\"576\" \nd=\"M528 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h480zM176 320c-35.2998 0 -64 -28.7002 -64 -64s28.7002 -64 64 -64s64 28.7002 64 64s-28.7002 64 -64 64zM288 83.2002v19.2002\nc0 31.7998 -30.0996 57.5996 -67.2002 57.5996h-5c-12.2002 -5.09961 -25.7002 -8 -39.7998 -8s-27.5 2.90039 -39.7998 8h-5c-37.1006 0 -67.2002 -25.7998 -67.2002 -57.5996v-19.2002c0 -10.6006 10 -19.2002 22.4004 -19.2002h179.199\nc12.4004 0 22.4004 8.59961 22.4004 19.2002zM512 136v16c0 4.40039 -3.59961 8 -8 8h-144c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h144c4.40039 0 8 3.59961 8 8zM512 200v16c0 4.40039 -3.59961 8 -8 8h-144c-4.40039 0 -8 -3.59961 -8 -8v-16\nc0 -4.40039 3.59961 -8 8 -8h144c4.40039 0 8 3.59961 8 8zM512 264v16c0 4.40039 -3.59961 8 -8 8h-144c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h144c4.40039 0 8 3.59961 8 8z\" />\n    <glyph glyph-name=\"user-circle\" unicode=\"&#xf2bd;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 344c-48.5996 0 -88 -39.4004 -88 -88s39.4004 -88 88 -88s88 39.4004 88 88s-39.4004 88 -88 88zM248 0c58.7002 0 111.3 26.5996 146.5 68.2002\nc-18.7998 35.3994 -55.5996 59.7998 -98.5 59.7998c-2.40039 0 -4.7998 -0.400391 -7.09961 -1.09961c-12.9004 -4.2002 -26.6006 -6.90039 -40.9004 -6.90039s-27.9004 2.7002 -40.9004 6.90039c-2.2998 0.699219 -4.69922 1.09961 -7.09961 1.09961\nc-42.9004 0 -79.7002 -24.4004 -98.5 -59.7998c35.2002 -41.6006 87.7998 -68.2002 146.5 -68.2002z\" />\n    <glyph glyph-name=\"id-badge\" unicode=\"&#xf2c1;\" horiz-adv-x=\"384\" \nd=\"M336 448c26.5 0 48 -21.5 48 -48v-416c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48h288zM144 416c-8.7998 0 -16 -7.2002 -16 -16s7.2002 -16 16 -16h96c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16h-96zM192 288\nc-35.2998 0 -64 -28.7002 -64 -64s28.7002 -64 64 -64s64 28.7002 64 64s-28.7002 64 -64 64zM304 51.2002v19.2002c0 31.7998 -30.0996 57.5996 -67.2002 57.5996h-5c-12.2002 -5.09961 -25.7002 -8 -39.7998 -8s-27.5 2.90039 -39.7998 8h-5\nc-37.1006 0 -67.2002 -25.7998 -67.2002 -57.5996v-19.2002c0 -10.6006 10 -19.2002 22.4004 -19.2002h179.199c12.4004 0 22.4004 8.59961 22.4004 19.2002z\" />\n    <glyph glyph-name=\"id-card\" unicode=\"&#xf2c2;\" horiz-adv-x=\"576\" \nd=\"M528 416c26.5 0 48 -21.5 48 -48v-16h-576v16c0 26.5 21.5 48 48 48h480zM0 16v304h576v-304c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48zM352 248v-16c0 -4.40039 3.59961 -8 8 -8h144c4.40039 0 8 3.59961 8 8v16c0 4.40039 -3.59961 8 -8 8h-144\nc-4.40039 0 -8 -3.59961 -8 -8zM352 184v-16c0 -4.40039 3.59961 -8 8 -8h144c4.40039 0 8 3.59961 8 8v16c0 4.40039 -3.59961 8 -8 8h-144c-4.40039 0 -8 -3.59961 -8 -8zM352 120v-16c0 -4.40039 3.59961 -8 8 -8h144c4.40039 0 8 3.59961 8 8v16\nc0 4.40039 -3.59961 8 -8 8h-144c-4.40039 0 -8 -3.59961 -8 -8zM176 256c-35.2998 0 -64 -28.7002 -64 -64s28.7002 -64 64 -64s64 28.7002 64 64s-28.7002 64 -64 64zM67.0996 51.7998c-3.19922 -9.7998 5.2002 -19.7998 15.6006 -19.7998h186.6\nc10.4004 0 18.7998 9.90039 15.6006 19.7998c-8.40039 25.7002 -32.5 44.2002 -60.9004 44.2002h-8.2002c-12.2002 -5.09961 -25.7002 -8 -39.7998 -8s-27.5 2.90039 -39.7998 8h-8.2002c-28.4004 0 -52.5 -18.5 -60.9004 -44.2002z\" />\n    <glyph glyph-name=\"thermometer-full\" unicode=\"&#xf2c7;\" horiz-adv-x=\"256\" \nd=\"M224 352v-203.347c19.9121 -22.5635 32 -52.1943 32 -84.6533c0 -70.6963 -57.3018 -128 -128 -128c-0.298828 0 -0.610352 0.000976562 -0.90918 0.00292969c-70.3018 0.488281 -127.448 58.3613 -127.089 128.664c0.164062 32.1973 12.2227 61.5771 31.998 83.9863\nv203.347c0 53.0186 42.9814 96 96 96s96 -42.9814 96 -96zM128 -16c44.1123 0 80 35.8877 80 80c0 34.3379 -19.3701 52.1904 -32 66.502v221.498c0 26.4668 -21.5332 48 -48 48s-48 -21.5332 -48 -48v-221.498c-12.7334 -14.4277 -31.8262 -32.0996 -31.999 -66.0801\nc-0.223633 -43.876 35.5635 -80.1162 79.4229 -80.4199zM192 64c0 -35.3457 -28.6543 -64 -64 -64s-64 28.6543 -64 64c0 23.6846 12.876 44.3486 32 55.417v232.583c0 17.6729 14.3271 32 32 32s32 -14.3271 32 -32v-232.583c19.124 -11.0684 32 -31.7324 32 -55.417z\" />\n    <glyph glyph-name=\"thermometer-three-quarters\" unicode=\"&#xf2c8;\" horiz-adv-x=\"256\" \nd=\"M192 64c0 -35.3457 -28.6543 -64 -64 -64s-64 28.6543 -64 64c0 23.6846 12.876 44.3486 32 55.417v168.583c0 17.6729 14.3271 32 32 32s32 -14.3271 32 -32v-168.583c19.124 -11.0684 32 -31.7324 32 -55.417zM224 148.653c19.9121 -22.5635 32 -52.1943 32 -84.6533\nc0 -70.6963 -57.3027 -128 -128 -128c-0.298828 0 -0.609375 0.000976562 -0.90918 0.00292969c-70.3018 0.488281 -127.448 58.3613 -127.089 128.664c0.164062 32.1982 12.2227 61.5781 31.998 83.9863v203.347c0 53.0186 42.9814 96 96 96s96 -42.9814 96 -96v-203.347z\nM208 64c0 34.3389 -19.3701 52.1904 -32 66.502v221.498c0 26.4668 -21.5332 48 -48 48s-48 -21.5332 -48 -48v-221.498c-12.7324 -14.4277 -31.8252 -32.0996 -31.999 -66.0801c-0.223633 -43.876 35.5635 -80.1162 79.4229 -80.4199l0.576172 -0.00195312\nc44.1123 0 80 35.8877 80 80z\" />\n    <glyph glyph-name=\"thermometer-half\" unicode=\"&#xf2c9;\" horiz-adv-x=\"256\" \nd=\"M192 64c0 -35.3457 -28.6543 -64 -64 -64s-64 28.6543 -64 64c0 23.6846 12.876 44.3486 32 55.417v104.583c0 17.6729 14.3271 32 32 32s32 -14.3271 32 -32v-104.583c19.124 -11.0684 32 -31.7324 32 -55.417zM224 148.653c19.9121 -22.5635 32 -52.1943 32 -84.6533\nc0 -70.6963 -57.3027 -128 -128 -128c-0.298828 0 -0.609375 0.000976562 -0.90918 0.00292969c-70.3018 0.488281 -127.448 58.3613 -127.089 128.664c0.164062 32.1982 12.2227 61.5781 31.998 83.9863v203.347c0 53.0186 42.9814 96 96 96s96 -42.9814 96 -96v-203.347z\nM208 64c0 34.3389 -19.3701 52.1904 -32 66.502v221.498c0 26.4668 -21.5332 48 -48 48s-48 -21.5332 -48 -48v-221.498c-12.7324 -14.4277 -31.8252 -32.0996 -31.999 -66.0801c-0.223633 -43.876 35.5635 -80.1162 79.4229 -80.4199l0.576172 -0.00195312\nc44.1123 0 80 35.8877 80 80z\" />\n    <glyph glyph-name=\"thermometer-quarter\" unicode=\"&#xf2ca;\" horiz-adv-x=\"256\" \nd=\"M192 64c0 -35.3457 -28.6543 -64 -64 -64s-64 28.6543 -64 64c0 23.6846 12.876 44.3486 32 55.417v40.583c0 17.6729 14.3271 32 32 32s32 -14.3271 32 -32v-40.583c19.124 -11.0684 32 -31.7324 32 -55.417zM224 148.653c19.9121 -22.5635 32 -52.1943 32 -84.6533\nc0 -70.6963 -57.3027 -128 -128 -128c-0.298828 0 -0.609375 0.000976562 -0.90918 0.00292969c-70.3018 0.488281 -127.448 58.3613 -127.089 128.664c0.164062 32.1982 12.2227 61.5781 31.998 83.9863v203.347c0 53.0186 42.9814 96 96 96s96 -42.9814 96 -96v-203.347z\nM208 64c0 34.3389 -19.3701 52.1904 -32 66.502v221.498c0 26.4668 -21.5332 48 -48 48s-48 -21.5332 -48 -48v-221.498c-12.7324 -14.4277 -31.8252 -32.0996 -31.999 -66.0801c-0.223633 -43.876 35.5635 -80.1162 79.4229 -80.4199l0.576172 -0.00195312\nc44.1123 0 80 35.8877 80 80z\" />\n    <glyph glyph-name=\"thermometer-empty\" unicode=\"&#xf2cb;\" horiz-adv-x=\"256\" \nd=\"M192 64c0 -35.3457 -28.6543 -64 -64 -64s-64 28.6543 -64 64s28.6543 64 64 64s64 -28.6543 64 -64zM224 148.653c19.9121 -22.5635 32 -52.1943 32 -84.6533c0 -70.6963 -57.3027 -128 -128 -128c-0.298828 0 -0.609375 0.000976562 -0.90918 0.00292969\nc-70.3018 0.488281 -127.448 58.3613 -127.089 128.664c0.164062 32.1982 12.2227 61.5781 31.998 83.9863v203.347c0 53.0186 42.9814 96 96 96s96 -42.9814 96 -96v-203.347zM208 64c0 34.3389 -19.3701 52.1904 -32 66.502v221.498c0 26.4668 -21.5332 48 -48 48\ns-48 -21.5332 -48 -48v-221.498c-12.7324 -14.4277 -31.8252 -32.0996 -31.999 -66.0801c-0.223633 -43.876 35.5635 -80.1162 79.4229 -80.4199l0.576172 -0.00195312c44.1123 0 80 35.8877 80 80z\" />\n    <glyph glyph-name=\"shower\" unicode=\"&#xf2cc;\" \nd=\"M389.66 312.4l-158.061 -158.061c-9.36914 -9.37012 -24.5693 -9.37012 -33.9395 0l-11.3203 11.3203c-9.37012 9.37012 -9.37012 24.5703 0 33.9395l0.110352 0.110352c-34.0303 40.21 -35.1602 98.9404 -3.39062 140.38\nc-11.9697 7.5498 -26.1396 11.9102 -41.2998 11.9102c-42.8799 0 -77.7598 -34.8799 -77.7598 -77.7598v-306.24h-64v306.24c0 78.1699 63.5898 141.76 141.76 141.76c36.9307 0 70.6104 -14.2002 95.8604 -37.4199c35.8994 11.5098 76.5 4.5 106.67 -21.0303\nl0.110352 0.110352c9.36914 9.37012 24.5693 9.37012 33.9395 0l11.3203 -11.3203c9.37012 -9.37012 9.37012 -24.5703 0 -33.9395zM384 240c0 -8.83691 -7.16309 -16 -16 -16s-16 7.16309 -16 16s7.16309 16 16 16s16 -7.16309 16 -16zM416 240c0 8.83691 7.16309 16 16 16\ns16 -7.16309 16 -16s-7.16309 -16 -16 -16s-16 7.16309 -16 16zM512 240c0 -8.83691 -7.16309 -16 -16 -16s-16 7.16309 -16 16s7.16309 16 16 16s16 -7.16309 16 -16zM352 208c0 -8.83691 -7.16309 -16 -16 -16s-16 7.16309 -16 16s7.16309 16 16 16s16 -7.16309 16 -16z\nM400 224c8.83691 0 16 -7.16309 16 -16s-7.16309 -16 -16 -16s-16 7.16309 -16 16s7.16309 16 16 16zM480 208c0 -8.83691 -7.16309 -16 -16 -16s-16 7.16309 -16 16s7.16309 16 16 16s16 -7.16309 16 -16zM320 176c0 -8.83691 -7.16309 -16 -16 -16s-16 7.16309 -16 16\ns7.16309 16 16 16s16 -7.16309 16 -16zM352 176c0 8.83691 7.16309 16 16 16s16 -7.16309 16 -16s-7.16309 -16 -16 -16s-16 7.16309 -16 16zM448 176c0 -8.83691 -7.16309 -16 -16 -16s-16 7.16309 -16 16s7.16309 16 16 16s16 -7.16309 16 -16zM320 144\nc0 8.83691 7.16309 16 16 16s16 -7.16309 16 -16s-7.16309 -16 -16 -16s-16 7.16309 -16 16zM416 144c0 -8.83691 -7.16309 -16 -16 -16s-16 7.16309 -16 16s7.16309 16 16 16s16 -7.16309 16 -16zM320 112c0 -8.83691 -7.16309 -16 -16 -16s-16 7.16309 -16 16\ns7.16309 16 16 16s16 -7.16309 16 -16zM384 112c0 -8.83691 -7.16309 -16 -16 -16s-16 7.16309 -16 16s7.16309 16 16 16s16 -7.16309 16 -16zM352 80c0 -8.83691 -7.16309 -16 -16 -16s-16 7.16309 -16 16s7.16309 16 16 16s16 -7.16309 16 -16zM320 48\nc0 -8.83691 -7.16309 -16 -16 -16s-16 7.16309 -16 16s7.16309 16 16 16s16 -7.16309 16 -16z\" />\n    <glyph glyph-name=\"bath\" unicode=\"&#xf2cd;\" \nd=\"M488 192c13.2549 0 24 -10.7451 24 -24v-16c0 -13.2549 -10.7451 -24 -24 -24h-8v-32c0 -28.4297 -12.3623 -53.9688 -32 -71.5469v-32.4531c0 -13.2549 -10.7451 -24 -24 -24h-16c-13.2549 0 -24 10.7451 -24 24v8h-256v-8c0 -13.2549 -10.7451 -24 -24 -24h-16\nc-13.2549 0 -24 10.7451 -24 24v32.4531c-19.6377 17.5781 -32 43.1172 -32 71.5469v32h-8c-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24h8v144c0 44.1123 35.8877 80 80 80c27.2119 0 51.2812 -13.667 65.7393 -34.4873\nc21.8838 6.06445 46.2285 1.10449 64.1777 -15.3643c4.71289 4.1748 11.916 4.02051 16.4277 -0.491211l11.3145 -11.3145c4.68555 -4.68652 4.68555 -12.2852 0 -16.9707l-95.0303 -95.0293c-4.68652 -4.68555 -12.2852 -4.68555 -16.9707 0l-11.3145 11.3145\nc-4.51172 4.51172 -4.66699 11.7148 -0.491211 16.4277c-21.5244 23.459 -23.3291 57.8281 -6.83789 83.0352c-5.68262 8.93457 -15.6641 14.8799 -27.0146 14.8799c-17.6445 0 -32 -14.3555 -32 -32v-144h408z\" />\n    <glyph glyph-name=\"podcast\" unicode=\"&#xf2ce;\" horiz-adv-x=\"448\" \nd=\"M267.429 -40.5635c-5.14258 -19.0098 -24.5703 -23.4365 -43.4287 -23.4365c-18.8574 0 -38.2861 4.42676 -43.4277 23.4365c-7.64551 28.4297 -20.5723 99.665 -20.5723 132.813c0 35.1562 31.1416 43.75 64 43.75s64 -8.59375 64 -43.75\nc0 -32.9492 -12.8711 -104.179 -20.5713 -132.813zM156.867 159.446c2.6748 -2.61914 2.39941 -6.98535 -0.628906 -9.18555c-9.3125 -6.76465 -16.4609 -15.3418 -21.2354 -25.3623c-1.74219 -3.65723 -6.5 -4.6582 -9.45312 -1.8877\nc-28.0176 26.2891 -45.5498 63.6279 -45.5498 104.989c0 80.7852 66.8691 146.247 148.163 143.941c76.1982 -2.16113 137.938 -64.1631 139.793 -140.369c1.04199 -42.7822 -16.6846 -81.5225 -45.5107 -108.565c-2.95215 -2.76855 -7.70801 -1.7627 -9.44922 1.8916\nc-4.77441 10.0195 -11.9219 18.5977 -21.2344 25.3623c-3.02832 2.20117 -3.30273 6.56738 -0.62793 9.1875c17.8018 17.4355 28.8662 41.7246 28.8662 68.5518c0 54.1934 -45.1377 98.042 -99.793 95.9258c-49.7295 -1.9248 -90.0703 -42.1572 -92.124 -91.8809\nc-1.17383 -28.4258 10.0908 -54.291 28.7842 -72.5986zM224 448c123.815 0 224 -100.205 224 -224c0 -90.1865 -52.7734 -165.727 -125.739 -201.407c-4.33203 -2.11914 -9.2666 1.54297 -8.53516 6.31055c2.55566 16.6416 4.625 33.1924 5.62402 47.2295\nc48.4922 31.377 80.6504 85.9355 80.6504 147.867c0 97.2031 -79.207 176.253 -176.468 175.999c-96.2393 -0.250977 -174.938 -78.6621 -175.529 -174.899c-0.376953 -61.3311 30.7871 -115.541 78.1875 -147.347c1.52832 -1.02637 2.53125 -2.67578 2.67773 -4.51172\nc1.06348 -13.3936 3.02344 -28.8271 5.40625 -44.3389c0.731445 -4.7666 -4.20215 -8.42871 -8.53516 -6.31055c-73.1377 35.7607 -125.739 111.416 -125.739 201.408c0 123.815 100.204 224 224 224zM224 288c35.3457 0 64 -28.6543 64 -64s-28.6543 -64 -64 -64\ns-64 28.6543 -64 64s28.6543 64 64 64z\" />\n    <glyph glyph-name=\"window-maximize\" unicode=\"&#xf2d0;\" \nd=\"M464 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h416zM448 256v84c0 6.59961 -5.40039 12 -12 12h-360c-6.59961 0 -12 -5.40039 -12 -12v-84h384z\" />\n    <glyph glyph-name=\"window-minimize\" unicode=\"&#xf2d1;\" \nd=\"M464 96c26.5 0 48 -21.5 48 -48v-32c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v32c0 26.5 21.5 48 48 48h416z\" />\n    <glyph glyph-name=\"window-restore\" unicode=\"&#xf2d2;\" \nd=\"M512 400v-288c0 -26.5 -21.5 -48 -48 -48h-48v208c0 44.0996 -35.9004 80 -80 80h-208v48c0 26.5 21.5 48 48 48h288c26.5 0 48 -21.5 48 -48zM384 272v-288c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v288c0 26.5 21.5 48 48 48h288\nc26.5 0 48 -21.5 48 -48zM316 244c0 6.59961 -5.40039 12 -12 12h-228c-6.59961 0 -12 -5.40039 -12 -12v-52h252v52z\" />\n    <glyph glyph-name=\"microchip\" unicode=\"&#xf2db;\" \nd=\"M416 400v-416c0 -26.5098 -21.4902 -48 -48 -48h-224c-26.5098 0 -48 21.4902 -48 48v416c0 26.5098 21.4902 48 48 48h224c26.5098 0 48 -21.4902 48 -48zM512 342v-12c0 -3.31152 -2.68848 -6 -6 -6h-18v-6c0 -3.31152 -2.68848 -6 -6 -6h-42v48h42\nc3.31152 0 6 -2.68848 6 -6v-6h18c3.31152 0 6 -2.68848 6 -6zM512 246v-12c0 -3.31152 -2.68848 -6 -6 -6h-18v-6c0 -3.31152 -2.68848 -6 -6 -6h-42v48h42c3.31152 0 6 -2.68848 6 -6v-6h18c3.31152 0 6 -2.68848 6 -6zM512 150v-12c0 -3.31152 -2.68848 -6 -6 -6h-18v-6\nc0 -3.31152 -2.68848 -6 -6 -6h-42v48h42c3.31152 0 6 -2.68848 6 -6v-6h18c3.31152 0 6 -2.68848 6 -6zM512 54v-12c0 -3.31152 -2.68848 -6 -6 -6h-18v-6c0 -3.31152 -2.68848 -6 -6 -6h-42v48h42c3.31152 0 6 -2.68848 6 -6v-6h18c3.31152 0 6 -2.68848 6 -6zM30 72h42\nv-48h-42c-3.31152 0 -6 2.68848 -6 6v6h-18c-3.31152 0 -6 2.68848 -6 6v12c0 3.31152 2.68848 6 6 6h18v6c0 3.31152 2.68848 6 6 6zM30 168h42v-48h-42c-3.31152 0 -6 2.68848 -6 6v6h-18c-3.31152 0 -6 2.68848 -6 6v12c0 3.31152 2.68848 6 6 6h18v6\nc0 3.31152 2.68848 6 6 6zM30 264h42v-48h-42c-3.31152 0 -6 2.68848 -6 6v6h-18c-3.31152 0 -6 2.68848 -6 6v12c0 3.31152 2.68848 6 6 6h18v6c0 3.31152 2.68848 6 6 6zM30 360h42v-48h-42c-3.31152 0 -6 2.68848 -6 6v6h-18c-3.31152 0 -6 2.68848 -6 6v12\nc0 3.31152 2.68848 6 6 6h18v6c0 3.31152 2.68848 6 6 6z\" />\n    <glyph glyph-name=\"snowflake\" unicode=\"&#xf2dc;\" horiz-adv-x=\"448\" \nd=\"M440.3 102.8c7.40039 -4.2002 9.90039 -13.7002 5.60059 -21l-15.5 -26.7998c-4.30078 -7.40039 -13.7002 -10 -21.1006 -5.7002l-33.7998 19.5l7 -26c2.2002 -8.2002 -2.7002 -16.7002 -10.9004 -18.8994l-14.8994 -4\nc-8.2002 -2.2002 -16.7002 2.69922 -18.9004 10.8994l-19 70.7998l-62.7998 36.2002v-77.5l53.4004 -53.7002c6.19922 -6.19922 6.19922 -16.3994 0 -22.5996l-11.3008 -11.2998c-6.19922 -6.2002 -16.3994 -6.2002 -22.5996 0l-19.7002 19.7002v-40.4004\nc0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v40.2998l-19.7002 -19.7002c-6.19922 -6.19922 -16.3994 -6.19922 -22.5996 0l-11.2998 11.3008c-6.2998 6.19922 -6.2998 16.3994 0 22.5996l53.7002 53.7002v77.5l-62.8008 -36.2002l-19 -70.7998\nc-2.19922 -8.2002 -10.6992 -13.1006 -18.8994 -10.9004l-14.9004 4c-8.2002 2.2002 -13.0996 10.7002 -10.8994 18.9004l7 26l-33.8008 -19.5c-7.39941 -4.2002 -16.7998 -1.7002 -21.0996 5.7002l-15.5 26.7998c-4.2002 7.39941 -1.7002 16.7998 5.7002 21.0996\nl33.7998 19.6006l-26 7c-8.2002 2.19922 -13.0996 10.6992 -10.9004 18.8994l4 14.9004c2.2002 8.2002 10.7002 13.0996 18.9004 10.8994l70.7998 -19l63.7998 36.9004l-63.7998 36.9004l-70.7998 -19c-8.2002 -2.2002 -16.7002 2.69922 -18.9004 10.8994l-4 14.9004\nc-2.19922 8.2998 2.7002 16.7998 11 19l26 7l-33.7998 19.5c-7.39941 4.2998 -10 13.7002 -5.7002 21.0996l15.5 26.7002c4.30078 7.40039 13.7002 10 21.1006 5.7002l33.7998 -19.5l-7 26c-2.2002 8.2002 2.7002 16.7002 10.9004 18.8994l14.8994 4\nc8.2002 2.2002 16.7002 -2.69922 18.9004 -10.8994l19 -70.7998l62.7998 -36.2002v77.5l-53.7002 53.7002c-6.2998 6.19922 -6.2998 16.3994 0 22.5996l11.4004 11.2998c6.2002 6.2002 16.3994 6.2002 22.5996 0l19.7002 -19.7002v40.4004c0 8.7998 7.2002 16 16 16h32\nc8.7998 0 16 -7.2002 16 -16v-40.4004l19.7998 19.7002c6.2002 6.2002 16.4004 6.2002 22.6006 0l11.2998 -11.2998c6.2002 -6.2002 6.2002 -16.4004 0 -22.5996l-53.7002 -53.7002v-77.5l62.7998 36.2002l19 70.7998c2.2002 8.2002 10.7002 13.0996 18.9004 10.8994\nl14.8994 -4c8.2002 -2.19922 13.1006 -10.6992 10.9004 -18.8994l-7 -26l33.7998 19.5c7.40039 4.2002 16.7998 1.7002 21.1006 -5.7002l15.5 -26.7998c4.19922 -7.40039 1.69922 -16.7998 -5.7002 -21.1006l-33.7998 -19.5l26 -7\nc8.19922 -2.19922 13.0996 -10.6992 10.8994 -18.8994l-4 -14.9004c-2.2002 -8.2002 -10.7002 -13.0996 -18.8994 -10.8994l-70.8008 19l-63.7998 -36.9004l63.9004 -37l70.7998 19c8.2002 2.2002 16.7002 -2.7002 18.9004 -10.9004l4 -14.8994\nc2.19922 -8.2002 -2.7002 -16.7002 -10.9004 -18.9004l-26 -7z\" />\n    <glyph glyph-name=\"utensil-spoon\" unicode=\"&#xf2e5;\" \nd=\"M480.1 416.1c55.1006 -55 34.5 -164.899 -28.5 -227.8c-49.2998 -49.2998 -110 -55.0996 -160.399 -28.7998l-192.4 -214.4c-10.3994 -11.5996 -28.5 -12.0996 -39.5 -1.09961l-51.2998 51.2998c-11.0996 11 -10.5996 29 1 39.5l214.5 192.4\nc-26.2998 50.3994 -20.5 111.1 28.7998 160.399c62.9004 63 172.8 83.6006 227.8 28.5z\" />\n    <glyph glyph-name=\"utensils\" unicode=\"&#xf2e7;\" horiz-adv-x=\"416\" \nd=\"M207.9 432.8c0.799805 -4.7002 16.0996 -94.5 16.0996 -128.8c0 -52.2998 -27.7998 -89.5996 -68.9004 -104.6l12.9004 -238.101c0.700195 -13.7002 -10.2002 -25.2998 -24 -25.2998h-64c-13.7002 0 -24.7002 11.5 -24 25.2998l12.9004 238.101\nc-41.2002 15 -68.9004 52.3994 -68.9004 104.6c0 34.4004 15.2998 124.1 16.0996 128.8c3.2002 20.2998 45.3008 20.6006 47.9004 -1.09961v-141.2c1.2998 -3.40039 15.0996 -3.2002 16 0c1.40039 25.2998 7.90039 139.2 8 141.8c3.2998 20.7998 44.7002 20.7998 47.9004 0\nc0.199219 -2.7002 6.59961 -116.5 8 -141.8c0.899414 -3.2002 14.7998 -3.40039 16 0v141.2c2.59961 21.5996 44.7998 21.3994 48 1.09961zM327.1 147.1c-156.5 122.4 -17.5996 300.9 64.9004 300.9c13.2998 0 24 -10.7998 24 -24v-464c0 -13.2998 -10.7002 -24 -24 -24h-56\nc-14 0 -25.0996 12 -23.9004 26z\" />\n    <glyph glyph-name=\"undo-alt\" unicode=\"&#xf2ea;\" \nd=\"M255.545 440c136.809 0.245117 248.456 -111.193 248.455 -248.002c-0.000976562 -136.965 -111.034 -247.998 -248 -247.998c-63.9258 0 -122.202 24.1865 -166.178 63.9082c-5.11328 4.61816 -5.35449 12.5605 -0.482422 17.4326l39.6621 39.6621\nc4.46191 4.46094 11.625 4.71387 16.3682 0.552734c30.6328 -26.8779 69.5029 -41.5557 110.63 -41.5557c93.8164 0 167.236 75.9912 167.994 166.552c0.798828 95.4648 -77.0859 170.24 -169.484 169.442c-42.4287 -0.366211 -82.3662 -16.374 -113.229 -45.2734\nl41.75 -41.75c15.1191 -15.1201 4.41113 -40.9707 -16.9717 -40.9707h-134.059c-13.2549 0 -24 10.7451 -24 24v134.059c0 21.3828 25.8506 32.0908 40.9707 16.9707l35.7139 -35.7139c44.4229 42.4512 104.592 68.5654 170.86 68.6846z\" />\n    <glyph glyph-name=\"trash-alt\" unicode=\"&#xf2ed;\" horiz-adv-x=\"448\" \nd=\"M32 -16v336h384v-336c0 -26.4961 -21.5039 -48 -48 -48h-288c-26.4961 0 -48 21.5039 -48 48zM304 240v-224c0 -8.83203 7.16797 -16 16 -16s16 7.16797 16 16v224c0 8.83203 -7.16797 16 -16 16s-16 -7.16797 -16 -16zM208 240v-224c0 -8.83203 7.16797 -16 16 -16\ns16 7.16797 16 16v224c0 8.83203 -7.16797 16 -16 16s-16 -7.16797 -16 -16zM112 240v-224c0 -8.83203 7.16797 -16 16 -16s16 7.16797 16 16v224c0 8.83203 -7.16797 16 -16 16s-16 -7.16797 -16 -16zM432 416c8.83203 0 16 -7.16797 16 -16v-32\nc0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h120l9.40039 18.7002c3.58984 7.3418 13.1357 13.2998 21.3086 13.2998h0.0908203h114.3h0.0175781c8.20215 0 17.8262 -5.95801 21.4824 -13.2998l9.40039 -18.7002\nh120z\" />\n    <glyph glyph-name=\"sync-alt\" unicode=\"&#xf2f1;\" \nd=\"M370.72 314.72c-31.2617 29.2725 -71.832 45.3184 -114.872 45.2803c-77.458 -0.0683594 -144.328 -53.1777 -162.791 -126.85c-1.34375 -5.36328 -6.12207 -9.15039 -11.6504 -9.15039h-57.3037c-7.49707 0 -13.1934 6.80664 -11.8066 14.1758\nc21.6367 114.9 122.518 201.824 243.704 201.824c66.4482 0 126.791 -26.1357 171.315 -68.6846l35.7148 35.7148c15.1191 15.1191 40.9697 4.41113 40.9697 -16.9717v-134.059c0 -13.2549 -10.7451 -24 -24 -24h-134.059c-21.3828 0 -32.0908 25.8506 -16.9717 40.9707z\nM32 152h134.059c21.3828 0 32.0908 -25.8506 16.9717 -40.9707l-41.75 -41.75c31.2617 -29.2734 71.835 -45.3193 114.876 -45.2803c77.418 0.0703125 144.314 53.1436 162.787 126.849c1.34375 5.36328 6.12207 9.15039 11.6504 9.15039h57.3047\nc7.49805 0 13.1934 -6.80664 11.8066 -14.1758c-21.6377 -114.898 -122.519 -201.822 -243.705 -201.822c-66.4482 0 -126.791 26.1357 -171.315 68.6846l-35.7148 -35.7148c-15.1191 -15.1191 -40.9697 -4.41113 -40.9697 16.9717v134.059c0 13.2549 10.7451 24 24 24z\" />\n    <glyph glyph-name=\"stopwatch\" unicode=\"&#xf2f2;\" horiz-adv-x=\"448\" \nd=\"M432 144c0 -114.9 -93.0996 -208 -208 -208s-208 93.0996 -208 208c0 104 76.2998 190.2 176 205.5v34.5h-28c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h120c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-28v-34.5\nc37.5 -5.7998 71.7002 -21.5996 99.7002 -44.5996l27.5 27.5c4.7002 4.69922 12.2998 4.69922 17 0l28.2998 -28.3008c4.7002 -4.69922 4.7002 -12.2998 0 -17l-29.4004 -29.3994l-0.599609 -0.600586c21.2002 -32.3994 33.5 -71.2998 33.5 -113.1zM256 108v151.5\nc0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-151.5c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12z\" />\n    <glyph glyph-name=\"sign-out-alt\" unicode=\"&#xf2f5;\" \nd=\"M497 175l-168 -168c-15 -15 -41 -4.5 -41 17v96h-136c-13.2998 0 -24 10.7002 -24 24v96c0 13.2998 10.7002 24 24 24h136v96c0 21.4004 25.9004 32 41 17l168 -168c9.2998 -9.40039 9.2998 -24.5996 0 -34zM192 12c0 -6.59961 -5.40039 -12 -12 -12h-84\nc-53 0 -96 43 -96 96v192c0 53 43 96 96 96h84c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-84c-17.7002 0 -32 -14.2998 -32 -32v-192c0 -17.7002 14.2998 -32 32 -32h84c6.59961 0 12 -5.40039 12 -12v-40z\" />\n    <glyph glyph-name=\"sign-in-alt\" unicode=\"&#xf2f6;\" \nd=\"M416 0h-84c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h84c17.7002 0 32 14.2998 32 32v192c0 17.7002 -14.2998 32 -32 32h-84c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h84c53 0 96 -43 96 -96v-192c0 -53 -43 -96 -96 -96z\nM369 201c9.2998 -9.40039 9.2998 -24.5996 0 -34l-168 -168c-15 -15 -41 -4.5 -41 17v96h-136c-13.2998 0 -24 10.7002 -24 24v96c0 13.2998 10.7002 24 24 24h136v96c0 21.5 26 32 41 17z\" />\n    <glyph glyph-name=\"redo-alt\" unicode=\"&#xf2f9;\" \nd=\"M256.455 440c66.2686 -0.119141 126.437 -26.2334 170.859 -68.6846l35.7148 35.7148c15.1201 15.1191 40.9707 4.41113 40.9707 -16.9717v-134.059c0 -13.2549 -10.7451 -24 -24 -24h-134.059c-21.3828 0 -32.0908 25.8506 -16.9717 40.9707l41.75 41.75\nc-30.8633 28.8994 -70.8008 44.9072 -113.229 45.2734c-92.3984 0.797852 -170.283 -73.9775 -169.484 -169.442c0.757812 -90.5605 74.1777 -166.552 167.994 -166.552c41.127 0 79.9971 14.6777 110.629 41.5557c4.74316 4.16113 11.9062 3.9082 16.3682 -0.552734\nl39.6621 -39.6621c4.87207 -4.87207 4.63086 -12.8145 -0.482422 -17.4326c-43.9746 -39.7217 -102.251 -63.9082 -166.177 -63.9082c-136.966 0 -247.999 111.033 -248 247.998c-0.000976562 136.809 111.646 248.247 248.455 248.002z\" />\n    <glyph glyph-name=\"poo\" unicode=\"&#xf2fe;\" \nd=\"M451.4 78.9004c34.2998 -5.5 60.5996 -35 60.5996 -70.9004c0 -39.7998 -32.2002 -72 -72 -72h-368c-39.7998 0 -72 32.2002 -72 72c0 35.9004 26.2998 65.4004 60.5996 70.9004c-17.2998 13.0996 -28.5996 33.6992 -28.5996 57.0996c0 39.7998 32.2002 72 72 72h14.0996\nc-13.3994 11.7002 -22.0996 28.7998 -22.0996 48c0 35.2998 28.7002 64 64 64h16c44.2002 0 80 35.7998 80 80c0 17.4004 -5.7002 33.4004 -15.0996 46.5c4.89941 0.799805 9.89941 1.5 15.0996 1.5c53 0 96 -43 96 -96c0 -11.2998 -2.2998 -21.9004 -5.90039 -32h5.90039\nc35.2998 0 64 -28.7002 64 -64c0 -19.2002 -8.7002 -36.2998 -22.0996 -48h14.0996c39.7998 0 72 -32.2002 72 -72c0 -23.4004 -11.2998 -44 -28.5996 -57.0996zM192 192c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32s32 14.2998 32 32s-14.2998 32 -32 32z\nM351.5 53c2 5.2998 -2 11 -7.7998 11h-175.4c-5.7998 0 -9.7998 -5.7002 -7.7998 -11c10.5 -27.9004 58.5 -53 95.5 -53s85 25.0996 95.5 53zM320 128c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32z\" />\n    <glyph glyph-name=\"images\" unicode=\"&#xf302;\" horiz-adv-x=\"576\" \nd=\"M480 32v-16c0 -26.5098 -21.4902 -48 -48 -48h-384c-26.5098 0 -48 21.4902 -48 48v256c0 26.5098 21.4902 48 48 48h16v-208c0 -44.1123 35.8877 -80 80 -80h336zM576 112c0 -26.5098 -21.4902 -48 -48 -48h-384c-26.5098 0 -48 21.4902 -48 48v256\nc0 26.5098 21.4902 48 48 48h384c26.5098 0 48 -21.4902 48 -48v-256zM256 320c0 26.5098 -21.4902 48 -48 48s-48 -21.4902 -48 -48s21.4902 -48 48 -48s48 21.4902 48 48zM160 176v-48h352v112l-87.5137 87.5146c-4.6875 4.68652 -12.2852 4.68652 -16.9717 0\nl-135.515 -135.515l-39.5137 39.5146c-4.6875 4.68652 -12.2852 4.68652 -16.9717 0z\" />\n    <glyph glyph-name=\"pencil-alt\" unicode=\"&#xf303;\" \nd=\"M497.9 305.9l-46.1006 -46.1006c-4.7002 -4.7002 -12.2998 -4.7002 -17 0l-111 111c-4.7002 4.7002 -4.7002 12.2998 0 17l46.1006 46.1006c18.6992 18.6992 49.0996 18.6992 67.8994 0l60.1006 -60.1006c18.7998 -18.7002 18.7998 -49.0996 0 -67.8994zM284.2 348.2\nc4.7002 4.7002 12.2998 4.7002 17.0996 0l111 -111c4.7002 -4.7002 4.7002 -12.2998 0 -17l-262.6 -262.601l-121.5 -21.2998c-16.4004 -2.7998 -30.7002 11.4004 -27.7998 27.7998l21.1992 121.5zM124.1 108.1c5.5 -5.5 14.3008 -5.5 19.8008 0l154 154\nc5.5 5.5 5.5 14.3008 0 19.8008s-14.3008 5.5 -19.8008 0l-154 -154c-5.5 -5.5 -5.5 -14.3008 0 -19.8008zM88 24v48h-36.2998l-11.2998 -64.5l31.0996 -31.0996l64.5 11.2998v36.2998h-48z\" />\n    <glyph glyph-name=\"pen\" unicode=\"&#xf304;\" \nd=\"M290.74 354.76l128.02 -128.02l-277.99 -277.99l-114.14 -12.5996c-15.2803 -1.69043 -28.1895 11.2295 -26.4902 26.5098l12.7002 114.22zM497.94 373.82c18.75 -18.75 18.75 -49.1504 0 -67.9102l-56.5508 -56.5498l-128.02 128.02l56.5498 56.5498\nc18.75 18.75 49.1602 18.75 67.9102 0z\" />\n    <glyph glyph-name=\"pen-alt\" unicode=\"&#xf305;\" \nd=\"M497.94 373.83c18.75 -18.7598 18.75 -49.1602 0 -67.9102l-56.5508 -56.5498l-128.02 128.02l56.5498 56.5508c18.75 18.75 49.1602 18.75 67.9102 0zM251.14 394.36l84.8506 -84.8506l82.7695 -82.7695l-196.79 -196.79\nc-44.8223 -44.8203 -132.335 -86.8428 -195.34 -93.7998c-15.2803 -1.69043 -28.1895 11.2295 -26.4902 26.5098l0.0302734 0.229492c7.00195 62.9189 49.0156 150.315 93.7803 195.08l151.56 151.55l-22.6299 22.6201l-101.82 -101.819\nc-6.25 -6.25 -16.3799 -6.25 -22.6299 0l-22.6299 22.6299c-6.25 6.24023 -6.25 16.3701 0 22.6201l118.78 118.79c15.6201 15.6201 40.9395 15.6201 56.5596 0z\" />\n    <glyph glyph-name=\"long-arrow-alt-down\" unicode=\"&#xf309;\" horiz-adv-x=\"256\" \nd=\"M168 102.059h46.0576c21.3828 0 32.0908 -25.8516 16.9717 -40.9707l-86.0596 -86.0586c-9.37207 -9.37305 -24.5674 -9.37305 -33.9404 0l-86.0596 86.0586c-15.1191 15.1201 -4.41113 40.9707 16.9717 40.9707h46.0586v301.941c0 6.62695 5.37305 12 12 12h56\nc6.62695 0 12 -5.37305 12 -12v-301.941z\" />\n    <glyph glyph-name=\"long-arrow-alt-left\" unicode=\"&#xf30a;\" horiz-adv-x=\"448\" \nd=\"M134.059 152v-46.0576c0 -21.3828 -25.8516 -32.0908 -40.9707 -16.9717l-86.0586 86.0596c-9.37305 9.37207 -9.37305 24.5674 0 33.9404l86.0586 86.0596c15.1201 15.1191 40.9707 4.41113 40.9707 -16.9717v-46.0586h301.941c6.62695 0 12 -5.37305 12 -12v-56\nc0 -6.62695 -5.37305 -12 -12 -12h-301.941z\" />\n    <glyph glyph-name=\"long-arrow-alt-right\" unicode=\"&#xf30b;\" horiz-adv-x=\"448\" \nd=\"M313.941 232v46.0576c0 21.3828 25.8516 32.0908 40.9707 16.9717l86.0586 -86.0596c9.37305 -9.37207 9.37305 -24.5674 0 -33.9404l-86.0586 -86.0596c-15.1201 -15.1191 -40.9707 -4.41113 -40.9707 16.9717v46.0586h-301.941c-6.62695 0 -12 5.37305 -12 12v56\nc0 6.62695 5.37305 12 12 12h301.941z\" />\n    <glyph glyph-name=\"long-arrow-alt-up\" unicode=\"&#xf30c;\" horiz-adv-x=\"256\" \nd=\"M88 281.941h-46.0576c-21.3828 0 -32.0908 25.8516 -16.9717 40.9707l86.0596 86.0586c9.37207 9.37305 24.5674 9.37305 33.9404 0l86.0596 -86.0586c15.1191 -15.1201 4.41113 -40.9707 -16.9717 -40.9707h-46.0586v-301.941c0 -6.62695 -5.37305 -12 -12 -12h-56\nc-6.62695 0 -12 5.37305 -12 12v301.941z\" />\n    <glyph glyph-name=\"expand-arrows-alt\" unicode=\"&#xf31e;\" horiz-adv-x=\"448\" \nd=\"M448 104v-112v-0.0605469c0 -13.2148 -10.7246 -23.9395 -23.9395 -23.9395h-0.0605469h-112c-21.3896 0 -32.0898 25.9004 -17 41l36.2002 36.2002l-107.2 107.2l-107.23 -107.301l36.2305 -36.0996c15.0898 -15.0996 4.38965 -41 -17 -41h-112h-0.0605469\nc-13.2148 0 -23.9395 10.7246 -23.9395 23.9395v0.0605469v112c0 21.4004 25.8896 32.0996 41 17l36.1904 -36.2002l107.27 107.2l-107.28 107.3l-36.1797 -36.2998c-15.0996 -15.0996 -41 -4.40039 -41 17v112v0.0605469c0 13.2148 10.7246 23.9395 23.9395 23.9395\nh0.0605469h112c21.3896 0 32.0898 -25.9004 17 -41l-36.2002 -36.2002l107.2 -107.2l107.23 107.301l-36.2305 36.0996c-15.0898 15.0996 -4.38965 41 17 41h112h0.0605469c13.2148 0 23.9395 -10.7246 23.9395 -23.9395v-0.0605469v-112\nc0 -21.4004 -25.8896 -32.0996 -41 -17l-36.1904 36.2002l-107.27 -107.2l107.28 -107.3l36.1797 36.2002c15.0996 15.1992 41 4.5 41 -16.9004z\" />\n    <glyph glyph-name=\"clipboard\" unicode=\"&#xf328;\" horiz-adv-x=\"384\" \nd=\"M384 336v-352c0 -26.5098 -21.4902 -48 -48 -48h-288c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h80c0 35.29 28.71 64 64 64s64 -28.71 64 -64h80c26.5098 0 48 -21.4902 48 -48zM192 408c-13.2549 0 -24 -10.7451 -24 -24s10.7451 -24 24 -24\ns24 10.7451 24 24s-10.7451 24 -24 24zM288 294v20c0 3.31152 -2.68848 6 -6 6h-180c-3.31152 0 -6 -2.68848 -6 -6v-20c0 -3.31152 2.68848 -6 6 -6h180c3.31152 0 6 2.68848 6 6z\" />\n    <glyph glyph-name=\"arrows-alt-h\" unicode=\"&#xf337;\" \nd=\"M377.941 278.059c0 21.3828 25.8516 32.0908 40.9707 16.9707l86.0586 -86.0596c9.37305 -9.37305 9.37305 -24.5674 0 -33.9404l-86.0586 -86.0596c-15.1201 -15.1191 -40.9707 -4.41113 -40.9707 16.9717v46.0586h-243.883v-46.0576\nc0 -21.3828 -25.8516 -32.0908 -40.9707 -16.9717l-86.0586 86.0596c-9.37305 9.37305 -9.37305 24.5674 0 33.9404l86.0586 86.0596c15.1201 15.1191 40.9707 4.41113 40.9707 -16.9717v-46.0586h243.883v46.0586z\" />\n    <glyph glyph-name=\"arrows-alt-v\" unicode=\"&#xf338;\" horiz-adv-x=\"256\" \nd=\"M214.059 70.0586c21.3828 0 32.0908 -25.8516 16.9707 -40.9707l-86.0596 -86.0586c-9.37305 -9.37305 -24.5674 -9.37305 -33.9404 0l-86.0596 86.0586c-15.1191 15.1201 -4.41113 40.9707 16.9717 40.9707h46.0586v243.883h-46.0576\nc-21.3828 0 -32.0908 25.8516 -16.9717 40.9707l86.0596 86.0586c9.37305 9.37305 24.5674 9.37305 33.9404 0l86.0596 -86.0586c15.1191 -15.1201 4.41113 -40.9707 -16.9717 -40.9707h-46.0586v-243.883h46.0586z\" />\n    <glyph glyph-name=\"arrow-alt-circle-down\" unicode=\"&#xf358;\" \nd=\"M504 192c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248s248 -111 248 -248zM212 308v-116h-70.9004c-10.6992 0 -16.0996 -13 -8.5 -20.5l114.9 -114.3c4.7002 -4.7002 12.2002 -4.7002 16.9004 0l114.899 114.3c7.60059 7.59961 2.2002 20.5 -8.5 20.5\nh-70.7998v116c0 6.59961 -5.40039 12 -12 12h-64c-6.59961 0 -12 -5.40039 -12 -12z\" />\n    <glyph glyph-name=\"arrow-alt-circle-left\" unicode=\"&#xf359;\" \nd=\"M256 -56c-137 0 -248 111 -248 248s111 248 248 248s248 -111 248 -248s-111 -248 -248 -248zM372 236h-116v70.9004c0 10.6992 -13 16.0996 -20.5 8.5l-114.3 -114.9c-4.7002 -4.7002 -4.7002 -12.2002 0 -16.9004l114.3 -114.899\nc7.59961 -7.60059 20.5 -2.2002 20.5 8.5v70.7998h116c6.59961 0 12 5.40039 12 12v64c0 6.59961 -5.40039 12 -12 12z\" />\n    <glyph glyph-name=\"arrow-alt-circle-right\" unicode=\"&#xf35a;\" \nd=\"M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM140 148h116v-70.9004c0 -10.6992 13 -16.0996 20.5 -8.5l114.3 114.9c4.7002 4.7002 4.7002 12.2002 0 16.9004l-114.3 115c-7.59961 7.59961 -20.5 2.19922 -20.5 -8.5\nv-70.9004h-116c-6.59961 0 -12 -5.40039 -12 -12v-64c0 -6.59961 5.40039 -12 12 -12z\" />\n    <glyph glyph-name=\"arrow-alt-circle-up\" unicode=\"&#xf35b;\" \nd=\"M8 192c0 137 111 248 248 248s248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248zM300 76v116h70.9004c10.6992 0 16.0996 13 8.5 20.5l-114.9 114.3c-4.7002 4.7002 -12.2002 4.7002 -16.9004 0l-115 -114.3c-7.59961 -7.59961 -2.19922 -20.5 8.5 -20.5\nh70.9004v-116c0 -6.59961 5.40039 -12 12 -12h64c6.59961 0 12 5.40039 12 12z\" />\n    <glyph glyph-name=\"external-link-alt\" unicode=\"&#xf35d;\" horiz-adv-x=\"576\" \nd=\"M576 424v-127.984c0 -21.4609 -25.96 -31.9795 -40.9707 -16.9707l-35.707 35.709l-243.523 -243.522c-9.37305 -9.37305 -24.5674 -9.37305 -33.9404 0l-22.627 22.627c-9.37305 9.37305 -9.37305 24.5684 0 33.9404l243.524 243.525l-35.7031 35.7051\nc-15.0703 15.0703 -4.39648 40.9707 16.9717 40.9707h127.976c13.2549 0 24 -10.7451 24 -24zM407.029 177.206c15.1191 15.1201 40.9707 4.41211 40.9707 -16.9697v-176.236c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352\nc0 26.5098 21.4902 48 48 48h296c21.3809 0 32.0889 -25.8506 16.9697 -40.9707l-16 -16c-3.87988 -3.87988 -11.4824 -7.0293 -16.9697 -7.0293h-264v-320h320v144.235v0.000976562c0 5.4873 3.14941 13.0898 7.0293 16.9697z\" />\n    <glyph glyph-name=\"external-link-square-alt\" unicode=\"&#xf360;\" horiz-adv-x=\"448\" \nd=\"M448 368v-352c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h352c26.5098 0 48 -21.4902 48 -48zM360 352h-111.971c-21.3135 0 -32.0801 -25.8613 -16.9717 -40.9707l31.9844 -31.9873l-195.527 -195.527\nc-4.68555 -4.68555 -4.68555 -12.2832 0 -16.9707l31.0293 -31.0293c4.6875 -4.68555 12.2852 -4.68555 16.9707 0l195.526 195.526l31.9883 -31.9912c15.0283 -15.0264 40.9707 -4.47461 40.9707 16.9717v111.979c0 13.2549 -10.7451 24 -24 24z\" />\n    <glyph glyph-name=\"exchange-alt\" unicode=\"&#xf362;\" \nd=\"M0 280v16c0 13.2549 10.7451 24 24 24h360v48c0 21.3672 25.8994 32.042 40.9707 16.9707l80 -80c9.37207 -9.37305 9.37207 -24.5684 0 -33.9404l-80 -80c-15.0146 -15.0127 -40.9707 -4.48633 -40.9707 16.9697v48h-360c-13.2549 0 -24 10.7451 -24 24zM488 128\nc13.2549 0 24 -10.7451 24 -24v-16c0 -13.2549 -10.7451 -24 -24 -24h-360v-48c0 -21.4365 -25.9434 -31.9971 -40.9707 -16.9697l-80 80c-9.37207 9.37207 -9.37207 24.5674 0 33.9404l80 80c15.1084 15.1094 40.9707 4.34375 40.9707 -16.9707v-48h360z\" />\n    <glyph glyph-name=\"cloud-download-alt\" unicode=\"&#xf381;\" horiz-adv-x=\"640\" \nd=\"M537.6 221.4c58.4004 -11.8008 102.4 -63.5 102.4 -125.4c0 -70.7002 -57.2998 -128 -128 -128h-368c-79.5 0 -144 64.5 -144 144c0 62.7998 40.2002 116.2 96.2002 135.9c-0.100586 2.69922 -0.200195 5.39941 -0.200195 8.09961c0 88.4004 71.5996 160 160 160\nc59.2998 0 111 -32.2002 138.7 -80.2002c15.2002 10.2002 33.5996 16.2002 53.2998 16.2002c53 0 96 -43 96 -96c0 -12.2002 -2.2998 -23.9004 -6.40039 -34.5996zM404.7 132.7c10.0996 10.0996 2.89941 27.2998 -11.2998 27.2998h-65.4004v112c0 8.7998 -7.2002 16 -16 16\nh-48c-8.7998 0 -16 -7.2002 -16 -16v-112h-65.4004c-14.1992 0 -21.3994 -17.2002 -11.2998 -27.2998l105.4 -105.4c6.2002 -6.2002 16.3994 -6.2002 22.5996 0z\" />\n    <glyph glyph-name=\"cloud-upload-alt\" unicode=\"&#xf382;\" horiz-adv-x=\"640\" \nd=\"M537.6 221.4c58.4004 -11.8008 102.4 -63.5 102.4 -125.4c0 -70.7002 -57.2998 -128 -128 -128h-368c-79.5 0 -144 64.5 -144 144c0 62.7998 40.2002 116.2 96.2002 135.9c-0.100586 2.69922 -0.200195 5.39941 -0.200195 8.09961c0 88.4004 71.5996 160 160 160\nc59.2998 0 111 -32.2002 138.7 -80.2002c15.2002 10.2002 33.5996 16.2002 53.2998 16.2002c53 0 96 -43 96 -96c0 -12.2002 -2.2998 -23.9004 -6.40039 -34.5996zM393.4 160c14.1992 0 21.3994 17.2002 11.2998 27.2998l-105.4 105.4\nc-6.2002 6.2002 -16.3994 6.2002 -22.5996 0l-105.4 -105.4c-10.0996 -10.0996 -3 -27.2998 11.2998 -27.2998h65.4004v-112c0 -8.7998 7.2002 -16 16 -16h48c8.7998 0 16 7.2002 16 16v112h65.4004z\" />\n    <glyph glyph-name=\"gem\" unicode=\"&#xf3a5;\" horiz-adv-x=\"576\" \nd=\"M485.5 448l90.5 -160h-101.1l-69.2002 160h79.7998zM357.5 448l69.2002 -160h-277.4l69.2002 160h139zM90.5 448h79.7998l-69.2002 -160h-101.1zM0 256h100.7l123 -251.7c1.5 -3.09961 -2.7002 -5.89941 -5 -3.2998zM148.2 256h279.6l-137 -318.2\nc-1 -2.39941 -4.5 -2.39941 -5.5 0zM352.3 4.2998l123 251.7h100.7l-218.7 -254.9c-2.2998 -2.69922 -6.5 0.100586 -5 3.2002z\" />\n    <glyph glyph-name=\"level-down-alt\" unicode=\"&#xf3be;\" horiz-adv-x=\"320\" \nd=\"M313.553 55.6689l-103.966 -112.003c-9.48535 -10.2139 -25.6758 -10.2295 -35.1738 0l-103.975 112.003c-14.2061 15.2998 -3.37695 40.3311 17.5869 40.3311h63.9746v272h-83.9756h-0.00195312c-2.74316 0 -6.54395 1.5752 -8.4834 3.51465l-56 56\nc-7.56055 7.55957 -2.20605 20.4854 8.48535 20.4854h195.976c13.2549 0 24 -10.7451 24 -24v-328h63.9658c20.8779 0 31.8516 -24.9688 17.5869 -40.3311z\" />\n    <glyph glyph-name=\"level-up-alt\" unicode=\"&#xf3bf;\" horiz-adv-x=\"320\" \nd=\"M313.553 328.331c14.2646 -15.3623 3.29102 -40.3311 -17.5869 -40.3311h-63.9658v-328c0 -13.2549 -10.7451 -24 -24 -24h-195.976c-10.6914 0 -16.0459 12.9258 -8.48535 20.4854l56 56c1.93945 1.93945 5.74023 3.51465 8.4834 3.51465h0.00195312h83.9756v272\nh-63.9746c-20.9639 0 -31.793 25.0312 -17.5869 40.3311l103.975 112.003c9.49805 10.2295 25.6885 10.2139 35.1738 0z\" />\n    <glyph glyph-name=\"lock-open\" unicode=\"&#xf3c1;\" horiz-adv-x=\"576\" \nd=\"M423.5 448c84 0.299805 152.5 -68 152.5 -152v-80c0 -13.2998 -10.7002 -24 -24 -24h-32c-13.2998 0 -24 10.7002 -24 24v80c0 39.9004 -32.7002 72.4004 -72.7002 72c-39.5996 -0.400391 -71.2998 -33.2998 -71.2998 -72.9004v-71.0996h48c26.5 0 48 -21.5 48 -48v-192\nc0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v192c0 26.5 21.5 48 48 48h224v70.5c0 84 67.5 153.2 151.5 153.5z\" />\n    <glyph glyph-name=\"map-marker-alt\" unicode=\"&#xf3c5;\" horiz-adv-x=\"384\" \nd=\"M172.268 -53.6699c-145.298 210.639 -172.268 232.257 -172.268 309.67c0 106.039 85.9609 192 192 192s192 -85.9609 192 -192c0 -77.4131 -26.9697 -99.0312 -172.268 -309.67c-9.53516 -13.7744 -29.9307 -13.7734 -39.4648 0zM192 176c44.1826 0 80 35.8174 80 80\ns-35.8174 80 -80 80s-80 -35.8174 -80 -80s35.8174 -80 80 -80z\" />\n    <glyph glyph-name=\"microphone-alt\" unicode=\"&#xf3c9;\" horiz-adv-x=\"352\" \nd=\"M336 256c8.83984 0 16 -7.16016 16 -16v-48c0 -88.9004 -66.29 -162.47 -152 -174.23v-33.7695h56c8.83984 0 16 -7.16016 16 -16v-16c0 -8.83984 -7.16016 -16 -16 -16h-160c-8.83984 0 -16 7.16016 -16 16v16c0 8.83984 7.16016 16 16 16h56v34.1504\nc-88.0303 12.1396 -152 92.0498 -152 181.689v40.1602c0 8.83984 7.16016 16 16 16h16c8.83984 0 16 -7.16016 16 -16v-42.2998c0 -66.8105 48.71 -126.59 115.21 -133.08c76.2998 -7.44043 140.79 52.5801 140.79 127.38v48c0 8.83984 7.16016 16 16 16h16zM176 96\nc-53.0195 0 -96 42.9805 -96 96v160c0 53.0195 42.9805 96 96 96s96 -42.9805 96 -96h-85.3301c-5.88965 0 -10.6699 -3.58008 -10.6699 -8v-16c0 -4.41992 4.78027 -8 10.6699 -8h85.3301v-32h-85.3301c-5.88965 0 -10.6699 -3.58008 -10.6699 -8v-16\nc0 -4.41992 4.78027 -8 10.6699 -8h85.3301v-32h-85.3301c-5.88965 0 -10.6699 -3.58008 -10.6699 -8v-16c0 -4.41992 4.78027 -8 10.6699 -8h85.3301c0 -53.0195 -42.9805 -96 -96 -96z\" />\n    <glyph glyph-name=\"mobile-alt\" unicode=\"&#xf3cd;\" horiz-adv-x=\"320\" \nd=\"M272 448c26.5 0 48 -21.5 48 -48v-416c0 -26.5 -21.5 -48 -48 -48h-224c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48h224zM160 -32c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM272 76v312\nc0 6.59961 -5.40039 12 -12 12h-200c-6.59961 0 -12 -5.40039 -12 -12v-312c0 -6.59961 5.40039 -12 12 -12h200c6.59961 0 12 5.40039 12 12z\" />\n    <glyph glyph-name=\"money-bill-alt\" unicode=\"&#xf3d1;\" horiz-adv-x=\"640\" \nd=\"M352 160c4.41992 0 8 -3.58008 8 -8v-16c0 -4.41992 -3.58008 -8 -8 -8h-64c-4.41992 0 -8 3.58008 -8 8v16c0 4.41992 3.58008 8 8 8h16v55.4404l-0.469727 -0.310547c-1.1123 -0.741211 -3.09961 -1.34375 -4.43652 -1.34375\nc-2.36328 0 -5.34375 1.59668 -6.65332 3.56348l-8.88086 13.3105c-0.741211 1.1123 -1.34375 3.09961 -1.34375 4.43555c0 2.36328 1.59668 5.34473 3.56445 6.6543l15.3301 10.2197c3.93945 2.62988 8.56934 4.03027 13.3096 4.03027h13.5801c4.41992 0 8 -3.58008 8 -8\nv-88h16zM608 384c17.6699 0 32 -14.3301 32 -32v-320c0 -17.6699 -14.3301 -32 -32 -32h-576c-17.6699 0 -32 14.3301 -32 32v320c0 17.6699 14.3301 32 32 32h576zM48 48h64c0 35.3496 -28.6504 64 -64 64v-64zM48 272c35.3496 0 64 28.6504 64 64h-64v-64zM320 80\nc53 0 96 50.1299 96 112c0 61.8604 -42.9805 112 -96 112s-96 -50.1396 -96 -112c0 -61.8496 42.9805 -112 96 -112zM592 48v64c-35.3496 0 -64 -28.6504 -64 -64h64zM592 272v64h-64c0 -35.3496 28.6504 -64 64 -64z\" />\n    <glyph glyph-name=\"phone-slash\" unicode=\"&#xf3dd;\" horiz-adv-x=\"640\" \nd=\"M268.2 66.5996c11.5 5.40039 22.7002 11.6006 33.5996 18.1006l80 -61.7998c-76 -54.5 -169 -86.9004 -269.7 -86.9004c-11.2998 0 -20.8994 7.7998 -23.3994 18.5996l-24 104c-2.60059 11.4004 3.2002 22.9004 13.8994 27.5l112 48\nc9.80078 4.2002 21.2002 1.40039 28 -6.89941zM633.8 -10.0996c7 -5.40039 8.2998 -15.5 2.90039 -22.3008l-19.6006 -25.2998c-5.5 -7 -15.5 -8.2002 -22.5 -2.7998l-588.399 454.7c-7 5.39941 -8.2002 15.3994 -2.7998 22.3994l19.5996 25.2002\nc5.5 7 15.5 8.2002 22.5 2.7998l353.9 -273.5c18.0996 22.5 33.7998 46.7002 46 72.8008l-60.6006 49.5996c-8.2998 6.7002 -11.0996 18.2002 -6.89941 28l48 112c4.59961 10.5996 16.1992 16.5 27.5 13.9004l104 -24c10.8994 -2.5 18.5996 -12.2002 18.5996 -23.4004\nc0 -108.9 -38.0996 -208.4 -100.9 -287.5z\" />\n    <glyph glyph-name=\"portrait\" unicode=\"&#xf3e0;\" horiz-adv-x=\"384\" \nd=\"M336 448c26.5 0 48 -21.5 48 -48v-416c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48h288zM192 320c-35.2998 0 -64 -28.7002 -64 -64s28.7002 -64 64 -64s64 28.7002 64 64s-28.7002 64 -64 64zM304 83.2002v19.2002\nc0 31.7998 -30.0996 57.5996 -67.2002 57.5996h-5c-12.2002 -5.09961 -25.7002 -8 -39.7998 -8s-27.5 2.90039 -39.7998 8h-5c-37.1006 0 -67.2002 -25.7998 -67.2002 -57.5996v-19.2002c0 -10.6006 10 -19.2002 22.4004 -19.2002h179.199\nc12.4004 0 22.4004 8.59961 22.4004 19.2002z\" />\n    <glyph glyph-name=\"reply\" unicode=\"&#xf3e5;\" \nd=\"M8.30859 258.164l176.005 151.985c15.4053 13.3047 39.6865 2.50391 39.6865 -18.1641v-80.0537c160.629 -1.83887 288 -34.0312 288 -186.258c0 -61.4404 -39.5811 -122.309 -83.333 -154.132c-13.6533 -9.93066 -33.1113 2.5332 -28.0771 18.6309\nc45.3438 145.012 -21.5068 183.51 -176.59 185.742v-87.915c0 -20.7002 -24.2998 -31.4531 -39.6865 -18.1641l-176.005 152c-11.0703 9.5625 -11.0859 26.7529 0 36.3281z\" />\n    <glyph glyph-name=\"shield-alt\" unicode=\"&#xf3ed;\" \nd=\"M466.5 364.3c17.7998 -7.39941 29.5 -24.8994 29.5 -44.2998c0 -221.3 -135.9 -344.6 -221.6 -380.3c-11.8008 -4.90039 -25.1006 -4.90039 -36.9004 0c-107 44.5996 -221.5 181.8 -221.5 380.3c0 19.4004 11.7002 36.9004 29.5996 44.2998l192 80\nc4.89062 2.0293 13.1562 3.6748 18.4502 3.6748c5.29492 0 13.5596 -1.64551 18.4502 -3.6748zM256.1 1.7002c93.7002 46.5996 172.5 156.3 175.801 307.7l-175.9 73.2998z\" />\n    <glyph glyph-name=\"tablet-alt\" unicode=\"&#xf3fa;\" horiz-adv-x=\"448\" \nd=\"M400 448c26.5 0 48 -21.5 48 -48v-416c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48h352zM224 -32c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM400 76v312\nc0 6.59961 -5.40039 12 -12 12h-328c-6.59961 0 -12 -5.40039 -12 -12v-312c0 -6.59961 5.40039 -12 12 -12h328c6.59961 0 12 5.40039 12 12z\" />\n    <glyph glyph-name=\"tachometer-alt\" unicode=\"&#xf3fd;\" horiz-adv-x=\"576\" \nd=\"M288 416c159.06 0 288 -128.94 288 -288c0 -52.7998 -14.25 -102.26 -39.0596 -144.8c-5.61035 -9.62012 -16.3008 -15.2002 -27.4404 -15.2002h-443c-11.1396 0 -21.8301 5.58008 -27.4404 15.2002c-24.8096 42.54 -39.0596 92 -39.0596 144.8\nc0 159.06 128.94 288 288 288zM288 352c-17.6699 0 -31.9902 -14.3301 -31.9902 -32s14.3301 -32 32 -32c6.66992 0 12.5098 2.51953 17.6406 6.00977l9.21973 27.6699c0.80957 2.44043 2.33984 4.41016 3.4502 6.66992c-3.74023 13.5205 -15.6104 23.6504 -30.3203 23.6504\nzM96 64c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM144 224c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM390.77 296.41c4.18066 12.5703 -2.59961 26.1699 -15.1699 30.3594\nc-12.6299 4.28027 -26.1895 -2.60938 -30.3594 -15.1699l-61.3398 -184.01c-33.4004 -2.16016 -59.9004 -29.6494 -59.9004 -63.5898c0 -11.7197 3.37988 -22.5498 8.87988 -32h110.24c5.5 9.4502 8.87988 20.2803 8.87988 32c0 19.46 -8.87012 36.6699 -22.5596 48.4102z\nM405.43 239.21c5.68066 -8.94043 15.1904 -15.21 26.5703 -15.2197c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32c-3.91992 0 -7.58008 -0.94043 -11.0498 -2.23047zM480 64c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z\n\" />\n    <glyph glyph-name=\"ticket-alt\" unicode=\"&#xf3ff;\" horiz-adv-x=\"576\" \nd=\"M128 288h320v-192h-320v192zM528 192c0 -26.5098 21.4902 -48 48 -48v-96c0 -26.5098 -21.4902 -48 -48 -48h-480c-26.5098 0 -48 21.4902 -48 48v96c26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48v96c0 26.5098 21.4902 48 48 48h480c26.5098 0 48 -21.4902 48 -48\nv-96c-26.5098 0 -48 -21.4902 -48 -48zM480 296c0 13.2549 -10.7451 24 -24 24h-336c-13.2549 0 -24 -10.7451 -24 -24v-208c0 -13.2549 10.7451 -24 24 -24h336c13.2549 0 24 10.7451 24 24v208z\" />\n    <glyph glyph-name=\"user-alt\" unicode=\"&#xf406;\" \nd=\"M256 160c-79.5 0 -144 64.5 -144 144s64.5 144 144 144s144 -64.5 144 -144s-64.5 -144 -144 -144zM384 128c70.7002 0 128 -57.2998 128 -128v-16c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v16c0 70.7002 57.2998 128 128 128h55.0996\nc22.3008 -10.2002 46.9004 -16 72.9004 -16s50.7002 5.7998 72.9004 16h55.0996z\" />\n    <glyph glyph-name=\"window-close\" unicode=\"&#xf410;\" \nd=\"M464 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h416zM380.4 125.5l-67.1006 66.5l67.1006 66.5c4.7998 4.7998 4.7998 12.5996 0 17.4004l-40.5 40.5\nc-4.80078 4.7998 -12.6006 4.7998 -17.4004 0l-66.5 -67.1006l-66.5 67.1006c-4.7998 4.7998 -12.5996 4.7998 -17.4004 0l-40.5 -40.5c-4.7998 -4.80078 -4.7998 -12.6006 0 -17.4004l67.1006 -66.5l-67.1006 -66.5c-4.7998 -4.7998 -4.7998 -12.5996 0 -17.4004\nl40.5 -40.5c4.80078 -4.7998 12.6006 -4.7998 17.4004 0l66.5 67.1006l66.5 -67.1006c4.7998 -4.7998 12.5996 -4.7998 17.4004 0l40.5 40.5c4.7998 4.80078 4.7998 12.6006 0 17.4004z\" />\n    <glyph glyph-name=\"baseball-ball\" unicode=\"&#xf433;\" horiz-adv-x=\"496\" \nd=\"M368.5 84.0996c12.9004 -26.6992 30.2998 -50.1992 51.4004 -70.5996c-44.6006 -43 -105.101 -69.5 -171.9 -69.5c-66.9004 0 -127.5 26.5996 -172 69.7002c21.2002 20.3994 38.5996 44 51.5 70.7002l-28.7998 13.8994c-11.1006 -23 -26.1006 -43.2998 -44.2998 -61\nc-34 42.4004 -54.4004 96.1006 -54.4004 154.7s20.4004 112.3 54.4004 154.8c17.7998 -17.2998 32.5 -37.0996 43.5 -59.3994l28.6992 14.0996c-12.7998 25.9004 -30 48.9004 -50.6992 68.7998c44.5996 43.1006 105.199 69.7002 172.1 69.7002\nc67 0 127.6 -26.7002 172.2 -69.7998c-20.7998 -20 -38 -43 -50.7998 -69l28.6992 -14.1006c11 22.4004 25.8008 42.2002 43.6006 59.5c33.7998 -42.3994 54.2002 -96.0996 54.2002 -154.6c0 -58.5996 -20.5 -112.4 -54.5 -154.9c-18.1006 17.7002 -33 38 -44.1006 60.9004z\nM140.2 116.1c17.2998 53.9004 14.2998 108.2 -0.700195 153.801l-30.4004 -10c13.3008 -40.2002 15.5 -87.6006 0.600586 -134zM356.5 269.5c-15 -45.5 -18 -99.7998 -0.700195 -153.8l30.5 9.7998c-14.8994 46.5 -12.5996 93.9004 0.600586 134z\" />\n    <glyph glyph-name=\"basketball-ball\" unicode=\"&#xf434;\" horiz-adv-x=\"496\" \nd=\"M212.3 437.7c-1.5 -50 -17 -95.4004 -44.7998 -131.2l-77.4004 77.4004c36 29.6992 78.4004 47.5 122.2 53.7998zM248 226l-46.2998 46.2998c37.2002 45.4004 57.5 103.8 58.7002 167.7c51.8994 -2.59961 103.1 -21.0996 145.5 -56.0996zM56.0996 349.9l77.4004 -77.4004\nc-35.7002 -27.7998 -81.2002 -43.2998 -131.2 -44.7998c6.2998 43.7998 24.1006 86.2002 53.7998 122.2zM328.3 145.7l-46.2998 46.2998l157.9 157.9c35 -42.4004 53.5 -93.6006 56.0996 -145.5c-64 -1.30078 -122.4 -21.6006 -167.7 -58.7002zM248 158l46.2998 -46.2998\nc-37.0996 -45.2998 -57.3994 -103.7 -58.7002 -167.7c-51.8994 2.59961 -103.1 21.2002 -145.5 56.0996zM439.9 34.0996l-77.4004 77.4004c35.7002 27.7002 81.0996 43.2002 131.2 44.7998c-6.2998 -43.7998 -24.1006 -86.2002 -53.7998 -122.2zM167.7 238.3\nl46.2998 -46.2998l-157.9 -157.9c-35 42.4004 -53.5 93.6006 -56.0996 145.5c63.9004 1.10059 122.3 21.5 167.7 58.7002zM283.7 -53.7002c1.59961 50 17.0996 95.5 44.7998 131.2l77.4004 -77.4004c-36 -29.6992 -78.4004 -47.5 -122.2 -53.7998z\" />\n    <glyph glyph-name=\"bowling-ball\" unicode=\"&#xf436;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM120 256c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM184 352c0 -17.7002 14.2998 -32 32 -32s32 14.2998 32 32\ns-14.2998 32 -32 32s-32 -14.2998 -32 -32zM232 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32z\" />\n    <glyph glyph-name=\"chess\" unicode=\"&#xf439;\" \nd=\"M74 240l-33.9102 90.3799c-0.5625 1.5 -1.01953 4.01758 -1.01953 5.62012c0 8.83203 7.16797 16 16 16h0.0195312h56.9102v32h-24c-4.41602 0 -8 3.58398 -8 8v16c0 4.41602 3.58398 8 8 8h24v24c0 4.41602 3.58398 8 8 8h16c4.41602 0 8 -3.58398 8 -8v-24h24\nc4.41602 0 8 -3.58398 8 -8v-16c0 -4.41602 -3.58398 -8 -8 -8h-24v-32h56.8896h0.0195312c8.83203 0 16 -7.16797 16 -16c0 -1.60254 -0.456055 -4.12012 -1.01953 -5.62012l-33.8896 -90.3799h10c8.83203 0 16 -7.16797 16 -16v-16c0 -8.83203 -7.16797 -16 -16 -16\nh-15.9404c0.116211 -35.8613 7.25684 -93.2051 15.9404 -128h-128c8.68359 34.7949 15.8242 92.1387 15.9404 128h-15.9404c-8.83203 0 -16 7.16797 -16 16v16c0 8.83203 7.16797 16 16 16h10zM247.16 -11.5801c4.87988 -2.44141 8.83984 -8.85156 8.83984 -14.3086\nv-0.000976562v-22.1104c0 -8.83203 -7.16797 -16 -16 -16h-224c-8.83203 0 -16 7.16797 -16 16v22.1104c0.000976562 5.45898 3.96582 11.8701 8.84961 14.3096l23.1504 11.5801v16c0 8.83203 7.16797 16 16 16h160c8.83203 0 16 -7.16797 16 -16v-16zM339.93 146.2\nl-24.5693 20.7998c-6.25684 5.28125 -11.3467 16.2119 -11.3604 24.4004v58.5996c0 3.31152 2.68848 6 6 6h26.3896c3.3125 0 6 -2.68848 6 -6v-26h24.71v26c0 3.31152 2.68848 6 6 6h53.8105c3.31152 0 6 -2.68848 6 -6v-26h24.71v26c0 3.31152 2.6875 6 6 6h26.3799\nc3.31152 0 6 -2.68848 6 -6v-58.54v-0.03125c0 -8.19238 -5.07617 -19.1367 -11.3301 -24.4287l-24.5996 -20.79l3.29004 -82.21h-126.721zM384 144v-32h32v32c0 8.83203 -7.16797 16 -16 16s-16 -7.16797 -16 -16zM503.16 -11.5801\nc4.87988 -2.44141 8.83984 -8.85156 8.83984 -14.3086v-0.000976562v-22.1104c0 -8.83203 -7.16797 -16 -16 -16h-192c-8.83203 0 -16 7.16797 -16 16v22.1104c0.000976562 5.45898 3.96582 11.8701 8.84961 14.3096l23.1504 11.5801v16c0 8.83203 7.16797 16 16 16h128\nc8.83203 0 16 -7.16797 16 -16v-16z\" />\n    <glyph glyph-name=\"chess-bishop\" unicode=\"&#xf43a;\" horiz-adv-x=\"320\" \nd=\"M8 160.12c0 73.3799 59.8096 181.08 112.6 225.37c-14 3.41992 -24.5996 15.5098 -24.5996 30.5098c0 17.6641 14.3359 32 32 32h64c17.6641 0 32 -14.3359 32 -32c0 -15.0498 -10.5996 -27.0898 -24.5996 -30.5098c24.3994 -20.4902 50.0693 -54.6807 70.8691 -92.5898\nl-107.89 -107.931c-1.29199 -1.29297 -2.34082 -3.82617 -2.34082 -5.6543c0 -1.8291 1.04883 -4.3623 2.34082 -5.65527l11.3105 -11.3105c1.29297 -1.29199 3.82617 -2.34082 5.6543 -2.34082s4.3623 1.04883 5.65527 2.34082l100.31 100.33\nc15.96 -35.46 26.6904 -71.9492 26.6904 -102.56c0 -51.6006 -22.1396 -73.8301 -56 -84.6006v-43.5195h-192v43.5195c-33.8604 10.7705 -56 32.9609 -56 84.6006zM304 0c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-288\nc-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h288z\" />\n    <glyph glyph-name=\"chess-board\" unicode=\"&#xf43c;\" \nd=\"M255.9 447.8v-64h-64v64h64zM0 383.83h64v-64h-64v64zM128 447.8v-64h-64v64h64zM192 191.9h64v-64h-64v64zM0 255.88h64v-64h-64v64zM383.85 447.8v-64h-64v64h64zM511.85 447.8v-64h-64v64h64zM128 191.9v-64h-64v64h64zM511.8 0h-64v64h64v-64zM511.8 128h-64v64h64\nv-64zM383.85 -64v64h64v-64h-64zM511.85 255.88h-64v64h64v-64zM128 -64v64h64v-64h-64zM0 -64v64h64v-64h-64zM255.9 -64v64h64v-64h-64zM0 127.93h64v-64h-64v64zM319.88 319.85h-64v64h64v-64zM255.88 191.85v64h64v-64h-64zM191.88 63.8496h64v-64h-64v64z\nM319.88 127.85v64h64v-64h-64zM319.88 255.8v64h64v-64h-64zM319.88 63.8701h64v-64h-64v64zM64 63.9502h64v-64h-64v64zM192 319.85h-64v64h64v-64zM383.92 63.9502v64h64v-64h-64zM255.92 255.88h-64v64h64v-64zM383.92 383.83h64v-64h-64v64zM255.92 127.93h64v-64h-64\nv64zM191.92 255.88l0.0800781 -64h-64v64h63.9199zM383.84 191.88v64h64v-64h-64zM128 319.85v-64h-64v64h64zM128 127.93h64v-64h-64v64z\" />\n    <glyph glyph-name=\"chess-king\" unicode=\"&#xf43f;\" horiz-adv-x=\"448\" \nd=\"M400 0c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-352c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h352zM416 288c17.6504 -0.0136719 31.9756 -14.3496 31.9756 -32c0 -2.69434 -0.652344 -6.96777 -1.45605 -9.54004\nl-73.0791 -214.46h-298.881l-73.0791 214.46c-0.803711 2.57227 -1.45605 6.8457 -1.45605 9.54004c0 17.6504 14.3252 31.9863 31.9756 32h160v48h-40c-4.41602 0 -8 3.58398 -8 8v48c0 4.41602 3.58398 8 8 8h40v40c0 4.41602 3.58398 8 8 8h48c4.41602 0 8 -3.58398 8 -8\nv-40h40c4.41602 0 8 -3.58398 8 -8v-48c0 -4.41602 -3.58398 -8 -8 -8h-40v-48h160z\" />\n    <glyph glyph-name=\"chess-knight\" unicode=\"&#xf441;\" horiz-adv-x=\"384\" \nd=\"M19 175.53c-10.4883 4.66211 -19 17.7627 -19 29.2402v0.0195312v137.21v0.0585938c0 5.47461 3.13574 13.0635 7 16.9414l9 9l-14.21 28.4199c-0.988281 1.97266 -1.79004 5.36328 -1.79004 7.56934v0.0107422c0 6.62402 5.37598 12 12 12h147.94\nc106 0 191.92 -86 191.92 -192v-192h-319.86v14.5195v0.0224609c0 27.2783 19.7969 59.3271 44.1904 71.5381l57.2197 28.6504c14.6445 7.32324 26.5303 26.5566 26.5303 42.9297v0.00976562v50.3301l-22.1201 -11.0801\nc-5.45117 -2.72559 -11.0732 -9.7373 -12.5508 -15.6504l-9.21973 -30.6494c-2.4502 -8.15332 -10.8545 -17.3379 -18.7598 -20.5l-12.7803 -5.12012c-3.1582 -1.2627 -8.48145 -2.28809 -11.8828 -2.28809c-3.74902 0 -9.57129 1.23535 -12.9971 2.75781zM52 320\nc-11.04 0 -20 -8.95996 -20 -20s8.95996 -20 20 -20s20 8.95996 20 20s-8.95996 20 -20 20zM368 0c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-352c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h352z\" />\n    <glyph glyph-name=\"chess-pawn\" unicode=\"&#xf443;\" horiz-adv-x=\"320\" \nd=\"M105.1 224c-29.3896 18.3799 -49.0996 50.7803 -49.0996 88c0 57.4082 46.5918 104 104 104s104 -46.5918 104 -104c0 -37.2197 -19.71 -69.6201 -49.0996 -88h25.0996c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-16v-5.49023\nc0 -44 4.11035 -86.5996 24 -122.51h-176c19.8604 35.9102 24 78.5098 24 122.51v5.49023h-16c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h25.0996zM304 0c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-288\nc-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h288z\" />\n    <glyph glyph-name=\"chess-queen\" unicode=\"&#xf445;\" \nd=\"M256 336c-30.9121 0 -56 25.0879 -56 56s25.0879 56 56 56s56 -25.0879 56 -56s-25.0879 -56 -56 -56zM432 0c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-352c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h352zM504.87 263.84\nc3.93457 -2.62109 7.12891 -8.58691 7.12891 -13.3154c0 -2.08496 -0.756836 -5.29004 -1.68945 -7.1543l-102.55 -211.37h-303.52l-102.55 211.33c-0.932617 1.86426 -1.68945 5.06934 -1.68945 7.1543c0 4.72852 3.19434 10.6943 7.12891 13.3154l28.5703 16\nc7.35938 4.91016 16.8096 2.5498 22.0898 -4.54004c7.86035 -10.6357 24.9736 -19.2676 38.1992 -19.2676c0.922852 0 2.41992 0.0527344 3.34082 0.118164c25.6699 1.73926 44.6699 24.7998 44.6699 50.4893c0 7.39746 6.00293 13.4004 13.4004 13.4004v0h38.7695\nc6.04004 0 11.6104 -3.99023 12.8604 -9.91016c4.42969 -21.0361 25.4717 -38.1094 46.9697 -38.1094s42.54 17.0732 46.9697 38.1094c1.25 5.91016 6.86035 9.91016 12.8604 9.91016h38.7695c7.39746 0 13.4004 -6.00293 13.4004 -13.4004\nc0 -23.5293 15.7002 -45.46 38.8398 -49.75c2.48926 -0.484375 6.56738 -0.878906 9.10352 -0.878906c13.166 0 30.2471 8.56152 38.127 19.1094c5.37988 7.13965 14.8496 9.67969 22.29 4.67969z\" />\n    <glyph glyph-name=\"chess-rook\" unicode=\"&#xf447;\" horiz-adv-x=\"384\" \nd=\"M368 416c8.83203 0 16 -7.16797 16 -16v-176l-64 -32c0 -47.7197 1.54004 -95 13.21 -160h-282.42c11.6699 65 13.21 111.67 13.21 160l-64 32v176c0 8.83203 7.16797 16 16 16h56.0996c8.83203 0 16 -7.16797 16 -16v-48h47.9004v48c0 8.83203 7.16797 16 16 16h80\nc8.83203 0 16 -7.16797 16 -16v-48h48v48c0 8.83203 7.16797 16 16 16h56zM224 128v64c0 17.6641 -14.3359 32 -32 32s-32 -14.3359 -32 -32v-64h64zM368 0c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-352c-8.83203 0 -16 7.16797 -16 16v32\nc0 8.83203 7.16797 16 16 16h352z\" />\n    <glyph glyph-name=\"dumbbell\" unicode=\"&#xf44b;\" horiz-adv-x=\"640\" \nd=\"M104 352c13.2998 0 24 -10.7002 24 -24v-272c0 -13.2998 -10.7002 -24 -24 -24h-48c-13.2998 0 -24 10.7002 -24 24v104h-24c-4.40039 0 -8 3.59961 -8 8v48c0 4.40039 3.59961 8 8 8h24v104c0 13.2998 10.7002 24 24 24h48zM632 224c4.40039 0 8 -3.59961 8 -8v-48\nc0 -4.40039 -3.59961 -8 -8 -8h-24v-104c0 -13.2998 -10.7002 -24 -24 -24h-48c-13.2998 0 -24 10.7002 -24 24v272c0 13.2998 10.7002 24 24 24h48c13.2998 0 24 -10.7002 24 -24v-104h24zM456 416c13.2998 0 24 -10.7002 24 -24v-400c0 -13.2998 -10.7002 -24 -24 -24h-48\nc-13.2998 0 -24 10.7002 -24 24v168h-128v-168c0 -13.2998 -10.7002 -24 -24 -24h-48c-13.2998 0 -24 10.7002 -24 24v400c0 13.2998 10.7002 24 24 24h48c13.2998 0 24 -10.7002 24 -24v-168h128v168c0 13.2998 10.7002 24 24 24h48z\" />\n    <glyph glyph-name=\"football-ball\" unicode=\"&#xf44e;\" horiz-adv-x=\"496\" \nd=\"M481.5 387.7c6.2998 -23.9004 13.7002 -61 14.5 -104.5l-156.6 156.8c43.5996 -0.900391 80.8994 -8.5 104.8 -14.9004c18.2002 -4.89941 32.5 -19.1992 37.2998 -37.3994zM14.5 -3.7002c-6.2998 23.9004 -13.7002 61 -14.5 104.5l156.6 -156.8\nc-43.5996 0.900391 -80.8994 8.5 -104.8 14.9004c-18.2002 4.89941 -32.5 19.1992 -37.2998 37.3994zM4.2002 164.6c22.5996 152.7 138.899 252 271.399 271.4l216.301 -216.6c-22.7002 -152.7 -139 -252 -271.5 -271.4zM321.5 288.2l-28.2998 -28.5l-28.2998 28.2998\nc-3.10059 3.09961 -8.2002 3.09961 -11.3008 0l-11.2998 -11.2998c-3.09961 -3.10059 -3.09961 -8.2002 0 -11.2998l28.2998 -28.3008l-22.5996 -22.5996l-28.2998 28.2998c-3.10059 3.10059 -8.2002 3.10059 -11.2998 0l-11.3008 -11.2998\nc-3.09961 -3.09961 -3.09961 -8.2002 0 -11.2998l28.3008 -28.2998l-22.6006 -22.6006l-28.2998 28.2998c-3.09961 3.10059 -8.2002 3.10059 -11.2998 0l-11.2998 -11.2998c-3.10059 -3.09961 -3.10059 -8.2002 0 -11.2998l28.2998 -28.2002l-28.2998 -28.2998\nc-3.10059 -3.09961 -3.10059 -8.2002 0 -11.2998l11.2998 -11.2998c3.09961 -3.10059 8.2002 -3.10059 11.2998 0l28.2998 28.2998l28.2998 -28.2998c3.10059 -3.10059 8.2002 -3.10059 11.3008 0l11.2998 11.2998c3.09961 3.09961 3.09961 8.2002 0 11.2998\nl-28.2998 28.2998l22.5996 22.6006l28.2998 -28.3008c3.10059 -3.09961 8.2002 -3.09961 11.2998 0l11.3008 11.3008c3.09961 3.09961 3.09961 8.19922 0 11.2998l-28.3008 28.2998l22.6006 22.7002l28.2998 -28.2998c3.09961 -3.10059 8.2002 -3.10059 11.2998 0\nl11.2998 11.2998c3.10059 3.09961 3.10059 8.2002 0 11.2998l-28.2998 28.2998l28.2998 28.2998c3.10059 3.10059 3.10059 8.2002 0 11.3008l-11.2998 11.2998c-3.09961 3.09961 -8.2002 3.09961 -11.2998 0z\" />\n    <glyph glyph-name=\"golf-ball\" unicode=\"&#xf450;\" horiz-adv-x=\"416\" \nd=\"M96 32h224c0 -17.7002 -14.2998 -32 -32 -32h-16c-17.7002 0 -32 -14.2998 -32 -32v-20c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v20c0 17.7002 -14.2998 32 -32 32h-16c-17.7002 0 -32 14.2998 -32 32zM416 240\nc0 -74.2002 -39 -139.2 -97.5 -176h-221c-58.5 36.7998 -97.5 101.8 -97.5 176c0 114.9 93.0996 208 208 208s208 -93.0996 208 -208zM235.9 196.1c18.2998 0 33.0996 14.8008 33.0996 33.1006c0 14.3994 -9.2998 26.2998 -22.0996 30.8994\nc9.59961 -26.7998 -15.6006 -51.2998 -41.9004 -41.8994c4.59961 -12.7998 16.5 -22.1006 30.9004 -22.1006zM285 149.2c0 14.3994 -9.2998 26.2998 -22.0996 30.8994c9.59961 -26.7998 -15.6006 -51.2998 -41.9004 -41.8994\nc4.59961 -12.7998 16.5 -22.1006 30.9004 -22.1006c18.2998 0 33.0996 14.9004 33.0996 33.1006zM349 213.2c0 14.3994 -9.2998 26.2998 -22.0996 30.8994c9.59961 -26.7998 -15.6006 -51.2998 -41.9004 -41.8994c4.59961 -12.7998 16.5 -22.1006 30.9004 -22.1006\nc18.2998 0 33.0996 14.9004 33.0996 33.1006z\" />\n    <glyph glyph-name=\"hockey-puck\" unicode=\"&#xf453;\" \nd=\"M0 288c0 53 114.6 96 256 96s256 -43 256 -96s-114.6 -96 -256 -96s-256 43 -256 96zM0 205.8c113.5 -82.3994 398.6 -82.2998 512 0v-109.8c0 -53 -114.6 -96 -256 -96s-256 43 -256 96v109.8z\" />\n    <glyph glyph-name=\"quidditch\" unicode=\"&#xf458;\" horiz-adv-x=\"640\" \nd=\"M256.5 231.2l86.7002 -109.2s-16.6006 -102.4 -76.6006 -150.1c-59.8994 -47.7002 -266.6 -34.1006 -266.6 -34.1006s3.7998 23.1006 11 55.4004l94.5996 112.2c4 4.69922 -0.899414 11.5996 -6.59961 9.5l-60.4004 -22.1006c14.4004 41.7002 32.7002 80 54.6006 97.5\nc59.8994 47.7998 163.3 40.9004 163.3 40.9004zM494.5 96.2002c44 0 79.7998 -35.7002 79.7998 -79.9004c0 -44.0996 -35.7002 -79.8994 -79.7998 -79.8994s-79.7998 35.7998 -79.7998 79.8994c0 44.1006 35.7998 79.9004 79.7998 79.9004zM636.5 417\nc5.5 -6.90039 4.40039 -17 -2.5 -22.5l-232.5 -177.9l34.0996 -42.8994c5.10059 -6.40039 1.7002 -15.9004 -6.2998 -17.6006l-58.7998 -12.3994l-86.7002 109.2l25.2998 54.5996c3.5 7.40039 13.5 8.59961 18.6006 2.2002l34.0996 -43l232.5 177.899\nc6.90039 5.40039 16.9004 4.30078 22.4004 -2.59961z\" />\n    <glyph glyph-name=\"square-full\" unicode=\"&#xf45c;\" \nd=\"M512 -64h-512v512h512v-512z\" />\n    <glyph glyph-name=\"table-tennis\" unicode=\"&#xf45d;\" \nd=\"M496.2 151.5c-64.1006 43.2002 -149.5 27.9004 -195.601 -34.2002l-211.5 211.5l56 56.1006c83.9004 84.0996 220 84.0996 303.9 0c63 -63.1006 78.7002 -155.601 47.2002 -233.4zM278.3 71.7998c-3.7002 -12.7002 -6.2998 -25.8994 -6.2002 -39.7002\nc0 -19.5 3.90039 -38.0996 11 -55.0996c-25.6992 2.7998 -50.5996 13.5996 -70.2998 33.2998l-35.7002 35.7002l-89.2998 -103.3c-7.5 -8.60059 -20.7002 -9.10059 -28.7002 -1l-53.3994 53.5c-8.10059 8.09961 -7.60059 21.2998 1 28.7998l103 89.4004l-34.5 34.5996\nc-39 39.0996 -44.6006 98.7998 -17.2998 144.1zM416 128c53 0 96 -43 96 -96s-43 -96 -96 -96s-96 43 -96 96s43 96 96 96z\" />\n    <glyph glyph-name=\"volleyball-ball\" unicode=\"&#xf45f;\" \nd=\"M231.39 204.52c-60.8945 -37.4102 -126.348 -123.516 -146.1 -192.199c-20.248 19.1953 -45.7393 55.5283 -56.9004 81.0996c22.8008 94.4004 89.5 174.4 180.301 216.8c11.8887 -27.9648 22.0586 -75.3184 22.6992 -105.7zM194.49 338.92\nc-84 -39.5 -149 -108.4 -182.4 -191.5c-19.7998 109.3 34 212.4 125 262.2c19.0098 -16.9424 44.7246 -48.6162 57.4004 -70.7002zM382.09 173.82c-30.1689 3.6709 -76.2686 18.5352 -102.899 33.1797c-1.9541 71.4844 -43.8428 171.263 -93.5 222.72\nc47.2998 14 84.1992 10.2002 98.8994 8.5c70.2002 -66.8994 106.101 -164.6 97.5 -264.399zM257.39 164.32c49.7002 -26.8008 104 -40.8008 158.601 -40.9004c22.6787 0.140625 58.9219 4.7998 80.8994 10.4004c-6.55762 -27.2012 -25.4639 -67.4766 -42.1992 -89.9004\nc-93 -27.2998 -195.5 -9.5 -277.5 47.7998c18.2803 24.2959 54.21 56.8213 80.1992 72.6006zM159.09 64.6201c53.6006 -37.2998 144 -78.2002 256.9 -62.1006c-38.1611 -32.3467 -109.732 -58.5986 -159.758 -58.5986c-38.5156 0 -96.416 16.3516 -129.242 36.499\nc6.39941 29.7998 16.8994 58.2002 32.0996 84.2002zM339.39 425.22c95.9004 -34.2998 164.601 -125.6 164.601 -233.399c0 -2 -0.299805 -4 -0.299805 -6c-23.9658 -7.83887 -63.8799 -14.2012 -89.0947 -14.2012c-0.166992 0 -0.438477 0.000976562 -0.605469 0.000976562\nc7.89941 92.3994 -19.2998 183.2 -74.6006 253.6z\" />\n    <glyph glyph-name=\"allergies\" unicode=\"&#xf461;\" horiz-adv-x=\"448\" \nd=\"M416 336c17.5996 0 32 -14.4004 32 -32v-176.1c-0.200195 -14 -1.90039 -28.6006 -5.09961 -42.3008l-26.5 -112.699c-5.10059 -21.7002 -24.4004 -37 -46.7002 -37h-197.601c-15.2998 0 -29.7998 7.39941 -38.7998 19.7998l-125.6 172.7\nc-13 17.8994 -9.10059 42.8994 8.7998 55.8994s42.9004 9.10059 55.9004 -8.7998l23.5996 -32.5v241c0 17.5996 14.4004 32 32 32s32 -14.4004 32 -32v-152c0 -4.40039 3.59961 -8 8 -8h16c4.40039 0 8 3.59961 8 8v184c0 17.5996 14.4004 32 32 32s32 -14.4004 32 -32v-184\nc0 -4.40039 3.59961 -8 8 -8h16c4.40039 0 8 3.59961 8 8v152c0 17.5996 14.4004 32 32 32s32 -14.4004 32 -32v-152c0 -4.40039 3.59961 -8 8 -8h16c4.40039 0 8 3.59961 8 8v72c0 17.5996 14.4004 32 32 32zM176 32c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16\ns-16 -7.2002 -16 -16s7.2002 -16 16 -16zM176 128c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM240 0c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM240 96c8.7998 0 16 7.2002 16 16\ns-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM304 64c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM336 0c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM368 128\nc8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16z\" />\n    <glyph glyph-name=\"band-aid\" unicode=\"&#xf462;\" horiz-adv-x=\"640\" \nd=\"M0 288c0 35.2998 28.7002 64 64 64h96v-320h-96c-35.2998 0 -64 28.7002 -64 64v192zM576 352c35.2998 0 64 -28.7002 64 -64v-192c0 -35.2998 -28.7002 -64 -64 -64h-96v320h96zM192 32v320h256v-320h-256zM368 264c-13.2998 0 -24 -10.7002 -24 -24s10.7002 -24 24 -24\ns24 10.7002 24 24s-10.7002 24 -24 24zM368 168c-13.2998 0 -24 -10.7002 -24 -24s10.7002 -24 24 -24s24 10.7002 24 24s-10.7002 24 -24 24zM272 264c-13.2998 0 -24 -10.7002 -24 -24s10.7002 -24 24 -24s24 10.7002 24 24s-10.7002 24 -24 24zM272 168\nc-13.2998 0 -24 -10.7002 -24 -24s10.7002 -24 24 -24s24 10.7002 24 24s-10.7002 24 -24 24z\" />\n    <glyph glyph-name=\"box\" unicode=\"&#xf466;\" \nd=\"M509.5 263.4c0.799805 -2.40039 0.799805 -4.90039 1.2002 -7.40039h-238.7v192h141.4c20.6992 0 39 -13.2002 45.5 -32.7998zM240 448v-192h-238.7c0.400391 2.5 0.400391 5 1.2002 7.40039l50.5996 151.8c6.5 19.5996 24.8008 32.7998 45.5 32.7998h141.4zM0 224h512\nv-240c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v240z\" />\n    <glyph glyph-name=\"boxes\" unicode=\"&#xf468;\" horiz-adv-x=\"576\" \nd=\"M560 160c8.7998 0 16 -7.2002 16 -16v-192c0 -8.7998 -7.2002 -16 -16 -16h-224c-8.7998 0 -16 7.2002 -16 16v192c0 8.7998 7.2002 16 16 16h80v-96l32 21.2998l32 -21.2998v96h80zM176 224c-8.7998 0 -16 7.2002 -16 16v192c0 8.7998 7.2002 16 16 16h80v-96\nl32 21.2998l32 -21.2998v96h80c8.7998 0 16 -7.2002 16 -16v-192c0 -8.7998 -7.2002 -16 -16 -16h-224zM240 160c8.7998 0 16 -7.2002 16 -16v-192c0 -8.7998 -7.2002 -16 -16 -16h-224c-8.7998 0 -16 7.2002 -16 16v192c0 8.7998 7.2002 16 16 16h80v-96l32 21.2998\nl32 -21.2998v96h80z\" />\n    <glyph glyph-name=\"briefcase-medical\" unicode=\"&#xf469;\" \nd=\"M464 320c26.5 0 48 -21.5 48 -48v-288c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v288c0 26.5 21.5 48 48 48h80v48c0 26.5 21.5 48 48 48h160c26.5 0 48 -21.5 48 -48v-48h80zM192 352v-32h128v32h-128zM352 104v48c0 4.40039 -3.59961 8 -8 8h-56v56\nc0 4.40039 -3.59961 8 -8 8h-48c-4.40039 0 -8 -3.59961 -8 -8v-56h-56c-4.40039 0 -8 -3.59961 -8 -8v-48c0 -4.40039 3.59961 -8 8 -8h56v-56c0 -4.40039 3.59961 -8 8 -8h48c4.40039 0 8 3.59961 8 8v56h56c4.40039 0 8 3.59961 8 8z\" />\n    <glyph glyph-name=\"burn\" unicode=\"&#xf46a;\" horiz-adv-x=\"384\" \nd=\"M192 448c111.8 -100.9 192 -220.6 192 -300.5c0 -124.5 -79 -211.5 -192 -211.5s-192 87 -192 211.5c0 79.5996 79.7002 199.2 192 300.5zM192 0c56.5 0 96 39 96 94.7998c0 13.5 -4.59961 61.5 -96 161.2c-91.4004 -99.7002 -96 -147.7 -96 -161.2\nc0 -55.7998 39.5 -94.7998 96 -94.7998z\" />\n    <glyph glyph-name=\"capsules\" unicode=\"&#xf46b;\" horiz-adv-x=\"576\" \nd=\"M555.3 147.9c36.2002 -51.7002 23.7002 -123 -28 -159.2c-20 -14 -42.7998 -20.7002 -65.5 -20.7002c-36.0996 0 -71.5996 17 -93.7998 48.7998l-131.2 187.3c-5.5 7.90039 -9.5 16.4004 -12.7998 25v-149.1c0 -61.9004 -50.0996 -112 -112 -112s-112 50.0996 -112 112\nv224c0 61.9004 50.0996 112 112 112c60 0 108.5 -47.2002 111.4 -106.5c7.7998 21 21.7998 40 41.5 53.7998c20 14 42.8994 20.7002 65.5 20.7002c36 0 71.5 -17 93.7998 -48.7998zM160 192v112c0 26.5 -21.5 48 -48 48s-48 -21.5 -48 -48v-112h96zM354.8 147.1\nl82.5 57.7002l-65.5996 93.7002c-9.40039 13.5 -24.7998 21.5 -41.2998 21.5c-10.3008 0 -20.3008 -3.09961 -28.8008 -9.09961c-11 -7.7002 -18.3994 -19.3008 -20.6992 -32.5c-2.40039 -13.2002 0.599609 -26.6006 8.2998 -37.6006z\" />\n    <glyph glyph-name=\"clipboard-check\" unicode=\"&#xf46c;\" horiz-adv-x=\"384\" \nd=\"M336 384c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h80c0 35.2998 28.7002 64 64 64s64 -28.7002 64 -64h80zM192 408c-13.2998 0 -24 -10.7002 -24 -24s10.7002 -24 24 -24s24 10.7002 24 24\ns-10.7002 24 -24 24zM313.2 176.2c4.7002 4.7002 4.7998 12.2002 0.0996094 17l-28.2002 28.3994c-4.69922 4.7002 -12.2998 4.80078 -17 0.100586l-106 -105.2l-46 46.4004c-4.69922 4.69922 -12.2998 4.7998 -17 0.0996094l-28.3994 -28.2002\nc-4.7002 -4.7002 -4.7998 -12.2998 -0.100586 -17l82.6006 -83.2998c4.7002 -4.7002 12.2998 -4.7998 17 -0.0996094z\" />\n    <glyph glyph-name=\"clipboard-list\" unicode=\"&#xf46d;\" horiz-adv-x=\"384\" \nd=\"M336 384c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h80c0 35.2998 28.7002 64 64 64s64 -28.7002 64 -64h80zM96 24c13.2998 0 24 10.7002 24 24s-10.7002 24 -24 24s-24 -10.7002 -24 -24\ns10.7002 -24 24 -24zM96 120c13.2998 0 24 10.7002 24 24s-10.7002 24 -24 24s-24 -10.7002 -24 -24s10.7002 -24 24 -24zM96 216c13.2998 0 24 10.7002 24 24s-10.7002 24 -24 24s-24 -10.7002 -24 -24s10.7002 -24 24 -24zM192 408c-13.2998 0 -24 -10.7002 -24 -24\ns10.7002 -24 24 -24s24 10.7002 24 24s-10.7002 24 -24 24zM320 40v16c0 4.40039 -3.59961 8 -8 8h-144c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h144c4.40039 0 8 3.59961 8 8zM320 136v16c0 4.40039 -3.59961 8 -8 8h-144\nc-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h144c4.40039 0 8 3.59961 8 8zM320 232v16c0 4.40039 -3.59961 8 -8 8h-144c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h144c4.40039 0 8 3.59961 8 8z\" />\n    <glyph glyph-name=\"diagnoses\" unicode=\"&#xf470;\" horiz-adv-x=\"640\" \nd=\"M496 192c-8.7998 0 -16 7.2002 -16 16s7.2002 16 16 16s16 -7.2002 16 -16s-7.2002 -16 -16 -16zM320 272c-48.5 0 -88 39.5 -88 88s39.5 88 88 88s88 -39.5 88 -88s-39.5 -88 -88 -88zM59.7998 84l-17.7002 26.7002c-8.7998 13.2998 -7.59961 34.5996 10 45.0996\nc7.40039 4.40039 17.5 10 28.7002 16c31.6006 -27.2998 79 -4.2002 79.2002 36c47.0996 17.7002 103 32.2002 160 32.2002c45.0996 0 89.2998 -9.2002 129.2 -21.7998c-11.7002 -52.9004 59.5996 -81.2002 87.7002 -35.1006\nc21.3994 -10.3994 39.1992 -20.2998 51.0996 -27.3994c17.5996 -10.5 18.7998 -31.9004 10 -45.1006l-17.7998 -26.6992c-10.2002 -15.1006 -29.2998 -17.8008 -42.9004 -9.80078c-16.2002 9.60059 -56.2002 31.8008 -105.3 48.6006v-90.7002h-224v90.7998\nc-49.0996 -16.8994 -89.0996 -39 -105.3 -48.5996c-13.6006 -8 -32.7002 -5.5 -42.9004 9.7998zM368 104c-13.2998 0 -24 -10.7002 -24 -24s10.7002 -24 24 -24s24 10.7002 24 24s-10.7002 24 -24 24zM272 200c-13.2998 0 -24 -10.7002 -24 -24s10.7002 -24 24 -24\ns24 10.7002 24 24s-10.7002 24 -24 24zM112 192c-8.7998 0 -16 7.2002 -16 16s7.2002 16 16 16s16 -7.2002 16 -16s-7.2002 -16 -16 -16zM624 0c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-608c-8.7998 0 -16 7.2002 -16 16v32\nc0 8.7998 7.2002 16 16 16h608z\" />\n    <glyph glyph-name=\"dna\" unicode=\"&#xf471;\" horiz-adv-x=\"448\" \nd=\"M0.0996094 -46.0996c5.2002 42.8994 31.4004 153.899 159.9 238.1c-128.6 84.2002 -154.7 195.2 -159.9 238.1c-1.09961 9.5 6.40039 17.8008 16 17.8008l32.3008 0.0996094c8.09961 0.0996094 14.8994 -5.90039 16 -13.9004\nc0.699219 -5 1.7998 -11.0996 3.39941 -18.0996h312.4c1.59961 7 2.7002 13.2002 3.39941 18.0996c1.10059 8 7.90039 13.9004 16 13.9004l32.4004 -0.0996094c9.59961 0 17 -8.30078 15.9004 -17.8008c-5.80078 -47.8994 -37.4004 -181.199 -209.5 -266.699\nc-31.7002 -15.8008 -57.4004 -33.3008 -78.7002 -51.4004h127.6c-5.59961 4.7998 -10.7998 9.59961 -17 14.2002c21.4004 11.2002 40.9004 23 58.5 35.3994c93.2998 -78.6992 114.3 -169.8 118.9 -207.699c1.2002 -9.5 -6.2998 -17.8008 -15.9004 -17.8008\nl-32.2998 -0.0996094c-8.09961 -0.0996094 -14.9004 5.90039 -16 13.9004c-0.599609 4.89941 -1.90039 11.1992 -3.5 18.0996h-312.3c-1.60059 -7 -2.7002 -13.2002 -3.40039 -18.0996c-1.09961 -8 -7.89941 -13.9004 -16 -13.9004l-32.2998 0.0996094\nc-9.59961 0 -17 8.30078 -15.9004 17.8008zM224 228.4c25.0996 13.5996 46.4004 28.3994 64.2002 43.5996h-128.5c17.8994 -15.2002 39.2002 -29.9004 64.2998 -43.5996zM355.1 352h-262.1c5.7002 -10.4004 12.7002 -21.0996 21 -32h220.1\nc8.2002 10.9004 15.2002 21.5996 21 32zM92.9004 32h261.6c-5.7998 10.4004 -12.9004 21.0996 -21.2002 32h-219.399c-8.2002 -10.9004 -15.2002 -21.5996 -21 -32z\" />\n    <glyph glyph-name=\"dolly\" unicode=\"&#xf472;\" horiz-adv-x=\"576\" \nd=\"M294.2 170.3l-53 159.4c-2.7998 8.2998 1.7002 17.3994 10.0996 20.2002l61.6006 20.5l33.0996 -99.4004l60.7002 20.0996l-33.1006 99.4004l61.1006 20.4004c8.2998 2.7998 17.3994 -1.7002 20.2002 -10.1006l60.3994 -181.2\nc2.7998 -8.2998 -1.7002 -17.3994 -10.0996 -20.1992l-161.5 -53.8008c-14.7998 11.3008 -31.5 19.7002 -49.5 24.7002zM575.2 121.6c2.7998 -8.39941 -1.7998 -17.3994 -10.1006 -20.1992l-213.3 -71.2002c-1.09961 -57.7998 -53.2002 -103.3 -113.399 -92.6006\nc-39.4004 6.90039 -71.2002 39.8008 -77.3008 79.2002c-5.69922 36.9004 9.90039 70.1006 36 90.5l-92.1992 276.7h-88.9004c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h112c13.7998 0 26 -8.7998 30.4004 -21.9004l99.3994 -298.199\nc29.9004 -0.600586 56.2998 -15 73.5 -37l213.5 71.1992c8.2998 2.80078 17.4004 -1.69922 20.2002 -10.0996zM256 -16c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48z\" />\n    <glyph glyph-name=\"dolly-flatbed\" unicode=\"&#xf474;\" horiz-adv-x=\"640\" \nd=\"M208 128c-8.7998 0 -16 7.2002 -16 16v256c0 8.7998 7.2002 16 16 16h144v-128l48 32l48 -32v128h144c8.7998 0 16 -7.2002 16 -16v-256c0 -8.7998 -7.2002 -16 -16 -16h-384zM624 64c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-82.7998\nc1.7002 -5 2.89941 -10.4004 2.89941 -16c0 -26.5 -21.5 -48 -48 -48s-48 21.5 -48 48c0 5.59961 1.10059 11 2.90039 16h-197.9c1.7002 -5 2.90039 -10.4004 2.90039 -16c0 -26.5 -21.5 -48 -48 -48s-48 21.5 -48 48c0 5.59961 1.09961 11 2.90039 16h-82.9004\nc-8.7998 0 -16 7.2002 -16 16v368h-48c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h96c8.7998 0 16 -7.2002 16 -16v-368h496z\" />\n    <glyph glyph-name=\"file-medical\" unicode=\"&#xf477;\" horiz-adv-x=\"384\" \nd=\"M377 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7zM224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136z\nM288 152c0 4.40039 -3.59961 8 -8 8h-56v56c0 4.40039 -3.59961 8 -8 8h-48c-4.40039 0 -8 -3.59961 -8 -8v-56h-56c-4.40039 0 -8 -3.59961 -8 -8v-48c0 -4.40039 3.59961 -8 8 -8h56v-56c0 -4.40039 3.59961 -8 8 -8h48c4.40039 0 8 3.59961 8 8v56h56\nc4.40039 0 8 3.59961 8 8v48z\" />\n    <glyph glyph-name=\"file-medical-alt\" unicode=\"&#xf478;\" horiz-adv-x=\"448\" \nd=\"M288 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v168h70.0996l34.8008 -69.5c2.89941 -5.90039 11.3994 -5.90039 14.2998 0l56.7998 113.7l22.0996 -44.2002h89.9004c8.7998 0 16 7.2002 16 16\ns-7.2002 16 -16 16h-70.2002l-34.7002 69.5c-2.89941 5.90039 -11.3994 5.90039 -14.2998 0l-56.7998 -113.7l-19.9004 39.7998c-1.39941 2.7002 -4.19922 4.40039 -7.19922 4.40039h-140.9c-4.40039 0 -8 3.59961 -8 8v16c0 4.40039 3.59961 8 8 8h56v232\nc0 13.2998 10.7002 24 24 24h200v-136zM441 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7z\" />\n    <glyph glyph-name=\"first-aid\" unicode=\"&#xf479;\" horiz-adv-x=\"576\" \nd=\"M0 368c0 26.5 21.5 48 48 48h48v-448h-48c-26.5 0 -48 21.5 -48 48v352zM128 -32v448h320v-448h-320zM192 216v-48c0 -4.40039 3.59961 -8 8 -8h56v-56c0 -4.40039 3.59961 -8 8 -8h48c4.40039 0 8 3.59961 8 8v56h56c4.40039 0 8 3.59961 8 8v48\nc0 4.40039 -3.59961 8 -8 8h-56v56c0 4.40039 -3.59961 8 -8 8h-48c-4.40039 0 -8 -3.59961 -8 -8v-56h-56c-4.40039 0 -8 -3.59961 -8 -8zM528 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-48v448h48z\" />\n    <glyph glyph-name=\"hospital-alt\" unicode=\"&#xf47d;\" horiz-adv-x=\"576\" \nd=\"M544 352c17.7002 0 32 -14.2998 32 -32v-368c0 -8.7998 -7.2002 -16 -16 -16h-544c-8.7998 0 -16 7.2002 -16 16v368c0 17.7002 14.2998 32 32 32h128v64c0 17.7002 14.2998 32 32 32h192c17.7002 0 32 -14.2998 32 -32v-64h128zM160 12v40c0 6.59961 -5.40039 12 -12 12\nh-40c-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12zM160 140v40c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12zM320 12v40\nc0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12zM320 140v40c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h40\nc6.59961 0 12 5.40039 12 12zM336 310v20c0 3.2998 -2.7002 6 -6 6h-26v26c0 3.2998 -2.7002 6 -6 6h-20c-3.2998 0 -6 -2.7002 -6 -6v-26h-26c-3.2998 0 -6 -2.7002 -6 -6v-20c0 -3.2998 2.7002 -6 6 -6h26v-26c0 -3.2998 2.7002 -6 6 -6h20c3.2998 0 6 2.7002 6 6v26h26\nc3.2998 0 6 2.7002 6 6zM480 12v40c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12zM480 140v40c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-40\nc0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12z\" />\n    <glyph glyph-name=\"hospital-symbol\" unicode=\"&#xf47e;\" \nd=\"M256 448c141.4 0 256 -114.6 256 -256s-114.6 -256 -256 -256s-256 114.6 -256 256s114.6 256 256 256zM368 72v240c0 4.40039 -3.59961 8 -8 8h-48c-4.40039 0 -8 -3.59961 -8 -8v-88h-96v88c0 4.40039 -3.59961 8 -8 8h-48c-4.40039 0 -8 -3.59961 -8 -8v-240\nc0 -4.40039 3.59961 -8 8 -8h48c4.40039 0 8 3.59961 8 8v88h96v-88c0 -4.40039 3.59961 -8 8 -8h48c4.40039 0 8 3.59961 8 8z\" />\n    <glyph glyph-name=\"id-card-alt\" unicode=\"&#xf47f;\" horiz-adv-x=\"576\" \nd=\"M528 384c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-480c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h144v-96h192v96h144zM288 224c-35.2998 0 -64 -28.7002 -64 -64s28.7002 -64 64 -64s64 28.7002 64 64s-28.7002 64 -64 64zM381.3 0\nc10.4004 0 18.7998 10 15.6006 19.7998c-8.40039 25.7002 -32.5 44.2002 -60.9004 44.2002h-8.2002c-12.2002 -5.09961 -25.7002 -8 -39.7998 -8s-27.5 2.90039 -39.7998 8h-8.2002c-28.5 0 -52.5996 -18.5996 -60.9004 -44.2002\nc-3.19922 -9.7998 5.2002 -19.7998 15.6006 -19.7998h186.6zM352 416v-96h-128v96c0 17.7002 14.2998 32 32 32h64c17.7002 0 32 -14.2998 32 -32z\" />\n    <glyph glyph-name=\"notes-medical\" unicode=\"&#xf481;\" horiz-adv-x=\"384\" \nd=\"M336 384c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h80c0 35.2998 28.7002 64 64 64s64 -28.7002 64 -64h80zM192 408c-13.2998 0 -24 -10.7002 -24 -24s10.7002 -24 24 -24s24 10.7002 24 24\ns-10.7002 24 -24 24zM288 104v48c0 4.40039 -3.59961 8 -8 8h-56v56c0 4.40039 -3.59961 8 -8 8h-48c-4.40039 0 -8 -3.59961 -8 -8v-56h-56c-4.40039 0 -8 -3.59961 -8 -8v-48c0 -4.40039 3.59961 -8 8 -8h56v-56c0 -4.40039 3.59961 -8 8 -8h48c4.40039 0 8 3.59961 8 8\nv56h56c4.40039 0 8 3.59961 8 8zM288 296v16c0 4.40039 -3.59961 8 -8 8h-176c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h176c4.40039 0 8 3.59961 8 8z\" />\n    <glyph glyph-name=\"pallet\" unicode=\"&#xf482;\" horiz-adv-x=\"640\" \nd=\"M144 192c-8.7998 0 -16 7.2002 -16 16v224c0 8.7998 7.2002 16 16 16h112v-128l64 32l64 -32v128h112c8.7998 0 16 -7.2002 16 -16v-224c0 -8.7998 -7.2002 -16 -16 -16h-352zM624 64h-48v-64h48c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-608\nc-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h48v64h-48c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h608c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16zM288 0v64h-160v-64h160zM512 0v64h-160v-64h160z\" />\n    <glyph glyph-name=\"pills\" unicode=\"&#xf484;\" horiz-adv-x=\"576\" \nd=\"M112 416c61.9004 0 112 -50.0996 112 -112v-224c0 -61.9004 -50.0996 -112 -112 -112s-112 50.0996 -112 112v224c0 61.9004 50.0996 112 112 112zM160 192v112c0 26.5 -21.5 48 -48 48s-48 -21.5 -48 -48v-112h96zM299.7 221.7l210.8 -210.8\nc3.5 -3.5 3.2002 -9.40039 -0.799805 -12.3008c-62.5 -45.2998 -150.101 -40.3994 -206.4 15.9004s-61.2002 143.9 -15.8994 206.4c2.89941 3.89941 8.7998 4.2998 12.2998 0.799805zM529.5 240.7c56.4004 -56.2998 61.2002 -143.8 15.9004 -206.4\nc-2.90039 -3.89941 -8.80078 -4.2998 -12.3008 -0.799805l-210.8 210.8c-3.5 3.5 -3.2002 9.40039 0.799805 12.2998c62.5 45.3008 150.101 40.4004 206.4 -15.8994z\" />\n    <glyph glyph-name=\"prescription-bottle\" unicode=\"&#xf485;\" horiz-adv-x=\"384\" \nd=\"M32 256v64h320v-352c0 -17.5996 -14.4004 -32 -32 -32h-256c-17.5996 0 -32 14.4004 -32 32v64h120c4.40039 0 8 3.59961 8 8v16c0 4.40039 -3.59961 8 -8 8h-120v64h120c4.40039 0 8 3.59961 8 8v16c0 4.40039 -3.59961 8 -8 8h-120v64h120c4.40039 0 8 3.59961 8 8v16\nc0 4.40039 -3.59961 8 -8 8h-120zM360 448c13.2002 0 24 -10.7998 24 -24v-48c0 -13.2002 -10.7998 -24 -24 -24h-336c-13.2002 0 -24 10.7998 -24 24v48c0 13.2002 10.7998 24 24 24h336z\" />\n    <glyph glyph-name=\"prescription-bottle-alt\" unicode=\"&#xf486;\" horiz-adv-x=\"384\" \nd=\"M360 448c13.2002 0 24 -10.7998 24 -24v-48c0 -13.2002 -10.7998 -24 -24 -24h-336c-13.2002 0 -24 10.7998 -24 24v48c0 13.2002 10.7998 24 24 24h336zM32 -32v352h320v-352c0 -17.5996 -14.4004 -32 -32 -32h-256c-17.5996 0 -32 14.4004 -32 32zM96 152v-48\nc0 -4.40039 3.59961 -8 8 -8h56v-56c0 -4.40039 3.59961 -8 8 -8h48c4.40039 0 8 3.59961 8 8v56h56c4.40039 0 8 3.59961 8 8v48c0 4.40039 -3.59961 8 -8 8h-56v56c0 4.40039 -3.59961 8 -8 8h-48c-4.40039 0 -8 -3.59961 -8 -8v-56h-56c-4.40039 0 -8 -3.59961 -8 -8z\n\" />\n    <glyph glyph-name=\"procedures\" unicode=\"&#xf487;\" horiz-adv-x=\"640\" \nd=\"M528 224c61.9004 0 112 -50.0996 112 -112v-160c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v48h-512v-48c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v352c0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-240h192\nv144c0 8.7998 7.2002 16 16 16h256zM136 352c-4.40039 0 -8 3.59961 -8 8v16c0 4.40039 3.59961 8 8 8h140.9c3.09961 0 5.7998 -1.7002 7.19922 -4.40039l19.9004 -39.7998l49.7002 99.4004c5.89941 11.7998 22.7002 11.7998 28.5996 0l27.6006 -55.2002h102.1\nc8.7998 0 16 -7.2002 16 -16s-7.2002 -16 -16 -16h-121.9l-22.0996 44.2002l-49.7002 -99.4004c-5.89941 -11.7998 -22.7002 -11.7998 -28.5996 0l-27.6006 55.2002h-126.1zM160 96c-35.2998 0 -64 28.7002 -64 64s28.7002 64 64 64s64 -28.7002 64 -64\ns-28.7002 -64 -64 -64z\" />\n    <glyph glyph-name=\"shipping-fast\" unicode=\"&#xf48b;\" horiz-adv-x=\"640\" \nd=\"M624 96c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-48c0 -53 -43 -96 -96 -96s-96 43 -96 96h-128c0 -53 -43 -96 -96 -96s-96 43 -96 96v128h152c4.40039 0 8 3.59961 8 8v16c0 4.40039 -3.59961 8 -8 8h-208c-4.40039 0 -8 3.59961 -8 8v16\nc0 4.40039 3.59961 8 8 8h240c4.40039 0 8 3.59961 8 8v16c0 4.40039 -3.59961 8 -8 8h-208c-4.40039 0 -8 3.59961 -8 8v16c0 4.40039 3.59961 8 8 8h240c4.40039 0 8 3.59961 8 8v16c0 4.40039 -3.59961 8 -8 8h-272c-4.40039 0 -8 3.59961 -8 8v16\nc0 4.40039 3.59961 8 8 8h56v48c0 26.5 21.5 48 48 48h256c26.5 0 48 -21.5 48 -48v-48h44.0996c12.7002 0 24.9004 -5.09961 33.9004 -14.0996l99.9004 -99.9004c9 -9 14.0996 -21.2002 14.0996 -33.9004v-108.1h16zM160 -16c26.5 0 48 21.5 48 48s-21.5 48 -48 48\ns-48 -21.5 -48 -48s21.5 -48 48 -48zM480 -16c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48zM560 192v12.0996l-99.9004 99.9004h-44.0996v-112h144z\" />\n    <glyph glyph-name=\"smoking\" unicode=\"&#xf48d;\" horiz-adv-x=\"640\" \nd=\"M632 96c4.40039 0 8 -3.59961 8 -8v-144c0 -4.40039 -3.59961 -8 -8 -8h-48c-4.40039 0 -8 3.59961 -8 8v144c0 4.40039 3.59961 8 8 8h48zM553.3 360.9c54.2998 -36.4004 86.7002 -97.1006 86.7002 -162.601v-30.2998c0 -4.40039 -3.59961 -8 -8 -8h-48\nc-4.40039 0 -8 3.59961 -8 8v30.2998c0 50.2002 -25.2002 96.7002 -67.4004 124c-18.3994 12 -28.5996 33.4004 -28.5996 55.4004v62.2998c0 4.40039 3.59961 8 8 8h48c4.40039 0 8 -3.59961 8 -8v-62.2998c0 -6.7998 3.59961 -13 9.2998 -16.7998zM432 96\nc8.7998 0 16 -7.2002 16 -16v-128c0 -8.7998 -7.2002 -16 -16 -16h-384c-26.5 0 -48 21.5 -48 48v64c0 26.5 21.5 48 48 48h384zM400 -16v64h-176v-64h176zM487.7 306.4c35.2998 -24.7002 56.2998 -64.8008 56.2998 -108.101v-30.2998c0 -4.40039 -3.59961 -8 -8 -8h-48\nc-4.40039 0 -8 3.59961 -8 8v30.2998c0 27.4004 -13.2998 52.9004 -35.7002 68.6006c-35.7002 25.0996 -60.2998 63 -60.2998 106.699v66.4004c0 4.40039 3.59961 8 8 8h48c4.40039 0 8 -3.59961 8 -8v-62.2998c0 -29 15.7998 -54.7002 39.7002 -71.2998zM536 96\nc4.40039 0 8 -3.59961 8 -8v-144c0 -4.40039 -3.59961 -8 -8 -8h-48c-4.40039 0 -8 3.59961 -8 8v144c0 4.40039 3.59961 8 8 8h48z\" />\n    <glyph glyph-name=\"syringe\" unicode=\"&#xf48e;\" \nd=\"M201.5 273.2l64.9004 65l135.699 -135.7l-181.899 -181.9c-17.5 -17.5996 -41.5 -25.5996 -65.4004 -23l-63.5996 7.10059l-66.2998 -66.2998c-3.10059 -3.10059 -8.2002 -3.10059 -11.3008 0l-11.2998 11.2998c-3.09961 3.09961 -3.09961 8.2002 0 11.2998\nl66.4004 66.4004l-7.10059 63.5996c-2.59961 24.2998 5.7002 48.0996 23 65.4004l26.4004 26.3994l55.7998 -55.8994c3.10059 -3.10059 8.2002 -3.10059 11.2998 0l11.3008 11.2998c3.09961 3.09961 3.09961 8.2002 0 11.2998l-55.8008 55.7998l45.3008 45.2998\nl55.6992 -55.7998c3.10059 -3.09961 8.2002 -3.09961 11.3008 0l11.2998 11.2998c3.09961 3.10059 3.09961 8.2002 0 11.3008zM509.7 366.5c3.09961 -3.2002 3.09961 -8.2002 0 -11.4004l-11.2998 -11.2998c-3.10059 -3.09961 -8.2002 -3.09961 -11.3008 0l-28.2998 28.2998\nl-45.2998 -45.2998l73.5 -73.5c3.09961 -3.09961 3.09961 -8.2002 0 -11.2998l-33.9004 -34c-3.09961 -3.09961 -8.19922 -3.09961 -11.2998 0l-17 17l-135.7 135.9l-17 17c-3.09961 3.09961 -3.09961 8.19922 0 11.2998l33.9004 33.8994\nc3.09961 3.10059 8.2002 3.10059 11.2998 0l17 -17l56.6006 -56.5996l45.2998 45.2998l-28.2998 28.2998c-3.10059 3.10059 -3.10059 8.2002 0 11.3008l11.2998 11.2998c3.09961 3.09961 8.2002 3.09961 11.2998 0z\" />\n    <glyph glyph-name=\"tablets\" unicode=\"&#xf490;\" horiz-adv-x=\"640\" \nd=\"M160 256c81.0996 0 147.5 -58.5 160 -134.7c0.799805 -4.7998 -3.2998 -9.2998 -8.2998 -9.2998h-303.3c-5 0 -9.10059 4.5 -8.30078 9.2998c12.4004 76.2002 78.8008 134.7 159.9 134.7zM311.6 80c5 0 9.10059 -4.5 8.30078 -9.2998\nc-12.4004 -76.2002 -78.8008 -134.7 -159.9 -134.7s-147.5 58.5 -159.9 134.7c-0.799805 4.7998 3.30078 9.2998 8.30078 9.2998h303.199zM593.4 401.4c56.5 -56.5 61.3994 -144.2 15.8994 -206.9c-2.7998 -4 -8.7998 -4.2998 -12.2998 -0.799805l-211.3 211.399\nc-3.5 3.40039 -3.2002 9.40039 0.799805 12.3008c62.7002 45.3994 150.4 40.5 206.9 -16zM363 382.3l211.3 -211.3c3.5 -3.40039 3.2002 -9.40039 -0.799805 -12.2998c-62.7002 -45.5 -150.4 -40.6006 -206.9 15.8994c-56.3994 56.5 -61.2998 144.2 -15.8994 206.9\nc2.7998 4 8.7998 4.2998 12.2998 0.799805z\" />\n    <glyph glyph-name=\"thermometer\" unicode=\"&#xf491;\" \nd=\"M476.8 427.6c49.4004 -40.6992 42.1006 -107.3 7.2002 -142.199l-254.2 -253.301h-99.8994l-89 -89c-9.30078 -9.39941 -24.5 -9.39941 -33.9004 0c-9.40039 9.30078 -9.40039 24.5 0 33.9004l89 89v100.9l45.2998 45.6992l50.1006 -50.1992\nc3.09961 -3.10059 8.19922 -3.10059 11.2998 0l11.2998 11.2998c3.09961 3.09961 3.09961 8.2002 0 11.2998l-50.0996 50.2002l45.0996 45.3994l50.2998 -50.1992c3.10059 -3.10059 8.2002 -3.10059 11.2998 0l11.3008 11.2998c3.09961 3.09961 3.09961 8.2002 0 11.2998\nl-50.3008 50.4004l45.1006 45.3994l50.3994 -50.5c3.10059 -3.09961 8.2002 -3.09961 11.3008 0l11.2998 11.2998c3.09961 3.10059 3.09961 8.2002 0 11.3008l-50.5 50.5l45.7002 46c36.3994 36.5 94.3994 40.8994 131.899 10.1992z\" />\n    <glyph glyph-name=\"vial\" unicode=\"&#xf492;\" horiz-adv-x=\"480\" \nd=\"M477.7 261.9c3.09961 -3.10059 3.09961 -8.2002 0 -11.2002l-34 -33.9004c-3.10059 -3.09961 -8.2002 -3.09961 -11.2998 0l-11.2002 11.1006l-246.3 -245.7c-20.1006 -20.1006 -46.5 -30.1006 -72.9004 -30.1006c-28.9004 -0.0996094 -57.7998 11.9004 -78.4004 35.9004\nc-35.6992 41.5 -29.3994 104.8 9.40039 143.5l242.4 241.9l-11.2002 11.0996c-3.10059 3.09961 -3.10059 8.2002 0 11.2998l34 33.9004c3.09961 3.09961 8.2002 3.09961 11.2998 0zM318 192l69.5 69.4004l-78.5 78.2998l-148 -147.7h157z\" />\n    <glyph glyph-name=\"vials\" unicode=\"&#xf493;\" horiz-adv-x=\"640\" \nd=\"M72 384c-4.40039 0 -8 3.59961 -8 8v48c0 4.40039 3.59961 8 8 8h208c4.40039 0 8 -3.59961 8 -8v-48c0 -4.40039 -3.59961 -8 -8 -8h-24v-240c0 -44.0996 -35.9004 -80 -80 -80s-80 35.9004 -80 80v240h-24zM144 384v-96h64v96h-64zM624 0c8.7998 0 16 -7.2002 16 -16\nv-32c0 -8.7998 -7.2002 -16 -16 -16h-608c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h608zM360 384c-4.40039 0 -8 3.59961 -8 8v48c0 4.40039 3.59961 8 8 8h208c4.40039 0 8 -3.59961 8 -8v-48c0 -4.40039 -3.59961 -8 -8 -8h-24v-240\nc0 -44.0996 -35.9004 -80 -80 -80s-80 35.9004 -80 80v240h-24zM432 384v-96h64v96h-64z\" />\n    <glyph glyph-name=\"warehouse\" unicode=\"&#xf494;\" horiz-adv-x=\"640\" \nd=\"M504 96c4.40039 0 8 -3.59961 8 -8v-48c0 -4.40039 -3.59961 -8 -8 -8h-367.7c-4.39941 0 -8 3.59961 -8 8l0.100586 48c0 4.40039 3.59961 8 8 8h367.6zM504 0c4.40039 0 8 -3.59961 8 -8v-48c0 -4.40039 -3.59961 -8 -8 -8h-368c-4.40039 0 -8 3.59961 -8 8\nl0.0996094 48c0 4.40039 3.60059 8 8 8h367.9zM504 192c4.40039 0 8 -3.59961 8 -8v-48c0 -4.40039 -3.59961 -8 -8 -8h-367.5c-4.40039 0 -8 3.59961 -8 8l0.0996094 48c0 4.40039 3.60059 8 8 8h367.4zM610.5 331c17.7998 -7.5 29.5 -24.9004 29.5 -44.2998v-342.7\nc0 -4.40039 -3.59961 -8 -8 -8h-80c-4.40039 0 -8 3.59961 -8 8v248c0 17.5996 -14.5996 32 -32.5996 32h-382.801c-18 0 -32.5996 -14.4004 -32.5996 -32v-248c0 -4.40039 -3.59961 -8 -8 -8h-80c-4.40039 0 -8 3.59961 -8 8v342.7c0 19.3994 11.7002 36.7998 29.5 44.2998\nl272 113.3c4.89062 2.0293 13.1553 3.6748 18.4502 3.6748c5.29395 0 13.5596 -1.64551 18.4502 -3.6748z\" />\n    <glyph glyph-name=\"weight\" unicode=\"&#xf496;\" \nd=\"M448 384c35.29 0 64 -28.71 64 -64v-320c0 -35.29 -28.71 -64 -64 -64h-384c-35.29 0 -64 28.71 -64 64v320c0 35.29 28.71 64 64 64h25.9805c-16.4209 -28.2803 -25.9805 -61.0098 -25.9805 -96c0 -105.87 86.1299 -192 192 -192s192 86.1299 192 192\nc0 34.9902 -9.55957 67.7197 -25.9805 96h25.9805zM256 128c-88.3701 0 -160 71.6299 -160 160s71.6299 160 160 160s160 -71.6299 160 -160s-71.6299 -160 -160 -160zM255.7 279.94c-21.9404 -0.170898 -39.7002 -17.96 -39.7002 -39.9404c0 -22.0898 17.9102 -40 40 -40\ns40 17.9102 40 40c0 10.5498 -4.26953 20 -10.9502 27.1602l33.6699 78.5498c3.4707 8.11035 -0.290039 17.5205 -8.41016 21c-8.08984 3.50977 -17.5293 -0.240234 -21.0293 -8.41016z\" />\n    <glyph glyph-name=\"x-ray\" unicode=\"&#xf497;\" horiz-adv-x=\"640\" \nd=\"M240 64c8.7998 0 16 -7.2002 16 -16s-7.2002 -16 -16 -16s-16 7.2002 -16 16s7.2002 16 16 16zM400 32c-8.7998 0 -16 7.2002 -16 16s7.2002 16 16 16s16 -7.2002 16 -16s-7.2002 -16 -16 -16zM624 448c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16\nh-608c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h608zM624 0c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-608c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h48v352h512v-352h48zM480 200v16c0 4.40039 -3.59961 8 -8 8\nh-136v32h104c4.40039 0 8 3.59961 8 8v16c0 4.40039 -3.59961 8 -8 8h-104v24c0 4.40039 -3.59961 8 -8 8h-16c-4.40039 0 -8 -3.59961 -8 -8v-24h-104c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h104v-32h-136c-4.40039 0 -8 -3.59961 -8 -8v-16\nc0 -4.40039 3.59961 -8 8 -8h136v-32h-104c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h104v-32h-64c-26.5 0 -48 -21.5 -48 -48s21.5 -48 48 -48s48 21.5 48 48v16h64v-16c0 -26.5 21.5 -48 48 -48s48 21.5 48 48s-21.5 48 -48 48h-64v32h104\nc4.40039 0 8 3.59961 8 8v16c0 4.40039 -3.59961 8 -8 8h-104v32h136c4.40039 0 8 3.59961 8 8z\" />\n    <glyph glyph-name=\"box-open\" unicode=\"&#xf49e;\" horiz-adv-x=\"640\" \nd=\"M425.7 192c4.5 0 9 0.599609 13.2998 1.90039l137 39.0996v-178c0 -14.5996 -10 -27.4004 -24.2002 -31l-216.399 -54.0996c-10.1006 -2.5 -20.8008 -2.5 -31 0l-216.2 54.0996c-14.2002 3.5 -24.2002 16.2998 -24.2002 31v178l137 -39.2002\nc4.2998 -1.2998 8.7998 -1.89941 13.2998 -1.89941c16.9004 0 32.7998 9 41.5 23.5l64.2002 106.6l64.2998 -106.6c8.60059 -14.4004 24.5 -23.4004 41.4004 -23.4004zM638.3 304.2c4.5 -9.2002 -0.299805 -20.2002 -10.2002 -23.1006l-197.899 -56.5\nc-7.10059 -2 -14.7002 1 -18.5 7.30078l-91.7002 152.1l250.1 31.9004c6.90039 0.899414 13.6006 -2.7002 16.7002 -8.90039zM53.2002 407c3.09961 6.2002 9.7002 9.7002 16.5996 8.90039l250.2 -31.9004l-91.7998 -152c-3.7998 -6.2998 -11.4004 -9.2998 -18.5 -7.2998\nl-197.9 56.5c-9.7998 2.7998 -14.7002 13.7998 -10.0996 23z\" />\n    <glyph glyph-name=\"comment-dots\" unicode=\"&#xf4ad;\" \nd=\"M256 416c141.4 0 256 -93.0996 256 -208s-114.6 -208 -256 -208c-38.4004 0 -74.7002 7.09961 -107.4 19.4004c-24.5996 -19.6006 -74.2998 -51.4004 -140.6 -51.4004c-3.2002 0 -6 1.7998 -7.2998 4.7998s-0.700195 6.40039 1.5 8.7002\nc0.5 0.5 42.2998 45.4004 54.7998 95.7998c-35.5996 35.7002 -57 81.1006 -57 130.7c0 114.9 114.6 208 256 208zM128 176c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM256 176c17.7002 0 32 14.2998 32 32\ns-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM384 176c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32z\" />\n    <glyph glyph-name=\"comment-slash\" unicode=\"&#xf4b3;\" horiz-adv-x=\"640\" \nd=\"M64 208c0 18.5996 3.2998 36.5 8.90039 53.5996l325.5 -251.6c-24.7002 -6.40039 -51 -10 -78.4004 -10c-38.4004 0 -74.7002 7.09961 -107.4 19.4004c-24.5996 -19.6006 -74.2998 -51.4004 -140.6 -51.4004c-3.2002 0 -6 1.90039 -7.2998 4.7998\nc-1.2998 3 -0.700195 6.40039 1.5 8.7002c0.5 0.599609 42.2002 45.5 54.7998 95.7998c-35.5996 35.7002 -57 81.1006 -57 130.7zM633.8 -10.0996c7 -5.40039 8.2998 -15.5 2.90039 -22.3008l-19.6006 -25.2998c-5.5 -7 -15.5 -8.2002 -22.5 -2.7998l-588.399 454.7\nc-7 5.39941 -8.2002 15.3994 -2.7998 22.3994l19.5996 25.2002c5.5 7 15.5 8.2002 22.5 2.7998l105.1 -81.2998c45.2002 32.6006 104.301 52.7002 169.4 52.7002c141.4 0 256 -93.0996 256 -208c0 -49.2002 -21.4004 -94.0996 -56.5996 -129.7z\" />\n    <glyph glyph-name=\"couch\" unicode=\"&#xf4b8;\" horiz-adv-x=\"640\" \nd=\"M160 224c0 35.2998 -28.7002 64 -64 64h-32c0 53 43 96 96 96h320c53 0 96 -43 96 -96h-32c-35.2998 0 -64 -28.7002 -64 -64v-64h-320v64zM576 256c35.2998 0 64 -28.7002 64 -64c0 -23.5996 -13 -44 -32 -55.0996v-120.9c0 -8.7998 -7.2002 -16 -16 -16h-64\nc-8.7998 0 -16 7.2002 -16 16v16h-384v-16c0 -8.7998 -7.2002 -16 -16 -16h-64c-8.7998 0 -16 7.2002 -16 16v120.9c-19 11.0996 -32 31.5 -32 55.0996c0 35.2998 28.7002 64 64 64h32c17.7002 0 32 -14.2998 32 -32v-96h384v96c0 17.7002 14.2998 32 32 32h32z\" />\n    <glyph glyph-name=\"donate\" unicode=\"&#xf4b9;\" \nd=\"M256 32c-114.9 0 -208 93.0996 -208 208s93.0996 208 208 208s208 -93.0996 208 -208s-93.0996 -208 -208 -208zM233.8 350.6c-32.7002 -0.899414 -59 -28.3994 -59.0996 -62.3994c0 -27.7002 18 -52.4004 43.7002 -60.1006l62.2998 -18.6992\nc7.09961 -2.10059 12.0996 -9.40039 12.0996 -17.6006c0 -10.0996 -7.2998 -18.2998 -16.2998 -18.2998h-38.9004c-6.39941 0 -12.3994 1.7002 -17.7998 5.09961c-4.5 2.80078 -10.2002 2.7002 -14 -1l-16.2998 -15.5c-5 -4.7998 -4.40039 -13 1.2002 -17.0996\nc12.5 -9.2998 27.5 -14.5996 43 -15.4004v-17c0 -9.19922 7.39941 -16.5996 16.5996 -16.5996h11.1006c9.19922 0 16.5996 7.40039 16.5996 16.5996v16.8008c32.7002 0.899414 59.0996 28.3994 59.0996 62.3994c0 27.7002 -18 52.4004 -43.6992 60.1006l-62.3008 18.6992\nc-7.09961 2.10059 -12.0996 9.40039 -12.0996 17.6006c0 10.0996 7.2998 18.2998 16.2998 18.2998h38.9004c6.39941 0 12.3994 -1.7002 17.7998 -5.09961c4.5 -2.80078 10.2002 -2.7002 14 1l16.2998 15.5c5 4.7998 4.40039 13 -1.2002 17.0996\nc-12.5 9.2998 -27.5 14.5996 -43 15.4004v17c0 9.19922 -7.39941 16.5996 -16.5996 16.5996h-11.0996c-9.2002 0 -16.6006 -7.40039 -16.6006 -16.5996v-16.8008zM480 96c17.7002 0 32 -14.2998 32 -32v-96c0 -17.7002 -14.2998 -32 -32 -32h-448\nc-17.7002 0 -32 14.2998 -32 32v96c0 17.7002 14.2998 32 32 32h32.4004c19.6992 -26 44.5996 -47.7002 73 -64h-63.8008c-5.2998 0 -9.59961 -3.59961 -9.59961 -8v-16c0 -4.40039 4.2998 -8 9.59961 -8h364.7c5.2998 0 9.60059 3.59961 9.60059 8v16\nc0 4.40039 -4.30078 8 -9.60059 8h-63.7998c28.4004 16.2998 53.4004 38 73 64h32.5z\" />\n    <glyph glyph-name=\"dove\" unicode=\"&#xf4ba;\" \nd=\"M288 280.8c-50.7998 10.5 -96.5996 36.7998 -130.8 75.1006c11.2002 32.3994 27.7998 61.5996 48.8994 86.5c8.80078 10.5 25.7002 5.19922 27.8008 -8.30078c7 -45.8994 25.8994 -88.8994 54.0996 -125.199v-28.1006zM400 384h112l-32 -64v-160.1\nc0 -88.4004 -71.5996 -159.9 -160 -159.9h-76.9004l-65.1992 -56.0996c-6.10059 -5.30078 -14.1006 -8.2002 -22.1006 -7.90039c-92.7998 3.7998 -135.8 49.4004 -153.2 76.2998c-6 9.2998 -1.19922 21.7002 9.5 24.4004l143.9 36\nc-12.7998 9.59961 -25.7002 20.0996 -38.9004 32.7998c-51 49 -85.0996 115.1 -85.0996 185.9c0 41.3994 9.40039 80.5996 26 115.699c5.7998 12.3008 23.5 11.6006 29 -0.899414c40 -91.2002 128.6 -155.5 233 -161.7v59.4004c0 44.1992 35.7998 80.0996 80 80.0996z\nM400 287.9c8.7998 0 16 7.19922 16 16c0 8.7998 -7.2002 16 -16 16s-16 -7.2002 -16 -16c0 -8.80078 7.2002 -16 16 -16z\" />\n    <glyph glyph-name=\"hand-holding\" unicode=\"&#xf4bd;\" horiz-adv-x=\"576\" \nd=\"M565.3 119.9c15.1006 -13.6006 13.9004 -36.8008 -1.2998 -48.9004l-151.2 -121c-11.3994 -9.09961 -25.5 -14 -40 -14h-356.8c-8.7998 0 -16 7.2002 -16 16v96c0 8.7998 7.2002 16 16 16h55.4004l46.5 37.7002c21 17 47.0996 26.2998 74.0996 26.2998h160\nc19.5 0 34.9004 -17.4004 31.5996 -37.4004c-2.59961 -15.6992 -17.3994 -26.5996 -33.2998 -26.5996h-78.2998c-8.7998 0 -16 -7.2002 -16 -16s7.2002 -16 16 -16h118.3c14.6006 0 28.7002 4.90039 40 14l92.4004 73.9004c12.3994 10 30.7998 10.6992 42.5996 0z\" />\n    <glyph glyph-name=\"hand-holding-heart\" unicode=\"&#xf4be;\" horiz-adv-x=\"576\" \nd=\"M275.3 197.5l-108.899 114.2c-31.6006 33.2002 -29.7002 88.2002 5.59961 118.8c30.7998 26.7002 76.7002 21.9004 104.9 -7.7998l11.0996 -11.6006l11.2002 11.7002c28.2002 29.6006 74.0996 34.4004 104.899 7.7002c35.4004 -30.5996 37.2002 -85.5996 5.60059 -118.8\nl-108.9 -114.2c-7.09961 -7.40039 -18.5 -7.40039 -25.5 0zM565.3 119.9c15.1006 -13.6006 13.9004 -36.8008 -1.2998 -48.9004l-151.2 -121c-11.3994 -9.09961 -25.5 -14 -40 -14h-356.8c-8.7998 0 -16 7.2002 -16 16v96c0 8.7998 7.2002 16 16 16h55.4004l46.5 37.7002\nc21 17 47.0996 26.2998 74.0996 26.2998h160c19.5 0 34.9004 -17.4004 31.5996 -37.4004c-2.59961 -15.6992 -17.3994 -26.5996 -33.2998 -26.5996h-78.2998c-8.7998 0 -16 -7.2002 -16 -16s7.2002 -16 16 -16h118.3c14.6006 0 28.7002 4.90039 40 14l92.4004 73.9004\nc12.3994 10 30.7998 10.6992 42.5996 0z\" />\n    <glyph glyph-name=\"hand-holding-usd\" unicode=\"&#xf4c0;\" horiz-adv-x=\"544\" \nd=\"M257.6 303.7c-22.1992 6.39941 -40 24.7002 -42.8994 47.7002c-4 32 19 59.3994 49.2998 63v17.5996c0 8.7998 7.2002 16 16 16h16c8.7998 0 16 -7.2002 16 -16v-17.7002c11.5 -1.39941 22.2998 -5.2002 31.7998 -11.5c6.2002 -4.09961 6.7998 -13.0996 1.5 -18.3994\nl-17.5 -17.5c-3.7002 -3.7002 -9.2998 -4.2002 -14.0996 -2c-3.2002 1.39941 -6.7002 2.19922 -10.2998 2.19922h-32.8008c-4.59961 0 -8.39941 -3.7998 -8.39941 -8.39941c0 -3.7002 2.5 -7.10059 6.09961 -8.10059l50 -14.2998\nc22.2002 -6.39941 40 -24.7002 42.9004 -47.7002c4 -32 -19 -59.3994 -49.2998 -63v-17.5996c0 -8.7998 -7.2002 -16 -16 -16h-16c-8.80078 0 -16 7.2002 -16 16v17.7002c-11.5 1.39941 -22.3008 5.2002 -31.8008 11.5c-6.19922 4.09961 -6.7998 13.0996 -1.5 18.3994\nl17.5 17.5c3.7002 3.7002 9.30078 4.2002 14.1006 2c3.2002 -1.39941 6.7002 -2.19922 10.2998 -2.19922h32.7998c4.60059 0 8.40039 3.7998 8.40039 8.39941c0 3.7002 -2.5 7.10059 -6.10059 8.10059zM533.9 119.9c14.1992 -13.6006 13.0996 -36.8008 -1.30078 -48.9004\nl-142.8 -121c-10.7998 -9.09961 -24.0996 -14 -37.7998 -14h-336.9c-8.2998 0 -15.0996 7.2002 -15.0996 16v96c0 8.7998 6.7998 16 15.0996 16h52.4004l43.9004 37.7002c19.6992 17 44.3994 26.2998 69.8994 26.2998h151.101c18.2998 0 32.8994 -17.4004 29.7998 -37.4004\nc-2.40039 -15.6992 -16.2998 -26.5996 -31.4004 -26.5996h-73.8994c-8.30078 0 -15.1006 -7.2002 -15.1006 -16s6.7998 -16 15.1006 -16h111.699c13.8008 0 27.1006 4.90039 37.8008 14l87.1992 73.9004c11.8008 10 29.1006 10.6992 40.3008 0z\" />\n    <glyph glyph-name=\"hands\" unicode=\"&#xf4c2;\" horiz-adv-x=\"640\" \nd=\"M204.8 217.6l57.6006 -76.7998c16.5996 -22.2002 25.5996 -49.0996 25.5996 -76.7998v-112c0 -8.7998 -7.2002 -16 -16 -16h-131.7c-7.2002 0 -13.5 4.7002 -15.2998 11.5996c-2 7.80078 -5.40039 15.2002 -10.4004 21.7002l-104.1 134.3\nc-6.7998 8.5 -10.5 19.1006 -10.5 30v218.4c0 17.7002 14.2998 32 32 32s32 -14.2998 32 -32v-148.4l89.7998 -107.8c6 -7.2998 16.9004 -7.7998 23.6006 -1.09961l12.7998 12.7998c5.59961 5.59961 6.2998 14.5 1.5 20.9004l-38.1006 50.7998\nc-10.5996 14.0996 -7.69922 34.2002 6.40039 44.7998s34.2002 7.7002 44.7998 -6.40039zM608 384c17.7002 0 32 -14.2998 32 -32v-218.4c0 -10.8994 -3.7002 -21.5 -10.5 -30l-104.1 -134.3c-5 -6.5 -8.40039 -13.8994 -10.4004 -21.7002\nc-1.7998 -6.89941 -8.2002 -11.5996 -15.2998 -11.5996h-131.7c-8.7998 0 -16 7.2002 -16 16v112c0 27.7002 9 54.5996 25.5996 76.7998l57.6006 76.7998c10.5996 14.1006 30.7002 17 44.7998 6.40039s17 -30.7002 6.40039 -44.7998l-38.1006 -50.7998\nc-4.7998 -6.40039 -4.09961 -15.3008 1.5 -20.9004l12.7998 -12.7998c6.60059 -6.60059 17.6006 -6.10059 23.6006 1.09961l89.7998 107.8v148.4c0 17.7002 14.2998 32 32 32z\" />\n    <glyph glyph-name=\"hands-helping\" unicode=\"&#xf4c4;\" horiz-adv-x=\"640\" \nd=\"M488 256c13.2998 0 24 -10.7002 24 -24v-48c0 -13.2998 -10.7002 -24 -24 -24h-8v-64c0 -17.7002 -14.2998 -32 -32 -32h-16c0 -35.2998 -28.7002 -64 -64 -64h-136.6l-103.4 -59.7002c-15.2998 -8.7998 -34.9004 -3.59961 -43.7002 11.7002l-80 138.6\nc-8.89941 15.3008 -3.59961 34.9004 11.7002 43.7002l80 46.2002v47.2998c0 22.4004 11.7998 43.2998 31.0996 54.7998l64.9004 39v-121.6c0 -39.7002 32.2998 -72 72 -72s72 32.2998 72 72v56h152zM635.7 293.4c8.7998 -15.3008 3.59961 -34.8008 -11.7002 -43.7002\nl-80 -46.2002v28.5c0 30.9004 -25.0996 56 -56 56h-184v-88c0 -22.0996 -17.9004 -40 -40 -40s-40 17.9004 -40 40v126.3c0 11 5.59961 21.2998 15 27.1006l33.5 20.8994c10.2002 6.2998 21.9004 9.7002 33.9004 9.7002h102.199l103.4 59.7002\nc15.2998 8.7998 34.9004 3.59961 43.7002 -11.7002z\" />\n    <glyph glyph-name=\"parachute-box\" unicode=\"&#xf4cd;\" \nd=\"M511.9 273c1.09961 -9.2002 -6.80078 -17 -16.1006 -17h-8.7002l-136.8 -151.9c0.700195 -2.69922 1.60059 -5.19922 1.60059 -8.09961v-128c0 -17.7002 -14.3008 -32 -32 -32h-128c-17.7002 0 -32 14.2998 -32 32v128c0 2.90039 0.899414 5.5 1.59961 8.09961\nl-136.7 151.9h-8.7002c-9.19922 0 -17.0996 7.90039 -16 17c9.10059 75.5 78.4004 132.3 158.301 158.7c-36.4004 -39.4004 -62.4004 -100.601 -62.4004 -175.7h-28.0996l116.6 -129.5c2.5 0.599609 4.7998 1.5 7.5 1.5h48v128h-112c0 115.2 68.9004 192 128 192\ns128 -76.7998 128 -192h-112v-128h48c2.7002 0 5 -0.900391 7.5 -1.5l116.6 129.5h-28.0996c0 75.0996 -26 136.3 -62.4004 175.7c79.9004 -26.2998 149.2 -83.1006 158.301 -158.7z\" />\n    <glyph glyph-name=\"people-carry\" unicode=\"&#xf4ce;\" horiz-adv-x=\"640\" \nd=\"M128 352c-26.5 0 -48 21.5 -48 48s21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48zM512 352c-26.5 0 -48 21.5 -48 48s21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48zM637.7 -20.0996c6.59961 -16.4004 -1.40039 -35 -17.7998 -41.6006\nc-3.90039 -1.59961 -7.90039 -2.2998 -11.9004 -2.2998c-12.7002 0 -24.7002 7.59961 -29.7002 20.0996l-27.7002 69.2002l2 18.2002l41.1006 46.4004zM603.5 189.7c4.59961 -20 -0.799805 -41.2002 -14.4004 -56.7002l-67.1992 -75.9004l-10.1006 -92.5996\nc-1.7998 -16.4004 -15.7002 -28.5 -31.7998 -28.5c-1.2002 0 -2.2998 0.0996094 -3.5 0.200195c-17.5 1.89941 -30.2002 17.7002 -28.2998 35.2998l10.0996 92.7998c1.5 13 6.90039 25.1006 15.6006 35l43.2998 49l-17.6006 70.2998l-6.7998 -20.3994\nc-4.09961 -12.6006 -11.8994 -23.4004 -24.5 -32.6006l-51.0996 -32.5c-4.60059 -2.89941 -12.1006 -4.59961 -17.2002 -5h-160c-5.09961 0.400391 -12.5996 2.10059 -17.2002 5l-51.0996 32.5c-12.6006 9.2002 -20.4004 20.1006 -24.5 32.6006l-6.7998 20.3994\nl-17.6006 -70.2998l43.2998 -49c8.7002 -9.89941 14.1006 -22 15.6006 -35l10.0996 -92.7998c1.90039 -17.5996 -10.7002 -33.4004 -28.2998 -35.2998c-1.2002 -0.100586 -2.2998 -0.200195 -3.5 -0.200195c-16.2002 0 -30 12.2002 -31.7998 28.5l-10.1006 92.5996\nl-67.1992 75.9004c-13.7002 15.5 -19 36.7002 -14.4004 56.7002l18.4004 80.2002c4.59961 20 18.5996 36.7998 37.5 44.8994c18.5 8 38.8994 6.7002 56.0996 -3.2998c22.7002 -13.4004 39.7998 -34.4004 48.0996 -59.4004l11.3008 -33.8994l16.0996 -10.2002v96\nc0 8.7998 7.2002 16 16 16h160c8.7998 0 16 -7.2002 16 -16v-96l16 10.2002l11.2998 33.8994c8.40039 24.9004 25.4004 46 48.1006 59.4004c17.0996 10 37.5996 11.2998 56.0996 3.2998c18.9004 -8.09961 32.9004 -24.8994 37.5 -44.8994zM46.2998 89.9004l41.1006 -46.4004\nl2 -18.2002l-27.7002 -69.2002c-6.5 -16.0996 -24.7998 -24.3994 -41.6006 -17.7998c-16.3994 6.60059 -24.3994 25.2002 -17.7998 41.6006z\" />\n    <glyph glyph-name=\"piggy-bank\" unicode=\"&#xf4d3;\" horiz-adv-x=\"576\" \nd=\"M560 224c8.7998 0 16 -7.2002 16 -16v-128c0 -8.7998 -7.2002 -16 -16 -16h-48.7002c-9 -11.9004 -19.5 -22.4004 -31.2998 -31.2998v-80.7002c0 -8.7998 -7.2002 -16 -16 -16h-64c-8.7998 0 -16 7.2002 -16 16v48h-128v-48c0 -8.7998 -7.2002 -16 -16 -16h-64\nc-8.7998 0 -16 7.2002 -16 16v80.7002c-38.5996 29.2002 -64 75.0996 -64 127.3h-40c-33.2998 0 -59.9004 29.2002 -55.5 63.4004c3.59961 28.1992 29 48.5996 57.5 48.5996c3.2998 0 6 -2.7002 6 -6v-20c0 -3.2998 -2.7002 -6 -6 -6h-1\nc-11.5996 0 -22.2998 -7.7998 -24.5 -19.2002c-3 -15.2998 8.7002 -28.7998 23.5 -28.7998h43.2002c14.8994 73 79.3994 128 156.8 128h128c7.90039 0 15.4004 -1.2002 23 -2.2998c17.5996 20.7998 43.5996 34.2998 73 34.2998h32l-18.9004 -75.5\nc15.8008 -14.7998 28.6006 -32.5 37.4004 -52.5h29.5zM432 160c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM256 352c-16.4004 0 -32.2002 -2.2998 -47.4004 -6.2002c-0.0996094 2.10059 -0.599609 4.10059 -0.599609 6.2002\nc0 53 43 96 96 96s96 -43 96 -96c0 -0.299805 -0.0996094 -0.5 -0.0996094 -0.799805c-5.2002 0.399414 -10.5 0.799805 -15.9004 0.799805h-128z\" />\n    <glyph glyph-name=\"ribbon\" unicode=\"&#xf4d6;\" horiz-adv-x=\"448\" \nd=\"M6.09961 3.7002l117.2 130l79.2002 -87.9004l-91.7998 -101.899c-8 -8.80078 -21.4004 -10.5 -31.2998 -3.80078l-68.8008 27.9004c-12 8.09961 -14.0996 24.9004 -4.5 35.7002zM441.9 3.7002c9.69922 -10.7998 7.59961 -27.6006 -4.30078 -35.6006l-68.7998 -27.8994\nc-9.89941 -6.7002 -23.2998 -5.10059 -31.2998 3.7998l-248.1 275.3c-48.6006 53.7998 -13 113.5 -11.5 116l43.5996 73.2002c4.2998 7.2002 9.90039 13.2998 16.7998 18c44 29.7002 130.7 27.5996 171.4 0c6.89941 -4.7002 12.5 -10.7998 16.7998 -18l43.7002 -73.5\nc21.8994 -36.9004 17.2998 -83.5996 -11.4004 -115.5l-34.2002 -38l-79.0996 87.7002s52.7002 59 56 64.5996c-15.4004 8.40039 -40.2002 17.9004 -77.5 17.9004s-62.0996 -9.5 -77.5 -17.9004c3.40039 -5.5 295.4 -330.1 295.4 -330.1z\" />\n    <glyph glyph-name=\"route\" unicode=\"&#xf4d7;\" \nd=\"M416 128c52.9004 0 96 -43.0996 96 -96s-43.0996 -96 -96 -96h-277.8c13.5 16.2998 31.2998 39.2002 47.2998 64h230.5c17.5996 0 32 14.4004 32 32s-14.4004 32 -32 32h-96c-52.9004 0 -96 43.0996 -96 96s43.0996 96 96 96h45.2998\nc-23.0996 32.5996 -45.2998 70.5 -45.2998 96c0 53 43 96 96 96s96 -43 96 -96s-96 -160 -96 -160h-96c-17.5996 0 -32 -14.4004 -32 -32s14.4004 -32 32 -32h96zM416 384c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32s32 14.2998 32 32s-14.2998 32 -32 32zM96 192\nc53 0 96 -43 96 -96s-96 -160 -96 -160s-96 107 -96 160s43 96 96 96zM96 64c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32z\" />\n    <glyph glyph-name=\"seedling\" unicode=\"&#xf4d8;\" \nd=\"M64 352c123.7 0 224 -100.3 224 -224v-144c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v144c-123.7 0 -224 100.3 -224 224h64zM448 416h64c0 -115.9 -88 -211.1 -200.7 -222.8c-10.7998 40.7002 -31.2998 77.3994 -59 107.6\nc38.2998 68.7002 111.5 115.2 195.7 115.2z\" />\n    <glyph glyph-name=\"sign\" unicode=\"&#xf4d9;\" \nd=\"M496 384c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-368v-368c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v368h-48c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h48v48c0 8.7998 7.2002 16 16 16h32\nc8.7998 0 16 -7.2002 16 -16v-48h368zM160 64v224h320v-224h-320z\" />\n    <glyph glyph-name=\"smile-wink\" unicode=\"&#xf4da;\" horiz-adv-x=\"496\" \nd=\"M0 192c0 137 111 248 248 248s248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248zM200 240c0 17.7002 -14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32s32 14.2998 32 32zM358.5 223.5l9.7002 -8.5c8.39941 -7.5 21.5 -0.299805 19.7998 10.7998\nc-4 25.2002 -34.2002 42.1006 -59.9004 42.1006c-25.6992 0 -55.8994 -16.9004 -59.8994 -42.1006c-1.7998 -11.2002 11.5 -18.2002 19.7998 -10.7998l9.5 8.5c14.7998 13.2002 46.2002 13.2002 61 0zM157.8 122.2c-13.3994 16.2998 -38.0996 -4.10059 -24.5996 -20.4004\nc28.5 -34.2002 70.2998 -53.7998 114.8 -53.7998s86.2998 19.5996 114.8 53.7002c13.5 16.2998 -11 36.7002 -24.5996 20.5c-22.4004 -26.7998 -55.2002 -42.2002 -90.2002 -42.2002s-67.7998 15.2998 -90.2002 42.2002z\" />\n    <glyph glyph-name=\"tape\" unicode=\"&#xf4db;\" horiz-adv-x=\"640\" \nd=\"M224 256c35.2998 0 64 -28.7002 64 -64s-28.7002 -64 -64 -64s-64 28.7002 -64 64s28.7002 64 64 64zM624 32c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-400c-123.7 0 -224 100.3 -224 224s100.3 224 224 224s224 -100.3 224 -224\nc0 -62.7002 -25.9004 -119.3 -67.4004 -160h243.4zM224 96c53 0 96 43 96 96s-43 96 -96 96s-96 -43 -96 -96s43 -96 96 -96z\" />\n    <glyph glyph-name=\"truck-loading\" unicode=\"&#xf4de;\" horiz-adv-x=\"640\" \nd=\"M50.2002 72.4004l-49.6006 185.5c-2.2998 8.5 2.80078 17.2998 11.3008 19.5996l77.2998 20.7002l24.7998 -92.7002l61.7998 16.5l-24.7998 92.7002l77.2002 20.7998c8.5 2.2998 17.2998 -2.7998 19.5996 -11.2998l49.7002 -185.5\nc2.2998 -8.5 -2.7998 -17.2998 -11.2998 -19.6006l-216.4 -58c-8.5 -2.2998 -17.2998 2.80078 -19.5996 11.3008zM384 448h256v-400c0 -61.9004 -50.0996 -112 -112 -112c-60.4004 0 -109.2 47.9004 -111.6 107.7l-393.7 -107.4\nc-4.2002 -1.2002 -8.60059 1.2998 -9.7998 5.60059l-12.6006 46.2998c-1.2002 4.2002 1.2998 8.59961 5.60059 9.7998l346.1 94.4004v323.6c0 17.7002 14.2998 32 32 32zM528 0c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48z\" />\n    <glyph glyph-name=\"truck-moving\" unicode=\"&#xf4df;\" horiz-adv-x=\"640\" \nd=\"M621.3 210.7c12 -12 18.7002 -28.2002 18.7002 -45.2002v-85.5c0 -8.7998 -7.2002 -16 -16 -16h-17.5996c1 -5.2002 1.59961 -10.5 1.59961 -16c0 -44.2002 -35.7998 -80 -80 -80s-80 35.7998 -80 80c0 5.5 0.5 10.7998 1.59961 16h-163.199\nc1 -5.2002 1.59961 -10.5 1.59961 -16c0 -44.2002 -35.7998 -80 -80 -80c-26.2998 0 -49.4004 12.7998 -64 32.4004c-14.5996 -19.5 -37.7002 -32.4004 -64 -32.4004c-44.2002 0 -80 35.7998 -80 80v336c0 17.7002 14.2998 32 32 32h416c17.7002 0 32 -14.2998 32 -32\nv-96.0996h37.5c17 0 33.2998 -6.7002 45.2998 -18.7002zM80 16c17.5996 0 32 14.4004 32 32s-14.4004 32 -32 32s-32 -14.4004 -32 -32s14.4004 -32 32 -32zM208 16c17.5996 0 32 14.4004 32 32s-14.4004 32 -32 32s-32 -14.4004 -32 -32s14.4004 -32 32 -32zM480 240v-48\nh92.0996l-43.2998 43.2998c-3 3 -7 4.7002 -11.2998 4.7002h-37.5zM528 16c17.5996 0 32 14.4004 32 32s-14.4004 32 -32 32s-32 -14.4004 -32 -32s14.4004 -32 32 -32z\" />\n    <glyph glyph-name=\"video-slash\" unicode=\"&#xf4e2;\" horiz-adv-x=\"640\" \nd=\"M633.8 -10.0996c7 -5.40039 8.2998 -15.5 2.7998 -22.4004l-19.5996 -25.2998c-5.5 -7 -15.5 -8.2002 -22.5 -2.7998l-178.5 138l-373.3 288.6l-36.5 28.2002c-7 5.39941 -8.2002 15.3994 -2.7998 22.3994l19.5996 25.2002c5.5 7 15.5 8.2002 22.5 2.7998\nl78.4004 -60.5996h244.3c26.3994 0 47.7998 -21.4004 47.7998 -47.7998v-178l32 -24.7002v137.2l109.6 75.5996c21.3008 14.6006 50.4004 -0.299805 50.4004 -25.7998v-257c0 -17.4004 -13.7998 -29.7002 -29.2002 -31.0996zM32 47.7998v245.5l365.8 -282.8\nc-8.2002 -6.5 -18.3994 -10.5 -29.5996 -10.5h-288.4c-26.3994 0 -47.7998 21.4004 -47.7998 47.7998z\" />\n    <glyph glyph-name=\"wine-glass\" unicode=\"&#xf4e3;\" horiz-adv-x=\"288\" \nd=\"M216 -16c22.0898 0 40 -17.9102 40 -40c0 -4.41992 -3.58008 -8 -8 -8h-208c-4.41992 0 -8 3.58008 -8 8c0 22.0898 17.9102 40 40 40h40v117.18c-68.4697 15.8906 -118.05 79.9102 -111.4 154.16l15.96 178.11c0.730469 8.24023 7.55078 14.5498 15.7002 14.5498h223.48\nc8.16016 0 14.9697 -6.30957 15.71 -14.5498l15.9502 -178.101c6.64941 -74.25 -42.9307 -138.27 -111.4 -154.159v-117.19h40z\" />\n    <glyph glyph-name=\"user-alt-slash\" unicode=\"&#xf4fa;\" horiz-adv-x=\"640\" \nd=\"M633.8 -10.0996c7 -5.40039 8.2998 -15.5 2.90039 -22.3008l-19.6006 -25.2998c-5.5 -7 -15.5 -8.2002 -22.5 -2.7998l-588.399 454.7c-7 5.39941 -8.2002 15.3994 -2.7998 22.3994l19.5996 25.2002c5.5 7 15.5 8.2002 22.5 2.7998l135.5 -104.8\nc16 62.1006 71.9004 108.2 139 108.2c79.5 0 144 -64.5 144 -144c0 -54.0996 -30.2002 -100.7 -74.4004 -125.3zM198.4 128h47.3994l248.4 -192h-382.2c-26.5 0 -48 21.5 -48 48v9.59961c0 74.2002 60.2002 134.4 134.4 134.4z\" />\n    <glyph glyph-name=\"user-astronaut\" unicode=\"&#xf4fb;\" horiz-adv-x=\"448\" \nd=\"M64 224c-8.7998 0 -16 7.2002 -16 16v96c0 8.7998 7.2002 16 16 16h13.5c24.7002 56.5 80.9004 96 146.5 96s121.8 -39.5 146.5 -96h13.5c8.7998 0 16 -7.2002 16 -16v-96c0 -8.7998 -7.2002 -16 -16 -16h-13.5c-24.7002 -56.5 -80.9004 -96 -146.5 -96\ns-121.8 39.5 -146.5 96h-13.5zM104 312v-24c0 -53 43 -96 96 -96h48c53 0 96 43 96 96v24c0 22.0996 -21.5 40 -48 40h-144c-26.5 0 -48 -17.9004 -48 -40zM176 240l-12 36l-36 12l36 12l12 36l12 -36l36 -12l-36 -12zM327.6 126.6c67.5 -7.09961 120.4 -63.5996 120.4 -133\nv-9.59961c0 -26.5 -21.5 -48 -48 -48h-80v64c0 17.7002 -14.2998 32 -32 32h-128c-17.7002 0 -32 -14.2998 -32 -32v-64h-80c-26.5 0 -48 21.5 -48 48v9.59961c0 69.4004 52.9004 125.9 120.4 133c29.8994 -19.2998 65.3994 -30.5996 103.6 -30.5996\ns73.7002 11.2998 103.6 30.5996zM272 0c8.7998 0 16 -7.2002 16 -16s-7.2002 -16 -16 -16s-16 7.2002 -16 16s7.2002 16 16 16zM176 0c8.7998 0 16 -7.2002 16 -16v-48h-32v48c0 8.7998 7.2002 16 16 16z\" />\n    <glyph glyph-name=\"user-check\" unicode=\"&#xf4fc;\" horiz-adv-x=\"640\" \nd=\"M224 192c-70.7002 0 -128 57.2998 -128 128s57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128zM313.6 160c74.2002 0 134.4 -60.2002 134.4 -134.4v-41.5996c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v41.5996\nc0 74.2002 60.2002 134.4 134.4 134.4h16.6992c22.3008 -10.2002 46.9004 -16 72.9004 -16s50.7002 5.7998 72.9004 16h16.6992zM636.6 288.4c4.60059 -4.60059 4.5 -12.1006 -0.0996094 -16.8008l-141.3 -140.199c-4.7002 -4.60059 -12.2002 -4.60059 -16.7998 0.0996094\nl-81.7002 82.2998c-4.60059 4.7002 -4.60059 12.2002 0.0996094 16.7998l28.1006 27.9004c4.69922 4.59961 12.1992 4.59961 16.7998 -0.0996094l45.5 -45.8008l104.8 104c4.7002 4.60059 12.2002 4.60059 16.7998 -0.0996094z\" />\n    <glyph glyph-name=\"user-clock\" unicode=\"&#xf4fd;\" horiz-adv-x=\"640\" \nd=\"M496 224c79.5996 0 144 -64.4004 144 -144s-64.4004 -144 -144 -144s-144 64.4004 -144 144s64.4004 144 144 144zM560 73.7002v12.5996c0 5.2998 -4.40039 9.7002 -9.7002 9.7002h-38.2998v54.2998c0 5.2998 -4.40039 9.7002 -9.7002 9.7002h-12.5996\nc-5.2998 0 -9.7002 -4.40039 -9.7002 -9.7002v-76.5996c0 -5.2998 4.40039 -9.7002 9.7002 -9.7002h60.5996c5.2998 0 9.7002 4.40039 9.7002 9.7002zM320 80c0 -59.5 29.7998 -112.1 75.0996 -144h-347.1c-26.5 0 -48 21.5 -48 48v41.5996\nc0 74.2002 60.2002 134.4 134.4 134.4h16.6992c22.3008 -10.2002 46.9004 -16 72.9004 -16s50.7002 5.7998 72.9004 16h16.6992c8.40039 0 16.6006 -1 24.6006 -2.5c-11.5 -23.4004 -18.2002 -49.7002 -18.2002 -77.5zM224 192c-70.7002 0 -128 57.2998 -128 128\ns57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128z\" />\n    <glyph glyph-name=\"user-cog\" unicode=\"&#xf4fe;\" horiz-adv-x=\"640\" \nd=\"M610.5 74.7002l25.7998 -14.9004c2.90039 -1.7002 4.2998 -5.2002 3.2998 -8.5c-6.69922 -21.5996 -18.1992 -41.2002 -33.1992 -57.3994c-2.30078 -2.5 -6.10059 -3.10059 -9 -1.40039l-25.8008 14.9004c-10.8994 -9.30078 -23.3994 -16.5 -36.8994 -21.3008v-29.7998\nc0 -3.39941 -2.40039 -6.39941 -5.7002 -7.09961c-21.2002 -4.7998 -43.9004 -5 -66.2002 0c-3.2998 0.700195 -5.7002 3.7002 -5.7002 7.09961v29.7998c-13.5 4.80078 -26 12 -36.8994 21.3008l-25.7998 -14.9004c-3 -1.7002 -6.7002 -1.09961 -9 1.40039\nc-15 16.2998 -26.5 35.7998 -33.2002 57.3994c-1 3.2998 0.299805 6.7998 3.2998 8.5l25.7998 14.9004c-2.59961 14.0996 -2.59961 28.5 0 42.5996l-25.7998 14.9004c-2.90039 1.7002 -4.2998 5.2002 -3.2998 8.5c6.7002 21.5996 18.2002 41.2002 33.2002 57.3994\nc2.2998 2.5 6.09961 3.10059 9 1.40039l25.7998 -14.9004c10.8994 9.30078 23.3994 16.5 36.8994 21.3008v29.7998c0 3.39941 2.40039 6.39941 5.7002 7.09961c21.2002 4.7998 43.9004 5 66.2002 0c3.2998 -0.700195 5.7002 -3.7002 5.7002 -7.09961v-29.7998\nc13.5 -4.80078 26 -12 36.8994 -21.3008l25.8008 14.9004c3 1.7002 6.69922 1.09961 9 -1.40039c15 -16.1992 26.5 -35.7998 33.1992 -57.3994c1 -3.2998 -0.299805 -6.7998 -3.2998 -8.5l-25.7998 -14.9004c2.59961 -14.0996 2.59961 -28.5 0 -42.5996zM496 47.5\nc26.7998 0 48.5 21.7998 48.5 48.5s-21.7998 48.5 -48.5 48.5s-48.5 -21.7998 -48.5 -48.5s21.7002 -48.5 48.5 -48.5zM224 192c-70.7002 0 -128 57.2998 -128 128s57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128zM425.2 -34.5v-9.2002\nc0 -4.09961 0.799805 -8 2 -11.7998c-7.7002 -5.2998 -17.1006 -8.5 -27.2002 -8.5h-352c-26.5 0 -48 21.5 -48 48v41.5996c0 74.2002 60.2002 134.4 134.4 134.4h16.6992c22.3008 -10.2002 46.9004 -16 72.9004 -16s50.7002 5.7998 72.9004 16h16.6992\nc3.90039 0 7.60059 -0.900391 11.4004 -1.2002c-1 -2.89941 -2.2998 -5.7998 -3.2002 -8.7002c-5.5 -17.6992 1.90039 -36.5 17.9004 -45.6992l7.89941 -4.60059c-0.0996094 -2.59961 -0.0996094 -5.2002 0 -7.7998l-7.89941 -4.59961\nc-16 -9.30078 -23.4004 -28 -17.9004 -45.7002c7.90039 -25.7002 21.9004 -49.7998 40.2002 -69.6006c7.5 -8 18 -12.5996 28.9004 -12.5996c6.7998 0 13.5996 1.90039 19.5996 5.2998l7.90039 4.60059c2.19922 -1.30078 4.5 -2.7002 6.7998 -3.90039z\" />\n    <glyph glyph-name=\"user-edit\" unicode=\"&#xf4ff;\" horiz-adv-x=\"640\" \nd=\"M224 192c-70.7002 0 -128 57.2998 -128 128s57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128zM313.6 160c39.9004 0 75.4004 -17.7998 99.9004 -45.5l-77.2998 -77.2998l-7.90039 -7.90039l-1.2002 -11.0996l-6.7998 -60.9004\nc-0.799805 -7.2998 0.200195 -14.5 2.60059 -21.2998h-274.9c-26.5 0 -48 21.5 -48 48v41.5996c0 74.2002 60.2002 134.4 134.4 134.4h16.6992c22.3008 -10.2002 46.9004 -16 72.9004 -16s50.7002 5.7998 72.9004 16h16.6992zM358.9 14.7002l137.899 137.8l71.7002 -71.7002\nl-137.9 -137.899l-60.8994 -6.80078c-10.1006 -1.19922 -18.7002 7.40039 -17.6006 17.6006zM633 179.1c9.2998 -9.39941 9.2998 -24.5 0 -33.8994l-41.7998 -41.7998l-71.7998 71.6992l4.09961 4.10059l37.7998 37.7998c9.2998 9.2998 24.5 9.2998 33.7998 0z\" />\n    <glyph glyph-name=\"user-friends\" unicode=\"&#xf500;\" horiz-adv-x=\"640\" \nd=\"M192 192c-61.9004 0 -112 50.0996 -112 112s50.0996 112 112 112s112 -50.0996 112 -112s-50.0996 -112 -112 -112zM268.8 160c63.6006 0 115.2 -51.5996 115.2 -115.2v-28.7998c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v28.7998\nc0 63.6006 51.5996 115.2 115.2 115.2h8.2998c20.9004 -10 43.9004 -16 68.5 -16s47.7002 6 68.5 16h8.2998zM480 192c-53 0 -96 43 -96 96s43 96 96 96s96 -43 96 -96s-43 -96 -96 -96zM528 160c61.9004 0 112 -50.0996 112 -112c0 -26.5 -21.5 -48 -48 -48h-176.6\nc0.0996094 2.09961 0.599609 4.2002 0.599609 6.40039v38.3994c0 38.6006 -15.2998 73.5 -39.7002 99.7998c16.5 9.5 35.2998 15.4004 55.7002 15.4004h3.7998c13.9004 -4.7998 28.6006 -8 44.2002 -8s30.2998 3.2002 44.2002 8h3.7998z\" />\n    <glyph glyph-name=\"user-graduate\" unicode=\"&#xf501;\" horiz-adv-x=\"448\" \nd=\"M319.4 127.4c71.5 -3.10059 128.6 -61.6006 128.6 -133.801v-9.59961c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v9.59961c0 72.2002 57.0996 130.7 128.6 133.801l95.4004 -95.4004zM13.5996 368.2c-18.0996 4.39941 -18.0996 27.2002 0 31.5996\nl190.601 45.9004c13 3.09961 26.7002 3.09961 39.7002 0l190.399 -46c18.2002 -4.40039 18.2002 -27.1006 0 -31.5l-96.2998 -23.2002c8.7002 -17.2002 14 -36.4004 14 -57c0 -70.7002 -57.2998 -128 -128 -128s-128 57.2998 -128 128c0 20.5996 5.40039 39.7998 14 57\nl-66 15.9004v-52.6006c7 -4.2002 12 -11.5 12 -20.2998c0 -8.40039 -4.59961 -15.4004 -11.0996 -19.7002l15.5996 -62.2998c1.7002 -6.90039 -2.09961 -14 -7.59961 -14h-41.8008c-5.5 0 -9.2998 7.09961 -7.59961 14l15.5996 62.2998\nc-6.5 4.2998 -11.0996 11.2998 -11.0996 19.7002c0 8.7998 5 16.0996 12 20.2998v58.4004z\" />\n    <glyph glyph-name=\"user-lock\" unicode=\"&#xf502;\" horiz-adv-x=\"640\" \nd=\"M224 192c-70.6562 0 -128 57.3438 -128 128s57.3438 128 128 128s128 -57.3438 128 -128s-57.3438 -128 -128 -128zM320 128v-160c0.0644531 -9.49707 4.05176 -23.833 8.90039 -32h-280.9c-26.4961 0 -48 21.5039 -48 48v41.5996\nc0.0166016 74.1729 60.2275 134.384 134.4 134.4h16.6992c19.1514 -8.83203 51.8105 -16 72.9004 -16s53.749 7.16797 72.9004 16h16.6992c5 0 9.7002 -1 14.5 -1.5c-4.41016 -7.84082 -8.03906 -21.5049 -8.09961 -30.5zM608 160c17.6641 0 32 -14.3359 32 -32v-160\nc0 -17.6641 -14.3359 -32 -32 -32h-224c-17.6641 0 -32 14.3359 -32 32v160c0 17.6641 14.3359 32 32 32h32v80c0 44.1602 35.8398 80 80 80s80 -35.8398 80 -80v-80h32zM496 16c17.6641 0 32 14.3359 32 32s-14.3359 32 -32 32s-32 -14.3359 -32 -32s14.3359 -32 32 -32z\nM528 160v80c0 17.6641 -14.3359 32 -32 32s-32 -14.3359 -32 -32v-80h64z\" />\n    <glyph glyph-name=\"user-minus\" unicode=\"&#xf503;\" horiz-adv-x=\"640\" \nd=\"M624 240c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-192c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h192zM224 192c-70.7002 0 -128 57.2998 -128 128s57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128z\nM313.6 160c74.2002 0 134.4 -60.2002 134.4 -134.4v-41.5996c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v41.5996c0 74.2002 60.2002 134.4 134.4 134.4h16.6992c22.3008 -10.2002 46.9004 -16 72.9004 -16s50.7002 5.7998 72.9004 16h16.6992z\" />\n    <glyph glyph-name=\"user-ninja\" unicode=\"&#xf504;\" horiz-adv-x=\"448\" \nd=\"M325.4 158.8c68.5996 -6.09961 122.6 -63 122.6 -133.2v-41.5996c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v41.5996c0 70.2002 54 127.101 122.6 133.2l101.4 -101.399zM32 256c0 33.4004 17.0996 62.7998 43.0996 80\nc-26 17.2002 -43.0996 46.5996 -43.0996 80c32 0 60.0996 -15.7998 77.5 -39.7998c20.9004 42.3994 64.0996 71.7998 114.5 71.7998c70.7002 0 128 -57.2998 128 -128s-57.2998 -128 -128 -128c-58.7998 0 -107.7 39.7998 -122.8 93.7002\nc-17.4004 -18.2002 -41.9004 -29.7002 -69.2002 -29.7002zM176 352c-17.7002 0 -32 -14.2998 -32 -32h160c0 17.7002 -14.2998 32 -32 32h-96z\" />\n    <glyph glyph-name=\"user-shield\" unicode=\"&#xf505;\" horiz-adv-x=\"640\" \nd=\"M622.3 176.9c10.7002 -4.2002 17.7002 -14 17.7002 -24.9004c0 -124.5 -81.5996 -193.9 -132.9 -213.9c-4.19922 -1.59961 -12.5996 -3.69922 -22.1992 0c-64.2002 25.1006 -132.9 102.301 -132.9 213.9c0 10.9004 7 20.7002 17.7002 24.9004l115.2 45\nc9.59961 3.69922 18.0996 1.59961 22.1992 0zM496 -14.4004c34.5996 16.4004 89.9004 64.7002 95.5 151.801l-95.5 37.2998v-189.101zM224 192c-70.7002 0 -128 57.2998 -128 128s57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128zM320 152\nc0 -95.2998 45.2002 -169.1 99.2002 -212c-5.90039 -2.5 -12.4004 -4 -19.2002 -4h-352c-26.5 0 -48 21.5 -48 48v41.5996c0 74.2002 60.2002 134.4 134.4 134.4h16.6992c22.3008 -10.2002 46.9004 -16 72.9004 -16s50.7002 5.7998 72.9004 16h16.6992\nc2.60059 0 5 -0.700195 7.5 -0.799805c-0.299805 -2.40039 -1.09961 -4.7002 -1.09961 -7.2002z\" />\n    <glyph glyph-name=\"user-slash\" unicode=\"&#xf506;\" horiz-adv-x=\"640\" \nd=\"M633.8 -10.0996c7 -5.40039 8.2998 -15.5 2.90039 -22.3008l-19.6006 -25.2998c-5.5 -7 -15.5 -8.2002 -22.5 -2.7998l-588.399 454.7c-7 5.39941 -8.2002 15.3994 -2.7998 22.3994l19.5996 25.2002c5.5 7 15.5 8.2002 22.5 2.7998l147.6 -114\nc5.40039 65.6006 59.8008 117.4 126.9 117.4c70.7002 0 128 -57.2998 128 -128c0 -55.7998 -35.9004 -102.7 -85.7002 -120.3zM96 25.5996c0 66.4004 48.2002 121.101 111.4 132.101l286.8 -221.7h-350.2c-26.5 0 -48 21.5 -48 48v41.5996z\" />\n    <glyph glyph-name=\"user-tag\" unicode=\"&#xf507;\" horiz-adv-x=\"640\" \nd=\"M630.6 83.0996c12.5 -12.5 12.5 -32.6992 -0.0996094 -45.1992l-92.5 -92.5c-12.5 -12.5 -32.7998 -12.5 -45.2998 0l-90.2998 90.1992c-12 12 -18.7002 28.2002 -18.7002 45.2002v79.2002c0 17.7002 14.2998 32 32 32h79.2998c17 0 33.2998 -6.7002 45.2998 -18.7002z\nM447.8 104.1c13.2998 0 24 10.8008 24 24c0 13.3008 -10.7002 24 -24 24s-24 -10.6992 -24 -24c0 -13.2998 10.7002 -24 24 -24zM224 192.1c-70.7002 0 -128 57.3008 -128 127.9c0 70.7002 57.2998 128 128 128s128 -57.2998 128 -127.9c0 -70.6992 -57.2998 -128 -128 -128\nzM351.8 80.9004c0 -25.7002 10 -49.8008 28.1006 -67.9004l58 -58c-8.80078 -11.4004 -22.4004 -18.9004 -37.9004 -18.9004h-352c-26.5 0 -48 21.5 -48 48v41.6006c0 74.2002 60.2002 134.399 134.4 134.5h16.6992c22.3008 -10.2002 46.9004 -16 72.9004 -16\ns50.7002 5.7998 72.9004 16h16.6992c13.3008 0 26 -2.60059 38.2002 -6.2002v-73.0996z\" />\n    <glyph glyph-name=\"user-tie\" unicode=\"&#xf508;\" horiz-adv-x=\"448\" \nd=\"M224 192c-70.7002 0 -128 57.2998 -128 128s57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128zM319.8 159.4c71.2998 -3.40039 128.2 -61.7002 128.2 -133.801v-41.5996c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v41.5996\nc0 72.1006 56.9004 130.4 128.2 133.801l47.7998 -191.4l32 136l-32 56h96l-32 -56l32 -136z\" />\n    <glyph glyph-name=\"users-cog\" unicode=\"&#xf509;\" horiz-adv-x=\"640\" \nd=\"M610.5 106.7l25.7998 -14.9004c2.90039 -1.7002 4.2998 -5.2002 3.2998 -8.5c-6.69922 -21.5996 -18.1992 -41.2002 -33.1992 -57.3994c-2.30078 -2.5 -6.10059 -3.10059 -9 -1.40039l-25.8008 14.9004c-10.8994 -9.30078 -23.3994 -16.5 -36.8994 -21.3008v-29.7998\nc0 -3.39941 -2.40039 -6.39941 -5.7002 -7.09961c-21.2002 -4.7998 -43.9004 -5 -66.2002 0c-3.2998 0.700195 -5.7002 3.7002 -5.7002 7.09961v29.7998c-13.5 4.80078 -26 12 -36.8994 21.3008l-25.7998 -14.9004c-3 -1.7002 -6.7002 -1.09961 -9 1.40039\nc-15 16.2998 -26.5 35.7998 -33.2002 57.3994c-1 3.2998 0.299805 6.7998 3.2998 8.5l25.7998 14.9004c-2.59961 14.0996 -2.59961 28.5 0 42.5996l-25.7998 14.9004c-2.90039 1.7002 -4.2998 5.2002 -3.2998 8.5c6.7002 21.5996 18.2002 41.2002 33.2002 57.3994\nc2.2998 2.5 6.09961 3.10059 9 1.40039l25.7998 -14.9004c10.8994 9.30078 23.3994 16.5 36.8994 21.3008v29.7998c0 3.39941 2.40039 6.39941 5.7002 7.09961c21.2002 4.7998 43.9004 5 66.2002 0c3.2998 -0.700195 5.7002 -3.7002 5.7002 -7.09961v-29.7998\nc13.5 -4.80078 26 -12 36.8994 -21.3008l25.8008 14.9004c3 1.7002 6.69922 1.09961 9 -1.40039c15 -16.1992 26.5 -35.7998 33.1992 -57.3994c1 -3.2998 -0.299805 -6.7998 -3.2998 -8.5l-25.7998 -14.9004c2.59961 -14.0996 2.59961 -28.5 0 -42.5996zM496 79.5\nc26.7998 0 48.5 21.7998 48.5 48.5s-21.7998 48.5 -48.5 48.5s-48.5 -21.7998 -48.5 -48.5s21.7002 -48.5 48.5 -48.5zM96 224c-35.2998 0 -64 28.7002 -64 64s28.7002 64 64 64s64 -28.7002 64 -64s-28.7002 -64 -64 -64zM320 192c-61.9004 0 -112 50.0996 -112 112\ns50 111.9 111.9 111.9c61.8994 0 112 -50.1006 112 -112c0 -17.2002 -4.2002 -33.4004 -11.2002 -48c-0.799805 -0.5 -1.60059 -0.900391 -2.40039 -1.40039l-7.89941 4.59961c-5.90039 3.5 -12.7002 5.30078 -19.6006 5.30078c-11 0 -21.5 -4.60059 -28.8994 -12.6006\nc-15.8008 -17.0996 -28 -37.5 -36.3008 -59.2002c-1.89941 -0.0996094 -3.69922 -0.599609 -5.59961 -0.599609zM425.2 -2.5v-9.2002c0 -7.5 2.5 -14.2998 6.2002 -20.2998h-255.4c-26.5 0 -48 21.5 -48 48v28.7998c0 63.6006 51.5996 115.2 115.3 115.2h8.2998\nc20.9004 -10 43.9004 -16 68.5 -16c3.30078 0 6.5 0.400391 9.80078 0.599609c2.7998 -3.09961 6 -5.89941 9.7998 -8.09961l7.89941 -4.59961c-0.0996094 -2.60059 -0.0996094 -5.2002 0 -7.80078c-0.899414 -0.599609 -36.5 -15.7998 -25.7998 -50.2998\nc7.90039 -25.7002 21.9004 -49.7998 40.2002 -69.5996c7.5 -8 18 -12.6006 28.9004 -12.6006c12.1992 0 19.2998 5 27.5 9.80078c2.19922 -1.30078 4.5 -2.7002 6.7998 -3.90039zM173.1 173.4c-40.2998 -22.1006 -68.8994 -62 -75.1992 -109.4h-65.9004\nc-17.7002 0 -32 14.2998 -32 32v32c0 35.2998 28.7002 64 64 64h64c17.5996 0 33.5 -7.09961 45.0996 -18.5996z\" />\n    <glyph glyph-name=\"balance-scale-left\" unicode=\"&#xf515;\" horiz-adv-x=\"640\" \nd=\"M528 0c8.83984 0 16 -7.16016 16.0098 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-224c-8.83984 0 -16 7.16016 -16 16v342.75c-4.55957 2 -8.91992 4.34961 -12.9902 7.12012l-142.05 -47.6299c-8.37988 -2.81055 -17.4502 1.7002 -20.2598 10.0801l-10.1699 30.3398\nc-2.80957 8.37988 1.7002 17.4502 10.0801 20.2598l128.39 43.0498c-0.419922 3.32031 -1.00977 6.60059 -1.00977 10.0303c0 44.1797 35.8203 80 80 80c29.6904 0 55.2998 -16.3604 69.1104 -40.3701l117.92 39.5303c8.37988 2.80957 17.4502 -1.7002 20.2598 -10.0801\nl10.1699 -30.3398c2.80957 -8.37988 -1.7002 -17.4502 -10.0801 -20.2598l-132 -44.2607c-7.28027 -21.25 -22.96 -38.5293 -43.3799 -47.4697v-294.75h176zM639.98 144c0 -44.1797 -57.29 -80 -127.98 -80s-128 35.8203 -128 80h0.0195312\nc0 15.6699 -2.0791 7.25 85.04 181.51c17.6807 35.3604 68.2207 35.29 85.8701 0c86.3906 -172.779 85.0508 -165.33 85.0508 -181.51zM440 160h144l-72 144zM170.93 197.51c86.3906 -172.779 85.0508 -165.33 85.0508 -181.51h0.0195312c0 -44.1797 -57.3096 -80 -128 -80\ns-128 35.8203 -128 80h0.0195312c0 15.6699 -2.0791 7.25 85.04 181.51c17.6807 35.3604 68.2207 35.29 85.8701 0zM56 32h144l-72 144z\" />\n    <glyph glyph-name=\"balance-scale-right\" unicode=\"&#xf516;\" horiz-adv-x=\"640\" \nd=\"M96 -16c0 8.83984 7.16016 16 16 16h175.99v294.76c-20.4199 8.93066 -36.1006 26.2207 -43.3799 47.4707l-132 44.2598c-8.37012 2.80957 -12.8906 11.8799 -10.0801 20.2598l10.1699 30.3398c2.80957 8.37012 11.8799 12.8906 20.2598 10.0801l117.93 -39.54\nc13.8105 24.0098 39.4199 40.3701 69.1104 40.3701c44.1797 0 80 -35.8203 80 -80c0 -3.42969 -0.589844 -6.70996 -1.00977 -10.0303l128.399 -43.0498c8.37012 -2.80957 12.8906 -11.8799 10.0801 -20.2598l-10.1699 -30.3398\nc-2.80957 -8.37012 -11.8799 -12.8906 -20.2598 -10.0801l-142.05 47.6299c-4.07031 -2.77051 -8.43066 -5.12012 -12.9902 -7.12012v-342.75c0 -8.83984 -7.16016 -16 -16 -16h-224c-8.83984 0 -16 7.16016 -16 16v32zM0 144c0 16.1797 -1.32031 8.73047 85.0596 181.51\nc17.6504 35.29 68.1904 35.3604 85.8701 0c87.1299 -174.26 85.0508 -165.84 85.0508 -181.51h0.0195312c0 -44.1797 -57.3096 -80 -128 -80s-128 35.8203 -128 80zM56 160h144l-72 144zM384.02 16c0 16.1797 -1.33984 8.73047 85.04 181.51\nc17.6504 35.29 68.1904 35.3604 85.8701 0c87.1299 -174.26 85.0508 -165.84 85.0508 -181.51h0.0195312c0 -44.1797 -57.3096 -80 -128 -80s-128 35.8203 -128 80h0.0195312zM440 32h144l-72 144z\" />\n    <glyph glyph-name=\"blender\" unicode=\"&#xf517;\" \nd=\"M416 64c35.3496 0 64 -28.6504 64 -64v-32c0 -17.6699 -14.3301 -32 -32 -32h-320c-17.6699 0 -32 14.3301 -32 32v32c0 35.3496 28.6504 64 64 64h256zM288 -32c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM328 384\nc-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h157.82l-17.46 -64h-140.36c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h131.64l-17.46 -64h-114.18c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h105.46l-17.46 -64\nh-256l-8.73047 96h-103.27c-26.5098 0 -48 21.4902 -48 48v160c0 26.5098 21.4902 48 48 48h464l-17.46 -64h-166.54zM64 256h81.46l-11.6396 128h-69.8203v-128z\" />\n    <glyph glyph-name=\"book-open\" unicode=\"&#xf518;\" horiz-adv-x=\"576\" \nd=\"M542.22 415.95c18.4199 1.04004 33.7803 -12.9902 33.7705 -30.7002v-337.84c0 -16.2305 -13.1299 -29.7705 -30.0205 -30.6602c-49.4697 -2.59961 -149.52 -12.0996 -218.7 -46.9199c-10.6494 -5.36035 -23.2793 1.93945 -23.2793 13.4902v363.87\nc0 5.2793 2.62988 10.3291 7.26953 13.1699c67.2402 41.1592 176.16 52.4795 230.96 55.5898zM264.73 360.36c4.64941 -2.85059 7.26953 -7.7002 7.26953 -12.9902v-364.12c0 -11.5195 -12.5898 -18.8096 -23.21 -13.46c-69.1797 34.8398 -169.28 44.3496 -218.771 46.9502\nc-16.8896 0.879883 -30.0195 14.4199 -30.0195 30.6602v337.85c0 17.71 15.3604 31.7402 33.7803 30.7002c54.7998 -3.12012 163.72 -14.4307 230.95 -55.5898z\" />\n    <glyph glyph-name=\"broadcast-tower\" unicode=\"&#xf519;\" horiz-adv-x=\"640\" \nd=\"M150.94 256c-7.01074 0 -13.46 4.5 -15.4004 11.2402c-4.90039 16.9697 -7.54004 34.6396 -7.54004 52.7598s2.63965 35.79 7.53027 52.7695c1.9502 6.74023 8.39941 11.2305 15.4102 11.2305h33.7295c11.0098 0 18.6201 -10.8301 14.8604 -21.1797\nc-4.93066 -13.5801 -7.5498 -27.9805 -7.5498 -42.8203s2.61914 -29.2402 7.5498 -42.8203c3.75 -10.3496 -3.85059 -21.1797 -14.8604 -21.1797h-33.7295zM89.9199 424.66c-16.54 -31.1406 -49.6104 -115.97 0.169922 -209.29\nc5.66016 -10.6299 -1.92969 -23.3701 -13.9502 -23.3701h-34.8398c-6.18945 0 -11.9902 3.50977 -14.6094 9.13965c-23.5703 50.5303 -26.6904 94.1104 -26.6904 118.86c0 42.3496 9.40039 82.46 25.8896 118.69c2.60059 5.71973 8.4707 9.30957 14.7402 9.30957h35.3301\nc12.0098 0 19.5996 -12.7197 13.96 -23.3398zM614.06 438.71c16.5205 -36.2295 25.9404 -76.3496 25.9404 -118.71s-9.42969 -82.4805 -25.96 -118.71c-2.59961 -5.70996 -8.45996 -9.29004 -14.7305 -9.29004h-35.2295c-12.1104 0 -19.6299 12.8398 -13.9102 23.5195\nc48.1396 89.8105 17.9902 174.94 -0.280273 209.23c-5.63965 10.5898 2.04004 23.25 14.0205 23.25h35.4199c6.26953 0 12.1299 -3.58008 14.7295 -9.29004zM489.06 384c7.01074 0 13.46 -4.49023 15.4004 -11.2402c4.90039 -16.9697 7.54004 -34.6396 7.54004 -52.7598\ns-2.62988 -35.79 -7.53027 -52.7598c-1.9502 -6.75 -8.38965 -11.2402 -15.4102 -11.2402h-33.7295c-11.0098 0 -18.6201 10.8301 -14.8604 21.1797c4.93066 13.5801 7.5498 27.9805 7.5498 42.8203s-2.61914 29.2402 -7.5498 42.8203\nc-3.75 10.3496 3.85059 21.1797 14.8604 21.1797h33.7295zM372.76 283.88l130.5 -313.41c3.39062 -8.14941 -0.459961 -17.5195 -8.60938 -20.9199l-29.5107 -12.3096c-8.14941 -3.40039 -17.5098 0.450195 -20.9092 8.60938l-49.2002 118.15h-150.07l-49.1904 -118.15\nc-3.38965 -8.14941 -12.7598 -12.0098 -20.9092 -8.60938l-29.5107 12.3096c-8.14941 3.40039 -12.0098 12.7705 -8.60938 20.9199l130.5 313.41c-7.0498 10.29 -11.2002 22.71 -11.2002 36.1201c0 35.3496 28.6396 64 63.96 64c35.3301 0 63.96 -28.6504 63.96 -64\nc0 -13.4102 -4.15039 -25.8301 -11.2002 -36.1201zM271.62 128h96.7598l-48.3799 116.19z\" />\n    <glyph glyph-name=\"broom\" unicode=\"&#xf51a;\" horiz-adv-x=\"640\" \nd=\"M256.47 231.23l86.7305 -109.181s-16.6006 -102.359 -76.5703 -150.12c-59.9697 -47.7793 -266.63 -34.1201 -266.63 -34.1201s3.7998 23.1406 11 55.4307l94.6201 112.17c3.96973 4.7002 -0.870117 11.6201 -6.65039 9.5l-60.3994 -22.0898\nc14.4395 41.6602 32.7197 80.04 54.5996 97.4697c59.9697 47.7598 163.3 40.9404 163.3 40.9404zM636.53 416.97c5.48926 -6.91016 4.33984 -16.96 -2.5498 -22.4395l-232.48 -177.8l34.0898 -42.9209c5.08008 -6.39941 1.66016 -15.9092 -6.33984 -17.5996\nl-58.7998 -12.4502l-86.7305 109.181l25.3301 54.5498c3.4502 7.41992 13.5 8.62012 18.5898 2.20996l34.1406 -42.9697l232.479 177.8c6.89062 5.48926 16.9199 4.33984 22.4102 -2.56055z\" />\n    <glyph glyph-name=\"chalkboard\" unicode=\"&#xf51b;\" horiz-adv-x=\"640\" \nd=\"M96 384v-352h-64v376c0 22.0596 17.9404 40 40 40h496c22.0596 0 40 -17.9404 40 -40v-376h-64v352h-448zM624 0c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-608c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h272v64h192v-64\nh144z\" />\n    <glyph glyph-name=\"chalkboard-teacher\" unicode=\"&#xf51c;\" horiz-adv-x=\"640\" \nd=\"M208 96c62.0596 0 112.33 -50.4805 112 -112.62c-0.139648 -26.2598 -21.7305 -47.3799 -48 -47.3799h-224c-26.2695 0 -47.8604 21.1201 -48 47.3799c-0.330078 62.1396 49.9404 112.62 112 112.62c2.38965 0 4.76953 -0.349609 7.0498 -1.08984\nc12.9697 -4.20996 26.6006 -6.91016 40.9502 -6.91016s27.9805 2.7002 40.9404 6.91016c2.2793 0.740234 4.66992 1.08984 7.05957 1.08984zM160 128c-53.0195 0 -96 42.9805 -96 96s42.9805 96 96 96s96 -42.9805 96 -96s-42.9805 -96 -96 -96zM592 448\nc26.4697 0 48 -22.25 48 -49.5898v-316.82c0 -27.3398 -21.5303 -49.5898 -48 -49.5898h-244.55c-6.57031 25.2695 -20.5898 47.3096 -39.6904 64h76.2402v64h128v-64h64v288h-352v-49.7998c-18.9004 11.0195 -40.5801 17.7998 -64 17.7998v46.4102\nc0 27.3398 21.5303 49.5898 48 49.5898h384z\" />\n    <glyph glyph-name=\"church\" unicode=\"&#xf51d;\" horiz-adv-x=\"640\" \nd=\"M464.46 201.32c9.63965 -5.78027 15.54 -16.2002 15.54 -27.4404v-237.88h-96v96c0 35.3496 -28.6504 64 -64 64s-64 -28.6504 -64 -64v-96h-96v237.88c0 10.0029 6.96191 22.2959 15.54 27.4404l112.46 67.4795v51.2002h-48c-8.83984 0 -16 7.16016 -16 16v32\nc0 8.83984 7.16016 16 16 16h48v48c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-48h48c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-48v-51.2002zM0 52.04c0.00195312 11.6455 8.68945 24.8252 19.3896 29.4199l108.61 46.54\nv-192h-112c-8.83984 0 -16 7.16016 -16 16v100.04zM620.61 81.46c11.7598 -5.0498 19.3896 -16.6201 19.3896 -29.4199v-100.04c0 -8.83984 -7.16016 -16 -16 -16h-112v192z\" />\n    <glyph glyph-name=\"coins\" unicode=\"&#xf51e;\" \nd=\"M0 42.7002c41.2998 -29.1006 116.8 -42.7002 192 -42.7002s150.7 13.5996 192 42.7002v-42.7002c0 -35.2998 -86 -64 -192 -64s-192 28.7002 -192 64v42.7002zM320 320c-106 0 -192 28.7002 -192 64s86 64 192 64s192 -28.7002 192 -64s-86 -64 -192 -64zM0 147.6\nc41.2998 -34 116.9 -51.5996 192 -51.5996s150.7 17.5996 192 51.5996v-51.5996c0 -35.2998 -86 -64 -192 -64s-192 28.7002 -192 64v51.5996zM416 136.6v63.6006c38.7002 6.89941 72.7998 18.0996 96 34.5v-42.7002c0 -23.7002 -38.7002 -44.2998 -96 -55.4004zM192 288\nc106 0 192 -35.7998 192 -80s-86 -80 -192 -80s-192 35.7998 -192 80s86 80 192 80zM411.3 231.7c-8.7998 23.7002 -30.5 42.8994 -60 57.2002c64.2002 3.19922 125.2 16.6992 160.7 41.7998v-42.7002c0 -24.2998 -40.7002 -45.5 -100.7 -56.2998z\" />\n    <glyph glyph-name=\"compact-disc\" unicode=\"&#xf51f;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM88 192c0 88.2002 71.7998 160 160 160v32c-105.9 0 -192 -86.0996 -192 -192h32zM248 96c53 0 96 43 96 96s-43 96 -96 96s-96 -43 -96 -96s43 -96 96 -96zM248 224\nc17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32z\" />\n    <glyph glyph-name=\"crow\" unicode=\"&#xf520;\" horiz-adv-x=\"640\" \nd=\"M544 416c53.0195 0 96 -28.6504 96 -64l-96 -16v-80c0 -87.2598 -58.2598 -160.8 -137.97 -184.14l41.2393 -111.53c2.27051 -6.23047 -0.939453 -13.1104 -7.16992 -15.3799l-22.5498 -8.20996c-6.22949 -2.27051 -13.1094 0.939453 -15.3799 7.16992l-44.5098 120.38\nc-1.90039 -0.0595703 -3.75 -0.290039 -5.66016 -0.290039h-39.0596l38.3291 -103.68c2.27051 -6.23047 -0.939453 -13.1104 -7.16992 -15.3799l-22.5498 -8.20996c-6.22949 -2.27051 -13.1094 0.939453 -15.3799 7.16992l-44.4102 120.1h-96.4902l-121.539 -60.7695\nc-20.0908 -10.04 -43.7305 4.56934 -43.7305 27.0293c0.00195312 8.33984 5.41797 19.168 12.0898 24.1699l371.91 292.59v20.9805c0 44.1797 35.8203 80 80 80c26.0898 0 49.04 -12.6797 63.6396 -32h16.3604zM464 344c13.25 0 24 10.75 24 24c0 13.2598 -10.75 24 -24 24\ns-24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24z\" />\n    <glyph glyph-name=\"crown\" unicode=\"&#xf521;\" horiz-adv-x=\"640\" \nd=\"M528 0c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-416c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h416zM592 320c26.5 0 48 -21.5 48 -48s-21.5 -48 -48 -48c-2.59961 0 -5.2002 0.400391 -7.7002 0.799805l-72.2998 -192.8h-384\nl-72.2998 192.8c-2.5 -0.399414 -5.10059 -0.799805 -7.7002 -0.799805c-26.5 0 -48 21.5 -48 48s21.5996 48 48.0996 48s48 -21.5 48 -48c0 -7.09961 -1.69922 -13.7998 -4.39941 -19.7998l72.2998 -43.4004c15.2998 -9.2002 35.2998 -4 44.2002 11.6006l81.5 142.6\nc-10.7002 8.7998 -17.7002 22 -17.7002 37c0 26.5 21.5 48 48 48s48 -21.5 48 -48c0 -15 -7 -28.2002 -17.7002 -37l81.5 -142.6c8.90039 -15.6006 28.7998 -20.8008 44.2002 -11.6006l72.4004 43.4004c-2.80078 6.09961 -4.40039 12.7002 -4.40039 19.7998\nc0 26.5 21.5 48 48 48z\" />\n    <glyph glyph-name=\"dice\" unicode=\"&#xf522;\" horiz-adv-x=\"640\" \nd=\"M592 256c26.5098 0 48 -21.4902 48 -48v-224c0 -26.5098 -21.4902 -48 -48 -48h-224c-26.5098 0 -48 21.4902 -48 48v46.4199l136.26 136.26c24.1201 24.1201 29.6904 59.7305 17 89.3203h118.74zM480 72c13.25 0 24 10.75 24 24c0 13.2598 -10.75 24 -24 24\ns-24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24zM433.63 258.7c19.1602 -19.1602 19.1602 -50.2305 0 -69.4004l-174.939 -174.93c-19.1602 -19.1602 -50.2305 -19.1602 -69.3906 0l-174.93 174.939c-19.1602 19.1602 -19.1602 50.2305 0 69.3906l174.939 174.93\nc19.1602 19.1602 50.2305 19.1602 69.3906 0zM96 200c13.25 0 24 10.75 24 24c0 13.2598 -10.75 24 -24 24s-24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24zM224 72c13.25 0 24 10.75 24 24c0 13.2598 -10.75 24 -24 24s-24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24z\nM224 200c13.25 0 24 10.75 24 24c0 13.2598 -10.75 24 -24 24s-24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24zM224 328c13.25 0 24 10.75 24 24c0 13.2598 -10.75 24 -24 24s-24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24zM352 200c13.25 0 24 10.75 24 24\nc0 13.2598 -10.75 24 -24 24s-24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24z\" />\n    <glyph glyph-name=\"dice-five\" unicode=\"&#xf523;\" horiz-adv-x=\"448\" \nd=\"M384 416c35.3496 0 64 -28.6504 64 -64v-320c0 -35.3496 -28.6504 -64 -64 -64h-320c-35.3496 0 -64 28.6504 -64 64v320c0 35.3496 28.6504 64 64 64h320zM128 64c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM128 256\nc17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM224 160c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM320 64c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32\ns-32 -14.3301 -32 -32s14.3301 -32 32 -32zM320 256c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z\" />\n    <glyph glyph-name=\"dice-four\" unicode=\"&#xf524;\" horiz-adv-x=\"448\" \nd=\"M384 416c35.3496 0 64 -28.6504 64 -64v-320c0 -35.3496 -28.6504 -64 -64 -64h-320c-35.3496 0 -64 28.6504 -64 64v320c0 35.3496 28.6504 64 64 64h320zM128 64c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM128 256\nc17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM320 64c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM320 256c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32\ns-32 -14.3301 -32 -32s14.3301 -32 32 -32z\" />\n    <glyph glyph-name=\"dice-one\" unicode=\"&#xf525;\" horiz-adv-x=\"448\" \nd=\"M384 416c35.3496 0 64 -28.6504 64 -64v-320c0 -35.3496 -28.6504 -64 -64 -64h-320c-35.3496 0 -64 28.6504 -64 64v320c0 35.3496 28.6504 64 64 64h320zM224 160c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z\" />\n    <glyph glyph-name=\"dice-six\" unicode=\"&#xf526;\" horiz-adv-x=\"448\" \nd=\"M384 416c35.3496 0 64 -28.6504 64 -64v-320c0 -35.3496 -28.6504 -64 -64 -64h-320c-35.3496 0 -64 28.6504 -64 64v320c0 35.3496 28.6504 64 64 64h320zM128 64c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM128 160\nc17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM128 256c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM320 64c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32\ns-32 -14.3301 -32 -32s14.3301 -32 32 -32zM320 160c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM320 256c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z\" />\n    <glyph glyph-name=\"dice-three\" unicode=\"&#xf527;\" horiz-adv-x=\"448\" \nd=\"M384 416c35.3496 0 64 -28.6504 64 -64v-320c0 -35.3496 -28.6504 -64 -64 -64h-320c-35.3496 0 -64 28.6504 -64 64v320c0 35.3496 28.6504 64 64 64h320zM128 256c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM224 160\nc17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM320 64c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z\" />\n    <glyph glyph-name=\"dice-two\" unicode=\"&#xf528;\" horiz-adv-x=\"448\" \nd=\"M384 416c35.3496 0 64 -28.6504 64 -64v-320c0 -35.3496 -28.6504 -64 -64 -64h-320c-35.3496 0 -64 28.6504 -64 64v320c0 35.3496 28.6504 64 64 64h320zM128 256c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM320 64\nc17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z\" />\n    <glyph glyph-name=\"divide\" unicode=\"&#xf529;\" horiz-adv-x=\"448\" \nd=\"M224 96c35.3496 0 64 -28.6504 64 -64s-28.6504 -64 -64 -64s-64 28.6504 -64 64s28.6504 64 64 64zM224 288c-35.3496 0 -64 28.6504 -64 64s28.6504 64 64 64s64 -28.6504 64 -64s-28.6504 -64 -64 -64zM416 240c17.6699 0 32 -14.3301 32 -32v-32\nc0 -17.6699 -14.3301 -32 -32 -32h-384c-17.6699 0 -32 14.3301 -32 32v32c0 17.6699 14.3301 32 32 32h384z\" />\n    <glyph glyph-name=\"door-closed\" unicode=\"&#xf52a;\" horiz-adv-x=\"640\" \nd=\"M624 0c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-608c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h111.99v397.2c0 28.0195 21.5293 50.7998 48 50.7998h288.01c26.4697 0 48 -22.7803 48 -50.7998v-397.2h112zM415.99 160\nc17.6797 0 32.0098 14.3301 32 32c0 17.6699 -14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z\" />\n    <glyph glyph-name=\"door-open\" unicode=\"&#xf52b;\" horiz-adv-x=\"640\" \nd=\"M624 0c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-144v384h-96v64h112c26.4697 0 48 -22.1904 48 -49.4502v-334.55h80zM312.24 446.99c20.2002 5.24023 39.7598 -10.5898 39.7598 -32.1699v-478.82h-336c-8.83984 0 -16 7.16016 -16 16v32\nc0 8.83984 7.16016 16 16 16h80v365.08c0 15.2197 9.99023 28.4795 24.2402 32.1699zM264 160c13.25 0 24 14.3301 24 32s-10.75 32 -24 32s-24 -14.3301 -24 -32s10.75 -32 24 -32z\" />\n    <glyph glyph-name=\"equals\" unicode=\"&#xf52c;\" horiz-adv-x=\"448\" \nd=\"M416 144c17.6699 0 32 -14.3301 32 -32v-32c0 -17.6699 -14.3301 -32 -32 -32h-384c-17.6699 0 -32 14.3301 -32 32v32c0 17.6699 14.3301 32 32 32h384zM416 336c17.6699 0 32 -14.3301 32 -32v-32c0 -17.6699 -14.3301 -32 -32 -32h-384c-17.6699 0 -32 14.3301 -32 32\nv32c0 17.6699 14.3301 32 32 32h384z\" />\n    <glyph glyph-name=\"feather\" unicode=\"&#xf52d;\" \nd=\"M467.14 403.16c50.5703 -50.5205 61.7002 -124.9 16.2607 -199.36l-131.54 -43.7998h97.7793c-9.92969 -10.6797 3.68066 3.07031 -46.3096 -46.8604l-147.57 -49.1396h98.1904c-74.9502 -73.1104 -194.53 -70.6504 -246.83 -54.9404l-66.1006 -66.0293\nc-9.37988 -9.37012 -24.5996 -9.37012 -33.9795 0s-9.37988 24.5693 0 33.9395l259.52 259.25c6.25 6.25 6.25 16.3799 0 22.6299s-16.3896 6.25 -22.6494 0l-178.44 -178.25c-6.75 60.3408 3.18066 150.78 63.6406 211.17c24.7695 24.7402 7.13965 7.14062 85.75 85.6602\nc90.6094 90.5107 189.729 88.21 252.279 25.7305z\" />\n    <glyph glyph-name=\"frog\" unicode=\"&#xf52e;\" horiz-adv-x=\"576\" \nd=\"M446.53 350.57c0 0 58.4297 -19.0605 98.9893 -41.2803c18.7607 -10.2803 30.4805 -29.8301 30.4805 -51.2305v-0.00292969c0 -18.8037 -13.3105 -41.5283 -29.71 -50.7266l-154.44 -86.6504l98.5205 -104.68h53.6299c17.6699 0 32 -14.3301 32 -32\nc0 -8.83984 -7.16016 -16 -16 -16h-90.3799l-118.53 125.94c5.07031 54.1494 -29.9297 85.0596 -40.7998 93.21c-36.8496 27.6191 -88.29 27.6592 -125.13 0l-34.7803 -26.0908c-7.07031 -5.2998 -8.49023 -15.3291 -3.18945 -22.4092\nc5.31934 -7.10059 15.3496 -8.5 22.4092 -3.19043l32.7607 24.5898c20.6895 15.5303 48.3496 20.8105 72.2393 10.8799c44.0605 -18.3193 57.8506 -70.3701 33.71 -106.6l-35.7998 -48.3301h79.4902c17.6699 0 32 -14.3301 32 -32c0 -8.83984 -7.16016 -16 -16 -16h-304\nc-34.9199 0 -63.8896 28.0996 -64 63.0195c-0.5 166.86 126.75 304.021 289.46 319.44c6.82031 37.25 39.3096 65.54 78.54 65.54c39.1904 0 71.6699 -28.2305 78.5303 -65.4297zM368 312c13.25 0 24 10.75 24 24c0 13.2598 -10.75 24 -24 24\nc-13.2598 0 -24 -10.7402 -24 -24c0 -13.25 10.7402 -24 24 -24z\" />\n    <glyph glyph-name=\"gas-pump\" unicode=\"&#xf52f;\" \nd=\"M336 0c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-320c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h320zM493.2 340.7c12 -12 18.7998 -28.2998 18.7998 -45.2998v-223.4c0 -42.2002 -36.5 -76 -79.5 -71.7002\nc-37.5 3.90039 -64.5 38.2002 -64.5 75.9004v27.7998c0 22.0996 -17.9004 40 -40 40h-8v-112h-288v352c0 35.2998 28.7002 64 64 64h160c35.2998 0 64 -28.7002 64 -64v-192h8c48.5996 0 88 -39.4004 88 -88v-32c0 -13.2002 10.7998 -24 24 -24s24 10.7998 24 24v160.8\nc-27.0996 3.90039 -48 27.1006 -48 55.2002v62.0996l-37.7002 37.7002c-6.2002 6.2002 -6.2002 16.4004 0 22.6006l11.2998 11.2998c6.2002 6.2002 16.4004 6.2002 22.6006 0zM256 256v128h-160v-128h160z\" />\n    <glyph glyph-name=\"glasses\" unicode=\"&#xf530;\" horiz-adv-x=\"576\" \nd=\"M574.1 167.63c1.26074 -5.07031 1.90039 -10.2695 1.90039 -15.5v-70.25c0 -62.8896 -51.5801 -113.88 -115.2 -113.88h-37.1201c-60.2793 0 -110.37 45.9404 -114.87 105.37l-2.92969 38.6299h-35.75l-2.92969 -38.6299\nc-4.50977 -59.4297 -54.6006 -105.37 -114.88 -105.37h-37.1201c-63.6201 0 -115.2 50.9902 -115.2 113.89v70.25c0.000976562 4.33984 0.852539 11.2793 1.90039 15.4902l45.3398 181.73c5.91016 23.6895 21.5898 44.0293 43 55.7998\nc21.4395 11.7402 46.9697 14.1094 70.1895 6.33008l15.25 -5.08008c8.39062 -2.79004 12.9199 -11.8604 10.1201 -20.2402l-5.05957 -15.1797c-2.79004 -8.37988 -11.8506 -12.9102 -20.2305 -10.1201l-13.1699 4.38965\nc-10.8701 3.62012 -22.9902 3.57031 -33.1494 -1.72949c-10.29 -5.36035 -17.5908 -14.5605 -20.3809 -25.8105l-38.46 -153.83c22.1904 6.81055 49.79 12.46 81.21 12.46c34.7803 0 73.9902 -7.00977 114.86 -26.75h73.1797\nc40.8701 19.7207 80.0801 26.7402 114.851 26.7402c31.4102 0 59.0098 -5.64941 81.2002 -12.46l-38.46 153.82c-2.80078 11.2598 -10.0801 20.4502 -20.3701 25.8193c-10.1602 5.30078 -22.29 5.35059 -33.1602 1.73047l-13.1797 -4.38965\nc-8.38086 -2.79004 -17.4404 1.73926 -20.2305 10.1201l-5.05957 15.1797c-2.80078 8.37988 1.72949 17.4502 10.1191 20.2402l15.25 5.08008c23.2207 7.7793 48.75 5.39941 70.1904 -6.33008c21.4102 -11.7607 37.0898 -32.1104 43 -55.8105zM203.38 78.21l3.12988 41.2197\nc-22.6699 8.58984 -46.0693 12.9199 -69.9297 12.9199c-29.1602 0 -54.46 -6.42969 -72.5801 -12.9199v-37.54c0 -27.5098 22.9697 -49.8896 51.2002 -49.8896h37.1201c26.6602 0 49.0898 20.2998 51.0596 46.21zM512 81.8799l-0.00976562 37.54\nc-18.1201 6.49023 -43.4307 12.9297 -72.5498 12.9297c-23.8701 0 -47.2803 -4.33008 -69.9502 -12.9199l3.12988 -41.2197c1.95996 -25.9102 24.3896 -46.21 51.0596 -46.21h37.1201c28.2305 0 51.2002 22.3701 51.2002 49.8799z\" />\n    <glyph glyph-name=\"greater-than\" unicode=\"&#xf531;\" horiz-adv-x=\"384\" \nd=\"M365.52 238.15c11.2803 -5.25 18.4805 -16.5605 18.4902 -29.0107v-34.2295c-0.00195312 -11.2529 -8.28027 -24.2451 -18.4795 -29l-306.471 -142.91c-16.0195 -7.46973 -35.0596 -0.540039 -42.5293 15.4805l-13.5205 29\nc-7.46973 16.0195 -0.540039 35.0596 15.4805 42.5293l218.47 101.891l-218.43 101.85c-16.0605 7.49023 -23.0107 26.5801 -15.5205 42.6396l13.5703 29.0801c7.49023 16.0605 26.5801 23.0107 42.6396 15.5205z\" />\n    <glyph glyph-name=\"greater-than-equal\" unicode=\"&#xf532;\" horiz-adv-x=\"448\" \nd=\"M55.2197 340.31c-18.29 6 -27.7393 24.2607 -21.0996 40.79l12.0303 29.9199c6.63965 16.5303 26.8594 25.0605 45.1494 19.0605l301.72 -119.98c13.7705 -4.51953 22.9805 -16.6094 22.9805 -30.1699v-15.96c0 -13.5596 -9.20996 -25.6494 -22.9805 -30.1699\nl-301.409 -119.859c-18.3906 -6.04004 -38.7002 2.54004 -45.3799 19.1494l-12.0908 30.0801c-6.67969 16.6104 2.81055 34.9697 21.2002 41l175.44 68.0498zM424 48c13.25 0 24 -10.7402 24 -24v-48c0 -13.25 -10.75 -24 -24 -24h-400c-13.25 0 -24 10.75 -24 24v48\nc0 13.2598 10.75 24 24 24h400z\" />\n    <glyph glyph-name=\"helicopter\" unicode=\"&#xf533;\" horiz-adv-x=\"640\" \nd=\"M304 64c-8.83105 0 -20.3018 5.73438 -25.5996 12.7998l-86.4004 115.2l-160 64l-31.5098 108.12c-2.53027 10.0996 5.10938 19.8799 15.5195 19.8799h39.9902c5.03027 0 9.78027 -2.37012 12.7998 -6.40039l43.2002 -57.5996h208v64h-176c-8.83984 0 -16 7.16016 -16 16\nv32c0 8.83984 7.16016 16 16 16h416c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-176v-64c123.71 0 224 -100.29 224 -224c0 -17.6699 -14.3301 -32 -32 -32h-272zM416 252.49v-124.49h124.79c-12.7598 62.5596 -62.2402 111.7 -124.79 124.49z\nM635.37 -10.8096c6.58984 -6.61035 6.04004 -17.5205 -0.980469 -23.6602c-33.1494 -29.0498 -53.5693 -29.5205 -68.4492 -29.5205h-325.94c-8.83984 0 -16 7.18066 -16 16.0303v32.0596c0 8.85059 7.16016 16.0303 16 16.0303h325.94\nc10.7998 0 17.5498 4.48047 24.6396 11.25c6.40039 6.11035 16.3896 6.27051 22.6396 0.00976562z\" />\n    <glyph glyph-name=\"infinity\" unicode=\"&#xf534;\" horiz-adv-x=\"640\" \nd=\"M471.1 352c93.1006 0 168.9 -71.7998 168.9 -160s-75.7998 -160 -168.9 -160c-66.0996 0 -117.8 41.2998 -151.1 78.5996c-33.2998 -37.2998 -85 -78.5996 -151.1 -78.5996c-93.1006 0 -168.9 71.7998 -168.9 160s75.7998 160 168.9 160\nc66.0996 0 117.8 -41.2998 151.1 -78.5996c33.2998 37.2998 85 78.5996 151.1 78.5996zM168.9 128c38.0996 0 73.5996 36.4004 94 64c-20.6006 27.9004 -55.8008 64 -94 64c-40.2002 0 -72.9004 -28.7002 -72.9004 -64s32.7002 -64 72.9004 -64zM471.1 128\nc40.2002 0 72.9004 28.7002 72.9004 64s-32.7002 64 -72.9004 64c-38.0996 0 -73.5996 -36.4004 -94 -64c20.6006 -27.9004 55.8008 -64 94 -64z\" />\n    <glyph glyph-name=\"kiwi-bird\" unicode=\"&#xf535;\" horiz-adv-x=\"576\" \nd=\"M575.81 230.02c0.300781 -5.7793 0.160156 -246.02 0.160156 -246.02c0 -7.30957 -4.95996 -13.7002 -12.0498 -15.5c-1.30957 -0.339844 -2.63965 -0.5 -3.9502 -0.5c-5.75 0 -11.1895 3.11035 -14.0498 8.33984l-74.4102 136.44\nc-7.04004 -0.470703 2.43066 -0.780273 -23.0498 -0.780273c-54.5996 0 -106.39 -19.25 -152.13 -49.0596c-12.46 -8.12012 -26.0996 -14.4502 -40.3398 -19.5107v-59.4297c0 -8.83984 -7.16016 -16 -16 -16h-16c-8.83984 0 -16 7.16016 -16 16v49.1797\nc-5.32031 -0.449219 -10.5605 -1.17969 -16 -1.17969c-16.6006 0 -32.6406 2.2998 -48 6.25977v-54.2598c0 -8.83984 -7.16016 -16 -16 -16h-16c-8.83984 0 -16 7.16016 -16 16v73.9902c-57.3105 33.21 -95.9502 95.0596 -95.9902 166.01\nc-0.0800781 145.76 129.3 182.88 147.31 186.94c57.1709 12.9199 111.221 0.259766 153.21 -28.7002c43.4902 -29.9902 94.9209 -46.2402 147.74 -46.2402h9.37012c60.6504 0 115.01 -45.4102 118.18 -105.98zM463.97 200c13.25 0 24 10.75 24 24\nc0 13.2598 -10.75 24 -24 24s-24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24zM543.97 46.75v99.0596c-11.1299 -11.3799 -24.7393 -20.1494 -39.8594 -25.9795z\" />\n    <glyph glyph-name=\"less-than\" unicode=\"&#xf536;\" horiz-adv-x=\"384\" \nd=\"M365.46 90.2598c16.0703 -7.49023 23.0205 -26.5801 15.5303 -42.6396l-13.5605 -29.0801c-7.48926 -16.0596 -26.5801 -23.0098 -42.6396 -15.5205l-306.31 142.83c-11.2705 5.25 -18.4805 16.5605 -18.4805 29v34.2402c0.00488281 11.252 8.2832 24.2432 18.4805 29\nl306.46 142.91c16.0195 7.46973 35.0596 0.540039 42.5293 -15.4805l13.5205 -29c7.46973 -16.0195 0.540039 -35.0596 -15.4805 -42.5293l-218.47 -101.88z\" />\n    <glyph glyph-name=\"less-than-equal\" unicode=\"&#xf537;\" horiz-adv-x=\"448\" \nd=\"M54.9805 233.8c-13.7705 4.52051 -22.9805 16.6104 -22.9805 30.1699v15.96c0 13.5703 9.20996 25.6602 22.9805 30.1807l301.71 119.96c18.29 6 38.5098 -2.53027 45.1494 -19.0605l12.0303 -29.9199c6.63965 -16.5195 -2.81055 -34.79 -21.1006 -40.79\nl-175.56 -68.0898l175.44 -68.0498c18.3896 -6.03027 27.8896 -24.3906 21.21 -41l-12.0908 -30.0801c-6.66992 -16.6104 -26.9893 -25.1797 -45.3799 -19.1504zM424 48c13.25 0 24 -10.7402 24 -24v-48c0 -13.25 -10.75 -24 -24 -24h-400c-13.25 0 -24 10.75 -24 24v48\nc0 13.2598 10.75 24 24 24h400z\" />\n    <glyph glyph-name=\"memory\" unicode=\"&#xf538;\" horiz-adv-x=\"640\" \nd=\"M640 317.06c-18.5996 -6.60938 -32 -24.1895 -32 -45.0596s13.4004 -38.4502 32 -45.0596v-98.9404h-640v98.9404c18.5996 6.60938 32 24.1895 32 45.0596s-13.4004 38.4502 -32 45.0596v34.9404c0 17.6699 14.3301 32 32 32h576c17.6699 0 32 -14.3301 32 -32v-34.9404z\nM224 192v128h-64v-128h64zM352 192v128h-64v-128h64zM480 192v128h-64v-128h64zM0 0v96h640v-96h-64v26.6699c0 8.83984 -7.16016 16 -16 16s-16 -7.16016 -16 -16v-26.6699h-128v26.6699c0 8.83984 -7.16016 16 -16 16s-16 -7.16016 -16 -16v-26.6699h-128v26.6699\nc0 8.83984 -7.16016 16 -16 16s-16 -7.16016 -16 -16v-26.6699h-128v26.6699c0 8.83984 -7.16016 16 -16 16s-16 -7.16016 -16 -16v-26.6699h-64z\" />\n    <glyph glyph-name=\"microphone-alt-slash\" unicode=\"&#xf539;\" horiz-adv-x=\"640\" \nd=\"M633.82 -10.0996c6.97949 -5.43066 8.22949 -15.4805 2.81934 -22.4502l-19.6396 -25.2705c-5.42969 -6.97949 -15.4805 -8.23926 -22.46 -2.80957l-588.36 454.729c-6.97949 5.43066 -8.22949 15.4805 -2.80957 22.4502l19.6396 25.2705\nc5.41992 6.97949 15.4805 8.22949 22.46 2.80957l178.53 -138v45.3604c0 53.0195 42.9805 96 96 96s96 -42.9805 96 -96h-85.3301c-5.88965 0 -10.6699 -3.58008 -10.6699 -8v-16c0 -4.41992 4.78027 -8 10.6699 -8h85.3301v-32h-85.3301\nc-5.88965 0 -10.6699 -3.58008 -10.6699 -8v-16c0 -4.41992 4.78027 -8 10.6699 -8h85.3301v-32h-85.0596l41.3994 -32h43.6699c0 -10.4502 -2.17969 -20.2705 -5.2793 -29.6699l26.5498 -20.5205c6.75977 15.4004 10.7197 32.2803 10.7197 50.2002v48\nc0 8.83984 7.16016 16 16 16h16c8.83984 0 16 -7.16016 16 -16v-48c0 -28.9805 -7.25977 -56.21 -19.7402 -80.3301zM400 -16c8.83984 0 16 -7.16016 16 -16v-16c0 -8.83984 -7.16016 -16 -16 -16h-160c-8.83984 0 -16 7.16016 -16 16v16c0 8.83984 7.16016 16 16 16h56\nv34.1504c-88.0303 12.1396 -152 92.0498 -152 181.689v6.85059l52.0303 -40.2207c12.4395 -53.2197 55.3301 -96.3994 111.18 -101.85c6.94043 -0.669922 13.6396 -0.200195 20.3496 0.200195l50.4004 -38.96c-10.8604 -3.80078 -22.25 -6.45996 -33.96 -8.08008v-33.7803\nh56z\" />\n    <glyph glyph-name=\"money-bill-wave\" unicode=\"&#xf53a;\" horiz-adv-x=\"640\" \nd=\"M621.16 393.54c11.6094 -4.87012 18.8398 -16.8301 18.8496 -29.4697v-317.25c0 -18.4902 -15.04 -31.8105 -32.25 -31.8105c-3.39941 0 -6.87988 0.520508 -10.3496 1.62012c-30.8906 9.7998 -61.7598 13.7197 -92.6504 13.7197\nc-123.17 0 -246.34 -62.3496 -369.51 -62.3496c-38.7998 0 -77.6201 6.19043 -116.41 22.4697c-11.6094 4.86035 -18.8398 16.8301 -18.8398 29.46v317.261c0 18.4893 15.04 31.8096 32.25 31.8096c3.40039 0 6.87988 -0.519531 10.3496 -1.62012\nc30.8906 -9.7998 61.7607 -13.7197 92.6504 -13.7197c123.17 0 246.33 62.3496 369.5 62.3398c38.7998 0 77.6201 -6.19043 116.41 -22.46zM48 315.78v-60.4707c31 0 56.8398 22.1504 62.7197 51.54c-21.5996 1.36035 -42.5996 3.89062 -62.7197 8.93066zM48 30.7803\nc20.1201 -7.31055 41.1797 -11.8105 63.71 -13.6201c-1.53027 34.1299 -29.3398 61.3994 -63.71 61.3994v-47.7793zM320 96c44.1699 0 80 42.9697 80 96c0 53.0195 -35.8203 96 -80 96s-80 -42.9805 -80 -96c0 -53.0098 35.8096 -96 80 -96zM592 68.2197v57.7207\nc-26.8203 -3.40039 -48.4502 -23.2002 -54.3203 -49.2803c18.6104 -1.58984 36.8008 -4.0498 54.3203 -8.44043zM592 304.33v48.8896c-17.7197 6.43066 -36.2695 10.4902 -55.8096 12.6602c0.949219 -31.8496 24.9199 -57.6396 55.8096 -61.5498z\" />\n    <glyph glyph-name=\"money-bill-wave-alt\" unicode=\"&#xf53b;\" horiz-adv-x=\"640\" \nd=\"M621.16 393.54c11.6094 -4.87012 18.8398 -16.8301 18.8496 -29.4697v-317.25c0 -18.4902 -15.04 -31.8105 -32.25 -31.8105c-3.39941 0 -6.87988 0.520508 -10.3496 1.62012c-30.8906 9.7998 -61.7598 13.7197 -92.6504 13.7197\nc-123.17 0 -246.34 -62.3496 -369.51 -62.3496c-38.7998 0 -77.6201 6.19043 -116.41 22.4697c-11.6094 4.86035 -18.8398 16.8301 -18.8398 29.46v317.261c0 18.4893 15.04 31.8096 32.25 31.8096c3.40039 0 6.87988 -0.519531 10.3496 -1.62012\nc30.8906 -9.7998 61.7607 -13.7197 92.6504 -13.7197c123.17 0 246.33 62.3496 369.5 62.3398c38.7998 0 77.6201 -6.19043 116.41 -22.46zM320 96c44.1699 0 80 42.9697 80 96c0 53.0195 -35.8203 96 -80 96s-80 -42.9805 -80 -96c0 -53.0098 35.8096 -96 80 -96z\" />\n    <glyph glyph-name=\"money-check\" unicode=\"&#xf53c;\" horiz-adv-x=\"640\" \nd=\"M0 0v320h640v-320c0 -17.6699 -14.3301 -32 -32 -32h-576c-17.6699 0 -32 14.3301 -32 32zM448 208v-32c0 -8.83984 7.16016 -16 16 -16h96c8.83984 0 16 7.16016 16 16v32c0 8.83984 -7.16016 16 -16 16h-96c-8.83984 0 -16 -7.16016 -16 -16zM448 88v-16\nc0 -4.41992 3.58008 -8 8 -8h112c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-112c-4.41992 0 -8 -3.58008 -8 -8zM64 184v-16c0 -4.41992 3.58008 -8 8 -8h304c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-304c-4.41992 0 -8 -3.58008 -8 -8z\nM64 88v-16c0 -4.41992 3.58008 -8 8 -8h176c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-176c-4.41992 0 -8 -3.58008 -8 -8zM624 416c8.83984 0 16 -7.16016 16 -16v-48h-640v48c0 8.83984 7.16016 16 16 16h608z\" />\n    <glyph glyph-name=\"money-check-alt\" unicode=\"&#xf53d;\" horiz-adv-x=\"640\" \nd=\"M608 416c17.6699 0 32 -14.3301 32 -32v-384c0 -17.6699 -14.3301 -32 -32 -32h-576c-17.6699 0 -32 14.3301 -32 32v384c0 17.6699 14.3301 32 32 32h576zM176 120.12c23.6201 0.629883 42.6699 20.54 42.6699 45.0703c0 19.9697 -12.9902 37.8096 -31.5801 43.3896\nl-45 13.5c-5.16016 1.54004 -8.76953 6.78027 -8.76953 12.7295c0 7.27051 5.2998 13.1904 11.7998 13.1904h28.1104c4.55957 0 8.94922 -1.29004 12.8193 -3.71973c3.24023 -2.03027 7.36035 -1.91016 10.1299 0.729492l11.75 11.21\nc3.53027 3.37012 3.33008 9.20996 -0.569336 12.1406c-9.10059 6.83984 -20.0801 10.7695 -31.3701 11.3496v16.29c0 4.41992 -3.58008 8 -8 8h-16c-4.41992 0 -8 -3.58008 -8 -8v-16.1201c-23.6201 -0.629883 -42.6699 -20.5498 -42.6699 -45.0703\nc0 -19.9697 12.9893 -37.8096 31.5801 -43.3896l45 -13.5c5.15918 -1.54004 8.76953 -6.78027 8.76953 -12.7295c0 -7.27051 -5.2998 -13.1904 -11.7998 -13.1904h-28.1104c-4.55957 0 -8.9502 1.2998 -12.8193 3.71973\nc-3.24023 2.03027 -7.36035 1.91016 -10.1309 -0.729492l-11.75 -11.21c-3.5293 -3.37012 -3.3291 -9.20996 0.570312 -12.1406c9.10059 -6.83008 20.0801 -10.7695 31.3701 -11.3496v-16.29c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v16.1201zM416 136v16\nc0 4.41992 -3.58008 8 -8 8h-112c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h112c4.41992 0 8 3.58008 8 8zM576 136v16c0 4.41992 -3.58008 8 -8 8h-80c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h80c4.41992 0 8 3.58008 8 8z\nM576 232v16c0 4.41992 -3.58008 8 -8 8h-272c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h272c4.41992 0 8 3.58008 8 8z\" />\n    <glyph glyph-name=\"not-equal\" unicode=\"&#xf53e;\" horiz-adv-x=\"448\" \nd=\"M416 240h-98.4199l-74.5303 -96h172.95c17.6699 0 32 -14.3301 32 -32v-32c0 -17.6699 -14.3301 -32 -32 -32h-247.48l-82.0898 -105.73c-5.37012 -7.00977 -15.4102 -8.34961 -22.4297 -2.96973l-25.4102 19.46c-7.00977 5.37988 -8.33984 15.4199 -2.96973 22.4307\nl51.8701 66.8096h-55.4902c-17.6699 0 -32 14.3301 -32 32v32c0 17.6699 14.3301 32 32 32h130.03l74.5293 96h-204.56c-17.6699 0 -32 14.3301 -32 32v32c0 17.6699 14.3301 32 32 32h279.09l82.0801 105.73c5.37988 7.00977 15.4199 8.34961 22.4404 2.96973\nl25.4092 -19.46c7.01074 -5.37012 8.34082 -15.4102 2.9707 -22.4307l-51.8701 -66.8096h23.8799c17.6699 0 32 -14.3301 32 -32v-32c0 -17.6699 -14.3301 -32 -32 -32z\" />\n    <glyph glyph-name=\"palette\" unicode=\"&#xf53f;\" \nd=\"M204.3 443c163.8 31.9004 307.2 -92.0996 307.7 -249.7c-0.0996094 -35.7002 -29.0996 -65.2998 -64.9004 -65.2998h-79.6992c-51 0 -84 -53 -60.9004 -98.4004c18.9004 -37.0996 -1.2998 -85.2998 -42.5 -91.6992c-127.1 -19.7002 -295.8 119.699 -258.8 306.699\nc19.5996 99.1006 99.7002 179 199.1 198.4zM96 128c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM128 256c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM256 320\nc17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM384 256c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32z\" />\n    <glyph glyph-name=\"parking\" unicode=\"&#xf540;\" horiz-adv-x=\"448\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM240 128c52.9004 0 96 43.0996 96 96s-43.0996 96 -96 96h-96c-8.7998 0 -16 -7.2002 -16 -16v-224c0 -8.7998 7.2002 -16 16 -16h32\nc8.7998 0 16 7.2002 16 16v48h48zM240 256c17.5996 0 32 -14.4004 32 -32s-14.4004 -32 -32 -32h-48v64h48z\" />\n    <glyph glyph-name=\"percentage\" unicode=\"&#xf541;\" horiz-adv-x=\"384\" \nd=\"M109.25 274.75c-24.9902 -25 -65.5098 -25 -90.5098 0c-24.9902 24.9902 -24.9902 65.5195 0 90.5098s65.5195 24.9902 90.5098 0s24.9902 -65.5195 0 -90.5098zM365.25 109.26c25 -25 25 -65.5195 0 -90.5098c-24.9902 -24.9902 -65.5195 -24.9902 -90.5098 0\ns-24.9902 65.5195 0 90.5098s65.5195 24.9902 90.5098 0zM363.31 340.69c12.5 -12.5 12.5 -32.7607 0 -45.25l-274.75 -274.75c-12.4893 -12.5 -32.75 -12.5 -45.25 0l-22.6191 22.6191c-12.5 12.4902 -12.5 32.75 0 45.25l274.75 274.75c12.4893 12.5 32.75 12.5 45.25 0z\n\" />\n    <glyph glyph-name=\"project-diagram\" unicode=\"&#xf542;\" horiz-adv-x=\"640\" \nd=\"M384 128c17.6699 0 32 -14.3301 32 -32v-128c0 -17.6699 -14.3301 -32 -32 -32h-128c-17.6699 0 -32 14.3301 -32 32v128c0 17.6699 14.3301 32 32 32h128zM192 416v-32h224v-64h-224v-47.5098l64.2803 -112.49h-0.280273c-23.5996 0 -44.0195 -12.9805 -55.1201 -32.04\nl-73.1602 128.04h-95.7197c-17.6699 0 -32 14.3301 -32 32v128c0 17.6699 14.3301 32 32 32h128c17.6699 0 32 -14.3301 32 -32zM608 448c17.6699 0 32 -14.3301 32 -32v-128c0 -17.6699 -14.3301 -32 -32 -32h-128c-17.6699 0 -32 14.3301 -32 32v128\nc0 17.6699 14.3301 32 32 32h128z\" />\n    <glyph glyph-name=\"receipt\" unicode=\"&#xf543;\" horiz-adv-x=\"384\" \nd=\"M358.4 444.8c10.5996 7.90039 25.5996 0.400391 25.5996 -12.7998v-480c0 -13.2002 -15.0996 -20.7002 -25.5996 -12.7998l-38.4004 44.7998l-54.4004 -44.7998c-2.35059 -1.78027 -6.65137 -3.22559 -9.59961 -3.22559s-7.24902 1.44531 -9.59961 3.22559\nl-54.4004 44.7998l-54.4004 -44.7998c-2.35059 -1.78027 -6.65137 -3.22559 -9.59961 -3.22559s-7.24902 1.44531 -9.59961 3.22559l-54.4004 44.7998l-38.4004 -44.7998c-10.5996 -7.90039 -25.5996 -0.400391 -25.5996 12.7998v480c0 13.2002 15 20.7002 25.5996 12.7998\nl38.4004 -44.7998l54.4004 44.7998c2.35059 1.78027 6.65137 3.22559 9.59961 3.22559s7.24902 -1.44531 9.59961 -3.22559l54.4004 -44.7998l54.4004 44.7998c2.35059 1.78027 6.65137 3.22559 9.59961 3.22559s7.24902 -1.44531 9.59961 -3.22559l54.4004 -44.7998z\nM320 88v16c0 4.40039 -3.59961 8 -8 8h-240c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h240c4.40039 0 8 3.59961 8 8zM320 184v16c0 4.40039 -3.59961 8 -8 8h-240c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h240\nc4.40039 0 8 3.59961 8 8zM320 280v16c0 4.40039 -3.59961 8 -8 8h-240c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h240c4.40039 0 8 3.59961 8 8z\" />\n    <glyph glyph-name=\"robot\" unicode=\"&#xf544;\" horiz-adv-x=\"640\" \nd=\"M0 192c0 17.7002 14.2998 32 32 32h32v-192h-32c-17.7002 0 -32 14.2998 -32 32v128zM464 352c44.2002 0 80 -35.7998 80 -80v-272c0 -35.2998 -28.7002 -64 -64 -64h-320c-35.2998 0 -64 28.7002 -64 64v272c0 44.2002 35.7998 80 80 80h112v64\nc0 17.7002 14.2998 32 32 32s32 -14.2998 32 -32v-64h112zM256 32v32h-64v-32h64zM224 152c22.0996 0 40 17.9004 40 40s-17.9004 40 -40 40s-40 -17.9004 -40 -40s17.9004 -40 40 -40zM352 32v32h-64v-32h64zM448 32v32h-64v-32h64zM416 152c22.0996 0 40 17.9004 40 40\ns-17.9004 40 -40 40s-40 -17.9004 -40 -40s17.9004 -40 40 -40zM608 224c17.7002 0 32 -14.2998 32 -32v-128c0 -17.7002 -14.2998 -32 -32 -32h-32v192h32z\" />\n    <glyph glyph-name=\"ruler\" unicode=\"&#xf545;\" horiz-adv-x=\"640\" \nd=\"M635.7 280.8c8.7998 -15 3.59961 -34.2002 -11.6006 -42.7998l-496.8 -281.9c-15.2002 -8.59961 -34.7002 -3.5 -43.5 11.5l-79.5996 135.601c-8.7998 15 -3.5 34.0996 11.7002 42.7998l69 39.0996l59.6992 -101.399c2.2002 -3.7998 7.10059 -5.10059 10.9004 -2.90039\nl13.7998 7.7998c3.7998 2.2002 5.10059 7 2.90039 10.7002l-59.7002 101.7l55.2002 31.2998l27.8994 -47.5c2.2002 -3.7998 7.10059 -5.09961 10.9004 -2.89941l13.7998 7.7998c3.7998 2.2002 5.10059 6.89941 2.90039 10.7002l-27.9004 47.3994l55.2002 31.2998\nl59.7002 -101.699c2.2002 -3.80078 7.09961 -5.10059 10.8994 -2.90039l13.8008 7.7998c3.7998 2.2002 5.09961 7 2.89941 10.7002l-59.7998 101.7l55.2002 31.2998l27.8994 -47.2998c2.2002 -3.7998 7.10059 -5.10059 10.9004 -2.90039l13.7998 7.7998\nc3.7998 2.2002 5.10059 6.90039 2.90039 10.7002l-27.9004 47.4004l55.2002 31.2998l59.7002 -101.6c2.2002 -3.80078 7.09961 -5.10059 10.8994 -2.90039l13.8008 7.7998c3.7998 2.2002 5.09961 6.90039 2.89941 10.7002l-59.7002 101.7l69 39.0996\nc15.2002 8.60059 34.7002 3.5 43.5 -11.5z\" />\n    <glyph glyph-name=\"ruler-combined\" unicode=\"&#xf546;\" \nd=\"M160 160v-41.3799l-158.43 -158.42c-0.660156 2.55957 -1.57031 5.03027 -1.57031 7.7998v448c0 17.6699 14.3301 32 32 32h96c17.6699 0 32 -14.3301 32 -32v-32h-56c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h56v-64h-56\nc-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h56v-64h-56c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h56zM480 96c17.6699 0 32 -14.3301 32 -32v-96c0 -17.6699 -14.3301 -32 -32 -32h-448\nc-2.75977 0 -5.24023 0.910156 -7.7998 1.57031l158.43 158.43h41.3701v-56c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v56h64v-56c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v56h64v-56c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8\nv56h32z\" />\n    <glyph glyph-name=\"ruler-horizontal\" unicode=\"&#xf547;\" horiz-adv-x=\"576\" \nd=\"M544 320c17.6699 0 32 -14.3301 32 -32v-192c0 -17.6699 -14.3301 -32 -32 -32h-512c-17.6699 0 -32 14.3301 -32 32v192c0 17.6699 14.3301 32 32 32h48v-88c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v88h64v-88c0 -4.41992 3.58008 -8 8 -8h16\nc4.41992 0 8 3.58008 8 8v88h64v-88c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v88h64v-88c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v88h64v-88c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v88h48z\" />\n    <glyph glyph-name=\"ruler-vertical\" unicode=\"&#xf548;\" horiz-adv-x=\"256\" \nd=\"M168 32h88v-64c0 -17.6699 -14.3301 -32 -32 -32h-192c-17.6699 0 -32 14.3301 -32 32v448c0 17.6699 14.3301 32 32 32h192c17.6699 0 32 -14.3301 32 -32v-64h-88c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h88v-64h-88\nc-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h88v-64h-88c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h88v-64h-88c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8z\" />\n    <glyph glyph-name=\"school\" unicode=\"&#xf549;\" horiz-adv-x=\"640\" \nd=\"M0 224c0 17.6699 14.3301 32 32 32h64v-320h-80c-8.83984 0 -16 7.16016 -16 16v272zM360 272c4.41992 0 8 -3.58008 8 -8v-16c0 -4.41992 -3.58008 -8 -8 -8h-48c-4.41992 0 -8 3.58008 -8 8v64c0 4.41992 3.58008 8 8 8h16c4.41992 0 8 -3.58008 8 -8v-40h24z\nM497.75 335.96c8.90039 -5.92969 14.25 -15.9297 14.25 -26.6299v-373.33h-128v144c0 8.83984 -7.16016 16 -16 16h-96c-8.83984 0 -16 -7.16016 -16 -16v-144h-128v373.34c0.00195312 9.45117 6.38574 21.377 14.25 26.6201l160 106.67\nc4.4502 2.96484 12.4023 5.37012 17.75 5.37012s13.2998 -2.40527 17.75 -5.37012zM320 192c44.1797 0 80 35.8203 80 80s-35.8203 80 -80 80s-80 -35.8203 -80 -80s35.8203 -80 80 -80zM608 256c17.6699 0 32 -14.3301 32 -32v-272c0 -8.83984 -7.16016 -16 -16 -16h-80\nv320h64z\" />\n    <glyph glyph-name=\"screwdriver\" unicode=\"&#xf54a;\" \nd=\"M448 448l64 -64l-96 -128h-62.0596l-83.0303 -83.0303c-4.25 6.79004 -9.07031 13.2705 -14.8701 19.0703c-5.7998 5.80957 -12.2803 10.6201 -19.0703 14.8701l83.0303 83.0303v62.0596zM128 169.41c29.1104 29.1094 76.2998 29.1094 105.41 0\nc29.1094 -29.1104 29.1094 -76.2998 0 -105.41l-117.08 -117.08c-14.5605 -14.5596 -38.1504 -14.5596 -52.71 0l-52.7002 52.7002c-14.5498 14.5596 -14.5498 38.1602 0 52.71z\" />\n    <glyph glyph-name=\"shoe-prints\" unicode=\"&#xf54b;\" horiz-adv-x=\"640\" \nd=\"M192 288c-35.3496 0 -64 28.6504 -64 64s28.6504 64 64 64h32v-128h-32zM0 32c0 35.3496 28.6504 64 64 64h32v-128h-32c-35.3496 0 -64 28.6504 -64 64zM337.46 160c90.3604 0 174.54 -32 174.54 -96c0 -45.2197 -39.0996 -97.2998 -148.58 -120.82\nc-31.9795 -6.87012 -64.8896 -8.50977 -97.5801 -6.19922c-27.2998 1.92969 -54.0996 7.76953 -80.3096 15.0498l-57.5303 15.9697v128c60.21 0 79.9404 15.6201 104.73 32c28.5693 18.8799 69.8193 32 104.729 32zM491.42 440.81\nc109.48 -23.5098 148.58 -75.5898 148.58 -120.81c0 -64 -84.1797 -96 -174.54 -96c-34.9102 0 -76.1602 13.1201 -104.729 32c-24.79 16.3799 -44.5303 32 -104.73 32v128l57.5303 15.9697c26.21 7.27051 53.0098 13.1104 80.3096 15.04\nc32.6904 2.32031 65.6006 0.669922 97.5801 -6.2002z\" />\n    <glyph glyph-name=\"skull\" unicode=\"&#xf54c;\" \nd=\"M256 448c141.4 0 256 -100.3 256 -224c0 -70.0996 -36.9004 -132.6 -94.5 -173.7c-9.7002 -6.89941 -15.2002 -18.2002 -13.5 -29.8994l9.40039 -66.2002c1.39941 -9.60059 -6 -18.2002 -15.7002 -18.2002h-77.7002v56c0 4.40039 -3.59961 8 -8 8h-16\nc-4.40039 0 -8 -3.59961 -8 -8v-56h-64v56c0 4.40039 -3.59961 8 -8 8h-16c-4.40039 0 -8 -3.59961 -8 -8v-56h-77.7002c-9.7002 0 -17.0996 8.59961 -15.7002 18.2002l9.40039 66.2002c1.7002 11.7998 -3.90039 23 -13.5 29.8994\nc-57.5996 41.1006 -94.5 103.601 -94.5 173.7c0 123.7 114.6 224 256 224zM160 128c35.2998 0 64 28.7002 64 64s-28.7002 64 -64 64s-64 -28.7002 -64 -64s28.7002 -64 64 -64zM352 128c35.2998 0 64 28.7002 64 64s-28.7002 64 -64 64s-64 -28.7002 -64 -64\ns28.7002 -64 64 -64z\" />\n    <glyph glyph-name=\"smoking-ban\" unicode=\"&#xf54d;\" \nd=\"M96 144v64c0 8.7998 7.2002 16 16 16h21.5l96 -96h-117.5c-8.7998 0 -16 7.2002 -16 16zM256 448c141.4 0 256 -114.6 256 -256s-114.6 -256 -256 -256s-256 114.6 -256 256s114.6 256 256 256zM256 0c41.4004 0 79.7002 13.2998 111.1 35.7002l-267.399 267.399\nc-22.4004 -31.3994 -35.7002 -69.6992 -35.7002 -111.1c0 -105.9 86.0996 -192 192 -192zM301.2 192l32 -32h50.7998v32h-82.7998zM412.3 80.9004c22.4004 31.3994 35.7002 69.6992 35.7002 111.1c0 105.9 -86.0996 192 -192 192\nc-41.4004 0 -79.7002 -13.2998 -111.1 -35.7002l124.3 -124.3h130.8c8.7998 0 16 -7.2002 16 -16v-64c0 -8.7998 -7.2002 -16 -16 -16h-34.7998zM320.6 320c32.1006 0 58.7002 -23.7002 63.3008 -54.5996c0.699219 -4.90039 -3 -9.40039 -8 -9.40039h-16.2002\nc-3.7002 0 -7 2.5 -7.7002 6.09961c-2.7998 14.7002 -15.7998 25.9004 -31.4004 25.9004c-32.0996 0 -58.6992 23.7002 -63.2998 54.5996c-0.700195 4.90039 3 9.40039 8 9.40039h16.2002c3.7002 0 7 -2.5 7.7002 -6.09961\nc2.7998 -14.7002 15.7998 -25.9004 31.3994 -25.9004z\" />\n    <glyph glyph-name=\"store\" unicode=\"&#xf54e;\" horiz-adv-x=\"616\" \nd=\"M602 329.4c33.5996 -53.6006 3.7998 -128 -59 -136.4c-4.5 -0.599609 -9 -0.900391 -13.7002 -0.900391c-29.5 0 -55.7002 13 -73.7998 33.1006c-18 -20.1006 -44.2002 -33.1006 -73.7998 -33.1006c-29.5 0 -55.7998 13 -73.7998 33.1006\nc-18 -20.1006 -44.2002 -33.1006 -73.8008 -33.1006c-29.5 0 -55.7998 13 -73.7998 33.1006c-18 -20.1006 -44.2002 -33.1006 -73.7998 -33.1006c-4.59961 0 -9.2002 0.300781 -13.7002 0.900391c-62.5996 8.5 -92.2998 82.9004 -58.7998 136.4l64.9004 103.6\nc5.7998 9.2998 16.0996 15 27.0996 15h404c11 0 21.2998 -5.7002 27.0996 -15zM529.5 160c6.09961 0 12.0996 0.400391 18.2002 1.2002c5.59961 0.700195 11 2 16.3994 3.59961v-196.8c0 -17.7002 -14.2998 -32 -32 -32h-448c-17.6992 0 -32 14.2998 -32 32v196.8\nc5.30078 -1.5 10.8008 -2.7998 16.4004 -3.59961c5.90039 -0.799805 12 -1.2002 18 -1.2002c10 0 19.9004 1.59961 29.5 3.7998v-99.7998h384v99.7998c9.59961 -2.2998 19.5 -3.7998 29.5 -3.7998z\" />\n    <glyph glyph-name=\"store-alt\" unicode=\"&#xf54f;\" horiz-adv-x=\"640\" \nd=\"M320 64v160h64v-256c0 -17.7002 -14.2998 -32 -32 -32h-256c-17.7002 0 -32 14.2998 -32 32v256h64v-160h192zM634.6 305.8c14.1006 -21.2998 -1.09961 -49.7998 -26.5996 -49.7998h-575.9c-25.5996 0 -40.7998 28.5 -26.5996 49.7998l85.2998 128\nc5.90039 8.90039 15.9004 14.2002 26.6006 14.2002h405.199c10.7002 0 20.7002 -5.2998 26.7002 -14.2002zM512 -48v272h64v-272c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16z\" />\n    <glyph glyph-name=\"stream\" unicode=\"&#xf550;\" \nd=\"M16 320c-8.83984 0 -16 7.16016 -16 16v64c0 8.83984 7.16016 16 16 16h416c8.83984 0 16 -7.16016 16 -16v-64c0 -8.83984 -7.16016 -16 -16 -16h-416zM496 240c8.83984 0 16 -7.16016 16 -16v-64c0 -8.83984 -7.16016 -16 -16 -16h-416c-8.83984 0 -16 7.16016 -16 16\nv64c0 8.83984 7.16016 16 16 16h416zM432 64c8.83984 0 16 -7.16016 16 -16v-64c0 -8.83984 -7.16016 -16 -16 -16h-416c-8.83984 0 -16 7.16016 -16 16v64c0 8.83984 7.16016 16 16 16h416z\" />\n    <glyph glyph-name=\"stroopwafel\" unicode=\"&#xf551;\" \nd=\"M188.12 237.26l45.25 -45.2598l-45.2598 -45.25l-45.25 45.25zM301.25 259.88l-45.25 -45.25l-45.25 45.2598l45.25 45.25zM210.75 124.12l45.25 45.25l45.2598 -45.25l-45.2598 -45.2598zM256 448c141.38 0 256 -114.62 256 -256s-114.62 -256 -256 -256\ns-256 114.62 -256 256s114.62 256 256 256zM442.68 152.4c1.29199 1.29492 2.34082 3.83008 2.34082 5.65918c0 1.83008 -1.04883 4.36523 -2.34082 5.66016l-28.29 28.2803l28.2705 28.3096c3.12012 3.12012 3.12012 8.19043 0 11.3105l-11.3105 11.3096\nc-3.11914 3.12012 -8.18945 3.12012 -11.3096 0l-28.29 -28.29l-45.25 45.2607l33.9404 33.9395l16.9697 -16.9697c3.12012 -3.12012 8.18945 -3.12012 11.3096 0l11.3105 11.3096c3.12012 3.12012 3.12012 8.19043 0 11.3105l-16.9707 16.9697l16.9707 16.9697\nc3.12012 3.12012 3.12012 8.19043 0 11.3105l-11.3105 11.3096c-3.12012 3.12012 -8.18945 3.12012 -11.3096 0l-16.9697 -16.9697l-16.9707 16.9697c-3.12012 3.12012 -8.18945 3.12012 -11.3096 0l-11.3105 -11.3096c-3.11914 -3.12012 -3.11914 -8.19043 0 -11.3105\nl16.9707 -16.9697l-33.9404 -33.9404l-45.2598 45.25l28.29 28.29c3.12012 3.12012 3.12012 8.19043 0 11.3105l-11.3105 11.3096c-3.11914 3.12012 -8.18945 3.12012 -11.3096 0l-28.29 -28.29l-28.3096 28.2705c-3.12012 3.12012 -8.19043 3.12012 -11.3105 0\nl-11.3096 -11.3105c-3.12012 -3.11914 -3.12012 -8.18945 0 -11.3096l28.29 -28.29l-45.2607 -45.25l-33.9395 33.9404l16.9697 16.9697c3.12012 3.12012 3.12012 8.18945 0 11.3096l-11.3096 11.3105c-3.12012 3.12012 -8.19043 3.12012 -11.3105 0l-16.9697 -16.9707\nl-16.9697 16.9707c-3.12012 3.12012 -8.19043 3.12012 -11.3105 0l-11.3096 -11.3105c-3.12012 -3.12012 -3.12012 -8.18945 0 -11.3096l16.9697 -16.9697l-16.9697 -16.9707c-3.12012 -3.12012 -3.12012 -8.18945 0 -11.3096l11.3096 -11.3105\nc3.12012 -3.11914 8.19043 -3.11914 11.3105 0l16.9697 16.9707l33.9404 -33.9404l-45.25 -45.2598l-28.29 28.29c-3.12012 3.12012 -8.19043 3.12012 -11.3105 0l-11.3096 -11.3105c-3.12012 -3.11914 -3.12012 -8.18945 0 -11.3096l28.29 -28.29l-28.29 -28.29\nc-3.12012 -3.12012 -3.12012 -8.19043 0 -11.3096l11.3398 -11.3301c3.12012 -3.12012 8.18945 -3.12012 11.3096 0l28.29 28.29l45.25 -45.25l-33.9395 -33.9404l-16.9707 16.9697c-3.11914 3.12012 -8.18945 3.12012 -11.3096 0l-11.3096 -11.3096\nc-3.12012 -3.12012 -3.12012 -8.19043 0 -11.3105l16.9697 -16.9697l-16.9697 -16.9697c-3.12012 -3.12012 -3.12012 -8.19043 0 -11.3105l11.3096 -11.3096c3.12012 -3.12012 8.19043 -3.12012 11.3096 0l16.9707 16.9697l16.9697 -16.9697\nc3.12012 -3.12012 8.19043 -3.12012 11.3096 0l11.3105 11.3096c3.12012 3.12012 3.12012 8.19043 0 11.3105l-16.9697 16.9697l33.9395 33.9404l45.25 -45.2598l-28.29 -28.29c-3.12012 -3.12012 -3.12012 -8.19043 0 -11.3105l11.3105 -11.3096\nc3.11914 -3.12012 8.18945 -3.12012 11.3096 0l28.29 28.29l28.3096 -28.2705c3.12012 -3.12012 8.19043 -3.12012 11.3105 0l11.3096 11.3105c3.12012 3.11914 3.12012 8.18945 0 11.3096l-28.29 28.29l45.2607 45.2598l33.9395 -33.9395l-16.9697 -16.9707\nc-3.12012 -3.11914 -3.12012 -8.18945 0 -11.3096l11.3096 -11.3096c3.12012 -3.12012 8.19043 -3.12012 11.3105 0l16.9697 16.9697l16.9697 -16.9697c3.12012 -3.12012 8.19043 -3.12012 11.3105 0l11.3096 11.3096c3.12012 3.12012 3.12012 8.19043 0 11.3096\nl-16.9697 16.9707l16.9697 16.9697c3.12012 3.12012 3.12012 8.19043 0 11.3096l-11.3096 11.3105c-3.12012 3.12012 -8.19043 3.12012 -11.3105 0l-16.9697 -16.9697l-33.9404 33.9395l45.25 45.25l28.29 -28.29c3.12012 -3.12012 8.19043 -3.12012 11.3105 0zM278.63 192\nl45.2598 45.2598l45.25 -45.2598l-45.25 -45.25z\" />\n    <glyph glyph-name=\"toolbox\" unicode=\"&#xf552;\" \nd=\"M502.63 233.37c6 -6 9.37012 -14.1396 9.37012 -22.6201v-82.75h-128v16c0 8.83984 -7.16016 16 -16 16h-32c-8.83984 0 -16 -7.16016 -16 -16v-16h-128v16c0 8.83984 -7.16016 16 -16 16h-32c-8.83984 0 -16 -7.16016 -16 -16v-16h-128v82.7402\nc0 8.49023 3.37012 16.6299 9.37012 22.6299l45.25 45.2598c6.00977 6 14.1396 9.37012 22.6299 9.37012h50.75v80c0 26.5098 21.4902 48 48 48h160c26.5098 0 48 -21.4902 48 -48v-80.0098h50.75c8.49023 0 16.6299 -3.37012 22.6299 -9.37012zM320 288v64h-128v-64h128z\nM384 80v16h128v-96c0 -17.6699 -14.3301 -32 -32 -32h-448c-17.6699 0 -32 14.3301 -32 32v96h128v-16c0 -8.83984 7.16016 -16 16 -16h32c8.83984 0 16 7.16016 16 16v16h128v-16c0 -8.83984 7.16016 -16 16 -16h32c8.83984 0 16 7.16016 16 16z\" />\n    <glyph glyph-name=\"tshirt\" unicode=\"&#xf553;\" horiz-adv-x=\"640\" \nd=\"M631.2 351.5c7.89941 -3.90039 11.0996 -13.5996 7.09961 -21.5l-57.2998 -114.4c-4 -8 -13.5996 -11.1992 -21.5 -7.19922l-56.5996 27.6992c-10.6006 5.2002 -23 -2.59961 -23 -14.3994v-253.7c0 -17.7002 -14.3008 -32 -32 -32h-256c-17.7002 0 -32 14.2998 -32 32\nv253.6c0 11.9004 -12.4004 19.6006 -23 14.4004l-56.6006 -27.7002c-7.89941 -3.89941 -17.5 -0.700195 -21.5 7.2002l-57.2002 114.5c-3.89941 7.90039 -0.699219 17.5 7.2002 21.5l194.7 96.5c20.0996 -27.7998 64.5996 -47.2002 116.5 -47.2002\ns96.4004 19.4004 116.5 47.2002z\" />\n    <glyph glyph-name=\"walking\" unicode=\"&#xf554;\" horiz-adv-x=\"320\" \nd=\"M208 352c-26.5 0 -48 21.5 -48 48s21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48zM302.5 202.9c15.7002 -7.90039 22 -27.3008 14.2998 -43c-7.89941 -15.8008 -26.8994 -22.2002 -42.5 -14.3008l-23.2998 11.8008c-15 7.59961 -26.4004 20.8994 -31.7002 37\nl-5.5 16.5l-17.2002 -68.7002l45.5 -49.7002c7.2002 -7.7998 12.3008 -17.4004 14.9004 -27.7002l22.2002 -89c4.2998 -17.0996 -6.2002 -34.5 -23.2998 -38.7998c-17.1006 -4.2998 -34.5 6.2002 -38.8008 23.2998l-18.2998 73.2998\nc-2.59961 10.3008 -7.7002 19.8008 -14.8994 27.7002l-59.9004 65.4004c-14.5 15.8994 -20.0996 38 -14.9004 58.7998l15.2002 60.7002l-26.7998 -10.7998c-7.2002 -2.90039 -13 -8.40039 -16.5 -15.4004l-6.7002 -13.5996\nc-7.89941 -15.8008 -26.8994 -22.2002 -42.5 -14.3008c-15.7002 7.90039 -22 27.1006 -14.2002 42.9004l6.7002 13.5996c10.4004 21 28.1006 37.5 49.7002 46.2002c37.4004 15.1006 57.2998 25.2998 93.2998 25.2002c46.5 -0.0996094 87.5 -31.2998 102.2 -75.9004\nl9.7002 -29.3994zM73.5996 62.2002l20.7002 51.5c8.7002 -11.9004 -7.89941 6.59961 47.4004 -53.7002l-13.5 -33.7998c-3.2998 -8.10059 -8.10059 -15.4004 -14.2002 -21.5l-59.4004 -59.4004c-12.5 -12.5 -32.6992 -12.5 -45.1992 0s-12.5 32.7998 0 45.2998l50 50.1006\nc6.19922 6.09961 11 13.3994 14.1992 21.5z\" />\n    <glyph glyph-name=\"wallet\" unicode=\"&#xf555;\" \nd=\"M461.2 320c28.0195 0 50.7998 -21.5303 50.7998 -48v-256c0 -26.4697 -22.7803 -48 -50.7998 -48h-397.2c-35.3496 0 -64 28.6504 -64 64v320c0 35.3496 28.6504 64 64 64h368c26.5098 0 48 -21.4902 48 -48c0 -8.83984 -7.16016 -16 -16 -16h-384\nc-8.83984 0 -16 -7.16016 -16 -16s7.16016 -16 16 -16h381.2zM416 112c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z\" />\n    <glyph glyph-name=\"angry\" unicode=\"&#xf556;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM136 208c0 -17.7002 14.4004 -32 32.0996 -32c17.7002 0 32 14.2998 32 32c0 2.90039 -1 5.5 -1.69922 8.2002c0.599609 0 1.19922 -0.200195 1.69922 -0.200195\nc6.90039 0 13.2002 4.5 15.3008 11.4004c2.59961 8.39941 -2.2002 17.3994 -10.7002 19.8994l-80 24c-8.5 2.5 -17.4004 -2.2002 -19.9004 -10.7002c-2.59961 -8.39941 2.2002 -17.3994 10.7002 -19.8994l31 -9.2998c-6.40039 -5.90039 -10.5 -14.1006 -10.5 -23.4004z\nM304 53.7998c13.4004 -16.0996 38.2998 4 24.5 20.5c-20 24 -49.4004 37.7998 -80.5996 37.7998c-31.2002 0 -60.6006 -13.7998 -80.6006 -37.7998c-13.5996 -16.2998 11.1006 -36.7998 24.6006 -20.5c27.8994 33.4004 84.2998 33.4004 112.1 0zM380.6 240.7\nc8.5 2.5 13.3008 11.3994 10.8008 19.8994c-2.5 8.40039 -11.5 13.2002 -19.9004 10.7002l-80 -24c-8.40039 -2.5 -13.2002 -11.3994 -10.7002 -19.8994c2.10059 -6.90039 8.40039 -11.4004 15.2998 -11.4004c0.600586 0 1.10059 0.0996094 1.7002 0.200195\nc-0.799805 -2.60059 -1.7002 -5.2998 -1.7002 -8.2002c0 -17.7002 14.3008 -32 32 -32c17.7002 0 32 14.2998 32 32c0 9.2998 -4.19922 17.5996 -10.5 23.4004z\" />\n    <glyph glyph-name=\"archway\" unicode=\"&#xf557;\" horiz-adv-x=\"576\" \nd=\"M560 0c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-159.98c-8.83984 0 -16 7.16016 -16 16v16l-0.0195312 160c0 53.0195 -42.9805 96 -96 96s-96 -42.9805 -96 -96v-176c0 -8.83984 -7.16016 -16 -16 -16h-159.98\nc-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h15.9805v352h512v-352h16zM560 448c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-544c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h544z\" />\n    <glyph glyph-name=\"atlas\" unicode=\"&#xf558;\" horiz-adv-x=\"448\" \nd=\"M318.38 240c-5.28027 -31.2197 -25.5898 -57.1699 -53.2998 -70.4102c7.66992 19.0605 12.7197 43.3799 14.21 70.4102h39.0898zM318.38 272h-39.0898c-1.49023 27.0303 -6.53027 51.3496 -14.21 70.4102c27.71 -13.2402 48.0098 -39.1904 53.2998 -70.4102zM224 350.69\nc7.69043 -7.4502 20.7695 -34.4307 23.4404 -78.6904h-46.8701c2.66016 44.2695 15.7393 71.2402 23.4297 78.6904zM182.92 342.41c-7.67969 -19.0605 -12.7197 -43.3799 -14.21 -70.4102h-39.0898c5.28027 31.2197 25.5898 57.1699 53.2998 70.4102zM182.92 169.59\nc-27.71 13.2402 -48.0195 39.1904 -53.2998 70.4102h39.0898c1.49023 -27.0303 6.53027 -51.3496 14.21 -70.4102zM247.43 240c-2.66016 -44.2598 -15.7393 -71.2402 -23.4395 -78.6904c-7.69043 7.4502 -20.7705 34.4307 -23.4307 78.6904h46.8701zM448 89.5996\nc0 -9.59961 -3.2002 -16 -9.59961 -19.1992c-3.2002 -12.8008 -3.2002 -57.6006 0 -73.6006c6.39941 -6.39941 9.59961 -12.7998 9.59961 -19.2002v-16c0 -16 -12.7998 -25.5996 -25.5996 -25.5996h-326.4c-54.4004 0 -96 41.5996 -96 96v320c0 54.4004 41.5996 96 96 96\nh326.4c16 0 25.5996 -9.59961 25.5996 -25.5996v-332.801zM224 384c-70.6904 0 -128 -57.3096 -128 -128s57.3096 -128 128 -128s128 57.3096 128 128s-57.3096 128 -128 128zM384 0v64h-288c-16 0 -32 -12.7998 -32 -32s12.7998 -32 32 -32h288z\" />\n    <glyph glyph-name=\"award\" unicode=\"&#xf559;\" horiz-adv-x=\"384\" \nd=\"M97.1201 85.3701c13.79 -13.7803 32.1104 -21.3701 51.6104 -21.3701c12.4395 0 24.4697 3.54004 35.3096 9.58008l-52.0498 -127.62c-4.39062 -10.7695 -18.4307 -13.4004 -26.4307 -4.95996l-36.2393 38.2803l-52.6904 -2.01074\nc-11.6201 -0.439453 -19.8203 11.2607 -15.4297 22.0303l45.3701 111.24c7.55957 -5.87012 15.9199 -10.7705 25.4297 -13.3203c20.96 -5.60938 16.4297 -3.16016 25.1201 -11.8496zM382.8 -0.700195c4.39062 -10.7598 -3.80957 -22.4697 -15.4297 -22.0303\nl-52.6904 2.01074l-36.25 -38.2803c-7.98926 -8.44043 -22.04 -5.80957 -26.4297 4.95996l-52.0498 127.62c10.8398 -6.03027 22.8701 -9.58008 35.3096 -9.58008c19.5 0 37.8301 7.58984 51.6201 21.3701c8.66992 8.66992 4.0498 6.20996 25.1201 11.8496\nc9.50977 2.5498 17.8701 7.44043 25.4297 13.3203zM263 108c-13.2305 -13.4697 -33.8398 -15.8799 -49.7305 -5.82031c-5.37305 3.41211 -14.8994 6.18066 -21.2646 6.18066c-6.36426 0 -15.8916 -2.76855 -21.2646 -6.18066\nc-15.9004 -10.0596 -36.5098 -7.64941 -49.7402 5.82031c-14.7305 15 -16.4004 14.04 -38.7803 20.1396c-13.8896 3.79004 -24.75 14.8408 -28.4697 28.9805c-7.48047 28.3994 -5.54004 24.9697 -25.9502 45.75c-10.1699 10.3604 -14.1396 25.4502 -10.4199 39.5898\nc7.48047 28.4199 7.46973 24.46 0 52.8203c-3.72949 14.1396 0.25 29.2295 10.4199 39.5801c20.4102 20.7793 18.4805 17.3594 25.9502 45.75c3.71973 14.1396 14.5801 25.1895 28.4697 28.9795c27.8906 7.61035 24.5303 5.62988 44.9404 26.4102\nc10.1699 10.3604 25 14.4004 38.8896 10.6104c27.9199 -7.61035 24.0303 -7.60059 51.9004 0c13.8896 3.79004 28.7197 -0.260742 38.8896 -10.6104c20.4297 -20.79 17.0703 -18.7998 44.9502 -26.4102c13.8896 -3.79004 24.75 -14.8398 28.4697 -28.9795\nc7.48047 -28.3906 5.54004 -24.9707 25.9502 -45.75c10.1699 -10.3506 14.1396 -25.4404 10.4199 -39.5801c-7.47949 -28.4102 -7.46973 -24.4502 0 -52.8301c3.71973 -14.1406 -0.25 -29.2305 -10.4199 -39.5801c-20.4102 -20.7803 -18.4697 -17.3506 -25.9502 -45.75\nc-3.71973 -14.1396 -14.5801 -25.1904 -28.4697 -28.9805c-21.7598 -5.92969 -23.5098 -4.58984 -38.79 -20.1396zM97.6602 272.04c0 -53.0303 42.2402 -96.0205 94.3398 -96.0205s94.3398 42.9902 94.3398 96.0205s-42.2402 96.0195 -94.3398 96.0195\ns-94.3398 -42.9893 -94.3398 -96.0195z\" />\n    <glyph glyph-name=\"backspace\" unicode=\"&#xf55a;\" horiz-adv-x=\"640\" \nd=\"M576 384c35.3496 0 64 -28.6504 64 -64v-256c0 -35.3496 -28.6504 -64 -64 -64h-370.75c-16.9697 0 -33.25 6.75 -45.25 18.75l-150.63 150.63c-12.5 12.4902 -12.5 32.75 0 45.25l150.63 150.62c10.3438 10.3496 30.6143 18.75 45.2471 18.75h0.0126953h370.74z\nM491.31 129.94l-62.0596 62.0596l62.0596 62.0596c6.25 6.25 6.25 16.3809 0 22.6309l-22.6191 22.6191c-6.25 6.25 -16.3809 6.25 -22.6309 0l-62.0596 -62.0596l-62.0596 62.0596c-6.25 6.25 -16.3809 6.25 -22.6309 0l-22.6191 -22.6191\nc-6.25 -6.25 -6.25 -16.3809 0 -22.6309l62.0596 -62.0596l-62.0596 -62.0596c-6.25 -6.25 -6.25 -16.3809 0 -22.6309l22.6191 -22.6191c6.25 -6.25 16.3809 -6.25 22.6309 0l62.0596 62.0596l62.0596 -62.0596c6.25 -6.25 16.3809 -6.25 22.6309 0l22.6191 22.6191\nc6.25 6.25 6.25 16.3809 0 22.6309z\" />\n    <glyph glyph-name=\"bezier-curve\" unicode=\"&#xf55b;\" horiz-adv-x=\"640\" \nd=\"M368 416c17.6699 0 32 -14.3301 32 -32v-96c0 -17.6699 -14.3301 -32 -32 -32h-96c-17.6699 0 -32 14.3301 -32 32v96c0 17.6699 14.3301 32 32 32h96zM208 360v-72c0 -9.4502 2.17969 -18.3604 5.87988 -26.4404c-34.2695 -24.3496 -59.7402 -59.9492 -71.04 -101.56\nh-49.3994c13.6797 64.6797 54.1699 119.48 109.54 152h-79.7305c-9.5 -23.4404 -32.4102 -40 -59.25 -40c-35.3398 0 -64 28.6504 -64 64s28.6602 64 64 64c26.8398 0 49.75 -16.5596 59.25 -40h84.75zM160 128c17.6699 0 32 -14.3301 32 -32v-96\nc0 -17.6699 -14.3301 -32 -32 -32h-96c-17.6699 0 -32 14.3301 -32 32v96c0 17.6699 14.3301 32 32 32h96zM576 400c35.3398 0 64 -28.6504 64 -64s-28.6602 -64 -64 -64c-26.8398 0 -49.75 16.5596 -59.25 40h-79.7305c55.3701 -32.5195 95.8604 -87.3203 109.54 -152\nh-49.3994c-11.2998 41.6104 -36.7705 77.21 -71.04 101.56c3.68945 8.08008 5.87988 16.9902 5.87988 26.4404v72h84.75c9.5 23.4404 32.4102 40 59.25 40zM576 128c17.6699 0 32 -14.3301 32 -32v-96c0 -17.6699 -14.3301 -32 -32 -32h-96c-17.6699 0 -32 14.3301 -32 32\nv96c0 17.6699 14.3301 32 32 32h96z\" />\n    <glyph glyph-name=\"bong\" unicode=\"&#xf55c;\" horiz-adv-x=\"448\" \nd=\"M302.5 -64h-221c-23.1699 0 -44.4199 12.5801 -56 32.6602c-16.1904 28.0703 -25.5 60.5898 -25.5 95.3398c0 71.0303 38.6699 132.9 96 166.11v153.93l-15.9697 -0.0205078c-8.85059 -0.00976562 -16.0303 7.16016 -16.0205 16.0107l0.0400391 31.7295\nc0.00976562 8.82031 7.16016 15.9707 15.9805 15.9805l223.939 0.259766c8.85059 0.00976562 16.0303 -7.16992 16.0205 -16.0195l-0.0400391 -31.7207c-0.00976562 -8.81934 -7.16016 -15.9697 -15.9805 -15.9795l-15.9697 -0.0205078v-154.16\nc14.1201 -8.17969 27.0898 -18.1396 38.6504 -29.5098l39.4092 39.4102l-9.37988 9.37988c-6.25 6.25 -6.25 16.3799 0 22.6299l11.3105 11.3105c6.25 6.25 16.3799 6.25 22.6299 0l52.6895 -52.6904c6.25 -6.25 6.25 -16.3799 0 -22.6299l-11.2998 -11.3203\nc-6.25 -6.25 -16.3799 -6.25 -22.6299 0l-9.37988 9.37988l-43.4404 -43.4395c17.3604 -28.8105 27.4404 -62.5 27.4404 -98.6201c0 -34.75 -9.30957 -67.2598 -25.5 -95.3398c-11.5703 -20.0801 -32.8203 -32.6602 -56 -32.6602zM120.06 188.57\nc-24.8096 -14.3701 -44.1094 -35.7305 -56.5596 -60.5703h257c-12.4404 24.8398 -31.75 46.2002 -56.5596 60.5703l-23.9404 13.8701v181.76l-96 -0.110352v-181.649z\" />\n    <glyph glyph-name=\"brush\" unicode=\"&#xf55d;\" horiz-adv-x=\"384\" \nd=\"M352 448c17.6699 0 32 -14.3301 32 -32v-224h-384v224c0 17.6699 14.3301 32 32 32h320zM0 128v32h384v-32c0 -35.3496 -28.6602 -64 -64 -64h-64v-64c0 -35.3496 -28.6602 -64 -64 -64s-64 28.6504 -64 64v64h-64c-35.3398 0 -64 28.6504 -64 64zM192 24\nc-13.25 0 -24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24s24 10.75 24 24c0 13.2598 -10.75 24 -24 24z\" />\n    <glyph glyph-name=\"bus-alt\" unicode=\"&#xf55e;\" \nd=\"M488 320c13.25 0 24 -10.7402 24 -24v-80c0 -13.25 -10.75 -24 -24 -24h-8v-166.4c0 -12.7998 -9.59961 -25.5996 -25.5996 -25.5996h-6.40039v-32c0 -17.6699 -14.3301 -32 -32 -32h-32c-17.6699 0 -32 14.3301 -32 32v32h-192v-32c0 -17.6699 -14.3301 -32 -32 -32h-32\nc-17.6699 0 -32 14.3301 -32 32v32c-17.6699 0 -32 14.3301 -32 32v160h-8c-13.25 0 -24 10.75 -24 24v80c0 13.2598 10.75 24 24 24h8v48c0 44.7998 99.2002 80 224 80s224 -35.2002 224 -80v-48h8zM160 376v-16c0 -4.41992 3.58008 -8 8 -8h176c4.41992 0 8 3.58008 8 8\nv16c0 4.41992 -3.58008 8 -8 8h-176c-4.41992 0 -8 -3.58008 -8 -8zM112 48c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM240 160v160h-112c-17.6699 0 -32 -14.3301 -32 -32v-96c0 -17.6699 14.3301 -32 32 -32h112zM272 160\nh112c17.6699 0 32 14.3301 32 32v96c0 17.6699 -14.3301 32 -32 32h-112v-160zM400 48c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z\" />\n    <glyph glyph-name=\"cannabis\" unicode=\"&#xf55f;\" \nd=\"M503.47 87.75c5.24023 -2.75977 8.52051 -8.20996 8.53027 -14.1504c0.00976562 -5.92969 -3.26953 -11.3691 -8.50977 -14.1494c-2.4502 -1.29004 -60.7705 -31.7197 -133.49 -31.7197c-6.12988 0 -11.96 0.0996094 -17.5 0.30957\nc11.3604 -22.2305 16.5195 -38.3096 16.8096 -39.2197c1.80078 -5.68066 0.290039 -11.8906 -3.90918 -16.1104c-2.5918 -2.60059 -7.67578 -4.71094 -11.3467 -4.71094c-1.34277 0 -3.47168 0.322266 -4.75391 0.720703c-1.83008 0.580078 -37.7197 11.9902 -77.2998 39.29\nv-64.0098c0 -4.41992 -3.58008 -8 -8 -8h-16c-4.41992 0 -8 3.58008 -8 8v64.0195c-39.5801 -27.2998 -75.4697 -38.7197 -77.2998 -39.2891c-1.28223 -0.398438 -3.41113 -0.72168 -4.75391 -0.72168c-3.6709 0 -8.75488 2.11035 -11.3467 4.71094\nc-4.19922 4.2207 -5.70996 10.4307 -3.90918 16.1104c0.290039 0.910156 5.43945 16.9902 16.8096 39.2197c-5.54004 -0.209961 -11.3604 -0.30957 -17.5 -0.30957c-72.7305 0 -131.04 30.4297 -133.49 31.7197c-4.69629 2.48926 -8.50879 8.82422 -8.50879 14.1396\nc0 5.32422 3.82129 11.6641 8.5293 14.1504c1.56934 0.820312 32.3896 16.8896 76.7793 25.8096c-64.25 75.1201 -84.0498 161.671 -84.9297 165.641c-0.210938 0.947266 -0.382812 2.50488 -0.382812 3.47559c0 3.65039 2.09375 8.71094 4.67285 11.2939\nc3.03027 3.04004 7.12012 4.7002 11.3203 4.7002c1.14941 0 2.2998 -0.129883 3.43945 -0.379883c3.89062 -0.860352 86.5508 -19.5996 160.58 -79.7598c0 1.45996 -0.00976562 2.92969 -0.00976562 4.39941c0 118.79 59.9805 213.721 62.5303 217.7\nc2.93945 4.58984 8.01953 7.37012 13.4697 7.37012h0.00195312c4.82812 0 10.8574 -3.30176 13.458 -7.37012c2.5498 -3.97949 62.5303 -98.9102 62.5303 -217.7c0 -1.46973 0 -2.93945 -0.00976562 -4.39941c74.0391 60.1699 156.699 78.9102 160.579 79.7598\nc1.15039 0.259766 2.30078 0.379883 3.44043 0.379883c4.2002 0 8.29004 -1.66016 11.3203 -4.7002c3.85938 -3.87012 5.47949 -9.43945 4.2998 -14.7695c-0.879883 -3.96973 -20.6797 -90.5205 -84.9297 -165.641c44.3896 -8.91992 75.2197 -24.9893 76.7793 -25.8096z\" />\n    <glyph glyph-name=\"check-double\" unicode=\"&#xf560;\" \nd=\"M505 273.2c9.2998 -9.2998 9.2998 -24.5 -0.0996094 -34l-296 -296.2c-9.30078 -9.40039 -24.5 -9.40039 -33.9004 0l-168 168.1c-9.40039 9.40039 -9.40039 24.6006 0 34l39.7002 39.7002c9.2998 9.40039 24.5 9.40039 33.8994 0l111.4 -111.5l239.5 239.5\nc9.2998 9.40039 24.5 9.40039 33.9004 0zM180.7 167.2l-112 112.2c-6.2002 6.19922 -6.2002 16.2998 0 22.5996l45.2998 45.2998c6.2002 6.2998 16.4004 6.2998 22.5996 0l55.4004 -55.5l151.5 151.5c6.2002 6.2998 16.4004 6.2998 22.5996 0l45.2002 -45.2998\nc6.2002 -6.2002 6.2002 -16.2998 0 -22.5996l-208 -208.2c-6.2002 -6.2998 -16.3994 -6.2998 -22.5996 0z\" />\n    <glyph glyph-name=\"cocktail\" unicode=\"&#xf561;\" horiz-adv-x=\"576\" \nd=\"M296 -16c22.0898 0 40 -17.9102 40 -40c0 -4.41992 -3.58008 -8 -8 -8h-240c-4.41992 0 -8 3.58008 -8 8c0 22.0898 17.9102 40 40 40h56v125.22l-168.74 168.73c-15.5195 15.5195 -4.5293 42.0498 17.4199 42.0498h366.641c21.9492 0 32.9395 -26.5303 17.4199 -42.0498\nl-168.74 -168.73v-125.22h56zM432 448c79.5303 0 144 -64.4697 144 -144s-64.4697 -144 -144 -144c-27.4102 0 -52.7695 8.08008 -74.5801 21.3799l35.2598 35.2598c12.0303 -5.43945 25.2803 -8.63965 39.3203 -8.63965c52.9297 0 96 43.0596 96 96s-43.0703 96 -96 96\nc-35.3701 0 -65.9902 -19.4502 -82.6396 -48h-52.54c19.8301 55.7998 72.5693 96 135.18 96z\" />\n    <glyph glyph-name=\"concierge-bell\" unicode=\"&#xf562;\" \nd=\"M288 317.46c108.51 -15.5703 192 -108.64 192 -221.46h-448c0 112.82 83.4902 205.89 192 221.46v18.54h-16c-8.83984 0 -16 7.16016 -16 16v16c0 8.83984 7.16016 16 16 16h96c8.83984 0 16 -7.16016 16 -16v-16c0 -8.83984 -7.16016 -16 -16 -16h-16v-18.54zM496 64\nc8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-480c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h480z\" />\n    <glyph glyph-name=\"cookie\" unicode=\"&#xf563;\" \nd=\"M510.37 193.21c4.37988 -27.6602 -0.110352 -56 -12.8203 -80.96l-35.0996 -68.8701c-10.7695 -21.1328 -36.6592 -47.0273 -57.79 -57.7998l-69.1201 -35.21c-24.8301 -12.6396 -53.0098 -17.1104 -80.5205 -12.75l-76.6992 12.1396\nc-23.3896 3.70801 -55.9639 20.3066 -72.71 37.0498l-54.7607 54.75c-16.7959 16.8027 -33.4443 49.4844 -37.1592 72.9502l-12.0801 76.2705c-0.901367 5.68848 -1.63281 14.9805 -1.63281 20.7412c0 17.5723 6.47461 44.541 14.4521 60.1982l35.1006 68.8799\nc10.7666 21.1357 36.6562 47.0303 57.79 57.8008l69.1201 35.21c24.8291 12.6494 53.0098 17.1201 80.5195 12.7598l76.7002 -12.1504c27.5303 -4.34961 52.9795 -17.3301 72.71 -37.0498l54.7598 -54.75c16.7969 -16.8027 33.4443 -49.4844 37.1602 -72.9502zM176 80\nc17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM208 240c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM368 112c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32\ns-32 -14.3301 -32 -32s14.3301 -32 32 -32z\" />\n    <glyph glyph-name=\"cookie-bite\" unicode=\"&#xf564;\" \nd=\"M510.52 192.18c4.10059 -27.3301 -0.349609 -55.2695 -12.9092 -79.9102l-35.1006 -68.8799c-10.7656 -21.1367 -36.6562 -47.0361 -57.79 -57.8096l-69.1299 -35.21c-24.8301 -12.6504 -53.0195 -17.1201 -80.5303 -12.7598l-76.71 12.1494\nc-23.3916 3.70801 -55.9658 20.3105 -72.71 37.0605l-54.7695 54.7598c-16.7969 16.8057 -33.4443 49.4912 -37.1602 72.96l-12.0801 76.2695c-0.900391 5.68945 -1.63184 14.9824 -1.63184 20.7422c0 17.5752 6.47461 44.5479 14.4521 60.208l35.0996 68.8799\nc10.7646 21.1396 36.6543 47.0391 57.79 57.8105l69.1299 35.2197c24.5898 12.5205 52.46 16.96 79.7207 12.8203c0.859375 -69.96 57.6895 -126.45 127.859 -126.45c0 -70.1699 56.5 -127.01 126.47 -127.86zM176 80c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32\ns-32 -14.3301 -32 -32s14.3301 -32 32 -32zM208 240c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM368 112c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z\" />\n    <glyph glyph-name=\"crop-alt\" unicode=\"&#xf565;\" \nd=\"M488 96c13.25 0 24 -10.7402 24 -24v-48c0 -13.25 -10.75 -24 -24 -24h-40v-40c0 -13.25 -10.75 -24 -24 -24h-48c-13.25 0 -24 10.75 -24 24v328h-160v96h224c17.6699 0 32 -14.3301 32 -32v-256h40zM160 424v-328h160v-96h-224c-17.6699 0 -32 14.3301 -32 32v256h-40\nc-13.25 0 -24 10.75 -24 24v48c0 13.2598 10.75 24 24 24h40v40c0 13.2598 10.75 24 24 24h48c13.25 0 24 -10.7402 24 -24z\" />\n    <glyph glyph-name=\"digital-tachograph\" unicode=\"&#xf566;\" horiz-adv-x=\"640\" \nd=\"M608 352c17.6699 0 32 -14.3301 32 -32v-256c0 -17.6699 -14.3301 -32 -32 -32h-576c-17.6699 0 -32 14.3301 -32 32v256c0 17.6699 14.3301 32 32 32h576zM304 96v8c0 4.41992 -3.58008 8 -8 8h-224c-4.41992 0 -8 -3.58008 -8 -8v-8c0 -4.41992 3.58008 -8 8 -8h224\nc4.41992 0 8 3.58008 8 8zM72 160c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-16c-4.41992 0 -8 -3.58008 -8 -8v-16zM136 160c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-16\nc-4.41992 0 -8 -3.58008 -8 -8v-16zM200 160c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-16c-4.41992 0 -8 -3.58008 -8 -8v-16zM264 160c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8\nh-16c-4.41992 0 -8 -3.58008 -8 -8v-16zM304 224v48c0 8.83984 -7.16016 16 -16 16h-208c-8.83984 0 -16 -7.16016 -16 -16v-48c0 -8.83984 7.16016 -16 16 -16h208c8.83984 0 16 7.16016 16 16zM576 96v8c0 4.41992 -3.58008 8 -8 8h-224c-4.41992 0 -8 -3.58008 -8 -8v-8\nc0 -4.41992 3.58008 -8 8 -8h224c4.41992 0 8 3.58008 8 8z\" />\n    <glyph glyph-name=\"dizzy\" unicode=\"&#xf567;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM152 233.4l28.7002 -28.7002c14.7002 -14.7998 37.7998 7.39941 22.5996 22.5996l-28.7002 28.7002l28.7002 28.7002c15 14.8994 -7.59961 37.5996 -22.5996 22.5996\nl-28.7002 -28.7002l-28.7002 28.7002c-14.8994 15 -37.5996 -7.59961 -22.5996 -22.5996l28.7002 -28.7002l-28.7002 -28.7002c-15.2002 -15.0996 7.7998 -37.3994 22.5996 -22.5996zM248 32c35.2998 0 64 28.7002 64 64s-28.7002 64 -64 64s-64 -28.7002 -64 -64\ns28.7002 -64 64 -64zM395.3 227.3l-28.7002 28.7002l28.7002 28.7002c15 14.8994 -7.59961 37.5996 -22.5996 22.5996l-28.7002 -28.7002l-28.7002 28.7002c-14.8994 15 -37.5996 -7.59961 -22.5996 -22.5996l28.7002 -28.7002l-28.7002 -28.7002\nc-15.2002 -15.0996 7.7998 -37.3994 22.5996 -22.5996l28.7002 28.7002l28.7002 -28.7002c14.7002 -14.7998 37.7998 7.39941 22.5996 22.5996z\" />\n    <glyph glyph-name=\"drafting-compass\" unicode=\"&#xf568;\" \nd=\"M457.01 103.58l54.9805 -95.2305l-7.02051 -58.25c-1.2793 -10.5898 -12.3594 -16.9893 -22.1699 -12.7998l-53.9502 23.04l-54.3799 94.1904c29.9102 11.8701 57.4902 28.7197 82.54 49.0498zM499.5 198.14c-52.6201 -83.1299 -144.45 -134.14 -243.5 -134.14\nc-35.3799 0 -69.8701 6.71973 -102.06 18.96l-70.8008 -122.63l-53.9492 -23.04c-9.81055 -4.19043 -20.8906 2.20996 -22.1709 12.7998l-7.01953 58.25l71.2803 123.46c-21.29 17.8105 -40.4102 38.3799 -55.9805 62.0205\nc-4.99023 7.56934 -2.20996 17.9297 5.64062 22.4697l27.75 16.0703c7.40918 4.29004 16.5898 1.76953 21.3799 -5.33008c9.71973 -14.4102 21.1299 -27.3906 33.6797 -39l68.2998 118.31c-7.43945 13.6299 -12.0498 29.0303 -12.0498 45.6602c0 53.0195 42.9805 96 96 96\ns96 -42.9805 96 -96c0 -16.6299 -4.61035 -32.0303 -12.0596 -45.6602l51.79 -89.71c-23.0508 -23.1699 -51.3809 -39.96 -82.6104 -48.9199l-51.0898 88.5c-0.69043 -0.0195312 -1.33984 -0.209961 -2.04004 -0.209961s-1.33984 0.19043 -2.04004 0.209961\nl-67.3604 -116.68c22.1797 -7.28027 45.4805 -11.5303 69.4102 -11.5303c76.25 0 147.01 38.8496 188.12 102.38c4.64941 7.17969 13.7803 9.87012 21.2598 5.71973l28.0703 -15.5693c7.93945 -4.40039 10.9102 -14.7207 6.0498 -22.3906zM256 384\nc-17.6699 0 -32 -14.3301 -32 -32s14.3301 -32 32 -32s32 14.3301 32 32s-14.3301 32 -32 32z\" />\n    <glyph glyph-name=\"drum\" unicode=\"&#xf569;\" horiz-adv-x=\"576\" \nd=\"M458.08 327.12c71.3799 -23.29 117.91 -60.75 117.92 -103.13v-160.83c0 -30.46 -24.0303 -58.4004 -64 -80.3701v96.3701c0 17.5996 -14.4004 32 -32 32s-32 -14.4004 -32 -32v-122.41c-37.4004 -11.1299 -81 -18.4404 -128 -20.75v111.16c0 17.5996 -14.4004 32 -32 32\ns-32 -14.4004 -32 -32v-111.15c-47 2.31055 -90.5996 9.62012 -128 20.75v122.41c0 17.5996 -14.4004 32 -32 32s-32 -14.4004 -32 -32v-96.3701c-39.9697 21.9697 -64 49.9102 -64 80.3701v160.83c0 70.6904 128.94 128 288 128\nc21.8467 -0.00585938 57.167 -2.2373 78.8398 -4.98047l160.69 96.4102c15.1699 9.10059 34.8096 4.18066 43.9102 -10.9697c9.08984 -15.1602 4.18945 -34.8203 -10.9707 -43.9102zM288 144c132.54 0 240 35.8096 240 79.9902c0 30.2695 -50.4502 56.5996 -124.82 70.1895\nl-162.71 -97.6201c-14.3994 -8.63965 -34.3496 -4.95996 -43.9102 10.9707c-9.08984 15.1602 -4.18945 34.8193 10.9707 43.9102l87.4102 52.4395c-2.32031 0.0205078 -4.60059 0.120117 -6.94043 0.120117c-132.55 0 -240 -35.8203 -240 -80s107.45 -80 240 -80z\" />\n    <glyph glyph-name=\"drum-steelpan\" unicode=\"&#xf56a;\" horiz-adv-x=\"576\" \nd=\"M288 416c159.06 0 288 -57.3096 288 -128v-192c0 -70.6904 -128.94 -128 -288 -128s-288 57.3096 -288 128v192c0 70.6904 128.94 128 288 128zM205.01 257.64c5.11035 19.0605 2.49023 38.96 -7.37012 56.0508l-25.5996 44.3398\nc-73.9297 -13.6406 -124.04 -39.8701 -124.04 -70.0303c0 -30.7803 52.2305 -57.46 128.7 -70.8398c13.7695 9.91016 23.8594 23.8701 28.3096 40.4795zM288 208c21.0801 0 41.4102 1 60.8896 2.7002c-8.05957 26.1299 -32.1494 45.2998 -60.8896 45.2998\ns-52.8301 -19.1699 -60.8896 -45.2998c19.4795 -1.7002 39.8096 -2.7002 60.8896 -2.7002zM352 352v13.04c-20.4004 1.87988 -41.7998 2.95996 -64 2.95996s-43.5996 -1.08008 -64 -2.95996v-13.04c0 -35.29 28.71 -64 64 -64s64 28.71 64 64zM398.93 217.1\nc76.6699 13.3604 129.07 40.0703 129.07 70.9004c0 30.21 -50.2803 56.5 -124.44 70.0996l-25.6494 -44.4199c-9.87012 -17.0801 -12.4902 -36.9795 -7.37988 -56.04c4.45996 -16.6396 14.5898 -30.6299 28.3994 -40.54z\" />\n    <glyph glyph-name=\"feather-alt\" unicode=\"&#xf56b;\" \nd=\"M512 448c-1.80957 -26.2598 -11.71 -132.86 -53.6201 -234.79l-106.54 -53.21h81.1406c-9.08008 -16.4102 -19.2002 -32.2305 -30.4502 -47.1201l-146.79 -48.8799h100.95c-35.5605 -30.0703 -79.1006 -51.0996 -132.58 -56.54\nc-41.8105 -4.83008 -83.8701 -7.21973 -125.96 -7.36035l-57.1309 -57.0693c-9.38965 -9.37012 -24.5996 -9.37012 -33.9795 0s-9.37988 24.5693 0 33.9395l259.5 259.24c6.25 6.25 6.25 16.3799 0 22.6299s-16.4004 6.25 -22.6504 0l-178.87 -178.689\nc1.15039 26.7998 2.90039 53.5801 5.99023 80.2393c25.4307 249.41 389.21 284.051 440.99 287.61z\" />\n    <glyph glyph-name=\"file-contract\" unicode=\"&#xf56c;\" horiz-adv-x=\"384\" \nd=\"M224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136zM64 376v-16c0 -4.41992 3.58008 -8 8 -8h80c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8\nh-80c-4.41992 0 -8 -3.58008 -8 -8zM64 312v-16c0 -4.41992 3.58008 -8 8 -8h80c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-80c-4.41992 0 -8 -3.58008 -8 -8zM256.81 64c-4.19922 0 -8.13965 2.44043 -10.1592 6.5\nc-11.9502 23.8604 -46.2305 30.3496 -66 14.1602l-13.8809 41.6396c-3.28906 9.82031 -12.4297 16.4102 -22.7695 16.4102s-19.4805 -6.59961 -22.7803 -16.4102l-18.1895 -54.6396c-1.53027 -4.58008 -5.81055 -7.66016 -10.6406 -7.66016h-12.3896\nc-8.83984 0 -16 -7.16016 -16 -16s7.16016 -16 16 -16h12.3896c18.6201 0 35.1104 11.8701 41 29.5303l10.6104 31.8799l16.8301 -50.46c2.03027 -6.14062 7.58008 -10.4404 14.0303 -10.8906c0.389648 -0.0292969 0.759766 -0.0498047 1.13965 -0.0498047h0.00976562\nc5.45508 0 11.8613 3.96094 14.2998 8.83984l7.6709 15.3408c2.7998 5.59961 7.93945 6.18945 10.0195 6.18945s7.21973 -0.599609 10.1699 -6.51953c7.37012 -14.7207 22.1904 -23.8604 38.6396 -23.8604h47.1904c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16h-47.1904z\nM377 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7z\" />\n    <glyph glyph-name=\"file-download\" unicode=\"&#xf56d;\" horiz-adv-x=\"384\" \nd=\"M224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136zM300.45 100.64c10.1299 10.0703 3.00977 27.3604 -11.2705 27.3604h-65.1797v80\nc0 8.83984 -7.16016 16 -16 16h-32c-8.83984 0 -16 -7.16016 -16 -16v-80h-65.1797c-14.2803 0 -21.4004 -17.29 -11.25 -27.3604l96.4199 -95.6992c6.64941 -6.61035 17.3896 -6.61035 24.04 0zM377 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128v128h6.09961\nc6.40039 0 12.5 -2.5 17 -7z\" />\n    <glyph glyph-name=\"file-export\" unicode=\"&#xf56e;\" horiz-adv-x=\"576\" \nd=\"M384 326.1v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7l97.9004 -98c4.5 -4.5 7 -10.5996 7 -16.9004zM571 140c6.59961 -6.59961 6.59961 -17.4004 0 -24l-95.7002 -96.5c-10.0996 -10.0996 -27.3994 -3 -27.3994 11.2998v65.2002h-64v64h64v65.0996\nc0 14.3008 17.2998 21.4004 27.3994 11.3008zM192 112c0 -8.7998 7.2002 -16 16 -16h176v-136c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136c0 -13.2002 10.7998 -24 24 -24h136v-128h-176\nc-8.7998 0 -16 -7.2002 -16 -16v-32z\" />\n    <glyph glyph-name=\"file-import\" unicode=\"&#xf56f;\" \nd=\"M16 160h112v-64h-112c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16zM505 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7zM352 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24\nh-336c-13.2998 0 -24 10.7002 -24 24v136h127.9v-65.0996c0 -14.3008 17.2998 -21.4004 27.3994 -11.3008l95.7002 96.4004c6.59961 6.59961 6.59961 17.2998 0 24l-95.5996 96.5c-10.1006 10.0996 -27.4004 3 -27.4004 -11.2998v-65.2002h-128v264\nc0 13.2998 10.7002 24 24 24h200v-136z\" />\n    <glyph glyph-name=\"file-invoice\" unicode=\"&#xf570;\" horiz-adv-x=\"384\" \nd=\"M288 192v-64h-192v64h192zM377 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7zM224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464\nc0 13.2998 10.7002 24 24 24h200v-136zM64 376v-16c0 -4.41992 3.58008 -8 8 -8h80c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-80c-4.41992 0 -8 -3.58008 -8 -8zM64 312v-16c0 -4.41992 3.58008 -8 8 -8h80c4.41992 0 8 3.58008 8 8v16\nc0 4.41992 -3.58008 8 -8 8h-80c-4.41992 0 -8 -3.58008 -8 -8zM320 8v16c0 4.41992 -3.58008 8 -8 8h-80c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h80c4.41992 0 8 3.58008 8 8zM320 208c0 8.83984 -7.16016 16 -16 16h-224\nc-8.83984 0 -16 -7.16016 -16 -16v-96c0 -8.83984 7.16016 -16 16 -16h224c8.83984 0 16 7.16016 16 16v96z\" />\n    <glyph glyph-name=\"file-invoice-dollar\" unicode=\"&#xf571;\" horiz-adv-x=\"384\" \nd=\"M377 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7zM224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136z\nM64 376v-16c0 -4.41992 3.58008 -8 8 -8h80c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-80c-4.41992 0 -8 -3.58008 -8 -8zM64 296c0 -4.41992 3.58008 -8 8 -8h80c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-80c-4.41992 0 -8 -3.58008 -8 -8\nv-16zM208 32.1201c23.6201 0.629883 42.6699 20.54 42.6699 45.0703c0 19.9697 -12.9902 37.8096 -31.5801 43.3896l-45 13.5c-5.16016 1.54004 -8.76953 6.78027 -8.76953 12.7295c0 7.27051 5.2998 13.1904 11.7998 13.1904h28.1104\nc4.55957 0 8.94922 -1.29004 12.8193 -3.71973c3.24023 -2.03027 7.36035 -1.91016 10.1299 0.729492l11.75 11.21c3.53027 3.37012 3.33008 9.20996 -0.569336 12.1406c-9.10059 6.83984 -20.0801 10.7695 -31.3701 11.3496v24.29c0 4.41992 -3.58008 8 -8 8h-16\nc-4.41992 0 -8 -3.58008 -8 -8v-24.1201c-23.6201 -0.629883 -42.6699 -20.5498 -42.6699 -45.0703c0 -19.9697 12.9893 -37.8096 31.5801 -43.3896l45 -13.5c5.15918 -1.54004 8.76953 -6.78027 8.76953 -12.7295c0 -7.27051 -5.2998 -13.1904 -11.7998 -13.1904h-28.1104\nc-4.55957 0 -8.9502 1.2998 -12.8193 3.71973c-3.24023 2.03027 -7.36035 1.91016 -10.1309 -0.729492l-11.75 -11.21c-3.5293 -3.37012 -3.3291 -9.20996 0.570312 -12.1406c9.10059 -6.83008 20.0801 -10.7695 31.3701 -11.3496v-24.29c0 -4.41992 3.58008 -8 8 -8h16\nc4.41992 0 8 3.58008 8 8v24.1201z\" />\n    <glyph glyph-name=\"file-prescription\" unicode=\"&#xf572;\" horiz-adv-x=\"384\" \nd=\"M224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136zM292.53 132.52c-6.25 6.25 -16.3799 6.25 -22.6299 0l-29.9004 -29.8994l-33.46 33.46\nc19.8398 10.8701 33.46 31.7002 33.46 55.9199c0 35.3496 -28.6504 64 -64 64h-80c-8.83984 0 -16 -7.16016 -16 -16v-160c0 -8.83984 7.16016 -16 16 -16h16c8.83984 0 16 7.16016 16 16v48h18.7402l59.3193 -59.3096l-30.0596 -30.0605\nc-6.25 -6.25 -6.25 -16.3799 0 -22.6299l11.3096 -11.3096c6.25 -6.25 16.3809 -6.25 22.6309 0l30.0596 30.0596l30.0596 -30.0703c6.25 -6.25 16.3809 -6.25 22.6309 0l11.3096 11.3105c6.25 6.25 6.25 16.3799 0 22.6299l-30.0596 30.0596l29.8994 29.9004\nc6.25 6.25 6.25 16.3799 0 22.6299zM176 176h-48v32h48c8.82031 0 16 -7.17969 16 -16s-7.17969 -16 -16 -16zM384 326.1v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7l97.9004 -98c4.5 -4.5 7 -10.5996 7 -16.9004z\" />\n    <glyph glyph-name=\"file-signature\" unicode=\"&#xf573;\" horiz-adv-x=\"576\" \nd=\"M218.17 23.8604c7.25 -14.4707 21.71 -23.4404 37.8301 -23.75l128 -0.110352v-40c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136c0 -13.2002 10.7998 -24 24 -24h136.01v-46.5498l-128 -127.09\nv-82.1201c-3.87012 0.30957 -7.46973 2.47949 -9.35938 6.25977c-11.9404 23.8604 -46.25 30.3496 -66 14.1602l-13.8809 41.6396c-3.28906 9.82031 -12.4297 16.4102 -22.7695 16.4102s-19.4805 -6.59961 -22.7803 -16.4102l-18.1895 -54.6396\nc-1.53027 -4.58008 -5.81055 -7.66016 -10.6406 -7.66016h-12.3896c-8.83984 0 -16 -7.16016 -16 -16s7.16016 -16 16 -16h12.3896c18.6201 0 35.1104 11.8701 41 29.5303l10.6104 31.8799l16.8301 -50.4697c4.4502 -13.46 23.1104 -14.8701 29.4795 -2.09082\nl7.6709 15.3408c2.7998 5.59961 7.93945 6.18945 10.0195 6.18945s7.21973 -0.599609 10.1699 -6.51953zM384 326.1v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7l97.9004 -98c4.5 -4.5 7 -10.5996 7 -16.9004zM288 101.04l162.79 161.62l67.8799 -67.8799\nl-161.68 -162.78h-68.9902v69.04zM568.54 280.67c9.9502 -9.93945 9.9502 -26.0703 0 -36.0098l-27.25 -27.25l-67.8799 67.8799l27.25 27.25c9.93945 9.94043 26.0703 9.94043 36.0098 0z\" />\n    <glyph glyph-name=\"file-upload\" unicode=\"&#xf574;\" horiz-adv-x=\"384\" \nd=\"M224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136zM289.18 95.9902c14.2803 0 21.4004 17.29 11.25 27.3594l-96.4199 95.7002\nc-6.64941 6.61035 -17.3896 6.61035 -24.04 0l-96.4199 -95.7002c-10.1396 -10.0693 -3.00977 -27.3594 11.2705 -27.3594h65.1797v-80c0 -8.83984 7.16016 -16 16 -16h32c8.83984 0 16 7.16016 16 16v80h65.1797zM377 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128\nv128h6.09961c6.40039 0 12.5 -2.5 17 -7z\" />\n    <glyph glyph-name=\"fill\" unicode=\"&#xf575;\" \nd=\"M502.63 230.94c12.4902 -12.5 12.4902 -32.7607 0 -45.2607l-221.57 -221.569c-18.75 -18.75 -43.3096 -28.1201 -67.8799 -28.1201c-24.5596 0 -49.1201 9.37988 -67.8701 28.1201l-117.189 117.189c-37.4902 37.4902 -37.4902 98.2598 0 135.75l94.7598 94.7598\nl-86.1895 86.1807c-6.24023 6.25 -6.24023 16.3799 0 22.6299l22.6191 22.6104c6.24023 6.25 16.3809 6.25 22.6201 0l86.1807 -86.1807l81.5801 81.5801c6.23926 6.25 14.4297 9.37012 22.6191 9.37012c8.19043 0 16.3809 -3.12012 22.6309 -9.37012zM386.41 159.97\nl48.3496 48.3398l-162.45 162.44l-58.9492 -58.9502l58.6094 -58.5996c12.4902 -12.4902 12.4902 -32.75 0 -45.2402c-12.4893 -12.4902 -32.75 -12.4902 -45.2393 0l-58.6104 58.5996l-81.6104 -81.6094l-13.1494 -13.1504\nc-3.86035 -3.84961 -6.07031 -7.99023 -7.43066 -11.8301h320.48z\" />\n    <glyph glyph-name=\"fill-drip\" unicode=\"&#xf576;\" horiz-adv-x=\"576\" \nd=\"M512 128c0 0 64 -92.6504 64 -128s-28.6602 -64 -64 -64s-64 28.6504 -64 64s64 128 64 128zM502.63 230.94c12.4902 -12.5 12.4902 -32.75 -0.00976562 -45.25l-221.57 -221.57c-18.7402 -18.75 -43.2998 -28.1201 -67.8701 -28.1201\nc-24.5596 0 -49.1299 9.37988 -67.8701 28.1201l-117.189 117.189c-37.4902 37.4902 -37.4902 98.2705 0 135.75l94.7598 94.7607l-86.1895 86.1797c-6.24023 6.24023 -6.24023 16.3701 0 22.6201l22.6191 22.6201c6.24023 6.25 16.3701 6.25 22.6201 0l86.1807 -86.1904\nl81.5801 81.5801c6.23926 6.25 14.4297 9.37012 22.6191 9.37012c8.19043 0 16.3809 -3.12012 22.6309 -9.37012zM386.41 159.97l48.3398 48.3398l-162.44 162.44l-58.9492 -58.9502l58.5996 -58.5996c12.4902 -12.4902 12.4902 -32.75 0 -45.2402\ns-32.75 -12.4902 -45.2402 0l-58.5996 58.5996l-81.6104 -81.6094l-13.1494 -13.1504c-3.86035 -3.84961 -6.07031 -7.99023 -7.43066 -11.8301h320.48z\" />\n    <glyph glyph-name=\"fingerprint\" unicode=\"&#xf577;\" \nd=\"M256.12 202.04c13.2598 0 24 -10.75 23.9902 -24c1.55957 -99.1104 -15.9502 -176.61 -29.4805 -224.521c-2.97949 -10.5996 -12.6104 -17.5195 -23.0898 -17.5195c-20.9697 0 -25.8496 20.7695 -23.1201 30.4902c19.5605 69.6494 28.8398 139.3 27.7002 211.55\nc0 13.2598 10.75 24 24 24zM255.26 283.77c56.9707 -0.839844 104.03 -46.9199 104.91 -102.72c0.790039 -50.8994 -2.99023 -102.08 -11.2695 -152.109c-0.770508 -4.6709 -7.61035 -23.1006 -27.5801 -19.7705c-13.0703 2.16016 -21.9307 14.5205 -19.7607 27.5801\nc7.80078 47.2197 11.3809 95.5 10.6104 143.55c-0.469727 30.1299 -26.3096 55 -57.6201 55.4697c-34.5303 0.150391 -54.8594 -26.3896 -54.4502 -52.3398c0.800781 -51.4395 -4.0293 -102.93 -14.3691 -153.02c-2.69043 -12.9805 -15.3105 -21.3105 -28.3604 -18.6406\nc-12.9697 2.6709 -21.3301 15.3809 -18.6396 28.3604c9.61914 46.6396 14.1191 94.6104 13.3691 142.55c-0.849609 54.0205 41.9004 101.16 103.16 101.09zM144.57 303.55c10.2793 -8.37012 11.8398 -23.4795 3.48926 -33.7598\nc-18.7998 -23.0898 -28.4697 -51.0898 -28 -80.9697c0.640625 -40.6699 -2.66992 -81.4902 -9.85938 -121.33c-0.820312 -4.5498 -7.78027 -22.8604 -27.8906 -19.3604c-13.0498 2.36035 -21.6992 14.8398 -19.3594 27.8896c6.63965 36.7803 9.7002 74.4707 9.10938 112.051\nc-0.639648 40.7197 13.1309 80.5 38.75 112c8.39062 10.2793 23.46 11.8193 33.7607 3.47949zM254.04 365.88c101.09 -1.5 184.6 -83.0801 186.16 -181.83c0.0615234 -3.97852 0.111328 -10.4375 0.111328 -14.417c0 -29.1934 -2.68848 -76.4277 -6.00195 -105.433\nc-1.06934 -9.23047 -9.85938 -23.0605 -26.5791 -21.1104c-13.1602 1.5 -22.6104 13.4102 -21.1104 26.5801c4.2998 37.5205 6.16992 75.75 5.58008 113.63c-1.15039 73.0801 -63.4502 133.45 -138.88 134.58c-11.5303 0.0800781 -22.9502 -1.08008 -34 -3.68945\nc-12.8906 -3 -25.8301 4.93945 -28.8906 17.8291c-3.04004 12.9102 4.94043 25.8301 17.8301 28.8906c14.9102 3.53027 30.3701 5.37988 45.7803 4.96973zM506.11 244.43c6.22949 -28.2295 6.00977 -50.1602 5.83008 -72.3398\nc-0.110352 -13.1895 -10.8301 -23.7998 -24 -23.7998h-0.200195c-13.25 0.110352 -23.9102 10.9297 -23.7998 24.2002c0.209961 24.1895 0.00976562 40.1895 -4.7002 61.5996c-2.86035 12.9502 5.31934 25.75 18.2598 28.6104\nc13.0996 2.92969 25.75 -5.35059 28.6104 -18.2705zM465.99 335.15c7.62012 -10.8408 5 -25.8105 -5.83984 -33.4307c-10.8604 -7.58984 -25.8105 -5 -33.4199 5.86035c-39.8906 56.8301 -105.171 91.3604 -174.62 92.3896\nc-56.3408 0.810547 -108.92 -20.0596 -147.681 -58.8594c-37.1201 -37.1406 -57.1094 -86.5 -56.2793 -139l-0.160156 -23.6406c-0.379883 -13 -11.0498 -23.2998 -23.9707 -23.2998c-0.239258 0 -0.489258 0 -0.719727 0.0205078\nc-13.25 0.379883 -23.6699 11.4395 -23.2803 24.6895l0.120117 21.4697c-1.04004 65.6104 23.9502 127.28 70.3203 173.71c48.0098 48.0303 112.56 73.7607 182.35 72.9209c84.79 -1.27051 164.48 -43.4404 213.181 -112.83z\" />\n    <glyph glyph-name=\"fish\" unicode=\"&#xf578;\" horiz-adv-x=\"576\" \nd=\"M327.1 352c137.46 0 248.9 -128 248.9 -160s-111.44 -160 -248.9 -160c-89.9697 0 -168.55 54.7695 -212.279 101.62l-87.3301 -66.0498c-12.1299 -9.16992 -30.2402 0.599609 -27.1406 14.6602l24.1904 109.77l-24.1797 109.76\nc-3.10059 14.0605 15.0098 23.8398 27.1396 14.6602l87.3301 -66.0498c43.7295 46.8604 122.3 101.63 212.27 101.63zM414.53 168c13.25 0 24 10.75 24 24c0 13.2598 -10.7402 24 -24 24c-13.25 0 -24 -10.7402 -24 -24c0 -13.25 10.75 -24 24 -24z\" />\n    <glyph glyph-name=\"flushed\" unicode=\"&#xf579;\" horiz-adv-x=\"496\" \nd=\"M344 248c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24s-24 10.7002 -24 24s10.7002 24 24 24zM152 248c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24s-24 10.7002 -24 24s10.7002 24 24 24zM248 440c137 0 248 -111 248 -248s-111 -248 -248 -248\ns-248 111 -248 248s111 248 248 248zM80 224c0 -39.7998 32.2002 -72 72 -72s72 32.2002 72 72s-32.2002 72 -72 72s-72 -32.2002 -72 -72zM312 48c21.2002 0 21.2002 32 0 32h-128c-21.2002 0 -21.2002 -32 0 -32h128zM344 152c39.7998 0 72 32.2002 72 72\ns-32.2002 72 -72 72s-72 -32.2002 -72 -72s32.2002 -72 72 -72z\" />\n    <glyph glyph-name=\"frown-open\" unicode=\"&#xf57a;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM136 240c0 -17.7002 14.2998 -32 32 -32s32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32zM323.3 56.7002c11.4004 -3.5 22.5 6.2002 20.5 18.0996\nc-7 39.9004 -60.0996 61.2002 -95.7998 61.2002s-88.7998 -21.2002 -95.7998 -61.2002c-2 -11.7998 9 -21.5996 20.5 -18.0996c31.2002 9.59961 59.3994 15.2998 75.2998 15.2998s44.0996 -5.7002 75.2998 -15.2998zM328 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32\ns-32 -14.2998 -32 -32s14.2998 -32 32 -32z\" />\n    <glyph glyph-name=\"glass-martini-alt\" unicode=\"&#xf57b;\" \nd=\"M502.05 390.4l-214.05 -214.04v-192.36h56c22.0898 0 40 -17.9102 40 -40c0 -4.41992 -3.58008 -8 -8 -8h-240c-4.41992 0 -8 3.58008 -8 8c0 22.0898 17.9102 40 40 40h56v192.36l-214.05 214.04c-21.25 21.2598 -6.2002 57.5996 23.8496 57.5996h444.4\nc30.0498 0 45.0996 -36.3398 23.8496 -57.5996zM443.77 400h-375.529l48 -48h279.529z\" />\n    <glyph glyph-name=\"globe-africa\" unicode=\"&#xf57c;\" horiz-adv-x=\"496\" \nd=\"M248 440c136.97 0 248 -111.03 248 -248s-111.03 -248 -248 -248s-248 111.03 -248 248s111.03 248 248 248zM408 224.5c0 8.55957 6.94043 15.5 15.5 15.5h18.4297c-19.0693 76.9805 -82.6992 136.37 -161.92 149.21v-21.7002c0 -8.55957 -6.93945 -15.5 -15.5 -15.5\nh-24.21c-5.17969 0 -10.0195 -2.58984 -12.8896 -6.89941l-8.08008 -12.1104c-2.13965 -3.20996 -5.40039 -5.5 -9.13965 -6.44043l-14.4502 -3.60938c-6.90039 -1.73047 -11.7402 -7.93066 -11.7402 -15.04v-4.40039c0 -8.55957 6.94043 -15.5 15.5 -15.5h90.0498\nh0.00292969c3.54297 0 8.45215 -2.0332 10.957 -4.54004l6.91992 -6.91992c2.91016 -2.91016 6.85059 -4.54004 10.96 -4.54004h10.0908c8.55957 0 15.5 -6.93945 15.5 -15.5c0 -6.66992 -4.27051 -12.5898 -10.6006 -14.7002l-47.3096 -15.7695\nc-3.90039 -1.2998 -8.15039 -1 -11.8301 0.839844l-14.7207 7.36035c-7.5791 3.7998 -15.9492 5.76953 -24.4297 5.76953h-0.889648c-10.0527 -0.00195312 -24.7383 -4.89941 -32.7803 -10.9297l-27.5801 -20.6904c-13.75 -10.3193 -21.8496 -26.5098 -21.8496 -43.6992\nv-14.0605c0.00195312 -12.4902 7.16992 -29.7959 16 -38.6299c10.25 -10.2402 24.1396 -16 38.6299 -16h25.8799c8.55957 0 15.5 -6.94043 15.5 -15.5v-29.8896v-0.00390625c0 -10.2822 3.73145 -26.0898 8.33008 -35.2861\nc4.7002 -9.40039 14.3096 -15.3398 24.8203 -15.3398c8.19824 0.000976562 18.542 5.53809 23.0898 12.3594l13.0293 19.5498c5.9248 8.88477 17.125 21.9482 25 29.1602c2.4707 2.27051 4.14062 5.27051 4.76074 8.56055l4.2998 22.8301\nc0.439453 2.3291 1.41016 4.5293 2.83008 6.42969l18.7402 24.9795c2.00977 2.68066 3.09961 5.9502 3.09961 9.30078v11.3398c0 8.55957 -6.94043 15.5 -15.5 15.5h-8.20996c-5.17969 0 -10.0205 2.58984 -12.8896 6.89941l-13.2402 19.8604\nc-5.66992 8.50977 -1.70996 20.0703 7.99023 23.2998l2.64941 0.879883c1.31641 0.4375 3.50977 0.792969 4.89746 0.792969c2.5918 0 6.44531 -1.16602 8.60254 -2.60254l18.21 -12.1396c2.15527 -1.43945 6.00781 -2.60742 8.59961 -2.60742\nc2.01953 0 5.125 0.733398 6.93066 1.63672l15.3896 7.7002c5.25 2.62012 8.57031 7.99023 8.57031 13.8604v6.92969z\" />\n    <glyph glyph-name=\"globe-americas\" unicode=\"&#xf57d;\" horiz-adv-x=\"496\" \nd=\"M248 440c136.97 0 248 -111.03 248 -248s-111.03 -248 -248 -248s-248 111.03 -248 248s111.03 248 248 248zM330.29 82.4004c7.56934 7.52832 13.7168 22.3037 13.7197 32.9795v0.00488281c0 6.97266 -4 16.6338 -8.92969 21.5654l-13.6904 13.6895\nc-6.00977 6 -14.1396 9.37012 -22.6299 9.37012h-66.75c-9.41016 4.70996 -21.4795 32 -32 32c-10.5195 0 -20.8994 2.4502 -30.3096 7.16016l-11.0801 5.54004c-4.0498 2.03027 -6.61035 6.16016 -6.61035 10.6904v0.00292969c0 4.75391 3.66016 9.83301 8.16992 11.3369\nl31.1699 10.3896c1.3584 0.452148 3.62305 0.818359 5.05469 0.818359c3.30078 0 8.00293 -1.75488 10.4961 -3.91797l9.2793 -8.06055c1.4502 -1.25977 3.31055 -1.95996 5.24023 -1.95996h5.63965c5.94043 0 9.81055 6.25977 7.15039 11.5801l-15.5898 31.1904\nc-0.464844 0.931641 -0.84082 2.53223 -0.84082 3.57227c0 1.86621 1.08398 4.43555 2.4209 5.7373l9.91992 9.65039c1.5 1.45996 3.5 2.26953 5.58008 2.26953h8.99023h0.00292969c1.82812 0 4.3623 1.04883 5.65625 2.33984l8 8\nc3.12012 3.12012 3.12012 8.19043 0 11.3105l-4.68945 4.68945c-3.12012 3.12012 -3.12012 8.19043 0 11.3105l10.3398 10.3398l4.69043 4.67969c6.25 6.25 6.25 16.3799 0 22.6299l-28.3008 28.3008c-8.26953 -0.310547 -16.3994 -1.12988 -24.3896 -2.41992v-11.3008\nc0 -11.8994 -12.5195 -19.6299 -23.1602 -14.3096l-24.0098 12.0098c-45.8398 -19.8496 -82.7305 -56.3896 -103.2 -101.89c9.92969 -14.7197 25.21 -37.3701 34.5898 -51.1406c4.29395 -6.3252 12.3848 -15.6172 18.0605 -20.7393l0.799805 -0.720703\nc9.5498 -8.60938 20.1699 -15.9697 31.6504 -21.75c14 -7.0498 34.4395 -18.1592 48.8096 -26.1094c10.1904 -5.62988 16.46 -16.3301 16.46 -27.9707v-32.0098c0 -8.49023 3.37012 -16.6299 9.37012 -22.6299c14.9902 -14.9902 24.3203 -38.6299 22.6299 -51.25v-27.3799\nc14.6504 0 28.8896 1.69043 42.6504 4.69043l17.3896 46.8496c2.04004 5.49023 3.25977 11.21 4.76953 16.8701c1.07031 4.00977 3.18066 7.70996 6.1709 10.71c3.31934 3.33008 7.40918 7.39941 11.3096 11.2803zM417 173.75l29.1797 -7.29004\nc1.08008 8.37988 1.82031 16.8701 1.82031 25.54c0 32.1299 -7.7998 62.4102 -21.3203 89.3301l-12.9795 -6.49023c-3.74023 -1.85938 -6.91992 -4.67969 -9.24023 -8.14941l-19.5898 -29.3809c-2.22754 -3.33594 -4.03516 -9.29883 -4.03516 -13.3096\ns1.80762 -9.97363 4.03516 -13.3096l17.9795 -26.9707c3.31055 -4.96973 8.36035 -8.51953 14.1504 -9.96973z\" />\n    <glyph glyph-name=\"globe-asia\" unicode=\"&#xf57e;\" horiz-adv-x=\"496\" \nd=\"M248 440c136.97 0 248 -111.03 248 -248s-111.03 -248 -248 -248s-248 111.03 -248 248s111.03 248 248 248zM236.66 199.77l17.3701 28.9502c1.7998 2.99023 6.2002 2.82031 7.75977 -0.299805c1.34961 -2.70996 4.12012 -4.41992 7.15039 -4.41992h3.05957\nc4.41992 0 8 3.58008 8 8v78.1201c0 6.05957 -3.41992 11.5996 -8.83984 14.3096l-10.8301 5.41016c-5.49023 2.75 -5.96973 10.4004 -0.860352 13.8105l50.1602 38.5293c-19.4297 6.31055 -40.1201 9.82031 -61.6299 9.82031c-110.28 0 -200 -89.7197 -200 -200\nc0 -10.9199 1.12012 -21.5498 2.80957 -31.9902h62.5703c4.24023 0 8.31055 1.69043 11.3105 4.69043l19.4697 19.46c3.85938 3.85938 10.3701 2.7998 12.8096 -2.08008l22.6201 -45.2305c2.70996 -5.42969 8.25 -8.84961 14.3105 -8.84961h6.10938\nc8.83984 0 16 7.16016 16 16v9.37012c0 4.24023 -1.68945 8.30957 -4.68945 11.3096l-5.66016 5.66016c-3.12012 3.12012 -3.12012 8.19043 0 11.3105l5.66016 5.65918c3 3 7.06934 4.69043 11.3096 4.69043h0.310547c5.61914 0 10.8291 2.9502 13.7197 7.76953z\nM408 89.5703l-0.00976562 24.5996c0 4.24023 -1.69043 8.31055 -4.69043 11.3105l-11.9102 11.9092c-1.5 1.5 -2.33984 3.54004 -2.33984 5.66016v12.9307c0 2.20996 -1.79004 4 -4 4h-6.05957c-1.78027 0 -3.33984 -1.1709 -3.83984 -2.88086l-4.2002 -14.4697\nc-0.490234 -1.7002 -2.06055 -2.87988 -3.83984 -2.87988h-3.80078c-1.4707 0.000976562 -3.12305 1.10254 -3.68945 2.45996l-5.35059 12.8496c-1.23926 2.99023 -4.15918 4.93066 -7.38965 4.93066h-12.0898h-0.0117188c-1.4082 0 -3.48145 -0.663086 -4.62793 -1.48047\nl-23.71 -16.8896c-1.73047 -1.23047 -3.61035 -2.25977 -5.59082 -3.0498l-39.3398 -15.7402c-3.04004 -1.21973 -5.0293 -4.16016 -5.0293 -7.42969v-10.2002v-0.00292969c0 -1.8291 1.04785 -4.36328 2.33984 -5.65723l11.9102 -11.9102\nc3 -3 7.06934 -4.68945 11.3096 -4.68945h10.3398c1.31055 0 2.61035 0.15918 3.87988 0.479492l21.2705 5.32031c1.76465 0.441406 4.67383 0.798828 6.49316 0.798828c6.12012 0 14.5986 -3.51172 18.9268 -7.83887l13.0098 -13.0098\nc3 -3 7.07031 -4.69043 11.3096 -4.69043h15.1602c4.24023 0 8.31055 1.69043 11.3105 4.69043l9.56934 9.56934c3 3 4.69043 7.07031 4.69043 11.3105z\" />\n    <glyph glyph-name=\"grimace\" unicode=\"&#xf57f;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM144 48v40h-40v-8c0 -17.7002 14.2998 -32 32 -32h8zM144 104v40h-8c-17.7002 0 -32 -14.2998 -32 -32v-8h40zM136 240c0 -17.7002 14.2998 -32 32 -32s32 14.2998 32 32\ns-14.2998 32 -32 32s-32 -14.2998 -32 -32zM208 48v40h-48v-40h48zM208 104v40h-48v-40h48zM272 48v40h-48v-40h48zM272 104v40h-48v-40h48zM336 48v40h-48v-40h48zM336 104v40h-48v-40h48zM328 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32\ns14.2998 -32 32 -32zM392 80v8h-40v-40h8c17.7002 0 32 14.2998 32 32zM392 104v8c0 17.7002 -14.2998 32 -32 32h-8v-40h40z\" />\n    <glyph glyph-name=\"grin\" unicode=\"&#xf580;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM328 272c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32s32 14.2998 32 32s-14.2998 32 -32 32zM168 272c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32\ns32 14.2998 32 32s-14.2998 32 -32 32zM248 16c60.5996 0 134.5 38.2998 143.8 93.2998c1.90039 11.7998 -9.39941 21.6006 -20.7002 17.9004c-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002s-92.9004 5.5 -123.1 15.2002\nc-11.4004 3.7002 -22.7002 -6.10059 -20.7002 -17.9004c9.2998 -55 83.2002 -93.2998 143.8 -93.2998z\" />\n    <glyph glyph-name=\"grin-alt\" unicode=\"&#xf581;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM311.7 311.3c-12.4004 -18.3994 -15.2002 -36.8994 -15.7002 -55.2998c0.599609 -18.4004 3.2998 -36.9004 15.7002 -55.2998c8 -11.7002 25.0996 -11.4004 32.7002 0\nc12.3994 18.3994 15.1992 36.8994 15.6992 55.2998c-0.599609 18.4004 -3.2998 36.9004 -15.6992 55.2998c-8 11.7002 -25.1006 11.4004 -32.7002 0zM151.7 311.3c-12.4004 -18.3994 -15.2002 -36.8994 -15.7002 -55.2998\nc0.599609 -18.4004 3.2998 -36.9004 15.7002 -55.2998c8 -11.7002 25.0996 -11.4004 32.7002 0c12.3994 18.3994 15.1992 36.8994 15.6992 55.2998c-0.599609 18.4004 -3.2998 36.9004 -15.6992 55.2998c-8 11.7002 -25.1006 11.4004 -32.7002 0zM248 16\nc60.5996 0 134.5 38.2998 143.8 93.2998c1.90039 11.7998 -9.2998 21.6006 -20.7002 17.9004c-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002s-92.9004 5.5 -123.1 15.2002c-11.4004 3.7002 -22.7002 -6.10059 -20.7002 -17.9004\nc9.2998 -55 83.2002 -93.2998 143.8 -93.2998z\" />\n    <glyph glyph-name=\"grin-beam\" unicode=\"&#xf582;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM328 296c-23.7998 0 -52.7002 -29.2998 -55.7998 -71.4004c-0.700195 -8.5 10.7998 -11.7998 14.8994 -4.5l9.5 17c7.7002 13.7002 19.2002 21.6006 31.5 21.6006\nc12.3008 0 23.8008 -7.90039 31.5 -21.6006l9.5 -17c4.10059 -7.39941 15.6006 -4.09961 14.9004 4.5c-3.2998 42.1006 -32.2002 71.4004 -56 71.4004zM168 296c-23.7998 0 -52.7002 -29.2998 -55.7998 -71.4004c-0.700195 -8.5 10.7002 -11.8994 14.8994 -4.5l9.5 17\nc7.7002 13.7002 19.2002 21.6006 31.5 21.6006c12.3008 0 23.8008 -7.90039 31.5 -21.6006l9.5 -17c4.10059 -7.39941 15.6006 -4.09961 14.9004 4.5c-3.2998 42.1006 -32.2002 71.4004 -56 71.4004zM248 16c60.5996 0 134.5 38.2998 143.8 93.2998\nc1.90039 11.7998 -9.2998 21.6006 -20.7002 17.9004c-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002s-92.9004 5.5 -123.1 15.2002c-11.3008 3.7002 -22.7002 -6 -20.7002 -17.9004c9.2998 -55 83.2002 -93.2998 143.8 -93.2998z\" />\n    <glyph glyph-name=\"grin-beam-sweat\" unicode=\"&#xf583;\" horiz-adv-x=\"504\" \nd=\"M456 320c-26.5 0 -48 21 -48 47c0 20 28.5 60.4004 41.5996 77.7998c3.2002 4.2998 9.60059 4.2998 12.8008 0c13.0996 -17.3994 41.5996 -57.7998 41.5996 -77.7998c0 -26 -21.5 -47 -48 -47zM456 288c6.7998 0 13.2002 1.09961 19.5 2.59961\nc13.0996 -30.1992 20.5 -63.5 20.5 -98.5996c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248c50.2998 0 97 -15.0996 136.1 -40.7998c-7.7998 -18 -8.09961 -27.7998 -8.09961 -32.2002c0 -43.5996 35.9004 -79 80 -79zM328 296\nc-23.7998 0 -52.7002 -29.2998 -55.7998 -71.4004c-0.700195 -8.5 10.7998 -11.8994 14.8994 -4.5l9.5 17c7.7002 13.7002 19.2002 21.6006 31.5 21.6006c12.3008 0 23.8008 -7.90039 31.5 -21.6006l9.5 -17c4.10059 -7.5 15.6006 -4.09961 14.9004 4.5\nc-3.2998 42.1006 -32.2002 71.4004 -56 71.4004zM168 296c-23.7998 0 -52.7002 -29.2998 -55.7998 -71.4004c-0.700195 -8.5 10.7002 -11.8994 14.8994 -4.5l9.5 17c7.7002 13.7002 19.2002 21.6006 31.5 21.6006c12.3008 0 23.8008 -7.90039 31.5 -21.6006l9.5 -17\nc4.10059 -7.5 15.6006 -4.09961 14.9004 4.5c-3.2998 42.1006 -32.2002 71.4004 -56 71.4004zM248 16c60.5996 0 134.5 38.2998 143.8 93.2998c1.90039 11.7002 -9.2002 21.6006 -20.7002 17.9004c-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002\ns-92.9004 5.5 -123.1 15.2002c-11.4004 3.7002 -22.7002 -6.10059 -20.7002 -17.9004c9.2998 -55 83.2002 -93.2998 143.8 -93.2998z\" />\n    <glyph glyph-name=\"grin-hearts\" unicode=\"&#xf584;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM90.4004 264.4c-7.7002 -20.2002 3.7998 -41.8008 24.1992 -47.2002l70.2002 -18.2002c4.60059 -1.2002 9.2998 1.5 10.5 6l19.4004 69.9004\nc5.59961 20.2998 -7.40039 41.0996 -28.7998 44.5c-18.7002 3 -36.5 -9.80078 -41.5 -27.9004l-2 -7.09961l-7.10059 1.89941c-18.2002 4.7998 -38.2002 -4.2998 -44.8994 -21.8994zM248 16c60.5996 0 134.5 38.2998 143.8 93.2998\nc1.90039 11.7998 -9.2998 21.5 -20.7002 17.9004c-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002s-92.9004 5.5 -123.1 15.2002c-11.5 3.59961 -22.7002 -6.10059 -20.7002 -17.9004c9.2998 -55 83.2002 -93.2998 143.8 -93.2998zM381.4 217.3\nc20.3994 5.2998 31.8994 26.9004 24.1992 47.2002c-6.69922 17.5996 -26.6992 26.5996 -44.8994 21.9004l-7.10059 -1.90039l-2 7.09961c-5.09961 18.1006 -22.8994 30.9004 -41.5 27.9004c-21.3994 -3.40039 -34.3994 -24.2002 -28.7998 -44.5l19.4004 -69.9004\nc1.2998 -4.5 6 -7.19922 10.5 -6z\" />\n    <glyph glyph-name=\"grin-squint\" unicode=\"&#xf585;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM281.8 250.3c-7.7002 -4.7002 -7.7002 -15.8994 0 -20.5996l80 -48c11.5 -6.7998 24.1006 7.59961 15.4004 18l-33.6006 40.2998l33.6006 40.2998\nc8.59961 10.2998 -3.7998 24.9004 -15.4004 18zM118.8 280.3l33.6006 -40.2998l-33.6006 -40.2998c-8.59961 -10.4004 3.90039 -24.7998 15.4004 -18l80 48c7.7998 4.7002 7.7998 15.8994 0 20.5996l-80 48c-11.6006 6.90039 -24 -7.7002 -15.4004 -18zM248 16\nc60.5996 0 134.5 38.2998 143.8 93.2998c1.90039 11.7002 -9.2002 21.6006 -20.7002 17.9004c-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002s-92.9004 5.5 -123.1 15.2002c-11.3008 3.7002 -22.7002 -6 -20.7002 -17.9004\nc9.2998 -55 83.2002 -93.2998 143.8 -93.2998z\" />\n    <glyph glyph-name=\"grin-squint-tears\" unicode=\"&#xf586;\" \nd=\"M409.6 336.1c-5.59961 -0.799805 -10.2998 3.90039 -9.5 9.40039c3.30078 22.5996 12 73.5 26.8008 88.2998c19.0996 19.2002 50.6992 18.9004 70.2998 -0.700195c19.5996 -19.5996 19.8994 -51 0.700195 -70.1992\nc-14.8008 -14.8008 -65.7002 -23.6006 -88.3008 -26.8008zM102.4 47.9004c5.59961 0.799805 10.2998 -3.90039 9.5 -9.40039c-3.30078 -22.5996 -12 -73.5 -26.8008 -88.2998c-19.1992 -19.2002 -50.5996 -18.9004 -70.1992 0.700195\nc-19.6006 19.5996 -19.9004 51.0996 -0.800781 70.1992c14.8008 14.8008 65.7002 23.6006 88.3008 26.8008zM414.1 304.4c24 3.5 42.1006 7.39941 56.5 11.5c54.8008 -94.9004 42 -218.2 -39.1992 -299.301c-81.2002 -81.0996 -204.5 -94 -299.301 -39.1992\nc4.10059 14.3994 8.10059 32.5 11.5 56.5c2.90039 20.5 -12.5 49.5996 -45.6992 45.6992c-24.1006 -3.5 -42.1006 -7.39941 -56.5 -11.5c-54.8008 94.9004 -41.9004 218.2 39.1992 299.301c81.2002 81.0996 204.5 94 299.301 39.1992\nc-4.10059 -14.3994 -8.10059 -32.5 -11.5 -56.5c-2.90039 -20.5996 12.6992 -49.5996 45.6992 -45.6992zM255.7 342l-22.5 -90.5996c-2.2002 -8.60059 5.59961 -16.7002 14.5 -14.5l90.5 22.5996c13.0996 3.2998 11.5996 22.4004 -1.7998 23.5996l-52.3008 4.80078\nl-4.7998 52.2998c-1.2002 13.2998 -20.2998 15 -23.5996 1.7998zM164.8 111.7c1.2998 -13.4004 20.4004 -14.9004 23.5 -1.7002l22.6006 90.5c2.19922 8.7002 -5.7002 16.7002 -14.5 14.5l-90.5 -22.5996c-13.1006 -3.30078 -11.6006 -22.4004 1.7998 -23.6006\nl52.2998 -4.7998zM380.5 67.5c42.7998 42.9004 68 122.3 35.7002 167.6c-7.10059 9.90039 -21.9004 8.5 -27.2998 -2c-14.6006 -28.1992 -42.4004 -63.8994 -76.3008 -97.7998c-33.8994 -33.8994 -69.5 -61.7002 -97.7998 -76.2998\nc-10.7002 -5.40039 -11.7998 -20.2998 -2 -27.2002c14.4004 -10.2002 32.1006 -14.7002 51 -14.7002c41 0 87.4004 21.1006 116.7 50.4004z\" />\n    <glyph glyph-name=\"grin-stars\" unicode=\"&#xf587;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM94.5996 279.1c-6.19922 -1 -8.89941 -8.59961 -4.2998 -13.2998l25.4004 -24.5996l-6 -34.9004c-1 -6.2002 5.2998 -11 11 -7.89941l31.2998 16.2998l31.2002 -16.2002\nc5.7002 -3.09961 12 1.7002 11 7.90039l-6 34.8994l25.3994 24.6006c4.60059 4.59961 1.90039 12.1992 -4.2998 13.1992l-34.8994 5l-15.5 31.6006c-2.90039 5.7998 -11 5.7998 -13.9004 0l-15.5 -31.6006zM248 16c60.5996 0 134.5 38.2998 143.8 93.2998\nc1.90039 11.7998 -9.2002 21.6006 -20.7002 17.9004c-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002s-92.9004 5.5 -123.1 15.2002c-11.4004 3.59961 -22.7002 -6.10059 -20.7002 -17.9004c9.2998 -55 83.2002 -93.2998 143.8 -93.2998zM405.7 265.9\nc4.59961 4.59961 1.89941 12.1992 -4.40039 13.0996l-34.8994 5l-15.5 31.5996c-2.90039 5.80078 -11 5.80078 -13.9004 0l-15.5 -31.5996l-34.9004 -5c-6.19922 -1 -8.7998 -8.59961 -4.2998 -13.2002l25.4004 -24.5996l-6 -34.9004c-1 -6.2002 5.2998 -11 11 -7.89941\nl31.2998 16.2998l31.2998 -16.2002c5.7002 -3.09961 12 1.7002 11 7.90039l-6 34.8994z\" />\n    <glyph glyph-name=\"grin-tears\" unicode=\"&#xf588;\" horiz-adv-x=\"640\" \nd=\"M102.4 191.9c5.59961 0.799805 10.2998 -3.90039 9.5 -9.40039c-3.30078 -22.5996 -12 -73.5 -26.8008 -88.2998c-19.1992 -19.2002 -50.5996 -18.9004 -70.1992 0.700195c-19.6006 19.5996 -19.9004 51.0996 -0.800781 70.1992\nc14.8008 14.8008 65.7002 23.6006 88.3008 26.8008zM625.8 165.1c19.2002 -19.0996 18.7998 -50.6992 -0.799805 -70.2998c-19.5996 -19.5996 -51 -19.8994 -70.2002 -0.700195c-14.7998 14.8008 -23.5996 65.7002 -26.7998 88.3008c-0.799805 5.59961 4 10.2998 9.5 9.5\nc22.5996 -3.30078 73.5 -12 88.2998 -26.8008zM496.4 177.9c11.7998 -82.3008 29.8994 -100.4 35.7998 -106.301c0.899414 -1 2 -1.59961 3 -2.5c-42.7002 -74.6992 -123 -125.1 -215.2 -125.1s-172.5 50.4004 -215.2 125c1 0.900391 2.10059 1.59961 3 2.5\nc5.90039 6 24 24.0996 35.7998 106.4c2.90039 20.3994 -12.5 49.5996 -45.6992 45.6992c-8.90039 -1.2998 -16.8008 -2.69922 -24.3008 -4.09961c13.7002 124 118.7 220.5 246.4 220.5s232.7 -96.5 246.4 -220.5c-7.5 1.40039 -15.4004 2.7998 -24.3008 4.09961\nc-26.5996 3.80078 -49.5 -19.0996 -45.6992 -45.6992zM400 296c-23.7998 0 -52.7002 -29.2998 -55.7998 -71.4004c-0.700195 -8.5 10.7002 -11.8994 14.8994 -4.5l9.5 17c7.7002 13.7002 19.2002 21.6006 31.5 21.6006c12.3008 0 23.8008 -7.90039 31.5 -21.6006l9.5 -17\nc4.10059 -7.5 15.6006 -4.09961 14.9004 4.5c-3.2998 42.1006 -32.2002 71.4004 -56 71.4004zM240 296c-23.7998 0 -52.7002 -29.2998 -55.7998 -71.4004c-0.700195 -8.5 10.7002 -11.8994 14.8994 -4.5l9.5 17c7.7002 13.7002 19.2002 21.6006 31.5 21.6006\nc12.3008 0 23.8008 -7.90039 31.5 -21.6006l9.5 -17c4.10059 -7.5 15.6006 -4.09961 14.9004 4.5c-3.2998 42.1006 -32.2002 71.4004 -56 71.4004zM320 16c60.5996 0 134.5 38.2998 143.8 93.2998c1.90039 11.7998 -9.2998 21.6006 -20.7002 17.9004\nc-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002s-92.9004 5.5 -123.1 15.2002c-11.5 3.7002 -22.7002 -6.2002 -20.7002 -17.9004c9.2998 -55 83.2002 -93.2998 143.8 -93.2998z\" />\n    <glyph glyph-name=\"grin-tongue\" unicode=\"&#xf589;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248c0 -106.3 -67 -196.7 -161 -232c5.59961 12.2002 9 25.7002 9 40v45.5c24.7002 16.2002 43.5 38.0996 47.7998 63.7998c1.90039 11.7998 -9.2998 21.5 -20.7002 17.9004c-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002\ns-92.9004 5.5 -123.1 15.2002c-11.4004 3.59961 -22.7002 -6.10059 -20.7002 -17.9004c4.2998 -25.7002 23.0996 -47.5996 47.7998 -63.7998v-45.5c0 -14.2998 3.40039 -27.7998 9 -40c-94 35.2998 -161 125.7 -161 232c0 137 111 248 248 248zM168 208\nc17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM328 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM293.1 73.4004c0.800781 -0.400391 -0.5 0.299805 19 -9.30078v-64\nc0 -35.5996 -29.1992 -64.5 -64.8994 -64c-35.1006 0.400391 -63.1006 29.7002 -63.1006 64.9004v63c19.2002 9.59961 18 9 18.9004 9.40039c14.4004 6.5 31.0996 -2.2002 34.5996 -17.6006l1.80078 -7.7998c2.09961 -9.2002 15.1992 -9.2002 17.2998 0l1.7998 7.7998\nc3.5 15.4004 20.2002 24.1006 34.5996 17.6006z\" />\n    <glyph glyph-name=\"grin-tongue-squint\" unicode=\"&#xf58a;\" horiz-adv-x=\"496\" \nd=\"M293.1 73.4004c0.800781 -0.400391 -0.5 0.299805 19 -9.30078v-64c0 -35.5996 -29.1992 -64.5 -64.8994 -64c-35.1006 0.400391 -63.1006 29.7002 -63.1006 64.9004v63c19.2002 9.59961 18 9 18.9004 9.40039c14.4004 6.5 31.0996 -2.2002 34.5996 -17.6006\nl1.80078 -7.7998c2.09961 -9.2002 15.1992 -9.2002 17.2998 0l1.7998 7.7998c3.5 15.4004 20.2002 24.1006 34.5996 17.6006zM248 440c137 0 248 -111 248 -248c0 -106.3 -67 -196.7 -161 -232c5.59961 12.2002 9 25.7002 9 40v45.5\nc24.7002 16.2002 43.5 38.0996 47.7998 63.7998c1.90039 11.7998 -9.2998 21.6006 -20.7002 17.9004c-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002s-92.9004 5.5 -123.1 15.2002c-11.5 3.59961 -22.7002 -6.10059 -20.7002 -17.9004\nc4.2998 -25.7002 23.0996 -47.5996 47.7998 -63.7998v-45.5c0 -14.2998 3.40039 -27.7998 9 -40c-94 35.2998 -161 125.7 -161 232c0 137 111 248 248 248zM214.2 229.7c7.7002 4.7002 7.7002 15.8994 0 20.5996l-80 48c-11.6006 6.90039 -24 -7.7002 -15.4004 -18\nl33.6006 -40.2998l-33.6006 -40.2998c-8.59961 -10.4004 3.90039 -24.7998 15.4004 -18zM377.2 199.7l-33.6006 40.2998l33.6006 40.2998c8.5 10.2998 -3.7002 24.9004 -15.4004 18l-80 -48c-7.7998 -4.7002 -7.7998 -15.8994 0 -20.5996l80 -48\nc11.5 -6.7998 24.1006 7.59961 15.4004 18z\" />\n    <glyph glyph-name=\"grin-tongue-wink\" unicode=\"&#xf58b;\" horiz-adv-x=\"496\" \nd=\"M344 264c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24s-24 10.7002 -24 24s10.7002 24 24 24zM248 440c137 0 248 -111 248 -248c0 -106.3 -67 -196.7 -161 -232c5.59961 12.2002 9 25.7002 9 40v45.5c24.7002 16.2002 43.5 38.0996 47.7998 63.7998\nc1.90039 11.7998 -9.2002 21.6006 -20.7002 17.9004c-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002s-92.9004 5.5 -123.1 15.2002c-11.4004 3.59961 -22.7002 -6.10059 -20.7002 -17.9004c4.2998 -25.7002 23.0996 -47.5996 47.7998 -63.7998v-45.5\nc0 -14.2998 3.40039 -27.7998 9 -40c-94 35.2998 -161 125.7 -161 232c0 137 111 248 248 248zM192 215c8.40039 -7.40039 21.5996 -0.299805 20 10.7998c-4 25.2002 -34.2002 42.1006 -59.9004 42.1006c-25.6992 0 -55.8994 -16.9004 -59.8994 -42.1006\nc-1.7998 -11.0996 11.2998 -18.2002 19.7998 -10.7998l9.5 8.5c14.7998 13.2002 46.2002 13.2002 61 0zM344 176c35.2998 0 64 28.7002 64 64s-28.7002 64 -64 64s-64 -28.7002 -64 -64s28.7002 -64 64 -64zM293.1 73.4004c0.800781 -0.400391 -0.5 0.299805 19 -9.30078\nv-64c0 -35.5996 -29.1992 -64.5 -64.8994 -64c-35.1006 0.400391 -63.1006 29.7002 -63.1006 64.9004v63c19.2002 9.59961 18 9 18.9004 9.40039c14.4004 6.5 31.0996 -2.2002 34.5996 -17.6006l1.80078 -7.7998c2.09961 -9.2002 15.1992 -9.2002 17.2998 0l1.7998 7.7998\nc3.5 15.4004 20.2002 24.1006 34.5996 17.6006z\" />\n    <glyph glyph-name=\"grin-wink\" unicode=\"&#xf58c;\" horiz-adv-x=\"496\" \nd=\"M0 192c0 137 111 248 248 248s248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248zM200 240c0 17.7002 -14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32s32 14.2998 32 32zM368 215c8.5 -7.40039 21.5996 -0.200195 20 10.7998\nc-4 25.2002 -34.2002 42.1006 -59.9004 42.1006c-25.6992 0 -55.8994 -16.9004 -59.8994 -42.1006c-1.7998 -11.2002 11.5 -18.2002 19.7998 -10.7998l9.5 8.5c14.7998 13.2002 46.2002 13.2002 61 0zM124.9 127.2c-11.4004 3.7002 -22.7002 -6 -20.7002 -17.9004\nc9.2998 -55 83.2002 -93.2998 143.8 -93.2998s134.6 38.2998 143.8 93.2998c1.90039 11.9004 -9.39941 21.6006 -20.7002 17.9004c-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002s-92.9004 5.5 -123.1 15.2002z\" />\n    <glyph glyph-name=\"grip-horizontal\" unicode=\"&#xf58d;\" horiz-adv-x=\"448\" \nd=\"M96 160c17.6699 0 32 -14.3301 32 -32v-64c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v64c0 17.6699 14.3301 32 32 32h64zM256 160c17.6699 0 32 -14.3301 32 -32v-64c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v64\nc0 17.6699 14.3301 32 32 32h64zM416 160c17.6699 0 32 -14.3301 32 -32v-64c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v64c0 17.6699 14.3301 32 32 32h64zM96 352c17.6699 0 32 -14.3301 32 -32v-64c0 -17.6699 -14.3301 -32 -32 -32h-64\nc-17.6699 0 -32 14.3301 -32 32v64c0 17.6699 14.3301 32 32 32h64zM256 352c17.6699 0 32 -14.3301 32 -32v-64c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v64c0 17.6699 14.3301 32 32 32h64zM416 352c17.6699 0 32 -14.3301 32 -32v-64\nc0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v64c0 17.6699 14.3301 32 32 32h64z\" />\n    <glyph glyph-name=\"grip-vertical\" unicode=\"&#xf58e;\" horiz-adv-x=\"320\" \nd=\"M96 416c17.6699 0 32 -14.3301 32 -32v-64c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v64c0 17.6699 14.3301 32 32 32h64zM96 256c17.6699 0 32 -14.3301 32 -32v-64c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v64\nc0 17.6699 14.3301 32 32 32h64zM96 96c17.6699 0 32 -14.3301 32 -32v-64c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v64c0 17.6699 14.3301 32 32 32h64zM288 416c17.6699 0 32 -14.3301 32 -32v-64c0 -17.6699 -14.3301 -32 -32 -32h-64\nc-17.6699 0 -32 14.3301 -32 32v64c0 17.6699 14.3301 32 32 32h64zM288 256c17.6699 0 32 -14.3301 32 -32v-64c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v64c0 17.6699 14.3301 32 32 32h64zM288 96c17.6699 0 32 -14.3301 32 -32v-64\nc0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v64c0 17.6699 14.3301 32 32 32h64z\" />\n    <glyph glyph-name=\"headphones-alt\" unicode=\"&#xf58f;\" \nd=\"M160 160c17.6699 0 32 -14.3496 32 -32.0596v-127.881c0 -17.6992 -14.3301 -32.0596 -32 -32.0596h-16c-35.3496 0 -64 28.71 -64 64.1201v63.7598c0 35.4199 28.6504 64.1201 64 64.1201h16zM368 160c35.3496 0 64 -28.71 64 -64.1201v-63.7598\nc0 -35.4102 -28.6504 -64.1201 -64 -64.1201h-16c-17.6699 0 -32 14.3604 -32 32.0596v127.881c0 17.71 14.3301 32.0596 32 32.0596h16zM256 416c143.09 0 251.43 -119.13 256 -256v-112c0 -8.83984 -7.16016 -16 -16 -16h-16c-8.83984 0 -16 7.16016 -16 16v112\nc0 114.67 -93.3301 207.8 -208 207.82c-114.67 -0.0205078 -208 -93.1504 -208 -207.82v-112c0 -8.83984 -7.16016 -16 -16 -16h-16c-8.83984 0 -16 7.16016 -16 16v112c4.57031 136.87 112.91 256 256 256z\" />\n    <glyph glyph-name=\"headset\" unicode=\"&#xf590;\" \nd=\"M192 240v-112c0 -17.6699 -14.3301 -32 -32 -32h-16c-35.3496 0 -64 28.6504 -64 64v48c0 35.3496 28.6504 64 64 64h16c17.6699 0 32 -14.3301 32 -32zM368 96h-16c-17.6699 0 -32 14.3301 -32 32v112c0 17.6699 14.3301 32 32 32h16c35.3496 0 64 -28.6504 64 -64v-48\nc0 -35.3496 -28.6504 -64 -64 -64zM256 448c142.82 0 251.42 -118.83 256 -256v-165.72c0 -49.8604 -40.4199 -90.2803 -90.2803 -90.2803h-181.72c-26.5098 0 -48 21.4902 -48 48s21.4902 48 48 48h32c26.5098 0 48 -21.4902 48 -48h101.72\nc23.3506 0 42.2803 18.9297 42.2803 42.2803c0 0 -0.0400391 163.29 -0.120117 165.72h0.120117c0 114.69 -93.3096 208 -208 208s-208 -93.3096 -208 -208v-16c0 -8.83984 -7.16016 -16 -16 -16h-16c-8.83984 0 -16 7.16016 -16 16v16c4.58008 137.17 113.18 256 256 256z\n\" />\n    <glyph glyph-name=\"highlighter\" unicode=\"&#xf591;\" horiz-adv-x=\"544\" \nd=\"M0 -31.9805l68.3301 70.4707l67.04 -67.04l-35.4502 -35.4502zM124.61 208.03l41.5195 35.4395l173.34 -173.34l-35.5498 -41.6396c-9.5 -10.7705 -24.4199 -14.9805 -38.1504 -10.7803l-42.7393 13.0801l-50.8604 -50.8604l-96.2295 96.2305l50.9297 50.9395\nl-13.0498 42.8301c-0.876953 2.87891 -1.58887 7.65625 -1.58887 10.665c0 9.11328 5.5459 21.4043 12.3789 27.4355zM527.92 368.73c20.5 -20.5 21.5303 -53.3906 2.34961 -75.1309l-169.949 -199.06l-169.771 169.78l199.05 169.96\nc21.7402 19.1699 54.6309 18.1396 75.1201 -2.35059z\" />\n    <glyph glyph-name=\"hot-tub\" unicode=\"&#xf593;\" \nd=\"M414.21 270.35c-3.15039 25.3906 -14.6104 47.9707 -31.9697 62.1406c-27.7305 22.6299 -45.79 58.0498 -50.1299 97.1602c-1.09082 9.7793 6.48926 18.3496 16 18.3496h16.1201c7.98926 0 14.7295 -6.13965 15.7393 -14.3398\nc3.16016 -25.4004 14.6104 -47.9805 31.9805 -62.1504c27.7295 -22.6299 45.79 -58.0498 50.1299 -97.1602c1.08008 -9.7793 -6.49023 -18.3496 -16 -18.3496h-16.1201c-8 0 -14.7295 6.13965 -15.75 14.3496zM306.21 270.35\nc-3.15039 25.3906 -14.6104 47.9707 -31.9697 62.1406c-27.7305 22.6299 -45.79 58.0498 -50.1299 97.1602c-1.09082 9.7793 6.48926 18.3496 16 18.3496h16.1201c7.98926 0 14.7295 -6.13965 15.7393 -14.3398c3.16016 -25.4004 14.6104 -47.9805 31.9805 -62.1504\nc27.7295 -22.6299 45.79 -58.0498 50.1299 -97.1602c1.08008 -9.7793 -6.49023 -18.3496 -16 -18.3496h-16.1201c-8 0 -14.7295 6.13965 -15.75 14.3496zM480 192c17.6699 0 32 -14.3301 32 -32v-160c0 -35.3496 -28.6504 -64 -64 -64h-384c-35.3496 0 -64 28.6504 -64 64\nv224c0 35.3496 28.6504 64 64 64h42.6699h0.00292969c11.7754 0 28.9775 -5.73438 38.3975 -12.7998l110.93 -83.2002h224zM128 8v112c0 4.41992 -3.58008 8 -8 8h-16c-4.41992 0 -8 -3.58008 -8 -8v-112c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8zM224 8v112\nc0 4.41992 -3.58008 8 -8 8h-16c-4.41992 0 -8 -3.58008 -8 -8v-112c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8zM320 8v112c0 4.41992 -3.58008 8 -8 8h-16c-4.41992 0 -8 -3.58008 -8 -8v-112c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8zM416 8\nv112c0 4.41992 -3.58008 8 -8 8h-16c-4.41992 0 -8 -3.58008 -8 -8v-112c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8zM64 320c-35.3496 0 -64 28.6504 -64 64s28.6504 64 64 64s64 -28.6504 64 -64s-28.6504 -64 -64 -64z\" />\n    <glyph glyph-name=\"hotel\" unicode=\"&#xf594;\" horiz-adv-x=\"576\" \nd=\"M560 384h-16v-384h16c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-240v80c0 8.7998 -7.2002 16 -16 16h-32c-8.7998 0 -16 -7.2002 -16 -16v-80h-240c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h15.9805v384h-15.9805\nc-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h544c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16zM256 339.2v-38.4004c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h38.4004c6.39941 0 12.7998 6.40039 12.7998 12.7998v38.4004\nc0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-38.4004c-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998zM256 243.2v-38.4004c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h38.4004c6.39941 0 12.7998 6.40039 12.7998 12.7998v38.4004\nc0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-38.4004c-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998zM128 339.2v-38.4004c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h38.4004c6.39941 0 12.7998 6.40039 12.7998 12.7998v38.4004\nc0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-38.4004c-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998zM179.2 192c6.39941 0 12.7998 6.40039 12.7998 12.7998v38.4004c0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-38.4004\nc-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998v-38.4004c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h38.4004zM192 64h192c0 53.0195 -42.9805 96 -96 96s-96 -42.9805 -96 -96zM448 204.8v38.4004c0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-38.4004\nc-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998v-38.4004c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h38.4004c6.39941 0 12.7998 6.40039 12.7998 12.7998zM448 300.8v38.4004c0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-38.4004\nc-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998v-38.4004c0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h38.4004c6.39941 0 12.7998 6.40039 12.7998 12.7998z\" />\n    <glyph glyph-name=\"joint\" unicode=\"&#xf595;\" horiz-adv-x=\"640\" \nd=\"M444.34 266.9c-35.7803 25.0693 -60.3398 63.0098 -60.3398 106.699v66.4004c0 4.41992 3.58008 8 8 8h48c4.41992 0 8 -3.58008 8 -8v-62.3096c0 -29.0303 15.8496 -54.71 39.6602 -71.3203c35.3301 -24.6504 56.3398 -64.8203 56.3398 -108.061v-30.3096\nc0 -4.41992 -3.58008 -8 -8 -8h-48c-4.41992 0 -8 3.58008 -8 8v30.3096c0 27.4307 -13.2803 52.9102 -35.6602 68.5908zM194.97 89.0195c22.3701 3.60059 45.0801 -4.30957 59.8203 -21.5098l112.72 -131.51h-88.5693c-98.6406 0 -195.29 27.7197 -278.94 80\nc59.6904 37.3096 126.03 61.9297 194.97 73.0195zM553.28 360.91c54.3096 -36.4102 86.7197 -97.1602 86.7197 -162.601v-30.3096c0 -4.41992 -3.58008 -8 -8 -8h-48c-4.41992 0 -8 3.58008 -8 8v30.3096c0 50.1504 -25.21 96.6504 -67.3604 123.99\nc-18.4697 11.9805 -28.6396 33.3701 -28.6396 55.3906v62.3096c0 4.41992 3.58008 8 8 8h48c4.41992 0 8 -3.58008 8 -8v-62.3096c0 -6.82031 3.61035 -12.9805 9.28027 -16.7803zM360.89 95.9502h0.108398c16.2441 0 38.0049 -10.0127 48.5723 -22.3506l117.949 -137.6\nh-88.4492h-0.00292969c-16.248 0 -38.0146 10.0127 -48.5869 22.3496l-117.801 137.431c1.40039 0.0195312 53.8105 0.109375 88.21 0.169922zM616 96c13.25 0 24 -10.7402 24 -24v-112c0 -13.25 -10.75 -24 -24 -24h-17.4199h-0.00292969\nc-16.248 0 -38.0146 10.0127 -48.5869 22.3496l-117.99 137.65h184z\" />\n    <glyph glyph-name=\"kiss\" unicode=\"&#xf596;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM168 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM304 52c0 13 -13.4004 27.2998 -35.2002 36.4004\nc21.7998 8.69922 35.2002 23 35.2002 36c0 19.1992 -28.7002 41.5 -71.5 44c-8.40039 1.09961 -12.2002 -11.8008 -3.59961 -15.4004l17 -7.2002c13 -5.5 20.7998 -13.5 20.7998 -21.5s-7.7998 -16 -20.7998 -21.5l-17 -7.2002c-6.10059 -2.59961 -6 -12.2998 0 -14.7998\nl17 -7.2002c13 -5.5 20.7998 -13.5 20.7998 -21.5s-7.7998 -16 -20.7998 -21.5l-17 -7.19922c-8.5 -3.60059 -4.90039 -16.2002 3.59961 -15.4004c42.7998 2.5 71.5 24.7998 71.5 44zM328 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32\ns14.2998 -32 32 -32z\" />\n    <glyph glyph-name=\"kiss-beam\" unicode=\"&#xf597;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM209 220.1c4.2002 -7.5 15.5996 -4 15.0996 4.5c-3.2998 42.1006 -32.1992 71.4004 -56 71.4004c-23.7998 0 -52.6992 -29.2998 -56 -71.4004\nc-0.699219 -8.5 10.7002 -11.8994 14.9004 -4.5l9.5 17c7.7002 13.7002 19.2002 21.6006 31.5 21.6006s23.7998 -7.90039 31.5 -21.6006zM304 52c0 13 -13.4004 27.2998 -35.2002 36.4004c21.7998 8.69922 35.2002 23 35.2002 36c0 19.1992 -28.7002 41.5 -71.5 44\nc-8.40039 1.09961 -12.2002 -11.8008 -3.59961 -15.4004l17 -7.2002c13 -5.5 20.7998 -13.5 20.7998 -21.5s-7.7998 -16 -20.7998 -21.5l-17 -7.2002c-6.10059 -2.59961 -6 -12.2998 0 -14.7998l17 -7.2002c13 -5.5 20.7998 -13.5 20.7998 -21.5s-7.7998 -16 -20.7998 -21.5\nl-17 -7.19922c-8.5 -3.60059 -4.90039 -16.2002 3.59961 -15.4004c42.7998 2.5 71.5 24.7998 71.5 44zM369 220.1c4.2002 -7.5 15.5996 -4 15.0996 4.5c-3.2998 42.1006 -32.1992 71.4004 -56 71.4004c-23.7998 0 -52.6992 -29.2998 -56 -71.4004\nc-0.699219 -8.5 10.8008 -11.7998 14.9004 -4.5l9.5 17c7.7002 13.7002 19.2002 21.6006 31.5 21.6006s23.7998 -7.90039 31.5 -21.6006z\" />\n    <glyph glyph-name=\"kiss-wink-heart\" unicode=\"&#xf598;\" horiz-adv-x=\"504\" \nd=\"M501.1 45.5c9.2002 -23.9004 -4.39941 -49.4004 -28.5 -55.7002l-83 -21.5c-5.39941 -1.39941 -10.8994 1.7998 -12.3994 7.10059l-22.9004 82.5996c-6.59961 24 8.7998 48.5996 34 52.5996c22 3.5 43.1006 -11.5996 49 -33l2.2998 -8.39941l8.40039 2.2002\nc21.5996 5.59961 45.0996 -5.10059 53.0996 -25.9004zM323.5 49.5c0 0 23.5996 -83.9004 23.9004 -84.5996c-30.5 -13.4004 -64 -20.9004 -99.4004 -20.9004c-137 0 -248 111 -248 248s111 248 248 248s248 -111 248 -248c0 -31.7998 -6.2002 -62.0996 -17.0996 -90\nc-6 1.5 -12.2002 2.7998 -18.6006 2.90039c-29.0996 49.7998 -98.0996 50.5996 -127.8 4.2998c-11.2998 -17.7002 -14.5996 -39.4004 -9 -59.7002zM168 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM288 52\nc0 13 -13.4004 27.2998 -35.2002 36.4004c21.7998 8.69922 35.2002 23 35.2002 36c0 19.1992 -28.7002 41.5 -71.5 44c-8.2002 1.19922 -12.4004 -11.7002 -3.59961 -15.4004l17 -7.2002c13 -5.5 20.7998 -13.5 20.7998 -21.5s-7.7998 -16 -20.7998 -21.5l-17 -7.2002\nc-5.7002 -2.5 -6 -12.2998 0 -14.7998l17 -7.2002c13 -5.5 20.7998 -13.5 20.7998 -21.5s-7.7998 -16 -20.7998 -21.5l-17 -7.19922c-8.5 -3.60059 -4.90039 -16.2002 3.59961 -15.4004c42.7998 2.5 71.5 24.7998 71.5 44zM304 231l9.7002 8.5\nc14.7998 13.2002 46.2002 13.2002 61 0l9.5 -8.5c8.5 -7.5 21.5 -0.299805 19.7998 10.7998c-4 25.2002 -34.2002 42.1006 -59.9004 42.1006c-25.6992 0 -55.8994 -16.9004 -59.8994 -42.1006c-1.7998 -11.2002 11.5 -18.2002 19.7998 -10.7998z\" />\n    <glyph glyph-name=\"laugh\" unicode=\"&#xf599;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM328 288c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32s32 14.2998 32 32s-14.2998 32 -32 32zM168 288c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32\ns32 14.2998 32 32s-14.2998 32 -32 32zM256 16c73.4004 0 134 55 142.9 126c1.19922 9.59961 -6.30078 18 -15.9004 18h-270c-9.59961 0 -17.0996 -8.5 -15.9004 -18c8.90039 -71 69.5 -126 142.9 -126h16z\" />\n    <glyph glyph-name=\"laugh-beam\" unicode=\"&#xf59a;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM272 240.6c-0.700195 -8.59961 10.9004 -11.8994 15.0996 -4.5l9.5 17c7.7002 13.7002 19.2002 21.6006 31.5 21.6006c12.3008 0 23.8008 -7.90039 31.5 -21.6006l9.5 -17\nc4.10059 -7.39941 15.6006 -4.09961 14.9004 4.5c-3.2998 42.1006 -32.2002 71.4004 -56 71.4004s-52.7002 -29.2998 -56 -71.4004zM112 240.6c-0.700195 -8.5 10.7998 -11.8994 15.0996 -4.5l9.5 17c7.7002 13.7002 19.2002 21.6006 31.5 21.6006\nc12.3008 0 23.8008 -7.90039 31.5 -21.6006l9.5 -17c4.10059 -7.39941 15.6006 -4.09961 14.9004 4.5c-3.2998 42.1006 -32.2002 71.4004 -56 71.4004s-52.7002 -29.2998 -56 -71.4004zM398.9 142c1.19922 9.59961 -6.30078 18 -15.9004 18h-270\nc-9.59961 0 -17.0996 -8.5 -15.9004 -18c8.90039 -71 69.5 -126 142.9 -126h16c73.4004 0 134 55 142.9 126z\" />\n    <glyph glyph-name=\"laugh-squint\" unicode=\"&#xf59b;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM281.8 278.3c-7.7002 -4.7002 -7.7002 -15.8994 0 -20.5996l80 -48c11.5 -6.7998 24.1006 7.59961 15.4004 18l-33.6006 40.2998l33.6006 40.2998\nc8.59961 10.2998 -3.7998 24.9004 -15.4004 18zM118.8 308.3l33.6006 -40.2998l-33.6006 -40.2998c-8.59961 -10.4004 3.90039 -24.7998 15.4004 -18l80 48c7.7998 4.7002 7.7998 15.8994 0 20.5996l-80 48c-11.6006 6.90039 -24 -7.7002 -15.4004 -18zM398.9 142\nc1.19922 9.59961 -6.30078 18 -15.9004 18h-270c-9.59961 0 -17.0996 -8.5 -15.9004 -18c8.90039 -71 69.5 -126 142.9 -126h16c73.4004 0 134 55 142.9 126z\" />\n    <glyph glyph-name=\"laugh-wink\" unicode=\"&#xf59c;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM268.1 241.9c-1.69922 -11.2002 11.5 -18.3008 19.9004 -10.9004l9.59961 8.59961c14.8008 13.2002 46.2002 13.2002 61 0l9.5 -8.5\nc8.40039 -7.5 21.5 -0.299805 19.8008 10.8008c-4 25.1992 -34.2002 42.0996 -59.9004 42.0996s-55.9004 -16.9004 -59.9004 -42.0996zM168 288c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32s32 14.2998 32 32s-14.2998 32 -32 32zM398.9 142\nc1.19922 9.59961 -6.30078 18 -15.9004 18h-270c-9.59961 0 -17.0996 -8.5 -15.9004 -18c8.90039 -71 69.5 -126 142.9 -126h16c73.4004 0 134 55 142.9 126z\" />\n    <glyph glyph-name=\"luggage-cart\" unicode=\"&#xf59d;\" horiz-adv-x=\"640\" \nd=\"M224 128c-17.6699 0 -32 14.3301 -32 32v160c0 17.6699 14.3301 32 32 32h32v-224h-32zM576 160c0 -17.6699 -14.3301 -32 -32 -32h-32v224h32c17.6699 0 32 -14.3301 32 -32v-160zM624 64c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-82.9404\nc1.79004 -5.03027 2.94043 -10.3604 2.94043 -16c0 -26.5098 -21.4902 -48 -48 -48s-48 21.4902 -48 48c0 5.63965 1.15039 10.9697 2.94043 16h-197.881c1.79004 -5.03027 2.94043 -10.3604 2.94043 -16c0 -26.5098 -21.4902 -48 -48 -48s-48 21.4902 -48 48\nc0 5.63965 1.15039 10.9697 2.94043 16h-82.9404c-8.83984 0 -16 7.16016 -16 16v368h-48c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h96c8.83984 0 16 -7.16016 16 -16v-368h496zM480 352v-224h-192v272c0 26.5098 21.4902 48 48 48h96\nc26.5098 0 48 -21.4902 48 -48v-48zM432 352v48h-96v-48h96z\" />\n    <glyph glyph-name=\"map-marked\" unicode=\"&#xf59f;\" horiz-adv-x=\"576\" \nd=\"M288 448c69.5898 0 126 -56.4102 126 -126c0 -56.2598 -82.3496 -158.8 -113.9 -196.02c-6.37988 -7.54004 -17.8096 -7.54004 -24.1992 0c-31.5508 37.2197 -113.9 139.76 -113.9 196.02c0 69.5898 56.4102 126 126 126zM20.1201 232.05l118.63 47.4502\nc5.17969 -14.8799 12.4102 -30.4404 21.25 -46.4199v-233.08l-138.06 -62.8398c-10.5107 -4.2002 -21.9404 3.54004 -21.9404 14.8594v250.32c0.00292969 11.959 9.0166 25.2686 20.1201 29.71zM288 88.3301c14.0703 0 27.3799 6.17969 36.5098 16.9502\nc19.6699 23.2002 40.5703 49.6299 59.4902 76.7197v-245.99l-192 64v182c18.9199 -27.0996 39.8301 -53.5195 59.4902 -76.7197c9.12988 -10.7803 22.4395 -16.96 36.5098 -16.96zM554.06 286.84c10.5107 4.2002 21.9404 -3.54004 21.9404 -14.8594v-250.32\nc0 -11.9609 -9.01367 -25.2705 -20.1201 -29.71l-139.88 -55.9502v288z\" />\n    <glyph glyph-name=\"map-marked-alt\" unicode=\"&#xf5a0;\" horiz-adv-x=\"576\" \nd=\"M288 448c69.5898 0 126 -56.4102 126 -126c0 -56.2598 -82.3496 -158.8 -113.9 -196.02c-6.37988 -7.54004 -17.8096 -7.54004 -24.1992 0c-31.5508 37.2197 -113.9 139.76 -113.9 196.02c0 69.5898 56.4102 126 126 126zM288 280c23.2002 0 42 18.7998 42 42\ns-18.7998 42 -42 42s-42 -18.7998 -42 -42s18.7998 -42 42 -42zM20.1201 232.05l118.63 47.4502c5.17969 -14.8799 12.4102 -30.4404 21.25 -46.4199v-233.08l-138.06 -62.8398c-10.5107 -4.2002 -21.9404 3.54004 -21.9404 14.8594v250.32\nc0.00292969 11.959 9.0166 25.2686 20.1201 29.71zM288 88.3301c14.0703 0 27.3799 6.17969 36.5098 16.9502c19.6699 23.2002 40.5703 49.6299 59.4902 76.7197v-245.99l-192 64v182c18.9199 -27.0996 39.8301 -53.5195 59.4902 -76.7197\nc9.12988 -10.7803 22.4395 -16.96 36.5098 -16.96zM554.06 286.84c10.5107 4.2002 21.9404 -3.54004 21.9404 -14.8594v-250.32c0 -11.9609 -9.01367 -25.2705 -20.1201 -29.71l-139.88 -55.9502v288z\" />\n    <glyph glyph-name=\"marker\" unicode=\"&#xf5a1;\" \nd=\"M93.9502 157.97l75.3994 75.4004l128.021 -128.021l-75.4004 -75.3994c-44.8223 -44.8203 -132.335 -86.8428 -195.34 -93.7998c-15.2803 -1.69043 -28.1895 11.2295 -26.4902 26.5098l0.0302734 0.229492c7.00195 62.9189 49.0156 150.315 93.7803 195.08z\nM485.49 421.49c35.3496 -35.3604 35.3496 -92.6699 0 -128.021l-165.49 -165.489l-128.02 128.02l98.4795 98.4697l-19.5898 19.5898l-87.1504 -87.1494c-6.25 -6.25 -16.3799 -6.25 -22.6299 0l-22.6201 22.6201c-6.25 6.25 -6.25 16.3799 0 22.6299l104.12 104.12\nc15.6104 15.6201 40.9404 15.6201 56.5605 0l36.5596 -36.5498l21.7598 21.7598c35.3506 35.3496 92.6699 35.3496 128.021 0z\" />\n    <glyph glyph-name=\"medal\" unicode=\"&#xf5a2;\" \nd=\"M223.75 317.25c-42.04 -6.55957 -79.8398 -25.6201 -109.56 -53.3896l-111.271 158.96c-7.41992 10.6094 0.160156 25.1797 13.1104 25.1797h111.149c10.0029 0 22.2959 -6.96191 27.4404 -15.54zM495.97 448c12.9502 0 20.5303 -14.5703 13.1104 -25.1797\nl-111.271 -158.95c-29.7197 27.7598 -67.5195 46.8203 -109.56 53.3799l69.1299 115.21c5.78027 9.63965 16.2002 15.54 27.4404 15.54h111.149zM256 288c97.2002 0 176 -78.7998 176 -176s-78.7998 -176 -176 -176s-176 78.7998 -176 176s78.7998 176 176 176z\nM348.52 130.74c6.82031 6.63965 3.05078 18.2295 -6.34961 19.5898l-52.4297 7.63965l-23.4307 47.5205c-2.10938 4.25 -6.21973 6.38965 -10.3291 6.38965c-4.09082 0 -8.1709 -2.11035 -10.2803 -6.38965l-23.4307 -47.5205l-52.4297 -7.63965\nc-9.39941 -1.36035 -13.1699 -12.9502 -6.34961 -19.5898l37.9297 -36.96l-8.96973 -52.2207c-1.60059 -9.34961 8.25 -16.54 16.6494 -12.0898l46.9004 24.6504l46.9102 -24.6504c8.38965 -4.41992 18.25 2.73047 16.6494 12.0898l-8.96973 52.2207z\" />\n    <glyph glyph-name=\"meh-blank\" unicode=\"&#xf5a4;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM168 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM328 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32\ns-32 -14.2998 -32 -32s14.2998 -32 32 -32z\" />\n    <glyph glyph-name=\"meh-rolling-eyes\" unicode=\"&#xf5a5;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM88 224c0 -35.2998 28.7002 -64 64 -64s64 28.7002 64 64c0 24.2998 -13.7002 45.2002 -33.5996 56c0.699219 -2.59961 1.59961 -5.2002 1.59961 -8\nc0 -17.7002 -14.2998 -32 -32 -32s-32 14.2998 -32 32c0 2.7998 0.900391 5.40039 1.59961 8c-19.8994 -10.7998 -33.5996 -31.7002 -33.5996 -56zM312 48c21.2002 0 21.2002 32 0 32h-128c-21.2002 0 -21.2002 -32 0 -32h128zM344 160c35.2998 0 64 28.7002 64 64\nc0 24.2998 -13.7002 45.2002 -33.5996 56c0.699219 -2.59961 1.59961 -5.2002 1.59961 -8c0 -17.7002 -14.2998 -32 -32 -32s-32 14.2998 -32 32c0 2.7998 0.900391 5.40039 1.59961 8c-19.8994 -10.7998 -33.5996 -31.7002 -33.5996 -56c0 -35.2998 28.7002 -64 64 -64z\n\" />\n    <glyph glyph-name=\"monument\" unicode=\"&#xf5a6;\" horiz-adv-x=\"384\" \nd=\"M368 0c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-352c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h352zM289.14 347.26l30.8604 -315.26h-256l30.8701 315.26c0.625 6.27344 4.75098 14.9834 9.20996 19.4404\nl76.5996 76.6094c6.25 6.25 16.3799 6.25 22.6299 0l76.6201 -76.6094c4.45898 -4.45703 8.58496 -13.167 9.20996 -19.4404zM240 140.8v38.4004c0 6.39941 -6.40039 12.7998 -12.7998 12.7998h-70.4004c-6.39941 0 -12.7998 -6.40039 -12.7998 -12.7998v-38.4004\nc0 -6.39941 6.40039 -12.7998 12.7998 -12.7998h70.4004c6.39941 0 12.7998 6.40039 12.7998 12.7998z\" />\n    <glyph glyph-name=\"mortar-pestle\" unicode=\"&#xf5a7;\" \nd=\"M501.54 387.09l-99.0801 -99.0898h-151.37l203.811 152.86c5.25293 3.93848 14.8457 7.13477 21.4121 7.13477c4.64941 0 11.7988 -1.68652 15.957 -3.76465c21.7803 -10.8906 26.4902 -39.9209 9.27051 -57.1406zM496 256c8.83984 0 16 -7.16016 16 -16v-32\nc0 -8.83984 -7.16016 -16 -16 -16h-16c0 -80.9805 -50.2002 -150.11 -121.13 -178.32c12.7695 -16.8701 21.7295 -36.7998 24.9502 -58.6895c1.45996 -9.91992 -6.04004 -18.9805 -16.0703 -18.9805h-223.5c-10.0303 0 -17.5303 9.06055 -16.0703 18.9805\nc3.23047 21.8896 12.1904 41.8193 24.9502 58.6895c-70.9297 28.21 -121.13 97.3398 -121.13 178.32h-16c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h480z\" />\n    <glyph glyph-name=\"paint-roller\" unicode=\"&#xf5aa;\" \nd=\"M416 320c0 -17.6699 -14.3301 -32 -32 -32h-352c-17.6699 0 -32 14.3301 -32 32v96c0 17.6699 14.3301 32 32 32h352c17.6699 0 32 -14.3301 32 -32v-96zM448 384c35.3496 0 64 -28.6504 64 -64v-64c0 -53.0195 -42.9805 -96 -96 -96h-160v-32\nc17.6699 0 32 -14.3301 32 -32v-128c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v128c0 17.6699 14.3301 32 32 32v32c0 35.3496 28.6504 64 64 64h160c17.6699 0 32 14.3301 32 32v128z\" />\n    <glyph glyph-name=\"passport\" unicode=\"&#xf5ab;\" horiz-adv-x=\"448\" \nd=\"M129.62 272c5.28027 31.2197 25.5898 57.1699 53.2998 70.4102c-7.66992 -19.0605 -12.7197 -43.3799 -14.21 -70.4102h-39.0898zM129.62 240h39.0898c1.49023 -27.0303 6.53027 -51.3496 14.21 -70.4102c-27.71 13.2402 -48.0098 39.1904 -53.2998 70.4102zM224 161.31\nc-7.69043 7.4502 -20.7695 34.4307 -23.4404 78.6904h46.8701c-2.66016 -44.2695 -15.7393 -71.2402 -23.4297 -78.6904zM200.57 272c2.66016 44.2598 15.7393 71.2402 23.4395 78.6904c7.69043 -7.4502 20.7705 -34.4307 23.4307 -78.6904h-46.8701zM265.08 169.59\nc7.67969 19.0605 12.7197 43.3799 14.21 70.4102h39.0898c-5.28027 -31.2197 -25.5898 -57.1699 -53.2998 -70.4102zM416 448c17.6699 0 32 -14.3301 32 -32v-448c0 -17.6699 -14.3301 -32 -32 -32h-352c-35.3496 0 -64 28.6504 -64 64v384c0 35.3496 28.6504 64 64 64h352z\nM336 32c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16h-224c-8.7998 0 -16 -7.2002 -16 -16s7.2002 -16 16 -16h224zM224 128c70.6904 0 128 57.3096 128 128s-57.3096 128 -128 128s-128 -57.3096 -128 -128s57.3096 -128 128 -128zM265.08 342.41\nc27.71 -13.2402 48.0195 -39.1904 53.2998 -70.4102h-39.0898c-1.49023 27.0303 -6.53027 51.3496 -14.21 70.4102z\" />\n    <glyph glyph-name=\"pen-fancy\" unicode=\"&#xf5ac;\" \nd=\"M79.1797 165.06l84.0703 33.0703l98.8799 -98.8799l-33.0703 -84.0703c-2.79102 -8.38086 -11.8584 -17.4482 -20.2393 -20.2393l-176.82 -58.9404l-4.67969 4.67969l92.8896 92.8906c2.55957 -0.660156 5.03027 -1.57031 7.7998 -1.57031c17.6699 0 32 14.3301 32 32\ns-14.3301 32 -32 32s-32 -14.3301 -32 -32c0 -2.76953 0.910156 -5.24023 1.57031 -7.7998l-92.8896 -92.8906l-4.69043 4.69043l58.9404 176.82c2.79297 8.37891 11.8604 17.4463 20.2393 20.2393zM369.25 419.68c74.4805 84.2607 199.15 -39.1602 114.23 -114.229\nl-199.49 -183.11l-97.8506 97.8506z\" />\n    <glyph glyph-name=\"pen-nib\" unicode=\"&#xf5ad;\" \nd=\"M136.6 309.21l151.4 42.79l128 -128l-42.79 -151.4c-5.08594 -17.9932 -23.6104 -37.3965 -41.3496 -43.3096l-279.86 -93.29l-14.6904 14.6904l150.11 150.109c6.25977 -2.99023 13.1797 -4.7998 20.5801 -4.7998c26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48\ns-48 -21.4902 -48 -48c0 -7.40039 1.80957 -14.3203 4.7998 -20.5801l-150.109 -150.11l-14.6904 14.6904l93.29 279.86c5.91309 17.7393 25.3164 36.2637 43.3096 41.3496zM497.94 373.83c18.75 -18.7598 18.75 -49.1602 0 -67.9102l-56.5508 -56.5498l-128.02 128.02\nl56.5498 56.5508c18.75 18.75 49.1602 18.75 67.9102 0z\" />\n    <glyph glyph-name=\"pencil-ruler\" unicode=\"&#xf5ae;\" \nd=\"M109.46 203.96l-100.17 100.18c-12.3896 12.3906 -12.3799 32.4707 0 44.8604l89.71 89.71c12.3896 12.3896 32.4697 12.3896 44.8604 0l33.6396 -33.6504l-61.6797 -61.6797c-3.10059 -3.08984 -3.10059 -8.11035 0 -11.21l11.21 -11.21\nc1.28027 -1.2832 3.79199 -2.3252 5.60449 -2.3252c1.81348 0 4.32422 1.04199 5.60547 2.3252l61.6797 61.6797l44.1201 -44.1201zM497.93 320.76l-46.0195 -46.0293l-113.2 113.199l46.0205 46.0107c18.7695 18.7598 49.1895 18.7598 67.9492 0l45.25 -45.25\nc18.75 -18.7607 18.7607 -49.1709 0 -67.9307zM316.08 365.29l113.2 -113.19l-296.92 -296.93l-107.45 -18.8398c-14.5 -2.5498 -27.1201 10.0703 -24.5898 24.5596l18.7598 107.44zM502.71 79.8604c12.3896 -12.3906 12.3896 -32.4707 0 -44.8604l-89.71 -89.7002\nc-12.3896 -12.3896 -32.4697 -12.3896 -44.8604 0l-100.21 100.2l134.58 134.56l44.1406 -44.1396l-61.6807 -61.6797c-3.08984 -3.08984 -3.08984 -8.11035 0 -11.21l11.21 -11.21c3.08984 -3.10059 8.11035 -3.10059 11.21 0l61.6807 61.6797z\" />\n    <glyph glyph-name=\"plane-arrival\" unicode=\"&#xf5af;\" horiz-adv-x=\"640\" \nd=\"M624 0c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-608c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h608zM44.8096 242.34c-6.5498 5.91016 -12.3896 14.3398 -12.5791 23.25l-0.230469 101.78\nc0.19043 10.8799 10.3799 18.7002 20.7197 15.8799l39.7305 -10.8301c5.00977 -1.36035 9.08984 -5.04004 11.0195 -9.92969l27.5898 -67.8799l102.2 -27.8408l-47.9199 164.211c-0.189453 11.1191 10.1504 19.3193 20.71 16.4395l65.0898 -17.7295\nc5.70996 -1.56055 10.1504 -6.10059 11.6602 -11.9102l100.36 -191.851l97.5098 -26.5596c26.4805 -7.20996 51.5498 -20.1797 70.8301 -40c21.6396 -22.25 27.2002 -40.46 23.3701 -54.96c-3.81055 -14.5 -17.5801 -27.4404 -47.25 -35.71\nc-26.4404 -7.36035 -54.5205 -5.85059 -81 1.35938l-287.601 78.3506c-7.94531 2.16895 -19.3564 8.41016 -25.4697 13.9297z\" />\n    <glyph glyph-name=\"plane-departure\" unicode=\"&#xf5b0;\" horiz-adv-x=\"640\" \nd=\"M624 0c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-608c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h608zM80.5498 106.73l-76.21 82.9697c-7.62012 8.95996 -4.87012 22.7803 5.57031 28.0801l40.1299 20.3701\nc2.0957 1.0625 5.7041 1.92578 8.05469 1.92578c2.33691 0 5.92773 -0.853516 8.01562 -1.90625l72.3496 -36.4697l103.21 52.3799l-156.22 98.0996c-8.08008 8.87988 -5.5 23.1201 5.16992 28.5303l65.75 33.3701c2.0957 1.06348 5.70508 1.92676 8.05566 1.92676\nc3 0 7.45508 -1.36035 9.94434 -3.03711l218.7 -82.0596l98.5098 49.9902c26.7402 13.5596 56.4297 21.4199 86.2803 19.4795c33.5098 -2.17969 51.04 -12.8799 58.25 -27.4502c7.22949 -14.5596 5.23926 -35.1699 -13.0703 -63.6494\nc-16.3096 -25.3701 -40.2803 -44.7402 -67.0205 -58.3105l-290.96 -147.649c-7.71094 -3.91895 -20.9893 -7.1084 -29.6396 -7.12012l-130.54 -0.180664c-9.22949 -0.00976562 -18.0498 3.87012 -24.3301 10.7109z\" />\n    <glyph glyph-name=\"prescription\" unicode=\"&#xf5b1;\" horiz-adv-x=\"384\" \nd=\"M301.26 96l78.0605 -78.0498c6.25 -6.25 6.25 -16.3799 0 -22.6299l-22.6299 -22.6299c-6.25 -6.25 -16.3809 -6.25 -22.6309 0l-78.0596 78.0596l-78.0498 -78.0703c-6.25 -6.25 -16.3799 -6.25 -22.6299 0l-22.6299 22.6299c-6.25 6.25 -6.25 16.3809 0 22.6309\nl78.0596 78.0596l-128 128h-18.75v-80c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v256c0 8.83984 7.16016 16 16 16h144c53.0195 0 96 -42.9805 96 -96c0 -48.8896 -36.6904 -88.7998 -83.96 -94.7803l83.96 -83.96l78.0596 78.0605\nc6.25 6.25 16.3809 6.25 22.6309 0l22.6299 -22.6299c6.25 -6.25 6.25 -16.3809 0 -22.6309zM64 352v-64h96c17.6396 0 32 14.3604 32 32s-14.3604 32 -32 32h-96z\" />\n    <glyph glyph-name=\"sad-cry\" unicode=\"&#xf5b3;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248c0 -90 -48.2002 -168.7 -120 -212.1v180.1c0 8.7998 -7.2002 16 -16 16s-16 -7.2002 -16 -16v-196.7c-29.5 -12.3994 -62 -19.2998 -96 -19.2998s-66.5 6.90039 -96 19.2998v196.7c0 8.7998 -7.2002 16 -16 16s-16 -7.2002 -16 -16\nv-180.1c-71.7998 43.3994 -120 122 -120 212.1c0 137 111 248 248 248zM182.5 223.5l9.7002 -8.5c2.5 -2.2998 7.89941 -4.7002 13.7002 -1.59961c4.39941 2.39941 6.89941 7.39941 6.09961 12.3994c-4 25.2002 -34.2002 42.1006 -59.9004 42.1006\nc-25.6992 0 -55.8994 -16.9004 -59.8994 -42.1006c-0.799805 -5 1.7002 -10 6.09961 -12.3994c4.40039 -2.40039 9.90039 -1.7002 13.7002 1.59961l9.5 8.5c14.7998 13.2002 46.2002 13.2002 61 0zM248 32c26.5 0 48 28.7002 48 64s-21.5 64 -48 64s-48 -28.7002 -48 -64\ns21.5 -64 48 -64zM397.8 213.5c4.40039 2.40039 6.7998 7.40039 6.2002 12.2998c-4 25.2002 -34.2002 42.1006 -59.9004 42.1006c-25.6992 0 -55.8994 -16.9004 -59.8994 -42.1006c-0.799805 -5 1.7002 -10 6.09961 -12.3994\nc4.40039 -2.40039 9.90039 -1.7002 13.7002 1.59961l9.59961 8.59961c14.8008 13.2002 46.2002 13.2002 61 0l9.5 -8.5c2.5 -2.2998 7.90039 -4.69922 13.7002 -1.59961z\" />\n    <glyph glyph-name=\"sad-tear\" unicode=\"&#xf5b4;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM328 272c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32s32 14.2998 32 32s-14.2998 32 -32 32zM152 32c26.5 0 48 21 48 47c0 20 -28.5 60.4004 -41.5996 77.7998\nc-3.2002 4.2998 -9.60059 4.2998 -12.8008 0c-13.0996 -17.3994 -41.5996 -57.7998 -41.5996 -77.7998c0 -26 21.5 -47 48 -47zM168 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM338.2 53.7998\nc13.2998 -16.0996 38.2998 4 24.5 20.4004c-28.4004 34.2002 -70.2998 53.7998 -114.7 53.7998c-21.2002 0 -21.2002 -32 0 -32c34.9004 0 67.7998 -15.4004 90.2002 -42.2002z\" />\n    <glyph glyph-name=\"shuttle-van\" unicode=\"&#xf5b6;\" horiz-adv-x=\"640\" \nd=\"M628.88 237.35c7.17969 -8.62988 11.1201 -19.5 11.1201 -30.7295v-110.62c0 -17.6699 -14.3301 -32 -32 -32h-32c0 -53.0195 -42.9805 -96 -96 -96s-96 42.9805 -96 96h-128c0 -53.0195 -42.9805 -96 -96 -96s-96 42.9805 -96 96h-32c-17.6699 0 -32 14.3301 -32 32v288\nc0 17.6699 14.3301 32 32 32h425.52c12.4082 -0.00195312 28.9258 -7.73926 36.8701 -17.2695zM64 256h96v96h-96v-96zM160 16c26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48s-48 -21.4902 -48 -48s21.4902 -48 48 -48zM320 256v96h-96v-96h96zM480 16\nc26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48s-48 -21.4902 -48 -48s21.4902 -48 48 -48zM384 256h146.02l-80 96h-66.0195v-96z\" />\n    <glyph glyph-name=\"signature\" unicode=\"&#xf5b7;\" horiz-adv-x=\"640\" \nd=\"M623.2 256c9.09961 0.599609 16.7998 -7.09961 16.5996 -16.2002v-32.0996c0 -8.5 -6.7002 -15.1006 -15.2002 -15.7998c-39.3994 -3.2002 -105.399 -51 -138.399 -65.8008c-34.2998 -15.3994 -66.7002 -30 -102.3 -30c-28.2002 0 -50.2002 8.5 -65.5 25.3008\nc-22.7002 24.8994 -22.8008 55.2998 -20.6006 83.7998c-56.5 -45.1006 -169 -153.601 -211.2 -195.8c-6.09961 -6.2002 -14.2998 -9.40039 -22.5996 -9.40039c-27 0 -36.5 27 -29.7002 43.9004l98.2002 245.6c8 19.9004 -14.2998 38.7998 -32.7002 27.0996l-58 -38.8994\nc-7.5 -4.7998 -17.3994 -2.60059 -22.0996 4.89941l-17.2002 27c-4.7002 7.5 -2.5 17.4004 4.90039 22.1006l54.8994 36.8994c76.5 48.7002 160.101 -26.8994 129.7 -102.8l-41.5 -103.7c105.2 101.2 144.4 124.5 169.5 126\nc54.4004 3.10059 43.7998 -68.0996 42.7002 -76.0996c-4.7002 -35.7002 -1.2998 -51.9004 21.2998 -51.9004c21.9004 0 47 11.3008 76.0996 24.4004c37.4004 16.7998 111.301 68 163.101 71.5z\" />\n    <glyph glyph-name=\"smile-beam\" unicode=\"&#xf5b8;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM112 224.6c-0.700195 -8.5 10.7998 -11.8994 15.0996 -4.5l9.5 17c7.7002 13.7002 19.2002 21.6006 31.5 21.6006c12.3008 0 23.8008 -7.90039 31.5 -21.6006l9.5 -17\nc4.10059 -7.39941 15.6006 -4.09961 14.9004 4.5c-3.2998 42.1006 -32.2002 71.4004 -56 71.4004s-52.7002 -29.2998 -56 -71.4004zM362.8 101.8c13.5 16.2002 -11 36.7002 -24.5996 20.5c-22.4004 -26.7998 -55.2002 -42.2002 -90.2002 -42.2002\ns-67.7998 15.3008 -90.2002 42.2002c-13.5996 16.2002 -38.0996 -4.2002 -24.5996 -20.5c28.5 -34.2002 70.2998 -53.7998 114.8 -53.7998s86.2998 19.5996 114.8 53.7998zM369 220.1c4.09961 -7.39941 15.7002 -4.09961 15.0996 4.5\nc-3.2998 42.1006 -32.1992 71.4004 -56 71.4004c-23.7998 0 -52.6992 -29.2998 -56 -71.4004c-0.699219 -8.5 10.8008 -11.7998 14.9004 -4.5l9.5 17c7.7002 13.7002 19.2002 21.6006 31.5 21.6006s23.7998 -7.90039 31.5 -21.6006z\" />\n    <glyph glyph-name=\"solar-panel\" unicode=\"&#xf5ba;\" horiz-adv-x=\"640\" \nd=\"M431.98 -0.00976562c8.84961 0.00976562 16.0293 -7.16992 16.0195 -16.0205l-0.0400391 -31.7295c-0.00976562 -8.82031 -7.16016 -15.9707 -15.9795 -15.9805l-223.961 -0.259766c-8.84961 -0.00976562 -16.0293 7.16992 -16.0195 16.0195l0.0498047 31.7305\nc0.00976562 8.83008 7.16016 15.9805 15.9805 15.9902l47.9795 0.0498047v32.21h128v-32.0596zM585.2 421.26c58.1094 -342.42 54.7803 -321.39 54.7598 -325.47c-0.0800781 -17.2305 -14.3604 -31.79 -32.5898 -31.79h-574.74c-18.3096 0 -32.6299 14.6797 -32.5996 32\nc0.00976562 3.91992 -3.35059 -17.1602 54.7598 325.26c2.62012 15.4307 16.21 26.7402 32.1396 26.7402h466.13c15.9307 0 29.5205 -11.3096 32.1406 -26.7402zM259.83 384l-9.77051 -96h139.87l-9.76953 96h-120.33zM184.66 128l11.4102 112h-105.971l-19.0098 -112\nh113.57zM200.95 288l9.76953 96h-96.1895l-16.29 -96h102.71zM233.77 128h172.45l-11.3994 112h-149.65zM429.27 384l9.77051 -96h102.71l-16.29 96h-96.1904zM455.33 128h113.58l-19.0098 112h-105.971z\" />\n    <glyph glyph-name=\"spa\" unicode=\"&#xf5bb;\" horiz-adv-x=\"576\" \nd=\"M568.25 256c4.41016 0.0195312 7.79004 -3.40039 7.75 -7.82031c-0.230469 -27.9199 -7.12988 -126.13 -88.7695 -199.3c-84.04 -81.8301 -167.23 -80.8799 -199.23 -80.8799s-115.21 -0.94043 -199.23 80.8799c-81.6299 73.1602 -88.5391 171.38 -88.7695 199.3\nc-0.0400391 4.41992 3.33984 7.83984 7.75 7.82031c29.04 -0.129883 135.01 -6.16016 213.84 -83c33.1201 -29.6299 53.3604 -63.2998 66.4102 -94.8604c13.0498 31.5605 33.29 65.2305 66.4102 94.8604c78.8301 76.8398 184.8 82.8701 213.84 83zM287.98 145.4\nc-10.7012 15.7168 -30.8789 38.7705 -45.04 51.46c-18.7207 18.25 -38.8506 32.6895 -59.2207 44.3896c16.4707 70.4404 51.75 132.93 96.7402 172.07c4.12012 3.58008 11.0303 3.58008 15.1396 0c45.0107 -39.1699 80.29 -101.721 96.7305 -172.221\nc-20.6797 -11.8799 -41.1699 -26.5693 -60.2598 -45.1797c-16.4902 -14.7402 -31.2705 -31.6699 -44.0898 -50.5195z\" />\n    <glyph glyph-name=\"splotch\" unicode=\"&#xf5bc;\" \nd=\"M472.29 252.11c48.54 -16.6201 53.8301 -73.8301 8.9502 -96.79l-62 -31.7402c-17.8301 -9.12988 -29.2803 -25.2002 -30.6299 -42.9902l-4.7002 -61.8594c-3.41016 -44.79 -65.1299 -66.7803 -104.45 -37.2207l-54.3203 40.8301\nc-15.6201 11.7305 -36.96 16.1201 -57.0693 11.7305l-69.96 -15.2803c-50.6504 -11.0596 -94.0801 32.5596 -73.4902 73.8096l28.4297 56.9805c8.18066 16.3799 6.44043 35.1699 -4.63965 50.2402l-38.54 52.4199c-27.9004 37.9502 6.97949 86.8994 59.0303 82.8301\nl71.8799 -5.62012c20.6602 -1.62012 40.9395 5.59961 54.2002 19.3096l46.1396 47.6699c33.4102 34.5107 98.3994 21.1504 109.979 -22.6201l15.9902 -60.4492c4.60059 -17.3799 18.8604 -31.7002 38.1406 -38.3008z\" />\n    <glyph glyph-name=\"spray-can\" unicode=\"&#xf5bd;\" \nd=\"M224 416v-96h-128v96c0 17.6699 14.3301 32 32 32h64c17.6699 0 32 -14.3301 32 -32zM480 320c17.6699 0 32 -14.3301 32 -32s-14.3301 -32 -32 -32s-32 14.3301 -32 32s14.3301 32 32 32zM224 288c53.0195 0 96 -42.9805 96 -96v-224c0 -17.6699 -14.3301 -32 -32 -32\nh-256c-17.6699 0 -32 14.3301 -32 32v224c0 53.0195 42.9805 96 96 96h128zM160 32c44.1797 0 80 35.8203 80 80s-35.8203 80 -80 80s-80 -35.8203 -80 -80s35.8203 -80 80 -80zM480 352c-17.6699 0 -32 14.3301 -32 32s14.3301 32 32 32s32 -14.3301 32 -32\ns-14.3301 -32 -32 -32zM384 320c17.6699 0 32 -14.3301 32 -32s-14.3301 -32 -32 -32s-32 14.3301 -32 32s14.3301 32 32 32zM288 416c17.6699 0 32 -14.3301 32 -32s-14.3301 -32 -32 -32s-32 14.3301 -32 32s14.3301 32 32 32zM384 416c17.6699 0 32 -14.3301 32 -32\ns-14.3301 -32 -32 -32s-32 14.3301 -32 32s14.3301 32 32 32zM480 224c17.6699 0 32 -14.3301 32 -32s-14.3301 -32 -32 -32s-32 14.3301 -32 32s14.3301 32 32 32z\" />\n    <glyph glyph-name=\"stamp\" unicode=\"&#xf5bf;\" \nd=\"M32 -64v64h448v-64h-448zM416 192c53.0195 0 96 -42.9805 96 -96v-32c0 -17.6699 -14.3301 -32 -32 -32h-448c-17.6699 0 -32 14.3301 -32 32v32c0 53.0195 42.9805 96 96 96h66.5596c16.2607 0 29.4404 13.1797 29.4404 29.4404v0.0693359\nc0 31.79 -9.98047 62.0605 -23.3096 90.9102c-5.57031 12.04 -8.69043 25.4199 -8.69043 39.5801c0 58.6699 52.6201 105.04 113.25 94.4902c38.79 -6.75 70.4902 -38.6699 77.2598 -77.4502c3.85059 -22.0303 0.0605469 -42.8096 -9.0498 -60.4199\nc-12.5801 -24.3105 -21.46 -50.3506 -21.46 -77.7197v-9.45996c0 -16.2607 13.1797 -29.4404 29.4404 -29.4404h66.5596z\" />\n    <glyph glyph-name=\"star-half-alt\" unicode=\"&#xf5c0;\" horiz-adv-x=\"536\" \nd=\"M508.55 276.49c26.25 -3.7998 36.7705 -36.1006 17.7305 -54.6006l-105.91 -102.979l25.0303 -145.49c3.55957 -20.79 -13.0605 -37.4004 -31.6602 -37.4004c-4.91016 0 -9.9707 1.16016 -14.8301 3.71094l-130.94 68.6992l-130.95 -68.6797\nc-4.86914 -2.58008 -9.93945 -3.75 -14.8691 -3.75c-18.5801 0 -35.1699 16.6699 -31.6104 37.4502l25.0596 145.479l-105.89 103c-19.0303 18.5 -8.50977 50.79 17.7402 54.5898l146.38 21.29l65.4297 132.381c5.90039 11.9092 17.29 17.8096 28.6904 17.8096\nc11.4697 0 22.9395 -5.98047 28.8193 -17.8096l65.4102 -132.391zM386.81 153.29l82.6504 80.3799l-114.229 16.6299l-25.0107 3.64062l-11.1797 22.6299l-51.0303 103.29l-0.0292969 -317.19l22.3799 -11.7402l102.13 -53.5898l-19.5205 113.45l-4.2793 24.8799z\" />\n    <glyph glyph-name=\"suitcase-rolling\" unicode=\"&#xf5c1;\" horiz-adv-x=\"384\" \nd=\"M336 288c26.5098 0 48 -21.4902 48 -48v-224c0 -26.5098 -21.4902 -48 -48 -48h-16v-16c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v16h-128v-16c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v16h-16\nc-26.5098 0 -48 21.4902 -48 48v224c0 26.5098 21.4902 48 48 48h288zM320 72v16c0 4.41992 -3.58008 8 -8 8h-240c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h240c4.41992 0 8 3.58008 8 8zM320 168v16c0 4.41992 -3.58008 8 -8 8h-240\nc-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h240c4.41992 0 8 3.58008 8 8zM144 400v-80h-48v80c0 26.5098 21.4902 48 48 48h96c26.5098 0 48 -21.4902 48 -48v-80h-48v80h-96z\" />\n    <glyph glyph-name=\"surprise\" unicode=\"&#xf5c2;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM136 240c0 -17.7002 14.2998 -32 32 -32s32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32zM248 32c35.2998 0 64 28.7002 64 64s-28.7002 64 -64 64\ns-64 -28.7002 -64 -64s28.7002 -64 64 -64zM328 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32z\" />\n    <glyph glyph-name=\"swatchbook\" unicode=\"&#xf5c3;\" horiz-adv-x=\"511\" \nd=\"M479.06 128c17.6406 0 31.9404 -14.3301 31.9404 -32v-128c0 -17.6699 -14.2998 -32 -31.9404 -32h-299.579c2.17969 1.91016 4.60938 3.41992 6.66992 5.49023l186.14 186.51h106.77zM434.56 280.9c12.4707 -12.4902 12.4707 -32.7607 0 -45.2607l-211.869 -212.279\nc0.199219 2.90918 0.869141 5.67969 0.869141 8.63965v263.76l75.5 75.6504c12.4805 12.5 32.7002 12.5 45.1709 0zM191.62 416v-384c0 -53.0195 -42.9004 -96 -95.8105 -96c-52.9092 0 -95.8096 42.9805 -95.8096 96v384c0 17.6699 14.2998 32 31.9404 32h127.739\nc17.6406 0 31.9404 -14.3301 31.9404 -32zM95.8096 8c13.2305 0 23.96 10.75 23.9502 24c0 13.2598 -10.7295 24 -23.9502 24c-13.2197 0 -23.9492 -10.7402 -23.9492 -24c0 -13.25 10.7197 -24 23.9492 -24zM127.75 192l0.00976562 64h-63.8799v-64h63.8701zM127.75 320\nl0.00976562 64h-63.8799v-64h63.8701z\" />\n    <glyph glyph-name=\"swimmer\" unicode=\"&#xf5c4;\" horiz-adv-x=\"640\" \nd=\"M189.61 137.42c-5.04004 4.65039 -10.3906 8.34961 -15.8604 11.5801l68.6299 98.04c7.36035 10.5 16.3398 19.5498 26.7197 26.9404l80.0205 57.1699c25.54 18.2598 57.8301 24.96 88.5596 18.3799l100.351 -21.5303c25.9297 -5.55957 42.4297 -31.0801 36.8799 -57\nc-5.56055 -25.9102 -31.0898 -42.4102 -57 -36.8799l-100.351 21.5303c-4.33984 0.90918 -8.97949 -0.0302734 -12.6191 -2.61035l-18 -12.8604l112.84 -80.5996c-17.5107 -1.04004 -34.5303 -8.4502 -49.3906 -22.1602\nc-3.5293 -3.25977 -15.2695 -9.41992 -34.3896 -9.41992s-30.8496 6.16016 -34.3896 9.41992c-16.0107 14.7705 -34.5 22.5801 -53.46 22.5801h-16.3008c-18.96 0 -37.4395 -7.80957 -53.46 -22.5801c-3.5293 -3.25977 -15.2695 -9.41992 -34.3896 -9.41992\ns-30.8496 6.16016 -34.3896 9.41992zM624 96c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-16c-38.6201 0 -72.7197 12.1797 -96 31.8398c-23.2803 -19.6494 -57.3799 -31.8398 -96 -31.8398s-72.7197 12.1797 -96 31.8398\nc-23.2803 -19.6494 -57.3799 -31.8398 -96 -31.8398s-72.7197 12.1797 -96 31.8398c-23.2803 -19.6494 -57.3799 -31.8398 -96 -31.8398h-16c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h16c26.04 0 45.7998 8.41992 56.0703 17.9004\nc8.89941 8.20996 19.6602 14.0996 31.7695 14.0996h16.2998c12.1104 0 22.8701 -5.88965 31.7705 -14.0996c10.29 -9.48047 30.0498 -17.9004 56.0898 -17.9004s45.7998 8.41992 56.0703 17.9004c8.89941 8.20996 19.6602 14.0996 31.7695 14.0996h16.2998\nc12.1104 0 22.8701 -5.88965 31.7705 -14.0996c10.29 -9.48047 30.0498 -17.9004 56.0898 -17.9004s45.7998 8.41992 56.0703 17.9004c8.89941 8.20996 19.6602 14.0996 31.7695 14.0996h16.2998c12.1104 0 22.8701 -5.88965 31.7705 -14.0996\nc10.29 -9.48047 30.0498 -17.9004 56.0898 -17.9004h16zM112 192c-44.1797 0 -80 35.8203 -80 80s35.8203 80 80 80s80 -35.8203 80 -80s-35.8203 -80 -80 -80z\" />\n    <glyph glyph-name=\"swimming-pool\" unicode=\"&#xf5c5;\" horiz-adv-x=\"640\" \nd=\"M624 32c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-16c-38.6201 0 -72.7197 12.1797 -96 31.8398c-23.2803 -19.6494 -57.3799 -31.8398 -96 -31.8398s-72.7197 12.1797 -96 31.8398c-23.2803 -19.6494 -57.3799 -31.8398 -96 -31.8398\ns-72.7197 12.1797 -96 31.8398c-23.2803 -19.6494 -57.3799 -31.8398 -96 -31.8398h-16c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h16c26.04 0 45.7998 8.41992 56.0703 17.9004c8.89941 8.20996 19.6602 14.0996 31.7695 14.0996h16.2998\nc12.1104 0 22.8701 -5.88965 31.7705 -14.0996c10.29 -9.48047 30.0498 -17.9004 56.0898 -17.9004s45.7998 8.41992 56.0703 17.9004c8.89941 8.20996 19.6602 14.0996 31.7695 14.0996h16.2998c12.1104 0 22.8701 -5.88965 31.7705 -14.0996\nc10.29 -9.48047 30.0498 -17.9004 56.0898 -17.9004s45.7998 8.41992 56.0703 17.9004c8.89941 8.20996 19.6602 14.0996 31.7695 14.0996h16.2998c12.1104 0 22.8701 -5.88965 31.7705 -14.0996c10.29 -9.48047 30.0498 -17.9004 56.0898 -17.9004h16zM224 64\nc-19.1201 0 -30.8604 6.16016 -34.3896 9.42969c-9.16992 8.4502 -19.2002 14.3398 -29.6104 18.0703v228.5c0 52.9404 43.0596 96 96 96s96 -43.0596 96 -96v-16c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v16c0 17.6396 -14.3604 32 -32 32\ns-32 -14.3604 -32 -32v-96h192v96c0 52.9404 43.0596 96 96 96s96 -43.0596 96 -96v-16c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v16c0 17.6396 -14.3604 32 -32 32s-32 -14.3604 -32 -32v-228.51\nc-10.4102 -3.73047 -20.4404 -9.61035 -29.6104 -18.0703c-3.5293 -3.25977 -15.2695 -9.41992 -34.3896 -9.41992v96h-192v-96z\" />\n    <glyph glyph-name=\"tint-slash\" unicode=\"&#xf5c7;\" horiz-adv-x=\"640\" \nd=\"M633.82 -10.0996c6.97949 -5.43066 8.22949 -15.4805 2.81934 -22.4502l-19.6396 -25.2705c-5.42969 -6.97949 -15.4805 -8.23926 -22.46 -2.80957l-588.36 454.729c-6.97949 5.43066 -8.22949 15.4805 -2.80957 22.4502l19.6396 25.2705\nc5.41992 6.97949 15.4805 8.22949 22.46 2.80957l186.82 -144.399c21.6201 33.7197 42.9697 73.3398 58.4902 125.68c9 30.1201 50.5 28.7803 58.4395 0c46.9902 -158.48 146.78 -200.061 146.78 -311.82c0 -5.70996 -0.509766 -11.2998 -1.03027 -16.8701zM144 114.09\nc0 29.7803 7.30957 54.6299 18.7197 78.1299l273.681 -211.52c-31.0303 -27.7402 -71.6904 -44.7002 -116.4 -44.7002c-97.2803 0 -176 79.6504 -176 178.09z\" />\n    <glyph glyph-name=\"tired\" unicode=\"&#xf5c8;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM281.8 250.3c-7.7002 -4.7002 -7.7002 -15.8994 0 -20.5996l80 -48c11.5 -6.7998 24.1006 7.59961 15.4004 18l-33.6006 40.2998l33.6006 40.2998\nc8.59961 10.2998 -3.7998 24.9004 -15.4004 18zM118.8 280.3l33.6006 -40.2998l-33.6006 -40.2998c-8.59961 -10.4004 3.90039 -24.7998 15.4004 -18l80 48c7.7998 4.7002 7.7998 15.8994 0 20.5996l-80 48c-11.6006 6.90039 -24 -7.7002 -15.4004 -18zM248 160\nc-51.9004 0 -115.3 -43.7998 -123.2 -106.7c-1.7002 -13.3994 7.90039 -24.5996 17.7002 -20.3994c25.9004 11.0996 64.4004 17.3994 105.5 17.3994s79.5996 -6.2998 105.5 -17.3994c9.7002 -4.2002 19.4004 6.7998 17.7002 20.3994\nc-7.90039 62.9004 -71.2998 106.7 -123.2 106.7z\" />\n    <glyph glyph-name=\"tooth\" unicode=\"&#xf5c9;\" horiz-adv-x=\"448\" \nd=\"M443.98 351.75c10.1299 -41.6299 0.419922 -80.8203 -21.5303 -110.43c-23.3604 -31.5703 -32.6807 -68.6504 -36.29 -107.351c-4.41016 -47.1602 -10.3301 -94.1699 -20.9404 -140.319l-7.7998 -33.9502c-3.18945 -13.8701 -15.4902 -23.7002 -29.6699 -23.7002\nc-13.9697 0 -26.1504 9.5498 -29.54 23.1602l-34.4697 138.42c-4.56055 18.3096 -20.96 31.1602 -39.7598 31.1602c-18.8008 0 -35.2002 -12.8398 -39.7607 -31.1602l-34.4697 -138.42c-3.38965 -13.6104 -15.5703 -23.1602 -29.54 -23.1602\nc-14.1797 0 -26.4795 9.83008 -29.6699 23.7002l-7.7998 33.9502c-10.6104 46.1592 -16.54 93.1592 -20.9404 140.319c-3.60938 38.6904 -12.9297 75.7803 -36.29 107.351c-21.9199 29.6201 -31.6299 68.8096 -21.5 110.43c11.0098 45.2197 47.1104 82.0498 92.0098 93.7197\nc23.4307 6.08984 46.1104 0.540039 66.8105 -10.3096l100.51 -64.6201c7.83984 -5.05957 17.6504 -2.15039 22.1104 4.7998c4.78027 7.44043 2.62012 17.3398 -4.7998 22.1104l-28.3203 18.21c3.54004 1.75 7.25 3.08984 10.5 5.47949\nc26.1396 19.2305 56.9502 32.6904 89.1396 24.3301c44.9004 -11.6602 81 -48.5 92.0107 -93.7197z\" />\n    <glyph glyph-name=\"umbrella-beach\" unicode=\"&#xf5ca;\" horiz-adv-x=\"640\" \nd=\"M115.38 311.1c-10.0801 3.66992 -14.1104 16.3203 -7.41992 24.7207c59.75 74.8398 152.65 116.689 248.53 111.8c-52.79 -29.4102 -103.811 -92.1602 -139 -173.7zM247.63 262.94c44.4902 101.979 114.74 171.14 172.76 171.149c7.95996 0 15.6904 -1.2998 23.0908 -4\nc61.3291 -22.3203 78.3896 -132.6 42.6299 -253.979zM521.48 387.5c76.5293 -57.9199 120.76 -149.67 118.439 -245.36c-0.259766 -10.7393 -11.4795 -17.8398 -21.5703 -14.1699l-102.619 37.3604c17.5293 58.75 24.6895 117.09 18.9492 166.979\nc-2.37012 20.5908 -6.97949 38.8906 -13.1992 55.1904zM560 0.0195312c8.83984 0 16 -7.15918 16 -16v-32.0098c0 -8.83984 -7.16016 -16.0098 -16 -16.0098h-544c-8.83984 0 -16 7.16992 -16 16.0098v32.0098c0 8.85059 7.16016 16.0107 16 16.0107h236.96l72.9004 200.37\nl60.1396 -21.9004l-64.9404 -178.48h238.94z\" />\n    <glyph glyph-name=\"vector-square\" unicode=\"&#xf5cb;\" \nd=\"M512 320c0 -17.6699 -14.3301 -32 -32 -32v-192c17.6699 0 32 -14.3301 32 -32v-96c0 -17.6699 -14.3301 -32 -32 -32h-96c-17.6699 0 -32 14.3301 -32 32h-192c0 -17.6699 -14.3301 -32 -32 -32h-96c-17.6699 0 -32 14.3301 -32 32v96c0 17.6699 14.3301 32 32 32v192\nc-17.6699 0 -32 14.3301 -32 32v96c0 17.6699 14.3301 32 32 32h96c17.6699 0 32 -14.3301 32 -32h192c0 17.6699 14.3301 32 32 32h96c17.6699 0 32 -14.3301 32 -32v-96zM416 384v-32h32v32h-32zM64 384v-32h32v32h-32zM96 0v32h-32v-32h32zM448 0v32h-32v-32h32zM416 96\nv192h-32c-17.6699 0 -32 14.3301 -32 32v32h-192v-32c0 -17.6699 -14.3301 -32 -32 -32h-32v-192h32c17.6699 0 32 -14.3301 32 -32v-32h192v32c0 17.6699 14.3301 32 32 32h32z\" />\n    <glyph glyph-name=\"weight-hanging\" unicode=\"&#xf5cd;\" \nd=\"M510.28 2.13965c8.33008 -33.3096 -14.6602 -66.1396 -46.2998 -66.1396h-415.95c-31.6504 0 -54.6406 32.8301 -46.3105 66.1396l73.0498 292.13c3.79004 15.1807 16.4404 25.7207 30.8701 25.7207h60.25c-3.58008 10.0498 -5.87988 20.7197 -5.87988 32\nc0 53.0195 42.9805 96 96 96c53.0205 0 96 -42.9805 96 -96c0 -11.2803 -2.30957 -21.9502 -5.87988 -32h60.25c14.4297 0 27.0703 -10.5303 30.8701 -25.7207zM256 320c17.6396 0 32 14.3604 32 32s-14.3604 32 -32 32s-32 -14.3604 -32 -32s14.3604 -32 32 -32z\" />\n    <glyph glyph-name=\"wine-glass-alt\" unicode=\"&#xf5ce;\" horiz-adv-x=\"288\" \nd=\"M216 -16c22.0898 0 40 -17.9102 40 -40c0 -4.41992 -3.58008 -8 -8 -8h-208c-4.41992 0 -8 3.58008 -8 8c0 22.0898 17.9102 40 40 40h40v117.18c-68.4697 15.8906 -118.05 79.9102 -111.4 154.16l15.96 178.11c0.730469 8.24023 7.55078 14.5498 15.7002 14.5498h223.48\nc8.16016 0 14.9697 -6.30957 15.71 -14.5498l15.9502 -178.101c6.64941 -74.25 -42.9307 -138.27 -111.4 -154.159v-117.19h40zM61.75 400l-7.16992 -80h178.84l-7.16992 80h-164.5z\" />\n    <glyph glyph-name=\"air-freshener\" unicode=\"&#xf5d0;\" horiz-adv-x=\"384\" \nd=\"M378.94 126.59c11.75 -12.1494 1.71973 -30.5898 -16.6406 -30.5898h-138.3v-32h112c8.83984 0 16 -7.16016 16 -16v-96c0 -8.83984 -7.16016 -16 -16 -16h-288c-8.83984 0 -16 7.16016 -16 16v96c0 8.83984 7.16016 16 16 16h112v32h-138.3\nc-18.3604 0 -28.3906 18.4404 -16.6406 30.5898l94.2402 97.4102h-49.2197c-15.2998 0 -23.6602 16.5996 -13.8604 27.5303l113.33 126.51c-3.42969 6.61035 -5.5498 14 -5.5498 21.96c0 26.5098 21.4902 48 48 48s48 -21.4902 48 -48\nc0 -7.95996 -2.12012 -15.3496 -5.5498 -21.96l113.33 -126.51c9.7998 -10.9307 1.43945 -27.5303 -13.8604 -27.5303h-49.2197zM192 416.02c-8.84961 0 -16.0195 -7.16992 -16.0195 -16.0195c0 -8.83984 7.16992 -16.0195 16.0195 -16.0195\ns16.0195 7.17969 16.0195 16.0195c0 8.84961 -7.16992 16.0195 -16.0195 16.0195zM304 16h-224v-32h224v32z\" />\n    <glyph glyph-name=\"apple-alt\" unicode=\"&#xf5d1;\" horiz-adv-x=\"448\" \nd=\"M350.85 319c25.9707 -4.66992 47.2705 -18.6699 63.9199 -42c14.6504 -20.6699 24.6406 -46.6699 29.9609 -78c4.66992 -28.6699 4.31934 -57.3301 -1 -86c-7.99023 -47.3301 -23.9707 -87 -47.9404 -119c-28.6396 -38.6699 -64.5898 -58 -107.87 -58\nc-10.6602 0 -22.2998 3.33008 -34.96 10c-8.66016 5.33008 -18.3096 8 -28.9697 8s-20.2998 -2.66992 -28.9707 -8c-12.6592 -6.66992 -24.2998 -10 -34.96 -10c-43.2793 0 -79.2295 19.3301 -107.869 58c-23.9707 32 -39.9502 71.6699 -47.9404 119\nc-5.32031 28.6699 -5.66992 57.3301 -1 86c5.32031 31.3301 15.3096 57.3301 29.96 78c16.6504 23.3301 37.9502 37.3301 63.9199 42c15.9805 2.66992 37.9502 0.330078 65.9199 -7c23.9697 -6.66992 44.2803 -14.6699 60.9307 -24\nc16.6494 9.33008 36.96 17.3301 60.9297 24c27.9795 7.33008 49.96 9.66992 65.9395 7zM295.91 360c-9.32031 -8.66992 -21.6504 -15 -36.96 -19c-10.6602 -3.33008 -22.2998 -5 -34.96 -5l-14.9805 1c-1.33008 9.33008 -1.33008 20 0 32\nc2.66992 24 10.3203 42.3301 22.9707 55c9.31934 8.66992 21.6494 15 36.96 19c10.6592 3.33008 22.2998 5 34.96 5l14.9795 -1l1 -15c0 -12.6699 -1.66992 -24.3301 -4.99023 -35c-3.98926 -15.3301 -10.3096 -27.6699 -18.9795 -37z\" />\n    <glyph glyph-name=\"atom\" unicode=\"&#xf5d2;\" horiz-adv-x=\"448\" \nd=\"M413.03 192c40.1396 -54.9102 41.5195 -98.5996 25.1396 -128c-29.2197 -52.3398 -101.689 -43.5801 -116.33 -41.8799c-21.4697 -51.2197 -54.2002 -86.1201 -97.8398 -86.1201s-76.3701 34.9004 -97.8398 86.1201c-14.6504 -1.7002 -87.1201 -10.46 -116.33 41.8799\nc-16.3701 29.3799 -14.9902 73.1104 25.1396 128c-40.1396 54.9102 -41.5195 98.5996 -25.1396 128c10.9004 19.5195 40.5996 50.6602 116.33 41.8799c21.4795 51.2305 54.2002 86.1201 97.8398 86.1201s76.3604 -34.8896 97.8398 -86.1201\nc75.79 8.85059 105.42 -22.3604 116.33 -41.8799c16.3701 -29.3799 14.9902 -73.1104 -25.1396 -128zM63.3799 96c3.69043 -6.59961 19.0205 -11.8604 43.5801 -10.9697c-2.75977 13 -5.0498 26.3701 -6.75977 40.0801c-7.66992 6.29004 -14.9102 12.6494 -21.8701 19.1797\nc-15.1396 -23.4902 -18.9805 -41.0801 -14.9502 -48.29zM100.2 258.88c1.39355 11.1816 4.43555 29.2002 6.79004 40.2197c-1.82031 0.0703125 -3.98047 0.370117 -5.69043 0.370117c-21.5303 0 -34.5098 -5.33008 -37.9199 -11.4697\nc-4.01953 -7.20996 -0.179688 -24.7998 14.9502 -48.2998c6.96973 6.53027 14.21 12.8896 21.8701 19.1797zM224 384c-9.46973 0 -22.2002 -13.5195 -33.8604 -37.2598c11.1904 -3.7002 22.4404 -8 33.8604 -12.8604c11.4199 4.86035 22.6699 9.16016 33.8604 12.8604\nc-11.6602 23.7402 -24.3906 37.2598 -33.8604 37.2598zM224 0c9.46973 0 22.2002 13.5195 33.8604 37.2598c-11.1904 3.7002 -22.4404 8 -33.8604 12.8604c-11.4199 -4.86035 -22.6699 -9.16016 -33.8604 -12.8604c11.6602 -23.7402 24.3906 -37.2598 33.8604 -37.2598z\nM286.5 157.33c1.99023 27.7998 1.98047 41.5498 0 69.3301c-26.6396 19.04 -46.1104 29.3096 -62.5 37.4795c-16.3701 -8.15918 -35.8301 -18.4297 -62.5 -37.4795c-1.99023 -27.79 -1.99023 -41.54 0 -69.3301c26.7002 -19.0703 46.1504 -29.3398 62.5 -37.4805\nc16.3604 8.15039 35.7998 18.4004 62.5 37.4805zM384.62 96c4.01953 7.20996 0.179688 24.7998 -14.9502 48.29c-6.96973 -6.53027 -14.21 -12.8896 -21.8701 -19.1797c-1.70996 -13.6904 -4 -27.0605 -6.75977 -40.0605c24.5801 -0.870117 39.9102 4.33008 43.5801 10.9502\nzM369.67 239.71c15.1299 23.4902 18.9697 41.0801 14.9502 48.2998c-3.41016 6.12988 -16.4004 11.4707 -37.9199 11.4707c-1.71973 0 -3.87012 -0.300781 -5.69043 -0.370117c2.35254 -11.0205 5.39453 -29.0391 6.79004 -40.2207\nc7.66992 -6.29004 14.9102 -12.6494 21.8701 -19.1797zM224 224c17.6699 0 32 -14.3301 32 -32s-14.3301 -32 -32 -32s-32 14.3301 -32 32s14.3301 32 32 32z\" />\n    <glyph glyph-name=\"bone\" unicode=\"&#xf5d7;\" horiz-adv-x=\"640\" \nd=\"M598.88 203.44c-9.42969 -4.70996 -9.42969 -18.1709 -0.00976562 -22.8809c25.2002 -12.5996 41.1201 -38.3496 41.1201 -66.5293v-7.64062c0 -41.0898 -33.2998 -74.3896 -74.3799 -74.3896c-32.0107 0 -60.4404 20.4902 -70.5703 50.8604\nc-6.53027 19.5996 -10.7305 45.1396 -38.1104 45.1396h-273.87c-26.5098 0 -30.4297 -22.1104 -38.1094 -45.1396c-10.1299 -30.3701 -38.5498 -50.8604 -70.5703 -50.8604c-41.0801 0 -74.3799 33.2998 -74.3799 74.3896v7.64062\nc0 28.1699 15.9199 53.9297 41.1201 66.5293c9.42969 4.70996 9.42969 18.1709 0 22.8809c-25.2002 12.5996 -41.1201 38.3594 -41.1201 66.5293v7.64062c0 41.0898 33.2998 74.3896 74.3896 74.3896c32.0107 0 60.4404 -20.4902 70.5605 -50.8604\nc6.53027 -19.5996 10.7295 -45.1396 38.1094 -45.1396h273.87c26.5107 0 30.4307 22.1104 38.1104 45.1396c10.1299 30.3701 38.5498 50.8604 70.5703 50.8604c41.0898 0 74.3896 -33.2998 74.3896 -74.3896v-7.64062c0 -28.1699 -15.9199 -53.9297 -41.1201 -66.5293z\" />\n    <glyph glyph-name=\"book-reader\" unicode=\"&#xf5da;\" \nd=\"M352 352c0 -53.0195 -42.9805 -96 -96 -96s-96 42.9805 -96 96s42.9805 96 96 96s96 -42.9805 96 -96zM233.59 206.9c4.10059 -2.51074 6.41016 -6.79004 6.41992 -11.46v-245.99c0 -10.1602 -11.1094 -16.5898 -20.4795 -11.8701\nc-61.0498 30.75 -149.38 39.1396 -193.04 41.4297c-14.9004 0.770508 -26.4902 12.7207 -26.4902 27.0498v222.801c0 15.6299 13.5498 28.0098 29.7998 27.0898c48.3604 -2.75 144.46 -12.7305 203.79 -49.0498zM482.2 255.95\nc16.25 0.919922 29.7998 -11.46 29.8096 -27.0898v-222.82c0 -14.3301 -11.5898 -26.2803 -26.4902 -27.0596c-43.6494 -2.29004 -131.93 -10.6807 -192.97 -41.4004c-9.39941 -4.73047 -20.54 1.70996 -20.54 11.9004v245.789c0 4.6709 2.31055 9.12012 6.41016 11.6309\nc59.3203 36.3193 155.43 46.3096 203.78 49.0498z\" />\n    <glyph glyph-name=\"brain\" unicode=\"&#xf5dc;\" horiz-adv-x=\"576\" \nd=\"M208 448c35.2998 0 64 -28.7002 64 -64v-376c0 -39.7998 -32.2002 -72 -72 -72c-31.7998 0 -58.4004 20.7002 -68 49.2002c-3.90039 -0.700195 -7.90039 -1.2002 -12 -1.2002c-39.7998 0 -72 32.2002 -72 72c0 4.7998 0.5 9.5 1.40039 14.0996\nc-29 12 -49.4004 40.6006 -49.4004 73.9004c0 29.7002 16.2998 55.2998 40.2998 69.0996c-5.09961 10.6006 -8.2998 22.3008 -8.2998 34.9004c0 33.4004 20.5 62 49.7002 74c-1.10059 4.5 -1.7002 9.2002 -1.7002 14c0 35.2998 28.7002 64 64 64\nc0.799805 0 1.40039 -0.200195 2.2002 -0.200195c7.09961 27.7002 31.8994 48.2002 61.7998 48.2002zM576 144c0 -33.2998 -20.4004 -61.9004 -49.4004 -73.9004c0.900391 -4.59961 1.40039 -9.2998 1.40039 -14.0996c0 -39.7998 -32.2002 -72 -72 -72\nc-4.09961 0 -8.09961 0.5 -12 1.2002c-9.59961 -28.5 -36.2002 -49.2002 -68 -49.2002c-39.7998 0 -72 32.2002 -72 72v376c0 35.4004 28.7002 64 64 64c29.9004 0 54.7002 -20.5 61.7998 -48.2002c0.700195 0 1.40039 0.200195 2.2002 0.200195\nc35.2998 0 64 -28.7002 64 -64c0 -4.7998 -0.700195 -9.5 -1.7002 -14c29.2002 -12 49.7002 -40.5996 49.7002 -74c0 -12.5996 -3.09961 -24.2998 -8.2998 -34.9004c24 -13.7998 40.2998 -39.3994 40.2998 -69.0996z\" />\n    <glyph glyph-name=\"car-alt\" unicode=\"&#xf5de;\" horiz-adv-x=\"480\" \nd=\"M438.66 235.67c24.1201 -9.16992 41.3398 -32.3301 41.3398 -59.6699v-48c0 -16.1299 -6.16016 -30.6797 -16 -41.9297v-54.0703c0 -17.6699 -14.3301 -32 -32 -32h-32c-17.6699 0 -32 14.3301 -32 32v32h-256v-32c0 -17.6699 -14.3301 -32 -32 -32h-32\nc-17.6699 0 -32 14.3301 -32 32v54.0703c-9.83984 11.2598 -16 25.8096 -16 41.9297v48c0 27.3398 17.2197 50.5 41.3398 59.6699l11.2402 28.0996l19.9297 49.8301c17.1104 42.7705 57.9307 70.4004 103.99 70.4004h127c46.0703 0 86.8799 -27.6299 103.99 -70.4004\nl19.9297 -49.8301zM131.93 289.83l-19.9297 -49.8301h256l-19.9297 49.8301c-7.29004 18.2197 -24.9404 30.1699 -44.5703 30.1699h-127c-19.6299 0 -37.2803 -11.9502 -44.5703 -30.1699zM80 128.2c19.2002 0 48 -3.19043 48 15.9502\nc0 19.1396 -28.7998 47.8496 -48 47.8496s-32 -12.7598 -32 -31.9004c0 -19.1396 12.7998 -31.8994 32 -31.8994zM400 128.2c19.2002 0 32 12.7598 32 31.8994c0 19.1406 -12.7998 31.9004 -32 31.9004s-48 -28.71 -48 -47.8496c0 -19.1406 28.7998 -15.9502 48 -15.9502z\n\" />\n    <glyph glyph-name=\"car-battery\" unicode=\"&#xf5df;\" \nd=\"M480 320c17.6699 0 32 -14.3301 32 -32v-256c0 -17.6699 -14.3301 -32 -32 -32h-448c-17.6699 0 -32 14.3301 -32 32v256c0 17.6699 14.3301 32 32 32h32v48c0 8.83984 7.16016 16 16 16h96c8.83984 0 16 -7.16016 16 -16v-48h128v48c0 8.83984 7.16016 16 16 16h96\nc8.83984 0 16 -7.16016 16 -16v-48h32zM192 184v16c0 4.41992 -3.58008 8 -8 8h-112c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h112c4.41992 0 8 3.58008 8 8zM448 184v16c0 4.41992 -3.58008 8 -8 8h-40v40c0 4.41992 -3.58008 8 -8 8h-16\nc-4.41992 0 -8 -3.58008 -8 -8v-40h-40c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h40v-40c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v40h40c4.41992 0 8 3.58008 8 8z\" />\n    <glyph glyph-name=\"car-crash\" unicode=\"&#xf5e1;\" horiz-adv-x=\"640\" \nd=\"M143.25 227.19l-12.4199 -46.3701c-3.00977 -11.25 -3.62988 -22.8906 -2.41016 -34.3906l-35.2002 -28.9795c-6.56934 -5.41016 -16.3096 0.429688 -14.6201 8.76953l15.4404 76.6807c1.05957 5.25977 -2.66016 10.2793 -8 10.79l-77.8604 7.5498\nc-8.46973 0.819336 -11.2295 11.8301 -4.13965 16.54l65.1504 43.2998c4.45996 2.96973 5.37988 9.15039 1.97949 13.29l-49.71 60.4102c-5.41016 6.56934 0.429688 16.2998 8.78027 14.6201l76.6797 -15.4404c5.25977 -1.05957 10.2803 2.66016 10.7998 8l7.5498 77.8604\nc0.820312 8.47949 11.8301 11.2295 16.5508 4.13965l43.2998 -65.1396c2.96973 -4.45996 9.14941 -5.37988 13.29 -1.98047l60.3994 49.71c6.57031 5.41016 16.3008 -0.429688 14.6201 -8.76953l-11.3301 -56.1602c-2.70996 -3.0498 -5.42969 -6.08984 -7.90918 -9.40039\nl-32.1504 -42.9697l-10.71 -14.3203c-32.7305 -8.75977 -59.1797 -34.5293 -68.0801 -67.7393zM637.82 94.6797l-12.4199 -46.3594c-3.13086 -11.6807 -9.38086 -21.6104 -17.5508 -29.3604c-2.25488 -2.13574 -6.17969 -5.27148 -8.75977 -7l-13.9902 -52.2295\nc-1.13965 -4.27051 -3.09961 -8.10059 -5.64941 -11.3809c-7.66992 -9.83984 -20.7402 -14.6797 -33.54 -11.25l-30.9102 8.28027c-17.0703 4.57031 -27.2002 22.1201 -22.6299 39.1904l8.28027 30.9102l-247.28 66.2598l-8.28027 -30.9102\nc-4.57031 -17.0703 -22.1201 -27.2002 -39.1895 -22.6299l-30.9102 8.28027c-12.7998 3.42969 -21.7002 14.1592 -23.4199 26.5098c-0.570312 4.12012 -0.350586 8.41992 0.790039 12.6797l13.9893 52.2305c-1.37207 2.78809 -3.2041 7.46973 -4.08984 10.4492\nc-3.2002 10.79 -3.64941 22.5205 -0.519531 34.2002l12.4199 46.3701c5.30957 19.7998 19.3594 34.8301 36.8896 42.21c4.9082 2.06836 13.1914 4.18262 18.4902 4.71973l18.1299 24.2305l32.1504 42.9697c3.44922 4.61035 7.18945 8.90039 11.1992 12.8398\nc8 7.89062 17.0303 14.4404 26.7402 19.5107c4.86035 2.54004 9.89062 4.70996 15.0498 6.48926c10.3301 3.58008 21.1904 5.62988 32.2402 6.04004s22.3105 -0.819336 33.4307 -3.7998l122.68 -32.8701c11.1201 -2.97949 21.4795 -7.54004 30.8496 -13.4297\nc11.7236 -7.36133 27.2646 -22.8174 34.6904 -34.5c8.81934 -13.8799 14.6396 -29.8398 16.6797 -46.9902l6.36035 -53.29l3.58984 -30.0498c8.79297 -6.34863 18.9805 -19.7568 22.7402 -29.9297c4.38965 -11.8799 5.29004 -25.1904 1.75 -38.3906zM255.58 213.66\nc-18.5498 4.96973 -34.21 -4.04004 -39.1699 -22.5303s4.10938 -34.1201 22.6494 -39.0898c18.5508 -4.96973 45.54 -15.5098 50.4902 2.97949c4.95996 18.4902 -15.4297 53.6709 -33.9697 58.6406zM546.19 185.49l-6.36035 53.29\nc-0.580078 4.87012 -1.88965 9.5293 -3.82031 13.8594c-5.7998 12.9902 -17.2002 23.0107 -31.4199 26.8203l-122.68 32.8701c-3.36914 0.902344 -8.93457 1.63477 -12.4229 1.63477c-13.2676 0 -30.4883 -8.62207 -38.4375 -19.2451l-32.1494 -42.9697l172 -46.0801z\nM564.68 130.84c-18.5498 4.96973 -53.7998 -15.3096 -58.75 -33.79c-4.94922 -18.4902 23.6904 -22.8594 42.2402 -27.8301c18.5498 -4.96973 34.21 4.04004 39.1699 22.5303c4.9502 18.4805 -4.10938 34.1201 -22.6602 39.0898z\" />\n    <glyph glyph-name=\"car-side\" unicode=\"&#xf5e4;\" horiz-adv-x=\"640\" \nd=\"M544 256c53.0195 0 96 -42.9805 96 -96v-80c0 -8.83984 -7.16016 -16 -16 -16h-48c0 -53.0195 -42.9805 -96 -96 -96s-96 42.9805 -96 96h-128c0 -53.0195 -42.9805 -96 -96 -96s-96 42.9805 -96 96h-48c-8.83984 0 -16 7.16016 -16 16v112\nc0 29.79 20.4404 54.5996 48 61.7402l47.9102 122.029c9.71973 24.3008 33.25 40.2305 59.4199 40.2305h213.91c16.9795 -0.00195312 39.3701 -10.7627 49.9795 -24.0195l108.78 -135.98h16zM160 16c26.4697 0 48 21.5303 48 48s-21.5303 48 -48 48s-48 -21.5303 -48 -48\ns21.5303 -48 48 -48zM232 256v96h-76.6699l-38.4004 -96h115.07zM280 256h166.04l-76.7998 96h-89.2402v-96zM480 16c26.4697 0 48 21.5303 48 48s-21.5303 48 -48 48s-48 -21.5303 -48 -48s21.5303 -48 48 -48z\" />\n    <glyph glyph-name=\"charging-station\" unicode=\"&#xf5e7;\" horiz-adv-x=\"576\" \nd=\"M336 0c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-320c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h320zM544 320h16c8.83984 0 16 -7.16016 16 -16v-32c0 -35.7598 -23.6201 -65.6904 -56 -75.9297v-120.07\nc0 -44.4102 -38.29 -80.0498 -83.5898 -75.6201c-39.4902 3.85059 -68.4102 39.3398 -68.4102 79.0098v24.6104c0 22.0898 -17.9102 40 -40 40h-8v-112h-288v352c0 35.3496 28.6504 64 64 64h160c35.3496 0 64 -28.6504 64 -64v-192h8c48.5996 0 88 -39.4004 88 -88v-28\nc0 -16.9902 15.2197 -30.5 32.7402 -27.6104c13.7598 2.27051 23.2598 15.2402 23.2598 29.1904v118.49c-32.3799 10.2393 -56 40.1699 -56 75.9297v32c0 8.83984 7.16016 16 16 16h16v48c0 8.83984 7.16016 16 16 16s16 -7.16016 16 -16v-48h32v48\nc0 8.83984 7.16016 16 16 16s16 -7.16016 16 -16v-48zM260.09 272.24c4.62012 6.97949 -1.14941 15.7598 -10.3896 15.7598h-57.7002l11.5996 50.79c2.02051 6.66992 -3.71973 13.21 -11.5996 13.21h-68c-6.01953 0 -11.0996 -3.90039 -11.8896 -9.11035l-16 -107\nc-0.959961 -6.2998 4.63965 -11.8896 11.8896 -11.8896h59.3496l-23.0195 -83.0801c-1.7998 -6.63965 4 -12.9199 11.6699 -12.9199c4.17969 0 8.19043 1.91016 10.3896 5.24023z\" />\n    <glyph glyph-name=\"directions\" unicode=\"&#xf5eb;\" \nd=\"M502.61 214.68c12.5195 -12.5293 12.5195 -32.8301 0 -45.3594l-223.931 -223.931c-12.5293 -12.5293 -32.8398 -12.5293 -45.3594 0l-223.931 223.931c-12.5195 12.5293 -12.5195 32.8301 0 45.3594l223.931 223.931c12.5293 12.5195 32.8398 12.5195 45.3594 0z\nM401.63 202.12c3.42969 3.16992 3.42969 8.58984 0 11.7598l-84.21 77.7305c-5.12988 4.72949 -13.4297 1.08984 -13.4297 -5.87988v-53.7305h-112c-17.6699 0 -32 -14.3301 -32 -32v-80c0 -4.41992 3.58008 -8 8 -8h32c4.41992 0 8 3.58008 8 8v64h96v-53.7305\nc0 -6.97949 8.30957 -10.6094 13.4297 -5.87988z\" />\n    <glyph glyph-name=\"draw-polygon\" unicode=\"&#xf5ee;\" horiz-adv-x=\"448\" \nd=\"M384 96c35.3496 0 64 -28.6504 63.9902 -64c0 -35.3496 -28.6504 -64 -64 -64c-23.6299 0 -44.0303 12.9502 -55.1201 32h-209.75c-11.0801 -19.0498 -31.4902 -32 -55.1201 -32c-35.3496 0 -64 28.6504 -64 64c0 23.6299 12.9502 44.04 32 55.1299v209.75\nc-19.0498 11.0801 -32 31.4902 -32 55.1201c0 35.3496 28.6504 64 64 64c23.6299 0 44.04 -12.9502 55.1201 -32h209.76c11.0801 19.0498 31.4902 32 55.1201 32c35.3496 0 64 -28.6504 64 -64s-28.6504 -64 -64 -64c-0.349609 0 -0.669922 0.0898438 -1.01953 0.0996094\nl-39.2002 -65.3193c5.08008 -9.16992 8.21973 -19.5605 8.21973 -30.7803s-3.15039 -21.6104 -8.21973 -30.7803l39.2002 -65.3193c0.349609 0 0.669922 0.0996094 1.01953 0.0996094zM96 87.1201c8.07422 -4.68848 18.4316 -15.0459 23.1201 -23.1201h208.36\nl-38.4609 64.0996c-0.349609 0 -0.669922 -0.0996094 -1.01953 -0.0996094c-35.3496 0 -64 28.6504 -64 64s28.6504 64 64 64c0.349609 0 0.669922 -0.0898438 1.01953 -0.0996094l38.4609 64.0996h-208.36c-4.69043 -8.07227 -15.0479 -18.4297 -23.1201 -23.1201v-209.76z\nM272 192c0 -8.82031 7.17969 -16 16 -16s16 7.17969 16 16s-7.17969 16 -16 16s-16 -7.17969 -16 -16zM400 352c0 8.82031 -7.17969 16 -16 16s-16 -7.17969 -16 -16s7.17969 -16 16 -16s16 7.17969 16 16zM64 368c-8.82031 0 -16 -7.17969 -16 -16s7.17969 -16 16 -16\ns16 7.17969 16 16s-7.17969 16 -16 16zM48 32c0 -8.82031 7.17969 -16 16 -16s16 7.17969 16 16s-7.17969 16 -16 16s-16 -7.17969 -16 -16zM384 16c8.82031 0 16 7.17969 16 16s-7.17969 16 -16 16s-16 -7.17969 -16 -16s7.17969 -16 16 -16z\" />\n    <glyph glyph-name=\"laptop-code\" unicode=\"&#xf5fc;\" horiz-adv-x=\"640\" \nd=\"M255.03 186.35l-58.3506 58.3408c-6.25 6.25 -6.25 16.3799 0 22.6299l58.3398 58.3398c6.25 6.25 16.3809 6.25 22.6309 0l11.3096 -11.3105c6.25 -6.25 6.25 -16.3799 0 -22.6299l-35.71 -35.7197l35.7197 -35.71c6.25 -6.25 6.25 -16.3799 0 -22.6299\nl-11.3096 -11.3105c-6.25 -6.25 -16.3799 -6.25 -22.6299 0zM351.04 197.65c-6.25 6.25 -6.25 16.3799 0 22.6299l35.71 35.7197l-35.71 35.71c-6.25 6.25 -6.25 16.3799 0 22.6299l11.3096 11.3105c6.25 6.25 16.3809 6.25 22.6309 0l58.3398 -58.3408\nc6.25 -6.25 6.25 -16.3799 0 -22.6299l-58.3398 -58.3398c-6.25 -6.25 -16.3809 -6.25 -22.6309 0zM624 32c8.7998 0 16 -7.2002 16 -16v-16c0 -35.2002 -28.7998 -64 -64 -64h-512c-35.2002 0 -64 28.7998 -64 64v16c0 8.7998 7.2002 16 16 16h239.23\nc-0.25 -14.5303 14.0791 -32 32.7695 -32h60.7998c18.0303 0 32 12.1904 32.7402 32h242.46zM576 400v-336h-512v336c0 26.4004 21.5996 48 48 48h416c26.4004 0 48 -21.5996 48 -48zM512 128v256h-384v-256h384z\" />\n    <glyph glyph-name=\"layer-group\" unicode=\"&#xf5fd;\" \nd=\"M12.4102 299.98c-16.5498 7.50977 -16.5498 32.5293 0 40.0391l232.95 105.671c2.79883 1.2793 7.56738 2.31738 10.6445 2.31738s7.84668 -1.03809 10.6455 -2.31738l232.93 -105.681c16.5498 -7.50977 16.5498 -32.5195 0 -40.0293l-232.94 -105.671\nc-6.7998 -3.08984 -14.4893 -3.08984 -21.29 0zM499.59 211.7c16.5498 -7.5 16.5498 -32.5 0 -40l-232.95 -105.59c-6.7998 -3.08008 -14.4893 -3.08008 -21.29 0l-232.939 105.59c-16.5498 7.5 -16.5498 32.5 0 40l58.0996 26.3301l161.63 -73.2705\nc7.57031 -3.42969 15.5908 -5.16992 23.8604 -5.16992s16.2998 1.74023 23.8604 5.16992l161.64 73.2705zM499.59 83.9004c16.5498 -7.5 16.5498 -32.5 0 -40l-232.95 -105.591c-6.7998 -3.0791 -14.4893 -3.0791 -21.29 0l-232.939 105.591\nc-16.5498 7.5 -16.5498 32.5 0 40l57.8799 26.2295l161.85 -73.3701c7.57031 -3.42969 15.5908 -5.16992 23.8604 -5.16992s16.2998 1.74023 23.8604 5.16992l161.859 73.3701z\" />\n    <glyph glyph-name=\"microscope\" unicode=\"&#xf610;\" \nd=\"M160 128c-17.6699 0 -32 14.3301 -32 32v224c0 17.6699 14.3301 32 32 32v16c0 8.83984 7.16016 16 16 16h64c8.83984 0 16 -7.16016 16 -16v-16c17.6699 0 32 -14.3301 32 -32v-224c0 -17.6699 -14.3301 -32 -32 -32h-12v-16c0 -8.83984 -7.16016 -16 -16 -16h-40\nc-8.83984 0 -16 7.16016 -16 16v16h-12zM464 0c26.5098 0 48 -21.4902 48 -48c0 -8.83984 -7.16016 -16 -16 -16h-480c-8.83984 0 -16 7.16016 -16 16c0 26.5098 21.4902 48 48 48h272c70.5801 0 128 57.4199 128 128s-57.4199 128 -128 128v64\nc105.88 0 192 -86.1201 192 -192c0 -49.2002 -18.7598 -93.9902 -49.29 -128h1.29004zM104 32c-4.41992 0 -8 3.58008 -8 8v16c0 4.41992 3.58008 8 8 8h208c4.41992 0 8 -3.58008 8 -8v-16c0 -4.41992 -3.58008 -8 -8 -8h-208z\" />\n    <glyph glyph-name=\"oil-can\" unicode=\"&#xf613;\" horiz-adv-x=\"640\" \nd=\"M629.8 287.69c5.11035 1.45996 10.2002 -2.38086 10.1904 -7.69043v-18.0801c0 -2.12012 -0.839844 -4.16016 -2.33984 -5.66016l-212.261 -214.75c-6.00977 -6.08984 -14.21 -9.50977 -22.7598 -9.50977h-274.63c-17.6699 0 -32 14.3301 -32 32v46.54l-69.7197 12.6904\nc-15.2207 2.75977 -26.2803 16.0195 -26.2803 31.4795v94.9502c0 17.9795 14.6699 32.0098 31.9297 32.0098c1.61133 0 4.20605 -0.237305 5.79004 -0.530273l138.28 -25.1396h56v48h-56c-8.83984 0 -16 7.16016 -16 16v16c0 8.83984 7.16016 16 16 16h160\nc8.83984 0 16 -7.16016 16 -16v-16c0 -8.83984 -7.16016 -16 -16 -16h-56v-48h56.8896c8.33984 -0.00292969 21.1611 -3.03125 28.6201 -6.75977l50.4902 -25.2402zM96 159.33v62.4297l-48 8.73047v-62.4307zM549.33 74.6699c0 23.5605 42.6699 85.3301 42.6699 85.3301\ns42.6699 -61.7598 42.6699 -85.3301s-19.0996 -42.6699 -42.6699 -42.6699s-42.6699 19.1104 -42.6699 42.6699z\" />\n    <glyph glyph-name=\"poop\" unicode=\"&#xf619;\" \nd=\"M451.36 78.8604c34.3301 -5.48047 60.6396 -34.9805 60.6396 -70.8604c0 -39.7598 -32.2402 -72 -72 -72h-368c-39.7598 0 -72 32.2402 -72 72c0 35.8799 26.3096 65.3799 60.6396 70.8604c-17.2998 13.1494 -28.6396 33.7295 -28.6396 57.1396\nc0 39.7695 32.2402 72 72 72h14.0703c-13.4199 11.7305 -22.0703 28.7803 -22.0703 48c0 35.3496 28.6504 64 64 64h16c44.1797 0 80 35.8203 80 80c0 17.3799 -5.69043 33.3604 -15.1104 46.4805c4.95996 0.779297 9.94043 1.51953 15.1104 1.51953\nc53.0195 0 96 -42.9805 96 -96c0 -11.2803 -2.30957 -21.9502 -5.87988 -32h5.87988c35.3496 0 64 -28.6504 64 -64c0 -19.2197 -8.65039 -36.2695 -22.0703 -48h14.0703c39.7598 0 72 -32.2305 72 -72c0 -23.4102 -11.3398 -43.9902 -28.6396 -57.1396z\" />\n    <glyph glyph-name=\"shapes\" unicode=\"&#xf61f;\" \nd=\"M512 128v-160c0 -17.6699 -14.3301 -32 -32 -32h-160c-17.6699 0 -32 14.3301 -32 32v160c0 17.6699 14.3301 32 32 32h160c17.6699 0 32 -14.3301 32 -32zM128 192c70.6904 0 128 -57.3096 128 -128s-57.3096 -128 -128 -128s-128 57.3096 -128 128s57.3096 128 128 128\nzM479.03 224h-190.061c-25.3398 0 -41.1797 26.6699 -28.5098 48l95.0303 160c12.6699 21.3301 44.3496 21.3301 57.0195 0l95.0303 -160c12.6699 -21.3301 -3.16992 -48 -28.5098 -48z\" />\n    <glyph glyph-name=\"star-of-life\" unicode=\"&#xf621;\" horiz-adv-x=\"480\" \nd=\"M471.99 113.57c7.66016 -4.41992 10.2793 -14.2002 5.85938 -21.8506l-32.0195 -55.4297c-4.41992 -7.66016 -14.21 -10.2803 -21.8701 -5.86035l-135.93 78.4307v-156.86c0 -8.83984 -7.16992 -16 -16.0107 -16h-64.0391c-8.84082 0 -16.0107 7.16016 -16.0107 16\nv156.85l-135.93 -78.4297c-7.66016 -4.41016 -17.4502 -1.79004 -21.8701 5.86035l-32.0195 55.4297c-4.41992 7.65039 -1.80078 17.4404 5.85938 21.8604l135.931 78.4297l-135.931 78.4297c-7.66016 4.41992 -10.2793 14.21 -5.85938 21.8604l32.0195 55.4199\nc4.41992 7.65039 14.21 10.2803 21.8701 5.86035l135.93 -78.4307v156.86c0 8.83984 7.16992 16 16.0107 16h64.0391c8.84082 0 16.0107 -7.16016 16.0107 -16v-156.85l135.93 78.4297c7.66016 4.41992 17.4502 1.79004 21.8701 -5.86035l32.0195 -55.4297\nc4.41992 -7.66016 1.80078 -17.4404 -5.85938 -21.8604l-135.931 -78.4297z\" />\n    <glyph glyph-name=\"teeth\" unicode=\"&#xf62e;\" horiz-adv-x=\"640\" \nd=\"M544 448c53.0195 0 96 -42.9805 96 -96v-320c0 -53.0195 -42.9805 -96 -96 -96h-448c-53.0195 0 -96 42.9805 -96 96v320c0 53.0195 42.9805 96 96 96h448zM160 80v64c0 8.83984 -7.16016 16 -16 16h-64c-8.83984 0 -16 -7.16016 -16 -16v-64\nc0 -26.5098 21.4902 -48 48 -48s48 21.4902 48 48zM160 208v64c0 26.5098 -21.4902 48 -48 48s-48 -21.4902 -48 -48v-64c0 -8.83984 7.16016 -16 16 -16h64c8.83984 0 16 7.16016 16 16zM304 88v56c0 8.83984 -7.16016 16 -16 16h-80c-8.83984 0 -16 -7.16016 -16 -16v-56\nc0 -30.9297 25.0703 -56 56 -56s56 25.0703 56 56zM304 208v88c0 30.9297 -25.0703 56 -56 56s-56 -25.0703 -56 -56v-88c0 -8.83984 7.16016 -16 16 -16h80c8.83984 0 16 7.16016 16 16zM448 88v56c0 8.83984 -7.16016 16 -16 16h-80c-8.83984 0 -16 -7.16016 -16 -16v-56\nc0 -30.9297 25.0703 -56 56 -56s56 25.0703 56 56zM448 208v88c0 30.9297 -25.0703 56 -56 56s-56 -25.0703 -56 -56v-88c0 -8.83984 7.16016 -16 16 -16h80c8.83984 0 16 7.16016 16 16zM576 80v64c0 8.83984 -7.16016 16 -16 16h-64c-8.83984 0 -16 -7.16016 -16 -16v-64\nc0 -26.5098 21.4902 -48 48 -48s48 21.4902 48 48zM576 208v64c0 26.5098 -21.4902 48 -48 48s-48 -21.4902 -48 -48v-64c0 -8.83984 7.16016 -16 16 -16h64c8.83984 0 16 7.16016 16 16z\" />\n    <glyph glyph-name=\"teeth-open\" unicode=\"&#xf62f;\" horiz-adv-x=\"640\" \nd=\"M544 448c53.0195 0 96 -42.9805 96 -96v-64c0 -35.3496 -28.6602 -64 -64 -64h-512c-35.3398 0 -64 28.6504 -64 64v64c0 53.0195 42.9805 96 96 96h448zM160 272v32c0 26.5098 -21.4902 48 -48 48s-48 -21.4902 -48 -48v-32c0 -8.83984 7.16016 -16 16 -16h64\nc8.83984 0 16 7.16016 16 16zM304 272v56c0 30.9297 -25.0703 56 -56 56s-56 -25.0703 -56 -56v-56c0 -8.83984 7.16016 -16 16 -16h80c8.83984 0 16 7.16016 16 16zM448 272v56c0 30.9297 -25.0703 56 -56 56s-56 -25.0703 -56 -56v-56c0 -8.83984 7.16016 -16 16 -16h80\nc8.83984 0 16 7.16016 16 16zM576 272v32c0 26.5098 -21.4902 48 -48 48s-48 -21.4902 -48 -48v-32c0 -8.83984 7.16016 -16 16 -16h64c8.83984 0 16 7.16016 16 16zM576 128c35.3398 0 64 -28.6504 64 -64v-32c0 -53.0195 -42.9805 -96 -96 -96h-448\nc-53.0195 0 -96 42.9805 -96 96v32c0 35.3496 28.6602 64 64 64h512zM160 48v32c0 8.83984 -7.16016 16 -16 16h-64c-8.83984 0 -16 -7.16016 -16 -16v-32c0 -26.5098 21.4902 -48 48 -48s48 21.4902 48 48zM304 56v24c0 8.83984 -7.16016 16 -16 16h-80\nc-8.83984 0 -16 -7.16016 -16 -16v-24c0 -30.9297 25.0703 -56 56 -56s56 25.0703 56 56zM448 56v24c0 8.83984 -7.16016 16 -16 16h-80c-8.83984 0 -16 -7.16016 -16 -16v-24c0 -30.9297 25.0703 -56 56 -56s56 25.0703 56 56zM576 48v32c0 8.83984 -7.16016 16 -16 16h-64\nc-8.83984 0 -16 -7.16016 -16 -16v-32c0 -26.5098 21.4902 -48 48 -48s48 21.4902 48 48z\" />\n    <glyph glyph-name=\"theater-masks\" unicode=\"&#xf630;\" horiz-adv-x=\"640\" \nd=\"M206.86 202.85l-7.62988 -43.1797c-21.0908 -7.21973 -38.5 -18.2002 -49.9004 -30.9199c-2.41992 32.9004 21.6504 63.6504 57.5303 74.0996zM95.8096 153c5.87012 -33.1699 64.3203 -71.8096 111.931 -84.79c10.5596 -27.0996 25.9795 -50.5 39.5 -67.5801\nc-3.25977 -0.339844 -6.41992 -0.799805 -10.0098 -0.799805c-68.1201 0 -190.221 61.5596 -204.45 142.08l-31.7305 179.51c-4.96973 28.0996 7.98047 56.0996 32.1504 69.5205c67.8193 37.6396 143.46 57.0596 220.12 57.0596c23.9199 0 47.9492 -1.88965 71.8594 -5.7002\nc17.29 -2.76953 31.7803 -13.0498 41.7705 -27c-19.1299 -0.769531 -38.29 -2.2998 -57.1807 -5.31934c-19.8594 -3.1709 -37.6396 -12.5303 -51.5898 -26c-1.62012 0.0195312 -3.23926 0.189453 -4.84961 0.189453c-65.8896 0 -131.25 -16.9502 -189.01 -49.0098\nc0.0400391 -0.0302734 -0.530273 -1.03027 -0.240234 -2.65039zM193.36 290.46c3.83984 -21.7002 -10.6904 -42.4004 -32.4404 -46.2197c-21.7598 -3.82031 -42.5 10.6699 -46.3398 32.3701c-0.730469 4.12012 -0.610352 8.15918 -0.0898438 12.0996\nc10.8096 -5.57031 24.8301 -7.75 39.4795 -5.16992c14.6504 2.57031 27.0703 9.41016 35.3203 18.3203c1.83984 -3.53027 3.33984 -7.28027 4.07031 -11.4004zM606.8 327.1c24.1699 -13.4092 37.1201 -41.4092 32.1504 -69.5195l-31.7305 -179.51\nc-15.3896 -87.0508 -156.83 -151.931 -219.859 -140.84c-63.0303 11.0791 -173.7 120.3 -158.311 207.35l31.7305 179.51c4.95996 28.1006 26.7295 50 54.04 54.3604c100.55 16.0596 203 -1.96973 291.979 -51.3506zM333.56 230.3\nc-0.729492 -4.12012 -0.609375 -8.16016 -0.0791016 -12.1094c10.8096 5.56934 24.8291 7.75 39.4795 5.16992c14.6504 -2.57031 27.0703 -9.41016 35.3203 -18.3203c1.83984 3.53027 3.33984 7.28027 4.06934 11.4004c3.83008 21.6992 -10.6895 42.3896 -32.4492 46.2197\nc-21.7607 3.83008 -42.5 -10.6602 -46.3408 -32.3604zM404.03 31.54c55.6699 -9.79004 108.2 23.7803 122.38 75.7197c-28.1104 -16.9697 -68.6504 -24.21 -111.93 -16.5996c-43.2803 7.60938 -78.8906 28.2402 -99.4902 53.7803\nc-4.48047 -53.6309 33.3594 -103.11 89.04 -112.9zM534.33 182.88c1.83984 3.52051 3.33984 7.27051 4.07031 11.4004c3.83008 21.7002 -10.7002 42.3896 -32.4502 46.2197c-21.7598 3.82031 -42.5 -10.6699 -46.3398 -32.3701\nc-0.730469 -4.12012 -0.610352 -8.16016 -0.0908203 -12.0996c10.8105 5.56934 24.8301 7.75 39.4805 5.16992c14.6504 -2.57031 27.0801 -9.41016 35.3301 -18.3203z\" />\n    <glyph glyph-name=\"traffic-light\" unicode=\"&#xf637;\" horiz-adv-x=\"384\" \nd=\"M384 256c0 -41.7402 -26.7998 -76.9004 -64 -90.1201v-37.8799h64c0 -42.8398 -28.25 -78.6904 -66.9902 -91.0498c-12.4297 -57.6699 -63.6094 -100.95 -125.01 -100.95s-112.58 43.2803 -125.01 100.95c-38.7402 12.3594 -66.9902 48.21 -66.9902 91.0498h64v37.8799\nc-37.2002 13.2197 -64 48.3799 -64 90.1201h64v37.8799c-37.2002 13.2197 -64 48.3799 -64 90.1201h64v32c0 17.6699 14.3301 32 32 32h192c17.6699 0 32 -14.3301 32 -32v-32h64c0 -41.7402 -26.7998 -76.9004 -64 -90.1201v-37.8799h64zM192 32\nc26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48s-48 -21.4902 -48 -48s21.4902 -48 48 -48zM192 160c26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48s-48 -21.4902 -48 -48s21.4902 -48 48 -48zM192 288c26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48\ns-48 -21.4902 -48 -48s21.4902 -48 48 -48z\" />\n    <glyph glyph-name=\"truck-monster\" unicode=\"&#xf63b;\" horiz-adv-x=\"640\" \nd=\"M624 224c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-16.71c-29.21 38.6504 -75.0996 64 -127.28 64c-52.1797 0 -98.0693 -25.3496 -127.279 -64h-65.4502c-29.21 38.6504 -75.1006 64 -127.28 64s-98.0703 -25.3496 -127.28 -64h-16.7197\nc-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h16v80c0 8.83984 7.16016 16 16 16h176v96c0 17.6699 14.3301 32 32 32h113.24c16.9795 -0.00195312 39.3701 -10.7627 49.9795 -24.0195l83.1807 -103.98h73.5996c17.6699 0 32 -14.3301 32 -32v-64h16z\nM288 320h132.44l-51.2002 64h-81.2402v-64zM592 96c8.83984 0 16 -7.16016 16.0195 -16v-32c0 -8.83984 -7.15918 -16 -16 -16h-5.19922c-1.79688 -6.01074 -5.67188 -15.3691 -8.65039 -20.8896l3.66992 -3.66992c6.25 -6.25 6.25 -16.3809 0 -22.6309l-22.6299 -22.6299\nc-6.25 -6.25 -16.3799 -6.25 -22.6299 0l-3.66992 3.66992c-6.62012 -3.58008 -13.5703 -6.44922 -20.9004 -8.64941v-5.2002c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v5.2002c-7.33008 2.2002 -14.29 5.08008 -20.8994 8.64941\nl-3.66992 -3.66992c-6.25 -6.25 -16.3809 -6.25 -22.6309 0l-22.6299 22.6299c-6.25 6.25 -6.25 16.3809 0 22.6309l3.66992 3.66992c-3.58008 6.60938 -6.44922 13.5596 -8.64941 20.8896h-5.2002c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h5.2002\nc1.7959 6.01074 5.6709 15.3691 8.64941 20.8896l-3.66992 3.66992c-6.25 6.25 -6.25 16.3809 0 22.6309l22.6299 22.6299c6.25 6.25 16.3809 6.25 22.6309 0l3.66992 -3.66992c6.60938 3.58008 13.5596 6.44922 20.8896 8.64941v5.2002c0 8.83984 7.16016 16 16 16h32\nc8.83984 0 16 -7.16016 16 -16v-5.2002c6.01074 -1.7959 15.3691 -5.6709 20.8896 -8.64941l3.66992 3.66992c6.25 6.25 16.3809 6.25 22.6309 0l22.6299 -22.6299c6.25 -6.25 6.25 -16.3809 0 -22.6309l-3.66992 -3.66992\nc3.58008 -6.60938 6.44922 -13.5596 8.64941 -20.8896h5.2002zM480 16c26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48s-48 -21.4902 -48 -48s21.4902 -48 48 -48zM272 96c8.83984 0 16 -7.16016 16.0195 -15.9902v-32c0 -8.83984 -7.15918 -16 -16 -16h-5.19922\nc-1.79688 -6.00977 -5.67188 -15.3691 -8.65039 -20.8896l3.66992 -3.66992c6.25 -6.25 6.25 -16.3799 0 -22.6299l-22.6299 -22.6299c-6.25 -6.25 -16.3799 -6.25 -22.6299 0l-3.66992 3.66992c-6.62012 -3.58008 -13.5703 -6.4502 -20.9004 -8.65039v-5.2002\nc0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v5.2002c-7.33008 2.2002 -14.29 5.08008 -20.8994 8.65039l-3.66992 -3.66992c-6.25 -6.25 -16.3809 -6.25 -22.6309 0l-22.6299 22.6299c-6.25 6.25 -6.25 16.3799 0 22.6299l3.66992 3.66992\nc-3.58008 6.61035 -6.44922 13.5596 -8.64941 20.8896h-5.2002c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h5.2002c1.7959 6.01074 5.6709 15.3691 8.64941 20.8906l-3.66992 3.66992c-6.25 6.25 -6.25 16.3799 0 22.6299l22.6299 22.6201\nc6.25 6.25 16.3809 6.25 22.6309 0l3.66992 -3.66992c6.60938 3.58008 13.5596 6.44922 20.8896 8.64941v5.2002c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-5.2002c6.01074 -1.7959 15.3691 -5.6709 20.8896 -8.64941l3.66992 3.66992\nc6.25 6.25 16.3809 6.25 22.6309 0l22.6299 -22.6299c6.25 -6.25 6.25 -16.3809 0 -22.6309l-3.66992 -3.66992c3.58008 -6.60938 6.44922 -13.5596 8.64941 -20.8896h5.2002zM160 16c26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48s-48 -21.4902 -48 -48\ns21.4902 -48 48 -48z\" />\n    <glyph glyph-name=\"truck-pickup\" unicode=\"&#xf63c;\" horiz-adv-x=\"640\" \nd=\"M624 160c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-49.5996c0.759766 -5.26953 1.60938 -10.5195 1.60938 -16c0 -61.8604 -50.1396 -112 -112 -112c-61.8594 0 -112 50.1396 -112 112c0 5.48047 0.850586 10.7305 1.61035 16h-67.2305\nc0.760742 -5.26953 1.61035 -10.5195 1.61035 -16c0 -61.8604 -50.1396 -112 -112 -112s-112 50.1396 -112 112c0 5.48047 0.849609 10.7305 1.61035 16h-49.6104c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h16v64c0 17.6699 14.3301 32 32 32h160v128\nc0 17.6699 14.3301 32 32 32h113.24c16.9795 -0.00195312 39.3701 -10.7627 49.9795 -24.0195l108.78 -135.98h48c17.6699 0 32 -14.3301 32 -32v-64h16zM288 352v-96h158.04l-76.7998 96h-81.2402zM176 32c26.4697 0 48 21.5303 48 48s-21.5303 48 -48 48\ns-48 -21.5303 -48 -48s21.5303 -48 48 -48zM464 32c26.4697 0 48 21.5303 48 48s-21.5303 48 -48 48s-48 -21.5303 -48 -48s21.5303 -48 48 -48z\" />\n    <glyph glyph-name=\"ad\" unicode=\"&#xf641;\" \nd=\"M157.52 176l18.4805 53.2197l18.4805 -53.2197h-36.9609zM352 192c13.2305 0 24 -10.7695 24 -24s-10.7695 -24 -24 -24s-24 10.7695 -24 24s10.7695 24 24 24zM464 384c26.5 0 48 -21.5 48 -48v-288c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v288\nc0 26.5 21.5 48 48 48h416zM250.58 96c11 0 18.7197 10.8496 15.1104 21.25l-53.6904 154.62c-3.08789 8.90332 -13.2422 16.1299 -22.666 16.1299h-0.00390625h-26.6602h-0.00390625c-9.41992 0 -19.5742 -7.22168 -22.666 -16.1201l-53.7002 -154.63\nc-3.60938 -10.4004 4.11035 -21.25 15.1201 -21.25h16.9404h0.00585938c6.28125 0 13.0527 4.81641 15.1143 10.75l7.37988 21.25h70.29l7.36914 -21.25c2.24023 -6.42969 8.31055 -10.75 15.1201 -10.75h16.9404zM424 112v160c0 8.83984 -7.16016 16 -16 16h-16\nc-8.83984 0 -16 -7.16016 -16 -16v-36.4199c-7.54004 2.68945 -15.54 4.41992 -24 4.41992c-39.7002 0 -72 -32.2998 -72 -72s32.2998 -72 72 -72c9.92969 0 19.4004 2.01953 28.0195 5.67969c2.94043 -3.41016 7.13086 -5.67969 11.9805 -5.67969h16\nc8.83984 0 16 7.16016 16 16z\" />\n    <glyph glyph-name=\"ankh\" unicode=\"&#xf644;\" horiz-adv-x=\"320\" \nd=\"M296 192c13.25 0 24 -10.7402 24 -24v-32c0 -13.25 -10.75 -24 -24 -24h-96v-152c0 -13.25 -10.75 -24 -24 -24h-32c-13.25 0 -24 10.75 -24 24v152h-96c-13.25 0 -24 10.75 -24 24v32c0 13.2598 10.75 24 24 24h44.6201c-21.0801 33.9902 -36.6201 74.3496 -36.6201 112\nc0 88.3701 57.3096 144 128 144s128 -55.6299 128 -144c0 -37.6504 -15.54 -78.0098 -36.6201 -112h44.6201zM160 368c-29.6104 0 -48 -24.5195 -48 -64c0 -34.6602 27.1396 -78.1504 48 -100.87c20.8604 22.7305 48 66.21 48 100.87c0 39.4805 -18.3896 64 -48 64z\" />\n    <glyph glyph-name=\"bible\" unicode=\"&#xf647;\" horiz-adv-x=\"448\" \nd=\"M448 89.5996c0 -9.59961 -3.2002 -16 -9.59961 -19.1992c-3.2002 -12.8008 -3.2002 -57.6006 0 -73.6006c6.39941 -6.39941 9.59961 -12.7998 9.59961 -19.2002v-16c0 -16 -12.7998 -25.5996 -25.5996 -25.5996h-326.4c-54.4004 0 -96 41.5996 -96 96v320\nc0 54.4004 41.5996 96 96 96h326.4c16 0 25.5996 -9.59961 25.5996 -25.5996v-332.801zM144 304v-32c0 -8.83984 7.16016 -16 16 -16h48v-112c0 -8.83984 7.16016 -16 16 -16h32c8.83984 0 16 7.16016 16 16v112h48c8.83984 0 16 7.16016 16 16v32\nc0 8.83984 -7.16016 16 -16 16h-48v48c0 8.83984 -7.16016 16 -16 16h-32c-8.83984 0 -16 -7.16016 -16 -16v-48h-48c-8.83984 0 -16 -7.16016 -16 -16zM380.8 0v64h-284.8c-16 0 -32 -12.7998 -32 -32s12.7998 -32 32 -32h284.8z\" />\n    <glyph glyph-name=\"business-time\" unicode=\"&#xf64a;\" horiz-adv-x=\"640\" \nd=\"M496 224c79.5898 0 144 -64.4102 144 -144s-64.4102 -144 -144 -144s-144 64.4102 -144 144s64.4102 144 144 144zM560 73.71v12.5801c0 5.33984 -4.37012 9.70996 -9.70996 9.70996h-38.29v54.2803c0 5.33984 -4.37012 9.70996 -9.70996 9.70996h-12.5703\nc-5.33984 0 -9.70996 -4.37012 -9.70996 -9.70996v-76.5703c0 -5.33984 4.37012 -9.70996 9.70996 -9.70996h60.5703c5.33984 0 9.70996 4.37012 9.70996 9.70996zM496 256c-37.5303 0 -72.2803 -11.9102 -100.88 -32h-395.12v80c0 25.5996 22.4004 48 48 48h80v48\nc0 25.5996 22.4004 48 48 48h160c25.5996 0 48 -22.4004 48 -48v-48h80c25.5996 0 48 -22.4004 48 -48v-48.8096c-5.28027 0.479492 -10.5996 0.80957 -16 0.80957zM320 352v32h-128v-32h128zM326.82 128c-4.33984 -15.2803 -6.82031 -31.3398 -6.82031 -48\nc0 -28.8203 7.09961 -55.96 19.4297 -80h-291.43c-25.5996 0 -48 22.4004 -48 48v144h192v-48c0 -8.83984 7.16016 -16 16 -16h118.82z\" />\n    <glyph glyph-name=\"city\" unicode=\"&#xf64f;\" horiz-adv-x=\"640\" \nd=\"M616 256c13.25 0 24 -10.7402 24 -24v-264c0 -17.6699 -14.3301 -32 -32 -32h-576c-17.6699 0 -32 14.3301 -32 32v360c0 13.2598 10.7402 24 24 24h40v80c0 8.83984 7.16016 16 16 16h16c8.83984 0 16 -7.16016 16 -16v-80h64v80c0 8.83984 7.16016 16 16 16h16\nc8.83984 0 16 -7.16016 16 -16v-80h64v72c0 13.2598 10.7402 24 24 24h144c13.2598 0 24 -10.7402 24 -24v-168h136zM128 44v40c0 6.62988 -5.37012 12 -12 12h-40c-6.62988 0 -12 -5.37012 -12 -12v-40c0 -6.62988 5.37012 -12 12 -12h40c6.62988 0 12 5.37012 12 12z\nM128 140v40c0 6.62988 -5.37012 12 -12 12h-40c-6.62988 0 -12 -5.37012 -12 -12v-40c0 -6.62988 5.37012 -12 12 -12h40c6.62988 0 12 5.37012 12 12zM128 236v40c0 6.62988 -5.37012 12 -12 12h-40c-6.62988 0 -12 -5.37012 -12 -12v-40c0 -6.62988 5.37012 -12 12 -12h40\nc6.62988 0 12 5.37012 12 12zM256 44v40c0 6.62988 -5.37012 12 -12 12h-40c-6.62988 0 -12 -5.37012 -12 -12v-40c0 -6.62988 5.37012 -12 12 -12h40c6.62988 0 12 5.37012 12 12zM256 140v40c0 6.62988 -5.37012 12 -12 12h-40c-6.62988 0 -12 -5.37012 -12 -12v-40\nc0 -6.62988 5.37012 -12 12 -12h40c6.62988 0 12 5.37012 12 12zM256 236v40c0 6.62988 -5.37012 12 -12 12h-40c-6.62988 0 -12 -5.37012 -12 -12v-40c0 -6.62988 5.37012 -12 12 -12h40c6.62988 0 12 5.37012 12 12zM416 140v40c0 6.62988 -5.37012 12 -12 12h-40\nc-6.62988 0 -12 -5.37012 -12 -12v-40c0 -6.62988 5.37012 -12 12 -12h40c6.62988 0 12 5.37012 12 12zM416 236v40c0 6.62988 -5.37012 12 -12 12h-40c-6.62988 0 -12 -5.37012 -12 -12v-40c0 -6.62988 5.37012 -12 12 -12h40c6.62988 0 12 5.37012 12 12zM416 332v40\nc0 6.62988 -5.37012 12 -12 12h-40c-6.62988 0 -12 -5.37012 -12 -12v-40c0 -6.62988 5.37012 -12 12 -12h40c6.62988 0 12 5.37012 12 12zM576 44v40c0 6.62988 -5.37012 12 -12 12h-40c-6.62988 0 -12 -5.37012 -12 -12v-40c0 -6.62988 5.37012 -12 12 -12h40\nc6.62988 0 12 5.37012 12 12zM576 140v40c0 6.62988 -5.37012 12 -12 12h-40c-6.62988 0 -12 -5.37012 -12 -12v-40c0 -6.62988 5.37012 -12 12 -12h40c6.62988 0 12 5.37012 12 12z\" />\n    <glyph glyph-name=\"comment-dollar\" unicode=\"&#xf651;\" \nd=\"M256 416c141.38 0 256 -93.1201 256 -208s-114.62 -208 -256 -208c-38.4102 0 -74.71 7.07031 -107.4 19.3799c-24.6094 -19.6299 -74.3398 -51.3799 -140.6 -51.3799h-0.00195312c-4.41309 0 -7.99512 3.58203 -7.99512 7.99512\nc0 1.76172 0.984375 4.22754 2.19727 5.50488c0.5 0.530273 42.2598 45.4502 54.8193 95.7598c-35.6094 35.7305 -57.0195 81.1807 -57.0195 130.74c0 114.88 114.62 208 256 208zM280 113.56c30.29 3.62012 53.3701 30.9805 49.3203 63.04\nc-2.90039 22.96 -20.6602 41.3105 -42.9102 47.6699l-50.0703 14.3008c-3.59961 1.0293 -6.12012 4.35938 -6.12012 8.10938c0 4.64062 3.78027 8.41992 8.44043 8.41992h32.7803h0.0654297c2.94727 0 7.51367 -0.994141 10.1943 -2.21973\nc4.7998 -2.20996 10.3701 -1.70996 14.1094 2.03027l17.5205 17.5195c5.26953 5.27051 4.66992 14.2705 -1.5498 18.3799c-9.5 6.27051 -20.3604 10.1104 -31.7803 11.46v17.7305c0 8.83984 -7.16016 16 -16 16h-16c-8.83984 0 -16 -7.16016 -16 -16v-17.5498\nc-30.29 -3.62012 -53.3701 -30.9805 -49.3203 -63.0498c2.90039 -22.96 20.6602 -41.3203 42.9102 -47.6699l50.0703 -14.3008c3.59961 -1.0293 6.12012 -4.35938 6.12012 -8.10938c0 -4.64062 -3.78027 -8.41992 -8.44043 -8.41992h-32.7803\nc-3.59961 0 -7.0791 0.759766 -10.2598 2.21973c-4.7998 2.20996 -10.3701 1.70996 -14.1094 -2.03027l-17.5205 -17.5195c-5.26953 -5.27051 -4.66992 -14.2705 1.5498 -18.3799c9.5 -6.27051 20.3604 -10.1104 31.7803 -11.46v-17.7305c0 -8.83984 7.16016 -16 16 -16h16\nc8.83984 0 16 7.16016 16 16v17.5596z\" />\n    <glyph glyph-name=\"comments-dollar\" unicode=\"&#xf653;\" horiz-adv-x=\"576\" \nd=\"M416 256c0 -88.3701 -93.1201 -160 -208 -160c-40.9805 0 -79.0703 9.24023 -111.27 24.9805c-21.8008 -12.7305 -52.1504 -24.9805 -88.7305 -24.9805h-0.00195312c-4.41309 0 -7.99512 3.58203 -7.99512 7.99512c0 1.76172 0.984375 4.22754 2.19727 5.50488\nc0.319336 0.339844 22.4102 24.2803 35.7695 54.5195c-23.8398 26.0303 -37.9697 57.7109 -37.9697 91.9805c0 88.3701 93.1201 160 208 160s208 -71.6299 208 -160zM192 160c0 -4.41992 3.58008 -8 8 -8h16c4.41992 0 8 3.58008 8 8v16.1201\nc23.6201 0.629883 42.6699 20.54 42.6699 45.0703c0 19.9697 -12.9902 37.8096 -31.5801 43.3896l-45 13.5c-5.16016 1.54004 -8.76953 6.78027 -8.76953 12.7295c0 7.27051 5.2998 13.1904 11.7998 13.1904h28.1104c4.55957 0 8.94922 -1.29004 12.8193 -3.71973\nc3.24023 -2.03027 7.36035 -1.91016 10.1299 0.729492l11.75 11.21c3.53027 3.37012 3.33008 9.20996 -0.569336 12.1406c-9.10059 6.83984 -20.0801 10.7695 -31.3701 11.3496v16.29c0 4.41992 -3.58008 8 -8 8h-16c-4.41992 0 -8 -3.58008 -8 -8v-16.1201\nc-23.6201 -0.629883 -42.6699 -20.5498 -42.6699 -45.0703c0 -19.9697 12.9893 -37.8096 31.5801 -43.3896l45 -13.5c5.15918 -1.54004 8.76953 -6.78027 8.76953 -12.7295c0 -7.27051 -5.2998 -13.1904 -11.7998 -13.1904h-28.1104\nc-4.55957 0 -8.9502 1.2998 -12.8193 3.71973c-3.24023 2.03027 -7.36035 1.91016 -10.1309 -0.729492l-11.75 -11.21c-3.5293 -3.37012 -3.3291 -9.20996 0.570312 -12.1406c9.10059 -6.83008 20.0801 -10.7695 31.3701 -11.3496v-16.29zM538.01 36.0098\nc13.3604 -30.2598 35.4707 -54.1699 35.7803 -54.5c2.20996 -2.33008 2.82031 -5.72949 1.5498 -8.66992c-1.25 -2.92969 -4.13965 -4.83984 -7.33984 -4.83984c-36.5801 0 -66.9297 12.25 -88.7305 24.9805c-32.1992 -15.7402 -70.2891 -24.9805 -111.27 -24.9805\nc-86.2305 0 -160.2 40.3701 -191.73 97.8799c10.4102 -1.11035 20.9502 -1.87988 31.7305 -1.87988c132.34 0 240 86.1299 240 192c0 6.78027 -0.469727 13.4697 -1.33008 20.0703c75.8398 -23.8701 129.33 -81.1299 129.33 -148.07\nc0 -34.2695 -14.1299 -65.96 -37.9902 -91.9902z\" />\n    <glyph glyph-name=\"cross\" unicode=\"&#xf654;\" horiz-adv-x=\"384\" \nd=\"M352 320c17.6699 0 32 -14.3301 32 -32v-64c0 -17.6699 -14.3301 -32 -32 -32h-96v-224c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32v224h-96c-17.6699 0 -32 14.3301 -32 32v64c0 17.6699 14.3301 32 32 32h96v96c0 17.6699 14.3301 32 32 32\nh64c17.6699 0 32 -14.3301 32 -32v-96h96z\" />\n    <glyph glyph-name=\"dharmachakra\" unicode=\"&#xf655;\" \nd=\"M495 222.94c9.20996 0.569336 17 -6.74023 17.0098 -15.9707v-29.9395c0 -9.23047 -7.79004 -16.5498 -17 -15.9707l-17.2197 1.08008c-5.28027 -39.4795 -20.7998 -75.6299 -43.8604 -105.83l12.9502 -11.4297c6.91992 -6.09961 7.25977 -16.7803 0.730469 -23.3096\nl-21.1699 -21.1699c-6.52051 -6.52051 -17.2002 -6.19043 -23.3105 0.729492l-11.4297 12.9502c-30.2002 -23.0703 -66.3506 -38.5898 -105.84 -43.8604l1.08008 -17.2197c0.569336 -9.20996 -6.74023 -17 -15.9707 -17h-29.9395c-9.23047 0 -16.5498 7.79004 -15.9707 17\nl1.09082 17.2197c-39.4902 5.28027 -75.6406 20.7998 -105.841 43.8604l-11.4297 -12.9502c-6.09961 -6.91992 -16.7803 -7.25977 -23.3096 -0.729492l-21.1699 21.1699c-6.52051 6.51953 -6.19043 17.1992 0.729492 23.3096l12.9502 11.4297\nc-23.0703 30.1904 -38.5898 66.3408 -43.8604 105.83l-17.2197 -1.08008c-9.20996 -0.569336 -17 6.74023 -17 15.9707v29.9395c0 9.23047 7.79004 16.5498 17 15.9707l17.2197 -1.08008c5.28027 39.4893 20.7998 75.6396 43.8604 105.84l-12.9502 11.4297\nc-6.91992 6.10059 -7.25977 16.7803 -0.729492 23.3105l21.1699 21.1592c6.51953 6.52051 17.1992 6.19043 23.3096 -0.729492l11.4297 -12.9502c30.1904 23.0703 66.3408 38.5898 105.83 43.8604l-1.08008 17.2197c-0.569336 9.20996 6.74023 17 15.9707 17h29.9395\nc9.23047 0 16.5498 -7.79004 15.9707 -17l-1.07031 -17.21c39.4795 -5.28027 75.6299 -20.7998 105.83 -43.8604l11.4297 12.9404c6.10059 6.91992 16.7803 7.25977 23.3105 0.729492l21.1592 -21.1592c6.52051 -6.52051 6.19043 -17.2002 -0.729492 -23.3105\nl-12.9502 -11.4297c23.0703 -30.2002 38.5898 -66.3506 43.8604 -105.84zM281.84 349.39l-4.00977 -64.1201c10.2998 -2.40918 19.8896 -6.50977 28.6201 -11.9492l42.6201 48.29c-19.6006 14.1201 -42.4199 23.71 -67.2305 27.7793zM230.16 349.39\nc-24.8105 -4.06934 -47.6299 -13.6592 -67.2305 -27.7793l42.6201 -48.29c8.73047 5.42969 18.3301 9.54004 28.6201 11.9492zM126.39 285.06c-14.1201 -19.5996 -23.71 -42.4092 -27.7793 -67.2197l64.1201 -4.00977c2.41992 10.29 6.51953 19.8896 11.96 28.6201z\nM98.6104 166.16c4.06934 -24.8105 13.6592 -47.6299 27.7793 -67.2305l48.29 42.6201c-5.42969 8.73047 -9.54004 18.3301 -11.9492 28.6201zM230.16 34.6104l4 64.1201c-10.29 2.41992 -19.8906 6.51953 -28.6201 11.96l-42.6104 -48.3008\nc19.6006 -14.1201 42.4199 -23.71 67.2305 -27.7793zM256 160c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM281.84 34.6104c24.8105 4.06934 47.6201 13.6592 67.2197 27.7793l-42.6094 48.3008\nc-8.73047 -5.44043 -18.3301 -9.55078 -28.6201 -11.96zM385.61 98.9404c14.1201 19.5898 23.71 42.4092 27.7793 67.2295l-64.1201 4.00977c-2.40918 -10.2998 -6.50977 -19.8896 -11.9492 -28.6201zM349.27 213.83l64.1201 4\nc-4.06934 24.8096 -13.6592 47.6299 -27.7793 67.2295l-48.3008 -42.6094c5.44043 -8.73047 9.55078 -18.3301 11.96 -28.6201z\" />\n    <glyph glyph-name=\"envelope-open-text\" unicode=\"&#xf658;\" \nd=\"M176 232c-8.83984 0 -16 7.16016 -16 16v16c0 8.83984 7.16016 16 16 16h160c8.83984 0 16 -7.16016 16 -16v-16c0 -8.83984 -7.16016 -16 -16 -16h-160zM160 152v16c0 8.83984 7.16016 16 16 16h160c8.83984 0 16 -7.16016 16 -16v-16c0 -8.83984 -7.16016 -16 -16 -16\nh-160c-8.83984 0 -16 7.16016 -16 16zM256 30.8701c16.4199 0 32.8398 5.07031 46.8604 15.1895l209.14 151.08v-213.14c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v213.14l209.14 -151.08c14.0205 -10.1299 30.4404 -15.1895 46.8604 -15.1895z\nM493.61 285.05c11.6094 -9.09961 18.3896 -23.0303 18.3896 -37.7695v-10.6504l-96 -69.3496v184.72h-320v-184.72l-96 69.3496v10.6504c0.00195312 12.8945 8.24023 29.8154 18.3896 37.7695c8.85059 6.94043 17.2402 13.4805 29.6104 22.8105v44.1396\nc0 26.5098 21.4902 48 48 48h77.5498c3.04004 2.2002 5.87012 4.25977 9.04004 6.55957c16.8203 12.2705 50.21 41.79 73.4102 41.4404c23.2002 0.349609 56.5996 -29.1699 73.4102 -41.4404c3.16992 -2.2998 6 -4.35938 9.04004 -6.55957h77.5498\nc26.5098 0 48 -21.4902 48 -48v-44.1396c12.3701 -9.34082 20.7598 -15.8701 29.6104 -22.8105z\" />\n    <glyph glyph-name=\"folder-minus\" unicode=\"&#xf65d;\" \nd=\"M464 320c26.5098 0 48 -21.4902 48 -48v-224c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h160l64 -64h192zM368 152v16c0 8.83984 -7.16016 16 -16 16h-192c-8.83984 0 -16 -7.16016 -16 -16v-16\nc0 -8.83984 7.16016 -16 16 -16h192c8.83984 0 16 7.16016 16 16z\" />\n    <glyph glyph-name=\"folder-plus\" unicode=\"&#xf65e;\" \nd=\"M464 320c26.5098 0 48 -21.4902 48 -48v-224c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h160l64 -64h192zM368 152v16c0 8.83984 -7.16016 16 -16 16h-72v72c0 8.83984 -7.16016 16 -16 16h-16\nc-8.83984 0 -16 -7.16016 -16 -16v-72h-72c-8.83984 0 -16 -7.16016 -16 -16v-16c0 -8.83984 7.16016 -16 16 -16h72v-72c0 -8.83984 7.16016 -16 16 -16h16c8.83984 0 16 7.16016 16 16v72h72c8.83984 0 16 7.16016 16 16z\" />\n    <glyph glyph-name=\"funnel-dollar\" unicode=\"&#xf662;\" horiz-adv-x=\"640\" \nd=\"M433.46 282.06c-83.4102 -20.8896 -145.46 -96.2695 -145.46 -186.06c0 -54.3496 22.7998 -103.38 59.21 -138.35c-10.75 -20.54 -38.3604 -29.21 -59.2197 -13.5703l-79.9902 60c-10.0703 7.55957 -16 19.4102 -16 32v155.92l-182.66 201.93\nc-19.9502 19.9502 -5.82031 54.0703 22.4004 54.0703h480.52c28.2207 0 42.3506 -34.1201 22.4004 -54.0703zM480 256c88.3701 0 160 -71.6299 160 -160s-71.6299 -160 -160 -160s-160 71.6299 -160 160s71.6299 160 160 160zM496 16.1201\nc23.6299 0.629883 42.6699 20.54 42.6699 45.0703c0 19.9697 -12.9902 37.8096 -31.5801 43.3896l-45 13.5c-5.16016 1.54004 -8.76953 6.78027 -8.76953 12.7295c0 7.27051 5.2998 13.1904 11.7998 13.1904h28.1104c4.55957 0 8.94922 -1.29004 12.8193 -3.71973\nc3.24023 -2.03027 7.36035 -1.91016 10.1299 0.729492l11.75 11.21c3.53027 3.37012 3.33008 9.20996 -0.569336 12.1406c-9.10059 6.83984 -20.0801 10.7695 -31.3701 11.3496v16.29c0 4.41992 -3.58008 8 -8 8h-16c-4.41992 0 -8 -3.58008 -8 -8v-16.1201\nc-23.6201 -0.629883 -42.6699 -20.5498 -42.6699 -45.0703c0 -19.9697 12.9893 -37.8096 31.5801 -43.3896l45 -13.5c5.15918 -1.54004 8.76953 -6.78027 8.76953 -12.7295c0 -7.27051 -5.2998 -13.1904 -11.7998 -13.1904h-28.1104\nc-4.55957 0 -8.9502 1.2998 -12.8193 3.71973c-3.24023 2.03027 -7.36035 1.91016 -10.1309 -0.729492l-11.75 -11.21c-3.5293 -3.37012 -3.3291 -9.20996 0.570312 -12.1406c9.10059 -6.83008 20.0801 -10.7695 31.3701 -11.3496v-16.29c0 -4.41992 3.58008 -8 8 -8h16\nc4.41992 0 8 3.58008 8 8v16.1201z\" />\n    <glyph glyph-name=\"gopuram\" unicode=\"&#xf664;\" \nd=\"M496 96c8.7998 0 16 -7.2002 16 -16v-128c0 -8.7998 -7.2002 -16 -16 -16h-80v160h-32v128h-32v96h-32v-96h32v-128h32v-160h-80v80c0 8.7998 -7.2002 16 -16 16h-64c-8.7998 0 -16 -7.2002 -16 -16v-80h-80v160h32v128h32v96h-32v-96h-32v-128h-32v-160h-80\nc-8.7998 0 -16 7.2002 -16 16v128c0 8.7998 7.2002 16 16 16h16v112c0 8.7998 7.2002 16 16 16h16v80c0 8.7998 7.2002 16 16 16h16v112c0 8.7998 7.2002 16 16 16s16 -7.2002 16 -16v-16h64v16c0 8.7998 7.2002 16 16 16s16 -7.2002 16 -16v-16h64v16\nc0 8.7998 7.2002 16 16 16s16 -7.2002 16 -16v-16h64v16c0 8.7998 7.2002 16 16 16s16 -7.2002 16 -16v-112h16c8.7998 0 16 -7.2002 16 -16v-80h16c8.7998 0 16 -7.2002 16 -16v-112h16zM232 272v-48h48v48c0 8.7998 -7.2002 16 -16 16h-16c-8.7998 0 -16 -7.2002 -16 -16z\nM288 96v64c0 8.7998 -7.2002 16 -16 16h-32c-8.7998 0 -16 -7.2002 -16 -16v-64h64z\" />\n    <glyph glyph-name=\"hamsa\" unicode=\"&#xf665;\" \nd=\"M509.34 140.75c1.46875 -3.37012 2.66016 -9.08984 2.66016 -12.7656c0 -6.95703 -3.85254 -16.7295 -8.59961 -21.8145l-102.681 -110.03c-35.6895 -38.2197 -88.4102 -60.1396 -144.72 -60.1396s-109.03 21.9199 -144.71 60.1396l-102.69 110.03\nc-4.74707 5.08496 -8.59961 14.8574 -8.59961 21.8145c0 3.67578 1.19141 9.39551 2.66016 12.7656c5.05957 11.6904 16.5898 19.25 29.3398 19.25h64v208c0 22 18 40 40 40s40 -18 40 -40v-134c0 -5.51953 4.48047 -10 10 -10h20c5.51953 0 10 4.48047 10 10v174\nc0 22 18 40 40 40s40 -18 40 -40v-174c0 -5.51953 4.48047 -10 10 -10h20c5.51953 0 10 4.48047 10 10v134c0 22 18 40 40 40s40 -18 40 -40v-208h64c12.75 0 24.2803 -7.55957 29.3398 -19.25zM256 32c53.0195 0 96 64 96 64s-42.9805 64 -96 64s-96 -64 -96 -64\ns42.9805 -64 96 -64zM256 128c17.6699 0 32 -14.3301 32 -32s-14.3301 -32 -32 -32s-32 14.3301 -32 32s14.3301 32 32 32z\" />\n    <glyph glyph-name=\"haykal\" unicode=\"&#xf666;\" \nd=\"M496.25 245.48c17.54 -2.46094 21.6797 -26.2705 6.04004 -34.6602l-98.1602 -52.6602l74.4805 -83.54c11.8594 -13.29 0.00976562 -34.25 -17.3506 -30.4902l-108.569 23.6504l4.10938 -112.55c0.430664 -11.6504 -8.87012 -19.2207 -18.4102 -19.2207\nc-5.15918 0 -10.3896 2.20996 -14.1992 7.18066l-68.1807 88.8994l-68.1797 -88.8994c-3.81055 -4.9707 -9.0498 -7.18066 -14.2002 -7.18066c-9.54004 0 -18.8398 7.57031 -18.4102 19.2207l4.11035 112.55l-108.57 -23.6504\nc-1.39941 -0.30957 -2.75977 -0.450195 -4.06934 -0.450195c-15.0107 0 -24.21 18.6807 -13.29 30.9307l74.4795 83.54l-98.1602 52.6592c-15.6494 8.40039 -11.5098 32.21 6.03027 34.6709l110 15.4297l-41.8203 104.34c-6.66016 16.6396 11.6006 32.1797 26.5898 22.6299\nl94.04 -59.8896l34.0908 107.189c2.70996 8.55078 10.0293 12.8203 17.3496 12.8203s14.6396 -4.26953 17.3496 -12.8203l34.0908 -107.18l94.04 59.8896c14.9893 9.55078 33.2598 -5.98926 26.5898 -22.6299l-41.8203 -104.34zM338.51 136.32l-35.6094 39.9297\nl46.9199 25.1699l-52.5703 7.37988l19.9902 49.8701l-44.9502 -28.6201l-16.29 51.2305l-16.3096 -51.2305l-44.9502 28.6201l19.9902 -49.8701l-52.5703 -7.37988l46.9199 -25.1699l-35.5996 -39.9297l51.8896 11.2998l-1.95996 -53.79l32.5898 42.4902l32.5898 -42.4902\nl-1.96973 53.79z\" />\n    <glyph glyph-name=\"jedi\" unicode=\"&#xf669;\" horiz-adv-x=\"544\" \nd=\"M479.99 96h39.96c-42.6299 -94.1699 -137.641 -160 -247.98 -160c-4.25977 0 -8.5498 0.0898438 -12.8496 0.290039c-103.97 4.76953 -193.851 69.4795 -235.101 159.71h39.9102l-58.5996 58.5996c-2.57031 12.8809 -4.49023 25.9805 -5.11035 39.4102\nc-0.469727 10.0801 -0.129883 20.0703 0.5 29.9902h47.21l-41.3799 41.3799c14.3701 64.7002 52.1006 122.55 107.97 162.07c2.77051 1.95996 5.9707 3 9.27051 3c5.37988 0 10.4297 -2.70996 13.5098 -7.25c3.0498 -4.5 3.64062 -10 1.62012 -15.0898\nc-6.53027 -16.4502 -9.83984 -33.7002 -9.83984 -51.2607c0 -45.1191 21.04 -86.5801 57.71 -113.739c4.00977 -2.9707 6.4502 -7.48047 6.69043 -12.3799c0.239258 -4.90039 -1.76074 -9.65039 -5.48047 -13.0107c-26.5498 -23.9795 -41.1699 -56.5 -41.1699 -91.5801\nc0 -60.0293 42.9502 -110.279 99.8896 -121.92l2.5 65.2607l-27.1602 -18.4805c-2.96973 -2 -7.40918 -1.7002 -10 0.75c-2.72949 2.61035 -3.30957 6.70996 -1.38965 9.94043l20.1299 33.7695l-42.0693 8.71973c-3.71094 0.75 -6.38086 4.05078 -6.38086 7.83008\nc0 3.78027 2.68066 7.08008 6.38086 7.83008l42.0693 8.73047l-20.1094 33.7295c-1.94043 3.27051 -1.36035 7.35059 1.35938 9.94043c2.73047 2.60938 6.86035 2.89941 10 0.779297l30.3906 -20.6592l11.5195 287.97c0.160156 4.29004 3.66992 7.66992 8 7.66992h0.0400391\nc4.25293 0 7.81934 -3.44922 7.95996 -7.7002l11.5303 -287.93l30.3896 20.6699c3.03027 2.08984 7.2998 1.75 10 -0.799805c2.71973 -2.60059 3.2998 -6.68066 1.37988 -9.91016l-20.1299 -33.7705l42.0703 -8.72949c3.68945 -0.770508 6.37988 -4.06055 6.37988 -7.83008\nc0 -3.78027 -2.67969 -7.08008 -6.37988 -7.83008l-42.0703 -8.71973l20.1104 -33.7305c0.631836 -1.05078 1.14453 -2.89844 1.14453 -4.12402c0 -1.89355 -1.11328 -4.49023 -2.48438 -5.7959c-2.63086 -2.49023 -7.04004 -2.85938 -10.0205 -0.799805l-27.1699 18.4697\nl2.5 -65.3398c48.4697 9.40039 87.5703 48.1504 97.3096 96.5c8.78027 43.5605 -5.63965 87.3203 -38.5693 117.07c-3.73047 3.37012 -5.73047 8.10938 -5.49023 13.0303c0.240234 4.89941 2.67969 9.41992 6.7002 12.3994c36.6602 27.1602 57.6895 68.6104 57.6895 113.73\nc0 17.5801 -3.30957 34.8496 -9.85938 51.3096c-2.03027 5.09961 -1.44043 10.5996 1.60938 15.0898c3.08008 4.53027 8.12012 7.24023 13.4902 7.24023c3.28027 0 6.48047 -1.03027 9.25 -2.99023c55.4805 -39.2197 93.4102 -97.4795 107.91 -162.27l-41.25 -41.2402\nh46.9502c0.370117 -5.75977 1.0498 -11.46 1.0498 -17.2695c0 -17.7402 -1.83984 -35.0605 -5.12988 -51.8604z\" />\n    <glyph glyph-name=\"journal-whills\" unicode=\"&#xf66a;\" horiz-adv-x=\"448\" \nd=\"M448 89.5996c0 -9.59961 -3.2002 -16 -9.59961 -19.1992c-3.2002 -12.8008 -3.2002 -57.6006 0 -73.6006c6.39941 -6.39941 9.59961 -12.7998 9.59961 -19.2002v-16c0 -16 -12.7998 -25.5996 -25.5996 -25.5996h-326.4c-54.4004 0 -96 41.5996 -96 96v320\nc0 54.4004 41.5996 96 96 96h326.4c16 0 25.5996 -9.59961 25.5996 -25.5996v-332.801zM133.08 303.61c-2.98047 -10.0908 -5.08008 -20.5605 -5.07031 -31.6201c0 -0.520508 0.140625 -0.990234 0.150391 -1.50977l37.1094 -32.4707\nc3.33008 -2.89941 3.6709 -7.9502 0.75 -11.2793c-1.5791 -1.81055 -3.7998 -2.73047 -6.01953 -2.73047h-0.0175781c-1.65527 0 -4.00879 0.886719 -5.25195 1.98047l-23.5908 20.6396c11.54 -49.5801 55.7705 -86.6201 108.86 -86.6201s97.3203 37.04 108.87 86.6299\nl-23.5898 -20.6396c-1.52051 -1.32031 -3.39062 -1.98047 -5.27051 -1.98047h-0.0146484c-2 0 -4.69043 1.22363 -6.00488 2.73047c-1.09668 1.24707 -1.98633 3.60645 -1.98633 5.2666c0 2.00293 1.22559 4.69727 2.73633 6.0127l37.1094 32.4707\nc0.0107422 0.519531 0.150391 0.990234 0.150391 1.50977c0 11.0498 -2.09961 21.5195 -5.07031 31.5996l-21.2598 -21.2598c-1.57031 -1.55957 -3.61035 -2.33984 -5.66016 -2.33984s-4.09961 0.780273 -5.66016 2.33984c-3.11914 3.12012 -3.11914 8.19043 0 11.3105\nl26.4199 26.4199c-10 20.8994 -26.2393 37.9795 -46.3691 49.2598c5.97949 -9.73047 9.59961 -21.0703 9.59961 -33.3301c0 -19.96 -9.33008 -37.5703 -23.6602 -49.3096c9.65039 -10.0605 15.6602 -23.6504 15.6602 -38.6904c0 -26.9404 -19.04 -49.4004 -44.3701 -54.7402\nl-1.42969 34.2803l12.6797 -8.62012c0.69043 -0.459961 1.46973 -0.689453 2.25 -0.689453c0.980469 0 1.98047 0.369141 2.75 1.08984c1.36035 1.2793 1.63965 3.33984 0.69043 4.94922l-8.54004 14.3105l17.9102 3.71973\nc1.85938 0.390625 3.18945 2.03027 3.18945 3.91992c0 1.89062 -1.33008 3.53027 -3.18945 3.91992l-17.9102 3.7207l8.54004 14.3096c0.308594 0.521484 0.55957 1.43652 0.55957 2.04297c0 0.950195 -0.55957 2.25293 -1.25 2.90723\nc-0.645508 0.59668 -1.88281 1.08105 -2.76172 1.08105c-0.672852 0 -1.67578 -0.300781 -2.23828 -0.670898l-14.2002 -9.65039l-4.67969 112.29c-0.0898438 2.13965 -1.86035 3.83008 -4 3.83008s-3.91016 -1.69043 -4 -3.83008l-4.62012 -110.81l-12.0098 8.15918\nc-1.56055 1.03027 -3.63965 0.890625 -5 -0.40918c-1.36035 -1.28027 -1.63965 -3.34082 -0.69043 -4.9502l8.54004 -14.3105l-17.9102 -3.71973c-1.85938 -0.389648 -3.18945 -2.03027 -3.18945 -3.91992s1.33008 -3.53027 3.18945 -3.91992l17.9102 -3.71973\nl-8.54004 -14.3105c-0.308594 -0.521484 -0.55957 -1.43652 -0.55957 -2.04297c0 -0.950195 0.55957 -2.25293 1.25 -2.90723c0.769531 -0.709961 1.75 -1.08984 2.75 -1.08984c0.780273 0 1.55957 0.240234 2.25 0.69043l10.3701 7.04004l-1.36035 -32.71\nc-25.3398 5.35938 -44.3799 27.8193 -44.3799 54.7598c0 15.04 6.00977 28.6299 15.6602 38.6904c-14.3301 11.7393 -23.6602 29.3496 -23.6602 49.3096c0 12.2598 3.62012 23.5996 9.61035 33.3398c-20.1299 -11.29 -36.3701 -28.3594 -46.3701 -49.2598l26.4199 -26.4199\nc3.12012 -3.12012 3.12012 -8.19043 0 -11.3105c-1.57031 -1.55957 -3.61035 -2.33984 -5.66016 -2.33984s-4.09961 0.780273 -5.66016 2.33984zM380.8 0v64h-284.8c-16 0 -32 -12.7998 -32 -32s12.7998 -32 32 -32h284.8z\" />\n    <glyph glyph-name=\"kaaba\" unicode=\"&#xf66b;\" horiz-adv-x=\"576\" \nd=\"M554.12 364.49c13.0703 -4.36035 21.8799 -16.5898 21.8799 -30.3604v-49.0098l-265 79.5098c-15.0596 4.5 -30.9502 4.5 -45.9805 0l-265.02 -79.5098v49.0098c0.000976562 12.7314 9.80273 26.332 21.8799 30.3604l235.771 78.5801\nc8.15723 2.71973 21.7559 4.92676 30.3545 4.92676s22.1982 -2.20703 30.3555 -4.92676zM274.22 333.97c9 2.7207 18.5498 2.7207 27.5898 0l274.2 -82.2598v-228.39c0 -15 -10.4199 -27.9902 -25.0596 -31.2402l-242.12 -53.7998\nc-5.67871 -1.2627 -15.0078 -2.28809 -20.8252 -2.28809s-15.1465 1.02539 -20.8252 2.28809l-242.12 53.7998c-14.6396 3.25977 -25.0596 16.2402 -25.0596 31.2402v228.38zM128 217.89v16.5801c0 5.28027 -5.01953 9.11035 -10.1104 7.7207l-80 -21.8203\nc-3.47949 -0.950195 -5.88965 -4.11035 -5.88965 -7.71973v-16.5801c0 -5.27051 5.01953 -9.10059 10.1104 -7.7207l80 21.8203c3.47949 0.950195 5.88965 4.11035 5.88965 7.71973zM272 257.17v16.5801c0 5.28027 -5.01953 9.11035 -10.1104 7.71973l-96 -26.1797\nc-3.47949 -0.950195 -5.88965 -4.11035 -5.88965 -7.71973v-16.5801c0 -5.28027 5.01953 -9.11035 10.1104 -7.7207l96 26.1807c3.47949 0.950195 5.88965 4.10938 5.88965 7.71973zM448 234.47v-16.5801v-0.00488281c0 -3.37109 2.63867 -6.82715 5.88965 -7.71484\nl80 -21.8203c5.09082 -1.38965 10.1104 2.44043 10.1104 7.7207v16.5801c0 3.60938 -2.41016 6.76953 -5.88965 7.71973l-80 21.8203c-5.09082 1.38965 -10.1104 -2.44043 -10.1104 -7.7207zM304 273.74v-16.5801v-0.00585938c0 -3.37012 2.63867 -6.82617 5.88965 -7.71387\nl96 -26.1807c5.09082 -1.38965 10.1104 2.44043 10.1104 7.7207v16.5791c0 3.61035 -2.41016 6.77051 -5.88965 7.7207l-96 26.1797c-5.09082 1.38965 -10.1104 -2.44043 -10.1104 -7.71973z\" />\n    <glyph glyph-name=\"khanda\" unicode=\"&#xf66d;\" \nd=\"M415.81 382c73.71 -40.2402 111.78 -123.85 90.1602 -207.51c-7.25 -28.0898 -22.3799 -53.5703 -41.25 -75.5898l-52.5098 -61.3105c-4.87012 -5.67969 -13.04 -7.22949 -19.6504 -3.70996l-79.3496 42.2305l-29.21 -20.3408l47.0801 -32.7793\nc1.66992 0.370117 3.22949 1.00977 5.00977 1.00977c13.25 0 23.9902 -10.7402 23.9902 -24c0 -13.25 -10.7402 -24 -23.9902 -24c-12.0898 0 -21.6797 9.11035 -23.3301 20.7598l-40.9102 28.4805v-30.1504c9.38086 -5.58008 15.9902 -15.3896 15.9902 -27.0996\nc0 -17.6699 -14.3203 -32 -31.9795 -32c-17.6602 0 -31.9805 14.3301 -31.9805 32c0 11.7197 6.60059 21.5293 15.9902 27.0996v29.9502l-40.6299 -28.2803c-1.64062 -11.6494 -11.2305 -20.7598 -23.3301 -20.7598c-13.25 0 -23.9902 10.75 -23.9902 24\nc0 13.2598 10.7402 24 23.9902 24c1.78027 0 3.33984 -0.639648 5.00977 -1.00977l47.0801 32.7793l-29.21 20.3301l-79.3496 -42.2295c-6.61035 -3.52051 -14.7803 -1.96973 -19.6504 3.71973l-55.9697 65.3604c-12.5703 14.6797 -23.3906 31.0693 -30.46 49.0596\nc-35.6602 90.6904 2.95996 186.391 81.4893 229.24c6.34082 3.5 15.0205 2.63965 20.0205 -2.7002c4.99023 -5.30957 6.45996 -12.9199 2.58984 -19.0801c-16.4902 -26.1602 -25.2002 -56.3896 -25.2002 -87.4697c0.180664 -53.1904 26.7598 -102.62 71.0303 -132.18\nl76.5898 -53.3301v19.8994l-44.0498 36.0908c-3.91016 4.20996 -5 10.0996 -2.81055 15.2793l7.85059 17.2402c-33.8506 19.2598 -56.9404 55.2402 -56.9404 96.9902c0 40.79 22.0205 76.1396 54.5898 95.7197l-5.21973 11.4404\nc-2.33008 5.5293 -0.929688 11.8301 3.57031 16.04l58.9902 52.8096l58.9893 -52.8203c4.5 -4.20996 5.91016 -10.5098 3.57031 -16.04l-5.21973 -11.4395c32.5693 -19.5801 54.5898 -54.9199 54.5898 -95.71c0 -41.7402 -23.0996 -77.7305 -56.9404 -96.9902\nl7.85059 -17.2402c2.18945 -5.18945 1.10938 -11.0801 -2.81055 -15.2793l-44.0498 -36.0908v-20.0996l76.6299 53.3496c44.5 29.7207 71.0801 79.1602 71.2705 132.41c0 31.0205 -8.70996 61.25 -25.2002 87.4102c-1.36328 2.15723 -2.46973 5.97949 -2.46973 8.53223\nc0 3.51465 1.96191 8.43652 4.37988 10.9883c4.99023 5.34961 12.9902 6.51953 19.3594 3.01953zM319.82 272c0 21.3203 -10.5801 40.1201 -26.6504 51.7695l-7.83008 -17.1797c-8.75 -24.5195 -8.75 -51.04 0 -75.5596l5.65039 -12.4102\nc17.3398 11.46 28.8301 31.0801 28.8301 53.3799zM191.89 272c0 -22.2998 11.5 -41.9297 28.8408 -53.3896l5.64941 12.4092c8.75 24.5303 8.75 51.04 0 75.5605l-7.83008 17.1797c-16.0801 -11.6396 -26.6602 -30.4395 -26.6602 -51.7598z\" />\n    <glyph glyph-name=\"landmark\" unicode=\"&#xf66f;\" \nd=\"M501.62 355.89c6.24023 -2.33984 10.3799 -8.30957 10.3799 -14.9795v-36.9102c0 -8.83984 -7.16016 -16 -16 -16h-480c-8.83984 0 -16 7.16016 -16 16v36.9102c0 6.11914 4.65039 12.8301 10.3799 14.9795l234.39 90.0703\nc2.99902 1.12598 8.03223 2.04004 11.2354 2.04004s8.23633 -0.914062 11.2354 -2.04004zM64 256h64v-160h96v160h64v-160h96v160h64v-160h16c8.83984 0 16 -7.16016 16 -16v-48h-448v48c0 8.83984 7.16016 16 16 16h16v160zM496 0c8.83984 0 16 -7.16016 16 -16v-32\nc0 -8.83984 -7.16016 -16 -16 -16h-480c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h480z\" />\n    <glyph glyph-name=\"mail-bulk\" unicode=\"&#xf674;\" horiz-adv-x=\"576\" \nd=\"M160 0c25.5996 0 51.2002 22.4004 64 32c64 44.7998 83.2002 60.7998 96 70.4004v-134.4c0 -17.6699 -14.3301 -32 -32 -32h-256c-17.6699 0 -32 14.3301 -32 32v134.4c12.7998 -9.60059 32 -25.6006 96 -70.4004c12.7998 -9.59961 38.4004 -32 64 -32zM288 192\nc17.6699 0 32 -14.3301 32 -32v-19.2002c-25.5996 -19.2002 -22.4004 -19.2002 -115.2 -86.3994c-9.59961 -3.2002 -28.7998 -22.4004 -44.7998 -22.4004s-35.2002 19.2002 -44.7998 25.5996c-92.7998 67.2002 -89.6006 67.2002 -115.2 86.4004v16\nc0 17.6699 14.3301 32 32 32h256zM544 288c17.6699 0 32 -14.3301 32 -32v-192c0 -17.6699 -14.3301 -32 -32 -32h-192v134.4l-0.290039 -0.220703c-3.12012 32.4004 -30.5 57.8203 -63.71 57.8203h-96v32c0 17.6699 14.3301 32 32 32h320zM512 160v64h-64v-64h64zM160 256\nv-32h-96v192c0 17.6699 14.3301 32 32 32h320c17.6699 0 32 -14.3301 32 -32v-96h-224c-35.29 0 -64 -28.71 -64 -64z\" />\n    <glyph glyph-name=\"menorah\" unicode=\"&#xf676;\" horiz-adv-x=\"640\" \nd=\"M144 320c8.83984 0 16 -7.16016 16 -16v-144h-64v144c0 8.83984 7.16016 16 16 16h32zM240 320c8.83984 0 16 -7.16016 16 -16v-144h-64v144c0 8.83984 7.16016 16 16 16h32zM432 320c8.83984 0 16 -7.16016 16 -16v-144h-64v144c0 8.83984 7.16016 16 16 16h32zM528 320\nc8.83984 0 16 -7.16016 16 -16v-144h-64v144c0 8.83984 7.16016 16 16 16h32zM608 352c-17.6699 0 -32 14.3301 -32 32s32 64 32 64s32 -46.3301 32 -64s-14.3301 -32 -32 -32zM512 352c-17.6699 0 -32 14.3301 -32 32s32 64 32 64s32 -46.3301 32 -64s-14.3301 -32 -32 -32\nzM416 352c-17.6699 0 -32 14.3301 -32 32s32 64 32 64s32 -46.3301 32 -64s-14.3301 -32 -32 -32zM320 352c-17.6699 0 -32 14.3301 -32 32s32 64 32 64s32 -46.3301 32 -64s-14.3301 -32 -32 -32zM224 352c-17.6699 0 -32 14.3301 -32 32s32 64 32 64s32 -46.3301 32 -64\ns-14.3301 -32 -32 -32zM128 352c-17.6699 0 -32 14.3301 -32 32s32 64 32 64s32 -46.3301 32 -64s-14.3301 -32 -32 -32zM32 352c-17.6699 0 -32 14.3301 -32 32s32 64 32 64s32 -46.3301 32 -64s-14.3301 -32 -32 -32zM576 160v144c0 8.83984 7.16016 16 16 16h32\nc8.83984 0 16 -7.16016 16 -16v-144c0 -53.0195 -42.9805 -96 -96 -96h-192v-64h176c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-416c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h176v64h-192c-53.0195 0 -96 42.9805 -96 96\nv144c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-144c0 -17.6699 14.3301 -32 32 -32h192v176c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-176h192c17.6699 0 32 14.3301 32 32z\" />\n    <glyph glyph-name=\"mosque\" unicode=\"&#xf678;\" horiz-adv-x=\"640\" \nd=\"M0 -32v320h128v-320c0 -17.6699 -14.3301 -32 -32 -32h-64c-17.6699 0 -32 14.3301 -32 32zM579.16 160h-358.32c-17.8594 17.3896 -28.8398 37.3398 -28.8398 58.9102c0 52.8594 41.79 93.79 87.9199 122.899c41.9502 26.46 80.6299 57.7705 111.96 96.2207\nl8.12012 9.96973l8.12012 -9.96973c31.3301 -38.4502 70.0195 -69.75 111.96 -96.2207c46.1299 -29.1094 87.9199 -70.04 87.9199 -122.899c0 -21.5703 -10.9805 -41.5205 -28.8398 -58.9102zM608 128c17.6699 0 32 -14.3301 32 -32v-128c0 -17.6699 -14.3301 -32 -32 -32\nh-32v64c0 17.6699 -14.3301 32 -32 32s-32 -14.3301 -32 -32v-64h-64v72c0 48 -48 72 -48 72s-48 -24 -48 -72v-72h-64v64c0 17.6699 -14.3301 32 -32 32s-32 -14.3301 -32 -32v-64h-32c-17.6699 0 -32 14.3301 -32 32v128c0 17.6699 14.3301 32 32 32h416zM64 448\nc0 0 64 -32 64 -96v-32h-128v32c0 64 64 96 64 96z\" />\n    <glyph glyph-name=\"om\" unicode=\"&#xf679;\" \nd=\"M360.6 387.06l-21.5801 21.5605c-1.68848 1.68652 -3.05957 4.99316 -3.05957 7.37988s1.37109 5.69336 3.05957 7.37988l21.5703 21.5605c4.08008 4.06934 10.6797 4.06934 14.7598 0l21.5801 -21.5605c1.68945 -1.68652 3.06055 -4.99316 3.06055 -7.37988\ns-1.37109 -5.69336 -3.06055 -7.37988l-21.5693 -21.5605c-1.6875 -1.68848 -4.99316 -3.05957 -7.37988 -3.05957c-2.3877 0 -5.69336 1.37109 -7.38086 3.05957zM412.11 256c55.0898 0 99.8896 -44.7998 99.8896 -99.8799v-100.12c0 -48.5303 -47.4805 -88 -96.0195 -88\nc-96.0205 0 -96.0205 64 -96.0205 64v37.8701c0 7.55957 9.42969 10.8896 14.2002 5.01953c15.1494 -18.6494 42.4199 -42.8896 81.8203 -42.8896c13.2393 0 32.0098 10.7695 32.0098 24v100.12c0 19.79 -16.1006 35.8799 -35.8799 35.8799\nc-9.60059 0 -18.6006 -3.73047 -25.3799 -10.5l-24.25 -24.25c-18.8701 -18.8604 -43.9502 -29.25 -70.6406 -29.25h-21.6895c11.0293 -18.9004 17.8096 -40.5801 17.8096 -64c0 -70.5801 -57.4297 -128 -128.02 -128c-118.811 0 -160.03 96 -159.94 150.81\nc0.0195312 8.80078 10.2598 12.7705 14.79 5.2207c22.7998 -38.0107 49.1299 -92.0303 145.15 -92.0303c35.2998 0 64.0098 28.7002 64.0098 64s-28.71 64 -64.0098 64h-33.0303c-5.57031 0.450195 -10.6406 3.49023 -13.1699 8.5498l-16.0898 32.1699\nc-5.35059 10.7002 2.42969 23.2803 14.3896 23.2803h31.9004c26.4697 0 48.0098 21.5303 48.0098 48s-21.54 48 -48.0098 48c-11.25 0 -21.8203 -3.80957 -30.2705 -10.71c-5.54004 -4.53027 -13.4795 -4.50977 -19.2002 -0.209961l-26.1494 19.6299\nc-8.08984 6.08008 -8.48047 17.9697 -1.12012 24.9297c25.1094 23.7402 59.8594 34.71 96.0098 28.7803c43.1602 -7.08008 79.4199 -40.6396 89.5205 -83.1895c6.43945 -27.1201 2.80957 -53.1309 -7.73047 -75.2305h46.8398c9.60059 0 18.6006 3.73047 25.3799 10.5\nl24.25 24.25c18.8701 18.8604 43.9502 29.25 70.6406 29.25zM454.29 380.73c10.5596 7.95996 25.7002 0.489258 25.7002 -12.7305v-35.5195c0 -2.36035 -0.509766 -4.71094 -1.53027 -6.83008c-2.96973 -6.30078 -21.8301 -37.6602 -101.75 -37.6602\nc-78.4297 0 -117.19 69.3896 -118.8 72.3398c-3.61035 6.62988 -2.08008 14.8799 3.66016 19.7998c5.69922 4.92969 14.1201 5.16992 20.1396 0.549805c3.53027 -2.69922 87.0303 -65.0693 172.58 0.0507812z\" />\n    <glyph glyph-name=\"pastafarianism\" unicode=\"&#xf67b;\" horiz-adv-x=\"640\" \nd=\"M624.54 100.33c12.4004 -4.71973 18.5996 -18.5801 13.8896 -30.9805c-4.69922 -12.4092 -18.5801 -18.6299 -30.9697 -13.8799c-8.11035 3.08984 -14.3398 0.19043 -31.3896 -11.3594c-13.5508 -9.15039 -30.8301 -20.8408 -52.4199 -20.8408\nc-7.16992 0 -14.8301 1.28027 -22.9707 4.39062c-32.6602 12.4395 -39.9893 41.3301 -45.3301 62.4395c-2.20996 8.7207 -3.98926 14.4902 -5.94922 18.8701c-16.6201 -13.5996 -36.9307 -25.8701 -61.6201 -34.1602c10.0098 -37 32.2793 -90.8096 60.2197 -90.8096\nc13.25 0 24 -10.75 24 -24s-10.75 -24 -24 -24c-66.7402 0 -97.0498 88.6299 -107.42 129.14c-6.69043 -0.599609 -13.4199 -1.13965 -20.5801 -1.13965s-13.8896 0.540039 -20.5801 1.13965c-10.3701 -40.5098 -40.6797 -129.14 -107.42 -129.14c-13.25 0 -24 10.75 -24 24\ns10.75 24 24 24c28.0801 0 50.2998 53.7998 60.2598 90.7998c-24.6895 8.29004 -45.0195 20.5605 -61.6396 34.1699c-1.95996 -4.37988 -3.74023 -10.1494 -5.9502 -18.8701c-5.34961 -21.1094 -12.6699 -50 -45.3301 -62.4395\nc-8.13965 -3.11035 -15.7998 -4.39062 -22.9697 -4.39062c-21.5898 -0.0195312 -38.8701 11.6807 -52.4199 20.8408c-17.0498 11.5498 -23.2305 14.4492 -31.3906 11.3594c-12.3594 -4.72949 -26.25 1.4707 -30.9697 13.8799\nc-4.71973 12.3906 1.48047 26.25 13.8701 30.9707c32.6504 12.4697 57.3398 -4.25 75.3701 -16.4502c17.0801 -11.5303 23.2998 -14.4199 31.4102 -11.3604c8.12012 3.10059 10.8301 9.37988 15.8896 29.3799c3.33008 13.1504 7.44043 29.3203 17.9502 42.6504\nc-2.24023 2.91016 -4.42969 5.78027 -6.37988 8.57031c-10.1699 -9.56055 -23.4102 -17.1104 -41.7002 -17.1104c-33.9502 0 -50.8701 25.7803 -62.0596 42.8301c-10.6006 16.1396 -15 21.1699 -21.9404 21.1699c-13.25 0 -24 10.75 -24 24s10.75 24 24 24\nc33.96 0 50.8799 -25.7803 62.0596 -42.8301c10.6006 -16.1396 15 -21.1699 21.9404 -21.1699c17.1504 0 37.6797 61.5596 97.2695 101.9l-17.25 34.5c-33.46 2.09961 -60.0195 29.6191 -60.0195 63.5996c0 35.3496 28.6504 64 64 64s64 -28.6504 64 -64\nc0 -13.0195 -3.94043 -25.0996 -10.5996 -35.21l18.1494 -36.2998c16.9697 4.59961 35.6006 7.50977 56.46 7.50977c20.8604 0 39.4805 -2.91016 56.46 -7.50977l18.1504 36.2998c-6.67969 10.1104 -10.6201 22.1904 -10.6201 35.21c0 35.3496 28.6504 64 64 64\ns64 -28.6504 64 -64c0 -33.9805 -26.5703 -61.5 -60.0098 -63.5898l-17.25 -34.5c59.7793 -40.4805 79.9502 -101.91 97.2598 -101.91c6.94043 0 11.3398 5.03027 21.9404 21.1699c11.1895 17.0498 28.1094 42.8301 62.0596 42.8301c13.25 0 24 -10.75 24 -24\ns-10.75 -24 -24 -24c-6.94043 0 -11.3496 -5.03027 -21.9404 -21.1699c-11.1895 -17.0498 -28.1094 -42.8301 -62.0596 -42.8301c-18.29 0 -31.5303 7.5498 -41.7002 17.1201c-1.9502 -2.78027 -4.13965 -5.66016 -6.37988 -8.57031\nc10.5098 -13.3301 14.6201 -29.5 17.9502 -42.6494c5.05957 -20 7.76953 -26.29 15.8896 -29.3809c8.16016 -3.05957 14.3506 -0.169922 31.4102 11.3604c18.0098 12.2002 42.6699 28.9697 75.3701 16.4502zM448 400c-8.82031 0 -16 -7.17969 -16 -16s7.17969 -16 16 -16\ns16 7.17969 16 16s-7.17969 16 -16 16zM192 400c-8.82031 0 -16 -7.17969 -16 -16s7.17969 -16 16 -16s16 7.17969 16 16s-7.17969 16 -16 16z\" />\n    <glyph glyph-name=\"peace\" unicode=\"&#xf67c;\" horiz-adv-x=\"496\" \nd=\"M248 440c136.97 0 248 -111.03 248 -248s-111.03 -248 -248 -248s-248 111.03 -248 248s111.03 248 248 248zM432 192c0 90.5303 -65.7695 165.82 -152 181.03v-165.66l129.43 -103.54c14.3701 26.2002 22.5703 56.2402 22.5703 88.1699zM216 10.9697v114.46\nl-89.29 -71.4395c24.7998 -21.8203 55.4297 -37.0498 89.29 -43.0205zM280 125.43v-114.449c33.8604 5.96973 64.4902 21.1992 89.29 43.0195zM216 373.03c-86.2305 -15.21 -152 -90.5 -152 -181.03c0 -31.9297 8.2002 -61.9697 22.5703 -88.1699l129.43 103.54v165.66z\" />\n    <glyph glyph-name=\"place-of-worship\" unicode=\"&#xf67f;\" horiz-adv-x=\"640\" \nd=\"M620.61 81.4502c10.7031 -4.58887 19.3896 -17.7646 19.3896 -29.4102v-100.04c0 -8.83984 -7.16016 -16 -16 -16h-112v192zM0 52.04c0 11.6455 8.68652 24.8213 19.3896 29.4102l108.61 46.5498v-192h-112c-8.83984 0 -16 7.16016 -16 16v100.04zM464.46 201.32\nc9.63965 -5.78027 15.54 -16.2002 15.54 -27.4404v-237.88h-96v96c0 35.3496 -28.6602 64 -64 64s-64 -28.6504 -64 -64v-96h-96v237.88c0 10.0029 6.96191 22.2959 15.54 27.4404l48.46 29.0801v114.97c0 8.49023 3.37988 16.6299 9.37988 22.6299l75.3105 75.3096\nc6.23926 6.25 16.3691 6.25 22.6191 0l75.3105 -75.3096c6.00977 -6.00977 9.37988 -14.1396 9.37988 -22.6299v-114.97z\" />\n    <glyph glyph-name=\"poll\" unicode=\"&#xf681;\" horiz-adv-x=\"448\" \nd=\"M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352zM160 80v128c0 8.83984 -7.16016 16 -16 16h-32c-8.83984 0 -16 -7.16016 -16 -16v-128c0 -8.83984 7.16016 -16 16 -16h32\nc8.83984 0 16 7.16016 16 16zM256 80v224c0 8.83984 -7.16016 16 -16 16h-32c-8.83984 0 -16 -7.16016 -16 -16v-224c0 -8.83984 7.16016 -16 16 -16h32c8.83984 0 16 7.16016 16 16zM352 80v64c0 8.83984 -7.16016 16 -16 16h-32c-8.83984 0 -16 -7.16016 -16 -16v-64\nc0 -8.83984 7.16016 -16 16 -16h32c8.83984 0 16 7.16016 16 16z\" />\n    <glyph glyph-name=\"poll-h\" unicode=\"&#xf682;\" horiz-adv-x=\"448\" \nd=\"M448 16c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48v-352zM112 256h128c8.83984 0 16 7.16016 16 16v32c0 8.83984 -7.16016 16 -16 16h-128c-8.83984 0 -16 -7.16016 -16 -16v-32\nc0 -8.83984 7.16016 -16 16 -16zM112 160h224c8.83984 0 16 7.16016 16 16v32c0 8.83984 -7.16016 16 -16 16h-224c-8.83984 0 -16 -7.16016 -16 -16v-32c0 -8.83984 7.16016 -16 16 -16zM112 64h64c8.83984 0 16 7.16016 16 16v32c0 8.83984 -7.16016 16 -16 16h-64\nc-8.83984 0 -16 -7.16016 -16 -16v-32c0 -8.83984 7.16016 -16 16 -16z\" />\n    <glyph glyph-name=\"pray\" unicode=\"&#xf683;\" horiz-adv-x=\"384\" \nd=\"M256 320c-35.3496 0 -64 28.6504 -64 64s28.6504 64 64 64s64 -28.6504 64 -64s-28.6504 -64 -64 -64zM225.37 150.25l-24.1504 28.7598l-34.7998 -64.8701l109.86 -109.859c25.4893 -25.4902 5.7998 -68.2803 -28.2803 -68.2803h-208c-22.0898 0 -40 17.9102 -40 40\ns17.9102 40 40 40h91.5596l-44.8096 34.8896c-42.8799 27.3799 -57.5898 80.1104 -34.1904 123.75l49.3701 92.0303c11.1201 20.6504 32.1807 34.4404 56.3701 36.9199c24.7803 2.58984 48.5605 -6.93945 64 -25.3301l38.9102 -46.3096l57.4404 47\nc17.1191 13.9697 42.3398 11.4902 56.3096 -5.62012c13.9697 -17.0898 11.4697 -42.2998 -5.62012 -56.2803l-88 -72.0195c-16.9697 -13.8701 -41.9102 -11.5 -55.9697 5.21973z\" />\n    <glyph glyph-name=\"praying-hands\" unicode=\"&#xf684;\" horiz-adv-x=\"640\" \nd=\"M272 256.09c17.5996 0 32 -14.3994 32 -32v-128c0 -51.8896 -34.8398 -98.0801 -84.75 -112.35l-179.19 -46.6201c-2.64941 -0.69043 -5.36914 -1.03027 -8.05957 -1.03027c-23.4805 0 -32 21.1797 -32 32v96v0.0117188c0 12.7285 9.80176 26.3203 21.8799 30.3389\nl90.1201 30.04v80.2295c0 18.9805 5.55957 37.3896 16.1201 53.2305l117.26 175.899c0.169922 0.270508 0.589844 0.25 0.790039 0.480469c9.58008 13.5098 27.8496 17.8799 42.2998 9.20996c15.1602 -9.10059 20.0605 -28.75 10.9707 -43.9102l-77.75 -129.59\nc-8.9707 -14.9199 -13.6904 -32 -13.6904 -49.3906v-76.5498c0 -8.83984 7.16016 -16 16 -16s16 7.16016 16 16v80c0 17.6006 14.4004 32 32 32zM618.12 94.3604c13.0703 -4.36035 21.8799 -16.5801 21.8799 -30.3506v-96c0 -10.8193 -8.51953 -32 -32 -32\nc-2.67969 0 -5.40039 0.339844 -8.05957 1.03027l-179.19 46.6201c-49.9102 14.2598 -84.75 60.4502 -84.75 112.34v128c0 17.5996 14.4004 32 32 32s32 -14.4004 32 -32v-80c0 -8.83984 7.16016 -16 16 -16s16 7.16016 16 16v76.5498\nc0 17.3906 -4.71973 34.4697 -13.6904 49.3906l-77.75 129.59c-9.08984 15.1602 -4.18945 34.8193 10.9707 43.9102c14.4502 8.66992 32.7197 4.2998 42.2998 -9.20996c0.200195 -0.240234 0.610352 -0.210938 0.790039 -0.480469l117.26 -175.89\nc10.5605 -15.8408 16.1201 -34.25 16.1201 -53.2305v-80.2295z\" />\n    <glyph glyph-name=\"quran\" unicode=\"&#xf687;\" horiz-adv-x=\"448\" \nd=\"M448 89.5996c0 -9.59961 -3.2002 -16 -9.59961 -19.1992c-3.2002 -12.8008 -3.2002 -57.6006 0 -73.6006c6.39941 -6.39941 9.59961 -12.7998 9.59961 -19.2002v-16c0 -16 -12.7998 -25.5996 -25.5996 -25.5996h-326.4c-54.4004 0 -96 41.5996 -96 96v320\nc0 54.4004 41.5996 96 96 96h326.4c16 0 25.5996 -9.59961 25.5996 -25.5996v-332.801zM301.08 302.18l-11.1904 -22.6494l-24.9893 -3.62988c-2.68066 -0.390625 -3.75 -3.66992 -1.81055 -5.56055l18.0898 -17.6299l-4.26953 -24.8896\nc-0.360352 -2.11035 1.30957 -3.82031 3.20996 -3.82031c0.5 0 1.01953 0.120117 1.51953 0.379883l22.3604 11.75l22.3604 -11.75c0.5 -0.259766 1.01953 -0.379883 1.51953 -0.379883c1.90039 0 3.57031 1.70996 3.20996 3.82031l-4.26953 24.8896l18.0898 17.6299\nc1.92969 1.89062 0.859375 5.16992 -1.81055 5.56055l-25 3.62988l-11.1797 22.6494c-0.599609 1.20996 -1.75977 1.82031 -2.91992 1.82031s-2.32031 -0.610352 -2.91992 -1.82031zM243.19 371.19c-63.5205 0 -115.19 -51.6709 -115.19 -115.19\nc0 -63.5098 51.6699 -115.19 115.18 -115.18c13.6006 0 27.1201 2.46973 40.1904 7.33984c2.67969 0.910156 4.62012 3.43945 4.62012 6.41992c0 3.63965 -2.87012 6.78027 -6.7998 6.78027c-0.650391 0 -3.10059 -0.209961 -4.13086 -0.209961\nc-52.3096 0 -94.8594 42.5596 -94.8594 94.8594c0 52.3105 42.5498 94.8604 94.8594 94.8604c1.04004 0 3.45996 -0.209961 4.13086 -0.209961c0.633789 -0.237305 1.69727 -0.429688 2.375 -0.429688c3.73926 0 6.77441 3.03516 6.77441 6.77441\nc0 3.7373 -3.03223 6.77246 -6.76953 6.77539c-13.1201 4.91992 -26.71 7.41016 -40.3799 7.41016zM380.8 0v64h-284.8c-16 0 -32 -12.7998 -32 -32s12.7998 -32 32 -32h284.8z\" />\n    <glyph glyph-name=\"search-dollar\" unicode=\"&#xf688;\" \nd=\"M505.04 5.33984c9.2998 -9.39941 9.2998 -24.5898 -0.0996094 -33.9902l-28.3008 -28.2998c-9.2998 -9.39941 -24.5 -9.39941 -33.8994 0l-99.71 99.6904c-4.5 4.5 -7 10.5996 -7 17v16.2998c-35.2998 -27.5996 -79.71 -44 -128.011 -44\nc-114.909 0 -208.02 93.0898 -208.02 207.979c0 114.891 93.1201 207.98 208.02 207.98c114.9 0 208.011 -93.0898 208.011 -207.98c0 -48.2998 -16.4004 -92.6895 -44 -127.989h16.2998c6.40039 0 12.5 -2.5 17 -7zM208.02 96.04c79.6504 0 144 64.4502 144 143.979\nc0 79.6406 -64.46 143.98 -144 143.98c-79.6494 0 -144 -64.4502 -144 -143.98c0 -79.6396 64.4609 -143.979 144 -143.979zM235.13 248.58c18.6006 -5.58008 31.5898 -23.4199 31.5898 -43.3896c0 -24.5303 -19.0498 -44.4404 -42.6797 -45.0703v-16.1201\nc0 -4.41992 -3.58008 -8 -8 -8h-16c-4.41992 0 -8 3.58008 -8 8v16.29c-11.29 0.580078 -22.2705 4.51953 -31.3701 11.3496c-3.90039 2.93066 -4.09961 8.77051 -0.570312 12.1406l11.75 11.21c2.77051 2.63965 6.89062 2.75977 10.1309 0.729492\nc3.85938 -2.42969 8.25977 -3.71973 12.8193 -3.71973h28.1006c6.5 0 11.7998 5.91992 11.7998 13.1904c0 5.94922 -3.61035 11.1797 -8.77051 12.7295l-45.0098 13.5c-18.5898 5.58008 -31.5801 23.4199 -31.5801 43.3896c0 24.5205 19.0498 44.4404 42.6797 45.0703\nv16.1201c0 4.41992 3.58008 8 8 8h16c4.4209 0 8 -3.58008 8 -8v-16.29c11.29 -0.580078 22.2705 -4.51953 31.3701 -11.3496c3.90039 -2.93066 4.10059 -8.77051 0.570312 -12.1406l-11.75 -11.21c-2.76953 -2.63965 -6.88965 -2.75977 -10.1299 -0.729492\nc-3.86035 2.42969 -8.25977 3.71973 -12.8203 3.71973h-28.1094c-6.5 0 -11.8008 -5.91992 -11.8008 -13.1904c0 -5.94922 3.61035 -11.1797 8.77051 -12.7295z\" />\n    <glyph glyph-name=\"search-location\" unicode=\"&#xf689;\" \nd=\"M505.04 5.33984c9.2998 -9.39941 9.2998 -24.5898 -0.0996094 -33.9902l-28.3008 -28.2998c-9.2998 -9.39941 -24.5 -9.39941 -33.8994 0l-99.71 99.6904c-4.5 4.5 -7 10.5996 -7 17v16.2998c-35.2998 -27.5996 -79.71 -44 -128.011 -44\nc-114.909 0 -208.02 93.0898 -208.02 207.979c0 114.891 93.1201 207.98 208.02 207.98c114.9 0 208.011 -93.0898 208.011 -207.98c0 -48.2998 -16.4004 -92.6895 -44 -127.989h16.2998c6.40039 0 12.5 -2.5 17 -7zM208.02 96.04c79.6504 0 144 64.4502 144 143.979\nc0 79.6406 -64.46 143.98 -144 143.98c-79.6494 0 -144 -64.4502 -144 -143.98c0 -79.6396 64.4609 -143.979 144 -143.979zM208.04 336c40.7803 0 73.8398 -33.0498 73.8398 -73.8301c0 -32.9697 -48.2598 -93.0498 -66.75 -114.86\nc-1.5293 -1.8291 -4.70508 -3.31445 -7.08984 -3.31445s-5.56055 1.48535 -7.08984 3.31445c-18.4902 21.8105 -66.75 81.9004 -66.75 114.86c0 40.7803 33.0596 73.8301 73.8398 73.8301zM208.04 240c13.25 0 24 10.75 24 24c0 13.2598 -10.75 24 -24 24\ns-24 -10.7402 -24 -24c0 -13.25 10.7402 -24 24 -24z\" />\n    <glyph glyph-name=\"socks\" unicode=\"&#xf696;\" \nd=\"M214.66 136.99c-52.7402 -39.5605 -69.0498 -110.021 -39.2002 -165.4l-21.8604 -16.3896c-17.2695 -12.9502 -37.4893 -19.2002 -57.5195 -19.2002c-32.8105 0 -65.6904 16.75 -83.9404 48.3301c-24.6494 42.6396 -10.1895 97.5 29.21 127.06l86.6504 64.6104v176h160\nv-160zM288 416v-32h-160v32c0 17.6699 14.3301 32 32 32h128c2.84961 0 5.40039 -0.919922 8.01953 -1.62012c-4.94922 -9.08008 -8.01953 -19.3301 -8.01953 -30.3799zM480 448c17.6699 0 32 -14.3301 32 -32v-32h-192v32c0 17.6699 14.3301 32 32 32h128zM320 176v176h192\nv-208v-0.00195312c0 -35.3271 -22.9375 -81.2021 -51.2002 -102.398l-115.2 -86.3994c-17.2695 -12.9502 -37.4893 -19.2002 -57.5195 -19.2002c-32.8105 0 -65.1699 16.75 -83.4199 48.3301c-24.6504 42.6396 -10.1904 97.5 29.21 127.06z\" />\n    <glyph glyph-name=\"square-root-alt\" unicode=\"&#xf698;\" horiz-adv-x=\"576\" \nd=\"M571.31 196.69c6.25 -6.25 6.25 -16.3809 0 -22.6309l-46.0596 -46.0596l46.0596 -46.0596c6.25 -6.25 6.25 -16.3809 0 -22.6309l-22.6191 -22.6191c-6.25 -6.25 -16.3809 -6.25 -22.6309 0l-46.0596 46.0596l-46.0596 -46.0596c-6.25 -6.25 -16.3809 -6.25 -22.6309 0\nl-22.6191 22.6191c-6.25 6.25 -6.25 16.3809 0 22.6309l46.0596 46.0596l-46.0596 46.0596c-6.25 6.25 -6.25 16.3809 0 22.6309l22.6191 22.6191c6.25 6.25 16.3809 6.25 22.6309 0l46.0596 -46.0596l46.0596 46.0596c6.25 6.25 16.3809 6.25 22.6309 0zM552 448\nc13.25 0 24 -10.7402 24 -24v-48c0 -13.25 -10.75 -24 -24 -24h-194.97l-97.8105 -374.52c-9.83984 -32.4805 -37.0098 -41.4805 -54.2793 -41.4805c-18.6406 0 -35.9502 8.5 -48.4404 28.2695l-88.8799 163.73h-43.6201c-13.25 0 -24 10.75 -24 24v48\nc0 13.2598 10.75 24 24 24h81.4697c10.4385 -0.00292969 22.9961 -7.42578 28.0303 -16.5703l58.4102 -106.1l84.79 322.8c3.68945 14.0703 16.4102 23.8701 30.9502 23.8701h244.35z\" />\n    <glyph glyph-name=\"star-and-crescent\" unicode=\"&#xf699;\" \nd=\"M340.47 -18.3604c8.74023 0 15.1299 -6.96973 15.1299 -15.0596c0 -6.62012 -4.31934 -12.2402 -10.2793 -14.2598c-29.04 -10.8301 -59.0898 -16.3203 -89.3203 -16.3203c-141.16 0 -256 114.84 -256 256s114.84 256 256 256c30.3896 0 60.5801 -5.54004 89.75 -16.4805\nc6.91992 -2.59961 10.9297 -9.83984 9.46973 -17.0898c-1.41992 -7.04004 -7.62012 -12.0693 -14.75 -12.0693c-1.47949 0 -6.85938 0.459961 -9.17969 0.459961c-116.25 0 -210.82 -94.5703 -210.82 -210.82s94.5703 -210.82 210.82 -210.82\nc2.29004 0 7.72949 0.459961 9.17969 0.459961zM503.46 234.14c8.16992 -1.17969 11.4297 -11.2197 5.52051 -16.9893l-55.2705 -53.8701l13.0498 -76.0703c1.11035 -6.42969 -4.00977 -11.6602 -9.80957 -11.6602c-1.53027 0 -3.11035 0.370117 -4.64062 1.16992\nl-68.3096 35.9102l-68.3301 -35.9102c-1.53027 -0.80957 -3.11035 -1.16992 -4.63965 -1.16992c-5.7998 0 -10.9199 5.21973 -9.81055 11.6602l13.0498 76.0703l-55.2695 53.8701c-5.91016 5.76953 -2.65039 15.8096 5.51953 16.9893l76.3809 11.1006l34.1592 69.21\nc1.83008 3.7002 5.38086 5.5498 8.93066 5.5498s7.09961 -1.84961 8.92969 -5.5498l34.1602 -69.21z\" />\n    <glyph glyph-name=\"star-of-david\" unicode=\"&#xf69a;\" horiz-adv-x=\"464\" \nd=\"M405.68 192l53.2207 -89.3896c14.4092 -24.21 -3.41016 -54.6104 -32.0107 -54.6104h-106.93l-55.9502 -93.9805c-7.14941 -12.0098 -19.5801 -18.0195 -32.0098 -18.0195s-24.8604 6.00977 -32.0098 18.0195l-55.9502 93.9805h-106.93\nc-28.6006 0 -46.4199 30.4004 -32.0107 54.6104l53.2207 89.3896l-53.2207 89.3896c-14.4092 24.21 3.41016 54.6104 32.0107 54.6104h106.93l55.9502 93.9805c7.14941 12.0098 19.5801 18.0195 32.0098 18.0195s24.8604 -6.00977 32.0098 -18.0195l55.9502 -93.9805h106.92\nc28.6006 0 46.4199 -30.4004 32.0098 -54.6104zM392.9 280h-39.6006l19.7998 -33.2598zM340.51 192l-52.3896 88h-112.25l-52.3799 -88l52.3896 -88h112.24zM232 374.28l-22.7803 -38.2803h45.5703zM71.0996 280l19.8008 -33.2598l19.7998 33.2598h-39.6006zM71.0996 104\nh39.6006l-19.7998 33.2598zM232 9.71973l22.7803 38.2803h-45.5703zM353.29 104h39.6104l-19.8105 33.2598z\" />\n    <glyph glyph-name=\"synagogue\" unicode=\"&#xf69b;\" horiz-adv-x=\"640\" \nd=\"M70 251.49c5.30957 6.00977 14.6904 6.00977 20 0l38 -43.0703v-272.42h-128v226.07v0.00683594c0 5.5625 2.98828 13.4629 6.66992 17.6328zM633.33 179.71c4.2998 -4.87012 6.66992 -11.1396 6.66992 -17.6396v-226.07h-128v272.42l38 43.0703\nc5.30957 6.01953 14.6904 6.01953 20 0zM339.99 440.99l128 -102.4c7.58984 -6.07031 12.0098 -15.2695 12.0098 -24.9902v-377.6h-96v96c0 38.8701 -34.6602 69.6504 -74.75 63.1201c-31.4697 -5.12012 -53.25 -34.6699 -53.25 -66.5498v-92.5703h-96v377.6\nc0 8.49023 5.38086 19.6865 12.0098 24.9902l128 102.4c11.6904 9.34961 28.29 9.34961 39.9805 0zM392.06 225.44l-19.1895 30.5596l19.2002 30.5703c1.97949 3.14941 -0.290039 7.23926 -4 7.23926h-38.9502l-25.1201 39.9805c-1.84961 2.9502 -6.15039 2.9502 -8 0\nl-25.1201 -40h-38.9395c-3.70996 0 -5.98047 -4.08984 -4 -7.24023l19.1992 -30.5596l-19.1992 -30.5605c-1.98047 -3.14941 0.279297 -7.23926 4 -7.23926h38.9395l25.1201 -39.9805c1.84961 -2.9502 6.15039 -2.9502 8 0l25.1201 39.9902h38.9395\nc3.70996 0 5.98047 4.08984 4 7.24023z\" />\n    <glyph glyph-name=\"torah\" unicode=\"&#xf6a0;\" horiz-adv-x=\"640\" \nd=\"M320.05 81.5195l-17.7402 29.6406h35.46zM419.26 247.52l-18.3994 -30.8193l-18.46 30.8193h36.8594zM48 448c26.5098 0 48 -14.3301 48 -32v-448c0 -17.6699 -21.4902 -32 -48 -32s-48 14.3301 -48 32v448c0 17.6699 21.4902 32 48 32zM220.74 136.5l18.3896 30.8203\nl18.46 -30.8203h-36.8496zM382.45 136.5l18.4102 30.7998l18.4492 -30.7998h-36.8594zM128 -16v416h384v-416h-384zM194.77 262.13c-1.53711 -2.65625 -2.78516 -7.30176 -2.78516 -10.3711c0 -3.20312 1.35059 -8.02246 3.01562 -10.7588l29.3604 -49l-29.21 -48.8398\nc-1.6709 -2.77344 -3.02637 -7.65234 -3.02637 -10.8906c0 -11.6523 9.45703 -21.1094 21.1104 -21.1094h0.015625h59.5l29.25 -48.8799c3.33105 -5.6416 11.3516 -10.2207 17.9023 -10.2207h0.0976562c6.64844 0.0136719 14.7842 4.67285 18.1602 10.4004l29.1299 48.7002\nh59.4697h0.0224609c6.8125 0 15.082 4.80273 18.458 10.7197c1.53418 2.65332 2.7793 7.29297 2.7793 10.3584c0 3.2041 -1.35254 8.02539 -3.01953 10.7617l-29.3701 49l29.2402 48.8496c1.66602 2.77246 3.01758 7.64648 3.01758 10.8809\nc0 11.6562 -9.46094 21.1182 -21.1182 21.1191h-59.5195l-29.25 48.8604c-3.3252 5.63574 -11.3359 10.21 -17.8799 10.21h-0.0703125h-0.0341797c-6.65137 0 -14.7988 -4.64551 -18.1855 -10.3701l-29.1299 -48.71h-59.4502h-0.0458984\nc-6.80469 0 -15.0635 -4.79785 -18.4346 -10.71zM592 448c26.5098 0 48 -14.3301 48 -32v-448c0 -17.6699 -21.4902 -32 -48 -32s-48 14.3301 -48 32v448c0 17.6699 21.4902 32 48 32zM320 302.47l17.6797 -29.6201h-35.46zM257.55 247.47l-18.3701 -30.7998\nl-18.4395 30.7998h36.8096zM287.13 136.47l-33.2295 55.5303l33.1699 55.5195h65.79l33.2295 -55.5195l-33.1699 -55.5303h-65.79z\" />\n    <glyph glyph-name=\"torii-gate\" unicode=\"&#xf6a1;\" \nd=\"M376.45 416c39.4961 0.00195312 100.223 14.3389 135.55 32v-96c0 -17.6699 -14.3301 -32 -32 -32h-32v-64h48c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-48v-240c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v240\nh-256v-240c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v240h-48c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h48v64h-32c-17.6699 0 -32 14.3301 -32 32v96c35.3271 -17.6611 96.0537 -31.998 135.55 -32h240.9zM128 320v-64h96\nv64h-96zM384 256v64h-96v-64h96z\" />\n    <glyph glyph-name=\"vihara\" unicode=\"&#xf6a7;\" horiz-adv-x=\"640\" \nd=\"M632.88 47.29c5.41992 -3.61035 7.7002 -9.62012 6.99023 -15.29c-0.620117 -5.00977 -3.56055 -9.75 -8.71973 -12.3301l-55.1504 -19.6699v-48c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v48h-160v-48c0 -8.83984 -7.16016 -16 -16 -16h-32\nc-8.83984 0 -16 7.16016 -16 16v48h-160v-48c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v48l-55.1602 19.6699c-5.14941 2.58008 -8.09961 7.32031 -8.71973 12.3301c-0.700195 5.66016 1.58008 11.6699 7 15.29l88.8799 48.71v64\nl-55.1602 17.6904c-11.79 5.89941 -11.79 22.7197 0 28.6191l119.16 49.6904v64l-27.3096 16.3096c-7.7207 7.7207 -5.61035 20.7402 4.15918 25.6201l183.15 86.0703l183.15 -86.0801c9.76953 -4.87988 11.8799 -17.9004 4.15918 -25.6201l-27.3096 -16.2998v-64\nl119.16 -49.6904c11.79 -5.89941 11.79 -22.7197 0 -28.6191l-55.1602 -17.6904v-64zM224 320v-64h192v64h-192zM160 96h320v64h-320v-64z\" />\n    <glyph glyph-name=\"volume-mute\" unicode=\"&#xf6a9;\" \nd=\"M215.03 376.95c15.0098 15.0098 40.9697 4.49023 40.9697 -16.9697v-335.961c0 -21.4395 -25.9404 -32 -40.9697 -16.9697l-88.9707 88.9502h-102.06c-13.2598 0 -24 10.75 -24 24v144c0 13.2598 10.7402 24 24 24h102.06zM461.64 192l45.6406 -45.6396\nc6.2998 -6.30078 6.2998 -16.5205 0 -22.8203l-22.8203 -22.8203c-6.2998 -6.2998 -16.5195 -6.2998 -22.8203 0l-45.6396 45.6406l-45.6299 -45.6299c-6.2998 -6.30078 -16.5205 -6.30078 -22.8203 0l-22.8193 22.8193c-6.30078 6.2998 -6.30078 16.5205 0 22.8203\nl45.6299 45.6299l-45.6406 45.6396c-6.2998 6.30078 -6.2998 16.5205 0 22.8203l22.8203 22.8203c6.2998 6.2998 16.5195 6.2998 22.8203 0l45.6396 -45.6406l45.6396 45.6406c6.30078 6.2998 16.5205 6.2998 22.8203 0l22.8203 -22.8203\nc6.2998 -6.2998 6.2998 -16.5195 0 -22.8203z\" />\n    <glyph glyph-name=\"yin-yang\" unicode=\"&#xf6ad;\" horiz-adv-x=\"496\" \nd=\"M248 440c136.97 0 248 -111.03 248 -248s-111.03 -248 -248 -248s-248 111.03 -248 248s111.03 248 248 248zM248 64c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM248 192c53.0195 0 96 42.9805 96 96s-42.9805 96 -96 96\nc-106.04 0 -192 -85.96 -192 -192s85.96 -192 192 -192c-53.0195 0 -96 42.9805 -96 96s42.9805 96 96 96zM248 320c17.6699 0 32 -14.3301 32 -32s-14.3301 -32 -32 -32s-32 14.3301 -32 32s14.3301 32 32 32z\" />\n    <glyph glyph-name=\"blender-phone\" unicode=\"&#xf6b6;\" horiz-adv-x=\"576\" \nd=\"M392 384c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h157.82l-17.46 -64h-140.36c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h131.64l-17.46 -64h-114.18c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h105.46\nl-17.46 -64h-288v352h384l-17.46 -64h-166.54zM158.8 112.99c3.00977 -7.40039 0.200195 -15.8506 -6.68945 -20.0703l-39.4102 -24.1797c-12.5303 -7.68066 -31.7803 -6 -41.6504 4.7998c-94.0996 102.94 -94.6699 258.89 -2.09961 362.49\nc11.1396 12.4697 29.5596 15.8398 43.8896 7.0498l39.2803 -24.0996c6.87988 -4.2207 9.7002 -12.6807 6.67969 -20.0703l-25.7803 -63.2598c-2.7793 -6.80078 -9.80957 -10.9902 -17.2393 -10.2607l-45.0303 4.41992c-17.6504 -47.9395 -17.2803 -100.779 0 -147.72\nl45.0303 4.41992c7.43945 0.730469 14.46 -3.4502 17.2393 -10.2598zM480 64c35.3496 0 64 -28.6504 64 -64v-32c0 -17.6699 -14.3301 -32 -32 -32h-352c-17.6699 0 -32 14.3301 -32 32v32c0 35.3496 28.6504 64 64 64h288zM336 -32c17.6699 0 32 14.3301 32 32\ns-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z\" />\n    <glyph glyph-name=\"book-dead\" unicode=\"&#xf6b7;\" horiz-adv-x=\"448\" \nd=\"M272 312c-8.7998 0 -16 7.2002 -16 16s7.2002 16 16 16s16 -7.2002 16 -16s-7.2002 -16 -16 -16zM448 89.5996c0 -9.59961 -3.2002 -16 -9.59961 -19.1992c-3.2002 -12.8008 -3.2002 -57.6006 0 -73.6006c6.39941 -6.39941 9.59961 -12.7998 9.59961 -19.2002v-16\nc0 -16 -12.7998 -25.5996 -25.5996 -25.5996h-326.4c-54.4004 0 -96 41.5996 -96 96v320c0 54.4004 41.5996 96 96 96h326.4c16 0 25.5996 -9.59961 25.5996 -25.5996v-332.801zM240 392c-44.2002 0 -80 -28.7002 -80 -64c0 -20.9004 12.7002 -39.2002 32 -50.9004v-13.0996\nc0 -8.7998 7.2002 -16 16 -16h64c8.7998 0 16 7.2002 16 16v13.0996c19.2998 11.7002 32 30 32 50.9004c0 35.2998 -35.7998 64 -80 64zM124.8 224.7c-1.7002 -4.10059 0.100586 -8.7998 4.2002 -10.5l70.5 -30.2998l-70.4004 -30.1006\nc-4.09961 -1.7002 -5.89941 -6.39941 -4.19922 -10.5l6.2998 -14.7002c1.7002 -4.09961 6.39941 -5.89941 10.5 -4.19922l98.2998 42.1992l98.2998 -42.0996c4.10059 -1.7002 8.7998 0.0996094 10.5 4.2002l6.2998 14.7002c1.7002 4.09961 -0.0996094 8.7998 -4.19922 10.5\nl-70.3008 30.0996l70.3008 30.2002c4.09961 1.7002 5.89941 6.39941 4.19922 10.5l-6.2998 14.7002c-1.7002 4.09961 -6.39941 5.89941 -10.5 4.19922l-98.3994 -42.0996l-98.3008 42.0996c-4.09961 1.7002 -8.7998 -0.0996094 -10.5 -4.19922zM380.8 0v64h-284.8\nc-16 0 -32 -12.7998 -32 -32s12.7998 -32 32 -32h284.8zM208 312c-8.7998 0 -16 7.2002 -16 16s7.2002 16 16 16s16 -7.2002 16 -16s-7.2002 -16 -16 -16z\" />\n    <glyph glyph-name=\"campground\" unicode=\"&#xf6bb;\" horiz-adv-x=\"640\" \nd=\"M624 0c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-608c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h24.6797l239.79 330.25l-53.4102 73.5498c-5.19922 7.15039 -3.60938 17.1602 3.54004 22.3506l25.8809 18.7998\nc7.14941 5.18945 17.1592 3.59961 22.3496 -3.5498l41.1699 -56.7002l41.1602 56.6895c5.2002 7.16016 15.2002 8.74023 22.3496 3.55078l25.9004 -18.79c7.14941 -5.19043 8.72949 -15.2002 3.54004 -22.3506l-53.4102 -73.5498l239.78 -330.25h24.6797zM320 160\nl-116.36 -160h232.721z\" />\n    <glyph glyph-name=\"cat\" unicode=\"&#xf6be;\" \nd=\"M290.59 256c11.8906 -58.3496 63.6006 -102.4 125.41 -102.4c11.1104 0 21.71 1.87012 32 4.54004v-206.14c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v144l-128 -96h32c17.6699 0 32 -14.3301 32 -32v-16c0 -8.83984 -7.16016 -16 -16 -16\nh-176c-35.2998 0 -64 28.7002 -64 64v256c0 17.6396 -14.3604 32 -32 32c-17.6699 0 -32 14.3301 -32 32s14.3301 32 32 32c52.9404 0 96 -43.0596 96 -96v-85.9502c55.7695 83.9697 142.41 85.9502 162.59 85.9502zM448 352l64 64v-134.4c0 -53.0195 -42.9805 -96 -96 -96\ns-96 42.9805 -96 96v134.4l64 -64h64zM376 272c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16s-16 -7.16016 -16 -16s7.16016 -16 16 -16zM456 272c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16s-16 -7.16016 -16 -16s7.16016 -16 16 -16z\" />\n    <glyph glyph-name=\"chair\" unicode=\"&#xf6c0;\" horiz-adv-x=\"448\" \nd=\"M112 320v-128h-48v128c0 70.7002 57.2998 128 128 128h64c70.7002 0 128 -57.2998 128 -128v-128h-48v128c0 29.5 -16.2002 55 -40 68.9004v-196.9h-48v208h-48v-208h-48v196.9c-23.7998 -13.9004 -40 -39.4004 -40 -68.9004zM446.3 106.1\nc6.90039 -20.6992 -8.5 -42.0996 -30.2998 -42.0996v-112c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v112h-256v-112c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v112c-21.7998 0 -37.2002 21.4004 -30.4004 42.0996l10.7002 32\nc4.40039 13.1006 16.6006 21.9004 30.4004 21.9004h362.5c13.7998 0 26 -8.7998 30.3994 -21.9004z\" />\n    <glyph glyph-name=\"cloud-moon\" unicode=\"&#xf6c3;\" horiz-adv-x=\"576\" \nd=\"M342.8 95.2998c40.9004 -3.5 73.2002 -37.3994 73.2002 -79.2998c0 -44.2002 -35.7998 -80 -80 -80h-240c-53 0 -96 43 -96 96c0 41.9004 27.0996 77.2002 64.5996 90.2998c-0.0996094 1.90039 -0.599609 3.7002 -0.599609 5.7002c0 53 43 96 96 96\nc36.2002 0 67.4004 -20.2998 83.7002 -49.9004c11.5 11 27.0996 17.9004 44.2998 17.9004c35.2998 0 64 -28.7002 64 -64c0 -12 -3.5 -23.0996 -9.2002 -32.7002zM565.3 149.6c8.2002 1.60059 14 -8 8.7002 -14.5c-33.4004 -41.0996 -82.7002 -67 -137.1 -70.3994\nc-11.1006 23.0996 -29.9004 41.7998 -53.5 52.5996c0.399414 3.5 0.599609 7.10059 0.599609 10.7002c0 52.9004 -43.0996 96 -96 96c-12.7002 0 -25 -2.5 -36.4004 -7.2002c-5.09961 5.2998 -10.7998 9.90039 -16.6992 14.2002c-1.10059 8.2002 -1.80078 16.5 -1.80078 25\nc0 106.1 86 192 191.9 192c11.7002 0 23.4004 -1.09961 35.0996 -3.2002c8.2002 -1.59961 10.1006 -12.5996 2.80078 -16.7002c-47.1006 -26.7998 -76.1006 -76.5996 -76.1006 -130.8c0 -94 85.4004 -165.399 178.5 -147.7z\" />\n    <glyph glyph-name=\"cloud-sun\" unicode=\"&#xf6c4;\" horiz-adv-x=\"640\" \nd=\"M575.2 122.3c37.5996 -13 64.7998 -48.2998 64.7998 -90.3994c0 -53 -43 -96 -96 -96h-272c-53 0 -96 43 -96 96c0 50.5996 39.2998 91.5996 88.9004 95.2998c-0.200195 2.89941 -0.900391 5.7002 -0.900391 8.7002c0 61.8994 50.2002 112 112 112\nc45.4004 0 84.2998 -27.2002 101.9 -66c9.89941 6.19922 21.5 10 34.0996 10c35.2998 0 64 -28.7002 64 -64c0 -1.90039 -0.599609 -3.7002 -0.799805 -5.60059zM144.8 144.9c10.6006 -10.6006 22.9004 -18.6006 36 -24c-9.59961 -9.80078 -17.5 -21.1006 -23.5996 -33.5\nl-76.1006 -25.3008c-11.8994 -3.89941 -23.1992 7.30078 -19.1992 19.2002l29.2998 87.7998l-82.7998 41.4004c-11.2002 5.59961 -11.2002 21.5 0 27.0996l82.7998 41.5l-29.2998 87.8008c-3.90039 11.7998 7.39941 23.0996 19.1992 19.1992l87.9004 -29.2998\nl41.4004 82.7998c5.59961 11.2002 21.5996 11.2002 27.0996 0l41.5 -82.7998l87.7998 29.2998c11.9004 3.90039 23.2002 -7.2998 19.2002 -19.1992l-29.7998 -88.9004c-10.6006 -1.5 -20.9004 -3.7998 -30.7002 -7.5c-5.40039 11.7998 -12.5996 23 -22.2998 32.7002\nc-43.7002 43.7002 -114.7 43.7002 -158.4 0c-43.7002 -43.6006 -43.7002 -114.601 0 -158.3zM140 224.1c0 46.3008 37.7002 83.9004 84 83.9004c34 0 63.2998 -20.4004 76.5 -49.5c-36.4004 -22.5 -62 -60.7002 -67.4004 -105\nc-8.89941 -2.90039 -17.1992 -7 -25.1992 -11.7002c-38.6006 7.5 -67.9004 41.5 -67.9004 82.2998z\" />\n    <glyph glyph-name=\"dice-d20\" unicode=\"&#xf6cf;\" horiz-adv-x=\"480\" \nd=\"M106.75 232.94l108.64 -190.101l-208.26 22.0703c-5.83008 0.639648 -9.00977 7.13965 -5.92969 12.1396zM7.41016 132.57c-2.12012 -3.44043 -7.41016 -1.94043 -7.41016 2.08984v162.81c0 3.11035 3.38965 5.03027 6.05957 3.43066l76.6406 -45.9805zM18.25 24.4004\nc-4.03027 1.97949 -2.25 8.06934 2.2002 7.56934l203.55 -22.2998v-65.6699c0 -5.83008 -6.0498 -9.70996 -11.3496 -7.25977zM99.4697 282.18l-81.5293 48.6904c-2.52051 1.51953 -2.60059 5.16016 -0.130859 6.78027l150.811 98.6094\nc7.18945 4.11035 15.1201 -4.08008 10.7803 -11.1396zM240 272h-109.21l95.5801 168.38c3.12988 5.08008 8.37988 7.62012 13.6299 7.62012s10.5 -2.54004 13.6299 -7.62012l95.5801 -168.38h-109.21zM473.94 300.9c2.66992 1.59961 6.05957 -0.320312 6.05957 -3.43066\nv-162.81c0 -4.04004 -5.2998 -5.54004 -7.41016 -2.10059l-75.29 122.351zM380.53 282.18l-79.9307 142.94c-4.33984 7.05957 3.59082 15.25 10.7803 11.1396l150.811 -98.5996c2.46973 -1.62012 2.39941 -5.25977 -0.130859 -6.78027zM459.55 31.9697\nc4.4502 0.5 6.23047 -5.58984 2.2002 -7.55957l-194.4 -87.6602c-5.2998 -2.4502 -11.3496 1.41992 -11.3496 7.25977v65.6699zM373.25 232.94l105.56 -155.891c3.08008 -5 -0.0996094 -11.4902 -5.92969 -12.1396l-208.26 -22.0703zM240 240h100.43l-100.43 -175.75\nl-100.43 175.75h100.43z\" />\n    <glyph glyph-name=\"dice-d6\" unicode=\"&#xf6d1;\" horiz-adv-x=\"448\" \nd=\"M422.19 338.05c5.3291 -3.24023 5.2998 -11.2695 -0.0507812 -14.46l-198.14 -118.14l-198.13 118.14c-5.35059 3.19043 -5.37988 11.2305 -0.0605469 14.46l165.971 100.88c19.9102 12.1006 44.5195 12.1006 64.4297 0zM436.03 293.42\nc5.33008 3.17969 11.9697 -0.839844 11.9697 -7.25v-197.7c0 -23.7598 -12.1104 -45.7393 -31.79 -57.7002l-152.16 -92.4795c-10.6602 -6.48047 -24.0498 1.5498 -24.0498 14.4297v223.82zM0 286.17c0 6.41016 6.63965 10.4297 11.9697 7.25l196.03 -116.88v-223.81\nc0 -12.8906 -13.3799 -20.9102 -24.0498 -14.4307l-152.16 92.4697c-19.6797 11.9609 -31.79 33.9307 -31.79 57.7002v197.7z\" />\n    <glyph glyph-name=\"dog\" unicode=\"&#xf6d3;\" \nd=\"M496 352c8.83984 0 16 -7.16016 16 -16v-32c0 -35.3496 -28.6504 -64 -64 -64h-32v-35.5801l-128 45.71v149.84c0 14.25 17.2305 21.3906 27.3203 11.3105l27.2793 -27.2803h53.6201c10.917 -0.000976562 23.7383 -7.92578 28.6201 -17.6904l7.16016 -14.3096h64z\nM384 304c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16s-16 -7.16016 -16 -16s7.16016 -16 16 -16zM96 224h170.05l149.95 -53.5498v-218.45c0 -8.83984 -7.16016 -16 -16 -16h-64c-8.83984 0 -16 7.16016 -16 16v112h-160v-112c0 -8.83984 -7.16016 -16 -16 -16h-64\nc-8.83984 0 -16 7.16016 -16 16v213.9c-37.1699 13.25 -64 48.4395 -64 90.0996c0 17.6699 14.3301 32 32 32s32 -14.3301 32 -32c0 -17.6396 14.3604 -32 32 -32z\" />\n    <glyph glyph-name=\"dragon\" unicode=\"&#xf6d5;\" horiz-adv-x=\"640\" \nd=\"M18.3203 192.22c-15.96 -2.2793 -24.8906 17.8105 -12.5107 28.1406l117.4 116.34c21.7705 18.5996 53.2402 20.4697 77.0596 4.58984l119.73 -87.5996v-42.2705c0 -28.9102 5.29004 -56.9795 14.7305 -83.3799h-222.7c-14.25 0 -21.3906 17.2295 -11.3105 27.3096\nl91.2803 68.6904zM575.19 158.12c41.9092 -20.96 67.1592 -64.0801 64.6396 -111.36c-3.37988 -63.2002 -59.7002 -110.77 -122.99 -110.76h-499.08c-9.80957 0 -17.7598 8 -17.7598 17.7998c0 8.32031 5.78027 15.5303 13.9004 17.3301\nc89.54 19.9004 238.51 54.1006 434.1 60.9102c-59.9697 39.9902 -96 107.3 -96 179.38v108.62l-59.5801 24.8496c-5.90039 2.9502 -5.90039 11.3604 0 14.3105l59.5801 24.8398l-61.6396 50.3496c-5.04004 5.04004 -1.4707 13.6104 5.65918 13.6104h237.45\nc10.0703 0 19.5498 -4.7002 25.6006 -12.7598l74.5293 -99.3799c3.53223 -4.71094 6.39844 -13.3115 6.39844 -19.1992c0 -4.16992 -1.51367 -10.5811 -3.37793 -14.3115l-14.3105 -28.6191c-4.88086 -9.76465 -17.7031 -17.6895 -28.6191 -17.6904h-30.9707\nc-8.48926 0 -16.6299 3.37012 -22.6299 9.37012l-28.0898 22.6299h-64v-36.6904c0.00195312 -16.3701 11.8877 -35.5986 26.5303 -42.9199zM489.18 381.75c-4.33008 -17.1396 8.56055 -28.96 21.5205 -29.6699c11.6602 -0.629883 21.3799 7.34961 24.1299 18.2598z\" />\n    <glyph glyph-name=\"drumstick-bite\" unicode=\"&#xf6d7;\" \nd=\"M462.8 398.43c34.3203 -34.2793 50.4307 -79.5996 49.1299 -124.56c-41.9795 22.6602 -94.3594 17.5596 -128.739 -16.7998c-40.8809 -40.8398 -40.6904 -107.181 -1.05078 -151.07c-16.2383 -5.52246 -43.3389 -10.0049 -60.4912 -10.0049\nc-0.385742 0 -1.0127 0.00195312 -1.39844 0.00488281h-85.8896l-40.6104 -40.5596c-9.71973 -9.75 -11.0898 -24.0205 -6 -36.75c2.38477 -5.95898 4.32031 -16.0049 4.32031 -22.4229c0 -33.3135 -27.0371 -60.3496 -60.3506 -60.3496\nc-13.8428 0 -33.0039 7.96191 -42.7695 17.7725c-15.2803 15.2695 -19.6006 36.5 -15.1006 56.0996c-19.6094 -4.49023 -40.8496 -0.179688 -56.1191 15.0703c-9.77148 9.75684 -17.7021 28.8828 -17.7021 42.6914c0 33.3018 27.0273 60.3301 60.3301 60.3301\nc6.40234 0 16.4248 -1.92773 22.3721 -4.30176c12.7793 -5.07031 27.0791 -3.69043 36.7793 6l40.6201 40.5898v85.8301c0 64 27.6904 107 63.1699 142.43c27.3887 27.3604 81.0371 49.5664 119.75 49.5664c38.7139 0 92.3613 -22.2061 119.75 -49.5664z\" />\n    <glyph glyph-name=\"dungeon\" unicode=\"&#xf6d9;\" \nd=\"M128.73 252.68c6.58984 -4.12012 8.89941 -12.2393 6.33984 -19.5801c-3 -8.60938 -5.15039 -17.6094 -6.24023 -26.9395c-0.929688 -7.91016 -7.0498 -14.1602 -15.0098 -14.1602h-97.1299c-9.10059 0 -16.7402 7.62988 -16.1504 16.7197\nc1.66016 25.7793 11.7178 65.7725 22.4502 89.2705c3.93945 8.62012 14.8896 11.4697 22.9297 6.4502zM319.03 440c9.16992 -2.36035 13.9102 -12.5996 10.3896 -21.3896l-37.4697 -104.03c-2.28027 -6.34961 -8.2998 -10.5801 -15.0498 -10.5801h-41.8008\nc-6.2041 0.00195312 -12.9473 4.74219 -15.0498 10.5801l-37.4697 104.03c-3.52051 8.79004 1.21973 19.04 10.3896 21.3896c20.1699 5.17969 41.2607 8 63.0303 8s42.8604 -2.82031 63.0303 -8zM112 160c8.83984 0 16 -7.16016 16 -16v-64c0 -8.83984 -7.16016 -16 -16 -16\nh-96c-8.83984 0 -16 7.16016 -16 16v64c0 8.83984 7.16016 16 16 16h96zM112 32c8.83984 0 16 -7.16016 16 -16v-64c0 -8.83984 -7.16016 -16 -16 -16h-96c-8.83984 0 -16 7.16016 -16 16v64c0 8.83984 7.16016 16 16 16h96zM189.31 315.67\nc2.85059 -7.12012 -0.0195312 -14.8799 -6.2998 -19.29c-6 -4.2002 -11.6094 -8.89941 -16.79 -14.0498c-5.4502 -5.41016 -13.5996 -6.86035 -20.1094 -2.79004l-82.9307 51.8301c-8.06934 5.04004 -10.2793 16.2002 -4.21973 23.5195\nc16.7148 20.1758 48.7969 47.0068 71.6104 59.8906c8.29004 4.67969 18.8896 0.519531 22.4199 -8.31055zM398.18 192c-7.95996 0 -14.0801 6.25 -15.0098 14.1602c-1.08984 9.32031 -3.22949 18.3301 -6.24023 26.9395c-2.55957 7.34082 -0.25 15.46 6.33984 19.5801\nl82.8105 51.7607c8.04004 5.01953 18.9902 2.16992 22.9297 -6.4502c10.7334 -23.498 20.791 -63.4902 22.4502 -89.2705c0.589844 -9.08984 -7.0498 -16.7197 -16.1504 -16.7197h-97.1299zM453.03 354.89c6.06934 -7.31934 3.84961 -18.4795 -4.2207 -23.5098\nl-82.9297 -51.8301c-6.50977 -4.06934 -14.6699 -2.62012 -20.1104 2.79004c-5.17969 5.15039 -10.7891 9.85059 -16.7891 14.0498c-6.28027 4.40039 -9.15039 12.1602 -6.30078 19.2803l36.3203 90.7998c3.54004 8.83008 14.1396 12.9902 22.4199 8.31055\nc22.8135 -12.8838 54.8945 -39.7148 71.6104 -59.8906zM496 160c8.83984 0 16 -7.16016 16 -16v-64c0 -8.83984 -7.16016 -16 -16 -16h-96c-8.83984 0 -16 7.16016 -16 16v64c0 8.83984 7.16016 16 16 16h96zM496 32c8.83984 0 16 -7.16016 16 -16v-64\nc0 -8.83984 -7.16016 -16 -16 -16h-96c-8.83984 0 -16 7.16016 -16 16v64c0 8.83984 7.16016 16 16 16h96zM240 270.38c5.23047 0.889648 10.5195 1.62012 16 1.62012s10.7695 -0.730469 16 -1.62012v-294.38c0 -4.41992 -3.58008 -8 -8 -8h-16c-4.41992 0 -8 3.58008 -8 8\nv294.38zM176 228.87c8.16016 12.2998 19.2197 22.3203 32 29.7695v-282.64c0 -4.41992 -3.58008 -8 -8 -8h-16c-4.41992 0 -8 3.58008 -8 8v252.87zM304 258.64c12.7803 -7.44922 23.8398 -17.4697 32 -29.7695v-252.87c0 -4.41992 -3.58008 -8 -8 -8h-16\nc-4.41992 0 -8 3.58008 -8 8v282.64z\" />\n    <glyph glyph-name=\"file-csv\" unicode=\"&#xf6dd;\" horiz-adv-x=\"384\" \nd=\"M224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136zM128 168v16c0 4.41992 -3.58008 8 -8 8h-8c-26.5098 0 -48 -21.4902 -48 -48v-32\nc0 -26.5098 21.4902 -48 48 -48h8c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-8c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h8c4.41992 0 8 3.58008 8 8zM172.27 64c23.3906 0 42.4004 17.3301 42.3906 38.6201\nc0 10.6602 -4.86035 20.9199 -13.3301 28.1396l-21.8896 18.7705c-1.37012 1.17969 -2.12012 2.54004 -2.12012 3.83984c0 3.12012 4.45996 6.62012 10.4102 6.62012h12.2695c4.41992 0 8 3.58008 8 8v16c0 4.41992 -3.58008 8 -8 8h-12.25\nc-23.3896 0 -42.4102 -17.3203 -42.4102 -38.6201c0 -10.6602 4.86035 -20.9199 13.3301 -28.1396l21.8896 -18.7705c1.37012 -1.17969 2.12012 -2.54004 2.12012 -3.83984c0 -3.12012 -4.45996 -6.62012 -10.4102 -6.62012h-12.2695c-4.41992 0 -8 -3.58008 -8 -8v-16\nc0 -4.41992 3.58008 -8 8 -8h12.2695zM256 184c0 4.41992 -3.58008 8 -8 8h-16c-4.41992 0 -8 -3.58008 -8 -8v-20.7998c0 -35.4805 12.8799 -68.8906 36.2803 -94.0898c3.01953 -3.25 7.26953 -5.11035 11.7197 -5.11035s8.7002 1.86035 11.7197 5.11035\nc23.4004 25.1992 36.2803 58.6094 36.2803 94.0898v20.7998c0 4.41992 -3.58008 8 -8 8h-16c-4.41992 0 -8 -3.58008 -8 -8v-20.7998c0 -20.2705 -5.7002 -40.1807 -16 -56.8799c-10.2998 16.71 -16 36.6094 -16 56.8799v20.7998zM377 343c4.5 -4.5 7 -10.5996 7 -16.9004\nv-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7z\" />\n    <glyph glyph-name=\"fist-raised\" unicode=\"&#xf6de;\" horiz-adv-x=\"384\" \nd=\"M255.98 288h-48.0303c-5.62988 0 -10.9502 -1.15039 -15.9697 -2.92969v146.93c0 8.83984 7.15918 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-144zM383.98 192.01l0.0195312 -88.2197v-0.0107422c0 -21.9551 -12.5977 -52.373 -28.1201 -67.8994l-35.9102 -35.9199\nv-63.96h-255.979v64l-26.5 26.5098c-24.0098 24.0098 -37.4902 56.5605 -37.4902 90.5098v77.9307c5.03027 -1.7998 10.3604 -2.9502 16 -2.9502h32c12.3301 0 23.4805 4.80957 32 12.4902c8.50977 -7.66992 19.6602 -12.4805 32 -12.4805h32\nc7.91016 0 15.2803 2.11035 21.8701 5.52051c7.46973 -16.3301 21.5996 -28.9404 38.8701 -34.4502c-17.1104 -14.8203 -31.5801 -34.4805 -47.3105 -58.0801l-6.30957 -9.46973c-0.742188 -1.1123 -1.34375 -3.09961 -1.34375 -4.43652\nc0 -2.36328 1.59668 -5.34375 3.56348 -6.65332l13.3105 -8.88086c1.11133 -0.741211 3.09863 -1.34375 4.43555 -1.34375c2.36328 0 5.34473 1.59668 6.6543 3.56445l6.30957 9.46973c31.8906 47.8398 51.5303 70.2695 96.0498 72.5498\nc4.29004 0.219727 7.88086 3.70996 7.88086 8v16.2002c0 4.41992 -3.52051 8 -13.2002 8h-35.2607c-26.2695 0 -47.5693 21.3203 -47.5693 47.5898v0.560547c0 8.7793 7.12012 15.8496 15.8994 15.8496h112.141c35.3301 0 63.9795 -28.6504 63.9902 -63.9902zM351.97 282.1\nc-10.0596 3.59082 -20.7197 5.90039 -32 5.90039h-32v112c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-117.9zM16 224c-8.83984 0 -16 7.16016 -16 16v128c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-128\nc0 -8.83984 -7.16016 -16 -16 -16h-32zM111.99 224c-8.83984 0 -16 7.16016 -16 16v160c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-160c0 -8.83984 -7.16016 -16 -16 -16h-32z\" />\n    <glyph glyph-name=\"ghost\" unicode=\"&#xf6e2;\" horiz-adv-x=\"384\" \nd=\"M186.1 447.91c108.73 3.25977 197.9 -83.9102 197.9 -191.91v-271.97c0 -14.25 -17.2305 -21.3906 -27.3096 -11.3105l-24.9209 18.5303c-6.65918 4.95996 -16 3.99023 -21.5098 -2.20996l-42.9502 -48.3496c-6.25 -6.25 -16.3799 -6.25 -22.6299 0l-40.7197 45.8496\nc-6.36035 7.16992 -17.5498 7.16992 -23.9199 0l-40.7197 -45.8496c-6.25 -6.25 -16.3799 -6.25 -22.6299 0l-42.9502 48.3496c-5.50977 6.2002 -14.8506 7.16016 -21.5098 2.20996l-24.9209 -18.5303c-10.0791 -10.0801 -27.3096 -2.9502 -27.3096 11.3105v263.92\nc0 105.13 81.0098 196.81 186.1 199.96zM128 224c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM256 224c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32z\" />\n    <glyph glyph-name=\"hammer\" unicode=\"&#xf6e3;\" horiz-adv-x=\"576\" \nd=\"M571.31 254.06c6.25 -6.25 6.25 -16.3799 0.0205078 -22.6191l-90.5098 -90.5107c-6.25 -6.25 -16.3799 -6.25 -22.6299 0l-22.6309 22.6299c-6.25 6.25 -6.25 16.3809 0 22.6309l11.3105 11.3096l-28.9004 28.9004\nc-21.3096 -5.63086 -44.8994 -0.360352 -61.6094 16.3496l-49.1406 49.1396c-12.0098 12 -18.75 28.2803 -18.75 45.25v18.75l-90.5098 45.25c62.4902 62.4805 163.8 62.4805 226.28 0l45.25 -45.25c16.71 -16.71 21.9795 -40.2998 16.3496 -61.6094l28.9004 -28.9004\nl11.3096 11.3105c6.25 6.25 16.3799 6.25 22.6299 0zM284.59 269.26l49.1406 -49.1396c3.53906 -3.54004 7.47949 -6.5 11.4395 -9.41016l-238.13 -255.07c-23.8799 -25.5801 -64.2002 -26.2695 -88.9297 -1.5293c-24.7305 24.7393 -24.04 65.0498 1.5293 88.9297\nl255.101 238.17c3.00977 -4.16016 6.14941 -8.25 9.84961 -11.9502z\" />\n    <glyph glyph-name=\"hanukiah\" unicode=\"&#xf6e6;\" horiz-adv-x=\"640\" \nd=\"M232 288h16c4.41992 0 8 -3.58008 8 -8v-120h-32v120c0 4.41992 3.58008 8 8 8zM168 288h16c4.41992 0 8 -3.58008 8 -8v-120h-32v120c0 4.41992 3.58008 8 8 8zM392 288h16c4.41992 0 8 -3.58008 8 -8v-120h-32v120c0 4.41992 3.58008 8 8 8zM456 288h16\nc4.41992 0 8 -3.58008 8 -8v-120h-32v120c0 4.41992 3.58008 8 8 8zM544 280v-120h-32v120c0 4.41992 3.58008 8 8 8h16c4.41992 0 8 -3.58008 8 -8zM104 288h16c4.41992 0 8 -3.58008 8 -8v-120h-32v120c0 4.41992 3.58008 8 8 8zM624 288c8.83984 0 16 -7.16016 16 -16\nv-112c0 -53.0195 -42.9805 -96 -96 -96h-192v-64h176c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-416c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h176v64h-192c-53.0195 0 -96 42.9805 -96 96v112c0 8.83984 7.16016 16 16 16\nh32c8.83984 0 16 -7.16016 16 -16v-112c0 -17.6699 14.3301 -32 32 -32h192v192c0 8.83984 7.16016 16 16 16h32c8.83984 0 16 -7.16016 16 -16v-192h192c17.6699 0 32 14.3301 32 32v112c0 8.83984 7.16016 16 16 16h32zM608 320c-13.25 0 -24 11.9502 -24 26.6699\ns24 53.3301 24 53.3301s24 -38.5996 24 -53.3301c0 -14.7295 -10.75 -26.6699 -24 -26.6699zM32 320c-13.25 0 -24 11.9502 -24 26.6699s24 53.3301 24 53.3301s24 -38.5996 24 -53.3301c0 -14.7295 -10.75 -26.6699 -24 -26.6699zM320 368\nc-13.25 0 -24 11.9502 -24 26.6699s24 53.3301 24 53.3301s24 -38.5996 24 -53.3301c0 -14.7295 -10.75 -26.6699 -24 -26.6699zM112 320c-13.25 0 -24 11.9502 -24 26.6699s24 53.3301 24 53.3301s24 -38.5996 24 -53.3301c0 -14.7295 -10.75 -26.6699 -24 -26.6699z\nM176 320c-13.25 0 -24 11.9502 -24 26.6699s24 53.3301 24 53.3301s24 -38.5996 24 -53.3301c0 -14.7295 -10.75 -26.6699 -24 -26.6699zM240 320c-13.25 0 -24 11.9502 -24 26.6699s24 53.3301 24 53.3301s24 -38.5996 24 -53.3301\nc0 -14.7295 -10.75 -26.6699 -24 -26.6699zM400 320c-13.25 0 -24 11.9502 -24 26.6699s24 53.3301 24 53.3301s24 -38.5996 24 -53.3301c0 -14.7295 -10.75 -26.6699 -24 -26.6699zM464 320c-13.25 0 -24 11.9502 -24 26.6699s24 53.3301 24 53.3301\ns24 -38.5996 24 -53.3301c0 -14.7295 -10.75 -26.6699 -24 -26.6699zM528 320c-13.25 0 -24 11.9502 -24 26.6699s24 53.3301 24 53.3301s24 -38.5996 24 -53.3301c0 -14.7295 -10.75 -26.6699 -24 -26.6699z\" />\n    <glyph glyph-name=\"hat-wizard\" unicode=\"&#xf6e8;\" \nd=\"M496 0c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-480c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h480zM192 64l16 -32h-144l110.96 249.66c9.4043 21.1611 33.3545 47.6611 53.46 59.1494l187.58 107.19l-56.2998 -168.92\nc-1.81543 -5.43945 -3.28809 -14.5078 -3.28809 -20.2412c0 -7.25098 2.31934 -18.5449 5.17773 -25.209l86.4102 -201.63h-208l16 32l64 32l-64 32l-32 64l-32 -64l-64 -32zM256 288l-32 -16l32 -16l16 -32l16 32l32 16l-32 16l-16 32z\" />\n    <glyph glyph-name=\"hiking\" unicode=\"&#xf6ec;\" horiz-adv-x=\"384\" \nd=\"M80.9502 -24.2305l34.5596 138.221l52.7803 -52.7803l-25.2402 -100.97c-3.64941 -14.5303 -16.6895 -24.2305 -31.0195 -24.2305c-2.58008 0 -5.19043 0.290039 -7.7998 0.950195c-17.1406 4.28027 -27.5605 21.6504 -23.2803 38.8096zM95.8398 171.89\nc-2.18945 -8.41992 -11.0801 -13.54 -19.8701 -11.4395l-63.5596 15.25c-8.78027 2.10938 -14.1104 10.6396 -11.9199 19.0596l25.2695 98.1299c10.9707 42.1006 55.4404 67.6904 99.3203 57.1699c8.78027 -2.10938 14.1104 -10.6396 11.9199 -19.0596zM368 288\nc8.83984 0 16 -7.16016 15.9902 -16v-320.01c0 -8.83984 -7.16016 -16 -16 -16h-16c-8.83984 0 -16 7.16016 -16 16v240h-48c-8.48047 0 -16.6201 3.37988 -22.6201 9.37988l-22.4297 22.4297l-19.8906 -79.5693\nc-0.129883 -0.520508 -0.469727 -0.910156 -0.620117 -1.41016l46.8203 -46.8203c12.0898 -12.0898 18.75 -28.1602 18.75 -45.25v-82.75c0 -17.6699 -14.3301 -32 -32 -32s-32 14.3301 -32 32v82.75l-86.6201 86.6201c-5.17383 5.1748 -9.37402 15.3154 -9.37402 22.6338\nc0 2.17285 0.427734 5.64746 0.954102 7.75586l26.9199 107.721c6.56055 26.2197 30.0098 44.5195 57.0303 44.5195c15.7002 0 30.4697 -6.11035 41.5596 -17.2197l46.7803 -46.7803h34.75v16c0 8.83984 7.16016 16 16 16h16zM240 352c-26.5098 0 -48 21.4902 -48 48\ns21.4902 48 48 48s48 -21.4902 48 -48s-21.4902 -48 -48 -48z\" />\n    <glyph glyph-name=\"hippo\" unicode=\"&#xf6ed;\" horiz-adv-x=\"640\" \nd=\"M581.12 351.8c34.0898 -0.189453 58.8799 -33.6895 58.8799 -67.7803v-92.0195c0 -17.6699 -14.3301 -32 -32 -32v-32c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v32h-128v-176c0 -8.83984 -7.16016 -16 -16 -16h-64\nc-8.83984 0 -16 7.16016 -16 16v70.79c-32.3496 -14.3604 -70.7197 -22.79 -112 -22.79s-79.6504 8.42969 -112 22.79v-70.79c0 -8.83984 -7.16016 -16 -16 -16h-64c-8.83984 0 -16 7.16016 -16 16v240c0 88.3604 85.96 160 192 160\nc49.2402 0 94.0098 -15.5801 128 -40.9805v48.9805c0 13.2598 10.75 24 24 24h16c13.25 0 24 -10.7402 24 -24v-13.8799c10.0498 3.58008 20.7197 5.87988 32 5.87988c39.8301 0 73.9805 -24.2695 88.5195 -58.8203c24.1006 9.04004 48.9307 26.7705 76.6006 26.6201z\nM448 272c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16s-16 -7.16016 -16 -16s7.16016 -16 16 -16z\" />\n    <glyph glyph-name=\"horse\" unicode=\"&#xf6f0;\" horiz-adv-x=\"576\" \nd=\"M575.92 371.4l0.0605469 -77.71v-0.0292969c0 -11.9609 -9.01465 -25.2715 -20.1201 -29.7109l-32.5508 -13.0205c-15.4395 -6.17969 -33.04 0.5 -40.4893 15.3701l-18.9004 37.7002l-16 7.11035v-102.471c0.00976562 -0.219727 0.0800781 -0.419922 0.0800781 -0.639648\nc0 -30.4697 -12.2598 -58.0303 -32 -78.2197v-177.78c0 -8.83984 -7.16016 -16 -16 -16h-64c-8.83984 0 -16 7.16016 -16 16v150.4l-133.97 22.3301l-23.8398 -63.5908l26.3096 -105.26c2.53027 -10.0996 -5.11035 -19.8799 -15.5195 -19.8799h-65.9609h-0.000976562\nc-6.89453 0 -13.8428 5.42969 -15.5088 12.1201l-24.8496 99.4102c-1.05664 4.2207 -1.91406 11.1777 -1.91406 15.5293c0 6.40332 1.8252 16.4648 4.07422 22.46l25.7197 68.6006c-18.7002 17.5195 -30.54 42.2402 -30.54 69.8799\nc0 2.62988 0.570312 5.09961 0.780273 7.67969c-9.91016 -7.29004 -16.7803 -18.46 -16.7803 -31.6797v-56c0 -8.83984 -7.16016 -16 -16 -16h-16c-8.83984 0 -16 7.16016 -16 16v56c0 48.5303 39.4697 88 88 88v-1.11035c17.5996 20.1299 43.1602 33.1104 72 33.1104\nh159.92c0 70.6904 57.3105 128 128 128h119.98c5.05957 0 8.94922 -4.67969 7.92969 -9.63965c-2.67969 -13.1699 -11.1201 -23.8203 -22.1797 -30.6602c5.10938 -5.37988 9.90918 -10.4697 13.6895 -14.5c5.56055 -5.93066 8.57031 -13.6699 8.58008 -21.7998zM511.92 352\nc8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16s-16 -7.16016 -16 -16s7.16016 -16 16 -16z\" />\n    <glyph glyph-name=\"house-damage\" unicode=\"&#xf6f1;\" horiz-adv-x=\"576\" \nd=\"M288 333.04l218.74 -192.94c1.54004 -1.37988 3.55957 -2.04004 5.25977 -3.19922v-184.9c0 -8.83984 -7.16016 -16 -16 -16h-176.19l-39.9199 55.25l104.11 64l-148.05 136.78l60.1602 -119.221l-104.11 -64l37.2305 -72.8096h-149.23c-8.83984 0 -16 7.16016 -16 16\nv184.94c1.78027 1.20996 3.84961 1.88965 5.46973 3.34961zM570.69 211.72c6.5791 -5.89941 7.11914 -16.0195 1.21973 -22.5898l-21.4004 -23.8203c-5.91016 -6.56934 -16.0293 -7.10938 -22.5996 -1.20996l-229.32 202.271c-6.0498 5.33008 -15.1201 5.33008 -21.1699 0\nl-229.32 -202.28c-6.58008 -5.91016 -16.6992 -5.35938 -22.5996 1.20996l-21.4004 23.8203c-5.90918 6.58008 -5.35938 16.6895 1.20996 22.5996l255.99 226.011c7.60059 6.85938 17.1406 10.2793 26.7002 10.2695s19.1201 -3.4502 26.75 -10.3096l101.25 -89.3809v51.6904\nc0 8.83984 7.16016 16 16 16h64c8.83984 0 16 -7.16016 16 -16v-136.45z\" />\n    <glyph glyph-name=\"hryvnia\" unicode=\"&#xf6f2;\" horiz-adv-x=\"384\" \nd=\"M368 208h-99.7002l-34.6699 -32h134.37c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-203.7l-29.4902 -27.2197c-4.3291 -4 -6.80957 -9.66992 -6.80957 -15.5801c0 -11.6807 9.50977 -21.2002 21.2002 -21.2002h83.6299h0.00195312\nc4.79395 0 11.6748 2.49121 15.3584 5.55957l11.75 9.80078c10.1895 8.48926 25.3193 7.12012 33.8096 -3.07031l20.4902 -24.5898c8.49023 -10.1807 7.10938 -25.3105 -3.07031 -33.7998l-11.7695 -9.81055c-18.6807 -15.5596 -42.2207 -24.0898 -66.54 -24.0898h-78.8203\nc-37.1396 0 -73.3799 17.8496 -92.0498 49.9502c-17.8701 30.7197 -17.54 65.4199 -4.12988 94.0498h-41.8604c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h99.7002l34.6699 32h-134.37c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16\nh203.7l29.4902 27.21c4.3291 4 6.80957 9.66992 6.80957 15.5801c0 11.6797 -9.50977 21.2002 -21.2002 21.2002h-83.6201c-5.62012 0 -11.0693 -1.9707 -15.3896 -5.57031l-11.7305 -9.78027c-10.1895 -8.48926 -25.3193 -7.12012 -33.8096 3.07031l-20.4902 24.5898\nc-8.49023 10.1807 -7.10938 25.3105 3.07031 33.7998l11.7695 9.81055c18.6807 15.5596 42.2207 24.0898 66.54 24.0898h78.8203c37.1396 0 73.3799 -17.8398 92.0498 -49.9502c17.8701 -30.7197 17.54 -65.4199 4.12988 -94.0498h41.8604c8.83984 0 16 -7.16016 16 -16v-32\nc0 -8.83984 -7.16016 -16 -16 -16z\" />\n    <glyph glyph-name=\"mask\" unicode=\"&#xf6fa;\" horiz-adv-x=\"640\" \nd=\"M320.67 384c449.09 0 348.32 -384 158.46 -384c-39.8994 0 -77.4697 20.6904 -101.41 55.8604l-25.7295 37.79c-15.6602 22.9893 -46.9707 22.9893 -62.6299 0l-25.7305 -37.79c-23.9502 -35.1699 -61.5195 -55.8604 -101.42 -55.8604c-199.11 0 -284.14 384 158.46 384z\nM184 139.64c41.0596 0 67.7598 25.6504 80.0801 41.0508c5.22949 6.54004 5.22949 16.0996 0 22.6299c-12.3203 15.3896 -39.0098 41.0498 -80.0801 41.0498s-67.7598 -25.6504 -80.0801 -41.0498c-5.22949 -6.54004 -5.22949 -16.1006 0 -22.6299\nc12.3203 -15.3906 39.0205 -41.0508 80.0801 -41.0508zM456 139.64c41.0596 0 67.7598 25.6504 80.0801 41.0508c5.22949 6.54004 5.22949 16.0996 0 22.6299c-12.3203 15.3896 -39.0098 41.0498 -80.0801 41.0498s-67.7598 -25.6504 -80.0801 -41.0498\nc-5.22949 -6.54004 -5.22949 -16.1006 0 -22.6299c12.3203 -15.3906 39.0205 -41.0508 80.0801 -41.0508z\" />\n    <glyph glyph-name=\"mountain\" unicode=\"&#xf6fc;\" horiz-adv-x=\"640\" \nd=\"M634.92 -14.7002c2.80566 -4.3623 5.08301 -12.1133 5.08301 -17.3008c0 -4.50586 -1.75293 -11.374 -3.91309 -15.3291c-5.60938 -10.2803 -16.3799 -16.6699 -28.0898 -16.6699h-576h-0.00390625c-10.4795 0 -23.0615 7.46387 -28.0859 16.6602\nc-2.16016 3.95605 -3.91309 10.8262 -3.91309 15.334c0 5.18848 2.27734 12.9414 5.08301 17.3057l288 448c5.88965 9.16016 16.0303 14.7002 26.9199 14.7002s21.0303 -5.54004 26.9199 -14.7002zM320 356.82l-102.06 -158.761l38.0596 -38.0596l64 64h85.3896z\" />\n    <glyph glyph-name=\"network-wired\" unicode=\"&#xf6ff;\" horiz-adv-x=\"640\" \nd=\"M640 184c0 -8.83984 -7.16016 -16 -16 -16h-104v-40h56c17.6699 0 32 -14.3301 32 -32v-128c0 -17.6699 -14.3301 -32 -32 -32h-160c-17.6699 0 -32 14.3301 -32 32v128c0 17.6699 14.3301 32 32 32h56v40h-304v-40h56c17.6699 0 32 -14.3301 32 -32v-128\nc0 -17.6699 -14.3301 -32 -32 -32h-160c-17.6699 0 -32 14.3301 -32 32v128c0 17.6699 14.3301 32 32 32h56v40h-104c-8.83984 0 -16 7.16016 -16 16v16c0 8.83984 7.16016 16 16 16h280v40h-72c-17.6699 0 -32 14.3301 -32 32v128c0 17.6699 14.3301 32 32 32h192\nc17.6699 0 32 -14.3301 32 -32v-128c0 -17.6699 -14.3301 -32 -32 -32h-72v-40h280c8.83984 0 16 -7.16016 16 -16v-16zM256 320h128v64h-128v-64zM192 0v64h-96v-64h96zM544 0v64h-96v-64h96z\" />\n    <glyph glyph-name=\"otter\" unicode=\"&#xf700;\" horiz-adv-x=\"640\" \nd=\"M608 416c17.6699 0 32 -14.3301 32 -32v-32c0 -53.0195 -42.9805 -96 -96 -96h-22.8604l-92.4697 -49.79l55.1104 -110.21h28.2197c17.6699 0 32 -14.3301 32 -32v-16c0 -8.83984 -7.16016 -16 -16 -16h-80l-74.5098 144.5l-149.49 -80.5h64\nc17.6699 0 32 -14.3301 32 -32v-16c0 -8.83984 -7.16016 -16 -16 -16h-224c-8.83008 0 -16 -7.16992 -16 -16s7.16992 -16 16 -16h112c17.6699 0 32 -14.3301 32 -32s-14.3301 -32 -32 -32h-108.47c-39.3799 0 -75.5205 26.9004 -82.2803 65.7002\nc-4.91016 28.1201 5 54.2197 23.1904 71.7998c23.5596 22.75 39.5596 52.1396 39.5596 84.8896v1.61035c0 106.04 85.96 192 192 192h56l153.25 87.5703c9.66992 5.51953 20.6104 8.42969 31.75 8.42969h20.4902h0.0126953c14.6328 0 34.9033 -8.40039 45.2471 -18.75\nl13.25 -13.25h32zM512 400c-8.83984 0 -16 -7.16016 -16 -16s7.16016 -16 16 -16s16 7.16016 16 16s-7.16016 16 -16 16zM544 304c20.8301 0 38.4297 13.4199 45.0498 32h-77.0498l-118.57 -59.29l13.7705 -27.5498l101.84 54.8398h34.96z\" />\n    <glyph glyph-name=\"ring\" unicode=\"&#xf70b;\" \nd=\"M256 384c145.94 0 256 -61.9102 256 -144v-98.1299c0 -78.3506 -114.62 -141.87 -256 -141.87s-256 63.5195 -256 141.87v98.1299c0 82.0898 110.06 144 256 144zM256 320c-106.04 0 -192 -35.8203 -192 -80c0 -9.25977 3.96973 -18.1201 10.9102 -26.3896\nc44.9395 26.1797 108.859 42.3896 181.09 42.3896s136.15 -16.21 181.09 -42.3896c6.94043 8.26953 10.9102 17.1299 10.9102 26.3896c0 44.1797 -85.96 80 -192 80zM120.43 183.36c34.7305 -14.4307 82.6406 -23.3604 135.57 -23.3604s100.84 8.92969 135.57 23.3604\nc-34.6104 14.71 -81.21 24.6396 -135.57 24.6396s-100.96 -9.92969 -135.57 -24.6396z\" />\n    <glyph glyph-name=\"running\" unicode=\"&#xf70c;\" horiz-adv-x=\"416\" \nd=\"M272 352c-26.5098 0 -48 21.4902 -48 48s21.4902 48 48 48s48 -21.4902 48 -48s-21.4902 -48 -48 -48zM113.69 130.53c7.92969 -17.2402 20.6699 -32.3799 37.9893 -42.6104l10.6699 -6.2998l-8.79004 -20.5205c-7.5293 -17.6494 -24.8594 -29.0898 -44.1094 -29.0898\nh-77.4502c-17.6699 0 -32 14.3301 -32 32s14.3301 32 32 32h66.8896zM384 224.01c17.6699 0 32 -14.3193 32 -31.9902c0 -17.6699 -14.3301 -32 -32 -32h-53.9902c-18.1895 0 -35.1094 10.5508 -43.1094 26.8906l-20.2705 41.4297l-31.3096 -78.2803l61.2393 -36.1396\nc18.75 -11.3096 27.5508 -33.6201 21.6406 -54.3896l-31.6406 -101.061c-4.29004 -13.6797 -16.9092 -22.4502 -30.5195 -22.4502c-3.16992 0 -6.38965 0.480469 -9.58008 1.48047c-16.8604 5.28027 -26.25 23.2305 -20.9697 40.0898l27.4697 87.7305l-84.9795 50.1699\nc-27.6104 16.2998 -38.9209 50.8301 -26.3008 80.3096l37.46 87.3906l-14.6992 4.36914c-7.83008 1.86035 -17.6006 -0.25 -25.2705 -6.13965l-39.6895 -30.4102c-14.0205 -10.7402 -34.0908 -8.10938 -44.8604 5.91992c-10.7705 14.0303 -8.11035 34.1104 5.91992 44.8604\nl39.6699 30.4102c23.0703 17.6895 52.54 23.9395 80.8398 17.1396l71.0801 -21.1396c26.3301 -6.70996 49.2803 -25.3906 61.7803 -50.9404l26.0596 -53.25h44.0303z\" />\n    <glyph glyph-name=\"scroll\" unicode=\"&#xf70e;\" horiz-adv-x=\"640\" \nd=\"M48 448c26.4697 0 48 -21.5303 48 -48v-80h-80c-8.83984 0 -16 7.16016 -16 16v64c0 26.4697 21.5303 48 48 48zM256 35.4297c0 -31.8896 -21.7803 -61.4297 -53.25 -66.5498c-40.0996 -6.53027 -74.75 24.25 -74.75 63.1201v368c0 18.0801 -6.25977 34.5898 -16.4102 48\nh336.41c52.9404 0 96 -43.0596 96 -96v-256h-288v-60.5703zM288 64h336c8.83984 0 16 -7.16016 16 -16c0 -61.8604 -50.1396 -112 -112 -112h-336c52.9404 0 96 43.0703 96 96v32z\" />\n    <glyph glyph-name=\"skull-crossbones\" unicode=\"&#xf714;\" horiz-adv-x=\"448\" \nd=\"M439.15 -5.05957c7.89941 -3.9502 11.1094 -13.5605 7.15918 -21.4707l-14.3096 -28.6299c-3.95996 -7.89941 -13.5703 -11.0996 -21.4697 -7.14941l-186.53 90.7197l-186.52 -90.7197c-7.91016 -3.95996 -17.5205 -0.75 -21.4707 7.14941l-14.3096 28.6299\nc-3.95996 7.91016 -0.75 17.5205 7.14941 21.4707l141.98 69.0596l-141.99 69.0596c-7.89941 3.9502 -11.0996 13.5605 -7.14941 21.46l14.3096 28.6309c3.95996 7.90918 13.5703 11.1094 21.4697 7.15918l186.53 -90.7197l186.53 90.7197\nc7.91016 3.9502 17.5195 0.740234 21.4697 -7.15918l14.3096 -28.6309c3.95996 -7.89941 0.75 -17.5098 -7.14941 -21.46l-141.99 -69.0596zM150 210.72c-41.7803 22.4102 -70 62.75 -70 109.28c0 70.6904 64.4697 128 144 128s144 -57.3096 144 -128\nc0 -46.5303 -28.2197 -86.8701 -70 -109.28l5.5 -25.8701c2.66992 -12.6191 -5.41992 -24.8496 -16.4502 -24.8496h-126.08c-11.0293 0 -19.1201 12.2305 -16.4502 24.8496zM280 336c-17.6504 0 -32 -14.3496 -32 -32s14.3496 -32 32 -32s32 14.3496 32 32\ns-14.3496 32 -32 32zM168 336c-17.6504 0 -32 -14.3496 -32 -32s14.3496 -32 32 -32s32 14.3496 32 32s-14.3496 32 -32 32z\" />\n    <glyph glyph-name=\"slash\" unicode=\"&#xf715;\" horiz-adv-x=\"640\" \nd=\"M594.53 -60.6299l-588.351 454.729c-6.96973 5.41992 -8.22949 15.4707 -2.80957 22.4502l19.6396 25.2705c5.41992 6.97949 15.4805 8.23926 22.46 2.80957l588.351 -454.729c6.96973 -5.41992 8.22949 -15.4707 2.80957 -22.4502l-19.6396 -25.2705\nc-5.41992 -6.97949 -15.4805 -8.22949 -22.46 -2.80957z\" />\n    <glyph glyph-name=\"spider\" unicode=\"&#xf717;\" horiz-adv-x=\"576\" \nd=\"M151.17 280.65l-27.1504 54.2998c-1.86035 3.72949 -3.37109 10.1387 -3.37109 14.3066c0 2.86719 0.735352 7.40234 1.6416 10.123l25.8896 77.6797c2.79004 8.39062 11.8604 12.9209 20.2402 10.1201l15.1699 -5.05957\nc8.39062 -2.7998 12.9102 -11.8604 10.1201 -20.2402l-23.7998 -71.3896l20.29 -40.5801c-1.41016 -4.20996 -2.49023 -8.20996 -3.20996 -11.79l-5.2207 -26.1201h-4.66992zM573.31 98.6201c4.90039 -7.35059 2.9209 -17.2803 -4.43945 -22.1797l-13.3105 -8.88086\nc-7.34961 -4.89941 -17.29 -2.90918 -22.1895 4.44043l-48 72h-47.0605l60.8301 -97.3301c3.16992 -5.08008 4.86035 -10.96 4.86035 -16.96v-77.71c0 -8.83984 -7.16016 -16 -16 -16h-16c-8.83984 0 -16 7.16016 -16 16v73.1104l-74.0801 118.529\nc1 -14.0498 2.08008 -28.1094 2.08008 -42.21c0 -53.0693 -40.7598 -101.43 -96 -101.43s-96 48.3604 -96 101.43c0 14.1006 1.07031 28.1602 2.08008 42.21l-74.0801 -118.529v-73.1104c0 -8.83984 -7.16016 -16 -16 -16h-16c-8.83984 0 -16 7.16016 -16 16v77.7002\nv0.00976562c0 5.0625 2.17773 12.6562 4.86035 16.9502l60.8301 97.3301h-47.0605l-48 -72c-4.89941 -7.35059 -14.8398 -9.33984 -22.1895 -4.44043l-13.3105 8.87988c-7.36035 4.90039 -9.33984 14.8398 -4.43945 22.1904l52.7393 79.1299\nc5.24707 7.86426 17.1768 14.248 26.6299 14.25h77.9404l-68.9902 24.3496c-5.75 1.91895 -13.1465 7.56738 -16.5098 12.6104l-53.5996 80.4102c-4.90039 7.36035 -2.91016 17.29 4.43945 22.1895l13.3105 8.88086c7.35938 4.89941 17.29 2.90918 22.1895 -4.44043\nl50.5703 -75.8301l60.4902 -20.1699h36.0996l10.3701 51.8496c2.18945 10.9707 17.3701 60.1504 69.6299 60.1504s67.4404 -49.1797 69.6299 -60.1504l10.3701 -51.8496h36.0996l60.5 20.1699l50.5605 75.8301c4.89941 7.34961 14.8398 9.33984 22.1895 4.44043\nl13.3105 -8.88086c7.34961 -4.89941 9.33984 -14.8398 4.43945 -22.1895l-53.5996 -80.4102c-3.36328 -5.04297 -10.7598 -10.6914 -16.5098 -12.6104l-68.9902 -24.3594h77.9404c9.45117 -0.00195312 21.377 -6.38672 26.6191 -14.25zM406.09 350.49l-23.7998 71.3896\nc-2.79004 8.37988 1.74023 17.4404 10.1201 20.2402l15.1699 5.05957c8.37988 2.80078 17.4502 -1.73926 20.2402 -10.1201l25.8896 -77.6797c0.908203 -2.72168 1.64551 -7.25781 1.64551 -10.127c0 -4.16699 -1.5127 -10.5752 -3.375 -14.3027l-27.1504 -54.2998\nl-25.9297 -8.65039h-4.66992l-5.2207 26.1201c-0.719727 3.58008 -1.7998 7.58008 -3.20996 11.79z\" />\n    <glyph glyph-name=\"toilet-paper\" unicode=\"&#xf71e;\" horiz-adv-x=\"576\" \nd=\"M128 448h284.44c-36.7705 -38.4805 -60.4404 -108.4 -60.4404 -192v-172.07c0 -53.6494 -11.8799 -87.5693 -24.71 -126.05c-4.36035 -13.0703 -16.5898 -21.8799 -30.3604 -21.8799h-280.92c-10.9199 0 -18.6299 10.7002 -15.1797 21.0596\nc21.3701 64.1006 31.1699 85.75 31.1699 126.87v172.07c0 106.04 42.9805 192 96 192zM96 224c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16s-16 -7.16016 -16 -16s7.16016 -16 16 -16zM160 224c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16s-16 -7.16016 -16 -16\ns7.16016 -16 16 -16zM224 224c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16s-16 -7.16016 -16 -16s7.16016 -16 16 -16zM288 224c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16s-16 -7.16016 -16 -16s7.16016 -16 16 -16zM480 448c53.0195 0 96 -85.96 96 -192\ns-42.9805 -192 -96 -192s-96 85.96 -96 192s42.9805 192 96 192zM480 192c17.6699 0 32 28.6504 32 64s-14.3301 64 -32 64s-32 -28.6504 -32 -64s14.3301 -64 32 -64z\" />\n    <glyph glyph-name=\"tractor\" unicode=\"&#xf722;\" horiz-adv-x=\"640\" \nd=\"M528 112c48.5996 0 88 -39.4004 88 -88s-39.4004 -88 -88 -88s-88 39.4004 -88 88s39.4004 88 88 88zM528 0c13.2305 0 24 10.7695 24 24s-10.7695 24 -24 24s-24 -10.7695 -24 -24s10.7695 -24 24 -24zM608 288c17.6699 0 32 -14.3301 31.9902 -32v-50.7598\nc0 -8.49023 -3.37012 -16.6299 -9.37012 -22.6299l-50.8203 -50.8203c-15.7295 7.58984 -33.1602 12.2002 -51.7998 12.2002c-39.1396 0 -73.5498 -19.0098 -95.46 -48h-80.54v-6c0 -12.1504 -9.84961 -22 -22 -22h-7.16016\nc-2.9502 -9.90039 -6.91992 -19.46 -11.9102 -28.7207l5.06055 -5.05957c8.58984 -8.58984 8.58984 -22.5195 0 -31.1104l-31.1104 -31.1094c-8.58984 -8.58984 -22.5195 -8.58984 -31.1104 0l-5.05957 5.05957c-9.25977 -4.99023 -18.8203 -8.95996 -28.7197 -11.9102\nv-7.13965c0 -12.1504 -9.85059 -22 -22 -22h-44c-12.1504 0 -22 9.84961 -22 22v7.15039c-9.90039 2.94922 -19.46 6.91992 -28.7207 11.9092l-5.05957 -5.05957c-8.58984 -8.58984 -22.5195 -8.58984 -31.1104 0l-31.1094 31.1104\nc-8.58984 8.58984 -8.58984 22.5195 0 31.1094l5.05957 5.06055c-4.99023 9.26953 -8.9502 18.8193 -11.9102 28.7295h-7.13965c-12.1504 0 -22 9.85059 -22 22v44c0 12.1504 9.84961 22 22 22h7.15039c2.94922 9.90039 6.91992 19.46 11.9092 28.7207l-5.05957 5.05957\nc-8.58984 8.58984 -8.58984 22.5195 0 31.1104l31.1104 31.1094c7.92969 7.93066 20.2598 8.2002 28.8896 1.4707v146.52c0 26.4697 21.5303 48 48 48h133.45h0.046875c17.4834 0 37.2324 -13.0547 44.083 -29.1396l56.0898 -130.86h102.33v40.2002\nc0 29.9902 10.5801 58.8994 29.5 81.7197c6.37988 7.7002 18.04 8.23047 24.7002 0.780273l21.6299 -24.1699c4.87012 -5.43066 5.74023 -13.6904 1.32031 -19.4902c-8.4502 -11.0801 -13.1504 -24.7197 -13.1504 -38.8398v-40.2002h64zM176 32c44.1797 0 80 35.8203 80 80\ns-35.8203 80 -80 80s-80 -35.8203 -80 -80s35.8203 -80 80 -80zM198 288h110.04l-41.1504 96h-106.89v-96h38z\" />\n    <glyph glyph-name=\"user-injured\" unicode=\"&#xf728;\" horiz-adv-x=\"448\" \nd=\"M277.37 436.02l-90.6904 -68.0195h-81.1895c19.0098 46.8701 64.8193 80 118.51 80c19.1104 0 37.0801 -4.46973 53.3701 -11.9805zM342.51 368h-102.52l66.0293 49.5195c15.8203 -13.3193 28.5908 -30.0498 36.4902 -49.5195zM224 192c-70.6904 0 -128 57.3096 -128 128\nc0 5.48047 0.94043 10.7002 1.61035 16h252.779c0.660156 -5.2998 1.61035 -10.5195 1.61035 -16c0 -70.6904 -57.3096 -128 -128 -128zM80 148.3c7.92676 3.51758 21.2812 7.64844 29.8096 9.21973l98.4502 -221.52h-128.26v212.3zM0 -16v41.5996\nc0 41.1406 18.8799 77.5107 48 102.16v-191.76c-26.5098 0 -48 21.4902 -48 48zM256 32c26.4697 0 48 -21.5303 48 -48s-21.5303 -48 -48 -48h-12.71l-42.6699 96h55.3799zM313.6 160c74.2305 0 134.4 -60.1699 134.4 -134.4v-41.5996c0 -26.5098 -21.4902 -48 -48 -48\nh-80.4102c10.1504 13.4102 16.4102 29.9199 16.4102 48c0 44.1104 -35.8896 80 -80 80h-69.5898l-42.6699 96h7.37012c22.2393 -10.1797 46.8799 -16 72.8896 -16s50.6504 5.82031 72.8896 16h16.71z\" />\n    <glyph glyph-name=\"vr-cardboard\" unicode=\"&#xf729;\" horiz-adv-x=\"640\" \nd=\"M608 384c17.6699 0 32 -14.3301 32 -32v-320c0 -17.6699 -14.3301 -32 -32 -32h-160.22c-25.1807 0 -48.0303 14.7695 -58.3604 37.7402l-27.7402 61.6396c-7.88965 17.54 -24.0293 28.6201 -41.6797 28.6201s-33.79 -11.0801 -41.6797 -28.6201l-27.7402 -61.6396\nc-10.3301 -22.9707 -33.1699 -37.7402 -58.3604 -37.7402h-160.22c-17.6699 0 -32 14.3301 -32 32v320c0 17.6699 14.3301 32 32 32h576zM160 144c35.3496 0 64 28.6504 64 64s-28.6504 64 -64 64s-64 -28.6504 -64 -64s28.6504 -64 64 -64zM480 144\nc35.3496 0 64 28.6504 64 64s-28.6504 64 -64 64s-64 -28.6504 -64 -64s28.6504 -64 64 -64z\" />\n    <glyph glyph-name=\"wind\" unicode=\"&#xf72e;\" \nd=\"M156.7 192c48.7002 0 92.2998 -35 98.3994 -83.4004c7.5 -58.5 -38.0996 -108.6 -95.1992 -108.6c-46.6006 0 -85.6006 33.5 -94.2002 77.5996c-1.7998 9.60059 6.09961 18.4004 15.8994 18.4004h32.8008c6.59961 0 13.0996 -3.7998 15.1992 -10.0996\nc4.30078 -12.7002 16.3008 -21.9004 30.4004 -21.9004c19.5 0 34.9004 17.4004 31.5996 37.4004c-2.59961 15.6992 -17.5 26.5996 -33.3994 26.5996h-142.2c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h140.7zM16 224c-8.7998 0 -16 7.2002 -16 16v32\nc0 8.7998 7.2002 16 16 16h334.2c16 0 30.7998 10.9004 33.3994 26.5996c3.30078 20 -12.1992 37.4004 -31.5996 37.4004c-14.0996 0 -26.0996 -9.2002 -30.4004 -21.9004c-2.09961 -6.2998 -8.5 -10.0996 -15.1992 -10.0996h-32.8008\nc-9.69922 0 -17.6992 8.7002 -15.7998 18.2998c9.7998 50.6006 59.5 87.1006 114.9 75.5c36.2002 -7.59961 65.5 -36.8994 73.0996 -73.0996c13 -61.9004 -34.0996 -116.7 -93.7998 -116.7h-336zM400 192c70.5 0 126 -65.5 108.9 -138.7\nc-9.60059 -41.0996 -43.5 -74 -84.7002 -82.7002c-58.9004 -12.5 -111.601 21.7002 -129.4 72.3008c-3.7002 10.2998 4.40039 21.0996 15.2998 21.0996h33.8008c5.7998 0 11.5996 -2.59961 14.5 -7.59961c8.2998 -14.5 23.6992 -24.4004 41.5996 -24.4004\nc26.5 0 48 21.5 48 48s-21.5 48 -48 48h-116.5c-6.59961 25.2002 -20.5 47.4004 -39.7998 64h156.3z\" />\n    <glyph glyph-name=\"wine-bottle\" unicode=\"&#xf72f;\" \nd=\"M507.31 375.43c6.25 -6.25 6.25 -16.3799 0.0107422 -22.6201l-22.6299 -22.6299c-6.25 -6.25 -16.3809 -6.25 -22.6309 0l-76.6699 -76.6699c19.7002 -46.5801 10.7305 -102.41 -27.2295 -140.37l-158.391 -158.39c-24.9893 -24.9902 -65.5195 -24.9902 -90.5098 0\nl-90.5098 90.5098c-24.9902 24.9902 -24.9902 65.5205 0 90.5098l158.38 158.381c37.9697 37.96 93.79 46.9297 140.37 27.2295l76.6699 76.6699c-6.25 6.25 -6.25 16.3799 0 22.6299l22.6299 22.6299c6.25 6.25 16.3799 6.25 22.6299 0zM179.22 24.71l122.04 122.04\nl-90.5098 90.5098l-122.04 -122.04z\" />\n    <glyph glyph-name=\"cloud-meatball\" unicode=\"&#xf73b;\" \nd=\"M48 96c26.5 0 48 -21.5 48 -48s-21.5 -48 -48 -48s-48 21.5 -48 48s21.5 48 48 48zM464 96c26.5 0 48 -21.5 48 -48s-21.5 -48 -48 -48s-48 21.5 -48 48s21.5 48 48 48zM345 84.9004c13.5 -7 23 -20.7002 23 -36.9004s-9.5 -29.9004 -23 -36.9004\nc4.59961 -14.5 1.7002 -30.7998 -9.7998 -42.2998c-8.2002 -8.2002 -18.9004 -12.2998 -29.7002 -12.2998c-4.2998 0 -8.5 1.2002 -12.5996 2.5c-7 -13.5 -20.7002 -23 -36.9004 -23s-29.9004 9.5 -36.9004 23c-4.09961 -1.40039 -8.2998 -2.5 -12.5996 -2.5\nc-10.7998 0 -21.5 4.09961 -29.7002 12.2998c-11.5 11.5 -14.5 27.7998 -9.89941 42.2998c-13.5 7 -23 20.7002 -23 36.9004s9.5 29.9004 23 36.9004c-4.5 14.5 -1.60059 30.7998 9.89941 42.2998s27.7998 14.5 42.2998 9.89941c7 13.5 20.7002 23 36.9004 23\ns29.9004 -9.5 36.9004 -23c14.5 4.5 30.7998 1.60059 42.2998 -9.89941c11.3994 -11.5 14.3994 -27.7998 9.7998 -42.2998zM512 224c0 -53 -43 -96 -96 -96h-43.4004c-3.5 8 -8.39941 15.4004 -14.7998 21.7998c-13.5 13.5 -31.5 21.1006 -50.7998 21.2998\nc-13.5 13.2002 -31.7002 20.9004 -51 20.9004s-37.5 -7.7002 -51 -20.9004c-19.2998 -0.199219 -37.2998 -7.7998 -50.7998 -21.2998c-6.40039 -6.39941 -11.2002 -13.7998 -14.7998 -21.7998h-43.4004c-53 0 -96 43 -96 96c0 42.5 27.7998 78.2002 66.0996 90.7998\nc-1.2998 6.90039 -2.09961 13.9004 -2.09961 21.2002c0 61.9004 50.0996 112 112 112c43.2998 0 80.4004 -24.7998 99 -60.7998c14.7002 17.5 36.4004 28.7998 61 28.7998c44.2002 0 80 -35.7998 80 -80c0 -5.59961 -0.5 -11 -1.59961 -16.2002\nc0.5 0 1 0.200195 1.59961 0.200195c53 0 96 -43 96 -96z\" />\n    <glyph glyph-name=\"cloud-moon-rain\" unicode=\"&#xf73c;\" horiz-adv-x=\"576\" \nd=\"M350.5 222.5c37.2998 -6.7998 65.5 -39.2998 65.5 -78.5c0 -44.2002 -35.7998 -80 -80 -80h-256c-44.2002 0 -80 35.7998 -80 80c0 38.7998 27.5996 71.0996 64.2002 78.4004c0 0.5 -0.200195 1.09961 -0.200195 1.59961c0 53 43 96 96 96\nc32.0996 0 60.2998 -15.9004 77.7002 -40c10.3994 5 22 8 34.2998 8c39.2002 0 71.5996 -28.2998 78.5 -65.5zM567.9 224.2c6.19922 1.2002 10.5996 -6 6.39941 -10.7998c-27 -33.1006 -67.8994 -53.3008 -112.6 -53.3008c-5.2002 0 -10.1006 1 -15.2002 1.5\nc-6.2002 39.4004 -33.0996 72.5 -70.2002 86.8008c-10.7002 27.8994 -32.2002 49.7998 -58.8994 61.6992c3.2998 76.7002 66.5 137.9 144.399 137.9c8.90039 0 17.7998 -0.799805 26.5 -2.40039c6.2002 -1.09961 7.60059 -9.39941 2.10059 -12.5\nc-35.6006 -20.0996 -57.5 -57.5 -57.5 -98.0996c0 -70.5 64.5996 -124.1 135 -110.8zM364.5 29.9004c7.7002 -4.40039 10.2998 -14.1006 6 -21.8008l-36.5996 -64c-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961c-2.7002 0 -5.40039 0.700195 -7.90039 2.09961\nc-7.69922 4.40039 -10.3994 14.1006 -6 21.8008l36.6006 64c4.39941 7.7998 14.2002 10.2998 21.7998 6zM268.5 29.9004c7.7002 -4.40039 10.2998 -14.1006 6 -21.8008l-36.5996 -64c-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961\nc-2.7002 0 -5.40039 0.700195 -7.90039 2.09961c-7.69922 4.40039 -10.3994 14.1006 -6 21.8008l36.6006 64c4.39941 7.7998 14.2002 10.2998 21.7998 6zM172.5 29.9004c7.7002 -4.40039 10.2998 -14.1006 6 -21.8008l-36.5996 -64\nc-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961c-2.7002 0 -5.40039 0.700195 -7.90039 2.09961c-7.69922 4.40039 -10.3994 14.1006 -6 21.8008l36.6006 64c4.39941 7.7998 14.2002 10.2998 21.7998 6zM76.5 29.9004c7.7002 -4.40039 10.2998 -14.1006 6 -21.8008\nl-36.5996 -64c-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961c-2.7002 0 -5.40039 0.700195 -7.90039 2.09961c-7.69922 4.40039 -10.3994 14.1006 -6 21.8008l36.6006 64c4.39941 7.7998 14.2002 10.2998 21.7998 6z\" />\n    <glyph glyph-name=\"cloud-rain\" unicode=\"&#xf73d;\" \nd=\"M416 320c53 0 96 -43 96 -96s-43 -96 -96 -96h-320c-53 0 -96 43 -96 96c0 42.5 27.7998 78.2002 66.0996 90.7998c-1.2998 6.90039 -2.09961 13.9004 -2.09961 21.2002c0 61.9004 50.0996 112 112 112c43.2998 0 80.4004 -24.7998 99 -60.7998\nc14.7002 17.5 36.4004 28.7998 61 28.7998c44.2002 0 80 -35.7998 80 -80c0 -5.59961 -0.5 -11 -1.59961 -16.2002c0.5 0 1 0.200195 1.59961 0.200195zM88 73.7998c2.5 8.5 13.7998 8.10059 16 0c12.7998 -44.5996 40 -56.2998 40 -87.7002\nc0 -27.6992 -21.5 -50.0996 -48 -50.0996s-48 22.4004 -48 50.0996c0 31.3008 27.2002 43.3008 40 87.7002zM248 73.7998c2.5 8.5 13.7998 8.10059 16 0c12.7998 -44.5996 40 -56.2998 40 -87.7002c0 -27.6992 -21.5 -50.0996 -48 -50.0996s-48 22.4004 -48 50.0996\nc0 31.3008 27.2002 43.3008 40 87.7002zM408 73.7998c2.5 8.5 13.7998 8.10059 16 0c12.7998 -44.5996 40 -56.2998 40 -87.7002c0 -27.6992 -21.5 -50.0996 -48 -50.0996s-48 22.4004 -48 50.0996c0 31.3008 27.2002 43.3008 40 87.7002z\" />\n    <glyph glyph-name=\"cloud-showers-heavy\" unicode=\"&#xf740;\" \nd=\"M183.9 77.9004c7.69922 -4.40039 10.3994 -14.2002 6 -21.8008l-64 -112c-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961c-2.7002 0 -5.40039 0.700195 -7.90039 2.09961c-7.69922 4.30078 -10.3994 14.1006 -6 21.8008l64 112\nc4.40039 7.7998 14.2002 10.3994 21.8008 6zM279.9 77.9004c7.69922 -4.40039 10.3994 -14.2002 6 -21.8008l-64 -112c-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961c-2.7002 0 -5.40039 0.700195 -7.90039 2.09961c-7.69922 4.30078 -10.3994 14.1006 -6 21.8008\nl64 112c4.40039 7.7998 14.2002 10.3994 21.8008 6zM87.9004 77.9004c7.69922 -4.40039 10.3994 -14.2002 6 -21.8008l-64 -112c-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961c-2.7002 0 -5.40039 0.700195 -7.90039 2.09961\nc-7.69922 4.30078 -10.3994 14.1006 -6 21.8008l64 112c4.40039 7.7998 14.2002 10.3994 21.8008 6zM471.9 77.9004c7.69922 -4.40039 10.3994 -14.2002 6 -21.8008l-64 -112c-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961\nc-2.7002 0 -5.40039 0.700195 -7.90039 2.09961c-7.69922 4.30078 -10.3994 14.1006 -6 21.8008l64 112c4.40039 7.7998 14.2002 10.3994 21.8008 6zM375.9 77.9004c7.69922 -4.40039 10.3994 -14.2002 6 -21.8008l-64 -112\nc-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961c-2.7002 0 -5.40039 0.700195 -7.90039 2.09961c-7.69922 4.30078 -10.3994 14.1006 -6 21.8008l64 112c4.40039 7.7998 14.2002 10.3994 21.8008 6zM416 320c53 0 96 -43 96 -96s-43 -96 -96 -96h-320\nc-53 0 -96 43 -96 96c0 42.5 27.7998 78.2002 66.0996 90.7998c-1.2998 6.90039 -2.09961 13.9004 -2.09961 21.2002c0 61.9004 50.2002 112 112 112c43.2998 0 80.4004 -24.7998 99 -60.7998c14.7002 17.5 36.4004 28.7998 61 28.7998c44.2002 0 80 -35.7998 80 -80\nc0 -5.59961 -0.5 -11 -1.59961 -16.2002c0.5 0 1 0.200195 1.59961 0.200195z\" />\n    <glyph glyph-name=\"cloud-sun-rain\" unicode=\"&#xf743;\" horiz-adv-x=\"576\" \nd=\"M510.5 222.5c37.2998 -6.7998 65.5 -39.2998 65.5 -78.5c0 -44.2002 -35.7998 -80 -80 -80h-256c-44.2002 0 -80 35.7998 -80 80c0 38.7998 27.5996 71 64.2002 78.4004c0 0.5 -0.200195 1.09961 -0.200195 1.59961c0 53 43 96 96 96\nc32.0996 0 60.2998 -15.9004 77.7002 -40c10.3994 5 22 8 34.2998 8c39.2002 0 71.5996 -28.2998 78.5 -65.5zM124.1 188.1c3.10059 -3.09961 6.60059 -5.59961 10.2002 -8.2998c-3.89941 -11.3994 -6.2002 -23.3994 -6.2002 -35.8994c0 -2.5 0.5 -4.80078 0.700195 -7.2002\nl-59.2002 -19.7002c-10.1992 -3.2998 -19.8994 6.2998 -16.5 16.5l25.1006 75.2998l-71 35.5c-9.60059 4.7998 -9.60059 18.5 0 23.2998l71 35.5l-25.1006 75.3008c-3.39941 10.1992 6.2002 19.8994 16.4004 16.5l75.2998 -25.1006l35.5 71\nc4.7998 9.60059 18.5 9.60059 23.2998 0l35.5 -71l75.3008 25.1006c10.1992 3.39941 19.8994 -6.2002 16.5 -16.4004l-8.90039 -26.7002c-0.700195 0 -1.2998 0.200195 -2 0.200195c-25.5996 0 -49.2002 -7.7998 -69.2002 -20.7002\nc-37.5996 29.4004 -92.0996 27.2002 -126.7 -7.39941c-37.3994 -37.5 -37.3994 -98.4004 0 -135.801zM193.9 246.1c-18.2002 -8.2998 -33.5 -21.2998 -44.8008 -37.1992c-12.8994 11.6992 -21.0996 28.3994 -21.0996 47.0996c0 35.2998 28.7002 64 64 64\nc12.4004 0 24 -3.7002 33.7998 -9.90039c-16.0996 -17.5996 -27.5996 -39.5 -31.8994 -64zM524.5 29.9004c7.7002 -4.40039 10.2998 -14.1006 6 -21.8008l-36.5996 -64c-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961c-2.7002 0 -5.40039 0.700195 -7.90039 2.09961\nc-7.69922 4.40039 -10.3994 14.1006 -6 21.8008l36.6006 64c4.39941 7.7998 14.2002 10.2998 21.7998 6zM428.5 29.9004c7.7002 -4.40039 10.2998 -14.1006 6 -21.8008l-36.5996 -64c-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961\nc-2.7002 0 -5.40039 0.700195 -7.90039 2.09961c-7.69922 4.40039 -10.3994 14.1006 -6 21.8008l36.6006 64c4.39941 7.7998 14.2002 10.2998 21.7998 6zM332.5 29.9004c7.7002 -4.40039 10.2998 -14.1006 6 -21.8008l-36.5996 -64\nc-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961c-2.7002 0 -5.40039 0.700195 -7.90039 2.09961c-7.69922 4.40039 -10.3994 14.1006 -6 21.8008l36.6006 64c4.39941 7.7998 14.2002 10.2998 21.7998 6zM236.5 29.9004c7.7002 -4.40039 10.2998 -14.1006 6 -21.8008\nl-36.5996 -64c-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961c-2.7002 0 -5.40039 0.700195 -7.90039 2.09961c-7.69922 4.40039 -10.3994 14.1006 -6 21.8008l36.6006 64c4.39941 7.7998 14.2002 10.2998 21.7998 6z\" />\n    <glyph glyph-name=\"democrat\" unicode=\"&#xf747;\" horiz-adv-x=\"640\" \nd=\"M637.3 191.1c4.90039 -7.39941 2.90039 -17.2998 -4.39941 -22.2998l-26.6006 -17.7002c-7.39941 -4.89941 -17.2998 -3 -22.2002 4.40039c-21.7998 32.7002 -23.8994 38.0996 -40.0996 50.2998v-77.7998h-352l-54 108l-38.0996 -34.5996\nc-6 -6 -14.1006 -9.40039 -22.6006 -9.40039h-31c-12.0996 0 -23.2002 6.90039 -28.5996 17.7002l-14.2998 28.5996c-5.40039 10.7998 -4.30078 23.7998 3 33.5l74.5996 99.2998c1.7002 2.30078 4.2002 3.7002 6.40039 5.40039c-4 2.2002 -8 4.2002 -11.3008 7.5\nc-16.3994 16.4004 -18.3994 41.7998 -6.09961 60.4004c2.7998 4.19922 8.7998 4.7998 12.4004 1.19922l42.8994 -42.7998l41.7998 41.7998c4.40039 4.40039 11.8008 3.7002 15.2002 -1.5c15.1006 -22.7998 12.6006 -53.7998 -7.5 -73.8994l81.2002 -81.2002h235.6\nc50.8008 0 97.9004 -25.2002 126.101 -67.5zM296.2 204.7c3 2.89941 1.39941 7.89941 -2.60059 8.5l-22.7998 3.2998l-10.2002 20.7002c-1.89941 3.7002 -7.19922 3.7002 -9 0l-10.1992 -20.7002l-22.8008 -3.2998c-4.09961 -0.600586 -5.7998 -5.60059 -2.7998 -8.5\nl16.5 -16.1006l-3.89941 -22.6992c-0.700195 -4.10059 3.59961 -7.2002 7.19922 -5.30078l20.4004 10.7002l20.4004 -10.7002c3.59961 -1.89941 7.89941 1.2002 7.19922 5.30078l-3.89941 22.6992zM408.2 204.7c3 2.89941 1.39941 7.89941 -2.60059 8.5l-22.7998 3.2998\nl-10.2002 20.7002c-1.89941 3.7002 -7.19922 3.7002 -9 0l-10.1992 -20.7002l-22.8008 -3.2998c-4.09961 -0.600586 -5.7998 -5.60059 -2.7998 -8.5l16.5 -16.1006l-3.89941 -22.6992c-0.700195 -4.10059 3.59961 -7.2002 7.19922 -5.30078l20.4004 10.7002\nl20.4004 -10.7002c3.59961 -1.89941 7.89941 1.2002 7.19922 5.30078l-3.89941 22.6992zM520.2 204.7c3 2.89941 1.39941 7.89941 -2.60059 8.5l-22.7998 3.2998l-10.2002 20.7002c-1.89941 3.7002 -7.19922 3.7002 -9 0l-10.1992 -20.7002l-22.8008 -3.2998\nc-4.09961 -0.600586 -5.7998 -5.60059 -2.7998 -8.5l16.5 -16.1006l-3.89941 -22.6992c-0.700195 -4.10059 3.59961 -7.2002 7.19922 -5.30078l20.4004 10.7002l20.4004 -10.7002c3.59961 -1.89941 7.89941 1.2002 7.19922 5.30078l-3.89941 22.6992zM192 -48v144h352v-144\nc0 -8.7998 -7.2002 -16 -16 -16h-64c-8.7998 0 -16 7.2002 -16 16v80h-160v-80c0 -8.7998 -7.2002 -16 -16 -16h-64c-8.7998 0 -16 7.2002 -16 16z\" />\n    <glyph glyph-name=\"flag-usa\" unicode=\"&#xf74d;\" \nd=\"M32 448c17.7002 0 32 -14.2998 32 -32v-464c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v464c0 17.7002 14.2998 32 32 32zM299.9 144.4c31.0996 -8.2002 62.5996 -16.5 100 -16.6006c31.8994 0 68.5 6.7998 112.1 24.1006v-36\nc0 -12.3008 -7.09961 -23.8008 -18.5 -28.8008c-175.8 -76.3994 -211.8 69.1006 -397.5 -23.0996v69.2998c92.2002 39.9004 146.7 26.2002 203.9 11.1006zM299.9 240.4c31.0996 -8.2002 62.5996 -16.5 100 -16.5c31.8994 0 68.5 6.7998 112.1 24.0996v-61.5\nc-92.2002 -39.9004 -146.7 -26.2002 -203.9 -11.0996c-57.5 15.0996 -117.3 30 -212.1 -7.60059v61.5c92.2002 39.9004 146.7 26.2002 203.9 11.1006zM309.4 366.3c-7 2.10059 -14.1006 4.2002 -21.3008 6.2002v-33.2002c4 -1.09961 8.10059 -2.2998 12.1006 -3.5\nc26.7002 -8.09961 52.8994 -15.8994 85.7002 -15.8994c32.7998 0 72.5 7.89941 126.1 31.3994v-68.8994c-92.2002 -39.8008 -146.7 -26.1006 -203.9 -11.1006c-57.5 15.1006 -117.3 29.9004 -212.1 -7.59961v151.899c209.4 94.6006 195.3 -59.0996 366.6 28.2002\nc22.6006 11.5 49.4004 -1.5 49.4004 -26.5996v-30.7998c-105.2 -49.1006 -150.8 -35.7002 -202.6 -20.1006zM160 319.9c8.7998 0 16 7.09961 16 16c0 8.89941 -7.2002 16 -16 16s-16 -7.2002 -16 -16c0 -8.90039 7.2002 -16 16 -16zM160 375.7c8.7998 0 16 7.2002 16 16\nc0 8.89941 -7.2002 16 -16 16s-16 -7.2002 -16 -16c0 -8.90039 7.2002 -16 16 -16zM224 327.8c8.7998 0 16 7.2002 16 16c0 8.90039 -7.2002 16 -16 16s-16 -7.2002 -16 -16c0 -8.89941 7.2002 -16 16 -16zM224 383.7c8.7998 0 16 7.2002 16 16c0 8.89941 -7.2002 16 -16 16\ns-16 -7.2002 -16 -16c0 -8.90039 7.2002 -16 16 -16z\" />\n    <glyph glyph-name=\"meteor\" unicode=\"&#xf753;\" \nd=\"M491.2 447.3c12.3994 3.7002 23.7998 -7.7002 20.2002 -20.0996c-11.6006 -38.7002 -34.3008 -111.7 -61.3008 -187.7c7 -2.09961 13.4004 -4 18.6006 -5.59961c9.7002 -3 14.2002 -13.9004 9.5 -22.9004c-22.1006 -42.2998 -82.7002 -152.8 -142.5 -214.4\nc-1 -1.09961 -2 -2.5 -3 -3.5c-38.1006 -38.0996 -88 -57.0996 -137.9 -57.0996c-49.8994 -0.0996094 -99.7998 19 -137.8 57c-38 38.0996 -57 88 -57 137.8c0 49.9004 19 99.7998 57.0996 137.8c1 1 2.40039 2 3.5 3c61.6006 59.9004 172 120.4 214.4 142.5\nc9 4.7002 19.9004 0.200195 22.9004 -9.5c1.59961 -5.09961 3.5 -11.5996 5.59961 -18.5996c75.9004 27 149 49.7002 187.7 61.2998zM192 0c70.7002 0 128 57.2998 128 128s-57.2998 128 -128 128s-128 -57.2998 -128 -128s57.2998 -128 128 -128zM160 192\nc17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32zM208 96c8.7998 0 16 -7.2002 16 -16s-7.2002 -16 -16 -16s-16 7.2002 -16 16s7.2002 16 16 16z\" />\n    <glyph glyph-name=\"person-booth\" unicode=\"&#xf756;\" horiz-adv-x=\"576\" \nd=\"M192 -48v176h64v-176c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16zM224 224c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32h-57.5c-12.7998 0 -24.7998 5 -33.9004 14.0996l-20.8994 20.9004v-80.5996l41.2002 -61.3008\nc4.39941 -8.7998 6.69922 -18.6992 6.69922 -28.5996v-56.5c0 -17.7002 -14.2998 -32 -32 -32c-17.6992 0 -32 14.2998 -32 32v56l-29.0996 43c-0.900391 0.400391 -1.59961 1.2002 -2.5 1.7002l-0.0996094 -100.7c0 -17.7002 -14.4004 -32 -32 -32\nc-17.6006 0 -31.9004 14.2998 -31.9004 32l0.200195 160l-0.200195 95.9004c0 17.0996 6.7002 33.1992 18.7002 45.2998c12.0996 12.0996 28.2002 18.7998 45.2998 18.7998h18.7002c17 0 33.0996 -6.59961 45.2002 -18.7002l45.1992 -45.2998h50.9004zM64 320\nc-26.5 0 -48 21.5 -48 48s21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48zM288 416v32h192v-416c0 -17.7002 -14.2998 -32 -32 -32s-32 14.2998 -32 32c0 -17.7002 -14.2998 -32 -32 -32c-17.0996 0 -30.7998 13.5 -31.7002 30.4004\nc-4.2998 -21.3008 -17.0996 -30.4004 -32.2998 -30.4004c-18.4004 0 -35.7002 16.7002 -31.4004 38.2998l30.9004 154.601zM192 416c0 17.7002 14.2998 32 32 32h32v-192h-64v160zM544 448c17.7002 0 32 -14.2998 32 -32v-464c0 -8.7998 -7.2002 -16 -16 -16h-32\nc-8.7998 0 -16 7.2002 -16 16v496h32z\" />\n    <glyph glyph-name=\"poo-storm\" unicode=\"&#xf75a;\" horiz-adv-x=\"448\" \nd=\"M308 112c9.2002 0 15 -10 10.4004 -18l-88 -152c-2.2002 -3.7998 -6.2002 -6 -10.4004 -6c-7.7002 0 -13.5 7.2002 -11.7002 14.7998l23 97.2002h-59.2998c-7.2998 0 -12.9004 6.40039 -11.9004 13.5996l16 120c0.800781 5.90039 5.90039 10.4004 11.9004 10.4004h68\nc7.90039 0 13.5996 -7.5 11.5996 -15.0996l-17.2998 -64.9004h57.7002zM374.4 223.3c41 -3.2998 73.5996 -37.5 73.5 -79.2998c0 -44 -36 -80 -80 -80h-30l8.09961 14c7.7998 13.5 7.7998 30.4004 0 44s-22.4004 22 -38.0996 22h-16l6.59961 24.7002\nc3.59961 13.2998 0.799805 27.2002 -7.59961 38.0996c-8.40039 10.9004 -21.1006 17.2002 -34.9004 17.2002h-68c-22 0 -40.7002 -16.4004 -43.7002 -38.2002l-16 -120c0 -0.599609 0.100586 -1.2002 0 -1.7998h-48.2998c-44 0 -80 36 -80 80\nc0 41.7998 32.5996 76 73.5996 79.2998c-5.89941 9.60059 -9.59961 20.6006 -9.59961 32.7002c0 35.2998 28.7002 64 64 64h16c44.2002 0 80 35.7998 80 80c0 17.4004 -5.7002 33.4004 -15.0996 46.5c4.89941 0.799805 9.89941 1.5 15.0996 1.5c53 0 96 -43 96 -96\nc0 -11.2998 -2.2998 -21.9004 -5.90039 -32h5.90039c35.2998 0 64 -28.7002 64 -64c0 -12.0996 -3.7002 -23.0996 -9.59961 -32.7002z\" />\n    <glyph glyph-name=\"rainbow\" unicode=\"&#xf75b;\" horiz-adv-x=\"576\" \nd=\"M268.3 415.3c167.7 11.2998 307.7 -122 307.7 -287.3v-144c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v136.2c0 113.8 -81.5996 215.399 -194.5 229.899c-136.6 17.6006 -253.5 -88.8994 -253.5 -222.1v-144c0 -8.7998 -7.2002 -16 -16 -16h-32\nc-8.7998 0 -16 7.2002 -16 16v133.8c0 153.3 115.4 287.3 268.3 297.5zM262.7 318.4c117.1 15 217.3 -76.2002 217.3 -190.4v-144c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v138.3c0 66.9004 -48.7002 126.601 -115.2 133.101\nc-76.2998 7.39941 -140.8 -52.6006 -140.8 -127.4v-144c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v137.3c0 97.6006 70 184.7 166.7 197.101zM268.9 222.1c61.2998 11.9004 115.1 -34.8994 115.1 -94.0996v-144c0 -8.7998 -7.2002 -16 -16 -16h-32\nc-8.7998 0 -16 7.2002 -16 16v144c0 17.5996 -14.2998 32 -32 32s-32 -14.4004 -32 -32v-144c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v140.2c0 46.3994 31.2998 89 76.9004 97.8994z\" />\n    <glyph glyph-name=\"republican\" unicode=\"&#xf75e;\" horiz-adv-x=\"640\" \nd=\"M544 256v-64h-544v64c0 88.4004 71.5996 160 160 160h224c88.4004 0 160 -71.5996 160 -160zM176.3 277.6c3.5 3.5 1.60059 9.5 -3.39941 10.2002l-27.4004 4l-12.2002 24.7998c-2.09961 4.40039 -8.5 4.5 -10.7002 0l-12.1992 -24.7998l-27.4004 -4\nc-4.90039 -0.700195 -6.90039 -6.7002 -3.2998 -10.2002l19.7998 -19.2998l-4.7002 -27.2998c-0.799805 -4.90039 4.40039 -8.59961 8.7002 -6.2998l24.5 12.8994l24.5 -12.8994c4.40039 -2.2998 9.5 1.39941 8.7002 6.2998l-4.7002 27.2998zM320.3 277.6\nc3.5 3.5 1.60059 9.5 -3.39941 10.2002l-27.4004 4l-12.2002 24.7998c-2.09961 4.40039 -8.5 4.5 -10.7002 0l-12.1992 -24.7998l-27.4004 -4c-4.90039 -0.700195 -6.90039 -6.7002 -3.2998 -10.2002l19.7998 -19.2998l-4.7002 -27.2998\nc-0.799805 -4.90039 4.40039 -8.59961 8.7002 -6.2998l24.5 12.8994l24.5 -12.8994c4.40039 -2.2998 9.5 1.39941 8.7002 6.2998l-4.7002 27.2998zM464.3 277.6c3.5 3.5 1.60059 9.5 -3.39941 10.2002l-27.4004 4l-12.2002 24.7998c-2.09961 4.40039 -8.5 4.5 -10.7002 0\nl-12.1992 -24.7998l-27.4004 -4c-4.90039 -0.700195 -6.90039 -6.7002 -3.2998 -10.2002l19.7998 -19.2998l-4.7002 -27.2998c-0.799805 -4.90039 4.40039 -8.59961 8.7002 -6.2998l24.5 12.8994l24.5 -12.8994c4.40039 -2.2998 9.5 1.39941 8.7002 6.2998l-4.7002 27.2998z\nM624 128c8.7998 0 16 -7.2002 16 -16v-64c0 -46.9004 -40.5996 -84.5 -88.4004 -79.5996c-41.5996 4.19922 -71.5996 42.5 -71.5996 84.2998v43.2998h-32v-112c0 -8.7998 -7.2002 -16 -16 -16h-96c-8.7998 0 -16 7.2002 -16 16v80h-192v-80c0 -8.7998 -7.2002 -16 -16 -16\nh-96c-8.7998 0 -16 7.2002 -16 16v176h544v-112c0 -8.7998 7.2002 -16 16 -16s16 7.2002 16 16v64c0 8.7998 7.2002 16 16 16h32z\" />\n    <glyph glyph-name=\"smog\" unicode=\"&#xf75f;\" horiz-adv-x=\"640\" \nd=\"M624 80c8.7998 0 16 -7.2002 16 -16v-16c0 -8.7998 -7.2002 -16 -16 -16h-544c-8.7998 0 -16 7.2002 -16 16v16c0 8.7998 7.2002 16 16 16h544zM144 -16c8.7998 0 16 -7.2002 16 -16v-16c0 -8.7998 -7.2002 -16 -16 -16h-128c-8.7998 0 -16 7.2002 -16 16v16\nc0 8.7998 7.2002 16 16 16h128zM560 -16c8.7998 0 16 -7.2002 16 -16v-16c0 -8.7998 -7.2002 -16 -16 -16h-336c-8.7998 0 -16 7.2002 -16 16v16c0 8.7998 7.2002 16 16 16h336zM144 160c-79.5 0 -144 64.5 -144 144s64.5 144 144 144c41 0 77.7998 -17.2998 104 -44.7998\nc26.2002 27.5 63 44.7998 104 44.7998c54.7998 0 102 -31 126.3 -76.0996c15 7.5 31.7002 12.0996 49.7002 12.0996c61.9004 0 112 -50.0996 112 -112s-50.0996 -112 -112 -112h-60.0996c-22.6006 -19.7002 -51.6006 -32 -83.9004 -32s-61.4004 12.2998 -83.9004 32h-156.1z\n\" />\n    <glyph glyph-name=\"temperature-high\" unicode=\"&#xf769;\" \nd=\"M416 448c52.9004 0 96 -43.0996 96 -96s-43.0996 -96 -96 -96s-96 43.0996 -96 96s43.0996 96 96 96zM416 320c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM256 336v-166.5c19.7002 -24.5996 32 -55.5 32 -89.5\nc0 -79.5 -64.5 -144 -144 -144s-144 64.5 -144 144c0 34 12.2998 64.7998 32 89.5v166.5c0 61.9004 50.0996 112 112 112s112 -50.0996 112 -112zM144 0c44.0996 0 80 35.9004 80 80c0 25.5 -12.2002 49 -32 63.7998v192.2c0 26.5 -21.5 48 -48 48s-48 -21.5 -48 -48v-192.2\nc-19.7998 -14.8994 -32 -38.2998 -32 -63.7998c0 -44.0996 35.9004 -80 80 -80zM160 125.1c18.5996 -6.59961 32 -24.1992 32 -45.0996c0 -26.5 -21.5 -48 -48 -48s-48 21.5 -48 48c0 20.9004 13.4004 38.5 32 45.0996v210.9c0 8.7998 7.2002 16 16 16s16 -7.2002 16 -16\nv-210.9z\" />\n    <glyph glyph-name=\"temperature-low\" unicode=\"&#xf76b;\" \nd=\"M416 448c52.9004 0 96 -43.0996 96 -96s-43.0996 -96 -96 -96s-96 43.0996 -96 96s43.0996 96 96 96zM416 320c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM256 336v-166.5c19.7002 -24.5996 32 -55.5 32 -89.5\nc0 -79.5 -64.5 -144 -144 -144s-144 64.5 -144 144c0 34 12.2998 64.7998 32 89.5v166.5c0 61.9004 50.0996 112 112 112s112 -50.0996 112 -112zM144 0c44.0996 0 80 35.9004 80 80c0 25.5 -12.2002 49 -32 63.7998v192.2c0 26.5 -21.5 48 -48 48s-48 -21.5 -48 -48v-192.2\nc-19.7998 -14.8994 -32 -38.2998 -32 -63.7998c0 -44.0996 35.9004 -80 80 -80zM160 125.1c18.5996 -6.59961 32 -24.1992 32 -45.0996c0 -26.5 -21.5 -48 -48 -48s-48 21.5 -48 48c0 20.9004 13.4004 38.5 32 45.0996v18.9004c0 8.7998 7.2002 16 16 16s16 -7.2002 16 -16\nv-18.9004z\" />\n    <glyph glyph-name=\"vote-yea\" unicode=\"&#xf772;\" horiz-adv-x=\"640\" \nd=\"M608 128c17.7002 0 32 -14.2998 32 -32v-96c0 -17.7002 -14.2998 -32 -32 -32h-576c-17.7002 0 -32 14.2998 -32 32v96c0 17.7002 14.2998 32 32 32h64v-64h-22.4004c-5.2998 0 -9.59961 -3.59961 -9.59961 -8v-16c0 -4.40039 4.2998 -8 9.59961 -8h492.801\nc5.2998 0 9.59961 3.59961 9.59961 8v16c0 4.40039 -4.2998 8 -9.59961 8h-22.4004v64h64zM512 64h-384v319.7c0 17.7998 14.5 32.2998 32.4004 32.2998h319.3c17.7998 0 32.2998 -14.4004 32.2998 -32.2998v-319.7zM211.2 246c-4.2002 -4.2002 -4.2998 -11 0 -15.2002\nl74.0996 -74.7002c4.2002 -4.2998 11 -4.2998 15.2002 -0.0996094l128.3 127.2c4.2998 4.2002 4.2998 11 0.100586 15.2002l-25.3008 25.5c-4.19922 4.2998 -11 4.2998 -15.1992 0.0996094l-95.2002 -94.4004l-41.2998 41.6006\nc-4.2002 4.2998 -11 4.2998 -15.2002 0.0996094z\" />\n    <glyph glyph-name=\"water\" unicode=\"&#xf773;\" horiz-adv-x=\"576\" \nd=\"M562.1 64.0996c8.10059 -0.899414 13.9004 -8.2998 13.8008 -16.2998v-31.5996c0 -9.10059 -7.60059 -16.7998 -16.7002 -16c-28.2002 2.5 -55.7998 11.5996 -79.1006 25.7998c-55 -34.0996 -135.5 -34.5996 -192 0c-55 -34.0996 -135.5 -34.5996 -192 0\nc-23.2998 -14.5 -50.5996 -23.4004 -79.3994 -25.9004c-9.10059 -0.799805 -16.7002 6.90039 -16.7002 16v32.2002c0 7.90039 5.7002 14.9004 13.5996 15.7002c21.7002 2.2998 42.2002 10.2002 57.7002 22.4004c13.7998 10.8994 33.6006 13.1992 47.1006 2\nc38.2998 -31.7002 107.199 -31.8008 145.199 -1.7002c13.7002 10.8994 33.2002 13 46.7002 1.7998c38.5 -31.9004 107.8 -31.9004 145.7 -1.5c14 11.2998 34.0996 11.0996 48.2002 0c15.7998 -12.4004 36.3994 -20.5 57.8994 -22.9004zM562.1 208.1\nc8.10059 -0.899414 13.9004 -8.2998 13.8008 -16.2998v-31.5996c0 -9.10059 -7.60059 -16.7998 -16.7002 -16c-28.2002 2.5 -55.7998 11.5996 -79.1006 25.7998c-55 -34.0996 -135.5 -34.5996 -192 0c-55 -34.0996 -135.5 -34.5996 -192 0\nc-23.2998 -14.5 -50.5996 -23.4004 -79.3994 -25.9004c-9.10059 -0.799805 -16.7002 6.90039 -16.7002 16v32.2002c0 7.90039 5.7002 14.9004 13.5996 15.7002c21.7002 2.2998 42.2002 10.2002 57.7002 22.4004c13.7998 10.8994 33.6006 13.1992 47.1006 2\nc38.2998 -31.7002 107.199 -31.8008 145.199 -1.7002c13.7002 10.8994 33.2002 13 46.7002 1.7998c38.5 -31.9004 107.8 -31.9004 145.7 -1.5c14 11.2998 34.0996 11.0996 48.2002 0c15.7998 -12.4004 36.3994 -20.5 57.8994 -22.9004zM562.1 352.1\nc8.10059 -0.899414 13.9004 -8.2998 13.8008 -16.2998v-31.5996c0 -9.10059 -7.60059 -16.7998 -16.7002 -16c-28.2002 2.5 -55.7998 11.5996 -79.1006 25.7998c-55 -34.0996 -135.5 -34.5996 -192 0c-55 -34.0996 -135.5 -34.5996 -192 0\nc-23.2998 -14.5 -50.5996 -23.4004 -79.3994 -25.9004c-9.10059 -0.799805 -16.7002 6.90039 -16.7002 16v32.2002c0 7.90039 5.7002 14.9004 13.5996 15.7002c21.7002 2.2998 42.2002 10.2002 57.7002 22.4004c13.7998 10.8994 33.6006 13.1992 47.1006 2\nc38.2998 -31.7002 107.199 -31.8008 145.199 -1.7002c13.7002 10.8994 33.2002 13 46.7002 1.7998c38.5 -31.9004 107.8 -31.9004 145.7 -1.5c14 11.2998 34.0996 11.0996 48.2002 0c15.7998 -12.4004 36.3994 -20.4004 57.8994 -22.9004z\" />\n    <glyph glyph-name=\"baby\" unicode=\"&#xf77c;\" horiz-adv-x=\"384\" \nd=\"M192 288c-44.2002 0 -80 35.7998 -80 80s35.7998 80 80 80s80 -35.7998 80 -80s-35.7998 -80 -80 -80zM138.6 39.2002l29.4004 -39.2002c13.2002 -17.7002 9.7002 -42.7998 -8 -56c-7.2002 -5.40039 -15.7002 -8 -24 -8c-12.0996 0 -24.0996 5.5 -32 16l-48 64\nc-10.9004 14.5996 -10.5996 34.7998 0.799805 49l45.9004 57.4004l61.5 -51.2002zM281.3 122.4l45.9004 -57.4004c11.3994 -14.2002 11.7002 -34.4004 0.799805 -49l-48 -64c-7.7998 -10.5 -19.7998 -16 -32 -16c-8.40039 0 -16.7998 2.59961 -24 8\nc-17.7002 13.2002 -21.2002 38.2998 -8 56l29.4004 39.2002l-25.6006 32zM376.7 303c12.7002 -18.0996 8.39941 -43 -9.7002 -55.7998l-40.5996 -28.5c-17 -11.9004 -35.4004 -20.9004 -54.4004 -27.9004v-30.7998h-160v30.9004c-19 7 -37.4004 16 -54.4004 27.8994\nl-40.5996 28.5c-18 12.7002 -22.4004 37.6006 -9.7002 55.7002c12.7002 18 37.6006 22.4004 55.7002 9.7002l40.5996 -28.4004c52.6006 -37 124.101 -37 176.801 0l40.5996 28.5c18.0996 12.6006 43 8.2998 55.7002 -9.7998z\" />\n    <glyph glyph-name=\"baby-carriage\" unicode=\"&#xf77d;\" \nd=\"M144.8 431l111.2 -175h-256c0 74 35.2998 140.1 90.7998 184.4c16.7998 13.3994 42.7002 8.39941 54 -9.40039zM496 352c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-48v-64c0 -50.5996 -23 -96.4004 -60.2998 -130.7\nc34.5996 -8.89941 60.2998 -40 60.2998 -77.2998c0 -44.2002 -35.7998 -80 -80 -80s-80 35.7998 -80 80c0 8.90039 1.7002 17.2002 4.40039 25.2002c-21.5 -5.90039 -44.6006 -9.2002 -68.4004 -9.2002s-46.7998 3.2998 -68.4004 9.2002\nc2.60059 -8 4.40039 -16.2998 4.40039 -25.2002c0 -44.2002 -35.7998 -80 -80 -80s-80 35.7998 -80 80c0 37.2998 25.7002 68.4004 60.2998 77.2998c-37.2998 34.2998 -60.2998 80.1006 -60.2998 130.7h384v64c0 35.2998 28.7002 64 64 64h48zM80 -16\nc17.5996 0 32 14.4004 32 32s-14.4004 32 -32 32s-32 -14.4004 -32 -32s14.4004 -32 32 -32zM400 16c0 17.5996 -14.4004 32 -32 32s-32 -14.4004 -32 -32s14.4004 -32 32 -32s32 14.4004 32 32z\" />\n    <glyph glyph-name=\"biohazard\" unicode=\"&#xf780;\" horiz-adv-x=\"576\" \nd=\"M287.9 336c-18.5 0 -36 -3.7998 -52.5 -9.5c-13.3008 10.2998 -23.6006 24.2998 -29.5 40.7002c25.1992 10.8994 53 16.8994 82.0996 16.8994c29.2002 0 57 -6.09961 82.2002 -17c-5.90039 -16.3994 -16.2002 -30.3994 -29.5 -40.6992\nc-16.6006 5.7998 -34.2002 9.59961 -52.7998 9.59961zM163.6 9.2998c-47.5 35.5 -79.1992 90.7002 -83.2998 153.5c7.2998 2.10059 14.9004 3.10059 22.5 3.10059c9.2002 0 17.9004 -1.80078 26.4004 -4.60059c4.09961 -44.2998 26 -83.2002 58.8994 -109.6\nc-4.09961 -16 -12.5 -30.6006 -24.5 -42.4004zM387.8 51.9004c32.7002 26.3994 54.6006 65.0996 58.7002 109.3c8.59961 2.7998 17.4004 4.7002 26.5996 4.7002c7.5 0 15 -1 22.2002 -3c-3.89941 -62.8008 -35.5996 -118 -83 -153.5c-12 11.7998 -20.3994 26.5 -24.5 42.5z\nM501.3 256.9c34.6006 -20.4004 61 -53.3008 74.1006 -92.4004c1.2998 -3.7002 -0.200195 -7.7998 -3.5 -9.7998c-3.30078 -2 -7.5 -1.2998 -10 1.59961c-9.40039 10.7998 -19 19 -29.2002 25.1006c-57.2998 33.8994 -130.8 13.6992 -163.9 -45\nc-33.0996 -58.7002 -13.3994 -134 43.9004 -167.9c10.2002 -6.09961 21.8994 -10.5 35.7998 -13.4004c3.7998 -0.799805 6.40039 -4.19922 6.40039 -8.09961c-0.100586 -4 -2.7002 -7.2998 -6.5 -8c-39.7002 -7.7998 -80.6006 -0.799805 -115.2 19.7002\nc-18 10.5996 -32.9004 24.5 -45.2998 40.0996c-12.4004 -15.5996 -27.3008 -29.5 -45.3008 -40.0996c-34.5996 -20.5 -75.5 -27.5 -115.199 -19.7002c-3.80078 0.700195 -6.40039 4 -6.5 8c0 3.90039 2.69922 7.2998 6.39941 8.09961\nc13.7998 3 25.6006 7.30078 35.7998 13.4004c57.3008 33.9004 77 109.2 43.9004 167.9c-33.0996 58.6992 -106.6 78.8994 -163.9 45c-10.1992 -6 -19.7998 -14.3008 -29.1992 -25.1006c-2.5 -2.89941 -6.7002 -3.59961 -10 -1.59961\nc-3.30078 2.09961 -4.80078 6.09961 -3.5 9.7998c13.2998 39.0996 39.6992 71.9004 74.2998 92.4004c17.5996 10.3994 36.3994 16.5996 55.2998 19.8994c-6.09961 17.7002 -10 36.4004 -10 56.2002c0 41 14.5996 80.7998 41 112.2c2.5 3 6.59961 3.7002 10 1.7998\nc3.2998 -1.90039 4.7998 -6 3.59961 -9.7002c-4.39941 -13.7998 -6.59961 -26.3994 -6.59961 -38.5c0 -67.7998 53.7998 -122.899 120 -122.899s120 55.0996 120 122.899c0 12.2002 -2.09961 24.7002 -6.59961 38.5c-1.2002 3.7002 0.299805 7.7998 3.59961 9.7002\nc3.40039 1.90039 7.5 1.2002 10 -1.7998c26.5 -31.4004 41 -71.2002 41 -112.2c0 -19.7998 -4 -38.5 -10 -56.2002c19 -3.2998 37.7002 -9.5 55.2998 -19.8994zM287.9 127.9c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48z\" />\n    <glyph glyph-name=\"blog\" unicode=\"&#xf781;\" \nd=\"M172.2 221.2c75.5 -15 129.899 -89.2998 112.5 -172.2c-11.4004 -54.2998 -55.2998 -98.2998 -109.7 -109.7c-92.9004 -19.5 -175 51.2002 -175 140.7v248c0 13.2998 10.7002 24 24 24h48c13.2998 0 24 -10.7002 24 -24v-248c0 -26.5 21.5 -48 48 -48s48 21.5 48 48\nc0 20.5996 -13.0996 38.2002 -31.2998 45c-9.60059 3.59961 -16.7002 11.7998 -16.7002 22v50.4004c0 14.8994 13.5996 26.6992 28.2002 23.7998zM209 448c163.2 -8.59961 294.4 -139.8 302.9 -303c0.5 -9.2002 -6.80078 -17 -16 -17h-32.1006\nc-8.39941 0 -15.3994 6.59961 -15.8994 15c-7.5 129.5 -111.5 234.5 -240.9 241.5c-8.40039 0.400391 -15 7.40039 -15 15.9004v31.5996c0 9.2002 7.7998 16.5 17 16zM209.3 352c110.101 -8.5 198.2 -96.5996 206.601 -206.7\nc0.699219 -9.2998 -6.80078 -17.2998 -16.1006 -17.2998h-32.2002c-8.2998 0 -15.0996 6.40039 -15.8994 14.7002c-6.90039 77 -68.1006 138.899 -144.9 145.2c-8.2998 0.599609 -14.7998 7.5 -14.7998 15.8994v32.1006c0 9.39941 8 16.7998 17.2998 16.0996z\" />\n    <glyph glyph-name=\"calendar-day\" unicode=\"&#xf783;\" horiz-adv-x=\"448\" \nd=\"M0 -16v272h448v-272c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48zM64 176v-96c0 -8.7998 7.2002 -16 16 -16h96c8.7998 0 16 7.2002 16 16v96c0 8.7998 -7.2002 16 -16 16h-96c-8.7998 0 -16 -7.2002 -16 -16zM400 384c26.5 0 48 -21.5 48 -48v-48h-448v48\nc0 26.5 21.5 48 48 48h48v48c0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-48h128v48c0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-48h48z\" />\n    <glyph glyph-name=\"calendar-week\" unicode=\"&#xf784;\" horiz-adv-x=\"448\" \nd=\"M0 -16v272h448v-272c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48zM64 176v-64c0 -8.7998 7.2002 -16 16 -16h288c8.7998 0 16 7.2002 16 16v64c0 8.7998 -7.2002 16 -16 16h-288c-8.7998 0 -16 -7.2002 -16 -16zM400 384c26.5 0 48 -21.5 48 -48v-48h-448\nv48c0 26.5 21.5 48 48 48h48v48c0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-48h128v48c0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-48h48z\" />\n    <glyph glyph-name=\"candy-cane\" unicode=\"&#xf786;\" \nd=\"M497.5 356c35.7002 -75.5 2.7998 -166.1 -68.9004 -209l-347.3 -206.5c-5.2002 -3 -10.7998 -4.5 -16.3994 -4.5c-10.9004 0 -21.5 5.59961 -27.5 15.5996l-32.8008 54.9004c-9.09961 15.2002 -4.19922 34.7998 11 43.9004l353.601 210.1\nc15.0996 9.09961 20.0996 28.7998 11 43.9004c-6 10 -16.6006 15.5996 -27.5 15.5996c-5.60059 0 -11.2998 -1.40039 -16.4004 -4.5l-27.5 -16.4004c-5.2002 -3 -10.7998 -4.5 -16.3994 -4.5c-10.9004 0 -21.5 5.60059 -27.5 15.6006l-32.8008 54.8994\nc-9.09961 15.2002 -4.19922 34.8008 11 43.9004l27.5 16.4004c25.6006 15.2998 53.9004 22.5996 81.8008 22.5996c59.3994 0 117.199 -33.0996 145.1 -92zM319.8 343c8.5 5.09961 18.1006 7.59961 27.9004 8.40039l-20.6006 61.7998\nc-10.5 -2.10059 -20.5996 -5.5 -30.2998 -10.2002l20.5 -61.5zM145.9 16.2002l30.7998 18.2998l-60.5 38.5l-30.7998 -18.2998zM253.4 80.0996l30.7998 18.3008l-60.5 38.5l-30.7998 -18.3008zM364.3 146l30.7998 18.2998l-60.5 38.5l-30.7998 -18.2998zM384.7 343.3\nc9.2002 -5.39941 17.2002 -13 22.8994 -22.2998l45.7002 45.7002c-6.59961 8.5 -14.2002 16.0996 -22.5996 22.5996zM466.8 235.5c4.60059 9.7998 8 20 10.1006 30.4004l-60.4004 20.0996c-0.0996094 -4.5 -0.700195 -9.09961 -1.7998 -13.5996\nc-1.60059 -6.2002 -4.2002 -11.8008 -7.40039 -17.1006z\" />\n    <glyph glyph-name=\"carrot\" unicode=\"&#xf787;\" \nd=\"M298.2 291.4c61.7002 -30.1006 87.2998 -104.5 57.2002 -166.2c-12.6006 -25.7998 -33.1006 -45.4004 -57.1006 -57.1006l-102 -49.7998l-57 57c-6.2002 6.2002 -16.2998 6.2002 -22.5996 0s-6.2998 -16.3994 0 -22.5996l49.2002 -49.2002l-133.601 -65.2002\nc-11.0996 -5.39941 -24.5996 -0.799805 -30 10.2998c-3.09961 6.40039 -2.89941 13.7002 0 19.7002l128.101 262.7l50.1992 -50.2002c3.10059 -3.09961 7.2002 -4.7002 11.3008 -4.7002c4.09961 0 8.19922 1.60059 11.2998 4.7002c6.2998 6.2002 6.2998 16.2998 0 22.6006\nl-55.2002 55.1992c35.7002 43.3008 97.5 58.5 150.2 32.8008zM390.3 326.3c40.7002 19.5 88.7998 9.40039 121.7 -30.2998c-41.5996 -50.2998 -107.5 -52.5 -151.9 -7.90039l-8 8c-44.5996 44.4004 -42.3994 110.2 7.90039 151.9\nc39.7002 -32.9004 49.7998 -81 30.2998 -121.7z\" />\n    <glyph glyph-name=\"cash-register\" unicode=\"&#xf788;\" \nd=\"M511.1 69.2002c0.600586 -3.5 0.900391 -7 0.800781 -10.5v-90.7002c0 -17.7002 -14.3008 -32 -32 -32h-448c-17.7002 0 -32 14.2998 -32 32v90.7998c0 3.5 0.299805 7 0.899414 10.5l26.7002 160c2.59961 15.4004 16 26.7002 31.5996 26.7002h84.9004v64h-96\nc-8.7998 0 -16 7.2002 -16 16v96c0 8.7998 7.2002 16 16 16h256c8.7998 0 16 -7.2002 16 -16v-96.0996c0 -8.80078 -7.2002 -16 -16 -16h-96v-64h244.8c15.7002 0 29 -11.3008 31.6006 -26.7002zM280 200v-16c0 -8.7998 7.2002 -16 16 -16h16c8.7998 0 16 7.2002 16 16v16\nc0 8.7998 -7.2002 16 -16 16h-16c-8.7998 0 -16 -7.2002 -16 -16zM248 136c-8.7998 0 -16 -7.2002 -16 -16v-16c0 -8.7998 7.2002 -16 16 -16h16c8.7998 0 16 7.2002 16 16v16c0 8.7998 -7.2002 16 -16 16h-16zM216 216h-16c-8.7998 0 -16 -7.2002 -16 -16v-16\nc0 -8.7998 7.2002 -16 16 -16h16c8.7998 0 16 7.2002 16 16v16c0 8.7998 -7.2002 16 -16 16zM80 368h192v32h-192v-32zM120 168c8.7998 0 16 7.2002 16 16v16c0 8.7998 -7.2002 16 -16 16h-16c-8.7998 0 -16 -7.2002 -16 -16v-16c0 -8.7998 7.2002 -16 16 -16h16zM136 104\nc0 -8.7998 7.2002 -16 16 -16h16c8.7998 0 16 7.2002 16 16v16c0 8.7998 -7.2002 16 -16 16h-16c-8.7998 0 -16 -7.2002 -16 -16v-16zM352 -8v16c0 4.40039 -3.59961 8 -8 8h-176c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h176c4.40039 0 8 3.59961 8 8\nzM376 104v16c0 8.7998 -7.2002 16 -16 16h-16c-8.7998 0 -16 -7.2002 -16 -16v-16c0 -8.7998 7.2002 -16 16 -16h16c8.7998 0 16 7.2002 16 16zM424 184v16c0 8.7998 -7.2002 16 -16 16h-16c-8.7998 0 -16 -7.2002 -16 -16v-16c0 -8.7998 7.2002 -16 16 -16h16\nc8.7998 0 16 7.2002 16 16z\" />\n    <glyph glyph-name=\"compress-arrows-alt\" unicode=\"&#xf78c;\" \nd=\"M200 160c13.2998 0 24 -10.7002 24 -24v-112c0 -21.4004 -25.7998 -32.0996 -40.9004 -17l-31.0996 33l-99.2998 -99.2998c-6.2002 -6.2002 -16.4004 -6.2002 -22.6006 0l-25.3994 25.3994c-6.2002 6.2002 -6.2002 16.4004 0 22.6006l99.2002 99.2998l-32.9004 31\nc-15.0996 15.2002 -4.40039 41 17 41h112zM312 224c-13.2998 0 -24 10.7002 -24 24v112c0 21.4004 25.7998 32.0996 40.9004 17l31.0996 -33l99.2998 99.2998c6.2002 6.2002 16.4004 6.2002 22.6006 0l25.3994 -25.3994c6.2002 -6.2002 6.2002 -16.4004 0 -22.6006\nl-99.2998 -99.2998l33 -31c15.0996 -15.0996 4.40039 -41 -17 -41h-112zM408 88l99.2998 -99.4004c6.2002 -6.19922 6.2002 -16.3994 0 -22.5996l-25.3994 -25.4004c-6.2002 -6.19922 -16.4004 -6.19922 -22.6006 0l-99.2998 99.3008l-31 -32.9004\nc-15.0996 -15.0996 -41 -4.40039 -41 17v112c0 13.2998 10.7002 24 24 24h112c21.4004 0 32.0996 -25.7998 17 -40.9004zM183 376.9c15.0996 15.0996 41 4.39941 41 -16.9004v-112c0 -13.2998 -10.7002 -24 -24 -24h-112c-21.4004 0 -32.0996 25.7998 -17 40.9004\nl33 31.0996l-99.2998 99.2998c-6.2002 6.2002 -6.2002 16.4004 0 22.6006l25.3994 25.3994c6.2002 6.2002 16.4004 6.2002 22.6006 0l99.2998 -99.2998z\" />\n    <glyph glyph-name=\"dumpster\" unicode=\"&#xf793;\" horiz-adv-x=\"576\" \nd=\"M560 288h-97.2998l-25.6006 128h98.9004c7.2998 0 13.7002 -5 15.5 -12.0996l24 -96c2.5 -10.1006 -5.09961 -19.9004 -15.5 -19.9004zM272 416v-128h-126.1l25.5996 128h100.5zM404.5 416l25.5996 -128h-126.1v128h100.5zM16 288c-10.4004 0 -18 9.7998 -15.5 19.9004\nl24 96c1.7998 7.09961 8.2002 12.0996 15.5 12.0996h98.9004l-25.6006 -128h-97.2998zM560 224c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-28l-20 -160v-16c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v16h-320v-16\nc0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v16l-20 160h-28c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h20l-4 32h512l-4 -32h20z\" />\n    <glyph glyph-name=\"dumpster-fire\" unicode=\"&#xf794;\" horiz-adv-x=\"640\" \nd=\"M418.7 343.9c-19.7002 -17.6006 -37.7002 -36.5 -53.9004 -55.8008h-60.7998v128h100.5l14.4004 -72zM272 416v-128h-126.1l25.5996 128h100.5zM461.3 343.9l-11.8994 10.5996l-12.3008 61.5h98.9004c7.2998 0 13.7002 -5 15.4004 -12.0996l24 -96\nc0.199219 -0.800781 -0.100586 -1.5 0 -2.30078c-1 1 -2 2.2002 -3.10059 3.10059l-21.2998 19l-21.2998 -19c-5.90039 -5.2002 -11.6006 -10.7002 -17.2998 -16.2998c-15.6006 17.7998 -32.9004 35.1992 -51.1006 51.5zM16 288c-10.4004 0 -18 9.7998 -15.5 19.9004l24 96\nc1.7998 7.09961 8.2002 12.0996 15.5 12.0996h98.9004l-25.6006 -128h-97.2998zM340.6 256c-32.6992 -46.7002 -52.5996 -93.7002 -52.5996 -129.6c0 -48.5 18.5996 -92.7002 48.7998 -126.4h-208.8v-16c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v16\nl-20 160h-28c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h20l-4 32h308.6zM551.1 284.8c51.8008 -46.2002 88.9004 -121.8 88.8008 -158.399c0 -87.5 -71.6006 -158.4 -160 -158.4c-88.4004 0 -160 70.9004 -160 158.4c0 49.2998 49.7998 130.899 120 193.6\nc27.3994 -24.4004 51.5 -50.5996 71 -76.4004c11.8994 14 25.2998 27.9004 40.1992 41.2002zM532.5 55.4004c33.4004 24.1992 41.2002 71.0996 22.5996 107.8c-2.2998 4.5 -4.89941 9.2002 -7.69922 14l-39.8008 -47s-62.3994 82.5 -67.0996 88.0996\nc-32.9004 -40.8994 -49.4004 -64.7998 -49.4004 -91.8994c0 -54.5 39.9004 -88 88.9004 -88c19.5996 0 37.7998 6.2998 52.5 17z\" />\n    <glyph glyph-name=\"ethernet\" unicode=\"&#xf796;\" \nd=\"M496 256c8.7998 0 16 -7.2002 16 -16v-224c0 -8.7998 -7.2002 -16 -16 -16h-80v128h-32v-128h-64v128h-32v-128h-64v128h-32v-128h-64v128h-32v-128h-80c-8.7998 0 -16 7.2002 -16 16v224c0 8.7998 7.2002 16 16 16h48v48c0 8.7998 7.2002 16 16 16h48v48\nc0 8.7998 7.2002 16 16 16h224c8.7998 0 16 -7.2002 16 -16v-48h48c8.7998 0 16 -7.2002 16 -16v-48h48z\" />\n    <glyph glyph-name=\"gifts\" unicode=\"&#xf79c;\" horiz-adv-x=\"640\" \nd=\"M240.6 253.9c-27.7998 -6.90039 -48.5996 -32 -48.5996 -61.9004v-224c0 -11.7002 3.40039 -22.5 8.90039 -32h-168.9c-17.7002 0 -32 14.2998 -32 32v352c0 17.7002 14.2998 32 32 32h29.4004l-30.7002 22c-7.2002 5.09961 -8.7998 15.0996 -3.7002 22.2998l9.2998 13\nc5.10059 7.2002 15.1006 8.7998 22.2998 3.7002l32.1006 -22.7998l-11.5 30.5996c-3.2002 8.2002 1 17.5 9.2998 20.6006l15 5.59961c8.2998 3.09961 17.5 -1.09961 20.5996 -9.40039l19.9004 -53.0996l19.9004 53c3.09961 8.2998 12.2998 12.5 20.5996 9.40039l15 -5.60059\nc8.2998 -3.09961 12.5 -12.2998 9.40039 -20.5996l-11.5 -30.6006l32 22.9004c7.19922 5.2002 17.1992 3.5 22.2998 -3.7002l9.2998 -13c5.2002 -7.2002 3.5 -17.2002 -3.7002 -22.2998l-30.7002 -22h29.4004c12.7002 0 23.4004 -7.5 28.5996 -18.2998\nc-26.6992 -18.6006 -42.0996 -49 -44 -79.7998zM224 -32v96h192v-128h-160c-17.7002 0 -32 14.2998 -32 32zM448 -64v128h192v-96c0 -17.7002 -14.2998 -32 -32 -32h-160zM608 224c17.7002 0 32 -14.2998 32 -32v-96h-192v128h-15.2998l-0.700195 0.200195\nl-0.700195 -0.200195h-15.2998v-128h-192v96c0 17.7002 14.2998 32 32 32h20.4004c-2.7002 7.59961 -4.40039 15.5 -4.40039 23.7998c0 35.5 27 72.2002 72.0996 72.2002c48 0 75.8008 -47.7002 87.9004 -75.2998c12 27.5996 39.7998 75.2998 87.9004 75.2998\nc45.0996 0 72.0996 -36.7002 72.0996 -72.2002c0 -8.2998 -1.7998 -16.2002 -4.40039 -23.7998h20.4004zM336 224h52.5996c-8.89941 20.5996 -25.7998 48 -44.5 48c-17.6992 0 -24.0996 -14.5 -24.0996 -24.2002c0 -5.2002 1.5 -12.5996 8.7998 -19\nc2.10059 -1.7998 4.5 -3.39941 7.2002 -4.7998zM535.2 228.8c7.2998 6.40039 8.7998 13.7998 8.7998 19c0 9.7002 -6.40039 24.2002 -24.0996 24.2002c-18.7002 0 -35.7002 -27.7002 -44.5 -48h52.5996c2.7002 1.40039 5.09961 3 7.2002 4.7998z\" />\n    <glyph glyph-name=\"glass-cheers\" unicode=\"&#xf79f;\" horiz-adv-x=\"640\" \nd=\"M639.4 14.4004c1.69922 -4.10059 -0.300781 -8.7002 -4.30078 -10.4004l-162.399 -67.4004c-4 -1.69922 -8.7002 0.200195 -10.4004 4.30078c-8.5 20.3994 1.2002 43.7998 21.6006 52.2998l22.0996 9.2002l-39.2998 103.6\nc-4.40039 -0.5 -8.7998 -1.2998 -13.1006 -1.2998c-51.6992 0 -99.3994 33.0996 -113.399 85.2998l-20.2002 75.4004l-20.2002 -75.4004c-14 -52.2002 -61.7002 -85.2998 -113.399 -85.2998c-4.30078 0 -8.7002 0.799805 -13.1006 1.2998l-39.3994 -103.6l22.0996 -9.2002\nc20.4004 -8.5 30 -31.9004 21.5996 -52.2998c-1.69922 -4.10059 -6.2998 -6 -10.3994 -4.30078l-162.3 67.4004c-4.10059 1.7002 -6 6.40039 -4.30078 10.5c8.5 20.4004 31.8008 30.0996 52.2002 21.5996l22.1006 -9.19922l38.6992 101.899\nc-47.8994 34.9004 -64.6992 100.2 -34.5 152.7l86.6006 150.5c8 13.9004 25.0996 19.7998 40 13.5996l114.3 -47.3994l114.3 47.3994c14.9004 6.10059 32 0.300781 40 -13.5996l86.6006 -150.5c30.2998 -52.5 13.3994 -117.8 -34.5 -152.8l38.6992 -101.9l22.1006 9.2002\nc20.3994 8.5 43.7998 -1.2002 52.2002 -21.5996zM275.9 285.9l18.8994 70.6992l-94.5 39.2002l-36.5 -63.3994zM364.1 285.9l112.101 46.5l-36.5 63.3994l-94.5 -39.2002z\" />\n    <glyph glyph-name=\"glass-whiskey\" unicode=\"&#xf7a0;\" \nd=\"M480 416c19.5 0 34.4004 -17.2002 31.7002 -36.5l-55.6006 -356.5c-4.5 -31.5 -31.5996 -54.9004 -63.3994 -54.9004h-273c-31.9004 0 -58.9004 23.4004 -63.4004 54.9004l-56 356.5c-2.7002 19.2998 12.2002 36.5 31.7002 36.5h448zM442.6 352h-373.199l30.1992 -192\nh313z\" />\n    <glyph glyph-name=\"globe-europe\" unicode=\"&#xf7a2;\" horiz-adv-x=\"496\" \nd=\"M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM448 192c0 110.3 -89.7002 200 -200.2 200c-1.89941 0 -3.7998 -0.200195 -5.7002 -0.299805l-28.8994 -21.7002c-2 -1.5 -3.2002 -3.90039 -3.2002 -6.40039v-20\nc0 -4.39941 3.59961 -8 8 -8h16c4.40039 0 8 3.60059 8 8v8l16 16h20.7002c6.2002 0 11.2998 -5.09961 11.2998 -11.2998c0 -3 -1.2002 -5.89941 -3.2998 -8l-26.7998 -26.7998c-1.2002 -1.2002 -2.7002 -2.09961 -4.40039 -2.7002l-40 -13.2998\nc-3.2998 -1.09961 -5.5 -4.2002 -5.5 -7.59961c0 -6.60059 -2.59961 -12.9004 -7.2002 -17.5l-20.0996 -20.1006c-3 -3 -4.7002 -7.09961 -4.7002 -11.2998v-25.2998c0 -8.7998 7.2002 -16 16 -16h22.0996c6.10059 0 11.6006 3.39941 14.3008 8.7998l9.39941 18.7002\nc1.40039 2.7002 4.2002 4.39941 7.2002 4.39941h3.09961c4.40039 0 8 -3.59961 8 -8c0 -4.39941 3.60059 -8 8 -8h16c4.40039 0 8 3.60059 8 8v2.2002c0 3.5 2.2002 6.5 5.5 7.60059l31.6006 10.5c6.5 2.19922 10.8994 8.2998 10.8994 15.1992v4.5\nc0 8.80078 7.2002 16 16 16h36.7002c6.2002 0 11.2998 -5.09961 11.2998 -11.2998v-9.39941c0 -6.2002 -5.09961 -11.3008 -11.2998 -11.3008h-32c-3 0 -5.89941 -1.19922 -8 -3.2998l-9.39941 -9.39941c-2.10059 -2.10059 -3.30078 -5 -3.30078 -8\nc0 -6.2002 5.10059 -11.3008 11.3008 -11.3008h16c3 0 5.89941 -1.19922 8 -3.2998l9.39941 -9.39941c2.10059 -2.10059 3.2998 -5 3.2998 -8v-8.7002l-12.5 -12.5c-4.59961 -4.60059 -4.59961 -12.1006 -0.0996094 -16.7002l32 -32.5996\nc3 -3.10059 7.09961 -4.80078 11.4004 -4.80078h20.2998c6.89941 20.2002 10.7998 41.9004 10.7998 64.4004zM130.1 298.9c0 -6.2002 5.10059 -11.3008 11.3008 -11.3008h16c3 0 5.89941 1.2002 8 3.30078l9.39941 9.39941c2.10059 2.10059 3.2998 5 3.2998 8v16\nc0 6.2002 -5.09961 11.2998 -11.2998 11.2998c-3 0 -5.89941 -1.19922 -8 -3.2998l-25.3994 -25.3994c-2.10059 -2.10059 -3.30078 -5 -3.30078 -8zM258.1 -7.5c71.1006 3.59961 132.5 44.2002 164.9 103.1h-13.4004c-4.7998 0 -9.5 1.90039 -12.8994 5.30078\nl-17.2998 17.2998c-6 6 -14.1006 9.39941 -22.6006 9.39941h-18.2998l-43.2002 37.1006c-8.2002 7 -18.7002 10.8994 -29.5996 10.8994h-31.2002c-8.2002 0 -16.2998 -2.2998 -23.4004 -6.5l-42.8994 -25.6992c-13.7002 -8.2002 -22.1006 -23 -22.1006 -39v-23.9004\nc0 -14.2998 6.7002 -27.7998 18.2002 -36.4004l22.2002 -16.6992c8.7002 -6.5 24.5996 -11.8008 35.4004 -11.8008h20.1992c8.80078 0 16 -7.19922 16 -16v-7.09961z\" />\n    <glyph glyph-name=\"grip-lines\" unicode=\"&#xf7a4;\" \nd=\"M496 160c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-480c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h480zM496 288c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-480c-8.7998 0 -16 7.2002 -16 16v32\nc0 8.7998 7.2002 16 16 16h480z\" />\n    <glyph glyph-name=\"grip-lines-vertical\" unicode=\"&#xf7a5;\" horiz-adv-x=\"256\" \nd=\"M96 -48c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v480c0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-480zM224 -48c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v480c0 8.7998 7.2002 16 16 16h32\nc8.7998 0 16 -7.2002 16 -16v-480z\" />\n    <glyph glyph-name=\"guitar\" unicode=\"&#xf7a6;\" \nd=\"M502.6 393.4c12.5 -12.5 12.5 -32.8008 0.100586 -45.2002l-67.9004 -67.9004c-12.5 -12.5 -32.7998 -12.5 -45.2998 0l-54.2002 -54.2002c28.9004 -45.3994 28.9004 -100.399 -4.2002 -133.5c-9.69922 -9.69922 -21.1992 -16.3994 -33.8994 -20.5\nc-18.7998 -6.09961 -33.1006 -23.5996 -34.9004 -42.6992c-2.2998 -24.1006 -11.5996 -46.4004 -28.7998 -63.5c-46.0996 -46.1006 -129.1 -37.9004 -185.3 18.2998s-64.5 139.2 -18.2998 185.3c17.0996 17.2002 39.3994 26.5 63.3994 28.7998\nc19.2002 1.7998 36.6006 16.1006 42.7002 34.9004c4.09961 12.7002 10.7998 24.2002 20.5 33.8994c33.0996 33.1006 88.0996 33.2002 133.5 4.2002l54.2002 54.1006c-12.5 12.5 -12.5 32.7998 0 45.2998l67.8994 67.8994c12.5 12.5 32.8008 12.5 45.3008 0zM208 96\nc26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48z\" />\n    <glyph glyph-name=\"heart-broken\" unicode=\"&#xf7a9;\" \nd=\"M473.7 374.2c48.7002 -49.7998 50.7998 -129.101 7.2998 -182.101l-212.2 -218.699c-7.09961 -7.30078 -18.5996 -7.30078 -25.7002 0l-212.1 218.6c-43.5 53.0996 -41.4004 132.4 7.2998 182.2l2.40039 2.39941c46.2998 47.4004 119 51.8008 170.7 14l28.5996 -86.5\nl-96 -64l144 -144l-48 128l96 64l-34.2998 103.4c51.5996 36.9004 123.6 32.2002 169.6 -14.7998z\" />\n    <glyph glyph-name=\"holly-berry\" unicode=\"&#xf7aa;\" horiz-adv-x=\"448\" \nd=\"M144 256c-26.5 0 -48 21.5 -48 48s21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48zM256 304c0 26.5 21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48s-48 21.5 -48 48zM224 352c-26.5 0 -48 21.5 -48 48s21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48z\nM207.8 212.9c-0.399414 -39.8008 7.40039 -78.1006 22.9004 -112.301c4 -8.89941 -2 -19.1992 -11.7002 -20.1992c-15.2002 -1.5 -30.4004 -4.60059 -45.2998 -9.10059c-14.9004 -4.5 -23.7998 -19.8994 -20.2002 -35.0996s8.5 -29.9004 14.7002 -43.7998\nc4 -8.90039 -1.90039 -19.3008 -11.6006 -20.2002c-35.8994 -3.40039 -71.5996 -14.9004 -104.8 -33.9004c-12.3994 -7.09961 -27.5 1.60059 -27.5996 16c-0.100586 38.2002 -8 74.9004 -23 107.7c-4 8.90039 2 19.2002 11.7002 20.2002\nc15.1992 1.5 30.3994 4.59961 45.2998 9.09961c14.8994 4.5 23.7998 19.9004 20.2002 35.1006c-3.60059 15.1992 -8.5 29.8994 -14.7002 43.7998c-4 8.89941 1.89941 19.2998 11.5996 20.2002c37.2998 3.5 74.4004 15.8994 108.7 36.1992\nc10.7002 6.40039 23.9004 -1.2998 23.7998 -13.6992zM435 82.4004c9.7002 -1 15.7998 -11.4004 11.5 -20.1006c-15 -32.7002 -22.7998 -69.5 -23 -107.7c0 -14.3994 -15.0996 -23.0996 -27.5996 -16c-33.2002 19 -68.9004 30.5 -104.801 33.9004\nc-9.69922 0.900391 -15.5996 11.2998 -11.5996 20.2002c6.2002 14 11.0996 28.5996 14.7002 43.7998c3.59961 15.2002 -5.2998 30.5996 -20.2002 35.0996c-4.90039 1.5 -9.90039 2.5 -14.7998 3.7002c5.7998 12.2998 6.2998 26.5 0.599609 38.9004\nc-12.8994 28.2998 -19.7002 60.7002 -19.8994 94c0 1.7002 0.199219 3.2998 0.199219 4.89941c-0.0996094 12.3008 13.1006 20 23.8008 13.7002c34.2998 -20.2998 71.3994 -32.7002 108.699 -36.2002c9.7002 -0.899414 15.6006 -11.2998 11.6006 -20.1992\nc-6.2002 -14 -11.1006 -28.6006 -14.7002 -43.8008c-3.59961 -15.1992 5.2998 -30.5996 20.2002 -35.0996c15 -4.40039 30.0996 -7.5 45.2998 -9.09961z\" />\n    <glyph glyph-name=\"horse-head\" unicode=\"&#xf7ab;\" \nd=\"M509.8 115.5c4.60059 -11.7998 1.7998 -25.2998 -7.09961 -34.4004l-45.2998 -39.7998c-6 -6 -14.1006 -9.39941 -22.6006 -9.39941h-50.2998c-10.2998 0 -20 4.89941 -26 13.2998l-46 63.8994c-13.7998 -8.09961 -29.5996 -13.1992 -46.7998 -13.1992\nc-39.2002 0 -72.6006 23.6992 -87.4004 57.3994c-2.2998 5.10059 -9 6.2998 -12.8994 2.40039l-12.1006 -12.1006c-2.5 -2.39941 -3.2002 -6.19922 -1.59961 -9.2998c19.7002 -38.8994 58.7002 -66.0996 104.3 -69.5996v-0.700195l40.7998 -81.7002\nc10.7002 -21.2998 -4.7998 -46.2998 -28.5996 -46.2998h-236.2c-17.7002 0 -32 14.2998 -32 32v81.2002c0 159.899 35.9004 275.399 166.9 322.5l202.199 75.7002c4.90039 1.7998 10.7002 -1.10059 12 -6.10059c12.1006 -46.3994 -16.1992 -71.7002 -34.1992 -82.2998\nc42.5996 -8.2002 78.0996 -38 93 -79.2002zM328 224c13.2998 0 24 10.7002 24 24s-10.7002 24 -24 24s-24 -10.7002 -24 -24s10.7002 -24 24 -24z\" />\n    <glyph glyph-name=\"icicles\" unicode=\"&#xf7ad;\" \nd=\"M511.4 410.1l-87.5 -467.699c-1.7002 -8.60059 -14 -8.60059 -15.7002 0l-66.7002 363.8l-45.7998 -172.5c-2.2998 -7.60059 -13 -7.60059 -15.2998 0l-34.1006 133.399l-46.5 -196.899c-1.89941 -8.2998 -13.7002 -8.2998 -15.5996 0l-44.2002 187.3l-36.4004 -124.1\nc-2.39941 -7.2002 -12.5996 -7.2002 -15.0996 0l-87.0996 273.399c-6.2002 20.5 9.19922 41.2002 30.5996 41.2002h448c20 0 35.0996 -18.2002 31.4004 -37.9004z\" />\n    <glyph glyph-name=\"igloo\" unicode=\"&#xf7ae;\" horiz-adv-x=\"576\" \nd=\"M320 414.1v-126.1h-271.4c51.6006 77.2002 139.601 128 239.4 128c10.7998 0 21.5 -0.700195 32 -1.90039zM96 256v-128h-96c0 46 11.0996 89.4004 30.2998 128h65.7002zM352 408.6c72.7998 -16.5 135.2 -60.5 175.4 -120.6h-175.4v120.6zM480 128v128h65.7002\nc19.2002 -38.5996 30.2998 -82 30.2998 -128h-96zM416 64c0 11.0996 -1.90039 21.7002 -4.5 32h164.5v-96c0 -17.7002 -14.2998 -32 -32 -32h-128v96zM448 256v-128h-49.7998c-22.2002 38.0996 -63 64 -110.2 64s-88 -25.9004 -110.2 -64h-49.7998v128h320zM0 0v96h164.5\nc-2.59961 -10.2998 -4.5 -20.9004 -4.5 -32v-96h-128c-17.7002 0 -32 14.2998 -32 32zM288 160c53 0 96 -43 96 -96v-96h-192v96c0 53 43 96 96 96z\" />\n    <glyph glyph-name=\"mitten\" unicode=\"&#xf7b5;\" horiz-adv-x=\"448\" \nd=\"M368 32c8.7998 0 16 -7.2002 16 -16v-64c0 -8.7998 -7.2002 -16 -16 -16h-320c-8.7998 0 -16 7.2002 -16 16v64c0 8.7998 7.2002 16 16 16h320zM425 241.1c27.0996 -22.5996 30.7998 -62.8994 8.09961 -90.0996l-72.5 -87h-309l-47.8994 207.6\nc-17.9004 77.5 30.5 154.801 107.899 172.7c77.4004 17.9004 154.801 -30.5 172.801 -108l29.5996 -128.399l20.9004 25c22.5996 27.1992 62.8994 30.7998 90.0996 8.19922z\" />\n    <glyph glyph-name=\"mug-hot\" unicode=\"&#xf7b6;\" \nd=\"M127.1 301.5c-2.69922 16.5996 -10.3994 31.9004 -22.3994 44.0996c-22.6006 23.1006 -36.7002 52.5 -40.6006 84.4004c-1.09961 9.5 6.5 18 16.3008 18h16.3994c8.2002 0 15 -5.90039 16.1006 -13.7998c2.7998 -20.2002 12 -38.7998 26.3994 -53.5\nc20.2002 -20.5 32.7998 -46.5 36.6006 -74.7002c1.2998 -9.5 -6.5 -18 -16.3008 -18h-16.5c-8 0 -14.6992 5.7998 -16 13.5zM239.1 301.5c-2.69922 16.5996 -10.3994 31.9004 -22.3994 44.0996c-22.6006 23.1006 -36.7002 52.5 -40.6006 84.4004\nc-1.19922 9.5 6.5 18 16.3008 18h16.3994c8.2002 0 15 -5.90039 16.1006 -13.7998c2.7998 -20.2002 12 -38.7998 26.3994 -53.5c20.2002 -20.5 32.7998 -46.5 36.6006 -74.7002c1.2998 -9.5 -6.5 -18 -16.3008 -18h-16.5c-8 0 -14.6992 5.7998 -16 13.5zM400 256\nc61.7998 0 112 -50.2002 112 -112s-50.2002 -112 -112 -112h-16c0 -53 -43 -96 -96 -96h-192c-53 0 -96 43 -96 96v192c0 17.7002 14.2998 32 32 32h368zM400 96c26.5 0 48 21.5 48 48s-21.5 48 -48 48h-16v-96h16z\" />\n    <glyph glyph-name=\"radiation\" unicode=\"&#xf7b9;\" horiz-adv-x=\"496\" \nd=\"M328.2 192.2c0 28.5996 -15.2002 53.5 -37.7998 67.7998l80.3994 128.4c4.7998 7.69922 15.2998 10.0996 22.7002 4.7998c58.0996 -42 97.4004 -108.4 102.5 -184.2c0.599609 -9.09961 -7.09961 -16.7998 -16.2002 -16.7998h-151.6zM290.4 124.5l80.3994 -128.5\nc4.7998 -7.59961 2.40039 -18.0996 -5.59961 -22.4004c-34.9004 -18.7998 -74.7998 -29.5996 -117.2 -29.5996s-82.2998 10.7998 -117.2 29.5996c-8 4.30078 -10.3994 14.7002 -5.59961 22.4004l80.3994 128.5c12.4004 -7.7002 26.8008 -12.4004 42.4004 -12.4004\ns30.0996 4.7002 42.4004 12.4004zM248 144.2c-26.5 0 -48 21.5 -48 48s21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48zM16.2002 192.2c-9.10059 0 -16.7998 7.7002 -16.2002 16.7002c5.09961 75.7998 44.4004 142.199 102.5 184.199\nc7.40039 5.40039 17.9004 2.90039 22.7002 -4.7998l80.3994 -128.399c-22.5996 -14.2002 -37.7998 -39.1006 -37.7998 -67.7002h-151.6z\" />\n    <glyph glyph-name=\"radiation-alt\" unicode=\"&#xf7ba;\" horiz-adv-x=\"496\" \nd=\"M312 192c0 22.7998 -12.0996 42.7998 -30.0996 54l41.6992 66.7998c5.2002 8.2998 16.4004 9.90039 24 3.7998c32.5 -26 54.9004 -64.1992 59.5 -107.8c0.900391 -9.09961 -6.7998 -16.7998 -16 -16.7998h-79.0996zM214.2 137.9\nc9.7998 -6.2002 21.5 -9.90039 33.8994 -9.90039c12.4004 0 24 3.7002 33.8008 9.90039l41.7998 -66.9004c4.7998 -7.7998 2.39941 -18.4004 -5.7998 -22.5c-21.2002 -10.4004 -44.8008 -16.5 -69.9004 -16.5s-48.7002 6.09961 -69.7998 16.5\nc-8.2002 4.09961 -10.7002 14.7002 -5.7998 22.5zM104.9 192c-9.2002 0 -17 7.7002 -15.9004 16.9004c4.59961 43.5996 26.9004 81.7998 59.5 107.8c7.59961 6.09961 18.7998 4.5 24 -3.7998l41.7002 -66.8008c-18.1006 -11.2998 -30.2002 -31.2998 -30.2002 -54.0996\nh-79.0996zM248 -56c-137 0 -248 111 -248 248s111 248 248 248s248 -111 248 -248s-111 -248 -248 -248zM248 376c-101.5 0 -184 -82.5 -184 -184s82.5 -184 184 -184s184 82.5 184 184s-82.5 184 -184 184zM248 160c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32\ns32 -14.2998 32 -32s-14.2998 -32 -32 -32z\" />\n    <glyph glyph-name=\"restroom\" unicode=\"&#xf7bd;\" horiz-adv-x=\"640\" \nd=\"M128 320c-35.2998 0 -64 28.7002 -64 64s28.7002 64 64 64s64 -28.7002 64 -64s-28.7002 -64 -64 -64zM512 320c-35.2998 0 -64 28.7002 -64 64s28.7002 64 64 64s64 -28.7002 64 -64s-28.7002 -64 -64 -64zM639.3 93.5c3.7002 -15.0996 -8.2998 -29.5 -24.5 -29.5\nh-54.7998v-104c0 -13.2998 -10.7002 -24 -24 -24h-48c-13.2998 0 -24 10.7002 -24 24v104h-54.7998c-16.2002 0 -28.2002 14.4004 -24.7002 29.5l45.5996 185.8c3.30078 13.5 15.5 23 29.8008 24.2002c15 -9.7002 32.7998 -15.5 52 -15.5c19.1992 0 37 5.7998 52 15.5\nc14.2998 -1.2002 26.5 -10.7002 29.7998 -24.2002zM336 448c8.7998 0 16 -7.2002 16 -16v-480c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v480c0 8.7998 7.2002 16 16 16h32zM180.1 303.6c24.6006 -2.09961 43.9004 -22.5 43.9004 -47.5996v-136\nc0 -13.2998 -10.7002 -24 -24 -24h-8v-136c0 -13.2998 -10.7002 -24 -24 -24h-80c-13.2998 0 -24 10.7002 -24 24v136h-8c-13.2998 0 -24 10.7002 -24 24v136c0 25.0996 19.2998 45.5 43.9004 47.5996c15 -9.7998 32.8994 -15.5996 52.0996 -15.5996\ns37.0996 5.7998 52.0996 15.5996z\" />\n    <glyph glyph-name=\"satellite\" unicode=\"&#xf7bf;\" \nd=\"M502.7 183c12.3994 -12.4004 12.3994 -32.5996 -0.100586 -45l-96.6992 -96.7002c-6.2002 -6.2002 -14.4004 -9.2998 -22.5 -9.2998c-8.10059 0 -16.3008 3.09961 -22.5 9.2998l-80.3008 80.4004l-9.89941 -9.90039c24.2998 -53.7002 22.7002 -116.2 -5.40039 -168.5\nc-4.5 -8.5 -16.3994 -9.59961 -23.2002 -2.7998l-107.5 107.5l-17.7998 -17.7998c0.700195 -2.60059 1.60059 -5 1.60059 -7.7998c0 -17.7002 -14.3008 -32 -32 -32c-17.7002 0 -32 14.2998 -32 32c0 17.6992 14.2998 32 32 32c2.7998 0 5.19922 -0.900391 7.7998 -1.60059\nl17.7998 17.7998l-107.5 107.5c-6.7998 6.80078 -5.7002 18.6006 2.7998 23.2002c52.2998 28.1006 114.8 29.7002 168.5 5.40039l9.7998 9.7998l-80.2998 80.4004c-12.3994 12.5 -12.3994 32.6992 0 45.0996l96.7002 96.7002c6.2002 6.2002 14.2998 9.2998 22.5 9.2998\ns16.2998 -3.09961 22.5996 -9.2998l80.3008 -80.2998l47.7998 47.8994c13.0996 13.1006 34.3994 13.1006 47.5 0l47.5 -47.5c13.0996 -13.0996 13.0996 -34.3994 0 -47.5l-47.7998 -47.8994zM150.7 319.5l68.8994 -68.9004l73.8008 73.8008l-68.9004 68.8994zM383.5 86.7002\nl73.7998 73.7998l-68.8994 68.9004l-73.8008 -73.8008z\" />\n    <glyph glyph-name=\"satellite-dish\" unicode=\"&#xf7c0;\" \nd=\"M188.8 102.1l116.601 -116.6c7.39941 -7.2998 6.19922 -20.0996 -3 -25c-77.7002 -41.7998 -176.7 -29.9004 -242.301 35.7002c-65.5996 65.5996 -77.5 164.5 -35.6992 242.3c4.89941 9.09961 17.6992 10.2998 25 3l116.8 -116.8l27.3994 27.3994\nc-0.699219 2.60059 -1.59961 5 -1.59961 7.80078c0 17.6992 14.2998 32 32 32s32 -14.3008 32 -32c0 -17.7002 -14.2998 -32 -32 -32c-2.7998 0 -5.2002 0.899414 -7.7998 1.59961zM209 448c163.2 -8.59961 294.4 -139.8 302.9 -303c0.5 -9.2002 -6.80078 -17 -16 -17\nh-32.1006c-8.39941 0 -15.3994 6.59961 -15.8994 15c-7.5 129.5 -111.5 234.5 -240.9 241.5c-8.40039 0.400391 -15 7.40039 -15 15.9004v31.5996c0 9.2002 7.7998 16.5 17 16zM209.3 352c110.101 -8.5 198.2 -96.5996 206.601 -206.7\nc0.699219 -9.2998 -6.80078 -17.2998 -16.1006 -17.2998h-32.2002c-8.2998 0 -15.0996 6.40039 -15.8994 14.7002c-6.90039 77 -68.1006 138.899 -144.9 145.2c-8.2998 0.599609 -14.7998 7.5 -14.7998 15.8994v32.1006c0 9.39941 8 16.7998 17.2998 16.0996z\" />\n    <glyph glyph-name=\"sd-card\" unicode=\"&#xf7c2;\" horiz-adv-x=\"384\" \nd=\"M320 448c35.2998 0 64 -28.7002 64 -64v-384c0 -35.2998 -28.7002 -64 -64 -64h-256c-35.2998 0 -64 28.7002 -64 64v320l128 128h192zM160 288v96h-48v-96h48zM240 288v96h-48v-96h48zM320 288v96h-48v-96h48z\" />\n    <glyph glyph-name=\"sim-card\" unicode=\"&#xf7c4;\" horiz-adv-x=\"384\" \nd=\"M0 384c0 35.2998 28.7002 64 64 64h192l128 -128v-320c0 -35.2998 -28.7002 -64 -64 -64h-256c-35.2998 0 -64 28.7002 -64 64v384zM224 192v64h-64v-64h64zM320 192v32c0 17.7002 -14.2998 32 -32 32h-32v-64h64zM256 64v-64h32c17.7002 0 32 14.2998 32 32v32h-64z\nM160 64v-64h64v64h-64zM64 64v-32c0 -17.7002 14.2998 -32 32 -32h32v64h-64zM64 160v-64h256v64h-256zM64 224v-32h64v64h-32c-17.7002 0 -32 -14.2998 -32 -32z\" />\n    <glyph glyph-name=\"skating\" unicode=\"&#xf7c5;\" horiz-adv-x=\"448\" \nd=\"M400 448c26.5 0 48 -21.5 48 -48s-21.5 -48 -48 -48s-48 21.5 -48 48s21.5 48 48 48zM400 0c8.7998 0 16 -7.2002 16 -16c0 -26.5 -21.5 -48 -48 -48h-96c-8.7998 0 -16 7.2002 -16 16s7.2002 16 16 16h96c8.7998 0 16 7.2002 16 16s7.2002 16 16 16zM117.8 -8.59961\nc6.2998 6.2998 16.5 6.19922 22.7002 0c6.2002 -6.2002 6.2002 -16.4004 0 -22.6006c-9.2998 -9.2998 -21.5996 -14 -33.9004 -14c-12.2998 0 -24.5996 4.60059 -34 14l-67.8994 67.9004c-6.2002 6.2002 -6.2002 16.3994 0 22.5996s16.3994 6.2002 22.5996 0\nl67.9004 -67.8994c6.2002 -6.30078 16.3994 -6.2002 22.5996 0zM173.9 171.2c3.7998 -6.10059 8.19922 -11.7998 13.1992 -16.7998l30.2002 -30.2002l-91.8994 -91.9004c-6.2002 -6.2998 -14.4004 -9.39941 -22.6006 -9.39941s-16.3994 3.19922 -22.5996 9.39941\nc-12.5 12.4004 -12.5 32.7002 0 45.2002zM128 288c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32h204.6c16.3008 0 30.8008 -9.7002 37 -24.7002c6.2002 -15 2.80078 -32.0996 -8.69922 -43.5996l-82.3008 -82.2998c-0.5 -0.5 -1.19922 -0.700195 -1.69922 -1.10059\nl61 -61c9 -8.89941 14.0996 -21.2998 14.0996 -33.8994v-89.4004c0 -17.7002 -14.2998 -32 -32 -32s-32 14.2998 -32 32v82.7998l-78.2002 78.2002c-12.5996 12.5 -19.3994 29.9004 -18.7002 47.7002c0.700195 17.7002 8.80078 34.5996 22.3008 46.0996l20.0996 17.2002\nh-105.5z\" />\n    <glyph glyph-name=\"skiing\" unicode=\"&#xf7c9;\" \nd=\"M432 352c-26.5 0 -48 21.5 -48 48s21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48zM505 -4.09961c9.2998 -9.30078 9.2998 -24.5 0 -33.8008c-17 -17 -39.7998 -26 -63 -26c-12.5996 0 -25.2002 2.60059 -37.0996 8.10059l-391.9 202.5\nc-11.7998 6 -16.4004 20.5 -10.2998 32.2998c6.09961 11.7998 20.5996 16.2998 32.2998 10.2998l197.9 -102.3l45.8994 68.7998l-75.0996 75.2002c-14.2998 14.4004 -20.6006 34.5 -17.7002 54.4004l107 -53.1006l40.4004 -40.5\nc16.1992 -16.0996 18.6992 -41.5996 6 -60.5996l-49.2002 -73.7998l135.8 -70.2002c14.5996 -6.7002 33 -3.40039 45.0996 8.7002c9.30078 9.39941 24.5 9.39941 33.9004 0zM120 356.4l-26.2002 23c-2.2002 1.89941 -2.39941 5.19922 -0.5 7.39941\nc1.2998 1.5 3.2002 2.10059 5 1.7002l34.4004 -7h0.200195l11.0996 21.7002c13.7002 -7 21.2002 -21.1006 20.9004 -35.6006l62.5 -31l81.1992 32.5c43.6006 17.4004 76.4004 -15 84.5 -39.1992l17.1006 -51.2002l52.0996 -26.1006\nc15.7998 -7.89941 22.2002 -27.0996 14.2998 -42.8994c-7.89941 -15.7998 -27 -22.2002 -42.8994 -14.2998l-58.1006 29c-11.3994 5.69922 -20 15.5996 -24 27.6992l-6.39941 19.1006l-32.4004 -13l-114.5 56.7998c0.100586 0.0996094 0.100586 0.200195 0.200195 0.299805\nl-47.2002 23.4004c-11.5996 -9.7002 -28.3994 -12.1006 -42.7998 -4.7998z\" />\n    <glyph glyph-name=\"skiing-nordic\" unicode=\"&#xf7ca;\" horiz-adv-x=\"576\" \nd=\"M336 352c-26.5 0 -48 21.5 -48 48s21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48zM552 32c13.2002 0 24 -10.7998 24 -24c0 -39.7002 -32.2998 -72 -72 -72h-480c-13.2002 0 -24 10.7002 -24 24s10.7998 24 24 24h42.9004l54.0996 270.8\nc-0.700195 0.799805 -1.7002 1.2002 -2.40039 2.10059c-10.7998 14.0996 -8.09961 34.1992 5.90039 44.8994l39.7002 30.4004c23 17.5996 52.5 23.8994 80.7998 17.0996l71.2002 -21.2002c26.2998 -6.69922 49.2998 -25.3994 61.7998 -50.8994l26.0996 -53.2002h44\nc17.7002 0 32 -14.2998 32 -32c0 -13.4004 -8.39941 -24.9004 -20.0996 -29.5996l-25.5 -178.4h69.5c13.2002 0 24 10.7998 24 24c0 13.2998 10.7998 24 24 24zM291.5 -16l25.5 81.2002l-85 50.2002c-27.5996 16.2998 -38.9004 50.7998 -26.2998 80.2998l37.5 87.3994\nl-14.7002 4.40039c-7.90039 1.90039 -17.5996 -0.200195 -25.2998 -6.09961l-39.7002 -30.4004c-3.59961 -2.7002 -7.59961 -4.59961 -11.7002 -5.59961l-52.2998 -261.4h24.2002l62.5 131.8c7.59961 -10.8994 17.3994 -20.5996 29.5 -27.7998l22 -13l-43.1006 -91h96.9004z\nM402.1 -16l25.2002 176h-33.2998c-18.2002 0 -35.0996 10.5996 -43.0996 26.9004l-20.3008 41.3994l-31.2998 -78.2998l61.2002 -36.0996c18.7002 -11.3008 27.5 -33.6006 21.5996 -54.4004l-23.5996 -75.5h43.5996z\" />\n    <glyph glyph-name=\"sleigh\" unicode=\"&#xf7cc;\" horiz-adv-x=\"640\" \nd=\"M612.7 97.2998c18.5 -14.7002 28.5996 -37.2002 27.2002 -61c-2.2002 -39 -36.9004 -68.2998 -75.9004 -68.2998h-516c-8.7998 0 -16 7.2002 -16 16v16c0 8.7998 7.2002 16 16 16h519.3c13.6006 0 24.6006 11 24.6006 24.5996c0 7.5 -3.30078 14.5 -9.2002 19.2002\nl-9.2998 7.40039c-6.90039 5.5 -8 15.5996 -2.5 22.5l10 12.5c5.5 6.89941 15.5996 8 22.5 2.5zM32 224v128c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32h20.7002c65.7002 0 125.899 -37.2002 155.3 -96s89.5 -96 155.3 -96h20.7002c35.2998 0 64 28.7002 64 64v64h96\nc17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32v-96c0 -53 -43 -96 -96 -96v-48h-64v48h-192v-48h-64v52.5c-55.0996 14.2998 -96 63.9004 -96 123.5z\" />\n    <glyph glyph-name=\"sms\" unicode=\"&#xf7cd;\" \nd=\"M256 416c141.4 0 256 -93.0996 256 -208s-114.6 -208 -256 -208c-38.4004 0 -74.7002 7.09961 -107.4 19.4004c-24.5996 -19.6006 -74.2998 -51.4004 -140.6 -51.4004c-3.2002 0 -6 1.7998 -7.2998 4.7998s-0.700195 6.40039 1.5 8.7002\nc0.5 0.5 42.2998 45.4004 54.7998 95.7998c-35.5996 35.7002 -57 81.1006 -57 130.7c0 114.9 114.6 208 256 208zM128.2 144c23.3994 0 42.5 17.2998 42.3994 38.5996c0 10.6006 -4.7998 20.9004 -13.2998 28.1006l-21.8994 18.7998\nc-1.30078 1.09961 -2.10059 2.5 -2.10059 3.7998c0 3.10059 4.40039 6.60059 10.4004 6.60059h12.2998c4.40039 0 8 3.59961 8 8v16c0 4.39941 -3.59961 8 -8 8h-12.2002c-23.3994 0 -42.3994 -17.3008 -42.3994 -38.6006c0 -10.5996 4.7998 -20.8994 13.2998 -28.0996\nl21.8994 -18.7998c1.30078 -1.10059 2.10059 -2.5 2.10059 -3.80078c0 -3.09961 -4.40039 -6.59961 -10.4004 -6.59961h-12.2998c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h12.2002zM320 152v104c0 8.7998 -7.2002 16 -16 16h-16\nc-6 0 -11.5996 -3.40039 -14.2998 -8.7998l-17.7002 -35.4004l-17.7002 35.4004c-2.7002 5.39941 -8.2002 8.7998 -14.2998 8.7998h-16c-8.7998 0 -16 -7.2002 -16 -16v-104c0 -4.40039 3.59961 -8 8 -8h16c4.40039 0 8 3.59961 8 8v68.2002l24.9004 -55.7998\nc2.89941 -5.90039 11.3994 -5.90039 14.2998 0l24.7998 55.7998v-68.2002c0 -4.40039 3.59961 -8 8 -8h16c4.40039 0 8 3.59961 8 8zM368.3 144c23.4004 0 42.4004 17.2998 42.2998 38.5996c0 10.6006 -4.7998 20.9004 -13.2998 28.1006l-21.8994 18.7998\nc-1.30078 1.09961 -2.10059 2.5 -2.10059 3.7998c0 3.10059 4.40039 6.60059 10.4004 6.60059h12.2998c4.40039 0 8 3.59961 8 8v16c0 4.39941 -3.59961 8 -8 8h-12.2002c-23.3994 0 -42.3994 -17.3008 -42.3994 -38.6006c0 -10.5996 4.7998 -20.8994 13.2998 -28.0996\nl21.8994 -18.7998c1.30078 -1.10059 2.10059 -2.5 2.10059 -3.80078c0 -3.09961 -4.40039 -6.59961 -10.4004 -6.59961h-12.2998c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h12.2998z\" />\n    <glyph glyph-name=\"snowboarding\" unicode=\"&#xf7ce;\" \nd=\"M432 352c-26.5 0 -48 21.5 -48 48s21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48zM460.8 198.4l-83.5 62.8994l-66 -30.5l52 -39c14.9004 -11.2002 22 -30.2002 18.1006 -48.3994l-21.9004 -102c-2.2002 -10.1006 -9.09961 -17.8008 -17.7998 -21.9004\nl90.7998 -33.0996c9.7002 -3.5 20.2002 -3.10059 29.5 1.2998c12 5.59961 26.2998 0.399414 31.9004 -11.6006c5.59961 -12 0.399414 -26.2998 -11.6006 -31.8994c-11.5996 -5.5 -24 -8.2002 -36.5 -8.2002c-10 0 -20 1.7998 -29.7002 5.2998l-364.8 132.7\nc-21.7998 7.90039 -39.0996 23.7998 -48.8994 44.7998c-5.60059 12 -0.400391 26.2998 11.5996 31.9004c12 5.59961 26.2998 0.399414 31.9004 -11.6006c4.39941 -9.39941 12.0996 -16.5 21.7998 -20l38.7002 -14.0996c-3.80078 3.5 -7 7.7002 -8.7002 12.9004\nc-5.60059 16.7998 3.39941 34.8994 20.2002 40.5l74.0996 24.6992v53.1006c0 24.3994 13.5996 46.2998 35.4004 57.2002l41.1992 20.5996l-16.3994 5.5c-12.1006 4.09961 -22 12.5996 -27.7002 24l-29.0996 58.0996c-7.90039 15.8008 -1.5 35 14.2998 42.9004\ns35 1.5 42.8994 -14.2998l26.1006 -52.1006l63.7002 -21.1992c16.2998 -5.40039 31.5996 -13.5 45.3994 -23.8008l111.4 -83.5c14.2002 -10.5996 17 -30.6992 6.39941 -44.7998c-6.2998 -8.39941 -15.8994 -12.7998 -25.5996 -12.7998\nc-6.7002 0 -13.4004 2.09961 -19.2002 6.40039zM316.4 146.7l-60.5 45.2998v-20.5c0 -20.7002 -13.2002 -39 -32.8008 -45.5l-85 -28.4004c-2.59961 -0.899414 -5.2998 -1.09961 -8 -1.2998l169.4 -61.5996c-2.90039 6.09961 -4.2998 12.8994 -2.7998 20z\" />\n    <glyph glyph-name=\"snowman\" unicode=\"&#xf7d0;\" \nd=\"M510.9 295.7c3.19922 -8.10059 -0.800781 -17.2002 -8.90039 -20.2998l-135.2 -55.2002c0.400391 -4.10059 1.2002 -8 1.2002 -12.2002c0 -10 -1.7002 -19.5 -4.2002 -28.7002c21.1006 -21.3994 36.1006 -48.7998 41.6006 -79\nc11.5 -63.2002 -16.4004 -120.3 -62.9004 -152.6c-10.9004 -7.60059 -23.9004 -11.7002 -37.2002 -11.7002h-99.2002c-11 0 -22 2.2998 -31.2998 8.2002c-42.3994 26.8994 -70.7998 73.7998 -70.7998 127.8c0 41.7998 16.9004 79.5996 44.2998 107.1\nc-2.5 9.30078 -4.2002 18.8008 -4.2002 28.9004c0 4.2002 0.800781 8.2002 1.2002 12.2002l-135.2 55.2002c-8.19922 3.19922 -12.1992 12.2998 -8.89941 20.2998l5.89941 14.5c3.30078 8 12.6006 11.8994 20.8008 8.7002l28.0996 -11.5v29\nc0 8.59961 7.2002 15.5996 16 15.5996h16c8.7998 0 16 -7 15.7998 -15.5996v-46.9004c0 -0.5 -0.200195 -1 -0.299805 -1.5l56.4004 -23c6 10 13.2998 18.9004 22 26.5996c-13.5 16.6006 -22 37.4004 -22 60.5c0 53 43 96 96 96s96 -43 96 -96\nc0 -23.0996 -8.40039 -43.8994 -22 -60.5c8.69922 -7.69922 16.0996 -16.5996 22 -26.5996l56.3994 23c0 0.5 -0.299805 1 -0.299805 1.5v46.9004c0 8.59961 7.2002 15.5996 16 15.5996h16c8.7998 0 16 -7 16 -15.5996v-29l28.2002 11.5\nc8.2002 3.19922 17.5 -0.700195 20.7998 -8.7002zM224 352c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM256 80c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM256 144\nc8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM256 208c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM256 296c0 0 16 23.2002 16 32s-7.2002 16 -16 16s-16 -7.2002 -16 -16s16 -32 16 -32z\nM288 352c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16z\" />\n    <glyph glyph-name=\"snowplow\" unicode=\"&#xf7d2;\" horiz-adv-x=\"640\" \nd=\"M120 72c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24s-24 10.7002 -24 24s10.7002 24 24 24zM200 72c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24s-24 10.7002 -24 24s10.7002 24 24 24zM280 72c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24\ns-24 10.7002 -24 24s10.7002 24 24 24zM360 72c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24s-24 10.7002 -24 24s10.7002 24 24 24zM598.6 22.5996l36.7002 -36.6992c6.2002 -6.2002 6.2002 -16.4004 0 -22.6006l-22.5996 -22.5996\nc-6.2002 -6.2002 -16.4004 -6.2002 -22.6006 0l-36.6992 36.7002c-26.5 26.5 -41.4004 62.3994 -41.4004 99.8994v18.7002h-43.2002c7 -14.5996 11.2002 -30.7002 11.2002 -48c0 -61.9004 -50.0996 -112 -112 -112h-256c-61.9004 0 -112 50.0996 -112 112\nc0 44.5996 26.2998 82.7998 64 100.8v91.2002c0 26.5 21.5 48 48 48h16v112c0 26.5 21.5 48 48 48h144.3c19.2998 0 36.6006 -11.4004 44.2002 -29.0996l78.2998 -182.801c3.40039 -8 5.2002 -16.5 5.2002 -25.1992v-50.9004h64v18.7002\nc0 37.5 14.9004 73.3994 41.4004 99.8994l36.6992 36.7002c6.2002 6.2002 16.4004 6.2002 22.6006 0l22.5996 -22.5996c6.2002 -6.2002 6.2002 -16.4004 0 -22.6006l-36.7002 -36.6992c-14.5 -14.5 -22.5996 -34.1006 -22.5996 -54.6006v-101.6\nc0 -20.5 8.09961 -40.1006 22.5996 -54.6006zM192 384v-96l64 -64h122.4l-68.6006 160h-117.8zM368 0c26.5 0 48 21.5 48 48s-21.5 48 -48 48h-256c-26.5 0 -48 -21.5 -48 -48s21.5 -48 48 -48h256z\" />\n    <glyph glyph-name=\"tenge\" unicode=\"&#xf7d7;\" horiz-adv-x=\"384\" \nd=\"M372 288c6.59961 0 12 -5.40039 12 -12v-56c0 -6.59961 -5.40039 -12 -12 -12h-140v-228c0 -6.59961 -5.40039 -12 -12 -12h-56c-6.59961 0 -12 5.40039 -12 12v228h-140c-6.59961 0 -12 5.40039 -12 12v56c0 6.59961 5.40039 12 12 12h360zM372 416\nc6.59961 0 12 -5.40039 12 -12v-56c0 -6.59961 -5.40039 -12 -12 -12h-360c-6.59961 0 -12 5.40039 -12 12v56c0 6.59961 5.40039 12 12 12h360z\" />\n    <glyph glyph-name=\"toilet\" unicode=\"&#xf7d8;\" horiz-adv-x=\"384\" \nd=\"M368 400h-16v-156.7c20.2002 -10.0996 32 -22.2002 32 -35.2998c0 -67.2002 -34.5996 -126.2 -86.7998 -160.5l21.3994 -70.2002c6.30078 -20.5 -9.09961 -41.2998 -30.5996 -41.2998h-192c-21.5 0 -36.9004 20.7998 -30.5996 41.2998l21.3994 70.2002\nc-52.2002 34.2998 -86.7998 93.2998 -86.7998 160.5c0 13.0996 11.7998 25.2002 32 35.2998v156.7h-16c-8.7998 0 -16 7.2002 -16 16v16c0 8.7998 7.2002 16 16 16h352c8.7998 0 16 -7.2002 16 -16v-16c0 -8.7998 -7.2002 -16 -16 -16zM80 376v-16\nc0 -4.40039 3.59961 -8 8 -8h48c4.40039 0 8 3.59961 8 8v16c0 4.40039 -3.59961 8 -8 8h-48c-4.40039 0 -8 -3.59961 -8 -8zM192 176c77.0996 0 139.6 14.2998 139.6 32s-62.5 32 -139.6 32s-139.6 -14.2998 -139.6 -32s62.5 -32 139.6 -32z\" />\n    <glyph glyph-name=\"tools\" unicode=\"&#xf7d9;\" \nd=\"M501.1 52.2998c14.5 -14.5 14.5 -38.0996 0 -52.7002l-52.6992 -52.6992c-14.5 -14.6006 -38.1006 -14.6006 -52.7002 0l-117.101 117.1c-23.0996 23.0996 -27.5 57.5996 -13.8994 85.4004l-106.601 106.6h-62.0996l-96 128l64 64l128 -96v-62.0996l106.6 -106.601\nc27.8008 13.7002 62.3008 9.2002 85.4004 -13.8994zM331.7 223c-8.2002 0 -16.6006 -1 -24.7002 -2.90039l-82.0996 82.1006c-0.700195 37.5 12.6992 75.0996 41.1992 103.6c37 37 89.2002 49.6006 136.601 37.9004c9.09961 -2.2998 12.2998 -13.6006 5.7002 -20.2002\nl-74.4004 -74.4004l11.2998 -67.8994l67.9004 -11.2998l74.3994 74.3994c6.60059 6.60059 17.9004 3.5 20.1006 -5.5c11.7998 -47.3994 -0.799805 -99.5996 -37.9004 -136.7c-13 -13 -28 -22.5996 -43.7998 -29.5l-19.4004 19.4004c-20 20 -46.5996 31 -74.8994 31z\nM227.8 141c-4.89941 -21.0996 -2.59961 -42.7998 5 -62.7002l-123.6 -123.6c-25 -25 -65.5 -25 -90.5 0s-25 65.5 0 90.5l152.399 152.5zM64 -24c13.2998 0 24 10.7998 24 24c0 13.2998 -10.7002 24 -24 24s-24 -10.7002 -24 -24c0 -13.2002 10.7998 -24 24 -24z\" />\n    <glyph glyph-name=\"tram\" unicode=\"&#xf7da;\" \nd=\"M288 384c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32zM511.5 396.1c2.2002 -8.5 -2.7998 -17.2998 -11.4004 -19.5996l-228.1 -60.7998v-91.7002h176c17.7002 0 32 -14.2998 32 -32v-224c0 -17.7002 -14.2998 -32 -32 -32\nh-384c-17.7002 0 -32 14.2998 -32 32v224c0 17.7002 14.2998 32 32 32h176v83.2002l-219.9 -58.7002c-1.2998 -0.299805 -2.69922 -0.5 -4.09961 -0.5c-7.09961 0 -13.5 4.7002 -15.4004 11.7998c-2.2998 8.60059 2.80078 17.2998 11.3008 19.6006l480 128\nc8.59961 2.2998 17.2998 -2.7002 19.5996 -11.3008zM176 64v96h-96v-96h96zM336 160v-96h96v96h-96zM304 160h-96v-96h96v96zM192 352c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32s32 -14.2998 32 -32s-14.2998 -32 -32 -32z\" />\n    <glyph glyph-name=\"fire-alt\" unicode=\"&#xf7e4;\" horiz-adv-x=\"448\" \nd=\"M323.56 396.8c72.46 -67.2598 124.44 -177.13 124.44 -230.399c0 -127.25 -100.29 -230.4 -224 -230.4s-224 103.15 -224 230.4c0 71.6396 69.7402 190.43 168 281.6c38.2803 -35.5303 72.0801 -73.6201 99.3398 -111.17\nc16.6406 20.3799 35.4199 40.6699 56.2197 59.9697zM304.09 56.1504c49.2402 34.4492 60.7803 101.229 33.4297 153.42c-3.35938 6.41992 -7.12988 13.1201 -11.2695 19.9697l-58.6299 -66.8799s-91.9004 117.359 -98.8301 125.34\nc-48.4805 -58.1201 -72.79 -92.1396 -72.79 -130.75c0 -77.5098 58.71 -125.25 130.86 -125.25c28.8594 0 55.5693 8.99023 77.2295 24.1504z\" />\n    <glyph glyph-name=\"bacon\" unicode=\"&#xf7e5;\" horiz-adv-x=\"576\" \nd=\"M218.92 111.61c-34.8604 -34.8799 -59.6504 -44.1602 -85.9199 -54c-26 -9.76074 -53 -20.1299 -88.1699 -52.7305l-35.7598 35.5098c-12.7002 12.6104 -12.0703 33.6104 1.79004 45.0605c36.3398 29.9795 66.21 41.0996 91.0693 50.3594\nc9.16992 3.41016 68.9707 19.2607 98.7207 98.0908c8.60938 22.8096 46.3496 134.58 188.979 187.72c15.8506 5.91016 27.3604 10.2002 41 20.2998c4.53516 3.35449 12.7939 6.07617 18.4346 6.07617c7.00879 0 16.751 -3.98926 21.7451 -8.90625l37.6709 -37.3896\nc-30.1504 -27.6904 -52.9102 -36.3701 -76.79 -45.3701c-28.3008 -10.6104 -57.5703 -21.5801 -97.3506 -61.3799s-50.7598 -69.0498 -61.3701 -97.3398c-9.84961 -26.3008 -19.1602 -51.1104 -54.0498 -86zM566.92 343.61\nc12.7002 -12.5996 12.0801 -33.6602 -1.80957 -45.0605c-36.3701 -30.0098 -66.2402 -41.1396 -91.1104 -50.4102c-9.2002 -3.43945 -69 -19.3193 -98.7305 -98.1094c-8.93945 -23.5898 -46.7393 -134.69 -188.939 -187.69\nc-15.8496 -5.89941 -27.3398 -10.1797 -40.9404 -20.2402c-4.53613 -3.35645 -12.7969 -6.08008 -18.4395 -6.08008c-7.00586 0 -16.7461 3.9873 -21.7402 8.90039l-37.6797 37.4297c30.1094 27.6699 52.8594 36.3301 76.7197 45.3301\nc28.2998 10.5898 57.5098 21.54 97.2998 61.3203s50.7803 69 61.4199 97.3301c9.81055 26.3096 19.1104 51.1602 54 86c34.8906 34.8398 59.6904 44.1504 85.9502 54c26.0703 9.79004 53.0605 20.1602 88.25 52.79z\" />\n    <glyph glyph-name=\"book-medical\" unicode=\"&#xf7e6;\" horiz-adv-x=\"448\" \nd=\"M448 89.5996c0 -9.59961 -3.2002 -15.999 -9.59961 -19.1992c-3.2002 -12.8008 -3.2002 -57.6006 0 -73.6006c6.39941 -6.39941 9.59961 -12.7998 9.59961 -19.2002v-16c0 -16 -12.7998 -25.5996 -25.5996 -25.5996h-326.4c-54.4004 0 -96 41.5996 -96 96v320\nc0 54.4004 41.5996 96 96 96h326.4c16 0 25.5996 -9.59961 25.5996 -25.5996v-332.801zM144 280v-48c0 -4.41602 3.58398 -8 8 -8h56v-56c0 -4.41602 3.58398 -8 8 -8h48c4.41602 0 8 3.58398 8 8v56h56c4.41602 0 8 3.58398 8 8v48c0 4.41602 -3.58398 8 -8 8h-56v56\nc0 4.41602 -3.58398 8 -8 8h-48c-4.41602 0 -8 -3.58398 -8 -8v-56h-56c-4.41602 0 -8 -3.58398 -8 -8zM380.8 0v64h-284.8c-16 0 -32 -12.7998 -32 -32s12.7998 -32 32 -32h284.8z\" />\n    <glyph glyph-name=\"bread-slice\" unicode=\"&#xf7ec;\" horiz-adv-x=\"576\" \nd=\"M288 448c180 0 288 -93.4004 288 -169.14c0 -30.3008 -24.2402 -54.8604 -64 -54.8604v-256c0 -17.6699 -16.1201 -32 -36 -32h-376c-19.8799 0 -36 14.3301 -36 32v256c-39.7598 0 -64 24.5596 -64 54.8604c0 75.7393 108 169.14 288 169.14z\" />\n    <glyph glyph-name=\"cheese\" unicode=\"&#xf7ef;\" \nd=\"M0 160h512v-160c0 -17.6641 -14.3359 -32 -32 -32h-448c-17.6641 0 -32 14.3359 -32 32v160zM299.83 416c118.17 -6.2002 212.17 -104.11 212.17 -224h-512l278.7 217c4.83984 3.875 13.7998 7.01953 20 7.01953c0.311523 0 0.818359 -0.00878906 1.12988 -0.0195312z\n\" />\n    <glyph glyph-name=\"clinic-medical\" unicode=\"&#xf7f2;\" horiz-adv-x=\"576\" \nd=\"M288 333l218.74 -192.9c1.54004 -1.37988 3.55957 -2.04004 5.25977 -3.19922v-184.9c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16v184.94c1.78027 1.20996 3.84961 1.88965 5.46973 3.34961zM384 72v48c0 4.41602 -3.58398 8 -8 8h-56v56\nc0 4.41602 -3.58398 8 -8 8h-48c-4.41602 0 -8 -3.58398 -8 -8v-56h-56c-4.41602 0 -8 -3.58398 -8 -8v-48c0 -4.41602 3.58398 -8 8 -8h56v-56c0 -4.41602 3.58398 -8 8 -8h48c4.41602 0 8 3.58398 8 8v56h56c4.41602 0 8 3.58398 8 8zM570.69 211.72\nc2.93066 -2.63184 5.31055 -7.96484 5.31055 -11.9053c0 -3.38086 -1.83301 -8.16797 -4.09082 -10.6846l-21.4004 -23.8203c-2.63184 -2.93066 -7.96484 -5.30957 -11.9043 -5.30957c-3.38574 0 -8.17773 1.83691 -10.6953 4.09961l-229.32 202.271\nc-2.50391 2.20898 -7.24609 4.00195 -10.585 4.00195s-8.08105 -1.79297 -10.585 -4.00195l-229.32 -202.28c-2.51758 -2.2627 -7.30957 -4.09961 -10.6953 -4.09961c-3.93848 0 -9.27246 2.37891 -11.9043 5.30957l-21.4102 23.8203\nc-2.2627 2.51758 -4.09961 7.30957 -4.09961 10.6953c0 3.93945 2.37891 9.27246 5.30957 11.9043l256 226c6.2832 5.68066 18.2559 10.29 26.7256 10.29c8.46875 0 20.4424 -4.60938 26.7246 -10.29z\" />\n    <glyph glyph-name=\"comment-medical\" unicode=\"&#xf7f5;\" \nd=\"M256 416c141.39 0 256 -93.1201 256 -208s-114.61 -208 -256 -208h-0.473633c-30.4814 0 -78.3838 8.68164 -106.927 19.3799c-24.5996 -19.6299 -74.3398 -51.3799 -140.6 -51.3799c-4.41113 0.00488281 -7.99023 3.58887 -7.99023 8\nc0 1.75879 0.981445 4.22266 2.19043 5.5c0.5 0.5 42.2598 45.4502 54.7998 95.7598c-35.5898 35.7402 -57 81.1807 -57 130.74c0 114.88 114.62 208 256 208zM352 184v48c0 4.41602 -3.58398 8 -8 8h-56v56c0 4.41602 -3.58398 8 -8 8h-48c-4.41602 0 -8 -3.58398 -8 -8\nv-56h-56c-4.41602 0 -8 -3.58398 -8 -8v-48c0 -4.41602 3.58398 -8 8 -8h56v-56c0 -4.41602 3.58398 -8 8 -8h48c4.41602 0 8 3.58398 8 8v56h56c4.41602 0 8 3.58398 8 8z\" />\n    <glyph glyph-name=\"crutch\" unicode=\"&#xf7f7;\" \nd=\"M507.31 262.29c2.56348 -2.58301 4.64355 -7.63184 4.64355 -11.2695c0 -3.66602 -2.10742 -8.74219 -4.70312 -11.3301l-22.6201 -22.6309c-2.58691 -2.58691 -7.65625 -4.6875 -11.3145 -4.6875c-3.65918 0 -8.72852 2.10059 -11.3154 4.6875l-181 181\nc-2.58789 2.58691 -4.6875 7.65625 -4.6875 11.3154s2.09961 8.72852 4.6875 11.3154l22.6904 22.5996c2.58594 2.58496 7.65332 4.68262 11.3096 4.68262s8.72363 -2.09766 11.3096 -4.68262zM327.77 195.88l55.1006 55.1201l45.25 -45.2695l-109.68 -109.681\nc-10.7441 -10.748 -31.4814 -22.2393 -46.29 -25.6494l-120.25 -27.75l-102 -102c-2.58691 -2.58789 -7.65625 -4.6875 -11.3154 -4.6875s-8.72754 2.09961 -11.3154 4.6875l-22.6191 22.6191c-2.58789 2.58789 -4.6875 7.65625 -4.6875 11.3154\ns2.09961 8.72852 4.6875 11.3154l102 102l27.7393 120.26c3.4248 14.8057 14.9248 35.5439 25.6699 46.29l109.671 109.67l45.25 -45.25l-55.1006 -55.1006zM273.2 141.31l9.30957 9.31055l-67.8896 67.8896l-9.31055 -9.30957\nc-3.57715 -3.59082 -7.41211 -10.5127 -8.55957 -15.4502l-18.2998 -79.2998l79.2998 18.3193c4.94043 1.13379 11.8623 4.95996 15.4502 8.54004z\" />\n    <glyph glyph-name=\"egg\" unicode=\"&#xf7fb;\" horiz-adv-x=\"384\" \nd=\"M192 448c106 0 192 -214 192 -320s-86 -192 -192 -192s-192 86 -192 192s86 320 192 320z\" />\n    <glyph glyph-name=\"hamburger\" unicode=\"&#xf805;\" \nd=\"M464 192c26.4961 0 48 -21.5039 48 -48s-21.5039 -48 -48 -48h-416c-26.4961 0 -48 21.5039 -48 48s21.5039 48 48 48h416zM480 64c8.83203 0 16 -7.16797 16 -16v-16c0 -35.3281 -28.6719 -64 -64 -64h-352c-35.3281 0 -64 28.6719 -64 64v16\nc0 8.83203 7.16797 16 16 16h448zM58.6396 224c-34.5693 0 -54.6396 43.9102 -34.8193 75.8896c40.1797 64.9102 128.64 116.011 232.18 116.11c103.55 -0.0996094 192 -51.2002 232.18 -116.12c19.8008 -31.9795 -0.25 -75.8799 -34.8193 -75.8799h-394.721zM384 336\nc-8.83203 0 -16 -7.16797 -16 -16s7.16797 -16 16 -16s16 7.16797 16 16s-7.16797 16 -16 16zM256 368c-8.83203 0 -16 -7.16797 -16 -16s7.16797 -16 16 -16s16 7.16797 16 16s-7.16797 16 -16 16zM128 336c-8.83203 0 -16 -7.16797 -16 -16s7.16797 -16 16 -16\ns16 7.16797 16 16s-7.16797 16 -16 16z\" />\n    <glyph glyph-name=\"hand-middle-finger\" unicode=\"&#xf806;\" \nd=\"M479.93 130.88l0.0703125 -82.8799v0c0 -61.7969 -50.1533 -111.973 -111.95 -112h-215c-25.6074 0.00292969 -61.084 14.7012 -79.1895 32.8096l-30.9307 30.9307c-6.0332 6.03223 -10.9297 17.8525 -10.9297 26.3838v0.00585938v73.4697v0.00292969\nc0 12.7383 9.24707 27.7002 20.6396 33.3975l27.3604 15v-76c0 -4.41602 3.58398 -8 8 -8s8 3.58398 8 8v147.04c0 15.2598 12.8701 28.3799 30.8701 31.3799l30.6797 5.12012c17.8203 2.96973 34.4502 -8.38965 34.4502 -23.54v-32c0 -4.41602 3.58398 -8 8 -8\ns8 3.58398 8 8v200v0.0224609c0 26.4961 21.5039 48 48 48c0.408203 0 1.07129 -0.00976562 1.48047 -0.0224609c26.2695 -0.799805 46.5195 -23.7197 46.5195 -50v-198c0 -4.41602 3.58398 -8 8 -8s8 3.58398 8 8v32c0 15.1396 16.6299 26.5 34.4502 23.5303\nl38.3994 -6.40039c13.46 -2.25 23.1504 -12.0996 23.1504 -23.54v-49.5898l35.6504 -8.92969c15.5986 -3.89844 28.2686 -20.1113 28.2793 -36.1904z\" />\n    <glyph glyph-name=\"hard-hat\" unicode=\"&#xf807;\" \nd=\"M480 160v-64h-448v64c0 80.25 49.2803 148.92 119.19 177.62l40.8096 -81.6201v112c0 8.83203 7.16797 16 16 16h96c8.83203 0 16 -7.16797 16 -16v-112l40.8096 81.6201c69.9102 -28.7002 119.19 -97.3701 119.19 -177.62zM496 64c8.83203 0 16 -7.16797 16 -16v-32\nc0 -8.83203 -7.16797 -16 -16 -16h-480c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h480z\" />\n    <glyph glyph-name=\"hotdog\" unicode=\"&#xf80f;\" \nd=\"M488.56 424.56c12.9297 -12.9326 23.4238 -38.2715 23.4238 -56.5596s-10.4941 -43.627 -23.4238 -56.5596l-352 -352c-13.0205 -13.4824 -38.7998 -24.4238 -57.543 -24.4238c-44.1592 0 -80 35.8408 -80 80c0 18.7432 10.9414 44.5225 24.4238 57.543l352 352\nc12.9326 12.9297 38.2715 23.4238 56.5596 23.4238s43.627 -10.4941 56.5596 -23.4238zM438.63 329.37c2.58691 2.58691 4.68652 7.65625 4.68652 11.3145c0 8.83301 -7.16797 16.002 -16.001 16.002c-3.65918 0 -8.72852 -2.09961 -11.3154 -4.68652\nc-12.4102 -12.4102 -21.7598 -14 -34.71 -16.2305c-14.4004 -2.46973 -32.3203 -5.55957 -51.9199 -25.1494c-19.6006 -19.5898 -22.6699 -37.5205 -25.1396 -51.9199c-2.24023 -12.9502 -3.84082 -22.3105 -16.2402 -34.71\nc-12.4004 -12.4004 -21.7002 -14.0098 -34.7002 -16.2305c-14.4004 -2.46973 -32.3203 -5.5498 -51.9199 -25.1396c-19.6006 -19.5898 -22.6699 -37.5205 -25.1504 -51.9199c-2.21973 -12.9502 -3.80957 -22.29 -16.2197 -34.7002s-21.71 -14.0098 -34.71 -16.2305\nc-14.4004 -2.46973 -32.3203 -5.5498 -51.9199 -25.1396c-2.58691 -2.58691 -4.68652 -7.65625 -4.68652 -11.3145c0 -8.83301 7.16797 -16.002 16.001 -16.002c3.65918 0 8.72852 2.09961 11.3154 4.68652c12.4004 12.4004 21.7598 14 34.7002 16.2305\nc14.3994 2.46973 32.3301 5.55957 51.9297 25.1494c19.6006 19.5898 22.6699 37.5205 25.1396 51.9199c2.23047 12.9502 3.83008 22.2998 16.2305 34.7002s21.75 14 34.7002 16.2197c14.3994 2.48047 32.3193 5.56055 51.9199 25.1504\nc19.5996 19.5898 22.6699 37.5195 25.1494 51.9199c2.23047 12.9502 3.83008 22.3096 16.2305 34.71s21.7598 14 34.7002 16.2305c14.4102 2.46973 32.3301 5.5498 51.9297 25.1396zM31.4404 125.82l-11.5508 11.5498c-24.9893 24.9902 -26.6592 63.8398 -3.71973 86.7803\nl207.68 207.68c22.9404 22.9395 61.79 21.2803 86.79 -3.71973l11.54 -11.5508zM480.56 258.18l11.5508 -11.54c24.9893 -25 26.6592 -63.8496 3.71973 -86.79l-207.68 -207.68c-22.9404 -22.9395 -61.79 -21.2803 -86.79 3.71973l-11.54 11.5508z\" />\n    <glyph glyph-name=\"ice-cream\" unicode=\"&#xf810;\" horiz-adv-x=\"448\" \nd=\"M368 288c26.4961 0 48 -21.5039 48 -48s-21.5039 -48 -48 -48h-288c-26.4961 0 -48 21.5039 -48 48s21.5039 48 48 48h0.94043c-0.519531 4.51855 -0.94043 11.8779 -0.94043 16.4268c0 79.4883 64.5117 144 144 144s144 -64.5117 144 -144\nc0 -4.54883 -0.420898 -11.9082 -0.94043 -16.4268h0.94043zM195.38 -45.6904l-99.3799 205.69h256l-99.3799 -205.69c-4.66504 -10.1084 -17.4863 -18.3135 -28.6201 -18.3135s-23.9551 8.20508 -28.6201 18.3135z\" />\n    <glyph glyph-name=\"laptop-medical\" unicode=\"&#xf812;\" horiz-adv-x=\"640\" \nd=\"M232 224c-4.41602 0 -8 3.58398 -8 8v48c0 4.41602 3.58398 8 8 8h56v56c0 4.41602 3.58398 8 8 8h48c4.41602 0 8 -3.58398 8 -8v-56h56c4.41602 0 8 -3.58398 8 -8v-48c0 -4.41602 -3.58398 -8 -8 -8h-56v-56c0 -4.41602 -3.58398 -8 -8 -8h-48\nc-4.41602 0 -8 3.58398 -8 8v56h-56zM576 400v-336h-512v336c0.0771484 26.4189 21.5811 47.9229 48 48h416c26.4189 -0.0771484 47.9229 -21.5811 48 -48zM512 128v256h-384v-256h384zM624 32c8.83203 0 16 -7.16797 16 -16v-16\nc-0.104492 -35.2236 -28.7764 -63.8955 -64 -64h-512c-35.2236 0.104492 -63.8955 28.7764 -64 64v16c0 8.83203 7.16797 16 16 16h239.23c-0.230469 -14.5303 14.0791 -32 32.7695 -32h60.7998c18.0303 0 32 12.1904 32.7402 32h242.46z\" />\n    <glyph glyph-name=\"pager\" unicode=\"&#xf815;\" \nd=\"M448 384c35.3281 0 64 -28.6719 64 -64v-256c0 -35.3281 -28.6719 -64 -64 -64h-384c-35.3281 0 -64 28.6719 -64 64v256c0 35.3281 28.6719 64 64 64h384zM160 80v48h-80c-8.83203 0 -16 -7.16797 -16 -16v-16c0 -8.83203 7.16797 -16 16 -16h80zM288 96v16\nc0 8.83203 -7.16797 16 -16 16h-80v-48h80c8.83203 0 16 7.16797 16 16zM448 224v64c0 17.6641 -14.3359 32 -32 32h-320c-17.6641 0 -32 -14.3359 -32 -32v-64c0 -17.6641 14.3359 -32 32 -32h320c17.6641 0 32 14.3359 32 32z\" />\n    <glyph glyph-name=\"pepper-hot\" unicode=\"&#xf816;\" \nd=\"M330.67 184.88h107.46l37.0498 -38.54c-48.5293 -87.4697 -206.54 -210.34 -419.18 -210.34c-30.9121 0 -56 25.0879 -56 56s25.0879 56 56 56c141.58 0 163.44 181.24 221.92 250.82l52.75 -24.2207v-89.7197zM461.76 313.25\nc27.7324 -25.2861 50.2402 -76.2676 50.2402 -113.798v-0.142578c0 -13.6797 -2.2998 -26.6895 -5.55957 -39.3096l-54.6807 56.8799h-89.0898v78.2402l-74.6699 34.29c22.3398 14.0498 48.3398 22.5898 76.3398 22.5898\nc16.4658 -0.00683594 42.0732 -5.36523 57.1602 -11.96c18.4502 37.2197 8.25977 61.96 1.40039 72.3203c-0.787109 1.14062 -1.42578 3.19043 -1.42578 4.57617c0 1.82227 1.03711 4.35449 2.31543 5.65332l22.9004 23c1.29688 1.31836 3.85156 2.38867 5.70117 2.38867\nc2.1123 0 4.90234 -1.33398 6.22852 -2.97852c18.5596 -23.4805 35.2998 -71.9102 3.13965 -131.75z\" />\n    <glyph glyph-name=\"pizza-slice\" unicode=\"&#xf818;\" \nd=\"M158.87 447.85c181.91 -17.1699 332.02 -164.93 352.899 -345.71c1.87012 -16.2197 -7.89941 -31.54 -23.6191 -35.8994l-56.9404 -15.7803c-7.94043 186.39 -134.86 311.51 -322.479 317l14.8096 56.2705c4.12988 15.6992 19.1699 25.6396 35.3301 24.1191z\nM100.4 335.85c176.069 -1.95996 294.88 -119.25 299.149 -294.14l-379 -105.1c-1.1709 -0.324219 -3.1084 -0.587891 -4.32422 -0.587891c-8.94824 0 -16.21 7.26172 -16.21 16.21c0 1.1582 0.239258 3.00781 0.53418 4.12793zM128 32c17.6641 0 32 14.3359 32 32\ns-14.3359 32 -32 32s-32 -14.3359 -32 -32s14.3359 -32 32 -32zM176 184c17.6641 0 32 14.3359 32 32s-14.3359 32 -32 32s-32 -14.3359 -32 -32s14.3359 -32 32 -32zM280 80c17.6641 0 32 14.3359 32 32s-14.3359 32 -32 32s-32 -14.3359 -32 -32s14.3359 -32 32 -32z\" />\n    <glyph glyph-name=\"trash-restore\" unicode=\"&#xf829;\" horiz-adv-x=\"448\" \nd=\"M53.2002 -19l-21.2002 339h384l-21.2002 -339c-1.55469 -24.8369 -23.0146 -44.9971 -47.8994 -45h-245.801c-24.8848 0.00292969 -46.3447 20.1631 -47.8994 45zM123.31 156.8c-10.0791 -10.6201 -2.93945 -28.7998 11.3203 -28.7998h57.3701v-112\nc0 -8.83203 7.16797 -16 16 -16h32c8.83203 0 16 7.16797 16 16v112h57.3701c14.2598 0 21.3994 18.1797 11.3203 28.7998l-89.3809 94.2598c-2.52441 2.72949 -7.5918 4.94336 -11.3096 4.94336s-8.78516 -2.21387 -11.3096 -4.94336zM432 416\nc8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h120l9.40039 18.7002c3.58984 7.3418 13.1357 13.2998 21.3086 13.2998h0.0908203h114.3h0.0175781\nc8.20215 0 17.8262 -5.95801 21.4824 -13.2998l9.40039 -18.7002h120z\" />\n    <glyph glyph-name=\"trash-restore-alt\" unicode=\"&#xf82a;\" horiz-adv-x=\"448\" \nd=\"M32 -16v336h384v-336c0 -26.4961 -21.5039 -48 -48 -48h-288c-26.4961 0 -48 21.5039 -48 48zM123.31 156.8c-10.0791 -10.6201 -2.93945 -28.7998 11.3203 -28.7998h57.3701v-112c0 -8.83203 7.16797 -16 16 -16h32c8.83203 0 16 7.16797 16 16v112h57.3701\nc14.2598 0 21.3994 18.1797 11.3203 28.7998l-89.3809 94.2598c-2.52441 2.72949 -7.5918 4.94336 -11.3096 4.94336s-8.78516 -2.21387 -11.3096 -4.94336zM432 416c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16\nv32c0 8.83203 7.16797 16 16 16h120l9.40039 18.7002c3.58984 7.3418 13.1357 13.2998 21.3086 13.2998h0.0908203h114.3h0.0175781c8.20215 0 17.8262 -5.95801 21.4824 -13.2998l9.40039 -18.7002h120z\" />\n    <glyph glyph-name=\"user-nurse\" unicode=\"&#xf82f;\" horiz-adv-x=\"448\" \nd=\"M57.7803 160c-8.82227 0.00976562 -15.9814 7.17773 -15.9814 16c0 2.09277 0.761719 5.30957 1.70117 7.17969c15.2305 29.8203 31.2803 62.2305 42.1699 95.54c7.58008 23.1904 10.3301 47.6904 10.3301 72.0801v49.2002l128 48l128 -48v-49.2002\nc0 -24.3896 2.78027 -48.8896 10.3496 -72.0801c10.8701 -33.3096 26.9199 -65.6895 42.1504 -95.54c0.939453 -1.87012 1.70117 -5.08691 1.70117 -7.17969c0 -8.82227 -7.15918 -15.9902 -15.9814 -16h-82.3594c-22.5107 -19.6797 -51.6201 -32 -83.8604 -32\ns-61.3496 12.3203 -83.8604 32h-82.3594zM184 376.33v-16.6602c0 -2.75977 2.24023 -5 5 -5h21.6699v-21.6699c0 -2.75977 2.24023 -5 5 -5h16.6602c2.75977 0 5 2.24023 5 5v21.6699h21.6699c2.75977 0 5 2.24023 5 5v16.6602c0 2.75977 -2.24023 5 -5 5h-21.6699v21.6699\nc0 2.75977 -2.24023 5 -5 5h-16.6602c-2.75977 0 -5 -2.24023 -5 -5v-21.6699h-21.6699c-2.75977 0 -5 -2.24023 -5 -5zM144 288v-32c0 -44.1602 35.8398 -80 80 -80s80 35.8398 80 80v32h-160zM319.41 128c71.4902 -3.09961 128.59 -61.5996 128.59 -133.79\nc0 -32.1318 -26.0781 -58.21 -58.21 -58.21v0h-331.58c-32.1318 0 -58.21 26.0781 -58.21 58.21c0 72.1904 57.0996 130.69 128.59 133.79l95.4102 -95.3896z\" />\n    <glyph glyph-name=\"wave-square\" unicode=\"&#xf83e;\" horiz-adv-x=\"640\" \nd=\"M476 -32h-152c-19.8721 0 -36 16.1279 -36 36v348h-96v-156c0 -19.8721 -16.1279 -36 -36 -36h-140c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h112v156c0 19.8721 16.1279 36 36 36h152c19.8721 0 36 -16.1279 36 -36v-348h96v156\nc0 19.8721 16.1279 36 36 36h140c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-112v-156c0 -19.8721 -16.1279 -36 -36 -36z\" />\n    <glyph glyph-name=\"biking\" unicode=\"&#xf84a;\" horiz-adv-x=\"640\" \nd=\"M400 352c-26.4961 0 -48 21.5039 -48 48s21.5039 48 48 48s48 -21.5039 48 -48s-21.5039 -48 -48 -48zM396 231l-41.3604 33.1104l-58.25 -49.9199l41.3604 -27.5703c7.86426 -5.24316 14.248 -17.1689 14.25 -26.6201v-128c0 -17.6641 -14.3359 -32 -32 -32\ns-32 14.3359 -32 32v110.88l-81.7305 54.5205c-7.86621 5.24316 -14.251 17.1719 -14.251 26.626c0 8.12305 5.00488 19.0068 11.1719 24.2939l112 96c4.95508 4.25781 14.2803 7.71289 20.8135 7.71289c6.20215 0 15.1602 -3.15039 19.9961 -7.0332l71.2197 -57h52.7803\nc17.6641 0 32 -14.3359 32 -32s-14.3359 -32 -32 -32h-64h-0.0595703c-6.18262 0 -15.1152 3.13574 -19.9404 7zM512 192c70.6562 0 128 -57.3438 128 -128s-57.3438 -128 -128 -128s-128 57.3438 -128 128s57.3438 128 128 128zM512 0c35.3281 0 64 28.6719 64 64\ns-28.6719 64 -64 64s-64 -28.6719 -64 -64s28.6719 -64 64 -64zM128 192c70.6562 0 128 -57.3438 128 -128s-57.3438 -128 -128 -128s-128 57.3438 -128 128s57.3438 128 128 128zM128 0c35.3281 0 64 28.6719 64 64s-28.6719 64 -64 64s-64 -28.6719 -64 -64\ns28.6719 -64 64 -64z\" />\n    <glyph glyph-name=\"border-all\" unicode=\"&#xf84c;\" horiz-adv-x=\"448\" \nd=\"M416 416c17.6641 0 32 -14.3359 32 -32v-384c0 -17.6641 -14.3359 -32 -32 -32h-384c-17.6641 0 -32 14.3359 -32 32v384c0 17.6641 14.3359 32 32 32h384zM384 352h-128v-128h128v128zM192 352h-128v-128h128v128zM64 32h128v128h-128v-128zM256 32h128v128h-128v-128z\n\" />\n    <glyph glyph-name=\"border-none\" unicode=\"&#xf850;\" horiz-adv-x=\"448\" \nd=\"M240 224c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM336 224c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32\nc0 8.83203 7.16797 16 16 16h32zM432 224c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM144 224c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32\nc-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM240 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM336 32c8.83203 0 16 -7.16797 16 -16v-32\nc0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM432 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM432 128\nc8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM432 320c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32\nc0 8.83203 7.16797 16 16 16h32zM240 128c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM240 320c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32\nc-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM144 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM240 416c8.83203 0 16 -7.16797 16 -16v-32\nc0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM336 416c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM432 416\nc8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM48 224c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32\nc0 8.83203 7.16797 16 16 16h32zM48 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM48 128c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32\nc-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM48 320c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM48 416c8.83203 0 16 -7.16797 16 -16v-32\nc0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM144 416c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32z\" />\n    <glyph glyph-name=\"border-style\" unicode=\"&#xf853;\" horiz-adv-x=\"448\" \nd=\"M240 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM144 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32\nc0 8.83203 7.16797 16 16 16h32zM336 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM432 224c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32\nc-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM432 128c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM432 32c8.83203 0 16 -7.16797 16 -16v-32\nc0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM432 320c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32zM432 416\nc8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-368v-368c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v400c0 17.6641 14.3359 32 32 32h400z\" />\n    <glyph glyph-name=\"fan\" unicode=\"&#xf863;\" \nd=\"M352.57 320c81.79 0 149.3 -61.6299 159.3 -141.33c1.30957 -10.4795 -7.17969 -19.6396 -17.6201 -18.5898l-123.11 12.4102c8.34082 -22.9707 12.8604 -48.9707 12.8604 -77.0605c0 -81.79 -61.6299 -149.3 -141.33 -159.3\nc-10.4795 -1.30957 -19.6396 7.19043 -18.5898 17.6201l12.4102 123.11c-22.9707 -8.34082 -48.9707 -12.8604 -77.0605 -12.8604c-81.79 0 -149.3 61.6299 -159.3 141.33c-1.30957 10.4795 7.17969 19.6699 17.6201 18.5898l123.11 -12.4102\nc-8.34082 22.9707 -12.8604 48.9707 -12.8604 77.0605c0 81.79 61.6299 149.3 141.33 159.3c10.4795 1.30957 19.6699 -7.17969 18.5898 -17.6201l-12.4102 -123.11c22.9707 8.34082 48.9707 12.8604 77.0605 12.8604zM256 160c17.6641 0 32 14.3359 32 32\ns-14.3359 32 -32 32s-32 -14.3359 -32 -32s14.3359 -32 32 -32z\" />\n    <glyph glyph-name=\"icons\" unicode=\"&#xf86d;\" \nd=\"M116.65 228.65l-96.79 99.8301c-28 29.0293 -26.4102 77.0996 5 103.88c27.3896 23.3398 68.1895 19.1396 93.29 -6.80078l9.84961 -10.1396l9.86035 10.1396c25.1396 25.9404 65.8896 30.1406 93.2793 6.80078c31.4102 -26.7803 33.0605 -74.8799 4.91016 -103.88\nl-96.75 -99.8301c-2.55566 -2.66992 -7.62891 -4.83594 -11.3252 -4.83594c-3.69531 0 -8.76855 2.16602 -11.3242 4.83594zM260.57 128.16c15.1406 -0.0107422 27.4297 -12.3086 27.4297 -27.4502v-0.00976562v-137.25v0c0 -15.1416 -12.2891 -27.4395 -27.4297 -27.4502\nh-233.141c-15.1406 0.00585938 -27.4297 12.2988 -27.4297 27.4404v0.00976562v137.25v0.00976562c0 15.1523 12.2979 27.4502 27.4502 27.4502h0.00976562h48l7 14.2402c3.67773 9.81445 15.168 17.7793 25.6484 17.7793h0.0117188h71.71h0.0107422\nc10.4814 0 21.9717 -7.96484 25.6494 -17.7793l7.08008 -14.2402h48zM144 -20c28.7041 0 52 23.2959 52 52s-23.2959 52 -52 52s-52 -23.2959 -52 -52s23.2959 -52 52 -52zM499.4 95.9004c9.70996 0 15.75 -8.79004 10.8691 -15.7002l-92.3994 -138.91\nc-2.19629 -2.90039 -6.93262 -5.25488 -10.5713 -5.25488c-0.0957031 0 -0.25293 0.00195312 -0.348633 0.00488281c-8.03027 0 -14.1201 6.25 -12.2305 12.9004l24.2002 83h-62.3096c-7.62012 0 -13.5 5.58984 -12.5 11.8896l16.7998 106.93\nc0.839844 5.2002 6.2002 9.10059 12.5 9.10059h75.5898c8.25 0 14.2803 -6.56055 12.1797 -13.21l-22.3594 -50.75h60.5801zM478.08 447.67c17.9199 2.75 33.9199 -12.1895 33.9199 -31.6699v-144.26c-0.269531 -26.3398 -28.7998 -47.6602 -64 -47.6602\nc-35.3496 0 -64 21.4795 -64 48c0 26.5195 28.6504 48 64 48c4.46191 -0.0400391 11.6299 -0.801758 16 -1.7002v47.1797l-112 -17.2197v-108.58c-0.269531 -26.3398 -28.7998 -47.6602 -64 -47.6602c-35.3496 0 -64 21.4805 -64 48c0 26.5205 28.6504 48 64 48\nc4.46191 -0.0400391 11.6299 -0.801758 16 -1.69922v106.77c0 15.9102 10.8701 29.4102 25.5098 31.6602z\" />\n    <glyph glyph-name=\"phone-alt\" unicode=\"&#xf879;\" \nd=\"M497.39 86.2002c8.06055 -3.50586 14.6016 -13.4844 14.6016 -22.2744c0 -1.48828 -0.264648 -3.87402 -0.59082 -5.32617l-24 -104c-2.37109 -10.2666 -12.8477 -18.5996 -23.3848 -18.5996h-0.015625c-256.1 0 -464 207.5 -464 464v0.00585938\nc0 10.5371 8.33301 21.0137 18.5996 23.3838l104 24c1.45996 0.332031 3.8584 0.601562 5.35547 0.601562c8.73242 0 18.6533 -6.49707 22.1445 -14.501l48 -112c1.06836 -2.49219 1.93457 -6.71582 1.93457 -9.42773c0 -6.28613 -3.95801 -14.6064 -8.83398 -18.5723\nl-60.6006 -49.6006c31.3398 -66.4688 110.721 -145.85 177.19 -177.189l49.5996 60.5996c3.97559 4.86914 12.3047 8.82129 18.5908 8.82129c2.70508 0 6.9209 -0.860352 9.40918 -1.9209z\" />\n    <glyph glyph-name=\"phone-square-alt\" unicode=\"&#xf87b;\" horiz-adv-x=\"448\" \nd=\"M400 416c26.4961 0 48 -21.5039 48 -48v-352c0 -26.4961 -21.5039 -48 -48 -48h-352c-26.4961 0 -48 21.5039 -48 48v352c0 26.4961 21.5039 48 48 48h352zM383.61 108.63c0.198242 0.919922 0.373047 2.42969 0.389648 3.37012\nc-0.262695 5.28613 -4.33496 11.4648 -9.08984 13.79l-70 30c-1.57422 0.613281 -4.22168 1.15527 -5.91016 1.20996c-3.82422 -0.209961 -9.02539 -2.67383 -11.6104 -5.5l-31 -37.8896c-41.5469 19.6025 -91.1768 69.2324 -110.779 110.779l37.8896 31\nc2.82617 2.58496 5.29004 7.78613 5.5 11.6104c-0.0546875 1.68848 -0.597656 4.33594 -1.20996 5.91016l-30 70c-2.32812 4.75098 -8.50586 8.82324 -13.79 9.08984c-0.94043 -0.0205078 -2.4502 -0.195312 -3.37012 -0.389648l-65 -15\nc-6.19238 -1.6582 -11.4033 -8.20312 -11.6299 -14.6104c0 -160.29 130 -290 290 -290c6.58496 0.00292969 13.1309 5.21289 14.6104 11.6299z\" />\n    <glyph glyph-name=\"photo-video\" unicode=\"&#xf87c;\" horiz-adv-x=\"640\" \nd=\"M608 448c17.6641 0 32 -14.3359 32 -32v-320c0 -17.6641 -14.3359 -32 -32 -32h-128v320h-192v-64h-160v96c0 17.6641 14.3359 32 32 32h448zM232 345v30c0 4.96777 -4.03223 9 -9 9h-30c-4.96777 0 -9 -4.03223 -9 -9v-30c0 -4.96777 4.03223 -9 9 -9h30\nc4.96777 0 9 4.03223 9 9zM584 137v30c0 4.96777 -4.03223 9 -9 9h-30c-4.96777 0 -9 -4.03223 -9 -9v-30c0 -4.96777 4.03223 -9 9 -9h30c4.96777 0 9 4.03223 9 9zM584 241v30c0 4.96777 -4.03223 9 -9 9h-30c-4.96777 0 -9 -4.03223 -9 -9v-30\nc0 -4.96777 4.03223 -9 9 -9h30c4.96777 0 9 4.03223 9 9zM584 345v30c0 4.96777 -4.03223 9 -9 9h-30c-4.96777 0 -9 -4.03223 -9 -9v-30c0 -4.96777 4.03223 -9 9 -9h30c4.96777 0 9 4.03223 9 9zM416 288c17.6641 0 32 -14.3359 32 -32v-288\nc0 -17.6641 -14.3359 -32 -32 -32h-384c-17.6641 0 -32 14.3359 -32 32v288c0 17.6641 14.3359 32 32 32h384zM96 224c-17.6641 0 -32 -14.3359 -32 -32s14.3359 -32 32 -32s32 14.3359 32 32s-14.3359 32 -32 32zM384 0v96l-96 96l-128 -128l-32 32l-64 -64v-32h320z\" />\n    <glyph glyph-name=\"remove-format\" unicode=\"&#xf87d;\" horiz-adv-x=\"640\" \nd=\"M336 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-128c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h32.4902l26.5098 79.5996l67.0898 -51.8301l-9.25977 -27.7695h11.1699zM633.82 -10.0996\nc3.41309 -2.65234 6.18359 -8.3125 6.18359 -12.6357c0 -3.02734 -1.50684 -7.42383 -3.36426 -9.81445l-19.6396 -25.2705c-2.65234 -3.41211 -8.31152 -6.18262 -12.6338 -6.18262c-3.03125 0 -7.43359 1.51172 -9.82617 3.37305l-588.36 454.72\nc-3.41016 2.65234 -6.17773 8.31055 -6.17773 12.6309c0 3.02832 1.50879 7.42773 3.36816 9.81934l19.6299 25.2695c2.65234 3.41309 8.31152 6.18262 12.6338 6.18262c3.03125 0 7.43359 -1.51074 9.82617 -3.37207l114.54 -88.5205v43.9004c0 8.83203 7.16797 16 16 16\nh416c8.83203 0 16 -7.16797 16 -16v-96c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v32h-117.83l-49.1699 -147.59zM309.91 240.24l31.9199 95.7598h-117.83v-29.3604z\" />\n    <glyph glyph-name=\"sort-alpha-down-alt\" unicode=\"&#xf881;\" horiz-adv-x=\"448\" \nd=\"M176 96c14.2197 0 21.3496 -17.2598 11.3301 -27.3096l-80 -96c-2.58691 -2.58496 -7.65332 -4.68262 -11.3105 -4.68262c-3.65625 0 -8.72266 2.09766 -11.3096 4.68262l-80 96c-10.0703 10.0693 -2.90039 27.3096 11.29 27.3096h48v304c0 8.83203 7.16797 16 16 16h32\nc8.83203 0 16 -7.16797 16 -16v-304h48zM288 224c-8.83203 0 -16 7.16797 -16 16v17.6299v0.00292969c0 7.93262 4.81152 18.6475 10.7402 23.917l61.2598 70.4502h-56c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h128c8.83203 0 16 -7.16797 16 -16\nv-17.6299v-0.00292969c0 -7.93262 -4.81152 -18.6475 -10.7402 -23.917l-61.2598 -70.4502h56c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-128zM447.06 -10.6201c0.514648 -1.44043 0.931641 -3.85059 0.931641 -5.37988\nc0 -8.82715 -7.16406 -15.9951 -15.9912 -16h-24.8398h-0.0449219c-6.42773 0 -13.249 4.96387 -15.2256 11.0801l-4.40918 12.9199h-71l-4.4209 -12.9199c-1.97559 -6.11621 -8.79688 -11.0801 -15.2246 -11.0801h-0.00488281h-24.8301\nc-8.82715 0.00488281 -15.9912 7.17285 -15.9912 16c0 1.5293 0.416992 3.93945 0.931641 5.37988l59.2695 160c2.09277 5.8623 8.84375 10.6201 15.0684 10.6201h0.00195312h41.4395h0.00195312c6.22461 0 12.9756 -4.75781 15.0684 -10.6201zM335.61 48h32.7793\nl-16.3896 48z\" />\n    <glyph glyph-name=\"sort-alpha-up-alt\" unicode=\"&#xf882;\" horiz-adv-x=\"448\" \nd=\"M16 288c-14.2197 0 -21.3496 17.2598 -11.3096 27.3096l80 96c2.58594 2.58496 7.65332 4.68262 11.3096 4.68262s8.72363 -2.09766 11.3096 -4.68262l80 -96c10.0703 -10.0693 2.90039 -27.3096 -11.3096 -27.3096h-48v-304c0 -8.83203 -7.16797 -16 -16 -16h-32\nc-8.83203 0 -16 7.16797 -16 16v304h-48zM288 224c-8.83203 0 -16 7.16797 -16 16v17.6299v0.00292969c0 7.93262 4.81152 18.6475 10.7402 23.917l61.2598 70.4502h-56c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h128c8.83203 0 16 -7.16797 16 -16\nv-17.6299v-0.00292969c0 -7.93262 -4.81152 -18.6475 -10.7402 -23.917l-61.2598 -70.4502h56c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-128zM447.06 -10.6201c0.514648 -1.44043 0.931641 -3.85059 0.931641 -5.37988\nc0 -8.82715 -7.16406 -15.9951 -15.9912 -16h-24.8398h-0.0449219c-6.42773 0 -13.249 4.96387 -15.2256 11.0801l-4.40918 12.9199h-71l-4.4209 -12.9199c-1.97559 -6.11621 -8.79688 -11.0801 -15.2246 -11.0801h-0.00488281h-24.8301\nc-8.82715 0.00488281 -15.9912 7.17285 -15.9912 16c0 1.5293 0.416992 3.93945 0.931641 5.37988l59.2695 160c2.09277 5.8623 8.84375 10.6201 15.0684 10.6201h0.00195312h41.4395h0.00195312c6.22461 0 12.9756 -4.75781 15.0684 -10.6201zM335.61 48h32.7793\nl-16.3896 48z\" />\n    <glyph glyph-name=\"sort-amount-down-alt\" unicode=\"&#xf884;\" \nd=\"M240 352c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h64c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-64zM240 224c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h128c8.83203 0 16 -7.16797 16 -16v-32\nc0 -8.83203 -7.16797 -16 -16 -16h-128zM496 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-256c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h256zM240 96c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h192\nc8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-192zM176 96c14.2197 0 21.3496 -17.2598 11.3301 -27.3096l-80 -96c-2.58691 -2.58496 -7.65332 -4.68262 -11.3105 -4.68262c-3.65625 0 -8.72266 2.09766 -11.3096 4.68262l-80 96\nc-10.0801 10.0693 -2.90039 27.3096 11.29 27.3096h48v304c0 8.83203 7.16797 16 16 16h32c8.83203 0 16 -7.16797 16 -16v-304h48z\" />\n    <glyph glyph-name=\"sort-amount-up-alt\" unicode=\"&#xf885;\" \nd=\"M240 352c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h64c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-64zM240 224c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h128c8.83203 0 16 -7.16797 16 -16v-32\nc0 -8.83203 -7.16797 -16 -16 -16h-128zM496 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-256c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h256zM240 96c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h192\nc8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-192zM16 288c-14.2197 0 -21.3496 17.2598 -11.3096 27.3096l80 96c2.58594 2.58496 7.65332 4.68262 11.3096 4.68262s8.72363 -2.09766 11.3096 -4.68262l80 -96\nc10.0801 -10.0693 2.90039 -27.3096 -11.3096 -27.3096h-48v-304c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v304h-48z\" />\n    <glyph glyph-name=\"sort-numeric-down-alt\" unicode=\"&#xf886;\" horiz-adv-x=\"448\" \nd=\"M176 96c14.2197 0 21.3496 -17.2598 11.3301 -27.3096l-80 -96c-2.58691 -2.58496 -7.65332 -4.68262 -11.3105 -4.68262c-3.65625 0 -8.72266 2.09766 -11.3096 4.68262l-80 96c-10.0703 10.0693 -2.90039 27.3096 11.29 27.3096h48v304c0 8.83203 7.16797 16 16 16h32\nc8.83203 0 16 -7.16797 16 -16v-304h48zM400 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-96c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h16v64h-16c-8.82422 0.0078125 -15.9863 7.17578 -15.9863 16\nc0 2.08984 0.759766 5.30176 1.69629 7.16992l16 32c2.44141 4.87012 8.84277 8.8252 14.29 8.83008h48c8.83203 0 16 -7.16797 16 -16v-112h16zM330.17 413.09c53.4502 14.25 101.83 -25.8799 101.85 -77.0898v-10.7695c0 -70.3906 -28.25 -107.23 -86.25 -132\nc-8.36914 -3.58008 -18.0293 1.2793 -20.8994 9.90918l-9.90039 20c-2.62012 7.87012 0.610352 16.9404 8.18066 20.3408c6.2793 2.71387 15.6201 8.49805 20.8496 12.9092c-47.6396 4.76074 -83.0996 51.4805 -68.8301 102.53c6.80762 23.4512 31.4482 47.7197 55 54.1699z\nM352 316c11.04 0 20 8.95996 20 20s-8.95996 20 -20 20s-20 -8.95996 -20 -20s8.95996 -20 20 -20z\" />\n    <glyph glyph-name=\"sort-numeric-up-alt\" unicode=\"&#xf887;\" horiz-adv-x=\"448\" \nd=\"M107.31 411.31l80 -96c10.0703 -10.0693 2.90039 -27.3096 -11.3096 -27.3096h-48v-304c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v304h-48c-14.2197 0 -21.3496 17.2598 -11.3096 27.3096l80 96\nc2.58594 2.58496 7.65332 4.68262 11.3096 4.68262s8.72363 -2.09766 11.3096 -4.68262zM400 32c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-96c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h16v64h-16\nc-8.82422 0.0078125 -15.9863 7.17578 -15.9863 16c0 2.08984 0.759766 5.30176 1.69629 7.16992l16 32c2.44141 4.87012 8.84277 8.8252 14.29 8.83008h48c8.83203 0 16 -7.16797 16 -16v-112h16zM330.17 413.09c53.4502 14.25 101.83 -25.8799 101.85 -77.0898v-10.7695\nc0 -70.3906 -28.25 -107.23 -86.25 -132c-8.36914 -3.58008 -18.0293 1.2793 -20.8994 9.90918l-9.90039 20c-2.62012 7.87012 0.610352 16.9404 8.18066 20.3408c6.2793 2.71387 15.6201 8.49805 20.8496 12.9092c-47.6396 4.76074 -83.0996 51.4805 -68.8301 102.53\nc6.80762 23.4512 31.4482 47.7197 55 54.1699zM352 316c11.04 0 20 8.95996 20 20s-8.95996 20 -20 20s-20 -8.95996 -20 -20s8.95996 -20 20 -20z\" />\n    <glyph glyph-name=\"spell-check\" unicode=\"&#xf891;\" horiz-adv-x=\"576\" \nd=\"M272 192c-8.83203 0 -16 7.16797 -16 16v224c0 8.83203 7.16797 16 16 16h75c42.2998 0 80.9004 -30.5703 84.6699 -72.6797c0.186523 -2.02051 0.337891 -5.30762 0.337891 -7.33691c0 -11.0186 -4.20996 -27.8516 -9.39746 -37.5732\nc14.0186 -13.0674 25.3965 -39.2256 25.3965 -58.3906c0 -1.29199 -0.0615234 -3.38867 -0.136719 -4.67969c-2.50977 -43.1396 -41.3105 -75.3398 -84.5098 -75.3398h-91.3604zM312 392v-48h40c13.248 0 24 10.752 24 24s-10.752 24 -24 24h-40zM312 296v-48h56\nc13.248 0 24 10.752 24 24s-10.752 24 -24 24h-56zM155.12 425.75l68.2998 -213.48c0.320312 -1.15625 0.580078 -3.06934 0.580078 -4.26953c0 -8.83203 -7.16797 -16 -16 -16v0h-24.9297h-0.000976562c-6.71875 0 -13.626 5.25488 -15.4189 11.7305l-11.9404 36.2695\nh-87.4199l-11.9404 -36.2695c-1.79297 -6.47559 -8.7002 -11.7305 -15.4189 -11.7305h-0.000976562h-24.9297c-8.82617 0.00488281 -15.9902 7.17383 -15.9902 16c0 1.2002 0.259766 3.11328 0.580078 4.26953l68.29 213.48c3.92871 12.2822 17.583 22.25 30.4785 22.25\nh0.00195312h25.2793h0.00195312c12.8955 0 26.5498 -9.96777 30.4785 -22.25zM89.3701 304h45.2598l-22.6299 68.7002zM571.37 171.52c2.58203 -2.58594 4.65723 -7.65039 4.65723 -11.3047c0 -3.64551 -2.08594 -8.70117 -4.65723 -11.2852l-208 -208.21\nc-2.5752 -2.60449 -7.6377 -4.71777 -11.2998 -4.71777c-3.66309 0 -8.72559 2.11328 -11.3008 4.71777l-112 112.21c-2.57617 2.58496 -4.66699 7.64551 -4.66699 11.2949c0 3.65039 2.09082 8.70996 4.66699 11.2949l45.3008 45.3008\nc2.57324 2.60352 7.63379 4.71777 11.2949 4.71777s8.72168 -2.11426 11.2949 -4.71777l55.4102 -55.5l151.5 151.5c2.57324 2.60352 7.63379 4.71777 11.2949 4.71777s8.72168 -2.11426 11.2949 -4.71777z\" />\n    <glyph glyph-name=\"voicemail\" unicode=\"&#xf897;\" horiz-adv-x=\"640\" \nd=\"M496 320c79.4883 0 144 -64.5117 144 -144s-64.5117 -144 -144 -144h-352c-79.4844 0.00390625 -143.993 64.5156 -143.993 144c0 79.4883 64.5117 144 144 144s144 -64.5117 144 -144c0 -24.1113 -10.8711 -59.9512 -24.2666 -80h112.52\nc-13.3955 20.0488 -24.2666 55.8887 -24.2666 80c0 79.4883 64.5117 144 144 144h0.00683594zM64 176c0 -44.1602 35.8398 -80 80 -80s80 35.8398 80 80s-35.8398 80 -80 80s-80 -35.8398 -80 -80zM496 96c44.1602 0 80 35.8398 80 80s-35.8398 80 -80 80\ns-80 -35.8398 -80 -80s35.8398 -80 80 -80z\" />\n  </font>\n</defs></svg>\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_024_sample_app_persist_db/app/src/static/css/styles.css",
    "content": "body {\n    background-color: #f4f4f4;\n    margin-top: 50px;\n    font-family: 'Lato';\n}\n\n.item {\n    background-color: white;\n    padding: 15px;\n    margin-bottom: 15px;\n    border: transparent;\n    border-radius: 5px;\n    box-shadow: 0 0 1em #ccc;\n    transition: all .2s ease-in-out;\n}\n\n.item:hover {\n    box-shadow: 0 0 1em #aaa;\n}\n\n.item.completed {\n    text-decoration: line-through;\n}\n\n.toggles {\n    color: black;\n}\n\n.name {\n    padding-top: 3px;\n}\n\n.remove {\n    padding-left: 0;\n}\n\nbutton:focus {\n    border: 1px solid #333;\n}"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_024_sample_app_persist_db/app/src/static/index.html",
    "content": "\n<!DOCTYPE html>\n<html>\n<head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no, maximum-scale=1.0, user-scalable=0\" />\n    <link rel=\"stylesheet\" href=\"css/bootstrap.min.css\" crossorigin=\"anonymous\" />\n    <link rel=\"stylesheet\" href=\"css/font-awesome/all.min.css\" crossorigin=\"anonymous\" />\n    <link href=\"https://fonts.googleapis.com/css?family=Lato&display=swap\" rel=\"stylesheet\" />\n    <link rel=\"stylesheet\" href=\"css/styles.css\" />\n    <title>Todo App</title>\n</head>\n<body>\n    <div id=\"root\"></div>\n    <script src=\"js/react.production.min.js\"></script>\n    <script src=\"js/react-dom.production.min.js\"></script>\n    <script src=\"js/react-bootstrap.js\"></script>\n    <script src=\"js/babel.min.js\"></script>\n    <script type=\"text/babel\" src=\"js/app.js\"></script>\n</body>\n</html>\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_024_sample_app_persist_db/app/src/static/js/app.js",
    "content": "function App() {\n    const { Container, Row, Col } = ReactBootstrap;\n    return (\n        <Container>\n            <Row>\n                <Col md={{ offset: 3, span: 6 }}>\n                    <TodoListCard />\n                </Col>\n            </Row>\n        </Container>\n    );\n}\n\nfunction TodoListCard() {\n    const [items, setItems] = React.useState(null);\n\n    React.useEffect(() => {\n        fetch('/items')\n            .then(r => r.json())\n            .then(setItems);\n    }, []);\n\n    const onNewItem = React.useCallback(\n        newItem => {\n            setItems([...items, newItem]);\n        },\n        [items],\n    );\n\n    const onItemUpdate = React.useCallback(\n        item => {\n            const index = items.findIndex(i => i.id === item.id);\n            setItems([\n                ...items.slice(0, index),\n                item,\n                ...items.slice(index + 1),\n            ]);\n        },\n        [items],\n    );\n\n    const onItemRemoval = React.useCallback(\n        item => {\n            const index = items.findIndex(i => i.id === item.id);\n            setItems([...items.slice(0, index), ...items.slice(index + 1)]);\n        },\n        [items],\n    );\n\n    if (items === null) return 'Loading...';\n\n    return (\n        <React.Fragment>\n            <AddItemForm onNewItem={onNewItem} />\n            {items.length === 0 && (\n                <p className=\"text-center\">You have no todo items yet! Add one above!</p>\n            )}\n            {items.map(item => (\n                <ItemDisplay\n                    item={item}\n                    key={item.id}\n                    onItemUpdate={onItemUpdate}\n                    onItemRemoval={onItemRemoval}\n                />\n            ))}\n        </React.Fragment>\n    );\n}\n\nfunction AddItemForm({ onNewItem }) {\n    const { Form, InputGroup, Button } = ReactBootstrap;\n\n    const [newItem, setNewItem] = React.useState('');\n    const [submitting, setSubmitting] = React.useState(false);\n\n    const submitNewItem = e => {\n        e.preventDefault();\n        setSubmitting(true);\n        fetch('/items', {\n            method: 'POST',\n            body: JSON.stringify({ name: newItem }),\n            headers: { 'Content-Type': 'application/json' },\n        })\n            .then(r => r.json())\n            .then(item => {\n                onNewItem(item);\n                setSubmitting(false);\n                setNewItem('');\n            });\n    };\n\n    return (\n        <Form onSubmit={submitNewItem}>\n            <InputGroup className=\"mb-3\">\n                <Form.Control\n                    value={newItem}\n                    onChange={e => setNewItem(e.target.value)}\n                    type=\"text\"\n                    placeholder=\"New Item\"\n                    aria-describedby=\"basic-addon1\"\n                />\n                <InputGroup.Append>\n                    <Button\n                        type=\"submit\"\n                        variant=\"success\"\n                        disabled={!newItem.length}\n                        className={submitting ? 'disabled' : ''}\n                    >\n                        {submitting ? 'Adding...' : 'Add Item'}\n                    </Button>\n                </InputGroup.Append>\n            </InputGroup>\n        </Form>\n    );\n}\n\nfunction ItemDisplay({ item, onItemUpdate, onItemRemoval }) {\n    const { Container, Row, Col, Button } = ReactBootstrap;\n\n    const toggleCompletion = () => {\n        fetch(`/items/${item.id}`, {\n            method: 'PUT',\n            body: JSON.stringify({\n                name: item.name,\n                completed: !item.completed,\n            }),\n            headers: { 'Content-Type': 'application/json' },\n        })\n            .then(r => r.json())\n            .then(onItemUpdate);\n    };\n\n    const removeItem = () => {\n        fetch(`/items/${item.id}`, { method: 'DELETE' }).then(() =>\n            onItemRemoval(item),\n        );\n    };\n\n    return (\n        <Container fluid className={`item ${item.completed && 'completed'}`}>\n            <Row>\n                <Col xs={1} className=\"text-center\">\n                    <Button\n                        className=\"toggles\"\n                        size=\"sm\"\n                        variant=\"link\"\n                        onClick={toggleCompletion}\n                        aria-label={\n                            item.completed\n                                ? 'Mark item as incomplete'\n                                : 'Mark item as complete'\n                        }\n                    >\n                        <i\n                            className={`far ${\n                                item.completed ? 'fa-check-square' : 'fa-square'\n                            }`}\n                        />\n                    </Button>\n                </Col>\n                <Col xs={10} className=\"name\">\n                    {item.name}\n                </Col>\n                <Col xs={1} className=\"text-center remove\">\n                    <Button\n                        size=\"sm\"\n                        variant=\"link\"\n                        onClick={removeItem}\n                        aria-label=\"Remove Item\"\n                    >\n                        <i className=\"fa fa-trash text-danger\" />\n                    </Button>\n                </Col>\n            </Row>\n        </Container>\n    );\n}\n\nReactDOM.render(<App />, document.getElementById('root'));\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_024_sample_app_persist_db/app/src/static/js/react-bootstrap.js",
    "content": "(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"), require(\"react-dom\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\", \"react-dom\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ReactBootstrap\"] = factory(require(\"react\"), require(\"react-dom\"));\n\telse\n\t\troot[\"ReactBootstrap\"] = factory(root[\"React\"], root[\"ReactDOM\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE__1__, __WEBPACK_EXTERNAL_MODULE__6__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 86);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nif (false) { var throwOnDirectAccess, ReactIs; } else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = __webpack_require__(58)();\n}\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__1__;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n  Copyright (c) 2017 Jed Watson.\n  Licensed under the MIT License (MIT), see\n  http://jedwatson.github.io/classnames\n*/\n\n/* global define */\n(function () {\n  'use strict';\n\n  var hasOwn = {}.hasOwnProperty;\n\n  function classNames() {\n    var classes = [];\n\n    for (var i = 0; i < arguments.length; i++) {\n      var arg = arguments[i];\n      if (!arg) continue;\n      var argType = typeof arg;\n\n      if (argType === 'string' || argType === 'number') {\n        classes.push(arg);\n      } else if (Array.isArray(arg) && arg.length) {\n        var inner = classNames.apply(null, arg);\n\n        if (inner) {\n          classes.push(inner);\n        }\n      } else if (argType === 'object') {\n        for (var key in arg) {\n          if (hasOwn.call(arg, key) && arg[key]) {\n            classes.push(key);\n          }\n        }\n      }\n    }\n\n    return classes.join(' ');\n  }\n\n  if ( true && module.exports) {\n    classNames.default = classNames;\n    module.exports = classNames;\n  } else if (true) {\n    // register as 'classnames', consistent with npm package name\n    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {\n      return classNames;\n    }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n  } else {}\n})();\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n\nmodule.exports = _assertThisInitialized;\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports) {\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nmodule.exports = _defineProperty;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports) {\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    \"default\": obj\n  };\n}\n\nmodule.exports = _interopRequireDefault;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__6__;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = uncontrollable;\n\nvar _react = _interopRequireDefault(__webpack_require__(1));\n\nvar _invariant = _interopRequireDefault(__webpack_require__(24));\n\nvar Utils = _interopRequireWildcard(__webpack_require__(39));\n\nfunction _interopRequireWildcard(obj) {\n  if (obj && obj.__esModule) {\n    return obj;\n  } else {\n    var newObj = {};\n\n    if (obj != null) {\n      for (var key in obj) {\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\n          var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};\n\n          if (desc.get || desc.set) {\n            Object.defineProperty(newObj, key, desc);\n          } else {\n            newObj[key] = obj[key];\n          }\n        }\n      }\n    }\n\n    newObj.default = obj;\n    return newObj;\n  }\n}\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n\nfunction uncontrollable(Component, controlledValues, methods) {\n  if (methods === void 0) {\n    methods = [];\n  }\n\n  var displayName = Component.displayName || Component.name || 'Component';\n  var canAcceptRef = Utils.canAcceptRef(Component);\n  var controlledProps = Object.keys(controlledValues);\n  var PROPS_TO_OMIT = controlledProps.map(Utils.defaultKey);\n  !(canAcceptRef || !methods.length) ?  false ? undefined : invariant(false) : void 0;\n\n  var UncontrolledComponent =\n  /*#__PURE__*/\n  function (_React$Component) {\n    _inheritsLoose(UncontrolledComponent, _React$Component);\n\n    function UncontrolledComponent() {\n      var _this;\n\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n      _this.handlers = Object.create(null);\n      controlledProps.forEach(function (propName) {\n        var handlerName = controlledValues[propName];\n\n        var handleChange = function handleChange(value) {\n          if (_this.props[handlerName]) {\n            var _this$props;\n\n            _this._notifying = true;\n\n            for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n              args[_key2 - 1] = arguments[_key2];\n            }\n\n            (_this$props = _this.props)[handlerName].apply(_this$props, [value].concat(args));\n\n            _this._notifying = false;\n          }\n\n          _this._values[propName] = value;\n          if (!_this.unmounted) _this.forceUpdate();\n        };\n\n        _this.handlers[handlerName] = handleChange;\n      });\n      if (methods.length) _this.attachRef = function (ref) {\n        _this.inner = ref;\n      };\n      return _this;\n    }\n\n    var _proto = UncontrolledComponent.prototype;\n\n    _proto.shouldComponentUpdate = function shouldComponentUpdate() {\n      //let the forceUpdate trigger the update\n      return !this._notifying;\n    };\n\n    _proto.componentWillMount = function componentWillMount() {\n      var _this2 = this;\n\n      var props = this.props;\n      this._values = Object.create(null);\n      controlledProps.forEach(function (key) {\n        _this2._values[key] = props[Utils.defaultKey(key)];\n      });\n    };\n\n    _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n      var _this3 = this;\n\n      var props = this.props;\n      controlledProps.forEach(function (key) {\n        /**\n         * If a prop switches from controlled to Uncontrolled\n         * reset its value to the defaultValue\n         */\n        if (!Utils.isProp(nextProps, key) && Utils.isProp(props, key)) {\n          _this3._values[key] = nextProps[Utils.defaultKey(key)];\n        }\n      });\n    };\n\n    _proto.componentWillUnmount = function componentWillUnmount() {\n      this.unmounted = true;\n    };\n\n    _proto.render = function render() {\n      var _this4 = this;\n\n      var _this$props2 = this.props,\n          innerRef = _this$props2.innerRef,\n          props = _objectWithoutPropertiesLoose(_this$props2, [\"innerRef\"]);\n\n      PROPS_TO_OMIT.forEach(function (prop) {\n        delete props[prop];\n      });\n      var newProps = {};\n      controlledProps.forEach(function (propName) {\n        var propValue = _this4.props[propName];\n        newProps[propName] = propValue !== undefined ? propValue : _this4._values[propName];\n      });\n      return _react.default.createElement(Component, _extends({}, props, newProps, this.handlers, {\n        ref: innerRef || this.attachRef\n      }));\n    };\n\n    return UncontrolledComponent;\n  }(_react.default.Component);\n\n  UncontrolledComponent.displayName = \"Uncontrolled(\" + displayName + \")\";\n  UncontrolledComponent.propTypes = _extends({\n    innerRef: function innerRef() {}\n  }, Utils.uncontrolledPropTypes(controlledValues, displayName));\n  methods.forEach(function (method) {\n    UncontrolledComponent.prototype[method] = function $proxiedMethod() {\n      var _this$inner;\n\n      return (_this$inner = this.inner)[method].apply(_this$inner, arguments);\n    };\n  });\n  var WrappedComponent = UncontrolledComponent;\n\n  if (_react.default.forwardRef) {\n    WrappedComponent = _react.default.forwardRef(function (props, ref) {\n      return _react.default.createElement(UncontrolledComponent, _extends({}, props, {\n        innerRef: ref\n      }));\n    });\n    WrappedComponent.propTypes = UncontrolledComponent.propTypes;\n  }\n\n  WrappedComponent.ControlledComponent = Component;\n  /**\n   * useful when wrapping a Component and you want to control\n   * everything\n   */\n\n  WrappedComponent.deferControlTo = function (newComponent, additions, nextMethods) {\n    if (additions === void 0) {\n      additions = {};\n    }\n\n    return uncontrollable(newComponent, _extends({}, controlledValues, additions), nextMethods);\n  };\n\n  return WrappedComponent;\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = useEventCallback;\n\nvar _react = __webpack_require__(1);\n\nvar _useCommittedRef = _interopRequireDefault(__webpack_require__(71));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction useEventCallback(fn) {\n  var ref = (0, _useCommittedRef.default)(fn);\n  return (0, _react.useCallback)(function () {\n    return ref.current.apply(void 0, arguments);\n  }, [ref]);\n}\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = qsa; // Zepto.js\n// (c) 2010-2015 Thomas Fuchs\n// Zepto.js may be freely distributed under the MIT license.\n\nvar simpleSelectorRE = /^[\\w-]*$/;\nvar toArray = Function.prototype.bind.call(Function.prototype.call, [].slice);\n\nfunction qsa(element, selector) {\n  var maybeID = selector[0] === '#',\n      maybeClass = selector[0] === '.',\n      nameOnly = maybeID || maybeClass ? selector.slice(1) : selector,\n      isSimple = simpleSelectorRE.test(nameOnly),\n      found;\n\n  if (isSimple) {\n    if (maybeID) {\n      element = element.getElementById ? element : document;\n      return (found = element.getElementById(nameOnly)) ? [found] : [];\n    }\n\n    if (element.getElementsByClassName && maybeClass) return toArray(element.getElementsByClassName(nameOnly));\n    return toArray(element.getElementsByTagName(selector));\n  }\n\n  return toArray(element.querySelectorAll(selector));\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _default = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = style;\n\nvar _camelizeStyle = _interopRequireDefault(__webpack_require__(40));\n\nvar _hyphenateStyle = _interopRequireDefault(__webpack_require__(60));\n\nvar _getComputedStyle2 = _interopRequireDefault(__webpack_require__(62));\n\nvar _removeStyle = _interopRequireDefault(__webpack_require__(63));\n\nvar _properties = __webpack_require__(26);\n\nvar _isTransform = _interopRequireDefault(__webpack_require__(64));\n\nfunction style(node, property, value) {\n  var css = '';\n  var transforms = '';\n  var props = property;\n\n  if (typeof property === 'string') {\n    if (value === undefined) {\n      return node.style[(0, _camelizeStyle.default)(property)] || (0, _getComputedStyle2.default)(node).getPropertyValue((0, _hyphenateStyle.default)(property));\n    } else {\n      (props = {})[property] = value;\n    }\n  }\n\n  Object.keys(props).forEach(function (key) {\n    var value = props[key];\n\n    if (!value && value !== 0) {\n      (0, _removeStyle.default)(node, (0, _hyphenateStyle.default)(key));\n    } else if ((0, _isTransform.default)(key)) {\n      transforms += key + \"(\" + value + \") \";\n    } else {\n      css += (0, _hyphenateStyle.default)(key) + \": \" + value + \";\";\n    }\n  });\n\n  if (transforms) {\n    css += _properties.transform + \": \" + transforms + \";\";\n  }\n\n  node.style.cssText += ';' + css;\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = exports.EXITING = exports.ENTERED = exports.ENTERING = exports.EXITED = exports.UNMOUNTED = void 0;\n\nvar PropTypes = _interopRequireWildcard(__webpack_require__(0));\n\nvar _react = _interopRequireDefault(__webpack_require__(1));\n\nvar _reactDom = _interopRequireDefault(__webpack_require__(6));\n\nvar _reactLifecyclesCompat = __webpack_require__(65);\n\nvar _PropTypes = __webpack_require__(66);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _interopRequireWildcard(obj) {\n  if (obj && obj.__esModule) {\n    return obj;\n  } else {\n    var newObj = {};\n\n    if (obj != null) {\n      for (var key in obj) {\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\n          var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};\n\n          if (desc.get || desc.set) {\n            Object.defineProperty(newObj, key, desc);\n          } else {\n            newObj[key] = obj[key];\n          }\n        }\n      }\n    }\n\n    newObj.default = obj;\n    return newObj;\n  }\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n\nvar UNMOUNTED = 'unmounted';\nexports.UNMOUNTED = UNMOUNTED;\nvar EXITED = 'exited';\nexports.EXITED = EXITED;\nvar ENTERING = 'entering';\nexports.ENTERING = ENTERING;\nvar ENTERED = 'entered';\nexports.ENTERED = ENTERED;\nvar EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n *   transition: `opacity ${duration}ms ease-in-out`,\n *   opacity: 0,\n * }\n *\n * const transitionStyles = {\n *   entering: { opacity: 0 },\n *   entered:  { opacity: 1 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n *   <Transition in={inProp} timeout={duration}>\n *     {state => (\n *       <div style={{\n *         ...defaultStyle,\n *         ...transitionStyles[state]\n *       }}>\n *         I'm a fade Transition!\n *       </div>\n *     )}\n *   </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n *  - `'entering'`\n *  - `'entered'`\n *  - `'exiting'`\n *  - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n *   const [inProp, setInProp] = useState(false);\n *   return (\n *     <div>\n *       <Transition in={inProp} timeout={500}>\n *         {state => (\n *           // ...\n *         )}\n *       </Transition>\n *       <button onClick={() => setInProp(true)}>\n *         Click to Enter\n *       </button>\n *     </div>\n *   );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nexports.EXITING = EXITING;\n\nvar Transition =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Transition, _React$Component);\n\n  function Transition(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n    var parentGroup = context.transitionGroup; // In the context of a TransitionGroup all enters are really appears\n\n    var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n    var initialStatus;\n    _this.appearStatus = null;\n\n    if (props.in) {\n      if (appear) {\n        initialStatus = EXITED;\n        _this.appearStatus = ENTERING;\n      } else {\n        initialStatus = ENTERED;\n      }\n    } else {\n      if (props.unmountOnExit || props.mountOnEnter) {\n        initialStatus = UNMOUNTED;\n      } else {\n        initialStatus = EXITED;\n      }\n    }\n\n    _this.state = {\n      status: initialStatus\n    };\n    _this.nextCallback = null;\n    return _this;\n  }\n\n  var _proto = Transition.prototype;\n\n  _proto.getChildContext = function getChildContext() {\n    return {\n      transitionGroup: null // allows for nested Transitions\n\n    };\n  };\n\n  Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n    var nextIn = _ref.in;\n\n    if (nextIn && prevState.status === UNMOUNTED) {\n      return {\n        status: EXITED\n      };\n    }\n\n    return null;\n  }; // getSnapshotBeforeUpdate(prevProps) {\n  //   let nextStatus = null\n  //   if (prevProps !== this.props) {\n  //     const { status } = this.state\n  //     if (this.props.in) {\n  //       if (status !== ENTERING && status !== ENTERED) {\n  //         nextStatus = ENTERING\n  //       }\n  //     } else {\n  //       if (status === ENTERING || status === ENTERED) {\n  //         nextStatus = EXITING\n  //       }\n  //     }\n  //   }\n  //   return { nextStatus }\n  // }\n\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.updateStatus(true, this.appearStatus);\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    var nextStatus = null;\n\n    if (prevProps !== this.props) {\n      var status = this.state.status;\n\n      if (this.props.in) {\n        if (status !== ENTERING && status !== ENTERED) {\n          nextStatus = ENTERING;\n        }\n      } else {\n        if (status === ENTERING || status === ENTERED) {\n          nextStatus = EXITING;\n        }\n      }\n    }\n\n    this.updateStatus(false, nextStatus);\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.cancelNextCallback();\n  };\n\n  _proto.getTimeouts = function getTimeouts() {\n    var timeout = this.props.timeout;\n    var exit, enter, appear;\n    exit = enter = appear = timeout;\n\n    if (timeout != null && typeof timeout !== 'number') {\n      exit = timeout.exit;\n      enter = timeout.enter; // TODO: remove fallback for next major\n\n      appear = timeout.appear !== undefined ? timeout.appear : enter;\n    }\n\n    return {\n      exit: exit,\n      enter: enter,\n      appear: appear\n    };\n  };\n\n  _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n    if (mounting === void 0) {\n      mounting = false;\n    }\n\n    if (nextStatus !== null) {\n      // nextStatus will always be ENTERING or EXITING.\n      this.cancelNextCallback();\n\n      var node = _reactDom.default.findDOMNode(this);\n\n      if (nextStatus === ENTERING) {\n        this.performEnter(node, mounting);\n      } else {\n        this.performExit(node);\n      }\n    } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n      this.setState({\n        status: UNMOUNTED\n      });\n    }\n  };\n\n  _proto.performEnter = function performEnter(node, mounting) {\n    var _this2 = this;\n\n    var enter = this.props.enter;\n    var appearing = this.context.transitionGroup ? this.context.transitionGroup.isMounting : mounting;\n    var timeouts = this.getTimeouts();\n    var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n    // if we are mounting and running this it means appear _must_ be set\n\n    if (!mounting && !enter) {\n      this.safeSetState({\n        status: ENTERED\n      }, function () {\n        _this2.props.onEntered(node);\n      });\n      return;\n    }\n\n    this.props.onEnter(node, appearing);\n    this.safeSetState({\n      status: ENTERING\n    }, function () {\n      _this2.props.onEntering(node, appearing);\n\n      _this2.onTransitionEnd(node, enterTimeout, function () {\n        _this2.safeSetState({\n          status: ENTERED\n        }, function () {\n          _this2.props.onEntered(node, appearing);\n        });\n      });\n    });\n  };\n\n  _proto.performExit = function performExit(node) {\n    var _this3 = this;\n\n    var exit = this.props.exit;\n    var timeouts = this.getTimeouts(); // no exit animation skip right to EXITED\n\n    if (!exit) {\n      this.safeSetState({\n        status: EXITED\n      }, function () {\n        _this3.props.onExited(node);\n      });\n      return;\n    }\n\n    this.props.onExit(node);\n    this.safeSetState({\n      status: EXITING\n    }, function () {\n      _this3.props.onExiting(node);\n\n      _this3.onTransitionEnd(node, timeouts.exit, function () {\n        _this3.safeSetState({\n          status: EXITED\n        }, function () {\n          _this3.props.onExited(node);\n        });\n      });\n    });\n  };\n\n  _proto.cancelNextCallback = function cancelNextCallback() {\n    if (this.nextCallback !== null) {\n      this.nextCallback.cancel();\n      this.nextCallback = null;\n    }\n  };\n\n  _proto.safeSetState = function safeSetState(nextState, callback) {\n    // This shouldn't be necessary, but there are weird race conditions with\n    // setState callbacks and unmounting in testing, so always make sure that\n    // we can cancel any pending setState callbacks after we unmount.\n    callback = this.setNextCallback(callback);\n    this.setState(nextState, callback);\n  };\n\n  _proto.setNextCallback = function setNextCallback(callback) {\n    var _this4 = this;\n\n    var active = true;\n\n    this.nextCallback = function (event) {\n      if (active) {\n        active = false;\n        _this4.nextCallback = null;\n        callback(event);\n      }\n    };\n\n    this.nextCallback.cancel = function () {\n      active = false;\n    };\n\n    return this.nextCallback;\n  };\n\n  _proto.onTransitionEnd = function onTransitionEnd(node, timeout, handler) {\n    this.setNextCallback(handler);\n    var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n    if (!node || doesNotHaveTimeoutOrListener) {\n      setTimeout(this.nextCallback, 0);\n      return;\n    }\n\n    if (this.props.addEndListener) {\n      this.props.addEndListener(node, this.nextCallback);\n    }\n\n    if (timeout != null) {\n      setTimeout(this.nextCallback, timeout);\n    }\n  };\n\n  _proto.render = function render() {\n    var status = this.state.status;\n\n    if (status === UNMOUNTED) {\n      return null;\n    }\n\n    var _this$props = this.props,\n        children = _this$props.children,\n        childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\"]); // filter props for Transtition\n\n\n    delete childProps.in;\n    delete childProps.mountOnEnter;\n    delete childProps.unmountOnExit;\n    delete childProps.appear;\n    delete childProps.enter;\n    delete childProps.exit;\n    delete childProps.timeout;\n    delete childProps.addEndListener;\n    delete childProps.onEnter;\n    delete childProps.onEntering;\n    delete childProps.onEntered;\n    delete childProps.onExit;\n    delete childProps.onExiting;\n    delete childProps.onExited;\n\n    if (typeof children === 'function') {\n      return children(status, childProps);\n    }\n\n    var child = _react.default.Children.only(children);\n\n    return _react.default.cloneElement(child, childProps);\n  };\n\n  return Transition;\n}(_react.default.Component);\n\nTransition.contextTypes = {\n  transitionGroup: PropTypes.object\n};\nTransition.childContextTypes = {\n  transitionGroup: function transitionGroup() {}\n};\nTransition.propTypes =  false ? undefined : {};\n\nfunction noop() {}\n\nTransition.defaultProps = {\n  in: false,\n  mountOnEnter: false,\n  unmountOnExit: false,\n  appear: false,\n  enter: true,\n  exit: true,\n  onEnter: noop,\n  onEntering: noop,\n  onEntered: noop,\n  onExit: noop,\n  onExiting: noop,\n  onExited: noop\n};\nTransition.UNMOUNTED = 0;\nTransition.EXITED = 1;\nTransition.ENTERING = 2;\nTransition.ENTERED = 3;\nTransition.EXITING = 4;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(Transition);\n\nexports.default = _default;\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = isRequiredForA11y;\n\nfunction isRequiredForA11y(validator) {\n  return function validate(props, propName, componentName, location, propFullName) {\n    var componentNameSafe = componentName || '<<anonymous>>';\n    var propFullNameSafe = propFullName || propName;\n\n    if (props[propName] == null) {\n      return new Error('The ' + location + ' `' + propFullNameSafe + '` is required to make ' + ('`' + componentNameSafe + '` accessible for users of assistive ') + 'technologies such as screen readers.');\n    }\n\n    for (var _len = arguments.length, args = Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++) {\n      args[_key - 5] = arguments[_key];\n    }\n\n    return validator.apply(undefined, [props, propName, componentName, location, propFullName].concat(args));\n  };\n}\n\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports) {\n\nfunction _extends() {\n  module.exports = _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = useUncontrolled;\n\nvar _react = __webpack_require__(1);\n\nvar Utils = _interopRequireWildcard(__webpack_require__(39));\n\nfunction _interopRequireWildcard(obj) {\n  if (obj && obj.__esModule) {\n    return obj;\n  } else {\n    var newObj = {};\n\n    if (obj != null) {\n      for (var key in obj) {\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\n          var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};\n\n          if (desc.get || desc.set) {\n            Object.defineProperty(newObj, key, desc);\n          } else {\n            newObj[key] = obj[key];\n          }\n        }\n      }\n    }\n\n    newObj.default = obj;\n    return newObj;\n  }\n}\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nfunction _toPropertyKey(arg) {\n  var key = _toPrimitive(arg, \"string\");\n\n  return typeof key === \"symbol\" ? key : String(key);\n}\n\nfunction _toPrimitive(input, hint) {\n  if (typeof input !== \"object\" || input === null) return input;\n  var prim = input[Symbol.toPrimitive];\n\n  if (prim !== undefined) {\n    var res = prim.call(input, hint || \"default\");\n    if (typeof res !== \"object\") return res;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n\n  return (hint === \"string\" ? String : Number)(input);\n}\n\nfunction useUncontrolled(props, config) {\n  return Object.keys(config).reduce(function (result, fieldName) {\n    var _extends2;\n\n    var defaultValue = result[Utils.defaultKey(fieldName)],\n        propsValue = result[fieldName],\n        rest = _objectWithoutPropertiesLoose(result, [Utils.defaultKey(fieldName), fieldName].map(_toPropertyKey));\n\n    var handlerName = config[fieldName];\n    var prevProps = (0, _react.useRef)({});\n\n    var _useState = (0, _react.useState)(defaultValue),\n        stateValue = _useState[0],\n        setState = _useState[1];\n\n    var isProp = Utils.isProp(props, fieldName);\n    var wasProp = Utils.isProp(prevProps.current, fieldName);\n    prevProps.current = props;\n    /**\n     * If a prop switches from controlled to Uncontrolled\n     * reset its value to the defaultValue\n     */\n\n    if (!isProp && wasProp) {\n      setState(defaultValue);\n    }\n\n    var propsHandler = props[handlerName];\n    var handler = (0, _react.useCallback)(function (value) {\n      for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        args[_key - 1] = arguments[_key];\n      }\n\n      if (propsHandler) propsHandler.apply(void 0, [value].concat(args));\n      setState(value);\n    }, [setState, propsHandler]);\n    return _extends({}, rest, (_extends2 = {}, _extends2[fieldName] = isProp ? propsValue : stateValue, _extends2[handlerName] = handler, _extends2));\n  }, props);\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = ownerDocument;\n\nfunction ownerDocument(node) {\n  return node && node.ownerDocument || document;\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports) {\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n\nmodule.exports = _inheritsLoose;\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = scrollbarSize;\n\nvar _inDOM = _interopRequireDefault(__webpack_require__(10));\n\nvar size;\n\nfunction scrollbarSize(recalc) {\n  if (!size && size !== 0 || recalc) {\n    if (_inDOM.default) {\n      var scrollDiv = document.createElement('div');\n      scrollDiv.style.position = 'absolute';\n      scrollDiv.style.top = '-9999px';\n      scrollDiv.style.width = '50px';\n      scrollDiv.style.height = '50px';\n      scrollDiv.style.overflow = 'scroll';\n      document.body.appendChild(scrollDiv);\n      size = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n      document.body.removeChild(scrollDiv);\n    }\n  }\n\n  return size;\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.isRequiredForA11y = exports.elementType = exports.deprecated = exports.componentOrElement = exports.all = undefined;\n\nvar _all = __webpack_require__(34);\n\nvar _all2 = _interopRequireDefault(_all);\n\nvar _componentOrElement = __webpack_require__(20);\n\nvar _componentOrElement2 = _interopRequireDefault(_componentOrElement);\n\nvar _deprecated = __webpack_require__(67);\n\nvar _deprecated2 = _interopRequireDefault(_deprecated);\n\nvar _elementType = __webpack_require__(28);\n\nvar _elementType2 = _interopRequireDefault(_elementType);\n\nvar _isRequiredForA11y = __webpack_require__(13);\n\nvar _isRequiredForA11y2 = _interopRequireDefault(_isRequiredForA11y);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nexports.all = _all2.default;\nexports.componentOrElement = _componentOrElement2.default;\nexports.deprecated = _deprecated2.default;\nexports.elementType = _elementType2.default;\nexports.isRequiredForA11y = _isRequiredForA11y2.default;\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n  return typeof obj;\n} : function (obj) {\n  return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _createChainableTypeChecker = __webpack_require__(27);\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(_createChainableTypeChecker);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction validate(props, propName, componentName, location, propFullName) {\n  var propValue = props[propName];\n  var propType = typeof propValue === 'undefined' ? 'undefined' : _typeof(propValue);\n\n  if (_react2.default.isValidElement(propValue)) {\n    return new Error('Invalid ' + location + ' `' + propFullName + '` of type ReactElement ' + ('supplied to `' + componentName + '`, expected a ReactComponent or a ') + 'DOMElement. You can usually obtain a ReactComponent or DOMElement ' + 'from a ReactElement by attaching a ref to it.');\n  }\n\n  if ((propType !== 'object' || typeof propValue.render !== 'function') && propValue.nodeType !== 1) {\n    return new Error('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected a ReactComponent or a ') + 'DOMElement.');\n  }\n\n  return null;\n}\n\nexports.default = (0, _createChainableTypeChecker2.default)(validate);\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = \"production\" !== 'production';\n\nvar warning = function () {};\n\nif (__DEV__) {\n  var printWarning = function printWarning(format, args) {\n    var len = arguments.length;\n    args = new Array(len > 1 ? len - 1 : 0);\n\n    for (var key = 1; key < len; key++) {\n      args[key - 1] = arguments[key];\n    }\n\n    var argIndex = 0;\n    var message = 'Warning: ' + format.replace(/%s/g, function () {\n      return args[argIndex++];\n    });\n\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) {}\n  };\n\n  warning = function (condition, format, args) {\n    var len = arguments.length;\n    args = new Array(len > 2 ? len - 2 : 0);\n\n    for (var key = 2; key < len; key++) {\n      args[key - 2] = arguments[key];\n    }\n\n    if (format === undefined) {\n      throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n    }\n\n    if (!condition) {\n      printWarning.apply(null, [format].concat(args));\n    }\n  };\n}\n\nmodule.exports = warning;\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = _interopRequireDefault(__webpack_require__(10));\n\nvar _default = function () {\n  // HTML DOM and SVG DOM may have different support levels,\n  // so we need to check on context instead of a document root element.\n  return _inDOM.default ? function (context, node) {\n    if (context.contains) {\n      return context.contains(node);\n    } else if (context.compareDocumentPosition) {\n      return context === node || !!(context.compareDocumentPosition(node) & 16);\n    } else {\n      return fallback(context, node);\n    }\n  } : fallback;\n}();\n\nexports.default = _default;\n\nfunction fallback(context, node) {\n  if (node) do {\n    if (node === context) return true;\n  } while (node = node.parentNode);\n  return false;\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _properties = _interopRequireDefault(__webpack_require__(26));\n\nvar _style = _interopRequireDefault(__webpack_require__(11));\n\nfunction onEnd(node, handler, duration) {\n  var fakeEvent = {\n    target: node,\n    currentTarget: node\n  },\n      backup;\n  if (!_properties.default.end) duration = 0;else if (duration == null) duration = parseDuration(node) || 0;\n\n  if (_properties.default.end) {\n    node.addEventListener(_properties.default.end, done, false);\n    backup = setTimeout(function () {\n      return done(fakeEvent);\n    }, (duration || 100) * 1.5);\n  } else setTimeout(done.bind(null, fakeEvent), 0);\n\n  function done(event) {\n    if (event.target !== event.currentTarget) return;\n    clearTimeout(backup);\n    event.target.removeEventListener(_properties.default.end, done);\n    handler.call(this);\n  }\n}\n\nonEnd._parseDuration = parseDuration;\nvar _default = onEnd;\nexports.default = _default;\n\nfunction parseDuration(node) {\n  var str = (0, _style.default)(node, _properties.default.duration),\n      mult = str.indexOf('ms') === -1 ? 1000 : 1;\n  return parseFloat(str) * mult;\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function (condition, format, a, b, c, d, e, f) {\n  if (false) {}\n\n  if (!condition) {\n    var error;\n\n    if (format === undefined) {\n      error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n    } else {\n      var args = [a, b, c, d, e, f];\n      var argIndex = 0;\n      error = new Error(format.replace(/%s/g, function () {\n        return args[argIndex++];\n      }));\n      error.name = 'Invariant Violation';\n    }\n\n    error.framesToPop = 1; // we don't care about invariant's own frame\n\n    throw error;\n  }\n};\n\nmodule.exports = invariant;\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _on = _interopRequireDefault(__webpack_require__(43));\n\nexports.on = _on.default;\n\nvar _off = _interopRequireDefault(__webpack_require__(44));\n\nexports.off = _off.default;\n\nvar _filter = _interopRequireDefault(__webpack_require__(78));\n\nexports.filter = _filter.default;\n\nvar _listen = _interopRequireDefault(__webpack_require__(30));\n\nexports.listen = _listen.default;\nvar _default = {\n  on: _on.default,\n  off: _off.default,\n  filter: _filter.default,\n  listen: _listen.default\n};\nexports.default = _default;\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = exports.animationEnd = exports.animationDelay = exports.animationTiming = exports.animationDuration = exports.animationName = exports.transitionEnd = exports.transitionDuration = exports.transitionDelay = exports.transitionTiming = exports.transitionProperty = exports.transform = void 0;\n\nvar _inDOM = _interopRequireDefault(__webpack_require__(10));\n\nvar transform = 'transform';\nexports.transform = transform;\nvar prefix, transitionEnd, animationEnd;\nexports.animationEnd = animationEnd;\nexports.transitionEnd = transitionEnd;\nvar transitionProperty, transitionDuration, transitionTiming, transitionDelay;\nexports.transitionDelay = transitionDelay;\nexports.transitionTiming = transitionTiming;\nexports.transitionDuration = transitionDuration;\nexports.transitionProperty = transitionProperty;\nvar animationName, animationDuration, animationTiming, animationDelay;\nexports.animationDelay = animationDelay;\nexports.animationTiming = animationTiming;\nexports.animationDuration = animationDuration;\nexports.animationName = animationName;\n\nif (_inDOM.default) {\n  var _getTransitionPropert = getTransitionProperties();\n\n  prefix = _getTransitionPropert.prefix;\n  exports.transitionEnd = transitionEnd = _getTransitionPropert.transitionEnd;\n  exports.animationEnd = animationEnd = _getTransitionPropert.animationEnd;\n  exports.transform = transform = prefix + \"-\" + transform;\n  exports.transitionProperty = transitionProperty = prefix + \"-transition-property\";\n  exports.transitionDuration = transitionDuration = prefix + \"-transition-duration\";\n  exports.transitionDelay = transitionDelay = prefix + \"-transition-delay\";\n  exports.transitionTiming = transitionTiming = prefix + \"-transition-timing-function\";\n  exports.animationName = animationName = prefix + \"-animation-name\";\n  exports.animationDuration = animationDuration = prefix + \"-animation-duration\";\n  exports.animationTiming = animationTiming = prefix + \"-animation-delay\";\n  exports.animationDelay = animationDelay = prefix + \"-animation-timing-function\";\n}\n\nvar _default = {\n  transform: transform,\n  end: transitionEnd,\n  property: transitionProperty,\n  timing: transitionTiming,\n  delay: transitionDelay,\n  duration: transitionDuration\n};\nexports.default = _default;\n\nfunction getTransitionProperties() {\n  var style = document.createElement('div').style;\n  var vendorMap = {\n    O: function O(e) {\n      return \"o\" + e.toLowerCase();\n    },\n    Moz: function Moz(e) {\n      return e.toLowerCase();\n    },\n    Webkit: function Webkit(e) {\n      return \"webkit\" + e;\n    },\n    ms: function ms(e) {\n      return \"MS\" + e;\n    }\n  };\n  var vendors = Object.keys(vendorMap);\n  var transitionEnd, animationEnd;\n  var prefix = '';\n\n  for (var i = 0; i < vendors.length; i++) {\n    var vendor = vendors[i];\n\n    if (vendor + \"TransitionProperty\" in style) {\n      prefix = \"-\" + vendor.toLowerCase();\n      transitionEnd = vendorMap[vendor]('TransitionEnd');\n      animationEnd = vendorMap[vendor]('AnimationEnd');\n      break;\n    }\n  }\n\n  if (!transitionEnd && 'transitionProperty' in style) transitionEnd = 'transitionend';\n  if (!animationEnd && 'animationName' in style) animationEnd = 'animationend';\n  style = null;\n  return {\n    animationEnd: animationEnd,\n    transitionEnd: transitionEnd,\n    prefix: prefix\n  };\n}\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = createChainableTypeChecker;\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n// Mostly taken from ReactPropTypes.\n\nfunction createChainableTypeChecker(validate) {\n  function checkType(isRequired, props, propName, componentName, location, propFullName) {\n    var componentNameSafe = componentName || '<<anonymous>>';\n    var propFullNameSafe = propFullName || propName;\n\n    if (props[propName] == null) {\n      if (isRequired) {\n        return new Error('Required ' + location + ' `' + propFullNameSafe + '` was not specified ' + ('in `' + componentNameSafe + '`.'));\n      }\n\n      return null;\n    }\n\n    for (var _len = arguments.length, args = Array(_len > 6 ? _len - 6 : 0), _key = 6; _key < _len; _key++) {\n      args[_key - 6] = arguments[_key];\n    }\n\n    return validate.apply(undefined, [props, propName, componentNameSafe, location, propFullNameSafe].concat(args));\n  }\n\n  var chainedCheckType = checkType.bind(null, false);\n  chainedCheckType.isRequired = checkType.bind(null, true);\n  return chainedCheckType;\n}\n\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactIs = __webpack_require__(69);\n\nvar _createChainableTypeChecker = __webpack_require__(27);\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(_createChainableTypeChecker);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction elementType(props, propName, componentName, location, propFullName) {\n  var propValue = props[propName];\n\n  if (_react2.default.isValidElement(propValue)) {\n    return new Error('Invalid ' + location + ' `' + propFullName + '` of type ReactElement ' + ('supplied to `' + componentName + '`,expected an element type (a string ') + ', component class, or function component).');\n  }\n\n  if (!(0, _reactIs.isValidElementType)(propValue)) {\n    return new Error('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected an element type (a string ') + ', component class, or function component).');\n  }\n\n  return null;\n}\n\nexports.default = (0, _createChainableTypeChecker2.default)(elementType);\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(__webpack_require__(1));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nvar DropdownContext = _react.default.createContext({\n  menuRef: function menuRef() {},\n  toggleRef: function toggleRef() {},\n  onToggle: function onToggle() {},\n  toggleNode: undefined,\n  alignEnd: null,\n  show: null,\n  drop: null\n});\n\nvar _default = DropdownContext;\nexports.default = _default;\nmodule.exports = exports.default;\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = _interopRequireDefault(__webpack_require__(10));\n\nvar _on = _interopRequireDefault(__webpack_require__(43));\n\nvar _off = _interopRequireDefault(__webpack_require__(44));\n\nvar listen = function listen() {};\n\nif (_inDOM.default) {\n  listen = function listen(node, eventName, handler, capture) {\n    (0, _on.default)(node, eventName, handler, capture);\n    return function () {\n      (0, _off.default)(node, eventName, handler, capture);\n    };\n  };\n}\n\nvar _default = listen;\nexports.default = _default;\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 31 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n\n// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js\nvar objectWithoutPropertiesLoose = __webpack_require__(53);\nvar objectWithoutPropertiesLoose_default = /*#__PURE__*/__webpack_require__.n(objectWithoutPropertiesLoose);\n\n// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/extends.js\nvar helpers_extends = __webpack_require__(14);\nvar extends_default = /*#__PURE__*/__webpack_require__.n(helpers_extends);\n\n// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/inheritsLoose.js\nvar inheritsLoose = __webpack_require__(17);\nvar inheritsLoose_default = /*#__PURE__*/__webpack_require__.n(inheritsLoose);\n\n// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/assertThisInitialized.js\nvar assertThisInitialized = __webpack_require__(3);\nvar assertThisInitialized_default = /*#__PURE__*/__webpack_require__.n(assertThisInitialized);\n\n// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/defineProperty.js\nvar defineProperty = __webpack_require__(4);\nvar defineProperty_default = /*#__PURE__*/__webpack_require__.n(defineProperty);\n\n// EXTERNAL MODULE: external {\"root\":\"React\",\"commonjs2\":\"react\",\"commonjs\":\"react\",\"amd\":\"react\"}\nvar external_root_React_commonjs2_react_commonjs_react_amd_react_ = __webpack_require__(1);\n\n// EXTERNAL MODULE: ./node_modules/popper.js/dist/esm/popper.js\nvar popper = __webpack_require__(38);\n\n// EXTERNAL MODULE: ./node_modules/react-popper/node_modules/create-react-context/lib/index.js\nvar lib = __webpack_require__(54);\nvar lib_default = /*#__PURE__*/__webpack_require__.n(lib);\n\n// CONCATENATED MODULE: ./node_modules/react-popper/lib/esm/Manager.js\n\n\n\n\n\n\nvar ManagerContext = lib_default()({\n  setReferenceNode: undefined,\n  referenceNode: undefined\n});\n\nvar Manager_Manager =\n/*#__PURE__*/\nfunction (_React$Component) {\n  inheritsLoose_default()(Manager, _React$Component);\n\n  function Manager() {\n    var _this;\n\n    _this = _React$Component.call(this) || this;\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"setReferenceNode\", function (referenceNode) {\n      if (!referenceNode || _this.state.context.referenceNode === referenceNode) {\n        return;\n      }\n\n      _this.setState(function (_ref) {\n        var context = _ref.context;\n        return {\n          context: extends_default()({}, context, {\n            referenceNode: referenceNode\n          })\n        };\n      });\n    });\n\n    _this.state = {\n      context: {\n        setReferenceNode: _this.setReferenceNode,\n        referenceNode: undefined\n      }\n    };\n    return _this;\n  }\n\n  var _proto = Manager.prototype;\n\n  _proto.render = function render() {\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_[\"createElement\"](ManagerContext.Provider, {\n      value: this.state.context\n    }, this.props.children);\n  };\n\n  return Manager;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"Component\"]);\n\n\n// CONCATENATED MODULE: ./node_modules/react-popper/lib/esm/utils.js\n/**\n * Takes an argument and if it's an array, returns the first item in the array,\n * otherwise returns the argument. Used for Preact compatibility.\n */\nvar unwrapArray = function unwrapArray(arg) {\n  return Array.isArray(arg) ? arg[0] : arg;\n};\n/**\n * Takes a maybe-undefined function and arbitrary args and invokes the function\n * only if it is defined.\n */\n\nvar safeInvoke = function safeInvoke(fn) {\n  if (typeof fn === \"function\") {\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    return fn.apply(void 0, args);\n  }\n};\n// CONCATENATED MODULE: ./node_modules/react-popper/lib/esm/Popper.js\n\n\n\n\n\n\n\n\n\nvar initialStyle = {\n  position: 'absolute',\n  top: 0,\n  left: 0,\n  opacity: 0,\n  pointerEvents: 'none'\n};\nvar initialArrowStyle = {};\nvar Popper_InnerPopper =\n/*#__PURE__*/\nfunction (_React$Component) {\n  inheritsLoose_default()(InnerPopper, _React$Component);\n\n  function InnerPopper() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"state\", {\n      data: undefined,\n      placement: undefined\n    });\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"popperInstance\", void 0);\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"popperNode\", null);\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"arrowNode\", null);\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"setPopperNode\", function (popperNode) {\n      if (!popperNode || _this.popperNode === popperNode) return;\n      safeInvoke(_this.props.innerRef, popperNode);\n      _this.popperNode = popperNode;\n\n      _this.updatePopperInstance();\n    });\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"setArrowNode\", function (arrowNode) {\n      _this.arrowNode = arrowNode;\n    });\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"updateStateModifier\", {\n      enabled: true,\n      order: 900,\n      fn: function fn(data) {\n        var placement = data.placement;\n\n        _this.setState({\n          data: data,\n          placement: placement\n        });\n\n        return data;\n      }\n    });\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"getOptions\", function () {\n      return {\n        placement: _this.props.placement,\n        eventsEnabled: _this.props.eventsEnabled,\n        positionFixed: _this.props.positionFixed,\n        modifiers: extends_default()({}, _this.props.modifiers, {\n          arrow: extends_default()({}, _this.props.modifiers && _this.props.modifiers.arrow, {\n            enabled: !!_this.arrowNode,\n            element: _this.arrowNode\n          }),\n          applyStyle: {\n            enabled: false\n          },\n          updateStateModifier: _this.updateStateModifier\n        })\n      };\n    });\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"getPopperStyle\", function () {\n      return !_this.popperNode || !_this.state.data ? initialStyle : extends_default()({\n        position: _this.state.data.offsets.popper.position\n      }, _this.state.data.styles);\n    });\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"getPopperPlacement\", function () {\n      return !_this.state.data ? undefined : _this.state.placement;\n    });\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"getArrowStyle\", function () {\n      return !_this.arrowNode || !_this.state.data ? initialArrowStyle : _this.state.data.arrowStyles;\n    });\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"getOutOfBoundariesState\", function () {\n      return _this.state.data ? _this.state.data.hide : undefined;\n    });\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"destroyPopperInstance\", function () {\n      if (!_this.popperInstance) return;\n\n      _this.popperInstance.destroy();\n\n      _this.popperInstance = null;\n    });\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"updatePopperInstance\", function () {\n      _this.destroyPopperInstance();\n\n      var _assertThisInitialize = assertThisInitialized_default()(assertThisInitialized_default()(_this)),\n          popperNode = _assertThisInitialize.popperNode;\n\n      var referenceElement = _this.props.referenceElement;\n      if (!referenceElement || !popperNode) return;\n      _this.popperInstance = new popper[\"a\" /* default */](referenceElement, popperNode, _this.getOptions());\n    });\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"scheduleUpdate\", function () {\n      if (_this.popperInstance) {\n        _this.popperInstance.scheduleUpdate();\n      }\n    });\n\n    return _this;\n  }\n\n  var _proto = InnerPopper.prototype;\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n    // If the Popper.js options have changed, update the instance (destroy + create)\n    if (this.props.placement !== prevProps.placement || this.props.referenceElement !== prevProps.referenceElement || this.props.positionFixed !== prevProps.positionFixed) {\n      this.updatePopperInstance();\n    } else if (this.props.eventsEnabled !== prevProps.eventsEnabled && this.popperInstance) {\n      this.props.eventsEnabled ? this.popperInstance.enableEventListeners() : this.popperInstance.disableEventListeners();\n    } // A placement difference in state means popper determined a new placement\n    // apart from the props value. By the time the popper element is rendered with\n    // the new position Popper has already measured it, if the place change triggers\n    // a size change it will result in a misaligned popper. So we schedule an update to be sure.\n\n\n    if (prevState.placement !== this.state.placement) {\n      this.scheduleUpdate();\n    }\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    safeInvoke(this.props.innerRef, null);\n    this.destroyPopperInstance();\n  };\n\n  _proto.render = function render() {\n    return unwrapArray(this.props.children)({\n      ref: this.setPopperNode,\n      style: this.getPopperStyle(),\n      placement: this.getPopperPlacement(),\n      outOfBoundaries: this.getOutOfBoundariesState(),\n      scheduleUpdate: this.scheduleUpdate,\n      arrowProps: {\n        ref: this.setArrowNode,\n        style: this.getArrowStyle()\n      }\n    });\n  };\n\n  return InnerPopper;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"Component\"]);\n\ndefineProperty_default()(Popper_InnerPopper, \"defaultProps\", {\n  placement: 'bottom',\n  eventsEnabled: true,\n  referenceElement: undefined,\n  positionFixed: false\n});\n\nvar placements = popper[\"a\" /* default */].placements;\n\nfunction Popper(_ref) {\n  var referenceElement = _ref.referenceElement,\n      props = objectWithoutPropertiesLoose_default()(_ref, [\"referenceElement\"]);\n\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_[\"createElement\"](ManagerContext.Consumer, null, function (_ref2) {\n    var referenceNode = _ref2.referenceNode;\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_[\"createElement\"](Popper_InnerPopper, extends_default()({\n      referenceElement: referenceElement !== undefined ? referenceElement : referenceNode\n    }, props));\n  });\n}\n// EXTERNAL MODULE: ./node_modules/warning/warning.js\nvar warning = __webpack_require__(21);\nvar warning_default = /*#__PURE__*/__webpack_require__.n(warning);\n\n// CONCATENATED MODULE: ./node_modules/react-popper/lib/esm/Reference.js\n\n\n\n\n\n\n\n\n\nvar Reference_InnerReference =\n/*#__PURE__*/\nfunction (_React$Component) {\n  inheritsLoose_default()(InnerReference, _React$Component);\n\n  function InnerReference() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n    defineProperty_default()(assertThisInitialized_default()(assertThisInitialized_default()(_this)), \"refHandler\", function (node) {\n      safeInvoke(_this.props.innerRef, node);\n      safeInvoke(_this.props.setReferenceNode, node);\n    });\n\n    return _this;\n  }\n\n  var _proto = InnerReference.prototype;\n\n  _proto.render = function render() {\n    warning_default()(Boolean(this.props.setReferenceNode), '`Reference` should not be used outside of a `Manager` component.');\n    return unwrapArray(this.props.children)({\n      ref: this.refHandler\n    });\n  };\n\n  return InnerReference;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"Component\"]);\n\nfunction Reference(props) {\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_[\"createElement\"](ManagerContext.Consumer, null, function (_ref) {\n    var setReferenceNode = _ref.setReferenceNode;\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_[\"createElement\"](Reference_InnerReference, extends_default()({\n      setReferenceNode: setReferenceNode\n    }, props));\n  });\n}\n// CONCATENATED MODULE: ./node_modules/react-popper/lib/esm/index.js\n/* concated harmony reexport Popper */__webpack_require__.d(__webpack_exports__, \"Popper\", function() { return Popper; });\n/* concated harmony reexport placements */__webpack_require__.d(__webpack_exports__, \"placements\", function() { return placements; });\n/* concated harmony reexport Manager */__webpack_require__.d(__webpack_exports__, \"Manager\", function() { return Manager_Manager; });\n/* concated harmony reexport Reference */__webpack_require__.d(__webpack_exports__, \"Reference\", function() { return Reference; });\n// Public components\n\n\n\n // Public types\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = forwardRef;\n\nvar _react = _interopRequireDefault(__webpack_require__(1));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction forwardRef(renderFn, _temp) {\n  var _ref = _temp === void 0 ? {} : _temp,\n      propTypes = _ref.propTypes,\n      defaultProps = _ref.defaultProps,\n      _ref$allowFallback = _ref.allowFallback,\n      allowFallback = _ref$allowFallback === void 0 ? false : _ref$allowFallback,\n      _ref$displayName = _ref.displayName,\n      displayName = _ref$displayName === void 0 ? renderFn.name || renderFn.displayName : _ref$displayName;\n\n  var render = function render(props, ref) {\n    return renderFn(props, ref);\n  };\n\n  return Object.assign(_react.default.forwardRef || !allowFallback ? _react.default.forwardRef(render) : function (props) {\n    return render(props, null);\n  }, {\n    displayName: displayName,\n    propTypes: propTypes,\n    defaultProps: defaultProps\n  });\n}\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = camelize;\nvar rHyphen = /-(.)/g;\n\nfunction camelize(string) {\n  return string.replace(rHyphen, function (_, chr) {\n    return chr.toUpperCase();\n  });\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = all;\n\nvar _createChainableTypeChecker = __webpack_require__(27);\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(_createChainableTypeChecker);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction all() {\n  for (var _len = arguments.length, validators = Array(_len), _key = 0; _key < _len; _key++) {\n    validators[_key] = arguments[_key];\n  }\n\n  function allPropTypes() {\n    for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n\n    var error = null;\n    validators.forEach(function (validator) {\n      if (error != null) {\n        return;\n      }\n\n      var result = validator.apply(undefined, args);\n\n      if (result != null) {\n        error = result;\n      }\n    });\n    return error;\n  }\n\n  return (0, _createChainableTypeChecker2.default)(allPropTypes);\n}\n\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(0));\n\nvar _react = _interopRequireDefault(__webpack_require__(1));\n\nvar _reactPopper = __webpack_require__(31);\n\nvar _DropdownContext = _interopRequireDefault(__webpack_require__(29));\n\nvar _RootCloseWrapper = _interopRequireDefault(__webpack_require__(42));\n\nvar _mapContextToProps = _interopRequireDefault(__webpack_require__(77));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n\nvar DropdownMenu =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(DropdownMenu, _React$Component);\n\n  function DropdownMenu() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n    _this.state = {\n      toggleId: null\n    };\n    _this.popperIsInitialized = false;\n\n    _this.handleClose = function (e) {\n      if (!_this.props.onToggle) return;\n\n      _this.props.onToggle(false, e);\n    };\n\n    return _this;\n  }\n\n  var _proto = DropdownMenu.prototype;\n\n  _proto.getSnapshotBeforeUpdate = function getSnapshotBeforeUpdate(prevProps) {\n    // If, to the best we can tell, this update won't reinitialize popper,\n    // manually schedule an update\n    var shouldUpdatePopper = !prevProps.show && this.props.show && this.popperIsInitialized && // a new reference node will already trigger this internally\n    prevProps.toggleNode === this.props.toggleNode;\n\n    if (this.props.show && this.props.usePopper && !this.popperIsInitialized) {\n      this.popperIsInitialized = true;\n    }\n\n    return !!shouldUpdatePopper;\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(_, __, shouldUpdatePopper) {\n    if (shouldUpdatePopper && this.scheduleUpdate) {\n      this.scheduleUpdate();\n    }\n  };\n\n  _proto.render = function render() {\n    var _this2 = this;\n\n    var _this$props = this.props,\n        show = _this$props.show,\n        flip = _this$props.flip,\n        menuRef = _this$props.menuRef,\n        alignEnd = _this$props.alignEnd,\n        drop = _this$props.drop,\n        usePopper = _this$props.usePopper,\n        toggleNode = _this$props.toggleNode,\n        rootCloseEvent = _this$props.rootCloseEvent,\n        _this$props$popperCon = _this$props.popperConfig,\n        popperConfig = _this$props$popperCon === void 0 ? {} : _this$props$popperCon;\n    var placement = alignEnd ? 'bottom-end' : 'bottom-start';\n    if (drop === 'up') placement = alignEnd ? 'top-end' : 'top-start';\n    if (drop === 'right') placement = alignEnd ? 'right-end' : 'right-start';\n    if (drop === 'left') placement = alignEnd ? 'left-end' : 'left-start';\n    var menu = null;\n    var menuProps = {\n      ref: menuRef,\n      'aria-labelledby': toggleNode && toggleNode.id\n    };\n    var childArgs = {\n      show: show,\n      alignEnd: alignEnd,\n      close: this.handleClose\n    };\n\n    if (!usePopper) {\n      menu = this.props.children(_extends({}, childArgs, {\n        props: menuProps\n      }));\n    } else if (this.popperIsInitialized || show) {\n      // Add it this way, so it doesn't override someones usage\n      // with react-poppers <Reference>\n      if (toggleNode) popperConfig.referenceElement = toggleNode;\n      menu = _react.default.createElement(_reactPopper.Popper, _extends({}, popperConfig, {\n        innerRef: menuRef,\n        placement: placement,\n        eventsEnabled: !!show,\n        modifiers: _extends({\n          flip: {\n            enabled: !!flip\n          }\n        }, popperConfig.modifiers)\n      }), function (_ref) {\n        var ref = _ref.ref,\n            style = _ref.style,\n            popper = _objectWithoutPropertiesLoose(_ref, [\"ref\", \"style\"]);\n\n        _this2.scheduleUpdate = popper.scheduleUpdate;\n        return _this2.props.children(_extends({}, popper, childArgs, {\n          props: _extends({}, menuProps, {\n            ref: ref,\n            style: style\n          })\n        }));\n      });\n    }\n\n    return menu && _react.default.createElement(_RootCloseWrapper.default, {\n      disabled: !show,\n      event: rootCloseEvent,\n      onRootClose: this.handleClose\n    }, menu);\n  };\n\n  return DropdownMenu;\n}(_react.default.Component);\n\nDropdownMenu.displayName = 'ReactOverlaysDropdownMenu';\nDropdownMenu.propTypes = {\n  /**\n   * A render prop that returns a Menu element. The `props`\n   * argument should spread through to **a component that can accept a ref**.\n   *\n   * @type {Function ({\n   *   show: boolean,\n   *   alignEnd: boolean,\n   *   close: (?SyntheticEvent) => void,\n   *   placement: Placement,\n   *   outOfBoundaries: ?boolean,\n   *   scheduleUpdate: () => void,\n   *   props: {\n   *     ref: (?HTMLElement) => void,\n   *     style: { [string]: string | number },\n   *     aria-labelledby: ?string\n   *   },\n   *   arrowProps: {\n   *     ref: (?HTMLElement) => void,\n   *     style: { [string]: string | number },\n   *   },\n   * }) => React.Element}\n   */\n  children: _propTypes.default.func.isRequired,\n\n  /**\n   * Controls the visible state of the menu, generally this is\n   * provided by the parent `Dropdown` component,\n   * but may also be specified as a prop directly.\n   */\n  show: _propTypes.default.bool,\n\n  /**\n   * Aligns the dropdown menu to the 'end' of it's placement position.\n   * Generally this is provided by the parent `Dropdown` component,\n   * but may also be specified as a prop directly.\n   */\n  alignEnd: _propTypes.default.bool,\n\n  /**\n   * Enables the Popper.js `flip` modifier, allowing the Dropdown to\n   * automatically adjust it's placement in case of overlap with the viewport or toggle.\n   * Refer to the [flip docs](https://popper.js.org/popper-documentation.html#modifiers..flip.enabled) for more info\n   */\n  flip: _propTypes.default.bool,\n  usePopper: _propTypes.default.oneOf([true, false]),\n\n  /**\n   * A set of popper options and props passed directly to react-popper's Popper component.\n   */\n  popperConfig: _propTypes.default.object,\n\n  /**\n   * Override the default event used by RootCloseWrapper.\n   */\n  rootCloseEvent: _propTypes.default.string,\n\n  /** @private */\n  onToggle: _propTypes.default.func,\n\n  /** @private */\n  menuRef: _propTypes.default.func,\n\n  /** @private */\n  drop: _propTypes.default.string,\n\n  /** @private */\n  toggleNode: _propTypes.default.any\n};\nDropdownMenu.defaultProps = {\n  usePopper: true\n};\nvar DecoratedDropdownMenu = (0, _mapContextToProps.default)(_DropdownContext.default, function (_ref2, props) {\n  var show = _ref2.show,\n      alignEnd = _ref2.alignEnd,\n      toggle = _ref2.toggle,\n      drop = _ref2.drop,\n      menuRef = _ref2.menuRef,\n      toggleNode = _ref2.toggleNode;\n  return {\n    drop: drop,\n    menuRef: menuRef,\n    toggleNode: toggleNode,\n    onToggle: toggle,\n    show: show == null ? props.show : show,\n    alignEnd: alignEnd == null ? props.alignEnd : alignEnd\n  };\n}, DropdownMenu);\nvar _default = DecoratedDropdownMenu;\nexports.default = _default;\nmodule.exports = exports.default;\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(0));\n\nvar _react = _interopRequireDefault(__webpack_require__(1));\n\nvar _DropdownContext = _interopRequireDefault(__webpack_require__(29));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nvar propTypes = {\n  /**\n   * A render prop that returns a Toggle element. The `props`\n   * argument should spread through to **a component that can accept a ref**. Use\n   * the `onToggle` argument to toggle the menu open or closed\n   *\n   * @type {Function ({\n   *   show: boolean,\n   *   toggle: (show: boolean) => void,\n   *   props: {\n   *     ref: (?HTMLElement) => void,\n   *     aria-haspopup: true\n   *     aria-expanded: boolean\n   *   },\n   * }) => React.Element}\n   */\n  children: _propTypes.default.func.isRequired\n};\n\nfunction DropdownToggle(_ref) {\n  var children = _ref.children;\n  return _react.default.createElement(_DropdownContext.default.Consumer, null, function (_ref2) {\n    var show = _ref2.show,\n        toggle = _ref2.toggle,\n        toggleRef = _ref2.toggleRef;\n    return children({\n      show: show,\n      toggle: toggle,\n      props: {\n        ref: toggleRef,\n        'aria-haspopup': true,\n        'aria-expanded': !!show\n      }\n    });\n  });\n}\n\nDropdownToggle.displayName = 'ReactOverlaysDropdownToggle';\nDropdownToggle.propTypes = propTypes;\nvar _default = DropdownToggle;\nexports.default = _default;\nmodule.exports = exports.default;\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _class = _interopRequireDefault(__webpack_require__(80));\n\nvar _style = _interopRequireDefault(__webpack_require__(11));\n\nvar _scrollbarSize = _interopRequireDefault(__webpack_require__(18));\n\nvar _isOverflowing = _interopRequireDefault(__webpack_require__(83));\n\nvar _manageAriaHidden = __webpack_require__(85);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction findIndexOf(arr, cb) {\n  var idx = -1;\n  arr.some(function (d, i) {\n    if (cb(d, i)) {\n      idx = i;\n      return true;\n    }\n  });\n  return idx;\n}\n/**\n * Proper state managment for containers and the modals in those containers.\n *\n * @internal Used by the Modal to ensure proper styling of containers.\n */\n\n\nvar ModalManager =\n/*#__PURE__*/\nfunction () {\n  function ModalManager(_temp) {\n    var _ref = _temp === void 0 ? {} : _temp,\n        _ref$hideSiblingNodes = _ref.hideSiblingNodes,\n        hideSiblingNodes = _ref$hideSiblingNodes === void 0 ? true : _ref$hideSiblingNodes,\n        _ref$handleContainerO = _ref.handleContainerOverflow,\n        handleContainerOverflow = _ref$handleContainerO === void 0 ? true : _ref$handleContainerO;\n\n    this.hideSiblingNodes = hideSiblingNodes;\n    this.handleContainerOverflow = handleContainerOverflow;\n    this.modals = [];\n    this.containers = [];\n    this.data = [];\n    this.scrollbarSize = (0, _scrollbarSize.default)();\n  }\n\n  var _proto = ModalManager.prototype;\n\n  _proto.isContainerOverflowing = function isContainerOverflowing(modal) {\n    var data = this.data[this.containerIndexFromModal(modal)];\n    return data && data.overflowing;\n  };\n\n  _proto.containerIndexFromModal = function containerIndexFromModal(modal) {\n    return findIndexOf(this.data, function (d) {\n      return d.modals.indexOf(modal) !== -1;\n    });\n  };\n\n  _proto.setContainerStyle = function setContainerStyle(containerState, container) {\n    var style = {\n      overflow: 'hidden' // we are only interested in the actual `style` here\n      // becasue we will override it\n\n    };\n    containerState.style = {\n      overflow: container.style.overflow,\n      paddingRight: container.style.paddingRight\n    };\n\n    if (containerState.overflowing) {\n      // use computed style, here to get the real padding\n      // to add our scrollbar width\n      style.paddingRight = parseInt((0, _style.default)(container, 'paddingRight') || 0, 10) + this.scrollbarSize + \"px\";\n    }\n\n    (0, _style.default)(container, style);\n  };\n\n  _proto.removeContainerStyle = function removeContainerStyle(containerState, container) {\n    var style = containerState.style;\n    Object.keys(style).forEach(function (key) {\n      container.style[key] = style[key];\n    });\n  };\n\n  _proto.add = function add(modal, container, className) {\n    var modalIdx = this.modals.indexOf(modal);\n    var containerIdx = this.containers.indexOf(container);\n\n    if (modalIdx !== -1) {\n      return modalIdx;\n    }\n\n    modalIdx = this.modals.length;\n    this.modals.push(modal);\n\n    if (this.hideSiblingNodes) {\n      (0, _manageAriaHidden.hideSiblings)(container, modal);\n    }\n\n    if (containerIdx !== -1) {\n      this.data[containerIdx].modals.push(modal);\n      return modalIdx;\n    }\n\n    var data = {\n      modals: [modal],\n      //right now only the first modal of a container will have its classes applied\n      classes: className ? className.split(/\\s+/) : [],\n      overflowing: (0, _isOverflowing.default)(container)\n    };\n\n    if (this.handleContainerOverflow) {\n      this.setContainerStyle(data, container);\n    }\n\n    data.classes.forEach(_class.default.addClass.bind(null, container));\n    this.containers.push(container);\n    this.data.push(data);\n    return modalIdx;\n  };\n\n  _proto.remove = function remove(modal) {\n    var modalIdx = this.modals.indexOf(modal);\n\n    if (modalIdx === -1) {\n      return;\n    }\n\n    var containerIdx = this.containerIndexFromModal(modal);\n    var data = this.data[containerIdx];\n    var container = this.containers[containerIdx];\n    data.modals.splice(data.modals.indexOf(modal), 1);\n    this.modals.splice(modalIdx, 1); // if that was the last modal in a container,\n    // clean up the container\n\n    if (data.modals.length === 0) {\n      data.classes.forEach(_class.default.removeClass.bind(null, container));\n\n      if (this.handleContainerOverflow) {\n        this.removeContainerStyle(data, container);\n      }\n\n      if (this.hideSiblingNodes) {\n        (0, _manageAriaHidden.showSiblings)(container, modal);\n      }\n\n      this.containers.splice(containerIdx, 1);\n      this.data.splice(containerIdx, 1);\n    } else if (this.hideSiblingNodes) {\n      //otherwise make sure the next top modal is visible to a SR\n      var _data$modals = data.modals[data.modals.length - 1],\n          backdrop = _data$modals.backdrop,\n          dialog = _data$modals.dialog;\n      (0, _manageAriaHidden.ariaHidden)(false, dialog);\n      (0, _manageAriaHidden.ariaHidden)(false, backdrop);\n    }\n  };\n\n  _proto.isTopModal = function isTopModal(modal) {\n    return !!this.modals.length && this.modals[this.modals.length - 1] === modal;\n  };\n\n  return ModalManager;\n}();\n\nvar _default = ModalManager;\nexports.default = _default;\nmodule.exports = exports.default;\n\n/***/ }),\n/* 38 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.15.0\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\nvar longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nvar timeoutDuration = 0;\n\nfor (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n  if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n    timeoutDuration = 1;\n    break;\n  }\n}\n\nfunction microtaskDebounce(fn) {\n  var called = false;\n  return function () {\n    if (called) {\n      return;\n    }\n\n    called = true;\n    window.Promise.resolve().then(function () {\n      called = false;\n      fn();\n    });\n  };\n}\n\nfunction taskDebounce(fn) {\n  var scheduled = false;\n  return function () {\n    if (!scheduled) {\n      scheduled = true;\n      setTimeout(function () {\n        scheduled = false;\n        fn();\n      }, timeoutDuration);\n    }\n  };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\n\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\n\nfunction isFunction(functionToCheck) {\n  var getType = {};\n  return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\n\n\nfunction getStyleComputedProperty(element, property) {\n  if (element.nodeType !== 1) {\n    return [];\n  } // NOTE: 1 DOM access here\n\n\n  var window = element.ownerDocument.defaultView;\n  var css = window.getComputedStyle(element, null);\n  return property ? css[property] : css;\n}\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\n\n\nfunction getParentNode(element) {\n  if (element.nodeName === 'HTML') {\n    return element;\n  }\n\n  return element.parentNode || element.host;\n}\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\n\n\nfunction getScrollParent(element) {\n  // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n  if (!element) {\n    return document.body;\n  }\n\n  switch (element.nodeName) {\n    case 'HTML':\n    case 'BODY':\n      return element.ownerDocument.body;\n\n    case '#document':\n      return element.body;\n  } // Firefox want us to check `-x` and `-y` variations as well\n\n\n  var _getStyleComputedProp = getStyleComputedProperty(element),\n      overflow = _getStyleComputedProp.overflow,\n      overflowX = _getStyleComputedProp.overflowX,\n      overflowY = _getStyleComputedProp.overflowY;\n\n  if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n    return element;\n  }\n\n  return getScrollParent(getParentNode(element));\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\n\nfunction isIE(version) {\n  if (version === 11) {\n    return isIE11;\n  }\n\n  if (version === 10) {\n    return isIE10;\n  }\n\n  return isIE11 || isIE10;\n}\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\n\n\nfunction getOffsetParent(element) {\n  if (!element) {\n    return document.documentElement;\n  }\n\n  var noOffsetParent = isIE(10) ? document.body : null; // NOTE: 1 DOM access here\n\n  var offsetParent = element.offsetParent || null; // Skip hidden elements which don't have an offsetParent\n\n  while (offsetParent === noOffsetParent && element.nextElementSibling) {\n    offsetParent = (element = element.nextElementSibling).offsetParent;\n  }\n\n  var nodeName = offsetParent && offsetParent.nodeName;\n\n  if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n    return element ? element.ownerDocument.documentElement : document.documentElement;\n  } // .offsetParent will return the closest TH, TD or TABLE in case\n  // no offsetParent is present, I hate this job...\n\n\n  if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n    return getOffsetParent(offsetParent);\n  }\n\n  return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n  var nodeName = element.nodeName;\n\n  if (nodeName === 'BODY') {\n    return false;\n  }\n\n  return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\n\n\nfunction getRoot(node) {\n  if (node.parentNode !== null) {\n    return getRoot(node.parentNode);\n  }\n\n  return node;\n}\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\n\n\nfunction findCommonOffsetParent(element1, element2) {\n  // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n  if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n    return document.documentElement;\n  } // Here we make sure to give as \"start\" the element that comes first in the DOM\n\n\n  var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n  var start = order ? element1 : element2;\n  var end = order ? element2 : element1; // Get common ancestor container\n\n  var range = document.createRange();\n  range.setStart(start, 0);\n  range.setEnd(end, 0);\n  var commonAncestorContainer = range.commonAncestorContainer; // Both nodes are inside #document\n\n  if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n    if (isOffsetContainer(commonAncestorContainer)) {\n      return commonAncestorContainer;\n    }\n\n    return getOffsetParent(commonAncestorContainer);\n  } // one of the nodes is inside shadowDOM, find which one\n\n\n  var element1root = getRoot(element1);\n\n  if (element1root.host) {\n    return findCommonOffsetParent(element1root.host, element2);\n  } else {\n    return findCommonOffsetParent(element1, getRoot(element2).host);\n  }\n}\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\n\n\nfunction getScroll(element) {\n  var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n  var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n  var nodeName = element.nodeName;\n\n  if (nodeName === 'BODY' || nodeName === 'HTML') {\n    var html = element.ownerDocument.documentElement;\n    var scrollingElement = element.ownerDocument.scrollingElement || html;\n    return scrollingElement[upperSide];\n  }\n\n  return element[upperSide];\n}\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\n\n\nfunction includeScroll(rect, element) {\n  var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n  var scrollTop = getScroll(element, 'top');\n  var scrollLeft = getScroll(element, 'left');\n  var modifier = subtract ? -1 : 1;\n  rect.top += scrollTop * modifier;\n  rect.bottom += scrollTop * modifier;\n  rect.left += scrollLeft * modifier;\n  rect.right += scrollLeft * modifier;\n  return rect;\n}\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\n\nfunction getBordersSize(styles, axis) {\n  var sideA = axis === 'x' ? 'Left' : 'Top';\n  var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n  return parseFloat(styles['border' + sideA + 'Width'], 10) + parseFloat(styles['border' + sideB + 'Width'], 10);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n  return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\n\nfunction getWindowSizes(document) {\n  var body = document.body;\n  var html = document.documentElement;\n  var computedStyle = isIE(10) && getComputedStyle(html);\n  return {\n    height: getSize('Height', body, html, computedStyle),\n    width: getSize('Width', body, html, computedStyle)\n  };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n};\n\nvar createClass = function () {\n  function defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  return function (Constructor, protoProps, staticProps) {\n    if (protoProps) defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) defineProperties(Constructor, staticProps);\n    return Constructor;\n  };\n}();\n\nvar defineProperty = function (obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  return target;\n};\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\n\n\nfunction getClientRect(offsets) {\n  return _extends({}, offsets, {\n    right: offsets.left + offsets.width,\n    bottom: offsets.top + offsets.height\n  });\n}\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\n\n\nfunction getBoundingClientRect(element) {\n  var rect = {}; // IE10 10 FIX: Please, don't ask, the element isn't\n  // considered in DOM in some circumstances...\n  // This isn't reproducible in IE10 compatibility mode of IE11\n\n  try {\n    if (isIE(10)) {\n      rect = element.getBoundingClientRect();\n      var scrollTop = getScroll(element, 'top');\n      var scrollLeft = getScroll(element, 'left');\n      rect.top += scrollTop;\n      rect.left += scrollLeft;\n      rect.bottom += scrollTop;\n      rect.right += scrollLeft;\n    } else {\n      rect = element.getBoundingClientRect();\n    }\n  } catch (e) {}\n\n  var result = {\n    left: rect.left,\n    top: rect.top,\n    width: rect.right - rect.left,\n    height: rect.bottom - rect.top\n  }; // subtract scrollbar size from sizes\n\n  var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n  var width = sizes.width || element.clientWidth || result.right - result.left;\n  var height = sizes.height || element.clientHeight || result.bottom - result.top;\n  var horizScrollbar = element.offsetWidth - width;\n  var vertScrollbar = element.offsetHeight - height; // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n  // we make this check conditional for performance reasons\n\n  if (horizScrollbar || vertScrollbar) {\n    var styles = getStyleComputedProperty(element);\n    horizScrollbar -= getBordersSize(styles, 'x');\n    vertScrollbar -= getBordersSize(styles, 'y');\n    result.width -= horizScrollbar;\n    result.height -= vertScrollbar;\n  }\n\n  return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n  var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n  var isIE10 = isIE(10);\n  var isHTML = parent.nodeName === 'HTML';\n  var childrenRect = getBoundingClientRect(children);\n  var parentRect = getBoundingClientRect(parent);\n  var scrollParent = getScrollParent(children);\n  var styles = getStyleComputedProperty(parent);\n  var borderTopWidth = parseFloat(styles.borderTopWidth, 10);\n  var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10); // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n\n  if (fixedPosition && isHTML) {\n    parentRect.top = Math.max(parentRect.top, 0);\n    parentRect.left = Math.max(parentRect.left, 0);\n  }\n\n  var offsets = getClientRect({\n    top: childrenRect.top - parentRect.top - borderTopWidth,\n    left: childrenRect.left - parentRect.left - borderLeftWidth,\n    width: childrenRect.width,\n    height: childrenRect.height\n  });\n  offsets.marginTop = 0;\n  offsets.marginLeft = 0; // Subtract margins of documentElement in case it's being used as parent\n  // we do this only on HTML because it's the only element that behaves\n  // differently when margins are applied to it. The margins are included in\n  // the box of the documentElement, in the other cases not.\n\n  if (!isIE10 && isHTML) {\n    var marginTop = parseFloat(styles.marginTop, 10);\n    var marginLeft = parseFloat(styles.marginLeft, 10);\n    offsets.top -= borderTopWidth - marginTop;\n    offsets.bottom -= borderTopWidth - marginTop;\n    offsets.left -= borderLeftWidth - marginLeft;\n    offsets.right -= borderLeftWidth - marginLeft; // Attach marginTop and marginLeft because in some circumstances we may need them\n\n    offsets.marginTop = marginTop;\n    offsets.marginLeft = marginLeft;\n  }\n\n  if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n    offsets = includeScroll(offsets, parent);\n  }\n\n  return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n  var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n  var html = element.ownerDocument.documentElement;\n  var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n  var width = Math.max(html.clientWidth, window.innerWidth || 0);\n  var height = Math.max(html.clientHeight, window.innerHeight || 0);\n  var scrollTop = !excludeScroll ? getScroll(html) : 0;\n  var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n  var offset = {\n    top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n    left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n    width: width,\n    height: height\n  };\n  return getClientRect(offset);\n}\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\n\n\nfunction isFixed(element) {\n  var nodeName = element.nodeName;\n\n  if (nodeName === 'BODY' || nodeName === 'HTML') {\n    return false;\n  }\n\n  if (getStyleComputedProperty(element, 'position') === 'fixed') {\n    return true;\n  }\n\n  var parentNode = getParentNode(element);\n\n  if (!parentNode) {\n    return false;\n  }\n\n  return isFixed(parentNode);\n}\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\n\nfunction getFixedPositionOffsetParent(element) {\n  // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n  if (!element || !element.parentElement || isIE()) {\n    return document.documentElement;\n  }\n\n  var el = element.parentElement;\n\n  while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n    el = el.parentElement;\n  }\n\n  return el || document.documentElement;\n}\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\n\n\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n  var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; // NOTE: 1 DOM access here\n\n  var boundaries = {\n    top: 0,\n    left: 0\n  };\n  var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference); // Handle viewport case\n\n  if (boundariesElement === 'viewport') {\n    boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n  } else {\n    // Handle other cases based on DOM element used as boundaries\n    var boundariesNode = void 0;\n\n    if (boundariesElement === 'scrollParent') {\n      boundariesNode = getScrollParent(getParentNode(reference));\n\n      if (boundariesNode.nodeName === 'BODY') {\n        boundariesNode = popper.ownerDocument.documentElement;\n      }\n    } else if (boundariesElement === 'window') {\n      boundariesNode = popper.ownerDocument.documentElement;\n    } else {\n      boundariesNode = boundariesElement;\n    }\n\n    var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition); // In case of HTML, we need a different computation\n\n    if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n      var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n          height = _getWindowSizes.height,\n          width = _getWindowSizes.width;\n\n      boundaries.top += offsets.top - offsets.marginTop;\n      boundaries.bottom = height + offsets.top;\n      boundaries.left += offsets.left - offsets.marginLeft;\n      boundaries.right = width + offsets.left;\n    } else {\n      // for all the other DOM elements, this one is good\n      boundaries = offsets;\n    }\n  } // Add paddings\n\n\n  padding = padding || 0;\n  var isPaddingNumber = typeof padding === 'number';\n  boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n  boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n  boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n  boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n  return boundaries;\n}\n\nfunction getArea(_ref) {\n  var width = _ref.width,\n      height = _ref.height;\n  return width * height;\n}\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n  var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n  if (placement.indexOf('auto') === -1) {\n    return placement;\n  }\n\n  var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n  var rects = {\n    top: {\n      width: boundaries.width,\n      height: refRect.top - boundaries.top\n    },\n    right: {\n      width: boundaries.right - refRect.right,\n      height: boundaries.height\n    },\n    bottom: {\n      width: boundaries.width,\n      height: boundaries.bottom - refRect.bottom\n    },\n    left: {\n      width: refRect.left - boundaries.left,\n      height: boundaries.height\n    }\n  };\n  var sortedAreas = Object.keys(rects).map(function (key) {\n    return _extends({\n      key: key\n    }, rects[key], {\n      area: getArea(rects[key])\n    });\n  }).sort(function (a, b) {\n    return b.area - a.area;\n  });\n  var filteredAreas = sortedAreas.filter(function (_ref2) {\n    var width = _ref2.width,\n        height = _ref2.height;\n    return width >= popper.clientWidth && height >= popper.clientHeight;\n  });\n  var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n  var variation = placement.split('-')[1];\n  return computedPlacement + (variation ? '-' + variation : '');\n}\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\n\n\nfunction getReferenceOffsets(state, popper, reference) {\n  var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n  var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);\n  return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\n\n\nfunction getOuterSizes(element) {\n  var window = element.ownerDocument.defaultView;\n  var styles = window.getComputedStyle(element);\n  var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n  var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n  var result = {\n    width: element.offsetWidth + y,\n    height: element.offsetHeight + x\n  };\n  return result;\n}\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\n\n\nfunction getOppositePlacement(placement) {\n  var hash = {\n    left: 'right',\n    right: 'left',\n    bottom: 'top',\n    top: 'bottom'\n  };\n  return placement.replace(/left|right|bottom|top/g, function (matched) {\n    return hash[matched];\n  });\n}\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\n\n\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n  placement = placement.split('-')[0]; // Get popper node sizes\n\n  var popperRect = getOuterSizes(popper); // Add position, width and height to our offsets object\n\n  var popperOffsets = {\n    width: popperRect.width,\n    height: popperRect.height\n  }; // depending by the popper placement we have to compute its offsets slightly differently\n\n  var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n  var mainSide = isHoriz ? 'top' : 'left';\n  var secondarySide = isHoriz ? 'left' : 'top';\n  var measurement = isHoriz ? 'height' : 'width';\n  var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n  popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n\n  if (placement === secondarySide) {\n    popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n  } else {\n    popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n  }\n\n  return popperOffsets;\n}\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\n\n\nfunction find(arr, check) {\n  // use native find if supported\n  if (Array.prototype.find) {\n    return arr.find(check);\n  } // use `filter` to obtain the same behavior of `find`\n\n\n  return arr.filter(check)[0];\n}\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\n\n\nfunction findIndex(arr, prop, value) {\n  // use native findIndex if supported\n  if (Array.prototype.findIndex) {\n    return arr.findIndex(function (cur) {\n      return cur[prop] === value;\n    });\n  } // use `find` + `indexOf` if `findIndex` isn't supported\n\n\n  var match = find(arr, function (obj) {\n    return obj[prop] === value;\n  });\n  return arr.indexOf(match);\n}\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\n\n\nfunction runModifiers(modifiers, data, ends) {\n  var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n  modifiersToRun.forEach(function (modifier) {\n    if (modifier['function']) {\n      // eslint-disable-line dot-notation\n      console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n    }\n\n    var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n\n    if (modifier.enabled && isFunction(fn)) {\n      // Add properties to offsets to make them a complete clientRect object\n      // we do this before each modifier to make sure the previous one doesn't\n      // mess with these values\n      data.offsets.popper = getClientRect(data.offsets.popper);\n      data.offsets.reference = getClientRect(data.offsets.reference);\n      data = fn(data, modifier);\n    }\n  });\n  return data;\n}\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\n\n\nfunction update() {\n  // if popper is destroyed, don't perform any further update\n  if (this.state.isDestroyed) {\n    return;\n  }\n\n  var data = {\n    instance: this,\n    styles: {},\n    arrowStyles: {},\n    attributes: {},\n    flipped: false,\n    offsets: {}\n  }; // compute reference element offsets\n\n  data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed); // compute auto placement, store placement inside the data object,\n  // modifiers will be able to edit `placement` if needed\n  // and refer to originalPlacement to know the original value\n\n  data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding); // store the computed placement inside `originalPlacement`\n\n  data.originalPlacement = data.placement;\n  data.positionFixed = this.options.positionFixed; // compute the popper offsets\n\n  data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n  data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute'; // run the modifiers\n\n  data = runModifiers(this.modifiers, data); // the first `update` will call `onCreate` callback\n  // the other ones will call `onUpdate` callback\n\n  if (!this.state.isCreated) {\n    this.state.isCreated = true;\n    this.options.onCreate(data);\n  } else {\n    this.options.onUpdate(data);\n  }\n}\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\n\n\nfunction isModifierEnabled(modifiers, modifierName) {\n  return modifiers.some(function (_ref) {\n    var name = _ref.name,\n        enabled = _ref.enabled;\n    return enabled && name === modifierName;\n  });\n}\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\n\n\nfunction getSupportedPropertyName(property) {\n  var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n  var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n  for (var i = 0; i < prefixes.length; i++) {\n    var prefix = prefixes[i];\n    var toCheck = prefix ? '' + prefix + upperProp : property;\n\n    if (typeof document.body.style[toCheck] !== 'undefined') {\n      return toCheck;\n    }\n  }\n\n  return null;\n}\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\n\n\nfunction destroy() {\n  this.state.isDestroyed = true; // touch DOM only if `applyStyle` modifier is enabled\n\n  if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n    this.popper.removeAttribute('x-placement');\n    this.popper.style.position = '';\n    this.popper.style.top = '';\n    this.popper.style.left = '';\n    this.popper.style.right = '';\n    this.popper.style.bottom = '';\n    this.popper.style.willChange = '';\n    this.popper.style[getSupportedPropertyName('transform')] = '';\n  }\n\n  this.disableEventListeners(); // remove the popper if user explicity asked for the deletion on destroy\n  // do not use `remove` because IE11 doesn't support it\n\n  if (this.options.removeOnDestroy) {\n    this.popper.parentNode.removeChild(this.popper);\n  }\n\n  return this;\n}\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\n\n\nfunction getWindow(element) {\n  var ownerDocument = element.ownerDocument;\n  return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n  var isBody = scrollParent.nodeName === 'BODY';\n  var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n  target.addEventListener(event, callback, {\n    passive: true\n  });\n\n  if (!isBody) {\n    attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n  }\n\n  scrollParents.push(target);\n}\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\n\n\nfunction setupEventListeners(reference, options, state, updateBound) {\n  // Resize event listener on window\n  state.updateBound = updateBound;\n  getWindow(reference).addEventListener('resize', state.updateBound, {\n    passive: true\n  }); // Scroll event listener on scroll parents\n\n  var scrollElement = getScrollParent(reference);\n  attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n  state.scrollElement = scrollElement;\n  state.eventsEnabled = true;\n  return state;\n}\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\n\n\nfunction enableEventListeners() {\n  if (!this.state.eventsEnabled) {\n    this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n  }\n}\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\n\n\nfunction removeEventListeners(reference, state) {\n  // Remove resize event listener on window\n  getWindow(reference).removeEventListener('resize', state.updateBound); // Remove scroll event listener on scroll parents\n\n  state.scrollParents.forEach(function (target) {\n    target.removeEventListener('scroll', state.updateBound);\n  }); // Reset state\n\n  state.updateBound = null;\n  state.scrollParents = [];\n  state.scrollElement = null;\n  state.eventsEnabled = false;\n  return state;\n}\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\n\n\nfunction disableEventListeners() {\n  if (this.state.eventsEnabled) {\n    cancelAnimationFrame(this.scheduleUpdate);\n    this.state = removeEventListeners(this.reference, this.state);\n  }\n}\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\n\n\nfunction isNumeric(n) {\n  return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\n\n\nfunction setStyles(element, styles) {\n  Object.keys(styles).forEach(function (prop) {\n    var unit = ''; // add unit if the value is numeric and is one of the following\n\n    if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n      unit = 'px';\n    }\n\n    element.style[prop] = styles[prop] + unit;\n  });\n}\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\n\n\nfunction setAttributes(element, attributes) {\n  Object.keys(attributes).forEach(function (prop) {\n    var value = attributes[prop];\n\n    if (value !== false) {\n      element.setAttribute(prop, attributes[prop]);\n    } else {\n      element.removeAttribute(prop);\n    }\n  });\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\n\n\nfunction applyStyle(data) {\n  // any property present in `data.styles` will be applied to the popper,\n  // in this way we can make the 3rd party modifiers add custom styles to it\n  // Be aware, modifiers could override the properties defined in the previous\n  // lines of this modifier!\n  setStyles(data.instance.popper, data.styles); // any property present in `data.attributes` will be applied to the popper,\n  // they will be set as HTML attributes of the element\n\n  setAttributes(data.instance.popper, data.attributes); // if arrowElement is defined and arrowStyles has some properties\n\n  if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n    setStyles(data.arrowElement, data.arrowStyles);\n  }\n\n  return data;\n}\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\n\n\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n  // compute reference element offsets\n  var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed); // compute auto placement, store placement inside the data object,\n  // modifiers will be able to edit `placement` if needed\n  // and refer to originalPlacement to know the original value\n\n  var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n  popper.setAttribute('x-placement', placement); // Apply `position` to popper before anything else because\n  // without the position applied we can't guarantee correct computations\n\n  setStyles(popper, {\n    position: options.positionFixed ? 'fixed' : 'absolute'\n  });\n  return options;\n}\n/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\n\n\nfunction getRoundedOffsets(data, shouldRound) {\n  var _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n  var round = Math.round,\n      floor = Math.floor;\n\n  var noRound = function noRound(v) {\n    return v;\n  };\n\n  var referenceWidth = round(reference.width);\n  var popperWidth = round(popper.width);\n  var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n  var isVariation = data.placement.indexOf('-') !== -1;\n  var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n  var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n  var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n  var verticalToInteger = !shouldRound ? noRound : round;\n  return {\n    left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n    top: verticalToInteger(popper.top),\n    bottom: verticalToInteger(popper.bottom),\n    right: horizontalToInteger(popper.right)\n  };\n}\n\nvar isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\nfunction computeStyle(data, options) {\n  var x = options.x,\n      y = options.y;\n  var popper = data.offsets.popper; // Remove this legacy support in Popper.js v2\n\n  var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n    return modifier.name === 'applyStyle';\n  }).gpuAcceleration;\n\n  if (legacyGpuAccelerationOption !== undefined) {\n    console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n  }\n\n  var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n  var offsetParent = getOffsetParent(data.instance.popper);\n  var offsetParentRect = getBoundingClientRect(offsetParent); // Styles\n\n  var styles = {\n    position: popper.position\n  };\n  var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n  var sideA = x === 'bottom' ? 'top' : 'bottom';\n  var sideB = y === 'right' ? 'left' : 'right'; // if gpuAcceleration is set to `true` and transform is supported,\n  //  we use `translate3d` to apply the position to the popper we\n  // automatically use the supported prefixed version if needed\n\n  var prefixedProperty = getSupportedPropertyName('transform'); // now, let's make a step back and look at this code closely (wtf?)\n  // If the content of the popper grows once it's been positioned, it\n  // may happen that the popper gets misplaced because of the new content\n  // overflowing its reference element\n  // To avoid this problem, we provide two options (x and y), which allow\n  // the consumer to define the offset origin.\n  // If we position a popper on top of a reference element, we can set\n  // `x` to `top` to make the popper grow towards its top instead of\n  // its bottom.\n\n  var left = void 0,\n      top = void 0;\n\n  if (sideA === 'bottom') {\n    // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\n    // and not the bottom of the html element\n    if (offsetParent.nodeName === 'HTML') {\n      top = -offsetParent.clientHeight + offsets.bottom;\n    } else {\n      top = -offsetParentRect.height + offsets.bottom;\n    }\n  } else {\n    top = offsets.top;\n  }\n\n  if (sideB === 'right') {\n    if (offsetParent.nodeName === 'HTML') {\n      left = -offsetParent.clientWidth + offsets.right;\n    } else {\n      left = -offsetParentRect.width + offsets.right;\n    }\n  } else {\n    left = offsets.left;\n  }\n\n  if (gpuAcceleration && prefixedProperty) {\n    styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n    styles[sideA] = 0;\n    styles[sideB] = 0;\n    styles.willChange = 'transform';\n  } else {\n    // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n    var invertTop = sideA === 'bottom' ? -1 : 1;\n    var invertLeft = sideB === 'right' ? -1 : 1;\n    styles[sideA] = top * invertTop;\n    styles[sideB] = left * invertLeft;\n    styles.willChange = sideA + ', ' + sideB;\n  } // Attributes\n\n\n  var attributes = {\n    'x-placement': data.placement\n  }; // Update `data` attributes, styles and arrowStyles\n\n  data.attributes = _extends({}, attributes, data.attributes);\n  data.styles = _extends({}, styles, data.styles);\n  data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n  return data;\n}\n/**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\n\n\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n  var requesting = find(modifiers, function (_ref) {\n    var name = _ref.name;\n    return name === requestingName;\n  });\n  var isRequired = !!requesting && modifiers.some(function (modifier) {\n    return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n  });\n\n  if (!isRequired) {\n    var _requesting = '`' + requestingName + '`';\n\n    var requested = '`' + requestedName + '`';\n    console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n  }\n\n  return isRequired;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction arrow(data, options) {\n  var _data$offsets$arrow; // arrow depends on keepTogether in order to work\n\n\n  if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n    return data;\n  }\n\n  var arrowElement = options.element; // if arrowElement is a string, suppose it's a CSS selector\n\n  if (typeof arrowElement === 'string') {\n    arrowElement = data.instance.popper.querySelector(arrowElement); // if arrowElement is not found, don't run the modifier\n\n    if (!arrowElement) {\n      return data;\n    }\n  } else {\n    // if the arrowElement isn't a query selector we must check that the\n    // provided DOM node is child of its popper node\n    if (!data.instance.popper.contains(arrowElement)) {\n      console.warn('WARNING: `arrow.element` must be child of its popper element!');\n      return data;\n    }\n  }\n\n  var placement = data.placement.split('-')[0];\n  var _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n  var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n  var len = isVertical ? 'height' : 'width';\n  var sideCapitalized = isVertical ? 'Top' : 'Left';\n  var side = sideCapitalized.toLowerCase();\n  var altSide = isVertical ? 'left' : 'top';\n  var opSide = isVertical ? 'bottom' : 'right';\n  var arrowElementSize = getOuterSizes(arrowElement)[len]; //\n  // extends keepTogether behavior making sure the popper and its\n  // reference have enough pixels in conjunction\n  //\n  // top/left side\n\n  if (reference[opSide] - arrowElementSize < popper[side]) {\n    data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n  } // bottom/right side\n\n\n  if (reference[side] + arrowElementSize > popper[opSide]) {\n    data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n  }\n\n  data.offsets.popper = getClientRect(data.offsets.popper); // compute center of the popper\n\n  var center = reference[side] + reference[len] / 2 - arrowElementSize / 2; // Compute the sideValue using the updated popper offsets\n  // take popper margin in account because we don't have this info available\n\n  var css = getStyleComputedProperty(data.instance.popper);\n  var popperMarginSide = parseFloat(css['margin' + sideCapitalized], 10);\n  var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width'], 10);\n  var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide; // prevent arrowElement from being placed not contiguously to its popper\n\n  sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n  data.arrowElement = arrowElement;\n  data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n  return data;\n}\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\n\n\nfunction getOppositeVariation(variation) {\n  if (variation === 'end') {\n    return 'start';\n  } else if (variation === 'start') {\n    return 'end';\n  }\n\n  return variation;\n}\n/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\n\n\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start']; // Get rid of `auto` `auto-start` and `auto-end`\n\nvar validPlacements = placements.slice(3);\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\n\nfunction clockwise(placement) {\n  var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n  var index = validPlacements.indexOf(placement);\n  var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n  return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n  FLIP: 'flip',\n  CLOCKWISE: 'clockwise',\n  COUNTERCLOCKWISE: 'counterclockwise'\n};\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\nfunction flip(data, options) {\n  // if `inner` modifier is enabled, we can't use the `flip` modifier\n  if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n    return data;\n  }\n\n  if (data.flipped && data.placement === data.originalPlacement) {\n    // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n    return data;\n  }\n\n  var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n  var placement = data.placement.split('-')[0];\n  var placementOpposite = getOppositePlacement(placement);\n  var variation = data.placement.split('-')[1] || '';\n  var flipOrder = [];\n\n  switch (options.behavior) {\n    case BEHAVIORS.FLIP:\n      flipOrder = [placement, placementOpposite];\n      break;\n\n    case BEHAVIORS.CLOCKWISE:\n      flipOrder = clockwise(placement);\n      break;\n\n    case BEHAVIORS.COUNTERCLOCKWISE:\n      flipOrder = clockwise(placement, true);\n      break;\n\n    default:\n      flipOrder = options.behavior;\n  }\n\n  flipOrder.forEach(function (step, index) {\n    if (placement !== step || flipOrder.length === index + 1) {\n      return data;\n    }\n\n    placement = data.placement.split('-')[0];\n    placementOpposite = getOppositePlacement(placement);\n    var popperOffsets = data.offsets.popper;\n    var refOffsets = data.offsets.reference; // using floor because the reference offsets may contain decimals we are not going to consider here\n\n    var floor = Math.floor;\n    var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n    var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n    var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n    var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n    var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n    var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom; // flip the variation if required\n\n    var isVertical = ['top', 'bottom'].indexOf(placement) !== -1; // flips variation if reference element overflows boundaries\n\n    var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom); // flips variation if popper content overflows boundaries\n\n    var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);\n    var flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n    if (overlapsRef || overflowsBoundaries || flippedVariation) {\n      // this boolean to detect any flip loop\n      data.flipped = true;\n\n      if (overlapsRef || overflowsBoundaries) {\n        placement = flipOrder[index + 1];\n      }\n\n      if (flippedVariation) {\n        variation = getOppositeVariation(variation);\n      }\n\n      data.placement = placement + (variation ? '-' + variation : ''); // this object contains `position`, we want to preserve it along with\n      // any additional property we may add in the future\n\n      data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n      data = runModifiers(data.instance.modifiers, data, 'flip');\n    }\n  });\n  return data;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction keepTogether(data) {\n  var _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n  var placement = data.placement.split('-')[0];\n  var floor = Math.floor;\n  var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n  var side = isVertical ? 'right' : 'bottom';\n  var opSide = isVertical ? 'left' : 'top';\n  var measurement = isVertical ? 'width' : 'height';\n\n  if (popper[side] < floor(reference[opSide])) {\n    data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n  }\n\n  if (popper[opSide] > floor(reference[side])) {\n    data.offsets.popper[opSide] = floor(reference[side]);\n  }\n\n  return data;\n}\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\n\n\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n  // separate value from unit\n  var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n  var value = +split[1];\n  var unit = split[2]; // If it's not a number it's an operator, I guess\n\n  if (!value) {\n    return str;\n  }\n\n  if (unit.indexOf('%') === 0) {\n    var element = void 0;\n\n    switch (unit) {\n      case '%p':\n        element = popperOffsets;\n        break;\n\n      case '%':\n      case '%r':\n      default:\n        element = referenceOffsets;\n    }\n\n    var rect = getClientRect(element);\n    return rect[measurement] / 100 * value;\n  } else if (unit === 'vh' || unit === 'vw') {\n    // if is a vh or vw, we calculate the size based on the viewport\n    var size = void 0;\n\n    if (unit === 'vh') {\n      size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n    } else {\n      size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n    }\n\n    return size / 100 * value;\n  } else {\n    // if is an explicit pixel unit, we get rid of the unit and keep the value\n    // if is an implicit unit, it's px, and we return just the value\n    return value;\n  }\n}\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\n\n\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n  var offsets = [0, 0]; // Use height if placement is left or right and index is 0 otherwise use width\n  // in this way the first offset will use an axis and the second one\n  // will use the other one\n\n  var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1; // Split the offset string to obtain a list of values and operands\n  // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n\n  var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n    return frag.trim();\n  }); // Detect if the offset string contains a pair of values or a single one\n  // they could be separated by comma or space\n\n  var divider = fragments.indexOf(find(fragments, function (frag) {\n    return frag.search(/,|\\s/) !== -1;\n  }));\n\n  if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n    console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n  } // If divider is found, we divide the list of values and operands to divide\n  // them by ofset X and Y.\n\n\n  var splitRegex = /\\s*,\\s*|\\s+/;\n  var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments]; // Convert the values with units to absolute pixels to allow our computations\n\n  ops = ops.map(function (op, index) {\n    // Most of the units rely on the orientation of the popper\n    var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n    var mergeWithPrevious = false;\n    return op // This aggregates any `+` or `-` sign that aren't considered operators\n    // e.g.: 10 + +5 => [10, +, +5]\n    .reduce(function (a, b) {\n      if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n        a[a.length - 1] = b;\n        mergeWithPrevious = true;\n        return a;\n      } else if (mergeWithPrevious) {\n        a[a.length - 1] += b;\n        mergeWithPrevious = false;\n        return a;\n      } else {\n        return a.concat(b);\n      }\n    }, []) // Here we convert the string values into number values (in px)\n    .map(function (str) {\n      return toValue(str, measurement, popperOffsets, referenceOffsets);\n    });\n  }); // Loop trough the offsets arrays and execute the operations\n\n  ops.forEach(function (op, index) {\n    op.forEach(function (frag, index2) {\n      if (isNumeric(frag)) {\n        offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n      }\n    });\n  });\n  return offsets;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction offset(data, _ref) {\n  var offset = _ref.offset;\n  var placement = data.placement,\n      _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n  var basePlacement = placement.split('-')[0];\n  var offsets = void 0;\n\n  if (isNumeric(+offset)) {\n    offsets = [+offset, 0];\n  } else {\n    offsets = parseOffset(offset, popper, reference, basePlacement);\n  }\n\n  if (basePlacement === 'left') {\n    popper.top += offsets[0];\n    popper.left -= offsets[1];\n  } else if (basePlacement === 'right') {\n    popper.top += offsets[0];\n    popper.left += offsets[1];\n  } else if (basePlacement === 'top') {\n    popper.left += offsets[0];\n    popper.top -= offsets[1];\n  } else if (basePlacement === 'bottom') {\n    popper.left += offsets[0];\n    popper.top += offsets[1];\n  }\n\n  data.popper = popper;\n  return data;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction preventOverflow(data, options) {\n  var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper); // If offsetParent is the reference element, we really want to\n  // go one step up and use the next offsetParent as reference to\n  // avoid to make this modifier completely useless and look like broken\n\n  if (data.instance.reference === boundariesElement) {\n    boundariesElement = getOffsetParent(boundariesElement);\n  } // NOTE: DOM access here\n  // resets the popper's position so that the document size can be calculated excluding\n  // the size of the popper element itself\n\n\n  var transformProp = getSupportedPropertyName('transform');\n  var popperStyles = data.instance.popper.style; // assignment to help minification\n\n  var top = popperStyles.top,\n      left = popperStyles.left,\n      transform = popperStyles[transformProp];\n  popperStyles.top = '';\n  popperStyles.left = '';\n  popperStyles[transformProp] = '';\n  var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed); // NOTE: DOM access here\n  // restores the original style properties after the offsets have been computed\n\n  popperStyles.top = top;\n  popperStyles.left = left;\n  popperStyles[transformProp] = transform;\n  options.boundaries = boundaries;\n  var order = options.priority;\n  var popper = data.offsets.popper;\n  var check = {\n    primary: function primary(placement) {\n      var value = popper[placement];\n\n      if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n        value = Math.max(popper[placement], boundaries[placement]);\n      }\n\n      return defineProperty({}, placement, value);\n    },\n    secondary: function secondary(placement) {\n      var mainSide = placement === 'right' ? 'left' : 'top';\n      var value = popper[mainSide];\n\n      if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n        value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n      }\n\n      return defineProperty({}, mainSide, value);\n    }\n  };\n  order.forEach(function (placement) {\n    var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n    popper = _extends({}, popper, check[side](placement));\n  });\n  data.offsets.popper = popper;\n  return data;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction shift(data) {\n  var placement = data.placement;\n  var basePlacement = placement.split('-')[0];\n  var shiftvariation = placement.split('-')[1]; // if shift shiftvariation is specified, run the modifier\n\n  if (shiftvariation) {\n    var _data$offsets = data.offsets,\n        reference = _data$offsets.reference,\n        popper = _data$offsets.popper;\n    var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n    var side = isVertical ? 'left' : 'top';\n    var measurement = isVertical ? 'width' : 'height';\n    var shiftOffsets = {\n      start: defineProperty({}, side, reference[side]),\n      end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n    };\n    data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n  }\n\n  return data;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction hide(data) {\n  if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n    return data;\n  }\n\n  var refRect = data.offsets.reference;\n  var bound = find(data.instance.modifiers, function (modifier) {\n    return modifier.name === 'preventOverflow';\n  }).boundaries;\n\n  if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n    // Avoid unnecessary DOM access if visibility hasn't changed\n    if (data.hide === true) {\n      return data;\n    }\n\n    data.hide = true;\n    data.attributes['x-out-of-boundaries'] = '';\n  } else {\n    // Avoid unnecessary DOM access if visibility hasn't changed\n    if (data.hide === false) {\n      return data;\n    }\n\n    data.hide = false;\n    data.attributes['x-out-of-boundaries'] = false;\n  }\n\n  return data;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction inner(data) {\n  var placement = data.placement;\n  var basePlacement = placement.split('-')[0];\n  var _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n  var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n  var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n  popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n  data.placement = getOppositePlacement(placement);\n  data.offsets.popper = getClientRect(popper);\n  return data;\n}\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\n\n\nvar modifiers = {\n  /**\n   * Modifier used to shift the popper on the start or end of its reference\n   * element.<br />\n   * It will read the variation of the `placement` property.<br />\n   * It can be one either `-end` or `-start`.\n   * @memberof modifiers\n   * @inner\n   */\n  shift: {\n    /** @prop {number} order=100 - Index used to define the order of execution */\n    order: 100,\n\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n\n    /** @prop {ModifierFn} */\n    fn: shift\n  },\n\n  /**\n   * The `offset` modifier can shift your popper on both its axis.\n   *\n   * It accepts the following units:\n   * - `px` or unit-less, interpreted as pixels\n   * - `%` or `%r`, percentage relative to the length of the reference element\n   * - `%p`, percentage relative to the length of the popper element\n   * - `vw`, CSS viewport width unit\n   * - `vh`, CSS viewport height unit\n   *\n   * For length is intended the main axis relative to the placement of the popper.<br />\n   * This means that if the placement is `top` or `bottom`, the length will be the\n   * `width`. In case of `left` or `right`, it will be the `height`.\n   *\n   * You can provide a single value (as `Number` or `String`), or a pair of values\n   * as `String` divided by a comma or one (or more) white spaces.<br />\n   * The latter is a deprecated method because it leads to confusion and will be\n   * removed in v2.<br />\n   * Additionally, it accepts additions and subtractions between different units.\n   * Note that multiplications and divisions aren't supported.\n   *\n   * Valid examples are:\n   * ```\n   * 10\n   * '10%'\n   * '10, 10'\n   * '10%, 10'\n   * '10 + 10%'\n   * '10 - 5vh + 3%'\n   * '-10px + 5vh, 5px - 6%'\n   * ```\n   * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n   * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n   * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  offset: {\n    /** @prop {number} order=200 - Index used to define the order of execution */\n    order: 200,\n\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n\n    /** @prop {ModifierFn} */\n    fn: offset,\n\n    /** @prop {Number|String} offset=0\n     * The offset value as described in the modifier description\n     */\n    offset: 0\n  },\n\n  /**\n   * Modifier used to prevent the popper from being positioned outside the boundary.\n   *\n   * A scenario exists where the reference itself is not within the boundaries.<br />\n   * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n   * In this case we need to decide whether the popper should either:\n   *\n   * - detach from the reference and remain \"trapped\" in the boundaries, or\n   * - if it should ignore the boundary and \"escape with its reference\"\n   *\n   * When `escapeWithReference` is set to`true` and reference is completely\n   * outside its boundaries, the popper will overflow (or completely leave)\n   * the boundaries in order to remain attached to the edge of the reference.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  preventOverflow: {\n    /** @prop {number} order=300 - Index used to define the order of execution */\n    order: 300,\n\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n\n    /** @prop {ModifierFn} */\n    fn: preventOverflow,\n\n    /**\n     * @prop {Array} [priority=['left','right','top','bottom']]\n     * Popper will try to prevent overflow following these priorities by default,\n     * then, it could overflow on the left and on top of the `boundariesElement`\n     */\n    priority: ['left', 'right', 'top', 'bottom'],\n\n    /**\n     * @prop {number} padding=5\n     * Amount of pixel used to define a minimum distance between the boundaries\n     * and the popper. This makes sure the popper always has a little padding\n     * between the edges of its container\n     */\n    padding: 5,\n\n    /**\n     * @prop {String|HTMLElement} boundariesElement='scrollParent'\n     * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n     * `viewport` or any DOM element.\n     */\n    boundariesElement: 'scrollParent'\n  },\n\n  /**\n   * Modifier used to make sure the reference and its popper stay near each other\n   * without leaving any gap between the two. Especially useful when the arrow is\n   * enabled and you want to ensure that it points to its reference element.\n   * It cares only about the first axis. You can still have poppers with margin\n   * between the popper and its reference element.\n   * @memberof modifiers\n   * @inner\n   */\n  keepTogether: {\n    /** @prop {number} order=400 - Index used to define the order of execution */\n    order: 400,\n\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n\n    /** @prop {ModifierFn} */\n    fn: keepTogether\n  },\n\n  /**\n   * This modifier is used to move the `arrowElement` of the popper to make\n   * sure it is positioned between the reference element and its popper element.\n   * It will read the outer size of the `arrowElement` node to detect how many\n   * pixels of conjunction are needed.\n   *\n   * It has no effect if no `arrowElement` is provided.\n   * @memberof modifiers\n   * @inner\n   */\n  arrow: {\n    /** @prop {number} order=500 - Index used to define the order of execution */\n    order: 500,\n\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n\n    /** @prop {ModifierFn} */\n    fn: arrow,\n\n    /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n    element: '[x-arrow]'\n  },\n\n  /**\n   * Modifier used to flip the popper's placement when it starts to overlap its\n   * reference element.\n   *\n   * Requires the `preventOverflow` modifier before it in order to work.\n   *\n   * **NOTE:** this modifier will interrupt the current update cycle and will\n   * restart it if it detects the need to flip the placement.\n   * @memberof modifiers\n   * @inner\n   */\n  flip: {\n    /** @prop {number} order=600 - Index used to define the order of execution */\n    order: 600,\n\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n\n    /** @prop {ModifierFn} */\n    fn: flip,\n\n    /**\n     * @prop {String|Array} behavior='flip'\n     * The behavior used to change the popper's placement. It can be one of\n     * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n     * placements (with optional variations)\n     */\n    behavior: 'flip',\n\n    /**\n     * @prop {number} padding=5\n     * The popper will flip if it hits the edges of the `boundariesElement`\n     */\n    padding: 5,\n\n    /**\n     * @prop {String|HTMLElement} boundariesElement='viewport'\n     * The element which will define the boundaries of the popper position.\n     * The popper will never be placed outside of the defined boundaries\n     * (except if `keepTogether` is enabled)\n     */\n    boundariesElement: 'viewport',\n\n    /**\n     * @prop {Boolean} flipVariations=false\n     * The popper will switch placement variation between `-start` and `-end` when\n     * the reference element overlaps its boundaries.\n     *\n     * The original placement should have a set variation.\n     */\n    flipVariations: false,\n\n    /**\n     * @prop {Boolean} flipVariationsByContent=false\n     * The popper will switch placement variation between `-start` and `-end` when\n     * the popper element overlaps its reference boundaries.\n     *\n     * The original placement should have a set variation.\n     */\n    flipVariationsByContent: false\n  },\n\n  /**\n   * Modifier used to make the popper flow toward the inner of the reference element.\n   * By default, when this modifier is disabled, the popper will be placed outside\n   * the reference element.\n   * @memberof modifiers\n   * @inner\n   */\n  inner: {\n    /** @prop {number} order=700 - Index used to define the order of execution */\n    order: 700,\n\n    /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n    enabled: false,\n\n    /** @prop {ModifierFn} */\n    fn: inner\n  },\n\n  /**\n   * Modifier used to hide the popper when its reference element is outside of the\n   * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n   * be used to hide with a CSS selector the popper when its reference is\n   * out of boundaries.\n   *\n   * Requires the `preventOverflow` modifier before it in order to work.\n   * @memberof modifiers\n   * @inner\n   */\n  hide: {\n    /** @prop {number} order=800 - Index used to define the order of execution */\n    order: 800,\n\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n\n    /** @prop {ModifierFn} */\n    fn: hide\n  },\n\n  /**\n   * Computes the style that will be applied to the popper element to gets\n   * properly positioned.\n   *\n   * Note that this modifier will not touch the DOM, it just prepares the styles\n   * so that `applyStyle` modifier can apply it. This separation is useful\n   * in case you need to replace `applyStyle` with a custom implementation.\n   *\n   * This modifier has `850` as `order` value to maintain backward compatibility\n   * with previous versions of Popper.js. Expect the modifiers ordering method\n   * to change in future major versions of the library.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  computeStyle: {\n    /** @prop {number} order=850 - Index used to define the order of execution */\n    order: 850,\n\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n\n    /** @prop {ModifierFn} */\n    fn: computeStyle,\n\n    /**\n     * @prop {Boolean} gpuAcceleration=true\n     * If true, it uses the CSS 3D transformation to position the popper.\n     * Otherwise, it will use the `top` and `left` properties\n     */\n    gpuAcceleration: true,\n\n    /**\n     * @prop {string} [x='bottom']\n     * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n     * Change this if your popper should grow in a direction different from `bottom`\n     */\n    x: 'bottom',\n\n    /**\n     * @prop {string} [x='left']\n     * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n     * Change this if your popper should grow in a direction different from `right`\n     */\n    y: 'right'\n  },\n\n  /**\n   * Applies the computed styles to the popper element.\n   *\n   * All the DOM manipulations are limited to this modifier. This is useful in case\n   * you want to integrate Popper.js inside a framework or view library and you\n   * want to delegate all the DOM manipulations to it.\n   *\n   * Note that if you disable this modifier, you must make sure the popper element\n   * has its position set to `absolute` before Popper.js can do its work!\n   *\n   * Just disable this modifier and define your own to achieve the desired effect.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  applyStyle: {\n    /** @prop {number} order=900 - Index used to define the order of execution */\n    order: 900,\n\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n\n    /** @prop {ModifierFn} */\n    fn: applyStyle,\n\n    /** @prop {Function} */\n    onLoad: applyStyleOnLoad,\n\n    /**\n     * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n     * @prop {Boolean} gpuAcceleration=true\n     * If true, it uses the CSS 3D transformation to position the popper.\n     * Otherwise, it will use the `top` and `left` properties\n     */\n    gpuAcceleration: undefined\n  }\n};\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overridden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n *   modifiers: {\n *     preventOverflow: { enabled: false }\n *   }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\n\nvar Defaults = {\n  /**\n   * Popper's placement.\n   * @prop {Popper.placements} placement='bottom'\n   */\n  placement: 'bottom',\n\n  /**\n   * Set this to true if you want popper to position it self in 'fixed' mode\n   * @prop {Boolean} positionFixed=false\n   */\n  positionFixed: false,\n\n  /**\n   * Whether events (resize, scroll) are initially enabled.\n   * @prop {Boolean} eventsEnabled=true\n   */\n  eventsEnabled: true,\n\n  /**\n   * Set to true if you want to automatically remove the popper when\n   * you call the `destroy` method.\n   * @prop {Boolean} removeOnDestroy=false\n   */\n  removeOnDestroy: false,\n\n  /**\n   * Callback called when the popper is created.<br />\n   * By default, it is set to no-op.<br />\n   * Access Popper.js instance with `data.instance`.\n   * @prop {onCreate}\n   */\n  onCreate: function onCreate() {},\n\n  /**\n   * Callback called when the popper is updated. This callback is not called\n   * on the initialization/creation of the popper, but only on subsequent\n   * updates.<br />\n   * By default, it is set to no-op.<br />\n   * Access Popper.js instance with `data.instance`.\n   * @prop {onUpdate}\n   */\n  onUpdate: function onUpdate() {},\n\n  /**\n   * List of modifiers used to modify the offsets before they are applied to the popper.\n   * They provide most of the functionalities of Popper.js.\n   * @prop {modifiers}\n   */\n  modifiers: modifiers\n};\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n// Utils\n// Methods\n\nvar Popper = function () {\n  /**\n   * Creates a new Popper.js instance.\n   * @class Popper\n   * @param {Element|referenceObject} reference - The reference element used to position the popper\n   * @param {Element} popper - The HTML / XML element used as the popper\n   * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n   * @return {Object} instance - The generated Popper.js instance\n   */\n  function Popper(reference, popper) {\n    var _this = this;\n\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    classCallCheck(this, Popper);\n\n    this.scheduleUpdate = function () {\n      return requestAnimationFrame(_this.update);\n    }; // make update() debounced, so that it only runs at most once-per-tick\n\n\n    this.update = debounce(this.update.bind(this)); // with {} we create a new object with the options inside it\n\n    this.options = _extends({}, Popper.Defaults, options); // init state\n\n    this.state = {\n      isDestroyed: false,\n      isCreated: false,\n      scrollParents: []\n    }; // get reference and popper elements (allow jQuery wrappers)\n\n    this.reference = reference && reference.jquery ? reference[0] : reference;\n    this.popper = popper && popper.jquery ? popper[0] : popper; // Deep merge modifiers options\n\n    this.options.modifiers = {};\n    Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n      _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n    }); // Refactoring modifiers' list (Object => Array)\n\n    this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n      return _extends({\n        name: name\n      }, _this.options.modifiers[name]);\n    }) // sort the modifiers by order\n    .sort(function (a, b) {\n      return a.order - b.order;\n    }); // modifiers have the ability to execute arbitrary code when Popper.js get inited\n    // such code is executed in the same order of its modifier\n    // they could add new properties to their options configuration\n    // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n\n    this.modifiers.forEach(function (modifierOptions) {\n      if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n        modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n      }\n    }); // fire the first update to position the popper in the right place\n\n    this.update();\n    var eventsEnabled = this.options.eventsEnabled;\n\n    if (eventsEnabled) {\n      // setup event listeners, they will take care of update the position in specific situations\n      this.enableEventListeners();\n    }\n\n    this.state.eventsEnabled = eventsEnabled;\n  } // We can't use class properties because they don't get listed in the\n  // class prototype and break stuff like Sinon stubs\n\n\n  createClass(Popper, [{\n    key: 'update',\n    value: function update$$1() {\n      return update.call(this);\n    }\n  }, {\n    key: 'destroy',\n    value: function destroy$$1() {\n      return destroy.call(this);\n    }\n  }, {\n    key: 'enableEventListeners',\n    value: function enableEventListeners$$1() {\n      return enableEventListeners.call(this);\n    }\n  }, {\n    key: 'disableEventListeners',\n    value: function disableEventListeners$$1() {\n      return disableEventListeners.call(this);\n    }\n    /**\n     * Schedules an update. It will run on the next UI update available.\n     * @method scheduleUpdate\n     * @memberof Popper\n     */\n\n    /**\n     * Collection of utilities useful when writing custom modifiers.\n     * Starting from version 1.7, this method is available only if you\n     * include `popper-utils.js` before `popper.js`.\n     *\n     * **DEPRECATION**: This way to access PopperUtils is deprecated\n     * and will be removed in v2! Use the PopperUtils module directly instead.\n     * Due to the high instability of the methods contained in Utils, we can't\n     * guarantee them to follow semver. Use them at your own risk!\n     * @static\n     * @private\n     * @type {Object}\n     * @deprecated since version 1.8\n     * @member Utils\n     * @memberof Popper\n     */\n\n  }]);\n  return Popper;\n}();\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.<br />\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n/* harmony default export */ __webpack_exports__[\"a\"] = (Popper);\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(41)))\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.uncontrolledPropTypes = uncontrolledPropTypes;\nexports.isProp = isProp;\nexports.defaultKey = defaultKey;\nexports.canAcceptRef = canAcceptRef;\n\nvar _invariant = _interopRequireDefault(__webpack_require__(24));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nvar noop = function noop() {};\n\nfunction readOnlyPropType(handler, name) {\n  return function (props, propName) {\n    if (props[propName] !== undefined) {\n      if (!props[handler]) {\n        return new Error(\"You have provided a `\" + propName + \"` prop to `\" + name + \"` \" + (\"without an `\" + handler + \"` handler prop. This will render a read-only field. \") + (\"If the field should be mutable use `\" + defaultKey(propName) + \"`. \") + (\"Otherwise, set `\" + handler + \"`.\"));\n      }\n    }\n  };\n}\n\nfunction uncontrolledPropTypes(controlledValues, displayName) {\n  var propTypes = {};\n  Object.keys(controlledValues).forEach(function (prop) {\n    // add default propTypes for folks that use runtime checks\n    propTypes[defaultKey(prop)] = noop;\n\n    if (false) { var handler; }\n  });\n  return propTypes;\n}\n\nfunction isProp(props, prop) {\n  return props[prop] !== undefined;\n}\n\nfunction defaultKey(key) {\n  return 'default' + key.charAt(0).toUpperCase() + key.substr(1);\n}\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n\nfunction canAcceptRef(component) {\n  return !!component && (typeof component !== 'function' || component.prototype && component.prototype.isReactComponent);\n}\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = camelizeStyleName;\n\nvar _camelize = _interopRequireDefault(__webpack_require__(33));\n/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/camelizeStyleName.js\n */\n\n\nvar msPattern = /^-ms-/;\n\nfunction camelizeStyleName(string) {\n  return (0, _camelize.default)(string.replace(msPattern, 'ms-'));\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports) {\n\nvar g; // This works in non-strict mode\n\ng = function () {\n  return this;\n}();\n\ntry {\n  // This works if eval is allowed (see CSP)\n  g = g || new Function(\"return this\")();\n} catch (e) {\n  // This works if the window reference is available\n  if (typeof window === \"object\") g = window;\n} // g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\n\nmodule.exports = g;\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _contains = _interopRequireDefault(__webpack_require__(22));\n\nvar _listen = _interopRequireDefault(__webpack_require__(30));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(0));\n\nvar _react = _interopRequireDefault(__webpack_require__(1));\n\nvar _reactDom = _interopRequireDefault(__webpack_require__(6));\n\nvar _ownerDocument = _interopRequireDefault(__webpack_require__(45));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n\nvar escapeKeyCode = 27;\n\nvar noop = function noop() {};\n\nfunction isLeftClickEvent(event) {\n  return event.button === 0;\n}\n\nfunction isModifiedEvent(event) {\n  return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n/**\n * The `<RootCloseWrapper/>` component registers your callback on the document\n * when rendered. Powers the `<Overlay/>` component. This is used achieve modal\n * style behavior where your callback is triggered when the user tries to\n * interact with the rest of the document or hits the `esc` key.\n */\n\n\nvar RootCloseWrapper =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(RootCloseWrapper, _React$Component);\n\n  function RootCloseWrapper(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n\n    _this.addEventListeners = function () {\n      var event = _this.props.event;\n      var doc = (0, _ownerDocument.default)(_assertThisInitialized(_assertThisInitialized(_this))); // Use capture for this listener so it fires before React's listener, to\n      // avoid false positives in the contains() check below if the target DOM\n      // element is removed in the React mouse callback.\n\n      _this.removeMouseCaptureListener = (0, _listen.default)(doc, event, _this.handleMouseCapture, true);\n      _this.removeMouseListener = (0, _listen.default)(doc, event, _this.handleMouse);\n      _this.removeKeyupListener = (0, _listen.default)(doc, 'keyup', _this.handleKeyUp);\n\n      if ('ontouchstart' in doc.documentElement) {\n        _this.mobileSafariHackListeners = [].slice.call(document.body.children).map(function (el) {\n          return (0, _listen.default)(el, 'mousemove', noop);\n        });\n      }\n    };\n\n    _this.removeEventListeners = function () {\n      if (_this.removeMouseCaptureListener) _this.removeMouseCaptureListener();\n      if (_this.removeMouseListener) _this.removeMouseListener();\n      if (_this.removeKeyupListener) _this.removeKeyupListener();\n      if (_this.mobileSafariHackListeners) _this.mobileSafariHackListeners.forEach(function (remove) {\n        return remove();\n      });\n    };\n\n    _this.handleMouseCapture = function (e) {\n      _this.preventMouseRootClose = isModifiedEvent(e) || !isLeftClickEvent(e) || (0, _contains.default)(_reactDom.default.findDOMNode(_assertThisInitialized(_assertThisInitialized(_this))), e.target);\n    };\n\n    _this.handleMouse = function (e) {\n      if (!_this.preventMouseRootClose && _this.props.onRootClose) {\n        _this.props.onRootClose(e);\n      }\n    };\n\n    _this.handleKeyUp = function (e) {\n      if (e.keyCode === escapeKeyCode && _this.props.onRootClose) {\n        _this.props.onRootClose(e);\n      }\n    };\n\n    _this.preventMouseRootClose = false;\n    return _this;\n  }\n\n  var _proto = RootCloseWrapper.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    if (!this.props.disabled) {\n      this.addEventListeners();\n    }\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    if (!this.props.disabled && prevProps.disabled) {\n      this.addEventListeners();\n    } else if (this.props.disabled && !prevProps.disabled) {\n      this.removeEventListeners();\n    }\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    if (!this.props.disabled) {\n      this.removeEventListeners();\n    }\n  };\n\n  _proto.render = function render() {\n    return this.props.children;\n  };\n\n  return RootCloseWrapper;\n}(_react.default.Component);\n\nRootCloseWrapper.displayName = 'RootCloseWrapper';\nRootCloseWrapper.propTypes = {\n  /**\n   * Callback fired after click or mousedown. Also triggers when user hits `esc`.\n   */\n  onRootClose: _propTypes.default.func,\n\n  /**\n   * Children to render.\n   */\n  children: _propTypes.default.element,\n\n  /**\n   * Disable the the RootCloseWrapper, preventing it from triggering `onRootClose`.\n   */\n  disabled: _propTypes.default.bool,\n\n  /**\n   * Choose which document mouse event to bind to.\n   */\n  event: _propTypes.default.oneOf(['click', 'mousedown'])\n};\nRootCloseWrapper.defaultProps = {\n  event: 'click'\n};\nvar _default = RootCloseWrapper;\nexports.default = _default;\nmodule.exports = exports.default;\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = _interopRequireDefault(__webpack_require__(10));\n\nvar on = function on() {};\n\nif (_inDOM.default) {\n  on = function () {\n    if (document.addEventListener) return function (node, eventName, handler, capture) {\n      return node.addEventListener(eventName, handler, capture || false);\n    };else if (document.attachEvent) return function (node, eventName, handler) {\n      return node.attachEvent('on' + eventName, function (e) {\n        e = e || window.event;\n        e.target = e.target || e.srcElement;\n        e.currentTarget = node;\n        handler.call(node, e);\n      });\n    };\n  }();\n}\n\nvar _default = on;\nexports.default = _default;\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = _interopRequireDefault(__webpack_require__(10));\n\nvar off = function off() {};\n\nif (_inDOM.default) {\n  off = function () {\n    if (document.addEventListener) return function (node, eventName, handler, capture) {\n      return node.removeEventListener(eventName, handler, capture || false);\n    };else if (document.attachEvent) return function (node, eventName, handler) {\n      return node.detachEvent('on' + eventName, handler);\n    };\n  }();\n}\n\nvar _default = off;\nexports.default = _default;\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = _default;\n\nvar _reactDom = _interopRequireDefault(__webpack_require__(6));\n\nvar _ownerDocument = _interopRequireDefault(__webpack_require__(16));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _default(componentOrElement) {\n  return (0, _ownerDocument.default)(_reactDom.default.findDOMNode(componentOrElement));\n}\n\nmodule.exports = exports.default;\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = forwardRef;\n\nvar _react = _interopRequireDefault(__webpack_require__(1));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction forwardRef(renderFn, _ref) {\n  var displayName = _ref.displayName,\n      propTypes = _ref.propTypes,\n      defaultProps = _ref.defaultProps,\n      _ref$allowFallback = _ref.allowFallback,\n      allowFallback = _ref$allowFallback === void 0 ? false : _ref$allowFallback;\n\n  var render = function render(props, ref) {\n    return renderFn(props, ref);\n  };\n\n  Object.assign(render, {\n    displayName: displayName\n  });\n  if (_react.default.forwardRef || !allowFallback) return Object.assign(_react.default.forwardRef(render), {\n    propTypes: propTypes,\n    defaultProps: defaultProps\n  });\n  return Object.assign(function (props) {\n    return render(props, null);\n  }, {\n    displayName: displayName,\n    propTypes: propTypes,\n    defaultProps: defaultProps\n  });\n}\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = hasClass;\n\nfunction hasClass(element, className) {\n  if (element.classList) return !!className && element.classList.contains(className);else return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(0));\n\nvar _componentOrElement = _interopRequireDefault(__webpack_require__(20));\n\nvar _react = _interopRequireDefault(__webpack_require__(1));\n\nvar _reactDom = _interopRequireDefault(__webpack_require__(6));\n\nvar _WaitForContainer = _interopRequireDefault(__webpack_require__(49));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n/**\n * The `<Portal/>` component renders its children into a new \"subtree\" outside of current component hierarchy.\n * You can think of it as a declarative `appendChild()`, or jQuery's `$.fn.appendTo()`.\n * The children of `<Portal/>` component will be appended to the `container` specified.\n */\n\n\nvar Portal =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Portal, _React$Component);\n\n  function Portal() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = Portal.prototype;\n\n  _proto.render = function render() {\n    var _this = this;\n\n    return this.props.children ? _react.default.createElement(_WaitForContainer.default, {\n      container: this.props.container,\n      onContainerResolved: this.props.onRendered\n    }, function (container) {\n      return _reactDom.default.createPortal(_this.props.children, container);\n    }) : null;\n  };\n\n  return Portal;\n}(_react.default.Component);\n\nPortal.displayName = 'Portal';\nPortal.propTypes = {\n  /**\n   * A Node, Component instance, or function that returns either. The `container` will have the Portal children\n   * appended to it.\n   */\n  container: _propTypes.default.oneOfType([_componentOrElement.default, _propTypes.default.func]),\n  onRendered: _propTypes.default.func\n};\nvar _default = Portal;\nexports.default = _default;\nmodule.exports = exports.default;\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(0));\n\nvar _componentOrElement = _interopRequireDefault(__webpack_require__(20));\n\nvar _inDOM = _interopRequireDefault(__webpack_require__(10));\n\nvar _ownerDocument = _interopRequireDefault(__webpack_require__(16));\n\nvar _react = _interopRequireDefault(__webpack_require__(1));\n\nvar _reactDom = _interopRequireDefault(__webpack_require__(6));\n\nvar _getContainer = _interopRequireDefault(__webpack_require__(50));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n\nvar propTypes = {\n  /**\n   * A Node, Component instance, or function that returns either. The `container` will have the Portal children\n   * appended to it.\n   */\n  container: _propTypes.default.oneOfType([_componentOrElement.default, _propTypes.default.func]),\n  onContainerResolved: _propTypes.default.func\n};\n\nvar WaitForContainer =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(WaitForContainer, _React$Component);\n\n  function WaitForContainer() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n    if (!_inDOM.default) return _assertThisInitialized(_this);\n    var container = _this.props.container;\n    if (typeof container === 'function') container = container();\n\n    if (container && !_reactDom.default.findDOMNode(container)) {\n      // The container is a React component that has not yet been rendered.\n      // Don't set the container node yet.\n      return _assertThisInitialized(_this);\n    }\n\n    _this.setContainer(container);\n\n    return _this;\n  }\n\n  var _proto = WaitForContainer.prototype;\n\n  _proto.UNSAFE_componentWillReceiveProps = function UNSAFE_componentWillReceiveProps(nextProps) {\n    if (nextProps.container !== this.props.container) {\n      this.setContainer(nextProps.container);\n    }\n  };\n\n  _proto.componentDidMount = function componentDidMount() {\n    if (!this._container) {\n      this.setContainer(this.props.container);\n      this.forceUpdate(this.props.onContainerResolved);\n    } else if (this.props.onContainerResolved) {\n      this.props.onContainerResolved();\n    }\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this._container = null;\n  };\n\n  _proto.setContainer = function setContainer(container) {\n    this._container = (0, _getContainer.default)(container, (0, _ownerDocument.default)().body);\n  };\n\n  _proto.render = function render() {\n    return this._container ? this.props.children(this._container) : null;\n  };\n\n  return WaitForContainer;\n}(_react.default.Component);\n\nWaitForContainer.propTypes = propTypes;\nvar _default = WaitForContainer;\nexports.default = _default;\nmodule.exports = exports.default;\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = getContainer;\n\nvar _reactDom = _interopRequireDefault(__webpack_require__(6));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction getContainer(container, defaultContainer) {\n  if (container == null) return defaultContainer;\n  container = typeof container === 'function' ? container() : container;\n  return _reactDom.default.findDOMNode(container) || null;\n}\n\nmodule.exports = exports.default;\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _end = _interopRequireDefault(__webpack_require__(23));\n\nexports.end = _end.default;\n\nvar _properties = _interopRequireDefault(__webpack_require__(26));\n\nexports.properties = _properties.default;\nvar _default = {\n  end: _end.default,\n  properties: _properties.default\n};\nexports.default = _default;\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _matches = _interopRequireDefault(__webpack_require__(72));\n\nvar _querySelectorAll = _interopRequireDefault(__webpack_require__(9));\n\nvar _react = _interopRequireDefault(__webpack_require__(1));\n\nvar _reactDom = _interopRequireDefault(__webpack_require__(6));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(0));\n\nvar _uncontrollable = _interopRequireDefault(__webpack_require__(7));\n\nvar Popper = _interopRequireWildcard(__webpack_require__(31));\n\nvar _DropdownContext = _interopRequireDefault(__webpack_require__(29));\n\nvar _DropdownMenu = _interopRequireDefault(__webpack_require__(35));\n\nvar _DropdownToggle = _interopRequireDefault(__webpack_require__(36));\n\nfunction _interopRequireWildcard(obj) {\n  if (obj && obj.__esModule) {\n    return obj;\n  } else {\n    var newObj = {};\n\n    if (obj != null) {\n      for (var key in obj) {\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\n          var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};\n\n          if (desc.get || desc.set) {\n            Object.defineProperty(newObj, key, desc);\n          } else {\n            newObj[key] = obj[key];\n          }\n        }\n      }\n    }\n\n    newObj.default = obj;\n    return newObj;\n  }\n}\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n\nvar propTypes = {\n  /**\n   * A render prop that returns the root dropdown element. The `props`\n   * argument should spread through to an element containing _both_ the\n   * menu and toggle in order to handle keyboard events for focus management.\n   *\n   * @type {Function ({\n   *   props: {\n   *     onKeyDown: (SyntheticEvent) => void,\n   *   },\n   * }) => React.Element}\n   */\n  children: _propTypes.default.func.isRequired,\n\n  /**\n   * Determines the direction and location of the Menu in relation to it's Toggle.\n   */\n  drop: _propTypes.default.oneOf(['up', 'left', 'right', 'down']),\n\n  /**\n   * Controls the focus behavior for when the Dropdown is opened. Set to\n   * `true` to always focus the first menu item, `keyboard` to focus only when\n   * navigating via the keyboard, or `false` to disable completely\n   *\n   * The Default behavior is `false` **unless** the Menu has a `role=\"menu\"`\n   * where it will default to `keyboard` to match the recommended [ARIA Authoring practices](https://www.w3.org/TR/wai-aria-practices-1.1/#menubutton).\n   */\n  focusFirstItemOnShow: _propTypes.default.oneOf([false, true, 'keyboard']),\n\n  /**\n   * A css slector string that will return __focusable__ menu items.\n   * Selectors should be relative to the menu component:\n   * e.g. ` > li:not('.disabled')`\n   */\n  itemSelector: _propTypes.default.string.isRequired,\n\n  /**\n   * Align the menu to the 'end' side of the placement side of the Dropdown toggle. The default placement is `top-start` or `bottom-start`.\n   */\n  alignEnd: _propTypes.default.bool,\n\n  /**\n   * Whether or not the Dropdown is visible.\n   *\n   * @controllable onToggle\n   */\n  show: _propTypes.default.bool,\n\n  /**\n   * A callback fired when the Dropdown wishes to change visibility. Called with the requested\n   * `show` value, the DOM event, and the source that fired it: `'click'`,`'keydown'`,`'rootClose'`, or `'select'`.\n   *\n   * ```js\n   * function(\n   *   isOpen: boolean,\n   *   event: SyntheticEvent,\n   * ): void\n   * ```\n   *\n   * @controllable show\n   */\n  onToggle: _propTypes.default.func\n};\nvar defaultProps = {\n  itemSelector: '* > *'\n};\n/**\n * `Dropdown` is set of structural components for building, accessible dropdown menus with close-on-click,\n * keyboard navigation, and correct focus handling. As with all the react-overlay's\n * components its BYOS (bring your own styles). Dropdown is primarily\n * built from three base components, you should compose to build your Dropdowns.\n *\n * - `Dropdown`, which wraps the menu and toggle, and handles keyboard navigation\n * - `Dropdown.Toggle` generally a button that triggers the menu opening\n * - `Dropdown.Menu` The overlaid, menu, positioned to the toggle with PopperJs\n */\n\nvar Dropdown =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Dropdown, _React$Component);\n\n  Dropdown.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n    var drop = _ref.drop,\n        alignEnd = _ref.alignEnd,\n        show = _ref.show;\n    var lastShow = prevState.context.show;\n    return {\n      lastShow: lastShow,\n      context: _extends({}, prevState.context, {\n        drop: drop,\n        show: show,\n        alignEnd: alignEnd\n      })\n    };\n  };\n\n  function Dropdown(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n\n    _this.handleClick = function (event) {\n      _this.toggleOpen(event);\n    };\n\n    _this.handleKeyDown = function (event) {\n      var key = event.key,\n          target = event.target; // Second only to https://github.com/twbs/bootstrap/blob/8cfbf6933b8a0146ac3fbc369f19e520bd1ebdac/js/src/dropdown.js#L400\n      // in inscrutability\n\n      var isInput = /input|textarea/i.test(target.tagName);\n\n      if (isInput && (key === ' ' || key !== 'Escape' && _this.menu.contains(target))) {\n        return;\n      }\n\n      _this._lastSourceEvent = event.type;\n\n      switch (key) {\n        case 'ArrowUp':\n          {\n            var next = _this.getNextFocusedChild(target, -1);\n\n            if (next && next.focus) next.focus();\n            event.preventDefault();\n            return;\n          }\n\n        case 'ArrowDown':\n          event.preventDefault();\n\n          if (!_this.props.show) {\n            _this.toggleOpen(event);\n          } else {\n            var _next = _this.getNextFocusedChild(target, 1);\n\n            if (_next && _next.focus) _next.focus();\n          }\n\n          return;\n\n        case 'Escape':\n        case 'Tab':\n          _this.props.onToggle(false, event);\n\n          break;\n\n        default:\n      }\n    };\n\n    _this._focusInDropdown = false;\n    _this.menu = null;\n    _this.state = {\n      context: {\n        close: _this.handleClose,\n        toggle: _this.handleClick,\n        menuRef: function menuRef(r) {\n          _this.menu = r;\n        },\n        toggleRef: function toggleRef(r) {\n          var toggleNode = r && _reactDom.default.findDOMNode(r);\n\n          _this.setState(function (_ref2) {\n            var context = _ref2.context;\n            return {\n              context: _extends({}, context, {\n                toggleNode: toggleNode\n              })\n            };\n          });\n        }\n      }\n    };\n    return _this;\n  }\n\n  var _proto = Dropdown.prototype;\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    var show = this.props.show;\n    var prevOpen = prevProps.show;\n\n    if (show && !prevOpen) {\n      this.maybeFocusFirst();\n    }\n\n    this._lastSourceEvent = null;\n\n    if (!show && prevOpen) {\n      // if focus hasn't already moved from the menu let's return it\n      // to the toggle\n      if (this._focusInDropdown) {\n        this._focusInDropdown = false;\n        this.focus();\n      }\n    }\n  };\n\n  _proto.getNextFocusedChild = function getNextFocusedChild(current, offset) {\n    if (!this.menu) return null;\n    var itemSelector = this.props.itemSelector;\n    var items = (0, _querySelectorAll.default)(this.menu, itemSelector);\n    var index = items.indexOf(current) + offset;\n    index = Math.max(0, Math.min(index, items.length));\n    return items[index];\n  };\n\n  _proto.hasMenuRole = function hasMenuRole() {\n    return this.menu && (0, _matches.default)(this.menu, '[role=menu]');\n  };\n\n  _proto.focus = function focus() {\n    var toggleNode = this.state.context.toggleNode;\n\n    if (toggleNode && toggleNode.focus) {\n      toggleNode.focus();\n    }\n  };\n\n  _proto.maybeFocusFirst = function maybeFocusFirst() {\n    var type = this._lastSourceEvent;\n    var focusFirstItemOnShow = this.props.focusFirstItemOnShow;\n\n    if (focusFirstItemOnShow == null) {\n      focusFirstItemOnShow = this.hasMenuRole() ? 'keyboard' : false;\n    }\n\n    if (focusFirstItemOnShow === false || focusFirstItemOnShow === 'keyboard' && !/^key.+$/.test(type)) {\n      return;\n    }\n\n    var itemSelector = this.props.itemSelector;\n    var first = (0, _querySelectorAll.default)(this.menu, itemSelector)[0];\n    if (first && first.focus) first.focus();\n  };\n\n  _proto.toggleOpen = function toggleOpen(event) {\n    var show = !this.props.show;\n    this.props.onToggle(show, event);\n  };\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        children = _this$props.children,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"children\"]);\n\n    delete props.onToggle;\n\n    if (this.menu && this.state.lastShow && !this.props.show) {\n      this._focusInDropdown = this.menu.contains(document.activeElement);\n    }\n\n    return _react.default.createElement(_DropdownContext.default.Provider, {\n      value: this.state.context\n    }, _react.default.createElement(Popper.Manager, null, children({\n      props: {\n        onKeyDown: this.handleKeyDown\n      }\n    })));\n  };\n\n  return Dropdown;\n}(_react.default.Component);\n\nDropdown.displayName = 'ReactOverlaysDropdown';\nDropdown.propTypes = propTypes;\nDropdown.defaultProps = defaultProps;\nvar UncontrolledDropdown = (0, _uncontrollable.default)(Dropdown, {\n  show: 'onToggle'\n});\nUncontrolledDropdown.Menu = _DropdownMenu.default;\nUncontrolledDropdown.Toggle = _DropdownToggle.default;\nvar _default = UncontrolledDropdown;\nexports.default = _default;\nmodule.exports = exports.default;\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports) {\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _implementation = __webpack_require__(73);\n\nvar _implementation2 = _interopRequireDefault(_implementation);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nexports.default = _react2.default.createContext || _implementation2.default;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = mapContextToProps;\n\nvar _react = _interopRequireDefault(__webpack_require__(1));\n\nvar _forwardRef = _interopRequireDefault(__webpack_require__(32));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nvar getDisplayName = function getDisplayName(Component) {\n  var name = typeof Component === 'string' ? Component : Component.name || Component.displayName;\n  return name ? \"ContextTransform(\" + name + \")\" : 'ContextTransform';\n};\n\nvar ensureConsumer = function ensureConsumer(c) {\n  return c.Consumer || c;\n};\n\nfunction $mapContextToProps(_ref, Component) {\n  var maybeArrayOfConsumers = _ref.consumers,\n      mapToProps = _ref.mapToProps,\n      displayName = _ref.displayName,\n      _ref$forwardRefAs = _ref.forwardRefAs,\n      forwardRefAs = _ref$forwardRefAs === void 0 ? 'ref' : _ref$forwardRefAs;\n  var consumers = maybeArrayOfConsumers;\n\n  if (!Array.isArray(maybeArrayOfConsumers)) {\n    consumers = [maybeArrayOfConsumers];\n  }\n\n  var SingleConsumer = ensureConsumer(consumers[0]);\n\n  function singleRender(props, ref) {\n    var _extends2;\n\n    var propsWithRef = _extends((_extends2 = {}, _extends2[forwardRefAs] = ref, _extends2), props);\n\n    return _react.default.createElement(SingleConsumer, null, function (value) {\n      return _react.default.createElement(Component, _extends({}, propsWithRef, mapToProps(value, props)));\n    });\n  }\n\n  function multiRender(props, ref) {\n    var _extends3;\n\n    var propsWithRef = _extends((_extends3 = {}, _extends3[forwardRefAs] = ref, _extends3), props);\n\n    return consumers.reduceRight(function (inner, Context) {\n      return function () {\n        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n          args[_key] = arguments[_key];\n        }\n\n        var Consumer = ensureConsumer(Context);\n        return _react.default.createElement(Consumer, null, function (value) {\n          return inner.apply(void 0, args.concat([value]));\n        });\n      };\n    }, function () {\n      for (var _len2 = arguments.length, contexts = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        contexts[_key2] = arguments[_key2];\n      }\n\n      return _react.default.createElement(Component, _extends({}, propsWithRef, mapToProps.apply(void 0, contexts.concat([props]))));\n    })();\n  }\n\n  var contextTransform = consumers.length === 1 ? singleRender : multiRender;\n  return (0, _forwardRef.default)(contextTransform, {\n    displayName: displayName || getDisplayName(Component)\n  });\n}\n\nfunction mapContextToProps(maybeOpts, mapToProps, Component) {\n  if (arguments.length === 2) return $mapContextToProps(maybeOpts, mapToProps);\n  return $mapContextToProps({\n    consumers: maybeOpts,\n    mapToProps: mapToProps\n  }, Component);\n}\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _activeElement = _interopRequireDefault(__webpack_require__(79));\n\nvar _contains = _interopRequireDefault(__webpack_require__(22));\n\nvar _inDOM = _interopRequireDefault(__webpack_require__(10));\n\nvar _listen = _interopRequireDefault(__webpack_require__(30));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(0));\n\nvar _componentOrElement = _interopRequireDefault(__webpack_require__(20));\n\nvar _elementType = _interopRequireDefault(__webpack_require__(28));\n\nvar _react = _interopRequireDefault(__webpack_require__(1));\n\nvar _reactDom = _interopRequireDefault(__webpack_require__(6));\n\nvar _ModalManager = _interopRequireDefault(__webpack_require__(37));\n\nvar _Portal = _interopRequireDefault(__webpack_require__(48));\n\nvar _getContainer = _interopRequireDefault(__webpack_require__(50));\n\nvar _ownerDocument = _interopRequireDefault(__webpack_require__(45));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n\nvar modalManager = new _ModalManager.default();\n\nfunction omitProps(props, propTypes) {\n  var keys = Object.keys(props);\n  var newProps = {};\n  keys.map(function (prop) {\n    if (!Object.prototype.hasOwnProperty.call(propTypes, prop)) {\n      newProps[prop] = props[prop];\n    }\n  });\n  return newProps;\n}\n/**\n * Love them or hate them, `<Modal />` provides a solid foundation for creating dialogs, lightboxes, or whatever else.\n * The Modal component renders its `children` node in front of a backdrop component.\n *\n * The Modal offers a few helpful features over using just a `<Portal/>` component and some styles:\n *\n * - Manages dialog stacking when one-at-a-time just isn't enough.\n * - Creates a backdrop, for disabling interaction below the modal.\n * - It properly manages focus; moving to the modal content, and keeping it there until the modal is closed.\n * - It disables scrolling of the page content while open.\n * - Adds the appropriate ARIA roles are automatically.\n * - Easily pluggable animations via a `<Transition/>` component.\n *\n * Note that, in the same way the backdrop element prevents users from clicking or interacting\n * with the page content underneath the Modal, Screen readers also need to be signaled to not to\n * interact with page content while the Modal is open. To do this, we use a common technique of applying\n * the `aria-hidden='true'` attribute to the non-Modal elements in the Modal `container`. This means that for\n * a Modal to be truly modal, it should have a `container` that is _outside_ your app's\n * React hierarchy (such as the default: document.body).\n */\n\n\nvar Modal =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Modal, _React$Component);\n\n  function Modal() {\n    var _this;\n\n    for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n      _args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(_args)) || this;\n    _this.state = {\n      exited: !_this.props.show\n    };\n\n    _this.onPortalRendered = function () {\n      if (_this.props.onShow) {\n        _this.props.onShow();\n      } // autofocus after onShow, to not trigger a focus event for previous\n      // modals before this one is shown.\n\n\n      _this.autoFocus();\n    };\n\n    _this.onShow = function () {\n      var doc = (0, _ownerDocument.default)(_assertThisInitialized(_assertThisInitialized(_this)));\n      var container = (0, _getContainer.default)(_this.props.container, doc.body);\n\n      _this.props.manager.add(_assertThisInitialized(_assertThisInitialized(_this)), container, _this.props.containerClassName);\n\n      _this.removeKeydownListener = (0, _listen.default)(doc, 'keydown', _this.handleDocumentKeyDown);\n      _this.removeFocusListener = (0, _listen.default)(doc, 'focus', // the timeout is necessary b/c this will run before the new modal is mounted\n      // and so steals focus from it\n      function () {\n        return setTimeout(_this.enforceFocus);\n      }, true);\n    };\n\n    _this.onHide = function () {\n      _this.props.manager.remove(_assertThisInitialized(_assertThisInitialized(_this)));\n\n      _this.removeKeydownListener();\n\n      _this.removeFocusListener();\n\n      if (_this.props.restoreFocus) {\n        _this.restoreLastFocus();\n      }\n    };\n\n    _this.setDialogRef = function (ref) {\n      _this.dialog = ref;\n    };\n\n    _this.setBackdropRef = function (ref) {\n      _this.backdrop = ref && _reactDom.default.findDOMNode(ref);\n    };\n\n    _this.handleHidden = function () {\n      _this.setState({\n        exited: true\n      });\n\n      _this.onHide();\n\n      if (_this.props.onExited) {\n        var _this$props;\n\n        (_this$props = _this.props).onExited.apply(_this$props, arguments);\n      }\n    };\n\n    _this.handleBackdropClick = function (e) {\n      if (e.target !== e.currentTarget) {\n        return;\n      }\n\n      if (_this.props.onBackdropClick) {\n        _this.props.onBackdropClick(e);\n      }\n\n      if (_this.props.backdrop === true) {\n        _this.props.onHide();\n      }\n    };\n\n    _this.handleDocumentKeyDown = function (e) {\n      if (_this.props.keyboard && e.keyCode === 27 && _this.isTopModal()) {\n        if (_this.props.onEscapeKeyDown) {\n          _this.props.onEscapeKeyDown(e);\n        }\n\n        _this.props.onHide();\n      }\n    };\n\n    _this.enforceFocus = function () {\n      if (!_this.props.enforceFocus || !_this._isMounted || !_this.isTopModal()) {\n        return;\n      }\n\n      var currentActiveElement = (0, _activeElement.default)((0, _ownerDocument.default)(_assertThisInitialized(_assertThisInitialized(_this))));\n\n      if (_this.dialog && !(0, _contains.default)(_this.dialog, currentActiveElement)) {\n        _this.dialog.focus();\n      }\n    };\n\n    _this.renderBackdrop = function () {\n      var _this$props2 = _this.props,\n          renderBackdrop = _this$props2.renderBackdrop,\n          Transition = _this$props2.backdropTransition;\n      var backdrop = renderBackdrop({\n        ref: _this.setBackdropRef,\n        onClick: _this.handleBackdropClick\n      });\n\n      if (Transition) {\n        backdrop = _react.default.createElement(Transition, {\n          appear: true,\n          in: _this.props.show\n        }, backdrop);\n      }\n\n      return backdrop;\n    };\n\n    return _this;\n  }\n\n  Modal.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps) {\n    if (nextProps.show) {\n      return {\n        exited: false\n      };\n    } else if (!nextProps.transition) {\n      // Otherwise let handleHidden take care of marking exited.\n      return {\n        exited: true\n      };\n    }\n\n    return null;\n  };\n\n  var _proto = Modal.prototype;\n\n  _proto.getSnapshotBeforeUpdate = function getSnapshotBeforeUpdate(prevProps) {\n    if (_inDOM.default && !prevProps.show && this.props.show) {\n      this.lastFocus = (0, _activeElement.default)();\n    }\n\n    return null;\n  };\n\n  _proto.componentDidMount = function componentDidMount() {\n    this._isMounted = true;\n\n    if (this.props.show) {\n      this.onShow();\n    }\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    var transition = this.props.transition;\n\n    if (prevProps.show && !this.props.show && !transition) {\n      // Otherwise handleHidden will call this.\n      this.onHide();\n    } else if (!prevProps.show && this.props.show) {\n      this.onShow();\n    }\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    var _this$props3 = this.props,\n        show = _this$props3.show,\n        transition = _this$props3.transition;\n    this._isMounted = false;\n\n    if (show || transition && !this.state.exited) {\n      this.onHide();\n    }\n  };\n\n  _proto.autoFocus = function autoFocus() {\n    if (!this.props.autoFocus) return;\n    var currentActiveElement = (0, _activeElement.default)((0, _ownerDocument.default)(this));\n\n    if (this.dialog && !(0, _contains.default)(this.dialog, currentActiveElement)) {\n      this.lastFocus = currentActiveElement;\n      this.dialog.focus();\n    }\n  };\n\n  _proto.restoreLastFocus = function restoreLastFocus() {\n    // Support: <=IE11 doesn't support `focus()` on svg elements (RB: #917)\n    if (this.lastFocus && this.lastFocus.focus) {\n      this.lastFocus.focus();\n      this.lastFocus = null;\n    }\n  };\n\n  _proto.isTopModal = function isTopModal() {\n    return this.props.manager.isTopModal(this);\n  };\n\n  _proto.render = function render() {\n    var _this$props4 = this.props,\n        show = _this$props4.show,\n        container = _this$props4.container,\n        children = _this$props4.children,\n        renderDialog = _this$props4.renderDialog,\n        _this$props4$role = _this$props4.role,\n        role = _this$props4$role === void 0 ? 'dialog' : _this$props4$role,\n        Transition = _this$props4.transition,\n        backdrop = _this$props4.backdrop,\n        className = _this$props4.className,\n        style = _this$props4.style,\n        onExit = _this$props4.onExit,\n        onExiting = _this$props4.onExiting,\n        onEnter = _this$props4.onEnter,\n        onEntering = _this$props4.onEntering,\n        onEntered = _this$props4.onEntered,\n        props = _objectWithoutPropertiesLoose(_this$props4, [\"show\", \"container\", \"children\", \"renderDialog\", \"role\", \"transition\", \"backdrop\", \"className\", \"style\", \"onExit\", \"onExiting\", \"onEnter\", \"onEntering\", \"onEntered\"]);\n\n    if (!(show || Transition && !this.state.exited)) {\n      return null;\n    }\n\n    var dialogProps = _extends({\n      role: role,\n      ref: this.setDialogRef,\n      // apparently only works on the dialog role element\n      'aria-modal': role === 'dialog' ? true : undefined\n    }, omitProps(props, Modal.propTypes), {\n      style: style,\n      className: className,\n      tabIndex: '-1'\n    });\n\n    var dialog = renderDialog ? renderDialog(dialogProps) : _react.default.createElement(\"div\", dialogProps, _react.default.cloneElement(children, {\n      role: 'document'\n    }));\n\n    if (Transition) {\n      dialog = _react.default.createElement(Transition, {\n        appear: true,\n        unmountOnExit: true,\n        in: show,\n        onExit: onExit,\n        onExiting: onExiting,\n        onExited: this.handleHidden,\n        onEnter: onEnter,\n        onEntering: onEntering,\n        onEntered: onEntered\n      }, dialog);\n    }\n\n    return _react.default.createElement(_Portal.default, {\n      container: container,\n      onRendered: this.onPortalRendered\n    }, _react.default.createElement(_react.default.Fragment, null, backdrop && this.renderBackdrop(), dialog));\n  };\n\n  return Modal;\n}(_react.default.Component);\n\nModal.propTypes = {\n  /**\n   * Set the visibility of the Modal\n   */\n  show: _propTypes.default.bool,\n\n  /**\n   * A Node, Component instance, or function that returns either. The Modal is appended to it's container element.\n   *\n   * For the sake of assistive technologies, the container should usually be the document body, so that the rest of the\n   * page content can be placed behind a virtual backdrop as well as a visual one.\n   */\n  container: _propTypes.default.oneOfType([_componentOrElement.default, _propTypes.default.func]),\n\n  /**\n   * A callback fired when the Modal is opening.\n   */\n  onShow: _propTypes.default.func,\n\n  /**\n   * A callback fired when either the backdrop is clicked, or the escape key is pressed.\n   *\n   * The `onHide` callback only signals intent from the Modal,\n   * you must actually set the `show` prop to `false` for the Modal to close.\n   */\n  onHide: _propTypes.default.func,\n\n  /**\n   * Include a backdrop component.\n   */\n  backdrop: _propTypes.default.oneOfType([_propTypes.default.bool, _propTypes.default.oneOf(['static'])]),\n\n  /**\n   * A function that returns the dialog component. Useful for custom\n   * rendering. **Note:** the component should make sure to apply the provided ref.\n   *\n   * ```js\n   *  renderDialog={props => <MyDialog {...props} />}\n   * ```\n   */\n  renderDialog: _propTypes.default.func,\n\n  /**\n   * A function that returns a backdrop component. Useful for custom\n   * backdrop rendering.\n   *\n   * ```js\n   *  renderBackdrop={props => <MyBackdrop {...props} />}\n   * ```\n   */\n  renderBackdrop: _propTypes.default.func,\n\n  /**\n   * A callback fired when the escape key, if specified in `keyboard`, is pressed.\n   */\n  onEscapeKeyDown: _propTypes.default.func,\n\n  /**\n   * A callback fired when the backdrop, if specified, is clicked.\n   */\n  onBackdropClick: _propTypes.default.func,\n\n  /**\n   * A css class or set of classes applied to the modal container when the modal is open,\n   * and removed when it is closed.\n   */\n  containerClassName: _propTypes.default.string,\n\n  /**\n   * Close the modal when escape key is pressed\n   */\n  keyboard: _propTypes.default.bool,\n\n  /**\n   * A `react-transition-group@2.0.0` `<Transition/>` component used\n   * to control animations for the dialog component.\n   */\n  transition: _elementType.default,\n\n  /**\n   * A `react-transition-group@2.0.0` `<Transition/>` component used\n   * to control animations for the backdrop components.\n   */\n  backdropTransition: _elementType.default,\n\n  /**\n   * When `true` The modal will automatically shift focus to itself when it opens, and\n   * replace it to the last focused element when it closes. This also\n   * works correctly with any Modal children that have the `autoFocus` prop.\n   *\n   * Generally this should never be set to `false` as it makes the Modal less\n   * accessible to assistive technologies, like screen readers.\n   */\n  autoFocus: _propTypes.default.bool,\n\n  /**\n   * When `true` The modal will prevent focus from leaving the Modal while open.\n   *\n   * Generally this should never be set to `false` as it makes the Modal less\n   * accessible to assistive technologies, like screen readers.\n   */\n  enforceFocus: _propTypes.default.bool,\n\n  /**\n   * When `true` The modal will restore focus to previously focused element once\n   * modal is hidden\n   */\n  restoreFocus: _propTypes.default.bool,\n\n  /**\n   * Callback fired before the Modal transitions in\n   */\n  onEnter: _propTypes.default.func,\n\n  /**\n   * Callback fired as the Modal begins to transition in\n   */\n  onEntering: _propTypes.default.func,\n\n  /**\n   * Callback fired after the Modal finishes transitioning in\n   */\n  onEntered: _propTypes.default.func,\n\n  /**\n   * Callback fired right before the Modal transitions out\n   */\n  onExit: _propTypes.default.func,\n\n  /**\n   * Callback fired as the Modal begins to transition out\n   */\n  onExiting: _propTypes.default.func,\n\n  /**\n   * Callback fired after the Modal finishes transitioning out\n   */\n  onExited: _propTypes.default.func,\n\n  /**\n   * A ModalManager instance used to track and manage the state of open\n   * Modals. Useful when customizing how modals interact within a container\n   */\n  manager: _propTypes.default.object.isRequired\n};\nModal.defaultProps = {\n  show: false,\n  role: 'dialog',\n  backdrop: true,\n  keyboard: true,\n  autoFocus: true,\n  enforceFocus: true,\n  restoreFocus: true,\n  onHide: function onHide() {},\n  manager: modalManager,\n  renderBackdrop: function renderBackdrop(props) {\n    return _react.default.createElement(\"div\", props);\n  }\n};\nModal.Manager = _ModalManager.default;\nvar _default = Modal;\nexports.default = _default;\nmodule.exports = exports.default;\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(0));\n\nvar _elementType = _interopRequireDefault(__webpack_require__(28));\n\nvar _componentOrElement = _interopRequireDefault(__webpack_require__(20));\n\nvar _react = _interopRequireDefault(__webpack_require__(1));\n\nvar _reactDom = _interopRequireDefault(__webpack_require__(6));\n\nvar _Portal = _interopRequireDefault(__webpack_require__(48));\n\nvar _RootCloseWrapper = _interopRequireDefault(__webpack_require__(42));\n\nvar _reactPopper = __webpack_require__(31);\n\nvar _forwardRef = _interopRequireDefault(__webpack_require__(46));\n\nvar _WaitForContainer = _interopRequireDefault(__webpack_require__(49));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n/**\n * Built on top of `<Position/>` and `<Portal/>`, the overlay component is\n * great for custom tooltip overlays.\n */\n\n\nvar Overlay =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Overlay, _React$Component);\n\n  function Overlay(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n\n    _this.handleHidden = function () {\n      _this.setState({\n        exited: true\n      });\n\n      if (_this.props.onExited) {\n        var _this$props;\n\n        (_this$props = _this.props).onExited.apply(_this$props, arguments);\n      }\n    };\n\n    _this.state = {\n      exited: !props.show\n    };\n    _this.onHiddenListener = _this.handleHidden.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n    _this._lastTarget = null;\n    return _this;\n  }\n\n  Overlay.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps) {\n    if (nextProps.show) {\n      return {\n        exited: false\n      };\n    } else if (!nextProps.transition) {\n      // Otherwise let handleHidden take care of marking exited.\n      return {\n        exited: true\n      };\n    }\n\n    return null;\n  };\n\n  var _proto = Overlay.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.setState({\n      target: this.getTarget()\n    });\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    if (this.props === prevProps) return;\n    var target = this.getTarget();\n\n    if (target !== this.state.target) {\n      this.setState({\n        target: target\n      });\n    }\n  };\n\n  _proto.getTarget = function getTarget() {\n    var target = this.props.target;\n    target = typeof target === 'function' ? target() : target;\n    return target && _reactDom.default.findDOMNode(target) || null;\n  };\n\n  _proto.render = function render() {\n    var _this2 = this;\n\n    var _this$props2 = this.props,\n        _0 = _this$props2.target,\n        container = _this$props2.container,\n        containerPadding = _this$props2.containerPadding,\n        placement = _this$props2.placement,\n        rootClose = _this$props2.rootClose,\n        children = _this$props2.children,\n        flip = _this$props2.flip,\n        _this$props2$popperCo = _this$props2.popperConfig,\n        popperConfig = _this$props2$popperCo === void 0 ? {} : _this$props2$popperCo,\n        Transition = _this$props2.transition,\n        props = _objectWithoutPropertiesLoose(_this$props2, [\"target\", \"container\", \"containerPadding\", \"placement\", \"rootClose\", \"children\", \"flip\", \"popperConfig\", \"transition\"]);\n\n    var target = this.state.target; // Don't un-render the overlay while it's transitioning out.\n\n    var mountOverlay = props.show || Transition && !this.state.exited;\n\n    if (!mountOverlay) {\n      // Don't bother showing anything if we don't have to.\n      return null;\n    }\n\n    var child = children;\n    var _popperConfig$modifie = popperConfig.modifiers,\n        modifiers = _popperConfig$modifie === void 0 ? {} : _popperConfig$modifie;\n\n    var popperProps = _extends({}, popperConfig, {\n      placement: placement,\n      referenceElement: target,\n      enableEvents: props.show,\n      modifiers: _extends({}, modifiers, {\n        preventOverflow: _extends({\n          padding: containerPadding || 5\n        }, modifiers.preventOverflow),\n        flip: _extends({\n          enabled: !!flip\n        }, modifiers.preventOverflow)\n      })\n    });\n\n    child = _react.default.createElement(_reactPopper.Popper, popperProps, function (_ref) {\n      var arrowProps = _ref.arrowProps,\n          style = _ref.style,\n          ref = _ref.ref,\n          popper = _objectWithoutPropertiesLoose(_ref, [\"arrowProps\", \"style\", \"ref\"]);\n\n      _this2.popper = popper;\n\n      var innerChild = _this2.props.children(_extends({}, popper, {\n        // popper doesn't set the initial placement\n        placement: popper.placement || placement,\n        show: props.show,\n        arrowProps: arrowProps,\n        props: {\n          ref: ref,\n          style: style\n        }\n      }));\n\n      if (Transition) {\n        var onExit = props.onExit,\n            onExiting = props.onExiting,\n            onEnter = props.onEnter,\n            onEntering = props.onEntering,\n            onEntered = props.onEntered;\n        innerChild = _react.default.createElement(Transition, {\n          in: props.show,\n          appear: true,\n          onExit: onExit,\n          onExiting: onExiting,\n          onExited: _this2.onHiddenListener,\n          onEnter: onEnter,\n          onEntering: onEntering,\n          onEntered: onEntered\n        }, innerChild);\n      }\n\n      return innerChild;\n    });\n\n    if (rootClose) {\n      child = _react.default.createElement(_RootCloseWrapper.default, {\n        onRootClose: props.onHide,\n        event: props.rootCloseEvent,\n        disabled: props.rootCloseDisabled\n      }, child);\n    }\n\n    return _react.default.createElement(_Portal.default, {\n      container: container\n    }, child);\n  };\n\n  return Overlay;\n}(_react.default.Component);\n\nOverlay.propTypes = _extends({}, _Portal.default.propTypes, {\n  /**\n   * Set the visibility of the Overlay\n   */\n  show: _propTypes.default.bool,\n\n  /** Specify where the overlay element is positioned in relation to the target element */\n  placement: _propTypes.default.oneOf(_reactPopper.placements),\n\n  /**\n   * A Node, Component instance, or function that returns either. The `container` will have the Portal children\n   * appended to it.\n   */\n  container: _propTypes.default.oneOfType([_componentOrElement.default, _propTypes.default.func]),\n\n  /**\n   * Enables the Popper.js `flip` modifier, allowing the Overlay to\n   * automatically adjust it's placement in case of overlap with the viewport or toggle.\n   * Refer to the [flip docs](https://popper.js.org/popper-documentation.html#modifiers..flip.enabled) for more info\n   */\n  flip: _propTypes.default.bool,\n\n  /**\n   * A render prop that returns an element to overlay and position. See\n   * the [react-popper documentation](https://github.com/FezVrasta/react-popper#children) for more info.\n   *\n   * @type {Function ({\n   *   show: boolean,\n   *   placement: Placement,\n   *   outOfBoundaries: ?boolean,\n   *   scheduleUpdate: () => void,\n   *   props: {\n   *     ref: (?HTMLElement) => void,\n   *     style: { [string]: string | number },\n   *     aria-labelledby: ?string\n   *   },\n   *   arrowProps: {\n   *     ref: (?HTMLElement) => void,\n   *     style: { [string]: string | number },\n   *   },\n   * }) => React.Element}\n   */\n  children: _propTypes.default.func.isRequired,\n\n  /**\n   * A set of popper options and props passed directly to react-popper's Popper component.\n   */\n  popperConfig: _propTypes.default.object,\n\n  /**\n   * Specify whether the overlay should trigger `onHide` when the user clicks outside the overlay\n   */\n  rootClose: _propTypes.default.bool,\n\n  /**\n   * Specify event for toggling overlay\n   */\n  rootCloseEvent: _RootCloseWrapper.default.propTypes.event,\n\n  /**\n   * Specify disabled for disable RootCloseWrapper\n   */\n  rootCloseDisabled: _RootCloseWrapper.default.propTypes.disabled,\n\n  /**\n   * A Callback fired by the Overlay when it wishes to be hidden.\n   *\n   * __required__ when `rootClose` is `true`.\n   *\n   * @type func\n   */\n  onHide: function onHide(props) {\n    var propType = _propTypes.default.func;\n\n    if (props.rootClose) {\n      propType = propType.isRequired;\n    }\n\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    return propType.apply(void 0, [props].concat(args));\n  },\n\n  /**\n   * A `react-transition-group@2.0.0` `<Transition/>` component\n   * used to animate the overlay as it changes visibility.\n   */\n  transition: _elementType.default,\n\n  /**\n   * Callback fired before the Overlay transitions in\n   */\n  onEnter: _propTypes.default.func,\n\n  /**\n   * Callback fired as the Overlay begins to transition in\n   */\n  onEntering: _propTypes.default.func,\n\n  /**\n   * Callback fired after the Overlay finishes transitioning in\n   */\n  onEntered: _propTypes.default.func,\n\n  /**\n   * Callback fired right before the Overlay transitions out\n   */\n  onExit: _propTypes.default.func,\n\n  /**\n   * Callback fired as the Overlay begins to transition out\n   */\n  onExiting: _propTypes.default.func,\n\n  /**\n   * Callback fired after the Overlay finishes transitioning out\n   */\n  onExited: _propTypes.default.func\n});\n\nvar _default = (0, _forwardRef.default)(function (props, ref) {\n  return (// eslint-disable-next-line react/prop-types\n    _react.default.createElement(_WaitForContainer.default, {\n      container: props.container\n    }, function (container) {\n      return _react.default.createElement(Overlay, _extends({}, props, {\n        ref: ref,\n        container: container\n      }));\n    })\n  );\n}, {\n  displayName: 'withContainer(Overlay)'\n});\n\nexports.default = _default;\nmodule.exports = exports.default;\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\nvar ReactPropTypesSecret = __webpack_require__(59);\n\nfunction emptyFunction() {}\n\nfunction emptyFunctionWithReset() {}\n\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function () {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n\n    var err = new Error('Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use PropTypes.checkPropTypes() to call them. ' + 'Read more at http://fb.me/use-check-prop-types');\n    err.name = 'Invariant Violation';\n    throw err;\n  }\n\n  ;\n  shim.isRequired = shim;\n\n  function getShim() {\n    return shim;\n  }\n\n  ; // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n\n  var ReactPropTypes = {\n    array: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n  ReactPropTypes.PropTypes = ReactPropTypes;\n  return ReactPropTypes;\n};\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\nmodule.exports = ReactPropTypesSecret;\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = hyphenateStyleName;\n\nvar _hyphenate = _interopRequireDefault(__webpack_require__(61));\n/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/hyphenateStyleName.js\n */\n\n\nvar msPattern = /^ms-/;\n\nfunction hyphenateStyleName(string) {\n  return (0, _hyphenate.default)(string).replace(msPattern, '-ms-');\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = hyphenate;\nvar rUpper = /([A-Z])/g;\n\nfunction hyphenate(string) {\n  return string.replace(rUpper, '-$1').toLowerCase();\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = _getComputedStyle;\n\nvar _camelizeStyle = _interopRequireDefault(__webpack_require__(40));\n\nvar rposition = /^(top|right|bottom|left)$/;\nvar rnumnonpx = /^([+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|))(?!px)[a-z%]+$/i;\n\nfunction _getComputedStyle(node) {\n  if (!node) throw new TypeError('No Element passed to `getComputedStyle()`');\n  var doc = node.ownerDocument;\n  return 'defaultView' in doc ? doc.defaultView.opener ? node.ownerDocument.defaultView.getComputedStyle(node, null) : window.getComputedStyle(node, null) : {\n    //ie 8 \"magic\" from: https://github.com/jquery/jquery/blob/1.11-stable/src/css/curCSS.js#L72\n    getPropertyValue: function getPropertyValue(prop) {\n      var style = node.style;\n      prop = (0, _camelizeStyle.default)(prop);\n      if (prop == 'float') prop = 'styleFloat';\n      var current = node.currentStyle[prop] || null;\n      if (current == null && style && style[prop]) current = style[prop];\n\n      if (rnumnonpx.test(current) && !rposition.test(prop)) {\n        // Remember the original values\n        var left = style.left;\n        var runStyle = node.runtimeStyle;\n        var rsLeft = runStyle && runStyle.left; // Put in the new values to get a computed value out\n\n        if (rsLeft) runStyle.left = node.currentStyle.left;\n        style.left = prop === 'fontSize' ? '1em' : current;\n        current = style.pixelLeft + 'px'; // Revert the changed values\n\n        style.left = left;\n        if (rsLeft) runStyle.left = rsLeft;\n      }\n\n      return current;\n    }\n  };\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = removeStyle;\n\nfunction removeStyle(node, key) {\n  return 'removeProperty' in node.style ? node.style.removeProperty(key) : node.style.removeAttribute(key);\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = isTransform;\nvar supportedTransforms = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;\n\nfunction isTransform(property) {\n  return !!(property && supportedTransforms.test(property));\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 65 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"polyfill\", function() { return polyfill; });\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nfunction componentWillMount() {\n  // Call this.constructor.gDSFP to support sub-classes.\n  var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n\n  if (state !== null && state !== undefined) {\n    this.setState(state);\n  }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n  // Call this.constructor.gDSFP to support sub-classes.\n  // Use the setState() updater to ensure state isn't stale in certain edge cases.\n  function updater(prevState) {\n    var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n    return state !== null && state !== undefined ? state : null;\n  } // Binding \"this\" is important for shallow renderer support.\n\n\n  this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n  try {\n    var prevProps = this.props;\n    var prevState = this.state;\n    this.props = nextProps;\n    this.state = nextState;\n    this.__reactInternalSnapshotFlag = true;\n    this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(prevProps, prevState);\n  } finally {\n    this.props = prevProps;\n    this.state = prevState;\n  }\n} // React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\n\n\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n  var prototype = Component.prototype;\n\n  if (!prototype || !prototype.isReactComponent) {\n    throw new Error('Can only polyfill class components');\n  }\n\n  if (typeof Component.getDerivedStateFromProps !== 'function' && typeof prototype.getSnapshotBeforeUpdate !== 'function') {\n    return Component;\n  } // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n  // Error if any of these lifecycles are present,\n  // Because they would work differently between older and newer (16.3+) versions of React.\n\n\n  var foundWillMountName = null;\n  var foundWillReceivePropsName = null;\n  var foundWillUpdateName = null;\n\n  if (typeof prototype.componentWillMount === 'function') {\n    foundWillMountName = 'componentWillMount';\n  } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n    foundWillMountName = 'UNSAFE_componentWillMount';\n  }\n\n  if (typeof prototype.componentWillReceiveProps === 'function') {\n    foundWillReceivePropsName = 'componentWillReceiveProps';\n  } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n    foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n  }\n\n  if (typeof prototype.componentWillUpdate === 'function') {\n    foundWillUpdateName = 'componentWillUpdate';\n  } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n    foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n  }\n\n  if (foundWillMountName !== null || foundWillReceivePropsName !== null || foundWillUpdateName !== null) {\n    var componentName = Component.displayName || Component.name;\n    var newApiName = typeof Component.getDerivedStateFromProps === 'function' ? 'getDerivedStateFromProps()' : 'getSnapshotBeforeUpdate()';\n    throw Error('Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' + componentName + ' uses ' + newApiName + ' but also contains the following legacy lifecycles:' + (foundWillMountName !== null ? '\\n  ' + foundWillMountName : '') + (foundWillReceivePropsName !== null ? '\\n  ' + foundWillReceivePropsName : '') + (foundWillUpdateName !== null ? '\\n  ' + foundWillUpdateName : '') + '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' + 'https://fb.me/react-async-component-lifecycle-hooks');\n  } // React <= 16.2 does not support static getDerivedStateFromProps.\n  // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n  // Newer versions of React will ignore these lifecycles if gDSFP exists.\n\n\n  if (typeof Component.getDerivedStateFromProps === 'function') {\n    prototype.componentWillMount = componentWillMount;\n    prototype.componentWillReceiveProps = componentWillReceiveProps;\n  } // React <= 16.2 does not support getSnapshotBeforeUpdate.\n  // As a workaround, use cWU to invoke the new lifecycle.\n  // Newer versions of React will ignore that lifecycle if gSBU exists.\n\n\n  if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n    if (typeof prototype.componentDidUpdate !== 'function') {\n      throw new Error('Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype');\n    }\n\n    prototype.componentWillUpdate = componentWillUpdate;\n    var componentDidUpdate = prototype.componentDidUpdate;\n\n    prototype.componentDidUpdate = function componentDidUpdatePolyfill(prevProps, prevState, maybeSnapshot) {\n      // 16.3+ will not execute our will-update method;\n      // It will pass a snapshot value to did-update though.\n      // Older versions will require our polyfilled will-update value.\n      // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n      // Because for <= 15.x versions this might be a \"prevContext\" object.\n      // We also can't just check \"__reactInternalSnapshot\",\n      // Because get-snapshot might return a falsy value.\n      // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n      var snapshot = this.__reactInternalSnapshotFlag ? this.__reactInternalSnapshot : maybeSnapshot;\n      componentDidUpdate.call(this, prevProps, prevState, snapshot);\n    };\n  }\n\n  return Component;\n}\n\n\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.classNamesShape = exports.timeoutsShape = void 0;\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(0));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nvar timeoutsShape =  false ? undefined : null;\nexports.timeoutsShape = timeoutsShape;\nvar classNamesShape =  false ? undefined : null;\nexports.classNamesShape = classNamesShape;\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = deprecated;\n\nvar _warning = __webpack_require__(68);\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nvar warned = {};\n\nfunction deprecated(validator, reason) {\n  return function validate(props, propName, componentName, location, propFullName) {\n    var componentNameSafe = componentName || '<<anonymous>>';\n    var propFullNameSafe = propFullName || propName;\n\n    if (props[propName] != null) {\n      var messageKey = componentName + '.' + propName;\n      (0, _warning2.default)(warned[messageKey], 'The ' + location + ' `' + propFullNameSafe + '` of ' + ('`' + componentNameSafe + '` is deprecated. ' + reason + '.'));\n      warned[messageKey] = true;\n    }\n\n    for (var _len = arguments.length, args = Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++) {\n      args[_key - 5] = arguments[_key];\n    }\n\n    return validator.apply(undefined, [props, propName, componentName, location, propFullName].concat(args));\n  };\n}\n/* eslint-disable no-underscore-dangle */\n\n\nfunction _resetWarned() {\n  warned = {};\n}\n\ndeprecated._resetWarned = _resetWarned;\n/* eslint-enable no-underscore-dangle */\n\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = function () {};\n\nif (false) {}\n\nmodule.exports = warning;\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nif (true) {\n  module.exports = __webpack_require__(70);\n} else {}\n\n/***/ }),\n/* 70 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/** @license React v16.8.6\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: !0\n});\nvar b = \"function\" === typeof Symbol && Symbol.for,\n    c = b ? Symbol.for(\"react.element\") : 60103,\n    d = b ? Symbol.for(\"react.portal\") : 60106,\n    e = b ? Symbol.for(\"react.fragment\") : 60107,\n    f = b ? Symbol.for(\"react.strict_mode\") : 60108,\n    g = b ? Symbol.for(\"react.profiler\") : 60114,\n    h = b ? Symbol.for(\"react.provider\") : 60109,\n    k = b ? Symbol.for(\"react.context\") : 60110,\n    l = b ? Symbol.for(\"react.async_mode\") : 60111,\n    m = b ? Symbol.for(\"react.concurrent_mode\") : 60111,\n    n = b ? Symbol.for(\"react.forward_ref\") : 60112,\n    p = b ? Symbol.for(\"react.suspense\") : 60113,\n    q = b ? Symbol.for(\"react.memo\") : 60115,\n    r = b ? Symbol.for(\"react.lazy\") : 60116;\n\nfunction t(a) {\n  if (\"object\" === typeof a && null !== a) {\n    var u = a.$$typeof;\n\n    switch (u) {\n      case c:\n        switch (a = a.type, a) {\n          case l:\n          case m:\n          case e:\n          case g:\n          case f:\n          case p:\n            return a;\n\n          default:\n            switch (a = a && a.$$typeof, a) {\n              case k:\n              case n:\n              case h:\n                return a;\n\n              default:\n                return u;\n            }\n\n        }\n\n      case r:\n      case q:\n      case d:\n        return u;\n    }\n  }\n}\n\nfunction v(a) {\n  return t(a) === m;\n}\n\nexports.typeOf = t;\nexports.AsyncMode = l;\nexports.ConcurrentMode = m;\nexports.ContextConsumer = k;\nexports.ContextProvider = h;\nexports.Element = c;\nexports.ForwardRef = n;\nexports.Fragment = e;\nexports.Lazy = r;\nexports.Memo = q;\nexports.Portal = d;\nexports.Profiler = g;\nexports.StrictMode = f;\nexports.Suspense = p;\n\nexports.isValidElementType = function (a) {\n  return \"string\" === typeof a || \"function\" === typeof a || a === e || a === m || a === g || a === f || a === p || \"object\" === typeof a && null !== a && (a.$$typeof === r || a.$$typeof === q || a.$$typeof === h || a.$$typeof === k || a.$$typeof === n);\n};\n\nexports.isAsyncMode = function (a) {\n  return v(a) || t(a) === l;\n};\n\nexports.isConcurrentMode = v;\n\nexports.isContextConsumer = function (a) {\n  return t(a) === k;\n};\n\nexports.isContextProvider = function (a) {\n  return t(a) === h;\n};\n\nexports.isElement = function (a) {\n  return \"object\" === typeof a && null !== a && a.$$typeof === c;\n};\n\nexports.isForwardRef = function (a) {\n  return t(a) === n;\n};\n\nexports.isFragment = function (a) {\n  return t(a) === e;\n};\n\nexports.isLazy = function (a) {\n  return t(a) === r;\n};\n\nexports.isMemo = function (a) {\n  return t(a) === q;\n};\n\nexports.isPortal = function (a) {\n  return t(a) === d;\n};\n\nexports.isProfiler = function (a) {\n  return t(a) === g;\n};\n\nexports.isStrictMode = function (a) {\n  return t(a) === f;\n};\n\nexports.isSuspense = function (a) {\n  return t(a) === p;\n};\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _react = __webpack_require__(1);\n\nfunction useCommittedRef(value) {\n  var ref = (0, _react.useRef)(value);\n  (0, _react.useEffect)(function () {\n    ref.current = value;\n  }, [value]);\n  return ref;\n}\n\nvar _default = useCommittedRef;\nexports.default = _default;\n\n/***/ }),\n/* 72 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = matches;\n\nvar _inDOM = _interopRequireDefault(__webpack_require__(10));\n\nvar _querySelectorAll = _interopRequireDefault(__webpack_require__(9));\n\nvar matchesCache;\n\nfunction matches(node, selector) {\n  if (!matchesCache && _inDOM.default) {\n    var body = document.body;\n    var nativeMatch = body.matches || body.matchesSelector || body.webkitMatchesSelector || body.mozMatchesSelector || body.msMatchesSelector;\n    matchesCache = nativeMatch ? function (node, selector) {\n      return nativeMatch.call(node, selector);\n    } : ie8MatchesSelector;\n  }\n\n  return matchesCache ? matchesCache(node, selector) : null;\n}\n\nfunction ie8MatchesSelector(node, selector) {\n  var matches = (0, _querySelectorAll.default)(node.document || node.ownerDocument, selector),\n      i = 0;\n\n  while (matches[i] && matches[i] !== node) {\n    i++;\n  }\n\n  return !!matches[i];\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 73 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(0);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _gud = __webpack_require__(74);\n\nvar _gud2 = _interopRequireDefault(_gud);\n\nvar _warning = __webpack_require__(75);\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n  if (!self) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823; // Inlined Object.is polyfill.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n\nfunction objectIs(x, y) {\n  if (x === y) {\n    return x !== 0 || 1 / x === 1 / y;\n  } else {\n    return x !== x && y !== y;\n  }\n}\n\nfunction createEventEmitter(value) {\n  var handlers = [];\n  return {\n    on: function on(handler) {\n      handlers.push(handler);\n    },\n    off: function off(handler) {\n      handlers = handlers.filter(function (h) {\n        return h !== handler;\n      });\n    },\n    get: function get() {\n      return value;\n    },\n    set: function set(newValue, changedBits) {\n      value = newValue;\n      handlers.forEach(function (handler) {\n        return handler(value, changedBits);\n      });\n    }\n  };\n}\n\nfunction onlyChild(children) {\n  return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n  var _Provider$childContex, _Consumer$contextType;\n\n  var contextProp = '__create-react-context-' + (0, _gud2.default)() + '__';\n\n  var Provider = function (_Component) {\n    _inherits(Provider, _Component);\n\n    function Provider() {\n      var _temp, _this, _ret;\n\n      _classCallCheck(this, Provider);\n\n      for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      return _ret = (_temp = (_this = _possibleConstructorReturn(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.emitter = createEventEmitter(_this.props.value), _temp), _possibleConstructorReturn(_this, _ret);\n    }\n\n    Provider.prototype.getChildContext = function getChildContext() {\n      var _ref;\n\n      return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n    };\n\n    Provider.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n      if (this.props.value !== nextProps.value) {\n        var oldValue = this.props.value;\n        var newValue = nextProps.value;\n        var changedBits = void 0;\n\n        if (objectIs(oldValue, newValue)) {\n          changedBits = 0; // No change\n        } else {\n          changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n\n          if (false) {}\n\n          changedBits |= 0;\n\n          if (changedBits !== 0) {\n            this.emitter.set(nextProps.value, changedBits);\n          }\n        }\n      }\n    };\n\n    Provider.prototype.render = function render() {\n      return this.props.children;\n    };\n\n    return Provider;\n  }(_react.Component);\n\n  Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = _propTypes2.default.object.isRequired, _Provider$childContex);\n\n  var Consumer = function (_Component2) {\n    _inherits(Consumer, _Component2);\n\n    function Consumer() {\n      var _temp2, _this2, _ret2;\n\n      _classCallCheck(this, Consumer);\n\n      for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      return _ret2 = (_temp2 = (_this2 = _possibleConstructorReturn(this, _Component2.call.apply(_Component2, [this].concat(args))), _this2), _this2.state = {\n        value: _this2.getValue()\n      }, _this2.onUpdate = function (newValue, changedBits) {\n        var observedBits = _this2.observedBits | 0;\n\n        if ((observedBits & changedBits) !== 0) {\n          _this2.setState({\n            value: _this2.getValue()\n          });\n        }\n      }, _temp2), _possibleConstructorReturn(_this2, _ret2);\n    }\n\n    Consumer.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n      var observedBits = nextProps.observedBits;\n      this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n      : observedBits;\n    };\n\n    Consumer.prototype.componentDidMount = function componentDidMount() {\n      if (this.context[contextProp]) {\n        this.context[contextProp].on(this.onUpdate);\n      }\n\n      var observedBits = this.props.observedBits;\n      this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n      : observedBits;\n    };\n\n    Consumer.prototype.componentWillUnmount = function componentWillUnmount() {\n      if (this.context[contextProp]) {\n        this.context[contextProp].off(this.onUpdate);\n      }\n    };\n\n    Consumer.prototype.getValue = function getValue() {\n      if (this.context[contextProp]) {\n        return this.context[contextProp].get();\n      } else {\n        return defaultValue;\n      }\n    };\n\n    Consumer.prototype.render = function render() {\n      return onlyChild(this.props.children)(this.state.value);\n    };\n\n    return Consumer;\n  }(_react.Component);\n\n  Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = _propTypes2.default.object, _Consumer$contextType);\n  return {\n    Provider: Provider,\n    Consumer: Consumer\n  };\n}\n\nexports.default = createReactContext;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 74 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {// @flow\n\n\nvar key = '__global_unique_id__';\n\nmodule.exports = function () {\n  return global[key] = (global[key] || 0) + 1;\n};\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(41)))\n\n/***/ }),\n/* 75 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\nvar emptyFunction = __webpack_require__(76);\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\n\nvar warning = emptyFunction;\n\nif (false) { var printWarning; }\n\nmodule.exports = warning;\n\n/***/ }),\n/* 76 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\nfunction makeEmptyFunction(arg) {\n  return function () {\n    return arg;\n  };\n}\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\n\n\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\n\nemptyFunction.thatReturnsThis = function () {\n  return this;\n};\n\nemptyFunction.thatReturnsArgument = function (arg) {\n  return arg;\n};\n\nmodule.exports = emptyFunction;\n\n/***/ }),\n/* 77 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = mapContextToProps;\n\nvar _react = _interopRequireDefault(__webpack_require__(1));\n\nvar _forwardRef = _interopRequireDefault(__webpack_require__(46));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nvar getDisplayName = function getDisplayName(Component) {\n  var name = typeof Component === 'string' ? Component : Component.name || Component.displayName;\n  return name ? \"ContextTransform(\" + name + \")\" : 'ContextTransform';\n};\n\nvar ensureConsumer = function ensureConsumer(c) {\n  return c.Consumer || c;\n};\n\nfunction $mapContextToProps(_ref, Component) {\n  var maybeArrayOfConsumers = _ref.consumers,\n      mapToProps = _ref.mapToProps,\n      displayName = _ref.displayName,\n      _ref$forwardRefAs = _ref.forwardRefAs,\n      forwardRefAs = _ref$forwardRefAs === void 0 ? 'ref' : _ref$forwardRefAs;\n  var consumers = maybeArrayOfConsumers;\n\n  if (!Array.isArray(maybeArrayOfConsumers)) {\n    consumers = [maybeArrayOfConsumers];\n  }\n\n  var SingleConsumer = ensureConsumer(consumers[0]);\n\n  function singleRender(props, ref) {\n    var _extends2;\n\n    var propsWithRef = _extends((_extends2 = {}, _extends2[forwardRefAs] = ref, _extends2), props);\n\n    return _react.default.createElement(SingleConsumer, null, function (value) {\n      return _react.default.createElement(Component, _extends({}, propsWithRef, mapToProps(value, props)));\n    });\n  }\n\n  function multiRender(props, ref) {\n    var _extends3;\n\n    var propsWithRef = _extends((_extends3 = {}, _extends3[forwardRefAs] = ref, _extends3), props);\n\n    return consumers.reduceRight(function (inner, Context) {\n      return function () {\n        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n          args[_key] = arguments[_key];\n        }\n\n        var Consumer = ensureConsumer(Context);\n        return _react.default.createElement(Consumer, null, function (value) {\n          return inner.apply(void 0, args.concat([value]));\n        });\n      };\n    }, function () {\n      for (var _len2 = arguments.length, contexts = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        contexts[_key2] = arguments[_key2];\n      }\n\n      return _react.default.createElement(Component, _extends({}, propsWithRef, mapToProps.apply(void 0, contexts.concat([props]))));\n    })();\n  }\n\n  var contextTransform = consumers.length === 1 ? singleRender : multiRender;\n  return (0, _forwardRef.default)(contextTransform, {\n    displayName: displayName || getDisplayName(Component)\n  });\n}\n\nfunction mapContextToProps(maybeOpts, mapToProps, Component) {\n  if (arguments.length === 2) return $mapContextToProps(maybeOpts, mapToProps);\n  return $mapContextToProps({\n    consumers: maybeOpts,\n    mapToProps: mapToProps\n  }, Component);\n}\n\n/***/ }),\n/* 78 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = filterEvents;\n\nvar _contains = _interopRequireDefault(__webpack_require__(22));\n\nvar _querySelectorAll = _interopRequireDefault(__webpack_require__(9));\n\nfunction filterEvents(selector, handler) {\n  return function filterHandler(e) {\n    var top = e.currentTarget,\n        target = e.target,\n        matches = (0, _querySelectorAll.default)(top, selector);\n    if (matches.some(function (match) {\n      return (0, _contains.default)(match, target);\n    })) handler.call(this, e);\n  };\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 79 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = activeElement;\n\nvar _ownerDocument = _interopRequireDefault(__webpack_require__(16));\n\nfunction activeElement(doc) {\n  if (doc === void 0) {\n    doc = (0, _ownerDocument.default)();\n  }\n\n  try {\n    return doc.activeElement;\n  } catch (e) {\n    /* ie throws if no active element */\n  }\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 80 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _addClass = _interopRequireDefault(__webpack_require__(81));\n\nexports.addClass = _addClass.default;\n\nvar _removeClass = _interopRequireDefault(__webpack_require__(82));\n\nexports.removeClass = _removeClass.default;\n\nvar _hasClass = _interopRequireDefault(__webpack_require__(47));\n\nexports.hasClass = _hasClass.default;\nvar _default = {\n  addClass: _addClass.default,\n  removeClass: _removeClass.default,\n  hasClass: _hasClass.default\n};\nexports.default = _default;\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(5);\n\nexports.__esModule = true;\nexports.default = addClass;\n\nvar _hasClass = _interopRequireDefault(__webpack_require__(47));\n\nfunction addClass(element, className) {\n  if (element.classList) element.classList.add(className);else if (!(0, _hasClass.default)(element, className)) if (typeof element.className === 'string') element.className = element.className + ' ' + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + ' ' + className);\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction replaceClassName(origClass, classToRemove) {\n  return origClass.replace(new RegExp('(^|\\\\s)' + classToRemove + '(?:\\\\s|$)', 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n\nmodule.exports = function removeClass(element, className) {\n  if (element.classList) element.classList.remove(className);else if (typeof element.className === 'string') element.className = replaceClassName(element.className, className);else element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n};\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = isOverflowing;\n\nvar _isWindow = _interopRequireDefault(__webpack_require__(84));\n\nvar _ownerDocument = _interopRequireDefault(__webpack_require__(16));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction isBody(node) {\n  return node && node.tagName.toLowerCase() === 'body';\n}\n\nfunction bodyIsOverflowing(node) {\n  var doc = (0, _ownerDocument.default)(node);\n  var win = (0, _isWindow.default)(doc);\n  return doc.body.clientWidth < win.innerWidth;\n}\n\nfunction isOverflowing(container) {\n  var win = (0, _isWindow.default)(container);\n  return win || isBody(container) ? bodyIsOverflowing(container) : container.scrollHeight > container.clientHeight;\n}\n\nmodule.exports = exports.default;\n\n/***/ }),\n/* 84 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = getWindow;\n\nfunction getWindow(node) {\n  return node === node.window ? node : node.nodeType === 9 ? node.defaultView || node.parentWindow : false;\n}\n\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.ariaHidden = ariaHidden;\nexports.hideSiblings = hideSiblings;\nexports.showSiblings = showSiblings;\nvar BLACKLIST = ['template', 'script', 'style'];\n\nvar isHidable = function isHidable(_ref) {\n  var nodeType = _ref.nodeType,\n      tagName = _ref.tagName;\n  return nodeType === 1 && BLACKLIST.indexOf(tagName.toLowerCase()) === -1;\n};\n\nvar siblings = function siblings(container, exclude, cb) {\n  exclude = [].concat(exclude);\n  [].forEach.call(container.children, function (node) {\n    if (exclude.indexOf(node) === -1 && isHidable(node)) {\n      cb(node);\n    }\n  });\n};\n\nfunction ariaHidden(show, node) {\n  if (!node) return;\n\n  if (show) {\n    node.setAttribute('aria-hidden', 'true');\n  } else {\n    node.removeAttribute('aria-hidden');\n  }\n}\n\nfunction hideSiblings(container, _ref2) {\n  var root = _ref2.root,\n      backdrop = _ref2.backdrop;\n  siblings(container, [root, backdrop], function (node) {\n    return ariaHidden(true, node);\n  });\n}\n\nfunction showSiblings(container, _ref3) {\n  var root = _ref3.root,\n      backdrop = _ref3.backdrop;\n  siblings(container, [root, backdrop], function (node) {\n    return ariaHidden(false, node);\n  });\n}\n\n/***/ }),\n/* 86 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/extends.js\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n// EXTERNAL MODULE: ./node_modules/classnames/index.js\nvar classnames = __webpack_require__(2);\nvar classnames_default = /*#__PURE__*/__webpack_require__.n(classnames);\n\n// EXTERNAL MODULE: external {\"root\":\"React\",\"commonjs2\":\"react\",\"commonjs\":\"react\",\"amd\":\"react\"}\nvar external_root_React_commonjs2_react_commonjs_react_amd_react_ = __webpack_require__(1);\nvar external_root_React_commonjs2_react_commonjs_react_amd_react_default = /*#__PURE__*/__webpack_require__.n(external_root_React_commonjs2_react_commonjs_react_amd_react_);\n\n// EXTERNAL MODULE: ./node_modules/prop-types/index.js\nvar prop_types = __webpack_require__(0);\nvar prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);\n\n// EXTERNAL MODULE: ./node_modules/uncontrollable/hook.js\nvar hook = __webpack_require__(15);\nvar hook_default = /*#__PURE__*/__webpack_require__.n(hook);\n\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n// EXTERNAL MODULE: ./node_modules/@restart/context/forwardRef.js\nvar forwardRef = __webpack_require__(32);\nvar forwardRef_default = /*#__PURE__*/__webpack_require__.n(forwardRef);\n\n// CONCATENATED MODULE: ./src/ThemeProvider.js\n\n\nvar _jsxFileName = \"/Users/jason/src/react-bootstrap/src/ThemeProvider.js\";\n\n\n\nvar ThemeContext = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createContext(new Map());\nvar Consumer = ThemeContext.Consumer,\n    Provider = ThemeContext.Provider;\n\nvar ThemeProvider_ThemeProvider =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(ThemeProvider, _React$Component);\n\n  function ThemeProvider() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n    _this.prefixes = new Map();\n    Object.keys(_this.props.prefixes).forEach(function (key) {\n      _this.prefixes.set(key, _this.props.prefixes[key]);\n    });\n    return _this;\n  }\n\n  var _proto = ThemeProvider.prototype;\n\n  _proto.render = function render() {\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Provider, {\n      value: this.prefixes,\n      __source: {\n        fileName: _jsxFileName,\n        lineNumber: 22\n      },\n      __self: this\n    }, this.props.children);\n  };\n\n  return ThemeProvider;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nThemeProvider_ThemeProvider.propTypes = {\n  prefixes: prop_types_default.a.object.isRequired\n};\nfunction useBootstrapPrefix(prefix, defaultPrefix) {\n  var prefixes = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(ThemeContext);\n  return prefix || prefixes.get(defaultPrefix) || defaultPrefix;\n}\n\nfunction createBootstrapComponent(Component, opts) {\n  if (typeof opts === 'string') opts = {\n    prefix: opts\n  };\n  var isClassy = Component.prototype && Component.prototype.isReactComponent; // If it's a functional component make sure we don't break it with a ref\n\n  var _opts = opts,\n      prefix = _opts.prefix,\n      _opts$forwardRefAs = _opts.forwardRefAs,\n      forwardRefAs = _opts$forwardRefAs === void 0 ? isClassy ? 'ref' : 'innerRef' : _opts$forwardRefAs;\n  return forwardRef_default()(function (_ref, ref) {\n    var props = _extends({}, _ref);\n\n    props[forwardRefAs] = ref;\n    var prefixes = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(ThemeContext);\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n      // eslint-disable-next-line react/prop-types\n      bsPrefix: props.bsPrefix || prefixes.get(prefix) || prefix,\n      __source: {\n        fileName: _jsxFileName,\n        lineNumber: 42\n      },\n      __self: this\n    }));\n  }, {\n    displayName: \"Bootstrap(\" + (Component.displayName || Component.name) + \")\"\n  });\n}\n\n\n/* harmony default export */ var src_ThemeProvider = (ThemeProvider_ThemeProvider);\n// CONCATENATED MODULE: ./src/SelectableContext.js\n\nvar SelectableContext = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createContext();\nvar makeEventKey = function makeEventKey(eventKey, href) {\n  if (eventKey != null) return String(eventKey);\n  return href || null;\n};\n/* harmony default export */ var src_SelectableContext = (SelectableContext);\n// CONCATENATED MODULE: ./src/AccordionToggle.js\n\n\nvar AccordionToggle_jsxFileName = \"/Users/jason/src/react-bootstrap/src/AccordionToggle.js\";\n\n\n\nvar propTypes = {\n  /** Set a custom element for this component */\n  as: prop_types_default.a.elementType,\n\n  /**\n   * A key that corresponds to the collapse component that gets triggered\n   * when this has been clicked.\n   */\n  eventKey: prop_types_default.a.string.isRequired,\n\n  /** A callback function for when this component is clicked */\n  onClick: prop_types_default.a.func,\n\n  /** Children prop should only contain a single child, and  is enforced as such */\n  children: prop_types_default.a.element\n};\nvar AccordionToggle_defaultProps = {\n  as: 'button'\n};\nvar AccordionToggle = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var Component = _ref.as,\n      children = _ref.children,\n      eventKey = _ref.eventKey,\n      _onClick = _ref.onClick,\n      props = _objectWithoutPropertiesLoose(_ref, [\"as\", \"children\", \"eventKey\", \"onClick\"]);\n\n  var onSelect = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(src_SelectableContext);\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({\n    ref: ref,\n    onClick: function onClick(e) {\n      onSelect(eventKey, e);\n      if (_onClick) _onClick(e);\n    }\n  }, props, {\n    __source: {\n      fileName: AccordionToggle_jsxFileName,\n      lineNumber: 31\n    },\n    __self: this\n  }), children);\n});\nAccordionToggle.propTypes = propTypes;\nAccordionToggle.defaultProps = AccordionToggle_defaultProps;\n/* harmony default export */ var src_AccordionToggle = (AccordionToggle);\n// EXTERNAL MODULE: ./node_modules/dom-helpers/style/index.js\nvar dom_helpers_style = __webpack_require__(11);\nvar style_default = /*#__PURE__*/__webpack_require__.n(dom_helpers_style);\n\n// EXTERNAL MODULE: ./node_modules/dom-helpers/transition/end.js\nvar end = __webpack_require__(23);\nvar end_default = /*#__PURE__*/__webpack_require__.n(end);\n\n// EXTERNAL MODULE: ./node_modules/react-transition-group/Transition.js\nvar react_transition_group_Transition = __webpack_require__(12);\nvar Transition_default = /*#__PURE__*/__webpack_require__.n(react_transition_group_Transition);\n\n// CONCATENATED MODULE: ./src/utils/triggerBrowserReflow.js\n// reading a dimension prop will cause the browser to recalculate,\n// which will let our animations work\nfunction triggerBrowserReflow(node) {\n  node.offsetHeight; // eslint-disable-line no-unused-expressions\n}\n// CONCATENATED MODULE: ./src/utils/createChainedFunction.js\n/**\n * Safe chained function\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n *\n * @param {function} functions to chain\n * @returns {function|null}\n */\nfunction createChainedFunction() {\n  for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n    funcs[_key] = arguments[_key];\n  }\n\n  return funcs.filter(function (f) {\n    return f != null;\n  }).reduce(function (acc, f) {\n    if (typeof f !== 'function') {\n      throw new Error('Invalid Argument Type, must only provide functions, undefined, or null.');\n    }\n\n    if (acc === null) return f;\n    return function chainedFunction() {\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      acc.apply(this, args);\n      f.apply(this, args);\n    };\n  }, null);\n}\n\n/* harmony default export */ var utils_createChainedFunction = (createChainedFunction);\n// CONCATENATED MODULE: ./src/Collapse.js\n\n\n\n\nvar _collapseStyles,\n    Collapse_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Collapse.js\";\n\n\n\n\n\n\n\n\n\nvar MARGINS = {\n  height: ['marginTop', 'marginBottom'],\n  width: ['marginLeft', 'marginRight']\n};\n\nfunction getDimensionValue(dimension, elem) {\n  var offset = \"offset\" + dimension[0].toUpperCase() + dimension.slice(1);\n  var value = elem[offset];\n  var margins = MARGINS[dimension];\n  return value + parseInt(style_default()(elem, margins[0]), 10) + parseInt(style_default()(elem, margins[1]), 10);\n}\n\nvar collapseStyles = (_collapseStyles = {}, _collapseStyles[react_transition_group_Transition[\"EXITED\"]] = 'collapse', _collapseStyles[react_transition_group_Transition[\"EXITING\"]] = 'collapsing', _collapseStyles[react_transition_group_Transition[\"ENTERING\"]] = 'collapsing', _collapseStyles[react_transition_group_Transition[\"ENTERED\"]] = 'collapse show', _collapseStyles);\nvar Collapse_propTypes = {\n  /**\n   * Show the component; triggers the expand or collapse animation\n   */\n  in: prop_types_default.a.bool,\n\n  /**\n   * Wait until the first \"enter\" transition to mount the component (add it to the DOM)\n   */\n  mountOnEnter: prop_types_default.a.bool,\n\n  /**\n   * Unmount the component (remove it from the DOM) when it is collapsed\n   */\n  unmountOnExit: prop_types_default.a.bool,\n\n  /**\n   * Run the expand animation when the component mounts, if it is initially\n   * shown\n   */\n  appear: prop_types_default.a.bool,\n\n  /**\n   * Duration of the collapse animation in milliseconds, to ensure that\n   * finishing callbacks are fired even if the original browser transition end\n   * events are canceled\n   */\n  timeout: prop_types_default.a.number,\n\n  /**\n   * Callback fired before the component expands\n   */\n  onEnter: prop_types_default.a.func,\n\n  /**\n   * Callback fired after the component starts to expand\n   */\n  onEntering: prop_types_default.a.func,\n\n  /**\n   * Callback fired after the component has expanded\n   */\n  onEntered: prop_types_default.a.func,\n\n  /**\n   * Callback fired before the component collapses\n   */\n  onExit: prop_types_default.a.func,\n\n  /**\n   * Callback fired after the component starts to collapse\n   */\n  onExiting: prop_types_default.a.func,\n\n  /**\n   * Callback fired after the component has collapsed\n   */\n  onExited: prop_types_default.a.func,\n\n  /**\n   * The dimension used when collapsing, or a function that returns the\n   * dimension\n   *\n   * _Note: Bootstrap only partially supports 'width'!\n   * You will need to supply your own CSS animation for the `.width` CSS class._\n   */\n  dimension: prop_types_default.a.oneOfType([prop_types_default.a.oneOf(['height', 'width']), prop_types_default.a.func]),\n\n  /**\n   * Function that returns the height or width of the animating DOM node\n   *\n   * Allows for providing some custom logic for how much the Collapse component\n   * should animate in its specified dimension. Called with the current\n   * dimension prop value and the DOM node.\n   *\n   * @default element.offsetWidth | element.offsetHeight\n   */\n  getDimensionValue: prop_types_default.a.func,\n\n  /**\n   * ARIA role of collapsible element\n   */\n  role: prop_types_default.a.string\n};\nvar Collapse_defaultProps = {\n  in: false,\n  timeout: 300,\n  mountOnEnter: false,\n  unmountOnExit: false,\n  appear: false,\n  dimension: 'height',\n  getDimensionValue: getDimensionValue\n};\n\nvar Collapse_Collapse =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Collapse, _React$Component);\n\n  function Collapse() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n    _this.handleEnter = function (elem) {\n      elem.style[_this.getDimension()] = '0';\n    };\n\n    _this.handleEntering = function (elem) {\n      var dimension = _this.getDimension();\n\n      elem.style[dimension] = _this._getScrollDimensionValue(elem, dimension);\n    };\n\n    _this.handleEntered = function (elem) {\n      elem.style[_this.getDimension()] = null;\n    };\n\n    _this.handleExit = function (elem) {\n      var dimension = _this.getDimension();\n\n      elem.style[dimension] = _this.props.getDimensionValue(dimension, elem) + \"px\";\n      triggerBrowserReflow(elem);\n    };\n\n    _this.handleExiting = function (elem) {\n      elem.style[_this.getDimension()] = '0';\n    };\n\n    return _this;\n  }\n\n  var _proto = Collapse.prototype;\n\n  _proto.getDimension = function getDimension() {\n    return typeof this.props.dimension === 'function' ? this.props.dimension() : this.props.dimension;\n  }\n  /* -- Expanding -- */\n  ;\n\n  // for testing\n  _proto._getScrollDimensionValue = function _getScrollDimensionValue(elem, dimension) {\n    var scroll = \"scroll\" + dimension[0].toUpperCase() + dimension.slice(1);\n    return elem[scroll] + \"px\";\n  };\n\n  _proto.render = function render() {\n    var _this2 = this;\n\n    var _this$props = this.props,\n        onEnter = _this$props.onEnter,\n        onEntering = _this$props.onEntering,\n        onEntered = _this$props.onEntered,\n        onExit = _this$props.onExit,\n        onExiting = _this$props.onExiting,\n        className = _this$props.className,\n        children = _this$props.children,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"className\", \"children\"]);\n\n    delete props.dimension;\n    delete props.getDimensionValue;\n    var handleEnter = utils_createChainedFunction(this.handleEnter, onEnter);\n    var handleEntering = utils_createChainedFunction(this.handleEntering, onEntering);\n    var handleEntered = utils_createChainedFunction(this.handleEntered, onEntered);\n    var handleExit = utils_createChainedFunction(this.handleExit, onExit);\n    var handleExiting = utils_createChainedFunction(this.handleExiting, onExiting);\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Transition_default.a, _extends({\n      addEndListener: end_default.a\n    }, props, {\n      \"aria-expanded\": props.role ? props.in : null,\n      onEnter: handleEnter,\n      onEntering: handleEntering,\n      onEntered: handleEntered,\n      onExit: handleExit,\n      onExiting: handleExiting,\n      __source: {\n        fileName: Collapse_jsxFileName,\n        lineNumber: 200\n      },\n      __self: this\n    }), function (state, innerProps) {\n      return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.cloneElement(children, _extends({}, innerProps, {\n        className: classnames_default()(className, children.props.className, collapseStyles[state], _this2.getDimension() === 'width' && 'width')\n      }));\n    });\n  };\n\n  return Collapse;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nCollapse_Collapse.propTypes = Collapse_propTypes;\nCollapse_Collapse.defaultProps = Collapse_defaultProps;\n/* harmony default export */ var src_Collapse = (Collapse_Collapse);\n// CONCATENATED MODULE: ./src/AccordionContext.js\n\n/* harmony default export */ var AccordionContext = (external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createContext(null));\n// CONCATENATED MODULE: ./src/AccordionCollapse.js\n\n\nvar AccordionCollapse_jsxFileName = \"/Users/jason/src/react-bootstrap/src/AccordionCollapse.js\";\n\n\n\n\nvar AccordionCollapse_propTypes = {\n  /**\n   * A key that corresponds to the toggler that triggers this collapse's expand or collapse.\n   */\n  eventKey: prop_types_default.a.string.isRequired,\n  children: prop_types_default.a.element.isRequired\n};\nvar AccordionCollapse = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var children = _ref.children,\n      eventKey = _ref.eventKey,\n      props = _objectWithoutPropertiesLoose(_ref, [\"children\", \"eventKey\"]);\n\n  var contextEventKey = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(AccordionContext);\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Collapse, _extends({\n    ref: ref,\n    in: contextEventKey === eventKey\n  }, props, {\n    __source: {\n      fileName: AccordionCollapse_jsxFileName,\n      lineNumber: 21\n    },\n    __self: this\n  }), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", {\n    __source: {\n      fileName: AccordionCollapse_jsxFileName,\n      lineNumber: 22\n    },\n    __self: this\n  }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Children.only(children)));\n});\nAccordionCollapse.propTypes = AccordionCollapse_propTypes;\n/* harmony default export */ var src_AccordionCollapse = (AccordionCollapse);\n// CONCATENATED MODULE: ./src/Accordion.js\n\n\nvar Accordion_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Accordion.js\";\n\n\n\n\n\n\n\n\n\nvar Accordion_propTypes = {\n  /** Set a custom element for this component */\n  as: prop_types_default.a.elementType,\n\n  /** @default 'accordion' */\n  bsPrefix: prop_types_default.a.string,\n\n  /** The current active key that corresponds to the currently expanded card */\n  activeKey: prop_types_default.a.string,\n\n  /** The default active key that is expanded on start */\n  defaultActiveKey: prop_types_default.a.string\n};\nvar Accordion_defaultProps = {\n  as: 'div'\n};\nvar Accordion = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (props, ref) {\n  var _useUncontrolled = hook_default()(props, {\n    activeKey: 'onSelect'\n  }),\n      Component = _useUncontrolled.as,\n      activeKey = _useUncontrolled.activeKey,\n      bsPrefix = _useUncontrolled.bsPrefix,\n      children = _useUncontrolled.children,\n      className = _useUncontrolled.className,\n      onSelect = _useUncontrolled.onSelect,\n      controlledProps = _objectWithoutPropertiesLoose(_useUncontrolled, [\"as\", \"activeKey\", \"bsPrefix\", \"children\", \"className\", \"onSelect\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'accordion');\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(AccordionContext.Provider, {\n    value: activeKey,\n    __source: {\n      fileName: Accordion_jsxFileName,\n      lineNumber: 45\n    },\n    __self: this\n  }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_SelectableContext.Provider, {\n    value: onSelect,\n    __source: {\n      fileName: Accordion_jsxFileName,\n      lineNumber: 46\n    },\n    __self: this\n  }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({\n    ref: ref\n  }, controlledProps, {\n    className: classnames_default()(className, bsPrefix),\n    __source: {\n      fileName: Accordion_jsxFileName,\n      lineNumber: 47\n    },\n    __self: this\n  }), children)));\n});\nAccordion.propTypes = Accordion_propTypes;\nAccordion.defaultProps = Accordion_defaultProps;\nAccordion.Toggle = src_AccordionToggle;\nAccordion.Collapse = src_AccordionCollapse;\n/* harmony default export */ var src_Accordion = (Accordion);\n// EXTERNAL MODULE: ./node_modules/prop-types-extra/lib/index.js\nvar lib = __webpack_require__(19);\n\n// EXTERNAL MODULE: ./node_modules/@restart/hooks/useEventCallback.js\nvar useEventCallback = __webpack_require__(8);\nvar useEventCallback_default = /*#__PURE__*/__webpack_require__.n(useEventCallback);\n\n// EXTERNAL MODULE: ./node_modules/dom-helpers/util/camelize.js\nvar camelize = __webpack_require__(33);\nvar camelize_default = /*#__PURE__*/__webpack_require__.n(camelize);\n\n// CONCATENATED MODULE: ./src/utils/createWithBsPrefix.js\n\n\nvar createWithBsPrefix_jsxFileName = \"/Users/jason/src/react-bootstrap/src/utils/createWithBsPrefix.js\";\n\n\n\n\n\nvar createWithBsPrefix_pascalCase = function pascalCase(str) {\n  return str[0].toUpperCase() + camelize_default()(str).slice(1);\n};\n\nfunction createWithBsPrefix(prefix, _temp) {\n  var _ref = _temp === void 0 ? {} : _temp,\n      _ref$displayName = _ref.displayName,\n      displayName = _ref$displayName === void 0 ? createWithBsPrefix_pascalCase(prefix) : _ref$displayName,\n      _ref$Component = _ref.Component,\n      Component = _ref$Component === void 0 ? 'div' : _ref$Component,\n      defaultProps = _ref.defaultProps;\n\n  var BsComponent = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef( // eslint-disable-next-line react/prop-types\n  function (_ref2, ref) {\n    var className = _ref2.className,\n        bsPrefix = _ref2.bsPrefix,\n        _ref2$as = _ref2.as,\n        Tag = _ref2$as === void 0 ? Component : _ref2$as,\n        props = _objectWithoutPropertiesLoose(_ref2, [\"className\", \"bsPrefix\", \"as\"]);\n\n    var resolvedPrefix = useBootstrapPrefix(bsPrefix, prefix);\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Tag, _extends({\n      ref: ref,\n      className: classnames_default()(className, resolvedPrefix)\n    }, props, {\n      __source: {\n        fileName: createWithBsPrefix_jsxFileName,\n        lineNumber: 18\n      },\n      __self: this\n    }));\n  });\n  BsComponent.defaultProps = defaultProps;\n  BsComponent.displayName = displayName;\n  return BsComponent;\n}\n// CONCATENATED MODULE: ./src/utils/divWithClassName.js\n\nvar divWithClassName_jsxFileName = \"/Users/jason/src/react-bootstrap/src/utils/divWithClassName.js\";\n\n\n/* harmony default export */ var divWithClassName = (function (className) {\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (p, ref) {\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", _extends({}, p, {\n      ref: ref,\n      className: classnames_default()(p.className, className),\n      __source: {\n        fileName: divWithClassName_jsxFileName,\n        lineNumber: 6\n      },\n      __self: this\n    }));\n  });\n});\n// CONCATENATED MODULE: ./src/Fade.js\n\n\n\n\nvar _fadeStyles,\n    Fade_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Fade.js\";\n\n\n\n\n\n\n\nvar Fade_propTypes = {\n  /**\n   * Show the component; triggers the fade in or fade out animation\n   */\n  in: prop_types_default.a.bool,\n\n  /**\n   * Wait until the first \"enter\" transition to mount the component (add it to the DOM)\n   */\n  mountOnEnter: prop_types_default.a.bool,\n\n  /**\n   * Unmount the component (remove it from the DOM) when it is faded out\n   */\n  unmountOnExit: prop_types_default.a.bool,\n\n  /**\n   * Run the fade in animation when the component mounts, if it is initially\n   * shown\n   */\n  appear: prop_types_default.a.bool,\n\n  /**\n   * Duration of the fade animation in milliseconds, to ensure that finishing\n   * callbacks are fired even if the original browser transition end events are\n   * canceled\n   */\n  timeout: prop_types_default.a.number,\n\n  /**\n   * Callback fired before the component fades in\n   */\n  onEnter: prop_types_default.a.func,\n\n  /**\n   * Callback fired after the component starts to fade in\n   */\n  onEntering: prop_types_default.a.func,\n\n  /**\n   * Callback fired after the has component faded in\n   */\n  onEntered: prop_types_default.a.func,\n\n  /**\n   * Callback fired before the component fades out\n   */\n  onExit: prop_types_default.a.func,\n\n  /**\n   * Callback fired after the component starts to fade out\n   */\n  onExiting: prop_types_default.a.func,\n\n  /**\n   * Callback fired after the component has faded out\n   */\n  onExited: prop_types_default.a.func\n};\nvar Fade_defaultProps = {\n  in: false,\n  timeout: 300,\n  mountOnEnter: false,\n  unmountOnExit: false,\n  appear: false\n};\nvar fadeStyles = (_fadeStyles = {}, _fadeStyles[react_transition_group_Transition[\"ENTERING\"]] = 'show', _fadeStyles[react_transition_group_Transition[\"ENTERED\"]] = 'show', _fadeStyles);\n\nvar Fade_Fade =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Fade, _React$Component);\n\n  function Fade() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n    _this.handleEnter = function (node) {\n      triggerBrowserReflow(node);\n      if (_this.props.onEnter) _this.props.onEnter(node);\n    };\n\n    return _this;\n  }\n\n  var _proto = Fade.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        className = _this$props.className,\n        children = _this$props.children,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"className\", \"children\"]);\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Transition_default.a, _extends({\n      addEndListener: end_default.a\n    }, props, {\n      onEnter: this.handleEnter,\n      __source: {\n        fileName: Fade_jsxFileName,\n        lineNumber: 89\n      },\n      __self: this\n    }), function (status, innerProps) {\n      return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.cloneElement(children, _extends({}, innerProps, {\n        className: classnames_default()('fade', className, children.props.className, fadeStyles[status])\n      }));\n    });\n  };\n\n  return Fade;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nFade_Fade.propTypes = Fade_propTypes;\nFade_Fade.defaultProps = Fade_defaultProps;\n/* harmony default export */ var src_Fade = (Fade_Fade);\n// CONCATENATED MODULE: ./src/CloseButton.js\nvar CloseButton_jsxFileName = \"/Users/jason/src/react-bootstrap/src/CloseButton.js\";\n\n\nvar CloseButton_propTypes = {\n  label: prop_types_default.a.string.isRequired,\n  onClick: prop_types_default.a.func\n};\nvar CloseButton_defaultProps = {\n  label: 'Close'\n};\nvar CloseButton = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var label = _ref.label,\n      onClick = _ref.onClick;\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"button\", {\n    ref: ref,\n    type: \"button\",\n    className: \"close\",\n    onClick: onClick,\n    __source: {\n      fileName: CloseButton_jsxFileName,\n      lineNumber: 14\n    },\n    __self: this\n  }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"span\", {\n    \"aria-hidden\": \"true\",\n    __source: {\n      fileName: CloseButton_jsxFileName,\n      lineNumber: 15\n    },\n    __self: this\n  }, \"\\xD7\"), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"span\", {\n    className: \"sr-only\",\n    __source: {\n      fileName: CloseButton_jsxFileName,\n      lineNumber: 16\n    },\n    __self: this\n  }, label));\n});\nCloseButton.displayName = 'CloseButton';\nCloseButton.propTypes = CloseButton_propTypes;\nCloseButton.defaultProps = CloseButton_defaultProps;\n/* harmony default export */ var src_CloseButton = (CloseButton);\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n// CONCATENATED MODULE: ./src/SafeAnchor.js\n\n\n\n\nvar SafeAnchor_jsxFileName = \"/Users/jason/src/react-bootstrap/src/SafeAnchor.js\";\n\n\n\nvar SafeAnchor_propTypes = {\n  href: prop_types_default.a.string,\n  onClick: prop_types_default.a.func,\n  onKeyDown: prop_types_default.a.func,\n  disabled: prop_types_default.a.bool,\n  role: prop_types_default.a.string,\n  tabIndex: prop_types_default.a.oneOfType([prop_types_default.a.number, prop_types_default.a.string]),\n\n  /**\n   * this is sort of silly but needed for Button\n   */\n  as: prop_types_default.a.elementType,\n\n  /** @private */\n  innerRef: prop_types_default.a.any\n};\nvar SafeAnchor_defaultProps = {\n  as: 'a'\n};\n\nfunction isTrivialHref(href) {\n  return !href || href.trim() === '#';\n}\n/**\n * There are situations due to browser quirks or Bootstrap CSS where\n * an anchor tag is needed, when semantically a button tag is the\n * better choice. SafeAnchor ensures that when an anchor is used like a\n * button its accessible. It also emulates input `disabled` behavior for\n * links, which is usually desirable for Buttons, NavItems, DropdownItems, etc.\n */\n\n\nvar SafeAnchor_SafeAnchor =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(SafeAnchor, _React$Component);\n\n  function SafeAnchor(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n    _this.handleClick = _this.handleClick.bind(_assertThisInitialized(_this));\n    _this.handleKeyDown = _this.handleKeyDown.bind(_assertThisInitialized(_this));\n    return _this;\n  }\n\n  var _proto = SafeAnchor.prototype;\n\n  _proto.handleClick = function handleClick(event) {\n    var _this$props = this.props,\n        disabled = _this$props.disabled,\n        href = _this$props.href,\n        onClick = _this$props.onClick;\n\n    if (disabled || isTrivialHref(href)) {\n      event.preventDefault();\n    }\n\n    if (disabled) {\n      event.stopPropagation();\n      return;\n    }\n\n    if (onClick) {\n      onClick(event);\n    }\n  };\n\n  _proto.handleKeyDown = function handleKeyDown(event) {\n    if (event.key === ' ') {\n      event.preventDefault();\n      this.handleClick(event);\n    }\n  };\n\n  _proto.render = function render() {\n    var _this$props2 = this.props,\n        Component = _this$props2.as,\n        disabled = _this$props2.disabled,\n        onKeyDown = _this$props2.onKeyDown,\n        innerRef = _this$props2.innerRef,\n        props = _objectWithoutPropertiesLoose(_this$props2, [\"as\", \"disabled\", \"onKeyDown\", \"innerRef\"]);\n\n    if (isTrivialHref(props.href)) {\n      props.role = props.role || 'button'; // we want to make sure there is a href attribute on the node\n      // otherwise, the cursor incorrectly styled (except with role='button')\n\n      props.href = props.href || '#';\n    }\n\n    if (disabled) {\n      props.tabIndex = -1;\n      props['aria-disabled'] = true;\n    }\n\n    if (innerRef) props.ref = innerRef;\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n      onClick: this.handleClick,\n      onKeyDown: utils_createChainedFunction(this.handleKeyDown, onKeyDown),\n      __source: {\n        fileName: SafeAnchor_jsxFileName,\n        lineNumber: 92\n      },\n      __self: this\n    }));\n  };\n\n  return SafeAnchor;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nSafeAnchor_SafeAnchor.propTypes = SafeAnchor_propTypes;\nSafeAnchor_SafeAnchor.defaultProps = SafeAnchor_defaultProps;\n/* harmony default export */ var src_SafeAnchor = (SafeAnchor_SafeAnchor);\n// CONCATENATED MODULE: ./src/Alert.js\n\n\nvar Alert_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Alert.js\";\n\n\n\n\n\n\n\n\n\n\n\n\nvar Alert_propTypes = {\n  /**\n   * @default 'alert'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * The Alert visual variant\n   *\n   * @type {'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'dark' | 'light'}\n   */\n  variant: prop_types_default.a.string,\n\n  /**\n   * Renders a properly aligned dismiss button, as well as\n   * adding extra horizontal padding to the Alert.\n   */\n  dismissible: prop_types_default.a.bool,\n\n  /**\n   * Controls the visual state of the Alert.\n   *\n   * @controllable onClose\n   */\n  show: prop_types_default.a.bool,\n\n  /**\n   * Callback fired when alert is closed.\n   *\n   * @controllable show\n   */\n  onClose: prop_types_default.a.func,\n\n  /**\n   * Sets the text for alert close button.\n   */\n  closeLabel: prop_types_default.a.string,\n\n  /** A `react-transition-group` Transition component used to animate the Alert on dismissal. */\n  transition: lib[\"elementType\"]\n};\nvar Alert_defaultProps = {\n  show: true,\n  transition: src_Fade,\n  closeLabel: 'Close alert'\n};\nvar controllables = {\n  show: 'onClose'\n};\nvar Alert = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (uncontrolledProps, ref) {\n  var _useControllable = hook_default()(uncontrolledProps, controllables),\n      bsPrefix = _useControllable.bsPrefix,\n      show = _useControllable.show,\n      closeLabel = _useControllable.closeLabel,\n      className = _useControllable.className,\n      children = _useControllable.children,\n      variant = _useControllable.variant,\n      onClose = _useControllable.onClose,\n      dismissible = _useControllable.dismissible,\n      Transition = _useControllable.transition,\n      props = _objectWithoutPropertiesLoose(_useControllable, [\"bsPrefix\", \"show\", \"closeLabel\", \"className\", \"children\", \"variant\", \"onClose\", \"dismissible\", \"transition\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'alert');\n  var handleClose = useEventCallback_default()(function (e) {\n    onClose(false, e);\n  });\n  var alert = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", _extends({\n    role: \"alert\"\n  }, Transition ? props : undefined, {\n    className: classnames_default()(className, prefix, variant && prefix + \"-\" + variant, dismissible && prefix + \"-dismissible\"),\n    __source: {\n      fileName: Alert_jsxFileName,\n      lineNumber: 87\n    },\n    __self: this\n  }), dismissible && external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_CloseButton, {\n    onClick: handleClose,\n    label: closeLabel,\n    __source: {\n      fileName: Alert_jsxFileName,\n      lineNumber: 97\n    },\n    __self: this\n  }), children);\n  if (!Transition) return show ? alert : null;\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Transition, _extends({\n    unmountOnExit: true,\n    ref: ref\n  }, props, {\n    in: show,\n    __source: {\n      fileName: Alert_jsxFileName,\n      lineNumber: 105\n    },\n    __self: this\n  }), alert);\n});\nvar DivStyledAsH4 = divWithClassName('h4');\nDivStyledAsH4.displayName = 'DivStyledAsH4';\nAlert.displayName = 'Alert';\nAlert.propTypes = Alert_propTypes;\nAlert.defaultProps = Alert_defaultProps;\nAlert.Link = createWithBsPrefix('alert-link', {\n  Component: src_SafeAnchor\n});\nAlert.Heading = createWithBsPrefix('alert-heading', {\n  Component: DivStyledAsH4\n});\n/* harmony default export */ var src_Alert = (Alert);\n// CONCATENATED MODULE: ./src/Badge.js\n\n\nvar Badge_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Badge.js\";\n\n\n\n\nvar Badge_propTypes = {\n  /** @default 'badge' */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * The visual style of the badge\n   *\n   * @type {('primary'|'secondary'|'success'|'danger'|'warning'|'info'|'light'|'dark')}\n   */\n  variant: prop_types_default.a.string,\n\n  /**\n   * Add the `pill` modifier to make badges more rounded with\n   * some additional horizontal padding\n   */\n  pill: prop_types_default.a.bool.isRequired\n};\nvar Badge_defaultProps = {\n  pill: false\n};\nvar Badge = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      variant = _ref.variant,\n      pill = _ref.pill,\n      className = _ref.className,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"variant\", \"pill\", \"className\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'badge');\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"span\", _extends({\n    ref: ref\n  }, props, {\n    className: classnames_default()(className, prefix, pill && prefix + \"-pill\", variant && prefix + \"-\" + variant),\n    __source: {\n      fileName: Badge_jsxFileName,\n      lineNumber: 33\n    },\n    __self: this\n  }));\n});\nBadge.displayName = 'Badge';\nBadge.propTypes = Badge_propTypes;\nBadge.defaultProps = Badge_defaultProps;\n/* harmony default export */ var src_Badge = (Badge);\n// CONCATENATED MODULE: ./src/BreadcrumbItem.js\n\n\nvar BreadcrumbItem_jsxFileName = \"/Users/jason/src/react-bootstrap/src/BreadcrumbItem.js\";\n\n\n\n\n\nvar BreadcrumbItem_propTypes = {\n  /**\n   * @default 'breadcrumb-item'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * Adds a visual \"active\" state to a Breadcrumb\n   * Item and disables the link.\n   */\n  active: prop_types_default.a.bool,\n\n  /**\n   * `href` attribute for the inner `a` element\n   */\n  href: prop_types_default.a.string,\n\n  /**\n   * `title` attribute for the inner `a` element\n   */\n  title: prop_types_default.a.node,\n\n  /**\n   * `target` attribute for the inner `a` element\n   */\n  target: prop_types_default.a.string,\n  as: prop_types_default.a.elementType\n};\nvar BreadcrumbItem_defaultProps = {\n  active: false,\n  as: 'li'\n};\nvar BreadcrumbItem = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      active = _ref.active,\n      className = _ref.className,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"active\", \"className\", \"as\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'breadcrumb-item');\n\n  var href = props.href,\n      title = props.title,\n      target = props.target,\n      elementProps = _objectWithoutPropertiesLoose(props, [\"href\", \"title\", \"target\"]);\n\n  var linkProps = {\n    href: href,\n    title: title,\n    target: target\n  };\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, {\n    ref: ref,\n    className: classnames_default()(prefix, className, {\n      active: active\n    }),\n    \"aria-current\": active ? 'page' : undefined,\n    __source: {\n      fileName: BreadcrumbItem_jsxFileName,\n      lineNumber: 47\n    },\n    __self: this\n  }, active ? external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"span\", _extends({}, elementProps, {\n    className: classnames_default()({\n      active: active\n    }),\n    __source: {\n      fileName: BreadcrumbItem_jsxFileName,\n      lineNumber: 53\n    },\n    __self: this\n  })) : external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_SafeAnchor, _extends({}, elementProps, linkProps, {\n    __source: {\n      fileName: BreadcrumbItem_jsxFileName,\n      lineNumber: 55\n    },\n    __self: this\n  })));\n});\nBreadcrumbItem.displayName = 'BreadcrumbItem';\nBreadcrumbItem.propTypes = BreadcrumbItem_propTypes;\nBreadcrumbItem.defaultProps = BreadcrumbItem_defaultProps;\n/* harmony default export */ var src_BreadcrumbItem = (BreadcrumbItem);\n// CONCATENATED MODULE: ./src/Breadcrumb.js\n\n\nvar Breadcrumb_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Breadcrumb.js\";\n\n\n\n\n\nvar Breadcrumb_propTypes = {\n  /**\n   * @default 'breadcrumb'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * ARIA label for the nav element\n   * https://www.w3.org/TR/wai-aria-practices/#breadcrumb\n   */\n  label: prop_types_default.a.string,\n\n  /**\n   * Additional props passed as-is to the underlying `<ul>` element\n   */\n  listProps: prop_types_default.a.object,\n  as: prop_types_default.a.elementType\n};\nvar Breadcrumb_defaultProps = {\n  label: 'breadcrumb',\n  listProps: {},\n  as: 'nav'\n};\nvar Breadcrumb = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      listProps = _ref.listProps,\n      children = _ref.children,\n      label = _ref.label,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"listProps\", \"children\", \"label\", \"as\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'breadcrumb');\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({\n    \"aria-label\": label,\n    className: className,\n    ref: ref\n  }, props, {\n    __source: {\n      fileName: Breadcrumb_jsxFileName,\n      lineNumber: 48\n    },\n    __self: this\n  }), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"ol\", _extends({}, listProps, {\n    className: classnames_default()(prefix, listProps.className),\n    __source: {\n      fileName: Breadcrumb_jsxFileName,\n      lineNumber: 49\n    },\n    __self: this\n  }), children));\n});\nBreadcrumb.displayName = 'Breadcrumb';\nBreadcrumb.propTypes = Breadcrumb_propTypes;\nBreadcrumb.defaultProps = Breadcrumb_defaultProps;\nBreadcrumb.Item = src_BreadcrumbItem;\n/* harmony default export */ var src_Breadcrumb = (Breadcrumb);\n// CONCATENATED MODULE: ./src/Button.js\n\n\nvar Button_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Button.js\";\n\n\n\n\n\nvar Button_propTypes = {\n  /**\n   * @default 'btn'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * One or more button variant combinations\n   *\n   * buttons may be one of a variety of visual variants such as:\n   *\n   * `'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light', 'link'`\n   *\n   * as well as \"outline\" versions (prefixed by 'outline-*')\n   *\n   * `'outline-primary', 'outline-secondary', 'outline-success', 'outline-danger', 'outline-warning', 'outline-info', 'outline-dark', 'outline-light'`\n   */\n  variant: prop_types_default.a.string,\n\n  /**\n   * Specifies a large or small button.\n   *\n   * @type ('sm'|'lg')\n   */\n  size: prop_types_default.a.string,\n\n  /** Spans the full width of the Button parent */\n  block: prop_types_default.a.bool,\n\n  /** Manually set the visual state of the button to `:active` */\n  active: prop_types_default.a.bool,\n\n  /**\n   * Disables the Button, preventing mouse events,\n   * even if the underlying component is an `<a>` element\n   */\n  disabled: prop_types_default.a.bool,\n\n  /** Providing a `href` will render an `<a>` element, _styled_ as a button. */\n  href: prop_types_default.a.string,\n\n  /**\n   * Defines HTML button type attribute.\n   *\n   * @default 'button'\n   */\n  type: prop_types_default.a.oneOf(['button', 'reset', 'submit', null]),\n  as: prop_types_default.a.elementType\n};\nvar Button_defaultProps = {\n  variant: 'primary',\n  active: false,\n  disabled: false,\n  type: 'button'\n};\nvar Button = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      variant = _ref.variant,\n      size = _ref.size,\n      active = _ref.active,\n      className = _ref.className,\n      block = _ref.block,\n      type = _ref.type,\n      as = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"variant\", \"size\", \"active\", \"className\", \"block\", \"type\", \"as\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'btn');\n  var classes = classnames_default()(className, prefix, active && 'active', prefix + \"-\" + variant, block && prefix + \"-block\", size && prefix + \"-\" + size);\n\n  if (props.href) {\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_SafeAnchor, _extends({}, props, {\n      as: as,\n      innerRef: ref,\n      className: classnames_default()(classes, props.disabled && 'disabled'),\n      __source: {\n        fileName: Button_jsxFileName,\n        lineNumber: 84\n      },\n      __self: this\n    }));\n  }\n\n  var Component = as || 'button';\n  if (ref) props.ref = ref;\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n    type: type,\n    className: classes,\n    __source: {\n      fileName: Button_jsxFileName,\n      lineNumber: 96\n    },\n    __self: this\n  }));\n});\nButton.displayName = 'Button';\nButton.propTypes = Button_propTypes;\nButton.defaultProps = Button_defaultProps;\n/* harmony default export */ var src_Button = (Button);\n// CONCATENATED MODULE: ./src/ButtonGroup.js\n\n\nvar ButtonGroup_jsxFileName = \"/Users/jason/src/react-bootstrap/src/ButtonGroup.js\";\n\n\n\n\nvar ButtonGroup_propTypes = {\n  /**\n   * @default 'btn-group'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * Sets the size for all Buttons in the group.\n   *\n   * @type ('sm'|'lg')\n   */\n  size: prop_types_default.a.string,\n\n  /** Make the set of Buttons appear vertically stacked. */\n  vertical: prop_types_default.a.bool,\n\n  /**\n   * Display as a button toggle group.\n   *\n   * (Generally it's better to use `ToggleButtonGroup` directly)\n   */\n  toggle: prop_types_default.a.bool,\n\n  /**\n   * An ARIA role describing the button group. Usually the default\n   * \"group\" role is fine. An `aria-label` or `aria-labelledby`\n   * prop is also recommended.\n   */\n  role: prop_types_default.a.string,\n  as: prop_types_default.a.elementType\n};\nvar ButtonGroup_defaultProps = {\n  vertical: false,\n  toggle: false,\n  role: 'group',\n  as: 'div'\n};\nvar ButtonGroup = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (props, ref) {\n  var bsPrefix = props.bsPrefix,\n      size = props.size,\n      toggle = props.toggle,\n      vertical = props.vertical,\n      className = props.className,\n      Component = props.as,\n      rest = _objectWithoutPropertiesLoose(props, [\"bsPrefix\", \"size\", \"toggle\", \"vertical\", \"className\", \"as\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'btn-group');\n  var baseClass = prefix;\n  if (vertical) baseClass = prefix + \"-vertical\";\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, rest, {\n    ref: ref,\n    className: classnames_default()(className, baseClass, size && prefix + \"-\" + size, toggle && prefix + \"-toggle\"),\n    __source: {\n      fileName: ButtonGroup_jsxFileName,\n      lineNumber: 64\n    },\n    __self: this\n  }));\n});\nButtonGroup.displayName = 'ButtonGroup';\nButtonGroup.propTypes = ButtonGroup_propTypes;\nButtonGroup.defaultProps = ButtonGroup_defaultProps;\n/* harmony default export */ var src_ButtonGroup = (ButtonGroup);\n// CONCATENATED MODULE: ./src/ButtonToolbar.js\n\n\nvar ButtonToolbar_jsxFileName = \"/Users/jason/src/react-bootstrap/src/ButtonToolbar.js\";\n\n\n\n\nvar ButtonToolbar_propTypes = {\n  /**\n   * @default 'btn-toolbar'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * The ARIA role describing the button toolbar. Generally the default\n   * \"toolbar\" role is correct. An `aria-label` or `aria-labelledby`\n   * prop is also recommended.\n   */\n  role: prop_types_default.a.string\n};\nvar ButtonToolbar_defaultProps = {\n  role: 'toolbar'\n};\nvar ButtonToolbar = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'btn-toolbar');\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", _extends({}, props, {\n    ref: ref,\n    className: classnames_default()(className, prefix),\n    __source: {\n      fileName: ButtonToolbar_jsxFileName,\n      lineNumber: 30\n    },\n    __self: this\n  }));\n});\nButtonToolbar.displayName = 'ButtonToolbar';\nButtonToolbar.propTypes = ButtonToolbar_propTypes;\nButtonToolbar.defaultProps = ButtonToolbar_defaultProps;\n/* harmony default export */ var src_ButtonToolbar = (ButtonToolbar);\n// CONCATENATED MODULE: ./src/CardContext.js\n\n/* harmony default export */ var CardContext = (external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createContext(null));\n// CONCATENATED MODULE: ./src/CardImg.js\n\n\nvar CardImg_jsxFileName = \"/Users/jason/src/react-bootstrap/src/CardImg.js\";\n\n\n\n\nvar CardImg_propTypes = {\n  /**\n   * @default 'card-img'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * Defines image position inside\n   * the card.\n   *\n   * @type {('top'|'bottom')}\n   */\n  variant: prop_types_default.a.oneOf(['top', 'bottom', null]),\n  as: prop_types_default.a.elementType\n};\nvar CardImg_defaultProps = {\n  as: 'img',\n  variant: null\n};\nvar CardImg = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      variant = _ref.variant,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"variant\", \"as\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'card-img');\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({\n    ref: ref,\n    className: classnames_default()(variant ? prefix + \"-\" + variant : prefix, className)\n  }, props, {\n    __source: {\n      fileName: CardImg_jsxFileName,\n      lineNumber: 34\n    },\n    __self: this\n  }));\n});\nCardImg.displayName = 'CardImg';\nCardImg.propTypes = CardImg_propTypes;\nCardImg.defaultProps = CardImg_defaultProps;\n/* harmony default export */ var src_CardImg = (CardImg);\n// CONCATENATED MODULE: ./src/Card.js\n\n\nvar Card_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Card.js\";\n\n\n\n\n\n\n\n\nvar DivStyledAsH5 = divWithClassName('h5');\nvar DivStyledAsH6 = divWithClassName('h6');\nvar CardBody = createWithBsPrefix('card-body');\nvar Card_propTypes = {\n  /**\n   * @default 'card'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * Sets card background\n   *\n   * @type {('primary'|'secondary'|'success'|'danger'|'warning'|'info'|'dark'|'light')}\n   */\n  bg: prop_types_default.a.string,\n\n  /**\n   * Sets card text color\n   *\n   * @type {('primary'|'secondary'|'success'|'danger'|'warning'|'info'|'dark'|'light'|'white'|'muted')}\n   */\n  text: prop_types_default.a.string,\n\n  /**\n   * Sets card border color\n   *\n   * @type {('primary'|'secondary'|'success'|'danger'|'warning'|'info'|'dark'|'light')}\n   */\n  border: prop_types_default.a.string,\n\n  /**\n   * When this prop is set, it creates a Card with a Card.Body inside\n   * passing the children directly to it\n   */\n  body: prop_types_default.a.bool,\n  as: prop_types_default.a.elementType\n};\nvar Card_defaultProps = {\n  as: 'div',\n  body: false\n};\nvar Card = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      bg = _ref.bg,\n      text = _ref.text,\n      border = _ref.border,\n      body = _ref.body,\n      children = _ref.children,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"bg\", \"text\", \"border\", \"body\", \"children\", \"as\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'card');\n  var cardContext = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useMemo\"])(function () {\n    return {\n      cardHeaderBsPrefix: prefix + \"-header\"\n    };\n  }, [prefix]);\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(CardContext.Provider, {\n    value: cardContext,\n    __source: {\n      fileName: Card_jsxFileName,\n      lineNumber: 81\n    },\n    __self: this\n  }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({\n    ref: ref\n  }, props, {\n    className: classnames_default()(className, prefix, bg && \"bg-\" + bg, text && \"text-\" + text, border && \"border-\" + border),\n    __source: {\n      fileName: Card_jsxFileName,\n      lineNumber: 82\n    },\n    __self: this\n  }), body ? external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(CardBody, {\n    __source: {\n      fileName: Card_jsxFileName,\n      lineNumber: 93\n    },\n    __self: this\n  }, children) : children));\n});\nCard.displayName = 'Card';\nCard.propTypes = Card_propTypes;\nCard.defaultProps = Card_defaultProps;\nCard.Img = src_CardImg;\nCard.Title = createWithBsPrefix('card-title', {\n  Component: DivStyledAsH5\n});\nCard.Subtitle = createWithBsPrefix('card-subtitle', {\n  Component: DivStyledAsH6\n});\nCard.Body = CardBody;\nCard.Link = createWithBsPrefix('card-link', {\n  Component: 'a'\n});\nCard.Text = createWithBsPrefix('card-text', {\n  Component: 'p'\n});\nCard.Header = createWithBsPrefix('card-header');\nCard.Footer = createWithBsPrefix('card-footer');\nCard.ImgOverlay = createWithBsPrefix('card-img-overlay');\n/* harmony default export */ var src_Card = (Card);\n// CONCATENATED MODULE: ./src/CardColumns.js\n\n/* harmony default export */ var CardColumns = (createWithBsPrefix('card-columns'));\n// CONCATENATED MODULE: ./src/CardDeck.js\n\n/* harmony default export */ var CardDeck = (createWithBsPrefix('card-deck'));\n// CONCATENATED MODULE: ./src/CardGroup.js\n\n/* harmony default export */ var CardGroup = (createWithBsPrefix('card-group'));\n// EXTERNAL MODULE: ./node_modules/dom-helpers/transition/index.js\nvar dom_helpers_transition = __webpack_require__(51);\nvar transition_default = /*#__PURE__*/__webpack_require__.n(dom_helpers_transition);\n\n// EXTERNAL MODULE: ./node_modules/uncontrollable/index.js\nvar uncontrollable = __webpack_require__(7);\nvar uncontrollable_default = /*#__PURE__*/__webpack_require__.n(uncontrollable);\n\n// CONCATENATED MODULE: ./src/CarouselCaption.js\n\n/* harmony default export */ var CarouselCaption = (createWithBsPrefix('carousel-caption', {\n  Component: 'div'\n}));\n// CONCATENATED MODULE: ./src/CarouselItem.js\n\n/* harmony default export */ var CarouselItem = (createWithBsPrefix('carousel-item'));\n// CONCATENATED MODULE: ./src/utils/ElementChildren.js\n\n/**\n * Iterates through children that are typically specified as `props.children`,\n * but only maps over children that are \"valid elements\".\n *\n * The mapFunction provided index will be normalised to the components mapped,\n * so an invalid component would not increase the index.\n *\n */\n\nfunction map(children, func) {\n  var index = 0;\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Children.map(children, function (child) {\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.isValidElement(child) ? func(child, index++) : child;\n  });\n}\n/**\n * Iterates through children that are \"valid elements\".\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child with the index reflecting the position relative to \"valid components\".\n */\n\n\nfunction forEach(children, func) {\n  var index = 0;\n  external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Children.forEach(children, function (child) {\n    if (external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.isValidElement(child)) func(child, index++);\n  });\n}\n\n\n// CONCATENATED MODULE: ./src/Carousel.js\n\n\n\nvar Carousel_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Carousel.js\";\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Carousel_countChildren = function countChildren(c) {\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Children.toArray(c).filter(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.isValidElement).length;\n}; // TODO: `slide` should be `animate`.\n\n\nvar Carousel_propTypes = {\n  /**\n   * @default 'carousel'\n   */\n  bsPrefix: prop_types_default.a.string,\n  as: prop_types_default.a.elementType,\n\n  /**\n   * Enables animation on the Carousel as it transitions between slides.\n   */\n  slide: prop_types_default.a.bool,\n\n  /** Cross fade slides instead of the default slide animation */\n  fade: prop_types_default.a.bool,\n\n  /** Slides will loop to the start when the last one transitions */\n  wrap: prop_types_default.a.bool,\n\n  /**\n   * Show a set of slide position indicators\n   */\n  indicators: prop_types_default.a.bool,\n\n  /**\n   * The amount of time to delay between automatically cycling an item.\n   * If `null`, carousel will not automatically cycle.\n   */\n  interval: prop_types_default.a.number,\n\n  /**\n   * Show the Carousel previous and next arrows for changing the current slide\n   */\n  controls: prop_types_default.a.bool,\n\n  /**\n   * Temporarily puase the slide interval when the mouse hovers over a slide.\n   */\n  pauseOnHover: prop_types_default.a.bool,\n\n  /** Enable keyboard navigation via the Arrow keys for changing slides */\n  keyboard: prop_types_default.a.bool,\n\n  /**\n   * Callback fired when the active item changes.\n   *\n   * ```js\n   * (eventKey: any, direction: 'prev' | 'next', ?event: Object) => any\n   * ```\n   *\n   * @controllable activeIndex\n   */\n  onSelect: prop_types_default.a.func,\n\n  /** A callback fired after a slide transitions in */\n  onSlideEnd: prop_types_default.a.func,\n\n  /**\n   * Controls the current visible slide\n   *\n   * @controllable onSelect\n   */\n  activeIndex: prop_types_default.a.number,\n\n  /** Override the default button icon for the \"previous\" control */\n  prevIcon: prop_types_default.a.node,\n\n  /**\n   * Label shown to screen readers only, can be used to show the previous element\n   * in the carousel.\n   * Set to null to deactivate.\n   */\n  prevLabel: prop_types_default.a.string,\n\n  /** Override the default button icon for the \"next\" control */\n  nextIcon: prop_types_default.a.node,\n\n  /**\n   * Label shown to screen readers only, can be used to show the next element\n   * in the carousel.\n   * Set to null to deactivate.\n   */\n  nextLabel: prop_types_default.a.string\n};\nvar Carousel_defaultProps = {\n  as: 'div',\n  slide: true,\n  fade: false,\n  interval: 5000,\n  keyboard: true,\n  pauseOnHover: true,\n  wrap: true,\n  indicators: true,\n  controls: true,\n  activeIndex: 0,\n  prevIcon: external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"span\", {\n    \"aria-hidden\": \"true\",\n    className: \"carousel-control-prev-icon\",\n    __source: {\n      fileName: Carousel_jsxFileName,\n      lineNumber: 116\n    },\n    __self: undefined\n  }),\n  prevLabel: 'Previous',\n  nextIcon: external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"span\", {\n    \"aria-hidden\": \"true\",\n    className: \"carousel-control-next-icon\",\n    __source: {\n      fileName: Carousel_jsxFileName,\n      lineNumber: 119\n    },\n    __self: undefined\n  }),\n  nextLabel: 'Next'\n};\n\nvar Carousel_Carousel =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Carousel, _React$Component);\n\n  function Carousel(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n\n    _this.handleSlideEnd = function () {\n      var pendingIndex = _this._pendingIndex;\n      _this._isSliding = false;\n      _this._pendingIndex = null;\n      if (pendingIndex != null) _this.to(pendingIndex);else _this.cycle();\n    };\n\n    _this.handleMouseOut = function () {\n      _this.cycle();\n    };\n\n    _this.handleMouseOver = function () {\n      if (_this.props.pauseOnHover) _this.pause();\n    };\n\n    _this.handleKeyDown = function (event) {\n      if (/input|textarea/i.test(event.target.tagName)) return;\n\n      switch (event.key) {\n        case 'ArrowLeft':\n          event.preventDefault();\n\n          _this.handlePrev(event);\n\n          break;\n\n        case 'ArrowRight':\n          event.preventDefault();\n\n          _this.handleNext(event);\n\n          break;\n\n        default:\n          break;\n      }\n    };\n\n    _this.handleNextWhenVisible = function () {\n      if (!_this.isUnmounted && !document.hidden && style_default()(_this.carousel.current, 'visibility') !== 'hidden') {\n        _this.handleNext();\n      }\n    };\n\n    _this.handleNext = function (e) {\n      if (_this._isSliding) return;\n      var _this$props = _this.props,\n          wrap = _this$props.wrap,\n          activeIndex = _this$props.activeIndex;\n      var index = activeIndex + 1;\n      var count = Carousel_countChildren(_this.props.children);\n\n      if (index > count - 1) {\n        if (!wrap) return;\n        index = 0;\n      }\n\n      _this.select(index, e, 'next');\n    };\n\n    _this.handlePrev = function (e) {\n      if (_this._isSliding) return;\n      var _this$props2 = _this.props,\n          wrap = _this$props2.wrap,\n          activeIndex = _this$props2.activeIndex;\n      var index = activeIndex - 1;\n\n      if (index < 0) {\n        if (!wrap) return;\n        index = Carousel_countChildren(_this.props.children) - 1;\n      }\n\n      _this.select(index, e, 'prev');\n    };\n\n    _this.state = {\n      prevClasses: '',\n      currentClasses: 'active'\n    };\n    _this.isUnmounted = false;\n    _this.carousel = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createRef();\n    return _this;\n  }\n\n  var _proto = Carousel.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.cycle();\n  };\n\n  Carousel.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n    var previousActiveIndex = _ref.activeIndex;\n\n    if (nextProps.activeIndex !== previousActiveIndex) {\n      var lastPossibleIndex = Carousel_countChildren(nextProps.children) - 1;\n      var nextIndex = Math.max(0, Math.min(nextProps.activeIndex, lastPossibleIndex));\n      var direction;\n\n      if (nextIndex === 0 && previousActiveIndex >= lastPossibleIndex || previousActiveIndex <= nextIndex) {\n        direction = 'next';\n      } else {\n        direction = 'prev';\n      }\n\n      return {\n        direction: direction,\n        previousActiveIndex: previousActiveIndex,\n        activeIndex: nextIndex\n      };\n    }\n\n    return null;\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(_, prevState) {\n    var _this2 = this;\n\n    var _this$props3 = this.props,\n        bsPrefix = _this$props3.bsPrefix,\n        slide = _this$props3.slide,\n        onSlideEnd = _this$props3.onSlideEnd;\n    if (!slide || this.state.activeIndex === prevState.activeIndex || this._isSliding) return;\n    var _this$state = this.state,\n        activeIndex = _this$state.activeIndex,\n        direction = _this$state.direction;\n    var orderClassName, directionalClassName;\n\n    if (direction === 'next') {\n      orderClassName = bsPrefix + \"-item-next\";\n      directionalClassName = bsPrefix + \"-item-left\";\n    } else if (direction === 'prev') {\n      orderClassName = bsPrefix + \"-item-prev\";\n      directionalClassName = bsPrefix + \"-item-right\";\n    }\n\n    this._isSliding = true;\n    this.pause(); // eslint-disable-next-line react/no-did-update-set-state\n\n    this.safeSetState({\n      prevClasses: 'active',\n      currentClasses: orderClassName\n    }, function () {\n      var items = _this2.carousel.current.children;\n      var nextElement = items[activeIndex];\n      triggerBrowserReflow(nextElement);\n\n      _this2.safeSetState({\n        prevClasses: classnames_default()('active', directionalClassName),\n        currentClasses: classnames_default()(orderClassName, directionalClassName)\n      }, function () {\n        return transition_default.a.end(nextElement, function () {\n          _this2.safeSetState({\n            prevClasses: '',\n            currentClasses: 'active'\n          }, _this2.handleSlideEnd);\n\n          if (onSlideEnd) {\n            onSlideEnd();\n          }\n        });\n      });\n    });\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    clearTimeout(this.timeout);\n    this.isUnmounted = true;\n  };\n\n  _proto.safeSetState = function safeSetState(state, cb) {\n    var _this3 = this;\n\n    if (this.isUnmounted) return;\n    this.setState(state, function () {\n      return !_this3.isUnmounted && cb();\n    });\n  } // This might be a public API.\n  ;\n\n  _proto.pause = function pause() {\n    this._isPaused = true;\n    clearInterval(this._interval);\n    this._interval = null;\n  };\n\n  _proto.cycle = function cycle() {\n    this._isPaused = false;\n    clearInterval(this._interval);\n    this._interval = null;\n\n    if (this.props.interval && !this._isPaused) {\n      this._interval = setInterval(document.visibilityState ? this.handleNextWhenVisible : this.handleNext, this.props.interval);\n    }\n  };\n\n  _proto.to = function to(index, event) {\n    var children = this.props.children;\n\n    if (index < 0 || index > Carousel_countChildren(children) - 1) {\n      return;\n    }\n\n    if (this._isSliding) {\n      this._pendingIndex = index;\n      return;\n    }\n\n    this.select(index, event);\n  };\n\n  _proto.select = function select(index, event, direction) {\n    var _this4 = this;\n\n    clearTimeout(this.selectThrottle);\n    if (event && event.persist) event.persist(); // The timeout throttles fast clicks, in order to give any pending state\n    // a chance to update and propagate back through props\n\n    this.selectThrottle = setTimeout(function () {\n      clearTimeout(_this4.timeout);\n      var _this4$props = _this4.props,\n          activeIndex = _this4$props.activeIndex,\n          onSelect = _this4$props.onSelect;\n      if (index === activeIndex || _this4._isSliding || _this4.isUnmounted) return;\n      onSelect(index, direction || (index < activeIndex ? 'prev' : 'next'), event);\n    }, 50);\n  };\n\n  _proto.renderControls = function renderControls(properties) {\n    var bsPrefix = this.props.bsPrefix;\n    var wrap = properties.wrap,\n        children = properties.children,\n        activeIndex = properties.activeIndex,\n        prevIcon = properties.prevIcon,\n        nextIcon = properties.nextIcon,\n        prevLabel = properties.prevLabel,\n        nextLabel = properties.nextLabel;\n    var count = Carousel_countChildren(children);\n    return [(wrap || activeIndex !== 0) && external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_SafeAnchor, {\n      key: \"prev\",\n      className: bsPrefix + \"-control-prev\",\n      onClick: this.handlePrev,\n      __source: {\n        fileName: Carousel_jsxFileName,\n        lineNumber: 380\n      },\n      __self: this\n    }, prevIcon, prevLabel && external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"span\", {\n      className: \"sr-only\",\n      __source: {\n        fileName: Carousel_jsxFileName,\n        lineNumber: 386\n      },\n      __self: this\n    }, prevLabel)), (wrap || activeIndex !== count - 1) && external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_SafeAnchor, {\n      key: \"next\",\n      className: bsPrefix + \"-control-next\",\n      onClick: this.handleNext,\n      __source: {\n        fileName: Carousel_jsxFileName,\n        lineNumber: 391\n      },\n      __self: this\n    }, nextIcon, nextLabel && external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"span\", {\n      className: \"sr-only\",\n      __source: {\n        fileName: Carousel_jsxFileName,\n        lineNumber: 397\n      },\n      __self: this\n    }, nextLabel))];\n  };\n\n  _proto.renderIndicators = function renderIndicators(children, activeIndex) {\n    var _this5 = this;\n\n    var bsPrefix = this.props.bsPrefix;\n    var indicators = [];\n    forEach(children, function (child, index) {\n      indicators.push(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"li\", {\n        key: index,\n        className: index === activeIndex ? 'active' : null,\n        onClick: function onClick(e) {\n          return _this5.to(index, e);\n        },\n        __source: {\n          fileName: Carousel_jsxFileName,\n          lineNumber: 409\n        },\n        __self: this\n      }), // Force whitespace between indicator elements. Bootstrap requires\n      // this for correct spacing of elements.\n      ' ');\n    });\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"ol\", {\n      className: bsPrefix + \"-indicators\",\n      __source: {\n        fileName: Carousel_jsxFileName,\n        lineNumber: 421\n      },\n      __self: this\n    }, indicators);\n  };\n\n  _proto.render = function render() {\n    var _this$props4 = this.props,\n        Component = _this$props4.as,\n        bsPrefix = _this$props4.bsPrefix,\n        slide = _this$props4.slide,\n        fade = _this$props4.fade,\n        indicators = _this$props4.indicators,\n        controls = _this$props4.controls,\n        wrap = _this$props4.wrap,\n        prevIcon = _this$props4.prevIcon,\n        prevLabel = _this$props4.prevLabel,\n        nextIcon = _this$props4.nextIcon,\n        nextLabel = _this$props4.nextLabel,\n        className = _this$props4.className,\n        children = _this$props4.children,\n        keyboard = _this$props4.keyboard,\n        _5 = _this$props4.activeIndex,\n        _4 = _this$props4.pauseOnHover,\n        _3 = _this$props4.interval,\n        _2 = _this$props4.onSelect,\n        _1 = _this$props4.onSlideEnd,\n        props = _objectWithoutPropertiesLoose(_this$props4, [\"as\", \"bsPrefix\", \"slide\", \"fade\", \"indicators\", \"controls\", \"wrap\", \"prevIcon\", \"prevLabel\", \"nextIcon\", \"nextLabel\", \"className\", \"children\", \"keyboard\", \"activeIndex\", \"pauseOnHover\", \"interval\", \"onSelect\", \"onSlideEnd\"]);\n\n    var _this$state2 = this.state,\n        activeIndex = _this$state2.activeIndex,\n        previousActiveIndex = _this$state2.previousActiveIndex,\n        prevClasses = _this$state2.prevClasses,\n        currentClasses = _this$state2.currentClasses;\n    return (// eslint-disable-next-line jsx-a11y/no-static-element-interactions\n      external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n        className: classnames_default()(className, bsPrefix, slide && 'slide', fade && bsPrefix + \"-fade\"),\n        onKeyDown: keyboard ? this.handleKeyDown : undefined,\n        onMouseOver: this.handleMouseOver,\n        onMouseOut: this.handleMouseOut,\n        __source: {\n          fileName: Carousel_jsxFileName,\n          lineNumber: 457\n        },\n        __self: this\n      }), indicators && this.renderIndicators(children, activeIndex), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", {\n        className: bsPrefix + \"-inner\",\n        ref: this.carousel,\n        __source: {\n          fileName: Carousel_jsxFileName,\n          lineNumber: 471\n        },\n        __self: this\n      }, map(children, function (child, index) {\n        var current = index === activeIndex;\n        var previous = index === previousActiveIndex;\n        return Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"cloneElement\"])(child, {\n          className: classnames_default()(child.props.className, bsPrefix + \"-item\", current && currentClasses, previous && prevClasses)\n        });\n      })), controls && this.renderControls({\n        wrap: wrap,\n        children: children,\n        activeIndex: activeIndex,\n        prevIcon: prevIcon,\n        prevLabel: prevLabel,\n        nextIcon: nextIcon,\n        nextLabel: nextLabel\n      }))\n    );\n  };\n\n  return Carousel;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nCarousel_Carousel.defaultProps = Carousel_defaultProps;\nCarousel_Carousel.propTypes = Carousel_propTypes;\nvar DecoratedCarousel = createBootstrapComponent(uncontrollable_default()(Carousel_Carousel, {\n  activeIndex: 'onSelect'\n}), 'carousel');\nDecoratedCarousel.Caption = CarouselCaption;\nDecoratedCarousel.Item = CarouselItem;\n/* harmony default export */ var src_Carousel = (DecoratedCarousel);\n// CONCATENATED MODULE: ./src/Col.js\n\n\nvar Col_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Col.js\";\n\n\n\n\nvar DEVICE_SIZES = ['xl', 'lg', 'md', 'sm', 'xs'];\nvar colSize = prop_types_default.a.oneOfType([prop_types_default.a.bool, prop_types_default.a.number, prop_types_default.a.string, prop_types_default.a.oneOf(['auto'])]);\nvar stringOrNumber = prop_types_default.a.oneOfType([prop_types_default.a.number, prop_types_default.a.string]);\nvar Col_column = prop_types_default.a.oneOfType([colSize, prop_types_default.a.shape({\n  size: colSize,\n  order: stringOrNumber,\n  offset: stringOrNumber\n})]);\nvar Col_propTypes = {\n  /**\n   * @default 'col'\n   */\n  bsPrefix: prop_types_default.a.string,\n  as: prop_types_default.a.elementType,\n\n  /**\n   * The number of columns to span on sxtra small devices (<576px)\n   *\n   * @type {(true|\"auto\"|number|{ span: true|\"auto\"|number, offset: number, order: number })}\n   */\n  xs: Col_column,\n\n  /**\n   * The number of columns to span on small devices (≥576px)\n   *\n   * @type {(true|\"auto\"|number|{ span: true|\"auto\"|number, offset: number, order: number })}\n   */\n  sm: Col_column,\n\n  /**\n   * The number of columns to span on medium devices (≥768px)\n   *\n   * @type {(true|\"auto\"|number|{ span: true|\"auto\"|number, offset: number, order: number })}\n   */\n  md: Col_column,\n\n  /**\n   * The number of columns to span on large devices (≥992px)\n   *\n   * @type {(true|\"auto\"|number|{ span: true|\"auto\"|number, offset: number, order: number })}\n   */\n  lg: Col_column,\n\n  /**\n   * The number of columns to span on extra large devices (≥1200px)\n   *\n   * @type {(true|\"auto\"|number|{ span: true|\"auto\"|number, offset: number, order: number })}\n   */\n  xl: Col_column\n};\nvar Col_defaultProps = {\n  as: 'div'\n};\nvar Col = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"as\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'col');\n  var spans = [];\n  var classes = [];\n  DEVICE_SIZES.forEach(function (brkPoint) {\n    var propValue = props[brkPoint];\n    delete props[brkPoint];\n    var span, offset, order;\n\n    if (propValue != null && typeof propValue === 'object') {\n      var _propValue$span = propValue.span;\n      span = _propValue$span === void 0 ? true : _propValue$span;\n      offset = propValue.offset;\n      order = propValue.order;\n    } else {\n      span = propValue;\n    }\n\n    var infix = brkPoint !== 'xs' ? \"-\" + brkPoint : '';\n    if (span != null) spans.push(span === true ? \"\" + prefix + infix : \"\" + prefix + infix + \"-\" + span);\n    if (order != null) classes.push(\"order\" + infix + \"-\" + order);\n    if (offset != null) classes.push(\"offset\" + infix + \"-\" + offset);\n  });\n\n  if (!spans.length) {\n    spans.push(prefix); // plain 'col'\n  }\n\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n    ref: ref,\n    className: classnames_default.a.apply(void 0, [className].concat(spans, classes)),\n    __source: {\n      fileName: Col_jsxFileName,\n      lineNumber: 110\n    },\n    __self: this\n  }));\n});\nCol.displayName = 'Col';\nCol.propTypes = Col_propTypes;\nCol.defaultProps = Col_defaultProps;\n/* harmony default export */ var src_Col = (Col);\n// EXTERNAL MODULE: ./node_modules/react-overlays/Dropdown.js\nvar Dropdown = __webpack_require__(52);\nvar Dropdown_default = /*#__PURE__*/__webpack_require__.n(Dropdown);\n\n// EXTERNAL MODULE: external {\"root\":\"ReactDOM\",\"commonjs2\":\"react-dom\",\"commonjs\":\"react-dom\",\"amd\":\"react-dom\"}\nvar external_root_ReactDOM_commonjs2_react_dom_commonjs_react_dom_amd_react_dom_ = __webpack_require__(6);\nvar external_root_ReactDOM_commonjs2_react_dom_commonjs_react_dom_amd_react_dom_default = /*#__PURE__*/__webpack_require__.n(external_root_ReactDOM_commonjs2_react_dom_commonjs_react_dom_amd_react_dom_);\n\n// EXTERNAL MODULE: ./node_modules/react-overlays/DropdownMenu.js\nvar DropdownMenu = __webpack_require__(35);\nvar DropdownMenu_default = /*#__PURE__*/__webpack_require__.n(DropdownMenu);\n\n// CONCATENATED MODULE: ./src/NavbarContext.js\n\n/* harmony default export */ var NavbarContext = (external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createContext(null));\n// CONCATENATED MODULE: ./src/DropdownMenu.js\n\n\nvar DropdownMenu_jsxFileName = \"/Users/jason/src/react-bootstrap/src/DropdownMenu.js\";\n\n\n\n\n\n\n\n\nvar DropdownMenu_wrapRef = function wrapRef(props) {\n  var ref = props.ref;\n\n  props.ref = ref.__wrapped || (ref.__wrapped = function (r) {\n    return ref(Object(external_root_ReactDOM_commonjs2_react_dom_commonjs_react_dom_amd_react_dom_[\"findDOMNode\"])(r));\n  });\n\n  return props;\n};\n\nvar DropdownMenu_propTypes = {\n  /**\n   * @default 'dropdown-menu'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /** Controls the visibility of the Dropdown menu  */\n  show: prop_types_default.a.bool,\n\n  /** Have the dropdown switch to it's opposite placement when necessary to stay on screen. */\n  flip: prop_types_default.a.bool,\n\n  /** Aligns the Dropdown menu to the right of it's container. */\n  alignRight: prop_types_default.a.bool,\n  onSelect: prop_types_default.a.func,\n\n  /**\n   * Which event when fired outside the component will cause it to be closed\n   *\n   * *Note: For custom dropdown components, you will have to pass the\n   * `rootCloseEvent` to `<RootCloseWrapper>` in your custom dropdown menu\n   * component ([similarly to how it is implemented in `<Dropdown.Menu>`](https://github.com/react-bootstrap/react-bootstrap/blob/v0.31.5/src/DropdownMenu.js#L115-L119)).*\n   */\n  rootCloseEvent: prop_types_default.a.oneOf(['click', 'mousedown']),\n\n  /**\n   * Control the rendering of the DropdownMenu. All non-menu props\n   * (listed here) are passed through to the `as` Component.\n   *\n   * If providing a custom, non DOM, component. the `show`, `close` and `alignRight` props\n   * are also injected and should be handled appropriately.\n   */\n  as: prop_types_default.a.elementType,\n\n  /**\n   * A set of popper options and props passed directly to react-popper's Popper component.\n   */\n  popperConfig: prop_types_default.a.object\n};\nvar DropdownMenu_defaultProps = {\n  alignRight: false,\n  as: 'div',\n  flip: true\n};\nvar DropdownMenu_DropdownMenu = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      alignRight = _ref.alignRight,\n      rootCloseEvent = _ref.rootCloseEvent,\n      flip = _ref.flip,\n      popperConfig = _ref.popperConfig,\n      showProps = _ref.show,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"alignRight\", \"rootCloseEvent\", \"flip\", \"popperConfig\", \"show\", \"as\"]);\n\n  var isNavbar = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(NavbarContext);\n  var prefix = useBootstrapPrefix(bsPrefix, 'dropdown-menu');\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(DropdownMenu_default.a, {\n    ref: ref // FIXME: the ref situation is out of hand here\n    ,\n    flip: flip,\n    show: showProps,\n    alignEnd: alignRight,\n    usePopper: !isNavbar,\n    popperConfig: popperConfig,\n    rootCloseEvent: rootCloseEvent,\n    __source: {\n      fileName: DropdownMenu_jsxFileName,\n      lineNumber: 83\n    },\n    __self: this\n  }, function (_ref2) {\n    var placement = _ref2.placement,\n        show = _ref2.show,\n        alignEnd = _ref2.alignEnd,\n        close = _ref2.close,\n        menuProps = _ref2.props;\n    DropdownMenu_wrapRef(menuProps); // For custom components provide additional, non-DOM, props;\n\n    if (typeof Component !== 'string') {\n      menuProps.show = show;\n      menuProps.close = close;\n      menuProps.alignRight = alignEnd;\n    }\n\n    var style = props.style;\n\n    if (placement) {\n      // we don't need the default popper style,\n      // menus are display: none when not shown.\n      style = _extends({}, style, menuProps.style);\n      props['x-placement'] = placement;\n    }\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, menuProps, {\n      style: style,\n      className: classnames_default()(className, prefix, show && 'show', alignEnd && prefix + \"-right\"),\n      __source: {\n        fileName: DropdownMenu_jsxFileName,\n        lineNumber: 108\n      },\n      __self: this\n    }));\n  });\n});\nDropdownMenu_DropdownMenu.displayName = 'DropdownMenu';\nDropdownMenu_DropdownMenu.propTypes = DropdownMenu_propTypes;\nDropdownMenu_DropdownMenu.defaultProps = DropdownMenu_defaultProps;\n/* harmony default export */ var src_DropdownMenu = (DropdownMenu_DropdownMenu);\n// EXTERNAL MODULE: ./node_modules/prop-types-extra/lib/isRequiredForA11y.js\nvar isRequiredForA11y = __webpack_require__(13);\nvar isRequiredForA11y_default = /*#__PURE__*/__webpack_require__.n(isRequiredForA11y);\n\n// EXTERNAL MODULE: ./node_modules/react-overlays/DropdownToggle.js\nvar react_overlays_DropdownToggle = __webpack_require__(36);\nvar DropdownToggle_default = /*#__PURE__*/__webpack_require__.n(react_overlays_DropdownToggle);\n\n// CONCATENATED MODULE: ./src/DropdownToggle.js\n\n\n\nvar DropdownToggle_jsxFileName = \"/Users/jason/src/react-bootstrap/src/DropdownToggle.js\";\n\n\n\n\n\n\n\n\n\nvar DropdownToggle_wrapRef = function wrapRef(props) {\n  var ref = props.ref;\n\n  props.ref = ref.__wrapped || (ref.__wrapped = function (r) {\n    return ref(Object(external_root_ReactDOM_commonjs2_react_dom_commonjs_react_dom_amd_react_dom_[\"findDOMNode\"])(r));\n  });\n\n  return props;\n};\n\nvar DropdownToggle_DropdownToggle =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(DropdownToggle, _React$Component);\n\n  function DropdownToggle() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = DropdownToggle.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        bsPrefix = _this$props.bsPrefix,\n        split = _this$props.split,\n        className = _this$props.className,\n        children = _this$props.children,\n        childBsPrefix = _this$props.childBsPrefix,\n        Component = _this$props.as,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"bsPrefix\", \"split\", \"className\", \"children\", \"childBsPrefix\", \"as\"]);\n\n    if (childBsPrefix !== undefined) {\n      props.bsPrefix = childBsPrefix;\n    } // This intentionally forwards size and variant (if set) to the\n    // underlying component, to allow it to render size and style variants.\n\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(DropdownToggle_default.a, {\n      __source: {\n        fileName: DropdownToggle_jsxFileName,\n        lineNumber: 65\n      },\n      __self: this\n    }, function (_ref) {\n      var toggle = _ref.toggle,\n          toggleProps = _ref.props;\n      return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({\n        onClick: toggle,\n        className: classnames_default()(className, bsPrefix, split && bsPrefix + \"-split\")\n      }, DropdownToggle_wrapRef(toggleProps), props, {\n        __source: {\n          fileName: DropdownToggle_jsxFileName,\n          lineNumber: 67\n        },\n        __self: this\n      }), children);\n    });\n  };\n\n  return DropdownToggle;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component); // Needs to be a class FTM, because it needs to accept a ref that can be used with findDOMNode\n\n\nDropdownToggle_DropdownToggle.propTypes = {\n  /**\n   * @default 'dropdown-toggle'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * An html id attribute, necessary for assistive technologies, such as screen readers.\n   * @type {string|number}\n   * @required\n   */\n  id: isRequiredForA11y_default()(prop_types_default.a.any),\n  split: prop_types_default.a.bool,\n  as: prop_types_default.a.elementType,\n\n  /**\n   * to passthrough to the underlying button or whatever from DropdownButton\n   * @private\n   */\n  childBsPrefix: prop_types_default.a.string\n};\nDropdownToggle_DropdownToggle.defaultProps = {\n  as: src_Button\n};\n/* harmony default export */ var src_DropdownToggle = (createBootstrapComponent(DropdownToggle_DropdownToggle, 'dropdown-toggle'));\n// CONCATENATED MODULE: ./src/NavContext.js\n\nvar NavContext = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createContext(null);\n/* harmony default export */ var src_NavContext = (NavContext);\n// CONCATENATED MODULE: ./src/DropdownItem.js\n\n\nvar DropdownItem_jsxFileName = \"/Users/jason/src/react-bootstrap/src/DropdownItem.js\";\n\n\n\n\n\n\n\n\nvar DropdownItem_propTypes = {\n  /** @default 'dropdown' */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * Highlight the menu item as active.\n   */\n  active: prop_types_default.a.bool,\n\n  /**\n   * Disable the menu item, making it unselectable.\n   */\n  disabled: prop_types_default.a.bool,\n\n  /**\n   * Value passed to the `onSelect` handler, useful for identifying the selected menu item.\n   */\n  eventKey: prop_types_default.a.any,\n\n  /**\n   * HTML `href` attribute corresponding to `a.href`.\n   */\n  href: prop_types_default.a.string,\n\n  /**\n   * Callback fired when the menu item is clicked.\n   */\n  onClick: prop_types_default.a.func,\n\n  /**\n   * Callback fired when the menu item is selected.\n   *\n   * ```js\n   * (eventKey: any, event: Object) => any\n   * ```\n   */\n  onSelect: prop_types_default.a.func,\n  as: prop_types_default.a.elementType\n};\nvar DropdownItem_defaultProps = {\n  as: src_SafeAnchor,\n  disabled: false\n};\nvar DropdownItem = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      children = _ref.children,\n      eventKey = _ref.eventKey,\n      disabled = _ref.disabled,\n      href = _ref.href,\n      onClick = _ref.onClick,\n      onSelect = _ref.onSelect,\n      propActive = _ref.active,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"children\", \"eventKey\", \"disabled\", \"href\", \"onClick\", \"onSelect\", \"active\", \"as\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'dropdown-item');\n  var onSelectCtx = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(src_SelectableContext);\n  var navContext = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(src_NavContext);\n\n  var _ref2 = navContext || {},\n      activeKey = _ref2.activeKey;\n\n  var key = makeEventKey(eventKey, href);\n  var active = propActive == null && key != null ? makeEventKey(activeKey) === key : propActive;\n  var handleClick = useEventCallback_default()(function (event) {\n    // SafeAnchor handles the disabled case, but we handle it here\n    // for other components\n    if (disabled) return;\n    if (onClick) onClick(event);\n    if (onSelectCtx) onSelectCtx(key, event);\n    if (onSelect) onSelect(key, event);\n  });\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n    ref: ref,\n    href: href,\n    disabled: disabled,\n    className: classnames_default()(className, prefix, active && 'active', disabled && 'disabled'),\n    onClick: handleClick,\n    __source: {\n      fileName: DropdownItem_jsxFileName,\n      lineNumber: 96\n    },\n    __self: this\n  }), children);\n});\nDropdownItem.displayName = 'DropdownItem';\nDropdownItem.propTypes = DropdownItem_propTypes;\nDropdownItem.defaultProps = DropdownItem_defaultProps;\n/* harmony default export */ var src_DropdownItem = (DropdownItem);\n// CONCATENATED MODULE: ./src/Dropdown.js\n\n\nvar Dropdown_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Dropdown.js\";\n\n\n\n\n\n\n\n\n\n\n\n\nvar Dropdown_propTypes = {\n  /** @default 'dropdown' */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * Determines the direction and location of the Menu in relation to it's Toggle.\n   */\n  drop: prop_types_default.a.oneOf(['up', 'left', 'right', 'down']),\n  as: prop_types_default.a.elementType,\n\n  /**\n   * Align the menu to the right side of the Dropdown toggle\n   */\n  alignRight: prop_types_default.a.bool,\n\n  /**\n   * Whether or not the Dropdown is visible.\n   *\n   * @controllable onToggle\n   */\n  show: prop_types_default.a.bool,\n\n  /**\n   * Allow Dropdown to flip in case of an overlapping on the reference element. For more information refer to\n   * Popper.js's flip [docs](https://popper.js.org/popper-documentation.html#modifiers..flip.enabled).\n   *\n   */\n  flip: prop_types_default.a.bool,\n\n  /**\n   * A callback fired when the Dropdown wishes to change visibility. Called with the requested\n   * `show` value, the DOM event, and the source that fired it: `'click'`,`'keydown'`,`'rootClose'`, or `'select'`.\n   *\n   * ```js\n   * function(\n   *   isOpen: boolean,\n   *   event: SyntheticEvent,\n   *   metadata: {\n   *     source: 'select' | 'click' | 'rootClose' | 'keydown'\n   *   }\n   * ): void\n   * ```\n   *\n   * @controllable show\n   */\n  onToggle: prop_types_default.a.func,\n\n  /**\n   * A callback fired when a menu item is selected.\n   *\n   * ```js\n   * (eventKey: any, event: Object) => any\n   * ```\n   */\n  onSelect: prop_types_default.a.func,\n\n  /**\n   * Controls the focus behavior for when the Dropdown is opened. Set to\n   * `true` to always focus the first menu item, `keyboard` to focus only when\n   * navigating via the keyboard, or `false` to disable completely\n   *\n   * The Default behavior is `false` **unless** the Menu has a `role=\"menu\"`\n   * where it will default to `keyboard` to match the recommended [ARIA Authoring practices](https://www.w3.org/TR/wai-aria-practices-1.1/#menubutton).\n   */\n  focusFirstItemOnShow: prop_types_default.a.oneOf([false, true, 'keyboard']),\n\n  /** @private */\n  navbar: prop_types_default.a.bool\n};\nvar Dropdown_defaultProps = {\n  as: 'div',\n  navbar: false\n};\nvar Dropdown_Dropdown = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (uncontrolledProps, ref) {\n  var _useUncontrolled = hook_default()(uncontrolledProps, {\n    show: 'onToggle'\n  }),\n      bsPrefix = _useUncontrolled.bsPrefix,\n      drop = _useUncontrolled.drop,\n      show = _useUncontrolled.show,\n      className = _useUncontrolled.className,\n      alignRight = _useUncontrolled.alignRight,\n      onSelect = _useUncontrolled.onSelect,\n      onToggle = _useUncontrolled.onToggle,\n      focusFirstItemOnShow = _useUncontrolled.focusFirstItemOnShow,\n      Component = _useUncontrolled.as,\n      _4 = _useUncontrolled.navbar,\n      props = _objectWithoutPropertiesLoose(_useUncontrolled, [\"bsPrefix\", \"drop\", \"show\", \"className\", \"alignRight\", \"onSelect\", \"onToggle\", \"focusFirstItemOnShow\", \"as\", \"navbar\"]);\n\n  var onSelectCtx = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(src_SelectableContext);\n  var prefix = useBootstrapPrefix(bsPrefix, 'dropdown');\n  var handleToggle = useEventCallback_default()(function (nextShow, event, source) {\n    if (source === void 0) {\n      source = event.type;\n    }\n\n    if (event.currentTarget === document) source = 'rootClose';\n    onToggle(nextShow, event, {\n      source: source\n    });\n  });\n  var handleSelect = useEventCallback_default()(function (key, event) {\n    if (onSelectCtx) onSelectCtx(key, event);\n    if (onSelect) onSelect(key, event);\n    handleToggle(false, event, 'select');\n  });\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_SelectableContext.Provider, {\n    value: handleSelect,\n    __source: {\n      fileName: Dropdown_jsxFileName,\n      lineNumber: 122\n    },\n    __self: this\n  }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Dropdown_default.a.ControlledComponent, {\n    drop: drop,\n    show: show,\n    alignEnd: alignRight,\n    onToggle: handleToggle,\n    focusFirstItemOnShow: focusFirstItemOnShow,\n    itemSelector: \".\" + prefix + \"-item:not(.disabled):not(:disabled)\",\n    __source: {\n      fileName: Dropdown_jsxFileName,\n      lineNumber: 123\n    },\n    __self: this\n  }, function (_ref) {\n    var dropdownProps = _ref.props;\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, dropdownProps, {\n      ref: ref,\n      className: classnames_default()(className, show && 'show', (!drop || drop === 'down') && prefix, drop === 'up' && 'dropup', drop === 'right' && 'dropright', drop === 'left' && 'dropleft'),\n      __source: {\n        fileName: Dropdown_jsxFileName,\n        lineNumber: 132\n      },\n      __self: this\n    }));\n  }));\n});\nDropdown_Dropdown.displayName = 'Dropdown';\nDropdown_Dropdown.propTypes = Dropdown_propTypes;\nDropdown_Dropdown.defaultProps = Dropdown_defaultProps;\nDropdown_Dropdown.Toggle = src_DropdownToggle;\nDropdown_Dropdown.Menu = src_DropdownMenu;\nDropdown_Dropdown.Item = src_DropdownItem;\nDropdown_Dropdown.Header = createWithBsPrefix('dropdown-header', {\n  defaultProps: {\n    role: 'heading'\n  }\n});\nDropdown_Dropdown.Divider = createWithBsPrefix('dropdown-divider', {\n  defaultProps: {\n    role: 'separator'\n  }\n});\n/* harmony default export */ var src_Dropdown = (Dropdown_Dropdown);\n// CONCATENATED MODULE: ./src/DropdownButton.js\n\n\nvar DropdownButton_jsxFileName = \"/Users/jason/src/react-bootstrap/src/DropdownButton.js\";\n\n\n\nvar DropdownButton_propTypes = {\n  /**\n   * An html id attribute for the Toggle button, necessary for assistive technologies, such as screen readers.\n   * @type {string|number}\n   * @required\n   */\n  id: prop_types_default.a.any,\n\n  /** An `href` passed to the Toggle component */\n  href: prop_types_default.a.string,\n\n  /** An `onClick` handler passed to the Toggle component */\n  onClick: prop_types_default.a.func,\n\n  /** The content of the non-toggle Button.  */\n  title: prop_types_default.a.node.isRequired,\n\n  /** Disables both Buttons  */\n  disabled: prop_types_default.a.bool,\n\n  /** An ARIA accessible role applied to the Menu component. When set to 'menu', The dropdown */\n  menuRole: prop_types_default.a.string,\n\n  /**\n   *  Which event when fired outside the component will cause it to be closed.\n   *\n   * _see [DropdownMenu](#menu-props) for more details_\n   */\n  rootCloseEvent: prop_types_default.a.string,\n\n  /** @ignore */\n  bsPrefix: prop_types_default.a.string,\n\n  /** @ignore */\n  variant: prop_types_default.a.string,\n\n  /** @ignore */\n  size: prop_types_default.a.string\n};\n/**\n * A convenience component for simple or general use dropdowns. Renders a `Button` toggle and all `children`\n * are passed directly to the default `Dropdown.Menu`.\n *\n * _All unknown props are passed through to the `Dropdown` component._ Only\n * the Button `variant`, `size` and `bsPrefix` props are passed to the toggle,\n * along with menu related props are passed to the `Dropdown.Menu`\n */\n\nvar DropdownButton = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var title = _ref.title,\n      children = _ref.children,\n      bsPrefix = _ref.bsPrefix,\n      rootCloseEvent = _ref.rootCloseEvent,\n      variant = _ref.variant,\n      size = _ref.size,\n      menuRole = _ref.menuRole,\n      disabled = _ref.disabled,\n      href = _ref.href,\n      id = _ref.id,\n      props = _objectWithoutPropertiesLoose(_ref, [\"title\", \"children\", \"bsPrefix\", \"rootCloseEvent\", \"variant\", \"size\", \"menuRole\", \"disabled\", \"href\", \"id\"]);\n\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Dropdown, _extends({\n    ref: ref\n  }, props, {\n    __source: {\n      fileName: DropdownButton_jsxFileName,\n      lineNumber: 69\n    },\n    __self: this\n  }), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Dropdown.Toggle, {\n    id: id,\n    href: href,\n    size: size,\n    variant: variant,\n    disabled: disabled,\n    childBsPrefix: bsPrefix,\n    __source: {\n      fileName: DropdownButton_jsxFileName,\n      lineNumber: 70\n    },\n    __self: this\n  }, title), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Dropdown.Menu, {\n    role: menuRole,\n    rootCloseEvent: rootCloseEvent,\n    __source: {\n      fileName: DropdownButton_jsxFileName,\n      lineNumber: 80\n    },\n    __self: this\n  }, children));\n});\nDropdownButton.displayName = 'DropdownButton';\nDropdownButton.propTypes = DropdownButton_propTypes;\n/* harmony default export */ var src_DropdownButton = (DropdownButton);\n// CONCATENATED MODULE: ./src/FormContext.js\n\nvar FormContext = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createContext({\n  controlId: undefined\n});\n/* harmony default export */ var src_FormContext = (FormContext);\n// CONCATENATED MODULE: ./src/FormGroup.js\n\n\nvar FormGroup_jsxFileName = \"/Users/jason/src/react-bootstrap/src/FormGroup.js\";\n\n\n\n\n\nvar FormGroup_propTypes = {\n  /**\n   * @default 'form-group'\n   */\n  bsPrefix: prop_types_default.a.string,\n  as: prop_types_default.a.elementType,\n\n  /**\n   * Sets `id` on `<FormControl>` and `htmlFor` on `<FormGroup.Label>`.\n   */\n  controlId: prop_types_default.a.string,\n\n  /**\n   * The FormGroup `ref` will be forwarded to the underlying element.\n   * Unless the FormGroup is rendered `as` a composite component,\n   * it will be a DOM node, when resolved.\n   *\n   * @type {ReactRef}\n   * @alias ref\n   */\n  _ref: prop_types_default.a.any\n};\nvar FormGroup_defaultProps = {\n  as: 'div'\n};\nvar FormGroup = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      children = _ref.children,\n      controlId = _ref.controlId,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"children\", \"controlId\", \"as\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-group');\n  var context = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useMemo\"])(function () {\n    return {\n      controlId: controlId\n    };\n  }, [controlId]);\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_FormContext.Provider, {\n    value: context,\n    __source: {\n      fileName: FormGroup_jsxFileName,\n      lineNumber: 45\n    },\n    __self: this\n  }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n    ref: ref,\n    className: classnames_default()(className, bsPrefix),\n    __source: {\n      fileName: FormGroup_jsxFileName,\n      lineNumber: 46\n    },\n    __self: this\n  }), children));\n});\nFormGroup.displayName = 'FormGroup';\nFormGroup.propTypes = FormGroup_propTypes;\nFormGroup.defaultProps = FormGroup_defaultProps;\n/* harmony default export */ var src_FormGroup = (FormGroup);\n// EXTERNAL MODULE: ./node_modules/warning/warning.js\nvar warning = __webpack_require__(21);\n\n// CONCATENATED MODULE: ./src/Feedback.js\n\n\nvar Feedback_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Feedback.js\";\n\n\n\nvar Feedback_propTypes = {\n  /**\n   * Specify whether the feedback is for valid or invalid fields\n   *\n   * @type {('valid'|'invalid')}\n   */\n  type: prop_types_default.a.string.isRequired,\n  as: prop_types_default.a.elementType\n};\nvar Feedback_defaultProps = {\n  type: 'valid',\n  as: 'div'\n};\nvar Feedback = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var Component = _ref.as,\n      className = _ref.className,\n      type = _ref.type,\n      props = _objectWithoutPropertiesLoose(_ref, [\"as\", \"className\", \"type\"]);\n\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n    ref: ref,\n    className: classnames_default()(className, type && type + \"-feedback\"),\n    __source: {\n      fileName: Feedback_jsxFileName,\n      lineNumber: 22\n    },\n    __self: this\n  }));\n});\nFeedback.displayName = 'Feedback';\nFeedback.propTypes = Feedback_propTypes;\nFeedback.defaultProps = Feedback_defaultProps;\n/* harmony default export */ var src_Feedback = (Feedback);\n// CONCATENATED MODULE: ./src/FormControl.js\n\n\nvar FormControl_jsxFileName = \"/Users/jason/src/react-bootstrap/src/FormControl.js\";\n\n\n\n\n\n\n\nvar FormControl_propTypes = {\n  /**\n   * @default {'form-control'}\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * The FormControl `ref` will be forwarded to the underlying input element,\n   * which means unless `as` is a composite component,\n   * it will be a DOM node, when resolved.\n   *\n   * @type {ReactRef}\n   * @alias ref\n   */\n  _ref: prop_types_default.a.any,\n\n  /**\n   * Input size variants\n   *\n   * @type {('sm'|'lg')}\n   */\n  size: prop_types_default.a.string,\n\n  /**\n   * The underlying HTML element to use when rendering the FormControl.\n   *\n   * @type {('input'|'textarea'|elementType)}\n   */\n  as: prop_types_default.a.elementType,\n\n  /**\n   * Render the input as plain text. Generally used along side `readOnly`.\n   */\n  plaintext: prop_types_default.a.bool,\n\n  /** Make the control readonly */\n  readOnly: prop_types_default.a.bool,\n\n  /** Make the control disabled */\n  disabled: prop_types_default.a.bool,\n\n  /**\n   * The `value` attribute of underlying input\n   *\n   * @controllable onChange\n   * */\n  value: prop_types_default.a.string,\n\n  /** A callback fired when the `value` prop changes */\n  onChange: prop_types_default.a.func,\n\n  /**\n   * The HTML input `type`, which is only relevant if `as` is `'input'` (the default).\n   */\n  type: prop_types_default.a.string,\n\n  /**\n   * Uses `controlId` from `<FormGroup>` if not explicitly specified.\n   */\n  id: prop_types_default.a.string,\n\n  /** Add \"valid\" validation styles to the control */\n  isValid: prop_types_default.a.bool,\n\n  /** Add \"invalid\" validation styles to the control and accompanying label */\n  isInvalid: prop_types_default.a.bool\n};\nvar FormControl_defaultProps = {\n  as: 'input'\n};\nvar FormControl = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      type = _ref.type,\n      size = _ref.size,\n      id = _ref.id,\n      className = _ref.className,\n      isValid = _ref.isValid,\n      isInvalid = _ref.isInvalid,\n      plaintext = _ref.plaintext,\n      readOnly = _ref.readOnly,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"type\", \"size\", \"id\", \"className\", \"isValid\", \"isInvalid\", \"plaintext\", \"readOnly\", \"as\"]);\n\n  var _useContext = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(src_FormContext),\n      controlId = _useContext.controlId;\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-control');\n  var classes;\n\n  if (plaintext) {\n    var _classes;\n\n    classes = (_classes = {}, _classes[bsPrefix + \"-plaintext\"] = true, _classes);\n  } else if (type === 'file') {\n    var _classes2;\n\n    classes = (_classes2 = {}, _classes2[bsPrefix + \"-file\"] = true, _classes2);\n  } else {\n    var _classes3;\n\n    classes = (_classes3 = {}, _classes3[bsPrefix] = true, _classes3[bsPrefix + \"-\" + size] = size, _classes3);\n  }\n\n   false ? undefined : void 0;\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n    type: type,\n    ref: ref,\n    readOnly: readOnly,\n    id: id || controlId,\n    className: classnames_default()(className, classes, isValid && \"is-valid\", isInvalid && \"is-invalid\"),\n    __source: {\n      fileName: FormControl_jsxFileName,\n      lineNumber: 120\n    },\n    __self: this\n  }));\n});\nFormControl.displayName = 'FormControl';\nFormControl.propTypes = FormControl_propTypes;\nFormControl.defaultProps = FormControl_defaultProps;\nFormControl.Feedback = src_Feedback;\n/* harmony default export */ var src_FormControl = (FormControl);\n// CONCATENATED MODULE: ./src/FormCheckInput.js\n\n\nvar FormCheckInput_jsxFileName = \"/Users/jason/src/react-bootstrap/src/FormCheckInput.js\";\n\n\n\n\n\nvar FormCheckInput_propTypes = {\n  /**\n   * @default 'form-check-input'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /** A HTML id attribute, necessary for proper form accessibility. */\n  id: prop_types_default.a.string,\n\n  /** The type of checkable. */\n  type: prop_types_default.a.oneOf(['radio', 'checkbox']).isRequired,\n\n  /**\n   * A convenience prop shortcut for adding `position-static` to the input, for\n   * correct styling when used without an FormCheckLabel\n   */\n  isStatic: prop_types_default.a.bool,\n\n  /** Manually style the input as valid */\n  isValid: prop_types_default.a.bool.isRequired,\n\n  /** Manually style the input as invalid */\n  isInvalid: prop_types_default.a.bool.isRequired\n};\nvar FormCheckInput_defaultProps = {\n  type: 'checkbox'\n};\nvar FormCheckInput = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var id = _ref.id,\n      bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      isValid = _ref.isValid,\n      isInvalid = _ref.isInvalid,\n      isStatic = _ref.isStatic,\n      props = _objectWithoutPropertiesLoose(_ref, [\"id\", \"bsPrefix\", \"className\", \"isValid\", \"isInvalid\", \"isStatic\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-check-input');\n\n  var _useContext = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(src_FormContext),\n      controlId = _useContext.controlId,\n      custom = _useContext.custom;\n\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"input\", _extends({}, props, {\n    ref: ref,\n    id: id || controlId,\n    className: classnames_default()(className, !custom && bsPrefix, custom && 'custom-control-input', isValid && 'is-valid', isInvalid && 'is-invalid', isStatic && 'position-static'),\n    __source: {\n      fileName: FormCheckInput_jsxFileName,\n      lineNumber: 47\n    },\n    __self: this\n  }));\n});\nFormCheckInput.displayName = 'FormCheckInput';\nFormCheckInput.propTypes = FormCheckInput_propTypes;\nFormCheckInput.defaultProps = FormCheckInput_defaultProps;\n/* harmony default export */ var src_FormCheckInput = (FormCheckInput);\n// CONCATENATED MODULE: ./src/FormCheckLabel.js\n\n\nvar FormCheckLabel_jsxFileName = \"/Users/jason/src/react-bootstrap/src/FormCheckLabel.js\";\n\n\n\n\n\nvar FormCheckLabel_propTypes = {\n  /**\n   * @default 'form-check-input'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /** The HTML for attribute for associating the label with an input */\n  htmlFor: prop_types_default.a.string\n};\nvar FormCheckLabel_defaultProps = {\n  type: 'checkbox'\n};\nvar FormCheckLabel = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      htmlFor = _ref.htmlFor,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"htmlFor\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-check-label');\n\n  var _useContext = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(src_FormContext),\n      controlId = _useContext.controlId,\n      custom = _useContext.custom;\n\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"label\", _extends({}, props, {\n    ref: ref,\n    htmlFor: htmlFor || controlId,\n    className: classnames_default()(className, !custom && bsPrefix, custom && 'custom-control-label'),\n    __source: {\n      fileName: FormCheckLabel_jsxFileName,\n      lineNumber: 29\n    },\n    __self: this\n  }));\n});\nFormCheckLabel.displayName = 'FormCheckLabel';\nFormCheckLabel.propTypes = FormCheckLabel_propTypes;\nFormCheckLabel.defaultProps = FormCheckLabel_defaultProps;\n/* harmony default export */ var src_FormCheckLabel = (FormCheckLabel);\n// CONCATENATED MODULE: ./src/FormCheck.js\n\n\nvar FormCheck_jsxFileName = \"/Users/jason/src/react-bootstrap/src/FormCheck.js\";\n\n\n\n\n\n\n\n\nvar FormCheck_propTypes = {\n  /**\n   * @default 'form-check'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * The FormCheck `ref` will be forwarded to the underlying input element,\n   * which means it will be a DOM node, when resolved.\n   *\n   * @type {ReactRef}\n   * @alias ref\n   */\n  _ref: prop_types_default.a.any,\n\n  /** A HTML id attribute, necessary for proper form accessibility. */\n  id: prop_types_default.a.string,\n\n  /**\n   * Provide a function child to manually handle the layout of the FormCheck's inner components.\n   *\n   * ````\n   * <FormCheck>\n   *   <FormCheck.Input isInvalid type={radio} />\n   *   <FormCheck.Label>Allow us to contact you?</FormCheck.Label>\n   *   <Feedback type=\"invalid\">Yo this is required</Feedback>\n   * </FormCheck>\n   * ```\n   */\n  children: prop_types_default.a.node,\n  inline: prop_types_default.a.bool,\n  disabled: prop_types_default.a.bool,\n  title: prop_types_default.a.string,\n  label: prop_types_default.a.node,\n\n  /** Use Bootstrap's custom form elements to replace the browser defaults */\n  custom: prop_types_default.a.bool,\n\n  /** The type of checkable. */\n  type: prop_types_default.a.oneOf(['radio', 'checkbox']).isRequired,\n\n  /** Manually style the input as valid */\n  isValid: prop_types_default.a.bool.isRequired,\n\n  /** Manually style the input as invalid */\n  isInvalid: prop_types_default.a.bool.isRequired,\n\n  /** A message to display when the input is in a validation state */\n  feedback: prop_types_default.a.node\n};\nvar FormCheck_defaultProps = {\n  type: 'checkbox',\n  inline: false,\n  disabled: false,\n  isValid: false,\n  isInvalid: false,\n  title: ''\n};\nvar FormCheck = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var id = _ref.id,\n      bsPrefix = _ref.bsPrefix,\n      inline = _ref.inline,\n      disabled = _ref.disabled,\n      isValid = _ref.isValid,\n      isInvalid = _ref.isInvalid,\n      feedback = _ref.feedback,\n      className = _ref.className,\n      style = _ref.style,\n      title = _ref.title,\n      type = _ref.type,\n      label = _ref.label,\n      children = _ref.children,\n      custom = _ref.custom,\n      props = _objectWithoutPropertiesLoose(_ref, [\"id\", \"bsPrefix\", \"inline\", \"disabled\", \"isValid\", \"isInvalid\", \"feedback\", \"className\", \"style\", \"title\", \"type\", \"label\", \"children\", \"custom\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-check');\n\n  var _useContext = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(src_FormContext),\n      controlId = _useContext.controlId;\n\n  var innerFormContext = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useMemo\"])(function () {\n    return {\n      controlId: id || controlId,\n      custom: custom\n    };\n  }, [controlId, custom, id]);\n  var hasLabel = label != null && label !== false && !children;\n  var input = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_FormCheckInput, _extends({}, props, {\n    type: type,\n    ref: ref,\n    isValid: isValid,\n    isInvalid: isInvalid,\n    isStatic: !hasLabel,\n    disabled: disabled,\n    __source: {\n      fileName: FormCheck_jsxFileName,\n      lineNumber: 107\n    },\n    __self: this\n  }));\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_FormContext.Provider, {\n    value: innerFormContext,\n    __source: {\n      fileName: FormCheck_jsxFileName,\n      lineNumber: 119\n    },\n    __self: this\n  }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", {\n    style: style,\n    className: classnames_default()(className, !custom && bsPrefix, custom && \"custom-control custom-\" + type, inline && (custom ? 'custom-control' : bsPrefix) + \"-inline\"),\n    __source: {\n      fileName: FormCheck_jsxFileName,\n      lineNumber: 120\n    },\n    __self: this\n  }, children || external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Fragment, {\n    __source: {\n      fileName: FormCheck_jsxFileName,\n      lineNumber: 130\n    },\n    __self: this\n  }, input, hasLabel && external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_FormCheckLabel, {\n    title: title,\n    __source: {\n      fileName: FormCheck_jsxFileName,\n      lineNumber: 133\n    },\n    __self: this\n  }, label), (isValid || isInvalid) && external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Feedback, {\n    type: isValid ? 'valid' : 'invalid',\n    __source: {\n      fileName: FormCheck_jsxFileName,\n      lineNumber: 136\n    },\n    __self: this\n  }, feedback))));\n});\nFormCheck.displayName = 'FormCheck';\nFormCheck.propTypes = FormCheck_propTypes;\nFormCheck.defaultProps = FormCheck_defaultProps;\nFormCheck.Input = src_FormCheckInput;\nFormCheck.Label = src_FormCheckLabel;\n/* harmony default export */ var src_FormCheck = (FormCheck);\n// CONCATENATED MODULE: ./src/FormLabel.js\n\n\nvar FormLabel_jsxFileName = \"/Users/jason/src/react-bootstrap/src/FormLabel.js\";\n\n\n\n\n\n\n\nvar FormLabel_propTypes = {\n  /**\n   * @default 'form-label'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * Uses `controlId` from `<FormGroup>` if not explicitly specified.\n   */\n  htmlFor: prop_types_default.a.string,\n\n  /**\n   * Renders the FormLabel as a `<Col>` component (accepting all the same props),\n   * as well as adding additional styling for horizontal forms.\n   */\n  column: prop_types_default.a.bool,\n\n  /**\n   * The FormLabel `ref` will be forwarded to the underlying element.\n   * Unless the FormLabel is rendered `as` a composite component,\n   * it will be a DOM node, when resolved.\n   *\n   * @type {ReactRef}\n   * @alias ref\n   */\n  _ref: prop_types_default.a.any,\n\n  /**\n   * Hides the label visually while still allowing it to be\n   * read by assistive technologies.\n   */\n  srOnly: prop_types_default.a.bool\n};\nvar FormLabel_defaultProps = {\n  column: false,\n  srOnly: false\n};\nvar FormLabel = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      column = _ref.column,\n      srOnly = _ref.srOnly,\n      className = _ref.className,\n      htmlFor = _ref.htmlFor,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"column\", \"srOnly\", \"className\", \"htmlFor\"]);\n\n  var _useContext = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(src_FormContext),\n      controlId = _useContext.controlId;\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-label');\n  var classes = classnames_default()(className, bsPrefix, srOnly && 'sr-only', column && 'col-form-label');\n  if (column) return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Col, _extends({}, props, {\n    className: classes,\n    as: \"label\",\n    __source: {\n      fileName: FormLabel_jsxFileName,\n      lineNumber: 62\n    },\n    __self: this\n  }));\n   false ? undefined : void 0;\n  return (// eslint-disable-next-line jsx-a11y/label-has-for, jsx-a11y/label-has-associated-control\n    external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"label\", _extends({}, props, {\n      htmlFor: htmlFor || controlId,\n      ref: ref,\n      className: classes,\n      __source: {\n        fileName: FormLabel_jsxFileName,\n        lineNumber: 70\n      },\n      __self: this\n    }))\n  );\n});\nFormLabel.displayName = 'FormLabel';\nFormLabel.propTypes = FormLabel_propTypes;\nFormLabel.defaultProps = FormLabel_defaultProps;\n/* harmony default export */ var src_FormLabel = (FormLabel);\n// CONCATENATED MODULE: ./src/FormText.js\n\n\nvar FormText_jsxFileName = \"/Users/jason/src/react-bootstrap/src/FormText.js\";\n\n\n\n\nvar FormText_propTypes = {\n  /** @default 'form-text' */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * The FormText `ref` will be forwarded to the underlying element.\n   * Unless the FormText is rendered `as` a composite component,\n   * it will be a DOM node, when resolved.\n   *\n   * @type {ReactRef}\n   * @alias ref\n   */\n  _ref: prop_types_default.a.any,\n\n  /**\n   * A convenience prop for add the `text-muted` class,\n   * since it's so commonly used here.\n   */\n  muted: prop_types_default.a.bool,\n  as: prop_types_default.a.elementType\n};\nvar FormText_defaultProps = {\n  as: 'small'\n};\nvar FormText = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"as\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form-text');\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n    ref: ref,\n    className: classnames_default()(className, bsPrefix),\n    __source: {\n      fileName: FormText_jsxFileName,\n      lineNumber: 38\n    },\n    __self: this\n  }));\n});\nFormText.displayName = 'FormText';\nFormText.propTypes = FormText_propTypes;\nFormText.defaultProps = FormText_defaultProps;\n/* harmony default export */ var src_FormText = (FormText);\n// CONCATENATED MODULE: ./src/Form.js\n\n\nvar Form_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Form.js\";\n\n\n\n\n\n\n\n\n\n\nvar Form_propTypes = {\n  /**\n   * @default {'form'}\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * The Form `ref` will be forwarded to the underlying element,\n   * which means, unless it's rendered `as` a composite component,\n   * it will be a DOM node, when resolved.\n   *\n   * @type {ReactRef}\n   * @alias ref\n   */\n  _ref: prop_types_default.a.any,\n\n  /**\n   * Display the series of labels, form controls,\n   * and buttons on a single horizontal row\n   */\n  inline: prop_types_default.a.bool,\n\n  /**\n   * Mark a form as having been validated. Setting it to `true` will\n   * toggle any validation styles on the forms elements.\n   */\n  validated: prop_types_default.a.bool,\n  as: prop_types_default.a.elementType\n};\nvar Form_defaultProps = {\n  inline: false,\n  as: 'form'\n};\nvar Form = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      inline = _ref.inline,\n      className = _ref.className,\n      validated = _ref.validated,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"inline\", \"className\", \"validated\", \"as\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'form');\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n    ref: ref,\n    className: classnames_default()(className, validated && 'was-validated', inline && bsPrefix + \"-inline\"),\n    __source: {\n      fileName: Form_jsxFileName,\n      lineNumber: 55\n    },\n    __self: this\n  }));\n});\nForm.displayName = 'Form';\nForm.propTypes = Form_propTypes;\nForm.defaultProps = Form_defaultProps;\nForm.Row = createWithBsPrefix('form-row');\nForm.Group = src_FormGroup;\nForm.Control = src_FormControl;\nForm.Check = src_FormCheck;\nForm.Label = src_FormLabel;\nForm.Text = src_FormText;\n/* harmony default export */ var src_Form = (Form);\n// CONCATENATED MODULE: ./src/Container.js\n\n\nvar Container_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Container.js\";\n\n\n\n\nvar Container_propTypes = {\n  /**\n   * @default 'container'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * Allow the Container to fill all of it's availble horizontal space.\n   */\n  fluid: prop_types_default.a.bool,\n\n  /**\n   * You can use a custom element for this component\n   */\n  as: prop_types_default.a.elementType\n};\nvar Container_defaultProps = {\n  as: 'div',\n  fluid: false\n};\nvar Container = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      fluid = _ref.fluid,\n      Component = _ref.as,\n      className = _ref.className,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"fluid\", \"as\", \"className\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'container');\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({\n    ref: ref\n  }, props, {\n    className: classnames_default()(className, fluid ? prefix + \"-fluid\" : prefix),\n    __source: {\n      fileName: Container_jsxFileName,\n      lineNumber: 32\n    },\n    __self: this\n  }));\n});\nContainer.displayName = 'Container';\nContainer.propTypes = Container_propTypes;\nContainer.defaultProps = Container_defaultProps;\n/* harmony default export */ var src_Container = (Container);\n// CONCATENATED MODULE: ./src/Image.js\n\n\n\nvar Image_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Image.js\";\n\n\n\n\n\nvar Image_Image =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Image, _React$Component);\n\n  function Image() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = Image.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        bsPrefix = _this$props.bsPrefix,\n        className = _this$props.className,\n        fluid = _this$props.fluid,\n        rounded = _this$props.rounded,\n        roundedCircle = _this$props.roundedCircle,\n        thumbnail = _this$props.thumbnail,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"bsPrefix\", \"className\", \"fluid\", \"rounded\", \"roundedCircle\", \"thumbnail\"]);\n\n    var classes = classnames_default()(fluid && bsPrefix + \"-fluid\", rounded && \"rounded\", roundedCircle && \"rounded-circle\", thumbnail && bsPrefix + \"-thumbnail\");\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"img\", _extends({}, props, {\n      className: classnames_default()(className, classes),\n      __source: {\n        fileName: Image_jsxFileName,\n        lineNumber: 60\n      },\n      __self: this\n    }));\n  };\n\n  return Image;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nImage_Image.propTypes = {\n  /**\n   * @default 'img'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * Sets image as fluid image.\n   */\n  fluid: prop_types_default.a.bool,\n\n  /**\n   * Sets image shape as rounded.\n   */\n  rounded: prop_types_default.a.bool,\n\n  /**\n   * Sets image shape as circle.\n   */\n  roundedCircle: prop_types_default.a.bool,\n\n  /**\n   * Sets image shape as thumbnail.\n   */\n  thumbnail: prop_types_default.a.bool\n};\nImage_Image.defaultProps = {\n  fluid: false,\n  rounded: false,\n  roundedCircle: false,\n  thumbnail: false\n};\n/* harmony default export */ var src_Image = (createBootstrapComponent(Image_Image, 'img'));\n// CONCATENATED MODULE: ./src/FigureImage.js\n\n\nvar FigureImage_jsxFileName = \"/Users/jason/src/react-bootstrap/src/FigureImage.js\";\n\n\n\n\nvar FigureImage_propTypes = {\n  /**\n   * @default 'img'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * Sets image as fluid image.\n   */\n  fluid: prop_types_default.a.bool,\n\n  /**\n   * Sets image shape as rounded.\n   */\n  rounded: prop_types_default.a.bool,\n\n  /**\n   * Sets image shape as circle.\n   */\n  roundedCircle: prop_types_default.a.bool,\n\n  /**\n   * Sets image shape as thumbnail.\n   */\n  thumbnail: prop_types_default.a.bool\n};\nvar FigureImage_defaultProps = {\n  fluid: true\n};\nvar FigureImage = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var className = _ref.className,\n      props = _objectWithoutPropertiesLoose(_ref, [\"className\"]);\n\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Image, _extends({\n    ref: ref\n  }, props, {\n    className: classnames_default()(className, 'figure-img'),\n    __source: {\n      fileName: FigureImage_jsxFileName,\n      lineNumber: 37\n    },\n    __self: this\n  }));\n});\nFigureImage.displayName = 'FigureImage';\nFigureImage.propTypes = FigureImage_propTypes;\nFigureImage.defaultProps = FigureImage_defaultProps;\n/* harmony default export */ var src_FigureImage = (FigureImage);\n// CONCATENATED MODULE: ./src/FigureCaption.js\n\nvar FigureCaption = createWithBsPrefix('figure-caption', {\n  Component: 'figcaption'\n});\n/* harmony default export */ var src_FigureCaption = (FigureCaption);\n// CONCATENATED MODULE: ./src/Figure.js\n\n\n\nvar Figure = createWithBsPrefix('figure', {\n  Component: 'figure'\n});\nFigure.Image = src_FigureImage;\nFigure.Caption = src_FigureCaption;\n/* harmony default export */ var src_Figure = (Figure);\n// CONCATENATED MODULE: ./src/InputGroup.js\n\n\n\nvar InputGroup_jsxFileName = \"/Users/jason/src/react-bootstrap/src/InputGroup.js\";\n\n\n\n\n\n/**\n *\n * @property {InputGroupAppend} Append\n * @property {InputGroupPrepend} Prepend\n * @property {InputGroupText} Text\n * @property {InputGroupRadio} Radio\n * @property {InputGroupCheckbox} Checkbox\n */\n\nvar InputGroup_InputGroup =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(InputGroup, _React$Component);\n\n  function InputGroup() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = InputGroup.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        bsPrefix = _this$props.bsPrefix,\n        size = _this$props.size,\n        className = _this$props.className,\n        Component = _this$props.as,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"bsPrefix\", \"size\", \"className\", \"as\"]);\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n      className: classnames_default()(className, bsPrefix, size && bsPrefix + \"-\" + size),\n      __source: {\n        fileName: InputGroup_jsxFileName,\n        lineNumber: 40\n      },\n      __self: this\n    }));\n  };\n\n  return InputGroup;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nInputGroup_InputGroup.propTypes = {\n  /** @default 'input-group' */\n  bsPrefix: prop_types_default.a.string.isRequired,\n\n  /**\n   * Control the size of buttons and form elements from the top-level .\n   *\n   * @type {('sm'|'lg')}\n   */\n  size: prop_types_default.a.string,\n  as: prop_types_default.a.elementType\n};\nInputGroup_InputGroup.defaultProps = {\n  as: 'div'\n};\nvar InputGroupAppend = createWithBsPrefix('input-group-append');\nvar InputGroupPrepend = createWithBsPrefix('input-group-prepend');\nvar InputGroupText = createWithBsPrefix('input-group-text', {\n  Component: 'span'\n});\n\nvar InputGroup_InputGroupCheckbox = function InputGroupCheckbox(props) {\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(InputGroupText, {\n    __source: {\n      fileName: InputGroup_jsxFileName,\n      lineNumber: 61\n    },\n    __self: this\n  }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"input\", _extends({\n    type: \"checkbox\"\n  }, props, {\n    __source: {\n      fileName: InputGroup_jsxFileName,\n      lineNumber: 62\n    },\n    __self: this\n  })));\n};\n\nvar InputGroup_InputGroupRadio = function InputGroupRadio(props) {\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(InputGroupText, {\n    __source: {\n      fileName: InputGroup_jsxFileName,\n      lineNumber: 67\n    },\n    __self: this\n  }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"input\", _extends({\n    type: \"radio\"\n  }, props, {\n    __source: {\n      fileName: InputGroup_jsxFileName,\n      lineNumber: 68\n    },\n    __self: this\n  })));\n};\n\nvar DecoratedInputGroup = createBootstrapComponent(InputGroup_InputGroup, 'input-group');\nDecoratedInputGroup.Text = InputGroupText;\nDecoratedInputGroup.Radio = InputGroup_InputGroupRadio;\nDecoratedInputGroup.Checkbox = InputGroup_InputGroupCheckbox;\nDecoratedInputGroup.Append = InputGroupAppend;\nDecoratedInputGroup.Prepend = InputGroupPrepend;\n/* harmony default export */ var src_InputGroup = (DecoratedInputGroup);\n// CONCATENATED MODULE: ./src/Jumbotron.js\n\n\n\nvar Jumbotron_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Jumbotron.js\";\n\n\n\n\nvar Jumbotron_propTypes = {\n  as: prop_types_default.a.elementType,\n\n  /** Make the jumbotron full width, and without rounded corners */\n  fluid: prop_types_default.a.bool,\n\n  /** @default 'jumbotron' */\n  bsPrefix: prop_types_default.a.string\n};\nvar Jumbotron_defaultProps = {\n  as: 'div',\n  fluid: false\n};\n\nvar Jumbotron_Jumbotron =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Jumbotron, _React$Component);\n\n  function Jumbotron() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = Jumbotron.prototype;\n\n  _proto.render = function render() {\n    var _classes;\n\n    var _this$props = this.props,\n        Component = _this$props.as,\n        className = _this$props.className,\n        fluid = _this$props.fluid,\n        bsPrefix = _this$props.bsPrefix,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"as\", \"className\", \"fluid\", \"bsPrefix\"]);\n\n    var classes = (_classes = {}, _classes[bsPrefix] = true, _classes[bsPrefix + \"-fluid\"] = fluid, _classes);\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n      className: classnames_default()(className, classes),\n      __source: {\n        fileName: Jumbotron_jsxFileName,\n        lineNumber: 27\n      },\n      __self: this\n    }));\n  };\n\n  return Jumbotron;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nJumbotron_Jumbotron.propTypes = Jumbotron_propTypes;\nJumbotron_Jumbotron.defaultProps = Jumbotron_defaultProps;\n/* harmony default export */ var src_Jumbotron = (createBootstrapComponent(Jumbotron_Jumbotron, 'jumbotron'));\n// EXTERNAL MODULE: ./node_modules/dom-helpers/query/querySelectorAll.js\nvar querySelectorAll = __webpack_require__(9);\nvar querySelectorAll_default = /*#__PURE__*/__webpack_require__.n(querySelectorAll);\n\n// EXTERNAL MODULE: ./node_modules/@restart/context/mapContextToProps.js\nvar mapContextToProps = __webpack_require__(55);\nvar mapContextToProps_default = /*#__PURE__*/__webpack_require__.n(mapContextToProps);\n\n// CONCATENATED MODULE: ./src/TabContext.js\n\nvar TabContext = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createContext(null);\n/* harmony default export */ var src_TabContext = (TabContext);\n// CONCATENATED MODULE: ./src/AbstractNav.js\n\n\n\nvar AbstractNav_jsxFileName = \"/Users/jason/src/react-bootstrap/src/AbstractNav.js\";\n\n\n\n\n\n\n\n\nvar noop = function noop() {};\n\nvar AbstractNav_AbstractNav =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(AbstractNav, _React$Component);\n\n  function AbstractNav() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n    _this.handleSelect = function (key, event) {\n      var _this$props = _this.props,\n          onSelect = _this$props.onSelect,\n          parentOnSelect = _this$props.parentOnSelect;\n      if (key == null) return;\n      if (onSelect) onSelect(key, event);\n      if (parentOnSelect) parentOnSelect(key, event);\n    };\n\n    _this.handleKeyDown = function (event) {\n      var onKeyDown = _this.props.onKeyDown;\n      if (onKeyDown) onKeyDown(event);\n      var nextActiveChild;\n\n      switch (event.key) {\n        case 'ArrowLeft':\n        case 'ArrowUp':\n          nextActiveChild = _this.getNextActiveChild(-1);\n          break;\n\n        case 'ArrowRight':\n        case 'ArrowDown':\n          nextActiveChild = _this.getNextActiveChild(1);\n          break;\n\n        default:\n          return;\n      }\n\n      if (!nextActiveChild) return;\n      event.preventDefault();\n\n      _this.handleSelect(nextActiveChild.dataset.rbEventKey, event);\n\n      _this._needsRefocus = true;\n    };\n\n    _this.attachRef = function (ref) {\n      _this.listNode = ref;\n    };\n\n    _this.state = {\n      navContext: null\n    };\n    return _this;\n  }\n\n  AbstractNav.getDerivedStateFromProps = function getDerivedStateFromProps(_ref) {\n    var activeKey = _ref.activeKey,\n        getControlledId = _ref.getControlledId,\n        getControllerId = _ref.getControllerId,\n        role = _ref.role;\n    return {\n      navContext: {\n        role: role,\n        // used by NavLink to determine it's role\n        activeKey: makeEventKey(activeKey),\n        getControlledId: getControlledId || noop,\n        getControllerId: getControllerId || noop\n      }\n    };\n  };\n\n  var _proto = AbstractNav.prototype;\n\n  _proto.componentDidUpdate = function componentDidUpdate() {\n    if (!this._needsRefocus || !this.listNode) return;\n    var activeChild = this.listNode.querySelector('[data-rb-event-key].active');\n    if (activeChild) activeChild.focus();\n  };\n\n  _proto.getNextActiveChild = function getNextActiveChild(offset) {\n    if (!this.listNode) return null;\n    var items = querySelectorAll_default()(this.listNode, '[data-rb-event-key]:not(.disabled)');\n    var activeChild = this.listNode.querySelector('.active');\n    var index = items.indexOf(activeChild);\n    if (index === -1) return null;\n    var nextIndex = index + offset;\n    if (nextIndex >= items.length) nextIndex = 0;\n    if (nextIndex < 0) nextIndex = items.length - 1;\n    return items[nextIndex];\n  };\n\n  _proto.render = function render() {\n    var _this$props2 = this.props,\n        Component = _this$props2.as,\n        _ = _this$props2.onSelect,\n        _0 = _this$props2.parentOnSelect,\n        _1 = _this$props2.getControlledId,\n        _2 = _this$props2.getControllerId,\n        _3 = _this$props2.activeKey,\n        props = _objectWithoutPropertiesLoose(_this$props2, [\"as\", \"onSelect\", \"parentOnSelect\", \"getControlledId\", \"getControllerId\", \"activeKey\"]);\n\n    if (props.role === 'tablist') {\n      props.onKeyDown = this.handleKeyDown;\n    }\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_SelectableContext.Provider, {\n      value: this.handleSelect,\n      __source: {\n        fileName: AbstractNav_jsxFileName,\n        lineNumber: 129\n      },\n      __self: this\n    }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_NavContext.Provider, {\n      value: this.state.navContext,\n      __source: {\n        fileName: AbstractNav_jsxFileName,\n        lineNumber: 130\n      },\n      __self: this\n    }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n      onKeyDown: this.handleKeyDown,\n      ref: this.attachRef,\n      __source: {\n        fileName: AbstractNav_jsxFileName,\n        lineNumber: 131\n      },\n      __self: this\n    }))));\n  };\n\n  return AbstractNav;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nAbstractNav_AbstractNav.propTypes = {\n  onSelect: prop_types_default.a.func.isRequired,\n  as: prop_types_default.a.elementType,\n\n  /** @private */\n  onKeyDown: prop_types_default.a.func,\n\n  /** @private */\n  parentOnSelect: prop_types_default.a.func,\n\n  /** @private */\n  getControlledId: prop_types_default.a.func,\n\n  /** @private */\n  getControllerId: prop_types_default.a.func,\n\n  /** @private */\n  activeKey: prop_types_default.a.any\n};\nAbstractNav_AbstractNav.defaultProps = {\n  as: 'ul'\n};\n/* harmony default export */ var src_AbstractNav = (mapContextToProps_default()([src_SelectableContext, src_TabContext], function (parentOnSelect, tabContext, _ref2) {\n  var role = _ref2.role;\n  if (!tabContext) return {\n    parentOnSelect: parentOnSelect\n  };\n  var activeKey = tabContext.activeKey,\n      getControllerId = tabContext.getControllerId,\n      getControlledId = tabContext.getControlledId;\n  return {\n    activeKey: activeKey,\n    parentOnSelect: parentOnSelect,\n    role: role || 'tablist',\n    // pass these two through to avoid having to listen to\n    // both Tab and Nav contexts in NavLink\n    getControllerId: getControllerId,\n    getControlledId: getControlledId\n  };\n}, AbstractNav_AbstractNav));\n// CONCATENATED MODULE: ./src/AbstractNavItem.js\n\n\nvar AbstractNavItem_jsxFileName = \"/Users/jason/src/react-bootstrap/src/AbstractNavItem.js\";\n\n\n\n\n\n\nvar AbstractNavItem_propTypes = {\n  active: prop_types_default.a.bool,\n  role: prop_types_default.a.string,\n  href: prop_types_default.a.string,\n  tabIndex: prop_types_default.a.string,\n  eventKey: prop_types_default.a.any,\n  onclick: prop_types_default.a.func,\n  as: prop_types_default.a.any,\n  onClick: prop_types_default.a.func,\n  onSelect: prop_types_default.a.func\n};\nvar AbstractNavItem_defaultProps = {\n  disabled: false\n};\nvar AbstractNavItem = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var active = _ref.active,\n      className = _ref.className,\n      tabIndex = _ref.tabIndex,\n      eventKey = _ref.eventKey,\n      onSelect = _ref.onSelect,\n      onClick = _ref.onClick,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"active\", \"className\", \"tabIndex\", \"eventKey\", \"onSelect\", \"onClick\", \"as\"]);\n\n  var navKey = makeEventKey(eventKey, props.href);\n  var parentOnSelect = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(src_SelectableContext);\n  var navContext = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(src_NavContext);\n  var isActive = active;\n\n  if (navContext) {\n    if (!props.role && navContext.role === 'tablist') props.role = 'tab';\n    props['data-rb-event-key'] = navKey;\n    props.id = navContext.getControllerId(navKey);\n    props['aria-controls'] = navContext.getControlledId(navKey);\n    isActive = active == null && navKey != null ? navContext.activeKey === navKey : active;\n  }\n\n  if (props.role === 'tab') {\n    props.tabIndex = isActive ? tabIndex : -1;\n    props['aria-selected'] = isActive;\n  }\n\n  var handleOnclick = useEventCallback_default()(function (e) {\n    if (onClick) onClick(e);\n    if (navKey == null) return;\n    if (onSelect) onSelect(navKey, e);\n    if (parentOnSelect) parentOnSelect(navKey, e);\n  });\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n    ref: ref,\n    onClick: handleOnclick,\n    className: classnames_default()(className, isActive && 'active'),\n    __source: {\n      fileName: AbstractNavItem_jsxFileName,\n      lineNumber: 72\n    },\n    __self: this\n  }));\n});\nAbstractNavItem.propTypes = AbstractNavItem_propTypes;\nAbstractNavItem.defaultProps = AbstractNavItem_defaultProps;\n/* harmony default export */ var src_AbstractNavItem = (AbstractNavItem);\n// CONCATENATED MODULE: ./src/ListGroupItem.js\n\n\n\nvar ListGroupItem_jsxFileName = \"/Users/jason/src/react-bootstrap/src/ListGroupItem.js\";\n\n\n\n\n\n\n\nvar ListGroupItem_ListGroupItem =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(ListGroupItem, _React$Component);\n\n  function ListGroupItem() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n    _this.handleClick = function (event) {\n      var _this$props = _this.props,\n          onClick = _this$props.onClick,\n          disabled = _this$props.disabled;\n\n      if (disabled) {\n        event.preventDefault();\n        event.stopPropagation();\n        return;\n      }\n\n      if (onClick) onClick(event);\n    };\n\n    return _this;\n  }\n\n  var _proto = ListGroupItem.prototype;\n\n  _proto.render = function render() {\n    var _this$props2 = this.props,\n        bsPrefix = _this$props2.bsPrefix,\n        active = _this$props2.active,\n        disabled = _this$props2.disabled,\n        className = _this$props2.className,\n        variant = _this$props2.variant,\n        action = _this$props2.action,\n        as = _this$props2.as,\n        eventKey = _this$props2.eventKey,\n        props = _objectWithoutPropertiesLoose(_this$props2, [\"bsPrefix\", \"active\", \"disabled\", \"className\", \"variant\", \"action\", \"as\", \"eventKey\"]);\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_AbstractNavItem, _extends({}, props, {\n      eventKey: makeEventKey(eventKey, props.href) // eslint-disable-next-line\n      ,\n      as: as || (action ? props.href ? 'a' : 'button' : 'div'),\n      onClick: this.handleClick,\n      className: classnames_default()(className, bsPrefix, active && 'active', disabled && 'disabled', variant && bsPrefix + \"-\" + variant, action && bsPrefix + \"-action\"),\n      __source: {\n        fileName: ListGroupItem_jsxFileName,\n        lineNumber: 80\n      },\n      __self: this\n    }));\n  };\n\n  return ListGroupItem;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nListGroupItem_ListGroupItem.propTypes = {\n  /**\n   * @default 'list-group-item'\n   */\n  bsPrefix: prop_types_default.a.string.isRequired,\n\n  /**\n   * Sets contextual classes for list item\n   * @type {('primary'|'secondary'|'success'|'danger'|'warning'|'info'|'dark'|'light')}\n   */\n  variant: prop_types_default.a.string,\n\n  /**\n   * Marks a ListGroupItem as actionable, applying additional hover, active and disabled styles\n   * for links and buttons.\n   */\n  action: prop_types_default.a.bool,\n\n  /**\n   * Sets list item as active\n   */\n  active: prop_types_default.a.bool,\n\n  /**\n   * Sets list item state as disabled\n   */\n  disabled: prop_types_default.a.bool,\n  eventKey: prop_types_default.a.string,\n  onClick: prop_types_default.a.func,\n\n  /**\n   * You can use a custom element type for this component. For none `action` items, items render as `li`.\n   * For actions the default is an achor or button element depending on whether a `href` is provided.\n   *\n   * @default {'div' | 'a' | 'button'}\n   */\n  as: prop_types_default.a.elementType\n};\nListGroupItem_ListGroupItem.defaultProps = {\n  variant: null,\n  active: false,\n  disabled: false\n};\n/* harmony default export */ var src_ListGroupItem = (createBootstrapComponent(ListGroupItem_ListGroupItem, 'list-group-item'));\n// CONCATENATED MODULE: ./src/ListGroup.js\n\n\n\nvar ListGroup_jsxFileName = \"/Users/jason/src/react-bootstrap/src/ListGroup.js\";\n\n\n\n\n\n\n\n\nvar ListGroup_ListGroup =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(ListGroup, _React$Component);\n\n  function ListGroup() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = ListGroup.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        className = _this$props.className,\n        bsPrefix = _this$props.bsPrefix,\n        variant = _this$props.variant,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"className\", \"bsPrefix\", \"variant\"]);\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_AbstractNav, _extends({}, props, {\n      className: classnames_default()(className, bsPrefix, variant && bsPrefix + \"-\" + variant),\n      __source: {\n        fileName: ListGroup_jsxFileName,\n        lineNumber: 40\n      },\n      __self: this\n    }));\n  };\n\n  return ListGroup;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nListGroup_ListGroup.propTypes = {\n  /**\n   * @default 'list-group'\n   */\n  bsPrefix: prop_types_default.a.string.isRequired,\n\n  /**\n   * Adds a variant to the list-group\n   *\n   * @type {('flush')}\n   */\n  variant: prop_types_default.a.oneOf(['flush', null]),\n\n  /**\n   * You can use a custom element type for this component.\n   */\n  as: prop_types_default.a.elementType\n};\nListGroup_ListGroup.defaultProps = {\n  as: 'div',\n  variant: null\n};\nvar DecoratedListGroup = uncontrollable_default()(createBootstrapComponent(ListGroup_ListGroup, 'list-group'), {\n  activeKey: 'onSelect'\n});\nDecoratedListGroup.Item = src_ListGroupItem;\n/* harmony default export */ var src_ListGroup = (DecoratedListGroup);\n// CONCATENATED MODULE: ./src/Media.js\n\n\nvar Media_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Media.js\";\n\n\n\n\n\nvar Media_propTypes = {\n  /**\n   * @default 'media'\n   */\n  bsPrefix: prop_types_default.a.string,\n  as: prop_types_default.a.elementType\n};\nvar Media_defaultProps = {\n  as: 'div'\n};\nvar Media = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"as\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'media');\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n    ref: ref,\n    className: classnames_default()(className, prefix),\n    __source: {\n      fileName: Media_jsxFileName,\n      lineNumber: 25\n    },\n    __self: this\n  }));\n});\nMedia.displayName = 'Media';\nMedia.propTypes = Media_propTypes;\nMedia.defaultProps = Media_defaultProps;\nMedia.Body = createWithBsPrefix('media-body');\n/* harmony default export */ var src_Media = (Media);\n// EXTERNAL MODULE: ./node_modules/dom-helpers/events/index.js\nvar events = __webpack_require__(25);\nvar events_default = /*#__PURE__*/__webpack_require__.n(events);\n\n// EXTERNAL MODULE: ./node_modules/dom-helpers/ownerDocument.js\nvar ownerDocument = __webpack_require__(16);\nvar ownerDocument_default = /*#__PURE__*/__webpack_require__.n(ownerDocument);\n\n// EXTERNAL MODULE: ./node_modules/dom-helpers/util/inDOM.js\nvar inDOM = __webpack_require__(10);\nvar inDOM_default = /*#__PURE__*/__webpack_require__.n(inDOM);\n\n// EXTERNAL MODULE: ./node_modules/dom-helpers/util/scrollbarSize.js\nvar scrollbarSize = __webpack_require__(18);\nvar scrollbarSize_default = /*#__PURE__*/__webpack_require__.n(scrollbarSize);\n\n// EXTERNAL MODULE: ./node_modules/react-overlays/Modal.js\nvar react_overlays_Modal = __webpack_require__(56);\nvar Modal_default = /*#__PURE__*/__webpack_require__.n(react_overlays_Modal);\n\n// CONCATENATED MODULE: ./src/ModalBody.js\n\n/* harmony default export */ var ModalBody = (createWithBsPrefix('modal-body'));\n// CONCATENATED MODULE: ./src/ModalDialog.js\n\n\nvar ModalDialog_jsxFileName = \"/Users/jason/src/react-bootstrap/src/ModalDialog.js\";\n\n\n\n\nvar ModalDialog_propTypes = {\n  /** @default 'modal' */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * Specifies a large or small modal.\n   *\n   * @type ('sm'|'lg')\n   */\n  size: prop_types_default.a.string,\n\n  /**\n   * Specify whether the Component should be vertically centered\n   */\n  centered: prop_types_default.a.bool,\n\n  /**\n   * Allows scrolling the `<Modal.Body>` instead of the entire Modal when overflowing.\n   */\n  scrollable: prop_types_default.a.bool\n};\nvar ModalDialog = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      centered = _ref.centered,\n      size = _ref.size,\n      children = _ref.children,\n      scrollable = _ref.scrollable,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"centered\", \"size\", \"children\", \"scrollable\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'modal');\n  var dialogClass = bsPrefix + \"-dialog\";\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", _extends({}, props, {\n    ref: ref,\n    className: classnames_default()(dialogClass, className, size && bsPrefix + \"-\" + size, centered && dialogClass + \"-centered\", scrollable && dialogClass + \"-scrollable\"),\n    __source: {\n      fileName: ModalDialog_jsxFileName,\n      lineNumber: 38\n    },\n    __self: this\n  }), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", {\n    className: classnames_default()(bsPrefix + \"-content\"),\n    __source: {\n      fileName: ModalDialog_jsxFileName,\n      lineNumber: 49\n    },\n    __self: this\n  }, children));\n});\nModalDialog.displayName = 'ModalDialog';\nModalDialog.propTypes = ModalDialog_propTypes;\n/* harmony default export */ var src_ModalDialog = (ModalDialog);\n// CONCATENATED MODULE: ./src/ModalFooter.js\n\n/* harmony default export */ var ModalFooter = (createWithBsPrefix('modal-footer'));\n// CONCATENATED MODULE: ./src/ModalContext.js\n\nvar ModalContext = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createContext({\n  onHide: function onHide() {}\n});\n/* harmony default export */ var src_ModalContext = (ModalContext);\n// CONCATENATED MODULE: ./src/ModalHeader.js\n\n\nvar ModalHeader_jsxFileName = \"/Users/jason/src/react-bootstrap/src/ModalHeader.js\";\n\n\n\n\n\n\n\nvar ModalHeader_propTypes = {\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * Provides an accessible label for the close\n   * button. It is used for Assistive Technology when the label text is not\n   * readable.\n   */\n  closeLabel: prop_types_default.a.string,\n\n  /**\n   * Specify whether the Component should contain a close button\n   */\n  closeButton: prop_types_default.a.bool,\n\n  /**\n   * A Callback fired when the close button is clicked. If used directly inside\n   * a Modal component, the onHide will automatically be propagated up to the\n   * parent Modal `onHide`.\n   */\n  onHide: prop_types_default.a.func\n};\nvar ModalHeader_defaultProps = {\n  closeLabel: 'Close',\n  closeButton: false\n};\nvar ModalHeader = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      closeLabel = _ref.closeLabel,\n      closeButton = _ref.closeButton,\n      onHide = _ref.onHide,\n      className = _ref.className,\n      children = _ref.children,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"closeLabel\", \"closeButton\", \"onHide\", \"className\", \"children\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'modal-header');\n  var context = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(src_ModalContext);\n  var handleClick = useEventCallback_default()(function () {\n    if (context) context.onHide();\n    if (onHide) onHide();\n  });\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", _extends({\n    ref: ref\n  }, props, {\n    className: classnames_default()(className, bsPrefix),\n    __source: {\n      fileName: ModalHeader_jsxFileName,\n      lineNumber: 61\n    },\n    __self: this\n  }), children, closeButton && external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_CloseButton, {\n    label: closeLabel,\n    onClick: handleClick,\n    __source: {\n      fileName: ModalHeader_jsxFileName,\n      lineNumber: 65\n    },\n    __self: this\n  }));\n});\nModalHeader.displayName = 'ModalHeader';\nModalHeader.propTypes = ModalHeader_propTypes;\nModalHeader.defaultProps = ModalHeader_defaultProps;\n/* harmony default export */ var src_ModalHeader = (ModalHeader);\n// CONCATENATED MODULE: ./src/ModalTitle.js\n\n\nvar ModalTitle_DivStyledAsH4 = divWithClassName('h4');\n/* harmony default export */ var ModalTitle = (createWithBsPrefix('modal-title', {\n  Component: ModalTitle_DivStyledAsH4\n}));\n// EXTERNAL MODULE: ./node_modules/react-overlays/ModalManager.js\nvar ModalManager = __webpack_require__(37);\nvar ModalManager_default = /*#__PURE__*/__webpack_require__.n(ModalManager);\n\n// CONCATENATED MODULE: ./src/utils/BootstrapModalManager.js\n\n\n\n\n\nvar Selector = {\n  FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n  STICKY_CONTENT: '.sticky-top',\n  NAVBAR_TOGGLER: '.navbar-toggler'\n};\n\nvar BootstrapModalManager_BootstrapModalManager =\n/*#__PURE__*/\nfunction (_ModalManager) {\n  _inheritsLoose(BootstrapModalManager, _ModalManager);\n\n  function BootstrapModalManager() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _ModalManager.call.apply(_ModalManager, [this].concat(args)) || this;\n\n    _this.adjustAndStore = function (prop, element, adjust) {\n      var actual = element.style[prop];\n      element.dataset[prop] = actual;\n      style_default()(element, prop, parseFloat(style_default()(element, prop)) + adjust + \"px\");\n    };\n\n    _this.restore = function (prop, element) {\n      var value = element.dataset[prop];\n\n      if (value !== undefined) {\n        delete element.dataset[prop];\n        style_default()(element, prop, value);\n      }\n    };\n\n    return _this;\n  }\n\n  var _proto = BootstrapModalManager.prototype;\n\n  _proto.setContainerStyle = function setContainerStyle(containerState, container) {\n    var _this2 = this;\n\n    _ModalManager.prototype.setContainerStyle.call(this, containerState, container);\n\n    if (!containerState.overflowing) return;\n    var size = scrollbarSize_default()();\n    querySelectorAll_default()(container, Selector.FIXED_CONTENT).forEach(function (el) {\n      return _this2.adjustAndStore('paddingRight', el, size);\n    });\n    querySelectorAll_default()(container, Selector.STICKY_CONTENT).forEach(function (el) {\n      return _this2.adjustAndStore('margingRight', el, -size);\n    });\n    querySelectorAll_default()(container, Selector.NAVBAR_TOGGLER).forEach(function (el) {\n      return _this2.adjustAndStore('margingRight', el, size);\n    });\n  };\n\n  _proto.removeContainerStyle = function removeContainerStyle(containerState, container) {\n    var _this3 = this;\n\n    _ModalManager.prototype.removeContainerStyle.call(this, containerState, container);\n\n    querySelectorAll_default()(container, Selector.FIXED_CONTENT).forEach(function (el) {\n      return _this3.restore('paddingRight', el);\n    });\n    querySelectorAll_default()(container, Selector.STICKY_CONTENT).forEach(function (el) {\n      return _this3.restore('margingRight', el);\n    });\n    querySelectorAll_default()(container, Selector.NAVBAR_TOGGLER).forEach(function (el) {\n      return _this3.restore('margingRight', el);\n    });\n  };\n\n  return BootstrapModalManager;\n}(ModalManager_default.a);\n\n\n// CONCATENATED MODULE: ./src/Modal.js\n\n\n\nvar Modal_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Modal.js\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Modal_propTypes = {\n  /**\n   * @default 'modal'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * Render a large or small modal.\n   *\n   * @type ('sm'|'lg')\n   */\n  size: prop_types_default.a.string,\n\n  /**\n   * vertically center the Dialog in the window\n   */\n  centered: prop_types_default.a.bool,\n\n  /**\n   * Include a backdrop component. Specify 'static' for a backdrop that doesn't\n   * trigger an \"onHide\" when clicked.\n   */\n  backdrop: prop_types_default.a.oneOf(['static', true, false]),\n\n  /**\n   * Add an optional extra class name to .modal-backdrop\n   * It could end up looking like class=\"modal-backdrop foo-modal-backdrop in\".\n   */\n  backdropClassName: prop_types_default.a.string,\n\n  /**\n   * Close the modal when escape key is pressed\n   */\n  keyboard: prop_types_default.a.bool,\n\n  /**\n   * Allows scrolling the `<Modal.Body>` instead of the entire Modal when overflowing.\n   */\n  scrollable: prop_types_default.a.bool,\n\n  /**\n   * Open and close the Modal with a slide and fade animation.\n   */\n  animation: prop_types_default.a.bool,\n\n  /**\n   * A css class to apply to the Modal dialog DOM node.\n   */\n  dialogClassName: prop_types_default.a.string,\n\n  /**\n   * A Component type that provides the modal content Markup. This is a useful\n   * prop when you want to use your own styles and markup to create a custom\n   * modal component.\n   */\n  dialogAs: prop_types_default.a.elementType,\n\n  /**\n   * When `true` The modal will automatically shift focus to itself when it\n   * opens, and replace it to the last focused element when it closes.\n   * Generally this should never be set to false as it makes the Modal less\n   * accessible to assistive technologies, like screen-readers.\n   */\n  autoFocus: prop_types_default.a.bool,\n\n  /**\n   * When `true` The modal will prevent focus from leaving the Modal while\n   * open. Consider leaving the default value here, as it is necessary to make\n   * the Modal work well with assistive technologies, such as screen readers.\n   */\n  enforceFocus: prop_types_default.a.bool,\n\n  /**\n   * When `true` The modal will restore focus to previously focused element once\n   * modal is hidden\n   */\n  restoreFocus: prop_types_default.a.bool,\n\n  /**\n   * When `true` The modal will show itself.\n   */\n  show: prop_types_default.a.bool,\n\n  /**\n   * A callback fired when the Modal is opening.\n   */\n  onShow: prop_types_default.a.func,\n\n  /**\n   * A callback fired when the header closeButton or non-static backdrop is\n   * clicked. Required if either are specified.\n   */\n  onHide: prop_types_default.a.func,\n\n  /**\n   * A callback fired when the escape key, if specified in `keyboard`, is pressed.\n   */\n  onEscapeKeyDown: prop_types_default.a.func,\n\n  /**\n   * Callback fired before the Modal transitions in\n   */\n  onEnter: prop_types_default.a.func,\n\n  /**\n   * Callback fired as the Modal begins to transition in\n   */\n  onEntering: prop_types_default.a.func,\n\n  /**\n   * Callback fired after the Modal finishes transitioning in\n   */\n  onEntered: prop_types_default.a.func,\n\n  /**\n   * Callback fired right before the Modal transitions out\n   */\n  onExit: prop_types_default.a.func,\n\n  /**\n   * Callback fired as the Modal begins to transition out\n   */\n  onExiting: prop_types_default.a.func,\n\n  /**\n   * Callback fired after the Modal finishes transitioning out\n   */\n  onExited: prop_types_default.a.func,\n\n  /**\n   * A ModalManager instance used to track and manage the state of open\n   * Modals. Useful when customizing how modals interact within a container\n   */\n  manager: prop_types_default.a.object.isRequired,\n\n  /**\n   * @private\n   */\n  container: prop_types_default.a.any\n};\nvar Modal_defaultProps = {\n  show: false,\n  backdrop: true,\n  keyboard: true,\n  autoFocus: true,\n  enforceFocus: true,\n  restoreFocus: true,\n  animation: true,\n  dialogAs: src_ModalDialog,\n  manager: new BootstrapModalManager_BootstrapModalManager()\n};\n/* eslint-disable no-use-before-define, react/no-multi-comp */\n\nfunction DialogTransition(props) {\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Fade, _extends({}, props, {\n    __source: {\n      fileName: Modal_jsxFileName,\n      lineNumber: 176\n    },\n    __self: this\n  }));\n}\n\nfunction BackdropTransition(props) {\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Fade, _extends({}, props, {\n    __source: {\n      fileName: Modal_jsxFileName,\n      lineNumber: 180\n    },\n    __self: this\n  }));\n}\n/* eslint-enable no-use-before-define */\n\n\nvar Modal_Modal =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Modal, _React$Component);\n\n  function Modal(_props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, _props, context) || this;\n\n    _this.setModalRef = function (ref) {\n      _this._modal = ref;\n    };\n\n    _this.handleDialogMouseDown = function () {\n      _this._waitingForMouseUp = true;\n    };\n\n    _this.handleMouseUp = function (e) {\n      if (_this._waitingForMouseUp && e.target === _this._modal.dialog) {\n        _this._ignoreBackdropClick = true;\n      }\n\n      _this._waitingForMouseUp = false;\n    };\n\n    _this.handleClick = function (e) {\n      if (_this._ignoreBackdropClick || e.target !== e.currentTarget) {\n        _this._ignoreBackdropClick = false;\n        return;\n      }\n\n      _this.props.onHide();\n    };\n\n    _this.handleEnter = function (node) {\n      var _this$props;\n\n      if (node) {\n        node.style.display = 'block';\n\n        _this.updateDialogStyle(node);\n      }\n\n      for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        args[_key - 1] = arguments[_key];\n      }\n\n      if (_this.props.onEnter) (_this$props = _this.props).onEnter.apply(_this$props, [node].concat(args));\n    };\n\n    _this.handleEntering = function (node) {\n      var _this$props2;\n\n      for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n        args[_key2 - 1] = arguments[_key2];\n      }\n\n      if (_this.props.onEntering) (_this$props2 = _this.props).onEntering.apply(_this$props2, [node].concat(args)); // FIXME: This should work even when animation is disabled.\n\n      events_default.a.on(window, 'resize', _this.handleWindowResize);\n    };\n\n    _this.handleExited = function (node) {\n      var _this$props3;\n\n      if (node) node.style.display = ''; // RHL removes it sometimes\n\n      for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n        args[_key3 - 1] = arguments[_key3];\n      }\n\n      if (_this.props.onExited) (_this$props3 = _this.props).onExited.apply(_this$props3, args); // FIXME: This should work even when animation is disabled.\n\n      events_default.a.off(window, 'resize', _this.handleWindowResize);\n    };\n\n    _this.handleWindowResize = function () {\n      _this.updateDialogStyle(_this._modal.dialog);\n    };\n\n    _this.renderBackdrop = function (props) {\n      var _this$props4 = _this.props,\n          bsPrefix = _this$props4.bsPrefix,\n          backdropClassName = _this$props4.backdropClassName;\n      return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", _extends({}, props, {\n        className: classnames_default()(bsPrefix + \"-backdrop\", backdropClassName),\n        __source: {\n          fileName: Modal_jsxFileName,\n          lineNumber: 282\n        },\n        __self: this\n      }));\n    };\n\n    _this.state = {\n      style: {}\n    };\n    _this.modalContext = {\n      onHide: function onHide() {\n        return _this.props.onHide();\n      }\n    };\n    return _this;\n  }\n\n  var _proto = Modal.prototype;\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    // Clean up the listener if we need to.\n    events_default.a.off(window, 'resize', this.handleWindowResize);\n  };\n\n  _proto.updateDialogStyle = function updateDialogStyle(node) {\n    if (!inDOM_default.a) return;\n    var manager = this.props.manager;\n    var containerIsOverflowing = manager.isContainerOverflowing(this._modal);\n    var modalIsOverflowing = node.scrollHeight > ownerDocument_default()(node).documentElement.clientHeight;\n    this.setState({\n      style: {\n        paddingRight: containerIsOverflowing && !modalIsOverflowing ? scrollbarSize_default()() : undefined,\n        paddingLeft: !containerIsOverflowing && modalIsOverflowing ? scrollbarSize_default()() : undefined\n      }\n    });\n  };\n\n  _proto.render = function render() {\n    var _this$props5 = this.props,\n        bsPrefix = _this$props5.bsPrefix,\n        className = _this$props5.className,\n        style = _this$props5.style,\n        dialogClassName = _this$props5.dialogClassName,\n        children = _this$props5.children,\n        Dialog = _this$props5.dialogAs,\n        show = _this$props5.show,\n        animation = _this$props5.animation,\n        backdrop = _this$props5.backdrop,\n        keyboard = _this$props5.keyboard,\n        manager = _this$props5.manager,\n        onEscapeKeyDown = _this$props5.onEscapeKeyDown,\n        onShow = _this$props5.onShow,\n        onHide = _this$props5.onHide,\n        container = _this$props5.container,\n        autoFocus = _this$props5.autoFocus,\n        enforceFocus = _this$props5.enforceFocus,\n        restoreFocus = _this$props5.restoreFocus,\n        onEntered = _this$props5.onEntered,\n        onExit = _this$props5.onExit,\n        onExiting = _this$props5.onExiting,\n        _ = _this$props5.onExited,\n        _1 = _this$props5.onEntering,\n        _6 = _this$props5.onEnter,\n        _4 = _this$props5.onEntering,\n        _2 = _this$props5.backdropClassName,\n        props = _objectWithoutPropertiesLoose(_this$props5, [\"bsPrefix\", \"className\", \"style\", \"dialogClassName\", \"children\", \"dialogAs\", \"show\", \"animation\", \"backdrop\", \"keyboard\", \"manager\", \"onEscapeKeyDown\", \"onShow\", \"onHide\", \"container\", \"autoFocus\", \"enforceFocus\", \"restoreFocus\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"onEntering\", \"onEnter\", \"onEntering\", \"backdropClassName\"]);\n\n    var clickHandler = backdrop === true ? this.handleClick : null;\n\n    var baseModalStyle = _extends({}, style, this.state.style); // Sets `display` always block when `animation` is false\n\n\n    if (!animation) baseModalStyle.display = 'block';\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_ModalContext.Provider, {\n      value: this.modalContext,\n      __source: {\n        fileName: Modal_jsxFileName,\n        lineNumber: 332\n      },\n      __self: this\n    }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Modal_default.a, _extends({\n      show: show,\n      backdrop: backdrop,\n      container: container,\n      keyboard: keyboard,\n      autoFocus: autoFocus,\n      enforceFocus: enforceFocus,\n      restoreFocus: restoreFocus,\n      onEscapeKeyDown: onEscapeKeyDown,\n      onShow: onShow,\n      onHide: onHide,\n      onEntered: onEntered,\n      onExit: onExit,\n      onExiting: onExiting,\n      manager: manager,\n      ref: this.setModalRef,\n      style: baseModalStyle,\n      className: classnames_default()(className, bsPrefix),\n      containerClassName: bsPrefix + \"-open\",\n      transition: animation ? DialogTransition : undefined,\n      backdropTransition: animation ? BackdropTransition : undefined,\n      renderBackdrop: this.renderBackdrop,\n      onClick: clickHandler,\n      onMouseUp: this.handleMouseUp,\n      onEnter: this.handleEnter,\n      onEntering: this.handleEntering,\n      onExited: this.handleExited\n    }, {\n      __source: {\n        fileName: Modal_jsxFileName,\n        lineNumber: 333\n      },\n      __self: this\n    }), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Dialog, _extends({}, props, {\n      onMouseDown: this.handleDialogMouseDown,\n      className: dialogClassName,\n      __source: {\n        fileName: Modal_jsxFileName,\n        lineNumber: 363\n      },\n      __self: this\n    }), children)));\n  };\n\n  return Modal;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nModal_Modal.propTypes = Modal_propTypes;\nModal_Modal.defaultProps = Modal_defaultProps;\nvar DecoratedModal = createBootstrapComponent(Modal_Modal, 'modal');\nDecoratedModal.Body = ModalBody;\nDecoratedModal.Header = src_ModalHeader;\nDecoratedModal.Title = ModalTitle;\nDecoratedModal.Footer = ModalFooter;\nDecoratedModal.Dialog = src_ModalDialog;\nDecoratedModal.TRANSITION_DURATION = 300;\nDecoratedModal.BACKDROP_TRANSITION_DURATION = 150;\n/* harmony default export */ var src_Modal = (DecoratedModal);\n// EXTERNAL MODULE: ./node_modules/prop-types-extra/lib/all.js\nvar lib_all = __webpack_require__(34);\nvar all_default = /*#__PURE__*/__webpack_require__.n(lib_all);\n\n// CONCATENATED MODULE: ./src/NavItem.js\n\n\nvar NavItem_jsxFileName = \"/Users/jason/src/react-bootstrap/src/NavItem.js\";\n\n\n\n\nvar NavItem_propTypes = {\n  /**\n   * @default 'nav-item'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /** The ARIA role of the component */\n  role: prop_types_default.a.string,\n  as: prop_types_default.a.elementType\n};\nvar NavItem_defaultProps = {\n  as: 'div'\n};\nvar NavItem = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      children = _ref.children,\n      Component = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"children\", \"as\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'nav-item');\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n    ref: ref,\n    className: classnames_default()(className, bsPrefix),\n    __source: {\n      fileName: NavItem_jsxFileName,\n      lineNumber: 27\n    },\n    __self: this\n  }), children);\n});\nNavItem.displayName = 'NavItem';\nNavItem.propTypes = NavItem_propTypes;\nNavItem.defaultProps = NavItem_defaultProps;\n/* harmony default export */ var src_NavItem = (NavItem);\n// CONCATENATED MODULE: ./src/NavLink.js\n\n\nvar NavLink_jsxFileName = \"/Users/jason/src/react-bootstrap/src/NavLink.js\";\n\n\n\n\n\n\nvar NavLink_propTypes = {\n  /**\n   * @default 'nav-link'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * The active state of the NavItem item.\n   */\n  active: prop_types_default.a.bool,\n\n  /**\n   * The disabled state of the NavItem item.\n   */\n  disabled: prop_types_default.a.bool,\n\n  /**\n   * The ARIA role for the `NavLink`, In the context of a 'tablist' parent Nav,\n   * the role defaults to 'tab'\n   * */\n  role: prop_types_default.a.string,\n\n  /** The HTML href attribute for the `NavLink` */\n  href: prop_types_default.a.string,\n\n  /** A callback fired when the `NavLink` is selected.\n   *\n   * ```js\n   * function (eventKey: any, event: SyntheticEvent) {}\n   * ```\n   */\n  onSelect: prop_types_default.a.func,\n\n  /**\n   * Uniquely idenifies the `NavItem` amoungst its siblings,\n   * used to determine and control the active state ofthe parent `Nav`\n   */\n  eventKey: prop_types_default.a.any,\n\n  /** @default 'a' */\n  as: prop_types_default.a.elementType,\n\n  /** @private */\n  innerRef: prop_types_default.a.any\n};\nvar NavLink_defaultProps = {\n  disabled: false,\n  as: src_SafeAnchor\n};\nvar NavLink = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      disabled = _ref.disabled,\n      className = _ref.className,\n      href = _ref.href,\n      eventKey = _ref.eventKey,\n      onSelect = _ref.onSelect,\n      as = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"disabled\", \"className\", \"href\", \"eventKey\", \"onSelect\", \"as\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'nav-link');\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_AbstractNavItem, _extends({}, props, {\n    href: href,\n    ref: ref,\n    eventKey: eventKey,\n    as: as,\n    disabled: disabled,\n    onSelect: onSelect,\n    className: classnames_default()(className, bsPrefix, disabled && 'disabled'),\n    __source: {\n      fileName: NavLink_jsxFileName,\n      lineNumber: 68\n    },\n    __self: this\n  }));\n});\nNavLink.displayName = 'NavLink';\nNavLink.propTypes = NavLink_propTypes;\nNavLink.defaultProps = NavLink_defaultProps;\n/* harmony default export */ var src_NavLink = (NavLink);\n// CONCATENATED MODULE: ./src/Nav.js\n\n\nvar Nav_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Nav.js\";\n\n\n\n\n\n\n\n\n\n\n\nvar Nav_propTypes = {\n  /**\n   * @default 'nav'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /** @private */\n  navbarBsPrefix: prop_types_default.a.string,\n\n  /** @private */\n  cardHeaderBsPrefix: prop_types_default.a.string,\n\n  /**\n   * The visual variant of the nav items.\n   *\n   * @type {('tabs'|'pills')}\n   */\n  variant: prop_types_default.a.string,\n\n  /**\n   * Marks the NavItem with a matching `eventKey` (or `href` if present) as active.\n   *\n   * @type {string}\n   */\n  activeKey: prop_types_default.a.any,\n\n  /**\n   * Have all `NavItem`s to proportionatly fill all available width.\n   */\n  fill: prop_types_default.a.bool,\n\n  /**\n   * Have all `NavItem`s to evenly fill all available width.\n   *\n   * @type {boolean}\n   */\n  justify: all_default()(prop_types_default.a.bool, function (_ref) {\n    var justify = _ref.justify,\n        navbar = _ref.navbar;\n    return justify && navbar ? Error('justify navbar `Nav`s are not supported') : null;\n  }),\n\n  /**\n   * A callback fired when a NavItem is selected.\n   *\n   * ```js\n   * function (\n   *  Any eventKey,\n   *  SyntheticEvent event?\n   * )\n   * ```\n   */\n  onSelect: prop_types_default.a.func,\n\n  /**\n   * ARIA role for the Nav, in the context of a TabContainer, the default will\n   * be set to \"tablist\", but can be overridden by the Nav when set explicitly.\n   *\n   * When the role is \"tablist\", NavLink focus is managed according to\n   * the ARIA authoring practices for tabs:\n   * https://www.w3.org/TR/2013/WD-wai-aria-practices-20130307/#tabpanel\n   */\n  role: prop_types_default.a.string,\n\n  /**\n   * Apply styling an alignment for use in a Navbar. This prop will be set\n   * automatically when the Nav is used inside a Navbar.\n   */\n  navbar: prop_types_default.a.bool,\n  as: prop_types_default.a.elementType,\n\n  /** @private */\n  onKeyDown: prop_types_default.a.func\n};\nvar Nav_defaultProps = {\n  justify: false,\n  fill: false,\n  as: 'div'\n};\nvar Nav = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (uncontrolledProps, ref) {\n  var _classNames;\n\n  var _useUncontrolled = hook_default()(uncontrolledProps, {\n    activeKey: 'onSelect'\n  }),\n      as = _useUncontrolled.as,\n      bsPrefix = _useUncontrolled.bsPrefix,\n      variant = _useUncontrolled.variant,\n      fill = _useUncontrolled.fill,\n      justify = _useUncontrolled.justify,\n      navbar = _useUncontrolled.navbar,\n      className = _useUncontrolled.className,\n      children = _useUncontrolled.children,\n      activeKey = _useUncontrolled.activeKey,\n      props = _objectWithoutPropertiesLoose(_useUncontrolled, [\"as\", \"bsPrefix\", \"variant\", \"fill\", \"justify\", \"navbar\", \"className\", \"children\", \"activeKey\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'nav');\n  var navbarBsPrefix, cardHeaderBsPrefix;\n  var navbarContext = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(NavbarContext);\n  var cardContext = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(CardContext);\n\n  if (navbarContext) {\n    navbarBsPrefix = navbarContext.bsPrefix;\n    navbar = navbar == null ? true : navbar;\n  } else if (cardContext) {\n    cardHeaderBsPrefix = cardContext.cardHeaderBsPrefix;\n  }\n\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_AbstractNav, _extends({\n    as: as,\n    ref: ref,\n    activeKey: activeKey,\n    className: classnames_default()(className, (_classNames = {}, _classNames[bsPrefix] = !navbar, _classNames[navbarBsPrefix + \"-nav\"] = navbar, _classNames[cardHeaderBsPrefix + \"-\" + variant] = !!cardHeaderBsPrefix, _classNames[bsPrefix + \"-\" + variant] = !!variant, _classNames[bsPrefix + \"-fill\"] = fill, _classNames[bsPrefix + \"-justified\"] = justify, _classNames))\n  }, props, {\n    __source: {\n      fileName: Nav_jsxFileName,\n      lineNumber: 123\n    },\n    __self: this\n  }), children);\n});\nNav.displayName = 'Nav';\nNav.propTypes = Nav_propTypes;\nNav.defaultProps = Nav_defaultProps;\nNav.Item = src_NavItem;\nNav.Link = src_NavLink;\nNav._Nav = Nav; // for Testing until enzyme is working with context\n\n/* harmony default export */ var src_Nav = (Nav);\n// CONCATENATED MODULE: ./src/NavbarBrand.js\n\n\nvar NavbarBrand_jsxFileName = \"/Users/jason/src/react-bootstrap/src/NavbarBrand.js\";\n\n\n\n\nvar NavbarBrand_propTypes = {\n  /** @default 'navbar' */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * An href, when provided the Brand will render as an `<a>` element (unless `as` is provided).\n   */\n  href: prop_types_default.a.string,\n\n  /**\n   * Set a custom element for this component.\n   */\n  as: prop_types_default.a.elementType\n};\nvar NavbarBrand = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      as = _ref.as,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"as\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'navbar-brand');\n  var Component = as || (props.href ? 'a' : 'span');\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n    ref: ref,\n    className: classnames_default()(className, bsPrefix),\n    __source: {\n      fileName: NavbarBrand_jsxFileName,\n      lineNumber: 29\n    },\n    __self: this\n  }));\n});\nNavbarBrand.displayName = 'NavbarBrand';\nNavbarBrand.propTypes = NavbarBrand_propTypes;\n/* harmony default export */ var src_NavbarBrand = (NavbarBrand);\n// CONCATENATED MODULE: ./src/NavbarCollapse.js\n\n\nvar NavbarCollapse_jsxFileName = \"/Users/jason/src/react-bootstrap/src/NavbarCollapse.js\";\n\n\n\n\n\nvar NavbarCollapse_propTypes = {\n  /** @default 'navbar-collapse' */\n  bsPrefix: prop_types_default.a.string\n};\nvar NavbarCollapse = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var children = _ref.children,\n      bsPrefix = _ref.bsPrefix,\n      props = _objectWithoutPropertiesLoose(_ref, [\"children\", \"bsPrefix\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'navbar-collapse');\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(NavbarContext.Consumer, {\n    __source: {\n      fileName: NavbarCollapse_jsxFileName,\n      lineNumber: 17\n    },\n    __self: this\n  }, function (context) {\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Collapse, _extends({\n      in: !!(context && context.expanded)\n    }, props, {\n      __source: {\n        fileName: NavbarCollapse_jsxFileName,\n        lineNumber: 19\n      },\n      __self: this\n    }), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", {\n      ref: ref,\n      className: bsPrefix,\n      __source: {\n        fileName: NavbarCollapse_jsxFileName,\n        lineNumber: 20\n      },\n      __self: this\n    }, children));\n  });\n});\nNavbarCollapse.displayName = 'NavbarCollapse';\nNavbarCollapse.propTypes = NavbarCollapse_propTypes;\n/* harmony default export */ var src_NavbarCollapse = (NavbarCollapse);\n// CONCATENATED MODULE: ./src/NavbarToggle.js\n\n\nvar NavbarToggle_jsxFileName = \"/Users/jason/src/react-bootstrap/src/NavbarToggle.js\";\n\n\n\n\n\n\nvar NavbarToggle_propTypes = {\n  /** @default 'navbar-toggler' */\n  bsPrefix: prop_types_default.a.string,\n\n  /** An accessible ARIA label for the toggler button. */\n  label: prop_types_default.a.string,\n\n  /** @private */\n  onClick: prop_types_default.a.func,\n\n  /**\n   * The toggle content. When empty, the default toggle will be rendered.\n   */\n  children: prop_types_default.a.node,\n  as: prop_types_default.a.elementType\n};\nvar NavbarToggle_defaultProps = {\n  label: 'Toggle navigation',\n  as: 'button'\n};\nvar NavbarToggle = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (_ref, ref) {\n  var bsPrefix = _ref.bsPrefix,\n      className = _ref.className,\n      children = _ref.children,\n      label = _ref.label,\n      Component = _ref.as,\n      onClick = _ref.onClick,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"children\", \"label\", \"as\", \"onClick\"]);\n\n  bsPrefix = useBootstrapPrefix(bsPrefix, 'navbar-toggler');\n\n  var _ref2 = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(NavbarContext) || {},\n      onToggle = _ref2.onToggle,\n      expanded = _ref2.expanded;\n\n  var handleClick = useEventCallback_default()(function (e) {\n    if (onClick) onClick(e);\n    if (onToggle) onToggle();\n  });\n\n  if (Component === 'button') {\n    props.type = 'button';\n  }\n\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n    ref: ref,\n    onClick: handleClick,\n    \"aria-label\": label,\n    className: classnames_default()(className, bsPrefix, !!expanded && 'collapsed'),\n    __source: {\n      fileName: NavbarToggle_jsxFileName,\n      lineNumber: 51\n    },\n    __self: this\n  }), children || external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"span\", {\n    className: bsPrefix + \"-icon\",\n    __source: {\n      fileName: NavbarToggle_jsxFileName,\n      lineNumber: 58\n    },\n    __self: this\n  }));\n});\nNavbarToggle.displayName = 'NavbarToggle';\nNavbarToggle.propTypes = NavbarToggle_propTypes;\nNavbarToggle.defaultProps = NavbarToggle_defaultProps;\n/* harmony default export */ var src_NavbarToggle = (NavbarToggle);\n// CONCATENATED MODULE: ./src/Navbar.js\n\n\n\nvar Navbar_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Navbar.js\";\n\n\n\n\n\n\n\n\n\n\n\nvar Navbar_propTypes = {\n  /** @default 'navbar' */\n  bsPrefix: prop_types_default.a.string.isRequired,\n\n  /**\n   * The general visual variant a the Navbar.\n   * Use in combination with the `bg` prop, `background-color` utilities,\n   * or your own background styles.\n   *\n   * @type {('light'|'dark')}\n   */\n  variant: prop_types_default.a.string,\n\n  /**\n   * The breakpoint, below which, the Navbar will collapse.\n   * When `true` the Navbar will always be expanded regardless of screen size.\n   */\n  expand: prop_types_default.a.oneOf([true, 'sm', 'md', 'lg', 'xl']).isRequired,\n\n  /**\n   * A convenience prop for adding `bg-*` utility classes since they are so commonly used here.\n   * `light` and `dark` are common choices but any `bg-*` class is supported, including any custom ones you might define.\n   *\n   * Pairs nicely with the `variant` prop.\n   */\n  bg: prop_types_default.a.string,\n\n  /**\n   * Create a fixed navbar along the top or bottom of the screen, that scrolls with the\n   * page. A convenience prop for the `fixed-*` positioning classes.\n   */\n  fixed: prop_types_default.a.oneOf(['top', 'bottom']),\n\n  /**\n   * Position the navbar at the top or bottom of the viewport,\n   * but only after scrolling past it. . A convenience prop for the `sticky-*` positioning classes.\n   *\n   *  __Not supported in <= IE11 and other older browsers without a polyfill__\n   */\n  sticky: prop_types_default.a.oneOf(['top', 'bottom']),\n\n  /**\n   * Set a custom element for this component.\n   */\n  as: prop_types_default.a.elementType,\n\n  /**\n   * A callback fired when the `<Navbar>` body collapses or expands. Fired when\n   * a `<Navbar.Toggle>` is clicked and called with the new `expanded`\n   * boolean value.\n   *\n   * @controllable expanded\n   */\n  onToggle: prop_types_default.a.func,\n\n  /**\n   * A callback fired when a descendant of a child `<Nav>` is selected. Should\n   * be used to execute complex closing or other miscellaneous actions desired\n   * after selecting a descendant of `<Nav>`. Does nothing if no `<Nav>` or `<Nav>`\n   * descendants exist. The callback is called with an eventKey, which is a\n   * prop from the selected `<Nav>` descendant, and an event.\n   *\n   * ```js\n   * function (\n   *  eventKey: mixed,\n   *  event?: SyntheticEvent\n   * )\n   * ```\n   *\n   * For basic closing behavior after all `<Nav>` descendant onSelect events in\n   * mobile viewports, try using collapseOnSelect.\n   *\n   * Note: If you are manually closing the navbar using this `OnSelect` prop,\n   * ensure that you are setting `expanded` to false and not *toggling* between\n   * true and false.\n   */\n  onSelect: prop_types_default.a.func,\n\n  /**\n   * Toggles `expanded` to `false` after the onSelect event of a descendant of a\n   * child `<Nav>` fires. Does nothing if no `<Nav>` or `<Nav>` descendants exist.\n   *\n   * Manually controlling `expanded` via the onSelect callback is recommended instead,\n   * for more complex operations that need to be executed after\n   * the `select` event of `<Nav>` descendants.\n   */\n  collapseOnSelect: prop_types_default.a.bool,\n\n  /**\n   * Controls the visiblity of the navbar body\n   *\n   * @controllable onToggle\n   */\n  expanded: prop_types_default.a.bool,\n\n  /**\n   * The ARIA role for the navbar, will default to 'navigation' for\n   * Navbars whose `as` is something other than `<nav>`.\n   *\n   * @default 'navigation'\n   */\n  role: prop_types_default.a.string\n};\nvar Navbar_defaultProps = {\n  as: 'nav',\n  expand: true,\n  variant: 'light',\n  collapseOnSelect: false\n};\n\nvar Navbar_Navbar =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Navbar, _React$Component);\n\n  function Navbar() {\n    var _this;\n\n    for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n      _args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(_args)) || this;\n\n    _this.handleCollapse = function () {\n      var _this$props = _this.props,\n          onToggle = _this$props.onToggle,\n          expanded = _this$props.expanded,\n          collapseOnSelect = _this$props.collapseOnSelect,\n          onSelect = _this$props.onSelect;\n      if (onSelect) onSelect.apply(void 0, arguments);\n\n      if (collapseOnSelect && expanded) {\n        onToggle(false);\n      }\n    };\n\n    _this.handleToggle = function () {\n      var _this$props2 = _this.props,\n          onToggle = _this$props2.onToggle,\n          expanded = _this$props2.expanded;\n      onToggle(!expanded);\n    };\n\n    _this.state = {\n      navbarContext: {\n        onToggle: _this.handleToggle\n      }\n    };\n    return _this;\n  }\n\n  Navbar.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n    var bsPrefix = _ref.bsPrefix,\n        expanded = _ref.expanded;\n    return {\n      navbarContext: _extends({}, prevState.navbarContext, {\n        bsPrefix: bsPrefix,\n        expanded: expanded\n      })\n    };\n  };\n\n  var _proto = Navbar.prototype;\n\n  _proto.render = function render() {\n    var _this$props3 = this.props,\n        bsPrefix = _this$props3.bsPrefix,\n        expand = _this$props3.expand,\n        variant = _this$props3.variant,\n        bg = _this$props3.bg,\n        fixed = _this$props3.fixed,\n        sticky = _this$props3.sticky,\n        className = _this$props3.className,\n        children = _this$props3.children,\n        Component = _this$props3.as,\n        _1 = _this$props3.expanded,\n        _2 = _this$props3.onToggle,\n        _3 = _this$props3.onSelect,\n        _4 = _this$props3.collapseOnSelect,\n        props = _objectWithoutPropertiesLoose(_this$props3, [\"bsPrefix\", \"expand\", \"variant\", \"bg\", \"fixed\", \"sticky\", \"className\", \"children\", \"as\", \"expanded\", \"onToggle\", \"onSelect\", \"collapseOnSelect\"]); // will result in some false positives but that seems better\n    // than false negatives. strict `undefined` check allows explicit\n    // \"nulling\" of the role if the user really doesn't want one\n\n\n    if (props.role === undefined && Component !== 'nav') {\n      props.role = 'navigation';\n    }\n\n    var expandClass = bsPrefix + \"-expand\";\n    if (typeof expand === 'string') expandClass = expandClass + \"-\" + expand;\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(NavbarContext.Provider, {\n      value: this.state.navbarContext,\n      __source: {\n        fileName: Navbar_jsxFileName,\n        lineNumber: 190\n      },\n      __self: this\n    }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_SelectableContext.Provider, {\n      value: this.handleCollapse,\n      __source: {\n        fileName: Navbar_jsxFileName,\n        lineNumber: 191\n      },\n      __self: this\n    }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n      className: classnames_default()(className, bsPrefix, expand && expandClass, variant && bsPrefix + \"-\" + variant, bg && \"bg-\" + bg, sticky && \"sticky-\" + sticky, fixed && \"fixed-\" + fixed),\n      __source: {\n        fileName: Navbar_jsxFileName,\n        lineNumber: 192\n      },\n      __self: this\n    }), children)));\n  };\n\n  return Navbar;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nNavbar_Navbar.propTypes = Navbar_propTypes;\nNavbar_Navbar.defaultProps = Navbar_defaultProps;\nvar DecoratedNavbar = createBootstrapComponent(uncontrollable_default()(Navbar_Navbar, {\n  expanded: 'onToggle'\n}), 'navbar');\nDecoratedNavbar.Brand = src_NavbarBrand;\nDecoratedNavbar.Toggle = src_NavbarToggle;\nDecoratedNavbar.Collapse = src_NavbarCollapse;\nDecoratedNavbar.Text = createWithBsPrefix('navbar-text', {\n  Component: 'span'\n});\n/* harmony default export */ var src_Navbar = (DecoratedNavbar);\n// CONCATENATED MODULE: ./src/NavDropdown.js\n\n\n\nvar NavDropdown_jsxFileName = \"/Users/jason/src/react-bootstrap/src/NavDropdown.js\";\n\n\n\n\n\nvar NavDropdown_propTypes = {\n  /**\n   * An html id attribute for the Toggle button, necessary for assistive technologies, such as screen readers.\n   * @type {string|number}\n   * @required\n   */\n  id: prop_types_default.a.any,\n\n  /** An `onClick` handler passed to the Toggle component */\n  onClick: prop_types_default.a.func,\n\n  /** The content of the non-toggle Button.  */\n  title: prop_types_default.a.node.isRequired,\n\n  /** Disables the toggle NavLink  */\n  disabled: prop_types_default.a.bool,\n\n  /** Style the toggle NavLink as active  */\n  active: prop_types_default.a.bool,\n\n  /** An ARIA accessible role applied to the Menu component. When set to 'menu', The dropdown */\n  menuRole: prop_types_default.a.string,\n\n  /**\n   *  Which event when fired outside the component will cause it to be closed.\n   *\n   * _see [DropdownMenu](#menu-props) for more details_\n   */\n  rootCloseEvent: prop_types_default.a.string,\n\n  /** @ignore */\n  bsPrefix: prop_types_default.a.string\n};\n\nvar NavDropdown_NavDropdown =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(NavDropdown, _React$Component);\n\n  function NavDropdown() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = NavDropdown.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        id = _this$props.id,\n        title = _this$props.title,\n        children = _this$props.children,\n        bsPrefix = _this$props.bsPrefix,\n        rootCloseEvent = _this$props.rootCloseEvent,\n        menuRole = _this$props.menuRole,\n        disabled = _this$props.disabled,\n        active = _this$props.active,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"id\", \"title\", \"children\", \"bsPrefix\", \"rootCloseEvent\", \"menuRole\", \"disabled\", \"active\"]);\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Dropdown, _extends({}, props, {\n      as: src_NavItem,\n      __source: {\n        fileName: NavDropdown_jsxFileName,\n        lineNumber: 57\n      },\n      __self: this\n    }), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Dropdown.Toggle, {\n      id: id,\n      eventKey: null,\n      active: active,\n      disabled: disabled,\n      childBsPrefix: bsPrefix,\n      as: src_NavLink,\n      __source: {\n        fileName: NavDropdown_jsxFileName,\n        lineNumber: 58\n      },\n      __self: this\n    }, title), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Dropdown.Menu, {\n      role: menuRole,\n      rootCloseEvent: rootCloseEvent,\n      __source: {\n        fileName: NavDropdown_jsxFileName,\n        lineNumber: 69\n      },\n      __self: this\n    }, children));\n  };\n\n  return NavDropdown;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nNavDropdown_NavDropdown.propTypes = NavDropdown_propTypes;\nNavDropdown_NavDropdown.Item = src_Dropdown.Item;\nNavDropdown_NavDropdown.Divider = src_Dropdown.Divider;\nNavDropdown_NavDropdown.Header = src_Dropdown.Header;\n/* harmony default export */ var src_NavDropdown = (NavDropdown_NavDropdown);\n// EXTERNAL MODULE: ./node_modules/react-overlays/Overlay.js\nvar Overlay = __webpack_require__(57);\nvar Overlay_default = /*#__PURE__*/__webpack_require__.n(Overlay);\n\n// CONCATENATED MODULE: ./src/Overlay.js\n\n\nvar Overlay_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Overlay.js\";\n\n\n\n\n\n\n\nvar Overlay_propTypes = {\n  /**\n   * A component instance, DOM node, or function that returns either.\n   * The `container` element will have the Overlay appended to it via a React portal.\n   */\n  container: prop_types_default.a.oneOfType([lib[\"componentOrElement\"], prop_types_default.a.func]),\n\n  /**\n   * A component instance, DOM node, or function that returns either.\n   * The overlay will be positioned in relation to the `target`\n   */\n  target: prop_types_default.a.oneOfType([lib[\"componentOrElement\"], prop_types_default.a.func]),\n\n  /**\n   * Set the visibility of the Overlay\n   */\n  show: prop_types_default.a.bool,\n\n  /**\n   * A set of popper options and props passed directly to react-popper's Popper component.\n   */\n  popperConfig: prop_types_default.a.object,\n\n  /**\n   * Specify whether the overlay should trigger onHide when the user clicks outside the overlay\n   */\n  rootClose: prop_types_default.a.bool,\n\n  /**\n   * Specify event for triggering a \"root close\" toggle.\n   */\n  rootCloseEvent: prop_types_default.a.oneOf(['click', 'mousedown']),\n\n  /**\n   * A callback invoked by the overlay when it wishes to be hidden. Required if\n   * `rootClose` is specified.\n   */\n  onHide: prop_types_default.a.func,\n\n  /**\n   * Animate the entering and exiting of the Ovelay. `true` will use the `<Fade>` transition,\n   * or a custom react-transition-group `<Transition>` component can be provided.\n   */\n  transition: prop_types_default.a.oneOfType([prop_types_default.a.bool, lib[\"elementType\"]]),\n\n  /**\n   * Callback fired before the Overlay transitions in\n   */\n  onEnter: prop_types_default.a.func,\n\n  /**\n   * Callback fired as the Overlay begins to transition in\n   */\n  onEntering: prop_types_default.a.func,\n\n  /**\n   * Callback fired after the Overlay finishes transitioning in\n   */\n  onEntered: prop_types_default.a.func,\n\n  /**\n   * Callback fired right before the Overlay transitions out\n   */\n  onExit: prop_types_default.a.func,\n\n  /**\n   * Callback fired as the Overlay begins to transition out\n   */\n  onExiting: prop_types_default.a.func,\n\n  /**\n   * Callback fired after the Overlay finishes transitioning out\n   */\n  onExited: prop_types_default.a.func,\n\n  /**\n   * The placement of the OVerlay in relation to it's `target`.\n   */\n  placement: prop_types_default.a.oneOf(['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'])\n};\nvar Overlay_defaultProps = {\n  transition: src_Fade,\n  rootClose: false,\n  show: false,\n  placement: 'top'\n};\n\nfunction wrapRefs(props, arrowProps) {\n  var ref = props.ref;\n  var aRef = arrowProps.ref;\n\n  props.ref = ref.__wrapped || (ref.__wrapped = function (r) {\n    return ref(Object(external_root_ReactDOM_commonjs2_react_dom_commonjs_react_dom_amd_react_dom_[\"findDOMNode\"])(r));\n  });\n\n  arrowProps.ref = aRef.__wrapped || (aRef.__wrapped = function (r) {\n    return aRef(Object(external_root_ReactDOM_commonjs2_react_dom_commonjs_react_dom_amd_react_dom_[\"findDOMNode\"])(r));\n  });\n}\n\nfunction Overlay_Overlay(_ref) {\n  var overlay = _ref.children,\n      transition = _ref.transition,\n      outerProps = _objectWithoutPropertiesLoose(_ref, [\"children\", \"transition\"]);\n\n  transition = transition === true ? src_Fade : transition || null;\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Overlay_default.a, _extends({}, outerProps, {\n    transition: transition,\n    __source: {\n      fileName: Overlay_jsxFileName,\n      lineNumber: 127\n    },\n    __self: this\n  }), function (_ref2) {\n    var overlayProps = _ref2.props,\n        arrowProps = _ref2.arrowProps,\n        show = _ref2.show,\n        props = _objectWithoutPropertiesLoose(_ref2, [\"props\", \"arrowProps\", \"show\"]);\n\n    wrapRefs(overlayProps, arrowProps);\n    if (typeof overlay === 'function') return overlay(_extends({}, props, overlayProps, {\n      show: show,\n      arrowProps: arrowProps\n    }));\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.cloneElement(overlay, _extends({}, props, overlayProps, {\n      arrowProps: arrowProps,\n      className: classnames_default()(overlay.props.className, !transition && show && 'show'),\n      style: _extends({}, overlay.props.style, overlayProps.style)\n    }));\n  });\n}\n\nOverlay_Overlay.propTypes = Overlay_propTypes;\nOverlay_Overlay.defaultProps = Overlay_defaultProps;\n/* harmony default export */ var src_Overlay = (Overlay_Overlay);\n// EXTERNAL MODULE: ./node_modules/dom-helpers/query/contains.js\nvar contains = __webpack_require__(22);\nvar contains_default = /*#__PURE__*/__webpack_require__.n(contains);\n\n// CONCATENATED MODULE: ./src/OverlayTrigger.js\n\n\n\nvar OverlayTrigger_jsxFileName = \"/Users/jason/src/react-bootstrap/src/OverlayTrigger.js\";\n\n\n\n\n\n\n\nvar OverlayTrigger_RefHolder =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(RefHolder, _React$Component);\n\n  function RefHolder() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = RefHolder.prototype;\n\n  _proto.render = function render() {\n    return this.props.children;\n  };\n\n  return RefHolder;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nvar normalizeDelay = function normalizeDelay(delay) {\n  return delay && typeof delay === 'object' ? delay : {\n    show: delay,\n    hide: delay\n  };\n};\n\nvar triggerType = prop_types_default.a.oneOf(['click', 'hover', 'focus']);\nvar OverlayTrigger_propTypes = {\n  children: prop_types_default.a.element.isRequired,\n\n  /**\n   * Specify which action or actions trigger Overlay visibility\n   *\n   * @type {'hover' | 'click' |'focus' | Array<'hover' | 'click' |'focus'>}\n   */\n  trigger: prop_types_default.a.oneOfType([triggerType, prop_types_default.a.arrayOf(triggerType)]),\n\n  /**\n   * A millisecond delay amount to show and hide the Overlay once triggered\n   */\n  delay: prop_types_default.a.oneOfType([prop_types_default.a.number, prop_types_default.a.shape({\n    show: prop_types_default.a.number,\n    hide: prop_types_default.a.number\n  })]),\n\n  /**\n   * The initial visibility state of the Overlay. For more nuanced visibility\n   * control, consider using the Overlay component directly.\n   */\n  defaultShow: prop_types_default.a.bool,\n\n  /**\n   * An element or text to overlay next to the target.\n   */\n  overlay: prop_types_default.a.oneOfType([prop_types_default.a.func, prop_types_default.a.element.isRequired]),\n\n  /**\n   * A Popper.js config object passed to the the underlying popper instance.\n   */\n  popperConfig: prop_types_default.a.object,\n  // Overridden props from `<Overlay>`.\n\n  /**\n   * @private\n   */\n  target: prop_types_default.a.oneOf([null]),\n\n  /**\n   * @private\n   */\n  onHide: prop_types_default.a.oneOf([null]),\n\n  /**\n   * @private\n   */\n  show: prop_types_default.a.oneOf([null])\n};\nvar OverlayTrigger_defaultProps = {\n  defaultOverlayShown: false,\n  trigger: ['hover', 'focus']\n}; // eslint-disable-next-line react/no-multi-comp\n\nvar OverlayTrigger_OverlayTrigger =\n/*#__PURE__*/\nfunction (_React$Component2) {\n  _inheritsLoose(OverlayTrigger, _React$Component2);\n\n  function OverlayTrigger(props, context) {\n    var _this;\n\n    _this = _React$Component2.call(this, props, context) || this;\n\n    _this.getTarget = function () {\n      return external_root_ReactDOM_commonjs2_react_dom_commonjs_react_dom_amd_react_dom_default.a.findDOMNode(_this.trigger.current);\n    };\n\n    _this.handleShow = function () {\n      clearTimeout(_this._timeout);\n      _this._hoverState = 'show';\n      var delay = normalizeDelay(_this.props.delay);\n\n      if (!delay.show) {\n        _this.show();\n\n        return;\n      }\n\n      _this._timeout = setTimeout(function () {\n        if (_this._hoverState === 'show') _this.show();\n      }, delay.show);\n    };\n\n    _this.handleHide = function () {\n      clearTimeout(_this._timeout);\n      _this._hoverState = 'hide';\n      var delay = normalizeDelay(_this.props.delay);\n\n      if (!delay.hide) {\n        _this.hide();\n\n        return;\n      }\n\n      _this._timeout = setTimeout(function () {\n        if (_this._hoverState === 'hide') _this.hide();\n      }, delay.hide);\n    };\n\n    _this.handleFocus = function (e) {\n      var _this$getChildProps = _this.getChildProps(),\n          onFocus = _this$getChildProps.onFocus;\n\n      _this.handleShow(e);\n\n      if (onFocus) onFocus(e);\n    };\n\n    _this.handleBlur = function (e) {\n      var _this$getChildProps2 = _this.getChildProps(),\n          onBlur = _this$getChildProps2.onBlur;\n\n      _this.handleHide(e);\n\n      if (onBlur) onBlur(e);\n    };\n\n    _this.handleClick = function (e) {\n      var _this$getChildProps3 = _this.getChildProps(),\n          onClick = _this$getChildProps3.onClick;\n\n      if (_this.state.show) _this.hide();else _this.show();\n      if (onClick) onClick(e);\n    };\n\n    _this.handleMouseOver = function (e) {\n      _this.handleMouseOverOut(_this.handleShow, e, 'fromElement');\n    };\n\n    _this.handleMouseOut = function (e) {\n      return _this.handleMouseOverOut(_this.handleHide, e, 'toElement');\n    };\n\n    _this.trigger = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createRef();\n    _this.state = {\n      show: !!props.defaultShow\n    }; // We add aria-describedby in the case where the overlay is a role=\"tooltip\"\n    // for other cases describedby isn't appropriate (e.g. a popover with inputs) so we don't add it.\n\n    _this.ariaModifier = {\n      enabled: true,\n      order: 900,\n      fn: function fn(data) {\n        var popper = data.instance.popper;\n\n        var target = _this.getTarget();\n\n        if (!_this.state.show || !target) return data;\n        var role = popper.getAttribute('role') || '';\n\n        if (popper.id && role.toLowerCase() === 'tooltip') {\n          target.setAttribute('aria-describedby', popper.id);\n        }\n\n        return data;\n      }\n    };\n    return _this;\n  }\n\n  var _proto2 = OverlayTrigger.prototype;\n\n  _proto2.componentWillUnmount = function componentWillUnmount() {\n    clearTimeout(this._timeout);\n  };\n\n  _proto2.getChildProps = function getChildProps() {\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Children.only(this.props.children).props;\n  };\n\n  // Simple implementation of mouseEnter and mouseLeave.\n  // React's built version is broken: https://github.com/facebook/react/issues/4251\n  // for cases when the trigger is disabled and mouseOut/Over can cause flicker\n  // moving from one child element to another.\n  _proto2.handleMouseOverOut = function handleMouseOverOut(handler, e, relatedNative) {\n    var target = e.currentTarget;\n    var related = e.relatedTarget || e.nativeEvent[relatedNative];\n\n    if ((!related || related !== target) && !contains_default()(target, related)) {\n      handler(e);\n    }\n  };\n\n  _proto2.hide = function hide() {\n    this.setState({\n      show: false\n    });\n  };\n\n  _proto2.show = function show() {\n    this.setState({\n      show: true\n    });\n  };\n\n  _proto2.render = function render() {\n    var _this$props = this.props,\n        trigger = _this$props.trigger,\n        overlay = _this$props.overlay,\n        children = _this$props.children,\n        _this$props$popperCon = _this$props.popperConfig,\n        popperConfig = _this$props$popperCon === void 0 ? {} : _this$props$popperCon,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"trigger\", \"overlay\", \"children\", \"popperConfig\"]);\n\n    delete props.delay;\n    delete props.defaultShow;\n    var child = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Children.only(children);\n    var triggerProps = {};\n    var triggers = trigger == null ? [] : [].concat(trigger);\n\n    if (triggers.indexOf('click') !== -1) {\n      triggerProps.onClick = this.handleClick;\n    }\n\n    if (triggers.indexOf('focus') !== -1) {\n      triggerProps.onFocus = this.handleShow;\n      triggerProps.onBlur = this.handleHide;\n    }\n\n    if (triggers.indexOf('hover') !== -1) {\n       false ? undefined : void 0;\n      triggerProps.onMouseOver = this.handleMouseOver;\n      triggerProps.onMouseOut = this.handleMouseOut;\n    }\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Fragment, null, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(OverlayTrigger_RefHolder, {\n      ref: this.trigger,\n      __source: {\n        fileName: OverlayTrigger_jsxFileName,\n        lineNumber: 240\n      },\n      __self: this\n    }, Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"cloneElement\"])(child, triggerProps)), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Overlay, _extends({}, props, {\n      popperConfig: _extends({}, popperConfig, {\n        modifiers: _extends({}, popperConfig.modifiers, {\n          ariaModifier: this.ariaModifier\n        })\n      }),\n      show: this.state.show,\n      onHide: this.handleHide,\n      target: this.getTarget,\n      __source: {\n        fileName: OverlayTrigger_jsxFileName,\n        lineNumber: 243\n      },\n      __self: this\n    }), overlay));\n  };\n\n  return OverlayTrigger;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nOverlayTrigger_OverlayTrigger.propTypes = OverlayTrigger_propTypes;\nOverlayTrigger_OverlayTrigger.defaultProps = OverlayTrigger_defaultProps;\n/* harmony default export */ var src_OverlayTrigger = (OverlayTrigger_OverlayTrigger);\n// CONCATENATED MODULE: ./src/PageItem.js\n\n\n\nvar PageItem_jsxFileName = \"/Users/jason/src/react-bootstrap/src/PageItem.js\";\n\n/* eslint-disable react/no-multi-comp */\n\n\n\n\nvar PageItem_propTypes = {\n  /** Disables the PageItem */\n  disabled: prop_types_default.a.bool,\n\n  /** Styles PageItem as active, and renders a `<span>` instead of an `<a>`. */\n  active: prop_types_default.a.bool,\n\n  /** An accessible label indicating the active state.. */\n  activeLabel: prop_types_default.a.string\n};\nvar PageItem_defaultProps = {\n  active: false,\n  disabled: false,\n  activeLabel: '(current)'\n};\nfunction PageItem(_ref) {\n  var active = _ref.active,\n      disabled = _ref.disabled,\n      className = _ref.className,\n      style = _ref.style,\n      activeLabel = _ref.activeLabel,\n      children = _ref.children,\n      props = _objectWithoutPropertiesLoose(_ref, [\"active\", \"disabled\", \"className\", \"style\", \"activeLabel\", \"children\"]);\n\n  var Component = active || disabled ? 'span' : src_SafeAnchor;\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"li\", {\n    style: style,\n    className: classnames_default()(className, 'page-item', {\n      active: active,\n      disabled: disabled\n    }),\n    __source: {\n      fileName: PageItem_jsxFileName,\n      lineNumber: 36\n    },\n    __self: this\n  }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({\n    className: \"page-link\",\n    disabled: disabled\n  }, props, {\n    __source: {\n      fileName: PageItem_jsxFileName,\n      lineNumber: 40\n    },\n    __self: this\n  }), children, active && activeLabel && external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"span\", {\n    className: \"sr-only\",\n    __source: {\n      fileName: PageItem_jsxFileName,\n      lineNumber: 43\n    },\n    __self: this\n  }, activeLabel)));\n}\nPageItem.propTypes = PageItem_propTypes;\nPageItem.defaultProps = PageItem_defaultProps;\n\nfunction createButton(name, defaultValue, label) {\n  var _class, _temp;\n\n  if (label === void 0) {\n    label = name;\n  }\n\n  return _temp = _class =\n  /*#__PURE__*/\n  function (_React$Component) {\n    _inheritsLoose(_class, _React$Component);\n\n    function _class() {\n      return _React$Component.apply(this, arguments) || this;\n    }\n\n    var _proto = _class.prototype;\n\n    _proto.render = function render() {\n      var _this$props = this.props,\n          children = _this$props.children,\n          props = _objectWithoutPropertiesLoose(_this$props, [\"children\"]);\n\n      delete props.active;\n      return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(PageItem, _extends({}, props, {\n        __source: {\n          fileName: PageItem_jsxFileName,\n          lineNumber: 61\n        },\n        __self: this\n      }), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"span\", {\n        \"aria-hidden\": \"true\",\n        __source: {\n          fileName: PageItem_jsxFileName,\n          lineNumber: 62\n        },\n        __self: this\n      }, children || defaultValue), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"span\", {\n        className: \"sr-only\",\n        __source: {\n          fileName: PageItem_jsxFileName,\n          lineNumber: 63\n        },\n        __self: this\n      }, label));\n    };\n\n    return _class;\n  }(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component), _class.displayName = name, _temp;\n}\n\nvar First = createButton('First', \"\\xAB\");\nvar Prev = createButton('Prev', \"\\u2039\", 'Previous');\nvar Ellipsis = createButton('Ellipsis', \"\\u2026\", 'More');\nvar Next = createButton('Next', \"\\u203A\");\nvar Last = createButton('Last', \"\\xBB\");\n// CONCATENATED MODULE: ./src/Pagination.js\n\n\n\nvar Pagination_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Pagination.js\";\n\n\n\n\n\n/**\n * @property {PageItem} Item\n * @property {PageItem} First\n * @property {PageItem} Prev\n * @property {PageItem} Ellipsis\n * @property {PageItem} Next\n * @property {PageItem} Last\n */\n\nvar Pagination_Pagination =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Pagination, _React$Component);\n\n  function Pagination() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = Pagination.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        bsPrefix = _this$props.bsPrefix,\n        className = _this$props.className,\n        children = _this$props.children,\n        size = _this$props.size,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"bsPrefix\", \"className\", \"children\", \"size\"]);\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"ul\", _extends({}, props, {\n      className: classnames_default()(className, bsPrefix, size && bsPrefix + \"-\" + size),\n      __source: {\n        fileName: Pagination_jsxFileName,\n        lineNumber: 33\n      },\n      __self: this\n    }), children);\n  };\n\n  return Pagination;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nPagination_Pagination.propTypes = {\n  /** @default 'pagination' */\n  bsPrefix: prop_types_default.a.string.isRequired,\n\n  /**\n   * Set's the size of all PageItems.\n   *\n   * @type {('sm'|'lg')}\n   */\n  size: prop_types_default.a.string\n};\nvar DecoratedPagination = createBootstrapComponent(Pagination_Pagination, 'pagination');\nDecoratedPagination.First = First;\nDecoratedPagination.Prev = Prev;\nDecoratedPagination.Ellipsis = Ellipsis;\nDecoratedPagination.Item = PageItem;\nDecoratedPagination.Next = Next;\nDecoratedPagination.Last = Last;\n/* harmony default export */ var src_Pagination = (DecoratedPagination);\n// CONCATENATED MODULE: ./src/Popover.js\n\n\nvar Popover_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Popover.js\";\n\n\n\n\n\nvar Popover_propTypes = {\n  /**\n   * @default 'popover'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * An html id attribute, necessary for accessibility\n   * @type {string|number}\n   * @required\n   */\n  id: isRequiredForA11y_default()(prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.number])),\n\n  /**\n   * Sets the direction the Popover is positioned towards.\n   *\n   * > This is generally provided by the `Overlay` component positioning the popover\n   */\n  placement: prop_types_default.a.oneOf(['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start']),\n\n  /**\n   * An Overlay injected set of props for positioning the popover arrow.\n   *\n   * > This is generally provided by the `Overlay` component positioning the popover\n   */\n  arrowProps: prop_types_default.a.shape({\n    ref: prop_types_default.a.any,\n    style: prop_types_default.a.object\n  }),\n\n  /** @private */\n  innerRef: prop_types_default.a.any,\n\n  /** @private */\n  scheduleUpdate: prop_types_default.a.func,\n\n  /** @private */\n  outOfBoundaries: prop_types_default.a.bool,\n\n  /**\n   * Title content\n   */\n  title: prop_types_default.a.node\n};\nvar Popover_defaultProps = {\n  placement: 'right'\n};\n\nfunction Popover(_ref) {\n  var bsPrefix = _ref.bsPrefix,\n      innerRef = _ref.innerRef,\n      placement = _ref.placement,\n      className = _ref.className,\n      style = _ref.style,\n      title = _ref.title,\n      children = _ref.children,\n      arrowProps = _ref.arrowProps,\n      _ = _ref.scheduleUpdate,\n      _1 = _ref.outOfBoundaries,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"innerRef\", \"placement\", \"className\", \"style\", \"title\", \"children\", \"arrowProps\", \"scheduleUpdate\", \"outOfBoundaries\"]);\n\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", _extends({\n    role: \"tooltip\",\n    ref: innerRef,\n    style: style,\n    \"x-placement\": placement,\n    className: classnames_default()(className, bsPrefix, \"bs-popover-\" + placement)\n  }, props, {\n    __source: {\n      fileName: Popover_jsxFileName,\n      lineNumber: 86\n    },\n    __self: this\n  }), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", _extends({\n    className: \"arrow\"\n  }, arrowProps, {\n    __source: {\n      fileName: Popover_jsxFileName,\n      lineNumber: 94\n    },\n    __self: this\n  })), title && external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", {\n    className: bsPrefix + \"-header h3\",\n    __source: {\n      fileName: Popover_jsxFileName,\n      lineNumber: 96\n    },\n    __self: this\n  }, title), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", {\n    className: bsPrefix + \"-body\",\n    __source: {\n      fileName: Popover_jsxFileName,\n      lineNumber: 98\n    },\n    __self: this\n  }, children));\n}\n\nPopover.propTypes = Popover_propTypes;\nPopover.defaultProps = Popover_defaultProps;\n/* harmony default export */ var src_Popover = (createBootstrapComponent(Popover, 'popover'));\n// CONCATENATED MODULE: ./src/ProgressBar.js\n\n\n\nvar ProgressBar_jsxFileName = \"/Users/jason/src/react-bootstrap/src/ProgressBar.js\";\n\n\n\n\n\nvar ROUND_PRECISION = 1000;\n/**\n * Validate that children, if any, are instances of `<ProgressBar>`.\n */\n\nfunction onlyProgressBar(props, propName, componentName) {\n  var children = props[propName];\n\n  if (!children) {\n    return null;\n  }\n\n  var error = null;\n  external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Children.forEach(children, function (child) {\n    if (error) {\n      return;\n    }\n    /**\n     * Compare types in a way that works with libraries that patch and proxy\n     * components like react-hot-loader.\n     *\n     * see https://github.com/gaearon/react-hot-loader#checking-element-types\n     */\n\n\n    var element = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(DecoratedProgressBar, {\n      __source: {\n        fileName: ProgressBar_jsxFileName,\n        lineNumber: 33\n      },\n      __self: this\n    });\n    if (child.type === element.type) return;\n    var childIdentifier = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.isValidElement(child) ? child.type.displayName || child.type.name || child.type : child;\n    error = new Error(\"Children of \" + componentName + \" can contain only ProgressBar \" + (\"components. Found \" + childIdentifier + \".\"));\n  });\n  return error;\n}\n\nvar ProgressBar_propTypes = {\n  /**\n   * Minimum value progress can begin from\n   */\n  min: prop_types_default.a.number,\n\n  /**\n   * Current value of progress\n   */\n  now: prop_types_default.a.number,\n\n  /**\n   * Maximum value progress can reach\n   */\n  max: prop_types_default.a.number,\n\n  /**\n   * Show label that represents visual percentage.\n   * EG. 60%\n   */\n  label: prop_types_default.a.node,\n\n  /**\n   * Hide's the label visually.\n   */\n  srOnly: prop_types_default.a.bool,\n\n  /**\n   * Uses a gradient to create a striped effect.\n   */\n  striped: prop_types_default.a.bool,\n\n  /**\n   * Animate's the stripes from right to left\n   */\n  animated: prop_types_default.a.bool,\n\n  /**\n   * @private\n   * @default 'progress-bar'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * Sets the background class of the progress bar.\n   *\n   * @type ('success'|'danger'|'warning'|'info')\n   */\n  variant: prop_types_default.a.string,\n\n  /**\n   * Child elements (only allows elements of type <ProgressBar />)\n   */\n  children: onlyProgressBar,\n\n  /**\n   * @private\n   */\n  isChild: prop_types_default.a.bool\n};\nvar ProgressBar_defaultProps = {\n  min: 0,\n  max: 100,\n  animated: false,\n  isChild: false,\n  srOnly: false,\n  striped: false\n};\n\nfunction getPercentage(now, min, max) {\n  var percentage = (now - min) / (max - min) * 100;\n  return Math.round(percentage * ROUND_PRECISION) / ROUND_PRECISION;\n}\n\nvar ProgressBar_ProgressBar =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(ProgressBar, _React$Component);\n\n  function ProgressBar() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = ProgressBar.prototype;\n\n  _proto.renderProgressBar = function renderProgressBar(_ref) {\n    var _classNames;\n\n    var min = _ref.min,\n        now = _ref.now,\n        max = _ref.max,\n        label = _ref.label,\n        srOnly = _ref.srOnly,\n        striped = _ref.striped,\n        animated = _ref.animated,\n        className = _ref.className,\n        style = _ref.style,\n        variant = _ref.variant,\n        bsPrefix = _ref.bsPrefix,\n        props = _objectWithoutPropertiesLoose(_ref, [\"min\", \"now\", \"max\", \"label\", \"srOnly\", \"striped\", \"animated\", \"className\", \"style\", \"variant\", \"bsPrefix\"]);\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", _extends({}, props, {\n      role: \"progressbar\",\n      className: classnames_default()(className, bsPrefix + \"-bar\", (_classNames = {}, _classNames[\"bg-\" + variant] = variant, _classNames[bsPrefix + \"-bar-animated\"] = animated, _classNames[bsPrefix + \"-bar-striped\"] = animated || striped, _classNames)),\n      style: _extends({\n        width: getPercentage(now, min, max) + \"%\"\n      }, style),\n      \"aria-valuenow\": now,\n      \"aria-valuemin\": min,\n      \"aria-valuemax\": max,\n      __source: {\n        fileName: ProgressBar_jsxFileName,\n        lineNumber: 139\n      },\n      __self: this\n    }), srOnly ? external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"span\", {\n      className: \"sr-only\",\n      __source: {\n        fileName: ProgressBar_jsxFileName,\n        lineNumber: 152\n      },\n      __self: this\n    }, label) : label);\n  };\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        isChild = _this$props.isChild,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"isChild\"]);\n\n    if (isChild) {\n      return this.renderProgressBar(props);\n    }\n\n    var min = props.min,\n        now = props.now,\n        max = props.max,\n        label = props.label,\n        srOnly = props.srOnly,\n        striped = props.striped,\n        animated = props.animated,\n        bsPrefix = props.bsPrefix,\n        variant = props.variant,\n        className = props.className,\n        children = props.children,\n        wrapperProps = _objectWithoutPropertiesLoose(props, [\"min\", \"now\", \"max\", \"label\", \"srOnly\", \"striped\", \"animated\", \"bsPrefix\", \"variant\", \"className\", \"children\"]);\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", _extends({}, wrapperProps, {\n      className: classnames_default()(className, bsPrefix),\n      __source: {\n        fileName: ProgressBar_jsxFileName,\n        lineNumber: 180\n      },\n      __self: this\n    }), children ? map(children, function (child) {\n      return Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"cloneElement\"])(child, {\n        isChild: true\n      });\n    }) : this.renderProgressBar({\n      min: min,\n      now: now,\n      max: max,\n      label: label,\n      srOnly: srOnly,\n      striped: striped,\n      animated: animated,\n      bsPrefix: bsPrefix,\n      variant: variant\n    }));\n  };\n\n  return ProgressBar;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nProgressBar_ProgressBar.propTypes = ProgressBar_propTypes;\nProgressBar_ProgressBar.defaultProps = ProgressBar_defaultProps;\nvar DecoratedProgressBar = createBootstrapComponent(ProgressBar_ProgressBar, 'progress');\n/* harmony default export */ var src_ProgressBar = (DecoratedProgressBar);\n// CONCATENATED MODULE: ./src/ResponsiveEmbed.js\n\n\n\nvar ResponsiveEmbed_jsxFileName = \"/Users/jason/src/react-bootstrap/src/ResponsiveEmbed.js\";\n\n\n\n\nvar ResponsiveEmbed_propTypes = {\n  /**\n   * @default 'embed-responsive'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * This component requires a single child element\n   */\n  children: prop_types_default.a.element.isRequired,\n\n  /**\n   * Set the aspect ration of the embed\n   */\n  aspectRatio: prop_types_default.a.oneOf(['21by9', '16by9', '4by3', '1by1'])\n};\nvar ResponsiveEmbed_defaultProps = {\n  aspectRatio: '1by1'\n};\n\nvar ResponsiveEmbed_ResponsiveEmbed =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(ResponsiveEmbed, _React$Component);\n\n  function ResponsiveEmbed() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = ResponsiveEmbed.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        bsPrefix = _this$props.bsPrefix,\n        className = _this$props.className,\n        children = _this$props.children,\n        aspectRatio = _this$props.aspectRatio,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"bsPrefix\", \"className\", \"children\", \"aspectRatio\"]);\n\n    var child = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Children.only(children);\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", _extends({}, props, {\n      className: classnames_default()(bsPrefix, className, aspectRatio && bsPrefix + \"-\" + aspectRatio),\n      __source: {\n        fileName: ResponsiveEmbed_jsxFileName,\n        lineNumber: 33\n      },\n      __self: this\n    }), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.cloneElement(child, {\n      className: classnames_default()(child.props.className, bsPrefix + \"-item\")\n    }));\n  };\n\n  return ResponsiveEmbed;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nResponsiveEmbed_ResponsiveEmbed.propTypes = ResponsiveEmbed_propTypes;\nResponsiveEmbed_ResponsiveEmbed.defaultProps = ResponsiveEmbed_defaultProps;\n/* harmony default export */ var src_ResponsiveEmbed = (createBootstrapComponent(ResponsiveEmbed_ResponsiveEmbed, 'embed-responsive'));\n// CONCATENATED MODULE: ./src/Row.js\n\n\n\nvar Row_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Row.js\";\n\n\n\n\n\nvar Row_Row =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Row, _React$Component);\n\n  function Row() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = Row.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        bsPrefix = _this$props.bsPrefix,\n        noGutters = _this$props.noGutters,\n        Component = _this$props.as,\n        className = _this$props.className,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"bsPrefix\", \"noGutters\", \"as\", \"className\"]);\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n      className: classnames_default()(className, bsPrefix, noGutters && 'no-gutters'),\n      __source: {\n        fileName: Row_jsxFileName,\n        lineNumber: 35\n      },\n      __self: this\n    }));\n  };\n\n  return Row;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nRow_Row.propTypes = {\n  /**\n   * @default 'row'\n   */\n  bsPrefix: prop_types_default.a.string.isRequired,\n\n  /** Removes the gutter spacing between `Col`s as well as any added negative margins. */\n  noGutters: prop_types_default.a.bool.isRequired,\n  as: prop_types_default.a.elementType\n};\nRow_Row.defaultProps = {\n  as: 'div',\n  noGutters: false\n};\n/* harmony default export */ var src_Row = (createBootstrapComponent(Row_Row, 'row'));\n// CONCATENATED MODULE: ./src/Spinner.js\n\n\n\nvar Spinner_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Spinner.js\";\n\n\n\n\n\nvar Spinner_Spinner =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Spinner, _React$Component);\n\n  function Spinner() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = Spinner.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        bsPrefix = _this$props.bsPrefix,\n        variant = _this$props.variant,\n        animation = _this$props.animation,\n        size = _this$props.size,\n        children = _this$props.children,\n        as = _this$props.as,\n        className = _this$props.className,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"bsPrefix\", \"variant\", \"animation\", \"size\", \"children\", \"as\", \"className\"]);\n\n    var Component = as;\n    var bsSpinnerPrefix = bsPrefix + \"-\" + animation;\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n      className: classnames_default()(className, bsSpinnerPrefix, size && bsSpinnerPrefix + \"-\" + size, variant && \"text-\" + variant),\n      __source: {\n        fileName: Spinner_jsxFileName,\n        lineNumber: 71\n      },\n      __self: this\n    }), children);\n  };\n\n  return Spinner;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nSpinner_Spinner.propTypes = {\n  /**\n   * @default 'spinner'\n   */\n  bsPrefix: prop_types_default.a.string.isRequired,\n\n  /**\n   * The visual color style of the spinner\n   *\n   * @type {('primary'|'secondary'|'success'|'danger'|'warning'|'info'|'light'|'dark')}\n   */\n  variant: prop_types_default.a.string,\n\n  /**\n   * Changes the animation style of the spinner.\n   *\n   * @type {('border'|'grow')}\n   * @default true\n   */\n  animation: prop_types_default.a.oneOf(['border', 'grow']).isRequired,\n\n  /**\n   * Component size variations.\n   *\n   * @type {('sm')}\n   */\n  size: prop_types_default.a.string,\n\n  /**\n   * This component may be used to wrap child elements or components.\n   */\n  children: prop_types_default.a.element,\n\n  /**\n   * An ARIA accessible role applied to the Menu component. This should generally be set to 'status'\n   */\n  role: prop_types_default.a.string,\n\n  /**\n   * @default div\n   */\n  as: prop_types_default.a.elementType\n};\nSpinner_Spinner.defaultProps = {\n  as: 'div'\n};\n/* harmony default export */ var src_Spinner = (createBootstrapComponent(Spinner_Spinner, 'spinner'));\n// CONCATENATED MODULE: ./src/SplitButton.js\n\n\n\nvar SplitButton_jsxFileName = \"/Users/jason/src/react-bootstrap/src/SplitButton.js\";\n\n\n\n\n\n/**\n * @inherits Button, Dropdown\n */\n\nvar SplitButton_SplitButton =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(SplitButton, _React$Component);\n\n  function SplitButton() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = SplitButton.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        id = _this$props.id,\n        bsPrefix = _this$props.bsPrefix,\n        size = _this$props.size,\n        variant = _this$props.variant,\n        title = _this$props.title,\n        toggleLabel = _this$props.toggleLabel,\n        children = _this$props.children,\n        onClick = _this$props.onClick,\n        href = _this$props.href,\n        target = _this$props.target,\n        menuRole = _this$props.menuRole,\n        rootCloseEvent = _this$props.rootCloseEvent,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"id\", \"bsPrefix\", \"size\", \"variant\", \"title\", \"toggleLabel\", \"children\", \"onClick\", \"href\", \"target\", \"menuRole\", \"rootCloseEvent\"]);\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Dropdown, _extends({}, props, {\n      as: src_ButtonGroup,\n      __source: {\n        fileName: SplitButton_jsxFileName,\n        lineNumber: 79\n      },\n      __self: this\n    }), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Button, {\n      size: size,\n      variant: variant,\n      disabled: props.disabled,\n      bsPrefix: bsPrefix,\n      href: href,\n      target: target,\n      onClick: onClick,\n      __source: {\n        fileName: SplitButton_jsxFileName,\n        lineNumber: 80\n      },\n      __self: this\n    }, title), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Dropdown.Toggle, {\n      split: true,\n      id: id,\n      size: size,\n      variant: variant,\n      disabled: props.disabled,\n      childBsPrefix: bsPrefix,\n      __source: {\n        fileName: SplitButton_jsxFileName,\n        lineNumber: 91\n      },\n      __self: this\n    }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"span\", {\n      className: \"sr-only\",\n      __source: {\n        fileName: SplitButton_jsxFileName,\n        lineNumber: 99\n      },\n      __self: this\n    }, toggleLabel)), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Dropdown.Menu, {\n      role: menuRole,\n      rootCloseEvent: rootCloseEvent,\n      __source: {\n        fileName: SplitButton_jsxFileName,\n        lineNumber: 102\n      },\n      __self: this\n    }, children));\n  };\n\n  return SplitButton;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nSplitButton_SplitButton.propTypes = {\n  /**\n   * An html id attribute for the Toggle button, necessary for assistive technologies, such as screen readers.\n   * @type {string|number}\n   * @required\n   */\n  id: prop_types_default.a.any,\n\n  /**\n   * Accessible label for the toggle; the value of `title` if not specified.\n   */\n  toggleLabel: prop_types_default.a.string,\n\n  /** An `href` passed to the non-toggle Button */\n  href: prop_types_default.a.string,\n\n  /** An anchor `target` passed to the non-toggle Button */\n  target: prop_types_default.a.string,\n\n  /** An `onClick` handler passed to the non-toggle Button */\n  onClick: prop_types_default.a.func,\n\n  /** The content of the non-toggle Button.  */\n  title: prop_types_default.a.node.isRequired,\n\n  /** Disables both Buttons  */\n  disabled: prop_types_default.a.bool,\n\n  /** An ARIA accessible role applied to the Menu component. When set to 'menu', The dropdown */\n  menuRole: prop_types_default.a.string,\n\n  /**\n   *  Which event when fired outside the component will cause it to be closed.\n   *\n   * _see [DropdownMenu](#menu-props) for more details_\n   */\n  rootCloseEvent: prop_types_default.a.string,\n\n  /** @ignore */\n  bsPrefix: prop_types_default.a.string,\n\n  /** @ignore */\n  variant: prop_types_default.a.string,\n\n  /** @ignore */\n  size: prop_types_default.a.string\n};\nSplitButton_SplitButton.defaultProps = {\n  toggleLabel: 'Toggle dropdown'\n};\n/* harmony default export */ var src_SplitButton = (SplitButton_SplitButton);\n// CONCATENATED MODULE: ./src/TabContainer.js\n\n\nvar TabContainer_jsxFileName = \"/Users/jason/src/react-bootstrap/src/TabContainer.js\";\n\n\n\n\n\n\nvar TabContainer_TabContainer =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(TabContainer, _React$Component);\n\n  function TabContainer() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n    _this.getControlledId = function (key) {\n      return _this.getKey(key, 'tabpane');\n    };\n\n    _this.getControllerId = function (key) {\n      return _this.getKey(key, 'tab');\n    };\n\n    _this.state = {\n      tabContext: {\n        onSelect: _this.props.onSelect,\n        activeKey: _this.props.activeKey,\n        transition: _this.props.transition,\n        mountOnEnter: _this.props.mountOnEnter,\n        unmountOnExit: _this.props.unmountOnExit,\n        getControlledId: _this.getControlledId,\n        getControllerId: _this.getControllerId\n      }\n    };\n    return _this;\n  }\n\n  TabContainer.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n    var activeKey = _ref.activeKey,\n        mountOnEnter = _ref.mountOnEnter,\n        unmountOnExit = _ref.unmountOnExit,\n        transition = _ref.transition;\n    return {\n      tabContext: _extends({}, prevState.tabContext, {\n        activeKey: activeKey,\n        mountOnEnter: mountOnEnter,\n        unmountOnExit: unmountOnExit,\n        transition: transition\n      })\n    };\n  };\n\n  var _proto = TabContainer.prototype;\n\n  _proto.getKey = function getKey(key, type) {\n    var _this$props = this.props,\n        generateChildId = _this$props.generateChildId,\n        id = _this$props.id;\n    if (generateChildId) return generateChildId(key, type);\n    return id ? id + \"-\" + type + \"-\" + key : null;\n  };\n\n  _proto.render = function render() {\n    var _this$props2 = this.props,\n        children = _this$props2.children,\n        onSelect = _this$props2.onSelect;\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_TabContext.Provider, {\n      value: this.state.tabContext,\n      __source: {\n        fileName: TabContainer_jsxFileName,\n        lineNumber: 129\n      },\n      __self: this\n    }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_SelectableContext.Provider, {\n      value: onSelect,\n      __source: {\n        fileName: TabContainer_jsxFileName,\n        lineNumber: 130\n      },\n      __self: this\n    }, children));\n  };\n\n  return TabContainer;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nTabContainer_TabContainer.propTypes = {\n  /**\n   * HTML id attribute, required if no `generateChildId` prop\n   * is specified.\n   *\n   * @type {string}\n   */\n  id: function id(props) {\n    var error = null;\n\n    if (!props.generateChildId) {\n      for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n        args[_key2 - 1] = arguments[_key2];\n      }\n\n      error = prop_types_default.a.string.apply(prop_types_default.a, [props].concat(args));\n\n      if (!error && !props.id) {\n        error = new Error('In order to properly initialize Tabs in a way that is accessible ' + 'to assistive technologies (such as screen readers) an `id` or a ' + '`generateChildId` prop to TabContainer is required');\n      }\n    }\n\n    return error;\n  },\n\n  /**\n   * Sets a default animation strategy for all children `<TabPane>`s. Use\n   * `false` to disable, `true` to enable the default `<Fade>` animation or\n   * a react-transition-group v2 `<Transition/>` component.\n   *\n   * @type {{Transition | false}}\n   * @default {Fade}\n   */\n  transition: prop_types_default.a.oneOfType([prop_types_default.a.oneOf([false]), prop_types_default.a.elementType]),\n\n  /**\n   * Wait until the first \"enter\" transition to mount tabs (add them to the DOM)\n   */\n  mountOnEnter: prop_types_default.a.bool,\n\n  /**\n   * Unmount tabs (remove it from the DOM) when they are no longer visible\n   */\n  unmountOnExit: prop_types_default.a.bool,\n\n  /**\n   * A function that takes an `eventKey` and `type` and returns a unique id for\n   * child tab `<NavItem>`s and `<TabPane>`s. The function _must_ be a pure\n   * function, meaning it should always return the _same_ id for the same set\n   * of inputs. The default value requires that an `id` to be set for the\n   * `<TabContainer>`.\n   *\n   * The `type` argument will either be `\"tab\"` or `\"pane\"`.\n   *\n   * @defaultValue (eventKey, type) => `${this.props.id}-${type}-${eventKey}`\n   */\n  generateChildId: prop_types_default.a.func,\n\n  /**\n   * A callback fired when a tab is selected.\n   *\n   * @controllable activeKey\n   */\n  onSelect: prop_types_default.a.func,\n\n  /**\n   * The `eventKey` of the currently active tab.\n   *\n   * @controllable onSelect\n   */\n  activeKey: prop_types_default.a.any\n};\n/* harmony default export */ var src_TabContainer = (uncontrollable_default()(TabContainer_TabContainer, {\n  activeKey: 'onSelect'\n}));\n// CONCATENATED MODULE: ./src/TabContent.js\n\n\n\nvar TabContent_jsxFileName = \"/Users/jason/src/react-bootstrap/src/TabContent.js\";\n\n\n\n\n\nvar TabContent_TabContent =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(TabContent, _React$Component);\n\n  function TabContent() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = TabContent.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        bsPrefix = _this$props.bsPrefix,\n        Component = _this$props.as,\n        className = _this$props.className,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"bsPrefix\", \"as\", \"className\"]);\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, props, {\n      className: classnames_default()(className, bsPrefix),\n      __source: {\n        fileName: TabContent_jsxFileName,\n        lineNumber: 24\n      },\n      __self: this\n    }));\n  };\n\n  return TabContent;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nTabContent_TabContent.propTypes = {\n  /**\n   * @default 'tab-content'\n   */\n  bsPrefix: prop_types_default.a.string,\n  as: prop_types_default.a.elementType\n};\nTabContent_TabContent.defaultProps = {\n  as: 'div'\n};\n/* harmony default export */ var src_TabContent = (createBootstrapComponent(TabContent_TabContent, 'tab-content'));\n// CONCATENATED MODULE: ./src/TabPane.js\n\n\nvar TabPane_jsxFileName = \"/Users/jason/src/react-bootstrap/src/TabPane.js\";\n\n\n\n\n\n\n\nvar TabPane_propTypes = {\n  /**\n   * @default 'tab-pane'\n   */\n  bsPrefix: prop_types_default.a.string,\n  as: prop_types_default.a.elementType,\n\n  /**\n   * A key that associates the `TabPane` with it's controlling `NavLink`.\n   */\n  eventKey: prop_types_default.a.any,\n\n  /**\n   * Toggles the active state of the TabPane, this is generally controlled by a\n   * TabContainer.\n   */\n  active: prop_types_default.a.bool,\n\n  /**\n   * Use animation when showing or hiding `<TabPane>`s. Use `false` to disable,\n   * `true` to enable the default `<Fade>` animation or\n   * a react-transition-group v2 `<Transition/>` component.\n   */\n  transition: prop_types_default.a.oneOfType([prop_types_default.a.bool, prop_types_default.a.elementType]),\n\n  /**\n   *\n   * @default 'tab-pane'\n   */\n  bsClass: prop_types_default.a.string,\n\n  /**\n   * Transition onEnter callback when animation is not `false`\n   */\n  onEnter: prop_types_default.a.func,\n\n  /**\n   * Transition onEntering callback when animation is not `false`\n   */\n  onEntering: prop_types_default.a.func,\n\n  /**\n   * Transition onEntered callback when animation is not `false`\n   */\n  onEntered: prop_types_default.a.func,\n\n  /**\n   * Transition onExit callback when animation is not `false`\n   */\n  onExit: prop_types_default.a.func,\n\n  /**\n   * Transition onExiting callback when animation is not `false`\n   */\n  onExiting: prop_types_default.a.func,\n\n  /**\n   * Transition onExited callback when animation is not `false`\n   */\n  onExited: prop_types_default.a.func,\n\n  /**\n   * Wait until the first \"enter\" transition to mount the tab (add it to the DOM)\n   */\n  mountOnEnter: prop_types_default.a.bool,\n\n  /**\n   * Unmount the tab (remove it from the DOM) when it is no longer visible\n   */\n  unmountOnExit: prop_types_default.a.bool,\n\n  /** @ignore * */\n  id: prop_types_default.a.string,\n\n  /** @ignore * */\n  'aria-labelledby': prop_types_default.a.string\n};\n\nfunction useTabContext(props) {\n  var context = Object(external_root_React_commonjs2_react_commonjs_react_amd_react_[\"useContext\"])(src_TabContext);\n  if (!context) return props;\n\n  var activeKey = context.activeKey,\n      getControlledId = context.getControlledId,\n      getControllerId = context.getControllerId,\n      rest = _objectWithoutPropertiesLoose(context, [\"activeKey\", \"getControlledId\", \"getControllerId\"]);\n\n  var shouldTransition = props.transition !== false && rest.transition !== false;\n  var key = makeEventKey(props.eventKey);\n  return _extends({}, props, {\n    active: props.active == null && key != null ? makeEventKey(activeKey) === key : props.active,\n    id: getControlledId(props.eventKey),\n    'aria-labelledby': getControllerId(props.eventKey),\n    transition: shouldTransition && (props.transition || rest.transition || src_Fade),\n    mountOnEnter: props.mountOnEnter != null ? props.mountOnEnter : rest.mountOnEnter,\n    unmountOnExit: props.unmountOnExit != null ? props.unmountOnExit : rest.unmountOnExit\n  });\n}\n\nvar TabPane = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (props, ref) {\n  var _useTabContext = useTabContext(props),\n      bsPrefix = _useTabContext.bsPrefix,\n      className = _useTabContext.className,\n      active = _useTabContext.active,\n      onEnter = _useTabContext.onEnter,\n      onEntering = _useTabContext.onEntering,\n      onEntered = _useTabContext.onEntered,\n      onExit = _useTabContext.onExit,\n      onExiting = _useTabContext.onExiting,\n      onExited = _useTabContext.onExited,\n      mountOnEnter = _useTabContext.mountOnEnter,\n      unmountOnExit = _useTabContext.unmountOnExit,\n      Transition = _useTabContext.transition,\n      _useTabContext$as = _useTabContext.as,\n      Component = _useTabContext$as === void 0 ? 'div' : _useTabContext$as,\n      _ = _useTabContext.eventKey,\n      rest = _objectWithoutPropertiesLoose(_useTabContext, [\"bsPrefix\", \"className\", \"active\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"mountOnEnter\", \"unmountOnExit\", \"transition\", \"as\", \"eventKey\"]);\n\n  var prefix = useBootstrapPrefix(bsPrefix, 'tab-pane');\n  if (!active && unmountOnExit) return null;\n  var pane = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Component, _extends({}, rest, {\n    ref: ref,\n    role: \"tabpanel\",\n    \"aria-hidden\": !active,\n    className: classnames_default()(className, prefix, {\n      active: active\n    }),\n    __source: {\n      fileName: TabPane_jsxFileName,\n      lineNumber: 141\n    },\n    __self: this\n  }));\n  if (Transition) pane = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Transition, {\n    in: active,\n    onEnter: onEnter,\n    onEntering: onEntering,\n    onEntered: onEntered,\n    onExit: onExit,\n    onExiting: onExiting,\n    onExited: onExited,\n    mountOnEnter: mountOnEnter,\n    unmountOnExit: mountOnEnter,\n    __source: {\n      fileName: TabPane_jsxFileName,\n      lineNumber: 152\n    },\n    __self: this\n  }, pane); // We provide an empty the TabContext so `<Nav>`s in `<TabPane>`s don't\n  // conflict with the top level one.\n\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_TabContext.Provider, {\n    value: null,\n    __source: {\n      fileName: TabPane_jsxFileName,\n      lineNumber: 170\n    },\n    __self: this\n  }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_SelectableContext.Provider, {\n    value: null,\n    __source: {\n      fileName: TabPane_jsxFileName,\n      lineNumber: 171\n    },\n    __self: this\n  }, pane));\n});\nTabPane.displayName = 'TabPane';\nTabPane.propTypes = TabPane_propTypes;\n/* harmony default export */ var src_TabPane = (TabPane);\n// CONCATENATED MODULE: ./src/Tab.js\n\n\n\n\n\n\n/* eslint-disable react/require-render-return, react/no-unused-prop-types */\n\nvar Tab_Tab =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Tab, _React$Component);\n\n  function Tab() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = Tab.prototype;\n\n  _proto.render = function render() {\n    throw new Error('ReactBootstrap: The `Tab` component is not meant to be rendered! ' + \"It's an abstract component that is only valid as a direct Child of the `Tabs` Component. \" + 'For custom tabs components use TabPane and TabsContainer directly');\n  };\n\n  return Tab;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nTab_Tab.propTypes = {\n  title: prop_types_default.a.node.isRequired\n};\nTab_Tab.Container = src_TabContainer;\nTab_Tab.Content = src_TabContent;\nTab_Tab.Pane = src_TabPane;\n/* harmony default export */ var src_Tab = (Tab_Tab);\n// CONCATENATED MODULE: ./src/Table.js\n\n\n\nvar Table_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Table.js\";\n\n\n\n\n\nvar Table_Table =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Table, _React$Component);\n\n  function Table() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = Table.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        bsPrefix = _this$props.bsPrefix,\n        className = _this$props.className,\n        striped = _this$props.striped,\n        bordered = _this$props.bordered,\n        borderless = _this$props.borderless,\n        hover = _this$props.hover,\n        size = _this$props.size,\n        variant = _this$props.variant,\n        responsive = _this$props.responsive,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"bsPrefix\", \"className\", \"striped\", \"bordered\", \"borderless\", \"hover\", \"size\", \"variant\", \"responsive\"]);\n\n    var classes = classnames_default()(bsPrefix, className, variant && bsPrefix + \"-\" + variant, size && bsPrefix + \"-\" + size, striped && bsPrefix + \"-striped\", bordered && bsPrefix + \"-bordered\", borderless && bsPrefix + \"-borderless\", hover && bsPrefix + \"-hover\");\n    var table = external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"table\", _extends({}, props, {\n      className: classes,\n      __source: {\n        fileName: Table_jsxFileName,\n        lineNumber: 83\n      },\n      __self: this\n    }));\n\n    if (responsive) {\n      var responsiveClass = bsPrefix + \"-responsive\";\n\n      if (typeof responsive === 'string') {\n        responsiveClass = responsiveClass + \"-\" + responsive;\n      }\n\n      return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", {\n        className: responsiveClass,\n        __source: {\n          fileName: Table_jsxFileName,\n          lineNumber: 91\n        },\n        __self: this\n      }, table);\n    }\n\n    return table;\n  };\n\n  return Table;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nTable_Table.propTypes = {\n  /**\n   * @default 'table'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * Adds zebra-striping to any table row within the `<tbody>`.\n   */\n  striped: prop_types_default.a.bool,\n\n  /**\n   * Adds borders on all sides of the table and cells.\n   */\n  bordered: prop_types_default.a.bool,\n\n  /**\n   * Removes all borders on the table and cells, including table header.\n   */\n  borderless: prop_types_default.a.bool,\n\n  /**\n   * Enable a hover state on table rows within a `<tbody>`.\n   */\n  hover: prop_types_default.a.bool,\n\n  /**\n   * Make tables more compact by cutting cell padding in half by setting\n   * size as `sm`.\n   */\n  size: prop_types_default.a.string,\n\n  /**\n   * Invert the colors of the table — with light text on dark backgrounds\n   * by setting variant as `dark`.\n   */\n  variant: prop_types_default.a.string,\n\n  /**\n   * Responsive tables allow tables to be scrolled horizontally with ease.\n   * Across every breakpoint, use `responsive` for horizontally\n   * scrolling tables. Responsive tables are wrapped automatically in a `div`.\n   * Use `responsive=\"sm\"`, `responsive=\"md\"`, `responsive=\"lg\"`, or\n   * `responsive=\"xl\"` as needed to create responsive tables up to\n   * a particular breakpoint. From that breakpoint and up, the table will\n   * behave normally and not scroll horizontally.\n   */\n  responsive: prop_types_default.a.oneOfType([prop_types_default.a.bool, prop_types_default.a.string])\n};\n/* harmony default export */ var src_Table = (createBootstrapComponent(Table_Table, 'table'));\n// CONCATENATED MODULE: ./src/Tabs.js\n\n\n\nvar Tabs_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Tabs.js\";\n\n\n\n\n\n\n\n\n\n\n\nvar Tabs_TabContainer = src_TabContainer.ControlledComponent;\nvar Tabs_propTypes = {\n  /**\n   * Mark the Tab with a matching `eventKey` as active.\n   *\n   * @controllable onSelect\n   */\n  activeKey: prop_types_default.a.any,\n\n  /**\n   * Navigation style\n   *\n   * @type {('tabs'| 'pills')}\n   */\n  variant: prop_types_default.a.string,\n\n  /**\n   * Sets a default animation strategy for all children `<TabPane>`s. Use\n   * `false` to disable, `true` to enable the default `<Fade>` animation or\n   * a react-transition-group v2 `<Transition/>` component.\n   *\n   * @type {Transition | false}\n   * @default {Fade}\n   */\n  transition: prop_types_default.a.oneOfType([prop_types_default.a.oneOf([false]), prop_types_default.a.elementType]),\n\n  /**\n   * HTML id attribute, required if no `generateChildId` prop\n   * is specified.\n   *\n   * @type {string}\n   */\n  id: isRequiredForA11y_default()(prop_types_default.a.string),\n\n  /**\n   * Callback fired when a Tab is selected.\n   *\n   * ```js\n   * function (\n   *   Any eventKey,\n   *   SyntheticEvent event?\n   * )\n   * ```\n   *\n   * @controllable activeKey\n   */\n  onSelect: prop_types_default.a.func,\n\n  /**\n   * Wait until the first \"enter\" transition to mount tabs (add them to the DOM)\n   */\n  mountOnEnter: prop_types_default.a.bool,\n\n  /**\n   * Unmount tabs (remove it from the DOM) when it is no longer visible\n   */\n  unmountOnExit: prop_types_default.a.bool\n};\nvar Tabs_defaultProps = {\n  variant: 'tabs',\n  mountOnEnter: false,\n  unmountOnExit: false\n};\n\nfunction getDefaultActiveKey(children) {\n  var defaultActiveKey;\n  forEach(children, function (child) {\n    if (defaultActiveKey == null) {\n      defaultActiveKey = child.props.eventKey;\n    }\n  });\n  return defaultActiveKey;\n}\n\nvar Tabs_Tabs =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Tabs, _React$Component);\n\n  function Tabs() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = Tabs.prototype;\n\n  _proto.renderTab = function renderTab(child) {\n    var _child$props = child.props,\n        title = _child$props.title,\n        eventKey = _child$props.eventKey,\n        disabled = _child$props.disabled,\n        tabClassName = _child$props.tabClassName;\n\n    if (title == null) {\n      return null;\n    }\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_NavItem, {\n      as: src_NavLink,\n      eventKey: eventKey,\n      disabled: disabled,\n      className: tabClassName,\n      __source: {\n        fileName: Tabs_jsxFileName,\n        lineNumber: 104\n      },\n      __self: this\n    }, title);\n  };\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        id = _this$props.id,\n        onSelect = _this$props.onSelect,\n        transition = _this$props.transition,\n        mountOnEnter = _this$props.mountOnEnter,\n        unmountOnExit = _this$props.unmountOnExit,\n        children = _this$props.children,\n        _this$props$activeKey = _this$props.activeKey,\n        activeKey = _this$props$activeKey === void 0 ? getDefaultActiveKey(children) : _this$props$activeKey,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"id\", \"onSelect\", \"transition\", \"mountOnEnter\", \"unmountOnExit\", \"children\", \"activeKey\"]);\n\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(Tabs_TabContainer, {\n      id: id,\n      activeKey: activeKey,\n      onSelect: onSelect,\n      transition: transition,\n      mountOnEnter: mountOnEnter,\n      unmountOnExit: unmountOnExit,\n      __source: {\n        fileName: Tabs_jsxFileName,\n        lineNumber: 128\n      },\n      __self: this\n    }, external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Nav, _extends({}, props, {\n      role: \"tablist\",\n      as: \"nav\",\n      __source: {\n        fileName: Tabs_jsxFileName,\n        lineNumber: 136\n      },\n      __self: this\n    }), map(children, this.renderTab)), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_TabContent, {\n      __source: {\n        fileName: Tabs_jsxFileName,\n        lineNumber: 140\n      },\n      __self: this\n    }, map(children, function (child) {\n      var childProps = _extends({}, child.props);\n\n      delete childProps.title;\n      delete childProps.disabled;\n      delete childProps.tabClassName;\n      return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_TabPane, _extends({}, childProps, {\n        __source: {\n          fileName: Tabs_jsxFileName,\n          lineNumber: 147\n        },\n        __self: this\n      }));\n    })));\n  };\n\n  return Tabs;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nTabs_Tabs.propTypes = Tabs_propTypes;\nTabs_Tabs.defaultProps = Tabs_defaultProps;\n/* harmony default export */ var src_Tabs = (uncontrollable_default()(Tabs_Tabs, {\n  activeKey: 'onSelect'\n}));\n// CONCATENATED MODULE: ./src/ToggleButton.js\n\n\n\nvar ToggleButton_jsxFileName = \"/Users/jason/src/react-bootstrap/src/ToggleButton.js\";\n\n\n\n\n\nvar ToggleButton_noop = function noop() {};\n\nvar ToggleButton_propTypes = {\n  /**\n   * The `<input>` element `type`\n   */\n  type: prop_types_default.a.oneOf(['checkbox', 'radio']),\n\n  /**\n   * The HTML input name, used to group like checkboxes or radio buttons together\n   * semantically\n   */\n  name: prop_types_default.a.string,\n\n  /**\n   * The checked state of the input, managed by `<ToggleButtonGroup>` automatically\n   */\n  checked: prop_types_default.a.bool,\n\n  /**\n   * The disabled state of both the label and input\n   */\n  disabled: prop_types_default.a.bool,\n\n  /**\n   * A callback fired when the underlying input element changes. This is passed\n   * directly to the `<input>` so shares the same signature as a native `onChange` event.\n   */\n  onChange: prop_types_default.a.func,\n\n  /**\n   * The value of the input, should be unique amoungst it's siblings when nested in a\n   * `ToggleButtonGroup`.\n   */\n  value: prop_types_default.a.any.isRequired,\n\n  /**\n   * A ref attached to the `<input>` element\n   * @type {ReactRef}\n   */\n  inputRef: prop_types_default.a.any,\n\n  /** @ignore */\n  innerRef: prop_types_default.a.any\n};\n\nvar ToggleButton_ToggleButton =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(ToggleButton, _React$Component);\n\n  function ToggleButton() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n    _this.state = {\n      focused: false\n    };\n\n    _this.handleFocus = function (e) {\n      if (e.target.tagName === 'INPUT') _this.setState({\n        focused: true\n      });\n    };\n\n    _this.handleBlur = function (e) {\n      if (e.target.tagName === 'INPUT') _this.setState({\n        focused: false\n      });\n    };\n\n    return _this;\n  }\n\n  var _proto = ToggleButton.prototype;\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        children = _this$props.children,\n        name = _this$props.name,\n        className = _this$props.className,\n        checked = _this$props.checked,\n        type = _this$props.type,\n        onChange = _this$props.onChange,\n        value = _this$props.value,\n        disabled = _this$props.disabled,\n        inputRef = _this$props.inputRef,\n        innerRef = _this$props.innerRef,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"name\", \"className\", \"checked\", \"type\", \"onChange\", \"value\", \"disabled\", \"inputRef\", \"innerRef\"]);\n\n    var focused = this.state.focused;\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_Button, _extends({}, props, {\n      ref: innerRef,\n      className: classnames_default()(className, focused && 'focus', disabled && 'disabled'),\n      type: null,\n      active: !!checked,\n      as: \"label\",\n      __source: {\n        fileName: ToggleButton_jsxFileName,\n        lineNumber: 80\n      },\n      __self: this\n    }), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"input\", {\n      name: name,\n      type: type,\n      value: value,\n      ref: inputRef,\n      autoComplete: \"off\",\n      checked: !!checked,\n      disabled: !!disabled,\n      onFocus: this.handleFocus,\n      onBlur: this.handleBlur,\n      onChange: onChange || ToggleButton_noop,\n      __source: {\n        fileName: ToggleButton_jsxFileName,\n        lineNumber: 92\n      },\n      __self: this\n    }), children);\n  };\n\n  return ToggleButton;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nToggleButton_ToggleButton.propTypes = ToggleButton_propTypes;\n/* harmony default export */ var src_ToggleButton = (external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.forwardRef(function (props, ref) {\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(ToggleButton_ToggleButton, _extends({\n    innerRef: ref\n  }, props, {\n    __source: {\n      fileName: ToggleButton_jsxFileName,\n      lineNumber: 114\n    },\n    __self: this\n  }));\n}));\n// EXTERNAL MODULE: ./node_modules/invariant/browser.js\nvar browser = __webpack_require__(24);\nvar browser_default = /*#__PURE__*/__webpack_require__.n(browser);\n\n// CONCATENATED MODULE: ./src/ToggleButtonGroup.js\n\n\n\nvar ToggleButtonGroup_jsxFileName = \"/Users/jason/src/react-bootstrap/src/ToggleButtonGroup.js\";\n\n\n\n\n\n\n\n\nvar ToggleButtonGroup_propTypes = {\n  /**\n   * An HTML `<input>` name for each child button.\n   *\n   * __Required if `type` is set to `'radio'`__\n   */\n  name: prop_types_default.a.string,\n\n  /**\n   * The value, or array of values, of the active (pressed) buttons\n   *\n   * @controllable onChange\n   */\n  value: prop_types_default.a.any,\n\n  /**\n   * Callback fired when a button is pressed, depending on whether the `type`\n   * is `'radio'` or `'checkbox'`, `onChange` will be called with the value or\n   * array of active values\n   *\n   * @controllable values\n   */\n  onChange: prop_types_default.a.func,\n\n  /**\n   * The input `type` of the rendered buttons, determines the toggle behavior\n   * of the buttons\n   */\n  type: prop_types_default.a.oneOf(['checkbox', 'radio']).isRequired\n};\nvar ToggleButtonGroup_defaultProps = {\n  type: 'radio'\n};\n\nvar ToggleButtonGroup_ToggleButtonGroup =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(ToggleButtonGroup, _React$Component);\n\n  function ToggleButtonGroup() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = ToggleButtonGroup.prototype;\n\n  _proto.getValues = function getValues() {\n    var value = this.props.value;\n    return value == null ? [] : [].concat(value);\n  };\n\n  _proto.handleToggle = function handleToggle(value, event) {\n    var _this$props = this.props,\n        type = _this$props.type,\n        onChange = _this$props.onChange;\n    var values = this.getValues();\n    var isActive = values.indexOf(value) !== -1;\n\n    if (type === 'radio') {\n      if (!isActive) onChange(value, event);\n      return;\n    }\n\n    if (isActive) {\n      onChange(values.filter(function (n) {\n        return n !== value;\n      }), event);\n    } else {\n      onChange([].concat(values, [value]), event);\n    }\n  };\n\n  _proto.render = function render() {\n    var _this = this;\n\n    var _this$props2 = this.props,\n        children = _this$props2.children,\n        type = _this$props2.type,\n        name = _this$props2.name,\n        props = _objectWithoutPropertiesLoose(_this$props2, [\"children\", \"type\", \"name\"]);\n\n    delete props.onChange;\n    delete props.value;\n    var values = this.getValues();\n    !(type !== 'radio' || !!name) ?  false ? undefined : browser_default()(false) : void 0;\n    return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(src_ButtonGroup, _extends({}, props, {\n      toggle: true,\n      __source: {\n        fileName: ToggleButtonGroup_jsxFileName,\n        lineNumber: 84\n      },\n      __self: this\n    }), map(children, function (child) {\n      var _child$props = child.props,\n          value = _child$props.value,\n          onChange = _child$props.onChange;\n\n      var handler = function handler(e) {\n        return _this.handleToggle(value, e);\n      };\n\n      return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.cloneElement(child, {\n        type: type,\n        name: child.name || name,\n        checked: values.indexOf(value) !== -1,\n        onChange: utils_createChainedFunction(onChange, handler)\n      });\n    }));\n  };\n\n  return ToggleButtonGroup;\n}(external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.Component);\n\nToggleButtonGroup_ToggleButtonGroup.propTypes = ToggleButtonGroup_propTypes;\nToggleButtonGroup_ToggleButtonGroup.defaultProps = ToggleButtonGroup_defaultProps;\nvar UncontrolledToggleButtonGroup = uncontrollable_default()(ToggleButtonGroup_ToggleButtonGroup, {\n  value: 'onChange'\n});\nUncontrolledToggleButtonGroup.Button = src_ToggleButton;\n/* harmony default export */ var src_ToggleButtonGroup = (UncontrolledToggleButtonGroup);\n// CONCATENATED MODULE: ./src/Tooltip.js\n\n\nvar Tooltip_jsxFileName = \"/Users/jason/src/react-bootstrap/src/Tooltip.js\";\n\n\n\n\n\nvar Tooltip_propTypes = {\n  /**\n   * @default 'tooltip'\n   */\n  bsPrefix: prop_types_default.a.string,\n\n  /**\n   * An html id attribute, necessary for accessibility\n   * @type {string|number}\n   * @required\n   */\n  id: isRequiredForA11y_default()(prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.number])),\n\n  /**\n   * Sets the direction the Tooltip is positioned towards.\n   *\n   * > This is generally provided by the `Overlay` component positioning the tooltip\n   */\n  placement: prop_types_default.a.oneOf(['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start']),\n\n  /**\n   * An Overlay injected set of props for positioning the tooltip arrow.\n   *\n   * > This is generally provided by the `Overlay` component positioning the tooltip\n   *\n   * @type {{ ref: ReactRef, style: Object }}\n   */\n  arrowProps: prop_types_default.a.shape({\n    ref: prop_types_default.a.any,\n    style: prop_types_default.a.object\n  }),\n\n  /** @private */\n  innerRef: prop_types_default.a.any,\n\n  /** @private */\n  scheduleUpdate: prop_types_default.a.func,\n\n  /** @private */\n  outOfBoundaries: prop_types_default.a.any\n};\nvar Tooltip_defaultProps = {\n  placement: 'right'\n};\n\nfunction Tooltip(_ref) {\n  var bsPrefix = _ref.bsPrefix,\n      innerRef = _ref.innerRef,\n      placement = _ref.placement,\n      className = _ref.className,\n      style = _ref.style,\n      children = _ref.children,\n      arrowProps = _ref.arrowProps,\n      _ = _ref.scheduleUpdate,\n      _1 = _ref.outOfBoundaries,\n      props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"innerRef\", \"placement\", \"className\", \"style\", \"children\", \"arrowProps\", \"scheduleUpdate\", \"outOfBoundaries\"]);\n\n  return external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", _extends({\n    ref: innerRef,\n    style: style,\n    role: \"tooltip\",\n    \"x-placement\": placement,\n    className: classnames_default()(className, bsPrefix, \"bs-tooltip-\" + placement)\n  }, props, {\n    __source: {\n      fileName: Tooltip_jsxFileName,\n      lineNumber: 84\n    },\n    __self: this\n  }), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", _extends({\n    className: \"arrow\"\n  }, arrowProps, {\n    __source: {\n      fileName: Tooltip_jsxFileName,\n      lineNumber: 92\n    },\n    __self: this\n  })), external_root_React_commonjs2_react_commonjs_react_amd_react_default.a.createElement(\"div\", {\n    className: bsPrefix + \"-inner\",\n    __source: {\n      fileName: Tooltip_jsxFileName,\n      lineNumber: 93\n    },\n    __self: this\n  }, children));\n}\n\nTooltip.propTypes = Tooltip_propTypes;\nTooltip.defaultProps = Tooltip_defaultProps;\n/* harmony default export */ var src_Tooltip = (createBootstrapComponent(Tooltip, 'tooltip'));\n// CONCATENATED MODULE: ./src/index.js\n/* concated harmony reexport Accordion */__webpack_require__.d(__webpack_exports__, \"Accordion\", function() { return src_Accordion; });\n/* concated harmony reexport Alert */__webpack_require__.d(__webpack_exports__, \"Alert\", function() { return src_Alert; });\n/* concated harmony reexport Badge */__webpack_require__.d(__webpack_exports__, \"Badge\", function() { return src_Badge; });\n/* concated harmony reexport Breadcrumb */__webpack_require__.d(__webpack_exports__, \"Breadcrumb\", function() { return src_Breadcrumb; });\n/* concated harmony reexport BreadcrumbItem */__webpack_require__.d(__webpack_exports__, \"BreadcrumbItem\", function() { return src_BreadcrumbItem; });\n/* concated harmony reexport Button */__webpack_require__.d(__webpack_exports__, \"Button\", function() { return src_Button; });\n/* concated harmony reexport ButtonGroup */__webpack_require__.d(__webpack_exports__, \"ButtonGroup\", function() { return src_ButtonGroup; });\n/* concated harmony reexport ButtonToolbar */__webpack_require__.d(__webpack_exports__, \"ButtonToolbar\", function() { return src_ButtonToolbar; });\n/* concated harmony reexport Card */__webpack_require__.d(__webpack_exports__, \"Card\", function() { return src_Card; });\n/* concated harmony reexport CardColumns */__webpack_require__.d(__webpack_exports__, \"CardColumns\", function() { return CardColumns; });\n/* concated harmony reexport CardDeck */__webpack_require__.d(__webpack_exports__, \"CardDeck\", function() { return CardDeck; });\n/* concated harmony reexport CardImg */__webpack_require__.d(__webpack_exports__, \"CardImg\", function() { return src_CardImg; });\n/* concated harmony reexport CardGroup */__webpack_require__.d(__webpack_exports__, \"CardGroup\", function() { return CardGroup; });\n/* concated harmony reexport Carousel */__webpack_require__.d(__webpack_exports__, \"Carousel\", function() { return src_Carousel; });\n/* concated harmony reexport CarouselItem */__webpack_require__.d(__webpack_exports__, \"CarouselItem\", function() { return CarouselItem; });\n/* concated harmony reexport CloseButton */__webpack_require__.d(__webpack_exports__, \"CloseButton\", function() { return src_CloseButton; });\n/* concated harmony reexport Col */__webpack_require__.d(__webpack_exports__, \"Col\", function() { return src_Col; });\n/* concated harmony reexport Collapse */__webpack_require__.d(__webpack_exports__, \"Collapse\", function() { return src_Collapse; });\n/* concated harmony reexport Dropdown */__webpack_require__.d(__webpack_exports__, \"Dropdown\", function() { return src_Dropdown; });\n/* concated harmony reexport DropdownButton */__webpack_require__.d(__webpack_exports__, \"DropdownButton\", function() { return src_DropdownButton; });\n/* concated harmony reexport DropdownItem */__webpack_require__.d(__webpack_exports__, \"DropdownItem\", function() { return src_DropdownItem; });\n/* concated harmony reexport Fade */__webpack_require__.d(__webpack_exports__, \"Fade\", function() { return src_Fade; });\n/* concated harmony reexport Form */__webpack_require__.d(__webpack_exports__, \"Form\", function() { return src_Form; });\n/* concated harmony reexport FormControl */__webpack_require__.d(__webpack_exports__, \"FormControl\", function() { return src_FormControl; });\n/* concated harmony reexport FormCheck */__webpack_require__.d(__webpack_exports__, \"FormCheck\", function() { return src_FormCheck; });\n/* concated harmony reexport FormGroup */__webpack_require__.d(__webpack_exports__, \"FormGroup\", function() { return src_FormGroup; });\n/* concated harmony reexport FormLabel */__webpack_require__.d(__webpack_exports__, \"FormLabel\", function() { return src_FormLabel; });\n/* concated harmony reexport FormText */__webpack_require__.d(__webpack_exports__, \"FormText\", function() { return src_FormText; });\n/* concated harmony reexport Container */__webpack_require__.d(__webpack_exports__, \"Container\", function() { return src_Container; });\n/* concated harmony reexport Image */__webpack_require__.d(__webpack_exports__, \"Image\", function() { return src_Image; });\n/* concated harmony reexport Figure */__webpack_require__.d(__webpack_exports__, \"Figure\", function() { return src_Figure; });\n/* concated harmony reexport InputGroup */__webpack_require__.d(__webpack_exports__, \"InputGroup\", function() { return src_InputGroup; });\n/* concated harmony reexport Jumbotron */__webpack_require__.d(__webpack_exports__, \"Jumbotron\", function() { return src_Jumbotron; });\n/* concated harmony reexport ListGroup */__webpack_require__.d(__webpack_exports__, \"ListGroup\", function() { return src_ListGroup; });\n/* concated harmony reexport ListGroupItem */__webpack_require__.d(__webpack_exports__, \"ListGroupItem\", function() { return src_ListGroupItem; });\n/* concated harmony reexport Media */__webpack_require__.d(__webpack_exports__, \"Media\", function() { return src_Media; });\n/* concated harmony reexport Modal */__webpack_require__.d(__webpack_exports__, \"Modal\", function() { return src_Modal; });\n/* concated harmony reexport ModalBody */__webpack_require__.d(__webpack_exports__, \"ModalBody\", function() { return ModalBody; });\n/* concated harmony reexport ModalDialog */__webpack_require__.d(__webpack_exports__, \"ModalDialog\", function() { return src_ModalDialog; });\n/* concated harmony reexport ModalFooter */__webpack_require__.d(__webpack_exports__, \"ModalFooter\", function() { return ModalFooter; });\n/* concated harmony reexport ModalTitle */__webpack_require__.d(__webpack_exports__, \"ModalTitle\", function() { return ModalTitle; });\n/* concated harmony reexport Nav */__webpack_require__.d(__webpack_exports__, \"Nav\", function() { return src_Nav; });\n/* concated harmony reexport Navbar */__webpack_require__.d(__webpack_exports__, \"Navbar\", function() { return src_Navbar; });\n/* concated harmony reexport NavbarBrand */__webpack_require__.d(__webpack_exports__, \"NavbarBrand\", function() { return src_NavbarBrand; });\n/* concated harmony reexport NavDropdown */__webpack_require__.d(__webpack_exports__, \"NavDropdown\", function() { return src_NavDropdown; });\n/* concated harmony reexport NavItem */__webpack_require__.d(__webpack_exports__, \"NavItem\", function() { return src_NavItem; });\n/* concated harmony reexport Overlay */__webpack_require__.d(__webpack_exports__, \"Overlay\", function() { return src_Overlay; });\n/* concated harmony reexport OverlayTrigger */__webpack_require__.d(__webpack_exports__, \"OverlayTrigger\", function() { return src_OverlayTrigger; });\n/* concated harmony reexport PageItem */__webpack_require__.d(__webpack_exports__, \"PageItem\", function() { return PageItem; });\n/* concated harmony reexport Pagination */__webpack_require__.d(__webpack_exports__, \"Pagination\", function() { return src_Pagination; });\n/* concated harmony reexport Popover */__webpack_require__.d(__webpack_exports__, \"Popover\", function() { return src_Popover; });\n/* concated harmony reexport ProgressBar */__webpack_require__.d(__webpack_exports__, \"ProgressBar\", function() { return src_ProgressBar; });\n/* concated harmony reexport ResponsiveEmbed */__webpack_require__.d(__webpack_exports__, \"ResponsiveEmbed\", function() { return src_ResponsiveEmbed; });\n/* concated harmony reexport Row */__webpack_require__.d(__webpack_exports__, \"Row\", function() { return src_Row; });\n/* concated harmony reexport SafeAnchor */__webpack_require__.d(__webpack_exports__, \"SafeAnchor\", function() { return src_SafeAnchor; });\n/* concated harmony reexport Spinner */__webpack_require__.d(__webpack_exports__, \"Spinner\", function() { return src_Spinner; });\n/* concated harmony reexport SplitButton */__webpack_require__.d(__webpack_exports__, \"SplitButton\", function() { return src_SplitButton; });\n/* concated harmony reexport Tab */__webpack_require__.d(__webpack_exports__, \"Tab\", function() { return src_Tab; });\n/* concated harmony reexport TabContainer */__webpack_require__.d(__webpack_exports__, \"TabContainer\", function() { return src_TabContainer; });\n/* concated harmony reexport TabContent */__webpack_require__.d(__webpack_exports__, \"TabContent\", function() { return src_TabContent; });\n/* concated harmony reexport Table */__webpack_require__.d(__webpack_exports__, \"Table\", function() { return src_Table; });\n/* concated harmony reexport TabPane */__webpack_require__.d(__webpack_exports__, \"TabPane\", function() { return src_TabPane; });\n/* concated harmony reexport Tabs */__webpack_require__.d(__webpack_exports__, \"Tabs\", function() { return src_Tabs; });\n/* concated harmony reexport ThemeProvider */__webpack_require__.d(__webpack_exports__, \"ThemeProvider\", function() { return src_ThemeProvider; });\n/* concated harmony reexport ToggleButton */__webpack_require__.d(__webpack_exports__, \"ToggleButton\", function() { return src_ToggleButton; });\n/* concated harmony reexport ToggleButtonGroup */__webpack_require__.d(__webpack_exports__, \"ToggleButtonGroup\", function() { return src_ToggleButtonGroup; });\n/* concated harmony reexport Tooltip */__webpack_require__.d(__webpack_exports__, \"Tooltip\", function() { return src_Tooltip; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/***/ })\n/******/ ]);\n});"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_025_sonarqube__keycloak__saml/.gitignore",
    "content": "*.pem\n*.key\n*.p12"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_025_sonarqube__keycloak__saml/ReadMe.md",
    "content": "# Sonarqube -- Keycloak -- SAML\n\n- [Sonarqube » v10.1 » Instance administration » Authentication and provisioning » SAML » How to set up Keycloak](https://docs.sonarsource.com/sonarqube/latest/instance-administration/authentication/saml/how-to-set-up-keycloak/)\n\n## High Level Objectives\n\n- Setup SAML-based Authentication\n- Generate Keys and Certificates\n- Configure Identity Provider (Keycloak) and Service Provider (Sonarqube)\n\n## Theory\n\nThe integration of SonarQube with Keycloak using SAML (Security Assertion Markup Language) forms a unified authentication system that allows users to be authenticated by a single identity provider (Keycloak) and gain access to a service provider (SonarQube). Here's an overview of the architecture and a detailed explanation of how the different pieces fit together.\n\n### Identity Provider and Service Provider\n\nIn the context of authentication using Security Assertion Markup Language (SAML), the terms \"Identity Provider\" (IdP) and \"Service Provider\" (SP) refer to specific roles within the authentication process. Let's look at the definitions and responsibilities of each:\n\n#### Identity Provider (IdP)\n\nThe Identity Provider, often abbreviated as IdP, is a system that creates, maintains, and manages identity information for principals (i.e., users) while providing authentication services to relying applications within a federation.\n\n##### What is Federation\n\nFederation, in this context, refers to the establishment of trust and communication between multiple independent systems (or identity domains). In a federation, different organizations or entities (such as companies, universities, government agencies, etc.) maintain their own identity systems, known as Identity Providers (IdPs). These IdPs can communicate and share identity information with each other securely.\n\nFor example, consider two organizations, A and B, each having their own IdP. They can establish a federation between their IdPs, allowing users from organization A to access services provided by organization B without needing separate credentials for each domain. When a user from organization A tries to access a service in organization B, they are redirected to their own IdP (IdP of organization A) for authentication. Once authenticated, the user's IdP generates a token (like a SAML assertion) containing identity information, and this token is sent to the service provider (organization B) to grant access.\n\n##### Responsibilities of IdP\n\n- **Authentication**: It authenticates users by verifying their identity, typically through a username and password, but possibly using other methods like multi-factor authentication (MFA).\n- **Identity Management**: It stores and manages user identity information, such as usernames, emails, roles, and other attributes.\n- **SAML Assertion Generation**: After successful authentication, the IdP generates a SAML assertion containing the user's identity information and potentially additional attributes. This assertion is used to inform the Service Provider that the user has been authenticated.\n- **Encryption and Signature**: It may encrypt and sign the SAML assertion to ensure integrity and confidentiality.\n\nIn the given configuration, Keycloak is playing the role of the Identity Provider.\n\n#### Service Provider (SP)\n\nThe Service Provider, or SP, refers to the entity that provides services, such as a web application, to the user. It relies on the Identity Provider to authenticate users.\n\n##### Responsibilities of SP\n\n- **Redirection for Authentication**: When a user tries to access the service, the SP redirects them to the IdP for authentication, initiating the SAML authentication process.\n- **SAML Response Handling**: After the IdP authenticates the user, the SP receives the SAML assertion, verifies it (e.g., by checking the signature), and extracts the necessary information about the user.\n- **Authorization**: Based on the information in the SAML assertion, the SP determines what access and privileges the user should have within the application.\n- **Creating User Session**: If the SAML assertion is valid, the SP creates a user session, allowing the user to interact with the application.\n\nIn the given configuration, SonarQube is acting as the Service Provider.\n\n#### Conclusion\n\nIn a SAML-based authentication flow, the Identity Provider is responsible for authenticating users and issuing SAML assertions, while the Service Provider relies on those assertions to grant access to its services. The separation of these roles enables Single Sign-On (SSO) capabilities, allowing users to authenticate once with the IdP and gain access to multiple SPs without re-entering their credentials. It also facilitates the integration of various applications and services within an organization, as they can all rely on a central IdP for authentication.\n\n### 1. High-level Architecture of our local setup\n\n**1.1 SonarQube**: A continuous inspection engine that checks the code quality of various programming languages.\n\n**1.2 Keycloak**: An open-source Identity and Access Management (IAM) tool that provides SAML-based authentication and authorization services.\n\n**1.3 SAML**: A standard for exchanging authentication and authorization data between parties, particularly between an identity provider (Keycloak) and a service provider (SonarQube).\n\n### 2. Key Parts of the Configuration\n\n**2.1 Generating Private Key and Certificate**: This is essential for securing the SAML communication. The keys and certificates are used to sign and encrypt the SAML assertions, ensuring integrity and confidentiality.\n\n**2.2 Starting Keycloak with Docker**: Keycloak is run as a containerized application, making deployment and scaling more manageable.\n\n**2.3 Setting Up Keycloak**: Configuration of Keycloak to recognize SonarQube as a SAML client, importing the generated certificates, and setting up the SAML client details.\n\n**2.4 SonarQube Configuration**: This part involves configuring SonarQube to recognize Keycloak as the SAML identity provider and mapping user attributes.\n\n**2.5 User Management**: Creating users in Keycloak, which can be authenticated to access SonarQube.\n\n### 3. Detailed Workflow\n\n![img.png](.images/img.png)\n\n1. **User Initiates Login**: The user clicks on the 'Login with SAML' button on the SonarQube web page.\n\n2. **SAML Authentication Request**: SonarQube generates a SAML authentication request and redirects the user's browser to Keycloak.\n\n3. **Keycloak Authentication**: Keycloak authenticates the user, often through a username/password form, and generates a SAML assertion.\n\n4. **Encrypting and Signing Assertions**: Keycloak encrypts and signs the SAML assertion using the configured keys and certificates.\n\n5. **SAML Response to SonarQube**: Keycloak redirects the browser back to SonarQube with the SAML response containing the encrypted and signed assertion.\n\n6. **SonarQube Validates SAML Response**: SonarQube verifies the signature, decrypts the assertion, and maps the user attributes (login, name, email).\n\n7. **Access Granted**: If the validation is successful, SonarQube grants access to the user, and the user's role and privileges in SonarQube are determined.\n\n8. **Admin Interaction**: Administrators can manage user permissions in SonarQube, and those permissions will reflect in the user's session.\n\n### How and where are we using the keys and certificates?\n\nIn the context of SAML authentication between SonarQube (Service Provider, SP) and Keycloak (Identity Provider, IdP), certificates and private keys play crucial roles in ensuring the integrity, authenticity, and confidentiality of the information exchanged. Here's how and when they are used in this task:\n\n#### 1. Generation of Private Key and Certificate\n\nThe private key and the corresponding public key certificate are generated using OpenSSL commands. The private key is kept secret, and the corresponding public key is encapsulated within the certificate.\n\n#### 2. Usage in Keycloak (Identity Provider)\n\n##### 2.1 Signing SAML Assertions\n\n- **Private Key**: Keycloak uses the private key to sign SAML assertions. Signing the assertion ensures that it hasn't been tampered with during transit. The recipient (SonarQube) can verify the signature using the corresponding public key contained in the certificate.\n\n- **Certificate**: When configuring Keycloak, the certificate (containing the public key) is imported. This certificate may be shared with the Service Provider or made publicly available, enabling the SP to verify the signature on the SAML assertions.\n\n##### 2.2 Encrypting SAML Assertions\n\n- **Private Key**: If encryption is enabled, the IdP might use the private key for encryption-related processes, such as key exchange mechanisms.\n\n- **Certificate**: The certificate can also be used in encryption mechanisms, allowing the SP to securely communicate encryption keys or encrypt data in a way that only the corresponding private key can decrypt.\n\n#### 3. Usage in SonarQube (Service Provider)\n\n##### 3.1 Verifying SAML Assertions\n\n- **Certificate**: SonarQube uses the certificate (specifically, the public key within it) to verify the signature on the SAML assertions received from Keycloak. By verifying the signature, SonarQube ensures that the assertion is authentic and hasn't been altered.\n\n##### 3.2 Decrypting SAML Assertions\n\n- **Private Key**: If the SAML assertions are encrypted by Keycloak, SonarQube will need the corresponding private key to decrypt them. This ensures that only SonarQube can read the encrypted information.\n\n#### 4. Packaging and Conversion\n\nDuring the task, you'll notice the private key is converted to PKCS#8 format, and a PKCS#12 keystore is created. These conversions ensure compatibility with various systems and standards.\n\n- **PKCS#8**: This is a standard for private key information, providing a consistent way to store and transport private keys.\n- **PKCS#12**: This is a standard for storing multiple cryptography objects (such as a private key and certificate) in a single, password-protected file. It's used in the task to create a keystore containing both the certificate and the private key.\n\n#### Conclusion\n\nThe certificates and private keys generated in this task are central to the secure operation of SAML authentication between SonarQube and Keycloak. They are used for signing and verifying SAML assertions, potentially encrypting and decrypting data, and ensuring that the information exchanged is both authentic and confidential. By properly managing these keys and certificates, the integrity and security of the entire authentication process are maintained.\n\n## Task\n\n### Generate Private Key\n\n```bash\n$ openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048 \n$ ls\nReadMe.md       private_key.pem\n\n$ openssl req -new -x509 -key private_key.pem -out cert.pem -days 365 -subj \"/C=US/ST=California/L=San Francisco/O=My Company/OU=IT/CN=sonarqube.mycompany.com/emailAddress=admin@mycompany.com\"\n\n$ openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in private_key.pem -out private_key_pkcs8.pem\n$ ls\nReadMe.md             private_key.pem\ncert.pem              private_key_pkcs8.pem\n\n$ openssl pkcs12 -export -in cert.pem -inkey private_key.pem -out keystore.p12 -name myalias # Give password as : pass123\n$ ls\nReadMe.md             cert.pem              keystore.p12          private_key.pem       private_key_pkcs8.pem\n```\n\n### Start Keycloak using docker\n\n```bash\n$ docker run --rm --name keycloak -p 8080:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin quay.io/keycloak/keycloak:22.0.1 start-dev\n.\n```\n\n### Setting up Keycloak\n\n> Ensure that you are doing 3.3 before 3.2 otherwise it leads to erroneaus state.\n\n1. Access at [http://localhost:8080](http://localhost:8080)\n2. Clients » Create client »\n   - 2.1. Client type : SAML\n   - 2.2 Client ID : sonarqube\n   - 2.3 Valid redirect URLs : `http://localhost:9000/oauth2/callback/saml`\n3. Clients » Client details »\n   - 3.1 Keys » Client signature required » On\n   - 3.3 Encrypt Assertions » On\n     - Import : JKS\n     - Import the keystore.p12\n     - Key alias : `myalias` which you gave in the command\n     - Store Password : `pass123` which you gave in the command\n   - 3.2 Keys » Certificate » Import Key » Select `Certificate PEM` and import the `cert.pem` file and import\n4. Client scopes » Delete `role_list`\n5. Client scopes » sonarqube-dedicated »\n   - Configure a new mapper » User Property\n     - Name : `Login`\n     - Property : `Username`\n     - SAML Attribute Name : `login` and Save\n   - Configure a new mapper » User Property\n     - Name: `Name`\n     - Property : `Username`\n     - SAML Attribute Name : `name` and Save\n   - Configure a new mapper » User Property\n     - Name: `Email`\n     - Property: `Email`\n     - SAML Attribute Name: `email` and Save\n\n6. Realm Setting » SAML 2.0 Identity Provider Metadata » `http://localhost:8080/realms/master/protocol/saml/descriptor` , we will use this later\n\n7. You can also create a user in keycloak\n   - Username : test\n   - Email : test@test.com\n   - Email Verified : yes\n   - First Name : test\n   - Last Name : test\n   - Click on `Create`\n   - Go to `Credentials` and click on `Set Password` and set the password for the user as `test` and set Temporary to Off\n\n### Sonarqube\n\n```bash\n$ docker run --rm --name sonarqube --name sonarqube -p 9000:9000 sonarqube # Login with admin/admin\n.\n```\n\nYou will need the following settings\n\n- Administration » Authentication » SAML » Create Configuration\n- Application ID : `sonarqube`\n- Provider ID : `http://localhost:8080/realms/master`\n- SAML login url : `http://localhost:8080/realms/master/protocol/saml`\n- Identity provider certificate: The value you get from Realm Settings > Keys > RS256. Click on **Certificate**.\n- SAML user login attribute: login\n- SAML user name attribute: name\n- SAML user email attribute: email\n- Sign requests: Set to true\n- Service provider private key : `$ cat private_key_pkcs8.pem | pbcopy`\n- Service provider certificate : `$ cat cert.pem| pbcopy`\n\n- Click on Test Configuration and you should see a success message.\n- Now you can click on `Enable configuration`\n\n## Validation\n\n### Login as user `test`\n\n- Visit [http://localhost:9000](http://localhost:9000)\n\n![img](.images/image-2023-08-06-11-46-55.png)\n\n- Click on `Login with SAML`\n\n![img](.images/image-2023-08-06-11-47-37.png)\n\n- Login with `test/test`\n\n![img](.images/image-2023-08-06-11-48-13.png)\n\n### Login as user `admin`\n\n- You can login as admin user and check the priviledges of the new user\n\n![img](.images/image-2023-08-06-11-56-40.png)\n\n![img](.images/image-2023-08-06-11-57-09.png)\n\n- You can give me additional permissions and if you do, the login of the user would change accordingly\n\n### Login as user `test` after giving admin priviledges\n\n![img](.images/image-2023-08-06-11-58-05.png)\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_026_mssql/ReadMe.md",
    "content": "# MSSQL\n\n- [Quickstart: Run SQL Server Linux container images with Docker](https://learn.microsoft.com/en-us/sql/linux/quickstart-install-connect-docker?view=sql-server-ver16&pivots=cs1-bash)\n- [Docker Desktop Setting on Mac1](https://devblogs.microsoft.com/azure-sql/development-with-sql-in-containers-on-macos/)\n\n- To run the Linux container image with Docker,\n\n```bash\ndocker run --rm \\\n-e \"ACCEPT_EULA=Y\" \\\n-e \"MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>\" \\\n-e \"MSSQL_AGENT_ENABLED=1\" \\\n-p 1433:1433 --name sql1 --hostname sql1 \\\n-d \\\nmcr.microsoft.com/mssql/server:2022-latest\n```\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_027_docker_openvpn/Readme.md",
    "content": "# OpenVPN\n\n- [OpenVPN](#openvpn)\n  - [Install via script](#install-via-script)\n  - [Openvpn steps (Install manually)](#openvpn-steps-install-manually)\n    - [System settings](#system-settings)\n    - [Install Docker](#install-docker)\n    - [Install VPN](#install-vpn)\n  - [Create profiles using openvpn](#create-profiles-using-openvpn)\n  - [Download the profile locally for openvpn](#download-the-profile-locally-for-openvpn)\n  - [Download and install OpenVPN client](#download-and-install-openvpn-client)\n  - [Revoke the profile from openvpn](#revoke-the-profile-from-openvpn)\n  - [list the profiles](#list-the-profiles)\n\n[github.com » kylemanna/docker-openvpn (last commit around 4 years back)](https://github.com/kylemanna/docker-openvpn)\n\n[digitalocean.com » How To Run OpenVPN in a Docker Container on Ubuntu 14.04](https://www.digitalocean.com/community/tutorials/how-to-run-openvpn-in-a-docker-container-on-ubuntu-14-04)\n\n[github.com » dockovpn/dockovpn](https://github.com/dockovpn/dockovpn)\n\n[dockovpn.io](https://dockovpn.io)\n\n## Install via script\n\n```bash\nsudo bash setup_vpn.sh\n\n# Set an environment variable OVPN_DATA to be used as the name for a Docker volume that will store OpenVPN configuration and data.\nexport OVPN_DATA=ovpn-data\n\n# Run a temporary Docker container with the OpenVPN image to export the configuration for the VPN client named \"client-laptop\".\n# This command retrieves the complete client configuration and certificates necessary for a VPN connection, formatted as an .ovpn file.\n# The output from this command should be manually copied and saved on the client device as \"client-personal.ovpn\".\nsudo docker run -v $OVPN_DATA:/etc/openvpn --rm kylemanna/openvpn ovpn_getclient client-laptop\n\n# Download and save the file as client-laptop.ovpn and import it in the OpenVPN client\n```\n\n## Openvpn steps (Install manually)\n\n### System settings\n\n```bash\n# Displays the current status of IP forwarding for IPv4.\nsysctl net.ipv4.ip_forward\n\n# Enables IP forwarding for IPv4. This change is temporary and will be lost after a reboot.\nsudo sysctl -w net.ipv4.ip_forward=1\n\n# Displays the current value of the lowest unprivileged port number that can be used by non-root users.\nsudo sysctl net.ipv4.ip_unprivileged_port_start\n\n# Sets the lowest unprivileged port number to 443, allowing non-root users to bind to ports 443 and above. This requires superuser privileges and the change is temporary, lost after a reboot.\nsudo sysctl -w net.ipv4.ip_unprivileged_port_start=443\n```\n\n### [Install Docker](https://docs.docker.com/engine/install/ubuntu)\n\n```bash\n# Add Docker's official GPG key:\nsudo apt-get update\nsudo apt-get install ca-certificates curl gnupg\nsudo install -m 0755 -d /etc/apt/keyrings\ncurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg\nsudo chmod a+r /etc/apt/keyrings/docker.gpg\n\n# Add the repository to Apt sources:\necho \\\n  \"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \\\n  $(. /etc/os-release && echo \"$VERSION_CODENAME\") stable\" | \\\n  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null\nsudo apt-get update\n\nsudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin\n```\n\n### Install VPN\n\n```bash\n# Go sudo\nsudo su\n\n# Set an environment variable OVPN_DATA to be used as the name for a Docker volume that will store OpenVPN configuration and data.\nexport OVPN_DATA=ovpn-data\n\n# Create a Docker volume named after the value of OVPN_DATA to persist OpenVPN configuration and data across container restarts.\ndocker volume create $OVPN_DATA\n\n# Get public IP of instance\nPUBLIC_IP_OF_THE_SERVER_INSTANCE=$(curl -s ifconfig.me)\n# Run a temporary Docker container with the OpenVPN image to generate OpenVPN server configuration files, specifying the server's public IP and the protocol and port to use (replace <PUBLIC_IP_OF_THE_SERVER_INSTANCE> with the actual IP).\ndocker run -v $OVPN_DATA:/etc/openvpn -it --rm kylemanna/openvpn ovpn_genconfig -u tcp://$PUBLIC_IP_OF_THE_SERVER_INSTANCE:443\n\n# Run a temporary Docker container with the OpenVPN image to initialize the Public Key Infrastructure (PKI) for OpenVPN without a passphrase for the CA key (for ease of automated start without manual intervention).\n# When prompted : Common Name (eg: your user, host, or server name) [Easy-RSA CA]: : press Enter, OR setting up a personal VPN, you can keep it simple, like \"MyVPN CA\"\ndocker run -v $OVPN_DATA:/etc/openvpn -it --rm kylemanna/openvpn ovpn_initpki nopass\n\n# Run a Docker container in detached mode with privileged access and configure it to restart automatically on failure or reboot. It binds port 443 on the host to port 1194 on the container, which is the standard OpenVPN port, but using TCP. The container uses the volume specified by OVPN_DATA to persist configuration data.\ndocker run --privileged --detach --name openvpn --restart always --publish 443:1194/tcp --volume $OVPN_DATA:/etc/openvpn kylemanna/openvpn\n```\n\n## Create profiles using openvpn\n\n```bash\n# export SSH_SERVER=ubuntu@<public_instance_jip>\n\n\n# Run a temporary Docker container with the OpenVPN image to generate a client certificate and key pair named \"client-laptop\" without a passphrase.\n# This operation utilizes the easyrsa tool included in the OpenVPN image to create the necessary files for a new VPN client named \"client-laptop\".\n# The \"--rm\" option ensures that the container is removed after the command completes, and the certificate and keys are stored in the persistent volume named by OVPN_DATA.\nsudo docker run -v $OVPN_DATA:/etc/openvpn --rm kylemanna/openvpn easyrsa build-client-full client-laptop nopass\n```\n\n## Download the profile locally for openvpn\n\n```bash\n# Run a temporary Docker container with the OpenVPN image to export the configuration for the VPN client named \"client-laptop\".\n# This command retrieves the complete client configuration and certificates necessary for a VPN connection, formatted as an .ovpn file.\n# The output from this command should be manually copied and saved on the client device as \"client-personal.ovpn\".\nsudo docker run -v $OVPN_DATA:/etc/openvpn --rm kylemanna/openvpn ovpn_getclient client-laptop\n```\n\n## Download and install OpenVPN client\n\n[mac os openvpn client](https://openvpn.net/client-connect-vpn-for-mac-os)\n\n- Open the OpenVPN client and import the file `client-personal.ovpn` and connect\n\n```bash\n# Validate your public IP is the IP of the VPN server\ncurl ifconfig.me\n```\n\n## Revoke the profile from openvpn\n\n```bash\n# You will have to confirm : yes\nsudo docker run -v $OVPN_DATA:/etc/openvpn --rm -i kylemanna/openvpn ovpn_revokeclient client-laptop\n```\n\n## list the profiles\n\n```bash\n# To print the list of profiles\nsudo docker run -v $OVPN_DATA:/etc/openvpn --rm kylemanna/openvpn ovpn_listclients\n```\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_027_docker_openvpn/setup_vpn.sh",
    "content": "#!/bin/bash\n\n# Last run on : Ubuntu 22.04 LTS, 7 Mar 2024\n\n# Script to set up OpenVPN on a server using Docker\nsudo apt-get update \nsudo apt-get install -y ca-certificates curl gnupg \nsudo install -m 0755 -d /etc/apt/keyrings \ncurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg \nsudo chmod a+r /etc/apt/keyrings/docker.gpg \necho \\\n\"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \\\n$(. /etc/os-release && echo \"$VERSION_CODENAME\") stable\" | \\\nsudo tee /etc/apt/sources.list.d/docker.list > /dev/null\n# Install Docker Engine, CLI, and additional plugins\nsudo apt-get update \nsudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin \n\n# Configure system settings for OpenVPN\necho \"Configuring system settings for OpenVPN...\"\nsudo sysctl -w net.ipv4.ip_forward=1 \nsudo sysctl -w net.ipv4.ip_unprivileged_port_start=443 \n\n# Set up OpenVPN\necho \"Setting up OpenVPN...\"\nexport OVPN_DATA=ovpn-data\ndocker volume create $OVPN_DATA\n\n# Obtain the public IP of the server\nPUBLIC_IP_OF_THE_SERVER_INSTANCE=$(curl -s ifconfig.me)\n\ndocker run -v $OVPN_DATA:/etc/openvpn -it --rm kylemanna/openvpn ovpn_genconfig -u tcp://$PUBLIC_IP_OF_THE_SERVER_INSTANCE:443\ndocker run -v $OVPN_DATA:/etc/openvpn -it --rm kylemanna/openvpn ovpn_initpki nopass\ndocker run --privileged --detach --name openvpn --restart always --publish 443:1194/tcp --volume $OVPN_DATA:/etc/openvpn kylemanna/openvpn\nsudo docker run -v $OVPN_DATA:/etc/openvpn --rm kylemanna/openvpn easyrsa build-client-full client-laptop nopass\n\n# Output command to retrieve the client configuration\necho \"Run the following command to output the client configuration:\"\necho \"sudo docker run -v $OVPN_DATA:/etc/openvpn --rm kylemanna/openvpn ovpn_getclient client-laptop\"\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_028_docker_engine__networking__overview/ReadMe.md",
    "content": "# [Networking overview](https://docs.docker.com/engine/network/)\n\nHere's the information in a tabular format suitable for a README file:\n\n| **Driver** | **Description**                                                                                  |\n|------------|--------------------------------------------------------------------------------------------------|\n| bridge     | The default network driver.                                                                      |\n| host       | Removes network isolation between the container and the Docker host.                             |\n| none       | Completely isolates a container from the host and other containers.                              |\n| overlay    | Connects multiple Docker daemons together.                                                       |\n| ipvlan     | Provides full control over both IPv4 and IPv6 addressing.                                        |\n| macvlan    | Assigns a MAC address to a container, allowing it to appear as a physical device on the network. |\n\nThe following example creates a network using the bridge network driver and running a container in the created network:\n\n```bash\ndocker network create -d bridge my-net\ndocker run --network=my-net -itd --name=container3 busybox\n```\n\nValidation\n\n```bash\ndocker network ls | egrep \"my-net|NETWORK\"\n```\n\nOutput\n\n```bash\nNETWORK ID     NAME                        DRIVER    SCOPE\n3b034b1f4229   my-net                      bridge    local\n```\n\n```bash\ndocker network inspect my-net --format='{{json .IPAM.Config}}' | jq .\n```\n\nOutput\n\n```json\n[\n  {\n    \"Subnet\": \"172.20.0.0/16\",\n    \"Gateway\": \"172.20.0.1\"\n  }\n]\n```\n\nRetrieve container details\n\n```bash\ndocker network inspect my-net --format='{{json .Containers}}' | jq .\n```\n\nOutput\n\n```json\n{\n  \"xxxxxxxxxxxxxxxxxxxx\": {\n    \"Name\": \"container3\",\n    \"EndpointID\": \"xxxxxxxxxxxxxxx\",\n    \"MacAddress\": \"x.x.x.x.x.\",\n    \"IPv4Address\": \"172.20.0.2/16\",\n    \"IPv6Address\": \"\"\n  }\n}\n```\n\n**Subnet Mask Explanation**: `/16` means that the first 16 bits of the IP address are used for the network part, and the remaining bits are used for the host part. This subnet mask corresponds to `255.255.0.0`, which means the network is `172.20.0.0` and the IP address `172.20.0.2` is part of that network.\n\n---\n\nThe following example runs a Redis container, with Redis binding to localhost, then running the redis-cli command and connecting to the Redis server over the `container's localhost interface`.\n\n```bash\ndocker run -d --name redis redis --bind 127.0.0.1\ndocker run --rm -it --network container:redis redis redis-cli -h 127.0.0.1\n```\n\nOutput\n\n```bash\n127.0.0.1:6379> \n```\n\n---\n\nIf you include the localhost IP address (127.0.0.1, or ::1) with the publish flag, only the Docker host and its containers can access the published container port.\n\n```bash\ndocker run -p 127.0.0.1:8080:80 -p '[::1]:8080:80' nginx\n```\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_029_docker_engine__networking__bridge_network_tutorial/ReadMe.md",
    "content": "# [Bridge Network Tutorial](https://docs.docker.com/engine/network/tutorials/standalone/)\n\n- [Bridge Network Tutorial](#bridge-network-tutorial)\n  - [Networking with standalone containers](#networking-with-standalone-containers)\n    - [Use the default bridge network](#use-the-default-bridge-network)\n    - [Use user-defined bridge networks](#use-user-defined-bridge-networks)\n\n## Networking with standalone containers\n\n### [Use the default bridge network](https://docs.docker.com/engine/network/tutorials/standalone/#use-the-default-bridge-network)\n\nCheck the existing networks on your Docker host.\n\n```bash\ndocker network ls\n```\n\nOutput\n\n```bash\nNETWORK ID          NAME                DRIVER              SCOPE\n17e324f45964        bridge              bridge              local\n6ed54d316334        host                host                local\n7092879f2cc8        none                null                local\n```\n\nRun two containers using the default bridge network.\n\n```bash\ndocker run -dit --name alpine1 alpine ash\n\ndocker run -dit --name alpine2 alpine ash\n```\n\n```bash\ndocker container ls\n```\n\nValidate that the containers are part of the default bridge network.\n\n```bash\ndocker network inspect bridge | jq '.[0].IPAM.Config'\n```\n\nOutput shows the default subnet and gateway for the bridge network.\n\n```json\n[\n  {\n    \"Subnet\": \"172.17.0.0/16\",\n    \"Gateway\": \"172.17.0.1\"\n  }\n]\n```\n\nList the containers connected to the bridge network along with their IP addresses.\n\n```bash\ndocker network inspect bridge | jq '.[0].Containers | to_entries[] | {Name: .value.Name, IPv4Address: .value.IPv4Address}'\n```\n\nOutput\n\n```json\n{\n  \"Name\": \"alpine1\",\n  \"IPv4Address\": \"172.17.0.2/16\"\n}\n{\n  \"Name\": \"alpine2\",\n  \"IPv4Address\": \"172.17.0.3/16\"\n}\n```\n\nNear the top, information about the bridge network is listed, including the IP address of the gateway between the Docker host and the bridge network (172.17.0.1). Under the Containers key, each connected container is listed, along with information about its IP address (172.17.0.2 for alpine1 and 172.17.0.3 for alpine2)\n\nUse the docker attach command to connect to alpine1.\n\n```bash\ndocker attach alpine1\n```\n\nFrom within alpine1, check the interface configuration using the ip addr show command.\n\n```bash\n/ # ip addr show | grep -A 4 18\n18: eth0@if19: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 65535 qdisc noqueue state UP \n    link/ether xxxxxxxxx brd ff:ff:ff:ff:ff:ff\n    inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0\n       valid_lft forever preferred_lft forever\n```\n\nNotice that the second interface has the IP address 172.17.0.2, which is the same address shown for alpine1 in the previous step.\n\nFrom within alpine1, make sure you can connect to the internet by pinging google.com\n\n```bash\nping -c 2 google.com\n```\n\nOutput\n\n```bash\n...output omitted...\n--- google.com ping statistics ---\n2 packets transmitted, 2 packets received, 0% packet loss\n```\n\nNow try to ping the second container. First, ping it by its IP address, 172.17.0.3:\n\n```bash\nping -c 2 172.17.0.3\n```\n\nOutput\n\n```bash\n...output omitted...\n--- 172.17.0.3 ping statistics ---\n2 packets transmitted, 2 packets received, 0% packet loss\n```\n\ntry pinging the alpine2 container by container name. This will fail.\n\n```bash\nping -c 2 alpine2\n```\n\nOutput\n\n```bash\nping: bad address 'alpine2'\n```\n\nStop and remove both containers.\n\n```bash\ndocker container stop alpine1 alpine2\ndocker container rm alpine1 alpine2\n```\n\n### [Use user-defined bridge networks](https://docs.docker.com/engine/network/tutorials/standalone/#use-user-defined-bridge-networks)\n\nCreate the `alpine-net` network. You do not need the `--driver bridge` flag since it's the default, but this example shows how to specify it.\n\n```bash\ndocker network create --driver bridge alpine-net\n```\n\nCheck the existing networks on your Docker host.\n\n```bash\ndocker network ls\n```\n\nOutput\n\n```bash\nNETWORK ID     NAME         DRIVER    SCOPE\n8eb10931dafa   alpine-net   bridge    local\n9c07ae548da7   bridge       bridge    local\n8090aebebfd2   host         host      local\n237022f0a976   none         null      local\n```\n\nInspect the `alpine-net` network.\n\n```bash\ndocker network inspect alpine-net | jq '.[0].IPAM.Config'\n```\n\nOutput shows the default subnet and gateway for the `alpine-net` network.\n\n```json\n[\n  {\n    \"Subnet\": \"172.18.0.0/16\",\n    \"Gateway\": \"172.18.0.1\"\n  }\n]\n```\n\nNotice that this network's gateway is `172.18.0.1`, as opposed to the default bridge network, whose gateway is `172.17.0.1`. \n\nCreate your four containers. Notice the `--network` flags. You can only connect to one network during the docker run command, so you need to use `docker network connect` afterward to connect `alpine4` to the bridge network as well.\n\n```bash\n docker run -dit --name alpine1 --network alpine-net alpine ash\n\n docker run -dit --name alpine2 --network alpine-net alpine ash\n\n docker run -dit --name alpine3 alpine ash\n\n docker run -dit --name alpine4 --network alpine-net alpine ash\n```\n\n```bash\n docker network connect bridge alpine4\n```\n\nList containers connected to the `alpine-net` network along with their IP addresses.\n\n```bash\ndocker network inspect alpine-net | jq '.[0].Containers | to_entries[] | {Name: .value.Name, IPv4Address: .value.IPv4Address}'\n```\n\nOutput\n\n```bash\n{\n  \"Name\": \"alpine2\",\n  \"IPv4Address\": \"172.18.0.3/16\"\n}\n{\n  \"Name\": \"alpine1\",\n  \"IPv4Address\": \"172.18.0.2/16\"\n}\n{\n  \"Name\": \"alpine4\",\n  \"IPv4Address\": \"172.18.0.4/16\"\n}\n```\n\nList containers connected to the bridge network along with their IP addresses.\n\n```bash\ndocker network inspect bridge | jq '.[0].Containers | to_entries[] | {Name: .value.Name, IPv4Address: .value.IPv4Address}'\n```\n\nOutput\n\n```bash\n{\n  \"Name\": \"alpine3\",\n  \"IPv4Address\": \"172.17.0.2/16\"\n}\n{\n  \"Name\": \"alpine4\",\n  \"IPv4Address\": \"172.17.0.3/16\"\n}\n```\n\n- On user-defined networks like alpine-net, containers can not only communicate by IP address, but can also resolve a container name to an IP address. This capability is called automatic `service discovery`.\n- Let's connect to alpine1 and test this out. alpine1 should be able to resolve alpine2 and alpine4 (and alpine1, itself) to IP addresses.\n\n```bash\ndocker attach alpine1\n```\n\n```bash\n#----------- Ping alpine1\n/ # ping -c 1 alpine2\n...output omitted...\n--- alpine2 ping statistics ---\n1 packets transmitted, 1 packets received, 0% packet loss\n\n#----------- Ping alpine4\n/ # ping -c 1 alpine4\nPING alpine4 (172.18.0.4): 56 data bytes\n64 bytes from 172.18.0.4: seq=0 ttl=64 time=0.127 ms\n\n--- alpine4 ping statistics ---\n1 packets transmitted, 1 packets received, 0% packet loss\n\n#-----------  Ping the IP address of alpine4\n/ # ping -c 1 172.18.0.4\nPING 172.18.0.4 (172.18.0.4): 56 data bytes\n64 bytes from 172.18.0.4: seq=0 ttl=64 time=0.109 ms\n\n--- 172.18.0.4 ping statistics ---\n1 packets transmitted, 1 packets received, 0% packet loss\n\n#----------- Ping alpine3\n/ # ping -c 1 alpine3, # because alpine3 is not on the alpine-net network\nping: bad address 'alpine3'\n\n/ # ping -c 1 172.17.0.2 # alpine3's IP address, because it's on the bridge network\n--- 172.17.0.2 ping statistics ---\n1 packets transmitted, 0 packets received, 100% packet loss\n```\n\nRemember that `alpine4` is connected to both the default `bridge` network and `alpine-net`. It should be able to reach all of the other containers. However, you will need to address alpine3 by its IP address. Attach to it and run the tests.\n\n```bash\ndocker attach alpine4\n```\n\n```bash\n##----------- Ping alpine3 by name\n/ # ping alpine3\nping: bad address 'alpine3'\n\n##----------- Ping alpine3 by IP address\n/ # ping -c 1 172.17.0.2\nPING 172.17.0.2 (172.17.0.2): 56 data bytes\n64 bytes from 172.17.0.2: seq=0 ttl=64 time=0.382 ms\n\n--- 172.17.0.2 ping statistics ---\n1 packets transmitted, 1 packets received, 0% packet loss\nround-trip min/avg/max = 0.382/0.382/0.382 ms\n/ # \n```\n\nYou should also be able to connect to internet from all the containers.\n\n"
  },
  {
    "path": "home/containers/docker/taskset_docker_containers/task_030_docker_engine__networking__host_networking_tutorial/ReadMe.md",
    "content": "# [Host Networking Tutorial](https://docs.docker.com/engine/network/tutorials/host/)\n\n## Pre-requisites\n\nThe host networking driver only works on Linux hosts, but is available as a beta feature on Docker Desktop version 4.29 and later for Mac, Windows, and Linux.\n\n## Procedure\n\nCreate and start the container as a detached process on the host network:\n\n```bash\ndocker run --rm -d --network host --name my_nginx nginx\n```\n\nVerify that the container is running:\n\n```bash\n$ curl localhost:80 -I\nHTTP/1.1 200 OK\nServer: nginx/1.27.1\n.. truncated output ..\n```\n\nCheck the processes running on the host:\n\n```bash\nlsof -i -P -n | grep LISTEN | egrep :80\n```\n\nOutput\n\n```bash\nCOMMAND    PID        USER   FD   TYPE             DEVICE                SIZE/OFF   NODE NAME\ncom.docke 5857        user  115u  IPv6            xxxxxxxxx              0t0       TCP *:80 (LISTEN)\n```\n"
  },
  {
    "path": "home/containers/docker_compose/ReadMe.md",
    "content": "# taskset_docker_compose_containers\n\n> [Auto](https://github.com/codeaprendiz/learn_fullstack/blob/main/home/php/intermediate/taskset_intermediate_php/task_004_createGlobalMarkdownTable/generate-readme.php) generated ReadMe. Number of tasks: 16\n\n| Task     | Description                                                                                                                                                                      |\n|----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| task_001 | [task_001__gcp__traefik_letsEncrypt_tls_challenge](taskset_docker_compose_containers/task_001__gcp__traefik_letsEncrypt_tls_challenge)                                           |\n| task_002 | [task_002__gcp__traefik_letsEncrypt_http_challenge](taskset_docker_compose_containers/task_002__gcp__traefik_letsEncrypt_http_challenge)                                         |\n| task_003 | [task_003__gcp__datadog](taskset_docker_compose_containers/task_003__gcp__datadog)                                                                                               |\n| task_004 | [task_004__local__elastic_search_backup_restore_local_with_sample_data](taskset_docker_compose_containers/task_004__local__elastic_search_backup_restore_local_with_sample_data) |\n| task_005 | [task_005__local__elastic_search_kibana](taskset_docker_compose_containers/task_005__local__elastic_search_kibana)                                                               |\n| task_006 | [task_006__local__logstash](taskset_docker_compose_containers/task_006__local__logstash)                                                                                         |\n| task_007 | [task_007__local__prometheus_blackboxexporter_alertmanager](taskset_docker_compose_containers/task_007__local__prometheus_blackboxexporter_alertmanager)                         |\n| task_008 | [task_008__local__mongodb_metricbeat_elasticsearch_kibana](taskset_docker_compose_containers/task_008__local__mongodb_metricbeat_elasticsearch_kibana)                           |\n| task_009 | [task_009__local__natsStreaming_metricbeat_elasticsearch_kibana](taskset_docker_compose_containers/task_009__local__natsStreaming_metricbeat_elasticsearch_kibana)               |\n| task_010 | [task_010__local__mysql_metricbeat_elasticsearch_kibana](taskset_docker_compose_containers/task_010__local__mysql_metricbeat_elasticsearch_kibana)                               |\n| task_011 | [task_011__gcp__nginx_https_domain_test](taskset_docker_compose_containers/task_011__gcp__nginx_https_domain_test)                                                               |\n| task_012 | [task_012__local__caddy_https_domain_test_with_custom_certs](taskset_docker_compose_containers/task_012__local__caddy_https_domain_test_with_custom_certs)                       |\n| task_013 | [task_013__local__caddy_https_acme_and_save_certs](taskset_docker_compose_containers/task_013__local__caddy_https_acme_and_save_certs)                                           |\n| task_014 | [task_014__local__reverse_proxy_nginx_home_using_caddy](taskset_docker_compose_containers/task_014__local__reverse_proxy_nginx_home_using_caddy)                                 |\n| task_015 | [task_015__local__mem_and_cpu_limit_nginx_container](taskset_docker_compose_containers/task_015__local__mem_and_cpu_limit_nginx_container)                                       |\n| task_016 | [task_016__gcp_local__grafana__tempo__prometheus__xk6_client_tracing](taskset_docker_compose_containers/task_016__gcp_local__grafana__tempo__prometheus__xk6_client_tracing)     |\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_001__gcp__traefik_letsEncrypt_tls_challenge/ReadMe.md",
    "content": "# Let's Encrypt TLS Challenge\n[acme-tls](https://docs.traefik.io/user-guides/docker-compose/acme-tls/)\n\nSteps\n\n- Create a VM on any cloud provider (like google cloud)\n\n![img](./.images/vm-created-gc.png)\n\n- Install docker-compose\n\n- Create a DNS record like [here](https://www.noip.com/) and assing it to the public ip of the VM created.\n\n![img](./.images/dns-entry-for-vm.png)\n\n\n- The following is the `docker-compose` file\n\n```yaml\nversion: \"3.3\"\n\nservices:\n\n  traefik:\n    image: \"traefik:v2.2\"\n    container_name: \"traefik\"\n    command:\n      - \"--log.level=DEBUG\"\n      - \"--api.insecure=true\"\n      - \"--providers.docker=true\"\n      - \"--providers.docker.exposedbydefault=false\"\n      - \"--entrypoints.websecure.address=:443\"\n      - \"--certificatesresolvers.myresolver.acme.tlschallenge=true\"\n      #- \"--certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory\"\n      - \"--certificatesresolvers.myresolver.acme.email=ankit.codeaprendiz@company.com\"\n      - \"--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json\"\n    ports:\n      - \"443:443\"\n      - \"8080:8080\"\n    volumes:\n      - \"./letsencrypt:/letsencrypt\"\n      - \"/var/run/docker.sock:/var/run/docker.sock:ro\"\n\n  whoami:\n    image: \"containous/whoami\"\n    container_name: \"simple-service\"\n    labels:\n      - \"traefik.enable=true\"\n      - \"traefik.http.routers.whoami.rule=Host(`testacme.gotdns.ch`)\"\n      - \"traefik.http.routers.whoami.entrypoints=websecure\"\n      - \"traefik.http.routers.whoami.tls.certresolver=myresolver\"\n```\n\n\n- Finally run the following command to start the containers\n\n```bash\nroot@traefik-lets-encrypt:/home/ankit# docker-compose up -d\nCreating network ankit_default\" with the default driver\nPulling traefik (traefik:v2.2)...\nv2.2: Pulling from library/traefik\naad63a933944: Pull complete\nf365f1b91ebb: Pull complete\ndc367a6045f5: Pull complete\nff697159d003: Pull complete\nDigest: sha256:615483752426932469aa2229ef3f0825b33b3ad7e1326dcd388205cb3a74352e\nStatus: Downloaded newer image for traefik:v2.2\nPulling whoami (containous/whoami:)...\nlatest: Pulling from containous/whoami\n29015087d73b: Pull complete\n0109a00d13bc: Pull complete\nd3caffff64d8: Pull complete\nDigest: sha256:7d6a3c8f91470a23ef380320609ee6e69ac68d20bc804f3a1c6065fb56cfa34e\nStatus: Downloaded newer image for containous/whoami:latest\nCreating traefik        ... done\nCreating simple-service ... done\n```\n\n- You can check the logs and verify if the cert is downloaded\n\n```bash\n$ docker logs traefik\n...\ntime=\"2020-04-12T16:55:37Z\" level=debug msg=\"No default certificate, generating one\"\ntime=\"2020-04-12T16:55:37Z\" level=debug msg=\"Try to challenge certificate for domain [testacme.gotdns.ch] found in HostSNI rule\" providerName=myresolver.acme rule=\"Host(`testacme.gotdns.ch`)\" routerName=whoami@docker\ntime=\"2020-04-12T16:55:37Z\" level=debug msg=\"Looking for provided certificate(s) to validate [\\\"testacme.gotdns.ch\\\"]...\" providerName=myresolver.acme rule=\"Host(`testacme.gotdns.ch`)\" routerName=whoami@docker\ntime=\"2020-04-12T16:55:37Z\" level=debug msg=\"Domains [\\\"testacme.gotdns.ch\\\"] need ACME certificates generation for domains \\\"testacme.gotdns.ch\\\".\" providerName=myresolver.acme rule=\"Host(`testacme.gotdns.ch`)\" routerName=whoami@docker\ntime=\"2020-04-12T16:55:37Z\" level=debug msg=\"Loading ACME certificates [testacme.gotdns.ch]...\" routerName=whoami@docker providerName=myresolver.acme rule=\"Host(`testacme.gotdns.ch`)\"\ntime=\"2020-04-12T16:55:40Z\" level=debug msg=\"Building ACME client...\" providerName=myresolver.acme\ntime=\"2020-04-12T16:55:40Z\" level=debug msg=\"https://acme-v02.api.letsencrypt.org/directory\" providerName=myresolver.acme\ntime=\"2020-04-12T16:55:40Z\" level=info msg=Register... providerName=myresolver.acme\ntime=\"2020-04-12T16:55:40Z\" level=debug msg=\"legolog: [INFO] acme: Registering account for ankit.codeaprendiz@company.com\"\ntime=\"2020-04-12T16:55:40Z\" level=debug msg=\"Using TLS Challenge provider.\" providerName=myresolver.acme\ntime=\"2020-04-12T16:55:40Z\" level=debug msg=\"legolog: [INFO] [testacme.gotdns.ch] acme: Obtaining bundled SAN certificate\"\ntime=\"2020-04-12T16:55:41Z\" level=debug msg=\"legolog: [INFO] [testacme.gotdns.ch] AuthURL: https://acme-v02.api.letsencrypt.org/acme/authz-v3/3918105100\"\ntime=\"2020-04-12T16:55:41Z\" level=debug msg=\"legolog: [INFO] [testacme.gotdns.ch] acme: use tls-alpn-01 solver\"\ntime=\"2020-04-12T16:55:41Z\" level=debug msg=\"legolog: [INFO] [testacme.gotdns.ch] acme: Trying to solve TLS-ALPN-01\"\ntime=\"2020-04-12T16:55:41Z\" level=debug msg=\"TLS Challenge Present temp certificate for testacme.gotdns.ch\" providerName=acme\ntime=\"2020-04-12T16:55:47Z\" level=debug msg=\"legolog: [INFO] [testacme.gotdns.ch] The server validated our request\"\ntime=\"2020-04-12T16:55:47Z\" level=debug msg=\"TLS Challenge CleanUp temp certificate for testacme.gotdns.ch\" providerName=acme\ntime=\"2020-04-12T16:55:47Z\" level=debug msg=\"legolog: [INFO] [testacme.gotdns.ch] acme: Validations succeeded; requesting certificates\"\ntime=\"2020-04-12T16:55:50Z\" level=debug msg=\"legolog: [INFO] [testacme.gotdns.ch] Server responded with a certificate.\"\ntime=\"2020-04-12T16:55:50Z\" level=debug msg=\"Certificates obtained for domains [testacme.gotdns.ch]\" providerName=myresolver.acme rule=\"Host(`testacme.gotdns.ch`)\" routerName=whoami@docker\ntime=\"2020-04-12T16:55:50Z\" level=debug msg=\"Configuration received from provider myresolver.acme: {\\\"http\\\":{},\\\"tls\\\":{}}\" providerName=myresolver.acme\ntime=\"2020-04-12T16:55:50Z\" level=debug msg=\"Adding certificate for domain(s) testacme.gotdns.ch\"\n...\n```\n\n- Also note that the following directory will be created after the execution of command\n```bash\n# ls\ndocker-compose.yaml  letsencrypt\n# ls letsencrypt/\nacme.json\n# cat letsencrypt/acme.json | grep -A 5 \"Certificates\"\n    \"Certificates\": [\n      {\n        \"domain\": {\n          \"main\": \"testacme.gotdns.ch\"\n        },\n        \"certificate\": \"...\n...\n```\n\n- Now visit the domain to check if certificate is being generated\n\n![img](./.images/https-browser-verification-cert.png)\n\n\n\n\n\n\n\n\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_001__gcp__traefik_letsEncrypt_tls_challenge/docker-compose.yaml",
    "content": "version: \"3.3\"\n\nservices:\n\n  traefik:\n    image: \"traefik:v2.2\"\n    container_name: \"traefik\"\n    command:\n      - \"--log.level=DEBUG\"\n      - \"--api.insecure=true\"\n      - \"--providers.docker=true\"\n      - \"--providers.docker.exposedbydefault=false\"\n      - \"--entrypoints.websecure.address=:443\"\n      - \"--certificatesresolvers.myresolver.acme.tlschallenge=true\"\n      #- \"--certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory\"\n      - \"--certificatesresolvers.myresolver.acme.email=ankit.codeaprendiz@company.com\"\n      - \"--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json\"\n    ports:\n      - \"443:443\"\n      - \"8080:8080\"\n    volumes:\n      - \"./letsencrypt:/letsencrypt\"\n      - \"/var/run/docker.sock:/var/run/docker.sock:ro\"\n\n  whoami:\n    image: \"containous/whoami\"\n    container_name: \"simple-service\"\n    labels:\n      - \"traefik.enable=true\"\n      - \"traefik.http.routers.whoami.rule=Host(`testacme.gotdns.ch`)\"\n      - \"traefik.http.routers.whoami.entrypoints=websecure\"\n      - \"traefik.http.routers.whoami.tls.certresolver=myresolver\""
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_002__gcp__traefik_letsEncrypt_http_challenge/ReadMe.md",
    "content": "# Let's Encrypt HTTP Challenge\n[acme-http](https://docs.traefik.io/user-guides/docker-compose/acme-http/)\n\nSteps\n\n- Create a VM on any cloud provider (like google cloud)\n\n- Install docker-compose\n\n- Create a DNS record like [here](https://www.noip.com/) and assing it to the public ip of the VM created.\n\n![img](./.images/dns-record-created.png)\n\n\n- Following is the `docker-compose.yaml`\n\n```yaml\nversion: \"3.3\"\n\nservices:\n\n  traefik:\n    image: \"traefik:v2.2\"\n    container_name: \"traefik\"\n    command:\n      - \"--log.level=DEBUG\"\n      - \"--api.insecure=true\"\n      - \"--providers.docker=true\"\n      - \"--providers.docker.exposedbydefault=false\"\n      - \"--entrypoints.web.address=:80\"\n      - \"--entrypoints.websecure.address=:443\"\n      - \"--certificatesresolvers.myresolver.acme.httpchallenge=true\"\n      - \"--certificatesresolvers.myresolver.acme.httpchallenge.entrypoint=web\"\n      #- \"--certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory\"\n      - \"--certificatesresolvers.myresolver.acme.email=ankit.codeaprendiz@gmail.com\"\n      - \"--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json\"\n    ports:\n      - \"80:80\"\n      - \"443:443\"\n      - \"8080:8080\"\n    volumes:\n      - \"./letsencrypt:/letsencrypt\"\n      - \"/var/run/docker.sock:/var/run/docker.sock:ro\"\n\n  whoami:\n    image: \"containous/whoami\"\n    container_name: \"simple-service\"\n    labels:\n      - \"traefik.enable=true\"\n      - \"traefik.http.routers.whoami.rule=Host(`httpacmetest.gotdns.ch`)\"\n      - \"traefik.http.routers.whoami.entrypoints=websecure\"\n      - \"traefik.http.routers.whoami.tls.certresolver=myresolver\"\n```\n\n- Finally run the following command to start the containers\n\n```bash\nroot@traefik-lets-encrypt:/home/ankit# docker-compose up -d\nCreating network \"ankit_default\" with the default driver\nCreating traefik        ... done\nCreating simple-service ... done\n```\n\n- You can check the logs and verify if the cert is downloaded\n\n```bash\n$ docker logs traefik\n...\ntime=\"2020-04-13T12:32:14Z\" level=debug msg=\"No default certificate, generating one\"\ntime=\"2020-04-13T12:32:15Z\" level=debug msg=\"Try to challenge certificate for domain [httpacmetest.gotdns.ch] found in HostSNI rule\" rule=\"Host(`httpacmetest.gotdns.ch`)\" routerName=whoami@docker providerName=myresolver.acme\ntime=\"2020-04-13T12:32:15Z\" level=debug msg=\"Looking for provided certificate(s) to validate [\\\"httpacmetest.gotdns.ch\\\"]...\" providerName=myresolver.acme rule=\"Host(`httpacmetest.gotdns.ch`)\" routerName=whoami@docker\ntime=\"2020-04-13T12:32:15Z\" level=debug msg=\"Domains [\\\"httpacmetest.gotdns.ch\\\"] need ACME certificates generation for domains \\\"httpacmetest.gotdns.ch\\\".\" rule=\"Host(`httpacmetest.gotdns.ch`)\" routerName=whoami@docker providerName=myresolver.acme\ntime=\"2020-04-13T12:32:15Z\" level=debug msg=\"Loading ACME certificates [httpacmetest.gotdns.ch]...\" rule=\"Host(`httpacmetest.gotdns.ch`)\" routerName=whoami@docker providerName=myresolver.acme\ntime=\"2020-04-13T12:32:17Z\" level=debug msg=\"Building ACME client...\" providerName=myresolver.acme\ntime=\"2020-04-13T12:32:17Z\" level=debug msg=\"https://acme-v02.api.letsencrypt.org/directory\" providerName=myresolver.acme\ntime=\"2020-04-13T12:32:17Z\" level=info msg=Register... providerName=myresolver.acme\ntime=\"2020-04-13T12:32:17Z\" level=debug msg=\"legolog: [INFO] acme: Registering account for ankit.codeaprendiz@gmail.com\"\ntime=\"2020-04-13T12:32:17Z\" level=debug msg=\"Using HTTP Challenge provider.\" providerName=myresolver.acme\ntime=\"2020-04-13T12:32:17Z\" level=debug msg=\"legolog: [INFO] [httpacmetest.gotdns.ch] acme: Obtaining bundled SAN certificate\"\ntime=\"2020-04-13T12:32:18Z\" level=debug msg=\"legolog: [INFO] [httpacmetest.gotdns.ch] AuthURL: https://acme-v02.api.letsencrypt.org/acme/authz-v3/3934981712\"\ntime=\"2020-04-13T12:32:18Z\" level=debug msg=\"legolog: [INFO] [httpacmetest.gotdns.ch] acme: Could not find solver for: tls-alpn-01\"\ntime=\"2020-04-13T12:32:18Z\" level=debug msg=\"legolog: [INFO] [httpacmetest.gotdns.ch] acme: use http-01 solver\"\ntime=\"2020-04-13T12:32:18Z\" level=debug msg=\"legolog: [INFO] [httpacmetest.gotdns.ch] acme: Trying to solve HTTP-01\"\ntime=\"2020-04-13T12:32:18Z\" level=debug msg=\"Unable to split host and port: address httpacmetest.gotdns.ch: missing port in address. Fallback to request host.\" providerName=myresolver.acme\ntime=\"2020-04-13T12:32:18Z\" level=debug msg=\"Retrieving the ACME challenge for token fvz8CGOqJfMQ9gNULRnvqfLQ0UuJu3FCvAXdqX4hy-A...\" providerName=myresolver.acme\ntime=\"2020-04-13T12:32:18Z\" level=debug msg=\"Unable to split host and port: address httpacmetest.gotdns.ch: missing port in address. Fallback to request host.\" providerName=myresolver.acme\ntime=\"2020-04-13T12:32:18Z\" level=debug msg=\"Retrieving the ACME challenge for token fvz8CGOqJfMQ9gNULRnvqfLQ0UuJu3FCvAXdqX4hy-A...\" providerName=myresolver.acme\ntime=\"2020-04-13T12:32:19Z\" level=debug msg=\"Unable to split host and port: address httpacmetest.gotdns.ch: missing port in address. Fallback to request host.\" providerName=myresolver.acme\ntime=\"2020-04-13T12:32:19Z\" level=debug msg=\"Retrieving the ACME challenge for token fvz8CGOqJfMQ9gNULRnvqfLQ0UuJu3FCvAXdqX4hy-A...\" providerName=myresolver.acme\ntime=\"2020-04-13T12:32:19Z\" level=debug msg=\"Unable to split host and port: address httpacmetest.gotdns.ch: missing port in address. Fallback to request host.\" providerName=myresolver.acme\ntime=\"2020-04-13T12:32:19Z\" level=debug msg=\"Retrieving the ACME challenge for token fvz8CGOqJfMQ9gNULRnvqfLQ0UuJu3FCvAXdqX4hy-A...\" providerName=myresolver.acme\ntime=\"2020-04-13T12:32:21Z\" level=debug msg=\"legolog: [INFO] [httpacmetest.gotdns.ch] The server validated our request\"\ntime=\"2020-04-13T12:32:21Z\" level=debug msg=\"legolog: [INFO] [httpacmetest.gotdns.ch] acme: Validations succeeded; requesting certificates\"\ntime=\"2020-04-13T12:32:25Z\" level=debug msg=\"legolog: [INFO] [httpacmetest.gotdns.ch] Server responded with a certificate.\"\ntime=\"2020-04-13T12:32:25Z\" level=debug msg=\"Certificates obtained for domains [httpacmetest.gotdns.ch]\" routerName=whoami@docker providerName=myresolver.acme rule=\"Host(`httpacmetest.gotdns.ch`)\"\ntime=\"2020-04-13T12:32:25Z\" level=debug msg=\"Configuration received from provider myresolver.acme: {\\\"http\\\":{},\\\"tls\\\":{}}\" providerName=myresolver.acme\ntime=\"2020-04-13T12:32:25Z\" level=debug msg=\"Adding certificate for domain(s) httpacmetest.gotdns.ch\"\n...\n```\n\n- Also note that the following directory will be created after the execution of command\n```bash\n# ls\ndocker-compose.yaml  letsencrypt\n# ls letsencrypt/\nacme.json\n# cat letsencrypt/acme.json | grep -A 5 \"Certificates\"\n    \"Certificates\": [\n      {\n        \"domain\": {\n          \"main\": \"httpacmetest.gotdns.ch\"\n        },\n        \"certificate\": \"LS******** \"...\n...\n```\n\n- Now visit the domain to check if certificate is being generated\n\n![img](./.images/browser-validation-of-cert.png)\n\n\n- Now even if you remove the letsEncrypt/acme.json, it will get fetched again\n```bash\nroot@traefik-lets-encrypt:/home/ankit# mv letsencrypt/acme.json /tmp\nroot@traefik-lets-encrypt:/home/ankit# ls letsencrypt/\nroot@traefik-lets-encrypt:/home/ankit# \nroot@traefik-lets-encrypt:/home/ankit# docker stop traefik\ntraefik\nroot@traefik-lets-encrypt:/home/ankit# docker-compose up -d\nsimple-service is up-to-date\nStarting traefik ... done\nroot@traefik-lets-encrypt:/home/ankit# ls\ndocker-compose.yaml  letsencrypt\nroot@traefik-lets-encrypt:/home/ankit# ls letsencrypt/\nacme.json\n```\n\n\n\n\n\n\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_002__gcp__traefik_letsEncrypt_http_challenge/docker-compose.yaml",
    "content": "version: \"3.3\"\n\nservices:\n\n  traefik:\n    image: \"traefik:v2.2\"\n    container_name: \"traefik\"\n    command:\n      - \"--log.level=DEBUG\"\n      - \"--api.insecure=true\"\n      - \"--providers.docker=true\"\n      - \"--providers.docker.exposedbydefault=false\"\n      - \"--entrypoints.web.address=:80\"\n      - \"--entrypoints.websecure.address=:443\"\n      - \"--certificatesresolvers.myresolver.acme.httpchallenge=true\"\n      - \"--certificatesresolvers.myresolver.acme.httpchallenge.entrypoint=web\"\n      #- \"--certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory\"\n      - \"--certificatesresolvers.myresolver.acme.email=ankit.codeaprendiz@gmail.com\"\n      - \"--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json\"\n    ports:\n      - \"80:80\"\n      - \"443:443\"\n      - \"8080:8080\"\n    volumes:\n      - \"./letsencrypt:/letsencrypt\"\n      - \"/var/run/docker.sock:/var/run/docker.sock:ro\"\n\n  whoami:\n    image: \"containous/whoami\"\n    container_name: \"simple-service\"\n    labels:\n      - \"traefik.enable=true\"\n      - \"traefik.http.routers.whoami.rule=Host(`httpacmetest.gotdns.ch`)\"\n      - \"traefik.http.routers.whoami.entrypoints=websecure\"\n      - \"traefik.http.routers.whoami.tls.certresolver=myresolver\""
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_003__gcp__datadog/ReadMe.md",
    "content": "## Datadog Log Collection from docker-container using docker-compose\n\n[docker-log-collection](https://docs.datadoghq.com/agent/docker/log/?tab=dockerfile)\n\n\n- The following is the `docker-compose`file\n```yaml\nversion: '3'\nservices:\n  redis:\n    image: redis\n  datadog:\n    links:\n      - redis # Connect the Datadog Agent container to the Redis container\n    image: datadog/agent:latest\n    environment:\n      - DD_API_KEY=${ENV_VAR_DD_API_KEY}\n      - DD_SITE=datadoghq.eu\n    volumes:\n      - /var/run/docker.sock:/var/run/docker.sock\n      - /proc/:/host/proc/:ro\n      - /sys/fs/cgroup:/host/sys/fs/cgroup:ro\n```\n\n\n- Run the following command\n\n```bash\nENV_VAR_DD_API_KEY=2dd894f5*********73474d48f docker-compose up -d\n```\n\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_003__gcp__datadog/docker-compose.yaml",
    "content": "version: '3'\nservices:\n  redis:\n    image: redis\n  datadog:\n    links:\n      - redis # Connect the Datadog Agent container to the Redis container\n    image: datadog/agent:latest\n    environment:\n      - DD_API_KEY=${ENV_VAR_DD_API_KEY}\n      - DD_SITE=datadoghq.eu\n    volumes:\n      - /var/run/docker.sock:/var/run/docker.sock\n      - /proc/:/host/proc/:ro\n      - /sys/fs/cgroup:/host/sys/fs/cgroup:ro"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_004__local__elastic_search_backup_restore_local_with_sample_data/ReadMe.md",
    "content": "## Objective\n- To be able to backup elastic search indexes on locally mounted folder.\n\n### Docs Referred\n\n- [ELK docs](https://www.elastic.co/guide/en/elasticsearch/reference/current/snapshots-register-repository.html)\n    - Check out the next pages as well\n- [Load Data](https://www.elastic.co/guide/en/kibana/7.7/tutorial-build-dashboard.html#load-dataset)\n\n\n### Dir structure\n\n```bash\n$ tree local-mac/task-004-elastic-search-backup-restore-local-with-sample-data \nlocal-mac/task-004-elastic-search-backup-restore-local-with-sample-data\n├── ReadMe.md\n├── docker-compose.yml\n├── elasticsearch.yml\n├── restoresnapshot.json\n└── snapshotsetting.json\n```\n\n- docker-compose.yaml\n\n```yaml\nversion: \"3.7\"\nservices:\n  elasticsearch_service:\n    restart: unless-stopped\n    image: docker.elastic.co/elasticsearch/elasticsearch:7.7.0\n    container_name: elasticsearch_local\n    environment:\n      xpack.security.enabled: 'false'\n      xpack.monitoring.enabled: 'false'\n      xpack.graph.enabled: 'false'\n      xpack.watcher.enabled: 'false'\n      discovery.type: 'single-node'\n      bootstrap.memory_lock: 'true'\n      indices.memory.index_buffer_size: '30%'\n    volumes:\n      - ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml\n      - ./data:/usr/share/elasticsearch/data\n      - ./elasticsearch-backup:/var/elasticsearch-backup\n    ports:\n      - 9200:9200\n      - 9300:9300\n#    network_mode: host\n```\n\n- elasticsearch.yaml\n\n```yaml\ncluster.name: \"docker-cluster\"\nnetwork.host: 0.0.0.0\npath.repo: [\"/var/elasticsearch-backup\"]\n```\n\n- restoresnapshot.json\n\n```json\n{\n  \"indices\": \"bank*,shakespeare*,logstash*\",\n  \"ignore_unavailable\": true,\n  \"include_global_state\": false,\n  \"include_aliases\": false,\n  \"partial\": false,\n  \"rename_pattern\": \"kibana(.+)\",\n  \"rename_replacement\": \"restored-kibana$1\",\n  \"index_settings\": {\n    \"index.blocks.read_only\": false\n  },\n  \"ignore_index_settings\": [\n    \"index.refresh_interval\"\n  ]\n}\n```\n\n- snapshotsetting.json\n\n```json\n{\n  \"indices\": \"bank*,shakespeare*,logstash*\",\n  \"ignore_unavailable\": true,\n  \"include_global_state\": false,\n  \"partial\": false\n}\n```\n\n### Thought Process\n\n- Create `data` and `elasticsearch-backup` dirs. \n- Start ELK docker-container\n- Load sample data to ELK container and index that data\n- Take a snapshot of ELK. Check if the snapshot is present in locally mounted `elasticsearch-backup` dir\n- Stop the container. Remove the contents of `data` dir.\n- Start the container again\n- Restore the data from the snapshot on locally available `elasticsearch-backup`\n- Check the consistency of this data restored.\n\n### Directory creation \n\n- Empty the data and elasticsearch-backup dirs. Create if not present\n\n```bash\n$ rm -rf data/*\n$ rm -rf elasticsearch-backup/*\n$ mkdir data\n$ mkdir elasticsearch-backup\n```\n\n\n### Start the Elastic Search\n\n- start elastic search container\n\n```bash\n$ docker-compose up -d\n```\n\n### Register \n\n- Register your repository\n\n```bash\n$ curl -X PUT \"http://localhost:9200/_snapshot/my_backup?pretty\" -H 'Content-Type: application/json' -d'\n{\n  \"type\": \"fs\",\n  \"settings\": {\n    \"location\": \"/var/elasticsearch-backup\",\n    \"compress\": true\n  }\n}'\n\n```\n\n### Get Info\n\n- Get info about indices\n\n```bash\n$ curl -X GET \"localhost:9200/_cat/indices?v&pretty\"\n```\n\n- Get info about repo\n\n```bash\n$ curl -X GET \"http://localhost:9200/_snapshot/my_backup\"\n{\"my_backup\":{\"type\":\"fs\",\"settings\":{\"location\":\"/var/elasticsearch-backup\"}}}\n```\n\n\n### Download data and unzip accordingly\n\n```bash\ncurl -O https://download.elastic.co/demos/kibana/gettingstarted/8.x/shakespeare.json\ncurl -O https://download.elastic.co/demos/kibana/gettingstarted/8.x/accounts.zip\ncurl -O https://download.elastic.co/demos/kibana/gettingstarted/8.x/logs.jsonl.gz\n```\n\n\n### Set Up Mapping\n\n\n- Set up mapping shakespeare\n\n```bash\ncurl -X PUT \"localhost:9200/shakespeare?pretty\" -H 'Content-Type: application/json' -d'\n{\n  \"mappings\": {\n    \"properties\": {\n    \"speaker\": {\"type\": \"keyword\"},\n    \"play_name\": {\"type\": \"keyword\"},\n    \"line_id\": {\"type\": \"integer\"},\n    \"speech_number\": {\"type\": \"integer\"}\n    }\n  }\n}\n'\n\n```\n\n\n\n\n- set up mapping logs\n\n```\ncurl -X PUT \"localhost:9200/logstash-2015.05.18?pretty\" -H 'Content-Type: application/json' -d'\n{\n  \"mappings\": {\n    \"properties\": {\n      \"geo\": {\n        \"properties\": {\n          \"coordinates\": {\n            \"type\": \"geo_point\"\n          }\n        }\n      }\n    }\n  }\n}\n'\n\n```\n\n```bash\ncurl -X PUT \"localhost:9200/logstash-2015.05.19?pretty\" -H 'Content-Type: application/json' -d'\n{\n  \"mappings\": {\n    \"properties\": {\n      \"geo\": {\n        \"properties\": {\n          \"coordinates\": {\n            \"type\": \"geo_point\"\n          }\n        }\n      }\n    }\n  }\n}\n'\n\n```\n\n```bash\ncurl -X PUT \"localhost:9200/logstash-2015.05.20?pretty\" -H 'Content-Type: application/json' -d'\n{\n  \"mappings\": {\n    \"properties\": {\n      \"geo\": {\n        \"properties\": {\n          \"coordinates\": {\n            \"type\": \"geo_point\"\n          }\n        }\n      }\n    }\n  }\n}\n'\n\n```\n\n\n### Load the dataset\n\n- accounts.json\n\n```bash\n$ ls accounts.json\naccounts.json\n\ncurl -u elastic -H 'Content-Type: application/x-ndjson' -XPOST 'http://localhost:9200/bank/_bulk?pretty' --data-binary @accounts.json\nEnter host password for user 'elastic': changeit\n\nrm -rf accounts.json\n```\n\n\n- shakespeare.json\n\n```bash\n$ ls shakespeare.json\nshakespeare.json\n\n$ curl -u elastic -H 'Content-Type: application/x-ndjson' -XPOST 'http://localhost:9200/shakespeare/_bulk?pretty' --data-binary @shakespeare.json\n\n\nrm -rf shakespeare.json\n```\n\n\n\n- logs.jsonl\n\n```bash\n$ ls logs.jsonl\nlogs.jsonl\n\n$ curl -u elastic -H 'Content-Type: application/x-ndjson' -XPOST 'http://localhost:9200/_bulk?pretty' --data-binary @logs.jsonl\n\n\n```\n\n\n- Verify successful loading (wait for 15 mins)\n\n```bash\n$ curl -X GET \"localhost:9200/_cat/indices?v&pretty\"\nhealth status index               uuid                   pri rep docs.count docs.deleted store.size pri.store.size\nyellow open   bank                GXb5t_unTCe3Y2SQAO2IPw   1   1       1000            0    381.9kb        381.9kb\nyellow open   shakespeare         fb-gykVjT6uqmvHTKTVglQ   1   1     111396            0     18.2mb         18.2mb\nyellow open   logstash-2015.05.20 -ajsxxrYT5KGOak5edt6OQ   1   1       4750            0       14mb           14mb\nyellow open   logstash-2015.05.18 nBTkQ8EZShigl41aaHTyGA   1   1       4631            0     13.7mb         13.7mb\nyellow open   logstash-2015.05.19 JvLJJPm0R0GKbwkKeiLxPw   1   1       4624            0     13.8mb         13.8mb\n\n```\n\n### Index Mapping before restore\n\n```bash\n$ curl -X GET \"http://localhost:9200/bank/_mapping\"\n{\"bank\":{\"mappings\":{\"properties\":{\"account_number\":{\"type\":\"long\"},\"address\":{\"type\":\"text\",\"fields\":{\"keyword\":{\"type\":\"keyword\",\"ignore_above\":256}}},\"age\":{\"type\":\"long\"},\"balance\":{\"type\":\"long\"},\"city\":{\"type\":\"text\",\"fields\":{\"keyword\":{\"type\":\"keyword\",\"ignore_above\":256}}},\"email\":{\"type\":\"text\",\"fields\":{\"keyword\":{\"type\":\"keyword\",\"ignore_above\":256}}},\"employer\":{\"type\":\"text\",\"fields\":{\"keyword\":{\"type\":\"keyword\",\"ignore_above\":256}}},\"firstname\":{\"type\":\"text\",\"fields\":{\"keyword\":{\"type\":\"keyword\",\"ignore_above\":256}}},\"gender\":{\"type\":\"text\",\"fields\":{\"keyword\":{\"type\":\"keyword\",\"ignore_above\":256}}},\"lastname\":{\"type\":\"text\",\"fields\":{\"keyword\":{\"type\":\"keyword\",\"ignore_above\":256}}},\"state\":{\"type\":\"text\",\"fields\":{\"keyword\":{\"type\":\"keyword\",\"ignore_above\":256}}}}}}}\n```\n\n```bash\n$ curl -X GET \"http://localhost:9200/shakespeare/_mapping\"\n{\"shakespeare\":{\"mappings\":{\"properties\":{\"line_id\":{\"type\":\"integer\"},\"line_number\":{\"type\":\"text\",\"fields\":{\"keyword\":{\"type\":\"keyword\",\"ignore_above\":256}}},\"play_name\":{\"type\":\"keyword\"},\"speaker\":{\"type\":\"keyword\"},\"speech_number\":{\"type\":\"integer\"},\"text_entry\":{\"type\":\"text\",\"fields\":{\"keyword\":{\"type\":\"keyword\",\"ignore_above\":256}}},\"type\":{\"type\":\"text\",\"fields\":{\"keyword\":{\"type\":\"keyword\",\"ignore_above\":256}}}}}}}\n```\n\n\n### Taking Snapshots\n\n- Taking a snapshot\n\n```bash\ncurl -X PUT -H \"Content-Type: application/json\" -d @snapshotsetting.json \"http://localhost:9200/_snapshot/my_backup/finalsnap?wait_for_completion=true\"\n{\"snapshot\":{\"snapshot\":\"finalsnap\",\"uuid\":\"2xntfpUJSACZDZlf2zmgFg\",\"version_id\":7070099,\"version\":\"7.7.0\",\"indices\":[\"logstash-2015.05.20\",\"logstash-2015.05.19\",\"logstash-2015.05.18\",\"bank\",\"shakespeare\"],\"include_global_state\":false,\"state\":\"SUCCESS\",\"start_time\":\"2020-05-18T13:38:01.870Z\",\"start_time_in_millis\":1589809081870,\"end_time\":\"2020-05-18T13:38:03.875Z\",\"end_time_in_millis\":1589809083875,\"duration_in_millis\":2005,\"failures\":[],\"shards\":{\"total\":5,\"failed\":0,\"successful\":5}}}\n```\n\n\n\n- Request your snapshot \n\n```bash\n$ curl -X GET  \"http://localhost:9200/_snapshot/my_backup/finalsnap\"\n{\"snapshots\":[{\"snapshot\":\"finalsnap\",\"uuid\":\"2xntfpUJSACZDZlf2zmgFg\",\"version_id\":7070099,\"version\":\"7.7.0\",\"indices\":[\"logstash-2015.05.20\",\"logstash-2015.05.19\",\"logstash-2015.05.18\",\"bank\",\"shakespeare\"],\"include_global_state\":false,\"state\":\"SUCCESS\",\"start_time\":\"2020-05-18T13:38:01.870Z\",\"start_time_in_millis\":1589809081870,\"end_time\":\"2020-05-18T13:38:03.875Z\",\"end_time_in_millis\":1589809083875,\"duration_in_millis\":2005,\"failures\":[],\"shards\":{\"total\":5,\"failed\":0,\"successful\":5}}]}\n```\n\n\n- To check the status of snapshot\n\n```bash\n$ curl -X GET \"http://localhost:9200/_snapshot/_status\"                \n{\"snapshots\":[]}\n```\n\n- To check all the snapshots\n\n```bash\n$ curl -X GET \"http://localhost:9200/_snapshot/_all\"   \n{\"my_backup\":{\"type\":\"fs\",\"settings\":{\"compress\":\"true\",\"location\":\"/var/elasticsearch-backup\"}}}\n```\n\n- To see all the snapshots in a repository\n```bash\n$ curl -X GET \"http://localhost:9200/_snapshot/my_backup/_all\"\n{\"snapshots\":[{\"snapshot\":\"finalsnap\",\"uuid\":\"2xntfpUJSACZDZlf2zmgFg\",\"version_id\":7070099,\"version\":\"7.7.0\",\"indices\":[\"logstash-2015.05.20\",\"logstash-2015.05.19\",\"logstash-2015.05.18\",\"bank\",\"shakespeare\"],\"include_global_state\":false,\"state\":\"SUCCESS\",\"start_time\":\"2020-05-18T13:38:01.870Z\",\"start_time_in_millis\":1589809081870,\"end_time\":\"2020-05-18T13:38:03.875Z\",\"end_time_in_millis\":1589809083875,\"duration_in_millis\":2005,\"failures\":[],\"shards\":{\"total\":5,\"failed\":0,\"successful\":5}}]}\n```\n\n\n\n\n### Restore your snapshot after creating a new docker container\n\n- Stop the previous container using `docker-compose down`\n\n- Remove the contents of only data dir `rm -rf data/*`\n\n- Start the container again\n\n- state before\n\n```bash\n$ curl -X GET \"localhost:9200/_cat/indices?v&pretty\"\nhealth status index uuid pri rep docs.count docs.deleted store.size pri.store.size\n```\n\n- register the repo again\n\n- To restore a snapshot\n\n```bash\n$ curl -X POST -H \"Content-Type: application/json\" -d @restoresnapshot.json \"http://localhost:9200/_snapshot/my_backup/finalsnap/_restore\"\n{\"accepted\":true}\n```\n\n```bash\n$ curl -X GET \"localhost:9200/_cat/indices?v&pretty\"\nhealth status index               uuid                   pri rep docs.count docs.deleted store.size pri.store.size\nyellow open   bank                np5lUCosR9K8GQIYRWFbxw   1   1       1000            0    381.9kb        381.9kb\nyellow open   shakespeare         IsCQevQMTVuDj4LPhCZBhg   1   1     111396            0     18.2mb         18.2mb\nyellow open   logstash-2015.05.20 _5mcgCNbQ0mpx1YwSBOlgA   1   1       4750            0       14mb           14mb\nyellow open   logstash-2015.05.18 UENDZ4XYRXGK9uOA9jQkdg   1   1       4631            0     13.7mb         13.7mb\nyellow open   logstash-2015.05.19 ytH8HF_GRnuu6vV3B4apnw   1   1       4624            0     13.8mb         13.8mb\n\n```\n\n### Index Mapping after restore\n\n```bash\n$ curl -X GET \"http://localhost:9200/bank/_mapping\"\n{\"bank\":{\"mappings\":{\"properties\":{\"account_number\":{\"type\":\"long\"},\"address\":{\"type\":\"text\",\"fields\":{\"keyword\":{\"type\":\"keyword\",\"ignore_above\":256}}},\"age\":{\"type\":\"long\"},\"balance\":{\"type\":\"long\"},\"city\":{\"type\":\"text\",\"fields\":{\"keyword\":{\"type\":\"keyword\",\"ignore_above\":256}}},\"email\":{\"type\":\"text\",\"fields\":{\"keyword\":{\"type\":\"keyword\",\"ignore_above\":256}}},\"employer\":{\"type\":\"text\",\"fields\":{\"keyword\":{\"type\":\"keyword\",\"ignore_above\":256}}},\"firstname\":{\"type\":\"text\",\"fields\":{\"keyword\":{\"type\":\"keyword\",\"ignore_above\":256}}},\"gender\":{\"type\":\"text\",\"fields\":{\"keyword\":{\"type\":\"keyword\",\"ignore_above\":256}}},\"lastname\":{\"type\":\"text\",\"fields\":{\"keyword\":{\"type\":\"keyword\",\"ignore_above\":256}}},\"state\":{\"type\":\"text\",\"fields\":{\"keyword\":{\"type\":\"keyword\",\"ignore_above\":256}}}}}}}\n```\n\n```bash\n$ curl -X GET \"http://localhost:9200/shakespeare/_mapping\"\n{\"shakespeare\":{\"mappings\":{\"properties\":{\"line_id\":{\"type\":\"integer\"},\"line_number\":{\"type\":\"text\",\"fields\":{\"keyword\":{\"type\":\"keyword\",\"ignore_above\":256}}},\"play_name\":{\"type\":\"keyword\"},\"speaker\":{\"type\":\"keyword\"},\"speech_number\":{\"type\":\"integer\"},\"text_entry\":{\"type\":\"text\",\"fields\":{\"keyword\":{\"type\":\"keyword\",\"ignore_above\":256}}},\"type\":{\"type\":\"text\",\"fields\":{\"keyword\":{\"type\":\"keyword\",\"ignore_above\":256}}}}}}}\n```\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_004__local__elastic_search_backup_restore_local_with_sample_data/docker-compose.yml",
    "content": "version: \"3.7\"\nservices:\n  elasticsearch_service:\n    restart: unless-stopped\n    image: docker.elastic.co/elasticsearch/elasticsearch:7.7.0\n    container_name: elasticsearch_local\n    environment:\n      xpack.security.enabled: 'false'\n      xpack.monitoring.enabled: 'false'\n      xpack.graph.enabled: 'false'\n      xpack.watcher.enabled: 'false'\n      discovery.type: 'single-node'\n      bootstrap.memory_lock: 'true'\n      indices.memory.index_buffer_size: '30%'\n    volumes:\n      - ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml\n      - ./data:/usr/share/elasticsearch/data\n      - ./elasticsearch-backup:/var/elasticsearch-backup\n    ports:\n      - 9200:9200\n      - 9300:9300\n#    network_mode: host\n\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_004__local__elastic_search_backup_restore_local_with_sample_data/elasticsearch.yml",
    "content": "cluster.name: \"docker-cluster\"\nnetwork.host: 0.0.0.0\npath.repo: [\"/var/elasticsearch-backup\"]\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_004__local__elastic_search_backup_restore_local_with_sample_data/restoresnapshot.json",
    "content": "{\n  \"indices\": \"bank*,shakespeare*,logstash*\",\n  \"ignore_unavailable\": true,\n  \"include_global_state\": false,\n  \"include_aliases\": false,\n  \"partial\": false,\n  \"rename_pattern\": \"kibana(.+)\",\n  \"rename_replacement\": \"restored-kibana$1\",\n  \"index_settings\": {\n    \"index.blocks.read_only\": false\n  },\n  \"ignore_index_settings\": [\n    \"index.refresh_interval\"\n  ]\n}\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_004__local__elastic_search_backup_restore_local_with_sample_data/snapshotsetting.json",
    "content": "{\n  \"indices\": \"bank*,shakespeare*,logstash*\",\n  \"ignore_unavailable\": true,\n  \"include_global_state\": false,\n  \"partial\": false\n}\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_005__local__elastic_search_kibana/ReadMe.md",
    "content": "## To start elastic-search and kibana using one docker-compose\n\n- docker-compose.yaml\n\n```yaml\nversion: '3.7'\nservices:\n  elasticsearch_service:\n    image: docker.elastic.co/elasticsearch/elasticsearch:7.8.0\n    container_name: es01\n    environment:\n      node.name: 'es01'\n      discovery.type: 'single-node'\n      bootstrap.memory_lock: 'true'\n      ES_JAVA_OPTS: '-Xms512m -Xmx512m'\n    ulimits:\n      memlock:\n        soft: -1\n        hard: -1\n    volumes:\n      - ./.data:/usr/share/elasticsearch/data\n    ports:\n      - 9200:9200\n    networks:\n      - host\n\n  kibana:\n    image: docker.elastic.co/kibana/kibana:7.8.0\n    container_name: kibana-sandbox\n    links:\n      - elasticsearch_service\n    environment:\n      SERVER_NAME: elasticsearch_service\n      ELASTICSEARCH_HOSTS: http://elasticsearch_service:9200\n    ports:\n      - 5601:5601\n    networks:\n      - host\n\nvolumes:\n  data:\n    driver: local\n\nnetworks:\n  host:\n```\n\n\n```bash\n$ docker-compose up\n\n```\n\n- Visit [http://0.0.0.0:5601/app/kibana](http://0.0.0.0:5601/app/kibana)"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_005__local__elastic_search_kibana/docker-compose.yml",
    "content": "version: '3.7'\nservices:\n  elasticsearch_service:\n    image: docker.elastic.co/elasticsearch/elasticsearch:7.8.0\n    container_name: es01\n    environment:\n      node.name: 'es01'\n      discovery.type: 'single-node'\n      bootstrap.memory_lock: 'true'\n      ES_JAVA_OPTS: '-Xms512m -Xmx512m'\n    ulimits:\n      memlock:\n        soft: -1\n        hard: -1\n    volumes:\n      - ./.data:/usr/share/elasticsearch/data\n    ports:\n      - 9200:9200\n    networks:\n      - host\n\n  kibana:\n    image: docker.elastic.co/kibana/kibana:7.8.0\n    container_name: kibana-sandbox\n    links:\n      - elasticsearch_service\n    environment:\n      SERVER_NAME: elasticsearch_service\n      ELASTICSEARCH_HOSTS: http://elasticsearch_service:9200\n    ports:\n      - 5601:5601\n    networks:\n      - host\n\nvolumes:\n  data:\n    driver: local\n\nnetworks:\n  host:\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_006__local__logstash/ReadMe.md",
    "content": "## Logstash docker-compose\n\n- input from file\n- filter logs using grok filter (allowed everything)\n- output to stdout\n\n### Director structure\n\n```bash\n$ tree local-mac/task-006-logstash                                            \nlocal-mac/task-006-logstash\n├── ReadMe.md\n├── conf\n│   └── filter.conf\n├── docker-compose.yml\n├── log-sample\n│   └── access.log\n└── logstash.yml\n```\n\n- docker-compose.yaml\n\n```yaml\nversion: '3.7'\nservices:\n  logstash-sandbox:\n    image: docker.elastic.co/logstash/logstash:7.8.0\n    container_name: logstash-sandbox\n    user: root\n    volumes:\n      - ./logstash.yml:/usr/share/logstash/config/logstash.yml\n      - ./conf:/var/logstash/configuration\n      - ./log-sample:/tmp\n    ports:\n      - 9600:9600\n      - 5044:5044\n    networks:\n      - host\nnetworks:\n  host:\n```\n\n- logstash.yml\n\n```yaml\nhttp.host: 0.0.0.0\nxpack.monitoring.enabled: false\nxpack.management.enabled: false\n\nconfig.reload.automatic: true\nconfig.reload.interval: 6s\n\nlog.level: info\nlog.format: json\n\npath.config: /var/logstash/configuration/*.conf\n```\n\n\n- access.log\n\n```log\n127.0.0.1 - - [11/Dec/2013:00:01:45 -0800] \"GET /xampp/status.php HTTP/1.1\" 200 3891 \"http://cadenza/xampp/navi.php\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0\"\n127.0.0.1 - - [11/Dec/2013:00:01:45 -0800] \"GET /xampp/status.php HTTP/1.1\" 200 3891 \"http://cadenza/xampp/navi.php\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0\"\n127.0.0.1 - - [11/Dec/2013:00:01:45 -0800] \"GET /xampp/status.php HTTP/1.1\" 200 3891 \"http://cadenza/xampp/navi.php\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0\"\n127.0.0.1 - - [11/Dec/2013:00:01:45 -0800] \"GET /xampp/status.php HTTP/1.1\" 200 3891 \"http://cadenza/xampp/navi.php\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0\"\n127.0.0.1 - - [11/Dec/2013:00:01:45 -0800] \"GET /xampp/status.php HTTP/1.1\" 200 3891 \"http://cadenza/xampp/navi.php\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0\"\n127.0.0.1 - - [11/Dec/2013:00:01:45 -0800] \"GET /xampp/status.php HTTP/1.1\" 200 3891 \"http://cadenza/xampp/navi.php\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0\"\n127.0.0.1 - - [11/Dec/2013:00:01:45 -0800] \"GET /xampp/status.php HTTP/1.1\" 200 3891 \"http://cadenza/xampp/navi.php\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0\"\n```\n\n- filter.conf\n\n```bash\ninput {\n  file {\n    path => \"/tmp/access.log\"\n    start_position => \"beginning\"\n  }\n}\n\nfilter {\n  grok {\n    match => { \"message\" => \"%{COMBINEDAPACHELOG}\" }\n  }\n  date {\n    match => [ \"timestamp\" , \"dd/MMM/yyyy:HH:mm:ss Z\" ]\n  }\n}\n\noutput {\n  stdout { codec => rubydebug }\n}\n```\n\n- Start using the docker-compose file\n\n```bash\n$ docker-compose up\n.\n.\n.\nlogstash-sandbox    | {\"level\":\"INFO\",\"loggerName\":\"logstash.agent\",\"timeMillis\":1594974961328,\"thread\":\"Api Webserver\",\"logEvent\":{\"message\":\"Successfully started Logstash API endpoint\",\"port\":9600}}\nlogstash-sandbox    | /usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/awesome_print-1.7.0/lib/awesome_print/formatters/base_formatter.rb:31: warning: constant ::Fixnum is deprecated\nlogstash-sandbox    | {\nlogstash-sandbox    |           \"ident\" => \"-\",\nlogstash-sandbox    |         \"request\" => \"/xampp/status.php\",\nlogstash-sandbox    |        \"clientip\" => \"127.0.0.1\",\nlogstash-sandbox    |        \"@version\" => \"1\",\nlogstash-sandbox    |        \"response\" => \"200\",\nlogstash-sandbox    |         \"message\" => \"127.0.0.1 - - [11/Dec/2013:00:01:45 -0800] \\\"GET /xampp/status.php HTTP/1.1\\\" 200 3891 \\\"http://cadenza/xampp/navi.php\\\" \\\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0\\\"\",\nlogstash-sandbox    |            \"auth\" => \"-\",\nlogstash-sandbox    |            \"path\" => \"/tmp/access.log\",\nlogstash-sandbox    |           \"bytes\" => \"3891\",\nlogstash-sandbox    |      \"@timestamp\" => 2013-12-11T08:01:45.000Z,\nlogstash-sandbox    |            \"verb\" => \"GET\",\nlogstash-sandbox    |            \"host\" => \"8ab5d2b292ee\",\nlogstash-sandbox    |       \"timestamp\" => \"11/Dec/2013:00:01:45 -0800\",\nlogstash-sandbox    |        \"referrer\" => \"\\\"http://cadenza/xampp/navi.php\\\"\",\nlogstash-sandbox    |     \"httpversion\" => \"1.1\",\nlogstash-sandbox    |           \"agent\" => \"\\\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0\\\"\"\nlogstash-sandbox    | }\nlogstash-sandbox    | {\nlogstash-sandbox    |           \"ident\" => \"-\",\nlogstash-sandbox    |         \"request\" => \"/xampp/status.php\",\nlogstash-sandbox    |        \"clientip\" => \"127.0.0.1\",\nlogstash-sandbox    |        \"@version\" => \"1\",\nlogstash-sandbox    |        \"response\" => \"200\",\nlogstash-sandbox    |         \"message\" => \"127.0.0.1 - - [11/Dec/2013:00:01:45 -0800] \\\"GET /xampp/status.php HTTP/1.1\\\" 200 3891 \\\"http://cadenza/xampp/navi.php\\\" \\\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0\\\"\",\nlogstash-sandbox    |            \"auth\" => \"-\",\nlogstash-sandbox    |            \"path\" => \"/tmp/access.log\",\nlogstash-sandbox    |           \"bytes\" => \"3891\",\nlogstash-sandbox    |      \"@timestamp\" => 2013-12-11T08:01:45.000Z,\nlogstash-sandbox    |            \"verb\" => \"GET\",\nlogstash-sandbox    |            \"host\" => \"8ab5d2b292ee\",\nlogstash-sandbox    |       \"timestamp\" => \"11/Dec/2013:00:01:45 -0800\",\nlogstash-sandbox    |        \"referrer\" => \"\\\"http://cadenza/xampp/navi.php\\\"\",\nlogstash-sandbox    |     \"httpversion\" => \"1.1\",\nlogstash-sandbox    |           \"agent\" => \"\\\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0\\\"\"\nlogstash-sandbox    | }\n.\n.\n.\n```"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_006__local__logstash/conf/filter.conf",
    "content": "input {\n  file {\n    path => \"/tmp/access.log\"\n    start_position => \"beginning\"\n  }\n}\n\nfilter {\n  grok {\n    match => { \"message\" => \"%{COMBINEDAPACHELOG}\" }\n  }\n  date {\n    match => [ \"timestamp\" , \"dd/MMM/yyyy:HH:mm:ss Z\" ]\n  }\n}\n\noutput {\n  stdout { codec => rubydebug }\n}"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_006__local__logstash/docker-compose.yml",
    "content": "version: '3.7'\nservices:\n  logstash-sandbox:\n    image: docker.elastic.co/logstash/logstash:7.8.0\n    container_name: logstash-sandbox\n    user: root\n    volumes:\n      - ./logstash.yml:/usr/share/logstash/config/logstash.yml\n      - ./conf:/var/logstash/configuration\n      - ./log-sample:/tmp\n    ports:\n      - 9600:9600\n      - 5044:5044\n    networks:\n      - host\nnetworks:\n  host:\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_006__local__logstash/log-sample/access.log",
    "content": "127.0.0.1 - - [11/Dec/2013:00:01:45 -0800] \"GET /xampp/status.php HTTP/1.1\" 200 3891 \"http://cadenza/xampp/navi.php\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0\"\n127.0.0.1 - - [11/Dec/2013:00:01:45 -0800] \"GET /xampp/status.php HTTP/1.1\" 200 3891 \"http://cadenza/xampp/navi.php\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0\"\n127.0.0.1 - - [11/Dec/2013:00:01:45 -0800] \"GET /xampp/status.php HTTP/1.1\" 200 3891 \"http://cadenza/xampp/navi.php\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0\"\n127.0.0.1 - - [11/Dec/2013:00:01:45 -0800] \"GET /xampp/status.php HTTP/1.1\" 200 3891 \"http://cadenza/xampp/navi.php\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0\"\n127.0.0.1 - - [11/Dec/2013:00:01:45 -0800] \"GET /xampp/status.php HTTP/1.1\" 200 3891 \"http://cadenza/xampp/navi.php\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0\"\n127.0.0.1 - - [11/Dec/2013:00:01:45 -0800] \"GET /xampp/status.php HTTP/1.1\" 200 3891 \"http://cadenza/xampp/navi.php\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0\"\n127.0.0.1 - - [11/Dec/2013:00:01:45 -0800] \"GET /xampp/status.php HTTP/1.1\" 200 3891 \"http://cadenza/xampp/navi.php\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0\"\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_006__local__logstash/logstash.yml",
    "content": "http.host: 0.0.0.0\nxpack.monitoring.enabled: false\nxpack.management.enabled: false\n\nconfig.reload.automatic: true\nconfig.reload.interval: 6s\n\nlog.level: info\nlog.format: json\n\npath.config: /var/logstash/configuration/*.conf\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_007__local__prometheus_blackboxexporter_alertmanager/ReadMe.md",
    "content": "## Testing Prometheus alertmanager for the sending alerts to slack\n\n[Docs Referred](https://grafana.com/blog/2020/02/25/step-by-step-guide-to-setting-up-prometheus-alertmanager-with-slack-pagerduty-and-gmail/)\n\n\n### Dir structure\n\n```bash\n$ tree local-mac/task-007-prometheus-blackboxexporter-alertmanager \nlocal-mac/task-007-prometheus-blackboxexporter-alertmanager\n├── ReadMe.md\n├── alertmanager\n│   └── configuration.yml\n├── blackboxexporter\n│   └── config.yml\n├── docker-compose.yml\n└── prometheus\n    ├── alert.rules.yml\n    └── prometheus.yml\n```\n\n- docker-compose.yaml\n\n```yaml\nversion: '3.7'\n\nnetworks:\n  host:\n\nservices:\n  prometheus:\n    image: prom/prometheus:v2.18.1\n    container_name: prometheus-sandbox\n    volumes:\n      - ${PWD}/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml\n      - ${PWD}/prometheus/alert.rules.yml:/etc/prometheus/alert.rules.yml\n    command:\n      - '--config.file=/etc/prometheus/prometheus.yml'\n      - '--storage.tsdb.path=/prometheus'\n      - '--web.console.libraries=/usr/share/prometheus/console_libraries'\n      - '--web.console.templates=/usr/share/prometheus/consoles'\n      - '--web.external-url=http://localhost:9090'\n    ports:\n      - 9090:9090\n    networks:\n      - host\n    restart: always\n\n  alertmanager:\n    image: prom/alertmanager:v0.20.0\n    container_name: alertmanager-sandbox\n    links:\n      - prometheus\n    ports:\n      - 9093:9093\n    volumes:\n      - ${PWD}/alertmanager/configuration.yml:/etc/alertmanager/config.yml\n    networks:\n      - host\n    restart: always\n    command:\n      - '--config.file=/etc/alertmanager/config.yml'\n      - '--storage.path=/alertmanager'\n\n\n  blackboxexporter:\n    restart: unless-stopped\n\n    image: prom/blackbox-exporter:v0.17.0\n    container_name: blackboxexporter\n    environment:\n      deployment: 'ec2'\n    command:\n      - '--config.file=/etc/blackboxexporter/config.yml'\n    volumes:\n      - ${PWD}/blackboxexporter/config.yml:/etc/blackboxexporter/config.yml\n    networks:\n      - host\n    ports:\n      - 9115:9115\n```\n\n- alertmanager/configuration.yml\n\n```yaml\nroute:\n  receiver: 'slack-critical'\n  routes:\n    - match:\n        threshold: warning\n      continue: true\n      receiver: slack-warning\n    - match:\n        threshold: danger\n      continue: true\n      receiver: slack-danger\n    - match:\n        threshold: critical\n      receiver: slack-critical\n\n\nreceivers:\n  - name: 'slack-warning'\n    slack_configs:\n      - send_resolved: true\n        username: 'hubot'\n        icon_url: https://avatars3.githubusercontent.com/u/3380462\n        pretext: '{{ .CommonAnnotations.summary }}'\n        title: '[{{ .Status | toUpper }}{{ if eq .Status \"firing\" }}:{{ .Alerts.Firing | len }}{{ end }}] Monitoring Event Notification'\n        text: >-\n          {{ range .Alerts }}\n             *Alert:* {{ .Annotations.summary }} - `{{ .Labels.threshold }}`\n             *Description:* {{ .Annotations.description }}\n             *Graph:* <{{ .GeneratorURL }}|:chart_with_upwards_trend:>\n             *Details:*\n             {{ range .Labels.SortedPairs }} • *{{ .Name }}:* `{{ .Value }}`\n             {{ end }}\n          {{ end }}\n        channel: '#test-monitoring'\n        api_url: 'https://hooks.slack.com/services/TTRU82U0N/some_secret_here'\n\n  - name: 'slack-danger'\n    slack_configs:\n      - send_resolved: true\n        username: 'hubot'\n        icon_url: https://avatars3.githubusercontent.com/u/3380462\n        pretext: '{{ .CommonAnnotations.summary }}'\n        title: '[{{ .Status | toUpper }}{{ if eq .Status \"firing\" }}:{{ .Alerts.Firing | len }}{{ end }}] Monitoring Event Notification'\n        text: >-\n          {{ range .Alerts }}\n             *Alert:* {{ .Annotations.summary }} - `{{ .Labels.threshold }}`\n             *Description:* {{ .Annotations.description }}\n             *Graph:* <{{ .GeneratorURL }}|:chart_with_upwards_trend:>\n             *Details:*\n             {{ range .Labels.SortedPairs }} • *{{ .Name }}:* `{{ .Value }}`\n             {{ end }}\n          {{ end }}\n        channel: '#test-monitoring'\n        api_url: 'https://hooks.slack.com/services/TTRU82U0N/some_secret_here'\n\n  - name: 'slack-critical'\n    slack_configs:\n      - send_resolved: true\n        username: 'hubot'\n        icon_url: https://avatars3.githubusercontent.com/u/3380462\n        pretext: '{{ .CommonAnnotations.summary }}'\n        title: '[{{ .Status | toUpper }}{{ if eq .Status \"firing\" }}:{{ .Alerts.Firing | len }}{{ end }}] Monitoring Event Notification'\n        text: >-\n          {{ range .Alerts }}\n             *Alert:* {{ .Annotations.summary }} - `{{ .Labels.threshold }}`\n             *Description:* {{ .Annotations.description }}\n             *Graph:* <{{ .GeneratorURL }}|:chart_with_upwards_trend:>\n             *Details:*\n             {{ range .Labels.SortedPairs }} • *{{ .Name }}:* `{{ .Value }}`\n             {{ end }}\n          {{ end }}\n        channel: '#test-monitoring'\n        api_url: 'https://hooks.slack.com/services/TTRU82U0N/some_secret_here'\n```\n\n- blackboxexporter/config.yml\n\n```yaml\nmodules:\n  http_2xx:\n    prober: http\n    http:\n      preferred_ip_protocol: \"ip4\"\n  http_post_2xx:\n    prober: http\n    http:\n      method: POST\n  tcp_connect:\n    prober: tcp\n  pop3s_banner:\n    prober: tcp\n    tcp:\n      query_response:\n        - expect: \"^+OK\"\n      tls: true\n      tls_config:\n        insecure_skip_verify: false\n  ssh_banner:\n    prober: tcp\n    tcp:\n      query_response:\n        - expect: \"^SSH-2.0-\"\n  irc_banner:\n    prober: tcp\n    tcp:\n      query_response:\n        - send: \"NICK prober\"\n        - send: \"USER prober prober prober :prober\"\n        - expect: \"PING :([^ ]+)\"\n          send: \"PONG ${1}\"\n        - expect: \"^:[^ ]+ 001\"\n  icmp:\n    prober: icmp\n```\n\n- prometheus/alert.rules.yml\n\n```yaml\ngroups:\n  - name: alert.rules\n    rules:\n      - alert: service_down\n        expr: probe_success == 0\n        for: 1m\n        labels:\n          severity: 3\n          threshold: critical\n        annotations:\n          summary: \"Instance *{{ $labels.instance }}* down\"\n          description: \"*{{ $labels.instance }}* of job *{{ $labels.job }}* is down\"\n```\n\n- prometheus/prometheus.yml\n\n```yaml\nglobal:\n  scrape_interval: 5s\n\n\n# Rules and alerts are read from the specified file(s)\nrule_files:\n  - alert.rules.yml\n\n# Alerting specifies settings related to the Alertmanager\nalerting:\n  alertmanagers:\n    - static_configs:\n        - targets:\n            # Alertmanager's default port is 9093\n            - host.docker.internal:9093\n\nscrape_configs:\n  - job_name: blackbox # To get metrics about the exporter itself\n    metrics_path: /metrics\n    static_configs:\n      - targets:\n          - host.docker.internal:9115   # For Windows and macOS replace with - host.docker.internal:9115\n\n  - job_name: blackbox-http # To get metrics about the exporter’s targets\n    metrics_path: /probe\n    params:\n      module: [http_2xx]\n    static_configs:\n      - targets:\n          - http://prometheus.io    # Target to probe with http\n          - https://prometheus.io   # Target to probe with https\n          - http://example.com:8080 # Target to probe with http on port 8080\n    relabel_configs:\n      - source_labels: [__address__]\n        target_label: __param_target\n      - source_labels: [__param_target]\n        target_label: instance\n      - target_label: __address__\n        replacement: host.docker.internal:9115  # The blackbox exporter’s real hostname:port. For Windows and macOS replace with - host.docker.internal:9115\n```\n\n\n- Start the services using\n\n```bash\n$ docker-compose up -d\nCreating network \"11-prom-blackboxexporter-alertmanager_host\" with the default driver\nCreating prometheus-sandbox ... done\nCreating blackboxexporter   ... done\nCreating alertmanager-sandbox ... done\n```\n\n- Check the [http://localhost:9090/targets](http://localhost:9090/targets) are up\n\n\n- Check the [http://localhost:9090/alerts](http://localhost:9090/alerts)\n\n![](![img](./.images/alerts-page.png)\n\n\n- Wait for 1 min and check if the Alerts move to Pending state. After this wait for 1 mins and check if the\nalert moves to Firing state.\n\n\n- You can also access the [http://localhost:9093/#/alerts](http://localhost:9093/#/alerts) and check the \nalerts (after they moved to firing state)\n\n![img](./.images/alertmanager.png)\n\n- Now you should receive a slack notification as shown below\n\n![img](./.images/slack-alert-snapshot.png)\n\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_007__local__prometheus_blackboxexporter_alertmanager/alertmanager/configuration.yml",
    "content": "route:\n  receiver: 'slack-critical'\n  routes:\n    - match:\n        threshold: warning\n      continue: true\n      receiver: slack-warning\n    - match:\n        threshold: danger\n      continue: true\n      receiver: slack-danger\n    - match:\n        threshold: critical\n      receiver: slack-critical\n\n\nreceivers:\n  - name: 'slack-warning'\n    slack_configs:\n      - send_resolved: true\n        username: 'hubot'\n        icon_url: https://avatars3.githubusercontent.com/u/3380462\n        pretext: '{{ .CommonAnnotations.summary }}'\n        title: '[{{ .Status | toUpper }}{{ if eq .Status \"firing\" }}:{{ .Alerts.Firing | len }}{{ end }}] Monitoring Event Notification'\n        text: >-\n          {{ range .Alerts }}\n             *Alert:* {{ .Annotations.summary }} - `{{ .Labels.threshold }}`\n             *Description:* {{ .Annotations.description }}\n             *Graph:* <{{ .GeneratorURL }}|:chart_with_upwards_trend:>\n             *Details:*\n             {{ range .Labels.SortedPairs }} • *{{ .Name }}:* `{{ .Value }}`\n             {{ end }}\n          {{ end }}\n        channel: '#test-monitoring'\n        api_url: 'https://hooks.slack.com/services/TTRU82U0N/some_secret_here'\n\n  - name: 'slack-danger'\n    slack_configs:\n      - send_resolved: true\n        username: 'hubot'\n        icon_url: https://avatars3.githubusercontent.com/u/3380462\n        pretext: '{{ .CommonAnnotations.summary }}'\n        title: '[{{ .Status | toUpper }}{{ if eq .Status \"firing\" }}:{{ .Alerts.Firing | len }}{{ end }}] Monitoring Event Notification'\n        text: >-\n          {{ range .Alerts }}\n             *Alert:* {{ .Annotations.summary }} - `{{ .Labels.threshold }}`\n             *Description:* {{ .Annotations.description }}\n             *Graph:* <{{ .GeneratorURL }}|:chart_with_upwards_trend:>\n             *Details:*\n             {{ range .Labels.SortedPairs }} • *{{ .Name }}:* `{{ .Value }}`\n             {{ end }}\n          {{ end }}\n        channel: '#test-monitoring'\n        api_url: 'https://hooks.slack.com/services/TTRU82U0N/some_secret_here'\n\n  - name: 'slack-critical'\n    slack_configs:\n      - send_resolved: true\n        username: 'hubot'\n        icon_url: https://avatars3.githubusercontent.com/u/3380462\n        pretext: '{{ .CommonAnnotations.summary }}'\n        title: '[{{ .Status | toUpper }}{{ if eq .Status \"firing\" }}:{{ .Alerts.Firing | len }}{{ end }}] Monitoring Event Notification'\n        text: >-\n          {{ range .Alerts }}\n             *Alert:* {{ .Annotations.summary }} - `{{ .Labels.threshold }}`\n             *Description:* {{ .Annotations.description }}\n             *Graph:* <{{ .GeneratorURL }}|:chart_with_upwards_trend:>\n             *Details:*\n             {{ range .Labels.SortedPairs }} • *{{ .Name }}:* `{{ .Value }}`\n             {{ end }}\n          {{ end }}\n        channel: '#test-monitoring'\n        api_url: 'https://hooks.slack.com/services/TTRU82U0N/some_secret_here'\n\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_007__local__prometheus_blackboxexporter_alertmanager/blackboxexporter/config.yml",
    "content": "modules:\n  http_2xx:\n    prober: http\n    http:\n      preferred_ip_protocol: \"ip4\"\n  http_post_2xx:\n    prober: http\n    http:\n      method: POST\n  tcp_connect:\n    prober: tcp\n  pop3s_banner:\n    prober: tcp\n    tcp:\n      query_response:\n        - expect: \"^+OK\"\n      tls: true\n      tls_config:\n        insecure_skip_verify: false\n  ssh_banner:\n    prober: tcp\n    tcp:\n      query_response:\n        - expect: \"^SSH-2.0-\"\n  irc_banner:\n    prober: tcp\n    tcp:\n      query_response:\n        - send: \"NICK prober\"\n        - send: \"USER prober prober prober :prober\"\n        - expect: \"PING :([^ ]+)\"\n          send: \"PONG ${1}\"\n        - expect: \"^:[^ ]+ 001\"\n  icmp:\n    prober: icmp\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_007__local__prometheus_blackboxexporter_alertmanager/docker-compose.yml",
    "content": "version: '3.7'\n\nnetworks:\n  host:\n\nservices:\n  prometheus:\n    image: prom/prometheus:v2.18.1\n    container_name: prometheus-sandbox\n    volumes:\n      - ${PWD}/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml\n      - ${PWD}/prometheus/alert.rules.yml:/etc/prometheus/alert.rules.yml\n    command:\n      - '--config.file=/etc/prometheus/prometheus.yml'\n      - '--storage.tsdb.path=/prometheus'\n      - '--web.console.libraries=/usr/share/prometheus/console_libraries'\n      - '--web.console.templates=/usr/share/prometheus/consoles'\n      - '--web.external-url=http://localhost:9090'\n    ports:\n      - 9090:9090\n    networks:\n      - host\n    restart: always\n\n  alertmanager:\n    image: prom/alertmanager:v0.20.0\n    container_name: alertmanager-sandbox\n    links:\n      - prometheus\n    ports:\n      - 9093:9093\n    volumes:\n      - ${PWD}/alertmanager/configuration.yml:/etc/alertmanager/config.yml\n    networks:\n      - host\n    restart: always\n    command:\n      - '--config.file=/etc/alertmanager/config.yml'\n      - '--storage.path=/alertmanager'\n\n\n  blackboxexporter:\n    restart: unless-stopped\n\n    image: prom/blackbox-exporter:v0.17.0\n    container_name: blackboxexporter\n    environment:\n      deployment: 'ec2'\n    command:\n      - '--config.file=/etc/blackboxexporter/config.yml'\n    volumes:\n      - ${PWD}/blackboxexporter/config.yml:/etc/blackboxexporter/config.yml\n    networks:\n      - host\n    ports:\n      - 9115:9115\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_007__local__prometheus_blackboxexporter_alertmanager/prometheus/alert.rules.yml",
    "content": "groups:\n  - name: alert.rules\n    rules:\n      - alert: service_down\n        expr: probe_success == 0\n        for: 1m\n        labels:\n          severity: 3\n          threshold: critical\n        annotations:\n          summary: \"Instance *{{ $labels.instance }}* down\"\n          description: \"*{{ $labels.instance }}* of job *{{ $labels.job }}* is down\"\n\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_007__local__prometheus_blackboxexporter_alertmanager/prometheus/prometheus.yml",
    "content": "global:\n  scrape_interval: 5s\n\n\n# Rules and alerts are read from the specified file(s)\nrule_files:\n  - alert.rules.yml\n\n# Alerting specifies settings related to the Alertmanager\nalerting:\n  alertmanagers:\n    - static_configs:\n        - targets:\n            # Alertmanager's default port is 9093\n            - host.docker.internal:9093\n\nscrape_configs:\n  - job_name: blackbox # To get metrics about the exporter itself\n    metrics_path: /metrics\n    static_configs:\n      - targets:\n          - host.docker.internal:9115   # For Windows and macOS replace with - host.docker.internal:9115\n\n  - job_name: blackbox-http # To get metrics about the exporter’s targets\n    metrics_path: /probe\n    params:\n      module: [http_2xx]\n    static_configs:\n      - targets:\n          - http://prometheus.io    # Target to probe with http\n          - https://prometheus.io   # Target to probe with https\n          - http://example.com:8080 # Target to probe with http on port 8080\n    relabel_configs:\n      - source_labels: [__address__]\n        target_label: __param_target\n      - source_labels: [__param_target]\n        target_label: instance\n      - target_label: __address__\n        replacement: host.docker.internal:9115  # The blackbox exporter’s real hostname:port. For Windows and macOS replace with - host.docker.internal:9115\n\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_008__local__mongodb_metricbeat_elasticsearch_kibana/ReadMe.md",
    "content": "## Objective\n- To create MongoDB dashboard on kibana by sending metrics of mongodb to elasticsearch using metricbeat.\n- All mongodb, metricbeat, elasticsearch, kibana all should be deployed locally.\n\n\n### Dir structure\n\n```bash\n$ tree local-mac/task-008-mongodb-metricbeat-elasticsearch-kibana \nlocal-mac/task-008-mongodb-metricbeat-elasticsearch-kibana\n├── ReadMe.md\n├── docker\n│   └── metricbeat\n│       ├── Dockerfile\n│       ├── entrypoint.sh\n│       └── metricbeat.yml\n└── docker-compose.yml\n```\n\n- docker-compose.yaml\n\n```yaml\nversion: '3.7'\nservices:\n  elasticsearch_service:\n    image: docker.elastic.co/elasticsearch/elasticsearch:7.8.0\n    container_name: es01\n    environment:\n      node.name: 'es01'\n      discovery.type: 'single-node'\n      bootstrap.memory_lock: 'true'\n      ES_JAVA_OPTS: '-Xms512m -Xmx512m'\n    ulimits:\n      memlock:\n        soft: -1\n        hard: -1\n#    volumes:\n#      - ./.data:/usr/share/elasticsearch/data\n    ports:\n      - 9200:9200\n    networks:\n      - host\n\n  kibana:\n    image: docker.elastic.co/kibana/kibana:7.8.0\n    container_name: kibana-sandbox\n    links:\n      - elasticsearch_service\n    environment:\n      SERVER_NAME: elasticsearch_service\n      ELASTICSEARCH_HOSTS: http://elasticsearch_service:9200\n    ports:\n      - 5601:5601\n    networks:\n      - host\n\n  # Container to monitor services running inside other containers\n  metricbeat:\n    build: ./docker/metricbeat\n    container_name: metricbeat-metricbeat-services\n    command: -e\n    environment:\n      - \"WAIT_FOR_HOSTS=elasticsearch_service:9200 kibana:5601\"\n      - \"HOST_ELASTICSEARCH=elasticsearch_service:9200\"\n      - \"HOST_KIBANA=kibana:5601\"\n    depends_on:\n      - elasticsearch_service\n    networks:\n      - host\n\n  mongodb:\n    image: mongo:4.4.0\n    container_name: metricbeat-mongodb\n    networks:\n      - host\nvolumes:\n  data:\n    driver: local\n\nnetworks:\n  host:\n```\n\n- metricbeat/Dockerfile\n\n```dockerfile\nFROM docker.elastic.co/beats/metricbeat:7.8.1\n\n# The file to monitor the host is different from the file to monitor docker services.ADD\n# So we pass the filename at build time to choose the target (host or services) of the image built.\nARG METRICBEAT_FILE=metricbeat.yml\nCOPY ${METRICBEAT_FILE} /usr/share/metricbeat/metricbeat.yml\n\nUSER root\n\nRUN yum -y install nc\n\nRUN mkdir /var/log/metricbeat \\\n    && chown metricbeat /usr/share/metricbeat/metricbeat.yml \\\n    && chmod go-w /usr/share/metricbeat/metricbeat.yml \\\n    && chown metricbeat /var/log/metricbeat\n\nCOPY entrypoint.sh /usr/local/bin/custom-entrypoint\nRUN chmod +x /usr/local/bin/custom-entrypoint\n\nUSER metricbeat\n\nENTRYPOINT [\"/usr/local/bin/custom-entrypoint\"]\n```\n\n- metricbeat/metricbeat.yml\n\n```yaml\nmetricbeat.modules:\n\n#------------------------------- RabbitMQ Module -------------------------------\n#- module: rabbitmq\n#  enabled: true\n#  metricsets: [\"node\"]\n#  period: 5s\n#  hosts: [\"rabbitmq:15672\"]\n#  username: guest\n#  password: guest\n\n#------------------------------- MySQL Module -------------------------------\n#- module: mysql\n#  enabled: true\n#  metricsets: [\"status\"]\n#  period: 5s\n#  hosts: [\"tcp(mysql:3306)/\"]\n#  username: root\n#  password: root\n\n#------------------------------- MongoDB Module -------------------------------\n\n- module: mongodb\n  enabled: true\n  metricsets: [\"status\", \"dbstats\"]\n  period: 5s\n  hosts: [\"mongodb:27017\"]\n\n#------------------------------- Apache Module -------------------------------\n#- module: apache\n#  enabled: true\n#  metricsets: [\"status\"]\n#  period: 5s\n#  hosts: [\"http://apache\"]\n\n#------------------------------- Redis Module -------------------------------\n#- module: redis\n#  enabled: true\n#  metricsets: [\"info\", \"keyspace\"]\n#  period: 5s\n#  hosts: [\"redis:6379\"]\n\n#------------------------------- Nginx Module -------------------------------\n#- module: nginx\n#  enabled: true\n#  metricsets: [\"stubstatus\"]\n#  period: 5s\n#  hosts: [\"http://nginx\"]\n#  server_status_path: \"nginx_status\"\n\n#-------------------------- Elasticsearch output ------------------------------\noutput.elasticsearch:\n  #password: \"\"\n  hosts: [\"${HOST_ELASTICSEARCH}\"]\n\nsetup.kibana:\n  host: \"${HOST_KIBANA}\"\n\n#============================== Dashboards =====================================\n# These settings control loading the sample dashboards to the Kibana index. Loading\n# the dashboards is disabled by default and can be enabled either by setting the\n# options here, or by using the `-setup` CLI flag.\nsetup.dashboards.enabled: true\n\nlogging.level: warning\nlogging.to_files: true\nlogging.to_syslog: false\nlogging.files:\n  path: /var/log/metricbeat\n  name: metricbeat.log\n  keepfiles: 2\n  permissions: 0644\n```\n\n- metricbeat/entrypoint.sh\n\n```bash\n#!/usr/bin/env bash\n\nwait_single_host() {\n  local host=$1\n  shift\n  local port=$1\n  shift\n\n  echo \"==> Check host ${host}:${port}\"\n  while ! nc ${host} ${port} > /dev/null 2>&1 < /dev/null; do echo \"   --> Waiting for ${host}:${port}\" && sleep 1; done;\n}\n\nwait_all_hosts() {\n  if [ ! -z \"$WAIT_FOR_HOSTS\" ]; then\n    local separator=':'\n    for _HOST in $WAIT_FOR_HOSTS ; do\n        IFS=\"${separator}\" read -ra _HOST_PARTS <<< \"$_HOST\"\n        wait_single_host \"${_HOST_PARTS[0]}\" \"${_HOST_PARTS[1]}\"\n    done\n  else\n    echo \"IMPORTANT : Waiting for nothing because no $WAIT_FOR_HOSTS env var defined !!!\"\n  fi\n}\n\nwait_all_hosts\n\n#while ! curl -s -X GET ${HOST_ELASTICSEARCH}/_cluster/health\\?wait_for_status\\=yellow\\&timeout\\=60s | grep -q '\"status\":\"green\"'\n#do\n#    echo \"==> Waiting for cluster YELLOW status\" && sleep 1\n#done\n#\n#echo \"\"\n#echo \"Cluster is YELLOW. Fine ! (But you could maybe try to have it GREEN ;))\"\n#echo \"\"\n\n\n## to wait to http://kibana:5601/api/status to be up\nsleep 60\n\nbash -c \"/usr/local/bin/docker-entrypoint $*\"\n```\n\n- Start using the docker-compose file\n\n```bash\n$ docker-compose up\n.\nSuccessfully built 74bc3e9797e1\nSuccessfully tagged task-008-mongodb-metricbeat-elasticsearch-kibana_metricbeat:latest\nWARNING: Image for service metricbeat was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.\nCreating es01               ... done\nCreating metricbeat-mongodb             ... done\nCreating metricbeat-metricbeat-services ... done\nCreating kibana-sandbox                 ... done\nAttaching to es01, metricbeat-mongodb, metricbeat-metricbeat-services, kibana-sandbox\n.\nmetricbeat-metricbeat-services |    --> Waiting for elasticsearch_service:9200\n.\nmetricbeat-metricbeat-services |    --> Waiting for kibana:5601\n.\nmetricbeat-mongodb       | {\"t\":{\"$date\":\"2020-08-16T18:37:05.226+00:00\"},\"s\":\"I\",  \"c\":\"NETWORK\",  \"id\":22944,   \"ctx\":\"conn34\",\"msg\":\"connection ended\",\"attr\":{\"remote\":\"192.168.160.4:33458\",\"connectionCount\":0}}\n.\n.\n```\n\n\n- MongoDB Dashboard\n\n![img](./.images/mongodb_local.png)\n\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_008__local__mongodb_metricbeat_elasticsearch_kibana/docker/metricbeat/Dockerfile",
    "content": "FROM docker.elastic.co/beats/metricbeat:7.8.1\n\n# The file to monitor the host is different from the file to monitor docker services.ADD\n# So we pass the filename at build time to choose the target (host or services) of the image built.\nARG METRICBEAT_FILE=metricbeat.yml\nCOPY ${METRICBEAT_FILE} /usr/share/metricbeat/metricbeat.yml\n\nUSER root\n\nRUN yum -y install nc\n\nRUN mkdir /var/log/metricbeat \\\n    && chown metricbeat /usr/share/metricbeat/metricbeat.yml \\\n    && chmod go-w /usr/share/metricbeat/metricbeat.yml \\\n    && chown metricbeat /var/log/metricbeat\n\nCOPY entrypoint.sh /usr/local/bin/custom-entrypoint\nRUN chmod +x /usr/local/bin/custom-entrypoint\n\nUSER metricbeat\n\nENTRYPOINT [\"/usr/local/bin/custom-entrypoint\"]"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_008__local__mongodb_metricbeat_elasticsearch_kibana/docker/metricbeat/entrypoint.sh",
    "content": "#!/usr/bin/env bash\n\nwait_single_host() {\n  local host=$1\n  shift\n  local port=$1\n  shift\n\n  echo \"==> Check host ${host}:${port}\"\n  while ! nc ${host} ${port} > /dev/null 2>&1 < /dev/null; do echo \"   --> Waiting for ${host}:${port}\" && sleep 1; done;\n}\n\nwait_all_hosts() {\n  if [ ! -z \"$WAIT_FOR_HOSTS\" ]; then\n    local separator=':'\n    for _HOST in $WAIT_FOR_HOSTS ; do\n        IFS=\"${separator}\" read -ra _HOST_PARTS <<< \"$_HOST\"\n        wait_single_host \"${_HOST_PARTS[0]}\" \"${_HOST_PARTS[1]}\"\n    done\n  else\n    echo \"IMPORTANT : Waiting for nothing because no $WAIT_FOR_HOSTS env var defined !!!\"\n  fi\n}\n\nwait_all_hosts\n\n#while ! curl -s -X GET ${HOST_ELASTICSEARCH}/_cluster/health\\?wait_for_status\\=yellow\\&timeout\\=60s | grep -q '\"status\":\"green\"'\n#do\n#    echo \"==> Waiting for cluster YELLOW status\" && sleep 1\n#done\n#\n#echo \"\"\n#echo \"Cluster is YELLOW. Fine ! (But you could maybe try to have it GREEN ;))\"\n#echo \"\"\n\n\n## to wait to http://kibana:5601/api/status to be up\nsleep 60\n\nbash -c \"/usr/local/bin/docker-entrypoint $*\"\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_008__local__mongodb_metricbeat_elasticsearch_kibana/docker/metricbeat/metricbeat.yml",
    "content": "metricbeat.modules:\n\n#------------------------------- RabbitMQ Module -------------------------------\n#- module: rabbitmq\n#  enabled: true\n#  metricsets: [\"node\"]\n#  period: 5s\n#  hosts: [\"rabbitmq:15672\"]\n#  username: guest\n#  password: guest\n\n#------------------------------- MySQL Module -------------------------------\n#- module: mysql\n#  enabled: true\n#  metricsets: [\"status\"]\n#  period: 5s\n#  hosts: [\"tcp(mysql:3306)/\"]\n#  username: root\n#  password: root\n\n#------------------------------- MongoDB Module -------------------------------\n\n- module: mongodb\n  enabled: true\n  metricsets: [\"status\", \"dbstats\"]\n  period: 5s\n  hosts: [\"mongodb:27017\"]\n\n#------------------------------- Apache Module -------------------------------\n#- module: apache\n#  enabled: true\n#  metricsets: [\"status\"]\n#  period: 5s\n#  hosts: [\"http://apache\"]\n\n#------------------------------- Redis Module -------------------------------\n#- module: redis\n#  enabled: true\n#  metricsets: [\"info\", \"keyspace\"]\n#  period: 5s\n#  hosts: [\"redis:6379\"]\n\n#------------------------------- Nginx Module -------------------------------\n#- module: nginx\n#  enabled: true\n#  metricsets: [\"stubstatus\"]\n#  period: 5s\n#  hosts: [\"http://nginx\"]\n#  server_status_path: \"nginx_status\"\n\n#-------------------------- Elasticsearch output ------------------------------\noutput.elasticsearch:\n  #password: \"\"\n  hosts: [\"${HOST_ELASTICSEARCH}\"]\n\nsetup.kibana:\n  host: \"${HOST_KIBANA}\"\n\n#============================== Dashboards =====================================\n# These settings control loading the sample dashboards to the Kibana index. Loading\n# the dashboards is disabled by default and can be enabled either by setting the\n# options here, or by using the `-setup` CLI flag.\nsetup.dashboards.enabled: true\n\nlogging.level: warning\nlogging.to_files: true\nlogging.to_syslog: false\nlogging.files:\n  path: /var/log/metricbeat\n  name: metricbeat.log\n  keepfiles: 2\n  permissions: 0644\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_008__local__mongodb_metricbeat_elasticsearch_kibana/docker-compose.yml",
    "content": "version: '3.7'\nservices:\n  elasticsearch_service:\n    image: docker.elastic.co/elasticsearch/elasticsearch:7.8.0\n    container_name: es01\n    environment:\n      node.name: 'es01'\n      discovery.type: 'single-node'\n      bootstrap.memory_lock: 'true'\n      ES_JAVA_OPTS: '-Xms512m -Xmx512m'\n    ulimits:\n      memlock:\n        soft: -1\n        hard: -1\n#    volumes:\n#      - ./.data:/usr/share/elasticsearch/data\n    ports:\n      - 9200:9200\n    networks:\n      - host\n\n  kibana:\n    image: docker.elastic.co/kibana/kibana:7.8.0\n    container_name: kibana-sandbox\n    links:\n      - elasticsearch_service\n    environment:\n      SERVER_NAME: elasticsearch_service\n      ELASTICSEARCH_HOSTS: http://elasticsearch_service:9200\n    ports:\n      - 5601:5601\n    networks:\n      - host\n\n  # Container to monitor services running inside other containers\n  metricbeat:\n    build: ./docker/metricbeat\n    container_name: metricbeat-metricbeat-services\n    command: -e\n    environment:\n      - \"WAIT_FOR_HOSTS=elasticsearch_service:9200 kibana:5601\"\n      - \"HOST_ELASTICSEARCH=elasticsearch_service:9200\"\n      - \"HOST_KIBANA=kibana:5601\"\n    depends_on:\n      - elasticsearch_service\n    networks:\n      - host\n\n  mongodb:\n    image: mongo:4.4.0\n    container_name: metricbeat-mongodb\n    networks:\n      - host\nvolumes:\n  data:\n    driver: local\n\nnetworks:\n  host:\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_009__local__natsStreaming_metricbeat_elasticsearch_kibana/ReadMe.md",
    "content": "### Objective : \n\nTo get NATS-Streaming Dashboard on Kibana using NATS-Streaming, Elasticsearch, Kibana, Metricbeat (custom image) in docker-compose\n\n#### Dir structure\n\n```bash\nlocal-mac/task-009-natsStreaming-metricbeat-elasticsearch-kibana\n├── ReadMe.md\n├── docker\n│   └── metricbeat\n│       ├── Dockerfile\n│       ├── entrypoint.sh\n│       └── metricbeat.yml\n└── docker-compose.yml\n```\n\n- docker-compose.yaml\n\n```yaml\nversion: '3.7'\nservices:\n  elasticsearch_service:\n    image: docker.elastic.co/elasticsearch/elasticsearch:7.8.0\n    container_name: es01\n    environment:\n      node.name: 'es01'\n      discovery.type: 'single-node'\n      bootstrap.memory_lock: 'true'\n      ES_JAVA_OPTS: '-Xms512m -Xmx512m'\n    ulimits:\n      memlock:\n        soft: -1\n        hard: -1\n#    volumes:\n#      - ./.data:/usr/share/elasticsearch/data\n    ports:\n      - 9200:9200\n    networks:\n      - host\n\n  kibana:\n    image: docker.elastic.co/kibana/kibana:7.8.0\n    container_name: kibana-sandbox\n    links:\n      - elasticsearch_service\n    environment:\n      SERVER_NAME: elasticsearch_service\n      ELASTICSEARCH_HOSTS: http://elasticsearch_service:9200\n    ports:\n      - 5601:5601\n    networks:\n      - host\n\n  # Container to monitor services running inside other containers\n  metricbeat:\n    build: ./docker/metricbeat\n    container_name: metricbeat-metricbeat-services\n    command: -e\n    environment:\n      - \"WAIT_FOR_HOSTS=elasticsearch_service:9200 kibana:5601\"\n      - \"HOST_ELASTICSEARCH=elasticsearch_service:9200\"\n      - \"HOST_KIBANA=kibana:5601\"\n    depends_on:\n      - elasticsearch_service\n    networks:\n      - host\n\n\n  nats-streaming-1:\n    restart: always\n    command:\n      - \"--cluster\"\n      - \"nats://0.0.0.0:6222\"\n      - \"--cluster_id\"\n      - nats-streaming\n      - \"--clustered\"\n      - \"--cluster_bootstrap\"\n      - \"--cluster_log_path\"\n      - /data/log\n      - \"--cluster_node_id\"\n      - nats-streaming-1\n      - \"--cluster_raft_logging\"\n      - \"--debug\"\n      - \"--dir\"\n      - /data/msg\n      - \"--http_port\"\n      - \"8222\"\n      - \"--port\"\n      - \"4222\"\n      - \"--store\"\n      - file\n      - \"--stan_debug\"\n      - \"--hb_interval\"\n      - 2s\n      - \"--hb_fail_count\"\n      - \"1\"\n      - \"--hb_timeout\"\n      - 5s\n    image: \"nats-streaming:0.18.0\"\n    networks:\n      - host\n    ports:\n      - \"4222:4222\"\n      - \"8222:8222\"\n#    volumes:\n#      - \"./nats-streaming-1:/data\"\n\n\n\nvolumes:\n  data:\n    driver: local\n\nnetworks:\n  host:\n```\n\n- metricbeat/Dockerfile\n\n```dockerfile\nFROM docker.elastic.co/beats/metricbeat:7.8.1\n\n# The file to monitor the host is different from the file to monitor docker services.ADD\n# So we pass the filename at build time to choose the target (host or services) of the image built.\nARG METRICBEAT_FILE=metricbeat.yml\nCOPY ${METRICBEAT_FILE} /usr/share/metricbeat/metricbeat.yml\n\nUSER root\n\nRUN yum -y install nc\n\nRUN mkdir /var/log/metricbeat \\\n    && chown metricbeat /usr/share/metricbeat/metricbeat.yml \\\n    && chmod go-w /usr/share/metricbeat/metricbeat.yml \\\n    && chown metricbeat /var/log/metricbeat\n\nCOPY entrypoint.sh /usr/local/bin/custom-entrypoint\nRUN chmod +x /usr/local/bin/custom-entrypoint\n\nUSER metricbeat\n\nENTRYPOINT [\"/usr/local/bin/custom-entrypoint\"]\n```\n\n- metricbeat/metricbeat.yml\n\n```yaml\nmetricbeat.modules:\n\n#------------------------------- NATS Module -------------------------------\n- module: nats\n  metricsets: [\"connections\", \"routes\", \"stats\", \"subscriptions\"]\n  period: 10s\n  hosts: [\"nats-streaming-1:8222\"]\n\n#------------------------------- MySQL Module -------------------------------\n#- module: mysql\n#  enabled: true\n#  metricsets: [\"status\"]\n#  period: 5s\n#  hosts: [\"tcp(mysql:3306)/\"]\n#  username: root\n#  password: root\n\n#------------------------------- MongoDB Module -------------------------------\n\n#- module: mongodb\n#  enabled: true\n#  metricsets: [\"status\", \"dbstats\"]\n#  period: 5s\n#  hosts: [\"mongodb:27017\"]\n\n#------------------------------- MongoDB Module -------------------------------\n#- module: apache\n#  enabled: true\n#  metricsets: [\"status\"]\n#  period: 5s\n#  hosts: [\"http://apache\"]\n\n#------------------------------- Redis Module -------------------------------\n#- module: redis\n#  enabled: true\n#  metricsets: [\"info\", \"keyspace\"]\n#  period: 5s\n#  hosts: [\"redis:6379\"]\n\n#------------------------------- Nginx Module -------------------------------\n#- module: nginx\n#  enabled: true\n#  metricsets: [\"stubstatus\"]\n#  period: 5s\n#  hosts: [\"http://nginx\"]\n#  server_status_path: \"nginx_status\"\n\n#-------------------------- Elasticsearch output ------------------------------\noutput.elasticsearch:\n  #password: \"\"\n  hosts: [\"${HOST_ELASTICSEARCH}\"]\n\nsetup.kibana:\n  host: \"${HOST_KIBANA}\"\n\n#============================== Dashboards =====================================\n# These settings control loading the sample dashboards to the Kibana index. Loading\n# the dashboards is disabled by default and can be enabled either by setting the\n# options here, or by using the `-setup` CLI flag.\nsetup.dashboards.enabled: true\n\nlogging.level: warning\nlogging.to_files: true\nlogging.to_syslog: false\nlogging.files:\n  path: /var/log/metricbeat\n  name: metricbeat.log\n  keepfiles: 2\n  permissions: 0644\n```\n\n- metricbeat/entrypoint.sh\n\n```bash\n#!/usr/bin/env bash\n\nwait_single_host() {\n  local host=$1\n  shift\n  local port=$1\n  shift\n\n  echo \"==> Check host ${host}:${port}\"\n  while ! nc ${host} ${port} > /dev/null 2>&1 < /dev/null; do echo \"   --> Waiting for ${host}:${port}\" && sleep 1; done;\n}\n\nwait_all_hosts() {\n  if [ ! -z \"$WAIT_FOR_HOSTS\" ]; then\n    local separator=':'\n    for _HOST in $WAIT_FOR_HOSTS ; do\n        IFS=\"${separator}\" read -ra _HOST_PARTS <<< \"$_HOST\"\n        wait_single_host \"${_HOST_PARTS[0]}\" \"${_HOST_PARTS[1]}\"\n    done\n  else\n    echo \"IMPORTANT : Waiting for nothing because no $WAIT_FOR_HOSTS env var defined !!!\"\n  fi\n}\n\nwait_all_hosts\n\n#while ! curl -s -X GET ${HOST_ELASTICSEARCH}/_cluster/health\\?wait_for_status\\=yellow\\&timeout\\=60s | grep -q '\"status\":\"green\"'\n#do\n#    echo \"==> Waiting for cluster YELLOW status\" && sleep 1\n#done\n#\n#echo \"\"\n#echo \"Cluster is YELLOW. Fine ! (But you could maybe try to have it GREEN ;))\"\n#echo \"\"\n\n## to wait to http://kibana:5601/api/status to be up\nsleep 60\n\nbash -c \"/usr/local/bin/docker-entrypoint $*\"\n```\n\n- Start the docker-compose\n\n```bash\n$ doker-compose up\nCreating network \"task-009-natsstreaming-metricbeat-elasticsearch-kibana_host\" with the default driver\nCreating volume \"task-009-natsstreaming-metricbeat-elasticsearch-kibana_data\" with local driver\nBuilding metricbeat\nStep 1/10 : FROM docker.elastic.co/beats/metricbeat:7.8.1\n.\n.\nCreating es01                                                                      ... done\nCreating task-009-natsstreaming-metricbeat-elasticsearch-kibana_nats-streaming-1_1 ... done\nCreating metricbeat-metricbeat-services                                            ... done\nCreating kibana-sandbox                                                            ... done\nAttaching to es01, task-009-natsstreaming-metricbeat-elasticsearch-kibana_nats-streaming-1_1, metricbeat-metricbeat-services, kibana-sandbox\n```\n\n- Dashboard images\n\n![img](./.images/nats_streaming_local_part1.png)\n\n![img](./.images/nats_streaming_local_part2.png)\n\n\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_009__local__natsStreaming_metricbeat_elasticsearch_kibana/docker/metricbeat/Dockerfile",
    "content": "FROM docker.elastic.co/beats/metricbeat:7.8.1\n\n# The file to monitor the host is different from the file to monitor docker services.ADD\n# So we pass the filename at build time to choose the target (host or services) of the image built.\nARG METRICBEAT_FILE=metricbeat.yml\nCOPY ${METRICBEAT_FILE} /usr/share/metricbeat/metricbeat.yml\n\nUSER root\n\nRUN yum -y install nc\n\nRUN mkdir /var/log/metricbeat \\\n    && chown metricbeat /usr/share/metricbeat/metricbeat.yml \\\n    && chmod go-w /usr/share/metricbeat/metricbeat.yml \\\n    && chown metricbeat /var/log/metricbeat\n\nCOPY entrypoint.sh /usr/local/bin/custom-entrypoint\nRUN chmod +x /usr/local/bin/custom-entrypoint\n\nUSER metricbeat\n\nENTRYPOINT [\"/usr/local/bin/custom-entrypoint\"]"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_009__local__natsStreaming_metricbeat_elasticsearch_kibana/docker/metricbeat/entrypoint.sh",
    "content": "#!/usr/bin/env bash\n\nwait_single_host() {\n  local host=$1\n  shift\n  local port=$1\n  shift\n\n  echo \"==> Check host ${host}:${port}\"\n  while ! nc ${host} ${port} > /dev/null 2>&1 < /dev/null; do echo \"   --> Waiting for ${host}:${port}\" && sleep 1; done;\n}\n\nwait_all_hosts() {\n  if [ ! -z \"$WAIT_FOR_HOSTS\" ]; then\n    local separator=':'\n    for _HOST in $WAIT_FOR_HOSTS ; do\n        IFS=\"${separator}\" read -ra _HOST_PARTS <<< \"$_HOST\"\n        wait_single_host \"${_HOST_PARTS[0]}\" \"${_HOST_PARTS[1]}\"\n    done\n  else\n    echo \"IMPORTANT : Waiting for nothing because no $WAIT_FOR_HOSTS env var defined !!!\"\n  fi\n}\n\nwait_all_hosts\n\n#while ! curl -s -X GET ${HOST_ELASTICSEARCH}/_cluster/health\\?wait_for_status\\=yellow\\&timeout\\=60s | grep -q '\"status\":\"green\"'\n#do\n#    echo \"==> Waiting for cluster YELLOW status\" && sleep 1\n#done\n#\n#echo \"\"\n#echo \"Cluster is YELLOW. Fine ! (But you could maybe try to have it GREEN ;))\"\n#echo \"\"\n\n## to wait to http://kibana:5601/api/status to be up\nsleep 60\n\nbash -c \"/usr/local/bin/docker-entrypoint $*\"\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_009__local__natsStreaming_metricbeat_elasticsearch_kibana/docker/metricbeat/metricbeat.yml",
    "content": "metricbeat.modules:\n\n#------------------------------- NATS Module -------------------------------\n- module: nats\n  metricsets: [\"connections\", \"routes\", \"stats\", \"subscriptions\"]\n  period: 10s\n  hosts: [\"nats-streaming-1:8222\"]\n\n#------------------------------- MySQL Module -------------------------------\n#- module: mysql\n#  enabled: true\n#  metricsets: [\"status\"]\n#  period: 5s\n#  hosts: [\"tcp(mysql:3306)/\"]\n#  username: root\n#  password: root\n\n#------------------------------- MongoDB Module -------------------------------\n\n#- module: mongodb\n#  enabled: true\n#  metricsets: [\"status\", \"dbstats\"]\n#  period: 5s\n#  hosts: [\"mongodb:27017\"]\n\n#------------------------------- MongoDB Module -------------------------------\n#- module: apache\n#  enabled: true\n#  metricsets: [\"status\"]\n#  period: 5s\n#  hosts: [\"http://apache\"]\n\n#------------------------------- Redis Module -------------------------------\n#- module: redis\n#  enabled: true\n#  metricsets: [\"info\", \"keyspace\"]\n#  period: 5s\n#  hosts: [\"redis:6379\"]\n\n#------------------------------- Nginx Module -------------------------------\n#- module: nginx\n#  enabled: true\n#  metricsets: [\"stubstatus\"]\n#  period: 5s\n#  hosts: [\"http://nginx\"]\n#  server_status_path: \"nginx_status\"\n\n#-------------------------- Elasticsearch output ------------------------------\noutput.elasticsearch:\n  #password: \"\"\n  hosts: [\"${HOST_ELASTICSEARCH}\"]\n\nsetup.kibana:\n  host: \"${HOST_KIBANA}\"\n\n#============================== Dashboards =====================================\n# These settings control loading the sample dashboards to the Kibana index. Loading\n# the dashboards is disabled by default and can be enabled either by setting the\n# options here, or by using the `-setup` CLI flag.\nsetup.dashboards.enabled: true\n\nlogging.level: warning\nlogging.to_files: true\nlogging.to_syslog: false\nlogging.files:\n  path: /var/log/metricbeat\n  name: metricbeat.log\n  keepfiles: 2\n  permissions: 0644\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_009__local__natsStreaming_metricbeat_elasticsearch_kibana/docker-compose.yml",
    "content": "version: '3.7'\nservices:\n  elasticsearch_service:\n    image: docker.elastic.co/elasticsearch/elasticsearch:7.8.0\n    container_name: es01\n    environment:\n      node.name: 'es01'\n      discovery.type: 'single-node'\n      bootstrap.memory_lock: 'true'\n      ES_JAVA_OPTS: '-Xms512m -Xmx512m'\n    ulimits:\n      memlock:\n        soft: -1\n        hard: -1\n#    volumes:\n#      - ./.data:/usr/share/elasticsearch/data\n    ports:\n      - 9200:9200\n    networks:\n      - host\n\n  kibana:\n    image: docker.elastic.co/kibana/kibana:7.8.0\n    container_name: kibana-sandbox\n    links:\n      - elasticsearch_service\n    environment:\n      SERVER_NAME: elasticsearch_service\n      ELASTICSEARCH_HOSTS: http://elasticsearch_service:9200\n    ports:\n      - 5601:5601\n    networks:\n      - host\n\n  # Container to monitor services running inside other containers\n  metricbeat:\n    build: ./docker/metricbeat\n    container_name: metricbeat-metricbeat-services\n    command: -e\n    environment:\n      - \"WAIT_FOR_HOSTS=elasticsearch_service:9200 kibana:5601\"\n      - \"HOST_ELASTICSEARCH=elasticsearch_service:9200\"\n      - \"HOST_KIBANA=kibana:5601\"\n    depends_on:\n      - elasticsearch_service\n    networks:\n      - host\n\n\n  nats-streaming-1:\n    restart: always\n    command:\n      - \"--cluster\"\n      - \"nats://0.0.0.0:6222\"\n      - \"--cluster_id\"\n      - nats-streaming\n      - \"--clustered\"\n      - \"--cluster_bootstrap\"\n      - \"--cluster_log_path\"\n      - /data/log\n      - \"--cluster_node_id\"\n      - nats-streaming-1\n      - \"--cluster_raft_logging\"\n      - \"--debug\"\n      - \"--dir\"\n      - /data/msg\n      - \"--http_port\"\n      - \"8222\"\n      - \"--port\"\n      - \"4222\"\n      - \"--store\"\n      - file\n      - \"--stan_debug\"\n      - \"--hb_interval\"\n      - 2s\n      - \"--hb_fail_count\"\n      - \"1\"\n      - \"--hb_timeout\"\n      - 5s\n    image: \"nats-streaming:0.18.0\"\n    networks:\n      - host\n    ports:\n      - \"4222:4222\"\n      - \"8222:8222\"\n#    volumes:\n#      - \"./nats-streaming-1:/data\"\n\n\n\nvolumes:\n  data:\n    driver: local\n\nnetworks:\n  host:\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_010__local__mysql_metricbeat_elasticsearch_kibana/ReadMe.md",
    "content": "### Objective : \n\nTo get MySQL DB Dashboard on Kibana using MySQL, Elasticsearch, Kibana, Metricbeat (custom image) in docker-compose\n\n#### Directory Structure\n\n```bash\nlocal-mac/task-010-mysql-metricbeat-elasticsearch-kibana\n├── ReadMe.md\n├── docker\n│   └── metricbeat\n│       ├── Dockerfile\n│       ├── entrypoint.sh\n│       └── metricbeat.yml\n└── docker-compose.yml\n```\n\n- docker-compose.yaml\n\n```yaml\nversion: '3.7'\nservices:\n  elasticsearch_service:\n    image: docker.elastic.co/elasticsearch/elasticsearch:7.8.0\n    container_name: es01\n    environment:\n      node.name: 'es01'\n      discovery.type: 'single-node'\n      bootstrap.memory_lock: 'true'\n      ES_JAVA_OPTS: '-Xms512m -Xmx512m'\n    ulimits:\n      memlock:\n        soft: -1\n        hard: -1\n#    volumes:\n#      - ./.data:/usr/share/elasticsearch/data\n    ports:\n      - 9200:9200\n    networks:\n      - host\n\n  kibana:\n    image: docker.elastic.co/kibana/kibana:7.8.0\n    container_name: kibana-sandbox\n    links:\n      - elasticsearch_service\n    environment:\n      SERVER_NAME: elasticsearch_service\n      ELASTICSEARCH_HOSTS: http://elasticsearch_service:9200\n    ports:\n      - 5601:5601\n    networks:\n      - host\n\n  # Container to monitor services running inside other containers\n  metricbeat:\n    build: ./docker/metricbeat\n    container_name: metricbeat-metricbeat-services\n    command: -e\n    environment:\n      - \"WAIT_FOR_HOSTS=elasticsearch_service:9200 kibana:5601\"\n      - \"HOST_ELASTICSEARCH=elasticsearch_service:9200\"\n      - \"HOST_KIBANA=kibana:5601\"\n    depends_on:\n      - elasticsearch_service\n    networks:\n      - host\n\n  mysql:\n    image: mysql:8.0\n    container_name: metricbeat-mysql\n    environment:\n      MYSQL_ROOT_PASSWORD: root\n    networks:\n      - host\n\nvolumes:\n  data:\n    driver: local\n\nnetworks:\n  host:\n```\n\n- docker/metricbeat/Dockerfile\n\n```dockerfile\nFROM docker.elastic.co/beats/metricbeat:7.8.1\n\n# The file to monitor the host is different from the file to monitor docker services.ADD\n# So we pass the filename at build time to choose the target (host or services) of the image built.\nARG METRICBEAT_FILE=metricbeat.yml\nCOPY ${METRICBEAT_FILE} /usr/share/metricbeat/metricbeat.yml\n\nUSER root\n\nRUN yum -y install nc\n\nRUN mkdir /var/log/metricbeat \\\n    && chown metricbeat /usr/share/metricbeat/metricbeat.yml \\\n    && chmod go-w /usr/share/metricbeat/metricbeat.yml \\\n    && chown metricbeat /var/log/metricbeat\n\nCOPY entrypoint.sh /usr/local/bin/custom-entrypoint\nRUN chmod +x /usr/local/bin/custom-entrypoint\n\nUSER metricbeat\n\nENTRYPOINT [\"/usr/local/bin/custom-entrypoint\"]\n```\n\n- metricbeat/metricbeat.yml\n\n```yaml\nmetricbeat.modules:\n\n#------------------------------- MySQL Module -------------------------------\n- module: mysql\n  enabled: true\n  metricsets: [\"status\"]\n  period: 5s\n  hosts: [\"tcp(mysql:3306)/\"]\n  username: root\n  password: root\n\n\n#-------------------------- Elasticsearch output ------------------------------\noutput.elasticsearch:\n  #password: \"\"\n  hosts: [\"${HOST_ELASTICSEARCH}\"]\n\nsetup.kibana:\n  host: \"${HOST_KIBANA}\"\n\n#============================== Dashboards =====================================\n# These settings control loading the sample dashboards to the Kibana index. Loading\n# the dashboards is disabled by default and can be enabled either by setting the\n# options here, or by using the `-setup` CLI flag.\nsetup.dashboards.enabled: true\n\nlogging.level: warning\nlogging.to_files: true\nlogging.to_syslog: false\nlogging.files:\n  path: /var/log/metricbeat\n  name: metricbeat.log\n  keepfiles: 2\n  permissions: 0644\n```\n\n- metricbeat/entrypoint.sh\n\n```bash\n#!/usr/bin/env bash\n\nwait_single_host() {\n  local host=$1\n  shift\n  local port=$1\n  shift\n\n  echo \"==> Check host ${host}:${port}\"\n  while ! nc ${host} ${port} > /dev/null 2>&1 < /dev/null; do echo \"   --> Waiting for ${host}:${port}\" && sleep 1; done;\n}\n\nwait_all_hosts() {\n  if [ ! -z \"$WAIT_FOR_HOSTS\" ]; then\n    local separator=':'\n    for _HOST in $WAIT_FOR_HOSTS ; do\n        IFS=\"${separator}\" read -ra _HOST_PARTS <<< \"$_HOST\"\n        wait_single_host \"${_HOST_PARTS[0]}\" \"${_HOST_PARTS[1]}\"\n    done\n  else\n    echo \"IMPORTANT : Waiting for nothing because no $WAIT_FOR_HOSTS env var defined !!!\"\n  fi\n}\n\nwait_all_hosts\n\n#while ! curl -s -X GET ${HOST_ELASTICSEARCH}/_cluster/health\\?wait_for_status\\=yellow\\&timeout\\=60s | grep -q '\"status\":\"green\"'\n#do\n#    echo \"==> Waiting for cluster YELLOW status\" && sleep 1\n#done\n#\n#echo \"\"\n#echo \"Cluster is YELLOW. Fine ! (But you could maybe try to have it GREEN ;))\"\n#echo \"\"\n\n\n## to wait to http://kibana:5601/api/status to be up\nsleep 60\n\nbash -c \"/usr/local/bin/docker-entrypoint $*\"\n```\n\n- Start using the docker-compose file\n\n```bash\n$ doker-compose up\nCreating metricbeat-mysql ... done\nCreating es01             ... done\nCreating metricbeat-metricbeat-services ... done\nCreating kibana-sandbox                 ... done\nAttaching to metricbeat-mysql, es01, metricbeat-metricbeat-services, kibana-sandbox\n\n```\n\n- Dashboard images\n\n![img](./.images/mysql_local.png)\n\n\n\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_010__local__mysql_metricbeat_elasticsearch_kibana/docker/metricbeat/Dockerfile",
    "content": "FROM docker.elastic.co/beats/metricbeat:7.8.1\n\n# The file to monitor the host is different from the file to monitor docker services.ADD\n# So we pass the filename at build time to choose the target (host or services) of the image built.\nARG METRICBEAT_FILE=metricbeat.yml\nCOPY ${METRICBEAT_FILE} /usr/share/metricbeat/metricbeat.yml\n\nUSER root\n\nRUN yum -y install nc\n\nRUN mkdir /var/log/metricbeat \\\n    && chown metricbeat /usr/share/metricbeat/metricbeat.yml \\\n    && chmod go-w /usr/share/metricbeat/metricbeat.yml \\\n    && chown metricbeat /var/log/metricbeat\n\nCOPY entrypoint.sh /usr/local/bin/custom-entrypoint\nRUN chmod +x /usr/local/bin/custom-entrypoint\n\nUSER metricbeat\n\nENTRYPOINT [\"/usr/local/bin/custom-entrypoint\"]"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_010__local__mysql_metricbeat_elasticsearch_kibana/docker/metricbeat/entrypoint.sh",
    "content": "#!/usr/bin/env bash\n\nwait_single_host() {\n  local host=$1\n  shift\n  local port=$1\n  shift\n\n  echo \"==> Check host ${host}:${port}\"\n  while ! nc ${host} ${port} > /dev/null 2>&1 < /dev/null; do echo \"   --> Waiting for ${host}:${port}\" && sleep 1; done;\n}\n\nwait_all_hosts() {\n  if [ ! -z \"$WAIT_FOR_HOSTS\" ]; then\n    local separator=':'\n    for _HOST in $WAIT_FOR_HOSTS ; do\n        IFS=\"${separator}\" read -ra _HOST_PARTS <<< \"$_HOST\"\n        wait_single_host \"${_HOST_PARTS[0]}\" \"${_HOST_PARTS[1]}\"\n    done\n  else\n    echo \"IMPORTANT : Waiting for nothing because no $WAIT_FOR_HOSTS env var defined !!!\"\n  fi\n}\n\nwait_all_hosts\n\n#while ! curl -s -X GET ${HOST_ELASTICSEARCH}/_cluster/health\\?wait_for_status\\=yellow\\&timeout\\=60s | grep -q '\"status\":\"green\"'\n#do\n#    echo \"==> Waiting for cluster YELLOW status\" && sleep 1\n#done\n#\n#echo \"\"\n#echo \"Cluster is YELLOW. Fine ! (But you could maybe try to have it GREEN ;))\"\n#echo \"\"\n\n\n## to wait to http://kibana:5601/api/status to be up\nsleep 60\n\nbash -c \"/usr/local/bin/docker-entrypoint $*\"\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_010__local__mysql_metricbeat_elasticsearch_kibana/docker/metricbeat/metricbeat.yml",
    "content": "metricbeat.modules:\n\n#------------------------------- MySQL Module -------------------------------\n- module: mysql\n  enabled: true\n  metricsets: [\"status\"]\n  period: 5s\n  hosts: [\"tcp(mysql:3306)/\"]\n  username: root\n  password: root\n\n\n#-------------------------- Elasticsearch output ------------------------------\noutput.elasticsearch:\n  #password: \"\"\n  hosts: [\"${HOST_ELASTICSEARCH}\"]\n\nsetup.kibana:\n  host: \"${HOST_KIBANA}\"\n\n#============================== Dashboards =====================================\n# These settings control loading the sample dashboards to the Kibana index. Loading\n# the dashboards is disabled by default and can be enabled either by setting the\n# options here, or by using the `-setup` CLI flag.\nsetup.dashboards.enabled: true\n\nlogging.level: warning\nlogging.to_files: true\nlogging.to_syslog: false\nlogging.files:\n  path: /var/log/metricbeat\n  name: metricbeat.log\n  keepfiles: 2\n  permissions: 0644\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_010__local__mysql_metricbeat_elasticsearch_kibana/docker-compose.yml",
    "content": "version: '3.7'\nservices:\n  elasticsearch_service:\n    image: docker.elastic.co/elasticsearch/elasticsearch:7.8.0\n    container_name: es01\n    environment:\n      node.name: 'es01'\n      discovery.type: 'single-node'\n      bootstrap.memory_lock: 'true'\n      ES_JAVA_OPTS: '-Xms512m -Xmx512m'\n    ulimits:\n      memlock:\n        soft: -1\n        hard: -1\n#    volumes:\n#      - ./.data:/usr/share/elasticsearch/data\n    ports:\n      - 9200:9200\n    networks:\n      - host\n\n  kibana:\n    image: docker.elastic.co/kibana/kibana:7.8.0\n    container_name: kibana-sandbox\n    links:\n      - elasticsearch_service\n    environment:\n      SERVER_NAME: elasticsearch_service\n      ELASTICSEARCH_HOSTS: http://elasticsearch_service:9200\n    ports:\n      - 5601:5601\n    networks:\n      - host\n\n  # Container to monitor services running inside other containers\n  metricbeat:\n    build: ./docker/metricbeat\n    container_name: metricbeat-metricbeat-services\n    command: -e\n    environment:\n      - \"WAIT_FOR_HOSTS=elasticsearch_service:9200 kibana:5601\"\n      - \"HOST_ELASTICSEARCH=elasticsearch_service:9200\"\n      - \"HOST_KIBANA=kibana:5601\"\n    depends_on:\n      - elasticsearch_service\n    networks:\n      - host\n\n  mysql:\n    image: mysql:8.0\n    container_name: metricbeat-mysql\n    environment:\n      MYSQL_ROOT_PASSWORD: root\n    networks:\n      - host\n\nvolumes:\n  data:\n    driver: local\n\nnetworks:\n  host:\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_011__gcp__nginx_https_domain_test/ReadMe.md",
    "content": "### To test the certificates are working\n\n- nslookup to domain\n\n```bash\n$ nslookup server.domain.com\nServer:         127.0.0.53\nAddress:        127.0.0.53#53\n\nNon-authoritative answer:\nName:   server.domain.com\nAddress: 23.12.43.56\n```\n\n- The following is the `docker-compose` file\n\n```yaml\nversion: \"3.7\"\nservices:\n  nginx:\n    image: nginx:latest\n    ports:\n      - 80:80\n      - 443:443\n    volumes:\n      - ./certs:/etc/nginx/certs\n      - ./nginx.conf:/etc/nginx/conf.d/default.conf\n```\n\n- The following is `nginx.conf` file\n\n```bash\nserver {\n    listen 443 ssl;\n    server_name  prod.domain.com;\n    ssl_certificate /etc/nginx/certs/star_domain_com.chained.crt;\n    ssl_certificate_key /etc/nginx/certs/star_domain.com.key;\n    location / {\n        allow all;\n        root /usr/share/nginx/html;\n    }\n\n    root /usr/share/nginx/html;\n    index index.html;\n}\n```\n\n- Dir structure\n\n```yaml\n$ tree ../gcp/task-011-nginx-https-domain-test \n../gcp/task-011-nginx-https-domain-test\n├── ReadMe.md\n├── certs\n│   ├── star_domain.com.key\n│   └── star_domain_com.chained.crt\n├── docker-compose.yml\n└── nginx.conf\n\n```\n\n- Login to the server  23.12.43.56. Assuming the certificates and key are valid for `*.domain.com`\n\n```bash\n$ docker-compose up -d\n```\n\n\n\n- Visit `https://server.domain.com/` on browser and validate if its being loaded\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_011__gcp__nginx_https_domain_test/certs/star_domain.com.key",
    "content": ""
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_011__gcp__nginx_https_domain_test/certs/star_domain_com.chained.crt",
    "content": ""
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_011__gcp__nginx_https_domain_test/docker-compose.yml",
    "content": "version: \"3.7\"\nservices:\n  nginx:\n    image: nginx:latest\n    ports:\n      - 80:80\n      - 443:443\n    volumes:\n      - ./certs:/etc/nginx/certs\n      - ./nginx.conf:/etc/nginx/conf.d/default.conf\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_011__gcp__nginx_https_domain_test/nginx.conf",
    "content": "server {\n    listen 443 ssl;\n    server_name  prod.domain.com;\n    ssl_certificate /etc/nginx/certs/star_domain_com.chained.crt;\n    ssl_certificate_key /etc/nginx/certs/star_domain.com.key;\n    location / {\n        allow all;\n        root /usr/share/nginx/html;\n    }\n\n    root /usr/share/nginx/html;\n    index index.html;\n}"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_012__local__caddy_https_domain_test_with_custom_certs/Caddyfile",
    "content": "cert-validation-srv.domain.com:443 {\n    tls /etc/ssl/certs/star_domain_com.chained.crt /etc/ssl/certs/star_domain.com.key\n    root * /usr/share/caddy\n    file_server\n    basicauth * {\n            username JDJiJDEyJGIuMEhnMU9IRkhCLlB4cUZPMVpJcWU0azVvdDcxQUdISHFOdE40eDVkdThRODlqRDFJRHJX\n    }\n}\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_012__local__caddy_https_domain_test_with_custom_certs/ReadMe.md",
    "content": "### To test custom TLS certs with docker-caddy\n\n#### Directory structure\n\n```bash\nlocal-mac/task-012-caddy-https-domain-test-with-custom-certs\n├── Caddyfile\n├── ReadMe.md\n├── certs\n│   ├── star_domain.com.key\n│   └── star_domain_com.chained.crt\n├── docker-compose.yml\n├── index.html\n└── password-generation.yml\n```\n\n- docker-compose.yaml\n\n```yaml\nversion: \"3.7\"\n\nservices:\n  caddy:\n    image: caddy:latest\n    restart: unless-stopped\n    ports:\n      - \"80:80\"\n      - \"443:443\"\n    volumes:\n      - $PWD/index.html:/usr/share/caddy/index.html\n      - $PWD/Caddyfile:/etc/caddy/Caddyfile\n      - $PWD/caddy_data:/data\n      - ./certs:/etc/ssl/certs\n    networks:\n      - host\n\nvolumes:\n  data01:\n    driver: local\n\nnetworks:\n  host:\n```\n\n- Caddyfile\n\n```bash\ncert-validation-srv.domain.com:443 {\n    tls /etc/ssl/certs/star_domain_com.chained.crt /etc/ssl/certs/star_domain.com.key\n    root * /usr/share/caddy\n    file_server\n    basicauth * {\n            username JDJiJDEyJGIuMEhnMU9IRkhCLlB4cUZPMVpJcWU0azVvdDcxQUdISHFOdE40eDVkdThRODlqRDFJRHJX\n    }\n}\n```\n\n- index.html\n\n```bash\nhello world\n```\n\n- password-generation.yml\n\n```yaml\n- hosts: localhost\n  gather_facts: false\n  tasks:\n    - debug:\n        msg: \"Password to be encrypted - {{ 'password_admin' | password_hash('bcrypt') | b64encode }}\"\n```\n\n- Suppose we have the certs for custom domain `*.domain.com` and the certs are saved at the location `certs`\n\n```bash\n$ ls certs          \nstar_domain.com.key         star_domain_com.chained.crt \n```\n\n- Ensure that we have the following entry is added to `/etc/hosts` file. As we will test the TLS certs for this domain.\n\n```bash\n$ cat /etc/hosts | grep cert-validation\n127.0.0.1 cert-validation-srv.domain.com\n``` \n\n- Start the docker caddy\n\n```bash\ndocker-compose up\n```\n\n- Since there is automatic redirect from http to https we will see the following observations\n\n```bash\n$ curl  http://cert-validation-srv.domain.com \n\n$ curl -L http://cert-validation-srv.domain.com\nhello world\n\n$ curl https://cert-validation-srv.domain.com\nhello world\n```\n\n- You can generate the password using the playbook. You have to put this password in Caddy file.  [Reference](https://caddyserver.com/docs/caddyfile/directives/basicauth)\n\n```bash\n$ ansible-playbook password-generation.yml -v\nok: [localhost] => {\n    \"msg\": \"JDJiJDEyJGRrWnExWmJGbnp0b3BoZmVjSVRnNk9TZXZ3T3VLNTFHUS9nRGs4a00yZ0lZQTZrSUR6MDUy\"\n}\n```\n\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_012__local__caddy_https_domain_test_with_custom_certs/certs/star_domain.com.key",
    "content": ""
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_012__local__caddy_https_domain_test_with_custom_certs/certs/star_domain_com.chained.crt",
    "content": ""
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_012__local__caddy_https_domain_test_with_custom_certs/docker-compose.yml",
    "content": "version: \"3.7\"\n\nservices:\n  caddy:\n    image: caddy:latest\n    restart: unless-stopped\n    ports:\n      - \"80:80\"\n      - \"443:443\"\n    volumes:\n      - $PWD/index.html:/usr/share/caddy/index.html\n      - $PWD/Caddyfile:/etc/caddy/Caddyfile\n      - $PWD/caddy_data:/data\n      - ./certs:/etc/ssl/certs\n    networks:\n      - host\n\nvolumes:\n  data01:\n    driver: local\n\nnetworks:\n  host:\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_012__local__caddy_https_domain_test_with_custom_certs/index.html-renameme-to-html",
    "content": "hello world\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_012__local__caddy_https_domain_test_with_custom_certs/password-generation.yml",
    "content": "- hosts: localhost\n  gather_facts: false\n  tasks:\n    - debug:\n        msg: \"Password to be encrypted - {{ 'password_admin' | password_hash('bcrypt') | b64encode }}\"\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_013__local__caddy_https_acme_and_save_certs/Caddyfile",
    "content": "test.domain.com:443 {\n    root * /usr/share/caddy\n    file_server\n}\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_013__local__caddy_https_acme_and_save_certs/ReadMe.md",
    "content": "## We will try to get ACME certs for test.domain.com and docker-caddy server. \n\n\n### Directory structure\n\n```bash\n$ tree local-mac/task-013-caddy-https-acme-and-save-certs          \nlocal-mac/task-013-caddy-https-acme-and-save-certs\n├── Caddyfile\n├── ReadMe.md\n└── docker-compose.yml\n```\n\n- docker-compose.yaml\n\n```bash\nversion: \"3.7\"\n\nservices:\n  caddy:\n    image: caddy:2.2.1\n    restart: unless-stopped\n    ports:\n      - \"80:80\"\n      - \"443:443\"\n    volumes:\n      - $PWD/Caddyfile:/etc/caddy/Caddyfile\n      - $PWD/data:/data/caddy\n    networks:\n      - host\nvolumes:\n  data01:\n    driver: local\nnetworks:\n  host:\n```\n\n- Caddyfile\n\n```bash\ntest.domain.com:443 {\n    root * /usr/share/caddy\n    file_server\n}\n```\n\n- Ensure that you are logged into the server test.domain.com (33.455.23.67)\n\n```bash\n$ nslookup test.domain.com\nServer:         34.42.23.20\nAddress:        34.42.34.20#53\n\nNon-authoritative answer:\nName:   test.domain.com\nAddress: 33.455.23.67\n```\n\n\n\n- Ensure that the following `data` are present. Here we will store the certificates on the host so that on restarting it caddy server does not do the \nACME challenge again. \n\n```bash\nmkdir data\n```\n\n\n- Run the docker-compose file. (When the data director is not mounted | When the data directory is mounted and we are running for the first time)\n\n```bash\n$ docker-compose up\nCreating network \"root_default\" with the default driver\nPulling caddy (caddy:2.2.1)...\n2.2.1: Pulling from library/caddy\n801bfaa63ef2: Pull complete\n1afadb5ee6ea: Pull complete\n47e5593f16cf: Pull complete\n093aa05efcd0: Pull complete\n06e6e211c46d: Pull complete\nDigest: sha256:9ce208090b30673d941f890c84b172b5cacbc2ec65099ec778c8ee5b07e809ff\nStatus: Downloaded newer image for caddy:2.2.1\nCreating root_caddy_1 ... done\nAttaching to root_caddy_1\ncaddy_1  | {\"level\":\"info\",\"ts\":1609757632.0677993,\"msg\":\"using provided configuration\",\"config_file\":\"/etc/caddy/Caddyfile\",\"config_adapter\":\"caddyfile\"}\ncaddy_1  | {\"level\":\"info\",\"ts\":1609757632.0694492,\"logger\":\"admin\",\"msg\":\"admin endpoint started\",\"address\":\"tcp/localhost:2019\",\"enforce_origin\":false,\"origins\":[\"localhost:2019\",\"[::1]:2019\",\"127.0.0.1:2019\"]}\ncaddy_1  | {\"level\":\"info\",\"ts\":1609757632.0710332,\"logger\":\"http\",\"msg\":\"server is listening only on the HTTPS port but has no TLS connection policies; adding one to enable TLS\",\"server_name\":\"srv0\",\"https_port\":443}\ncaddy_1  | {\"level\":\"info\",\"ts\":1609757632.07108,\"logger\":\"http\",\"msg\":\"enabling automatic HTTP->HTTPS redirects\",\"server_name\":\"srv0\"}\ncaddy_1  | {\"level\":\"info\",\"ts\":1609757632.071871,\"logger\":\"tls.cache.maintenance\",\"msg\":\"started background certificate maintenance\",\"cache\":\"0xc000338770\"}\ncaddy_1  | {\"level\":\"info\",\"ts\":1609757632.072646,\"logger\":\"tls\",\"msg\":\"cleaned up storage units\"}\ncaddy_1  | {\"level\":\"info\",\"ts\":1609757632.0730252,\"logger\":\"http\",\"msg\":\"enabling automatic TLS certificate management\",\"domains\":[\"test.domain.com\"]}\ncaddy_1  | {\"level\":\"info\",\"ts\":1609757632.0741072,\"logger\":\"tls.obtain\",\"msg\":\"acquiring lock\",\"identifier\":\"test.domain.com\"}\ncaddy_1  | {\"level\":\"info\",\"ts\":1609757632.074884,\"logger\":\"tls.obtain\",\"msg\":\"lock acquired\",\"identifier\":\"test.domain.com\"}\ncaddy_1  | {\"level\":\"info\",\"ts\":1609757632.0852695,\"msg\":\"autosaved config\",\"file\":\"/config/caddy/autosave.json\"}\ncaddy_1  | {\"level\":\"info\",\"ts\":1609757632.0852895,\"msg\":\"serving initial configuration\"}\ncaddy_1  | {\"level\":\"info\",\"ts\":1609757633.2071838,\"logger\":\"tls.issuance.acme\",\"msg\":\"waiting on internal rate limiter\",\"identifiers\":[\"test.domain.com\"]}\ncaddy_1  | {\"level\":\"info\",\"ts\":1609757633.207216,\"logger\":\"tls.issuance.acme\",\"msg\":\"done waiting on internal rate limiter\",\"identifiers\":[\"test.domain.com\"]}\ncaddy_1  | {\"level\":\"info\",\"ts\":1609757633.7696266,\"logger\":\"tls.issuance.acme.acme_client\",\"msg\":\"trying to solve challenge\",\"identifier\":\"test.domain.com\",\"challenge_type\":\"tls-alpn-01\",\"ca\":\"https://acme-v02.api.letsencrypt.org/directory\"}\ncaddy_1  | {\"level\":\"info\",\"ts\":1609757634.0587502,\"logger\":\"tls\",\"msg\":\"served key authentication certificate\",\"server_name\":\"test.domain.com\",\"challenge\":\"tls-alpn-01\",\"remote\":\"18.196.96.172:28288\"}\ncaddy_1  | {\"level\":\"info\",\"ts\":1609757634.0822861,\"logger\":\"tls\",\"msg\":\"served key authentication certificate\",\"server_name\":\"test.domain.com\",\"challenge\":\"tls-alpn-01\",\"remote\":\"3.128.26.105:48376\"}\ncaddy_1  | {\"level\":\"info\",\"ts\":1609757634.1294994,\"logger\":\"tls\",\"msg\":\"served key authentication certificate\",\"server_name\":\"test.domain.com\",\"challenge\":\"tls-alpn-01\",\"remote\":\"66.133.109.36:44218\"}\ncaddy_1  | {\"level\":\"info\",\"ts\":1609757634.1341765,\"logger\":\"tls\",\"msg\":\"served key authentication certificate\",\"server_name\":\"test.domain.com\",\"challenge\":\"tls-alpn-01\",\"remote\":\"34.209.232.166:29258\"}\ncaddy_1  | {\"level\":\"info\",\"ts\":1609757634.318466,\"logger\":\"tls.issuance.acme.acme_client\",\"msg\":\"validations succeeded; finalizing order\",\"order\":\"https://acme-v02.api.letsencrypt.org/acme/order/108315222/7118077632\"}\ncaddy_1  | {\"level\":\"info\",\"ts\":1609757634.9939814,\"logger\":\"tls.issuance.acme.acme_client\",\"msg\":\"successfully downloaded available certificate chains\",\"count\":2,\"first_url\":\"https://acme-v02.api.letsencrypt.org/acme/cert/0301a56075e122ef701964489e83f46d52d2\"}\ncaddy_1  | {\"level\":\"info\",\"ts\":1609757634.9943607,\"logger\":\"tls.obtain\",\"msg\":\"certificate obtained successfully\",\"identifier\":\"test.domain.com\"}\ncaddy_1  | {\"level\":\"info\",\"ts\":1609757634.994378,\"logger\":\"tls.obtain\",\"msg\":\"releasing lock\",\"identifier\":\"test.domain.com\"}\n```\n\n- After saving the certificates we will get the following logs. When the data directory is mounted and we are running for second/third... time\n\n```bash\n$ docker-compose up\nCreating network \"root_host\" with the default driver\nCreating root_caddy_1 ... done\nAttaching to root_caddy_1\ncaddy_1  | {\"level\":\"info\",\"ts\":1609768981.0444334,\"msg\":\"using provided configuration\",\"config_file\":\"/etc/caddy/Caddyfile\",\"config_adapter\":\"caddyfile\"}\ncaddy_1  | {\"level\":\"info\",\"ts\":1609768981.0476024,\"logger\":\"admin\",\"msg\":\"admin endpoint started\",\"address\":\"tcp/localhost:2019\",\"enforce_origin\":false,\"origins\":[\"[::1]:2019\",\"127.0.0.1:2019\",\"localhost:2019\"]}\ncaddy_1  | {\"level\":\"info\",\"ts\":1609768981.0484183,\"logger\":\"http\",\"msg\":\"server is listening only on the HTTPS port but has no TLS connection policies; adding one to enable TLS\",\"server_name\":\"srv0\",\"https_port\":443}\ncaddy_1  | {\"level\":\"info\",\"ts\":1609768981.0484402,\"logger\":\"http\",\"msg\":\"enabling automatic HTTP->HTTPS redirects\",\"server_name\":\"srv0\"}\ncaddy_1  | {\"level\":\"info\",\"ts\":1609768981.048677,\"logger\":\"tls.cache.maintenance\",\"msg\":\"started background certificate maintenance\",\"cache\":\"0xc0002d8460\"}\ncaddy_1  | {\"level\":\"info\",\"ts\":1609768981.050361,\"logger\":\"tls\",\"msg\":\"cleaned up storage units\"}\ncaddy_1  | {\"level\":\"info\",\"ts\":1609768981.0505176,\"logger\":\"http\",\"msg\":\"enabling automatic TLS certificate management\",\"domains\":[\"test.domain.com\"]}\ncaddy_1  | {\"level\":\"info\",\"ts\":1609768981.060168,\"msg\":\"autosaved config\",\"file\":\"/config/caddy/autosave.json\"}\ncaddy_1  | {\"level\":\"info\",\"ts\":1609768981.060194,\"msg\":\"serving initial configuration\"}\n```\n\n- TIP: to find the location of the certificates inside the docker-caddy container, login to the container and run the following command\n\n```bash]\n/ # pwd\n/\n/ # find . -name \"*.crt\" | grep -v \"/usr/share\"\n./etc/ssl/certs/ca-certificates.crt\n./data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/test.domain.com/test.domain.com.crt\n```\n\n- Once the certificates are generated you will see the following in the data directory\n\n```bash\n$ ls data/certificates/acme-v02.api.letsencrypt.org-directory/test.domain.com\ntest.domain.com.crt  test.domain.com.json  test.domain.com.key\n```\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_013__local__caddy_https_acme_and_save_certs/docker-compose.yml",
    "content": "version: \"3.7\"\n\nservices:\n  caddy:\n    image: caddy:2.2.1\n    restart: unless-stopped\n    ports:\n      - \"80:80\"\n      - \"443:443\"\n    volumes:\n      - $PWD/Caddyfile:/etc/caddy/Caddyfile\n      - $PWD/data:/data/caddy\n    networks:\n      - host\nvolumes:\n  data01:\n    driver: local\nnetworks:\n  host:\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_014__local__reverse_proxy_nginx_home_using_caddy/Caddyfile",
    "content": "test.domain.com {\n    tls /etc/ssl/certs/chained-cert.crt /etc/ssl/certs/private-key.key\n\n    basicauth * {\n            username JDJiJDEyJHNzR25aTkxVajguQk5vVFk3S0h1NXVWNmp5bEtVeHgvOE5VRTJwTGc4dTlkQThTcXV6RlZt\n            username2 JDJiJDEyJGhhM21icDczT3BQUXhSRGp6bnpJL2U0c0VTdFc1dDJzTUZjOFNiVDY0RGRKUzBNTDh5aTRl\n    }\n    reverse_proxy web:80 {\n        header_up Host {host}\n        header_up X-Real-IP {remote}\n        header_up X-Forwarded-For {remote}\n        header_up X-Forwarded-Proto {scheme}\n    }\n}\n\n###\n#    root * /usr/share/caddy\n#    file_server\n\n### USERS CREATED\n# username/username\n# username2/username2\n\n\n###### DEFAULT CADDY FILE - https://caddyserver.com/docs/caddyfile\n# :80\n# root * /usr/share/caddy\n# file_server\n# tls /etc/ssl/mycert-chain.crt /etc/ssl/mykey.key\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_014__local__reverse_proxy_nginx_home_using_caddy/ReadMe.md",
    "content": "### We will try to understand how reverse proxy works.\n\n- Nginx is running using docker-compose on container port 80 attached host port 8080 in network name 'host'\n- Caddy is running using docker-compose port 80:80, 443:443 on the same network.\n- Nginx home is serving \"hello world from nginx\"\n- Caddy home is serving \"hello world from caddy\"\n- Now when we hit [test.domain.com](test.domain.com) we would receive \"hello world from nginx\" by using reverse proxy. See caddy file for more details.\n- You can login to the browser using 'username/username' which were generated by using the ansible-playbook `password-generation.yml`\n\n\nEnsure that `test.domain.com` is added to `/etc/hosts` file\n\n```bash\n$ cat /etc/hosts | grep test.domain.com\n# 127.0.0.1 test.domain.com\n```\n\n\n#### Directory structure\n\n```bash\n$ tree local-mac/task-014-reverse-proxy-nginx-home-using-caddy \nlocal-mac/task-014-reverse-proxy-nginx-home-using-caddy\n├── Caddyfile\n├── ReadMe.md\n├── certs\n│   ├── chained-cert.crt\n│   └── private-key.key\n├── docker-compose.yml\n├── index.html\n├── nginx-home\n│   └── index.html\n└── password-generation.yml\n```\n\n- nginx-home/index.html\n\n```bash\nhello world from nginx\n```\n\n- index.html\n\n```bash\nhello world from caddy\n```\n\n- Caddyfile\n\n```bash\ntest.domain.com {\n    tls /etc/ssl/certs/chained-cert.crt /etc/ssl/certs/private-key.key\n\n    basicauth * {\n            username JDJiJDEyJHNzR25aTkxVajguQk5vVFk3S0h1NXVWNmp5bEtVeHgvOE5VRTJwTGc4dTlkQThTcXV6RlZt\n            username2 JDJiJDEyJGhhM21icDczT3BQUXhSRGp6bnpJL2U0c0VTdFc1dDJzTUZjOFNiVDY0RGRKUzBNTDh5aTRl\n    }\n    reverse_proxy web:80 {\n        header_up Host {host}\n        header_up X-Real-IP {remote}\n        header_up X-Forwarded-For {remote}\n        header_up X-Forwarded-Proto {scheme}\n    }\n}\n\n###\n#    root * /usr/share/caddy\n#    file_server\n\n### USERS CREATED\n# username/username\n# username2/username2\n\n\n###### DEFAULT CADDY FILE - https://caddyserver.com/docs/caddyfile\n# :80\n# root * /usr/share/caddy\n# file_server\n# tls /etc/ssl/mycert-chain.crt /etc/ssl/mykey.key\n```\n\n- password-generation.yml\n\n```yaml\n- hosts: localhost\n  gather_facts: false\n  tasks:\n    - debug:\n        msg: \"{{ 'username2' | password_hash('bcrypt') | b64encode }}\"\n```"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_014__local__reverse_proxy_nginx_home_using_caddy/certs/chained-cert.crt",
    "content": ""
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_014__local__reverse_proxy_nginx_home_using_caddy/certs/private-key.key",
    "content": ""
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_014__local__reverse_proxy_nginx_home_using_caddy/docker-compose.yml",
    "content": "version: \"3.7\"\n\nservices:\n  caddy:\n    image: caddy:2.2.1\n    restart: unless-stopped\n    ports:\n      - \"80:80\"\n      - \"443:443\"\n    volumes:\n      - $PWD/index.html:/usr/share/caddy/index.html\n      - $PWD/Caddyfile:/etc/caddy/Caddyfile\n      - $PWD/caddy_data:/data\n      - ./certs:/etc/ssl/certs\n    networks:\n      - host\n\n  web:\n    image: nginx\n    volumes:\n      - $PWD/nginx-home/index.html:/usr/share/nginx/html/index.html:ro\n    ports:\n      - \"8080:80\"\n    environment:\n      #      - NGINX_HOST=foobar.com\n      - NGINX_PORT=80\n    networks:\n      - host\n\nvolumes:\n  data01:\n    driver: local\n\nnetworks:\n  host:\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_014__local__reverse_proxy_nginx_home_using_caddy/index.html-rename-me-to-html",
    "content": "hello world from caddy\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_014__local__reverse_proxy_nginx_home_using_caddy/nginx-home/index.html",
    "content": "hello world from nginx\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_014__local__reverse_proxy_nginx_home_using_caddy/password-generation.yml",
    "content": "- hosts: localhost\n  gather_facts: false\n  tasks:\n    - debug:\n        msg: \"{{ 'username2' | password_hash('bcrypt') | b64encode }}\"\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_015__local__mem_and_cpu_limit_nginx_container/ReadMe.md",
    "content": "\n### To set memory and cpu limit in version 3 of docker-compose\n\n[issue-on-linux](https://stackoverflow.com/questions/42345235/how-to-specify-memory-cpu-limit-in-docker-compose-version-3)\n\nLet's give the Nginx service limit of half of CPU and 512 megabytes of memory, and reservation of a quarter of CPU and 128 megabytes of memory. We need to create “deploy” and then “resources” segments in our service configuration:\n\n```yaml\nversion: \"3.8\"\nservices:\n  service:\n    image: nginx\n    deploy:\n        resources:\n            limits:\n              cpus: 0.50\n              memory: 512M\n            reservations:\n              cpus: 0.25\n              memory: 128M\n```\n\n- This actually works on mac-os\n```bash\n$ docker-compose -f docker-compose-v3.8.yaml up -d\n$ docker stats task-015-mem-and-cpu-limit-nginx-container_service_1\nCONTAINER ID   NAME                                                   CPU %     MEM USAGE / LIMIT   MEM %     NET I/O       BLOCK I/O     PIDS\n69bacb168f51   task-015-mem-and-cpu-limit-nginx-container_service_1   0.00%     2.133MiB / 512MiB   0.42%     1.17kB / 0B   0B / 8.19kB   2\n```\n\n\n### To set memory and cpu limit in version 2 of docker-compose\n\n```yaml\nversion: \"2.4\"\nservices:\n  nginx-service:\n    image: nginx\n    mem_limit: 512m\n    mem_reservation: 128M\n    cpus: 0.5\n    ports:\n      - \"80:80\"\n\n```\n\n```bash\n$ docker-compose -f docker-compose-v2.4.yaml up -d   \nCreating network \"task-015-mem-and-cpu-limit-nginx-container_default\" with the default driver\nCreating task-015-mem-and-cpu-limit-nginx-container_nginx-service_1 ... done\n\n$ docker ps | egrep -v \"k8s\"                                                 \nCONTAINER ID   IMAGE                  COMMAND                  CREATED          STATUS          PORTS                  NAMES\n9e83cefc711e   nginx                  \"/docker-entrypoint.…\"   36 seconds ago   Up 35 seconds   0.0.0.0:80->80/tcp     task-015-mem-and-cpu-limit-nginx-container_nginx-service_1\n\n$ docker stats task-015-mem-and-cpu-limit-nginx-container_nginx-service_1                                                   \nCONTAINER ID   NAME                                                         CPU %     MEM USAGE / LIMIT   MEM %     NET I/O       BLOCK I/O     PIDS\n9e83cefc711e   task-015-mem-and-cpu-limit-nginx-container_nginx-service_1   0.00%     2.102MiB / 512MiB   0.41%     1.24kB / 0B   0B / 8.19kB   2\n```"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_015__local__mem_and_cpu_limit_nginx_container/docker-compose-v2.4.yaml",
    "content": "version: \"2.4\"\nservices:\n  nginx-service:\n    image: nginx\n    mem_limit: 512m\n    mem_reservation: 128M\n    cpus: 0.5\n    ports:\n      - \"80:80\"\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_015__local__mem_and_cpu_limit_nginx_container/docker-compose-v3.8.yaml",
    "content": "version: \"3.8\"\nservices:\n  service:\n    image: nginx\n    deploy:\n      resources:\n        limits:\n          cpus: \"0.50\"\n          memory: 512M\n        reservations:\n          cpus: \"0.25\"\n          memory: 128M"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_016__gcp_local__grafana__tempo__prometheus__xk6_client_tracing/ReadMe.md",
    "content": "# [grafana / tempo](https://github.com/grafana/tempo/blob/main/example/docker-compose/local/readme.md)\n\n## What is [grafana/tempo](https://github.com/grafana/tempo)\n\n- Grafana Tempo is a high volume, minimal dependency distributed tracing backend.\n- is deeply integrated with Grafana, Prometheus, and Loki\n- is Jaeger, Zipkin, Kafka, OpenCensus and OpenTelemetry compatible.\n- It ingests batches in different formats, buffers them and then writes them to Azure, GCS, S3 or local disk\n- implements TraceQL, a traces-first query language inspired by LogQL and PromQL. \n\n## Task\n\n```bash\n$ cat /etc/os-release | egrep \"PRETTY_NAME\"\nPRETTY_NAME=\"Ubuntu 20.04.6 LTS\"\n\n# Architecture\n$ uname -m\nx86_64 # 64-bit architecture, amd64\n```\n\nStart up the local stack.\n\n```bash\ndocker compose up -d\n```\n\n## Accessing Grafana Tempo Service Graph\n\nPUBLIC_IP:3000 -> Grafana -> Explore -> Tempo -> Service Graph\n\nThe data is coming from the [grafana/xk6-client-tracing](https://github.com/grafana/xk6-client-tracing) client which is a [grafana/k6](https://github.com/grafana/k6) extension for testing distributed tracing backends\n\nYou can check the services [here](https://github.com/grafana/xk6-client-tracing/blob/e340ce862e2f8faa07cf3333864e3ae2d2fd183e/examples/template/template.js#L29)\n"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_016__gcp_local__grafana__tempo__prometheus__xk6_client_tracing/docker-compose.yaml",
    "content": "# https://github.com/grafana/tempo/blob/main/example/docker-compose/local/docker-compose.yaml\n# the location of ./shared is relative to the location of this file\nversion: \"3\"\nservices:\n\n  tempo:\n    image: grafana/tempo:latest\n    command: [ \"-config.file=/etc/tempo.yaml\" ]\n    volumes:\n      - ./shared/tempo.yaml:/etc/tempo.yaml\n      - ./tempo-data:/tmp/tempo\n    ports:\n      - \"14268:14268\"  # jaeger ingest\n      - \"3200:3200\"   # tempo\n      - \"9095:9095\" # tempo grpc\n      - \"4317:4317\"  # otlp grpc\n      - \"4318:4318\"  # otlp http\n      - \"9411:9411\"   # zipkin\n\n  k6-tracing:\n    image: ghcr.io/grafana/xk6-client-tracing:latest\n    environment:\n      - ENDPOINT=tempo:4317\n    restart: always\n    depends_on:\n      - tempo\n\n  prometheus:\n    image: prom/prometheus:latest\n    command:\n      - --config.file=/etc/prometheus.yaml\n      - --web.enable-remote-write-receiver\n      - --enable-feature=exemplar-storage\n    volumes:\n      - ./shared/prometheus.yaml:/etc/prometheus.yaml\n    ports:\n      - \"9090:9090\"\n\n  grafana:\n    image: grafana/grafana:10.2.2\n    volumes:\n      - ./shared/grafana-datasources.yaml:/etc/grafana/provisioning/datasources/datasources.yaml\n    environment:\n      - GF_AUTH_ANONYMOUS_ENABLED=true\n      - GF_AUTH_ANONYMOUS_ORG_ROLE=Admin\n      - GF_AUTH_DISABLE_LOGIN_FORM=true\n      - GF_FEATURE_TOGGLES_ENABLE=traceqlEditor traceQLStreaming metricsSummary\n    ports:\n      - \"3000:3000\""
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_016__gcp_local__grafana__tempo__prometheus__xk6_client_tracing/shared/grafana-datasources.yaml",
    "content": "# https://github.com/grafana/tempo/blob/main/example/docker-compose/shared/grafana-datasources.yaml\napiVersion: 1\n\ndatasources:\n- name: Prometheus\n  type: prometheus\n  uid: prometheus\n  access: proxy\n  orgId: 1\n  url: http://prometheus:9090\n  basicAuth: false\n  isDefault: false\n  version: 1\n  editable: false\n  jsonData:\n    httpMethod: GET\n- name: Tempo\n  type: tempo\n  access: proxy\n  orgId: 1\n  url: http://tempo:3200\n  basicAuth: false\n  isDefault: true\n  version: 1\n  editable: false\n  apiVersion: 1\n  uid: tempo\n  jsonData:\n    httpMethod: GET\n    serviceMap:\n      datasourceUid: prometheus"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_016__gcp_local__grafana__tempo__prometheus__xk6_client_tracing/shared/prometheus.yaml",
    "content": "# https://github.com/grafana/tempo/blob/main/example/docker-compose/shared/prometheus.yaml\nglobal:\n  scrape_interval:     15s\n  evaluation_interval: 15s\n\nscrape_configs:\n  - job_name: 'prometheus'\n    static_configs:\n      - targets: [ 'localhost:9090' ]\n  - job_name: 'tempo'\n    static_configs:\n      - targets: [ 'tempo:3200' ]"
  },
  {
    "path": "home/containers/docker_compose/taskset_docker_compose_containers/task_016__gcp_local__grafana__tempo__prometheus__xk6_client_tracing/shared/tempo.yaml",
    "content": "# https://github.com/grafana/tempo/blob/main/example/docker-compose/shared/tempo.yaml\nstream_over_http_enabled: true\nserver:\n  http_listen_port: 3200\n  log_level: info\n\nquery_frontend:\n  search:\n    duration_slo: 5s\n    throughput_bytes_slo: 1.073741824e+09\n  trace_by_id:\n    duration_slo: 5s\n\ndistributor:\n  receivers:                           # this configuration will listen on all ports and protocols that tempo is capable of.\n    jaeger:                            # the receives all come from the OpenTelemetry collector.  more configuration information can\n      protocols:                       # be found there: https://github.com/open-telemetry/opentelemetry-collector/tree/main/receiver\n        thrift_http:                   #\n        grpc:                          # for a production deployment you should only enable the receivers you need!\n        thrift_binary:\n        thrift_compact:\n    zipkin:\n    otlp:\n      protocols:\n        http:\n        grpc:\n    opencensus:\n\ningester:\n  max_block_duration: 5m               # cut the headblock when this much time passes. this is being set for demo purposes and should probably be left alone normally\n\ncompactor:\n  compaction:\n    block_retention: 1h                # overall Tempo trace retention. set for demo purposes\n\nmetrics_generator:\n  registry:\n    external_labels:\n      source: tempo\n      cluster: docker-compose\n  storage:\n    path: /tmp/tempo/generator/wal\n    remote_write:\n      - url: http://prometheus:9090/api/v1/write\n        send_exemplars: true\n\nstorage:\n  trace:\n    backend: local                     # backend configuration to use\n    wal:\n      path: /tmp/tempo/wal             # where to store the the wal locally\n    local:\n      path: /tmp/tempo/blocks\n\noverrides:\n  defaults:\n    metrics_generator:\n      processors: [service-graphs, span-metrics] # enables metrics generator"
  },
  {
    "path": "home/containers/kubernetes/README.md",
    "content": "# taskset_kubernetes_containers\n\n> [Auto](https://github.com/codeaprendiz/learn_fullstack/blob/main/home/php/intermediate/taskset_intermediate_php/task_004_createGlobalMarkdownTable/generate-readme.php) generated ReadMe. Number of tasks: 67\n\n| Task     | Description                                                                                                                                                                                                                |\n|----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| task_001 | [task_001__local__configure_default_CPU_requests_and_limits_for_a_namespace](taskset_kubernetes_containers/task_001__local__configure_default_CPU_requests_and_limits_for_a_namespace)                                     |\n| task_002 | [task_002__local__configure_default_memory_requests_and_limits_for_a_namespace](taskset_kubernetes_containers/task_002__local__configure_default_memory_requests_and_limits_for_a_namespace)                               |\n| task_003 | [task_003__local__understanding_k8s_port_forward](taskset_kubernetes_containers/task_003__local__understanding_k8s_port_forward)                                                                                           |\n| task_004 | [task_004__local__expose_svc_via_nodeport](taskset_kubernetes_containers/task_004__local__expose_svc_via_nodeport)                                                                                                         |\n| task_005 | [task_005__local__access_svc_nodeport_via_ingress](taskset_kubernetes_containers/task_005__local__access_svc_nodeport_via_ingress)                                                                                         |\n| task_006 | [task_006__local__access_svc_clusterip_via_ingress](taskset_kubernetes_containers/task_006__local__access_svc_clusterip_via_ingress)                                                                                       |\n| task_007 | [task_007__local__jenkins_k8s](taskset_kubernetes_containers/task_007__local__jenkins_k8s)                                                                                                                                 |\n| task_008 | [task_008__local__kafka](taskset_kubernetes_containers/task_008__local__kafka)                                                                                                                                             |\n| task_009 | [task_009__local__kafdrop](taskset_kubernetes_containers/task_009__local__kafdrop)                                                                                                                                         |\n| task_010 | [task_010__aws__deploy_traefik_kops_k8s_helm](taskset_kubernetes_containers/task_010__aws__deploy_traefik_kops_k8s_helm)                                                                                                   |\n| task_011 | [task_011__aws__traefik_kops_whoami](taskset_kubernetes_containers/task_011__aws__traefik_kops_whoami)                                                                                                                     |\n| task_012 | [task_012__aws__kops_with_traefik_customization](taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization)                                                                                             |\n| task_013 | [task_013__aws__oauth2_proxy](taskset_kubernetes_containers/task_013__aws__oauth2_proxy)                                                                                                                                   |\n| task_014 | [task_014__aws__traefik_kops_whoami_middleware](taskset_kubernetes_containers/task_014__aws__traefik_kops_whoami_middleware)                                                                                               |\n| task_015 | [task_015__aws__lets_encrypt_kops_cluster](taskset_kubernetes_containers/task_015__aws__lets_encrypt_kops_cluster)                                                                                                         |\n| task_016 | [task_016__aws__k8s_cluster_using_kops](taskset_kubernetes_containers/task_016__aws__k8s_cluster_using_kops)                                                                                                               |\n| task_017 | [task_017__aws__updating_a_kops_cluster](taskset_kubernetes_containers/task_017__aws__updating_a_kops_cluster)                                                                                                             |\n| task_018 | [task_018_aws__kong_ingress_on_eks](taskset_kubernetes_containers/task_018_aws__kong_ingress_on_eks)                                                                                                                       |\n| task_019 | [task_019__gcp__elastic_search](taskset_kubernetes_containers/task_019__gcp__elastic_search)                                                                                                                               |\n| task_020 | [task_020__gcp__basic_namespace_wide_kubeconfig](taskset_kubernetes_containers/task_020__gcp__basic_namespace_wide_kubeconfig)                                                                                             |\n| task_021 | [task_021__gcp__intermediate_namespace_wide_kubeconfig](taskset_kubernetes_containers/task_021__gcp__intermediate_namespace_wide_kubeconfig)                                                                               |\n| task_022 | [task_022__gcp__k8s_dashboard](taskset_kubernetes_containers/task_022__gcp__k8s_dashboard)                                                                                                                                 |\n| task_023 | [task_023__gcp__traefik_whoami](taskset_kubernetes_containers/task_023__gcp__traefik_whoami)                                                                                                                               |\n| task_024 | [task_024__gcp__traefik_whoami_tomlInConfigMap](taskset_kubernetes_containers/task_024__gcp__traefik_whoami_tomlInConfigMap)                                                                                               |\n| task_025 | [task_025__gcp__traefik_whoami_lets_encrypt](taskset_kubernetes_containers/task_025__gcp__traefik_whoami_lets_encrypt)                                                                                                     |\n| task_026 | [task_026__gcp__external_IP_to_access_Application_In_Cluster](taskset_kubernetes_containers/task_026__gcp__external_IP_to_access_Application_In_Cluster)                                                                   |\n| task_027 | [task_027__gcp__intermediate_cluster_wide_kubeconfig](taskset_kubernetes_containers/task_027__gcp__intermediate_cluster_wide_kubeconfig)                                                                                   |\n| task_028 | [task_028__gcp__configuring_datadog](taskset_kubernetes_containers/task_028__gcp__configuring_datadog)                                                                                                                     |\n| task_029 | [task_029__gcp__configuring_dns_with_static_IPs_k8_using_Ingress](taskset_kubernetes_containers/task_029__gcp__configuring_dns_with_static_IPs_k8_using_Ingress)                                                           |\n| task_030 | [task_030__gcp__PodSecurityPolicy](taskset_kubernetes_containers/task_030__gcp__PodSecurityPolicy)                                                                                                                         |\n| task_031 | [task_031__gcp__kube_state_metrics](taskset_kubernetes_containers/task_031__gcp__kube_state_metrics)                                                                                                                       |\n| task_032 | [task_032__gcp__traefik_whoami_tls_custom_certs](taskset_kubernetes_containers/task_032__gcp__traefik_whoami_tls_custom_certs)                                                                                             |\n| task_033 | [task_033__gcp__configuring_dns_with_static_IPs_k8_using_Service](taskset_kubernetes_containers/task_033__gcp__configuring_dns_with_static_IPs_k8_using_Service)                                                           |\n| task_034 | [task_034__gcp__metricbeat](taskset_kubernetes_containers/task_034__gcp__metricbeat)                                                                                                                                       |\n| task_035 | [task_035__gcp__journalbeat](taskset_kubernetes_containers/task_035__gcp__journalbeat)                                                                                                                                     |\n| task_036 | [task_036__gcp_vm__cert_manager_lets_encypt_http_validation](taskset_kubernetes_containers/task_036__gcp_vm__cert_manager_lets_encypt_http_validation)                                                                     |\n| task_037 | [task_037__gcp_k8s__cert_manager_lets_encypt_http_validation](taskset_kubernetes_containers/task_037__gcp_k8s__cert_manager_lets_encypt_http_validation)                                                                   |\n| task_038 | [task_038__local__kind__extramounts_for_pv_and_pvc](taskset_kubernetes_containers/task_038__local__kind__extramounts_for_pv_and_pvc)                                                                                       |\n| task_039 | [task_039__local__kind__prometheus_operator__kube_prometheus_grafana_alertmanager](taskset_kubernetes_containers/task_039__local__kind__prometheus_operator__kube_prometheus_grafana_alertmanager)                         |\n| task_040 | [task_040__local__kind__bitnami_loki___using_39](taskset_kubernetes_containers/task_040__local__kind__bitnami_loki___using_39)                                                                                             |\n| task_041 | [task_041__gcp_k8s__nginx_ingress](taskset_kubernetes_containers/task_041__gcp_k8s__nginx_ingress)                                                                                                                         |\n| task_042 | [task_042__gcp_k8s__cert_manager_dns_validation___using_41](taskset_kubernetes_containers/task_042__gcp_k8s__cert_manager_dns_validation___using_41)                                                                       |\n| task_043 | [task_043_gcp_k8s__codecentric_keycloak__bitnami_postgres___using_41_42](taskset_kubernetes_containers/task_043_gcp_k8s__codecentric_keycloak__bitnami_postgres___using_41_42)                                             |\n| task_044 | [task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43](taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43) |\n| task_045 | [task_045__local__kind__extra_port_mappings](taskset_kubernetes_containers/task_045__local__kind__extra_port_mappings)                                                                                                     |\n| task_046 | [task_046__local__kind__nodeport_with_port_mapping](taskset_kubernetes_containers/task_046__local__kind__nodeport_with_port_mapping)                                                                                       |\n| task_047 | [task_047__local__kind__ingress_nginx](taskset_kubernetes_containers/task_047__local__kind__ingress_nginx)                                                                                                                 |\n| task_048 | [task_048__local__kind__cilium__hubble_ui__nginx_ingress](taskset_kubernetes_containers/task_048__local__kind__cilium__hubble_ui__nginx_ingress)                                                                           |\n| task_049 | [task_049__openshift__deploy_sample_backend_app](taskset_kubernetes_containers/task_049__openshift__deploy_sample_backend_app)                                                                                             |\n| task_050 | [task_050__local__kind__headless_svc](taskset_kubernetes_containers/task_050__local__kind__headless_svc)                                                                                                                   |\n| task_051 | [task_051__local__kind__linkerd](taskset_kubernetes_containers/task_051__local__kind__linkerd)                                                                                                                             |\n| task_052 | [task_052__local__kind__linkerd_with_custom_certs](taskset_kubernetes_containers/task_052__local__kind__linkerd_with_custom_certs)                                                                                         |\n| task_053 | [task_053__local__kind__linkerd_auto_rotate_control_plane_TLS_credentials](taskset_kubernetes_containers/task_053__local__kind__linkerd_auto_rotate_control_plane_TLS_credentials)                                         |\n| task_054 | [task_054__local__kind__linkerd_auto_rotate_webhook_tls_credentials](taskset_kubernetes_containers/task_054__local__kind__linkerd_auto_rotate_webhook_tls_credentials)                                                     |\n| task_055 | [task_055__aws_eks__gcp_gke___istio_getting_started](taskset_kubernetes_containers/task_055__aws_eks__gcp_gke___istio_getting_started)                                                                                     |\n| task_056 | [task_056__aws_eks__gcp_gke__istio__request_routing](taskset_kubernetes_containers/task_056__aws_eks__gcp_gke__istio__request_routing)                                                                                     |\n| task_057 | [task_057__aws_eks__gcp_gke__istio__fault_injection__http_delay__http_abort](taskset_kubernetes_containers/task_057__aws_eks__gcp_gke__istio__fault_injection__http_delay__http_abort)                                     |\n| task_058 | [task_058__aws_eks__gcp_gke__istio__traffic_shifting](taskset_kubernetes_containers/task_058__aws_eks__gcp_gke__istio__traffic_shifting)                                                                                   |\n| task_059 | [task_059__aws_eks__gcp_gke__istio__request_timeouts](taskset_kubernetes_containers/task_059__aws_eks__gcp_gke__istio__request_timeouts)                                                                                   |\n| task_060 | [task_060__gcp_gke__istio__tcp_traffic_shifting](taskset_kubernetes_containers/task_060__gcp_gke__istio__tcp_traffic_shifting)                                                                                             |\n| task_061 | [task_061__gcp_gke__istio__circuit_breaking](taskset_kubernetes_containers/task_061__gcp_gke__istio__circuit_breaking)                                                                                                     |\n| task_062 | [task_062__gcp_gke__istio__mirroring](taskset_kubernetes_containers/task_062__gcp_gke__istio__mirroring)                                                                                                                   |\n| task_063 | [task_063__gcp_gke__istio__ingress__ingress_gateways](taskset_kubernetes_containers/task_063__gcp_gke__istio__ingress__ingress_gateways)                                                                                   |\n| task_064 | [task_064__gcp_gke__istio__ingres__secure_gateways__TLS__mTLS](taskset_kubernetes_containers/task_064__gcp_gke__istio__ingres__secure_gateways__TLS__mTLS)                                                                 |\n| task_065 | [task_065__gcp_gke__ingress_gateway_without_TLS_Termination](taskset_kubernetes_containers/task_065__gcp_gke__ingress_gateway_without_TLS_Termination)                                                                     |\n| task_066 | [task_066__gcp_gke__ingress_kubernetes_ingress](taskset_kubernetes_containers/task_066__gcp_gke__ingress_kubernetes_ingress)                                                                                               |\n| task_067 | [task_067__gcp_gke__egress__accessing_external_service](taskset_kubernetes_containers/task_067__gcp_gke__egress__accessing_external_service)                                                                               |\n"
  },
  {
    "path": "home/containers/kubernetes/concepts/ReadMe.md",
    "content": "## concepts\n\n| Task     | Description                                                      |\n|----------|------------------------------------------------------------------|\n| task_001 | [task_001_blue_green_deployment](task_001_blue_green_deployment) |\n| task_002 | [task_002_networking](task_002_networking)                       |\n\n"
  },
  {
    "path": "home/containers/kubernetes/concepts/task_001_blue_green_deployment/ReadMe.md",
    "content": "\n### Blue Green Deployment\n\n#### Step1\n\nCreate Blue Deployment and Services\nNote that there is also a public service endpoint which the users are currently accessing.\n\n![](.images/step1.png)\n\n#### Step2\n\nCreate Green Deployment and Services\n\n![](.images/step2.png)\n\n\n#### Step3\n\nTest Green Pods\n\n![](.images/step3.png)\n\n\n#### Step4\n\nChange the public service endpoint from Blue to Green\n\n![](.images/step4.png)"
  },
  {
    "path": "home/containers/kubernetes/concepts/task_002_networking/ReadMe.md",
    "content": "[Article](https://matthewpalmer.net/kubernetes-app-developer/articles/kubernetes-networking-guide-beginners.html)\n\n### Networking\n\n\n#### Communication between containers in the same pod\n\n- containers in the same pod are in the same network namespace\n\n- Each pod on a node has its own network namespace. Each pod has its own IP address.\n\n**Network Namespace**\n\nIt’s a collection of network interfaces (connections between two pieces of equipment on a network) and routing tables (instructions for where to send network packets)\n\n- There’s a secret container that runs on every pod in Kubernetes. This container’s #1 job is to keep the namespace open in case all the other containers on the pod die. It’s called the `pause` container.\n\n- you can talk between containers via localhost\n\n#### Communication between pods on the same node\n\n- Each pod on a node has its own network namespace. Each pod has its own IP address.\n\n- And each pod thinks it has a totally normal ethernet device called `eth0` to make network\n\n- Each pod’s eth0 device is actually connected to a virtual ethernet device in the node.\n\n- A virtual ethernet device is a tunnel that connects the pod’s network with the node. This connection has two sides – on the pod’s side, it’s named eth0, and on the node’s side, it’s named vethX.\n\n- Why the X? There’s a vethX connection for every pod on the node. (So they’d be veth1, veth2, veth3, etc.)\n\n- When a pod makes a request to the IP address of another node, it makes that request through its own eth0 interface. This tunnels to the node’s respective virtual vethX interface.\n  \n- But then how does the request get to the other pod?\n  \n- The node uses a network bridge.\n\n**What is a Network Bridge?**\n\nA network bridge connects two networks together. When a request hits the bridge, the bridge asks all the connected devices (i.e. pods) if they have the right IP address to handle the original request.\n\nIf one of the devices does, the bridge will store this information and also forward data to the original back so that its network request is completed.\n\nIn Kubernetes, this bridge is called cbr0. Every pod on a node is part of the bridge, and the bridge connects all pods on the same node together.\n\n\n#### Communication between pods on different nodes\n\n- the bridge falls back to the default gateway. This goes up to the cluster level and looks for the IP address.\n\n- At the cluster level, there’s a table that maps IP address ranges to various nodes. Pods on those nodes will have been assigned IP addresses from those ranges.\n\n- For example, Kubernetes might give pods on node 1 addresses like 100.96.1.1, 100.96.1.2, etc. And Kubernetes gives pods on node 2 addresses like 100.96.2.1, 100.96.2.2, and so on.\n\n- Then this table will store the fact that IP addresses that look like 100.96.1.xxx should go to node 1, and addresses like 100.96.2.xxx need to go to node 2.\n\n#### Communication between pods and services\n\n- In Kubernetes, a service lets you map a single IP address to a set of pods. You make requests to one endpoint (domain name/IP address) and the service proxies requests to a pod in that service.\n\n- This happens via kube-proxy a small process that Kubernetes runs inside every node.\n\n\n#### How does DNS work? How do we discover IP addresses?\n\n- Kubernetes clusters have a service responsible for DNS resolution.\n  \n- Every service in a cluster is assigned a domain name like my-service.my-namespace.svc.cluster.local.\n  \n- Pods are automatically given a DNS name, and can also specify their own using the hostname and subdomain properties in their YAML config.\n  \n- So when a request is made to a service via its domain name, the DNS service resolves it to the IP address of the service.\n\n- Then kube-proxy converts that service's IP address into a pod IP address. After that, based on whether the pods are on the same node or on different\n\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_001__local__configure_default_CPU_requests_and_limits_for_a_namespace/ReadMe.md",
    "content": "\n### Configure Default CPU Requests and Limits for a Namespace\n\n[administer-cluster/manage-resources/cpu-default-namespace/](https://kubernetes.io/docs/tasks/administer-cluster/manage-resources/cpu-default-namespace/)\n\n- Create a namespace\n\n```bash\n$ kubectl create namespace default-cpu-example\nnamespace/default-cpu-example created\n```\n\n\n- Create a LimitRange object\n\n```yaml\napiVersion: v1\nkind: LimitRange\nmetadata:\n  name: cpu-limit-range\nspec:\n  limits:\n    - default:\n        cpu: 1\n      defaultRequest:\n        cpu: 0.5\n      type: Container\n```\n\n- create pod nginx with no limit on CPU\n\n```yaml\napiVersion: v1\nkind: Pod\nmetadata:\n  name: default-cpu-demo\nspec:\n  containers:\n  - name: default-cpu-demo-ctr\n    image: nginx\n```\n\n- Apply the changes\n\n```bash\n$ kubectl apply -f . --namespace=default-cpu-example\nlimitrange/cpu-limit-range created\npod/default-cpu-demo created\n```\n\n- Check the changes\n\n```bash\n$ kubectl get pod default-cpu-demo --output=yaml --namespace=default-cpu-example | egrep -i \"resources:\" -A 4 | egrep -v \"f:|{|-\"\n    resources:\n      limits:\n        cpu: \"1\"\n      requests:\n        cpu: 500m\n```\n\nThe output shows that the Pod's Container has a CPU request of 500 millicpus and a CPU limit of 1 cpu. These are the default values specified by the LimitRange.\n\n\n**What if you specify a Container's limit, but not its request?**\n\n\n```yaml\napiVersion: v1\nkind: Pod\nmetadata:\n  name: default-cpu-demo-2\nspec:\n  containers:\n    - name: default-cpu-demo-2-ctr\n      image: nginx\n      resources:\n        limits:\n          cpu: \"1\"\n```\n\n- Apply the changes\n\n```bash\n$ kubectl apply -f . --namespace=default-cpu-example                                                                             \nlimitrange/cpu-limit-range configured\npod/default-cpu-demo-2 created\npod/default-cpu-demo unchanged\n```\n\n- Check the changes\n\n```bash\n$ kubectl get pod default-cpu-demo-2 --output=yaml --namespace=default-cpu-example | egrep -i \"resources:\" -A 4 | egrep -v \"f:|{|-\"\n    resources:\n      limits:\n        cpu: \"1\"\n      requests:\n        cpu: \"1\"\n```\n\nThe output shows that the Container's CPU request is set to match its CPU limit. Notice that the Container was not assigned the default CPU request value of 0.5 cpu.\n\n\n**What if you specify a Container's request, but not its limit?**\n\n```yaml\napiVersion: v1\nkind: Pod\nmetadata:\n  name: default-cpu-demo-3\nspec:\n  containers:\n  - name: default-cpu-demo-3-ctr\n    image: nginx\n    resources:\n      requests:\n        cpu: \"0.75\"\n```\n\n- Apply the changes\n\n```bash\n$ kubectl apply -f . --namespace=default-cpu-example                                                                               \nlimitrange/cpu-limit-range configured\npod/default-cpu-demo-2 unchanged\npod/default-cpu-demo unchanged\npod/default-cpu-demo-3 created\n```\n\n- Check the changes\n\n```bash\n$ kubectl get pod default-cpu-demo-3 --output=yaml --namespace=default-cpu-example | egrep -i \"resources:\" -A 4 | egrep -v \"f:|{|-\"\n    resources:\n      limits:\n        cpu: \"1\"\n      requests:\n        cpu: 750m\n```\n\n\n- Delete the resources\n\n```bash\n$ kubectl delete -f . --namespace=default-cpu-example                                                                              \nlimitrange \"cpu-limit-range\" deleted\npod \"default-cpu-demo-2\" deleted\npod \"default-cpu-demo\" deleted\npod \"default-cpu-demo-3\" deleted\n```"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_001__local__configure_default_CPU_requests_and_limits_for_a_namespace/limitrange-object.yaml",
    "content": "apiVersion: v1\nkind: LimitRange\nmetadata:\n  name: cpu-limit-range\nspec:\n  limits:\n    - default:\n        cpu: 1\n      defaultRequest:\n        cpu: 0.5\n      type: Container\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_001__local__configure_default_CPU_requests_and_limits_for_a_namespace/pod-limit-cpu.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: default-cpu-demo-2\nspec:\n  containers:\n    - name: default-cpu-demo-2-ctr\n      image: nginx\n      resources:\n        limits:\n          cpu: \"1\"\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_001__local__configure_default_CPU_requests_and_limits_for_a_namespace/pod-no-limit-specified.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: default-cpu-demo\nspec:\n  containers:\n    - name: default-cpu-demo-ctr\n      image: nginx\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_001__local__configure_default_CPU_requests_and_limits_for_a_namespace/pod-request-cpu.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: default-cpu-demo-3\nspec:\n  containers:\n    - name: default-cpu-demo-3-ctr\n      image: nginx\n      resources:\n        requests:\n          cpu: \"0.75\"\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_002__local__configure_default_memory_requests_and_limits_for_a_namespace/ReadMe.md",
    "content": "\n### Configure Default Memory Requests and Limits for a Namespace\n\n[administer-cluster/manage-resources/memory-default-namespace/](https://kubernetes.io/docs/tasks/administer-cluster/manage-resources/memory-default-namespace/)\n\n- create the namespace\n\n```bash\n$ kubectl create namespace default-mem-example\n\nnamespace/default-mem-example created\n```\n\n- Create limit range object\n\n```yaml\napiVersion: v1\nkind: LimitRange\nmetadata:\n  name: mem-limit-range\nspec:\n  limits:\n    - default:\n        memory: 512Mi\n      defaultRequest:\n        memory: 256Mi\n      type: Container\n```\n\n```bash\n$ kubectl apply -f . --namespace=default-mem-example\nlimitrange/mem-limit-range created\n```\n\n- Create a pod without specifying a memory request and limit.\n\n```yaml\napiVersion: v1\nkind: Pod\nmetadata:\n  name: default-mem-demo\nspec:\n  containers:\n    - name: default-mem-demo-ctr\n      image: nginx\n```\n\n```bash\n$ kubectl apply -f . --namespace=default-mem-example\npod/default-mem-demo created\nlimitrange/mem-limit-range unchanged\n```\n\n- Now check the memory stats of the pod created. Both are as per defaults\n\n```bash\n$ kubectl get pod default-mem-demo -o yaml --namespace=default-mem-example | egrep -i \"resources:\" -A 4 | egrep -v \"f:\"\n--\n    resources:\n      limits:\n        memory: 512Mi\n      requests:\n        memory: 256Mi\n```\n\n\n\n**What if you specify a Container's limit, but not its request?**\n\n- Create the pod\n\n```yaml\napiVersion: v1\nkind: Pod\nmetadata:\n  name: default-mem-demo-2\nspec:\n  containers:\n    - name: default-mem-demo-2-ctr\n      image: nginx\n      resources:\n        limits:\n          memory: \"1Gi\"\n```\n\n```bash\n$ kubectl apply -f . --namespace=default-mem-example\nlimitrange/mem-limit-range unchanged\npod/default-mem-demo-2 created\npod/default-mem-demo created\n```\n\n- check the stats.\n\n```bash\n$ kubectl get pod default-mem-demo-2 -o yaml --namespace=default-mem-example | egrep -i \"resources:\" -A 4 | egrep -v \"f:|{|-\"\n    resources:\n      limits:\n        memory: 1Gi\n      requests:\n        memory: 1Gi\n```\n\n**What if you specify a Container's request, but not its limit?**\n\n- Apply the changes\n\n```yaml\napiVersion: v1\nkind: Pod\nmetadata:\n  name: default-mem-demo-3\nspec:\n  containers:\n    - name: default-mem-demo-3-ctr\n      image: nginx\n      resources:\n        requests:\n          memory: \"128Mi\"\n```\n\n```bash\n$ kubectl apply -f . --namespace=default-mem-example                                                                         \nlimitrange/mem-limit-range unchanged\npod/default-mem-demo-2 unchanged\npod/default-mem-demo unchanged\npod/default-mem-demo-3 created\n```\n\n- check the changes\n\n```bash\n$ kubectl get pod default-mem-demo-3 -o yaml --namespace=default-mem-example | egrep -i \"resources:\" -A 4 | egrep -v \"f:|{|-\"\n    resources:\n      limits:\n        memory: 512Mi\n      requests:\n        memory: 128Mi\n```\n\n\n\n\n- Remove the resources\n\n```bash\n$ kubectl delete -f . --namespace=default-mem-example                                                                        \nlimitrange \"mem-limit-range\" deleted\npod \"default-mem-demo-2\" deleted\npod \"default-mem-demo\" deleted\npod \"default-mem-demo-3\" deleted\n```\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_002__local__configure_default_memory_requests_and_limits_for_a_namespace/limitrange-object.yaml",
    "content": "apiVersion: v1\nkind: LimitRange\nmetadata:\n  name: mem-limit-range\nspec:\n  limits:\n    - default:\n        memory: 512Mi\n      defaultRequest:\n        memory: 256Mi\n      type: Container\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_002__local__configure_default_memory_requests_and_limits_for_a_namespace/pod-limit-memory.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: default-mem-demo-2\nspec:\n  containers:\n    - name: default-mem-demo-2-ctr\n      image: nginx\n      resources:\n        limits:\n          memory: \"1Gi\"\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_002__local__configure_default_memory_requests_and_limits_for_a_namespace/pod-no-limit-specified.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: default-mem-demo\nspec:\n  containers:\n    - name: default-mem-demo-ctr\n      image: nginx\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_002__local__configure_default_memory_requests_and_limits_for_a_namespace/pod-request-memory.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: default-mem-demo-3\nspec:\n  containers:\n    - name: default-mem-demo-3-ctr\n      image: nginx\n      resources:\n        requests:\n          memory: \"128Mi\"\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_003__local__understanding_k8s_port_forward/ReadMe.md",
    "content": "- Create nginx deployment\n\n```bash\n$ kubectl create deployment nginx-dep --image=nginx --replicas=2\n```\n\n- Get the pods\n\n```bash\n$ kubectl get pods\nNAME                        READY   STATUS    RESTARTS   AGE\nnginx-dep-5c5477cb4-76t9q   1/1     Running   0          7h5m\nnginx-dep-5c5477cb4-9g84j   1/1     Running   0          7h5m\n```\n\n- Access the pod using `kubectl port`\n\n```bash\n$ kubectl port-forward nginx-dep-5c5477cb4-9g84j 8888:80\nForwarding from 127.0.0.1:8888 -> 80\nForwarding from [::1]:8888 -> 80\n```\n\n- Now do a `curl` to the `localhost:8888`\n\n```bash\n$ curl -v http://localhost:8888             \n*   Trying ::1...\n* TCP_NODELAY set\n* Connected to localhost (::1) port 8888 (#0)\n> GET / HTTP/1.1\n> Host: localhost:8888\n> User-Agent: curl/7.64.1\n> Accept: */*\n> \n< HTTP/1.1 200 OK\n< Server: nginx/1.21.0\n< Date: Sat, 03 Jul 2021 11:10:23 GMT\n< Content-Type: text/html\n< Content-Length: 612\n< Last-Modified: Tue, 25 May 2021 12:28:56 GMT\n< Connection: keep-alive\n< ETag: \"60aced88-264\"\n< Accept-Ranges: bytes\n< \n<!DOCTYPE html>\n<html>\n<head>\n<title>Welcome to nginx!</title>\n<style>\n    body {\n        width: 35em;\n        margin: 0 auto;\n        font-family: Tahoma, Verdana, Arial, sans-serif;\n    }\n</style>\n</head>\n<body>\n<h1>Welcome to nginx!</h1>\n<p>If you see this page, the nginx web server is successfully installed and\nworking. Further configuration is required.</p>\n\n<p>For online documentation and support please refer to\n<a href=\"http://nginx.org/\">nginx.org</a>.<br/>\nCommercial support is available at\n<a href=\"http://nginx.com/\">nginx.com</a>.</p>\n\n<p><em>Thank you for using nginx.</em></p>\n</body>\n</html>\n* Connection #0 to host localhost left intact\n* Closing connection 0\n```\n\n- In the output you will also see\n\n```bash\n$ kubectl port-forward nginx-dep-5c5477cb4-9g84j 8888:80\nForwarding from 127.0.0.1:8888 -> 80\nForwarding from [::1]:8888 -> 80\nHandling connection for 8888\n```"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_004__local__expose_svc_via_nodeport/ReadMe.md",
    "content": "-- Create whoami deployment\n \n```bash\n$ kubectl create deployment whoami-dep --image=containous/whoami:latest --replicas=1\ndeployment.apps/whoami-dep created\n```\n \n - Get the pods\n \n ```bash\n$ kubectl get pods                                                                  \nNAME                          READY   STATUS    RESTARTS   AGE\nwhoami-dep-69bccbf994-h8j69   1/1     Running   0          13s\n ```\n\n- Now expose `port 80` of the deployment [docker whoami](https://hub.docker.com/r/containous/whoami/tags?page=1&ordering=last_updated)\n  via a NodePort\n  \n```bash\n$ kubectl expose deployment whoami-dep --name=whoami-dep-svc --type=NodePort --port=80 --target-port=80  \nservice/whoami-dep-svc exposed\n```\n\n- Get the service\n\n```bash\n$ kubectl get svc                                                                                      \nNAME             TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE\nkubernetes       ClusterIP   10.96.0.1      <none>        443/TCP        34d\nwhoami-dep-svc   NodePort    10.101.89.89   <none>        80:31773/TCP   14s\n```\n\n- Access the deployment using the NodePort\n\n```bash\n$ curl http://localhost:31773\nHostname: whoami-dep-69bccbf994-h8j69\nIP: 127.0.0.1\nIP: 10.1.5.169\nRemoteAddr: 192.168.65.6:59354\nGET / HTTP/1.1\nHost: localhost:31773\nUser-Agent: curl/7.64.1\nAccept: */*\n```"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_005__local__access_svc_nodeport_via_ingress/ReadMe.md",
    "content": "[Docs](https://kubernetes.io/docs/concepts/services-networking/ingress/)\n\n-- Create nginx deployment\n \n```bash\n$ kubectl create deployment whoami-dep --image=containous/whoami:latest --replicas=1\ndeployment.apps/whoami-dep created\n```\n \n - Get the pods\n \n ```bash\n$ kubectl get pods                                                                  \nNAME                          READY   STATUS    RESTARTS   AGE\nwhoami-dep-69bccbf994-h8j69   1/1     Running   0          13s\n ```\n\n- Now expose `port 80` of the deployment \n  via a NodePort\n  \n```bash\n$ kubectl expose deployment whoami-dep --name=whoami-dep-svc --type=NodePort --port=80 --target-port=80  \nservice/whoami-dep-svc exposed\n```\n\n- Get the service\n\n```bash\n$ kubectl get svc                                                                                      \nNAME             TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE\nkubernetes       ClusterIP   10.96.0.1      <none>        443/TCP        34d\nwhoami-dep-svc   NodePort    10.101.89.89   <none>        80:31773/TCP   14s\n```\n\n- Lets deploy ingress to access the service. Before deploying the ingress, we need\n  ingress-controller to be deployed first\n  [ingress-nginx/deploy/#docker-desktop](https://kubernetes.github.io/ingress-nginx/deploy/#docker-desktop)\n  \n```bash\n$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.47.0/deploy/static/provider/cloud/deploy.yaml           \nnamespace/ingress-nginx created\nserviceaccount/ingress-nginx created\nconfigmap/ingress-nginx-controller created\nclusterrole.rbac.authorization.k8s.io/ingress-nginx created\nclusterrolebinding.rbac.authorization.k8s.io/ingress-nginx created\nrole.rbac.authorization.k8s.io/ingress-nginx created\nrolebinding.rbac.authorization.k8s.io/ingress-nginx created\nservice/ingress-nginx-controller-admission created\nservice/ingress-nginx-controller created\ndeployment.apps/ingress-nginx-controller created\nvalidatingwebhookconfiguration.admissionregistration.k8s.io/ingress-nginx-admission created\nserviceaccount/ingress-nginx-admission created\nclusterrole.rbac.authorization.k8s.io/ingress-nginx-admission created\nclusterrolebinding.rbac.authorization.k8s.io/ingress-nginx-admission created\nrole.rbac.authorization.k8s.io/ingress-nginx-admission created\nrolebinding.rbac.authorization.k8s.io/ingress-nginx-admission created\njob.batch/ingress-nginx-admission-create created\njob.batch/ingress-nginx-admission-patch created\n```\n\n- Now deploy the ingress\n\n```bash\n$ kubectl apply -f ingress.yaml\ningress.networking.k8s.io/ingress-wildcard-host configured\n```\n\n\n- you can add a host entry to your /etc/hosts file and check\n\n```bash\n$ cat /etc/hosts | grep test                                                                                            \n127.0.0.1 testingress.com\n```\n\n- Now curl\n\n```bash\n$ curl http://testingress.com:80/whoami   \nHostname: whoami-dep-69bccbf994-h8j69\nIP: 127.0.0.1\nIP: 10.1.5.169\nRemoteAddr: 10.1.5.165:43228\nGET /whoami HTTP/1.1\nHost: testingress.com\nUser-Agent: curl/7.64.1\nAccept: */*\nX-Forwarded-For: 192.168.65.6\nX-Forwarded-Host: testingress.com\nX-Forwarded-Port: 80\nX-Forwarded-Proto: http\nX-Real-Ip: 192.168.65.6\nX-Request-Id: b6b70ad80af2752c7eba250b620b18e2\nX-Scheme: http\n```\n\n- Try any other URL\n\n```bash\n$ curl http://testingress.com:80                \n<html>\n<head><title>404 Not Found</title></head>\n<body>\n<center><h1>404 Not Found</h1></center>\n<hr><center>nginx</center>\n</body>\n</html>\n\n$ curl http://testingress.com:80/whoami234\n<html>\n<head><title>404 Not Found</title></head>\n<body>\n<center><h1>404 Not Found</h1></center>\n<hr><center>nginx</center>\n</body>\n</html>\n\n```"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_005__local__access_svc_nodeport_via_ingress/ingress.yaml",
    "content": "apiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  name: ingress-wildcard-host\nspec:\n  rules:\n    - host: \"testingress.com\"\n      http:\n        paths:\n          - pathType: Prefix\n            path: \"/whoami\"\n            backend:\n              service:\n                name: whoami-dep-svc\n                port:\n                  number: 80"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_006__local__access_svc_clusterip_via_ingress/ReadMe.md",
    "content": "[Docs](https://kubernetes.io/docs/concepts/services-networking/ingress/)\n\n-- Create nginx deployment\n \n```bash\n$ kubectl create deployment whoami-dep --image=containous/whoami:latest --replicas=1   \ndeployment.apps/whoami-dep created\n```\n \n - Get the pods\n \n ```bash\n$ kubectl get pods                                                                  \nNAME                          READY   STATUS    RESTARTS   AGE\nwhoami-dep-69bccbf994-2c5wb   1/1     Running   0          13s\n ```\n\n- Create service\n\n```bash\n$ kubectl expose deployment whoami-dep --name=whoami-dep-svc --port=80 --target-port=80\nservice/whoami-dep-svc exposed\n```\n\n- Get the service\n\n```bash\n$ kubectl get svc                                                                      \nNAME             TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE\nkubernetes       ClusterIP   10.96.0.1       <none>        443/TCP   34d\nwhoami-dep-svc   ClusterIP   10.96.153.224   <none>        80/TCP    44s\n```\n\n- Now deploy the ingress\n\n```bash\n$ kubectl apply -f ingress.yaml \ningress.networking.k8s.io/ingress-wildcard-host created\n```\n\n- Test the URL\n\n```bash\n$ curl http://testingress.com:80/whoami\nHostname: whoami-dep-69bccbf994-2c5wb\nIP: 127.0.0.1\nIP: 10.1.5.170\nRemoteAddr: 10.1.5.165:44774\nGET /whoami HTTP/1.1\nHost: testingress.com\nUser-Agent: curl/7.64.1\nAccept: */*\nX-Forwarded-For: 192.168.65.6\nX-Forwarded-Host: testingress.com\nX-Forwarded-Port: 80\nX-Forwarded-Proto: http\nX-Real-Ip: 192.168.65.6\nX-Request-Id: db7be3da05b1d37d13e733d31fa2ecde\nX-Scheme: http\n```\n\n- Testing wrong URLs\n\n```bash\n$ curl http://testingress.com:80/whoami32\n<html>\n<head><title>404 Not Found</title></head>\n<body>\n<center><h1>404 Not Found</h1></center>\n<hr><center>nginx</center>\n</body>\n</html>\n```"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_006__local__access_svc_clusterip_via_ingress/ingress.yaml",
    "content": "apiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  name: ingress-wildcard-host\nspec:\n  rules:\n    - host: \"testingress.com\"\n      http:\n        paths:\n          - pathType: Prefix\n            path: \"/whoami\"\n            backend:\n              service:\n                name: whoami-dep-svc\n                port:\n                  number: 80"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_007__local__jenkins_k8s/ReadMe.md",
    "content": "### Pull the repo\n\n[jenkinsci/helm-charts](https://github.com/jenkinsci/helm-charts/tree/main/charts/jenkins)\n\n[https://charts.jenkins.io](https://charts.jenkins.io/)\n\nSearch for the latest repo and pull to local\n\n```bash\n$ helm search repo jenkins\nNAME            CHART VERSION   APP VERSION     DESCRIPTION                                       \nbitnami/jenkins 8.0.5           2.289.2         The leading open source automation server         \nstable/jenkins  2.5.4           lts             DEPRECATED - Open source continuous integration...\n\n$ helm pull bitnami/jenkins          \n```\n\nBut let's go with the repository version\n\n```bash\n$ git clone https://github.com/jenkinsci/helm-charts.git                                    \n$ rm -rf CODE_OF_CONDUCT.md CONTRIBUTING.md LICENSE PROCESSES.md .github                     \n```\n\nCheckout the values.yaml file. For the controller it uses `jenkins/jenkins` image. Let's \ncreate our own locally by adding some more plugins.\n\n```bash\n$ docker build --file jenkins-controller.Dockerfile -t codeaprendiz/jenkins-controller-base .\n\n$ docker images | grep codeaprendiz\ncodeaprendiz/jenkins-controller-base   latest                                                  74e37c305eec   5 minutes ago   739MB\n```\n\nChange the image name and tag name of the jenkins-controller in the values.yaml file.\nAnd create the kubernetes manifests file using helm\n\n```bash\n$ helm template -f helm-charts/charts/jenkins/values.yaml helm-charts/charts/jenkins > jenkins-k8s-manifests.yaml\n\n$ kubectl apply -f jenkins-k8s-manifests.yaml \nrole.rbac.authorization.k8s.io/RELEASE-NAME-jenkins-schedule-agents unchanged\nrole.rbac.authorization.k8s.io/RELEASE-NAME-jenkins-casc-reload unchanged\nError from server (Invalid): error when creating \"jenkins-k8s-manifests.yaml\": ServiceAccount \"RELEASE-NAME-jenkins\" is invalid: metadata.name: Invalid value: \"RELEASE-NAME-jenkins\": a DNS-1123 subdomain must consist of lower case alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character (e.g. 'example.com', regex used for validation is '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*')\n```\n\nWhat ? \nI think we need to replace all occurances of `RELEASE-NAME-` in the file with lower case characters\nor remove it completely. \nLet's try after removing.\n\n\n```bash\n$ kubectl apply -f jenkins-k8s-manifests.yaml \nserviceaccount/jenkins created\nsecret/jenkins created\nconfigmap/jenkins created\nconfigmap/jenkins-jenkins-jcasc-config created\npersistentvolumeclaim/jenkins created\nrole.rbac.authorization.k8s.io/jenkins-schedule-agents created\nrole.rbac.authorization.k8s.io/jenkins-casc-reload created\nrolebinding.rbac.authorization.k8s.io/jenkins-schedule-agents created\nrolebinding.rbac.authorization.k8s.io/jenkins-watch-configmaps created\nservice/jenkins-agent created\nservice/jenkins created\nstatefulset.apps/jenkins created\nconfigmap/jenkins-tests created\npod/ui-test-8ep3t created\n```\n\nOkay it works.\n\n```bash\n$ kubectl get pods                           \nNAME            READY   STATUS                  RESTARTS   AGE\njenkins-0       0/2     Init:ImagePullBackOff   0          20s\nui-test-8ep3t   0/1     ErrImagePull            0          20s\n```\n\nWe need to push our image to dockerhub repository.\n\n```bash\n$ docker login -u codeaprendiz  \nPassword: \nLogin Succeeded\n\n$ docker push codeaprendiz/jenkins-controller-base:latest\n```\n\nAnd run again. Ignore the UI test. It tests the UI so not required.\n\n```bash\n$ kubectl get pods\nNAME            READY   STATUS    RESTARTS   AGE\njenkins-0       2/2     Running   0          2m30s\nui-test-8ep3t   0/1     Error     0          2m30s\n\n$ kubectl get pv                                                                                                   \nNAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                            STORAGECLASS   REASON   AGE\npvc-5ca935b0-4cd2-4f5a-a7c6-8844230026f2   50Mi       RWO            Delete           Bound    default/storage-alertmanager-0   hostpath                10d\npvc-df64cec3-1972-44c3-83b7-f1495e831e4e   8Gi        RWO            Delete           Bound    default/jenkins                  hostpath                20m\n\n$ kubectl get pvc\nNAME                     STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE\njenkins                  Bound    pvc-df64cec3-1972-44c3-83b7-f1495e831e4e   8Gi        RWO            hostpath       20m\nstorage-alertmanager-0   Bound    pvc-5ca935b0-4cd2-4f5a-a7c6-8844230026f2   50Mi       RWO            hostpath       10d\n\n$ kubectl get svc                                                           \nNAME             TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)     AGE\njenkins          ClusterIP   10.107.80.151    <none>        8080/TCP    21m\njenkins-agent    ClusterIP   10.106.219.157   <none>        50000/TCP   21m\n\n```\n\n\nLet's access the application using the port-forward\n\n```bash\n$ kubectl get svc                         \nNAME             TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)     AGE\njenkins          ClusterIP   10.107.80.151    <none>        8080/TCP    12m\njenkins-agent    ClusterIP   10.106.219.157   <none>        50000/TCP   12m\n\n$ kubectl port-forward jenkins-0 8080:8080\nForwarding from 127.0.0.1:8080 -> 8080\nForwarding from [::1]:8080 -> 8080\n```\n\nNow let's try to get the admin password\n\n```bash\n$ kubectl exec --namespace default -it svc/jenkins -c jenkins -- /bin/cat /run/secrets/chart-admin-password && echo\nQWaGfBkvTSLCoBaGSfWjBu\n\n#### How I  know this ? Actually if we install via helm it gives this information\n$ helm install jenkins helm-charts/charts/jenkins                                                                \nNAME: jenkins\nLAST DEPLOYED: Fri Aug  6 09:48:12 2021\nNAMESPACE: default\nSTATUS: deployed\nREVISION: 1\nNOTES:\n1. Get your 'admin' user password by running:\n  kubectl exec --namespace default -it svc/jenkins -c jenkins -- /bin/cat /run/secrets/chart-admin-password && echo\n2. Get the Jenkins URL to visit by running these commands in the same shell:\n  echo http://127.0.0.1:8080\n  kubectl --namespace default port-forward svc/jenkins 8080:8080\n\n3. Login with the password from step 1 and the username: admin\n4. Configure security realm and authorization strategy\n5. Use Jenkins Configuration as Code by specifying configScripts in your values.yaml file, see documentation: http:///configuration-as-code and examples: https://github.com/jenkinsci/configuration-as-code-plugin/tree/master/demos\n\nFor more information on running Jenkins on Kubernetes, visit:\nhttps://cloud.google.com/solutions/jenkins-on-container-engine\n\nFor more information about Jenkins Configuration as Code, visit:\nhttps://jenkins.io/projects/jcasc/\n```\n\nSo let's try logging in with `admin` and `QWaGfBkvTSLCoBaGSfWjBu` at [http://localhost:8080/](http://localhost:8080/)\n\n\nLogin is successful now.\n\n\nLets try creating our first job which should execute some shell command by launching\nanother pod in the cluster as a jenkins agent.\n\n```bash\n$ kubectl get pods\nNAME            READY   STATUS              RESTARTS   AGE\ndefault-j5g66   0/1     ContainerCreating   0          3s\njenkins-0       2/2     Running             0          23m\n\n\n$ kubectl get pods\nNAME            READY   STATUS    RESTARTS   AGE\ndefault-j5g66   1/1     Running   0          15s\njenkins-0       2/2     Running   0          23m\n\n$ kubectl get pods\nNAME            READY   STATUS        RESTARTS   AGE\ndefault-j5g66   0/1     Terminating   0          35s\njenkins-0       2/2     Running       0          23m\n```\n\nAmazing! It works :)\n\n- Next steps, you have add your custom agent file with all the requirements installed\n- You can add an ingress like traefik use classic load balancer in AWS\n- You can assign the alias record in AWS route53 and point it to the classic load balancer so \n  that your jenkins server is accessable on your custom domain name.\n- The load balancer PROTOCOLs you might need to change. What worked for me\n- You can assign your domain ACM Certificate (Created using AWS Certificate Manager) to your load balancer\n  so that Jenkins server is accessable on the public domain over https.\n```bash\nHTTPS 443 HTTP <instanceport> cipher SSL-Cert\nTCP   80  TCP  <instanceport> NA     NA \n``` \n\n\n\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_007__local__jenkins_k8s/jenkins-agent.Dockerfile",
    "content": "FROM jenkins/inbound-agent:4.6-1\n\n# Switch to root\nUSER root\nRUN passwd --delete jenkins\n\n# Install Ansible\n# https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html\nRUN DEBIAN_FRONTEND=noninteractive\nRUN echo \"deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main\" > /etc/apt/sources.list.d/ansible.list\nRUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367\nRUN apt update\nRUN apt install sudo systemd-container python3 python3-pip ansible apt-transport-https gnupg2 ca-certificates curl zip -y\nRUN usermod -aG sudo jenkins\nRUN echo \"jenkins ALL=(ALL) NOPASSWD: ALL\" >> /etc/sudoers\n\nRUN curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -\nRUN echo \"deb https://apt.kubernetes.io/ kubernetes-xenial main\" | tee -a /etc/apt/sources.list.d/kubernetes.list\n\nRUN wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | apt-key add -\nRUN echo \"deb http://repo.mongodb.org/apt/debian buster/mongodb-org/4.4 main\" | tee /etc/apt/sources.list.d/mongodb-org-4.4.list\n\nRUN rm -f /etc/apt/sources.list.d/google-cloud-sdk.list\nRUN echo \"deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main\" | tee -a /etc/apt/sources.list.d/google-cloud-sdk.list\nRUN curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key --keyring /usr/share/keyrings/cloud.google.gpg add -\n\nRUN apt update\nRUN apt-get install -y  mongodb-org-tools mongodb-org-shell default-mysql-client kubectl google-cloud-sdk awscli\n\n# https://stackoverflow.com/questions/64596394/importerror-cannot-import-name-docevents-from-botocore-docs-bcdoc-in-aws-co\nRUN pip3 install botocore==1.20.86\nRUN pip3 install awscli==1.19.86\nRUN ansible-galaxy collection install amazon.aws\n\n# copy github ssh key on root\nRUN /bin/bash -l -c \"mkdir /root/.ssh\"\n# ADD ssh/private_key /root/.ssh/private_key\n# RUN chmod 700 /root/.ssh/private_key\nRUN echo \"Host github.com\\n\\tStrictHostKeyChecking no\\n\" >> /root/.ssh/config\n\n# copy github ssh key on jenkins\nRUN /bin/bash -l -c \"mkdir /home/jenkins/.ssh\"\n# ADD ssh/private_key /home/jenkins/.ssh/private_key\n# RUN chmod 700 /home/jenkins/.ssh/private_key\nRUN echo \"Host github.com\\n\\tStrictHostKeyChecking no\\n\" >> /home/jenkins/.ssh/config\n\n# COPY _ansible_repository /opt/_ansiblerepo/\n# RUN sudo chmod -R 400 /opt/_ansible/ssh/\n\nUSER jenkins"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_007__local__jenkins_k8s/jenkins-controller.Dockerfile",
    "content": "FROM jenkins/jenkins:lts\nRUN jenkins-plugin-cli --plugins google-login kubernetes workflow-aggregator git configuration-as-code ace-editor ansible ansicolor ant htmlpublisher antisamy-markup-formatter apache-httpcomponents-client-4-api authentication-tokens authorize-project bouncycastle-api branch-api build-name-setter build-timeout build-with-parameters cloudbees-folder collapsing-console-sections command-launcher conditional-buildstep config-file-provider console-badge console-column-plugin console-navigation console-tail credentials credentials-binding dashboard-view display-console-output display-url-api docker-commons docker-java-api docker-plugin docker-workflow durable-task dynamic-search-view email-ext extended-choice-parameter extensible-choice-parameter external-monitor-job extra-columns generic-webhook-trigger git-changelog git-client git-server github github-api github-branch-source github-oauth github-pullrequest gradle handlebars hudson-pview-plugin icon-shim jackson2-api javadoc jdk-tool job-dsl jobConfigHistory jquery jquery-detached jquery-ui jsch junit ldap lockable-resources mailer mapdb-api matrix-auth matrix-combinations-parameter matrix-project maven-plugin mission-control-view momentjs nodejs nodelabelparameter pam-auth parameter-separator parameterized-trigger pipeline-build-step pipeline-github-lib pipeline-graph-analysis pipeline-input-step pipeline-milestone-step pipeline-model-api pipeline-model-declarative-agent pipeline-model-definition pipeline-model-extensions pipeline-rest-api pipeline-stage-step pipeline-stage-tags-metadata pipeline-stage-view plain-credentials rebuild resource-disposer role-strategy run-condition scm-api script-security show-build-parameters simple-theme-plugin slack ssh-agent ssh-credentials ssh-slaves structs subversion throttle-concurrents timestamper token-macro trilead-api view-job-filters windows-slaves workflow-aggregator workflow-api workflow-basic-steps workflow-cps workflow-cps-global-lib workflow-durable-task-step workflow-job workflow-multibranch workflow-scm-step workflow-step-api workflow-support ws-cleanup\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_007__local__jenkins_k8s/jenkins-k8s-manifests.yaml",
    "content": "---\n# Source: jenkins/templates/service-account.yaml\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: jenkins\n  namespace: default\n  labels:\n    \"app.kubernetes.io/name\": 'jenkins'\n    \"helm.sh/chart\": \"jenkins-3.5.9\"\n    \"app.kubernetes.io/managed-by\": \"Helm\"\n    \"app.kubernetes.io/instance\": \"RELEASE-NAME\"\n    \"app.kubernetes.io/component\": \"jenkins-controller\"\n---\n# Source: jenkins/templates/secret.yaml\napiVersion: v1\nkind: Secret\nmetadata:\n  name: jenkins\n  namespace: default\n  labels:\n    \"app.kubernetes.io/name\": 'jenkins'\n    \"helm.sh/chart\": \"jenkins-3.5.9\"\n    \"app.kubernetes.io/managed-by\": \"Helm\"\n    \"app.kubernetes.io/instance\": \"RELEASE-NAME\"\n    \"app.kubernetes.io/component\": \"jenkins-controller\"\ntype: Opaque\ndata:\n  jenkins-admin-password: \"UVdhR2ZCa3ZUU0xDb0JhR1NmV2pCdQ==\"\n  jenkins-admin-user: \"YWRtaW4=\"\n---\n# Source: jenkins/templates/config.yaml\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: jenkins\n  namespace: default\n  labels:\n    \"app.kubernetes.io/name\": 'jenkins'\n    \"app.kubernetes.io/managed-by\": \"Helm\"\n    \"app.kubernetes.io/instance\": \"RELEASE-NAME\"\n    \"app.kubernetes.io/component\": \"jenkins-controller\"\ndata:\n  apply_config.sh: |-\n    set -e\n    echo \"disable Setup Wizard\"\n    # Prevent Setup Wizard when JCasC is enabled\n    echo $JENKINS_VERSION > /var/jenkins_home/jenkins.install.UpgradeWizard.state\n    echo $JENKINS_VERSION > /var/jenkins_home/jenkins.install.InstallUtil.lastExecVersion\n    echo \"download plugins\"\n    # Install missing plugins\n    cp /var/jenkins_config/plugins.txt /var/jenkins_home;\n    rm -rf /usr/share/jenkins/ref/plugins/*.lock\n    version () { echo \"$@\" | awk -F. '{ printf(\"%d%03d%03d%03d\\n\", $1,$2,$3,$4); }'; }\n    if [ -f \"/usr/share/jenkins/jenkins.war\" ] && [ -n \"$(command -v jenkins-plugin-cli)\" 2>/dev/null ] && [ $(version $(jenkins-plugin-cli --version)) -ge $(version \"2.1.1\") ]; then\n      jenkins-plugin-cli --war \"/usr/share/jenkins/jenkins.war\" --plugin-file \"/var/jenkins_home/plugins.txt\" --latest false;\n    else\n      /usr/local/bin/install-plugins.sh `echo $(cat /var/jenkins_home/plugins.txt)`;\n    fi\n    echo \"copy plugins to shared volume\"\n    # Copy plugins to shared volume\n    yes n | cp -i /usr/share/jenkins/ref/plugins/* /var/jenkins_plugins/;\n    echo \"finished initialization\"\n  plugins.txt: |-\n    kubernetes:1.29.4\n    workflow-aggregator:2.6\n    git:4.7.1\n    configuration-as-code:1.51\n---\n# Source: jenkins/templates/jcasc-config.yaml\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: jenkins-jenkins-jcasc-config\n  namespace: default\n  labels:\n    \"app.kubernetes.io/name\": jenkins\n    \"helm.sh/chart\": \"jenkins-3.5.9\"\n    \"app.kubernetes.io/managed-by\": \"Helm\"\n    \"app.kubernetes.io/instance\": \"RELEASE-NAME\"\n    \"app.kubernetes.io/component\": \"jenkins-controller\"\n    jenkins-jenkins-config: \"true\"\ndata:\n  jcasc-default-config.yaml: |-\n    jenkins:\n      authorizationStrategy:\n        loggedInUsersCanDoAnything:\n          allowAnonymousRead: false\n      securityRealm:\n        local:\n          allowsSignup: false\n          enableCaptcha: false\n          users:\n          - id: \"${chart-admin-username}\"\n            name: \"Jenkins Admin\"\n            password: \"${chart-admin-password}\"\n      disableRememberMe: false\n      remotingSecurity:\n        enabled: true\n      mode: NORMAL\n      numExecutors: 0\n      projectNamingStrategy: \"standard\"\n      markupFormatter:\n        plainText\n      clouds:\n      - kubernetes:\n          containerCapStr: \"10\"\n          defaultsProviderTemplate: \"\"\n          connectTimeout: \"5\"\n          readTimeout: \"15\"\n          jenkinsUrl: \"http://jenkins.default.svc.cluster.local:8080\"\n          jenkinsTunnel: \"jenkins-agent.default.svc.cluster.local:50000\"\n          maxRequestsPerHostStr: \"32\"\n          name: \"kubernetes\"\n          namespace: \"default\"\n          serverUrl: \"https://kubernetes.default\"\n          podLabels:\n          - key: \"jenkins/jenkins-agent\"\n            value: \"true\"\n          templates:\n            - name: \"default\"\n              id: 6fee1499f64d6a191b3bfdbcc11d08b95c0bb1599a4a88aac1964f414dfe92db\n              containers:\n              - name: \"jnlp\"\n                alwaysPullImage: false\n                args: \"^${computer.jnlpmac} ^${computer.name}\"\n                command:\n                envVars:\n                  - envVar:\n                      key: \"JENKINS_URL\"\n                      value: \"http://jenkins.default.svc.cluster.local:8080/\"\n                image: \"jenkins/inbound-agent:4.6-1\"\n                privileged: \"false\"\n                resourceLimitCpu: 512m\n                resourceLimitMemory: 512Mi\n                resourceRequestCpu: 512m\n                resourceRequestMemory: 512Mi\n                runAsUser:\n                runAsGroup:\n                ttyEnabled: false\n                workingDir: /home/jenkins\n              idleMinutes: 0\n              instanceCap: 2147483647\n              label: \"jenkins-agent \"\n              nodeUsageMode: \"NORMAL\"\n              podRetention: Never\n              showRawYaml: true\n              serviceAccount: \"default\"\n              slaveConnectTimeoutStr: \"100\"\n              yamlMergeStrategy: override\n      crumbIssuer:\n        standard:\n          excludeClientIPFromCrumb: true\n    security:\n      apiToken:\n        creationOfLegacyTokenEnabled: false\n        tokenGenerationOnCreationEnabled: false\n        usageStatisticsEnabled: true\n    unclassified:\n      location:\n        adminAddress:\n        url: http://jenkins:8080\n---\n# Source: jenkins/templates/home-pvc.yaml\nkind: PersistentVolumeClaim\napiVersion: v1\nmetadata:\n  name: jenkins\n  namespace: default\n  labels:\n    \"app.kubernetes.io/name\": 'jenkins'\n    \"helm.sh/chart\": \"jenkins-3.5.9\"\n    \"app.kubernetes.io/managed-by\": \"Helm\"\n    \"app.kubernetes.io/instance\": \"RELEASE-NAME\"\n    \"app.kubernetes.io/component\": \"jenkins-controller\"\nspec:\n  accessModes:\n    - \"ReadWriteOnce\"\n  resources:\n    requests:\n      storage: \"8Gi\"\n---\n# Source: jenkins/templates/rbac.yaml\n# This role is used to allow Jenkins scheduling of agents via Kubernetes plugin.\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  name: jenkins-schedule-agents\n  namespace: default\n  labels:\n    \"app.kubernetes.io/name\": 'jenkins'\n    \"helm.sh/chart\": \"jenkins-3.5.9\"\n    \"app.kubernetes.io/managed-by\": \"Helm\"\n    \"app.kubernetes.io/instance\": \"RELEASE-NAME\"\n    \"app.kubernetes.io/component\": \"jenkins-controller\"\nrules:\n- apiGroups: [\"\"]\n  resources: [\"pods\", \"pods/exec\", \"pods/log\", \"persistentvolumeclaims\", \"events\"]\n  verbs: [\"get\", \"list\", \"watch\"]\n- apiGroups: [\"\"]\n  resources: [\"pods\", \"pods/exec\", \"persistentvolumeclaims\"]\n  verbs: [\"create\", \"delete\", \"deletecollection\", \"patch\", \"update\"]\n---\n# Source: jenkins/templates/rbac.yaml\n# The sidecar container which is responsible for reloading configuration changes\n# needs permissions to watch ConfigMaps\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  name: jenkins-casc-reload\n  namespace: default\n  labels:\n    \"app.kubernetes.io/name\": 'jenkins'\n    \"helm.sh/chart\": \"jenkins-3.5.9\"\n    \"app.kubernetes.io/managed-by\": \"Helm\"\n    \"app.kubernetes.io/instance\": \"RELEASE-NAME\"\n    \"app.kubernetes.io/component\": \"jenkins-controller\"\nrules:\n- apiGroups: [\"\"]\n  resources: [\"configmaps\"]\n  verbs: [\"get\", \"watch\", \"list\"]\n---\n# Source: jenkins/templates/rbac.yaml\n# We bind the role to the Jenkins service account. The role binding is created in the namespace\n# where the agents are supposed to run.\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  name: jenkins-schedule-agents\n  namespace: default\n  labels:\n    \"app.kubernetes.io/name\": 'jenkins'\n    \"helm.sh/chart\": \"jenkins-3.5.9\"\n    \"app.kubernetes.io/managed-by\": \"Helm\"\n    \"app.kubernetes.io/instance\": \"RELEASE-NAME\"\n    \"app.kubernetes.io/component\": \"jenkins-controller\"\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: jenkins-schedule-agents\nsubjects:\n- kind: ServiceAccount\n  name: jenkins\n  namespace: default\n---\n# Source: jenkins/templates/rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  name: jenkins-watch-configmaps\n  namespace: default\n  labels:\n    \"app.kubernetes.io/name\": 'jenkins'\n    \"helm.sh/chart\": \"jenkins-3.5.9\"\n    \"app.kubernetes.io/managed-by\": \"Helm\"\n    \"app.kubernetes.io/instance\": \"RELEASE-NAME\"\n    \"app.kubernetes.io/component\": \"jenkins-controller\"\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: jenkins-casc-reload\nsubjects:\n- kind: ServiceAccount\n  name: jenkins\n  namespace: default\n---\n# Source: jenkins/templates/jenkins-agent-svc.yaml\napiVersion: v1\nkind: Service\nmetadata:\n  name: jenkins-agent\n  namespace: default\n  labels:\n    \"app.kubernetes.io/name\": 'jenkins'\n    \"helm.sh/chart\": \"jenkins-3.5.9\"\n    \"app.kubernetes.io/managed-by\": \"Helm\"\n    \"app.kubernetes.io/instance\": \"RELEASE-NAME\"\n    \"app.kubernetes.io/component\": \"jenkins-controller\"\nspec:\n  ports:\n    - port: 50000\n      targetPort: 50000\n      name: agent-listener\n  selector:\n    \"app.kubernetes.io/component\": \"jenkins-controller\"\n    \"app.kubernetes.io/instance\": \"RELEASE-NAME\"\n  type: ClusterIP\n---\n# Source: jenkins/templates/jenkins-controller-svc.yaml\napiVersion: v1\nkind: Service\nmetadata:\n  name: jenkins\n  namespace: default\n  labels:\n    \"app.kubernetes.io/name\": 'jenkins'\n    \"helm.sh/chart\": \"jenkins-3.5.9\"\n    \"app.kubernetes.io/managed-by\": \"Helm\"\n    \"app.kubernetes.io/instance\": \"RELEASE-NAME\"\n    \"app.kubernetes.io/component\": \"jenkins-controller\"\nspec:\n  ports:\n    - port: 8080\n      name: http\n      targetPort: 8080\n  selector:\n    \"app.kubernetes.io/component\": \"jenkins-controller\"\n    \"app.kubernetes.io/instance\": \"RELEASE-NAME\"\n  type: ClusterIP\n---\n# Source: jenkins/templates/jenkins-controller-statefulset.yaml\napiVersion: apps/v1\nkind: StatefulSet\nmetadata:\n  name: jenkins\n  namespace: default\n  labels:\n    \"app.kubernetes.io/name\": 'jenkins'\n    \"helm.sh/chart\": \"jenkins-3.5.9\"\n    \"app.kubernetes.io/managed-by\": \"Helm\"\n    \"app.kubernetes.io/instance\": \"RELEASE-NAME\"\n    \"app.kubernetes.io/component\": \"jenkins-controller\"\nspec:\n  serviceName: jenkins\n  replicas: 1\n  selector:\n    matchLabels:\n      \"app.kubernetes.io/component\": \"jenkins-controller\"\n      \"app.kubernetes.io/instance\": \"RELEASE-NAME\"\n  template:\n    metadata:\n      labels:\n        \"app.kubernetes.io/name\": 'jenkins'\n        \"app.kubernetes.io/managed-by\": \"Helm\"\n        \"app.kubernetes.io/instance\": \"RELEASE-NAME\"\n        \"app.kubernetes.io/component\": \"jenkins-controller\"\n      annotations:\n        checksum/config: 3c68cbee5bbcfa3c909f009886b617f9604b09417f809a326c25498e86b0021f\n    spec:\n      securityContext:\n\n        runAsUser: 1000\n        fsGroup: 1000\n        runAsNonRoot: true\n      serviceAccountName: \"jenkins\"\n      initContainers:\n        - name: \"init\"\n          image: \"codeaprendiz/jenkins-controller-base:latest\"\n          imagePullPolicy: \"Always\"\n          command: [ \"sh\", \"/var/jenkins_config/apply_config.sh\" ]\n          resources:\n            limits:\n              cpu: 2000m\n              memory: 4096Mi\n            requests:\n              cpu: 50m\n              memory: 256Mi\n          volumeMounts:\n            - mountPath: /var/jenkins_home\n              name: jenkins-home\n            - mountPath: /var/jenkins_config\n              name: jenkins-config\n            - mountPath: /usr/share/jenkins/ref/plugins\n              name: plugins\n            - mountPath: /var/jenkins_plugins\n              name: plugin-dir\n      containers:\n        - name: jenkins\n          image: \"codeaprendiz/jenkins-controller-base:latest\"\n          imagePullPolicy: \"Always\"\n          args: [ \"--httpPort=8080\"]\n          env:\n            - name: POD_NAME\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.name\n            - name: JAVA_OPTS\n              value: >-\n                 -Dcasc.reload.token=$(POD_NAME)\n            - name: JENKINS_OPTS\n              value: >-\n\n            - name: JENKINS_SLAVE_AGENT_PORT\n              value: \"50000\"\n            - name: CASC_JENKINS_CONFIG\n              value: /var/jenkins_home/casc_configs\n          ports:\n            - containerPort: 8080\n              name: http\n            - containerPort: 50000\n              name: agent-listener\n          livenessProbe:\n            failureThreshold: 5\n            httpGet:\n              path: '/login'\n              port: http\n            periodSeconds: 10\n            timeoutSeconds: 5\n          readinessProbe:\n            failureThreshold: 3\n            httpGet:\n              path: '/login'\n              port: http\n            periodSeconds: 10\n            timeoutSeconds: 5\n          startupProbe:\n            failureThreshold: 12\n            httpGet:\n              path: '/login'\n              port: http\n            periodSeconds: 10\n            timeoutSeconds: 5\n          resources:\n            limits:\n              cpu: 2000m\n              memory: 4096Mi\n            requests:\n              cpu: 50m\n              memory: 256Mi\n          volumeMounts:\n            - mountPath: /var/jenkins_home\n              name: jenkins-home\n              readOnly: false\n            - mountPath: /var/jenkins_config\n              name: jenkins-config\n              readOnly: true\n            - mountPath: /usr/share/jenkins/ref/plugins/\n              name: plugin-dir\n              readOnly: false\n            - name: sc-config-volume\n              mountPath: /var/jenkins_home/casc_configs\n            - name: admin-secret\n              mountPath: /run/secrets/chart-admin-username\n              subPath: jenkins-admin-user\n              readOnly: true\n            - name: admin-secret\n              mountPath: /run/secrets/chart-admin-password\n              subPath: jenkins-admin-password\n              readOnly: true\n        - name: config-reload\n          image: \"kiwigrid/k8s-sidecar:1.12.2\"\n          imagePullPolicy: IfNotPresent\n          env:\n            - name: POD_NAME\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.name\n            - name: LABEL\n              value: \"jenkins-jenkins-config\"\n            - name: FOLDER\n              value: \"/var/jenkins_home/casc_configs\"\n            - name: NAMESPACE\n              value: 'default'\n            - name: REQ_URL\n              value: \"http://localhost:8080/reload-configuration-as-code/?casc-reload-token=$(POD_NAME)\"\n            - name: REQ_METHOD\n              value: \"POST\"\n            - name: REQ_RETRY_CONNECT\n              value: \"10\"\n          resources:\n            {}\n          volumeMounts:\n            - name: sc-config-volume\n              mountPath: \"/var/jenkins_home/casc_configs\"\n            - name: jenkins-home\n              mountPath: /var/jenkins_home\n\n      volumes:\n      - name: plugins\n        emptyDir: {}\n      - name: jenkins-config\n        configMap:\n          name: jenkins\n      - name: plugin-dir\n        emptyDir: {}\n      - name: jenkins-home\n        persistentVolumeClaim:\n          claimName: jenkins\n      - name: sc-config-volume\n        emptyDir: {}\n      - name: admin-secret\n        secret:\n          secretName: jenkins\n---\n# Source: jenkins/templates/tests/test-config.yaml\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: jenkins-tests\n  namespace: default\n  annotations:\n    \"helm.sh/hook\": test\ndata:\n  run.sh: |-\n    @test \"Testing Jenkins UI is accessible\" {\n      curl --retry 48 --retry-delay 10 jenkins:8080/login\n    }\n---\n# Source: jenkins/templates/tests/jenkins-test.yaml\napiVersion: v1\nkind: Pod\nmetadata:\n  name: \"ui-test-8ep3t\"\n  namespace: default\n  annotations:\n    \"helm.sh/hook\": test-success\nspec:\n  initContainers:\n    - name: \"test-framework\"\n      image: \"bats/bats:1.2.1\"\n      command:\n        - \"bash\"\n        - \"-c\"\n      args:\n        - |\n          # copy bats to tools dir\n          set -ex\n          cp -R /opt/bats /tools/bats/\n      volumeMounts:\n      - mountPath: /tools\n        name: tools\n  containers:\n    - name: ui-test\n      image: codeaprendiz/jenkins-controller-base:latest\n      command: [\"/tools/bats/bin/bats\", \"-t\", \"/tests/run.sh\"]\n      volumeMounts:\n      - mountPath: /tests\n        name: tests\n        readOnly: true\n      - mountPath: /tools\n        name: tools\n  volumes:\n  - name: tests\n    configMap:\n      name: jenkins-tests\n  - name: tools\n    emptyDir: {}\n  restartPolicy: Never\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_007__local__jenkins_k8s/values.yaml",
    "content": "# Default values for jenkins.\n# This is a YAML-formatted file.\n# Declare name/value pairs to be passed into your templates.\n# name: value\n\n## Overrides for generated resource names\n# See templates/_helpers.tpl\n# nameOverride:\n# fullnameOverride:\n# namespaceOverride:\n\n# For FQDN resolving of the controller service. Change this value to match your existing configuration.\n# ref: https://github.com/kubernetes/dns/blob/master/docs/specification.md\nclusterZone: \"cluster.local\"\n\nrenderHelmLabels: true\n\ncontroller:\n  # Used for label app.kubernetes.io/component\n  componentName: \"jenkins-controller\"\n  image: \"codeaprendiz/jenkins-controller-base\"\n  tag: \"latest\"\n  imagePullPolicy: \"Always\"\n  imagePullSecretName:\n  # Optionally configure lifetime for controller-container\n  lifecycle:\n  #  postStart:\n  #    exec:\n  #      command:\n  #      - \"uname\"\n  #      - \"-a\"\n  disableRememberMe: false\n  numExecutors: 0\n  # configures the executor mode of the Jenkins node. Possible values are: NORMAL or EXCLUSIVE\n  executorMode: \"NORMAL\"\n  # This is ignored if enableRawHtmlMarkupFormatter is true\n  markupFormatter: plainText\n  customJenkinsLabels: []\n  # The default configuration uses this secret to configure an admin user\n  # If you don't need that user or use a different security realm then you can disable it\n  adminSecret: true\n\n  hostNetworking: false\n  # When enabling LDAP or another non-Jenkins identity source, the built-in admin account will no longer exist.\n  # If you disable the non-Jenkins identity store and instead use the Jenkins internal one,\n  # you should revert controller.adminUser to your preferred admin user:\n  adminUser: \"admin\"\n  # adminPassword: <defaults to random>\n  admin:\n    existingSecret: \"\"\n    userKey: jenkins-admin-user\n    passwordKey: jenkins-admin-password\n  # This values should not be changed unless you use your custom image of jenkins or any devired from. If you want to use\n  # Cloudbees Jenkins Distribution docker, you should set jenkinsHome: \"/var/cloudbees-jenkins-distribution\"\n  jenkinsHome: \"/var/jenkins_home\"\n  # This values should not be changed unless you use your custom image of jenkins or any devired from. If you want to use\n  # Cloudbees Jenkins Distribution docker, you should set jenkinsRef: \"/usr/share/cloudbees-jenkins-distribution/ref\"\n  jenkinsRef: \"/usr/share/jenkins/ref\"\n  # Path to the jenkins war file which is used by jenkins-plugin-cli.\n  jenkinsWar: \"/usr/share/jenkins/jenkins.war\"\n  # Overrides the default arguments passed to the war\n  # overrideArgs:\n  #   - --httpPort=8080\n  resources:\n    requests:\n      cpu: \"50m\"\n      memory: \"256Mi\"\n    limits:\n      cpu: \"2000m\"\n      memory: \"4096Mi\"\n  # Overrides the init container default values\n  # initContainerResources:\n  #   requests:\n  #     cpu: \"50m\"\n  #     memory: \"256Mi\"\n  #   limits:\n  #     cpu: \"2000m\"\n  #     memory: \"4096Mi\"\n  # Environment variables that get added to the init container (useful for e.g. http_proxy)\n  # initContainerEnv:\n  #   - name: http_proxy\n  #     value: \"http://192.168.64.1:3128\"\n  # containerEnv:\n  #   - name: http_proxy\n  #     value: \"http://192.168.64.1:3128\"\n  # Set min/max heap here if needed with:\n  # javaOpts: \"-Xms512m -Xmx512m\"\n  # jenkinsOpts: \"\"\n  # If you are using the ingress definitions provided by this chart via the `controller.ingress` block the configured hostname will be the ingress hostname starting with `https://` or `http://` depending on the `tls` configuration.\n  # The Protocol can be overwritten by specifying `controller.jenkinsUrlProtocol`.\n  # jenkinsUrlProtocol: \"https\"\n  # If you are not using the provided ingress you can specify `controller.jenkinsUrl` to change the url definition.\n  # jenkinsUrl: \"\"\n  # If you set this prefix and use ingress controller then you might want to set the ingress path below\n  # jenkinsUriPrefix: \"/jenkins\"\n  # Enable pod security context (must be `true` if podSecurityContextOverride, runAsUser or fsGroup are set)\n  usePodSecurityContext: true\n  # Note that `runAsUser`, `fsGroup`, and `securityContextCapabilities` are\n  # being deprecated and replaced by `podSecurityContextOverride`.\n  # Set runAsUser to 1000 to let Jenkins run as non-root user 'jenkins' which exists in 'jenkins/jenkins' docker image.\n  # When setting runAsUser to a different value than 0 also set fsGroup to the same value:\n  runAsUser: 1000\n  fsGroup: 1000\n  # If you have PodSecurityPolicies that require dropping of capabilities as suggested by CIS K8s benchmark, put them here\n  securityContextCapabilities: {}\n  #  drop:\n  #    - NET_RAW\n  # Completely overwrites the contents of the `securityContext`, ignoring the\n  # values provided for the deprecated fields: `runAsUser`, `fsGroup`, and\n  # `securityContextCapabilities`.  In the case of mounting an ext4 filesystem,\n  # it might be desirable to use `supplementalGroups` instead of `fsGroup` in\n  # the `securityContext` block: https://github.com/kubernetes/kubernetes/issues/67014#issuecomment-589915496\n  # podSecurityContextOverride:\n  #   runAsUser: 1000\n  #   runAsNonRoot: true\n  #   supplementalGroups: [1000]\n  #   # capabilities: {}\n  servicePort: 8080\n  targetPort: 8080\n  # For minikube, set this to NodePort, elsewhere use LoadBalancer\n  # Use ClusterIP if your setup includes ingress controller\n  serviceType: ClusterIP\n  # Use Local to preserve the client source IP and avoids a second hop for LoadBalancer and Nodeport type services,\n  # but risks potentially imbalanced traffic spreading.\n  serviceExternalTrafficPolicy:\n  # Jenkins controller service annotations\n  serviceAnnotations: {}\n  # Jenkins controller custom labels\n  statefulSetLabels: {}\n  #   foo: bar\n  #   bar: foo\n  # Jenkins controller service labels\n  serviceLabels: {}\n  #   service.beta.kubernetes.io/aws-load-balancer-backend-protocol: https\n  # Put labels on Jenkins controller pod\n  podLabels: {}\n  # Used to create Ingress record (should used with ServiceType: ClusterIP)\n  # nodePort: <to set explicitly, choose port between 30000-32767\n  # Enable Kubernetes Liveness and Readiness Probes\n  # if Startup Probe is supported, enable it too\n  # ~ 2 minutes to allow Jenkins to restart when upgrading plugins. Set ReadinessTimeout to be shorter than LivenessTimeout.\n  healthProbes: true\n  probes:\n    startupProbe:\n      httpGet:\n        path: '{{ default \"\" .Values.controller.jenkinsUriPrefix }}/login'\n        port: http\n      periodSeconds: 10\n      timeoutSeconds: 5\n      failureThreshold: 12\n    livenessProbe:\n      failureThreshold: 5\n      httpGet:\n        path: '{{ default \"\" .Values.controller.jenkinsUriPrefix }}/login'\n        port: http\n      periodSeconds: 10\n      timeoutSeconds: 5\n      # If Startup Probe is not supported on your Kubernetes cluster, you might want to use \"initialDelaySeconds\" instead.\n      # It delays the initial liveness probe while Jenkins is starting\n      # initialDelaySeconds: 60\n    readinessProbe:\n      failureThreshold: 3\n      httpGet:\n        path: '{{ default \"\" .Values.controller.jenkinsUriPrefix }}/login'\n        port: http\n      periodSeconds: 10\n      timeoutSeconds: 5\n      # If Startup Probe is not supported on your Kubernetes cluster, you might want to use \"initialDelaySeconds\" instead.\n      # It delays the initial readyness probe while Jenkins is starting\n      # initialDelaySeconds: 60\n\n  agentListenerEnabled: true\n  agentListenerPort: 50000\n  agentListenerHostPort:\n  agentListenerNodePort:\n  disabledAgentProtocols:\n    - JNLP-connect\n    - JNLP2-connect\n  csrf:\n    defaultCrumbIssuer:\n      enabled: true\n      proxyCompatability: true\n  # Kubernetes service type for the JNLP agent service\n  # agentListenerServiceType is the Kubernetes Service type for the JNLP agent service,\n  # either 'LoadBalancer', 'NodePort', or 'ClusterIP'\n  # Note if you set this to 'LoadBalancer', you *must* define annotations to secure it. By default\n  # this will be an external load balancer and allowing inbound 0.0.0.0/0, a HUGE\n  # security risk:  https://github.com/kubernetes/charts/issues/1341\n  agentListenerServiceType: \"ClusterIP\"\n  # Optionally assign an IP to the LoadBalancer agentListenerService LoadBalancer\n  # GKE users: only regional static IPs will work for Service Load balancer.\n  agentListenerLoadBalancerIP:\n  agentListenerServiceAnnotations: {}\n\n  # Example of 'LoadBalancer' type of agent listener with annotations securing it\n  # agentListenerServiceType: LoadBalancer\n  # agentListenerServiceAnnotations:\n  #   service.beta.kubernetes.io/aws-load-balancer-internal: \"True\"\n  #   service.beta.kubernetes.io/load-balancer-source-ranges: \"172.0.0.0/8, 10.0.0.0/8\"\n\n  # LoadBalancerSourcesRange is a list of allowed CIDR values, which are combined with ServicePort to\n  # set allowed inbound rules on the security group assigned to the controller load balancer\n  loadBalancerSourceRanges:\n  - 0.0.0.0/0\n  # Optionally assign a known public LB IP\n  # loadBalancerIP: 1.2.3.4\n  # Optionally configure a JMX port\n  # requires additional javaOpts, ie\n  # javaOpts: >\n  #   -Dcom.sun.management.jmxremote.port=4000\n  #   -Dcom.sun.management.jmxremote.authenticate=false\n  #   -Dcom.sun.management.jmxremote.ssl=false\n  # jmxPort: 4000\n  # Optionally configure other ports to expose in the controller container\n  extraPorts: []\n  # - name: BuildInfoProxy\n  #   port: 9000\n\n  # List of plugins to be install during Jenkins controller start\n  installPlugins:\n    - kubernetes:1.29.4\n    - workflow-aggregator:2.6\n    - git:4.7.1\n    - configuration-as-code:1.51\n\n  # Set to false to download the minimum required version of all dependencies.\n  installLatestPlugins: false\n\n  # Set to true to download latest dependencies of any plugin that is requested to have the latest version.\n  installLatestSpecifiedPlugins: false\n\n  # List of plugins to install in addition to those listed in controller.installPlugins\n  additionalPlugins: []\n\n  # Enable to initialize the Jenkins controller only once on initial installation.\n  # Without this, whenever the controller gets restarted (Evicted, etc.) it will fetch plugin updates which has the potential to cause breakage.\n  # Note that for this to work, `persistence.enabled` needs to be set to `true`\n  initializeOnce: false\n\n  # Enable to always override the installed plugins with the values of 'controller.installPlugins' on upgrade or redeployment.\n  # overwritePlugins: true\n\n  # Configures if plugins bundled with `controller.image` should be overwritten with the values of 'controller.installPlugins' on upgrade or redeployment.\n  overwritePluginsFromImage: true\n\n  # Enable HTML parsing using OWASP Markup Formatter Plugin (antisamy-markup-formatter), useful with ghprb plugin.\n  # The plugin is not installed by default, please update controller.installPlugins.\n  enableRawHtmlMarkupFormatter: false\n  # Used to approve a list of groovy functions in pipelines used the script-security plugin. Can be viewed under /scriptApproval\n  scriptApproval: []\n  #  - \"method groovy.json.JsonSlurperClassic parseText java.lang.String\"\n  #  - \"new groovy.json.JsonSlurperClassic\"\n  # List of groovy init scripts to be executed during Jenkins controller start\n  initScripts: []\n  #  - |\n  #    print 'adding global pipeline libraries, register properties, bootstrap jobs...'\n\n  # 'name' is a name of an existing secret in same namespace as jenkins,\n  # 'keyName' is the name of one of the keys inside current secret.\n  # the 'name' and 'keyName' are concatenated with a '-' in between, so for example:\n  # an existing secret \"secret-credentials\" and a key inside it named \"github-password\" should be used in Jcasc as ${secret-credentials-github-password}\n  # 'name' and 'keyName' must be lowercase RFC 1123 label must consist of lower case alphanumeric characters or '-',\n  # and must start and end with an alphanumeric character (e.g. 'my-name',  or '123-abc')\n  additionalExistingSecrets: []\n  #  - name: secret-name-1\n  #    keyName: username\n  #  - name: secret-name-1\n  #    keyName: password\n\n  additionalSecrets: []\n  #  - name: nameOfSecret\n  #    value: secretText\n\n  # Generate SecretClaim resources in order to create Kubernetes secrets from HashiCorp Vault using kube-vault-controller.\n  # 'name' is name of the secret that will be created in Kubernetes. The Jenkins fullname is prepended to this value.\n  # 'path' is the fully qualified path to the secret in Vault\n  # 'type' is an optional Kubernetes secret type. Defaults to 'Opaque'\n  # 'renew' is an optional secret renewal time in seconds\n  secretClaims: []\n  # - name: secretName        # required\n  #   path: testPath          # required\n  #   type: kubernetes.io/tls # optional\n  #   renew: 60               # optional\n\n  # Name of default cloud configuration.\n  cloudName: \"kubernetes\"\n\n  # Below is the implementation of Jenkins Configuration as Code.  Add a key under configScripts for each configuration area,\n  # where each corresponds to a plugin or section of the UI.  Each key (prior to | character) is just a label, and can be any value.\n  # Keys are only used to give the section a meaningful name.  The only restriction is they may only contain RFC 1123 \\ DNS label\n  # characters: lowercase letters, numbers, and hyphens.  The keys become the name of a configuration yaml file on the controller in\n  # /var/jenkins_home/casc_configs (by default) and will be processed by the Configuration as Code Plugin.  The lines after each |\n  # become the content of the configuration yaml file.  The first line after this is a JCasC root element, eg jenkins, credentials,\n  # etc.  Best reference is https://<jenkins_url>/configuration-as-code/reference.  The example below creates a welcome message:\n  JCasC:\n    defaultConfig: true\n    configScripts: {}\n    #  welcome-message: |\n    #    jenkins:\n    #      systemMessage: Welcome to our CI\\CD server.  This Jenkins is configured and managed 'as code'.\n    # Ignored if securityRealm is defined in controller.JCasC.configScripts and\n    # ignored if controller.enableXmlConfig=true as controller.securityRealm takes precedence\n    securityRealm: |-\n      local:\n        allowsSignup: false\n        enableCaptcha: false\n        users:\n        - id: \"${chart-admin-username}\"\n          name: \"Jenkins Admin\"\n          password: \"${chart-admin-password}\"\n    # Ignored if authorizationStrategy is defined in controller.JCasC.configScripts\n    authorizationStrategy: |-\n      loggedInUsersCanDoAnything:\n        allowAnonymousRead: false\n  # Optionally specify additional init-containers\n  customInitContainers: []\n  # - name: custom-init\n  #   image: \"alpine:3.7\"\n  #   imagePullPolicy: Always\n  #   command: [ \"uname\", \"-a\" ]\n\n  sidecars:\n    configAutoReload:\n      # If enabled: true, Jenkins Configuration as Code will be reloaded on-the-fly without a reboot.  If false or not-specified,\n      # jcasc changes will cause a reboot and will only be applied at the subsequent start-up.  Auto-reload uses the\n      # http://<jenkins_url>/reload-configuration-as-code endpoint to reapply config when changes to the configScripts are detected.\n      enabled: true\n      image: kiwigrid/k8s-sidecar:1.12.2\n      imagePullPolicy: IfNotPresent\n      resources: {}\n        #   limits:\n        #     cpu: 100m\n        #     memory: 100Mi\n        #   requests:\n        #     cpu: 50m\n        #     memory: 50Mi\n      # How many connection-related errors to retry on\n      reqRetryConnect: 10\n      # env:\n      #   - name: REQ_TIMEOUT\n      #     value: \"30\"\n      # SSH port value can be set to any unused TCP port.  The default, 1044, is a non-standard SSH port that has been chosen at random.\n      # Is only used to reload jcasc config from the sidecar container running in the Jenkins controller pod.\n      # This TCP port will not be open in the pod (unless you specifically configure this), so Jenkins will not be\n      # accessible via SSH from outside of the pod.  Note if you use non-root pod privileges (runAsUser & fsGroup),\n      # this must be > 1024:\n      sshTcpPort: 1044\n      # folder in the pod that should hold the collected dashboards:\n      folder: \"/var/jenkins_home/casc_configs\"\n      # If specified, the sidecar will search for JCasC config-maps inside this namespace.\n      # Otherwise the namespace in which the sidecar is running will be used.\n      # It's also possible to specify ALL to search in all namespaces:\n      # searchNamespace:\n\n    # Allows you to inject additional/other sidecars\n    other: []\n    ## The example below runs the client for https://smee.io as sidecar container next to Jenkins,\n    ## that allows to trigger build behind a secure firewall.\n    ## https://jenkins.io/blog/2019/01/07/webhook-firewalls/#triggering-builds-with-webhooks-behind-a-secure-firewall\n    ##\n    ## Note: To use it you should go to https://smee.io/new and update the url to the generete one.\n    # - name: smee\n    #   image: docker.io/twalter/smee-client:1.0.2\n    #   args: [\"--port\", \"{{ .Values.controller.servicePort }}\", \"--path\", \"/github-webhook/\", \"--url\", \"https://smee.io/new\"]\n    #   resources:\n    #     limits:\n    #       cpu: 50m\n    #       memory: 128Mi\n    #     requests:\n    #       cpu: 10m\n    #       memory: 32Mi\n  # Name of the Kubernetes scheduler to use\n  schedulerName: \"\"\n  # Node labels and tolerations for pod assignment\n  # ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector\n  # ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#taints-and-tolerations-beta-feature\n  nodeSelector: {}\n\n  terminationGracePeriodSeconds:\n\n  tolerations: []\n\n  affinity: {}\n  # Leverage a priorityClass to ensure your pods survive resource shortages\n  # ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/\n  priorityClassName:\n\n  podAnnotations: {}\n  # Add StatefulSet annotations\n  statefulSetAnnotations: {}\n\n  # StatefulSet updateStrategy\n  # ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies\n  updateStrategy: {}\n\n  ingress:\n    enabled: false\n    # Override for the default paths that map requests to the backend\n    paths: []\n    # - backend:\n    #     serviceName: ssl-redirect\n    #     servicePort: use-annotation\n    # - backend:\n    #     serviceName: >-\n    #       {{ template \"jenkins.fullname\" . }}\n    #     # Don't use string here, use only integer value!\n    #     servicePort: 8080\n    # For Kubernetes v1.14+, use 'networking.k8s.io/v1beta1'\n    # For Kubernetes v1.19+, use 'networking.k8s.io/v1'\n    apiVersion: \"extensions/v1beta1\"\n    labels: {}\n    annotations: {}\n    # kubernetes.io/ingress.class: nginx\n    # kubernetes.io/tls-acme: \"true\"\n    # For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName\n    # See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress\n    # ingressClassName: nginx\n    # Set this path to jenkinsUriPrefix above or use annotations to rewrite path\n    # path: \"/jenkins\"\n    # configures the hostname e.g. jenkins.example.com\n    hostName:\n    tls:\n    # - secretName: jenkins.cluster.local\n    #   hosts:\n    #     - jenkins.cluster.local\n\n  # often you want to have your controller all locked down and private\n  # but you still want to get webhooks from your SCM\n  # A secondary ingress will let you expose different urls\n  # with a differnt configuration\n  secondaryingress:\n    enabled: false\n    # paths you want forwarded to the backend\n    # ex /github-webhook\n    paths: []\n    # For Kubernetes v1.14+, use 'networking.k8s.io/v1beta1'\n    # For Kubernetes v1.19+, use 'networking.k8s.io/v1'\n    apiVersion: \"extensions/v1beta1\"\n    labels: {}\n    annotations: {}\n    # kubernetes.io/ingress.class: nginx\n    # kubernetes.io/tls-acme: \"true\"\n    # For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName\n    # See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress\n    # ingressClassName: nginx\n    # configures the hostname e.g. jenkins-external.example.com\n    hostName:\n    tls:\n    # - secretName: jenkins-external.example.com\n    #   hosts:\n    #     - jenkins-external.example.com\n\n  # If you're running on GKE and need to configure a backendconfig\n  # to finish ingress setup, use the following values.\n  # Docs: https://cloud.google.com/kubernetes-engine/docs/concepts/backendconfig\n  backendconfig:\n    enabled: false\n    apiVersion: \"extensions/v1beta1\"\n    name:\n    labels: {}\n    annotations: {}\n    spec: {}\n\n  # Openshift route\n  route:\n    enabled: false\n    labels: {}\n    annotations: {}\n    # path: \"/jenkins\"\n\n  # controller.hostAliases allows for adding entries to Pod /etc/hosts:\n  # https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/\n  hostAliases: []\n  # - ip: 192.168.50.50\n  #   hostnames:\n  #     - something.local\n  # - ip: 10.0.50.50\n  #   hostnames:\n  #     - other.local\n\n  # Expose Prometheus metrics\n  prometheus:\n    # If enabled, add the prometheus plugin to the list of plugins to install\n    # https://plugins.jenkins.io/prometheus\n    enabled: false\n    # Additional labels to add to the ServiceMonitor object\n    serviceMonitorAdditionalLabels: {}\n    # Set a custom namespace where to deploy ServiceMonitor resource\n    # serviceMonitorNamespace: monitoring\n    scrapeInterval: 60s\n    # This is the default endpoint used by the prometheus plugin\n    scrapeEndpoint: /prometheus\n    # Additional labels to add to the PrometheusRule object\n    alertingRulesAdditionalLabels: {}\n    # An array of prometheus alerting rules\n    # See here: https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/\n    # The `groups` root object is added by default, simply add the rule entries\n    alertingrules: []\n    # Set a custom namespace where to deploy PrometheusRule resource\n    prometheusRuleNamespace: \"\"\n\n  # Can be used to disable rendering controller test resources when using helm template\n  testEnabled: true\n\n  httpsKeyStore:\n    jenkinsHttpsJksSecretName: ''\n    enable: false\n    httpPort: 8081\n    path: \"/var/jenkins_keystore\"\n    fileName: \"keystore.jks\"\n    password: \"password\"\n    # Convert keystore.jks files content to base64 ( cat keystore.jks | base64 ) and put the output here\n    jenkinsKeyStoreBase64Encoded: |\n        /u3+7QAAAAIAAAABAAAAAQANamVua2luc2NpLmNvbQAAAW2r/b1ZAAAFATCCBP0wDgYKKwYBBAEq\n        AhEBAQUABIIE6QbCqasvoHS0pSwYqSvdydMCB9t+VNfwhFIiiuAelJfO5sSe2SebJbtwHgLcRz1Z\n        gMtWgOSFdl3bWSzA7vrW2LED52h+jXLYSWvZzuDuh8hYO85m10ikF6QR+dTi4jra0whIFDvq3pxe\n        TnESxEsN+DvbZM3jA3qsjQJSeISNpDjO099dqQvHpnCn18lyk7J4TWJ8sOQQb1EM2zDAfAOSqA/x\n        QuPEFl74DlY+5DIk6EBvpmWhaMSvXzWZACGA0sYqa157dq7O0AqmuLG/EI5EkHETO4CrtBW+yLcy\n        2dUCXOMA+j+NjM1BjrQkYE5vtSfNO6lFZcISyKo5pTFlcA7ut0Fx2nZ8GhHTn32CpeWwNcZBn1gR\n        pZVt6DxVVkhTAkMLhR4rL2wGIi/1WRs23ZOLGKtyDNvDHnQyDiQEoJGy9nAthA8aNHa3cfdF10vB\n        Drb19vtpFHmpvKEEhpk2EBRF4fTi644Fuhu2Ied6118AlaPvEea+n6G4vBz+8RWuVCmZjLU+7h8l\n        Hy3/WdUPoIL5eW7Kz+hS+sRTFzfu9C48dMkQH3a6f3wSY+mufizNF9U298r98TnYy+PfDJK0bstG\n        Ph6yPWx8DGXKQBwrhWJWXI6JwZDeC5Ny+l8p1SypTmAjpIaSW3ge+KgcL6Wtt1R5hUV1ajVwVSUi\n        HF/FachKqPqyLJFZTGjNrxnmNYpt8P1d5JTvJfmfr55Su/P9n7kcyWp7zMcb2Q5nlXt4tWogOHLI\n        OzEWKCacbFfVHE+PpdrcvCVZMDzFogIq5EqGTOZe2poPpBVE+1y9mf5+TXBegy5HToLWvmfmJNTO\n        NCDuBjgLs2tdw2yMPm4YEr57PnMX5gGTC3f2ZihXCIJDCRCdQ9sVBOjIQbOCzxFXkVITo0BAZhCi\n        Yz61wt3Ud8e//zhXWCkCsSV+IZCxxPzhEFd+RFVjW0Nm9hsb2FgAhkXCjsGROgoleYgaZJWvQaAg\n        UyBzMmKDPKTllBHyE3Gy1ehBNGPgEBChf17/9M+j8pcm1OmlM434ctWQ4qW7RU56//yq1soFY0Te\n        fu2ei03a6m68fYuW6s7XEEK58QisJWRAvEbpwu/eyqfs7PsQ+zSgJHyk2rO95IxdMtEESb2GRuoi\n        Bs+AHNdYFTAi+GBWw9dvEgqQ0Mpv0//6bBE/Fb4d7b7f56uUNnnE7mFnjGmGQN+MvC62pfwfvJTT\n        EkT1iZ9kjM9FprTFWXT4UmO3XTvesGeE50sV9YPm71X4DCQwc4KE8vyuwj0s6oMNAUACW2ClU9QQ\n        y0tRpaF1tzs4N42Q5zl0TzWxbCCjAtC3u6xf+c8MCGrr7DzNhm42LOQiHTa4MwX4x96q7235oiAU\n        iQqSI/hyF5yLpWw4etyUvsx2/0/0wkuTU1FozbLoCWJEWcPS7QadMrRRISxHf0YobIeQyz34regl\n        t1qSQ3dCU9D6AHLgX6kqllx4X0fnFq7LtfN7fA2itW26v+kAT2QFZ3qZhINGfofCja/pITC1uNAZ\n        gsJaTMcQ600krj/ynoxnjT+n1gmeqThac6/Mi3YlVeRtaxI2InL82ZuD+w/dfY9OpPssQjy3xiQa\n        jPuaMWXRxz/sS9syOoGVH7XBwKrWpQcpchozWJt40QV5DslJkclcr8aC2AGlzuJMTdEgz1eqV0+H\n        bAXG9HRHN/0eJTn1/QAAAAEABVguNTA5AAADjzCCA4swggJzAhRGqVxH4HTLYPGO4rzHcCPeGDKn\n        xTANBgkqhkiG9w0BAQsFADCBgTELMAkGA1UEBhMCY2ExEDAOBgNVBAgMB29udGFyaW8xEDAOBgNV\n        BAcMB3Rvcm9udG8xFDASBgNVBAoMC2plbmtpbnN0ZXN0MRkwFwYDVQQDDBBqZW5raW5zdGVzdC5p\n        bmZvMR0wGwYJKoZIhvcNAQkBFg50ZXN0QHRlc3QuaW5mbzAeFw0xOTEwMDgxNTI5NTVaFw0xOTEx\n        MDcxNTI5NTVaMIGBMQswCQYDVQQGEwJjYTEQMA4GA1UECAwHb250YXJpbzEQMA4GA1UEBwwHdG9y\n        b250bzEUMBIGA1UECgwLamVua2luc3Rlc3QxGTAXBgNVBAMMEGplbmtpbnN0ZXN0LmluZm8xHTAb\n        BgkqhkiG9w0BCQEWDnRlc3RAdGVzdC5pbmZvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC\n        AQEA02q352JTHGvROMBhSHvSv+vnoOTDKSTz2aLQn0tYrIRqRo+8bfmMjXuhkwZPSnCpvUGNAJ+w\n        Jrt/dqMoYUjCBkjylD/qHmnXN5EwS1cMg1Djh65gi5JJLFJ7eNcoSsr/0AJ+TweIal1jJSP3t3PF\n        9Uv21gm6xdm7HnNK66WpUUXLDTKaIs/jtagVY1bLOo9oEVeLN4nT2CYWztpMvdCyEDUzgEdDbmrP\n        F5nKUPK5hrFqo1Dc5rUI4ZshL3Lpv398aMxv6n2adQvuL++URMEbXXBhxOrT6rCtYzbcR5fkwS9i\n        d3Br45CoWOQro02JAepoU0MQKY5+xQ4Bq9Q7tB9BAwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQAe\n        4xc+mSvKkrKBHg9/zpkWgZUiOp4ENJCi8H4tea/PCM439v6y/kfjT/okOokFvX8N5aa1OSz2Vsrl\n        m8kjIc6hiA7bKzT6lb0EyjUShFFZ5jmGVP4S7/hviDvgB5yEQxOPpumkdRP513YnEGj/o9Pazi5h\n        /MwpRxxazoda9r45kqQpyG+XoM4pB+Fd3JzMc4FUGxfVPxJU4jLawnJJiZ3vqiSyaB0YyUL+Er1Q\n        6NnqtR4gEBF0ZVlQmkycFvD4EC2boP943dLqNUvop+4R3SM1QMM6P5u8iTXtHd/VN4MwMyy1wtog\n        hYAzODo1Jt59pcqqKJEas0C/lFJEB3frw4ImNx5fNlJYOpx+ijfQs9m39CevDq0=\n\nagent:\n  enabled: true\n  defaultsProviderTemplate: \"\"\n  # URL for connecting to the Jenkins contoller\n  jenkinsUrl:\n  # connect to the specified host and port, instead of connecting directly to the Jenkins controller\n  jenkinsTunnel:\n  kubernetesConnectTimeout: 5\n  kubernetesReadTimeout: 15\n  maxRequestsPerHostStr: \"32\"\n  namespace:\n  image: \"jenkins/inbound-agent\"\n  tag: \"4.6-1\"\n  workingDir: \"/home/jenkins\"\n  nodeUsageMode: \"NORMAL\"\n  customJenkinsLabels: []\n  # name of the secret to be used for image pulling\n  imagePullSecretName:\n  componentName: \"jenkins-agent\"\n  websocket: false\n  privileged: false\n  runAsUser:\n  runAsGroup:\n  resources:\n    requests:\n      cpu: \"512m\"\n      memory: \"512Mi\"\n    limits:\n      cpu: \"512m\"\n      memory: \"512Mi\"\n  # You may want to change this to true while testing a new image\n  alwaysPullImage: false\n  # Controls how agent pods are retained after the Jenkins build completes\n  # Possible values: Always, Never, OnFailure\n  podRetention: \"Never\"\n  # Disable if you do not want the Yaml the agent pod template to show up\n  # in the job Console Output. This can be helpful for either security reasons\n  # or simply to clean up the output to make it easier to read.\n  showRawYaml: true\n  # You can define the volumes that you want to mount for this container\n  # Allowed types are: ConfigMap, EmptyDir, HostPath, Nfs, PVC, Secret\n  # Configure the attributes as they appear in the corresponding Java class for that type\n  # https://github.com/jenkinsci/kubernetes-plugin/tree/master/src/main/java/org/csanchez/jenkins/plugins/kubernetes/volumes\n  volumes: []\n  # - type: ConfigMap\n  #   configMapName: myconfigmap\n  #   mountPath: /var/myapp/myconfigmap\n  # - type: EmptyDir\n  #   mountPath: /var/myapp/myemptydir\n  #   memory: false\n  # - type: HostPath\n  #   hostPath: /var/lib/containers\n  #   mountPath: /var/myapp/myhostpath\n  # - type: Nfs\n  #   mountPath: /var/myapp/mynfs\n  #   readOnly: false\n  #   serverAddress: \"192.0.2.0\"\n  #   serverPath: /var/lib/containers\n  # - type: PVC\n  #   claimName: mypvc\n  #   mountPath: /var/myapp/mypvc\n  #   readOnly: false\n  # - type: Secret\n  #   defaultMode: \"600\"\n  #   mountPath: /var/myapp/mysecret\n  #   secretName: mysecret\n  # Pod-wide environment, these vars are visible to any container in the agent pod\n\n  # You can define the workspaceVolume that you want to mount for this container\n  # Allowed types are: DynamicPVC, EmptyDir, HostPath, Nfs, PVC\n  # Configure the attributes as they appear in the corresponding Java class for that type\n  # https://github.com/jenkinsci/kubernetes-plugin/tree/master/src/main/java/org/csanchez/jenkins/plugins/kubernetes/volumes/workspace\n  workspaceVolume: {}\n  # - type: DynamicPVC\n  #   configMapName: myconfigmap\n  # - type: EmptyDir\n  #   memory: false\n  # - type: HostPath\n  #   hostPath: /var/lib/containers\n  # - type: Nfs\n  #   readOnly: false\n  #   serverAddress: \"192.0.2.0\"\n  #   serverPath: /var/lib/containers\n  # - type: PVC\n  #   claimName: mypvc\n  #   readOnly: false\n  # Pod-wide environment, these vars are visible to any container in the agent pod\n  envVars: []\n  # - name: PATH\n  #   value: /usr/local/bin\n  nodeSelector: {}\n  # Key Value selectors. Ex:\n  # jenkins-agent: v1\n\n  # Executed command when side container gets started\n  command:\n  args: \"${computer.jnlpmac} ${computer.name}\"\n  # Side container name\n  sideContainerName: \"jnlp\"\n  # Doesn't allocate pseudo TTY by default\n  TTYEnabled: false\n  # Max number of spawned agent\n  containerCap: 10\n  # Pod name\n  podName: \"default\"\n  # Allows the Pod to remain active for reuse until the configured number of\n  # minutes has passed since the last step was executed on it.\n  idleMinutes: 0\n  # Raw yaml template for the Pod. For example this allows usage of toleration for agent pods.\n  # https://github.com/jenkinsci/kubernetes-plugin#using-yaml-to-define-pod-templates\n  # https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/\n  yamlTemplate: \"\"\n  # yamlTemplate: |-\n  #   apiVersion: v1\n  #   kind: Pod\n  #   spec:\n  #     tolerations:\n  #     - key: \"key\"\n  #       operator: \"Equal\"\n  #       value: \"value\"\n  # Defines how the raw yaml field gets merged with yaml definitions from inherited pod templates: merge or override\n  yamlMergeStrategy: \"override\"\n  # Timeout in seconds for an agent to be online\n  connectTimeout: 100\n  # Annotations to apply to the pod.\n  annotations: {}\n\n  # Below is the implementation of custom pod templates for the default configured kubernetes cloud.\n  # Add a key under podTemplates for each pod template. Each key (prior to | character) is just a label, and can be any value.\n  # Keys are only used to give the pod template a meaningful name.  The only restriction is they may only contain RFC 1123 \\ DNS label\n  # characters: lowercase letters, numbers, and hyphens. Each pod template can contain multiple containers.\n  # For this pod templates configuration to be loaded the following values must be set:\n  # controller.JCasC.defaultConfig: true\n  # Best reference is https://<jenkins_url>/configuration-as-code/reference#Cloud-kubernetes. The example below creates a python pod template.\n  podTemplates: {}\n  #  python: |\n  #    - name: python\n  #      label: jenkins-python\n  #      serviceAccount: jenkins\n  #      containers:\n  #        - name: python\n  #          image: python:3\n  #          command: \"/bin/sh -c\"\n  #          args: \"cat\"\n  #          ttyEnabled: true\n  #          privileged: true\n  #          resourceRequestCpu: \"400m\"\n  #          resourceRequestMemory: \"512Mi\"\n  #          resourceLimitCpu: \"1\"\n  #          resourceLimitMemory: \"1024Mi\"\n\n# Here you can add additional agents\n# They inherit all values from `agent` so you only need to specify values which differ\nadditionalAgents: {}\n#  maven:\n#    podName: maven\n#    customJenkinsLabels: maven\n#    # An example of overriding the jnlp container\n#    # sideContainerName: jnlp\n#    image: jenkins/jnlp-agent-maven\n#    tag: latest\n#  python:\n#    podName: python\n#    customJenkinsLabels: python\n#    sideContainerName: python\n#    image: python\n#    tag: \"3\"\n#    command: \"/bin/sh -c\"\n#    args: \"cat\"\n#    TTYEnabled: true\n\npersistence:\n  enabled: true\n  ## A manually managed Persistent Volume and Claim\n  ## Requires persistence.enabled: true\n  ## If defined, PVC must be created manually before volume will be bound\n  existingClaim:\n  ## jenkins data Persistent Volume Storage Class\n  ## If defined, storageClassName: <storageClass>\n  ## If set to \"-\", storageClassName: \"\", which disables dynamic provisioning\n  ## If undefined (the default) or set to null, no storageClassName spec is\n  ##   set, choosing the default provisioner.  (gp2 on AWS, standard on\n  ##   GKE, AWS & OpenStack)\n  ##\n  storageClass:\n  annotations: {}\n  accessMode: \"ReadWriteOnce\"\n  size: \"8Gi\"\n  volumes:\n  #  - name: nothing\n  #    emptyDir: {}\n  mounts:\n  #  - mountPath: /var/nothing\n  #    name: nothing\n  #    readOnly: true\n\nnetworkPolicy:\n  # Enable creation of NetworkPolicy resources.\n  enabled: false\n  # For Kubernetes v1.4, v1.5 and v1.6, use 'extensions/v1beta1'\n  # For Kubernetes v1.7, use 'networking.k8s.io/v1'\n  apiVersion: networking.k8s.io/v1\n  # You can allow agents to connect from both within the cluster (from within specific/all namespaces) AND/OR from a given external IP range\n  internalAgents:\n    allowed: true\n    podLabels: {}\n    namespaceLabels: {}\n      # project: myproject\n  externalAgents: {}\n  #   ipCIDR: 172.17.0.0/16\n  #   except:\n  #     - 172.17.1.0/24\n\n## Install Default RBAC roles and bindings\nrbac:\n  create: true\n  readSecrets: false\n\nserviceAccount:\n  create: true\n  # The name of the service account is autogenerated by default\n  name:\n  annotations: {}\n  imagePullSecretName:\n\n\nserviceAccountAgent:\n  # Specifies whether a ServiceAccount should be created\n  create: false\n  # The name of the ServiceAccount to use.\n  # If not set and create is true, a name is generated using the fullname template\n  name:\n  annotations: {}\n  imagePullSecretName:\n\n## Backup cronjob configuration\n## Ref: https://github.com/maorfr/kube-tasks\nbackup:\n  # Backup must use RBAC\n  # So by enabling backup you are enabling RBAC specific for backup\n  enabled: false\n  # Used for label app.kubernetes.io/component\n  componentName: \"backup\"\n  # Schedule to run jobs. Must be in cron time format\n  # Ref: https://crontab.guru/\n  schedule: \"0 2 * * *\"\n  labels: {}\n  serviceAccount:\n    create: true\n    name:\n    annotations: {}\n    # Example for authorization to AWS S3 using kube2iam or IRSA\n    # Can also be done using environment variables\n    # iam.amazonaws.com/role: \"jenkins\"\n    # \"eks.amazonaws.com/role-arn\": \"arn:aws:iam::123456789012:role/jenkins-backup\"\n  # Set this to terminate the job that is running/failing continously and set the job status to \"Failed\"\n  activeDeadlineSeconds: \"\"\n  image:\n    repository: \"maorfr/kube-tasks\"\n    tag: \"0.2.0\"\n  # Additional arguments for kube-tasks\n  # Ref: https://github.com/maorfr/kube-tasks#simple-backup\n  extraArgs: []\n  # Add existingSecret for AWS credentials\n  existingSecret: {}\n  ## Example for using an existing secret\n   # jenkinsaws:\n  ## Use this key for AWS access key ID\n     # awsaccesskey: jenkins_aws_access_key\n  ## Use this key for AWS secret access key\n     # awssecretkey: jenkins_aws_secret_key\n  # Add additional environment variables\n   # jenkinsgcp:\n  ## Use this key for GCP credentials\n     # gcpcredentials: credentials.json\n  env: []\n  # Example environment variable required for AWS credentials chain\n  # - name: \"AWS_REGION\"\n  #   value: \"us-east-1\"\n  resources:\n    requests:\n      memory: 1Gi\n      cpu: 1\n    limits:\n      memory: 1Gi\n      cpu: 1\n  # Destination to store the backup artifacts\n  # Supported cloud storage services: AWS S3, Minio S3, Azure Blob Storage, Google Cloud Storage\n  # Additional support can added. Visit this repository for details\n  # Ref: https://github.com/maorfr/skbn\n  destination: \"s3://jenkins-data/backup\"\n  # By enabling only the jenkins_home/jobs folder gets backed up, not the whole jenkins instance\n  onlyJobs: false\n  # Enable backup pod security context (must be `true` if runAsUser or fsGroup are set)\n  usePodSecurityContext: true\n  # When setting runAsUser to a different value than 0 also set fsGroup to the same value:\n  runAsUser: 1000\n  fsGroup: 1000\n  securityContextCapabilities: {}\n  #  drop:\n  #    - NET_RAW\ncheckDeprecation: true\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_008__local__kafka/ReadMe.md",
    "content": "[bitnami.com/stack/kafka/helm](https://bitnami.com/stack/kafka/helm)\n\n- Add repo\n\n```bash\n$ helm repo add bitnami https://charts.bitnami.com/bitnami\n\"bitnami\" already exists with the same configuration, skipping\n```\n\n- Pull to local\n\n```bash\n$ helm pull bitnami/kafka\n$ helm template kafka-template ./kafka/ -f kafka/values.yaml > kafka-manifests.yaml\n```\n\n- Start \n\n```bash\n$ helm upgrade --install -f values.yaml kafka-release .\nRelease \"kafka-release\" does not exist. Installing it now.\nNAME: kafka-release\nLAST DEPLOYED: Wed Sep 15 22:33:52 2021\nNAMESPACE: default\nSTATUS: deployed\nREVISION: 1\nTEST SUITE: None\nNOTES:\n** Please be patient while the chart is being deployed **\n\nKafka can be accessed by consumers via port 9092 on the following DNS name from within your cluster:\n\n    kafka-release.default.svc.cluster.local\n\nEach Kafka broker can be accessed by producers via port 9092 on the following DNS name(s) from within your cluster:\n\n    kafka-release-0.kafka-release-headless.default.svc.cluster.local:9092\n\nTo create a pod that you can use as a Kafka client run the following commands:\n\n    kubectl run kafka-release-client --restart='Never' --image docker.io/bitnami/kafka:2.8.0-debian-10-r84 --namespace default --command -- sleep infinity\n    kubectl exec --tty -i kafka-release-client --namespace default -- bash\n\n    PRODUCER:\n        kafka-console-producer.sh \\\n            \n            --broker-list kafka-release-0.kafka-release-headless.default.svc.cluster.local:9092 \\\n            --topic test\n\n    CONSUMER:\n        kafka-console-consumer.sh \\\n            \n            --bootstrap-server kafka-release.default.svc.cluster.local:9092 \\\n            --topic test \\\n            --from-beginning\n```\n\n- Check the pods\n\n```bash\n$ kubectl get pods\nNAME                        READY   STATUS    RESTARTS   AGE\nkafka-release-0             1/1     Running   5          11m\nkafka-release-zookeeper-0   1/1     Running   0          11m\n```\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_008__local__kafka/kafka-manifests.yaml",
    "content": "---\n# Source: kafka/templates/serviceaccount.yaml\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: kafka-template\n  labels:\n    app.kubernetes.io/name: kafka\n    helm.sh/chart: kafka-14.1.0\n    app.kubernetes.io/instance: kafka-template\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: kafka\nautomountServiceAccountToken: true\n---\n# Source: kafka/templates/scripts-configmap.yaml\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: kafka-template-scripts\n  labels:\n    app.kubernetes.io/name: kafka\n    helm.sh/chart: kafka-14.1.0\n    app.kubernetes.io/instance: kafka-template\n    app.kubernetes.io/managed-by: Helm\ndata:\n  setup.sh: |-\n    #!/bin/bash\n\n    ID=\"${MY_POD_NAME#\"kafka-template-\"}\"\n    if [[ -f \"/bitnami/kafka/data/meta.properties\" ]]; then\n        export KAFKA_CFG_BROKER_ID=\"$(grep \"broker.id\" /bitnami/kafka/data/meta.properties | awk -F '=' '{print $2}')\"\n    else\n        export KAFKA_CFG_BROKER_ID=\"$((ID + 0))\"\n    fi\n\n    exec /entrypoint.sh /run.sh\n---\n# Source: kafka/charts/zookeeper/templates/svc-headless.yaml\napiVersion: v1\nkind: Service\nmetadata:\n  name: kafka-template-zookeeper-headless\n  namespace: default\n  labels:\n    app.kubernetes.io/name: zookeeper\n    helm.sh/chart: zookeeper-7.4.1\n    app.kubernetes.io/instance: kafka-template\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: zookeeper\nspec:\n  type: ClusterIP\n  clusterIP: None\n  publishNotReadyAddresses: true\n  ports:\n    \n    - name: tcp-client\n      port: 2181\n      targetPort: client\n    \n    \n    - name: follower\n      port: 2888\n      targetPort: follower\n    - name: tcp-election\n      port: 3888\n      targetPort: election\n  selector:\n    app.kubernetes.io/name: zookeeper\n    app.kubernetes.io/instance: kafka-template\n    app.kubernetes.io/component: zookeeper\n---\n# Source: kafka/charts/zookeeper/templates/svc.yaml\napiVersion: v1\nkind: Service\nmetadata:\n  name: kafka-template-zookeeper\n  namespace: default\n  labels:\n    app.kubernetes.io/name: zookeeper\n    helm.sh/chart: zookeeper-7.4.1\n    app.kubernetes.io/instance: kafka-template\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: zookeeper\nspec:\n  type: ClusterIP\n  ports:\n    \n    - name: tcp-client\n      port: 2181\n      targetPort: client\n      nodePort: null\n    \n    \n    - name: follower\n      port: 2888\n      targetPort: follower\n    - name: tcp-election\n      port: 3888\n      targetPort: election\n  selector:\n    app.kubernetes.io/name: zookeeper\n    app.kubernetes.io/instance: kafka-template\n    app.kubernetes.io/component: zookeeper\n---\n# Source: kafka/templates/svc-headless.yaml\napiVersion: v1\nkind: Service\nmetadata:\n  name: kafka-template-headless\n  labels:\n    app.kubernetes.io/name: kafka\n    helm.sh/chart: kafka-14.1.0\n    app.kubernetes.io/instance: kafka-template\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: kafka\nspec:\n  type: ClusterIP\n  clusterIP: None\n  ports:\n    - name: tcp-client\n      port: 9092\n      protocol: TCP\n      targetPort: kafka-client\n    - name: tcp-internal\n      port: 9093\n      protocol: TCP\n      targetPort: kafka-internal\n  selector:\n    app.kubernetes.io/name: kafka\n    app.kubernetes.io/instance: kafka-template\n    app.kubernetes.io/component: kafka\n---\n# Source: kafka/templates/svc.yaml\napiVersion: v1\nkind: Service\nmetadata:\n  name: kafka-template\n  labels:\n    app.kubernetes.io/name: kafka\n    helm.sh/chart: kafka-14.1.0\n    app.kubernetes.io/instance: kafka-template\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: kafka\nspec:\n  type: ClusterIP\n  ports:\n    - name: tcp-client\n      port: 9092\n      protocol: TCP\n      targetPort: kafka-client\n      nodePort: null\n  selector:\n    app.kubernetes.io/name: kafka\n    app.kubernetes.io/instance: kafka-template\n    app.kubernetes.io/component: kafka\n---\n# Source: kafka/charts/zookeeper/templates/statefulset.yaml\napiVersion: apps/v1\nkind: StatefulSet\nmetadata:\n  name: kafka-template-zookeeper\n  namespace: default\n  labels:\n    app.kubernetes.io/name: zookeeper\n    helm.sh/chart: zookeeper-7.4.1\n    app.kubernetes.io/instance: kafka-template\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: zookeeper\n    role: zookeeper\nspec:\n  serviceName: kafka-template-zookeeper-headless\n  replicas: 1\n  podManagementPolicy: Parallel\n  updateStrategy:\n    type: RollingUpdate\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: zookeeper\n      app.kubernetes.io/instance: kafka-template\n      app.kubernetes.io/component: zookeeper\n  template:\n    metadata:\n      name: kafka-template-zookeeper\n      labels:\n        app.kubernetes.io/name: zookeeper\n        helm.sh/chart: zookeeper-7.4.1\n        app.kubernetes.io/instance: kafka-template\n        app.kubernetes.io/managed-by: Helm\n        app.kubernetes.io/component: zookeeper\n    spec:\n      \n      serviceAccountName: default\n      securityContext:\n        fsGroup: 1001\n      affinity:\n        podAffinity:\n          \n        podAntiAffinity:\n          preferredDuringSchedulingIgnoredDuringExecution:\n            - podAffinityTerm:\n                labelSelector:\n                  matchLabels:\n                    app.kubernetes.io/name: zookeeper\n                    app.kubernetes.io/instance: kafka-template\n                    app.kubernetes.io/component: zookeeper\n                namespaces:\n                  - \"default\"\n                topologyKey: kubernetes.io/hostname\n              weight: 1\n        nodeAffinity:\n          \n      containers:\n        - name: zookeeper\n          image: docker.io/bitnami/zookeeper:3.7.0-debian-10-r126\n          imagePullPolicy: \"IfNotPresent\"\n          securityContext:\n            runAsUser: 1001\n          command:\n            - bash\n            - -ec\n            - |\n                # Execute entrypoint as usual after obtaining ZOO_SERVER_ID\n                # check ZOO_SERVER_ID in persistent volume via myid\n                # if not present, set based on POD hostname\n                if [[ -f \"/bitnami/zookeeper/data/myid\" ]]; then\n                  export ZOO_SERVER_ID=\"$(cat /bitnami/zookeeper/data/myid)\"\n                else\n                  HOSTNAME=`hostname -s`\n                  if [[ $HOSTNAME =~ (.*)-([0-9]+)$ ]]; then\n                    ORD=${BASH_REMATCH[2]}\n                    export ZOO_SERVER_ID=$((ORD + 1 ))\n                  else\n                    echo \"Failed to get index from hostname $HOST\"\n                    exit 1\n                  fi\n                fi\n                exec /entrypoint.sh /run.sh\n          resources:\n            requests:\n              cpu: 250m\n              memory: 256Mi\n          env:\n            - name: BITNAMI_DEBUG\n              value: \"false\"\n            - name: ZOO_DATA_LOG_DIR\n              value: \"\"\n            - name: ZOO_PORT_NUMBER\n              value: \"2181\"\n            - name: ZOO_TICK_TIME\n              value: \"2000\"\n            - name: ZOO_INIT_LIMIT\n              value: \"10\"\n            - name: ZOO_SYNC_LIMIT\n              value: \"5\"\n            - name: ZOO_PRE_ALLOC_SIZE\n              value: \"65536\"\n            - name: ZOO_SNAPCOUNT\n              value: \"100000\"\n            - name: ZOO_MAX_CLIENT_CNXNS\n              value: \"60\"\n            - name: ZOO_4LW_COMMANDS_WHITELIST\n              value: \"srvr, mntr, ruok\"\n            - name: ZOO_LISTEN_ALLIPS_ENABLED\n              value: \"no\"\n            - name: ZOO_AUTOPURGE_INTERVAL\n              value: \"0\"\n            - name: ZOO_AUTOPURGE_RETAIN_COUNT\n              value: \"3\"\n            - name: ZOO_MAX_SESSION_TIMEOUT\n              value: \"40000\"\n            - name: ZOO_SERVERS\n              value: kafka-template-zookeeper-0.kafka-template-zookeeper-headless.default.svc.cluster.local:2888:3888::1 \n            - name: ZOO_ENABLE_AUTH\n              value: \"no\"\n            - name: ZOO_HEAP_SIZE\n              value: \"1024\"\n            - name: ZOO_LOG_LEVEL\n              value: \"ERROR\"\n            - name: ALLOW_ANONYMOUS_LOGIN\n              value: \"yes\"\n            - name: POD_NAME\n              valueFrom:\n                fieldRef:\n                  apiVersion: v1\n                  fieldPath: metadata.name\n          ports:\n            - name: client\n              containerPort: 2181\n            - name: follower\n              containerPort: 2888\n            - name: election\n              containerPort: 3888\n          livenessProbe:\n            exec:\n              command: ['/bin/bash', '-c', 'echo \"ruok\" | timeout 2 nc -w 2 localhost 2181 | grep imok']\n            initialDelaySeconds: 30\n            periodSeconds: 10\n            timeoutSeconds: 5\n            successThreshold: 1\n            failureThreshold: 6\n          readinessProbe:\n            exec:\n              command: ['/bin/bash', '-c', 'echo \"ruok\" | timeout 2 nc -w 2 localhost 2181 | grep imok']\n            initialDelaySeconds: 5\n            periodSeconds: 10\n            timeoutSeconds: 5\n            successThreshold: 1\n            failureThreshold: 6\n          volumeMounts:\n            - name: data\n              mountPath: /bitnami/zookeeper\n      volumes:\n  volumeClaimTemplates:\n    - metadata:\n        name: data\n        annotations:\n      spec:\n        accessModes:\n          - \"ReadWriteOnce\"\n        resources:\n          requests:\n            storage: \"8Gi\"\n---\n# Source: kafka/templates/statefulset.yaml\napiVersion: apps/v1\nkind: StatefulSet\nmetadata:\n  name: kafka-template\n  labels:\n    app.kubernetes.io/name: kafka\n    helm.sh/chart: kafka-14.1.0\n    app.kubernetes.io/instance: kafka-template\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: kafka\nspec:\n  podManagementPolicy: Parallel\n  replicas: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: kafka\n      app.kubernetes.io/instance: kafka-template\n      app.kubernetes.io/component: kafka\n  serviceName: kafka-template-headless\n  updateStrategy:\n    type: \"RollingUpdate\"\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/name: kafka\n        helm.sh/chart: kafka-14.1.0\n        app.kubernetes.io/instance: kafka-template\n        app.kubernetes.io/managed-by: Helm\n        app.kubernetes.io/component: kafka\n    spec:\n      \n      affinity:\n        podAffinity:\n          \n        podAntiAffinity:\n          preferredDuringSchedulingIgnoredDuringExecution:\n            - podAffinityTerm:\n                labelSelector:\n                  matchLabels:\n                    app.kubernetes.io/name: kafka\n                    app.kubernetes.io/instance: kafka-template\n                    app.kubernetes.io/component: kafka\n                namespaces:\n                  - \"default\"\n                topologyKey: kubernetes.io/hostname\n              weight: 1\n        nodeAffinity:\n          \n      securityContext:\n        fsGroup: 1001\n        runAsUser: 1001\n      serviceAccountName: kafka-template\n      containers:\n        - name: kafka\n          image: docker.io/bitnami/kafka:2.8.0-debian-10-r84\n          imagePullPolicy: \"IfNotPresent\"\n          command:\n            - /scripts/setup.sh\n          env:\n            - name: BITNAMI_DEBUG\n              value: \"false\"\n            - name: MY_POD_IP\n              valueFrom:\n                fieldRef:\n                  fieldPath: status.podIP\n            - name: MY_POD_NAME\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.name\n            - name: KAFKA_CFG_ZOOKEEPER_CONNECT\n              value: \"kafka-template-zookeeper\"\n            - name: KAFKA_INTER_BROKER_LISTENER_NAME\n              value: \"INTERNAL\"\n            - name: KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP\n              value: \"INTERNAL:PLAINTEXT,CLIENT:PLAINTEXT\"\n            - name: KAFKA_CFG_LISTENERS\n              value: \"INTERNAL://:9093,CLIENT://:9092\"\n            - name: KAFKA_CFG_ADVERTISED_LISTENERS\n              value: \"INTERNAL://$(MY_POD_NAME).kafka-template-headless.default.svc.cluster.local:9093,CLIENT://$(MY_POD_NAME).kafka-template-headless.default.svc.cluster.local:9092\"\n            - name: ALLOW_PLAINTEXT_LISTENER\n              value: \"yes\"\n            - name: KAFKA_VOLUME_DIR\n              value: \"/bitnami/kafka\"\n            - name: KAFKA_LOG_DIR\n              value: \"/opt/bitnami/kafka/logs\"\n            - name: KAFKA_CFG_DELETE_TOPIC_ENABLE\n              value: \"false\"\n            - name: KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE\n              value: \"true\"\n            - name: KAFKA_HEAP_OPTS\n              value: \"-Xmx1024m -Xms1024m\"\n            - name: KAFKA_CFG_LOG_FLUSH_INTERVAL_MESSAGES\n              value: \"10000\"\n            - name: KAFKA_CFG_LOG_FLUSH_INTERVAL_MS\n              value: \"1000\"\n            - name: KAFKA_CFG_LOG_RETENTION_BYTES\n              value: \"1073741824\"\n            - name: KAFKA_CFG_LOG_RETENTION_CHECK_INTERVALS_MS\n              value: \"300000\"\n            - name: KAFKA_CFG_LOG_RETENTION_HOURS\n              value: \"168\"\n            - name: KAFKA_CFG_MESSAGE_MAX_BYTES\n              value: \"1000012\"\n            - name: KAFKA_CFG_LOG_SEGMENT_BYTES\n              value: \"1073741824\"\n            - name: KAFKA_CFG_LOG_DIRS\n              value: \"/bitnami/kafka/data\"\n            - name: KAFKA_CFG_DEFAULT_REPLICATION_FACTOR\n              value: \"1\"\n            - name: KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR\n              value: \"1\"\n            - name: KAFKA_CFG_TRANSACTION_STATE_LOG_REPLICATION_FACTOR\n              value: \"1\"\n            - name: KAFKA_CFG_TRANSACTION_STATE_LOG_MIN_ISR\n              value: \"1\"\n            - name: KAFKA_CFG_NUM_IO_THREADS\n              value: \"8\"\n            - name: KAFKA_CFG_NUM_NETWORK_THREADS\n              value: \"3\"\n            - name: KAFKA_CFG_NUM_PARTITIONS\n              value: \"1\"\n            - name: KAFKA_CFG_NUM_RECOVERY_THREADS_PER_DATA_DIR\n              value: \"1\"\n            - name: KAFKA_CFG_SOCKET_RECEIVE_BUFFER_BYTES\n              value: \"102400\"\n            - name: KAFKA_CFG_SOCKET_REQUEST_MAX_BYTES\n              value: \"104857600\"\n            - name: KAFKA_CFG_SOCKET_SEND_BUFFER_BYTES\n              value: \"102400\"\n            - name: KAFKA_CFG_ZOOKEEPER_CONNECTION_TIMEOUT_MS\n              value: \"6000\"\n          ports:\n            - name: kafka-client\n              containerPort: 9092\n            - name: kafka-internal\n              containerPort: 9093\n          livenessProbe:\n            tcpSocket:\n              port: kafka-client\n            initialDelaySeconds: 10\n            timeoutSeconds: 5\n            failureThreshold: 3\n            periodSeconds: 10\n            successThreshold: 1\n          readinessProbe:\n            tcpSocket:\n              port: kafka-client\n            initialDelaySeconds: 5\n            timeoutSeconds: 5\n            failureThreshold: 6\n            periodSeconds: 10\n            successThreshold: 1\n          resources:\n            limits: {}\n            requests: {}\n          volumeMounts:\n            - name: data\n              mountPath: /bitnami/kafka\n            - name: logs\n              mountPath: /opt/bitnami/kafka/logs\n            - name: scripts\n              mountPath: /scripts/setup.sh\n              subPath: setup.sh\n      volumes:\n        - name: scripts\n          configMap:\n            name: kafka-template-scripts\n            defaultMode: 0755\n        - name: logs\n          emptyDir: {}\n  volumeClaimTemplates:\n    - metadata:\n        name: data\n      spec:\n        accessModes:\n          - \"ReadWriteOnce\"\n        resources:\n          requests:\n            storage: \"8Gi\"\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_008__local__kafka/values.yaml",
    "content": "## @section Global parameters\n## Global Docker image parameters\n## Please, note that this will override the image parameters, including dependencies, configured to use the global value\n## Current available global Docker image parameters: imageRegistry, imagePullSecrets and storageClass\n\n## @param global.imageRegistry Global Docker image registry\n## @param global.imagePullSecrets Global Docker registry secret names as an array\n## @param global.storageClass Global StorageClass for Persistent Volume(s)\n##\nglobal:\n  imageRegistry: \"\"\n  ## E.g.\n  ## imagePullSecrets:\n  ##   - myRegistryKeySecretName\n  ##\n  imagePullSecrets: []\n  storageClass: \"\"\n\n## @section Common parameters\n\n## @param nameOverride String to partially override kafka.fullname\n##\nnameOverride: \"\"\n## @param fullnameOverride String to fully override kafka.fullname\n##\nfullnameOverride: \"\"\n## @param clusterDomain Default Kubernetes cluster domain\n##\nclusterDomain: cluster.local\n## @param commonLabels Labels to add to all deployed objects\n##\ncommonLabels: {}\n## @param commonAnnotations Annotations to add to all deployed objects\n##\ncommonAnnotations: {}\n## @param extraDeploy Array of extra objects to deploy with the release\n##\nextraDeploy: []\n\n## Enable diagnostic mode in the deployment\n##\ndiagnosticMode:\n  ## @param diagnosticMode.enabled Enable diagnostic mode (all probes will be disabled and the command will be overridden)\n  ##\n  enabled: false\n  ## @param diagnosticMode.command Command to override all containers in the deployment\n  ##\n  command:\n    - sleep\n  ## @param diagnosticMode.args Args to override all containers in the deployment\n  ##\n  args:\n    - infinity\n\n## @section Kafka parameters\n\n## Bitnami Kafka image version\n## ref: https://hub.docker.com/r/bitnami/kafka/tags/\n## @param image.registry Kafka image registry\n## @param image.repository Kafka image repository\n## @param image.tag Kafka image tag (immutable tags are recommended)\n## @param image.pullPolicy Kafka image pull policy\n## @param image.pullSecrets Specify docker-registry secret names as an array\n## @param image.debug Set to true if you would like to see extra information on logs\n##\nimage:\n  registry: docker.io\n  repository: bitnami/kafka\n  tag: 2.8.0-debian-10-r84\n  ## Specify a imagePullPolicy\n  ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'\n  ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images\n  ##\n  pullPolicy: IfNotPresent\n  ## Optionally specify an array of imagePullSecrets (secrets must be manually created in the namespace)\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\n  ## Example:\n  ## pullSecrets:\n  ##   - myRegistryKeySecretName\n  ##\n  pullSecrets: []\n  ## Set to true if you would like to see extra information on logs\n  ##\n  debug: false\n## @param config Configuration file for Kafka. Auto-generated based on other parameters when not specified (see [below](\n## Specify content for server.properties\n## NOTE: This will override any KAFKA_CFG_ environment variables (including those set by the chart)\n## The server.properties is auto-generated based on other parameters when this parameter is not specified\n##\n## Example:\n## config: |-\n##   broker.id=-1\n##   listeners=PLAINTEXT://:9092\n##   advertised.listeners=PLAINTEXT://KAFKA_IP:9092\n##   num.network.threads=3\n##   num.io.threads=8\n##   socket.send.buffer.bytes=102400\n##   socket.receive.buffer.bytes=102400\n##   socket.request.max.bytes=104857600\n##   log.dirs=/bitnami/kafka/data\n##   num.partitions=1\n##   num.recovery.threads.per.data.dir=1\n##   offsets.topic.replication.factor=1\n##   transaction.state.log.replication.factor=1\n##   transaction.state.log.min.isr=1\n##   log.flush.interval.messages=10000\n##   log.flush.interval.ms=1000\n##   log.retention.hours=168\n##   log.retention.bytes=1073741824\n##   log.segment.bytes=1073741824\n##   log.retention.check.interval.ms=300000\n##   zookeeper.connect=ZOOKEEPER_SERVICE_NAME\n##   zookeeper.connection.timeout.ms=6000\n##   group.initial.rebalance.delay.ms=0\n##\nconfig: \"\"\n## @param existingConfigmap ConfigMap with Kafka Configuration\n## NOTE: This will override config AND any KAFKA_CFG_ environment variables.\n##\nexistingConfigmap: \"\"\n## @param log4j An optional log4j.properties file to overwrite the default of the Kafka brokers.\n## An optional log4j.properties file to overwrite the default of the Kafka brokers.\n## See an example log4j.properties at:\n## https://github.com/apache/kafka/blob/trunk/config/log4j.properties\n##\nlog4j: \"\"\n## @param existingLog4jConfigMap The name of an existing ConfigMap containing a log4j.properties file.\n## The name of an existing ConfigMap containing a log4j.properties file.\n## NOTE: this will override log4j.\n##\nexistingLog4jConfigMap: \"\"\n## @param heapOpts Kafka's Java Heap size\n##\nheapOpts: -Xmx1024m -Xms1024m\n## @param deleteTopicEnable Switch to enable topic deletion or not\n##\ndeleteTopicEnable: false\n## @param autoCreateTopicsEnable Switch to enable auto creation of topics. Enabling auto creation of topics not recommended for production or similar environments\n##\nautoCreateTopicsEnable: true\n## @param logFlushIntervalMessages The number of messages to accept before forcing a flush of data to disk\n##\nlogFlushIntervalMessages: _10000\n## @param logFlushIntervalMs The maximum amount of time a message can sit in a log before we force a flush\n##\nlogFlushIntervalMs: 1000\n## @param logRetentionBytes A size-based retention policy for logs\n##\nlogRetentionBytes: _1073741824\n## @param logRetentionCheckIntervalMs The interval at which log segments are checked to see if they can be deleted\n##\nlogRetentionCheckIntervalMs: 300000\n## @param logRetentionHours The minimum age of a log file to be eligible for deletion due to age\n##\nlogRetentionHours: 168\n## @param logSegmentBytes The maximum size of a log segment file. When this size is reached a new log segment will be created\n##\nlogSegmentBytes: _1073741824\n## @param logsDirs A comma separated list of directories under which to store log files\n##\nlogsDirs: /bitnami/kafka/data\n## @param maxMessageBytes The largest record batch size allowed by Kafka\n##\nmaxMessageBytes: _1000012\n## @param defaultReplicationFactor Default replication factors for automatically created topics\n##\ndefaultReplicationFactor: 1\n## @param offsetsTopicReplicationFactor The replication factor for the offsets topic\n##\noffsetsTopicReplicationFactor: 1\n## @param transactionStateLogReplicationFactor The replication factor for the transaction topic\n##\ntransactionStateLogReplicationFactor: 1\n## @param transactionStateLogMinIsr Overridden min.insync.replicas config for the transaction topic\n##\ntransactionStateLogMinIsr: 1\n## @param numIoThreads The number of threads doing disk I/O\n##\nnumIoThreads: 8\n## @param numNetworkThreads The number of threads handling network requests\n##\nnumNetworkThreads: 3\n## @param numPartitions The default number of log partitions per topic\n##\nnumPartitions: 1\n## @param numRecoveryThreadsPerDataDir The number of threads per data directory to be used for log recovery at startup and flushing at shutdown\n##\nnumRecoveryThreadsPerDataDir: 1\n## @param socketReceiveBufferBytes The receive buffer (SO_RCVBUF) used by the socket server\n##\nsocketReceiveBufferBytes: 102400\n## @param socketRequestMaxBytes The maximum size of a request that the socket server will accept (protection against OOM)\n##\nsocketRequestMaxBytes: _104857600\n## @param socketSendBufferBytes The send buffer (SO_SNDBUF) used by the socket server\n##\nsocketSendBufferBytes: 102400\n## @param zookeeperConnectionTimeoutMs Timeout in ms for connecting to Zookeeper\n##\nzookeeperConnectionTimeoutMs: 6000\n## @param command Override kafka container command\n##\ncommand:\n  - /scripts/setup.sh\n## @param args Override kafka container arguments\n##\nargs: []\n## @param extraEnvVars Extra environment variables to add to kafka pods (see [below]({KEY}\n## ref: https://github.com/bitnami/bitnami-docker-kafka#configuration\n## Example:\n## extraEnvVars:\n##   - name: KAFKA_CFG_BACKGROUND_THREADS\n##     value: \"10\"\n##\nextraEnvVars: []\n## @param extraVolumes Extra volume(s) to add to Kafka statefulset\n## Examples:\n## extraVolumes:\n##   - name: kafka-jaas\n##     secret:\n##       secretName: kafka-jaas\nextraVolumes: []\n## @param extraVolumeMounts Extra volumeMount(s) to add to Kafka containers\n## extraVolumeMounts:\n##   - name: kafka-jaas\n##     mountPath: /bitnami/kafka/config/kafka_jaas.conf\n##     subPath: kafka_jaas.conf\nextraVolumeMounts: []\n## Authentication parameteres\n## https://github.com/bitnami/bitnami-docker-kafka#security\n##\nauth:\n  ## Authentication protocol for client and inter-broker communications\n  ## This table shows the security provided on each protocol:\n  ## | Method    | Authentication                | Encryption via TLS |\n  ## | plaintext | None                          | No                 |\n  ## | tls       | None                          | Yes                |\n  ## | mtls      | Yes (two-way authentication)  | Yes                |\n  ## | sasl      | Yes (via SASL)                | No                 |\n  ## | sasl_tls  | Yes (via SASL)                | Yes                |\n  ## @param auth.clientProtocol Authentication protocol for communications with clients. Allowed protocols: `plaintext`, `tls`, `mtls`, `sasl` and `sasl_tls`\n  ## @param auth.interBrokerProtocol Authentication protocol for inter-broker communications. Allowed protocols: `plaintext`, `tls`, `mtls`, `sasl` and `sasl_tls`\n  ##\n  clientProtocol: plaintext\n  interBrokerProtocol: plaintext\n  ## SASL configuration\n  ##\n  sasl:\n    ## @param auth.sasl.mechanisms SASL mechanisms when either `auth.interBrokerProtocol` or `auth.clientProtocol` are `sasl`. Allowed types: `plain`, `scram-sha-256`, `scram-sha-512`\n    ##\n    mechanisms: plain,scram-sha-256,scram-sha-512\n    ## @param auth.sasl.interBrokerMechanism SASL mechanism for inter broker communication.\n    ##\n    interBrokerMechanism: plain\n    ## JAAS configuration for SASL authentication.\n    ##\n    jaas:\n      ## @param auth.sasl.jaas.clientUsers Kafka client user list\n      ##\n      ## clientUsers:\n      ##   - user1\n      ##   - user2\n      ##\n      clientUsers:\n        - user\n      ## @param auth.sasl.jaas.clientPasswords Kafka client passwords. This is mandatory if more than one user is specified in clientUsers\n      ##\n      ## clientPasswords:\n      ##   - password1\n      ##   - password2\"\n      ##\n      clientPasswords: []\n      ## @param auth.sasl.jaas.interBrokerUser Kafka inter broker communication user for SASL authentication\n      ##\n      interBrokerUser: admin\n      ## @param auth.sasl.jaas.interBrokerPassword Kafka inter broker communication password for SASL authentication\n      ##\n      interBrokerPassword: \"\"\n      ## @param auth.sasl.jaas.zookeeperUser Kafka Zookeeper user for SASL authentication\n      ##\n      zookeeperUser: \"\"\n      ## @param auth.sasl.jaas.zookeeperPassword Kafka Zookeeper password for SASL authentication\n      ##\n      zookeeperPassword: \"\"\n      ## @param auth.sasl.jaas.existingSecret Name of the existing secret containing credentials for clientUsers, interBrokerUser and zookeeperUser\n      ## Create this secret running the command below where SECRET_NAME is the name of the secret you want to create:\n      ##       kubectl create secret generic SECRET_NAME --from-literal=client-passwords=CLIENT_PASSWORD1,CLIENT_PASSWORD2 --from-literal=inter-broker-password=INTER_BROKER_PASSWORD --from-literal=zookeeper-password=ZOOKEEPER_PASSWORD\n      ##\n      existingSecret: \"\"\n  ## @param auth.saslMechanisms DEPRECATED: use `auth.sasl.mechanisms` instead.\n  ##\n  saslMechanisms: plain,scram-sha-256,scram-sha-512\n  ## @param auth.saslInterBrokerMechanism DEPRECATED: use `auth.sasl.interBrokerMechanism` instead.\n  ##\n  saslInterBrokerMechanism: plain\n  ## @param auth.jaas [object] DEPRECATED: use `auth.sasl.jaas` instead.\n  ## @skip auth.jaas.clientUsers\n  ##\n  jaas:\n    clientUsers:\n      - user\n    clientPasswords: []\n    interBrokerUser: admin\n    interBrokerPassword: \"\"\n    zookeeperUser: \"\"\n    zookeeperPassword: \"\"\n    existingSecret: \"\"\n  ## TLS configuration\n  ##\n  tls:\n    ## @param auth.tls.type Format to use for TLS certificates. Allowed types: `jks` and `pem`\n    ##\n    type: jks\n    ## @param auth.tls.existingSecret Name of the existing secret containing the TLS certificates for the Kafka brokers\n    ##\n    ## When using 'jks' format for certificates, the secret should contain:\n    ##  - A truststore\n    ##  - One keystore per Kafka broker you have in the cluster\n    ## Create this secret following the steps below:\n    ## 1) Generate your trustore and keystore files. Helpful script: https://raw.githubusercontent.com/confluentinc/confluent-platform-security-tools/master/kafka-generate-ssl.sh\n    ## 2) Rename your truststore to `kafka.truststore.jks`.\n    ## 3) Rename your keystores to `kafka-X.keystore.jks` where X is the ID of each Kafka broker.\n    ## 4) Run the command below where SECRET_NAME is the name of the secret you want to create:\n    ##       kubectl create secret generic SECRET_NAME --from-file=./kafka.truststore.jks --from-file=./kafka-0.keystore.jks --from-file=./kafka-1.keystore.jks ...\n    ##\n    ## When using 'pem' format for certificates, the secret should contain:\n    ##  - A public CA certificate\n    ##  - One public certificate and one private key per Kafka broker you have in the cluster\n    ## Create this secret following the steps below:\n    ## 1) Create a certificate key and signing request per Kafka broker, and sign the signing request with your CA\n    ## 2) Rename your CA file to `kafka.truststore.pem`.\n    ## 3) Rename your certificates to `kafka-X.keystore.pem` where X is the ID of each Kafka broker.\n    ## 3) Rename your keys to `kafka-X.keystore.key` where X is the ID of each Kafka broker.\n    ## 5) Run the command below where SECRET_NAME is the name of the secret you want to create:\n    ##       kubectl create secret generic SECRET_NAME --from-file=./kafka.truststore.pem --from-file=./kafka-0.keystore.pem --from-file=./kafka-0.keystore.key --from-file=./kafka-1.keystore.pem --from-file=./kafka-1.keystore.key ...\n    ##\n    existingSecret: \"\"\n    ## @param auth.tls.autoGenerated Generate automatically self-signed TLS certificates for Kafka brokers. Currently only supported if `auth.tls.type` is `pem`\n    ## Note: ignored when using 'jks' format or `auth.tls.existingSecret` is not empty\n    ##\n    autoGenerated: false\n    ## @param auth.tls.password Password to access the JKS files or PEM key when they are password-protected.\n    ##\n    password: \"\"\n    ## @param auth.tls.jksTruststoreSecret Name of the existing secret containing your truststore if truststore not existing or different from the one in the `auth.tls.existingSecret`\n    ## or is different from the one in the `auth.tls.existingSecret`.\n    ## Note: ignored when using 'pem' format for certificates .\n    ##\n    jksTruststoreSecret: \"\"\n    ## @param auth.tls.jksKeystoreSAN The secret key from the `auth.tls.existingSecret` containing the keystore with a SAN certificate\n    ## The SAN certificate in it should be issued with Subject Alternative Names for all headless services:\n    ##  - kafka-0.kafka-headless.kafka.svc.cluster.local\n    ##  - kafka-1.kafka-headless.kafka.svc.cluster.local\n    ##  - kafka-2.kafka-headless.kafka.svc.cluster.local\n    ## Note: ignored when using 'pem' format for certificates.\n    ##\n    jksKeystoreSAN: \"\"\n    ## @param auth.tls.jksTruststore The secret key from the `auth.tls.existingSecret` or `auth.tls.jksTruststoreSecret` containing the truststore\n    ## Note: ignored when using 'pem' format for certificates.\n    ##\n    jksTruststore: \"\"\n    ## @param auth.tls.endpointIdentificationAlgorithm The endpoint identification algorithm to validate server hostname using server certificate\n    ## Disable server host name verification by setting it to an empty string.\n    ## ref: https://docs.confluent.io/current/kafka/authentication_ssl.html#optional-settings\n    ##\n    endpointIdentificationAlgorithm: https\n  ## @param auth.jksSecret DEPRECATED: use `auth.tls.existingSecret` instead.\n  ##\n  jksSecret: \"\"\n  ## @param auth.jksTruststoreSecret DEPRECATED: use `auth.tls.jksTruststoreSecret` instead.\n  ##\n  jksTruststoreSecret: \"\"\n  ## @param auth.jksKeystoreSAN DEPRECATED: use `auth.tls.jksKeystoreSAN` instead.\n  ##\n  jksKeystoreSAN: \"\"\n  ## @param auth.jksTruststore DEPRECATED: use `auth.tls.jksTruststore` instead.\n  ##\n  jksTruststore: \"\"\n  ## @param auth.jksPassword DEPRECATED: use `auth.tls.password` instead.\n  ##\n  jksPassword: \"\"\n  ## @param auth.tlsEndpointIdentificationAlgorithm DEPRECATED: use `auth.tls.endpointIdentificationAlgorithm` instead.\n  ##\n  tlsEndpointIdentificationAlgorithm: https\n## @param listeners The address(es) the socket server listens on. Auto-calculated it's set to an empty array\n## When it's set to an empty array, the listeners will be configured\n## based on the authentication protocols (auth.clientProtocol and auth.interBrokerProtocol parameters)\n##\nlisteners: []\n## @param advertisedListeners The address(es) (hostname:port) the broker will advertise to producers and consumers. Auto-calculated it's set to an empty array\n## When it's set to an empty array, the advertised listeners will be configured\n## based on the authentication protocols (auth.clientProtocol and auth.interBrokerProtocol parameters)\n##\nadvertisedListeners: []\n## @param listenerSecurityProtocolMap The protocol->listener mapping. Auto-calculated it's set to nil\n## When it's nil, the listeners will be configured based on the authentication protocols (auth.clientProtocol and auth.interBrokerProtocol parameters)\n##\nlistenerSecurityProtocolMap: \"\"\n## @param allowPlaintextListener Allow to use the PLAINTEXT listener\n##\nallowPlaintextListener: true\n## @param interBrokerListenerName The listener that the brokers should communicate on\n##\ninterBrokerListenerName: INTERNAL\n\n## @section Statefulset parameters\n\n## @param replicaCount Number of Kafka nodes\n##\nreplicaCount: 1\n## @param minBrokerId Minimal broker.id value, nodes increment their `broker.id` respectively\n## Brokers increment their ID starting at this minimal value.\n## E.g., with `minBrokerId=100` and 3 nodes, IDs will be 100, 101, 102 for brokers 0, 1, and 2, respectively.\n##\nminBrokerId: 0\n## @param updateStrategy Update strategy for the stateful set\n## ref: https://kubernetes.io/docs/tutorials/stateful-application/basic-stateful-set/#updating-statefulsets\n##\nupdateStrategy: RollingUpdate\n## @param rollingUpdatePartition Partition update strategy\n## https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#partitions\n##\nrollingUpdatePartition: \"\"\n## @param hostAliases Add deployment host aliases\n## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/\n##\nhostAliases: []\n## @param podManagementPolicy StatefulSet controller supports relax its ordering guarantees while preserving its uniqueness and identity guarantees. There are two valid pod management policies: OrderedReady and Parallel\n## ref: https://kubernetes.io/docs/tutorials/stateful-application/basic-stateful-set/#pod-management-policy\n##\npodManagementPolicy: Parallel\n## @param schedulerName Name of the k8s scheduler (other than default)\n## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/\n##\nschedulerName: \"\"\n## @param podLabels Kafka pod labels\n## Ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/\n##\npodLabels: {}\n## @param podAnnotations Kafka Pod annotations\n## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/\n##\npodAnnotations: {}\n## @param priorityClassName Name of the existing priority class to be used by kafka pods\n## Ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/\n##\npriorityClassName: \"\"\n## @param podAffinityPreset Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`\n## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity\n##\npodAffinityPreset: \"\"\n## @param podAntiAffinityPreset Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`\n## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity\n##\npodAntiAffinityPreset: soft\n## Node affinity preset\n## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity\n##\nnodeAffinityPreset:\n  ## @param nodeAffinityPreset.type Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard`\n  ##\n  type: \"\"\n  ## @param nodeAffinityPreset.key Node label key to match Ignored if `affinity` is set.\n  ## E.g.\n  ## key: \"kubernetes.io/e2e-az-name\"\n  ##\n  key: \"\"\n  ## @param nodeAffinityPreset.values Node label values to match. Ignored if `affinity` is set.\n  ## E.g.\n  ## values:\n  ##   - e2e-az1\n  ##   - e2e-az2\n  ##\n  values: []\n## @param affinity Affinity for pod assignment\n## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity\n## Note: podAffinityPreset, podAntiAffinityPreset, and  nodeAffinityPreset will be ignored when it's set\n##\naffinity: {}\n## @param nodeSelector Node labels for pod assignment\n## Ref: https://kubernetes.io/docs/user-guide/node-selection/\n##\nnodeSelector: {}\n## @param tolerations Tolerations for pod assignment\n## Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/\n##\ntolerations: []\n## @param topologySpreadConstraints Topology Spread Constraints for pod assignment spread across your cluster among failure-domains. Evaluated as a template\n## Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/#spread-constraints-for-pods\n##\ntopologySpreadConstraints: {}\n## @param terminationGracePeriodSeconds Seconds the pod needs to gracefully terminate\n## ref: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#hook-handler-execution\n##\nterminationGracePeriodSeconds: \"\"\n## Kafka pods' Security Context\n## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod\n## @param podSecurityContext.enabled Enable security context for the pods\n## @param podSecurityContext.fsGroup Group ID for the filesystem used by the containers\n## @param podSecurityContext.runAsUser User ID for the service user running the pod\n##\npodSecurityContext:\n  enabled: true\n  fsGroup: 1001\n  runAsUser: 1001\n## @param containerSecurityContext Kafka containers' Security Context\n## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container\n## Example:\n##   containerSecurityContext:\n##     capabilities:\n##       drop: [\"NET_RAW\"]\n##     readOnlyRootFilesystem: true\n##\ncontainerSecurityContext: {}\n## Kafka containers' resource requests and limits\n## ref: http://kubernetes.io/docs/user-guide/compute-resources/\n## We usually recommend not to specify default resources and to leave this as a conscious\n## choice for the user. This also increases chances charts run on environments with little\n## resources, such as Minikube. If you do want to specify resources, uncomment the following\n## lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n## @param resources.limits The resources limits for Kafka containers\n## @param resources.requests The requested resources for Kafka containers\n##\nresources:\n  ## Example:\n  ## limits:\n  ##    cpu: 250m\n  ##    memory: 1Gi\n  limits: {}\n  ## Examples:\n  ## requests:\n  ##    cpu: 250m\n  ##    memory: 256Mi\n  requests: {}\n## Kafka containers' liveness probe. Evaluated as a template.\n## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes\n## @param livenessProbe.enabled Enable livenessProbe\n## @param livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe\n## @param livenessProbe.periodSeconds Period seconds for livenessProbe\n## @param livenessProbe.timeoutSeconds Timeout seconds for livenessProbe\n## @param livenessProbe.failureThreshold Failure threshold for livenessProbe\n## @param livenessProbe.successThreshold Success threshold for livenessProbe\n##\nlivenessProbe:\n  enabled: true\n  initialDelaySeconds: 10\n  timeoutSeconds: 5\n  failureThreshold: 3\n  periodSeconds: 10\n  successThreshold: 1\n## Kafka containers' readiness probe. Evaluated as a template.\n## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes\n## @param readinessProbe.enabled Enable readinessProbe\n## @param readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe\n## @param readinessProbe.periodSeconds Period seconds for readinessProbe\n## @param readinessProbe.timeoutSeconds Timeout seconds for readinessProbe\n## @param readinessProbe.failureThreshold Failure threshold for readinessProbe\n## @param readinessProbe.successThreshold Success threshold for readinessProbe\n##\nreadinessProbe:\n  enabled: true\n  initialDelaySeconds: 5\n  failureThreshold: 6\n  timeoutSeconds: 5\n  periodSeconds: 10\n  successThreshold: 1\n## @param customLivenessProbe Custom Liveness probe configuration for Kafka\n##\ncustomLivenessProbe: {}\n## @param customReadinessProbe Custom Readiness probe configuration for Kafka\n##\ncustomReadinessProbe: {}\n## Pod Disruption Budget configuration\n## The PDB will only be created if replicaCount is greater than 1\n## ref: https://kubernetes.io/docs/concepts/workloads/pods/disruptions\n##\npdb:\n  ## @param pdb.create Enable/disable a Pod Disruption Budget creation\n  ##\n  create: false\n  ## @param pdb.minAvailable Minimum number/percentage of pods that should remain scheduled\n  ##\n  minAvailable: \"\"\n  ## @param pdb.maxUnavailable Maximum number/percentage of pods that may be made unavailable\n  ##\n  maxUnavailable: 1\n## @param sidecars Attach additional sidecar containers to the Kafka pod\n## Example:\n## sidecars:\n##   - name: your-image-name\n##     image: your-image\n##     imagePullPolicy: Always\n##     ports:\n##       - name: portname\n##         containerPort: 1234\n##\nsidecars: []\n## @param initContainers Add extra init containers\n##\ninitContainers: []\n\n## @section Exposure parameters\n\n## Service parameters\n##\nservice:\n  ## @param service.type Kubernetes Service type\n  ##\n  type: ClusterIP\n  ## @param service.port Kafka port for client connections\n  ##\n  port: 9092\n  ## @param service.internalPort Kafka port for inter-broker connections\n  ##\n  internalPort: 9093\n  ## @param service.externalPort Kafka port for external connections\n  ##\n  externalPort: 9094\n  ## @param service.nodePorts [object] Specify the nodePort value for the LoadBalancer and NodePort service types.\n  ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport\n  ##\n  nodePorts:\n    client: \"\"\n    external: \"\"\n  ## @param service.loadBalancerIP loadBalancerIP for Kafka Service\n  ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer\n  ##\n  loadBalancerIP: \"\"\n  ## @param service.loadBalancerSourceRanges Address(es) that are allowed when service is LoadBalancer\n  ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service\n  ## Example:\n  ## loadBalancerSourceRanges:\n  ## - 10.10.10.0/24\n  ##\n  loadBalancerSourceRanges: []\n  ## @param service.annotations Service annotations\n  ##\n  annotations: {}\n## External Access to Kafka brokers configuration\n##\nexternalAccess:\n  ## @param externalAccess.enabled Enable Kubernetes external cluster access to Kafka brokers\n  ##\n  enabled: false\n  ## External IPs auto-discovery configuration\n  ## An init container is used to auto-detect LB IPs or node ports by querying the K8s API\n  ## Note: RBAC might be required\n  ##\n  autoDiscovery:\n    ## @param externalAccess.autoDiscovery.enabled Enable using an init container to auto-detect external IPs/ports by querying the K8s API\n    ##\n    enabled: false\n    ## Bitnami Kubectl image\n    ## ref: https://hub.docker.com/r/bitnami/kubectl/tags/\n    ## @param externalAccess.autoDiscovery.image.registry Init container auto-discovery image registry\n    ## @param externalAccess.autoDiscovery.image.repository Init container auto-discovery image repository\n    ## @param externalAccess.autoDiscovery.image.tag Init container auto-discovery image tag (immutable tags are recommended)\n    ## @param externalAccess.autoDiscovery.image.pullPolicy Init container auto-discovery image pull policy\n    ## @param externalAccess.autoDiscovery.image.pullSecrets Init container auto-discovery image pull secrets\n    ##\n    image:\n      registry: docker.io\n      repository: bitnami/kubectl\n      tag: 1.19.14-debian-10-r14\n      ## Specify a imagePullPolicy\n      ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'\n      ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images\n      ##\n      pullPolicy: IfNotPresent\n      ## Optionally specify an array of imagePullSecrets (secrets must be manually created in the namespace)\n      ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\n      ## Example:\n      ## pullSecrets:\n      ##   - myRegistryKeySecretName\n      ##\n      pullSecrets: []\n    ## Init Container resource requests and limits\n    ## ref: http://kubernetes.io/docs/user-guide/compute-resources/\n    ## We usually recommend not to specify default resources and to leave this as a conscious\n    ## choice for the user. This also increases chances charts run on environments with little\n    ## resources, such as Minikube. If you do want to specify resources, uncomment the following\n    ## lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n    ## @param externalAccess.autoDiscovery.resources.limits Init container auto-discovery resource limits\n    ## @param externalAccess.autoDiscovery.resources.requests Init container auto-discovery resource requests\n    ##\n    resources:\n      ## Example:\n      ## limits:\n      ##    cpu: 100m\n      ##    memory: 128Mi\n      limits: {}\n      ## Examples:\n      ## requests:\n      ##    cpu: 100m\n      ##    memory: 128Mi\n      requests: {}\n  ## Parameters to configure K8s service(s) used to externally access Kafka brokers\n  ## A new service per broker will be created\n  ##\n  service:\n    ## @param externalAccess.service.type Kubernetes Service type for external access. It can be NodePort or LoadBalancer\n    ##\n    type: LoadBalancer\n    ## @param externalAccess.service.port Kafka port used for external access when service type is LoadBalancer\n    ##\n    port: 9094\n    ## @param externalAccess.service.loadBalancerIPs Array of load balancer IPs for each Kafka broker. Length must be the same as replicaCount\n    ## Example:\n    ## loadBalancerIPs:\n    ##   - X.X.X.X\n    ##   - Y.Y.Y.Y\n    ##\n    loadBalancerIPs: []\n    ## @param externalAccess.service.loadBalancerSourceRanges Address(es) that are allowed when service is LoadBalancer\n    ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service\n    ## Example:\n    ## loadBalancerSourceRanges:\n    ## - 10.10.10.0/24\n    ##\n    loadBalancerSourceRanges: []\n    ## @param externalAccess.service.nodePorts Array of node ports used for each Kafka broker. Length must be the same as replicaCount\n    ## Example:\n    ## nodePorts:\n    ##   - 30001\n    ##   - 30002\n    ##\n    nodePorts: []\n    ## @param externalAccess.service.useHostIPs Use service host IPs to configure Kafka external listener when service type is NodePort\n    ##\n    useHostIPs: false\n    ## @param externalAccess.service.domain Domain or external ip used to configure Kafka external listener when service type is NodePort\n    ## If not specified, the container will try to get the kubernetes node external IP\n    ##\n    domain: \"\"\n    ## @param externalAccess.service.annotations Service annotations for external access\n    ##\n    annotations: {}\n\n## @section Persistence parameters\n\n## Persistence parameters\n##\npersistence:\n  ## @param persistence.enabled Enable Kafka data persistence using PVC, note that Zookeeper persistence is unaffected\n  ##\n  enabled: true\n  ## @param persistence.existingClaim Provide an existing `PersistentVolumeClaim`, the value is evaluated as a template\n  ## If defined, PVC must be created manually before volume will be bound\n  ## The value is evaluated as a template\n  ##\n  existingClaim: \"\"\n  ## @param persistence.storageClass PVC Storage Class for Kafka data volume\n  ## If defined, storageClassName: <storageClass>\n  ## If set to \"-\", storageClassName: \"\", which disables dynamic provisioning\n  ## If undefined (the default) or set to null, no storageClassName spec is\n  ## set, choosing the default provisioner.\n  ##\n  storageClass: \"\"\n  ## @param persistence.accessModes PV Access Mode\n  ##\n  accessModes:\n    - ReadWriteOnce\n  ## @param persistence.size PVC Storage Request for Kafka data volume\n  ##\n  size: 8Gi\n  ## @param persistence.annotations Annotations for the PVC\n  ##\n  annotations: {}\n  ## @param persistence.selector Selector to match an existing Persistent Volume for Kafka's data PVC. If set, the PVC can't have a PV dynamically provisioned for it\n  ## selector:\n  ##   matchLabels:\n  ##     app: my-app\n  selector: {}\n  ## @param persistence.mountPath Mount path of the Kafka data volume\n  ##\n  mountPath: /bitnami/kafka\n## Log Persistence parameters\n##\nlogPersistence:\n  ## @param logPersistence.enabled Enable Kafka logs persistence using PVC, note that Zookeeper persistence is unaffected\n  ##\n  enabled: false\n  ## @param logPersistence.existingClaim A manually managed Persistent Volume and Claim\n  ## If defined, PVC must be created manually before volume will be bound\n  ## The value is evaluated as a template\n  ##\n  existingClaim: \"\"\n  ## @param logPersistence.existingLogClaim PV Storage Class\n  ## If defined, storageClassName: <storageClass>\n  ## If set to \"-\", storageClassName: \"\", which disables dynamic provisioning\n  ## If undefined (the default) or set to null, no storageClassName spec is\n  ## set, choosing the default provisioner.\n  existingLogClaim: \"\"\n  ## @param logPersistence.accessModes PV Access Mode\n  ##\n  accessModes:\n    - ReadWriteOnce\n  ## @param logPersistence.size PVC Storage Request for Kafka logs volume\n  ##\n  size: 8Gi\n  ## @param logPersistence.annotations Annotations for the PVC\n  ##\n  annotations: {}\n  ## @param logPersistence.selector Selector to match an existing Persistent Volume for Kafka's log data PVC. If set, the PVC can't have a PV dynamically provisioned for it\n  ## selector:\n  ##   matchLabels:\n  ##     app: my-app\n  selector: {}\n  ## @param logPersistence.mountPath Mount path of the Kafka logs volume\n  ##\n  mountPath: /opt/bitnami/kafka/logs\n\n## @section RBAC parameters\n\n## Kafka pods ServiceAccount\n## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/\n##\nserviceAccount:\n  ## @param serviceAccount.create Enable creation of ServiceAccount for Kafka pods\n  ##\n  create: true\n  ## @param serviceAccount.name The name of the service account to use. If not set and `create` is `true`, a name is generated\n  ## If not set and create is true, a name is generated using the kafka.serviceAccountName template\n  ##\n  name: \"\"\n  ## @param serviceAccount.automountServiceAccountToken Allows auto mount of ServiceAccountToken on the serviceAccount created\n  ## Can be set to false if pods using this serviceAccount do not need to use K8s API\n  ##\n  automountServiceAccountToken: true\n## Role Based Access\n## ref: https://kubernetes.io/docs/admin/authorization/rbac/\n##\nrbac:\n  ## @param rbac.create Whether to create & use RBAC resources or not\n  ## binding Kafka ServiceAccount to a role\n  ## that allows Kafka pods querying the K8s API\n  ##\n  create: false\n\n## @section Volume Permissions parameters\n\n## Init Container parameters\n## Change the owner and group of the persistent volume(s) mountpoint(s) to 'runAsUser:fsGroup' on each component\n## values from the securityContext section of the component\n##\nvolumePermissions:\n  ## @param volumePermissions.enabled Enable init container that changes the owner and group of the persistent volume(s) mountpoint to `runAsUser:fsGroup`\n  ##\n  enabled: false\n  ## The security context for the volumePermissions init container\n  ## @param volumePermissions.securityContext.runAsUser User ID for the container\n  ##\n  securityContext:\n    runAsUser: 0\n  ## @param volumePermissions.image.registry Init container volume-permissions image registry\n  ## @param volumePermissions.image.repository Init container volume-permissions image name\n  ## @param volumePermissions.image.tag Init container volume-permissions image tag\n  ## @param volumePermissions.image.pullPolicy Init container volume-permissions image pull policy\n  ## @param volumePermissions.image.pullSecrets Specify docker-registry secret names as an array\n  ##\n  image:\n    registry: docker.io\n    repository: bitnami/bitnami-shell\n    tag: 10-debian-10-r173\n    ## Specify a imagePullPolicy\n    ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'\n    ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images\n    ##\n    pullPolicy: Always\n    ## Optionally specify an array of imagePullSecrets (secrets must be manually created in the namespace)\n    ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\n    ## Example:\n    ## pullSecrets:\n    ##   - myRegistryKeySecretName\n    ##\n    pullSecrets: []\n  ## Init Container resource requests and limits\n  ## ref: http://kubernetes.io/docs/user-guide/compute-resources/\n  ## We usually recommend not to specify default resources and to leave this as a conscious\n  ## choice for the user. This also increases chances charts run on environments with little\n  ## resources, such as Minikube. If you do want to specify resources, uncomment the following\n  ## lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  ## @param volumePermissions.resources.limits Init container volume-permissions resource  limits\n  ## @param volumePermissions.resources.requests Init container volume-permissions resource  requests\n  ##\n  resources:\n    ## Example:\n    ## limits:\n    ##    cpu: 100m\n    ##    memory: 128Mi\n    limits: {}\n    ## Examples:\n    ## requests:\n    ##    cpu: 100m\n    ##    memory: 128Mi\n    requests: {}\n\n## @section Metrics parameters\n\n## Prometheus Exporters / Metrics\n##\nmetrics:\n  ## Prometheus Kafka Exporter: exposes complimentary metrics to JMX Exporter\n  ##\n  kafka:\n    ## @param metrics.kafka.enabled Whether or not to create a standalone Kafka exporter to expose Kafka metrics\n    ##\n    enabled: false\n    ## Bitnami Kafka exporter image\n    ## ref: https://hub.docker.com/r/bitnami/kafka-exporter/tags/\n    ## @param metrics.kafka.image.registry Kafka exporter image registry\n    ## @param metrics.kafka.image.repository Kafka exporter image repository\n    ## @param metrics.kafka.image.tag Kafka exporter image tag (immutable tags are recommended)\n    ## @param metrics.kafka.image.pullPolicy Kafka exporter image pull policy\n    ## @param metrics.kafka.image.pullSecrets Specify docker-registry secret names as an array\n    ##\n    image:\n      registry: docker.io\n      repository: bitnami/kafka-exporter\n      tag: 1.3.1-debian-10-r88\n      ## Specify a imagePullPolicy\n      ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'\n      ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images\n      ##\n      pullPolicy: IfNotPresent\n      ## Optionally specify an array of imagePullSecrets (secrets must be manually created in the namespace)\n      ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\n      ## Example:\n      ## pullSecrets:\n      ##   - myRegistryKeySecretName\n      ##\n      pullSecrets: []\n    ## @param metrics.kafka.schedulerName Name of the k8s scheduler (other than default) for Kafka Exporter\n    ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/\n    ##\n    schedulerName: \"\"\n    ## @param metrics.kafka.extraFlags Extra flags to be passed to Kafka exporter\n    ## Example:\n    ## extraFlags:\n    ##   tls.insecure-skip-tls-verify: \"\"\n    ##   web.telemetry-path: \"/metrics\"\n    ##\n    extraFlags: {}\n    ## @param metrics.kafka.certificatesSecret Name of the existing secret containing the optional certificate and key files\n    ## for Kafka Exporter client authentication\n    ##\n    certificatesSecret: \"\"\n    ## @param metrics.kafka.tlsCert The secret key from the certificatesSecret if 'client-cert' key different from the default (cert-file)\n    ##\n    tlsCert: cert-file\n    ## @param metrics.kafka.tlsKey The secret key from the certificatesSecret if 'client-key' key different from the default (key-file)\n    ##\n    tlsKey: key-file\n    ## @param metrics.kafka.tlsCaSecret Name of the existing secret containing the optional ca certificate for Kafka Exporter client authentication\n    ##\n    tlsCaSecret: \"\"\n    ## @param metrics.kafka.tlsCaCert The secret key from the certificatesSecret or tlsCaSecret if 'ca-cert' key different from the default (ca-file)\n    ##\n    tlsCaCert: ca-file\n    ## Prometheus Kafka Exporter' resource requests and limits\n    ## ref: http://kubernetes.io/docs/user-guide/compute-resources/\n    ## We usually recommend not to specify default resources and to leave this as a conscious\n    ## choice for the user. This also increases chances charts run on environments with little\n    ## resources, such as Minikube. If you do want to specify resources, uncomment the following\n    ## lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n    ## @param metrics.kafka.resources.limits Kafka Exporter container resource limits\n    ## @param metrics.kafka.resources.requests Kafka Exporter container resource requests\n    ##\n    resources:\n      ## Example:\n      ## limits:\n      ##    cpu: 100m\n      ##    memory: 128Mi\n      limits: {}\n      ## Examples:\n      ## requests:\n      ##    cpu: 100m\n      ##    memory: 128Mi\n      requests: {}\n    ## @param metrics.kafka.affinity Affinity for Kafka Exporter pod assignment\n    ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity\n    ## Note: podAffinityPreset, podAntiAffinityPreset, and  nodeAffinityPreset will be ignored when it's set\n    ##\n    affinity: {}\n    ## @param metrics.kafka.nodeSelector Node labels for Kafka Exporter pod assignment\n    ## Ref: https://kubernetes.io/docs/user-guide/node-selection/\n    ##\n    nodeSelector: {}\n    ## @param metrics.kafka.tolerations Tolerations for Kafka Exporter pod assignment\n    ## Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/\n    ##\n    tolerations: []\n    ## @param metrics.kafka.initContainers Add init containers to the Kafka exporter pods\n    ## Example:\n    ## initContainers:\n    ##   - name: your-image-name\n    ##     image: your-image\n    ##     imagePullPolicy: Always\n    ##     ports:\n    ##       - name: portname\n    ##         containerPort: 1234\n    ##\n    initContainers: []\n    ## Service configuration\n    ##\n    service:\n      ## @param metrics.kafka.service.type Kubernetes service type (`ClusterIP`, `NodePort` or `LoadBalancer`) for Kafka Exporter\n      ##\n      type: ClusterIP\n      ## @param metrics.kafka.service.port Kafka Exporter Prometheus port\n      ##\n      port: 9308\n      ## @param metrics.kafka.service.nodePort Kubernetes HTTP node port\n      ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport\n      ##\n      nodePort: \"\"\n      ## @param metrics.kafka.service.loadBalancerIP loadBalancerIP if service type is `LoadBalancer`\n      ## Set the LoadBalancer service type to internal only\n      ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer\n      ##\n      loadBalancerIP: \"\"\n      ## @param metrics.kafka.service.loadBalancerSourceRanges Load Balancer sources\n      ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service\n      ## Example:\n      ## loadBalancerSourceRanges:\n      ## - 10.10.10.0/24\n      ##\n      loadBalancerSourceRanges: []\n      ## @param metrics.kafka.service.clusterIP Static clusterIP or None for headless services\n      ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#choosing-your-own-ip-address\n      ##\n      clusterIP: \"\"\n      ## @param metrics.kafka.service.annotations [object] Annotations for the Kafka Exporter Prometheus metrics service\n      ##\n      annotations:\n        prometheus.io/scrape: \"true\"\n        prometheus.io/port: \"{{ .Values.metrics.kafka.service.port }}\"\n        prometheus.io/path: \"/metrics\"\n  ## Prometheus JMX Exporter: exposes the majority of Kafkas metrics\n  ##\n  jmx:\n    ## @param metrics.jmx.enabled Whether or not to expose JMX metrics to Prometheus\n    ##\n    enabled: false\n    ## Bitnami JMX exporter image\n    ## ref: https://hub.docker.com/r/bitnami/jmx-exporter/tags/\n    ## @param metrics.jmx.image.registry JMX exporter image registry\n    ## @param metrics.jmx.image.repository JMX exporter image repository\n    ## @param metrics.jmx.image.tag JMX exporter image tag (immutable tags are recommended)\n    ## @param metrics.jmx.image.pullPolicy JMX exporter image pull policy\n    ## @param metrics.jmx.image.pullSecrets Specify docker-registry secret names as an array\n    ##\n    image:\n      registry: docker.io\n      repository: bitnami/jmx-exporter\n      tag: 0.16.1-debian-10-r41\n      ## Specify a imagePullPolicy\n      ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'\n      ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images\n      ##\n      pullPolicy: IfNotPresent\n      ## Optionally specify an array of imagePullSecrets (secrets must be manually created in the namespace)\n      ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\n      ## Example:\n      ## pullSecrets:\n      ##   - myRegistryKeySecretName\n      ##\n      pullSecrets: []\n    ## Prometheus JMX Exporter' resource requests and limits\n    ## ref: http://kubernetes.io/docs/user-guide/compute-resources/\n    ## We usually recommend not to specify default resources and to leave this as a conscious\n    ## choice for the user. This also increases chances charts run on environments with little\n    ## resources, such as Minikube. If you do want to specify resources, uncomment the following\n    ## lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n    ## @param metrics.jmx.resources.limits JMX Exporter container resource limits\n    ## @param metrics.jmx.resources.requests JMX Exporter container resource requests\n    ##\n    resources:\n      ## Example:\n      ## limits:\n      ##    cpu: 100m\n      ##    memory: 128Mi\n      limits: {}\n      ## Examples:\n      ## requests:\n      ##    cpu: 100m\n      ##    memory: 128Mi\n      requests: {}\n    ## Service configuration\n    ##\n    service:\n      ## @param metrics.jmx.service.type Kubernetes service type (`ClusterIP`, `NodePort` or `LoadBalancer`) for JMX Exporter\n      ##\n      type: ClusterIP\n      ## @param metrics.jmx.service.port JMX Exporter Prometheus port\n      ##\n      port: 5556\n      ## @param metrics.jmx.service.nodePort Kubernetes HTTP node port\n      ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport\n      ##\n      nodePort: \"\"\n      ## @param metrics.jmx.service.loadBalancerIP loadBalancerIP if service type is `LoadBalancer`\n      ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer\n      ##\n      loadBalancerIP: \"\"\n      ## @param metrics.jmx.service.loadBalancerSourceRanges Load Balancer sources\n      ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service\n      ## Example:\n      ## loadBalancerSourceRanges:\n      ## - 10.10.10.0/24\n      ##\n      loadBalancerSourceRanges: []\n      ## @param metrics.jmx.service.clusterIP Static clusterIP or None for headless services\n      ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#choosing-your-own-ip-address\n      ##\n      clusterIP: \"\"\n      ## @param metrics.jmx.service.annotations [object] Annotations for the JMX Exporter Prometheus metrics service\n      ##\n      annotations:\n        prometheus.io/scrape: \"true\"\n        prometheus.io/port: \"{{ .Values.metrics.jmx.service.port }}\"\n        prometheus.io/path: \"/\"\n    ## @param metrics.jmx.whitelistObjectNames Allows setting which JMX objects you want to expose to via JMX stats to JMX Exporter\n    ## Only whitelisted values will be exposed via JMX Exporter. They must also be exposed via Rules. To expose all metrics\n    ## (warning its crazy excessive and they aren't formatted in a prometheus style) (1) `whitelistObjectNames: []`\n    ## (2) commented out above `overrideConfig`.\n    ##\n    whitelistObjectNames:\n      - kafka.controller:*\n      - kafka.server:*\n      - java.lang:*\n      - kafka.network:*\n      - kafka.log:*\n    ## @param metrics.jmx.config [string] Configuration file for JMX exporter\n    ## Specify content for jmx-kafka-prometheus.yml. Evaluated as a template\n    ##\n    ## Credits to the incubator/kafka chart for the JMX configuration.\n    ## https://github.com/helm/charts/tree/master/incubator/kafka\n    ##\n    config: |-\n      jmxUrl: service:jmx:rmi:///jndi/rmi://127.0.0.1:5555/jmxrmi\n      lowercaseOutputName: true\n      lowercaseOutputLabelNames: true\n      ssl: false\n      {{- if .Values.metrics.jmx.whitelistObjectNames }}\n      whitelistObjectNames: [\"{{ join \"\\\",\\\"\" .Values.metrics.jmx.whitelistObjectNames }}\"]\n      {{- end }}\n    ## @param metrics.jmx.existingConfigmap Name of existing ConfigMap with JMX exporter configuration\n    ## NOTE: This will override metrics.jmx.config\n    ##\n    existingConfigmap: \"\"\n  ## Prometheus Operator ServiceMonitor configuration\n  ##\n  serviceMonitor:\n    ## @param metrics.serviceMonitor.enabled if `true`, creates a Prometheus Operator ServiceMonitor (requires `metrics.kafka.enabled` or `metrics.jmx.enabled` to be `true`)\n    ##\n    enabled: false\n    ## @param metrics.serviceMonitor.namespace Namespace in which Prometheus is running\n    ##\n    namespace: \"\"\n    ## @param metrics.serviceMonitor.interval Interval at which metrics should be scraped\n    ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint\n    ##\n    interval: \"\"\n    ## @param metrics.serviceMonitor.scrapeTimeout Timeout after which the scrape is ended\n    ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint\n    ##\n    scrapeTimeout: \"\"\n    ## @param metrics.serviceMonitor.selector ServiceMonitor selector labels\n    ## ref: https://github.com/bitnami/charts/tree/master/bitnami/prometheus-operator#prometheus-configuration\n    ## e.g:\n    ## selector:\n    ##   prometheus: my-prometheus\n    ##\n    selector: {}\n    ## @param metrics.serviceMonitor.relabelings Relabel configuration for the metrics\n    ##\n    relabelings: []\n    ## @param metrics.serviceMonitor.metricRelabelings MetricRelabelConfigs to apply to samples before ingestion\n    ##\n    metricRelabelings: []\n\n## @section Kafka provisioning parameters\n\n## Kafka provisioning\n##\nprovisioning:\n  ## @param provisioning.enabled Enable kafka provisioning Job\n  ##\n  enabled: false\n  ## @param provisioning.numPartitions Default number of partitions for topics when unspecified.\n  numPartitions: 1\n  ## @param provisioning.replicationFactor Default replication factor for topics when unspecified.\n  replicationFactor: 1\n  ## @param provisioning.schedulerName Name of the k8s scheduler (other than default) for kafka provisioning\n  ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/\n  ##\n  schedulerName: \"\"\n  ## @param provisioning.podAnnotations Provisioning Pod annotations.\n  ##\n  podAnnotations: {}\n  ## We usually recommend not to specify default resources and to leave this as a conscious\n  ## choice for the user. This also increases chances charts run on environments with little\n  ## resources, such as Minikube. If you do want to specify resources, uncomment the following\n  ## lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  ## @param provisioning.resources.limits The resources limits for the container\n  ## @param provisioning.resources.requests The requested resources for the container\n  ##\n  resources:\n    ## Example:\n    ## limits:\n    ##    cpu: 250m\n    ##    memory: 1Gi\n    limits: {}\n    ## Examples:\n    ## requests:\n    ##    cpu: 250m\n    ##    memory: 256Mi\n    requests: {}\n  ## @param provisioning.command Override provisioning container command\n  ##\n  command: []\n  ## @param provisioning.args Override provisioning container arguments\n  ##\n  args: []\n  ## @param provisioning.topics Kafka provisioning topics\n  ## - name: topic-name\n  ##   partitions: 1\n  ##   replicationFactor: 1\n  ##   ## https://kafka.apache.org/documentation/#topicconfigs\n  ##   config:\n  ##     max.message.bytes: 64000\n  ##     flush.messages: 1\n  ##\n  topics: []\n\n## @section Zookeeper chart parameters\n\n## Zookeeper chart configuration\n## https://github.com/bitnami/charts/blob/master/bitnami/zookeeper/values.yaml\n##\nzookeeper:\n  ## @param zookeeper.enabled Switch to enable or disable the Zookeeper helm chart\n  ##\n  enabled: true\n  auth:\n    ## @param zookeeper.auth.enabled Enable Zookeeper auth\n    ##\n    enabled: false\n    ## @param zookeeper.auth.clientUser User that will use Zookeeper clients to auth\n    ##\n    clientUser: \"\"\n    ## @param zookeeper.auth.clientPassword Password that will use Zookeeper clients to auth\n    ##\n    clientPassword: \"\"\n    ## @param zookeeper.auth.serverUsers Comma, semicolon or whitespace separated list of user to be created. Specify them as a string, for example: \"user1,user2,admin\"\n    ##\n    serverUsers: \"\"\n    ## @param zookeeper.auth.serverPasswords Comma, semicolon or whitespace separated list of passwords to assign to users when created. Specify them as a string, for example: \"pass4user1, pass4user2, pass4admin\"\n    ##\n    serverPasswords: \"\"\n## This value is only used when zookeeper.enabled is set to false\n##\nexternalZookeeper:\n  ## @param externalZookeeper.servers Server or list of external Zookeeper servers to use\n  ##\n  servers: []\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_009__local__kafdrop/ReadMe.md",
    "content": "[kafdrop](https://github.com/obsidiandynamics/kafdrop)\n\n```bash\n$ git clone https://github.com/obsidiandynamics/kafdrop\n$ cp -rfp kafdrop/chart ../\n$ rm -rf kafdrop\n```\n\n- Deploy\n\n```bash\n$ helm upgrade --install -f chart/values.yaml kafdrop-release chart/.           \nRelease \"kafdrop-release\" does not exist. Installing it now.\nNAME: kafdrop-release\nLAST DEPLOYED: Fri Sep 17 13:43:33 2021\nNAMESPACE: default\nSTATUS: deployed\nREVISION: 1\nTEST SUITE: None\nNOTES:\n1. Get the application URL by running these commands:\n  export NODE_PORT=$(kubectl get --namespace default -o jsonpath=\"{.spec.ports[0].nodePort}\" services kafdrop-release)\n  export NODE_IP=$(kubectl get nodes --namespace default -o jsonpath=\"{.items[0].status.addresses[0].address}\")\n  echo http://$NODE_IP:$NODE_PORT\n\n$ kubectl get pods                                    \nNAME                              READY   STATUS    RESTARTS   AGE\nkafdrop-release-976f5c9cb-wxkls   1/1     Running   0          4m53s\nkafka-release-0                   1/1     Running   5          39h\nkafka-release-zookeeper-0         1/1     Running   0          39h\n```\n\n- Generate manifests as well\n\n```bash\n$ helm template kafdrop-template ./chart/ -f ./chart/values.yaml > kafdrop-manifests.yaml\n```\n\n- Following is the scrrenshot\n\n![](.images/kafdrop.png)\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_009__local__kafdrop/kafdrop-manifests.yaml",
    "content": "---\n# Source: kafdrop/templates/service.yaml\napiVersion: v1\nkind: Service\nmetadata:\n  name: kafdrop-template\n  labels:\n    app.kubernetes.io/name: kafdrop\n    helm.sh/chart: kafdrop-0.1.0\n    app.kubernetes.io/instance: kafdrop-template\n    app.kubernetes.io/managed-by: Helm\nspec:\n  type: NodePort\n  ports:\n    - port: 9000\n      targetPort: http\n      protocol: TCP\n      name: http\n\n      nodePort: 30900\n\n  selector:\n    app.kubernetes.io/name: kafdrop\n    app.kubernetes.io/instance: kafdrop-template\n---\n# Source: kafdrop/templates/deployment.yaml\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: kafdrop-template\n  labels:\n    app.kubernetes.io/name: kafdrop\n    helm.sh/chart: kafdrop-0.1.0\n    app.kubernetes.io/instance: kafdrop-template\n    app.kubernetes.io/managed-by: Helm\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: kafdrop\n      app.kubernetes.io/instance: kafdrop-template\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/name: kafdrop\n        app.kubernetes.io/instance: kafdrop-template\n      annotations:        \n    spec:\n      containers:\n        - name: kafdrop\n          image: \"obsidiandynamics/kafdrop:latest\"\n          imagePullPolicy: Always\n          env:\n          - name: KAFKA_BROKERCONNECT\n            value: \"kafka-release-0.kafka-release-headless.default.svc.cluster.local:9092\"\n          - name: KAFKA_PROPERTIES\n            value: \"\"\n          - name: KAFKA_TRUSTSTORE\n            value: \"\"\n          - name: KAFKA_KEYSTORE\n            value: \"\"\n          - name: JVM_OPTS\n            value: \"\"\n          - name: JMX_PORT\n            value: \"8686\"\n          - name: HOST\n            value: \"\"\n          - name: SERVER_SERVLET_CONTEXTPATH\n            value: \"\"\n          - name: KAFKA_PROPERTIES_FILE\n            value: \"kafka.properties\"\n          - name: KAFKA_TRUSTSTORE_FILE\n            value: \"kafka.truststore.jks\"\n          - name: KAFKA_KEYSTORE_FILE\n            value: \"kafka.keystore.jks\"\n          - name: SERVER_PORT\n            value: \"9000\"\n          - name: CMD_ARGS\n            value: \"\"\n\n          ports:\n            - name: http\n              containerPort: 9000\n              protocol: TCP\n          livenessProbe:\n            httpGet:\n              path: \"/actuator/health\"\n              port: http\n            initialDelaySeconds: 180\n            periodSeconds: 30\n            timeoutSeconds: 10\n          readinessProbe:\n            httpGet:\n              path: \"/actuator/health\"\n              port: http\n            initialDelaySeconds: 20\n            periodSeconds: 5\n            timeoutSeconds: 10\n          resources:\n            requests:\n              cpu: 1m\n              memory: 128Mi\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_009__local__kafdrop/values.yaml",
    "content": "replicaCount: 1\n\nimage:\n  repository: obsidiandynamics/kafdrop\n  tag: latest\n  pullPolicy: Always\n\nkafka:\n  brokerConnect: kafka-release-0.kafka-release-headless.default.svc.cluster.local:9092\n  properties: \"\"\n  truststore: \"\"\n  keystore: \"\"\n  propertiesFile: \"kafka.properties\"\n  truststoreFile: \"kafka.truststore.jks\"\n  keystoreFile: \"kafka.keystore.jks\"\n\nhost:\n\njvm:\n  opts: \"\"\njmx:\n  port: 8686\n\nnameOverride: \"\"\nfullnameOverride: \"\"\n\ncmdArgs: \"\"\n\nserver:\n  port: 9000\n  servlet:\n    contextPath: /\n\nservice:\n  annotations: {}\n  type: NodePort\n  port: 9000\n  nodePort: 30900\n\ningress:\n  enabled: false\n  annotations: {}\n  path: /\n  hosts: []\n  tls: []\n\nresources:\n  # limits:\n  #  cpu: 100m\n  #  memory: 128Mi\n  requests:\n    cpu: 1m\n    memory: 128Mi\n\nnodeSelector: {}\n\ntolerations: []\n\naffinity: {}\n\npodAnnotations: {}\n\nmountProtoDesc:\n  enabled: false\n  hostPath:"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_010__aws__deploy_traefik_kops_k8s_helm/ReadMe.md",
    "content": "[docs](https://github.com/traefik/traefik-helm-chart)\n\n\n- Version\n\n```bash\n$ helm version                \nversion.BuildInfo{Version:\"v3.5.4\", GitCommit:\"1b5edb69df3d3a08df77c9902dc17af864ff05d1\", GitTreeState:\"dirty\", GoVersion:\"go1.16.3\"}\n```\n\n- Pull the repo\n\n```bash\n$ git clone https://github.com/traefik/traefik-helm-chart.git\n$ ls                      \nReadMe.md          traefik-helm-chart\n\n# Create the CRDs\n$ kubectl apply -f traefik-helm-chart/traefik/crds/.                     \nWarning: apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition\ncustomresourcedefinition.apiextensions.k8s.io/ingressroutes.traefik.containo.us created\ncustomresourcedefinition.apiextensions.k8s.io/ingressroutetcps.traefik.containo.us created\ncustomresourcedefinition.apiextensions.k8s.io/ingressrouteudps.traefik.containo.us created\ncustomresourcedefinition.apiextensions.k8s.io/middlewares.traefik.containo.us created\ncustomresourcedefinition.apiextensions.k8s.io/serverstransports.traefik.containo.us created\ncustomresourcedefinition.apiextensions.k8s.io/tlsoptions.traefik.containo.us created\ncustomresourcedefinition.apiextensions.k8s.io/tlsstores.traefik.containo.us created\ncustomresourcedefinition.apiextensions.k8s.io/traefikservices.traefik.containo.us created\n\n\n$ cd traefik-helm-chart\n$ helm repo update                                                                                         \nHang tight while we grab the latest from your chart repositories...\n...Successfully got an update from the \"jetstack\" chart repository\n...Successfully got an update from the \"traefik\" chart repository\n...Successfully got an update from the \"datadog\" chart repository\n...Successfully got an update from the \"stable\" chart repository\n...Successfully got an update from the \"bitnami\" chart repository\nUpdate Complete. ⎈Happy Helming!⎈\n\n$ helm template traefik-helm-template -f traefik/values.yaml traefik/traefik > ../traefik-resources.yaml\n$ cp -rfp traefik/values.yaml ../                         \n$ cd ..\n$ rm -rf traefik-helm-chart    \n```\n\n- Get nodes\n\n```bash\n$ kubectl get nodes           \nNAME                            STATUS   ROLES    AGE   VERSION\nip-172-20-38-163.ec2.internal   Ready    master   30m   v1.19.11\nip-172-20-62-14.ec2.internal    Ready    node     27m   v1.19.11\n```\n\n- Try deploying traefik. Looks like CRDs didn't get installed. \n```\n$ kubectl apply -f traefik-resources.yaml\nserviceaccount/traefik-helm-template-traefik unchanged\nclusterrole.rbac.authorization.k8s.io/traefik-helm-template-traefik unchanged\nclusterrolebinding.rbac.authorization.k8s.io/traefik-helm-template-traefik unchanged\ndeployment.apps/traefik-helm-template-traefik configured\nservice/traefik-helm-template-traefik unchanged\nerror: unable to recognize \"traefik-resources.yaml\": no matches for kind \"IngressRoute\" in version \"traefik.containo.us/v1alpha1\"\n\n$ git clone https://github.com/traefik/traefik-helm-chart.git\n$ ls                      \nReadMe.md          traefik-helm-chart\n\n# Create the CRDs\n$ kubectl apply -f traefik-helm-chart/traefik/crds/.                     \nWarning: apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition\ncustomresourcedefinition.apiextensions.k8s.io/ingressroutes.traefik.containo.us created\ncustomresourcedefinition.apiextensions.k8s.io/ingressroutetcps.traefik.containo.us created\ncustomresourcedefinition.apiextensions.k8s.io/ingressrouteudps.traefik.containo.us created\ncustomresourcedefinition.apiextensions.k8s.io/middlewares.traefik.containo.us created\ncustomresourcedefinition.apiextensions.k8s.io/serverstransports.traefik.containo.us created\ncustomresourcedefinition.apiextensions.k8s.io/tlsoptions.traefik.containo.us created\ncustomresourcedefinition.apiextensions.k8s.io/tlsstores.traefik.containo.us created\ncustomresourcedefinition.apiextensions.k8s.io/traefikservices.traefik.containo.us created\n\n$ rm -rf traefik-helm-chart                 \n\n\n$ kubectl apply -f traefik-resources.yaml            \nserviceaccount/traefik-helm-template-traefik unchanged\nclusterrole.rbac.authorization.k8s.io/traefik-helm-template-traefik unchanged\nclusterrolebinding.rbac.authorization.k8s.io/traefik-helm-template-traefik unchanged\ndeployment.apps/traefik-helm-template-traefik configured\nservice/traefik-helm-template-traefik unchanged\ningressroute.traefik.containo.us/traefik-helm-template-traefik-dashboard created\n\n\n$ kubectl get svc                        \nNAME                            TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE\nkubernetes                      ClusterIP      100.64.0.1      <none>        443/TCP                      37m\ntraefik-helm-template-traefik   LoadBalancer   100.66.189.36   <pending>     80:32127/TCP,443:30552/TCP   6m44s\n```\n\n- Its in Pending state duo to the following error\n\n```bash\n$ kubectl describe svc traefik-helm-template-traefik                            \n.\n.\nError syncing load balancer: failed to ensure load balancer: AccessDenied\n```\n\n- Trying again with correct permissions.\n\n```bash\n$ kubectl get svc\nNAME                            TYPE           CLUSTER-IP      EXTERNAL-IP                                                              PORT(S)                      AGE\nkubernetes                      ClusterIP      100.64.0.1      <none>                                                                   443/TCP                      16m\ntraefik-helm-template-traefik   LoadBalancer   100.65.168.87   a93259cfe3e6840489e86a2b80b5f26d-546301547.us-east-1.elb.amazonaws.com   80:32444/TCP,443:32481/TCP   7m38s\n```\n\nYou will get the following Load Balancer on AWS\n\n![](.images/aws_load_balancer.png)\n\n\nNow we are getting 404 when we hit the load balancer.\n\n```bash\n$ curl -v a93259cfe3e6840489e86a2b80b5f26d-546301547.us-east-1.elb.amazonaws.com                                                                                                                                  \n*   Trying 54.175.76.116...\n* TCP_NODELAY set\n* Connected to a93259cfe3e6840489e86a2b80b5f26d-546301547.us-east-1.elb.amazonaws.com (54.175.76.116) port 80 (#0)\n> GET / HTTP/1.1\n> Host: a93259cfe3e6840489e86a2b80b5f26d-546301547.us-east-1.elb.amazonaws.com\n> User-Agent: curl/7.64.1\n> Accept: */*\n> \n< HTTP/1.1 404 Not Found\n< Content-Type: text/plain; charset=utf-8\n< X-Content-Type-Options: nosniff\n< Date: Thu, 10 Jun 2021 05:35:38 GMT\n< Content-Length: 19\n< \n404 page not found\n* Connection #0 to host a93259cfe3e6840489e86a2b80b5f26d-546301547.us-east-1.elb.amazonaws.com left intact\n* Closing connection 0\n```\n\nIn the next tasks we will try deploying some app behind load balancer and test routes."
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_010__aws__deploy_traefik_kops_k8s_helm/traefik-resources.yaml",
    "content": "---\n# Source: traefik/templates/rbac/serviceaccount.yaml\nkind: ServiceAccount\napiVersion: v1\nmetadata:\n  name: traefik-helm-template-traefik\n  labels:\n    app.kubernetes.io/name: traefik\n    helm.sh/chart: traefik-9.19.1\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/instance: traefik-helm-template\n  annotations:\n---\n# Source: traefik/templates/rbac/clusterrole.yaml\nkind: ClusterRole\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: traefik-helm-template-traefik\n  labels:\n    app.kubernetes.io/name: traefik\n    helm.sh/chart: traefik-9.19.1\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/instance: traefik-helm-template\nrules:\n  - apiGroups:\n      - \"\"\n    resources:\n      - services\n      - endpoints\n      - secrets\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - extensions\n      - networking.k8s.io\n    resources:\n      - ingresses\n      - ingressclasses\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - extensions\n      - networking.k8s.io\n    resources:\n      - ingresses/status\n    verbs:\n      - update\n  - apiGroups:\n      - traefik.containo.us\n    resources:\n      - ingressroutes\n      - ingressroutetcps\n      - ingressrouteudps\n      - middlewares\n      - tlsoptions\n      - tlsstores\n      - traefikservices\n      - serverstransports\n    verbs:\n      - get\n      - list\n      - watch\n---\n# Source: traefik/templates/rbac/clusterrolebinding.yaml\nkind: ClusterRoleBinding\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: traefik-helm-template-traefik\n  labels:\n    app.kubernetes.io/name: traefik\n    helm.sh/chart: traefik-9.19.1\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/instance: traefik-helm-template\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: traefik-helm-template-traefik\nsubjects:\n  - kind: ServiceAccount\n    name: traefik-helm-template-traefik\n    namespace: default\n---\n# Source: traefik/templates/deployment.yaml\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: traefik-helm-template-traefik\n  labels:\n    app.kubernetes.io/name: traefik\n    helm.sh/chart: traefik-9.19.1\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/instance: traefik-helm-template\n  annotations:\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: traefik\n      app.kubernetes.io/instance: traefik-helm-template\n  strategy:\n    type: RollingUpdate\n    rollingUpdate:\n      maxSurge: 1\n      maxUnavailable: 1\n  template: \n    metadata:\n      annotations:\n      labels:\n        app.kubernetes.io/name: traefik\n        helm.sh/chart: traefik-9.19.1\n        app.kubernetes.io/managed-by: Helm\n        app.kubernetes.io/instance: traefik-helm-template\n    spec:\n      serviceAccountName: traefik-helm-template-traefik\n      terminationGracePeriodSeconds: 60\n      hostNetwork: false\n      containers:\n      - image: \"traefik:2.4.8\"\n        imagePullPolicy: IfNotPresent\n        name: traefik-helm-template-traefik\n        resources:\n        readinessProbe:\n          httpGet:\n            path: /ping\n            port: 9000\n          failureThreshold: 1\n          initialDelaySeconds: 10\n          periodSeconds: 10\n          successThreshold: 1\n          timeoutSeconds: 2\n        livenessProbe:\n          httpGet:\n            path: /ping\n            port: 9000\n          failureThreshold: 3\n          initialDelaySeconds: 10\n          periodSeconds: 10\n          successThreshold: 1\n          timeoutSeconds: 2\n        ports:\n        - name: \"traefik\"\n          containerPort: 9000\n          protocol: \"TCP\"\n        - name: \"web\"\n          containerPort: 8000\n          protocol: \"TCP\"\n        - name: \"websecure\"\n          containerPort: 8443\n          protocol: \"TCP\"\n        securityContext:\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsGroup: 65532\n          runAsNonRoot: true\n          runAsUser: 65532\n        volumeMounts:\n          - name: data\n            mountPath: /data\n          - name: tmp\n            mountPath: /tmp\n        args:\n          - \"--global.checknewversion\"\n          - \"--global.sendanonymoususage\"\n          - \"--entryPoints.traefik.address=:9000/tcp\"\n          - \"--entryPoints.web.address=:8000/tcp\"\n          - \"--entryPoints.websecure.address=:8443/tcp\"\n          - \"--api.dashboard=true\"\n          - \"--ping=true\"\n          - \"--providers.kubernetescrd\"\n          - \"--providers.kubernetesingress\"\n      volumes:\n        - name: data\n          emptyDir: {}\n        - name: tmp\n          emptyDir: {}\n      securityContext:\n        fsGroup: 65532\n---\n# Source: traefik/templates/service.yaml\napiVersion: v1\nkind: List\nitems:\n  - apiVersion: v1\n    kind: Service\n    metadata:\n      name: traefik-helm-template-traefik\n      labels:\n        app.kubernetes.io/name: traefik\n        helm.sh/chart: traefik-9.19.1\n        app.kubernetes.io/managed-by: Helm\n        app.kubernetes.io/instance: traefik-helm-template\n      annotations:\n    spec:\n      type: LoadBalancer\n      selector:\n        app.kubernetes.io/name: traefik\n        app.kubernetes.io/instance: traefik-helm-template\n      ports:\n      - port: 80\n        name: web\n        targetPort: \"web\"\n        protocol: \"TCP\"\n      - port: 443\n        name: websecure\n        targetPort: \"websecure\"\n        protocol: \"TCP\"\n---\n# Source: traefik/templates/dashboard-hook-ingressroute.yaml\napiVersion: traefik.containo.us/v1alpha1\nkind: IngressRoute\nmetadata:\n  name: traefik-helm-template-traefik-dashboard\n  annotations:\n    helm.sh/hook: \"post-install,post-upgrade\"\n  labels:\n    app.kubernetes.io/name: traefik\n    helm.sh/chart: traefik-9.19.1\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/instance: traefik-helm-template\nspec:\n  entryPoints:\n    - traefik\n  routes:\n  - match: PathPrefix(`/dashboard`) || PathPrefix(`/api`)\n    kind: Rule\n    services:\n    - name: api@internal\n      kind: TraefikService\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_010__aws__deploy_traefik_kops_k8s_helm/values.yaml",
    "content": "# Default values for Traefik\nimage:\n  name: traefik\n  # defaults to appVersion\n  tag: \"\"\n  pullPolicy: IfNotPresent\n\n#\n# Configure the deployment\n#\ndeployment:\n  enabled: true\n  # Can be either Deployment or DaemonSet\n  kind: Deployment\n  # Number of pods of the deployment (only applies when kind == Deployment)\n  replicas: 1\n  # Additional deployment annotations (e.g. for jaeger-operator sidecar injection)\n  annotations: {}\n  # Additional deployment labels (e.g. for filtering deployment by custom labels)\n  labels: {}\n  # Additional pod annotations (e.g. for mesh injection or prometheus scraping)\n  podAnnotations: {}\n  # Additional Pod labels (e.g. for filtering Pod by custom labels)\n  podLabels: {}\n  # Additional containers (e.g. for metric offloading sidecars)\n  additionalContainers: []\n    # https://docs.datadoghq.com/developers/dogstatsd/unix_socket/?tab=host\n    # - name: socat-proxy\n    # image: alpine/socat:1.0.5\n    # args: [\"-s\", \"-u\", \"udp-recv:8125\", \"unix-sendto:/socket/socket\"]\n    # volumeMounts:\n    #   - name: dsdsocket\n    #     mountPath: /socket\n  # Additional volumes available for use with initContainers and additionalContainers\n  additionalVolumes: []\n    # - name: dsdsocket\n    #   hostPath:\n    #     path: /var/run/statsd-exporter\n  # Additional initContainers (e.g. for setting file permission as shown below)\n  initContainers: []\n    # The \"volume-permissions\" init container is required if you run into permission issues.\n    # Related issue: https://github.com/traefik/traefik/issues/6972\n    # - name: volume-permissions\n    #   image: busybox:1.31.1\n    #   command: [\"sh\", \"-c\", \"chmod -Rv 600 /data/*\"]\n    #   volumeMounts:\n    #     - name: data\n    #       mountPath: /data\n  # Custom pod DNS policy. Apply if `hostNetwork: true`\n  # dnsPolicy: ClusterFirstWithHostNet\n  # Additional imagePullSecrets\n  imagePullSecrets: []\n   # - name: myRegistryKeySecretName\n\n# Pod disruption budget\npodDisruptionBudget:\n  enabled: false\n  # maxUnavailable: 1\n  # minAvailable: 0\n\n# Use ingressClass. Ignored if Traefik version < 2.3 / kubernetes < 1.18.x\ningressClass:\n  # true is not unit-testable yet, pending https://github.com/rancher/helm-unittest/pull/12\n  enabled: false\n  isDefaultClass: false\n  # Use to force a networking.k8s.io API Version for certain CI/CD applications. E.g. \"v1beta1\"\n  fallbackApiVersion:\n\n# Activate Pilot integration\npilot:\n  enabled: false\n  token: \"\"\n  # Toggle Pilot Dashboard\n  # dashboard: false\n\n# Enable experimental features\nexperimental:\n  plugins:\n    enabled: false\n  kubernetesGateway:\n    enabled: false\n    appLabelSelector: \"traefik\"\n    certificates: []\n    # - group: \"core\"\n    #   kind: \"Secret\"\n    #   name: \"mysecret\"\n\n# Create an IngressRoute for the dashboard\ningressRoute:\n  dashboard:\n    enabled: true\n    # Additional ingressRoute annotations (e.g. for kubernetes.io/ingress.class)\n    annotations: {}\n    # Additional ingressRoute labels (e.g. for filtering IngressRoute by custom labels)\n    labels: {}\n\nrollingUpdate:\n  maxUnavailable: 1\n  maxSurge: 1\n\n\n#\n# Configure providers\n#\nproviders:\n  kubernetesCRD:\n    enabled: true\n    namespaces: []\n      # - \"default\"\n  kubernetesIngress:\n    enabled: true\n    # labelSelector: environment=production,method=traefik\n    namespaces: []\n      # - \"default\"\n    # IP used for Kubernetes Ingress endpoints\n    publishedService:\n      enabled: false\n      # Published Kubernetes Service to copy status from. Format: namespace/servicename\n      # By default this Traefik service\n      # pathOverride: \"\"\n\n#\n# Add volumes to the traefik pod. The volume name will be passed to tpl.\n# This can be used to mount a cert pair or a configmap that holds a config.toml file.\n# After the volume has been mounted, add the configs into traefik by using the `additionalArguments` list below, eg:\n# additionalArguments:\n# - \"--providers.file.filename=/config/dynamic.toml\"\n# - \"--ping\"\n# - \"--ping.entrypoint=web\"\nvolumes: []\n# - name: public-cert\n#   mountPath: \"/certs\"\n#   type: secret\n# - name: '{{ printf \"%s-configs\" .Release.Name }}'\n#   mountPath: \"/config\"\n#   type: configMap\n\n# Additional volumeMounts to add to the Traefik container\nadditionalVolumeMounts: []\n  # For instance when using a logshipper for access logs\n  # - name: traefik-logs\n  #   mountPath: /var/log/traefik\n\n# Logs\n# https://docs.traefik.io/observability/logs/\nlogs:\n  # Traefik logs concern everything that happens to Traefik itself (startup, configuration, events, shutdown, and so on).\n  general:\n    # By default, the logs use a text format (common), but you can\n    # also ask for the json format in the format option\n    # format: json\n    # By default, the level is set to ERROR. Alternative logging levels are DEBUG, PANIC, FATAL, ERROR, WARN, and INFO.\n    level: ERROR\n  access:\n    # To enable access logs\n    enabled: false\n    # By default, logs are written using the Common Log Format (CLF).\n    # To write logs in JSON, use json in the format option.\n    # If the given format is unsupported, the default (CLF) is used instead.\n    # format: json\n    # To write the logs in an asynchronous fashion, specify a bufferingSize option.\n    # This option represents the number of log lines Traefik will keep in memory before writing\n    # them to the selected output. In some cases, this option can greatly help performances.\n    # bufferingSize: 100\n    # Filtering https://docs.traefik.io/observability/access-logs/#filtering\n    filters: {}\n      # statuscodes: \"200,300-302\"\n      # retryattempts: true\n      # minduration: 10ms\n    # Fields\n    # https://docs.traefik.io/observability/access-logs/#limiting-the-fieldsincluding-headers\n    fields:\n      general:\n        defaultmode: keep\n        names: {}\n          # Examples:\n          # ClientUsername: drop\n      headers:\n        defaultmode: drop\n        names: {}\n          # Examples:\n          # User-Agent: redact\n          # Authorization: drop\n          # Content-Type: keep\n\nglobalArguments:\n  - \"--global.checknewversion\"\n  - \"--global.sendanonymoususage\"\n\n#\n# Configure Traefik static configuration\n# Additional arguments to be passed at Traefik's binary\n# All available options available on https://docs.traefik.io/reference/static-configuration/cli/\n## Use curly braces to pass values: `helm install --set=\"additionalArguments={--providers.kubernetesingress.ingressclass=traefik-internal,--log.level=DEBUG}\"`\nadditionalArguments: []\n#  - \"--providers.kubernetesingress.ingressclass=traefik-internal\"\n#  - \"--log.level=DEBUG\"\n\n# Environment variables to be passed to Traefik's binary\nenv: []\n# - name: SOME_VAR\n#   value: some-var-value\n# - name: SOME_VAR_FROM_CONFIG_MAP\n#   valueFrom:\n#     configMapRef:\n#       name: configmap-name\n#       key: config-key\n# - name: SOME_SECRET\n#   valueFrom:\n#     secretKeyRef:\n#       name: secret-name\n#       key: secret-key\n\nenvFrom: []\n# - configMapRef:\n#     name: config-map-name\n# - secretRef:\n#     name: secret-name\n\n# Configure ports\nports:\n  # The name of this one can't be changed as it is used for the readiness and\n  # liveness probes, but you can adjust its config to your liking\n  traefik:\n    port: 9000\n    # Use hostPort if set.\n    # hostPort: 9000\n    #\n    # Use hostIP if set. If not set, Kubernetes will default to 0.0.0.0, which\n    # means it's listening on all your interfaces and all your IPs. You may want\n    # to set this value if you need traefik to listen on specific interface\n    # only.\n    # hostIP: 192.168.100.10\n\n    # Override the liveness/readiness port. This is useful to integrate traefik\n    # with an external Load Balancer that performs healthchecks.\n    # healthchecksPort: 9000\n\n    # Defines whether the port is exposed if service.type is LoadBalancer or\n    # NodePort.\n    #\n    # You SHOULD NOT expose the traefik port on production deployments.\n    # If you want to access it from outside of your cluster,\n    # use `kubectl port-forward` or create a secure ingress\n    expose: false\n    # The exposed port for this service\n    exposedPort: 9000\n    # The port protocol (TCP/UDP)\n    protocol: TCP\n  web:\n    port: 8000\n    # hostPort: 8000\n    expose: true\n    exposedPort: 80\n    # The port protocol (TCP/UDP)\n    protocol: TCP\n    # Use nodeport if set. This is useful if you have configured Traefik in a\n    # LoadBalancer\n    # nodePort: 32080\n    # Port Redirections\n    # Added in 2.2, you can make permanent redirects via entrypoints.\n    # https://docs.traefik.io/routing/entrypoints/#redirection\n    # redirectTo: websecure\n  websecure:\n    port: 8443\n    # hostPort: 8443\n    expose: true\n    exposedPort: 443\n    # The port protocol (TCP/UDP)\n    protocol: TCP\n    # nodePort: 32443\n    # Set TLS at the entrypoint\n    # https://doc.traefik.io/traefik/routing/entrypoints/#tls\n    tls:\n      enabled: false\n      # this is the name of a TLSOption definition\n      options: \"\"\n      certResolver: \"\"\n      domains: []\n      # - main: example.com\n      #   sans:\n      #     - foo.example.com\n      #     - bar.example.com\n\n# TLS Options are created as TLSOption CRDs\n# https://doc.traefik.io/traefik/https/tls/#tls-options\n# Example:\n# tlsOptions:\n#   default:\n#     sniStrict: true\n#     preferServerCipherSuites: true\n#   foobar:\n#     curvePreferences:\n#       - CurveP521\n#       - CurveP384\ntlsOptions: {}\n\n# Options for the main traefik service, where the entrypoints traffic comes\n# from.\nservice:\n  enabled: true\n  type: LoadBalancer\n  # Additional annotations (e.g. for cloud provider specific config)\n  annotations: {}\n  # Additional service labels (e.g. for filtering Service by custom labels)\n  labels: {}\n  # Additional entries here will be added to the service spec. Cannot contains\n  # type, selector or ports entries.\n  spec: {}\n    # externalTrafficPolicy: Cluster\n    # loadBalancerIP: \"1.2.3.4\"\n    # clusterIP: \"2.3.4.5\"\n  loadBalancerSourceRanges: []\n    # - 192.168.0.1/32\n    # - 172.16.0.0/16\n  externalIPs: []\n    # - 1.2.3.4\n\n## Create HorizontalPodAutoscaler object.\n##\nautoscaling:\n  enabled: false\n#   minReplicas: 1\n#   maxReplicas: 10\n#   metrics:\n#   - type: Resource\n#     resource:\n#       name: cpu\n#       targetAverageUtilization: 60\n#   - type: Resource\n#     resource:\n#       name: memory\n#       targetAverageUtilization: 60\n\n# Enable persistence using Persistent Volume Claims\n# ref: http://kubernetes.io/docs/user-guide/persistent-volumes/\n# After the pvc has been mounted, add the configs into traefik by using the `additionalArguments` list below, eg:\n# additionalArguments:\n# - \"--certificatesresolvers.le.acme.storage=/data/acme.json\"\n# It will persist TLS certificates.\npersistence:\n  enabled: false\n  name: data\n#  existingClaim: \"\"\n  accessMode: ReadWriteOnce\n  size: 128Mi\n  # storageClass: \"\"\n  path: /data\n  annotations: {}\n  # subPath: \"\" # only mount a subpath of the Volume into the pod\n\n# If hostNetwork is true, runs traefik in the host network namespace\n# To prevent unschedulabel pods due to port collisions, if hostNetwork=true\n# and replicas>1, a pod anti-affinity is recommended and will be set if the\n# affinity is left as default.\nhostNetwork: false\n\n# Whether Role Based Access Control objects like roles and rolebindings should be created\nrbac:\n  enabled: true\n\n  # If set to false, installs ClusterRole and ClusterRoleBinding so Traefik can be used across namespaces.\n  # If set to true, installs namespace-specific Role and RoleBinding and requires provider configuration be set to that same namespace\n  namespaced: false\n\n# Enable to create a PodSecurityPolicy and assign it to the Service Account via RoleBinding or ClusterRoleBinding\npodSecurityPolicy:\n  enabled: false\n\n# The service account the pods will use to interact with the Kubernetes API\nserviceAccount:\n  # If set, an existing service account is used\n  # If not set, a service account is created automatically using the fullname template\n  name: \"\"\n\n# Additional serviceAccount annotations (e.g. for oidc authentication)\nserviceAccountAnnotations: {}\n\nresources: {}\n  # requests:\n  #   cpu: \"100m\"\n  #   memory: \"50Mi\"\n  # limits:\n  #   cpu: \"300m\"\n  #   memory: \"150Mi\"\naffinity: {}\n# # This example pod anti-affinity forces the scheduler to put traefik pods\n# # on nodes where no other traefik pods are scheduled.\n# # It should be used when hostNetwork: true to prevent port conflicts\n#   podAntiAffinity:\n#     requiredDuringSchedulingIgnoredDuringExecution:\n#     - labelSelector:\n#         matchExpressions:\n#         - key: app\n#           operator: In\n#           values:\n#           - {{ template \"traefik.name\" . }}\n#       topologyKey: failure-domain.beta.kubernetes.io/zone\nnodeSelector: {}\ntolerations: []\n\n# Pods can have priority.\n# Priority indicates the importance of a Pod relative to other Pods.\npriorityClassName: \"\"\n\n# Set the container security context\n# To run the container with ports below 1024 this will need to be adjust to run as root\nsecurityContext:\n  capabilities:\n    drop: [ALL]\n  readOnlyRootFilesystem: true\n  runAsGroup: 65532\n  runAsNonRoot: true\n  runAsUser: 65532\n\npodSecurityContext:\n  fsGroup: 65532\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_011__aws__traefik_kops_whoami/ReadMe.md",
    "content": "[docs](https://github.com/traefik/traefik-helm-chart)\n\n\n- Version\n\n```bash\n$ helm version                \nversion.BuildInfo{Version:\"v3.5.4\", GitCommit:\"1b5edb69df3d3a08df77c9902dc17af864ff05d1\", GitTreeState:\"dirty\", GoVersion:\"go1.16.3\"}\n```\n\n- Pull the repo\n\n```bash\n$ git clone https://github.com/traefik/traefik-helm-chart.git\n$ ls                      \nReadMe.md          traefik-helm-chart\n\n# Create the CRDs\n$ kubectl apply -f traefik-helm-chart/traefik/crds/.                     \nWarning: apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition\ncustomresourcedefinition.apiextensions.k8s.io/ingressroutes.traefik.containo.us created\ncustomresourcedefinition.apiextensions.k8s.io/ingressroutetcps.traefik.containo.us created\ncustomresourcedefinition.apiextensions.k8s.io/ingressrouteudps.traefik.containo.us created\ncustomresourcedefinition.apiextensions.k8s.io/middlewares.traefik.containo.us created\ncustomresourcedefinition.apiextensions.k8s.io/serverstransports.traefik.containo.us created\ncustomresourcedefinition.apiextensions.k8s.io/tlsoptions.traefik.containo.us created\ncustomresourcedefinition.apiextensions.k8s.io/tlsstores.traefik.containo.us created\ncustomresourcedefinition.apiextensions.k8s.io/traefikservices.traefik.containo.us created\n\n\n$ cd traefik-helm-chart\n$ helm repo update                                                                                         \nHang tight while we grab the latest from your chart repositories...\n...Successfully got an update from the \"jetstack\" chart repository\n...Successfully got an update from the \"traefik\" chart repository\n...Successfully got an update from the \"datadog\" chart repository\n...Successfully got an update from the \"stable\" chart repository\n...Successfully got an update from the \"bitnami\" chart repository\nUpdate Complete. ⎈Happy Helming!⎈\n\n$ helm template traefik-helm-template -f traefik/values.yaml traefik/traefik > ../traefik-resources.yaml\n$ cp -rfp traefik/values.yaml ../                         \n$ cd ..\n$ rm -rf traefik-helm-chart    \n```\n\n- Get nodes\n\n```bash\n$ kubectl get nodes           \nNAME                            STATUS   ROLES    AGE   VERSION\nip-172-20-38-163.ec2.internal   Ready    master   30m   v1.19.11\nip-172-20-62-14.ec2.internal    Ready    node     27m   v1.19.11\n```\n\n- Try deploying traefik. Looks like CRDs didn't get installed. \n```\n$ kubectl apply -f traefik-resources.yaml\nserviceaccount/traefik-helm-template-traefik unchanged\nclusterrole.rbac.authorization.k8s.io/traefik-helm-template-traefik unchanged\nclusterrolebinding.rbac.authorization.k8s.io/traefik-helm-template-traefik unchanged\ndeployment.apps/traefik-helm-template-traefik configured\nservice/traefik-helm-template-traefik unchanged\nerror: unable to recognize \"traefik-resources.yaml\": no matches for kind \"IngressRoute\" in version \"traefik.containo.us/v1alpha1\"\n\n$ git clone https://github.com/traefik/traefik-helm-chart.git\n$ ls                      \nReadMe.md          traefik-helm-chart\n\n# Create the CRDs\n$ kubectl apply -f traefik-helm-chart/traefik/crds/.                     \nWarning: apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition\ncustomresourcedefinition.apiextensions.k8s.io/ingressroutes.traefik.containo.us created\ncustomresourcedefinition.apiextensions.k8s.io/ingressroutetcps.traefik.containo.us created\ncustomresourcedefinition.apiextensions.k8s.io/ingressrouteudps.traefik.containo.us created\ncustomresourcedefinition.apiextensions.k8s.io/middlewares.traefik.containo.us created\ncustomresourcedefinition.apiextensions.k8s.io/serverstransports.traefik.containo.us created\ncustomresourcedefinition.apiextensions.k8s.io/tlsoptions.traefik.containo.us created\ncustomresourcedefinition.apiextensions.k8s.io/tlsstores.traefik.containo.us created\ncustomresourcedefinition.apiextensions.k8s.io/traefikservices.traefik.containo.us created\n\n$ rm -rf traefik-helm-chart                 \n\n\n$ kubectl apply -f traefik-resources.yaml            \nserviceaccount/traefik-helm-template-traefik unchanged\nclusterrole.rbac.authorization.k8s.io/traefik-helm-template-traefik unchanged\nclusterrolebinding.rbac.authorization.k8s.io/traefik-helm-template-traefik unchanged\ndeployment.apps/traefik-helm-template-traefik configured\nservice/traefik-helm-template-traefik unchanged\ningressroute.traefik.containo.us/traefik-helm-template-traefik-dashboard created\n\n\n$ kubectl get svc                        \nNAME                            TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE\nkubernetes                      ClusterIP      100.64.0.1      <none>        443/TCP                      37m\ntraefik-helm-template-traefik   LoadBalancer   100.66.189.36   <pending>     80:32127/TCP,443:30552/TCP   6m44s\n```\n\n- Its in Pending state duo to the following error\n\n```bash\n$ kubectl describe svc traefik-helm-template-traefik                            \n.\n.\nError syncing load balancer: failed to ensure load balancer: AccessDenied\n```\n\n- Trying again with correct permissions.\n\n```bash\n$ kubectl get svc\nNAME                            TYPE           CLUSTER-IP      EXTERNAL-IP                                                              PORT(S)                      AGE\nkubernetes                      ClusterIP      100.64.0.1      <none>                                                                   443/TCP                      16m\ntraefik-helm-template-traefik   LoadBalancer   100.65.168.87   a93259cfe3e6840489e86a2b80b5f26d-546301547.us-east-1.elb.amazonaws.com   80:32444/TCP,443:32481/TCP   7m38s\n```\n\nYou will get the following Load Balancer on AWS\n\n![](.images/aws_load_balancer.png)\n\n\nNow we are getting 404 when we hit the load balancer.\n\n```bash\n$ curl -v a93259cfe3e6840489e86a2b80b5f26d-546301547.us-east-1.elb.amazonaws.com                                                                                                                                  \n*   Trying 54.175.76.116...\n* TCP_NODELAY set\n* Connected to a93259cfe3e6840489e86a2b80b5f26d-546301547.us-east-1.elb.amazonaws.com (54.175.76.116) port 80 (#0)\n> GET / HTTP/1.1\n> Host: a93259cfe3e6840489e86a2b80b5f26d-546301547.us-east-1.elb.amazonaws.com\n> User-Agent: curl/7.64.1\n> Accept: */*\n> \n< HTTP/1.1 404 Not Found\n< Content-Type: text/plain; charset=utf-8\n< X-Content-Type-Options: nosniff\n< Date: Thu, 10 Jun 2021 05:35:38 GMT\n< Content-Length: 19\n< \n404 page not found\n* Connection #0 to host a93259cfe3e6840489e86a2b80b5f26d-546301547.us-east-1.elb.amazonaws.com left intact\n* Closing connection 0\n```\n\nIn the next tasks we will try deploying some app behind load balancer and test routes.\n\n```bash\n$ kubectl apply -f whoami.yaml \ndeployment.apps/whoami unchanged\nservice/whoami unchanged\ningressroute.traefik.containo.us/whoami-whoami unchanged\n\n\n$ curl http://ad639fc8779704f558f7f3132f112d96-330009778.us-east-1.elb.amazonaws.com/whoami-app-api\nHostname: whoami-658d568b94-gwvcl\nIP: 127.0.0.1\nIP: 100.96.1.7\nRemoteAddr: 100.96.1.5:58624\nGET /whoami-app-api HTTP/1.1\nHost: ad639fc8779704f558f7f3132f112d96-330009778.us-east-1.elb.amazonaws.com\nUser-Agent: curl/7.64.1\nAccept: */*\nAccept-Encoding: gzip\nX-Forwarded-For: 100.96.1.1\nX-Forwarded-Host: ad639fc8779704f558f7f3132f112d96-330009778.us-east-1.elb.amazonaws.com\nX-Forwarded-Port: 80\nX-Forwarded-Proto: http\nX-Forwarded-Server: traefik-helm-template-traefik-bf8f77bfc-jznxx\nX-Real-Ip: 100.96.1.1\n```\n\n\n- Let's deploy the dashboard\n\n```bash\n$ kubectl port-forward $(kubectl get pods --selector \"app.kubernetes.io/name=traefik\" --output=name) 9000:9000\n\nForwarding from 127.0.0.1:9000 -> 9000\nForwarding from [::1]:9000 -> 9000\nHandling connection for 9000\nHandling connection for 9000\nHandling connection for 9000\nHandling connection for 9000\n```\n\n![](.images/traefik-dashboard.png)\n\n\n- Can we make this https ?  We can do that using following \n\n  - Create a certificate for your domain `*.domain.com` using AWS Certificate manager and using \n    domain verification if you have access to domain as well.\n  - Change the Loadbalancer protocol from TCP to HTTPS with the same load balancer port. Change the\n    Instance Port from HTTP to HTTPS. Ensure that the `Node Port` value remains same it was before the change. \n    You can also modify the NodePort using the values.yaml file. Now use the arn value fo the certiciate\n    created in previous step to install the SSL certificate.\n  - Finally go to route53 record and create an `ALIAS` record for `domain.com` routing all requests\n    to the new load balancer created by traefik."
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_011__aws__traefik_kops_whoami/traefik-resources.yaml",
    "content": "---\n# Source: traefik/templates/rbac/serviceaccount.yaml\nkind: ServiceAccount\napiVersion: v1\nmetadata:\n  name: traefik-helm-template-traefik\n  labels:\n    app.kubernetes.io/name: traefik\n    helm.sh/chart: traefik-9.19.1\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/instance: traefik-helm-template\n  annotations:\n---\n# Source: traefik/templates/rbac/clusterrole.yaml\nkind: ClusterRole\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: traefik-helm-template-traefik\n  labels:\n    app.kubernetes.io/name: traefik\n    helm.sh/chart: traefik-9.19.1\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/instance: traefik-helm-template\nrules:\n  - apiGroups:\n      - \"\"\n    resources:\n      - services\n      - endpoints\n      - secrets\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - extensions\n      - networking.k8s.io\n    resources:\n      - ingresses\n      - ingressclasses\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - extensions\n      - networking.k8s.io\n    resources:\n      - ingresses/status\n    verbs:\n      - update\n  - apiGroups:\n      - traefik.containo.us\n    resources:\n      - ingressroutes\n      - ingressroutetcps\n      - ingressrouteudps\n      - middlewares\n      - tlsoptions\n      - tlsstores\n      - traefikservices\n      - serverstransports\n    verbs:\n      - get\n      - list\n      - watch\n---\n# Source: traefik/templates/rbac/clusterrolebinding.yaml\nkind: ClusterRoleBinding\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: traefik-helm-template-traefik\n  labels:\n    app.kubernetes.io/name: traefik\n    helm.sh/chart: traefik-9.19.1\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/instance: traefik-helm-template\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: traefik-helm-template-traefik\nsubjects:\n  - kind: ServiceAccount\n    name: traefik-helm-template-traefik\n    namespace: default\n---\n# Source: traefik/templates/deployment.yaml\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: traefik-helm-template-traefik\n  labels:\n    app.kubernetes.io/name: traefik\n    helm.sh/chart: traefik-9.19.1\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/instance: traefik-helm-template\n  annotations:\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: traefik\n      app.kubernetes.io/instance: traefik-helm-template\n  strategy:\n    type: RollingUpdate\n    rollingUpdate:\n      maxSurge: 1\n      maxUnavailable: 1\n  template: \n    metadata:\n      annotations:\n      labels:\n        app.kubernetes.io/name: traefik\n        helm.sh/chart: traefik-9.19.1\n        app.kubernetes.io/managed-by: Helm\n        app.kubernetes.io/instance: traefik-helm-template\n    spec:\n      serviceAccountName: traefik-helm-template-traefik\n      terminationGracePeriodSeconds: 60\n      hostNetwork: false\n      containers:\n      - image: \"traefik:2.4.8\"\n        imagePullPolicy: IfNotPresent\n        name: traefik-helm-template-traefik\n        resources:\n        readinessProbe:\n          httpGet:\n            path: /ping\n            port: 9000\n          failureThreshold: 1\n          initialDelaySeconds: 10\n          periodSeconds: 10\n          successThreshold: 1\n          timeoutSeconds: 2\n        livenessProbe:\n          httpGet:\n            path: /ping\n            port: 9000\n          failureThreshold: 3\n          initialDelaySeconds: 10\n          periodSeconds: 10\n          successThreshold: 1\n          timeoutSeconds: 2\n        ports:\n        - name: \"traefik\"\n          containerPort: 9000\n          protocol: \"TCP\"\n        - name: \"web\"\n          containerPort: 8000\n          protocol: \"TCP\"\n        - name: \"websecure\"\n          containerPort: 8443\n          protocol: \"TCP\"\n        securityContext:\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsGroup: 65532\n          runAsNonRoot: true\n          runAsUser: 65532\n        volumeMounts:\n          - name: data\n            mountPath: /data\n          - name: tmp\n            mountPath: /tmp\n        args:\n          - \"--global.checknewversion\"\n          - \"--global.sendanonymoususage\"\n          - \"--entryPoints.traefik.address=:9000/tcp\"\n          - \"--entryPoints.web.address=:8000/tcp\"\n          - \"--entryPoints.websecure.address=:8443/tcp\"\n          - \"--api.dashboard=true\"\n          - \"--ping=true\"\n          - \"--providers.kubernetescrd\"\n          - \"--providers.kubernetesingress\"\n      volumes:\n        - name: data\n          emptyDir: {}\n        - name: tmp\n          emptyDir: {}\n      securityContext:\n        fsGroup: 65532\n---\n# Source: traefik/templates/service.yaml\napiVersion: v1\nkind: List\nitems:\n  - apiVersion: v1\n    kind: Service\n    metadata:\n      name: traefik-helm-template-traefik\n      labels:\n        app.kubernetes.io/name: traefik\n        helm.sh/chart: traefik-9.19.1\n        app.kubernetes.io/managed-by: Helm\n        app.kubernetes.io/instance: traefik-helm-template\n      annotations:\n    spec:\n      type: LoadBalancer\n      selector:\n        app.kubernetes.io/name: traefik\n        app.kubernetes.io/instance: traefik-helm-template\n      ports:\n      - port: 80\n        name: web\n        targetPort: \"web\"\n        protocol: \"TCP\"\n      - port: 443\n        name: websecure\n        targetPort: \"websecure\"\n        protocol: \"TCP\"\n---\n# Source: traefik/templates/dashboard-hook-ingressroute.yaml\napiVersion: traefik.containo.us/v1alpha1\nkind: IngressRoute\nmetadata:\n  name: traefik-helm-template-traefik-dashboard\n  annotations:\n    helm.sh/hook: \"post-install,post-upgrade\"\n  labels:\n    app.kubernetes.io/name: traefik\n    helm.sh/chart: traefik-9.19.1\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/instance: traefik-helm-template\nspec:\n  entryPoints:\n    - traefik\n  routes:\n  - match: PathPrefix(`/dashboard`) || PathPrefix(`/api`)\n    kind: Rule\n    services:\n    - name: api@internal\n      kind: TraefikService\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_011__aws__traefik_kops_whoami/values.yaml",
    "content": "# Default values for Traefik\nimage:\n  name: traefik\n  # defaults to appVersion\n  tag: \"\"\n  pullPolicy: IfNotPresent\n\n#\n# Configure the deployment\n#\ndeployment:\n  enabled: true\n  # Can be either Deployment or DaemonSet\n  kind: Deployment\n  # Number of pods of the deployment (only applies when kind == Deployment)\n  replicas: 1\n  # Additional deployment annotations (e.g. for jaeger-operator sidecar injection)\n  annotations: {}\n  # Additional deployment labels (e.g. for filtering deployment by custom labels)\n  labels: {}\n  # Additional pod annotations (e.g. for mesh injection or prometheus scraping)\n  podAnnotations: {}\n  # Additional Pod labels (e.g. for filtering Pod by custom labels)\n  podLabels: {}\n  # Additional containers (e.g. for metric offloading sidecars)\n  additionalContainers: []\n    # https://docs.datadoghq.com/developers/dogstatsd/unix_socket/?tab=host\n    # - name: socat-proxy\n    # image: alpine/socat:1.0.5\n    # args: [\"-s\", \"-u\", \"udp-recv:8125\", \"unix-sendto:/socket/socket\"]\n    # volumeMounts:\n    #   - name: dsdsocket\n    #     mountPath: /socket\n  # Additional volumes available for use with initContainers and additionalContainers\n  additionalVolumes: []\n    # - name: dsdsocket\n    #   hostPath:\n    #     path: /var/run/statsd-exporter\n  # Additional initContainers (e.g. for setting file permission as shown below)\n  initContainers: []\n    # The \"volume-permissions\" init container is required if you run into permission issues.\n    # Related issue: https://github.com/traefik/traefik/issues/6972\n    # - name: volume-permissions\n    #   image: busybox:1.31.1\n    #   command: [\"sh\", \"-c\", \"chmod -Rv 600 /data/*\"]\n    #   volumeMounts:\n    #     - name: data\n    #       mountPath: /data\n  # Custom pod DNS policy. Apply if `hostNetwork: true`\n  # dnsPolicy: ClusterFirstWithHostNet\n  # Additional imagePullSecrets\n  imagePullSecrets: []\n   # - name: myRegistryKeySecretName\n\n# Pod disruption budget\npodDisruptionBudget:\n  enabled: false\n  # maxUnavailable: 1\n  # minAvailable: 0\n\n# Use ingressClass. Ignored if Traefik version < 2.3 / kubernetes < 1.18.x\ningressClass:\n  # true is not unit-testable yet, pending https://github.com/rancher/helm-unittest/pull/12\n  enabled: false\n  isDefaultClass: false\n  # Use to force a networking.k8s.io API Version for certain CI/CD applications. E.g. \"v1beta1\"\n  fallbackApiVersion:\n\n# Activate Pilot integration\npilot:\n  enabled: false\n  token: \"\"\n  # Toggle Pilot Dashboard\n  # dashboard: false\n\n# Enable experimental features\nexperimental:\n  plugins:\n    enabled: false\n  kubernetesGateway:\n    enabled: false\n    appLabelSelector: \"traefik\"\n    certificates: []\n    # - group: \"core\"\n    #   kind: \"Secret\"\n    #   name: \"mysecret\"\n\n# Create an IngressRoute for the dashboard\ningressRoute:\n  dashboard:\n    enabled: true\n    # Additional ingressRoute annotations (e.g. for kubernetes.io/ingress.class)\n    annotations: {}\n    # Additional ingressRoute labels (e.g. for filtering IngressRoute by custom labels)\n    labels: {}\n\nrollingUpdate:\n  maxUnavailable: 1\n  maxSurge: 1\n\n\n#\n# Configure providers\n#\nproviders:\n  kubernetesCRD:\n    enabled: true\n    namespaces: []\n      # - \"default\"\n  kubernetesIngress:\n    enabled: true\n    # labelSelector: environment=production,method=traefik\n    namespaces: []\n      # - \"default\"\n    # IP used for Kubernetes Ingress endpoints\n    publishedService:\n      enabled: false\n      # Published Kubernetes Service to copy status from. Format: namespace/servicename\n      # By default this Traefik service\n      # pathOverride: \"\"\n\n#\n# Add volumes to the traefik pod. The volume name will be passed to tpl.\n# This can be used to mount a cert pair or a configmap that holds a config.toml file.\n# After the volume has been mounted, add the configs into traefik by using the `additionalArguments` list below, eg:\n# additionalArguments:\n# - \"--providers.file.filename=/config/dynamic.toml\"\n# - \"--ping\"\n# - \"--ping.entrypoint=web\"\nvolumes: []\n# - name: public-cert\n#   mountPath: \"/certs\"\n#   type: secret\n# - name: '{{ printf \"%s-configs\" .Release.Name }}'\n#   mountPath: \"/config\"\n#   type: configMap\n\n# Additional volumeMounts to add to the Traefik container\nadditionalVolumeMounts: []\n  # For instance when using a logshipper for access logs\n  # - name: traefik-logs\n  #   mountPath: /var/log/traefik\n\n# Logs\n# https://docs.traefik.io/observability/logs/\nlogs:\n  # Traefik logs concern everything that happens to Traefik itself (startup, configuration, events, shutdown, and so on).\n  general:\n    # By default, the logs use a text format (common), but you can\n    # also ask for the json format in the format option\n    # format: json\n    # By default, the level is set to ERROR. Alternative logging levels are DEBUG, PANIC, FATAL, ERROR, WARN, and INFO.\n    level: ERROR\n  access:\n    # To enable access logs\n    enabled: false\n    # By default, logs are written using the Common Log Format (CLF).\n    # To write logs in JSON, use json in the format option.\n    # If the given format is unsupported, the default (CLF) is used instead.\n    # format: json\n    # To write the logs in an asynchronous fashion, specify a bufferingSize option.\n    # This option represents the number of log lines Traefik will keep in memory before writing\n    # them to the selected output. In some cases, this option can greatly help performances.\n    # bufferingSize: 100\n    # Filtering https://docs.traefik.io/observability/access-logs/#filtering\n    filters: {}\n      # statuscodes: \"200,300-302\"\n      # retryattempts: true\n      # minduration: 10ms\n    # Fields\n    # https://docs.traefik.io/observability/access-logs/#limiting-the-fieldsincluding-headers\n    fields:\n      general:\n        defaultmode: keep\n        names: {}\n          # Examples:\n          # ClientUsername: drop\n      headers:\n        defaultmode: drop\n        names: {}\n          # Examples:\n          # User-Agent: redact\n          # Authorization: drop\n          # Content-Type: keep\n\nglobalArguments:\n  - \"--global.checknewversion\"\n  - \"--global.sendanonymoususage\"\n\n#\n# Configure Traefik static configuration\n# Additional arguments to be passed at Traefik's binary\n# All available options available on https://docs.traefik.io/reference/static-configuration/cli/\n## Use curly braces to pass values: `helm install --set=\"additionalArguments={--providers.kubernetesingress.ingressclass=traefik-internal,--log.level=DEBUG}\"`\nadditionalArguments: []\n#  - \"--providers.kubernetesingress.ingressclass=traefik-internal\"\n#  - \"--log.level=DEBUG\"\n\n# Environment variables to be passed to Traefik's binary\nenv: []\n# - name: SOME_VAR\n#   value: some-var-value\n# - name: SOME_VAR_FROM_CONFIG_MAP\n#   valueFrom:\n#     configMapRef:\n#       name: configmap-name\n#       key: config-key\n# - name: SOME_SECRET\n#   valueFrom:\n#     secretKeyRef:\n#       name: secret-name\n#       key: secret-key\n\nenvFrom: []\n# - configMapRef:\n#     name: config-map-name\n# - secretRef:\n#     name: secret-name\n\n# Configure ports\nports:\n  # The name of this one can't be changed as it is used for the readiness and\n  # liveness probes, but you can adjust its config to your liking\n  traefik:\n    port: 9000\n    # Use hostPort if set.\n    # hostPort: 9000\n    #\n    # Use hostIP if set. If not set, Kubernetes will default to 0.0.0.0, which\n    # means it's listening on all your interfaces and all your IPs. You may want\n    # to set this value if you need traefik to listen on specific interface\n    # only.\n    # hostIP: 192.168.100.10\n\n    # Override the liveness/readiness port. This is useful to integrate traefik\n    # with an external Load Balancer that performs healthchecks.\n    # healthchecksPort: 9000\n\n    # Defines whether the port is exposed if service.type is LoadBalancer or\n    # NodePort.\n    #\n    # You SHOULD NOT expose the traefik port on production deployments.\n    # If you want to access it from outside of your cluster,\n    # use `kubectl port-forward` or create a secure ingress\n    expose: false\n    # The exposed port for this service\n    exposedPort: 9000\n    # The port protocol (TCP/UDP)\n    protocol: TCP\n  web:\n    port: 8000\n    # hostPort: 8000\n    expose: true\n    exposedPort: 80\n    # The port protocol (TCP/UDP)\n    protocol: TCP\n    # Use nodeport if set. This is useful if you have configured Traefik in a\n    # LoadBalancer\n    # nodePort: 32080\n    # Port Redirections\n    # Added in 2.2, you can make permanent redirects via entrypoints.\n    # https://docs.traefik.io/routing/entrypoints/#redirection\n    # redirectTo: websecure\n  websecure:\n    port: 8443\n    # hostPort: 8443\n    expose: true\n    exposedPort: 443\n    # The port protocol (TCP/UDP)\n    protocol: TCP\n    # nodePort: 32443\n    # Set TLS at the entrypoint\n    # https://doc.traefik.io/traefik/routing/entrypoints/#tls\n    tls:\n      enabled: false\n      # this is the name of a TLSOption definition\n      options: \"\"\n      certResolver: \"\"\n      domains: []\n      # - main: example.com\n      #   sans:\n      #     - foo.example.com\n      #     - bar.example.com\n\n# TLS Options are created as TLSOption CRDs\n# https://doc.traefik.io/traefik/https/tls/#tls-options\n# Example:\n# tlsOptions:\n#   default:\n#     sniStrict: true\n#     preferServerCipherSuites: true\n#   foobar:\n#     curvePreferences:\n#       - CurveP521\n#       - CurveP384\ntlsOptions: {}\n\n# Options for the main traefik service, where the entrypoints traffic comes\n# from.\nservice:\n  enabled: true\n  type: LoadBalancer\n  # Additional annotations (e.g. for cloud provider specific config)\n  annotations: {}\n  # Additional service labels (e.g. for filtering Service by custom labels)\n  labels: {}\n  # Additional entries here will be added to the service spec. Cannot contains\n  # type, selector or ports entries.\n  spec: {}\n    # externalTrafficPolicy: Cluster\n    # loadBalancerIP: \"1.2.3.4\"\n    # clusterIP: \"2.3.4.5\"\n  loadBalancerSourceRanges: []\n    # - 192.168.0.1/32\n    # - 172.16.0.0/16\n  externalIPs: []\n    # - 1.2.3.4\n\n## Create HorizontalPodAutoscaler object.\n##\nautoscaling:\n  enabled: false\n#   minReplicas: 1\n#   maxReplicas: 10\n#   metrics:\n#   - type: Resource\n#     resource:\n#       name: cpu\n#       targetAverageUtilization: 60\n#   - type: Resource\n#     resource:\n#       name: memory\n#       targetAverageUtilization: 60\n\n# Enable persistence using Persistent Volume Claims\n# ref: http://kubernetes.io/docs/user-guide/persistent-volumes/\n# After the pvc has been mounted, add the configs into traefik by using the `additionalArguments` list below, eg:\n# additionalArguments:\n# - \"--certificatesresolvers.le.acme.storage=/data/acme.json\"\n# It will persist TLS certificates.\npersistence:\n  enabled: false\n  name: data\n#  existingClaim: \"\"\n  accessMode: ReadWriteOnce\n  size: 128Mi\n  # storageClass: \"\"\n  path: /data\n  annotations: {}\n  # subPath: \"\" # only mount a subpath of the Volume into the pod\n\n# If hostNetwork is true, runs traefik in the host network namespace\n# To prevent unschedulabel pods due to port collisions, if hostNetwork=true\n# and replicas>1, a pod anti-affinity is recommended and will be set if the\n# affinity is left as default.\nhostNetwork: false\n\n# Whether Role Based Access Control objects like roles and rolebindings should be created\nrbac:\n  enabled: true\n\n  # If set to false, installs ClusterRole and ClusterRoleBinding so Traefik can be used across namespaces.\n  # If set to true, installs namespace-specific Role and RoleBinding and requires provider configuration be set to that same namespace\n  namespaced: false\n\n# Enable to create a PodSecurityPolicy and assign it to the Service Account via RoleBinding or ClusterRoleBinding\npodSecurityPolicy:\n  enabled: false\n\n# The service account the pods will use to interact with the Kubernetes API\nserviceAccount:\n  # If set, an existing service account is used\n  # If not set, a service account is created automatically using the fullname template\n  name: \"\"\n\n# Additional serviceAccount annotations (e.g. for oidc authentication)\nserviceAccountAnnotations: {}\n\nresources: {}\n  # requests:\n  #   cpu: \"100m\"\n  #   memory: \"50Mi\"\n  # limits:\n  #   cpu: \"300m\"\n  #   memory: \"150Mi\"\naffinity: {}\n# # This example pod anti-affinity forces the scheduler to put traefik pods\n# # on nodes where no other traefik pods are scheduled.\n# # It should be used when hostNetwork: true to prevent port conflicts\n#   podAntiAffinity:\n#     requiredDuringSchedulingIgnoredDuringExecution:\n#     - labelSelector:\n#         matchExpressions:\n#         - key: app\n#           operator: In\n#           values:\n#           - {{ template \"traefik.name\" . }}\n#       topologyKey: failure-domain.beta.kubernetes.io/zone\nnodeSelector: {}\ntolerations: []\n\n# Pods can have priority.\n# Priority indicates the importance of a Pod relative to other Pods.\npriorityClassName: \"\"\n\n# Set the container security context\n# To run the container with ports below 1024 this will need to be adjust to run as root\nsecurityContext:\n  capabilities:\n    drop: [ALL]\n  readOnlyRootFilesystem: true\n  runAsGroup: 65532\n  runAsNonRoot: true\n  runAsUser: 65532\n\npodSecurityContext:\n  fsGroup: 65532\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_011__aws__traefik_kops_whoami/whoami.yaml",
    "content": "kind: Deployment\napiVersion: apps/v1\nmetadata:\n  namespace: default\n  name: whoami\n  labels:\n    app: whoami\n\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: whoami\n  template:\n    metadata:\n      labels:\n        app: whoami\n    spec:\n      containers:\n        - name: whoami\n          image: containous/whoami\n          ports:\n            - name: web\n              containerPort: 80\n---\n\napiVersion: v1\nkind: Service\nmetadata:\n  name: whoami\n\nspec:\n  ports:\n    - protocol: TCP\n      name: web\n      port: 80\n  selector:\n    app: whoami\n\n---\napiVersion: traefik.containo.us/v1alpha1\nkind: IngressRoute\nmetadata:\n  name: whoami-whoami\n  namespace: default\nspec:\n  entryPoints:\n    - web\n    - websecure\n  routes:\n    - match: PathPrefix(`/whoami-app-api`)\n      kind: Rule\n      services:\n        - name: whoami\n          port: 80\n\n\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/ReadMe.md",
    "content": "\n[traefik-helm-chart](https://github.com/traefik/traefik-helm-chart)\n\n```bash\n$ git clone https://github.com/traefik/traefik-helm-chart.git                                          \n$ ls\nReadMe.md          traefik-helm-chart\n$ cd traefik-helm-chart                      \n$ mv traefik ../    \n$ rm -rf traefik-helm-chart                 \n$ mv traefik traefik-helm-chart                 \n```\n\n- Once you deploy echo-app\n\n```bash\n$ kubectl apply -f .                                \ndeployment.apps/echo created\ningressroute.traefik.containo.us/demo created\nservice/echo created\n```\n- Now we will hit the service\n\n```bash\n$ curl https://yourdomain.com/foo\n\n\nHostname: echo-5fc5b5bc84-b4xbv\n\nPod Information:\n        node name:      ip-192-20-48-123.ap-south-1.compute.internal\n        pod name:       echo-5fc5b5bc84-b4xbv\n        pod namespace:  default\n        pod IP: 200.96.1.6\n\nServer values:\n        server_version=nginx: 1.12.2 - lua: 10010\n\nRequest Information:\n        client_address=200.96.1.5\n        method=GET\n        real path=/foo\n        query=\n        request_version=1.1\n        request_scheme=http\n        request_uri=http://yourdomain.com:8080/foo\n\nRequest Headers:\n        accept=*/*  \n        accept-encoding=gzip  \n        host=yourdomain.com  \n        user-agent=curl/7.64.1  \n        x-forwarded-for=200.96.1.1  \n        x-forwarded-host=yourdomain.com  \n        x-forwarded-port=80  \n        x-forwarded-proto=http  \n        x-forwarded-server=traefik-v1-656557454c-dxpjk  \n        x-real-ip=200.96.1.1  \n\nRequest Body:\n        -no body in request-\n```\n\nThe corresponding traefik access logs\n\n```bash\n$ kubectl logs -f traefik-v1-656557454c-dxpjk\n.\n200.96.1.1 - - [09/Oct/2021:10:06:59 +0000] \"GET /foo HTTP/1.1\" 200 741 \"-\" \"-\" 457 \"default-demo-68f921d95eee7f144d1e@kubernetescrd\" \"http://200.96.1.6:8080\" 1ms\n```\n\n- For adding the trace-id [trinnylondon/traefik-add-trace-id](https://github.com/trinnylondon/traefik-add-trace-id)\n\n- We will make some changes as well. Build a custom docker image.\n\n```bash\n$ docker build --file Dockerfile -t codeaprendiz/traefik:v2.5.5 .\n[+] Building 3.1s (8/8) FINISHED\n.\n.\n => => naming to docker.io/codeaprendiz/traefik:v2.5.5                                                                                                                                                             0.0s\n```\n\n- Push the image\n\n```bash\n$ docker push codeaprendiz/traefik:v2.5.5\nThe push refers to repository [docker.io/codeaprendiz/traefik]\n.\n.\nv2.5.4: digest: sha256:c3f16e044a8e78cc56755ceda08002e12ae873c609d0711dae63f28f1e6e9f38 size: 1365\n```\n\n- Add the new middleware\n\n```yaml\napiVersion: traefik.containo.us/v1alpha1\nkind: Middleware\nmetadata:\n  name: traceid\nspec:\n  plugin:\n    traceid:\n      headerName: X-Trace-Id\n      headerPrefix: \"\"\n      verbose: true\n```\n\n- Apply the new middleware\n\n```bash\n$ kubectl apply -f traefik-custom-image/middleware/.\nmiddleware.traefik.containo.us/traceid created\n```\n\n\n- Deploy the `echo-app` with the new ingress and middleware \n\n```yaml\napiVersion: traefik.containo.us/v1alpha1\nkind: IngressRoute\nmetadata:\n  name: demo\nspec:\n  entryPoints:\n    - web\n    - websecure\n  routes:\n    - match: \"HostRegexp(`yourdomain.com`) && PathPrefix(`/foo`)\"\n      kind: Rule\n      services:\n        - name: echo\n          port: 80\n      middlewares:\n        - name: traceid\n```\n\n- Apply\n\n```bash\n$ kubectl apply -f echo-app/.                              \ndeployment.apps/echo unchanged\ningressroute.traefik.containo.us/demo configured\nservice/echo unchanged\n```\n\n- Now we hit the service again\n\n```bash\n$ curl https://yourdomain.com/foo\n\n\nHostname: echo-5fc5b5bc84-8gsnq\n\nPod Information:\n        node name:      ip-192-20-48-123.ap-south-1.compute.internal\n        pod name:       echo-5fc5b5bc84-8gsnq\n        pod namespace:  default\n        pod IP: 200.96.1.7\n\nServer values:\n        server_version=nginx: 1.12.2 - lua: 10010\n\nRequest Information:\n        client_address=200.96.1.8\n        method=GET\n        real path=/foo\n        query=\n        request_version=1.1\n        request_scheme=http\n        request_uri=http://yourdomain.com:8080/foo\n\nRequest Headers:\n        accept=*/*  \n        accept-encoding=gzip  \n        host=yourdomain.com  \n        user-agent=curl/7.64.1  \n        x-forwarded-for=200.96.1.1  \n        x-forwarded-host=yourdomain.com  \n        x-forwarded-port=80  \n        x-forwarded-proto=http  \n        x-forwarded-server=traefik-v1-846499dd44-ngbrh  \n        x-real-ip=200.96.1.1  \n        x-trace-id=7e0f6018-35b3-4896-b65a-5a514a481f31  \n\nRequest Body:\n        -no body in request-\n```\n\n- Corresponding access log\n\n```bash\n2021/10/09 10:13:55 7e0f6018-35b3-4896-b65a-5a514a481f31\n200.96.1.1 - - [09/Oct/2021:10:13:55 +0000] \"GET /foo HTTP/1.1\" 200 792 \"-\" \"-\" 3 \"default-demo-68f921d95eee7f144d1e@kubernetescrd\" \"http://200.96.1.7:8080\" 1ms\n```\n\n\n\n- Now lets deploy another amazing tool, http-bin\n\n```bash\n$ kubectl apply -f httpbin-app/.             \ndeployment.apps/httpbin created\ningressroute.traefik.containo.us/demo1 created\nservice/httpbin created\n```\n\n- Visit the site\n\n![](.images/homepage.png)\n\n- HTTP methods\n\n![](.images/http-methods.png)\n\n- Get request\n\n![](.images/get-request.png)\n\n- Similarly for status code\n\n```bash\n$ curl -X GET \"https://yourdomain.com/status/200\" -H \"accept: text/plain\" -I\nHTTP/1.1 200 OK\nAccess-Control-Allow-Credentials: true\nAccess-Control-Allow-Origin: *\nContent-Length: 0\nContent-Type: text/html; charset=utf-8\nDate: Sat, 09 Oct 2021 10:33:42 GMT\nServer: gunicorn/19.9.0\nX-Trace-Id: f4a2c995-7780-4ad0-b4f2-40ae50364579\n```\n\n- For post request\n\n```bash\n$ curl -X POST \"https://yourdomain.com/status/200\" -H \"accept: text/plain\" -I\nHTTP/1.1 200 OK\nAccess-Control-Allow-Credentials: true\nAccess-Control-Allow-Origin: *\nContent-Length: 0\nContent-Type: text/html; charset=utf-8\nDate: Sat, 09 Oct 2021 10:36:45 GMT\nServer: gunicorn/19.9.0\nX-Trace-Id: 36242f47-64a4-450d-af92-37aeae0ca55f\n```"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/echo-app/dep.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app: echo\n  name: echo\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: echo\n  strategy: {}\n  template:\n    metadata:\n      creationTimestamp: null\n      labels:\n        app: echo\n    spec:\n      containers:\n        - image: gcr.io/kubernetes-e2e-test-images/echoserver:2.2\n          name: echo\n          ports:\n            - containerPort: 8080\n          env:\n            - name: NODE_NAME\n              valueFrom:\n                fieldRef:\n                  fieldPath: spec.nodeName\n            - name: POD_NAME\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.name\n            - name: POD_NAMESPACE\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.namespace\n            - name: POD_IP\n              valueFrom:\n                fieldRef:\n                  fieldPath: status.podIP\n          resources: {}"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/echo-app/ingress.yaml",
    "content": "---\n\napiVersion: traefik.containo.us/v1alpha1\nkind: IngressRoute\nmetadata:\n  name: demo\nspec:\n  entryPoints:\n    - web\n    - websecure\n  routes:\n    - match: \"HostRegexp(`yourdomain.com`) && PathPrefix(`/foo`)\"\n      kind: Rule\n      services:\n        - name: echo\n          port: 80\n      middlewares:\n        - name: traceid"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/echo-app/svc.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app: echo\n  name: echo\nspec:\n  ports:\n    - port: 8080\n      name: high\n      protocol: TCP\n      targetPort: 8080\n    - port: 80\n      name: low\n      protocol: TCP\n      targetPort: 8080\n  selector:\n    app: echo\n---\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/httpbin-app/dep.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: httpbin\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: httpbin\n  template:\n    metadata:\n      labels:\n        app: httpbin\n    spec:\n      containers:\n        - image: docker.io/kennethreitz/httpbin\n          name: httpbin\n          ports:\n            - containerPort: 80"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/httpbin-app/ingress.yaml",
    "content": "apiVersion: traefik.containo.us/v1alpha1\nkind: IngressRoute\nmetadata:\n  name: demo1\nspec:\n  entryPoints:\n    - web\n    - websecure\n  routes:\n    - match: \"HostRegexp(`yourdomain.com`) && PathPrefix(`/`)\"\n      kind: Rule\n      services:\n        - name: httpbin\n          port: 80\n      middlewares:\n        - name: traceid\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/httpbin-app/svc.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: httpbin\n  labels:\n    app: httpbin\nspec:\n  ports:\n    - name: http\n      port: 80\n      targetPort: 80\n  selector:\n    app: httpbin"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-custom-image/Dockerfile",
    "content": "FROM traefik:v2.5.3\nCOPY ./traefik-add-trace-id ./plugins-local/src/github.com/trinnylondon/traefik-add-trace-id\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-custom-image/middleware/middleware.yaml",
    "content": "apiVersion: traefik.containo.us/v1alpha1\nkind: Middleware\nmetadata:\n  name: traceid\nspec:\n  plugin:\n    traceid:\n      headerName: X-Trace-Id\n      headerPrefix: \"\"\n      verbose: true\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-custom-image/traefik-add-trace-id/.traefik.yml",
    "content": "displayName: Add Trace ID\ntype: middleware\nimport: github.com/trinnylondon/traefik-add-trace-id\nsummary: 'Add a header for tracing if one does not exist already'\ntestData:\n  headerName: 'X-Trace-Id'\n  headerPrefix: ''\n  verbose: false"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-custom-image/traefik-add-trace-id/README.md",
    "content": "# About\n\nThis plugin will append a custom header for tracing with a random value if one is not found already in the incoming request.\n\nYou can optionally customise this by specifying a custom header name that the plugin will look for in the incoming request (defaults to `X-Trace-Id`) and you can also specify a custom prefix to be added to that header (defaults to `\"\"`).\n\n# Configuration\nEnable the plugin in your Traefik configuration:\n```\n[experimental.plugins.traceid]\n  modulename = \"github.com/trinnylondon/traefik-add-trace-id\"\n  version = \"v0.1.3\"\n```\n\nCreate a Middleware. Note that this plugin does not need any configuration, however, values must be passed in for it to be accepted within Traefik.\n\n```\n---\napiVersion: traefik.containo.us/v1alpha1\nkind: Middleware\nmetadata:\n  name: traceid\nspec:\n  plugin:\n    traceid:\n      headerPrefix: ''\n      headerName: 'X-Trace-Id'\n```\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-custom-image/traefik-add-trace-id/go.mod",
    "content": "module github.com/trinnylondon/traefik-add-trace-id\n\ngo 1.15\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-custom-image/traefik-add-trace-id/go.sum",
    "content": ""
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-custom-image/traefik-add-trace-id/rand-utils.go",
    "content": "package traefik_add_trace_id\n\nimport (\n\t\"crypto/rand\"\n\t\"encoding/hex\"\n\t\"io\"\n)\n\nvar rander = rand.Reader // random function\ntype UUID [16]byte\n\nfunc must(uuid UUID, err error) UUID {\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn uuid\n}\n\nfunc newUUID() UUID {\n\treturn must(newRandom())\n}\n\nfunc newRandom() (UUID, error) {\n\treturn newRandomFromReader(rander)\n}\n\n// newRandomFromReader returns a UUID based on bytes read from a given io.Reader.\nfunc newRandomFromReader(r io.Reader) (UUID, error) {\n\tvar uuid UUID\n\t_, err := io.ReadFull(r, uuid[:])\n\tif err != nil {\n\t\treturn UUID{}, err\n\t}\n\tuuid[6] = (uuid[6] & 0x0f) | 0x40 // Version 4\n\tuuid[8] = (uuid[8] & 0x3f) | 0x80 // Variant is 10\n\treturn uuid, nil\n}\n\n// String returns the string form of uuid, xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\n// , or \"\" if uuid is invalid.\nfunc (uuid UUID) String() string {\n\tvar buf [36]byte\n\tencodeHex(buf[:], uuid)\n\treturn string(buf[:])\n}\n\nfunc encodeHex(dst []byte, uuid UUID) {\n\thex.Encode(dst, uuid[:4])\n\tdst[8] = '-'\n\thex.Encode(dst[9:13], uuid[4:6])\n\tdst[13] = '-'\n\thex.Encode(dst[14:18], uuid[6:8])\n\tdst[18] = '-'\n\thex.Encode(dst[19:23], uuid[8:10])\n\tdst[23] = '-'\n\thex.Encode(dst[24:], uuid[10:])\n}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-custom-image/traefik-add-trace-id/trace-id.go",
    "content": "package traefik_add_trace_id\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"log\"\n\t\"net/http\"\n)\n\nconst defaultTraceID = \"X-Trace-Id\"\n\n// Config the plugin configuration.\ntype Config struct {\n\tHeaderPrefix string `json:\"headerPrefix\"`\n\tHeaderName   string `json:\"headerName\"`\n\tVerbose      bool   `json:\"verbose\"`\n}\n\n// CreateConfig creates the default plugin configuration.\nfunc CreateConfig() *Config {\n\treturn &Config{\n\t\tHeaderPrefix: \"\",\n\t\tHeaderName:   defaultTraceID,\n\t}\n}\n\n// TraceIDHeader header if it's missing\ntype TraceIDHeader struct {\n\theaderName   string\n\theaderPrefix string\n\tname         string\n\tnext         http.Handler\n\tverbose      bool\n}\n\n// New created a new TraceIDHeader plugin.\nfunc New(ctx context.Context, next http.Handler, config *Config, name string) (http.Handler, error) {\n\ttIDHdr := &TraceIDHeader{\n\t\tnext:    next,\n\t\tname:    name,\n\t\tverbose: config.Verbose,\n\t}\n\n\tif config == nil {\n\t\treturn nil, fmt.Errorf(\"config can not be nil\")\n\t}\n\n\tif config.HeaderName == \"\" {\n\t\ttIDHdr.headerName = defaultTraceID\n\t} else {\n\t\ttIDHdr.headerName = config.HeaderName\n\t}\n\n\ttIDHdr.headerPrefix = config.HeaderPrefix\n\n\treturn tIDHdr, nil\n\n}\n\nfunc (t *TraceIDHeader) ServeHTTP(rw http.ResponseWriter, req *http.Request) {\n\theaderArr := req.Header[t.headerName]\n\trandomUUID := fmt.Sprintf(\"%s%s\", t.headerPrefix, newUUID().String())\n\tif len(headerArr) == 0 {\n\t\treq.Header.Set(t.headerName, randomUUID)\n                rw.Header().Set(t.headerName, randomUUID)\n\t} else if headerArr[0] == \"\" {\n\t\treq.Header[t.headerName][0] = randomUUID\n                rw.Header().Set(req.Header[t.headerName][0], randomUUID)\n\t} else {\n\t\texistingUUID := req.Header.Get(t.headerName)\n\t\trw.Header().Set(t.headerName, existingUUID)\n        }\n\n\tif t.verbose {\n\t\tlog.Println(req.Header[t.headerName][0])\n\t}\n\n\tt.next.ServeHTTP(rw, req)\n}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-custom-image/traefik-add-trace-id/trace-id_test.go",
    "content": "package traefik_add_trace_id\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t\"strings\"\n\t\"testing\"\n)\n\nfunc TestServeHTTP(t *testing.T) {\n\ttests := []struct {\n\t\tname       string\n\t\tconfig     *Config\n\t\tassertFunc func(t *testing.T) http.Handler\n\t}{\n\t\t{\n\t\t\tname:   \"no trace id\",\n\t\t\tconfig: &Config{},\n\t\t\tassertFunc: func(t *testing.T) http.Handler {\n\t\t\t\tt.Helper()\n\t\t\t\treturn http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) {\n\t\t\t\t\thdr := getTraceIdHeader(t, req, \"X-Trace-Id\")\n\t\t\t\t\tmustHaveLength(t, hdr, 36)\n\t\t\t\t})\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"custom name\",\n\t\t\tconfig: &Config{\n\t\t\t\tHeaderName: \"Other-Name\",\n\t\t\t},\n\t\t\tassertFunc: func(t *testing.T) http.Handler {\n\t\t\t\tt.Helper()\n\t\t\t\treturn http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) {\n\t\t\t\t\thdr := getTraceIdHeader(t, req, \"Other-Name\")\n\t\t\t\t\tmustHaveLength(t, hdr, 36)\n\t\t\t\t})\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"with prefix\",\n\t\t\tconfig: &Config{\n\t\t\t\tHeaderPrefix: \"myorg\",\n\t\t\t},\n\t\t\tassertFunc: func(t *testing.T) http.Handler {\n\t\t\t\tt.Helper()\n\t\t\t\treturn http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) {\n\t\t\t\t\thdr := getTraceIdHeader(t, req, \"X-Trace-Id\")\n\t\t\t\t\tmustHavePrefix(t, hdr, \"myorg\")\n\t\t\t\t\tmustHaveLength(t, hdr, 41)\n\t\t\t\t})\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"custom traceid and prefix\",\n\t\t\tconfig: &Config{\n\t\t\t\tHeaderPrefix: \"myorg\",\n\t\t\t\tHeaderName:   \"Other-Name\",\n\t\t\t},\n\t\t\tassertFunc: func(t *testing.T) http.Handler {\n\t\t\t\tt.Helper()\n\t\t\t\treturn http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) {\n\t\t\t\t\thdr := getTraceIdHeader(t, req, \"Other-Name\")\n\t\t\t\t\tmustHavePrefix(t, hdr, \"myorg\")\n\t\t\t\t\tmustHaveLength(t, hdr, 41)\n\t\t\t\t})\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"verbose\",\n\t\t\tconfig: &Config{\n\t\t\t\tHeaderPrefix: \"myorg\",\n\t\t\t\tHeaderName:   \"Other-Name\",\n\t\t\t\tVerbose:      true,\n\t\t\t},\n\t\t\tassertFunc: func(t *testing.T) http.Handler {\n\t\t\t\tt.Helper()\n\t\t\t\treturn http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) {})\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tctx := context.Background()\n\n\t\t\thandler, err := New(ctx, tt.assertFunc(t), tt.config, \"trace-id-test\")\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"error with new redirect: %+v\", err)\n\t\t\t}\n\t\t\trecorder := httptest.NewRecorder()\n\t\t\treq, err := http.NewRequestWithContext(ctx, http.MethodGet, \"http://localhost/\", nil)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"error with new request: %+v\", err)\n\t\t\t}\n\n\t\t\thandler.ServeHTTP(recorder, req)\n\t\t})\n\t}\n}\n\nfunc getTraceIdHeader(t *testing.T, req *http.Request, headerName string) string {\n\tt.Helper()\n\theaderArr := req.Header[headerName]\n\tif len(headerArr) == 1 {\n\t\treturn headerArr[0]\n\t}\n\treturn \"\"\n}\n\nfunc mustHaveLength(t *testing.T, s string, l int) {\n\tt.Helper()\n\tif len(s) != l {\n\t\tt.Fatalf(\"differing lengths: wanted %d, got %d(%s)\", l, len(s), s)\n\t}\n}\n\nfunc mustHavePrefix(t *testing.T, s, pref string) {\n\tt.Helper()\n\tif !strings.HasPrefix(s, pref) {\n\t\tt.Fatalf(\"could not fix prefix %s in %s \", pref, s)\n\t}\n}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/.helmignore",
    "content": "tests/\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/Chart.yaml",
    "content": "apiVersion: v2\nname: traefik\ndescription: A Traefik based Kubernetes ingress controller\ntype: application\nversion: 10.3.6\nappVersion: 2.5.3\nkeywords:\n  - traefik\n  - ingress\nhome: https://traefik.io/\nsources:\n  - https://github.com/traefik/traefik\n  - https://github.com/traefik/traefik-helm-chart\nmaintainers:\n  - name: emilevauge\n    email: emile@vauge.com\n  - name: dtomcej\n    email: daniel.tomcej@gmail.com\n  - name: ldez\n    email: ldez@traefik.io\nicon: https://raw.githubusercontent.com/traefik/traefik/v2.3/docs/content/assets/img/traefik.logo.png\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/Guidelines.md",
    "content": "# Traefik Helm Chart Guidelines\n\nThis document outlines the guidelines for developing, managing and extending the Traefik helm chart.\n\nOptionallity\nAll non-critical features (Features not mandatory to starting Traefik) in the helm chart must be optional. All non-critical features should be disabled (commented out) in the values.yaml file. All optional non-critical features should be disabled (commented out) in the values.yaml file, and have a comment # (Optional) in the line above. This allows minimal configuration, and ease of extension.\n\n## Critical Feature Example\n\n```yaml\nimage:\n  name: traefik\n```\n\nThis feature is critical, and therefore is defined clearly in the values.yaml file.\n\n## Non-Critical Feature Example\n\n```yaml\n# storage:\n#   controlNode:\n#     type: emptyDir\n```\n\nThis feature is non-critical, and therefore is commented out by default in the values.yaml file.\n\nTo allow this, template blocks that use this need to recursively test for existence of values before using them:\n\n```yaml\n{{- if .Values.storage}}\n  {{- if .Values.storage.controlNode }}\n    //code\n    {{ .Values.storage.controlNode.type }}\n  {{- end }}\n{{- end }}\n```\n\nThe non-critical feature defaults should be populated so that they can be enabled by simply uncommenting the section in the values.yaml file.\n\n## Optional Non-Critical Feature Example\n\n```yaml\n# storage:\n#   controlNode:\n#     type: emptyDir\n#     # (Optional)\n#     # volume: 1Gi\n```\n\nThe volume option is clearly optional, and non-critical. It is commented out (apart from the storage section comment block), and is also preceeded by a comment of # (Optional) in the preceeding line. This facilitates configuration, when the storage section is uncommented, the optional features are still disabled by default.\n\nSimilar to non-critical feaures, these options need to be tested for existance before use in the template.\n\nNote\nThere can be optional values in critical features. These should just be added as an uncommented non-critical feature:\n\n```yaml\nimage:\n  name: traefik\n  tag: 2.0.0\n  # (Optional)\n  # pullPolicy: IfNotPresent\n```\n\nAlso, the first value under the primary value key does not require an optional comment:\n\n```yaml\n# ports:\n#   http: 80\n#   # (Optional)\n#   # https: 443\n```\n\nThis is because if the main subkey is not defined, the entirety of the feature is optional.\n\n## Whitespace\n\nExtra whitespace is to be avoided in templating. Conditionals should chomp whitespace:\n\n```yaml\n{{- if .Values }}\n{{- end }}\n```\n\nThere should be an empty commented line between each primary key in the values.yaml file to separate features from each other.\n\n## Values YAML Design\n\nThe values.yaml file is designed to be user-friendly. It does not have to resemble the templated configuration if it is not conducive. Similarly, value names to not have to correspond to fields in the tempate if it is not condusive.\n\n## Comments\n\nThe values.yaml file should not contain comments or explainations of what options are, or what values are available. The values table in the README file is for this purpose.\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/LICENSE",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright 2020 Containous\n   Copyright 2020 Traefik Labs\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/README.md",
    "content": "# Traefik\n\n[Traefik](https://traefik.io/) is a modern HTTP reverse proxy and load balancer made to deploy\nmicroservices with ease.\n\n## Introduction\n\nThis chart bootstraps Traefik version 2 as a Kubernetes ingress controller,\nusing Custom Resources `IngressRoute`: <https://docs.traefik.io/providers/kubernetes-crd/>.\n\n### Philosophy\n\nThe Traefik HelmChart is focused on Traefik deployment configuration.\n\nTo keep this HelmChart as generic as possible we tend\nto avoid integrating any third party solutions nor any specific use cases.\n\nAccordingly, the encouraged approach to fulfill your needs:\n1. override the default Traefik configuration values ([yaml file or cli](https://helm.sh/docs/chart_template_guide/values_files/))\n2. append your own configurations (`kubectl apply -f myconf.yaml`)\n3. extend this HelmChart ([as a Subchart](https://helm.sh/docs/chart_template_guide/subcharts_and_globals/))\n\n## Installing\n\n### Prerequisites\n\nWith the command `helm version`, make sure that you have:\n- Helm v3 [installed](https://helm.sh/docs/using_helm/#installing-helm)\n\nAdd Traefik's chart repository to Helm:\n\n```bash\nhelm repo add traefik https://helm.traefik.io/traefik\n```\n\nYou can update the chart repository by running:\n\n```bash\nhelm repo update\n```\n\n### Kubernetes Version Support\n\nDue to changes in CRD version support, the following versions of the chart are usable and supported on the following kubernetes versions:\n\n|                         | Kubernetes v1.15 and below | Kubernetes v1.16-v1.21 | Kubernetes v1.22 and above |\n|-------------------------|----------------------------|------------------------|----------------------------|\n| Chart v9.20.2 and below | [x]                        | [x]                    |                            |\n| Chart 10.0.0 and above  |                            | [x]                    | [x]                        |\n\n### Deploying Traefik\n\n```bash\nhelm install traefik traefik/traefik\n```\n\n#### Warning\n\nHelm v2 support was removed in the chart version 10.0.0.\n\n### Exposing the Traefik dashboard\n\nThis HelmChart does not expose the Traefik dashboard by default, for security concerns.\nThus, there are multiple ways to expose the dashboard.\nFor instance, the dashboard access could be achieved through a port-forward :\n\n```\nkubectl port-forward $(kubectl get pods --selector \"app.kubernetes.io/name=traefik\" --output=name) 9000:9000\n```\n\nAnother way would be to apply your own configuration, for instance,\nby defining and applying an IngressRoute CRD (`kubectl apply -f dashboard.yaml`):\n\n```yaml\n# dashboard.yaml\napiVersion: traefik.containo.us/v1alpha1\nkind: IngressRoute\nmetadata:\n  name: dashboard\nspec:\n  entryPoints:\n    - web\n  routes:\n    - match: Host(`traefik.localhost`) && (PathPrefix(`/dashboard`) || PathPrefix(`/api`))\n      kind: Rule\n      services:\n        - name: api@internal\n          kind: TraefikService\n```\n\n## Contributing\n\nIf you want to contribute to this chart, please read the [Contributing Guide](../CONTRIBUTING.md).\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/crds/ingressroute.yaml",
    "content": "apiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.4.1\n  creationTimestamp: null\n  name: ingressroutes.traefik.containo.us\nspec:\n  group: traefik.containo.us\n  names:\n    kind: IngressRoute\n    listKind: IngressRouteList\n    plural: ingressroutes\n    singular: ingressroute\n  scope: Namespaced\n  versions:\n  - name: v1alpha1\n    schema:\n      openAPIV3Schema:\n        description: IngressRoute is an Ingress CRD specification.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: IngressRouteSpec is a specification for a IngressRouteSpec\n              resource.\n            properties:\n              entryPoints:\n                items:\n                  type: string\n                type: array\n              routes:\n                items:\n                  description: Route contains the set of routes.\n                  properties:\n                    kind:\n                      enum:\n                      - Rule\n                      type: string\n                    match:\n                      type: string\n                    middlewares:\n                      items:\n                        description: MiddlewareRef is a ref to the Middleware resources.\n                        properties:\n                          name:\n                            type: string\n                          namespace:\n                            type: string\n                        required:\n                        - name\n                        type: object\n                      type: array\n                    priority:\n                      type: integer\n                    services:\n                      items:\n                        description: Service defines an upstream to proxy traffic.\n                        properties:\n                          kind:\n                            enum:\n                            - Service\n                            - TraefikService\n                            type: string\n                          name:\n                            description: Name is a reference to a Kubernetes Service\n                              object (for a load-balancer of servers), or to a TraefikService\n                              object (service load-balancer, mirroring, etc). The\n                              differentiation between the two is specified in the\n                              Kind field.\n                            type: string\n                          namespace:\n                            type: string\n                          passHostHeader:\n                            type: boolean\n                          port:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            x-kubernetes-int-or-string: true\n                          responseForwarding:\n                            description: ResponseForwarding holds configuration for\n                              the forward of the response.\n                            properties:\n                              flushInterval:\n                                type: string\n                            type: object\n                          scheme:\n                            type: string\n                          serversTransport:\n                            type: string\n                          sticky:\n                            description: Sticky holds the sticky configuration.\n                            properties:\n                              cookie:\n                                description: Cookie holds the sticky configuration\n                                  based on cookie.\n                                properties:\n                                  httpOnly:\n                                    type: boolean\n                                  name:\n                                    type: string\n                                  sameSite:\n                                    type: string\n                                  secure:\n                                    type: boolean\n                                type: object\n                            type: object\n                          strategy:\n                            type: string\n                          weight:\n                            description: Weight should only be specified when Name\n                              references a TraefikService object (and to be precise,\n                              one that embeds a Weighted Round Robin).\n                            type: integer\n                        required:\n                        - name\n                        type: object\n                      type: array\n                  required:\n                  - kind\n                  - match\n                  type: object\n                type: array\n              tls:\n                description: \"TLS contains the TLS certificates configuration of the\n                  routes. To enable Let's Encrypt, use an empty TLS struct, e.g. in\n                  YAML: \\n \\t tls: {} # inline format \\n \\t tls: \\t   secretName:\n                  # block format\"\n                properties:\n                  certResolver:\n                    type: string\n                  domains:\n                    items:\n                      description: Domain holds a domain name with SANs.\n                      properties:\n                        main:\n                          type: string\n                        sans:\n                          items:\n                            type: string\n                          type: array\n                      type: object\n                    type: array\n                  options:\n                    description: Options is a reference to a TLSOption, that specifies\n                      the parameters of the TLS connection.\n                    properties:\n                      name:\n                        type: string\n                      namespace:\n                        type: string\n                    required:\n                    - name\n                    type: object\n                  secretName:\n                    description: SecretName is the name of the referenced Kubernetes\n                      Secret to specify the certificate details.\n                    type: string\n                  store:\n                    description: Store is a reference to a TLSStore, that specifies\n                      the parameters of the TLS store.\n                    properties:\n                      name:\n                        type: string\n                      namespace:\n                        type: string\n                    required:\n                    - name\n                    type: object\n                type: object\n            required:\n            - routes\n            type: object\n        required:\n        - metadata\n        - spec\n        type: object\n    served: true\n    storage: true\nstatus:\n  acceptedNames:\n    kind: \"\"\n    plural: \"\"\n  conditions: []\n  storedVersions: []\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/crds/ingressroutetcp.yaml",
    "content": "apiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.4.1\n  creationTimestamp: null\n  name: ingressroutetcps.traefik.containo.us\nspec:\n  group: traefik.containo.us\n  names:\n    kind: IngressRouteTCP\n    listKind: IngressRouteTCPList\n    plural: ingressroutetcps\n    singular: ingressroutetcp\n  scope: Namespaced\n  versions:\n  - name: v1alpha1\n    schema:\n      openAPIV3Schema:\n        description: IngressRouteTCP is an Ingress CRD specification.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: IngressRouteTCPSpec is a specification for a IngressRouteTCPSpec\n              resource.\n            properties:\n              entryPoints:\n                items:\n                  type: string\n                type: array\n              routes:\n                items:\n                  description: RouteTCP contains the set of routes.\n                  properties:\n                    match:\n                      type: string\n                    middlewares:\n                      description: Middlewares contains references to MiddlewareTCP\n                        resources.\n                      items:\n                        description: ObjectReference is a generic reference to a Traefik\n                          resource.\n                        properties:\n                          name:\n                            type: string\n                          namespace:\n                            type: string\n                        required:\n                        - name\n                        type: object\n                      type: array\n                    services:\n                      items:\n                        description: ServiceTCP defines an upstream to proxy traffic.\n                        properties:\n                          name:\n                            type: string\n                          namespace:\n                            type: string\n                          port:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            x-kubernetes-int-or-string: true\n                          proxyProtocol:\n                            description: ProxyProtocol holds the ProxyProtocol configuration.\n                            properties:\n                              version:\n                                type: integer\n                            type: object\n                          terminationDelay:\n                            type: integer\n                          weight:\n                            type: integer\n                        required:\n                        - name\n                        - port\n                        type: object\n                      type: array\n                  required:\n                  - match\n                  type: object\n                type: array\n              tls:\n                description: \"TLSTCP contains the TLS certificates configuration of\n                  the routes. To enable Let's Encrypt, use an empty TLS struct, e.g.\n                  in YAML: \\n \\t tls: {} # inline format \\n \\t tls: \\t   secretName:\n                  # block format\"\n                properties:\n                  certResolver:\n                    type: string\n                  domains:\n                    items:\n                      description: Domain holds a domain name with SANs.\n                      properties:\n                        main:\n                          type: string\n                        sans:\n                          items:\n                            type: string\n                          type: array\n                      type: object\n                    type: array\n                  options:\n                    description: Options is a reference to a TLSOption, that specifies\n                      the parameters of the TLS connection.\n                    properties:\n                      name:\n                        type: string\n                      namespace:\n                        type: string\n                    required:\n                    - name\n                    type: object\n                  passthrough:\n                    type: boolean\n                  secretName:\n                    description: SecretName is the name of the referenced Kubernetes\n                      Secret to specify the certificate details.\n                    type: string\n                  store:\n                    description: Store is a reference to a TLSStore, that specifies\n                      the parameters of the TLS store.\n                    properties:\n                      name:\n                        type: string\n                      namespace:\n                        type: string\n                    required:\n                    - name\n                    type: object\n                type: object\n            required:\n            - routes\n            type: object\n        required:\n        - metadata\n        - spec\n        type: object\n    served: true\n    storage: true\nstatus:\n  acceptedNames:\n    kind: \"\"\n    plural: \"\"\n  conditions: []\n  storedVersions: []\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/crds/ingressrouteudp.yaml",
    "content": "apiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.4.1\n  creationTimestamp: null\n  name: ingressrouteudps.traefik.containo.us\nspec:\n  group: traefik.containo.us\n  names:\n    kind: IngressRouteUDP\n    listKind: IngressRouteUDPList\n    plural: ingressrouteudps\n    singular: ingressrouteudp\n  scope: Namespaced\n  versions:\n  - name: v1alpha1\n    schema:\n      openAPIV3Schema:\n        description: IngressRouteUDP is an Ingress CRD specification.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: IngressRouteUDPSpec is a specification for a IngressRouteUDPSpec\n              resource.\n            properties:\n              entryPoints:\n                items:\n                  type: string\n                type: array\n              routes:\n                items:\n                  description: RouteUDP contains the set of routes.\n                  properties:\n                    services:\n                      items:\n                        description: ServiceUDP defines an upstream to proxy traffic.\n                        properties:\n                          name:\n                            type: string\n                          namespace:\n                            type: string\n                          port:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            x-kubernetes-int-or-string: true\n                          weight:\n                            type: integer\n                        required:\n                        - name\n                        - port\n                        type: object\n                      type: array\n                  type: object\n                type: array\n            required:\n            - routes\n            type: object\n        required:\n        - metadata\n        - spec\n        type: object\n    served: true\n    storage: true\nstatus:\n  acceptedNames:\n    kind: \"\"\n    plural: \"\"\n  conditions: []\n  storedVersions: []\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/crds/middlewares.yaml",
    "content": "apiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.4.1\n  creationTimestamp: null\n  name: middlewares.traefik.containo.us\nspec:\n  group: traefik.containo.us\n  names:\n    kind: Middleware\n    listKind: MiddlewareList\n    plural: middlewares\n    singular: middleware\n  scope: Namespaced\n  versions:\n  - name: v1alpha1\n    schema:\n      openAPIV3Schema:\n        description: Middleware is a specification for a Middleware resource.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: MiddlewareSpec holds the Middleware configuration.\n            properties:\n              addPrefix:\n                description: AddPrefix holds the AddPrefix configuration.\n                properties:\n                  prefix:\n                    type: string\n                type: object\n              basicAuth:\n                description: BasicAuth holds the HTTP basic authentication configuration.\n                properties:\n                  headerField:\n                    type: string\n                  realm:\n                    type: string\n                  removeHeader:\n                    type: boolean\n                  secret:\n                    type: string\n                type: object\n              buffering:\n                description: Buffering holds the request/response buffering configuration.\n                properties:\n                  maxRequestBodyBytes:\n                    format: int64\n                    type: integer\n                  maxResponseBodyBytes:\n                    format: int64\n                    type: integer\n                  memRequestBodyBytes:\n                    format: int64\n                    type: integer\n                  memResponseBodyBytes:\n                    format: int64\n                    type: integer\n                  retryExpression:\n                    type: string\n                type: object\n              chain:\n                description: Chain holds a chain of middlewares.\n                properties:\n                  middlewares:\n                    items:\n                      description: MiddlewareRef is a ref to the Middleware resources.\n                      properties:\n                        name:\n                          type: string\n                        namespace:\n                          type: string\n                      required:\n                      - name\n                      type: object\n                    type: array\n                type: object\n              circuitBreaker:\n                description: CircuitBreaker holds the circuit breaker configuration.\n                properties:\n                  expression:\n                    type: string\n                type: object\n              compress:\n                description: Compress holds the compress configuration.\n                properties:\n                  excludedContentTypes:\n                    items:\n                      type: string\n                    type: array\n                type: object\n              contentType:\n                description: ContentType middleware - or rather its unique `autoDetect`\n                  option - specifies whether to let the `Content-Type` header, if\n                  it has not been set by the backend, be automatically set to a value\n                  derived from the contents of the response. As a proxy, the default\n                  behavior should be to leave the header alone, regardless of what\n                  the backend did with it. However, the historic default was to always\n                  auto-detect and set the header if it was nil, and it is going to\n                  be kept that way in order to support users currently relying on\n                  it. This middleware exists to enable the correct behavior until\n                  at least the default one can be changed in a future version.\n                properties:\n                  autoDetect:\n                    type: boolean\n                type: object\n              digestAuth:\n                description: DigestAuth holds the Digest HTTP authentication configuration.\n                properties:\n                  headerField:\n                    type: string\n                  realm:\n                    type: string\n                  removeHeader:\n                    type: boolean\n                  secret:\n                    type: string\n                type: object\n              errors:\n                description: ErrorPage holds the custom error page configuration.\n                properties:\n                  query:\n                    type: string\n                  service:\n                    description: Service defines an upstream to proxy traffic.\n                    properties:\n                      kind:\n                        enum:\n                        - Service\n                        - TraefikService\n                        type: string\n                      name:\n                        description: Name is a reference to a Kubernetes Service object\n                          (for a load-balancer of servers), or to a TraefikService\n                          object (service load-balancer, mirroring, etc). The differentiation\n                          between the two is specified in the Kind field.\n                        type: string\n                      namespace:\n                        type: string\n                      passHostHeader:\n                        type: boolean\n                      port:\n                        anyOf:\n                        - type: integer\n                        - type: string\n                        x-kubernetes-int-or-string: true\n                      responseForwarding:\n                        description: ResponseForwarding holds configuration for the\n                          forward of the response.\n                        properties:\n                          flushInterval:\n                            type: string\n                        type: object\n                      scheme:\n                        type: string\n                      serversTransport:\n                        type: string\n                      sticky:\n                        description: Sticky holds the sticky configuration.\n                        properties:\n                          cookie:\n                            description: Cookie holds the sticky configuration based\n                              on cookie.\n                            properties:\n                              httpOnly:\n                                type: boolean\n                              name:\n                                type: string\n                              sameSite:\n                                type: string\n                              secure:\n                                type: boolean\n                            type: object\n                        type: object\n                      strategy:\n                        type: string\n                      weight:\n                        description: Weight should only be specified when Name references\n                          a TraefikService object (and to be precise, one that embeds\n                          a Weighted Round Robin).\n                        type: integer\n                    required:\n                    - name\n                    type: object\n                  status:\n                    items:\n                      type: string\n                    type: array\n                type: object\n              forwardAuth:\n                description: ForwardAuth holds the http forward authentication configuration.\n                properties:\n                  address:\n                    type: string\n                  authRequestHeaders:\n                    items:\n                      type: string\n                    type: array\n                  authResponseHeaders:\n                    items:\n                      type: string\n                    type: array\n                  authResponseHeadersRegex:\n                    type: string\n                  tls:\n                    description: ClientTLS holds TLS specific configurations as client.\n                    properties:\n                      caOptional:\n                        type: boolean\n                      caSecret:\n                        type: string\n                      certSecret:\n                        type: string\n                      insecureSkipVerify:\n                        type: boolean\n                    type: object\n                  trustForwardHeader:\n                    type: boolean\n                type: object\n              headers:\n                description: Headers holds the custom header configuration.\n                properties:\n                  accessControlAllowCredentials:\n                    description: AccessControlAllowCredentials is only valid if true.\n                      false is ignored.\n                    type: boolean\n                  accessControlAllowHeaders:\n                    description: AccessControlAllowHeaders must be used in response\n                      to a preflight request with Access-Control-Request-Headers set.\n                    items:\n                      type: string\n                    type: array\n                  accessControlAllowMethods:\n                    description: AccessControlAllowMethods must be used in response\n                      to a preflight request with Access-Control-Request-Method set.\n                    items:\n                      type: string\n                    type: array\n                  accessControlAllowOriginList:\n                    description: AccessControlAllowOriginList is a list of allowable\n                      origins. Can also be a wildcard origin \"*\".\n                    items:\n                      type: string\n                    type: array\n                  accessControlAllowOriginListRegex:\n                    description: AccessControlAllowOriginListRegex is a list of allowable\n                      origins written following the Regular Expression syntax (https://golang.org/pkg/regexp/).\n                    items:\n                      type: string\n                    type: array\n                  accessControlExposeHeaders:\n                    description: AccessControlExposeHeaders sets valid headers for\n                      the response.\n                    items:\n                      type: string\n                    type: array\n                  accessControlMaxAge:\n                    description: AccessControlMaxAge sets the time that a preflight\n                      request may be cached.\n                    format: int64\n                    type: integer\n                  addVaryHeader:\n                    description: AddVaryHeader controls if the Vary header is automatically\n                      added/updated when the AccessControlAllowOriginList is set.\n                    type: boolean\n                  allowedHosts:\n                    items:\n                      type: string\n                    type: array\n                  browserXssFilter:\n                    type: boolean\n                  contentSecurityPolicy:\n                    type: string\n                  contentTypeNosniff:\n                    type: boolean\n                  customBrowserXSSValue:\n                    type: string\n                  customFrameOptionsValue:\n                    type: string\n                  customRequestHeaders:\n                    additionalProperties:\n                      type: string\n                    type: object\n                  customResponseHeaders:\n                    additionalProperties:\n                      type: string\n                    type: object\n                  featurePolicy:\n                    type: string\n                  forceSTSHeader:\n                    type: boolean\n                  frameDeny:\n                    type: boolean\n                  hostsProxyHeaders:\n                    items:\n                      type: string\n                    type: array\n                  isDevelopment:\n                    type: boolean\n                  publicKey:\n                    type: string\n                  referrerPolicy:\n                    type: string\n                  sslForceHost:\n                    description: 'Deprecated: use RedirectRegex instead.'\n                    type: boolean\n                  sslHost:\n                    description: 'Deprecated: use RedirectRegex instead.'\n                    type: string\n                  sslProxyHeaders:\n                    additionalProperties:\n                      type: string\n                    type: object\n                  sslRedirect:\n                    description: 'Deprecated: use EntryPoint redirection or RedirectScheme\n                      instead.'\n                    type: boolean\n                  sslTemporaryRedirect:\n                    description: 'Deprecated: use EntryPoint redirection or RedirectScheme\n                      instead.'\n                    type: boolean\n                  stsIncludeSubdomains:\n                    type: boolean\n                  stsPreload:\n                    type: boolean\n                  stsSeconds:\n                    format: int64\n                    type: integer\n                type: object\n              inFlightReq:\n                description: InFlightReq limits the number of requests being processed\n                  and served concurrently.\n                properties:\n                  amount:\n                    format: int64\n                    type: integer\n                  sourceCriterion:\n                    description: SourceCriterion defines what criterion is used to\n                      group requests as originating from a common source. If none\n                      are set, the default is to use the request's remote address\n                      field. All fields are mutually exclusive.\n                    properties:\n                      ipStrategy:\n                        description: IPStrategy holds the ip strategy configuration.\n                        properties:\n                          depth:\n                            type: integer\n                          excludedIPs:\n                            items:\n                              type: string\n                            type: array\n                        type: object\n                      requestHeaderName:\n                        type: string\n                      requestHost:\n                        type: boolean\n                    type: object\n                type: object\n              ipWhiteList:\n                description: IPWhiteList holds the ip white list configuration.\n                properties:\n                  ipStrategy:\n                    description: IPStrategy holds the ip strategy configuration.\n                    properties:\n                      depth:\n                        type: integer\n                      excludedIPs:\n                        items:\n                          type: string\n                        type: array\n                    type: object\n                  sourceRange:\n                    items:\n                      type: string\n                    type: array\n                type: object\n              passTLSClientCert:\n                description: PassTLSClientCert holds the TLS client cert headers configuration.\n                properties:\n                  info:\n                    description: TLSClientCertificateInfo holds the client TLS certificate\n                      info configuration.\n                    properties:\n                      issuer:\n                        description: TLSCLientCertificateDNInfo holds the client TLS\n                          certificate distinguished name info configuration. cf https://tools.ietf.org/html/rfc3739\n                        properties:\n                          commonName:\n                            type: boolean\n                          country:\n                            type: boolean\n                          domainComponent:\n                            type: boolean\n                          locality:\n                            type: boolean\n                          organization:\n                            type: boolean\n                          province:\n                            type: boolean\n                          serialNumber:\n                            type: boolean\n                        type: object\n                      notAfter:\n                        type: boolean\n                      notBefore:\n                        type: boolean\n                      sans:\n                        type: boolean\n                      serialNumber:\n                        type: boolean\n                      subject:\n                        description: TLSCLientCertificateDNInfo holds the client TLS\n                          certificate distinguished name info configuration. cf https://tools.ietf.org/html/rfc3739\n                        properties:\n                          commonName:\n                            type: boolean\n                          country:\n                            type: boolean\n                          domainComponent:\n                            type: boolean\n                          locality:\n                            type: boolean\n                          organization:\n                            type: boolean\n                          province:\n                            type: boolean\n                          serialNumber:\n                            type: boolean\n                        type: object\n                    type: object\n                  pem:\n                    type: boolean\n                type: object\n              plugin:\n                additionalProperties:\n                  x-kubernetes-preserve-unknown-fields: true\n                type: object\n              rateLimit:\n                description: RateLimit holds the rate limiting configuration for a\n                  given router.\n                properties:\n                  average:\n                    format: int64\n                    type: integer\n                  burst:\n                    format: int64\n                    type: integer\n                  period:\n                    anyOf:\n                    - type: integer\n                    - type: string\n                    x-kubernetes-int-or-string: true\n                  sourceCriterion:\n                    description: SourceCriterion defines what criterion is used to\n                      group requests as originating from a common source. If none\n                      are set, the default is to use the request's remote address\n                      field. All fields are mutually exclusive.\n                    properties:\n                      ipStrategy:\n                        description: IPStrategy holds the ip strategy configuration.\n                        properties:\n                          depth:\n                            type: integer\n                          excludedIPs:\n                            items:\n                              type: string\n                            type: array\n                        type: object\n                      requestHeaderName:\n                        type: string\n                      requestHost:\n                        type: boolean\n                    type: object\n                type: object\n              redirectRegex:\n                description: RedirectRegex holds the redirection configuration.\n                properties:\n                  permanent:\n                    type: boolean\n                  regex:\n                    type: string\n                  replacement:\n                    type: string\n                type: object\n              redirectScheme:\n                description: RedirectScheme holds the scheme redirection configuration.\n                properties:\n                  permanent:\n                    type: boolean\n                  port:\n                    type: string\n                  scheme:\n                    type: string\n                type: object\n              replacePath:\n                description: ReplacePath holds the ReplacePath configuration.\n                properties:\n                  path:\n                    type: string\n                type: object\n              replacePathRegex:\n                description: ReplacePathRegex holds the ReplacePathRegex configuration.\n                properties:\n                  regex:\n                    type: string\n                  replacement:\n                    type: string\n                type: object\n              retry:\n                description: Retry holds the retry configuration.\n                properties:\n                  attempts:\n                    type: integer\n                  initialInterval:\n                    anyOf:\n                    - type: integer\n                    - type: string\n                    x-kubernetes-int-or-string: true\n                type: object\n              stripPrefix:\n                description: StripPrefix holds the StripPrefix configuration.\n                properties:\n                  forceSlash:\n                    type: boolean\n                  prefixes:\n                    items:\n                      type: string\n                    type: array\n                type: object\n              stripPrefixRegex:\n                description: StripPrefixRegex holds the StripPrefixRegex configuration.\n                properties:\n                  regex:\n                    items:\n                      type: string\n                    type: array\n                type: object\n            type: object\n        required:\n        - metadata\n        - spec\n        type: object\n    served: true\n    storage: true\nstatus:\n  acceptedNames:\n    kind: \"\"\n    plural: \"\"\n  conditions: []\n  storedVersions: []\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/crds/middlewarestcp.yaml",
    "content": "apiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.4.1\n  creationTimestamp: null\n  name: middlewaretcps.traefik.containo.us\nspec:\n  group: traefik.containo.us\n  names:\n    kind: MiddlewareTCP\n    listKind: MiddlewareTCPList\n    plural: middlewaretcps\n    singular: middlewaretcp\n  scope: Namespaced\n  versions:\n  - name: v1alpha1\n    schema:\n      openAPIV3Schema:\n        description: MiddlewareTCP is a specification for a MiddlewareTCP resource.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: MiddlewareTCPSpec holds the MiddlewareTCP configuration.\n            properties:\n              ipWhiteList:\n                description: TCPIPWhiteList holds the TCP ip white list configuration.\n                properties:\n                  sourceRange:\n                    items:\n                      type: string\n                    type: array\n                type: object\n            type: object\n        required:\n        - metadata\n        - spec\n        type: object\n    served: true\n    storage: true\nstatus:\n  acceptedNames:\n    kind: \"\"\n    plural: \"\"\n  conditions: []\n  storedVersions: []\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/crds/serverstransports.yaml",
    "content": "apiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.4.1\n  creationTimestamp: null\n  name: serverstransports.traefik.containo.us\nspec:\n  group: traefik.containo.us\n  names:\n    kind: ServersTransport\n    listKind: ServersTransportList\n    plural: serverstransports\n    singular: serverstransport\n  scope: Namespaced\n  versions:\n  - name: v1alpha1\n    schema:\n      openAPIV3Schema:\n        description: ServersTransport is a specification for a ServersTransport resource.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: ServersTransportSpec options to configure communication between\n              Traefik and the servers.\n            properties:\n              certificatesSecrets:\n                description: Certificates for mTLS.\n                items:\n                  type: string\n                type: array\n              disableHTTP2:\n                description: Disable HTTP/2 for connections with backend servers.\n                type: boolean\n              forwardingTimeouts:\n                description: Timeouts for requests forwarded to the backend servers.\n                properties:\n                  dialTimeout:\n                    anyOf:\n                    - type: integer\n                    - type: string\n                    description: The amount of time to wait until a connection to\n                      a backend server can be established. If zero, no timeout exists.\n                    x-kubernetes-int-or-string: true\n                  idleConnTimeout:\n                    anyOf:\n                    - type: integer\n                    - type: string\n                    description: The maximum period for which an idle HTTP keep-alive\n                      connection will remain open before closing itself.\n                    x-kubernetes-int-or-string: true\n                  responseHeaderTimeout:\n                    anyOf:\n                    - type: integer\n                    - type: string\n                    description: The amount of time to wait for a server's response\n                      headers after fully writing the request (including its body,\n                      if any). If zero, no timeout exists.\n                    x-kubernetes-int-or-string: true\n                type: object\n              insecureSkipVerify:\n                description: Disable SSL certificate verification.\n                type: boolean\n              maxIdleConnsPerHost:\n                description: If non-zero, controls the maximum idle (keep-alive) to\n                  keep per-host. If zero, DefaultMaxIdleConnsPerHost is used.\n                type: integer\n              rootCAsSecrets:\n                description: Add cert file for self-signed certificate.\n                items:\n                  type: string\n                type: array\n              serverName:\n                description: ServerName used to contact the server.\n                type: string\n            type: object\n        required:\n        - metadata\n        - spec\n        type: object\n    served: true\n    storage: true\nstatus:\n  acceptedNames:\n    kind: \"\"\n    plural: \"\"\n  conditions: []\n  storedVersions: []\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/crds/tlsoptions.yaml",
    "content": "apiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.4.1\n  creationTimestamp: null\n  name: tlsoptions.traefik.containo.us\nspec:\n  group: traefik.containo.us\n  names:\n    kind: TLSOption\n    listKind: TLSOptionList\n    plural: tlsoptions\n    singular: tlsoption\n  scope: Namespaced\n  versions:\n  - name: v1alpha1\n    schema:\n      openAPIV3Schema:\n        description: TLSOption is a specification for a TLSOption resource.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: TLSOptionSpec configures TLS for an entry point.\n            properties:\n              alpnProtocols:\n                items:\n                  type: string\n                type: array\n              cipherSuites:\n                items:\n                  type: string\n                type: array\n              clientAuth:\n                description: ClientAuth defines the parameters of the client authentication\n                  part of the TLS connection, if any.\n                properties:\n                  clientAuthType:\n                    description: ClientAuthType defines the client authentication\n                      type to apply.\n                    enum:\n                    - NoClientCert\n                    - RequestClientCert\n                    - RequireAnyClientCert\n                    - VerifyClientCertIfGiven\n                    - RequireAndVerifyClientCert\n                    type: string\n                  secretNames:\n                    description: SecretName is the name of the referenced Kubernetes\n                      Secret to specify the certificate details.\n                    items:\n                      type: string\n                    type: array\n                type: object\n              curvePreferences:\n                items:\n                  type: string\n                type: array\n              maxVersion:\n                type: string\n              minVersion:\n                type: string\n              preferServerCipherSuites:\n                type: boolean\n              sniStrict:\n                type: boolean\n            type: object\n        required:\n        - metadata\n        - spec\n        type: object\n    served: true\n    storage: true\nstatus:\n  acceptedNames:\n    kind: \"\"\n    plural: \"\"\n  conditions: []\n  storedVersions: []\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/crds/tlsstores.yaml",
    "content": "apiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.4.1\n  creationTimestamp: null\n  name: tlsstores.traefik.containo.us\nspec:\n  group: traefik.containo.us\n  names:\n    kind: TLSStore\n    listKind: TLSStoreList\n    plural: tlsstores\n    singular: tlsstore\n  scope: Namespaced\n  versions:\n  - name: v1alpha1\n    schema:\n      openAPIV3Schema:\n        description: TLSStore is a specification for a TLSStore resource.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: TLSStoreSpec configures a TLSStore resource.\n            properties:\n              defaultCertificate:\n                description: DefaultCertificate holds a secret name for the TLSOption\n                  resource.\n                properties:\n                  secretName:\n                    description: SecretName is the name of the referenced Kubernetes\n                      Secret to specify the certificate details.\n                    type: string\n                required:\n                - secretName\n                type: object\n            required:\n            - defaultCertificate\n            type: object\n        required:\n        - metadata\n        - spec\n        type: object\n    served: true\n    storage: true\nstatus:\n  acceptedNames:\n    kind: \"\"\n    plural: \"\"\n  conditions: []\n  storedVersions: []\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/crds/traefikservices.yaml",
    "content": "apiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.4.1\n  creationTimestamp: null\n  name: traefikservices.traefik.containo.us\nspec:\n  group: traefik.containo.us\n  names:\n    kind: TraefikService\n    listKind: TraefikServiceList\n    plural: traefikservices\n    singular: traefikservice\n  scope: Namespaced\n  versions:\n  - name: v1alpha1\n    schema:\n      openAPIV3Schema:\n        description: TraefikService is the specification for a service (that an IngressRoute\n          refers to) that is usually not a terminal service (i.e. not a pod of servers),\n          as opposed to a Kubernetes Service. That is to say, it usually refers to\n          other (children) services, which themselves can be TraefikServices or Services.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: ServiceSpec defines whether a TraefikService is a load-balancer\n              of services or a mirroring service.\n            properties:\n              mirroring:\n                description: Mirroring defines a mirroring service, which is composed\n                  of a main load-balancer, and a list of mirrors.\n                properties:\n                  kind:\n                    enum:\n                    - Service\n                    - TraefikService\n                    type: string\n                  maxBodySize:\n                    format: int64\n                    type: integer\n                  mirrors:\n                    items:\n                      description: MirrorService defines one of the mirrors of a Mirroring\n                        service.\n                      properties:\n                        kind:\n                          enum:\n                          - Service\n                          - TraefikService\n                          type: string\n                        name:\n                          description: Name is a reference to a Kubernetes Service\n                            object (for a load-balancer of servers), or to a TraefikService\n                            object (service load-balancer, mirroring, etc). The differentiation\n                            between the two is specified in the Kind field.\n                          type: string\n                        namespace:\n                          type: string\n                        passHostHeader:\n                          type: boolean\n                        percent:\n                          type: integer\n                        port:\n                          anyOf:\n                          - type: integer\n                          - type: string\n                          x-kubernetes-int-or-string: true\n                        responseForwarding:\n                          description: ResponseForwarding holds configuration for\n                            the forward of the response.\n                          properties:\n                            flushInterval:\n                              type: string\n                          type: object\n                        scheme:\n                          type: string\n                        serversTransport:\n                          type: string\n                        sticky:\n                          description: Sticky holds the sticky configuration.\n                          properties:\n                            cookie:\n                              description: Cookie holds the sticky configuration based\n                                on cookie.\n                              properties:\n                                httpOnly:\n                                  type: boolean\n                                name:\n                                  type: string\n                                sameSite:\n                                  type: string\n                                secure:\n                                  type: boolean\n                              type: object\n                          type: object\n                        strategy:\n                          type: string\n                        weight:\n                          description: Weight should only be specified when Name references\n                            a TraefikService object (and to be precise, one that embeds\n                            a Weighted Round Robin).\n                          type: integer\n                      required:\n                      - name\n                      type: object\n                    type: array\n                  name:\n                    description: Name is a reference to a Kubernetes Service object\n                      (for a load-balancer of servers), or to a TraefikService object\n                      (service load-balancer, mirroring, etc). The differentiation\n                      between the two is specified in the Kind field.\n                    type: string\n                  namespace:\n                    type: string\n                  passHostHeader:\n                    type: boolean\n                  port:\n                    anyOf:\n                    - type: integer\n                    - type: string\n                    x-kubernetes-int-or-string: true\n                  responseForwarding:\n                    description: ResponseForwarding holds configuration for the forward\n                      of the response.\n                    properties:\n                      flushInterval:\n                        type: string\n                    type: object\n                  scheme:\n                    type: string\n                  serversTransport:\n                    type: string\n                  sticky:\n                    description: Sticky holds the sticky configuration.\n                    properties:\n                      cookie:\n                        description: Cookie holds the sticky configuration based on\n                          cookie.\n                        properties:\n                          httpOnly:\n                            type: boolean\n                          name:\n                            type: string\n                          sameSite:\n                            type: string\n                          secure:\n                            type: boolean\n                        type: object\n                    type: object\n                  strategy:\n                    type: string\n                  weight:\n                    description: Weight should only be specified when Name references\n                      a TraefikService object (and to be precise, one that embeds\n                      a Weighted Round Robin).\n                    type: integer\n                required:\n                - name\n                type: object\n              weighted:\n                description: WeightedRoundRobin defines a load-balancer of services.\n                properties:\n                  services:\n                    items:\n                      description: Service defines an upstream to proxy traffic.\n                      properties:\n                        kind:\n                          enum:\n                          - Service\n                          - TraefikService\n                          type: string\n                        name:\n                          description: Name is a reference to a Kubernetes Service\n                            object (for a load-balancer of servers), or to a TraefikService\n                            object (service load-balancer, mirroring, etc). The differentiation\n                            between the two is specified in the Kind field.\n                          type: string\n                        namespace:\n                          type: string\n                        passHostHeader:\n                          type: boolean\n                        port:\n                          anyOf:\n                          - type: integer\n                          - type: string\n                          x-kubernetes-int-or-string: true\n                        responseForwarding:\n                          description: ResponseForwarding holds configuration for\n                            the forward of the response.\n                          properties:\n                            flushInterval:\n                              type: string\n                          type: object\n                        scheme:\n                          type: string\n                        serversTransport:\n                          type: string\n                        sticky:\n                          description: Sticky holds the sticky configuration.\n                          properties:\n                            cookie:\n                              description: Cookie holds the sticky configuration based\n                                on cookie.\n                              properties:\n                                httpOnly:\n                                  type: boolean\n                                name:\n                                  type: string\n                                sameSite:\n                                  type: string\n                                secure:\n                                  type: boolean\n                              type: object\n                          type: object\n                        strategy:\n                          type: string\n                        weight:\n                          description: Weight should only be specified when Name references\n                            a TraefikService object (and to be precise, one that embeds\n                            a Weighted Round Robin).\n                          type: integer\n                      required:\n                      - name\n                      type: object\n                    type: array\n                  sticky:\n                    description: Sticky holds the sticky configuration.\n                    properties:\n                      cookie:\n                        description: Cookie holds the sticky configuration based on\n                          cookie.\n                        properties:\n                          httpOnly:\n                            type: boolean\n                          name:\n                            type: string\n                          sameSite:\n                            type: string\n                          secure:\n                            type: boolean\n                        type: object\n                    type: object\n                type: object\n            type: object\n        required:\n        - metadata\n        - spec\n        type: object\n    served: true\n    storage: true\nstatus:\n  acceptedNames:\n    kind: \"\"\n    plural: \"\"\n  conditions: []\n  storedVersions: []\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/templates/_helpers.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n\n{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"traefik.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"traefik.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"traefik.fullname\" -}}\n{{- if .Values.fullnameOverride -}}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" -}}\n{{- else -}}\n{{- $name := default .Chart.Name .Values.nameOverride -}}\n{{- if contains $name .Release.Name -}}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" -}}\n{{- else -}}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nThe name of the service account to use\n*/}}\n{{- define \"traefik.serviceAccountName\" -}}\n{{- default (include \"traefik.fullname\" .) .Values.serviceAccount.name -}}\n{{- end -}}\n\n{{/*\nConstruct the path for the providers.kubernetesingress.ingressendpoint.publishedservice.\nBy convention this will simply use the <namespace>/<service-name> to match the name of the\nservice generated.\nUsers can provide an override for an explicit service they want bound via `.Values.providers.kubernetesIngress.publishedService.pathOverride`\n*/}}\n{{- define \"providers.kubernetesIngress.publishedServicePath\" -}}\n{{- $defServiceName := printf \"%s/%s\" .Release.Namespace (include \"traefik.fullname\" .) -}}\n{{- $servicePath := default $defServiceName .Values.providers.kubernetesIngress.publishedService.pathOverride }}\n{{- print $servicePath | trimSuffix \"-\" -}}\n{{- end -}}\n\n{{/*\nConstruct a comma-separated list of whitelisted namespaces\n*/}}\n{{- define \"providers.kubernetesIngress.namespaces\" -}}\n{{- default .Release.Namespace (join \",\" .Values.providers.kubernetesIngress.namespaces) }}\n{{- end -}}\n{{- define \"providers.kubernetesCRD.namespaces\" -}}\n{{- default .Release.Namespace (join \",\" .Values.providers.kubernetesCRD.namespaces) }}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/templates/_podtemplate.tpl",
    "content": "{{- define \"traefik.podTemplate\" }}\n    metadata:\n      annotations:\n      {{- with .Values.deployment.podAnnotations }}\n      {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- if .Values.metrics }}\n      {{- if .Values.metrics.prometheus }}\n        prometheus.io/scrape: \"true\"\n        prometheus.io/path: \"/metrics\"\n        prometheus.io/port: {{ quote (index .Values.ports .Values.metrics.prometheus.entryPoint).port }}\n      {{- end }}\n      {{- end }}\n      labels:\n        app.kubernetes.io/name: {{ template \"traefik.name\" . }}\n        helm.sh/chart: {{ template \"traefik.chart\" . }}\n        app.kubernetes.io/managed-by: {{ .Release.Service }}\n        app.kubernetes.io/instance: {{ .Release.Name }}\n      {{- with .Values.deployment.podLabels }}\n      {{- toYaml . | nindent 8 }}\n      {{- end }}\n    spec:\n      {{- with .Values.deployment.imagePullSecrets }}\n      imagePullSecrets:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      serviceAccountName: {{ include \"traefik.serviceAccountName\" . }}\n      terminationGracePeriodSeconds: 60\n      hostNetwork: {{ .Values.hostNetwork }}\n      {{- with .Values.deployment.dnsPolicy }}\n      dnsPolicy: {{ . }}\n      {{- end }}\n      {{- with .Values.deployment.initContainers }}\n      initContainers:\n      {{- toYaml . | nindent 6 }}\n      {{- end }}\n      containers:\n      - image: \"{{ .Values.image.name }}:{{ default .Chart.AppVersion .Values.image.tag }}\"\n        imagePullPolicy: {{ .Values.image.pullPolicy }}\n        name: {{ template \"traefik.fullname\" . }}\n        resources:\n          {{- with .Values.resources }}\n          {{- toYaml . | nindent 10 }}\n          {{- end }}\n        readinessProbe:\n          httpGet:\n            path: /ping\n            port: {{ default .Values.ports.traefik.port .Values.ports.traefik.healthchecksPort }}\n          failureThreshold: 1\n          initialDelaySeconds: 10\n          periodSeconds: 10\n          successThreshold: 1\n          timeoutSeconds: 2\n        livenessProbe:\n          httpGet:\n            path: /ping\n            port: {{ default .Values.ports.traefik.port .Values.ports.traefik.healthchecksPort }}\n          failureThreshold: 3\n          initialDelaySeconds: 10\n          periodSeconds: 10\n          successThreshold: 1\n          timeoutSeconds: 2\n        ports:\n        {{- range $name, $config := .Values.ports }}\n        {{- if $config }}\n        - name: {{ $name | quote }}\n          containerPort: {{ $config.port }}\n          {{- if $config.hostPort }}\n          hostPort: {{ $config.hostPort }}\n          {{- end }}\n          {{- if $config.hostIP }}\n          hostIP: {{ $config.hostIP }}\n          {{- end }}\n          protocol: {{ default \"TCP\" $config.protocol | quote }}\n        {{- end }}\n        {{- end }}\n        {{- with .Values.securityContext }}\n        securityContext:\n          {{- toYaml . | nindent 10 }}\n        {{- end }}\n        volumeMounts:\n          - name: {{ .Values.persistence.name }}\n            mountPath: {{ .Values.persistence.path }}\n            {{- if .Values.persistence.subPath }}\n            subPath: {{ .Values.persistence.subPath }}\n            {{- end }}\n          - name: tmp\n            mountPath: /tmp\n          {{- $root := . }}\n          {{- range .Values.volumes }}\n          - name: {{ tpl (.name) $root }}\n            mountPath: {{ .mountPath }}\n            readOnly: true\n          {{- end }}\n          {{- if .Values.experimental.plugins.enabled }}\n          - name: plugins\n            mountPath: \"/plugins-storage\"\n          {{- end }}\n          {{- if .Values.additionalVolumeMounts }}\n            {{- toYaml .Values.additionalVolumeMounts | nindent 10 }}\n          {{- end }}\n        args:\n          {{- with .Values.globalArguments }}\n          {{- range . }}\n          - {{ . | quote }}\n          {{- end }}\n          {{- end }}\n          {{- range $name, $config := .Values.ports }}\n          {{- if $config }}\n          - \"--entryPoints.{{$name}}.address=:{{ $config.port }}/{{ default \"tcp\" $config.protocol | lower }}\"\n          {{- end }}\n          {{- end }}\n          - \"--api.dashboard=true\"\n          - \"--ping=true\"\n          {{- if .Values.metrics }}\n          {{- if .Values.metrics.datadog }}\n          - \"--metrics.datadog=true\"\n          - \"--metrics.datadog.address={{ .Values.metrics.datadog.address }}\"\n          {{- end }}\n          {{- if .Values.metrics.influxdb }}\n          - \"--metrics.influxdb=true\"\n          - \"--metrics.influxdb.address={{ .Values.metrics.influxdb.address }}\"\n          - \"--metrics.influxdb.protocol={{ .Values.metrics.influxdb.protocol }}\"\n          {{- end }}\n          {{- if .Values.metrics.prometheus }}\n          - \"--metrics.prometheus=true\"\n          - \"--metrics.prometheus.entrypoint={{ .Values.metrics.prometheus.entryPoint }}\"\n          {{- end }}\n          {{- if .Values.metrics.statsd }}\n          - \"--metrics.statsd=true\"\n          - \"--metrics.statsd.address={{ .Values.metrics.statsd.address }}\"\n          {{- end }}\n          {{- end }}\n          {{- if .Values.providers.kubernetesCRD.enabled }}\n          - \"--providers.kubernetescrd\"\n          {{- if .Values.providers.kubernetesCRD.allowCrossNamespace }}\n          - \"--providers.kubernetescrd.allowCrossNamespace=true\"\n          {{- end }}\n          {{- end }}\n          {{- if .Values.providers.kubernetesIngress.enabled }}\n          - \"--providers.kubernetesingress\"\n          {{- if and .Values.service.enabled .Values.providers.kubernetesIngress.publishedService.enabled }}\n          - \"--providers.kubernetesingress.ingressendpoint.publishedservice={{ template \"providers.kubernetesIngress.publishedServicePath\" . }}\"\n          {{- end }}\n          {{- if .Values.providers.kubernetesIngress.labelSelector }}\n          - \"--providers.kubernetesingress.labelSelector={{ .Values.providers.kubernetesIngress.labelSelector }}\"\n          {{- end }}\n          {{- end }}\n          {{- if .Values.experimental.kubernetesGateway.enabled }}\n          - \"--providers.kubernetesgateway\"\n          - \"--experimental.kubernetesgateway\"\n          {{- end }}\n          {{- if and .Values.rbac.enabled .Values.rbac.namespaced }}\n          {{- if .Values.providers.kubernetesCRD.enabled }}\n          - \"--providers.kubernetescrd.namespaces={{ template \"providers.kubernetesCRD.namespaces\" . }}\"\n          {{- end }}\n          {{- if .Values.providers.kubernetesIngress.enabled }}\n          - \"--providers.kubernetesingress.namespaces={{ template \"providers.kubernetesIngress.namespaces\" . }}\"\n          {{- end }}\n          {{- end }}\n          {{- range $entrypoint, $config := $.Values.ports }}\n          {{- if $config.redirectTo }}\n          {{- $toPort := index $.Values.ports $config.redirectTo }}\n          - \"--entrypoints.{{ $entrypoint }}.http.redirections.entryPoint.to=:{{ $toPort.exposedPort }}\"\n          - \"--entrypoints.{{ $entrypoint }}.http.redirections.entryPoint.scheme=https\"\n          {{- end }}\n          {{- if $config.tls }}\n          {{- if $config.tls.enabled }}\n          - \"--entrypoints.{{ $entrypoint }}.http.tls=true\"\n          {{- if $config.tls.options }}\n          - \"--entrypoints.{{ $entrypoint }}.http.tls.options={{ $config.tls.options }}\"\n          {{- end }}\n          {{- if $config.tls.certResolver }}\n          - \"--entrypoints.{{ $entrypoint }}.http.tls.certResolver={{ $config.tls.certResolver }}\"\n          {{- end }}\n          {{- if $config.tls.domains }}\n          {{- range $index, $domain := $config.tls.domains }}\n          {{- if $domain.main }}\n          - \"--entrypoints.{{ $entrypoint }}.http.tls.domains[{{ $index }}].main={{ $domain.main }}\"\n          {{- end }}\n          {{- if $domain.sans }}\n          - \"--entrypoints.{{ $entrypoint }}.http.tls.domains[{{ $index }}].sans={{ join \",\" $domain.sans }}\"\n          {{- end }}\n          {{- end }}\n          {{- end }}\n          {{- end }}\n          {{- end }}\n          {{- end }}\n          {{- with .Values.logs }}\n          {{- if .general.format }}\n          - \"--log.format={{ .general.format }}\"\n          {{- end }}\n          {{- if ne .general.level \"ERROR\" }}\n          - \"--log.level={{ .general.level | upper }}\"\n          {{- end }}\n          {{- if .access.enabled }}\n          - \"--accesslog=true\"\n          {{- if .access.format }}\n          - \"--accesslog.format={{ .access.format }}\"\n          {{- end }}\n          {{- if .access.bufferingsize }}\n          - \"--accesslog.bufferingsize={{ .access.bufferingsize }}\"\n          {{- end }}\n          {{- if .access.filters }}\n          {{- if .access.filters.statuscodes }}\n          - \"--accesslog.filters.statuscodes={{ .access.filters.statuscodes }}\"\n          {{- end }}\n          {{- if .access.filters.retryattempts }}\n          - \"--accesslog.filters.retryattempts\"\n          {{- end }}\n          {{- if .access.filters.minduration }}\n          - \"--accesslog.filters.minduration={{ .access.filters.minduration }}\"\n          {{- end }}\n          {{- end }}\n          - \"--accesslog.fields.defaultmode={{ .access.fields.general.defaultmode }}\"\n          {{- range $fieldname, $fieldaction := .access.fields.general.names }}\n          - \"--accesslog.fields.names.{{ $fieldname }}={{ $fieldaction }}\"\n          {{- end }}\n          - \"--accesslog.fields.headers.defaultmode={{ .access.fields.headers.defaultmode }}\"\n          {{- range $fieldname, $fieldaction := .access.fields.headers.names }}\n          - \"--accesslog.fields.headers.names.{{ $fieldname }}={{ $fieldaction }}\"\n          {{- end }}\n          {{- end }}\n          {{- end }}\n          {{- if .Values.pilot.enabled }}\n          - \"--pilot.token={{ .Values.pilot.token }}\"\n          {{- end }}\n          {{- if hasKey .Values.pilot \"dashboard\" }}\n          - \"--pilot.dashboard={{ .Values.pilot.dashboard }}\"\n          {{- end }}\n          {{- with .Values.additionalArguments }}\n          {{- range . }}\n          - {{ . | quote }}\n          {{- end }}\n          {{- end }}\n        {{- with .Values.env }}\n        env:\n          {{- toYaml . | nindent 10 }}\n        {{- end }}\n        {{- with .Values.envFrom }}\n        envFrom:\n          {{- toYaml . | nindent 10 }}\n        {{- end }}\n      {{- if .Values.deployment.additionalContainers }}\n        {{- toYaml .Values.deployment.additionalContainers | nindent 6 }}\n      {{- end }}\n      volumes:\n        - name: {{ .Values.persistence.name }}\n          {{- if .Values.persistence.enabled }}\n          persistentVolumeClaim:\n            claimName: {{ default (include \"traefik.fullname\" .) .Values.persistence.existingClaim }}\n          {{- else }}\n          emptyDir: {}\n          {{- end }}\n        - name: tmp\n          emptyDir: {}\n        {{- $root := . }}\n        {{- range .Values.volumes }}\n        - name: {{ tpl (.name) $root }}\n          {{- if eq .type \"secret\" }}\n          secret:\n            secretName: {{ tpl (.name) $root }}\n          {{- else if eq .type \"configMap\" }}\n          configMap:\n            name: {{ tpl (.name) $root }}\n          {{- end }}\n        {{- end }}\n        {{- if .Values.deployment.additionalVolumes }}\n          {{- toYaml .Values.deployment.additionalVolumes | nindent 8 }}\n        {{- end }}\n        {{- if .Values.experimental.plugins.enabled }}\n        - name: plugins\n          emptyDir: {}\n        {{- end }}\n      {{- with .Values.affinity }}\n      affinity:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.tolerations }}\n      tolerations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.nodeSelector }}\n      nodeSelector:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- if .Values.priorityClassName }}\n      priorityClassName: {{ .Values.priorityClassName }}\n      {{- end }}\n      {{- with .Values.podSecurityContext }}\n      securityContext:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n{{ end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/templates/daemonset.yaml",
    "content": "{{- if and .Values.deployment.enabled (eq .Values.deployment.kind \"DaemonSet\") -}}\n  {{- with .Values.additionalArguments -}}\n    {{- range . -}}\n      {{- if contains \".acme.\" . -}}\n        {{- fail (printf \"ACME functionality is not supported when running Traefik as a DaemonSet\") -}}\n      {{- end -}}\n    {{- end -}}\n  {{- end -}}\n  {{- if eq (default .Chart.AppVersion .Values.image.tag) \"latest\" }}\n    {{- fail \"\\n\\n ERROR: latest tag should not be used\" }}\n  {{- end }}\n\n---\napiVersion: apps/v1\nkind: DaemonSet\nmetadata:\n  name: {{ template \"traefik.fullname\" . }}\n  labels:\n    app.kubernetes.io/name: {{ template \"traefik.name\" . }}\n    helm.sh/chart: {{ template \"traefik.chart\" . }}\n    app.kubernetes.io/managed-by: {{ .Release.Service }}\n    app.kubernetes.io/instance: {{ .Release.Name }}\n  {{- with .Values.deployment.labels }}\n  {{- toYaml . | nindent 4 }}\n  {{- end }}\n  annotations:\n  {{- with .Values.deployment.annotations }}\n  {{- toYaml . | nindent 4 }}\n  {{- end }}\nspec:\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: {{ template \"traefik.name\" . }}\n      app.kubernetes.io/instance: {{ .Release.Name }}\n  updateStrategy:\n    type: RollingUpdate\n    rollingUpdate:\n      maxUnavailable: {{ .Values.rollingUpdate.maxUnavailable }}\n  template: {{ template \"traefik.podTemplate\" . }}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/templates/dashboard-hook-ingressroute.yaml",
    "content": "{{- if .Values.ingressRoute.dashboard.enabled -}}\napiVersion: traefik.containo.us/v1alpha1\nkind: IngressRoute\nmetadata:\n  name: {{ template \"traefik.fullname\" . }}-dashboard\n  annotations:\n    helm.sh/hook: \"post-install,post-upgrade\"\n    {{- with .Values.ingressRoute.dashboard.annotations }}\n    {{- toYaml . | nindent 4 }}\n    {{- end }}\n  labels:\n    app.kubernetes.io/name: {{ template \"traefik.name\" . }}\n    helm.sh/chart: {{ template \"traefik.chart\" . }}\n    app.kubernetes.io/managed-by: {{ .Release.Service }}\n    app.kubernetes.io/instance: {{ .Release.Name }}\n    {{- with .Values.ingressRoute.dashboard.labels }}\n    {{- toYaml . | nindent 4 }}\n    {{- end }}\nspec:\n  entryPoints:\n    - traefik\n  routes:\n  - match: PathPrefix(`/dashboard`) || PathPrefix(`/api`)\n    kind: Rule\n    services:\n    - name: api@internal\n      kind: TraefikService\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/templates/deployment.yaml",
    "content": "{{- if and .Values.deployment.enabled (eq .Values.deployment.kind \"Deployment\") -}}\n  {{- if gt (int .Values.deployment.replicas) 1 -}}\n    {{- with .Values.additionalArguments -}}\n      {{- range . -}}\n        {{- if contains \".acme.\" . -}}\n          {{- fail (printf \"You can not enable acme if you set more than one traefik replica\") -}}\n        {{- end -}}\n      {{- end -}}\n    {{- end -}}\n  {{- end -}}\n  {{- if eq (default .Chart.AppVersion .Values.image.tag) \"latest\" }}\n    {{- fail \"\\n\\n ERROR: latest tag should not be used\" }}\n  {{- end }}\n\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{ template \"traefik.fullname\" . }}\n  labels:\n    app.kubernetes.io/name: {{ template \"traefik.name\" . }}\n    helm.sh/chart: {{ template \"traefik.chart\" . }}\n    app.kubernetes.io/managed-by: {{ .Release.Service }}\n    app.kubernetes.io/instance: {{ .Release.Name }}\n  {{- with .Values.deployment.labels }}\n  {{- toYaml . | nindent 4 }}\n  {{- end }}\n  annotations:\n  {{- with .Values.deployment.annotations }}\n  {{- toYaml . | nindent 4 }}\n  {{- end }}\nspec:\n  {{- if not .Values.autoscaling.enabled }}\n  replicas: {{ default 1 .Values.deployment.replicas }}\n  {{- end }}\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: {{ template \"traefik.name\" . }}\n      app.kubernetes.io/instance: {{ .Release.Name }}\n  strategy:\n    type: RollingUpdate\n    rollingUpdate:\n      {{- with .Values.rollingUpdate }}\n        {{- toYaml . | nindent 6 }}\n      {{- end }}\n  template: {{ template \"traefik.podTemplate\" . }}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/templates/gateway.yaml",
    "content": "{{- if .Values.experimental.kubernetesGateway.enabled }}\n--- \napiVersion: networking.x-k8s.io/v1alpha1\nkind: Gateway\nmetadata: \n  name: traefik-gateway\n  namespace: {{ default .Release.Namespace .Values.experimental.kubernetesGateway.namespace }}\nspec: \n  gatewayClassName: traefik\n  listeners: \n    - port: {{ .Values.ports.web.port }}\n      protocol: HTTP\n      routes: \n        kind: HTTPRoute\n        selector: \n          matchLabels: \n            app: {{ .Values.experimental.kubernetesGateway.appLabelSelector }}\n\n    {{- range $index, $cert:= .Values.experimental.kubernetesGateway.certificates }}\n    - port: {{ $.Values.ports.websecure.port }}\n      protocol: HTTPS\n      tls:\n        certificateRef:\n          name: {{ $cert.name }}\n          group: {{ $cert.group }}\n          kind: {{ $cert.kind }}\n      routes: \n        kind: HTTPRoute\n        selector: \n          matchLabels: \n            app: {{ $.Values.experimental.kubernetesGateway.appLabelSelector }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/templates/gatewayclass.yaml",
    "content": "{{- if .Values.experimental.kubernetesGateway.enabled }}\n---\nkind: GatewayClass\napiVersion: networking.x-k8s.io/v1alpha1\nmetadata:\n  name: traefik\nspec:\n  controller: traefik.io/gateway-controller\n{{- end }}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/templates/hpa.yaml",
    "content": "{{- if .Values.autoscaling.enabled }}\napiVersion: autoscaling/v2beta1\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: {{ template \"traefik.fullname\" . }}\n  labels:\n    app.kubernetes.io/name: {{ template \"traefik.name\" . }}\n    helm.sh/chart: {{ template \"traefik.chart\" . }}\n    app.kubernetes.io/managed-by: {{ .Release.Service }}\n    app.kubernetes.io/instance: {{ .Release.Name }}\nspec:\n  scaleTargetRef:\n    apiVersion: apps/v1\n    kind: Deployment\n    name: {{ template \"traefik.fullname\" . }}\n  minReplicas: {{ .Values.autoscaling.minReplicas }}\n  maxReplicas: {{ .Values.autoscaling.maxReplicas }}\n  metrics:\n{{ toYaml .Values.autoscaling.metrics | indent 4 }}\n{{- end }}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/templates/ingressclass.yaml",
    "content": "{{- if and .Values.ingressClass.enabled (semverCompare \">=2.3.0\" (default .Chart.AppVersion .Values.image.tag)) -}}\n  {{- if .Capabilities.APIVersions.Has \"networking.k8s.io/v1/IngressClass\" }}\napiVersion: networking.k8s.io/v1\n  {{- else if .Capabilities.APIVersions.Has \"networking.k8s.io/v1beta1/IngressClass\" }}\napiVersion: networking.k8s.io/v1beta1\n  {{- else if or (eq .Values.ingressClass.fallbackApiVersion \"v1beta1\") (eq .Values.ingressClass.fallbackApiVersion \"v1\") }}\napiVersion: {{ printf \"networking.k8s.io/%s\" .Values.ingressClass.fallbackApiVersion }}\n  {{- else }}\n    {{- fail \"\\n\\n ERROR: You must have at least networking.k8s.io/v1beta1 to use ingressClass\" }}\n  {{- end }}\nkind: IngressClass\nmetadata:\n  annotations:\n    ingressclass.kubernetes.io/is-default-class: {{ .Values.ingressClass.isDefaultClass | quote }}\n  labels:\n    app.kubernetes.io/name: {{ template \"traefik.name\" . }}\n    helm.sh/chart: {{ template \"traefik.chart\" . }}\n    app.kubernetes.io/managed-by: {{ .Release.Service }}\n    app.kubernetes.io/instance: {{ .Release.Name }}\n  name: {{ template \"traefik.fullname\" . }}\nspec:\n  controller: traefik.io/ingress-controller\n{{- end }}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/templates/poddisruptionbudget.yaml",
    "content": "{{- if .Values.podDisruptionBudget.enabled -}}\napiVersion: policy/v1beta1\nkind: PodDisruptionBudget\nmetadata:\n  name: {{ template \"traefik.fullname\" . }}\n  labels:\n    app.kubernetes.io/name: {{ template \"traefik.name\" . }}\n    helm.sh/chart: {{ template \"traefik.chart\" . }}\n    app.kubernetes.io/managed-by: {{ .Release.Service }}\n    app.kubernetes.io/instance: {{ .Release.Name }}\nspec:\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: {{ template \"traefik.name\" . }}\n      app.kubernetes.io/instance: {{ .Release.Name }}\n  {{- if .Values.podDisruptionBudget.minAvailable }}\n  minAvailable: {{ .Values.podDisruptionBudget.minAvailable | int }}\n  {{- end }}\n  {{- if .Values.podDisruptionBudget.maxUnavailable }}\n  maxUnavailable: {{ .Values.podDisruptionBudget.maxUnavailable | int }}\n  {{- end }}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/templates/pvc.yaml",
    "content": "{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) -}}\napiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n  name: {{ template \"traefik.fullname\" . }}\n  annotations:\n  {{- with .Values.persistence.annotations  }}\n  {{ toYaml . | nindent 4 }}\n  {{- end }}\n    helm.sh/resource-policy: keep\n  labels:\n    app.kubernetes.io/name: {{ template \"traefik.name\" . }}\n    helm.sh/chart: {{ template \"traefik.chart\" . }}\n    app.kubernetes.io/managed-by: {{ .Release.Service }}\n    app.kubernetes.io/instance: {{ .Release.Name }}\nspec:\n  accessModes:\n    - {{ .Values.persistence.accessMode | quote }}\n  resources:\n    requests:\n      storage: {{ .Values.persistence.size | quote }}\n  {{- if .Values.persistence.storageClass }}\n  storageClassName: {{ .Values.persistence.storageClass | quote }}\n  {{- end }}\n{{- end -}}\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/templates/rbac/clusterrole.yaml",
    "content": "{{- if and .Values.rbac.enabled (not .Values.rbac.namespaced) -}}\nkind: ClusterRole\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: {{ template \"traefik.fullname\" . }}\n  labels:\n    app.kubernetes.io/name: {{ template \"traefik.name\" . }}\n    helm.sh/chart: {{ template \"traefik.chart\" . }}\n    app.kubernetes.io/managed-by: {{ .Release.Service }}\n    app.kubernetes.io/instance: {{ .Release.Name }}\nrules:\n  - apiGroups:\n      - \"\"\n    resources:\n      - services\n      - endpoints\n      - secrets\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - extensions\n      - networking.k8s.io\n    resources:\n      - ingresses\n      - ingressclasses\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - extensions\n      - networking.k8s.io\n    resources:\n      - ingresses/status\n    verbs:\n      - update\n  - apiGroups:\n      - traefik.containo.us\n    resources:\n      - ingressroutes\n      - ingressroutetcps\n      - ingressrouteudps\n      - middlewares\n      - middlewaretcps\n      - tlsoptions\n      - tlsstores\n      - traefikservices\n      - serverstransports\n    verbs:\n      - get\n      - list\n      - watch\n{{- if .Values.podSecurityPolicy.enabled }}\n  - apiGroups:\n      - policy\n    resourceNames:\n      - {{ template \"traefik.fullname\" . }}\n    resources:\n      - podsecuritypolicies\n    verbs:\n      - use\n{{- end -}}\n{{- if .Values.experimental.kubernetesGateway.enabled }}\n  - apiGroups:\n      - networking.x-k8s.io\n    resources:\n      - gatewayclasses\n      - gatewayclasses/status\n      - gateways\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - networking.x-k8s.io\n    resources:\n      - gatewayclasses/status\n    verbs:\n      - get\n      - patch\n      - update\n  - apiGroups:\n      - networking.x-k8s.io\n    resources:\n      - gateways/status\n    verbs:\n      - get\n      - patch\n      - update\n  - apiGroups:\n      - networking.x-k8s.io\n    resources:\n      - httproutes\n    verbs:\n      - create\n      - delete\n      - get\n      - list\n      - patch\n      - update\n      - watch\n  - apiGroups:\n      - networking.x-k8s.io\n    resources:\n      - httproutes/status\n    verbs:\n      - get\n      - patch\n      - update\n{{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/templates/rbac/clusterrolebinding.yaml",
    "content": "{{- if and .Values.rbac.enabled (not .Values.rbac.namespaced) }}\nkind: ClusterRoleBinding\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: {{ template \"traefik.fullname\" . }}\n  labels:\n    app.kubernetes.io/name: {{ template \"traefik.name\" . }}\n    helm.sh/chart: {{ template \"traefik.chart\" . }}\n    app.kubernetes.io/managed-by: {{ .Release.Service }}\n    app.kubernetes.io/instance: {{ .Release.Name }}\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: {{ template \"traefik.fullname\" . }}\nsubjects:\n  - kind: ServiceAccount\n    name: {{ include \"traefik.serviceAccountName\" . }}\n    namespace: {{ .Release.Namespace }}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/templates/rbac/podsecuritypolicy.yaml",
    "content": "{{- if .Values.podSecurityPolicy.enabled }}\n---\napiVersion: policy/v1beta1\nkind: PodSecurityPolicy\nmetadata:\n  annotations:\n    seccomp.security.alpha.kubernetes.io/allowedProfileNames: runtime/default\n    seccomp.security.alpha.kubernetes.io/defaultProfileName: runtime/default\n  name: {{ template \"traefik.fullname\" . }}\n  labels:\n    app.kubernetes.io/name: {{ template \"traefik.name\" . }}\n    helm.sh/chart: {{ template \"traefik.chart\" . }}\n    app.kubernetes.io/managed-by: {{ .Release.Service }}\n    app.kubernetes.io/instance: {{ .Release.Name }}\nspec:\n  privileged: false\n  allowPrivilegeEscalation: false\n  requiredDropCapabilities:\n    - ALL\n{{- if not .Values.securityContext.runAsNonRoot }}\n  allowedCapabilities:\n    - NET_BIND_SERVICE\n{{- end }}\n  hostNetwork: {{ .Values.hostNetwork }}\n  hostIPC: false\n  hostPID: false\n  fsGroup:\n{{- if .Values.securityContext.runAsNonRoot }}\n    ranges:\n    - max: 65535\n      min: 1\n    rule: MustRunAs\n{{- else }}\n    rule: RunAsAny\n{{- end }}\n{{- if .Values.hostNetwork }}\n  hostPorts:\n  - max: 65535\n    min: 1\n{{- end }}\n  readOnlyRootFilesystem: true\n  runAsUser:\n{{- if .Values.securityContext.runAsNonRoot }}\n    rule: MustRunAsNonRoot\n{{- else }}\n    rule: RunAsAny\n{{- end }}\n  seLinux:\n    rule: RunAsAny\n  supplementalGroups:\n{{- if .Values.securityContext.runAsNonRoot }}\n    ranges:\n    - max: 65535\n      min: 1\n    rule: MustRunAs\n{{- else }}\n    rule: RunAsAny\n{{- end }}\n  volumes:\n  - configMap\n  - downwardAPI\n  - secret\n  - emptyDir\n  - projected\n{{- if .Values.persistence.enabled }}\n  - persistentVolumeClaim\n{{- end -}}\n{{- end -}}"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/templates/rbac/role.yaml",
    "content": "{{- if and .Values.rbac.enabled .Values.rbac.namespaced }}\nkind: Role\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: {{ template \"traefik.fullname\" . }}\n  labels:\n    app.kubernetes.io/name: {{ template \"traefik.name\" . }}\n    helm.sh/chart: {{ template \"traefik.chart\" . }}\n    app.kubernetes.io/managed-by: {{ .Release.Service }}\n    app.kubernetes.io/instance: {{ .Release.Name }}\nrules:\n  - apiGroups:\n      - \"\"\n    resources:\n      - services\n      - endpoints\n      - secrets\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - extensions\n      - networking.k8s.io\n    resources:\n      - ingresses\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - extensions\n      - networking.k8s.io\n    resources:\n      - ingresses/status\n    verbs:\n      - update\n  - apiGroups:\n      - traefik.containo.us\n    resources:\n      - ingressroutes\n      - ingressroutetcps\n      - ingressrouteudps\n      - middlewares\n      - middlewaretcps\n      - tlsoptions\n      - tlsstores\n      - traefikservices\n      - serverstransports\n    verbs:\n      - get\n      - list\n      - watch\n{{- if .Values.podSecurityPolicy.enabled }}\n  - apiGroups:\n      - extensions\n    resourceNames:\n      - {{ template \"traefik.fullname\" . }}\n    resources:\n      - podsecuritypolicies\n    verbs:\n      - use\n{{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/templates/rbac/rolebinding.yaml",
    "content": "{{- if and .Values.rbac.enabled .Values.rbac.namespaced }}\nkind: RoleBinding\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: {{ template \"traefik.fullname\" . }}\n  labels:\n    app.kubernetes.io/name: {{ template \"traefik.name\" . }}\n    helm.sh/chart: {{ template \"traefik.chart\" . }}\n    app.kubernetes.io/managed-by: {{ .Release.Service }}\n    app.kubernetes.io/instance: {{ .Release.Name }}\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: {{ template \"traefik.fullname\" . }}\nsubjects:\n  - kind: ServiceAccount\n    name: {{ include \"traefik.serviceAccountName\" . }}\n    namespace: {{ .Release.Namespace }}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/templates/rbac/serviceaccount.yaml",
    "content": "{{- if not .Values.serviceAccount.name -}}\nkind: ServiceAccount\napiVersion: v1\nmetadata:\n  name: {{ include \"traefik.serviceAccountName\" . }}\n  labels:\n    app.kubernetes.io/name: {{ template \"traefik.name\" . }}\n    helm.sh/chart: {{ template \"traefik.chart\" . }}\n    app.kubernetes.io/managed-by: {{ .Release.Service }}\n    app.kubernetes.io/instance: {{ .Release.Name }}\n  annotations:\n  {{- with .Values.serviceAccountAnnotations }}\n  {{- toYaml . | nindent 4 }}\n  {{- end }}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/templates/service.yaml",
    "content": "{{- if .Values.service.enabled -}}\n\n{{ $tcpPorts := dict }}\n{{ $udpPorts := dict }}\n{{- range $name, $config := .Values.ports }}\n  {{- if eq (toString $config.protocol) \"UDP\" }}\n    {{ $_ := set $udpPorts $name $config }}\n  {{- else }}\n    {{ $_ := set $tcpPorts $name $config }}\n  {{- end }}\n{{- end }}\n\napiVersion: v1\nkind: List\nmetadata:\n  name: {{ template \"traefik.fullname\" . }}\nitems:\n{{- if  $tcpPorts }}\n  - apiVersion: v1\n    kind: Service\n    metadata:\n      name: {{ template \"traefik.fullname\" . }}\n      labels:\n        app.kubernetes.io/name: {{ template \"traefik.name\" . }}\n        helm.sh/chart: {{ template \"traefik.chart\" . }}\n        app.kubernetes.io/managed-by: {{ .Release.Service }}\n        app.kubernetes.io/instance: {{ .Release.Name }}\n      {{- with .Values.service.labels }}\n      {{- toYaml . | nindent 8 }}\n      {{- end }}\n      annotations:\n      {{- with (merge .Values.service.annotationsTCP .Values.service.annotations) }}\n      {{- toYaml . | nindent 8 }}\n      {{- end }}\n    spec:\n      {{- $type := default \"LoadBalancer\" .Values.service.type }}\n      type: {{ $type }}\n      {{- with .Values.service.spec }}\n      {{- toYaml . | nindent 6 }}\n      {{- end }}\n      selector:\n        app.kubernetes.io/name: {{ template \"traefik.name\" . }}\n        app.kubernetes.io/instance: {{ .Release.Name }}\n      ports:\n      {{- range $name, $config := $tcpPorts }}\n      {{- if $config.expose }}\n      - port: {{ default $config.port $config.exposedPort }}\n        name: {{ $name }}\n        targetPort: {{ $name | quote }}\n        protocol: {{ default \"TCP\" $config.protocol | quote }}\n        {{- if $config.nodePort }}\n        nodePort: {{ $config.nodePort }}\n        {{- end }}\n      {{- end }}\n      {{- end }}\n      {{- if eq $type \"LoadBalancer\" }}\n      {{- with .Values.service.loadBalancerSourceRanges }}\n      loadBalancerSourceRanges:\n      {{- toYaml . | nindent 6 }}\n      {{- end -}}\n      {{- end -}}\n      {{- with .Values.service.externalIPs }}\n      externalIPs:\n      {{- toYaml . | nindent 6 }}\n      {{- end -}}\n{{- end }}\n\n{{- if  $udpPorts }}\n  - apiVersion: v1\n    kind: Service\n    metadata:\n      name: {{ template \"traefik.fullname\" . }}-udp\n      labels:\n        app.kubernetes.io/name: {{ template \"traefik.name\" . }}\n        helm.sh/chart: {{ template \"traefik.chart\" . }}\n        app.kubernetes.io/managed-by: {{ .Release.Service }}\n        app.kubernetes.io/instance: {{ .Release.Name }}\n      {{- with .Values.service.labels }}\n      {{- toYaml . | nindent 8 }}\n      {{- end }}\n      annotations:\n      {{- with (merge .Values.service.annotationsUDP .Values.service.annotations) }}\n      {{- toYaml . | nindent 8 }}\n      {{- end }}\n    spec:\n      {{- $type := default \"LoadBalancer\" .Values.service.type }}\n      type: {{ $type }}\n      {{- with .Values.service.spec }}\n      {{- toYaml . | nindent 6 }}\n      {{- end }}\n      selector:\n        app.kubernetes.io/name: {{ template \"traefik.name\" . }}\n        app.kubernetes.io/instance: {{ .Release.Name }}\n      ports:\n      {{- range $name, $config := $udpPorts }}\n      {{- if $config.expose }}\n      - port: {{ default $config.port $config.exposedPort }}\n        name: {{ $name }}\n        targetPort: {{ $name | quote }}\n        protocol: {{ default \"UDP\" $config.protocol | quote }}\n        {{- if $config.nodePort }}\n        nodePort: {{ $config.nodePort }}\n        {{- end }}\n      {{- end }}\n      {{- end }}\n      {{- if eq $type \"LoadBalancer\" }}\n      {{- with .Values.service.loadBalancerSourceRanges }}\n      loadBalancerSourceRanges:\n      {{- toYaml . | nindent 6 }}\n      {{- end -}}\n      {{- end -}}\n      {{- with .Values.service.externalIPs }}\n      externalIPs:\n      {{- toYaml . | nindent 6 }}\n      {{- end -}}\n{{- end }}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/templates/tlsoption.yaml",
    "content": "{{- range $name, $config := .Values.tlsOptions }}\napiVersion: traefik.containo.us/v1alpha1\nkind: TLSOption\nmetadata:\n  name: {{ $name }}\n  labels:\n    app.kubernetes.io/name: {{ template \"traefik.name\" $ }}\n    helm.sh/chart: {{ template \"traefik.chart\" $ }}\n    app.kubernetes.io/managed-by: {{ $.Release.Service }}\n    app.kubernetes.io/instance: {{ $.Release.Name }}\nspec:\n  {{- toYaml $config | nindent 2 }}\n---\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/tests/container-config_test.yaml",
    "content": "suite: Main Container configuration\ntemplates:\n  - deployment.yaml\ntests:\n  - it: should have the default Docker image when no value is specified\n    asserts:\n      - equal:\n          path: spec.template.spec.containers[0].image\n          value: traefik:2.5.3\n  - it: should change image when image.tag value is specified\n    set:\n      image:\n        tag: v2.0.0-beta1\n    asserts:\n      - equal:\n          path: spec.template.spec.containers[0].image\n          value: traefik:v2.0.0-beta1\n  - it: should change image when image.name value is specified\n    set:\n      image:\n        name: traefik/traefik\n    asserts:\n      - equal:\n          path: spec.template.spec.containers[0].image\n          value: traefik/traefik:2.5.3\n\n  - it: should have no resource limit by default\n    asserts:\n      - isNull:\n          path: spec.template.spec.containers[0].resources\n  - it: should have a custom resource limit when specified\n    set:\n      resources:\n        requests:\n          cpu: \"100m\"\n          memory: \"50Mi\"\n        limits:\n          cpu: \"300m\"\n          memory: \"150Mi\"\n    asserts:\n      - equal:\n          path: spec.template.spec.containers[0].resources.requests.cpu\n          value: \"100m\"\n      - equal:\n          path: spec.template.spec.containers[0].resources.requests.memory\n          value: \"50Mi\"\n      - equal:\n          path: spec.template.spec.containers[0].resources.limits.cpu\n          value: \"300m\"\n      - equal:\n          path: spec.template.spec.containers[0].resources.limits.memory\n          value: \"150Mi\"\n  - it: should not have data volumeMount subPath by default\n    asserts:\n      - isNull:\n          path: spec.template.spec.containers[0].volumeMounts[0].subPath\n  - it: should have data volumeMount subPath when specified in config\n    set:\n      persistence:\n        subPath: \"subdir/traefik\"\n    asserts:\n      - equal:\n          path: spec.template.spec.containers[0].volumeMounts[0].subPath\n          value: \"subdir/traefik\"\n  - it: should have templated config map volume\n    set:\n      volumes:\n        - name: '{{ printf \"%s-custom-config\" .Release.Name }}'\n          mountPath: /etc/traefik\n          type: configMap\n        - name: 'non-templated'\n          mountPath: /etc/non-templated\n          type: configMap\n    asserts:\n      - equal:\n          path: spec.template.spec.containers[0].volumeMounts[2].name\n          value: \"RELEASE-NAME-custom-config\"\n      - equal:\n          path: spec.template.spec.containers[0].volumeMounts[3].name\n          value: \"non-templated\"\n      - equal:\n          path: spec.template.spec.volumes[2].name\n          value: \"RELEASE-NAME-custom-config\"\n      - equal:\n          path: spec.template.spec.volumes[2].configMap.name\n          value: \"RELEASE-NAME-custom-config\"\n      - equal:\n          path: spec.template.spec.volumes[3].name\n          value: \"non-templated\"\n      - equal:\n          path: spec.template.spec.volumes[3].configMap.name\n          value: \"non-templated\"\n  - it: should have templated secret volume\n    set:\n      volumes:\n        - name: '{{ printf \"%s-custom-secret\" .Release.Name }}'\n          mountPath: /etc/secret\n          type: secret\n    asserts:\n      - equal:\n          path: spec.template.spec.containers[0].volumeMounts[2].name\n          value: \"RELEASE-NAME-custom-secret\"\n      - equal:\n          path: spec.template.spec.volumes[2].name\n          value: \"RELEASE-NAME-custom-secret\"\n      - equal:\n          path: spec.template.spec.volumes[2].secret.secretName\n          value: \"RELEASE-NAME-custom-secret\"\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/tests/daemonset-config_test.yaml",
    "content": "suite: DaemonSet configuration\ntemplates:\n  - daemonset.yaml\ntests:\n  - it: should have a rollingUpdate strategy with default values\n    set:\n      deployment:\n        kind: DaemonSet\n    asserts:\n      - equal:\n          path: spec.updateStrategy.type\n          value: RollingUpdate\n      - equal:\n          path: spec.updateStrategy.rollingUpdate.maxUnavailable\n          value: 1\n  - it: should have annotations with specified values\n    set:\n      deployment:\n        kind: DaemonSet\n        annotations:\n          traefik/powpow: annotations\n        podAnnotations:\n          traefik/powpow: podAnnotations\n    asserts:\n      - equal:\n          path: metadata.annotations.traefik/powpow\n          value: annotations\n      - equal:\n          path: spec.template.metadata.annotations.traefik/powpow\n          value: podAnnotations\n  - it: should have labels with specified values\n    set:\n      deployment:\n        kind: DaemonSet\n        labels:\n          traefik/powpow: labels\n        podLabels:\n          traefik/powpow: podLabels\n    asserts:\n      - equal:\n          path: metadata.labels.traefik/powpow\n          value: labels\n      - equal:\n          path: spec.template.metadata.labels.traefik/powpow\n          value: podLabels\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/tests/default-install_test.yaml",
    "content": "suite: default install\ntests:\n  - it: should generate the default objects for Traefik Ingress Controller\n    asserts:\n      - isKind:\n          of: Deployment\n        template: deployment.yaml\n      - equal:\n          path: items[0].kind\n          value: Service\n        template: service.yaml\n      - isKind:\n          of: ClusterRole\n        template: rbac/clusterrole.yaml\n      - isKind:\n          of: ClusterRoleBinding\n        template: rbac/clusterrolebinding.yaml\n      - isKind:\n          of: ServiceAccount\n        template: rbac/serviceaccount.yaml\n  - it: should have the correct naming for each object\n    asserts:\n      - equal:\n          path: metadata.name\n          value: RELEASE-NAME-traefik\n        template: deployment.yaml\n      - equal:\n          path: items[0].metadata.name\n          value: RELEASE-NAME-traefik\n        template: service.yaml\n      - equal:\n          path: metadata.name\n          value: RELEASE-NAME-traefik\n        template: rbac/clusterrole.yaml\n      - equal:\n          path: metadata.name\n          value: RELEASE-NAME-traefik\n        template: rbac/clusterrolebinding.yaml\n      - equal:\n          path: metadata.name\n          value: RELEASE-NAME-traefik\n        template: rbac/serviceaccount.yaml\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/tests/deployment-config_test.yaml",
    "content": "suite: Deployment configuration\ntemplates:\n  - deployment.yaml\ntests:\n  - it: should have 1 replica by default\n    asserts:\n      - equal:\n          path: spec.replicas\n          value: 1\n  - it: should have the specified amount of replicas when specified via values\n    set:\n      deployment:\n        replicas: 3\n    asserts:\n      - equal:\n          path: spec.replicas\n          value: 3\n  - it: should have a rollingUpdate strategy with default values\n    asserts:\n      - equal:\n          path: spec.strategy.type\n          value: RollingUpdate\n      - equal:\n          path: spec.strategy.rollingUpdate.maxUnavailable\n          value: 1\n      - equal:\n          path: spec.strategy.rollingUpdate.maxSurge\n          value: 1\n  - it: should have a custom merged rollingUpdate strategy with specified values\n    set:\n      rollingUpdate:\n        maxUnavailable: 4\n        vegetaForce: 9000\n    asserts:\n      - equal:\n          path: spec.strategy.type\n          value: RollingUpdate\n      - equal:\n          path: spec.strategy.rollingUpdate.maxUnavailable\n          value: 4\n      - equal:\n          path: spec.strategy.rollingUpdate.maxSurge\n          value: 1\n      - equal:\n          path: spec.strategy.rollingUpdate.vegetaForce\n          value: 9000\n  - it: should have annotations with specified values\n    set:\n      deployment:\n        annotations:\n          traefik/powpow: annotations\n        podAnnotations:\n          traefik/powpow: podAnnotations\n    asserts:\n      - equal:\n          path: metadata.annotations.traefik/powpow\n          value: annotations\n      - equal:\n          path: spec.template.metadata.annotations.traefik/powpow\n          value: podAnnotations\n  - it: should have labels with specified values\n    set:\n      deployment:\n        labels:\n          traefik/powpow: labels\n        podLabels:\n          traefik/powpow: podLabels\n    asserts:\n      - equal:\n          path: metadata.labels.traefik/powpow\n          value: labels\n      - equal:\n          path: spec.template.metadata.labels.traefik/powpow\n          value: podLabels\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/tests/gateway-config_test.yaml",
    "content": "suite: Gateway configuration\ntemplates:\n  - gateway.yaml\ntests:\n  - it: should have one gateway with the correct class and an http port\n    set:\n      experimental:\n        kubernetesGateway:\n          enabled: true\n    asserts:\n      - equal:\n          path: spec.gatewayClassName\n          value: \"traefik\"\n      - equal:\n          path: spec.listeners[0].port\n          value: 8000\n      - equal:\n          path: metadata.namespace\n          value: \"NAMESPACE\"\n  - it: should have one gateway with the correct class and an http port as well as an https port\n    set:\n      experimental:\n        kubernetesGateway:\n          enabled: true\n          certificates:\n            - name: \"my-name\"\n              group: \"my-group\"\n              kind: \"my-kind\"\n    asserts:\n      - equal:\n          path: spec.gatewayClassName\n          value: \"traefik\"\n      - equal:\n          path: spec.listeners[0].port\n          value: 8000\n      - equal:\n          path: spec.listeners[1].port\n          value: 8443\n      - equal:\n          path: spec.listeners[1].tls.certificateRef.name\n          value: \"my-name\"\n      - equal:\n          path: spec.listeners[1].tls.certificateRef.group\n          value: \"my-group\"\n      - equal:\n          path: spec.listeners[1].tls.certificateRef.kind\n          value: \"my-kind\"\n  - it: should install gateway in custom namespace\n    set:\n      experimental:\n        kubernetesGateway:\n          enabled: true\n          namespace: \"default\"\n    asserts:\n      - equal:\n          path: metadata.namespace\n          value: \"default\"\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/tests/gatewayclass-config_test.yaml",
    "content": "suite: Gatewayclass configuration\ntemplates:\n  - gatewayclass.yaml\ntests:\n  - it: should have one gatewayclass with controller value traefik.io/gateway-controller\n    set:\n      experimental:\n        kubernetesGateway:\n          enabled: true\n    asserts:\n      - equal:\n          path: spec.controller\n          value: traefik.io/gateway-controller\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/tests/pod-config_test.yaml",
    "content": "suite: Pod configuration\ntemplates:\n  - deployment.yaml\ntests:\n  - it: should have envFrom with specified values\n    set:\n      envFrom:\n        - configMapRef:\n            name: config-map-name\n        - secretRef:\n            name: secret-name\n    asserts:\n      - equal:\n          path: spec.template.spec.containers[0].envFrom[0].configMapRef.name\n          value: config-map-name\n      - equal:\n          path: spec.template.spec.containers[0].envFrom[1].secretRef.name\n          value: secret-name\n  - it: should have priorityClassName\n    set:\n      priorityClassName: important\n    asserts:\n      - equal:\n          path: spec.template.spec.priorityClassName\n          value: important\n  - it: should have merged securityContext\n    set:\n      podSecurityContext:\n        readOnlyRootFilesystem: false\n      securityContext:\n        runAsUser: 1000\n    asserts:\n      - equal:\n          path: spec.template.spec.securityContext.fsGroup\n          value: 65532\n      - equal:\n          path: spec.template.spec.securityContext.readOnlyRootFilesystem\n          value: false\n      - equal:\n          path: spec.template.spec.containers[0].securityContext.runAsNonRoot\n          value: true\n      - equal:\n          path: spec.template.spec.containers[0].securityContext.runAsUser\n          value: 1000\n  - it: should have pvc with specified value\n    set:\n      persistence:\n        enabled: true\n        existingClaim: existing-pvc\n    asserts:\n      - equal:\n          path: spec.template.spec.volumes[0].persistentVolumeClaim.claimName\n          value: existing-pvc\n      - equal:\n          path: spec.template.spec.volumes[0].name\n          value: data\n  - it: should have pvc with specified name\n    set:\n      persistence:\n        name: my-data\n    asserts:\n      - equal:\n          path: spec.template.spec.volumes[0].name\n          value: my-data\n  - it: should have initContainer with specified value\n    set:\n      deployment:\n        initContainers:\n          - name: volume-permissions\n            image: busybox:1.31.1\n            command: [\"sh\"]\n            volumeMounts:\n              - name: data\n                mountPath: /data\n    asserts:\n      - equal:\n          path: spec.template.spec.initContainers[0].name\n          value: volume-permissions\n      - equal:\n          path: spec.template.spec.initContainers[0].image\n          value: busybox:1.31.1\n      - equal:\n          path: spec.template.spec.initContainers[0].command[0]\n          value: sh\n      - equal:\n          path: spec.template.spec.initContainers[0].volumeMounts[0].name\n          value: data\n      - equal:\n          path: spec.template.spec.initContainers[0].volumeMounts[0].mountPath\n          value: /data\n  - it: should have additional containers\n    set:\n      deployment:\n        additionalContainers:\n          - image: foo:latest\n            name: bar\n      asserts:\n        - equal:\n            path: spec.template.additionalContainers[0].image\n            value: foo:latest\n        - equal:\n            path: spec.template.additionalContainers[0].name\n            value: bar\n  - it: should have additional volumes\n    set:\n      deployment:\n        additionalVolumes:\n          - hostpath:\n              path: /foo\n            name: bar\n      asserts:\n        - equal:\n            path: spec.template.spec.volumes[4].hostpath.path\n            value: /foo\n        - equal:\n            path: spec.template.spec.volumes[4].name\n            value: bar\n  - it: should have imagePullPolicy with specified value\n    set:\n      image:\n        pullPolicy: Always\n    asserts:\n      - equal:\n          path: spec.template.spec.containers[0].imagePullPolicy\n          value: Always\n  - it: should have no imagePullSecrets\n    asserts:\n      - isEmpty:\n          path: spec.template.spec.imagePullSecrets\n  - it: should have imagePullSecrets with specified value\n    set:\n      deployment:\n        imagePullSecrets:\n          - name: myRegistryKeySecretName\n    asserts:\n      - equal:\n          path: spec.template.spec.imagePullSecrets[0].name\n          value: myRegistryKeySecretName\n  - it: should have multiple imagePullSecrets with specified value\n    set:\n      deployment:\n        imagePullSecrets:\n          - name: myRegistryKeySecretName\n          - name: myOtherRegistryKeySecretName\n    asserts:\n      - equal:\n          path: spec.template.spec.imagePullSecrets[0].name\n          value: myRegistryKeySecretName\n      - equal:\n          path: spec.template.spec.imagePullSecrets[1].name\n          value: myOtherRegistryKeySecretName\n  - it: should have customized labels when specified via values\n    set:\n      deployment:\n        podLabels:\n          custom-label: custom-value\n    asserts:\n      - equal:\n          path: spec.template.metadata.labels.custom-label\n          value: custom-value\n  - it: should have no nodeSelector by default\n    asserts:\n      - isNull:\n          path: spec.template.spec.nodeSelector\n  - it: should have a custom nodeSelector when specified\n    set:\n      nodeSelector:\n        planet: earth\n        disktype: ssd\n    asserts:\n      - equal:\n          path: spec.template.spec.nodeSelector.planet\n          value: earth\n      - equal:\n          path: spec.template.spec.nodeSelector.disktype\n          value: ssd\n\n  - it: should have no tolerations by default\n    asserts:\n      - isNull:\n          path: spec.template.spec.tolerations\n  - it: should have a custom toleration when specified\n    set:\n      tolerations:\n        - key: \"key\"\n          operator: \"Equal\"\n          value: \"value\"\n          effect: \"NoSchedule\"\n        - key: \"RSA\"\n          operator: \"Destructor\"\n    asserts:\n      - contains:\n          path: spec.template.spec.tolerations\n          content:\n            key: \"key\"\n            operator: \"Equal\"\n            value: \"value\"\n            effect: \"NoSchedule\"\n      - contains:\n          path: spec.template.spec.tolerations\n          content:\n            key: \"RSA\"\n            operator: \"Destructor\"\n  - it: should have all k8s provider enabled when gateway provider is enabled\n    set:\n      experimental:\n        kubernetesGateway:\n          enabled: true\n    asserts:\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content:\n            \"--providers.kubernetescrd\"\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content:\n            \"--providers.kubernetesingress\"\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content:\n            \"--providers.kubernetesgateway\"\n  - it: should have the pilot dashboard enabled by default\n    asserts:\n      - notContains:\n          path: spec.template.spec.containers[0].args\n          content:\n            \"--pilot.dashboard=false\"\n  - it: should have the pilot dashboard disabled\n    set:\n      pilot:\n        dashboard: false\n    asserts:\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content:\n            \"--pilot.dashboard=false\"\n  - it: should have prometheus annotations with specified values\n    set:\n      ports:\n        metrics:\n          port: 9100\n      metrics:\n        prometheus:\n          entryPoint: metrics\n    asserts:\n      - equal:\n          path: spec.template.metadata.annotations\n          value:\n            prometheus.io/path: /metrics\n            prometheus.io/port: \"9100\"\n            prometheus.io/scrape: \"true\"\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/tests/poddisruptionbudget-config_test.yaml",
    "content": "suite: PodDisruptionBudget configuration\ntemplates:\n  - poddisruptionbudget.yaml\ntests:\n  - it: should be disabled by default\n    asserts:\n      - hasDocuments:\n          count: 0\n  - it: should have minAvailable set\n    set:\n      podDisruptionBudget:\n        enabled: true\n        minAvailable: 2\n    asserts:\n      - equal:\n          path: spec.minAvailable\n          value: 2\n      - isEmpty:\n          path: spec.maxUnavailable\n  - it: should have maxUnavailable set\n    set:\n      podDisruptionBudget:\n        enabled: true\n        maxUnavailable: 1\n    asserts:\n      - equal:\n          path: spec.maxUnavailable\n          value: 1\n      - isEmpty:\n          path: spec.minAvailable\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/tests/podsecuritypolicy-config_test.yaml",
    "content": "suite: PodSecurityPolicy configuration\ntests:\n  - it: should be disabled by default\n    asserts:\n      - hasDocuments:\n          count: 0\n        template: rbac/podsecuritypolicy.yaml\n  - it: should have privileged set to false\n    set:\n      podSecurityPolicy:\n        enabled: true\n    asserts:\n      - equal:\n          path: spec.privileged\n          value: false\n        template: rbac/podsecuritypolicy.yaml\n  - it: should have hostNetwork set to false by default\n    set:\n      podSecurityPolicy:\n        enabled: true\n    asserts:\n      - equal:\n          path: spec.hostNetwork\n          value: false\n        template: rbac/podsecuritypolicy.yaml\n  - it: should have hostNetwork set to true when enabled\n    set:\n      podSecurityPolicy:\n        enabled: true\n      hostNetwork: true\n    asserts:\n      - equal:\n          path: spec.hostNetwork\n          value: true\n        template: rbac/podsecuritypolicy.yaml\n  - it: should be enabled in clusterrole\n    set:\n      podSecurityPolicy:\n        enabled: true\n    asserts:\n      - equal:\n          path: rules[4].resources[0]\n          value: podsecuritypolicies\n        template: rbac/clusterrole.yaml\n      - equal:\n          path: rules[4].verbs[0]\n          value: use\n        template: rbac/clusterrole.yaml\n  - it: should allow persistentVolumeClaim when persistence is enabled\n    set:\n      podSecurityPolicy:\n        enabled: true\n      persistence:\n        enabled: true\n    asserts:\n      - equal:\n          path: spec.volumes[5]\n          value: persistentVolumeClaim\n        template: rbac/podsecuritypolicy.yaml\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/tests/ports-config_test.yaml",
    "content": "suite: Traefik configuration\ntests:\n  - it: should have port 8000 of pod published to 80 of service by default, and defined as entrypoint \"web\"\n    asserts:\n      - contains:\n          path: spec.template.spec.containers[0].ports\n          content:\n            name: web\n            containerPort: 8000\n            protocol: TCP\n        template: deployment.yaml\n      - contains:\n          path: items[0].spec.ports\n          content:\n            name: web\n            port: 80\n            protocol: TCP\n            targetPort: web\n        template: service.yaml\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content: \"--entryPoints.web.address=:8000/tcp\"\n        template: deployment.yaml\n  - it: should have port 8443 of pod published to 443 of service by default, and defined as entrypoint \"websecure\"\n    asserts:\n      - contains:\n          path: spec.template.spec.containers[0].ports\n          content:\n            name: websecure\n            containerPort: 8443\n            protocol: TCP\n        template: deployment.yaml\n      - contains:\n          path: items[0].spec.ports\n          content:\n            name: websecure\n            port: 443\n            protocol: TCP\n            targetPort: websecure\n        template: service.yaml\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content: \"--entryPoints.websecure.address=:8443/tcp\"\n        template: deployment.yaml\n  - it: should have port 9000 of pod exposed for probes but NOT published to the service by default\n    asserts:\n      - contains:\n          path: spec.template.spec.containers[0].ports\n          content:\n            name: traefik\n            containerPort: 9000\n            protocol: TCP\n        template: deployment.yaml\n      - notContains:\n          path: items[0].spec.ports\n          content:\n            name: traefik\n            port: 9000\n            targetPort: traefik\n        template: service.yaml\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content: \"--entryPoints.traefik.address=:9000/tcp\"\n        template: deployment.yaml\n  - it: should have a custom port when specified via values\n    set:\n      ports:\n        ssh:\n          port: 22\n          expose: true\n    asserts:\n      - contains:\n          path: spec.template.spec.containers[0].ports\n          content:\n            name: ssh\n            containerPort: 22\n            protocol: TCP\n        template: deployment.yaml\n      - contains:\n          path: items[0].spec.ports\n          content:\n            name: ssh\n            port: 22\n            protocol: TCP\n            targetPort: ssh\n        template: service.yaml\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content: \"--entryPoints.ssh.address=:22/tcp\"\n        template: deployment.yaml\n  - it: should have a hostPort when specified via values\n    set:\n      ports:\n        ssh:\n          port: 22\n          expose: true\n          hostPort: 22\n    asserts:\n      - contains:\n          path: spec.template.spec.containers[0].ports\n          content:\n            name: ssh\n            containerPort: 22\n            hostPort: 22\n            protocol: TCP\n        template: deployment.yaml\n      - contains:\n          path: items[0].spec.ports\n          content:\n            name: ssh\n            port: 22\n            protocol: TCP\n            targetPort: ssh\n        template: service.yaml\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content: \"--entryPoints.ssh.address=:22/tcp\"\n        template: deployment.yaml\n  - it: should have a UDP custom port when specified via values\n    set:\n      ports:\n        udp:\n          port: 51\n          expose: true\n          protocol: UDP\n    asserts:\n      - contains:\n          path: spec.template.spec.containers[0].ports\n          content:\n            name: udp\n            containerPort: 51\n            protocol: UDP\n        template: deployment.yaml\n      - contains:\n          path: items[1].spec.ports\n          content:\n            name: udp\n            port: 51\n            protocol: UDP\n            targetPort: udp\n        template: service.yaml\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content: \"--entryPoints.udp.address=:51/udp\"\n        template: deployment.yaml\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/tests/rbac-config_test.yaml",
    "content": "suite: RBAC configuration\ntests:\n  - it: should create default RBAC related objects\n    asserts:\n      - isKind:\n          of: ClusterRole\n        template: rbac/clusterrole.yaml\n      - isKind:\n          of: ClusterRoleBinding\n        template: rbac/clusterrolebinding.yaml\n      - hasDocuments:\n          count: 0\n        template: rbac/role.yaml\n      - hasDocuments:\n          count: 0\n        template: rbac/rolebinding.yaml\n      - isKind:\n          of: ServiceAccount\n        template: rbac/serviceaccount.yaml\n      - equal:\n          path: metadata.name\n          value: RELEASE-NAME-traefik\n        template: rbac/serviceaccount.yaml\n      - equal:\n          path: spec.template.spec.serviceAccountName\n          value: RELEASE-NAME-traefik\n        template: deployment.yaml\n      - equal:\n          path: subjects[0].name\n          value: RELEASE-NAME-traefik\n        template: rbac/clusterrolebinding.yaml\n  - it: should not create RBAC related objects when disabled\n    set:\n      rbac:\n        enabled: false\n    asserts:\n      - hasDocuments:\n          count: 0\n        template: rbac/clusterrole.yaml\n      - hasDocuments:\n          count: 0\n        template: rbac/clusterrolebinding.yaml\n      - hasDocuments:\n          count: 0\n        template: rbac/role.yaml\n      - hasDocuments:\n          count: 0\n        template: rbac/rolebinding.yaml\n  - it: should create RBAC related objects at namespace scope\n    set:\n      rbac:\n        namespaced: true\n    asserts:\n      - isKind:\n          of: Role\n        template: rbac/role.yaml\n      - isKind:\n          of: RoleBinding\n        template: rbac/rolebinding.yaml\n      - hasDocuments:\n          count: 0\n        template: rbac/clusterrole.yaml\n      - hasDocuments:\n          count: 0\n        template: rbac/clusterrolebinding.yaml\n  - it: should use existing ServiceAccount\n    set:\n      serviceAccount:\n        name: foobar\n    asserts:\n      - hasDocuments:\n          count: 0\n        template: rbac/serviceaccount.yaml\n      - equal:\n          path: spec.template.spec.serviceAccountName\n          value: foobar\n        template: deployment.yaml\n      - equal:\n          path: subjects[0].name\n          value: foobar\n        template: rbac/clusterrolebinding.yaml\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/tests/service-config_test.yaml",
    "content": "suite: Service configuration\ntemplates:\n  - service.yaml\ntests:\n  - it: should be a type LoadBalancer by default\n    asserts:\n      - equal:\n          path: items[0].spec.type\n          value: LoadBalancer\n  - it: should be a custom type when specified via values\n    set:\n      service:\n        type: NodePort\n    asserts:\n      - equal:\n          path: items[0].spec.type\n          value: NodePort\n  - it: should have no annotations by default\n    asserts:\n      - isNull:\n          path: items[0].metadata.annotations\n  - it: should have customized annotations when specified via values\n    set:\n      service:\n        annotations:\n          azure-load-balancer-internal: true\n    asserts:\n      - equal:\n          path: items[0].metadata.annotations.azure-load-balancer-internal\n          value: true\n  - it: should have TCP only annotations when specified via values\n    set:\n      service:\n        annotationsTCP:\n          dns-hostname: tcp.example.com\n      ports:\n        udp:\n          port: 3000\n          expose: true\n          exposedPort: 80\n          protocol: UDP\n    asserts:\n      - equal:\n          path: items[0].metadata.annotations.dns-hostname\n          value: tcp.example.com\n      - isNull:\n          path: items[1].metadata.annotations\n  - it: should have UDP only annotations when specified via values\n    set:\n      service:\n        annotationsUDP:\n          dns-hostname: udp.example.com\n      ports:\n        udp:\n          port: 3000\n          expose: true\n          exposedPort: 80\n          protocol: UDP\n    asserts:\n      - isNull:\n          path: items[0].metadata.annotations\n      - equal:\n          path: items[1].metadata.annotations.dns-hostname\n          value: udp.example.com\n  - it: should merge protocol specific service annotations when specified via values\n    set:\n      service:\n        annotations:\n          azure-load-balancer-internal: true\n        annotationsTCP:\n          dns-hostname: tcp.example.com\n        annotationsUDP:\n          dns-hostname: udp.example.com\n      ports:\n        udp:\n          port: 3000\n          expose: true\n          exposedPort: 80\n          protocol: UDP\n    asserts:\n      - equal:\n          path: items[0].metadata.annotations\n          value:\n            azure-load-balancer-internal: true\n            dns-hostname: tcp.example.com\n      - equal:\n          path: items[1].metadata.annotations\n          value:\n            azure-load-balancer-internal: true\n            dns-hostname: udp.example.com\n  - it: should merge protocol specific service annotations with annotationsTCP unspecified when specified via values\n    set:\n      service:\n        annotations:\n          azure-load-balancer-internal: true\n        annotationsUDP:\n          dns-hostname: udp.example.com\n      ports:\n        udp:\n          port: 3000\n          expose: true\n          exposedPort: 80\n          protocol: UDP\n    asserts:\n      - equal:\n          path: items[0].metadata.annotations\n          value:\n            azure-load-balancer-internal: true\n      - equal:\n          path: items[1].metadata.annotations\n          value:\n            azure-load-balancer-internal: true\n            dns-hostname: udp.example.com\n  - it: should merge protocol specific service annotations with annotationsUDP unspecified when specified via values\n    set:\n      service:\n        annotations:\n          azure-load-balancer-internal: true\n        annotationsTCP:\n          dns-hostname: tcp.example.com\n      ports:\n        udp:\n          port: 3000\n          expose: true\n          exposedPort: 80\n          protocol: UDP\n    asserts:\n      - equal:\n          path: items[0].metadata.annotations\n          value:\n            azure-load-balancer-internal: true\n            dns-hostname: tcp.example.com\n      - equal:\n          path: items[1].metadata.annotations\n          value:\n            azure-load-balancer-internal: true\n  - it: should have customized labels when specified via values\n    set:\n      service:\n        labels:\n          custom-label: custom-value\n    asserts:\n      - equal:\n          path: items[0].metadata.labels.custom-label\n          value: custom-value\n\n  - it: should have custom spec elements when specified via values\n    set:\n      service:\n        spec:\n          externalTrafficPolicy: Cluster\n          loadBalancerIP: \"1.2.3.4\"\n          clusterIP: \"2.3.4.5\"\n          loadBalancerSourceRanges:\n            - 192.168.0.1/32\n            - 192.16.0.0/16\n          externalIPs:\n            - \"1.2.3.4\"\n    asserts:\n      - equal:\n          path: items[0].spec.ports[0].name\n          value: web\n      - equal:\n          path: items[0].spec.ports[0].protocol\n          value: TCP\n      - equal:\n          path: items[0].spec.externalTrafficPolicy\n          value: Cluster\n      - equal:\n          path: items[0].spec.loadBalancerIP\n          value: \"1.2.3.4\"\n      - equal:\n          path: items[0].spec.clusterIP\n          value: \"2.3.4.5\"\n      - equal:\n          path: items[0].spec.loadBalancerSourceRanges[0]\n          value: 192.168.0.1/32\n      - equal:\n          path: items[0].spec.loadBalancerSourceRanges[1]\n          value: 192.16.0.0/16\n      - equal:\n          path: items[0].spec.externalIPs[0]\n          value: \"1.2.3.4\"\n  - it: should have custom spec elements when specified via values for UPD ports\n    set:\n      ports:\n        udp:\n          port: 3000\n          expose: true\n          exposedPort: 80\n          protocol: UDP\n    asserts:\n      - equal:\n          path: items[1].spec.ports[0].name\n          value: udp\n      - equal:\n          path: items[1].spec.ports[0].protocol\n          value: UDP\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/tests/traefik-config_test.yaml",
    "content": "suite: Traefik configuration\ntemplates:\n  - deployment.yaml\ntests:\n  - it: should have no custom arguments when specified by default\n    set:\n      additionalArguments:\n        - --the.force.is.with.me=true\n    asserts:\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content: \"--the.force.is.with.me=true\"\n  - it: should have namespace restriction if rbac is namespaced\n    set:\n      rbac:\n        namespaced: true\n    asserts:\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content: \"--providers.kubernetesingress.namespaces=NAMESPACE\"\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content: \"--providers.kubernetescrd.namespaces=NAMESPACE\"\n  - it: should have a custom string of watched namespaces when specified in configuration\n    set:\n      rbac:\n        namespaced: true\n      providers:\n        kubernetesCRD:\n          enabled: true\n          allowCrossNamespace: true\n          namespaces:\n          - \"foo\"\n          - \"bar\"\n        kubernetesIngress:\n          enabled: true\n          namespaces:\n          - \"foo\"\n          - \"bar\"\n    asserts:\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content: \"--providers.kubernetesingress.namespaces=foo,bar\"\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content: \"--providers.kubernetescrd.allowCrossNamespace=true\"\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content: \"--providers.kubernetescrd.namespaces=foo,bar\"\n  - it: should not have the watched namespace when provider is disabled\n    set:\n      providers:\n        kubernetesCRD:\n          enabled: false\n          namespaces:\n          - \"foo\"\n          - \"bar\"\n        kubernetesIngress:\n          enabled: false\n          namespaces:\n            - \"foo\"\n            - \"bar\"\n    asserts:\n      - notContains:\n          path: spec.template.spec.containers[0].args\n          content:\n            \"--providers.kubernetesingress.namespaces\"\n      - notContains:\n          path: spec.template.spec.containers[0].args\n          content:\n            \"--providers.kubernetesingress\"\n      - notContains:\n          path: spec.template.spec.containers[0].args\n          content:\n            \"--providers.kubernetescrd.namespaces\"\n      - notContains:\n          path: spec.template.spec.containers[0].args\n          content:\n            \"--providers.kubernetescrd\"\n  - it: should have disable published Kubernetes service when default configuration\n    asserts:\n      - notContains:\n          path: spec.template.spec.containers[0].args\n          content: \"--providers.kubernetesingress.ingressendpoint.publishedservice=NAMESPACE/RELEASE-NAME-traefik\"\n  - it: should have enable published Kubernetes service when specified in configuration\n    set:\n        providers:\n          kubernetesIngress:\n            publishedService:\n              enabled: true\n    asserts:\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content: \"--providers.kubernetesingress.ingressendpoint.publishedservice=NAMESPACE/RELEASE-NAME-traefik\"\n  - it: should have a custom string in published Kubernetes service when specified in configuration\n    set:\n      providers:\n        kubernetesIngress:\n          publishedService:\n            enabled: true\n            pathOverride: foo/bar\n    asserts:\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content: \"--providers.kubernetesingress.ingressendpoint.publishedservice=foo/bar\"\n  - it: should match ingresses based on input label\n    set:\n        providers:\n          kubernetesIngress:\n            labelSelector: environment=devel\n    asserts:\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content: \"--providers.kubernetesingress.labelSelector=environment=devel\"\n  - it: should have a plugin storage if the experimental feature is enabled\n    set:\n      experimental:\n        plugins:\n          enabled: true\n    asserts:\n      - equal:\n          path: spec.template.spec.volumes[2]\n          value:\n            name: plugins\n            emptyDir: {}\n      - contains:\n          path: spec.template.spec.containers[0].volumeMounts\n          content:\n            name: plugins\n            mountPath: \"/plugins-storage\"\n  - it: should have tls configuration args when specified in values.yaml for port\n    set:\n      ports:\n        websecure:\n          tls:\n            enabled: true\n            options: \"foo\"\n            certResolver: \"certResolverFoo\"\n            domains:\n              - main: \"sub.domain.tld\"\n                sans:\n                  - \"alt1.domain.tld\"\n                  - \"alt2.domain.tld\"\n    asserts:\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content: \"--entrypoints.websecure.http.tls=true\"\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content: \"--entrypoints.websecure.http.tls.options=foo\"\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content: \"--entrypoints.websecure.http.tls.certResolver=certResolverFoo\"\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content: \"--entrypoints.websecure.http.tls.domains[0].main=sub.domain.tld\"\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content: \"--entrypoints.websecure.http.tls.domains[0].sans=alt1.domain.tld,alt2.domain.tld\"\n  - it: should have additional volumeMounts\n    set:\n      additionalVolumeMounts:\n        - name: foo-logs\n          mountPath: /var/log/traefik\n      asserts:\n        - equal:\n            path: spec.template.spec.containers[0].volumeMounts[3].name\n            value: foo-logs\n        - equal:\n            path: spec.template.spec.containers[0].volumeMounts[3].mountPath\n            value: /var/log/traefik\n  - it: should set custom probe port\n    set:\n      additionalArguments:\n        - --ping\n        - --ping.entrypoint=web\n      ports:\n        traefik:\n          port: 9000\n          healthchecksPort: 9001\n          exposedPort: 9000\n      asserts:\n        - equal:\n            path: spec.template.spec.containers[0].livenessProbe.httpGet.port\n            content: 9001\n        - equal:\n            path: spec.template.spec.containers[0].readinessProbe.httpGet.port\n            content: 9001\n        - contains:\n            path: spec.template.spec.containers[0].args\n            content: \"--ping\"\n        - contains:\n            path: spec.template.spec.containers[0].args\n            content: \"--ping.entrypoint=web\"\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/traefik-manifests.yaml",
    "content": "---\n# Source: traefik/templates/rbac/serviceaccount.yaml\nkind: ServiceAccount\napiVersion: v1\nmetadata:\n  name: traefik\n  labels:\n    app.kubernetes.io/name: traefik\n    helm.sh/chart: traefik-10.3.6\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/instance: traefik\n  annotations:\n---\n# Source: traefik/templates/rbac/clusterrole.yaml\nkind: ClusterRole\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: traefik\n  labels:\n    app.kubernetes.io/name: traefik\n    helm.sh/chart: traefik-10.3.6\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/instance: traefik\nrules:\n  - apiGroups:\n      - \"\"\n    resources:\n      - services\n      - endpoints\n      - secrets\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - extensions\n      - networking.k8s.io\n    resources:\n      - ingresses\n      - ingressclasses\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - extensions\n      - networking.k8s.io\n    resources:\n      - ingresses/status\n    verbs:\n      - update\n  - apiGroups:\n      - traefik.containo.us\n    resources:\n      - ingressroutes\n      - ingressroutetcps\n      - ingressrouteudps\n      - middlewares\n      - middlewaretcps\n      - tlsoptions\n      - tlsstores\n      - traefikservices\n      - serverstransports\n    verbs:\n      - get\n      - list\n      - watch\n---\n# Source: traefik/templates/rbac/clusterrolebinding.yaml\nkind: ClusterRoleBinding\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: traefik\n  labels:\n    app.kubernetes.io/name: traefik\n    helm.sh/chart: traefik-10.3.6\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/instance: traefik\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: traefik\nsubjects:\n  - kind: ServiceAccount\n    name: traefik\n    namespace: default\n---\n# Source: traefik/templates/deployment.yaml\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: traefik\n  labels:\n    app.kubernetes.io/name: traefik\n    helm.sh/chart: traefik-10.3.6\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/instance: traefik\n  annotations:\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: traefik\n      app.kubernetes.io/instance: traefik\n  strategy:\n    type: RollingUpdate\n    rollingUpdate:\n      maxSurge: 1\n      maxUnavailable: 1\n  template: \n    metadata:\n      annotations:\n        prometheus.io/scrape: \"true\"\n        prometheus.io/path: \"/metrics\"\n        prometheus.io/port: \"9100\"\n      labels:\n        app.kubernetes.io/name: traefik\n        helm.sh/chart: traefik-10.3.6\n        app.kubernetes.io/managed-by: Helm\n        app.kubernetes.io/instance: traefik\n    spec:\n      serviceAccountName: traefik\n      terminationGracePeriodSeconds: 60\n      hostNetwork: false\n      containers:\n      - image: \"codeaprendiz/traefik:2.5.3\"\n        imagePullPolicy: Always\n        name: traefik\n        resources:\n        readinessProbe:\n          httpGet:\n            path: /ping\n            port: 9000\n          failureThreshold: 1\n          initialDelaySeconds: 10\n          periodSeconds: 10\n          successThreshold: 1\n          timeoutSeconds: 2\n        livenessProbe:\n          httpGet:\n            path: /ping\n            port: 9000\n          failureThreshold: 3\n          initialDelaySeconds: 10\n          periodSeconds: 10\n          successThreshold: 1\n          timeoutSeconds: 2\n        ports:\n        - name: \"metrics\"\n          containerPort: 9100\n          protocol: \"TCP\"\n        - name: \"traefik\"\n          containerPort: 9000\n          protocol: \"TCP\"\n        - name: \"web\"\n          containerPort: 8000\n          protocol: \"TCP\"\n        - name: \"websecure\"\n          containerPort: 8443\n          protocol: \"TCP\"\n        securityContext:\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsGroup: 65532\n          runAsNonRoot: true\n          runAsUser: 65532\n        volumeMounts:\n          - name: data\n            mountPath: /data\n          - name: tmp\n            mountPath: /tmp\n        args:\n          - \"--global.checknewversion\"\n          - \"--global.sendanonymoususage\"\n          - \"--api.insecure=true\"\n          - \"--entryPoints.metrics.address=:9100/tcp\"\n          - \"--entryPoints.traefik.address=:9000/tcp\"\n          - \"--entryPoints.web.address=:8000/tcp\"\n          - \"--entryPoints.websecure.address=:8443/tcp\"\n          - \"--api.dashboard=true\"\n          - \"--ping=true\"\n          - \"--metrics.prometheus=true\"\n          - \"--metrics.prometheus.entrypoint=metrics\"\n          - \"--providers.kubernetescrd\"\n          - \"--providers.kubernetesingress\"\n          - \"--log.level=WARN\"\n          - \"--accesslog=true\"\n          - \"--accesslog.fields.defaultmode=keep\"\n          - \"--accesslog.fields.headers.defaultmode=drop\"\n      volumes:\n        - name: data\n          emptyDir: {}\n        - name: tmp\n          emptyDir: {}\n      securityContext:\n        fsGroup: 65532\n---\n# Source: traefik/templates/service.yaml\napiVersion: v1\nkind: List\nmetadata:\n  name: traefik\nitems:\n  - apiVersion: v1\n    kind: Service\n    metadata:\n      name: traefik\n      labels:\n        app.kubernetes.io/name: traefik\n        helm.sh/chart: traefik-10.3.6\n        app.kubernetes.io/managed-by: Helm\n        app.kubernetes.io/instance: traefik\n      annotations:\n    spec:\n      type: LoadBalancer\n      selector:\n        app.kubernetes.io/name: traefik\n        app.kubernetes.io/instance: traefik\n      ports:\n      - port: 80\n        name: web\n        targetPort: \"web\"\n        protocol: \"TCP\"\n      - port: 443\n        name: websecure\n        targetPort: \"websecure\"\n        protocol: \"TCP\"\n---\n# Source: traefik/templates/dashboard-hook-ingressroute.yaml\napiVersion: traefik.containo.us/v1alpha1\nkind: IngressRoute\nmetadata:\n  name: traefik-dashboard\n  annotations:\n    helm.sh/hook: \"post-install,post-upgrade\"\n  labels:\n    app.kubernetes.io/name: traefik\n    helm.sh/chart: traefik-10.3.6\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/instance: traefik\nspec:\n  entryPoints:\n    - traefik\n  routes:\n  - match: PathPrefix(`/dashboard`) || PathPrefix(`/api`)\n    kind: Rule\n    services:\n    - name: api@internal\n      kind: TraefikService\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_012__aws__kops_with_traefik_customization/traefik-helm-chart/values.yaml",
    "content": "# Default values for Traefik\nimage:\n  name: codeaprendiz/traefik\n  # defaults to appVersion\n  tag: \"v2.5.5\"\n  pullPolicy: Always\n\n#\n# Configure the deployment\n#\ndeployment:\n  enabled: true\n  # Can be either Deployment or DaemonSet\n  kind: Deployment\n  # Number of pods of the deployment (only applies when kind == Deployment)\n  replicas: 1\n  # Additional deployment annotations (e.g. for jaeger-operator sidecar injection)\n  annotations: {}\n  # Additional deployment labels (e.g. for filtering deployment by custom labels)\n  labels: {}\n  # Additional pod annotations (e.g. for mesh injection or prometheus scraping)\n  podAnnotations: {}\n  # Additional Pod labels (e.g. for filtering Pod by custom labels)\n  podLabels: {}\n  # Additional containers (e.g. for metric offloading sidecars)\n  additionalContainers: []\n    # https://docs.datadoghq.com/developers/dogstatsd/unix_socket/?tab=host\n    # - name: socat-proxy\n    # image: alpine/socat:1.0.5\n    # args: [\"-s\", \"-u\", \"udp-recv:8125\", \"unix-sendto:/socket/socket\"]\n    # volumeMounts:\n    #   - name: dsdsocket\n    #     mountPath: /socket\n  # Additional volumes available for use with initContainers and additionalContainers\n  additionalVolumes: []\n    # - name: dsdsocket\n    #   hostPath:\n    #     path: /var/run/statsd-exporter\n  # Additional initContainers (e.g. for setting file permission as shown below)\n  initContainers: []\n    # The \"volume-permissions\" init container is required if you run into permission issues.\n    # Related issue: https://github.com/traefik/traefik/issues/6972\n    # - name: volume-permissions\n    #   image: busybox:1.31.1\n    #   command: [\"sh\", \"-c\", \"chmod -Rv 600 /data/*\"]\n    #   volumeMounts:\n    #     - name: data\n    #       mountPath: /data\n  # Custom pod DNS policy. Apply if `hostNetwork: true`\n  # dnsPolicy: ClusterFirstWithHostNet\n  # Additional imagePullSecrets\n  imagePullSecrets: []\n   # - name: myRegistryKeySecretName\n\n# Pod disruption budget\npodDisruptionBudget:\n  enabled: false\n  # maxUnavailable: 1\n  # minAvailable: 0\n\n# Use ingressClass. Ignored if Traefik version < 2.3 / kubernetes < 1.18.x\ningressClass:\n  # true is not unit-testable yet, pending https://github.com/rancher/helm-unittest/pull/12\n  enabled: false\n  isDefaultClass: false\n  # Use to force a networking.k8s.io API Version for certain CI/CD applications. E.g. \"v1beta1\"\n  fallbackApiVersion: \"\"\n\n# Activate Pilot integration\npilot:\n  enabled: false\n  token: \"\"\n  # Toggle Pilot Dashboard\n  # dashboard: false\n\n# Enable experimental features\nexperimental:\n  plugins:\n    enabled: false\n  kubernetesGateway:\n    enabled: false\n    appLabelSelector: \"traefik\"\n    certificates: []\n    # - group: \"core\"\n    #   kind: \"Secret\"\n    #   name: \"mysecret\"\n    # By default, Gateway would be created to the Namespace you are deploying Traefik to.\n    # You may create that Gateway in another namespace, setting its name below:\n    # namespace: default\n\n# Create an IngressRoute for the dashboard\ningressRoute:\n  dashboard:\n    enabled: true\n    # Additional ingressRoute annotations (e.g. for kubernetes.io/ingress.class)\n    annotations: {}\n    # Additional ingressRoute labels (e.g. for filtering IngressRoute by custom labels)\n    labels: {}\n\nrollingUpdate:\n  maxUnavailable: 1\n  maxSurge: 1\n\n\n#\n# Configure providers\n#\nproviders:\n  kubernetesCRD:\n    enabled: true\n    allowCrossNamespace: false\n    namespaces: []\n      # - \"default\"\n  kubernetesIngress:\n    enabled: true\n    # labelSelector: environment=production,method=traefik\n    namespaces: []\n      # - \"default\"\n    # IP used for Kubernetes Ingress endpoints\n    publishedService:\n      enabled: false\n      # Published Kubernetes Service to copy status from. Format: namespace/servicename\n      # By default this Traefik service\n      # pathOverride: \"\"\n\n#\n# Add volumes to the traefik pod. The volume name will be passed to tpl.\n# This can be used to mount a cert pair or a configmap that holds a config.toml file.\n# After the volume has been mounted, add the configs into traefik by using the `additionalArguments` list below, eg:\n# additionalArguments:\n# - \"--providers.file.filename=/config/dynamic.toml\"\n# - \"--ping\"\n# - \"--ping.entrypoint=web\"\nvolumes: []\n# - name: public-cert\n#   mountPath: \"/certs\"\n#   type: secret\n# - name: '{{ printf \"%s-configs\" .Release.Name }}'\n#   mountPath: \"/config\"\n#   type: configMap\n\n# Additional volumeMounts to add to the Traefik container\nadditionalVolumeMounts: []\n  # For instance when using a logshipper for access logs\n  # - name: traefik-logs\n  #   mountPath: /var/log/traefik\n\n# Logs\n# https://docs.traefik.io/observability/logs/\nlogs:\n  # Traefik logs concern everything that happens to Traefik itself (startup, configuration, events, shutdown, and so on).\n  general:\n    # By default, the logs use a text format (common), but you can\n    # also ask for the json format in the format option\n    # format: json\n    # By default, the level is set to ERROR. Alternative logging levels are DEBUG, PANIC, FATAL, ERROR, WARN, and INFO.\n    level: WARN\n  access:\n    # To enable access logs\n    enabled: true\n    # By default, logs are written using the Common Log Format (CLF).\n    # To write logs in JSON, use json in the format option.\n    # If the given format is unsupported, the default (CLF) is used instead.\n    # format: json\n    # To write the logs in an asynchronous fashion, specify a bufferingSize option.\n    # This option represents the number of log lines Traefik will keep in memory before writing\n    # them to the selected output. In some cases, this option can greatly help performances.\n    # bufferingSize: 100\n    # Filtering https://docs.traefik.io/observability/access-logs/#filtering\n    filters: {}\n      # statuscodes: \"200,300-302\"\n      # retryattempts: true\n      # minduration: 10ms\n    # Fields\n    # https://docs.traefik.io/observability/access-logs/#limiting-the-fieldsincluding-headers\n    fields:\n      general:\n        defaultmode: keep\n        names: {}\n          # Examples:\n          # ClientUsername: drop\n      headers:\n        defaultmode: drop\n        names: {}\n          # Examples:\n          # User-Agent: redact\n          # Authorization: drop\n          # Content-Type: keep\n\nmetrics:\n  # datadog:\n  #   address: 127.0.0.1:8125\n  # influxdb:\n  #   address: localhost:8089\n  #   protocol: udp\n  prometheus:\n    entryPoint: metrics\n  # statsd:\n  #   address: localhost:8125\n\nglobalArguments:\n  - \"--global.checknewversion\"\n  - \"--global.sendanonymoususage\"\n  - \"--api.insecure=true\"\n\n#\n# Configure Traefik static configuration\n# Additional arguments to be passed at Traefik's binary\n# All available options available on https://docs.traefik.io/reference/static-configuration/cli/\n## Use curly braces to pass values: `helm install --set=\"additionalArguments={--providers.kubernetesingress.ingressclass=traefik-internal,--log.level=DEBUG}\"`\nadditionalArguments:\n  - \"--experimental.localPlugins.traceid.moduleName=github.com/trinnylondon/traefik-add-trace-id\"\n#  - \"--providers.kubernetesingress.ingressclass=traefik-internal\"\n#  - \"--log.level=DEBUG\"\n\n# Environment variables to be passed to Traefik's binary\nenv: []\n# - name: SOME_VAR\n#   value: some-var-value\n# - name: SOME_VAR_FROM_CONFIG_MAP\n#   valueFrom:\n#     configMapRef:\n#       name: configmap-name\n#       key: config-key\n# - name: SOME_SECRET\n#   valueFrom:\n#     secretKeyRef:\n#       name: secret-name\n#       key: secret-key\n\nenvFrom: []\n# - configMapRef:\n#     name: config-map-name\n# - secretRef:\n#     name: secret-name\n\n# Configure ports\nports:\n  # The name of this one can't be changed as it is used for the readiness and\n  # liveness probes, but you can adjust its config to your liking\n  traefik:\n    port: 9000\n    # Use hostPort if set.\n    # hostPort: 9000\n    #\n    # Use hostIP if set. If not set, Kubernetes will default to 0.0.0.0, which\n    # means it's listening on all your interfaces and all your IPs. You may want\n    # to set this value if you need traefik to listen on specific interface\n    # only.\n    # hostIP: 192.168.200.10\n\n    # Override the liveness/readiness port. This is useful to integrate traefik\n    # with an external Load Balancer that performs healthchecks.\n    # healthchecksPort: 9000\n\n    # Defines whether the port is exposed if service.type is LoadBalancer or\n    # NodePort.\n    #\n    # You SHOULD NOT expose the traefik port on production deployments.\n    # If you want to access it from outside of your cluster,\n    # use `kubectl port-forward` or create a secure ingress\n    expose: false\n    # The exposed port for this service\n    exposedPort: 9000\n    # The port protocol (TCP/UDP)\n    protocol: TCP\n  web:\n    port: 8000\n    # hostPort: 8000\n    expose: true\n    exposedPort: 80\n    # The port protocol (TCP/UDP)\n    protocol: TCP\n    # Use nodeport if set. This is useful if you have configured Traefik in a\n    # LoadBalancer\n    # nodePort: 32080\n    # Port Redirections\n    # Added in 2.2, you can make permanent redirects via entrypoints.\n    # https://docs.traefik.io/routing/entrypoints/#redirection\n    # redirectTo: websecure\n  websecure:\n    port: 8443\n    # hostPort: 8443\n    expose: true\n    exposedPort: 443\n    # The port protocol (TCP/UDP)\n    protocol: TCP\n    # nodePort: 32443\n    # Set TLS at the entrypoint\n    # https://doc.traefik.io/traefik/routing/entrypoints/#tls\n    tls:\n      enabled: false\n      # this is the name of a TLSOption definition\n      options: \"\"\n      certResolver: \"\"\n      domains: []\n      # - main: example.com\n      #   sans:\n      #     - foo.example.com\n      #     - bar.example.com\n  metrics:\n    port: 9100\n    # hostPort: 9100\n    # Defines whether the port is exposed if service.type is LoadBalancer or\n    # NodePort.\n    #\n    # You may not want to expose the metrics port on production deployments.\n    # If you want to access it from outside of your cluster,\n    # use `kubectl port-forward` or create a secure ingress\n    expose: false\n    # The exposed port for this service\n    exposedPort: 9100\n    # The port protocol (TCP/UDP)\n    protocol: TCP\n\n# TLS Options are created as TLSOption CRDs\n# https://doc.traefik.io/traefik/https/tls/#tls-options\n# Example:\n# tlsOptions:\n#   default:\n#     sniStrict: true\n#     preferServerCipherSuites: true\n#   foobar:\n#     curvePreferences:\n#       - CurveP521\n#       - CurveP384\ntlsOptions: {}\n\n# Options for the main traefik service, where the entrypoints traffic comes\n# from.\nservice:\n  enabled: true\n  type: LoadBalancer\n  # Additional annotations applied to both TCP and UDP services (e.g. for cloud provider specific config)\n  annotations: {}\n  # Additional annotations for TCP service only\n  annotationsTCP: {}\n  # Additional annotations for UDP service only\n  annotationsUDP: {}\n  # Additional service labels (e.g. for filtering Service by custom labels)\n  labels: {}\n  # Additional entries here will be added to the service spec. Cannot contains\n  # type, selector or ports entries.\n  spec: {}\n    # externalTrafficPolicy: Cluster\n    # loadBalancerIP: \"1.2.3.4\"\n    # clusterIP: \"2.3.4.5\"\n  loadBalancerSourceRanges: []\n    # - 192.168.0.1/32\n    # - 192.16.0.0/16\n  externalIPs: []\n    # - 1.2.3.4\n\n## Create HorizontalPodAutoscaler object.\n##\nautoscaling:\n  enabled: false\n#   minReplicas: 1\n#   maxReplicas: 10\n#   metrics:\n#   - type: Resource\n#     resource:\n#       name: cpu\n#       targetAverageUtilization: 60\n#   - type: Resource\n#     resource:\n#       name: memory\n#       targetAverageUtilization: 60\n\n# Enable persistence using Persistent Volume Claims\n# ref: http://kubernetes.io/docs/user-guide/persistent-volumes/\n# After the pvc has been mounted, add the configs into traefik by using the `additionalArguments` list below, eg:\n# additionalArguments:\n# - \"--certificatesresolvers.le.acme.storage=/data/acme.json\"\n# It will persist TLS certificates.\npersistence:\n  enabled: false\n  name: data\n#  existingClaim: \"\"\n  accessMode: ReadWriteOnce\n  size: 128Mi\n  # storageClass: \"\"\n  path: /data\n  annotations: {}\n  # subPath: \"\" # only mount a subpath of the Volume into the pod\n\n# If hostNetwork is true, runs traefik in the host network namespace\n# To prevent unschedulabel pods due to port collisions, if hostNetwork=true\n# and replicas>1, a pod anti-affinity is recommended and will be set if the\n# affinity is left as default.\nhostNetwork: false\n\n# Whether Role Based Access Control objects like roles and rolebindings should be created\nrbac:\n  enabled: true\n\n  # If set to false, installs ClusterRole and ClusterRoleBinding so Traefik can be used across namespaces.\n  # If set to true, installs namespace-specific Role and RoleBinding and requires provider configuration be set to that same namespace\n  namespaced: false\n\n# Enable to create a PodSecurityPolicy and assign it to the Service Account via RoleBinding or ClusterRoleBinding\npodSecurityPolicy:\n  enabled: false\n\n# The service account the pods will use to interact with the Kubernetes API\nserviceAccount:\n  # If set, an existing service account is used\n  # If not set, a service account is created automatically using the fullname template\n  name: \"\"\n\n# Additional serviceAccount annotations (e.g. for oidc authentication)\nserviceAccountAnnotations: {}\n\nresources: {}\n  # requests:\n  #   cpu: \"100m\"\n  #   memory: \"50Mi\"\n  # limits:\n  #   cpu: \"300m\"\n  #   memory: \"150Mi\"\naffinity: {}\n# # This example pod anti-affinity forces the scheduler to put traefik pods\n# # on nodes where no other traefik pods are scheduled.\n# # It should be used when hostNetwork: true to prevent port conflicts\n#   podAntiAffinity:\n#     requiredDuringSchedulingIgnoredDuringExecution:\n#     - labelSelector:\n#         matchExpressions:\n#         - key: app\n#           operator: In\n#           values:\n#           - {{ template \"traefik.name\" . }}\n#       topologyKey: failure-domain.beta.kubernetes.io/zone\nnodeSelector: {}\ntolerations: []\n\n# Pods can have priority.\n# Priority indicates the importance of a Pod relative to other Pods.\npriorityClassName: \"\"\n\n# Set the container security context\n# To run the container with ports below 1024 this will need to be adjust to run as root\nsecurityContext:\n  capabilities:\n    drop: [ALL]\n  readOnlyRootFilesystem: true\n  runAsGroup: 65532\n  runAsNonRoot: true\n  runAsUser: 65532\n\npodSecurityContext:\n  fsGroup: 65532\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/ReadMe.md",
    "content": "### Objective\n\n- We will use open source kafdrop and to access kafka cluster deployed in kubernetes.\n- kafdrop would be accessible on public URL domain using traefik as ingress\n- The cluster would be deployed on \n- The URL domain would be protected by oauth2-proxy\n\n\n\n[bitnami oauth2-proxy](https://github.com/bitnami/charts/tree/master/bitnami/oauth2-proxy/#installing-the-chart)\n\n- Also you will need the following DNS records pointing to the LoadBalancer created by Traefik\n```bash\n*.somedomain.com     ALIAS A      to Loadbalancer\nsomedomain.com       ALIAS A      to Loadbalancer\n```\n\n- Install the following ACM certificate on the loadbalancer\n```bash\n*.somedomain.com, somedomain.com\n```\n\n- Load balancer Protocol settings\n\n```bash\nSSL\t443\tSSL\t32280\tChange\t something-2342-4a19-afee-8d40334323239e2db45c (ACM) Change\nTCP\t80\tTCP\t31211\tN/A\tN/A\n```\n\n- You will also need to create the google APIs Oauth Token where you will receive client ID and tokens\n\n![](.images/google-apis.png)\n\n\n\n- First we deploy kafka and connect kafdrop to the same cluster using [task-009](../task-009-kafdrop)\n\nTrying to access kafdrop from specified gmail\n\n![](.images/kafdrop-url-screen.png)\n\nThe Oauth screen\n\n![](.images/oauth-screen.png)\n\nAfter login screen\n\n![](.images/afterlogin.png)\n\nIf you try to login from any other gmail account\n\n![](.images/forbidding.png)"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/kafdrop-chart/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/kafdrop-chart/Chart.yaml",
    "content": "apiVersion: v1\nappVersion: \"3.x\"\ndescription: A Helm chart for Kafdrop\nname: kafdrop\nversion: 0.1.0\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/kafdrop-chart/kafdrop-manifests.yaml",
    "content": "---\n# Source: kafdrop/templates/service.yaml\napiVersion: v1\nkind: Service\nmetadata:\n  name: kafdrop\n  labels:\n    app.kubernetes.io/name: kafdrop\n    helm.sh/chart: kafdrop-0.1.0\n    app.kubernetes.io/instance: kafdrop\n    app.kubernetes.io/managed-by: Helm\nspec:\n  type: NodePort\n  ports:\n    - port: 9000\n      targetPort: http\n      protocol: TCP\n      name: http\n\n      nodePort: 30900\n\n  selector:\n    app.kubernetes.io/name: kafdrop\n    app.kubernetes.io/instance: kafdrop\n---\n# Source: kafdrop/templates/deployment.yaml\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: kafdrop\n  labels:\n    app.kubernetes.io/name: kafdrop\n    helm.sh/chart: kafdrop-0.1.0\n    app.kubernetes.io/instance: kafdrop\n    app.kubernetes.io/managed-by: Helm\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: kafdrop\n      app.kubernetes.io/instance: kafdrop\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/name: kafdrop\n        app.kubernetes.io/instance: kafdrop\n      annotations:\n    spec:\n      containers:\n        - name: kafdrop\n          image: \"obsidiandynamics/kafdrop:latest\"\n          imagePullPolicy: Always\n          env:\n          - name: KAFKA_BROKERCONNECT\n            value: \"kafka-release-0.kafka-release-headless.default.svc.cluster.local:9092\"\n          - name: KAFKA_PROPERTIES\n            value: \"\"\n          - name: KAFKA_TRUSTSTORE\n            value: \"\"\n          - name: KAFKA_KEYSTORE\n            value: \"\"\n          - name: JVM_OPTS\n            value: \"\"\n          - name: JMX_PORT\n            value: \"8686\"\n          - name: HOST\n            value: \"\"\n          - name: SERVER_SERVLET_CONTEXTPATH\n            value: \"\"\n          - name: KAFKA_PROPERTIES_FILE\n            value: \"kafka.properties\"\n          - name: KAFKA_TRUSTSTORE_FILE\n            value: \"kafka.truststore.jks\"\n          - name: KAFKA_KEYSTORE_FILE\n            value: \"kafka.keystore.jks\"\n          - name: SERVER_PORT\n            value: \"9000\"\n          - name: CMD_ARGS\n            value: \"\"\n\n          ports:\n            - name: http\n              containerPort: 9000\n              protocol: TCP\n          livenessProbe:\n            httpGet:\n              path: \"/actuator/health\"\n              port: http\n            initialDelaySeconds: 180\n            periodSeconds: 30\n            timeoutSeconds: 10\n          readinessProbe:\n            httpGet:\n              path: \"/actuator/health\"\n              port: http\n            initialDelaySeconds: 20\n            periodSeconds: 5\n            timeoutSeconds: 10\n          resources:\n            requests:\n              cpu: 1m\n              memory: 128Mi\n---\n# Source: kafdrop/templates/ingressroute.yaml\napiVersion: traefik.containo.us/v1alpha1\nkind: IngressRoute\nmetadata:\n  name: kafdrop-ingress\nspec:\n  entryPoints:\n    - web\n    - websecure\n  routes:\n    - kind: Rule\n      match: Host(`kafdrop.somedomain.com`) && PathPrefix(`/`)\n      middlewares:\n      - name: headers\n      - name: redirect\n      - name: errors\n      priority: 1\n      services:\n        - name: kafdrop-release\n          port: 9000\n    - kind: Rule\n      match: Host(`kafdrop.somedomain.com`) && (PathPrefix(`/oauth2/`) || Path(`/logout`))\n      middlewares:\n        - name: cors-security-headers\n      priority: 2\n      services:\n        - name: oauth-release-oauth2-proxy\n          port: 8080\n  tls: {}\n---\n# Source: kafdrop/templates/traefik-middleware.yaml\napiVersion: traefik.containo.us/v1alpha1\nkind: Middleware\nmetadata:\n  name: headers\nspec:\n  headers:\n    customRequestHeaders:\n      X-Auth-Request-Redirect: https://kafdrop.somedomain.com/\n    customResponseHeaders:\n      X-Auth-Request-Redirect: https://kafdrop.somedomain.com/\n---\n# Source: kafdrop/templates/traefik-middleware.yaml\napiVersion: traefik.containo.us/v1alpha1\nkind: Middleware\nmetadata:\n  name: redirect\nspec:\n  forwardAuth:\n    address: https://auth.somedomain.com\n    trustForwardHeader: true\n    authResponseHeaders:\n      - X-Auth-Request-Access-Token\n      - Authorization\n---\n# Source: kafdrop/templates/traefik-middleware.yaml\napiVersion: traefik.containo.us/v1alpha1\nkind: Middleware\nmetadata:\n  name: errors\nspec:\n  errors:\n    status:\n      - \"401\"\n    query: /oauth2/sign_in\n    service:\n      name: kafdrop-release\n      port: 9000\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/kafdrop-chart/templates/NOTES.txt",
    "content": "1. Get the application URL by running these commands:\n{{- if .Values.ingress.enabled }}\n{{- range .Values.ingress.hosts }}\n  http{{ if $.Values.ingress.tls }}s{{ end }}://{{ . }}{{ $.Values.ingress.path }}\n{{- end }}\n{{- else if contains \"NodePort\" .Values.service.type }}\n  export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath=\"{.spec.ports[0].nodePort}\" services {{ include \"chart.fullname\" . }})\n  export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath=\"{.items[0].status.addresses[0].address}\")\n  echo http://$NODE_IP:$NODE_PORT\n{{- else if contains \"LoadBalancer\" .Values.service.type }}\n     NOTE: It may take a few minutes for the LoadBalancer IP to be available.\n           You can watch the status of by running 'kubectl get svc -w {{ include \"chart.fullname\" . }}'\n  export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include \"chart.fullname\" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')\n  echo http://$SERVICE_IP:{{ .Values.service.port }}\n{{- else if contains \"ClusterIP\" .Values.service.type }}\n  export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l \"app.kubernetes.io/name={{ include \"chart.name\" . }},app.kubernetes.io/instance={{ .Release.Name }}\" -o jsonpath=\"{.items[0].metadata.name}\")\n  echo \"Visit http://127.0.0.1:8080 to use your application\"\n  kubectl port-forward $POD_NAME 8080:80\n{{- end }}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/kafdrop-chart/templates/_helpers.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"chart.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"chart.fullname\" -}}\n{{- if .Values.fullnameOverride -}}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" -}}\n{{- else -}}\n{{- $name := default .Chart.Name .Values.nameOverride -}}\n{{- if contains $name .Release.Name -}}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" -}}\n{{- else -}}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"chart.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/kafdrop-chart/templates/deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{ include \"chart.fullname\" . }}\n  labels:\n    app.kubernetes.io/name: {{ include \"chart.name\" . }}\n    helm.sh/chart: {{ include \"chart.chart\" . }}\n    app.kubernetes.io/instance: {{ .Release.Name }}\n    app.kubernetes.io/managed-by: {{ .Release.Service }}\nspec:\n  replicas: {{ .Values.replicaCount }}\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: {{ include \"chart.name\" . }}\n      app.kubernetes.io/instance: {{ .Release.Name }}\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/name: {{ include \"chart.name\" . }}\n        app.kubernetes.io/instance: {{ .Release.Name }}\n      annotations:\n{{- if .Values.podAnnotations }}\n{{ toYaml .Values.podAnnotations | indent 8 }}\n{{- end }}        \n    spec:\n      containers:\n        - name: {{ .Chart.Name }}\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag }}\"\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          env:\n          - name: KAFKA_BROKERCONNECT\n            value: \"{{ .Values.kafka.brokerConnect }}\"\n          - name: KAFKA_PROPERTIES\n            value: \"{{ .Values.kafka.properties }}\"\n          - name: KAFKA_TRUSTSTORE\n            value: \"{{ .Values.kafka.truststore }}\"\n          - name: KAFKA_KEYSTORE\n            value: \"{{ .Values.kafka.keystore }}\"\n          - name: JVM_OPTS\n            value: \"{{ .Values.jvm.opts }}\"\n          - name: JMX_PORT\n            value: \"{{ .Values.jmx.port }}\"\n          - name: HOST\n            value: \"{{ .Values.host }}\"\n          - name: SERVER_SERVLET_CONTEXTPATH\n            value: \"{{ .Values.server.servlet.contextPath | trimSuffix \"/\" }}\"\n          - name: KAFKA_PROPERTIES_FILE\n            value: \"{{ .Values.kafka.propertiesFile }}\"\n          - name: KAFKA_TRUSTSTORE_FILE\n            value: \"{{ .Values.kafka.truststoreFile }}\"\n          - name: KAFKA_KEYSTORE_FILE\n            value: \"{{ .Values.kafka.keystoreFile }}\"\n          - name: SERVER_PORT\n            value: \"{{ .Values.server.port }}\"\n          - name: CMD_ARGS\n{{- if .Values.mountProtoDesc.enabled }}\n            value: \"--message.format=PROTOBUF --protobufdesc.directory=/protodesc/ {{ .Values.cmdArgs }}\"\n{{- else }}\n            value: \"{{ .Values.cmdArgs }}\"\n{{- end }}\n\n          ports:\n            - name: http\n              containerPort: 9000\n              protocol: TCP\n          livenessProbe:\n            httpGet:\n              path: \"{{ .Values.server.servlet.contextPath | trimSuffix \"/\" }}/actuator/health\"\n              port: http\n            initialDelaySeconds: 180\n            periodSeconds: 30\n            timeoutSeconds: 10\n          readinessProbe:\n            httpGet:\n              path: \"{{ .Values.server.servlet.contextPath | trimSuffix \"/\" }}/actuator/health\"\n              port: http\n            initialDelaySeconds: 20\n            periodSeconds: 5\n            timeoutSeconds: 10\n          resources:\n{{ toYaml .Values.resources | indent 12 }}\n    {{- with .Values.nodeSelector }}\n      nodeSelector:\n{{ toYaml . | indent 8 }}\n    {{- end }}\n    {{- with .Values.affinity }}\n      affinity:\n{{ toYaml . | indent 8 }}\n    {{- end }}\n    {{- with .Values.tolerations }}\n      tolerations:\n{{ toYaml . | indent 8 }}\n    {{- end }}\n{{- if .Values.mountProtoDesc.enabled }}\n          volumeMounts:\n            - mountPath: /protodesc/\n              name: proto-desc\n      volumes:\n        - name: proto-desc\n          hostPath:\n            path: {{ .Values.mountProtoDesc.hostPath }}\n            type: Directory\n{{- end }}\n\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/kafdrop-chart/templates/ingress.yaml",
    "content": "{{- if .Values.ingress.enabled -}}\n{{- $fullName := include \"chart.fullname\" . -}}\n{{- $ingressPath := .Values.ingress.path -}}\napiVersion: extensions/v1beta1\nkind: Ingress\nmetadata:\n  name: {{ $fullName }}\n  labels:\n    app.kubernetes.io/name: {{ include \"chart.name\" . }}\n    helm.sh/chart: {{ include \"chart.chart\" . }}\n    app.kubernetes.io/instance: {{ .Release.Name }}\n    app.kubernetes.io/managed-by: {{ .Release.Service }}\n{{- with .Values.ingress.annotations }}\n  annotations:\n{{ toYaml . | indent 4 }}\n{{- end }}\nspec:\n{{- if .Values.ingress.tls }}\n  tls:\n  {{- range .Values.ingress.tls }}\n    - hosts:\n      {{- range .hosts }}\n        - {{ . | quote }}\n      {{- end }}\n      secretName: {{ .secretName }}\n  {{- end }}\n{{- end }}\n  rules:\n  {{- range .Values.ingress.hosts }}\n    - host: {{ . | quote }}\n      http:\n        paths:\n          - path: {{ $ingressPath }}\n            backend:\n              serviceName: {{ $fullName }}\n              servicePort: 30900\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/kafdrop-chart/templates/ingressroute.yaml",
    "content": "{{- if .Values.traefik.enabled -}}\n  {{- $servicePort := .Values.service.port -}}\napiVersion: traefik.containo.us/v1alpha1\nkind: IngressRoute\nmetadata:\n  name: kafdrop-ingress\nspec:\n  entryPoints:\n    - web\n    - websecure\n  routes:\n    - kind: Rule\n      match: {{ printf \"Host(`%s`) && PathPrefix(`/`)\" .Values.traefik.ingress.host }}\n      middlewares:\n      - name: headers\n      - name: redirect\n      - name: errors\n      priority: 1\n      services:\n        - name: kafdrop-release\n          port: {{ $servicePort }}\n    - kind: Rule\n      match: {{ printf \"Host(`%s`) && (PathPrefix(`/oauth2/`) || Path(`/logout`))\" .Values.traefik.ingress.host }}\n      middlewares:\n        - name: cors-security-headers\n      priority: 2\n      services:\n        - name: oauth-release-oauth2-proxy\n          port: 8080\n  tls: {}\n  {{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/kafdrop-chart/templates/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n{{- if .Values.service.annotations }}\n  annotations:\n{{ tpl (toYaml .Values.service.annotations) . | indent 4 }}\n{{- end }}\n  name: {{ include \"chart.fullname\" . }}\n  labels:\n    app.kubernetes.io/name: {{ include \"chart.name\" . }}\n    helm.sh/chart: {{ include \"chart.chart\" . }}\n    app.kubernetes.io/instance: {{ .Release.Name }}\n    app.kubernetes.io/managed-by: {{ .Release.Service }}\nspec:\n  type: {{ .Values.service.type }}\n  ports:\n    - port: {{ .Values.service.port }}\n      targetPort: http\n      protocol: TCP\n      name: http\n{{ if (and (eq .Values.service.type \"NodePort\") (not (empty .Values.service.nodePort))) }}\n      nodePort: {{.Values.service.nodePort}}\n{{ end }}\n  selector:\n    app.kubernetes.io/name: {{ include \"chart.name\" . }}\n    app.kubernetes.io/instance: {{ .Release.Name }}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/kafdrop-chart/templates/traefik-middleware.yaml",
    "content": "{{- if .Values.traefik.enabled -}}\n{{- $servicePort := .Values.service.port -}}\napiVersion: traefik.containo.us/v1alpha1\nkind: Middleware\nmetadata:\n  name: headers\nspec:\n  headers:\n    customRequestHeaders:\n      X-Auth-Request-Redirect: {{ printf \"https://%s/\" .Values.traefik.ingress.host }}\n    customResponseHeaders:\n      X-Auth-Request-Redirect: {{ printf \"https://%s/\" .Values.traefik.ingress.host }}\n---\n\napiVersion: traefik.containo.us/v1alpha1\nkind: Middleware\nmetadata:\n  name: redirect\nspec:\n  forwardAuth:\n    address: {{ printf \"https://%s\" .Values.traefik.ingress.forwardhost }}\n    trustForwardHeader: true\n    authResponseHeaders:\n      - X-Auth-Request-Access-Token\n      - Authorization\n---\napiVersion: traefik.containo.us/v1alpha1\nkind: Middleware\nmetadata:\n  name: errors\nspec:\n  errors:\n    status:\n      - \"401\"\n    query: /oauth2/sign_in\n    service:\n      name: kafdrop-release\n      port: {{ $servicePort }}\n---\n{{- end -}}\n\n\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/kafdrop-chart/values.yaml",
    "content": "replicaCount: 1\n\nimage:\n  repository: obsidiandynamics/kafdrop\n  tag: latest\n  pullPolicy: Always\n\nkafka:\n  brokerConnect: kafka-release-0.kafka-release-headless.default.svc.cluster.local:9092\n  properties: \"\"\n  truststore: \"\"\n  keystore: \"\"\n  propertiesFile: \"kafka.properties\"\n  truststoreFile: \"kafka.truststore.jks\"\n  keystoreFile: \"kafka.keystore.jks\"\n\nhost:\n\njvm:\n  opts: \"\"\njmx:\n  port: 8686\n\nnameOverride: \"\"\nfullnameOverride: \"\"\n\ncmdArgs: \"\"\n\nserver:\n  port: 9000\n  servlet:\n    contextPath: /\n\nservice:\n  annotations: {}\n  type: NodePort\n  port: 9000\n  nodePort: 30900\n\ningress:\n  enabled: false\n  annotations: {}\n  path: /kafdrop\n  hosts: [localhost]\n  tls: []\n\ntraefik:\n  enabled: true\n  ingress:\n    host: kafdrop.somedomain.com\n    forwardhost: auth.somedomain.com\n\n\nresources:\n  # limits:\n  #  cpu: 100m\n  #  memory: 128Mi\n  requests:\n    cpu: 1m\n    memory: 128Mi\n\nnodeSelector: {}\n\ntolerations: []\n\naffinity: {}\n\npodAnnotations: {}\n\nmountProtoDesc:\n  enabled: false\n  hostPath:\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/Chart.yaml",
    "content": "annotations:\n  category: Infrastructure\napiVersion: v2\nappVersion: 7.1.3\ndependencies:\n- name: common\n  repository: https://charts.bitnami.com/bitnami\n  tags:\n  - bitnami-common\n  version: 1.x.x\n- condition: redis.enabled\n  name: redis\n  repository: https://charts.bitnami.com/bitnami\n  version: 14.x.x\ndescription: A reverse proxy and static file server that provides authentication using\n  different providers\nhome: https://github.com/bitnami/charts/tree/master/bitnami/oauth2-proxy\nicon: https://bitnami.com/assets/stacks/oauth2-proxy/img/oauth2-proxy-stack-220x234.png\nkeywords:\n- kubernetes\n- oauth\n- oauth2\n- authentication\n- google\n- github\nmaintainers:\n- email: containers@bitnami.com\n  name: Bitnami\nname: oauth2-proxy\nsources:\n- https://github.com/bitnami/bitnami-docker-oauth2-proxy\n- https://github.com/oauth2-proxy/oauth2-proxy\nversion: 0.1.8\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/README.md",
    "content": "# OAuth2 Proxy\n\n[oauth2-proxy](https://github.com/oauth2-proxy/oauth2-proxy) is a reverse proxy and static file server that provides authentication using Providers (Google, GitHub, and others) to validate accounts by email, domain or group.\n\n## TL;DR\n\n```console\n$ helm repo add bitnami https://charts.bitnami.com/bitnami\n$ helm install my-release bitnami/oauth2-proxy\n```\n\n## Introduction\n\nBitnami charts for Helm are carefully engineered, actively maintained and are the quickest and easiest way to deploy containers on a Kubernetes cluster that are ready to handle production workloads.\n\nThis chart bootstraps a [OAuth2 Proxy](https://github.com/oauth2-proxy/oauth2-proxy) Deployment in a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.\n\nBitnami charts can be used with [Kubeapps](https://kubeapps.com/) for deployment and management of Helm Charts in clusters. This Helm chart has been tested on top of [Bitnami Kubernetes Production Runtime](https://kubeprod.io/) (BKPR). Deploy BKPR to get automated TLS certificates, logging and monitoring for your applications.\n\n## Prerequisites\n\n- Kubernetes 1.12+\n- Helm 3.1.0\n- PV provisioner support in the underlying infrastructure\n- ReadWriteMany volumes for deployment scaling\n\n## Installing the Chart\n\nTo install the chart with the release name `my-release`:\n\n```console\nhelm install my-release bitnami/oauth2-proxys\n```\n\nThe command deploys OAuth2 Proxy on the Kubernetes cluster in the default configuration. The [Parameters](#parameters) section lists the parameters that can be configured during installation.\n\n> **Tip**: List all releases using `helm list`\n\n## Uninstalling the Chart\n\nTo uninstall/delete the `my-release` deployment:\n\n```console\nhelm delete my-release\n```\n\nThe command removes all the Kubernetes components associated with the chart and deletes the release.\n\n## Parameters\n\n### Global parameters\n\n| Name                      | Description                                     | Value |\n|---------------------------|-------------------------------------------------|-------|\n| `global.imageRegistry`    | Global Docker image registry                    | `\"\"`  |\n| `global.imagePullSecrets` | Global Docker registry secret names as an array | `[]`  |\n| `global.storageClass`     | Global StorageClass for Persistent Volume(s)    | `\"\"`  |\n\n\n### Common parameters\n\n| Name                     | Description                                                                             | Value           |\n|--------------------------|-----------------------------------------------------------------------------------------|-----------------|\n| `kubeVersion`            | Override Kubernetes version                                                             | `\"\"`            |\n| `nameOverride`           | String to partially override common.names.fullname                                      | `\"\"`            |\n| `fullnameOverride`       | String to fully override common.names.fullname                                          | `\"\"`            |\n| `commonLabels`           | Labels to add to all deployed objects                                                   | `{}`            |\n| `commonAnnotations`      | Annotations to add to all deployed objects                                              | `{}`            |\n| `clusterDomain`          | Kubernetes cluster domain name                                                          | `cluster.local` |\n| `extraDeploy`            | Array of extra objects to deploy with the release                                       | `[]`            |\n| `diagnosticMode.enabled` | Enable diagnostic mode (all probes will be disabled and the command will be overridden) | `false`         |\n| `diagnosticMode.command` | Command to override all containers in the deployment                                    | `[]`            |\n| `diagnosticMode.args`    | Args to override all containers in the deployment                                       | `[]`            |\n\n\n### Traffic Exposure Parameters\n\n| Name                               | Description                                                                                           | Value                    |\n|------------------------------------|-------------------------------------------------------------------------------------------------------|--------------------------|\n| `service.type`                     | OAuth2 Proxy service type                                                                             | `ClusterIP`              |\n| `service.port`                     | OAuth2 Proxy service HTTP port                                                                        | `80`                     |\n| `service.nodePorts.http`           | Node port for HTTP                                                                                    | `\"\"`                     |\n| `service.clusterIP`                | OAuth2 Proxy service Cluster IP                                                                       | `\"\"`                     |\n| `service.loadBalancerIP`           | OAuth2 Proxy service Load Balancer IP                                                                 | `\"\"`                     |\n| `service.loadBalancerSourceRanges` | OAuth2 Proxy service Load Balancer sources                                                            | `[]`                     |\n| `service.externalTrafficPolicy`    | OAuth2 Proxy service external traffic policy                                                          | `Cluster`                |\n| `service.annotations`              | Additional custom annotations for OAuth2 Proxy service                                                | `{}`                     |\n| `ingress.enabled`                  | Enable ingress record generation for WordPress                                                        | `false`                  |\n| `ingress.certManager`              | Add the corresponding annotations for cert-manager integration                                        | `false`                  |\n| `ingress.pathType`                 | Ingress path type                                                                                     | `ImplementationSpecific` |\n| `ingress.apiVersion`               | Force Ingress API version (automatically detected if not set)                                         | `\"\"`                     |\n| `ingress.hostname`                 | Default host for the ingress record                                                                   | `oaut2-proxy.local`      |\n| `ingress.path`                     | Default path for the ingress record                                                                   | `/`                      |\n| `ingress.annotations`              | Additional custom annotations for the ingress record                                                  | `{}`                     |\n| `ingress.tls`                      | Enable TLS configuration for the host defined at `ingress.hostname` parameter                         | `false`                  |\n| `ingress.extraHosts`               | An array with additional hostname(s) to be covered with the ingress record                            | `[]`                     |\n| `ingress.extraPaths`               | An array with additional arbitrary paths that may need to be added to the ingress under the main host | `[]`                     |\n| `ingress.extraTls`                 | TLS configuration for additional hostname(s) to be covered with this ingress record                   | `[]`                     |\n\n\n### OAuth2 Proxy Image parameters\n\n| Name                | Description                                             | Value                  |\n|---------------------|---------------------------------------------------------|------------------------|\n| `image.registry`    | OAuth2 Proxy image registry                             | `docker.io`            |\n| `image.repository`  | OAuth2 Proxy image repository                           | `bitnami/oauth2-proxy` |\n| `image.tag`         | OAuth2 Proxy image tag (immutable tags are recommended) | `7.1.3-debian-10-r100` |\n| `image.pullPolicy`  | OAuth2 Proxy image pull policy                          | `IfNotPresent`         |\n| `image.pullSecrets` | OAuth2 Proxy image pull secrets                         | `[]`                   |\n\n\n### OAuth2 Proxy configuration parameters\n\n| Name                                                   | Description                                         | Value              |\n|--------------------------------------------------------|-----------------------------------------------------|--------------------|\n| `configuration.clientID`                               | OAuth client ID                                     | `XXXXXXX`          |\n| `configuration.clientSecret`                           | OAuth client secret                                 | `XXXXXXXX`         |\n| `configuration.cookieSecret`                           | OAuth cookie secret                                 | `XXXXXXXXXXXXXXXX` |\n| `configuration.existingSecret`                         | Secret with the client ID, secret and cookie secret | `\"\"`               |\n| `configuration.google.enabled`                         | Enable Google service account                       | `false`            |\n| `configuration.google.adminEmail`                      | Google admin email                                  | `\"\"`               |\n| `configuration.google.serviceAccountJson`              | Google Service account JSON                         | `\"\"`               |\n| `configuration.google.existingSecret`                  | Existing secret containing Google Service Account   | `\"\"`               |\n| `configuration.content`                                | Default configuration                               | `\"\"`               |\n| `configuration.existingConfigmap`                      | Configmap with the OAuth2 Proxy configuration       | `\"\"`               |\n| `configuration.authenticatedEmailsFile.enabled`        | Enable authenticated emails file                    | `false`            |\n| `configuration.authenticatedEmailsFile.content`        | Restricted access list (one email per line)         | `\"\"`               |\n| `configuration.authenticatedEmailsFile.existingSecret` | Secret with the authenticated emails file           | `\"\"`               |\n| `configuration.htpasswdFile.enabled`                   | Enable htpasswd file                                | `false`            |\n| `configuration.htpasswdFile.existingSecret`            | Existing secret for htpasswd file                   | `\"\"`               |\n| `configuration.htpasswdFile.content`                   | htpasswd file entries (one row per user)            | `\"\"`               |\n\n\n### OAuth2 Proxy deployment parameters\n\n| Name                                 | Description                                                                                | Value           |\n|--------------------------------------|--------------------------------------------------------------------------------------------|-----------------|\n| `containerPort`                      | OAuth2 Proxy port number                                                                   | `4180`          |\n| `replicaCount`                       | Number of OAuth2 Proxy replicas to deploy                                                  | `1`             |\n| `extraArgs`                          | add extra args to the default command                                                      | `[]`            |\n| `livenessProbe.enabled`              | Enable livenessProbe on OAuth2 Proxy nodes                                                 | `true`          |\n| `livenessProbe.initialDelaySeconds`  | Initial delay seconds for livenessProbe                                                    | `0`             |\n| `livenessProbe.periodSeconds`        | Period seconds for livenessProbe                                                           | `10`            |\n| `livenessProbe.timeoutSeconds`       | Timeout seconds for livenessProbe                                                          | `1`             |\n| `livenessProbe.failureThreshold`     | Failure threshold for livenessProbe                                                        | `5`             |\n| `livenessProbe.successThreshold`     | Success threshold for livenessProbe                                                        | `1`             |\n| `readinessProbe.enabled`             | Enable readinessProbe on OAuth2 Proxy nodes                                                | `true`          |\n| `readinessProbe.initialDelaySeconds` | Initial delay seconds for readinessProbe                                                   | `0`             |\n| `readinessProbe.periodSeconds`       | Period seconds for readinessProbe                                                          | `10`            |\n| `readinessProbe.timeoutSeconds`      | Timeout seconds for readinessProbe                                                         | `1`             |\n| `readinessProbe.failureThreshold`    | Failure threshold for readinessProbe                                                       | `5`             |\n| `readinessProbe.successThreshold`    | Success threshold for readinessProbe                                                       | `1`             |\n| `customLivenessProbe`                | Custom livenessProbe that overrides the default one                                        | `{}`            |\n| `customReadinessProbe`               | Custom readinessProbe that overrides the default one                                       | `{}`            |\n| `resources.limits`                   | The resources limits for the OAuth2 Proxy containers                                       | `{}`            |\n| `resources.requests`                 | The requested resources for the OAuth2 Proxy containers                                    | `{}`            |\n| `pdb.create`                         | Enable a Pod Disruption Budget creation                                                    | `false`         |\n| `pdb.minAvailable`                   | Minimum number/percentage of pods that should remain scheduled                             | `1`             |\n| `pdb.maxUnavailable`                 | Maximum number/percentage of pods that may be made unavailable                             | `1`             |\n| `podSecurityContext.enabled`         | Enabled OAuth2 Proxy pods' Security Context                                                | `true`          |\n| `podSecurityContext.fsGroup`         | Set OAuth2 Proxy pod's Security Context fsGroup                                            | `1001`          |\n| `containerSecurityContext.enabled`   | Enabled OAuth2 Proxy containers' Security Context                                          | `true`          |\n| `containerSecurityContext.runAsUser` | Set OAuth2 Proxy containers' Security Context runAsUser                                    | `1001`          |\n| `command`                            | Override default container command (useful when using custom images)                       | `[]`            |\n| `args`                               | Override default container args (useful when using custom images)                          | `[]`            |\n| `hostAliases`                        | OAuth2 Proxy pods host aliases                                                             | `[]`            |\n| `podLabels`                          | Extra labels for OAuth2 Proxy pods                                                         | `{}`            |\n| `podAnnotations`                     | Annotations for OAuth2 Proxy pods                                                          | `{}`            |\n| `podAffinityPreset`                  | Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`        | `\"\"`            |\n| `podAntiAffinityPreset`              | Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`   | `soft`          |\n| `nodeAffinityPreset.type`            | Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard`  | `\"\"`            |\n| `nodeAffinityPreset.key`             | Node label key to match. Ignored if `affinity` is set                                      | `\"\"`            |\n| `nodeAffinityPreset.values`          | Node label values to match. Ignored if `affinity` is set                                   | `[]`            |\n| `affinity`                           | Affinity for OAuth2 Proxy pods assignment                                                  | `{}`            |\n| `nodeSelector`                       | Node labels for OAuth2 Proxy pods assignment                                               | `{}`            |\n| `tolerations`                        | Tolerations for OAuth2 Proxy pods assignment                                               | `[]`            |\n| `updateStrategy.type`                | OAuth2 Proxy statefulset strategy type                                                     | `RollingUpdate` |\n| `priorityClassName`                  | OAuth2 Proxy pods' priorityClassName                                                       | `\"\"`            |\n| `lifecycleHooks`                     | for the OAuth2 Proxy container(s) to automate configuration before or after startup        | `{}`            |\n| `extraEnvVars`                       | Array with extra environment variables to add to OAuth2 Proxy nodes                        | `[]`            |\n| `extraEnvVarsCM`                     | Name of existing ConfigMap containing extra env vars for OAuth2 Proxy nodes                | `\"\"`            |\n| `extraEnvVarsSecret`                 | Name of existing Secret containing extra env vars for OAuth2 Proxy nodes                   | `\"\"`            |\n| `extraVolumes`                       | Optionally specify extra list of additional volumes for the OAuth2 Proxy pod(s)            | `[]`            |\n| `extraVolumeMounts`                  | Optionally specify extra list of additional volumeMounts for the OAuth2 Proxy container(s) | `[]`            |\n| `sidecars`                           | Add additional sidecar containers to the OAuth2 Proxy pod(s)                               | `[]`            |\n| `initContainers`                     | Add additional init containers to the OAuth2 Proxy pod(s)                                  | `[]`            |\n| `serviceAccount.create`              | Specifies whether a ServiceAccount should be created                                       | `true`          |\n| `serviceAccount.name`                | The name of the ServiceAccount to use                                                      | `\"\"`            |\n\n\n### External Redis&trade; parameters\n\n| Name                           | Description                                                  | Value  |\n|--------------------------------|--------------------------------------------------------------|--------|\n| `externalRedis.host`           | External Redis&trade; server host                            | `\"\"`   |\n| `externalRedis.password`       | External Redis&trade; user password                          | `\"\"`   |\n| `externalRedis.port`           | External Redis&trade; server port                            | `6379` |\n| `externalRedis.existingSecret` | The name of an existing secret with Redis&trade; credentials | `\"\"`   |\n\n\n### Redis&trade; sub-chart parameters\n\n| Name                                   | Description                                                  | Value        |\n|----------------------------------------|--------------------------------------------------------------|--------------|\n| `redis.enabled`                        | Deploy Redis&trade; sub-chart                                | `true`       |\n| `redis.architecture`                   | Redis&trade; architecture                                    | `standalone` |\n| `redis.master.service.port`            | Redis&trade; (without Sentinel) service port                 | `6379`       |\n| `redis.replica.replicaCount`           | Number of Redis&trade; replicas                              | `3`          |\n| `redis.auth.enabled`                   | Enable Redis&trade; authentication                           | `true`       |\n| `redis.auth.existingSecret`            | Secret with Redis&trade; credentials                         | `\"\"`         |\n| `redis.auth.existingSecretPasswordKey` | Key inside the existing secret with Redis&trade; credentials | `\"\"`         |\n| `redis.auth.sentinel`                  | Enable authentication in the Sentinel nodes                  | `true`       |\n| `redis.sentinel.enabled`               | Enable Redis&trade; sentinel in the deployment               | `false`      |\n| `redis.sentinel.masterSet`             | Name of the Redis&trade; Sentinel master set                 | `mymaster`   |\n| `redis.sentinel.service.port`          | Redis&trade; (with Sentinel) service port                    | `6379`       |\n| `redis.sentinel.service.sentinelPort`  | Redis&trade; (with Sentinel) sentinel service port           | `26379`      |\n\n\nSee https://github.com/bitnami-labs/readmenator to create the table\n\nThe above parameters map to the env variables defined in [bitnami/oauth2-proxy](http://github.com/bitnami/bitnami-docker-oauth2-proxy). For more information please refer to the [bitnami/oauth2-proxy](http://github.com/bitnami/bitnami-docker-oauth2-proxy) image documentation.\n\nSpecify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,\n\n```console\nhelm install my-release \\\n  --set replicaCount=2 \\\n    bitnami/oauth2-proxy\n```\n\nThe above command increase the default number of replicas.\n\n> NOTE: Once this chart is deployed, it is not possible to change the application's access credentials, such as usernames or passwords, using Helm. To change these application credentials after deployment, delete any persistent volumes (PVs) used by the chart and re-deploy it, or use the application's built-in administrative tools if available.\n\nAlternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. For example,\n\n```console\nhelm install my-release -f values.yaml bitnami/oauth2-proxy\n```\n\n> **Tip**: You can use the default [values.yaml](values.yaml)\n\n## Configuration and installation details\n\n### [Rolling VS Immutable tags](https://docs.bitnami.com/containers/how-to/understand-rolling-tags-containers/)\n\nIt is strongly recommended to use immutable tags in a production environment. This ensures your deployment does not change automatically if the same tag is updated with a different image.\n\nBitnami will release a new chart updating its containers if a new version of the main container, significant changes, or critical vulnerabilities exist.\n\n### Ingress\n\nThis chart provides support for Ingress resources. If an Ingress controller, such as [nginx-ingress](https://kubeapps.com/charts/stable/nginx-ingress) or [traefik](https://kubeapps.com/charts/stable/traefik), that Ingress controller can be used to serve OAuth2 Proxy.\n\nTo enable Ingress integration, set `ingress.enabled` to `true`. The `ingress.hostname` property can be used to set the host name. The `ingress.tls` parameter can be used to add the TLS configuration for this host. It is also possible to have more than one host, with a separate TLS configuration for each host. [Learn more about configuring and using Ingress](https://docs.bitnami.com/kubernetes/apps/oauth2-proxy/configuration/configure-use-ingress/).\n\n### TLS secrets\n\nThe chart also facilitates the creation of TLS secrets for use with the Ingress controller, with different options for certificate management. [Learn more about TLS secrets](https://docs.bitnami.com/kubernetes/apps/oauth2-proxy/administration/enable-tls/).\n\n## Persistence\n\nThe [Bitnami OAuth2 Proxy](https://github.com/bitnami/bitnami-docker-oauth2-proxy) image stores the OAuth2 Proxy data and configurations at the `/bitnami` path of the container. Persistent Volume Claims are used to keep the data across deployments. [Learn more about persistence in the chart documentation](https://docs.bitnami.com/kubernetes/apps/oauth2-proxy/configuration/chart-persistence/).\n\n### Additional environment variables\n\nIn case you want to add extra environment variables (useful for advanced operations like custom init scripts), you can use the `extraEnvVars` property.\n\n```yaml\nextraEnvVars:\n  - name: LOG_LEVEL\n    value: error\n```\n\nAlternatively, you can use a ConfigMap or a Secret with the environment variables. To do so, use the `extraEnvVarsCM` or the `extraEnvVarsSecret` values.\n\n### Sidecars\n\nIf additional containers are needed in the same pod as OAuth2 Proxy (such as additional metrics or logging exporters), they can be defined using the `sidecars` parameter. If these sidecars export extra ports, extra port definitions can be added using the `service.extraPorts` parameter. [Learn more about configuring and using sidecar containers](https://docs.bitnami.com/kubernetes/apps/oauth2-proxy/administration/configure-use-sidecars/).\n\n### Pod affinity\n\nThis chart allows you to set your custom affinity using the `affinity` parameter. Find more information about Pod affinity in the [kubernetes documentation](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity).\n\nAs an alternative, use one of the preset configurations for pod affinity, pod anti-affinity, and node affinity available at the [bitnami/common](https://github.com/bitnami/charts/tree/master/bitnami/common#affinities) chart. To do so, set the `podAffinityPreset`, `podAntiAffinityPreset`, or `nodeAffinityPreset` parameters.\n\n## Troubleshooting\n\nFind more information about how to deal with common errors related to Bitnami's Helm charts in [this troubleshooting guide](https://docs.bitnami.com/general/how-to/troubleshoot-helm-chart-issues).\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/common/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n.vscode/\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/common/Chart.yaml",
    "content": "annotations:\n  category: Infrastructure\napiVersion: v2\nappVersion: 1.8.0\ndescription: A Library Helm Chart for grouping common logic between bitnami charts.\n  This chart is not deployable by itself.\nhome: https://github.com/bitnami/charts/tree/master/bitnami/common\nicon: https://bitnami.com/downloads/logos/bitnami-mark.png\nkeywords:\n- common\n- helper\n- template\n- function\n- bitnami\nmaintainers:\n- email: containers@bitnami.com\n  name: Bitnami\nname: common\nsources:\n- https://github.com/bitnami/charts\n- http://www.bitnami.com/\ntype: library\nversion: 1.8.0\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/common/README.md",
    "content": "# Bitnami Common Library Chart\n\nA [Helm Library Chart](https://helm.sh/docs/topics/library_charts/#helm) for grouping common logic between bitnami charts.\n\n## TL;DR\n\n```yaml\ndependencies:\n  - name: common\n    version: 0.x.x\n    repository: https://charts.bitnami.com/bitnami\n```\n\n```bash\n$ helm dependency update\n```\n\n```yaml\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ include \"common.names.fullname\" . }}\ndata:\n  myvalue: \"Hello World\"\n```\n\n## Introduction\n\nThis chart provides a common template helpers which can be used to develop new charts using [Helm](https://helm.sh) package manager.\n\nBitnami charts can be used with [Kubeapps](https://kubeapps.com/) for deployment and management of Helm Charts in clusters. This Helm chart has been tested on top of [Bitnami Kubernetes Production Runtime](https://kubeprod.io/) (BKPR). Deploy BKPR to get automated TLS certificates, logging and monitoring for your applications.\n\n## Prerequisites\n\n- Kubernetes 1.12+\n- Helm 3.1.0\n\n## Parameters\n\nThe following table lists the helpers available in the library which are scoped in different sections.\n\n### Affinities\n\n| Helper identifier             | Description                                          | Expected Input                                 |\n|-------------------------------|------------------------------------------------------|------------------------------------------------|\n| `common.affinities.node.soft` | Return a soft nodeAffinity definition                | `dict \"key\" \"FOO\" \"values\" (list \"BAR\" \"BAZ\")` |\n| `common.affinities.node.hard` | Return a hard nodeAffinity definition                | `dict \"key\" \"FOO\" \"values\" (list \"BAR\" \"BAZ\")` |\n| `common.affinities.pod.soft`  | Return a soft podAffinity/podAntiAffinity definition | `dict \"component\" \"FOO\" \"context\" $`           |\n| `common.affinities.pod.hard`  | Return a hard podAffinity/podAntiAffinity definition | `dict \"component\" \"FOO\" \"context\" $`           |\n\n### Capabilities\n\n| Helper identifier                            | Description                                                                                    | Expected Input    |\n|----------------------------------------------|------------------------------------------------------------------------------------------------|-------------------|\n| `common.capabilities.kubeVersion`            | Return the target Kubernetes version (using client default if .Values.kubeVersion is not set). | `.` Chart context |\n| `common.capabilities.cronjob.apiVersion`     | Return the appropriate apiVersion for cronjob.                                                 | `.` Chart context |\n| `common.capabilities.deployment.apiVersion`  | Return the appropriate apiVersion for deployment.                                              | `.` Chart context |\n| `common.capabilities.statefulset.apiVersion` | Return the appropriate apiVersion for statefulset.                                             | `.` Chart context |\n| `common.capabilities.ingress.apiVersion`     | Return the appropriate apiVersion for ingress.                                                 | `.` Chart context |\n| `common.capabilities.rbac.apiVersion`        | Return the appropriate apiVersion for RBAC resources.                                          | `.` Chart context |\n| `common.capabilities.crd.apiVersion`         | Return the appropriate apiVersion for CRDs.                                                    | `.` Chart context |\n| `common.capabilities.policy.apiVersion`      | Return the appropriate apiVersion for policy                                                   | `.` Chart context |\n| `common.capabilities.supportsHelmVersion`    | Returns true if the used Helm version is 3.3+                                                  | `.` Chart context |\n\n### Errors\n\n| Helper identifier                       | Description                                                                                                                                                            | Expected Input                                                                      |\n|-----------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------|\n| `common.errors.upgrade.passwords.empty` | It will ensure required passwords are given when we are upgrading a chart. If `validationErrors` is not empty it will throw an error and will stop the upgrade action. | `dict \"validationErrors\" (list $validationError00 $validationError01)  \"context\" $` |\n\n### Images\n\n| Helper identifier                 | Description                                                                                                    | Expected Input                                                                                          |\n|-----------------------------------|----------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------|\n| `common.images.image`             | Return the proper and full image name                                                                          | `dict \"imageRoot\" .Values.path.to.the.image \"global\" $`, see [ImageRoot](#imageroot) for the structure. |\n| `common.images.pullSecrets`       | Return the proper Docker Image Registry Secret Names (deprecated: use common.images.renderPullSecrets instead) | `dict \"images\" (list .Values.path.to.the.image1, .Values.path.to.the.image2) \"global\" .Values.global`   |\n| `common.images.renderPullSecrets` | Return the proper Docker Image Registry Secret Names (evaluates values as templates)                           | `dict \"images\" (list .Values.path.to.the.image1, .Values.path.to.the.image2) \"context\" $`               |\n\n### Ingress\n\n| Helper identifier                         | Description                                                          | Expected Input                                                                                                                                                                   |\n|-------------------------------------------|----------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `common.ingress.backend`                  | Generate a proper Ingress backend entry depending on the API version | `dict \"serviceName\" \"foo\" \"servicePort\" \"bar\"`, see the [Ingress deprecation notice](https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16/) for the syntax differences |\n| `common.ingress.supportsPathType`         | Prints \"true\" if the pathType field is supported                     | `.` Chart context                                                                                                                                                                |\n| `common.ingress.supportsIngressClassname` | Prints \"true\" if the ingressClassname field is supported             | `.` Chart context                                                                                                                                                                |\n\n### Labels\n\n| Helper identifier           | Description                                          | Expected Input    |\n|-----------------------------|------------------------------------------------------|-------------------|\n| `common.labels.standard`    | Return Kubernetes standard labels                    | `.` Chart context |\n| `common.labels.matchLabels` | Return the proper Docker Image Registry Secret Names | `.` Chart context |\n\n### Names\n\n| Helper identifier       | Description                                                | Expected Inpput   |\n|-------------------------|------------------------------------------------------------|-------------------|\n| `common.names.name`     | Expand the name of the chart or use `.Values.nameOverride` | `.` Chart context |\n| `common.names.fullname` | Create a default fully qualified app name.                 | `.` Chart context |\n| `common.names.chart`    | Chart name plus version                                    | `.` Chart context |\n\n### Secrets\n\n| Helper identifier         | Description                                                  | Expected Input                                                                                                                                                                                                                  |\n|---------------------------|--------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `common.secrets.name`     | Generate the name of the secret.                             | `dict \"existingSecret\" .Values.path.to.the.existingSecret \"defaultNameSuffix\" \"mySuffix\" \"context\" $` see [ExistingSecret](#existingsecret) for the structure.                                                                  |\n| `common.secrets.key`      | Generate secret key.                                         | `dict \"existingSecret\" .Values.path.to.the.existingSecret \"key\" \"keyName\"` see [ExistingSecret](#existingsecret) for the structure.                                                                                             |\n| `common.passwords.manage` | Generate secret password or retrieve one if already created. | `dict \"secret\" \"secret-name\" \"key\" \"keyName\" \"providedValues\" (list \"path.to.password1\" \"path.to.password2\") \"length\" 10 \"strong\" false \"chartName\" \"chartName\" \"context\" $`, length, strong and chartNAme fields are optional. |\n| `common.secrets.exists`   | Returns whether a previous generated secret already exists.  | `dict \"secret\" \"secret-name\" \"context\" $`                                                                                                                                                                                       |\n\n### Storage\n\n| Helper identifier             | Description                           | Expected Input                                                                                                      |\n|-------------------------------|---------------------------------------|---------------------------------------------------------------------------------------------------------------------|\n| `common.affinities.node.soft` | Return a soft nodeAffinity definition | `dict \"persistence\" .Values.path.to.the.persistence \"global\" $`, see [Persistence](#persistence) for the structure. |\n\n### TplValues\n\n| Helper identifier         | Description                            | Expected Input                                                                                                                                           |\n|---------------------------|----------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `common.tplvalues.render` | Renders a value that contains template | `dict \"value\" .Values.path.to.the.Value \"context\" $`, value is the value should rendered as template, context frequently is the chart context `$` or `.` |\n\n### Utils\n\n| Helper identifier              | Description                                                                              | Expected Input                                                         |\n|--------------------------------|------------------------------------------------------------------------------------------|------------------------------------------------------------------------|\n| `common.utils.fieldToEnvVar`   | Build environment variable name given a field.                                           | `dict \"field\" \"my-password\"`                                           |\n| `common.utils.secret.getvalue` | Print instructions to get a secret value.                                                | `dict \"secret\" \"secret-name\" \"field\" \"secret-value-field\" \"context\" $` |\n| `common.utils.getValueFromKey` | Gets a value from `.Values` object given its key path                                    | `dict \"key\" \"path.to.key\" \"context\" $`                                 |\n| `common.utils.getKeyFromList`  | Returns first `.Values` key with a defined value or first of the list if all non-defined | `dict \"keys\" (list \"path.to.key1\" \"path.to.key2\") \"context\" $`         |\n\n### Validations\n\n| Helper identifier                                | Description                                                                                                             | Expected Input                                                                                                                                                                                                                                                           |\n|--------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `common.validations.values.single.empty`         | Validate a value must not be empty.                                                                                     | `dict \"valueKey\" \"path.to.value\" \"secret\" \"secret.name\" \"field\" \"my-password\" \"subchart\" \"subchart\" \"context\" $` secret, field and subchart are optional. In case they are given, the helper will generate a how to get instruction. See [ValidateValue](#validatevalue) |\n| `common.validations.values.multiple.empty`       | Validate a multiple values must not be empty. It returns a shared error for all the values.                             | `dict \"required\" (list $validateValueConf00 $validateValueConf01) \"context\" $`. See [ValidateValue](#validatevalue)                                                                                                                                                      |\n| `common.validations.values.mariadb.passwords`    | This helper will ensure required password for MariaDB are not empty. It returns a shared error for all the values.      | `dict \"secret\" \"mariadb-secret\" \"subchart\" \"true\" \"context\" $` subchart field is optional and could be true or false it depends on where you will use mariadb chart and the helper.                                                                                      |\n| `common.validations.values.postgresql.passwords` | This helper will ensure required password for PostgreSQL are not empty. It returns a shared error for all the values.   | `dict \"secret\" \"postgresql-secret\" \"subchart\" \"true\" \"context\" $` subchart field is optional and could be true or false it depends on where you will use postgresql chart and the helper.                                                                                |\n| `common.validations.values.redis.passwords`      | This helper will ensure required password for Redis&trade; are not empty. It returns a shared error for all the values. | `dict \"secret\" \"redis-secret\" \"subchart\" \"true\" \"context\" $` subchart field is optional and could be true or false it depends on where you will use redis chart and the helper.                                                                                          |\n| `common.validations.values.cassandra.passwords`  | This helper will ensure required password for Cassandra are not empty. It returns a shared error for all the values.    | `dict \"secret\" \"cassandra-secret\" \"subchart\" \"true\" \"context\" $` subchart field is optional and could be true or false it depends on where you will use cassandra chart and the helper.                                                                                  |\n| `common.validations.values.mongodb.passwords`    | This helper will ensure required password for MongoDB&reg; are not empty. It returns a shared error for all the values. | `dict \"secret\" \"mongodb-secret\" \"subchart\" \"true\" \"context\" $` subchart field is optional and could be true or false it depends on where you will use mongodb chart and the helper.                                                                                      |\n\n### Warnings\n\n| Helper identifier            | Description                      | Expected Input                                             |\n|------------------------------|----------------------------------|------------------------------------------------------------|\n| `common.warnings.rollingTag` | Warning about using rolling tag. | `ImageRoot` see [ImageRoot](#imageroot) for the structure. |\n\n## Special input schemas\n\n### ImageRoot\n\n```yaml\nregistry:\n  type: string\n  description: Docker registry where the image is located\n  example: docker.io\n\nrepository:\n  type: string\n  description: Repository and image name\n  example: bitnami/nginx\n\ntag:\n  type: string\n  description: image tag\n  example: 1.16.1-debian-10-r63\n\npullPolicy:\n  type: string\n  description: Specify a imagePullPolicy. Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'\n\npullSecrets:\n  type: array\n  items:\n    type: string\n  description: Optionally specify an array of imagePullSecrets (evaluated as templates).\n\ndebug:\n  type: boolean\n  description: Set to true if you would like to see extra information on logs\n  example: false\n\n## An instance would be:\n# registry: docker.io\n# repository: bitnami/nginx\n# tag: 1.16.1-debian-10-r63\n# pullPolicy: IfNotPresent\n# debug: false\n```\n\n### Persistence\n\n```yaml\nenabled:\n  type: boolean\n  description: Whether enable persistence.\n  example: true\n\nstorageClass:\n  type: string\n  description: Ghost data Persistent Volume Storage Class, If set to \"-\", storageClassName: \"\" which disables dynamic provisioning.\n  example: \"-\"\n\naccessMode:\n  type: string\n  description: Access mode for the Persistent Volume Storage.\n  example: ReadWriteOnce\n\nsize:\n  type: string\n  description: Size the Persistent Volume Storage.\n  example: 8Gi\n\npath:\n  type: string\n  description: Path to be persisted.\n  example: /bitnami\n\n## An instance would be:\n# enabled: true\n# storageClass: \"-\"\n# accessMode: ReadWriteOnce\n# size: 8Gi\n# path: /bitnami\n```\n\n### ExistingSecret\n\n```yaml\nname:\n  type: string\n  description: Name of the existing secret.\n  example: mySecret\nkeyMapping:\n  description: Mapping between the expected key name and the name of the key in the existing secret.\n  type: object\n\n## An instance would be:\n# name: mySecret\n# keyMapping:\n#   password: myPasswordKey\n```\n\n#### Example of use\n\nWhen we store sensitive data for a deployment in a secret, some times we want to give to users the possibility of using theirs existing secrets.\n\n```yaml\n# templates/secret.yaml\n---\napiVersion: v1\nkind: Secret\nmetadata:\n  name: {{ include \"common.names.fullname\" . }}\n  labels:\n    app: {{ include \"common.names.fullname\" . }}\ntype: Opaque\ndata:\n  password: {{ .Values.password | b64enc | quote }}\n\n# templates/dpl.yaml\n---\n...\n      env:\n        - name: PASSWORD\n          valueFrom:\n            secretKeyRef:\n              name: {{ include \"common.secrets.name\" (dict \"existingSecret\" .Values.existingSecret \"context\" $) }}\n              key: {{ include \"common.secrets.key\" (dict \"existingSecret\" .Values.existingSecret \"key\" \"password\") }}\n...\n\n# values.yaml\n---\nname: mySecret\nkeyMapping:\n  password: myPasswordKey\n```\n\n### ValidateValue\n\n#### NOTES.txt\n\n```console\n{{- $validateValueConf00 := (dict \"valueKey\" \"path.to.value00\" \"secret\" \"secretName\" \"field\" \"password-00\") -}}\n{{- $validateValueConf01 := (dict \"valueKey\" \"path.to.value01\" \"secret\" \"secretName\" \"field\" \"password-01\") -}}\n\n{{ include \"common.validations.values.multiple.empty\" (dict \"required\" (list $validateValueConf00 $validateValueConf01) \"context\" $) }}\n```\n\nIf we force those values to be empty we will see some alerts\n\n```console\n$ helm install test mychart --set path.to.value00=\"\",path.to.value01=\"\"\n    'path.to.value00' must not be empty, please add '--set path.to.value00=$PASSWORD_00' to the command. To get the current value:\n\n        export PASSWORD_00=$(kubectl get secret --namespace default secretName -o jsonpath=\"{.data.password-00}\" | base64 --decode)\n\n    'path.to.value01' must not be empty, please add '--set path.to.value01=$PASSWORD_01' to the command. To get the current value:\n\n        export PASSWORD_01=$(kubectl get secret --namespace default secretName -o jsonpath=\"{.data.password-01}\" | base64 --decode)\n```\n\n## Upgrading\n\n### To 1.0.0\n\n[On November 13, 2020, Helm v2 support was formally finished](https://github.com/helm/charts#status-of-the-project), this major version is the result of the required changes applied to the Helm Chart to be able to incorporate the different features added in Helm v3 and to be consistent with the Helm project itself regarding the Helm v2 EOL.\n\n**What changes were introduced in this major version?**\n\n- Previous versions of this Helm Chart use `apiVersion: v1` (installable by both Helm 2 and 3), this Helm Chart was updated to `apiVersion: v2` (installable by Helm 3 only). [Here](https://helm.sh/docs/topics/charts/#the-apiversion-field) you can find more information about the `apiVersion` field.\n- Use `type: library`. [Here](https://v3.helm.sh/docs/faq/#library-chart-support) you can find more information.\n- The different fields present in the *Chart.yaml* file has been ordered alphabetically in a homogeneous way for all the Bitnami Helm Charts\n\n**Considerations when upgrading to this version**\n\n- If you want to upgrade to this version from a previous one installed with Helm v3, you shouldn't face any issues\n- If you want to upgrade to this version using Helm v2, this scenario is not supported as this version doesn't support Helm v2 anymore\n- If you installed the previous version with Helm v2 and wants to upgrade to this version with Helm v3, please refer to the [official Helm documentation](https://helm.sh/docs/topics/v2_v3_migration/#migration-use-cases) about migrating from Helm v2 to v3\n\n**Useful links**\n\n- https://docs.bitnami.com/tutorials/resolve-helm2-helm3-post-migration-issues/\n- https://helm.sh/docs/topics/v2_v3_migration/\n- https://helm.sh/blog/migrate-from-helm-v2-to-helm-v3/\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/common/templates/_affinities.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n\n{{/*\nReturn a soft nodeAffinity definition \n{{ include \"common.affinities.nodes.soft\" (dict \"key\" \"FOO\" \"values\" (list \"BAR\" \"BAZ\")) -}}\n*/}}\n{{- define \"common.affinities.nodes.soft\" -}}\npreferredDuringSchedulingIgnoredDuringExecution:\n  - preference:\n      matchExpressions:\n        - key: {{ .key }}\n          operator: In\n          values:\n            {{- range .values }}\n            - {{ . | quote }}\n            {{- end }}\n    weight: 1\n{{- end -}}\n\n{{/*\nReturn a hard nodeAffinity definition\n{{ include \"common.affinities.nodes.hard\" (dict \"key\" \"FOO\" \"values\" (list \"BAR\" \"BAZ\")) -}}\n*/}}\n{{- define \"common.affinities.nodes.hard\" -}}\nrequiredDuringSchedulingIgnoredDuringExecution:\n  nodeSelectorTerms:\n    - matchExpressions:\n        - key: {{ .key }}\n          operator: In\n          values:\n            {{- range .values }}\n            - {{ . | quote }}\n            {{- end }}\n{{- end -}}\n\n{{/*\nReturn a nodeAffinity definition\n{{ include \"common.affinities.nodes\" (dict \"type\" \"soft\" \"key\" \"FOO\" \"values\" (list \"BAR\" \"BAZ\")) -}}\n*/}}\n{{- define \"common.affinities.nodes\" -}}\n  {{- if eq .type \"soft\" }}\n    {{- include \"common.affinities.nodes.soft\" . -}}\n  {{- else if eq .type \"hard\" }}\n    {{- include \"common.affinities.nodes.hard\" . -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nReturn a soft podAffinity/podAntiAffinity definition\n{{ include \"common.affinities.pods.soft\" (dict \"component\" \"FOO\" \"extraMatchLabels\" .Values.extraMatchLabels \"context\" $) -}}\n*/}}\n{{- define \"common.affinities.pods.soft\" -}}\n{{- $component := default \"\" .component -}}\n{{- $extraMatchLabels := default (dict) .extraMatchLabels -}}\npreferredDuringSchedulingIgnoredDuringExecution:\n  - podAffinityTerm:\n      labelSelector:\n        matchLabels: {{- (include \"common.labels.matchLabels\" .context) | nindent 10 }}\n          {{- if not (empty $component) }}\n          {{ printf \"app.kubernetes.io/component: %s\" $component }}\n          {{- end }}\n          {{- range $key, $value := $extraMatchLabels }}\n          {{ $key }}: {{ $value | quote }}\n          {{- end }}\n      namespaces:\n        - {{ .context.Release.Namespace | quote }}\n      topologyKey: kubernetes.io/hostname\n    weight: 1\n{{- end -}}\n\n{{/*\nReturn a hard podAffinity/podAntiAffinity definition\n{{ include \"common.affinities.pods.hard\" (dict \"component\" \"FOO\" \"extraMatchLabels\" .Values.extraMatchLabels \"context\" $) -}}\n*/}}\n{{- define \"common.affinities.pods.hard\" -}}\n{{- $component := default \"\" .component -}}\n{{- $extraMatchLabels := default (dict) .extraMatchLabels -}}\nrequiredDuringSchedulingIgnoredDuringExecution:\n  - labelSelector:\n      matchLabels: {{- (include \"common.labels.matchLabels\" .context) | nindent 8 }}\n        {{- if not (empty $component) }}\n        {{ printf \"app.kubernetes.io/component: %s\" $component }}\n        {{- end }}\n        {{- range $key, $value := $extraMatchLabels }}\n        {{ $key }}: {{ $value | quote }}\n        {{- end }}\n    namespaces:\n      - {{ .context.Release.Namespace | quote }}\n    topologyKey: kubernetes.io/hostname\n{{- end -}}\n\n{{/*\nReturn a podAffinity/podAntiAffinity definition\n{{ include \"common.affinities.pods\" (dict \"type\" \"soft\" \"key\" \"FOO\" \"values\" (list \"BAR\" \"BAZ\")) -}}\n*/}}\n{{- define \"common.affinities.pods\" -}}\n  {{- if eq .type \"soft\" }}\n    {{- include \"common.affinities.pods.soft\" . -}}\n  {{- else if eq .type \"hard\" }}\n    {{- include \"common.affinities.pods.hard\" . -}}\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/common/templates/_capabilities.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n\n{{/*\nReturn the target Kubernetes version\n*/}}\n{{- define \"common.capabilities.kubeVersion\" -}}\n{{- if .Values.global }}\n    {{- if .Values.global.kubeVersion }}\n    {{- .Values.global.kubeVersion -}}\n    {{- else }}\n    {{- default .Capabilities.KubeVersion.Version .Values.kubeVersion -}}\n    {{- end -}}\n{{- else }}\n{{- default .Capabilities.KubeVersion.Version .Values.kubeVersion -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for policy.\n*/}}\n{{- define \"common.capabilities.policy.apiVersion\" -}}\n{{- if semverCompare \"<1.21-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"policy/v1beta1\" -}}\n{{- else -}}\n{{- print \"policy/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for cronjob.\n*/}}\n{{- define \"common.capabilities.cronjob.apiVersion\" -}}\n{{- if semverCompare \"<1.21-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"batch/v1beta1\" -}}\n{{- else -}}\n{{- print \"batch/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for deployment.\n*/}}\n{{- define \"common.capabilities.deployment.apiVersion\" -}}\n{{- if semverCompare \"<1.14-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"extensions/v1beta1\" -}}\n{{- else -}}\n{{- print \"apps/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for statefulset.\n*/}}\n{{- define \"common.capabilities.statefulset.apiVersion\" -}}\n{{- if semverCompare \"<1.14-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"apps/v1beta1\" -}}\n{{- else -}}\n{{- print \"apps/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for ingress.\n*/}}\n{{- define \"common.capabilities.ingress.apiVersion\" -}}\n{{- if .Values.ingress -}}\n{{- if .Values.ingress.apiVersion -}}\n{{- .Values.ingress.apiVersion -}}\n{{- else if semverCompare \"<1.14-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"extensions/v1beta1\" -}}\n{{- else if semverCompare \"<1.19-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"networking.k8s.io/v1beta1\" -}}\n{{- else -}}\n{{- print \"networking.k8s.io/v1\" -}}\n{{- end }}\n{{- else if semverCompare \"<1.14-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"extensions/v1beta1\" -}}\n{{- else if semverCompare \"<1.19-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"networking.k8s.io/v1beta1\" -}}\n{{- else -}}\n{{- print \"networking.k8s.io/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for RBAC resources.\n*/}}\n{{- define \"common.capabilities.rbac.apiVersion\" -}}\n{{- if semverCompare \"<1.17-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"rbac.authorization.k8s.io/v1beta1\" -}}\n{{- else -}}\n{{- print \"rbac.authorization.k8s.io/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for CRDs.\n*/}}\n{{- define \"common.capabilities.crd.apiVersion\" -}}\n{{- if semverCompare \"<1.19-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"apiextensions.k8s.io/v1beta1\" -}}\n{{- else -}}\n{{- print \"apiextensions.k8s.io/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturns true if the used Helm version is 3.3+.\nA way to check the used Helm version was not introduced until version 3.3.0 with .Capabilities.HelmVersion, which contains an additional \"{}}\"  structure.\nThis check is introduced as a regexMatch instead of {{ if .Capabilities.HelmVersion }} because checking for the key HelmVersion in <3.3 results in a \"interface not found\" error.\n**To be removed when the catalog's minimun Helm version is 3.3**\n*/}}\n{{- define \"common.capabilities.supportsHelmVersion\" -}}\n{{- if regexMatch \"{(v[0-9])*[^}]*}}$\" (.Capabilities | toString ) }}\n  {{- true -}}\n{{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/common/templates/_errors.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nThrough error when upgrading using empty passwords values that must not be empty.\n\nUsage:\n{{- $validationError00 := include \"common.validations.values.single.empty\" (dict \"valueKey\" \"path.to.password00\" \"secret\" \"secretName\" \"field\" \"password-00\") -}}\n{{- $validationError01 := include \"common.validations.values.single.empty\" (dict \"valueKey\" \"path.to.password01\" \"secret\" \"secretName\" \"field\" \"password-01\") -}}\n{{ include \"common.errors.upgrade.passwords.empty\" (dict \"validationErrors\" (list $validationError00 $validationError01) \"context\" $) }}\n\nRequired password params:\n  - validationErrors - String - Required. List of validation strings to be return, if it is empty it won't throw error.\n  - context - Context - Required. Parent context.\n*/}}\n{{- define \"common.errors.upgrade.passwords.empty\" -}}\n  {{- $validationErrors := join \"\" .validationErrors -}}\n  {{- if and $validationErrors .context.Release.IsUpgrade -}}\n    {{- $errorString := \"\\nPASSWORDS ERROR: You must provide your current passwords when upgrading the release.\" -}}\n    {{- $errorString = print $errorString \"\\n                 Note that even after reinstallation, old credentials may be needed as they may be kept in persistent volume claims.\" -}}\n    {{- $errorString = print $errorString \"\\n                 Further information can be obtained at https://docs.bitnami.com/general/how-to/troubleshoot-helm-chart-issues/#credential-errors-while-upgrading-chart-releases\" -}}\n    {{- $errorString = print $errorString \"\\n%s\" -}}\n    {{- printf $errorString $validationErrors | fail -}}\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/common/templates/_images.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nReturn the proper image name\n{{ include \"common.images.image\" ( dict \"imageRoot\" .Values.path.to.the.image \"global\" $) }}\n*/}}\n{{- define \"common.images.image\" -}}\n{{- $registryName := .imageRoot.registry -}}\n{{- $repositoryName := .imageRoot.repository -}}\n{{- $tag := .imageRoot.tag | toString -}}\n{{- if .global }}\n    {{- if .global.imageRegistry }}\n     {{- $registryName = .global.imageRegistry -}}\n    {{- end -}}\n{{- end -}}\n{{- if $registryName }}\n{{- printf \"%s/%s:%s\" $registryName $repositoryName $tag -}}\n{{- else -}}\n{{- printf \"%s:%s\" $repositoryName $tag -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the proper Docker Image Registry Secret Names (deprecated: use common.images.renderPullSecrets instead)\n{{ include \"common.images.pullSecrets\" ( dict \"images\" (list .Values.path.to.the.image1, .Values.path.to.the.image2) \"global\" .Values.global) }}\n*/}}\n{{- define \"common.images.pullSecrets\" -}}\n  {{- $pullSecrets := list }}\n\n  {{- if .global }}\n    {{- range .global.imagePullSecrets -}}\n      {{- $pullSecrets = append $pullSecrets . -}}\n    {{- end -}}\n  {{- end -}}\n\n  {{- range .images -}}\n    {{- range .pullSecrets -}}\n      {{- $pullSecrets = append $pullSecrets . -}}\n    {{- end -}}\n  {{- end -}}\n\n  {{- if (not (empty $pullSecrets)) }}\nimagePullSecrets:\n    {{- range $pullSecrets }}\n  - name: {{ . }}\n    {{- end }}\n  {{- end }}\n{{- end -}}\n\n{{/*\nReturn the proper Docker Image Registry Secret Names evaluating values as templates\n{{ include \"common.images.renderPullSecrets\" ( dict \"images\" (list .Values.path.to.the.image1, .Values.path.to.the.image2) \"context\" $) }}\n*/}}\n{{- define \"common.images.renderPullSecrets\" -}}\n  {{- $pullSecrets := list }}\n  {{- $context := .context }}\n\n  {{- if $context.Values.global }}\n    {{- range $context.Values.global.imagePullSecrets -}}\n      {{- $pullSecrets = append $pullSecrets (include \"common.tplvalues.render\" (dict \"value\" . \"context\" $context)) -}}\n    {{- end -}}\n  {{- end -}}\n\n  {{- range .images -}}\n    {{- range .pullSecrets -}}\n      {{- $pullSecrets = append $pullSecrets (include \"common.tplvalues.render\" (dict \"value\" . \"context\" $context)) -}}\n    {{- end -}}\n  {{- end -}}\n\n  {{- if (not (empty $pullSecrets)) }}\nimagePullSecrets:\n    {{- range $pullSecrets }}\n  - name: {{ . }}\n    {{- end }}\n  {{- end }}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/common/templates/_ingress.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n\n{{/*\nGenerate backend entry that is compatible with all Kubernetes API versions.\n\nUsage:\n{{ include \"common.ingress.backend\" (dict \"serviceName\" \"backendName\" \"servicePort\" \"backendPort\" \"context\" $) }}\n\nParams:\n  - serviceName - String. Name of an existing service backend\n  - servicePort - String/Int. Port name (or number) of the service. It will be translated to different yaml depending if it is a string or an integer.\n  - context - Dict - Required. The context for the template evaluation.\n*/}}\n{{- define \"common.ingress.backend\" -}}\n{{- $apiVersion := (include \"common.capabilities.ingress.apiVersion\" .context) -}}\n{{- if or (eq $apiVersion \"extensions/v1beta1\") (eq $apiVersion \"networking.k8s.io/v1beta1\") -}}\nserviceName: {{ .serviceName }}\nservicePort: {{ .servicePort }}\n{{- else -}}\nservice:\n  name: {{ .serviceName }}\n  port:\n    {{- if typeIs \"string\" .servicePort }}\n    name: {{ .servicePort }}\n    {{- else if or (typeIs \"int\" .servicePort) (typeIs \"float64\" .servicePort) }}\n    number: {{ .servicePort | int }}\n    {{- end }}\n{{- end -}}\n{{- end -}}\n\n{{/*\nPrint \"true\" if the API pathType field is supported\nUsage:\n{{ include \"common.ingress.supportsPathType\" . }}\n*/}}\n{{- define \"common.ingress.supportsPathType\" -}}\n{{- if (semverCompare \"<1.18-0\" (include \"common.capabilities.kubeVersion\" .)) -}}\n{{- print \"false\" -}}\n{{- else -}}\n{{- print \"true\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturns true if the ingressClassname field is supported\nUsage:\n{{ include \"common.ingress.supportsIngressClassname\" . }}\n*/}}\n{{- define \"common.ingress.supportsIngressClassname\" -}}\n{{- if semverCompare \"<1.18-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"false\" -}}\n{{- else -}}\n{{- print \"true\" -}}\n{{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/common/templates/_labels.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nKubernetes standard labels\n*/}}\n{{- define \"common.labels.standard\" -}}\napp.kubernetes.io/name: {{ include \"common.names.name\" . }}\nhelm.sh/chart: {{ include \"common.names.chart\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\n{{- end -}}\n\n{{/*\nLabels to use on deploy.spec.selector.matchLabels and svc.spec.selector\n*/}}\n{{- define \"common.labels.matchLabels\" -}}\napp.kubernetes.io/name: {{ include \"common.names.name\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/common/templates/_names.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"common.names.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"common.names.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"common.names.fullname\" -}}\n{{- if .Values.fullnameOverride -}}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" -}}\n{{- else -}}\n{{- $name := default .Chart.Name .Values.nameOverride -}}\n{{- if contains $name .Release.Name -}}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" -}}\n{{- else -}}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n{{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/common/templates/_secrets.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nGenerate secret name.\n\nUsage:\n{{ include \"common.secrets.name\" (dict \"existingSecret\" .Values.path.to.the.existingSecret \"defaultNameSuffix\" \"mySuffix\" \"context\" $) }}\n\nParams:\n  - existingSecret - ExistingSecret/String - Optional. The path to the existing secrets in the values.yaml given by the user\n    to be used instead of the default one. Allows for it to be of type String (just the secret name) for backwards compatibility.\n    +info: https://github.com/bitnami/charts/tree/master/bitnami/common#existingsecret\n  - defaultNameSuffix - String - Optional. It is used only if we have several secrets in the same deployment.\n  - context - Dict - Required. The context for the template evaluation.\n*/}}\n{{- define \"common.secrets.name\" -}}\n{{- $name := (include \"common.names.fullname\" .context) -}}\n\n{{- if .defaultNameSuffix -}}\n{{- $name = printf \"%s-%s\" $name .defaultNameSuffix | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n\n{{- with .existingSecret -}}\n{{- if not (typeIs \"string\" .) -}}\n{{- with .name -}}\n{{- $name = . -}}\n{{- end -}}\n{{- else -}}\n{{- $name = . -}}\n{{- end -}}\n{{- end -}}\n\n{{- printf \"%s\" $name -}}\n{{- end -}}\n\n{{/*\nGenerate secret key.\n\nUsage:\n{{ include \"common.secrets.key\" (dict \"existingSecret\" .Values.path.to.the.existingSecret \"key\" \"keyName\") }}\n\nParams:\n  - existingSecret - ExistingSecret/String - Optional. The path to the existing secrets in the values.yaml given by the user\n    to be used instead of the default one. Allows for it to be of type String (just the secret name) for backwards compatibility.\n    +info: https://github.com/bitnami/charts/tree/master/bitnami/common#existingsecret\n  - key - String - Required. Name of the key in the secret.\n*/}}\n{{- define \"common.secrets.key\" -}}\n{{- $key := .key -}}\n\n{{- if .existingSecret -}}\n  {{- if not (typeIs \"string\" .existingSecret) -}}\n    {{- if .existingSecret.keyMapping -}}\n      {{- $key = index .existingSecret.keyMapping $.key -}}\n    {{- end -}}\n  {{- end }}\n{{- end -}}\n\n{{- printf \"%s\" $key -}}\n{{- end -}}\n\n{{/*\nGenerate secret password or retrieve one if already created.\n\nUsage:\n{{ include \"common.secrets.passwords.manage\" (dict \"secret\" \"secret-name\" \"key\" \"keyName\" \"providedValues\" (list \"path.to.password1\" \"path.to.password2\") \"length\" 10 \"strong\" false \"chartName\" \"chartName\" \"context\" $) }}\n\nParams:\n  - secret - String - Required - Name of the 'Secret' resource where the password is stored.\n  - key - String - Required - Name of the key in the secret.\n  - providedValues - List<String> - Required - The path to the validating value in the values.yaml, e.g: \"mysql.password\". Will pick first parameter with a defined value.\n  - length - int - Optional - Length of the generated random password.\n  - strong - Boolean - Optional - Whether to add symbols to the generated random password.\n  - chartName - String - Optional - Name of the chart used when said chart is deployed as a subchart.\n  - context - Context - Required - Parent context.\n*/}}\n{{- define \"common.secrets.passwords.manage\" -}}\n\n{{- $password := \"\" }}\n{{- $subchart := \"\" }}\n{{- $chartName := default \"\" .chartName }}\n{{- $passwordLength := default 10 .length }}\n{{- $providedPasswordKey := include \"common.utils.getKeyFromList\" (dict \"keys\" .providedValues \"context\" $.context) }}\n{{- $providedPasswordValue := include \"common.utils.getValueFromKey\" (dict \"key\" $providedPasswordKey \"context\" $.context) }}\n{{- $secret := (lookup \"v1\" \"Secret\" $.context.Release.Namespace .secret) }}\n{{- if $secret }}\n  {{- if index $secret.data .key }}\n  {{- $password = index $secret.data .key }}\n  {{- end -}}\n{{- else if $providedPasswordValue }}\n  {{- $password = $providedPasswordValue | toString | b64enc | quote }}\n{{- else }}\n\n  {{- if .context.Values.enabled }}\n    {{- $subchart = $chartName }}\n  {{- end -}}\n\n  {{- $requiredPassword := dict \"valueKey\" $providedPasswordKey \"secret\" .secret \"field\" .key \"subchart\" $subchart \"context\" $.context -}}\n  {{- $requiredPasswordError := include \"common.validations.values.single.empty\" $requiredPassword -}}\n  {{- $passwordValidationErrors := list $requiredPasswordError -}}\n  {{- include \"common.errors.upgrade.passwords.empty\" (dict \"validationErrors\" $passwordValidationErrors \"context\" $.context) -}}\n  \n  {{- if .strong }}\n    {{- $subStr := list (lower (randAlpha 1)) (randNumeric 1) (upper (randAlpha 1)) | join \"_\" }}\n    {{- $password = randAscii $passwordLength }}\n    {{- $password = regexReplaceAllLiteral \"\\\\W\" $password \"@\" | substr 5 $passwordLength }}\n    {{- $password = printf \"%s%s\" $subStr $password | toString | shuffle | b64enc | quote }}\n  {{- else }}\n    {{- $password = randAlphaNum $passwordLength | b64enc | quote }}\n  {{- end }}\n{{- end -}}\n{{- printf \"%s\" $password -}}\n{{- end -}}\n\n{{/*\nReturns whether a previous generated secret already exists\n\nUsage:\n{{ include \"common.secrets.exists\" (dict \"secret\" \"secret-name\" \"context\" $) }}\n\nParams:\n  - secret - String - Required - Name of the 'Secret' resource where the password is stored.\n  - context - Context - Required - Parent context.\n*/}}\n{{- define \"common.secrets.exists\" -}}\n{{- $secret := (lookup \"v1\" \"Secret\" $.context.Release.Namespace .secret) }}\n{{- if $secret }}\n  {{- true -}}\n{{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/common/templates/_storage.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nReturn  the proper Storage Class\n{{ include \"common.storage.class\" ( dict \"persistence\" .Values.path.to.the.persistence \"global\" $) }}\n*/}}\n{{- define \"common.storage.class\" -}}\n\n{{- $storageClass := .persistence.storageClass -}}\n{{- if .global -}}\n    {{- if .global.storageClass -}}\n        {{- $storageClass = .global.storageClass -}}\n    {{- end -}}\n{{- end -}}\n\n{{- if $storageClass -}}\n  {{- if (eq \"-\" $storageClass) -}}\n      {{- printf \"storageClassName: \\\"\\\"\" -}}\n  {{- else }}\n      {{- printf \"storageClassName: %s\" $storageClass -}}\n  {{- end -}}\n{{- end -}}\n\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/common/templates/_tplvalues.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nRenders a value that contains template.\nUsage:\n{{ include \"common.tplvalues.render\" ( dict \"value\" .Values.path.to.the.Value \"context\" $) }}\n*/}}\n{{- define \"common.tplvalues.render\" -}}\n    {{- if typeIs \"string\" .value }}\n        {{- tpl .value .context }}\n    {{- else }}\n        {{- tpl (.value | toYaml) .context }}\n    {{- end }}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/common/templates/_utils.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nPrint instructions to get a secret value.\nUsage:\n{{ include \"common.utils.secret.getvalue\" (dict \"secret\" \"secret-name\" \"field\" \"secret-value-field\" \"context\" $) }}\n*/}}\n{{- define \"common.utils.secret.getvalue\" -}}\n{{- $varname := include \"common.utils.fieldToEnvVar\" . -}}\nexport {{ $varname }}=$(kubectl get secret --namespace {{ .context.Release.Namespace | quote }} {{ .secret }} -o jsonpath=\"{.data.{{ .field }}}\" | base64 --decode)\n{{- end -}}\n\n{{/*\nBuild env var name given a field\nUsage:\n{{ include \"common.utils.fieldToEnvVar\" dict \"field\" \"my-password\" }}\n*/}}\n{{- define \"common.utils.fieldToEnvVar\" -}}\n  {{- $fieldNameSplit := splitList \"-\" .field -}}\n  {{- $upperCaseFieldNameSplit := list -}}\n\n  {{- range $fieldNameSplit -}}\n    {{- $upperCaseFieldNameSplit = append $upperCaseFieldNameSplit ( upper . ) -}}\n  {{- end -}}\n\n  {{ join \"_\" $upperCaseFieldNameSplit }}\n{{- end -}}\n\n{{/*\nGets a value from .Values given\nUsage:\n{{ include \"common.utils.getValueFromKey\" (dict \"key\" \"path.to.key\" \"context\" $) }}\n*/}}\n{{- define \"common.utils.getValueFromKey\" -}}\n{{- $splitKey := splitList \".\" .key -}}\n{{- $value := \"\" -}}\n{{- $latestObj := $.context.Values -}}\n{{- range $splitKey -}}\n  {{- if not $latestObj -}}\n    {{- printf \"please review the entire path of '%s' exists in values\" $.key | fail -}}\n  {{- end -}}\n  {{- $value = ( index $latestObj . ) -}}\n  {{- $latestObj = $value -}}\n{{- end -}}\n{{- printf \"%v\" (default \"\" $value) -}} \n{{- end -}}\n\n{{/*\nReturns first .Values key with a defined value or first of the list if all non-defined\nUsage:\n{{ include \"common.utils.getKeyFromList\" (dict \"keys\" (list \"path.to.key1\" \"path.to.key2\") \"context\" $) }}\n*/}}\n{{- define \"common.utils.getKeyFromList\" -}}\n{{- $key := first .keys -}}\n{{- $reverseKeys := reverse .keys }}\n{{- range $reverseKeys }}\n  {{- $value := include \"common.utils.getValueFromKey\" (dict \"key\" . \"context\" $.context ) }}\n  {{- if $value -}}\n    {{- $key = . }}\n  {{- end -}}\n{{- end -}}\n{{- printf \"%s\" $key -}} \n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/common/templates/_warnings.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nWarning about using rolling tag.\nUsage:\n{{ include \"common.warnings.rollingTag\" .Values.path.to.the.imageRoot }}\n*/}}\n{{- define \"common.warnings.rollingTag\" -}}\n\n{{- if and (contains \"bitnami/\" .repository) (not (.tag | toString | regexFind \"-r\\\\d+$|sha256:\")) }}\nWARNING: Rolling tag detected ({{ .repository }}:{{ .tag }}), please note that it is strongly recommended to avoid using rolling tags in a production environment.\n+info https://docs.bitnami.com/containers/how-to/understand-rolling-tags-containers/\n{{- end }}\n\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/common/templates/validations/_cassandra.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nValidate Cassandra required passwords are not empty.\n\nUsage:\n{{ include \"common.validations.values.cassandra.passwords\" (dict \"secret\" \"secretName\" \"subchart\" false \"context\" $) }}\nParams:\n  - secret - String - Required. Name of the secret where Cassandra values are stored, e.g: \"cassandra-passwords-secret\"\n  - subchart - Boolean - Optional. Whether Cassandra is used as subchart or not. Default: false\n*/}}\n{{- define \"common.validations.values.cassandra.passwords\" -}}\n  {{- $existingSecret := include \"common.cassandra.values.existingSecret\" . -}}\n  {{- $enabled := include \"common.cassandra.values.enabled\" . -}}\n  {{- $dbUserPrefix := include \"common.cassandra.values.key.dbUser\" . -}}\n  {{- $valueKeyPassword := printf \"%s.password\" $dbUserPrefix -}}\n\n  {{- if and (not $existingSecret) (eq $enabled \"true\") -}}\n    {{- $requiredPasswords := list -}}\n\n    {{- $requiredPassword := dict \"valueKey\" $valueKeyPassword \"secret\" .secret \"field\" \"cassandra-password\" -}}\n    {{- $requiredPasswords = append $requiredPasswords $requiredPassword -}}\n\n    {{- include \"common.validations.values.multiple.empty\" (dict \"required\" $requiredPasswords \"context\" .context) -}}\n\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for existingSecret.\n\nUsage:\n{{ include \"common.cassandra.values.existingSecret\" (dict \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether Cassandra is used as subchart or not. Default: false\n*/}}\n{{- define \"common.cassandra.values.existingSecret\" -}}\n  {{- if .subchart -}}\n    {{- .context.Values.cassandra.dbUser.existingSecret | quote -}}\n  {{- else -}}\n    {{- .context.Values.dbUser.existingSecret | quote -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for enabled cassandra.\n\nUsage:\n{{ include \"common.cassandra.values.enabled\" (dict \"context\" $) }}\n*/}}\n{{- define \"common.cassandra.values.enabled\" -}}\n  {{- if .subchart -}}\n    {{- printf \"%v\" .context.Values.cassandra.enabled -}}\n  {{- else -}}\n    {{- printf \"%v\" (not .context.Values.enabled) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for the key dbUser\n\nUsage:\n{{ include \"common.cassandra.values.key.dbUser\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether Cassandra is used as subchart or not. Default: false\n*/}}\n{{- define \"common.cassandra.values.key.dbUser\" -}}\n  {{- if .subchart -}}\n    cassandra.dbUser\n  {{- else -}}\n    dbUser\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/common/templates/validations/_mariadb.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nValidate MariaDB required passwords are not empty.\n\nUsage:\n{{ include \"common.validations.values.mariadb.passwords\" (dict \"secret\" \"secretName\" \"subchart\" false \"context\" $) }}\nParams:\n  - secret - String - Required. Name of the secret where MariaDB values are stored, e.g: \"mysql-passwords-secret\"\n  - subchart - Boolean - Optional. Whether MariaDB is used as subchart or not. Default: false\n*/}}\n{{- define \"common.validations.values.mariadb.passwords\" -}}\n  {{- $existingSecret := include \"common.mariadb.values.auth.existingSecret\" . -}}\n  {{- $enabled := include \"common.mariadb.values.enabled\" . -}}\n  {{- $architecture := include \"common.mariadb.values.architecture\" . -}}\n  {{- $authPrefix := include \"common.mariadb.values.key.auth\" . -}}\n  {{- $valueKeyRootPassword := printf \"%s.rootPassword\" $authPrefix -}}\n  {{- $valueKeyUsername := printf \"%s.username\" $authPrefix -}}\n  {{- $valueKeyPassword := printf \"%s.password\" $authPrefix -}}\n  {{- $valueKeyReplicationPassword := printf \"%s.replicationPassword\" $authPrefix -}}\n\n  {{- if and (not $existingSecret) (eq $enabled \"true\") -}}\n    {{- $requiredPasswords := list -}}\n\n    {{- $requiredRootPassword := dict \"valueKey\" $valueKeyRootPassword \"secret\" .secret \"field\" \"mariadb-root-password\" -}}\n    {{- $requiredPasswords = append $requiredPasswords $requiredRootPassword -}}\n\n    {{- $valueUsername := include \"common.utils.getValueFromKey\" (dict \"key\" $valueKeyUsername \"context\" .context) }}\n    {{- if not (empty $valueUsername) -}}\n        {{- $requiredPassword := dict \"valueKey\" $valueKeyPassword \"secret\" .secret \"field\" \"mariadb-password\" -}}\n        {{- $requiredPasswords = append $requiredPasswords $requiredPassword -}}\n    {{- end -}}\n\n    {{- if (eq $architecture \"replication\") -}}\n        {{- $requiredReplicationPassword := dict \"valueKey\" $valueKeyReplicationPassword \"secret\" .secret \"field\" \"mariadb-replication-password\" -}}\n        {{- $requiredPasswords = append $requiredPasswords $requiredReplicationPassword -}}\n    {{- end -}}\n\n    {{- include \"common.validations.values.multiple.empty\" (dict \"required\" $requiredPasswords \"context\" .context) -}}\n\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for existingSecret.\n\nUsage:\n{{ include \"common.mariadb.values.auth.existingSecret\" (dict \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MariaDB is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mariadb.values.auth.existingSecret\" -}}\n  {{- if .subchart -}}\n    {{- .context.Values.mariadb.auth.existingSecret | quote -}}\n  {{- else -}}\n    {{- .context.Values.auth.existingSecret | quote -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for enabled mariadb.\n\nUsage:\n{{ include \"common.mariadb.values.enabled\" (dict \"context\" $) }}\n*/}}\n{{- define \"common.mariadb.values.enabled\" -}}\n  {{- if .subchart -}}\n    {{- printf \"%v\" .context.Values.mariadb.enabled -}}\n  {{- else -}}\n    {{- printf \"%v\" (not .context.Values.enabled) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for architecture\n\nUsage:\n{{ include \"common.mariadb.values.architecture\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MariaDB is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mariadb.values.architecture\" -}}\n  {{- if .subchart -}}\n    {{- .context.Values.mariadb.architecture -}}\n  {{- else -}}\n    {{- .context.Values.architecture -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for the key auth\n\nUsage:\n{{ include \"common.mariadb.values.key.auth\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MariaDB is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mariadb.values.key.auth\" -}}\n  {{- if .subchart -}}\n    mariadb.auth\n  {{- else -}}\n    auth\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/common/templates/validations/_mongodb.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nValidate MongoDB&reg; required passwords are not empty.\n\nUsage:\n{{ include \"common.validations.values.mongodb.passwords\" (dict \"secret\" \"secretName\" \"subchart\" false \"context\" $) }}\nParams:\n  - secret - String - Required. Name of the secret where MongoDB&reg; values are stored, e.g: \"mongodb-passwords-secret\"\n  - subchart - Boolean - Optional. Whether MongoDB&reg; is used as subchart or not. Default: false\n*/}}\n{{- define \"common.validations.values.mongodb.passwords\" -}}\n  {{- $existingSecret := include \"common.mongodb.values.auth.existingSecret\" . -}}\n  {{- $enabled := include \"common.mongodb.values.enabled\" . -}}\n  {{- $authPrefix := include \"common.mongodb.values.key.auth\" . -}}\n  {{- $architecture := include \"common.mongodb.values.architecture\" . -}}\n  {{- $valueKeyRootPassword := printf \"%s.rootPassword\" $authPrefix -}}\n  {{- $valueKeyUsername := printf \"%s.username\" $authPrefix -}}\n  {{- $valueKeyDatabase := printf \"%s.database\" $authPrefix -}}\n  {{- $valueKeyPassword := printf \"%s.password\" $authPrefix -}}\n  {{- $valueKeyReplicaSetKey := printf \"%s.replicaSetKey\" $authPrefix -}}\n  {{- $valueKeyAuthEnabled := printf \"%s.enabled\" $authPrefix -}}\n\n  {{- $authEnabled := include \"common.utils.getValueFromKey\" (dict \"key\" $valueKeyAuthEnabled \"context\" .context) -}}\n\n  {{- if and (not $existingSecret) (eq $enabled \"true\") (eq $authEnabled \"true\") -}}\n    {{- $requiredPasswords := list -}}\n\n    {{- $requiredRootPassword := dict \"valueKey\" $valueKeyRootPassword \"secret\" .secret \"field\" \"mongodb-root-password\" -}}\n    {{- $requiredPasswords = append $requiredPasswords $requiredRootPassword -}}\n\n    {{- $valueUsername := include \"common.utils.getValueFromKey\" (dict \"key\" $valueKeyUsername \"context\" .context) }}\n    {{- $valueDatabase := include \"common.utils.getValueFromKey\" (dict \"key\" $valueKeyDatabase \"context\" .context) }}\n    {{- if and $valueUsername $valueDatabase -}}\n        {{- $requiredPassword := dict \"valueKey\" $valueKeyPassword \"secret\" .secret \"field\" \"mongodb-password\" -}}\n        {{- $requiredPasswords = append $requiredPasswords $requiredPassword -}}\n    {{- end -}}\n\n    {{- if (eq $architecture \"replicaset\") -}}\n        {{- $requiredReplicaSetKey := dict \"valueKey\" $valueKeyReplicaSetKey \"secret\" .secret \"field\" \"mongodb-replica-set-key\" -}}\n        {{- $requiredPasswords = append $requiredPasswords $requiredReplicaSetKey -}}\n    {{- end -}}\n\n    {{- include \"common.validations.values.multiple.empty\" (dict \"required\" $requiredPasswords \"context\" .context) -}}\n\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for existingSecret.\n\nUsage:\n{{ include \"common.mongodb.values.auth.existingSecret\" (dict \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MongoDb is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mongodb.values.auth.existingSecret\" -}}\n  {{- if .subchart -}}\n    {{- .context.Values.mongodb.auth.existingSecret | quote -}}\n  {{- else -}}\n    {{- .context.Values.auth.existingSecret | quote -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for enabled mongodb.\n\nUsage:\n{{ include \"common.mongodb.values.enabled\" (dict \"context\" $) }}\n*/}}\n{{- define \"common.mongodb.values.enabled\" -}}\n  {{- if .subchart -}}\n    {{- printf \"%v\" .context.Values.mongodb.enabled -}}\n  {{- else -}}\n    {{- printf \"%v\" (not .context.Values.enabled) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for the key auth\n\nUsage:\n{{ include \"common.mongodb.values.key.auth\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MongoDB&reg; is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mongodb.values.key.auth\" -}}\n  {{- if .subchart -}}\n    mongodb.auth\n  {{- else -}}\n    auth\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for architecture\n\nUsage:\n{{ include \"common.mongodb.values.architecture\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MariaDB is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mongodb.values.architecture\" -}}\n  {{- if .subchart -}}\n    {{- .context.Values.mongodb.architecture -}}\n  {{- else -}}\n    {{- .context.Values.architecture -}}\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/common/templates/validations/_postgresql.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nValidate PostgreSQL required passwords are not empty.\n\nUsage:\n{{ include \"common.validations.values.postgresql.passwords\" (dict \"secret\" \"secretName\" \"subchart\" false \"context\" $) }}\nParams:\n  - secret - String - Required. Name of the secret where postgresql values are stored, e.g: \"postgresql-passwords-secret\"\n  - subchart - Boolean - Optional. Whether postgresql is used as subchart or not. Default: false\n*/}}\n{{- define \"common.validations.values.postgresql.passwords\" -}}\n  {{- $existingSecret := include \"common.postgresql.values.existingSecret\" . -}}\n  {{- $enabled := include \"common.postgresql.values.enabled\" . -}}\n  {{- $valueKeyPostgresqlPassword := include \"common.postgresql.values.key.postgressPassword\" . -}}\n  {{- $valueKeyPostgresqlReplicationEnabled := include \"common.postgresql.values.key.replicationPassword\" . -}}\n\n  {{- if and (not $existingSecret) (eq $enabled \"true\") -}}\n    {{- $requiredPasswords := list -}}\n\n    {{- $requiredPostgresqlPassword := dict \"valueKey\" $valueKeyPostgresqlPassword \"secret\" .secret \"field\" \"postgresql-password\" -}}\n    {{- $requiredPasswords = append $requiredPasswords $requiredPostgresqlPassword -}}\n\n    {{- $enabledReplication := include \"common.postgresql.values.enabled.replication\" . -}}\n    {{- if (eq $enabledReplication \"true\") -}}\n        {{- $requiredPostgresqlReplicationPassword := dict \"valueKey\" $valueKeyPostgresqlReplicationEnabled \"secret\" .secret \"field\" \"postgresql-replication-password\" -}}\n        {{- $requiredPasswords = append $requiredPasswords $requiredPostgresqlReplicationPassword -}}\n    {{- end -}}\n\n    {{- include \"common.validations.values.multiple.empty\" (dict \"required\" $requiredPasswords \"context\" .context) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to decide whether evaluate global values.\n\nUsage:\n{{ include \"common.postgresql.values.use.global\" (dict \"key\" \"key-of-global\" \"context\" $) }}\nParams:\n  - key - String - Required. Field to be evaluated within global, e.g: \"existingSecret\"\n*/}}\n{{- define \"common.postgresql.values.use.global\" -}}\n  {{- if .context.Values.global -}}\n    {{- if .context.Values.global.postgresql -}}\n      {{- index .context.Values.global.postgresql .key | quote -}}\n    {{- end -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for existingSecret.\n\nUsage:\n{{ include \"common.postgresql.values.existingSecret\" (dict \"context\" $) }}\n*/}}\n{{- define \"common.postgresql.values.existingSecret\" -}}\n  {{- $globalValue := include \"common.postgresql.values.use.global\" (dict \"key\" \"existingSecret\" \"context\" .context) -}}\n\n  {{- if .subchart -}}\n    {{- default (.context.Values.postgresql.existingSecret | quote) $globalValue -}}\n  {{- else -}}\n    {{- default (.context.Values.existingSecret | quote) $globalValue -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for enabled postgresql.\n\nUsage:\n{{ include \"common.postgresql.values.enabled\" (dict \"context\" $) }}\n*/}}\n{{- define \"common.postgresql.values.enabled\" -}}\n  {{- if .subchart -}}\n    {{- printf \"%v\" .context.Values.postgresql.enabled -}}\n  {{- else -}}\n    {{- printf \"%v\" (not .context.Values.enabled) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for the key postgressPassword.\n\nUsage:\n{{ include \"common.postgresql.values.key.postgressPassword\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether postgresql is used as subchart or not. Default: false\n*/}}\n{{- define \"common.postgresql.values.key.postgressPassword\" -}}\n  {{- $globalValue := include \"common.postgresql.values.use.global\" (dict \"key\" \"postgresqlUsername\" \"context\" .context) -}}\n\n  {{- if not $globalValue -}}\n    {{- if .subchart -}}\n      postgresql.postgresqlPassword\n    {{- else -}}\n      postgresqlPassword\n    {{- end -}}\n  {{- else -}}\n    global.postgresql.postgresqlPassword\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for enabled.replication.\n\nUsage:\n{{ include \"common.postgresql.values.enabled.replication\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether postgresql is used as subchart or not. Default: false\n*/}}\n{{- define \"common.postgresql.values.enabled.replication\" -}}\n  {{- if .subchart -}}\n    {{- printf \"%v\" .context.Values.postgresql.replication.enabled -}}\n  {{- else -}}\n    {{- printf \"%v\" .context.Values.replication.enabled -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for the key replication.password.\n\nUsage:\n{{ include \"common.postgresql.values.key.replicationPassword\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether postgresql is used as subchart or not. Default: false\n*/}}\n{{- define \"common.postgresql.values.key.replicationPassword\" -}}\n  {{- if .subchart -}}\n    postgresql.replication.password\n  {{- else -}}\n    replication.password\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/common/templates/validations/_redis.tpl",
    "content": "\n{{/* vim: set filetype=mustache: */}}\n{{/*\nValidate Redis&trade; required passwords are not empty.\n\nUsage:\n{{ include \"common.validations.values.redis.passwords\" (dict \"secret\" \"secretName\" \"subchart\" false \"context\" $) }}\nParams:\n  - secret - String - Required. Name of the secret where redis values are stored, e.g: \"redis-passwords-secret\"\n  - subchart - Boolean - Optional. Whether redis is used as subchart or not. Default: false\n*/}}\n{{- define \"common.validations.values.redis.passwords\" -}}\n  {{- $enabled := include \"common.redis.values.enabled\" . -}}\n  {{- $valueKeyPrefix := include \"common.redis.values.keys.prefix\" . -}}\n  {{- $standarizedVersion := include \"common.redis.values.standarized.version\" . }}\n\n  {{- $existingSecret := ternary (printf \"%s%s\" $valueKeyPrefix \"auth.existingSecret\") (printf \"%s%s\" $valueKeyPrefix \"existingSecret\") (eq $standarizedVersion \"true\") }}\n  {{- $existingSecretValue := include \"common.utils.getValueFromKey\" (dict \"key\" $existingSecret \"context\" .context) }}\n\n  {{- $valueKeyRedisPassword := ternary (printf \"%s%s\" $valueKeyPrefix \"auth.password\") (printf \"%s%s\" $valueKeyPrefix \"password\") (eq $standarizedVersion \"true\") }}\n  {{- $valueKeyRedisUseAuth := ternary (printf \"%s%s\" $valueKeyPrefix \"auth.enabled\") (printf \"%s%s\" $valueKeyPrefix \"usePassword\") (eq $standarizedVersion \"true\") }}\n\n  {{- if and (not $existingSecretValue) (eq $enabled \"true\") -}}\n    {{- $requiredPasswords := list -}}\n\n    {{- $useAuth := include \"common.utils.getValueFromKey\" (dict \"key\" $valueKeyRedisUseAuth \"context\" .context) -}}\n    {{- if eq $useAuth \"true\" -}}\n      {{- $requiredRedisPassword := dict \"valueKey\" $valueKeyRedisPassword \"secret\" .secret \"field\" \"redis-password\" -}}\n      {{- $requiredPasswords = append $requiredPasswords $requiredRedisPassword -}}\n    {{- end -}}\n\n    {{- include \"common.validations.values.multiple.empty\" (dict \"required\" $requiredPasswords \"context\" .context) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for enabled redis.\n\nUsage:\n{{ include \"common.redis.values.enabled\" (dict \"context\" $) }}\n*/}}\n{{- define \"common.redis.values.enabled\" -}}\n  {{- if .subchart -}}\n    {{- printf \"%v\" .context.Values.redis.enabled -}}\n  {{- else -}}\n    {{- printf \"%v\" (not .context.Values.enabled) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right prefix path for the values\n\nUsage:\n{{ include \"common.redis.values.key.prefix\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether redis is used as subchart or not. Default: false\n*/}}\n{{- define \"common.redis.values.keys.prefix\" -}}\n  {{- if .subchart -}}redis.{{- else -}}{{- end -}}\n{{- end -}}\n\n{{/*\nChecks whether the redis chart's includes the standarizations (version >= 14)\n\nUsage:\n{{ include \"common.redis.values.standarized.version\" (dict \"context\" $) }}\n*/}}\n{{- define \"common.redis.values.standarized.version\" -}}\n\n  {{- $standarizedAuth := printf \"%s%s\" (include \"common.redis.values.keys.prefix\" .) \"auth\" -}}\n  {{- $standarizedAuthValues := include \"common.utils.getValueFromKey\" (dict \"key\" $standarizedAuth \"context\" .context) }}\n\n  {{- if $standarizedAuthValues -}}\n    {{- true -}}\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/common/templates/validations/_validations.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nValidate values must not be empty.\n\nUsage:\n{{- $validateValueConf00 := (dict \"valueKey\" \"path.to.value\" \"secret\" \"secretName\" \"field\" \"password-00\") -}}\n{{- $validateValueConf01 := (dict \"valueKey\" \"path.to.value\" \"secret\" \"secretName\" \"field\" \"password-01\") -}}\n{{ include \"common.validations.values.empty\" (dict \"required\" (list $validateValueConf00 $validateValueConf01) \"context\" $) }}\n\nValidate value params:\n  - valueKey - String - Required. The path to the validating value in the values.yaml, e.g: \"mysql.password\"\n  - secret - String - Optional. Name of the secret where the validating value is generated/stored, e.g: \"mysql-passwords-secret\"\n  - field - String - Optional. Name of the field in the secret data, e.g: \"mysql-password\"\n*/}}\n{{- define \"common.validations.values.multiple.empty\" -}}\n  {{- range .required -}}\n    {{- include \"common.validations.values.single.empty\" (dict \"valueKey\" .valueKey \"secret\" .secret \"field\" .field \"context\" $.context) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nValidate a value must not be empty.\n\nUsage:\n{{ include \"common.validations.value.empty\" (dict \"valueKey\" \"mariadb.password\" \"secret\" \"secretName\" \"field\" \"my-password\" \"subchart\" \"subchart\" \"context\" $) }}\n\nValidate value params:\n  - valueKey - String - Required. The path to the validating value in the values.yaml, e.g: \"mysql.password\"\n  - secret - String - Optional. Name of the secret where the validating value is generated/stored, e.g: \"mysql-passwords-secret\"\n  - field - String - Optional. Name of the field in the secret data, e.g: \"mysql-password\"\n  - subchart - String - Optional - Name of the subchart that the validated password is part of.\n*/}}\n{{- define \"common.validations.values.single.empty\" -}}\n  {{- $value := include \"common.utils.getValueFromKey\" (dict \"key\" .valueKey \"context\" .context) }}\n  {{- $subchart := ternary \"\" (printf \"%s.\" .subchart) (empty .subchart) }}\n\n  {{- if not $value -}}\n    {{- $varname := \"my-value\" -}}\n    {{- $getCurrentValue := \"\" -}}\n    {{- if and .secret .field -}}\n      {{- $varname = include \"common.utils.fieldToEnvVar\" . -}}\n      {{- $getCurrentValue = printf \" To get the current value:\\n\\n        %s\\n\" (include \"common.utils.secret.getvalue\" .) -}}\n    {{- end -}}\n    {{- printf \"\\n    '%s' must not be empty, please add '--set %s%s=$%s' to the command.%s\" .valueKey $subchart .valueKey $varname $getCurrentValue -}}\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/common/values.yaml",
    "content": "## bitnami/common\n## It is required by CI/CD tools and processes.\n## @skip exampleValue\n##\nexampleValue: common-chart\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/Chart.yaml",
    "content": "annotations:\n  category: Database\napiVersion: v2\nappVersion: 6.2.5\ndependencies:\n- name: common\n  repository: https://charts.bitnami.com/bitnami\n  tags:\n  - bitnami-common\n  version: 1.x.x\ndescription: Open source, advanced key-value store. It is often referred to as a data\n  structure server since keys can contain strings, hashes, lists, sets and sorted\n  sets.\nhome: https://github.com/bitnami/charts/tree/master/bitnami/redis\nicon: https://bitnami.com/assets/stacks/redis/img/redis-stack-220x234.png\nkeywords:\n- redis\n- keyvalue\n- database\nmaintainers:\n- email: containers@bitnami.com\n  name: Bitnami\n- email: cedric@desaintmartin.fr\n  name: desaintmartin\nname: redis\nsources:\n- https://github.com/bitnami/bitnami-docker-redis\n- http://redis.io/\nversion: 14.8.11\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/README.md",
    "content": "# Redis&trade; Chart packaged by Bitnami\n\n[Redis&trade;](http://redis.io/) is an advanced key-value cache and store. It is often referred to as a data structure server since keys can contain strings, hashes, lists, sets, sorted sets, bitmaps and hyperloglogs.\n\nDisclaimer: REDIS® is a registered trademark of Redis Labs Ltd.Any rights therein are reserved to Redis Labs Ltd. Any use by Bitnami is for referential purposes only and does not indicate any sponsorship, endorsement, or affiliation between Redis Labs Ltd.\n\n## TL;DR\n\n```bash\n$ helm repo add bitnami https://charts.bitnami.com/bitnami\n$ helm install my-release bitnami/redis\n```\n\n## Introduction\n\nThis chart bootstraps a [Redis&trade;](https://github.com/bitnami/bitnami-docker-redis) deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.\n\nBitnami charts can be used with [Kubeapps](https://kubeapps.com/) for deployment and management of Helm Charts in clusters. This chart has been tested to work with NGINX Ingress, cert-manager, fluentd and Prometheus on top of the [BKPR](https://kubeprod.io/).\n\n### Choose between Redis&trade; Helm Chart and Redis&trade; Cluster Helm Chart\n\nYou can choose any of the two Redis&trade; Helm charts for deploying a Redis&trade; cluster.\n\n1. [Redis&trade; Helm Chart](https://github.com/bitnami/charts/tree/master/bitnami/redis) will deploy a master-slave cluster, with the [option](https://github.com/bitnami/charts/tree/master/bitnami/redis#redistm-sentinel-configuration-parameters) of enabling using Redis&trade; Sentinel.\n2. [Redis&trade; Cluster Helm Chart](https://github.com/bitnami/charts/tree/master/bitnami/redis-cluster) will deploy a Redis&trade; Cluster topology with sharding.\n\nThe main features of each chart are the following:\n\n| Redis&trade;                                     | Redis&trade; Cluster                                             |\n|--------------------------------------------------|------------------------------------------------------------------|\n| Supports multiple databases                      | Supports only one database. Better if you have a big dataset     |\n| Single write point (single master)               | Multiple write points (multiple masters)                         |\n| ![Redis&trade; Topology](img/redis-topology.png) | ![Redis&trade; Cluster Topology](img/redis-cluster-topology.png) |\n\n## Prerequisites\n\n- Kubernetes 1.12+\n- Helm 3.1.0\n- PV provisioner support in the underlying infrastructure\n\n## Installing the Chart\n\nTo install the chart with the release name `my-release`:\n\n```bash\n$ helm install my-release bitnami/redis\n```\n\nThe command deploys Redis&trade; on the Kubernetes cluster in the default configuration. The [Parameters](#parameters) section lists the parameters that can be configured during installation.\n\n> **Tip**: List all releases using `helm list`\n\n## Uninstalling the Chart\n\nTo uninstall/delete the `my-release` deployment:\n\n```bash\n$ helm delete my-release\n```\n\nThe command removes all the Kubernetes components associated with the chart and deletes the release.\n\n## Parameters\n\n### Global parameters\n\n| Name                      | Description                                              | Value |\n|---------------------------|----------------------------------------------------------|-------|\n| `global.imageRegistry`    | Global Docker image registry                             | `\"\"`  |\n| `global.imagePullSecrets` | Global Docker registry secret names as an array          | `[]`  |\n| `global.storageClass`     | Global StorageClass for Persistent Volume(s)             | `\"\"`  |\n| `global.redis.password`   | Global Redis&trade; password (overrides `auth.password`) | `\"\"`  |\n\n\n### Common parameters\n\n| Name                     | Description                                                                             | Value           |\n|--------------------------|-----------------------------------------------------------------------------------------|-----------------|\n| `kubeVersion`            | Override Kubernetes version                                                             | `\"\"`            |\n| `nameOverride`           | String to partially override common.names.fullname                                      | `\"\"`            |\n| `fullnameOverride`       | String to fully override common.names.fullname                                          | `\"\"`            |\n| `commonLabels`           | Labels to add to all deployed objects                                                   | `{}`            |\n| `commonAnnotations`      | Annotations to add to all deployed objects                                              | `{}`            |\n| `clusterDomain`          | Kubernetes cluster domain name                                                          | `cluster.local` |\n| `extraDeploy`            | Array of extra objects to deploy with the release                                       | `[]`            |\n| `diagnosticMode.enabled` | Enable diagnostic mode (all probes will be disabled and the command will be overridden) | `false`         |\n| `diagnosticMode.command` | Command to override all containers in the deployment                                    | `[]`            |\n| `diagnosticMode.args`    | Args to override all containers in the deployment                                       | `[]`            |\n\n\n### Redis&trade; Image parameters\n\n| Name                | Description                                             | Value                 |\n|---------------------|---------------------------------------------------------|-----------------------|\n| `image.registry`    | Redis&trade; image registry                             | `docker.io`           |\n| `image.repository`  | Redis&trade; image repository                           | `bitnami/redis`       |\n| `image.tag`         | Redis&trade; image tag (immutable tags are recommended) | `6.2.5-debian-10-r11` |\n| `image.pullPolicy`  | Redis&trade; image pull policy                          | `IfNotPresent`        |\n| `image.pullSecrets` | Redis&trade; image pull secrets                         | `[]`                  |\n| `image.debug`       | Enable image debug mode                                 | `false`               |\n\n\n### Redis&trade; common configuration parameters\n\n| Name                             | Description                                                                             | Value         |\n|----------------------------------|-----------------------------------------------------------------------------------------|---------------|\n| `architecture`                   | Redis&trade; architecture. Allowed values: `standalone` or `replication`                | `replication` |\n| `auth.enabled`                   | Enable password authentication                                                          | `true`        |\n| `auth.sentinel`                  | Enable password authentication on sentinels too                                         | `true`        |\n| `auth.password`                  | Redis&trade; password                                                                   | `\"\"`          |\n| `auth.existingSecret`            | The name of an existing secret with Redis&trade; credentials                            | `\"\"`          |\n| `auth.existingSecretPasswordKey` | Password key to be retrieved from existing secret                                       | `\"\"`          |\n| `auth.usePasswordFiles`          | Mount credentials as files instead of using an environment variable                     | `false`       |\n| `commonConfiguration`            | Common configuration to be added into the ConfigMap                                     | `\"\"`          |\n| `existingConfigmap`              | The name of an existing ConfigMap with your custom configuration for Redis&trade; nodes | `\"\"`          |\n\n\n### Redis&trade; master configuration parameters\n\n| Name                                        | Description                                                                                       | Value           |\n|---------------------------------------------|---------------------------------------------------------------------------------------------------|-----------------|\n| `master.configuration`                      | Configuration for Redis&trade; master nodes                                                       | `\"\"`            |\n| `master.disableCommands`                    | Array with Redis&trade; commands to disable on master nodes                                       | `[]`            |\n| `master.command`                            | Override default container command (useful when using custom images)                              | `[]`            |\n| `master.args`                               | Override default container args (useful when using custom images)                                 | `[]`            |\n| `master.preExecCmds`                        | Additional commands to run prior to starting Redis&trade; master                                  | `[]`            |\n| `master.extraFlags`                         | Array with additional command line flags for Redis&trade; master                                  | `[]`            |\n| `master.extraEnvVars`                       | Array with extra environment variables to add to Redis&trade; master nodes                        | `[]`            |\n| `master.extraEnvVarsCM`                     | Name of existing ConfigMap containing extra env vars for Redis&trade; master nodes                | `\"\"`            |\n| `master.extraEnvVarsSecret`                 | Name of existing Secret containing extra env vars for Redis&trade; master nodes                   | `\"\"`            |\n| `master.containerPort`                      | Container port to open on Redis&trade; master nodes                                               | `6379`          |\n| `master.livenessProbe.enabled`              | Enable livenessProbe on Redis&trade; master nodes                                                 | `true`          |\n| `master.livenessProbe.initialDelaySeconds`  | Initial delay seconds for livenessProbe                                                           | `20`            |\n| `master.livenessProbe.periodSeconds`        | Period seconds for livenessProbe                                                                  | `5`             |\n| `master.livenessProbe.timeoutSeconds`       | Timeout seconds for livenessProbe                                                                 | `5`             |\n| `master.livenessProbe.failureThreshold`     | Failure threshold for livenessProbe                                                               | `5`             |\n| `master.livenessProbe.successThreshold`     | Success threshold for livenessProbe                                                               | `1`             |\n| `master.readinessProbe.enabled`             | Enable readinessProbe on Redis&trade; master nodes                                                | `true`          |\n| `master.readinessProbe.initialDelaySeconds` | Initial delay seconds for readinessProbe                                                          | `20`            |\n| `master.readinessProbe.periodSeconds`       | Period seconds for readinessProbe                                                                 | `5`             |\n| `master.readinessProbe.timeoutSeconds`      | Timeout seconds for readinessProbe                                                                | `1`             |\n| `master.readinessProbe.failureThreshold`    | Failure threshold for readinessProbe                                                              | `5`             |\n| `master.readinessProbe.successThreshold`    | Success threshold for readinessProbe                                                              | `1`             |\n| `master.customLivenessProbe`                | Custom livenessProbe that overrides the default one                                               | `{}`            |\n| `master.customReadinessProbe`               | Custom readinessProbe that overrides the default one                                              | `{}`            |\n| `master.resources.limits`                   | The resources limits for the Redis&trade; master containers                                       | `{}`            |\n| `master.resources.requests`                 | The requested resources for the Redis&trade; master containers                                    | `{}`            |\n| `master.podSecurityContext.enabled`         | Enabled Redis&trade; master pods' Security Context                                                | `true`          |\n| `master.podSecurityContext.fsGroup`         | Set Redis&trade; master pod's Security Context fsGroup                                            | `1001`          |\n| `master.containerSecurityContext.enabled`   | Enabled Redis&trade; master containers' Security Context                                          | `true`          |\n| `master.containerSecurityContext.runAsUser` | Set Redis&trade; master containers' Security Context runAsUser                                    | `1001`          |\n| `master.schedulerName`                      | Alternate scheduler for Redis&trade; master pods                                                  | `\"\"`            |\n| `master.updateStrategy.type`                | Redis&trade; master statefulset strategy type                                                     | `RollingUpdate` |\n| `master.priorityClassName`                  | Redis&trade; master pods' priorityClassName                                                       | `\"\"`            |\n| `master.hostAliases`                        | Redis&trade; master pods host aliases                                                             | `[]`            |\n| `master.podLabels`                          | Extra labels for Redis&trade; master pods                                                         | `{}`            |\n| `master.podAnnotations`                     | Annotations for Redis&trade; master pods                                                          | `{}`            |\n| `master.shareProcessNamespace`              | Share a single process namespace between all of the containers in Redis&trade; master pods        | `false`         |\n| `master.podAffinityPreset`                  | Pod affinity preset. Ignored if `master.affinity` is set. Allowed values: `soft` or `hard`        | `\"\"`            |\n| `master.podAntiAffinityPreset`              | Pod anti-affinity preset. Ignored if `master.affinity` is set. Allowed values: `soft` or `hard`   | `soft`          |\n| `master.nodeAffinityPreset.type`            | Node affinity preset type. Ignored if `master.affinity` is set. Allowed values: `soft` or `hard`  | `\"\"`            |\n| `master.nodeAffinityPreset.key`             | Node label key to match. Ignored if `master.affinity` is set                                      | `\"\"`            |\n| `master.nodeAffinityPreset.values`          | Node label values to match. Ignored if `master.affinity` is set                                   | `[]`            |\n| `master.affinity`                           | Affinity for Redis&trade; master pods assignment                                                  | `{}`            |\n| `master.nodeSelector`                       | Node labels for Redis&trade; master pods assignment                                               | `{}`            |\n| `master.tolerations`                        | Tolerations for Redis&trade; master pods assignment                                               | `[]`            |\n| `master.spreadConstraints`                  | Spread Constraints for Redis&trade; master pod assignment                                         | `{}`            |\n| `master.lifecycleHooks`                     | for the Redis&trade; master container(s) to automate configuration before or after startup        | `{}`            |\n| `master.extraVolumes`                       | Optionally specify extra list of additional volumes for the Redis&trade; master pod(s)            | `[]`            |\n| `master.extraVolumeMounts`                  | Optionally specify extra list of additional volumeMounts for the Redis&trade; master container(s) | `[]`            |\n| `master.sidecars`                           | Add additional sidecar containers to the Redis&trade; master pod(s)                               | `[]`            |\n| `master.initContainers`                     | Add additional init containers to the Redis&trade; master pod(s)                                  | `[]`            |\n| `master.persistence.enabled`                | Enable persistence on Redis&trade; master nodes using Persistent Volume Claims                    | `true`          |\n| `master.persistence.path`                   | The path the volume will be mounted at on Redis&trade; master containers                          | `/data`         |\n| `master.persistence.subPath`                | The subdirectory of the volume to mount on Redis&trade; master containers                         | `\"\"`            |\n| `master.persistence.storageClass`           | Persistent Volume storage class                                                                   | `\"\"`            |\n| `master.persistence.accessModes`            | Persistent Volume access modes                                                                    | `[]`            |\n| `master.persistence.size`                   | Persistent Volume size                                                                            | `8Gi`           |\n| `master.persistence.annotations`            | Additional custom annotations for the PVC                                                         | `{}`            |\n| `master.persistence.selector`               | Additional labels to match for the PVC                                                            | `{}`            |\n| `master.persistence.existingClaim`          | Use a existing PVC which must be created manually before bound                                    | `\"\"`            |\n| `master.service.type`                       | Redis&trade; master service type                                                                  | `ClusterIP`     |\n| `master.service.port`                       | Redis&trade; master service port                                                                  | `6379`          |\n| `master.service.nodePort`                   | Node port for Redis&trade; master                                                                 | `\"\"`            |\n| `master.service.externalTrafficPolicy`      | Redis&trade; master service external traffic policy                                               | `Cluster`       |\n| `master.service.clusterIP`                  | Redis&trade; master service Cluster IP                                                            | `\"\"`            |\n| `master.service.loadBalancerIP`             | Redis&trade; master service Load Balancer IP                                                      | `\"\"`            |\n| `master.service.loadBalancerSourceRanges`   | Redis&trade; master service Load Balancer sources                                                 | `[]`            |\n| `master.service.annotations`                | Additional custom annotations for Redis&trade; master service                                     | `{}`            |\n| `master.terminationGracePeriodSeconds`      | Integer setting the termination grace period for the redis-master pods                            | `30`            |\n\n\n### Redis&trade; replicas configuration parameters\n\n| Name                                         | Description                                                                                         | Value           |\n|----------------------------------------------|-----------------------------------------------------------------------------------------------------|-----------------|\n| `replica.replicaCount`                       | Number of Redis&trade; replicas to deploy                                                           | `3`             |\n| `replica.configuration`                      | Configuration for Redis&trade; replicas nodes                                                       | `\"\"`            |\n| `replica.disableCommands`                    | Array with Redis&trade; commands to disable on replicas nodes                                       | `[]`            |\n| `replica.command`                            | Override default container command (useful when using custom images)                                | `[]`            |\n| `replica.args`                               | Override default container args (useful when using custom images)                                   | `[]`            |\n| `replica.preExecCmds`                        | Additional commands to run prior to starting Redis&trade; replicas                                  | `[]`            |\n| `replica.extraFlags`                         | Array with additional command line flags for Redis&trade; replicas                                  | `[]`            |\n| `replica.extraEnvVars`                       | Array with extra environment variables to add to Redis&trade; replicas nodes                        | `[]`            |\n| `replica.extraEnvVarsCM`                     | Name of existing ConfigMap containing extra env vars for Redis&trade; replicas nodes                | `\"\"`            |\n| `replica.extraEnvVarsSecret`                 | Name of existing Secret containing extra env vars for Redis&trade; replicas nodes                   | `\"\"`            |\n| `replica.containerPort`                      | Container port to open on Redis&trade; replicas nodes                                               | `6379`          |\n| `replica.livenessProbe.enabled`              | Enable livenessProbe on Redis&trade; replicas nodes                                                 | `true`          |\n| `replica.livenessProbe.initialDelaySeconds`  | Initial delay seconds for livenessProbe                                                             | `20`            |\n| `replica.livenessProbe.periodSeconds`        | Period seconds for livenessProbe                                                                    | `5`             |\n| `replica.livenessProbe.timeoutSeconds`       | Timeout seconds for livenessProbe                                                                   | `5`             |\n| `replica.livenessProbe.failureThreshold`     | Failure threshold for livenessProbe                                                                 | `5`             |\n| `replica.livenessProbe.successThreshold`     | Success threshold for livenessProbe                                                                 | `1`             |\n| `replica.readinessProbe.enabled`             | Enable readinessProbe on Redis&trade; replicas nodes                                                | `true`          |\n| `replica.readinessProbe.initialDelaySeconds` | Initial delay seconds for readinessProbe                                                            | `20`            |\n| `replica.readinessProbe.periodSeconds`       | Period seconds for readinessProbe                                                                   | `5`             |\n| `replica.readinessProbe.timeoutSeconds`      | Timeout seconds for readinessProbe                                                                  | `1`             |\n| `replica.readinessProbe.failureThreshold`    | Failure threshold for readinessProbe                                                                | `5`             |\n| `replica.readinessProbe.successThreshold`    | Success threshold for readinessProbe                                                                | `1`             |\n| `replica.customLivenessProbe`                | Custom livenessProbe that overrides the default one                                                 | `{}`            |\n| `replica.customReadinessProbe`               | Custom readinessProbe that overrides the default one                                                | `{}`            |\n| `replica.resources.limits`                   | The resources limits for the Redis&trade; replicas containers                                       | `{}`            |\n| `replica.resources.requests`                 | The requested resources for the Redis&trade; replicas containers                                    | `{}`            |\n| `replica.podSecurityContext.enabled`         | Enabled Redis&trade; replicas pods' Security Context                                                | `true`          |\n| `replica.podSecurityContext.fsGroup`         | Set Redis&trade; replicas pod's Security Context fsGroup                                            | `1001`          |\n| `replica.containerSecurityContext.enabled`   | Enabled Redis&trade; replicas containers' Security Context                                          | `true`          |\n| `replica.containerSecurityContext.runAsUser` | Set Redis&trade; replicas containers' Security Context runAsUser                                    | `1001`          |\n| `replica.schedulerName`                      | Alternate scheduler for Redis&trade; replicas pods                                                  | `\"\"`            |\n| `replica.updateStrategy.type`                | Redis&trade; replicas statefulset strategy type                                                     | `RollingUpdate` |\n| `replica.priorityClassName`                  | Redis&trade; replicas pods' priorityClassName                                                       | `\"\"`            |\n| `replica.hostAliases`                        | Redis&trade; replicas pods host aliases                                                             | `[]`            |\n| `replica.podLabels`                          | Extra labels for Redis&trade; replicas pods                                                         | `{}`            |\n| `replica.podAnnotations`                     | Annotations for Redis&trade; replicas pods                                                          | `{}`            |\n| `replica.shareProcessNamespace`              | Share a single process namespace between all of the containers in Redis&trade; replicas pods        | `false`         |\n| `replica.podAffinityPreset`                  | Pod affinity preset. Ignored if `replica.affinity` is set. Allowed values: `soft` or `hard`         | `\"\"`            |\n| `replica.podAntiAffinityPreset`              | Pod anti-affinity preset. Ignored if `replica.affinity` is set. Allowed values: `soft` or `hard`    | `soft`          |\n| `replica.nodeAffinityPreset.type`            | Node affinity preset type. Ignored if `replica.affinity` is set. Allowed values: `soft` or `hard`   | `\"\"`            |\n| `replica.nodeAffinityPreset.key`             | Node label key to match. Ignored if `replica.affinity` is set                                       | `\"\"`            |\n| `replica.nodeAffinityPreset.values`          | Node label values to match. Ignored if `replica.affinity` is set                                    | `[]`            |\n| `replica.affinity`                           | Affinity for Redis&trade; replicas pods assignment                                                  | `{}`            |\n| `replica.nodeSelector`                       | Node labels for Redis&trade; replicas pods assignment                                               | `{}`            |\n| `replica.tolerations`                        | Tolerations for Redis&trade; replicas pods assignment                                               | `[]`            |\n| `replica.spreadConstraints`                  | Spread Constraints for Redis&trade; replicas pod assignment                                         | `{}`            |\n| `replica.lifecycleHooks`                     | for the Redis&trade; replica container(s) to automate configuration before or after startup         | `{}`            |\n| `replica.extraVolumes`                       | Optionally specify extra list of additional volumes for the Redis&trade; replicas pod(s)            | `[]`            |\n| `replica.extraVolumeMounts`                  | Optionally specify extra list of additional volumeMounts for the Redis&trade; replicas container(s) | `[]`            |\n| `replica.sidecars`                           | Add additional sidecar containers to the Redis&trade; replicas pod(s)                               | `[]`            |\n| `replica.initContainers`                     | Add additional init containers to the Redis&trade; replicas pod(s)                                  | `[]`            |\n| `replica.persistence.enabled`                | Enable persistence on Redis&trade; replicas nodes using Persistent Volume Claims                    | `true`          |\n| `replica.persistence.path`                   | The path the volume will be mounted at on Redis&trade; replicas containers                          | `/data`         |\n| `replica.persistence.subPath`                | The subdirectory of the volume to mount on Redis&trade; replicas containers                         | `\"\"`            |\n| `replica.persistence.storageClass`           | Persistent Volume storage class                                                                     | `\"\"`            |\n| `replica.persistence.accessModes`            | Persistent Volume access modes                                                                      | `[]`            |\n| `replica.persistence.size`                   | Persistent Volume size                                                                              | `8Gi`           |\n| `replica.persistence.annotations`            | Additional custom annotations for the PVC                                                           | `{}`            |\n| `replica.persistence.selector`               | Additional labels to match for the PVC                                                              | `{}`            |\n| `replica.service.type`                       | Redis&trade; replicas service type                                                                  | `ClusterIP`     |\n| `replica.service.port`                       | Redis&trade; replicas service port                                                                  | `6379`          |\n| `replica.service.nodePort`                   | Node port for Redis&trade; replicas                                                                 | `\"\"`            |\n| `replica.service.externalTrafficPolicy`      | Redis&trade; replicas service external traffic policy                                               | `Cluster`       |\n| `replica.service.clusterIP`                  | Redis&trade; replicas service Cluster IP                                                            | `\"\"`            |\n| `replica.service.loadBalancerIP`             | Redis&trade; replicas service Load Balancer IP                                                      | `\"\"`            |\n| `replica.service.loadBalancerSourceRanges`   | Redis&trade; replicas service Load Balancer sources                                                 | `[]`            |\n| `replica.service.annotations`                | Additional custom annotations for Redis&trade; replicas service                                     | `{}`            |\n| `replica.terminationGracePeriodSeconds`      | Integer setting the termination grace period for the redis-replicas pods                            | `30`            |\n| `replica.autoscaling.enabled`                | Enable replica autoscaling settings                                                                 | `false`         |\n| `replica.autoscaling.minReplicas`            | Minimum replicas for the pod autoscaling                                                            | `1`             |\n| `replica.autoscaling.maxReplicas`            | Maximum replicas for the pod autoscaling                                                            | `11`            |\n| `replica.autoscaling.targetCPU`              | Percentage of CPU to consider when autoscaling                                                      | `\"\"`            |\n| `replica.autoscaling.targetMemory`           | Percentage of Memory to consider when autoscaling                                                   | `\"\"`            |\n\n\n### Redis&trade; Sentinel configuration parameters\n\n| Name                                          | Description                                                                                         | Value                    |\n|-----------------------------------------------|-----------------------------------------------------------------------------------------------------|--------------------------|\n| `sentinel.enabled`                            | Use Redis&trade; Sentinel on Redis&trade; pods.                                                     | `false`                  |\n| `sentinel.image.registry`                     | Redis&trade; Sentinel image registry                                                                | `docker.io`              |\n| `sentinel.image.repository`                   | Redis&trade; Sentinel image repository                                                              | `bitnami/redis-sentinel` |\n| `sentinel.image.tag`                          | Redis&trade; Sentinel image tag (immutable tags are recommended)                                    | `6.2.5-debian-10-r11`    |\n| `sentinel.image.pullPolicy`                   | Redis&trade; Sentinel image pull policy                                                             | `IfNotPresent`           |\n| `sentinel.image.pullSecrets`                  | Redis&trade; Sentinel image pull secrets                                                            | `[]`                     |\n| `sentinel.image.debug`                        | Enable image debug mode                                                                             | `false`                  |\n| `sentinel.masterSet`                          | Master set name                                                                                     | `mymaster`               |\n| `sentinel.quorum`                             | Sentinel Quorum                                                                                     | `2`                      |\n| `sentinel.downAfterMilliseconds`              | Timeout for detecting a Redis&trade; node is down                                                   | `60000`                  |\n| `sentinel.failoverTimeout`                    | Timeout for performing a election failover                                                          | `18000`                  |\n| `sentinel.cleanDelaySeconds`                  | Delay seconds when cleaning nodes IPs                                                               | `5`                      |\n| `sentinel.parallelSyncs`                      | Number of replicas that can be reconfigured in parallel to use the new master after a failover      | `1`                      |\n| `sentinel.staticID`                           | Enable static Sentinel IDs for each replica                                                         | `false`                  |\n| `sentinel.configuration`                      | Configuration for Redis&trade; Sentinel nodes                                                       | `\"\"`                     |\n| `sentinel.command`                            | Override default container command (useful when using custom images)                                | `[]`                     |\n| `sentinel.args`                               | Override default container args (useful when using custom images)                                   | `[]`                     |\n| `sentinel.preExecCmds`                        | Additional commands to run prior to starting Redis&trade; Sentinel                                  | `[]`                     |\n| `sentinel.containerPort`                      | Container port to open on Redis&trade; Sentinel nodes                                               | `26379`                  |\n| `sentinel.livenessProbe.enabled`              | Enable livenessProbe on Redis&trade; Sentinel nodes                                                 | `true`                   |\n| `sentinel.livenessProbe.initialDelaySeconds`  | Initial delay seconds for livenessProbe                                                             | `20`                     |\n| `sentinel.livenessProbe.periodSeconds`        | Period seconds for livenessProbe                                                                    | `5`                      |\n| `sentinel.livenessProbe.timeoutSeconds`       | Timeout seconds for livenessProbe                                                                   | `5`                      |\n| `sentinel.livenessProbe.failureThreshold`     | Failure threshold for livenessProbe                                                                 | `5`                      |\n| `sentinel.livenessProbe.successThreshold`     | Success threshold for livenessProbe                                                                 | `1`                      |\n| `sentinel.readinessProbe.enabled`             | Enable readinessProbe on Redis&trade; Sentinel nodes                                                | `true`                   |\n| `sentinel.readinessProbe.initialDelaySeconds` | Initial delay seconds for readinessProbe                                                            | `20`                     |\n| `sentinel.readinessProbe.periodSeconds`       | Period seconds for readinessProbe                                                                   | `5`                      |\n| `sentinel.readinessProbe.timeoutSeconds`      | Timeout seconds for readinessProbe                                                                  | `1`                      |\n| `sentinel.readinessProbe.failureThreshold`    | Failure threshold for readinessProbe                                                                | `5`                      |\n| `sentinel.readinessProbe.successThreshold`    | Success threshold for readinessProbe                                                                | `1`                      |\n| `sentinel.customLivenessProbe`                | Custom livenessProbe that overrides the default one                                                 | `{}`                     |\n| `sentinel.customReadinessProbe`               | Custom readinessProbe that overrides the default one                                                | `{}`                     |\n| `sentinel.resources.limits`                   | The resources limits for the Redis&trade; Sentinel containers                                       | `{}`                     |\n| `sentinel.resources.requests`                 | The requested resources for the Redis&trade; Sentinel containers                                    | `{}`                     |\n| `sentinel.containerSecurityContext.enabled`   | Enabled Redis&trade; Sentinel containers' Security Context                                          | `true`                   |\n| `sentinel.containerSecurityContext.runAsUser` | Set Redis&trade; Sentinel containers' Security Context runAsUser                                    | `1001`                   |\n| `sentinel.lifecycleHooks`                     | for the Redis&trade; sentinel container(s) to automate configuration before or after startup        | `{}`                     |\n| `sentinel.extraVolumes`                       | Optionally specify extra list of additional volumes for the Redis&trade; Sentinel                   | `[]`                     |\n| `sentinel.extraVolumeMounts`                  | Optionally specify extra list of additional volumeMounts for the Redis&trade; Sentinel container(s) | `[]`                     |\n| `sentinel.service.type`                       | Redis&trade; Sentinel service type                                                                  | `ClusterIP`              |\n| `sentinel.service.port`                       | Redis&trade; service port for Redis&trade;                                                          | `6379`                   |\n| `sentinel.service.sentinelPort`               | Redis&trade; service port for Sentinel                                                              | `26379`                  |\n| `sentinel.service.nodePorts.redis`            | Node port for Redis&trade;                                                                          | `\"\"`                     |\n| `sentinel.service.nodePorts.sentinel`         | Node port for Sentinel                                                                              | `\"\"`                     |\n| `sentinel.service.externalTrafficPolicy`      | Redis&trade; Sentinel service external traffic policy                                               | `Cluster`                |\n| `sentinel.service.clusterIP`                  | Redis&trade; Sentinel service Cluster IP                                                            | `\"\"`                     |\n| `sentinel.service.loadBalancerIP`             | Redis&trade; Sentinel service Load Balancer IP                                                      | `\"\"`                     |\n| `sentinel.service.loadBalancerSourceRanges`   | Redis&trade; Sentinel service Load Balancer sources                                                 | `[]`                     |\n| `sentinel.service.annotations`                | Additional custom annotations for Redis&trade; Sentinel service                                     | `{}`                     |\n| `sentinel.terminationGracePeriodSeconds`      | Integer setting the termination grace period for the redis-node pods                                | `30`                     |\n\n\n### Other Parameters\n\n| Name                                          | Description                                                                                                      | Value   |\n|-----------------------------------------------|------------------------------------------------------------------------------------------------------------------|---------|\n| `networkPolicy.enabled`                       | Enable creation of NetworkPolicy resources                                                                       | `false` |\n| `networkPolicy.allowExternal`                 | Don't require client label for connections                                                                       | `true`  |\n| `networkPolicy.extraIngress`                  | Add extra ingress rules to the NetworkPolicy                                                                     | `[]`    |\n| `networkPolicy.extraEgress`                   | Add extra ingress rules to the NetworkPolicy                                                                     | `[]`    |\n| `networkPolicy.ingressNSMatchLabels`          | Labels to match to allow traffic from other namespaces                                                           | `{}`    |\n| `networkPolicy.ingressNSPodMatchLabels`       | Pod labels to match to allow traffic from other namespaces                                                       | `{}`    |\n| `podSecurityPolicy.create`                    | Specifies whether a PodSecurityPolicy should be created (set `podSecurityPolicy.enabled` to `true` to enable it) | `false` |\n| `podSecurityPolicy.enabled`                   | Enable PodSecurityPolicy                                                                                         | `false` |\n| `rbac.create`                                 | Specifies whether RBAC resources should be created                                                               | `false` |\n| `rbac.rules`                                  | Custom RBAC rules to set                                                                                         | `[]`    |\n| `serviceAccount.create`                       | Specifies whether a ServiceAccount should be created                                                             | `true`  |\n| `serviceAccount.name`                         | The name of the ServiceAccount to use.                                                                           | `\"\"`    |\n| `serviceAccount.automountServiceAccountToken` | Whether to auto mount the service account token                                                                  | `true`  |\n| `serviceAccount.annotations`                  | Additional custom annotations for the ServiceAccount                                                             | `{}`    |\n| `pdb.create`                                  | Specifies whether a PodDisruptionBudget should be created                                                        | `false` |\n| `pdb.minAvailable`                            | Min number of pods that must still be available after the eviction                                               | `1`     |\n| `pdb.maxUnavailable`                          | Max number of pods that can be unavailable after the eviction                                                    | `\"\"`    |\n| `tls.enabled`                                 | Enable TLS traffic                                                                                               | `false` |\n| `tls.authClients`                             | Require clients to authenticate                                                                                  | `true`  |\n| `tls.autoGenerated`                           | Enable autogenerated certificates                                                                                | `false` |\n| `tls.existingSecret`                          | The name of the existing secret that contains the TLS certificates                                               | `\"\"`    |\n| `tls.certificatesSecret`                      | DEPRECATED. Use existingSecret instead.                                                                          | `\"\"`    |\n| `tls.certFilename`                            | Certificate filename                                                                                             | `\"\"`    |\n| `tls.certKeyFilename`                         | Certificate Key filename                                                                                         | `\"\"`    |\n| `tls.certCAFilename`                          | CA Certificate filename                                                                                          | `\"\"`    |\n| `tls.dhParamsFilename`                        | File containing DH params (in order to support DH based ciphers)                                                 | `\"\"`    |\n\n\n### Metrics Parameters\n\n| Name                                         | Description                                                                                      | Value                    |\n|----------------------------------------------|--------------------------------------------------------------------------------------------------|--------------------------|\n| `metrics.enabled`                            | Start a sidecar prometheus exporter to expose Redis&trade; metrics                               | `false`                  |\n| `metrics.image.registry`                     | Redis&trade; Exporter image registry                                                             | `docker.io`              |\n| `metrics.image.repository`                   | Redis&trade; Exporter image repository                                                           | `bitnami/redis-exporter` |\n| `metrics.image.tag`                          | Redis&trade; Redis&trade; Exporter image tag (immutable tags are recommended)                    | `1.24.0-debian-10-r48`   |\n| `metrics.image.pullPolicy`                   | Redis&trade; Exporter image pull policy                                                          | `IfNotPresent`           |\n| `metrics.image.pullSecrets`                  | Redis&trade; Exporter image pull secrets                                                         | `[]`                     |\n| `metrics.redisTargetHost`                    | A way to specify an alternative Redis&trade; hostname                                            | `localhost`              |\n| `metrics.extraArgs`                          | Extra arguments for Redis&trade; exporter, for example:                                          | `{}`                     |\n| `metrics.containerSecurityContext.enabled`   | Enabled Redis&trade; exporter containers' Security Context                                       | `true`                   |\n| `metrics.containerSecurityContext.runAsUser` | Set Redis&trade; exporter containers' Security Context runAsUser                                 | `1001`                   |\n| `metrics.extraVolumes`                       | Optionally specify extra list of additional volumes for the Redis&trade; metrics sidecar         | `[]`                     |\n| `metrics.extraVolumeMounts`                  | Optionally specify extra list of additional volumeMounts for the Redis&trade; metrics sidecar    | `[]`                     |\n| `metrics.resources.limits`                   | The resources limits for the Redis&trade; exporter container                                     | `{}`                     |\n| `metrics.resources.requests`                 | The requested resources for the Redis&trade; exporter container                                  | `{}`                     |\n| `metrics.podLabels`                          | Extra labels for Redis&trade; exporter pods                                                      | `{}`                     |\n| `metrics.podAnnotations`                     | Annotations for Redis&trade; exporter pods                                                       | `{}`                     |\n| `metrics.service.type`                       | Redis&trade; exporter service type                                                               | `ClusterIP`              |\n| `metrics.service.port`                       | Redis&trade; exporter service port                                                               | `9121`                   |\n| `metrics.service.externalTrafficPolicy`      | Redis&trade; exporter service external traffic policy                                            | `Cluster`                |\n| `metrics.service.loadBalancerIP`             | Redis&trade; exporter service Load Balancer IP                                                   | `\"\"`                     |\n| `metrics.service.loadBalancerSourceRanges`   | Redis&trade; exporter service Load Balancer sources                                              | `[]`                     |\n| `metrics.service.annotations`                | Additional custom annotations for Redis&trade; exporter service                                  | `{}`                     |\n| `metrics.serviceMonitor.enabled`             | Create ServiceMonitor resource(s) for scraping metrics using PrometheusOperator                  | `false`                  |\n| `metrics.serviceMonitor.namespace`           | The namespace in which the ServiceMonitor will be created                                        | `\"\"`                     |\n| `metrics.serviceMonitor.interval`            | The interval at which metrics should be scraped                                                  | `30s`                    |\n| `metrics.serviceMonitor.scrapeTimeout`       | The timeout after which the scrape is ended                                                      | `\"\"`                     |\n| `metrics.serviceMonitor.relabellings`        | Metrics relabellings to add to the scrape endpoint                                               | `[]`                     |\n| `metrics.serviceMonitor.honorLabels`         | Specify honorLabels parameter to add the scrape endpoint                                         | `false`                  |\n| `metrics.serviceMonitor.additionalLabels`    | Additional labels that can be used so ServiceMonitor resource(s) can be discovered by Prometheus | `{}`                     |\n| `metrics.prometheusRule.enabled`             | Create a custom prometheusRule Resource for scraping metrics using PrometheusOperator            | `false`                  |\n| `metrics.prometheusRule.namespace`           | The namespace in which the prometheusRule will be created                                        | `\"\"`                     |\n| `metrics.prometheusRule.additionalLabels`    | Additional labels for the prometheusRule                                                         | `{}`                     |\n| `metrics.prometheusRule.rules`               | Custom Prometheus rules                                                                          | `[]`                     |\n\n\n### Init Container Parameters\n\n| Name                                                   | Description                                                                                     | Value                   |\n|--------------------------------------------------------|-------------------------------------------------------------------------------------------------|-------------------------|\n| `volumePermissions.enabled`                            | Enable init container that changes the owner/group of the PV mount point to `runAsUser:fsGroup` | `false`                 |\n| `volumePermissions.image.registry`                     | Bitnami Shell image registry                                                                    | `docker.io`             |\n| `volumePermissions.image.repository`                   | Bitnami Shell image repository                                                                  | `bitnami/bitnami-shell` |\n| `volumePermissions.image.tag`                          | Bitnami Shell image tag (immutable tags are recommended)                                        | `10-debian-10-r151`     |\n| `volumePermissions.image.pullPolicy`                   | Bitnami Shell image pull policy                                                                 | `Always`                |\n| `volumePermissions.image.pullSecrets`                  | Bitnami Shell image pull secrets                                                                | `[]`                    |\n| `volumePermissions.resources.limits`                   | The resources limits for the init container                                                     | `{}`                    |\n| `volumePermissions.resources.requests`                 | The requested resources for the init container                                                  | `{}`                    |\n| `volumePermissions.containerSecurityContext.runAsUser` | Set init container's Security Context runAsUser                                                 | `0`                     |\n| `sysctl.enabled`                                       | Enable init container to modify Kernel settings                                                 | `false`                 |\n| `sysctl.image.registry`                                | Bitnami Shell image registry                                                                    | `docker.io`             |\n| `sysctl.image.repository`                              | Bitnami Shell image repository                                                                  | `bitnami/bitnami-shell` |\n| `sysctl.image.tag`                                     | Bitnami Shell image tag (immutable tags are recommended)                                        | `10-debian-10-r151`     |\n| `sysctl.image.pullPolicy`                              | Bitnami Shell image pull policy                                                                 | `Always`                |\n| `sysctl.image.pullSecrets`                             | Bitnami Shell image pull secrets                                                                | `[]`                    |\n| `sysctl.command`                                       | Override default init-sysctl container command (useful when using custom images)                | `[]`                    |\n| `sysctl.mountHostSys`                                  | Mount the host `/sys` folder to `/host-sys`                                                     | `false`                 |\n| `sysctl.resources.limits`                              | The resources limits for the init container                                                     | `{}`                    |\n| `sysctl.resources.requests`                            | The requested resources for the init container                                                  | `{}`                    |\n\n\nSpecify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,\n\n```bash\n$ helm install my-release \\\n  --set auth.password=secretpassword \\\n    bitnami/redis\n```\n\nThe above command sets the Redis&trade; server password to `secretpassword`.\n\n> NOTE: Once this chart is deployed, it is not possible to change the application's access credentials, such as usernames or passwords, using Helm. To change these application credentials after deployment, delete any persistent volumes (PVs) used by the chart and re-deploy it, or use the application's built-in administrative tools if available.\n\nAlternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example,\n\n```bash\n$ helm install my-release -f values.yaml bitnami/redis\n```\n\n> **Tip**: You can use the default [values.yaml](values.yaml)\n\n## Configuration and installation details\n\n### [Rolling VS Immutable tags](https://docs.bitnami.com/containers/how-to/understand-rolling-tags-containers/)\n\nIt is strongly recommended to use immutable tags in a production environment. This ensures your deployment does not change automatically if the same tag is updated with a different image.\n\nBitnami will release a new chart updating its containers if a new version of the main container, significant changes, or critical vulnerabilities exist.\n\n### Use a different Redis&trade; version\n\nTo modify the application version used in this chart, specify a different version of the image using the `image.tag` parameter and/or a different repository using the `image.repository` parameter. Refer to the [chart documentation for more information on these parameters and how to use them with images from a private registry](https://docs.bitnami.com/kubernetes/infrastructure/redis/configuration/change-image-version/).\n\n### Cluster topologies\n\n#### Default: Master-Replicas\n\nWhen installing the chart with `architecture=replication`, it will deploy a Redis&trade; master StatefulSet (only one master node allowed) and a Redis&trade; replicas StatefulSet. The replicas will be read-replicas of the master. Two services will be exposed:\n\n- Redis&trade; Master service: Points to the master, where read-write operations can be performed\n- Redis&trade; Replicas service: Points to the replicas, where only read operations are allowed.\n\nIn case the master crashes, the replicas will wait until the master node is respawned again by the Kubernetes Controller Manager.\n\n#### Standalone\n\nWhen installing the chart with `architecture=standalone`, it will deploy a standalone Redis&trade; StatefulSet (only one node allowed) and a Redis&trade; replicas StatefulSet. A single service will be exposed:\n\n- Redis&trade; Master service: Points to the master, where read-write operations can be performed\n\n#### Master-Replicas with Sentinel\n\nWhen installing the chart with `architecture=replication` and `sentinel.enabled=true`, it will deploy a Redis&trade; master StatefulSet (only one master allowed) and a Redis&trade; replicas StatefulSet. In this case, the pods will contain an extra container with Redis&trade; Sentinel. This container will form a cluster of Redis&trade; Sentinel nodes, which will promote a new master in case the actual one fails. In addition to this, only one service is exposed:\n\n- Redis&trade; service: Exposes port 6379 for Redis&trade; read-only operations and port 26379 for accessing Redis&trade; Sentinel.\n\nFor read-only operations, access the service using port 6379. For write operations, it's necessary to access the Redis&trade; Sentinel cluster and query the current master using the command below (using redis-cli or similar):\n\n```\nSENTINEL get-master-addr-by-name <name of your MasterSet. e.g: mymaster>\n```\n\nThis command will return the address of the current master, which can be accessed from inside the cluster.\n\nIn case the current master crashes, the Sentinel containers will elect a new master node.\n\n### Using a password file\n\nTo use a password file for Redis&trade; you need to create a secret containing the password and then deploy the chart using that secret.\n\nRefer to the chart documentation for more information on [using a password file for Redis&trade;](https://docs.bitnami.com/kubernetes/infrastructure/redis/administration/use-password-file/).\n\n### Securing traffic using TLS\n\nTLS support can be enabled in the chart by specifying the `tls.` parameters while creating a release. The following parameters should be configured to properly enable the TLS support in the chart:\n\n- `tls.enabled`: Enable TLS support. Defaults to `false`\n- `tls.existingSecret`: Name of the secret that contains the certificates. No defaults.\n- `tls.certFilename`: Certificate filename. No defaults.\n- `tls.certKeyFilename`: Certificate key filename. No defaults.\n- `tls.certCAFilename`: CA Certificate filename. No defaults.\n\nRefer to the chart documentation for more information on [creating the secret and a TLS deployment example](https://docs.bitnami.com/kubernetes/infrastructure/redis/administration/enable-tls/).\n\n### Metrics\n\nThe chart optionally can start a metrics exporter for [prometheus](https://prometheus.io). The metrics endpoint (port 9121) is exposed in the service. Metrics can be scraped from within the cluster using something similar as the described in the [example Prometheus scrape configuration](https://github.com/prometheus/prometheus/blob/master/documentation/examples/prometheus-kubernetes.yml). If metrics are to be scraped from outside the cluster, the Kubernetes API proxy can be utilized to access the endpoint.\n\nIf you have enabled TLS by specifying `tls.enabled=true` you also need to specify TLS option to the metrics exporter. You can do that via `metrics.extraArgs`. You can find the metrics exporter CLI flags for TLS [here](https://github.com/oliver006/redis_exporter#command-line-flags). For example:\n\nYou can either specify `metrics.extraArgs.skip-tls-verification=true` to skip TLS verification or providing the following values under `metrics.extraArgs` for TLS client authentication:\n\n```console\ntls-client-key-file\ntls-client-cert-file\ntls-ca-cert-file\n```\n\n### Host Kernel Settings\n\nRedis&trade; may require some changes in the kernel of the host machine to work as expected, in particular increasing the `somaxconn` value and disabling transparent huge pages.\n\nRefer to the chart documentation for more information on [configuring host kernel settings with an example](https://docs.bitnami.com/kubernetes/infrastructure/redis/administration/configure-kernel-settings/).\n\n## Persistence\n\nBy default, the chart mounts a [Persistent Volume](http://kubernetes.io/docs/user-guide/persistent-volumes/) at the `/data` path. The volume is created using dynamic volume provisioning. If a Persistent Volume Claim already exists, specify it during installation.\n\n### Existing PersistentVolumeClaim\n\n1. Create the PersistentVolume\n2. Create the PersistentVolumeClaim\n3. Install the chart\n\n```bash\n$ helm install my-release --set master.persistence.existingClaim=PVC_NAME bitnami/redis\n```\n\n## Backup and restore\n\nRefer to the chart documentation for more information on [backing up and restoring Redis&trade; deployments](https://docs.bitnami.com/kubernetes/infrastructure/redis/administration/backup-restore/).\n\n## NetworkPolicy\n\nTo enable network policy for Redis&trade;, install [a networking plugin that implements the Kubernetes NetworkPolicy spec](https://kubernetes.io/docs/tasks/administer-cluster/declare-network-policy#before-you-begin), and set `networkPolicy.enabled` to `true`.\n\nRefer to the chart documenation for more information on [enabling the network policy in Redis&trade; deployments](https://docs.bitnami.com/kubernetes/infrastructure/redis/administration/enable-network-policy/).\n\n### Setting Pod's affinity\n\nThis chart allows you to set your custom affinity using the `XXX.affinity` parameter(s). Find more infomation about Pod's affinity in the [Kubernetes documentation](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity).\n\nAs an alternative, you can use of the preset configurations for pod affinity, pod anti-affinity, and node affinity available at the [bitnami/common](https://github.com/bitnami/charts/tree/master/bitnami/common#affinities) chart. To do so, set the `XXX.podAffinityPreset`, `XXX.podAntiAffinityPreset`, or `XXX.nodeAffinityPreset` parameters.\n\n## Troubleshooting\n\nFind more information about how to deal with common errors related to Bitnami’s Helm charts in [this troubleshooting guide](https://docs.bitnami.com/general/how-to/troubleshoot-helm-chart-issues).\n\n## Upgrading\n\nA major chart version change (like v1.2.3 -> v2.0.0) indicates that there is an incompatible breaking change needing manual actions.\n\n### To 14.8.0\n\nThe Redis&trade; sentinel exporter was removed in this version because the upstream project was deprecated. The regular Redis&trade; exporter is included in the sentinel scenario as usual.\n\n### To 14.0.0\n\n- Several parameters were renamed or disappeared in favor of new ones on this major version:\n  - The term *slave* has been replaced by the term *replica*. Therefore, parameters prefixed with `slave` are now prefixed with `replicas`.\n  - Credentials parameter are reorganized under the `auth` parameter.\n  - `cluster.enabled` parameter is deprecated in favor of `architecture` parameter that accepts two values: `standalone` and `replication`.\n  - `securityContext.*` is deprecated in favor of `XXX.podSecurityContext` and `XXX.containerSecurityContext`.\n  - `sentinel.metrics.*` parameters are deprecated in favor of `metrics.sentinel.*` ones.\n- New parameters to add custom command, environment variables, sidecars, init containers, etc. were added.\n- Chart labels were adapted to follow the [Helm charts standard labels](https://helm.sh/docs/chart_best_practices/labels/#standard-labels).\n- values.yaml metadata was adapted to follow the format supported by [Readme Generator for Helm](https://github.com/bitnami-labs/readme-generator-for-helm).\n\nConsequences:\n\nBackwards compatibility is not guaranteed. To upgrade to `14.0.0`, install a new release of the Redis&trade; chart, and migrate the data from your previous release. You have 2 alternatives to do so:\n\n- Create a backup of the database, and restore it on the new release as explained in the [Backup and restore](#backup-and-restore) section.\n- Reuse the PVC used to hold the master data on your previous release. To do so, use the `master.persistence.existingClaim` parameter. The following example assumes that the release name is `redis`:\n\n```bash\n$ helm install redis bitnami/redis --set auth.password=[PASSWORD] --set master.persistence.existingClaim=[EXISTING_PVC]\n```\n\n| Note: you need to substitute the placeholder _[EXISTING_PVC]_ with the name of the PVC used on your previous release, and _[PASSWORD]_ with the password used in your previous release.\n\n### To 13.0.0\n\nThis major version updates the Redis&trade; docker image version used from `6.0` to `6.2`, the new stable version. There are no major changes in the chart and there shouldn't be any breaking changes in it as `6.2` is basically a stricter superset of `6.0`. For more information, please refer to [Redis&trade; 6.2 release notes](https://raw.githubusercontent.com/redis/redis/6.2/00-RELEASENOTES).\n\n### To 12.3.0\n\nThis version also introduces `bitnami/common`, a [library chart](https://helm.sh/docs/topics/library_charts/#helm) as a dependency. More documentation about this new utility could be found [here](https://github.com/bitnami/charts/tree/master/bitnami/common#bitnami-common-library-chart). Please, make sure that you have updated the chart dependencies before executing any upgrade.\n\n### To 12.0.0\n\n[On November 13, 2020, Helm v2 support was formally finished](https://github.com/helm/charts#status-of-the-project), this major version is the result of the required changes applied to the Helm Chart to be able to incorporate the different features added in Helm v3 and to be consistent with the Helm project itself regarding the Helm v2 EOL.\n\n**What changes were introduced in this major version?**\n\n- Previous versions of this Helm Chart use `apiVersion: v1` (installable by both Helm 2 and 3), this Helm Chart was updated to `apiVersion: v2` (installable by Helm 3 only). [Here](https://helm.sh/docs/topics/charts/#the-apiversion-field) you can find more information about the `apiVersion` field.\n- The different fields present in the *Chart.yaml* file has been ordered alphabetically in a homogeneous way for all the Bitnami Helm Charts\n\n**Considerations when upgrading to this version**\n\n- If you want to upgrade to this version from a previous one installed with Helm v3, you shouldn't face any issues\n- If you want to upgrade to this version using Helm v2, this scenario is not supported as this version doesn't support Helm v2 anymore\n- If you installed the previous version with Helm v2 and wants to upgrade to this version with Helm v3, please refer to the [official Helm documentation](https://helm.sh/docs/topics/v2_v3_migration/#migration-use-cases) about migrating from Helm v2 to v3\n\n**Useful links**\n\n- https://docs.bitnami.com/tutorials/resolve-helm2-helm3-post-migration-issues/\n- https://helm.sh/docs/topics/v2_v3_migration/\n- https://helm.sh/blog/migrate-from-helm-v2-to-helm-v3/\n\n### To 11.0.0\n\nWhen deployed with sentinel enabled, only a group of nodes is deployed and the master/slave role is handled in the group. To avoid breaking the compatibility, the settings for this nodes are given through the `slave.xxxx` parameters in `values.yaml`\n\n### To 9.0.0\n\nThe metrics exporter has been changed from a separate deployment to a sidecar container, due to the latest changes in the Redis&trade; exporter code. Check the [official page](https://github.com/oliver006/redis_exporter/) for more information. The metrics container image was changed from oliver006/redis_exporter to bitnami/redis-exporter (Bitnami's maintained package of oliver006/redis_exporter).\n\n### To 7.0.0\n\nIn order to improve the performance in case of slave failure, we added persistence to the read-only slaves. That means that we moved from Deployment to StatefulSets. This should not affect upgrades from previous versions of the chart, as the deployments did not contain any persistence at all.\n\nThis version also allows enabling Redis&trade; Sentinel containers inside of the Redis&trade; Pods (feature disabled by default). In case the master crashes, a new Redis&trade; node will be elected as master. In order to query the current master (no redis master service is exposed), you need to query first the Sentinel cluster. Find more information [in this section](#master-slave-with-sentinel).\n\n### To 11.0.0\n\nWhen using sentinel, a new statefulset called `-node` was introduced. This will break upgrading from a previous version where the statefulsets are called master and slave. Hence the PVC will not match the new naming and won't be reused. If you want to keep your data, you will need to perform a backup and then a restore the data in this new version.\n\n### To 10.0.0\n\nFor releases with `usePassword: true`, the value `sentinel.usePassword` controls whether the password authentication also applies to the sentinel port. This defaults to `true` for a secure configuration, however it is possible to disable to account for the following cases:\n\n- Using a version of redis-sentinel prior to `5.0.1` where the authentication feature was introduced.\n- Where redis clients need to be updated to support sentinel authentication.\n\nIf using a master/slave topology, or with `usePassword: false`, no action is required.\n\n### To 8.0.18\n\nFor releases with `metrics.enabled: true` the default tag for the exporter image is now `v1.x.x`. This introduces many changes including metrics names. You'll want to use [this dashboard](https://github.com/oliver006/redis_exporter/blob/master/contrib/grafana_prometheus_redis_dashboard.json) now. Please see the [redis_exporter github page](https://github.com/oliver006/redis_exporter#upgrading-from-0x-to-1x) for more details.\n\n### To 7.0.0\n\nThis version causes a change in the Redis&trade; Master StatefulSet definition, so the command helm upgrade would not work out of the box. As an alternative, one of the following could be done:\n\n- Recommended: Create a clone of the Redis&trade; Master PVC (for example, using projects like [this one](https://github.com/edseymour/pvc-transfer)). Then launch a fresh release reusing this cloned PVC.\n\n   ```\n   helm install my-release bitnami/redis --set persistence.existingClaim=<NEW PVC>\n   ```\n\n- Alternative (not recommended, do at your own risk): `helm delete --purge` does not remove the PVC assigned to the Redis&trade; Master StatefulSet. As a consequence, the following commands can be done to upgrade the release\n\n   ```\n   helm delete --purge <RELEASE>\n   helm install <RELEASE> bitnami/redis\n   ```\n\nPrevious versions of the chart were not using persistence in the slaves, so this upgrade would add it to them. Another important change is that no values are inherited from master to slaves. For example, in 6.0.0 `slaves.readinessProbe.periodSeconds`, if empty, would be set to `master.readinessProbe.periodSeconds`. This approach lacked transparency and was difficult to maintain. From now on, all the slave parameters must be configured just as it is done with the masters.\n\nSome values have changed as well:\n\n- `master.port` and `slave.port` have been changed to `redisPort` (same value for both master and slaves)\n- `master.securityContext` and `slave.securityContext` have been changed to `securityContext`(same values for both master and slaves)\n\nBy default, the upgrade will not change the cluster topology. In case you want to use Redis&trade; Sentinel, you must explicitly set `sentinel.enabled` to `true`.\n\n### To 6.0.0\n\nPrevious versions of the chart were using an init-container to change the permissions of the volumes. This was done in case the `securityContext` directive in the template was not enough for that (for example, with cephFS). In this new version of the chart, this container is disabled by default (which should not affect most of the deployments). If your installation still requires that init container, execute `helm upgrade` with the `--set volumePermissions.enabled=true`.\n\n### To 5.0.0\n\nThe default image in this release may be switched out for any image containing the `redis-server`\nand `redis-cli` binaries. If `redis-server` is not the default image ENTRYPOINT, `master.command`\nmust be specified.\n\n#### Breaking changes\n\n- `master.args` and `slave.args` are removed. Use `master.command` or `slave.command` instead in order to override the image entrypoint, or `master.extraFlags` to pass additional flags to `redis-server`.\n- `disableCommands` is now interpreted as an array of strings instead of a string of comma separated values.\n- `master.persistence.path` now defaults to `/data`.\n\n### To 4.0.0\n\nThis version removes the `chart` label from the `spec.selector.matchLabels`\nwhich is immutable since `StatefulSet apps/v1beta2`. It has been inadvertently\nadded, causing any subsequent upgrade to fail. See https://github.com/helm/charts/issues/7726.\n\nIt also fixes https://github.com/helm/charts/issues/7726 where a deployment `extensions/v1beta1` can not be upgraded if `spec.selector` is not explicitly set.\n\nFinally, it fixes https://github.com/helm/charts/issues/7803 by removing mutable labels in `spec.VolumeClaimTemplate.metadata.labels` so that it is upgradable.\n\nIn order to upgrade, delete the Redis&trade; StatefulSet before upgrading:\n\n```bash\nkubectl delete statefulsets.apps --cascade=false my-release-redis-master\n```\n\nAnd edit the Redis&trade; slave (and metrics if enabled) deployment:\n\n```bash\nkubectl patch deployments my-release-redis-slave --type=json -p='[{\"op\": \"remove\", \"path\": \"/spec/selector/matchLabels/chart\"}]'\nkubectl patch deployments my-release-redis-metrics --type=json -p='[{\"op\": \"remove\", \"path\": \"/spec/selector/matchLabels/chart\"}]'\n```\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/charts/common/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n.vscode/\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/charts/common/Chart.yaml",
    "content": "annotations:\n  category: Infrastructure\napiVersion: v2\nappVersion: 1.7.1\ndescription: A Library Helm Chart for grouping common logic between bitnami charts.\n  This chart is not deployable by itself.\nhome: https://github.com/bitnami/charts/tree/master/bitnami/common\nicon: https://bitnami.com/downloads/logos/bitnami-mark.png\nkeywords:\n- common\n- helper\n- template\n- function\n- bitnami\nmaintainers:\n- email: containers@bitnami.com\n  name: Bitnami\nname: common\nsources:\n- https://github.com/bitnami/charts\n- http://www.bitnami.com/\ntype: library\nversion: 1.7.1\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/charts/common/README.md",
    "content": "# Bitnami Common Library Chart\n\nA [Helm Library Chart](https://helm.sh/docs/topics/library_charts/#helm) for grouping common logic between bitnami charts.\n\n## TL;DR\n\n```yaml\ndependencies:\n  - name: common\n    version: 0.x.x\n    repository: https://charts.bitnami.com/bitnami\n```\n\n```bash\n$ helm dependency update\n```\n\n```yaml\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ include \"common.names.fullname\" . }}\ndata:\n  myvalue: \"Hello World\"\n```\n\n## Introduction\n\nThis chart provides a common template helpers which can be used to develop new charts using [Helm](https://helm.sh) package manager.\n\nBitnami charts can be used with [Kubeapps](https://kubeapps.com/) for deployment and management of Helm Charts in clusters. This Helm chart has been tested on top of [Bitnami Kubernetes Production Runtime](https://kubeprod.io/) (BKPR). Deploy BKPR to get automated TLS certificates, logging and monitoring for your applications.\n\n## Prerequisites\n\n- Kubernetes 1.12+\n- Helm 3.1.0\n\n## Parameters\n\nThe following table lists the helpers available in the library which are scoped in different sections.\n\n### Affinities\n\n| Helper identifier             | Description                                          | Expected Input                                 |\n|-------------------------------|------------------------------------------------------|------------------------------------------------|\n| `common.affinities.node.soft` | Return a soft nodeAffinity definition                | `dict \"key\" \"FOO\" \"values\" (list \"BAR\" \"BAZ\")` |\n| `common.affinities.node.hard` | Return a hard nodeAffinity definition                | `dict \"key\" \"FOO\" \"values\" (list \"BAR\" \"BAZ\")` |\n| `common.affinities.pod.soft`  | Return a soft podAffinity/podAntiAffinity definition | `dict \"component\" \"FOO\" \"context\" $`           |\n| `common.affinities.pod.hard`  | Return a hard podAffinity/podAntiAffinity definition | `dict \"component\" \"FOO\" \"context\" $`           |\n\n### Capabilities\n\n| Helper identifier                            | Description                                                                                    | Expected Input    |\n|----------------------------------------------|------------------------------------------------------------------------------------------------|-------------------|\n| `common.capabilities.kubeVersion`            | Return the target Kubernetes version (using client default if .Values.kubeVersion is not set). | `.` Chart context |\n| `common.capabilities.deployment.apiVersion`  | Return the appropriate apiVersion for deployment.                                              | `.` Chart context |\n| `common.capabilities.statefulset.apiVersion` | Return the appropriate apiVersion for statefulset.                                             | `.` Chart context |\n| `common.capabilities.ingress.apiVersion`     | Return the appropriate apiVersion for ingress.                                                 | `.` Chart context |\n| `common.capabilities.rbac.apiVersion`        | Return the appropriate apiVersion for RBAC resources.                                          | `.` Chart context |\n| `common.capabilities.crd.apiVersion`         | Return the appropriate apiVersion for CRDs.                                                    | `.` Chart context |\n| `common.capabilities.policy.apiVersion`      | Return the appropriate apiVersion for policy                                                   | `.` Chart context |\n| `common.capabilities.supportsHelmVersion`    | Returns true if the used Helm version is 3.3+                                                  | `.` Chart context |\n\n### Errors\n\n| Helper identifier                       | Description                                                                                                                                                            | Expected Input                                                                      |\n|-----------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------|\n| `common.errors.upgrade.passwords.empty` | It will ensure required passwords are given when we are upgrading a chart. If `validationErrors` is not empty it will throw an error and will stop the upgrade action. | `dict \"validationErrors\" (list $validationError00 $validationError01)  \"context\" $` |\n\n### Images\n\n| Helper identifier                 | Description                                                                                                    | Expected Input                                                                                          |\n|-----------------------------------|----------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------|\n| `common.images.image`             | Return the proper and full image name                                                                          | `dict \"imageRoot\" .Values.path.to.the.image \"global\" $`, see [ImageRoot](#imageroot) for the structure. |\n| `common.images.pullSecrets`       | Return the proper Docker Image Registry Secret Names (deprecated: use common.images.renderPullSecrets instead) | `dict \"images\" (list .Values.path.to.the.image1, .Values.path.to.the.image2) \"global\" .Values.global`   |\n| `common.images.renderPullSecrets` | Return the proper Docker Image Registry Secret Names (evaluates values as templates)                           | `dict \"images\" (list .Values.path.to.the.image1, .Values.path.to.the.image2) \"context\" $`               |\n\n### Ingress\n\n| Helper identifier                         | Description                                                          | Expected Input                                                                                                                                                                   |\n|-------------------------------------------|----------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `common.ingress.backend`                  | Generate a proper Ingress backend entry depending on the API version | `dict \"serviceName\" \"foo\" \"servicePort\" \"bar\"`, see the [Ingress deprecation notice](https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16/) for the syntax differences |\n| `common.ingress.supportsPathType`         | Prints \"true\" if the pathType field is supported                     | `.` Chart context                                                                                                                                                                |\n| `common.ingress.supportsIngressClassname` | Prints \"true\" if the ingressClassname field is supported             | `.` Chart context                                                                                                                                                                |\n\n### Labels\n\n| Helper identifier           | Description                                          | Expected Input    |\n|-----------------------------|------------------------------------------------------|-------------------|\n| `common.labels.standard`    | Return Kubernetes standard labels                    | `.` Chart context |\n| `common.labels.matchLabels` | Return the proper Docker Image Registry Secret Names | `.` Chart context |\n\n### Names\n\n| Helper identifier       | Description                                                | Expected Inpput   |\n|-------------------------|------------------------------------------------------------|-------------------|\n| `common.names.name`     | Expand the name of the chart or use `.Values.nameOverride` | `.` Chart context |\n| `common.names.fullname` | Create a default fully qualified app name.                 | `.` Chart context |\n| `common.names.chart`    | Chart name plus version                                    | `.` Chart context |\n\n### Secrets\n\n| Helper identifier         | Description                                                  | Expected Input                                                                                                                                                                                                                  |\n|---------------------------|--------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `common.secrets.name`     | Generate the name of the secret.                             | `dict \"existingSecret\" .Values.path.to.the.existingSecret \"defaultNameSuffix\" \"mySuffix\" \"context\" $` see [ExistingSecret](#existingsecret) for the structure.                                                                  |\n| `common.secrets.key`      | Generate secret key.                                         | `dict \"existingSecret\" .Values.path.to.the.existingSecret \"key\" \"keyName\"` see [ExistingSecret](#existingsecret) for the structure.                                                                                             |\n| `common.passwords.manage` | Generate secret password or retrieve one if already created. | `dict \"secret\" \"secret-name\" \"key\" \"keyName\" \"providedValues\" (list \"path.to.password1\" \"path.to.password2\") \"length\" 10 \"strong\" false \"chartName\" \"chartName\" \"context\" $`, length, strong and chartNAme fields are optional. |\n| `common.secrets.exists`   | Returns whether a previous generated secret already exists.  | `dict \"secret\" \"secret-name\" \"context\" $`                                                                                                                                                                                       |\n\n### Storage\n\n| Helper identifier             | Description                           | Expected Input                                                                                                      |\n|-------------------------------|---------------------------------------|---------------------------------------------------------------------------------------------------------------------|\n| `common.affinities.node.soft` | Return a soft nodeAffinity definition | `dict \"persistence\" .Values.path.to.the.persistence \"global\" $`, see [Persistence](#persistence) for the structure. |\n\n### TplValues\n\n| Helper identifier         | Description                            | Expected Input                                                                                                                                           |\n|---------------------------|----------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `common.tplvalues.render` | Renders a value that contains template | `dict \"value\" .Values.path.to.the.Value \"context\" $`, value is the value should rendered as template, context frequently is the chart context `$` or `.` |\n\n### Utils\n\n| Helper identifier              | Description                                                                              | Expected Input                                                         |\n|--------------------------------|------------------------------------------------------------------------------------------|------------------------------------------------------------------------|\n| `common.utils.fieldToEnvVar`   | Build environment variable name given a field.                                           | `dict \"field\" \"my-password\"`                                           |\n| `common.utils.secret.getvalue` | Print instructions to get a secret value.                                                | `dict \"secret\" \"secret-name\" \"field\" \"secret-value-field\" \"context\" $` |\n| `common.utils.getValueFromKey` | Gets a value from `.Values` object given its key path                                    | `dict \"key\" \"path.to.key\" \"context\" $`                                 |\n| `common.utils.getKeyFromList`  | Returns first `.Values` key with a defined value or first of the list if all non-defined | `dict \"keys\" (list \"path.to.key1\" \"path.to.key2\") \"context\" $`         |\n\n### Validations\n\n| Helper identifier                                | Description                                                                                                             | Expected Input                                                                                                                                                                                                                                                           |\n|--------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `common.validations.values.single.empty`         | Validate a value must not be empty.                                                                                     | `dict \"valueKey\" \"path.to.value\" \"secret\" \"secret.name\" \"field\" \"my-password\" \"subchart\" \"subchart\" \"context\" $` secret, field and subchart are optional. In case they are given, the helper will generate a how to get instruction. See [ValidateValue](#validatevalue) |\n| `common.validations.values.multiple.empty`       | Validate a multiple values must not be empty. It returns a shared error for all the values.                             | `dict \"required\" (list $validateValueConf00 $validateValueConf01) \"context\" $`. See [ValidateValue](#validatevalue)                                                                                                                                                      |\n| `common.validations.values.mariadb.passwords`    | This helper will ensure required password for MariaDB are not empty. It returns a shared error for all the values.      | `dict \"secret\" \"mariadb-secret\" \"subchart\" \"true\" \"context\" $` subchart field is optional and could be true or false it depends on where you will use mariadb chart and the helper.                                                                                      |\n| `common.validations.values.postgresql.passwords` | This helper will ensure required password for PostgreSQL are not empty. It returns a shared error for all the values.   | `dict \"secret\" \"postgresql-secret\" \"subchart\" \"true\" \"context\" $` subchart field is optional and could be true or false it depends on where you will use postgresql chart and the helper.                                                                                |\n| `common.validations.values.redis.passwords`      | This helper will ensure required password for Redis&trade; are not empty. It returns a shared error for all the values. | `dict \"secret\" \"redis-secret\" \"subchart\" \"true\" \"context\" $` subchart field is optional and could be true or false it depends on where you will use redis chart and the helper.                                                                                          |\n| `common.validations.values.cassandra.passwords`  | This helper will ensure required password for Cassandra are not empty. It returns a shared error for all the values.    | `dict \"secret\" \"cassandra-secret\" \"subchart\" \"true\" \"context\" $` subchart field is optional and could be true or false it depends on where you will use cassandra chart and the helper.                                                                                  |\n| `common.validations.values.mongodb.passwords`    | This helper will ensure required password for MongoDB&reg; are not empty. It returns a shared error for all the values. | `dict \"secret\" \"mongodb-secret\" \"subchart\" \"true\" \"context\" $` subchart field is optional and could be true or false it depends on where you will use mongodb chart and the helper.                                                                                      |\n\n### Warnings\n\n| Helper identifier            | Description                      | Expected Input                                             |\n|------------------------------|----------------------------------|------------------------------------------------------------|\n| `common.warnings.rollingTag` | Warning about using rolling tag. | `ImageRoot` see [ImageRoot](#imageroot) for the structure. |\n\n## Special input schemas\n\n### ImageRoot\n\n```yaml\nregistry:\n  type: string\n  description: Docker registry where the image is located\n  example: docker.io\n\nrepository:\n  type: string\n  description: Repository and image name\n  example: bitnami/nginx\n\ntag:\n  type: string\n  description: image tag\n  example: 1.16.1-debian-10-r63\n\npullPolicy:\n  type: string\n  description: Specify a imagePullPolicy. Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'\n\npullSecrets:\n  type: array\n  items:\n    type: string\n  description: Optionally specify an array of imagePullSecrets (evaluated as templates).\n\ndebug:\n  type: boolean\n  description: Set to true if you would like to see extra information on logs\n  example: false\n\n## An instance would be:\n# registry: docker.io\n# repository: bitnami/nginx\n# tag: 1.16.1-debian-10-r63\n# pullPolicy: IfNotPresent\n# debug: false\n```\n\n### Persistence\n\n```yaml\nenabled:\n  type: boolean\n  description: Whether enable persistence.\n  example: true\n\nstorageClass:\n  type: string\n  description: Ghost data Persistent Volume Storage Class, If set to \"-\", storageClassName: \"\" which disables dynamic provisioning.\n  example: \"-\"\n\naccessMode:\n  type: string\n  description: Access mode for the Persistent Volume Storage.\n  example: ReadWriteOnce\n\nsize:\n  type: string\n  description: Size the Persistent Volume Storage.\n  example: 8Gi\n\npath:\n  type: string\n  description: Path to be persisted.\n  example: /bitnami\n\n## An instance would be:\n# enabled: true\n# storageClass: \"-\"\n# accessMode: ReadWriteOnce\n# size: 8Gi\n# path: /bitnami\n```\n\n### ExistingSecret\n\n```yaml\nname:\n  type: string\n  description: Name of the existing secret.\n  example: mySecret\nkeyMapping:\n  description: Mapping between the expected key name and the name of the key in the existing secret.\n  type: object\n\n## An instance would be:\n# name: mySecret\n# keyMapping:\n#   password: myPasswordKey\n```\n\n#### Example of use\n\nWhen we store sensitive data for a deployment in a secret, some times we want to give to users the possibility of using theirs existing secrets.\n\n```yaml\n# templates/secret.yaml\n---\napiVersion: v1\nkind: Secret\nmetadata:\n  name: {{ include \"common.names.fullname\" . }}\n  labels:\n    app: {{ include \"common.names.fullname\" . }}\ntype: Opaque\ndata:\n  password: {{ .Values.password | b64enc | quote }}\n\n# templates/dpl.yaml\n---\n...\n      env:\n        - name: PASSWORD\n          valueFrom:\n            secretKeyRef:\n              name: {{ include \"common.secrets.name\" (dict \"existingSecret\" .Values.existingSecret \"context\" $) }}\n              key: {{ include \"common.secrets.key\" (dict \"existingSecret\" .Values.existingSecret \"key\" \"password\") }}\n...\n\n# values.yaml\n---\nname: mySecret\nkeyMapping:\n  password: myPasswordKey\n```\n\n### ValidateValue\n\n#### NOTES.txt\n\n```console\n{{- $validateValueConf00 := (dict \"valueKey\" \"path.to.value00\" \"secret\" \"secretName\" \"field\" \"password-00\") -}}\n{{- $validateValueConf01 := (dict \"valueKey\" \"path.to.value01\" \"secret\" \"secretName\" \"field\" \"password-01\") -}}\n\n{{ include \"common.validations.values.multiple.empty\" (dict \"required\" (list $validateValueConf00 $validateValueConf01) \"context\" $) }}\n```\n\nIf we force those values to be empty we will see some alerts\n\n```console\n$ helm install test mychart --set path.to.value00=\"\",path.to.value01=\"\"\n    'path.to.value00' must not be empty, please add '--set path.to.value00=$PASSWORD_00' to the command. To get the current value:\n\n        export PASSWORD_00=$(kubectl get secret --namespace default secretName -o jsonpath=\"{.data.password-00}\" | base64 --decode)\n\n    'path.to.value01' must not be empty, please add '--set path.to.value01=$PASSWORD_01' to the command. To get the current value:\n\n        export PASSWORD_01=$(kubectl get secret --namespace default secretName -o jsonpath=\"{.data.password-01}\" | base64 --decode)\n```\n\n## Upgrading\n\n### To 1.0.0\n\n[On November 13, 2020, Helm v2 support was formally finished](https://github.com/helm/charts#status-of-the-project), this major version is the result of the required changes applied to the Helm Chart to be able to incorporate the different features added in Helm v3 and to be consistent with the Helm project itself regarding the Helm v2 EOL.\n\n**What changes were introduced in this major version?**\n\n- Previous versions of this Helm Chart use `apiVersion: v1` (installable by both Helm 2 and 3), this Helm Chart was updated to `apiVersion: v2` (installable by Helm 3 only). [Here](https://helm.sh/docs/topics/charts/#the-apiversion-field) you can find more information about the `apiVersion` field.\n- Use `type: library`. [Here](https://v3.helm.sh/docs/faq/#library-chart-support) you can find more information.\n- The different fields present in the *Chart.yaml* file has been ordered alphabetically in a homogeneous way for all the Bitnami Helm Charts\n\n**Considerations when upgrading to this version**\n\n- If you want to upgrade to this version from a previous one installed with Helm v3, you shouldn't face any issues\n- If you want to upgrade to this version using Helm v2, this scenario is not supported as this version doesn't support Helm v2 anymore\n- If you installed the previous version with Helm v2 and wants to upgrade to this version with Helm v3, please refer to the [official Helm documentation](https://helm.sh/docs/topics/v2_v3_migration/#migration-use-cases) about migrating from Helm v2 to v3\n\n**Useful links**\n\n- https://docs.bitnami.com/tutorials/resolve-helm2-helm3-post-migration-issues/\n- https://helm.sh/docs/topics/v2_v3_migration/\n- https://helm.sh/blog/migrate-from-helm-v2-to-helm-v3/\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/charts/common/templates/_affinities.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n\n{{/*\nReturn a soft nodeAffinity definition \n{{ include \"common.affinities.nodes.soft\" (dict \"key\" \"FOO\" \"values\" (list \"BAR\" \"BAZ\")) -}}\n*/}}\n{{- define \"common.affinities.nodes.soft\" -}}\npreferredDuringSchedulingIgnoredDuringExecution:\n  - preference:\n      matchExpressions:\n        - key: {{ .key }}\n          operator: In\n          values:\n            {{- range .values }}\n            - {{ . | quote }}\n            {{- end }}\n    weight: 1\n{{- end -}}\n\n{{/*\nReturn a hard nodeAffinity definition\n{{ include \"common.affinities.nodes.hard\" (dict \"key\" \"FOO\" \"values\" (list \"BAR\" \"BAZ\")) -}}\n*/}}\n{{- define \"common.affinities.nodes.hard\" -}}\nrequiredDuringSchedulingIgnoredDuringExecution:\n  nodeSelectorTerms:\n    - matchExpressions:\n        - key: {{ .key }}\n          operator: In\n          values:\n            {{- range .values }}\n            - {{ . | quote }}\n            {{- end }}\n{{- end -}}\n\n{{/*\nReturn a nodeAffinity definition\n{{ include \"common.affinities.nodes\" (dict \"type\" \"soft\" \"key\" \"FOO\" \"values\" (list \"BAR\" \"BAZ\")) -}}\n*/}}\n{{- define \"common.affinities.nodes\" -}}\n  {{- if eq .type \"soft\" }}\n    {{- include \"common.affinities.nodes.soft\" . -}}\n  {{- else if eq .type \"hard\" }}\n    {{- include \"common.affinities.nodes.hard\" . -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nReturn a soft podAffinity/podAntiAffinity definition\n{{ include \"common.affinities.pods.soft\" (dict \"component\" \"FOO\" \"extraMatchLabels\" .Values.extraMatchLabels \"context\" $) -}}\n*/}}\n{{- define \"common.affinities.pods.soft\" -}}\n{{- $component := default \"\" .component -}}\n{{- $extraMatchLabels := default (dict) .extraMatchLabels -}}\npreferredDuringSchedulingIgnoredDuringExecution:\n  - podAffinityTerm:\n      labelSelector:\n        matchLabels: {{- (include \"common.labels.matchLabels\" .context) | nindent 10 }}\n          {{- if not (empty $component) }}\n          {{ printf \"app.kubernetes.io/component: %s\" $component }}\n          {{- end }}\n          {{- range $key, $value := $extraMatchLabels }}\n          {{ $key }}: {{ $value | quote }}\n          {{- end }}\n      namespaces:\n        - {{ .context.Release.Namespace | quote }}\n      topologyKey: kubernetes.io/hostname\n    weight: 1\n{{- end -}}\n\n{{/*\nReturn a hard podAffinity/podAntiAffinity definition\n{{ include \"common.affinities.pods.hard\" (dict \"component\" \"FOO\" \"extraMatchLabels\" .Values.extraMatchLabels \"context\" $) -}}\n*/}}\n{{- define \"common.affinities.pods.hard\" -}}\n{{- $component := default \"\" .component -}}\n{{- $extraMatchLabels := default (dict) .extraMatchLabels -}}\nrequiredDuringSchedulingIgnoredDuringExecution:\n  - labelSelector:\n      matchLabels: {{- (include \"common.labels.matchLabels\" .context) | nindent 8 }}\n        {{- if not (empty $component) }}\n        {{ printf \"app.kubernetes.io/component: %s\" $component }}\n        {{- end }}\n        {{- range $key, $value := $extraMatchLabels }}\n        {{ $key }}: {{ $value | quote }}\n        {{- end }}\n    namespaces:\n      - {{ .context.Release.Namespace | quote }}\n    topologyKey: kubernetes.io/hostname\n{{- end -}}\n\n{{/*\nReturn a podAffinity/podAntiAffinity definition\n{{ include \"common.affinities.pods\" (dict \"type\" \"soft\" \"key\" \"FOO\" \"values\" (list \"BAR\" \"BAZ\")) -}}\n*/}}\n{{- define \"common.affinities.pods\" -}}\n  {{- if eq .type \"soft\" }}\n    {{- include \"common.affinities.pods.soft\" . -}}\n  {{- else if eq .type \"hard\" }}\n    {{- include \"common.affinities.pods.hard\" . -}}\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/charts/common/templates/_capabilities.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n\n{{/*\nReturn the target Kubernetes version\n*/}}\n{{- define \"common.capabilities.kubeVersion\" -}}\n{{- if .Values.global }}\n    {{- if .Values.global.kubeVersion }}\n    {{- .Values.global.kubeVersion -}}\n    {{- else }}\n    {{- default .Capabilities.KubeVersion.Version .Values.kubeVersion -}}\n    {{- end -}}\n{{- else }}\n{{- default .Capabilities.KubeVersion.Version .Values.kubeVersion -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for policy.\n*/}}\n{{- define \"common.capabilities.policy.apiVersion\" -}}\n{{- if semverCompare \"<1.21-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"policy/v1beta1\" -}}\n{{- else -}}\n{{- print \"policy/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for deployment.\n*/}}\n{{- define \"common.capabilities.deployment.apiVersion\" -}}\n{{- if semverCompare \"<1.14-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"extensions/v1beta1\" -}}\n{{- else -}}\n{{- print \"apps/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for statefulset.\n*/}}\n{{- define \"common.capabilities.statefulset.apiVersion\" -}}\n{{- if semverCompare \"<1.14-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"apps/v1beta1\" -}}\n{{- else -}}\n{{- print \"apps/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for ingress.\n*/}}\n{{- define \"common.capabilities.ingress.apiVersion\" -}}\n{{- if .Values.ingress -}}\n{{- if .Values.ingress.apiVersion -}}\n{{- .Values.ingress.apiVersion -}}\n{{- else if semverCompare \"<1.14-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"extensions/v1beta1\" -}}\n{{- else if semverCompare \"<1.19-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"networking.k8s.io/v1beta1\" -}}\n{{- else -}}\n{{- print \"networking.k8s.io/v1\" -}}\n{{- end }}\n{{- else if semverCompare \"<1.14-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"extensions/v1beta1\" -}}\n{{- else if semverCompare \"<1.19-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"networking.k8s.io/v1beta1\" -}}\n{{- else -}}\n{{- print \"networking.k8s.io/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for RBAC resources.\n*/}}\n{{- define \"common.capabilities.rbac.apiVersion\" -}}\n{{- if semverCompare \"<1.17-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"rbac.authorization.k8s.io/v1beta1\" -}}\n{{- else -}}\n{{- print \"rbac.authorization.k8s.io/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for CRDs.\n*/}}\n{{- define \"common.capabilities.crd.apiVersion\" -}}\n{{- if semverCompare \"<1.19-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"apiextensions.k8s.io/v1beta1\" -}}\n{{- else -}}\n{{- print \"apiextensions.k8s.io/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturns true if the used Helm version is 3.3+.\nA way to check the used Helm version was not introduced until version 3.3.0 with .Capabilities.HelmVersion, which contains an additional \"{}}\"  structure.\nThis check is introduced as a regexMatch instead of {{ if .Capabilities.HelmVersion }} because checking for the key HelmVersion in <3.3 results in a \"interface not found\" error.\n**To be removed when the catalog's minimun Helm version is 3.3**\n*/}}\n{{- define \"common.capabilities.supportsHelmVersion\" -}}\n{{- if regexMatch \"{(v[0-9])*[^}]*}}$\" (.Capabilities | toString ) }}\n  {{- true -}}\n{{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/charts/common/templates/_errors.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nThrough error when upgrading using empty passwords values that must not be empty.\n\nUsage:\n{{- $validationError00 := include \"common.validations.values.single.empty\" (dict \"valueKey\" \"path.to.password00\" \"secret\" \"secretName\" \"field\" \"password-00\") -}}\n{{- $validationError01 := include \"common.validations.values.single.empty\" (dict \"valueKey\" \"path.to.password01\" \"secret\" \"secretName\" \"field\" \"password-01\") -}}\n{{ include \"common.errors.upgrade.passwords.empty\" (dict \"validationErrors\" (list $validationError00 $validationError01) \"context\" $) }}\n\nRequired password params:\n  - validationErrors - String - Required. List of validation strings to be return, if it is empty it won't throw error.\n  - context - Context - Required. Parent context.\n*/}}\n{{- define \"common.errors.upgrade.passwords.empty\" -}}\n  {{- $validationErrors := join \"\" .validationErrors -}}\n  {{- if and $validationErrors .context.Release.IsUpgrade -}}\n    {{- $errorString := \"\\nPASSWORDS ERROR: You must provide your current passwords when upgrading the release.\" -}}\n    {{- $errorString = print $errorString \"\\n                 Note that even after reinstallation, old credentials may be needed as they may be kept in persistent volume claims.\" -}}\n    {{- $errorString = print $errorString \"\\n                 Further information can be obtained at https://docs.bitnami.com/general/how-to/troubleshoot-helm-chart-issues/#credential-errors-while-upgrading-chart-releases\" -}}\n    {{- $errorString = print $errorString \"\\n%s\" -}}\n    {{- printf $errorString $validationErrors | fail -}}\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/charts/common/templates/_images.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nReturn the proper image name\n{{ include \"common.images.image\" ( dict \"imageRoot\" .Values.path.to.the.image \"global\" $) }}\n*/}}\n{{- define \"common.images.image\" -}}\n{{- $registryName := .imageRoot.registry -}}\n{{- $repositoryName := .imageRoot.repository -}}\n{{- $tag := .imageRoot.tag | toString -}}\n{{- if .global }}\n    {{- if .global.imageRegistry }}\n     {{- $registryName = .global.imageRegistry -}}\n    {{- end -}}\n{{- end -}}\n{{- if $registryName }}\n{{- printf \"%s/%s:%s\" $registryName $repositoryName $tag -}}\n{{- else -}}\n{{- printf \"%s:%s\" $repositoryName $tag -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the proper Docker Image Registry Secret Names (deprecated: use common.images.renderPullSecrets instead)\n{{ include \"common.images.pullSecrets\" ( dict \"images\" (list .Values.path.to.the.image1, .Values.path.to.the.image2) \"global\" .Values.global) }}\n*/}}\n{{- define \"common.images.pullSecrets\" -}}\n  {{- $pullSecrets := list }}\n\n  {{- if .global }}\n    {{- range .global.imagePullSecrets -}}\n      {{- $pullSecrets = append $pullSecrets . -}}\n    {{- end -}}\n  {{- end -}}\n\n  {{- range .images -}}\n    {{- range .pullSecrets -}}\n      {{- $pullSecrets = append $pullSecrets . -}}\n    {{- end -}}\n  {{- end -}}\n\n  {{- if (not (empty $pullSecrets)) }}\nimagePullSecrets:\n    {{- range $pullSecrets }}\n  - name: {{ . }}\n    {{- end }}\n  {{- end }}\n{{- end -}}\n\n{{/*\nReturn the proper Docker Image Registry Secret Names evaluating values as templates\n{{ include \"common.images.renderPullSecrets\" ( dict \"images\" (list .Values.path.to.the.image1, .Values.path.to.the.image2) \"context\" $) }}\n*/}}\n{{- define \"common.images.renderPullSecrets\" -}}\n  {{- $pullSecrets := list }}\n  {{- $context := .context }}\n\n  {{- if $context.Values.global }}\n    {{- range $context.Values.global.imagePullSecrets -}}\n      {{- $pullSecrets = append $pullSecrets (include \"common.tplvalues.render\" (dict \"value\" . \"context\" $context)) -}}\n    {{- end -}}\n  {{- end -}}\n\n  {{- range .images -}}\n    {{- range .pullSecrets -}}\n      {{- $pullSecrets = append $pullSecrets (include \"common.tplvalues.render\" (dict \"value\" . \"context\" $context)) -}}\n    {{- end -}}\n  {{- end -}}\n\n  {{- if (not (empty $pullSecrets)) }}\nimagePullSecrets:\n    {{- range $pullSecrets }}\n  - name: {{ . }}\n    {{- end }}\n  {{- end }}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/charts/common/templates/_ingress.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n\n{{/*\nGenerate backend entry that is compatible with all Kubernetes API versions.\n\nUsage:\n{{ include \"common.ingress.backend\" (dict \"serviceName\" \"backendName\" \"servicePort\" \"backendPort\" \"context\" $) }}\n\nParams:\n  - serviceName - String. Name of an existing service backend\n  - servicePort - String/Int. Port name (or number) of the service. It will be translated to different yaml depending if it is a string or an integer.\n  - context - Dict - Required. The context for the template evaluation.\n*/}}\n{{- define \"common.ingress.backend\" -}}\n{{- $apiVersion := (include \"common.capabilities.ingress.apiVersion\" .context) -}}\n{{- if or (eq $apiVersion \"extensions/v1beta1\") (eq $apiVersion \"networking.k8s.io/v1beta1\") -}}\nserviceName: {{ .serviceName }}\nservicePort: {{ .servicePort }}\n{{- else -}}\nservice:\n  name: {{ .serviceName }}\n  port:\n    {{- if typeIs \"string\" .servicePort }}\n    name: {{ .servicePort }}\n    {{- else if or (typeIs \"int\" .servicePort) (typeIs \"float64\" .servicePort) }}\n    number: {{ .servicePort | int }}\n    {{- end }}\n{{- end -}}\n{{- end -}}\n\n{{/*\nPrint \"true\" if the API pathType field is supported\nUsage:\n{{ include \"common.ingress.supportsPathType\" . }}\n*/}}\n{{- define \"common.ingress.supportsPathType\" -}}\n{{- if (semverCompare \"<1.18-0\" (include \"common.capabilities.kubeVersion\" .)) -}}\n{{- print \"false\" -}}\n{{- else -}}\n{{- print \"true\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturns true if the ingressClassname field is supported\nUsage:\n{{ include \"common.ingress.supportsIngressClassname\" . }}\n*/}}\n{{- define \"common.ingress.supportsIngressClassname\" -}}\n{{- if semverCompare \"<1.18-0\" (include \"common.capabilities.kubeVersion\" .) -}}\n{{- print \"false\" -}}\n{{- else -}}\n{{- print \"true\" -}}\n{{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/charts/common/templates/_labels.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nKubernetes standard labels\n*/}}\n{{- define \"common.labels.standard\" -}}\napp.kubernetes.io/name: {{ include \"common.names.name\" . }}\nhelm.sh/chart: {{ include \"common.names.chart\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\n{{- end -}}\n\n{{/*\nLabels to use on deploy.spec.selector.matchLabels and svc.spec.selector\n*/}}\n{{- define \"common.labels.matchLabels\" -}}\napp.kubernetes.io/name: {{ include \"common.names.name\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/charts/common/templates/_names.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"common.names.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"common.names.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"common.names.fullname\" -}}\n{{- if .Values.fullnameOverride -}}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" -}}\n{{- else -}}\n{{- $name := default .Chart.Name .Values.nameOverride -}}\n{{- if contains $name .Release.Name -}}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" -}}\n{{- else -}}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n{{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/charts/common/templates/_secrets.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nGenerate secret name.\n\nUsage:\n{{ include \"common.secrets.name\" (dict \"existingSecret\" .Values.path.to.the.existingSecret \"defaultNameSuffix\" \"mySuffix\" \"context\" $) }}\n\nParams:\n  - existingSecret - ExistingSecret/String - Optional. The path to the existing secrets in the values.yaml given by the user\n    to be used instead of the default one. Allows for it to be of type String (just the secret name) for backwards compatibility.\n    +info: https://github.com/bitnami/charts/tree/master/bitnami/common#existingsecret\n  - defaultNameSuffix - String - Optional. It is used only if we have several secrets in the same deployment.\n  - context - Dict - Required. The context for the template evaluation.\n*/}}\n{{- define \"common.secrets.name\" -}}\n{{- $name := (include \"common.names.fullname\" .context) -}}\n\n{{- if .defaultNameSuffix -}}\n{{- $name = printf \"%s-%s\" $name .defaultNameSuffix | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n\n{{- with .existingSecret -}}\n{{- if not (typeIs \"string\" .) -}}\n{{- with .name -}}\n{{- $name = . -}}\n{{- end -}}\n{{- else -}}\n{{- $name = . -}}\n{{- end -}}\n{{- end -}}\n\n{{- printf \"%s\" $name -}}\n{{- end -}}\n\n{{/*\nGenerate secret key.\n\nUsage:\n{{ include \"common.secrets.key\" (dict \"existingSecret\" .Values.path.to.the.existingSecret \"key\" \"keyName\") }}\n\nParams:\n  - existingSecret - ExistingSecret/String - Optional. The path to the existing secrets in the values.yaml given by the user\n    to be used instead of the default one. Allows for it to be of type String (just the secret name) for backwards compatibility.\n    +info: https://github.com/bitnami/charts/tree/master/bitnami/common#existingsecret\n  - key - String - Required. Name of the key in the secret.\n*/}}\n{{- define \"common.secrets.key\" -}}\n{{- $key := .key -}}\n\n{{- if .existingSecret -}}\n  {{- if not (typeIs \"string\" .existingSecret) -}}\n    {{- if .existingSecret.keyMapping -}}\n      {{- $key = index .existingSecret.keyMapping $.key -}}\n    {{- end -}}\n  {{- end }}\n{{- end -}}\n\n{{- printf \"%s\" $key -}}\n{{- end -}}\n\n{{/*\nGenerate secret password or retrieve one if already created.\n\nUsage:\n{{ include \"common.secrets.passwords.manage\" (dict \"secret\" \"secret-name\" \"key\" \"keyName\" \"providedValues\" (list \"path.to.password1\" \"path.to.password2\") \"length\" 10 \"strong\" false \"chartName\" \"chartName\" \"context\" $) }}\n\nParams:\n  - secret - String - Required - Name of the 'Secret' resource where the password is stored.\n  - key - String - Required - Name of the key in the secret.\n  - providedValues - List<String> - Required - The path to the validating value in the values.yaml, e.g: \"mysql.password\". Will pick first parameter with a defined value.\n  - length - int - Optional - Length of the generated random password.\n  - strong - Boolean - Optional - Whether to add symbols to the generated random password.\n  - chartName - String - Optional - Name of the chart used when said chart is deployed as a subchart.\n  - context - Context - Required - Parent context.\n*/}}\n{{- define \"common.secrets.passwords.manage\" -}}\n\n{{- $password := \"\" }}\n{{- $subchart := \"\" }}\n{{- $chartName := default \"\" .chartName }}\n{{- $passwordLength := default 10 .length }}\n{{- $providedPasswordKey := include \"common.utils.getKeyFromList\" (dict \"keys\" .providedValues \"context\" $.context) }}\n{{- $providedPasswordValue := include \"common.utils.getValueFromKey\" (dict \"key\" $providedPasswordKey \"context\" $.context) }}\n{{- $secret := (lookup \"v1\" \"Secret\" $.context.Release.Namespace .secret) }}\n{{- if $secret }}\n  {{- if index $secret.data .key }}\n  {{- $password = index $secret.data .key }}\n  {{- end -}}\n{{- else if $providedPasswordValue }}\n  {{- $password = $providedPasswordValue | toString | b64enc | quote }}\n{{- else }}\n\n  {{- if .context.Values.enabled }}\n    {{- $subchart = $chartName }}\n  {{- end -}}\n\n  {{- $requiredPassword := dict \"valueKey\" $providedPasswordKey \"secret\" .secret \"field\" .key \"subchart\" $subchart \"context\" $.context -}}\n  {{- $requiredPasswordError := include \"common.validations.values.single.empty\" $requiredPassword -}}\n  {{- $passwordValidationErrors := list $requiredPasswordError -}}\n  {{- include \"common.errors.upgrade.passwords.empty\" (dict \"validationErrors\" $passwordValidationErrors \"context\" $.context) -}}\n  \n  {{- if .strong }}\n    {{- $subStr := list (lower (randAlpha 1)) (randNumeric 1) (upper (randAlpha 1)) | join \"_\" }}\n    {{- $password = randAscii $passwordLength }}\n    {{- $password = regexReplaceAllLiteral \"\\\\W\" $password \"@\" | substr 5 $passwordLength }}\n    {{- $password = printf \"%s%s\" $subStr $password | toString | shuffle | b64enc | quote }}\n  {{- else }}\n    {{- $password = randAlphaNum $passwordLength | b64enc | quote }}\n  {{- end }}\n{{- end -}}\n{{- printf \"%s\" $password -}}\n{{- end -}}\n\n{{/*\nReturns whether a previous generated secret already exists\n\nUsage:\n{{ include \"common.secrets.exists\" (dict \"secret\" \"secret-name\" \"context\" $) }}\n\nParams:\n  - secret - String - Required - Name of the 'Secret' resource where the password is stored.\n  - context - Context - Required - Parent context.\n*/}}\n{{- define \"common.secrets.exists\" -}}\n{{- $secret := (lookup \"v1\" \"Secret\" $.context.Release.Namespace .secret) }}\n{{- if $secret }}\n  {{- true -}}\n{{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/charts/common/templates/_storage.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nReturn  the proper Storage Class\n{{ include \"common.storage.class\" ( dict \"persistence\" .Values.path.to.the.persistence \"global\" $) }}\n*/}}\n{{- define \"common.storage.class\" -}}\n\n{{- $storageClass := .persistence.storageClass -}}\n{{- if .global -}}\n    {{- if .global.storageClass -}}\n        {{- $storageClass = .global.storageClass -}}\n    {{- end -}}\n{{- end -}}\n\n{{- if $storageClass -}}\n  {{- if (eq \"-\" $storageClass) -}}\n      {{- printf \"storageClassName: \\\"\\\"\" -}}\n  {{- else }}\n      {{- printf \"storageClassName: %s\" $storageClass -}}\n  {{- end -}}\n{{- end -}}\n\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/charts/common/templates/_tplvalues.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nRenders a value that contains template.\nUsage:\n{{ include \"common.tplvalues.render\" ( dict \"value\" .Values.path.to.the.Value \"context\" $) }}\n*/}}\n{{- define \"common.tplvalues.render\" -}}\n    {{- if typeIs \"string\" .value }}\n        {{- tpl .value .context }}\n    {{- else }}\n        {{- tpl (.value | toYaml) .context }}\n    {{- end }}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/charts/common/templates/_utils.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nPrint instructions to get a secret value.\nUsage:\n{{ include \"common.utils.secret.getvalue\" (dict \"secret\" \"secret-name\" \"field\" \"secret-value-field\" \"context\" $) }}\n*/}}\n{{- define \"common.utils.secret.getvalue\" -}}\n{{- $varname := include \"common.utils.fieldToEnvVar\" . -}}\nexport {{ $varname }}=$(kubectl get secret --namespace {{ .context.Release.Namespace | quote }} {{ .secret }} -o jsonpath=\"{.data.{{ .field }}}\" | base64 --decode)\n{{- end -}}\n\n{{/*\nBuild env var name given a field\nUsage:\n{{ include \"common.utils.fieldToEnvVar\" dict \"field\" \"my-password\" }}\n*/}}\n{{- define \"common.utils.fieldToEnvVar\" -}}\n  {{- $fieldNameSplit := splitList \"-\" .field -}}\n  {{- $upperCaseFieldNameSplit := list -}}\n\n  {{- range $fieldNameSplit -}}\n    {{- $upperCaseFieldNameSplit = append $upperCaseFieldNameSplit ( upper . ) -}}\n  {{- end -}}\n\n  {{ join \"_\" $upperCaseFieldNameSplit }}\n{{- end -}}\n\n{{/*\nGets a value from .Values given\nUsage:\n{{ include \"common.utils.getValueFromKey\" (dict \"key\" \"path.to.key\" \"context\" $) }}\n*/}}\n{{- define \"common.utils.getValueFromKey\" -}}\n{{- $splitKey := splitList \".\" .key -}}\n{{- $value := \"\" -}}\n{{- $latestObj := $.context.Values -}}\n{{- range $splitKey -}}\n  {{- if not $latestObj -}}\n    {{- printf \"please review the entire path of '%s' exists in values\" $.key | fail -}}\n  {{- end -}}\n  {{- $value = ( index $latestObj . ) -}}\n  {{- $latestObj = $value -}}\n{{- end -}}\n{{- printf \"%v\" (default \"\" $value) -}} \n{{- end -}}\n\n{{/*\nReturns first .Values key with a defined value or first of the list if all non-defined\nUsage:\n{{ include \"common.utils.getKeyFromList\" (dict \"keys\" (list \"path.to.key1\" \"path.to.key2\") \"context\" $) }}\n*/}}\n{{- define \"common.utils.getKeyFromList\" -}}\n{{- $key := first .keys -}}\n{{- $reverseKeys := reverse .keys }}\n{{- range $reverseKeys }}\n  {{- $value := include \"common.utils.getValueFromKey\" (dict \"key\" . \"context\" $.context ) }}\n  {{- if $value -}}\n    {{- $key = . }}\n  {{- end -}}\n{{- end -}}\n{{- printf \"%s\" $key -}} \n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/charts/common/templates/_warnings.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nWarning about using rolling tag.\nUsage:\n{{ include \"common.warnings.rollingTag\" .Values.path.to.the.imageRoot }}\n*/}}\n{{- define \"common.warnings.rollingTag\" -}}\n\n{{- if and (contains \"bitnami/\" .repository) (not (.tag | toString | regexFind \"-r\\\\d+$|sha256:\")) }}\nWARNING: Rolling tag detected ({{ .repository }}:{{ .tag }}), please note that it is strongly recommended to avoid using rolling tags in a production environment.\n+info https://docs.bitnami.com/containers/how-to/understand-rolling-tags-containers/\n{{- end }}\n\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/charts/common/templates/validations/_cassandra.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nValidate Cassandra required passwords are not empty.\n\nUsage:\n{{ include \"common.validations.values.cassandra.passwords\" (dict \"secret\" \"secretName\" \"subchart\" false \"context\" $) }}\nParams:\n  - secret - String - Required. Name of the secret where Cassandra values are stored, e.g: \"cassandra-passwords-secret\"\n  - subchart - Boolean - Optional. Whether Cassandra is used as subchart or not. Default: false\n*/}}\n{{- define \"common.validations.values.cassandra.passwords\" -}}\n  {{- $existingSecret := include \"common.cassandra.values.existingSecret\" . -}}\n  {{- $enabled := include \"common.cassandra.values.enabled\" . -}}\n  {{- $dbUserPrefix := include \"common.cassandra.values.key.dbUser\" . -}}\n  {{- $valueKeyPassword := printf \"%s.password\" $dbUserPrefix -}}\n\n  {{- if and (not $existingSecret) (eq $enabled \"true\") -}}\n    {{- $requiredPasswords := list -}}\n\n    {{- $requiredPassword := dict \"valueKey\" $valueKeyPassword \"secret\" .secret \"field\" \"cassandra-password\" -}}\n    {{- $requiredPasswords = append $requiredPasswords $requiredPassword -}}\n\n    {{- include \"common.validations.values.multiple.empty\" (dict \"required\" $requiredPasswords \"context\" .context) -}}\n\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for existingSecret.\n\nUsage:\n{{ include \"common.cassandra.values.existingSecret\" (dict \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether Cassandra is used as subchart or not. Default: false\n*/}}\n{{- define \"common.cassandra.values.existingSecret\" -}}\n  {{- if .subchart -}}\n    {{- .context.Values.cassandra.dbUser.existingSecret | quote -}}\n  {{- else -}}\n    {{- .context.Values.dbUser.existingSecret | quote -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for enabled cassandra.\n\nUsage:\n{{ include \"common.cassandra.values.enabled\" (dict \"context\" $) }}\n*/}}\n{{- define \"common.cassandra.values.enabled\" -}}\n  {{- if .subchart -}}\n    {{- printf \"%v\" .context.Values.cassandra.enabled -}}\n  {{- else -}}\n    {{- printf \"%v\" (not .context.Values.enabled) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for the key dbUser\n\nUsage:\n{{ include \"common.cassandra.values.key.dbUser\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether Cassandra is used as subchart or not. Default: false\n*/}}\n{{- define \"common.cassandra.values.key.dbUser\" -}}\n  {{- if .subchart -}}\n    cassandra.dbUser\n  {{- else -}}\n    dbUser\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/charts/common/templates/validations/_mariadb.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nValidate MariaDB required passwords are not empty.\n\nUsage:\n{{ include \"common.validations.values.mariadb.passwords\" (dict \"secret\" \"secretName\" \"subchart\" false \"context\" $) }}\nParams:\n  - secret - String - Required. Name of the secret where MariaDB values are stored, e.g: \"mysql-passwords-secret\"\n  - subchart - Boolean - Optional. Whether MariaDB is used as subchart or not. Default: false\n*/}}\n{{- define \"common.validations.values.mariadb.passwords\" -}}\n  {{- $existingSecret := include \"common.mariadb.values.auth.existingSecret\" . -}}\n  {{- $enabled := include \"common.mariadb.values.enabled\" . -}}\n  {{- $architecture := include \"common.mariadb.values.architecture\" . -}}\n  {{- $authPrefix := include \"common.mariadb.values.key.auth\" . -}}\n  {{- $valueKeyRootPassword := printf \"%s.rootPassword\" $authPrefix -}}\n  {{- $valueKeyUsername := printf \"%s.username\" $authPrefix -}}\n  {{- $valueKeyPassword := printf \"%s.password\" $authPrefix -}}\n  {{- $valueKeyReplicationPassword := printf \"%s.replicationPassword\" $authPrefix -}}\n\n  {{- if and (not $existingSecret) (eq $enabled \"true\") -}}\n    {{- $requiredPasswords := list -}}\n\n    {{- $requiredRootPassword := dict \"valueKey\" $valueKeyRootPassword \"secret\" .secret \"field\" \"mariadb-root-password\" -}}\n    {{- $requiredPasswords = append $requiredPasswords $requiredRootPassword -}}\n\n    {{- $valueUsername := include \"common.utils.getValueFromKey\" (dict \"key\" $valueKeyUsername \"context\" .context) }}\n    {{- if not (empty $valueUsername) -}}\n        {{- $requiredPassword := dict \"valueKey\" $valueKeyPassword \"secret\" .secret \"field\" \"mariadb-password\" -}}\n        {{- $requiredPasswords = append $requiredPasswords $requiredPassword -}}\n    {{- end -}}\n\n    {{- if (eq $architecture \"replication\") -}}\n        {{- $requiredReplicationPassword := dict \"valueKey\" $valueKeyReplicationPassword \"secret\" .secret \"field\" \"mariadb-replication-password\" -}}\n        {{- $requiredPasswords = append $requiredPasswords $requiredReplicationPassword -}}\n    {{- end -}}\n\n    {{- include \"common.validations.values.multiple.empty\" (dict \"required\" $requiredPasswords \"context\" .context) -}}\n\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for existingSecret.\n\nUsage:\n{{ include \"common.mariadb.values.auth.existingSecret\" (dict \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MariaDB is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mariadb.values.auth.existingSecret\" -}}\n  {{- if .subchart -}}\n    {{- .context.Values.mariadb.auth.existingSecret | quote -}}\n  {{- else -}}\n    {{- .context.Values.auth.existingSecret | quote -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for enabled mariadb.\n\nUsage:\n{{ include \"common.mariadb.values.enabled\" (dict \"context\" $) }}\n*/}}\n{{- define \"common.mariadb.values.enabled\" -}}\n  {{- if .subchart -}}\n    {{- printf \"%v\" .context.Values.mariadb.enabled -}}\n  {{- else -}}\n    {{- printf \"%v\" (not .context.Values.enabled) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for architecture\n\nUsage:\n{{ include \"common.mariadb.values.architecture\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MariaDB is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mariadb.values.architecture\" -}}\n  {{- if .subchart -}}\n    {{- .context.Values.mariadb.architecture -}}\n  {{- else -}}\n    {{- .context.Values.architecture -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for the key auth\n\nUsage:\n{{ include \"common.mariadb.values.key.auth\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MariaDB is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mariadb.values.key.auth\" -}}\n  {{- if .subchart -}}\n    mariadb.auth\n  {{- else -}}\n    auth\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/charts/common/templates/validations/_mongodb.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nValidate MongoDB&reg; required passwords are not empty.\n\nUsage:\n{{ include \"common.validations.values.mongodb.passwords\" (dict \"secret\" \"secretName\" \"subchart\" false \"context\" $) }}\nParams:\n  - secret - String - Required. Name of the secret where MongoDB&reg; values are stored, e.g: \"mongodb-passwords-secret\"\n  - subchart - Boolean - Optional. Whether MongoDB&reg; is used as subchart or not. Default: false\n*/}}\n{{- define \"common.validations.values.mongodb.passwords\" -}}\n  {{- $existingSecret := include \"common.mongodb.values.auth.existingSecret\" . -}}\n  {{- $enabled := include \"common.mongodb.values.enabled\" . -}}\n  {{- $authPrefix := include \"common.mongodb.values.key.auth\" . -}}\n  {{- $architecture := include \"common.mongodb.values.architecture\" . -}}\n  {{- $valueKeyRootPassword := printf \"%s.rootPassword\" $authPrefix -}}\n  {{- $valueKeyUsername := printf \"%s.username\" $authPrefix -}}\n  {{- $valueKeyDatabase := printf \"%s.database\" $authPrefix -}}\n  {{- $valueKeyPassword := printf \"%s.password\" $authPrefix -}}\n  {{- $valueKeyReplicaSetKey := printf \"%s.replicaSetKey\" $authPrefix -}}\n  {{- $valueKeyAuthEnabled := printf \"%s.enabled\" $authPrefix -}}\n\n  {{- $authEnabled := include \"common.utils.getValueFromKey\" (dict \"key\" $valueKeyAuthEnabled \"context\" .context) -}}\n\n  {{- if and (not $existingSecret) (eq $enabled \"true\") (eq $authEnabled \"true\") -}}\n    {{- $requiredPasswords := list -}}\n\n    {{- $requiredRootPassword := dict \"valueKey\" $valueKeyRootPassword \"secret\" .secret \"field\" \"mongodb-root-password\" -}}\n    {{- $requiredPasswords = append $requiredPasswords $requiredRootPassword -}}\n\n    {{- $valueUsername := include \"common.utils.getValueFromKey\" (dict \"key\" $valueKeyUsername \"context\" .context) }}\n    {{- $valueDatabase := include \"common.utils.getValueFromKey\" (dict \"key\" $valueKeyDatabase \"context\" .context) }}\n    {{- if and $valueUsername $valueDatabase -}}\n        {{- $requiredPassword := dict \"valueKey\" $valueKeyPassword \"secret\" .secret \"field\" \"mongodb-password\" -}}\n        {{- $requiredPasswords = append $requiredPasswords $requiredPassword -}}\n    {{- end -}}\n\n    {{- if (eq $architecture \"replicaset\") -}}\n        {{- $requiredReplicaSetKey := dict \"valueKey\" $valueKeyReplicaSetKey \"secret\" .secret \"field\" \"mongodb-replica-set-key\" -}}\n        {{- $requiredPasswords = append $requiredPasswords $requiredReplicaSetKey -}}\n    {{- end -}}\n\n    {{- include \"common.validations.values.multiple.empty\" (dict \"required\" $requiredPasswords \"context\" .context) -}}\n\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for existingSecret.\n\nUsage:\n{{ include \"common.mongodb.values.auth.existingSecret\" (dict \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MongoDb is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mongodb.values.auth.existingSecret\" -}}\n  {{- if .subchart -}}\n    {{- .context.Values.mongodb.auth.existingSecret | quote -}}\n  {{- else -}}\n    {{- .context.Values.auth.existingSecret | quote -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for enabled mongodb.\n\nUsage:\n{{ include \"common.mongodb.values.enabled\" (dict \"context\" $) }}\n*/}}\n{{- define \"common.mongodb.values.enabled\" -}}\n  {{- if .subchart -}}\n    {{- printf \"%v\" .context.Values.mongodb.enabled -}}\n  {{- else -}}\n    {{- printf \"%v\" (not .context.Values.enabled) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for the key auth\n\nUsage:\n{{ include \"common.mongodb.values.key.auth\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MongoDB&reg; is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mongodb.values.key.auth\" -}}\n  {{- if .subchart -}}\n    mongodb.auth\n  {{- else -}}\n    auth\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for architecture\n\nUsage:\n{{ include \"common.mongodb.values.architecture\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether MariaDB is used as subchart or not. Default: false\n*/}}\n{{- define \"common.mongodb.values.architecture\" -}}\n  {{- if .subchart -}}\n    {{- .context.Values.mongodb.architecture -}}\n  {{- else -}}\n    {{- .context.Values.architecture -}}\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/charts/common/templates/validations/_postgresql.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nValidate PostgreSQL required passwords are not empty.\n\nUsage:\n{{ include \"common.validations.values.postgresql.passwords\" (dict \"secret\" \"secretName\" \"subchart\" false \"context\" $) }}\nParams:\n  - secret - String - Required. Name of the secret where postgresql values are stored, e.g: \"postgresql-passwords-secret\"\n  - subchart - Boolean - Optional. Whether postgresql is used as subchart or not. Default: false\n*/}}\n{{- define \"common.validations.values.postgresql.passwords\" -}}\n  {{- $existingSecret := include \"common.postgresql.values.existingSecret\" . -}}\n  {{- $enabled := include \"common.postgresql.values.enabled\" . -}}\n  {{- $valueKeyPostgresqlPassword := include \"common.postgresql.values.key.postgressPassword\" . -}}\n  {{- $valueKeyPostgresqlReplicationEnabled := include \"common.postgresql.values.key.replicationPassword\" . -}}\n\n  {{- if and (not $existingSecret) (eq $enabled \"true\") -}}\n    {{- $requiredPasswords := list -}}\n\n    {{- $requiredPostgresqlPassword := dict \"valueKey\" $valueKeyPostgresqlPassword \"secret\" .secret \"field\" \"postgresql-password\" -}}\n    {{- $requiredPasswords = append $requiredPasswords $requiredPostgresqlPassword -}}\n\n    {{- $enabledReplication := include \"common.postgresql.values.enabled.replication\" . -}}\n    {{- if (eq $enabledReplication \"true\") -}}\n        {{- $requiredPostgresqlReplicationPassword := dict \"valueKey\" $valueKeyPostgresqlReplicationEnabled \"secret\" .secret \"field\" \"postgresql-replication-password\" -}}\n        {{- $requiredPasswords = append $requiredPasswords $requiredPostgresqlReplicationPassword -}}\n    {{- end -}}\n\n    {{- include \"common.validations.values.multiple.empty\" (dict \"required\" $requiredPasswords \"context\" .context) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to decide whether evaluate global values.\n\nUsage:\n{{ include \"common.postgresql.values.use.global\" (dict \"key\" \"key-of-global\" \"context\" $) }}\nParams:\n  - key - String - Required. Field to be evaluated within global, e.g: \"existingSecret\"\n*/}}\n{{- define \"common.postgresql.values.use.global\" -}}\n  {{- if .context.Values.global -}}\n    {{- if .context.Values.global.postgresql -}}\n      {{- index .context.Values.global.postgresql .key | quote -}}\n    {{- end -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for existingSecret.\n\nUsage:\n{{ include \"common.postgresql.values.existingSecret\" (dict \"context\" $) }}\n*/}}\n{{- define \"common.postgresql.values.existingSecret\" -}}\n  {{- $globalValue := include \"common.postgresql.values.use.global\" (dict \"key\" \"existingSecret\" \"context\" .context) -}}\n\n  {{- if .subchart -}}\n    {{- default (.context.Values.postgresql.existingSecret | quote) $globalValue -}}\n  {{- else -}}\n    {{- default (.context.Values.existingSecret | quote) $globalValue -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for enabled postgresql.\n\nUsage:\n{{ include \"common.postgresql.values.enabled\" (dict \"context\" $) }}\n*/}}\n{{- define \"common.postgresql.values.enabled\" -}}\n  {{- if .subchart -}}\n    {{- printf \"%v\" .context.Values.postgresql.enabled -}}\n  {{- else -}}\n    {{- printf \"%v\" (not .context.Values.enabled) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for the key postgressPassword.\n\nUsage:\n{{ include \"common.postgresql.values.key.postgressPassword\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether postgresql is used as subchart or not. Default: false\n*/}}\n{{- define \"common.postgresql.values.key.postgressPassword\" -}}\n  {{- $globalValue := include \"common.postgresql.values.use.global\" (dict \"key\" \"postgresqlUsername\" \"context\" .context) -}}\n\n  {{- if not $globalValue -}}\n    {{- if .subchart -}}\n      postgresql.postgresqlPassword\n    {{- else -}}\n      postgresqlPassword\n    {{- end -}}\n  {{- else -}}\n    global.postgresql.postgresqlPassword\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for enabled.replication.\n\nUsage:\n{{ include \"common.postgresql.values.enabled.replication\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether postgresql is used as subchart or not. Default: false\n*/}}\n{{- define \"common.postgresql.values.enabled.replication\" -}}\n  {{- if .subchart -}}\n    {{- printf \"%v\" .context.Values.postgresql.replication.enabled -}}\n  {{- else -}}\n    {{- printf \"%v\" .context.Values.replication.enabled -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for the key replication.password.\n\nUsage:\n{{ include \"common.postgresql.values.key.replicationPassword\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether postgresql is used as subchart or not. Default: false\n*/}}\n{{- define \"common.postgresql.values.key.replicationPassword\" -}}\n  {{- if .subchart -}}\n    postgresql.replication.password\n  {{- else -}}\n    replication.password\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/charts/common/templates/validations/_redis.tpl",
    "content": "\n{{/* vim: set filetype=mustache: */}}\n{{/*\nValidate Redis&trade; required passwords are not empty.\n\nUsage:\n{{ include \"common.validations.values.redis.passwords\" (dict \"secret\" \"secretName\" \"subchart\" false \"context\" $) }}\nParams:\n  - secret - String - Required. Name of the secret where redis values are stored, e.g: \"redis-passwords-secret\"\n  - subchart - Boolean - Optional. Whether redis is used as subchart or not. Default: false\n*/}}\n{{- define \"common.validations.values.redis.passwords\" -}}\n  {{- $enabled := include \"common.redis.values.enabled\" . -}}\n  {{- $valueKeyPrefix := include \"common.redis.values.keys.prefix\" . -}}\n  {{- $standarizedVersion := include \"common.redis.values.standarized.version\" . }}\n\n  {{- $existingSecret := ternary (printf \"%s%s\" $valueKeyPrefix \"auth.existingSecret\") (printf \"%s%s\" $valueKeyPrefix \"existingSecret\") (eq $standarizedVersion \"true\") }}\n  {{- $existingSecretValue := include \"common.utils.getValueFromKey\" (dict \"key\" $existingSecret \"context\" .context) }}\n\n  {{- $valueKeyRedisPassword := ternary (printf \"%s%s\" $valueKeyPrefix \"auth.password\") (printf \"%s%s\" $valueKeyPrefix \"password\") (eq $standarizedVersion \"true\") }}\n  {{- $valueKeyRedisUseAuth := ternary (printf \"%s%s\" $valueKeyPrefix \"auth.enabled\") (printf \"%s%s\" $valueKeyPrefix \"usePassword\") (eq $standarizedVersion \"true\") }}\n\n  {{- if and (not $existingSecretValue) (eq $enabled \"true\") -}}\n    {{- $requiredPasswords := list -}}\n\n    {{- $useAuth := include \"common.utils.getValueFromKey\" (dict \"key\" $valueKeyRedisUseAuth \"context\" .context) -}}\n    {{- if eq $useAuth \"true\" -}}\n      {{- $requiredRedisPassword := dict \"valueKey\" $valueKeyRedisPassword \"secret\" .secret \"field\" \"redis-password\" -}}\n      {{- $requiredPasswords = append $requiredPasswords $requiredRedisPassword -}}\n    {{- end -}}\n\n    {{- include \"common.validations.values.multiple.empty\" (dict \"required\" $requiredPasswords \"context\" .context) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right value for enabled redis.\n\nUsage:\n{{ include \"common.redis.values.enabled\" (dict \"context\" $) }}\n*/}}\n{{- define \"common.redis.values.enabled\" -}}\n  {{- if .subchart -}}\n    {{- printf \"%v\" .context.Values.redis.enabled -}}\n  {{- else -}}\n    {{- printf \"%v\" (not .context.Values.enabled) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nAuxiliary function to get the right prefix path for the values\n\nUsage:\n{{ include \"common.redis.values.key.prefix\" (dict \"subchart\" \"true\" \"context\" $) }}\nParams:\n  - subchart - Boolean - Optional. Whether redis is used as subchart or not. Default: false\n*/}}\n{{- define \"common.redis.values.keys.prefix\" -}}\n  {{- if .subchart -}}redis.{{- else -}}{{- end -}}\n{{- end -}}\n\n{{/*\nChecks whether the redis chart's includes the standarizations (version >= 14)\n\nUsage:\n{{ include \"common.redis.values.standarized.version\" (dict \"context\" $) }}\n*/}}\n{{- define \"common.redis.values.standarized.version\" -}}\n\n  {{- $standarizedAuth := printf \"%s%s\" (include \"common.redis.values.keys.prefix\" .) \"auth\" -}}\n  {{- $standarizedAuthValues := include \"common.utils.getValueFromKey\" (dict \"key\" $standarizedAuth \"context\" .context) }}\n\n  {{- if $standarizedAuthValues -}}\n    {{- true -}}\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/charts/common/templates/validations/_validations.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n{{/*\nValidate values must not be empty.\n\nUsage:\n{{- $validateValueConf00 := (dict \"valueKey\" \"path.to.value\" \"secret\" \"secretName\" \"field\" \"password-00\") -}}\n{{- $validateValueConf01 := (dict \"valueKey\" \"path.to.value\" \"secret\" \"secretName\" \"field\" \"password-01\") -}}\n{{ include \"common.validations.values.empty\" (dict \"required\" (list $validateValueConf00 $validateValueConf01) \"context\" $) }}\n\nValidate value params:\n  - valueKey - String - Required. The path to the validating value in the values.yaml, e.g: \"mysql.password\"\n  - secret - String - Optional. Name of the secret where the validating value is generated/stored, e.g: \"mysql-passwords-secret\"\n  - field - String - Optional. Name of the field in the secret data, e.g: \"mysql-password\"\n*/}}\n{{- define \"common.validations.values.multiple.empty\" -}}\n  {{- range .required -}}\n    {{- include \"common.validations.values.single.empty\" (dict \"valueKey\" .valueKey \"secret\" .secret \"field\" .field \"context\" $.context) -}}\n  {{- end -}}\n{{- end -}}\n\n{{/*\nValidate a value must not be empty.\n\nUsage:\n{{ include \"common.validations.value.empty\" (dict \"valueKey\" \"mariadb.password\" \"secret\" \"secretName\" \"field\" \"my-password\" \"subchart\" \"subchart\" \"context\" $) }}\n\nValidate value params:\n  - valueKey - String - Required. The path to the validating value in the values.yaml, e.g: \"mysql.password\"\n  - secret - String - Optional. Name of the secret where the validating value is generated/stored, e.g: \"mysql-passwords-secret\"\n  - field - String - Optional. Name of the field in the secret data, e.g: \"mysql-password\"\n  - subchart - String - Optional - Name of the subchart that the validated password is part of.\n*/}}\n{{- define \"common.validations.values.single.empty\" -}}\n  {{- $value := include \"common.utils.getValueFromKey\" (dict \"key\" .valueKey \"context\" .context) }}\n  {{- $subchart := ternary \"\" (printf \"%s.\" .subchart) (empty .subchart) }}\n\n  {{- if not $value -}}\n    {{- $varname := \"my-value\" -}}\n    {{- $getCurrentValue := \"\" -}}\n    {{- if and .secret .field -}}\n      {{- $varname = include \"common.utils.fieldToEnvVar\" . -}}\n      {{- $getCurrentValue = printf \" To get the current value:\\n\\n        %s\\n\" (include \"common.utils.secret.getvalue\" .) -}}\n    {{- end -}}\n    {{- printf \"\\n    '%s' must not be empty, please add '--set %s%s=$%s' to the command.%s\" .valueKey $subchart .valueKey $varname $getCurrentValue -}}\n  {{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/charts/common/values.yaml",
    "content": "## bitnami/common\n## It is required by CI/CD tools and processes.\n## @skip exampleValue\n##\nexampleValue: common-chart\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/ci/extra-flags-values.yaml",
    "content": "master:\n  extraFlags:\n    - --maxmemory-policy allkeys-lru\n  persistence:\n    enabled: false\nreplica:\n  extraFlags:\n    - --maxmemory-policy allkeys-lru\n  persistence:\n    enabled: false\nauth:\n  enabled: false\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/ci/sentinel-values.yaml",
    "content": "sentinel:\n  enabled: true\nmetrics:\n  enabled: true\n  sentinel:\n    enabled: true\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/ci/standalone-values.yaml",
    "content": "architecture: standalone\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/templates/NOTES.txt",
    "content": "** Please be patient while the chart is being deployed **\n\n{{- if .Values.diagnosticMode.enabled }}\nThe chart has been deployed in diagnostic mode. All probes have been disabled and the command has been overwritten with:\n\n  command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.command \"context\" $) | nindent 4 }}\n  args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.args \"context\" $) | nindent 4 }}\n\nGet the list of pods by executing:\n\n  kubectl get pods --namespace {{ .Release.Namespace }} -l app.kubernetes.io/instance={{ .Release.Name }}\n\nAccess the pod you want to debug by executing\n\n  kubectl exec --namespace {{ .Release.Namespace }} -ti <NAME OF THE POD> -- bash\n\nIn order to replicate the container startup scripts execute this command:\n\nFor Redis:\n\n    /opt/bitnami/scripts/redis/entrypoint.sh /opt/bitnami/scripts/redis/run.sh\n\n{{- if .Values.sentinel.enabled }}\n\nFor Redis Sentinel:\n\n    /opt/bitnami/scripts/redis-sentinel/entrypoint.sh /opt/bitnami/scripts/redis-sentinel/run.sh\n\n{{- end }}\n{{- else }}\n\n{{- if contains .Values.master.service.type \"LoadBalancer\" }}\n{{- if not .Values.auth.enabled }}\n{{ if and (not .Values.networkPolicy.enabled) (.Values.networkPolicy.allowExternal) }}\n\n-------------------------------------------------------------------------------\n WARNING\n\n    By specifying \"master.service.type=LoadBalancer\" and \"auth.enabled=false\" you have\n    most likely exposed the Redis&trade; service externally without any authentication\n    mechanism.\n\n    For security reasons, we strongly suggest that you switch to \"ClusterIP\" or\n    \"NodePort\". As alternative, you can also switch to \"auth.enabled=true\"\n    providing a valid password on \"password\" parameter.\n\n-------------------------------------------------------------------------------\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{- if eq .Values.architecture \"replication\" }}\n{{- if .Values.sentinel.enabled }}\n\nRedis&trade; can be accessed via port {{ .Values.sentinel.service.port }} on the following DNS name from within your cluster:\n\n    {{ template \"common.names.fullname\" . }}.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }} for read only operations\n\nFor read/write operations, first access the Redis&trade; Sentinel cluster, which is available in port {{ .Values.sentinel.service.sentinelPort }} using the same domain name above.\n\n{{- else }}\n\nRedis&trade; can be accessed on the following DNS names from within your cluster:\n\n    {{ printf \"%s-master.%s.svc.%s\" (include \"common.names.fullname\" .) .Release.Namespace .Values.clusterDomain }} for read/write operations (port {{ .Values.master.service.port }})\n    {{ printf \"%s-replicas.%s.svc.%s\" (include \"common.names.fullname\" .) .Release.Namespace .Values.clusterDomain }} for read-only operations (port {{ .Values.replica.service.port }})\n\n{{- end }}\n{{- else }}\n\nRedis&trade; can be accessed via port {{ .Values.master.service.port }} on the following DNS name from within your cluster:\n\n    {{ template \"common.names.fullname\" . }}-master.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }}\n\n{{- end }}\n\n{{ if .Values.auth.enabled }}\n\nTo get your password run:\n\n    export REDIS_PASSWORD=$(kubectl get secret --namespace {{ .Release.Namespace }} {{ template \"redis.secretName\" . }} -o jsonpath=\"{.data.redis-password}\" | base64 --decode)\n\n{{- end }}\n\nTo connect to your Redis&trade; server:\n\n1. Run a Redis&trade; pod that you can use as a client:\n\n   kubectl run --namespace {{ .Release.Namespace }} redis-client --restart='Never' {{ if .Values.auth.enabled }} --env REDIS_PASSWORD=$REDIS_PASSWORD {{ end }} --image {{ template \"redis.image\" . }} --command -- sleep infinity\n\n{{- if .Values.tls.enabled }}\n\n   Copy your TLS certificates to the pod:\n\n   kubectl cp --namespace {{ .Release.Namespace }} /path/to/client.cert redis-client:/tmp/client.cert\n   kubectl cp --namespace {{ .Release.Namespace }} /path/to/client.key redis-client:/tmp/client.key\n   kubectl cp --namespace {{ .Release.Namespace }} /path/to/CA.cert redis-client:/tmp/CA.cert\n\n{{- end }}\n\n   Use the following command to attach to the pod:\n\n   kubectl exec --tty -i redis-client \\\n   {{- if and (.Values.networkPolicy.enabled) (not .Values.networkPolicy.allowExternal) }}--labels=\"{{ template \"common.names.fullname\" . }}-client=true\" \\{{- end }}\n   --namespace {{ .Release.Namespace }} -- bash\n\n2. Connect using the Redis&trade; CLI:\n\n{{- if eq .Values.architecture \"replication\" }}\n   {{- if .Values.sentinel.enabled }}\n   redis-cli -h {{ template \"common.names.fullname\" . }} -p {{ .Values.sentinel.service.port }}{{ if .Values.auth.enabled }} -a $REDIS_PASSWORD{{ end }}{{ if .Values.tls.enabled }} --tls --cert /tmp/client.cert --key /tmp/client.key --cacert /tmp/CA.cert{{ end }} # Read only operations\n   redis-cli -h {{ template \"common.names.fullname\" . }} -p {{ .Values.sentinel.service.sentinelPort }}{{ if .Values.auth.enabled }} -a $REDIS_PASSWORD{{ end }}{{ if .Values.tls.enabled }} --tls --cert /tmp/client.cert --key /tmp/client.key --cacert /tmp/CA.cert{{ end }} # Sentinel access\n   {{- else }}\n   redis-cli -h {{ printf \"%s-master\" (include \"common.names.fullname\" .) }}{{ if .Values.auth.enabled }} -a $REDIS_PASSWORD{{ end }}{{ if .Values.tls.enabled }} --tls --cert /tmp/client.cert --key /tmp/client.key --cacert /tmp/CA.cert{{ end }}\n   redis-cli -h {{ printf \"%s-replicas\" (include \"common.names.fullname\" .) }}{{ if .Values.auth.enabled }} -a $REDIS_PASSWORD{{ end }}{{ if .Values.tls.enabled }} --tls --cert /tmp/client.cert --key /tmp/client.key --cacert /tmp/CA.cert{{ end }}\n   {{- end }}\n{{- else }}\n   redis-cli -h {{ template \"common.names.fullname\" . }}-master{{ if .Values.auth.enabled }} -a $REDIS_PASSWORD{{ end }}{{ if .Values.tls.enabled }} --tls --cert /tmp/client.cert --key /tmp/client.key --cacert /tmp/CA.cert{{ end }}\n{{- end }}\n\n{{- if and (.Values.networkPolicy.enabled) (not .Values.networkPolicy.allowExternal) }}\n\nNote: Since NetworkPolicy is enabled, only pods with label {{ template \"common.names.fullname\" . }}-client=true\" will be able to connect to redis.\n\n{{- else }}\n\nTo connect to your database from outside the cluster execute the following commands:\n\n{{- if and (eq .Values.architecture \"replication\") .Values.sentinel.enabled }}\n{{- if contains \"NodePort\" .Values.sentinel.service.type }}\n\n    export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath=\"{.items[0].status.addresses[0].address}\")\n    export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath=\"{.spec.ports[0].nodePort}\" services {{ template \"common.names.fullname\" . }})\n    redis-cli -h $NODE_IP -p $NODE_PORT {{- if .Values.auth.enabled }} -a $REDIS_PASSWORD{{ end }}{{ if .Values.tls.enabled }} --tls --cert /tmp/client.cert --key /tmp/client.key --cacert /tmp/CA.cert{{ end }}\n\n{{- else if contains \"LoadBalancer\" .Values.sentinel.service.type }}\n\n  NOTE: It may take a few minutes for the LoadBalancer IP to be available.\n        Watch the status with: 'kubectl get svc --namespace {{ .Release.Namespace }} -w {{ template \"common.names.fullname\" . }}'\n\n    export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template \"common.names.fullname\" . }} --template \"{{\"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}\"}}\")\n    redis-cli -h $SERVICE_IP -p {{ .Values.sentinel.service.port }} {{- if .Values.auth.enabled }} -a $REDIS_PASSWORD{{ end }}{{ if .Values.tls.enabled }} --tls --cert /tmp/client.cert --key /tmp/client.key --cacert /tmp/CA.cert{{ end }}\n\n{{- else if contains \"ClusterIP\" .Values.sentinel.service.type }}\n\n    kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template \"common.names.fullname\" . }} {{ .Values.sentinel.service.port }}:{{ .Values.sentinel.service.port }} &\n    redis-cli -h 127.0.0.1 -p {{ .Values.sentinel.service.port }} {{- if .Values.auth.enabled }} -a $REDIS_PASSWORD{{ end }}{{ if .Values.tls.enabled }} --tls --cert /tmp/client.cert --key /tmp/client.key --cacert /tmp/CA.cert{{ end }}\n\n{{- end }}\n{{- else }}\n{{- if contains \"NodePort\" .Values.master.service.type }}\n\n    export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath=\"{.items[0].status.addresses[0].address}\")\n    export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath=\"{.spec.ports[0].nodePort}\" services {{ printf \"%s-master\" (include \"common.names.fullname\" .) }})\n    redis-cli -h $NODE_IP -p $NODE_PORT {{- if .Values.auth.enabled }} -a $REDIS_PASSWORD{{ end }}{{ if .Values.tls.enabled }} --tls --cert /tmp/client.cert --key /tmp/client.key --cacert /tmp/CA.cert{{ end }}\n\n{{- else if contains \"LoadBalancer\" .Values.master.service.type }}\n\n  NOTE: It may take a few minutes for the LoadBalancer IP to be available.\n        Watch the status with: 'kubectl get svc --namespace {{ .Release.Namespace }} -w {{ template \"common.names.fullname\" . }}'\n\n    export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ printf \"%s-master\" (include \"common.names.fullname\" .) }} --template \"{{\"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}\"}}\")\n    redis-cli -h $SERVICE_IP -p {{ .Values.master.service.port }} {{- if .Values.auth.enabled }} -a $REDIS_PASSWORD{{ end }}{{ if .Values.tls.enabled }} --tls --cert /tmp/client.cert --key /tmp/client.key --cacert /tmp/CA.cert{{ end }}\n\n{{- else if contains \"ClusterIP\" .Values.master.service.type }}\n\n    kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ printf \"%s-master\" (include \"common.names.fullname\" .) }} {{ .Values.master.service.port }}:{{ .Values.master.service.port }} &\n    redis-cli -h 127.0.0.1 -p {{ .Values.master.service.port }} {{- if .Values.auth.enabled }} -a $REDIS_PASSWORD{{ end }}{{ if .Values.tls.enabled }} --tls --cert /tmp/client.cert --key /tmp/client.key --cacert /tmp/CA.cert{{ end }}\n\n{{- end }}\n{{- end }}\n\n{{- end }}\n{{- end }}\n{{- include \"redis.checkRollingTags\" . }}\n{{- include \"redis.validateValues\" . }}\n{{- $requiredPassword := list -}}\n{{- $secretName := include \"redis.secretName\" . -}}\n{{- $secretPasswordKey := include \"redis.secretPasswordKey\" . -}}\n{{- if and .Values.auth.enabled (not .Values.auth.existingSecret) (not .Values.global.redis.password) -}}\n  {{- $requiredRedisPassword := dict \"valueKey\" \"auth.password\" \"secret\" $secretName \"field\" $secretPasswordKey -}}\n  {{- $requiredPassword = append $requiredPassword $requiredRedisPassword -}}\n{{- end -}}\n{{- $requiredRedisPasswordErrors := include \"common.validations.values.multiple.empty\" (dict \"required\" $requiredPassword \"context\" $) -}}\n{{- include \"common.errors.upgrade.passwords.empty\" (dict \"validationErrors\" (list $requiredRedisPasswordErrors) \"context\" $) -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/templates/_helpers.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n\n{{/*\nReturn the proper Redis image name\n*/}}\n{{- define \"redis.image\" -}}\n{{ include \"common.images.image\" (dict \"imageRoot\" .Values.image \"global\" .Values.global) }}\n{{- end -}}\n\n{{/*\nReturn the proper Redis Sentinel image name\n*/}}\n{{- define \"redis.sentinel.image\" -}}\n{{ include \"common.images.image\" (dict \"imageRoot\" .Values.sentinel.image \"global\" .Values.global) }}\n{{- end -}}\n\n{{/*\nReturn the proper image name (for the metrics image)\n*/}}\n{{- define \"redis.metrics.image\" -}}\n{{ include \"common.images.image\" (dict \"imageRoot\" .Values.metrics.image \"global\" .Values.global) }}\n{{- end -}}\n\n{{/*\nReturn the proper image name (for the init container volume-permissions image)\n*/}}\n{{- define \"redis.volumePermissions.image\" -}}\n{{ include \"common.images.image\" (dict \"imageRoot\" .Values.volumePermissions.image \"global\" .Values.global) }}\n{{- end -}}\n\n{{/*\nReturn sysctl image\n*/}}\n{{- define \"redis.sysctl.image\" -}}\n{{ include \"common.images.image\" (dict \"imageRoot\" .Values.sysctl.image \"global\" .Values.global) }}\n{{- end -}}\n\n{{/*\nReturn the proper Docker Image Registry Secret Names\n*/}}\n{{- define \"redis.imagePullSecrets\" -}}\n{{- include \"common.images.pullSecrets\" (dict \"images\" (list .Values.image .Values.sentinel.image .Values.metrics.image .Values.volumePermissions.image .Values.sysctl.image) \"global\" .Values.global) -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for networkpolicy.\n*/}}\n{{- define \"networkPolicy.apiVersion\" -}}\n{{- if semverCompare \">=1.4-0, <1.7-0\" .Capabilities.KubeVersion.GitVersion -}}\n{{- print \"extensions/v1beta1\" -}}\n{{- else -}}\n{{- print \"networking.k8s.io/v1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiGroup for PodSecurityPolicy.\n*/}}\n{{- define \"podSecurityPolicy.apiGroup\" -}}\n{{- if semverCompare \">=1.14-0\" .Capabilities.KubeVersion.GitVersion -}}\n{{- print \"policy\" -}}\n{{- else -}}\n{{- print \"extensions\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the appropriate apiVersion for PodSecurityPolicy.\n*/}}\n{{- define \"podSecurityPolicy.apiVersion\" -}}\n{{- if semverCompare \">=1.14-0\" .Capabilities.KubeVersion.GitVersion -}}\n{{- print \"policy/v1beta1\" -}}\n{{- else -}}\n{{- print \"extensions/v1beta1\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn true if a TLS secret object should be created\n*/}}\n{{- define \"redis.createTlsSecret\" -}}\n{{- if and .Values.tls.enabled .Values.tls.autoGenerated (and (not .Values.tls.existingSecret) (not .Values.tls.certificatesSecret)) }}\n    {{- true -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the secret containing Redis TLS certificates\n*/}}\n{{- define \"redis.tlsSecretName\" -}}\n{{- $secretName := coalesce .Values.tls.existingSecret .Values.tls.certificatesSecret -}}\n{{- if $secretName -}}\n    {{- printf \"%s\" (tpl $secretName $) -}}\n{{- else -}}\n    {{- printf \"%s-crt\" (include \"common.names.fullname\" .) -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the path to the cert file.\n*/}}\n{{- define \"redis.tlsCert\" -}}\n{{- if (include \"redis.createTlsSecret\" . ) -}}\n    {{- printf \"/opt/bitnami/redis/certs/%s\" \"tls.crt\" -}}\n{{- else -}}\n    {{- required \"Certificate filename is required when TLS in enabled\" .Values.tls.certFilename | printf \"/opt/bitnami/redis/certs/%s\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the path to the cert key file.\n*/}}\n{{- define \"redis.tlsCertKey\" -}}\n{{- if (include \"redis.createTlsSecret\" . ) -}}\n    {{- printf \"/opt/bitnami/redis/certs/%s\" \"tls.key\" -}}\n{{- else -}}\n    {{- required \"Certificate Key filename is required when TLS in enabled\" .Values.tls.certKeyFilename | printf \"/opt/bitnami/redis/certs/%s\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the path to the CA cert file.\n*/}}\n{{- define \"redis.tlsCACert\" -}}\n{{- if (include \"redis.createTlsSecret\" . ) -}}\n    {{- printf \"/opt/bitnami/redis/certs/%s\" \"ca.crt\" -}}\n{{- else -}}\n    {{- required \"Certificate CA filename is required when TLS in enabled\" .Values.tls.certCAFilename | printf \"/opt/bitnami/redis/certs/%s\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the path to the DH params file.\n*/}}\n{{- define \"redis.tlsDHParams\" -}}\n{{- if .Values.tls.dhParamsFilename -}}\n{{- printf \"/opt/bitnami/redis/certs/%s\" .Values.tls.dhParamsFilename -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nCreate the name of the service account to use\n*/}}\n{{- define \"redis.serviceAccountName\" -}}\n{{- if .Values.serviceAccount.create -}}\n    {{ default (include \"common.names.fullname\" .) .Values.serviceAccount.name }}\n{{- else -}}\n    {{ default \"default\" .Values.serviceAccount.name }}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn the configuration configmap name\n*/}}\n{{- define \"redis.configmapName\" -}}\n{{- if .Values.existingConfigmap -}}\n    {{- printf \"%s\" (tpl .Values.existingConfigmap $) -}}\n{{- else -}}\n    {{- printf \"%s-configuration\" (include \"common.names.fullname\" .) -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn true if a configmap object should be created\n*/}}\n{{- define \"redis.createConfigmap\" -}}\n{{- if empty .Values.existingConfigmap }}\n    {{- true -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nGet the password secret.\n*/}}\n{{- define \"redis.secretName\" -}}\n{{- if .Values.auth.existingSecret -}}\n{{- printf \"%s\" .Values.auth.existingSecret -}}\n{{- else -}}\n{{- printf \"%s\" (include \"common.names.fullname\" .) -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nGet the password key to be retrieved from Redis&trade; secret.\n*/}}\n{{- define \"redis.secretPasswordKey\" -}}\n{{- if and .Values.auth.existingSecret .Values.auth.existingSecretPasswordKey -}}\n{{- printf \"%s\" .Values.auth.existingSecretPasswordKey -}}\n{{- else -}}\n{{- printf \"redis-password\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nReturn Redis&trade; password\n*/}}\n{{- define \"redis.password\" -}}\n{{- if not (empty .Values.global.redis.password) }}\n    {{- .Values.global.redis.password -}}\n{{- else if not (empty .Values.auth.password) -}}\n    {{- .Values.auth.password -}}\n{{- else -}}\n    {{- randAlphaNum 10 -}}\n{{- end -}}\n{{- end -}}\n\n{{/* Check if there are rolling tags in the images */}}\n{{- define \"redis.checkRollingTags\" -}}\n{{- include \"common.warnings.rollingTag\" .Values.image }}\n{{- include \"common.warnings.rollingTag\" .Values.sentinel.image }}\n{{- include \"common.warnings.rollingTag\" .Values.metrics.image }}\n{{- end -}}\n\n{{/*\nCompile all warnings into a single message, and call fail.\n*/}}\n{{- define \"redis.validateValues\" -}}\n{{- $messages := list -}}\n{{- $messages := append $messages (include \"redis.validateValues.spreadConstraints\" .) -}}\n{{- $messages := append $messages (include \"redis.validateValues.architecture\" .) -}}\n{{- $messages := append $messages (include \"redis.validateValues.podSecurityPolicy.create\" .) -}}\n{{- $messages := append $messages (include \"redis.validateValues.tls\" .) -}}\n{{- $messages := without $messages \"\" -}}\n{{- $message := join \"\\n\" $messages -}}\n\n{{- if $message -}}\n{{-   printf \"\\nVALUES VALIDATION:\\n%s\" $message | fail -}}\n{{- end -}}\n{{- end -}}\n\n{{/* Validate values of Redis&trade; - spreadConstrainsts K8s version */}}\n{{- define \"redis.validateValues.spreadConstraints\" -}}\n{{- if and (semverCompare \"<1.16-0\" .Capabilities.KubeVersion.GitVersion) .Values.replica.spreadConstraints -}}\nredis: spreadConstraints\n    Pod Topology Spread Constraints are only available on K8s  >= 1.16\n    Find more information at https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/\n{{- end -}}\n{{- end -}}\n\n{{/* Validate values of Redis&trade; - must provide a valid architecture */}}\n{{- define \"redis.validateValues.architecture\" -}}\n{{- if and (ne .Values.architecture \"standalone\") (ne .Values.architecture \"replication\") -}}\nredis: architecture\n    Invalid architecture selected. Valid values are \"standalone\" and\n    \"replication\". Please set a valid architecture (--set architecture=\"xxxx\")\n{{- end -}}\n{{- if and .Values.sentinel.enabled (not (eq .Values.architecture \"replication\")) }}\nredis: architecture\n    Using redis sentinel on standalone mode is not supported.\n    To deploy redis sentinel, please select the \"replication\" mode\n    (--set \"architecture=replication,sentinel.enabled=true\")\n{{- end -}}\n{{- end -}}\n\n{{/* Validate values of Redis&trade; - PodSecurityPolicy create */}}\n{{- define \"redis.validateValues.podSecurityPolicy.create\" -}}\n{{- if and .Values.podSecurityPolicy.create (not .Values.podSecurityPolicy.enabled) }}\nredis: podSecurityPolicy.create\n    In order to create PodSecurityPolicy, you also need to enable\n    podSecurityPolicy.enabled field\n{{- end -}}\n{{- end -}}\n\n{{/* Validate values of Redis&trade; - TLS enabled */}}\n{{- define \"redis.validateValues.tls\" -}}\n{{- if and .Values.tls.enabled (not .Values.tls.autoGenerated) (not .Values.tls.existingSecret) (not .Values.tls.certificatesSecret) }}\nredis: tls.enabled\n    In order to enable TLS, you also need to provide\n    an existing secret containing the TLS certificates or\n    enable auto-generated certificates.\n{{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/templates/configmap.yaml",
    "content": "{{- if (include \"redis.createConfigmap\" .) }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ printf \"%s-configuration\" (include \"common.names.fullname\" .) }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\ndata:\n  redis.conf: |-\n    # User-supplied common configuration:\n    {{- if .Values.commonConfiguration }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonConfiguration \"context\" $ ) | nindent 4 }}\n    {{- end }}\n    # End of common configuration\n  master.conf: |-\n    dir {{ .Values.master.persistence.path }}\n    # User-supplied master configuration:\n    {{- if .Values.master.configuration }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.master.configuration \"context\" $ ) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.master.disableCommands }}\n    {{- range .Values.master.disableCommands }}\n    rename-command {{ . }} \"\"\n    {{- end }}\n    {{- end }}\n    # End of master configuration\n  replica.conf: |-\n    dir {{ .Values.replica.persistence.path }}\n    slave-read-only yes\n    # User-supplied replica configuration:\n    {{- if .Values.replica.configuration }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.replica.configuration \"context\" $ ) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.replica.disableCommands }}\n    {{- range .Values.replica.disableCommands }}\n    rename-command {{ . }} \"\"\n    {{- end }}\n    {{- end }}\n    # End of replica configuration\n  {{- if .Values.sentinel.enabled }}\n  sentinel.conf: |-\n    dir \"/tmp\"\n    port {{ .Values.sentinel.containerPort }}\n    sentinel monitor {{ .Values.sentinel.masterSet }} {{ template \"common.names.fullname\" . }}-node-0.{{ template \"common.names.fullname\" . }}-headless.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }} {{ .Values.sentinel.service.port }} {{ .Values.sentinel.quorum }}\n    sentinel down-after-milliseconds {{ .Values.sentinel.masterSet }} {{ .Values.sentinel.downAfterMilliseconds }}\n    sentinel failover-timeout {{ .Values.sentinel.masterSet }} {{ .Values.sentinel.failoverTimeout }}\n    sentinel parallel-syncs {{ .Values.sentinel.masterSet }} {{ .Values.sentinel.parallelSyncs }}\n    # User-supplied sentinel configuration:\n    {{- if .Values.sentinel.configuration }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.sentinel.configuration \"context\" $ ) | nindent 4 }}\n    {{- end }}\n    # End of sentinel configuration\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/templates/extra-list.yaml",
    "content": "{{- range .Values.extraDeploy }}\n---\n{{ include \"common.tplvalues.render\" (dict \"value\" . \"context\" $) }}\n{{- end }}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/templates/headless-svc.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ printf \"%s-headless\" (include \"common.names.fullname\" .) }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\nspec:\n  type: ClusterIP\n  clusterIP: None\n  {{- if .Values.sentinel.enabled }}\n  publishNotReadyAddresses: true\n  {{- end }}\n  ports:\n    - name: tcp-redis\n      port: {{ if .Values.sentinel.enabled }}{{ .Values.sentinel.service.port }}{{ else }}{{ .Values.master.service.port }}{{ end }}\n      targetPort: redis\n    {{- if .Values.sentinel.enabled }}\n    - name: tcp-sentinel\n      port: {{ .Values.sentinel.service.sentinelPort }}\n      targetPort: redis-sentinel\n    {{- end }}\n  selector: {{- include \"common.labels.matchLabels\" . | nindent 4 }}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/templates/health-configmap.yaml",
    "content": "apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ printf \"%s-health\" (include \"common.names.fullname\" .) }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\ndata:\n  ping_readiness_local.sh: |-\n    #!/bin/bash\n\n    [[ -f $REDIS_PASSWORD_FILE ]] && export REDIS_PASSWORD=\"$(< \"${REDIS_PASSWORD_FILE}\")\"\n    export REDISCLI_AUTH=\"$REDIS_PASSWORD\"\n    response=$(\n      timeout -s 3 $1 \\\n      redis-cli \\\n        -h localhost \\\n{{- if .Values.tls.enabled }}\n        -p $REDIS_TLS_PORT \\\n        --tls \\\n        --cacert {{ template \"redis.tlsCACert\" . }} \\\n        {{- if .Values.tls.authClients }}\n          --cert {{ template \"redis.tlsCert\" . }} \\\n          --key {{ template \"redis.tlsCertKey\" . }} \\\n        {{- end }}\n{{- else }}\n        -p $REDIS_PORT \\\n{{- end }}\n        ping\n    )\n    if [ \"$response\" != \"PONG\" ]; then\n      echo \"$response\"\n      exit 1\n    fi\n  ping_liveness_local.sh: |-\n    #!/bin/bash\n\n    [[ -f $REDIS_PASSWORD_FILE ]] && export REDIS_PASSWORD=\"$(< \"${REDIS_PASSWORD_FILE}\")\"\n    export REDISCLI_AUTH=\"$REDIS_PASSWORD\"\n    response=$(\n      timeout -s 3 $1 \\\n      redis-cli \\\n        -h localhost \\\n{{- if .Values.tls.enabled }}\n        -p $REDIS_TLS_PORT \\\n        --tls \\\n        --cacert {{ template \"redis.tlsCACert\" . }} \\\n        {{- if .Values.tls.authClients }}\n          --cert {{ template \"redis.tlsCert\" . }} \\\n          --key {{ template \"redis.tlsCertKey\" . }} \\\n        {{- end }}\n{{- else }}\n        -p $REDIS_PORT \\\n{{- end }}\n        ping\n    )\n    if [ \"$response\" != \"PONG\" ] && [ \"$response\" != \"LOADING Redis is loading the dataset in memory\" ]; then\n      echo \"$response\"\n      exit 1\n    fi\n{{- if .Values.sentinel.enabled }}\n  ping_sentinel.sh: |-\n    #!/bin/bash\n\n    [[ -f $REDIS_PASSWORD_FILE ]] && export REDIS_PASSWORD=\"$(< \"${REDIS_PASSWORD_FILE}\")\"\n    export REDISCLI_AUTH=\"$REDIS_PASSWORD\"\n    response=$(\n      timeout -s 3 $1 \\\n      redis-cli \\\n        -h localhost \\\n{{- if .Values.tls.enabled }}\n        -p $REDIS_SENTINEL_TLS_PORT_NUMBER \\\n        --tls \\\n        --cacert {{ template \"redis.tlsCACert\" . }} \\\n        {{- if .Values.tls.authClients }}\n          --cert {{ template \"redis.tlsCert\" . }} \\\n          --key {{ template \"redis.tlsCertKey\" . }} \\\n        {{- end }}\n{{- else }}\n        -p $REDIS_SENTINEL_PORT \\\n{{- end }}\n        ping\n    )\n    if [ \"$response\" != \"PONG\" ]; then\n      echo \"$response\"\n      exit 1\n    fi\n  parse_sentinels.awk: |-\n    /ip/ {FOUND_IP=1}\n    /port/ {FOUND_PORT=1}\n    /runid/ {FOUND_RUNID=1}\n    !/ip|port|runid/ {\n      if (FOUND_IP==1) {\n        IP=$1; FOUND_IP=0;\n      }\n      else if (FOUND_PORT==1) {\n        PORT=$1;\n        FOUND_PORT=0;\n      } else if (FOUND_RUNID==1) {\n        printf \"\\nsentinel known-sentinel {{ .Values.sentinel.masterSet }} %s %s %s\", IP, PORT, $0; FOUND_RUNID=0;\n      }\n    }\n{{- end }}\n  ping_readiness_master.sh: |-\n    #!/bin/bash\n\n    [[ -f $REDIS_MASTER_PASSWORD_FILE ]] && export REDIS_MASTER_PASSWORD=\"$(< \"${REDIS_MASTER_PASSWORD_FILE}\")\"\n    export REDISCLI_AUTH=\"$REDIS_MASTER_PASSWORD\"\n    response=$(\n      timeout -s 3 $1 \\\n      redis-cli \\\n        -h $REDIS_MASTER_HOST \\\n        -p $REDIS_MASTER_PORT_NUMBER \\\n{{- if .Values.tls.enabled }}\n        --tls \\\n        --cacert {{ template \"redis.tlsCACert\" . }} \\\n        {{- if .Values.tls.authClients }}\n          --cert {{ template \"redis.tlsCert\" . }} \\\n          --key {{ template \"redis.tlsCertKey\" . }} \\\n        {{- end }}\n{{- end }}\n        ping\n    )\n    if [ \"$response\" != \"PONG\" ]; then\n      echo \"$response\"\n      exit 1\n    fi\n  ping_liveness_master.sh: |-\n    #!/bin/bash\n\n    [[ -f $REDIS_MASTER_PASSWORD_FILE ]] && export REDIS_MASTER_PASSWORD=\"$(< \"${REDIS_MASTER_PASSWORD_FILE}\")\"\n    export REDISCLI_AUTH=\"$REDIS_MASTER_PASSWORD\"\n    response=$(\n      timeout -s 3 $1 \\\n      redis-cli \\\n        -h $REDIS_MASTER_HOST \\\n        -p $REDIS_MASTER_PORT_NUMBER \\\n{{- if .Values.tls.enabled }}\n        --tls \\\n        --cacert {{ template \"redis.tlsCACert\" . }} \\\n        {{- if .Values.tls.authClients }}\n          --cert {{ template \"redis.tlsCert\" . }} \\\n          --key {{ template \"redis.tlsCertKey\" . }} \\\n        {{- end }}\n{{- end }}\n        ping\n    )\n    if [ \"$response\" != \"PONG\" ] && [ \"$response\" != \"LOADING Redis is loading the dataset in memory\" ]; then\n      echo \"$response\"\n      exit 1\n    fi\n  ping_readiness_local_and_master.sh: |-\n    script_dir=\"$(dirname \"$0\")\"\n    exit_status=0\n    \"$script_dir/ping_readiness_local.sh\" $1 || exit_status=$?\n    \"$script_dir/ping_readiness_master.sh\" $1 || exit_status=$?\n    exit $exit_status\n  ping_liveness_local_and_master.sh: |-\n    script_dir=\"$(dirname \"$0\")\"\n    exit_status=0\n    \"$script_dir/ping_liveness_local.sh\" $1 || exit_status=$?\n    \"$script_dir/ping_liveness_master.sh\" $1 || exit_status=$?\n    exit $exit_status\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/templates/master/psp.yaml",
    "content": "{{- if .Values.podSecurityPolicy.create }}\napiVersion: {{ template \"podSecurityPolicy.apiVersion\" . }}\nkind: PodSecurityPolicy\nmetadata:\n  name: {{ printf \"%s-master\" (include \"common.names.fullname\" .) }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\nspec:\n  allowPrivilegeEscalation: false\n  fsGroup:\n    rule: 'MustRunAs'\n    ranges:\n      - min: {{ .Values.master.podSecurityContext.fsGroup }}\n        max: {{ .Values.master.podSecurityContext.fsGroup }}\n  hostIPC: false\n  hostNetwork: false\n  hostPID: false\n  privileged: false\n  readOnlyRootFilesystem: false\n  requiredDropCapabilities:\n    - ALL\n  runAsUser:\n    rule: 'MustRunAs'\n    ranges:\n      - min: {{ .Values.master.containerSecurityContext.runAsUser }}\n        max: {{ .Values.master.containerSecurityContext.runAsUser }}\n  seLinux:\n    rule: 'RunAsAny'\n  supplementalGroups:\n    rule: 'MustRunAs'\n    ranges:\n      - min: {{ .Values.master.containerSecurityContext.runAsUser }}\n        max: {{ .Values.master.containerSecurityContext.runAsUser }}\n  volumes:\n    - 'configMap'\n    - 'secret'\n    - 'emptyDir'\n    - 'persistentVolumeClaim'\n{{- end }}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/templates/master/service.yaml",
    "content": "{{- if not .Values.sentinel.enabled }}\napiVersion: v1\nkind: Service\nmetadata:\n  name: {{ printf \"%s-master\" (include \"common.names.fullname\" .) }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: master\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if or .Values.master.service.annotations .Values.commonAnnotations }}\n  annotations:\n    {{- if .Values.master.service.annotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.master.service.annotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.commonAnnotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- end }}\nspec:\n  type: {{ .Values.master.service.type }}\n  {{ if eq .Values.master.service.type \"LoadBalancer\" }}\n  externalTrafficPolicy: {{ .Values.master.service.externalTrafficPolicy }}\n  {{- end }}\n  {{- if and (eq .Values.master.service.type \"LoadBalancer\") .Values.master.service.loadBalancerIP }}\n  loadBalancerIP: {{ .Values.master.service.loadBalancerIP }}\n  {{- end }}\n  {{- if and (eq .Values.master.service.type \"LoadBalancer\") .Values.master.service.loadBalancerSourceRanges }}\n  loadBalancerSourceRanges: {{- toYaml .Values.master.service.loadBalancerSourceRanges | nindent 4 }}\n  {{- end }}\n  {{- if and (eq .Values.master.service.type \"ClusterIP\") .Values.master.service.clusterIP }}\n  clusterIP: {{ .Values.master.service.clusterIP }}\n  {{- end }}\n  ports:\n    - name: tcp-redis\n      port: {{ .Values.master.service.port }}\n      targetPort: redis\n      {{- if and (or (eq .Values.master.service.type \"NodePort\") (eq .Values.master.service.type \"LoadBalancer\")) .Values.master.service.nodePort }}\n      nodePort: {{ .Values.master.service.nodePort }}\n      {{- else if eq .Values.master.service.type \"ClusterIP\" }}\n      nodePort: null\n      {{- end }}\n  selector: {{- include \"common.labels.matchLabels\" . | nindent 4 }}\n    app.kubernetes.io/component: master\n{{- end }}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/templates/master/statefulset.yaml",
    "content": "{{- if or (not (eq .Values.architecture \"replication\")) (not .Values.sentinel.enabled) }}\napiVersion: {{ include \"common.capabilities.statefulset.apiVersion\" . }}\nkind: StatefulSet\nmetadata:\n  name: {{ printf \"%s-master\" (include \"common.names.fullname\" .) }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: master\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\nspec:\n  replicas: 1\n  selector:\n    matchLabels: {{- include \"common.labels.matchLabels\" . | nindent 6 }}\n      app.kubernetes.io/component: master\n  serviceName: {{ printf \"%s-headless\" (include \"common.names.fullname\" .) }}\n  {{- if .Values.master.updateStrategy }}\n  updateStrategy: {{- toYaml .Values.master.updateStrategy | nindent 4 }}\n  {{- end }}\n  template:\n    metadata:\n      labels: {{- include \"common.labels.standard\" . | nindent 8 }}\n        app.kubernetes.io/component: master\n        {{- if .Values.master.podLabels }}\n        {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.master.podLabels \"context\" $ ) | nindent 8 }}\n        {{- end }}\n        {{- if and .Values.metrics.enabled .Values.metrics.podLabels }}\n        {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.metrics.podLabels \"context\" $ ) | nindent 8 }}\n        {{- end }}\n      annotations:\n        {{- if (include \"redis.createConfigmap\" .) }}\n        checksum/configmap: {{ include (print $.Template.BasePath \"/configmap.yaml\") . | sha256sum }}\n        {{- end }}\n        checksum/health: {{ include (print $.Template.BasePath \"/health-configmap.yaml\") . | sha256sum }}\n        checksum/scripts: {{ include (print $.Template.BasePath \"/scripts-configmap.yaml\") . | sha256sum }}\n        checksum/secret: {{ include (print $.Template.BasePath \"/secret.yaml\") . | sha256sum }}\n        {{- if .Values.master.podAnnotations }}\n        {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.master.podAnnotations \"context\" $ ) | nindent 8 }}\n        {{- end }}\n        {{- if and .Values.metrics.enabled .Values.metrics.podAnnotations }}\n        {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.metrics.podAnnotations \"context\" $ ) | nindent 8 }}\n        {{- end }}\n    spec:\n      {{- include \"redis.imagePullSecrets\" . | nindent 6 }}\n      {{- if .Values.master.hostAliases }}\n      hostAliases: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.master.hostAliases \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.master.podSecurityContext.enabled }}\n      securityContext: {{- omit .Values.master.podSecurityContext \"enabled\" | toYaml | nindent 8 }}\n      {{- end }}\n      serviceAccountName: {{ template \"redis.serviceAccountName\" . }}\n      {{- if .Values.master.priorityClassName }}\n      priorityClassName: {{ .Values.master.priorityClassName | quote }}\n      {{- end }}\n      {{- if .Values.master.affinity }}\n      affinity: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.master.affinity \"context\" $) | nindent 8 }}\n      {{- else }}\n      affinity:\n        podAffinity: {{- include \"common.affinities.pods\" (dict \"type\" .Values.master.podAffinityPreset \"component\" \"master\" \"context\" $) | nindent 10 }}\n        podAntiAffinity: {{- include \"common.affinities.pods\" (dict \"type\" .Values.master.podAntiAffinityPreset \"component\" \"master\" \"context\" $) | nindent 10 }}\n        nodeAffinity: {{- include \"common.affinities.nodes\" (dict \"type\" .Values.master.nodeAffinityPreset.type \"key\" .Values.master.nodeAffinityPreset.key \"values\" .Values.master.nodeAffinityPreset.values) | nindent 10 }}\n      {{- end }}\n      {{- if .Values.master.nodeSelector }}\n      nodeSelector: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.master.nodeSelector \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.master.tolerations }}\n      tolerations: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.master.tolerations \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.master.spreadConstraints }}\n      topologySpreadConstraints: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.master.spreadConstraints \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.master.shareProcessNamespace }}\n      shareProcessNamespace: {{ .Values.master.shareProcessNamespace }}\n      {{- end }}\n      {{- if .Values.master.schedulerName }}\n      schedulerName: {{ .Values.master.schedulerName | quote }}\n      {{- end }}\n      terminationGracePeriodSeconds: {{ .Values.master.terminationGracePeriodSeconds }}\n      containers:\n        - name: redis\n          image: {{ template \"redis.image\" . }}\n          imagePullPolicy: {{ .Values.image.pullPolicy | quote }}\n          {{- if .Values.master.lifecycleHooks }}\n          lifecycle: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.master.lifecycleHooks \"context\" $) | nindent 12 }}\n          {{- end }}\n          {{- if .Values.master.containerSecurityContext.enabled }}\n          securityContext: {{- omit .Values.master.containerSecurityContext \"enabled\" | toYaml | nindent 12 }}\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.command \"context\" $) | nindent 12 }}\n          {{- else if .Values.master.command }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.master.command \"context\" $) | nindent 12 }}\n          {{- else }}\n          command:\n            - /bin/bash\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.args \"context\" $) | nindent 12 }}\n          {{- else if .Values.master.args }}\n          args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.master.args \"context\" $) | nindent 12 }}\n          {{- else }}\n          args:\n            - -c\n            - /opt/bitnami/scripts/start-scripts/start-master.sh\n          {{- end }}\n          env:\n            - name: BITNAMI_DEBUG\n              value: {{ ternary \"true\" \"false\" (or .Values.image.debug .Values.diagnosticMode.enabled) | quote }}\n            - name: REDIS_REPLICATION_MODE\n              value: master\n            - name: ALLOW_EMPTY_PASSWORD\n              value: {{ ternary \"no\" \"yes\" .Values.auth.enabled | quote }}\n            {{- if .Values.auth.enabled }}\n            {{- if .Values.auth.usePasswordFiles }}\n            - name: REDIS_PASSWORD_FILE\n              value: \"/opt/bitnami/redis/secrets/redis-password\"\n            {{- else }}\n            - name: REDIS_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: {{ template \"redis.secretName\" . }}\n                  key: {{ template \"redis.secretPasswordKey\" . }}\n            {{- end }}\n            {{- end }}\n            - name: REDIS_TLS_ENABLED\n              value: {{ ternary \"yes\" \"no\" .Values.tls.enabled | quote }}\n            {{- if .Values.tls.enabled }}\n            - name: REDIS_TLS_PORT\n              value: {{ .Values.master.containerPort | quote }}\n            - name:  REDIS_TLS_AUTH_CLIENTS\n              value: {{ ternary \"yes\" \"no\" .Values.tls.authClients | quote }}\n            - name:  REDIS_TLS_CERT_FILE\n              value: {{ template \"redis.tlsCert\" . }}\n            - name:  REDIS_TLS_KEY_FILE\n              value: {{ template \"redis.tlsCertKey\" . }}\n            - name:  REDIS_TLS_CA_FILE\n              value: {{ template \"redis.tlsCACert\" . }}\n            {{- if .Values.tls.dhParamsFilename }}\n            - name:  REDIS_TLS_DH_PARAMS_FILE\n              value: {{ template \"redis.tlsDHParams\" . }}\n            {{- end }}\n            {{- else }}\n            - name: REDIS_PORT\n              value: {{ .Values.master.containerPort | quote }}\n            {{- end }}\n            {{- if .Values.master.extraEnvVars }}\n            {{- include \"common.tplvalues.render\" (dict \"value\" .Values.master.extraEnvVars \"context\" $) | nindent 12 }}\n            {{- end }}\n          {{- if or .Values.master.extraEnvVarsCM .Values.master.extraEnvVarsSecret }}\n          envFrom:\n            {{- if .Values.master.extraEnvVarsCM }}\n            - configMapRef:\n                name: {{ .Values.master.extraEnvVarsCM }}\n            {{- end }}\n            {{- if .Values.master.extraEnvVarsSecret }}\n            - secretRef:\n                name: {{ .Values.master.extraEnvVarsSecret }}\n            {{- end }}\n          {{- end }}\n          ports:\n            - name: redis\n              containerPort: {{ .Values.master.containerPort }}\n          {{- if not .Values.diagnosticMode.enabled }}\n          {{- if .Values.master.livenessProbe.enabled }}\n          livenessProbe:\n            initialDelaySeconds: {{ .Values.master.livenessProbe.initialDelaySeconds }}\n            periodSeconds: {{ .Values.master.livenessProbe.periodSeconds }}\n            # One second longer than command timeout should prevent generation of zombie processes.\n            timeoutSeconds: {{ add1 .Values.master.livenessProbe.timeoutSeconds }}\n            successThreshold: {{ .Values.master.livenessProbe.successThreshold }}\n            failureThreshold: {{ .Values.master.livenessProbe.failureThreshold }}\n            exec:\n              command:\n                - sh\n                - -c\n                - /health/ping_liveness_local.sh {{ .Values.master.livenessProbe.timeoutSeconds }}\n          {{- else if .Values.master.customLivenessProbe }}\n          livenessProbe: {{- toYaml .Values.master.customLivenessProbe | nindent 12 }}\n          {{- end }}\n          {{- if .Values.master.readinessProbe.enabled }}\n          readinessProbe:\n            initialDelaySeconds: {{ .Values.master.readinessProbe.initialDelaySeconds }}\n            periodSeconds: {{ .Values.master.readinessProbe.periodSeconds }}\n            timeoutSeconds: {{ add1 .Values.master.readinessProbe.timeoutSeconds }}\n            successThreshold: {{ .Values.master.readinessProbe.successThreshold }}\n            failureThreshold: {{ .Values.master.readinessProbe.failureThreshold }}\n            exec:\n              command:\n                - sh\n                - -c\n                - /health/ping_readiness_local.sh {{ .Values.master.readinessProbe.timeoutSeconds }}\n          {{- else if .Values.master.customReadinessProbe }}\n          readinessProbe: {{- toYaml .Values.master.customReadinessProbe | nindent 12 }}\n          {{- end }}\n          {{- end }}\n          {{- if .Values.master.resources }}\n          resources: {{- toYaml .Values.master.resources | nindent 12 }}\n          {{- end }}\n          volumeMounts:\n            - name: start-scripts\n              mountPath: /opt/bitnami/scripts/start-scripts\n            - name: health\n              mountPath: /health\n            {{- if .Values.auth.usePasswordFiles }}\n            - name: redis-password\n              mountPath: /opt/bitnami/redis/secrets/\n            {{- end }}\n            - name: redis-data\n              mountPath: {{ .Values.master.persistence.path }}\n              subPath: {{ .Values.master.persistence.subPath }}\n            - name: config\n              mountPath: /opt/bitnami/redis/mounted-etc\n            - name: redis-tmp-conf\n              mountPath: /opt/bitnami/redis/etc/\n            - name: tmp\n              mountPath: /tmp\n            {{- if .Values.tls.enabled }}\n            - name: redis-certificates\n              mountPath: /opt/bitnami/redis/certs\n              readOnly: true\n            {{- end }}\n            {{- if .Values.master.extraVolumeMounts }}\n            {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.master.extraVolumeMounts \"context\" $ ) | nindent 12 }}\n            {{- end }}\n        {{- if .Values.metrics.enabled }}\n        - name: metrics\n          image: {{ include \"redis.metrics.image\" . }}\n          imagePullPolicy: {{ .Values.metrics.image.pullPolicy | quote }}\n          {{- if .Values.metrics.containerSecurityContext.enabled }}\n          securityContext: {{- omit .Values.metrics.containerSecurityContext \"enabled\" | toYaml | nindent 12 }}\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.command \"context\" $) | nindent 12 }}\n          {{- else }}\n          command:\n            - /bin/bash\n            - -c\n            - |\n              if [[ -f '/secrets/redis-password' ]]; then\n              export REDIS_PASSWORD=$(cat /secrets/redis-password)\n              fi\n              redis_exporter{{- range $key, $value := .Values.metrics.extraArgs }} --{{ $key }}={{ $value }}{{- end }}\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.args \"context\" $) | nindent 12 }}\n          {{- end }}\n          env:\n            - name: REDIS_ALIAS\n              value: {{ template \"common.names.fullname\" . }}\n            {{- if .Values.auth.enabled }}\n            - name: REDIS_USER\n              value: default\n            {{- if (not .Values.auth.usePasswordFiles) }}\n            - name: REDIS_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: {{ template \"redis.secretName\" . }}\n                  key: {{ template \"redis.secretPasswordKey\" . }}\n            {{- end }}\n            {{- end }}\n            {{- if .Values.tls.enabled }}\n            - name: REDIS_ADDR\n              value: rediss://{{ .Values.metrics.redisTargetHost }}:{{ .Values.master.containerPort }}\n              {{- if .Values.tls.authClients }}\n            - name: REDIS_EXPORTER_TLS_CLIENT_KEY_FILE\n              value: {{ template \"redis.tlsCertKey\" . }}\n            - name: REDIS_EXPORTER_TLS_CLIENT_CERT_FILE\n              value: {{ template \"redis.tlsCert\" . }}\n              {{- end }}\n            - name: REDIS_EXPORTER_TLS_CA_CERT_FILE\n              value: {{ template \"redis.tlsCACert\" . }}\n            {{- end }}\n          ports:\n            - name: metrics\n              containerPort: 9121\n          {{- if .Values.metrics.resources }}\n          resources: {{- toYaml .Values.metrics.resources | nindent 12 }}\n          {{- end }}\n          volumeMounts:\n            {{- if .Values.auth.usePasswordFiles }}\n            - name: redis-password\n              mountPath: /secrets/\n            {{- end }}\n            {{- if .Values.tls.enabled }}\n            - name: redis-certificates\n              mountPath: /opt/bitnami/redis/certs\n              readOnly: true\n            {{- end }}\n            {{- if .Values.metrics.extraVolumeMounts }}\n            {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.metrics.extraVolumeMounts \"context\" $ ) | nindent 12 }}\n            {{- end }}\n        {{- end }}\n        {{- if .Values.master.sidecars }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.master.sidecars \"context\" $) | nindent 8 }}\n        {{- end }}\n      {{- $needsVolumePermissions := and .Values.volumePermissions.enabled .Values.master.persistence.enabled .Values.master.podSecurityContext.enabled .Values.master.containerSecurityContext.enabled }}\n      {{- if or .Values.master.initContainers $needsVolumePermissions .Values.sysctl.enabled }}\n      initContainers:\n        {{- if .Values.master.initContainers }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.master.initContainers \"context\" $) | nindent 8 }}\n        {{- end }}\n        {{- if $needsVolumePermissions }}\n        - name: volume-permissions\n          image: {{ include \"redis.volumePermissions.image\" . }}\n          imagePullPolicy: {{ .Values.volumePermissions.image.pullPolicy | quote }}\n          command:\n            - /bin/bash\n            - -ec\n            - |\n              {{- if eq ( toString ( .Values.volumePermissions.containerSecurityContext.runAsUser )) \"auto\" }}\n              chown -R `id -u`:`id -G | cut -d \" \" -f2` {{ .Values.master.persistence.path }}\n              {{- else }}\n              chown -R {{ .Values.master.containerSecurityContext.runAsUser }}:{{ .Values.master.podSecurityContext.fsGroup }} {{ .Values.master.persistence.path }}\n              {{- end }}\n          {{- if eq ( toString ( .Values.volumePermissions.containerSecurityContext.runAsUser )) \"auto\" }}\n          securityContext: {{- omit .Values.volumePermissions.containerSecurityContext \"runAsUser\" | toYaml | nindent 12 }}\n          {{- else }}\n          securityContext: {{- .Values.volumePermissions.containerSecurityContext | toYaml | nindent 12 }}\n          {{- end }}\n          {{- if .Values.volumePermissions.resources }}\n          resources: {{- toYaml .Values.volumePermissions.resources | nindent 12 }}\n          {{- end }}\n          volumeMounts:\n            - name: redis-data\n              mountPath: {{ .Values.master.persistence.path }}\n              subPath: {{ .Values.master.persistence.subPath }}\n        {{- end }}\n        {{- if .Values.sysctl.enabled }}\n        - name: init-sysctl\n          image: {{ include \"redis.sysctl.image\" . }}\n          imagePullPolicy: {{ default \"\" .Values.sysctl.image.pullPolicy | quote }}\n          securityContext:\n            privileged: true\n            runAsUser: 0\n          {{- if .Values.sysctl.command }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.sysctl.command \"context\" $) | nindent 12 }}\n          {{- end }}\n          {{- if .Values.sysctl.resources }}\n          resources: {{- toYaml .Values.sysctl.resources | nindent 12 }}\n          {{- end }}\n          {{- if .Values.sysctl.mountHostSys }}\n          volumeMounts:\n            - name: host-sys\n              mountPath: /host-sys\n          {{- end }}\n        {{- end }}\n      {{- end }}\n      volumes:\n        - name: start-scripts\n          configMap:\n            name: {{ printf \"%s-scripts\" (include \"common.names.fullname\" .) }}\n            defaultMode: 0755\n        - name: health\n          configMap:\n            name: {{ printf \"%s-health\" (include \"common.names.fullname\" .) }}\n            defaultMode: 0755\n        {{- if .Values.auth.usePasswordFiles }}\n        - name: redis-password\n          secret:\n            secretName: {{ template \"redis.secretName\" . }}\n            items:\n            - key: {{ template \"redis.secretPasswordKey\" . }}\n              path: redis-password\n        {{- end }}\n        - name: config\n          configMap:\n            name: {{ include \"redis.configmapName\" . }}\n        {{- if .Values.sysctl.mountHostSys }}\n        - name: host-sys\n          hostPath:\n            path: /sys\n        {{- end }}\n        - name: redis-tmp-conf\n          emptyDir: {}\n        - name: tmp\n          emptyDir: {}\n        {{- if .Values.tls.enabled }}\n        - name: redis-certificates\n          secret:\n            secretName: {{ include \"redis.tlsSecretName\" . }}\n            defaultMode: 256\n        {{- end }}\n        {{- if .Values.master.extraVolumes }}\n        {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.master.extraVolumes \"context\" $ ) | nindent 8 }}\n        {{- end }}\n        {{- if .Values.metrics.extraVolumes }}\n        {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.metrics.extraVolumes \"context\" $ ) | nindent 8 }}\n        {{- end }}\n  {{- if not .Values.master.persistence.enabled }}\n        - name: redis-data\n          emptyDir: {}\n  {{- else if .Values.master.persistence.existingClaim }}\n        - name: redis-data\n          persistentVolumeClaim:\n            claimName: {{ printf \"%s\" (tpl .Values.master.persistence.existingClaim .) }}\n  {{- else }}\n  volumeClaimTemplates:\n    - metadata:\n        name: redis-data\n        labels: {{- include \"common.labels.matchLabels\" . | nindent 10 }}\n          app.kubernetes.io/component: master\n        {{- if .Values.master.persistence.annotations }}\n        annotations: {{- toYaml .Values.master.persistence.annotations | nindent 10 }}\n        {{- end }}\n      spec:\n        accessModes:\n        {{- range .Values.master.persistence.accessModes }}\n          - {{ . | quote }}\n        {{- end }}\n        resources:\n          requests:\n            storage: {{ .Values.master.persistence.size | quote }}\n        {{- if .Values.master.persistence.selector }}\n        selector: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.master.persistence.selector \"context\" $) | nindent 10 }}\n        {{- end }}\n        {{- include \"common.storage.class\" (dict \"persistence\" .Values.master.persistence \"global\" .Values.global) | nindent 8 }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/templates/metrics-svc.yaml",
    "content": "{{- if .Values.metrics.enabled }}\napiVersion: v1\nkind: Service\nmetadata:\n  name: {{ printf \"%s-metrics\" (include \"common.names.fullname\" .) }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: metrics\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if or .Values.metrics.service.annotations .Values.commonAnnotations }}\n  annotations:\n    {{- if .Values.metrics.service.annotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.metrics.service.annotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.commonAnnotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- end }}\nspec:\n  type: {{ .Values.metrics.service.type }}\n  {{- if eq .Values.metrics.service.type \"LoadBalancer\" }}\n  externalTrafficPolicy: {{ .Values.metrics.service.externalTrafficPolicy }}\n  {{- end }}\n  {{- if and (eq .Values.metrics.service.type \"LoadBalancer\") .Values.metrics.service.loadBalancerIP }}\n  loadBalancerIP: {{ .Values.metrics.service.loadBalancerIP }}\n  {{- end }}\n  {{- if and (eq .Values.metrics.service.type \"LoadBalancer\") .Values.metrics.service.loadBalancerSourceRanges }}\n  loadBalancerSourceRanges: {{- toYaml .Values.metrics.service.loadBalancerSourceRanges | nindent 4 }}\n  {{- end }}\n  ports:\n    - name: tcp-metrics\n      port: {{ .Values.metrics.service.port }}\n      protocol: TCP\n      targetPort: metrics\n  selector: {{- include \"common.labels.matchLabels\" . | nindent 4 }}\n{{- end }}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/templates/networkpolicy.yaml",
    "content": "{{- if .Values.networkPolicy.enabled }}\nkind: NetworkPolicy\napiVersion: {{ template \"networkPolicy.apiVersion\" . }}\nmetadata:\n  name: {{ template \"common.names.fullname\" . }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\nspec:\n  podSelector:\n    matchLabels: {{- include \"common.labels.matchLabels\" . | nindent 6 }}\n  policyTypes:\n    - Ingress\n  {{- if or (eq .Values.architecture \"replication\") .Values.networkPolicy.extraEgress }}\n    - Egress\n  egress:\n    {{- if eq .Values.architecture \"replication\" }}\n    # Allow dns resolution\n    - ports:\n        - port: 53\n          protocol: UDP\n    # Allow outbound connections to other cluster pods\n    - ports:\n        - port: {{ .Values.master.containerPort }}\n        {{- if .Values.sentinel.enabled }}\n        - port: {{ .Values.sentinel.containerPort }}\n        {{- end }}\n      to:\n        - podSelector:\n            matchLabels: {{- include \"common.labels.matchLabels\" . | nindent 14 }}\n    {{- end }}\n    {{- if .Values.networkPolicy.extraEgress }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.networkPolicy.extraEgress \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- end }}\n  ingress:\n    # Allow inbound connections\n    - ports:\n        - port: {{ .Values.master.containerPort }}\n        {{- if .Values.sentinel.enabled }}\n        - port: {{ .Values.sentinel.containerPort }}\n        {{- end }}\n      {{- if not .Values.networkPolicy.allowExternal }}\n      from:\n        - podSelector:\n            matchLabels:\n              {{ template \"common.names.fullname\" . }}-client: \"true\"\n        - podSelector:\n            matchLabels: {{- include \"common.labels.matchLabels\" . | nindent 14 }}\n        {{- if .Values.networkPolicy.ingressNSMatchLabels }}\n        - namespaceSelector:\n            matchLabels:\n              {{- range $key, $value := .Values.networkPolicy.ingressNSMatchLabels }}\n              {{ $key | quote }}: {{ $value | quote }}\n              {{- end }}\n          {{- if .Values.networkPolicy.ingressNSPodMatchLabels }}\n          podSelector:\n            matchLabels:\n              {{- range $key, $value := .Values.networkPolicy.ingressNSPodMatchLabels }}\n              {{ $key | quote }}: {{ $value | quote }}\n              {{- end }}\n          {{- end }}\n        {{- end }}\n      {{- end }}\n    {{- if .Values.metrics.enabled }}\n    # Allow prometheus scrapes for metrics\n    - ports:\n        - port: 9121\n    {{- end }}\n    {{- if .Values.networkPolicy.extraIngress }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.networkPolicy.extraIngress \"context\" $ ) | nindent 4 }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/templates/pdb.yaml",
    "content": "{{- if .Values.pdb.create }}\napiVersion: policy/v1beta1\nkind: PodDisruptionBudget\nmetadata:\n  name: {{ template \"common.names.fullname\" . }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\nspec:\n  {{- if .Values.pdb.minAvailable }}\n  minAvailable: {{ .Values.pdb.minAvailable }}\n  {{- end }}\n  {{- if .Values.pdb.maxUnavailable }}\n  maxUnavailable: {{ .Values.pdb.maxUnavailable }}\n  {{- end }}\n  selector:\n    matchLabels: {{- include \"common.labels.matchLabels\" . | nindent 6 }}\n{{- end }}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/templates/prometheusrule.yaml",
    "content": "{{- if and .Values.metrics.enabled .Values.metrics.prometheusRule.enabled }}\napiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  name: {{ template \"common.names.fullname\" . }}\n  {{- if .Values.metrics.prometheusRule.namespace }}\n  namespace: {{ .Values.metrics.prometheusRule.namespace }}\n  {{- else }}\n  namespace: {{ .Release.Namespace | quote }}\n  {{- end }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.metrics.prometheusRule.additionalLabels }}\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.metrics.prometheusRule.additionalLabels \"context\" $) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\nspec:\n  {{- with .Values.metrics.prometheusRule.rules }}\n  groups:\n    - name: {{ template \"common.names.name\" $ }}\n      rules: {{- tpl (toYaml .) $ | nindent 8 }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/templates/replicas/hpa.yaml",
    "content": "{{- if .Values.replica.autoscaling.enabled }}\napiVersion: autoscaling/v2beta1\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: {{ printf \"%s-replicas\" (include \"common.names.fullname\" .) }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: replica\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.commonLabels \"context\" $) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\nspec:\n  scaleTargetRef:\n    apiVersion: {{ include \"common.capabilities.deployment.apiVersion\" . }}\n    kind: StatefulSet\n    name: {{ printf \"%s-replicas\" (include \"common.names.fullname\" .) }}\n  minReplicas: {{ .Values.replica.autoscaling.minReplicas }}\n  maxReplicas: {{ .Values.replica.autoscaling.maxReplicas }}\n  metrics:\n    {{- if .Values.replica.autoscaling.targetCPU }}\n    - type: Resource\n      resource:\n        name: cpu\n        targetAverageUtilization: {{ .Values.replica.autoscaling.targetCPU }}\n    {{- end }}\n    {{- if .Values.replica.autoscaling.targetMemory }}\n    - type: Resource\n      resource:\n        name: memory\n        targetAverageUtilization: {{ .Values.replica.autoscaling.targetMemory }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/templates/replicas/service.yaml",
    "content": "{{- if and (eq .Values.architecture \"replication\") (not .Values.sentinel.enabled) }}\napiVersion: v1\nkind: Service\nmetadata:\n  name: {{ printf \"%s-replicas\" (include \"common.names.fullname\" .) }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: replica\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if or .Values.replica.service.annotations .Values.commonAnnotations }}\n  annotations:\n    {{- if .Values.replica.service.annotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.replica.service.annotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.commonAnnotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- end }}\nspec:\n  type: {{ .Values.replica.service.type }}\n  {{- if eq .Values.replica.service.type \"LoadBalancer\" }}\n  externalTrafficPolicy: {{ .Values.replica.service.externalTrafficPolicy }}\n  {{- end }}\n  {{- if and (eq .Values.replica.service.type \"LoadBalancer\") .Values.replica.service.loadBalancerIP }}\n  loadBalancerIP: {{ .Values.replica.service.loadBalancerIP }}\n  {{- end }}\n  {{- if and (eq .Values.replica.service.type \"LoadBalancer\") .Values.replica.service.loadBalancerSourceRanges }}\n  loadBalancerSourceRanges: {{- toYaml .Values.replica.service.loadBalancerSourceRanges | nindent 4 }}\n  {{- end }}\n  {{- if and (eq .Values.replica.service.type \"ClusterIP\") .Values.replica.service.clusterIP }}\n  clusterIP: {{ .Values.replica.service.clusterIP }}\n  {{- end }}\n  ports:\n    - name: tcp-redis\n      port: {{ .Values.replica.service.port }}\n      targetPort: redis\n      {{- if and (or (eq .Values.replica.service.type \"NodePort\") (eq .Values.replica.service.type \"LoadBalancer\")) .Values.replica.service.nodePort }}\n      nodePort: {{ .Values.replica.service.nodePort }}\n      {{- else if eq .Values.replica.service.type \"ClusterIP\" }}\n      nodePort: null\n      {{- end }}\n  selector: {{- include \"common.labels.matchLabels\" . | nindent 4 }}\n    app.kubernetes.io/component: replica\n{{- end }}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/templates/replicas/statefulset.yaml",
    "content": "{{- if and (eq .Values.architecture \"replication\") (not .Values.sentinel.enabled) }}\napiVersion: {{ include \"common.capabilities.statefulset.apiVersion\" . }}\nkind: StatefulSet\nmetadata:\n  name: {{ printf \"%s-replicas\" (include \"common.names.fullname\" .) }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: replica\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\nspec:\n  replicas: {{ .Values.replica.replicaCount }}\n  selector:\n    matchLabels: {{- include \"common.labels.matchLabels\" . | nindent 6 }}\n      app.kubernetes.io/component: replica\n  serviceName: {{ printf \"%s-headless\" (include \"common.names.fullname\" .) }}\n  {{- if .Values.replica.updateStrategy }}\n  updateStrategy: {{- toYaml .Values.replica.updateStrategy | nindent 4 }}\n  {{- end }}\n  template:\n    metadata:\n      labels: {{- include \"common.labels.standard\" . | nindent 8 }}\n        app.kubernetes.io/component: replica\n        {{- if .Values.replica.podLabels }}\n        {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.replica.podLabels \"context\" $ ) | nindent 8 }}\n        {{- end }}\n        {{- if and .Values.metrics.enabled .Values.metrics.podLabels }}\n        {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.metrics.podLabels \"context\" $ ) | nindent 8 }}\n        {{- end }}\n      annotations:\n        {{- if (include \"redis.createConfigmap\" .) }}\n        checksum/configmap: {{ include (print $.Template.BasePath \"/configmap.yaml\") . | sha256sum }}\n        {{- end }}\n        checksum/health: {{ include (print $.Template.BasePath \"/health-configmap.yaml\") . | sha256sum }}\n        checksum/scripts: {{ include (print $.Template.BasePath \"/scripts-configmap.yaml\") . | sha256sum }}\n        checksum/secret: {{ include (print $.Template.BasePath \"/secret.yaml\") . | sha256sum }}\n        {{- if .Values.replica.podAnnotations }}\n        {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.replica.podAnnotations \"context\" $ ) | nindent 8 }}\n        {{- end }}\n        {{- if and .Values.metrics.enabled .Values.metrics.podAnnotations }}\n        {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.metrics.podAnnotations \"context\" $ ) | nindent 8 }}\n        {{- end }}\n    spec:\n      {{- include \"redis.imagePullSecrets\" . | nindent 6 }}\n      {{- if .Values.replica.hostAliases }}\n      hostAliases: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.hostAliases \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.replica.podSecurityContext.enabled }}\n      securityContext: {{- omit .Values.replica.podSecurityContext \"enabled\" | toYaml | nindent 8 }}\n      {{- end }}\n      serviceAccountName: {{ template \"redis.serviceAccountName\" . }}\n      {{- if .Values.replica.priorityClassName }}\n      priorityClassName: {{ .Values.replica.priorityClassName | quote }}\n      {{- end }}\n      {{- if .Values.replica.affinity }}\n      affinity: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.affinity \"context\" $) | nindent 8 }}\n      {{- else }}\n      affinity:\n        podAffinity: {{- include \"common.affinities.pods\" (dict \"type\" .Values.replica.podAffinityPreset \"component\" \"replica\" \"context\" $) | nindent 10 }}\n        podAntiAffinity: {{- include \"common.affinities.pods\" (dict \"type\" .Values.replica.podAntiAffinityPreset \"component\" \"replica\" \"context\" $) | nindent 10 }}\n        nodeAffinity: {{- include \"common.affinities.nodes\" (dict \"type\" .Values.replica.nodeAffinityPreset.type \"key\" .Values.replica.nodeAffinityPreset.key \"values\" .Values.replica.nodeAffinityPreset.values) | nindent 10 }}\n      {{- end }}\n      {{- if .Values.replica.nodeSelector }}\n      nodeSelector: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.nodeSelector \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.replica.tolerations }}\n      tolerations: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.tolerations \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.replica.spreadConstraints }}\n      topologySpreadConstraints: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.spreadConstraints \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.replica.shareProcessNamespace }}\n      shareProcessNamespace: {{ .Values.replica.shareProcessNamespace }}\n      {{- end }}\n      {{- if .Values.replica.schedulerName }}\n      schedulerName: {{ .Values.replica.schedulerName | quote }}\n      {{- end }}\n      terminationGracePeriodSeconds: {{ .Values.replica.terminationGracePeriodSeconds }}\n      containers:\n        - name: redis\n          image: {{ template \"redis.image\" . }}\n          imagePullPolicy: {{ .Values.image.pullPolicy | quote }}\n          {{- if not .Values.diagnosticMode.enabled }}\n          {{- if .Values.replica.lifecycleHooks }}\n          lifecycle: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.lifecycleHooks \"context\" $) | nindent 12 }}\n          {{- end }}\n          {{- end }}\n          {{- if .Values.replica.containerSecurityContext.enabled }}\n          securityContext: {{- omit .Values.replica.containerSecurityContext \"enabled\" | toYaml | nindent 12 }}\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.command \"context\" $) | nindent 12 }}\n          {{- else if .Values.replica.command }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.command \"context\" $) | nindent 12 }}\n          {{- else }}\n          command:\n            - /bin/bash\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.args \"context\" $) | nindent 12 }}\n          {{- else if .Values.replica.args }}\n          args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.args \"context\" $) | nindent 12 }}\n          {{- else }}\n          args:\n            - -c\n            - /opt/bitnami/scripts/start-scripts/start-replica.sh\n          {{- end }}\n          env:\n            - name: BITNAMI_DEBUG\n              value: {{ ternary \"true\" \"false\" (or .Values.image.debug .Values.diagnosticMode.enabled) | quote }}\n            - name: REDIS_REPLICATION_MODE\n              value: slave\n            - name: REDIS_MASTER_HOST\n              value: {{ template \"common.names.fullname\" . }}-master-0.{{ template \"common.names.fullname\" . }}-headless.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }}\n            - name: REDIS_MASTER_PORT_NUMBER\n              value: {{ .Values.master.containerPort | quote }}\n            - name: ALLOW_EMPTY_PASSWORD\n              value: {{ ternary \"no\" \"yes\" .Values.auth.enabled | quote }}\n            {{- if .Values.auth.enabled }}\n            {{- if .Values.auth.usePasswordFiles }}\n            - name: REDIS_PASSWORD_FILE\n              value: \"/opt/bitnami/redis/secrets/redis-password\"\n            - name: REDIS_MASTER_PASSWORD_FILE\n              value: \"/opt/bitnami/redis/secrets/redis-password\"\n            {{- else }}\n            - name: REDIS_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: {{ template \"redis.secretName\" . }}\n                  key: {{ template \"redis.secretPasswordKey\" . }}\n            - name: REDIS_MASTER_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: {{ template \"redis.secretName\" . }}\n                  key: {{ template \"redis.secretPasswordKey\" . }}\n            {{- end }}\n            {{- end }}\n            - name: REDIS_TLS_ENABLED\n              value: {{ ternary \"yes\" \"no\" .Values.tls.enabled | quote }}\n            {{- if .Values.tls.enabled }}\n            - name: REDIS_TLS_PORT\n              value: {{ .Values.replica.containerPort | quote }}\n            - name:  REDIS_TLS_AUTH_CLIENTS\n              value: {{ ternary \"yes\" \"no\" .Values.tls.authClients | quote }}\n            - name:  REDIS_TLS_CERT_FILE\n              value: {{ template \"redis.tlsCert\" . }}\n            - name:  REDIS_TLS_KEY_FILE\n              value: {{ template \"redis.tlsCertKey\" . }}\n            - name:  REDIS_TLS_CA_FILE\n              value: {{ template \"redis.tlsCACert\" . }}\n            {{- if .Values.tls.dhParamsFilename }}\n            - name:  REDIS_TLS_DH_PARAMS_FILE\n              value: {{ template \"redis.tlsDHParams\" . }}\n            {{- end }}\n            {{- else }}\n            - name: REDIS_PORT\n              value: {{ .Values.replica.containerPort | quote }}\n            {{- end }}\n            {{- if .Values.replica.extraEnvVars }}\n            {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.extraEnvVars \"context\" $) | nindent 12 }}\n            {{- end }}\n          {{- if or .Values.replica.extraEnvVarsCM .Values.replica.extraEnvVarsSecret }}\n          envFrom:\n            {{- if .Values.replica.extraEnvVarsCM }}\n            - configMapRef:\n                name: {{ .Values.replica.extraEnvVarsCM }}\n            {{- end }}\n            {{- if .Values.replica.extraEnvVarsSecret }}\n            - secretRef:\n                name: {{ .Values.replica.extraEnvVarsSecret }}\n            {{- end }}\n          {{- end }}\n          ports:\n            - name: redis\n              containerPort: {{ .Values.replica.containerPort }}\n          {{- if not .Values.diagnosticMode.enabled }}\n          {{- if .Values.replica.livenessProbe.enabled }}\n          livenessProbe:\n            initialDelaySeconds: {{ .Values.replica.livenessProbe.initialDelaySeconds }}\n            periodSeconds: {{ .Values.replica.livenessProbe.periodSeconds }}\n            timeoutSeconds: {{ add1 .Values.replica.livenessProbe.timeoutSeconds }}\n            successThreshold: {{ .Values.replica.livenessProbe.successThreshold }}\n            failureThreshold: {{ .Values.replica.livenessProbe.failureThreshold}}\n            exec:\n              command:\n                - sh\n                - -c\n                - /health/ping_liveness_local_and_master.sh {{ .Values.replica.livenessProbe.timeoutSeconds }}\n          {{- else if .Values.replica.customLivenessProbe }}\n          livenessProbe: {{- toYaml .Values.replica.customLivenessProbe | nindent 12 }}\n          {{- end }}\n          {{- if .Values.replica.readinessProbe.enabled }}\n          readinessProbe:\n            initialDelaySeconds: {{ .Values.replica.readinessProbe.initialDelaySeconds }}\n            periodSeconds: {{ .Values.replica.readinessProbe.periodSeconds }}\n            timeoutSeconds: {{ add1 .Values.replica.readinessProbe.timeoutSeconds }}\n            successThreshold: {{ .Values.replica.readinessProbe.successThreshold }}\n            failureThreshold: {{ .Values.replica.readinessProbe.failureThreshold }}\n            exec:\n              command:\n                - sh\n                - -c\n                - /health/ping_readiness_local_and_master.sh {{ .Values.replica.readinessProbe.timeoutSeconds }}\n          {{- else if .Values.replica.customReadinessProbe }}\n          readinessProbe: {{- toYaml .Values.replica.customReadinessProbe | nindent 12 }}\n          {{- end }}\n          {{- end }}\n          {{- if .Values.replica.resources }}\n          resources: {{- toYaml .Values.replica.resources | nindent 12 }}\n          {{- end }}\n          volumeMounts:\n            - name: start-scripts\n              mountPath: /opt/bitnami/scripts/start-scripts\n            - name: health\n              mountPath: /health\n            {{- if .Values.auth.usePasswordFiles }}\n            - name: redis-password\n              mountPath: /opt/bitnami/redis/secrets/\n            {{- end }}\n            - name: redis-data\n              mountPath: /data\n              subPath: {{ .Values.replica.persistence.subPath }}\n            - name: config\n              mountPath: /opt/bitnami/redis/mounted-etc\n            - name: redis-tmp-conf\n              mountPath: /opt/bitnami/redis/etc\n            {{- if .Values.tls.enabled }}\n            - name: redis-certificates\n              mountPath: /opt/bitnami/redis/certs\n              readOnly: true\n            {{- end }}\n            {{- if .Values.replica.extraVolumeMounts }}\n            {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.replica.extraVolumeMounts \"context\" $ ) | nindent 12 }}\n            {{- end }}\n        {{- if .Values.metrics.enabled }}\n        - name: metrics\n          image: {{ include \"redis.metrics.image\" . }}\n          imagePullPolicy: {{ .Values.metrics.image.pullPolicy | quote }}\n          {{- if .Values.metrics.containerSecurityContext.enabled }}\n          securityContext: {{- omit .Values.metrics.containerSecurityContext \"enabled\" | toYaml | nindent 12 }}\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.command \"context\" $) | nindent 12 }}\n          {{- else }}\n          command:\n            - /bin/bash\n            - -c\n            - |\n              if [[ -f '/secrets/redis-password' ]]; then\n              export REDIS_PASSWORD=$(cat /secrets/redis-password)\n              fi\n              redis_exporter{{- range $key, $value := .Values.metrics.extraArgs }} --{{ $key }}={{ $value }}{{- end }}\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.args \"context\" $) | nindent 12 }}\n          {{- end }}\n          env:\n            - name: REDIS_ALIAS\n              value: {{ template \"common.names.fullname\" . }}\n            {{- if .Values.auth.enabled }}\n            - name: REDIS_USER\n              value: default\n            {{- if (not .Values.auth.usePasswordFiles) }}\n            - name: REDIS_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: {{ template \"redis.secretName\" . }}\n                  key: {{ template \"redis.secretPasswordKey\" . }}\n            {{- end }}\n            {{- end }}\n            {{- if .Values.tls.enabled }}\n            - name: REDIS_ADDR\n              value: rediss://{{ .Values.metrics.redisTargetHost }}:{{ .Values.replica.containerPort }}\n              {{- if .Values.tls.authClients }}\n            - name: REDIS_EXPORTER_TLS_CLIENT_KEY_FILE\n              value: {{ template \"redis.tlsCertKey\" . }}\n            - name: REDIS_EXPORTER_TLS_CLIENT_CERT_FILE\n              value: {{ template \"redis.tlsCert\" . }}\n              {{- end }}\n            - name: REDIS_EXPORTER_TLS_CA_CERT_FILE\n              value: {{ template \"redis.tlsCACert\" . }}\n            {{- end }}\n          ports:\n            - name: metrics\n              containerPort: 9121\n          {{- if .Values.metrics.resources }}\n          resources: {{- toYaml .Values.metrics.resources | nindent 12 }}\n          {{- end }}\n          volumeMounts:\n            {{- if .Values.auth.usePasswordFiles }}\n            - name: redis-password\n              mountPath: /secrets/\n            {{- end }}\n            {{- if .Values.tls.enabled }}\n            - name: redis-certificates\n              mountPath: /opt/bitnami/redis/certs\n              readOnly: true\n            {{- end }}\n            {{- if .Values.metrics.extraVolumeMounts }}\n            {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.metrics.extraVolumeMounts \"context\" $ ) | nindent 12 }}\n            {{- end }}\n        {{- end }}\n        {{- if .Values.replica.sidecars }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.sidecars \"context\" $) | nindent 8 }}\n        {{- end }}\n      {{- $needsVolumePermissions := and .Values.volumePermissions.enabled .Values.replica.persistence.enabled .Values.replica.podSecurityContext.enabled .Values.replica.containerSecurityContext.enabled }}\n      {{- if or .Values.replica.initContainers $needsVolumePermissions .Values.sysctl.enabled }}\n      initContainers:\n        {{- if .Values.replica.initContainers }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.initContainers \"context\" $) | nindent 8 }}\n        {{- end }}\n        {{- if $needsVolumePermissions }}\n        - name: volume-permissions\n          image: {{ include \"redis.volumePermissions.image\" . }}\n          imagePullPolicy: {{ .Values.volumePermissions.image.pullPolicy | quote }}\n          command:\n            - /bin/bash\n            - -ec\n            - |\n              {{- if eq ( toString ( .Values.volumePermissions.containerSecurityContext.runAsUser )) \"auto\" }}\n              chown -R `id -u`:`id -G | cut -d \" \" -f2` {{ .Values.replica.persistence.path }}\n              {{- else }}\n              chown -R {{ .Values.replica.containerSecurityContext.runAsUser }}:{{ .Values.replica.podSecurityContext.fsGroup }} {{ .Values.replica.persistence.path }}\n              {{- end }}\n          {{- if eq ( toString ( .Values.volumePermissions.containerSecurityContext.runAsUser )) \"auto\" }}\n          securityContext: {{- omit .Values.volumePermissions.containerSecurityContext \"runAsUser\" | toYaml | nindent 12 }}\n          {{- else }}\n          securityContext: {{- .Values.volumePermissions.containerSecurityContext | toYaml | nindent 12 }}\n          {{- end }}\n          {{- if .Values.volumePermissions.resources }}\n          resources: {{- toYaml .Values.volumePermissions.resources | nindent 12 }}\n          {{- end }}\n          volumeMounts:\n            - name: redis-data\n              mountPath: {{ .Values.replica.persistence.path }}\n              subPath: {{ .Values.replica.persistence.subPath }}\n        {{- end }}\n        {{- if .Values.sysctl.enabled }}\n        - name: init-sysctl\n          image: {{ include \"redis.sysctl.image\" . }}\n          imagePullPolicy: {{ default \"\" .Values.sysctl.image.pullPolicy | quote }}\n          securityContext:\n            privileged: true\n            runAsUser: 0\n          {{- if .Values.sysctl.command }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.sysctl.command \"context\" $) | nindent 12 }}\n          {{- end }}\n          {{- if .Values.sysctl.resources }}\n          resources: {{- toYaml .Values.sysctl.resources | nindent 12 }}\n          {{- end }}\n          {{- if .Values.sysctl.mountHostSys }}\n          volumeMounts:\n            - name: host-sys\n              mountPath: /host-sys\n          {{- end }}\n        {{- end }}\n      {{- end }}\n      volumes:\n        - name: start-scripts\n          configMap:\n            name: {{ printf \"%s-scripts\" (include \"common.names.fullname\" .) }}\n            defaultMode: 0755\n        - name: health\n          configMap:\n            name: {{ printf \"%s-health\" (include \"common.names.fullname\" .) }}\n            defaultMode: 0755\n        {{- if .Values.auth.usePasswordFiles }}\n        - name: redis-password\n          secret:\n            secretName: {{ template \"redis.secretName\" . }}\n            items:\n            - key: {{ template \"redis.secretPasswordKey\" . }}\n              path: redis-password\n        {{- end }}\n        - name: config\n          configMap:\n            name: {{ include \"redis.configmapName\" . }}\n        {{- if .Values.sysctl.mountHostSys }}\n        - name: host-sys\n          hostPath:\n            path: /sys\n        {{- end }}\n        - name: redis-tmp-conf\n          emptyDir: {}\n        {{- if .Values.tls.enabled }}\n        - name: redis-certificates\n          secret:\n            secretName: {{ include \"redis.tlsSecretName\" . }}\n            defaultMode: 256\n        {{- end }}\n        {{- if .Values.replica.extraVolumes }}\n        {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.replica.extraVolumes \"context\" $ ) | nindent 8 }}\n        {{- end }}\n        {{- if .Values.metrics.extraVolumes }}\n        {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.metrics.extraVolumes \"context\" $ ) | nindent 8 }}\n        {{- end }}\n  {{- if not .Values.replica.persistence.enabled }}\n        - name: redis-data\n          emptyDir: {}\n  {{- else }}\n  volumeClaimTemplates:\n    - metadata:\n        name: redis-data\n        labels: {{- include \"common.labels.matchLabels\" . | nindent 10 }}\n          app.kubernetes.io/component: replica\n        {{- if .Values.replica.persistence.annotations }}\n        annotations: {{- toYaml .Values.replica.persistence.annotations | nindent 10 }}\n        {{- end }}\n      spec:\n        accessModes:\n        {{- range .Values.replica.persistence.accessModes }}\n          - {{ . | quote }}\n        {{- end }}\n        resources:\n          requests:\n            storage: {{ .Values.replica.persistence.size | quote }}\n        {{- if .Values.replica.persistence.selector }}\n        selector: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.persistence.selector \"context\" $) | nindent 10 }}\n        {{- end }}\n        {{- include \"common.storage.class\" (dict \"persistence\" .Values.replica.persistence \"global\" .Values.global) | nindent 8 }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/templates/role.yaml",
    "content": "{{- if .Values.rbac.create }}\napiVersion: {{ include \"common.capabilities.rbac.apiVersion\" . }}\nkind: Role\nmetadata:\n  name: {{ template \"common.names.fullname\" . }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\nrules:\n  {{- if .Values.podSecurityPolicy.enabled }}\n  - apiGroups:\n      - '{{ template \"podSecurityPolicy.apiGroup\" . }}'\n    resources:\n      - 'podsecuritypolicies'\n    verbs:\n      - 'use'\n    resourceNames: [{{ template \"common.names.fullname\" . }}]\n  {{- end }}\n  {{- if .Values.rbac.rules }}\n  {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.rbac.rules \"context\" $ ) | nindent 2 }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/templates/rolebinding.yaml",
    "content": "{{- if .Values.rbac.create }}\napiVersion: {{ include \"common.capabilities.rbac.apiVersion\" . }}\nkind: RoleBinding\nmetadata:\n  name: {{ template \"common.names.fullname\" . }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: {{ template \"common.names.fullname\" . }}\nsubjects:\n  - kind: ServiceAccount\n    name: {{ template \"redis.serviceAccountName\" . }}\n{{- end }}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/templates/scripts-configmap.yaml",
    "content": "apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ printf \"%s-scripts\" (include \"common.names.fullname\" .) }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\ndata:\n{{- if and (eq .Values.architecture \"replication\") .Values.sentinel.enabled }}\n  start-node.sh: |\n    #!/bin/bash\n\n    . /opt/bitnami/scripts/libos.sh\n    . /opt/bitnami/scripts/liblog.sh\n    . /opt/bitnami/scripts/libvalidations.sh\n\n    myip=$(hostname -i)\n\n    # If there are more than one IP, use the first IPv4 address\n    if [[ \"$myip\" = *\" \"* ]]; then\n        myip=$(echo $myip | awk '{if ( match($0,/([0-9]+\\.)([0-9]+\\.)([0-9]+\\.)[0-9]+/) ) { print substr($0,RSTART,RLENGTH); } }')\n    fi\n\n    not_exists_dns_entry() {\n        if [[ -z \"$(getent ahosts \"$HEADLESS_SERVICE\" | grep \"^${myip}\" )\" ]]; then\n            warn \"$HEADLESS_SERVICE does not contain the IP of this pod: ${myip}\"\n            return 1\n        fi\n        debug \"$HEADLESS_SERVICE has my IP: ${myip}\"\n        return 0\n    }\n\n    HEADLESS_SERVICE=\"{{ template \"common.names.fullname\" . }}-headless.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }}\"\n    REDIS_SERVICE=\"{{ template \"common.names.fullname\" . }}.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }}\"\n\n    # Waits for DNS to add this ip to the service DNS entry\n    retry_while not_exists_dns_entry\n\n    export REDIS_REPLICATION_MODE=\"slave\"\n    [[ -z \"$(getent ahosts \"$HEADLESS_SERVICE\" | grep -v \"^${myip}\")\" ]] && export REDIS_REPLICATION_MODE=\"master\"\n\n    {{- if and .Values.replica.containerSecurityContext.runAsUser (eq (.Values.replica.containerSecurityContext.runAsUser | int) 0) }}\n    useradd redis\n    chown -R redis {{ .Values.replica.persistence.path }}\n    {{- end }}\n\n    [[ -f $REDIS_PASSWORD_FILE ]] && export REDIS_PASSWORD=\"$(< \"${REDIS_PASSWORD_FILE}\")\"\n    [[ -f $REDIS_MASTER_PASSWORD_FILE ]] && export REDIS_MASTER_PASSWORD=\"$(< \"${REDIS_MASTER_PASSWORD_FILE}\")\"\n\n    if [[ \"$REDIS_REPLICATION_MODE\" = \"master\" ]]; then\n        debug \"Starting as master node\"\n        if [[ ! -f /opt/bitnami/redis/etc/master.conf ]]; then\n            cp /opt/bitnami/redis/mounted-etc/master.conf /opt/bitnami/redis/etc/master.conf\n        fi\n    else\n        debug \"Starting as replica node\"\n        if [[ ! -f /opt/bitnami/redis/etc/replica.conf ]];then\n            cp /opt/bitnami/redis/mounted-etc/replica.conf /opt/bitnami/redis/etc/replica.conf\n        fi\n        if is_boolean_yes \"$REDIS_TLS_ENABLED\"; then\n            sentinel_info_command=\"redis-cli {{- if .Values.auth.enabled }} -a $REDIS_PASSWORD {{- end }} -h $REDIS_SERVICE -p {{ .Values.sentinel.service.sentinelPort }} --tls --cert ${REDIS_TLS_CERT_FILE} --key ${REDIS_TLS_KEY_FILE} --cacert ${REDIS_TLS_CA_FILE} sentinel get-master-addr-by-name {{ .Values.sentinel.masterSet }}\"\n        else\n            sentinel_info_command=\"redis-cli {{- if .Values.auth.enabled }} -a $REDIS_PASSWORD {{- end }} -h $REDIS_SERVICE -p {{ .Values.sentinel.service.sentinelPort }} sentinel get-master-addr-by-name {{ .Values.sentinel.masterSet }}\"\n        fi\n        REDIS_SENTINEL_INFO=($($sentinel_info_command))\n        REDIS_MASTER_HOST=${REDIS_SENTINEL_INFO[0]}\n        REDIS_MASTER_PORT_NUMBER=${REDIS_SENTINEL_INFO[1]}\n\n        # Immediately attempt to connect to the reported master. If it doesn't exist the connection attempt will either hang\n        # or fail with \"port unreachable\" and give no data. The liveness check will then timeout waiting for the redis\n        # container to be ready and restart the it. By then the new master will likely have been elected\n        if is_boolean_yes \"$REDIS_TLS_ENABLED\"; then\n            sentinel_info_command=\"redis-cli {{- if .Values.auth.enabled }} -a $REDIS_PASSWORD {{- end }} -h $REDIS_MASTER_HOST -p {{ .Values.sentinel.service.sentinelPort }} --tls --cert ${REDIS_TLS_CERT_FILE} --key ${REDIS_TLS_KEY_FILE} --cacert ${REDIS_TLS_CA_FILE} sentinel get-master-addr-by-name {{ .Values.sentinel.masterSet }}\"\n        else\n            sentinel_info_command=\"redis-cli {{- if .Values.auth.enabled }} -a $REDIS_PASSWORD {{- end }} -h $REDIS_MASTER_HOST -p {{ .Values.sentinel.service.sentinelPort }} sentinel get-master-addr-by-name {{ .Values.sentinel.masterSet }}\"\n        fi\n\n        if [[ ! ($($sentinel_info_command)) ]]; then\n            # master doesn't actually exist, this probably means the remaining pods haven't elected a new one yet\n            # and are reporting the old one still. Once this happens the container will get stuck and never see the new\n            # master. We stop here to allow the container to not pass the liveness check and be restarted.\n            exit 1\n        fi\n    fi\n\n    if [[ ! -f /opt/bitnami/redis/etc/redis.conf ]];then\n        cp /opt/bitnami/redis/mounted-etc/redis.conf /opt/bitnami/redis/etc/redis.conf\n    fi\n    {{- if .Values.tls.enabled }}\n    ARGS=(\"--port\" \"0\")\n    ARGS+=(\"--tls-port\" \"${REDIS_TLS_PORT}\")\n    ARGS+=(\"--tls-cert-file\" \"${REDIS_TLS_CERT_FILE}\")\n    ARGS+=(\"--tls-key-file\" \"${REDIS_TLS_KEY_FILE}\")\n    ARGS+=(\"--tls-ca-cert-file\" \"${REDIS_TLS_CA_FILE}\")\n    ARGS+=(\"--tls-auth-clients\" \"${REDIS_TLS_AUTH_CLIENTS}\")\n    ARGS+=(\"--tls-replication\" \"yes\")\n    {{- if .Values.tls.dhParamsFilename }}\n    ARGS+=(\"--tls-dh-params-file\" \"${REDIS_TLS_DH_PARAMS_FILE}\")\n    {{- end }}\n    {{- else }}\n    ARGS=(\"--port\" \"${REDIS_PORT}\")\n    {{- end }}\n\n    if [[ \"$REDIS_REPLICATION_MODE\" = \"slave\" ]]; then\n        ARGS+=(\"--slaveof\" \"${REDIS_MASTER_HOST}\" \"${REDIS_MASTER_PORT_NUMBER}\")\n    fi\n\n    {{- if .Values.auth.enabled }}\n    ARGS+=(\"--requirepass\" \"${REDIS_PASSWORD}\")\n    ARGS+=(\"--masterauth\" \"${REDIS_MASTER_PASSWORD}\")\n    {{- else }}\n    ARGS+=(\"--protected-mode\" \"no\")\n    {{- end }}\n    if [[ \"$REDIS_REPLICATION_MODE\" = \"master\" ]]; then\n        ARGS+=(\"--include\" \"/opt/bitnami/redis/etc/master.conf\")\n    else\n        ARGS+=(\"--include\" \"/opt/bitnami/redis/etc/replica.conf\")\n    fi\n    ARGS+=(\"--include\" \"/opt/bitnami/redis/etc/redis.conf\")\n    {{- if .Values.replica.extraFlags }}\n    {{- range .Values.replica.extraFlags }}\n    ARGS+=({{ . | quote }})\n    {{- end }}\n    {{- end }}\n\n    {{- if .Values.replica.preExecCmds }}\n    {{- .Values.replica.preExecCmds | nindent 4}}\n    {{- end }}\n\n    {{- if .Values.replica.command }}\n    exec {{ .Values.replica.command }} \"${ARGS[@]}\"\n    {{- else }}\n    exec redis-server \"${ARGS[@]}\"\n    {{- end }}\n\n  start-sentinel.sh: |\n    #!/bin/bash\n\n    . /opt/bitnami/scripts/libos.sh\n    . /opt/bitnami/scripts/libvalidations.sh\n    . /opt/bitnami/scripts/libfile.sh\n\n    myip=$(hostname -i)\n\n    # If there are more than one IP, use the first IPv4 address\n    if [[ \"$myip\" = *\" \"* ]]; then\n        myip=$(echo $myip | awk '{if ( match($0,/([0-9]+\\.)([0-9]+\\.)([0-9]+\\.)[0-9]+/) ) { print substr($0,RSTART,RLENGTH); } }')\n    fi\n\n    sentinel_conf_set() {\n        local -r key=\"${1:?missing key}\"\n        local value=\"${2:-}\"\n\n        # Sanitize inputs\n        value=\"${value//\\\\/\\\\\\\\}\"\n        value=\"${value//&/\\\\&}\"\n        value=\"${value//\\?/\\\\?}\"\n        [[ \"$value\" = \"\" ]] && value=\"\\\"$value\\\"\"\n\n        replace_in_file \"/opt/bitnami/redis-sentinel/etc/sentinel.conf\" \"^#*\\s*${key} .*\" \"${key} ${value}\" false\n    }\n    sentinel_conf_add() {\n        echo $'\\n'\"$@\" >> \"/opt/bitnami/redis-sentinel/etc/sentinel.conf\"\n    }\n    host_id() {\n        echo \"$1\" | openssl sha1 | awk '{print $2}'\n    }\n    not_exists_dns_entry() {\n        if [[ -z \"$(getent ahosts \"$HEADLESS_SERVICE\" | grep \"^${myip}\" )\" ]]; then\n            warn \"$HEADLESS_SERVICE does not contain the IP of this pod: ${myip}\"\n            return 1\n        fi\n        debug \"$HEADLESS_SERVICE has my IP: ${myip}\"\n        return 0\n    }\n\n    HEADLESS_SERVICE=\"{{ template \"common.names.fullname\" . }}-headless.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }}\"\n    REDIS_SERVICE=\"{{ template \"common.names.fullname\" . }}.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }}\"\n\n    # Waits for DNS to add this ip to the service DNS entry\n    retry_while not_exists_dns_entry\n\n    [[ -f $REDIS_PASSWORD_FILE ]] && export REDIS_PASSWORD=\"$(< \"${REDIS_PASSWORD_FILE}\")\"\n\n    if [[ ! -f /opt/bitnami/redis-sentinel/etc/sentinel.conf ]]; then\n        cp /opt/bitnami/redis-sentinel/mounted-etc/sentinel.conf /opt/bitnami/redis-sentinel/etc/sentinel.conf\n        {{- if .Values.auth.enabled }}\n        printf \"\\nsentinel auth-pass %s %s\" \"{{ .Values.sentinel.masterSet }}\" \"$REDIS_PASSWORD\" >> /opt/bitnami/redis-sentinel/etc/sentinel.conf\n        {{- if .Values.auth.sentinel }}\n        printf \"\\nrequirepass %s\" \"$REDIS_PASSWORD\" >> /opt/bitnami/redis-sentinel/etc/sentinel.conf\n        {{- end }}\n        {{- end }}\n        {{- if .Values.sentinel.staticID }}\n        printf \"\\nsentinel myid %s\" \"$(host_id \"$HOSTNAME\")\" >> /opt/bitnami/redis-sentinel/etc/sentinel.conf\n        {{- end }}\n    fi\n\n    export REDIS_REPLICATION_MODE=\"slave\"\n\n    if [[ -z \"$(getent ahosts \"$HEADLESS_SERVICE\" | grep -v \"^${myip}\")\" ]]; then\n        export REDIS_REPLICATION_MODE=\"master\"\n    fi\n\n    # check master node firstly and quit as soon as possible when master is not ready.\n    if [[ \"$REDIS_REPLICATION_MODE\" = \"master\" ]]; then\n        REDIS_MASTER_HOST=${myip}\n        REDIS_MASTER_PORT_NUMBER=\"{{ .Values.master.containerPort }}\"\n    else\n        if is_boolean_yes \"$REDIS_SENTINEL_TLS_ENABLED\"; then\n            sentinel_info_command=\"redis-cli {{- if .Values.auth.enabled }} -a $REDIS_PASSWORD {{- end }} -h $REDIS_SERVICE -p {{ .Values.sentinel.service.sentinelPort }} --tls --cert ${REDIS_SENTINEL_TLS_CERT_FILE} --key ${REDIS_SENTINEL_TLS_KEY_FILE} --cacert ${REDIS_SENTINEL_TLS_CA_FILE} sentinel get-master-addr-by-name {{ .Values.sentinel.masterSet }}\"\n        else\n            sentinel_info_command=\"redis-cli {{- if .Values.auth.enabled }} -a $REDIS_PASSWORD {{- end }} -h $REDIS_SERVICE -p {{ .Values.sentinel.service.sentinelPort }} sentinel get-master-addr-by-name {{ .Values.sentinel.masterSet }}\"\n        fi\n        REDIS_SENTINEL_INFO=($($sentinel_info_command))\n        REDIS_MASTER_HOST=${REDIS_SENTINEL_INFO[0]}\n        REDIS_MASTER_PORT_NUMBER=${REDIS_SENTINEL_INFO[1]}\n\n        # Immediately attempt to connect to the reported master. If it doesn't exist the connection attempt will either hang\n        # or fail with \"port unreachable\" and give no data. The liveness check will then timeout waiting for the sentinel\n        # container to be ready and restart the it. By then the new master will likely have been elected\n        if is_boolean_yes \"$REDIS_SENTINEL_TLS_ENABLED\"; then\n            sentinel_info_command=\"redis-cli {{- if .Values.auth.enabled }} -a $REDIS_PASSWORD {{- end }} -h $REDIS_MASTER_HOST -p {{ .Values.sentinel.service.sentinelPort }} --tls --cert ${REDIS_SENTINEL_TLS_CERT_FILE} --key ${REDIS_SENTINEL_TLS_KEY_FILE} --cacert ${REDIS_SENTINEL_TLS_CA_FILE} sentinel get-master-addr-by-name {{ .Values.sentinel.masterSet }}\"\n        else\n            sentinel_info_command=\"redis-cli {{- if .Values.auth.enabled }} -a $REDIS_PASSWORD {{- end }} -h $REDIS_MASTER_HOST -p {{ .Values.sentinel.service.sentinelPort }} sentinel get-master-addr-by-name {{ .Values.sentinel.masterSet }}\"\n        fi\n\n        if [[ ! ($($sentinel_info_command)) ]]; then\n            # master doesn't actually exist, this probably means the remaining pods haven't elected a new one yet\n            # and are reporting the old one still. Once this happens the container will get stuck and never see the new\n            # master. We stop here to allow the container to not pass the liveness check and be restarted.\n            exit 1\n        fi\n    fi\n\n    # Clean sentineles from the current sentinel nodes after failover completed.\n    for node in $( getent ahosts \"$HEADLESS_SERVICE\" | grep -v \"^${myip}\" | cut -f 1 -d ' ' | uniq ); do\n        info \"Cleaning sentinels in sentinel node: $node\"\n        if is_boolean_yes \"$REDIS_SENTINEL_TLS_ENABLED\"; then\n            redis-cli {{- if .Values.auth.enabled }} -a $REDIS_PASSWORD {{- end }} -h $node -p {{ .Values.sentinel.containerPort }} --tls --cert ${REDIS_SENTINEL_TLS_CERT_FILE} --key ${REDIS_SENTINEL_TLS_KEY_FILE} --cacert ${REDIS_SENTINEL_TLS_CA_FILE} sentinel reset \"*\"\n        else\n            redis-cli {{- if .Values.auth.enabled }} -a $REDIS_PASSWORD {{- end }} -h $node -p {{ .Values.sentinel.containerPort }} sentinel reset \"*\"\n        fi\n        sleep {{ .Values.sentinel.cleanDelaySeconds }}\n    done\n    info \"Sentinels clean up done\"\n\n    sentinel_conf_set \"sentinel monitor\" \"{{ .Values.sentinel.masterSet }} \"$REDIS_MASTER_HOST\" \"$REDIS_MASTER_PORT_NUMBER\" {{ .Values.sentinel.quorum }}\"\n\n    add_replica() {\n        if [[ \"$1\" != \"$REDIS_MASTER_HOST\" ]]; then\n            sentinel_conf_add \"sentinel known-replica {{ .Values.sentinel.masterSet }} $1 {{ .Values.sentinel.containerPort }}\"\n        fi\n    }\n\n    {{- if .Values.sentinel.staticID }}\n    # remove generated known sentinels and replicas\n    tmp=\"$(sed -e '/^sentinel known-/d' -e '/^$/d' /opt/bitnami/redis-sentinel/etc/sentinel.conf)\"\n    echo \"$tmp\" > /opt/bitnami/redis-sentinel/etc/sentinel.conf\n\n    for node in $(seq 0 {{ .Values.replica.replicaCount }}); do\n        NAME=\"{{ template \"common.names.fullname\" . }}-node-$node\"\n        IP=\"$(getent hosts \"$NAME.$HEADLESS_SERVICE\" | awk ' {print $1 }')\"\n        if [[ \"$NAME\" != \"$HOSTNAME\" && -n \"$IP\" ]]; then\n            sentinel_conf_add \"sentinel known-sentinel {{ .Values.sentinel.masterSet }} $IP {{ .Values.sentinel.containerPort }} $(host_id \"$NAME\")\"\n            add_replica \"$IP\"\n        fi\n    done\n    add_replica \"${myip}\"\n    {{- end }}\n\n    {{- if .Values.tls.enabled }}\n    ARGS=(\"--port\" \"0\")\n    ARGS+=(\"--tls-port\" \"${REDIS_SENTINEL_TLS_PORT_NUMBER}\")\n    ARGS+=(\"--tls-cert-file\" \"${REDIS_SENTINEL_TLS_CERT_FILE}\")\n    ARGS+=(\"--tls-key-file\" \"${REDIS_SENTINEL_TLS_KEY_FILE}\")\n    ARGS+=(\"--tls-ca-cert-file\" \"${REDIS_SENTINEL_TLS_CA_FILE}\")\n    ARGS+=(\"--tls-replication\" \"yes\")\n    ARGS+=(\"--tls-auth-clients\" \"${REDIS_SENTINEL_TLS_AUTH_CLIENTS}\")\n    {{- if .Values.tls.dhParamsFilename }}\n    ARGS+=(\"--tls-dh-params-file\" \"${REDIS_SENTINEL_TLS_DH_PARAMS_FILE}\")\n    {{- end }}\n    {{- end }}\n    {{- if .Values.sentinel.preExecCmds }}\n    {{ .Values.sentinel.preExecCmds | nindent 4 }}\n    {{- end }}\n    exec redis-server /opt/bitnami/redis-sentinel/etc/sentinel.conf --sentinel {{- if .Values.tls.enabled }} \"${ARGS[@]}\" {{- end }}\n  prestop-sentinel.sh: |\n    #!/bin/bash\n\n    . /opt/bitnami/scripts/libvalidations.sh\n    . /opt/bitnami/scripts/libos.sh\n\n    run_sentinel_command() {\n        if is_boolean_yes \"$REDIS_SENTINEL_TLS_ENABLED\"; then\n            redis-cli -h \"$REDIS_SERVICE\" -p \"{{ .Values.sentinel.service.sentinelPort }}\" --tls --cert \"$REDIS_SENTINEL_TLS_CERT_FILE\" --key \"$REDIS_SENTINEL_TLS_KEY_FILE\" --cacert \"$REDIS_SENTINEL_TLS_CA_FILE\" sentinel \"$@\"\n        else\n            redis-cli -h \"$REDIS_SERVICE\" -p \"{{ .Values.sentinel.service.sentinelPort }}\" sentinel \"$@\"\n        fi\n    }\n    failover_finished() {\n      REDIS_SENTINEL_INFO=($(run_sentinel_command get-master-addr-by-name \"{{ .Values.sentinel.masterSet }}\"))\n      REDIS_MASTER_HOST=\"${REDIS_SENTINEL_INFO[0]}\"\n      [[ \"$REDIS_MASTER_HOST\" != \"${myip}\" ]]\n    }\n\n    REDIS_SERVICE=\"{{ include \"common.names.fullname\" . }}.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }}\"\n\n    # redis-cli automatically consumes credentials from the REDISCLI_AUTH variable\n    [[ -n \"$REDIS_PASSWORD\" ]] && export REDISCLI_AUTH=\"$REDIS_PASSWORD\"\n    [[ -f \"$REDIS_PASSWORD_FILE\" ]] && export REDISCLI_AUTH=\"$(< \"${REDIS_PASSWORD_FILE}\")\"\n\n    if ! failover_finished; then\n        echo \"I am the master pod and you are stopping me. Starting sentinel failover\"\n        # if I am the master, issue a command to failover once and then wait for the failover to finish\n        run_sentinel_command failover \"{{ .Values.sentinel.masterSet }}\"\n        if retry_while \"failover_finished\" \"{{ sub .Values.sentinel.terminationGracePeriodSeconds 10 }}\" 1; then\n            echo \"Master has been successfuly failed over to a different pod.\"\n            exit 0\n        else\n            echo \"Master failover failed\"\n            exit 1\n        fi\n    else\n        exit 0\n    fi\n  prestop-redis.sh: |\n    #!/bin/bash\n\n    . /opt/bitnami/scripts/libvalidations.sh\n    . /opt/bitnami/scripts/libos.sh\n\n    run_redis_command() {\n        if is_boolean_yes \"$REDIS_TLS_ENABLED\"; then\n            redis-cli -h 127.0.0.1 -p \"$REDIS_TLS_PORT\" --tls --cert \"$REDIS_TLS_CERT_FILE\" --key \"$REDIS_TLS_KEY_FILE\" --cacert \"$REDIS_TLS_CA_FILE\" \"$@\"\n        else\n            redis-cli -h 127.0.0.1 -p ${REDIS_PORT} \"$@\"\n        fi\n    }\n    failover_finished() {\n        REDIS_ROLE=$(run_redis_command role | head -1)\n        [[ \"$REDIS_ROLE\" != \"master\" ]]\n    }\n\n    # redis-cli automatically consumes credentials from the REDISCLI_AUTH variable\n    [[ -n \"$REDIS_PASSWORD\" ]] && export REDISCLI_AUTH=\"$REDIS_PASSWORD\"\n    [[ -f \"$REDIS_PASSWORD_FILE\" ]] && export REDISCLI_AUTH=\"$(< \"${REDIS_PASSWORD_FILE}\")\"\n\n    if ! failover_finished; then\n        echo \"Waiting for sentinel to run failover for up to {{ sub .Values.sentinel.terminationGracePeriodSeconds 10 }}s\"\n        retry_while \"failover_finished\" \"{{ sub .Values.sentinel.terminationGracePeriodSeconds 10 }}\" 1\n    else\n        exit 0\n    fi\n\n{{- else }}\n  start-master.sh: |\n    #!/bin/bash\n\n    [[ -f $REDIS_PASSWORD_FILE ]] && export REDIS_PASSWORD=\"$(< \"${REDIS_PASSWORD_FILE}\")\"\n    {{- if and .Values.master.containerSecurityContext.runAsUser (eq (.Values.master.containerSecurityContext.runAsUser | int) 0) }}\n    useradd redis\n    chown -R redis {{ .Values.master.persistence.path }}\n    {{- end }}\n    if [[ ! -f /opt/bitnami/redis/etc/master.conf ]];then\n        cp /opt/bitnami/redis/mounted-etc/master.conf /opt/bitnami/redis/etc/master.conf\n    fi\n    if [[ ! -f /opt/bitnami/redis/etc/redis.conf ]];then\n        cp /opt/bitnami/redis/mounted-etc/redis.conf /opt/bitnami/redis/etc/redis.conf\n    fi\n    {{- if .Values.tls.enabled }}\n    ARGS=(\"--port\" \"0\")\n    ARGS+=(\"--tls-port\" \"${REDIS_TLS_PORT}\")\n    ARGS+=(\"--tls-cert-file\" \"${REDIS_TLS_CERT_FILE}\")\n    ARGS+=(\"--tls-key-file\" \"${REDIS_TLS_KEY_FILE}\")\n    ARGS+=(\"--tls-ca-cert-file\" \"${REDIS_TLS_CA_FILE}\")\n    ARGS+=(\"--tls-auth-clients\" \"${REDIS_TLS_AUTH_CLIENTS}\")\n    {{- if .Values.tls.dhParamsFilename }}\n    ARGS+=(\"--tls-dh-params-file\" \"${REDIS_TLS_DH_PARAMS_FILE}\")\n    {{- end }}\n    {{- else }}\n    ARGS=(\"--port\" \"${REDIS_PORT}\")\n    {{- end }}\n    {{- if .Values.auth.enabled }}\n    ARGS+=(\"--requirepass\" \"${REDIS_PASSWORD}\")\n    ARGS+=(\"--masterauth\" \"${REDIS_PASSWORD}\")\n    {{- else }}\n    ARGS+=(\"--protected-mode\" \"no\")\n    {{- end }}\n    ARGS+=(\"--include\" \"/opt/bitnami/redis/etc/redis.conf\")\n    ARGS+=(\"--include\" \"/opt/bitnami/redis/etc/master.conf\")\n    {{- if .Values.master.extraFlags }}\n    {{- range .Values.master.extraFlags }}\n    ARGS+=({{ . | quote }})\n    {{- end }}\n    {{- end }}\n    {{- if .Values.master.preExecCmds }}\n    {{ .Values.master.preExecCmds | nindent 4}}\n    {{- end }}\n    {{- if .Values.master.command }}\n    exec {{ .Values.master.command }} \"${ARGS[@]}\"\n    {{- else }}\n    exec redis-server \"${ARGS[@]}\"\n    {{- end }}\n  {{- if eq .Values.architecture \"replication\" }}\n  start-replica.sh: |\n    #!/bin/bash\n\n    [[ -f $REDIS_PASSWORD_FILE ]] && export REDIS_PASSWORD=\"$(< \"${REDIS_PASSWORD_FILE}\")\"\n    [[ -f $REDIS_MASTER_PASSWORD_FILE ]] && export REDIS_MASTER_PASSWORD=\"$(< \"${REDIS_MASTER_PASSWORD_FILE}\")\"\n    {{- if and .Values.replica.containerSecurityContext.runAsUser (eq (.Values.replica.containerSecurityContext.runAsUser | int) 0) }}\n    useradd redis\n    chown -R redis {{ .Values.replica.persistence.path }}\n    {{- end }}\n    if [[ ! -f /opt/bitnami/redis/etc/replica.conf ]];then\n        cp /opt/bitnami/redis/mounted-etc/replica.conf /opt/bitnami/redis/etc/replica.conf\n    fi\n    if [[ ! -f /opt/bitnami/redis/etc/redis.conf ]];then\n        cp /opt/bitnami/redis/mounted-etc/redis.conf /opt/bitnami/redis/etc/redis.conf\n    fi\n    {{- if .Values.tls.enabled }}\n    ARGS=(\"--port\" \"0\")\n    ARGS+=(\"--tls-port\" \"${REDIS_TLS_PORT}\")\n    ARGS+=(\"--tls-cert-file\" \"${REDIS_TLS_CERT_FILE}\")\n    ARGS+=(\"--tls-key-file\" \"${REDIS_TLS_KEY_FILE}\")\n    ARGS+=(\"--tls-ca-cert-file\" \"${REDIS_TLS_CA_FILE}\")\n    ARGS+=(\"--tls-auth-clients\" \"${REDIS_TLS_AUTH_CLIENTS}\")\n    ARGS+=(\"--tls-replication\" \"yes\")\n    {{- if .Values.tls.dhParamsFilename }}\n    ARGS+=(\"--tls-dh-params-file\" \"${REDIS_TLS_DH_PARAMS_FILE}\")\n    {{- end }}\n    {{- else }}\n    ARGS=(\"--port\" \"${REDIS_PORT}\")\n    {{- end }}\n    ARGS+=(\"--slaveof\" \"${REDIS_MASTER_HOST}\" \"${REDIS_MASTER_PORT_NUMBER}\")\n    {{- if .Values.auth.enabled }}\n    ARGS+=(\"--requirepass\" \"${REDIS_PASSWORD}\")\n    ARGS+=(\"--masterauth\" \"${REDIS_MASTER_PASSWORD}\")\n    {{- else }}\n    ARGS+=(\"--protected-mode\" \"no\")\n    {{- end }}\n    ARGS+=(\"--include\" \"/opt/bitnami/redis/etc/redis.conf\")\n    ARGS+=(\"--include\" \"/opt/bitnami/redis/etc/replica.conf\")\n    {{- if .Values.replica.extraFlags }}\n    {{- range .Values.replica.extraFlags }}\n    ARGS+=({{ . | quote }})\n    {{- end }}\n    {{- end }}\n    {{- if .Values.replica.preExecCmds }}\n    {{ .Values.replica.preExecCmds | nindent 4}}\n    {{- end }}\n    {{- if .Values.replica.command }}\n    exec {{ .Values.replica.command }} \"${ARGS[@]}\"\n    {{- else }}\n    exec redis-server \"${ARGS[@]}\"\n    {{- end }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/templates/secret.yaml",
    "content": "{{- if and .Values.auth.enabled (not .Values.auth.existingSecret) -}}\napiVersion: v1\nkind: Secret\nmetadata:\n  name: {{ template \"common.names.fullname\" . }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\ntype: Opaque\ndata:\n  redis-password: {{ include \"redis.password\" . | b64enc | quote }}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/templates/sentinel/service.yaml",
    "content": "{{- if and (eq .Values.architecture \"replication\") .Values.sentinel.enabled }}\napiVersion: v1\nkind: Service\nmetadata:\n  name: {{ template \"common.names.fullname\" . }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: node\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if or .Values.sentinel.service.annotations .Values.commonAnnotations }}\n  annotations:\n    {{- if .Values.sentinel.service.annotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.sentinel.service.annotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.commonAnnotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- end }}\nspec:\n  type: {{ .Values.sentinel.service.type }}\n  {{- if eq .Values.sentinel.service.type \"LoadBalancer\" }}\n  externalTrafficPolicy: {{ .Values.sentinel.service.externalTrafficPolicy }}\n  {{- end }}\n  {{- if and (eq .Values.sentinel.service.type \"LoadBalancer\") .Values.sentinel.service.loadBalancerIP }}\n  loadBalancerIP: {{ .Values.sentinel.service.loadBalancerIP }}\n  {{- end }}\n  {{- if and (eq .Values.sentinel.service.type \"LoadBalancer\") .Values.sentinel.service.loadBalancerSourceRanges }}\n  loadBalancerSourceRanges: {{- toYaml .Values.sentinel.service.loadBalancerSourceRanges | nindent 4 }}\n  {{- end }}\n  {{- if and (eq .Values.sentinel.service.type \"ClusterIP\") .Values.sentinel.service.clusterIP }}\n  clusterIP: {{ .Values.sentinel.service.clusterIP }}\n  {{- end }}\n  ports:\n    - name: tcp-redis\n      port: {{ .Values.sentinel.service.port }}\n      targetPort: redis\n      {{- if and (or (eq .Values.sentinel.service.type \"NodePort\") (eq .Values.sentinel.service.type \"LoadBalancer\")) .Values.sentinel.service.nodePorts.redis }}\n      nodePort: {{ .Values.sentinel.service.nodePorts.redis }}\n      {{- else if eq .Values.sentinel.service.type \"ClusterIP\" }}\n      nodePort: null\n      {{- end }}\n    - name: tcp-sentinel\n      port: {{ .Values.sentinel.service.sentinelPort }}\n      targetPort: redis-sentinel\n      {{- if and (or (eq .Values.sentinel.service.type \"NodePort\") (eq .Values.sentinel.service.type \"LoadBalancer\")) .Values.sentinel.service.nodePorts.sentinel }}\n      nodePort: {{ .Values.sentinel.service.nodePorts.sentinel }}\n      {{- else if eq .Values.sentinel.service.type \"ClusterIP\" }}\n      nodePort: null\n      {{- end }}\n  selector: {{- include \"common.labels.matchLabels\" . | nindent 4 }}\n    app.kubernetes.io/component: node\n{{- end }}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/templates/sentinel/statefulset.yaml",
    "content": "{{- if and (eq .Values.architecture \"replication\") .Values.sentinel.enabled }}\napiVersion: {{ include \"common.capabilities.statefulset.apiVersion\" . }}\nkind: StatefulSet\nmetadata:\n  name: {{ printf \"%s-node\" (include \"common.names.fullname\" .) }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: node\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if or .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\nspec:\n  replicas: {{ .Values.replica.replicaCount }}\n  selector:\n    matchLabels: {{- include \"common.labels.matchLabels\" . | nindent 6 }}\n      app.kubernetes.io/component: node\n  serviceName: {{ printf \"%s-headless\" (include \"common.names.fullname\" .) }}\n  {{- if .Values.replica.updateStrategy }}\n  updateStrategy: {{- toYaml .Values.replica.updateStrategy | nindent 4 }}\n  {{- end }}\n  template:\n    metadata:\n      labels: {{- include \"common.labels.standard\" . | nindent 8 }}\n        app.kubernetes.io/component: node\n        {{- if .Values.replica.podLabels }}\n        {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.replica.podLabels \"context\" $ ) | nindent 8 }}\n        {{- end }}\n        {{- if and .Values.metrics.enabled .Values.metrics.podLabels }}\n        {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.metrics.podLabels \"context\" $ ) | nindent 8 }}\n        {{- end }}\n      annotations:\n        {{- if (include \"redis.createConfigmap\" .) }}\n        checksum/configmap: {{ include (print $.Template.BasePath \"/configmap.yaml\") . | sha256sum }}\n        {{- end }}\n        checksum/health: {{ include (print $.Template.BasePath \"/health-configmap.yaml\") . | sha256sum }}\n        checksum/scripts: {{ include (print $.Template.BasePath \"/scripts-configmap.yaml\") . | sha256sum }}\n        checksum/secret: {{ include (print $.Template.BasePath \"/secret.yaml\") . | sha256sum }}\n        {{- if .Values.replica.podAnnotations }}\n        {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.replica.podAnnotations \"context\" $ ) | nindent 8 }}\n        {{- end }}\n        {{- if and .Values.metrics.enabled .Values.metrics.podAnnotations }}\n        {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.metrics.podAnnotations \"context\" $ ) | nindent 8 }}\n        {{- end }}\n    spec:\n      {{- include \"redis.imagePullSecrets\" . | nindent 6 }}\n      {{- if .Values.replica.hostAliases }}\n      hostAliases: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.hostAliases \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.replica.podSecurityContext.enabled }}\n      securityContext: {{- omit .Values.replica.podSecurityContext \"enabled\" | toYaml | nindent 8 }}\n      {{- end }}\n      serviceAccountName: {{ template \"redis.serviceAccountName\" . }}\n      {{- if .Values.replica.priorityClassName }}\n      priorityClassName: {{ .Values.replica.priorityClassName | quote }}\n      {{- end }}\n      {{- if .Values.replica.affinity }}\n      affinity: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.affinity \"context\" $) | nindent 8 }}\n      {{- else }}\n      affinity:\n        podAffinity: {{- include \"common.affinities.pods\" (dict \"type\" .Values.replica.podAffinityPreset \"component\" \"node\" \"context\" $) | nindent 10 }}\n        podAntiAffinity: {{- include \"common.affinities.pods\" (dict \"type\" .Values.replica.podAntiAffinityPreset \"component\" \"node\" \"context\" $) | nindent 10 }}\n        nodeAffinity: {{- include \"common.affinities.nodes\" (dict \"type\" .Values.replica.nodeAffinityPreset.type \"key\" .Values.replica.nodeAffinityPreset.key \"values\" .Values.replica.nodeAffinityPreset.values) | nindent 10 }}\n      {{- end }}\n      {{- if .Values.replica.nodeSelector }}\n      nodeSelector: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.nodeSelector \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.replica.tolerations }}\n      tolerations: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.tolerations \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.replica.spreadConstraints }}\n      topologySpreadConstraints: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.spreadConstraints \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.replica.shareProcessNamespace }}\n      shareProcessNamespace: {{ .Values.replica.shareProcessNamespace }}\n      {{- end }}\n      {{- if .Values.replica.schedulerName }}\n      schedulerName: {{ .Values.replica.schedulerName | quote }}\n      {{- end }}\n      terminationGracePeriodSeconds: {{ .Values.sentinel.terminationGracePeriodSeconds }}\n      containers:\n        - name: redis\n          image: {{ template \"redis.image\" . }}\n          imagePullPolicy: {{ .Values.image.pullPolicy | quote }}\n          {{- if not .Values.diagnosticMode.enabled }}\n          {{- if .Values.replica.lifecycleHooks }}\n          lifecycle: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.lifecycleHooks \"context\" $) | nindent 12 }}\n          {{- end }}\n          {{- end }}\n          {{- if .Values.replica.containerSecurityContext.enabled }}\n          securityContext: {{- omit .Values.replica.containerSecurityContext \"enabled\" | toYaml | nindent 12 }}\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.command \"context\" $) | nindent 12 }}\n          {{- else if .Values.replica.command }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.command \"context\" $) | nindent 12 }}\n          {{- else }}\n          command:\n            - /bin/bash\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.args \"context\" $) | nindent 12 }}\n          {{- else if .Values.replica.args }}\n          args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.args \"context\" $) | nindent 12 }}\n          {{- else }}\n          args:\n            - -c\n            - /opt/bitnami/scripts/start-scripts/start-node.sh\n          {{- end }}\n          env:\n            - name: BITNAMI_DEBUG\n              value: {{ ternary \"true\" \"false\" (or .Values.image.debug .Values.diagnosticMode.enabled) | quote }}\n            - name: REDIS_MASTER_PORT_NUMBER\n              value: {{ .Values.replica.containerPort | quote }}\n            - name: ALLOW_EMPTY_PASSWORD\n              value: {{ ternary \"no\" \"yes\" .Values.auth.enabled | quote }}\n            {{- if .Values.auth.enabled }}\n            {{- if .Values.auth.usePasswordFiles }}\n            - name: REDIS_PASSWORD_FILE\n              value: \"/opt/bitnami/redis/secrets/redis-password\"\n            - name: REDIS_MASTER_PASSWORD_FILE\n              value: \"/opt/bitnami/redis/secrets/redis-password\"\n            {{- else }}\n            - name: REDIS_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: {{ template \"redis.secretName\" . }}\n                  key: {{ template \"redis.secretPasswordKey\" . }}\n            - name: REDIS_MASTER_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: {{ template \"redis.secretName\" . }}\n                  key: {{ template \"redis.secretPasswordKey\" . }}\n            {{- end }}\n            {{- end }}\n            - name: REDIS_TLS_ENABLED\n              value: {{ ternary \"yes\" \"no\" .Values.tls.enabled | quote }}\n            {{- if .Values.tls.enabled }}\n            - name: REDIS_TLS_PORT\n              value: {{ .Values.replica.containerPort | quote }}\n            - name:  REDIS_TLS_AUTH_CLIENTS\n              value: {{ ternary \"yes\" \"no\" .Values.tls.authClients | quote }}\n            - name:  REDIS_TLS_CERT_FILE\n              value: {{ template \"redis.tlsCert\" . }}\n            - name:  REDIS_TLS_KEY_FILE\n              value: {{ template \"redis.tlsCertKey\" . }}\n            - name:  REDIS_TLS_CA_FILE\n              value: {{ template \"redis.tlsCACert\" . }}\n            {{- if .Values.tls.dhParamsFilename }}\n            - name:  REDIS_TLS_DH_PARAMS_FILE\n              value: {{ template \"redis.tlsDHParams\" . }}\n            {{- end }}\n            {{- else }}\n            - name: REDIS_PORT\n              value: {{ .Values.replica.containerPort | quote }}\n            {{- end }}\n            - name: REDIS_DATA_DIR\n              value: {{ .Values.replica.persistence.path }}\n            {{- if .Values.replica.extraEnvVars }}\n            {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.replica.extraEnvVars \"context\" $ ) | nindent 12 }}\n            {{- end }}\n          {{- if or .Values.replica.extraEnvVarsCM .Values.replica.extraEnvVarsSecret }}\n          envFrom:\n            {{- if .Values.replica.extraEnvVarsCM }}\n            - configMapRef:\n              name: {{ .Values.replica.extraEnvVarsCM }}\n            {{- end }}\n            {{- if .Values.replica.extraEnvVarsSecret }}\n            - secretRef:\n                name: {{ .Values.replica.extraEnvVarsSecret }}\n            {{- end }}\n          {{- end }}\n          ports:\n            - name: redis\n              containerPort: {{ .Values.replica.containerPort }}\n          {{- if not .Values.diagnosticMode.enabled }}\n          {{- if .Values.replica.livenessProbe.enabled }}\n          livenessProbe:\n            initialDelaySeconds: {{ .Values.replica.livenessProbe.initialDelaySeconds }}\n            periodSeconds: {{ .Values.replica.livenessProbe.periodSeconds }}\n            timeoutSeconds: {{ .Values.replica.livenessProbe.timeoutSeconds }}\n            successThreshold: {{ .Values.replica.livenessProbe.successThreshold }}\n            failureThreshold: {{ .Values.replica.livenessProbe.failureThreshold}}\n            exec:\n              command:\n                - sh\n                - -c\n                - /health/ping_liveness_local.sh {{ .Values.replica.livenessProbe.timeoutSeconds }}\n          {{- else if .Values.replica.customLivenessProbe }}\n          livenessProbe: {{- toYaml .Values.replica.customLivenessProbe | nindent 12 }}\n          {{- end }}\n          {{- if .Values.replica.readinessProbe.enabled }}\n          readinessProbe:\n            initialDelaySeconds: {{ .Values.replica.readinessProbe.initialDelaySeconds }}\n            periodSeconds: {{ .Values.replica.readinessProbe.periodSeconds }}\n            timeoutSeconds: {{ .Values.replica.readinessProbe.timeoutSeconds }}\n            successThreshold: {{ .Values.replica.readinessProbe.successThreshold }}\n            failureThreshold: {{ .Values.replica.readinessProbe.failureThreshold }}\n            exec:\n              command:\n                - sh\n                - -c\n                - /health/ping_readiness_local.sh {{ .Values.replica.livenessProbe.timeoutSeconds }}\n          {{- else if .Values.replica.customReadinessProbe }}\n          readinessProbe: {{- toYaml .Values.replica.customReadinessProbe | nindent 12 }}\n          {{- end }}\n          {{- end }}\n          {{- if .Values.replica.resources }}\n          resources: {{- toYaml .Values.replica.resources | nindent 12 }}\n          {{- end }}\n          volumeMounts:\n            - name: start-scripts\n              mountPath: /opt/bitnami/scripts/start-scripts\n            - name: health\n              mountPath: /health\n            {{- if .Values.auth.usePasswordFiles }}\n            - name: redis-password\n              mountPath: /opt/bitnami/redis/secrets/\n            {{- end }}\n            - name: redis-data\n              mountPath: {{ .Values.replica.persistence.path }}\n              subPath: {{ .Values.replica.persistence.subPath }}\n            - name: config\n              mountPath: /opt/bitnami/redis/mounted-etc\n            - name: redis-tmp-conf\n              mountPath: /opt/bitnami/redis/etc\n            - name: tmp\n              mountPath: /tmp\n            {{- if .Values.tls.enabled }}\n            - name: redis-certificates\n              mountPath: /opt/bitnami/redis/certs\n              readOnly: true\n            {{- end }}\n            {{- if .Values.replica.extraVolumeMounts }}\n            {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.replica.extraVolumeMounts \"context\" $ ) | nindent 12 }}\n            {{- end }}\n          lifecycle:\n            preStop:\n              exec:\n                command:\n                  - /bin/bash\n                  - -c\n                  - /opt/bitnami/scripts/start-scripts/prestop-redis.sh\n        - name: sentinel\n          image: {{ template \"redis.sentinel.image\" . }}\n          imagePullPolicy: {{ .Values.sentinel.image.pullPolicy | quote }}\n          {{- if .Values.sentinel.lifecycleHooks }}\n          lifecycle: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.sentinel.lifecycleHooks \"context\" $) | nindent 12 }}\n          {{- end }}\n          {{- if .Values.sentinel.containerSecurityContext.enabled }}\n          securityContext: {{- omit .Values.sentinel.containerSecurityContext \"enabled\" | toYaml | nindent 12 }}\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.command \"context\" $) | nindent 12 }}\n          {{- else if .Values.sentinel.command }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.sentinel.command \"context\" $) | nindent 12 }}\n          {{- else }}\n          command:\n            - /bin/bash\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.args \"context\" $) | nindent 12 }}\n          {{- else if .Values.sentinel.args }}\n          args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.sentinel.args \"context\" $) | nindent 12 }}\n          {{- else }}\n          args:\n            - -c\n            - /opt/bitnami/scripts/start-scripts/start-sentinel.sh\n          {{- end }}\n          env:\n            - name: BITNAMI_DEBUG\n              value: {{ ternary \"true\" \"false\" (or .Values.sentinel.image.debug .Values.diagnosticMode.enabled) | quote }}\n            {{- if .Values.auth.enabled }}\n            {{- if .Values.auth.usePasswordFiles }}\n            - name: REDIS_PASSWORD_FILE\n              value: \"/opt/bitnami/redis/secrets/redis-password\"\n            {{- else }}\n            - name: REDIS_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: {{ template \"redis.secretName\" . }}\n                  key: {{ template \"redis.secretPasswordKey\" . }}\n            {{- end }}\n            {{- else }}\n            - name: ALLOW_EMPTY_PASSWORD\n              value: \"yes\"\n            {{- end }}\n            - name: REDIS_SENTINEL_TLS_ENABLED\n              value: {{ ternary \"yes\" \"no\" .Values.tls.enabled | quote }}\n            {{- if .Values.tls.enabled }}\n            - name: REDIS_SENTINEL_TLS_PORT_NUMBER\n              value: {{ .Values.sentinel.containerPort | quote }}\n            - name:  REDIS_SENTINEL_TLS_AUTH_CLIENTS\n              value: {{ ternary \"yes\" \"no\" .Values.tls.authClients | quote }}\n            - name:  REDIS_SENTINEL_TLS_CERT_FILE\n              value: {{ template \"redis.tlsCert\" . }}\n            - name:  REDIS_SENTINEL_TLS_KEY_FILE\n              value: {{ template \"redis.tlsCertKey\" . }}\n            - name:  REDIS_SENTINEL_TLS_CA_FILE\n              value: {{ template \"redis.tlsCACert\" . }}\n            {{- if .Values.tls.dhParamsFilename }}\n            - name:  REDIS_SENTINEL_TLS_DH_PARAMS_FILE\n              value: {{ template \"redis.tls.dhParamsFilename\" . }}\n            {{- end }}\n            {{- else }}\n            - name: REDIS_SENTINEL_PORT\n              value: {{ .Values.sentinel.containerPort | quote }}\n            {{- end }}\n          ports:\n            - name: redis-sentinel\n              containerPort: {{ .Values.sentinel.containerPort }}\n          {{- if not .Values.diagnosticMode.enabled }}\n          {{- if .Values.sentinel.livenessProbe.enabled }}\n          livenessProbe:\n            initialDelaySeconds: {{ .Values.sentinel.livenessProbe.initialDelaySeconds }}\n            periodSeconds: {{ .Values.sentinel.livenessProbe.periodSeconds }}\n            timeoutSeconds: {{ .Values.sentinel.livenessProbe.timeoutSeconds }}\n            successThreshold: {{ .Values.sentinel.livenessProbe.successThreshold }}\n            failureThreshold: {{ .Values.sentinel.livenessProbe.failureThreshold }}\n            exec:\n              command:\n                - sh\n                - -c\n                - /health/ping_sentinel.sh {{ .Values.sentinel.livenessProbe.timeoutSeconds }}\n          {{- else if .Values.sentinel.customLivenessProbe }}\n          livenessProbe: {{- toYaml .Values.sentinel.customLivenessProbe | nindent 12 }}\n          {{- end }}\n          {{- end }}\n          {{- if not .Values.diagnosticMode.enabled }}\n          {{- if .Values.sentinel.readinessProbe.enabled}}\n          readinessProbe:\n            initialDelaySeconds: {{ .Values.sentinel.readinessProbe.initialDelaySeconds }}\n            periodSeconds: {{ .Values.sentinel.readinessProbe.periodSeconds }}\n            timeoutSeconds: {{ .Values.sentinel.readinessProbe.timeoutSeconds }}\n            successThreshold: {{ .Values.sentinel.readinessProbe.successThreshold }}\n            failureThreshold: {{ .Values.sentinel.readinessProbe.failureThreshold }}\n            exec:\n              command:\n                - sh\n                - -c\n                - /health/ping_sentinel.sh {{ .Values.sentinel.livenessProbe.timeoutSeconds }}\n          {{- else if .Values.sentinel.customReadinessProbe }}\n          readinessProbe: {{- toYaml .Values.sentinel.customReadinessProbe | nindent 12 }}\n          {{- end }}\n          {{- end }}\n          {{- if not .Values.diagnosticMode.enabled }}\n          lifecycle:\n            preStop:\n              exec:\n                command:\n                  - /bin/bash\n                  - -c\n                  - /opt/bitnami/scripts/start-scripts/prestop-sentinel.sh\n          {{- end }}\n          {{- if .Values.sentinel.resources }}\n          resources: {{- toYaml .Values.sentinel.resources | nindent 12 }}\n          {{- end }}\n          volumeMounts:\n            - name: start-scripts\n              mountPath: /opt/bitnami/scripts/start-scripts\n            - name: health\n              mountPath: /health\n            {{- if .Values.auth.usePasswordFiles }}\n            - name: redis-password\n              mountPath: /opt/bitnami/redis/secrets/\n            {{- end }}\n            - name: redis-data\n              mountPath: {{ .Values.replica.persistence.path }}\n              subPath: {{ .Values.replica.persistence.subPath }}\n            - name: config\n              mountPath: /opt/bitnami/redis-sentinel/mounted-etc\n            - name: sentinel-tmp-conf\n              mountPath: /opt/bitnami/redis-sentinel/etc\n            {{- if .Values.tls.enabled }}\n            - name: redis-certificates\n              mountPath: /opt/bitnami/redis/certs\n              readOnly: true\n            {{- end }}\n            {{- if .Values.sentinel.extraVolumeMounts }}\n            {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.sentinel.extraVolumeMounts \"context\" $ ) | nindent 12 }}\n            {{- end }}\n        {{- if .Values.metrics.enabled }}\n        - name: metrics\n          image: {{ template \"redis.metrics.image\" . }}\n          imagePullPolicy: {{ .Values.metrics.image.pullPolicy | quote }}\n          {{- if .Values.metrics.containerSecurityContext.enabled }}\n          securityContext: {{- omit .Values.metrics.containerSecurityContext \"enabled\" | toYaml | nindent 12 }}\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.command \"context\" $) | nindent 12 }}\n          {{- else }}\n          command:\n            - /bin/bash\n            - -c\n            - |\n              if [[ -f '/secrets/redis-password' ]]; then\n                  export REDIS_PASSWORD=$(cat /secrets/redis-password)\n              fi\n              redis_exporter{{- range $key, $value := .Values.metrics.extraArgs }} --{{ $key }}={{ $value }}{{- end }}\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.args \"context\" $) | nindent 12 }}\n          {{- end }}\n          env:\n            - name: REDIS_ALIAS\n              value: {{ template \"common.names.fullname\" . }}\n            {{- if .Values.auth.enabled }}\n            - name: REDIS_USER\n              value: default\n            {{- if (not .Values.auth.usePasswordFiles) }}\n            - name: REDIS_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: {{ template \"redis.secretName\" . }}\n                  key: {{ template \"redis.secretPasswordKey\" . }}\n            {{- end }}\n            {{- end }}\n            {{- if .Values.tls.enabled }}\n            - name: REDIS_ADDR\n              value: rediss://{{ .Values.metrics.redisTargetHost }}:{{ .Values.replica.containerPort }}\n            {{- if .Values.tls.authClients }}\n            - name: REDIS_EXPORTER_TLS_CLIENT_KEY_FILE\n              value: {{ template \"redis.tlsCertKey\" . }}\n            - name: REDIS_EXPORTER_TLS_CLIENT_CERT_FILE\n              value: {{ template \"redis.tlsCert\" . }}\n            {{- end }}\n            - name: REDIS_EXPORTER_TLS_CA_CERT_FILE\n              value: {{ template \"redis.tlsCACert\" . }}\n            {{- end }}\n          ports:\n            - name: metrics\n              containerPort: 9121\n          {{- if .Values.metrics.resources }}\n          resources: {{- toYaml .Values.metrics.resources | nindent 12 }}\n          {{- end }}\n          volumeMounts:\n            {{- if .Values.auth.usePasswordFiles }}\n            - name: redis-password\n              mountPath: /secrets/\n            {{- end }}\n            {{- if .Values.tls.enabled }}\n            - name: redis-certificates\n              mountPath: /opt/bitnami/redis/certs\n              readOnly: true\n            {{- end }}\n        {{- end }}\n        {{- if .Values.replica.sidecars }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.sidecars \"context\" $) | nindent 8 }}\n        {{- end }}\n      {{- $needsVolumePermissions := and .Values.volumePermissions.enabled .Values.replica.persistence.enabled .Values.replica.podSecurityContext.enabled .Values.replica.containerSecurityContext.enabled }}\n      {{- if or .Values.replica.initContainers $needsVolumePermissions .Values.sysctl.enabled }}\n      initContainers:\n        {{- if .Values.replica.initContainers }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.replica.initContainers \"context\" $) | nindent 8 }}\n        {{- end }}\n        {{- if $needsVolumePermissions }}\n        - name: volume-permissions\n          image: {{ include \"redis.volumePermissions.image\" . }}\n          imagePullPolicy: {{ .Values.volumePermissions.image.pullPolicy | quote }}\n          command:\n            - /bin/bash\n            - -ec\n            - |\n              {{- if eq ( toString ( .Values.volumePermissions.containerSecurityContext.runAsUser )) \"auto\" }}\n              chown -R `id -u`:`id -G | cut -d \" \" -f2` {{ .Values.replica.persistence.path }}\n              {{- else }}\n              chown -R {{ .Values.replica.containerSecurityContext.runAsUser }}:{{ .Values.replica.podSecurityContext.fsGroup }} {{ .Values.replica.persistence.path }}\n              {{- end }}\n          {{- if eq ( toString ( .Values.volumePermissions.containerSecurityContext.runAsUser )) \"auto\" }}\n          securityContext: {{- omit .Values.volumePermissions.containerSecurityContext \"runAsUser\" | toYaml | nindent 12 }}\n          {{- else }}\n          securityContext: {{- .Values.volumePermissions.containerSecurityContext | toYaml | nindent 12 }}\n          {{- end }}\n          {{- if .Values.volumePermissions.resources }}\n          resources: {{- toYaml .Values.volumePermissions.resources | nindent 12 }}\n          {{- end }}\n          volumeMounts:\n            - name: redis-data\n              mountPath: {{ .Values.replica.persistence.path }}\n              subPath: {{ .Values.replica.persistence.subPath }}\n        {{- end }}\n        {{- if .Values.sysctl.enabled }}\n        - name: init-sysctl\n          image: {{ include \"redis.sysctl.image\" . }}\n          imagePullPolicy: {{ default \"\" .Values.sysctl.image.pullPolicy | quote }}\n          securityContext:\n            privileged: true\n            runAsUser: 0\n          {{- if .Values.sysctl.command }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.sysctl.command \"context\" $) | nindent 12 }}\n          {{- end }}\n          {{- if .Values.sysctl.resources }}\n          resources: {{- toYaml .Values.sysctl.resources | nindent 12 }}\n          {{- end }}\n          {{- if .Values.sysctl.mountHostSys }}\n          volumeMounts:\n            - name: host-sys\n              mountPath: /host-sys\n          {{- end }}\n        {{- end }}\n      {{- end }}\n      volumes:\n        - name: start-scripts\n          configMap:\n            name: {{ printf \"%s-scripts\" (include \"common.names.fullname\" .) }}\n            defaultMode: 0755\n        - name: health\n          configMap:\n            name: {{ printf \"%s-health\" (include \"common.names.fullname\" .) }}\n            defaultMode: 0755\n        {{- if .Values.auth.usePasswordFiles }}\n        - name: redis-password\n          secret:\n            secretName: {{ template \"redis.secretName\" . }}\n            items:\n            - key: {{ template \"redis.secretPasswordKey\" . }}\n              path: redis-password\n        {{- end }}\n        - name: config\n          configMap:\n            name: {{ include \"redis.configmapName\" . }}\n        {{- if .Values.sysctl.mountHostSys }}\n        - name: host-sys\n          hostPath:\n            path: /sys\n        {{- end }}\n        - name: sentinel-tmp-conf\n          emptyDir: {}\n        - name: redis-tmp-conf\n          emptyDir: {}\n        - name: tmp\n          emptyDir: {}\n        {{- if .Values.replica.extraVolumes }}\n        {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.replica.extraVolumes \"context\" $ ) | nindent 8 }}\n        {{- end }}\n        {{- if .Values.sentinel.extraVolumes }}\n        {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.sentinel.extraVolumes \"context\" $ ) | nindent 8 }}\n        {{- end }}\n        {{- if .Values.tls.enabled }}\n        - name: redis-certificates\n          secret:\n            secretName: {{ include \"redis.tlsSecretName\" . }}\n            defaultMode: 256\n        {{- end }}\n  {{- if not .Values.replica.persistence.enabled }}\n        - name: redis-data\n          emptyDir: {}\n  {{- else }}\n  volumeClaimTemplates:\n    - metadata:\n        name: redis-data\n        labels: {{- include \"common.labels.matchLabels\" . | nindent 10 }}\n          app.kubernetes.io/component: node\n        {{- if .Values.replica.persistence.annotations }}\n        annotations: {{- toYaml .Values.replica.persistence.annotations | nindent 10 }}\n        {{- end }}\n      spec:\n        accessModes:\n        {{- range .Values.replica.persistence.accessModes }}\n          - {{ . | quote }}\n        {{- end }}\n        resources:\n          requests:\n            storage: {{ .Values.replica.persistence.size | quote }}\n        {{- if .Values.replica.persistence.selector }}\n        selector: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.replica.persistence.selector \"context\" $) | nindent 10 }}\n        {{- end }}\n        {{- include \"common.storage.class\" (dict \"persistence\" .Values.replica.persistence \"global\" .Values.global) | nindent 8 }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/templates/serviceaccount.yaml",
    "content": "{{- if .Values.serviceAccount.create }}\napiVersion: v1\nkind: ServiceAccount\nautomountServiceAccountToken: {{ .Values.serviceAccount.automountServiceAccountToken }}\nmetadata:\n  name: {{ template \"redis.serviceAccountName\" . }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if or .Values.commonAnnotations .Values.serviceAccount.annotations }}\n  annotations:\n    {{- if or .Values.commonAnnotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.serviceAccount.annotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.serviceAccount.annotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/templates/servicemonitor.yaml",
    "content": "{{- if and .Values.metrics.enabled .Values.metrics.serviceMonitor.enabled }}\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  name: {{ template \"common.names.fullname\" . }}\n  {{- if .Values.metrics.serviceMonitor.namespace }}\n  namespace: {{ .Values.metrics.serviceMonitor.namespace }}\n  {{- else }}\n  namespace: {{ .Release.Namespace | quote }}\n  {{- end }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.metrics.serviceMonitor.additionalLabels }}\n    {{- include \"common.tplvalues.render\" (dict \"value\" .Values.metrics.serviceMonitor.additionalLabels \"context\" $) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\nspec:\n  endpoints:\n    - port: tcp-metrics\n      {{- if .Values.metrics.serviceMonitor.interval }}\n      interval: {{ .Values.metrics.serviceMonitor.interval }}\n      {{- end }}\n      {{- if .Values.metrics.serviceMonitor.scrapeTimeout }}\n      scrapeTimeout: {{ .Values.metrics.serviceMonitor.scrapeTimeout }}\n      {{- end }}\n      {{- if .Values.metrics.serviceMonitor.honorLabels }}\n      honorLabels: {{ .Values.metrics.serviceMonitor.honorLabels }}\n      {{- end }}\n      {{- if .Values.metrics.serviceMonitor.relabellings }}\n      metricRelabelings: {{- toYaml .Values.metrics.serviceMonitor.relabellings | nindent 6 }}\n      {{- end }}\n  namespaceSelector:\n    matchNames:\n      - {{ .Release.Namespace }}\n  selector:\n    matchLabels: {{- include \"common.labels.matchLabels\" . | nindent 6 }}\n      app.kubernetes.io/component: metrics\n{{- end }}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/templates/tls-secret.yaml",
    "content": "{{- if (include \"redis.createTlsSecret\" .) }}\n{{- $ca := genCA \"redis-ca\" 365 }}\n{{- $releaseNamespace := .Release.Namespace }}\n{{- $clusterDomain := .Values.clusterDomain }}\n{{- $fullname := include \"common.names.fullname\" . }}\n{{- $serviceName := include \"common.names.fullname\" . }}\n{{- $headlessServiceName := printf \"%s-headless\" (include \"common.names.fullname\" .) }}\n{{- $altNames := list (printf \"*.%s.%s.svc.%s\" $serviceName $releaseNamespace $clusterDomain) (printf \"%s.%s.svc.%s\" $serviceName $releaseNamespace $clusterDomain) (printf \"*.%s.%s.svc.%s\" $headlessServiceName $releaseNamespace $clusterDomain) (printf \"%s.%s.svc.%s\" $headlessServiceName $releaseNamespace $clusterDomain) \"127.0.0.1\" \"localhost\" $fullname }}\n{{- $crt := genSignedCert $fullname nil $altNames 365 $ca }}\napiVersion: v1\nkind: Secret\nmetadata:\n  name: {{ include \"common.names.fullname\" . }}-crt\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\ntype: kubernetes.io/tls\ndata:\n  ca.crt: {{ $ca.Cert | b64enc | quote }}\n  tls.crt: {{ $crt.Cert | b64enc | quote }}\n  tls.key: {{ $crt.Key | b64enc | quote }}\n{{- end }}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/values.schema.json",
    "content": "{\n  \"$schema\": \"http://json-schema.org/schema#\",\n  \"type\": \"object\",\n  \"properties\": {\n    \"architecture\": {\n      \"type\": \"string\",\n      \"title\": \"Redis architecture\",\n      \"form\": true,\n      \"description\": \"Allowed values: `standalone` or `replication`\",\n      \"enum\": [\"standalone\", \"replication\"]\n    },\n    \"auth\": {\n      \"type\": \"object\",\n      \"title\": \"Authentication configuration\",\n      \"form\": true,\n      \"properties\": {\n        \"enabled\": {\n          \"type\": \"boolean\",\n          \"form\": true,\n          \"title\": \"Use password authentication\"\n        },\n        \"password\": {\n          \"type\": \"string\",\n          \"title\": \"Redis password\",\n          \"form\": true,\n          \"description\": \"Defaults to a random 10-character alphanumeric string if not set\",\n          \"hidden\": {\n            \"value\": false,\n            \"path\": \"auth/enabled\"\n          }\n        }\n      }\n    },\n    \"master\": {\n      \"type\": \"object\",\n      \"title\": \"Master replicas settings\",\n      \"form\": true,\n      \"properties\": {\n        \"persistence\": {\n          \"type\": \"object\",\n          \"title\": \"Persistence for master replicas\",\n          \"form\": true,\n          \"properties\": {\n            \"enabled\": {\n              \"type\": \"boolean\",\n              \"form\": true,\n              \"title\": \"Enable persistence\",\n              \"description\": \"Enable persistence using Persistent Volume Claims\"\n            },\n            \"size\": {\n              \"type\": \"string\",\n              \"title\": \"Persistent Volume Size\",\n              \"form\": true,\n              \"render\": \"slider\",\n              \"sliderMin\": 1,\n              \"sliderMax\": 100,\n              \"sliderUnit\": \"Gi\",\n              \"hidden\": {\n                \"value\": false,\n                \"path\": \"master/persistence/enabled\"\n              }\n            }\n          }\n        }\n      }\n    },\n    \"replica\": {\n      \"type\": \"object\",\n      \"title\": \"Redis replicas settings\",\n      \"form\": true,\n      \"hidden\": {\n        \"value\": \"standalone\",\n        \"path\": \"architecture\"\n      },\n      \"properties\": {\n        \"replicaCount\": {\n          \"type\": \"integer\",\n          \"form\": true,\n          \"title\": \"Number of Redis replicas\"\n        },\n        \"persistence\": {\n          \"type\": \"object\",\n          \"title\": \"Persistence for Redis replicas\",\n          \"form\": true,\n          \"properties\": {\n            \"enabled\": {\n              \"type\": \"boolean\",\n              \"form\": true,\n              \"title\": \"Enable persistence\",\n              \"description\": \"Enable persistence using Persistent Volume Claims\"\n            },\n            \"size\": {\n              \"type\": \"string\",\n              \"title\": \"Persistent Volume Size\",\n              \"form\": true,\n              \"render\": \"slider\",\n              \"sliderMin\": 1,\n              \"sliderMax\": 100,\n              \"sliderUnit\": \"Gi\",\n              \"hidden\": {\n                \"value\": false,\n                \"path\": \"replica/persistence/enabled\"\n              }\n            }\n          }\n        }\n      }\n    },\n    \"volumePermissions\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"enabled\": {\n          \"type\": \"boolean\",\n          \"form\": true,\n          \"title\": \"Enable Init Containers\",\n          \"description\": \"Use an init container to set required folder permissions on the data volume before mounting it in the final destination\"\n        }\n      }\n    },\n    \"metrics\": {\n      \"type\": \"object\",\n      \"form\": true,\n      \"title\": \"Prometheus metrics details\",\n      \"properties\": {\n        \"enabled\": {\n          \"type\": \"boolean\",\n          \"title\": \"Create Prometheus metrics exporter\",\n          \"description\": \"Create a side-car container to expose Prometheus metrics\",\n          \"form\": true\n        },\n        \"serviceMonitor\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"enabled\": {\n              \"type\": \"boolean\",\n              \"title\": \"Create Prometheus Operator ServiceMonitor\",\n              \"description\": \"Create a ServiceMonitor to track metrics using Prometheus Operator\",\n              \"form\": true,\n              \"hidden\": {\n                \"value\": false,\n                \"path\": \"metrics/enabled\"\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/charts/redis/values.yaml",
    "content": "## @section Global parameters\n## Global Docker image parameters\n## Please, note that this will override the image parameters, including dependencies, configured to use the global value\n## Current available global Docker image parameters: imageRegistry, imagePullSecrets and storageClass\n##\n\n## @param global.imageRegistry Global Docker image registry\n## @param global.imagePullSecrets Global Docker registry secret names as an array\n## @param global.storageClass Global StorageClass for Persistent Volume(s)\n## @param global.redis.password Global Redis&trade; password (overrides `auth.password`)\n##\nglobal:\n  imageRegistry: \"\"\n  ## E.g.\n  ## imagePullSecrets:\n  ##   - myRegistryKeySecretName\n  ##\n  imagePullSecrets: []\n  storageClass: \"\"\n  redis:\n    password: \"\"\n\n## @section Common parameters\n##\n\n## @param kubeVersion Override Kubernetes version\n##\nkubeVersion: \"\"\n## @param nameOverride String to partially override common.names.fullname\n##\nnameOverride: \"\"\n## @param fullnameOverride String to fully override common.names.fullname\n##\nfullnameOverride: \"\"\n## @param commonLabels Labels to add to all deployed objects\n##\ncommonLabels: {}\n## @param commonAnnotations Annotations to add to all deployed objects\n##\ncommonAnnotations: {}\n## @param clusterDomain Kubernetes cluster domain name\n##\nclusterDomain: cluster.local\n## @param extraDeploy Array of extra objects to deploy with the release\n##\nextraDeploy: []\n\n## Enable diagnostic mode in the deployment\n##\ndiagnosticMode:\n  ## @param diagnosticMode.enabled Enable diagnostic mode (all probes will be disabled and the command will be overridden)\n  ##\n  enabled: false\n  ## @param diagnosticMode.command Command to override all containers in the deployment\n  ##\n  command:\n    - sleep\n  ## @param diagnosticMode.args Args to override all containers in the deployment\n  ##\n  args:\n    - infinity\n\n## @section Redis&trade; Image parameters\n##\n\n## Bitnami Redis&trade; image\n## ref: https://hub.docker.com/r/bitnami/redis/tags/\n## @param image.registry Redis&trade; image registry\n## @param image.repository Redis&trade; image repository\n## @param image.tag Redis&trade; image tag (immutable tags are recommended)\n## @param image.pullPolicy Redis&trade; image pull policy\n## @param image.pullSecrets Redis&trade; image pull secrets\n## @param image.debug Enable image debug mode\n##\nimage:\n  registry: docker.io\n  repository: bitnami/redis\n  tag: 6.2.5-debian-10-r11\n  ## Specify a imagePullPolicy\n  ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'\n  ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images\n  ##\n  pullPolicy: IfNotPresent\n  ## Optionally specify an array of imagePullSecrets.\n  ## Secrets must be manually created in the namespace.\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\n  ## e.g:\n  ## pullSecrets:\n  ##   - myRegistryKeySecretName\n  ##\n  pullSecrets: []\n  ## Enable debug mode\n  ##\n  debug: false\n\n## @section Redis&trade; common configuration parameters\n## https://github.com/bitnami/bitnami-docker-redis#configuration\n##\n\n## @param architecture Redis&trade; architecture. Allowed values: `standalone` or `replication`\n##\narchitecture: replication\n## Redis&trade; Authentication parameters\n## ref: https://github.com/bitnami/bitnami-docker-redis#setting-the-server-password-on-first-run\n##\nauth:\n  ## @param auth.enabled Enable password authentication\n  ##\n  enabled: true\n  ## @param auth.sentinel Enable password authentication on sentinels too\n  ##\n  sentinel: true\n  ## @param auth.password Redis&trade; password\n  ## Defaults to a random 10-character alphanumeric string if not set\n  ##\n  password: \"\"\n  ## @param auth.existingSecret The name of an existing secret with Redis&trade; credentials\n  ## NOTE: When it's set, the previous `auth.password` parameter is ignored\n  ##\n  existingSecret: \"\"\n  ## @param auth.existingSecretPasswordKey Password key to be retrieved from existing secret\n  ## NOTE: ignored unless `auth.existingSecret` parameter is set\n  ##\n  existingSecretPasswordKey: \"\"\n  ## @param auth.usePasswordFiles Mount credentials as files instead of using an environment variable\n  ##\n  usePasswordFiles: false\n## @param commonConfiguration [string] Common configuration to be added into the ConfigMap\n## ref: https://redis.io/topics/config\n##\ncommonConfiguration: |-\n  # Enable AOF https://redis.io/topics/persistence#append-only-file\n  appendonly yes\n  # Disable RDB persistence, AOF persistence already enabled.\n  save \"\"\n## @param existingConfigmap The name of an existing ConfigMap with your custom configuration for Redis&trade; nodes\n##\nexistingConfigmap: \"\"\n\n## @section Redis&trade; master configuration parameters\n##\n\nmaster:\n  ## @param master.configuration Configuration for Redis&trade; master nodes\n  ## ref: https://redis.io/topics/config\n  ##\n  configuration: \"\"\n  ## @param master.disableCommands [array] Array with Redis&trade; commands to disable on master nodes\n  ## Commands will be completely disabled by renaming each to an empty string.\n  ## ref: https://redis.io/topics/security#disabling-of-specific-commands\n  ##\n  disableCommands:\n    - FLUSHDB\n    - FLUSHALL\n  ## @param master.command Override default container command (useful when using custom images)\n  ##\n  command: []\n  ## @param master.args Override default container args (useful when using custom images)\n  ##\n  args: []\n  ## @param master.preExecCmds Additional commands to run prior to starting Redis&trade; master\n  ##\n  preExecCmds: []\n  ## @param master.extraFlags Array with additional command line flags for Redis&trade; master\n  ## e.g:\n  ## extraFlags:\n  ##  - \"--maxmemory-policy volatile-ttl\"\n  ##  - \"--repl-backlog-size 1024mb\"\n  ##\n  extraFlags: []\n  ## @param master.extraEnvVars Array with extra environment variables to add to Redis&trade; master nodes\n  ## e.g:\n  ## extraEnvVars:\n  ##   - name: FOO\n  ##     value: \"bar\"\n  ##\n  extraEnvVars: []\n  ## @param master.extraEnvVarsCM Name of existing ConfigMap containing extra env vars for Redis&trade; master nodes\n  ##\n  extraEnvVarsCM: \"\"\n  ## @param master.extraEnvVarsSecret Name of existing Secret containing extra env vars for Redis&trade; master nodes\n  ##\n  extraEnvVarsSecret: \"\"\n  ## @param master.containerPort Container port to open on Redis&trade; master nodes\n  ##\n  containerPort: 6379\n  ## Configure extra options for Redis&trade; containers' liveness and readiness probes\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes\n  ## @param master.livenessProbe.enabled Enable livenessProbe on Redis&trade; master nodes\n  ## @param master.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe\n  ## @param master.livenessProbe.periodSeconds Period seconds for livenessProbe\n  ## @param master.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe\n  ## @param master.livenessProbe.failureThreshold Failure threshold for livenessProbe\n  ## @param master.livenessProbe.successThreshold Success threshold for livenessProbe\n  ##\n  livenessProbe:\n    enabled: true\n    initialDelaySeconds: 20\n    periodSeconds: 5\n    timeoutSeconds: 5\n    successThreshold: 1\n    failureThreshold: 5\n  ## @param master.readinessProbe.enabled Enable readinessProbe on Redis&trade; master nodes\n  ## @param master.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe\n  ## @param master.readinessProbe.periodSeconds Period seconds for readinessProbe\n  ## @param master.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe\n  ## @param master.readinessProbe.failureThreshold Failure threshold for readinessProbe\n  ## @param master.readinessProbe.successThreshold Success threshold for readinessProbe\n  ##\n  readinessProbe:\n    enabled: true\n    initialDelaySeconds: 20\n    periodSeconds: 5\n    timeoutSeconds: 1\n    successThreshold: 1\n    failureThreshold: 5\n  ## @param master.customLivenessProbe Custom livenessProbe that overrides the default one\n  ##\n  customLivenessProbe: {}\n  ## @param master.customReadinessProbe Custom readinessProbe that overrides the default one\n  ##\n  customReadinessProbe: {}\n  ## Redis&trade; master resource requests and limits\n  ## ref: http://kubernetes.io/docs/user-guide/compute-resources/\n  ## @param master.resources.limits The resources limits for the Redis&trade; master containers\n  ## @param master.resources.requests The requested resources for the Redis&trade; master containers\n  ##\n  resources:\n    limits: {}\n    requests: {}\n  ## Configure Pods Security Context\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod\n  ## @param master.podSecurityContext.enabled Enabled Redis&trade; master pods' Security Context\n  ## @param master.podSecurityContext.fsGroup Set Redis&trade; master pod's Security Context fsGroup\n  ##\n  podSecurityContext:\n    enabled: true\n    fsGroup: 1001\n  ## Configure Container Security Context\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod\n  ## @param master.containerSecurityContext.enabled Enabled Redis&trade; master containers' Security Context\n  ## @param master.containerSecurityContext.runAsUser Set Redis&trade; master containers' Security Context runAsUser\n  ##\n  containerSecurityContext:\n    enabled: true\n    runAsUser: 1001\n  ## @param master.schedulerName Alternate scheduler for Redis&trade; master pods\n  ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/\n  ##\n  schedulerName: \"\"\n  ## @param master.updateStrategy.type Redis&trade; master statefulset strategy type\n  ## @skip master.updateStrategy.rollingUpdate\n  ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies\n  ##\n  updateStrategy:\n    ## StrategyType\n    ## Can be set to RollingUpdate or OnDelete\n    ##\n    type: RollingUpdate\n    rollingUpdate: {}\n  ## @param master.priorityClassName Redis&trade; master pods' priorityClassName\n  ##\n  priorityClassName: \"\"\n  ## @param master.hostAliases Redis&trade; master pods host aliases\n  ## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/\n  ##\n  hostAliases: []\n  ## @param master.podLabels Extra labels for Redis&trade; master pods\n  ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/\n  ##\n  podLabels: {}\n  ## @param master.podAnnotations Annotations for Redis&trade; master pods\n  ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/\n  ##\n  podAnnotations: {}\n  ## @param master.shareProcessNamespace Share a single process namespace between all of the containers in Redis&trade; master pods\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/share-process-namespace/\n  ##\n  shareProcessNamespace: false\n  ## @param master.podAffinityPreset Pod affinity preset. Ignored if `master.affinity` is set. Allowed values: `soft` or `hard`\n  ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity\n  ##\n  podAffinityPreset: \"\"\n  ## @param master.podAntiAffinityPreset Pod anti-affinity preset. Ignored if `master.affinity` is set. Allowed values: `soft` or `hard`\n  ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity\n  ##\n  podAntiAffinityPreset: soft\n  ## Node master.affinity preset\n  ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity\n  ##\n  nodeAffinityPreset:\n    ## @param master.nodeAffinityPreset.type Node affinity preset type. Ignored if `master.affinity` is set. Allowed values: `soft` or `hard`\n    ##\n    type: \"\"\n    ## @param master.nodeAffinityPreset.key Node label key to match. Ignored if `master.affinity` is set\n    ##\n    key: \"\"\n    ## @param master.nodeAffinityPreset.values Node label values to match. Ignored if `master.affinity` is set\n    ## E.g.\n    ## values:\n    ##   - e2e-az1\n    ##   - e2e-az2\n    ##\n    values: []\n  ## @param master.affinity Affinity for Redis&trade; master pods assignment\n  ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity\n  ## NOTE: `master.podAffinityPreset`, `master.podAntiAffinityPreset`, and `master.nodeAffinityPreset` will be ignored when it's set\n  ##\n  affinity: {}\n  ## @param master.nodeSelector Node labels for Redis&trade; master pods assignment\n  ## ref: https://kubernetes.io/docs/user-guide/node-selection/\n  ##\n  nodeSelector: {}\n  ## @param master.tolerations Tolerations for Redis&trade; master pods assignment\n  ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/\n  ##\n  tolerations: []\n  ## @param master.spreadConstraints Spread Constraints for Redis&trade; master pod assignment\n  ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/\n  ## E.g.\n  ## spreadConstraints:\n  ##   - maxSkew: 1\n  ##     topologyKey: node\n  ##     whenUnsatisfiable: DoNotSchedule\n  ##\n  spreadConstraints: {}\n  ## @param master.lifecycleHooks for the Redis&trade; master container(s) to automate configuration before or after startup\n  ##\n  lifecycleHooks: {}\n  ## @param master.extraVolumes Optionally specify extra list of additional volumes for the Redis&trade; master pod(s)\n  ##\n  extraVolumes: []\n  ## @param master.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the Redis&trade; master container(s)\n  ##\n  extraVolumeMounts: []\n  ## @param master.sidecars Add additional sidecar containers to the Redis&trade; master pod(s)\n  ## e.g:\n  ## sidecars:\n  ##   - name: your-image-name\n  ##     image: your-image\n  ##     imagePullPolicy: Always\n  ##     ports:\n  ##       - name: portname\n  ##         containerPort: 1234\n  ##\n  sidecars: []\n  ## @param master.initContainers Add additional init containers to the Redis&trade; master pod(s)\n  ## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n  ## e.g:\n  ## initContainers:\n  ##  - name: your-image-name\n  ##    image: your-image\n  ##    imagePullPolicy: Always\n  ##    command: ['sh', '-c', 'echo \"hello world\"']\n  ##\n  initContainers: []\n  ## Persistence parameters\n  ## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/\n  ##\n  persistence:\n    ## @param master.persistence.enabled Enable persistence on Redis&trade; master nodes using Persistent Volume Claims\n    ##\n    enabled: true\n    ## @param master.persistence.path The path the volume will be mounted at on Redis&trade; master containers\n    ## NOTE: Useful when using different Redis&trade; images\n    ##\n    path: /data\n    ## @param master.persistence.subPath The subdirectory of the volume to mount on Redis&trade; master containers\n    ## NOTE: Useful in dev environments\n    ##\n    subPath: \"\"\n    ## @param master.persistence.storageClass Persistent Volume storage class\n    ## If defined, storageClassName: <storageClass>\n    ## If set to \"-\", storageClassName: \"\", which disables dynamic provisioning\n    ## If undefined (the default) or set to null, no storageClassName spec is set, choosing the default provisioner\n    ##\n    storageClass: \"\"\n    ## @param master.persistence.accessModes [array] Persistent Volume access modes\n    ##\n    accessModes:\n      - ReadWriteOnce\n    ## @param master.persistence.size Persistent Volume size\n    ##\n    size: 8Gi\n    ## @param master.persistence.annotations Additional custom annotations for the PVC\n    ##\n    annotations: {}\n    ## @param master.persistence.selector Additional labels to match for the PVC\n    ## e.g:\n    ## selector:\n    ##   matchLabels:\n    ##     app: my-app\n    ##\n    selector: {}\n    ## @param master.persistence.existingClaim Use a existing PVC which must be created manually before bound\n    ## NOTE: requires master.persistence.enabled: true\n    ##\n    existingClaim: \"\"\n  ## Redis&trade; master service parameters\n  ##\n  service:\n    ## @param master.service.type Redis&trade; master service type\n    ##\n    type: ClusterIP\n    ## @param master.service.port Redis&trade; master service port\n    ##\n    port: 6379\n    ## @param master.service.nodePort Node port for Redis&trade; master\n    ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport\n    ## NOTE: choose port between <30000-32767>\n    ##\n    nodePort: \"\"\n    ## @param master.service.externalTrafficPolicy Redis&trade; master service external traffic policy\n    ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip\n    ##\n    externalTrafficPolicy: Cluster\n    ## @param master.service.clusterIP Redis&trade; master service Cluster IP\n    ##\n    clusterIP: \"\"\n    ## @param master.service.loadBalancerIP Redis&trade; master service Load Balancer IP\n    ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer\n    ##\n    loadBalancerIP: \"\"\n    ## @param master.service.loadBalancerSourceRanges Redis&trade; master service Load Balancer sources\n    ## https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service\n    ## e.g.\n    ## loadBalancerSourceRanges:\n    ##   - 10.10.10.0/24\n    ##\n    loadBalancerSourceRanges: []\n    ## @param master.service.annotations Additional custom annotations for Redis&trade; master service\n    ##\n    annotations: {}\n  ## @param master.terminationGracePeriodSeconds Integer setting the termination grace period for the redis-master pods\n  ##\n  terminationGracePeriodSeconds: 30\n\n## @section Redis&trade; replicas configuration parameters\n##\n\nreplica:\n  ## @param replica.replicaCount Number of Redis&trade; replicas to deploy\n  ##\n  replicaCount: 3\n  ## @param replica.configuration Configuration for Redis&trade; replicas nodes\n  ## ref: https://redis.io/topics/config\n  ##\n  configuration: \"\"\n  ## @param replica.disableCommands [array] Array with Redis&trade; commands to disable on replicas nodes\n  ## Commands will be completely disabled by renaming each to an empty string.\n  ## ref: https://redis.io/topics/security#disabling-of-specific-commands\n  ##\n  disableCommands:\n    - FLUSHDB\n    - FLUSHALL\n  ## @param replica.command Override default container command (useful when using custom images)\n  ##\n  command: []\n  ## @param replica.args Override default container args (useful when using custom images)\n  ##\n  args: []\n  ## @param replica.preExecCmds Additional commands to run prior to starting Redis&trade; replicas\n  ##\n  preExecCmds: []\n  ## @param replica.extraFlags Array with additional command line flags for Redis&trade; replicas\n  ## e.g:\n  ## extraFlags:\n  ##  - \"--maxmemory-policy volatile-ttl\"\n  ##  - \"--repl-backlog-size 1024mb\"\n  ##\n  extraFlags: []\n  ## @param replica.extraEnvVars Array with extra environment variables to add to Redis&trade; replicas nodes\n  ## e.g:\n  ## extraEnvVars:\n  ##   - name: FOO\n  ##     value: \"bar\"\n  ##\n  extraEnvVars: []\n  ## @param replica.extraEnvVarsCM Name of existing ConfigMap containing extra env vars for Redis&trade; replicas nodes\n  ##\n  extraEnvVarsCM: \"\"\n  ## @param replica.extraEnvVarsSecret Name of existing Secret containing extra env vars for Redis&trade; replicas nodes\n  ##\n  extraEnvVarsSecret: \"\"\n  ## @param replica.containerPort Container port to open on Redis&trade; replicas nodes\n  ##\n  containerPort: 6379\n  ## Configure extra options for Redis&trade; containers' liveness and readiness probes\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes\n  ## @param replica.livenessProbe.enabled Enable livenessProbe on Redis&trade; replicas nodes\n  ## @param replica.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe\n  ## @param replica.livenessProbe.periodSeconds Period seconds for livenessProbe\n  ## @param replica.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe\n  ## @param replica.livenessProbe.failureThreshold Failure threshold for livenessProbe\n  ## @param replica.livenessProbe.successThreshold Success threshold for livenessProbe\n  ##\n  livenessProbe:\n    enabled: true\n    initialDelaySeconds: 20\n    periodSeconds: 5\n    timeoutSeconds: 5\n    successThreshold: 1\n    failureThreshold: 5\n  ## @param replica.readinessProbe.enabled Enable readinessProbe on Redis&trade; replicas nodes\n  ## @param replica.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe\n  ## @param replica.readinessProbe.periodSeconds Period seconds for readinessProbe\n  ## @param replica.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe\n  ## @param replica.readinessProbe.failureThreshold Failure threshold for readinessProbe\n  ## @param replica.readinessProbe.successThreshold Success threshold for readinessProbe\n  ##\n  readinessProbe:\n    enabled: true\n    initialDelaySeconds: 20\n    periodSeconds: 5\n    timeoutSeconds: 1\n    successThreshold: 1\n    failureThreshold: 5\n  ## @param replica.customLivenessProbe Custom livenessProbe that overrides the default one\n  ##\n  customLivenessProbe: {}\n  ## @param replica.customReadinessProbe Custom readinessProbe that overrides the default one\n  ##\n  customReadinessProbe: {}\n  ## Redis&trade; replicas resource requests and limits\n  ## ref: http://kubernetes.io/docs/user-guide/compute-resources/\n  ## @param replica.resources.limits The resources limits for the Redis&trade; replicas containers\n  ## @param replica.resources.requests The requested resources for the Redis&trade; replicas containers\n  ##\n  resources:\n    # We usually recommend not to specify default resources and to leave this as a conscious\n    # choice for the user. This also increases chances charts run on environments with little\n    # resources, such as Minikube. If you do want to specify resources, uncomment the following\n    # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n    limits: {}\n    #   cpu: 250m\n    #   memory: 256Mi\n    requests: {}\n    #   cpu: 250m\n    #   memory: 256Mi\n  ## Configure Pods Security Context\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod\n  ## @param replica.podSecurityContext.enabled Enabled Redis&trade; replicas pods' Security Context\n  ## @param replica.podSecurityContext.fsGroup Set Redis&trade; replicas pod's Security Context fsGroup\n  ##\n  podSecurityContext:\n    enabled: true\n    fsGroup: 1001\n  ## Configure Container Security Context\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod\n  ## @param replica.containerSecurityContext.enabled Enabled Redis&trade; replicas containers' Security Context\n  ## @param replica.containerSecurityContext.runAsUser Set Redis&trade; replicas containers' Security Context runAsUser\n  ##\n  containerSecurityContext:\n    enabled: true\n    runAsUser: 1001\n  ## @param replica.schedulerName Alternate scheduler for Redis&trade; replicas pods\n  ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/\n  ##\n  schedulerName: \"\"\n  ## @param replica.updateStrategy.type Redis&trade; replicas statefulset strategy type\n  ## @skip replica.updateStrategy.rollingUpdate\n  ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies\n  ##\n  updateStrategy:\n    ## StrategyType\n    ## Can be set to RollingUpdate or OnDelete\n    ##\n    type: RollingUpdate\n    rollingUpdate: {}\n  ## @param replica.priorityClassName Redis&trade; replicas pods' priorityClassName\n  ##\n  priorityClassName: \"\"\n  ## @param replica.hostAliases Redis&trade; replicas pods host aliases\n  ## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/\n  ##\n  hostAliases: []\n  ## @param replica.podLabels Extra labels for Redis&trade; replicas pods\n  ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/\n  ##\n  podLabels: {}\n  ## @param replica.podAnnotations Annotations for Redis&trade; replicas pods\n  ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/\n  ##\n  podAnnotations: {}\n  ## @param replica.shareProcessNamespace Share a single process namespace between all of the containers in Redis&trade; replicas pods\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/share-process-namespace/\n  ##\n  shareProcessNamespace: false\n  ## @param replica.podAffinityPreset Pod affinity preset. Ignored if `replica.affinity` is set. Allowed values: `soft` or `hard`\n  ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity\n  ##\n  podAffinityPreset: \"\"\n  ## @param replica.podAntiAffinityPreset Pod anti-affinity preset. Ignored if `replica.affinity` is set. Allowed values: `soft` or `hard`\n  ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity\n  ##\n  podAntiAffinityPreset: soft\n  ## Node affinity preset\n  ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity\n  ##\n  nodeAffinityPreset:\n    ## @param replica.nodeAffinityPreset.type Node affinity preset type. Ignored if `replica.affinity` is set. Allowed values: `soft` or `hard`\n    ##\n    type: \"\"\n    ## @param replica.nodeAffinityPreset.key Node label key to match. Ignored if `replica.affinity` is set\n    ##\n    key: \"\"\n    ## @param replica.nodeAffinityPreset.values Node label values to match. Ignored if `replica.affinity` is set\n    ## E.g.\n    ## values:\n    ##   - e2e-az1\n    ##   - e2e-az2\n    ##\n    values: []\n  ## @param replica.affinity Affinity for Redis&trade; replicas pods assignment\n  ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity\n  ## NOTE: `replica.podAffinityPreset`, `replica.podAntiAffinityPreset`, and `replica.nodeAffinityPreset` will be ignored when it's set\n  ##\n  affinity: {}\n  ## @param replica.nodeSelector Node labels for Redis&trade; replicas pods assignment\n  ## ref: https://kubernetes.io/docs/user-guide/node-selection/\n  ##\n  nodeSelector: {}\n  ## @param replica.tolerations Tolerations for Redis&trade; replicas pods assignment\n  ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/\n  ##\n  tolerations: []\n  ## @param replica.spreadConstraints Spread Constraints for Redis&trade; replicas pod assignment\n  ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/\n  ## E.g.\n  ## spreadConstraints:\n  ##   - maxSkew: 1\n  ##     topologyKey: node\n  ##     whenUnsatisfiable: DoNotSchedule\n  ##\n  spreadConstraints: {}\n  ## @param replica.lifecycleHooks for the Redis&trade; replica container(s) to automate configuration before or after startup\n  ##\n  lifecycleHooks: {}\n  ## @param replica.extraVolumes Optionally specify extra list of additional volumes for the Redis&trade; replicas pod(s)\n  ##\n  extraVolumes: []\n  ## @param replica.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the Redis&trade; replicas container(s)\n  ##\n  extraVolumeMounts: []\n  ## @param replica.sidecars Add additional sidecar containers to the Redis&trade; replicas pod(s)\n  ## e.g:\n  ## sidecars:\n  ##   - name: your-image-name\n  ##     image: your-image\n  ##     imagePullPolicy: Always\n  ##     ports:\n  ##       - name: portname\n  ##         containerPort: 1234\n  ##\n  sidecars: []\n  ## @param replica.initContainers Add additional init containers to the Redis&trade; replicas pod(s)\n  ## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n  ## e.g:\n  ## initContainers:\n  ##  - name: your-image-name\n  ##    image: your-image\n  ##    imagePullPolicy: Always\n  ##    command: ['sh', '-c', 'echo \"hello world\"']\n  ##\n  initContainers: []\n  ## Persistence Parameters\n  ## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/\n  ##\n  persistence:\n    ## @param replica.persistence.enabled Enable persistence on Redis&trade; replicas nodes using Persistent Volume Claims\n    ##\n    enabled: true\n    ## @param replica.persistence.path The path the volume will be mounted at on Redis&trade; replicas containers\n    ## NOTE: Useful when using different Redis&trade; images\n    ##\n    path: /data\n    ## @param replica.persistence.subPath The subdirectory of the volume to mount on Redis&trade; replicas containers\n    ## NOTE: Useful in dev environments\n    ##\n    subPath: \"\"\n    ## @param replica.persistence.storageClass Persistent Volume storage class\n    ## If defined, storageClassName: <storageClass>\n    ## If set to \"-\", storageClassName: \"\", which disables dynamic provisioning\n    ## If undefined (the default) or set to null, no storageClassName spec is set, choosing the default provisioner\n    ##\n    storageClass: \"\"\n    ## @param replica.persistence.accessModes [array] Persistent Volume access modes\n    ##\n    accessModes:\n      - ReadWriteOnce\n    ## @param replica.persistence.size Persistent Volume size\n    ##\n    size: 8Gi\n    ## @param replica.persistence.annotations Additional custom annotations for the PVC\n    ##\n    annotations: {}\n    ## @param replica.persistence.selector Additional labels to match for the PVC\n    ## e.g:\n    ## selector:\n    ##   matchLabels:\n    ##     app: my-app\n    ##\n    selector: {}\n  ## Redis&trade; replicas service parameters\n  ##\n  service:\n    ## @param replica.service.type Redis&trade; replicas service type\n    ##\n    type: ClusterIP\n    ## @param replica.service.port Redis&trade; replicas service port\n    ##\n    port: 6379\n    ## @param replica.service.nodePort Node port for Redis&trade; replicas\n    ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport\n    ## NOTE: choose port between <30000-32767>\n    ##\n    nodePort: \"\"\n    ## @param replica.service.externalTrafficPolicy Redis&trade; replicas service external traffic policy\n    ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip\n    ##\n    externalTrafficPolicy: Cluster\n    ## @param replica.service.clusterIP Redis&trade; replicas service Cluster IP\n    ##\n    clusterIP: \"\"\n    ## @param replica.service.loadBalancerIP Redis&trade; replicas service Load Balancer IP\n    ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer\n    ##\n    loadBalancerIP: \"\"\n    ## @param replica.service.loadBalancerSourceRanges Redis&trade; replicas service Load Balancer sources\n    ## https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service\n    ## e.g.\n    ## loadBalancerSourceRanges:\n    ##   - 10.10.10.0/24\n    ##\n    loadBalancerSourceRanges: []\n    ## @param replica.service.annotations Additional custom annotations for Redis&trade; replicas service\n    ##\n    annotations: {}\n  ## @param replica.terminationGracePeriodSeconds Integer setting the termination grace period for the redis-replicas pods\n  ##\n  terminationGracePeriodSeconds: 30\n  ## Autoscaling configuration\n  ##\n  autoscaling:\n    ## @param replica.autoscaling.enabled Enable replica autoscaling settings\n    ##\n    enabled: false\n    ## @param replica.autoscaling.minReplicas Minimum replicas for the pod autoscaling\n    ##\n    minReplicas: 1\n    ## @param replica.autoscaling.maxReplicas Maximum replicas for the pod autoscaling\n    ##\n    maxReplicas: 11\n    ## @param replica.autoscaling.targetCPU Percentage of CPU to consider when autoscaling\n    ##\n    targetCPU: \"\"\n    ## @param replica.autoscaling.targetMemory Percentage of Memory to consider when autoscaling\n    ##\n    targetMemory: \"\"\n\n## @section Redis&trade; Sentinel configuration parameters\n##\n\nsentinel:\n  ## @param sentinel.enabled Use Redis&trade; Sentinel on Redis&trade; pods.\n  ## IMPORTANT: this will disable the master and replicas services and\n  ## create a single Redis&trade; service exposing both the Redis and Sentinel ports\n  ##\n  enabled: false\n  ## Bitnami Redis&trade; Sentinel image version\n  ## ref: https://hub.docker.com/r/bitnami/redis-sentinel/tags/\n  ## @param sentinel.image.registry Redis&trade; Sentinel image registry\n  ## @param sentinel.image.repository Redis&trade; Sentinel image repository\n  ## @param sentinel.image.tag Redis&trade; Sentinel image tag (immutable tags are recommended)\n  ## @param sentinel.image.pullPolicy Redis&trade; Sentinel image pull policy\n  ## @param sentinel.image.pullSecrets Redis&trade; Sentinel image pull secrets\n  ## @param sentinel.image.debug Enable image debug mode\n  ##\n  image:\n    registry: docker.io\n    repository: bitnami/redis-sentinel\n    tag: 6.2.5-debian-10-r11\n    ## Specify a imagePullPolicy\n    ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'\n    ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images\n    ##\n    pullPolicy: IfNotPresent\n    ## Optionally specify an array of imagePullSecrets.\n    ## Secrets must be manually created in the namespace.\n    ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\n    ## e.g:\n    ## pullSecrets:\n    ##   - myRegistryKeySecretName\n    ##\n    pullSecrets: []\n    ## Enable debug mode\n    ##\n    debug: false\n  ## @param sentinel.masterSet Master set name\n  ##\n  masterSet: mymaster\n  ## @param sentinel.quorum Sentinel Quorum\n  ##\n  quorum: 2\n  ## Sentinel timing restrictions\n  ## @param sentinel.downAfterMilliseconds Timeout for detecting a Redis&trade; node is down\n  ## @param sentinel.failoverTimeout Timeout for performing a election failover\n  ## @param sentinel.cleanDelaySeconds Delay seconds when cleaning nodes IPs\n  ##\n  downAfterMilliseconds: 60000\n  failoverTimeout: 18000\n  cleanDelaySeconds: 5\n  ## @param sentinel.parallelSyncs Number of replicas that can be reconfigured in parallel to use the new master after a failover\n  ##\n  parallelSyncs: 1\n  ## @param sentinel.staticID Enable static Sentinel IDs for each replica\n  ## If disabled each sentinel will generate a random id at startup\n  ## If enabled, each replicas will have a constant ID on each start-up\n  ##\n  staticID: false\n  ## @param sentinel.configuration Configuration for Redis&trade; Sentinel nodes\n  ## ref: https://redis.io/topics/sentinel\n  ##\n  configuration: \"\"\n  ## @param sentinel.command Override default container command (useful when using custom images)\n  ##\n  command: []\n  ## @param sentinel.args Override default container args (useful when using custom images)\n  ##\n  args: []\n  ## @param sentinel.preExecCmds Additional commands to run prior to starting Redis&trade; Sentinel\n  ##\n  preExecCmds: []\n  ## @param sentinel.containerPort Container port to open on Redis&trade; Sentinel nodes\n  ##\n  containerPort: 26379\n  ## Configure extra options for Redis&trade; containers' liveness and readiness probes\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes\n  ## @param sentinel.livenessProbe.enabled Enable livenessProbe on Redis&trade; Sentinel nodes\n  ## @param sentinel.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe\n  ## @param sentinel.livenessProbe.periodSeconds Period seconds for livenessProbe\n  ## @param sentinel.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe\n  ## @param sentinel.livenessProbe.failureThreshold Failure threshold for livenessProbe\n  ## @param sentinel.livenessProbe.successThreshold Success threshold for livenessProbe\n  ##\n  livenessProbe:\n    enabled: true\n    initialDelaySeconds: 20\n    periodSeconds: 5\n    timeoutSeconds: 5\n    successThreshold: 1\n    failureThreshold: 5\n  ## @param sentinel.readinessProbe.enabled Enable readinessProbe on Redis&trade; Sentinel nodes\n  ## @param sentinel.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe\n  ## @param sentinel.readinessProbe.periodSeconds Period seconds for readinessProbe\n  ## @param sentinel.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe\n  ## @param sentinel.readinessProbe.failureThreshold Failure threshold for readinessProbe\n  ## @param sentinel.readinessProbe.successThreshold Success threshold for readinessProbe\n  ##\n  readinessProbe:\n    enabled: true\n    initialDelaySeconds: 20\n    periodSeconds: 5\n    timeoutSeconds: 1\n    successThreshold: 1\n    failureThreshold: 5\n  ## @param sentinel.customLivenessProbe Custom livenessProbe that overrides the default one\n  ##\n  customLivenessProbe: {}\n  ## @param sentinel.customReadinessProbe Custom readinessProbe that overrides the default one\n  ##\n  customReadinessProbe: {}\n  ## Redis&trade; Sentinel resource requests and limits\n  ## ref: http://kubernetes.io/docs/user-guide/compute-resources/\n  ## @param sentinel.resources.limits The resources limits for the Redis&trade; Sentinel containers\n  ## @param sentinel.resources.requests The requested resources for the Redis&trade; Sentinel containers\n  ##\n  resources:\n    limits: {}\n    requests: {}\n  ## Configure Container Security Context\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod\n  ## @param sentinel.containerSecurityContext.enabled Enabled Redis&trade; Sentinel containers' Security Context\n  ## @param sentinel.containerSecurityContext.runAsUser Set Redis&trade; Sentinel containers' Security Context runAsUser\n  ##\n  containerSecurityContext:\n    enabled: true\n    runAsUser: 1001\n  ## @param sentinel.lifecycleHooks for the Redis&trade; sentinel container(s) to automate configuration before or after startup\n  ##\n  lifecycleHooks: {}\n  ## @param sentinel.extraVolumes Optionally specify extra list of additional volumes for the Redis&trade; Sentinel\n  ##\n  extraVolumes: []\n  ## @param sentinel.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the Redis&trade; Sentinel container(s)\n  ##\n  extraVolumeMounts: []\n  ## Redis&trade; Sentinel service parameters\n  ##\n  service:\n    ## @param sentinel.service.type Redis&trade; Sentinel service type\n    ##\n    type: ClusterIP\n    ## @param sentinel.service.port Redis&trade; service port for Redis&trade;\n    ##\n    port: 6379\n    ## @param sentinel.service.sentinelPort Redis&trade; service port for Sentinel\n    ##\n    sentinelPort: 26379\n    ## @param sentinel.service.nodePorts.redis Node port for Redis&trade;\n    ## @param sentinel.service.nodePorts.sentinel Node port for Sentinel\n    ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport\n    ## NOTE: choose port between <30000-32767>\n    ##\n    nodePorts:\n      redis: \"\"\n      sentinel: \"\"\n    ## @param sentinel.service.externalTrafficPolicy Redis&trade; Sentinel service external traffic policy\n    ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip\n    ##\n    externalTrafficPolicy: Cluster\n    ## @param sentinel.service.clusterIP Redis&trade; Sentinel service Cluster IP\n    ##\n    clusterIP: \"\"\n    ## @param sentinel.service.loadBalancerIP Redis&trade; Sentinel service Load Balancer IP\n    ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer\n    ##\n    loadBalancerIP: \"\"\n    ## @param sentinel.service.loadBalancerSourceRanges Redis&trade; Sentinel service Load Balancer sources\n    ## https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service\n    ## e.g.\n    ## loadBalancerSourceRanges:\n    ##   - 10.10.10.0/24\n    ##\n    loadBalancerSourceRanges: []\n    ## @param sentinel.service.annotations Additional custom annotations for Redis&trade; Sentinel service\n    ##\n    annotations: {}\n  ## @param sentinel.terminationGracePeriodSeconds Integer setting the termination grace period for the redis-node pods\n  ##\n  terminationGracePeriodSeconds: 30\n\n## @section Other Parameters\n##\n\n## Network Policy configuration\n## ref: https://kubernetes.io/docs/concepts/services-networking/network-policies/\n##\nnetworkPolicy:\n  ## @param networkPolicy.enabled Enable creation of NetworkPolicy resources\n  ##\n  enabled: false\n  ## @param networkPolicy.allowExternal Don't require client label for connections\n  ## When set to false, only pods with the correct client label will have network access to the ports\n  ## Redis&trade; is listening on. When true, Redis&trade; will accept connections from any source\n  ## (with the correct destination port).\n  ##\n  allowExternal: true\n  ## @param networkPolicy.extraIngress Add extra ingress rules to the NetworkPolicy\n  ## e.g:\n  ## extraIngress:\n  ##   - ports:\n  ##       - port: 1234\n  ##     from:\n  ##       - podSelector:\n  ##           - matchLabels:\n  ##               - role: frontend\n  ##       - podSelector:\n  ##           - matchExpressions:\n  ##               - key: role\n  ##                 operator: In\n  ##                 values:\n  ##                   - frontend\n  ##\n  extraIngress: []\n  ## @param networkPolicy.extraEgress Add extra ingress rules to the NetworkPolicy\n  ## e.g:\n  ## extraEgress:\n  ##   - ports:\n  ##       - port: 1234\n  ##     to:\n  ##       - podSelector:\n  ##           - matchLabels:\n  ##               - role: frontend\n  ##       - podSelector:\n  ##           - matchExpressions:\n  ##               - key: role\n  ##                 operator: In\n  ##                 values:\n  ##                   - frontend\n  ##\n  extraEgress: []\n  ## @param networkPolicy.ingressNSMatchLabels Labels to match to allow traffic from other namespaces\n  ## @param networkPolicy.ingressNSPodMatchLabels Pod labels to match to allow traffic from other namespaces\n  ##\n  ingressNSMatchLabels: {}\n  ingressNSPodMatchLabels: {}\n## PodSecurityPolicy configuration\n## ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/\n##\npodSecurityPolicy:\n  ## @param podSecurityPolicy.create Specifies whether a PodSecurityPolicy should be created (set `podSecurityPolicy.enabled` to `true` to enable it)\n  ##\n  create: false\n  ## @param podSecurityPolicy.enabled Enable PodSecurityPolicy\n  ##\n  enabled: false\n## RBAC configuration\n##\nrbac:\n  ## @param rbac.create Specifies whether RBAC resources should be created\n  ##\n  create: false\n  ## @param rbac.rules Custom RBAC rules to set\n  ## e.g:\n  ## rules:\n  ##   - apiGroups:\n  ##       - \"\"\n  ##     resources:\n  ##       - pods\n  ##     verbs:\n  ##       - get\n  ##       - list\n  ##\n  rules: []\n## ServiceAccount configuration\n##\nserviceAccount:\n  ## @param serviceAccount.create Specifies whether a ServiceAccount should be created\n  ##\n  create: true\n  ## @param serviceAccount.name The name of the ServiceAccount to use.\n  ## If not set and create is true, a name is generated using the common.names.fullname template\n  ##\n  name: \"\"\n  ## @param serviceAccount.automountServiceAccountToken Whether to auto mount the service account token\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#use-the-default-service-account-to-access-the-api-server\n  ##\n  automountServiceAccountToken: true\n  ## @param serviceAccount.annotations Additional custom annotations for the ServiceAccount\n  ##\n  annotations: {}\n## Redis&trade; Pod Disruption Budget configuration\n## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/\n##\npdb:\n  ## @param pdb.create Specifies whether a PodDisruptionBudget should be created\n  ##\n  create: false\n  ## @param pdb.minAvailable Min number of pods that must still be available after the eviction\n  ##\n  minAvailable: 1\n  ## @param pdb.maxUnavailable Max number of pods that can be unavailable after the eviction\n  ##\n  maxUnavailable: \"\"\n## TLS configuration\n##\ntls:\n  ## @param tls.enabled Enable TLS traffic\n  ##\n  enabled: false\n  ## @param tls.authClients Require clients to authenticate\n  ##\n  authClients: true\n  ## @param tls.autoGenerated Enable autogenerated certificates\n  ##\n  autoGenerated: false\n  ## @param tls.existingSecret The name of the existing secret that contains the TLS certificates\n  ##\n  existingSecret: \"\"\n  ## @param tls.certificatesSecret DEPRECATED. Use existingSecret instead.\n  ##\n  certificatesSecret: \"\"\n  ## @param tls.certFilename Certificate filename\n  ##\n  certFilename: \"\"\n  ## @param tls.certKeyFilename Certificate Key filename\n  ##\n  certKeyFilename: \"\"\n  ## @param tls.certCAFilename CA Certificate filename\n  ##\n  certCAFilename: \"\"\n  ## @param tls.dhParamsFilename File containing DH params (in order to support DH based ciphers)\n  ##\n  dhParamsFilename: \"\"\n\n## @section Metrics Parameters\n##\n\nmetrics:\n  ## @param metrics.enabled Start a sidecar prometheus exporter to expose Redis&trade; metrics\n  ##\n  enabled: false\n  ## Bitnami Redis&trade; Exporter image\n  ## ref: https://hub.docker.com/r/bitnami/redis-exporter/tags/\n  ## @param metrics.image.registry Redis&trade; Exporter image registry\n  ## @param metrics.image.repository Redis&trade; Exporter image repository\n  ## @param metrics.image.tag Redis&trade; Redis&trade; Exporter image tag (immutable tags are recommended)\n  ## @param metrics.image.pullPolicy Redis&trade; Exporter image pull policy\n  ## @param metrics.image.pullSecrets Redis&trade; Exporter image pull secrets\n  ##\n  image:\n    registry: docker.io\n    repository: bitnami/redis-exporter\n    tag: 1.24.0-debian-10-r48\n    pullPolicy: IfNotPresent\n    ## Optionally specify an array of imagePullSecrets.\n    ## Secrets must be manually created in the namespace.\n    ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\n    ## e.g:\n    ## pullSecrets:\n    ##   - myRegistryKeySecretName\n    ##\n    pullSecrets: []\n  ## @param metrics.redisTargetHost A way to specify an alternative Redis&trade; hostname\n  ## Useful for certificate CN/SAN matching\n  ##\n  redisTargetHost: \"localhost\"\n  ## @param metrics.extraArgs Extra arguments for Redis&trade; exporter, for example:\n  ## e.g.:\n  ## extraArgs:\n  ##   check-keys: myKey,myOtherKey\n  ##\n  extraArgs: {}\n  ## Configure Container Security Context\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod\n  ## @param metrics.containerSecurityContext.enabled Enabled Redis&trade; exporter containers' Security Context\n  ## @param metrics.containerSecurityContext.runAsUser Set Redis&trade; exporter containers' Security Context runAsUser\n  ##\n  containerSecurityContext:\n    enabled: true\n    runAsUser: 1001\n  ## @param metrics.extraVolumes Optionally specify extra list of additional volumes for the Redis&trade; metrics sidecar\n  ##\n  extraVolumes: []\n  ## @param metrics.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the Redis&trade; metrics sidecar\n  ##\n  extraVolumeMounts: []\n  ## Redis&trade; exporter resource requests and limits\n  ## ref: http://kubernetes.io/docs/user-guide/compute-resources/\n  ## @param metrics.resources.limits The resources limits for the Redis&trade; exporter container\n  ## @param metrics.resources.requests The requested resources for the Redis&trade; exporter container\n  ##\n  resources:\n    limits: {}\n    requests: {}\n  ## @param metrics.podLabels Extra labels for Redis&trade; exporter pods\n  ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/\n  ##\n  podLabels: {}\n  ## @param metrics.podAnnotations [object] Annotations for Redis&trade; exporter pods\n  ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/\n  ##\n  podAnnotations:\n    prometheus.io/scrape: \"true\"\n    prometheus.io/port: \"9121\"\n  ## Redis&trade; exporter service parameters\n  ##\n  service:\n    ## @param metrics.service.type Redis&trade; exporter service type\n    ##\n    type: ClusterIP\n    ## @param metrics.service.port Redis&trade; exporter service port\n    ##\n    port: 9121\n    ## @param metrics.service.externalTrafficPolicy Redis&trade; exporter service external traffic policy\n    ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip\n    ##\n    externalTrafficPolicy: Cluster\n    ## @param metrics.service.loadBalancerIP Redis&trade; exporter service Load Balancer IP\n    ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer\n    ##\n    loadBalancerIP: \"\"\n    ## @param metrics.service.loadBalancerSourceRanges Redis&trade; exporter service Load Balancer sources\n    ## https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service\n    ## e.g.\n    ## loadBalancerSourceRanges:\n    ##   - 10.10.10.0/24\n    ##\n    loadBalancerSourceRanges: []\n    ## @param metrics.service.annotations Additional custom annotations for Redis&trade; exporter service\n    ##\n    annotations: {}\n  ## Prometheus Service Monitor\n  ## ref: https://github.com/coreos/prometheus-operator\n  ##      https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint\n  ##\n  serviceMonitor:\n    ## @param metrics.serviceMonitor.enabled Create ServiceMonitor resource(s) for scraping metrics using PrometheusOperator\n    ##\n    enabled: false\n    ## @param metrics.serviceMonitor.namespace The namespace in which the ServiceMonitor will be created\n    ##\n    namespace: \"\"\n    ## @param metrics.serviceMonitor.interval The interval at which metrics should be scraped\n    ##\n    interval: 30s\n    ## @param metrics.serviceMonitor.scrapeTimeout The timeout after which the scrape is ended\n    ##\n    scrapeTimeout: \"\"\n    ## @param metrics.serviceMonitor.relabellings Metrics relabellings to add to the scrape endpoint\n    ##\n    relabellings: []\n    ## @param metrics.serviceMonitor.honorLabels Specify honorLabels parameter to add the scrape endpoint\n    ##\n    honorLabels: false\n    ## @param metrics.serviceMonitor.additionalLabels Additional labels that can be used so ServiceMonitor resource(s) can be discovered by Prometheus\n    ##\n    additionalLabels: {}\n  ## Custom PrometheusRule to be defined\n  ## ref: https://github.com/coreos/prometheus-operator#customresourcedefinitions\n  ##\n  prometheusRule:\n    ## @param metrics.prometheusRule.enabled Create a custom prometheusRule Resource for scraping metrics using PrometheusOperator\n    ##\n    enabled: false\n    ## @param metrics.prometheusRule.namespace The namespace in which the prometheusRule will be created\n    ##\n    namespace: \"\"\n    ## @param metrics.prometheusRule.additionalLabels Additional labels for the prometheusRule\n    ##\n    additionalLabels: {}\n    ## @param metrics.prometheusRule.rules Custom Prometheus rules\n    ## e.g:\n    ## rules:\n    ##   - alert: RedisDown\n    ##     expr: redis_up{service=\"{{ template \"common.names.fullname\" . }}-metrics\"} == 0\n    ##     for: 2m\n    ##     labels:\n    ##       severity: error\n    ##     annotations:\n    ##       summary: Redis&trade; instance {{ \"{{ $labels.instance }}\" }} down\n    ##       description: Redis&trade; instance {{ \"{{ $labels.instance }}\" }} is down\n    ##    - alert: RedisMemoryHigh\n    ##      expr: >\n    ##        redis_memory_used_bytes{service=\"{{ template \"common.names.fullname\" . }}-metrics\"} * 100\n    ##        /\n    ##        redis_memory_max_bytes{service=\"{{ template \"common.names.fullname\" . }}-metrics\"}\n    ##        > 90\n    ##      for: 2m\n    ##      labels:\n    ##        severity: error\n    ##      annotations:\n    ##        summary: Redis&trade; instance {{ \"{{ $labels.instance }}\" }} is using too much memory\n    ##        description: |\n    ##          Redis&trade; instance {{ \"{{ $labels.instance }}\" }} is using {{ \"{{ $value }}\" }}% of its available memory.\n    ##    - alert: RedisKeyEviction\n    ##      expr: |\n    ##        increase(redis_evicted_keys_total{service=\"{{ template \"common.names.fullname\" . }}-metrics\"}[5m]) > 0\n    ##      for: 1s\n    ##      labels:\n    ##        severity: error\n    ##      annotations:\n    ##        summary: Redis&trade; instance {{ \"{{ $labels.instance }}\" }} has evicted keys\n    ##        description: |\n    ##          Redis&trade; instance {{ \"{{ $labels.instance }}\" }} has evicted {{ \"{{ $value }}\" }} keys in the last 5 minutes.\n    ##\n    rules: []\n\n## @section Init Container Parameters\n##\n\n## 'volumePermissions' init container parameters\n## Changes the owner and group of the persistent volume mount point to runAsUser:fsGroup values\n##   based on the *podSecurityContext/*containerSecurityContext parameters\n##\nvolumePermissions:\n  ## @param volumePermissions.enabled Enable init container that changes the owner/group of the PV mount point to `runAsUser:fsGroup`\n  ##\n  enabled: false\n  ## Bitnami Shell image\n  ## ref: https://hub.docker.com/r/bitnami/bitnami-shell/tags/\n  ## @param volumePermissions.image.registry Bitnami Shell image registry\n  ## @param volumePermissions.image.repository Bitnami Shell image repository\n  ## @param volumePermissions.image.tag Bitnami Shell image tag (immutable tags are recommended)\n  ## @param volumePermissions.image.pullPolicy Bitnami Shell image pull policy\n  ## @param volumePermissions.image.pullSecrets Bitnami Shell image pull secrets\n  ##\n  image:\n    registry: docker.io\n    repository: bitnami/bitnami-shell\n    tag: 10-debian-10-r151\n    pullPolicy: Always\n    ## Optionally specify an array of imagePullSecrets.\n    ## Secrets must be manually created in the namespace.\n    ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\n    ## e.g:\n    ## pullSecrets:\n    ##   - myRegistryKeySecretName\n    ##\n    pullSecrets: []\n  ## Init container's resource requests and limits\n  ## ref: http://kubernetes.io/docs/user-guide/compute-resources/\n  ## @param volumePermissions.resources.limits The resources limits for the init container\n  ## @param volumePermissions.resources.requests The requested resources for the init container\n  ##\n  resources:\n    limits: {}\n    requests: {}\n  ## Init container Container Security Context\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container\n  ## @param volumePermissions.containerSecurityContext.runAsUser Set init container's Security Context runAsUser\n  ## NOTE: when runAsUser is set to special value \"auto\", init container will try to chown the\n  ##   data folder to auto-determined user&group, using commands: `id -u`:`id -G | cut -d\" \" -f2`\n  ##   \"auto\" is especially useful for OpenShift which has scc with dynamic user ids (and 0 is not allowed)\n  ##\n  containerSecurityContext:\n    runAsUser: 0\n\n## init-sysctl container parameters\n## used to perform sysctl operation to modify Kernel settings (needed sometimes to avoid warnings)\n##\nsysctl:\n  ## @param sysctl.enabled Enable init container to modify Kernel settings\n  ##\n  enabled: false\n  ## Bitnami Shell image\n  ## ref: https://hub.docker.com/r/bitnami/bitnami-shell/tags/\n  ## @param sysctl.image.registry Bitnami Shell image registry\n  ## @param sysctl.image.repository Bitnami Shell image repository\n  ## @param sysctl.image.tag Bitnami Shell image tag (immutable tags are recommended)\n  ## @param sysctl.image.pullPolicy Bitnami Shell image pull policy\n  ## @param sysctl.image.pullSecrets Bitnami Shell image pull secrets\n  ##\n  image:\n    registry: docker.io\n    repository: bitnami/bitnami-shell\n    tag: 10-debian-10-r151\n    pullPolicy: Always\n    ## Optionally specify an array of imagePullSecrets.\n    ## Secrets must be manually created in the namespace.\n    ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\n    ## e.g:\n    ## pullSecrets:\n    ##   - myRegistryKeySecretName\n    ##\n    pullSecrets: []\n  ## @param sysctl.command Override default init-sysctl container command (useful when using custom images)\n  ##\n  command: []\n  ## @param sysctl.mountHostSys Mount the host `/sys` folder to `/host-sys`\n  ##\n  mountHostSys: false\n  ## Init container's resource requests and limits\n  ## ref: http://kubernetes.io/docs/user-guide/compute-resources/\n  ## @param sysctl.resources.limits The resources limits for the init container\n  ## @param sysctl.resources.requests The requested resources for the init container\n  ##\n  resources:\n    limits: {}\n    requests: {}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/oauth2-manifests.yaml",
    "content": "---\n# Source: oauth2-proxy/templates/service-account.yaml\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: oauth2-oauth2-proxy\n  namespace: \"default\"\n  labels:\n    app.kubernetes.io/name: oauth2-proxy\n    helm.sh/chart: oauth2-proxy-0.1.8\n    app.kubernetes.io/instance: oauth2\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: oauth2-proxy\n---\n# Source: oauth2-proxy/templates/secret-authenticated-emails-file.yaml\napiVersion: v1\nkind: Secret\nmetadata:\n  name: oauth2-oauth2-proxy-access-list\n  namespace: \"default\"\n  labels:\n    app.kubernetes.io/name: oauth2-proxy\n    helm.sh/chart: oauth2-proxy-0.1.8\n    app.kubernetes.io/instance: oauth2\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: oauth2-proxy\ntype: Opaque\ndata:\n  authenticated-emails-list: \"YW5raXRzaW5naHJhdGhpMUBnbWFpbC5jb20=\"\n---\n# Source: oauth2-proxy/templates/secret-google.yaml\napiVersion: v1\nkind: Secret\nmetadata:\n  name: oauth2-oauth2-proxy-google\n  namespace: \"default\"\n  labels:\n    app.kubernetes.io/name: oauth2-proxy\n    helm.sh/chart: oauth2-proxy-0.1.8\n    app.kubernetes.io/instance: oauth2\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: oauth2-proxy\ntype: Opaque\ndata:\n  service-account.json: \"\"\n---\n# Source: oauth2-proxy/templates/secret.yaml\napiVersion: v1\nkind: Secret\nmetadata:\n  name: oauth2-oauth2-proxy\n  namespace: \"default\"\n  labels:\n    app.kubernetes.io/name: oauth2-proxy\n    helm.sh/chart: oauth2-proxy-0.1.8\n    app.kubernetes.io/instance: oauth2\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: oauth2-proxy\ntype: Opaque\ndata:\n  cookie-secret: \"WTI5dmEybGxDZ3NrZG5mcw==\"\n  client-secret: \"WEkzZl9ZRXlSdWJmUGtxUFhlVjlCV1Rs\"\n  client-id: \"MTAzOTc1ODgzMDkwLWE5NW8xMzM4ZjBja2swczMyaGVzbjdvNDQxaWNlcDJsLmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29t\"\n---\n# Source: oauth2-proxy/templates/configmap.yaml\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: oauth2-oauth2-proxy\n  namespace: \"default\"\n  labels:\n    app.kubernetes.io/name: oauth2-proxy\n    helm.sh/chart: oauth2-proxy-0.1.8\n    app.kubernetes.io/instance: oauth2\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: oauth2-proxy\ndata:\n  oauth2_proxy.cfg: |\n    email_domains = [ \"*\" ]\n    # upstreams = [ \"file:///dev/null\" ]\n    http_address=\"0.0.0.0:4180\"\n    provider=\"google\"\n    cookie_secure=\"true\"\n    redirect_url=\"https://auth.somedomain.com/oauth2/callback\"\n    cookie_domains=\".somedomain.com\" # Required so cookie can be read on all subdomains.\n    whitelist_domains=\".somedomain.com\" # Required to allow redirection back to original requested target.\n    # Mandatory option when using oauth2-proxy with traefik\n    reverse_proxy=\"true\"\n    # Required for traefik with ForwardAuth and static upstream configuration\n    upstreams=\"static://202\"\n    # The following option skip the page requesting the user\n    # to click on a button to be redirected to the identity provider\n    # It can be activated only when traefik is not configure with\n    # the error redirection middleware as this example.\n    skip_provider_button=\"true\"\n    set_authorization_header=\"true\"\n    set_xauthrequest=\"true\"\n---\n# Source: oauth2-proxy/templates/service.yaml\napiVersion: v1\nkind: Service\nmetadata:\n  name: oauth2-oauth2-proxy\n  namespace: \"default\"\n  labels:\n    app.kubernetes.io/name: oauth2-proxy\n    helm.sh/chart: oauth2-proxy-0.1.8\n    app.kubernetes.io/instance: oauth2\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: oauth2-proxy\nspec:\n  type: ClusterIP\n\n  ports:\n    - name: http\n      port: 8080\n      protocol: TCP\n      targetPort: http\n      nodePort: null\n  selector:\n    app.kubernetes.io/name: oauth2-proxy\n    app.kubernetes.io/instance: oauth2\n    app.kubernetes.io/component: oauth2-proxy\n---\n# Source: oauth2-proxy/templates/deployment.yaml\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: oauth2-oauth2-proxy\n  namespace: \"default\"\n  labels:\n    app.kubernetes.io/name: oauth2-proxy\n    helm.sh/chart: oauth2-proxy-0.1.8\n    app.kubernetes.io/instance: oauth2\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: oauth2-proxy\nspec:\n  replicas: 1\n  strategy:\n    type: RollingUpdate\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: oauth2-proxy\n      app.kubernetes.io/instance: oauth2\n      app.kubernetes.io/component: oauth2-proxy\n  template:\n    metadata:\n      annotations:\n        checksum/config: 6f173c5a75d01f531e82b125307e41c9c9b9923e5ce3b7f048806e7d996bb543\n      labels:\n        app.kubernetes.io/name: oauth2-proxy\n        helm.sh/chart: oauth2-proxy-0.1.8\n        app.kubernetes.io/instance: oauth2\n        app.kubernetes.io/managed-by: Helm\n        app.kubernetes.io/component: oauth2-proxy\n    spec:\n      serviceAccountName: oauth2-oauth2-proxy\n\n      affinity:\n        podAffinity:\n\n        podAntiAffinity:\n          preferredDuringSchedulingIgnoredDuringExecution:\n            - podAffinityTerm:\n                labelSelector:\n                  matchLabels:\n                    app.kubernetes.io/name: oauth2-proxy\n                    app.kubernetes.io/instance: oauth2\n                    app.kubernetes.io/component: oauth2-proxy\n                namespaces:\n                  - \"default\"\n                topologyKey: kubernetes.io/hostname\n              weight: 1\n        nodeAffinity:\n\n      securityContext:\n        fsGroup: 1001\n      containers:\n        - name: oauth2-proxy\n          image: docker.io/bitnami/oauth2-proxy:7.1.3-debian-10-r100\n          imagePullPolicy: IfNotPresent\n          securityContext:\n            runAsUser: 1001\n          args:\n            - --http-address=0.0.0.0:4180\n            - --config=/bitnami/oauth2-proxy/conf/oauth2_proxy.cfg\n            - --authenticated-emails-file=/bitnami/oauth2-proxy/conf/authenticated-emails/authenticated-emails-list\n          env:\n            - name: OAUTH2_PROXY_CLIENT_ID\n              valueFrom:\n                secretKeyRef:\n                  name: oauth2-oauth2-proxy\n                  key: client-id\n            - name: OAUTH2_PROXY_CLIENT_SECRET\n              valueFrom:\n                secretKeyRef:\n                  name: oauth2-oauth2-proxy\n                  key: client-secret\n            - name: OAUTH2_PROXY_COOKIE_SECRET\n              valueFrom:\n                secretKeyRef:\n                  name: oauth2-oauth2-proxy\n                  key: cookie-secret\n            - name: OAUTH2_PROXY_SESSION_STORE_TYPE\n              value: \"cookie\"\n          envFrom:\n          ports:\n            - containerPort: 4180\n              name: http\n              protocol: TCP\n          resources:\n            limits: {}\n            requests: {}\n          livenessProbe:\n            httpGet:\n              path: /ping\n              port: http\n              scheme: HTTP\n            initialDelaySeconds: 0\n            periodSeconds: 10\n            timeoutSeconds: 1\n            successThreshold: 1\n            failureThreshold: 5\n          readinessProbe:\n            httpGet:\n              path: /ping\n              port: http\n              scheme: HTTP\n            initialDelaySeconds: 0\n            periodSeconds: 10\n            timeoutSeconds: 1\n            successThreshold: 1\n            failureThreshold: 5\n          volumeMounts:\n            - name: main-configuration\n              mountPath: /bitnami/oauth2-proxy/conf\n            - name: authenticated-emails\n              mountPath: /bitnami/oauth2-proxy/conf/authenticated-emails\n              readOnly: true\n      volumes:\n        - name: authenticated-emails\n          secret:\n            items:\n            - key: authenticated-emails-list\n              path: authenticated-emails-list\n            secretName: oauth2-oauth2-proxy-access-list\n        - name: main-configuration\n          configMap:\n            defaultMode: 420\n            name: oauth2-oauth2-proxy\n---\n# Source: oauth2-proxy/templates/ingress-route.yaml\napiVersion: traefik.containo.us/v1alpha1\nkind: IngressRoute\nmetadata:\n  name: oauth2-https\nspec:\n  entryPoints:\n  - web\n  - websecure\n  routes:\n  - kind: Rule\n    match: Host(`auth.somedomain.com`) && PathPrefix(`/`)\n    priority: 0\n    middlewares:\n      - name: cors-security-headers\n    services:\n    - name: oauth-release-oauth2-proxy\n      port: 8080\n  tls: {}\n---\n# Source: oauth2-proxy/templates/traefik-middlewares.yaml\napiVersion: traefik.containo.us/v1alpha1\nkind: Middleware\nmetadata:\n  name: cors-security-headers\nspec:\n  headers:\n    accessControlAllowCredentials: true\n    accessControlAllowMethods:\n      - GET\n      - OPTIONS\n      - HEAD\n    accessControlAllowOriginList:\n      - '*'\n    accessControlMaxAge: 604800\n    addVaryHeader: false\n    browserXssFilter: true\n    contentTypeNosniff: true\n    sslRedirect: true\n    sslTemporaryRedirect: false\n    stsIncludeSubdomains: true\n    stsPreload: true\n    stsSeconds: 10886400\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/templates/NOTES.txt",
    "content": "** Please be patient while the chart is being deployed **\n\n{{- if .Values.diagnosticMode.enabled }}\nThe chart has been deployed in diagnostic mode. All probes have been disabled and the command has been overwritten with:\n\n  command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.command \"context\" $) | nindent 4 }}\n  args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.args \"context\" $) | nindent 4 }}\n\nGet the list of pods by executing:\n\n  kubectl get pods --namespace {{ .Release.Namespace }} -l app.kubernetes.io/instance={{ .Release.Name }}\n\nAccess the pod you want to debug by executing\n\n  kubectl exec --namespace {{ .Release.Namespace }} -ti <NAME OF THE POD> -- bash\n\n{{- else }}\n\nTo verify that oauth2-proxy has started, run:\n\n  kubectl --namespace={{ .Release.Namespace }} get pods\n\nGet the application URL by running these commands:\n\n{{- if contains \"NodePort\" .Values.service.type }}\n    export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath=\"{.spec.ports[0].nodePort}\" services {{ template \"common.names.fullname\" . }})\n    export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath=\"{.items[0].status.addresses[0].address}\")\n    echo http://$NODE_IP:$NODE_PORT\n{{- else if contains \"LoadBalancer\" .Values.service.type }}\n     NOTE: It may take a few minutes for the LoadBalancer IP to be available.\n           You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ template \"common.names.fullname\" . }}\n    export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template \"common.names.fullname\" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')\n    echo http://$SERVICE_IP:{{ .Values.service.port }}\n{{- else if contains \"ClusterIP\" .Values.service.type }}\n    echo \"The renconciler is available at http://127.0.0.1:{{ .Values.service.port }}\"\n    kubectl port-forward svc/{{ template \"common.names.fullname\" . }} {{ .Values.service.port }}:{{ .Values.service.port }} &\n{{- end }}\n{{- end }}\n{{- include \"common.warnings.rollingTag\" .Values.image }}\n\n{{- include \"oauth2-proxy.validateValues\" . }}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/templates/_helpers.tpl",
    "content": "{{/*\nReturn the proper OAuth2 Proxy image name\n*/}}\n{{- define \"oauth2-proxy.image\" -}}\n{{ include \"common.images.image\" (dict \"imageRoot\" .Values.image \"global\" .Values.global) }}\n{{- end -}}\n\n{{/*\nReturn the proper Docker Image Registry Secret Names\n*/}}\n{{- define \"oauth2-proxy.imagePullSecrets\" -}}\n{{- include \"common.images.pullSecrets\" (dict \"images\" (list .Values.image) \"global\" .Values.global) -}}\n{{- end -}}\n\n{{/*\nCreate the name of the service account to use\n*/}}\n{{- define \"oauth2-proxy.serviceAccountName\" -}}\n{{- if .Values.serviceAccount.create -}}\n    {{ default (include \"common.names.fullname\" .) .Values.serviceAccount.name }}\n{{- else -}}\n    {{ default \"default\" .Values.serviceAccount.name }}\n{{- end -}}\n{{- end -}}\n\n{{- define \"oauth2-proxy.redis.fullname\" -}}\n{{- printf \"%s-redis\" .Release.Name -}}\n{{- end -}}\n\n{{- define \"oauth2-proxy.configmapName\" -}}\n{{- if .Values.configuration.existingConfigmap -}}\n{{- .Values.configuration.existingConfigmap -}}\n{{- else -}}\n{{- include \"common.names.fullname\" . -}}\n{{- end -}}\n{{- end -}}\n\n{{- define \"oauth2-proxy.secretName\" -}}\n{{- if .Values.configuration.existingSecret -}}\n{{- .Values.configuration.existingSecret -}}\n{{- else -}}\n{{- include \"common.names.fullname\" . -}}\n{{- end -}}\n{{- end -}}\n\n{{- define \"oauth2-proxy.authenticatedEmailsSecret\" -}}\n{{- if .Values.configuration.authenticatedEmailsFile.existingSecret -}}\n{{- .Values.configuration.authenticatedEmailsFile.existingSecret -}}\n{{- else -}}\n{{- printf \"%s-access-list\" (include \"common.names.fullname\" .) -}}\n{{- end -}}\n{{- end -}}\n\n{{- define \"oauth2-proxy.httpasswdSecret\" -}}\n{{- if .Values.configuration.htpasswdFile.existingSecret -}}\n{{- .Values.configuration.htpasswdFile.existingSecret -}}\n{{- else -}}\n{{- include \"common.names.fullname\" . -}}\n{{- end -}}\n{{- end -}}\n\n{{- define \"oauth2-proxy.googleSecret\" -}}\n{{- if .Values.configuration.google.existingSecret -}}\n{{- .Values.configuration.google.existingSecret -}}\n{{- else -}}\n{{- include \"common.names.fullname\" . -}}\n{{- end -}}\n{{- end -}}\n\n{{- define \"oauth2-proxy.redis.url\" -}}\n{{- if .Values.redis.enabled -}}\n{{- if .Values.redis.sentinel.enabled -}}\n{{- $port := printf \"%v\" .Values.redis.sentinel.service.port -}}\n{{- printf \"redis://%s:%s\" (include \"oauth2-proxy.redis.fullname\" .) $port -}}\n{{- else -}}\n{{- $port := printf \"%v\" .Values.redis.master.service.port -}}\n{{- printf \"redis://%s-master:%s\" (include \"oauth2-proxy.redis.fullname\" .) $port -}}\n{{- end -}}\n{{- else if .Values.externalRedis.host -}}\n{{- $port := printf \"%v\" .Values.externalRedis.port -}}\n{{- printf \"redis://%s:%s\" .Values.externalRedis.host $port -}}\n{{- end -}}\n{{- end -}}\n\n{{- define \"oauth2-proxy.redis.sentinelUrl\" -}}\n{{- $port := printf \"%v\" .Values.redis.sentinel.service.sentinelPort -}}\n{{- printf \"redis://%s:%s\" (include \"oauth2-proxy.redis.fullname\" .) $port -}}\n{{- end -}}\n\n{{/*\nGet the password secret.\n*/}}\n{{- define \"oauth2-proxy.redis.secretName\" -}}\n{{- if .Values.redis.enabled }}\n{{- if .Values.redis.auth.existingSecret -}}\n{{- .Values.redis.auth.existingSecret -}}\n{{- else -}}\n{{- include \"oauth2-proxy.redis.fullname\" . -}}\n{{- end -}}\n{{- else if .Values.externalRedis.existingSecret }}\n{{- .Values.externalRedis.existingSecret -}}\n{{- else -}}\n{{- printf \"%s-external-redis\" (include \"common.names.fullname\" .) -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nGet the password key to be retrieved from Redis&trade; secret.\n*/}}\n{{- define \"oauth2-proxy.redis.secretPasswordKey\" -}}\n{{- if and .Values.redis.auth.existingSecret .Values.redis.auth.existingSecretPasswordKey -}}\n{{- printf \"%s\" .Values.redis.auth.existingSecretPasswordKey -}}\n{{- else -}}\n{{- printf \"redis-password\" -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nCompile all warnings into a single message.\n*/}}\n{{- define \"oauth2-proxy.validateValues\" -}}\n{{- $messages := list -}}\n{{- $messages := append $messages (include \"oauth2-proxy.validateValues.redis\" .) -}}\n{{- $messages := without $messages \"\" -}}\n{{- $message := join \"\\n\" $messages -}}\n\n{{- if $message -}}\n{{-   printf \"\\nVALUES VALIDATION:\\n%s\" $message -}}\n{{- end -}}\n{{- end -}}\n\n{{/* Validate values of Wavefront - clusterName */}}\n{{- define \"oauth2-proxy.validateValues.redis\" -}}\n{{- if and .Values.redis.enabled .Values.externalRedis.host -}}\noauth2-proxy: BothRedis\n    The redis sub-chart was enabled and an external Redis host was set at the same time. Please set only one of the following:\n\n        a) Enable the redis sub-chart with redis.enabled\n        b) Set redis.enabled=false and set the externalRedis section\n{{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/templates/configmap.yaml",
    "content": "{{- if and (.Values.configuration.content) (not .Values.configuration.existingConfigmap) }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ template \"common.names.fullname\" . }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: oauth2-proxy\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\ndata:\n  oauth2_proxy.cfg: |\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.configuration.content \"context\" $ ) | nindent 4 }}\n{{- end }}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/templates/deployment.yaml",
    "content": "apiVersion: {{ include \"common.capabilities.deployment.apiVersion\" . }}\nkind: Deployment\nmetadata:\n  name: {{ template \"common.names.fullname\" . }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: oauth2-proxy\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\nspec:\n  replicas: {{ .Values.replicaCount }}\n  {{- if .Values.updateStrategy }}\n  strategy: {{- toYaml .Values.updateStrategy | nindent 4 }}\n  {{- end }}\n  selector:\n    matchLabels: {{- include \"common.labels.matchLabels\" . | nindent 6 }}\n      app.kubernetes.io/component: oauth2-proxy\n  template:\n    metadata:\n      annotations:\n        checksum/config: {{ include (print $.Template.BasePath \"/configmap.yaml\") . | sha256sum }}\n        {{- if .Values.podAnnotations }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.podAnnotations \"context\" $) | nindent 8 }}\n        {{- end }}\n      labels: {{- include \"common.labels.standard\" . | nindent 8 }}\n        app.kubernetes.io/component: oauth2-proxy\n        {{- if .Values.podLabels }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.podLabels \"context\" $) | nindent 8 }}\n        {{- end }}\n    spec:\n      serviceAccountName: {{ template \"oauth2-proxy.serviceAccountName\" . }}\n      {{- include \"oauth2-proxy.imagePullSecrets\" . | nindent 6 }}\n      {{- if .Values.hostAliases }}\n      hostAliases: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.hostAliases \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.affinity }}\n      affinity: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.affinity \"context\" $) | nindent 8 }}\n      {{- else }}\n      affinity:\n        podAffinity: {{- include \"common.affinities.pods\" (dict \"type\" .Values.podAffinityPreset \"component\" \"oauth2-proxy\" \"context\" $) | nindent 10 }}\n        podAntiAffinity: {{- include \"common.affinities.pods\" (dict \"type\" .Values.podAntiAffinityPreset \"component\" \"oauth2-proxy\" \"context\" $) | nindent 10 }}\n        nodeAffinity: {{- include \"common.affinities.nodes\" (dict \"type\" .Values.nodeAffinityPreset.type \"key\" .Values.nodeAffinityPreset.key \"values\" .Values.nodeAffinityPreset.values) | nindent 10 }}\n      {{- end }}\n      {{- if .Values.nodeSelector }}\n      nodeSelector: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.nodeSelector \"context\" $) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.tolerations }}\n      tolerations: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.tolerations \"context\" .) | nindent 8 }}\n      {{- end }}\n      {{- if .Values.priorityClassName }}\n      priorityClassName: {{ .Values.priorityClassName | quote }}\n      {{- end }}\n      {{- if .Values.podSecurityContext.enabled }}\n      securityContext: {{- omit .Values.podSecurityContext \"enabled\" | toYaml | nindent 8 }}\n      {{- end }}\n      {{- if .Values.initContainers }}\n      initContainers: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.initContainers \"context\" $) | nindent 8 }}\n      {{- end }}\n      containers:\n        - name: oauth2-proxy\n          image: {{ template \"oauth2-proxy.image\" . }}\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          {{- if not .Values.diagnosticMode.enabled }}\n          {{- if .Values.lifecycleHooks }}\n          lifecycle: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.lifecycleHooks \"context\" $) | nindent 12 }}\n          {{- end }}\n          {{- end }}\n          {{- if .Values.containerSecurityContext.enabled }}\n          securityContext: {{- omit .Values.containerSecurityContext \"enabled\" | toYaml | nindent 12 }}\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.command \"context\" $) | nindent 12 }}\n          {{- else if .Values.command }}\n          command: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.command \"context\" $) | nindent 12 }}\n          {{- end }}\n          {{- if .Values.diagnosticMode.enabled }}\n          args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.diagnosticMode.args \"context\" $) | nindent 12 }}\n          {{- else if .Values.args }}\n          args: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.args \"context\" $) | nindent 12 }}\n          {{- else }}\n          args:\n            - --http-address=0.0.0.0:{{ .Values.containerPort }}\n            {{- if or .Values.configuration.existingConfigmap .Values.configuration.content }}\n            - --config=/bitnami/oauth2-proxy/conf/oauth2_proxy.cfg\n            {{- end }}\n            {{- if .Values.configuration.authenticatedEmailsFile.enabled }}\n            - --authenticated-emails-file=/bitnami/oauth2-proxy/conf/authenticated-emails/authenticated-emails-list\n            {{- end }}\n            {{- if .Values.configuration.google.enabled }}\n            - --google-admin-email={{ .Values.configuration.google.adminEmail }}\n            - --google-service-account-json=/bitnami/oauth2-proxy/conf/google/service-account.json\n            {{- end }}\n            {{- if .Values.configuration.htpasswdFile.enabled }}\n            - --htpasswd-file=/bitnami/oauth2-proxy/conf/htpasswd/users.txt\n            {{- end }}\n            {{- if .Values.extraArgs }}\n            {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.extraArgs \"context\" $ ) | nindent 12 }}\n            {{- end }}\n          {{- end }}\n          env:\n            - name: OAUTH2_PROXY_CLIENT_ID\n              valueFrom:\n                secretKeyRef:\n                  name: {{ template \"oauth2-proxy.secretName\" . }}\n                  key: client-id\n            - name: OAUTH2_PROXY_CLIENT_SECRET\n              valueFrom:\n                secretKeyRef:\n                  name: {{ template \"oauth2-proxy.secretName\" . }}\n                  key: client-secret\n            - name: OAUTH2_PROXY_COOKIE_SECRET\n              valueFrom:\n                secretKeyRef:\n                  name: {{ template \"oauth2-proxy.secretName\" . }}\n                  key: cookie-secret\n            {{- if or .Values.redis.enabled .Values.externalRedis.host }}\n            - name: OAUTH2_PROXY_SESSION_STORE_TYPE\n              value: \"redis\"\n            {{- if or .Values.redis.auth.enabled .Values.externalRedis.password }}\n            - name: OAUTH2_PROXY_REDIS_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: {{ include \"oauth2-proxy.redis.secretName\" . }}\n                  key: {{ include \"oauth2-proxy.redis.secretPasswordKey\" . }}\n            {{- end }}\n            - name: OAUTH2_PROXY_REDIS_CONNECTION_URL\n              value: {{ include \"oauth2-proxy.redis.url\" . }}\n            {{- if and .Values.redis.sentinel.enabled .Values.redis.enabled }}\n            - name: OAUTH2_PROXY_REDIS_USE_SENTINEL\n              value: \"true\"\n            - name: OAUTH2_PROXY_REDIS_SENTINEL_MASTER_NAME\n              value: {{ .Values.redis.sentinel.masterSet }}\n            - name: OAUTH2_PROXY_REDIS_SENTINEL_CONNECTION_URLS\n              value: {{ include \"oauth2-proxy.redis.sentinelUrl\" . }}\n            {{- if .Values.redis.auth.sentinel }}\n            - name: OAUTH2_PROXY_REDIS_SENTINEL_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: {{ include \"oauth2-proxy.redis.secretName\" . }}\n                  key: {{ include \"oauth2-proxy.redis.secretPasswordKey\" . }}\n            {{- end }}\n            {{- end }}\n            {{- else }}\n            - name: OAUTH2_PROXY_SESSION_STORE_TYPE\n              value: \"cookie\"\n            {{- end }}\n            {{- if .Values.extraEnvVars }}\n            {{- include \"common.tplvalues.render\" (dict \"value\" .Values.extraEnvVars \"context\" $) | nindent 12 }}\n            {{- end }}\n          envFrom:\n            {{- if .Values.extraEnvVarsCM }}\n            - configMapRef:\n                name: {{ include \"common.tplvalues.render\" (dict \"value\" .Values.extraEnvVarsCM \"context\" $) }}\n            {{- end }}\n            {{- if .Values.extraEnvVarsSecret }}\n            - secretRef:\n                name: {{ include \"common.tplvalues.render\" (dict \"value\" .Values.extraEnvVarsSecret \"context\" $) }}\n            {{- end }}\n          ports:\n            - containerPort: {{ .Values.containerPort }}\n              name: http\n              protocol: TCP\n          {{- if .Values.resources }}\n          resources: {{ include \"common.tplvalues.render\" (dict \"value\" .Values.resources \"context\" $) | nindent 12 }}\n          {{- end }}\n          {{- if not .Values.diagnosticMode.enabled }}\n          {{- if .Values.livenessProbe.enabled }}\n          livenessProbe:\n            httpGet:\n              path: /ping\n              port: http\n              scheme: HTTP\n            initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }}\n            periodSeconds: {{ .Values.livenessProbe.periodSeconds }}\n            timeoutSeconds: {{ .Values.livenessProbe.timeoutSeconds }}\n            successThreshold: {{ .Values.livenessProbe.successThreshold }}\n            failureThreshold: {{ .Values.livenessProbe.failureThreshold }}\n          {{- else if .Values.customLivenessProbe }}\n          livenessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.customLivenessProbe \"context\" $) | nindent 12 }}\n          {{- end }}\n          {{- if .Values.readinessProbe.enabled }}\n          readinessProbe:\n            httpGet:\n              path: /ping\n              port: http\n              scheme: HTTP\n            initialDelaySeconds: {{ .Values.readinessProbe.initialDelaySeconds }}\n            periodSeconds: {{ .Values.readinessProbe.periodSeconds }}\n            timeoutSeconds: {{ .Values.readinessProbe.timeoutSeconds }}\n            successThreshold: {{ .Values.readinessProbe.successThreshold }}\n            failureThreshold: {{ .Values.readinessProbe.failureThreshold }}\n          {{- else if .Values.customReadinessProbe }}\n          readinessProbe: {{- include \"common.tplvalues.render\" (dict \"value\" .Values.customReadinessProbe \"context\" $) | nindent 12 }}\n          {{- end }}\n          {{- end }}\n          volumeMounts:\n          {{- if .Values.configuration.google.enabled }}\n            - name: google-secret\n              mountPath: /bitnami/oauth2-proxy/conf/google\n              readOnly: true\n          {{- end }}\n          {{- if or .Values.configuration.existingConfigmap .Values.configuration.content }}\n            - name: main-configuration\n              mountPath: /bitnami/oauth2-proxy/conf\n          {{- end }}\n          {{- if .Values.configuration.authenticatedEmailsFile.enabled }}\n            - name: authenticated-emails\n              mountPath: /bitnami/oauth2-proxy/conf/authenticated-emails\n              readOnly: true\n          {{- end }}\n          {{- if .Values.configuration.htpasswdFile.enabled }}\n            - name: htpasswd-file\n              mountPath: /bitnami/oauth2-proxy/conf/htpasswd\n              readOnly: true\n          {{- end }}\n          {{- if .Values.extraVolumeMounts }}\n          {{- include \"common.tplvalues.render\" (dict \"value\" .Values.extraVolumeMounts \"context\" $) | nindent 12 }}\n          {{- end }}\n        {{- if .Values.sidecars }}\n        {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.sidecars \"context\" $) | nindent 8 }}\n        {{- end }}\n      volumes:\n        {{- if .Values.configuration.google.enabled }}\n        - name: google-secret\n          secret:\n            secretName: {{ include \"oauth2-proxy.googleSecret\" . }}\n        {{- end }}\n        {{- if .Values.configuration.htpasswdFile.enabled }}\n        - name: htpasswd-file\n          secret:\n            secretName: {{ include \"oauth2-proxy.httpasswdSecret\" . }}\n        {{- end }}\n        {{- if .Values.configuration.authenticatedEmailsFile.enabled }}\n        - name: authenticated-emails\n          secret:\n            items:\n            - key: authenticated-emails-list\n              path: authenticated-emails-list\n            secretName: {{ include \"oauth2-proxy.authenticatedEmailsSecret\" . }}\n        {{- end }}\n        {{- if or .Values.configuration.existingConfigmap .Values.configuration.content }}\n        - name: main-configuration\n          configMap:\n            defaultMode: 420\n            name: {{ include \"oauth2-proxy.configmapName\" . }}\n        {{- end }}\n        {{- if .Values.extraVolumes }}\n        {{- include \"common.tplvalues.render\" (dict \"value\" .Values.extraVolumes \"context\" $) | nindent 8 }}\n        {{- end }}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/templates/extra-list.yaml",
    "content": "{{- range .Values.extraDeploy }}\n---\n{{ include \"common.tplvalues.render\" (dict \"value\" . \"context\" $) }}\n{{- end }}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/templates/ingress-route.yaml",
    "content": "{{- if .Values.traefik.enabled -}}\n{{- $servicePort := .Values.service.port -}}\napiVersion: traefik.containo.us/v1alpha1\nkind: IngressRoute\nmetadata:\n  name: oauth2-https\nspec:\n  entryPoints:\n  - web\n  - websecure\n  routes:\n  - kind: Rule\n    match: {{ printf \"Host(`%s`) && PathPrefix(`/`)\" .Values.traefik.ingress.host }}\n    priority: 0\n    middlewares:\n      - name: cors-security-headers\n    services:\n    - name: oauth-release-oauth2-proxy\n      port: {{ $servicePort }}\n  tls: {}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/templates/ingress.yaml",
    "content": "{{- if .Values.ingress.enabled -}}\napiVersion: {{ include \"common.capabilities.ingress.apiVersion\" . }}\nkind: Ingress\nmetadata:\n  name: {{ template \"common.names.fullname\" . }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: oauth2-proxy\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  annotations:\n    {{- if .Values.ingress.certManager }}\n    kubernetes.io/tls-acme: \"true\"\n    {{- end }}\n    {{- if .Values.ingress.annotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.ingress.annotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.commonAnnotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\nspec:\n  rules:\n    {{- if .Values.ingress.hostname }}\n    - host: {{ .Values.ingress.hostname }}\n      http:\n        paths:\n          {{- if .Values.ingress.extraPaths }}\n          {{- toYaml .Values.ingress.extraPaths | nindent 10 }}\n          {{- end }}\n          - path: {{ .Values.ingress.path }}\n            {{- if eq \"true\" (include \"common.ingress.supportsPathType\" .) }}\n            pathType: {{ .Values.ingress.pathType }}\n            {{- end }}\n            backend: {{- include \"common.ingress.backend\" (dict \"serviceName\" (include \"common.names.fullname\" .) \"servicePort\" \"http\" \"context\" $)  | nindent 14 }}\n    {{- end }}\n    {{- range .Values.ingress.extraHosts }}\n    - host: {{ .name | quote }}\n      http:\n        paths:\n          - path: {{ default \"/\" .path }}\n            {{- if eq \"true\" (include \"common.ingress.supportsPathType\" $) }}\n            pathType: {{ default \"ImplementationSpecific\" .pathType }}\n            {{- end }}\n            backend: {{- include \"common.ingress.backend\" (dict \"serviceName\" (include \"common.names.fullname\" $) \"servicePort\" \"http\" \"context\" $) | nindent 14 }}\n    {{- end }}\n  {{- if or .Values.ingress.tls .Values.ingress.extraTls }}\n  tls:\n    {{- if .Values.ingress.tls }}\n    - hosts:\n        - {{ .Values.ingress.hostname }}\n      secretName: {{ printf \"%s-tls\" .Values.ingress.hostname }}\n    {{- end }}\n    {{- if .Values.ingress.extraTls }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.ingress.extraTls \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/templates/pdb.yaml",
    "content": "{{- if .Values.pdb.create }}\napiVersion: policy/v1beta1\nkind: PodDisruptionBudget\nmetadata:\n  name: {{ template \"common.names.fullname\" . }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: oauth2-proxy\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\nspec:\n  {{- if .Values.pdb.minAvailable }}\n  minAvailable: {{ .Values.pdb.minAvailable }}\n  {{- end }}\n  {{- if .Values.pdb.maxUnavailable }}\n  maxUnavailable: {{ .Values.pdb.maxUnavailable }}\n  {{- end }}\n  selector:\n    matchLabels: {{- include \"common.labels.matchLabels\" . | nindent 6 }}\n      app.kubernetes.io/component: oauth2-proxy\n{{- end }}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/templates/secret-authenticated-emails-file.yaml",
    "content": "{{- if and (.Values.configuration.authenticatedEmailsFile.enabled) (not .Values.configuration.authenticatedEmailsFile.existingSecret) }}\napiVersion: v1\nkind: Secret\nmetadata:\n  name: {{ template \"common.names.fullname\" . }}-access-list\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: oauth2-proxy\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\ntype: Opaque\ndata:\n  authenticated-emails-list: {{ include \"common.tplvalues.render\" ( dict \"value\" .Values.configuration.authenticatedEmailsFile.content \"context\" $ ) | b64enc | quote }}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/templates/secret-google.yaml",
    "content": "{{- if and .Values.configuration.google (not .Values.configuration.google.existingSecret) }}\napiVersion: v1\nkind: Secret\nmetadata:\n  name: {{ template \"common.names.fullname\" . }}-google\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: oauth2-proxy\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\ntype: Opaque\ndata:\n  service-account.json: {{ include \"common.tplvalues.render\" ( dict \"value\" .Values.configuration.google.serviceAccountJson \"context\" $ ) | b64enc | quote }}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/templates/secret-htpasswd-file.yaml",
    "content": "{{- if and .Values.configuration.htpasswdFile.enabled (not .Values.configuration.htpasswdFile.existingSecret) }}\napiVersion: v1\nkind: Secret\nmetadata:\n  name: {{ template \"common.names.fullname\" . }}-htpasswd-file\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: oauth2-proxy\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\ntype: Opaque\nstringData:\n  users.txt: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.configuration.htpasswdFile.content \"context\" $ ) | b64enc | quote }}\n{{- end }}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/templates/secret.yaml",
    "content": "{{- if not .Values.configuration.existingSecret }}\napiVersion: v1\nkind: Secret\nmetadata:\n  name: {{ template \"common.names.fullname\" . }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: oauth2-proxy\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\ntype: Opaque\ndata:\n  cookie-secret: {{ .Values.configuration.cookieSecret | b64enc | quote }}\n  client-secret: {{ .Values.configuration.clientSecret | b64enc | quote }}\n  client-id: {{ .Values.configuration.clientID | b64enc | quote }}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/templates/service-account.yaml",
    "content": "{{- if .Values.serviceAccount.create -}}\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: {{ template \"oauth2-proxy.serviceAccountName\" . }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: oauth2-proxy\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if .Values.commonAnnotations }}\n  annotations: {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n  {{- end }}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/templates/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ template \"common.names.fullname\" . }}\n  namespace: {{ .Release.Namespace | quote }}\n  labels: {{- include \"common.labels.standard\" . | nindent 4 }}\n    app.kubernetes.io/component: oauth2-proxy\n    {{- if .Values.commonLabels }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonLabels \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- if or .Values.commonAnnotations .Values.service.annotations }}\n  annotations:\n    {{- if .Values.service.annotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.service.annotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n    {{- if .Values.commonAnnotations }}\n    {{- include \"common.tplvalues.render\" ( dict \"value\" .Values.commonAnnotations \"context\" $ ) | nindent 4 }}\n    {{- end }}\n  {{- end }}\nspec:\n  type: {{ .Values.service.type }}\n  {{- if (and (eq .Values.service.type \"ClusterIP\") (not (empty .Values.service.clusterIP))) }}\n  clusterIP: {{ .Values.service.clusterIP }}\n  {{end}}\n  {{- if (or (eq .Values.service.type \"LoadBalancer\") (eq .Values.service.type \"NodePort\")) }}\n  externalTrafficPolicy: {{ .Values.service.externalTrafficPolicy | quote }}\n  {{- end }}\n  {{ if eq .Values.service.type \"LoadBalancer\" }}\n  loadBalancerSourceRanges: {{ .Values.service.loadBalancerSourceRanges }}\n  {{ end }}\n  {{- if (and (eq .Values.service.type \"LoadBalancer\") (not (empty .Values.service.loadBalancerIP))) }}\n  loadBalancerIP: {{ .Values.service.loadBalancerIP }}\n  {{- end }}\n  ports:\n    - name: http\n      port: {{ .Values.service.port }}\n      protocol: TCP\n      targetPort: http\n      {{- if (and (or (eq .Values.service.type \"NodePort\") (eq .Values.service.type \"LoadBalancer\")) (not (empty .Values.service.nodePorts.http))) }}\n      nodePort: {{ .Values.service.nodePorts.http }}\n      {{- else if eq .Values.service.type \"ClusterIP\" }}\n      nodePort: null\n      {{- end }}\n  selector: {{- include \"common.labels.matchLabels\" . | nindent 4 }}\n    app.kubernetes.io/component: oauth2-proxy\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/templates/traefik-middlewares.yaml",
    "content": "{{- if .Values.traefik.enabled -}}\n{{- $servicePort := .Values.service.portNumber -}}\napiVersion: traefik.containo.us/v1alpha1\nkind: Middleware\nmetadata:\n  name: cors-security-headers\nspec:\n  headers:\n    accessControlAllowCredentials: true\n    accessControlAllowMethods:\n      - GET\n      - OPTIONS\n      - HEAD\n    accessControlAllowOriginList:\n      - '*'\n    accessControlMaxAge: 604800\n    addVaryHeader: false\n    browserXssFilter: true\n    contentTypeNosniff: true\n    sslRedirect: true\n    sslTemporaryRedirect: false\n    stsIncludeSubdomains: true\n    stsPreload: true\n    stsSeconds: 10886400\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/oauth2-proxy/values.yaml",
    "content": "## @section Global parameters\n## Global Docker image parameters\n## Please, note that this will override the image parameters, including dependencies, configured to use the global value\n## Current available global Docker image parameters: imageRegistry, imagePullSecrets and storageClass\n##\n\n## @param global.imageRegistry Global Docker image registry\n## @param global.imagePullSecrets Global Docker registry secret names as an array\n## @param global.storageClass Global StorageClass for Persistent Volume(s)\n##\nglobal:\n  imageRegistry: \"\"\n  ## E.g.\n  ## imagePullSecrets:\n  ##   - myRegistryKeySecretName\n  ##\n  imagePullSecrets: []\n  storageClass: \"\"\n\n## @section Common parameters\n##\n\n## @param kubeVersion Override Kubernetes version\n##\nkubeVersion: \"\"\n## @param nameOverride String to partially override common.names.fullname\n##\nnameOverride: \"\"\n## @param fullnameOverride String to fully override common.names.fullname\n##\nfullnameOverride: \"\"\n## @param commonLabels Labels to add to all deployed objects\n##\ncommonLabels: {}\n## @param commonAnnotations Annotations to add to all deployed objects\n##\ncommonAnnotations: {}\n## @param clusterDomain Kubernetes cluster domain name\n##\nclusterDomain: cluster.local\n## @param extraDeploy Array of extra objects to deploy with the release\n##\nextraDeploy: []\n\n## Enable diagnostic mode in the deployment\n##\ndiagnosticMode:\n  ## @param diagnosticMode.enabled Enable diagnostic mode (all probes will be disabled and the command will be overridden)\n  ##\n  enabled: false\n  ## @param diagnosticMode.command Command to override all containers in the deployment\n  ##\n  command:\n    - sleep\n  ## @param diagnosticMode.args Args to override all containers in the deployment\n  ##\n  args:\n    - infinity\n\n## @section Traffic Exposure Parameters\n##\n\n## OAuth2 Proxy service parameters\n##\nservice:\n  ## @param service.type OAuth2 Proxy service type\n  ##\n  type: ClusterIP\n  ## @param service.port OAuth2 Proxy service HTTP port\n  ##\n  port: 8080\n  ## Node ports to expose\n  ## @param service.nodePorts.http Node port for HTTP\n  ## NOTE: choose port between <30000-32767>\n  ##\n  nodePorts:\n    http: \"\"\n  ## @param service.clusterIP OAuth2 Proxy service Cluster IP\n  ## e.g.:\n  ## clusterIP: None\n  ##\n  clusterIP: \"\"\n  ## @param service.loadBalancerIP OAuth2 Proxy service Load Balancer IP\n  ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-loadbalancer\n  ##\n  loadBalancerIP: \"\"\n  ## @param service.loadBalancerSourceRanges OAuth2 Proxy service Load Balancer sources\n  ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service\n  ## e.g:\n  ## loadBalancerSourceRanges:\n  ##   - 10.10.10.0/24\n  ##\n  loadBalancerSourceRanges: []\n  ## @param service.externalTrafficPolicy OAuth2 Proxy service external traffic policy\n  ## ref http://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip\n  ##\n  externalTrafficPolicy: Cluster\n  ## @param service.annotations Additional custom annotations for OAuth2 Proxy service\n  ##\n  annotations: {}\n\n## Configure the ingress resource that allows you to access the WordPress installation\n## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/\n##\ningress:\n  ## @param ingress.enabled Enable ingress record generation for WordPress\n  ##\n  enabled: false\n  ## @param ingress.certManager Add the corresponding annotations for cert-manager integration\n  ##\n  certManager: false\n  ## @param ingress.pathType Ingress path type\n  ##\n  pathType: ImplementationSpecific\n  ## @param ingress.apiVersion Force Ingress API version (automatically detected if not set)\n  ##\n  apiVersion: \"\"\n  ## @param ingress.hostname Default host for the ingress record\n  ##\n  hostname: localhost\n  ## @param ingress.path Default path for the ingress record\n  ## NOTE: You may need to set this to '/*' in order to use this with ALB ingress controllers\n  ##\n  path: /oauth\n  ## @param ingress.annotations Additional custom annotations for the ingress record\n  ## NOTE: If `ingress.certManager=true`, annotation `kubernetes.io/tls-acme: \"true\"` will automatically be added\n  ##\n  annotations: {}\n  ## @param ingress.tls Enable TLS configuration for the host defined at `ingress.hostname` parameter\n  ## TLS certificates will be retrieved from a TLS secret with name: `{{- printf \"%s-tls\" .Values.ingress.hostname }}`\n  ## You can:\n  ##   - Relay on cert-manager to create it by setting `ingress.certManager=true`\n  ##   - Relay on Helm to create self-signed certificates by setting `ingress.tls=true` and `ingress.certManager=false`\n  ##\n  tls: false\n  ## @param ingress.extraHosts An array with additional hostname(s) to be covered with the ingress record\n  ## e.g:\n  ## extraHosts:\n  ##   - name: oaut2-proxy.local\n  ##     path: /\n  ##\n  extraHosts: []\n  ## @param ingress.extraPaths An array with additional arbitrary paths that may need to be added to the ingress under the main host\n  ## e.g:\n  ## extraPaths:\n  ## - path: /*\n  ##   backend:\n  ##     serviceName: ssl-redirect\n  ##     servicePort: use-annotation\n  ##\n  extraPaths: []\n  ## @param ingress.extraTls TLS configuration for additional hostname(s) to be covered with this ingress record\n  ## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/#tls\n  ## e.g:\n  ## extraTls:\n  ## - hosts:\n  ##     - oaut2-proxy.local\n  ##   secretName: oaut2-proxy.local-tls\n  ##\n  extraTls: []\n\n## @section OAuth2 Proxy Image parameters\n##\n\n## Bitnami OAuth2 Proxy image\n## ref: https://hub.docker.com/r/bitnami/redis/tags/\n## @param image.registry OAuth2 Proxy image registry\n## @param image.repository OAuth2 Proxy image repository\n## @param image.tag OAuth2 Proxy image tag (immutable tags are recommended)\n## @param image.pullPolicy OAuth2 Proxy image pull policy\n## @param image.pullSecrets OAuth2 Proxy image pull secrets\n##\nimage:\n  registry: docker.io\n  repository: bitnami/oauth2-proxy\n  tag: 7.1.3-debian-10-r100\n  ## Specify a imagePullPolicy\n  ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'\n  ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images\n  ##\n  pullPolicy: IfNotPresent\n  ## Optionally specify an array of imagePullSecrets\n  ## Secrets must be manually created in the namespace\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\n  ## e.g:\n  ## pullSecrets:\n  ##   - myRegistryKeySecretName\n  ##\n  pullSecrets: []\n\n## @section OAuth2 Proxy configuration parameters\n##\n\n## Configuration section\n##\nconfiguration:\n  ## @param configuration.clientID OAuth client ID\n  ##\n  clientID: \"something23423423423-a95o1338f0ckk0s32hesn7o441icep2l.apps.googleusercontent.com\"\n  ## @param configuration.clientSecret OAuth client secret\n  ##\n  clientSecret: \"type_secret_here\"\n  ## Create a new secret with the following command openssl rand -base64 32 | head -c 32 | base64\n  ## Use an existing secret for OAuth2 credentials (see secret.yaml for required fields)\n  ##\n  ## @param configuration.cookieSecret OAuth cookie secret\n  ##\n  ### cookie_secret must be 16, 24, or 32 bytes to create an AES cipher\n  cookieSecret: \"type_secret_here\"\n  ## @param configuration.existingSecret Secret with the client ID, secret and cookie secret\n  ##\n  existingSecret: \"\"\n  ## e.g:\n  ## google:\n  ##   adminEmail: xxxx\n  ##   serviceAccountJson: xxxx\n  ##   existingSecret: google-secret\n  ## Alternatively, use an existing secret (see secret-google.yaml for required fields)\n  ##\n  ## @param configuration.google.enabled Enable Google service account\n  ## @param configuration.google.adminEmail Google admin email\n  ## @param configuration.google.serviceAccountJson Google Service account JSON\n  ## @param configuration.google.existingSecret Existing secret containing Google Service Account\n  ##\n  google:\n    enabled: false\n    adminEmail: \"\"\n    serviceAccountJson: \"\"\n    existingSecret: \"\"\n  ## Custom configuration file: oauth2_proxy.cfg\n  ## content: |\n  ##   pass_basic_auth = false\n  ##   pass_access_token = true\n  ##\n  ## @param configuration.content [string] Default configuration\n  ##\n  content: |\n    ### This will give access to only given domain\n    # email_domains = [ \"*\" ]\n    # upstreams = [ \"file:///dev/null\" ]\n    http_address=\"0.0.0.0:4180\"\n    provider=\"google\"\n    cookie_secure=\"true\"\n    redirect_url=\"https://auth.somedomain.com/oauth2/callback\"\n    cookie_domains=\".somedomain.com\" # Required so cookie can be read on all subdomains.\n    whitelist_domains=\".somedomain.com\" # Required to allow redirection back to original requested target.\n    # Mandatory option when using oauth2-proxy with traefik\n    reverse_proxy=\"true\"\n    # Required for traefik with ForwardAuth and static upstream configuration\n    upstreams=\"static://202\"\n    # The following option skip the page requesting the user\n    # to click on a button to be redirected to the identity provider\n    # It can be activated only when traefik is not configure with\n    # the error redirection middleware as this example.\n    skip_provider_button=\"true\"\n    set_authorization_header=\"true\"\n    set_xauthrequest=\"true\"\n\n  ## @param configuration.existingConfigmap Configmap with the OAuth2 Proxy configuration\n  ##\n  existingConfigmap: \"\"\n  ## Authorize individual email addresses\n  ## @param configuration.authenticatedEmailsFile.enabled Enable authenticated emails file\n  ## @param configuration.authenticatedEmailsFile.content Restricted access list (one email per line)\n  ## @param configuration.authenticatedEmailsFile.existingSecret Secret with the authenticated emails file\n  ##\n  authenticatedEmailsFile:\n    enabled: true\n    ## One email per line\n    ## e.g:\n    ## content: |-\n    ##   name1@domain\n    ##   name2@domain\n    ## If you override the config with restricted_access it will configure a user list within this chart what takes care of the configmap\n    ##\n    content: |-\n      onlyallowedgmail@gmail.com\n    existingSecret: \"\"\n\n  ## Additionally authenticate against a htpasswd file. Entries must be created with \"htpasswd -s\" for SHA encryption\n  ## @param configuration.htpasswdFile.enabled Enable htpasswd file\n  ## @param configuration.htpasswdFile.existingSecret Existing secret for htpasswd file\n  ## @param configuration.htpasswdFile.content htpasswd file entries (one row per user)\n  ##\n  htpasswdFile:\n    enabled: false\n    ## Alternatively supply an existing secret which contains the required information\n    ##\n    existingSecret: \"\"\n    ## One row for each user\n    ## e.g:\n    ## entries: |\n    ##    testuser:{SHA}EWhzdhgoYJWy0z2gyzhRYlN9DSiv\n    ##\n    content: \"\"\n\n## @section OAuth2 Proxy deployment parameters\n##\n\n## @param containerPort OAuth2 Proxy port number\n##\ncontainerPort: 4180\n\n## @param replicaCount Number of OAuth2 Proxy replicas to deploy\n##\nreplicaCount: 1\n\n## @param extraArgs add extra args to the default command\n##\nextraArgs: []\n## Configure extra options for OAuth2 Proxy containers' liveness and readiness probes\n## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes\n## @param livenessProbe.enabled Enable livenessProbe on OAuth2 Proxy nodes\n## @param livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe\n## @param livenessProbe.periodSeconds Period seconds for livenessProbe\n## @param livenessProbe.timeoutSeconds Timeout seconds for livenessProbe\n## @param livenessProbe.failureThreshold Failure threshold for livenessProbe\n## @param livenessProbe.successThreshold Success threshold for livenessProbe\n##\nlivenessProbe:\n  enabled: true\n  initialDelaySeconds: 0\n  periodSeconds: 10\n  timeoutSeconds: 1\n  failureThreshold: 5\n  successThreshold: 1\n## @param readinessProbe.enabled Enable readinessProbe on OAuth2 Proxy nodes\n## @param readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe\n## @param readinessProbe.periodSeconds Period seconds for readinessProbe\n## @param readinessProbe.timeoutSeconds Timeout seconds for readinessProbe\n## @param readinessProbe.failureThreshold Failure threshold for readinessProbe\n## @param readinessProbe.successThreshold Success threshold for readinessProbe\n##\nreadinessProbe:\n  enabled: true\n  initialDelaySeconds: 0\n  periodSeconds: 10\n  timeoutSeconds: 1\n  failureThreshold: 5\n  successThreshold: 1\n## @param customLivenessProbe Custom livenessProbe that overrides the default one\n##\ncustomLivenessProbe: {}\n## @param customReadinessProbe Custom readinessProbe that overrides the default one\n##\ncustomReadinessProbe: {}\n## OAuth2 Proxy resource requests and limits\n## ref: http://kubernetes.io/docs/user-guide/compute-resources/\n## @param resources.limits The resources limits for the OAuth2 Proxy containers\n## @param resources.requests The requested resources for the OAuth2 Proxy containers\n##\nresources:\n  limits: {}\n  requests: {}\n\n## Limits the number of pods of the replicated application that are down simultaneously from voluntary disruptions\n## ref: https://kubernetes.io/docs/concepts/workloads/pods/disruptions\n## e.g:\n## podDisruptionBudget:\n##   minAvailable: 1\n##   maxUnavailable: 1\n## @param pdb.create Enable a Pod Disruption Budget creation\n## @param pdb.minAvailable Minimum number/percentage of pods that should remain scheduled\n## @param pdb.maxUnavailable Maximum number/percentage of pods that may be made unavailable\n##\npdb:\n  create: false\n  minAvailable: 1\n  maxUnavailable: 1\n\n## Configure Pods Security Context\n## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod\n## @param podSecurityContext.enabled Enabled OAuth2 Proxy pods' Security Context\n## @param podSecurityContext.fsGroup Set OAuth2 Proxy pod's Security Context fsGroup\n##\npodSecurityContext:\n  enabled: true\n  fsGroup: 1001\n## Configure Container Security Context\n## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod\n## @param containerSecurityContext.enabled Enabled OAuth2 Proxy containers' Security Context\n## @param containerSecurityContext.runAsUser Set OAuth2 Proxy containers' Security Context runAsUser\n##\ncontainerSecurityContext:\n  enabled: true\n  runAsUser: 1001\n\n## @param command Override default container command (useful when using custom images)\n##\ncommand: []\n## @param args Override default container args (useful when using custom images)\n##\nargs: []\n## @param hostAliases OAuth2 Proxy pods host aliases\n## ref: https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/\n##\nhostAliases: []\n## @param podLabels Extra labels for OAuth2 Proxy pods\n## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/\n##\npodLabels: {}\n## @param podAnnotations Annotations for OAuth2 Proxy pods\n## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/\n##\npodAnnotations: {}\n## @param podAffinityPreset Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`\n## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity\n##\npodAffinityPreset: \"\"\n## @param podAntiAffinityPreset Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`\n## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity\n##\npodAntiAffinityPreset: soft\n## Node affinity preset\n## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity\n##\nnodeAffinityPreset:\n  ## @param nodeAffinityPreset.type Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard`\n  ##\n  type: \"\"\n  ## @param nodeAffinityPreset.key Node label key to match. Ignored if `affinity` is set\n  ##\n  key: \"\"\n  ## @param nodeAffinityPreset.values Node label values to match. Ignored if `affinity` is set\n  ## E.g.\n  ## values:\n  ##   - e2e-az1\n  ##   - e2e-az2\n  ##\n  values: []\n## @param affinity Affinity for OAuth2 Proxy pods assignment\n## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity\n## NOTE: `podAffinityPreset`, `podAntiAffinityPreset`, and `nodeAffinityPreset` will be ignored when it's set\n##\naffinity: {}\n## @param nodeSelector Node labels for OAuth2 Proxy pods assignment\n## ref: https://kubernetes.io/docs/user-guide/node-selection/\n##\nnodeSelector: {}\n## @param tolerations Tolerations for OAuth2 Proxy pods assignment\n## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/\n##\ntolerations: []\n## @param updateStrategy.type OAuth2 Proxy statefulset strategy type\n## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies\n##\nupdateStrategy:\n  ## StrategyType\n  ## Can be set to RollingUpdate or OnDelete\n  ##\n  type: RollingUpdate\n## @param priorityClassName OAuth2 Proxy pods' priorityClassName\n##\npriorityClassName: \"\"\n## @param lifecycleHooks for the OAuth2 Proxy container(s) to automate configuration before or after startup\n##\nlifecycleHooks: {}\n## @param extraEnvVars Array with extra environment variables to add to OAuth2 Proxy nodes\n## e.g:\n## extraEnvVars:\n##   - name: FOO\n##     value: \"bar\"\n##\nextraEnvVars: []\n## @param extraEnvVarsCM Name of existing ConfigMap containing extra env vars for OAuth2 Proxy nodes\n##\nextraEnvVarsCM: \"\"\n## @param extraEnvVarsSecret Name of existing Secret containing extra env vars for OAuth2 Proxy nodes\n##\nextraEnvVarsSecret: \"\"\n## @param extraVolumes Optionally specify extra list of additional volumes for the OAuth2 Proxy pod(s)\n##\nextraVolumes: []\n## @param extraVolumeMounts Optionally specify extra list of additional volumeMounts for the OAuth2 Proxy container(s)\n##\nextraVolumeMounts: []\n## @param sidecars Add additional sidecar containers to the OAuth2 Proxy pod(s)\n## e.g:\n## sidecars:\n##   - name: your-image-name\n##     image: your-image\n##     imagePullPolicy: Always\n##     ports:\n##       - name: portname\n##         containerPort: 1234\n##\nsidecars: []\n## @param initContainers Add additional init containers to the OAuth2 Proxy pod(s)\n## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n## e.g:\n## initContainers:\n##  - name: your-image-name\n##    image: your-image\n##    imagePullPolicy: Always\n##    command: ['sh', '-c', 'echo \"hello world\"']\n##\ninitContainers: []\n\n## ServiceAccount configuration\n##\nserviceAccount:\n  ## @param serviceAccount.create Specifies whether a ServiceAccount should be created\n  ##\n  create: true\n  ## @param serviceAccount.name The name of the ServiceAccount to use\n  ## If not set and create is true, a name is generated using the common.names.fullname template\n  ##\n  name: \"\"\n\n## @section External Redis&trade; parameters\n##\nexternalRedis:\n  ## @param externalRedis.host External Redis&trade; server host\n  ##\n  host: \"\"\n  ## @param externalRedis.password External Redis&trade; user password\n  ##\n  password: \"\"\n  ## @param externalRedis.port External Redis&trade; server port\n  ##\n  port: 6379\n  ## @param externalRedis.existingSecret The name of an existing secret with Redis&trade; credentials\n  ## NOTE: Must contain key `redis-password`\n  ## NOTE: When it's set, the `externalRedis.password` parameter is ignored\n  ##\n  existingSecret: \"\"\n\n## @section Redis&trade; sub-chart parameters\n##\nredis:\n  ## @param redis.enabled Deploy Redis&trade; sub-chart\n  ##\n  enabled: false\n  ## @param redis.architecture Redis&trade; architecture\n  ##\n  architecture: \"standalone\"\n  master:\n    ## @param redis.master.service.port Redis&trade; (without Sentinel) service port\n    ##\n    service:\n      port: 6379\n  replica:\n    ## @param redis.replica.replicaCount Number of Redis&trade; replicas\n    ##\n    replicaCount: 3\n  auth:\n    ## @param redis.auth.enabled Enable Redis&trade; authentication\n    ##\n    enabled: true\n    ## @param redis.auth.existingSecret Secret with Redis&trade; credentials\n    ##\n    existingSecret: \"\"\n    ## @param redis.auth.existingSecretPasswordKey Key inside the existing secret with Redis&trade; credentials\n    ##\n    existingSecretPasswordKey: \"\"\n    ## @param redis.auth.sentinel Enable authentication in the Sentinel nodes\n    ##\n    sentinel: true\n  sentinel:\n    ## @param redis.sentinel.enabled Enable Redis&trade; sentinel in the deployment\n    ##\n    enabled: false\n    ## @param redis.sentinel.masterSet Name of the Redis&trade; Sentinel master set\n    ##\n    masterSet: mymaster\n    service:\n      ## @param redis.sentinel.service.port Redis&trade; (with Sentinel) service port\n      ##\n      port: 6379\n      ## @param redis.sentinel.service.sentinelPort Redis&trade; (with Sentinel) sentinel service port\n      ##\n      sentinelPort: 26379\n\ntraefik:\n  enabled: true\n  ingress:\n    host: auth.somedomain.com\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/.helmignore",
    "content": "tests/\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/Chart.yaml",
    "content": "apiVersion: v2\nname: traefik\ndescription: A Traefik based Kubernetes ingress controller\ntype: application\nversion: 10.3.4\nappVersion: 2.5.1\nkeywords:\n  - traefik\n  - ingress\nhome: https://traefik.io/\nsources:\n  - https://github.com/traefik/traefik\n  - https://github.com/traefik/traefik-helm-chart\nmaintainers:\n  - name: emilevauge\n    email: emile@vauge.com\n  - name: dtomcej\n    email: daniel.tomcej@gmail.com\n  - name: ldez\n    email: ldez@traefik.io\nicon: https://raw.githubusercontent.com/traefik/traefik/v2.3/docs/content/assets/img/traefik.logo.png\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/Guidelines.md",
    "content": "# Traefik Helm Chart Guidelines\n\nThis document outlines the guidelines for developing, managing and extending the Traefik helm chart.\n\nOptionallity\nAll non-critical features (Features not mandatory to starting Traefik) in the helm chart must be optional. All non-critical features should be disabled (commented out) in the values.yaml file. All optional non-critical features should be disabled (commented out) in the values.yaml file, and have a comment # (Optional) in the line above. This allows minimal configuration, and ease of extension.\n\n## Critical Feature Example\n\n```yaml\nimage:\n  name: traefik\n```\n\nThis feature is critical, and therefore is defined clearly in the values.yaml file.\n\n## Non-Critical Feature Example\n\n```yaml\n# storage:\n#   controlNode:\n#     type: emptyDir\n```\n\nThis feature is non-critical, and therefore is commented out by default in the values.yaml file.\n\nTo allow this, template blocks that use this need to recursively test for existence of values before using them:\n\n```yaml\n{{- if .Values.storage}}\n  {{- if .Values.storage.controlNode }}\n    //code\n    {{ .Values.storage.controlNode.type }}\n  {{- end }}\n{{- end }}\n```\n\nThe non-critical feature defaults should be populated so that they can be enabled by simply uncommenting the section in the values.yaml file.\n\n## Optional Non-Critical Feature Example\n\n```yaml\n# storage:\n#   controlNode:\n#     type: emptyDir\n#     # (Optional)\n#     # volume: 1Gi\n```\n\nThe volume option is clearly optional, and non-critical. It is commented out (apart from the storage section comment block), and is also preceeded by a comment of # (Optional) in the preceeding line. This facilitates configuration, when the storage section is uncommented, the optional features are still disabled by default.\n\nSimilar to non-critical feaures, these options need to be tested for existance before use in the template.\n\nNote\nThere can be optional values in critical features. These should just be added as an uncommented non-critical feature:\n\n```yaml\nimage:\n  name: traefik\n  tag: 2.0.0\n  # (Optional)\n  # pullPolicy: IfNotPresent\n```\n\nAlso, the first value under the primary value key does not require an optional comment:\n\n```yaml\n# ports:\n#   http: 80\n#   # (Optional)\n#   # https: 443\n```\n\nThis is because if the main subkey is not defined, the entirety of the feature is optional.\n\n## Whitespace\n\nExtra whitespace is to be avoided in templating. Conditionals should chomp whitespace:\n\n```yaml\n{{- if .Values }}\n{{- end }}\n```\n\nThere should be an empty commented line between each primary key in the values.yaml file to separate features from each other.\n\n## Values YAML Design\n\nThe values.yaml file is designed to be user-friendly. It does not have to resemble the templated configuration if it is not conducive. Similarly, value names to not have to correspond to fields in the tempate if it is not condusive.\n\n## Comments\n\nThe values.yaml file should not contain comments or explainations of what options are, or what values are available. The values table in the README file is for this purpose.\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/LICENSE",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright 2020 Containous\n   Copyright 2020 Traefik Labs\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/README.md",
    "content": "# Traefik\n\n[Traefik](https://traefik.io/) is a modern HTTP reverse proxy and load balancer made to deploy\nmicroservices with ease.\n\n## Introduction\n\nThis chart bootstraps Traefik version 2 as a Kubernetes ingress controller,\nusing Custom Resources `IngressRoute`: <https://docs.traefik.io/providers/kubernetes-crd/>.\n\n### Philosophy\n\nThe Traefik HelmChart is focused on Traefik deployment configuration.\n\nTo keep this HelmChart as generic as possible we tend\nto avoid integrating any third party solutions nor any specific use cases.\n\nAccordingly, the encouraged approach to fulfill your needs:\n1. override the default Traefik configuration values ([yaml file or cli](https://helm.sh/docs/chart_template_guide/values_files/))\n2. append your own configurations (`kubectl apply -f myconf.yaml`)\n3. extend this HelmChart ([as a Subchart](https://helm.sh/docs/chart_template_guide/subcharts_and_globals/))\n\n## Installing\n\n### Prerequisites\n\nWith the command `helm version`, make sure that you have:\n- Helm v3 [installed](https://helm.sh/docs/using_helm/#installing-helm)\n\nAdd Traefik's chart repository to Helm:\n\n```bash\nhelm repo add traefik https://helm.traefik.io/traefik\n```\n\nYou can update the chart repository by running:\n\n```bash\nhelm repo update\n```\n\n### Kubernetes Version Support\n\nDue to changes in CRD version support, the following versions of the chart are usable and supported on the following kubernetes versions:\n\n|                         | Kubernetes v1.15 and below | Kubernetes v1.16-v1.21 | Kubernetes v1.22 and above |\n|-------------------------|----------------------------|------------------------|----------------------------|\n| Chart v9.20.2 and below | [x]                        | [x]                    |                            |\n| Chart 10.0.0 and above  |                            | [x]                    | [x]                        |\n\n### Deploying Traefik\n\n```bash\nhelm install traefik traefik/traefik\n```\n\n#### Warning\n\nHelm v2 support was removed in the chart version 10.0.0.\n\n### Exposing the Traefik dashboard\n\nThis HelmChart does not expose the Traefik dashboard by default, for security concerns.\nThus, there are multiple ways to expose the dashboard.\nFor instance, the dashboard access could be achieved through a port-forward :\n\n```\nkubectl port-forward $(kubectl get pods --selector \"app.kubernetes.io/name=traefik\" --output=name) 9000:9000\n```\n\nAnother way would be to apply your own configuration, for instance,\nby defining and applying an IngressRoute CRD (`kubectl apply -f dashboard.yaml`):\n\n```yaml\n# dashboard.yaml\napiVersion: traefik.containo.us/v1alpha1\nkind: IngressRoute\nmetadata:\n  name: dashboard\nspec:\n  entryPoints:\n    - web\n  routes:\n    - match: Host(`traefik.localhost`) && (PathPrefix(`/dashboard`) || PathPrefix(`/api`))\n      kind: Rule\n      services:\n        - name: api@internal\n          kind: TraefikService\n```\n\n## Contributing\n\nIf you want to contribute to this chart, please read the [Contributing Guide](../CONTRIBUTING.md).\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/crds/ingressroute.yaml",
    "content": "apiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.4.1\n  creationTimestamp: null\n  name: ingressroutes.traefik.containo.us\nspec:\n  group: traefik.containo.us\n  names:\n    kind: IngressRoute\n    listKind: IngressRouteList\n    plural: ingressroutes\n    singular: ingressroute\n  scope: Namespaced\n  versions:\n  - name: v1alpha1\n    schema:\n      openAPIV3Schema:\n        description: IngressRoute is an Ingress CRD specification.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: IngressRouteSpec is a specification for a IngressRouteSpec\n              resource.\n            properties:\n              entryPoints:\n                items:\n                  type: string\n                type: array\n              routes:\n                items:\n                  description: Route contains the set of routes.\n                  properties:\n                    kind:\n                      enum:\n                      - Rule\n                      type: string\n                    match:\n                      type: string\n                    middlewares:\n                      items:\n                        description: MiddlewareRef is a ref to the Middleware resources.\n                        properties:\n                          name:\n                            type: string\n                          namespace:\n                            type: string\n                        required:\n                        - name\n                        type: object\n                      type: array\n                    priority:\n                      type: integer\n                    services:\n                      items:\n                        description: Service defines an upstream to proxy traffic.\n                        properties:\n                          kind:\n                            enum:\n                            - Service\n                            - TraefikService\n                            type: string\n                          name:\n                            description: Name is a reference to a Kubernetes Service\n                              object (for a load-balancer of servers), or to a TraefikService\n                              object (service load-balancer, mirroring, etc). The\n                              differentiation between the two is specified in the\n                              Kind field.\n                            type: string\n                          namespace:\n                            type: string\n                          passHostHeader:\n                            type: boolean\n                          port:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            x-kubernetes-int-or-string: true\n                          responseForwarding:\n                            description: ResponseForwarding holds configuration for\n                              the forward of the response.\n                            properties:\n                              flushInterval:\n                                type: string\n                            type: object\n                          scheme:\n                            type: string\n                          serversTransport:\n                            type: string\n                          sticky:\n                            description: Sticky holds the sticky configuration.\n                            properties:\n                              cookie:\n                                description: Cookie holds the sticky configuration\n                                  based on cookie.\n                                properties:\n                                  httpOnly:\n                                    type: boolean\n                                  name:\n                                    type: string\n                                  sameSite:\n                                    type: string\n                                  secure:\n                                    type: boolean\n                                type: object\n                            type: object\n                          strategy:\n                            type: string\n                          weight:\n                            description: Weight should only be specified when Name\n                              references a TraefikService object (and to be precise,\n                              one that embeds a Weighted Round Robin).\n                            type: integer\n                        required:\n                        - name\n                        type: object\n                      type: array\n                  required:\n                  - kind\n                  - match\n                  type: object\n                type: array\n              tls:\n                description: \"TLS contains the TLS certificates configuration of the\n                  routes. To enable Let's Encrypt, use an empty TLS struct, e.g. in\n                  YAML: \\n \\t tls: {} # inline format \\n \\t tls: \\t   secretName:\n                  # block format\"\n                properties:\n                  certResolver:\n                    type: string\n                  domains:\n                    items:\n                      description: Domain holds a domain name with SANs.\n                      properties:\n                        main:\n                          type: string\n                        sans:\n                          items:\n                            type: string\n                          type: array\n                      type: object\n                    type: array\n                  options:\n                    description: Options is a reference to a TLSOption, that specifies\n                      the parameters of the TLS connection.\n                    properties:\n                      name:\n                        type: string\n                      namespace:\n                        type: string\n                    required:\n                    - name\n                    type: object\n                  secretName:\n                    description: SecretName is the name of the referenced Kubernetes\n                      Secret to specify the certificate details.\n                    type: string\n                  store:\n                    description: Store is a reference to a TLSStore, that specifies\n                      the parameters of the TLS store.\n                    properties:\n                      name:\n                        type: string\n                      namespace:\n                        type: string\n                    required:\n                    - name\n                    type: object\n                type: object\n            required:\n            - routes\n            type: object\n        required:\n        - metadata\n        - spec\n        type: object\n    served: true\n    storage: true\nstatus:\n  acceptedNames:\n    kind: \"\"\n    plural: \"\"\n  conditions: []\n  storedVersions: []\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/crds/ingressroutetcp.yaml",
    "content": "apiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.4.1\n  creationTimestamp: null\n  name: ingressroutetcps.traefik.containo.us\nspec:\n  group: traefik.containo.us\n  names:\n    kind: IngressRouteTCP\n    listKind: IngressRouteTCPList\n    plural: ingressroutetcps\n    singular: ingressroutetcp\n  scope: Namespaced\n  versions:\n  - name: v1alpha1\n    schema:\n      openAPIV3Schema:\n        description: IngressRouteTCP is an Ingress CRD specification.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: IngressRouteTCPSpec is a specification for a IngressRouteTCPSpec\n              resource.\n            properties:\n              entryPoints:\n                items:\n                  type: string\n                type: array\n              routes:\n                items:\n                  description: RouteTCP contains the set of routes.\n                  properties:\n                    match:\n                      type: string\n                    middlewares:\n                      description: Middlewares contains references to MiddlewareTCP\n                        resources.\n                      items:\n                        description: ObjectReference is a generic reference to a Traefik\n                          resource.\n                        properties:\n                          name:\n                            type: string\n                          namespace:\n                            type: string\n                        required:\n                        - name\n                        type: object\n                      type: array\n                    services:\n                      items:\n                        description: ServiceTCP defines an upstream to proxy traffic.\n                        properties:\n                          name:\n                            type: string\n                          namespace:\n                            type: string\n                          port:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            x-kubernetes-int-or-string: true\n                          proxyProtocol:\n                            description: ProxyProtocol holds the ProxyProtocol configuration.\n                            properties:\n                              version:\n                                type: integer\n                            type: object\n                          terminationDelay:\n                            type: integer\n                          weight:\n                            type: integer\n                        required:\n                        - name\n                        - port\n                        type: object\n                      type: array\n                  required:\n                  - match\n                  type: object\n                type: array\n              tls:\n                description: \"TLSTCP contains the TLS certificates configuration of\n                  the routes. To enable Let's Encrypt, use an empty TLS struct, e.g.\n                  in YAML: \\n \\t tls: {} # inline format \\n \\t tls: \\t   secretName:\n                  # block format\"\n                properties:\n                  certResolver:\n                    type: string\n                  domains:\n                    items:\n                      description: Domain holds a domain name with SANs.\n                      properties:\n                        main:\n                          type: string\n                        sans:\n                          items:\n                            type: string\n                          type: array\n                      type: object\n                    type: array\n                  options:\n                    description: Options is a reference to a TLSOption, that specifies\n                      the parameters of the TLS connection.\n                    properties:\n                      name:\n                        type: string\n                      namespace:\n                        type: string\n                    required:\n                    - name\n                    type: object\n                  passthrough:\n                    type: boolean\n                  secretName:\n                    description: SecretName is the name of the referenced Kubernetes\n                      Secret to specify the certificate details.\n                    type: string\n                  store:\n                    description: Store is a reference to a TLSStore, that specifies\n                      the parameters of the TLS store.\n                    properties:\n                      name:\n                        type: string\n                      namespace:\n                        type: string\n                    required:\n                    - name\n                    type: object\n                type: object\n            required:\n            - routes\n            type: object\n        required:\n        - metadata\n        - spec\n        type: object\n    served: true\n    storage: true\nstatus:\n  acceptedNames:\n    kind: \"\"\n    plural: \"\"\n  conditions: []\n  storedVersions: []\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/crds/ingressrouteudp.yaml",
    "content": "apiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.4.1\n  creationTimestamp: null\n  name: ingressrouteudps.traefik.containo.us\nspec:\n  group: traefik.containo.us\n  names:\n    kind: IngressRouteUDP\n    listKind: IngressRouteUDPList\n    plural: ingressrouteudps\n    singular: ingressrouteudp\n  scope: Namespaced\n  versions:\n  - name: v1alpha1\n    schema:\n      openAPIV3Schema:\n        description: IngressRouteUDP is an Ingress CRD specification.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: IngressRouteUDPSpec is a specification for a IngressRouteUDPSpec\n              resource.\n            properties:\n              entryPoints:\n                items:\n                  type: string\n                type: array\n              routes:\n                items:\n                  description: RouteUDP contains the set of routes.\n                  properties:\n                    services:\n                      items:\n                        description: ServiceUDP defines an upstream to proxy traffic.\n                        properties:\n                          name:\n                            type: string\n                          namespace:\n                            type: string\n                          port:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            x-kubernetes-int-or-string: true\n                          weight:\n                            type: integer\n                        required:\n                        - name\n                        - port\n                        type: object\n                      type: array\n                  type: object\n                type: array\n            required:\n            - routes\n            type: object\n        required:\n        - metadata\n        - spec\n        type: object\n    served: true\n    storage: true\nstatus:\n  acceptedNames:\n    kind: \"\"\n    plural: \"\"\n  conditions: []\n  storedVersions: []\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/crds/middlewares.yaml",
    "content": "apiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.4.1\n  creationTimestamp: null\n  name: middlewares.traefik.containo.us\nspec:\n  group: traefik.containo.us\n  names:\n    kind: Middleware\n    listKind: MiddlewareList\n    plural: middlewares\n    singular: middleware\n  scope: Namespaced\n  versions:\n  - name: v1alpha1\n    schema:\n      openAPIV3Schema:\n        description: Middleware is a specification for a Middleware resource.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: MiddlewareSpec holds the Middleware configuration.\n            properties:\n              addPrefix:\n                description: AddPrefix holds the AddPrefix configuration.\n                properties:\n                  prefix:\n                    type: string\n                type: object\n              basicAuth:\n                description: BasicAuth holds the HTTP basic authentication configuration.\n                properties:\n                  headerField:\n                    type: string\n                  realm:\n                    type: string\n                  removeHeader:\n                    type: boolean\n                  secret:\n                    type: string\n                type: object\n              buffering:\n                description: Buffering holds the request/response buffering configuration.\n                properties:\n                  maxRequestBodyBytes:\n                    format: int64\n                    type: integer\n                  maxResponseBodyBytes:\n                    format: int64\n                    type: integer\n                  memRequestBodyBytes:\n                    format: int64\n                    type: integer\n                  memResponseBodyBytes:\n                    format: int64\n                    type: integer\n                  retryExpression:\n                    type: string\n                type: object\n              chain:\n                description: Chain holds a chain of middlewares.\n                properties:\n                  middlewares:\n                    items:\n                      description: MiddlewareRef is a ref to the Middleware resources.\n                      properties:\n                        name:\n                          type: string\n                        namespace:\n                          type: string\n                      required:\n                      - name\n                      type: object\n                    type: array\n                type: object\n              circuitBreaker:\n                description: CircuitBreaker holds the circuit breaker configuration.\n                properties:\n                  expression:\n                    type: string\n                type: object\n              compress:\n                description: Compress holds the compress configuration.\n                properties:\n                  excludedContentTypes:\n                    items:\n                      type: string\n                    type: array\n                type: object\n              contentType:\n                description: ContentType middleware - or rather its unique `autoDetect`\n                  option - specifies whether to let the `Content-Type` header, if\n                  it has not been set by the backend, be automatically set to a value\n                  derived from the contents of the response. As a proxy, the default\n                  behavior should be to leave the header alone, regardless of what\n                  the backend did with it. However, the historic default was to always\n                  auto-detect and set the header if it was nil, and it is going to\n                  be kept that way in order to support users currently relying on\n                  it. This middleware exists to enable the correct behavior until\n                  at least the default one can be changed in a future version.\n                properties:\n                  autoDetect:\n                    type: boolean\n                type: object\n              digestAuth:\n                description: DigestAuth holds the Digest HTTP authentication configuration.\n                properties:\n                  headerField:\n                    type: string\n                  realm:\n                    type: string\n                  removeHeader:\n                    type: boolean\n                  secret:\n                    type: string\n                type: object\n              errors:\n                description: ErrorPage holds the custom error page configuration.\n                properties:\n                  query:\n                    type: string\n                  service:\n                    description: Service defines an upstream to proxy traffic.\n                    properties:\n                      kind:\n                        enum:\n                        - Service\n                        - TraefikService\n                        type: string\n                      name:\n                        description: Name is a reference to a Kubernetes Service object\n                          (for a load-balancer of servers), or to a TraefikService\n                          object (service load-balancer, mirroring, etc). The differentiation\n                          between the two is specified in the Kind field.\n                        type: string\n                      namespace:\n                        type: string\n                      passHostHeader:\n                        type: boolean\n                      port:\n                        anyOf:\n                        - type: integer\n                        - type: string\n                        x-kubernetes-int-or-string: true\n                      responseForwarding:\n                        description: ResponseForwarding holds configuration for the\n                          forward of the response.\n                        properties:\n                          flushInterval:\n                            type: string\n                        type: object\n                      scheme:\n                        type: string\n                      serversTransport:\n                        type: string\n                      sticky:\n                        description: Sticky holds the sticky configuration.\n                        properties:\n                          cookie:\n                            description: Cookie holds the sticky configuration based\n                              on cookie.\n                            properties:\n                              httpOnly:\n                                type: boolean\n                              name:\n                                type: string\n                              sameSite:\n                                type: string\n                              secure:\n                                type: boolean\n                            type: object\n                        type: object\n                      strategy:\n                        type: string\n                      weight:\n                        description: Weight should only be specified when Name references\n                          a TraefikService object (and to be precise, one that embeds\n                          a Weighted Round Robin).\n                        type: integer\n                    required:\n                    - name\n                    type: object\n                  status:\n                    items:\n                      type: string\n                    type: array\n                type: object\n              forwardAuth:\n                description: ForwardAuth holds the http forward authentication configuration.\n                properties:\n                  address:\n                    type: string\n                  authRequestHeaders:\n                    items:\n                      type: string\n                    type: array\n                  authResponseHeaders:\n                    items:\n                      type: string\n                    type: array\n                  authResponseHeadersRegex:\n                    type: string\n                  tls:\n                    description: ClientTLS holds TLS specific configurations as client.\n                    properties:\n                      caOptional:\n                        type: boolean\n                      caSecret:\n                        type: string\n                      certSecret:\n                        type: string\n                      insecureSkipVerify:\n                        type: boolean\n                    type: object\n                  trustForwardHeader:\n                    type: boolean\n                type: object\n              headers:\n                description: Headers holds the custom header configuration.\n                properties:\n                  accessControlAllowCredentials:\n                    description: AccessControlAllowCredentials is only valid if true.\n                      false is ignored.\n                    type: boolean\n                  accessControlAllowHeaders:\n                    description: AccessControlAllowHeaders must be used in response\n                      to a preflight request with Access-Control-Request-Headers set.\n                    items:\n                      type: string\n                    type: array\n                  accessControlAllowMethods:\n                    description: AccessControlAllowMethods must be used in response\n                      to a preflight request with Access-Control-Request-Method set.\n                    items:\n                      type: string\n                    type: array\n                  accessControlAllowOriginList:\n                    description: AccessControlAllowOriginList is a list of allowable\n                      origins. Can also be a wildcard origin \"*\".\n                    items:\n                      type: string\n                    type: array\n                  accessControlAllowOriginListRegex:\n                    description: AccessControlAllowOriginListRegex is a list of allowable\n                      origins written following the Regular Expression syntax (https://golang.org/pkg/regexp/).\n                    items:\n                      type: string\n                    type: array\n                  accessControlExposeHeaders:\n                    description: AccessControlExposeHeaders sets valid headers for\n                      the response.\n                    items:\n                      type: string\n                    type: array\n                  accessControlMaxAge:\n                    description: AccessControlMaxAge sets the time that a preflight\n                      request may be cached.\n                    format: int64\n                    type: integer\n                  addVaryHeader:\n                    description: AddVaryHeader controls if the Vary header is automatically\n                      added/updated when the AccessControlAllowOriginList is set.\n                    type: boolean\n                  allowedHosts:\n                    items:\n                      type: string\n                    type: array\n                  browserXssFilter:\n                    type: boolean\n                  contentSecurityPolicy:\n                    type: string\n                  contentTypeNosniff:\n                    type: boolean\n                  customBrowserXSSValue:\n                    type: string\n                  customFrameOptionsValue:\n                    type: string\n                  customRequestHeaders:\n                    additionalProperties:\n                      type: string\n                    type: object\n                  customResponseHeaders:\n                    additionalProperties:\n                      type: string\n                    type: object\n                  featurePolicy:\n                    type: string\n                  forceSTSHeader:\n                    type: boolean\n                  frameDeny:\n                    type: boolean\n                  hostsProxyHeaders:\n                    items:\n                      type: string\n                    type: array\n                  isDevelopment:\n                    type: boolean\n                  publicKey:\n                    type: string\n                  referrerPolicy:\n                    type: string\n                  sslForceHost:\n                    description: 'Deprecated: use RedirectRegex instead.'\n                    type: boolean\n                  sslHost:\n                    description: 'Deprecated: use RedirectRegex instead.'\n                    type: string\n                  sslProxyHeaders:\n                    additionalProperties:\n                      type: string\n                    type: object\n                  sslRedirect:\n                    description: 'Deprecated: use EntryPoint redirection or RedirectScheme\n                      instead.'\n                    type: boolean\n                  sslTemporaryRedirect:\n                    description: 'Deprecated: use EntryPoint redirection or RedirectScheme\n                      instead.'\n                    type: boolean\n                  stsIncludeSubdomains:\n                    type: boolean\n                  stsPreload:\n                    type: boolean\n                  stsSeconds:\n                    format: int64\n                    type: integer\n                type: object\n              inFlightReq:\n                description: InFlightReq limits the number of requests being processed\n                  and served concurrently.\n                properties:\n                  amount:\n                    format: int64\n                    type: integer\n                  sourceCriterion:\n                    description: SourceCriterion defines what criterion is used to\n                      group requests as originating from a common source. If none\n                      are set, the default is to use the request's remote address\n                      field. All fields are mutually exclusive.\n                    properties:\n                      ipStrategy:\n                        description: IPStrategy holds the ip strategy configuration.\n                        properties:\n                          depth:\n                            type: integer\n                          excludedIPs:\n                            items:\n                              type: string\n                            type: array\n                        type: object\n                      requestHeaderName:\n                        type: string\n                      requestHost:\n                        type: boolean\n                    type: object\n                type: object\n              ipWhiteList:\n                description: IPWhiteList holds the ip white list configuration.\n                properties:\n                  ipStrategy:\n                    description: IPStrategy holds the ip strategy configuration.\n                    properties:\n                      depth:\n                        type: integer\n                      excludedIPs:\n                        items:\n                          type: string\n                        type: array\n                    type: object\n                  sourceRange:\n                    items:\n                      type: string\n                    type: array\n                type: object\n              passTLSClientCert:\n                description: PassTLSClientCert holds the TLS client cert headers configuration.\n                properties:\n                  info:\n                    description: TLSClientCertificateInfo holds the client TLS certificate\n                      info configuration.\n                    properties:\n                      issuer:\n                        description: TLSCLientCertificateDNInfo holds the client TLS\n                          certificate distinguished name info configuration. cf https://tools.ietf.org/html/rfc3739\n                        properties:\n                          commonName:\n                            type: boolean\n                          country:\n                            type: boolean\n                          domainComponent:\n                            type: boolean\n                          locality:\n                            type: boolean\n                          organization:\n                            type: boolean\n                          province:\n                            type: boolean\n                          serialNumber:\n                            type: boolean\n                        type: object\n                      notAfter:\n                        type: boolean\n                      notBefore:\n                        type: boolean\n                      sans:\n                        type: boolean\n                      serialNumber:\n                        type: boolean\n                      subject:\n                        description: TLSCLientCertificateDNInfo holds the client TLS\n                          certificate distinguished name info configuration. cf https://tools.ietf.org/html/rfc3739\n                        properties:\n                          commonName:\n                            type: boolean\n                          country:\n                            type: boolean\n                          domainComponent:\n                            type: boolean\n                          locality:\n                            type: boolean\n                          organization:\n                            type: boolean\n                          province:\n                            type: boolean\n                          serialNumber:\n                            type: boolean\n                        type: object\n                    type: object\n                  pem:\n                    type: boolean\n                type: object\n              plugin:\n                additionalProperties:\n                  x-kubernetes-preserve-unknown-fields: true\n                type: object\n              rateLimit:\n                description: RateLimit holds the rate limiting configuration for a\n                  given router.\n                properties:\n                  average:\n                    format: int64\n                    type: integer\n                  burst:\n                    format: int64\n                    type: integer\n                  period:\n                    anyOf:\n                    - type: integer\n                    - type: string\n                    x-kubernetes-int-or-string: true\n                  sourceCriterion:\n                    description: SourceCriterion defines what criterion is used to\n                      group requests as originating from a common source. If none\n                      are set, the default is to use the request's remote address\n                      field. All fields are mutually exclusive.\n                    properties:\n                      ipStrategy:\n                        description: IPStrategy holds the ip strategy configuration.\n                        properties:\n                          depth:\n                            type: integer\n                          excludedIPs:\n                            items:\n                              type: string\n                            type: array\n                        type: object\n                      requestHeaderName:\n                        type: string\n                      requestHost:\n                        type: boolean\n                    type: object\n                type: object\n              redirectRegex:\n                description: RedirectRegex holds the redirection configuration.\n                properties:\n                  permanent:\n                    type: boolean\n                  regex:\n                    type: string\n                  replacement:\n                    type: string\n                type: object\n              redirectScheme:\n                description: RedirectScheme holds the scheme redirection configuration.\n                properties:\n                  permanent:\n                    type: boolean\n                  port:\n                    type: string\n                  scheme:\n                    type: string\n                type: object\n              replacePath:\n                description: ReplacePath holds the ReplacePath configuration.\n                properties:\n                  path:\n                    type: string\n                type: object\n              replacePathRegex:\n                description: ReplacePathRegex holds the ReplacePathRegex configuration.\n                properties:\n                  regex:\n                    type: string\n                  replacement:\n                    type: string\n                type: object\n              retry:\n                description: Retry holds the retry configuration.\n                properties:\n                  attempts:\n                    type: integer\n                  initialInterval:\n                    anyOf:\n                    - type: integer\n                    - type: string\n                    x-kubernetes-int-or-string: true\n                type: object\n              stripPrefix:\n                description: StripPrefix holds the StripPrefix configuration.\n                properties:\n                  forceSlash:\n                    type: boolean\n                  prefixes:\n                    items:\n                      type: string\n                    type: array\n                type: object\n              stripPrefixRegex:\n                description: StripPrefixRegex holds the StripPrefixRegex configuration.\n                properties:\n                  regex:\n                    items:\n                      type: string\n                    type: array\n                type: object\n            type: object\n        required:\n        - metadata\n        - spec\n        type: object\n    served: true\n    storage: true\nstatus:\n  acceptedNames:\n    kind: \"\"\n    plural: \"\"\n  conditions: []\n  storedVersions: []\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/crds/middlewarestcp.yaml",
    "content": "apiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.4.1\n  creationTimestamp: null\n  name: middlewaretcps.traefik.containo.us\nspec:\n  group: traefik.containo.us\n  names:\n    kind: MiddlewareTCP\n    listKind: MiddlewareTCPList\n    plural: middlewaretcps\n    singular: middlewaretcp\n  scope: Namespaced\n  versions:\n  - name: v1alpha1\n    schema:\n      openAPIV3Schema:\n        description: MiddlewareTCP is a specification for a MiddlewareTCP resource.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: MiddlewareTCPSpec holds the MiddlewareTCP configuration.\n            properties:\n              ipWhiteList:\n                description: TCPIPWhiteList holds the TCP ip white list configuration.\n                properties:\n                  sourceRange:\n                    items:\n                      type: string\n                    type: array\n                type: object\n            type: object\n        required:\n        - metadata\n        - spec\n        type: object\n    served: true\n    storage: true\nstatus:\n  acceptedNames:\n    kind: \"\"\n    plural: \"\"\n  conditions: []\n  storedVersions: []\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/crds/serverstransports.yaml",
    "content": "apiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.4.1\n  creationTimestamp: null\n  name: serverstransports.traefik.containo.us\nspec:\n  group: traefik.containo.us\n  names:\n    kind: ServersTransport\n    listKind: ServersTransportList\n    plural: serverstransports\n    singular: serverstransport\n  scope: Namespaced\n  versions:\n  - name: v1alpha1\n    schema:\n      openAPIV3Schema:\n        description: ServersTransport is a specification for a ServersTransport resource.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: ServersTransportSpec options to configure communication between\n              Traefik and the servers.\n            properties:\n              certificatesSecrets:\n                description: Certificates for mTLS.\n                items:\n                  type: string\n                type: array\n              disableHTTP2:\n                description: Disable HTTP/2 for connections with backend servers.\n                type: boolean\n              forwardingTimeouts:\n                description: Timeouts for requests forwarded to the backend servers.\n                properties:\n                  dialTimeout:\n                    anyOf:\n                    - type: integer\n                    - type: string\n                    description: The amount of time to wait until a connection to\n                      a backend server can be established. If zero, no timeout exists.\n                    x-kubernetes-int-or-string: true\n                  idleConnTimeout:\n                    anyOf:\n                    - type: integer\n                    - type: string\n                    description: The maximum period for which an idle HTTP keep-alive\n                      connection will remain open before closing itself.\n                    x-kubernetes-int-or-string: true\n                  responseHeaderTimeout:\n                    anyOf:\n                    - type: integer\n                    - type: string\n                    description: The amount of time to wait for a server's response\n                      headers after fully writing the request (including its body,\n                      if any). If zero, no timeout exists.\n                    x-kubernetes-int-or-string: true\n                type: object\n              insecureSkipVerify:\n                description: Disable SSL certificate verification.\n                type: boolean\n              maxIdleConnsPerHost:\n                description: If non-zero, controls the maximum idle (keep-alive) to\n                  keep per-host. If zero, DefaultMaxIdleConnsPerHost is used.\n                type: integer\n              rootCAsSecrets:\n                description: Add cert file for self-signed certificate.\n                items:\n                  type: string\n                type: array\n              serverName:\n                description: ServerName used to contact the server.\n                type: string\n            type: object\n        required:\n        - metadata\n        - spec\n        type: object\n    served: true\n    storage: true\nstatus:\n  acceptedNames:\n    kind: \"\"\n    plural: \"\"\n  conditions: []\n  storedVersions: []\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/crds/tlsoptions.yaml",
    "content": "apiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.4.1\n  creationTimestamp: null\n  name: tlsoptions.traefik.containo.us\nspec:\n  group: traefik.containo.us\n  names:\n    kind: TLSOption\n    listKind: TLSOptionList\n    plural: tlsoptions\n    singular: tlsoption\n  scope: Namespaced\n  versions:\n  - name: v1alpha1\n    schema:\n      openAPIV3Schema:\n        description: TLSOption is a specification for a TLSOption resource.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: TLSOptionSpec configures TLS for an entry point.\n            properties:\n              alpnProtocols:\n                items:\n                  type: string\n                type: array\n              cipherSuites:\n                items:\n                  type: string\n                type: array\n              clientAuth:\n                description: ClientAuth defines the parameters of the client authentication\n                  part of the TLS connection, if any.\n                properties:\n                  clientAuthType:\n                    description: ClientAuthType defines the client authentication\n                      type to apply.\n                    enum:\n                    - NoClientCert\n                    - RequestClientCert\n                    - VerifyClientCertIfGiven\n                    - RequireAndVerifyClientCert\n                    type: string\n                  secretNames:\n                    description: SecretName is the name of the referenced Kubernetes\n                      Secret to specify the certificate details.\n                    items:\n                      type: string\n                    type: array\n                type: object\n              curvePreferences:\n                items:\n                  type: string\n                type: array\n              maxVersion:\n                type: string\n              minVersion:\n                type: string\n              preferServerCipherSuites:\n                type: boolean\n              sniStrict:\n                type: boolean\n            type: object\n        required:\n        - metadata\n        - spec\n        type: object\n    served: true\n    storage: true\nstatus:\n  acceptedNames:\n    kind: \"\"\n    plural: \"\"\n  conditions: []\n  storedVersions: []\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/crds/tlsstores.yaml",
    "content": "apiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.4.1\n  creationTimestamp: null\n  name: tlsstores.traefik.containo.us\nspec:\n  group: traefik.containo.us\n  names:\n    kind: TLSStore\n    listKind: TLSStoreList\n    plural: tlsstores\n    singular: tlsstore\n  scope: Namespaced\n  versions:\n  - name: v1alpha1\n    schema:\n      openAPIV3Schema:\n        description: TLSStore is a specification for a TLSStore resource.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: TLSStoreSpec configures a TLSStore resource.\n            properties:\n              defaultCertificate:\n                description: DefaultCertificate holds a secret name for the TLSOption\n                  resource.\n                properties:\n                  secretName:\n                    description: SecretName is the name of the referenced Kubernetes\n                      Secret to specify the certificate details.\n                    type: string\n                required:\n                - secretName\n                type: object\n            required:\n            - defaultCertificate\n            type: object\n        required:\n        - metadata\n        - spec\n        type: object\n    served: true\n    storage: true\nstatus:\n  acceptedNames:\n    kind: \"\"\n    plural: \"\"\n  conditions: []\n  storedVersions: []\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/crds/traefikservices.yaml",
    "content": "apiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.4.1\n  creationTimestamp: null\n  name: traefikservices.traefik.containo.us\nspec:\n  group: traefik.containo.us\n  names:\n    kind: TraefikService\n    listKind: TraefikServiceList\n    plural: traefikservices\n    singular: traefikservice\n  scope: Namespaced\n  versions:\n  - name: v1alpha1\n    schema:\n      openAPIV3Schema:\n        description: TraefikService is the specification for a service (that an IngressRoute\n          refers to) that is usually not a terminal service (i.e. not a pod of servers),\n          as opposed to a Kubernetes Service. That is to say, it usually refers to\n          other (children) services, which themselves can be TraefikServices or Services.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: ServiceSpec defines whether a TraefikService is a load-balancer\n              of services or a mirroring service.\n            properties:\n              mirroring:\n                description: Mirroring defines a mirroring service, which is composed\n                  of a main load-balancer, and a list of mirrors.\n                properties:\n                  kind:\n                    enum:\n                    - Service\n                    - TraefikService\n                    type: string\n                  maxBodySize:\n                    format: int64\n                    type: integer\n                  mirrors:\n                    items:\n                      description: MirrorService defines one of the mirrors of a Mirroring\n                        service.\n                      properties:\n                        kind:\n                          enum:\n                          - Service\n                          - TraefikService\n                          type: string\n                        name:\n                          description: Name is a reference to a Kubernetes Service\n                            object (for a load-balancer of servers), or to a TraefikService\n                            object (service load-balancer, mirroring, etc). The differentiation\n                            between the two is specified in the Kind field.\n                          type: string\n                        namespace:\n                          type: string\n                        passHostHeader:\n                          type: boolean\n                        percent:\n                          type: integer\n                        port:\n                          anyOf:\n                          - type: integer\n                          - type: string\n                          x-kubernetes-int-or-string: true\n                        responseForwarding:\n                          description: ResponseForwarding holds configuration for\n                            the forward of the response.\n                          properties:\n                            flushInterval:\n                              type: string\n                          type: object\n                        scheme:\n                          type: string\n                        serversTransport:\n                          type: string\n                        sticky:\n                          description: Sticky holds the sticky configuration.\n                          properties:\n                            cookie:\n                              description: Cookie holds the sticky configuration based\n                                on cookie.\n                              properties:\n                                httpOnly:\n                                  type: boolean\n                                name:\n                                  type: string\n                                sameSite:\n                                  type: string\n                                secure:\n                                  type: boolean\n                              type: object\n                          type: object\n                        strategy:\n                          type: string\n                        weight:\n                          description: Weight should only be specified when Name references\n                            a TraefikService object (and to be precise, one that embeds\n                            a Weighted Round Robin).\n                          type: integer\n                      required:\n                      - name\n                      type: object\n                    type: array\n                  name:\n                    description: Name is a reference to a Kubernetes Service object\n                      (for a load-balancer of servers), or to a TraefikService object\n                      (service load-balancer, mirroring, etc). The differentiation\n                      between the two is specified in the Kind field.\n                    type: string\n                  namespace:\n                    type: string\n                  passHostHeader:\n                    type: boolean\n                  port:\n                    anyOf:\n                    - type: integer\n                    - type: string\n                    x-kubernetes-int-or-string: true\n                  responseForwarding:\n                    description: ResponseForwarding holds configuration for the forward\n                      of the response.\n                    properties:\n                      flushInterval:\n                        type: string\n                    type: object\n                  scheme:\n                    type: string\n                  serversTransport:\n                    type: string\n                  sticky:\n                    description: Sticky holds the sticky configuration.\n                    properties:\n                      cookie:\n                        description: Cookie holds the sticky configuration based on\n                          cookie.\n                        properties:\n                          httpOnly:\n                            type: boolean\n                          name:\n                            type: string\n                          sameSite:\n                            type: string\n                          secure:\n                            type: boolean\n                        type: object\n                    type: object\n                  strategy:\n                    type: string\n                  weight:\n                    description: Weight should only be specified when Name references\n                      a TraefikService object (and to be precise, one that embeds\n                      a Weighted Round Robin).\n                    type: integer\n                required:\n                - name\n                type: object\n              weighted:\n                description: WeightedRoundRobin defines a load-balancer of services.\n                properties:\n                  services:\n                    items:\n                      description: Service defines an upstream to proxy traffic.\n                      properties:\n                        kind:\n                          enum:\n                          - Service\n                          - TraefikService\n                          type: string\n                        name:\n                          description: Name is a reference to a Kubernetes Service\n                            object (for a load-balancer of servers), or to a TraefikService\n                            object (service load-balancer, mirroring, etc). The differentiation\n                            between the two is specified in the Kind field.\n                          type: string\n                        namespace:\n                          type: string\n                        passHostHeader:\n                          type: boolean\n                        port:\n                          anyOf:\n                          - type: integer\n                          - type: string\n                          x-kubernetes-int-or-string: true\n                        responseForwarding:\n                          description: ResponseForwarding holds configuration for\n                            the forward of the response.\n                          properties:\n                            flushInterval:\n                              type: string\n                          type: object\n                        scheme:\n                          type: string\n                        serversTransport:\n                          type: string\n                        sticky:\n                          description: Sticky holds the sticky configuration.\n                          properties:\n                            cookie:\n                              description: Cookie holds the sticky configuration based\n                                on cookie.\n                              properties:\n                                httpOnly:\n                                  type: boolean\n                                name:\n                                  type: string\n                                sameSite:\n                                  type: string\n                                secure:\n                                  type: boolean\n                              type: object\n                          type: object\n                        strategy:\n                          type: string\n                        weight:\n                          description: Weight should only be specified when Name references\n                            a TraefikService object (and to be precise, one that embeds\n                            a Weighted Round Robin).\n                          type: integer\n                      required:\n                      - name\n                      type: object\n                    type: array\n                  sticky:\n                    description: Sticky holds the sticky configuration.\n                    properties:\n                      cookie:\n                        description: Cookie holds the sticky configuration based on\n                          cookie.\n                        properties:\n                          httpOnly:\n                            type: boolean\n                          name:\n                            type: string\n                          sameSite:\n                            type: string\n                          secure:\n                            type: boolean\n                        type: object\n                    type: object\n                type: object\n            type: object\n        required:\n        - metadata\n        - spec\n        type: object\n    served: true\n    storage: true\nstatus:\n  acceptedNames:\n    kind: \"\"\n    plural: \"\"\n  conditions: []\n  storedVersions: []\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/templates/_helpers.tpl",
    "content": "{{/* vim: set filetype=mustache: */}}\n\n{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"traefik.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"traefik.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"traefik.fullname\" -}}\n{{- if .Values.fullnameOverride -}}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" -}}\n{{- else -}}\n{{- $name := default .Chart.Name .Values.nameOverride -}}\n{{- if contains $name .Release.Name -}}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" -}}\n{{- else -}}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" -}}\n{{- end -}}\n{{- end -}}\n{{- end -}}\n\n{{/*\nThe name of the service account to use\n*/}}\n{{- define \"traefik.serviceAccountName\" -}}\n{{- default (include \"traefik.fullname\" .) .Values.serviceAccount.name -}}\n{{- end -}}\n\n{{/*\nConstruct the path for the providers.kubernetesingress.ingressendpoint.publishedservice.\nBy convention this will simply use the <namespace>/<service-name> to match the name of the\nservice generated.\nUsers can provide an override for an explicit service they want bound via `.Values.providers.kubernetesIngress.publishedService.pathOverride`\n*/}}\n{{- define \"providers.kubernetesIngress.publishedServicePath\" -}}\n{{- $defServiceName := printf \"%s/%s\" .Release.Namespace (include \"traefik.fullname\" .) -}}\n{{- $servicePath := default $defServiceName .Values.providers.kubernetesIngress.publishedService.pathOverride }}\n{{- print $servicePath | trimSuffix \"-\" -}}\n{{- end -}}\n\n{{/*\nConstruct a comma-separated list of whitelisted namespaces\n*/}}\n{{- define \"providers.kubernetesIngress.namespaces\" -}}\n{{- default .Release.Namespace (join \",\" .Values.providers.kubernetesIngress.namespaces) }}\n{{- end -}}\n{{- define \"providers.kubernetesCRD.namespaces\" -}}\n{{- default .Release.Namespace (join \",\" .Values.providers.kubernetesCRD.namespaces) }}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/templates/_podtemplate.tpl",
    "content": "{{- define \"traefik.podTemplate\" }}\n    metadata:\n      annotations:\n      {{- with .Values.deployment.podAnnotations }}\n      {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- if .Values.metrics }}\n      {{- if .Values.metrics.prometheus }}\n        prometheus.io/scrape: \"true\"\n        prometheus.io/path: \"/metrics\"\n        prometheus.io/port: {{ quote (index .Values.ports .Values.metrics.prometheus.entryPoint).port }}\n      {{- end }}\n      {{- end }}\n      labels:\n        app.kubernetes.io/name: {{ template \"traefik.name\" . }}\n        helm.sh/chart: {{ template \"traefik.chart\" . }}\n        app.kubernetes.io/managed-by: {{ .Release.Service }}\n        app.kubernetes.io/instance: {{ .Release.Name }}\n      {{- with .Values.deployment.podLabels }}\n      {{- toYaml . | nindent 8 }}\n      {{- end }}\n    spec:\n      {{- with .Values.deployment.imagePullSecrets }}\n      imagePullSecrets:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      serviceAccountName: {{ include \"traefik.serviceAccountName\" . }}\n      terminationGracePeriodSeconds: 60\n      hostNetwork: {{ .Values.hostNetwork }}\n      {{- with .Values.deployment.dnsPolicy }}\n      dnsPolicy: {{ . }}\n      {{- end }}\n      {{- with .Values.deployment.initContainers }}\n      initContainers:\n      {{- toYaml . | nindent 6 }}\n      {{- end }}\n      containers:\n      - image: \"{{ .Values.image.name }}:{{ default .Chart.AppVersion .Values.image.tag }}\"\n        imagePullPolicy: {{ .Values.image.pullPolicy }}\n        name: {{ template \"traefik.fullname\" . }}\n        resources:\n          {{- with .Values.resources }}\n          {{- toYaml . | nindent 10 }}\n          {{- end }}\n        readinessProbe:\n          httpGet:\n            path: /ping\n            port: {{ default .Values.ports.traefik.port .Values.ports.traefik.healthchecksPort }}\n          failureThreshold: 1\n          initialDelaySeconds: 10\n          periodSeconds: 10\n          successThreshold: 1\n          timeoutSeconds: 2\n        livenessProbe:\n          httpGet:\n            path: /ping\n            port: {{ default .Values.ports.traefik.port .Values.ports.traefik.healthchecksPort }}\n          failureThreshold: 3\n          initialDelaySeconds: 10\n          periodSeconds: 10\n          successThreshold: 1\n          timeoutSeconds: 2\n        ports:\n        {{- range $name, $config := .Values.ports }}\n        {{- if $config }}\n        - name: {{ $name | quote }}\n          containerPort: {{ $config.port }}\n          {{- if $config.hostPort }}\n          hostPort: {{ $config.hostPort }}\n          {{- end }}\n          {{- if $config.hostIP }}\n          hostIP: {{ $config.hostIP }}\n          {{- end }}\n          protocol: {{ default \"TCP\" $config.protocol | quote }}\n        {{- end }}\n        {{- end }}\n        {{- with .Values.securityContext }}\n        securityContext:\n          {{- toYaml . | nindent 10 }}\n        {{- end }}\n        volumeMounts:\n          - name: {{ .Values.persistence.name }}\n            mountPath: {{ .Values.persistence.path }}\n            {{- if .Values.persistence.subPath }}\n            subPath: {{ .Values.persistence.subPath }}\n            {{- end }}\n          - name: tmp\n            mountPath: /tmp\n          {{- $root := . }}\n          {{- range .Values.volumes }}\n          - name: {{ tpl (.name) $root }}\n            mountPath: {{ .mountPath }}\n            readOnly: true\n          {{- end }}\n          {{- if .Values.experimental.plugins.enabled }}\n          - name: plugins\n            mountPath: \"/plugins-storage\"\n          {{- end }}\n          {{- if .Values.additionalVolumeMounts }}\n            {{- toYaml .Values.additionalVolumeMounts | nindent 10 }}\n          {{- end }}\n        args:\n          {{- with .Values.globalArguments }}\n          {{- range . }}\n          - {{ . | quote }}\n          {{- end }}\n          {{- end }}\n          {{- range $name, $config := .Values.ports }}\n          {{- if $config }}\n          - \"--entryPoints.{{$name}}.address=:{{ $config.port }}/{{ default \"tcp\" $config.protocol | lower }}\"\n          {{- end }}\n          {{- end }}\n          - \"--api.dashboard=true\"\n          - \"--ping=true\"\n          {{- if .Values.metrics }}\n          {{- if .Values.metrics.datadog }}\n          - \"--metrics.datadog=true\"\n          - \"--metrics.datadog.address={{ .Values.metrics.datadog.address }}\"\n          {{- end }}\n          {{- if .Values.metrics.influxdb }}\n          - \"--metrics.influxdb=true\"\n          - \"--metrics.influxdb.address={{ .Values.metrics.influxdb.address }}\"\n          - \"--metrics.influxdb.protocol={{ .Values.metrics.influxdb.protocol }}\"\n          {{- end }}\n          {{- if .Values.metrics.prometheus }}\n          - \"--metrics.prometheus=true\"\n          - \"--metrics.prometheus.entrypoint={{ .Values.metrics.prometheus.entryPoint }}\"\n          {{- end }}\n          {{- if .Values.metrics.statsd }}\n          - \"--metrics.statsd=true\"\n          - \"--metrics.statsd.address={{ .Values.metrics.statsd.address }}\"\n          {{- end }}\n          {{- end }}\n          {{- if .Values.providers.kubernetesCRD.enabled }}\n          - \"--providers.kubernetescrd\"\n          {{- if .Values.providers.kubernetesCRD.allowCrossNamespace }}\n          - \"--providers.kubernetescrd.allowCrossNamespace=true\"\n          {{- end }}\n          {{- end }}\n          {{- if .Values.providers.kubernetesIngress.enabled }}\n          - \"--providers.kubernetesingress\"\n          {{- if and .Values.service.enabled .Values.providers.kubernetesIngress.publishedService.enabled }}\n          - \"--providers.kubernetesingress.ingressendpoint.publishedservice={{ template \"providers.kubernetesIngress.publishedServicePath\" . }}\"\n          {{- end }}\n          {{- if .Values.providers.kubernetesIngress.labelSelector }}\n          - \"--providers.kubernetesingress.labelSelector={{ .Values.providers.kubernetesIngress.labelSelector }}\"\n          {{- end }}\n          {{- end }}\n          {{- if .Values.experimental.kubernetesGateway.enabled }}\n          - \"--providers.kubernetesgateway\"\n          - \"--experimental.kubernetesgateway\"\n          {{- end }}\n          {{- if and .Values.rbac.enabled .Values.rbac.namespaced }}\n          {{- if .Values.providers.kubernetesCRD.enabled }}\n          - \"--providers.kubernetescrd.namespaces={{ template \"providers.kubernetesCRD.namespaces\" . }}\"\n          {{- end }}\n          {{- if .Values.providers.kubernetesIngress.enabled }}\n          - \"--providers.kubernetesingress.namespaces={{ template \"providers.kubernetesIngress.namespaces\" . }}\"\n          {{- end }}\n          {{- end }}\n          {{- range $entrypoint, $config := $.Values.ports }}\n          {{- if $config.redirectTo }}\n          {{- $toPort := index $.Values.ports $config.redirectTo }}\n          - \"--entrypoints.{{ $entrypoint }}.http.redirections.entryPoint.to=:{{ $toPort.exposedPort }}\"\n          - \"--entrypoints.{{ $entrypoint }}.http.redirections.entryPoint.scheme=https\"\n          {{- end }}\n          {{- if $config.tls }}\n          {{- if $config.tls.enabled }}\n          - \"--entrypoints.{{ $entrypoint }}.http.tls=true\"\n          {{- if $config.tls.options }}\n          - \"--entrypoints.{{ $entrypoint }}.http.tls.options={{ $config.tls.options }}\"\n          {{- end }}\n          {{- if $config.tls.certResolver }}\n          - \"--entrypoints.{{ $entrypoint }}.http.tls.certResolver={{ $config.tls.certResolver }}\"\n          {{- end }}\n          {{- if $config.tls.domains }}\n          {{- range $index, $domain := $config.tls.domains }}\n          {{- if $domain.main }}\n          - \"--entrypoints.{{ $entrypoint }}.http.tls.domains[{{ $index }}].main={{ $domain.main }}\"\n          {{- end }}\n          {{- if $domain.sans }}\n          - \"--entrypoints.{{ $entrypoint }}.http.tls.domains[{{ $index }}].sans={{ join \",\" $domain.sans }}\"\n          {{- end }}\n          {{- end }}\n          {{- end }}\n          {{- end }}\n          {{- end }}\n          {{- end }}\n          {{- with .Values.logs }}\n          {{- if .general.format }}\n          - \"--log.format={{ .general.format }}\"\n          {{- end }}\n          {{- if ne .general.level \"ERROR\" }}\n          - \"--log.level={{ .general.level | upper }}\"\n          {{- end }}\n          {{- if .access.enabled }}\n          - \"--accesslog=true\"\n          {{- if .access.format }}\n          - \"--accesslog.format={{ .access.format }}\"\n          {{- end }}\n          {{- if .access.bufferingsize }}\n          - \"--accesslog.bufferingsize={{ .access.bufferingsize }}\"\n          {{- end }}\n          {{- if .access.filters }}\n          {{- if .access.filters.statuscodes }}\n          - \"--accesslog.filters.statuscodes={{ .access.filters.statuscodes }}\"\n          {{- end }}\n          {{- if .access.filters.retryattempts }}\n          - \"--accesslog.filters.retryattempts\"\n          {{- end }}\n          {{- if .access.filters.minduration }}\n          - \"--accesslog.filters.minduration={{ .access.filters.minduration }}\"\n          {{- end }}\n          {{- end }}\n          - \"--accesslog.fields.defaultmode={{ .access.fields.general.defaultmode }}\"\n          {{- range $fieldname, $fieldaction := .access.fields.general.names }}\n          - \"--accesslog.fields.names.{{ $fieldname }}={{ $fieldaction }}\"\n          {{- end }}\n          - \"--accesslog.fields.headers.defaultmode={{ .access.fields.headers.defaultmode }}\"\n          {{- range $fieldname, $fieldaction := .access.fields.headers.names }}\n          - \"--accesslog.fields.headers.names.{{ $fieldname }}={{ $fieldaction }}\"\n          {{- end }}\n          {{- end }}\n          {{- end }}\n          {{- if .Values.pilot.enabled }}\n          - \"--pilot.token={{ .Values.pilot.token }}\"\n          {{- end }}\n          {{- if hasKey .Values.pilot \"dashboard\" }}\n          - \"--pilot.dashboard={{ .Values.pilot.dashboard }}\"\n          {{- end }}\n          {{- with .Values.additionalArguments }}\n          {{- range . }}\n          - {{ . | quote }}\n          {{- end }}\n          {{- end }}\n        {{- with .Values.env }}\n        env:\n          {{- toYaml . | nindent 10 }}\n        {{- end }}\n        {{- with .Values.envFrom }}\n        envFrom:\n          {{- toYaml . | nindent 10 }}\n        {{- end }}\n      {{- if .Values.deployment.additionalContainers }}\n        {{- toYaml .Values.deployment.additionalContainers | nindent 6 }}\n      {{- end }}\n      volumes:\n        - name: {{ .Values.persistence.name }}\n          {{- if .Values.persistence.enabled }}\n          persistentVolumeClaim:\n            claimName: {{ default (include \"traefik.fullname\" .) .Values.persistence.existingClaim }}\n          {{- else }}\n          emptyDir: {}\n          {{- end }}\n        - name: tmp\n          emptyDir: {}\n        {{- $root := . }}\n        {{- range .Values.volumes }}\n        - name: {{ tpl (.name) $root }}\n          {{- if eq .type \"secret\" }}\n          secret:\n            secretName: {{ tpl (.name) $root }}\n          {{- else if eq .type \"configMap\" }}\n          configMap:\n            name: {{ tpl (.name) $root }}\n          {{- end }}\n        {{- end }}\n        {{- if .Values.deployment.additionalVolumes }}\n          {{- toYaml .Values.deployment.additionalVolumes | nindent 8 }}\n        {{- end }}\n        {{- if .Values.experimental.plugins.enabled }}\n        - name: plugins\n          emptyDir: {}\n        {{- end }}\n      {{- with .Values.affinity }}\n      affinity:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.tolerations }}\n      tolerations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.nodeSelector }}\n      nodeSelector:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- if .Values.priorityClassName }}\n      priorityClassName: {{ .Values.priorityClassName }}\n      {{- end }}\n      {{- with .Values.podSecurityContext }}\n      securityContext:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n{{ end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/templates/daemonset.yaml",
    "content": "{{- if and .Values.deployment.enabled (eq .Values.deployment.kind \"DaemonSet\") -}}\n  {{- with .Values.additionalArguments -}}\n    {{- range . -}}\n      {{- if contains \".acme.\" . -}}\n        {{- fail (printf \"ACME functionality is not supported when running Traefik as a DaemonSet\") -}}\n      {{- end -}}\n    {{- end -}}\n  {{- end -}}\n  {{- if eq (default .Chart.AppVersion .Values.image.tag) \"latest\" }}\n    {{- fail \"\\n\\n ERROR: latest tag should not be used\" }}\n  {{- end }}\n\n---\napiVersion: apps/v1\nkind: DaemonSet\nmetadata:\n  name: {{ template \"traefik.fullname\" . }}\n  labels:\n    app.kubernetes.io/name: {{ template \"traefik.name\" . }}\n    helm.sh/chart: {{ template \"traefik.chart\" . }}\n    app.kubernetes.io/managed-by: {{ .Release.Service }}\n    app.kubernetes.io/instance: {{ .Release.Name }}\n  {{- with .Values.deployment.labels }}\n  {{- toYaml . | nindent 4 }}\n  {{- end }}\n  annotations:\n  {{- with .Values.deployment.annotations }}\n  {{- toYaml . | nindent 4 }}\n  {{- end }}\nspec:\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: {{ template \"traefik.name\" . }}\n      app.kubernetes.io/instance: {{ .Release.Name }}\n  updateStrategy:\n    type: RollingUpdate\n    rollingUpdate:\n      maxUnavailable: {{ .Values.rollingUpdate.maxUnavailable }}\n  template: {{ template \"traefik.podTemplate\" . }}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/templates/dashboard-hook-ingressroute.yaml",
    "content": "{{- if .Values.ingressRoute.dashboard.enabled -}}\napiVersion: traefik.containo.us/v1alpha1\nkind: IngressRoute\nmetadata:\n  name: {{ template \"traefik.fullname\" . }}-dashboard\n  annotations:\n    helm.sh/hook: \"post-install,post-upgrade\"\n    {{- with .Values.ingressRoute.dashboard.annotations }}\n    {{- toYaml . | nindent 4 }}\n    {{- end }}\n  labels:\n    app.kubernetes.io/name: {{ template \"traefik.name\" . }}\n    helm.sh/chart: {{ template \"traefik.chart\" . }}\n    app.kubernetes.io/managed-by: {{ .Release.Service }}\n    app.kubernetes.io/instance: {{ .Release.Name }}\n    {{- with .Values.ingressRoute.dashboard.labels }}\n    {{- toYaml . | nindent 4 }}\n    {{- end }}\nspec:\n  entryPoints:\n    - traefik\n  routes:\n  - match: PathPrefix(`/dashboard`) || PathPrefix(`/api`)\n    kind: Rule\n    services:\n    - name: api@internal\n      kind: TraefikService\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/templates/deployment.yaml",
    "content": "{{- if and .Values.deployment.enabled (eq .Values.deployment.kind \"Deployment\") -}}\n  {{- if gt (int .Values.deployment.replicas) 1 -}}\n    {{- with .Values.additionalArguments -}}\n      {{- range . -}}\n        {{- if contains \".acme.\" . -}}\n          {{- fail (printf \"You can not enable acme if you set more than one traefik replica\") -}}\n        {{- end -}}\n      {{- end -}}\n    {{- end -}}\n  {{- end -}}\n  {{- if eq (default .Chart.AppVersion .Values.image.tag) \"latest\" }}\n    {{- fail \"\\n\\n ERROR: latest tag should not be used\" }}\n  {{- end }}\n\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{ template \"traefik.fullname\" . }}\n  labels:\n    app.kubernetes.io/name: {{ template \"traefik.name\" . }}\n    helm.sh/chart: {{ template \"traefik.chart\" . }}\n    app.kubernetes.io/managed-by: {{ .Release.Service }}\n    app.kubernetes.io/instance: {{ .Release.Name }}\n  {{- with .Values.deployment.labels }}\n  {{- toYaml . | nindent 4 }}\n  {{- end }}\n  annotations:\n  {{- with .Values.deployment.annotations }}\n  {{- toYaml . | nindent 4 }}\n  {{- end }}\nspec:\n  {{- if not .Values.autoscaling.enabled }}\n  replicas: {{ default 1 .Values.deployment.replicas }}\n  {{- end }}\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: {{ template \"traefik.name\" . }}\n      app.kubernetes.io/instance: {{ .Release.Name }}\n  strategy:\n    type: RollingUpdate\n    rollingUpdate:\n      {{- with .Values.rollingUpdate }}\n        {{- toYaml . | nindent 6 }}\n      {{- end }}\n  template: {{ template \"traefik.podTemplate\" . }}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/templates/gateway.yaml",
    "content": "{{- if .Values.experimental.kubernetesGateway.enabled }}\n--- \napiVersion: networking.x-k8s.io/v1alpha1\nkind: Gateway\nmetadata: \n  name: traefik-gateway\n  namespace: {{ default .Release.Namespace .Values.experimental.kubernetesGateway.namespace }}\nspec: \n  gatewayClassName: traefik\n  listeners: \n    - port: {{ .Values.ports.web.port }}\n      protocol: HTTP\n      routes: \n        kind: HTTPRoute\n        selector: \n          matchLabels: \n            app: {{ .Values.experimental.kubernetesGateway.appLabelSelector }}\n\n    {{- range $index, $cert:= .Values.experimental.kubernetesGateway.certificates }}\n    - port: {{ $.Values.ports.websecure.port }}\n      protocol: HTTPS\n      tls:\n        certificateRef:\n          name: {{ $cert.name }}\n          group: {{ $cert.group }}\n          kind: {{ $cert.kind }}\n      routes: \n        kind: HTTPRoute\n        selector: \n          matchLabels: \n            app: {{ $.Values.experimental.kubernetesGateway.appLabelSelector }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/templates/gatewayclass.yaml",
    "content": "{{- if .Values.experimental.kubernetesGateway.enabled }}\n---\nkind: GatewayClass\napiVersion: networking.x-k8s.io/v1alpha1\nmetadata:\n  name: traefik\nspec:\n  controller: traefik.io/gateway-controller\n{{- end }}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/templates/hpa.yaml",
    "content": "{{- if .Values.autoscaling.enabled }}\napiVersion: autoscaling/v2beta1\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: {{ template \"traefik.fullname\" . }}\n  labels:\n    app.kubernetes.io/name: {{ template \"traefik.name\" . }}\n    helm.sh/chart: {{ template \"traefik.chart\" . }}\n    app.kubernetes.io/managed-by: {{ .Release.Service }}\n    app.kubernetes.io/instance: {{ .Release.Name }}\nspec:\n  scaleTargetRef:\n    apiVersion: apps/v1\n    kind: Deployment\n    name: {{ template \"traefik.fullname\" . }}\n  minReplicas: {{ .Values.autoscaling.minReplicas }}\n  maxReplicas: {{ .Values.autoscaling.maxReplicas }}\n  metrics:\n{{ toYaml .Values.autoscaling.metrics | indent 4 }}\n{{- end }}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/templates/ingressclass.yaml",
    "content": "{{- if and .Values.ingressClass.enabled (semverCompare \">=2.3.0\" (default .Chart.AppVersion .Values.image.tag)) -}}\n  {{- if .Capabilities.APIVersions.Has \"networking.k8s.io/v1/IngressClass\" }}\napiVersion: networking.k8s.io/v1\n  {{- else if .Capabilities.APIVersions.Has \"networking.k8s.io/v1beta1/IngressClass\" }}\napiVersion: networking.k8s.io/v1beta1\n  {{- else if or (eq .Values.ingressClass.fallbackApiVersion \"v1beta1\") (eq .Values.ingressClass.fallbackApiVersion \"v1\") }}\napiVersion: {{ printf \"networking.k8s.io/%s\" .Values.ingressClass.fallbackApiVersion }}\n  {{- else }}\n    {{- fail \"\\n\\n ERROR: You must have at least networking.k8s.io/v1beta1 to use ingressClass\" }}\n  {{- end }}\nkind: IngressClass\nmetadata:\n  annotations:\n    ingressclass.kubernetes.io/is-default-class: {{ .Values.ingressClass.isDefaultClass | quote }}\n  labels:\n    app.kubernetes.io/name: {{ template \"traefik.name\" . }}\n    helm.sh/chart: {{ template \"traefik.chart\" . }}\n    app.kubernetes.io/managed-by: {{ .Release.Service }}\n    app.kubernetes.io/instance: {{ .Release.Name }}\n  name: {{ template \"traefik.fullname\" . }}\nspec:\n  controller: traefik.io/ingress-controller\n{{- end }}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/templates/poddisruptionbudget.yaml",
    "content": "{{- if .Values.podDisruptionBudget.enabled -}}\napiVersion: policy/v1beta1\nkind: PodDisruptionBudget\nmetadata:\n  name: {{ template \"traefik.fullname\" . }}\n  labels:\n    app.kubernetes.io/name: {{ template \"traefik.name\" . }}\n    helm.sh/chart: {{ template \"traefik.chart\" . }}\n    app.kubernetes.io/managed-by: {{ .Release.Service }}\n    app.kubernetes.io/instance: {{ .Release.Name }}\nspec:\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: {{ template \"traefik.name\" . }}\n      app.kubernetes.io/instance: {{ .Release.Name }}\n  {{- if .Values.podDisruptionBudget.minAvailable }}\n  minAvailable: {{ .Values.podDisruptionBudget.minAvailable | int }}\n  {{- end }}\n  {{- if .Values.podDisruptionBudget.maxUnavailable }}\n  maxUnavailable: {{ .Values.podDisruptionBudget.maxUnavailable | int }}\n  {{- end }}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/templates/pvc.yaml",
    "content": "{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) -}}\napiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n  name: {{ template \"traefik.fullname\" . }}\n  annotations:\n  {{- with .Values.persistence.annotations  }}\n  {{ toYaml . | nindent 4 }}\n  {{- end }}\n    helm.sh/resource-policy: keep\n  labels:\n    app.kubernetes.io/name: {{ template \"traefik.name\" . }}\n    helm.sh/chart: {{ template \"traefik.chart\" . }}\n    app.kubernetes.io/managed-by: {{ .Release.Service }}\n    app.kubernetes.io/instance: {{ .Release.Name }}\nspec:\n  accessModes:\n    - {{ .Values.persistence.accessMode | quote }}\n  resources:\n    requests:\n      storage: {{ .Values.persistence.size | quote }}\n  {{- if .Values.persistence.storageClass }}\n  storageClassName: {{ .Values.persistence.storageClass | quote }}\n  {{- end }}\n{{- end -}}\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/templates/rbac/clusterrole.yaml",
    "content": "{{- if and .Values.rbac.enabled (not .Values.rbac.namespaced) -}}\nkind: ClusterRole\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: {{ template \"traefik.fullname\" . }}\n  labels:\n    app.kubernetes.io/name: {{ template \"traefik.name\" . }}\n    helm.sh/chart: {{ template \"traefik.chart\" . }}\n    app.kubernetes.io/managed-by: {{ .Release.Service }}\n    app.kubernetes.io/instance: {{ .Release.Name }}\nrules:\n  - apiGroups:\n      - \"\"\n    resources:\n      - services\n      - endpoints\n      - secrets\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - extensions\n      - networking.k8s.io\n    resources:\n      - ingresses\n      - ingressclasses\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - extensions\n      - networking.k8s.io\n    resources:\n      - ingresses/status\n    verbs:\n      - update\n  - apiGroups:\n      - traefik.containo.us\n    resources:\n      - ingressroutes\n      - ingressroutetcps\n      - ingressrouteudps\n      - middlewares\n      - middlewaretcps\n      - tlsoptions\n      - tlsstores\n      - traefikservices\n      - serverstransports\n    verbs:\n      - get\n      - list\n      - watch\n{{- if .Values.podSecurityPolicy.enabled }}\n  - apiGroups:\n      - policy\n    resourceNames:\n      - {{ template \"traefik.fullname\" . }}\n    resources:\n      - podsecuritypolicies\n    verbs:\n      - use\n{{- end -}}\n{{- if .Values.experimental.kubernetesGateway.enabled }}\n  - apiGroups:\n      - networking.x-k8s.io\n    resources:\n      - gatewayclasses\n      - gatewayclasses/status\n      - gateways\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - networking.x-k8s.io\n    resources:\n      - gatewayclasses/status\n    verbs:\n      - get\n      - patch\n      - update\n  - apiGroups:\n      - networking.x-k8s.io\n    resources:\n      - gateways/status\n    verbs:\n      - get\n      - patch\n      - update\n  - apiGroups:\n      - networking.x-k8s.io\n    resources:\n      - httproutes\n    verbs:\n      - create\n      - delete\n      - get\n      - list\n      - patch\n      - update\n      - watch\n  - apiGroups:\n      - networking.x-k8s.io\n    resources:\n      - httproutes/status\n    verbs:\n      - get\n      - patch\n      - update\n{{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/templates/rbac/clusterrolebinding.yaml",
    "content": "{{- if and .Values.rbac.enabled (not .Values.rbac.namespaced) }}\nkind: ClusterRoleBinding\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: {{ template \"traefik.fullname\" . }}\n  labels:\n    app.kubernetes.io/name: {{ template \"traefik.name\" . }}\n    helm.sh/chart: {{ template \"traefik.chart\" . }}\n    app.kubernetes.io/managed-by: {{ .Release.Service }}\n    app.kubernetes.io/instance: {{ .Release.Name }}\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: {{ template \"traefik.fullname\" . }}\nsubjects:\n  - kind: ServiceAccount\n    name: {{ include \"traefik.serviceAccountName\" . }}\n    namespace: {{ .Release.Namespace }}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/templates/rbac/podsecuritypolicy.yaml",
    "content": "{{- if .Values.podSecurityPolicy.enabled }}\n---\napiVersion: policy/v1beta1\nkind: PodSecurityPolicy\nmetadata:\n  annotations:\n    seccomp.security.alpha.kubernetes.io/allowedProfileNames: runtime/default\n    seccomp.security.alpha.kubernetes.io/defaultProfileName: runtime/default\n  name: {{ template \"traefik.fullname\" . }}\n  labels:\n    app.kubernetes.io/name: {{ template \"traefik.name\" . }}\n    helm.sh/chart: {{ template \"traefik.chart\" . }}\n    app.kubernetes.io/managed-by: {{ .Release.Service }}\n    app.kubernetes.io/instance: {{ .Release.Name }}\nspec:\n  privileged: false\n  allowPrivilegeEscalation: false\n  requiredDropCapabilities:\n    - ALL\n{{- if not .Values.securityContext.runAsNonRoot }}\n  allowedCapabilities:\n    - NET_BIND_SERVICE\n{{- end }}\n  hostNetwork: {{ .Values.hostNetwork }}\n  hostIPC: false\n  hostPID: false\n  fsGroup:\n{{- if .Values.securityContext.runAsNonRoot }}\n    ranges:\n    - max: 65535\n      min: 1\n    rule: MustRunAs\n{{- else }}\n    rule: RunAsAny\n{{- end }}\n{{- if .Values.hostNetwork }}\n  hostPorts:\n  - max: 65535\n    min: 1\n{{- end }}\n  readOnlyRootFilesystem: true\n  runAsUser:\n{{- if .Values.securityContext.runAsNonRoot }}\n    rule: MustRunAsNonRoot\n{{- else }}\n    rule: RunAsAny\n{{- end }}\n  seLinux:\n    rule: RunAsAny\n  supplementalGroups:\n{{- if .Values.securityContext.runAsNonRoot }}\n    ranges:\n    - max: 65535\n      min: 1\n    rule: MustRunAs\n{{- else }}\n    rule: RunAsAny\n{{- end }}\n  volumes:\n  - configMap\n  - downwardAPI\n  - secret\n  - emptyDir\n  - projected\n{{- if .Values.persistence.enabled }}\n  - persistentVolumeClaim\n{{- end -}}\n{{- end -}}"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/templates/rbac/role.yaml",
    "content": "{{- if and .Values.rbac.enabled .Values.rbac.namespaced }}\nkind: Role\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: {{ template \"traefik.fullname\" . }}\n  labels:\n    app.kubernetes.io/name: {{ template \"traefik.name\" . }}\n    helm.sh/chart: {{ template \"traefik.chart\" . }}\n    app.kubernetes.io/managed-by: {{ .Release.Service }}\n    app.kubernetes.io/instance: {{ .Release.Name }}\nrules:\n  - apiGroups:\n      - \"\"\n    resources:\n      - services\n      - endpoints\n      - secrets\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - extensions\n      - networking.k8s.io\n    resources:\n      - ingresses\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - extensions\n      - networking.k8s.io\n    resources:\n      - ingresses/status\n    verbs:\n      - update\n  - apiGroups:\n      - traefik.containo.us\n    resources:\n      - ingressroutes\n      - ingressroutetcps\n      - ingressrouteudps\n      - middlewares\n      - middlewaretcps\n      - tlsoptions\n      - tlsstores\n      - traefikservices\n      - serverstransports\n    verbs:\n      - get\n      - list\n      - watch\n{{- if .Values.podSecurityPolicy.enabled }}\n  - apiGroups:\n      - extensions\n    resourceNames:\n      - {{ template \"traefik.fullname\" . }}\n    resources:\n      - podsecuritypolicies\n    verbs:\n      - use\n{{- end -}}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/templates/rbac/rolebinding.yaml",
    "content": "{{- if and .Values.rbac.enabled .Values.rbac.namespaced }}\nkind: RoleBinding\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: {{ template \"traefik.fullname\" . }}\n  labels:\n    app.kubernetes.io/name: {{ template \"traefik.name\" . }}\n    helm.sh/chart: {{ template \"traefik.chart\" . }}\n    app.kubernetes.io/managed-by: {{ .Release.Service }}\n    app.kubernetes.io/instance: {{ .Release.Name }}\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: {{ template \"traefik.fullname\" . }}\nsubjects:\n  - kind: ServiceAccount\n    name: {{ include \"traefik.serviceAccountName\" . }}\n    namespace: {{ .Release.Namespace }}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/templates/rbac/serviceaccount.yaml",
    "content": "{{- if not .Values.serviceAccount.name -}}\nkind: ServiceAccount\napiVersion: v1\nmetadata:\n  name: {{ include \"traefik.serviceAccountName\" . }}\n  labels:\n    app.kubernetes.io/name: {{ template \"traefik.name\" . }}\n    helm.sh/chart: {{ template \"traefik.chart\" . }}\n    app.kubernetes.io/managed-by: {{ .Release.Service }}\n    app.kubernetes.io/instance: {{ .Release.Name }}\n  annotations:\n  {{- with .Values.serviceAccountAnnotations }}\n  {{- toYaml . | nindent 4 }}\n  {{- end }}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/templates/service.yaml",
    "content": "{{- if .Values.service.enabled -}}\n\n{{ $tcpPorts := dict }}\n{{ $udpPorts := dict }}\n{{- range $name, $config := .Values.ports }}\n  {{- if eq (toString $config.protocol) \"UDP\" }}\n    {{ $_ := set $udpPorts $name $config }}\n  {{- else }}\n    {{ $_ := set $tcpPorts $name $config }}\n  {{- end }}\n{{- end }}\n\napiVersion: v1\nkind: List\nmetadata:\n  name: {{ template \"traefik.fullname\" . }}\nitems:\n{{- if  $tcpPorts }}\n  - apiVersion: v1\n    kind: Service\n    metadata:\n      name: {{ template \"traefik.fullname\" . }}\n      labels:\n        app.kubernetes.io/name: {{ template \"traefik.name\" . }}\n        helm.sh/chart: {{ template \"traefik.chart\" . }}\n        app.kubernetes.io/managed-by: {{ .Release.Service }}\n        app.kubernetes.io/instance: {{ .Release.Name }}\n      {{- with .Values.service.labels }}\n      {{- toYaml . | nindent 8 }}\n      {{- end }}\n      annotations:\n      {{- with (merge .Values.service.annotationsTCP .Values.service.annotations) }}\n      {{- toYaml . | nindent 8 }}\n      {{- end }}\n    spec:\n      {{- $type := default \"LoadBalancer\" .Values.service.type }}\n      type: {{ $type }}\n      {{- with .Values.service.spec }}\n      {{- toYaml . | nindent 6 }}\n      {{- end }}\n      selector:\n        app.kubernetes.io/name: {{ template \"traefik.name\" . }}\n        app.kubernetes.io/instance: {{ .Release.Name }}\n      ports:\n      {{- range $name, $config := $tcpPorts }}\n      {{- if $config.expose }}\n      - port: {{ default $config.port $config.exposedPort }}\n        name: {{ $name }}\n        targetPort: {{ $name | quote }}\n        protocol: {{ default \"TCP\" $config.protocol | quote }}\n        {{- if $config.nodePort }}\n        nodePort: {{ $config.nodePort }}\n        {{- end }}\n      {{- end }}\n      {{- end }}\n      {{- if eq $type \"LoadBalancer\" }}\n      {{- with .Values.service.loadBalancerSourceRanges }}\n      loadBalancerSourceRanges:\n      {{- toYaml . | nindent 6 }}\n      {{- end -}}\n      {{- end -}}\n      {{- with .Values.service.externalIPs }}\n      externalIPs:\n      {{- toYaml . | nindent 6 }}\n      {{- end -}}\n{{- end }}\n\n{{- if  $udpPorts }}\n  - apiVersion: v1\n    kind: Service\n    metadata:\n      name: {{ template \"traefik.fullname\" . }}-udp\n      labels:\n        app.kubernetes.io/name: {{ template \"traefik.name\" . }}\n        helm.sh/chart: {{ template \"traefik.chart\" . }}\n        app.kubernetes.io/managed-by: {{ .Release.Service }}\n        app.kubernetes.io/instance: {{ .Release.Name }}\n      {{- with .Values.service.labels }}\n      {{- toYaml . | nindent 8 }}\n      {{- end }}\n      annotations:\n      {{- with (merge .Values.service.annotationsUDP .Values.service.annotations) }}\n      {{- toYaml . | nindent 8 }}\n      {{- end }}\n    spec:\n      {{- $type := default \"LoadBalancer\" .Values.service.type }}\n      type: {{ $type }}\n      {{- with .Values.service.spec }}\n      {{- toYaml . | nindent 6 }}\n      {{- end }}\n      selector:\n        app.kubernetes.io/name: {{ template \"traefik.name\" . }}\n        app.kubernetes.io/instance: {{ .Release.Name }}\n      ports:\n      {{- range $name, $config := $udpPorts }}\n      {{- if $config.expose }}\n      - port: {{ default $config.port $config.exposedPort }}\n        name: {{ $name }}\n        targetPort: {{ $name | quote }}\n        protocol: {{ default \"UDP\" $config.protocol | quote }}\n        {{- if $config.nodePort }}\n        nodePort: {{ $config.nodePort }}\n        {{- end }}\n      {{- end }}\n      {{- end }}\n      {{- if eq $type \"LoadBalancer\" }}\n      {{- with .Values.service.loadBalancerSourceRanges }}\n      loadBalancerSourceRanges:\n      {{- toYaml . | nindent 6 }}\n      {{- end -}}\n      {{- end -}}\n      {{- with .Values.service.externalIPs }}\n      externalIPs:\n      {{- toYaml . | nindent 6 }}\n      {{- end -}}\n{{- end }}\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/templates/tlsoption.yaml",
    "content": "{{- range $name, $config := .Values.tlsOptions }}\napiVersion: traefik.containo.us/v1alpha1\nkind: TLSOption\nmetadata:\n  name: {{ $name }}\n  labels:\n    app.kubernetes.io/name: {{ template \"traefik.name\" $ }}\n    helm.sh/chart: {{ template \"traefik.chart\" $ }}\n    app.kubernetes.io/managed-by: {{ $.Release.Service }}\n    app.kubernetes.io/instance: {{ $.Release.Name }}\nspec:\n  {{- toYaml $config | nindent 2 }}\n---\n{{- end -}}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/tests/container-config_test.yaml",
    "content": "suite: Main Container configuration\ntemplates:\n  - deployment.yaml\ntests:\n  - it: should have the default Docker image when no value is specified\n    asserts:\n      - equal:\n          path: spec.template.spec.containers[0].image\n          value: traefik:2.5.1\n  - it: should change image when image.tag value is specified\n    set:\n      image:\n        tag: v2.0.0-beta1\n    asserts:\n      - equal:\n          path: spec.template.spec.containers[0].image\n          value: traefik:v2.0.0-beta1\n  - it: should change image when image.name value is specified\n    set:\n      image:\n        name: traefik/traefik\n    asserts:\n      - equal:\n          path: spec.template.spec.containers[0].image\n          value: traefik/traefik:2.5.1\n\n  - it: should have no resource limit by default\n    asserts:\n      - isNull:\n          path: spec.template.spec.containers[0].resources\n  - it: should have a custom resource limit when specified\n    set:\n      resources:\n        requests:\n          cpu: \"100m\"\n          memory: \"50Mi\"\n        limits:\n          cpu: \"300m\"\n          memory: \"150Mi\"\n    asserts:\n      - equal:\n          path: spec.template.spec.containers[0].resources.requests.cpu\n          value: \"100m\"\n      - equal:\n          path: spec.template.spec.containers[0].resources.requests.memory\n          value: \"50Mi\"\n      - equal:\n          path: spec.template.spec.containers[0].resources.limits.cpu\n          value: \"300m\"\n      - equal:\n          path: spec.template.spec.containers[0].resources.limits.memory\n          value: \"150Mi\"\n  - it: should not have data volumeMount subPath by default\n    asserts:\n      - isNull:\n          path: spec.template.spec.containers[0].volumeMounts[0].subPath\n  - it: should have data volumeMount subPath when specified in config\n    set:\n      persistence:\n        subPath: \"subdir/traefik\"\n    asserts:\n      - equal:\n          path: spec.template.spec.containers[0].volumeMounts[0].subPath\n          value: \"subdir/traefik\"\n  - it: should have templated config map volume\n    set:\n      volumes:\n        - name: '{{ printf \"%s-custom-config\" .Release.Name }}'\n          mountPath: /etc/traefik\n          type: configMap\n        - name: 'non-templated'\n          mountPath: /etc/non-templated\n          type: configMap\n    asserts:\n      - equal:\n          path: spec.template.spec.containers[0].volumeMounts[2].name\n          value: \"RELEASE-NAME-custom-config\"\n      - equal:\n          path: spec.template.spec.containers[0].volumeMounts[3].name\n          value: \"non-templated\"\n      - equal:\n          path: spec.template.spec.volumes[2].name\n          value: \"RELEASE-NAME-custom-config\"\n      - equal:\n          path: spec.template.spec.volumes[2].configMap.name\n          value: \"RELEASE-NAME-custom-config\"\n      - equal:\n          path: spec.template.spec.volumes[3].name\n          value: \"non-templated\"\n      - equal:\n          path: spec.template.spec.volumes[3].configMap.name\n          value: \"non-templated\"\n  - it: should have templated secret volume\n    set:\n      volumes:\n        - name: '{{ printf \"%s-custom-secret\" .Release.Name }}'\n          mountPath: /etc/secret\n          type: secret\n    asserts:\n      - equal:\n          path: spec.template.spec.containers[0].volumeMounts[2].name\n          value: \"RELEASE-NAME-custom-secret\"\n      - equal:\n          path: spec.template.spec.volumes[2].name\n          value: \"RELEASE-NAME-custom-secret\"\n      - equal:\n          path: spec.template.spec.volumes[2].secret.secretName\n          value: \"RELEASE-NAME-custom-secret\"\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/tests/daemonset-config_test.yaml",
    "content": "suite: DaemonSet configuration\ntemplates:\n  - daemonset.yaml\ntests:\n  - it: should have a rollingUpdate strategy with default values\n    set:\n      deployment:\n        kind: DaemonSet\n    asserts:\n      - equal:\n          path: spec.updateStrategy.type\n          value: RollingUpdate\n      - equal:\n          path: spec.updateStrategy.rollingUpdate.maxUnavailable\n          value: 1\n  - it: should have annotations with specified values\n    set:\n      deployment:\n        kind: DaemonSet\n        annotations:\n          traefik/powpow: annotations\n        podAnnotations:\n          traefik/powpow: podAnnotations\n    asserts:\n      - equal:\n          path: metadata.annotations.traefik/powpow\n          value: annotations\n      - equal:\n          path: spec.template.metadata.annotations.traefik/powpow\n          value: podAnnotations\n  - it: should have labels with specified values\n    set:\n      deployment:\n        kind: DaemonSet\n        labels:\n          traefik/powpow: labels\n        podLabels:\n          traefik/powpow: podLabels\n    asserts:\n      - equal:\n          path: metadata.labels.traefik/powpow\n          value: labels\n      - equal:\n          path: spec.template.metadata.labels.traefik/powpow\n          value: podLabels\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/tests/default-install_test.yaml",
    "content": "suite: default install\ntests:\n  - it: should generate the default objects for Traefik Ingress Controller\n    asserts:\n      - isKind:\n          of: Deployment\n        template: deployment.yaml\n      - equal:\n          path: items[0].kind\n          value: Service\n        template: service.yaml\n      - isKind:\n          of: ClusterRole\n        template: rbac/clusterrole.yaml\n      - isKind:\n          of: ClusterRoleBinding\n        template: rbac/clusterrolebinding.yaml\n      - isKind:\n          of: ServiceAccount\n        template: rbac/serviceaccount.yaml\n  - it: should have the correct naming for each object\n    asserts:\n      - equal:\n          path: metadata.name\n          value: RELEASE-NAME-traefik\n        template: deployment.yaml\n      - equal:\n          path: items[0].metadata.name\n          value: RELEASE-NAME-traefik\n        template: service.yaml\n      - equal:\n          path: metadata.name\n          value: RELEASE-NAME-traefik\n        template: rbac/clusterrole.yaml\n      - equal:\n          path: metadata.name\n          value: RELEASE-NAME-traefik\n        template: rbac/clusterrolebinding.yaml\n      - equal:\n          path: metadata.name\n          value: RELEASE-NAME-traefik\n        template: rbac/serviceaccount.yaml\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/tests/deployment-config_test.yaml",
    "content": "suite: Deployment configuration\ntemplates:\n  - deployment.yaml\ntests:\n  - it: should have 1 replica by default\n    asserts:\n      - equal:\n          path: spec.replicas\n          value: 1\n  - it: should have the specified amount of replicas when specified via values\n    set:\n      deployment:\n        replicas: 3\n    asserts:\n      - equal:\n          path: spec.replicas\n          value: 3\n  - it: should have a rollingUpdate strategy with default values\n    asserts:\n      - equal:\n          path: spec.strategy.type\n          value: RollingUpdate\n      - equal:\n          path: spec.strategy.rollingUpdate.maxUnavailable\n          value: 1\n      - equal:\n          path: spec.strategy.rollingUpdate.maxSurge\n          value: 1\n  - it: should have a custom merged rollingUpdate strategy with specified values\n    set:\n      rollingUpdate:\n        maxUnavailable: 4\n        vegetaForce: 9000\n    asserts:\n      - equal:\n          path: spec.strategy.type\n          value: RollingUpdate\n      - equal:\n          path: spec.strategy.rollingUpdate.maxUnavailable\n          value: 4\n      - equal:\n          path: spec.strategy.rollingUpdate.maxSurge\n          value: 1\n      - equal:\n          path: spec.strategy.rollingUpdate.vegetaForce\n          value: 9000\n  - it: should have annotations with specified values\n    set:\n      deployment:\n        annotations:\n          traefik/powpow: annotations\n        podAnnotations:\n          traefik/powpow: podAnnotations\n    asserts:\n      - equal:\n          path: metadata.annotations.traefik/powpow\n          value: annotations\n      - equal:\n          path: spec.template.metadata.annotations.traefik/powpow\n          value: podAnnotations\n  - it: should have labels with specified values\n    set:\n      deployment:\n        labels:\n          traefik/powpow: labels\n        podLabels:\n          traefik/powpow: podLabels\n    asserts:\n      - equal:\n          path: metadata.labels.traefik/powpow\n          value: labels\n      - equal:\n          path: spec.template.metadata.labels.traefik/powpow\n          value: podLabels\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/tests/gateway-config_test.yaml",
    "content": "suite: Gateway configuration\ntemplates:\n  - gateway.yaml\ntests:\n  - it: should have one gateway with the correct class and an http port\n    set:\n      experimental:\n        kubernetesGateway:\n          enabled: true\n    asserts:\n      - equal:\n          path: spec.gatewayClassName\n          value: \"traefik\"\n      - equal:\n          path: spec.listeners[0].port\n          value: 8000\n      - equal:\n          path: metadata.namespace\n          value: \"NAMESPACE\"\n  - it: should have one gateway with the correct class and an http port as well as an https port\n    set:\n      experimental:\n        kubernetesGateway:\n          enabled: true\n          certificates:\n            - name: \"my-name\"\n              group: \"my-group\"\n              kind: \"my-kind\"\n    asserts:\n      - equal:\n          path: spec.gatewayClassName\n          value: \"traefik\"\n      - equal:\n          path: spec.listeners[0].port\n          value: 8000\n      - equal:\n          path: spec.listeners[1].port\n          value: 8443\n      - equal:\n          path: spec.listeners[1].tls.certificateRef.name\n          value: \"my-name\"\n      - equal:\n          path: spec.listeners[1].tls.certificateRef.group\n          value: \"my-group\"\n      - equal:\n          path: spec.listeners[1].tls.certificateRef.kind\n          value: \"my-kind\"\n  - it: should install gateway in custom namespace\n    set:\n      experimental:\n        kubernetesGateway:\n          enabled: true\n          namespace: \"default\"\n    asserts:\n      - equal:\n          path: metadata.namespace\n          value: \"default\"\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/tests/gatewayclass-config_test.yaml",
    "content": "suite: Gatewayclass configuration\ntemplates:\n  - gatewayclass.yaml\ntests:\n  - it: should have one gatewayclass with controller value traefik.io/gateway-controller\n    set:\n      experimental:\n        kubernetesGateway:\n          enabled: true\n    asserts:\n      - equal:\n          path: spec.controller\n          value: traefik.io/gateway-controller\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/tests/pod-config_test.yaml",
    "content": "suite: Pod configuration\ntemplates:\n  - deployment.yaml\ntests:\n  - it: should have envFrom with specified values\n    set:\n      envFrom:\n        - configMapRef:\n            name: config-map-name\n        - secretRef:\n            name: secret-name\n    asserts:\n      - equal:\n          path: spec.template.spec.containers[0].envFrom[0].configMapRef.name\n          value: config-map-name\n      - equal:\n          path: spec.template.spec.containers[0].envFrom[1].secretRef.name\n          value: secret-name\n  - it: should have priorityClassName\n    set:\n      priorityClassName: important\n    asserts:\n      - equal:\n          path: spec.template.spec.priorityClassName\n          value: important\n  - it: should have merged securityContext\n    set:\n      podSecurityContext:\n        readOnlyRootFilesystem: false\n      securityContext:\n        runAsUser: 1000\n    asserts:\n      - equal:\n          path: spec.template.spec.securityContext.fsGroup\n          value: 65532\n      - equal:\n          path: spec.template.spec.securityContext.readOnlyRootFilesystem\n          value: false\n      - equal:\n          path: spec.template.spec.containers[0].securityContext.runAsNonRoot\n          value: true\n      - equal:\n          path: spec.template.spec.containers[0].securityContext.runAsUser\n          value: 1000\n  - it: should have pvc with specified value\n    set:\n      persistence:\n        enabled: true\n        existingClaim: existing-pvc\n    asserts:\n      - equal:\n          path: spec.template.spec.volumes[0].persistentVolumeClaim.claimName\n          value: existing-pvc\n      - equal:\n          path: spec.template.spec.volumes[0].name\n          value: data\n  - it: should have pvc with specified name\n    set:\n      persistence:\n        name: my-data\n    asserts:\n      - equal:\n          path: spec.template.spec.volumes[0].name\n          value: my-data\n  - it: should have initContainer with specified value\n    set:\n      deployment:\n        initContainers:\n          - name: volume-permissions\n            image: busybox:1.31.1\n            command: [\"sh\"]\n            volumeMounts:\n              - name: data\n                mountPath: /data\n    asserts:\n      - equal:\n          path: spec.template.spec.initContainers[0].name\n          value: volume-permissions\n      - equal:\n          path: spec.template.spec.initContainers[0].image\n          value: busybox:1.31.1\n      - equal:\n          path: spec.template.spec.initContainers[0].command[0]\n          value: sh\n      - equal:\n          path: spec.template.spec.initContainers[0].volumeMounts[0].name\n          value: data\n      - equal:\n          path: spec.template.spec.initContainers[0].volumeMounts[0].mountPath\n          value: /data\n  - it: should have additional containers\n    set:\n      deployment:\n        additionalContainers:\n          - image: foo:latest\n            name: bar\n      asserts:\n        - equal:\n            path: spec.template.additionalContainers[0].image\n            value: foo:latest\n        - equal:\n            path: spec.template.additionalContainers[0].name\n            value: bar\n  - it: should have additional volumes\n    set:\n      deployment:\n        additionalVolumes:\n          - hostpath:\n              path: /foo\n            name: bar\n      asserts:\n        - equal:\n            path: spec.template.spec.volumes[4].hostpath.path\n            value: /foo\n        - equal:\n            path: spec.template.spec.volumes[4].name\n            value: bar\n  - it: should have imagePullPolicy with specified value\n    set:\n      image:\n        pullPolicy: Always\n    asserts:\n      - equal:\n          path: spec.template.spec.containers[0].imagePullPolicy\n          value: Always\n  - it: should have no imagePullSecrets\n    asserts:\n      - isEmpty:\n          path: spec.template.spec.imagePullSecrets\n  - it: should have imagePullSecrets with specified value\n    set:\n      deployment:\n        imagePullSecrets:\n          - name: myRegistryKeySecretName\n    asserts:\n      - equal:\n          path: spec.template.spec.imagePullSecrets[0].name\n          value: myRegistryKeySecretName\n  - it: should have multiple imagePullSecrets with specified value\n    set:\n      deployment:\n        imagePullSecrets:\n          - name: myRegistryKeySecretName\n          - name: myOtherRegistryKeySecretName\n    asserts:\n      - equal:\n          path: spec.template.spec.imagePullSecrets[0].name\n          value: myRegistryKeySecretName\n      - equal:\n          path: spec.template.spec.imagePullSecrets[1].name\n          value: myOtherRegistryKeySecretName\n  - it: should have customized labels when specified via values\n    set:\n      deployment:\n        podLabels:\n          custom-label: custom-value\n    asserts:\n      - equal:\n          path: spec.template.metadata.labels.custom-label\n          value: custom-value\n  - it: should have no nodeSelector by default\n    asserts:\n      - isNull:\n          path: spec.template.spec.nodeSelector\n  - it: should have a custom nodeSelector when specified\n    set:\n      nodeSelector:\n        planet: earth\n        disktype: ssd\n    asserts:\n      - equal:\n          path: spec.template.spec.nodeSelector.planet\n          value: earth\n      - equal:\n          path: spec.template.spec.nodeSelector.disktype\n          value: ssd\n\n  - it: should have no tolerations by default\n    asserts:\n      - isNull:\n          path: spec.template.spec.tolerations\n  - it: should have a custom toleration when specified\n    set:\n      tolerations:\n        - key: \"key\"\n          operator: \"Equal\"\n          value: \"value\"\n          effect: \"NoSchedule\"\n        - key: \"RSA\"\n          operator: \"Destructor\"\n    asserts:\n      - contains:\n          path: spec.template.spec.tolerations\n          content:\n            key: \"key\"\n            operator: \"Equal\"\n            value: \"value\"\n            effect: \"NoSchedule\"\n      - contains:\n          path: spec.template.spec.tolerations\n          content:\n            key: \"RSA\"\n            operator: \"Destructor\"\n  - it: should have all k8s provider enabled when gateway provider is enabled\n    set:\n      experimental:\n        kubernetesGateway:\n          enabled: true\n    asserts:\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content:\n            \"--providers.kubernetescrd\"\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content:\n            \"--providers.kubernetesingress\"\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content:\n            \"--providers.kubernetesgateway\"\n  - it: should have the pilot dashboard enabled by default\n    asserts:\n      - notContains:\n          path: spec.template.spec.containers[0].args\n          content:\n            \"--pilot.dashboard=false\"\n  - it: should have the pilot dashboard disabled\n    set:\n      pilot:\n        dashboard: false\n    asserts:\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content:\n            \"--pilot.dashboard=false\"\n  - it: should have prometheus annotations with specified values\n    set:\n      ports:\n        metrics:\n          port: 9100\n      metrics:\n        prometheus:\n          entryPoint: metrics\n    asserts:\n      - equal:\n          path: spec.template.metadata.annotations\n          value:\n            prometheus.io/path: /metrics\n            prometheus.io/port: \"9100\"\n            prometheus.io/scrape: \"true\"\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/tests/poddisruptionbudget-config_test.yaml",
    "content": "suite: PodDisruptionBudget configuration\ntemplates:\n  - poddisruptionbudget.yaml\ntests:\n  - it: should be disabled by default\n    asserts:\n      - hasDocuments:\n          count: 0\n  - it: should have minAvailable set\n    set:\n      podDisruptionBudget:\n        enabled: true\n        minAvailable: 2\n    asserts:\n      - equal:\n          path: spec.minAvailable\n          value: 2\n      - isEmpty:\n          path: spec.maxUnavailable\n  - it: should have maxUnavailable set\n    set:\n      podDisruptionBudget:\n        enabled: true\n        maxUnavailable: 1\n    asserts:\n      - equal:\n          path: spec.maxUnavailable\n          value: 1\n      - isEmpty:\n          path: spec.minAvailable\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/tests/podsecuritypolicy-config_test.yaml",
    "content": "suite: PodSecurityPolicy configuration\ntests:\n  - it: should be disabled by default\n    asserts:\n      - hasDocuments:\n          count: 0\n        template: rbac/podsecuritypolicy.yaml\n  - it: should have privileged set to false\n    set:\n      podSecurityPolicy:\n        enabled: true\n    asserts:\n      - equal:\n          path: spec.privileged\n          value: false\n        template: rbac/podsecuritypolicy.yaml\n  - it: should have hostNetwork set to false by default\n    set:\n      podSecurityPolicy:\n        enabled: true\n    asserts:\n      - equal:\n          path: spec.hostNetwork\n          value: false\n        template: rbac/podsecuritypolicy.yaml\n  - it: should have hostNetwork set to true when enabled\n    set:\n      podSecurityPolicy:\n        enabled: true\n      hostNetwork: true\n    asserts:\n      - equal:\n          path: spec.hostNetwork\n          value: true\n        template: rbac/podsecuritypolicy.yaml\n  - it: should be enabled in clusterrole\n    set:\n      podSecurityPolicy:\n        enabled: true\n    asserts:\n      - equal:\n          path: rules[4].resources[0]\n          value: podsecuritypolicies\n        template: rbac/clusterrole.yaml\n      - equal:\n          path: rules[4].verbs[0]\n          value: use\n        template: rbac/clusterrole.yaml\n  - it: should allow persistentVolumeClaim when persistence is enabled\n    set:\n      podSecurityPolicy:\n        enabled: true\n      persistence:\n        enabled: true\n    asserts:\n      - equal:\n          path: spec.volumes[5]\n          value: persistentVolumeClaim\n        template: rbac/podsecuritypolicy.yaml\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/tests/ports-config_test.yaml",
    "content": "suite: Traefik configuration\ntests:\n  - it: should have port 8000 of pod published to 80 of service by default, and defined as entrypoint \"web\"\n    asserts:\n      - contains:\n          path: spec.template.spec.containers[0].ports\n          content:\n            name: web\n            containerPort: 8000\n            protocol: TCP\n        template: deployment.yaml\n      - contains:\n          path: items[0].spec.ports\n          content:\n            name: web\n            port: 80\n            protocol: TCP\n            targetPort: web\n        template: service.yaml\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content: \"--entryPoints.web.address=:8000/tcp\"\n        template: deployment.yaml\n  - it: should have port 8443 of pod published to 443 of service by default, and defined as entrypoint \"websecure\"\n    asserts:\n      - contains:\n          path: spec.template.spec.containers[0].ports\n          content:\n            name: websecure\n            containerPort: 8443\n            protocol: TCP\n        template: deployment.yaml\n      - contains:\n          path: items[0].spec.ports\n          content:\n            name: websecure\n            port: 443\n            protocol: TCP\n            targetPort: websecure\n        template: service.yaml\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content: \"--entryPoints.websecure.address=:8443/tcp\"\n        template: deployment.yaml\n  - it: should have port 9000 of pod exposed for probes but NOT published to the service by default\n    asserts:\n      - contains:\n          path: spec.template.spec.containers[0].ports\n          content:\n            name: traefik\n            containerPort: 9000\n            protocol: TCP\n        template: deployment.yaml\n      - notContains:\n          path: items[0].spec.ports\n          content:\n            name: traefik\n            port: 9000\n            targetPort: traefik\n        template: service.yaml\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content: \"--entryPoints.traefik.address=:9000/tcp\"\n        template: deployment.yaml\n  - it: should have a custom port when specified via values\n    set:\n      ports:\n        ssh:\n          port: 22\n          expose: true\n    asserts:\n      - contains:\n          path: spec.template.spec.containers[0].ports\n          content:\n            name: ssh\n            containerPort: 22\n            protocol: TCP\n        template: deployment.yaml\n      - contains:\n          path: items[0].spec.ports\n          content:\n            name: ssh\n            port: 22\n            protocol: TCP\n            targetPort: ssh\n        template: service.yaml\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content: \"--entryPoints.ssh.address=:22/tcp\"\n        template: deployment.yaml\n  - it: should have a hostPort when specified via values\n    set:\n      ports:\n        ssh:\n          port: 22\n          expose: true\n          hostPort: 22\n    asserts:\n      - contains:\n          path: spec.template.spec.containers[0].ports\n          content:\n            name: ssh\n            containerPort: 22\n            hostPort: 22\n            protocol: TCP\n        template: deployment.yaml\n      - contains:\n          path: items[0].spec.ports\n          content:\n            name: ssh\n            port: 22\n            protocol: TCP\n            targetPort: ssh\n        template: service.yaml\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content: \"--entryPoints.ssh.address=:22/tcp\"\n        template: deployment.yaml\n  - it: should have a UDP custom port when specified via values\n    set:\n      ports:\n        udp:\n          port: 51\n          expose: true\n          protocol: UDP\n    asserts:\n      - contains:\n          path: spec.template.spec.containers[0].ports\n          content:\n            name: udp\n            containerPort: 51\n            protocol: UDP\n        template: deployment.yaml\n      - contains:\n          path: items[1].spec.ports\n          content:\n            name: udp\n            port: 51\n            protocol: UDP\n            targetPort: udp\n        template: service.yaml\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content: \"--entryPoints.udp.address=:51/udp\"\n        template: deployment.yaml\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/tests/rbac-config_test.yaml",
    "content": "suite: RBAC configuration\ntests:\n  - it: should create default RBAC related objects\n    asserts:\n      - isKind:\n          of: ClusterRole\n        template: rbac/clusterrole.yaml\n      - isKind:\n          of: ClusterRoleBinding\n        template: rbac/clusterrolebinding.yaml\n      - hasDocuments:\n          count: 0\n        template: rbac/role.yaml\n      - hasDocuments:\n          count: 0\n        template: rbac/rolebinding.yaml\n      - isKind:\n          of: ServiceAccount\n        template: rbac/serviceaccount.yaml\n      - equal:\n          path: metadata.name\n          value: RELEASE-NAME-traefik\n        template: rbac/serviceaccount.yaml\n      - equal:\n          path: spec.template.spec.serviceAccountName\n          value: RELEASE-NAME-traefik\n        template: deployment.yaml\n      - equal:\n          path: subjects[0].name\n          value: RELEASE-NAME-traefik\n        template: rbac/clusterrolebinding.yaml\n  - it: should not create RBAC related objects when disabled\n    set:\n      rbac:\n        enabled: false\n    asserts:\n      - hasDocuments:\n          count: 0\n        template: rbac/clusterrole.yaml\n      - hasDocuments:\n          count: 0\n        template: rbac/clusterrolebinding.yaml\n      - hasDocuments:\n          count: 0\n        template: rbac/role.yaml\n      - hasDocuments:\n          count: 0\n        template: rbac/rolebinding.yaml\n  - it: should create RBAC related objects at namespace scope\n    set:\n      rbac:\n        namespaced: true\n    asserts:\n      - isKind:\n          of: Role\n        template: rbac/role.yaml\n      - isKind:\n          of: RoleBinding\n        template: rbac/rolebinding.yaml\n      - hasDocuments:\n          count: 0\n        template: rbac/clusterrole.yaml\n      - hasDocuments:\n          count: 0\n        template: rbac/clusterrolebinding.yaml\n  - it: should use existing ServiceAccount\n    set:\n      serviceAccount:\n        name: foobar\n    asserts:\n      - hasDocuments:\n          count: 0\n        template: rbac/serviceaccount.yaml\n      - equal:\n          path: spec.template.spec.serviceAccountName\n          value: foobar\n        template: deployment.yaml\n      - equal:\n          path: subjects[0].name\n          value: foobar\n        template: rbac/clusterrolebinding.yaml\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/tests/service-config_test.yaml",
    "content": "suite: Service configuration\ntemplates:\n  - service.yaml\ntests:\n  - it: should be a type LoadBalancer by default\n    asserts:\n      - equal:\n          path: items[0].spec.type\n          value: LoadBalancer\n  - it: should be a custom type when specified via values\n    set:\n      service:\n        type: NodePort\n    asserts:\n      - equal:\n          path: items[0].spec.type\n          value: NodePort\n  - it: should have no annotations by default\n    asserts:\n      - isNull:\n          path: items[0].metadata.annotations\n  - it: should have customized annotations when specified via values\n    set:\n      service:\n        annotations:\n          azure-load-balancer-internal: true\n    asserts:\n      - equal:\n          path: items[0].metadata.annotations.azure-load-balancer-internal\n          value: true\n  - it: should have TCP only annotations when specified via values\n    set:\n      service:\n        annotationsTCP:\n          dns-hostname: tcp.example.com\n      ports:\n        udp:\n          port: 3000\n          expose: true\n          exposedPort: 80\n          protocol: UDP\n    asserts:\n      - equal:\n          path: items[0].metadata.annotations.dns-hostname\n          value: tcp.example.com\n      - isNull:\n          path: items[1].metadata.annotations\n  - it: should have UDP only annotations when specified via values\n    set:\n      service:\n        annotationsUDP:\n          dns-hostname: udp.example.com\n      ports:\n        udp:\n          port: 3000\n          expose: true\n          exposedPort: 80\n          protocol: UDP\n    asserts:\n      - isNull:\n          path: items[0].metadata.annotations\n      - equal:\n          path: items[1].metadata.annotations.dns-hostname\n          value: udp.example.com\n  - it: should merge protocol specific service annotations when specified via values\n    set:\n      service:\n        annotations:\n          azure-load-balancer-internal: true\n        annotationsTCP:\n          dns-hostname: tcp.example.com \n        annotationsUDP:\n          dns-hostname: udp.example.com \n      ports:\n        udp:\n          port: 3000\n          expose: true\n          exposedPort: 80\n          protocol: UDP\n    asserts:\n      - equal:\n          path: items[0].metadata.annotations\n          value:\n            azure-load-balancer-internal: true\n            dns-hostname: tcp.example.com\n      - equal:\n          path: items[1].metadata.annotations\n          value:\n            azure-load-balancer-internal: true\n            dns-hostname: udp.example.com\n  - it: should merge protocol specific service annotations with annotationsTCP unspecified when specified via values\n    set:\n      service:\n        annotations:\n          azure-load-balancer-internal: true\n        annotationsUDP:\n          dns-hostname: udp.example.com \n      ports:\n        udp:\n          port: 3000\n          expose: true\n          exposedPort: 80\n          protocol: UDP\n    asserts:\n      - equal:\n          path: items[0].metadata.annotations\n          value:\n            azure-load-balancer-internal: true\n      - equal:\n          path: items[1].metadata.annotations\n          value:\n            azure-load-balancer-internal: true\n            dns-hostname: udp.example.com\n  - it: should merge protocol specific service annotations with annotationsUDP unspecified when specified via values\n    set:\n      service:\n        annotations:\n          azure-load-balancer-internal: true\n        annotationsTCP:\n          dns-hostname: tcp.example.com \n      ports:\n        udp:\n          port: 3000\n          expose: true\n          exposedPort: 80\n          protocol: UDP\n    asserts:\n      - equal:\n          path: items[0].metadata.annotations\n          value:\n            azure-load-balancer-internal: true\n            dns-hostname: tcp.example.com\n      - equal:\n          path: items[1].metadata.annotations\n          value:\n            azure-load-balancer-internal: true\n  - it: should have customized labels when specified via values\n    set:\n      service:\n        labels:\n          custom-label: custom-value\n    asserts:\n      - equal:\n          path: items[0].metadata.labels.custom-label\n          value: custom-value\n\n  - it: should have custom spec elements when specified via values\n    set:\n      service:\n        spec:\n          externalTrafficPolicy: Cluster\n          loadBalancerIP: \"1.2.3.4\"\n          clusterIP: \"2.3.4.5\"\n          loadBalancerSourceRanges:\n            - 192.168.0.1/32\n            - 172.16.0.0/16\n          externalIPs:\n            - \"1.2.3.4\"\n    asserts:\n      - equal:\n          path: items[0].spec.ports[0].name\n          value: web\n      - equal:\n          path: items[0].spec.ports[0].protocol\n          value: TCP\n      - equal:\n          path: items[0].spec.externalTrafficPolicy\n          value: Cluster\n      - equal:\n          path: items[0].spec.loadBalancerIP\n          value: \"1.2.3.4\"\n      - equal:\n          path: items[0].spec.clusterIP\n          value: \"2.3.4.5\"\n      - equal:\n          path: items[0].spec.loadBalancerSourceRanges[0]\n          value: 192.168.0.1/32\n      - equal:\n          path: items[0].spec.loadBalancerSourceRanges[1]\n          value: 172.16.0.0/16\n      - equal:\n          path: items[0].spec.externalIPs[0]\n          value: \"1.2.3.4\"\n  - it: should have custom spec elements when specified via values for UPD ports\n    set:\n      ports:\n        udp:\n          port: 3000\n          expose: true\n          exposedPort: 80\n          protocol: UDP\n    asserts:\n      - equal:\n          path: items[1].spec.ports[0].name\n          value: udp\n      - equal:\n          path: items[1].spec.ports[0].protocol\n          value: UDP\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/tests/traefik-config_test.yaml",
    "content": "suite: Traefik configuration\ntemplates:\n  - deployment.yaml\ntests:\n  - it: should have no custom arguments when specified by default\n    set:\n      additionalArguments:\n        - --the.force.is.with.me=true\n    asserts:\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content: \"--the.force.is.with.me=true\"\n  - it: should have namespace restriction if rbac is namespaced\n    set:\n      rbac:\n        namespaced: true\n    asserts:\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content: \"--providers.kubernetesingress.namespaces=NAMESPACE\"\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content: \"--providers.kubernetescrd.namespaces=NAMESPACE\"\n  - it: should have a custom string of watched namespaces when specified in configuration\n    set:\n      rbac:\n        namespaced: true\n      providers:\n        kubernetesCRD:\n          enabled: true\n          allowCrossNamespace: true\n          namespaces:\n          - \"foo\"\n          - \"bar\"\n        kubernetesIngress:\n          enabled: true\n          namespaces:\n          - \"foo\"\n          - \"bar\"\n    asserts:\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content: \"--providers.kubernetesingress.namespaces=foo,bar\"\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content: \"--providers.kubernetescrd.allowCrossNamespace=true\"\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content: \"--providers.kubernetescrd.namespaces=foo,bar\"\n  - it: should not have the watched namespace when provider is disabled\n    set:\n      providers:\n        kubernetesCRD:\n          enabled: false\n          namespaces:\n          - \"foo\"\n          - \"bar\"\n        kubernetesIngress:\n          enabled: false\n          namespaces:\n            - \"foo\"\n            - \"bar\"\n    asserts:\n      - notContains:\n          path: spec.template.spec.containers[0].args\n          content:\n            \"--providers.kubernetesingress.namespaces\"\n      - notContains:\n          path: spec.template.spec.containers[0].args\n          content:\n            \"--providers.kubernetesingress\"\n      - notContains:\n          path: spec.template.spec.containers[0].args\n          content:\n            \"--providers.kubernetescrd.namespaces\"\n      - notContains:\n          path: spec.template.spec.containers[0].args\n          content:\n            \"--providers.kubernetescrd\"\n  - it: should have disable published Kubernetes service when default configuration\n    asserts:\n      - notContains:\n          path: spec.template.spec.containers[0].args\n          content: \"--providers.kubernetesingress.ingressendpoint.publishedservice=NAMESPACE/RELEASE-NAME-traefik\"\n  - it: should have enable published Kubernetes service when specified in configuration\n    set:\n        providers:\n          kubernetesIngress:\n            publishedService:\n              enabled: true\n    asserts:\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content: \"--providers.kubernetesingress.ingressendpoint.publishedservice=NAMESPACE/RELEASE-NAME-traefik\"\n  - it: should have a custom string in published Kubernetes service when specified in configuration\n    set:\n      providers:\n        kubernetesIngress:\n          publishedService:\n            enabled: true\n            pathOverride: foo/bar\n    asserts:\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content: \"--providers.kubernetesingress.ingressendpoint.publishedservice=foo/bar\"\n  - it: should match ingresses based on input label\n    set:\n        providers:\n          kubernetesIngress:\n            labelSelector: environment=devel\n    asserts:\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content: \"--providers.kubernetesingress.labelSelector=environment=devel\"\n  - it: should have a plugin storage if the experimental feature is enabled\n    set:\n      experimental:\n        plugins:\n          enabled: true\n    asserts:\n      - equal:\n          path: spec.template.spec.volumes[2]\n          value:\n            name: plugins\n            emptyDir: {}\n      - contains:\n          path: spec.template.spec.containers[0].volumeMounts\n          content:\n            name: plugins\n            mountPath: \"/plugins-storage\"\n  - it: should have tls configuration args when specified in values.yaml for port\n    set:\n      ports:\n        websecure:\n          tls:\n            enabled: true\n            options: \"foo\"\n            certResolver: \"certResolverFoo\"\n            domains:\n              - main: \"sub.domain.tld\"\n                sans:\n                  - \"alt1.domain.tld\"\n                  - \"alt2.domain.tld\"\n    asserts:\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content: \"--entrypoints.websecure.http.tls=true\"\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content: \"--entrypoints.websecure.http.tls.options=foo\"\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content: \"--entrypoints.websecure.http.tls.certResolver=certResolverFoo\"\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content: \"--entrypoints.websecure.http.tls.domains[0].main=sub.domain.tld\"\n      - contains:\n          path: spec.template.spec.containers[0].args\n          content: \"--entrypoints.websecure.http.tls.domains[0].sans=alt1.domain.tld,alt2.domain.tld\"\n  - it: should have additional volumeMounts\n    set:\n      additionalVolumeMounts:\n        - name: foo-logs\n          mountPath: /var/log/traefik\n      asserts:\n        - equal:\n            path: spec.template.spec.containers[0].volumeMounts[3].name\n            value: foo-logs\n        - equal:\n            path: spec.template.spec.containers[0].volumeMounts[3].mountPath\n            value: /var/log/traefik\n  - it: should set custom probe port\n    set:\n      additionalArguments:\n        - --ping\n        - --ping.entrypoint=web\n      ports:\n        traefik:\n          port: 9000\n          healthchecksPort: 9001\n          exposedPort: 9000\n      asserts:\n        - equal:\n            path: spec.template.spec.containers[0].livenessProbe.httpGet.port\n            content: 9001\n        - equal:\n            path: spec.template.spec.containers[0].readinessProbe.httpGet.port\n            content: 9001\n        - contains:\n            path: spec.template.spec.containers[0].args\n            content: \"--ping\"\n        - contains:\n            path: spec.template.spec.containers[0].args\n            content: \"--ping.entrypoint=web\"\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_013__aws__oauth2_proxy/traefik/values.yaml",
    "content": "# Default values for Traefik\nimage:\n  name: traefik\n  # defaults to appVersion\n  tag: \"\"\n  pullPolicy: IfNotPresent\n\n#\n# Configure the deployment\n#\ndeployment:\n  enabled: true\n  # Can be either Deployment or DaemonSet\n  kind: Deployment\n  # Number of pods of the deployment (only applies when kind == Deployment)\n  replicas: 1\n  # Additional deployment annotations (e.g. for jaeger-operator sidecar injection)\n  annotations: {}\n  # Additional deployment labels (e.g. for filtering deployment by custom labels)\n  labels: {}\n  # Additional pod annotations (e.g. for mesh injection or prometheus scraping)\n  podAnnotations: {}\n  # Additional Pod labels (e.g. for filtering Pod by custom labels)\n  podLabels: {}\n  # Additional containers (e.g. for metric offloading sidecars)\n  additionalContainers: []\n    # https://docs.datadoghq.com/developers/dogstatsd/unix_socket/?tab=host\n    # - name: socat-proxy\n    # image: alpine/socat:1.0.5\n    # args: [\"-s\", \"-u\", \"udp-recv:8125\", \"unix-sendto:/socket/socket\"]\n    # volumeMounts:\n    #   - name: dsdsocket\n    #     mountPath: /socket\n  # Additional volumes available for use with initContainers and additionalContainers\n  additionalVolumes: []\n    # - name: dsdsocket\n    #   hostPath:\n    #     path: /var/run/statsd-exporter\n  # Additional initContainers (e.g. for setting file permission as shown below)\n  initContainers: []\n    # The \"volume-permissions\" init container is required if you run into permission issues.\n    # Related issue: https://github.com/traefik/traefik/issues/6972\n    # - name: volume-permissions\n    #   image: busybox:1.31.1\n    #   command: [\"sh\", \"-c\", \"chmod -Rv 600 /data/*\"]\n    #   volumeMounts:\n    #     - name: data\n    #       mountPath: /data\n  # Custom pod DNS policy. Apply if `hostNetwork: true`\n  # dnsPolicy: ClusterFirstWithHostNet\n  # Additional imagePullSecrets\n  imagePullSecrets: []\n   # - name: myRegistryKeySecretName\n\n# Pod disruption budget\npodDisruptionBudget:\n  enabled: false\n  # maxUnavailable: 1\n  # minAvailable: 0\n\n# Use ingressClass. Ignored if Traefik version < 2.3 / kubernetes < 1.18.x\ningressClass:\n  # true is not unit-testable yet, pending https://github.com/rancher/helm-unittest/pull/12\n  enabled: false\n  isDefaultClass: false\n  # Use to force a networking.k8s.io API Version for certain CI/CD applications. E.g. \"v1beta1\"\n  fallbackApiVersion: \"\"\n\n# Activate Pilot integration\npilot:\n  enabled: false\n  token: \"\"\n  # Toggle Pilot Dashboard\n  # dashboard: false\n\n# Enable experimental features\nexperimental:\n  plugins:\n    enabled: false\n  kubernetesGateway:\n    enabled: false\n    appLabelSelector: \"traefik\"\n    certificates: []\n    # - group: \"core\"\n    #   kind: \"Secret\"\n    #   name: \"mysecret\"\n    # By default, Gateway would be created to the Namespace you are deploying Traefik to.\n    # You may create that Gateway in another namespace, setting its name below:\n    # namespace: default\n\n# Create an IngressRoute for the dashboard\ningressRoute:\n  dashboard:\n    enabled: true\n    # Additional ingressRoute annotations (e.g. for kubernetes.io/ingress.class)\n    annotations: {}\n    # Additional ingressRoute labels (e.g. for filtering IngressRoute by custom labels)\n    labels: {}\n\nrollingUpdate:\n  maxUnavailable: 1\n  maxSurge: 1\n\n\n#\n# Configure providers\n#\nproviders:\n  kubernetesCRD:\n    enabled: true\n    allowCrossNamespace: false\n    namespaces: []\n      # - \"default\"\n  kubernetesIngress:\n    enabled: true\n    # labelSelector: environment=production,method=traefik\n    namespaces: []\n      # - \"default\"\n    # IP used for Kubernetes Ingress endpoints\n    publishedService:\n      enabled: false\n      # Published Kubernetes Service to copy status from. Format: namespace/servicename\n      # By default this Traefik service\n      # pathOverride: \"\"\n\n#\n# Add volumes to the traefik pod. The volume name will be passed to tpl.\n# This can be used to mount a cert pair or a configmap that holds a config.toml file.\n# After the volume has been mounted, add the configs into traefik by using the `additionalArguments` list below, eg:\n# additionalArguments:\n# - \"--providers.file.filename=/config/dynamic.toml\"\n# - \"--ping\"\n# - \"--ping.entrypoint=web\"\nvolumes: []\n# - name: public-cert\n#   mountPath: \"/certs\"\n#   type: secret\n# - name: '{{ printf \"%s-configs\" .Release.Name }}'\n#   mountPath: \"/config\"\n#   type: configMap\n\n# Additional volumeMounts to add to the Traefik container\nadditionalVolumeMounts: []\n  # For instance when using a logshipper for access logs\n  # - name: traefik-logs\n  #   mountPath: /var/log/traefik\n\n# Logs\n# https://docs.traefik.io/observability/logs/\nlogs:\n  # Traefik logs concern everything that happens to Traefik itself (startup, configuration, events, shutdown, and so on).\n  general:\n    # By default, the logs use a text format (common), but you can\n    # also ask for the json format in the format option\n    # format: json\n    # By default, the level is set to ERROR. Alternative logging levels are DEBUG, PANIC, FATAL, ERROR, WARN, and INFO.\n    level: ERROR\n  access:\n    # To enable access logs\n    enabled: true\n    # By default, logs are written using the Common Log Format (CLF).\n    # To write logs in JSON, use json in the format option.\n    # If the given format is unsupported, the default (CLF) is used instead.\n    # format: json\n    # To write the logs in an asynchronous fashion, specify a bufferingSize option.\n    # This option represents the number of log lines Traefik will keep in memory before writing\n    # them to the selected output. In some cases, this option can greatly help performances.\n    # bufferingSize: 100\n    # Filtering https://docs.traefik.io/observability/access-logs/#filtering\n    filters: {}\n      # statuscodes: \"200,300-302\"\n      # retryattempts: true\n      # minduration: 10ms\n    # Fields\n    # https://docs.traefik.io/observability/access-logs/#limiting-the-fieldsincluding-headers\n    fields:\n      general:\n        defaultmode: keep\n        names: {}\n          # Examples:\n          # ClientUsername: drop\n      headers:\n        defaultmode: drop\n        names: {}\n          # Examples:\n          # User-Agent: redact\n          # Authorization: drop\n          # Content-Type: keep\n\nmetrics:\n  # datadog:\n  #   address: 127.0.0.1:8125\n  # influxdb:\n  #   address: localhost:8089\n  #   protocol: udp\n  prometheus:\n    entryPoint: metrics\n  # statsd:\n  #   address: localhost:8125\n\nglobalArguments:\n  - \"--global.checknewversion\"\n  - \"--global.sendanonymoususage\"\n  - \"--api.insecure=true\"\n\n#\n# Configure Traefik static configuration\n# Additional arguments to be passed at Traefik's binary\n# All available options available on https://docs.traefik.io/reference/static-configuration/cli/\n## Use curly braces to pass values: `helm install --set=\"additionalArguments={--providers.kubernetesingress.ingressclass=traefik-internal,--log.level=DEBUG}\"`\nadditionalArguments: []\n#  - \"--providers.kubernetesingress.ingressclass=traefik-internal\"\n#  - \"--log.level=DEBUG\"\n\n# Environment variables to be passed to Traefik's binary\nenv: []\n# - name: SOME_VAR\n#   value: some-var-value\n# - name: SOME_VAR_FROM_CONFIG_MAP\n#   valueFrom:\n#     configMapRef:\n#       name: configmap-name\n#       key: config-key\n# - name: SOME_SECRET\n#   valueFrom:\n#     secretKeyRef:\n#       name: secret-name\n#       key: secret-key\n\nenvFrom: []\n# - configMapRef:\n#     name: config-map-name\n# - secretRef:\n#     name: secret-name\n\n# Configure ports\nports:\n  # The name of this one can't be changed as it is used for the readiness and\n  # liveness probes, but you can adjust its config to your liking\n  traefik:\n    port: 9000\n    # Use hostPort if set.\n    # hostPort: 9000\n    #\n    # Use hostIP if set. If not set, Kubernetes will default to 0.0.0.0, which\n    # means it's listening on all your interfaces and all your IPs. You may want\n    # to set this value if you need traefik to listen on specific interface\n    # only.\n    # hostIP: 192.168.100.10\n\n    # Override the liveness/readiness port. This is useful to integrate traefik\n    # with an external Load Balancer that performs healthchecks.\n    # healthchecksPort: 9000\n\n    # Defines whether the port is exposed if service.type is LoadBalancer or\n    # NodePort.\n    #\n    # You SHOULD NOT expose the traefik port on production deployments.\n    # If you want to access it from outside of your cluster,\n    # use `kubectl port-forward` or create a secure ingress\n    expose: false\n    # The exposed port for this service\n    exposedPort: 9000\n    # The port protocol (TCP/UDP)\n    protocol: TCP\n  web:\n    port: 8000\n    # hostPort: 8000\n    expose: true\n    exposedPort: 80\n    # The port protocol (TCP/UDP)\n    protocol: TCP\n    # Use nodeport if set. This is useful if you have configured Traefik in a\n    # LoadBalancer\n    # nodePort: 32080\n    # Port Redirections\n    # Added in 2.2, you can make permanent redirects via entrypoints.\n    # https://docs.traefik.io/routing/entrypoints/#redirection\n    # redirectTo: websecure\n  websecure:\n    port: 8443\n    # hostPort: 8443\n    expose: true\n    exposedPort: 443\n    # The port protocol (TCP/UDP)\n    protocol: TCP\n    # nodePort: 32443\n    # Set TLS at the entrypoint\n    # https://doc.traefik.io/traefik/routing/entrypoints/#tls\n    tls:\n      enabled: false\n      # this is the name of a TLSOption definition\n      options: \"\"\n      certResolver: \"\"\n      domains: []\n      # - main: example.com\n      #   sans:\n      #     - foo.example.com\n      #     - bar.example.com\n  metrics:\n    port: 9100\n    # hostPort: 9100\n    # Defines whether the port is exposed if service.type is LoadBalancer or\n    # NodePort.\n    #\n    # You may not want to expose the metrics port on production deployments.\n    # If you want to access it from outside of your cluster,\n    # use `kubectl port-forward` or create a secure ingress\n    expose: false\n    # The exposed port for this service\n    exposedPort: 9100\n    # The port protocol (TCP/UDP)\n    protocol: TCP\n\n# TLS Options are created as TLSOption CRDs\n# https://doc.traefik.io/traefik/https/tls/#tls-options\n# Example:\n# tlsOptions:\n#   default:\n#     sniStrict: true\n#     preferServerCipherSuites: true\n#   foobar:\n#     curvePreferences:\n#       - CurveP521\n#       - CurveP384\ntlsOptions: {}\n\n# Options for the main traefik service, where the entrypoints traffic comes\n# from.\nservice:\n  enabled: true\n  type: LoadBalancer\n  # Additional annotations applied to both TCP and UDP services (e.g. for cloud provider specific config)\n  annotations: {}\n  # Additional annotations for TCP service only\n  annotationsTCP: {}\n  # Additional annotations for UDP service only\n  annotationsUDP: {}\n  # Additional service labels (e.g. for filtering Service by custom labels)\n  labels: {}\n  # Additional entries here will be added to the service spec. Cannot contains\n  # type, selector or ports entries.\n  spec: {}\n    # externalTrafficPolicy: Cluster\n    # loadBalancerIP: \"1.2.3.4\"\n    # clusterIP: \"2.3.4.5\"\n  loadBalancerSourceRanges: []\n    # - 192.168.0.1/32\n    # - 172.16.0.0/16\n  externalIPs: []\n    # - 1.2.3.4\n\n## Create HorizontalPodAutoscaler object.\n##\nautoscaling:\n  enabled: false\n#   minReplicas: 1\n#   maxReplicas: 10\n#   metrics:\n#   - type: Resource\n#     resource:\n#       name: cpu\n#       targetAverageUtilization: 60\n#   - type: Resource\n#     resource:\n#       name: memory\n#       targetAverageUtilization: 60\n\n# Enable persistence using Persistent Volume Claims\n# ref: http://kubernetes.io/docs/user-guide/persistent-volumes/\n# After the pvc has been mounted, add the configs into traefik by using the `additionalArguments` list below, eg:\n# additionalArguments:\n# - \"--certificatesresolvers.le.acme.storage=/data/acme.json\"\n# It will persist TLS certificates.\npersistence:\n  enabled: false\n  name: data\n#  existingClaim: \"\"\n  accessMode: ReadWriteOnce\n  size: 128Mi\n  # storageClass: \"\"\n  path: /data\n  annotations: {}\n  # subPath: \"\" # only mount a subpath of the Volume into the pod\n\n# If hostNetwork is true, runs traefik in the host network namespace\n# To prevent unschedulabel pods due to port collisions, if hostNetwork=true\n# and replicas>1, a pod anti-affinity is recommended and will be set if the\n# affinity is left as default.\nhostNetwork: false\n\n# Whether Role Based Access Control objects like roles and rolebindings should be created\nrbac:\n  enabled: true\n\n  # If set to false, installs ClusterRole and ClusterRoleBinding so Traefik can be used across namespaces.\n  # If set to true, installs namespace-specific Role and RoleBinding and requires provider configuration be set to that same namespace\n  namespaced: false\n\n# Enable to create a PodSecurityPolicy and assign it to the Service Account via RoleBinding or ClusterRoleBinding\npodSecurityPolicy:\n  enabled: false\n\n# The service account the pods will use to interact with the Kubernetes API\nserviceAccount:\n  # If set, an existing service account is used\n  # If not set, a service account is created automatically using the fullname template\n  name: \"\"\n\n# Additional serviceAccount annotations (e.g. for oidc authentication)\nserviceAccountAnnotations: {}\n\nresources: {}\n  # requests:\n  #   cpu: \"100m\"\n  #   memory: \"50Mi\"\n  # limits:\n  #   cpu: \"300m\"\n  #   memory: \"150Mi\"\naffinity: {}\n# # This example pod anti-affinity forces the scheduler to put traefik pods\n# # on nodes where no other traefik pods are scheduled.\n# # It should be used when hostNetwork: true to prevent port conflicts\n#   podAntiAffinity:\n#     requiredDuringSchedulingIgnoredDuringExecution:\n#     - labelSelector:\n#         matchExpressions:\n#         - key: app\n#           operator: In\n#           values:\n#           - {{ template \"traefik.name\" . }}\n#       topologyKey: failure-domain.beta.kubernetes.io/zone\nnodeSelector: {}\ntolerations: []\n\n# Pods can have priority.\n# Priority indicates the importance of a Pod relative to other Pods.\npriorityClassName: \"\"\n\n# Set the container security context\n# To run the container with ports below 1024 this will need to be adjust to run as root\nsecurityContext:\n  capabilities:\n    drop: [ALL]\n  readOnlyRootFilesystem: true\n  runAsGroup: 65532\n  runAsNonRoot: true\n  runAsUser: 65532\n\npodSecurityContext:\n  fsGroup: 65532\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_014__aws__traefik_kops_whoami_middleware/ReadMe.md",
    "content": "[docs](https://github.com/traefik/traefik-helm-chart)\n\n\n- Version\n\n```bash\n$ helm version                \nversion.BuildInfo{Version:\"v3.5.4\", GitCommit:\"1b5edb69df3d3a08df77c9902dc17af864ff05d1\", GitTreeState:\"dirty\", GoVersion:\"go1.16.3\"}\n```\n\n- Pull the repo\n\n```bash\n$ git clone https://github.com/traefik/traefik-helm-chart.git\n$ ls                      \nReadMe.md          traefik-helm-chart\n\n# Create the CRDs\n$ kubectl apply -f traefik-helm-chart/traefik/crds/.                     \nWarning: apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition\ncustomresourcedefinition.apiextensions.k8s.io/ingressroutes.traefik.containo.us created\ncustomresourcedefinition.apiextensions.k8s.io/ingressroutetcps.traefik.containo.us created\ncustomresourcedefinition.apiextensions.k8s.io/ingressrouteudps.traefik.containo.us created\ncustomresourcedefinition.apiextensions.k8s.io/middlewares.traefik.containo.us created\ncustomresourcedefinition.apiextensions.k8s.io/serverstransports.traefik.containo.us created\ncustomresourcedefinition.apiextensions.k8s.io/tlsoptions.traefik.containo.us created\ncustomresourcedefinition.apiextensions.k8s.io/tlsstores.traefik.containo.us created\ncustomresourcedefinition.apiextensions.k8s.io/traefikservices.traefik.containo.us created\n\n\n$ cd traefik-helm-chart\n$ helm repo update                                                                                         \nHang tight while we grab the latest from your chart repositories...\n...Successfully got an update from the \"jetstack\" chart repository\n...Successfully got an update from the \"traefik\" chart repository\n...Successfully got an update from the \"datadog\" chart repository\n...Successfully got an update from the \"stable\" chart repository\n...Successfully got an update from the \"bitnami\" chart repository\nUpdate Complete. ⎈Happy Helming!⎈\n\n$ helm template traefik-helm-template -f traefik/values.yaml traefik/traefik > ../traefik-resources.yaml\n$ cp -rfp traefik/values.yaml ../                         \n$ cd ..\n$ rm -rf traefik-helm-chart    \n```\n\n- Get nodes\n\n```bash\n$ kubectl get nodes           \nNAME                            STATUS   ROLES    AGE   VERSION\nip-172-20-38-163.ec2.internal   Ready    master   30m   v1.19.11\nip-172-20-62-14.ec2.internal    Ready    node     27m   v1.19.11\n```\n\n- Try deploying traefik. Looks like CRDs didn't get installed. \n```\n$ kubectl apply -f traefik-resources.yaml\nserviceaccount/traefik-helm-template-traefik unchanged\nclusterrole.rbac.authorization.k8s.io/traefik-helm-template-traefik unchanged\nclusterrolebinding.rbac.authorization.k8s.io/traefik-helm-template-traefik unchanged\ndeployment.apps/traefik-helm-template-traefik configured\nservice/traefik-helm-template-traefik unchanged\nerror: unable to recognize \"traefik-resources.yaml\": no matches for kind \"IngressRoute\" in version \"traefik.containo.us/v1alpha1\"\n\n$ git clone https://github.com/traefik/traefik-helm-chart.git\n$ ls                      \nReadMe.md          traefik-helm-chart\n\n# Create the CRDs\n$ kubectl apply -f traefik-helm-chart/traefik/crds/.                     \nWarning: apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition\ncustomresourcedefinition.apiextensions.k8s.io/ingressroutes.traefik.containo.us created\ncustomresourcedefinition.apiextensions.k8s.io/ingressroutetcps.traefik.containo.us created\ncustomresourcedefinition.apiextensions.k8s.io/ingressrouteudps.traefik.containo.us created\ncustomresourcedefinition.apiextensions.k8s.io/middlewares.traefik.containo.us created\ncustomresourcedefinition.apiextensions.k8s.io/serverstransports.traefik.containo.us created\ncustomresourcedefinition.apiextensions.k8s.io/tlsoptions.traefik.containo.us created\ncustomresourcedefinition.apiextensions.k8s.io/tlsstores.traefik.containo.us created\ncustomresourcedefinition.apiextensions.k8s.io/traefikservices.traefik.containo.us created\n\n$ rm -rf traefik-helm-chart                 \n\n\n$ kubectl apply -f traefik-resources.yaml            \nserviceaccount/traefik-helm-template-traefik unchanged\nclusterrole.rbac.authorization.k8s.io/traefik-helm-template-traefik unchanged\nclusterrolebinding.rbac.authorization.k8s.io/traefik-helm-template-traefik unchanged\ndeployment.apps/traefik-helm-template-traefik configured\nservice/traefik-helm-template-traefik unchanged\ningressroute.traefik.containo.us/traefik-helm-template-traefik-dashboard created\n\n\n$ kubectl get svc                        \nNAME                            TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE\nkubernetes                      ClusterIP      100.64.0.1      <none>        443/TCP                      37m\ntraefik-helm-template-traefik   LoadBalancer   100.66.189.36   <pending>     80:32127/TCP,443:30552/TCP   6m44s\n```\n\n- Its in Pending state duo to the following error\n\n```bash\n$ kubectl describe svc traefik-helm-template-traefik                            \n.\n.\nError syncing load balancer: failed to ensure load balancer: AccessDenied\n```\n\n- Trying again with correct permissions.\n\n```bash\n$ kubectl get svc\nNAME                            TYPE           CLUSTER-IP      EXTERNAL-IP                                                              PORT(S)                      AGE\nkubernetes                      ClusterIP      100.64.0.1      <none>                                                                   443/TCP                      16m\ntraefik-helm-template-traefik   LoadBalancer   100.65.168.87   a93259cfe3e6840489e86a2b80b5f26d-546301547.us-east-1.elb.amazonaws.com   80:32444/TCP,443:32481/TCP   7m38s\n```\n\nYou will get the following Load Balancer on AWS\n\n![](.images/aws_load_balancer.png)\n\n\nNow we are getting 404 when we hit the load balancer.\n\n```bash\n$ curl -v a93259cfe3e6840489e86a2b80b5f26d-546301547.us-east-1.elb.amazonaws.com                                                                                                                                  \n*   Trying 54.175.76.116...\n* TCP_NODELAY set\n* Connected to a93259cfe3e6840489e86a2b80b5f26d-546301547.us-east-1.elb.amazonaws.com (54.175.76.116) port 80 (#0)\n> GET / HTTP/1.1\n> Host: a93259cfe3e6840489e86a2b80b5f26d-546301547.us-east-1.elb.amazonaws.com\n> User-Agent: curl/7.64.1\n> Accept: */*\n> \n< HTTP/1.1 404 Not Found\n< Content-Type: text/plain; charset=utf-8\n< X-Content-Type-Options: nosniff\n< Date: Thu, 10 Jun 2021 05:35:38 GMT\n< Content-Length: 19\n< \n404 page not found\n* Connection #0 to host a93259cfe3e6840489e86a2b80b5f26d-546301547.us-east-1.elb.amazonaws.com left intact\n* Closing connection 0\n```\n\nIn the next tasks we will try deploying some app behind load balancer and test routes.\n\n```bash\n$ kubectl apply -f whoami.yaml \ndeployment.apps/whoami unchanged\nservice/whoami unchanged\ningressroute.traefik.containo.us/whoami-whoami unchanged\n\n\n$ curl http://ad639fc8779704f558f7f3132f112d96-330009778.us-east-1.elb.amazonaws.com/whoami-app-api\nHostname: whoami-658d568b94-gwvcl\nIP: 127.0.0.1\nIP: 100.96.1.7\nRemoteAddr: 100.96.1.5:58624\nGET /whoami-app-api HTTP/1.1\nHost: ad639fc8779704f558f7f3132f112d96-330009778.us-east-1.elb.amazonaws.com\nUser-Agent: curl/7.64.1\nAccept: */*\nAccept-Encoding: gzip\nX-Forwarded-For: 100.96.1.1\nX-Forwarded-Host: ad639fc8779704f558f7f3132f112d96-330009778.us-east-1.elb.amazonaws.com\nX-Forwarded-Port: 80\nX-Forwarded-Proto: http\nX-Forwarded-Server: traefik-helm-template-traefik-bf8f77bfc-jznxx\nX-Real-Ip: 100.96.1.1\n```\n\n\n- Let's deploy the dashboard\n\n```bash\n$ kubectl port-forward $(kubectl get pods --selector \"app.kubernetes.io/name=traefik\" --output=name) 9000:9000\n\nForwarding from 127.0.0.1:9000 -> 9000\nForwarding from [::1]:9000 -> 9000\nHandling connection for 9000\nHandling connection for 9000\nHandling connection for 9000\nHandling connection for 9000\n```\n\n![](.images/traefik-dashboard.png)\n\n\n\n- Let's try to deploy some middlewares. Ensure that the middleware.yaml is deployed\n\n```bash\nkubectl apply -f middleware.yaml\n```\n\n- Also the route in IngressRoute should contain the middleware reference as show in the example\n- When the changes are deployed with the following part commented. See the response we get\n```bash\n$ cat whoami.yaml| grep -A 4 middleware          \n#      middlewares:\n#        - name: test-stripprefix\n#          namespace: default\n\n$ curl http://ad639fc8779704f558f7f3132f112d96-330009778.us-east-1.elb.amazonaws.com/api/whoami-app-api/\nHostname: whoami-658d568b94-k8v8d\nIP: 127.0.0.1\nIP: 100.96.1.18\nRemoteAddr: 100.96.1.5:55748\nGET /api/whoami-app-api/ HTTP/1.1\nHost: ad639fc8779704f558f7f3132f112d96-330009778.us-east-1.elb.amazonaws.com\nUser-Agent: curl/7.64.1\nAccept: */*\nAccept-Encoding: gzip\nX-Forwarded-For: 100.96.1.1\nX-Forwarded-Host: ad639fc8779704f558f7f3132f112d96-330009778.us-east-1.elb.amazonaws.com\nX-Forwarded-Port: 80\nX-Forwarded-Proto: http\nX-Forwarded-Server: traefik-helm-template-traefik-bf8f77bfc-jznxx\nX-Real-Ip: 100.96.1.1\n```\n\n> Note: the GET /api/whoami-app-api/ HTTP/1.1 and there is not X-Forwarded-Prefix\n\n- Now when the middleware part above is uncommented and deployed again\n\n```bash\n$ curl http://ad639fc8779704f558f7f3132f112d96-330009778.us-east-1.elb.amazonaws.com/api/whoami-app-api/\nHostname: whoami-658d568b94-k8v8d\nIP: 127.0.0.1\nIP: 100.96.1.18\nRemoteAddr: 100.96.1.5:57574\nGET /whoami-app-api/ HTTP/1.1\nHost: ad639fc8779704f558f7f3132f112d96-330009778.us-east-1.elb.amazonaws.com\nUser-Agent: curl/7.64.1\nAccept: */*\nAccept-Encoding: gzip\nX-Forwarded-For: 100.96.1.1\nX-Forwarded-Host: ad639fc8779704f558f7f3132f112d96-330009778.us-east-1.elb.amazonaws.com\nX-Forwarded-Port: 80\nX-Forwarded-Prefix: /api/\nX-Forwarded-Proto: http\nX-Forwarded-Server: traefik-helm-template-traefik-bf8f77bfc-jznxx\nX-Real-Ip: 100.96.1.1\n```\n\n> Note: GET /whoami-app-api/ HTTP/1.1 and X-Forwarded-Prefix: /api/     which says that the middleware is working.\n    \n    \n    "
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_014__aws__traefik_kops_whoami_middleware/middleware.yaml",
    "content": "apiVersion: traefik.containo.us/v1alpha1\nkind: Middleware\nmetadata:\n  name: test-stripprefix\n#  namespace: default\nspec:\n  stripPrefix:\n    prefixes:\n      - /api/\n    forceSlash: false\n\n#spec:\n#  addPrefix:\n#    prefix: /foo\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_014__aws__traefik_kops_whoami_middleware/traefik-resources.yaml",
    "content": "---\n# Source: traefik/templates/rbac/serviceaccount.yaml\nkind: ServiceAccount\napiVersion: v1\nmetadata:\n  name: traefik-helm-template-traefik\n  labels:\n    app.kubernetes.io/name: traefik\n    helm.sh/chart: traefik-9.19.1\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/instance: traefik-helm-template\n  annotations:\n---\n# Source: traefik/templates/rbac/clusterrole.yaml\nkind: ClusterRole\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: traefik-helm-template-traefik\n  labels:\n    app.kubernetes.io/name: traefik\n    helm.sh/chart: traefik-9.19.1\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/instance: traefik-helm-template\nrules:\n  - apiGroups:\n      - \"\"\n    resources:\n      - services\n      - endpoints\n      - secrets\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - extensions\n      - networking.k8s.io\n    resources:\n      - ingresses\n      - ingressclasses\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - extensions\n      - networking.k8s.io\n    resources:\n      - ingresses/status\n    verbs:\n      - update\n  - apiGroups:\n      - traefik.containo.us\n    resources:\n      - ingressroutes\n      - ingressroutetcps\n      - ingressrouteudps\n      - middlewares\n      - tlsoptions\n      - tlsstores\n      - traefikservices\n      - serverstransports\n    verbs:\n      - get\n      - list\n      - watch\n---\n# Source: traefik/templates/rbac/clusterrolebinding.yaml\nkind: ClusterRoleBinding\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: traefik-helm-template-traefik\n  labels:\n    app.kubernetes.io/name: traefik\n    helm.sh/chart: traefik-9.19.1\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/instance: traefik-helm-template\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: traefik-helm-template-traefik\nsubjects:\n  - kind: ServiceAccount\n    name: traefik-helm-template-traefik\n    namespace: default\n---\n# Source: traefik/templates/deployment.yaml\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: traefik-helm-template-traefik\n  labels:\n    app.kubernetes.io/name: traefik\n    helm.sh/chart: traefik-9.19.1\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/instance: traefik-helm-template\n  annotations:\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: traefik\n      app.kubernetes.io/instance: traefik-helm-template\n  strategy:\n    type: RollingUpdate\n    rollingUpdate:\n      maxSurge: 1\n      maxUnavailable: 1\n  template: \n    metadata:\n      annotations:\n      labels:\n        app.kubernetes.io/name: traefik\n        helm.sh/chart: traefik-9.19.1\n        app.kubernetes.io/managed-by: Helm\n        app.kubernetes.io/instance: traefik-helm-template\n    spec:\n      serviceAccountName: traefik-helm-template-traefik\n      terminationGracePeriodSeconds: 60\n      hostNetwork: false\n      containers:\n      - image: \"traefik:2.4.8\"\n        imagePullPolicy: IfNotPresent\n        name: traefik-helm-template-traefik\n        resources:\n        readinessProbe:\n          httpGet:\n            path: /ping\n            port: 9000\n          failureThreshold: 1\n          initialDelaySeconds: 10\n          periodSeconds: 10\n          successThreshold: 1\n          timeoutSeconds: 2\n        livenessProbe:\n          httpGet:\n            path: /ping\n            port: 9000\n          failureThreshold: 3\n          initialDelaySeconds: 10\n          periodSeconds: 10\n          successThreshold: 1\n          timeoutSeconds: 2\n        ports:\n        - name: \"traefik\"\n          containerPort: 9000\n          protocol: \"TCP\"\n        - name: \"web\"\n          containerPort: 8000\n          protocol: \"TCP\"\n        - name: \"websecure\"\n          containerPort: 8443\n          protocol: \"TCP\"\n        securityContext:\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsGroup: 65532\n          runAsNonRoot: true\n          runAsUser: 65532\n        volumeMounts:\n          - name: data\n            mountPath: /data\n          - name: tmp\n            mountPath: /tmp\n        args:\n          - \"--global.checknewversion\"\n          - \"--global.sendanonymoususage\"\n          - \"--entryPoints.traefik.address=:9000/tcp\"\n          - \"--entryPoints.web.address=:8000/tcp\"\n          - \"--entryPoints.websecure.address=:8443/tcp\"\n          - \"--api.dashboard=true\"\n          - \"--ping=true\"\n          - \"--providers.kubernetescrd\"\n          - \"--providers.kubernetesingress\"\n      volumes:\n        - name: data\n          emptyDir: {}\n        - name: tmp\n          emptyDir: {}\n      securityContext:\n        fsGroup: 65532\n---\n# Source: traefik/templates/service.yaml\napiVersion: v1\nkind: List\nitems:\n  - apiVersion: v1\n    kind: Service\n    metadata:\n      name: traefik-helm-template-traefik\n      labels:\n        app.kubernetes.io/name: traefik\n        helm.sh/chart: traefik-9.19.1\n        app.kubernetes.io/managed-by: Helm\n        app.kubernetes.io/instance: traefik-helm-template\n      annotations:\n    spec:\n      type: LoadBalancer\n      selector:\n        app.kubernetes.io/name: traefik\n        app.kubernetes.io/instance: traefik-helm-template\n      ports:\n      - port: 80\n        name: web\n        targetPort: \"web\"\n        protocol: \"TCP\"\n      - port: 443\n        name: websecure\n        targetPort: \"websecure\"\n        protocol: \"TCP\"\n---\n# Source: traefik/templates/dashboard-hook-ingressroute.yaml\napiVersion: traefik.containo.us/v1alpha1\nkind: IngressRoute\nmetadata:\n  name: traefik-helm-template-traefik-dashboard\n  annotations:\n    helm.sh/hook: \"post-install,post-upgrade\"\n  labels:\n    app.kubernetes.io/name: traefik\n    helm.sh/chart: traefik-9.19.1\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/instance: traefik-helm-template\nspec:\n  entryPoints:\n    - traefik\n  routes:\n  - match: PathPrefix(`/dashboard`) || PathPrefix(`/api`)\n    kind: Rule\n    services:\n    - name: api@internal\n      kind: TraefikService\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_014__aws__traefik_kops_whoami_middleware/values.yaml",
    "content": "# Default values for Traefik\nimage:\n  name: traefik\n  # defaults to appVersion\n  tag: \"\"\n  pullPolicy: IfNotPresent\n\n#\n# Configure the deployment\n#\ndeployment:\n  enabled: true\n  # Can be either Deployment or DaemonSet\n  kind: Deployment\n  # Number of pods of the deployment (only applies when kind == Deployment)\n  replicas: 1\n  # Additional deployment annotations (e.g. for jaeger-operator sidecar injection)\n  annotations: {}\n  # Additional deployment labels (e.g. for filtering deployment by custom labels)\n  labels: {}\n  # Additional pod annotations (e.g. for mesh injection or prometheus scraping)\n  podAnnotations: {}\n  # Additional Pod labels (e.g. for filtering Pod by custom labels)\n  podLabels: {}\n  # Additional containers (e.g. for metric offloading sidecars)\n  additionalContainers: []\n    # https://docs.datadoghq.com/developers/dogstatsd/unix_socket/?tab=host\n    # - name: socat-proxy\n    # image: alpine/socat:1.0.5\n    # args: [\"-s\", \"-u\", \"udp-recv:8125\", \"unix-sendto:/socket/socket\"]\n    # volumeMounts:\n    #   - name: dsdsocket\n    #     mountPath: /socket\n  # Additional volumes available for use with initContainers and additionalContainers\n  additionalVolumes: []\n    # - name: dsdsocket\n    #   hostPath:\n    #     path: /var/run/statsd-exporter\n  # Additional initContainers (e.g. for setting file permission as shown below)\n  initContainers: []\n    # The \"volume-permissions\" init container is required if you run into permission issues.\n    # Related issue: https://github.com/traefik/traefik/issues/6972\n    # - name: volume-permissions\n    #   image: busybox:1.31.1\n    #   command: [\"sh\", \"-c\", \"chmod -Rv 600 /data/*\"]\n    #   volumeMounts:\n    #     - name: data\n    #       mountPath: /data\n  # Custom pod DNS policy. Apply if `hostNetwork: true`\n  # dnsPolicy: ClusterFirstWithHostNet\n  # Additional imagePullSecrets\n  imagePullSecrets: []\n   # - name: myRegistryKeySecretName\n\n# Pod disruption budget\npodDisruptionBudget:\n  enabled: false\n  # maxUnavailable: 1\n  # minAvailable: 0\n\n# Use ingressClass. Ignored if Traefik version < 2.3 / kubernetes < 1.18.x\ningressClass:\n  # true is not unit-testable yet, pending https://github.com/rancher/helm-unittest/pull/12\n  enabled: false\n  isDefaultClass: false\n  # Use to force a networking.k8s.io API Version for certain CI/CD applications. E.g. \"v1beta1\"\n  fallbackApiVersion:\n\n# Activate Pilot integration\npilot:\n  enabled: false\n  token: \"\"\n  # Toggle Pilot Dashboard\n  # dashboard: false\n\n# Enable experimental features\nexperimental:\n  plugins:\n    enabled: false\n  kubernetesGateway:\n    enabled: false\n    appLabelSelector: \"traefik\"\n    certificates: []\n    # - group: \"core\"\n    #   kind: \"Secret\"\n    #   name: \"mysecret\"\n\n# Create an IngressRoute for the dashboard\ningressRoute:\n  dashboard:\n    enabled: true\n    # Additional ingressRoute annotations (e.g. for kubernetes.io/ingress.class)\n    annotations: {}\n    # Additional ingressRoute labels (e.g. for filtering IngressRoute by custom labels)\n    labels: {}\n\nrollingUpdate:\n  maxUnavailable: 1\n  maxSurge: 1\n\n\n#\n# Configure providers\n#\nproviders:\n  kubernetesCRD:\n    enabled: true\n    namespaces: []\n      # - \"default\"\n  kubernetesIngress:\n    enabled: true\n    # labelSelector: environment=production,method=traefik\n    namespaces: []\n      # - \"default\"\n    # IP used for Kubernetes Ingress endpoints\n    publishedService:\n      enabled: false\n      # Published Kubernetes Service to copy status from. Format: namespace/servicename\n      # By default this Traefik service\n      # pathOverride: \"\"\n\n#\n# Add volumes to the traefik pod. The volume name will be passed to tpl.\n# This can be used to mount a cert pair or a configmap that holds a config.toml file.\n# After the volume has been mounted, add the configs into traefik by using the `additionalArguments` list below, eg:\n# additionalArguments:\n# - \"--providers.file.filename=/config/dynamic.toml\"\n# - \"--ping\"\n# - \"--ping.entrypoint=web\"\nvolumes: []\n# - name: public-cert\n#   mountPath: \"/certs\"\n#   type: secret\n# - name: '{{ printf \"%s-configs\" .Release.Name }}'\n#   mountPath: \"/config\"\n#   type: configMap\n\n# Additional volumeMounts to add to the Traefik container\nadditionalVolumeMounts: []\n  # For instance when using a logshipper for access logs\n  # - name: traefik-logs\n  #   mountPath: /var/log/traefik\n\n# Logs\n# https://docs.traefik.io/observability/logs/\nlogs:\n  # Traefik logs concern everything that happens to Traefik itself (startup, configuration, events, shutdown, and so on).\n  general:\n    # By default, the logs use a text format (common), but you can\n    # also ask for the json format in the format option\n    # format: json\n    # By default, the level is set to ERROR. Alternative logging levels are DEBUG, PANIC, FATAL, ERROR, WARN, and INFO.\n    level: ERROR\n  access:\n    # To enable access logs\n    enabled: false\n    # By default, logs are written using the Common Log Format (CLF).\n    # To write logs in JSON, use json in the format option.\n    # If the given format is unsupported, the default (CLF) is used instead.\n    # format: json\n    # To write the logs in an asynchronous fashion, specify a bufferingSize option.\n    # This option represents the number of log lines Traefik will keep in memory before writing\n    # them to the selected output. In some cases, this option can greatly help performances.\n    # bufferingSize: 100\n    # Filtering https://docs.traefik.io/observability/access-logs/#filtering\n    filters: {}\n      # statuscodes: \"200,300-302\"\n      # retryattempts: true\n      # minduration: 10ms\n    # Fields\n    # https://docs.traefik.io/observability/access-logs/#limiting-the-fieldsincluding-headers\n    fields:\n      general:\n        defaultmode: keep\n        names: {}\n          # Examples:\n          # ClientUsername: drop\n      headers:\n        defaultmode: drop\n        names: {}\n          # Examples:\n          # User-Agent: redact\n          # Authorization: drop\n          # Content-Type: keep\n\nglobalArguments:\n  - \"--global.checknewversion\"\n  - \"--global.sendanonymoususage\"\n\n#\n# Configure Traefik static configuration\n# Additional arguments to be passed at Traefik's binary\n# All available options available on https://docs.traefik.io/reference/static-configuration/cli/\n## Use curly braces to pass values: `helm install --set=\"additionalArguments={--providers.kubernetesingress.ingressclass=traefik-internal,--log.level=DEBUG}\"`\nadditionalArguments: []\n#  - \"--providers.kubernetesingress.ingressclass=traefik-internal\"\n#  - \"--log.level=DEBUG\"\n\n# Environment variables to be passed to Traefik's binary\nenv: []\n# - name: SOME_VAR\n#   value: some-var-value\n# - name: SOME_VAR_FROM_CONFIG_MAP\n#   valueFrom:\n#     configMapRef:\n#       name: configmap-name\n#       key: config-key\n# - name: SOME_SECRET\n#   valueFrom:\n#     secretKeyRef:\n#       name: secret-name\n#       key: secret-key\n\nenvFrom: []\n# - configMapRef:\n#     name: config-map-name\n# - secretRef:\n#     name: secret-name\n\n# Configure ports\nports:\n  # The name of this one can't be changed as it is used for the readiness and\n  # liveness probes, but you can adjust its config to your liking\n  traefik:\n    port: 9000\n    # Use hostPort if set.\n    # hostPort: 9000\n    #\n    # Use hostIP if set. If not set, Kubernetes will default to 0.0.0.0, which\n    # means it's listening on all your interfaces and all your IPs. You may want\n    # to set this value if you need traefik to listen on specific interface\n    # only.\n    # hostIP: 192.168.100.10\n\n    # Override the liveness/readiness port. This is useful to integrate traefik\n    # with an external Load Balancer that performs healthchecks.\n    # healthchecksPort: 9000\n\n    # Defines whether the port is exposed if service.type is LoadBalancer or\n    # NodePort.\n    #\n    # You SHOULD NOT expose the traefik port on production deployments.\n    # If you want to access it from outside of your cluster,\n    # use `kubectl port-forward` or create a secure ingress\n    expose: false\n    # The exposed port for this service\n    exposedPort: 9000\n    # The port protocol (TCP/UDP)\n    protocol: TCP\n  web:\n    port: 8000\n    # hostPort: 8000\n    expose: true\n    exposedPort: 80\n    # The port protocol (TCP/UDP)\n    protocol: TCP\n    # Use nodeport if set. This is useful if you have configured Traefik in a\n    # LoadBalancer\n    # nodePort: 32080\n    # Port Redirections\n    # Added in 2.2, you can make permanent redirects via entrypoints.\n    # https://docs.traefik.io/routing/entrypoints/#redirection\n    # redirectTo: websecure\n  websecure:\n    port: 8443\n    # hostPort: 8443\n    expose: true\n    exposedPort: 443\n    # The port protocol (TCP/UDP)\n    protocol: TCP\n    # nodePort: 32443\n    # Set TLS at the entrypoint\n    # https://doc.traefik.io/traefik/routing/entrypoints/#tls\n    tls:\n      enabled: false\n      # this is the name of a TLSOption definition\n      options: \"\"\n      certResolver: \"\"\n      domains: []\n      # - main: example.com\n      #   sans:\n      #     - foo.example.com\n      #     - bar.example.com\n\n# TLS Options are created as TLSOption CRDs\n# https://doc.traefik.io/traefik/https/tls/#tls-options\n# Example:\n# tlsOptions:\n#   default:\n#     sniStrict: true\n#     preferServerCipherSuites: true\n#   foobar:\n#     curvePreferences:\n#       - CurveP521\n#       - CurveP384\ntlsOptions: {}\n\n# Options for the main traefik service, where the entrypoints traffic comes\n# from.\nservice:\n  enabled: true\n  type: LoadBalancer\n  # Additional annotations (e.g. for cloud provider specific config)\n  annotations: {}\n  # Additional service labels (e.g. for filtering Service by custom labels)\n  labels: {}\n  # Additional entries here will be added to the service spec. Cannot contains\n  # type, selector or ports entries.\n  spec: {}\n    # externalTrafficPolicy: Cluster\n    # loadBalancerIP: \"1.2.3.4\"\n    # clusterIP: \"2.3.4.5\"\n  loadBalancerSourceRanges: []\n    # - 192.168.0.1/32\n    # - 172.16.0.0/16\n  externalIPs: []\n    # - 1.2.3.4\n\n## Create HorizontalPodAutoscaler object.\n##\nautoscaling:\n  enabled: false\n#   minReplicas: 1\n#   maxReplicas: 10\n#   metrics:\n#   - type: Resource\n#     resource:\n#       name: cpu\n#       targetAverageUtilization: 60\n#   - type: Resource\n#     resource:\n#       name: memory\n#       targetAverageUtilization: 60\n\n# Enable persistence using Persistent Volume Claims\n# ref: http://kubernetes.io/docs/user-guide/persistent-volumes/\n# After the pvc has been mounted, add the configs into traefik by using the `additionalArguments` list below, eg:\n# additionalArguments:\n# - \"--certificatesresolvers.le.acme.storage=/data/acme.json\"\n# It will persist TLS certificates.\npersistence:\n  enabled: false\n  name: data\n#  existingClaim: \"\"\n  accessMode: ReadWriteOnce\n  size: 128Mi\n  # storageClass: \"\"\n  path: /data\n  annotations: {}\n  # subPath: \"\" # only mount a subpath of the Volume into the pod\n\n# If hostNetwork is true, runs traefik in the host network namespace\n# To prevent unschedulabel pods due to port collisions, if hostNetwork=true\n# and replicas>1, a pod anti-affinity is recommended and will be set if the\n# affinity is left as default.\nhostNetwork: false\n\n# Whether Role Based Access Control objects like roles and rolebindings should be created\nrbac:\n  enabled: true\n\n  # If set to false, installs ClusterRole and ClusterRoleBinding so Traefik can be used across namespaces.\n  # If set to true, installs namespace-specific Role and RoleBinding and requires provider configuration be set to that same namespace\n  namespaced: false\n\n# Enable to create a PodSecurityPolicy and assign it to the Service Account via RoleBinding or ClusterRoleBinding\npodSecurityPolicy:\n  enabled: false\n\n# The service account the pods will use to interact with the Kubernetes API\nserviceAccount:\n  # If set, an existing service account is used\n  # If not set, a service account is created automatically using the fullname template\n  name: \"\"\n\n# Additional serviceAccount annotations (e.g. for oidc authentication)\nserviceAccountAnnotations: {}\n\nresources: {}\n  # requests:\n  #   cpu: \"100m\"\n  #   memory: \"50Mi\"\n  # limits:\n  #   cpu: \"300m\"\n  #   memory: \"150Mi\"\naffinity: {}\n# # This example pod anti-affinity forces the scheduler to put traefik pods\n# # on nodes where no other traefik pods are scheduled.\n# # It should be used when hostNetwork: true to prevent port conflicts\n#   podAntiAffinity:\n#     requiredDuringSchedulingIgnoredDuringExecution:\n#     - labelSelector:\n#         matchExpressions:\n#         - key: app\n#           operator: In\n#           values:\n#           - {{ template \"traefik.name\" . }}\n#       topologyKey: failure-domain.beta.kubernetes.io/zone\nnodeSelector: {}\ntolerations: []\n\n# Pods can have priority.\n# Priority indicates the importance of a Pod relative to other Pods.\npriorityClassName: \"\"\n\n# Set the container security context\n# To run the container with ports below 1024 this will need to be adjust to run as root\nsecurityContext:\n  capabilities:\n    drop: [ALL]\n  readOnlyRootFilesystem: true\n  runAsGroup: 65532\n  runAsNonRoot: true\n  runAsUser: 65532\n\npodSecurityContext:\n  fsGroup: 65532\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_014__aws__traefik_kops_whoami_middleware/whoami.yaml",
    "content": "kind: Deployment\napiVersion: apps/v1\nmetadata:\n  namespace: default\n  name: whoami\n  labels:\n    app: whoami\n\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: whoami\n  template:\n    metadata:\n      labels:\n        app: whoami\n    spec:\n      containers:\n        - name: whoami\n          image: containous/whoami\n          ports:\n            - name: web\n              containerPort: 80\n---\n\napiVersion: v1\nkind: Service\nmetadata:\n  name: whoami\n\nspec:\n  ports:\n    - protocol: TCP\n      name: web\n      port: 80\n  selector:\n    app: whoami\n\n---\napiVersion: traefik.containo.us/v1alpha1\nkind: IngressRoute\nmetadata:\n  name: whoami-whoami\n  namespace: default\nspec:\n  entryPoints:\n    - web\n    - websecure\n  routes:\n    - match: PathPrefix(`/api/whoami-app-api`)\n      kind: Rule\n      services:\n        - name: whoami\n          port: 80\n      middlewares:\n        - name: test-stripprefix\n#          namespace: default\n\n\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_015__aws__lets_encrypt_kops_cluster/ReadMe.md",
    "content": "\n\n[Docs](https://medium.com/avmconsulting-blog/encrypting-the-certificate-for-kubernetes-lets-encrypt-805d2bf88b2a)\n\n[Docs](https://medium.com/flant-com/cert-manager-lets-encrypt-ssl-certs-for-kubernetes-7642e463bbce)\n\nCheck the latest release at [https://github.com/jetstack/cert-manager/releases](https://github.com/jetstack/cert-manager/releases)\n\n```bash\nkubectl apply --validate=false \\\n-f https://github.com/jetstack/cert-manager/releases/download/v1.1.1/cert-manager.yaml\n```\n\nCreate namespace `cert-manager` if not already exists\n\n```bash\n$ kubectl create ns cert-manager\n```\n\nAdd the Jetstack Helm repository and update your local Helm chart repo cache.\n\n```bash\n$ helm version                       \nversion.BuildInfo{Version:\"v3.5.2\", GitCommit:\"167aac70832d3a384f65f9745335e9fb40169dc2\", GitTreeState:\"dirty\", GoVersion:\"go1.15.7\"}\n\n$ helm repo add jetstack https://charts.jetstack.io\n\"jetstack\" has been added to your repositories\n\n$  helm repo update\nHang tight while we grab the latest from your chart repositories...\n...Successfully got an update from the \"jetstack\" chart repository\nUpdate Complete. ⎈Happy Helming!⎈\n```\n\n\nGet the cert-manager Helm chart (latest stable release version)\n\n```bash\n$ helm pull jetstack/cert-manager --version=1.1.1\n$ ls\nReadMe.md               cert-manager-v1.1.1.tgz\n$ tar -xvf cert-manager-v1.1.1.tgz \n```\n\nInstall the helm chart by creating the k8s files\n\n```bash\nhelm template mongo1 -f mongodb-values.yaml bitnami/mongodb > resources-db.yaml\n```\n\n```bash\n$ helm template cert-manager-name -f cert-manager/values.yaml cert-manager > k8s-resources.yaml\n\n$ kubectl apply -f k8s-resources.yaml                                                                                  \nserviceaccount/cert-manager-name-cainjector created\nserviceaccount/cert-manager-name created\nserviceaccount/cert-manager-name-webhook created\nclusterrole.rbac.authorization.k8s.io/cert-manager-name-cainjector created\nclusterrole.rbac.authorization.k8s.io/cert-manager-name-controller-issuers created\nclusterrole.rbac.authorization.k8s.io/cert-manager-name-controller-clusterissuers created\nclusterrole.rbac.authorization.k8s.io/cert-manager-name-controller-certificates created\nclusterrole.rbac.authorization.k8s.io/cert-manager-name-controller-orders created\nclusterrole.rbac.authorization.k8s.io/cert-manager-name-controller-challenges created\nclusterrole.rbac.authorization.k8s.io/cert-manager-name-controller-ingress-shim created\nclusterrole.rbac.authorization.k8s.io/cert-manager-name-view created\nclusterrole.rbac.authorization.k8s.io/cert-manager-name-edit created\nclusterrolebinding.rbac.authorization.k8s.io/cert-manager-name-cainjector created\nclusterrolebinding.rbac.authorization.k8s.io/cert-manager-name-controller-issuers created\nclusterrolebinding.rbac.authorization.k8s.io/cert-manager-name-controller-clusterissuers created\nclusterrolebinding.rbac.authorization.k8s.io/cert-manager-name-controller-certificates created\nclusterrolebinding.rbac.authorization.k8s.io/cert-manager-name-controller-orders created\nclusterrolebinding.rbac.authorization.k8s.io/cert-manager-name-controller-challenges created\nclusterrolebinding.rbac.authorization.k8s.io/cert-manager-name-controller-ingress-shim created\nrole.rbac.authorization.k8s.io/cert-manager-name-cainjector:leaderelection created\nrole.rbac.authorization.k8s.io/cert-manager-name:leaderelection created\nrole.rbac.authorization.k8s.io/cert-manager-name-webhook:dynamic-serving created\nrolebinding.rbac.authorization.k8s.io/cert-manager-name-cainjector:leaderelection created\nrolebinding.rbac.authorization.k8s.io/cert-manager-name:leaderelection created\nrolebinding.rbac.authorization.k8s.io/cert-manager-name-webhook:dynamic-serving created\nservice/cert-manager-name created\nservice/cert-manager-name-webhook created\ndeployment.apps/cert-manager-name-cainjector created\ndeployment.apps/cert-manager-name created\ndeployment.apps/cert-manager-name-webhook created\nmutatingwebhookconfiguration.admissionregistration.k8s.io/cert-manager-name-webhook created\nvalidatingwebhookconfiguration.admissionregistration.k8s.io/cert-manager-name-webhook created\n```\n\nNow verify the installation\n\n```bash\n$ kubectl get pods --namespace cert-manager\nNAME                                       READY   STATUS    RESTARTS   AGE\ncert-manager-68ff46b886-qxjns              1/1     Running   0          23m\ncert-manager-cainjector-7cdbb9c945-5wq9z   1/1     Running   0          23m\ncert-manager-webhook-67584ff488-rdphq      1/1     Running   0          23m\n```\n\nCreate whomai service\n\n```bash\n$ kubectl apply -f whoami.yaml \ndeployment.apps/whoami created\nservice/whoami created\n```\n\nCreate a ClusterIssuer resource for Let’s Encrypt certificates:\n\nApply the changes\n\n```bash\n$ kubectl apply -f cluster-issuer.yaml \nissuer.cert-manager.io/letsencrypt created\ncertificate.cert-manager.io/le-crt created\n\n$ kubectl get Issuer                        \nNAME          READY   AGE\nletsencrypt   True    57s\n\n$ kubectl get certificate   \nNAME     READY   SECRET       AGE\nle-crt   False   tls-secret   69s\n\n$ kubectl describe certificate le-crt\n.\n.\n  Normal  Issuing    3m30s  cert-manager  Issuing certificate as Secret does not exist\n  Normal  Generated  3m30s  cert-manager  Stored new private key in temporary Secret resource \"le-crt-4zbf6\"\n  Normal  Requested  3m30s  cert-manager  Created new CertificateRequest resource \"le-crt-wtz89\"\n\n```\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_015__aws__lets_encrypt_kops_cluster/cluster-issuer.yaml",
    "content": "#apiVersion: cert-manager.io/v1alpha2\n#kind: Issuer\n#metadata:\n#  name: letsencrypt-prod\n#spec:\n#  acme:\n#    server: \"https://acme-v02.api.letsencrypt.org/directory\"\n#    email: \"codeaprendiz@gmail.com\"\n#    privateKeySecretRef:\n#      name: letsencrypt-prod\n#    solvers:\n#      - http01:\n#          ingress:\n#            class: nginx\n\n---\napiVersion: cert-manager.io/v1alpha2\nkind: Issuer\nmetadata:\n  name: letsencrypt\nspec:\n  acme:\n    server: https://acme-staging-v02.api.letsencrypt.org/directory\n    privateKeySecretRef:\n      name: letsencrypt\n    solvers:\n      - http01:\n          ingress:\n            class: nginx\n---\napiVersion: cert-manager.io/v1alpha2\nkind: Certificate\nmetadata:\n  name: le-crt\nspec:\n  secretName: tls-secret\n  issuerRef:\n    kind: Issuer\n    name: letsencrypt\n  commonName: devopsk8.com\n  dnsNames:\n    - devopsk8.com"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_015__aws__lets_encrypt_kops_cluster/ingress.yaml",
    "content": "apiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  annotations:\n    certmanager.k8s.io/cluster-issuer: letsencrypt-prod\n    kubernetes.io/ingress.class: nginx\n  name: frontend\nspec:\n  rules:\n    -\n      host: test.devopsk8.com\n      http:\n        paths:\n          - pathType: Prefix\n            path: /\n            backend:\n              service:\n                name: whoami\n                port:\n                  number: 80\n  tls:\n    -\n      hosts:\n        - test.devopsk8.com\n      secretName: app-mydomain-com"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_015__aws__lets_encrypt_kops_cluster/k8s-resources.yaml",
    "content": "---\n# Source: cert-manager/templates/cainjector-serviceaccount.yaml\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: cert-manager-name-cainjector\n  namespace: \"default\"\n  labels:\n    app: cainjector\n    app.kubernetes.io/name: cainjector\n    app.kubernetes.io/instance: cert-manager-name\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: \"cainjector\"\n    helm.sh/chart: cert-manager-v1.1.1\n---\n# Source: cert-manager/templates/serviceaccount.yaml\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: cert-manager-name\n  namespace: \"default\"\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager-name\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: \"controller\"\n    helm.sh/chart: cert-manager-v1.1.1\n---\n# Source: cert-manager/templates/webhook-serviceaccount.yaml\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: cert-manager-name-webhook\n  namespace: \"default\"\n  labels:\n    app: webhook\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/instance: cert-manager-name\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: \"webhook\"\n    helm.sh/chart: cert-manager-v1.1.1\n---\n# Source: cert-manager/templates/cainjector-rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: cert-manager-name-cainjector\n  labels:\n    app: cainjector\n    app.kubernetes.io/name: cainjector\n    app.kubernetes.io/instance: cert-manager-name\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: \"cainjector\"\n    helm.sh/chart: cert-manager-v1.1.1\nrules:\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"certificates\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  - apiGroups: [\"\"]\n    resources: [\"secrets\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  - apiGroups: [\"\"]\n    resources: [\"events\"]\n    verbs: [\"get\", \"create\", \"update\", \"patch\"]\n  - apiGroups: [\"admissionregistration.k8s.io\"]\n    resources: [\"validatingwebhookconfigurations\", \"mutatingwebhookconfigurations\"]\n    verbs: [\"get\", \"list\", \"watch\", \"update\"]\n  - apiGroups: [\"apiregistration.k8s.io\"]\n    resources: [\"apiservices\"]\n    verbs: [\"get\", \"list\", \"watch\", \"update\"]\n  - apiGroups: [\"apiextensions.k8s.io\"]\n    resources: [\"customresourcedefinitions\"]\n    verbs: [\"get\", \"list\", \"watch\", \"update\"]\n  - apiGroups: [\"auditregistration.k8s.io\"]\n    resources: [\"auditsinks\"]\n    verbs: [\"get\", \"list\", \"watch\", \"update\"]\n---\n# Source: cert-manager/templates/rbac.yaml\n# Issuer controller role\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: cert-manager-name-controller-issuers\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager-name\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: \"controller\"\n    helm.sh/chart: cert-manager-v1.1.1\nrules:\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"issuers\", \"issuers/status\"]\n    verbs: [\"update\"]\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"issuers\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  - apiGroups: [\"\"]\n    resources: [\"secrets\"]\n    verbs: [\"get\", \"list\", \"watch\", \"create\", \"update\", \"delete\"]\n  - apiGroups: [\"\"]\n    resources: [\"events\"]\n    verbs: [\"create\", \"patch\"]\n---\n# Source: cert-manager/templates/rbac.yaml\n# ClusterIssuer controller role\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: cert-manager-name-controller-clusterissuers\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager-name\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: \"controller\"\n    helm.sh/chart: cert-manager-v1.1.1\nrules:\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"clusterissuers\", \"clusterissuers/status\"]\n    verbs: [\"update\"]\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"clusterissuers\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  - apiGroups: [\"\"]\n    resources: [\"secrets\"]\n    verbs: [\"get\", \"list\", \"watch\", \"create\", \"update\", \"delete\"]\n  - apiGroups: [\"\"]\n    resources: [\"events\"]\n    verbs: [\"create\", \"patch\"]\n---\n# Source: cert-manager/templates/rbac.yaml\n# Certificates controller role\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: cert-manager-name-controller-certificates\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager-name\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: \"controller\"\n    helm.sh/chart: cert-manager-v1.1.1\nrules:\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"certificates\", \"certificates/status\", \"certificaterequests\", \"certificaterequests/status\"]\n    verbs: [\"update\"]\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"certificates\", \"certificaterequests\", \"clusterissuers\", \"issuers\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  # We require these rules to support users with the OwnerReferencesPermissionEnforcement\n  # admission controller enabled:\n  # https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#ownerreferencespermissionenforcement\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"certificates/finalizers\", \"certificaterequests/finalizers\"]\n    verbs: [\"update\"]\n  - apiGroups: [\"acme.cert-manager.io\"]\n    resources: [\"orders\"]\n    verbs: [\"create\", \"delete\", \"get\", \"list\", \"watch\"]\n  - apiGroups: [\"\"]\n    resources: [\"secrets\"]\n    verbs: [\"get\", \"list\", \"watch\", \"create\", \"update\", \"delete\"]\n  - apiGroups: [\"\"]\n    resources: [\"events\"]\n    verbs: [\"create\", \"patch\"]\n---\n# Source: cert-manager/templates/rbac.yaml\n# Orders controller role\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: cert-manager-name-controller-orders\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager-name\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: \"controller\"\n    helm.sh/chart: cert-manager-v1.1.1\nrules:\n  - apiGroups: [\"acme.cert-manager.io\"]\n    resources: [\"orders\", \"orders/status\"]\n    verbs: [\"update\"]\n  - apiGroups: [\"acme.cert-manager.io\"]\n    resources: [\"orders\", \"challenges\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"clusterissuers\", \"issuers\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  - apiGroups: [\"acme.cert-manager.io\"]\n    resources: [\"challenges\"]\n    verbs: [\"create\", \"delete\"]\n  # We require these rules to support users with the OwnerReferencesPermissionEnforcement\n  # admission controller enabled:\n  # https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#ownerreferencespermissionenforcement\n  - apiGroups: [\"acme.cert-manager.io\"]\n    resources: [\"orders/finalizers\"]\n    verbs: [\"update\"]\n  - apiGroups: [\"\"]\n    resources: [\"secrets\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  - apiGroups: [\"\"]\n    resources: [\"events\"]\n    verbs: [\"create\", \"patch\"]\n---\n# Source: cert-manager/templates/rbac.yaml\n# Challenges controller role\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: cert-manager-name-controller-challenges\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager-name\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: \"controller\"\n    helm.sh/chart: cert-manager-v1.1.1\nrules:\n  # Use to update challenge resource status\n  - apiGroups: [\"acme.cert-manager.io\"]\n    resources: [\"challenges\", \"challenges/status\"]\n    verbs: [\"update\"]\n  # Used to watch challenge resources\n  - apiGroups: [\"acme.cert-manager.io\"]\n    resources: [\"challenges\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  # Used to watch challenges, issuer and clusterissuer resources\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"issuers\", \"clusterissuers\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  # Need to be able to retrieve ACME account private key to complete challenges\n  - apiGroups: [\"\"]\n    resources: [\"secrets\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  # Used to create events\n  - apiGroups: [\"\"]\n    resources: [\"events\"]\n    verbs: [\"create\", \"patch\"]\n  # HTTP01 rules\n  - apiGroups: [\"\"]\n    resources: [\"pods\", \"services\"]\n    verbs: [\"get\", \"list\", \"watch\", \"create\", \"delete\"]\n  - apiGroups: [\"extensions\"]\n    resources: [\"ingresses\"]\n    verbs: [\"get\", \"list\", \"watch\", \"create\", \"delete\", \"update\"]\n  # We require the ability to specify a custom hostname when we are creating\n  # new ingress resources.\n  # See: https://github.com/openshift/origin/blob/21f191775636f9acadb44fa42beeb4f75b255532/pkg/route/apiserver/admission/ingress_admission.go#L84-L148\n  - apiGroups: [\"route.openshift.io\"]\n    resources: [\"routes/custom-host\"]\n    verbs: [\"create\"]\n  # We require these rules to support users with the OwnerReferencesPermissionEnforcement\n  # admission controller enabled:\n  # https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#ownerreferencespermissionenforcement\n  - apiGroups: [\"acme.cert-manager.io\"]\n    resources: [\"challenges/finalizers\"]\n    verbs: [\"update\"]\n  # DNS01 rules (duplicated above)\n  - apiGroups: [\"\"]\n    resources: [\"secrets\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n---\n# Source: cert-manager/templates/rbac.yaml\n# ingress-shim controller role\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: cert-manager-name-controller-ingress-shim\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager-name\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: \"controller\"\n    helm.sh/chart: cert-manager-v1.1.1\nrules:\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"certificates\", \"certificaterequests\"]\n    verbs: [\"create\", \"update\", \"delete\"]\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"certificates\", \"certificaterequests\", \"issuers\", \"clusterissuers\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  - apiGroups: [\"extensions\"]\n    resources: [\"ingresses\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  # We require these rules to support users with the OwnerReferencesPermissionEnforcement\n  # admission controller enabled:\n  # https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#ownerreferencespermissionenforcement\n  - apiGroups: [\"extensions\"]\n    resources: [\"ingresses/finalizers\"]\n    verbs: [\"update\"]\n  - apiGroups: [\"\"]\n    resources: [\"events\"]\n    verbs: [\"create\", \"patch\"]\n---\n# Source: cert-manager/templates/rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: cert-manager-name-view\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager-name\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: \"controller\"\n    helm.sh/chart: cert-manager-v1.1.1\n    rbac.authorization.k8s.io/aggregate-to-view: \"true\"\n    rbac.authorization.k8s.io/aggregate-to-edit: \"true\"\n    rbac.authorization.k8s.io/aggregate-to-admin: \"true\"\nrules:\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"certificates\", \"certificaterequests\", \"issuers\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  - apiGroups: [\"acme.cert-manager.io\"]\n    resources: [\"challenges\", \"orders\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n---\n# Source: cert-manager/templates/rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: cert-manager-name-edit\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager-name\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: \"controller\"\n    helm.sh/chart: cert-manager-v1.1.1\n    rbac.authorization.k8s.io/aggregate-to-edit: \"true\"\n    rbac.authorization.k8s.io/aggregate-to-admin: \"true\"\nrules:\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"certificates\", \"certificaterequests\", \"issuers\"]\n    verbs: [\"create\", \"delete\", \"deletecollection\", \"patch\", \"update\"]\n  - apiGroups: [\"acme.cert-manager.io\"]\n    resources: [\"challenges\", \"orders\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n---\n# Source: cert-manager/templates/cainjector-rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: cert-manager-name-cainjector\n  labels:\n    app: cainjector\n    app.kubernetes.io/name: cainjector\n    app.kubernetes.io/instance: cert-manager-name\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: \"cainjector\"\n    helm.sh/chart: cert-manager-v1.1.1\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-name-cainjector\nsubjects:\n  - name: cert-manager-name-cainjector\n    namespace: \"default\"\n    kind: ServiceAccount\n---\n# Source: cert-manager/templates/rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: cert-manager-name-controller-issuers\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager-name\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: \"controller\"\n    helm.sh/chart: cert-manager-v1.1.1\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-name-controller-issuers\nsubjects:\n  - name: cert-manager-name\n    namespace: \"default\"\n    kind: ServiceAccount\n---\n# Source: cert-manager/templates/rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: cert-manager-name-controller-clusterissuers\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager-name\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: \"controller\"\n    helm.sh/chart: cert-manager-v1.1.1\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-name-controller-clusterissuers\nsubjects:\n  - name: cert-manager-name\n    namespace: \"default\"\n    kind: ServiceAccount\n---\n# Source: cert-manager/templates/rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: cert-manager-name-controller-certificates\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager-name\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: \"controller\"\n    helm.sh/chart: cert-manager-v1.1.1\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-name-controller-certificates\nsubjects:\n  - name: cert-manager-name\n    namespace: \"default\"\n    kind: ServiceAccount\n---\n# Source: cert-manager/templates/rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: cert-manager-name-controller-orders\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager-name\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: \"controller\"\n    helm.sh/chart: cert-manager-v1.1.1\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-name-controller-orders\nsubjects:\n  - name: cert-manager-name\n    namespace: \"default\"\n    kind: ServiceAccount\n---\n# Source: cert-manager/templates/rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: cert-manager-name-controller-challenges\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager-name\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: \"controller\"\n    helm.sh/chart: cert-manager-v1.1.1\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-name-controller-challenges\nsubjects:\n  - name: cert-manager-name\n    namespace: \"default\"\n    kind: ServiceAccount\n---\n# Source: cert-manager/templates/rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: cert-manager-name-controller-ingress-shim\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager-name\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: \"controller\"\n    helm.sh/chart: cert-manager-v1.1.1\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-name-controller-ingress-shim\nsubjects:\n  - name: cert-manager-name\n    namespace: \"default\"\n    kind: ServiceAccount\n---\n# Source: cert-manager/templates/cainjector-rbac.yaml\n# leader election rules\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  name: cert-manager-name-cainjector:leaderelection\n  namespace: kube-system\n  labels:\n    app: cainjector\n    app.kubernetes.io/name: cainjector\n    app.kubernetes.io/instance: cert-manager-name\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: \"cainjector\"\n    helm.sh/chart: cert-manager-v1.1.1\nrules:\n  # Used for leader election by the controller\n  # cert-manager-cainjector-leader-election is used by the CertificateBased injector controller\n  #   see cmd/cainjector/start.go#L113\n  # cert-manager-cainjector-leader-election-core is used by the SecretBased injector controller\n  #   see cmd/cainjector/start.go#L137\n  - apiGroups: [\"\"]\n    resources: [\"configmaps\"]\n    resourceNames: [\"cert-manager-cainjector-leader-election\", \"cert-manager-cainjector-leader-election-core\"]\n    verbs: [\"get\", \"update\", \"patch\"]\n  - apiGroups: [\"\"]\n    resources: [\"configmaps\"]\n    verbs: [\"create\"]\n---\n# Source: cert-manager/templates/rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  name: cert-manager-name:leaderelection\n  namespace: kube-system\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager-name\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: \"controller\"\n    helm.sh/chart: cert-manager-v1.1.1\nrules:\n  # Used for leader election by the controller\n  - apiGroups: [\"\"]\n    resources: [\"configmaps\"]\n    resourceNames: [\"cert-manager-controller\"]\n    verbs: [\"get\", \"update\", \"patch\"]\n  - apiGroups: [\"\"]\n    resources: [\"configmaps\"]\n    verbs: [\"create\"]\n---\n# Source: cert-manager/templates/webhook-rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  name: cert-manager-name-webhook:dynamic-serving\n  namespace: \"default\"\n  labels:\n    app: webhook\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/instance: cert-manager-name\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: \"webhook\"\n    helm.sh/chart: cert-manager-v1.1.1\nrules:\n- apiGroups: [\"\"]\n  resources: [\"secrets\"]\n  resourceNames:\n  - 'cert-manager-name-webhook-ca'\n  verbs: [\"get\", \"list\", \"watch\", \"update\"]\n# It's not possible to grant CREATE permission on a single resourceName.\n- apiGroups: [\"\"]\n  resources: [\"secrets\"]\n  verbs: [\"create\"]\n---\n# Source: cert-manager/templates/cainjector-rbac.yaml\n# grant cert-manager permission to manage the leaderelection configmap in the\n# leader election namespace\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  name: cert-manager-name-cainjector:leaderelection\n  namespace: kube-system\n  labels:\n    app: cainjector\n    app.kubernetes.io/name: cainjector\n    app.kubernetes.io/instance: cert-manager-name\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: \"cainjector\"\n    helm.sh/chart: cert-manager-v1.1.1\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: cert-manager-name-cainjector:leaderelection\nsubjects:\n  - kind: ServiceAccount\n    name: cert-manager-name-cainjector\n    namespace: default\n---\n# Source: cert-manager/templates/rbac.yaml\n# grant cert-manager permission to manage the leaderelection configmap in the\n# leader election namespace\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  name: cert-manager-name:leaderelection\n  namespace: kube-system\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager-name\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: \"controller\"\n    helm.sh/chart: cert-manager-v1.1.1\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: cert-manager-name:leaderelection\nsubjects:\n  - apiGroup: \"\"\n    kind: ServiceAccount\n    name: cert-manager-name\n    namespace: default\n---\n# Source: cert-manager/templates/webhook-rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  name: cert-manager-name-webhook:dynamic-serving\n  namespace: \"default\"\n  labels:\n    app: webhook\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/instance: cert-manager-name\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: \"webhook\"\n    helm.sh/chart: cert-manager-v1.1.1\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: cert-manager-name-webhook:dynamic-serving\nsubjects:\n- apiGroup: \"\"\n  kind: ServiceAccount\n  name: cert-manager-name-webhook\n  namespace: default\n---\n# Source: cert-manager/templates/service.yaml\napiVersion: v1\nkind: Service\nmetadata:\n  name: cert-manager-name\n  namespace: \"default\"\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager-name\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: \"controller\"\n    helm.sh/chart: cert-manager-v1.1.1\nspec:\n  type: ClusterIP\n  ports:\n    - protocol: TCP\n      port: 9402\n      targetPort: 9402\n  selector:\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager-name\n    app.kubernetes.io/component: \"controller\"\n---\n# Source: cert-manager/templates/webhook-service.yaml\napiVersion: v1\nkind: Service\nmetadata:\n  name: cert-manager-name-webhook\n  namespace: \"default\"\n  labels:\n    app: webhook\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/instance: cert-manager-name\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: \"webhook\"\n    helm.sh/chart: cert-manager-v1.1.1\nspec:\n  type: ClusterIP\n  ports:\n  - name: https\n    port: 443\n    targetPort: 10250\n  selector:\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/instance: cert-manager-name\n    app.kubernetes.io/component: \"webhook\"\n---\n# Source: cert-manager/templates/cainjector-deployment.yaml\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: cert-manager-name-cainjector\n  namespace: \"default\"\n  labels:\n    app: cainjector\n    app.kubernetes.io/name: cainjector\n    app.kubernetes.io/instance: cert-manager-name\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: \"cainjector\"\n    helm.sh/chart: cert-manager-v1.1.1\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: cainjector\n      app.kubernetes.io/instance: cert-manager-name\n      app.kubernetes.io/component: \"cainjector\"\n  template:\n    metadata:\n      labels:\n        app: cainjector\n        app.kubernetes.io/name: cainjector\n        app.kubernetes.io/instance: cert-manager-name\n        app.kubernetes.io/managed-by: Helm\n        app.kubernetes.io/component: \"cainjector\"\n        helm.sh/chart: cert-manager-v1.1.1\n    spec:\n      serviceAccountName: cert-manager-name-cainjector\n      containers:\n        - name: cert-manager\n          image: \"quay.io/jetstack/cert-manager-cainjector:v1.1.1\"\n          imagePullPolicy: IfNotPresent\n          args:\n          - --v=2\n          - --leader-election-namespace=kube-system\n          env:\n          - name: POD_NAMESPACE\n            valueFrom:\n              fieldRef:\n                fieldPath: metadata.namespace\n          resources:\n            {}\n---\n# Source: cert-manager/templates/deployment.yaml\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: cert-manager-name\n  namespace: \"default\"\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager-name\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: \"controller\"\n    helm.sh/chart: cert-manager-v1.1.1\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: cert-manager\n      app.kubernetes.io/instance: cert-manager-name\n      app.kubernetes.io/component: \"controller\"\n  template:\n    metadata:\n      labels:\n        app: cert-manager\n        app.kubernetes.io/name: cert-manager\n        app.kubernetes.io/instance: cert-manager-name\n        app.kubernetes.io/component: \"controller\"\n        app.kubernetes.io/managed-by: Helm\n        helm.sh/chart: cert-manager-v1.1.1\n      annotations:\n        prometheus.io/path: \"/metrics\"\n        prometheus.io/scrape: 'true'\n        prometheus.io/port: '9402'\n    spec:\n      serviceAccountName: cert-manager-name\n      containers:\n        - name: cert-manager\n          image: \"quay.io/jetstack/cert-manager-controller:v1.1.1\"\n          imagePullPolicy: IfNotPresent\n          args:\n          - --v=2\n          - --cluster-resource-namespace=$(POD_NAMESPACE)\n          - --leader-election-namespace=kube-system\n          ports:\n          - containerPort: 9402\n            protocol: TCP\n          env:\n          - name: POD_NAMESPACE\n            valueFrom:\n              fieldRef:\n                fieldPath: metadata.namespace\n          resources:\n            {}\n---\n# Source: cert-manager/templates/webhook-deployment.yaml\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: cert-manager-name-webhook\n  namespace: \"default\"\n  labels:\n    app: webhook\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/instance: cert-manager-name\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: \"webhook\"\n    helm.sh/chart: cert-manager-v1.1.1\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: webhook\n      app.kubernetes.io/instance: cert-manager-name\n      app.kubernetes.io/component: \"webhook\"\n  template:\n    metadata:\n      labels:\n        app: webhook\n        app.kubernetes.io/name: webhook\n        app.kubernetes.io/instance: cert-manager-name\n        app.kubernetes.io/managed-by: Helm\n        app.kubernetes.io/component: \"webhook\"\n        helm.sh/chart: cert-manager-v1.1.1\n    spec:\n      serviceAccountName: cert-manager-name-webhook\n      containers:\n        - name: cert-manager\n          image: \"quay.io/jetstack/cert-manager-webhook:v1.1.1\"\n          imagePullPolicy: IfNotPresent\n          args:\n          - --v=2\n          - --secure-port=10250\n          - --dynamic-serving-ca-secret-namespace=$(POD_NAMESPACE)\n          - --dynamic-serving-ca-secret-name=cert-manager-name-webhook-ca\n          - --dynamic-serving-dns-names=cert-manager-name-webhook,cert-manager-name-webhook.default,cert-manager-name-webhook.default.svc\n          ports:\n          - name: https\n            containerPort: 10250\n          livenessProbe:\n            httpGet:\n              path: /livez\n              port: 6080\n              scheme: HTTP\n            initialDelaySeconds: 60\n            periodSeconds: 10\n            timeoutSeconds: 1\n            successThreshold: 1\n            failureThreshold: 3\n          readinessProbe:\n            httpGet:\n              path: /healthz\n              port: 6080\n              scheme: HTTP\n            initialDelaySeconds: 5\n            periodSeconds: 5\n            timeoutSeconds: 1\n            successThreshold: 1\n            failureThreshold: 3\n          env:\n          - name: POD_NAMESPACE\n            valueFrom:\n              fieldRef:\n                fieldPath: metadata.namespace\n          resources:\n            {}\n---\n# Source: cert-manager/templates/webhook-mutating-webhook.yaml\napiVersion: admissionregistration.k8s.io/v1\nkind: MutatingWebhookConfiguration\nmetadata:\n  name: cert-manager-name-webhook\n  labels:\n    app: webhook\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/instance: cert-manager-name\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: \"webhook\"\n    helm.sh/chart: cert-manager-v1.1.1\n  annotations:\n    cert-manager.io/inject-ca-from-secret: \"default/cert-manager-name-webhook-ca\"\nwebhooks:\n  - name: webhook.cert-manager.io\n    rules:\n      - apiGroups:\n          - \"cert-manager.io\"\n          - \"acme.cert-manager.io\"\n        apiVersions:\n          - \"*\"\n        operations:\n          - CREATE\n          - UPDATE\n        resources:\n          - \"*/*\"\n    admissionReviewVersions: [\"v1\", \"v1beta1\"]\n    timeoutSeconds: 10\n    failurePolicy: Fail\n    # Only include 'sideEffects' field in Kubernetes 1.12+\n    sideEffects: None\n    clientConfig:\n      service:\n        name: cert-manager-name-webhook\n        namespace: \"default\"\n        path: /mutate\n---\n# Source: cert-manager/templates/webhook-validating-webhook.yaml\napiVersion: admissionregistration.k8s.io/v1\nkind: ValidatingWebhookConfiguration\nmetadata:\n  name: cert-manager-name-webhook\n  labels:\n    app: webhook\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/instance: cert-manager-name\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: \"webhook\"\n    helm.sh/chart: cert-manager-v1.1.1\n  annotations:\n    cert-manager.io/inject-ca-from-secret: \"default/cert-manager-name-webhook-ca\"\nwebhooks:\n  - name: webhook.cert-manager.io\n    namespaceSelector:\n      matchExpressions:\n      - key: \"cert-manager.io/disable-validation\"\n        operator: \"NotIn\"\n        values:\n        - \"true\"\n      - key: \"name\"\n        operator: \"NotIn\"\n        values:\n        - default\n    rules:\n      - apiGroups:\n          - \"cert-manager.io\"\n          - \"acme.cert-manager.io\"\n        apiVersions:\n          - \"*\"\n        operations:\n          - CREATE\n          - UPDATE\n        resources:\n          - \"*/*\"\n    admissionReviewVersions: [\"v1\", \"v1beta1\"]\n    timeoutSeconds: 10\n    failurePolicy: Fail\n    # Only include 'sideEffects' field in Kubernetes 1.12+\n    sideEffects: None\n    clientConfig:\n      service:\n        name: cert-manager-name-webhook\n        namespace: \"default\"\n        path: /validate\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_015__aws__lets_encrypt_kops_cluster/whoami.yaml",
    "content": "# https://doc.traefik.io/traefik-enterprise/v2.0/installing/kubernetes/\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: whoami\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: whoami\n  template:\n    metadata:\n      labels:\n        app: whoami\n    spec:\n      containers:\n        - name: whoami\n          image: containous/whoami:v1.4.0\n---\napiVersion: v1\nkind: Service\nmetadata:\n  name: whoami\n  labels:\n    app: whoami\nspec:\n  type: ClusterIP\n  ports:\n    - port: 80\n      name: whoami\n  selector:\n    app: whoami"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_016__aws__k8s_cluster_using_kops/ReadMe.md",
    "content": "### Create k8s cluster using kops\n\n[production-environment/tools/kops](https://kubernetes.io/docs/setup/production-environment/tools/kops/)\n\n[getting_started/install](https://kops.sigs.k8s.io/getting_started/install/)\n\n\n#### Pre-requisite\n\nYou should own a domain for example in this case I own `devopsk8.com`\n\nThis should create a default hosted zone as well with Hosted-Zone-ID=XXXXXXXX\n\n```bash\n$ dig ns devopsk8.com | egrep \"ANSWER SECTION\" -A 4\n;; ANSWER SECTION:\ndevopsk8.com.           172532  IN      NS      ns-945.awsdns-54.net.\ndevopsk8.com.           172532  IN      NS      ns-1991.awsdns-56.co.uk.\ndevopsk8.com.           172532  IN      NS      ns-157.awsdns-19.com.\ndevopsk8.com.           172532  IN      NS      ns-1442.awsdns-52.org.\n\n$ dig soa devopsk8.com | egrep \"ANSWER SECTION\" -A 2\n;; ANSWER SECTION:\ndevopsk8.com.           820     IN      SOA     ns-157.awsdns-19.com. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 86400\n```\n\n\n- Install binary\n\n```bash\n$ brew update && brew install kops\n\n$ kops version            \nVersion 1.19.1\n\n```\n\n\n#### Set IAM User\n\n```bash\nAWS_ACCESS_KEY_ID=xxxxxxxxxxxxxxxxx\nAWS_SECRET_ACCESS_KEY=xxxxxxxxxxxxxxx\n```\n\n\n\n- Create the IAM role which gives the keys\n\n```bash\naws configure\n```\n\n\n- Create the bucket \n\n```bash\n$ bucket_name=k8-kops-stage-test\n```\n\n```bash\n$ aws s3api create-bucket --bucket ${bucket_name} --region us-east-1  \n{\n    \"Location\": \"/k8-kops-stage-test\"\n}\n```\n\n- Enable versioning\n\n```bash\n$ aws s3api put-bucket-versioning --bucket ${bucket_name} --versioning-configuration Status=Enabled \n```\n\n\n\n- Create the cluster\n\n```bash\n$ export KOPS_CLUSTER_NAME=k8.devopsk8.com     \n$ export KOPS_STATE_STORE=s3://${bucket_name}\n$ kops create cluster --node-count=1 --node-size=c5.2xlarge --master-count=1 --master-size=c5.xlarge --zones=eu-west-1a --name=${KOPS_CLUSTER_NAME} --yes\n.\n.\nI0320 14:13:03.437182   44597 create_cluster.go:713] Using SSH public key: /Users/ankitsinghrathi/.ssh/id_rsa.pub\n.\n.\nkops has set your kubectl context to k8.devopsk8.com\n\nCluster is starting.  It should be ready in a few minutes.\n\nSuggestions:\n * validate cluster: kops validate cluster --wait 10m\n * list nodes: kubectl get nodes --show-labels\n * ssh to the master: ssh -i ~/.ssh/id_rsa ubuntu@api.k8.devopsk8.com\n * the ubuntu user is specific to Ubuntu. If not using Ubuntu please use the appropriate user based on your OS.\n * read about installing addons at: https://kops.sigs.k8s.io/operations/addons.\n```\n\n\n- Validate the cluster\n\n```bash\nkops validate cluster --wait 10m\n.\n.\n\nW0320 14:18:53.164348   44767 validate_cluster.go:173] (will retry): unexpected error during validation: unable to resolve Kubernetes cluster API URL dns: lookup api.k8.devopsk8.com: no such host\nINSTANCE GROUPS\nNAME                    ROLE    MACHINETYPE     MIN     MAX     SUBNETS\nmaster-eu-west-1a       Master  c5.xlarge       1       1       eu-west-1a\nnodes-eu-west-1a        Node    c5.2xlarge      1       1       eu-west-1a\n\nNODE STATUS\nNAME                                            ROLE    READY\nip-172-20-54-246.eu-west-1.compute.internal     master  True\nip-172-20-55-44.eu-west-1.compute.internal      node    True\n\nYour cluster k8.devopsk8.com is ready\n```\n\n- Delete the cluster\n\n```bash\nkops delete cluster --name ${KOPS_CLUSTER_NAME} --yes\n```\n\n- Export a kubeconfig with admin priviledges, (Note this would have a TTL)\n\n```bash\n$ kops export kubecfg --admin --kubeconfig ~/workspace/kubeconfig --state=s3://${bucket_name}\n```\n\n\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_017__aws__updating_a_kops_cluster/ReadMe.md",
    "content": "### kops\n\n- The objective is to udpate the cluster resources of KOPS K8S cluster\n\n```bash\n# validating cluster without setting environment variables\nexport KUBECONFIG=~/workspace/kops/_kube/dev/kubeconfig\nAWS_ACCESS_KEY_ID=<aws_access_key> AWS_SECRET_ACCESS_KEY=<aws_secret_key> kops validate cluster --wait 10m --state=\"s3://my-kops-bucket-v1\" --name=k8.mydomain.com\n\n# creating cluster\n\n# Ensure that the bucket name is unique\nbucket_name=devops-test-company\nexport AWS_SECRET_KEY=<aws_secret_key>\nexport AWS_ACCESS_KEY=<aws_access_key>\naws s3api create-bucket --bucket ${bucket_name} --region us-east-1\naws s3api put-bucket-versioning --bucket ${bucket_name} --versioning-configuration Status=Enabled\nexport KOPS_CLUSTER_NAME=k8.mydomain.com\nexport KOPS_STATE_STORE=s3://${bucket_name}\nkops create cluster --node-count=1 --node-size=t3.medium --master-count=1 --master-size=t3.medium --zones=us-east-1a --name=${KOPS_CLUSTER_NAME} --yes\nkops validate cluster --wait 10m\n\n# updating instance size\nkops get instancegroups\n\n# edit the size of instance group and save the file\nkops edit ig nodes-us-east-1a\nkops get instancegroups\nkops update cluster --name=${KOPS_CLUSTER_NAME}\nkops update cluster --name=${KOPS_CLUSTER_NAME} --yes\nkops rolling-update cluster --name=${KOPS_CLUSTER_NAME}\nkops rolling-update cluster --name=${KOPS_CLUSTER_NAME} --yes\nkops get instancegroups\n\n# updating the number of instances\nkops edit ig nodes-us-east-1a\n\n# edit the minSize and maxSize\nkops get instancegroups      \nkops update cluster --name=${KOPS_CLUSTER_NAME}\nkops update cluster --name=${KOPS_CLUSTER_NAME} --yes\n```\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_018_aws__kong_ingress_on_eks/ReadMe.md",
    "content": "\n[helm kong](https://github.com/Kong/charts)\n\n- Pull kong repo to local\n\n```bash\n$ helm pull kong/kong                                                                           \n$ tar -xvf kong-2.3.0.tgz\n$ rm -rf kong-2.3.0.tgz \n```\n\n- Install kong\n\n```bash\n$ helm upgrade --install -f values.yaml --set ingressController.installCRDs=false kong-release .\n$ kubectl get svc                  \nNAME                      TYPE           CLUSTER-IP       EXTERNAL-IP                                                               PORT(S)                      AGE\nkong-release-kong-proxy   LoadBalancer   172.20.12.77     bf3ad6d307c3858239565d757ae733636-111947221.us-east-1.elb.amazonaws.com   80:30791/TCP,443:32126/TCP   20h\n```\n\n- Testing basic validations\n\n```bash\n$ curl -i bf3ad6d307c3858239565d757ae733636-111947221.us-east-1.elb.amazonaws.com:80\nHTTP/1.1 404 Not Found\nDate: Sat, 11 Sep 2021 08:44:32 GMT\nContent-Type: application/json; charset=utf-8\nConnection: keep-alive\nContent-Length: 48\nX-Kong-Response-Latency: 1\nServer: kong/2.5.0\n\n{\"message\":\"no Route matched with those values\"}%\n```\n\n- Following the getting started [guide](https://docs.konghq.com/kubernetes-ingress-controller/1.3.x/guides/getting-started/)\n\n```bash\n$ kubectl apply -f dep.yaml,svc.yaml\n```\n\n- Create an Ingress rule to proxy the echo-server created previously:\n\n```bash\n$ kubectl apply -f ingress.yaml     \ningress.extensions/demo configured\n\n$ curl -i bf3ad6d307c3858239565d757ae733636-111947221.us-east-1.elb.amazonaws.com:80/foo\nHTTP/1.1 200 OK\nContent-Type: text/plain; charset=UTF-8\nTransfer-Encoding: chunked\nConnection: keep-alive\nRateLimit-Reset: 44\nX-RateLimit-Limit-Minute: 5\nX-RateLimit-Remaining-Minute: 4\nRateLimit-Limit: 5\nRateLimit-Remaining: 4\nDate: Sat, 11 Sep 2021 08:58:16 GMT\nServer: echoserver\nX-Kong-Upstream-Latency: 0\nX-Kong-Proxy-Latency: 1\nVia: kong/2.5.0\n\n\n\nHostname: echo-5fc5b5bc84-sf7pq\n\nPod Information:\n        node name:      ip-172-0-2-39.us-east-1.compute.internal\n        pod name:       echo-5fc5b5bc84-sf7pq\n        pod namespace:  default\n        pod IP: 172.0.2.144\n\nServer values:\n        server_version=nginx: 1.12.2 - lua: 1720172\n\nRequest Information:\n        client_address=172.0.2.74\n        method=GET\n        real path=/foo\n        query=\n        request_version=1.1\n        request_scheme=http\n        request_uri=http://bf3ad6d307c3858239565d757ae733636-111947221.us-east-1.elb.amazonaws.com:8080/foo\n\nRequest Headers:\n        accept=*/*  \n        connection=keep-alive  \n        host=bf3ad6d307c3858239565d757ae733636-111947221.us-east-1.elb.amazonaws.com  \n        user-agent=curl/7.64.1  \n        x-forwarded-for=172.0.1.137  \n        x-forwarded-host=bf3ad6d307c3858239565d757ae733636-111947221.us-east-1.elb.amazonaws.com  \n        x-forwarded-path=/foo  \n        x-forwarded-port=80  \n        x-forwarded-proto=http  \n        x-real-ip=172.0.1.137  \n\nRequest Body:\n        -no body in request-\n\n```\n\n- Using plugins\n\n```bash\n$ kubectl apply -f plugin.yaml \n```\n\n- Create new ingress resource which uses this plugin. \n  The my-request-id can be seen in the request received by echo-server. It is injected by Kong as the request matches one of the Ingress rules defined in demo-example-com resource.\n\n```bash\n$ kubectl apply -f ingress-with-plugin.yaml          \n\n$ curl -i bf3ad6d307c3858239565d757ae733636-111947221.us-east-1.elb.amazonaws.com:80/bar/sample\nHTTP/1.1 404 Not Found\nDate: Sat, 11 Sep 2021 09:17:09 GMT\nContent-Type: application/json; charset=utf-8\nConnection: keep-alive\nContent-Length: 48\nX-Kong-Response-Latency: 0\nServer: kong/2.5.0\n\n{\"message\":\"no Route matched with those values\"}\n\n$ curl -i -H \"Host: example.com\" bf3ad6d307c3858239565d757ae733636-111947221.us-east-1.elb.amazonaws.com:80/bar/sample\nHTTP/1.1 200 OK\nContent-Type: text/plain; charset=UTF-8\nTransfer-Encoding: chunked\nConnection: keep-alive\nRateLimit-Reset: 33\nX-RateLimit-Limit-Minute: 5\nX-RateLimit-Remaining-Minute: 4\nRateLimit-Limit: 5\nRateLimit-Remaining: 4\nDate: Sat, 11 Sep 2021 09:17:27 GMT\nServer: echoserver\nX-Kong-Upstream-Latency: 0\nX-Kong-Proxy-Latency: 1\nVia: kong/2.5.0\n\n\n\nHostname: echo-5fc5b5bc84-sf7pq\n\nPod Information:\n        node name:      ip-172-0-2-39.us-east-1.compute.internal\n        pod name:       echo-5fc5b5bc84-sf7pq\n        pod namespace:  default\n        pod IP: 172.0.2.144\n\nServer values:\n        server_version=nginx: 1.12.2 - lua: 1720172\n\nRequest Information:\n        client_address=172.0.2.74\n        method=GET\n        real path=/bar/sample\n        query=\n        request_version=1.1\n        request_scheme=http\n        request_uri=http://example.com:8080/bar/sample\n\nRequest Headers:\n        accept=*/*  \n        connection=keep-alive  \n        host=example.com  \n        my-request-id=94495283-19b7-4624-b4a7-becf14ecfd92#1  \n        user-agent=curl/7.64.1  \n        x-forwarded-for=172.0.2.39  \n        x-forwarded-host=example.com  \n        x-forwarded-path=/bar/sample  \n        x-forwarded-port=80  \n        x-forwarded-proto=http  \n        x-real-ip=172.0.2.39  \n\nRequest Body:\n        -no body in request-\n```\n\n- Using plugins on services\n\n```bash\n$ kubectl apply -f ratelimitplugin.yaml    \n```\n\n- Apply this plugin to the `echo` service\n\n```bash\n$ kubectl patch svc echo \\\n>   -p '{\"metadata\":{\"annotations\":{\"konghq.com/plugins\": \"rl-by-ip\\n\"}}}'\n```\n\n- After 5 consecutive requests, you would get the following\n\n```bash\n$ curl -i bf3ad6d307c3858239565d757ae733636-111947221.us-east-1.elb.amazonaws.com:80/foo\nHTTP/1.1 429 Too Many Requests\nDate: Sat, 11 Sep 2021 09:30:08 GMT\nContent-Type: application/json; charset=utf-8\nConnection: keep-alive\nRateLimit-Reset: 52\nRetry-After: 52\nX-RateLimit-Limit-Minute: 5\nX-RateLimit-Remaining-Minute: 0\nRateLimit-Limit: 5\nRateLimit-Remaining: 0\nContent-Length: 41\nX-Kong-Response-Latency: 0\nServer: kong/2.5.0\n\n{\n  \"message\":\"API rate limit exceeded\"\n}%\n```\n\n- Using kong plugin resource\n- First deploy the httpbin app\n```bash\n$ kubectl apply -f dep.yaml,svc.yaml\ndeployment.apps/httpbin created\nservice/httpbin created\n```\n\n\n- Deploy the ingress\n\n```bash\n$ kubectl apply -f ingress.yaml     \ningress.extensions/demo configured\ningress.extensions/demo-2 created\n\n$ curl -i bf3ad6d307c3858239565d757ae733636-111947221.us-east-1.elb.amazonaws.com:80/foo/status/200\nHTTP/1.1 200 OK\nContent-Type: text/html; charset=utf-8\nContent-Length: 0\nConnection: keep-alive\nServer: gunicorn/19.9.0\nDate: Sat, 11 Sep 2021 10:52:11 GMT\nAccess-Control-Allow-Origin: *\nAccess-Control-Allow-Credentials: true\nX-Kong-Upstream-Latency: 1\nX-Kong-Proxy-Latency: 0\nVia: kong/2.5.0\n\n```\n\n- Apply the plugin\n\n```bash\n$ kubectl apply -f add-response-header-plugin.yaml           \nkongplugin.configuration.konghq.com/add-response-header created\n\n```\n\n- Now patch the demo ingress with this plugin\n\n```bash\n$ kubectl patch ingress demo -p '{\"metadata\":{\"annotations\":{\"konghq.com/plugins\":\"add-response-header\"}}}'\ningress.networking.k8s.io/demo patched\n```\n\n- Now test\n\n```bash\n$ curl -i bf3ad6d307c3858239565d757ae733636-111947221.us-east-1.elb.amazonaws.com:80/foo/status/200\nHTTP/1.1 200 OK\nContent-Type: text/html; charset=utf-8\nContent-Length: 0\nConnection: keep-alive\nServer: gunicorn/19.9.0\nDate: Sat, 11 Sep 2021 10:58:30 GMT\nAccess-Control-Allow-Origin: *\nAccess-Control-Allow-Credentials: true\ndemo:  injected-by-kong\nX-Kong-Upstream-Latency: 1\nX-Kong-Proxy-Latency: 0\nVia: kong/2.5.0\n```\n\n- The following does not inject the header as expected\n\n```bash\n$ curl -i bf3ad6d307c3858239565d757ae733636-111947221.us-east-1.elb.amazonaws.com:80/baz/status/200\nHTTP/1.1 200 OK\nContent-Type: text/html; charset=utf-8\nContent-Length: 0\nConnection: keep-alive\nServer: gunicorn/19.9.0\nDate: Sat, 11 Sep 2021 11:00:07 GMT\nAccess-Control-Allow-Origin: *\nAccess-Control-Allow-Credentials: true\nX-Kong-Upstream-Latency: 1\nX-Kong-Proxy-Latency: 1\nVia: kong/2.5.0\n```\n\n- Apply the plugin to only service\n\n```bash\n$ kubectl apply -f plugin-svc-http-auth.yaml                                                               \nkongplugin.configuration.konghq.com/httpbin-auth created\n```\n\n- Now we patch the service with this plugin\n\n```bash\nkubectl patch service httpbin -p '{\"metadata\":{\"annotations\":{\"konghq.com/plugins\":\"httpbin-auth\"}}}'\n```\n\n- Now, any request sent to the service will require authentication, no matter which Ingress rule it matched:\n  \n```bash\n$ curl -i bf3ad6d307c3858239565d757ae733636-111947221.us-east-1.elb.amazonaws.com:80/baz           \nHTTP/1.1 401 Unauthorized\nDate: Sat, 11 Sep 2021 11:30:11 GMT\nContent-Type: application/json; charset=utf-8\nConnection: keep-alive\nWWW-Authenticate: Key realm=\"kong\"\nContent-Length: 45\nX-Kong-Response-Latency: 0\nServer: kong/2.5.0\n\n{\n  \"message\":\"No API key found in request\"\n}\n\n$ curl -i bf3ad6d307c3858239565d757ae733636-111947221.us-east-1.elb.amazonaws.com:80/foo\nHTTP/1.1 401 Unauthorized\nDate: Sat, 11 Sep 2021 11:30:28 GMT\nContent-Type: application/json; charset=utf-8\nConnection: keep-alive\nWWW-Authenticate: Key realm=\"kong\"\nContent-Length: 45\ndemo:  injected-by-kong\nX-Kong-Response-Latency: 0\nServer: kong/2.5.0\n\n{\n  \"message\":\"No API key found in request\"\n}\n```\n\n- Next, we will create a Secret resource with an API-key inside it:\n\n```bash\nkubectl create secret generic harry-apikey  \\\n>   --from-literal=kongCredType=key-auth  \\\n>   --from-literal=key=my-sooper-secret-key\nsecret/harry-apikey created\n```\n\n- Let's create one consumer with this key\n\n```bash\n$ kubectl apply -f consumer.yaml                                                        \nkongconsumer.configuration.konghq.com/harry created\n```\n\n\n- Now again we try accessing the resource\n\n```bash\ncurl -i -H 'apikey: my-sooper-secret-key' bf3ad6d307c3858239565d757ae733636-111947221.us-east-1.elb.amazonaws.com:80/foo/status/200\nHTTP/1.1 200 OK\nContent-Type: text/html; charset=utf-8\nContent-Length: 0\nConnection: keep-alive\nServer: gunicorn/19.9.0\nDate: Sat, 11 Sep 2021 11:58:12 GMT\nAccess-Control-Allow-Origin: *\nAccess-Control-Allow-Credentials: true\ndemo:  injected-by-kong\nX-Kong-Upstream-Latency: 1\nX-Kong-Proxy-Latency: 1\nVia: kong/2.5.0\n\n```\n\n- Now we create a global plugin.\n\n> With this plugin (please note the global label), every request through the Kubernetes Ingress Controller will be rate-limited:\n  \n\n```bash\n$ kubectl apply -f ratelimitplugin.yaml\nkongclusterplugin.configuration.konghq.com/global-rate-limit created\n```\n\n\n- After 5 successful requests we get the following\n\n```bash\n$ curl -i -H 'apikey: my-sooper-secret-key' bf3ad6d307c3858239565d757ae733636-111947221.us-east-1.elb.amazonaws.com:80/foo/status/200\nHTTP/1.1 429 Too Many Requests\nDate: Sat, 11 Sep 2021 12:25:15 GMT\nContent-Type: application/json; charset=utf-8\nConnection: keep-alive\nRateLimit-Reset: 45\nRetry-After: 45\nX-RateLimit-Limit-Minute: 5\nX-RateLimit-Remaining-Minute: 0\nRateLimit-Limit: 5\nRateLimit-Remaining: 0\nContent-Length: 41\ndemo:  injected-by-kong\nX-Kong-Response-Latency: 1\nServer: kong/2.5.0\n\n{\n  \"message\":\"API rate limit exceeded\"\n}                                                                                                                                                                                                                    \n```\n\n\n- Now we try applying the rate limit to a specific consumer\n\n```bash\n$ kubectl apply -f specific-consumer-plugin.yaml                   \nkongplugin.configuration.konghq.com/harry-rate-limit created\n```\n\n- Reconfigure the consumer\n\n```bash\n$ kubectl apply -f consumer.yaml                \nkongconsumer.configuration.konghq.com/harry configured\n```\n\n- Now if you consume the api with harry's credentials after 10 successful requests you would get\n\n```bash\n$ curl -i -H 'apikey: my-sooper-secret-key' bf3ad6d307c3858239565d757ae733636-111947221.us-east-1.elb.amazonaws.com:80/foo/status/200\nHTTP/1.1 429 Too Many Requests\nDate: Sat, 11 Sep 2021 12:38:23 GMT\nContent-Type: application/json; charset=utf-8\nConnection: keep-alive\nRateLimit-Reset: 37\nRetry-After: 37\nX-RateLimit-Limit-Minute: 10\nX-RateLimit-Remaining-Minute: 0\nRateLimit-Limit: 10\nRateLimit-Remaining: 0\nContent-Length: 41\ndemo:  injected-by-kong\nX-Kong-Response-Latency: 0\nServer: kong/2.5.0\n\n{\n  \"message\":\"API rate limit exceeded\"\n}              \n```\n\n#### Using KongIngress Resource\n\n- Creating customized KongIngress\n\n```bash\n$ kubectl apply -f customizedKongIngress.yaml\nkongingress.configuration.konghq.com/sample-customization created\n```\n\n- Now we will patch the demo ingress with this customization\n\n```bash\n$ kubectl patch ingress demo -p '{\"metadata\":{\"annotations\":{\"konghq.com/override\":\"sample-customization\"}}}'\ningress.networking.k8s.io/demo patched\n```\n\n- Now, Kong will proxy only GET requests on /foo path and strip away /foo:\n  \n```bash\n$ curl -i -H 'apikey: my-sooper-secret-key' bf3ad6d307c3858239565d757ae733636-111947221.us-east-1.elb.amazonaws.com:80/foo -X POST\nHTTP/1.1 404 Not Found\nDate: Sat, 11 Sep 2021 13:00:35 GMT\nContent-Type: application/json; charset=utf-8\nConnection: keep-alive\nContent-Length: 48\nX-Kong-Response-Latency: 1\nServer: kong/2.5.0\n\n{\"message\":\"no Route matched with those values\"}\n```"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_018_aws__kong_ingress_on_eks/echo-app/dep.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app: echo\n  name: echo\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: echo\n  strategy: {}\n  template:\n    metadata:\n      creationTimestamp: null\n      labels:\n        app: echo\n    spec:\n      containers:\n        - image: gcr.io/kubernetes-e2e-test-images/echoserver:2.2\n          name: echo\n          ports:\n            - containerPort: 8080\n          env:\n            - name: NODE_NAME\n              valueFrom:\n                fieldRef:\n                  fieldPath: spec.nodeName\n            - name: POD_NAME\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.name\n            - name: POD_NAMESPACE\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.namespace\n            - name: POD_IP\n              valueFrom:\n                fieldRef:\n                  fieldPath: status.podIP\n          resources: {}"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_018_aws__kong_ingress_on_eks/echo-app/ingress-with-plugin.yaml",
    "content": "apiVersion: extensions/v1beta1\nkind: Ingress\nmetadata:\n  name: demo-example-com\n  annotations:\n    konghq.com/plugins: request-id\n    kubernetes.io/ingress.class: kong\nspec:\n  rules:\n    - host: example.com\n      http:\n        paths:\n          - path: /bar\n            backend:\n              serviceName: echo\n              servicePort: 80"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_018_aws__kong_ingress_on_eks/echo-app/ingress.yaml",
    "content": "apiVersion: extensions/v1beta1\nkind: Ingress\nmetadata:\n  name: demo\n  annotations:\n    kubernetes.io/ingress.class: kong\nspec:\n  rules:\n    - http:\n        paths:\n          - path: /foo\n            backend:\n              serviceName: echo\n              servicePort: 80"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_018_aws__kong_ingress_on_eks/echo-app/plugin.yaml",
    "content": "apiVersion: configuration.konghq.com/v1\nkind: KongPlugin\nmetadata:\n  name: request-id\nconfig:\n  header_name: my-request-id\nplugin: correlation-id"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_018_aws__kong_ingress_on_eks/echo-app/ratelimitplugin.yaml",
    "content": "apiVersion: configuration.konghq.com/v1\nkind: KongPlugin\nmetadata:\n  name: rl-by-ip\nconfig:\n  minute: 5\n  limit_by: ip\n  policy: local\nplugin: rate-limiting"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_018_aws__kong_ingress_on_eks/echo-app/svc.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app: echo\n  name: echo\nspec:\n  ports:\n    - port: 8080\n      name: high\n      protocol: TCP\n      targetPort: 8080\n    - port: 80\n      name: low\n      protocol: TCP\n      targetPort: 8080\n  selector:\n    app: echo\n---\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_018_aws__kong_ingress_on_eks/global-plugins/ratelimitplugin.yaml",
    "content": "apiVersion: configuration.konghq.com/v1\nkind: KongClusterPlugin\nmetadata:\n  name: global-rate-limit\n  annotations:\n    kubernetes.io/ingress.class: kong\n  labels:\n    global: \"true\"\nconfig:\n  minute: 5\n  limit_by: consumer\n  policy: local\nplugin: rate-limiting"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_018_aws__kong_ingress_on_eks/httpbin-app/add-response-header-plugin.yaml",
    "content": "apiVersion: configuration.konghq.com/v1\nkind: KongPlugin\nmetadata:\n  name: add-response-header\nconfig:\n  add:\n    headers:\n      - \"demo: injected-by-kong\"\nplugin: response-transformer"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_018_aws__kong_ingress_on_eks/httpbin-app/consumer.yaml",
    "content": "apiVersion: configuration.konghq.com/v1\nkind: KongConsumer\nmetadata:\n  name: harry\n  annotations:\n    kubernetes.io/ingress.class: kong\n    konghq.com/plugins: harry-rate-limit\nusername: harry\ncredentials:\n  - harry-apikey"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_018_aws__kong_ingress_on_eks/httpbin-app/customizedKongIngress.yaml",
    "content": "apiVersion: configuration.konghq.com/v1\nkind: KongIngress\nmetadata:\n  name: sample-customization\nroute:\n  methods:\n    - GET\n  strip_path: true"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_018_aws__kong_ingress_on_eks/httpbin-app/dep.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: httpbin\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: httpbin\n  template:\n    metadata:\n      labels:\n        app: httpbin\n    spec:\n      containers:\n        - image: docker.io/kennethreitz/httpbin\n          name: httpbin\n          ports:\n            - containerPort: 80"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_018_aws__kong_ingress_on_eks/httpbin-app/ingress.yaml",
    "content": "apiVersion: extensions/v1beta1\nkind: Ingress\nmetadata:\n  name: demo\n  annotations:\n    konghq.com/strip-path: \"true\"\n    kubernetes.io/ingress.class: kong\nspec:\n  rules:\n    - http:\n        paths:\n          - path: /foo\n            backend:\n              serviceName: httpbin\n              servicePort: 80\n          - path: /bar\n            backend:\n              serviceName: echo\n              servicePort: 80\n---\napiVersion: extensions/v1beta1\nkind: Ingress\nmetadata:\n  name: demo-2\n  annotations:\n    konghq.com/strip-path: \"true\"\n    kubernetes.io/ingress.class: kong\nspec:\n  rules:\n    - http:\n        paths:\n          - path: /baz\n            backend:\n              serviceName: httpbin\n              servicePort: 80"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_018_aws__kong_ingress_on_eks/httpbin-app/plugin-svc-http-auth.yaml",
    "content": "apiVersion: configuration.konghq.com/v1\nkind: KongPlugin\nmetadata:\n  name: httpbin-auth\nplugin: key-auth"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_018_aws__kong_ingress_on_eks/httpbin-app/specific-consumer-plugin.yaml",
    "content": "apiVersion: configuration.konghq.com/v1\nkind: KongPlugin\nmetadata:\n  name: harry-rate-limit\nconfig:\n  minute: 10\n  limit_by: consumer\n  policy: local\nplugin: rate-limiting"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_018_aws__kong_ingress_on_eks/httpbin-app/svc.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: httpbin\n  labels:\n    app: httpbin\nspec:\n  ports:\n    - name: http\n      port: 80\n      targetPort: 80\n  selector:\n    app: httpbin"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_018_aws__kong_ingress_on_eks/kong/values.yaml",
    "content": "# Default values for Kong's Helm Chart.\n# Declare variables to be passed into your templates.\n#\n# Sections:\n# - Deployment parameters\n# - Kong parameters\n# - Ingress Controller parameters\n# - Postgres sub-chart parameters\n# - Miscellaneous parameters\n# - Kong Enterprise parameters\n\n# -----------------------------------------------------------------------------\n# Deployment parameters\n# -----------------------------------------------------------------------------\n\ndeployment:\n  kong:\n    # Enable or disable Kong itself\n    # Setting this to false with ingressController.enabled=true will create a\n    # controller-only release.\n    enabled: true\n  ## Optionally specify any extra sidecar containers to be included in the deployment\n  ## See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#container-v1-core\n  # sidecarContainers:\n  #   - name: sidecar\n  #     image: sidecar:latest\n  # initContainers:\n  # - name: initcon\n  #   image: initcon:latest\n  # hostAliases:\n  # - ip: \"127.0.0.1\"\n  #   hostnames:\n  #   - \"foo.local\"\n  #   - \"bar.local\"\n  # userDefinedVolumes:\n  # - name: \"volumeName\"\n  #   emptyDir: {}\n  # userDefinedVolumeMounts:\n  # - name: \"volumeName\"\n  #   mountPath: \"/opt/user/dir/mount\"\n  test:\n    # Enable creation of test resources for use with \"helm test\"\n    enabled: false\n  # Use a DaemonSet controller instead of a Deployment controller\n  daemonset: false\n\n# Override namepsace for Kong chart resources. By default, the chart creates resources in the release namespace.\n# This may not be desirable when using this chart as a dependency.\n# namespace: \"example\"\n\n# -----------------------------------------------------------------------------\n# Kong parameters\n# -----------------------------------------------------------------------------\n\n# Specify Kong configuration\n# This chart takes all entries defined under `.env` and transforms them into into `KONG_*`\n# environment variables for Kong containers.\n# Their names here should match the names used in https://github.com/Kong/kong/blob/master/kong.conf.default\n# See https://docs.konghq.com/latest/configuration also for additional details\n# Values here take precedence over values from other sections of values.yaml,\n# e.g. setting pg_user here will override the value normally set when postgresql.enabled\n# is set below. In general, you should not set values here if they are set elsewhere.\nenv:\n  database: \"off\"\n  nginx_worker_processes: \"2\"\n  proxy_access_log: /dev/stdout\n  admin_access_log: /dev/stdout\n  admin_gui_access_log: /dev/stdout\n  portal_api_access_log: /dev/stdout\n  proxy_error_log: /dev/stderr\n  admin_error_log: /dev/stderr\n  admin_gui_error_log: /dev/stderr\n  portal_api_error_log: /dev/stderr\n  prefix: /kong_prefix/\n# log_level: debug\n\n\n# This section can be used to configure some extra labels that will be added to each Kubernetes object generated.\nextraLabels: {}\n\n# Specify Kong's Docker image and repository details here\nimage:\n  repository: kong\n  tag: \"2.5\"\n  # Kong Enterprise\n  # repository: kong/kong-gateway\n  # tag: \"2.5.0.0-alpine\"\n\n  pullPolicy: IfNotPresent\n  ## Optionally specify an array of imagePullSecrets.\n  ## Secrets must be manually created in the namespace.\n  ## If using the official Kong Enterprise registry above, you MUST provide a secret.\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\n  ##\n  # pullSecrets:\n  #   - myRegistrKeySecretName\n\n# Specify Kong admin API service and listener configuration\nadmin:\n  # Enable creating a Kubernetes service for the admin API\n  # Disabling this is recommended for most ingress controller configurations\n  # Enterprise users that wish to use Kong Manager with the controller should enable this\n  enabled: false\n  type: NodePort\n  # To specify annotations or labels for the admin service, add them to the respective\n  # \"annotations\" or \"labels\" dictionaries below.\n  annotations: {}\n  #  service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: \"*\"\n  labels: {}\n\n  http:\n    # Enable plaintext HTTP listen for the admin API\n    # Disabling this and using a TLS listen only is recommended for most configuration\n    enabled: false\n    servicePort: 8001\n    containerPort: 8001\n    # Set a nodePort which is available if service type is NodePort\n    # nodePort: 32080\n    # Additional listen parameters, e.g. \"reuseport\", \"backlog=16384\"\n    parameters: []\n\n  tls:\n    # Enable HTTPS listen for the admin API\n    enabled: true\n    servicePort: 8444\n    containerPort: 8444\n    # Set a target port for the TLS port in the admin API service, useful when using TLS\n    # termination on an ELB.\n    # overrideServiceTargetPort: 8000\n    # Set a nodePort which is available if service type is NodePort\n    # nodePort: 32443\n    # Additional listen parameters, e.g. \"reuseport\", \"backlog=16384\"\n    parameters:\n    - http2\n\n  # Kong admin ingress settings. Useful if you want to expose the Admin\n  # API of Kong outside the k8s cluster.\n  ingress:\n    # Enable/disable exposure using ingress.\n    enabled: false\n    # TLS secret name.\n    # tls: kong-admin.example.com-tls\n    # Ingress hostname\n    hostname:\n    # Map of ingress annotations.\n    annotations: {}\n    # Ingress path.\n    path: /\n\n# Specify Kong status listener configuration\n# This listen is internal-only. It cannot be exposed through a service or ingress.\nstatus:\n  enabled: true\n  http:\n    # Enable plaintext HTTP listen for the status listen\n    enabled: true\n    containerPort: 8100\n    parameters: []\n\n  tls:\n    # Enable HTTPS listen for the status listen\n    # Kong versions prior to 2.1 do not support TLS status listens.\n    # This setting must remain false on those versions\n    enabled: false\n    containerPort: 8543\n    parameters: []\n\n# Specify Kong cluster service and listener configuration\n#\n# The cluster service *must* use TLS. It does not support the \"http\" block\n# available on other services.\n#\n# The cluster service cannot be exposed through an Ingress, as it must perform\n# TLS client validation directly and is not compatible with TLS-terminating\n# proxies. If you need to expose it externally, you must use \"type:\n# LoadBalancer\" and use a TCP-only load balancer (check your Kubernetes\n# provider's documentation, as the configuration required for this varies).\ncluster:\n  enabled: false\n  # To specify annotations or labels for the cluster service, add them to the respective\n  # \"annotations\" or \"labels\" dictionaries below.\n  annotations: {}\n  #  service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: \"*\"\n  labels: {}\n\n  tls:\n    enabled: false\n    servicePort: 8005\n    containerPort: 8005\n    parameters: []\n\n  type: ClusterIP\n\n# Specify Kong proxy service configuration\nproxy:\n  # Enable creating a Kubernetes service for the proxy\n  enabled: true\n  type: LoadBalancer\n  # To specify annotations or labels for the proxy service, add them to the respective\n  # \"annotations\" or \"labels\" dictionaries below.\n  annotations: {}\n  # If terminating TLS at the ELB, the following annotations can be used\n  # \"service.beta.kubernetes.io/aws-load-balancer-backend-protocol\": \"*\",\n  # \"service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled\": \"true\",\n  # \"service.beta.kubernetes.io/aws-load-balancer-ssl-cert\": \"arn:aws:acm:REGION:ACCOUNT:certificate/XXXXXX-XXXXXXX-XXXXXXX-XXXXXXXX\",\n  # \"service.beta.kubernetes.io/aws-load-balancer-ssl-ports\": \"kong-tls-proxy\",\n  # \"service.beta.kubernetes.io/aws-load-balancer-type\": \"elb\"\n  labels:\n    enable-metrics: \"true\"\n\n  http:\n    # Enable plaintext HTTP listen for the proxy\n    enabled: true\n    servicePort: 80\n    containerPort: 8000\n    # Set a nodePort which is available if service type is NodePort\n    # nodePort: 32080\n    # Additional listen parameters, e.g. \"reuseport\", \"backlog=16384\"\n    parameters: []\n\n  tls:\n    # Enable HTTPS listen for the proxy\n    enabled: true\n    servicePort: 443\n    containerPort: 8443\n    # Set a target port for the TLS port in proxy service\n    # overrideServiceTargetPort: 8000\n    # Set a nodePort which is available if service type is NodePort\n    # nodePort: 32443\n    # Additional listen parameters, e.g. \"reuseport\", \"backlog=16384\"\n    parameters:\n    - http2\n\n  # Define stream (TCP) listen\n  # To enable, remove \"{}\", uncomment the section below, and select your desired\n  # ports and parameters. Listens are dynamically named after their servicePort,\n  # e.g. \"stream-9000\" for the below.\n  # Note: although you can select the protocol here, you cannot set UDP if you\n  # use a LoadBalancer Service due to limitations in current Kubernetes versions.\n  # To proxy both TCP and UDP with LoadBalancers, you must enable the udpProxy Service\n  # in the next section and place all UDP stream listen configuration under it.\n  stream: {}\n    #   # Set the container (internal) and service (external) ports for this listen.\n    #   # These values should normally be the same. If your environment requires they\n    #   # differ, note that Kong will match routes based on the containerPort only.\n    # - containerPort: 9000\n    #   servicePort: 9000\n    #   protocol: TCP\n    #   # Optionally set a static nodePort if the service type is NodePort\n    #   # nodePort: 32080\n    #   # Additional listen parameters, e.g. \"ssl\", \"reuseport\", \"backlog=16384\"\n    #   # \"ssl\" is required for SNI-based routes. It is not supported on versions <2.0\n    #   parameters: []\n\n  # Kong proxy ingress settings.\n  # Note: You need this only if you are using another Ingress Controller\n  # to expose Kong outside the k8s cluster.\n  ingress:\n    # Enable/disable exposure using ingress.\n    enabled: false\n    # Ingress hostname\n    # TLS secret name.\n    # tls: kong-admin.example.com-tls\n    hostname:\n    # Map of ingress annotations.\n    annotations: {}\n    # Ingress path.\n    path: /\n\n  # Optionally specify a static load balancer IP.\n  # loadBalancerIP:\n\n# Specify Kong UDP proxy service configuration\n# Currently, LoadBalancer type Services are generally limited to a single transport protocol\n# Multi-protocol Services are an alpha feature as of Kubernetes 1.20:\n# https://kubernetes.io/docs/concepts/services-networking/service/#load-balancers-with-mixed-protocol-types\n# You should enable this Service if you proxy UDP traffic, and configure UDP stream listens under it\nudpProxy:\n  # Enable creating a Kubernetes service for UDP proxying\n  enabled: false\n  type: LoadBalancer\n  # To specify annotations or labels for the proxy service, add them to the respective\n  # \"annotations\" or \"labels\" dictionaries below.\n  annotations: {}\n  #  service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: \"*\"\n  labels: {}\n  # Optionally specify a static load balancer IP.\n  # loadBalancerIP:\n\n  # Define stream (UDP) listen\n  # To enable, remove \"{}\", uncomment the section below, and select your desired\n  # ports and parameters. Listens are dynamically named after their servicePort,\n  # e.g. \"stream-9000\" for the below.\n  stream: {}\n    #   # Set the container (internal) and service (external) ports for this listen.\n    #   # These values should normally be the same. If your environment requires they\n    #   # differ, note that Kong will match routes based on the containerPort only.\n    # - containerPort: 9000\n    #   servicePort: 9000\n    #   protocol: UDP\n    #   # Optionally set a static nodePort if the service type is NodePort\n    #   # nodePort: 32080\n    #   # Additional listen parameters, e.g. \"ssl\", \"reuseport\", \"backlog=16384\"\n    #   # \"ssl\" is required for SNI-based routes. It is not supported on versions <2.0\n    #   parameters: []\n\n# Custom Kong plugins can be loaded into Kong by mounting the plugin code\n# into the file-system of Kong container.\n# The plugin code should be present in ConfigMap or Secret inside the same\n# namespace as Kong is being installed.\n# The `name` property refers to the name of the ConfigMap or Secret\n# itself, while the pluginName refers to the name of the plugin as it appears\n# in Kong.\n# Subdirectories (which are optional) require separate ConfigMaps/Secrets.\n# \"path\" indicates their directory under the main plugin directory: the example\n# below will mount the contents of kong-plugin-rewriter-migrations at \"/opt/kong/rewriter/migrations\".\nplugins: {}\n  # configMaps:\n  # - pluginName: rewriter\n  #   name: kong-plugin-rewriter\n  #   subdirectories:\n  #   - name: kong-plugin-rewriter-migrations\n  #     path: migrations\n  # secrets:\n  # - pluginName: rewriter\n  #   name: kong-plugin-rewriter\n# Inject specified secrets as a volume in Kong Container at path /etc/secrets/{secret-name}/\n# This can be used to override default SSL certificates.\n# Be aware that the secret name will be used verbatim, and that certain types\n# of punctuation (e.g. `.`) can cause issues.\n# Example configuration\n# secretVolumes:\n# - kong-proxy-tls\n# - kong-admin-tls\nsecretVolumes: []\n\n# Enable/disable migration jobs, and set annotations for them\nmigrations:\n  # Enable pre-upgrade migrations (run \"kong migrations up\")\n  preUpgrade: true\n  # Enable post-upgrade migrations (run \"kong migrations finish\")\n  postUpgrade: true\n  # Annotations to apply to migrations job pods\n  # By default, these disable service mesh sidecar injection for Istio and Kuma,\n  # as the sidecar containers do not terminate and prevent the jobs from completing\n  annotations:\n    sidecar.istio.io/inject: false\n  # Additional annotations to apply to migration jobs\n  # This is helpful in certain non-Helm installation situations such as GitOps\n  # where additional control is required around this job creation.\n  jobAnnotations: {}\n  resources: {}\n  # Example reasonable setting for \"resources\":\n  # resources:\n  #   limits:\n  #     cpu: 100m\n  #     memory: 256Mi\n  #   requests:\n  #     cpu: 50m\n  #     memory: 128Mi\n\n# Kong's configuration for DB-less mode\n# Note: Use this section only if you are deploying Kong in DB-less mode\n# and not as an Ingress Controller.\ndblessConfig:\n  # Either Kong's configuration is managed from an existing ConfigMap (with Key: kong.yml)\n  configMap: \"\"\n  # Or the configuration is passed in full-text below\n  config:\n    _format_version: \"1.1\"\n    services:\n      # Example configuration\n      # - name: example.com\n      #   url: http://example.com\n      #   routes:\n      #   - name: example\n      #     paths:\n      #     - \"/example\"\n\n# -----------------------------------------------------------------------------\n# Ingress Controller parameters\n# -----------------------------------------------------------------------------\n\n# Kong Ingress Controller's primary purpose is to satisfy Ingress resources\n# created in k8s.  It uses CRDs for more fine grained control over routing and\n# for Kong specific configuration.\ningressController:\n  enabled: true\n  image:\n    repository: kong/kubernetes-ingress-controller\n    tag: \"1.3\"\n    # Optionally set a semantic version for version-gated features. This can normally\n    # be left unset. You only need to set this if your tag is not a semver string,\n    # such as when you are using a \"next\" tag. Set this to the effective semantic\n    # version of your tag: for example if using a \"next\" image for an unreleased 3.1.0\n    # version, set this to \"3.1.0\".\n    effectiveSemver:\n  args: []\n\n  # Specify individual namespaces to watch for ingress configuration. By default,\n  # when no namespaces are set, the controller watches all namespaces and uses a\n  # ClusterRole to grant access to Kubernetes resources. When you list specific\n  # namespaces, the controller will watch those namespaces only and will create\n  # namespaced-scoped Roles for each of them. Note that watching specific namespaces\n  # disables KongClusterPlugin usage, as KongClusterPlugins only exist as cluster resources.\n  # Requires controller 2.0.0 or newer.\n  watchNamespaces: []\n\n  # Specify Kong Ingress Controller configuration via environment variables\n  env:\n    # The controller disables TLS verification by default because Kong\n    # generates self-signed certificates by default. Set this to false once you\n    # have installed CA-signed certificates.\n    kong_admin_tls_skip_verify: true\n    # If using Kong Enterprise with RBAC enabled, uncomment the section below\n    # and specify the secret/key containing your admin token.\n    # kong_admin_token:\n    #   valueFrom:\n    #     secretKeyRef:\n    #        name: CHANGEME-admin-token-secret\n    #        key: CHANGEME-admin-token-key\n\n  admissionWebhook:\n    enabled: false\n    failurePolicy: Fail\n    port: 8080\n    certificate:\n      provided: false\n    # Specifiy the secretName when the certificate is provided via a TLS secret\n    # secretName: \"\"\n    # Specifiy the CA bundle of the provided certificate.\n    # This is a PEM encoded CA bundle which will be used to validate the webhook certificate. If unspecified, system trust roots on the apiserver are used.\n    # caBundle:\n    #   | Add the CA bundle content here.\n\n  ingressClass: kong\n\n  rbac:\n    # Specifies whether RBAC resources should be created\n    create: true\n\n  serviceAccount:\n    # Specifies whether a ServiceAccount should be created\n    create: true\n    # The name of the ServiceAccount to use.\n    # If not set and create is true, a name is generated using the fullname template\n    name:\n    # The annotations for service account\n    annotations: {}\n\n  # general properties\n  livenessProbe:\n    httpGet:\n      path: \"/healthz\"\n      port: 10254\n      scheme: HTTP\n    initialDelaySeconds: 5\n    timeoutSeconds: 5\n    periodSeconds: 10\n    successThreshold: 1\n    failureThreshold: 3\n  readinessProbe:\n    httpGet:\n      path: \"/healthz\"\n      port: 10254\n      scheme: HTTP\n    initialDelaySeconds: 5\n    timeoutSeconds: 5\n    periodSeconds: 10\n    successThreshold: 1\n    failureThreshold: 3\n  resources: {}\n  # Example reasonable setting for \"resources\":\n  # resources:\n  #   limits:\n  #     cpu: 100m\n  #     memory: 256Mi\n  #   requests:\n  #     cpu: 50m\n  #     memory: 128Mi\n\n# -----------------------------------------------------------------------------\n# Postgres sub-chart parameters\n# -----------------------------------------------------------------------------\n\n# Kong can run without a database or use either Postgres or Cassandra\n# as a backend datatstore for it's configuration.\n# By default, this chart installs Kong without a database.\n\n# If you would like to use a database, there are two options:\n# - (recommended) Deploy and maintain a database and pass the connection\n#   details to Kong via the `env` section.\n# - You can use the below `postgresql` sub-chart to deploy a database\n#   along-with Kong as part of a single Helm release.\n\n# PostgreSQL chart documentation:\n# https://github.com/bitnami/charts/blob/master/bitnami/postgresql/README.md\n\npostgresql:\n  enabled: false\n  # postgresqlUsername: kong\n  # postgresqlDatabase: kong\n  # service:\n  #   port: 5432\n\n# -----------------------------------------------------------------------------\n# Miscellaneous parameters\n# -----------------------------------------------------------------------------\n\nwaitImage:\n  # Wait for the database to come online before starting Kong or running migrations\n  # If Kong is to access the database through a service mesh that injects a sidecar to\n  # Kong's container, this must be disabled. Otherwise there'll be a deadlock:\n  # InitContainer waiting for DB access that requires the sidecar, and the sidecar\n  # waiting for InitContainers to finish.\n  enabled: true\n  # Optionally specify an image that provides bash for pre-migration database\n  # checks. If none is specified, the chart uses the Kong image. The official\n  # Kong images provide bash\n  # repository: bash\n  # tag: 5\n  pullPolicy: IfNotPresent\n\n# update strategy\nupdateStrategy: {}\n  # type: RollingUpdate\n  # rollingUpdate:\n  #   maxSurge: \"100%\"\n  #   maxUnavailable: \"0%\"\n\n# If you want to specify resources, uncomment the following\n# lines, adjust them as necessary, and remove the curly braces after 'resources:'.\nresources: {}\n  # limits:\n  #  cpu: 100m\n  #  memory: 256Mi\n  # requests:\n  #  cpu: 100m\n  #  memory: 256Mi\n\n# readinessProbe for Kong pods\nreadinessProbe:\n  httpGet:\n    path: \"/status\"\n    port: status\n    scheme: HTTP\n  initialDelaySeconds: 5\n  timeoutSeconds: 5\n  periodSeconds: 10\n  successThreshold: 1\n  failureThreshold: 3\n\n# livenessProbe for Kong pods\nlivenessProbe:\n  httpGet:\n    path: \"/status\"\n    port: status\n    scheme: HTTP\n  initialDelaySeconds: 5\n  timeoutSeconds: 5\n  periodSeconds: 10\n  successThreshold: 1\n  failureThreshold: 3\n\n# Proxy container lifecycle hooks\n# Ref: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/\nlifecycle:\n  preStop:\n    exec:\n      # Note kong quit has a default timeout of 10 seconds\n      command: [\"/bin/sh\", \"-c\", \"/bin/sleep 15 && kong quit\"]\n\n# Sets the termination grace period for pods spawned by the Kubernetes Deployment.\n# Ref: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#hook-handler-execution\nterminationGracePeriodSeconds: 30\n\n# Affinity for pod assignment\n# Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity\n# affinity: {}\n\n# Topology spread constraints for pod assignment (requires Kubernetes >= 1.19)\n# Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/\n# topologySpreadConstraints: []\n\n# Tolerations for pod assignment\n# Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/\ntolerations: []\n\n# Node labels for pod assignment\n# Ref: https://kubernetes.io/docs/user-guide/node-selection/\nnodeSelector: {}\n\n# Annotation to be added to Kong pods\npodAnnotations: {}\n\n# Labels to be added to Kong pods\npodLabels: {}\n\n# Kong pod count.\n# It has no effect when autoscaling.enabled is set to true\nreplicaCount: 1\n\n# Annotations to be added to Kong deployment\ndeploymentAnnotations:\n  kuma.io/gateway: enabled\n  traffic.sidecar.istio.io/includeInboundPorts: \"\"\n\n# Enable autoscaling using HorizontalPodAutoscaler\n# When configuring an HPA, you must set resource requests on all containers via\n# \"resources\" and, if using the controller, \"ingressController.resources\" in values.yaml\nautoscaling:\n  enabled: false\n  minReplicas: 2\n  maxReplicas: 5\n  ## targetCPUUtilizationPercentage only used if the cluster doesn't support autoscaling/v2beta\n  targetCPUUtilizationPercentage:\n  ## Otherwise for clusters that do support autoscaling/v2beta, use metrics\n  metrics:\n    - type: Resource\n      resource:\n        name: cpu\n        target:\n          type: Utilization\n          averageUtilization: 80\n\n# Kong Pod Disruption Budget\npodDisruptionBudget:\n  enabled: false\n  # Uncomment only one of the following when enabled is set to true\n  # maxUnavailable: \"50%\"\n  # minUnavailable: \"50%\"\n\npodSecurityPolicy:\n  enabled: false\n  spec:\n    privileged: false\n    fsGroup:\n      rule: RunAsAny\n    runAsUser:\n      rule: RunAsAny\n    runAsGroup:\n      rule: RunAsAny\n    seLinux:\n      rule: RunAsAny\n    supplementalGroups:\n      rule: RunAsAny\n    volumes:\n      - 'configMap'\n      - 'secret'\n      - 'emptyDir'\n    allowPrivilegeEscalation: false\n    hostNetwork: false\n    hostIPC: false\n    hostPID: false\n    # Make the root filesystem read-only. This is not compatible with Kong Enterprise <1.5.\n    # If you use Kong Enterprise <1.5, this must be set to false.\n    readOnlyRootFilesystem: true\n\n\npriorityClassName: \"\"\n\n# securityContext for Kong pods.\nsecurityContext: {}\n\n# securityContext for containers.\ncontainerSecurityContext: {}\n\n## Optional DNS configuration for Kong pods\n# dnsPolicy: ClusterFirst\n# dnsConfig:\n#   nameservers:\n#   - \"10.100.0.10\"\n#   options:\n#   - name: ndots\n#     value: \"5\"\n#   searches:\n#   - default.svc.cluster.local\n#   - svc.cluster.local\n#   - cluster.local\n#   - us-east-1.compute.internal\n\nserviceMonitor:\n  # Specifies whether ServiceMonitor for Prometheus operator should be created\n  # If you wish to gather metrics from a Kong instance with the proxy disabled (such as a hybrid control plane), see:\n  # https://github.com/Kong/charts/blob/main/charts/kong/README.md#prometheus-operator-integration\n  enabled: false\n  # interval: 10s\n  # Specifies namespace, where ServiceMonitor should be installed\n  # namespace: monitoring\n  # labels:\n  #   foo: bar\n  # targetLabels:\n  #   - foo\n\n  # honorLabels: false\n  # metricRelabelings: []\n\n# -----------------------------------------------------------------------------\n# Kong Enterprise parameters\n# -----------------------------------------------------------------------------\n\n# Toggle Kong Enterprise features on or off\n# RBAC and SMTP configuration have additional options that must all be set together\n# Other settings should be added to the \"env\" settings below\nenterprise:\n  enabled: false\n  # Kong Enterprise license secret name\n  # This secret must contain a single 'license' key, containing your base64-encoded license data\n  # The license secret is required to unlock all Enterprise features. If you omit it,\n  # Kong will run in free mode, with some Enterprise features disabled.\n  # license_secret: kong-enterprise-license\n  vitals:\n    enabled: true\n  portal:\n    enabled: false\n  rbac:\n    enabled: false\n    admin_gui_auth: basic-auth\n    # If RBAC is enabled, this Secret must contain an admin_gui_session_conf key\n    # The key value must be a secret configuration, following the example at\n    # https://docs.konghq.com/enterprise/latest/kong-manager/authentication/sessions\n    session_conf_secret: kong-session-config\n    # If admin_gui_auth is not set to basic-auth, provide a secret name which\n    # has an admin_gui_auth_conf key containing the plugin config JSON\n    admin_gui_auth_conf_secret: CHANGEME-admin-gui-auth-conf-secret\n  # For configuring emails and SMTP, please read through:\n  # https://docs.konghq.com/enterprise/latest/developer-portal/configuration/smtp\n  # https://docs.konghq.com/enterprise/latest/kong-manager/networking/email\n  smtp:\n    enabled: false\n    portal_emails_from: none@example.com\n    portal_emails_reply_to: none@example.com\n    admin_emails_from: none@example.com\n    admin_emails_reply_to: none@example.com\n    smtp_admin_emails: none@example.com\n    smtp_host: smtp.example.com\n    smtp_port: 587\n    smtp_auth_type: ''\n    smtp_ssl: nil\n    smtp_starttls: true\n    auth:\n      # If your SMTP server does not require authentication, this section can\n      # be left as-is. If smtp_username is set to anything other than an empty\n      # string, you must create a Secret with an smtp_password key containing\n      # your SMTP password and specify its name here.\n      smtp_username: ''  # e.g. postmaster@example.com\n      smtp_password_secret: CHANGEME-smtp-password\n\nmanager:\n  # Enable creating a Kubernetes service for Kong Manager\n  enabled: true\n  type: NodePort\n  # To specify annotations or labels for the Manager service, add them to the respective\n  # \"annotations\" or \"labels\" dictionaries below.\n  annotations: {}\n  #  service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: \"*\"\n  labels: {}\n\n  http:\n    # Enable plaintext HTTP listen for Kong Manager\n    enabled: true\n    servicePort: 8002\n    containerPort: 8002\n    # Set a nodePort which is available if service type is NodePort\n    # nodePort: 32080\n    # Additional listen parameters, e.g. \"reuseport\", \"backlog=16384\"\n    parameters: []\n\n  tls:\n    # Enable HTTPS listen for Kong Manager\n    enabled: true\n    servicePort: 8445\n    containerPort: 8445\n    # Set a nodePort which is available if service type is NodePort\n    # nodePort: 32443\n    # Additional listen parameters, e.g. \"reuseport\", \"backlog=16384\"\n    parameters:\n    - http2\n\n  ingress:\n    # Enable/disable exposure using ingress.\n    enabled: false\n    # TLS secret name.\n    # tls: kong-proxy.example.com-tls\n    # Ingress hostname\n    hostname:\n    # Map of ingress annotations.\n    annotations: {}\n    # Ingress path.\n    path: /\n\nportal:\n  # Enable creating a Kubernetes service for the Developer Portal\n  enabled: true\n  type: NodePort\n  # To specify annotations or labels for the Portal service, add them to the respective\n  # \"annotations\" or \"labels\" dictionaries below.\n  annotations: {}\n  #  service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: \"*\"\n  labels: {}\n\n  http:\n    # Enable plaintext HTTP listen for the Developer Portal\n    enabled: true\n    servicePort: 8003\n    containerPort: 8003\n    # Set a nodePort which is available if service type is NodePort\n    # nodePort: 32080\n    # Additional listen parameters, e.g. \"reuseport\", \"backlog=16384\"\n    parameters: []\n\n  tls:\n    # Enable HTTPS listen for the Developer Portal\n    enabled: true\n    servicePort: 8446\n    containerPort: 8446\n    # Set a nodePort which is available if service type is NodePort\n    # nodePort: 32443\n    # Additional listen parameters, e.g. \"reuseport\", \"backlog=16384\"\n    parameters:\n    - http2\n\n  ingress:\n    # Enable/disable exposure using ingress.\n    enabled: false\n    # TLS secret name.\n    # tls: kong-proxy.example.com-tls\n    # Ingress hostname\n    hostname:\n    # Map of ingress annotations.\n    annotations: {}\n    # Ingress path.\n    path: /\n\nportalapi:\n  # Enable creating a Kubernetes service for the Developer Portal API\n  enabled: true\n  type: NodePort\n  # To specify annotations or labels for the Portal API service, add them to the respective\n  # \"annotations\" or \"labels\" dictionaries below.\n  annotations: {}\n  #  service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: \"*\"\n  labels: {}\n\n  http:\n    # Enable plaintext HTTP listen for the Developer Portal API\n    enabled: true\n    servicePort: 8004\n    containerPort: 8004\n    # Set a nodePort which is available if service type is NodePort\n    # nodePort: 32080\n    # Additional listen parameters, e.g. \"reuseport\", \"backlog=16384\"\n    parameters: []\n\n  tls:\n    # Enable HTTPS listen for the Developer Portal API\n    enabled: true\n    servicePort: 8447\n    containerPort: 8447\n    # Set a nodePort which is available if service type is NodePort\n    # nodePort: 32443\n    # Additional listen parameters, e.g. \"reuseport\", \"backlog=16384\"\n    parameters:\n    - http2\n\n  ingress:\n    # Enable/disable exposure using ingress.\n    enabled: false\n    # TLS secret name.\n    # tls: kong-proxy.example.com-tls\n    # Ingress hostname\n    hostname:\n    # Map of ingress annotations.\n    annotations: {}\n    # Ingress path.\n    path: /\n\nclustertelemetry:\n  enabled: false\n  # To specify annotations or labels for the cluster telemetry service, add them to the respective\n  # \"annotations\" or \"labels\" dictionaries below.\n  annotations: {}\n  #  service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: \"*\"\n  labels: {}\n\n  tls:\n    enabled: false\n    servicePort: 8006\n    containerPort: 8006\n    parameters: []\n\n  type: ClusterIP\n\nextraConfigMaps: []\n# extraConfigMaps:\n# - name: my-config-map\n#   mountPath: /mount/to/my/location\n#   subPath: my-subpath # Optional, if you wish to mount a single key and not the entire ConfigMap\n\nextraSecrets: []\n# extraSecrets:\n# - name: my-secret\n#   mountPath: /mount/to/my/location\n#   subPath: my-subpath # Optional, if you wish to mount a single key and not the entire ConfigMap\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_019__gcp__elastic_search/ReadMe.md",
    "content": "\n## Deploy ECK in your kubernetes cluster\n[k8s-deploy-eck](https://www.elastic.co/guide/en/cloud-on-k8s/current/k8s-quickstart.html#k8s-deploy-eck)\n\n- Install custom resource definitions and the operator with its RBAC rules:\n  \n```bash\n$ kubectl apply -f https://download.elastic.co/downloads/eck/1.0.1/all-in-one.yaml\ncustomresourcedefinition.apiextensions.k8s.io/apmservers.apm.k8s.elastic.co created\ncustomresourcedefinition.apiextensions.k8s.io/elasticsearches.elasticsearch.k8s.elastic.co created\ncustomresourcedefinition.apiextensions.k8s.io/kibanas.kibana.k8s.elastic.co created\nclusterrole.rbac.authorization.k8s.io/elastic-operator created\nclusterrolebinding.rbac.authorization.k8s.io/elastic-operator created\nnamespace/elastic-system created\nstatefulset.apps/elastic-operator created\nserviceaccount/elastic-operator created\nvalidatingwebhookconfiguration.admissionregistration.k8s.io/elastic-webhook.k8s.elastic.co created\nservice/elastic-webhook-server created\nsecret/elastic-webhook-server-cert created\n```\n\n## Deploy an Elastic Search Cluster\n[k8s-deploy-elasticsearch](https://www.elastic.co/guide/en/cloud-on-k8s/current/k8s-quickstart.html#k8s-deploy-elasticsearch)\n\n```bash\n$ cat <<EOF | kubectl apply -f -\n> apiVersion: elasticsearch.k8s.elastic.co/v1\n> kind: Elasticsearch\n> metadata:\n>   name: quickstart\n> spec:\n>   version: 7.6.2\n>   nodeSets:\n>   - name: default\n>     count: 1\n>     config:\n>       node.master: true\n>       node.data: true\n>       node.ingest: true\n>       node.store.allow_mmap: false\n> EOF\nelasticsearch.elasticsearch.k8s.elastic.co/quickstart created\n```"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_020__gcp__basic_namespace_wide_kubeconfig/README.md",
    "content": "## Objective : To create a user DAVE and give access to DAVE to create only specific resources in specific namespace\n\nDocs referred - https://medium.com/better-programming/k8s-tips-give-access-to-your-clusterwith-a-client-certificate-dfb3b71a76fe\n\n- Generating the dave.key and dave.csr\n```bash\n$ ./client-run.sh\nGenerating RSA private key, 4096 bit long modulus\n..........................................................++++\n......................................................................................................................................................................................................................................++++\ne is 65537 (0x010001)\n```\n\n- Generating the kubeconfig\n```bash\n$ ./admin-run.sh\ncertificatesigningrequest.certificates.k8s.io/mycsr created\nNAME    AGE   REQUESTOR                CONDITION\nmycsr   0s    user@gmail.com   Pending\ncertificatesigningrequest.certificates.k8s.io/mycsr approved\nNAME    AGE   REQUESTOR                CONDITION\nmycsr   1s    user@gmail.com   Approved,Issued\nnamespace/development created\nrole.rbac.authorization.k8s.io/dev created\nrolebinding.rbac.authorization.k8s.io/dev created\n```\n\n- At the client workstation copy the dave.key and kubeconfig and execute the following\n\n```bash\n$ ls kubeconfig dave.key\ndave.key   kubeconfig\n\n$ export KUBECONFIG=$PWD/kubeconfig\n\n$ kubectl config set-credentials dave \\\n  --client-key=$PWD/dave.key \\\n  --embed-certs=true\nUser \"dave\" set.\n\n$ kubectl version\nClient Version: version.Info{Major:\"1\", Minor:\"15\", GitVersion:\"v1.15.5\", GitCommit:\"20c265fef0741dd71a66480e35bd69f18351daea\", GitTreeState:\"clean\", BuildDate:\"2019-10-15T19:16:51Z\", GoVersion:\"go1.12.10\", Compiler:\"gc\", Platform:\"darwin/amd64\"}\nServer Version: version.Info{Major:\"1\", Minor:\"14+\", GitVersion:\"v1.14.10-gke.27\", GitCommit:\"145f9e21a4515947d6fb10819e5a336aff1b6959\", GitTreeState:\"clean\", BuildDate:\"2020-02-21T18:01:40Z\", GoVersion:\"go1.12.12b4\", Compiler:\"gc\", Platform:\"linux/amd64\"}\n```\n\n- Try creating a resource in namespace development\n\n```bash\n$ kubectl apply -f www.yaml\ndeployment.apps/www created\nservice/www created\n\n$ kubectl get pods\nError from server (Forbidden): pods is forbidden: User \"dave\" cannot list resource \"pods\" in API group \"\" in the namespace \"default\"\n\n$ kubectl get pods -n development\nNAME                   READY   STATUS    RESTARTS   AGE\nwww-66fd899d46-8sr97   1/1     Running   0          15s\nwww-66fd899d46-hzgr6   1/1     Running   0          15s\nwww-66fd899d46-pb7fm   1/1     Running   0          15s\n```\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_020__gcp__basic_namespace_wide_kubeconfig/admin-run.sh",
    "content": "#!/usr/bin/env bash\n\n\n# Encoding the .csr file in base64\nexport BASE64_CSR=$(cat ./dave.csr | base64 | tr -d '\\n')\n# Substitution of the BASE64_CSR env variable and creation of the CertificateSigninRequest resource\ncat csr.yaml | envsubst | kubectl apply -f -\n\nkubectl get csr\n\nkubectl certificate approve mycsr\n\nkubectl get csr\n\nkubectl get csr mycsr -o jsonpath='{.status.certificate}' \\\n  | base64 --decode > dave.crt\n\n\nkubectl apply -f dev-ns.yaml\n\nkubectl apply -f role.yaml\n\nkubectl apply -f role-binding.yaml\n\n\n# User identifier\nexport USER=\"dave\"\n# Cluster Name (get it from the current context)\nexport CLUSTER_NAME=$(kubectl config view --minify -o jsonpath={.current-context})\n# Client certificate\nexport CLIENT_CERTIFICATE_DATA=$(kubectl get csr mycsr -o jsonpath='{.status.certificate}')\n# Cluster Certificate Authority\nexport CLUSTER_CA=$(kubectl config view --raw -o json | jq -r '.clusters[] | select(.name == \"'$(kubectl config current-context)'\") | .cluster.\"certificate-authority-data\"')\n#export CLUSTER_CA=$(kubectl config view --raw -o json | jq -r '.clusters[].cluster.\"certificate-authority-data\"')\n\n# API Server endpoint\nexport CLUSTER_ENDPOINT=$(kubectl config view --raw -o json | jq -r '.clusters[] | select(.name == \"'$(kubectl config current-context)'\") | .cluster.\"server\"')\n#export CLUSTER_ENDPOINT=$(kubectl config view --raw -o json | jq -r '.clusters[].cluster.\"server\"')\n\ncat kubeconfig.tpl | envsubst > kubeconfig\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_020__gcp__basic_namespace_wide_kubeconfig/client-run.sh",
    "content": "#!/usr/bin/env bash\n\n\nopenssl genrsa -out dave.key 4096\n\nopenssl req -config ./csr.cnf -new -key dave.key -nodes -out dave.csr\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_020__gcp__basic_namespace_wide_kubeconfig/csr.cnf",
    "content": "[ req ]\ndefault_bits = 2048\nprompt = no\ndefault_md = sha256\ndistinguished_name = dn\n[ dn ]\nCN = dave\nO = dev\n[ v3_ext ]\nauthorityKeyIdentifier=keyid,issuer:always\nbasicConstraints=CA:FALSE\nkeyUsage=keyEncipherment,dataEncipherment\nextendedKeyUsage=serverAuth,clientAuth\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_020__gcp__basic_namespace_wide_kubeconfig/csr.yaml",
    "content": "apiVersion: certificates.k8s.io/v1beta1\nkind: CertificateSigningRequest\nmetadata:\n  name: mycsr\nspec:\n  groups:\n  - system:authenticated\n  request: ${BASE64_CSR}\n  usages:\n  - digital signature\n  - key encipherment\n  - server auth\n  - client auth\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_020__gcp__basic_namespace_wide_kubeconfig/dev-ns.yaml",
    "content": "apiVersion: v1\nkind: Namespace\nmetadata:\n  name: development\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_020__gcp__basic_namespace_wide_kubeconfig/kubeconfig.tpl",
    "content": "apiVersion: v1\nkind: Config\nclusters:\n- cluster:\n    certificate-authority-data: ${CLUSTER_CA}\n    server: ${CLUSTER_ENDPOINT}\n  name: ${CLUSTER_NAME}\nusers:\n- name: ${USER}\n  user:\n    client-certificate-data: ${CLIENT_CERTIFICATE_DATA}\ncontexts:\n- context:\n    cluster: ${CLUSTER_NAME}\n    user: dave\n  name: ${USER}-${CLUSTER_NAME}\ncurrent-context: ${USER}-${CLUSTER_NAME}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_020__gcp__basic_namespace_wide_kubeconfig/reset.sh",
    "content": "#!/usr/bin/env bash\n\n\n\nkubectl delete csr mycsr\n\n\nkubectl delete -f role.yaml\n\nkubectl delete -f role-binding.yaml\n\nkubectl delete -f dev-ns.yaml\n\n\nrm -rf kubeconfig dave.crt dave.csr dave.key\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_020__gcp__basic_namespace_wide_kubeconfig/role-binding.yaml",
    "content": "kind: RoleBinding\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: dev\n  namespace: development\nsubjects:\n  - kind: Group\n    name: dev\n    apiGroup: rbac.authorization.k8s.io\nroleRef:\n  kind: Role\n  name: dev\n  apiGroup: rbac.authorization.k8s.io\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_020__gcp__basic_namespace_wide_kubeconfig/role.yaml",
    "content": "kind: Role\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n namespace: development\n name: dev\nrules:\n- apiGroups: [\"\"]\n  resources: [\"pods\", \"services\"]\n  verbs: [\"create\", \"get\", \"update\", \"list\", \"delete\"]\n- apiGroups: [\"apps\"]\n  resources: [\"deployments\"]\n  verbs: [\"create\", \"get\", \"update\", \"list\", \"delete\"]\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_020__gcp__basic_namespace_wide_kubeconfig/www.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: www\n  namespace: development\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: www\n  template:\n    metadata:\n      labels:\n        app: www\n    spec:\n      containers:\n      - name: nginx\n        image: nginx:1.14-alpine\n        ports:\n        - containerPort: 80\n---\napiVersion: v1\nkind: Service\nmetadata:\n  name: www\n  namespace: development\nspec:\n  selector:\n    app: vote\n  type: ClusterIP\n  ports:\n  - port: 80\n    targetPort: 80\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_021__gcp__intermediate_namespace_wide_kubeconfig/README.md",
    "content": "## Objective : \n### 1) To create user DAVE in group 'groupQA' in namespace default and give only Read access to this user.\n\n- Running the run-all.sh\n```bash\n$ ./run-all.sh\nDev cluster\nUsage: ./run-all.sh <namespace> <user-group> <access-type>\nValues for <namespace> : default|kube-system\nValues for <user-group> : groupQA|groupDEV\nValues for <access-type> : R|RW\n\n$ ./run-all.sh default groupQA R\nDev cluster\n-------------------------------\n          Resetting previous changes\n-------------------------------\ncertificatesigningrequest.certificates.k8s.io \"default-csr\" deleted\nrole.rbac.authorization.k8s.io \"role-default\" deleted\nrolebinding.rbac.authorization.k8s.io \"rolebinding-monitoring-ns\" deleted\n-------------------------------\n          Client Cert Generation\n-------------------------------\nGenerating RSA private key, 4096 bit long modulus\n..............................++++\n...............++++\ne is 65537 (0x010001)\n-------------------------------\n          kubeconfig & dave.key generation\n-------------------------------\ncertificatesigningrequest.certificates.k8s.io/default-csr created\nNAME          AGE   REQUESTOR                CONDITION\ndefault-csr   1s    user@gmail.com   Pending\nmycsr         61m   user@gmail.com   Approved,Issued\ncertificatesigningrequest.certificates.k8s.io/default-csr approved\nNAME          AGE   REQUESTOR                CONDITION\ndefault-csr   2s    user@gmail.com   Approved,Issued\nmycsr         61m   user@gmail.com   Approved,Issued\nrole.rbac.authorization.k8s.io/role-default created\nrolebinding.rbac.authorization.k8s.io/rolebinding-monitoring-ns created\n-------------------------------\n          Share the following files with the groupQA\n          ./dev/default/groupQA/kubeconfig\n          ./dev/default/groupQA/dave.key\n\n          Initialization Steps\n          $ export KUBECONFIG=$PWD/kubeconfig\n\n          $ kubectl config set-credentials dave \\\n            --client-key=$PWD/dave.key \\\n            --embed-certs=true\n\n-------------------------------\n```\n\n- At the client workstation\n```bash\n$ ls dave.key kubeconfig\ndave.key   kubeconfig\n\n$ export KUBECONFIG=$PWD/kubeconfig\n\n$ kubectl config set-credentials dave \\\n>             --client-key=$PWD/dave.key \\\n>             --embed-certs=true\nUser \"dave\" set.\n\n$ kubectl version                                                                  \nClient Version: version.Info{Major:\"1\", Minor:\"15\", GitVersion:\"v1.15.5\", GitCommit:\"20c265fef0741dd71a66480e35bd69f18351daea\", GitTreeState:\"clean\", BuildDate:\"2019-10-15T19:16:51Z\", GoVersion:\"go1.12.10\", Compiler:\"gc\", Platform:\"darwin/amd64\"}\nServer Version: version.Info{Major:\"1\", Minor:\"14+\", GitVersion:\"v1.14.10-gke.27\", GitCommit:\"145f9e21a4515947d6fb10819e5a336aff1b6959\", GitTreeState:\"clean\", BuildDate:\"2020-02-21T18:01:40Z\", GoVersion:\"go1.12.12b4\", Compiler:\"gc\", Platform:\"linux/amd64\"}\n\n$ kubectl get pods -n default    \nNo resources found.\n\n$ kubectl get pods -n kube-system\nError from server (Forbidden): pods is forbidden: User \"dave\" cannot list resource \"pods\" in API group \"\" in the namespace \"kube-system\"\n\n$ kubectl apply -f www.yaml      \nError from server (Forbidden): error when creating \"www.yaml\": deployments.apps is forbidden: User \"dave\" cannot create resource \"deployments\" in API group \"apps\" in the namespace \"default\"\nError from server (Forbidden): error when creating \"www.yaml\": services is forbidden: User \"dave\" cannot create resource \"services\" in API group \"\" in the namespace \"default\"\n```\n\n### 1) To create user DAVE in group 'groupDEV' in namespace 'kube-system' and give  ReadWrite access to this user.\n\n- Running run-all.sh\n```bash\n$ ./run-all.sh kube-system groupDEV RW\nDev cluster\n-------------------------------\n          Resetting previous changes\n-------------------------------\ncertificatesigningrequest.certificates.k8s.io \"kube-system-csr\" deleted\nrole.rbac.authorization.k8s.io \"role-kube-system\" deleted\nrolebinding.rbac.authorization.k8s.io \"rolebinding-monitoring-ns\" deleted\n-------------------------------\n          Client Cert Generation\n-------------------------------\nGenerating RSA private key, 4096 bit long modulus\n.................................................................................++++\n............................................++++\ne is 65537 (0x010001)\n-------------------------------\n          kubeconfig & dave.key generation\n-------------------------------\ncertificatesigningrequest.certificates.k8s.io/kube-system-csr created\nNAME              AGE   REQUESTOR                CONDITION\ndefault-csr       23m   user@gmail.com   Approved,Issued\nkube-system-csr   1s    user@gmail.com   Pending\ncertificatesigningrequest.certificates.k8s.io/kube-system-csr approved\nNAME              AGE   REQUESTOR                CONDITION\ndefault-csr       23m   user@gmail.com   Approved,Issued\nkube-system-csr   2s    user@gmail.com   Approved,Issued\nrole.rbac.authorization.k8s.io/role-kube-system created\nrolebinding.rbac.authorization.k8s.io/rolebinding-monitoring-ns created\n-------------------------------\n          Share the following files with the groupDEV\n          ./dev/kube-system/groupDEV/kubeconfig\n          ./dev/kube-system/groupDEV/dave.key\n\n          Initialization Steps\n          $ export KUBECONFIG=$PWD/kubeconfig\n\n          $ kubectl config set-credentials dave \\\n            --client-key=$PWD/dave.key \\\n            --embed-certs=true\n\n-------------------------------\n```\n\n- At the client workstation\n\n```bash\n$ ls dave.key kubeconfig\ndave.key   kubeconfig\n\n$ export KUBECONFIG=$PWD/kubeconfig\n\n$ kubectl config set-credentials dave \\\n>             --client-key=$PWD/dave.key \\\n>             --embed-certs=true\nUser \"dave\" set.\n\n$ kubectl version                                                                  \nClient Version: version.Info{Major:\"1\", Minor:\"15\", GitVersion:\"v1.15.5\", GitCommit:\"20c265fef0741dd71a66480e35bd69f18351daea\", GitTreeState:\"clean\", BuildDate:\"2019-10-15T19:16:51Z\", GoVersion:\"go1.12.10\", Compiler:\"gc\", Platform:\"darwin/amd64\"}\nServer Version: version.Info{Major:\"1\", Minor:\"14+\", GitVersion:\"v1.14.10-gke.27\", GitCommit:\"145f9e21a4515947d6fb10819e5a336aff1b6959\", GitTreeState:\"clean\", BuildDate:\"2020-02-21T18:01:40Z\", GoVersion:\"go1.12.12b4\", Compiler:\"gc\", Platform:\"linux/amd64\"}\n\n$ kubectl get pods               \nError from server (Forbidden): pods is forbidden: User \"dave\" cannot list resource \"pods\" in API group \"\" in the namespace \"default\"\n\n$ kubectl get pods -n kube-system\nNAME                                                        READY   STATUS    RESTARTS   AGE\nmetrics-server-v0.3.1-5c6fbf777-7gm6j                       2/2     Running   0          6h23m\n\n$ kubectl delete pod metrics-server-v0.3.1-5c6fbf777-7gm6j -n kube-system\npod \"metrics-server-v0.3.1-5c6fbf777-7gm6j\" deleted\n\n$ kubectl apply -f www.yaml     \ndeployment.apps/www created\nservice/www created\n\n$ kubectl delete -f www.yaml\ndeployment.apps \"www\" deleted\nservice \"www\" deleted\n```"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_021__gcp__intermediate_namespace_wide_kubeconfig/admin-run.sh",
    "content": "#!/usr/bin/env bash\n\nif [ $# -lt 4 ]\nthen\n  echo \"Usage: ./admin-run.sh <namespace-folder> <user-group> <access-type> <kubeconfig-cluster-folder>\"\n  exit 0\nfi\n\nFOLDER_NAMESPACE=$1\nFOLDER_USER_GROUP=$2\nACCESS_TYPE=$3\nKUBECONFIG_CLUSTER_FOLDER=$4\n\n# Encoding the .csr file in base64\nexport BASE64_CSR=$(cat ./$KUBECONFIG_CLUSTER_FOLDER/$FOLDER_NAMESPACE/$FOLDER_USER_GROUP/dave.csr | base64 | tr -d '\\n')\nexport NAME_OF_CSR=\"$FOLDER_NAMESPACE-csr\"\n# Substitution of the BASE64_CSR env variable and creation of the CertificateSigninRequest resource\ncat ./common-resources/csr.yaml | envsubst > ./$KUBECONFIG_CLUSTER_FOLDER/$FOLDER_NAMESPACE/$FOLDER_USER_GROUP/csr.yaml\ncat ./common-resources/csr.yaml | envsubst | kubectl apply -f -\n\nkubectl get csr\n\nkubectl certificate approve $NAME_OF_CSR\n\nkubectl get csr\n\nkubectl get csr $NAME_OF_CSR -o jsonpath='{.status.certificate}' \\\n  | base64 --decode > ./$KUBECONFIG_CLUSTER_FOLDER/$FOLDER_NAMESPACE/$FOLDER_USER_GROUP/dave.crt\n\n\nif [ \"$ACCESS_TYPE\" == \"R\" ]\nthen\n  kubectl apply -f ./$KUBECONFIG_CLUSTER_FOLDER/$FOLDER_NAMESPACE/$FOLDER_USER_GROUP/role-readonly.yaml\nfi\n\nif [ \"$ACCESS_TYPE\" == \"RW\" ]\nthen\n  kubectl apply -f ./$KUBECONFIG_CLUSTER_FOLDER/$FOLDER_NAMESPACE/$FOLDER_USER_GROUP/role-readwrite.yaml\nfi\n\n\nkubectl apply -f ./$KUBECONFIG_CLUSTER_FOLDER/$FOLDER_NAMESPACE/$FOLDER_USER_GROUP/role-binding.yaml\n\n\n# User identifier\nexport USER=\"dave\"\n# Cluster Name (get it from the current context)\nexport CLUSTER_NAME=$(kubectl config view --minify -o jsonpath={.current-context})\n# Client certificate\nexport CLIENT_CERTIFICATE_DATA=$(kubectl get csr $NAME_OF_CSR -o jsonpath='{.status.certificate}')\n# Cluster Certificate Authority\nexport CLUSTER_CA=$(kubectl config view --raw -o json | jq -r '.clusters[] | select(.name == \"'$(kubectl config current-context)'\") | .cluster.\"certificate-authority-data\"')\n#export CLUSTER_CA=$(kubectl config view --raw -o json | jq -r '.clusters[].cluster.\"certificate-authority-data\"')\n\n# API Server endpoint\nexport CLUSTER_ENDPOINT=$(kubectl config view --raw -o json | jq -r '.clusters[] | select(.name == \"'$(kubectl config current-context)'\") | .cluster.\"server\"')\n#export CLUSTER_ENDPOINT=$(kubectl config view --raw -o json | jq -r '.clusters[].cluster.\"server\"')\n\ncat ./common-resources/kubeconfig.tpl | envsubst > ./$KUBECONFIG_CLUSTER_FOLDER/$FOLDER_NAMESPACE/$FOLDER_USER_GROUP/kubeconfig\n\n\nrm -rf ./$KUBECONFIG_CLUSTER_FOLDER/$FOLDER_NAMESPACE/$FOLDER_USER_GROUP/csr.cnf \\\n./$KUBECONFIG_CLUSTER_FOLDER/$FOLDER_NAMESPACE/$FOLDER_USER_GROUP/dave.crt \\\n./$KUBECONFIG_CLUSTER_FOLDER/$FOLDER_NAMESPACE/$FOLDER_USER_GROUP/dave.csr\n\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_021__gcp__intermediate_namespace_wide_kubeconfig/client-run.sh",
    "content": "#!/usr/bin/env bash\n\n\nif [ $# -lt 4 ]\nthen\n  echo \"Usage: ./client-run.sh <namespace-folder> <user-group> <access-type> <kubeconfig-cluster-folder>\"\n  exit 0\nfi\n\nFOLDER_NAMESPACE=$1\nFOLDER_USER_GROUP=$2\nACCESS_TYPE=$3\nKUBECONFIG_CLUSTER_FOLDER=$4\n\n\n\n\nmkdir -p ./$KUBECONFIG_CLUSTER_FOLDER/$FOLDER_NAMESPACE/$FOLDER_USER_GROUP/\n\ncp -rfp ./common-resources/csr.cnf-template ./$KUBECONFIG_CLUSTER_FOLDER/$FOLDER_NAMESPACE/$FOLDER_USER_GROUP/csr.cnf\ncp -rfp ./common-resources/role-binding.yaml-template ./$KUBECONFIG_CLUSTER_FOLDER/$FOLDER_NAMESPACE/$FOLDER_USER_GROUP/role-binding.yaml\n\nif [ \"$ACCESS_TYPE\" == \"R\" ]\nthen\n  cp -rfp ./common-resources/role-readonly.yaml-template ./$KUBECONFIG_CLUSTER_FOLDER/$FOLDER_NAMESPACE/$FOLDER_USER_GROUP/role-readonly.yaml\nfi\n\nif [ \"$ACCESS_TYPE\" == \"RW\" ]\nthen\n  cp -rfp ./common-resources/role-readwrite.yaml-template ./$KUBECONFIG_CLUSTER_FOLDER/$FOLDER_NAMESPACE/$FOLDER_USER_GROUP/role-readwrite.yaml\nfi\n\n\negrep -rl \"SUBSTITUTE_GROUPNAME\" ./$KUBECONFIG_CLUSTER_FOLDER/$FOLDER_NAMESPACE/$FOLDER_USER_GROUP/ | xargs sed -i  \"s/SUBSTITUTE_GROUPNAME/$FOLDER_USER_GROUP/g\"\n\negrep -rl \"SUBSTITUTE_NAMESPACE\" ./$KUBECONFIG_CLUSTER_FOLDER/$FOLDER_NAMESPACE/$FOLDER_USER_GROUP/ | xargs sed -i  \"s/SUBSTITUTE_NAMESPACE/$FOLDER_NAMESPACE/g\"\n\nmkdir -p ./$KUBECONFIG_CLUSTER_FOLDER/$FOLDER_NAMESPACE/$FOLDER_USER_GROUP/\n\nopenssl genrsa -out ./$KUBECONFIG_CLUSTER_FOLDER/$FOLDER_NAMESPACE/$FOLDER_USER_GROUP/dave.key 4096\n\nopenssl req -config ./$KUBECONFIG_CLUSTER_FOLDER/$FOLDER_NAMESPACE/$FOLDER_USER_GROUP/csr.cnf -new -key ./$KUBECONFIG_CLUSTER_FOLDER/$FOLDER_NAMESPACE/$FOLDER_USER_GROUP/dave.key -nodes -out ./$KUBECONFIG_CLUSTER_FOLDER/$FOLDER_NAMESPACE/$FOLDER_USER_GROUP/dave.csr\n\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_021__gcp__intermediate_namespace_wide_kubeconfig/common-resources/csr.cnf-template",
    "content": "[ req ]\ndefault_bits = 2048\nprompt = no\ndefault_md = sha256\ndistinguished_name = dn\n[ dn ]\nCN = dave\nO = SUBSTITUTE_GROUPNAME\n[ v3_ext ]\nauthorityKeyIdentifier=keyid,issuer:always\nbasicConstraints=CA:FALSE\nkeyUsage=keyEncipherment,dataEncipherment\nextendedKeyUsage=serverAuth,clientAuth\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_021__gcp__intermediate_namespace_wide_kubeconfig/common-resources/csr.yaml",
    "content": "apiVersion: certificates.k8s.io/v1beta1\nkind: CertificateSigningRequest\nmetadata:\n  name: ${NAME_OF_CSR}\nspec:\n  groups:\n  - system:authenticated\n  request: ${BASE64_CSR}\n  usages:\n  - digital signature\n  - key encipherment\n  - server auth\n  - client auth\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_021__gcp__intermediate_namespace_wide_kubeconfig/common-resources/kubeconfig.tpl",
    "content": "apiVersion: v1\nkind: Config\nclusters:\n- cluster:\n    certificate-authority-data: ${CLUSTER_CA}\n    server: ${CLUSTER_ENDPOINT}\n  name: ${CLUSTER_NAME}\nusers:\n- name: ${USER}\n  user:\n    client-certificate-data: ${CLIENT_CERTIFICATE_DATA}\ncontexts:\n- context:\n    cluster: ${CLUSTER_NAME}\n    user: dave\n  name: ${USER}-${CLUSTER_NAME}\ncurrent-context: ${USER}-${CLUSTER_NAME}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_021__gcp__intermediate_namespace_wide_kubeconfig/common-resources/role-binding.yaml-template",
    "content": "kind: RoleBinding\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: rolebinding-monitoring-ns\n  namespace: SUBSTITUTE_NAMESPACE\nsubjects:\n  - kind: Group\n    name: SUBSTITUTE_GROUPNAME\n    apiGroup: rbac.authorization.k8s.io\nroleRef:\n  kind: Role\n  name: role-SUBSTITUTE_NAMESPACE\n  apiGroup: rbac.authorization.k8s.io\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_021__gcp__intermediate_namespace_wide_kubeconfig/common-resources/role-readonly.yaml-template",
    "content": "kind: Role\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n namespace: SUBSTITUTE_NAMESPACE\n name: role-SUBSTITUTE_NAMESPACE\nrules:\n- apiGroups: [\"\"]\n  resources: [\"pods\", \"services\"]\n  verbs: [\"get\", \"list\"]\n- apiGroups: [\"apps\"]\n  resources: [\"deployments\"]\n  verbs: [\"get\", \"list\"]\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_021__gcp__intermediate_namespace_wide_kubeconfig/common-resources/role-readwrite.yaml-template",
    "content": "kind: Role\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  namespace: SUBSTITUTE_NAMESPACE\n  name: role-SUBSTITUTE_NAMESPACE\nrules:\n  - apiGroups: [\"\"]\n    resources: [\"pods\", \"services\"]\n    verbs: [\"create\", \"get\", \"update\", \"list\", \"delete\"]\n  - apiGroups: [\"apps\"]\n    resources: [\"deployments\"]\n    verbs: [\"create\", \"get\", \"update\", \"list\", \"delete\"]\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_021__gcp__intermediate_namespace_wide_kubeconfig/dev/default/groupQA/csr.yaml",
    "content": "apiVersion: certificates.k8s.io/v1beta1\nkind: CertificateSigningRequest\nmetadata:\n  name: default-csr\nspec:\n  groups:\n  - system:authenticated\n  request: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0KTUlJRVpqQ0NBazRDQVFBd0lURU5NQXNHQTFVRUF3d0VaR0YyWlRFUU1BNEdBMVVFQ2d3SFozSnZkWEJSUVRDQwpBaUl3RFFZSktvWklodmNOQVFFQkJRQURnZ0lQQURDQ0Fnb0NnZ0lCQU11WG9SSncxM3g0V0l3UWk1cmcwbWF6ClFKckk4amlMNlhIa2E2UzB0cWxCS1AwZFI4Wnpncmt2T0k1QVV0NWllbVEwZ0FIbG1kMXBNcUZodTV3RW5renIKdGM0ZTVqK3Blb01MWkFVbEZmaVVmVU95RSttSU5YSE1JOE5GeTZ1VXJCSW1ZaU5CemxBbENLQk1SSHY1QjdWdgpSTkpNQnRsT2MzOENQKzJlWjQ2UmxsUk5pb2dndUEvVjVmS0FQN3BidXVRTktKNExGWHhvUVlPMmxKNlhqajgxCnpMWGZKRGFYdi9LZGRXc0xZZmkrOTFCVmNmSnIxTUdISDBQNW44eE5DWHg5YTR4MlhjNk9uTkpOZnRqemhNY3cKem51Y0JvZXZCcW4ydUtSMGZ2c1FDVWtQb0pYM2NyblVnc0YzMzRXNUJxWWczWHVRRVdZZ2JLSDZhMDhIa1JROApqeFFLeTA3eUx0ZjFja3NyOVBPQTQ2Yy9xVTYrM3ZUb1k4UWhsYTZFclk0akV2VStHSmZveExSelp0ZUd3QnduCjJkVys5SmUzeVIwTkJMSFJMR3hKaDdBV09LdHo1KzRCbysvc0VmVk9oNWF6RVgrQUdWS0VpQjFZR3c5TGNTT04KNlR5VXJPUkk5WStwQlk5TmdWNTBMbVdwSmV2M281TnNCeUl1TGZ1ZFpEUnQ2enprV3YwLytiK2lTR0tzM3UwZApQakJnSnN4RERJcVFBYnlwaVJoZE8wTzNVNHkzdm55Z1c2M3B3TWhXRFE5T1N4VHRzU0lCNXo5S1NJRWNsSUs2ClRrWjE1am9qcEpRdlppN0hkVnhBUDl3TEV1MjMyem9lRE9MZWtYUWE0SVVYSSs5V0ZPcXNNUlB6Rmg4aHdaZlMKOERMZy9vR1J3TXQ0MmREUVNPdXpBZ01CQUFHZ0FEQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FnRUFZdkFKNERwSwpMc2JCVjhodmh3b3NKOWlJTlN6eFNDZW4rOVhDQXVpQVdRSTFRWVJab20rYjRnekRwd0FyTjRGdm9vWSs2cWdnClhWd0pONWRsY1ZOWTc2eno5N3ppb3FaL0RUMDVqQTlNU3poRXp4M3ZMT1NoZU9wZ1RTYUp5VGV0MWZXY21CV3MKWE1mWnF1c3dJVTJTTE1uSjRNa1JBZzFFMmYvd0JnVG91elV3L0tRM0FDdkhkYnlNdjR4clBuajY1YjB1cVRZagpaazFFRkdqNFhZWU9oM0JhRGlJOG9kTGpMNVc3MTljai9QUjhIQzdSb3ZnSFh6dTBya1ZoUERaUXJTbVR4VTZTCjh0OC9xRk5LS1pKOEh6RGFKQ0hqY1FrZFh4NGcyR2xhSy9Vd0dkbTJZaE9OdzRlL3lNWUM2MHpONEZQZVJUdW0KZXpGRGE0WDdVUGpUZ2VBanNyUHJoYlNKVDVhdWxoOUJpRHBNMXQvTVRYS0FoODAvc1JoTWhXTEdPUHUxc0xTWQpoQVRUUUVNWTMzUWVWeGo4dEtnYXpxQWlZYi9INkcrWTZpWVZQeXhtZjZ4M3pjMEJMQUFOemUzc3Q3SFQ3QjhmCm9vYzJxT1BaYmNQQnMvbEpPWVArYUQ5VGlNYlVRVWJmcWZJdUxWaEFxK01OZlNzaFJhcEhNWGZaNVhENk45Qm8Kb2w1aGxnNzkzRXhaVFpVSlJuUnhqa1lrcE52UnJSRG11STQvdzRxcUVzTEpwT0x1T0EzVlczbXVGTUFRY3pHQQp1TEgwZTR3cEV4M25IU3liRFhuUE9kbU9VV0xlWWR6WmtHdEFKZHRwaUpoU1ZPb1B4NVFIRUpXbGVZVjlBMTJaCncvMVRvZW4yZjdjWHBGKzBXeGlTUmVPQWwvSCs5djZCOHlRPQotLS0tLUVORCBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0K\n  usages:\n  - digital signature\n  - key encipherment\n  - server auth\n  - client auth\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_021__gcp__intermediate_namespace_wide_kubeconfig/dev/default/groupQA/dave.key",
    "content": "-----BEGIN RSA PRIVATE KEY-----\n\n....................\n\n-----END RSA PRIVATE KEY-----\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_021__gcp__intermediate_namespace_wide_kubeconfig/dev/default/groupQA/kubeconfig",
    "content": "apiVersion: v1\nkind: Config\nclusters:\n- cluster:\n    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURDekNDQWZPZ0F3SUJBZ0lRY25jcGJKc0Zsak05TldGVWhUU0xwREFOQmdrcWhraUc5dzBCQVFzRkFEQXYKTVMwd0t3WURWUVFERXlSbU5EQTBOR0ZqT1MxbU4yUTJMVFF4TURRdFlUYzJNQzAxTW1OaVpqTmxNMlUzWWpJdwpIaGNOTWpBd05EQTRNVEl4T1RFd1doY05NalV3TkRBM01UTXhPVEV3V2pBdk1TMHdLd1lEVlFRREV5Um1OREEwCk5HRmpPUzFtTjJRMkxUUXhNRFF0WVRjMk1DMDFNbU5pWmpObE0yVTNZakl3Z2dFaU1BMEdDU3FHU0liM0RRRUIKQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURUVzQ1Mi93dUxqU2hBN3ErRE56VkVFamp6dHlJWkdGOWpKYjcwZGlZZAo3VDUxbFNYVHJIRXlBdWdweUl1cVBZczZJc0NNcUsweXVpTklGcC9xdlY0N2UzMlZGZk9qZUo3VGtxUm9pclFGCjJxVXlHNytXNnFGaVB1Wm5ERSsxZzJWN21DNXd2ZmttMjBlSnI3bUFyY0h1TGFmdFNjNVp6MzZzY09RVGh2QmwKYTJsanBKeFVQK1BDWnBsSHJxNGxuTmFvb2RoTWVwRzVRanA0ZTdOSHB0U0E5U0MxdTkvSTZ3cy8yckhhVHdaVAozYkNjWVcrTHY4R1NNUGN1V3pFNlBqYkFnak0zKytnWjg2Wkk4Nm41OGY0L1FETWZlbTlqZjBXWStxeXAyNWcxCjZmTE5QbEp2RDY2OWJCMTZNMkhiZWFvTkVaM3Qzcll3azA2M2FaVWxhcm9SQWdNQkFBR2pJekFoTUE0R0ExVWQKRHdFQi93UUVBd0lDQkRBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFCWQpGckxmN28rblV4VXppU1c0WWE4aERVckErVndUa1kwK1ZsS2VGUnpzeFE4WlE5Qm53SU5mZVBIUzBuYlN4L3R1CnpJVERHUEtqbExkeHZwMzJOVmVCUk5XSVQyMVhFWE1oTDhYRCtUWU9kNGdNVDBLUGxzNTV4eEJyS01lSzlkdGwKOWluZ2dGVkdESS9ya1ozZForU2Zyamt1aFZMcnd5MnJ5RWtNbVJPRzJFc0dVbW10ZmcrU2VUQVdUdHFrVnBDMgpZd2ZRZFh4WnpxSlNVK2Y1bzljYTlQWmFTMDA1OGk1cVI0RHdqbFdpNE50Zzl2MkJCZm1KQmE5R3hvSHJ4dkVJCkpMNWVBdEZnQ2VEdXVCc0tOZ21HRElSK1lJZ2dPMkJiTVNlbHZOalFRYlQ5NmRBSXFaZ1VwZlBxWU5teVN4ODcKeFU2N0ZzYVNGL2sxdUJ5Y0JRQkUKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=\n    server: https://35.226.83.29\n  name: gke_gcloud-262311_us-central1-c_cluster-1\nusers:\n- name: dave\n  user:\n    client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUQ2akNDQXRLZ0F3SUJBZ0lRU2Rpejd2TTA4VXZLYWhUZnovWXg1ekFOQmdrcWhraUc5dzBCQVFzRkFEQXYKTVMwd0t3WURWUVFERXlSbU5EQTBOR0ZqT1MxbU4yUTJMVFF4TURRdFlUYzJNQzAxTW1OaVpqTmxNMlUzWWpJdwpIaGNOTWpBd05EQTRNVGt4TmpBd1doY05NalV3TkRBM01Ua3hOakF3V2pBaE1SQXdEZ1lEVlFRS0V3ZG5jbTkxCmNGRkJNUTB3Q3dZRFZRUURFd1JrWVhabE1JSUNJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBZzhBTUlJQ0NnS0MKQWdFQXk1ZWhFbkRYZkhoWWpCQ0xtdURTWnJOQW1zanlPSXZwY2VScnBMUzJxVUVvL1IxSHhuT0N1Uzg0amtCUwozbUo2WkRTQUFlV1ozV2t5b1dHN25BU2VUT3Uxemg3bVA2bDZnd3RrQlNVVitKUjlRN0lUNllnMWNjd2p3MFhMCnE1U3NFaVppSTBIT1VDVUlvRXhFZS9rSHRXOUUwa3dHMlU1emZ3SS83WjVuanBHV1ZFMktpQ0M0RDlYbDhvQS8KdWx1NjVBMG9uZ3NWZkdoQmc3YVVucGVPUHpYTXRkOGtOcGUvOHAxMWF3dGgrTDczVUZWeDhtdlV3WWNmUS9tZgp6RTBKZkgxcmpIWmR6bzZjMGsxKzJQT0V4ekRPZTV3R2g2OEdxZmE0cEhSKyt4QUpTUStnbGZkeXVkU0N3WGZmCmhia0dwaURkZTVBUlppQnNvZnByVHdlUkZEeVBGQXJMVHZJdTEvVnlTeXYwODREanB6K3BUcjdlOU9oanhDR1YKcm9TdGppTVM5VDRZbCtqRXRITm0xNGJBSENmWjFiNzBsN2ZKSFEwRXNkRXNiRW1Ic0JZNHEzUG43Z0dqNyt3Ugo5VTZIbHJNUmY0QVpVb1NJSFZnYkQwdHhJNDNwUEpTczVFajFqNmtGajAyQlhuUXVaYWtsNi9lamsyd0hJaTR0Cis1MWtORzNyUE9SYS9ULzV2NkpJWXF6ZTdSMCtNR0FtekVNTWlwQUJ2S21KR0YwN1E3ZFRqTGUrZktCYnJlbkEKeUZZTkQwNUxGTzJ4SWdIblAwcElnUnlVZ3JwT1JuWG1PaU9rbEM5bUxzZDFYRUEvM0FzUzdiZmJPaDRNNHQ2UgpkQnJnaFJjajcxWVU2cXd4RS9NV0h5SEJsOUx3TXVEK2daSEF5M2paME5CSTY3TUNBd0VBQWFNUU1BNHdEQVlEClZSMFRBUUgvQkFJd0FEQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFOS1Avb2tkYWlJdTg3NE4zUVV4czdtSE8KUTR5dkxNcDdpNHhaQjhIWTVhTUU4SHFmYUpCb3ZpeVdsN2c2TEVHWDZtU29vSDBaVnBqQ2RwVjhtL3l3MWlOQwpWM09BZTVLTFRja1hXKzcwY0V4ZE9TWEc1aFZRQU1PdHhndDRDSzErWVRRN0g2VFZ0elZIeHNpdW13aU5XWno4CkZDdDhVRytsaVNLeFdHd2RQYzBZRlkzOGtPcmFMbXREcTg1cnJCS1F1RVIrZWkyU09IeXF5cTc4TVhCem84RTYKS0NPVThmQnZaZnRuVVJNdlNkeHVOSk54N0J3T3RLdWtaQ2crUC9mb0g2R0JCcnlKZ1dGK1YzdVpaV3gzaE52UgozSnBzaHdoYmFDNjRiRU9MbWpoRDIvSlRqYkI5aWh2WUNnWllESFA5Mys1MGFxODNLdkVnR3J2S08rR3NmZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K\ncontexts:\n- context:\n    cluster: gke_gcloud-262311_us-central1-c_cluster-1\n    user: dave\n  name: dave-gke_gcloud-262311_us-central1-c_cluster-1\ncurrent-context: dave-gke_gcloud-262311_us-central1-c_cluster-1\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_021__gcp__intermediate_namespace_wide_kubeconfig/dev/default/groupQA/role-binding.yaml",
    "content": "kind: RoleBinding\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: rolebinding-monitoring-ns\n  namespace: default\nsubjects:\n  - kind: Group\n    name: groupQA\n    apiGroup: rbac.authorization.k8s.io\nroleRef:\n  kind: Role\n  name: role-default\n  apiGroup: rbac.authorization.k8s.io\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_021__gcp__intermediate_namespace_wide_kubeconfig/dev/default/groupQA/role-readonly.yaml",
    "content": "kind: Role\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n namespace: default\n name: role-default\nrules:\n- apiGroups: [\"\"]\n  resources: [\"pods\", \"services\"]\n  verbs: [\"get\", \"list\"]\n- apiGroups: [\"apps\"]\n  resources: [\"deployments\"]\n  verbs: [\"get\", \"list\"]\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_021__gcp__intermediate_namespace_wide_kubeconfig/dev/kube-system/groupDEV/csr.yaml",
    "content": "apiVersion: certificates.k8s.io/v1beta1\nkind: CertificateSigningRequest\nmetadata:\n  name: kube-system-csr\nspec:\n  groups:\n  - system:authenticated\n  request: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0KTUlJRVp6Q0NBazhDQVFBd0lqRU5NQXNHQTFVRUF3d0VaR0YyWlRFUk1BOEdBMVVFQ2d3SVozSnZkWEJFUlZZdwpnZ0lpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElDRHdBd2dnSUtBb0lDQVFET1lLQVhQdWpHRGVKWUpWWU4vSmNkClBJWHcrVUJvY3VBWHEyQzdMK2JhZ3lhNTdZTGNnajNMT1pxdWVQSFpKSGhKcWZZUUpDcjJqN0kxbG1NSXFMOVoKNVBZZ3RLN0lka2dVN3NDWUZ6SnI2V3phUFByTngveGV5Lyt3NFdxQjk4U0Y2QU5aSi9uY3A5ZUxUTzVYVVBySgpZelIxNTJ5ZVVDdEpuMGZMVFkvQ2VYK1lGKzltYVo4UU5Fd0c5bTBCMGE5T1RQS2VJNU1relhRZjhTWjZ4LzlsCkFTUjUwU2JyckZDbnl6TlAxZ2FPZ00vMFNqNGZsdFY2Z3l1aE82YjB3OVEwV3RnTkthaWt6VElPU0hVcXNyanIKQldIZUp1cFh4dWFQd01JK3pvd3BGcmlqRW1tbWhLaG4yQlJaWlJmZGtYdm5ndjZWSDZ5VThydG1hbld1UWwvdgp3ci9Nbm5OSU5wWlBnSXpFTU1yN2NGbHUzVlQ0akp1eVJxeVRYTDJFd3pwM0dkMWRJY2pLdG5jeTJhM1JseFB5CjRWd3d3WE9mbHFsb2xJS2Z4OE1YMkhoeVhYV0lLNHl6MVRhVzhQQTMwNTRuRVFmUS9hbXJtNlA1ZU42TkNjV3MKSHIzVy9HYUpEK1Joc2ZiMGs3YjdXTWZSbTMrYnJXcWI0OGZtK0M5dktPUkpaZGFPRmh5OFJmRTBKLzFyc0RwUQp3eGR1NHVlWnFrcHowVkdFVWVKZWZVSmN5L1R3c3M0WG1hMEZXQUo2WEJ3RXRoa3hlRDVRaHprdGQwcUI0UWtICnUwdDFUYit1WFpOY3NxTUVGdDUvbkxkTE5hKzVpaG1kS0VNUGxVSmUzRURlU0YvbkQ2MWtLaUExcTFHNG1LWC8KNWppc3ZRQUlhNHREb0gxLzUzblpud0lEQVFBQm9BQXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnSUJBQUlmUDhJQwpOMnhCVDZrbUVFQWV5ZGdiNEtxeHVrVFBZdDh2ZTJsZitwbHlVSm9XV0tOZTZXd2czV29zeFVBY3RrQ1F1MDJMClE3ejVXWk9qU2F3ZTd0b08wMDZJM2Zickwwb2wrQkt1VHpJdXlDN1hyZGN6TTRLWWIzZ1l0L0RUYzNobEd5OUMKcHo1MmxUZGQ3Y1JpQTRCRnVVN0N6SWZHTG5odEVwM24yYWk4STlPTmxOclZjWWlHbUllWkF4Z1ZVTFJPcGgrUAp0K0RNaDRya1FSNUNhcDlHdzVSbUswU0dna1dHNVFja2gzVkp3SmV0Qzg2M2YxajFCaFpkVjVjM05yTGJoaGx0CkNjSnVVeDlHcXVUVlFNWHZnYm1KMjlxaVFTWmxKN1NpYkwwOHp3MXN0SExkRlZxMDZicGcrVnIzem16UjRqamkKOGtqVzR3eFFOYnZNY2g0OUJubGs2WVVWdWxEbW9kYjh5UzVEZjJESFdWWEFkdlQ3OGNHNmtyaVZXNnBNKzROZQpsTHdGR25WV1Bpamx5K1lVQlNqbkpCQkNPZ0cwYmNnektJbG1qOXRTVnpFVWtnUWhHdERBRG5VY2N4NFRiMUlHCjRhK0F0azNvV0FIMmtzRnpzenpiNUwwS3RJVDZqdnR0ZGZRdWZXUDVERnl3RGMvSEZ4WlVjTGhXWldha2dMSXUKaWhEbUV6MjFDaTdZN2pZUWM5ZFA3N1B4V0YwNTBSSGFrOTgxYXBoVTZpUEphN1EzWmZ5b1Q1eWRvME82eWtZdQpSa095WERWTEQwN1VWZkhLMTVDTkVJMk5xT0pTcHZZSkFMc1lReDNsQ2F2UFdqMlJ0K3BPY3lPQXdzZlp2Nk5nCmQ0QU8va3FkUDFhM043MnNZWU5RL0doRUJOTGs2OXJZYVR1agotLS0tLUVORCBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0K\n  usages:\n  - digital signature\n  - key encipherment\n  - server auth\n  - client auth\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_021__gcp__intermediate_namespace_wide_kubeconfig/dev/kube-system/groupDEV/dave.key",
    "content": "-----BEGIN RSA PRIVATE KEY-----\n-----END RSA PRIVATE KEY-----\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_021__gcp__intermediate_namespace_wide_kubeconfig/dev/kube-system/groupDEV/kubeconfig",
    "content": "apiVersion: v1\nkind: Config\nclusters:\n- cluster:\n    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURDekNDQWZPZ0F3SUJBZ0lRY25jcGJKc0Zsak05TldGVWhUU0xwREFOQmdrcWhraUc5dzBCQVFzRkFEQXYKTVMwd0t3WURWUVFERXlSbU5EQTBOR0ZqT1MxbU4yUTJMVFF4TURRdFlUYzJNQzAxTW1OaVpqTmxNMlUzWWpJdwpIaGNOTWpBd05EQTRNVEl4T1RFd1doY05NalV3TkRBM01UTXhPVEV3V2pBdk1TMHdLd1lEVlFRREV5Um1OREEwCk5HRmpPUzFtTjJRMkxUUXhNRFF0WVRjMk1DMDFNbU5pWmpObE0yVTNZakl3Z2dFaU1BMEdDU3FHU0liM0RRRUIKQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURUVzQ1Mi93dUxqU2hBN3ErRE56VkVFamp6dHlJWkdGOWpKYjcwZGlZZAo3VDUxbFNYVHJIRXlBdWdweUl1cVBZczZJc0NNcUsweXVpTklGcC9xdlY0N2UzMlZGZk9qZUo3VGtxUm9pclFGCjJxVXlHNytXNnFGaVB1Wm5ERSsxZzJWN21DNXd2ZmttMjBlSnI3bUFyY0h1TGFmdFNjNVp6MzZzY09RVGh2QmwKYTJsanBKeFVQK1BDWnBsSHJxNGxuTmFvb2RoTWVwRzVRanA0ZTdOSHB0U0E5U0MxdTkvSTZ3cy8yckhhVHdaVAozYkNjWVcrTHY4R1NNUGN1V3pFNlBqYkFnak0zKytnWjg2Wkk4Nm41OGY0L1FETWZlbTlqZjBXWStxeXAyNWcxCjZmTE5QbEp2RDY2OWJCMTZNMkhiZWFvTkVaM3Qzcll3azA2M2FaVWxhcm9SQWdNQkFBR2pJekFoTUE0R0ExVWQKRHdFQi93UUVBd0lDQkRBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFCWQpGckxmN28rblV4VXppU1c0WWE4aERVckErVndUa1kwK1ZsS2VGUnpzeFE4WlE5Qm53SU5mZVBIUzBuYlN4L3R1CnpJVERHUEtqbExkeHZwMzJOVmVCUk5XSVQyMVhFWE1oTDhYRCtUWU9kNGdNVDBLUGxzNTV4eEJyS01lSzlkdGwKOWluZ2dGVkdESS9ya1ozZForU2Zyamt1aFZMcnd5MnJ5RWtNbVJPRzJFc0dVbW10ZmcrU2VUQVdUdHFrVnBDMgpZd2ZRZFh4WnpxSlNVK2Y1bzljYTlQWmFTMDA1OGk1cVI0RHdqbFdpNE50Zzl2MkJCZm1KQmE5R3hvSHJ4dkVJCkpMNWVBdEZnQ2VEdXVCc0tOZ21HRElSK1lJZ2dPMkJiTVNlbHZOalFRYlQ5NmRBSXFaZ1VwZlBxWU5teVN4ODcKeFU2N0ZzYVNGL2sxdUJ5Y0JRQkUKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=\n    server: https://35.226.83.29\n  name: gke_gcloud-262311_us-central1-c_cluster-1\nusers:\n- name: dave\n  user:\n    client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUQ2ekNDQXRPZ0F3SUJBZ0lRYlM0ZCtFbFAxQ2prRU93RzNBVUhzakFOQmdrcWhraUc5dzBCQVFzRkFEQXYKTVMwd0t3WURWUVFERXlSbU5EQTBOR0ZqT1MxbU4yUTJMVFF4TURRdFlUYzJNQzAxTW1OaVpqTmxNMlUzWWpJdwpIaGNOTWpBd05EQTRNVGt6T1RBNVdoY05NalV3TkRBM01Ua3pPVEE1V2pBaU1SRXdEd1lEVlFRS0V3aG5jbTkxCmNFUkZWakVOTUFzR0ExVUVBeE1FWkdGMlpUQ0NBaUl3RFFZSktvWklodmNOQVFFQkJRQURnZ0lQQURDQ0Fnb0MKZ2dJQkFNNWdvQmMrNk1ZTjRsZ2xWZzM4bHgwOGhmRDVRR2h5NEJlcllMc3Y1dHFESnJudGd0eUNQY3M1bXE1NAo4ZGtrZUVtcDloQWtLdmFQc2pXV1l3aW92MW5rOWlDMHJzaDJTQlR1d0pnWE1tdnBiTm84K3MzSC9GN0wvN0RoCmFvSDN4SVhvQTFrbitkeW4xNHRNN2xkUStzbGpOSFhuYko1UUswbWZSOHROajhKNWY1Z1g3MlpwbnhBMFRBYjIKYlFIUnIwNU04cDRqa3lUTmRCL3hKbnJILzJVQkpIblJKdXVzVUtmTE0wL1dCbzZBei9SS1BoK1cxWHFESzZFNwpwdlREMURSYTJBMHBxS1ROTWc1SWRTcXl1T3NGWWQ0bTZsZkc1by9Bd2o3T2pDa1d1S01TYWFhRXFHZllGRmxsCkY5MlJlK2VDL3BVZnJKVHl1MlpxZGE1Q1grL0N2OHllYzBnMmxrK0FqTVF3eXZ0d1dXN2RWUGlNbTdKR3JKTmMKdllURE9uY1ozVjBoeU1xMmR6TFpyZEdYRS9MaFhEREJjNStXcVdpVWdwL0h3eGZZZUhKZGRZZ3JqTFBWTnBidwo4RGZUbmljUkI5RDlxYXViby9sNDNvMEp4YXdldmRiOFpva1A1R0d4OXZTVHR2dFl4OUdiZjV1dGFwdmp4K2I0CkwyOG81RWxsMW80V0hMeEY4VFFuL1d1d09sRERGMjdpNTVtcVNuUFJVWVJSNGw1OVFsekw5UEN5emhlWnJRVlkKQW5wY0hBUzJHVEY0UGxDSE9TMTNTb0hoQ1FlN1MzVk52NjVkazF5eW93UVczbitjdDBzMXI3bUtHWjBvUXcrVgpRbDdjUU41SVgrY1ByV1FxSURXclViaVlwZi9tT0t5OUFBaHJpME9nZlgvbmVkbWZBZ01CQUFHakVEQU9NQXdHCkExVWRFd0VCL3dRQ01BQXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBTWJUK0x0SXZBbVJpOExWTmk1SWc4a0EKQVpMUkhVRFBDR1BxNCtNdXJCQnVKZXNzTVJqbmFkK0VTRUJ5U3l0MnpHTm1LUlBTaWRqUEswUTl4M1B1Vnk4cgpuUEwyNmNqZXBRM1JTUEFpNitKVnZjUnBpWU0zWWFmMWhNTlJTRlN4ekpNd0N6TmdoSGlrNDc3Si9ndW5NSDlvCkxPM2oxL1RGbDJkSmljcnY5OS9aZE8xcW03a2IvM0NCZVRRaEordzJxWUZ6ME9HL2xrb3ZCSytVN0JLNlUrc1EKRjJQREZzR2VBWEhvQm4wYXp2TTBsdkdGUzZaN3oydHNLdGRqR2ovUEtLVFp3Q0g2T1NCK3NLTFpleDZjeHI4bQpwaDlTVjVWeTFQNCtXS25WL015RktscDhzK2VBUSs5bW01eUNPdko4a2wveThpbUo1OFhFSXlQV0lDbDdMa3c9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K\ncontexts:\n- context:\n    cluster: gke_gcloud-262311_us-central1-c_cluster-1\n    user: dave\n  name: dave-gke_gcloud-262311_us-central1-c_cluster-1\ncurrent-context: dave-gke_gcloud-262311_us-central1-c_cluster-1\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_021__gcp__intermediate_namespace_wide_kubeconfig/dev/kube-system/groupDEV/role-binding.yaml",
    "content": "kind: RoleBinding\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: rolebinding-monitoring-ns\n  namespace: kube-system\nsubjects:\n  - kind: Group\n    name: groupDEV\n    apiGroup: rbac.authorization.k8s.io\nroleRef:\n  kind: Role\n  name: role-kube-system\n  apiGroup: rbac.authorization.k8s.io\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_021__gcp__intermediate_namespace_wide_kubeconfig/dev/kube-system/groupDEV/role-readwrite.yaml",
    "content": "kind: Role\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  namespace: kube-system\n  name: role-kube-system\nrules:\n  - apiGroups: [\"\"]\n    resources: [\"pods\", \"services\"]\n    verbs: [\"create\", \"get\", \"update\", \"list\", \"delete\"]\n  - apiGroups: [\"apps\"]\n    resources: [\"deployments\"]\n    verbs: [\"create\", \"get\", \"update\", \"list\", \"delete\"]\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_021__gcp__intermediate_namespace_wide_kubeconfig/reset.sh",
    "content": "#!/usr/bin/env bash\n\n\nif [ $# -lt 3 ]\nthen\n  echo \"Usage: ./reset.sh <namespace> <user-group> <kubeconfig-cluster-folder>\"\n  exit 0\nfi\n\nFOLDER_NAMESPACE=$1\nFOLDER_USER_GROUP=$2\nKUBCONFIG_CLUSTER_FOLDER=$3\n\n\nexport NAME_OF_CSR=\"$FOLDER_NAMESPACE-csr\"\n\nkubectl delete csr \"$NAME_OF_CSR\"\n\n\n\nif test -f \"./$KUBCONFIG_CLUSTER_FOLDER/$FOLDER_NAMESPACE/$FOLDER_USER_GROUP/role-readonly.yaml\"; then\n    kubectl delete -f \"./$KUBCONFIG_CLUSTER_FOLDER/$FOLDER_NAMESPACE/$FOLDER_USER_GROUP/role-readonly.yaml\"\nfi\n\nif test -f \"./$KUBCONFIG_CLUSTER_FOLDER/$FOLDER_NAMESPACE/$FOLDER_USER_GROUP/role-readwrite.yaml\"; then\n    kubectl delete -f \"./$KUBCONFIG_CLUSTER_FOLDER/$FOLDER_NAMESPACE/$FOLDER_USER_GROUP/role-readwrite.yaml\"\nfi\n\n\n\nkubectl delete -f \"./$KUBCONFIG_CLUSTER_FOLDER/$FOLDER_NAMESPACE/$FOLDER_USER_GROUP/role-binding.yaml\"\n\n\nrm -rf ./$KUBCONFIG_CLUSTER_FOLDER/$FOLDER_NAMESPACE/$FOLDER_USER_GROUP/*\n\n\n\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_021__gcp__intermediate_namespace_wide_kubeconfig/run-all.sh",
    "content": "#!/usr/bin/env bash\n\nclusterNamespaceSet=\"default|kube-system\"\nuserSet=\"groupQA|groupDEV\"\naccessTypeValueSet=\"R|RW\"\nFOLDER_DEV_CLUSTER=\"dev\"\n\n\nechoUsageDEVCluster()\n{\n    echo \"Values for <namespace> : $clusterNamespaceSet\"\n    echo \"Values for <user-group> : $userSet\"\n    echo \"Values for <access-type> : $accessTypeValueSet\"\n}\n\nassignVars()\n{\n  FOLDER_NAMESPACE=\"$1\"\n  FOLDER_USER_GROUP=\"$2\"\n  ACCESS_TYPE=\"$3\"\n}\n\ngenerate()\n{\n  echo \"-------------------------------\"\n  echo \"          Resetting previous changes           \"\n  echo \"-------------------------------\"\n  ./reset.sh $FOLDER_NAMESPACE $FOLDER_USER_GROUP $KUBCONFIG_CLUSTER_FOLDER\n\n  echo \"-------------------------------\"\n  echo \"          Client Cert Generation           \"\n  echo \"-------------------------------\"\n  ./client-run.sh $FOLDER_NAMESPACE $FOLDER_USER_GROUP $ACCESS_TYPE $KUBCONFIG_CLUSTER_FOLDER\n\n  echo \"-------------------------------\"\n  echo \"          kubeconfig & dave.key generation          \"\n  echo \"-------------------------------\"\n  ./admin-run.sh $FOLDER_NAMESPACE $FOLDER_USER_GROUP $ACCESS_TYPE $KUBCONFIG_CLUSTER_FOLDER\n  echo \"-------------------------------\"\n  echo \"          Share the following files with the $FOLDER_USER_GROUP\n          ./$KUBCONFIG_CLUSTER_FOLDER/$FOLDER_NAMESPACE/$FOLDER_USER_GROUP/kubeconfig\n          ./$KUBCONFIG_CLUSTER_FOLDER/$FOLDER_NAMESPACE/$FOLDER_USER_GROUP/dave.key\n\n          Initialization Steps\n          $ export KUBECONFIG=\\$PWD/kubeconfig\n\n          $ kubectl config set-credentials dave \\\\\n            --client-key=\\$PWD/dave.key \\\\\n            --embed-certs=true\n          \"\n  echo \"-------------------------------\"\n}\n\n\nif [ `kubectl config view --raw -o json | jq -r '.clusters[] | select(.name == \"'$(kubectl config current-context)'\") | .cluster.\"server\"' | grep \"https\" | wc -l` == \"1\"  ]\nthen\n  echo \"Dev cluster\"\n  if [ $# -lt 3 ]\n  then\n    echo \"Usage: ./run-all.sh <namespace> <user-group> <access-type>\"\n    echoUsageDEVCluster\n    exit 0\n  fi\n  assignVars \"$1\" \"$2\" \"$3\"\n\n  if [ `echo \"$FOLDER_NAMESPACE\" | egrep \"$clusterNamespaceSet\" | wc -l` == \"0\"  ]\n  then\n    echo \"<namespace> value not as per standards\"\n    echoUsageDEVCluster\n    exit 0\n  fi\n\n  if [ `echo \"$FOLDER_USER_GROUP\" | egrep \"$userSet\" | wc -l` == \"0\"  ]\n  then\n    echo \"<user-group> value not as per standards\"\n    echoUsageDEVCluster\n    exit 0\n  fi\n\n  if [ `echo \"$ACCESS_TYPE\" | egrep \"$accessTypeValueSet\" | wc -l` == \"0\"  ]\n  then\n    echo \"<access-type> value not as per standards\"\n    echoUsageDEVCluster\n    exit 0\n  fi\n\n  KUBCONFIG_CLUSTER_FOLDER=$FOLDER_DEV_CLUSTER\n  generate\nfi\n\n\n\n\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_021__gcp__intermediate_namespace_wide_kubeconfig/www.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: www\n  namespace: kube-system\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: www\n  template:\n    metadata:\n      labels:\n        app: www\n    spec:\n      containers:\n      - name: nginx\n        image: nginx:1.14-alpine\n        ports:\n        - containerPort: 80\n---\napiVersion: v1\nkind: Service\nmetadata:\n  name: www\n  namespace: kube-system\nspec:\n  selector:\n    app: vote\n  type: ClusterIP\n  ports:\n  - port: 80\n    targetPort: 80\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_022__gcp__k8s_dashboard/00-namespace.yaml",
    "content": "#Docs Referred : https://docs.aws.amazon.com/eks/latest/userguide/dashboard-tutorial.html\n\napiVersion: v1\nkind: Namespace\nmetadata:\n  name: kubernetes-dashboard\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_022__gcp__k8s_dashboard/05-service-account.yaml",
    "content": "apiVersion: v1\nkind: ServiceAccount\nmetadata:\n  labels:\n    k8s-app: kubernetes-dashboard\n  name: kubernetes-dashboard\n  namespace: kubernetes-dashboard\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_022__gcp__k8s_dashboard/10-service.yaml",
    "content": "kind: Service\napiVersion: v1\nmetadata:\n  labels:\n    k8s-app: kubernetes-dashboard\n  name: kubernetes-dashboard\n  namespace: kubernetes-dashboard\nspec:\n  type: NodePort\n  ports:\n    - port: 443\n      targetPort: 8443\n  selector:\n    k8s-app: kubernetes-dashboard\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_022__gcp__k8s_dashboard/15-secret.yaml",
    "content": "apiVersion: v1\nkind: Secret\nmetadata:\n  labels:\n    k8s-app: kubernetes-dashboard\n  name: kubernetes-dashboard-certs\n  namespace: kubernetes-dashboard\ntype: Opaque\n\n---\n\napiVersion: v1\nkind: Secret\nmetadata:\n  labels:\n    k8s-app: kubernetes-dashboard\n  name: kubernetes-dashboard-csrf\n  namespace: kubernetes-dashboard\ntype: Opaque\ndata:\n  csrf: \"\"\n\n---\n\napiVersion: v1\nkind: Secret\nmetadata:\n  labels:\n    k8s-app: kubernetes-dashboard\n  name: kubernetes-dashboard-key-holder\n  namespace: kubernetes-dashboard\ntype: Opaque\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_022__gcp__k8s_dashboard/20-configmap.yaml",
    "content": "kind: ConfigMap\napiVersion: v1\nmetadata:\n  labels:\n    k8s-app: kubernetes-dashboard\n  name: kubernetes-dashboard-settings\n  namespace: kubernetes-dashboard\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_022__gcp__k8s_dashboard/25-role.yaml",
    "content": "kind: Role\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  labels:\n    k8s-app: kubernetes-dashboard\n  name: kubernetes-dashboard\n  namespace: kubernetes-dashboard\nrules:\n  # Allow Dashboard to get, update and delete Dashboard exclusive secrets.\n  - apiGroups: [\"\"]\n    resources: [\"secrets\"]\n    resourceNames: [\"kubernetes-dashboard-key-holder\", \"kubernetes-dashboard-certs\", \"kubernetes-dashboard-csrf\"]\n    verbs: [\"get\", \"update\", \"delete\"]\n    # Allow Dashboard to get and update 'kubernetes-dashboard-settings' config map.\n  - apiGroups: [\"\"]\n    resources: [\"configmaps\"]\n    resourceNames: [\"kubernetes-dashboard-settings\"]\n    verbs: [\"get\", \"update\"]\n    # Allow Dashboard to get metrics.\n  - apiGroups: [\"\"]\n    resources: [\"services\"]\n    resourceNames: [\"heapster\", \"dashboard-metrics-scraper\"]\n    verbs: [\"proxy\"]\n  - apiGroups: [\"\"]\n    resources: [\"services/proxy\"]\n    resourceNames: [\"heapster\", \"http:heapster:\", \"https:heapster:\", \"dashboard-metrics-scraper\", \"http:dashboard-metrics-scraper\"]\n    verbs: [\"get\"]\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_022__gcp__k8s_dashboard/30-clusterRole.yaml",
    "content": "kind: ClusterRole\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  labels:\n    k8s-app: kubernetes-dashboard\n  name: kubernetes-dashboard\nrules:\n  # Allow Metrics Scraper to get metrics from the Metrics server\n  - apiGroups: [\"metrics.k8s.io\"]\n    resources: [\"pods\", \"nodes\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_022__gcp__k8s_dashboard/35-roleBinding.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    k8s-app: kubernetes-dashboard\n  name: kubernetes-dashboard\n  namespace: kubernetes-dashboard\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: kubernetes-dashboard\nsubjects:\n  - kind: ServiceAccount\n    name: kubernetes-dashboard\n    namespace: kubernetes-dashboard\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_022__gcp__k8s_dashboard/40-clusterRoleBinding.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: kubernetes-dashboard\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: kubernetes-dashboard\nsubjects:\n  - kind: ServiceAccount\n    name: kubernetes-dashboard\n    namespace: kubernetes-dashboard\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_022__gcp__k8s_dashboard/45-deployment.yaml",
    "content": "kind: Deployment\napiVersion: apps/v1\nmetadata:\n  labels:\n    k8s-app: kubernetes-dashboard\n  name: kubernetes-dashboard\n  namespace: kubernetes-dashboard\nspec:\n  replicas: 1\n  revisionHistoryLimit: 10\n  selector:\n    matchLabels:\n      k8s-app: kubernetes-dashboard\n  template:\n    metadata:\n      labels:\n        k8s-app: kubernetes-dashboard\n    spec:\n      containers:\n        - name: kubernetes-dashboard\n          image: kubernetesui/dashboard:v2.0.0-beta8\n          imagePullPolicy: Always\n          ports:\n            - containerPort: 8443\n              protocol: TCP\n          args:\n            - --auto-generate-certificates\n            - --namespace=kubernetes-dashboard\n            # Uncomment the following line to manually specify Kubernetes API server Host\n            # If not specified, Dashboard will attempt to auto discover the API server and connect\n            # to it. Uncomment only if the default does not work.\n            # - --apiserver-host=http://my-address:port\n          volumeMounts:\n            - name: kubernetes-dashboard-certs\n              mountPath: /certs\n              # Create on-disk volume to store exec logs\n            - mountPath: /tmp\n              name: tmp-volume\n          livenessProbe:\n            httpGet:\n              scheme: HTTPS\n              path: /\n              port: 8443\n            initialDelaySeconds: 30\n            timeoutSeconds: 30\n          securityContext:\n            allowPrivilegeEscalation: false\n            readOnlyRootFilesystem: true\n            runAsUser: 1001\n            runAsGroup: 2001\n      volumes:\n        - name: kubernetes-dashboard-certs\n          secret:\n            secretName: kubernetes-dashboard-certs\n        - name: tmp-volume\n          emptyDir: {}\n      serviceAccountName: kubernetes-dashboard\n      nodeSelector:\n        \"beta.kubernetes.io/os\": linux\n      # Comment the following tolerations if Dashboard must not be deployed on master\n      tolerations:\n        - key: node-role.kubernetes.io/master\n          effect: NoSchedule\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_022__gcp__k8s_dashboard/50-service-kubernetes-dashboard.yaml",
    "content": "kind: Service\napiVersion: v1\nmetadata:\n  labels:\n    k8s-app: dashboard-metrics-scraper\n  name: dashboard-metrics-scraper\n  namespace: kubernetes-dashboard\nspec:\n  ports:\n    - port: 8000\n      targetPort: 8000\n  selector:\n    k8s-app: dashboard-metrics-scraper\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_022__gcp__k8s_dashboard/55-service-dashboard-metrics-scraper.yaml",
    "content": "kind: Deployment\napiVersion: apps/v1\nmetadata:\n  labels:\n    k8s-app: dashboard-metrics-scraper\n  name: dashboard-metrics-scraper\n  namespace: kubernetes-dashboard\nspec:\n  replicas: 1\n  revisionHistoryLimit: 10\n  selector:\n    matchLabels:\n      k8s-app: dashboard-metrics-scraper\n  template:\n    metadata:\n      labels:\n        k8s-app: dashboard-metrics-scraper\n      annotations:\n        seccomp.security.alpha.kubernetes.io/pod: 'runtime/default'\n    spec:\n      containers:\n        - name: dashboard-metrics-scraper\n          image: kubernetesui/metrics-scraper:v1.0.1\n          ports:\n            - containerPort: 8000\n              protocol: TCP\n          livenessProbe:\n            httpGet:\n              scheme: HTTP\n              path: /\n              port: 8000\n            initialDelaySeconds: 30\n            timeoutSeconds: 30\n          volumeMounts:\n            - mountPath: /tmp\n              name: tmp-volume\n          securityContext:\n            allowPrivilegeEscalation: false\n            readOnlyRootFilesystem: true\n            runAsUser: 1001\n            runAsGroup: 2001\n      serviceAccountName: kubernetes-dashboard\n      nodeSelector:\n        \"beta.kubernetes.io/os\": linux\n      # Comment the following tolerations if Dashboard must not be deployed on master\n      tolerations:\n        - key: node-role.kubernetes.io/master\n          effect: NoSchedule\n      volumes:\n        - name: tmp-volume\n          emptyDir: {}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_022__gcp__k8s_dashboard/60-admin-service-account.yaml",
    "content": "apiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: eks-admin\n  namespace: kube-system\n---\napiVersion: rbac.authorization.k8s.io/v1beta1\nkind: ClusterRoleBinding\nmetadata:\n  name: eks-admin\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cluster-admin\nsubjects:\n- kind: ServiceAccount\n  name: eks-admin\n  namespace: kube-system\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_022__gcp__k8s_dashboard/README.md",
    "content": "## Steps\n\n```bash\n$ cd kubernetes-kitchen/gcp/task1-k8s-dashboard\n\n$ kubectl apply -f .\n\n$ kubectl get service kubernetes-dashboard -n kubernetes-dashboard\nNAME                   TYPE       CLUSTER-IP    EXTERNAL-IP   PORT(S)         AGE\nkubernetes-dashboard   NodePort   10.48.8.193   <none>        443:30566/TCP   16m\n\n$ gcloud compute firewall-rules create node-port-30566 --allow tcp:30566\nCreating firewall...⠹Created [https://www.googleapis.com/compute/v1/projects/gcloud-262311/global/firewalls/node-port-30566].\nCreating firewall...done.\nNAME             NETWORK  DIRECTION  PRIORITY  ALLOW      DENY  DISABLED\nnode-port-30566  default  INGRESS    1000      tcp:30566        False\n\n$ kubectl get nodes --output wide\nNAME                                       STATUS   ROLES    AGE    VERSION           INTERNAL-IP   EXTERNAL-IP     \ngke-cluster-2-default-pool-43440158-7dk0   Ready    <none>   148m   v1.14.10-gke.27   10.128.0.35   34.67.212.219\n\n$ kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep eks-admin | awk '{print $1}')\nName:         eks-admin-token-xcms9\nNamespace:    kube-system\nLabels:       <none>\nAnnotations:  kubernetes.io/service-account.name: eks-admin\n            kubernetes.io/service-account.uid: d96d7ddc-74cb-11ea-802a-42010a8001ab\n\nType:  kubernetes.io/service-account-token\n\nData\n====\nca.crt:     1115 bytes\nnamespace:  11 bytes\ntoken:      COPY_THIS_VALUE\n```\n\n- Now visit the following on firefox and give the token copied above\n\n> https://34.67.212.219:30566\n\n![](.images/Login_screen.png)\n\n- Post login screen\n\n![](.images/Post_login_screen.png)\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_023__gcp__traefik_whoami/00-resource-crd-definition.yml",
    "content": "# All resources definition must be declared\napiVersion: apiextensions.k8s.io/v1beta1\nkind: CustomResourceDefinition\nmetadata:\n  name: ingressroutes.traefik.containo.us\n\nspec:\n  group: traefik.containo.us\n  version: v1alpha1\n  names:\n    kind: IngressRoute\n    plural: ingressroutes\n    singular: ingressroute\n  scope: Namespaced\n\n---\napiVersion: apiextensions.k8s.io/v1beta1\nkind: CustomResourceDefinition\nmetadata:\n  name: middlewares.traefik.containo.us\n\nspec:\n  group: traefik.containo.us\n  version: v1alpha1\n  names:\n    kind: Middleware\n    plural: middlewares\n    singular: middleware\n  scope: Namespaced\n\n---\napiVersion: apiextensions.k8s.io/v1beta1\nkind: CustomResourceDefinition\nmetadata:\n  name: ingressroutetcps.traefik.containo.us\n\nspec:\n  group: traefik.containo.us\n  version: v1alpha1\n  names:\n    kind: IngressRouteTCP\n    plural: ingressroutetcps\n    singular: ingressroutetcp\n  scope: Namespaced\n\n---\napiVersion: apiextensions.k8s.io/v1beta1\nkind: CustomResourceDefinition\nmetadata:\n  name: tlsoptions.traefik.containo.us\n\nspec:\n  group: traefik.containo.us\n  version: v1alpha1\n  names:\n    kind: TLSOption\n    plural: tlsoptions\n    singular: tlsoption\n  scope: Namespaced\n\n---\napiVersion: apiextensions.k8s.io/v1beta1\nkind: CustomResourceDefinition\nmetadata:\n  name: traefikservices.traefik.containo.us\n\nspec:\n  group: traefik.containo.us\n  version: v1alpha1\n  names:\n    kind: TraefikService\n    plural: traefikservices\n    singular: traefikservice\n  scope: Namespaced"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_023__gcp__traefik_whoami/05-traefik-rbac.yml",
    "content": "kind: ClusterRole\napiVersion: rbac.authorization.k8s.io/v1beta1\nmetadata:\n  name: traefik-ingress-controller\n\nrules:\n  - apiGroups:\n      - \"\"\n    resources:\n      - services\n      - endpoints\n      - secrets\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - extensions\n    resources:\n      - ingresses\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - extensions\n    resources:\n      - ingresses/status\n    verbs:\n      - update\n  - apiGroups:\n      - traefik.containo.us\n    resources:\n      - middlewares\n      - ingressroutes\n      - traefikservices\n      - ingressroutetcps\n      - ingressrouteudps\n      - tlsoptions\n      - tlsstores\n    verbs:\n      - get\n      - list\n      - watch\n\n---\nkind: ClusterRoleBinding\napiVersion: rbac.authorization.k8s.io/v1beta1\nmetadata:\n  name: traefik-ingress-controller\n\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: traefik-ingress-controller\nsubjects:\n  - kind: ServiceAccount\n    name: traefik-ingress-controller\n    namespace: default\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_023__gcp__traefik_whoami/10-service-account.yaml",
    "content": "apiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: traefik-ingress-controller\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_023__gcp__traefik_whoami/15-traefik-deployment.yaml",
    "content": "---\nkind: Deployment\napiVersion: extensions/v1beta1\nmetadata:\n  name: traefik\n  labels:\n    app: traefik\n\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: traefik\n  template:\n    metadata:\n      labels:\n        app: traefik\n    spec:\n      serviceAccountName: traefik-ingress-controller\n      containers:\n        - name: traefik\n          image: traefik:v2.2\n          args:\n            - --accesslog=true\n            - --api\n            - --api.insecure\n            - --entrypoints.web.address=:80\n            - --entrypoints.websecure.address=:443\n            - --providers.kubernetescrd\n            - --configfile=/config/traefik.toml\n          ports:\n            - name: web\n              containerPort: 80\n            - name: admin\n              containerPort: 8080\n            - name: websecure\n              containerPort: 443\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_023__gcp__traefik_whoami/16-traefik.toml",
    "content": "# traefik.toml\ndefaultEntryPoints = [\"http\",\"https\"]\n[entryPoints]\n  [entryPoints.http]\n  address = \":80\"\n    [entryPoints.http.redirect]\n      entryPoint = \"https\"\n  [entryPoints.https]\n  address = \":443\"\n    [entryPoints.https.tls]\n      [[entryPoints.https.tls.certificates]]\n      CertFile = \"/ssl/tls.crt\"\n      KeyFile = \"/ssl/tls.key\"\n[api]\n  dashboard = true\n  insecure = true\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_023__gcp__traefik_whoami/20-traefik-service.yaml",
    "content": "---\napiVersion: v1\nkind: Service\nmetadata:\n  name: traefik\nspec:\n  type: LoadBalancer\n  selector:\n    app: traefik\n  ports:\n    - protocol: TCP\n      port: 80\n      name: web\n      targetPort: 80\n    - protocol: TCP\n      port: 443\n      name: websecure\n      targetPort: 80\n    - protocol: TCP\n      port: 8080\n      name: admin\n      targetPort: 8080\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_023__gcp__traefik_whoami/25-whoami-deployment.yaml",
    "content": "kind: Deployment\napiVersion: apps/v1\nmetadata:\n  namespace: default\n  name: whoami\n  labels:\n    app: whoami\n\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: whoami\n  template:\n    metadata:\n      labels:\n        app: whoami\n    spec:\n      containers:\n        - name: whoami\n          image: containous/whoami\n          ports:\n            - name: web\n              containerPort: 80\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_023__gcp__traefik_whoami/30-whoami-service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: whoami\n\nspec:\n  ports:\n    - protocol: TCP\n      name: web\n      port: 80\n  selector:\n    app: whoami\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_023__gcp__traefik_whoami/35-whoami-ingress-route.yaml",
    "content": "apiVersion: traefik.containo.us/v1alpha1\nkind: IngressRoute\nmetadata:\n  name: whoami-whoami\n  namespace: default\nspec:\n  entryPoints:\n    - web\n    - websecure\n  routes:\n  - match: PathPrefix(`/whoami-app-api`)\n    kind: Rule\n    services:\n    - name: whoami\n      port: 80\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_023__gcp__traefik_whoami/ReadMe.md",
    "content": "## To deploy traefik on GKE with whoami service\n\n\n- Run the following command (you may run it again if you get error for the first time as some\ncustom resources take some time to get created)\n\n```bash\nkubectl apply -f .\n```\n\n- Get the public IP of traefik-Service\n```bash\n$ kubectl get service\nNAME         TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)                                     AGE\nkubernetes   ClusterIP      10.109.0.1      <none>          443/TCP                                     31m\ntraefik      LoadBalancer   10.109.10.37    35.188.102.17   80:30541/TCP,443:32703/TCP,8080:31141/TCP   84s\nwhoami       ClusterIP      10.109.10.217   <none>          80/TCP                                      84s\n```\n\n\n\n- Dashboard\n    \n![](.images/traefik-homepage-part1.png)\n\n![](.images/traefik-homepage-part2.png)\n\n\n- HTTP Routers\n![](.images/http-routers.png)\n\n- HTTP Services\n![](.images/http-services.png)\n\n- HTTP Middlewares\n![](.images/http-middlewares.png)\n\n\n- Accessing whoami service\n\n![](.images/whoami-service.png)"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_024__gcp__traefik_whoami_tomlInConfigMap/00-resource-crd-definition.yml",
    "content": "# All resources definition must be declared\napiVersion: apiextensions.k8s.io/v1beta1\nkind: CustomResourceDefinition\nmetadata:\n  name: ingressroutes.traefik.containo.us\n\nspec:\n  group: traefik.containo.us\n  version: v1alpha1\n  names:\n    kind: IngressRoute\n    plural: ingressroutes\n    singular: ingressroute\n  scope: Namespaced\n\n---\napiVersion: apiextensions.k8s.io/v1beta1\nkind: CustomResourceDefinition\nmetadata:\n  name: middlewares.traefik.containo.us\n\nspec:\n  group: traefik.containo.us\n  version: v1alpha1\n  names:\n    kind: Middleware\n    plural: middlewares\n    singular: middleware\n  scope: Namespaced\n\n---\napiVersion: apiextensions.k8s.io/v1beta1\nkind: CustomResourceDefinition\nmetadata:\n  name: ingressroutetcps.traefik.containo.us\n\nspec:\n  group: traefik.containo.us\n  version: v1alpha1\n  names:\n    kind: IngressRouteTCP\n    plural: ingressroutetcps\n    singular: ingressroutetcp\n  scope: Namespaced\n\n---\napiVersion: apiextensions.k8s.io/v1beta1\nkind: CustomResourceDefinition\nmetadata:\n  name: tlsoptions.traefik.containo.us\n\nspec:\n  group: traefik.containo.us\n  version: v1alpha1\n  names:\n    kind: TLSOption\n    plural: tlsoptions\n    singular: tlsoption\n  scope: Namespaced\n\n---\napiVersion: apiextensions.k8s.io/v1beta1\nkind: CustomResourceDefinition\nmetadata:\n  name: traefikservices.traefik.containo.us\n\nspec:\n  group: traefik.containo.us\n  version: v1alpha1\n  names:\n    kind: TraefikService\n    plural: traefikservices\n    singular: traefikservice\n  scope: Namespaced"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_024__gcp__traefik_whoami_tomlInConfigMap/05-traefik-rbac.yml",
    "content": "kind: ClusterRole\napiVersion: rbac.authorization.k8s.io/v1beta1\nmetadata:\n  name: traefik-ingress-controller\n\nrules:\n  - apiGroups:\n      - \"\"\n    resources:\n      - services\n      - endpoints\n      - secrets\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - extensions\n    resources:\n      - ingresses\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - extensions\n    resources:\n      - ingresses/status\n    verbs:\n      - update\n  - apiGroups:\n      - traefik.containo.us\n    resources:\n      - middlewares\n      - ingressroutes\n      - traefikservices\n      - ingressroutetcps\n      - ingressrouteudps\n      - tlsoptions\n      - tlsstores\n    verbs:\n      - get\n      - list\n      - watch\n\n---\nkind: ClusterRoleBinding\napiVersion: rbac.authorization.k8s.io/v1beta1\nmetadata:\n  name: traefik-ingress-controller\n\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: traefik-ingress-controller\nsubjects:\n  - kind: ServiceAccount\n    name: traefik-ingress-controller\n    namespace: default"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_024__gcp__traefik_whoami_tomlInConfigMap/10-service-account.yaml",
    "content": "apiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: traefik-ingress-controller\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_024__gcp__traefik_whoami_tomlInConfigMap/15-traefik-deployment.yaml",
    "content": "---\nkind: Deployment\napiVersion: extensions/v1beta1\nmetadata:\n  name: traefik\n  labels:\n    app: traefik\n\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: traefik\n  template:\n    metadata:\n      labels:\n        app: traefik\n    spec:\n      serviceAccountName: traefik-ingress-controller\n      volumes:\n        - name: config\n          configMap:\n            name: traefik-config-map\n      containers:\n        - name: traefik\n          image: traefik:v2.1\n          args:\n            - --accesslog=true\n            - --api\n            - --api.insecure\n            - --entrypoints.web.address=:80\n            - --entrypoints.websecure.address=:443\n            - --providers.kubernetescrd\n            - --configfile=/config/traefik.toml\n          ports:\n            - name: web\n              containerPort: 80\n            - name: admin\n              containerPort: 8080\n            - name: websecure\n              containerPort: 443\n          volumeMounts:\n            - mountPath: /etc/traefik/traefik.toml\n              name: config\n              subPath: traefik.toml\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_024__gcp__traefik_whoami_tomlInConfigMap/20-traefik-service.yaml",
    "content": "---\napiVersion: v1\nkind: Service\nmetadata:\n  name: traefik\nspec:\n  type: LoadBalancer\n  selector:\n    app: traefik\n  ports:\n    - protocol: TCP\n      port: 80\n      name: web\n      targetPort: 80\n    - protocol: TCP\n      port: 443\n      name: websecure\n      targetPort: 80\n    - protocol: TCP\n      port: 8080\n      name: admin\n      targetPort: 8080\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_024__gcp__traefik_whoami_tomlInConfigMap/24-traefik-configMap.yaml",
    "content": "kind: ConfigMap\napiVersion: v1\nmetadata:\n  name: traefik-config-map\ndata:\n  traefik.toml: |-\n    [global]\n      checkNewVersion = false\n      sendAnonymousUsage = false\n    [retry]\n      attempts = 3\n      maxMem = 3\n    [entryPoints]\n      [entryPoints.web]\n        address = \":80\"\n      [entryPoints.websecure]\n        address = \":443\"\n    [log]\n      level = \"DEBUG\"\n    [accessLog]\n    [api]\n      insecure = true\n      dashboard = true\n      debug = true\n    [providers]\n      [providers.file]\n        directory = \"/var/tf\"\n        watch = true\n      [providers.kubernetesCRD]\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_024__gcp__traefik_whoami_tomlInConfigMap/25-whoami-deployment.yaml",
    "content": "kind: Deployment\napiVersion: apps/v1\nmetadata:\n  namespace: default\n  name: whoami\n  labels:\n    app: whoami\n\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: whoami\n  template:\n    metadata:\n      labels:\n        app: whoami\n    spec:\n      containers:\n        - name: whoami\n          image: containous/whoami\n          ports:\n            - name: web\n              containerPort: 80\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_024__gcp__traefik_whoami_tomlInConfigMap/30-whoami-service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: whoami\n\nspec:\n  ports:\n    - protocol: TCP\n      name: web\n      port: 80\n  selector:\n    app: whoami\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_024__gcp__traefik_whoami_tomlInConfigMap/35-whoami-ingress-route.yaml",
    "content": "apiVersion: traefik.containo.us/v1alpha1\nkind: IngressRoute\nmetadata:\n  name: whoami-whoami\n  namespace: default\nspec:\n  entryPoints:\n    - web\n    - websecure\n  routes:\n  - match: PathPrefix(`/whoami-app-api`)\n    kind: Rule\n    services:\n    - name: whoami\n      port: 80\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_024__gcp__traefik_whoami_tomlInConfigMap/ReadMe.md",
    "content": "## To deploy traefik on GKE with whoami service when toml file is passed as configMap mounted to deployment of Traefik\n\n\n- Run the following command (you may run it again if you get error for the first time as some\ncustom resources take some time to get created)\n\n```bash\nkubectl apply -f .\n```\n\n- Get the public IP of traefik-Service\n```bash\n$ kubectl get service\nNAME         TYPE           CLUSTER-IP      EXTERNAL-IP    PORT(S)                                     AGE\nkubernetes   ClusterIP      10.109.0.1      <none>         443/TCP                                     179m\ntraefik      LoadBalancer   10.109.4.20     34.66.233.93   80:30521/TCP,443:32062/TCP,8080:30299/TCP   2m26s\nwhoami       ClusterIP      10.109.12.195   <none>         80/TCP                                      2m25s                      84s\n```\n\n\n\n- Features enabled\n\n![](.images/features-enabled-in-toml-inside-configMap.png)\n\n\n- whoami\n    \n![](.images/whoami-service.png)"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_025__gcp__traefik_whoami_lets_encrypt/00-resource-crd-definition.yml",
    "content": "# All resources definition must be declared\napiVersion: apiextensions.k8s.io/v1beta1\nkind: CustomResourceDefinition\nmetadata:\n  name: ingressroutes.traefik.containo.us\n\nspec:\n  group: traefik.containo.us\n  version: v1alpha1\n  names:\n    kind: IngressRoute\n    plural: ingressroutes\n    singular: ingressroute\n  scope: Namespaced\n\n---\napiVersion: apiextensions.k8s.io/v1beta1\nkind: CustomResourceDefinition\nmetadata:\n  name: middlewares.traefik.containo.us\n\nspec:\n  group: traefik.containo.us\n  version: v1alpha1\n  names:\n    kind: Middleware\n    plural: middlewares\n    singular: middleware\n  scope: Namespaced\n\n---\napiVersion: apiextensions.k8s.io/v1beta1\nkind: CustomResourceDefinition\nmetadata:\n  name: ingressroutetcps.traefik.containo.us\n\nspec:\n  group: traefik.containo.us\n  version: v1alpha1\n  names:\n    kind: IngressRouteTCP\n    plural: ingressroutetcps\n    singular: ingressroutetcp\n  scope: Namespaced\n\n---\napiVersion: apiextensions.k8s.io/v1beta1\nkind: CustomResourceDefinition\nmetadata:\n  name: tlsoptions.traefik.containo.us\n\nspec:\n  group: traefik.containo.us\n  version: v1alpha1\n  names:\n    kind: TLSOption\n    plural: tlsoptions\n    singular: tlsoption\n  scope: Namespaced\n\n---\napiVersion: apiextensions.k8s.io/v1beta1\nkind: CustomResourceDefinition\nmetadata:\n  name: traefikservices.traefik.containo.us\n\nspec:\n  group: traefik.containo.us\n  version: v1alpha1\n  names:\n    kind: TraefikService\n    plural: traefikservices\n    singular: traefikservice\n  scope: Namespaced"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_025__gcp__traefik_whoami_lets_encrypt/05-traefik-rbac.yml",
    "content": "kind: ClusterRole\napiVersion: rbac.authorization.k8s.io/v1beta1\nmetadata:\n  name: traefik-ingress-controller\n\nrules:\n  - apiGroups:\n      - \"\"\n    resources:\n      - services\n      - endpoints\n      - secrets\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - extensions\n    resources:\n      - ingresses\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - extensions\n    resources:\n      - ingresses/status\n    verbs:\n      - update\n  - apiGroups:\n      - traefik.containo.us\n    resources:\n      - middlewares\n      - ingressroutes\n      - traefikservices\n      - ingressroutetcps\n      - ingressrouteudps\n      - tlsoptions\n      - tlsstores\n    verbs:\n      - get\n      - list\n      - watch\n\n---\nkind: ClusterRoleBinding\napiVersion: rbac.authorization.k8s.io/v1beta1\nmetadata:\n  name: traefik-ingress-controller\n\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: traefik-ingress-controller\nsubjects:\n  - kind: ServiceAccount\n    name: traefik-ingress-controller\n    namespace: default"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_025__gcp__traefik_whoami_lets_encrypt/10-service-account.yaml",
    "content": "apiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: traefik-ingress-controller\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_025__gcp__traefik_whoami_lets_encrypt/15-traefik-deployment.yaml",
    "content": "---\nkind: Deployment\napiVersion: apps/v1\nmetadata:\n  namespace: default\n  name: traefik\n  labels:\n    app: traefik\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: traefik\n  template:\n    metadata:\n      labels:\n        app: traefik\n    spec:\n      serviceAccountName: traefik-ingress-controller\n      containers:\n        - name: traefik\n          image: traefik:v2.1\n          args:\n            - --api\n            - --log.level=DEBUG\n            - --api.insecure\n            - --accesslog\n            - --entrypoints.web.address=:80\n            - --entrypoints.websecure.address=:443\n            - --providers.kubernetescrd\n            - --certificatesresolvers.default.acme.tlschallenge\n            - --certificatesresolvers.default.acme.email=emailexample@gmail.com\n            - --certificatesresolvers.default.acme.storage=acme.json\n            # Please note that this is the staging Let's Encrypt server.\n            # Once you get things working, you should remove that whole line altogether.\n#            - --certificatesresolvers.default.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory\n          ports:\n            - name: web\n              containerPort: 80\n            - name: admin\n              containerPort: 8080\n            - name: websecure\n              containerPort: 443\n\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_025__gcp__traefik_whoami_lets_encrypt/20-traefik-service.yaml",
    "content": "---\napiVersion: v1\nkind: Service\nmetadata:\n  name: traefik\nspec:\n  type: LoadBalancer\n  selector:\n    app: traefik\n  ports:\n    - protocol: TCP\n      port: 80\n      name: web\n      targetPort: 80\n    - protocol: TCP\n      port: 443\n      name: websecure\n      targetPort: 80\n    - protocol: TCP\n      port: 8080\n      name: admin\n      targetPort: 8080\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_025__gcp__traefik_whoami_lets_encrypt/25-whoami-deployment.yaml",
    "content": "kind: Deployment\napiVersion: apps/v1\nmetadata:\n  namespace: default\n  name: whoami\n  labels:\n    app: whoami\n\nspec:\n  replicas: 2\n  selector:\n    matchLabels:\n      app: whoami\n  template:\n    metadata:\n      labels:\n        app: whoami\n    spec:\n      containers:\n        - name: whoami\n          image: containous/whoami\n          ports:\n            - name: web\n              containerPort: 80\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_025__gcp__traefik_whoami_lets_encrypt/30-whoami-service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: whoami\n\nspec:\n  ports:\n    - protocol: TCP\n      name: web\n      port: 80\n  selector:\n    app: whoami\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_025__gcp__traefik_whoami_lets_encrypt/35-ingress-route.yaml",
    "content": "apiVersion: traefik.containo.us/v1alpha1\nkind: IngressRoute\nmetadata:\n  name: simpleingressroute\n  namespace: default\nspec:\n  entryPoints:\n    - web\n  routes:\n    - match: Host(`k8straefiktlstest.gotdns.ch`) && PathPrefix(`/notls`)\n      kind: Rule\n      services:\n        - name: whoami\n          port: 80\n\n---\napiVersion: traefik.containo.us/v1alpha1\nkind: IngressRoute\nmetadata:\n  name: ingressroutetls\n  namespace: default\nspec:\n  entryPoints:\n    - websecure\n    - web\n  routes:\n    - match: Host(`k8straefiktlstest.gotdns.ch`) && PathPrefix(`/tls`)\n      kind: Rule\n      services:\n        - name: whoami\n          port: 80\n  tls:\n    certResolver: default"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_025__gcp__traefik_whoami_lets_encrypt/ReadMe.md",
    "content": "## To deploy traefik on GKE with whoami service and get certificate using lets encrypt\n\n\n- Ensure that the following line is uncommented in traefik-deployment resource. Right \nnow you are using staging env to obtain certificates. On main let's encrypt \nyou have only 5 requests per hour before you will be banned and it is not recommended to use production env for testing.\n```yaml\n            - --certificatesresolvers.default.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory\n```\n\n- Run the following command and create all the resource objects except ingress-route\n\n```bash\n$ kubectl apply -f 00-resource-crd-definition.yml,05-traefik-rbac.yml,10-service-account.yaml,15-traefik-deployment.yaml,20-traefik-service.yaml,25-whoami-deployment.yaml,30-whoami-service.yaml\ncustomresourcedefinition.apiextensions.k8s.io/ingressroutes.traefik.containo.us created\ncustomresourcedefinition.apiextensions.k8s.io/middlewares.traefik.containo.us created\ncustomresourcedefinition.apiextensions.k8s.io/ingressroutetcps.traefik.containo.us created\ncustomresourcedefinition.apiextensions.k8s.io/tlsoptions.traefik.containo.us created\ncustomresourcedefinition.apiextensions.k8s.io/traefikservices.traefik.containo.us created\nclusterrole.rbac.authorization.k8s.io/traefik-ingress-controller created\nclusterrolebinding.rbac.authorization.k8s.io/traefik-ingress-controller created\nserviceaccount/traefik-ingress-controller created\ndeployment.apps/traefik created\nservice/traefik created\ndeployment.apps/whoami created\nservice/whoami created\n```\n\n- Get the IP of the Traefik Service exposed as Load Balancer\n```bash\n$ kubectl get service\nNAME         TYPE           CLUSTER-IP      EXTERNAL-IP    PORT(S)                                     AGE\nkubernetes   ClusterIP      10.109.0.1      <none>         443/TCP                                     6h16m\ntraefik      LoadBalancer   35.238.72.172   34.69.16.102   80:32318/TCP,443:32634/TCP,8080:32741/TCP   70s\nwhoami       ClusterIP      10.109.14.91    <none>         80/TCP                                      70s\n```\n\n\n- Create a DNS record for this IP\n```bash\n$ nslookup k8straefiktlstest.gotdns.ch\nServer:         192.168.1.1\nAddress:        192.168.1.1#53\n\nNon-authoritative answer:\nName:   k8straefiktlstest.gotdns.ch\nAddress: 35.238.72.172\n```\n\n- Create the resource ingress-route\n```bash\n$ kubectl apply -f 35-ingress-route.yaml\ningressroute.traefik.containo.us/simpleingressroute created\ningressroute.traefik.containo.us/ingressroutetls created\n```\n\n- Logs of traefik\n```bash\ntime=\"2020-04-27T20:48:28Z\" level=debug msg=\"Domains [\\\"k8straefiktlstest.gotdns.ch\\\"] need ACME certificates generation for domains \\\"k8straefiktlstest.gotdns.ch\\\".\" routerName=default-ingressroutetls-b5387612c35191f15ee4@kubernetescrd rule=\"Host(`k8straefiktlstest.gotdns.ch`) && PathPrefix(`/tls`)\" providerName=default.acme\ntime=\"2020-04-27T20:48:28Z\" level=debug msg=\"Loading ACME certificates [k8straefiktlstest.gotdns.ch]...\" providerName=default.acme routerName=default-ingressroutetls-b5387612c35191f15ee4@kubernetescrd rule=\"Host(`k8straefiktlstest.gotdns.ch`) && PathPrefix(`/tls`)\"\ntime=\"2020-04-27T20:48:29Z\" level=debug msg=\"Building ACME client...\" providerName=default.acme\ntime=\"2020-04-27T20:48:29Z\" level=debug msg=\"https://acme-staging-v02.api.letsencrypt.org/directory\" providerName=default.acme\ntime=\"2020-04-27T20:48:30Z\" level=info msg=Register... providerName=default.acme\ntime=\"2020-04-27T20:48:30Z\" level=debug msg=\"legolog: [INFO] acme: Registering account for emailexample@gmail.com\"\ntime=\"2020-04-27T20:48:30Z\" level=debug msg=\"Using TLS Challenge provider.\" providerName=default.acme\ntime=\"2020-04-27T20:48:30Z\" level=debug msg=\"legolog: [INFO] [k8straefiktlstest.gotdns.ch] acme: Obtaining bundled SAN certificate\"\ntime=\"2020-04-27T20:48:30Z\" level=debug msg=\"legolog: [INFO] [k8straefiktlstest.gotdns.ch] AuthURL: https://acme-staging-v02.api.letsencrypt.org/acme/authz-v3/52039075\"\ntime=\"2020-04-27T20:48:30Z\" level=debug msg=\"legolog: [INFO] [k8straefiktlstest.gotdns.ch] acme: use tls-alpn-01 solver\"\ntime=\"2020-04-27T20:48:30Z\" level=debug msg=\"legolog: [INFO] [k8straefiktlstest.gotdns.ch] acme: Trying to solve TLS-ALPN-01\"\ntime=\"2020-04-27T20:48:30Z\" level=debug msg=\"TLS Challenge Present temp certificate for k8straefiktlstest.gotdns.ch\" providerName=acme\ntime=\"2020-04-27T20:48:37Z\" level=debug msg=\"legolog: [INFO] [k8straefiktlstest.gotdns.ch] The server validated our request\"\ntime=\"2020-04-27T20:48:37Z\" level=debug msg=\"TLS Challenge CleanUp temp certificate for k8straefiktlstest.gotdns.ch\" providerName=acme\ntime=\"2020-04-27T20:48:37Z\" level=debug msg=\"legolog: [INFO] [k8straefiktlstest.gotdns.ch] acme: Validations succeeded; requesting certificates\"\ntime=\"2020-04-27T20:48:42Z\" level=debug msg=\"legolog: [INFO] [k8straefiktlstest.gotdns.ch] Server responded with a certificate.\"\ntime=\"2020-04-27T20:48:42Z\" level=debug msg=\"Certificates obtained for domains [k8straefiktlstest.gotdns.ch]\" providerName=default.acme routerName=default-ingressroutetls-b5387612c35191f15ee4@kubernetescrd rule=\"Host(`k8straefiktlstest.gotdns.ch`) && PathPrefix(`/tls`)\"\ntime=\"2020-04-27T20:48:42Z\" level=debug msg=\"Configuration received from provider default.acme: {\\\"http\\\":{},\\\"tls\\\":{}}\" providerName=default.acme\ntime=\"2020-04-27T20:48:42Z\" level=debug msg=\"Adding certificate for domain(s) k8straefiktlstest.gotdns.ch\"\n```\n\n\n- Results Acheived\n    - Dashboard\n![](.images/dashboard.png)\n\n- Whoami Service with notls\n![](.images/whoami-service-notls.png)\n\n\n- Whoami service with tls generated by ACME let's encrypt\n\n![](.images/ACME-certificate-tls.png)\n\n\n\n##  Next Steps \n- Delete the traefik deployment\n```bash\nkubectl delete -f 15-traefik-deployment.yaml\n```\n\n- Let's remove the Fake part in our cert. In order to do that you would need to comment out the line\n```yaml\n#            - --certificatesresolvers.default.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory\n```\n\n- Once the line is commented out, you lets recreate the deployment\n```bash\nkubectl apply -f 15-traefik-deployment.yaml\n```\n\n- Once deployment is completed, visit the URL again and behold the sweet and beautiful ACME certificate waiting for you!\n\n![](.images/finally-the-cert-needed.png)\n    \n  \n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_026__gcp__external_IP_to_access_Application_In_Cluster/ReadMe.md",
    "content": "# Exposing an External IP Address to Access an Application in a Cluster\n\n[Referred Doc](https://kubernetes.io/docs/tutorials/stateless-application/expose-external-ip-address/)\n\n- Run a Hello World application in your cluster:\n\n```bash\n$ kubectl apply -f service/load-balancer-example.yaml\ndeployment.apps/hello-world created\n```\n\n- Display information about the Deployment:\n\n```bash\n$ kubectl get deployments hello-world\nNAME          READY   UP-TO-DATE   AVAILABLE   AGE\nhello-world   5/5     5            5           46s\n\n$ kubectl describe deployments hello-world\nName:                   hello-world\nNamespace:              default\nCreationTimestamp:      Mon, 13 Apr 2020 17:37:05 +0400\nLabels:                 app.kubernetes.io/name=load-balancer-example\nAnnotations:            deployment.kubernetes.io/revision: 1\n                        kubectl.kubernetes.io/last-applied-configuration:\n                          {\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"labels\":{\"app.kubernetes.io/name\":\"load-balancer-example\"},\"name...\nSelector:               app.kubernetes.io/name=load-balancer-example\nReplicas:               5 desired | 5 updated | 5 total | 5 available | 0 unavailable\nStrategyType:           RollingUpdate\nMinReadySeconds:        0\nRollingUpdateStrategy:  25% max unavailable, 25% max surge\nPod Template:\n  Labels:  app.kubernetes.io/name=load-balancer-example\n  Containers:\n   hello-world:\n    Image:        gcr.io/google-samples/node-hello:1.0\n    Port:         8080/TCP\n    Host Port:    0/TCP\n    Environment:  <none>\n    Mounts:       <none>\n  Volumes:        <none>\nConditions:\n  Type           Status  Reason\n  ----           ------  ------\n  Available      True    MinimumReplicasAvailable\n  Progressing    True    NewReplicaSetAvailable\nOldReplicaSets:  <none>\nNewReplicaSet:   hello-world-7dc74ff97c (5/5 replicas created)\nEvents:\n  Type    Reason             Age   From                   Message\n  ----    ------             ----  ----                   -------\n  Normal  ScalingReplicaSet  68s   deployment-controller  Scaled up replica set hello-world-7dc74ff97c to 5\n```\n\n- Display information about your ReplicaSet objects:\n```bash\n$ kubectl get replicasets\nNAME                     DESIRED   CURRENT   READY   AGE\nhello-world-7dc74ff97c   5         5         5       2m20s\n\n$ kubectl describe replicasets\nName:           hello-world-7dc74ff97c\nNamespace:      default\nSelector:       app.kubernetes.io/name=load-balancer-example,pod-template-hash=7dc74ff97c\nLabels:         app.kubernetes.io/name=load-balancer-example\n                pod-template-hash=7dc74ff97c\nAnnotations:    deployment.kubernetes.io/desired-replicas: 5\n                deployment.kubernetes.io/max-replicas: 7\n                deployment.kubernetes.io/revision: 1\nControlled By:  Deployment/hello-world\nReplicas:       5 current / 5 desired\nPods Status:    5 Running / 0 Waiting / 0 Succeeded / 0 Failed\nPod Template:\n  Labels:  app.kubernetes.io/name=load-balancer-example\n           pod-template-hash=7dc74ff97c\n  Containers:\n   hello-world:\n    Image:        gcr.io/google-samples/node-hello:1.0\n    Port:         8080/TCP\n    Host Port:    0/TCP\n    Environment:  <none>\n    Mounts:       <none>\n  Volumes:        <none>\nEvents:\n  Type    Reason            Age    From                   Message\n  ----    ------            ----   ----                   -------\n  Normal  SuccessfulCreate  2m36s  replicaset-controller  Created pod: hello-world-7dc74ff97c-cbhj9\n  Normal  SuccessfulCreate  2m35s  replicaset-controller  Created pod: hello-world-7dc74ff97c-2t8rh\n  Normal  SuccessfulCreate  2m35s  replicaset-controller  Created pod: hello-world-7dc74ff97c-rzrgz\n  Normal  SuccessfulCreate  2m35s  replicaset-controller  Created pod: hello-world-7dc74ff97c-gcrrx\n  Normal  SuccessfulCreate  2m35s  replicaset-controller  Created pod: hello-world-7dc74ff97c-hzght\n```\n\n- Create a Service object that exposes the deployment:\n\n```bash\n$ kubectl expose deployment hello-world --type=LoadBalancer --name=my-service\nservice/my-service exposed\n```\n\n- Display information about the Service:\n```bash\n$ kubectl get services my-service\nNAME         TYPE           CLUSTER-IP   EXTERNAL-IP   PORT(S)          AGE\nmy-service   LoadBalancer   10.8.7.223   <pending>     8080:32136/TCP   26s\n\n$ kubectl get services my-service\nNAME         TYPE           CLUSTER-IP   EXTERNAL-IP   PORT(S)          AGE\nmy-service   LoadBalancer   10.8.7.223   34.71.6.149   8080:32136/TCP   58s\n```\n\n- Display detailed information about the Service:\n```bash\n$ kubectl describe services my-service\nName:                     my-service\nNamespace:                default\nLabels:                   app.kubernetes.io/name=load-balancer-example\nAnnotations:              <none>\nSelector:                 app.kubernetes.io/name=load-balancer-example\nType:                     LoadBalancer\nIP:                       10.8.7.223\nLoadBalancer Ingress:     34.71.6.149\nPort:                     <unset>  8080/TCP\nTargetPort:               8080/TCP\nNodePort:                 <unset>  32136/TCP\nEndpoints:                10.4.0.4:8080,10.4.0.5:8080,10.4.1.5:8080 + 2 more...\nSession Affinity:         None\nExternal Traffic Policy:  Cluster\nEvents:\n  Type    Reason                Age    From                Message\n  ----    ------                ----   ----                -------\n  Normal  EnsuringLoadBalancer  2m33s  service-controller  Ensuring load balancer\n  Normal  EnsuredLoadBalancer   108s   service-controller  Ensured load balancer\n```\n\n- In the preceding output, you can see that the service has several endpoints: \n10.4.0.4:8080,10.4.0.5:8080,10.4.1.5:8080 + 2 more.... These are internal addresses of the pods that are running the Hello World application.\nTo verify these are pod addresses, enter this command:\n\n```bash\n$ kubectl get pods --output=wide\nNAME                           READY   STATUS    RESTARTS   AGE     IP         NODE                                       NOMINATED NODE   READINESS GATES\nhello-world-7dc74ff97c-2t8rh   1/1     Running   0          7m30s   10.4.1.6   gke-cluster-1-default-pool-2cacae53-j8nh   <none>           <none>\nhello-world-7dc74ff97c-cbhj9   1/1     Running   0          7m30s   10.4.1.5   gke-cluster-1-default-pool-2cacae53-j8nh   <none>           <none>\nhello-world-7dc74ff97c-gcrrx   1/1     Running   0          7m29s   10.4.2.9   gke-cluster-1-default-pool-2cacae53-cmwk   <none>           <none>\nhello-world-7dc74ff97c-hzght   1/1     Running   0          7m29s   10.4.0.5   gke-cluster-1-default-pool-2cacae53-f5kg   <none>           <none>\nhello-world-7dc74ff97c-rzrgz   1/1     Running   0          7m30s   10.4.0.4   gke-cluster-1-default-pool-2cacae53-f5kg   <none>           <none>\n```\n\n- You can get more details by output-ing the resource in yaml format\n```bash\n$ kubectl get service\nNAME         TYPE           CLUSTER-IP   EXTERNAL-IP   PORT(S)          AGE\nkubernetes   ClusterIP      10.8.0.1     <none>        443/TCP          33m\nmy-service   LoadBalancer   10.8.7.223   34.71.6.149   8080:32136/TCP   14m\n\n$ kubectl get service my-service -o yaml\napiVersion: v1\nkind: Service\nmetadata:\n  creationTimestamp: \"2020-04-13T13:40:36Z\"\n  labels:\n    app.kubernetes.io/name: load-balancer-example\n  name: my-service\n  namespace: default\n  resourceVersion: \"4763\"\n  selfLink: /api/v1/namespaces/default/services/my-service\n  uid: 5af8c7e6-7d8c-11ea-b1b6-42010a800fcd\nspec:\n  clusterIP: 10.8.7.223\n  externalTrafficPolicy: Cluster\n  ports:\n  - nodePort: 32136\n    port: 8080\n    protocol: TCP\n    targetPort: 8080\n  selector:\n    app.kubernetes.io/name: load-balancer-example\n  sessionAffinity: None\n  type: LoadBalancer\nstatus:\n  loadBalancer:\n    ingress:\n    - ip: 34.71.6.149\n```\n\n- Use the external IP address (LoadBalancer Ingress) to access the Hello World application:\n```bash\n$ curl -v http://34.71.6.149:8080/     \n*   Trying 34.71.6.149...\n* TCP_NODELAY set\n* Connected to 34.71.6.149 (34.71.6.149) port 8080 (#0)\n> GET / HTTP/1.1\n> Host: 34.71.6.149:8080\n> User-Agent: curl/7.64.1\n> Accept: */*\n> \n< HTTP/1.1 200 OK\n< Date: Mon, 13 Apr 2020 13:46:33 GMT\n< Connection: keep-alive\n< Transfer-Encoding: chunked\n< \n* Connection #0 to host 34.71.6.149 left intact\nHello Kubernetes!* Closing connection 0\n```\n\n\n- Cleaning up\n```bash\n$ kubectl delete services my-service\nservice \"my-service\" deleted\n$ kubectl delete deployment hello-world\ndeployment.extensions \"hello-world\" deleted\n```"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_026__gcp__external_IP_to_access_Application_In_Cluster/service/load-balancer-example.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app.kubernetes.io/name: load-balancer-example\n  name: hello-world\nspec:\n  replicas: 5\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: load-balancer-example\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/name: load-balancer-example\n    spec:\n      containers:\n      - image: gcr.io/google-samples/node-hello:1.0\n        name: hello-world\n        ports:\n        - containerPort: 8080\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_027__gcp__intermediate_cluster_wide_kubeconfig/README.md",
    "content": "## Objective : \n### 1) To create user DAVE in group 'groupQA' for kubernetes cluster 'dev' and give only Read access to this user.\n\n- Running run-all.sh\n\n```bash\n$ ./run-all.sh groupQA R\nDev cluster\n-------------------------------\n          Resetting previous changes\n-------------------------------\ncertificatesigningrequest.certificates.k8s.io \"dev-groupQA-R-csr\" deleted\nclusterrole.rbac.authorization.k8s.io \"role-dev-groupQA-R\" deleted\nclusterrolebinding.rbac.authorization.k8s.io \"rolebinding-dev-groupQA-R\" deleted\n-------------------------------\n          Client Cert Generation\n-------------------------------\nGenerating RSA private key, 4096 bit long modulus\n...................................++++\n..................................................................................................++++\ne is 65537 (0x010001)\n-------------------------------\n          kubeconfig & dave.key generation\n-------------------------------\ncertificatesigningrequest.certificates.k8s.io/dev-groupQA-R-csr created\nNAME                 AGE   REQUESTOR                CONDITION\ndev-groupQA-R-csr    1s    user@gmail.com   Pending\ndev-groupQA-RW-csr   29m   user@gmail.com   Approved,Issued\ncertificatesigningrequest.certificates.k8s.io/dev-groupQA-R-csr approved\nNAME                 AGE   REQUESTOR                CONDITION\ndev-groupQA-R-csr    2s    user@gmail.com   Approved,Issued\ndev-groupQA-RW-csr   29m   user@gmail.com   Approved,Issued\nclusterrole.rbac.authorization.k8s.io/role-dev-groupQA-R created\nclusterrolebinding.rbac.authorization.k8s.io/rolebinding-dev-groupQA-R created\n-------------------------------\n          Share the following files with the groupQA\n          ./dev/groupQA/kubeconfig\n          ./dev/groupQA/dave.key\n\n          Initialization Steps\n          $ export KUBECONFIG=$PWD/kubeconfig\n\n          $ kubectl config set-credentials dave \\\n            --client-key=$PWD/dave.key \\\n            --embed-certs=true\n\n-------------------------------\n```\n\n- At the client workstation\n```bash\n$ ls kubeconfig dave.key\ndave.key   kubeconfig\n\n$ export KUBECONFIG=$PWD/kubeconfig\n\n$ kubectl config set-credentials dave \\\n>             --client-key=$PWD/dave.key \\\n>             --embed-certs=true\nUser \"dave\" set.\n\n$ kubectl get pods -n kube-system                                                  \nNAME                                                        READY   STATUS    RESTARTS   AGE\nprometheus-to-sd-xx9nx                                      2/2     Running   0          14h\n\n$ kubectl get pods -n default    \nNo resources found.\n\n$ kubectl get namespace      \nError from server (Forbidden): namespaces is forbidden: User \"dave\" cannot list resource \"namespaces\" in API group \"\" at the cluster scope\n\n$ kubectl delete pod prometheus-to-sd-xx9nx -n kube-system\nError from server (Forbidden): pods \"prometheus-to-sd-xx9nx\" is forbidden: User \"dave\" cannot delete resource \"pods\" in API group \"\" in the namespace \"kube-system\"\n\n$ kubectl apply -f www.yaml\nError from server (Forbidden): error when creating \"www.yaml\": deployments.apps is forbidden: User \"dave\" cannot create resource \"deployments\" in API group \"apps\" in the namespace \"kube-system\"\nError from server (Forbidden): error when creating \"www.yaml\": services is forbidden: User \"dave\" cannot create resource \"services\" in API group \"\" in the namespace \"kube-system\"\n```\n\n### 2) To create user DAVE in group 'groupDEV' for kubernetes cluster 'dev' and give only ReadWrite access to this user.\n\n- Running run-all.sh\n\n```bash\n$ ./run-all.sh groupDEV RW\nDev cluster\n-------------------------------\n          Resetting previous changes\n-------------------------------\ncertificatesigningrequest.certificates.k8s.io \"dev-groupDEV-RW-csr\" deleted\nclusterrole.rbac.authorization.k8s.io \"role-dev-groupDEV-RW\" deleted\nclusterrolebinding.rbac.authorization.k8s.io \"rolebinding-dev-groupDEV-RW\" deleted\n-------------------------------\n          Client Cert Generation\n-------------------------------\nGenerating RSA private key, 4096 bit long modulus\n..........++++\n...................................................................................................................................................................................................................................\n..................................++++\ne is 65537 (0x010001)\n-------------------------------\n          kubeconfig & dave.key generation\n-------------------------------\ncertificatesigningrequest.certificates.k8s.io/dev-groupDEV-RW-csr created\nNAME                  AGE     REQUESTOR                CONDITION\ndev-groupDEV-RW-csr   0s      user@gmail.com   Pending\ndev-groupQA-R-csr     7m57s   user@gmail.com   Approved,Issued\ndev-groupQA-RW-csr    37m     user@gmail.com   Approved,Issued\ncertificatesigningrequest.certificates.k8s.io/dev-groupDEV-RW-csr approved\nNAME                  AGE     REQUESTOR                CONDITION\ndev-groupDEV-RW-csr   1s      user@gmail.com   Approved,Issued\ndev-groupQA-R-csr     7m58s   user@gmail.com   Approved,Issued\ndev-groupQA-RW-csr    37m     user@gmail.com   Approved,Issued\nclusterrole.rbac.authorization.k8s.io/role-dev-groupDEV-RW created\nclusterrolebinding.rbac.authorization.k8s.io/rolebinding-dev-groupDEV-RW created\n-------------------------------\n          Share the following files with the groupDEV\n          ./dev/groupDEV/kubeconfig\n          ./dev/groupDEV/dave.key\n          Initialization Steps\n          $ export KUBECONFIG=$PWD/kubeconfig\n          $ kubectl config set-credentials dave \\\n            --client-key=$PWD/dave.key \\\n            --embed-certs=true\n-------------------------------\n```\n\n- At client workstation\n\n```bash\n$ ls kubeconfig dave.key\ndave.key   kubeconfig\n\n$ export KUBECONFIG=$PWD/kubeconfig\n\n$ kubectl config set-credentials dave \\\n    --client-key=$PWD/dave.key \\\n    --embed-certs=true\n  User \"dave\" set.\n\n$ kubectl get pods -n kube-system                                                  \nNAME                                                        READY   STATUS    RESTARTS   AGE\nprometheus-to-sd-xx9nx                                      2/2     Running   0          14h\n\n$ kubectl get pods -n default    \nNo resources found.\n\n$ kubectl get namespace      \nError from server (Forbidden): namespaces is forbidden: User \"dave\" cannot list resource \"namespaces\" in API group \"\" at the cluster scope\n\n$ kubectl delete pod prometheus-to-sd-dkczv -n kube-system                     \npod \"prometheus-to-sd-dkczv\" deleted\n\n$ kubectl apply -f www.yaml\ndeployment.apps/www created\nservice/www created\n\n```"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_027__gcp__intermediate_cluster_wide_kubeconfig/admin-run.sh",
    "content": "#!/usr/bin/env bash\n\nif [ $# -lt 3 ]\nthen\n  echo \"Usage: ./admin-run.sh  <user-group> <access-type> <kubeconfig-cluster-folder>\"\n  exit 0\nfi\n\n\nFOLDER_USER_GROUP=$1\nACCESS_TYPE=$2\nKUBECONFIG_CLUSTER_FOLDER=$3\n\n# Encoding the .csr file in base64\nexport BASE64_CSR=$(cat ./$KUBECONFIG_CLUSTER_FOLDER/$FOLDER_USER_GROUP/dave.csr | base64 | tr -d '\\n')\nexport NAME_OF_CSR=\"$KUBECONFIG_CLUSTER_FOLDER-$FOLDER_USER_GROUP-$ACCESS_TYPE-csr\"\n# Substitution of the BASE64_CSR env variable and creation of the CertificateSigninRequest resource\ncat ./common-resources/csr.yaml | envsubst > ./$KUBECONFIG_CLUSTER_FOLDER/$FOLDER_USER_GROUP/csr.yaml\ncat ./common-resources/csr.yaml | envsubst | kubectl apply -f -\n\nkubectl get csr\n\nkubectl certificate approve $NAME_OF_CSR\n\nkubectl get csr\n\nkubectl get csr $NAME_OF_CSR -o jsonpath='{.status.certificate}' \\\n  | base64 --decode > ./$KUBECONFIG_CLUSTER_FOLDER/$FOLDER_USER_GROUP/dave.crt\n\n\nif [ \"$ACCESS_TYPE\" == \"R\" ]\nthen\n  kubectl apply -f ./$KUBECONFIG_CLUSTER_FOLDER/$FOLDER_USER_GROUP/clusterRole-readonly.yaml\nfi\n\nif [ \"$ACCESS_TYPE\" == \"RW\" ]\nthen\n  kubectl apply -f ./$KUBECONFIG_CLUSTER_FOLDER/$FOLDER_USER_GROUP/clusterRole-readwrite.yaml\nfi\n\n\nkubectl apply -f ./$KUBECONFIG_CLUSTER_FOLDER/$FOLDER_USER_GROUP/clusterRole-binding.yaml\n\n\n# User identifier\nexport USER=\"dave\"\n# Cluster Name (get it from the current context)\nexport CLUSTER_NAME=$(kubectl config view --minify -o jsonpath={.current-context})\n# Client certificate\nexport CLIENT_CERTIFICATE_DATA=$(kubectl get csr $NAME_OF_CSR -o jsonpath='{.status.certificate}')\n# Cluster Certificate Authority\nexport CLUSTER_CA=$(kubectl config view --raw -o json | jq -r '.clusters[] | select(.name == \"'$(kubectl config current-context)'\") | .cluster.\"certificate-authority-data\"')\n#export CLUSTER_CA=$(kubectl config view --raw -o json | jq -r '.clusters[].cluster.\"certificate-authority-data\"')\n\n# API Server endpoint\nexport CLUSTER_ENDPOINT=$(kubectl config view --raw -o json | jq -r '.clusters[] | select(.name == \"'$(kubectl config current-context)'\") | .cluster.\"server\"')\n#export CLUSTER_ENDPOINT=$(kubectl config view --raw -o json | jq -r '.clusters[].cluster.\"server\"')\n\ncat ./common-resources/kubeconfig.tpl | envsubst > ./$KUBECONFIG_CLUSTER_FOLDER/$FOLDER_USER_GROUP/kubeconfig\n\n\nrm -rf ./$KUBECONFIG_CLUSTER_FOLDER/$FOLDER_USER_GROUP/csr.cnf \\\n./$KUBECONFIG_CLUSTER_FOLDER/$FOLDER_USER_GROUP/dave.crt \\\n./$KUBECONFIG_CLUSTER_FOLDER/$FOLDER_USER_GROUP/dave.csr\n\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_027__gcp__intermediate_cluster_wide_kubeconfig/client-run.sh",
    "content": "#!/usr/bin/env bash\n\n\nif [ $# -lt 3 ]\nthen\n  echo \"Usage: ./client-run.sh <user-group> <access-type> <kubeconfig-cluster-folder>\"\n  exit 0\nfi\n\n\nFOLDER_USER_GROUP=$1\nACCESS_TYPE=$2\nKUBECONFIG_CLUSTER_FOLDER=$3\n\n\n\n\nmkdir -p ./$KUBECONFIG_CLUSTER_FOLDER/$FOLDER_USER_GROUP/\n\ncp -rfp ./common-resources/csr.cnf-template ./$KUBECONFIG_CLUSTER_FOLDER/$FOLDER_USER_GROUP/csr.cnf\ncp -rfp ./common-resources/clusterRole-binding.yaml-template ./$KUBECONFIG_CLUSTER_FOLDER/$FOLDER_USER_GROUP/clusterRole-binding.yaml\n\nif [ \"$ACCESS_TYPE\" == \"R\" ]\nthen\n  cp -rfp ./common-resources/clusterRole-readonly.yaml-template ./$KUBECONFIG_CLUSTER_FOLDER/$FOLDER_USER_GROUP/clusterRole-readonly.yaml\nfi\n\nif [ \"$ACCESS_TYPE\" == \"RW\" ]\nthen\n  cp -rfp ./common-resources/clusterRole-readwrite.yaml-template ./$KUBECONFIG_CLUSTER_FOLDER/$FOLDER_USER_GROUP/clusterRole-readwrite.yaml\nfi\n\n\negrep -rl \"SUBSTITUTE_GROUPNAME\" ./$KUBECONFIG_CLUSTER_FOLDER/$FOLDER_USER_GROUP/ | xargs sed -i  \"s/SUBSTITUTE_GROUPNAME/$FOLDER_USER_GROUP/g\"\n\negrep -rl \"SUBSTITUTE_CLUSTER_NAME\" ./$KUBECONFIG_CLUSTER_FOLDER/$FOLDER_USER_GROUP/ | xargs sed -i  \"s/SUBSTITUTE_CLUSTER_NAME/$KUBECONFIG_CLUSTER_FOLDER/g\"\n\negrep -rl \"SUBSTITUTE_ACCESS_TYPE\" ./$KUBECONFIG_CLUSTER_FOLDER/$FOLDER_USER_GROUP/ | xargs sed -i  \"s/SUBSTITUTE_ACCESS_TYPE/$ACCESS_TYPE/g\"\n\nmkdir -p ./$KUBECONFIG_CLUSTER_FOLDER/$FOLDER_USER_GROUP/\n\nopenssl genrsa -out ./$KUBECONFIG_CLUSTER_FOLDER/$FOLDER_USER_GROUP/dave.key 4096\n\nopenssl req -config ./$KUBECONFIG_CLUSTER_FOLDER/$FOLDER_USER_GROUP/csr.cnf -new -key ./$KUBECONFIG_CLUSTER_FOLDER/$FOLDER_USER_GROUP/dave.key -nodes -out ./$KUBECONFIG_CLUSTER_FOLDER/$FOLDER_USER_GROUP/dave.csr\n\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_027__gcp__intermediate_cluster_wide_kubeconfig/common-resources/clusterRole-binding.yaml-template",
    "content": "kind: ClusterRoleBinding\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: rolebinding-SUBSTITUTE_CLUSTER_NAME-SUBSTITUTE_GROUPNAME-SUBSTITUTE_ACCESS_TYPE\nsubjects:\n  - kind: Group\n    name: SUBSTITUTE_GROUPNAME\n    apiGroup: rbac.authorization.k8s.io\nroleRef:\n  kind: ClusterRole\n  name: role-SUBSTITUTE_CLUSTER_NAME-SUBSTITUTE_GROUPNAME-SUBSTITUTE_ACCESS_TYPE\n  apiGroup: rbac.authorization.k8s.io\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_027__gcp__intermediate_cluster_wide_kubeconfig/common-resources/clusterRole-readonly.yaml-template",
    "content": "kind: ClusterRole\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n name: role-SUBSTITUTE_CLUSTER_NAME-SUBSTITUTE_GROUPNAME-SUBSTITUTE_ACCESS_TYPE\nrules:\n- apiGroups: [\"\"]\n  resources: [\"pods\", \"services\"]\n  verbs: [\"get\", \"list\"]\n- apiGroups: [\"apps\"]\n  resources: [\"deployments\"]\n  verbs: [\"get\", \"list\"]\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_027__gcp__intermediate_cluster_wide_kubeconfig/common-resources/clusterRole-readwrite.yaml-template",
    "content": "kind: ClusterRole\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: role-SUBSTITUTE_CLUSTER_NAME-SUBSTITUTE_GROUPNAME-SUBSTITUTE_ACCESS_TYPE\nrules:\n  - apiGroups: [\"\"]\n    resources: [\"pods\", \"services\"]\n    verbs: [\"create\", \"get\", \"update\", \"list\", \"delete\"]\n  - apiGroups: [\"apps\"]\n    resources: [\"deployments\"]\n    verbs: [\"create\", \"get\", \"update\", \"list\", \"delete\"]\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_027__gcp__intermediate_cluster_wide_kubeconfig/common-resources/csr.cnf-template",
    "content": "[ req ]\ndefault_bits = 2048\nprompt = no\ndefault_md = sha256\ndistinguished_name = dn\n[ dn ]\nCN = dave\nO = SUBSTITUTE_GROUPNAME\n[ v3_ext ]\nauthorityKeyIdentifier=keyid,issuer:always\nbasicConstraints=CA:FALSE\nkeyUsage=keyEncipherment,dataEncipherment\nextendedKeyUsage=serverAuth,clientAuth\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_027__gcp__intermediate_cluster_wide_kubeconfig/common-resources/csr.yaml",
    "content": "apiVersion: certificates.k8s.io/v1beta1\nkind: CertificateSigningRequest\nmetadata:\n  name: ${NAME_OF_CSR}\nspec:\n  groups:\n  - system:authenticated\n  request: ${BASE64_CSR}\n  usages:\n  - digital signature\n  - key encipherment\n  - server auth\n  - client auth\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_027__gcp__intermediate_cluster_wide_kubeconfig/common-resources/kubeconfig.tpl",
    "content": "apiVersion: v1\nkind: Config\nclusters:\n- cluster:\n    certificate-authority-data: ${CLUSTER_CA}\n    server: ${CLUSTER_ENDPOINT}\n  name: ${CLUSTER_NAME}\nusers:\n- name: ${USER}\n  user:\n    client-certificate-data: ${CLIENT_CERTIFICATE_DATA}\ncontexts:\n- context:\n    cluster: ${CLUSTER_NAME}\n    user: dave\n  name: ${USER}-${CLUSTER_NAME}\ncurrent-context: ${USER}-${CLUSTER_NAME}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_027__gcp__intermediate_cluster_wide_kubeconfig/dev/groupDEV/clusterRole-binding.yaml",
    "content": "kind: ClusterRoleBinding\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: rolebinding-dev-groupDEV-RW\nsubjects:\n  - kind: Group\n    name: groupDEV\n    apiGroup: rbac.authorization.k8s.io\nroleRef:\n  kind: ClusterRole\n  name: role-dev-groupDEV-RW\n  apiGroup: rbac.authorization.k8s.io\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_027__gcp__intermediate_cluster_wide_kubeconfig/dev/groupDEV/clusterRole-readwrite.yaml",
    "content": "kind: ClusterRole\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: role-dev-groupDEV-RW\nrules:\n  - apiGroups: [\"\"]\n    resources: [\"pods\", \"services\"]\n    verbs: [\"create\", \"get\", \"update\", \"list\", \"delete\"]\n  - apiGroups: [\"apps\"]\n    resources: [\"deployments\"]\n    verbs: [\"create\", \"get\", \"update\", \"list\", \"delete\"]\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_027__gcp__intermediate_cluster_wide_kubeconfig/dev/groupDEV/csr.yaml",
    "content": "apiVersion: certificates.k8s.io/v1beta1\nkind: CertificateSigningRequest\nmetadata:\n  name: dev-groupDEV-RW-csr\nspec:\n  groups:\n  - system:authenticated\n  request: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0KTUlJRVp6Q0NBazhDQVFBd0lqRU5NQXNHQTFVRUF3d0VaR0YyWlRFUk1BOEdBMVVFQ2d3SVozSnZkWEJFUlZZdwpnZ0lpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElDRHdBd2dnSUtBb0lDQVFET3kxL1A3NXJ0TWdKemRyeFJNTW4wClg5YmFHaFlxSzhmcEg4T2syaFlVdVhxTUYyb0FUdStUY1pVWjZOL2c2V0ZSTWNGV0F6bTV6SnoxMThnWGZaMHMKSTd1K2UvTXNyT05qM2VlN09pZVRSbVp6UVFmcmllL0tpRUZselAydkEweFlUUmZpRlNYVXRyYlJtSVBNMEdNcwpuWjNnczR6MlNTQnVaeThLZ2c5MmJGd04yYng3bUsxM25GYUNDamhSaEtxeGxaalFydE1WTis5ZG9WOFY2am14CnhuMGdsbExPYUFaMWxFUE80WFZvOElCOVpqUzd3d3lSdHkwNEtjeTN5bjBCMlNWelFDejRnell6cFZGN2dEZVMKVDczWXFzb29pY3NkaHNqUysvTE1jcHRUTTVkekZrckR1QzlIVXJRcHluNW5sbmRhYXU1TkdjQXdSUWtaVzA3VQpIbE4za3BvSGJISzZHT2hGZkJPMmFueXEwUDZlRTBJQlpzNTR2VE93QmFZcmh0YS9DdXAxbDN6UHVKcnlvUnJQCjJBekQ2RHB2SEw0Z1MvMGRXKzJzNTNoclJGclg3aGN5bWFsRmVQWnJIaTVNWjRmQUNwL0VSSG13NEttNyt4SSsKclovV0tsWktFL2czbU5GZ0lqajRqSFJDUXNlQTZWSXlzR1hTbjdvWTJ1enJCNDFKdVVpTFBIcTZ6U3UzVml6cgo1elh5TmpPOTdoMFJjY29VUlFTOEZKQWZZV0FBaEIzcXBqMVN1R3orYkFETTVGNjZJRlRXbkpGQ0I2bG03MUg2CmVEZmNkUlVacWhGSGhOTFFENk5ycHBIS2tTeTB4eW5Ebzg3L0NSU01wM0cwaDM4M25hNEFqR29PK25JanFCcUoKcjQyak1nblN6WXpEcEtYTDlnLzhwd0lEQVFBQm9BQXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnSUJBSGh5d1hmSQpkYm1SNzgvWndOT1dEdWJOY3dZVWREa1NhSVgwbXdSUlJVZFB2YjdiU2ZpUDdlKysvYzlwU1AzeE0rMzlRTnJ2ClBsTzRjVkNSQmNYVHZKWHhvbDlNZElDYTVhNitLSURVYlM2YXhpYmtkQjR2aXByK1Q5eXUxYm1SVFBERDRoSkEKUnRlOURUWGZhbjZUY3pya0tpQnlFQUdWMDVZQWhFVkNCUG8vaTlCMEVRK2tkbUpxYW5leDNzK094dWt1TWJBSApleWFETDNUN0dHNTBCQjJmSlliQnlWaTdwMUh2Z2RKWmprby9PQzZPOWVISXUybHNjdzBsV09kU1FybTRJUEpQClVQTnVtUzBFVXdobUZJaW80Y0MrM05RbkN5SUZrV0NKZUVrdzlqSWFZRlBGZDAraHEzdlJtd0xkbCt3MXpCWnAKcFFZWEF3a2NHTm9USmJoT0tRLy9ya0oxTnVkVEw0TEc0S2VERlJhczJCOXpMYzlxaEI0RUlOM0NxRFJaU29RRwpyUERDQUxyTDRTUml0NHBoZlNsaUlIL2NnenQ4WHZCOVRRYkFCVjAzajlBZ0ZpRzlvbzhUY3V4Zk5weVJWbGJNCjdKcHFWaWhnS1Bqek1JWkc2eGxqMDJicVg1dCt4NXBJTmEzWjgrelZKUC9GRzN5bkxPTTNTb3hNVTl1cUJ4MVgKalNjRGZ3cjhlQ3hESGYvaExPUjlHL2Y1NGNha2hJeDFoUkJ1dWZEd0dqczZXWks5L24weXpuSkF4bnRJOHl1NQp0OVRFVVdzVHppMVI4WFNvZTQxdWNTM0doditDK3FRVHk1M2dobW1SNmF0SUhJbnZJSzRIM3M2M3BucXp0UG9jClQvbzluWjNERUs5NmxVMUhBdjBxbXM1VWN4VnFDalJ0bmpyVQotLS0tLUVORCBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0K\n  usages:\n  - digital signature\n  - key encipherment\n  - server auth\n  - client auth\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_027__gcp__intermediate_cluster_wide_kubeconfig/dev/groupDEV/dave.key",
    "content": "-----BEGIN RSA PRIVATE KEY-----\n-----END RSA PRIVATE KEY-----\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_027__gcp__intermediate_cluster_wide_kubeconfig/dev/groupDEV/kubeconfig",
    "content": "apiVersion: v1\nkind: Config\nclusters:\n- cluster:\n    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURERENDQWZTZ0F3SUJBZ0lSQUpJVW5QWWF3bE1PTG93M01PcnJYS1F3RFFZSktvWklodmNOQVFFTEJRQXcKTHpFdE1Dc0dBMVVFQXhNa05qWmxZVGhsWkdJdFlUZG1aaTAwWW1ReUxXRmxZalF0WXpNek9HSTVOalZsWWpobApNQjRYRFRJd01EUXdPREU1TXprd05Gb1hEVEkxTURRd056SXdNemt3TkZvd0x6RXRNQ3NHQTFVRUF4TWtOalpsCllUaGxaR0l0WVRkbVppMDBZbVF5TFdGbFlqUXRZek16T0dJNU5qVmxZamhsTUlJQklqQU5CZ2txaGtpRzl3MEIKQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBcTlBYU9vM1M4Q28zMEg0amtLMk0wQ2I4eGhIWHozemFXTXNiK2ZrWAo2MEttcjcxR2xRWEZyWlVyYnBQSlNqOFVOTjhJbWxUQmhkZmZNbTcrUkxxcFduMXYrV3poSmZLN3NSOWltei9jCm5OZVBUTGw3NjlScGZyNFZDVllxZGl1YzFwaU5XcmVwYUduRCs4TEVUcTdSZmdEUFJOeVVJY0RZcmdFZVNEdDIKdDArVXRDVjJqLzhzSUFMekh4N3VzY2lUVXErQTNPL2h3Y2NvaURySGk1TjluWE95bWVYOHZ3SytiQU9tQ3F5UApKemdNeWFUd1phaDQ5VGxyK3FqOGlBR2hhNEMyK204Tis1cWpsSlNUWnZzdGtlK29IYXc3NG1VUURvZ29NWENZCmtnSTZsTEhaMVBzdVBQQUVFYzd5aW00RGtva3dyZENWV1RhcG1aQTFteXpYUHdJREFRQUJveU13SVRBT0JnTlYKSFE4QkFmOEVCQU1DQWdRd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQQpIQXBHVDJrTWZrSEZob3BPV3RGNnhaMkxDY2YvRTZVYk5iVW1Vb1VuZDNydmszKzlOcndnWWxBTWE0VXl3OS8rCjdKZmU1WlRLU0FWb1pWNXFVWEhDYU5hb3RsK1VCNjhReVBVZnFsc1Q2emFPcmJQYmh0MDJnSnVYM2hCVlBjenkKbllrWVdIdE1FZEpuSFVyMHBZNGUwcjhMYk1pN21NS0pRUHhyMjBCYUpXREo5ejJPb0xPQnVFRXQxZ3ZIcjNtTwpFcFJSY1NrZE4va2tuLzhrTFp0dkt0c0JiV0UrOGtOWTRnM0dHYmRHaUVSemtBUTFuN1VpaFJDZWRiTDRWUFVICnp3TWxNeEY0clp3MkU4UWFPSjBUMGVJQ1NiYVMrNGRXTEdkVFZmc0NMWGJ3a2I2cUIyMXVJRlJ2Y0ZCOUxFNXEKREFRbUJNY2w1b1MwMy9lejNEZXVMUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K\n    server: https://35.193.247.63\n  name: gke_gcloud-262311_us-central1-c_cluster-2\nusers:\n- name: dave\n  user:\n    client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUQ3RENDQXRTZ0F3SUJBZ0lSQU9uZVhHa0R4ZlduNVV5YzVEclhWTWd3RFFZSktvWklodmNOQVFFTEJRQXcKTHpFdE1Dc0dBMVVFQXhNa05qWmxZVGhsWkdJdFlUZG1aaTAwWW1ReUxXRmxZalF0WXpNek9HSTVOalZsWWpobApNQjRYRFRJd01EUXdPVEV5TlRnMU5Gb1hEVEkxTURRd09ERXlOVGcxTkZvd0lqRVJNQThHQTFVRUNoTUlaM0p2CmRYQkVSVll4RFRBTEJnTlZCQU1UQkdSaGRtVXdnZ0lpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElDRHdBd2dnSUsKQW9JQ0FRRE95MS9QNzVydE1nSnpkcnhSTU1uMFg5YmFHaFlxSzhmcEg4T2syaFlVdVhxTUYyb0FUdStUY1pVWgo2Ti9nNldGUk1jRldBem01ekp6MTE4Z1hmWjBzSTd1K2UvTXNyT05qM2VlN09pZVRSbVp6UVFmcmllL0tpRUZsCnpQMnZBMHhZVFJmaUZTWFV0cmJSbUlQTTBHTXNuWjNnczR6MlNTQnVaeThLZ2c5MmJGd04yYng3bUsxM25GYUMKQ2poUmhLcXhsWmpRcnRNVk4rOWRvVjhWNmpteHhuMGdsbExPYUFaMWxFUE80WFZvOElCOVpqUzd3d3lSdHkwNApLY3kzeW4wQjJTVnpRQ3o0Z3pZenBWRjdnRGVTVDczWXFzb29pY3NkaHNqUysvTE1jcHRUTTVkekZrckR1QzlIClVyUXB5bjVubG5kYWF1NU5HY0F3UlFrWlcwN1VIbE4za3BvSGJISzZHT2hGZkJPMmFueXEwUDZlRTBJQlpzNTQKdlRPd0JhWXJodGEvQ3VwMWwzelB1SnJ5b1JyUDJBekQ2RHB2SEw0Z1MvMGRXKzJzNTNoclJGclg3aGN5bWFsRgplUFpySGk1TVo0ZkFDcC9FUkhtdzRLbTcreEkrclovV0tsWktFL2czbU5GZ0lqajRqSFJDUXNlQTZWSXlzR1hTCm43b1kydXpyQjQxSnVVaUxQSHE2elN1M1ZpenI1elh5TmpPOTdoMFJjY29VUlFTOEZKQWZZV0FBaEIzcXBqMVMKdUd6K2JBRE01RjY2SUZUV25KRkNCNmxtNzFINmVEZmNkUlVacWhGSGhOTFFENk5ycHBIS2tTeTB4eW5Ebzg3LwpDUlNNcDNHMGgzODNuYTRBakdvTytuSWpxQnFKcjQyak1nblN6WXpEcEtYTDlnLzhwd0lEQVFBQm94QXdEakFNCkJnTlZIUk1CQWY4RUFqQUFNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFvcnlKVmRzVTlSZHREQ2h3a1RCNmoKRGMzb2VoN1U4TExtWFg5OTIybENYZEpvQzl4eU1WN2Z6SkFCWXUxZkJQVGYwOCsweExBWGUrV0FiQy9oODNhLwpTQjN6aVRwZk16WXJTYnlTeG1LMEdjNnRaTExDZGVzRTF0Qy95cWVWb2Y5ZTV2akY2TzgyZFBHYk5LOHFzQ3NOCjY4V0RLUERhTlp5Q1d2RG1EcWROMGIrdmlFQUlhQ3g0TG03eVI1dS9EbStCQ1pEYmpnblQxOHNldVNHb2RsMWsKajhOQWdJczUxNytkdUJhWVcxL3lhaVU2L1JRK3dyb2E5Uk94bHpLSTJmK0wyamwyZGtSdDZqRmhxYnFKQU9lWQpnUG9remxTa3lOWVJoVHdDL0hOZStOVk8zVEt1Z1g0MW9QdHRDNTEwZGE0SmJ2ZExmOVlLek5jTm1mbnowUWhwCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K\ncontexts:\n- context:\n    cluster: gke_gcloud-262311_us-central1-c_cluster-2\n    user: dave\n  name: dave-gke_gcloud-262311_us-central1-c_cluster-2\ncurrent-context: dave-gke_gcloud-262311_us-central1-c_cluster-2\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_027__gcp__intermediate_cluster_wide_kubeconfig/dev/groupQA/clusterRole-binding.yaml",
    "content": "kind: ClusterRoleBinding\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: rolebinding-dev-groupQA-R\nsubjects:\n  - kind: Group\n    name: groupQA\n    apiGroup: rbac.authorization.k8s.io\nroleRef:\n  kind: ClusterRole\n  name: role-dev-groupQA-R\n  apiGroup: rbac.authorization.k8s.io\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_027__gcp__intermediate_cluster_wide_kubeconfig/dev/groupQA/clusterRole-readonly.yaml",
    "content": "kind: ClusterRole\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n name: role-dev-groupQA-R\nrules:\n- apiGroups: [\"\"]\n  resources: [\"pods\", \"services\"]\n  verbs: [\"get\", \"list\"]\n- apiGroups: [\"apps\"]\n  resources: [\"deployments\"]\n  verbs: [\"get\", \"list\"]\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_027__gcp__intermediate_cluster_wide_kubeconfig/dev/groupQA/csr.yaml",
    "content": "apiVersion: certificates.k8s.io/v1beta1\nkind: CertificateSigningRequest\nmetadata:\n  name: dev-groupQA-R-csr\nspec:\n  groups:\n  - system:authenticated\n  request: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0KTUlJRVpqQ0NBazRDQVFBd0lURU5NQXNHQTFVRUF3d0VaR0YyWlRFUU1BNEdBMVVFQ2d3SFozSnZkWEJSUVRDQwpBaUl3RFFZSktvWklodmNOQVFFQkJRQURnZ0lQQURDQ0Fnb0NnZ0lCQU1PdjVQeFlERXNJbldlMWtBNTRad0VkCjlOc01iQWF2U3g3aVQrZVJob0VNbXBoclh0dHRhLzJBT3JIZURmeEQ1MmJVK0ZiK0FPZE1vaFdER1d5YzBoNjEKdk9SVUtOOWZvcys1TUp2bnJab1ZyUVJObUtLVkFiODM1ZW5hcUQvQWRFZ2hOVUVFVmJBbHU5NUdRUXd5aXZsSwpQY0phNFV5RnllTDMvVmd6WXd6WUpQVkNoV2VHSzFlaWdsMXMrM2k2aldRS1VLZmFzek1ScVRrRFIyUHhJMnFJClR2NjVacDVaTkRmMHhHYWIrS1ZYSGpDN2dtbTFubGRYYnFJbk9LaDlBems4cGU2d0JkbUIrblU5dlhvYWRPcmIKdDVPSG9VQWRuYVd1M01rZGVOMVEzSTNycmtkUnZrTHJIUWxvUVZpKzlxWGN2Y0kvcm5uWUZDUXUyM3JtRmpSOQo3WVJHSFNHZ09wUGVyd1U1WGxiS1lJR05RbzRsK1ZwQW5TN016V05EeDgwb2VPN1hMN2ZtTTJ1OTJGZ3locHJoCjAwOW5xODVSQ09xT2dXMzRlT1V5RnVFbkl4eHZnSXdTeU1hQnpTTmdUM01rcDdZb3I2LzRPTXN1UWUyTEhnTFQKUUpMMjJuZ2piQXg3U1J2eDJYellaWlM4NERHSEdMMmVNRGxaaXJrOVZCdm9uaTBIbUcxdFZRKzhMS0NBRVhuYgpXV0hhZXhucXBONm55R3VCbGV6VWdHR1czU0V4WTlCWmtSdlhZVm1UOGNudFFraG9WSmJET0JzdEtUV2UvVzEzCkVCeDBqSGthQnowR1NpWGVLMms4dFNmVmExZDNhMTZSMXJKVCtHdmNGWmJEMm5IVDlHdjJDN09YZUhUMEtHdDQKL2tjUmRqUlFIc3dkWExWNzJHeHpBZ01CQUFHZ0FEQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FnRUFEM1k3eGRoVQo0aUtYa1NYOVkzVGQ2dU5xWHJoUFM4YVoyUjNwUFVBRGxMM2VBaFR5UnhGaWVKMFUxMVBjVFZPaWZGR1FqRG5hCmUrL25vcVJ1QldzeHg0QXE2MVlvYnNaOTB4SFFIaExiMGVpeENUck0yaFhDK3FBK2Ewa1FtYWYrNXFaS1BYVUYKSjM4eTgzVG1STUtiUFZRM3hPOEJpVWg4ckt4VWlMREU3WEhGOWloQTV2V3lKaDAzN0VFa0xhVDQzTVh4d3pIaApKR1gzaG1RNWlRZ2RESmpHSGdOL1lqeWZNZzgwWUJUNW0yZkZJc0RHbW9SdC90UWMyWmZOOVUrcDNPTXA2dkhRCldJOHRBcFk5L0w5NnRBSjdGSk1IUWdXNGd2T2pVRjlPNFVMMUxYTGw2Q3NqZExMQlBXbkFDNEhpQ2RLSjRoMmMKQ0EzMWZKZUJROWtiWmFSM3A4VHhEVnFBWXQ2c05ZUEpDcUZSbmxiMUhxSmYwbitwN2M1SWxkUklob2N6bXlJUAppdFN1MUU5RXp0eTJ3V1RMbng3dnB4WEtNc295cWNJK0o1UDhQdjBKUVVoMTVWczdIRXdGYm5KTzk2WWVJaHhHCk5EV2pJcFJCOWxRTDVFSHJXZTZOWitwVWJ2MnlibURUbHBLajFQSk01MnJlMytvVWhxY3RydHFsazdnWnorK1QKTVRES29WUUtHSXRyMGNGWXorWnk2VFN5TUJSNEdRb2UrZHBVbHhEQ1M2Tm16K2NQc3ZaL3JNWDZsaWJ3WjdGVQpEc0JWemd4NTFPS0dWNmRqTU5DWXR4Qm0rdjlGMk1pUTYyV1lSK0FFU28rMHU4Tm5wczhsU0xtOVlVam9zakRSCm1lKzkwVWlpOFVjY3ROU0VDTGlDY3dpeU1uR3RaN1RnaGVnPQotLS0tLUVORCBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0K\n  usages:\n  - digital signature\n  - key encipherment\n  - server auth\n  - client auth\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_027__gcp__intermediate_cluster_wide_kubeconfig/dev/groupQA/dave.key",
    "content": "-----BEGIN RSA PRIVATE KEY-----\n-----END RSA PRIVATE KEY-----\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_027__gcp__intermediate_cluster_wide_kubeconfig/dev/groupQA/kubeconfig",
    "content": "apiVersion: v1\nkind: Config\nclusters:\n- cluster:\n    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURERENDQWZTZ0F3SUJBZ0lSQUpJVW5QWWF3bE1PTG93M01PcnJYS1F3RFFZSktvWklodmNOQVFFTEJRQXcKTHpFdE1Dc0dBMVVFQXhNa05qWmxZVGhsWkdJdFlUZG1aaTAwWW1ReUxXRmxZalF0WXpNek9HSTVOalZsWWpobApNQjRYRFRJd01EUXdPREU1TXprd05Gb1hEVEkxTURRd056SXdNemt3TkZvd0x6RXRNQ3NHQTFVRUF4TWtOalpsCllUaGxaR0l0WVRkbVppMDBZbVF5TFdGbFlqUXRZek16T0dJNU5qVmxZamhsTUlJQklqQU5CZ2txaGtpRzl3MEIKQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBcTlBYU9vM1M4Q28zMEg0amtLMk0wQ2I4eGhIWHozemFXTXNiK2ZrWAo2MEttcjcxR2xRWEZyWlVyYnBQSlNqOFVOTjhJbWxUQmhkZmZNbTcrUkxxcFduMXYrV3poSmZLN3NSOWltei9jCm5OZVBUTGw3NjlScGZyNFZDVllxZGl1YzFwaU5XcmVwYUduRCs4TEVUcTdSZmdEUFJOeVVJY0RZcmdFZVNEdDIKdDArVXRDVjJqLzhzSUFMekh4N3VzY2lUVXErQTNPL2h3Y2NvaURySGk1TjluWE95bWVYOHZ3SytiQU9tQ3F5UApKemdNeWFUd1phaDQ5VGxyK3FqOGlBR2hhNEMyK204Tis1cWpsSlNUWnZzdGtlK29IYXc3NG1VUURvZ29NWENZCmtnSTZsTEhaMVBzdVBQQUVFYzd5aW00RGtva3dyZENWV1RhcG1aQTFteXpYUHdJREFRQUJveU13SVRBT0JnTlYKSFE4QkFmOEVCQU1DQWdRd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQQpIQXBHVDJrTWZrSEZob3BPV3RGNnhaMkxDY2YvRTZVYk5iVW1Vb1VuZDNydmszKzlOcndnWWxBTWE0VXl3OS8rCjdKZmU1WlRLU0FWb1pWNXFVWEhDYU5hb3RsK1VCNjhReVBVZnFsc1Q2emFPcmJQYmh0MDJnSnVYM2hCVlBjenkKbllrWVdIdE1FZEpuSFVyMHBZNGUwcjhMYk1pN21NS0pRUHhyMjBCYUpXREo5ejJPb0xPQnVFRXQxZ3ZIcjNtTwpFcFJSY1NrZE4va2tuLzhrTFp0dkt0c0JiV0UrOGtOWTRnM0dHYmRHaUVSemtBUTFuN1VpaFJDZWRiTDRWUFVICnp3TWxNeEY0clp3MkU4UWFPSjBUMGVJQ1NiYVMrNGRXTEdkVFZmc0NMWGJ3a2I2cUIyMXVJRlJ2Y0ZCOUxFNXEKREFRbUJNY2w1b1MwMy9lejNEZXVMUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K\n    server: https://35.193.247.63\n  name: gke_gcloud-262311_us-central1-c_cluster-2\nusers:\n- name: dave\n  user:\n    client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUQ2akNDQXRLZ0F3SUJBZ0lRS1ZqZWhpRmJiUGVSM1FmRWtka1JvekFOQmdrcWhraUc5dzBCQVFzRkFEQXYKTVMwd0t3WURWUVFERXlRMk5tVmhPR1ZrWWkxaE4yWm1MVFJpWkRJdFlXVmlOQzFqTXpNNFlqazJOV1ZpT0dVdwpIaGNOTWpBd05EQTVNVEkxTURVM1doY05NalV3TkRBNE1USTFNRFUzV2pBaE1SQXdEZ1lEVlFRS0V3ZG5jbTkxCmNGRkJNUTB3Q3dZRFZRUURFd1JrWVhabE1JSUNJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBZzhBTUlJQ0NnS0MKQWdFQXc2L2svRmdNU3dpZFo3V1FEbmhuQVIzMDJ3eHNCcTlMSHVKUDU1R0dnUXlhbUd0ZTIyMXIvWUE2c2Q0TgovRVBuWnRUNFZ2NEE1MHlpRllNWmJKelNIclc4NUZRbzMxK2l6N2t3bStldG1oV3RCRTJZb3BVQnZ6Zmw2ZHFvClA4QjBTQ0UxUVFSVnNDVzcza1pCRERLSytVbzl3bHJoVElYSjR2ZjlXRE5qRE5nazlVS0ZaNFlyVjZLQ1hXejcKZUxxTlpBcFFwOXF6TXhHcE9RTkhZL0VqYW9oTy9ybG1ubGswTi9URVpwdjRwVmNlTUx1Q2FiV2VWMWR1b2ljNApxSDBET1R5bDdyQUYyWUg2ZFQyOWVocDA2dHUzazRlaFFCMmRwYTdjeVIxNDNWRGNqZXV1UjFHK1F1c2RDV2hCCldMNzJwZHk5d2ordWVkZ1VKQzdiZXVZV05IM3RoRVlkSWFBNms5NnZCVGxlVnNwZ2dZMUNqaVg1V2tDZExzek4KWTBQSHpTaDQ3dGN2dCtZemE3M1lXREtHbXVIVFQyZXJ6bEVJNm82QmJmaDQ1VElXNFNjakhHK0FqQkxJeG9ITgpJMkJQY3lTbnRpaXZyL2c0eXk1QjdZc2VBdE5Ba3ZiYWVDTnNESHRKRy9IWmZOaGxsTHpnTVljWXZaNHdPVm1LCnVUMVVHK2llTFFlWWJXMVZEN3dzb0lBUmVkdFpZZHA3R2VxazNxZklhNEdWN05TQVlaYmRJVEZqMEZtUkc5ZGgKV1pQeHllMUNTR2hVbHNNNEd5MHBOWjc5YlhjUUhIU01lUm9IUFFaS0pkNHJhVHkxSjlWclYzZHJYcEhXc2xQNAphOXdWbHNQYWNkUDBhL1lMczVkNGRQUW9hM2orUnhGMk5GQWV6QjFjdFh2WWJITUNBd0VBQWFNUU1BNHdEQVlEClZSMFRBUUgvQkFJd0FEQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFlcFhCT2F3WUNjR1Ewa2l5a1N3eHBLWEgKSjVNMGpBbjZxM0lkUlpyZHkybkVHcU5DODBvVHc2U1lKQ0JuaW5GTllpTm8zRmRkTDFHUkpRYjlNVHg1UTdBRwpUSituOFgrZkM3UlpXK20raTgvSWVBd0kxNHpDYkR0Q3YvaTYrZnloamNQeHFncEVVSllSeTNuZ0RoZXdNWXlnClh4cTZ1cFdmenJrK0VOSE1SRTA0bzZtcVlvNkVoTVZVcW9iUDJJZmtFUmN2MlVXLzdkRkpqL2FUb2VnWUpEL2YKT2o3M09IM3hxLytkejNHZnQ3dzgvWTdkMWJpUC9zd2xCMk16MkxidTgyN3o3S3BCRXlQeFlnbGZrdGwwYVdJaQpna1Rkd3doemJFM050bGRSa3pJQzNERmtEUkZpcGpySzJkSTh0K3R3WVUwdm8yVTM4d0hjUGdDdCtDb0hZUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K\ncontexts:\n- context:\n    cluster: gke_gcloud-262311_us-central1-c_cluster-2\n    user: dave\n  name: dave-gke_gcloud-262311_us-central1-c_cluster-2\ncurrent-context: dave-gke_gcloud-262311_us-central1-c_cluster-2\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_027__gcp__intermediate_cluster_wide_kubeconfig/reset.sh",
    "content": "#!/usr/bin/env bash\n\n\nif [ $# -lt 3 ]\nthen\n  echo \"Usage: ./reset.sh <user-group> <kubeconfig-cluster-folder> <access-type>\"\n  exit 0\nfi\n\n\nFOLDER_USER_GROUP=$1\nKUBCONFIG_CLUSTER_FOLDER=$2\nACCESS_TYPE=$3\n\n\nexport NAME_OF_CSR=\"$KUBCONFIG_CLUSTER_FOLDER-$FOLDER_USER_GROUP-$ACCESS_TYPE-csr\"\n\nkubectl delete csr \"$NAME_OF_CSR\"\n\n\nkubectl delete clusterrole \"role-$KUBCONFIG_CLUSTER_FOLDER-$FOLDER_USER_GROUP-$ACCESS_TYPE\"\n\nkubectl delete clusterrolebinding \"rolebinding-$KUBCONFIG_CLUSTER_FOLDER-$FOLDER_USER_GROUP-$ACCESS_TYPE\"\n\n\nrm -rf ./$KUBCONFIG_CLUSTER_FOLDER/$FOLDER_USER_GROUP/*\n\n\n\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_027__gcp__intermediate_cluster_wide_kubeconfig/run-all.sh",
    "content": "#!/usr/bin/env bash\n\nuserSet=\"groupQA|groupDEV\"\naccessTypeValueSet=\"R|RW\"\nFOLDER_DEV_CLUSTER=\"dev\"\n\n\nechoUsageDEVCluster()\n{\n    echo \"Values for <user-group> : $userSet\"\n    echo \"Values for <access-type> : $accessTypeValueSet\"\n}\n\nassignVars()\n{\n  FOLDER_USER_GROUP=\"$1\"\n  ACCESS_TYPE=\"$2\"\n}\n\ngenerate()\n{\n  echo \"-------------------------------\"\n  echo \"          Resetting previous changes          \"\n  echo \"-------------------------------\"\n  ./reset.sh $FOLDER_USER_GROUP $KUBCONFIG_CLUSTER_FOLDER $ACCESS_TYPE\n\n  echo \"-------------------------------\"\n  echo \"          Client Cert Generation           \"\n  echo \"-------------------------------\"\n  ./client-run.sh $FOLDER_USER_GROUP $ACCESS_TYPE $KUBCONFIG_CLUSTER_FOLDER\n\n  echo \"-------------------------------\"\n  echo \"          kubeconfig & dave.key generation          \"\n  echo \"-------------------------------\"\n  ./admin-run.sh $FOLDER_USER_GROUP $ACCESS_TYPE $KUBCONFIG_CLUSTER_FOLDER\n  echo \"-------------------------------\"\n  echo \"          Share the following files with the $FOLDER_USER_GROUP\n          ./$KUBCONFIG_CLUSTER_FOLDER/$FOLDER_USER_GROUP/kubeconfig\n          ./$KUBCONFIG_CLUSTER_FOLDER/$FOLDER_USER_GROUP/dave.key\n\n          Initialization Steps\n          $ export KUBECONFIG=\\$PWD/kubeconfig\n\n          $ kubectl config set-credentials dave \\\\\n            --client-key=\\$PWD/dave.key \\\\\n            --embed-certs=true\n          \"\n  echo \"-------------------------------\"\n}\n\n\nif [ `kubectl config view --raw -o json | jq -r '.clusters[] | select(.name == \"'$(kubectl config current-context)'\") | .cluster.\"server\"' | grep \"https\" | wc -l` == \"1\"  ]\nthen\n  echo \"Dev cluster\"\n  if [ $# -lt 2 ]\n  then\n    echo \"Usage: ./run-all.sh <user-group> <access-type>\"\n    echoUsageDEVCluster\n    exit 0\n  fi\n  assignVars \"$1\" \"$2\"\n\n\n  if [ `echo \"$FOLDER_USER_GROUP\" | egrep \"$userSet\" | wc -l` == \"0\"  ]\n  then\n    echo \"<user-group> value not as per standards\"\n    echoUsageDEVCluster\n    exit 0\n  fi\n\n  if [ `echo \"$ACCESS_TYPE\" | egrep \"$accessTypeValueSet\" | wc -l` == \"0\"  ]\n  then\n    echo \"<access-type> value not as per standards\"\n    echoUsageDEVCluster\n    exit 0\n  fi\n\n  KUBCONFIG_CLUSTER_FOLDER=$FOLDER_DEV_CLUSTER\n  generate\nfi\n\n\n\n\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_027__gcp__intermediate_cluster_wide_kubeconfig/www.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: www\n  namespace: kube-system\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: www\n  template:\n    metadata:\n      labels:\n        app: www\n    spec:\n      containers:\n      - name: nginx\n        image: nginx:1.14-alpine\n        ports:\n        - containerPort: 80\n---\napiVersion: v1\nkind: Service\nmetadata:\n  name: www\n  namespace: kube-system\nspec:\n  selector:\n    app: vote\n  type: ClusterIP\n  ports:\n  - port: 80\n    targetPort: 80\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_028__gcp__configuring_datadog/00-clusterrole.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: datadog-agent\nrules:\n  - apiGroups:\n      - \"\"\n    resources:\n      - services\n      - events\n      - endpoints\n      - pods\n      - nodes\n      - componentstatuses\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups: [\"quota.openshift.io\"]\n    resources:\n      - clusterresourcequotas\n    verbs:\n      - get\n      - list\n  - apiGroups:\n      - \"\"\n    resources:\n      - configmaps\n    resourceNames:\n      - datadogtoken             # Kubernetes event collection state\n      - datadog-leader-election  # Leader election token\n    verbs:\n      - get\n      - update\n  - apiGroups:  # To create the leader election token\n      - \"\"\n    resources:\n      - configmaps\n    verbs:\n      - create\n  - nonResourceURLs:\n      - \"/version\"\n      - \"/healthz\"\n      - \"/metrics\"\n    verbs:\n      - get\n  - apiGroups:  # Kubelet connectivity\n      - \"\"\n    resources:\n      - nodes/metrics\n      - nodes/spec\n      - nodes/proxy\n      - nodes/stats\n    verbs:\n      - get\n\n---\n\nkind: ClusterRole\napiVersion: rbac.authorization.k8s.io/v1\nmetadata:\n  name: dca\nrules:\n  - apiGroups:\n      - \"\"\n    resources:\n      - services\n      - events\n      - endpoints\n      - pods\n      - nodes\n      - componentstatuses\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - \"autoscaling\"\n    resources:\n      - horizontalpodautoscalers\n    verbs:\n      - list\n      - watch\n  - apiGroups:\n      - \"\"\n    resources:\n      - configmaps\n    resourceNames:\n      - datadogtoken             # Kubernetes event collection state\n      - datadog-leader-election  # Leader election token\n    verbs:\n      - get\n      - update\n  - apiGroups:  # To create the leader election token\n      - \"\"\n    resources:\n      - configmaps\n    verbs:\n      - create\n      - get\n      - update\n  - nonResourceURLs:\n      - \"/version\"\n      - \"/healthz\"\n    verbs:\n      - get\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_028__gcp__configuring_datadog/01-cluster-role.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app.kubernetes.io/name: kube-state-metrics\n    app.kubernetes.io/version: 1.9.5\n  name: kube-state-metrics\nrules:\n- apiGroups:\n  - \"\"\n  resources:\n  - configmaps\n  - secrets\n  - nodes\n  - pods\n  - services\n  - resourcequotas\n  - replicationcontrollers\n  - limitranges\n  - persistentvolumeclaims\n  - persistentvolumes\n  - namespaces\n  - endpoints\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - extensions\n  resources:\n  - daemonsets\n  - deployments\n  - replicasets\n  - ingresses\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - apps\n  resources:\n  - statefulsets\n  - daemonsets\n  - deployments\n  - replicasets\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - batch\n  resources:\n  - cronjobs\n  - jobs\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - autoscaling\n  resources:\n  - horizontalpodautoscalers\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - authentication.k8s.io\n  resources:\n  - tokenreviews\n  verbs:\n  - create\n- apiGroups:\n  - authorization.k8s.io\n  resources:\n  - subjectaccessreviews\n  verbs:\n  - create\n- apiGroups:\n  - policy\n  resources:\n  - poddisruptionbudgets\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - certificates.k8s.io\n  resources:\n  - certificatesigningrequests\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - storage.k8s.io\n  resources:\n  - storageclasses\n  - volumeattachments\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - admissionregistration.k8s.io\n  resources:\n  - mutatingwebhookconfigurations\n  - validatingwebhookconfigurations\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - networking.k8s.io\n  resources:\n  - networkpolicies\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - coordination.k8s.io\n  resources:\n  - leases\n  verbs:\n  - list\n  - watch\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_028__gcp__configuring_datadog/05-serviceaccount.yaml",
    "content": "kind: ServiceAccount\napiVersion: v1\nmetadata:\n  name: datadog-agent\n  namespace: default\n\n---\n\nkind: ServiceAccount\napiVersion: v1\nmetadata:\n  name: dca\n  namespace: default\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_028__gcp__configuring_datadog/06-service-account.yaml",
    "content": "apiVersion: v1\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/name: kube-state-metrics\n    app.kubernetes.io/version: 1.9.5\n  name: kube-state-metrics\n  namespace: kube-system\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_028__gcp__configuring_datadog/10-clusterrolebinding.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: datadog-agent\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: datadog-agent\nsubjects:\n  - kind: ServiceAccount\n    name: datadog-agent\n    namespace: default\n\n---\n\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: dca\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: dca\nsubjects:\n  - kind: ServiceAccount\n    name: dca\n    namespace: default\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_028__gcp__configuring_datadog/11-cluster-role-binding.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/name: kube-state-metrics\n    app.kubernetes.io/version: 1.9.5\n  name: kube-state-metrics\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: kube-state-metrics\nsubjects:\n- kind: ServiceAccount\n  name: kube-state-metrics\n  namespace: kube-system\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_028__gcp__configuring_datadog/20-datadog-cluster-agent.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: datadog-cluster-agent\n  labels:\n    app: datadog-cluster-agent\nspec:\n  ports:\n    - port: 5005 # Has to be the same as the one exposed in the DCA. Default is 5005.\n      protocol: TCP\n  selector:\n    app: datadog-cluster-agent\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: datadog-cluster-agent\n  namespace: default\nspec:\n  selector:\n    matchLabels:\n      app: datadog-cluster-agent\n  template:\n    metadata:\n      labels:\n        app: datadog-cluster-agent\n      name: datadog-agent\n      annotations:\n        ad.datadoghq.com/datadog-cluster-agent.check_names: '[\"prometheus\"]'\n        ad.datadoghq.com/datadog-cluster-agent.init_configs: '[{}]'\n        ad.datadoghq.com/datadog-cluster-agent.instances: '[{\"prometheus_url\": \"http://%%host%%:5000/metrics\",\"namespace\": \"datadog.cluster_agent\",\"metrics\": [\"go_goroutines\",\"go_memstats_*\",\"process_*\",\"api_requests\",\"datadog_requests\",\"external_metrics\", \"cluster_checks_*\"]}]'\n    spec:\n      serviceAccountName: dca\n      containers:\n        - image: datadog/cluster-agent:latest\n          imagePullPolicy: Always\n          name: datadog-cluster-agent\n          env:\n            - name: DD_API_KEY\n              valueFrom:\n                secretKeyRef:\n                  name: datadog-secret\n                  key: api-key\n            # Optionally reference an APP KEY for the External Metrics Provider.\n            # - name: DD_APP_KEY\n            #   value: '<YOUR_APP_KEY>'\n            - name: DD_CLUSTER_AGENT_AUTH_TOKEN\n              valueFrom:\n                secretKeyRef:\n                  name: datadog-auth-token\n                  key: token\n            - name: DD_COLLECT_KUBERNETES_EVENTS\n              value: \"true\"\n            - name: DD_LEADER_ELECTION\n              value: \"true\"\n            - name: DD_EXTERNAL_METRICS_PROVIDER_ENABLED\n              value: \"true\"\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_028__gcp__configuring_datadog/25-datadog-agent.yaml",
    "content": "apiVersion: apps/v1\nkind: DaemonSet\nmetadata:\n  name: datadog-agent\nspec:\n  selector:\n    matchLabels:\n      app: datadog-agent\n  template:\n    metadata:\n      labels:\n        app: datadog-agent\n      name: datadog-agent\n    spec:\n      serviceAccountName: datadog-agent\n      containers:\n      - image: 'datadog/agent:latest'\n        imagePullPolicy: Always\n        name: datadog-agent\n        ports:\n          - containerPort: 8125\n            # Custom metrics via DogStatsD - uncomment this section to enable custom metrics collection\n            hostPort: 8125\n            name: dogstatsdport\n            protocol: UDP\n          - containerPort: 8126\n            # Trace Collection (APM) - uncomment this section to enable APM\n            hostPort: 8126\n            name: traceport\n            protocol: TCP\n        env:\n          ## The Datadog API Key related to your Organization set by secret\n          - name: DD_API_KEY\n            valueFrom:\n              secretKeyRef:\n                name: datadog-secret\n                key: api-key\n\n          ## Set DD_SITE to 'datadoghq.eu' to send your Agent data to the Datadog EU site\n          - name: DD_SITE\n            value: 'datadoghq.com'\n\n            #######################\n            ## Metric collection ##\n            #######################\n          - name: KUBERNETES\n            value: \"true\"\n          - name: DD_HEALTH_PORT\n            value: \"5555\"\n          - name: DD_COLLECT_KUBERNETES_EVENTS\n            value: \"true\"\n          - name: DD_LEADER_ELECTION\n            value: \"true\"\n          - name: DD_KUBERNETES_KUBELET_HOST\n            valueFrom:\n              fieldRef:\n                fieldPath: status.hostIP\n\n\n          ###############\n          ## DogStatsD ##\n          ###############\n          - name: DD_DOGSTATSD_NON_LOCAL_TRAFFIC\n            value: 'true'\n\n          #########\n          ## APM ##\n          #########\n          - name: DD_APM_ENABLED\n            value: 'true'\n          - name: DD_APM_NON_LOCAL_TRAFFIC\n            value: 'true'\n\n          ####################\n          ## Log collection ##\n          ####################\n          - name: DD_LOGS_ENABLED\n            value: \"true\"\n          - name: DD_LOG_LEVEL\n            value: \"debug\"\n          - name: DD_LOGS_CONFIG_CONTAINER_COLLECT_ALL\n            value: \"true\"\n          - name: DD_AC_EXCLUDE\n            value: \"name:datadog-agent\"\n          - name: DD_LOGS_CONFIG_K8S_CONTAINER_USE_FILE\n            value: 'true'\n\n          ####################\n          ## Log filtering ##\n          ####################\n\n          - name: DD_LOGS_CONFIG_PROCESSING_RULES\n            value: '[\n                      {\n                        \"type\": \"mask_sequences\",\n                        \"name\": \"mask_user_email\",\n                        \"replace_placeholder\": \"MASKED_EMAIL\",\n                        \"pattern\" : \"\\\\w+@any_company.com\"\n                      },\n                      {\n                        \"type\": \"exclude_at_match\",\n                        \"name\": \"exclude_healthcheck\",\n                        \"pattern\": \"HTTP\\/.?..?\\\" 500\"\n                      },\n                      {\n                        \"type\": \"exclude_at_match\",\n                        \"name\": \"cluster_info\",\n                        \"pattern\": \"CLUSTER | INFO\"\n                      }\n                     ]'\n\n          ########################\n          ## Process collection ##\n          ########################\n          - name: DD_PROCESS_AGENT_ENABLED\n            value: 'true'\n\n          ## For secure communication with the Cluster Agent (required to use the Cluster Agent)\n          - name: DD_CLUSTER_AGENT_AUTH_TOKEN\n            valueFrom:\n              secretKeyRef:\n                name: datadog-auth-token\n                key: token\n\n\n          ## Required for one existing bug\n          - name: DD_KUBELET_TLS_VERIFY\n            value: \"false\"\n\n\n#          - name: DD_CRI_SOCKET_PATH\n#            value: /host/var/run/docker.sock\n#          - name: DOCKER_HOST\n#            value: \"unix:///host/var/run/docker.sock\"\n        resources:\n          requests:\n            memory: \"256Mi\"\n            cpu: \"200m\"\n          limits:\n            memory: \"256Mi\"\n            cpu: \"200m\"\n        volumeMounts:\n          #######################\n          ## Metric collection ##\n          - name: dockersocketdir\n            mountPath: /var/run\n          - name: procdir\n            mountPath: /host/proc\n            readOnly: true\n          - name: cgroups\n            mountPath: /host/sys/fs/cgroup\n            readOnly: true\n\n          ####################\n          ## Log collection ##\n          ####################\n          - name: pointdir\n            mountPath: /opt/datadog-agent/run\n          - name: logpodpath\n            mountPath: /var/log/pods\n\n          # Docker runtime directory, replace this path with your container runtime logs directory,\n          # or remove this configuration if `/var/log/pods` is not a symlink to any other directory.\n          - name: logcontainerpath\n            mountPath: /var/lib/docker/containers\n\n          ########################\n          ## Process collection ##\n          ########################\n          - name: passwd\n            mountPath: /etc/passwd\n            readOnly: true\n#          - name: dockersocket\n#            mountPath: /var/run/docker.sock\n        livenessProbe:\n          httpGet:\n            path: /health\n            port: 5555\n          initialDelaySeconds: 15\n          periodSeconds: 15\n          timeoutSeconds: 5\n          successThreshold: 1\n          failureThreshold: 3\n      volumes:\n        - hostPath:\n            path: /var/run\n          name: dockersocketdir\n        - hostPath:\n            path: /proc\n          name: procdir\n        - hostPath:\n            path: /sys/fs/cgroup\n          name: cgroups\n\n        #####################\n        ## Log collection  ##\n        #####################\n        - hostPath:\n            path: /var/lib/datadog-agent/logs\n          name: pointdir\n        - hostPath:\n            path: /var/log/pods\n          name: logpodpath\n\n        # Docker runtime directory, replace this path with your container runtime logs directory,\n        # or remove this configuration if `/var/log/pods` is not a symlink to any other directory.\n        - hostPath:\n            path: /var/lib/docker/containers\n          name: logcontainerpath\n        ########################\n        ## Process collection ##\n        ########################\n        - hostPath:\n            path: /etc/passwd\n          name: passwd\n#        - hostPath:\n#            path: /var/run/docker.sock\n#          name: dockersocket\n#        - hostPath:\n#            path: /opt/datadog-agent/run\n#          name: pointdir\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_028__gcp__configuring_datadog/30-service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/name: kube-state-metrics\n    app.kubernetes.io/version: 1.9.5\n  name: kube-state-metrics\n  namespace: kube-system\nspec:\n  clusterIP: None\n  ports:\n  - name: http-metrics\n    port: 8080\n    targetPort: http-metrics\n  - name: telemetry\n    port: 8081\n    targetPort: telemetry\n  selector:\n    app.kubernetes.io/name: kube-state-metrics\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_028__gcp__configuring_datadog/35-deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app.kubernetes.io/name: kube-state-metrics\n    app.kubernetes.io/version: 1.9.5\n  name: kube-state-metrics\n  namespace: kube-system\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: kube-state-metrics\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/name: kube-state-metrics\n        app.kubernetes.io/version: 1.9.5\n    spec:\n      containers:\n      - image: quay.io/coreos/kube-state-metrics:v1.9.5\n        livenessProbe:\n          httpGet:\n            path: /healthz\n            port: 8080\n          initialDelaySeconds: 5\n          timeoutSeconds: 5\n        name: kube-state-metrics\n        ports:\n        - containerPort: 8080\n          name: http-metrics\n        - containerPort: 8081\n          name: telemetry\n        readinessProbe:\n          httpGet:\n            path: /\n            port: 8081\n          initialDelaySeconds: 5\n          timeoutSeconds: 5\n        securityContext:\n          runAsUser: 65534\n      nodeSelector:\n        kubernetes.io/os: linux\n      serviceAccountName: kube-state-metrics\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_028__gcp__configuring_datadog/ReadMe.md",
    "content": "Referenced Docs\n1) https://www.datadoghq.com/blog/monitoring-kubernetes-with-datadog/\n\n\n\n- Secret resource Created\n```bash\nkubectl create secret generic datadog-secret --from-literal api-key=\"2dd8*******************74d48f\"\n```\n\n- Run the following commands\n```bash\nkubectl apply -f .\n```\n\n- Verification of agent and ensure that\n    - all status's are OK\n    - API key is valid\n    - logs are getting shipped\n```bash\n$ kubectl exec -it datadog-agent-rp2bs agent status | egrep \"OK|API Key valid|FAIL|API Key invalid\"\n      Instance ID: cpu [OK]\n      Instance ID: disk:e5dffb8bef24336f [OK]\n      Instance ID: docker [OK]\n      Instance ID: file_handle [OK]\n      Instance ID: io [OK]\n      Instance ID: kube_dns:cd40e8b0b9591c53 [OK]\n      Instance ID: kubelet:d884b5186b651429 [OK]\n      Instance ID: kubernetes_apiserver [OK]\n      Instance ID: kubernetes_state:786c62219a8c6f42 [OK]\n      Instance ID: load [OK]\n      Instance ID: memory [OK]\n      Instance ID: network:e0204ad63d43c949 [OK]\n      Instance ID: ntp:d884b5186b651429 [OK]\n      Instance ID: prometheus:datadog.cluster_agent:c45da342a409d029 [OK]\n      Instance ID: uptime [OK]\n    API key ending with 4d48f: API Key valid\n    Status: OK\n    Status: OK\n```\n\n\n- Deploy the cluster agent\n```bash\nkubectl get pods -l app=datadog-cluster-agent\n```\n\n- Check the status of cluster-agent\n```bash\n$ kubectl exec -it datadog-cluster-agent-67588d6f7b-znkxm agent status | egrep \"OK|API Key valid\"\n      Instance ID: kubernetes_apiserver [OK]\n    API key ending with 4d48f: API Key valid\n```\n\n\n- Now login to datadog and let's see what we have achieved so far\n\n### Logs \n\n- Live Tail\n\n![](.images/live-tail-logs.png)\n\n\n- Logs dashboard\n\n![](.images/logs-dasboard-page.png)\n\n\n### Dashboard\n\n- k8s dashboard\n\n![](.images/k8s-dashboard-pic1.png)\n\n\n![](.images/k8s-dashboard-pic2.png)\n\n\n![](.images/k8s-dashboard-pic3.png)\n\n### Events\n\n- Events tab\n\n![](.images/events-tab.png)\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_029__gcp__configuring_dns_with_static_IPs_k8_using_Ingress/ReadMe.md",
    "content": "# Configuring Domain Names with Static IP Addresses\n\n[configuring-domain-name-static-ip](https://cloud.google.com/kubernetes-engine/docs/tutorials/configuring-domain-name-static-ip)\n\nThis tutorial demonstrates the following steps:\n\n- Reserve a static external IP address for your application\n- Configure either Service or Ingress resources to use the static IP\n- Update DNS records of your domain name to point to your application\n\n\n## Step 0:\nGKE Cluster created `us-central1-c\t`\n\n![](.images/GKE_cluster_created.png)\n\n## Step 1: \n\nDeploy your web application\n\n```bash\n$ kubectl apply -f helloweb-deployment.yaml\ndeployment.apps/helloweb created\n```\n\n## Step 2: \n\nExpose your application\n\n### Using an Ingress\n- If you choose to expose your application using an Ingress, \nwhich creates an HTTP(S) Load Balancer, you must reserve a global static IP address. Regional IP addresses do not work with Ingress.\n\n- To create a global static IP address named helloweb-ip:\n  \n\n```bash\n$ gcloud compute addresses create helloweb-ip --global\nCreated [https://www.googleapis.com/compute/v1/projects/gcloud-262311/global/addresses/helloweb-ip].\n```\n  \n- To find the static IP address you created, run the following command:\n \n```bash\n$ gcloud compute addresses describe helloweb-ip --global\naddress: 35.190.35.174\naddressType: EXTERNAL\ncreationTimestamp: '2020-04-13T15:52:30.054-07:00'\ndescription: ''\nid: '4058631783476450241'\nipVersion: IPV4\nkind: compute#address\nname: helloweb-ip\nnetworkTier: PREMIUM\nselfLink: https://www.googleapis.com/compute/v1/projects/gcloud-262311/global/addresses/helloweb-ip\nstatus: RESERVED\n```\n\n- To expose a web application on a static IP using Ingress, you need to deploy two resources:\n    - A Service with type:NodePort\n    - An Ingress configured with the service name and static IP annotation\n\n- Use the above static IP to create a manifest file named `helloweb-ingress.yaml` describing these two resources:\n  \n\n- Apply the helloweb-ingress.yaml manifest file to the cluster:\n  \n\n```bash\n$ kubectl apply -f helloweb-ingress.yaml\ningress.extensions/helloweb created\nservice/helloweb-backend created\n```\n\n- To see the reserve IP address associated with the load balancer:\n  \n```bash\n$ kubectl get ingress\nNAME       HOSTS   ADDRESS         PORTS   AGE\nhelloweb   *       35.190.35.174   80      49s\n```\n\n### Step 3: \n\nVisit your reserved static IP address\n\n```bash\n$ curl http://35.190.35.174\n<!DOCTYPE html>\n<html lang=en>\n  <meta charset=utf-8>\n  <meta name=viewport content=\"initial-scale=1, minimum-scale=1, width=device-width\">\n  <title>Error 404 (Not Found)!!1</title>\n  <style>\n    *{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}* > body{background:url(//www.google.com/images/errors/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url(//www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png) no-repeat;margin-left:-5px}@media only screen and (min-resolution:192dpi){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat 0% 0%/100% 100%;-moz-border-image:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) 0}}@media only screen and (-webkit-min-device-pixel-ratio:2){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat;-webkit-background-size:100% 100%}}#logo{display:inline-block;height:54px;width:150px}\n  </style>\n  <a href=//www.google.com/><span id=logo aria-label=Google></span></a>\n  <p><b>404.</b> <ins>That’s an error.</ins>\n  <p>The requested URL <code>/</code> was not found on this server.  <ins>That’s all we know.</ins>\n```\n\n\n### TDB:\n\nConfigure your domain name records\n```bash\n$ nslookup testservicek8s.gotdns.ch                       \nServer:         192.168.1.1\nAddress:        192.168.1.1#53\n\nNon-authoritative answer:\nName:   testservicek8s.gotdns.ch\nAddress: 34.67.51.160\n```\n\n### Step 5:\nVisit the domain\n\n```bash\n$ curl http://testservicek8s.gotdns.ch                       \nHello, world!\nVersion: 1.0.0\nHostname: helloweb-7f7f7474fc-ghncd\n```\n\n## Cleaning up\n\n- Delete the load balancing resources:\n  \n```bash\n$ kubectl delete ingress,service -l app=hello\nservice \"helloweb\" deleted\n```\n\n- Release the reserved static IP\n\n```bash\n$ gcloud compute addresses delete helloweb-ip --global\nThe following global addresses will be deleted:\n - [helloweb-ip]\n\nDo you want to continue (Y/n)?  Y\n\nDeleted [https://www.googleapis.com/compute/v1/projects/gcloud-262311/global/addresses/helloweb-ip].\n```\n\n- Delete the sample application:\n  \n```bash\n$ kubectl delete -f helloweb-deployment.yaml\ndeployment.apps \"helloweb\" deleted\n```"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_029__gcp__configuring_dns_with_static_IPs_k8_using_Ingress/helloweb-deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: helloweb\n  labels:\n    app: hello\nspec:\n  selector:\n    matchLabels:\n      app: hello\n      tier: web\n  template:\n    metadata:\n      labels:\n        app: hello\n        tier: web\n    spec:\n      containers:\n        - name: hello-app\n          image: gcr.io/google-samples/hello-app:1.0\n          ports:\n            - containerPort: 8080"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_029__gcp__configuring_dns_with_static_IPs_k8_using_Ingress/helloweb-ingress.yaml",
    "content": "apiVersion: extensions/v1beta1\nkind: Ingress\nmetadata:\n  name: helloweb\n  annotations:\n    kubernetes.io/ingress.global-static-ip-name: helloweb-ip\n  labels:\n    app: hello\nspec:\n  backend:\n    serviceName: helloweb-backend\n    servicePort: 8080\n---\napiVersion: v1\nkind: Service\nmetadata:\n  name: helloweb-backend\n  labels:\n    app: hello\nspec:\n  type: NodePort\n  selector:\n    app: hello\n    tier: web\n  ports:\n    - port: 8080\n      targetPort: 8080"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_030__gcp__PodSecurityPolicy/ReadMe.md",
    "content": "## Docs Referred\n\n- [pod-security-policy](https://kubernetes.io/docs/concepts/policy/pod-security-policy/)\n- [how-to/pod-security-policy](https://cloud.google.com/kubernetes-engine/docs/how-to/pod-security-policies)\n\n\n### Enabling PodSecurityPolicy controller\nTo use the PodSecurityPolicy admission controller, you must create a new cluster or update an existing cluster with the --enable-pod-security-policy flag\n\n- To update an existing cluster:\n\n> gcloud beta container clusters update <cluster-name> --enable-pod-security-policy --zone <specify-zone>\n\n```bash\ngcloud beta container clusters update cluster-2 --enable-pod-security-policy --zone us-central1-c\nUpdating cluster-2...done.\n```\n\n\n### Set up\n- Set up a namespace and a service account to act as for this example. We’ll use this service account to mock a non-admin user.\n```bash\n$ kubectl create namespace psp-example\nnamespace/psp-example created\n\n$ kubectl get namespace psp-example\nNAME          STATUS   AGE\npsp-example   Active   13s\n```\n\n- Set up a service-account\n```bash\n$ kubectl create serviceaccount -n psp-example fake-user\nserviceaccount/fake-user created\n\n$ kubectl get serviceaccount -n psp-example\nNAME        SECRETS   AGE\ndefault     1         8m48s\nfake-user   1         30s\n```\n\n- Role Binding\n```bash\n$ kubectl create rolebinding -n psp-example fake-editor --clusterrole=edit --serviceaccount=psp-example:fake-user\nrolebinding.rbac.authorization.k8s.io/fake-editor created\n\n$ kubectl get clusterrole | grep edit\nedit                                                                   23m\n\n$ kubectl get rolebinding fake-editor -n psp-example\nNAME          AGE\nfake-editor   109s\n```\n\n\n- To make it clear which user we’re acting as and save some typing, create 2 aliases:\n```bash\nalias kubectl-admin='kubectl -n psp-example'\nalias kubectl-user='kubectl --as=system:serviceaccount:psp-example:fake-user -n psp-example'\n```\n\n- Create a policy and a pod with kubectl-admin\n```bash\n$ kubectl-admin create -f example-psp.yaml\npodsecuritypolicy.policy/example created\n```\n\n- Now, as the unprivileged user, try to create a simple pod:\n```bash\n$ kubectl-user create -f- <<EOF\napiVersion: v1\nkind: Pod\nmetadata:\n  name:      pause\nspec:\n  containers:\n    - name:  pause\n      image: k8s.gcr.io/pause\nEOF\nError from server (Forbidden): error when creating \"STDIN\": pods \"pause\" is forbidden: unable to validate against any pod security policy: []\n```\n\n- What happened? Although the PodSecurityPolicy was created, neither the pod’s service account nor fake-user have permission to use the new policy:\n```bash\n$ kubectl-user auth can-i use podsecuritypolicy/example\nWarning: resource 'podsecuritypolicies' is not namespace scoped in group 'extensions'\nno\n```\n\n- Create the rolebinding to grant fake-user the use verb on the example policy:\n\n```bash\n$ kubectl-admin create role psp:unprivileged \\\n      --verb=use \\\n      --resource=podsecuritypolicy \\\n      --resource-name=example\nrole.rbac.authorization.k8s.io/psp:unprivileged created\n\n$ kubectl get role -n psp-example\nNAME               AGE\npsp:unprivileged   72s\n\n$ kubectl-admin create rolebinding fake-user:psp:unprivileged \\\n      --role=psp:unprivileged \\\n      --serviceaccount=psp-example:fake-user\nrolebinding.rbac.authorization.k8s.io/fake-user:psp:unprivileged created\n\n$ kubectl get rolebinding -n psp-example\nNAME                         AGE\nfake-editor                  16m\nfake-user:psp:unprivileged   25s\n```\n\n- Now retry creating the pod:\n```bash\n$ kubectl-user create -f- <<EOF\napiVersion: v1\nkind: Pod\nmetadata:\n  name:      pause\nspec:\n  containers:\n    - name:  pause\n      image: k8s.gcr.io/pause\nEOF\npod/pause created\n```\n\n- It works as expected! But any attempts to create a privileged pod should still be denied:\n```bash\n$ kubectl-user create -f- <<EOF\napiVersion: v1\nkind: Pod\nmetadata:\n  name:      privileged\nspec:\n  containers:\n    - name:  pause\n      image: k8s.gcr.io/pause\n      securityContext:\n        privileged: true\nEOF\nError from server (Forbidden): error when creating \"STDIN\": pods \"privileged\" is forbidden: unable to validate against any pod security policy: [spec.containers[0].securityContext.privileged: Invalid value: true: Privileged containers are not allowed]\n```\n\n- Delete the pod before moving on:\n  \n```bash\n$ kubectl-user delete pod pause\npod \"pause\" deleted\n```\n\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_030__gcp__PodSecurityPolicy/example-psp.yaml",
    "content": "apiVersion: policy/v1beta1\nkind: PodSecurityPolicy\nmetadata:\n  name: example\nspec:\n  privileged: false  # Don't allow privileged pods!\n  # The rest fills in some required fields.\n  seLinux:\n    rule: RunAsAny\n  supplementalGroups:\n    rule: RunAsAny\n  runAsUser:\n    rule: RunAsAny\n  fsGroup:\n    rule: RunAsAny\n  volumes:\n    - '*'"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_031__gcp__kube_state_metrics/ReadMe.md",
    "content": "## To deploy kube-state-metrics on kubenetes cluster\n\n[Docs Referred](https://github.com/kubernetes/kube-state-metrics#kubernetes-deployment)\n\n- To deploy the k8s resources you can use\n```bash\n$ kubectl apply -f .\n```"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_031__gcp__kube_state_metrics/cluster-role-binding.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/name: kube-state-metrics\n    app.kubernetes.io/version: 1.9.7\n  name: kube-state-metrics\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: kube-state-metrics\nsubjects:\n  - kind: ServiceAccount\n    name: kube-state-metrics\n    namespace: kube-system"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_031__gcp__kube_state_metrics/cluster-role.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app.kubernetes.io/name: kube-state-metrics\n    app.kubernetes.io/version: 1.9.7\n  name: kube-state-metrics\nrules:\n  - apiGroups:\n      - \"\"\n    resources:\n      - configmaps\n      - secrets\n      - nodes\n      - pods\n      - services\n      - resourcequotas\n      - replicationcontrollers\n      - limitranges\n      - persistentvolumeclaims\n      - persistentvolumes\n      - namespaces\n      - endpoints\n    verbs:\n      - list\n      - watch\n  - apiGroups:\n      - extensions\n    resources:\n      - daemonsets\n      - deployments\n      - replicasets\n      - ingresses\n    verbs:\n      - list\n      - watch\n  - apiGroups:\n      - apps\n    resources:\n      - statefulsets\n      - daemonsets\n      - deployments\n      - replicasets\n    verbs:\n      - list\n      - watch\n  - apiGroups:\n      - batch\n    resources:\n      - cronjobs\n      - jobs\n    verbs:\n      - list\n      - watch\n  - apiGroups:\n      - autoscaling\n    resources:\n      - horizontalpodautoscalers\n    verbs:\n      - list\n      - watch\n  - apiGroups:\n      - authentication.k8s.io\n    resources:\n      - tokenreviews\n    verbs:\n      - create\n  - apiGroups:\n      - authorization.k8s.io\n    resources:\n      - subjectaccessreviews\n    verbs:\n      - create\n  - apiGroups:\n      - policy\n    resources:\n      - poddisruptionbudgets\n    verbs:\n      - list\n      - watch\n  - apiGroups:\n      - certificates.k8s.io\n    resources:\n      - certificatesigningrequests\n    verbs:\n      - list\n      - watch\n  - apiGroups:\n      - storage.k8s.io\n    resources:\n      - storageclasses\n      - volumeattachments\n    verbs:\n      - list\n      - watch\n  - apiGroups:\n      - admissionregistration.k8s.io\n    resources:\n      - mutatingwebhookconfigurations\n      - validatingwebhookconfigurations\n    verbs:\n      - list\n      - watch\n  - apiGroups:\n      - networking.k8s.io\n    resources:\n      - networkpolicies\n    verbs:\n      - list\n      - watch\n  - apiGroups:\n      - coordination.k8s.io\n    resources:\n      - leases\n    verbs:\n      - list\n      - watch"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_031__gcp__kube_state_metrics/deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app.kubernetes.io/name: kube-state-metrics\n    app.kubernetes.io/version: 1.9.7\n  name: kube-state-metrics\n  namespace: kube-system\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: kube-state-metrics\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/name: kube-state-metrics\n        app.kubernetes.io/version: 1.9.7\n    spec:\n      containers:\n        - image: quay.io/coreos/kube-state-metrics:v1.9.7\n          livenessProbe:\n            httpGet:\n              path: /healthz\n              port: 8080\n            initialDelaySeconds: 5\n            timeoutSeconds: 5\n          name: kube-state-metrics\n          ports:\n            - containerPort: 8080\n              name: http-metrics\n            - containerPort: 8081\n              name: telemetry\n          readinessProbe:\n            httpGet:\n              path: /\n              port: 8081\n            initialDelaySeconds: 5\n            timeoutSeconds: 5\n          securityContext:\n            runAsUser: 65534\n      nodeSelector:\n        kubernetes.io/os: linux\n      serviceAccountName: kube-state-metrics"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_031__gcp__kube_state_metrics/service-account.yaml",
    "content": "apiVersion: v1\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/name: kube-state-metrics\n    app.kubernetes.io/version: 1.9.7\n  name: kube-state-metrics\n  namespace: kube-system"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_031__gcp__kube_state_metrics/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/name: kube-state-metrics\n    app.kubernetes.io/version: 1.9.7\n  name: kube-state-metrics\n  namespace: kube-system\nspec:\n  clusterIP: None\n  ports:\n    - name: http-metrics\n      port: 8080\n      targetPort: http-metrics\n    - name: telemetry\n      port: 8081\n      targetPort: telemetry\n  selector:\n    app.kubernetes.io/name: kube-state-metrics"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_032__gcp__traefik_whoami_tls_custom_certs/00-resource-crd-definition.yml",
    "content": "apiVersion: apiextensions.k8s.io/v1beta1\nkind: CustomResourceDefinition\nmetadata:\n  name: ingressroutes.traefik.containo.us\n\nspec:\n  group: traefik.containo.us\n  version: v1alpha1\n  names:\n    kind: IngressRoute\n    plural: ingressroutes\n    singular: ingressroute\n  scope: Namespaced\n\n---\napiVersion: apiextensions.k8s.io/v1beta1\nkind: CustomResourceDefinition\nmetadata:\n  name: middlewares.traefik.containo.us\n\nspec:\n  group: traefik.containo.us\n  version: v1alpha1\n  names:\n    kind: Middleware\n    plural: middlewares\n    singular: middleware\n  scope: Namespaced\n\n---\napiVersion: apiextensions.k8s.io/v1beta1\nkind: CustomResourceDefinition\nmetadata:\n  name: ingressroutetcps.traefik.containo.us\n\nspec:\n  group: traefik.containo.us\n  version: v1alpha1\n  names:\n    kind: IngressRouteTCP\n    plural: ingressroutetcps\n    singular: ingressroutetcp\n  scope: Namespaced\n\n---\napiVersion: apiextensions.k8s.io/v1beta1\nkind: CustomResourceDefinition\nmetadata:\n  name: ingressrouteudps.traefik.containo.us\n\nspec:\n  group: traefik.containo.us\n  version: v1alpha1\n  names:\n    kind: IngressRouteUDP\n    plural: ingressrouteudps\n    singular: ingressrouteudp\n  scope: Namespaced\n\n---\napiVersion: apiextensions.k8s.io/v1beta1\nkind: CustomResourceDefinition\nmetadata:\n  name: tlsoptions.traefik.containo.us\n\nspec:\n  group: traefik.containo.us\n  version: v1alpha1\n  names:\n    kind: TLSOption\n    plural: tlsoptions\n    singular: tlsoption\n  scope: Namespaced\n\n---\napiVersion: apiextensions.k8s.io/v1beta1\nkind: CustomResourceDefinition\nmetadata:\n  name: tlsstores.traefik.containo.us\n\nspec:\n  group: traefik.containo.us\n  version: v1alpha1\n  names:\n    kind: TLSStore\n    plural: tlsstores\n    singular: tlsstore\n  scope: Namespaced\n\n---\napiVersion: apiextensions.k8s.io/v1beta1\nkind: CustomResourceDefinition\nmetadata:\n  name: traefikservices.traefik.containo.us\n\nspec:\n  group: traefik.containo.us\n  version: v1alpha1\n  names:\n    kind: TraefikService\n    plural: traefikservices\n    singular: traefikservice\n  scope: Namespaced"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_032__gcp__traefik_whoami_tls_custom_certs/05-traefik-rbac.yml",
    "content": "---\nkind: ClusterRole\napiVersion: rbac.authorization.k8s.io/v1beta1\nmetadata:\n  name: traefik-ingress-controller\n\nrules:\n  - apiGroups:\n      - \"\"\n    resources:\n      - services\n      - endpoints\n      - secrets\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - extensions\n    resources:\n      - ingresses\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - extensions\n    resources:\n      - ingresses/status\n    verbs:\n      - update\n  - apiGroups:\n      - traefik.containo.us\n    resources:\n      - middlewares\n      - ingressroutes\n      - traefikservices\n      - ingressroutetcps\n      - ingressrouteudps\n      - tlsoptions\n      - tlsstores\n    verbs:\n      - get\n      - list\n      - watch\n\n---\nkind: ClusterRoleBinding\napiVersion: rbac.authorization.k8s.io/v1beta1\nmetadata:\n  name: traefik-ingress-controller\n\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: traefik-ingress-controller\nsubjects:\n  - kind: ServiceAccount\n    name: traefik-ingress-controller\n    namespace: default\n---"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_032__gcp__traefik_whoami_tls_custom_certs/10-service-account.yaml",
    "content": "apiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: traefik-ingress-controller\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_032__gcp__traefik_whoami_tls_custom_certs/11-traefik-configmap.yaml",
    "content": "kind: ConfigMap\napiVersion: v1\nmetadata:\n  name: traefik-config-map\ndata:\n  traefik.toml: |-\n    [global]\n      checkNewVersion = false\n      sendAnonymousUsage = false\n    [retry]\n      attempts = 3\n      maxMem = 3\n    [entryPoints]\n      [entryPoints.web]\n        address = \":80\"\n        [entryPoints.web.http]\n          [entryPoints.web.http.redirections]\n            [entryPoints.web.http.redirections.entryPoint]\n              to = \"websecure\"\n              scheme = \"https\"\n              permanent = true\n      [entryPoints.websecure]\n        address = \":443\"\n    [log]\n      level = \"DEBUG\"\n    [accessLog]\n    [api]\n      insecure = true\n      dashboard = true\n      debug = true\n    [providers]\n      [providers.file]\n        directory = \"/etc/traefik\"\n        watch = true\n      [providers.kubernetesCRD]\n\n\n    [[tls.certificates]]\n       keyFile = \"/var/ssl/start-domain-com-ssl/star_domain.com.key\"\n       certFile = \"/var/ssl/start-domain-com-ssl/star_domain_com.chained.crt\"\n\n    [tls.options]\n        [tls.options.default]\n          minVersion = \"VersionTLS12\"\n          preferServerCipherSuites = true\n          cipherSuites = [\n            \"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\",\n            \"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\",\n            \"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305\",\n            \"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256\",\n            \"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA\",\n            \"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA\",\n            \"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\",\n            \"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\",\n            \"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256\",\n          ]\n\n        [tls.options.mintls13]\n          minVersion = \"VersionTLS13\"\n\n    [tls.stores]\n      [tls.stores.default]\n        [tls.stores.default.defaultCertificate]\n          keyFile = \"/var/ssl/start-domain-com-ssl/star_domain.com.key\"\n          certFile = \"/var/ssl/start-domain-com-ssl/star_domain_com.chained.crt\""
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_032__gcp__traefik_whoami_tls_custom_certs/12-secret.yaml",
    "content": "apiVersion: v1\ndata:\n  star_domain.com.key: <Add base64 encoded value of you cert.key>\n  star_domain_com.chained.crt: <Add base64 encoded value of your chained cert.crt>\nkind: Secret\nmetadata:\n  name: start-domain-com-ssl\n  namespace: default\ntype: Opaque"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_032__gcp__traefik_whoami_tls_custom_certs/15-traefik-deployment.yaml",
    "content": "---\nkind: Deployment\napiVersion: apps/v1\nmetadata:\n  name: traefik\n  labels:\n    app: traefik\n\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: traefik\n  template:\n    metadata:\n      labels:\n        app: traefik\n    spec:\n      serviceAccountName: traefik-ingress-controller\n      volumes:\n        - name: config\n          configMap:\n            name: traefik-config-map\n        - name: start-domain-com-ssl\n          secret:\n            secretName: start-domain-com-ssl\n      containers:\n        - name: traefik\n          image: traefik:v2.2.1\n          ports:\n            - name: web\n              containerPort: 80\n            - name: admin\n              containerPort: 8080\n            - name: websecure\n              containerPort: 443\n          volumeMounts:\n            - mountPath: /etc/traefik/traefik.toml\n              name: config\n              subPath: traefik.toml\n            - mountPath: \"/var/ssl/start-domain-com-ssl\"\n              name: start-domain-com-ssl\n              readOnly: true\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_032__gcp__traefik_whoami_tls_custom_certs/20-traefik-service.yaml",
    "content": "---\napiVersion: v1\nkind: Service\nmetadata:\n  name: traefik\nspec:\n  type: LoadBalancer\n  selector:\n    app: traefik\n  ports:\n    - protocol: TCP\n      port: 80\n      name: web\n      targetPort: 80\n    - protocol: TCP\n      port: 443\n      name: websecure\n      targetPort: 80\n    - protocol: TCP\n      port: 8080\n      name: admin\n      targetPort: 8080\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_032__gcp__traefik_whoami_tls_custom_certs/25-whoami-deployment.yaml",
    "content": "kind: Deployment\napiVersion: apps/v1\nmetadata:\n  namespace: default\n  name: whoami\n  labels:\n    app: whoami\n\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: whoami\n  template:\n    metadata:\n      labels:\n        app: whoami\n    spec:\n      containers:\n        - name: whoami\n          image: containous/whoami\n          ports:\n            - name: web\n              containerPort: 80\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_032__gcp__traefik_whoami_tls_custom_certs/30-whoami-service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: whoami\n\nspec:\n  ports:\n    - protocol: TCP\n      name: web\n      port: 80\n  selector:\n    app: whoami\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_032__gcp__traefik_whoami_tls_custom_certs/35-whoami-ingress-route.yaml",
    "content": "apiVersion: traefik.containo.us/v1alpha1\nkind: IngressRoute\nmetadata:\n  name: whoami-whoami\n  namespace: default\nspec:\n  tls: {}\n  entryPoints:\n    - web\n    - websecure\n  routes:\n  - match: PathPrefix(`/whoami-app-api`)\n    kind: Rule\n    services:\n    - name: whoami\n      port: 80\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_032__gcp__traefik_whoami_tls_custom_certs/ReadMe.md",
    "content": "## To deploy traefik on GKE with whoami service and with custom TLS certificates\n\n\n- Assuming that you have the certificates already, please visit visit [here](https://www.base64encode.org/) and \n    - convert your `star_domain.com.key` to base64 and paste the value in `12-secret.yaml`\n    - convert your `star_domain_com.chained.crt` to base64 and paste the value in `12-secret.yaml`\n    \n\n- Create the secret using `kubectl apply -f 12-secret.yaml`\n\n- Now create the rest of the resources using `kubectl apply -f .`\n\n\n\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_033__gcp__configuring_dns_with_static_IPs_k8_using_Service/ReadMe.md",
    "content": "# Configuring Domain Names with Static IP Addresses\n\n[configuring-domain-name-static-ip](https://cloud.google.com/kubernetes-engine/docs/tutorials/configuring-domain-name-static-ip)\n\nThis tutorial demonstrates the following steps:\n\n- Reserve a static external IP address for your application\n- Configure either Service or Ingress resources to use the static IP\n- Update DNS records of your domain name to point to your application\n\n\n## Step 0:\nGKE Cluster created `us-central1-c\t`\n\n\n\n## Step 1: \n\nDeploy your web application\n\n```bash\n$ kubectl apply -f helloweb-deployment.yaml\ndeployment.apps/helloweb created\n```\n\n## Step 2: \n\nExpose your application\n\n### Use a Service\n- Use a Service, which creates a TCP Network Load Balancer that works with regional IP addresses.\n\n- To use a Service, create a static IP address named helloweb-ip in the region us-central1:\n\n```bash\n$ gcloud compute addresses create helloweb-ip --region us-central1\nCreated [https://www.googleapis.com/compute/v1/projects/gcloud-262311/regions/us-central1/addresses/helloweb-ip].\n```\n  \n- To find the static IP address you created, run the following command:\n \n```bash\n$ gcloud compute addresses describe helloweb-ip --region us-central1\naddress: 34.67.51.160\naddressType: EXTERNAL\ncreationTimestamp: '2020-04-13T15:17:53.083-07:00'\ndescription: ''\nid: '1347105937512029182'\nkind: compute#address\nname: helloweb-ip\nnetworkTier: PREMIUM\nregion: https://www.googleapis.com/compute/v1/projects/gcloud-262311/regions/us-central1\nselfLink: https://www.googleapis.com/compute/v1/projects/gcloud-262311/regions/us-central1/addresses/helloweb-ip\nstatus: RESERVED\n```\n\n- Use the above static IP  to create a manifest file named `helloweb-service.yaml` describing a Service\n\n- Create the service\n\n```bash\n$ kubectl apply -f helloweb-service.yaml\nservice/helloweb created\n```\n\n- To see the reserved IP address associated with the load balancer:\n  \n```bash\n$ kubectl get service\nNAME         TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE\nhelloweb     LoadBalancer   10.127.11.151   <pending>     80:30354/TCP   36s\nkubernetes   ClusterIP      10.127.0.1      <none>        443/TCP        73m\n\n$ kubectl get service\nNAME         TYPE           CLUSTER-IP      EXTERNAL-IP    PORT(S)        AGE\nhelloweb     LoadBalancer   10.127.11.151   34.67.51.160   80:30354/TCP   99s\nkubernetes   ClusterIP      10.127.0.1      <none>         443/TCP        74m\n```\n\n### Step 3: \n\nVisit your reserved static IP address\n\n```bash\n$ curl http://34.67.51.160           \nHello, world!\nVersion: 1.0.0\nHostname: helloweb-7f7f7474fc-ghncd\n```\n\n### Step 4:\n\nConfigure your domain name records\n```bash\n$ nslookup testservicek8s.gotdns.ch                       \nServer:         192.168.1.1\nAddress:        192.168.1.1#53\n\nNon-authoritative answer:\nName:   testservicek8s.gotdns.ch\nAddress: 34.67.51.160\n```\n\n### Step 5:\nVisit the domain\n\n```bash\n$ curl http://testservicek8s.gotdns.ch                       \nHello, world!\nVersion: 1.0.0\nHostname: helloweb-7f7f7474fc-ghncd\n```\n\n## Cleaning up\n\n- Delete the load balancing resources:\n  \n```bash\n$ kubectl delete ingress,service -l app=hello\nservice \"helloweb\" deleted\n```\n\n- Release the reserved static IP\n\n```bash\n$ gcloud compute addresses delete helloweb-ip --region us-central1\nThe following addresses will be deleted:\n - [helloweb-ip] in [us-central1]\n\nDo you want to continue (Y/n)?  Y\n\nDeleted [https://www.googleapis.com/compute/v1/projects/gcloud-262311/regions/us-central1/addresses/helloweb-ip].\n```\n\n- Delete the sample application:\n  \n```bash\n$ kubectl delete -f helloweb-deployment.yaml\ndeployment.apps \"helloweb\" deleted\n```"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_033__gcp__configuring_dns_with_static_IPs_k8_using_Service/helloweb-deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: helloweb\n  labels:\n    app: hello\nspec:\n  selector:\n    matchLabels:\n      app: hello\n      tier: web\n  template:\n    metadata:\n      labels:\n        app: hello\n        tier: web\n    spec:\n      containers:\n        - name: hello-app\n          image: gcr.io/google-samples/hello-app:1.0\n          ports:\n            - containerPort: 8080"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_033__gcp__configuring_dns_with_static_IPs_k8_using_Service/helloweb-service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: helloweb\n  labels:\n    app: hello\nspec:\n  selector:\n    app: hello\n    tier: web\n  ports:\n    - port: 80\n      targetPort: 8080\n  type: LoadBalancer\n  loadBalancerIP: \"34.67.51.160\""
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_034__gcp__metricbeat/00-service-account.yaml",
    "content": "---\n# Source: metricbeat/templates/01-serviceaccount.yaml\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: metricbeat\n  namespace: kube-system\n  labels:\n    k8s-app: metricbeat\n---"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_034__gcp__metricbeat/04-cluster-role.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: metricbeat\n  labels:\n    k8s-app: metricbeat\nrules:\n  - apiGroups: [\"\"]\n    resources:\n      - nodes\n      - namespaces\n      - events\n      - pods\n    verbs: [\"get\", \"list\", \"watch\"]\n  - apiGroups: [\"extensions\"]\n    resources:\n      - replicasets\n    verbs: [\"get\", \"list\", \"watch\"]\n  - apiGroups: [\"apps\"]\n    resources:\n      - statefulsets\n      - deployments\n    verbs: [\"get\", \"list\", \"watch\"]\n  - apiGroups:\n      - \"\"\n    resources:\n      - nodes/stats\n    verbs:\n      - get\n---\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_034__gcp__metricbeat/08-cluster-role-binding.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: metricbeat\nsubjects:\n  - kind: ServiceAccount\n    name: metricbeat\n    namespace: kube-system\nroleRef:\n  kind: ClusterRole\n  name: metricbeat\n  apiGroup: rbac.authorization.k8s.io\n---"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_034__gcp__metricbeat/12-configmap-metricbeat-deployment.yaml",
    "content": "apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: metricbeat-deployment-modules\n  namespace: kube-system\n  labels:\n    k8s-app: metricbeat\ndata:\n  # This module requires `kube-state-metrics` up and running under `kube-system` namespace\n  kubernetes.yml: |-\n    - module: kubernetes\n      metricsets:\n        - state_node\n        - state_deployment\n        - state_replicaset\n        - state_pod\n        - state_container\n        - state_cronjob\n        - state_resourcequota\n        # Uncomment this to get k8s events:\n        #- event\n      period: 10s\n      host: ${NODE_NAME}\n      hosts: [\"kube-state-metrics:8080\"]\n---\n\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: metricbeat-deployment-config\n  namespace: kube-system\n  labels:\n    k8s-app: metricbeat\ndata:\n  metricbeat.yml: |-\n    metricbeat.config.modules:\n      # Mounted `metricbeat-daemonset-modules` configmap:\n      path: ${path.config}/modules.d/*.yml\n      # Reload module configs as they change:\n      reload.enabled: false\n\n    processors:\n      - add_cloud_metadata:\n\n    cloud.id: ${ELASTIC_CLOUD_ID}\n    cloud.auth: ${ELASTIC_CLOUD_AUTH}\n\n    output.elasticsearch:\n      hosts: ['${ELASTICSEARCH_HOST:elasticsearch}:${ELASTICSEARCH_PORT:9200}']\n      username: ${ELASTICSEARCH_USERNAME}\n      password: ${ELASTICSEARCH_PASSWORD}"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_034__gcp__metricbeat/16-configmap-metricbeat-daemonset.yaml",
    "content": "---\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: metricbeat-daemonset-config\n  namespace: kube-system\n  labels:\n    k8s-app: metricbeat\ndata:\n  metricbeat.yml: |-\n    metricbeat.config.modules:\n      # Mounted `metricbeat-daemonset-modules` configmap:\n      path: ${path.config}/modules.d/*.yml\n      # Reload module configs as they change:\n      reload.enabled: false\n\n    # To enable hints based autodiscover uncomment this:\n    #metricbeat.autodiscover:\n    #  providers:\n    #    - type: kubernetes\n    #      node: ${NODE_NAME}\n    #      hints.enabled: true\n\n    processors:\n      - add_cloud_metadata:\n\n    cloud.id: ${ELASTIC_CLOUD_ID}\n    cloud.auth: ${ELASTIC_CLOUD_AUTH}\n\n    output.elasticsearch:\n      hosts: ['${ELASTICSEARCH_HOST:elasticsearch}:${ELASTICSEARCH_PORT:9200}']\n      username: ${ELASTICSEARCH_USERNAME}\n      password: ${ELASTICSEARCH_PASSWORD}\n\n    # =================================== Kibana ===================================\n    # Starting with Beats version 6.0.0, the dashboards are loaded via the Kibana API.\n    # This requires a Kibana endpoint configuration.\n    setup.kibana:\n      # Kibana Host\n      # Scheme and port can be left out and will be set to the default (http and 5601)\n      # In case you specify and additional path, the scheme is required: http://localhost:5601/path\n      # IPv6 addresses should always be defined as: https://[2001:db8::1]:5601\n      host: \"35.223.130.167:5601\"\n      # Optional protocol and basic auth credentials.\n      # protocol: \"https\"\n      # username: \"username\"\n      # password: \"password\"\n    # ================================= Dashboards =================================\n    # These settings control loading the sample dashboards to the Kibana index. Loading\n    # the dashboards are disabled by default and can be enabled either by setting the\n    # options here, or by using the `-setup` CLI flag or the `setup` command.\n    setup.dashboards.enabled: true\n---\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: metricbeat-daemonset-modules\n  namespace: kube-system\n  labels:\n    k8s-app: metricbeat\ndata:\n  system.yml: |-\n    - module: system\n      period: 10s\n      metricsets:\n        - cpu\n        - load\n        - memory\n        - network\n        - process\n        - process_summary\n        #- core\n        #- diskio\n        #- socket\n      processes: ['.*']\n      process.include_top_n:\n        by_cpu: 5      # include top 5 processes by CPU\n        by_memory: 5   # include top 5 processes by memory\n\n    - module: system\n      period: 1m\n      metricsets:\n        - filesystem\n        - fsstat\n      processors:\n      - drop_event.when.regexp:\n          system.filesystem.mount_point: '^/(sys|cgroup|proc|dev|etc|host|lib|snap)($|/)'\n  kubernetes.yml: |-\n    - module: kubernetes\n      metricsets:\n        - node\n        - system\n        - pod\n        - container\n        - volume\n      period: 10s\n      host: ${NODE_NAME}\n      hosts: [\"https://${NODE_NAME}:10250\"]\n      bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token\n      ssl.verification_mode: \"none\"\n      # If there is a CA bundle that contains the issuer of the certificate used in the Kubelet API,\n      # remove ssl.verification_mode entry and use the CA, for instance:\n      #ssl.certificate_authorities:\n        #- /var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt\n    # Currently `proxy` metricset is not supported on Openshift, comment out section\n    - module: kubernetes\n      metricsets:\n        - proxy\n      period: 10s\n      host: ${NODE_NAME}\n      hosts: [\"localhost:10249\"]\n---\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_034__gcp__metricbeat/20-daemonset.yaml",
    "content": "# Deploy a Metricbeat instance per node for node metrics retrieval\napiVersion: apps/v1\nkind: DaemonSet\nmetadata:\n  name: metricbeat\n  namespace: kube-system\n  labels:\n    k8s-app: metricbeat\nspec:\n  selector:\n    matchLabels:\n      k8s-app: metricbeat\n  template:\n    metadata:\n      labels:\n        k8s-app: metricbeat\n    spec:\n      serviceAccountName: metricbeat\n      terminationGracePeriodSeconds: 30\n      hostNetwork: true\n      dnsPolicy: ClusterFirstWithHostNet\n      containers:\n        - name: metricbeat\n          image: docker.elastic.co/beats/metricbeat:7.8.1\n          args: [\n            \"-c\", \"/etc/metricbeat.yml\",\n            \"-e\",\n            \"-system.hostfs=/hostfs\",\n          ]\n          env:\n            - name: ELASTICSEARCH_HOST\n              value: 34.68.27.112\n            - name: ELASTICSEARCH_PORT\n              value: \"9200\"\n            - name: ELASTICSEARCH_USERNAME\n              value: elastic\n            - name: ELASTICSEARCH_PASSWORD\n              value: changeme\n            - name: ELASTIC_CLOUD_ID\n              value:\n            - name: ELASTIC_CLOUD_AUTH\n              value:\n            - name: NODE_NAME\n              valueFrom:\n                fieldRef:\n                  fieldPath: spec.nodeName\n          securityContext:\n            runAsUser: 0\n            # If using Red Hat OpenShift uncomment this:\n            #privileged: true\n          resources:\n            limits:\n              memory: 200Mi\n            requests:\n              cpu: 100m\n              memory: 100Mi\n          volumeMounts:\n            - name: config\n              mountPath: /etc/metricbeat.yml\n              readOnly: true\n              subPath: metricbeat.yml\n            - name: data\n              mountPath: /usr/share/metricbeat/data\n            - name: modules\n              mountPath: /usr/share/metricbeat/modules.d\n              readOnly: true\n            - name: dockersock\n              mountPath: /var/run/docker.sock\n            - name: proc\n              mountPath: /hostfs/proc\n              readOnly: true\n            - name: cgroup\n              mountPath: /hostfs/sys/fs/cgroup\n              readOnly: true\n      volumes:\n        - name: proc\n          hostPath:\n            path: /proc\n        - name: cgroup\n          hostPath:\n            path: /sys/fs/cgroup\n        - name: dockersock\n          hostPath:\n            path: /var/run/docker.sock\n        - name: config\n          configMap:\n            defaultMode: 0600\n            name: metricbeat-daemonset-config\n        - name: modules\n          configMap:\n            defaultMode: 0600\n            name: metricbeat-daemonset-modules\n        - name: data\n          hostPath:\n            path: /var/lib/metricbeat-data\n            type: DirectoryOrCreate\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_034__gcp__metricbeat/24-deployment.yaml",
    "content": "# Deploy singleton instance in the whole cluster for some unique data sources, like kube-state-metrics\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: metricbeat\n  namespace: kube-system\n  labels:\n    k8s-app: metricbeat\nspec:\n  selector:\n    matchLabels:\n      k8s-app: metricbeat\n  template:\n    metadata:\n      labels:\n        k8s-app: metricbeat\n    spec:\n      serviceAccountName: metricbeat\n      hostNetwork: true\n      dnsPolicy: ClusterFirstWithHostNet\n      containers:\n        - name: metricbeat\n          image: docker.elastic.co/beats/metricbeat:7.8.1\n          args: [\n            \"-c\", \"/etc/metricbeat.yml\",\n            \"-e\",\n          ]\n          env:\n            - name: ELASTICSEARCH_HOST\n              value: 34.68.27.112\n            - name: ELASTICSEARCH_PORT\n              value: \"9200\"\n            - name: ELASTICSEARCH_USERNAME\n              value: elastic\n            - name: ELASTICSEARCH_PASSWORD\n              value: changeme\n            - name: ELASTIC_CLOUD_ID\n              value:\n            - name: ELASTIC_CLOUD_AUTH\n              value:\n            - name: NODE_NAME\n              valueFrom:\n                fieldRef:\n                  fieldPath: spec.nodeName\n          securityContext:\n            runAsUser: 0\n          resources:\n            limits:\n              memory: 200Mi\n            requests:\n              cpu: 100m\n              memory: 100Mi\n          volumeMounts:\n            - name: config\n              mountPath: /etc/metricbeat.yml\n              readOnly: true\n              subPath: metricbeat.yml\n            - name: modules\n              mountPath: /usr/share/metricbeat/modules.d\n              readOnly: true\n      volumes:\n        - name: config\n          configMap:\n            defaultMode: 0600\n            name: metricbeat-deployment-config\n        - name: modules\n          configMap:\n            defaultMode: 0600\n            name: metricbeat-deployment-modules\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_034__gcp__metricbeat/ReadMe.md",
    "content": "### To start metricbeat in kubernetes cluster and ship the kubernetes metrics to elastic search which can be viewed by kibana\n\n\n#### Pre-requisites\n\n- elastic-search-docker: \n    - You can install elastic-search docker by visiting [elastic-search-docker](https://github.com/codeaprendiz/ansible-kitchen/tree/master/playbooks/roles/elastic-search-cluster-docker) and \n- kibana-docker: \n    - You can install kibana docker by using this link [kibana-docker](https://github.com/codeaprendiz/ansible-kitchen/tree/master/playbooks/roles/kibana-docker)\n- kube-state-metrics:\n    - You need to install kube-state-metrics as this will be used by metric beat to featch additional metrics. You can \n      do so by using this task-link [task-015-kube-state-metrics](../task-015-kube-state-metrics)\n\n- Docs referred\n\n    - [k8s resources](https://raw.githubusercontent.com/elastic/beats/7.8/deploy/kubernetes/metricbeat-kubernetes.yaml)\n\n    - [metricbeat](https://www.elastic.co/guide/en/beats/metricbeat/current/metricbeat-reference-yml.html)\n\n- Change the IPs of elastic-search `20-daemonset.yaml` and `24-deployment.yaml` with the public IP which you get.\n\n- Change the IP of kibana in `16-configmap-metricbeat-daemonset.yaml` with the public IP of kibana which you get.\n\n- Apply the k8s resources \n```bash\n$ kubectl apply -f .\n\n```\n\n- Metricbeat logs after successful connection to elastic search\n\n```bash\n2020-07-31T10:18:29.404Z        INFO    [publisher_pipeline_output]     pipeline/output.go:144  Connecting to backoff(elasticsearch(http://35.226.68.74:9200))\n2020-07-31T10:18:34.475Z        INFO    [publisher_pipeline_output]     pipeline/output.go:152  Connection to backoff(elasticsearch(http://35.226.68.74:9200)) established\n```\n\n- Now you can check you infrastructure in kibana as showing in the following screenshot (Observability - metrics)\n\n    - Infra VMs\n\n        ![](.images/Infra-vms.png)\n\n    - Infra Pods\n    \n        ![](.images/Infra-Pods.png)\n        \n    - Pod Metrics\n    \n        ![](.images/Pod-metrics.png)\n        \n    - Pre Built Imported Dashboard\n    \n        ![](.images/K8s-dashboard.png)\n        \n    - Pre Built System - Overview Dashboard\n    \n        ![](.images/system-overview.png)\n        \n    - Pre Built Host Overview Dashboard\n    \n        ![](.images/host-overview.png)\n        \n        ![](.images/host-overview-2.png)\n        \n    - Pre Built Containers Dashboard\n    \n        ![](.images/containers-overview.png)\n     \n        \n        \n\n    \n    \n\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_035__gcp__journalbeat/00-service-account.yaml",
    "content": "# Source: metricbeat/templates/01-serviceaccount.yaml\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: journalbeat\n  namespace: kube-system\n---"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_035__gcp__journalbeat/02-cluster-role.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: journalbeat\nrules:\n  - apiGroups:\n      - \"\"\n    resources:\n      - namespaces\n      - pods\n    verbs:\n      - get\n      - watch\n      - list\n  - apiGroups:\n      - extensions\n    resourceNames:\n      - journalbeat\n    resources:\n      - podsecuritypolicies\n    verbs:\n      - use\n---"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_035__gcp__journalbeat/03-cluster-role-binding.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: journalbeat\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: journalbeat\nsubjects:\n  - kind: ServiceAccount\n    name: journalbeat\n    namespace: kube-system"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_035__gcp__journalbeat/04-pod-security-policy.yaml",
    "content": "apiVersion: policy/v1beta1\nkind: PodSecurityPolicy\nmetadata:\n  annotations:\n    seccomp.security.alpha.kubernetes.io/allowedProfileNames: docker/default\n    seccomp.security.alpha.kubernetes.io/defaultProfileName: docker/default\n  name: journalbeat\n  namespace: kube-system\nspec:\n  allowedCapabilities:\n    - KILL\n    - CHOWN\n    - FSETID\n    - FOWNER\n    - SETGID\n    - SETUID\n    - SETFCAP\n    - SETPCAP\n    - AUDIT_WRITE\n    - NET_BIND_SERVICE\n  fsGroup:\n    rule: RunAsAny\n  hostIPC: false\n  hostNetwork: false\n  hostPID: false\n  privileged: false\n  requiredDropCapabilities:\n    - MKNOD\n    - DAC_OVERRIDE\n    - NET_RAW\n    - SYS_CHROOT\n  runAsUser:\n    rule: RunAsAny\n  seLinux:\n    rule: RunAsAny\n  supplementalGroups:\n    rule: RunAsAny\n  volumes:\n    - secret\n    - configMap\n    - hostPath\n---"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_035__gcp__journalbeat/08-configmap.yaml",
    "content": "apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: journalbeat-config\n  namespace: kube-system\n  labels:\n    k8s-app: journalbeat-logging\n    version: v1\ndata:\n  journalbeat.yml: |\n    name: \"${NODENAME}\"\n    journalbeat.inputs:\n    - paths: []\n      seek: cursor\n      cursor_seek_fallback: tail\n\n    processors:\n    - add_kubernetes_metadata:\n        host: \"${NODENAME}\"\n        in_cluster: true\n        default_indexers.enabled: false\n        default_matchers.enabled: false\n        indexers:\n          - container:\n        matchers:\n          - fields:\n              lookup_fields: [\"container.id\"]\n    - decode_json_fields:\n        fields: [\"message\"]\n        process_array: false\n        max_depth: 1\n        target: \"\"\n        overwrite_keys: true\n    - drop_event.when:\n        or:\n        - regexp.kubernetes.pod.name: \"filebeat-.*\"\n        - regexp.kubernetes.pod.name: \"journalbeat-.*\"\n        - regexp.kubernetes.pod.name: \"metrics-server-.*\"\n        - equals.syslog.identifier: \"audit\"\n        - equals.message: \"NetworkManager-dispatcher.service: Succeeded.\"\n        - equals.message: \"Started Network Manager Script Dispatcher Service.\"\n        - regexp.message: '^.*?\\bHTTP\\/1.1\" 202 \\b.*?\\bkube-probe\\b.*?$'\n\n    # Updated to ignore conflict of indices between environments\n    setup.ilm.enabled: false\n    setup.template.enabled: false\n\n    # output.logstash:\n    #  hosts: '${LOGSTASH_HOSTS}'\n    #  compression_level: 7\n\n    output.elasticsearch:\n      hosts: [\"http://34.68.27.112:9200\"]\n\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_035__gcp__journalbeat/12-daemonset.yaml",
    "content": "apiVersion: apps/v1\nkind: DaemonSet\nmetadata:\n  name: journalbeat\n  namespace: kube-system\n  labels:\n    k8s-app: journalbeat-logging\n    version: v1\nspec:\n  selector:\n    matchLabels:\n      k8s-app: journalbeat-logging\n      version: v1\n  template:\n    metadata:\n      labels:\n        k8s-app: journalbeat-logging\n        version: v1\n        app: journalbeat\n        name: journalbeat\n    spec:\n      containers:\n        - args:\n            - -e\n            - -c\n            - /etc/journalbeat.yml\n          command:\n            - journalbeat\n          env:\n            - name: NODENAME\n              valueFrom:\n                fieldRef:\n                  fieldPath: spec.nodeName\n            - name: PODNAME\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.name\n            - name: LOGSTASH_HOSTS\n              value: logstash-host.domain.com\n            - name: LOGSTASH_PORT\n              value: \"5044\"\n            - name: ELASTICSEARCH_USERNAME\n              value: elastic\n            - name: ELASTICSEARCH_PASSWORD\n              value: changeme\n            - name: ENVIRONMENT\n              value: dev\n\n          image: docker.elastic.co/beats/journalbeat:7.8.0\n          imagePullPolicy: Always\n          name: journalbeat\n          resources:\n            limits:\n              cpu: 600m\n              memory: 800Mi\n            requests:\n              cpu: 200m\n              memory: 400Mi\n          volumeMounts:\n            - mountPath: /usr/share/journalbeat/data\n              name: data\n            - mountPath: /var/log/journal\n              name: var-journal\n            - mountPath: /run/log/journal\n              name: run-journal\n            - mountPath: /etc/journalbeat.yml\n              name: config\n              subPath: journalbeat.yml\n            - mountPath: /etc/machine-id\n              name: machine-id\n      hostNetwork: true\n      nodeSelector: {}\n\n### required for SE Linux protected ones\n      securityContext:\n        seLinuxOptions:\n          user: system_u\n          role: system_r\n          type: spc_t\n          level: s0\n\n        fsGroup: 0\n        runAsUser: 0\n      serviceAccountName: journalbeat\n      terminationGracePeriodSeconds: 60\n      tolerations:\n        - effect: NoSchedule\n          key: node-role.kubernetes.io/master\n      volumes:\n        - hostPath:\n            path: /var/log/journal/journalbeat-data\n          name: data\n        - hostPath:\n            path: /var/log/journal\n          name: var-journal\n        - hostPath:\n            path: /run/log/journal\n          name: run-journal\n        - hostPath:\n            path: /etc/machine-id\n          name: machine-id\n        - configMap:\n            items:\n              - key: journalbeat.yml\n                path: journalbeat.yml\n            name: journalbeat-config\n          name: config\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_035__gcp__journalbeat/ReadMe.md",
    "content": "## To deploy journalbeat on k8s to ship logs to elastic-search\n\n#### Pre-requisites\n\n- elastic-search-docker: \n    - You can install elastic-search docker by visiting [elastic-search-docker](https://github.com/codeaprendiz/ansible-kitchen/tree/master/playbooks/roles/elastic-search-cluster-docker) and \n- kibana-docker: \n    - You can install kibana docker by using this link [kibana-docker](https://github.com/codeaprendiz/ansible-kitchen/tree/master/playbooks/roles/kibana-docker)\n\n- Docs referred\n\n    - [journalbeat-reference.yaml](https://www.elastic.co/guide/en/beats/journalbeat/master/journalbeat-reference-yml.html)\n\n    - [gits](https://gist.github.com/kvaps/b08c77f297c5cab21c237fd821310653)\n    \n    - [journalbeat](https://www.elastic.co/guide/en/beats/journalbeat/master/index.html)\n    \n  \n- Change the IP of elastic-search in `08-configmap.yaml` (or `12-daemonset.yaml`) where you have set with the public IP you get.\n    \n- Apply the k8s resources by following command\n\n```bash\n$ kubectl apply -f .\n```\n\n- You can check the logs of journal-beat pods \n```bash\n\"pid\": 1, \"ppid\": 0, \"seccomp\": {\"mode\":\"filter\",\"no_new_privs\":true}, \"start_time\": \"2020-08-07T12:00:56.240Z\"}}}\n2020-08-07T12:00:57.098Z        INFO    instance/beat.go:310    Setup Beat: journalbeat; Version: 7.8.0\n2020-08-07T12:00:57.098Z        INFO    eslegclient/connection.go:97    elasticsearch url: http://34.68.27.112:9200\n2020-08-07T12:00:57.099Z        INFO    [publisher]     pipeline/module.go:113  Beat name: gke-cluster-1-default-pool-2e1137d2-xprr\n2020-08-07T12:00:57.099Z        WARN    [cfgwarn]       beater/journalbeat.go:53        EXPERIMENTAL: Journalbeat is experimental.\n.\n2020-08-07T12:00:59.242Z        INFO    [publisher_pipeline_output]     pipeline/output.go:152  Connection to backoff(elasticsearch(http://34.68.27.112:9200)) established\n2020-08-07T12:00:59.340Z        INFO    [input] input/input.go:141      journalbeat successfully published 2 events     {\"id\": \"8c7ad622-1fe3-4679-93eb-5747cb51062f\"}\n2020-08-07T12:01:27.109Z        INFO    [monitoring]    log/log.go:145  Non-zero metrics in the last 30s        {\"monitoring\": {\"metrics\": {\"beat\":{\"cpu\":{\"system\":{\"ticks\":40,\"time\":{\"ms\":48}},\"total\":{\"ticks\":120,\"time\":{\"ms\":132},\"value\":120},\"user\":{\"ticks\":80,\"time\":{\"ms\":84}}},\"handles\":{\"limit\":{\"hard\":1048576,\"soft\":1048576},\"open\":12},\"info\":{\"ephemeral_id\":\"c86a8e34-49c0-4b36-9748-3451c8133a8a\",\"uptime\":{\"ms\":30037}},\"memstats\":{\"gc_next\":9621216,\"memory_alloc\":8296424,\"memory_total\":14484160,\"rss\":51892224},\"runtime\":{\"goroutines\":30}},\"journalbeat\":{\"journals\":{\"journal_0\":{\"path\":\"LOCAL_SYSTEM_JOURNAL\",\"size_in_bytes\":8392704}},\"libbeat\":{\"output\":{\"events\":{\"acked\":2,\"batches\":1,\"total\":2},\"type\":\"elasticsearch\"},\"pipeline\":{\"clients\":1,\"events\":{\"published\":2,\"retry\":2,\"total\":2},\"queue\":{\"acked\":2}}},\"system\":{\"cpu\":{\"cores\":2},\"load\":{\"1\":0.17,\"15\":0.28,\"5\":0.45,\"norm\":{\"1\":0.085,\"15\":0.14,\"5\":0.225}}}}}}}\n2020-08-07T12:01:30.750Z        INFO    [input] input/input.go:141      journalbeat successfully published 1 events     {\"id\": \"8c7ad622-1fe3-4679-93eb-5747cb51062f\"}\n.\n```\n\n- Now create one `index-patters` in kibana console\n\n![](.images/creating-index-pattern.png)\n\n- Now navigate to `Discover` on the console and you will be able to see the logs\n\n![](.images/logs-dashboard.png)"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_036__gcp_vm__cert_manager_lets_encypt_http_validation/ReadMe.md",
    "content": "# Let's Encrypt And Cert-Manager\n\n## Create Cluster\n\n```bash\n╰─ kind create cluster\n╰─ kubectl get nodes\nNAME                 STATUS   ROLES           AGE    VERSION\nkind-control-plane   Ready    control-plane   117s   v1.25.3\n```\n\n## Cert-Manager Releases\n\n[cert-manager/releases/tag/v1.10.0](https://github.com/cert-manager/cert-manager/releases/tag/v1.10.0)\n\n```bash\n\n# Download the yaml\n╰─ wget https://github.com/cert-manager/cert-manager/releases/download/v1.10.0/cert-manager.yaml\n╰─ ls\nReadMe.md         cert-manager.yaml\n╰─ cat cert-manager.yaml| wc -l                                          \n    5518\n```\n\n- Deploy cert-manager\n\n```bash\n╰─ kubectl apply -f cert-manager.yaml\n\n\n# Did it work or what ?\n╰─ kubectl get all -n cert-manager\nNAME                                          READY   STATUS    RESTARTS   AGE\npod/cert-manager-6dc4964c9-jd6mq              1/1     Running   0          7m57s\npod/cert-manager-cainjector-69d4647c6-mhvvf   1/1     Running   0          7m57s\npod/cert-manager-webhook-75f77865c8-52jk4     1/1     Running   0          7m57s\n\nNAME                           TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE\nservice/cert-manager           ClusterIP   10.96.236.95    <none>        9402/TCP   7m57s\nservice/cert-manager-webhook   ClusterIP   10.96.250.149   <none>        443/TCP    7m57s\n\nNAME                                      READY   UP-TO-DATE   AVAILABLE   AGE\ndeployment.apps/cert-manager              1/1     1            1           7m57s\ndeployment.apps/cert-manager-cainjector   1/1     1            1           7m57s\ndeployment.apps/cert-manager-webhook      1/1     1            1           7m57s\n\nNAME                                                DESIRED   CURRENT   READY   AGE\nreplicaset.apps/cert-manager-6dc4964c9              1         1         1       7m57s\nreplicaset.apps/cert-manager-cainjector-69d4647c6   1         1         1       7m57s\nreplicaset.apps/cert-manager-webhook-75f77865c8     1         1         1       7m57s\n\n\n# Okay it did\n```\n\n## Let's deploy ingress-controller\n\nYou can download the ingress controller from [ingress-nginx/releases/tag/controller-v1.4.0](https://github.com/kubernetes/ingress-nginx/releases/tag/controller-v1.4.0)\n\n```bash\n# Deploy from downloaded dir\n╰─ ls \nReadMe.md                           cert-manager.yaml                   ingress-nginx-controller-v1.4.0     ingress-nginx-controller-v1.4.0.zip\n\n╰─ find . -name deploy.yaml | grep cloud\n./ingress-nginx-controller-v1.4.0/deploy/static/provider/cloud/deploy.yaml\n\n# The same file is also available as raw content https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.4.0/deploy/static/provider/cloud/deploy.yaml\n╰─ kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.4.0/deploy/static/provider/cloud/deploy.yaml                 \n\n\n## See if its working\n╰─ kubectl get all -n ingress-nginx\nNAME                                            READY   STATUS      RESTARTS   AGE\npod/ingress-nginx-admission-create-7blsw        0/1     Completed   0          2m18s\npod/ingress-nginx-admission-patch-58bm7         0/1     Completed   0          2m18s\npod/ingress-nginx-controller-7844b9db77-kptln   1/1     Running     0          2m18s\n\nNAME                                         TYPE           CLUSTER-IP     EXTERNAL-IP   PORT(S)                      AGE\nservice/ingress-nginx-controller             LoadBalancer   10.96.54.164   <pending>     80:32367/TCP,443:31957/TCP   2m18s\nservice/ingress-nginx-controller-admission   ClusterIP      10.96.13.5     <none>        443/TCP                      2m18s\n\nNAME                                       READY   UP-TO-DATE   AVAILABLE   AGE\ndeployment.apps/ingress-nginx-controller   1/1     1            1           2m18s\n\nNAME                                                  DESIRED   CURRENT   READY   AGE\nreplicaset.apps/ingress-nginx-controller-7844b9db77   1         1         1       2m18s\n\nNAME                                       COMPLETIONS   DURATION   AGE\njob.batch/ingress-nginx-admission-create   1/1           18s        2m18s\njob.batch/ingress-nginx-admission-patch    1/1           19s        2m18s\n```\n\n- The EXTERNAL IP is not binded as we are working locally, so let's bind using port-forward in different terminals\n\n```bash\n# Terminal 2\n╰─ nohup kubectl -n ingress-nginx --address 0.0.0.0 port-forward svc/ingress-nginx-controller 443 > 443.log &\nForwarding from 0.0.0.0:443 -> 443\n\n# Terminal 3\n╰─ nohup kubectl -n ingress-nginx --address 0.0.0.0 port-forward svc/ingress-nginx-controller 80 > 80.log &\nForwarding from 0.0.0.0:80 -> 80\n\n# Terminal 1\n╰─ curl http://localhost -I\nHTTP/1.1 404 Not Found\n\n```\n\n- If you can login to your home route, you can set up a port-forwarding rule to your machine \n\n```bash\n╰─ curl http://5.194.32.235/ -I\nHTTP/1.1 404 Not Found\n\n# Now using AWS Route53, you can map the public IP with a domain name that you own\n╰─ curl http://testcertmanager.mydomain.com -I                     \nHTTP/1.1 404 Not Found\n\n```\n\n## Let's add a cluster-isser.yaml\n\n[cert-manager.io/docs/configuration/acme/](https://cert-manager.io/docs/configuration/acme/)\n\n\n\n- Apply the changes\n\n```bash\n╰─ kubectl apply -f cluster-issuer.yaml                                                                                                  \nclusterissuer.cert-manager.io/letsencrypt-staging created\n\n╰─ kubectl get ClusterIssuer              \nNAME                  READY   AGE\nletsencrypt-staging   False   53s\n\n# Make sure you change with a valid email address\n╰─ cat cluster-issuer.yaml| grep email\n    # You must replace this email address with your own.\n    email: kedesom362@corylan.com\n\n```\n\n- Let's deploy a sample application like [traefik/whoami](https://doc.traefik.io/traefik/getting-started/quick-start-with-kubernetes/)\n\n```bash\n╰─ kubectl apply -f dep-whoami.yaml    \ndeployment.apps/whoami created\n\n╰─ kubectl get pods                \nNAME                      READY   STATUS    RESTARTS   AGE\nwhoami-5dfdf459f4-4nzcd   1/1     Running   0          64s\n\n╰─ kubectl get deployment\nNAME     READY   UP-TO-DATE   AVAILABLE   AGE\nwhoami   1/1     1            1           3m7s\n\n```\n\n- Let's expose the dep using a svc\n\n```bash\n╰─ kubectl expose deployment whoami --port=80 --target-port=80 --type=LoadBalancer\nservice/whoami exposed\n\n╰─ kubectl get svc                                               \nNAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE\nkubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   3h17m\nwhoami       ClusterIP   10.96.80.3   <none>        80/TCP    11s\n\n# Terminal n\n╰─ kubectl port-forward --namespace default pod/whoami-5dfdf459f4-4nzcd 8081:80\nForwarding from 127.0.0.1:8081 -> 80\n\n# Terminal 1\n╰─ curl http://localhost:8081 -I                                       \nHTTP/1.1 200 OK\n```\n\n- Create Ingress\n\n[configuration/ingress-resources/basic-configuration](https://docs.nginx.com/nginx-ingress-controller/configuration/ingress-resources/basic-configuration/)\n\n- Without `tls` section enabled\n\n```bash\n╰─ cat ingress.yaml | grep \"#\"\n# https://docs.nginx.com/nginx-ingress-controller/configuration/ingress-resources/basic-configuration/\n#  tls:\n#    - hosts:\n#        - testcertmanager.domainname.com\n#      secretName: tls-secret\n\n\n╰─ kubectl apply -f ingress.yaml\ningress.networking.k8s.io/whoami-ingress configured\n\n╰─ curl http://testcertmanager.domainname.com -I                      \nHTTP/1.1 200 OK\n\n╰─ curl https://testcertmanager.domainname.com -I\ncurl: (60) SSL certificate problem: unable to get local issuer certificate\n\n```\n\n## Let's create a certificate.yaml\n\n[cert-manager.io/docs/concepts/certificate](https://cert-manager.io/docs/concepts/certificate/)\n\n\n\n```bash\n$ kubectl apply -f certificate.yaml \n```\n\n## Seeing what actually happens\n\n- Certificate Initial State\n```bash\n# kubectl get certificate\nNAME       READY   SECRET       AGE\nacme-crt   False   tls-secret   4s\nroot@cert-manager-k8s:/home/testgcply01# \n```\n\n\n- New pods are spun up\n\n```bash\n# kubectl get pods\nNAME                        READY   STATUS    RESTARTS   AGE\ncm-acme-http-solver-v42r4   1/1     Running   0          10s\nwhoami-5dfdf459f4-f29lk     1/1     Running   0          4m45s\n```\n\n- New ingress is created automatically\n\n```bash\n# kubectl get ingress\nNAME                        CLASS    HOSTS                             ADDRESS   PORTS     AGE\ncm-acme-http-solver-kj4j9   <none>   testcertmanager.ankitrathi.info             80        13s\nwhoami-ingress              <none>   testcertmanager.ankitrathi.info             80, 443   3m25s\n\n# kubectl describe ingress cm-acme-http-solver-kj4j9\nName:             cm-acme-http-solver-kj4j9\nLabels:           acme.cert-manager.io/http-domain=3409775745\n                  acme.cert-manager.io/http-token=1372262173\n                  acme.cert-manager.io/http01-solver=true\nNamespace:        default\nAddress:          \nIngress Class:    <none>\nDefault backend:  <default>\nRules:\n  Host                             Path  Backends\n  ----                             ----  --------\n  testcertmanager.ankitrathi.info  \n                                   /.well-known/acme-challenge/4fy9_vs7wbjaonBUWeLtPmQ-vJ9Tzm6KbBV-ynffGIc   cm-acme-http-solver-crkb7:8089 (10.244.0.12:8089)\nAnnotations:                       kubernetes.io/ingress.class: nginx\n                                   nginx.ingress.kubernetes.io/whitelist-source-range: 0.0.0.0/0,::/0\nEvents:\n  Type    Reason  Age   From                      Message\n  ----    ------  ----  ----                      -------\n  Normal  Sync    21s   nginx-ingress-controller  Scheduled for sync\n```\n\n- Certificate is created\n\n```bash\n# kubectl get certificate\nNAME       READY   SECRET       AGE\nacme-crt   True    tls-secret   37s\n```\n\n- Logs of cert-manager\n\n```bash\n# kubectl logs -f cert-manager-6dc4964c9-z25w8 -n cert-manager\nI1106 09:19:02.642755       1 start.go:75] cert-manager \"msg\"=\"starting controller\" \"git-commit\"=\"da3265115bfd8be5780801cc6105fa857ef71965\" \"version\"=\"v1.10.0\"\n.\n# kubectl logs -f cert-manager-6dc4964c9-z25w8 -n cert-manager\nI1106 09:19:02.642755       1 start.go:75] cert-manager \"msg\"=\"starting controller\" \"git-commit\"=\"da3265115bfd8be5780801cc6105fa857ef71965\" \"version\"=\"v1.10.0\"\n.\nE1106 09:29:15.914530       1 sync.go:190] cert-manager/challenges \"msg\"=\"propagation check failed\" \"error\"=\"wrong status code '404', expected '200'\" \"dnsName\"=\"testcertmanager.ankitrathi.info\" \"resource_kind\"=\"Challenge\" \"resource_name\"=\"acme-crt-kfcpn-1234527781-2621229076\" \"resource_namespace\"=\"default\" \"resource_version\"=\"v1\" \"type\"=\"HTTP-01\"\n.\nI1106 09:29:39.009660       1 acme.go:233] cert-manager/certificaterequests-issuer-acme/sign \"msg\"=\"certificate issued\" \"related_resource_kind\"=\"Order\" \"related_resource_name\"=\"acme-crt-kfcpn-1234527781\" \"related_resource_namespace\"=\"default\" \"related_resource_version\"=\"v1\" \"resource_kind\"=\"CertificateRequest\" \"resource_name\"=\"acme-crt-kfcpn\" \"resource_namespace\"=\"default\" \"resource_version\"=\"v1\"\nI1106 09:29:39.010105       1 conditions.go:252] Found status change for CertificateRequest \"acme-crt-kfcpn\" condition \"Ready\": \"False\" -> \"True\"; setting lastTransitionTime to 2022-11-06 09:29:39.010090609 +0000 UTC m=+636.445050370\n.\n```\n\n- Logs of nginx ingress\n\n```bash\n# \nroot@cert-manager-k8s:/home/testgcply01# kubectl logs -f ingress-nginx-controller-7844b9db77-s4qtq -n ingress-nginx | grep 200\n127.0.0.1 - - [06/Nov/2022:09:29:25 +0000] \"GET /.well-known/acme-challenge/4fy9_vs7wbjaonBUWeLtPmQ-vJ9Tzm6KbBV-ynffGIc HTTP/1.1\" 200 87 \"-\" \"cert-manager-challenges/v1.10.0 (linux/amd64) cert-manager/da3265115bfd8be5780801cc6105fa857ef71965\" 282 0.001 [default-cm-acme-http-solver-crkb7-8089] [] 10.244.0.12:8089 87 0.000 200 18c602063aa066c5027887d945e0249c\n127.0.0.1 - - [06/Nov/2022:09:29:27 +0000] \"GET /.well-known/acme-challenge/4fy9_vs7wbjaonBUWeLtPmQ-vJ9Tzm6KbBV-ynffGIc HTTP/1.1\" 200 87 \"-\" \"cert-manager-challenges/v1.10.0 (linux/amd64) cert-manager/da3265115bfd8be5780801cc6105fa857ef71965\" 282 0.001 [default-cm-acme-http-solver-crkb7-8089] [] 10.244.0.12:8089 87 0.000 200 f7d684b918a576ffa8cd14c3b83497a5\n127.0.0.1 - - [06/Nov/2022:09:29:29 +0000] \"GET /.well-known/acme-challenge/4fy9_vs7wbjaonBUWeLtPmQ-vJ9Tzm6KbBV-ynffGIc HTTP/1.1\" 200 87 \"-\" \"cert-manager-challenges/v1.10.0 (linux/amd64) cert-manager/da3265115bfd8be5780801cc6105fa857ef71965\" 282 0.002 [default-cm-acme-http-solver-crkb7-8089] [] 10.244.0.12:8089 87 0.000 200 a0bd92fff72bcecc12dfa11c8910c040\n127.0.0.1 - - [06/Nov/2022:09:29:31 +0000] \"GET /.well-known/acme-challenge/4fy9_vs7wbjaonBUWeLtPmQ-vJ9Tzm6KbBV-ynffGIc HTTP/1.1\" 200 87 \"-\" \"cert-manager-challenges/v1.10.0 (linux/amd64) cert-manager/da3265115bfd8be5780801cc6105fa857ef71965\" 282 0.001 [default-cm-acme-http-solver-crkb7-8089] [] 10.244.0.12:8089 87 0.004 200 af3c2725eff812ff4b44a2f66b288965\n127.0.0.1 - - [06/Nov/2022:09:29:34 +0000] \"GET /.well-known/acme-challenge/4fy9_vs7wbjaonBUWeLtPmQ-vJ9Tzm6KbBV-ynffGIc HTTP/1.1\" 200 87 \"-\" \"cert-manager-challenges/v1.10.0 (linux/amd64) cert-manager/da3265115bfd8be5780801cc6105fa857ef71965\" 282 0.001 [default-cm-acme-http-solver-crkb7-8089] [] 10.244.0.12:8089 87 0.000 200 f7ec6504a2b63222ea9d14f7e553aa13\n127.0.0.1 - - [06/Nov/2022:09:29:36 +0000] \"GET /.well-known/acme-challenge/4fy9_vs7wbjaonBUWeLtPmQ-vJ9Tzm6KbBV-ynffGIc HTTP/1.1\" 200 87 \"-\" \"Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)\" 283 0.001 [default-cm-acme-http-solver-crkb7-8089] [] 10.244.0.12:8089 87 0.000 200 c4a44688d1f388557e62142c9a696dc3\n127.0.0.1 - - [06/Nov/2022:09:29:36 +0000] \"GET /.well-known/acme-challenge/4fy9_vs7wbjaonBUWeLtPmQ-vJ9Tzm6KbBV-ynffGIc HTTP/1.1\" 200 87 \"-\" \"Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)\" 283 0.001 [default-cm-acme-http-solver-crkb7-8089] [] 10.244.0.12:8089 87 0.000 200 73fa114eff269a592148414a4aa51563\n127.0.0.1 - - [06/Nov/2022:09:29:36 +0000] \"GET /.well-known/acme-challenge/4fy9_vs7wbjaonBUWeLtPmQ-vJ9Tzm6KbBV-ynffGIc HTTP/1.1\" 200 87 \"-\" \"Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)\" 283 0.001 [default-cm-acme-http-solver-crkb7-8089] [] 10.244.0.12:8089 87 0.000 200 2ca56c91ba45fd54d7a64126c110c257\n127.0.0.1 - - [06/Nov/2022:09:29:59 +0000] \"GET /test HTTP/1.1\" 200 814 \"-\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36\" 468 0.002 [default-whoami-80] [] 10.244.0.11:80 814 0.000 200 3c125fa5c91bfaaea33f903efb834305\n127.0.0.1 - - [06/Nov/2022:09:30:05 +0000] \"GET /test HTTP/2.0\" 200 1045 \"-\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36\" 460 0.002 [default-whoami-80] [] 10.244.0.11:80 1045 0.000 200 79d26974d442bb5c89db7ef4c19aab4b\n```\n\n\n## Let's test the certificate\n\n\n```bash\n# curl -v https://testcertmanager.ankitrathi.info/test\n*   Trying 34.66.238.103:443...\n* Connected to testcertmanager.ankitrathi.info (34.66.238.103) port 443 (#0)\n* ALPN, offering h2\n* ALPN, offering http/1.1\n*  CAfile: /etc/ssl/certs/ca-certificates.crt\n*  CApath: /etc/ssl/certs\n* TLSv1.0 (OUT), TLS header, Certificate Status (22):\n* TLSv1.3 (OUT), TLS handshake, Client hello (1):\n* TLSv1.2 (IN), TLS header, Certificate Status (22):\n* TLSv1.3 (IN), TLS handshake, Server hello (2):\n* TLSv1.2 (IN), TLS header, Finished (20):\n* TLSv1.2 (IN), TLS header, Supplemental data (23):\n* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):\n* TLSv1.2 (IN), TLS header, Supplemental data (23):\n* TLSv1.3 (IN), TLS handshake, Certificate (11):\n* TLSv1.2 (IN), TLS header, Supplemental data (23):\n* TLSv1.3 (IN), TLS handshake, CERT verify (15):\n* TLSv1.2 (IN), TLS header, Supplemental data (23):\n* TLSv1.3 (IN), TLS handshake, Finished (20):\n* TLSv1.2 (OUT), TLS header, Finished (20):\n* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):\n* TLSv1.2 (OUT), TLS header, Supplemental data (23):\n* TLSv1.3 (OUT), TLS handshake, Finished (20):\n* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384\n* ALPN, server accepted to use h2\n* Server certificate:\n*  subject: CN=testcertmanager.ankitrathi.info\n*  start date: Nov  6 08:29:37 2022 GMT\n*  expire date: Feb  4 08:29:36 2023 GMT\n*  subjectAltName: host \"testcertmanager.ankitrathi.info\" matched cert's \"testcertmanager.ankitrathi.info\"\n*  issuer: C=US; O=Let's Encrypt; CN=R3\n*  SSL certificate verify ok.\n* Using HTTP2, server supports multiplexing\n* Connection state changed (HTTP/2 confirmed)\n* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0\n* TLSv1.2 (OUT), TLS header, Supplemental data (23):\n* TLSv1.2 (OUT), TLS header, Supplemental data (23):\n* TLSv1.2 (OUT), TLS header, Supplemental data (23):\n* Using Stream ID: 1 (easy handle 0x55890a699550)\n* TLSv1.2 (OUT), TLS header, Supplemental data (23):\n> GET /test HTTP/2\n> Host: testcertmanager.ankitrathi.info\n> user-agent: curl/7.81.0\n> accept: */*\n> \n* TLSv1.2 (IN), TLS header, Supplemental data (23):\n* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):\n* TLSv1.2 (IN), TLS header, Supplemental data (23):\n* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):\n* old SSL session ID is stale, removing\n* TLSv1.2 (IN), TLS header, Supplemental data (23):\n* Connection state changed (MAX_CONCURRENT_STREAMS == 128)!\n* TLSv1.2 (OUT), TLS header, Supplemental data (23):\n* TLSv1.2 (IN), TLS header, Supplemental data (23):\n< HTTP/2 200 \n< date: Sun, 06 Nov 2022 09:55:02 GMT\n< content-type: text/plain; charset=utf-8\n< content-length: 473\n< strict-transport-security: max-age=15724800; includeSubDomains\n< \nHostname: whoami-5dfdf459f4-f29lk\nIP: 127.0.0.1\nIP: ::1\nIP: 10.244.0.11\nIP: fe80::105e:45ff:fe3d:e2bf\nRemoteAddr: 10.244.0.10:50496\nGET /test HTTP/1.1\nHost: testcertmanager.ankitrathi.info\nUser-Agent: curl/7.81.0\nAccept: */*\nX-Forwarded-For: 127.0.0.1\nX-Forwarded-Host: testcertmanager.ankitrathi.info\nX-Forwarded-Port: 443\nX-Forwarded-Proto: https\nX-Forwarded-Scheme: https\nX-Real-Ip: 127.0.0.1\nX-Request-Id: 3a31fae37d9ba88dc4afdd07319141f3\nX-Scheme: https\n\n* TLSv1.2 (IN), TLS header, Supplemental data (23):\n* Connection #0 to host testcertmanager.ankitrathi.info left intact\n```\n\n\n- From the browser\n\n![successfull-lets-encrypt-http.png](.images/successfull-lets-encrypt-http.png)"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_036__gcp_vm__cert_manager_lets_encypt_http_validation/cert-manager.yaml",
    "content": "# Copyright 2022 The cert-manager Authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\napiVersion: v1\nkind: Namespace\nmetadata:\n  name: cert-manager\n---\n# Source: cert-manager/templates/crds.yaml\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  name: clusterissuers.cert-manager.io\n  labels:\n    app: 'cert-manager'\n    app.kubernetes.io/name: 'cert-manager'\n    app.kubernetes.io/instance: 'cert-manager'\n    # Generated labels\n    app.kubernetes.io/version: \"v1.10.0\"\nspec:\n  group: cert-manager.io\n  names:\n    kind: ClusterIssuer\n    listKind: ClusterIssuerList\n    plural: clusterissuers\n    singular: clusterissuer\n    categories:\n      - cert-manager\n  scope: Cluster\n  versions:\n    - name: v1\n      subresources:\n        status: {}\n      additionalPrinterColumns:\n        - jsonPath: .status.conditions[?(@.type==\"Ready\")].status\n          name: Ready\n          type: string\n        - jsonPath: .status.conditions[?(@.type==\"Ready\")].message\n          name: Status\n          priority: 1\n          type: string\n        - jsonPath: .metadata.creationTimestamp\n          description: CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n          name: Age\n          type: date\n      schema:\n        openAPIV3Schema:\n          description: A ClusterIssuer represents a certificate issuing authority which can be referenced as part of `issuerRef` fields. It is similar to an Issuer, however it is cluster-scoped and therefore can be referenced by resources that exist in *any* namespace, not just the same namespace as the referent.\n          type: object\n          required:\n            - spec\n          properties:\n            apiVersion:\n              description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n              type: string\n            kind:\n              description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n              type: string\n            metadata:\n              type: object\n            spec:\n              description: Desired state of the ClusterIssuer resource.\n              type: object\n              properties:\n                acme:\n                  description: ACME configures this issuer to communicate with a RFC8555 (ACME) server to obtain signed x509 certificates.\n                  type: object\n                  required:\n                    - privateKeySecretRef\n                    - server\n                  properties:\n                    disableAccountKeyGeneration:\n                      description: Enables or disables generating a new ACME account key. If true, the Issuer resource will *not* request a new account but will expect the account key to be supplied via an existing secret. If false, the cert-manager system will generate a new ACME account key for the Issuer. Defaults to false.\n                      type: boolean\n                    email:\n                      description: Email is the email address to be associated with the ACME account. This field is optional, but it is strongly recommended to be set. It will be used to contact you in case of issues with your account or certificates, including expiry notification emails. This field may be updated after the account is initially registered.\n                      type: string\n                    enableDurationFeature:\n                      description: Enables requesting a Not After date on certificates that matches the duration of the certificate. This is not supported by all ACME servers like Let's Encrypt. If set to true when the ACME server does not support it it will create an error on the Order. Defaults to false.\n                      type: boolean\n                    externalAccountBinding:\n                      description: ExternalAccountBinding is a reference to a CA external account of the ACME server. If set, upon registration cert-manager will attempt to associate the given external account credentials with the registered ACME account.\n                      type: object\n                      required:\n                        - keyID\n                        - keySecretRef\n                      properties:\n                        keyAlgorithm:\n                          description: 'Deprecated: keyAlgorithm field exists for historical compatibility reasons and should not be used. The algorithm is now hardcoded to HS256 in golang/x/crypto/acme.'\n                          type: string\n                          enum:\n                            - HS256\n                            - HS384\n                            - HS512\n                        keyID:\n                          description: keyID is the ID of the CA key that the External Account is bound to.\n                          type: string\n                        keySecretRef:\n                          description: keySecretRef is a Secret Key Selector referencing a data item in a Kubernetes Secret which holds the symmetric MAC key of the External Account Binding. The `key` is the index string that is paired with the key data in the Secret and should not be confused with the key data itself, or indeed with the External Account Binding keyID above. The secret key stored in the Secret **must** be un-padded, base64 URL encoded data.\n                          type: object\n                          required:\n                            - name\n                          properties:\n                            key:\n                              description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                              type: string\n                            name:\n                              description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                              type: string\n                    preferredChain:\n                      description: 'PreferredChain is the chain to use if the ACME server outputs multiple. PreferredChain is no guarantee that this one gets delivered by the ACME endpoint. For example, for Let''s Encrypt''s DST crosssign you would use: \"DST Root CA X3\" or \"ISRG Root X1\" for the newer Let''s Encrypt root CA. This value picks the first certificate bundle in the ACME alternative chains that has a certificate with this value as its issuer''s CN'\n                      type: string\n                      maxLength: 64\n                    privateKeySecretRef:\n                      description: PrivateKey is the name of a Kubernetes Secret resource that will be used to store the automatically generated ACME account private key. Optionally, a `key` may be specified to select a specific entry within the named Secret resource. If `key` is not specified, a default of `tls.key` will be used.\n                      type: object\n                      required:\n                        - name\n                      properties:\n                        key:\n                          description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                          type: string\n                        name:\n                          description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                          type: string\n                    server:\n                      description: 'Server is the URL used to access the ACME server''s ''directory'' endpoint. For example, for Let''s Encrypt''s staging endpoint, you would use: \"https://acme-staging-v02.api.letsencrypt.org/directory\". Only ACME v2 endpoints (i.e. RFC 8555) are supported.'\n                      type: string\n                    skipTLSVerify:\n                      description: Enables or disables validation of the ACME server TLS certificate. If true, requests to the ACME server will not have their TLS certificate validated (i.e. insecure connections will be allowed). Only enable this option in development environments. The cert-manager system installed roots will be used to verify connections to the ACME server if this is false. Defaults to false.\n                      type: boolean\n                    solvers:\n                      description: 'Solvers is a list of challenge solvers that will be used to solve ACME challenges for the matching domains. Solver configurations must be provided in order to obtain certificates from an ACME server. For more information, see: https://cert-manager.io/docs/configuration/acme/'\n                      type: array\n                      items:\n                        description: An ACMEChallengeSolver describes how to solve ACME challenges for the issuer it is part of. A selector may be provided to use different solving strategies for different DNS names. Only one of HTTP01 or DNS01 must be provided.\n                        type: object\n                        properties:\n                          dns01:\n                            description: Configures cert-manager to attempt to complete authorizations by performing the DNS01 challenge flow.\n                            type: object\n                            properties:\n                              acmeDNS:\n                                description: Use the 'ACME DNS' (https://github.com/joohoi/acme-dns) API to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - accountSecretRef\n                                  - host\n                                properties:\n                                  accountSecretRef:\n                                    description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  host:\n                                    type: string\n                              akamai:\n                                description: Use the Akamai DNS zone management API to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - accessTokenSecretRef\n                                  - clientSecretSecretRef\n                                  - clientTokenSecretRef\n                                  - serviceConsumerDomain\n                                properties:\n                                  accessTokenSecretRef:\n                                    description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  clientSecretSecretRef:\n                                    description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  clientTokenSecretRef:\n                                    description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  serviceConsumerDomain:\n                                    type: string\n                              azureDNS:\n                                description: Use the Microsoft Azure DNS API to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - resourceGroupName\n                                  - subscriptionID\n                                properties:\n                                  clientID:\n                                    description: if both this and ClientSecret are left unset MSI will be used\n                                    type: string\n                                  clientSecretSecretRef:\n                                    description: if both this and ClientID are left unset MSI will be used\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  environment:\n                                    description: name of the Azure environment (default AzurePublicCloud)\n                                    type: string\n                                    enum:\n                                      - AzurePublicCloud\n                                      - AzureChinaCloud\n                                      - AzureGermanCloud\n                                      - AzureUSGovernmentCloud\n                                  hostedZoneName:\n                                    description: name of the DNS zone that should be used\n                                    type: string\n                                  managedIdentity:\n                                    description: managed identity configuration, can not be used at the same time as clientID, clientSecretSecretRef or tenantID\n                                    type: object\n                                    properties:\n                                      clientID:\n                                        description: client ID of the managed identity, can not be used at the same time as resourceID\n                                        type: string\n                                      resourceID:\n                                        description: resource ID of the managed identity, can not be used at the same time as clientID\n                                        type: string\n                                  resourceGroupName:\n                                    description: resource group the DNS zone is located in\n                                    type: string\n                                  subscriptionID:\n                                    description: ID of the Azure subscription\n                                    type: string\n                                  tenantID:\n                                    description: when specifying ClientID and ClientSecret then this field is also needed\n                                    type: string\n                              cloudDNS:\n                                description: Use the Google Cloud DNS API to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - project\n                                properties:\n                                  hostedZoneName:\n                                    description: HostedZoneName is an optional field that tells cert-manager in which Cloud DNS zone the challenge record has to be created. If left empty cert-manager will automatically choose a zone.\n                                    type: string\n                                  project:\n                                    type: string\n                                  serviceAccountSecretRef:\n                                    description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                              cloudflare:\n                                description: Use the Cloudflare API to manage DNS01 challenge records.\n                                type: object\n                                properties:\n                                  apiKeySecretRef:\n                                    description: 'API key to use to authenticate with Cloudflare. Note: using an API token to authenticate is now the recommended method as it allows greater control of permissions.'\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  apiTokenSecretRef:\n                                    description: API token used to authenticate with Cloudflare.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  email:\n                                    description: Email of the account, only required when using API key based authentication.\n                                    type: string\n                              cnameStrategy:\n                                description: CNAMEStrategy configures how the DNS01 provider should handle CNAME records when found in DNS zones.\n                                type: string\n                                enum:\n                                  - None\n                                  - Follow\n                              digitalocean:\n                                description: Use the DigitalOcean DNS API to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - tokenSecretRef\n                                properties:\n                                  tokenSecretRef:\n                                    description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                              rfc2136:\n                                description: Use RFC2136 (\"Dynamic Updates in the Domain Name System\") (https://datatracker.ietf.org/doc/rfc2136/) to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - nameserver\n                                properties:\n                                  nameserver:\n                                    description: The IP address or hostname of an authoritative DNS server supporting RFC2136 in the form host:port. If the host is an IPv6 address it must be enclosed in square brackets (e.g [2001:db8::1]) ; port is optional. This field is required.\n                                    type: string\n                                  tsigAlgorithm:\n                                    description: 'The TSIG Algorithm configured in the DNS supporting RFC2136. Used only when ``tsigSecretSecretRef`` and ``tsigKeyName`` are defined. Supported values are (case-insensitive): ``HMACMD5`` (default), ``HMACSHA1``, ``HMACSHA256`` or ``HMACSHA512``.'\n                                    type: string\n                                  tsigKeyName:\n                                    description: The TSIG Key name configured in the DNS. If ``tsigSecretSecretRef`` is defined, this field is required.\n                                    type: string\n                                  tsigSecretSecretRef:\n                                    description: The name of the secret containing the TSIG value. If ``tsigKeyName`` is defined, this field is required.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                              route53:\n                                description: Use the AWS Route53 API to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - region\n                                properties:\n                                  accessKeyID:\n                                    description: 'The AccessKeyID is used for authentication. Cannot be set when SecretAccessKeyID is set. If neither the Access Key nor Key ID are set, we fall-back to using env vars, shared credentials file or AWS Instance metadata, see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials'\n                                    type: string\n                                  accessKeyIDSecretRef:\n                                    description: 'The SecretAccessKey is used for authentication. If set, pull the AWS access key ID from a key within a Kubernetes Secret. Cannot be set when AccessKeyID is set. If neither the Access Key nor Key ID are set, we fall-back to using env vars, shared credentials file or AWS Instance metadata, see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials'\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  hostedZoneID:\n                                    description: If set, the provider will manage only this zone in Route53 and will not do an lookup using the route53:ListHostedZonesByName api call.\n                                    type: string\n                                  region:\n                                    description: Always set the region when using AccessKeyID and SecretAccessKey\n                                    type: string\n                                  role:\n                                    description: Role is a Role ARN which the Route53 provider will assume using either the explicit credentials AccessKeyID/SecretAccessKey or the inferred credentials from environment variables, shared credentials file or AWS Instance metadata\n                                    type: string\n                                  secretAccessKeySecretRef:\n                                    description: 'The SecretAccessKey is used for authentication. If neither the Access Key nor Key ID are set, we fall-back to using env vars, shared credentials file or AWS Instance metadata, see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials'\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                              webhook:\n                                description: Configure an external webhook based DNS01 challenge solver to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - groupName\n                                  - solverName\n                                properties:\n                                  config:\n                                    description: Additional configuration that should be passed to the webhook apiserver when challenges are processed. This can contain arbitrary JSON data. Secret values should not be specified in this stanza. If secret values are needed (e.g. credentials for a DNS service), you should use a SecretKeySelector to reference a Secret resource. For details on the schema of this field, consult the webhook provider implementation's documentation.\n                                    x-kubernetes-preserve-unknown-fields: true\n                                  groupName:\n                                    description: The API group name that should be used when POSTing ChallengePayload resources to the webhook apiserver. This should be the same as the GroupName specified in the webhook provider implementation.\n                                    type: string\n                                  solverName:\n                                    description: The name of the solver to use, as defined in the webhook provider implementation. This will typically be the name of the provider, e.g. 'cloudflare'.\n                                    type: string\n                          http01:\n                            description: Configures cert-manager to attempt to complete authorizations by performing the HTTP01 challenge flow. It is not possible to obtain certificates for wildcard domain names (e.g. `*.example.com`) using the HTTP01 challenge mechanism.\n                            type: object\n                            properties:\n                              gatewayHTTPRoute:\n                                description: The Gateway API is a sig-network community API that models service networking in Kubernetes (https://gateway-api.sigs.k8s.io/). The Gateway solver will create HTTPRoutes with the specified labels in the same namespace as the challenge. This solver is experimental, and fields / behaviour may change in the future.\n                                type: object\n                                properties:\n                                  labels:\n                                    description: Custom labels that will be applied to HTTPRoutes created by cert-manager while solving HTTP-01 challenges.\n                                    type: object\n                                    additionalProperties:\n                                      type: string\n                                  parentRefs:\n                                    description: 'When solving an HTTP-01 challenge, cert-manager creates an HTTPRoute. cert-manager needs to know which parentRefs should be used when creating the HTTPRoute. Usually, the parentRef references a Gateway. See: https://gateway-api.sigs.k8s.io/v1alpha2/api-types/httproute/#attaching-to-gateways'\n                                    type: array\n                                    items:\n                                      description: \"ParentReference identifies an API object (usually a Gateway) that can be considered a parent of this resource (usually a route). The only kind of parent resource with \\\"Core\\\" support is Gateway. This API may be extended in the future to support additional kinds of parent resources, such as HTTPRoute. \\n The API object must be valid in the cluster; the Group and Kind must be registered in the cluster for this reference to be valid.\"\n                                      type: object\n                                      required:\n                                        - name\n                                      properties:\n                                        group:\n                                          description: \"Group is the group of the referent. \\n Support: Core\"\n                                          type: string\n                                          default: gateway.networking.k8s.io\n                                          maxLength: 253\n                                          pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$\n                                        kind:\n                                          description: \"Kind is kind of the referent. \\n Support: Core (Gateway) \\n Support: Custom (Other Resources)\"\n                                          type: string\n                                          default: Gateway\n                                          maxLength: 63\n                                          minLength: 1\n                                          pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$\n                                        name:\n                                          description: \"Name is the name of the referent. \\n Support: Core\"\n                                          type: string\n                                          maxLength: 253\n                                          minLength: 1\n                                        namespace:\n                                          description: \"Namespace is the namespace of the referent. When unspecified (or empty string), this refers to the local namespace of the Route. \\n Support: Core\"\n                                          type: string\n                                          maxLength: 63\n                                          minLength: 1\n                                          pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$\n                                        port:\n                                          description: \"Port is the network port this Route targets. It can be interpreted differently based on the type of parent resource. \\n When the parent resource is a Gateway, this targets all listeners listening on the specified port that also support this kind of Route(and select this Route). It's not recommended to set `Port` unless the networking behaviors specified in a Route must apply to a specific port as opposed to a listener(s) whose port(s) may be changed. When both Port and SectionName are specified, the name and port of the selected listener must match both specified values. \\n Implementations MAY choose to support other parent resources. Implementations supporting other types of parent resources MUST clearly document how/if Port is interpreted. \\n For the purpose of status, an attachment is considered successful as long as the parent resource accepts it partially. For example, Gateway listeners can restrict which Routes can attach to them by Route kind, namespace, or hostname. If 1 of 2 Gateway listeners accept attachment from the referencing Route, the Route MUST be considered successfully attached. If no Gateway listeners accept attachment from this Route, the Route MUST be considered detached from the Gateway. \\n Support: Extended \\n <gateway:experimental>\"\n                                          type: integer\n                                          format: int32\n                                          maximum: 65535\n                                          minimum: 1\n                                        sectionName:\n                                          description: \"SectionName is the name of a section within the target resource. In the following resources, SectionName is interpreted as the following: \\n * Gateway: Listener Name. When both Port (experimental) and SectionName are specified, the name and port of the selected listener must match both specified values. \\n Implementations MAY choose to support attaching Routes to other resources. If that is the case, they MUST clearly document how SectionName is interpreted. \\n When unspecified (empty string), this will reference the entire resource. For the purpose of status, an attachment is considered successful if at least one section in the parent resource accepts it. For example, Gateway listeners can restrict which Routes can attach to them by Route kind, namespace, or hostname. If 1 of 2 Gateway listeners accept attachment from the referencing Route, the Route MUST be considered successfully attached. If no Gateway listeners accept attachment from this Route, the Route MUST be considered detached from the Gateway. \\n Support: Core\"\n                                          type: string\n                                          maxLength: 253\n                                          minLength: 1\n                                          pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$\n                                  serviceType:\n                                    description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP. If unset, defaults to NodePort.\n                                    type: string\n                              ingress:\n                                description: The ingress based HTTP01 challenge solver will solve challenges by creating or modifying Ingress resources in order to route requests for '/.well-known/acme-challenge/XYZ' to 'challenge solver' pods that are provisioned by cert-manager for each Challenge to be completed.\n                                type: object\n                                properties:\n                                  class:\n                                    description: The ingress class to use when creating Ingress resources to solve ACME challenges that use this challenge solver. Only one of 'class' or 'name' may be specified.\n                                    type: string\n                                  ingressTemplate:\n                                    description: Optional ingress template used to configure the ACME challenge solver ingress used for HTTP01 challenges.\n                                    type: object\n                                    properties:\n                                      metadata:\n                                        description: ObjectMeta overrides for the ingress used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.\n                                        type: object\n                                        properties:\n                                          annotations:\n                                            description: Annotations that should be added to the created ACME HTTP01 solver ingress.\n                                            type: object\n                                            additionalProperties:\n                                              type: string\n                                          labels:\n                                            description: Labels that should be added to the created ACME HTTP01 solver ingress.\n                                            type: object\n                                            additionalProperties:\n                                              type: string\n                                  name:\n                                    description: The name of the ingress resource that should have ACME challenge solving routes inserted into it in order to solve HTTP01 challenges. This is typically used in conjunction with ingress controllers like ingress-gce, which maintains a 1:1 mapping between external IPs and ingress resources.\n                                    type: string\n                                  podTemplate:\n                                    description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges.\n                                    type: object\n                                    properties:\n                                      metadata:\n                                        description: ObjectMeta overrides for the pod used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.\n                                        type: object\n                                        properties:\n                                          annotations:\n                                            description: Annotations that should be added to the create ACME HTTP01 solver pods.\n                                            type: object\n                                            additionalProperties:\n                                              type: string\n                                          labels:\n                                            description: Labels that should be added to the created ACME HTTP01 solver pods.\n                                            type: object\n                                            additionalProperties:\n                                              type: string\n                                      spec:\n                                        description: PodSpec defines overrides for the HTTP01 challenge solver pod. Only the 'priorityClassName', 'nodeSelector', 'affinity', 'serviceAccountName' and 'tolerations' fields are supported currently. All other fields will be ignored.\n                                        type: object\n                                        properties:\n                                          affinity:\n                                            description: If specified, the pod's scheduling constraints\n                                            type: object\n                                            properties:\n                                              nodeAffinity:\n                                                description: Describes node affinity scheduling rules for the pod.\n                                                type: object\n                                                properties:\n                                                  preferredDuringSchedulingIgnoredDuringExecution:\n                                                    description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n                                                    type: array\n                                                    items:\n                                                      description: An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\n                                                      type: object\n                                                      required:\n                                                        - preference\n                                                        - weight\n                                                      properties:\n                                                        preference:\n                                                          description: A node selector term, associated with the corresponding weight.\n                                                          type: object\n                                                          properties:\n                                                            matchExpressions:\n                                                              description: A list of node selector requirements by node's labels.\n                                                              type: array\n                                                              items:\n                                                                description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: The label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                                    type: string\n                                                                  values:\n                                                                    description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                            matchFields:\n                                                              description: A list of node selector requirements by node's fields.\n                                                              type: array\n                                                              items:\n                                                                description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: The label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                                    type: string\n                                                                  values:\n                                                                    description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                          x-kubernetes-map-type: atomic\n                                                        weight:\n                                                          description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\n                                                          type: integer\n                                                          format: int32\n                                                  requiredDuringSchedulingIgnoredDuringExecution:\n                                                    description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.\n                                                    type: object\n                                                    required:\n                                                      - nodeSelectorTerms\n                                                    properties:\n                                                      nodeSelectorTerms:\n                                                        description: Required. A list of node selector terms. The terms are ORed.\n                                                        type: array\n                                                        items:\n                                                          description: A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\n                                                          type: object\n                                                          properties:\n                                                            matchExpressions:\n                                                              description: A list of node selector requirements by node's labels.\n                                                              type: array\n                                                              items:\n                                                                description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: The label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                                    type: string\n                                                                  values:\n                                                                    description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                            matchFields:\n                                                              description: A list of node selector requirements by node's fields.\n                                                              type: array\n                                                              items:\n                                                                description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: The label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                                    type: string\n                                                                  values:\n                                                                    description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                          x-kubernetes-map-type: atomic\n                                                    x-kubernetes-map-type: atomic\n                                              podAffinity:\n                                                description: Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\n                                                type: object\n                                                properties:\n                                                  preferredDuringSchedulingIgnoredDuringExecution:\n                                                    description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n                                                    type: array\n                                                    items:\n                                                      description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\n                                                      type: object\n                                                      required:\n                                                        - podAffinityTerm\n                                                        - weight\n                                                      properties:\n                                                        podAffinityTerm:\n                                                          description: Required. A pod affinity term, associated with the corresponding weight.\n                                                          type: object\n                                                          required:\n                                                            - topologyKey\n                                                          properties:\n                                                            labelSelector:\n                                                              description: A label query over a set of resources, in this case pods.\n                                                              type: object\n                                                              properties:\n                                                                matchExpressions:\n                                                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                                  type: array\n                                                                  items:\n                                                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                    type: object\n                                                                    required:\n                                                                      - key\n                                                                      - operator\n                                                                    properties:\n                                                                      key:\n                                                                        description: key is the label key that the selector applies to.\n                                                                        type: string\n                                                                      operator:\n                                                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                        type: string\n                                                                      values:\n                                                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                        type: array\n                                                                        items:\n                                                                          type: string\n                                                                matchLabels:\n                                                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                                  type: object\n                                                                  additionalProperties:\n                                                                    type: string\n                                                              x-kubernetes-map-type: atomic\n                                                            namespaceSelector:\n                                                              description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                                                              type: object\n                                                              properties:\n                                                                matchExpressions:\n                                                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                                  type: array\n                                                                  items:\n                                                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                    type: object\n                                                                    required:\n                                                                      - key\n                                                                      - operator\n                                                                    properties:\n                                                                      key:\n                                                                        description: key is the label key that the selector applies to.\n                                                                        type: string\n                                                                      operator:\n                                                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                        type: string\n                                                                      values:\n                                                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                        type: array\n                                                                        items:\n                                                                          type: string\n                                                                matchLabels:\n                                                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                                  type: object\n                                                                  additionalProperties:\n                                                                    type: string\n                                                              x-kubernetes-map-type: atomic\n                                                            namespaces:\n                                                              description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                                              type: array\n                                                              items:\n                                                                type: string\n                                                            topologyKey:\n                                                              description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                                                              type: string\n                                                        weight:\n                                                          description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.\n                                                          type: integer\n                                                          format: int32\n                                                  requiredDuringSchedulingIgnoredDuringExecution:\n                                                    description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n                                                    type: array\n                                                    items:\n                                                      description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running\n                                                      type: object\n                                                      required:\n                                                        - topologyKey\n                                                      properties:\n                                                        labelSelector:\n                                                          description: A label query over a set of resources, in this case pods.\n                                                          type: object\n                                                          properties:\n                                                            matchExpressions:\n                                                              description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                              type: array\n                                                              items:\n                                                                description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: key is the label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                    type: string\n                                                                  values:\n                                                                    description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                            matchLabels:\n                                                              description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                              type: object\n                                                              additionalProperties:\n                                                                type: string\n                                                          x-kubernetes-map-type: atomic\n                                                        namespaceSelector:\n                                                          description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                                                          type: object\n                                                          properties:\n                                                            matchExpressions:\n                                                              description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                              type: array\n                                                              items:\n                                                                description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: key is the label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                    type: string\n                                                                  values:\n                                                                    description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                            matchLabels:\n                                                              description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                              type: object\n                                                              additionalProperties:\n                                                                type: string\n                                                          x-kubernetes-map-type: atomic\n                                                        namespaces:\n                                                          description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                                          type: array\n                                                          items:\n                                                            type: string\n                                                        topologyKey:\n                                                          description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                                                          type: string\n                                              podAntiAffinity:\n                                                description: Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\n                                                type: object\n                                                properties:\n                                                  preferredDuringSchedulingIgnoredDuringExecution:\n                                                    description: The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n                                                    type: array\n                                                    items:\n                                                      description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\n                                                      type: object\n                                                      required:\n                                                        - podAffinityTerm\n                                                        - weight\n                                                      properties:\n                                                        podAffinityTerm:\n                                                          description: Required. A pod affinity term, associated with the corresponding weight.\n                                                          type: object\n                                                          required:\n                                                            - topologyKey\n                                                          properties:\n                                                            labelSelector:\n                                                              description: A label query over a set of resources, in this case pods.\n                                                              type: object\n                                                              properties:\n                                                                matchExpressions:\n                                                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                                  type: array\n                                                                  items:\n                                                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                    type: object\n                                                                    required:\n                                                                      - key\n                                                                      - operator\n                                                                    properties:\n                                                                      key:\n                                                                        description: key is the label key that the selector applies to.\n                                                                        type: string\n                                                                      operator:\n                                                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                        type: string\n                                                                      values:\n                                                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                        type: array\n                                                                        items:\n                                                                          type: string\n                                                                matchLabels:\n                                                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                                  type: object\n                                                                  additionalProperties:\n                                                                    type: string\n                                                              x-kubernetes-map-type: atomic\n                                                            namespaceSelector:\n                                                              description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                                                              type: object\n                                                              properties:\n                                                                matchExpressions:\n                                                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                                  type: array\n                                                                  items:\n                                                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                    type: object\n                                                                    required:\n                                                                      - key\n                                                                      - operator\n                                                                    properties:\n                                                                      key:\n                                                                        description: key is the label key that the selector applies to.\n                                                                        type: string\n                                                                      operator:\n                                                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                        type: string\n                                                                      values:\n                                                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                        type: array\n                                                                        items:\n                                                                          type: string\n                                                                matchLabels:\n                                                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                                  type: object\n                                                                  additionalProperties:\n                                                                    type: string\n                                                              x-kubernetes-map-type: atomic\n                                                            namespaces:\n                                                              description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                                              type: array\n                                                              items:\n                                                                type: string\n                                                            topologyKey:\n                                                              description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                                                              type: string\n                                                        weight:\n                                                          description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.\n                                                          type: integer\n                                                          format: int32\n                                                  requiredDuringSchedulingIgnoredDuringExecution:\n                                                    description: If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n                                                    type: array\n                                                    items:\n                                                      description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running\n                                                      type: object\n                                                      required:\n                                                        - topologyKey\n                                                      properties:\n                                                        labelSelector:\n                                                          description: A label query over a set of resources, in this case pods.\n                                                          type: object\n                                                          properties:\n                                                            matchExpressions:\n                                                              description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                              type: array\n                                                              items:\n                                                                description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: key is the label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                    type: string\n                                                                  values:\n                                                                    description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                            matchLabels:\n                                                              description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                              type: object\n                                                              additionalProperties:\n                                                                type: string\n                                                          x-kubernetes-map-type: atomic\n                                                        namespaceSelector:\n                                                          description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                                                          type: object\n                                                          properties:\n                                                            matchExpressions:\n                                                              description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                              type: array\n                                                              items:\n                                                                description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: key is the label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                    type: string\n                                                                  values:\n                                                                    description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                            matchLabels:\n                                                              description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                              type: object\n                                                              additionalProperties:\n                                                                type: string\n                                                          x-kubernetes-map-type: atomic\n                                                        namespaces:\n                                                          description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                                          type: array\n                                                          items:\n                                                            type: string\n                                                        topologyKey:\n                                                          description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                                                          type: string\n                                          nodeSelector:\n                                            description: 'NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node''s labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/'\n                                            type: object\n                                            additionalProperties:\n                                              type: string\n                                          priorityClassName:\n                                            description: If specified, the pod's priorityClassName.\n                                            type: string\n                                          serviceAccountName:\n                                            description: If specified, the pod's service account\n                                            type: string\n                                          tolerations:\n                                            description: If specified, the pod's tolerations.\n                                            type: array\n                                            items:\n                                              description: The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.\n                                              type: object\n                                              properties:\n                                                effect:\n                                                  description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\n                                                  type: string\n                                                key:\n                                                  description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.\n                                                  type: string\n                                                operator:\n                                                  description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.\n                                                  type: string\n                                                tolerationSeconds:\n                                                  description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.\n                                                  type: integer\n                                                  format: int64\n                                                value:\n                                                  description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.\n                                                  type: string\n                                  serviceType:\n                                    description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP. If unset, defaults to NodePort.\n                                    type: string\n                          selector:\n                            description: Selector selects a set of DNSNames on the Certificate resource that should be solved using this challenge solver. If not specified, the solver will be treated as the 'default' solver with the lowest priority, i.e. if any other solver has a more specific match, it will be used instead.\n                            type: object\n                            properties:\n                              dnsNames:\n                                description: List of DNSNames that this solver will be used to solve. If specified and a match is found, a dnsNames selector will take precedence over a dnsZones selector. If multiple solvers match with the same dnsNames value, the solver with the most matching labels in matchLabels will be selected. If neither has more matches, the solver defined earlier in the list will be selected.\n                                type: array\n                                items:\n                                  type: string\n                              dnsZones:\n                                description: List of DNSZones that this solver will be used to solve. The most specific DNS zone match specified here will take precedence over other DNS zone matches, so a solver specifying sys.example.com will be selected over one specifying example.com for the domain www.sys.example.com. If multiple solvers match with the same dnsZones value, the solver with the most matching labels in matchLabels will be selected. If neither has more matches, the solver defined earlier in the list will be selected.\n                                type: array\n                                items:\n                                  type: string\n                              matchLabels:\n                                description: A label selector that is used to refine the set of certificate's that this challenge solver will apply to.\n                                type: object\n                                additionalProperties:\n                                  type: string\n                ca:\n                  description: CA configures this issuer to sign certificates using a signing CA keypair stored in a Secret resource. This is used to build internal PKIs that are managed by cert-manager.\n                  type: object\n                  required:\n                    - secretName\n                  properties:\n                    crlDistributionPoints:\n                      description: The CRL distribution points is an X.509 v3 certificate extension which identifies the location of the CRL from which the revocation of this certificate can be checked. If not set, certificates will be issued without distribution points set.\n                      type: array\n                      items:\n                        type: string\n                    ocspServers:\n                      description: The OCSP server list is an X.509 v3 extension that defines a list of URLs of OCSP responders. The OCSP responders can be queried for the revocation status of an issued certificate. If not set, the certificate will be issued with no OCSP servers set. For example, an OCSP server URL could be \"http://ocsp.int-x3.letsencrypt.org\".\n                      type: array\n                      items:\n                        type: string\n                    secretName:\n                      description: SecretName is the name of the secret used to sign Certificates issued by this Issuer.\n                      type: string\n                selfSigned:\n                  description: SelfSigned configures this issuer to 'self sign' certificates using the private key used to create the CertificateRequest object.\n                  type: object\n                  properties:\n                    crlDistributionPoints:\n                      description: The CRL distribution points is an X.509 v3 certificate extension which identifies the location of the CRL from which the revocation of this certificate can be checked. If not set certificate will be issued without CDP. Values are strings.\n                      type: array\n                      items:\n                        type: string\n                vault:\n                  description: Vault configures this issuer to sign certificates using a HashiCorp Vault PKI backend.\n                  type: object\n                  required:\n                    - auth\n                    - path\n                    - server\n                  properties:\n                    auth:\n                      description: Auth configures how cert-manager authenticates with the Vault server.\n                      type: object\n                      properties:\n                        appRole:\n                          description: AppRole authenticates with Vault using the App Role auth mechanism, with the role and secret stored in a Kubernetes Secret resource.\n                          type: object\n                          required:\n                            - path\n                            - roleId\n                            - secretRef\n                          properties:\n                            path:\n                              description: 'Path where the App Role authentication backend is mounted in Vault, e.g: \"approle\"'\n                              type: string\n                            roleId:\n                              description: RoleID configured in the App Role authentication backend when setting up the authentication backend in Vault.\n                              type: string\n                            secretRef:\n                              description: Reference to a key in a Secret that contains the App Role secret used to authenticate with Vault. The `key` field must be specified and denotes which entry within the Secret resource is used as the app role secret.\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                        kubernetes:\n                          description: Kubernetes authenticates with Vault by passing the ServiceAccount token stored in the named Secret resource to the Vault server.\n                          type: object\n                          required:\n                            - role\n                            - secretRef\n                          properties:\n                            mountPath:\n                              description: The Vault mountPath here is the mount path to use when authenticating with Vault. For example, setting a value to `/v1/auth/foo`, will use the path `/v1/auth/foo/login` to authenticate with Vault. If unspecified, the default value \"/v1/auth/kubernetes\" will be used.\n                              type: string\n                            role:\n                              description: A required field containing the Vault Role to assume. A Role binds a Kubernetes ServiceAccount with a set of Vault policies.\n                              type: string\n                            secretRef:\n                              description: The required Secret field containing a Kubernetes ServiceAccount JWT used for authenticating with Vault. Use of 'ambient credentials' is not supported.\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                        tokenSecretRef:\n                          description: TokenSecretRef authenticates with Vault by presenting a token.\n                          type: object\n                          required:\n                            - name\n                          properties:\n                            key:\n                              description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                              type: string\n                            name:\n                              description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                              type: string\n                    caBundle:\n                      description: PEM-encoded CA bundle (base64-encoded) used to validate Vault server certificate. Only used if the Server URL is using HTTPS protocol. This parameter is ignored for plain HTTP protocol connection. If not set the system root certificates are used to validate the TLS connection. Mutually exclusive with CABundleSecretRef. If neither CABundle nor CABundleSecretRef are defined, the cert-manager controller system root certificates are used to validate the TLS connection.\n                      type: string\n                      format: byte\n                    caBundleSecretRef:\n                      description: CABundleSecretRef is a reference to a Secret which contains the CABundle which will be used when connecting to Vault when using HTTPS. Mutually exclusive with CABundle. If neither CABundleSecretRef nor CABundle are defined, the cert-manager controller system root certificates are used to validate the TLS connection. If no key for the Secret is specified, cert-manager will default to 'ca.crt'.\n                      type: object\n                      required:\n                        - name\n                      properties:\n                        key:\n                          description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                          type: string\n                        name:\n                          description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                          type: string\n                    namespace:\n                      description: 'Name of the vault namespace. Namespaces is a set of features within Vault Enterprise that allows Vault environments to support Secure Multi-tenancy. e.g: \"ns1\" More about namespaces can be found here https://www.vaultproject.io/docs/enterprise/namespaces'\n                      type: string\n                    path:\n                      description: 'Path is the mount path of the Vault PKI backend''s `sign` endpoint, e.g: \"my_pki_mount/sign/my-role-name\".'\n                      type: string\n                    server:\n                      description: 'Server is the connection address for the Vault server, e.g: \"https://vault.example.com:8200\".'\n                      type: string\n                venafi:\n                  description: Venafi configures this issuer to sign certificates using a Venafi TPP or Venafi Cloud policy zone.\n                  type: object\n                  required:\n                    - zone\n                  properties:\n                    cloud:\n                      description: Cloud specifies the Venafi cloud configuration settings. Only one of TPP or Cloud may be specified.\n                      type: object\n                      required:\n                        - apiTokenSecretRef\n                      properties:\n                        apiTokenSecretRef:\n                          description: APITokenSecretRef is a secret key selector for the Venafi Cloud API token.\n                          type: object\n                          required:\n                            - name\n                          properties:\n                            key:\n                              description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                              type: string\n                            name:\n                              description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                              type: string\n                        url:\n                          description: URL is the base URL for Venafi Cloud. Defaults to \"https://api.venafi.cloud/v1\".\n                          type: string\n                    tpp:\n                      description: TPP specifies Trust Protection Platform configuration settings. Only one of TPP or Cloud may be specified.\n                      type: object\n                      required:\n                        - credentialsRef\n                        - url\n                      properties:\n                        caBundle:\n                          description: CABundle is a PEM encoded TLS certificate to use to verify connections to the TPP instance. If specified, system roots will not be used and the issuing CA for the TPP instance must be verifiable using the provided root. If not specified, the connection will be verified using the cert-manager system root certificates.\n                          type: string\n                          format: byte\n                        credentialsRef:\n                          description: CredentialsRef is a reference to a Secret containing the username and password for the TPP server. The secret must contain two keys, 'username' and 'password'.\n                          type: object\n                          required:\n                            - name\n                          properties:\n                            name:\n                              description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                              type: string\n                        url:\n                          description: 'URL is the base URL for the vedsdk endpoint of the Venafi TPP instance, for example: \"https://tpp.example.com/vedsdk\".'\n                          type: string\n                    zone:\n                      description: Zone is the Venafi Policy Zone to use for this issuer. All requests made to the Venafi platform will be restricted by the named zone policy. This field is required.\n                      type: string\n            status:\n              description: Status of the ClusterIssuer. This is set and managed automatically.\n              type: object\n              properties:\n                acme:\n                  description: ACME specific status options. This field should only be set if the Issuer is configured to use an ACME server to issue certificates.\n                  type: object\n                  properties:\n                    lastRegisteredEmail:\n                      description: LastRegisteredEmail is the email associated with the latest registered ACME account, in order to track changes made to registered account associated with the  Issuer\n                      type: string\n                    uri:\n                      description: URI is the unique account identifier, which can also be used to retrieve account details from the CA\n                      type: string\n                conditions:\n                  description: List of status conditions to indicate the status of a CertificateRequest. Known condition types are `Ready`.\n                  type: array\n                  items:\n                    description: IssuerCondition contains condition information for an Issuer.\n                    type: object\n                    required:\n                      - status\n                      - type\n                    properties:\n                      lastTransitionTime:\n                        description: LastTransitionTime is the timestamp corresponding to the last status change of this condition.\n                        type: string\n                        format: date-time\n                      message:\n                        description: Message is a human readable description of the details of the last transition, complementing reason.\n                        type: string\n                      observedGeneration:\n                        description: If set, this represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.condition[x].observedGeneration is 9, the condition is out of date with respect to the current state of the Issuer.\n                        type: integer\n                        format: int64\n                      reason:\n                        description: Reason is a brief machine readable explanation for the condition's last transition.\n                        type: string\n                      status:\n                        description: Status of the condition, one of (`True`, `False`, `Unknown`).\n                        type: string\n                        enum:\n                          - \"True\"\n                          - \"False\"\n                          - Unknown\n                      type:\n                        description: Type of the condition, known values are (`Ready`).\n                        type: string\n                  x-kubernetes-list-map-keys:\n                    - type\n                  x-kubernetes-list-type: map\n      served: true\n      storage: true\n---\n# Source: cert-manager/templates/crds.yaml\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  name: challenges.acme.cert-manager.io\n  labels:\n    app: 'cert-manager'\n    app.kubernetes.io/name: 'cert-manager'\n    app.kubernetes.io/instance: 'cert-manager'\n    # Generated labels\n    app.kubernetes.io/version: \"v1.10.0\"\nspec:\n  group: acme.cert-manager.io\n  names:\n    kind: Challenge\n    listKind: ChallengeList\n    plural: challenges\n    singular: challenge\n    categories:\n      - cert-manager\n      - cert-manager-acme\n  scope: Namespaced\n  versions:\n    - additionalPrinterColumns:\n        - jsonPath: .status.state\n          name: State\n          type: string\n        - jsonPath: .spec.dnsName\n          name: Domain\n          type: string\n        - jsonPath: .status.reason\n          name: Reason\n          priority: 1\n          type: string\n        - description: CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n          jsonPath: .metadata.creationTimestamp\n          name: Age\n          type: date\n      name: v1\n      schema:\n        openAPIV3Schema:\n          description: Challenge is a type to represent a Challenge request with an ACME server\n          type: object\n          required:\n            - metadata\n            - spec\n          properties:\n            apiVersion:\n              description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n              type: string\n            kind:\n              description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n              type: string\n            metadata:\n              type: object\n            spec:\n              type: object\n              required:\n                - authorizationURL\n                - dnsName\n                - issuerRef\n                - key\n                - solver\n                - token\n                - type\n                - url\n              properties:\n                authorizationURL:\n                  description: The URL to the ACME Authorization resource that this challenge is a part of.\n                  type: string\n                dnsName:\n                  description: dnsName is the identifier that this challenge is for, e.g. example.com. If the requested DNSName is a 'wildcard', this field MUST be set to the non-wildcard domain, e.g. for `*.example.com`, it must be `example.com`.\n                  type: string\n                issuerRef:\n                  description: References a properly configured ACME-type Issuer which should be used to create this Challenge. If the Issuer does not exist, processing will be retried. If the Issuer is not an 'ACME' Issuer, an error will be returned and the Challenge will be marked as failed.\n                  type: object\n                  required:\n                    - name\n                  properties:\n                    group:\n                      description: Group of the resource being referred to.\n                      type: string\n                    kind:\n                      description: Kind of the resource being referred to.\n                      type: string\n                    name:\n                      description: Name of the resource being referred to.\n                      type: string\n                key:\n                  description: 'The ACME challenge key for this challenge For HTTP01 challenges, this is the value that must be responded with to complete the HTTP01 challenge in the format: `<private key JWK thumbprint>.<key from acme server for challenge>`. For DNS01 challenges, this is the base64 encoded SHA256 sum of the `<private key JWK thumbprint>.<key from acme server for challenge>` text that must be set as the TXT record content.'\n                  type: string\n                solver:\n                  description: Contains the domain solving configuration that should be used to solve this challenge resource.\n                  type: object\n                  properties:\n                    dns01:\n                      description: Configures cert-manager to attempt to complete authorizations by performing the DNS01 challenge flow.\n                      type: object\n                      properties:\n                        acmeDNS:\n                          description: Use the 'ACME DNS' (https://github.com/joohoi/acme-dns) API to manage DNS01 challenge records.\n                          type: object\n                          required:\n                            - accountSecretRef\n                            - host\n                          properties:\n                            accountSecretRef:\n                              description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                            host:\n                              type: string\n                        akamai:\n                          description: Use the Akamai DNS zone management API to manage DNS01 challenge records.\n                          type: object\n                          required:\n                            - accessTokenSecretRef\n                            - clientSecretSecretRef\n                            - clientTokenSecretRef\n                            - serviceConsumerDomain\n                          properties:\n                            accessTokenSecretRef:\n                              description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                            clientSecretSecretRef:\n                              description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                            clientTokenSecretRef:\n                              description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                            serviceConsumerDomain:\n                              type: string\n                        azureDNS:\n                          description: Use the Microsoft Azure DNS API to manage DNS01 challenge records.\n                          type: object\n                          required:\n                            - resourceGroupName\n                            - subscriptionID\n                          properties:\n                            clientID:\n                              description: if both this and ClientSecret are left unset MSI will be used\n                              type: string\n                            clientSecretSecretRef:\n                              description: if both this and ClientID are left unset MSI will be used\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                            environment:\n                              description: name of the Azure environment (default AzurePublicCloud)\n                              type: string\n                              enum:\n                                - AzurePublicCloud\n                                - AzureChinaCloud\n                                - AzureGermanCloud\n                                - AzureUSGovernmentCloud\n                            hostedZoneName:\n                              description: name of the DNS zone that should be used\n                              type: string\n                            managedIdentity:\n                              description: managed identity configuration, can not be used at the same time as clientID, clientSecretSecretRef or tenantID\n                              type: object\n                              properties:\n                                clientID:\n                                  description: client ID of the managed identity, can not be used at the same time as resourceID\n                                  type: string\n                                resourceID:\n                                  description: resource ID of the managed identity, can not be used at the same time as clientID\n                                  type: string\n                            resourceGroupName:\n                              description: resource group the DNS zone is located in\n                              type: string\n                            subscriptionID:\n                              description: ID of the Azure subscription\n                              type: string\n                            tenantID:\n                              description: when specifying ClientID and ClientSecret then this field is also needed\n                              type: string\n                        cloudDNS:\n                          description: Use the Google Cloud DNS API to manage DNS01 challenge records.\n                          type: object\n                          required:\n                            - project\n                          properties:\n                            hostedZoneName:\n                              description: HostedZoneName is an optional field that tells cert-manager in which Cloud DNS zone the challenge record has to be created. If left empty cert-manager will automatically choose a zone.\n                              type: string\n                            project:\n                              type: string\n                            serviceAccountSecretRef:\n                              description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                        cloudflare:\n                          description: Use the Cloudflare API to manage DNS01 challenge records.\n                          type: object\n                          properties:\n                            apiKeySecretRef:\n                              description: 'API key to use to authenticate with Cloudflare. Note: using an API token to authenticate is now the recommended method as it allows greater control of permissions.'\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                            apiTokenSecretRef:\n                              description: API token used to authenticate with Cloudflare.\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                            email:\n                              description: Email of the account, only required when using API key based authentication.\n                              type: string\n                        cnameStrategy:\n                          description: CNAMEStrategy configures how the DNS01 provider should handle CNAME records when found in DNS zones.\n                          type: string\n                          enum:\n                            - None\n                            - Follow\n                        digitalocean:\n                          description: Use the DigitalOcean DNS API to manage DNS01 challenge records.\n                          type: object\n                          required:\n                            - tokenSecretRef\n                          properties:\n                            tokenSecretRef:\n                              description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                        rfc2136:\n                          description: Use RFC2136 (\"Dynamic Updates in the Domain Name System\") (https://datatracker.ietf.org/doc/rfc2136/) to manage DNS01 challenge records.\n                          type: object\n                          required:\n                            - nameserver\n                          properties:\n                            nameserver:\n                              description: The IP address or hostname of an authoritative DNS server supporting RFC2136 in the form host:port. If the host is an IPv6 address it must be enclosed in square brackets (e.g [2001:db8::1]) ; port is optional. This field is required.\n                              type: string\n                            tsigAlgorithm:\n                              description: 'The TSIG Algorithm configured in the DNS supporting RFC2136. Used only when ``tsigSecretSecretRef`` and ``tsigKeyName`` are defined. Supported values are (case-insensitive): ``HMACMD5`` (default), ``HMACSHA1``, ``HMACSHA256`` or ``HMACSHA512``.'\n                              type: string\n                            tsigKeyName:\n                              description: The TSIG Key name configured in the DNS. If ``tsigSecretSecretRef`` is defined, this field is required.\n                              type: string\n                            tsigSecretSecretRef:\n                              description: The name of the secret containing the TSIG value. If ``tsigKeyName`` is defined, this field is required.\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                        route53:\n                          description: Use the AWS Route53 API to manage DNS01 challenge records.\n                          type: object\n                          required:\n                            - region\n                          properties:\n                            accessKeyID:\n                              description: 'The AccessKeyID is used for authentication. Cannot be set when SecretAccessKeyID is set. If neither the Access Key nor Key ID are set, we fall-back to using env vars, shared credentials file or AWS Instance metadata, see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials'\n                              type: string\n                            accessKeyIDSecretRef:\n                              description: 'The SecretAccessKey is used for authentication. If set, pull the AWS access key ID from a key within a Kubernetes Secret. Cannot be set when AccessKeyID is set. If neither the Access Key nor Key ID are set, we fall-back to using env vars, shared credentials file or AWS Instance metadata, see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials'\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                            hostedZoneID:\n                              description: If set, the provider will manage only this zone in Route53 and will not do an lookup using the route53:ListHostedZonesByName api call.\n                              type: string\n                            region:\n                              description: Always set the region when using AccessKeyID and SecretAccessKey\n                              type: string\n                            role:\n                              description: Role is a Role ARN which the Route53 provider will assume using either the explicit credentials AccessKeyID/SecretAccessKey or the inferred credentials from environment variables, shared credentials file or AWS Instance metadata\n                              type: string\n                            secretAccessKeySecretRef:\n                              description: 'The SecretAccessKey is used for authentication. If neither the Access Key nor Key ID are set, we fall-back to using env vars, shared credentials file or AWS Instance metadata, see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials'\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                        webhook:\n                          description: Configure an external webhook based DNS01 challenge solver to manage DNS01 challenge records.\n                          type: object\n                          required:\n                            - groupName\n                            - solverName\n                          properties:\n                            config:\n                              description: Additional configuration that should be passed to the webhook apiserver when challenges are processed. This can contain arbitrary JSON data. Secret values should not be specified in this stanza. If secret values are needed (e.g. credentials for a DNS service), you should use a SecretKeySelector to reference a Secret resource. For details on the schema of this field, consult the webhook provider implementation's documentation.\n                              x-kubernetes-preserve-unknown-fields: true\n                            groupName:\n                              description: The API group name that should be used when POSTing ChallengePayload resources to the webhook apiserver. This should be the same as the GroupName specified in the webhook provider implementation.\n                              type: string\n                            solverName:\n                              description: The name of the solver to use, as defined in the webhook provider implementation. This will typically be the name of the provider, e.g. 'cloudflare'.\n                              type: string\n                    http01:\n                      description: Configures cert-manager to attempt to complete authorizations by performing the HTTP01 challenge flow. It is not possible to obtain certificates for wildcard domain names (e.g. `*.example.com`) using the HTTP01 challenge mechanism.\n                      type: object\n                      properties:\n                        gatewayHTTPRoute:\n                          description: The Gateway API is a sig-network community API that models service networking in Kubernetes (https://gateway-api.sigs.k8s.io/). The Gateway solver will create HTTPRoutes with the specified labels in the same namespace as the challenge. This solver is experimental, and fields / behaviour may change in the future.\n                          type: object\n                          properties:\n                            labels:\n                              description: Custom labels that will be applied to HTTPRoutes created by cert-manager while solving HTTP-01 challenges.\n                              type: object\n                              additionalProperties:\n                                type: string\n                            parentRefs:\n                              description: 'When solving an HTTP-01 challenge, cert-manager creates an HTTPRoute. cert-manager needs to know which parentRefs should be used when creating the HTTPRoute. Usually, the parentRef references a Gateway. See: https://gateway-api.sigs.k8s.io/v1alpha2/api-types/httproute/#attaching-to-gateways'\n                              type: array\n                              items:\n                                description: \"ParentReference identifies an API object (usually a Gateway) that can be considered a parent of this resource (usually a route). The only kind of parent resource with \\\"Core\\\" support is Gateway. This API may be extended in the future to support additional kinds of parent resources, such as HTTPRoute. \\n The API object must be valid in the cluster; the Group and Kind must be registered in the cluster for this reference to be valid.\"\n                                type: object\n                                required:\n                                  - name\n                                properties:\n                                  group:\n                                    description: \"Group is the group of the referent. \\n Support: Core\"\n                                    type: string\n                                    default: gateway.networking.k8s.io\n                                    maxLength: 253\n                                    pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$\n                                  kind:\n                                    description: \"Kind is kind of the referent. \\n Support: Core (Gateway) \\n Support: Custom (Other Resources)\"\n                                    type: string\n                                    default: Gateway\n                                    maxLength: 63\n                                    minLength: 1\n                                    pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$\n                                  name:\n                                    description: \"Name is the name of the referent. \\n Support: Core\"\n                                    type: string\n                                    maxLength: 253\n                                    minLength: 1\n                                  namespace:\n                                    description: \"Namespace is the namespace of the referent. When unspecified (or empty string), this refers to the local namespace of the Route. \\n Support: Core\"\n                                    type: string\n                                    maxLength: 63\n                                    minLength: 1\n                                    pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$\n                                  port:\n                                    description: \"Port is the network port this Route targets. It can be interpreted differently based on the type of parent resource. \\n When the parent resource is a Gateway, this targets all listeners listening on the specified port that also support this kind of Route(and select this Route). It's not recommended to set `Port` unless the networking behaviors specified in a Route must apply to a specific port as opposed to a listener(s) whose port(s) may be changed. When both Port and SectionName are specified, the name and port of the selected listener must match both specified values. \\n Implementations MAY choose to support other parent resources. Implementations supporting other types of parent resources MUST clearly document how/if Port is interpreted. \\n For the purpose of status, an attachment is considered successful as long as the parent resource accepts it partially. For example, Gateway listeners can restrict which Routes can attach to them by Route kind, namespace, or hostname. If 1 of 2 Gateway listeners accept attachment from the referencing Route, the Route MUST be considered successfully attached. If no Gateway listeners accept attachment from this Route, the Route MUST be considered detached from the Gateway. \\n Support: Extended \\n <gateway:experimental>\"\n                                    type: integer\n                                    format: int32\n                                    maximum: 65535\n                                    minimum: 1\n                                  sectionName:\n                                    description: \"SectionName is the name of a section within the target resource. In the following resources, SectionName is interpreted as the following: \\n * Gateway: Listener Name. When both Port (experimental) and SectionName are specified, the name and port of the selected listener must match both specified values. \\n Implementations MAY choose to support attaching Routes to other resources. If that is the case, they MUST clearly document how SectionName is interpreted. \\n When unspecified (empty string), this will reference the entire resource. For the purpose of status, an attachment is considered successful if at least one section in the parent resource accepts it. For example, Gateway listeners can restrict which Routes can attach to them by Route kind, namespace, or hostname. If 1 of 2 Gateway listeners accept attachment from the referencing Route, the Route MUST be considered successfully attached. If no Gateway listeners accept attachment from this Route, the Route MUST be considered detached from the Gateway. \\n Support: Core\"\n                                    type: string\n                                    maxLength: 253\n                                    minLength: 1\n                                    pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$\n                            serviceType:\n                              description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP. If unset, defaults to NodePort.\n                              type: string\n                        ingress:\n                          description: The ingress based HTTP01 challenge solver will solve challenges by creating or modifying Ingress resources in order to route requests for '/.well-known/acme-challenge/XYZ' to 'challenge solver' pods that are provisioned by cert-manager for each Challenge to be completed.\n                          type: object\n                          properties:\n                            class:\n                              description: The ingress class to use when creating Ingress resources to solve ACME challenges that use this challenge solver. Only one of 'class' or 'name' may be specified.\n                              type: string\n                            ingressTemplate:\n                              description: Optional ingress template used to configure the ACME challenge solver ingress used for HTTP01 challenges.\n                              type: object\n                              properties:\n                                metadata:\n                                  description: ObjectMeta overrides for the ingress used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.\n                                  type: object\n                                  properties:\n                                    annotations:\n                                      description: Annotations that should be added to the created ACME HTTP01 solver ingress.\n                                      type: object\n                                      additionalProperties:\n                                        type: string\n                                    labels:\n                                      description: Labels that should be added to the created ACME HTTP01 solver ingress.\n                                      type: object\n                                      additionalProperties:\n                                        type: string\n                            name:\n                              description: The name of the ingress resource that should have ACME challenge solving routes inserted into it in order to solve HTTP01 challenges. This is typically used in conjunction with ingress controllers like ingress-gce, which maintains a 1:1 mapping between external IPs and ingress resources.\n                              type: string\n                            podTemplate:\n                              description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges.\n                              type: object\n                              properties:\n                                metadata:\n                                  description: ObjectMeta overrides for the pod used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.\n                                  type: object\n                                  properties:\n                                    annotations:\n                                      description: Annotations that should be added to the create ACME HTTP01 solver pods.\n                                      type: object\n                                      additionalProperties:\n                                        type: string\n                                    labels:\n                                      description: Labels that should be added to the created ACME HTTP01 solver pods.\n                                      type: object\n                                      additionalProperties:\n                                        type: string\n                                spec:\n                                  description: PodSpec defines overrides for the HTTP01 challenge solver pod. Only the 'priorityClassName', 'nodeSelector', 'affinity', 'serviceAccountName' and 'tolerations' fields are supported currently. All other fields will be ignored.\n                                  type: object\n                                  properties:\n                                    affinity:\n                                      description: If specified, the pod's scheduling constraints\n                                      type: object\n                                      properties:\n                                        nodeAffinity:\n                                          description: Describes node affinity scheduling rules for the pod.\n                                          type: object\n                                          properties:\n                                            preferredDuringSchedulingIgnoredDuringExecution:\n                                              description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n                                              type: array\n                                              items:\n                                                description: An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\n                                                type: object\n                                                required:\n                                                  - preference\n                                                  - weight\n                                                properties:\n                                                  preference:\n                                                    description: A node selector term, associated with the corresponding weight.\n                                                    type: object\n                                                    properties:\n                                                      matchExpressions:\n                                                        description: A list of node selector requirements by node's labels.\n                                                        type: array\n                                                        items:\n                                                          description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                          type: object\n                                                          required:\n                                                            - key\n                                                            - operator\n                                                          properties:\n                                                            key:\n                                                              description: The label key that the selector applies to.\n                                                              type: string\n                                                            operator:\n                                                              description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                              type: string\n                                                            values:\n                                                              description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                                              type: array\n                                                              items:\n                                                                type: string\n                                                      matchFields:\n                                                        description: A list of node selector requirements by node's fields.\n                                                        type: array\n                                                        items:\n                                                          description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                          type: object\n                                                          required:\n                                                            - key\n                                                            - operator\n                                                          properties:\n                                                            key:\n                                                              description: The label key that the selector applies to.\n                                                              type: string\n                                                            operator:\n                                                              description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                              type: string\n                                                            values:\n                                                              description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                                              type: array\n                                                              items:\n                                                                type: string\n                                                    x-kubernetes-map-type: atomic\n                                                  weight:\n                                                    description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\n                                                    type: integer\n                                                    format: int32\n                                            requiredDuringSchedulingIgnoredDuringExecution:\n                                              description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.\n                                              type: object\n                                              required:\n                                                - nodeSelectorTerms\n                                              properties:\n                                                nodeSelectorTerms:\n                                                  description: Required. A list of node selector terms. The terms are ORed.\n                                                  type: array\n                                                  items:\n                                                    description: A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\n                                                    type: object\n                                                    properties:\n                                                      matchExpressions:\n                                                        description: A list of node selector requirements by node's labels.\n                                                        type: array\n                                                        items:\n                                                          description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                          type: object\n                                                          required:\n                                                            - key\n                                                            - operator\n                                                          properties:\n                                                            key:\n                                                              description: The label key that the selector applies to.\n                                                              type: string\n                                                            operator:\n                                                              description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                              type: string\n                                                            values:\n                                                              description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                                              type: array\n                                                              items:\n                                                                type: string\n                                                      matchFields:\n                                                        description: A list of node selector requirements by node's fields.\n                                                        type: array\n                                                        items:\n                                                          description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                          type: object\n                                                          required:\n                                                            - key\n                                                            - operator\n                                                          properties:\n                                                            key:\n                                                              description: The label key that the selector applies to.\n                                                              type: string\n                                                            operator:\n                                                              description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                              type: string\n                                                            values:\n                                                              description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                                              type: array\n                                                              items:\n                                                                type: string\n                                                    x-kubernetes-map-type: atomic\n                                              x-kubernetes-map-type: atomic\n                                        podAffinity:\n                                          description: Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\n                                          type: object\n                                          properties:\n                                            preferredDuringSchedulingIgnoredDuringExecution:\n                                              description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n                                              type: array\n                                              items:\n                                                description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\n                                                type: object\n                                                required:\n                                                  - podAffinityTerm\n                                                  - weight\n                                                properties:\n                                                  podAffinityTerm:\n                                                    description: Required. A pod affinity term, associated with the corresponding weight.\n                                                    type: object\n                                                    required:\n                                                      - topologyKey\n                                                    properties:\n                                                      labelSelector:\n                                                        description: A label query over a set of resources, in this case pods.\n                                                        type: object\n                                                        properties:\n                                                          matchExpressions:\n                                                            description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                            type: array\n                                                            items:\n                                                              description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                              type: object\n                                                              required:\n                                                                - key\n                                                                - operator\n                                                              properties:\n                                                                key:\n                                                                  description: key is the label key that the selector applies to.\n                                                                  type: string\n                                                                operator:\n                                                                  description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                  type: string\n                                                                values:\n                                                                  description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                  type: array\n                                                                  items:\n                                                                    type: string\n                                                          matchLabels:\n                                                            description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                            type: object\n                                                            additionalProperties:\n                                                              type: string\n                                                        x-kubernetes-map-type: atomic\n                                                      namespaceSelector:\n                                                        description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                                                        type: object\n                                                        properties:\n                                                          matchExpressions:\n                                                            description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                            type: array\n                                                            items:\n                                                              description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                              type: object\n                                                              required:\n                                                                - key\n                                                                - operator\n                                                              properties:\n                                                                key:\n                                                                  description: key is the label key that the selector applies to.\n                                                                  type: string\n                                                                operator:\n                                                                  description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                  type: string\n                                                                values:\n                                                                  description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                  type: array\n                                                                  items:\n                                                                    type: string\n                                                          matchLabels:\n                                                            description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                            type: object\n                                                            additionalProperties:\n                                                              type: string\n                                                        x-kubernetes-map-type: atomic\n                                                      namespaces:\n                                                        description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                                        type: array\n                                                        items:\n                                                          type: string\n                                                      topologyKey:\n                                                        description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                                                        type: string\n                                                  weight:\n                                                    description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.\n                                                    type: integer\n                                                    format: int32\n                                            requiredDuringSchedulingIgnoredDuringExecution:\n                                              description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n                                              type: array\n                                              items:\n                                                description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running\n                                                type: object\n                                                required:\n                                                  - topologyKey\n                                                properties:\n                                                  labelSelector:\n                                                    description: A label query over a set of resources, in this case pods.\n                                                    type: object\n                                                    properties:\n                                                      matchExpressions:\n                                                        description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                        type: array\n                                                        items:\n                                                          description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                          type: object\n                                                          required:\n                                                            - key\n                                                            - operator\n                                                          properties:\n                                                            key:\n                                                              description: key is the label key that the selector applies to.\n                                                              type: string\n                                                            operator:\n                                                              description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                              type: string\n                                                            values:\n                                                              description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                              type: array\n                                                              items:\n                                                                type: string\n                                                      matchLabels:\n                                                        description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                        type: object\n                                                        additionalProperties:\n                                                          type: string\n                                                    x-kubernetes-map-type: atomic\n                                                  namespaceSelector:\n                                                    description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                                                    type: object\n                                                    properties:\n                                                      matchExpressions:\n                                                        description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                        type: array\n                                                        items:\n                                                          description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                          type: object\n                                                          required:\n                                                            - key\n                                                            - operator\n                                                          properties:\n                                                            key:\n                                                              description: key is the label key that the selector applies to.\n                                                              type: string\n                                                            operator:\n                                                              description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                              type: string\n                                                            values:\n                                                              description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                              type: array\n                                                              items:\n                                                                type: string\n                                                      matchLabels:\n                                                        description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                        type: object\n                                                        additionalProperties:\n                                                          type: string\n                                                    x-kubernetes-map-type: atomic\n                                                  namespaces:\n                                                    description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                                    type: array\n                                                    items:\n                                                      type: string\n                                                  topologyKey:\n                                                    description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                                                    type: string\n                                        podAntiAffinity:\n                                          description: Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\n                                          type: object\n                                          properties:\n                                            preferredDuringSchedulingIgnoredDuringExecution:\n                                              description: The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n                                              type: array\n                                              items:\n                                                description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\n                                                type: object\n                                                required:\n                                                  - podAffinityTerm\n                                                  - weight\n                                                properties:\n                                                  podAffinityTerm:\n                                                    description: Required. A pod affinity term, associated with the corresponding weight.\n                                                    type: object\n                                                    required:\n                                                      - topologyKey\n                                                    properties:\n                                                      labelSelector:\n                                                        description: A label query over a set of resources, in this case pods.\n                                                        type: object\n                                                        properties:\n                                                          matchExpressions:\n                                                            description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                            type: array\n                                                            items:\n                                                              description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                              type: object\n                                                              required:\n                                                                - key\n                                                                - operator\n                                                              properties:\n                                                                key:\n                                                                  description: key is the label key that the selector applies to.\n                                                                  type: string\n                                                                operator:\n                                                                  description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                  type: string\n                                                                values:\n                                                                  description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                  type: array\n                                                                  items:\n                                                                    type: string\n                                                          matchLabels:\n                                                            description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                            type: object\n                                                            additionalProperties:\n                                                              type: string\n                                                        x-kubernetes-map-type: atomic\n                                                      namespaceSelector:\n                                                        description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                                                        type: object\n                                                        properties:\n                                                          matchExpressions:\n                                                            description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                            type: array\n                                                            items:\n                                                              description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                              type: object\n                                                              required:\n                                                                - key\n                                                                - operator\n                                                              properties:\n                                                                key:\n                                                                  description: key is the label key that the selector applies to.\n                                                                  type: string\n                                                                operator:\n                                                                  description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                  type: string\n                                                                values:\n                                                                  description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                  type: array\n                                                                  items:\n                                                                    type: string\n                                                          matchLabels:\n                                                            description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                            type: object\n                                                            additionalProperties:\n                                                              type: string\n                                                        x-kubernetes-map-type: atomic\n                                                      namespaces:\n                                                        description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                                        type: array\n                                                        items:\n                                                          type: string\n                                                      topologyKey:\n                                                        description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                                                        type: string\n                                                  weight:\n                                                    description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.\n                                                    type: integer\n                                                    format: int32\n                                            requiredDuringSchedulingIgnoredDuringExecution:\n                                              description: If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n                                              type: array\n                                              items:\n                                                description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running\n                                                type: object\n                                                required:\n                                                  - topologyKey\n                                                properties:\n                                                  labelSelector:\n                                                    description: A label query over a set of resources, in this case pods.\n                                                    type: object\n                                                    properties:\n                                                      matchExpressions:\n                                                        description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                        type: array\n                                                        items:\n                                                          description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                          type: object\n                                                          required:\n                                                            - key\n                                                            - operator\n                                                          properties:\n                                                            key:\n                                                              description: key is the label key that the selector applies to.\n                                                              type: string\n                                                            operator:\n                                                              description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                              type: string\n                                                            values:\n                                                              description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                              type: array\n                                                              items:\n                                                                type: string\n                                                      matchLabels:\n                                                        description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                        type: object\n                                                        additionalProperties:\n                                                          type: string\n                                                    x-kubernetes-map-type: atomic\n                                                  namespaceSelector:\n                                                    description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                                                    type: object\n                                                    properties:\n                                                      matchExpressions:\n                                                        description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                        type: array\n                                                        items:\n                                                          description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                          type: object\n                                                          required:\n                                                            - key\n                                                            - operator\n                                                          properties:\n                                                            key:\n                                                              description: key is the label key that the selector applies to.\n                                                              type: string\n                                                            operator:\n                                                              description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                              type: string\n                                                            values:\n                                                              description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                              type: array\n                                                              items:\n                                                                type: string\n                                                      matchLabels:\n                                                        description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                        type: object\n                                                        additionalProperties:\n                                                          type: string\n                                                    x-kubernetes-map-type: atomic\n                                                  namespaces:\n                                                    description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                                    type: array\n                                                    items:\n                                                      type: string\n                                                  topologyKey:\n                                                    description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                                                    type: string\n                                    nodeSelector:\n                                      description: 'NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node''s labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/'\n                                      type: object\n                                      additionalProperties:\n                                        type: string\n                                    priorityClassName:\n                                      description: If specified, the pod's priorityClassName.\n                                      type: string\n                                    serviceAccountName:\n                                      description: If specified, the pod's service account\n                                      type: string\n                                    tolerations:\n                                      description: If specified, the pod's tolerations.\n                                      type: array\n                                      items:\n                                        description: The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.\n                                        type: object\n                                        properties:\n                                          effect:\n                                            description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\n                                            type: string\n                                          key:\n                                            description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.\n                                            type: string\n                                          operator:\n                                            description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.\n                                            type: string\n                                          tolerationSeconds:\n                                            description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.\n                                            type: integer\n                                            format: int64\n                                          value:\n                                            description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.\n                                            type: string\n                            serviceType:\n                              description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP. If unset, defaults to NodePort.\n                              type: string\n                    selector:\n                      description: Selector selects a set of DNSNames on the Certificate resource that should be solved using this challenge solver. If not specified, the solver will be treated as the 'default' solver with the lowest priority, i.e. if any other solver has a more specific match, it will be used instead.\n                      type: object\n                      properties:\n                        dnsNames:\n                          description: List of DNSNames that this solver will be used to solve. If specified and a match is found, a dnsNames selector will take precedence over a dnsZones selector. If multiple solvers match with the same dnsNames value, the solver with the most matching labels in matchLabels will be selected. If neither has more matches, the solver defined earlier in the list will be selected.\n                          type: array\n                          items:\n                            type: string\n                        dnsZones:\n                          description: List of DNSZones that this solver will be used to solve. The most specific DNS zone match specified here will take precedence over other DNS zone matches, so a solver specifying sys.example.com will be selected over one specifying example.com for the domain www.sys.example.com. If multiple solvers match with the same dnsZones value, the solver with the most matching labels in matchLabels will be selected. If neither has more matches, the solver defined earlier in the list will be selected.\n                          type: array\n                          items:\n                            type: string\n                        matchLabels:\n                          description: A label selector that is used to refine the set of certificate's that this challenge solver will apply to.\n                          type: object\n                          additionalProperties:\n                            type: string\n                token:\n                  description: The ACME challenge token for this challenge. This is the raw value returned from the ACME server.\n                  type: string\n                type:\n                  description: The type of ACME challenge this resource represents. One of \"HTTP-01\" or \"DNS-01\".\n                  type: string\n                  enum:\n                    - HTTP-01\n                    - DNS-01\n                url:\n                  description: The URL of the ACME Challenge resource for this challenge. This can be used to lookup details about the status of this challenge.\n                  type: string\n                wildcard:\n                  description: wildcard will be true if this challenge is for a wildcard identifier, for example '*.example.com'.\n                  type: boolean\n            status:\n              type: object\n              properties:\n                presented:\n                  description: presented will be set to true if the challenge values for this challenge are currently 'presented'. This *does not* imply the self check is passing. Only that the values have been 'submitted' for the appropriate challenge mechanism (i.e. the DNS01 TXT record has been presented, or the HTTP01 configuration has been configured).\n                  type: boolean\n                processing:\n                  description: Used to denote whether this challenge should be processed or not. This field will only be set to true by the 'scheduling' component. It will only be set to false by the 'challenges' controller, after the challenge has reached a final state or timed out. If this field is set to false, the challenge controller will not take any more action.\n                  type: boolean\n                reason:\n                  description: Contains human readable information on why the Challenge is in the current state.\n                  type: string\n                state:\n                  description: Contains the current 'state' of the challenge. If not set, the state of the challenge is unknown.\n                  type: string\n                  enum:\n                    - valid\n                    - ready\n                    - pending\n                    - processing\n                    - invalid\n                    - expired\n                    - errored\n      served: true\n      storage: true\n      subresources:\n        status: {}\n---\n# Source: cert-manager/templates/crds.yaml\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  name: certificaterequests.cert-manager.io\n  labels:\n    app: 'cert-manager'\n    app.kubernetes.io/name: 'cert-manager'\n    app.kubernetes.io/instance: 'cert-manager'\n    # Generated labels\n    app.kubernetes.io/version: \"v1.10.0\"\nspec:\n  group: cert-manager.io\n  names:\n    kind: CertificateRequest\n    listKind: CertificateRequestList\n    plural: certificaterequests\n    shortNames:\n      - cr\n      - crs\n    singular: certificaterequest\n    categories:\n      - cert-manager\n  scope: Namespaced\n  versions:\n    - name: v1\n      subresources:\n        status: {}\n      additionalPrinterColumns:\n        - jsonPath: .status.conditions[?(@.type==\"Approved\")].status\n          name: Approved\n          type: string\n        - jsonPath: .status.conditions[?(@.type==\"Denied\")].status\n          name: Denied\n          type: string\n        - jsonPath: .status.conditions[?(@.type==\"Ready\")].status\n          name: Ready\n          type: string\n        - jsonPath: .spec.issuerRef.name\n          name: Issuer\n          type: string\n        - jsonPath: .spec.username\n          name: Requestor\n          type: string\n        - jsonPath: .status.conditions[?(@.type==\"Ready\")].message\n          name: Status\n          priority: 1\n          type: string\n        - jsonPath: .metadata.creationTimestamp\n          description: CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n          name: Age\n          type: date\n      schema:\n        openAPIV3Schema:\n          description: \"A CertificateRequest is used to request a signed certificate from one of the configured issuers. \\n All fields within the CertificateRequest's `spec` are immutable after creation. A CertificateRequest will either succeed or fail, as denoted by its `status.state` field. \\n A CertificateRequest is a one-shot resource, meaning it represents a single point in time request for a certificate and cannot be re-used.\"\n          type: object\n          required:\n            - spec\n          properties:\n            apiVersion:\n              description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n              type: string\n            kind:\n              description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n              type: string\n            metadata:\n              type: object\n            spec:\n              description: Desired state of the CertificateRequest resource.\n              type: object\n              required:\n                - issuerRef\n                - request\n              properties:\n                duration:\n                  description: The requested 'duration' (i.e. lifetime) of the Certificate. This option may be ignored/overridden by some issuer types.\n                  type: string\n                extra:\n                  description: Extra contains extra attributes of the user that created the CertificateRequest. Populated by the cert-manager webhook on creation and immutable.\n                  type: object\n                  additionalProperties:\n                    type: array\n                    items:\n                      type: string\n                groups:\n                  description: Groups contains group membership of the user that created the CertificateRequest. Populated by the cert-manager webhook on creation and immutable.\n                  type: array\n                  items:\n                    type: string\n                  x-kubernetes-list-type: atomic\n                isCA:\n                  description: IsCA will request to mark the certificate as valid for certificate signing when submitting to the issuer. This will automatically add the `cert sign` usage to the list of `usages`.\n                  type: boolean\n                issuerRef:\n                  description: IssuerRef is a reference to the issuer for this CertificateRequest.  If the `kind` field is not set, or set to `Issuer`, an Issuer resource with the given name in the same namespace as the CertificateRequest will be used.  If the `kind` field is set to `ClusterIssuer`, a ClusterIssuer with the provided name will be used. The `name` field in this stanza is required at all times. The group field refers to the API group of the issuer which defaults to `cert-manager.io` if empty.\n                  type: object\n                  required:\n                    - name\n                  properties:\n                    group:\n                      description: Group of the resource being referred to.\n                      type: string\n                    kind:\n                      description: Kind of the resource being referred to.\n                      type: string\n                    name:\n                      description: Name of the resource being referred to.\n                      type: string\n                request:\n                  description: The PEM-encoded x509 certificate signing request to be submitted to the CA for signing.\n                  type: string\n                  format: byte\n                uid:\n                  description: UID contains the uid of the user that created the CertificateRequest. Populated by the cert-manager webhook on creation and immutable.\n                  type: string\n                usages:\n                  description: Usages is the set of x509 usages that are requested for the certificate. If usages are set they SHOULD be encoded inside the CSR spec Defaults to `digital signature` and `key encipherment` if not specified.\n                  type: array\n                  items:\n                    description: \"KeyUsage specifies valid usage contexts for keys. See: https://tools.ietf.org/html/rfc5280#section-4.2.1.3 https://tools.ietf.org/html/rfc5280#section-4.2.1.12 \\n Valid KeyUsage values are as follows: \\\"signing\\\", \\\"digital signature\\\", \\\"content commitment\\\", \\\"key encipherment\\\", \\\"key agreement\\\", \\\"data encipherment\\\", \\\"cert sign\\\", \\\"crl sign\\\", \\\"encipher only\\\", \\\"decipher only\\\", \\\"any\\\", \\\"server auth\\\", \\\"client auth\\\", \\\"code signing\\\", \\\"email protection\\\", \\\"s/mime\\\", \\\"ipsec end system\\\", \\\"ipsec tunnel\\\", \\\"ipsec user\\\", \\\"timestamping\\\", \\\"ocsp signing\\\", \\\"microsoft sgc\\\", \\\"netscape sgc\\\"\"\n                    type: string\n                    enum:\n                      - signing\n                      - digital signature\n                      - content commitment\n                      - key encipherment\n                      - key agreement\n                      - data encipherment\n                      - cert sign\n                      - crl sign\n                      - encipher only\n                      - decipher only\n                      - any\n                      - server auth\n                      - client auth\n                      - code signing\n                      - email protection\n                      - s/mime\n                      - ipsec end system\n                      - ipsec tunnel\n                      - ipsec user\n                      - timestamping\n                      - ocsp signing\n                      - microsoft sgc\n                      - netscape sgc\n                username:\n                  description: Username contains the name of the user that created the CertificateRequest. Populated by the cert-manager webhook on creation and immutable.\n                  type: string\n            status:\n              description: Status of the CertificateRequest. This is set and managed automatically.\n              type: object\n              properties:\n                ca:\n                  description: The PEM encoded x509 certificate of the signer, also known as the CA (Certificate Authority). This is set on a best-effort basis by different issuers. If not set, the CA is assumed to be unknown/not available.\n                  type: string\n                  format: byte\n                certificate:\n                  description: The PEM encoded x509 certificate resulting from the certificate signing request. If not set, the CertificateRequest has either not been completed or has failed. More information on failure can be found by checking the `conditions` field.\n                  type: string\n                  format: byte\n                conditions:\n                  description: List of status conditions to indicate the status of a CertificateRequest. Known condition types are `Ready` and `InvalidRequest`.\n                  type: array\n                  items:\n                    description: CertificateRequestCondition contains condition information for a CertificateRequest.\n                    type: object\n                    required:\n                      - status\n                      - type\n                    properties:\n                      lastTransitionTime:\n                        description: LastTransitionTime is the timestamp corresponding to the last status change of this condition.\n                        type: string\n                        format: date-time\n                      message:\n                        description: Message is a human readable description of the details of the last transition, complementing reason.\n                        type: string\n                      reason:\n                        description: Reason is a brief machine readable explanation for the condition's last transition.\n                        type: string\n                      status:\n                        description: Status of the condition, one of (`True`, `False`, `Unknown`).\n                        type: string\n                        enum:\n                          - \"True\"\n                          - \"False\"\n                          - Unknown\n                      type:\n                        description: Type of the condition, known values are (`Ready`, `InvalidRequest`, `Approved`, `Denied`).\n                        type: string\n                  x-kubernetes-list-map-keys:\n                    - type\n                  x-kubernetes-list-type: map\n                failureTime:\n                  description: FailureTime stores the time that this CertificateRequest failed. This is used to influence garbage collection and back-off.\n                  type: string\n                  format: date-time\n      served: true\n      storage: true\n---\n# Source: cert-manager/templates/crds.yaml\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  name: issuers.cert-manager.io\n  labels:\n    app: 'cert-manager'\n    app.kubernetes.io/name: 'cert-manager'\n    app.kubernetes.io/instance: 'cert-manager'\n    # Generated labels\n    app.kubernetes.io/version: \"v1.10.0\"\nspec:\n  group: cert-manager.io\n  names:\n    kind: Issuer\n    listKind: IssuerList\n    plural: issuers\n    singular: issuer\n    categories:\n      - cert-manager\n  scope: Namespaced\n  versions:\n    - name: v1\n      subresources:\n        status: {}\n      additionalPrinterColumns:\n        - jsonPath: .status.conditions[?(@.type==\"Ready\")].status\n          name: Ready\n          type: string\n        - jsonPath: .status.conditions[?(@.type==\"Ready\")].message\n          name: Status\n          priority: 1\n          type: string\n        - jsonPath: .metadata.creationTimestamp\n          description: CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n          name: Age\n          type: date\n      schema:\n        openAPIV3Schema:\n          description: An Issuer represents a certificate issuing authority which can be referenced as part of `issuerRef` fields. It is scoped to a single namespace and can therefore only be referenced by resources within the same namespace.\n          type: object\n          required:\n            - spec\n          properties:\n            apiVersion:\n              description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n              type: string\n            kind:\n              description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n              type: string\n            metadata:\n              type: object\n            spec:\n              description: Desired state of the Issuer resource.\n              type: object\n              properties:\n                acme:\n                  description: ACME configures this issuer to communicate with a RFC8555 (ACME) server to obtain signed x509 certificates.\n                  type: object\n                  required:\n                    - privateKeySecretRef\n                    - server\n                  properties:\n                    disableAccountKeyGeneration:\n                      description: Enables or disables generating a new ACME account key. If true, the Issuer resource will *not* request a new account but will expect the account key to be supplied via an existing secret. If false, the cert-manager system will generate a new ACME account key for the Issuer. Defaults to false.\n                      type: boolean\n                    email:\n                      description: Email is the email address to be associated with the ACME account. This field is optional, but it is strongly recommended to be set. It will be used to contact you in case of issues with your account or certificates, including expiry notification emails. This field may be updated after the account is initially registered.\n                      type: string\n                    enableDurationFeature:\n                      description: Enables requesting a Not After date on certificates that matches the duration of the certificate. This is not supported by all ACME servers like Let's Encrypt. If set to true when the ACME server does not support it it will create an error on the Order. Defaults to false.\n                      type: boolean\n                    externalAccountBinding:\n                      description: ExternalAccountBinding is a reference to a CA external account of the ACME server. If set, upon registration cert-manager will attempt to associate the given external account credentials with the registered ACME account.\n                      type: object\n                      required:\n                        - keyID\n                        - keySecretRef\n                      properties:\n                        keyAlgorithm:\n                          description: 'Deprecated: keyAlgorithm field exists for historical compatibility reasons and should not be used. The algorithm is now hardcoded to HS256 in golang/x/crypto/acme.'\n                          type: string\n                          enum:\n                            - HS256\n                            - HS384\n                            - HS512\n                        keyID:\n                          description: keyID is the ID of the CA key that the External Account is bound to.\n                          type: string\n                        keySecretRef:\n                          description: keySecretRef is a Secret Key Selector referencing a data item in a Kubernetes Secret which holds the symmetric MAC key of the External Account Binding. The `key` is the index string that is paired with the key data in the Secret and should not be confused with the key data itself, or indeed with the External Account Binding keyID above. The secret key stored in the Secret **must** be un-padded, base64 URL encoded data.\n                          type: object\n                          required:\n                            - name\n                          properties:\n                            key:\n                              description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                              type: string\n                            name:\n                              description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                              type: string\n                    preferredChain:\n                      description: 'PreferredChain is the chain to use if the ACME server outputs multiple. PreferredChain is no guarantee that this one gets delivered by the ACME endpoint. For example, for Let''s Encrypt''s DST crosssign you would use: \"DST Root CA X3\" or \"ISRG Root X1\" for the newer Let''s Encrypt root CA. This value picks the first certificate bundle in the ACME alternative chains that has a certificate with this value as its issuer''s CN'\n                      type: string\n                      maxLength: 64\n                    privateKeySecretRef:\n                      description: PrivateKey is the name of a Kubernetes Secret resource that will be used to store the automatically generated ACME account private key. Optionally, a `key` may be specified to select a specific entry within the named Secret resource. If `key` is not specified, a default of `tls.key` will be used.\n                      type: object\n                      required:\n                        - name\n                      properties:\n                        key:\n                          description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                          type: string\n                        name:\n                          description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                          type: string\n                    server:\n                      description: 'Server is the URL used to access the ACME server''s ''directory'' endpoint. For example, for Let''s Encrypt''s staging endpoint, you would use: \"https://acme-staging-v02.api.letsencrypt.org/directory\". Only ACME v2 endpoints (i.e. RFC 8555) are supported.'\n                      type: string\n                    skipTLSVerify:\n                      description: Enables or disables validation of the ACME server TLS certificate. If true, requests to the ACME server will not have their TLS certificate validated (i.e. insecure connections will be allowed). Only enable this option in development environments. The cert-manager system installed roots will be used to verify connections to the ACME server if this is false. Defaults to false.\n                      type: boolean\n                    solvers:\n                      description: 'Solvers is a list of challenge solvers that will be used to solve ACME challenges for the matching domains. Solver configurations must be provided in order to obtain certificates from an ACME server. For more information, see: https://cert-manager.io/docs/configuration/acme/'\n                      type: array\n                      items:\n                        description: An ACMEChallengeSolver describes how to solve ACME challenges for the issuer it is part of. A selector may be provided to use different solving strategies for different DNS names. Only one of HTTP01 or DNS01 must be provided.\n                        type: object\n                        properties:\n                          dns01:\n                            description: Configures cert-manager to attempt to complete authorizations by performing the DNS01 challenge flow.\n                            type: object\n                            properties:\n                              acmeDNS:\n                                description: Use the 'ACME DNS' (https://github.com/joohoi/acme-dns) API to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - accountSecretRef\n                                  - host\n                                properties:\n                                  accountSecretRef:\n                                    description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  host:\n                                    type: string\n                              akamai:\n                                description: Use the Akamai DNS zone management API to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - accessTokenSecretRef\n                                  - clientSecretSecretRef\n                                  - clientTokenSecretRef\n                                  - serviceConsumerDomain\n                                properties:\n                                  accessTokenSecretRef:\n                                    description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  clientSecretSecretRef:\n                                    description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  clientTokenSecretRef:\n                                    description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  serviceConsumerDomain:\n                                    type: string\n                              azureDNS:\n                                description: Use the Microsoft Azure DNS API to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - resourceGroupName\n                                  - subscriptionID\n                                properties:\n                                  clientID:\n                                    description: if both this and ClientSecret are left unset MSI will be used\n                                    type: string\n                                  clientSecretSecretRef:\n                                    description: if both this and ClientID are left unset MSI will be used\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  environment:\n                                    description: name of the Azure environment (default AzurePublicCloud)\n                                    type: string\n                                    enum:\n                                      - AzurePublicCloud\n                                      - AzureChinaCloud\n                                      - AzureGermanCloud\n                                      - AzureUSGovernmentCloud\n                                  hostedZoneName:\n                                    description: name of the DNS zone that should be used\n                                    type: string\n                                  managedIdentity:\n                                    description: managed identity configuration, can not be used at the same time as clientID, clientSecretSecretRef or tenantID\n                                    type: object\n                                    properties:\n                                      clientID:\n                                        description: client ID of the managed identity, can not be used at the same time as resourceID\n                                        type: string\n                                      resourceID:\n                                        description: resource ID of the managed identity, can not be used at the same time as clientID\n                                        type: string\n                                  resourceGroupName:\n                                    description: resource group the DNS zone is located in\n                                    type: string\n                                  subscriptionID:\n                                    description: ID of the Azure subscription\n                                    type: string\n                                  tenantID:\n                                    description: when specifying ClientID and ClientSecret then this field is also needed\n                                    type: string\n                              cloudDNS:\n                                description: Use the Google Cloud DNS API to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - project\n                                properties:\n                                  hostedZoneName:\n                                    description: HostedZoneName is an optional field that tells cert-manager in which Cloud DNS zone the challenge record has to be created. If left empty cert-manager will automatically choose a zone.\n                                    type: string\n                                  project:\n                                    type: string\n                                  serviceAccountSecretRef:\n                                    description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                              cloudflare:\n                                description: Use the Cloudflare API to manage DNS01 challenge records.\n                                type: object\n                                properties:\n                                  apiKeySecretRef:\n                                    description: 'API key to use to authenticate with Cloudflare. Note: using an API token to authenticate is now the recommended method as it allows greater control of permissions.'\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  apiTokenSecretRef:\n                                    description: API token used to authenticate with Cloudflare.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  email:\n                                    description: Email of the account, only required when using API key based authentication.\n                                    type: string\n                              cnameStrategy:\n                                description: CNAMEStrategy configures how the DNS01 provider should handle CNAME records when found in DNS zones.\n                                type: string\n                                enum:\n                                  - None\n                                  - Follow\n                              digitalocean:\n                                description: Use the DigitalOcean DNS API to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - tokenSecretRef\n                                properties:\n                                  tokenSecretRef:\n                                    description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                              rfc2136:\n                                description: Use RFC2136 (\"Dynamic Updates in the Domain Name System\") (https://datatracker.ietf.org/doc/rfc2136/) to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - nameserver\n                                properties:\n                                  nameserver:\n                                    description: The IP address or hostname of an authoritative DNS server supporting RFC2136 in the form host:port. If the host is an IPv6 address it must be enclosed in square brackets (e.g [2001:db8::1]) ; port is optional. This field is required.\n                                    type: string\n                                  tsigAlgorithm:\n                                    description: 'The TSIG Algorithm configured in the DNS supporting RFC2136. Used only when ``tsigSecretSecretRef`` and ``tsigKeyName`` are defined. Supported values are (case-insensitive): ``HMACMD5`` (default), ``HMACSHA1``, ``HMACSHA256`` or ``HMACSHA512``.'\n                                    type: string\n                                  tsigKeyName:\n                                    description: The TSIG Key name configured in the DNS. If ``tsigSecretSecretRef`` is defined, this field is required.\n                                    type: string\n                                  tsigSecretSecretRef:\n                                    description: The name of the secret containing the TSIG value. If ``tsigKeyName`` is defined, this field is required.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                              route53:\n                                description: Use the AWS Route53 API to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - region\n                                properties:\n                                  accessKeyID:\n                                    description: 'The AccessKeyID is used for authentication. Cannot be set when SecretAccessKeyID is set. If neither the Access Key nor Key ID are set, we fall-back to using env vars, shared credentials file or AWS Instance metadata, see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials'\n                                    type: string\n                                  accessKeyIDSecretRef:\n                                    description: 'The SecretAccessKey is used for authentication. If set, pull the AWS access key ID from a key within a Kubernetes Secret. Cannot be set when AccessKeyID is set. If neither the Access Key nor Key ID are set, we fall-back to using env vars, shared credentials file or AWS Instance metadata, see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials'\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  hostedZoneID:\n                                    description: If set, the provider will manage only this zone in Route53 and will not do an lookup using the route53:ListHostedZonesByName api call.\n                                    type: string\n                                  region:\n                                    description: Always set the region when using AccessKeyID and SecretAccessKey\n                                    type: string\n                                  role:\n                                    description: Role is a Role ARN which the Route53 provider will assume using either the explicit credentials AccessKeyID/SecretAccessKey or the inferred credentials from environment variables, shared credentials file or AWS Instance metadata\n                                    type: string\n                                  secretAccessKeySecretRef:\n                                    description: 'The SecretAccessKey is used for authentication. If neither the Access Key nor Key ID are set, we fall-back to using env vars, shared credentials file or AWS Instance metadata, see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials'\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                              webhook:\n                                description: Configure an external webhook based DNS01 challenge solver to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - groupName\n                                  - solverName\n                                properties:\n                                  config:\n                                    description: Additional configuration that should be passed to the webhook apiserver when challenges are processed. This can contain arbitrary JSON data. Secret values should not be specified in this stanza. If secret values are needed (e.g. credentials for a DNS service), you should use a SecretKeySelector to reference a Secret resource. For details on the schema of this field, consult the webhook provider implementation's documentation.\n                                    x-kubernetes-preserve-unknown-fields: true\n                                  groupName:\n                                    description: The API group name that should be used when POSTing ChallengePayload resources to the webhook apiserver. This should be the same as the GroupName specified in the webhook provider implementation.\n                                    type: string\n                                  solverName:\n                                    description: The name of the solver to use, as defined in the webhook provider implementation. This will typically be the name of the provider, e.g. 'cloudflare'.\n                                    type: string\n                          http01:\n                            description: Configures cert-manager to attempt to complete authorizations by performing the HTTP01 challenge flow. It is not possible to obtain certificates for wildcard domain names (e.g. `*.example.com`) using the HTTP01 challenge mechanism.\n                            type: object\n                            properties:\n                              gatewayHTTPRoute:\n                                description: The Gateway API is a sig-network community API that models service networking in Kubernetes (https://gateway-api.sigs.k8s.io/). The Gateway solver will create HTTPRoutes with the specified labels in the same namespace as the challenge. This solver is experimental, and fields / behaviour may change in the future.\n                                type: object\n                                properties:\n                                  labels:\n                                    description: Custom labels that will be applied to HTTPRoutes created by cert-manager while solving HTTP-01 challenges.\n                                    type: object\n                                    additionalProperties:\n                                      type: string\n                                  parentRefs:\n                                    description: 'When solving an HTTP-01 challenge, cert-manager creates an HTTPRoute. cert-manager needs to know which parentRefs should be used when creating the HTTPRoute. Usually, the parentRef references a Gateway. See: https://gateway-api.sigs.k8s.io/v1alpha2/api-types/httproute/#attaching-to-gateways'\n                                    type: array\n                                    items:\n                                      description: \"ParentReference identifies an API object (usually a Gateway) that can be considered a parent of this resource (usually a route). The only kind of parent resource with \\\"Core\\\" support is Gateway. This API may be extended in the future to support additional kinds of parent resources, such as HTTPRoute. \\n The API object must be valid in the cluster; the Group and Kind must be registered in the cluster for this reference to be valid.\"\n                                      type: object\n                                      required:\n                                        - name\n                                      properties:\n                                        group:\n                                          description: \"Group is the group of the referent. \\n Support: Core\"\n                                          type: string\n                                          default: gateway.networking.k8s.io\n                                          maxLength: 253\n                                          pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$\n                                        kind:\n                                          description: \"Kind is kind of the referent. \\n Support: Core (Gateway) \\n Support: Custom (Other Resources)\"\n                                          type: string\n                                          default: Gateway\n                                          maxLength: 63\n                                          minLength: 1\n                                          pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$\n                                        name:\n                                          description: \"Name is the name of the referent. \\n Support: Core\"\n                                          type: string\n                                          maxLength: 253\n                                          minLength: 1\n                                        namespace:\n                                          description: \"Namespace is the namespace of the referent. When unspecified (or empty string), this refers to the local namespace of the Route. \\n Support: Core\"\n                                          type: string\n                                          maxLength: 63\n                                          minLength: 1\n                                          pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$\n                                        port:\n                                          description: \"Port is the network port this Route targets. It can be interpreted differently based on the type of parent resource. \\n When the parent resource is a Gateway, this targets all listeners listening on the specified port that also support this kind of Route(and select this Route). It's not recommended to set `Port` unless the networking behaviors specified in a Route must apply to a specific port as opposed to a listener(s) whose port(s) may be changed. When both Port and SectionName are specified, the name and port of the selected listener must match both specified values. \\n Implementations MAY choose to support other parent resources. Implementations supporting other types of parent resources MUST clearly document how/if Port is interpreted. \\n For the purpose of status, an attachment is considered successful as long as the parent resource accepts it partially. For example, Gateway listeners can restrict which Routes can attach to them by Route kind, namespace, or hostname. If 1 of 2 Gateway listeners accept attachment from the referencing Route, the Route MUST be considered successfully attached. If no Gateway listeners accept attachment from this Route, the Route MUST be considered detached from the Gateway. \\n Support: Extended \\n <gateway:experimental>\"\n                                          type: integer\n                                          format: int32\n                                          maximum: 65535\n                                          minimum: 1\n                                        sectionName:\n                                          description: \"SectionName is the name of a section within the target resource. In the following resources, SectionName is interpreted as the following: \\n * Gateway: Listener Name. When both Port (experimental) and SectionName are specified, the name and port of the selected listener must match both specified values. \\n Implementations MAY choose to support attaching Routes to other resources. If that is the case, they MUST clearly document how SectionName is interpreted. \\n When unspecified (empty string), this will reference the entire resource. For the purpose of status, an attachment is considered successful if at least one section in the parent resource accepts it. For example, Gateway listeners can restrict which Routes can attach to them by Route kind, namespace, or hostname. If 1 of 2 Gateway listeners accept attachment from the referencing Route, the Route MUST be considered successfully attached. If no Gateway listeners accept attachment from this Route, the Route MUST be considered detached from the Gateway. \\n Support: Core\"\n                                          type: string\n                                          maxLength: 253\n                                          minLength: 1\n                                          pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$\n                                  serviceType:\n                                    description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP. If unset, defaults to NodePort.\n                                    type: string\n                              ingress:\n                                description: The ingress based HTTP01 challenge solver will solve challenges by creating or modifying Ingress resources in order to route requests for '/.well-known/acme-challenge/XYZ' to 'challenge solver' pods that are provisioned by cert-manager for each Challenge to be completed.\n                                type: object\n                                properties:\n                                  class:\n                                    description: The ingress class to use when creating Ingress resources to solve ACME challenges that use this challenge solver. Only one of 'class' or 'name' may be specified.\n                                    type: string\n                                  ingressTemplate:\n                                    description: Optional ingress template used to configure the ACME challenge solver ingress used for HTTP01 challenges.\n                                    type: object\n                                    properties:\n                                      metadata:\n                                        description: ObjectMeta overrides for the ingress used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.\n                                        type: object\n                                        properties:\n                                          annotations:\n                                            description: Annotations that should be added to the created ACME HTTP01 solver ingress.\n                                            type: object\n                                            additionalProperties:\n                                              type: string\n                                          labels:\n                                            description: Labels that should be added to the created ACME HTTP01 solver ingress.\n                                            type: object\n                                            additionalProperties:\n                                              type: string\n                                  name:\n                                    description: The name of the ingress resource that should have ACME challenge solving routes inserted into it in order to solve HTTP01 challenges. This is typically used in conjunction with ingress controllers like ingress-gce, which maintains a 1:1 mapping between external IPs and ingress resources.\n                                    type: string\n                                  podTemplate:\n                                    description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges.\n                                    type: object\n                                    properties:\n                                      metadata:\n                                        description: ObjectMeta overrides for the pod used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.\n                                        type: object\n                                        properties:\n                                          annotations:\n                                            description: Annotations that should be added to the create ACME HTTP01 solver pods.\n                                            type: object\n                                            additionalProperties:\n                                              type: string\n                                          labels:\n                                            description: Labels that should be added to the created ACME HTTP01 solver pods.\n                                            type: object\n                                            additionalProperties:\n                                              type: string\n                                      spec:\n                                        description: PodSpec defines overrides for the HTTP01 challenge solver pod. Only the 'priorityClassName', 'nodeSelector', 'affinity', 'serviceAccountName' and 'tolerations' fields are supported currently. All other fields will be ignored.\n                                        type: object\n                                        properties:\n                                          affinity:\n                                            description: If specified, the pod's scheduling constraints\n                                            type: object\n                                            properties:\n                                              nodeAffinity:\n                                                description: Describes node affinity scheduling rules for the pod.\n                                                type: object\n                                                properties:\n                                                  preferredDuringSchedulingIgnoredDuringExecution:\n                                                    description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n                                                    type: array\n                                                    items:\n                                                      description: An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\n                                                      type: object\n                                                      required:\n                                                        - preference\n                                                        - weight\n                                                      properties:\n                                                        preference:\n                                                          description: A node selector term, associated with the corresponding weight.\n                                                          type: object\n                                                          properties:\n                                                            matchExpressions:\n                                                              description: A list of node selector requirements by node's labels.\n                                                              type: array\n                                                              items:\n                                                                description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: The label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                                    type: string\n                                                                  values:\n                                                                    description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                            matchFields:\n                                                              description: A list of node selector requirements by node's fields.\n                                                              type: array\n                                                              items:\n                                                                description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: The label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                                    type: string\n                                                                  values:\n                                                                    description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                          x-kubernetes-map-type: atomic\n                                                        weight:\n                                                          description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\n                                                          type: integer\n                                                          format: int32\n                                                  requiredDuringSchedulingIgnoredDuringExecution:\n                                                    description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.\n                                                    type: object\n                                                    required:\n                                                      - nodeSelectorTerms\n                                                    properties:\n                                                      nodeSelectorTerms:\n                                                        description: Required. A list of node selector terms. The terms are ORed.\n                                                        type: array\n                                                        items:\n                                                          description: A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\n                                                          type: object\n                                                          properties:\n                                                            matchExpressions:\n                                                              description: A list of node selector requirements by node's labels.\n                                                              type: array\n                                                              items:\n                                                                description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: The label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                                    type: string\n                                                                  values:\n                                                                    description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                            matchFields:\n                                                              description: A list of node selector requirements by node's fields.\n                                                              type: array\n                                                              items:\n                                                                description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: The label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                                    type: string\n                                                                  values:\n                                                                    description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                          x-kubernetes-map-type: atomic\n                                                    x-kubernetes-map-type: atomic\n                                              podAffinity:\n                                                description: Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\n                                                type: object\n                                                properties:\n                                                  preferredDuringSchedulingIgnoredDuringExecution:\n                                                    description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n                                                    type: array\n                                                    items:\n                                                      description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\n                                                      type: object\n                                                      required:\n                                                        - podAffinityTerm\n                                                        - weight\n                                                      properties:\n                                                        podAffinityTerm:\n                                                          description: Required. A pod affinity term, associated with the corresponding weight.\n                                                          type: object\n                                                          required:\n                                                            - topologyKey\n                                                          properties:\n                                                            labelSelector:\n                                                              description: A label query over a set of resources, in this case pods.\n                                                              type: object\n                                                              properties:\n                                                                matchExpressions:\n                                                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                                  type: array\n                                                                  items:\n                                                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                    type: object\n                                                                    required:\n                                                                      - key\n                                                                      - operator\n                                                                    properties:\n                                                                      key:\n                                                                        description: key is the label key that the selector applies to.\n                                                                        type: string\n                                                                      operator:\n                                                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                        type: string\n                                                                      values:\n                                                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                        type: array\n                                                                        items:\n                                                                          type: string\n                                                                matchLabels:\n                                                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                                  type: object\n                                                                  additionalProperties:\n                                                                    type: string\n                                                              x-kubernetes-map-type: atomic\n                                                            namespaceSelector:\n                                                              description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                                                              type: object\n                                                              properties:\n                                                                matchExpressions:\n                                                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                                  type: array\n                                                                  items:\n                                                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                    type: object\n                                                                    required:\n                                                                      - key\n                                                                      - operator\n                                                                    properties:\n                                                                      key:\n                                                                        description: key is the label key that the selector applies to.\n                                                                        type: string\n                                                                      operator:\n                                                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                        type: string\n                                                                      values:\n                                                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                        type: array\n                                                                        items:\n                                                                          type: string\n                                                                matchLabels:\n                                                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                                  type: object\n                                                                  additionalProperties:\n                                                                    type: string\n                                                              x-kubernetes-map-type: atomic\n                                                            namespaces:\n                                                              description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                                              type: array\n                                                              items:\n                                                                type: string\n                                                            topologyKey:\n                                                              description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                                                              type: string\n                                                        weight:\n                                                          description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.\n                                                          type: integer\n                                                          format: int32\n                                                  requiredDuringSchedulingIgnoredDuringExecution:\n                                                    description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n                                                    type: array\n                                                    items:\n                                                      description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running\n                                                      type: object\n                                                      required:\n                                                        - topologyKey\n                                                      properties:\n                                                        labelSelector:\n                                                          description: A label query over a set of resources, in this case pods.\n                                                          type: object\n                                                          properties:\n                                                            matchExpressions:\n                                                              description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                              type: array\n                                                              items:\n                                                                description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: key is the label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                    type: string\n                                                                  values:\n                                                                    description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                            matchLabels:\n                                                              description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                              type: object\n                                                              additionalProperties:\n                                                                type: string\n                                                          x-kubernetes-map-type: atomic\n                                                        namespaceSelector:\n                                                          description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                                                          type: object\n                                                          properties:\n                                                            matchExpressions:\n                                                              description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                              type: array\n                                                              items:\n                                                                description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: key is the label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                    type: string\n                                                                  values:\n                                                                    description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                            matchLabels:\n                                                              description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                              type: object\n                                                              additionalProperties:\n                                                                type: string\n                                                          x-kubernetes-map-type: atomic\n                                                        namespaces:\n                                                          description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                                          type: array\n                                                          items:\n                                                            type: string\n                                                        topologyKey:\n                                                          description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                                                          type: string\n                                              podAntiAffinity:\n                                                description: Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\n                                                type: object\n                                                properties:\n                                                  preferredDuringSchedulingIgnoredDuringExecution:\n                                                    description: The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n                                                    type: array\n                                                    items:\n                                                      description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\n                                                      type: object\n                                                      required:\n                                                        - podAffinityTerm\n                                                        - weight\n                                                      properties:\n                                                        podAffinityTerm:\n                                                          description: Required. A pod affinity term, associated with the corresponding weight.\n                                                          type: object\n                                                          required:\n                                                            - topologyKey\n                                                          properties:\n                                                            labelSelector:\n                                                              description: A label query over a set of resources, in this case pods.\n                                                              type: object\n                                                              properties:\n                                                                matchExpressions:\n                                                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                                  type: array\n                                                                  items:\n                                                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                    type: object\n                                                                    required:\n                                                                      - key\n                                                                      - operator\n                                                                    properties:\n                                                                      key:\n                                                                        description: key is the label key that the selector applies to.\n                                                                        type: string\n                                                                      operator:\n                                                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                        type: string\n                                                                      values:\n                                                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                        type: array\n                                                                        items:\n                                                                          type: string\n                                                                matchLabels:\n                                                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                                  type: object\n                                                                  additionalProperties:\n                                                                    type: string\n                                                              x-kubernetes-map-type: atomic\n                                                            namespaceSelector:\n                                                              description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                                                              type: object\n                                                              properties:\n                                                                matchExpressions:\n                                                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                                  type: array\n                                                                  items:\n                                                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                    type: object\n                                                                    required:\n                                                                      - key\n                                                                      - operator\n                                                                    properties:\n                                                                      key:\n                                                                        description: key is the label key that the selector applies to.\n                                                                        type: string\n                                                                      operator:\n                                                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                        type: string\n                                                                      values:\n                                                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                        type: array\n                                                                        items:\n                                                                          type: string\n                                                                matchLabels:\n                                                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                                  type: object\n                                                                  additionalProperties:\n                                                                    type: string\n                                                              x-kubernetes-map-type: atomic\n                                                            namespaces:\n                                                              description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                                              type: array\n                                                              items:\n                                                                type: string\n                                                            topologyKey:\n                                                              description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                                                              type: string\n                                                        weight:\n                                                          description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.\n                                                          type: integer\n                                                          format: int32\n                                                  requiredDuringSchedulingIgnoredDuringExecution:\n                                                    description: If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n                                                    type: array\n                                                    items:\n                                                      description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running\n                                                      type: object\n                                                      required:\n                                                        - topologyKey\n                                                      properties:\n                                                        labelSelector:\n                                                          description: A label query over a set of resources, in this case pods.\n                                                          type: object\n                                                          properties:\n                                                            matchExpressions:\n                                                              description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                              type: array\n                                                              items:\n                                                                description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: key is the label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                    type: string\n                                                                  values:\n                                                                    description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                            matchLabels:\n                                                              description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                              type: object\n                                                              additionalProperties:\n                                                                type: string\n                                                          x-kubernetes-map-type: atomic\n                                                        namespaceSelector:\n                                                          description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                                                          type: object\n                                                          properties:\n                                                            matchExpressions:\n                                                              description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                              type: array\n                                                              items:\n                                                                description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: key is the label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                    type: string\n                                                                  values:\n                                                                    description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                            matchLabels:\n                                                              description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                              type: object\n                                                              additionalProperties:\n                                                                type: string\n                                                          x-kubernetes-map-type: atomic\n                                                        namespaces:\n                                                          description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                                          type: array\n                                                          items:\n                                                            type: string\n                                                        topologyKey:\n                                                          description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                                                          type: string\n                                          nodeSelector:\n                                            description: 'NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node''s labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/'\n                                            type: object\n                                            additionalProperties:\n                                              type: string\n                                          priorityClassName:\n                                            description: If specified, the pod's priorityClassName.\n                                            type: string\n                                          serviceAccountName:\n                                            description: If specified, the pod's service account\n                                            type: string\n                                          tolerations:\n                                            description: If specified, the pod's tolerations.\n                                            type: array\n                                            items:\n                                              description: The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.\n                                              type: object\n                                              properties:\n                                                effect:\n                                                  description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\n                                                  type: string\n                                                key:\n                                                  description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.\n                                                  type: string\n                                                operator:\n                                                  description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.\n                                                  type: string\n                                                tolerationSeconds:\n                                                  description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.\n                                                  type: integer\n                                                  format: int64\n                                                value:\n                                                  description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.\n                                                  type: string\n                                  serviceType:\n                                    description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP. If unset, defaults to NodePort.\n                                    type: string\n                          selector:\n                            description: Selector selects a set of DNSNames on the Certificate resource that should be solved using this challenge solver. If not specified, the solver will be treated as the 'default' solver with the lowest priority, i.e. if any other solver has a more specific match, it will be used instead.\n                            type: object\n                            properties:\n                              dnsNames:\n                                description: List of DNSNames that this solver will be used to solve. If specified and a match is found, a dnsNames selector will take precedence over a dnsZones selector. If multiple solvers match with the same dnsNames value, the solver with the most matching labels in matchLabels will be selected. If neither has more matches, the solver defined earlier in the list will be selected.\n                                type: array\n                                items:\n                                  type: string\n                              dnsZones:\n                                description: List of DNSZones that this solver will be used to solve. The most specific DNS zone match specified here will take precedence over other DNS zone matches, so a solver specifying sys.example.com will be selected over one specifying example.com for the domain www.sys.example.com. If multiple solvers match with the same dnsZones value, the solver with the most matching labels in matchLabels will be selected. If neither has more matches, the solver defined earlier in the list will be selected.\n                                type: array\n                                items:\n                                  type: string\n                              matchLabels:\n                                description: A label selector that is used to refine the set of certificate's that this challenge solver will apply to.\n                                type: object\n                                additionalProperties:\n                                  type: string\n                ca:\n                  description: CA configures this issuer to sign certificates using a signing CA keypair stored in a Secret resource. This is used to build internal PKIs that are managed by cert-manager.\n                  type: object\n                  required:\n                    - secretName\n                  properties:\n                    crlDistributionPoints:\n                      description: The CRL distribution points is an X.509 v3 certificate extension which identifies the location of the CRL from which the revocation of this certificate can be checked. If not set, certificates will be issued without distribution points set.\n                      type: array\n                      items:\n                        type: string\n                    ocspServers:\n                      description: The OCSP server list is an X.509 v3 extension that defines a list of URLs of OCSP responders. The OCSP responders can be queried for the revocation status of an issued certificate. If not set, the certificate will be issued with no OCSP servers set. For example, an OCSP server URL could be \"http://ocsp.int-x3.letsencrypt.org\".\n                      type: array\n                      items:\n                        type: string\n                    secretName:\n                      description: SecretName is the name of the secret used to sign Certificates issued by this Issuer.\n                      type: string\n                selfSigned:\n                  description: SelfSigned configures this issuer to 'self sign' certificates using the private key used to create the CertificateRequest object.\n                  type: object\n                  properties:\n                    crlDistributionPoints:\n                      description: The CRL distribution points is an X.509 v3 certificate extension which identifies the location of the CRL from which the revocation of this certificate can be checked. If not set certificate will be issued without CDP. Values are strings.\n                      type: array\n                      items:\n                        type: string\n                vault:\n                  description: Vault configures this issuer to sign certificates using a HashiCorp Vault PKI backend.\n                  type: object\n                  required:\n                    - auth\n                    - path\n                    - server\n                  properties:\n                    auth:\n                      description: Auth configures how cert-manager authenticates with the Vault server.\n                      type: object\n                      properties:\n                        appRole:\n                          description: AppRole authenticates with Vault using the App Role auth mechanism, with the role and secret stored in a Kubernetes Secret resource.\n                          type: object\n                          required:\n                            - path\n                            - roleId\n                            - secretRef\n                          properties:\n                            path:\n                              description: 'Path where the App Role authentication backend is mounted in Vault, e.g: \"approle\"'\n                              type: string\n                            roleId:\n                              description: RoleID configured in the App Role authentication backend when setting up the authentication backend in Vault.\n                              type: string\n                            secretRef:\n                              description: Reference to a key in a Secret that contains the App Role secret used to authenticate with Vault. The `key` field must be specified and denotes which entry within the Secret resource is used as the app role secret.\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                        kubernetes:\n                          description: Kubernetes authenticates with Vault by passing the ServiceAccount token stored in the named Secret resource to the Vault server.\n                          type: object\n                          required:\n                            - role\n                            - secretRef\n                          properties:\n                            mountPath:\n                              description: The Vault mountPath here is the mount path to use when authenticating with Vault. For example, setting a value to `/v1/auth/foo`, will use the path `/v1/auth/foo/login` to authenticate with Vault. If unspecified, the default value \"/v1/auth/kubernetes\" will be used.\n                              type: string\n                            role:\n                              description: A required field containing the Vault Role to assume. A Role binds a Kubernetes ServiceAccount with a set of Vault policies.\n                              type: string\n                            secretRef:\n                              description: The required Secret field containing a Kubernetes ServiceAccount JWT used for authenticating with Vault. Use of 'ambient credentials' is not supported.\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                        tokenSecretRef:\n                          description: TokenSecretRef authenticates with Vault by presenting a token.\n                          type: object\n                          required:\n                            - name\n                          properties:\n                            key:\n                              description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                              type: string\n                            name:\n                              description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                              type: string\n                    caBundle:\n                      description: PEM-encoded CA bundle (base64-encoded) used to validate Vault server certificate. Only used if the Server URL is using HTTPS protocol. This parameter is ignored for plain HTTP protocol connection. If not set the system root certificates are used to validate the TLS connection. Mutually exclusive with CABundleSecretRef. If neither CABundle nor CABundleSecretRef are defined, the cert-manager controller system root certificates are used to validate the TLS connection.\n                      type: string\n                      format: byte\n                    caBundleSecretRef:\n                      description: CABundleSecretRef is a reference to a Secret which contains the CABundle which will be used when connecting to Vault when using HTTPS. Mutually exclusive with CABundle. If neither CABundleSecretRef nor CABundle are defined, the cert-manager controller system root certificates are used to validate the TLS connection. If no key for the Secret is specified, cert-manager will default to 'ca.crt'.\n                      type: object\n                      required:\n                        - name\n                      properties:\n                        key:\n                          description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                          type: string\n                        name:\n                          description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                          type: string\n                    namespace:\n                      description: 'Name of the vault namespace. Namespaces is a set of features within Vault Enterprise that allows Vault environments to support Secure Multi-tenancy. e.g: \"ns1\" More about namespaces can be found here https://www.vaultproject.io/docs/enterprise/namespaces'\n                      type: string\n                    path:\n                      description: 'Path is the mount path of the Vault PKI backend''s `sign` endpoint, e.g: \"my_pki_mount/sign/my-role-name\".'\n                      type: string\n                    server:\n                      description: 'Server is the connection address for the Vault server, e.g: \"https://vault.example.com:8200\".'\n                      type: string\n                venafi:\n                  description: Venafi configures this issuer to sign certificates using a Venafi TPP or Venafi Cloud policy zone.\n                  type: object\n                  required:\n                    - zone\n                  properties:\n                    cloud:\n                      description: Cloud specifies the Venafi cloud configuration settings. Only one of TPP or Cloud may be specified.\n                      type: object\n                      required:\n                        - apiTokenSecretRef\n                      properties:\n                        apiTokenSecretRef:\n                          description: APITokenSecretRef is a secret key selector for the Venafi Cloud API token.\n                          type: object\n                          required:\n                            - name\n                          properties:\n                            key:\n                              description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                              type: string\n                            name:\n                              description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                              type: string\n                        url:\n                          description: URL is the base URL for Venafi Cloud. Defaults to \"https://api.venafi.cloud/v1\".\n                          type: string\n                    tpp:\n                      description: TPP specifies Trust Protection Platform configuration settings. Only one of TPP or Cloud may be specified.\n                      type: object\n                      required:\n                        - credentialsRef\n                        - url\n                      properties:\n                        caBundle:\n                          description: CABundle is a PEM encoded TLS certificate to use to verify connections to the TPP instance. If specified, system roots will not be used and the issuing CA for the TPP instance must be verifiable using the provided root. If not specified, the connection will be verified using the cert-manager system root certificates.\n                          type: string\n                          format: byte\n                        credentialsRef:\n                          description: CredentialsRef is a reference to a Secret containing the username and password for the TPP server. The secret must contain two keys, 'username' and 'password'.\n                          type: object\n                          required:\n                            - name\n                          properties:\n                            name:\n                              description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                              type: string\n                        url:\n                          description: 'URL is the base URL for the vedsdk endpoint of the Venafi TPP instance, for example: \"https://tpp.example.com/vedsdk\".'\n                          type: string\n                    zone:\n                      description: Zone is the Venafi Policy Zone to use for this issuer. All requests made to the Venafi platform will be restricted by the named zone policy. This field is required.\n                      type: string\n            status:\n              description: Status of the Issuer. This is set and managed automatically.\n              type: object\n              properties:\n                acme:\n                  description: ACME specific status options. This field should only be set if the Issuer is configured to use an ACME server to issue certificates.\n                  type: object\n                  properties:\n                    lastRegisteredEmail:\n                      description: LastRegisteredEmail is the email associated with the latest registered ACME account, in order to track changes made to registered account associated with the  Issuer\n                      type: string\n                    uri:\n                      description: URI is the unique account identifier, which can also be used to retrieve account details from the CA\n                      type: string\n                conditions:\n                  description: List of status conditions to indicate the status of a CertificateRequest. Known condition types are `Ready`.\n                  type: array\n                  items:\n                    description: IssuerCondition contains condition information for an Issuer.\n                    type: object\n                    required:\n                      - status\n                      - type\n                    properties:\n                      lastTransitionTime:\n                        description: LastTransitionTime is the timestamp corresponding to the last status change of this condition.\n                        type: string\n                        format: date-time\n                      message:\n                        description: Message is a human readable description of the details of the last transition, complementing reason.\n                        type: string\n                      observedGeneration:\n                        description: If set, this represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.condition[x].observedGeneration is 9, the condition is out of date with respect to the current state of the Issuer.\n                        type: integer\n                        format: int64\n                      reason:\n                        description: Reason is a brief machine readable explanation for the condition's last transition.\n                        type: string\n                      status:\n                        description: Status of the condition, one of (`True`, `False`, `Unknown`).\n                        type: string\n                        enum:\n                          - \"True\"\n                          - \"False\"\n                          - Unknown\n                      type:\n                        description: Type of the condition, known values are (`Ready`).\n                        type: string\n                  x-kubernetes-list-map-keys:\n                    - type\n                  x-kubernetes-list-type: map\n      served: true\n      storage: true\n---\n# Source: cert-manager/templates/crds.yaml\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  name: certificates.cert-manager.io\n  labels:\n    app: 'cert-manager'\n    app.kubernetes.io/name: 'cert-manager'\n    app.kubernetes.io/instance: 'cert-manager'\n    # Generated labels\n    app.kubernetes.io/version: \"v1.10.0\"\nspec:\n  group: cert-manager.io\n  names:\n    kind: Certificate\n    listKind: CertificateList\n    plural: certificates\n    shortNames:\n      - cert\n      - certs\n    singular: certificate\n    categories:\n      - cert-manager\n  scope: Namespaced\n  versions:\n    - name: v1\n      subresources:\n        status: {}\n      additionalPrinterColumns:\n        - jsonPath: .status.conditions[?(@.type==\"Ready\")].status\n          name: Ready\n          type: string\n        - jsonPath: .spec.secretName\n          name: Secret\n          type: string\n        - jsonPath: .spec.issuerRef.name\n          name: Issuer\n          priority: 1\n          type: string\n        - jsonPath: .status.conditions[?(@.type==\"Ready\")].message\n          name: Status\n          priority: 1\n          type: string\n        - jsonPath: .metadata.creationTimestamp\n          description: CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n          name: Age\n          type: date\n      schema:\n        openAPIV3Schema:\n          description: \"A Certificate resource should be created to ensure an up to date and signed x509 certificate is stored in the Kubernetes Secret resource named in `spec.secretName`. \\n The stored certificate will be renewed before it expires (as configured by `spec.renewBefore`).\"\n          type: object\n          required:\n            - spec\n          properties:\n            apiVersion:\n              description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n              type: string\n            kind:\n              description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n              type: string\n            metadata:\n              type: object\n            spec:\n              description: Desired state of the Certificate resource.\n              type: object\n              required:\n                - issuerRef\n                - secretName\n              properties:\n                additionalOutputFormats:\n                  description: AdditionalOutputFormats defines extra output formats of the private key and signed certificate chain to be written to this Certificate's target Secret. This is an Alpha Feature and is only enabled with the `--feature-gates=AdditionalCertificateOutputFormats=true` option on both the controller and webhook components.\n                  type: array\n                  items:\n                    description: CertificateAdditionalOutputFormat defines an additional output format of a Certificate resource. These contain supplementary data formats of the signed certificate chain and paired private key.\n                    type: object\n                    required:\n                      - type\n                    properties:\n                      type:\n                        description: Type is the name of the format type that should be written to the Certificate's target Secret.\n                        type: string\n                        enum:\n                          - DER\n                          - CombinedPEM\n                commonName:\n                  description: 'CommonName is a common name to be used on the Certificate. The CommonName should have a length of 64 characters or fewer to avoid generating invalid CSRs. This value is ignored by TLS clients when any subject alt name is set. This is x509 behaviour: https://tools.ietf.org/html/rfc6125#section-6.4.4'\n                  type: string\n                dnsNames:\n                  description: DNSNames is a list of DNS subjectAltNames to be set on the Certificate.\n                  type: array\n                  items:\n                    type: string\n                duration:\n                  description: The requested 'duration' (i.e. lifetime) of the Certificate. This option may be ignored/overridden by some issuer types. If unset this defaults to 90 days. Certificate will be renewed either 2/3 through its duration or `renewBefore` period before its expiry, whichever is later. Minimum accepted duration is 1 hour. Value must be in units accepted by Go time.ParseDuration https://golang.org/pkg/time/#ParseDuration\n                  type: string\n                emailAddresses:\n                  description: EmailAddresses is a list of email subjectAltNames to be set on the Certificate.\n                  type: array\n                  items:\n                    type: string\n                encodeUsagesInRequest:\n                  description: EncodeUsagesInRequest controls whether key usages should be present in the CertificateRequest\n                  type: boolean\n                ipAddresses:\n                  description: IPAddresses is a list of IP address subjectAltNames to be set on the Certificate.\n                  type: array\n                  items:\n                    type: string\n                isCA:\n                  description: IsCA will mark this Certificate as valid for certificate signing. This will automatically add the `cert sign` usage to the list of `usages`.\n                  type: boolean\n                issuerRef:\n                  description: IssuerRef is a reference to the issuer for this certificate. If the `kind` field is not set, or set to `Issuer`, an Issuer resource with the given name in the same namespace as the Certificate will be used. If the `kind` field is set to `ClusterIssuer`, a ClusterIssuer with the provided name will be used. The `name` field in this stanza is required at all times.\n                  type: object\n                  required:\n                    - name\n                  properties:\n                    group:\n                      description: Group of the resource being referred to.\n                      type: string\n                    kind:\n                      description: Kind of the resource being referred to.\n                      type: string\n                    name:\n                      description: Name of the resource being referred to.\n                      type: string\n                keystores:\n                  description: Keystores configures additional keystore output formats stored in the `secretName` Secret resource.\n                  type: object\n                  properties:\n                    jks:\n                      description: JKS configures options for storing a JKS keystore in the `spec.secretName` Secret resource.\n                      type: object\n                      required:\n                        - create\n                        - passwordSecretRef\n                      properties:\n                        create:\n                          description: Create enables JKS keystore creation for the Certificate. If true, a file named `keystore.jks` will be created in the target Secret resource, encrypted using the password stored in `passwordSecretRef`. The keystore file will only be updated upon re-issuance. A file named `truststore.jks` will also be created in the target Secret resource, encrypted using the password stored in `passwordSecretRef` containing the issuing Certificate Authority\n                          type: boolean\n                        passwordSecretRef:\n                          description: PasswordSecretRef is a reference to a key in a Secret resource containing the password used to encrypt the JKS keystore.\n                          type: object\n                          required:\n                            - name\n                          properties:\n                            key:\n                              description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                              type: string\n                            name:\n                              description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                              type: string\n                    pkcs12:\n                      description: PKCS12 configures options for storing a PKCS12 keystore in the `spec.secretName` Secret resource.\n                      type: object\n                      required:\n                        - create\n                        - passwordSecretRef\n                      properties:\n                        create:\n                          description: Create enables PKCS12 keystore creation for the Certificate. If true, a file named `keystore.p12` will be created in the target Secret resource, encrypted using the password stored in `passwordSecretRef`. The keystore file will only be updated upon re-issuance. A file named `truststore.p12` will also be created in the target Secret resource, encrypted using the password stored in `passwordSecretRef` containing the issuing Certificate Authority\n                          type: boolean\n                        passwordSecretRef:\n                          description: PasswordSecretRef is a reference to a key in a Secret resource containing the password used to encrypt the PKCS12 keystore.\n                          type: object\n                          required:\n                            - name\n                          properties:\n                            key:\n                              description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                              type: string\n                            name:\n                              description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                              type: string\n                literalSubject:\n                  description: LiteralSubject is an LDAP formatted string that represents the [X.509 Subject field](https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6). Use this *instead* of the Subject field if you need to ensure the correct ordering of the RDN sequence, such as when issuing certs for LDAP authentication. See https://github.com/cert-manager/cert-manager/issues/3203, https://github.com/cert-manager/cert-manager/issues/4424. This field is alpha level and is only supported by cert-manager installations where LiteralCertificateSubject feature gate is enabled on both cert-manager controller and webhook.\n                  type: string\n                privateKey:\n                  description: Options to control private keys used for the Certificate.\n                  type: object\n                  properties:\n                    algorithm:\n                      description: Algorithm is the private key algorithm of the corresponding private key for this certificate. If provided, allowed values are either `RSA`,`Ed25519` or `ECDSA` If `algorithm` is specified and `size` is not provided, key size of 256 will be used for `ECDSA` key algorithm and key size of 2048 will be used for `RSA` key algorithm. key size is ignored when using the `Ed25519` key algorithm.\n                      type: string\n                      enum:\n                        - RSA\n                        - ECDSA\n                        - Ed25519\n                    encoding:\n                      description: The private key cryptography standards (PKCS) encoding for this certificate's private key to be encoded in. If provided, allowed values are `PKCS1` and `PKCS8` standing for PKCS#1 and PKCS#8, respectively. Defaults to `PKCS1` if not specified.\n                      type: string\n                      enum:\n                        - PKCS1\n                        - PKCS8\n                    rotationPolicy:\n                      description: RotationPolicy controls how private keys should be regenerated when a re-issuance is being processed. If set to Never, a private key will only be generated if one does not already exist in the target `spec.secretName`. If one does exists but it does not have the correct algorithm or size, a warning will be raised to await user intervention. If set to Always, a private key matching the specified requirements will be generated whenever a re-issuance occurs. Default is 'Never' for backward compatibility.\n                      type: string\n                      enum:\n                        - Never\n                        - Always\n                    size:\n                      description: Size is the key bit size of the corresponding private key for this certificate. If `algorithm` is set to `RSA`, valid values are `2048`, `4096` or `8192`, and will default to `2048` if not specified. If `algorithm` is set to `ECDSA`, valid values are `256`, `384` or `521`, and will default to `256` if not specified. If `algorithm` is set to `Ed25519`, Size is ignored. No other values are allowed.\n                      type: integer\n                renewBefore:\n                  description: How long before the currently issued certificate's expiry cert-manager should renew the certificate. The default is 2/3 of the issued certificate's duration. Minimum accepted value is 5 minutes. Value must be in units accepted by Go time.ParseDuration https://golang.org/pkg/time/#ParseDuration\n                  type: string\n                revisionHistoryLimit:\n                  description: revisionHistoryLimit is the maximum number of CertificateRequest revisions that are maintained in the Certificate's history. Each revision represents a single `CertificateRequest` created by this Certificate, either when it was created, renewed, or Spec was changed. Revisions will be removed by oldest first if the number of revisions exceeds this number. If set, revisionHistoryLimit must be a value of `1` or greater. If unset (`nil`), revisions will not be garbage collected. Default value is `nil`.\n                  type: integer\n                  format: int32\n                secretName:\n                  description: SecretName is the name of the secret resource that will be automatically created and managed by this Certificate resource. It will be populated with a private key and certificate, signed by the denoted issuer.\n                  type: string\n                secretTemplate:\n                  description: SecretTemplate defines annotations and labels to be copied to the Certificate's Secret. Labels and annotations on the Secret will be changed as they appear on the SecretTemplate when added or removed. SecretTemplate annotations are added in conjunction with, and cannot overwrite, the base set of annotations cert-manager sets on the Certificate's Secret.\n                  type: object\n                  properties:\n                    annotations:\n                      description: Annotations is a key value map to be copied to the target Kubernetes Secret.\n                      type: object\n                      additionalProperties:\n                        type: string\n                    labels:\n                      description: Labels is a key value map to be copied to the target Kubernetes Secret.\n                      type: object\n                      additionalProperties:\n                        type: string\n                subject:\n                  description: Full X509 name specification (https://golang.org/pkg/crypto/x509/pkix/#Name).\n                  type: object\n                  properties:\n                    countries:\n                      description: Countries to be used on the Certificate.\n                      type: array\n                      items:\n                        type: string\n                    localities:\n                      description: Cities to be used on the Certificate.\n                      type: array\n                      items:\n                        type: string\n                    organizationalUnits:\n                      description: Organizational Units to be used on the Certificate.\n                      type: array\n                      items:\n                        type: string\n                    organizations:\n                      description: Organizations to be used on the Certificate.\n                      type: array\n                      items:\n                        type: string\n                    postalCodes:\n                      description: Postal codes to be used on the Certificate.\n                      type: array\n                      items:\n                        type: string\n                    provinces:\n                      description: State/Provinces to be used on the Certificate.\n                      type: array\n                      items:\n                        type: string\n                    serialNumber:\n                      description: Serial number to be used on the Certificate.\n                      type: string\n                    streetAddresses:\n                      description: Street addresses to be used on the Certificate.\n                      type: array\n                      items:\n                        type: string\n                uris:\n                  description: URIs is a list of URI subjectAltNames to be set on the Certificate.\n                  type: array\n                  items:\n                    type: string\n                usages:\n                  description: Usages is the set of x509 usages that are requested for the certificate. Defaults to `digital signature` and `key encipherment` if not specified.\n                  type: array\n                  items:\n                    description: \"KeyUsage specifies valid usage contexts for keys. See: https://tools.ietf.org/html/rfc5280#section-4.2.1.3 https://tools.ietf.org/html/rfc5280#section-4.2.1.12 \\n Valid KeyUsage values are as follows: \\\"signing\\\", \\\"digital signature\\\", \\\"content commitment\\\", \\\"key encipherment\\\", \\\"key agreement\\\", \\\"data encipherment\\\", \\\"cert sign\\\", \\\"crl sign\\\", \\\"encipher only\\\", \\\"decipher only\\\", \\\"any\\\", \\\"server auth\\\", \\\"client auth\\\", \\\"code signing\\\", \\\"email protection\\\", \\\"s/mime\\\", \\\"ipsec end system\\\", \\\"ipsec tunnel\\\", \\\"ipsec user\\\", \\\"timestamping\\\", \\\"ocsp signing\\\", \\\"microsoft sgc\\\", \\\"netscape sgc\\\"\"\n                    type: string\n                    enum:\n                      - signing\n                      - digital signature\n                      - content commitment\n                      - key encipherment\n                      - key agreement\n                      - data encipherment\n                      - cert sign\n                      - crl sign\n                      - encipher only\n                      - decipher only\n                      - any\n                      - server auth\n                      - client auth\n                      - code signing\n                      - email protection\n                      - s/mime\n                      - ipsec end system\n                      - ipsec tunnel\n                      - ipsec user\n                      - timestamping\n                      - ocsp signing\n                      - microsoft sgc\n                      - netscape sgc\n            status:\n              description: Status of the Certificate. This is set and managed automatically.\n              type: object\n              properties:\n                conditions:\n                  description: List of status conditions to indicate the status of certificates. Known condition types are `Ready` and `Issuing`.\n                  type: array\n                  items:\n                    description: CertificateCondition contains condition information for an Certificate.\n                    type: object\n                    required:\n                      - status\n                      - type\n                    properties:\n                      lastTransitionTime:\n                        description: LastTransitionTime is the timestamp corresponding to the last status change of this condition.\n                        type: string\n                        format: date-time\n                      message:\n                        description: Message is a human readable description of the details of the last transition, complementing reason.\n                        type: string\n                      observedGeneration:\n                        description: If set, this represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.condition[x].observedGeneration is 9, the condition is out of date with respect to the current state of the Certificate.\n                        type: integer\n                        format: int64\n                      reason:\n                        description: Reason is a brief machine readable explanation for the condition's last transition.\n                        type: string\n                      status:\n                        description: Status of the condition, one of (`True`, `False`, `Unknown`).\n                        type: string\n                        enum:\n                          - \"True\"\n                          - \"False\"\n                          - Unknown\n                      type:\n                        description: Type of the condition, known values are (`Ready`, `Issuing`).\n                        type: string\n                  x-kubernetes-list-map-keys:\n                    - type\n                  x-kubernetes-list-type: map\n                failedIssuanceAttempts:\n                  description: The number of continuous failed issuance attempts up till now. This field gets removed (if set) on a successful issuance and gets set to 1 if unset and an issuance has failed. If an issuance has failed, the delay till the next issuance will be calculated using formula time.Hour * 2 ^ (failedIssuanceAttempts - 1).\n                  type: integer\n                lastFailureTime:\n                  description: LastFailureTime is the time as recorded by the Certificate controller of the most recent failure to complete a CertificateRequest for this Certificate resource. If set, cert-manager will not re-request another Certificate until 1 hour has elapsed from this time.\n                  type: string\n                  format: date-time\n                nextPrivateKeySecretName:\n                  description: The name of the Secret resource containing the private key to be used for the next certificate iteration. The keymanager controller will automatically set this field if the `Issuing` condition is set to `True`. It will automatically unset this field when the Issuing condition is not set or False.\n                  type: string\n                notAfter:\n                  description: The expiration time of the certificate stored in the secret named by this resource in `spec.secretName`.\n                  type: string\n                  format: date-time\n                notBefore:\n                  description: The time after which the certificate stored in the secret named by this resource in spec.secretName is valid.\n                  type: string\n                  format: date-time\n                renewalTime:\n                  description: RenewalTime is the time at which the certificate will be next renewed. If not set, no upcoming renewal is scheduled.\n                  type: string\n                  format: date-time\n                revision:\n                  description: \"The current 'revision' of the certificate as issued. \\n When a CertificateRequest resource is created, it will have the `cert-manager.io/certificate-revision` set to one greater than the current value of this field. \\n Upon issuance, this field will be set to the value of the annotation on the CertificateRequest resource used to issue the certificate. \\n Persisting the value on the CertificateRequest resource allows the certificates controller to know whether a request is part of an old issuance or if it is part of the ongoing revision's issuance by checking if the revision value in the annotation is greater than this field.\"\n                  type: integer\n      served: true\n      storage: true\n---\n# Source: cert-manager/templates/crds.yaml\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  name: orders.acme.cert-manager.io\n  labels:\n    app: 'cert-manager'\n    app.kubernetes.io/name: 'cert-manager'\n    app.kubernetes.io/instance: 'cert-manager'\n    # Generated labels\n    app.kubernetes.io/version: \"v1.10.0\"\nspec:\n  group: acme.cert-manager.io\n  names:\n    kind: Order\n    listKind: OrderList\n    plural: orders\n    singular: order\n    categories:\n      - cert-manager\n      - cert-manager-acme\n  scope: Namespaced\n  versions:\n    - name: v1\n      subresources:\n        status: {}\n      additionalPrinterColumns:\n        - jsonPath: .status.state\n          name: State\n          type: string\n        - jsonPath: .spec.issuerRef.name\n          name: Issuer\n          priority: 1\n          type: string\n        - jsonPath: .status.reason\n          name: Reason\n          priority: 1\n          type: string\n        - jsonPath: .metadata.creationTimestamp\n          description: CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n          name: Age\n          type: date\n      schema:\n        openAPIV3Schema:\n          description: Order is a type to represent an Order with an ACME server\n          type: object\n          required:\n            - metadata\n            - spec\n          properties:\n            apiVersion:\n              description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n              type: string\n            kind:\n              description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n              type: string\n            metadata:\n              type: object\n            spec:\n              type: object\n              required:\n                - issuerRef\n                - request\n              properties:\n                commonName:\n                  description: CommonName is the common name as specified on the DER encoded CSR. If specified, this value must also be present in `dnsNames` or `ipAddresses`. This field must match the corresponding field on the DER encoded CSR.\n                  type: string\n                dnsNames:\n                  description: DNSNames is a list of DNS names that should be included as part of the Order validation process. This field must match the corresponding field on the DER encoded CSR.\n                  type: array\n                  items:\n                    type: string\n                duration:\n                  description: Duration is the duration for the not after date for the requested certificate. this is set on order creation as pe the ACME spec.\n                  type: string\n                ipAddresses:\n                  description: IPAddresses is a list of IP addresses that should be included as part of the Order validation process. This field must match the corresponding field on the DER encoded CSR.\n                  type: array\n                  items:\n                    type: string\n                issuerRef:\n                  description: IssuerRef references a properly configured ACME-type Issuer which should be used to create this Order. If the Issuer does not exist, processing will be retried. If the Issuer is not an 'ACME' Issuer, an error will be returned and the Order will be marked as failed.\n                  type: object\n                  required:\n                    - name\n                  properties:\n                    group:\n                      description: Group of the resource being referred to.\n                      type: string\n                    kind:\n                      description: Kind of the resource being referred to.\n                      type: string\n                    name:\n                      description: Name of the resource being referred to.\n                      type: string\n                request:\n                  description: Certificate signing request bytes in DER encoding. This will be used when finalizing the order. This field must be set on the order.\n                  type: string\n                  format: byte\n            status:\n              type: object\n              properties:\n                authorizations:\n                  description: Authorizations contains data returned from the ACME server on what authorizations must be completed in order to validate the DNS names specified on the Order.\n                  type: array\n                  items:\n                    description: ACMEAuthorization contains data returned from the ACME server on an authorization that must be completed in order validate a DNS name on an ACME Order resource.\n                    type: object\n                    required:\n                      - url\n                    properties:\n                      challenges:\n                        description: Challenges specifies the challenge types offered by the ACME server. One of these challenge types will be selected when validating the DNS name and an appropriate Challenge resource will be created to perform the ACME challenge process.\n                        type: array\n                        items:\n                          description: Challenge specifies a challenge offered by the ACME server for an Order. An appropriate Challenge resource can be created to perform the ACME challenge process.\n                          type: object\n                          required:\n                            - token\n                            - type\n                            - url\n                          properties:\n                            token:\n                              description: Token is the token that must be presented for this challenge. This is used to compute the 'key' that must also be presented.\n                              type: string\n                            type:\n                              description: Type is the type of challenge being offered, e.g. 'http-01', 'dns-01', 'tls-sni-01', etc. This is the raw value retrieved from the ACME server. Only 'http-01' and 'dns-01' are supported by cert-manager, other values will be ignored.\n                              type: string\n                            url:\n                              description: URL is the URL of this challenge. It can be used to retrieve additional metadata about the Challenge from the ACME server.\n                              type: string\n                      identifier:\n                        description: Identifier is the DNS name to be validated as part of this authorization\n                        type: string\n                      initialState:\n                        description: InitialState is the initial state of the ACME authorization when first fetched from the ACME server. If an Authorization is already 'valid', the Order controller will not create a Challenge resource for the authorization. This will occur when working with an ACME server that enables 'authz reuse' (such as Let's Encrypt's production endpoint). If not set and 'identifier' is set, the state is assumed to be pending and a Challenge will be created.\n                        type: string\n                        enum:\n                          - valid\n                          - ready\n                          - pending\n                          - processing\n                          - invalid\n                          - expired\n                          - errored\n                      url:\n                        description: URL is the URL of the Authorization that must be completed\n                        type: string\n                      wildcard:\n                        description: Wildcard will be true if this authorization is for a wildcard DNS name. If this is true, the identifier will be the *non-wildcard* version of the DNS name. For example, if '*.example.com' is the DNS name being validated, this field will be 'true' and the 'identifier' field will be 'example.com'.\n                        type: boolean\n                certificate:\n                  description: Certificate is a copy of the PEM encoded certificate for this Order. This field will be populated after the order has been successfully finalized with the ACME server, and the order has transitioned to the 'valid' state.\n                  type: string\n                  format: byte\n                failureTime:\n                  description: FailureTime stores the time that this order failed. This is used to influence garbage collection and back-off.\n                  type: string\n                  format: date-time\n                finalizeURL:\n                  description: FinalizeURL of the Order. This is used to obtain certificates for this order once it has been completed.\n                  type: string\n                reason:\n                  description: Reason optionally provides more information about a why the order is in the current state.\n                  type: string\n                state:\n                  description: State contains the current state of this Order resource. States 'success' and 'expired' are 'final'\n                  type: string\n                  enum:\n                    - valid\n                    - ready\n                    - pending\n                    - processing\n                    - invalid\n                    - expired\n                    - errored\n                url:\n                  description: URL of the Order. This will initially be empty when the resource is first created. The Order controller will populate this field when the Order is first processed. This field will be immutable after it is initially set.\n                  type: string\n      served: true\n      storage: true\n---\n# Source: cert-manager/templates/cainjector-serviceaccount.yaml\napiVersion: v1\nkind: ServiceAccount\nautomountServiceAccountToken: true\nmetadata:\n  name: cert-manager-cainjector\n  namespace: cert-manager\n  labels:\n    app: cainjector\n    app.kubernetes.io/name: cainjector\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"cainjector\"\n    app.kubernetes.io/version: \"v1.10.0\"\n---\n# Source: cert-manager/templates/serviceaccount.yaml\napiVersion: v1\nkind: ServiceAccount\nautomountServiceAccountToken: true\nmetadata:\n  name: cert-manager\n  namespace: cert-manager\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.10.0\"\n---\n# Source: cert-manager/templates/webhook-serviceaccount.yaml\napiVersion: v1\nkind: ServiceAccount\nautomountServiceAccountToken: true\nmetadata:\n  name: cert-manager-webhook\n  namespace: cert-manager\n  labels:\n    app: webhook\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"webhook\"\n    app.kubernetes.io/version: \"v1.10.0\"\n---\n# Source: cert-manager/templates/webhook-config.yaml\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: cert-manager-webhook\n  namespace: cert-manager\n  labels:\n    app: webhook\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"webhook\"\ndata:\n---\n# Source: cert-manager/templates/cainjector-rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: cert-manager-cainjector\n  labels:\n    app: cainjector\n    app.kubernetes.io/name: cainjector\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"cainjector\"\n    app.kubernetes.io/version: \"v1.10.0\"\nrules:\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"certificates\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  - apiGroups: [\"\"]\n    resources: [\"secrets\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  - apiGroups: [\"\"]\n    resources: [\"events\"]\n    verbs: [\"get\", \"create\", \"update\", \"patch\"]\n  - apiGroups: [\"admissionregistration.k8s.io\"]\n    resources: [\"validatingwebhookconfigurations\", \"mutatingwebhookconfigurations\"]\n    verbs: [\"get\", \"list\", \"watch\", \"update\"]\n  - apiGroups: [\"apiregistration.k8s.io\"]\n    resources: [\"apiservices\"]\n    verbs: [\"get\", \"list\", \"watch\", \"update\"]\n  - apiGroups: [\"apiextensions.k8s.io\"]\n    resources: [\"customresourcedefinitions\"]\n    verbs: [\"get\", \"list\", \"watch\", \"update\"]\n---\n# Source: cert-manager/templates/rbac.yaml\n# Issuer controller role\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: cert-manager-controller-issuers\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.10.0\"\nrules:\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"issuers\", \"issuers/status\"]\n    verbs: [\"update\", \"patch\"]\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"issuers\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  - apiGroups: [\"\"]\n    resources: [\"secrets\"]\n    verbs: [\"get\", \"list\", \"watch\", \"create\", \"update\", \"delete\"]\n  - apiGroups: [\"\"]\n    resources: [\"events\"]\n    verbs: [\"create\", \"patch\"]\n---\n# Source: cert-manager/templates/rbac.yaml\n# ClusterIssuer controller role\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: cert-manager-controller-clusterissuers\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.10.0\"\nrules:\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"clusterissuers\", \"clusterissuers/status\"]\n    verbs: [\"update\", \"patch\"]\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"clusterissuers\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  - apiGroups: [\"\"]\n    resources: [\"secrets\"]\n    verbs: [\"get\", \"list\", \"watch\", \"create\", \"update\", \"delete\"]\n  - apiGroups: [\"\"]\n    resources: [\"events\"]\n    verbs: [\"create\", \"patch\"]\n---\n# Source: cert-manager/templates/rbac.yaml\n# Certificates controller role\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: cert-manager-controller-certificates\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.10.0\"\nrules:\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"certificates\", \"certificates/status\", \"certificaterequests\", \"certificaterequests/status\"]\n    verbs: [\"update\", \"patch\"]\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"certificates\", \"certificaterequests\", \"clusterissuers\", \"issuers\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  # We require these rules to support users with the OwnerReferencesPermissionEnforcement\n  # admission controller enabled:\n  # https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#ownerreferencespermissionenforcement\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"certificates/finalizers\", \"certificaterequests/finalizers\"]\n    verbs: [\"update\"]\n  - apiGroups: [\"acme.cert-manager.io\"]\n    resources: [\"orders\"]\n    verbs: [\"create\", \"delete\", \"get\", \"list\", \"watch\"]\n  - apiGroups: [\"\"]\n    resources: [\"secrets\"]\n    verbs: [\"get\", \"list\", \"watch\", \"create\", \"update\", \"delete\", \"patch\"]\n  - apiGroups: [\"\"]\n    resources: [\"events\"]\n    verbs: [\"create\", \"patch\"]\n---\n# Source: cert-manager/templates/rbac.yaml\n# Orders controller role\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: cert-manager-controller-orders\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.10.0\"\nrules:\n  - apiGroups: [\"acme.cert-manager.io\"]\n    resources: [\"orders\", \"orders/status\"]\n    verbs: [\"update\", \"patch\"]\n  - apiGroups: [\"acme.cert-manager.io\"]\n    resources: [\"orders\", \"challenges\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"clusterissuers\", \"issuers\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  - apiGroups: [\"acme.cert-manager.io\"]\n    resources: [\"challenges\"]\n    verbs: [\"create\", \"delete\"]\n  # We require these rules to support users with the OwnerReferencesPermissionEnforcement\n  # admission controller enabled:\n  # https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#ownerreferencespermissionenforcement\n  - apiGroups: [\"acme.cert-manager.io\"]\n    resources: [\"orders/finalizers\"]\n    verbs: [\"update\"]\n  - apiGroups: [\"\"]\n    resources: [\"secrets\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  - apiGroups: [\"\"]\n    resources: [\"events\"]\n    verbs: [\"create\", \"patch\"]\n---\n# Source: cert-manager/templates/rbac.yaml\n# Challenges controller role\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: cert-manager-controller-challenges\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.10.0\"\nrules:\n  # Use to update challenge resource status\n  - apiGroups: [\"acme.cert-manager.io\"]\n    resources: [\"challenges\", \"challenges/status\"]\n    verbs: [\"update\", \"patch\"]\n  # Used to watch challenge resources\n  - apiGroups: [\"acme.cert-manager.io\"]\n    resources: [\"challenges\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  # Used to watch challenges, issuer and clusterissuer resources\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"issuers\", \"clusterissuers\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  # Need to be able to retrieve ACME account private key to complete challenges\n  - apiGroups: [\"\"]\n    resources: [\"secrets\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  # Used to create events\n  - apiGroups: [\"\"]\n    resources: [\"events\"]\n    verbs: [\"create\", \"patch\"]\n  # HTTP01 rules\n  - apiGroups: [\"\"]\n    resources: [\"pods\", \"services\"]\n    verbs: [\"get\", \"list\", \"watch\", \"create\", \"delete\"]\n  - apiGroups: [\"networking.k8s.io\"]\n    resources: [\"ingresses\"]\n    verbs: [\"get\", \"list\", \"watch\", \"create\", \"delete\", \"update\"]\n  - apiGroups: [ \"gateway.networking.k8s.io\" ]\n    resources: [ \"httproutes\" ]\n    verbs: [\"get\", \"list\", \"watch\", \"create\", \"delete\", \"update\"]\n  # We require the ability to specify a custom hostname when we are creating\n  # new ingress resources.\n  # See: https://github.com/openshift/origin/blob/21f191775636f9acadb44fa42beeb4f75b255532/pkg/route/apiserver/admission/ingress_admission.go#L84-L148\n  - apiGroups: [\"route.openshift.io\"]\n    resources: [\"routes/custom-host\"]\n    verbs: [\"create\"]\n  # We require these rules to support users with the OwnerReferencesPermissionEnforcement\n  # admission controller enabled:\n  # https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#ownerreferencespermissionenforcement\n  - apiGroups: [\"acme.cert-manager.io\"]\n    resources: [\"challenges/finalizers\"]\n    verbs: [\"update\"]\n  # DNS01 rules (duplicated above)\n  - apiGroups: [\"\"]\n    resources: [\"secrets\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n---\n# Source: cert-manager/templates/rbac.yaml\n# ingress-shim controller role\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: cert-manager-controller-ingress-shim\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.10.0\"\nrules:\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"certificates\", \"certificaterequests\"]\n    verbs: [\"create\", \"update\", \"delete\"]\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"certificates\", \"certificaterequests\", \"issuers\", \"clusterissuers\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  - apiGroups: [\"networking.k8s.io\"]\n    resources: [\"ingresses\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  # We require these rules to support users with the OwnerReferencesPermissionEnforcement\n  # admission controller enabled:\n  # https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#ownerreferencespermissionenforcement\n  - apiGroups: [\"networking.k8s.io\"]\n    resources: [\"ingresses/finalizers\"]\n    verbs: [\"update\"]\n  - apiGroups: [\"gateway.networking.k8s.io\"]\n    resources: [\"gateways\", \"httproutes\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  - apiGroups: [\"gateway.networking.k8s.io\"]\n    resources: [\"gateways/finalizers\", \"httproutes/finalizers\"]\n    verbs: [\"update\"]\n  - apiGroups: [\"\"]\n    resources: [\"events\"]\n    verbs: [\"create\", \"patch\"]\n---\n# Source: cert-manager/templates/rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: cert-manager-view\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.10.0\"\n    rbac.authorization.k8s.io/aggregate-to-view: \"true\"\n    rbac.authorization.k8s.io/aggregate-to-edit: \"true\"\n    rbac.authorization.k8s.io/aggregate-to-admin: \"true\"\nrules:\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"certificates\", \"certificaterequests\", \"issuers\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  - apiGroups: [\"acme.cert-manager.io\"]\n    resources: [\"challenges\", \"orders\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n---\n# Source: cert-manager/templates/rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: cert-manager-edit\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.10.0\"\n    rbac.authorization.k8s.io/aggregate-to-edit: \"true\"\n    rbac.authorization.k8s.io/aggregate-to-admin: \"true\"\nrules:\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"certificates\", \"certificaterequests\", \"issuers\"]\n    verbs: [\"create\", \"delete\", \"deletecollection\", \"patch\", \"update\"]\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"certificates/status\"]\n    verbs: [\"update\"]\n  - apiGroups: [\"acme.cert-manager.io\"]\n    resources: [\"challenges\", \"orders\"]\n    verbs: [\"create\", \"delete\", \"deletecollection\", \"patch\", \"update\"]\n---\n# Source: cert-manager/templates/rbac.yaml\n# Permission to approve CertificateRequests referencing cert-manager.io Issuers and ClusterIssuers\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: cert-manager-controller-approve:cert-manager-io\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"cert-manager\"\n    app.kubernetes.io/version: \"v1.10.0\"\nrules:\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"signers\"]\n    verbs: [\"approve\"]\n    resourceNames: [\"issuers.cert-manager.io/*\", \"clusterissuers.cert-manager.io/*\"]\n---\n# Source: cert-manager/templates/rbac.yaml\n# Permission to:\n# - Update and sign CertificatSigningeRequests referencing cert-manager.io Issuers and ClusterIssuers\n# - Perform SubjectAccessReviews to test whether users are able to reference Namespaced Issuers\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: cert-manager-controller-certificatesigningrequests\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"cert-manager\"\n    app.kubernetes.io/version: \"v1.10.0\"\nrules:\n  - apiGroups: [\"certificates.k8s.io\"]\n    resources: [\"certificatesigningrequests\"]\n    verbs: [\"get\", \"list\", \"watch\", \"update\"]\n  - apiGroups: [\"certificates.k8s.io\"]\n    resources: [\"certificatesigningrequests/status\"]\n    verbs: [\"update\", \"patch\"]\n  - apiGroups: [\"certificates.k8s.io\"]\n    resources: [\"signers\"]\n    resourceNames: [\"issuers.cert-manager.io/*\", \"clusterissuers.cert-manager.io/*\"]\n    verbs: [\"sign\"]\n  - apiGroups: [\"authorization.k8s.io\"]\n    resources: [\"subjectaccessreviews\"]\n    verbs: [\"create\"]\n---\n# Source: cert-manager/templates/webhook-rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: cert-manager-webhook:subjectaccessreviews\n  labels:\n    app: webhook\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"webhook\"\n    app.kubernetes.io/version: \"v1.10.0\"\nrules:\n- apiGroups: [\"authorization.k8s.io\"]\n  resources: [\"subjectaccessreviews\"]\n  verbs: [\"create\"]\n---\n# Source: cert-manager/templates/cainjector-rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: cert-manager-cainjector\n  labels:\n    app: cainjector\n    app.kubernetes.io/name: cainjector\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"cainjector\"\n    app.kubernetes.io/version: \"v1.10.0\"\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-cainjector\nsubjects:\n  - name: cert-manager-cainjector\n    namespace: cert-manager\n    kind: ServiceAccount\n---\n# Source: cert-manager/templates/rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: cert-manager-controller-issuers\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.10.0\"\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-controller-issuers\nsubjects:\n  - name: cert-manager\n    namespace: cert-manager\n    kind: ServiceAccount\n---\n# Source: cert-manager/templates/rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: cert-manager-controller-clusterissuers\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.10.0\"\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-controller-clusterissuers\nsubjects:\n  - name: cert-manager\n    namespace: cert-manager\n    kind: ServiceAccount\n---\n# Source: cert-manager/templates/rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: cert-manager-controller-certificates\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.10.0\"\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-controller-certificates\nsubjects:\n  - name: cert-manager\n    namespace: cert-manager\n    kind: ServiceAccount\n---\n# Source: cert-manager/templates/rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: cert-manager-controller-orders\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.10.0\"\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-controller-orders\nsubjects:\n  - name: cert-manager\n    namespace: cert-manager\n    kind: ServiceAccount\n---\n# Source: cert-manager/templates/rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: cert-manager-controller-challenges\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.10.0\"\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-controller-challenges\nsubjects:\n  - name: cert-manager\n    namespace: cert-manager\n    kind: ServiceAccount\n---\n# Source: cert-manager/templates/rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: cert-manager-controller-ingress-shim\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.10.0\"\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-controller-ingress-shim\nsubjects:\n  - name: cert-manager\n    namespace: cert-manager\n    kind: ServiceAccount\n---\n# Source: cert-manager/templates/rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: cert-manager-controller-approve:cert-manager-io\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"cert-manager\"\n    app.kubernetes.io/version: \"v1.10.0\"\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-controller-approve:cert-manager-io\nsubjects:\n  - name: cert-manager\n    namespace: cert-manager\n    kind: ServiceAccount\n---\n# Source: cert-manager/templates/rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: cert-manager-controller-certificatesigningrequests\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"cert-manager\"\n    app.kubernetes.io/version: \"v1.10.0\"\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-controller-certificatesigningrequests\nsubjects:\n  - name: cert-manager\n    namespace: cert-manager\n    kind: ServiceAccount\n---\n# Source: cert-manager/templates/webhook-rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: cert-manager-webhook:subjectaccessreviews\n  labels:\n    app: webhook\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"webhook\"\n    app.kubernetes.io/version: \"v1.10.0\"\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-webhook:subjectaccessreviews\nsubjects:\n- apiGroup: \"\"\n  kind: ServiceAccount\n  name: cert-manager-webhook\n  namespace: cert-manager\n---\n# Source: cert-manager/templates/cainjector-rbac.yaml\n# leader election rules\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  name: cert-manager-cainjector:leaderelection\n  namespace: kube-system\n  labels:\n    app: cainjector\n    app.kubernetes.io/name: cainjector\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"cainjector\"\n    app.kubernetes.io/version: \"v1.10.0\"\nrules:\n  # Used for leader election by the controller\n  # cert-manager-cainjector-leader-election is used by the CertificateBased injector controller\n  #   see cmd/cainjector/start.go#L113\n  # cert-manager-cainjector-leader-election-core is used by the SecretBased injector controller\n  #   see cmd/cainjector/start.go#L137\n  - apiGroups: [\"coordination.k8s.io\"]\n    resources: [\"leases\"]\n    resourceNames: [\"cert-manager-cainjector-leader-election\", \"cert-manager-cainjector-leader-election-core\"]\n    verbs: [\"get\", \"update\", \"patch\"]\n  - apiGroups: [\"coordination.k8s.io\"]\n    resources: [\"leases\"]\n    verbs: [\"create\"]\n---\n# Source: cert-manager/templates/rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  name: cert-manager:leaderelection\n  namespace: kube-system\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.10.0\"\nrules:\n  - apiGroups: [\"coordination.k8s.io\"]\n    resources: [\"leases\"]\n    resourceNames: [\"cert-manager-controller\"]\n    verbs: [\"get\", \"update\", \"patch\"]\n  - apiGroups: [\"coordination.k8s.io\"]\n    resources: [\"leases\"]\n    verbs: [\"create\"]\n---\n# Source: cert-manager/templates/webhook-rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  name: cert-manager-webhook:dynamic-serving\n  namespace: cert-manager\n  labels:\n    app: webhook\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"webhook\"\n    app.kubernetes.io/version: \"v1.10.0\"\nrules:\n- apiGroups: [\"\"]\n  resources: [\"secrets\"]\n  resourceNames:\n  - 'cert-manager-webhook-ca'\n  verbs: [\"get\", \"list\", \"watch\", \"update\"]\n# It's not possible to grant CREATE permission on a single resourceName.\n- apiGroups: [\"\"]\n  resources: [\"secrets\"]\n  verbs: [\"create\"]\n---\n# Source: cert-manager/templates/cainjector-rbac.yaml\n# grant cert-manager permission to manage the leaderelection configmap in the\n# leader election namespace\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  name: cert-manager-cainjector:leaderelection\n  namespace: kube-system\n  labels:\n    app: cainjector\n    app.kubernetes.io/name: cainjector\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"cainjector\"\n    app.kubernetes.io/version: \"v1.10.0\"\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: cert-manager-cainjector:leaderelection\nsubjects:\n  - kind: ServiceAccount\n    name: cert-manager-cainjector\n    namespace: cert-manager\n---\n# Source: cert-manager/templates/rbac.yaml\n# grant cert-manager permission to manage the leaderelection configmap in the\n# leader election namespace\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  name: cert-manager:leaderelection\n  namespace: kube-system\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.10.0\"\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: cert-manager:leaderelection\nsubjects:\n  - apiGroup: \"\"\n    kind: ServiceAccount\n    name: cert-manager\n    namespace: cert-manager\n---\n# Source: cert-manager/templates/webhook-rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  name: cert-manager-webhook:dynamic-serving\n  namespace: cert-manager\n  labels:\n    app: webhook\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"webhook\"\n    app.kubernetes.io/version: \"v1.10.0\"\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: cert-manager-webhook:dynamic-serving\nsubjects:\n- apiGroup: \"\"\n  kind: ServiceAccount\n  name: cert-manager-webhook\n  namespace: cert-manager\n---\n# Source: cert-manager/templates/service.yaml\napiVersion: v1\nkind: Service\nmetadata:\n  name: cert-manager\n  namespace: cert-manager\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.10.0\"\nspec:\n  type: ClusterIP\n  ports:\n  - protocol: TCP\n    port: 9402\n    name: tcp-prometheus-servicemonitor\n    targetPort: 9402\n  selector:\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n---\n# Source: cert-manager/templates/webhook-service.yaml\napiVersion: v1\nkind: Service\nmetadata:\n  name: cert-manager-webhook\n  namespace: cert-manager\n  labels:\n    app: webhook\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"webhook\"\n    app.kubernetes.io/version: \"v1.10.0\"\nspec:\n  type: ClusterIP\n  ports:\n  - name: https\n    port: 443\n    protocol: TCP\n    targetPort: \"https\"\n  selector:\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"webhook\"\n---\n# Source: cert-manager/templates/cainjector-deployment.yaml\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: cert-manager-cainjector\n  namespace: cert-manager\n  labels:\n    app: cainjector\n    app.kubernetes.io/name: cainjector\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"cainjector\"\n    app.kubernetes.io/version: \"v1.10.0\"\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: cainjector\n      app.kubernetes.io/instance: cert-manager\n      app.kubernetes.io/component: \"cainjector\"\n  template:\n    metadata:\n      labels:\n        app: cainjector\n        app.kubernetes.io/name: cainjector\n        app.kubernetes.io/instance: cert-manager\n        app.kubernetes.io/component: \"cainjector\"\n        app.kubernetes.io/version: \"v1.10.0\"\n    spec:\n      serviceAccountName: cert-manager-cainjector\n      securityContext:\n        runAsNonRoot: true\n        seccompProfile:\n          type: RuntimeDefault\n      containers:\n        - name: cert-manager-cainjector\n          image: \"quay.io/jetstack/cert-manager-cainjector:v1.10.0\"\n          imagePullPolicy: IfNotPresent\n          args:\n          - --v=2\n          - --leader-election-namespace=kube-system\n          env:\n          - name: POD_NAMESPACE\n            valueFrom:\n              fieldRef:\n                fieldPath: metadata.namespace\n          securityContext:\n            allowPrivilegeEscalation: false\n            capabilities:\n              drop:\n              - ALL\n      nodeSelector:\n        kubernetes.io/os: linux\n---\n# Source: cert-manager/templates/deployment.yaml\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: cert-manager\n  namespace: cert-manager\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.10.0\"\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: cert-manager\n      app.kubernetes.io/instance: cert-manager\n      app.kubernetes.io/component: \"controller\"\n  template:\n    metadata:\n      labels:\n        app: cert-manager\n        app.kubernetes.io/name: cert-manager\n        app.kubernetes.io/instance: cert-manager\n        app.kubernetes.io/component: \"controller\"\n        app.kubernetes.io/version: \"v1.10.0\"\n      annotations:\n        prometheus.io/path: \"/metrics\"\n        prometheus.io/scrape: 'true'\n        prometheus.io/port: '9402'\n    spec:\n      serviceAccountName: cert-manager\n      securityContext:\n        runAsNonRoot: true\n        seccompProfile:\n          type: RuntimeDefault\n      containers:\n        - name: cert-manager-controller\n          image: \"quay.io/jetstack/cert-manager-controller:v1.10.0\"\n          imagePullPolicy: IfNotPresent\n          args:\n          - --v=2\n          - --cluster-resource-namespace=$(POD_NAMESPACE)\n          - --leader-election-namespace=kube-system\n          ports:\n          - containerPort: 9402\n            name: http-metrics\n            protocol: TCP\n          securityContext:\n            allowPrivilegeEscalation: false\n            capabilities:\n              drop:\n              - ALL\n          env:\n          - name: POD_NAMESPACE\n            valueFrom:\n              fieldRef:\n                fieldPath: metadata.namespace\n      nodeSelector:\n        kubernetes.io/os: linux\n---\n# Source: cert-manager/templates/webhook-deployment.yaml\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: cert-manager-webhook\n  namespace: cert-manager\n  labels:\n    app: webhook\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"webhook\"\n    app.kubernetes.io/version: \"v1.10.0\"\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: webhook\n      app.kubernetes.io/instance: cert-manager\n      app.kubernetes.io/component: \"webhook\"\n  template:\n    metadata:\n      labels:\n        app: webhook\n        app.kubernetes.io/name: webhook\n        app.kubernetes.io/instance: cert-manager\n        app.kubernetes.io/component: \"webhook\"\n        app.kubernetes.io/version: \"v1.10.0\"\n    spec:\n      serviceAccountName: cert-manager-webhook\n      securityContext:\n        runAsNonRoot: true\n        seccompProfile:\n          type: RuntimeDefault\n      containers:\n        - name: cert-manager-webhook\n          image: \"quay.io/jetstack/cert-manager-webhook:v1.10.0\"\n          imagePullPolicy: IfNotPresent\n          args:\n          - --v=2\n          - --secure-port=10250\n          - --dynamic-serving-ca-secret-namespace=$(POD_NAMESPACE)\n          - --dynamic-serving-ca-secret-name=cert-manager-webhook-ca\n          - --dynamic-serving-dns-names=cert-manager-webhook\n          - --dynamic-serving-dns-names=cert-manager-webhook.$(POD_NAMESPACE)\n          - --dynamic-serving-dns-names=cert-manager-webhook.$(POD_NAMESPACE).svc\n          \n          ports:\n          - name: https\n            protocol: TCP\n            containerPort: 10250\n          - name: healthcheck\n            protocol: TCP\n            containerPort: 6080\n          livenessProbe:\n            httpGet:\n              path: /livez\n              port: 6080\n              scheme: HTTP\n            initialDelaySeconds: 60\n            periodSeconds: 10\n            timeoutSeconds: 1\n            successThreshold: 1\n            failureThreshold: 3\n          readinessProbe:\n            httpGet:\n              path: /healthz\n              port: 6080\n              scheme: HTTP\n            initialDelaySeconds: 5\n            periodSeconds: 5\n            timeoutSeconds: 1\n            successThreshold: 1\n            failureThreshold: 3\n          securityContext:\n            allowPrivilegeEscalation: false\n            capabilities:\n              drop:\n              - ALL\n          env:\n          - name: POD_NAMESPACE\n            valueFrom:\n              fieldRef:\n                fieldPath: metadata.namespace\n      nodeSelector:\n        kubernetes.io/os: linux\n---\n# Source: cert-manager/templates/webhook-mutating-webhook.yaml\napiVersion: admissionregistration.k8s.io/v1\nkind: MutatingWebhookConfiguration\nmetadata:\n  name: cert-manager-webhook\n  labels:\n    app: webhook\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"webhook\"\n    app.kubernetes.io/version: \"v1.10.0\"\n  annotations:\n    cert-manager.io/inject-ca-from-secret: \"cert-manager/cert-manager-webhook-ca\"\nwebhooks:\n  - name: webhook.cert-manager.io\n    rules:\n      - apiGroups:\n          - \"cert-manager.io\"\n          - \"acme.cert-manager.io\"\n        apiVersions:\n          - \"v1\"\n        operations:\n          - CREATE\n          - UPDATE\n        resources:\n          - \"*/*\"\n    admissionReviewVersions: [\"v1\"]\n    # This webhook only accepts v1 cert-manager resources.\n    # Equivalent matchPolicy ensures that non-v1 resource requests are sent to\n    # this webhook (after the resources have been converted to v1).\n    matchPolicy: Equivalent\n    timeoutSeconds: 10\n    failurePolicy: Fail\n    # Only include 'sideEffects' field in Kubernetes 1.12+\n    sideEffects: None\n    clientConfig:\n      service:\n        name: cert-manager-webhook\n        namespace: cert-manager\n        path: /mutate\n---\n# Source: cert-manager/templates/webhook-validating-webhook.yaml\napiVersion: admissionregistration.k8s.io/v1\nkind: ValidatingWebhookConfiguration\nmetadata:\n  name: cert-manager-webhook\n  labels:\n    app: webhook\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"webhook\"\n    app.kubernetes.io/version: \"v1.10.0\"\n  annotations:\n    cert-manager.io/inject-ca-from-secret: \"cert-manager/cert-manager-webhook-ca\"\nwebhooks:\n  - name: webhook.cert-manager.io\n    namespaceSelector:\n      matchExpressions:\n      - key: \"cert-manager.io/disable-validation\"\n        operator: \"NotIn\"\n        values:\n        - \"true\"\n      - key: \"name\"\n        operator: \"NotIn\"\n        values:\n        - cert-manager\n    rules:\n      - apiGroups:\n          - \"cert-manager.io\"\n          - \"acme.cert-manager.io\"\n        apiVersions:\n          - \"v1\"\n        operations:\n          - CREATE\n          - UPDATE\n        resources:\n          - \"*/*\"\n    admissionReviewVersions: [\"v1\"]\n    # This webhook only accepts v1 cert-manager resources.\n    # Equivalent matchPolicy ensures that non-v1 resource requests are sent to\n    # this webhook (after the resources have been converted to v1).\n    matchPolicy: Equivalent\n    timeoutSeconds: 10\n    failurePolicy: Fail\n    sideEffects: None\n    clientConfig:\n      service:\n        name: cert-manager-webhook\n        namespace: cert-manager\n        path: /validate\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_036__gcp_vm__cert_manager_lets_encypt_http_validation/certificate.yaml",
    "content": "apiVersion: cert-manager.io/v1\nkind: Certificate\nmetadata:\n  name: acme-crt\nspec:\n  secretName: tls-secret\n  dnsNames:\n    - testcertmanager.ankitrathi.info\n  issuerRef:\n    name: letsencrypt-staging\n    # We can reference ClusterIssuers by changing the kind here.\n    # The default value is Issuer (i.e. a locally namespaced Issuer)\n    kind: ClusterIssuer"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_036__gcp_vm__cert_manager_lets_encypt_http_validation/cluster-issuer.yaml",
    "content": "apiVersion: cert-manager.io/v1\nkind: ClusterIssuer\nmetadata:\n  name: letsencrypt-staging\nspec:\n  acme:\n    # You must replace this email address with your own.\n    # Let's Encrypt will use this to contact you about expiring\n    # certificates, and issues related to your account.\n    email: kedesom362@corylan.com\n    # server: https://acme-staging-v02.api.letsencrypt.org/directory\n    ## Replace the following for PRODUCTION\n    server: https://acme-v02.api.letsencrypt.org/directory\n    preferredChain: \"ISRG Root X1\"\n    privateKeySecretRef:\n      # Secret resource that will be used to store the account's private key.\n      name: example-issuer-account-key\n    # Add a single challenge solver, HTTP01 using nginx\n    solvers:\n      - http01:\n          ingress:\n            class: nginx"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_036__gcp_vm__cert_manager_lets_encypt_http_validation/dep-whoami.yaml",
    "content": "kind: Deployment\napiVersion: apps/v1\nmetadata:\n  name: whoami\n  labels:\n    app: whoami\n\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: whoami\n  template:\n    metadata:\n      labels:\n        app: whoami\n    spec:\n      containers:\n        - name: whoami\n          image: traefik/whoami\n          ports:\n            - name: web\n              containerPort: 80"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_036__gcp_vm__cert_manager_lets_encypt_http_validation/ingress.yaml",
    "content": "# https://docs.nginx.com/nginx-ingress-controller/configuration/ingress-resources/basic-configuration/\napiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  annotations:\n    kubernetes.io/ingress.class: \"nginx\"\n    nginx.ingress.kubernetes.io/ssl-redirect: \"false\"\n  name: whoami-ingress\nspec:\n  tls:\n    - hosts:\n        - testcertmanager.ankitrathi.info\n      secretName: tls-secret\n  rules:\n    - host: testcertmanager.ankitrathi.info\n      http:\n        paths:\n          - path: /test\n            pathType: Prefix\n            backend:\n              service:\n                name: whoami\n                port:\n                  number: 80\n---"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_036__gcp_vm__cert_manager_lets_encypt_http_validation/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: example-service\n  labels:\n    app: example-app\nspec:\n  externalTrafficPolicy: Cluster\n  type: LoadBalancer\n  selector:\n    app: example-app\n  ports:\n    - protocol: TCP\n      name: http\n      port: 80\n      targetPort: 5000"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_037__gcp_k8s__cert_manager_lets_encypt_http_validation/ReadMe.md",
    "content": "# Let's Encrypt And Cert-Manager\n\n\n## Cert-Manager Releases\n\n[cert-manager/releases/tag/v1.10.0](https://github.com/cert-manager/cert-manager/releases/tag/v1.10.0)\n\n```bash\n# Download the yaml\n╰─ wget https://github.com/cert-manager/cert-manager/releases/download/v1.10.0/cert-manager.yaml\n╰─ ls\nReadMe.md         cert-manager.yaml\n╰─ cat cert-manager.yaml| wc -l                                          \n    5518\n```\n\n- Deploy cert-manager\n\n```bash\n╰─ kubectl apply -f cert-manager.yaml\n\n# Did it work or what ?\n╰─ kubectl get all -n cert-manager\nNAME                                          READY   STATUS    RESTARTS   AGE\npod/cert-manager-6dc4964c9-jd6mq              1/1     Running   0          7m57s\npod/cert-manager-cainjector-69d4647c6-mhvvf   1/1     Running   0          7m57s\npod/cert-manager-webhook-75f77865c8-52jk4     1/1     Running   0          7m57s\n\nNAME                           TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE\nservice/cert-manager           ClusterIP   10.96.236.95    <none>        9402/TCP   7m57s\nservice/cert-manager-webhook   ClusterIP   10.96.250.149   <none>        443/TCP    7m57s\n\nNAME                                      READY   UP-TO-DATE   AVAILABLE   AGE\ndeployment.apps/cert-manager              1/1     1            1           7m57s\ndeployment.apps/cert-manager-cainjector   1/1     1            1           7m57s\ndeployment.apps/cert-manager-webhook      1/1     1            1           7m57s\n\nNAME                                                DESIRED   CURRENT   READY   AGE\nreplicaset.apps/cert-manager-6dc4964c9              1         1         1       7m57s\nreplicaset.apps/cert-manager-cainjector-69d4647c6   1         1         1       7m57s\nreplicaset.apps/cert-manager-webhook-75f77865c8     1         1         1       7m57s\n\n\n# Okay it did\n```\n\n\n## Let's deploy ingress-controller\n\nYou can download the ingress controller from [ingress-nginx/releases/tag/controller-v1.4.0](https://github.com/kubernetes/ingress-nginx/releases/tag/controller-v1.4.0)\n\n```bash\n# Deploy from downloaded dir\n╰─ ls \nReadMe.md                           cert-manager.yaml                   ingress-nginx-controller-v1.4.0     ingress-nginx-controller-v1.4.0.zip\n\n╰─ find . -name deploy.yaml | grep cloud\n./ingress-nginx-controller-v1.4.0/deploy/static/provider/cloud/deploy.yaml\n\n# The same file is also available as raw content https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.4.0/deploy/static/provider/cloud/deploy.yaml\n╰─ kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.4.0/deploy/static/provider/cloud/deploy.yaml                 \n\n\n## See if its working\n╰─ kubectl get all -n ingress-nginx\nNAME                                            READY   STATUS      RESTARTS   AGE\npod/ingress-nginx-admission-create-7blsw        0/1     Completed   0          2m18s\npod/ingress-nginx-admission-patch-58bm7         0/1     Completed   0          2m18s\npod/ingress-nginx-controller-7844b9db77-kptln   1/1     Running     0          2m18s\n\nNAME                                         TYPE           CLUSTER-IP     EXTERNAL-IP   PORT(S)                      AGE\nservice/ingress-nginx-controller             LoadBalancer   10.96.54.164   <pending>     80:32367/TCP,443:31957/TCP   2m18s\nservice/ingress-nginx-controller-admission   ClusterIP      10.96.13.5     <none>        443/TCP                      2m18s\n\nNAME                                       READY   UP-TO-DATE   AVAILABLE   AGE\ndeployment.apps/ingress-nginx-controller   1/1     1            1           2m18s\n\nNAME                                                  DESIRED   CURRENT   READY   AGE\nreplicaset.apps/ingress-nginx-controller-7844b9db77   1         1         1       2m18s\n\nNAME                                       COMPLETIONS   DURATION   AGE\njob.batch/ingress-nginx-admission-create   1/1           18s        2m18s\njob.batch/ingress-nginx-admission-patch    1/1           19s        2m18s\n```\n\n## Nginx will create a external IP svc. This svc is the one which you should attach to your DNS\n\n```bash\n$ kubectl get svc\ningress-nginx   ingress-nginx-controller             LoadBalancer   10.48.14.196   34.66.238.103   80:31487/TCP,443:30253/TCP   62s\ningress-nginx   ingress-nginx-controller-admission   ClusterIP      10.48.7.20     <none>          443/TCP\n\n# Let's bind this IP with our domain\n\n$ nslookup testcertmanager.ankitrathi.info                          \nServer:         192.168.1.1\nAddress:        192.168.1.1#53\n\nNon-authoritative answer:\nName:   testcertmanager.ankitrathi.info\nAddress: 34.66.238.103\n```\n\n## Let's add a cluster-isser.yaml\n\n[cert-manager.io/docs/configuration/acme/](https://cert-manager.io/docs/configuration/acme/)\n\n\n\n- Apply the changes\n\n```bash\n╰─ kubectl apply -f cluster-issuer.yaml                                                                                                  \nclusterissuer.cert-manager.io/letsencrypt-staging created\n\n╰─ kubectl get ClusterIssuer              \nNAME                  READY   AGE\nletsencrypt-staging   False   53s\n\n## Make sure you change with a valid email address\n╰─ cat cluster-issuer.yaml| grep email\n    # You must replace this email address with your own.\n    email: kedesom362@corylan.com\n\n```\n\n- Let's deploy a sample application like [traefik/whoami](https://doc.traefik.io/traefik/getting-started/quick-start-with-kubernetes/)\n\n```bash\n╰─ kubectl apply -f dep-whoami.yaml    \ndeployment.apps/whoami created\n\n╰─ kubectl get pods                \nNAME                      READY   STATUS    RESTARTS   AGE\nwhoami-5dfdf459f4-4nzcd   1/1     Running   0          64s\n\n╰─ kubectl get deployment\nNAME     READY   UP-TO-DATE   AVAILABLE   AGE\nwhoami   1/1     1            1           3m7s\n\n```\n\n- Let's expose the dep using a svc\n\n```bash\n$ kubectl apply -f svc.yaml\nservice/whoami created\n\n$ kubectl get svc\nNAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE\nkubernetes   ClusterIP   10.48.0.1    <none>        443/TCP        50m\nwhoami       NodePort    10.48.3.74   <none>        80:32210/TCP   35s\n```\n\n\n\n- Create Ingress\n\n[configuration/ingress-resources/basic-configuration](https://docs.nginx.com/nginx-ingress-controller/configuration/ingress-resources/basic-configuration/)\n\n- Without `tls` section enabled\n\n```bash\n$ kubectl apply -f ingress.yaml\ningress.networking.k8s.io/whoami-ingress created\n```\n\n## Let's create a certificate.yaml\n\n[cert-manager.io/docs/concepts/certificate](https://cert-manager.io/docs/concepts/certificate/)\n\n\n\n```bash\n$ kubectl apply -f certificate.yaml \n``` \n\n## Seeing the changes\n\n```bash\n$ kubectl get certificate\nNAME       READY   SECRET       AGE\nacme-crt   False   tls-secret   14s\n\n$ kubectl get ingress\nNAME                        CLASS    HOSTS                             ADDRESS         PORTS     AGE\ncm-acme-http-solver-7qlr4   <none>   testcertmanager.ankitrathi.info   34.66.238.103   80        16s\nwhoami-ingress              <none>   testcertmanager.ankitrathi.info   34.66.238.103   80, 443   83s\n\n$ kubectl describe ingress cm-acme-http-solver-7qlr4\nName:             cm-acme-http-solver-7qlr4\nLabels:           acme.cert-manager.io/http-domain=3409775745\n                  acme.cert-manager.io/http-token=1157435119\n                  acme.cert-manager.io/http01-solver=true\nNamespace:        default\nAddress:          34.66.238.103\nIngress Class:    <none>\nDefault backend:  <default>\nRules:\n  Host                             Path  Backends\n  ----                             ----  --------\n  testcertmanager.ankitrathi.info\n                                   /.well-known/acme-challenge/jfTh_C4Dr_l-n6UUZUUzYkpU32xSJS-xFpzbWn6oYKw   cm-acme-http-solver-fhkr2:8089 (10.44.0.17:8089)\nAnnotations:                       kubernetes.io/ingress.class: nginx\n                                   nginx.ingress.kubernetes.io/whitelist-source-range: 0.0.0.0/0,::/0\nEvents:\n  Type    Reason  Age                From                      Message\n  ----    ------  ----               ----                      -------\n  Normal  Sync    21s (x2 over 23s)  nginx-ingress-controller  Scheduled for sync\n  \n  \n$ kubectl get certificate\nNAME       READY   SECRET       AGE\nacme-crt   True    tls-secret   48s\n```\n\n\n\n## HTTPS\n\n- Curl req\n\n```bash\n$ curl -v https://testcertmanager.ankitrathi.info/test\n*   Trying 34.66.238.103:443...\n* Connected to testcertmanager.ankitrathi.info (34.66.238.103) port 443 (#0)\n* ALPN, offering h2\n* ALPN, offering http/1.1\n* successfully set certificate verify locations:\n*  CAfile: /etc/ssl/certs/ca-certificates.crt\n*  CApath: /etc/ssl/certs\n* TLSv1.3 (OUT), TLS handshake, Client hello (1):\n* TLSv1.3 (IN), TLS handshake, Server hello (2):\n* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):\n* TLSv1.3 (IN), TLS handshake, Certificate (11):\n* TLSv1.3 (IN), TLS handshake, CERT verify (15):\n* TLSv1.3 (IN), TLS handshake, Finished (20):\n* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):\n* TLSv1.3 (OUT), TLS handshake, Finished (20):\n* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384\n* ALPN, server accepted to use h2\n* Server certificate:\n*  subject: CN=testcertmanager.ankitrathi.info\n*  start date: Nov  6 12:53:49 2022 GMT\n*  expire date: Feb  4 12:53:48 2023 GMT\n*  subjectAltName: host \"testcertmanager.ankitrathi.info\" matched cert's \"testcertmanager.ankitrathi.info\"\n*  issuer: C=US; O=Let's Encrypt; CN=R3\n*  SSL certificate verify ok.\n* Using HTTP2, server supports multi-use\n* Connection state changed (HTTP/2 confirmed)\n* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0\n* Using Stream ID: 1 (easy handle 0x5640b2aaa2c0)\n> GET /test HTTP/2\n> Host: testcertmanager.ankitrathi.info\n> user-agent: curl/7.74.0\n> accept: */*\n>\n* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):\n* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):\n* old SSL session ID is stale, removing\n* Connection state changed (MAX_CONCURRENT_STREAMS == 128)!\n< HTTP/2 200\n< date: Sun, 06 Nov 2022 13:59:33 GMT\n< content-type: text/plain; charset=utf-8\n< content-length: 443\n< strict-transport-security: max-age=15724800; includeSubDomains\n<\nHostname: whoami-5b69cdcd49-dppb4\nIP: 127.0.0.1\nIP: 10.44.0.16\nRemoteAddr: 10.44.0.15:58034\nGET /test HTTP/1.1\nHost: testcertmanager.ankitrathi.info\nUser-Agent: curl/7.74.0\nAccept: */*\nX-Forwarded-For: 35.204.200.191\nX-Forwarded-Host: testcertmanager.ankitrathi.info\nX-Forwarded-Port: 443\nX-Forwarded-Proto: https\nX-Forwarded-Scheme: https\nX-Real-Ip: 35.204.200.191\nX-Request-Id: 8721f6ff5af0e5ade81015554ef8f443\nX-Scheme: https\n\n* Connection #0 to host testcertmanager.ankitrathi.info left intact\n```\n\n- Browser Req\n\n![successfull-lets-encrypt-http.png](.images/successfull-lets-encrypt-http.png)"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_037__gcp_k8s__cert_manager_lets_encypt_http_validation/cert-manager.yaml",
    "content": "# Copyright 2022 The cert-manager Authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\napiVersion: v1\nkind: Namespace\nmetadata:\n  name: cert-manager\n---\n# Source: cert-manager/templates/crds.yaml\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  name: clusterissuers.cert-manager.io\n  labels:\n    app: 'cert-manager'\n    app.kubernetes.io/name: 'cert-manager'\n    app.kubernetes.io/instance: 'cert-manager'\n    # Generated labels\n    app.kubernetes.io/version: \"v1.10.0\"\nspec:\n  group: cert-manager.io\n  names:\n    kind: ClusterIssuer\n    listKind: ClusterIssuerList\n    plural: clusterissuers\n    singular: clusterissuer\n    categories:\n      - cert-manager\n  scope: Cluster\n  versions:\n    - name: v1\n      subresources:\n        status: {}\n      additionalPrinterColumns:\n        - jsonPath: .status.conditions[?(@.type==\"Ready\")].status\n          name: Ready\n          type: string\n        - jsonPath: .status.conditions[?(@.type==\"Ready\")].message\n          name: Status\n          priority: 1\n          type: string\n        - jsonPath: .metadata.creationTimestamp\n          description: CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n          name: Age\n          type: date\n      schema:\n        openAPIV3Schema:\n          description: A ClusterIssuer represents a certificate issuing authority which can be referenced as part of `issuerRef` fields. It is similar to an Issuer, however it is cluster-scoped and therefore can be referenced by resources that exist in *any* namespace, not just the same namespace as the referent.\n          type: object\n          required:\n            - spec\n          properties:\n            apiVersion:\n              description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n              type: string\n            kind:\n              description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n              type: string\n            metadata:\n              type: object\n            spec:\n              description: Desired state of the ClusterIssuer resource.\n              type: object\n              properties:\n                acme:\n                  description: ACME configures this issuer to communicate with a RFC8555 (ACME) server to obtain signed x509 certificates.\n                  type: object\n                  required:\n                    - privateKeySecretRef\n                    - server\n                  properties:\n                    disableAccountKeyGeneration:\n                      description: Enables or disables generating a new ACME account key. If true, the Issuer resource will *not* request a new account but will expect the account key to be supplied via an existing secret. If false, the cert-manager system will generate a new ACME account key for the Issuer. Defaults to false.\n                      type: boolean\n                    email:\n                      description: Email is the email address to be associated with the ACME account. This field is optional, but it is strongly recommended to be set. It will be used to contact you in case of issues with your account or certificates, including expiry notification emails. This field may be updated after the account is initially registered.\n                      type: string\n                    enableDurationFeature:\n                      description: Enables requesting a Not After date on certificates that matches the duration of the certificate. This is not supported by all ACME servers like Let's Encrypt. If set to true when the ACME server does not support it it will create an error on the Order. Defaults to false.\n                      type: boolean\n                    externalAccountBinding:\n                      description: ExternalAccountBinding is a reference to a CA external account of the ACME server. If set, upon registration cert-manager will attempt to associate the given external account credentials with the registered ACME account.\n                      type: object\n                      required:\n                        - keyID\n                        - keySecretRef\n                      properties:\n                        keyAlgorithm:\n                          description: 'Deprecated: keyAlgorithm field exists for historical compatibility reasons and should not be used. The algorithm is now hardcoded to HS256 in golang/x/crypto/acme.'\n                          type: string\n                          enum:\n                            - HS256\n                            - HS384\n                            - HS512\n                        keyID:\n                          description: keyID is the ID of the CA key that the External Account is bound to.\n                          type: string\n                        keySecretRef:\n                          description: keySecretRef is a Secret Key Selector referencing a data item in a Kubernetes Secret which holds the symmetric MAC key of the External Account Binding. The `key` is the index string that is paired with the key data in the Secret and should not be confused with the key data itself, or indeed with the External Account Binding keyID above. The secret key stored in the Secret **must** be un-padded, base64 URL encoded data.\n                          type: object\n                          required:\n                            - name\n                          properties:\n                            key:\n                              description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                              type: string\n                            name:\n                              description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                              type: string\n                    preferredChain:\n                      description: 'PreferredChain is the chain to use if the ACME server outputs multiple. PreferredChain is no guarantee that this one gets delivered by the ACME endpoint. For example, for Let''s Encrypt''s DST crosssign you would use: \"DST Root CA X3\" or \"ISRG Root X1\" for the newer Let''s Encrypt root CA. This value picks the first certificate bundle in the ACME alternative chains that has a certificate with this value as its issuer''s CN'\n                      type: string\n                      maxLength: 64\n                    privateKeySecretRef:\n                      description: PrivateKey is the name of a Kubernetes Secret resource that will be used to store the automatically generated ACME account private key. Optionally, a `key` may be specified to select a specific entry within the named Secret resource. If `key` is not specified, a default of `tls.key` will be used.\n                      type: object\n                      required:\n                        - name\n                      properties:\n                        key:\n                          description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                          type: string\n                        name:\n                          description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                          type: string\n                    server:\n                      description: 'Server is the URL used to access the ACME server''s ''directory'' endpoint. For example, for Let''s Encrypt''s staging endpoint, you would use: \"https://acme-staging-v02.api.letsencrypt.org/directory\". Only ACME v2 endpoints (i.e. RFC 8555) are supported.'\n                      type: string\n                    skipTLSVerify:\n                      description: Enables or disables validation of the ACME server TLS certificate. If true, requests to the ACME server will not have their TLS certificate validated (i.e. insecure connections will be allowed). Only enable this option in development environments. The cert-manager system installed roots will be used to verify connections to the ACME server if this is false. Defaults to false.\n                      type: boolean\n                    solvers:\n                      description: 'Solvers is a list of challenge solvers that will be used to solve ACME challenges for the matching domains. Solver configurations must be provided in order to obtain certificates from an ACME server. For more information, see: https://cert-manager.io/docs/configuration/acme/'\n                      type: array\n                      items:\n                        description: An ACMEChallengeSolver describes how to solve ACME challenges for the issuer it is part of. A selector may be provided to use different solving strategies for different DNS names. Only one of HTTP01 or DNS01 must be provided.\n                        type: object\n                        properties:\n                          dns01:\n                            description: Configures cert-manager to attempt to complete authorizations by performing the DNS01 challenge flow.\n                            type: object\n                            properties:\n                              acmeDNS:\n                                description: Use the 'ACME DNS' (https://github.com/joohoi/acme-dns) API to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - accountSecretRef\n                                  - host\n                                properties:\n                                  accountSecretRef:\n                                    description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  host:\n                                    type: string\n                              akamai:\n                                description: Use the Akamai DNS zone management API to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - accessTokenSecretRef\n                                  - clientSecretSecretRef\n                                  - clientTokenSecretRef\n                                  - serviceConsumerDomain\n                                properties:\n                                  accessTokenSecretRef:\n                                    description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  clientSecretSecretRef:\n                                    description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  clientTokenSecretRef:\n                                    description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  serviceConsumerDomain:\n                                    type: string\n                              azureDNS:\n                                description: Use the Microsoft Azure DNS API to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - resourceGroupName\n                                  - subscriptionID\n                                properties:\n                                  clientID:\n                                    description: if both this and ClientSecret are left unset MSI will be used\n                                    type: string\n                                  clientSecretSecretRef:\n                                    description: if both this and ClientID are left unset MSI will be used\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  environment:\n                                    description: name of the Azure environment (default AzurePublicCloud)\n                                    type: string\n                                    enum:\n                                      - AzurePublicCloud\n                                      - AzureChinaCloud\n                                      - AzureGermanCloud\n                                      - AzureUSGovernmentCloud\n                                  hostedZoneName:\n                                    description: name of the DNS zone that should be used\n                                    type: string\n                                  managedIdentity:\n                                    description: managed identity configuration, can not be used at the same time as clientID, clientSecretSecretRef or tenantID\n                                    type: object\n                                    properties:\n                                      clientID:\n                                        description: client ID of the managed identity, can not be used at the same time as resourceID\n                                        type: string\n                                      resourceID:\n                                        description: resource ID of the managed identity, can not be used at the same time as clientID\n                                        type: string\n                                  resourceGroupName:\n                                    description: resource group the DNS zone is located in\n                                    type: string\n                                  subscriptionID:\n                                    description: ID of the Azure subscription\n                                    type: string\n                                  tenantID:\n                                    description: when specifying ClientID and ClientSecret then this field is also needed\n                                    type: string\n                              cloudDNS:\n                                description: Use the Google Cloud DNS API to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - project\n                                properties:\n                                  hostedZoneName:\n                                    description: HostedZoneName is an optional field that tells cert-manager in which Cloud DNS zone the challenge record has to be created. If left empty cert-manager will automatically choose a zone.\n                                    type: string\n                                  project:\n                                    type: string\n                                  serviceAccountSecretRef:\n                                    description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                              cloudflare:\n                                description: Use the Cloudflare API to manage DNS01 challenge records.\n                                type: object\n                                properties:\n                                  apiKeySecretRef:\n                                    description: 'API key to use to authenticate with Cloudflare. Note: using an API token to authenticate is now the recommended method as it allows greater control of permissions.'\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  apiTokenSecretRef:\n                                    description: API token used to authenticate with Cloudflare.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  email:\n                                    description: Email of the account, only required when using API key based authentication.\n                                    type: string\n                              cnameStrategy:\n                                description: CNAMEStrategy configures how the DNS01 provider should handle CNAME records when found in DNS zones.\n                                type: string\n                                enum:\n                                  - None\n                                  - Follow\n                              digitalocean:\n                                description: Use the DigitalOcean DNS API to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - tokenSecretRef\n                                properties:\n                                  tokenSecretRef:\n                                    description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                              rfc2136:\n                                description: Use RFC2136 (\"Dynamic Updates in the Domain Name System\") (https://datatracker.ietf.org/doc/rfc2136/) to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - nameserver\n                                properties:\n                                  nameserver:\n                                    description: The IP address or hostname of an authoritative DNS server supporting RFC2136 in the form host:port. If the host is an IPv6 address it must be enclosed in square brackets (e.g [2001:db8::1]) ; port is optional. This field is required.\n                                    type: string\n                                  tsigAlgorithm:\n                                    description: 'The TSIG Algorithm configured in the DNS supporting RFC2136. Used only when ``tsigSecretSecretRef`` and ``tsigKeyName`` are defined. Supported values are (case-insensitive): ``HMACMD5`` (default), ``HMACSHA1``, ``HMACSHA256`` or ``HMACSHA512``.'\n                                    type: string\n                                  tsigKeyName:\n                                    description: The TSIG Key name configured in the DNS. If ``tsigSecretSecretRef`` is defined, this field is required.\n                                    type: string\n                                  tsigSecretSecretRef:\n                                    description: The name of the secret containing the TSIG value. If ``tsigKeyName`` is defined, this field is required.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                              route53:\n                                description: Use the AWS Route53 API to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - region\n                                properties:\n                                  accessKeyID:\n                                    description: 'The AccessKeyID is used for authentication. Cannot be set when SecretAccessKeyID is set. If neither the Access Key nor Key ID are set, we fall-back to using env vars, shared credentials file or AWS Instance metadata, see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials'\n                                    type: string\n                                  accessKeyIDSecretRef:\n                                    description: 'The SecretAccessKey is used for authentication. If set, pull the AWS access key ID from a key within a Kubernetes Secret. Cannot be set when AccessKeyID is set. If neither the Access Key nor Key ID are set, we fall-back to using env vars, shared credentials file or AWS Instance metadata, see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials'\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  hostedZoneID:\n                                    description: If set, the provider will manage only this zone in Route53 and will not do an lookup using the route53:ListHostedZonesByName api call.\n                                    type: string\n                                  region:\n                                    description: Always set the region when using AccessKeyID and SecretAccessKey\n                                    type: string\n                                  role:\n                                    description: Role is a Role ARN which the Route53 provider will assume using either the explicit credentials AccessKeyID/SecretAccessKey or the inferred credentials from environment variables, shared credentials file or AWS Instance metadata\n                                    type: string\n                                  secretAccessKeySecretRef:\n                                    description: 'The SecretAccessKey is used for authentication. If neither the Access Key nor Key ID are set, we fall-back to using env vars, shared credentials file or AWS Instance metadata, see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials'\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                              webhook:\n                                description: Configure an external webhook based DNS01 challenge solver to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - groupName\n                                  - solverName\n                                properties:\n                                  config:\n                                    description: Additional configuration that should be passed to the webhook apiserver when challenges are processed. This can contain arbitrary JSON data. Secret values should not be specified in this stanza. If secret values are needed (e.g. credentials for a DNS service), you should use a SecretKeySelector to reference a Secret resource. For details on the schema of this field, consult the webhook provider implementation's documentation.\n                                    x-kubernetes-preserve-unknown-fields: true\n                                  groupName:\n                                    description: The API group name that should be used when POSTing ChallengePayload resources to the webhook apiserver. This should be the same as the GroupName specified in the webhook provider implementation.\n                                    type: string\n                                  solverName:\n                                    description: The name of the solver to use, as defined in the webhook provider implementation. This will typically be the name of the provider, e.g. 'cloudflare'.\n                                    type: string\n                          http01:\n                            description: Configures cert-manager to attempt to complete authorizations by performing the HTTP01 challenge flow. It is not possible to obtain certificates for wildcard domain names (e.g. `*.example.com`) using the HTTP01 challenge mechanism.\n                            type: object\n                            properties:\n                              gatewayHTTPRoute:\n                                description: The Gateway API is a sig-network community API that models service networking in Kubernetes (https://gateway-api.sigs.k8s.io/). The Gateway solver will create HTTPRoutes with the specified labels in the same namespace as the challenge. This solver is experimental, and fields / behaviour may change in the future.\n                                type: object\n                                properties:\n                                  labels:\n                                    description: Custom labels that will be applied to HTTPRoutes created by cert-manager while solving HTTP-01 challenges.\n                                    type: object\n                                    additionalProperties:\n                                      type: string\n                                  parentRefs:\n                                    description: 'When solving an HTTP-01 challenge, cert-manager creates an HTTPRoute. cert-manager needs to know which parentRefs should be used when creating the HTTPRoute. Usually, the parentRef references a Gateway. See: https://gateway-api.sigs.k8s.io/v1alpha2/api-types/httproute/#attaching-to-gateways'\n                                    type: array\n                                    items:\n                                      description: \"ParentReference identifies an API object (usually a Gateway) that can be considered a parent of this resource (usually a route). The only kind of parent resource with \\\"Core\\\" support is Gateway. This API may be extended in the future to support additional kinds of parent resources, such as HTTPRoute. \\n The API object must be valid in the cluster; the Group and Kind must be registered in the cluster for this reference to be valid.\"\n                                      type: object\n                                      required:\n                                        - name\n                                      properties:\n                                        group:\n                                          description: \"Group is the group of the referent. \\n Support: Core\"\n                                          type: string\n                                          default: gateway.networking.k8s.io\n                                          maxLength: 253\n                                          pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$\n                                        kind:\n                                          description: \"Kind is kind of the referent. \\n Support: Core (Gateway) \\n Support: Custom (Other Resources)\"\n                                          type: string\n                                          default: Gateway\n                                          maxLength: 63\n                                          minLength: 1\n                                          pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$\n                                        name:\n                                          description: \"Name is the name of the referent. \\n Support: Core\"\n                                          type: string\n                                          maxLength: 253\n                                          minLength: 1\n                                        namespace:\n                                          description: \"Namespace is the namespace of the referent. When unspecified (or empty string), this refers to the local namespace of the Route. \\n Support: Core\"\n                                          type: string\n                                          maxLength: 63\n                                          minLength: 1\n                                          pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$\n                                        port:\n                                          description: \"Port is the network port this Route targets. It can be interpreted differently based on the type of parent resource. \\n When the parent resource is a Gateway, this targets all listeners listening on the specified port that also support this kind of Route(and select this Route). It's not recommended to set `Port` unless the networking behaviors specified in a Route must apply to a specific port as opposed to a listener(s) whose port(s) may be changed. When both Port and SectionName are specified, the name and port of the selected listener must match both specified values. \\n Implementations MAY choose to support other parent resources. Implementations supporting other types of parent resources MUST clearly document how/if Port is interpreted. \\n For the purpose of status, an attachment is considered successful as long as the parent resource accepts it partially. For example, Gateway listeners can restrict which Routes can attach to them by Route kind, namespace, or hostname. If 1 of 2 Gateway listeners accept attachment from the referencing Route, the Route MUST be considered successfully attached. If no Gateway listeners accept attachment from this Route, the Route MUST be considered detached from the Gateway. \\n Support: Extended \\n <gateway:experimental>\"\n                                          type: integer\n                                          format: int32\n                                          maximum: 65535\n                                          minimum: 1\n                                        sectionName:\n                                          description: \"SectionName is the name of a section within the target resource. In the following resources, SectionName is interpreted as the following: \\n * Gateway: Listener Name. When both Port (experimental) and SectionName are specified, the name and port of the selected listener must match both specified values. \\n Implementations MAY choose to support attaching Routes to other resources. If that is the case, they MUST clearly document how SectionName is interpreted. \\n When unspecified (empty string), this will reference the entire resource. For the purpose of status, an attachment is considered successful if at least one section in the parent resource accepts it. For example, Gateway listeners can restrict which Routes can attach to them by Route kind, namespace, or hostname. If 1 of 2 Gateway listeners accept attachment from the referencing Route, the Route MUST be considered successfully attached. If no Gateway listeners accept attachment from this Route, the Route MUST be considered detached from the Gateway. \\n Support: Core\"\n                                          type: string\n                                          maxLength: 253\n                                          minLength: 1\n                                          pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$\n                                  serviceType:\n                                    description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP. If unset, defaults to NodePort.\n                                    type: string\n                              ingress:\n                                description: The ingress based HTTP01 challenge solver will solve challenges by creating or modifying Ingress resources in order to route requests for '/.well-known/acme-challenge/XYZ' to 'challenge solver' pods that are provisioned by cert-manager for each Challenge to be completed.\n                                type: object\n                                properties:\n                                  class:\n                                    description: The ingress class to use when creating Ingress resources to solve ACME challenges that use this challenge solver. Only one of 'class' or 'name' may be specified.\n                                    type: string\n                                  ingressTemplate:\n                                    description: Optional ingress template used to configure the ACME challenge solver ingress used for HTTP01 challenges.\n                                    type: object\n                                    properties:\n                                      metadata:\n                                        description: ObjectMeta overrides for the ingress used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.\n                                        type: object\n                                        properties:\n                                          annotations:\n                                            description: Annotations that should be added to the created ACME HTTP01 solver ingress.\n                                            type: object\n                                            additionalProperties:\n                                              type: string\n                                          labels:\n                                            description: Labels that should be added to the created ACME HTTP01 solver ingress.\n                                            type: object\n                                            additionalProperties:\n                                              type: string\n                                  name:\n                                    description: The name of the ingress resource that should have ACME challenge solving routes inserted into it in order to solve HTTP01 challenges. This is typically used in conjunction with ingress controllers like ingress-gce, which maintains a 1:1 mapping between external IPs and ingress resources.\n                                    type: string\n                                  podTemplate:\n                                    description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges.\n                                    type: object\n                                    properties:\n                                      metadata:\n                                        description: ObjectMeta overrides for the pod used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.\n                                        type: object\n                                        properties:\n                                          annotations:\n                                            description: Annotations that should be added to the create ACME HTTP01 solver pods.\n                                            type: object\n                                            additionalProperties:\n                                              type: string\n                                          labels:\n                                            description: Labels that should be added to the created ACME HTTP01 solver pods.\n                                            type: object\n                                            additionalProperties:\n                                              type: string\n                                      spec:\n                                        description: PodSpec defines overrides for the HTTP01 challenge solver pod. Only the 'priorityClassName', 'nodeSelector', 'affinity', 'serviceAccountName' and 'tolerations' fields are supported currently. All other fields will be ignored.\n                                        type: object\n                                        properties:\n                                          affinity:\n                                            description: If specified, the pod's scheduling constraints\n                                            type: object\n                                            properties:\n                                              nodeAffinity:\n                                                description: Describes node affinity scheduling rules for the pod.\n                                                type: object\n                                                properties:\n                                                  preferredDuringSchedulingIgnoredDuringExecution:\n                                                    description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n                                                    type: array\n                                                    items:\n                                                      description: An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\n                                                      type: object\n                                                      required:\n                                                        - preference\n                                                        - weight\n                                                      properties:\n                                                        preference:\n                                                          description: A node selector term, associated with the corresponding weight.\n                                                          type: object\n                                                          properties:\n                                                            matchExpressions:\n                                                              description: A list of node selector requirements by node's labels.\n                                                              type: array\n                                                              items:\n                                                                description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: The label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                                    type: string\n                                                                  values:\n                                                                    description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                            matchFields:\n                                                              description: A list of node selector requirements by node's fields.\n                                                              type: array\n                                                              items:\n                                                                description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: The label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                                    type: string\n                                                                  values:\n                                                                    description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                          x-kubernetes-map-type: atomic\n                                                        weight:\n                                                          description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\n                                                          type: integer\n                                                          format: int32\n                                                  requiredDuringSchedulingIgnoredDuringExecution:\n                                                    description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.\n                                                    type: object\n                                                    required:\n                                                      - nodeSelectorTerms\n                                                    properties:\n                                                      nodeSelectorTerms:\n                                                        description: Required. A list of node selector terms. The terms are ORed.\n                                                        type: array\n                                                        items:\n                                                          description: A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\n                                                          type: object\n                                                          properties:\n                                                            matchExpressions:\n                                                              description: A list of node selector requirements by node's labels.\n                                                              type: array\n                                                              items:\n                                                                description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: The label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                                    type: string\n                                                                  values:\n                                                                    description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                            matchFields:\n                                                              description: A list of node selector requirements by node's fields.\n                                                              type: array\n                                                              items:\n                                                                description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: The label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                                    type: string\n                                                                  values:\n                                                                    description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                          x-kubernetes-map-type: atomic\n                                                    x-kubernetes-map-type: atomic\n                                              podAffinity:\n                                                description: Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\n                                                type: object\n                                                properties:\n                                                  preferredDuringSchedulingIgnoredDuringExecution:\n                                                    description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n                                                    type: array\n                                                    items:\n                                                      description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\n                                                      type: object\n                                                      required:\n                                                        - podAffinityTerm\n                                                        - weight\n                                                      properties:\n                                                        podAffinityTerm:\n                                                          description: Required. A pod affinity term, associated with the corresponding weight.\n                                                          type: object\n                                                          required:\n                                                            - topologyKey\n                                                          properties:\n                                                            labelSelector:\n                                                              description: A label query over a set of resources, in this case pods.\n                                                              type: object\n                                                              properties:\n                                                                matchExpressions:\n                                                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                                  type: array\n                                                                  items:\n                                                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                    type: object\n                                                                    required:\n                                                                      - key\n                                                                      - operator\n                                                                    properties:\n                                                                      key:\n                                                                        description: key is the label key that the selector applies to.\n                                                                        type: string\n                                                                      operator:\n                                                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                        type: string\n                                                                      values:\n                                                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                        type: array\n                                                                        items:\n                                                                          type: string\n                                                                matchLabels:\n                                                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                                  type: object\n                                                                  additionalProperties:\n                                                                    type: string\n                                                              x-kubernetes-map-type: atomic\n                                                            namespaceSelector:\n                                                              description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                                                              type: object\n                                                              properties:\n                                                                matchExpressions:\n                                                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                                  type: array\n                                                                  items:\n                                                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                    type: object\n                                                                    required:\n                                                                      - key\n                                                                      - operator\n                                                                    properties:\n                                                                      key:\n                                                                        description: key is the label key that the selector applies to.\n                                                                        type: string\n                                                                      operator:\n                                                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                        type: string\n                                                                      values:\n                                                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                        type: array\n                                                                        items:\n                                                                          type: string\n                                                                matchLabels:\n                                                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                                  type: object\n                                                                  additionalProperties:\n                                                                    type: string\n                                                              x-kubernetes-map-type: atomic\n                                                            namespaces:\n                                                              description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                                              type: array\n                                                              items:\n                                                                type: string\n                                                            topologyKey:\n                                                              description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                                                              type: string\n                                                        weight:\n                                                          description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.\n                                                          type: integer\n                                                          format: int32\n                                                  requiredDuringSchedulingIgnoredDuringExecution:\n                                                    description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n                                                    type: array\n                                                    items:\n                                                      description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running\n                                                      type: object\n                                                      required:\n                                                        - topologyKey\n                                                      properties:\n                                                        labelSelector:\n                                                          description: A label query over a set of resources, in this case pods.\n                                                          type: object\n                                                          properties:\n                                                            matchExpressions:\n                                                              description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                              type: array\n                                                              items:\n                                                                description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: key is the label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                    type: string\n                                                                  values:\n                                                                    description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                            matchLabels:\n                                                              description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                              type: object\n                                                              additionalProperties:\n                                                                type: string\n                                                          x-kubernetes-map-type: atomic\n                                                        namespaceSelector:\n                                                          description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                                                          type: object\n                                                          properties:\n                                                            matchExpressions:\n                                                              description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                              type: array\n                                                              items:\n                                                                description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: key is the label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                    type: string\n                                                                  values:\n                                                                    description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                            matchLabels:\n                                                              description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                              type: object\n                                                              additionalProperties:\n                                                                type: string\n                                                          x-kubernetes-map-type: atomic\n                                                        namespaces:\n                                                          description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                                          type: array\n                                                          items:\n                                                            type: string\n                                                        topologyKey:\n                                                          description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                                                          type: string\n                                              podAntiAffinity:\n                                                description: Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\n                                                type: object\n                                                properties:\n                                                  preferredDuringSchedulingIgnoredDuringExecution:\n                                                    description: The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n                                                    type: array\n                                                    items:\n                                                      description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\n                                                      type: object\n                                                      required:\n                                                        - podAffinityTerm\n                                                        - weight\n                                                      properties:\n                                                        podAffinityTerm:\n                                                          description: Required. A pod affinity term, associated with the corresponding weight.\n                                                          type: object\n                                                          required:\n                                                            - topologyKey\n                                                          properties:\n                                                            labelSelector:\n                                                              description: A label query over a set of resources, in this case pods.\n                                                              type: object\n                                                              properties:\n                                                                matchExpressions:\n                                                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                                  type: array\n                                                                  items:\n                                                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                    type: object\n                                                                    required:\n                                                                      - key\n                                                                      - operator\n                                                                    properties:\n                                                                      key:\n                                                                        description: key is the label key that the selector applies to.\n                                                                        type: string\n                                                                      operator:\n                                                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                        type: string\n                                                                      values:\n                                                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                        type: array\n                                                                        items:\n                                                                          type: string\n                                                                matchLabels:\n                                                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                                  type: object\n                                                                  additionalProperties:\n                                                                    type: string\n                                                              x-kubernetes-map-type: atomic\n                                                            namespaceSelector:\n                                                              description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                                                              type: object\n                                                              properties:\n                                                                matchExpressions:\n                                                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                                  type: array\n                                                                  items:\n                                                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                    type: object\n                                                                    required:\n                                                                      - key\n                                                                      - operator\n                                                                    properties:\n                                                                      key:\n                                                                        description: key is the label key that the selector applies to.\n                                                                        type: string\n                                                                      operator:\n                                                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                        type: string\n                                                                      values:\n                                                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                        type: array\n                                                                        items:\n                                                                          type: string\n                                                                matchLabels:\n                                                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                                  type: object\n                                                                  additionalProperties:\n                                                                    type: string\n                                                              x-kubernetes-map-type: atomic\n                                                            namespaces:\n                                                              description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                                              type: array\n                                                              items:\n                                                                type: string\n                                                            topologyKey:\n                                                              description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                                                              type: string\n                                                        weight:\n                                                          description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.\n                                                          type: integer\n                                                          format: int32\n                                                  requiredDuringSchedulingIgnoredDuringExecution:\n                                                    description: If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n                                                    type: array\n                                                    items:\n                                                      description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running\n                                                      type: object\n                                                      required:\n                                                        - topologyKey\n                                                      properties:\n                                                        labelSelector:\n                                                          description: A label query over a set of resources, in this case pods.\n                                                          type: object\n                                                          properties:\n                                                            matchExpressions:\n                                                              description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                              type: array\n                                                              items:\n                                                                description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: key is the label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                    type: string\n                                                                  values:\n                                                                    description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                            matchLabels:\n                                                              description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                              type: object\n                                                              additionalProperties:\n                                                                type: string\n                                                          x-kubernetes-map-type: atomic\n                                                        namespaceSelector:\n                                                          description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                                                          type: object\n                                                          properties:\n                                                            matchExpressions:\n                                                              description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                              type: array\n                                                              items:\n                                                                description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: key is the label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                    type: string\n                                                                  values:\n                                                                    description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                            matchLabels:\n                                                              description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                              type: object\n                                                              additionalProperties:\n                                                                type: string\n                                                          x-kubernetes-map-type: atomic\n                                                        namespaces:\n                                                          description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                                          type: array\n                                                          items:\n                                                            type: string\n                                                        topologyKey:\n                                                          description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                                                          type: string\n                                          nodeSelector:\n                                            description: 'NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node''s labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/'\n                                            type: object\n                                            additionalProperties:\n                                              type: string\n                                          priorityClassName:\n                                            description: If specified, the pod's priorityClassName.\n                                            type: string\n                                          serviceAccountName:\n                                            description: If specified, the pod's service account\n                                            type: string\n                                          tolerations:\n                                            description: If specified, the pod's tolerations.\n                                            type: array\n                                            items:\n                                              description: The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.\n                                              type: object\n                                              properties:\n                                                effect:\n                                                  description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\n                                                  type: string\n                                                key:\n                                                  description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.\n                                                  type: string\n                                                operator:\n                                                  description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.\n                                                  type: string\n                                                tolerationSeconds:\n                                                  description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.\n                                                  type: integer\n                                                  format: int64\n                                                value:\n                                                  description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.\n                                                  type: string\n                                  serviceType:\n                                    description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP. If unset, defaults to NodePort.\n                                    type: string\n                          selector:\n                            description: Selector selects a set of DNSNames on the Certificate resource that should be solved using this challenge solver. If not specified, the solver will be treated as the 'default' solver with the lowest priority, i.e. if any other solver has a more specific match, it will be used instead.\n                            type: object\n                            properties:\n                              dnsNames:\n                                description: List of DNSNames that this solver will be used to solve. If specified and a match is found, a dnsNames selector will take precedence over a dnsZones selector. If multiple solvers match with the same dnsNames value, the solver with the most matching labels in matchLabels will be selected. If neither has more matches, the solver defined earlier in the list will be selected.\n                                type: array\n                                items:\n                                  type: string\n                              dnsZones:\n                                description: List of DNSZones that this solver will be used to solve. The most specific DNS zone match specified here will take precedence over other DNS zone matches, so a solver specifying sys.example.com will be selected over one specifying example.com for the domain www.sys.example.com. If multiple solvers match with the same dnsZones value, the solver with the most matching labels in matchLabels will be selected. If neither has more matches, the solver defined earlier in the list will be selected.\n                                type: array\n                                items:\n                                  type: string\n                              matchLabels:\n                                description: A label selector that is used to refine the set of certificate's that this challenge solver will apply to.\n                                type: object\n                                additionalProperties:\n                                  type: string\n                ca:\n                  description: CA configures this issuer to sign certificates using a signing CA keypair stored in a Secret resource. This is used to build internal PKIs that are managed by cert-manager.\n                  type: object\n                  required:\n                    - secretName\n                  properties:\n                    crlDistributionPoints:\n                      description: The CRL distribution points is an X.509 v3 certificate extension which identifies the location of the CRL from which the revocation of this certificate can be checked. If not set, certificates will be issued without distribution points set.\n                      type: array\n                      items:\n                        type: string\n                    ocspServers:\n                      description: The OCSP server list is an X.509 v3 extension that defines a list of URLs of OCSP responders. The OCSP responders can be queried for the revocation status of an issued certificate. If not set, the certificate will be issued with no OCSP servers set. For example, an OCSP server URL could be \"http://ocsp.int-x3.letsencrypt.org\".\n                      type: array\n                      items:\n                        type: string\n                    secretName:\n                      description: SecretName is the name of the secret used to sign Certificates issued by this Issuer.\n                      type: string\n                selfSigned:\n                  description: SelfSigned configures this issuer to 'self sign' certificates using the private key used to create the CertificateRequest object.\n                  type: object\n                  properties:\n                    crlDistributionPoints:\n                      description: The CRL distribution points is an X.509 v3 certificate extension which identifies the location of the CRL from which the revocation of this certificate can be checked. If not set certificate will be issued without CDP. Values are strings.\n                      type: array\n                      items:\n                        type: string\n                vault:\n                  description: Vault configures this issuer to sign certificates using a HashiCorp Vault PKI backend.\n                  type: object\n                  required:\n                    - auth\n                    - path\n                    - server\n                  properties:\n                    auth:\n                      description: Auth configures how cert-manager authenticates with the Vault server.\n                      type: object\n                      properties:\n                        appRole:\n                          description: AppRole authenticates with Vault using the App Role auth mechanism, with the role and secret stored in a Kubernetes Secret resource.\n                          type: object\n                          required:\n                            - path\n                            - roleId\n                            - secretRef\n                          properties:\n                            path:\n                              description: 'Path where the App Role authentication backend is mounted in Vault, e.g: \"approle\"'\n                              type: string\n                            roleId:\n                              description: RoleID configured in the App Role authentication backend when setting up the authentication backend in Vault.\n                              type: string\n                            secretRef:\n                              description: Reference to a key in a Secret that contains the App Role secret used to authenticate with Vault. The `key` field must be specified and denotes which entry within the Secret resource is used as the app role secret.\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                        kubernetes:\n                          description: Kubernetes authenticates with Vault by passing the ServiceAccount token stored in the named Secret resource to the Vault server.\n                          type: object\n                          required:\n                            - role\n                            - secretRef\n                          properties:\n                            mountPath:\n                              description: The Vault mountPath here is the mount path to use when authenticating with Vault. For example, setting a value to `/v1/auth/foo`, will use the path `/v1/auth/foo/login` to authenticate with Vault. If unspecified, the default value \"/v1/auth/kubernetes\" will be used.\n                              type: string\n                            role:\n                              description: A required field containing the Vault Role to assume. A Role binds a Kubernetes ServiceAccount with a set of Vault policies.\n                              type: string\n                            secretRef:\n                              description: The required Secret field containing a Kubernetes ServiceAccount JWT used for authenticating with Vault. Use of 'ambient credentials' is not supported.\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                        tokenSecretRef:\n                          description: TokenSecretRef authenticates with Vault by presenting a token.\n                          type: object\n                          required:\n                            - name\n                          properties:\n                            key:\n                              description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                              type: string\n                            name:\n                              description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                              type: string\n                    caBundle:\n                      description: PEM-encoded CA bundle (base64-encoded) used to validate Vault server certificate. Only used if the Server URL is using HTTPS protocol. This parameter is ignored for plain HTTP protocol connection. If not set the system root certificates are used to validate the TLS connection. Mutually exclusive with CABundleSecretRef. If neither CABundle nor CABundleSecretRef are defined, the cert-manager controller system root certificates are used to validate the TLS connection.\n                      type: string\n                      format: byte\n                    caBundleSecretRef:\n                      description: CABundleSecretRef is a reference to a Secret which contains the CABundle which will be used when connecting to Vault when using HTTPS. Mutually exclusive with CABundle. If neither CABundleSecretRef nor CABundle are defined, the cert-manager controller system root certificates are used to validate the TLS connection. If no key for the Secret is specified, cert-manager will default to 'ca.crt'.\n                      type: object\n                      required:\n                        - name\n                      properties:\n                        key:\n                          description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                          type: string\n                        name:\n                          description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                          type: string\n                    namespace:\n                      description: 'Name of the vault namespace. Namespaces is a set of features within Vault Enterprise that allows Vault environments to support Secure Multi-tenancy. e.g: \"ns1\" More about namespaces can be found here https://www.vaultproject.io/docs/enterprise/namespaces'\n                      type: string\n                    path:\n                      description: 'Path is the mount path of the Vault PKI backend''s `sign` endpoint, e.g: \"my_pki_mount/sign/my-role-name\".'\n                      type: string\n                    server:\n                      description: 'Server is the connection address for the Vault server, e.g: \"https://vault.example.com:8200\".'\n                      type: string\n                venafi:\n                  description: Venafi configures this issuer to sign certificates using a Venafi TPP or Venafi Cloud policy zone.\n                  type: object\n                  required:\n                    - zone\n                  properties:\n                    cloud:\n                      description: Cloud specifies the Venafi cloud configuration settings. Only one of TPP or Cloud may be specified.\n                      type: object\n                      required:\n                        - apiTokenSecretRef\n                      properties:\n                        apiTokenSecretRef:\n                          description: APITokenSecretRef is a secret key selector for the Venafi Cloud API token.\n                          type: object\n                          required:\n                            - name\n                          properties:\n                            key:\n                              description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                              type: string\n                            name:\n                              description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                              type: string\n                        url:\n                          description: URL is the base URL for Venafi Cloud. Defaults to \"https://api.venafi.cloud/v1\".\n                          type: string\n                    tpp:\n                      description: TPP specifies Trust Protection Platform configuration settings. Only one of TPP or Cloud may be specified.\n                      type: object\n                      required:\n                        - credentialsRef\n                        - url\n                      properties:\n                        caBundle:\n                          description: CABundle is a PEM encoded TLS certificate to use to verify connections to the TPP instance. If specified, system roots will not be used and the issuing CA for the TPP instance must be verifiable using the provided root. If not specified, the connection will be verified using the cert-manager system root certificates.\n                          type: string\n                          format: byte\n                        credentialsRef:\n                          description: CredentialsRef is a reference to a Secret containing the username and password for the TPP server. The secret must contain two keys, 'username' and 'password'.\n                          type: object\n                          required:\n                            - name\n                          properties:\n                            name:\n                              description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                              type: string\n                        url:\n                          description: 'URL is the base URL for the vedsdk endpoint of the Venafi TPP instance, for example: \"https://tpp.example.com/vedsdk\".'\n                          type: string\n                    zone:\n                      description: Zone is the Venafi Policy Zone to use for this issuer. All requests made to the Venafi platform will be restricted by the named zone policy. This field is required.\n                      type: string\n            status:\n              description: Status of the ClusterIssuer. This is set and managed automatically.\n              type: object\n              properties:\n                acme:\n                  description: ACME specific status options. This field should only be set if the Issuer is configured to use an ACME server to issue certificates.\n                  type: object\n                  properties:\n                    lastRegisteredEmail:\n                      description: LastRegisteredEmail is the email associated with the latest registered ACME account, in order to track changes made to registered account associated with the  Issuer\n                      type: string\n                    uri:\n                      description: URI is the unique account identifier, which can also be used to retrieve account details from the CA\n                      type: string\n                conditions:\n                  description: List of status conditions to indicate the status of a CertificateRequest. Known condition types are `Ready`.\n                  type: array\n                  items:\n                    description: IssuerCondition contains condition information for an Issuer.\n                    type: object\n                    required:\n                      - status\n                      - type\n                    properties:\n                      lastTransitionTime:\n                        description: LastTransitionTime is the timestamp corresponding to the last status change of this condition.\n                        type: string\n                        format: date-time\n                      message:\n                        description: Message is a human readable description of the details of the last transition, complementing reason.\n                        type: string\n                      observedGeneration:\n                        description: If set, this represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.condition[x].observedGeneration is 9, the condition is out of date with respect to the current state of the Issuer.\n                        type: integer\n                        format: int64\n                      reason:\n                        description: Reason is a brief machine readable explanation for the condition's last transition.\n                        type: string\n                      status:\n                        description: Status of the condition, one of (`True`, `False`, `Unknown`).\n                        type: string\n                        enum:\n                          - \"True\"\n                          - \"False\"\n                          - Unknown\n                      type:\n                        description: Type of the condition, known values are (`Ready`).\n                        type: string\n                  x-kubernetes-list-map-keys:\n                    - type\n                  x-kubernetes-list-type: map\n      served: true\n      storage: true\n---\n# Source: cert-manager/templates/crds.yaml\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  name: challenges.acme.cert-manager.io\n  labels:\n    app: 'cert-manager'\n    app.kubernetes.io/name: 'cert-manager'\n    app.kubernetes.io/instance: 'cert-manager'\n    # Generated labels\n    app.kubernetes.io/version: \"v1.10.0\"\nspec:\n  group: acme.cert-manager.io\n  names:\n    kind: Challenge\n    listKind: ChallengeList\n    plural: challenges\n    singular: challenge\n    categories:\n      - cert-manager\n      - cert-manager-acme\n  scope: Namespaced\n  versions:\n    - additionalPrinterColumns:\n        - jsonPath: .status.state\n          name: State\n          type: string\n        - jsonPath: .spec.dnsName\n          name: Domain\n          type: string\n        - jsonPath: .status.reason\n          name: Reason\n          priority: 1\n          type: string\n        - description: CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n          jsonPath: .metadata.creationTimestamp\n          name: Age\n          type: date\n      name: v1\n      schema:\n        openAPIV3Schema:\n          description: Challenge is a type to represent a Challenge request with an ACME server\n          type: object\n          required:\n            - metadata\n            - spec\n          properties:\n            apiVersion:\n              description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n              type: string\n            kind:\n              description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n              type: string\n            metadata:\n              type: object\n            spec:\n              type: object\n              required:\n                - authorizationURL\n                - dnsName\n                - issuerRef\n                - key\n                - solver\n                - token\n                - type\n                - url\n              properties:\n                authorizationURL:\n                  description: The URL to the ACME Authorization resource that this challenge is a part of.\n                  type: string\n                dnsName:\n                  description: dnsName is the identifier that this challenge is for, e.g. example.com. If the requested DNSName is a 'wildcard', this field MUST be set to the non-wildcard domain, e.g. for `*.example.com`, it must be `example.com`.\n                  type: string\n                issuerRef:\n                  description: References a properly configured ACME-type Issuer which should be used to create this Challenge. If the Issuer does not exist, processing will be retried. If the Issuer is not an 'ACME' Issuer, an error will be returned and the Challenge will be marked as failed.\n                  type: object\n                  required:\n                    - name\n                  properties:\n                    group:\n                      description: Group of the resource being referred to.\n                      type: string\n                    kind:\n                      description: Kind of the resource being referred to.\n                      type: string\n                    name:\n                      description: Name of the resource being referred to.\n                      type: string\n                key:\n                  description: 'The ACME challenge key for this challenge For HTTP01 challenges, this is the value that must be responded with to complete the HTTP01 challenge in the format: `<private key JWK thumbprint>.<key from acme server for challenge>`. For DNS01 challenges, this is the base64 encoded SHA256 sum of the `<private key JWK thumbprint>.<key from acme server for challenge>` text that must be set as the TXT record content.'\n                  type: string\n                solver:\n                  description: Contains the domain solving configuration that should be used to solve this challenge resource.\n                  type: object\n                  properties:\n                    dns01:\n                      description: Configures cert-manager to attempt to complete authorizations by performing the DNS01 challenge flow.\n                      type: object\n                      properties:\n                        acmeDNS:\n                          description: Use the 'ACME DNS' (https://github.com/joohoi/acme-dns) API to manage DNS01 challenge records.\n                          type: object\n                          required:\n                            - accountSecretRef\n                            - host\n                          properties:\n                            accountSecretRef:\n                              description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                            host:\n                              type: string\n                        akamai:\n                          description: Use the Akamai DNS zone management API to manage DNS01 challenge records.\n                          type: object\n                          required:\n                            - accessTokenSecretRef\n                            - clientSecretSecretRef\n                            - clientTokenSecretRef\n                            - serviceConsumerDomain\n                          properties:\n                            accessTokenSecretRef:\n                              description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                            clientSecretSecretRef:\n                              description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                            clientTokenSecretRef:\n                              description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                            serviceConsumerDomain:\n                              type: string\n                        azureDNS:\n                          description: Use the Microsoft Azure DNS API to manage DNS01 challenge records.\n                          type: object\n                          required:\n                            - resourceGroupName\n                            - subscriptionID\n                          properties:\n                            clientID:\n                              description: if both this and ClientSecret are left unset MSI will be used\n                              type: string\n                            clientSecretSecretRef:\n                              description: if both this and ClientID are left unset MSI will be used\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                            environment:\n                              description: name of the Azure environment (default AzurePublicCloud)\n                              type: string\n                              enum:\n                                - AzurePublicCloud\n                                - AzureChinaCloud\n                                - AzureGermanCloud\n                                - AzureUSGovernmentCloud\n                            hostedZoneName:\n                              description: name of the DNS zone that should be used\n                              type: string\n                            managedIdentity:\n                              description: managed identity configuration, can not be used at the same time as clientID, clientSecretSecretRef or tenantID\n                              type: object\n                              properties:\n                                clientID:\n                                  description: client ID of the managed identity, can not be used at the same time as resourceID\n                                  type: string\n                                resourceID:\n                                  description: resource ID of the managed identity, can not be used at the same time as clientID\n                                  type: string\n                            resourceGroupName:\n                              description: resource group the DNS zone is located in\n                              type: string\n                            subscriptionID:\n                              description: ID of the Azure subscription\n                              type: string\n                            tenantID:\n                              description: when specifying ClientID and ClientSecret then this field is also needed\n                              type: string\n                        cloudDNS:\n                          description: Use the Google Cloud DNS API to manage DNS01 challenge records.\n                          type: object\n                          required:\n                            - project\n                          properties:\n                            hostedZoneName:\n                              description: HostedZoneName is an optional field that tells cert-manager in which Cloud DNS zone the challenge record has to be created. If left empty cert-manager will automatically choose a zone.\n                              type: string\n                            project:\n                              type: string\n                            serviceAccountSecretRef:\n                              description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                        cloudflare:\n                          description: Use the Cloudflare API to manage DNS01 challenge records.\n                          type: object\n                          properties:\n                            apiKeySecretRef:\n                              description: 'API key to use to authenticate with Cloudflare. Note: using an API token to authenticate is now the recommended method as it allows greater control of permissions.'\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                            apiTokenSecretRef:\n                              description: API token used to authenticate with Cloudflare.\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                            email:\n                              description: Email of the account, only required when using API key based authentication.\n                              type: string\n                        cnameStrategy:\n                          description: CNAMEStrategy configures how the DNS01 provider should handle CNAME records when found in DNS zones.\n                          type: string\n                          enum:\n                            - None\n                            - Follow\n                        digitalocean:\n                          description: Use the DigitalOcean DNS API to manage DNS01 challenge records.\n                          type: object\n                          required:\n                            - tokenSecretRef\n                          properties:\n                            tokenSecretRef:\n                              description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                        rfc2136:\n                          description: Use RFC2136 (\"Dynamic Updates in the Domain Name System\") (https://datatracker.ietf.org/doc/rfc2136/) to manage DNS01 challenge records.\n                          type: object\n                          required:\n                            - nameserver\n                          properties:\n                            nameserver:\n                              description: The IP address or hostname of an authoritative DNS server supporting RFC2136 in the form host:port. If the host is an IPv6 address it must be enclosed in square brackets (e.g [2001:db8::1]) ; port is optional. This field is required.\n                              type: string\n                            tsigAlgorithm:\n                              description: 'The TSIG Algorithm configured in the DNS supporting RFC2136. Used only when ``tsigSecretSecretRef`` and ``tsigKeyName`` are defined. Supported values are (case-insensitive): ``HMACMD5`` (default), ``HMACSHA1``, ``HMACSHA256`` or ``HMACSHA512``.'\n                              type: string\n                            tsigKeyName:\n                              description: The TSIG Key name configured in the DNS. If ``tsigSecretSecretRef`` is defined, this field is required.\n                              type: string\n                            tsigSecretSecretRef:\n                              description: The name of the secret containing the TSIG value. If ``tsigKeyName`` is defined, this field is required.\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                        route53:\n                          description: Use the AWS Route53 API to manage DNS01 challenge records.\n                          type: object\n                          required:\n                            - region\n                          properties:\n                            accessKeyID:\n                              description: 'The AccessKeyID is used for authentication. Cannot be set when SecretAccessKeyID is set. If neither the Access Key nor Key ID are set, we fall-back to using env vars, shared credentials file or AWS Instance metadata, see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials'\n                              type: string\n                            accessKeyIDSecretRef:\n                              description: 'The SecretAccessKey is used for authentication. If set, pull the AWS access key ID from a key within a Kubernetes Secret. Cannot be set when AccessKeyID is set. If neither the Access Key nor Key ID are set, we fall-back to using env vars, shared credentials file or AWS Instance metadata, see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials'\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                            hostedZoneID:\n                              description: If set, the provider will manage only this zone in Route53 and will not do an lookup using the route53:ListHostedZonesByName api call.\n                              type: string\n                            region:\n                              description: Always set the region when using AccessKeyID and SecretAccessKey\n                              type: string\n                            role:\n                              description: Role is a Role ARN which the Route53 provider will assume using either the explicit credentials AccessKeyID/SecretAccessKey or the inferred credentials from environment variables, shared credentials file or AWS Instance metadata\n                              type: string\n                            secretAccessKeySecretRef:\n                              description: 'The SecretAccessKey is used for authentication. If neither the Access Key nor Key ID are set, we fall-back to using env vars, shared credentials file or AWS Instance metadata, see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials'\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                        webhook:\n                          description: Configure an external webhook based DNS01 challenge solver to manage DNS01 challenge records.\n                          type: object\n                          required:\n                            - groupName\n                            - solverName\n                          properties:\n                            config:\n                              description: Additional configuration that should be passed to the webhook apiserver when challenges are processed. This can contain arbitrary JSON data. Secret values should not be specified in this stanza. If secret values are needed (e.g. credentials for a DNS service), you should use a SecretKeySelector to reference a Secret resource. For details on the schema of this field, consult the webhook provider implementation's documentation.\n                              x-kubernetes-preserve-unknown-fields: true\n                            groupName:\n                              description: The API group name that should be used when POSTing ChallengePayload resources to the webhook apiserver. This should be the same as the GroupName specified in the webhook provider implementation.\n                              type: string\n                            solverName:\n                              description: The name of the solver to use, as defined in the webhook provider implementation. This will typically be the name of the provider, e.g. 'cloudflare'.\n                              type: string\n                    http01:\n                      description: Configures cert-manager to attempt to complete authorizations by performing the HTTP01 challenge flow. It is not possible to obtain certificates for wildcard domain names (e.g. `*.example.com`) using the HTTP01 challenge mechanism.\n                      type: object\n                      properties:\n                        gatewayHTTPRoute:\n                          description: The Gateway API is a sig-network community API that models service networking in Kubernetes (https://gateway-api.sigs.k8s.io/). The Gateway solver will create HTTPRoutes with the specified labels in the same namespace as the challenge. This solver is experimental, and fields / behaviour may change in the future.\n                          type: object\n                          properties:\n                            labels:\n                              description: Custom labels that will be applied to HTTPRoutes created by cert-manager while solving HTTP-01 challenges.\n                              type: object\n                              additionalProperties:\n                                type: string\n                            parentRefs:\n                              description: 'When solving an HTTP-01 challenge, cert-manager creates an HTTPRoute. cert-manager needs to know which parentRefs should be used when creating the HTTPRoute. Usually, the parentRef references a Gateway. See: https://gateway-api.sigs.k8s.io/v1alpha2/api-types/httproute/#attaching-to-gateways'\n                              type: array\n                              items:\n                                description: \"ParentReference identifies an API object (usually a Gateway) that can be considered a parent of this resource (usually a route). The only kind of parent resource with \\\"Core\\\" support is Gateway. This API may be extended in the future to support additional kinds of parent resources, such as HTTPRoute. \\n The API object must be valid in the cluster; the Group and Kind must be registered in the cluster for this reference to be valid.\"\n                                type: object\n                                required:\n                                  - name\n                                properties:\n                                  group:\n                                    description: \"Group is the group of the referent. \\n Support: Core\"\n                                    type: string\n                                    default: gateway.networking.k8s.io\n                                    maxLength: 253\n                                    pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$\n                                  kind:\n                                    description: \"Kind is kind of the referent. \\n Support: Core (Gateway) \\n Support: Custom (Other Resources)\"\n                                    type: string\n                                    default: Gateway\n                                    maxLength: 63\n                                    minLength: 1\n                                    pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$\n                                  name:\n                                    description: \"Name is the name of the referent. \\n Support: Core\"\n                                    type: string\n                                    maxLength: 253\n                                    minLength: 1\n                                  namespace:\n                                    description: \"Namespace is the namespace of the referent. When unspecified (or empty string), this refers to the local namespace of the Route. \\n Support: Core\"\n                                    type: string\n                                    maxLength: 63\n                                    minLength: 1\n                                    pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$\n                                  port:\n                                    description: \"Port is the network port this Route targets. It can be interpreted differently based on the type of parent resource. \\n When the parent resource is a Gateway, this targets all listeners listening on the specified port that also support this kind of Route(and select this Route). It's not recommended to set `Port` unless the networking behaviors specified in a Route must apply to a specific port as opposed to a listener(s) whose port(s) may be changed. When both Port and SectionName are specified, the name and port of the selected listener must match both specified values. \\n Implementations MAY choose to support other parent resources. Implementations supporting other types of parent resources MUST clearly document how/if Port is interpreted. \\n For the purpose of status, an attachment is considered successful as long as the parent resource accepts it partially. For example, Gateway listeners can restrict which Routes can attach to them by Route kind, namespace, or hostname. If 1 of 2 Gateway listeners accept attachment from the referencing Route, the Route MUST be considered successfully attached. If no Gateway listeners accept attachment from this Route, the Route MUST be considered detached from the Gateway. \\n Support: Extended \\n <gateway:experimental>\"\n                                    type: integer\n                                    format: int32\n                                    maximum: 65535\n                                    minimum: 1\n                                  sectionName:\n                                    description: \"SectionName is the name of a section within the target resource. In the following resources, SectionName is interpreted as the following: \\n * Gateway: Listener Name. When both Port (experimental) and SectionName are specified, the name and port of the selected listener must match both specified values. \\n Implementations MAY choose to support attaching Routes to other resources. If that is the case, they MUST clearly document how SectionName is interpreted. \\n When unspecified (empty string), this will reference the entire resource. For the purpose of status, an attachment is considered successful if at least one section in the parent resource accepts it. For example, Gateway listeners can restrict which Routes can attach to them by Route kind, namespace, or hostname. If 1 of 2 Gateway listeners accept attachment from the referencing Route, the Route MUST be considered successfully attached. If no Gateway listeners accept attachment from this Route, the Route MUST be considered detached from the Gateway. \\n Support: Core\"\n                                    type: string\n                                    maxLength: 253\n                                    minLength: 1\n                                    pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$\n                            serviceType:\n                              description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP. If unset, defaults to NodePort.\n                              type: string\n                        ingress:\n                          description: The ingress based HTTP01 challenge solver will solve challenges by creating or modifying Ingress resources in order to route requests for '/.well-known/acme-challenge/XYZ' to 'challenge solver' pods that are provisioned by cert-manager for each Challenge to be completed.\n                          type: object\n                          properties:\n                            class:\n                              description: The ingress class to use when creating Ingress resources to solve ACME challenges that use this challenge solver. Only one of 'class' or 'name' may be specified.\n                              type: string\n                            ingressTemplate:\n                              description: Optional ingress template used to configure the ACME challenge solver ingress used for HTTP01 challenges.\n                              type: object\n                              properties:\n                                metadata:\n                                  description: ObjectMeta overrides for the ingress used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.\n                                  type: object\n                                  properties:\n                                    annotations:\n                                      description: Annotations that should be added to the created ACME HTTP01 solver ingress.\n                                      type: object\n                                      additionalProperties:\n                                        type: string\n                                    labels:\n                                      description: Labels that should be added to the created ACME HTTP01 solver ingress.\n                                      type: object\n                                      additionalProperties:\n                                        type: string\n                            name:\n                              description: The name of the ingress resource that should have ACME challenge solving routes inserted into it in order to solve HTTP01 challenges. This is typically used in conjunction with ingress controllers like ingress-gce, which maintains a 1:1 mapping between external IPs and ingress resources.\n                              type: string\n                            podTemplate:\n                              description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges.\n                              type: object\n                              properties:\n                                metadata:\n                                  description: ObjectMeta overrides for the pod used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.\n                                  type: object\n                                  properties:\n                                    annotations:\n                                      description: Annotations that should be added to the create ACME HTTP01 solver pods.\n                                      type: object\n                                      additionalProperties:\n                                        type: string\n                                    labels:\n                                      description: Labels that should be added to the created ACME HTTP01 solver pods.\n                                      type: object\n                                      additionalProperties:\n                                        type: string\n                                spec:\n                                  description: PodSpec defines overrides for the HTTP01 challenge solver pod. Only the 'priorityClassName', 'nodeSelector', 'affinity', 'serviceAccountName' and 'tolerations' fields are supported currently. All other fields will be ignored.\n                                  type: object\n                                  properties:\n                                    affinity:\n                                      description: If specified, the pod's scheduling constraints\n                                      type: object\n                                      properties:\n                                        nodeAffinity:\n                                          description: Describes node affinity scheduling rules for the pod.\n                                          type: object\n                                          properties:\n                                            preferredDuringSchedulingIgnoredDuringExecution:\n                                              description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n                                              type: array\n                                              items:\n                                                description: An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\n                                                type: object\n                                                required:\n                                                  - preference\n                                                  - weight\n                                                properties:\n                                                  preference:\n                                                    description: A node selector term, associated with the corresponding weight.\n                                                    type: object\n                                                    properties:\n                                                      matchExpressions:\n                                                        description: A list of node selector requirements by node's labels.\n                                                        type: array\n                                                        items:\n                                                          description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                          type: object\n                                                          required:\n                                                            - key\n                                                            - operator\n                                                          properties:\n                                                            key:\n                                                              description: The label key that the selector applies to.\n                                                              type: string\n                                                            operator:\n                                                              description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                              type: string\n                                                            values:\n                                                              description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                                              type: array\n                                                              items:\n                                                                type: string\n                                                      matchFields:\n                                                        description: A list of node selector requirements by node's fields.\n                                                        type: array\n                                                        items:\n                                                          description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                          type: object\n                                                          required:\n                                                            - key\n                                                            - operator\n                                                          properties:\n                                                            key:\n                                                              description: The label key that the selector applies to.\n                                                              type: string\n                                                            operator:\n                                                              description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                              type: string\n                                                            values:\n                                                              description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                                              type: array\n                                                              items:\n                                                                type: string\n                                                    x-kubernetes-map-type: atomic\n                                                  weight:\n                                                    description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\n                                                    type: integer\n                                                    format: int32\n                                            requiredDuringSchedulingIgnoredDuringExecution:\n                                              description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.\n                                              type: object\n                                              required:\n                                                - nodeSelectorTerms\n                                              properties:\n                                                nodeSelectorTerms:\n                                                  description: Required. A list of node selector terms. The terms are ORed.\n                                                  type: array\n                                                  items:\n                                                    description: A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\n                                                    type: object\n                                                    properties:\n                                                      matchExpressions:\n                                                        description: A list of node selector requirements by node's labels.\n                                                        type: array\n                                                        items:\n                                                          description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                          type: object\n                                                          required:\n                                                            - key\n                                                            - operator\n                                                          properties:\n                                                            key:\n                                                              description: The label key that the selector applies to.\n                                                              type: string\n                                                            operator:\n                                                              description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                              type: string\n                                                            values:\n                                                              description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                                              type: array\n                                                              items:\n                                                                type: string\n                                                      matchFields:\n                                                        description: A list of node selector requirements by node's fields.\n                                                        type: array\n                                                        items:\n                                                          description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                          type: object\n                                                          required:\n                                                            - key\n                                                            - operator\n                                                          properties:\n                                                            key:\n                                                              description: The label key that the selector applies to.\n                                                              type: string\n                                                            operator:\n                                                              description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                              type: string\n                                                            values:\n                                                              description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                                              type: array\n                                                              items:\n                                                                type: string\n                                                    x-kubernetes-map-type: atomic\n                                              x-kubernetes-map-type: atomic\n                                        podAffinity:\n                                          description: Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\n                                          type: object\n                                          properties:\n                                            preferredDuringSchedulingIgnoredDuringExecution:\n                                              description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n                                              type: array\n                                              items:\n                                                description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\n                                                type: object\n                                                required:\n                                                  - podAffinityTerm\n                                                  - weight\n                                                properties:\n                                                  podAffinityTerm:\n                                                    description: Required. A pod affinity term, associated with the corresponding weight.\n                                                    type: object\n                                                    required:\n                                                      - topologyKey\n                                                    properties:\n                                                      labelSelector:\n                                                        description: A label query over a set of resources, in this case pods.\n                                                        type: object\n                                                        properties:\n                                                          matchExpressions:\n                                                            description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                            type: array\n                                                            items:\n                                                              description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                              type: object\n                                                              required:\n                                                                - key\n                                                                - operator\n                                                              properties:\n                                                                key:\n                                                                  description: key is the label key that the selector applies to.\n                                                                  type: string\n                                                                operator:\n                                                                  description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                  type: string\n                                                                values:\n                                                                  description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                  type: array\n                                                                  items:\n                                                                    type: string\n                                                          matchLabels:\n                                                            description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                            type: object\n                                                            additionalProperties:\n                                                              type: string\n                                                        x-kubernetes-map-type: atomic\n                                                      namespaceSelector:\n                                                        description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                                                        type: object\n                                                        properties:\n                                                          matchExpressions:\n                                                            description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                            type: array\n                                                            items:\n                                                              description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                              type: object\n                                                              required:\n                                                                - key\n                                                                - operator\n                                                              properties:\n                                                                key:\n                                                                  description: key is the label key that the selector applies to.\n                                                                  type: string\n                                                                operator:\n                                                                  description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                  type: string\n                                                                values:\n                                                                  description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                  type: array\n                                                                  items:\n                                                                    type: string\n                                                          matchLabels:\n                                                            description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                            type: object\n                                                            additionalProperties:\n                                                              type: string\n                                                        x-kubernetes-map-type: atomic\n                                                      namespaces:\n                                                        description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                                        type: array\n                                                        items:\n                                                          type: string\n                                                      topologyKey:\n                                                        description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                                                        type: string\n                                                  weight:\n                                                    description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.\n                                                    type: integer\n                                                    format: int32\n                                            requiredDuringSchedulingIgnoredDuringExecution:\n                                              description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n                                              type: array\n                                              items:\n                                                description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running\n                                                type: object\n                                                required:\n                                                  - topologyKey\n                                                properties:\n                                                  labelSelector:\n                                                    description: A label query over a set of resources, in this case pods.\n                                                    type: object\n                                                    properties:\n                                                      matchExpressions:\n                                                        description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                        type: array\n                                                        items:\n                                                          description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                          type: object\n                                                          required:\n                                                            - key\n                                                            - operator\n                                                          properties:\n                                                            key:\n                                                              description: key is the label key that the selector applies to.\n                                                              type: string\n                                                            operator:\n                                                              description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                              type: string\n                                                            values:\n                                                              description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                              type: array\n                                                              items:\n                                                                type: string\n                                                      matchLabels:\n                                                        description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                        type: object\n                                                        additionalProperties:\n                                                          type: string\n                                                    x-kubernetes-map-type: atomic\n                                                  namespaceSelector:\n                                                    description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                                                    type: object\n                                                    properties:\n                                                      matchExpressions:\n                                                        description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                        type: array\n                                                        items:\n                                                          description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                          type: object\n                                                          required:\n                                                            - key\n                                                            - operator\n                                                          properties:\n                                                            key:\n                                                              description: key is the label key that the selector applies to.\n                                                              type: string\n                                                            operator:\n                                                              description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                              type: string\n                                                            values:\n                                                              description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                              type: array\n                                                              items:\n                                                                type: string\n                                                      matchLabels:\n                                                        description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                        type: object\n                                                        additionalProperties:\n                                                          type: string\n                                                    x-kubernetes-map-type: atomic\n                                                  namespaces:\n                                                    description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                                    type: array\n                                                    items:\n                                                      type: string\n                                                  topologyKey:\n                                                    description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                                                    type: string\n                                        podAntiAffinity:\n                                          description: Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\n                                          type: object\n                                          properties:\n                                            preferredDuringSchedulingIgnoredDuringExecution:\n                                              description: The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n                                              type: array\n                                              items:\n                                                description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\n                                                type: object\n                                                required:\n                                                  - podAffinityTerm\n                                                  - weight\n                                                properties:\n                                                  podAffinityTerm:\n                                                    description: Required. A pod affinity term, associated with the corresponding weight.\n                                                    type: object\n                                                    required:\n                                                      - topologyKey\n                                                    properties:\n                                                      labelSelector:\n                                                        description: A label query over a set of resources, in this case pods.\n                                                        type: object\n                                                        properties:\n                                                          matchExpressions:\n                                                            description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                            type: array\n                                                            items:\n                                                              description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                              type: object\n                                                              required:\n                                                                - key\n                                                                - operator\n                                                              properties:\n                                                                key:\n                                                                  description: key is the label key that the selector applies to.\n                                                                  type: string\n                                                                operator:\n                                                                  description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                  type: string\n                                                                values:\n                                                                  description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                  type: array\n                                                                  items:\n                                                                    type: string\n                                                          matchLabels:\n                                                            description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                            type: object\n                                                            additionalProperties:\n                                                              type: string\n                                                        x-kubernetes-map-type: atomic\n                                                      namespaceSelector:\n                                                        description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                                                        type: object\n                                                        properties:\n                                                          matchExpressions:\n                                                            description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                            type: array\n                                                            items:\n                                                              description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                              type: object\n                                                              required:\n                                                                - key\n                                                                - operator\n                                                              properties:\n                                                                key:\n                                                                  description: key is the label key that the selector applies to.\n                                                                  type: string\n                                                                operator:\n                                                                  description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                  type: string\n                                                                values:\n                                                                  description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                  type: array\n                                                                  items:\n                                                                    type: string\n                                                          matchLabels:\n                                                            description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                            type: object\n                                                            additionalProperties:\n                                                              type: string\n                                                        x-kubernetes-map-type: atomic\n                                                      namespaces:\n                                                        description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                                        type: array\n                                                        items:\n                                                          type: string\n                                                      topologyKey:\n                                                        description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                                                        type: string\n                                                  weight:\n                                                    description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.\n                                                    type: integer\n                                                    format: int32\n                                            requiredDuringSchedulingIgnoredDuringExecution:\n                                              description: If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n                                              type: array\n                                              items:\n                                                description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running\n                                                type: object\n                                                required:\n                                                  - topologyKey\n                                                properties:\n                                                  labelSelector:\n                                                    description: A label query over a set of resources, in this case pods.\n                                                    type: object\n                                                    properties:\n                                                      matchExpressions:\n                                                        description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                        type: array\n                                                        items:\n                                                          description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                          type: object\n                                                          required:\n                                                            - key\n                                                            - operator\n                                                          properties:\n                                                            key:\n                                                              description: key is the label key that the selector applies to.\n                                                              type: string\n                                                            operator:\n                                                              description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                              type: string\n                                                            values:\n                                                              description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                              type: array\n                                                              items:\n                                                                type: string\n                                                      matchLabels:\n                                                        description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                        type: object\n                                                        additionalProperties:\n                                                          type: string\n                                                    x-kubernetes-map-type: atomic\n                                                  namespaceSelector:\n                                                    description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                                                    type: object\n                                                    properties:\n                                                      matchExpressions:\n                                                        description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                        type: array\n                                                        items:\n                                                          description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                          type: object\n                                                          required:\n                                                            - key\n                                                            - operator\n                                                          properties:\n                                                            key:\n                                                              description: key is the label key that the selector applies to.\n                                                              type: string\n                                                            operator:\n                                                              description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                              type: string\n                                                            values:\n                                                              description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                              type: array\n                                                              items:\n                                                                type: string\n                                                      matchLabels:\n                                                        description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                        type: object\n                                                        additionalProperties:\n                                                          type: string\n                                                    x-kubernetes-map-type: atomic\n                                                  namespaces:\n                                                    description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                                    type: array\n                                                    items:\n                                                      type: string\n                                                  topologyKey:\n                                                    description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                                                    type: string\n                                    nodeSelector:\n                                      description: 'NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node''s labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/'\n                                      type: object\n                                      additionalProperties:\n                                        type: string\n                                    priorityClassName:\n                                      description: If specified, the pod's priorityClassName.\n                                      type: string\n                                    serviceAccountName:\n                                      description: If specified, the pod's service account\n                                      type: string\n                                    tolerations:\n                                      description: If specified, the pod's tolerations.\n                                      type: array\n                                      items:\n                                        description: The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.\n                                        type: object\n                                        properties:\n                                          effect:\n                                            description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\n                                            type: string\n                                          key:\n                                            description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.\n                                            type: string\n                                          operator:\n                                            description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.\n                                            type: string\n                                          tolerationSeconds:\n                                            description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.\n                                            type: integer\n                                            format: int64\n                                          value:\n                                            description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.\n                                            type: string\n                            serviceType:\n                              description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP. If unset, defaults to NodePort.\n                              type: string\n                    selector:\n                      description: Selector selects a set of DNSNames on the Certificate resource that should be solved using this challenge solver. If not specified, the solver will be treated as the 'default' solver with the lowest priority, i.e. if any other solver has a more specific match, it will be used instead.\n                      type: object\n                      properties:\n                        dnsNames:\n                          description: List of DNSNames that this solver will be used to solve. If specified and a match is found, a dnsNames selector will take precedence over a dnsZones selector. If multiple solvers match with the same dnsNames value, the solver with the most matching labels in matchLabels will be selected. If neither has more matches, the solver defined earlier in the list will be selected.\n                          type: array\n                          items:\n                            type: string\n                        dnsZones:\n                          description: List of DNSZones that this solver will be used to solve. The most specific DNS zone match specified here will take precedence over other DNS zone matches, so a solver specifying sys.example.com will be selected over one specifying example.com for the domain www.sys.example.com. If multiple solvers match with the same dnsZones value, the solver with the most matching labels in matchLabels will be selected. If neither has more matches, the solver defined earlier in the list will be selected.\n                          type: array\n                          items:\n                            type: string\n                        matchLabels:\n                          description: A label selector that is used to refine the set of certificate's that this challenge solver will apply to.\n                          type: object\n                          additionalProperties:\n                            type: string\n                token:\n                  description: The ACME challenge token for this challenge. This is the raw value returned from the ACME server.\n                  type: string\n                type:\n                  description: The type of ACME challenge this resource represents. One of \"HTTP-01\" or \"DNS-01\".\n                  type: string\n                  enum:\n                    - HTTP-01\n                    - DNS-01\n                url:\n                  description: The URL of the ACME Challenge resource for this challenge. This can be used to lookup details about the status of this challenge.\n                  type: string\n                wildcard:\n                  description: wildcard will be true if this challenge is for a wildcard identifier, for example '*.example.com'.\n                  type: boolean\n            status:\n              type: object\n              properties:\n                presented:\n                  description: presented will be set to true if the challenge values for this challenge are currently 'presented'. This *does not* imply the self check is passing. Only that the values have been 'submitted' for the appropriate challenge mechanism (i.e. the DNS01 TXT record has been presented, or the HTTP01 configuration has been configured).\n                  type: boolean\n                processing:\n                  description: Used to denote whether this challenge should be processed or not. This field will only be set to true by the 'scheduling' component. It will only be set to false by the 'challenges' controller, after the challenge has reached a final state or timed out. If this field is set to false, the challenge controller will not take any more action.\n                  type: boolean\n                reason:\n                  description: Contains human readable information on why the Challenge is in the current state.\n                  type: string\n                state:\n                  description: Contains the current 'state' of the challenge. If not set, the state of the challenge is unknown.\n                  type: string\n                  enum:\n                    - valid\n                    - ready\n                    - pending\n                    - processing\n                    - invalid\n                    - expired\n                    - errored\n      served: true\n      storage: true\n      subresources:\n        status: {}\n---\n# Source: cert-manager/templates/crds.yaml\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  name: certificaterequests.cert-manager.io\n  labels:\n    app: 'cert-manager'\n    app.kubernetes.io/name: 'cert-manager'\n    app.kubernetes.io/instance: 'cert-manager'\n    # Generated labels\n    app.kubernetes.io/version: \"v1.10.0\"\nspec:\n  group: cert-manager.io\n  names:\n    kind: CertificateRequest\n    listKind: CertificateRequestList\n    plural: certificaterequests\n    shortNames:\n      - cr\n      - crs\n    singular: certificaterequest\n    categories:\n      - cert-manager\n  scope: Namespaced\n  versions:\n    - name: v1\n      subresources:\n        status: {}\n      additionalPrinterColumns:\n        - jsonPath: .status.conditions[?(@.type==\"Approved\")].status\n          name: Approved\n          type: string\n        - jsonPath: .status.conditions[?(@.type==\"Denied\")].status\n          name: Denied\n          type: string\n        - jsonPath: .status.conditions[?(@.type==\"Ready\")].status\n          name: Ready\n          type: string\n        - jsonPath: .spec.issuerRef.name\n          name: Issuer\n          type: string\n        - jsonPath: .spec.username\n          name: Requestor\n          type: string\n        - jsonPath: .status.conditions[?(@.type==\"Ready\")].message\n          name: Status\n          priority: 1\n          type: string\n        - jsonPath: .metadata.creationTimestamp\n          description: CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n          name: Age\n          type: date\n      schema:\n        openAPIV3Schema:\n          description: \"A CertificateRequest is used to request a signed certificate from one of the configured issuers. \\n All fields within the CertificateRequest's `spec` are immutable after creation. A CertificateRequest will either succeed or fail, as denoted by its `status.state` field. \\n A CertificateRequest is a one-shot resource, meaning it represents a single point in time request for a certificate and cannot be re-used.\"\n          type: object\n          required:\n            - spec\n          properties:\n            apiVersion:\n              description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n              type: string\n            kind:\n              description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n              type: string\n            metadata:\n              type: object\n            spec:\n              description: Desired state of the CertificateRequest resource.\n              type: object\n              required:\n                - issuerRef\n                - request\n              properties:\n                duration:\n                  description: The requested 'duration' (i.e. lifetime) of the Certificate. This option may be ignored/overridden by some issuer types.\n                  type: string\n                extra:\n                  description: Extra contains extra attributes of the user that created the CertificateRequest. Populated by the cert-manager webhook on creation and immutable.\n                  type: object\n                  additionalProperties:\n                    type: array\n                    items:\n                      type: string\n                groups:\n                  description: Groups contains group membership of the user that created the CertificateRequest. Populated by the cert-manager webhook on creation and immutable.\n                  type: array\n                  items:\n                    type: string\n                  x-kubernetes-list-type: atomic\n                isCA:\n                  description: IsCA will request to mark the certificate as valid for certificate signing when submitting to the issuer. This will automatically add the `cert sign` usage to the list of `usages`.\n                  type: boolean\n                issuerRef:\n                  description: IssuerRef is a reference to the issuer for this CertificateRequest.  If the `kind` field is not set, or set to `Issuer`, an Issuer resource with the given name in the same namespace as the CertificateRequest will be used.  If the `kind` field is set to `ClusterIssuer`, a ClusterIssuer with the provided name will be used. The `name` field in this stanza is required at all times. The group field refers to the API group of the issuer which defaults to `cert-manager.io` if empty.\n                  type: object\n                  required:\n                    - name\n                  properties:\n                    group:\n                      description: Group of the resource being referred to.\n                      type: string\n                    kind:\n                      description: Kind of the resource being referred to.\n                      type: string\n                    name:\n                      description: Name of the resource being referred to.\n                      type: string\n                request:\n                  description: The PEM-encoded x509 certificate signing request to be submitted to the CA for signing.\n                  type: string\n                  format: byte\n                uid:\n                  description: UID contains the uid of the user that created the CertificateRequest. Populated by the cert-manager webhook on creation and immutable.\n                  type: string\n                usages:\n                  description: Usages is the set of x509 usages that are requested for the certificate. If usages are set they SHOULD be encoded inside the CSR spec Defaults to `digital signature` and `key encipherment` if not specified.\n                  type: array\n                  items:\n                    description: \"KeyUsage specifies valid usage contexts for keys. See: https://tools.ietf.org/html/rfc5280#section-4.2.1.3 https://tools.ietf.org/html/rfc5280#section-4.2.1.12 \\n Valid KeyUsage values are as follows: \\\"signing\\\", \\\"digital signature\\\", \\\"content commitment\\\", \\\"key encipherment\\\", \\\"key agreement\\\", \\\"data encipherment\\\", \\\"cert sign\\\", \\\"crl sign\\\", \\\"encipher only\\\", \\\"decipher only\\\", \\\"any\\\", \\\"server auth\\\", \\\"client auth\\\", \\\"code signing\\\", \\\"email protection\\\", \\\"s/mime\\\", \\\"ipsec end system\\\", \\\"ipsec tunnel\\\", \\\"ipsec user\\\", \\\"timestamping\\\", \\\"ocsp signing\\\", \\\"microsoft sgc\\\", \\\"netscape sgc\\\"\"\n                    type: string\n                    enum:\n                      - signing\n                      - digital signature\n                      - content commitment\n                      - key encipherment\n                      - key agreement\n                      - data encipherment\n                      - cert sign\n                      - crl sign\n                      - encipher only\n                      - decipher only\n                      - any\n                      - server auth\n                      - client auth\n                      - code signing\n                      - email protection\n                      - s/mime\n                      - ipsec end system\n                      - ipsec tunnel\n                      - ipsec user\n                      - timestamping\n                      - ocsp signing\n                      - microsoft sgc\n                      - netscape sgc\n                username:\n                  description: Username contains the name of the user that created the CertificateRequest. Populated by the cert-manager webhook on creation and immutable.\n                  type: string\n            status:\n              description: Status of the CertificateRequest. This is set and managed automatically.\n              type: object\n              properties:\n                ca:\n                  description: The PEM encoded x509 certificate of the signer, also known as the CA (Certificate Authority). This is set on a best-effort basis by different issuers. If not set, the CA is assumed to be unknown/not available.\n                  type: string\n                  format: byte\n                certificate:\n                  description: The PEM encoded x509 certificate resulting from the certificate signing request. If not set, the CertificateRequest has either not been completed or has failed. More information on failure can be found by checking the `conditions` field.\n                  type: string\n                  format: byte\n                conditions:\n                  description: List of status conditions to indicate the status of a CertificateRequest. Known condition types are `Ready` and `InvalidRequest`.\n                  type: array\n                  items:\n                    description: CertificateRequestCondition contains condition information for a CertificateRequest.\n                    type: object\n                    required:\n                      - status\n                      - type\n                    properties:\n                      lastTransitionTime:\n                        description: LastTransitionTime is the timestamp corresponding to the last status change of this condition.\n                        type: string\n                        format: date-time\n                      message:\n                        description: Message is a human readable description of the details of the last transition, complementing reason.\n                        type: string\n                      reason:\n                        description: Reason is a brief machine readable explanation for the condition's last transition.\n                        type: string\n                      status:\n                        description: Status of the condition, one of (`True`, `False`, `Unknown`).\n                        type: string\n                        enum:\n                          - \"True\"\n                          - \"False\"\n                          - Unknown\n                      type:\n                        description: Type of the condition, known values are (`Ready`, `InvalidRequest`, `Approved`, `Denied`).\n                        type: string\n                  x-kubernetes-list-map-keys:\n                    - type\n                  x-kubernetes-list-type: map\n                failureTime:\n                  description: FailureTime stores the time that this CertificateRequest failed. This is used to influence garbage collection and back-off.\n                  type: string\n                  format: date-time\n      served: true\n      storage: true\n---\n# Source: cert-manager/templates/crds.yaml\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  name: issuers.cert-manager.io\n  labels:\n    app: 'cert-manager'\n    app.kubernetes.io/name: 'cert-manager'\n    app.kubernetes.io/instance: 'cert-manager'\n    # Generated labels\n    app.kubernetes.io/version: \"v1.10.0\"\nspec:\n  group: cert-manager.io\n  names:\n    kind: Issuer\n    listKind: IssuerList\n    plural: issuers\n    singular: issuer\n    categories:\n      - cert-manager\n  scope: Namespaced\n  versions:\n    - name: v1\n      subresources:\n        status: {}\n      additionalPrinterColumns:\n        - jsonPath: .status.conditions[?(@.type==\"Ready\")].status\n          name: Ready\n          type: string\n        - jsonPath: .status.conditions[?(@.type==\"Ready\")].message\n          name: Status\n          priority: 1\n          type: string\n        - jsonPath: .metadata.creationTimestamp\n          description: CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n          name: Age\n          type: date\n      schema:\n        openAPIV3Schema:\n          description: An Issuer represents a certificate issuing authority which can be referenced as part of `issuerRef` fields. It is scoped to a single namespace and can therefore only be referenced by resources within the same namespace.\n          type: object\n          required:\n            - spec\n          properties:\n            apiVersion:\n              description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n              type: string\n            kind:\n              description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n              type: string\n            metadata:\n              type: object\n            spec:\n              description: Desired state of the Issuer resource.\n              type: object\n              properties:\n                acme:\n                  description: ACME configures this issuer to communicate with a RFC8555 (ACME) server to obtain signed x509 certificates.\n                  type: object\n                  required:\n                    - privateKeySecretRef\n                    - server\n                  properties:\n                    disableAccountKeyGeneration:\n                      description: Enables or disables generating a new ACME account key. If true, the Issuer resource will *not* request a new account but will expect the account key to be supplied via an existing secret. If false, the cert-manager system will generate a new ACME account key for the Issuer. Defaults to false.\n                      type: boolean\n                    email:\n                      description: Email is the email address to be associated with the ACME account. This field is optional, but it is strongly recommended to be set. It will be used to contact you in case of issues with your account or certificates, including expiry notification emails. This field may be updated after the account is initially registered.\n                      type: string\n                    enableDurationFeature:\n                      description: Enables requesting a Not After date on certificates that matches the duration of the certificate. This is not supported by all ACME servers like Let's Encrypt. If set to true when the ACME server does not support it it will create an error on the Order. Defaults to false.\n                      type: boolean\n                    externalAccountBinding:\n                      description: ExternalAccountBinding is a reference to a CA external account of the ACME server. If set, upon registration cert-manager will attempt to associate the given external account credentials with the registered ACME account.\n                      type: object\n                      required:\n                        - keyID\n                        - keySecretRef\n                      properties:\n                        keyAlgorithm:\n                          description: 'Deprecated: keyAlgorithm field exists for historical compatibility reasons and should not be used. The algorithm is now hardcoded to HS256 in golang/x/crypto/acme.'\n                          type: string\n                          enum:\n                            - HS256\n                            - HS384\n                            - HS512\n                        keyID:\n                          description: keyID is the ID of the CA key that the External Account is bound to.\n                          type: string\n                        keySecretRef:\n                          description: keySecretRef is a Secret Key Selector referencing a data item in a Kubernetes Secret which holds the symmetric MAC key of the External Account Binding. The `key` is the index string that is paired with the key data in the Secret and should not be confused with the key data itself, or indeed with the External Account Binding keyID above. The secret key stored in the Secret **must** be un-padded, base64 URL encoded data.\n                          type: object\n                          required:\n                            - name\n                          properties:\n                            key:\n                              description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                              type: string\n                            name:\n                              description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                              type: string\n                    preferredChain:\n                      description: 'PreferredChain is the chain to use if the ACME server outputs multiple. PreferredChain is no guarantee that this one gets delivered by the ACME endpoint. For example, for Let''s Encrypt''s DST crosssign you would use: \"DST Root CA X3\" or \"ISRG Root X1\" for the newer Let''s Encrypt root CA. This value picks the first certificate bundle in the ACME alternative chains that has a certificate with this value as its issuer''s CN'\n                      type: string\n                      maxLength: 64\n                    privateKeySecretRef:\n                      description: PrivateKey is the name of a Kubernetes Secret resource that will be used to store the automatically generated ACME account private key. Optionally, a `key` may be specified to select a specific entry within the named Secret resource. If `key` is not specified, a default of `tls.key` will be used.\n                      type: object\n                      required:\n                        - name\n                      properties:\n                        key:\n                          description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                          type: string\n                        name:\n                          description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                          type: string\n                    server:\n                      description: 'Server is the URL used to access the ACME server''s ''directory'' endpoint. For example, for Let''s Encrypt''s staging endpoint, you would use: \"https://acme-staging-v02.api.letsencrypt.org/directory\". Only ACME v2 endpoints (i.e. RFC 8555) are supported.'\n                      type: string\n                    skipTLSVerify:\n                      description: Enables or disables validation of the ACME server TLS certificate. If true, requests to the ACME server will not have their TLS certificate validated (i.e. insecure connections will be allowed). Only enable this option in development environments. The cert-manager system installed roots will be used to verify connections to the ACME server if this is false. Defaults to false.\n                      type: boolean\n                    solvers:\n                      description: 'Solvers is a list of challenge solvers that will be used to solve ACME challenges for the matching domains. Solver configurations must be provided in order to obtain certificates from an ACME server. For more information, see: https://cert-manager.io/docs/configuration/acme/'\n                      type: array\n                      items:\n                        description: An ACMEChallengeSolver describes how to solve ACME challenges for the issuer it is part of. A selector may be provided to use different solving strategies for different DNS names. Only one of HTTP01 or DNS01 must be provided.\n                        type: object\n                        properties:\n                          dns01:\n                            description: Configures cert-manager to attempt to complete authorizations by performing the DNS01 challenge flow.\n                            type: object\n                            properties:\n                              acmeDNS:\n                                description: Use the 'ACME DNS' (https://github.com/joohoi/acme-dns) API to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - accountSecretRef\n                                  - host\n                                properties:\n                                  accountSecretRef:\n                                    description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  host:\n                                    type: string\n                              akamai:\n                                description: Use the Akamai DNS zone management API to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - accessTokenSecretRef\n                                  - clientSecretSecretRef\n                                  - clientTokenSecretRef\n                                  - serviceConsumerDomain\n                                properties:\n                                  accessTokenSecretRef:\n                                    description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  clientSecretSecretRef:\n                                    description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  clientTokenSecretRef:\n                                    description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  serviceConsumerDomain:\n                                    type: string\n                              azureDNS:\n                                description: Use the Microsoft Azure DNS API to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - resourceGroupName\n                                  - subscriptionID\n                                properties:\n                                  clientID:\n                                    description: if both this and ClientSecret are left unset MSI will be used\n                                    type: string\n                                  clientSecretSecretRef:\n                                    description: if both this and ClientID are left unset MSI will be used\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  environment:\n                                    description: name of the Azure environment (default AzurePublicCloud)\n                                    type: string\n                                    enum:\n                                      - AzurePublicCloud\n                                      - AzureChinaCloud\n                                      - AzureGermanCloud\n                                      - AzureUSGovernmentCloud\n                                  hostedZoneName:\n                                    description: name of the DNS zone that should be used\n                                    type: string\n                                  managedIdentity:\n                                    description: managed identity configuration, can not be used at the same time as clientID, clientSecretSecretRef or tenantID\n                                    type: object\n                                    properties:\n                                      clientID:\n                                        description: client ID of the managed identity, can not be used at the same time as resourceID\n                                        type: string\n                                      resourceID:\n                                        description: resource ID of the managed identity, can not be used at the same time as clientID\n                                        type: string\n                                  resourceGroupName:\n                                    description: resource group the DNS zone is located in\n                                    type: string\n                                  subscriptionID:\n                                    description: ID of the Azure subscription\n                                    type: string\n                                  tenantID:\n                                    description: when specifying ClientID and ClientSecret then this field is also needed\n                                    type: string\n                              cloudDNS:\n                                description: Use the Google Cloud DNS API to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - project\n                                properties:\n                                  hostedZoneName:\n                                    description: HostedZoneName is an optional field that tells cert-manager in which Cloud DNS zone the challenge record has to be created. If left empty cert-manager will automatically choose a zone.\n                                    type: string\n                                  project:\n                                    type: string\n                                  serviceAccountSecretRef:\n                                    description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                              cloudflare:\n                                description: Use the Cloudflare API to manage DNS01 challenge records.\n                                type: object\n                                properties:\n                                  apiKeySecretRef:\n                                    description: 'API key to use to authenticate with Cloudflare. Note: using an API token to authenticate is now the recommended method as it allows greater control of permissions.'\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  apiTokenSecretRef:\n                                    description: API token used to authenticate with Cloudflare.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  email:\n                                    description: Email of the account, only required when using API key based authentication.\n                                    type: string\n                              cnameStrategy:\n                                description: CNAMEStrategy configures how the DNS01 provider should handle CNAME records when found in DNS zones.\n                                type: string\n                                enum:\n                                  - None\n                                  - Follow\n                              digitalocean:\n                                description: Use the DigitalOcean DNS API to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - tokenSecretRef\n                                properties:\n                                  tokenSecretRef:\n                                    description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                              rfc2136:\n                                description: Use RFC2136 (\"Dynamic Updates in the Domain Name System\") (https://datatracker.ietf.org/doc/rfc2136/) to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - nameserver\n                                properties:\n                                  nameserver:\n                                    description: The IP address or hostname of an authoritative DNS server supporting RFC2136 in the form host:port. If the host is an IPv6 address it must be enclosed in square brackets (e.g [2001:db8::1]) ; port is optional. This field is required.\n                                    type: string\n                                  tsigAlgorithm:\n                                    description: 'The TSIG Algorithm configured in the DNS supporting RFC2136. Used only when ``tsigSecretSecretRef`` and ``tsigKeyName`` are defined. Supported values are (case-insensitive): ``HMACMD5`` (default), ``HMACSHA1``, ``HMACSHA256`` or ``HMACSHA512``.'\n                                    type: string\n                                  tsigKeyName:\n                                    description: The TSIG Key name configured in the DNS. If ``tsigSecretSecretRef`` is defined, this field is required.\n                                    type: string\n                                  tsigSecretSecretRef:\n                                    description: The name of the secret containing the TSIG value. If ``tsigKeyName`` is defined, this field is required.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                              route53:\n                                description: Use the AWS Route53 API to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - region\n                                properties:\n                                  accessKeyID:\n                                    description: 'The AccessKeyID is used for authentication. Cannot be set when SecretAccessKeyID is set. If neither the Access Key nor Key ID are set, we fall-back to using env vars, shared credentials file or AWS Instance metadata, see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials'\n                                    type: string\n                                  accessKeyIDSecretRef:\n                                    description: 'The SecretAccessKey is used for authentication. If set, pull the AWS access key ID from a key within a Kubernetes Secret. Cannot be set when AccessKeyID is set. If neither the Access Key nor Key ID are set, we fall-back to using env vars, shared credentials file or AWS Instance metadata, see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials'\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  hostedZoneID:\n                                    description: If set, the provider will manage only this zone in Route53 and will not do an lookup using the route53:ListHostedZonesByName api call.\n                                    type: string\n                                  region:\n                                    description: Always set the region when using AccessKeyID and SecretAccessKey\n                                    type: string\n                                  role:\n                                    description: Role is a Role ARN which the Route53 provider will assume using either the explicit credentials AccessKeyID/SecretAccessKey or the inferred credentials from environment variables, shared credentials file or AWS Instance metadata\n                                    type: string\n                                  secretAccessKeySecretRef:\n                                    description: 'The SecretAccessKey is used for authentication. If neither the Access Key nor Key ID are set, we fall-back to using env vars, shared credentials file or AWS Instance metadata, see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials'\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                              webhook:\n                                description: Configure an external webhook based DNS01 challenge solver to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - groupName\n                                  - solverName\n                                properties:\n                                  config:\n                                    description: Additional configuration that should be passed to the webhook apiserver when challenges are processed. This can contain arbitrary JSON data. Secret values should not be specified in this stanza. If secret values are needed (e.g. credentials for a DNS service), you should use a SecretKeySelector to reference a Secret resource. For details on the schema of this field, consult the webhook provider implementation's documentation.\n                                    x-kubernetes-preserve-unknown-fields: true\n                                  groupName:\n                                    description: The API group name that should be used when POSTing ChallengePayload resources to the webhook apiserver. This should be the same as the GroupName specified in the webhook provider implementation.\n                                    type: string\n                                  solverName:\n                                    description: The name of the solver to use, as defined in the webhook provider implementation. This will typically be the name of the provider, e.g. 'cloudflare'.\n                                    type: string\n                          http01:\n                            description: Configures cert-manager to attempt to complete authorizations by performing the HTTP01 challenge flow. It is not possible to obtain certificates for wildcard domain names (e.g. `*.example.com`) using the HTTP01 challenge mechanism.\n                            type: object\n                            properties:\n                              gatewayHTTPRoute:\n                                description: The Gateway API is a sig-network community API that models service networking in Kubernetes (https://gateway-api.sigs.k8s.io/). The Gateway solver will create HTTPRoutes with the specified labels in the same namespace as the challenge. This solver is experimental, and fields / behaviour may change in the future.\n                                type: object\n                                properties:\n                                  labels:\n                                    description: Custom labels that will be applied to HTTPRoutes created by cert-manager while solving HTTP-01 challenges.\n                                    type: object\n                                    additionalProperties:\n                                      type: string\n                                  parentRefs:\n                                    description: 'When solving an HTTP-01 challenge, cert-manager creates an HTTPRoute. cert-manager needs to know which parentRefs should be used when creating the HTTPRoute. Usually, the parentRef references a Gateway. See: https://gateway-api.sigs.k8s.io/v1alpha2/api-types/httproute/#attaching-to-gateways'\n                                    type: array\n                                    items:\n                                      description: \"ParentReference identifies an API object (usually a Gateway) that can be considered a parent of this resource (usually a route). The only kind of parent resource with \\\"Core\\\" support is Gateway. This API may be extended in the future to support additional kinds of parent resources, such as HTTPRoute. \\n The API object must be valid in the cluster; the Group and Kind must be registered in the cluster for this reference to be valid.\"\n                                      type: object\n                                      required:\n                                        - name\n                                      properties:\n                                        group:\n                                          description: \"Group is the group of the referent. \\n Support: Core\"\n                                          type: string\n                                          default: gateway.networking.k8s.io\n                                          maxLength: 253\n                                          pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$\n                                        kind:\n                                          description: \"Kind is kind of the referent. \\n Support: Core (Gateway) \\n Support: Custom (Other Resources)\"\n                                          type: string\n                                          default: Gateway\n                                          maxLength: 63\n                                          minLength: 1\n                                          pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$\n                                        name:\n                                          description: \"Name is the name of the referent. \\n Support: Core\"\n                                          type: string\n                                          maxLength: 253\n                                          minLength: 1\n                                        namespace:\n                                          description: \"Namespace is the namespace of the referent. When unspecified (or empty string), this refers to the local namespace of the Route. \\n Support: Core\"\n                                          type: string\n                                          maxLength: 63\n                                          minLength: 1\n                                          pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$\n                                        port:\n                                          description: \"Port is the network port this Route targets. It can be interpreted differently based on the type of parent resource. \\n When the parent resource is a Gateway, this targets all listeners listening on the specified port that also support this kind of Route(and select this Route). It's not recommended to set `Port` unless the networking behaviors specified in a Route must apply to a specific port as opposed to a listener(s) whose port(s) may be changed. When both Port and SectionName are specified, the name and port of the selected listener must match both specified values. \\n Implementations MAY choose to support other parent resources. Implementations supporting other types of parent resources MUST clearly document how/if Port is interpreted. \\n For the purpose of status, an attachment is considered successful as long as the parent resource accepts it partially. For example, Gateway listeners can restrict which Routes can attach to them by Route kind, namespace, or hostname. If 1 of 2 Gateway listeners accept attachment from the referencing Route, the Route MUST be considered successfully attached. If no Gateway listeners accept attachment from this Route, the Route MUST be considered detached from the Gateway. \\n Support: Extended \\n <gateway:experimental>\"\n                                          type: integer\n                                          format: int32\n                                          maximum: 65535\n                                          minimum: 1\n                                        sectionName:\n                                          description: \"SectionName is the name of a section within the target resource. In the following resources, SectionName is interpreted as the following: \\n * Gateway: Listener Name. When both Port (experimental) and SectionName are specified, the name and port of the selected listener must match both specified values. \\n Implementations MAY choose to support attaching Routes to other resources. If that is the case, they MUST clearly document how SectionName is interpreted. \\n When unspecified (empty string), this will reference the entire resource. For the purpose of status, an attachment is considered successful if at least one section in the parent resource accepts it. For example, Gateway listeners can restrict which Routes can attach to them by Route kind, namespace, or hostname. If 1 of 2 Gateway listeners accept attachment from the referencing Route, the Route MUST be considered successfully attached. If no Gateway listeners accept attachment from this Route, the Route MUST be considered detached from the Gateway. \\n Support: Core\"\n                                          type: string\n                                          maxLength: 253\n                                          minLength: 1\n                                          pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$\n                                  serviceType:\n                                    description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP. If unset, defaults to NodePort.\n                                    type: string\n                              ingress:\n                                description: The ingress based HTTP01 challenge solver will solve challenges by creating or modifying Ingress resources in order to route requests for '/.well-known/acme-challenge/XYZ' to 'challenge solver' pods that are provisioned by cert-manager for each Challenge to be completed.\n                                type: object\n                                properties:\n                                  class:\n                                    description: The ingress class to use when creating Ingress resources to solve ACME challenges that use this challenge solver. Only one of 'class' or 'name' may be specified.\n                                    type: string\n                                  ingressTemplate:\n                                    description: Optional ingress template used to configure the ACME challenge solver ingress used for HTTP01 challenges.\n                                    type: object\n                                    properties:\n                                      metadata:\n                                        description: ObjectMeta overrides for the ingress used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.\n                                        type: object\n                                        properties:\n                                          annotations:\n                                            description: Annotations that should be added to the created ACME HTTP01 solver ingress.\n                                            type: object\n                                            additionalProperties:\n                                              type: string\n                                          labels:\n                                            description: Labels that should be added to the created ACME HTTP01 solver ingress.\n                                            type: object\n                                            additionalProperties:\n                                              type: string\n                                  name:\n                                    description: The name of the ingress resource that should have ACME challenge solving routes inserted into it in order to solve HTTP01 challenges. This is typically used in conjunction with ingress controllers like ingress-gce, which maintains a 1:1 mapping between external IPs and ingress resources.\n                                    type: string\n                                  podTemplate:\n                                    description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges.\n                                    type: object\n                                    properties:\n                                      metadata:\n                                        description: ObjectMeta overrides for the pod used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.\n                                        type: object\n                                        properties:\n                                          annotations:\n                                            description: Annotations that should be added to the create ACME HTTP01 solver pods.\n                                            type: object\n                                            additionalProperties:\n                                              type: string\n                                          labels:\n                                            description: Labels that should be added to the created ACME HTTP01 solver pods.\n                                            type: object\n                                            additionalProperties:\n                                              type: string\n                                      spec:\n                                        description: PodSpec defines overrides for the HTTP01 challenge solver pod. Only the 'priorityClassName', 'nodeSelector', 'affinity', 'serviceAccountName' and 'tolerations' fields are supported currently. All other fields will be ignored.\n                                        type: object\n                                        properties:\n                                          affinity:\n                                            description: If specified, the pod's scheduling constraints\n                                            type: object\n                                            properties:\n                                              nodeAffinity:\n                                                description: Describes node affinity scheduling rules for the pod.\n                                                type: object\n                                                properties:\n                                                  preferredDuringSchedulingIgnoredDuringExecution:\n                                                    description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n                                                    type: array\n                                                    items:\n                                                      description: An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\n                                                      type: object\n                                                      required:\n                                                        - preference\n                                                        - weight\n                                                      properties:\n                                                        preference:\n                                                          description: A node selector term, associated with the corresponding weight.\n                                                          type: object\n                                                          properties:\n                                                            matchExpressions:\n                                                              description: A list of node selector requirements by node's labels.\n                                                              type: array\n                                                              items:\n                                                                description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: The label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                                    type: string\n                                                                  values:\n                                                                    description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                            matchFields:\n                                                              description: A list of node selector requirements by node's fields.\n                                                              type: array\n                                                              items:\n                                                                description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: The label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                                    type: string\n                                                                  values:\n                                                                    description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                          x-kubernetes-map-type: atomic\n                                                        weight:\n                                                          description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\n                                                          type: integer\n                                                          format: int32\n                                                  requiredDuringSchedulingIgnoredDuringExecution:\n                                                    description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.\n                                                    type: object\n                                                    required:\n                                                      - nodeSelectorTerms\n                                                    properties:\n                                                      nodeSelectorTerms:\n                                                        description: Required. A list of node selector terms. The terms are ORed.\n                                                        type: array\n                                                        items:\n                                                          description: A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\n                                                          type: object\n                                                          properties:\n                                                            matchExpressions:\n                                                              description: A list of node selector requirements by node's labels.\n                                                              type: array\n                                                              items:\n                                                                description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: The label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                                    type: string\n                                                                  values:\n                                                                    description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                            matchFields:\n                                                              description: A list of node selector requirements by node's fields.\n                                                              type: array\n                                                              items:\n                                                                description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: The label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                                    type: string\n                                                                  values:\n                                                                    description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                          x-kubernetes-map-type: atomic\n                                                    x-kubernetes-map-type: atomic\n                                              podAffinity:\n                                                description: Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\n                                                type: object\n                                                properties:\n                                                  preferredDuringSchedulingIgnoredDuringExecution:\n                                                    description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n                                                    type: array\n                                                    items:\n                                                      description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\n                                                      type: object\n                                                      required:\n                                                        - podAffinityTerm\n                                                        - weight\n                                                      properties:\n                                                        podAffinityTerm:\n                                                          description: Required. A pod affinity term, associated with the corresponding weight.\n                                                          type: object\n                                                          required:\n                                                            - topologyKey\n                                                          properties:\n                                                            labelSelector:\n                                                              description: A label query over a set of resources, in this case pods.\n                                                              type: object\n                                                              properties:\n                                                                matchExpressions:\n                                                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                                  type: array\n                                                                  items:\n                                                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                    type: object\n                                                                    required:\n                                                                      - key\n                                                                      - operator\n                                                                    properties:\n                                                                      key:\n                                                                        description: key is the label key that the selector applies to.\n                                                                        type: string\n                                                                      operator:\n                                                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                        type: string\n                                                                      values:\n                                                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                        type: array\n                                                                        items:\n                                                                          type: string\n                                                                matchLabels:\n                                                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                                  type: object\n                                                                  additionalProperties:\n                                                                    type: string\n                                                              x-kubernetes-map-type: atomic\n                                                            namespaceSelector:\n                                                              description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                                                              type: object\n                                                              properties:\n                                                                matchExpressions:\n                                                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                                  type: array\n                                                                  items:\n                                                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                    type: object\n                                                                    required:\n                                                                      - key\n                                                                      - operator\n                                                                    properties:\n                                                                      key:\n                                                                        description: key is the label key that the selector applies to.\n                                                                        type: string\n                                                                      operator:\n                                                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                        type: string\n                                                                      values:\n                                                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                        type: array\n                                                                        items:\n                                                                          type: string\n                                                                matchLabels:\n                                                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                                  type: object\n                                                                  additionalProperties:\n                                                                    type: string\n                                                              x-kubernetes-map-type: atomic\n                                                            namespaces:\n                                                              description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                                              type: array\n                                                              items:\n                                                                type: string\n                                                            topologyKey:\n                                                              description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                                                              type: string\n                                                        weight:\n                                                          description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.\n                                                          type: integer\n                                                          format: int32\n                                                  requiredDuringSchedulingIgnoredDuringExecution:\n                                                    description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n                                                    type: array\n                                                    items:\n                                                      description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running\n                                                      type: object\n                                                      required:\n                                                        - topologyKey\n                                                      properties:\n                                                        labelSelector:\n                                                          description: A label query over a set of resources, in this case pods.\n                                                          type: object\n                                                          properties:\n                                                            matchExpressions:\n                                                              description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                              type: array\n                                                              items:\n                                                                description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: key is the label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                    type: string\n                                                                  values:\n                                                                    description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                            matchLabels:\n                                                              description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                              type: object\n                                                              additionalProperties:\n                                                                type: string\n                                                          x-kubernetes-map-type: atomic\n                                                        namespaceSelector:\n                                                          description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                                                          type: object\n                                                          properties:\n                                                            matchExpressions:\n                                                              description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                              type: array\n                                                              items:\n                                                                description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: key is the label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                    type: string\n                                                                  values:\n                                                                    description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                            matchLabels:\n                                                              description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                              type: object\n                                                              additionalProperties:\n                                                                type: string\n                                                          x-kubernetes-map-type: atomic\n                                                        namespaces:\n                                                          description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                                          type: array\n                                                          items:\n                                                            type: string\n                                                        topologyKey:\n                                                          description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                                                          type: string\n                                              podAntiAffinity:\n                                                description: Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\n                                                type: object\n                                                properties:\n                                                  preferredDuringSchedulingIgnoredDuringExecution:\n                                                    description: The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n                                                    type: array\n                                                    items:\n                                                      description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\n                                                      type: object\n                                                      required:\n                                                        - podAffinityTerm\n                                                        - weight\n                                                      properties:\n                                                        podAffinityTerm:\n                                                          description: Required. A pod affinity term, associated with the corresponding weight.\n                                                          type: object\n                                                          required:\n                                                            - topologyKey\n                                                          properties:\n                                                            labelSelector:\n                                                              description: A label query over a set of resources, in this case pods.\n                                                              type: object\n                                                              properties:\n                                                                matchExpressions:\n                                                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                                  type: array\n                                                                  items:\n                                                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                    type: object\n                                                                    required:\n                                                                      - key\n                                                                      - operator\n                                                                    properties:\n                                                                      key:\n                                                                        description: key is the label key that the selector applies to.\n                                                                        type: string\n                                                                      operator:\n                                                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                        type: string\n                                                                      values:\n                                                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                        type: array\n                                                                        items:\n                                                                          type: string\n                                                                matchLabels:\n                                                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                                  type: object\n                                                                  additionalProperties:\n                                                                    type: string\n                                                              x-kubernetes-map-type: atomic\n                                                            namespaceSelector:\n                                                              description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                                                              type: object\n                                                              properties:\n                                                                matchExpressions:\n                                                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                                  type: array\n                                                                  items:\n                                                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                    type: object\n                                                                    required:\n                                                                      - key\n                                                                      - operator\n                                                                    properties:\n                                                                      key:\n                                                                        description: key is the label key that the selector applies to.\n                                                                        type: string\n                                                                      operator:\n                                                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                        type: string\n                                                                      values:\n                                                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                        type: array\n                                                                        items:\n                                                                          type: string\n                                                                matchLabels:\n                                                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                                  type: object\n                                                                  additionalProperties:\n                                                                    type: string\n                                                              x-kubernetes-map-type: atomic\n                                                            namespaces:\n                                                              description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                                              type: array\n                                                              items:\n                                                                type: string\n                                                            topologyKey:\n                                                              description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                                                              type: string\n                                                        weight:\n                                                          description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.\n                                                          type: integer\n                                                          format: int32\n                                                  requiredDuringSchedulingIgnoredDuringExecution:\n                                                    description: If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n                                                    type: array\n                                                    items:\n                                                      description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running\n                                                      type: object\n                                                      required:\n                                                        - topologyKey\n                                                      properties:\n                                                        labelSelector:\n                                                          description: A label query over a set of resources, in this case pods.\n                                                          type: object\n                                                          properties:\n                                                            matchExpressions:\n                                                              description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                              type: array\n                                                              items:\n                                                                description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: key is the label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                    type: string\n                                                                  values:\n                                                                    description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                            matchLabels:\n                                                              description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                              type: object\n                                                              additionalProperties:\n                                                                type: string\n                                                          x-kubernetes-map-type: atomic\n                                                        namespaceSelector:\n                                                          description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                                                          type: object\n                                                          properties:\n                                                            matchExpressions:\n                                                              description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                              type: array\n                                                              items:\n                                                                description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: key is the label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                    type: string\n                                                                  values:\n                                                                    description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                            matchLabels:\n                                                              description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                              type: object\n                                                              additionalProperties:\n                                                                type: string\n                                                          x-kubernetes-map-type: atomic\n                                                        namespaces:\n                                                          description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                                          type: array\n                                                          items:\n                                                            type: string\n                                                        topologyKey:\n                                                          description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                                                          type: string\n                                          nodeSelector:\n                                            description: 'NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node''s labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/'\n                                            type: object\n                                            additionalProperties:\n                                              type: string\n                                          priorityClassName:\n                                            description: If specified, the pod's priorityClassName.\n                                            type: string\n                                          serviceAccountName:\n                                            description: If specified, the pod's service account\n                                            type: string\n                                          tolerations:\n                                            description: If specified, the pod's tolerations.\n                                            type: array\n                                            items:\n                                              description: The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.\n                                              type: object\n                                              properties:\n                                                effect:\n                                                  description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\n                                                  type: string\n                                                key:\n                                                  description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.\n                                                  type: string\n                                                operator:\n                                                  description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.\n                                                  type: string\n                                                tolerationSeconds:\n                                                  description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.\n                                                  type: integer\n                                                  format: int64\n                                                value:\n                                                  description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.\n                                                  type: string\n                                  serviceType:\n                                    description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP. If unset, defaults to NodePort.\n                                    type: string\n                          selector:\n                            description: Selector selects a set of DNSNames on the Certificate resource that should be solved using this challenge solver. If not specified, the solver will be treated as the 'default' solver with the lowest priority, i.e. if any other solver has a more specific match, it will be used instead.\n                            type: object\n                            properties:\n                              dnsNames:\n                                description: List of DNSNames that this solver will be used to solve. If specified and a match is found, a dnsNames selector will take precedence over a dnsZones selector. If multiple solvers match with the same dnsNames value, the solver with the most matching labels in matchLabels will be selected. If neither has more matches, the solver defined earlier in the list will be selected.\n                                type: array\n                                items:\n                                  type: string\n                              dnsZones:\n                                description: List of DNSZones that this solver will be used to solve. The most specific DNS zone match specified here will take precedence over other DNS zone matches, so a solver specifying sys.example.com will be selected over one specifying example.com for the domain www.sys.example.com. If multiple solvers match with the same dnsZones value, the solver with the most matching labels in matchLabels will be selected. If neither has more matches, the solver defined earlier in the list will be selected.\n                                type: array\n                                items:\n                                  type: string\n                              matchLabels:\n                                description: A label selector that is used to refine the set of certificate's that this challenge solver will apply to.\n                                type: object\n                                additionalProperties:\n                                  type: string\n                ca:\n                  description: CA configures this issuer to sign certificates using a signing CA keypair stored in a Secret resource. This is used to build internal PKIs that are managed by cert-manager.\n                  type: object\n                  required:\n                    - secretName\n                  properties:\n                    crlDistributionPoints:\n                      description: The CRL distribution points is an X.509 v3 certificate extension which identifies the location of the CRL from which the revocation of this certificate can be checked. If not set, certificates will be issued without distribution points set.\n                      type: array\n                      items:\n                        type: string\n                    ocspServers:\n                      description: The OCSP server list is an X.509 v3 extension that defines a list of URLs of OCSP responders. The OCSP responders can be queried for the revocation status of an issued certificate. If not set, the certificate will be issued with no OCSP servers set. For example, an OCSP server URL could be \"http://ocsp.int-x3.letsencrypt.org\".\n                      type: array\n                      items:\n                        type: string\n                    secretName:\n                      description: SecretName is the name of the secret used to sign Certificates issued by this Issuer.\n                      type: string\n                selfSigned:\n                  description: SelfSigned configures this issuer to 'self sign' certificates using the private key used to create the CertificateRequest object.\n                  type: object\n                  properties:\n                    crlDistributionPoints:\n                      description: The CRL distribution points is an X.509 v3 certificate extension which identifies the location of the CRL from which the revocation of this certificate can be checked. If not set certificate will be issued without CDP. Values are strings.\n                      type: array\n                      items:\n                        type: string\n                vault:\n                  description: Vault configures this issuer to sign certificates using a HashiCorp Vault PKI backend.\n                  type: object\n                  required:\n                    - auth\n                    - path\n                    - server\n                  properties:\n                    auth:\n                      description: Auth configures how cert-manager authenticates with the Vault server.\n                      type: object\n                      properties:\n                        appRole:\n                          description: AppRole authenticates with Vault using the App Role auth mechanism, with the role and secret stored in a Kubernetes Secret resource.\n                          type: object\n                          required:\n                            - path\n                            - roleId\n                            - secretRef\n                          properties:\n                            path:\n                              description: 'Path where the App Role authentication backend is mounted in Vault, e.g: \"approle\"'\n                              type: string\n                            roleId:\n                              description: RoleID configured in the App Role authentication backend when setting up the authentication backend in Vault.\n                              type: string\n                            secretRef:\n                              description: Reference to a key in a Secret that contains the App Role secret used to authenticate with Vault. The `key` field must be specified and denotes which entry within the Secret resource is used as the app role secret.\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                        kubernetes:\n                          description: Kubernetes authenticates with Vault by passing the ServiceAccount token stored in the named Secret resource to the Vault server.\n                          type: object\n                          required:\n                            - role\n                            - secretRef\n                          properties:\n                            mountPath:\n                              description: The Vault mountPath here is the mount path to use when authenticating with Vault. For example, setting a value to `/v1/auth/foo`, will use the path `/v1/auth/foo/login` to authenticate with Vault. If unspecified, the default value \"/v1/auth/kubernetes\" will be used.\n                              type: string\n                            role:\n                              description: A required field containing the Vault Role to assume. A Role binds a Kubernetes ServiceAccount with a set of Vault policies.\n                              type: string\n                            secretRef:\n                              description: The required Secret field containing a Kubernetes ServiceAccount JWT used for authenticating with Vault. Use of 'ambient credentials' is not supported.\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                        tokenSecretRef:\n                          description: TokenSecretRef authenticates with Vault by presenting a token.\n                          type: object\n                          required:\n                            - name\n                          properties:\n                            key:\n                              description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                              type: string\n                            name:\n                              description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                              type: string\n                    caBundle:\n                      description: PEM-encoded CA bundle (base64-encoded) used to validate Vault server certificate. Only used if the Server URL is using HTTPS protocol. This parameter is ignored for plain HTTP protocol connection. If not set the system root certificates are used to validate the TLS connection. Mutually exclusive with CABundleSecretRef. If neither CABundle nor CABundleSecretRef are defined, the cert-manager controller system root certificates are used to validate the TLS connection.\n                      type: string\n                      format: byte\n                    caBundleSecretRef:\n                      description: CABundleSecretRef is a reference to a Secret which contains the CABundle which will be used when connecting to Vault when using HTTPS. Mutually exclusive with CABundle. If neither CABundleSecretRef nor CABundle are defined, the cert-manager controller system root certificates are used to validate the TLS connection. If no key for the Secret is specified, cert-manager will default to 'ca.crt'.\n                      type: object\n                      required:\n                        - name\n                      properties:\n                        key:\n                          description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                          type: string\n                        name:\n                          description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                          type: string\n                    namespace:\n                      description: 'Name of the vault namespace. Namespaces is a set of features within Vault Enterprise that allows Vault environments to support Secure Multi-tenancy. e.g: \"ns1\" More about namespaces can be found here https://www.vaultproject.io/docs/enterprise/namespaces'\n                      type: string\n                    path:\n                      description: 'Path is the mount path of the Vault PKI backend''s `sign` endpoint, e.g: \"my_pki_mount/sign/my-role-name\".'\n                      type: string\n                    server:\n                      description: 'Server is the connection address for the Vault server, e.g: \"https://vault.example.com:8200\".'\n                      type: string\n                venafi:\n                  description: Venafi configures this issuer to sign certificates using a Venafi TPP or Venafi Cloud policy zone.\n                  type: object\n                  required:\n                    - zone\n                  properties:\n                    cloud:\n                      description: Cloud specifies the Venafi cloud configuration settings. Only one of TPP or Cloud may be specified.\n                      type: object\n                      required:\n                        - apiTokenSecretRef\n                      properties:\n                        apiTokenSecretRef:\n                          description: APITokenSecretRef is a secret key selector for the Venafi Cloud API token.\n                          type: object\n                          required:\n                            - name\n                          properties:\n                            key:\n                              description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                              type: string\n                            name:\n                              description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                              type: string\n                        url:\n                          description: URL is the base URL for Venafi Cloud. Defaults to \"https://api.venafi.cloud/v1\".\n                          type: string\n                    tpp:\n                      description: TPP specifies Trust Protection Platform configuration settings. Only one of TPP or Cloud may be specified.\n                      type: object\n                      required:\n                        - credentialsRef\n                        - url\n                      properties:\n                        caBundle:\n                          description: CABundle is a PEM encoded TLS certificate to use to verify connections to the TPP instance. If specified, system roots will not be used and the issuing CA for the TPP instance must be verifiable using the provided root. If not specified, the connection will be verified using the cert-manager system root certificates.\n                          type: string\n                          format: byte\n                        credentialsRef:\n                          description: CredentialsRef is a reference to a Secret containing the username and password for the TPP server. The secret must contain two keys, 'username' and 'password'.\n                          type: object\n                          required:\n                            - name\n                          properties:\n                            name:\n                              description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                              type: string\n                        url:\n                          description: 'URL is the base URL for the vedsdk endpoint of the Venafi TPP instance, for example: \"https://tpp.example.com/vedsdk\".'\n                          type: string\n                    zone:\n                      description: Zone is the Venafi Policy Zone to use for this issuer. All requests made to the Venafi platform will be restricted by the named zone policy. This field is required.\n                      type: string\n            status:\n              description: Status of the Issuer. This is set and managed automatically.\n              type: object\n              properties:\n                acme:\n                  description: ACME specific status options. This field should only be set if the Issuer is configured to use an ACME server to issue certificates.\n                  type: object\n                  properties:\n                    lastRegisteredEmail:\n                      description: LastRegisteredEmail is the email associated with the latest registered ACME account, in order to track changes made to registered account associated with the  Issuer\n                      type: string\n                    uri:\n                      description: URI is the unique account identifier, which can also be used to retrieve account details from the CA\n                      type: string\n                conditions:\n                  description: List of status conditions to indicate the status of a CertificateRequest. Known condition types are `Ready`.\n                  type: array\n                  items:\n                    description: IssuerCondition contains condition information for an Issuer.\n                    type: object\n                    required:\n                      - status\n                      - type\n                    properties:\n                      lastTransitionTime:\n                        description: LastTransitionTime is the timestamp corresponding to the last status change of this condition.\n                        type: string\n                        format: date-time\n                      message:\n                        description: Message is a human readable description of the details of the last transition, complementing reason.\n                        type: string\n                      observedGeneration:\n                        description: If set, this represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.condition[x].observedGeneration is 9, the condition is out of date with respect to the current state of the Issuer.\n                        type: integer\n                        format: int64\n                      reason:\n                        description: Reason is a brief machine readable explanation for the condition's last transition.\n                        type: string\n                      status:\n                        description: Status of the condition, one of (`True`, `False`, `Unknown`).\n                        type: string\n                        enum:\n                          - \"True\"\n                          - \"False\"\n                          - Unknown\n                      type:\n                        description: Type of the condition, known values are (`Ready`).\n                        type: string\n                  x-kubernetes-list-map-keys:\n                    - type\n                  x-kubernetes-list-type: map\n      served: true\n      storage: true\n---\n# Source: cert-manager/templates/crds.yaml\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  name: certificates.cert-manager.io\n  labels:\n    app: 'cert-manager'\n    app.kubernetes.io/name: 'cert-manager'\n    app.kubernetes.io/instance: 'cert-manager'\n    # Generated labels\n    app.kubernetes.io/version: \"v1.10.0\"\nspec:\n  group: cert-manager.io\n  names:\n    kind: Certificate\n    listKind: CertificateList\n    plural: certificates\n    shortNames:\n      - cert\n      - certs\n    singular: certificate\n    categories:\n      - cert-manager\n  scope: Namespaced\n  versions:\n    - name: v1\n      subresources:\n        status: {}\n      additionalPrinterColumns:\n        - jsonPath: .status.conditions[?(@.type==\"Ready\")].status\n          name: Ready\n          type: string\n        - jsonPath: .spec.secretName\n          name: Secret\n          type: string\n        - jsonPath: .spec.issuerRef.name\n          name: Issuer\n          priority: 1\n          type: string\n        - jsonPath: .status.conditions[?(@.type==\"Ready\")].message\n          name: Status\n          priority: 1\n          type: string\n        - jsonPath: .metadata.creationTimestamp\n          description: CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n          name: Age\n          type: date\n      schema:\n        openAPIV3Schema:\n          description: \"A Certificate resource should be created to ensure an up to date and signed x509 certificate is stored in the Kubernetes Secret resource named in `spec.secretName`. \\n The stored certificate will be renewed before it expires (as configured by `spec.renewBefore`).\"\n          type: object\n          required:\n            - spec\n          properties:\n            apiVersion:\n              description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n              type: string\n            kind:\n              description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n              type: string\n            metadata:\n              type: object\n            spec:\n              description: Desired state of the Certificate resource.\n              type: object\n              required:\n                - issuerRef\n                - secretName\n              properties:\n                additionalOutputFormats:\n                  description: AdditionalOutputFormats defines extra output formats of the private key and signed certificate chain to be written to this Certificate's target Secret. This is an Alpha Feature and is only enabled with the `--feature-gates=AdditionalCertificateOutputFormats=true` option on both the controller and webhook components.\n                  type: array\n                  items:\n                    description: CertificateAdditionalOutputFormat defines an additional output format of a Certificate resource. These contain supplementary data formats of the signed certificate chain and paired private key.\n                    type: object\n                    required:\n                      - type\n                    properties:\n                      type:\n                        description: Type is the name of the format type that should be written to the Certificate's target Secret.\n                        type: string\n                        enum:\n                          - DER\n                          - CombinedPEM\n                commonName:\n                  description: 'CommonName is a common name to be used on the Certificate. The CommonName should have a length of 64 characters or fewer to avoid generating invalid CSRs. This value is ignored by TLS clients when any subject alt name is set. This is x509 behaviour: https://tools.ietf.org/html/rfc6125#section-6.4.4'\n                  type: string\n                dnsNames:\n                  description: DNSNames is a list of DNS subjectAltNames to be set on the Certificate.\n                  type: array\n                  items:\n                    type: string\n                duration:\n                  description: The requested 'duration' (i.e. lifetime) of the Certificate. This option may be ignored/overridden by some issuer types. If unset this defaults to 90 days. Certificate will be renewed either 2/3 through its duration or `renewBefore` period before its expiry, whichever is later. Minimum accepted duration is 1 hour. Value must be in units accepted by Go time.ParseDuration https://golang.org/pkg/time/#ParseDuration\n                  type: string\n                emailAddresses:\n                  description: EmailAddresses is a list of email subjectAltNames to be set on the Certificate.\n                  type: array\n                  items:\n                    type: string\n                encodeUsagesInRequest:\n                  description: EncodeUsagesInRequest controls whether key usages should be present in the CertificateRequest\n                  type: boolean\n                ipAddresses:\n                  description: IPAddresses is a list of IP address subjectAltNames to be set on the Certificate.\n                  type: array\n                  items:\n                    type: string\n                isCA:\n                  description: IsCA will mark this Certificate as valid for certificate signing. This will automatically add the `cert sign` usage to the list of `usages`.\n                  type: boolean\n                issuerRef:\n                  description: IssuerRef is a reference to the issuer for this certificate. If the `kind` field is not set, or set to `Issuer`, an Issuer resource with the given name in the same namespace as the Certificate will be used. If the `kind` field is set to `ClusterIssuer`, a ClusterIssuer with the provided name will be used. The `name` field in this stanza is required at all times.\n                  type: object\n                  required:\n                    - name\n                  properties:\n                    group:\n                      description: Group of the resource being referred to.\n                      type: string\n                    kind:\n                      description: Kind of the resource being referred to.\n                      type: string\n                    name:\n                      description: Name of the resource being referred to.\n                      type: string\n                keystores:\n                  description: Keystores configures additional keystore output formats stored in the `secretName` Secret resource.\n                  type: object\n                  properties:\n                    jks:\n                      description: JKS configures options for storing a JKS keystore in the `spec.secretName` Secret resource.\n                      type: object\n                      required:\n                        - create\n                        - passwordSecretRef\n                      properties:\n                        create:\n                          description: Create enables JKS keystore creation for the Certificate. If true, a file named `keystore.jks` will be created in the target Secret resource, encrypted using the password stored in `passwordSecretRef`. The keystore file will only be updated upon re-issuance. A file named `truststore.jks` will also be created in the target Secret resource, encrypted using the password stored in `passwordSecretRef` containing the issuing Certificate Authority\n                          type: boolean\n                        passwordSecretRef:\n                          description: PasswordSecretRef is a reference to a key in a Secret resource containing the password used to encrypt the JKS keystore.\n                          type: object\n                          required:\n                            - name\n                          properties:\n                            key:\n                              description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                              type: string\n                            name:\n                              description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                              type: string\n                    pkcs12:\n                      description: PKCS12 configures options for storing a PKCS12 keystore in the `spec.secretName` Secret resource.\n                      type: object\n                      required:\n                        - create\n                        - passwordSecretRef\n                      properties:\n                        create:\n                          description: Create enables PKCS12 keystore creation for the Certificate. If true, a file named `keystore.p12` will be created in the target Secret resource, encrypted using the password stored in `passwordSecretRef`. The keystore file will only be updated upon re-issuance. A file named `truststore.p12` will also be created in the target Secret resource, encrypted using the password stored in `passwordSecretRef` containing the issuing Certificate Authority\n                          type: boolean\n                        passwordSecretRef:\n                          description: PasswordSecretRef is a reference to a key in a Secret resource containing the password used to encrypt the PKCS12 keystore.\n                          type: object\n                          required:\n                            - name\n                          properties:\n                            key:\n                              description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                              type: string\n                            name:\n                              description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                              type: string\n                literalSubject:\n                  description: LiteralSubject is an LDAP formatted string that represents the [X.509 Subject field](https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6). Use this *instead* of the Subject field if you need to ensure the correct ordering of the RDN sequence, such as when issuing certs for LDAP authentication. See https://github.com/cert-manager/cert-manager/issues/3203, https://github.com/cert-manager/cert-manager/issues/4424. This field is alpha level and is only supported by cert-manager installations where LiteralCertificateSubject feature gate is enabled on both cert-manager controller and webhook.\n                  type: string\n                privateKey:\n                  description: Options to control private keys used for the Certificate.\n                  type: object\n                  properties:\n                    algorithm:\n                      description: Algorithm is the private key algorithm of the corresponding private key for this certificate. If provided, allowed values are either `RSA`,`Ed25519` or `ECDSA` If `algorithm` is specified and `size` is not provided, key size of 256 will be used for `ECDSA` key algorithm and key size of 2048 will be used for `RSA` key algorithm. key size is ignored when using the `Ed25519` key algorithm.\n                      type: string\n                      enum:\n                        - RSA\n                        - ECDSA\n                        - Ed25519\n                    encoding:\n                      description: The private key cryptography standards (PKCS) encoding for this certificate's private key to be encoded in. If provided, allowed values are `PKCS1` and `PKCS8` standing for PKCS#1 and PKCS#8, respectively. Defaults to `PKCS1` if not specified.\n                      type: string\n                      enum:\n                        - PKCS1\n                        - PKCS8\n                    rotationPolicy:\n                      description: RotationPolicy controls how private keys should be regenerated when a re-issuance is being processed. If set to Never, a private key will only be generated if one does not already exist in the target `spec.secretName`. If one does exists but it does not have the correct algorithm or size, a warning will be raised to await user intervention. If set to Always, a private key matching the specified requirements will be generated whenever a re-issuance occurs. Default is 'Never' for backward compatibility.\n                      type: string\n                      enum:\n                        - Never\n                        - Always\n                    size:\n                      description: Size is the key bit size of the corresponding private key for this certificate. If `algorithm` is set to `RSA`, valid values are `2048`, `4096` or `8192`, and will default to `2048` if not specified. If `algorithm` is set to `ECDSA`, valid values are `256`, `384` or `521`, and will default to `256` if not specified. If `algorithm` is set to `Ed25519`, Size is ignored. No other values are allowed.\n                      type: integer\n                renewBefore:\n                  description: How long before the currently issued certificate's expiry cert-manager should renew the certificate. The default is 2/3 of the issued certificate's duration. Minimum accepted value is 5 minutes. Value must be in units accepted by Go time.ParseDuration https://golang.org/pkg/time/#ParseDuration\n                  type: string\n                revisionHistoryLimit:\n                  description: revisionHistoryLimit is the maximum number of CertificateRequest revisions that are maintained in the Certificate's history. Each revision represents a single `CertificateRequest` created by this Certificate, either when it was created, renewed, or Spec was changed. Revisions will be removed by oldest first if the number of revisions exceeds this number. If set, revisionHistoryLimit must be a value of `1` or greater. If unset (`nil`), revisions will not be garbage collected. Default value is `nil`.\n                  type: integer\n                  format: int32\n                secretName:\n                  description: SecretName is the name of the secret resource that will be automatically created and managed by this Certificate resource. It will be populated with a private key and certificate, signed by the denoted issuer.\n                  type: string\n                secretTemplate:\n                  description: SecretTemplate defines annotations and labels to be copied to the Certificate's Secret. Labels and annotations on the Secret will be changed as they appear on the SecretTemplate when added or removed. SecretTemplate annotations are added in conjunction with, and cannot overwrite, the base set of annotations cert-manager sets on the Certificate's Secret.\n                  type: object\n                  properties:\n                    annotations:\n                      description: Annotations is a key value map to be copied to the target Kubernetes Secret.\n                      type: object\n                      additionalProperties:\n                        type: string\n                    labels:\n                      description: Labels is a key value map to be copied to the target Kubernetes Secret.\n                      type: object\n                      additionalProperties:\n                        type: string\n                subject:\n                  description: Full X509 name specification (https://golang.org/pkg/crypto/x509/pkix/#Name).\n                  type: object\n                  properties:\n                    countries:\n                      description: Countries to be used on the Certificate.\n                      type: array\n                      items:\n                        type: string\n                    localities:\n                      description: Cities to be used on the Certificate.\n                      type: array\n                      items:\n                        type: string\n                    organizationalUnits:\n                      description: Organizational Units to be used on the Certificate.\n                      type: array\n                      items:\n                        type: string\n                    organizations:\n                      description: Organizations to be used on the Certificate.\n                      type: array\n                      items:\n                        type: string\n                    postalCodes:\n                      description: Postal codes to be used on the Certificate.\n                      type: array\n                      items:\n                        type: string\n                    provinces:\n                      description: State/Provinces to be used on the Certificate.\n                      type: array\n                      items:\n                        type: string\n                    serialNumber:\n                      description: Serial number to be used on the Certificate.\n                      type: string\n                    streetAddresses:\n                      description: Street addresses to be used on the Certificate.\n                      type: array\n                      items:\n                        type: string\n                uris:\n                  description: URIs is a list of URI subjectAltNames to be set on the Certificate.\n                  type: array\n                  items:\n                    type: string\n                usages:\n                  description: Usages is the set of x509 usages that are requested for the certificate. Defaults to `digital signature` and `key encipherment` if not specified.\n                  type: array\n                  items:\n                    description: \"KeyUsage specifies valid usage contexts for keys. See: https://tools.ietf.org/html/rfc5280#section-4.2.1.3 https://tools.ietf.org/html/rfc5280#section-4.2.1.12 \\n Valid KeyUsage values are as follows: \\\"signing\\\", \\\"digital signature\\\", \\\"content commitment\\\", \\\"key encipherment\\\", \\\"key agreement\\\", \\\"data encipherment\\\", \\\"cert sign\\\", \\\"crl sign\\\", \\\"encipher only\\\", \\\"decipher only\\\", \\\"any\\\", \\\"server auth\\\", \\\"client auth\\\", \\\"code signing\\\", \\\"email protection\\\", \\\"s/mime\\\", \\\"ipsec end system\\\", \\\"ipsec tunnel\\\", \\\"ipsec user\\\", \\\"timestamping\\\", \\\"ocsp signing\\\", \\\"microsoft sgc\\\", \\\"netscape sgc\\\"\"\n                    type: string\n                    enum:\n                      - signing\n                      - digital signature\n                      - content commitment\n                      - key encipherment\n                      - key agreement\n                      - data encipherment\n                      - cert sign\n                      - crl sign\n                      - encipher only\n                      - decipher only\n                      - any\n                      - server auth\n                      - client auth\n                      - code signing\n                      - email protection\n                      - s/mime\n                      - ipsec end system\n                      - ipsec tunnel\n                      - ipsec user\n                      - timestamping\n                      - ocsp signing\n                      - microsoft sgc\n                      - netscape sgc\n            status:\n              description: Status of the Certificate. This is set and managed automatically.\n              type: object\n              properties:\n                conditions:\n                  description: List of status conditions to indicate the status of certificates. Known condition types are `Ready` and `Issuing`.\n                  type: array\n                  items:\n                    description: CertificateCondition contains condition information for an Certificate.\n                    type: object\n                    required:\n                      - status\n                      - type\n                    properties:\n                      lastTransitionTime:\n                        description: LastTransitionTime is the timestamp corresponding to the last status change of this condition.\n                        type: string\n                        format: date-time\n                      message:\n                        description: Message is a human readable description of the details of the last transition, complementing reason.\n                        type: string\n                      observedGeneration:\n                        description: If set, this represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.condition[x].observedGeneration is 9, the condition is out of date with respect to the current state of the Certificate.\n                        type: integer\n                        format: int64\n                      reason:\n                        description: Reason is a brief machine readable explanation for the condition's last transition.\n                        type: string\n                      status:\n                        description: Status of the condition, one of (`True`, `False`, `Unknown`).\n                        type: string\n                        enum:\n                          - \"True\"\n                          - \"False\"\n                          - Unknown\n                      type:\n                        description: Type of the condition, known values are (`Ready`, `Issuing`).\n                        type: string\n                  x-kubernetes-list-map-keys:\n                    - type\n                  x-kubernetes-list-type: map\n                failedIssuanceAttempts:\n                  description: The number of continuous failed issuance attempts up till now. This field gets removed (if set) on a successful issuance and gets set to 1 if unset and an issuance has failed. If an issuance has failed, the delay till the next issuance will be calculated using formula time.Hour * 2 ^ (failedIssuanceAttempts - 1).\n                  type: integer\n                lastFailureTime:\n                  description: LastFailureTime is the time as recorded by the Certificate controller of the most recent failure to complete a CertificateRequest for this Certificate resource. If set, cert-manager will not re-request another Certificate until 1 hour has elapsed from this time.\n                  type: string\n                  format: date-time\n                nextPrivateKeySecretName:\n                  description: The name of the Secret resource containing the private key to be used for the next certificate iteration. The keymanager controller will automatically set this field if the `Issuing` condition is set to `True`. It will automatically unset this field when the Issuing condition is not set or False.\n                  type: string\n                notAfter:\n                  description: The expiration time of the certificate stored in the secret named by this resource in `spec.secretName`.\n                  type: string\n                  format: date-time\n                notBefore:\n                  description: The time after which the certificate stored in the secret named by this resource in spec.secretName is valid.\n                  type: string\n                  format: date-time\n                renewalTime:\n                  description: RenewalTime is the time at which the certificate will be next renewed. If not set, no upcoming renewal is scheduled.\n                  type: string\n                  format: date-time\n                revision:\n                  description: \"The current 'revision' of the certificate as issued. \\n When a CertificateRequest resource is created, it will have the `cert-manager.io/certificate-revision` set to one greater than the current value of this field. \\n Upon issuance, this field will be set to the value of the annotation on the CertificateRequest resource used to issue the certificate. \\n Persisting the value on the CertificateRequest resource allows the certificates controller to know whether a request is part of an old issuance or if it is part of the ongoing revision's issuance by checking if the revision value in the annotation is greater than this field.\"\n                  type: integer\n      served: true\n      storage: true\n---\n# Source: cert-manager/templates/crds.yaml\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  name: orders.acme.cert-manager.io\n  labels:\n    app: 'cert-manager'\n    app.kubernetes.io/name: 'cert-manager'\n    app.kubernetes.io/instance: 'cert-manager'\n    # Generated labels\n    app.kubernetes.io/version: \"v1.10.0\"\nspec:\n  group: acme.cert-manager.io\n  names:\n    kind: Order\n    listKind: OrderList\n    plural: orders\n    singular: order\n    categories:\n      - cert-manager\n      - cert-manager-acme\n  scope: Namespaced\n  versions:\n    - name: v1\n      subresources:\n        status: {}\n      additionalPrinterColumns:\n        - jsonPath: .status.state\n          name: State\n          type: string\n        - jsonPath: .spec.issuerRef.name\n          name: Issuer\n          priority: 1\n          type: string\n        - jsonPath: .status.reason\n          name: Reason\n          priority: 1\n          type: string\n        - jsonPath: .metadata.creationTimestamp\n          description: CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n          name: Age\n          type: date\n      schema:\n        openAPIV3Schema:\n          description: Order is a type to represent an Order with an ACME server\n          type: object\n          required:\n            - metadata\n            - spec\n          properties:\n            apiVersion:\n              description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n              type: string\n            kind:\n              description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n              type: string\n            metadata:\n              type: object\n            spec:\n              type: object\n              required:\n                - issuerRef\n                - request\n              properties:\n                commonName:\n                  description: CommonName is the common name as specified on the DER encoded CSR. If specified, this value must also be present in `dnsNames` or `ipAddresses`. This field must match the corresponding field on the DER encoded CSR.\n                  type: string\n                dnsNames:\n                  description: DNSNames is a list of DNS names that should be included as part of the Order validation process. This field must match the corresponding field on the DER encoded CSR.\n                  type: array\n                  items:\n                    type: string\n                duration:\n                  description: Duration is the duration for the not after date for the requested certificate. this is set on order creation as pe the ACME spec.\n                  type: string\n                ipAddresses:\n                  description: IPAddresses is a list of IP addresses that should be included as part of the Order validation process. This field must match the corresponding field on the DER encoded CSR.\n                  type: array\n                  items:\n                    type: string\n                issuerRef:\n                  description: IssuerRef references a properly configured ACME-type Issuer which should be used to create this Order. If the Issuer does not exist, processing will be retried. If the Issuer is not an 'ACME' Issuer, an error will be returned and the Order will be marked as failed.\n                  type: object\n                  required:\n                    - name\n                  properties:\n                    group:\n                      description: Group of the resource being referred to.\n                      type: string\n                    kind:\n                      description: Kind of the resource being referred to.\n                      type: string\n                    name:\n                      description: Name of the resource being referred to.\n                      type: string\n                request:\n                  description: Certificate signing request bytes in DER encoding. This will be used when finalizing the order. This field must be set on the order.\n                  type: string\n                  format: byte\n            status:\n              type: object\n              properties:\n                authorizations:\n                  description: Authorizations contains data returned from the ACME server on what authorizations must be completed in order to validate the DNS names specified on the Order.\n                  type: array\n                  items:\n                    description: ACMEAuthorization contains data returned from the ACME server on an authorization that must be completed in order validate a DNS name on an ACME Order resource.\n                    type: object\n                    required:\n                      - url\n                    properties:\n                      challenges:\n                        description: Challenges specifies the challenge types offered by the ACME server. One of these challenge types will be selected when validating the DNS name and an appropriate Challenge resource will be created to perform the ACME challenge process.\n                        type: array\n                        items:\n                          description: Challenge specifies a challenge offered by the ACME server for an Order. An appropriate Challenge resource can be created to perform the ACME challenge process.\n                          type: object\n                          required:\n                            - token\n                            - type\n                            - url\n                          properties:\n                            token:\n                              description: Token is the token that must be presented for this challenge. This is used to compute the 'key' that must also be presented.\n                              type: string\n                            type:\n                              description: Type is the type of challenge being offered, e.g. 'http-01', 'dns-01', 'tls-sni-01', etc. This is the raw value retrieved from the ACME server. Only 'http-01' and 'dns-01' are supported by cert-manager, other values will be ignored.\n                              type: string\n                            url:\n                              description: URL is the URL of this challenge. It can be used to retrieve additional metadata about the Challenge from the ACME server.\n                              type: string\n                      identifier:\n                        description: Identifier is the DNS name to be validated as part of this authorization\n                        type: string\n                      initialState:\n                        description: InitialState is the initial state of the ACME authorization when first fetched from the ACME server. If an Authorization is already 'valid', the Order controller will not create a Challenge resource for the authorization. This will occur when working with an ACME server that enables 'authz reuse' (such as Let's Encrypt's production endpoint). If not set and 'identifier' is set, the state is assumed to be pending and a Challenge will be created.\n                        type: string\n                        enum:\n                          - valid\n                          - ready\n                          - pending\n                          - processing\n                          - invalid\n                          - expired\n                          - errored\n                      url:\n                        description: URL is the URL of the Authorization that must be completed\n                        type: string\n                      wildcard:\n                        description: Wildcard will be true if this authorization is for a wildcard DNS name. If this is true, the identifier will be the *non-wildcard* version of the DNS name. For example, if '*.example.com' is the DNS name being validated, this field will be 'true' and the 'identifier' field will be 'example.com'.\n                        type: boolean\n                certificate:\n                  description: Certificate is a copy of the PEM encoded certificate for this Order. This field will be populated after the order has been successfully finalized with the ACME server, and the order has transitioned to the 'valid' state.\n                  type: string\n                  format: byte\n                failureTime:\n                  description: FailureTime stores the time that this order failed. This is used to influence garbage collection and back-off.\n                  type: string\n                  format: date-time\n                finalizeURL:\n                  description: FinalizeURL of the Order. This is used to obtain certificates for this order once it has been completed.\n                  type: string\n                reason:\n                  description: Reason optionally provides more information about a why the order is in the current state.\n                  type: string\n                state:\n                  description: State contains the current state of this Order resource. States 'success' and 'expired' are 'final'\n                  type: string\n                  enum:\n                    - valid\n                    - ready\n                    - pending\n                    - processing\n                    - invalid\n                    - expired\n                    - errored\n                url:\n                  description: URL of the Order. This will initially be empty when the resource is first created. The Order controller will populate this field when the Order is first processed. This field will be immutable after it is initially set.\n                  type: string\n      served: true\n      storage: true\n---\n# Source: cert-manager/templates/cainjector-serviceaccount.yaml\napiVersion: v1\nkind: ServiceAccount\nautomountServiceAccountToken: true\nmetadata:\n  name: cert-manager-cainjector\n  namespace: cert-manager\n  labels:\n    app: cainjector\n    app.kubernetes.io/name: cainjector\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"cainjector\"\n    app.kubernetes.io/version: \"v1.10.0\"\n---\n# Source: cert-manager/templates/serviceaccount.yaml\napiVersion: v1\nkind: ServiceAccount\nautomountServiceAccountToken: true\nmetadata:\n  name: cert-manager\n  namespace: cert-manager\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.10.0\"\n---\n# Source: cert-manager/templates/webhook-serviceaccount.yaml\napiVersion: v1\nkind: ServiceAccount\nautomountServiceAccountToken: true\nmetadata:\n  name: cert-manager-webhook\n  namespace: cert-manager\n  labels:\n    app: webhook\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"webhook\"\n    app.kubernetes.io/version: \"v1.10.0\"\n---\n# Source: cert-manager/templates/webhook-config.yaml\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: cert-manager-webhook\n  namespace: cert-manager\n  labels:\n    app: webhook\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"webhook\"\ndata:\n---\n# Source: cert-manager/templates/cainjector-rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: cert-manager-cainjector\n  labels:\n    app: cainjector\n    app.kubernetes.io/name: cainjector\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"cainjector\"\n    app.kubernetes.io/version: \"v1.10.0\"\nrules:\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"certificates\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  - apiGroups: [\"\"]\n    resources: [\"secrets\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  - apiGroups: [\"\"]\n    resources: [\"events\"]\n    verbs: [\"get\", \"create\", \"update\", \"patch\"]\n  - apiGroups: [\"admissionregistration.k8s.io\"]\n    resources: [\"validatingwebhookconfigurations\", \"mutatingwebhookconfigurations\"]\n    verbs: [\"get\", \"list\", \"watch\", \"update\"]\n  - apiGroups: [\"apiregistration.k8s.io\"]\n    resources: [\"apiservices\"]\n    verbs: [\"get\", \"list\", \"watch\", \"update\"]\n  - apiGroups: [\"apiextensions.k8s.io\"]\n    resources: [\"customresourcedefinitions\"]\n    verbs: [\"get\", \"list\", \"watch\", \"update\"]\n---\n# Source: cert-manager/templates/rbac.yaml\n# Issuer controller role\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: cert-manager-controller-issuers\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.10.0\"\nrules:\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"issuers\", \"issuers/status\"]\n    verbs: [\"update\", \"patch\"]\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"issuers\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  - apiGroups: [\"\"]\n    resources: [\"secrets\"]\n    verbs: [\"get\", \"list\", \"watch\", \"create\", \"update\", \"delete\"]\n  - apiGroups: [\"\"]\n    resources: [\"events\"]\n    verbs: [\"create\", \"patch\"]\n---\n# Source: cert-manager/templates/rbac.yaml\n# ClusterIssuer controller role\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: cert-manager-controller-clusterissuers\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.10.0\"\nrules:\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"clusterissuers\", \"clusterissuers/status\"]\n    verbs: [\"update\", \"patch\"]\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"clusterissuers\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  - apiGroups: [\"\"]\n    resources: [\"secrets\"]\n    verbs: [\"get\", \"list\", \"watch\", \"create\", \"update\", \"delete\"]\n  - apiGroups: [\"\"]\n    resources: [\"events\"]\n    verbs: [\"create\", \"patch\"]\n---\n# Source: cert-manager/templates/rbac.yaml\n# Certificates controller role\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: cert-manager-controller-certificates\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.10.0\"\nrules:\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"certificates\", \"certificates/status\", \"certificaterequests\", \"certificaterequests/status\"]\n    verbs: [\"update\", \"patch\"]\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"certificates\", \"certificaterequests\", \"clusterissuers\", \"issuers\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  # We require these rules to support users with the OwnerReferencesPermissionEnforcement\n  # admission controller enabled:\n  # https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#ownerreferencespermissionenforcement\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"certificates/finalizers\", \"certificaterequests/finalizers\"]\n    verbs: [\"update\"]\n  - apiGroups: [\"acme.cert-manager.io\"]\n    resources: [\"orders\"]\n    verbs: [\"create\", \"delete\", \"get\", \"list\", \"watch\"]\n  - apiGroups: [\"\"]\n    resources: [\"secrets\"]\n    verbs: [\"get\", \"list\", \"watch\", \"create\", \"update\", \"delete\", \"patch\"]\n  - apiGroups: [\"\"]\n    resources: [\"events\"]\n    verbs: [\"create\", \"patch\"]\n---\n# Source: cert-manager/templates/rbac.yaml\n# Orders controller role\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: cert-manager-controller-orders\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.10.0\"\nrules:\n  - apiGroups: [\"acme.cert-manager.io\"]\n    resources: [\"orders\", \"orders/status\"]\n    verbs: [\"update\", \"patch\"]\n  - apiGroups: [\"acme.cert-manager.io\"]\n    resources: [\"orders\", \"challenges\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"clusterissuers\", \"issuers\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  - apiGroups: [\"acme.cert-manager.io\"]\n    resources: [\"challenges\"]\n    verbs: [\"create\", \"delete\"]\n  # We require these rules to support users with the OwnerReferencesPermissionEnforcement\n  # admission controller enabled:\n  # https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#ownerreferencespermissionenforcement\n  - apiGroups: [\"acme.cert-manager.io\"]\n    resources: [\"orders/finalizers\"]\n    verbs: [\"update\"]\n  - apiGroups: [\"\"]\n    resources: [\"secrets\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  - apiGroups: [\"\"]\n    resources: [\"events\"]\n    verbs: [\"create\", \"patch\"]\n---\n# Source: cert-manager/templates/rbac.yaml\n# Challenges controller role\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: cert-manager-controller-challenges\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.10.0\"\nrules:\n  # Use to update challenge resource status\n  - apiGroups: [\"acme.cert-manager.io\"]\n    resources: [\"challenges\", \"challenges/status\"]\n    verbs: [\"update\", \"patch\"]\n  # Used to watch challenge resources\n  - apiGroups: [\"acme.cert-manager.io\"]\n    resources: [\"challenges\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  # Used to watch challenges, issuer and clusterissuer resources\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"issuers\", \"clusterissuers\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  # Need to be able to retrieve ACME account private key to complete challenges\n  - apiGroups: [\"\"]\n    resources: [\"secrets\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  # Used to create events\n  - apiGroups: [\"\"]\n    resources: [\"events\"]\n    verbs: [\"create\", \"patch\"]\n  # HTTP01 rules\n  - apiGroups: [\"\"]\n    resources: [\"pods\", \"services\"]\n    verbs: [\"get\", \"list\", \"watch\", \"create\", \"delete\"]\n  - apiGroups: [\"networking.k8s.io\"]\n    resources: [\"ingresses\"]\n    verbs: [\"get\", \"list\", \"watch\", \"create\", \"delete\", \"update\"]\n  - apiGroups: [ \"gateway.networking.k8s.io\" ]\n    resources: [ \"httproutes\" ]\n    verbs: [\"get\", \"list\", \"watch\", \"create\", \"delete\", \"update\"]\n  # We require the ability to specify a custom hostname when we are creating\n  # new ingress resources.\n  # See: https://github.com/openshift/origin/blob/21f191775636f9acadb44fa42beeb4f75b255532/pkg/route/apiserver/admission/ingress_admission.go#L84-L148\n  - apiGroups: [\"route.openshift.io\"]\n    resources: [\"routes/custom-host\"]\n    verbs: [\"create\"]\n  # We require these rules to support users with the OwnerReferencesPermissionEnforcement\n  # admission controller enabled:\n  # https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#ownerreferencespermissionenforcement\n  - apiGroups: [\"acme.cert-manager.io\"]\n    resources: [\"challenges/finalizers\"]\n    verbs: [\"update\"]\n  # DNS01 rules (duplicated above)\n  - apiGroups: [\"\"]\n    resources: [\"secrets\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n---\n# Source: cert-manager/templates/rbac.yaml\n# ingress-shim controller role\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: cert-manager-controller-ingress-shim\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.10.0\"\nrules:\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"certificates\", \"certificaterequests\"]\n    verbs: [\"create\", \"update\", \"delete\"]\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"certificates\", \"certificaterequests\", \"issuers\", \"clusterissuers\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  - apiGroups: [\"networking.k8s.io\"]\n    resources: [\"ingresses\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  # We require these rules to support users with the OwnerReferencesPermissionEnforcement\n  # admission controller enabled:\n  # https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#ownerreferencespermissionenforcement\n  - apiGroups: [\"networking.k8s.io\"]\n    resources: [\"ingresses/finalizers\"]\n    verbs: [\"update\"]\n  - apiGroups: [\"gateway.networking.k8s.io\"]\n    resources: [\"gateways\", \"httproutes\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  - apiGroups: [\"gateway.networking.k8s.io\"]\n    resources: [\"gateways/finalizers\", \"httproutes/finalizers\"]\n    verbs: [\"update\"]\n  - apiGroups: [\"\"]\n    resources: [\"events\"]\n    verbs: [\"create\", \"patch\"]\n---\n# Source: cert-manager/templates/rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: cert-manager-view\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.10.0\"\n    rbac.authorization.k8s.io/aggregate-to-view: \"true\"\n    rbac.authorization.k8s.io/aggregate-to-edit: \"true\"\n    rbac.authorization.k8s.io/aggregate-to-admin: \"true\"\nrules:\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"certificates\", \"certificaterequests\", \"issuers\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  - apiGroups: [\"acme.cert-manager.io\"]\n    resources: [\"challenges\", \"orders\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n---\n# Source: cert-manager/templates/rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: cert-manager-edit\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.10.0\"\n    rbac.authorization.k8s.io/aggregate-to-edit: \"true\"\n    rbac.authorization.k8s.io/aggregate-to-admin: \"true\"\nrules:\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"certificates\", \"certificaterequests\", \"issuers\"]\n    verbs: [\"create\", \"delete\", \"deletecollection\", \"patch\", \"update\"]\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"certificates/status\"]\n    verbs: [\"update\"]\n  - apiGroups: [\"acme.cert-manager.io\"]\n    resources: [\"challenges\", \"orders\"]\n    verbs: [\"create\", \"delete\", \"deletecollection\", \"patch\", \"update\"]\n---\n# Source: cert-manager/templates/rbac.yaml\n# Permission to approve CertificateRequests referencing cert-manager.io Issuers and ClusterIssuers\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: cert-manager-controller-approve:cert-manager-io\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"cert-manager\"\n    app.kubernetes.io/version: \"v1.10.0\"\nrules:\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"signers\"]\n    verbs: [\"approve\"]\n    resourceNames: [\"issuers.cert-manager.io/*\", \"clusterissuers.cert-manager.io/*\"]\n---\n# Source: cert-manager/templates/rbac.yaml\n# Permission to:\n# - Update and sign CertificatSigningeRequests referencing cert-manager.io Issuers and ClusterIssuers\n# - Perform SubjectAccessReviews to test whether users are able to reference Namespaced Issuers\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: cert-manager-controller-certificatesigningrequests\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"cert-manager\"\n    app.kubernetes.io/version: \"v1.10.0\"\nrules:\n  - apiGroups: [\"certificates.k8s.io\"]\n    resources: [\"certificatesigningrequests\"]\n    verbs: [\"get\", \"list\", \"watch\", \"update\"]\n  - apiGroups: [\"certificates.k8s.io\"]\n    resources: [\"certificatesigningrequests/status\"]\n    verbs: [\"update\", \"patch\"]\n  - apiGroups: [\"certificates.k8s.io\"]\n    resources: [\"signers\"]\n    resourceNames: [\"issuers.cert-manager.io/*\", \"clusterissuers.cert-manager.io/*\"]\n    verbs: [\"sign\"]\n  - apiGroups: [\"authorization.k8s.io\"]\n    resources: [\"subjectaccessreviews\"]\n    verbs: [\"create\"]\n---\n# Source: cert-manager/templates/webhook-rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: cert-manager-webhook:subjectaccessreviews\n  labels:\n    app: webhook\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"webhook\"\n    app.kubernetes.io/version: \"v1.10.0\"\nrules:\n- apiGroups: [\"authorization.k8s.io\"]\n  resources: [\"subjectaccessreviews\"]\n  verbs: [\"create\"]\n---\n# Source: cert-manager/templates/cainjector-rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: cert-manager-cainjector\n  labels:\n    app: cainjector\n    app.kubernetes.io/name: cainjector\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"cainjector\"\n    app.kubernetes.io/version: \"v1.10.0\"\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-cainjector\nsubjects:\n  - name: cert-manager-cainjector\n    namespace: cert-manager\n    kind: ServiceAccount\n---\n# Source: cert-manager/templates/rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: cert-manager-controller-issuers\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.10.0\"\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-controller-issuers\nsubjects:\n  - name: cert-manager\n    namespace: cert-manager\n    kind: ServiceAccount\n---\n# Source: cert-manager/templates/rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: cert-manager-controller-clusterissuers\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.10.0\"\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-controller-clusterissuers\nsubjects:\n  - name: cert-manager\n    namespace: cert-manager\n    kind: ServiceAccount\n---\n# Source: cert-manager/templates/rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: cert-manager-controller-certificates\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.10.0\"\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-controller-certificates\nsubjects:\n  - name: cert-manager\n    namespace: cert-manager\n    kind: ServiceAccount\n---\n# Source: cert-manager/templates/rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: cert-manager-controller-orders\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.10.0\"\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-controller-orders\nsubjects:\n  - name: cert-manager\n    namespace: cert-manager\n    kind: ServiceAccount\n---\n# Source: cert-manager/templates/rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: cert-manager-controller-challenges\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.10.0\"\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-controller-challenges\nsubjects:\n  - name: cert-manager\n    namespace: cert-manager\n    kind: ServiceAccount\n---\n# Source: cert-manager/templates/rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: cert-manager-controller-ingress-shim\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.10.0\"\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-controller-ingress-shim\nsubjects:\n  - name: cert-manager\n    namespace: cert-manager\n    kind: ServiceAccount\n---\n# Source: cert-manager/templates/rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: cert-manager-controller-approve:cert-manager-io\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"cert-manager\"\n    app.kubernetes.io/version: \"v1.10.0\"\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-controller-approve:cert-manager-io\nsubjects:\n  - name: cert-manager\n    namespace: cert-manager\n    kind: ServiceAccount\n---\n# Source: cert-manager/templates/rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: cert-manager-controller-certificatesigningrequests\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"cert-manager\"\n    app.kubernetes.io/version: \"v1.10.0\"\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-controller-certificatesigningrequests\nsubjects:\n  - name: cert-manager\n    namespace: cert-manager\n    kind: ServiceAccount\n---\n# Source: cert-manager/templates/webhook-rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: cert-manager-webhook:subjectaccessreviews\n  labels:\n    app: webhook\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"webhook\"\n    app.kubernetes.io/version: \"v1.10.0\"\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-webhook:subjectaccessreviews\nsubjects:\n- apiGroup: \"\"\n  kind: ServiceAccount\n  name: cert-manager-webhook\n  namespace: cert-manager\n---\n# Source: cert-manager/templates/cainjector-rbac.yaml\n# leader election rules\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  name: cert-manager-cainjector:leaderelection\n  namespace: kube-system\n  labels:\n    app: cainjector\n    app.kubernetes.io/name: cainjector\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"cainjector\"\n    app.kubernetes.io/version: \"v1.10.0\"\nrules:\n  # Used for leader election by the controller\n  # cert-manager-cainjector-leader-election is used by the CertificateBased injector controller\n  #   see cmd/cainjector/start.go#L113\n  # cert-manager-cainjector-leader-election-core is used by the SecretBased injector controller\n  #   see cmd/cainjector/start.go#L137\n  - apiGroups: [\"coordination.k8s.io\"]\n    resources: [\"leases\"]\n    resourceNames: [\"cert-manager-cainjector-leader-election\", \"cert-manager-cainjector-leader-election-core\"]\n    verbs: [\"get\", \"update\", \"patch\"]\n  - apiGroups: [\"coordination.k8s.io\"]\n    resources: [\"leases\"]\n    verbs: [\"create\"]\n---\n# Source: cert-manager/templates/rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  name: cert-manager:leaderelection\n  namespace: kube-system\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.10.0\"\nrules:\n  - apiGroups: [\"coordination.k8s.io\"]\n    resources: [\"leases\"]\n    resourceNames: [\"cert-manager-controller\"]\n    verbs: [\"get\", \"update\", \"patch\"]\n  - apiGroups: [\"coordination.k8s.io\"]\n    resources: [\"leases\"]\n    verbs: [\"create\"]\n---\n# Source: cert-manager/templates/webhook-rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  name: cert-manager-webhook:dynamic-serving\n  namespace: cert-manager\n  labels:\n    app: webhook\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"webhook\"\n    app.kubernetes.io/version: \"v1.10.0\"\nrules:\n- apiGroups: [\"\"]\n  resources: [\"secrets\"]\n  resourceNames:\n  - 'cert-manager-webhook-ca'\n  verbs: [\"get\", \"list\", \"watch\", \"update\"]\n# It's not possible to grant CREATE permission on a single resourceName.\n- apiGroups: [\"\"]\n  resources: [\"secrets\"]\n  verbs: [\"create\"]\n---\n# Source: cert-manager/templates/cainjector-rbac.yaml\n# grant cert-manager permission to manage the leaderelection configmap in the\n# leader election namespace\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  name: cert-manager-cainjector:leaderelection\n  namespace: kube-system\n  labels:\n    app: cainjector\n    app.kubernetes.io/name: cainjector\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"cainjector\"\n    app.kubernetes.io/version: \"v1.10.0\"\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: cert-manager-cainjector:leaderelection\nsubjects:\n  - kind: ServiceAccount\n    name: cert-manager-cainjector\n    namespace: cert-manager\n---\n# Source: cert-manager/templates/rbac.yaml\n# grant cert-manager permission to manage the leaderelection configmap in the\n# leader election namespace\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  name: cert-manager:leaderelection\n  namespace: kube-system\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.10.0\"\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: cert-manager:leaderelection\nsubjects:\n  - apiGroup: \"\"\n    kind: ServiceAccount\n    name: cert-manager\n    namespace: cert-manager\n---\n# Source: cert-manager/templates/webhook-rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  name: cert-manager-webhook:dynamic-serving\n  namespace: cert-manager\n  labels:\n    app: webhook\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"webhook\"\n    app.kubernetes.io/version: \"v1.10.0\"\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: cert-manager-webhook:dynamic-serving\nsubjects:\n- apiGroup: \"\"\n  kind: ServiceAccount\n  name: cert-manager-webhook\n  namespace: cert-manager\n---\n# Source: cert-manager/templates/service.yaml\napiVersion: v1\nkind: Service\nmetadata:\n  name: cert-manager\n  namespace: cert-manager\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.10.0\"\nspec:\n  type: ClusterIP\n  ports:\n  - protocol: TCP\n    port: 9402\n    name: tcp-prometheus-servicemonitor\n    targetPort: 9402\n  selector:\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n---\n# Source: cert-manager/templates/webhook-service.yaml\napiVersion: v1\nkind: Service\nmetadata:\n  name: cert-manager-webhook\n  namespace: cert-manager\n  labels:\n    app: webhook\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"webhook\"\n    app.kubernetes.io/version: \"v1.10.0\"\nspec:\n  type: ClusterIP\n  ports:\n  - name: https\n    port: 443\n    protocol: TCP\n    targetPort: \"https\"\n  selector:\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"webhook\"\n---\n# Source: cert-manager/templates/cainjector-deployment.yaml\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: cert-manager-cainjector\n  namespace: cert-manager\n  labels:\n    app: cainjector\n    app.kubernetes.io/name: cainjector\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"cainjector\"\n    app.kubernetes.io/version: \"v1.10.0\"\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: cainjector\n      app.kubernetes.io/instance: cert-manager\n      app.kubernetes.io/component: \"cainjector\"\n  template:\n    metadata:\n      labels:\n        app: cainjector\n        app.kubernetes.io/name: cainjector\n        app.kubernetes.io/instance: cert-manager\n        app.kubernetes.io/component: \"cainjector\"\n        app.kubernetes.io/version: \"v1.10.0\"\n    spec:\n      serviceAccountName: cert-manager-cainjector\n      securityContext:\n        runAsNonRoot: true\n        seccompProfile:\n          type: RuntimeDefault\n      containers:\n        - name: cert-manager-cainjector\n          image: \"quay.io/jetstack/cert-manager-cainjector:v1.10.0\"\n          imagePullPolicy: IfNotPresent\n          args:\n          - --v=2\n          - --leader-election-namespace=kube-system\n          env:\n          - name: POD_NAMESPACE\n            valueFrom:\n              fieldRef:\n                fieldPath: metadata.namespace\n          securityContext:\n            allowPrivilegeEscalation: false\n            capabilities:\n              drop:\n              - ALL\n      nodeSelector:\n        kubernetes.io/os: linux\n---\n# Source: cert-manager/templates/deployment.yaml\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: cert-manager\n  namespace: cert-manager\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.10.0\"\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: cert-manager\n      app.kubernetes.io/instance: cert-manager\n      app.kubernetes.io/component: \"controller\"\n  template:\n    metadata:\n      labels:\n        app: cert-manager\n        app.kubernetes.io/name: cert-manager\n        app.kubernetes.io/instance: cert-manager\n        app.kubernetes.io/component: \"controller\"\n        app.kubernetes.io/version: \"v1.10.0\"\n      annotations:\n        prometheus.io/path: \"/metrics\"\n        prometheus.io/scrape: 'true'\n        prometheus.io/port: '9402'\n    spec:\n      serviceAccountName: cert-manager\n      securityContext:\n        runAsNonRoot: true\n        seccompProfile:\n          type: RuntimeDefault\n      containers:\n        - name: cert-manager-controller\n          image: \"quay.io/jetstack/cert-manager-controller:v1.10.0\"\n          imagePullPolicy: IfNotPresent\n          args:\n          - --v=2\n          - --cluster-resource-namespace=$(POD_NAMESPACE)\n          - --leader-election-namespace=kube-system\n          ports:\n          - containerPort: 9402\n            name: http-metrics\n            protocol: TCP\n          securityContext:\n            allowPrivilegeEscalation: false\n            capabilities:\n              drop:\n              - ALL\n          env:\n          - name: POD_NAMESPACE\n            valueFrom:\n              fieldRef:\n                fieldPath: metadata.namespace\n      nodeSelector:\n        kubernetes.io/os: linux\n---\n# Source: cert-manager/templates/webhook-deployment.yaml\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: cert-manager-webhook\n  namespace: cert-manager\n  labels:\n    app: webhook\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"webhook\"\n    app.kubernetes.io/version: \"v1.10.0\"\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: webhook\n      app.kubernetes.io/instance: cert-manager\n      app.kubernetes.io/component: \"webhook\"\n  template:\n    metadata:\n      labels:\n        app: webhook\n        app.kubernetes.io/name: webhook\n        app.kubernetes.io/instance: cert-manager\n        app.kubernetes.io/component: \"webhook\"\n        app.kubernetes.io/version: \"v1.10.0\"\n    spec:\n      serviceAccountName: cert-manager-webhook\n      securityContext:\n        runAsNonRoot: true\n        seccompProfile:\n          type: RuntimeDefault\n      containers:\n        - name: cert-manager-webhook\n          image: \"quay.io/jetstack/cert-manager-webhook:v1.10.0\"\n          imagePullPolicy: IfNotPresent\n          args:\n          - --v=2\n          - --secure-port=10250\n          - --dynamic-serving-ca-secret-namespace=$(POD_NAMESPACE)\n          - --dynamic-serving-ca-secret-name=cert-manager-webhook-ca\n          - --dynamic-serving-dns-names=cert-manager-webhook\n          - --dynamic-serving-dns-names=cert-manager-webhook.$(POD_NAMESPACE)\n          - --dynamic-serving-dns-names=cert-manager-webhook.$(POD_NAMESPACE).svc\n          \n          ports:\n          - name: https\n            protocol: TCP\n            containerPort: 10250\n          - name: healthcheck\n            protocol: TCP\n            containerPort: 6080\n          livenessProbe:\n            httpGet:\n              path: /livez\n              port: 6080\n              scheme: HTTP\n            initialDelaySeconds: 60\n            periodSeconds: 10\n            timeoutSeconds: 1\n            successThreshold: 1\n            failureThreshold: 3\n          readinessProbe:\n            httpGet:\n              path: /healthz\n              port: 6080\n              scheme: HTTP\n            initialDelaySeconds: 5\n            periodSeconds: 5\n            timeoutSeconds: 1\n            successThreshold: 1\n            failureThreshold: 3\n          securityContext:\n            allowPrivilegeEscalation: false\n            capabilities:\n              drop:\n              - ALL\n          env:\n          - name: POD_NAMESPACE\n            valueFrom:\n              fieldRef:\n                fieldPath: metadata.namespace\n      nodeSelector:\n        kubernetes.io/os: linux\n---\n# Source: cert-manager/templates/webhook-mutating-webhook.yaml\napiVersion: admissionregistration.k8s.io/v1\nkind: MutatingWebhookConfiguration\nmetadata:\n  name: cert-manager-webhook\n  labels:\n    app: webhook\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"webhook\"\n    app.kubernetes.io/version: \"v1.10.0\"\n  annotations:\n    cert-manager.io/inject-ca-from-secret: \"cert-manager/cert-manager-webhook-ca\"\nwebhooks:\n  - name: webhook.cert-manager.io\n    rules:\n      - apiGroups:\n          - \"cert-manager.io\"\n          - \"acme.cert-manager.io\"\n        apiVersions:\n          - \"v1\"\n        operations:\n          - CREATE\n          - UPDATE\n        resources:\n          - \"*/*\"\n    admissionReviewVersions: [\"v1\"]\n    # This webhook only accepts v1 cert-manager resources.\n    # Equivalent matchPolicy ensures that non-v1 resource requests are sent to\n    # this webhook (after the resources have been converted to v1).\n    matchPolicy: Equivalent\n    timeoutSeconds: 10\n    failurePolicy: Fail\n    # Only include 'sideEffects' field in Kubernetes 1.12+\n    sideEffects: None\n    clientConfig:\n      service:\n        name: cert-manager-webhook\n        namespace: cert-manager\n        path: /mutate\n---\n# Source: cert-manager/templates/webhook-validating-webhook.yaml\napiVersion: admissionregistration.k8s.io/v1\nkind: ValidatingWebhookConfiguration\nmetadata:\n  name: cert-manager-webhook\n  labels:\n    app: webhook\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"webhook\"\n    app.kubernetes.io/version: \"v1.10.0\"\n  annotations:\n    cert-manager.io/inject-ca-from-secret: \"cert-manager/cert-manager-webhook-ca\"\nwebhooks:\n  - name: webhook.cert-manager.io\n    namespaceSelector:\n      matchExpressions:\n      - key: \"cert-manager.io/disable-validation\"\n        operator: \"NotIn\"\n        values:\n        - \"true\"\n      - key: \"name\"\n        operator: \"NotIn\"\n        values:\n        - cert-manager\n    rules:\n      - apiGroups:\n          - \"cert-manager.io\"\n          - \"acme.cert-manager.io\"\n        apiVersions:\n          - \"v1\"\n        operations:\n          - CREATE\n          - UPDATE\n        resources:\n          - \"*/*\"\n    admissionReviewVersions: [\"v1\"]\n    # This webhook only accepts v1 cert-manager resources.\n    # Equivalent matchPolicy ensures that non-v1 resource requests are sent to\n    # this webhook (after the resources have been converted to v1).\n    matchPolicy: Equivalent\n    timeoutSeconds: 10\n    failurePolicy: Fail\n    sideEffects: None\n    clientConfig:\n      service:\n        name: cert-manager-webhook\n        namespace: cert-manager\n        path: /validate\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_037__gcp_k8s__cert_manager_lets_encypt_http_validation/certificate.yaml",
    "content": "apiVersion: cert-manager.io/v1\nkind: Certificate\nmetadata:\n  name: acme-crt\nspec:\n  secretName: tls-secret\n  dnsNames:\n    - testcertmanager.ankitrathi.info\n  issuerRef:\n    name: letsencrypt-staging\n    # We can reference ClusterIssuers by changing the kind here.\n    # The default value is Issuer (i.e. a locally namespaced Issuer)\n    kind: ClusterIssuer"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_037__gcp_k8s__cert_manager_lets_encypt_http_validation/cluster-issuer.yaml",
    "content": "apiVersion: cert-manager.io/v1\nkind: ClusterIssuer\nmetadata:\n  name: letsencrypt-staging\nspec:\n  acme:\n    # You must replace this email address with your own.\n    # Let's Encrypt will use this to contact you about expiring\n    # certificates, and issues related to your account.\n    email: kedesom362@corylan.com\n    # server: https://acme-staging-v02.api.letsencrypt.org/directory\n    ## Replace the following for PRODUCTION\n    server: https://acme-v02.api.letsencrypt.org/directory\n    preferredChain: \"ISRG Root X1\"\n    privateKeySecretRef:\n      # Secret resource that will be used to store the account's private key.\n      name: example-issuer-account-key\n    # Add a single challenge solver, HTTP01 using nginx\n    solvers:\n      - http01:\n          ingress:\n            class: nginx"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_037__gcp_k8s__cert_manager_lets_encypt_http_validation/dep-whoami.yaml",
    "content": "kind: Deployment\napiVersion: apps/v1\nmetadata:\n  name: whoami\n  labels:\n    app: whoami\n\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: whoami\n  template:\n    metadata:\n      labels:\n        app: whoami\n    spec:\n      containers:\n        - name: whoami\n          image: traefik/whoami\n          ports:\n            - name: web\n              containerPort: 80"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_037__gcp_k8s__cert_manager_lets_encypt_http_validation/ingress.yaml",
    "content": "# https://docs.nginx.com/nginx-ingress-controller/configuration/ingress-resources/basic-configuration/\napiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  annotations:\n    kubernetes.io/ingress.class: \"nginx\"\n    nginx.ingress.kubernetes.io/ssl-redirect: \"false\"\n  name: whoami-ingress\nspec:\n  tls:\n    - hosts:\n        - testcertmanager.ankitrathi.info\n      secretName: tls-secret\n  rules:\n    - host: testcertmanager.ankitrathi.info\n      http:\n        paths:\n          - path: /test\n            pathType: Prefix\n            backend:\n              service:\n                name: whoami\n                port:\n                  number: 80\n---"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_037__gcp_k8s__cert_manager_lets_encypt_http_validation/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: example-service\n  labels:\n    app: example-app\nspec:\n  externalTrafficPolicy: Cluster\n  type: NodePort\n  selector:\n    app: example-app\n  ports:\n    - protocol: TCP\n      name: http\n      port: 80\n      targetPort: 5000"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_037__gcp_k8s__cert_manager_lets_encypt_http_validation/svc.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  creationTimestamp: null\n  labels:\n    app: whoami\n  name: whoami\nspec:\n  ports:\n    - port: 80\n      protocol: TCP\n      targetPort: 80\n  selector:\n    app: whoami\n  type: NodePort\nstatus:\n  loadBalancer: {}"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_038__local__kind__extramounts_for_pv_and_pvc/ReadMe.md",
    "content": "# Learn Kind Cluster\n\n## Validate Persistent Volume Set Up using [ExtraMounts](https://kind.sigs.k8s.io/docs/user/configuration/#extra-mounts)\n\nExtra mounts can be used to pass through storage on the host to a kind node for persisting data, mounting through code etc.\n\n```bash\nmkdir /tmp/kindpath\n\n```\n\n- config.yaml\n\n```yaml\nkind: Cluster\napiVersion: kind.x-k8s.io/v1alpha4\nnodes:\n- role: control-plane\n  # add a mount from /path/to/my/files on the host to /files on the node\n  extraMounts:\n  - hostPath: /tmp/kindpath\n    containerPath: /files   \n```\n\n- Create Cluster\n\n```bash\nkind create cluster --config - <<EOF\nkind: Cluster\napiVersion: kind.x-k8s.io/v1alpha4\nnodes:\n- role: control-plane\n  # add a mount from /path/to/my/files on the host to /files on the node\n  extraMounts:\n  - hostPath: /tmp/kindpath\n    containerPath: /files\nEOF\n```\n\n- pv.yaml : To create a persistent volume\n\n```yaml\napiVersion: v1\nkind: PersistentVolume\nmetadata:\n  name: local-pv\nspec:\n  capacity:\n    storage: 1Gi\n  accessModes:\n    - ReadWriteOnce\n  hostPath:\n    path: \"/tmp/kindpath\"\n```\n\n- pvc.yaml : To create persistent volume claim\n\n```yaml\napiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n  name: local-pvc\nspec:\n  accessModes:\n    - ReadWriteOnce\n  resources:\n    requests:\n      storage: 1Gi\n```\n\n- pod.yaml : To create a pod\n\n```yaml\napiVersion: v1\nkind: Pod\nmetadata:\n  name: local-pod\nspec:\n  containers:\n  - name: local-container\n    image: nginx\n    volumeMounts:\n    - name: local-volume\n      mountPath: \"/mnt/data\"\n  volumes:\n  - name: local-volume\n    persistentVolumeClaim:\n      claimName: local-pvc\n```\n\n- Apply\n\n```bash\n$ kubectl apply -f pv.yaml,pvc.yaml,pod.yaml                 \npersistentvolume/local-pv created\npersistentvolumeclaim/local-pvc created\npod/local-pod created\n```\n\n- Validate\n\n```bash\nkubectl exec -it local-pod -- bash\nroot@local-pod:/# cd /mnt/data\nroot@local-pod:/mnt/data# ls\nroot@local-pod:/mnt/data# echo \"hello\" > test.log\nroot@local-pod:/mnt/data# cat test.log \nhello\nroot@local-pod:/mnt/data# exit\nexit\n\n## get and delete\n$ kubectl get pods                  \nNAME        READY   STATUS    RESTARTS   AGE\nlocal-pod   1/1     Running   0          2m27s\n\n$ kubectl delete pod local-pod\npod \"local-pod\" deleted\n\n# Create again\n$ kubectl apply -f dep.yaml                 \npod/local-pod created\n\n# login to pod and check if file exists\nkubectl exec -it local-pod -- bash\nroot@local-pod:/# cd /mnt/data\nroot@local-pod:/mnt/data# cat test.log \nhello\n```"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_038__local__kind__extramounts_for_pv_and_pvc/kind_extramounts_config.yaml",
    "content": "kind: Cluster\napiVersion: kind.x-k8s.io/v1alpha4\nnodes:\n- role: control-plane\n  # add a mount from /path/to/my/files on the host to /files on the node\n  extraMounts:\n  - hostPath: /tmp/kindpath\n    containerPath: /files  "
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_038__local__kind__extramounts_for_pv_and_pvc/pod.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: local-pod\nspec:\n  containers:\n  - name: local-container\n    image: nginx\n    volumeMounts:\n    - name: local-volume\n      mountPath: \"/mnt/data\"\n  volumes:\n  - name: local-volume\n    persistentVolumeClaim:\n      claimName: local-pvc"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_038__local__kind__extramounts_for_pv_and_pvc/pv.yaml",
    "content": "apiVersion: v1\nkind: PersistentVolume\nmetadata:\n  name: local-pv\nspec:\n  capacity:\n    storage: 1Gi\n  accessModes:\n    - ReadWriteOnce\n  hostPath:\n    path: \"/tmp/kindpath\""
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_038__local__kind__extramounts_for_pv_and_pvc/pvc.yaml",
    "content": "apiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n  name: local-pvc\nspec:\n  accessModes:\n    - ReadWriteOnce\n  resources:\n    requests:\n      storage: 1Gi"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_039__local__kind__prometheus_operator__kube_prometheus_grafana_alertmanager/ReadMe.md",
    "content": "# Prometheus Operator\n\n- [prometheus-operator.dev](https://prometheus-operator.dev/docs/prologue/quick-start)\n- [prometheus-operator/kube-prometheus](https://github.com/prometheus-operator/kube-prometheus)\n\n## Create a kind cluster\n\n```bash\n$ kind create cluster --config kind-config.yaml\n\n$ kubectl get nodes                                           \nNAME                 STATUS   ROLES           AGE     VERSION\nkind-control-plane   Ready    control-plane   2m13s   v1.24.0\n\n```\n\n## Clone the repo\n\n```bash\n$ git clone https://github.com/prometheus-operator/kube-prometheus.git\n\n$ ls\nReadMe.md        kind-config.yaml kube-prometheus\n\n$ mv kube-prometheus/manifests .\n\n$ ls\nReadMe.md        kind-config.yaml kube-prometheus  manifests\n\n$ rm -rf kube-prometheus \n```\n\n## Deploy kube-prometheus \n\n```bash\n$ kubectl create -f manifests/setup\n\n## Wait till you see following is met\n$ kubectl wait \\\n        --for condition=Established \\\n        --all CustomResourceDefinition \\\n        --namespace=monitoring\n\n$ kubectl apply -f manifests/\n\n\n$ kubectl get pods -n monitoring   \nNAME                                   READY   STATUS    RESTARTS        AGE\nalertmanager-main-0                    2/2     Running   1 (2m27s ago)   6m21s\nalertmanager-main-1                    2/2     Running   1 (2m25s ago)   6m21s\nalertmanager-main-2                    2/2     Running   1 (2m26s ago)   6m21s\nblackbox-exporter-58c9c5ff8d-c4g9j     3/3     Running   0               8m55s\ngrafana-6b4547d9b8-lnz67               1/1     Running   0               8m54s\nkube-state-metrics-6d454b6f84-vxnnn    3/3     Running   0               8m54s\nnode-exporter-px95k                    2/2     Running   0               8m54s\nprometheus-adapter-678b454b8b-7vf55    1/1     Running   0               8m54s\nprometheus-adapter-678b454b8b-tp8jn    1/1     Running   0               8m54s\nprometheus-k8s-0                       2/2     Running   0               6m21s\nprometheus-k8s-1                       2/2     Running   0               6m21s\n```\n\n## Access Prometheus\n\n```bash\n kubectl --namespace monitoring port-forward svc/prometheus-k8s 9090\nForwarding from 127.0.0.1:9090 -> 9090\nForwarding from [::1]:9090 -> 9090\n```\n\n- Now visit [localhost:9090](localhost:9090)\n\n![img.png](.images/promethues.png)\n\n![img.png](.images/promethues-alerts.png)\n\n## Access Alertmanager\n\n```bash\nkubectl --namespace monitoring port-forward svc/alertmanager-main 9093\nForwarding from 127.0.0.1:9093 -> 9093\nForwarding from [::1]:9093 -> 9093\n\n```\n\n- Now visit [localhost:9093](localhost:9093)\n\n![img.png](.images/alertmanager.png)\n\n\n## Access Grafana \n\n```bash\n$ kubectl --namespace monitoring port-forward svc/grafana 3000\nForwarding from 127.0.0.1:3000 -> 3000\nForwarding from [::1]:3000 -> 3000\n```\n\n- Now visit [localhost:3000](localhost:3000)\n- use `admin` as username and `admin` as password\n\n![img.png](.images/grafana.png)\n\n![img.png](.images/kubernetes-compute-resources-namespace-pods.png)\n\nYou can check out the other dashboards as well\n\n\n- Clean up\n\n```bash\n$ kind delete cluster\n\nrm -rf manifests\n```"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_039__local__kind__prometheus_operator__kube_prometheus_grafana_alertmanager/kind-config.yaml",
    "content": "kind: Cluster\napiVersion: kind.x-k8s.io/v1alpha4\nnodes:\n  - role: control-plane\n    image: kindest/node:v1.24.0\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_040__local__kind__bitnami_loki___using_39/ReadMe.md",
    "content": "# Loki And Prometheus Operator\n\n- [bitnami/grafana-loki](https://github.com/bitnami/charts/tree/main/bitnami/grafana-loki)\n- [bitnami.com/stack/grafana-loki/helm](https://bitnami.com/stack/grafana-loki/helm)\n\n- Ensure that you have completed the [task_039__local__kind__prometheus_operator__kube_prometheus_grafana_alertmanager](../task_039__local__kind__prometheus_operator__kube_prometheus_grafana_alertmanager) and we will continue from there\n\n```bash\n## Grafana should be up\nkubectl --namespace monitoring port-forward svc/grafana 3000\nForwarding from 127.0.0.1:3000 -> 3000\nForwarding from [::1]:3000 -> 3000\n```\n\n\n```bash\n$ helm repo add bitnami https://charts.bitnami.com/bitnami\n\n$ helm repo list                                          \nNAME    URL                               \nbitnami https://charts.bitnami.com/bitnami\n\n$ helm pull bitnami/grafana-loki\n\n$  ls\nReadMe.md              grafana-loki-2.5.6.tgz\n\n$ tar -xvf grafana-loki-2.5.6.tgz\n\n$ ls\nReadMe.md              grafana-loki           grafana-loki-2.5.6.tgz\n\n# To check available versions\n$ helm show chart grafana-loki | tail -n 2\nversion: 2.5.6\n\n$ kubectl create ns loki \n\n## --create-namespace will create a namespace if it does not exist\n## --namespace <namespace-name> to install resources in that specific namespace\n## --include-crds : By default, when you install a chart that contains CRDs, Helm only installs the resources defined in the chart's templates directory, and does not install the CRDs themselves. The --include-crds option allows you to explicitly include the CRDs in the chart installation\n## --version : The --version option in Helm is used to specify the version of a chart to install\n$ helm template loki \\\n--namespace loki \\\n--include-crds \\\n--version v2.5.6 \\\ngrafana-loki > loki.yaml\n```\n\n- Apply the manifests\n\n```bash\n$ kubectl apply -f loki.yaml \n\n$ kubectl get pods -n loki                                    \nNAME                                               READY   STATUS    RESTARTS      AGE\nloki-grafana-loki-compactor-755b48f75c-szkqf       1/1     Running   0             51m\nloki-grafana-loki-distributor-54868f7c57-gkzsl     1/1     Running   0             51m\nloki-grafana-loki-gateway-6f57fcb59-ltztw          1/1     Running   0             51m\nloki-grafana-loki-ingester-0                       1/1     Running   0             51m\nloki-grafana-loki-promtail-dbd49                   1/1     Running   0             51m\nloki-grafana-loki-querier-0                        1/1     Running   0             51m\nloki-grafana-loki-query-frontend-5b5c7f456-82dbf   1/1     Running   1 (49m ago)   51m\nloki-memcachedchunks-0                             1/1     Running   0             51m\nloki-memcachedfrontend-0                           1/1     Running   0             51m\nloki-memcachedindexqueries-0                       1/1     Running   0             51m\n```\n\n- Get the svc for loki\n\n```bash\nkubectl get svc -n loki | grep gateway\nloki-grafana-loki-gateway                   ClusterIP   10.96.33.166    <none>        80/TCP              55m\n```\n\n\n- Now let's add this to Grafana as a datasource. Go to `Settings > Data Sources > Add data source` and in the URL section\n  add `http://loki-grafana-loki-gateway.loki.svc` and hit `Save and test` \n\n![img.png](.images/add-datasource-loki.png)\n\n\n- Let's create a pod that creates logs\n\n```yaml\napiVersion: v1\nkind: Pod\nmetadata:\n  name: log-generator\nspec:\n  containers:\n    - name: log-generator\n      image: alpine\n      command:\n        - sh\n        - -c\n        - while true; do echo $(date) Hello World!; sleep 1; done\n  restartPolicy: Never\n```\n\n- Apply\n\n```bash\n$ kubectl apply -f log-generator-pod.yaml \npod/log-generator created\n\n$ kubectl logs -f log-generator                                                 \nSat Feb 4 16:58:47 UTC 2023 Hello World!\nSat Feb 4 16:58:48 UTC 2023 Hello World!\n..\n\n```\n\n\n- See the logs\n\n- Select `Explore`, ensure that datasource is selected as `Loki`. In the `label filter` select `pod` and in the value select\n  `log-generator` and hit `Run Query`\n\n![img.png](.images/select-datasources-loki-explore.png)\n\n![img.png](.images/loki-logs.png)\n\n- Remove extra folders if required\n\n```bash\n$ rm -rf grafana-loki grafana-loki-2.5.6.tgz \n```"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_040__local__kind__bitnami_loki___using_39/log-generator-pod.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: log-generator\nspec:\n  containers:\n    - name: log-generator\n      image: alpine\n      command:\n        - sh\n        - -c\n        - while true; do echo $(date) Hello World!; sleep 1; done\n  restartPolicy: Never\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_040__local__kind__bitnami_loki___using_39/loki.yaml",
    "content": "---\n# Source: grafana-loki/templates/promtail/service-account.yaml\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: loki-grafana-loki-promtail\n  namespace: \"loki\"\n  labels:\n    app.kubernetes.io/name: grafana-loki\n    helm.sh/chart: grafana-loki-2.5.6\n    app.kubernetes.io/instance: loki\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/part-of: grafana-loki\n    app.kubernetes.io/component: loki\n  annotations:\nautomountServiceAccountToken: true\n---\n# Source: grafana-loki/templates/promtail/secret.yaml\napiVersion: v1\nkind: Secret\nmetadata:\n  name: loki-grafana-loki-promtail\n  namespace: \"loki\"\n  labels:\n    app.kubernetes.io/name: grafana-loki\n    helm.sh/chart: grafana-loki-2.5.6\n    app.kubernetes.io/instance: loki\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/part-of: grafana-loki\n    app.kubernetes.io/component: loki\nstringData:\n  promtail.yaml: |-\n    server:\n      log_level: info\n      http_listen_port: 8080\n    \n    clients:\n      - url: http://loki-grafana-loki-gateway:80/loki/api/v1/push\n    positions:\n      filename: /run/promtail/positions.yaml\n    \n    scrape_configs:\n      # See also https://github.com/grafana/loki/blob/master/production/ksonnet/promtail/scrape_config.libsonnet for reference\n      - job_name: kubernetes-pods\n        pipeline_stages:\n          - cri: {}\n        kubernetes_sd_configs:\n          - role: pod\n        relabel_configs:\n          - source_labels:\n              - __meta_kubernetes_pod_controller_name\n            regex: ([0-9a-z-.]+?)(-[0-9a-f]{8,10})?\n            action: replace\n            target_label: __tmp_controller_name\n          - source_labels:\n              - __meta_kubernetes_pod_label_app_kubernetes_io_name\n              - __meta_kubernetes_pod_label_app\n              - __tmp_controller_name\n              - __meta_kubernetes_pod_name\n            regex: ^;*([^;]+)(;.*)?$\n            action: replace\n            target_label: app\n          - source_labels:\n              - __meta_kubernetes_pod_label_app_kubernetes_io_component\n              - __meta_kubernetes_pod_label_component\n            regex: ^;*([^;]+)(;.*)?$\n            action: replace\n            target_label: component\n          - action: replace\n            source_labels:\n            - __meta_kubernetes_pod_node_name\n            target_label: node_name\n          - action: replace\n            source_labels:\n            - __meta_kubernetes_namespace\n            target_label: namespace\n          - action: replace\n            replacement: $1\n            separator: /\n            source_labels:\n            - namespace\n            - app\n            target_label: job\n          - action: replace\n            source_labels:\n            - __meta_kubernetes_pod_name\n            target_label: pod\n          - action: replace\n            source_labels:\n            - __meta_kubernetes_pod_container_name\n            target_label: container\n          - action: replace\n            replacement: /var/log/pods/*$1/*.log\n            separator: /\n            source_labels:\n            - __meta_kubernetes_pod_uid\n            - __meta_kubernetes_pod_container_name\n            target_label: __path__\n          - action: replace\n            regex: true/(.*)\n            replacement: /var/log/pods/*$1/*.log\n            separator: /\n            source_labels:\n            - __meta_kubernetes_pod_annotationpresent_kubernetes_io_config_hash\n            - __meta_kubernetes_pod_annotation_kubernetes_io_config_hash\n            - __meta_kubernetes_pod_container_name\n            target_label: __path__\n---\n# Source: grafana-loki/templates/gateway/configmap-http.yaml\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: loki-grafana-loki-gateway\n  namespace: \"loki\"\n  labels:\n    app.kubernetes.io/name: grafana-loki\n    helm.sh/chart: grafana-loki-2.5.6\n    app.kubernetes.io/instance: loki\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/part-of: grafana-loki\n    app.kubernetes.io/component: gateway\ndata:\n  nginx.conf: |+\n      worker_processes  5;  ## Default: 1\n      error_log  /dev/stderr;\n      pid        /tmp/nginx.pid;\n      worker_rlimit_nofile 8192;\n\n      events {\n        worker_connections  4096;  ## Default: 1024\n      }\n\n      http {\n        client_body_temp_path /tmp/client_temp;\n        proxy_temp_path       /tmp/proxy_temp_path;\n        fastcgi_temp_path     /tmp/fastcgi_temp;\n        uwsgi_temp_path       /tmp/uwsgi_temp;\n        scgi_temp_path        /tmp/scgi_temp;\n\n        default_type application/octet-stream;\n        log_format  main '$remote_addr - $remote_user [$time_local]  $status ' '\"$request\" $body_bytes_sent \"$http_referer\" ' '\"$http_user_agent\" \"$http_x_forwarded_for\"';\n\n        include /opt/bitnami/nginx/conf/resolvers.conf;\n\n        map $status $loggable {\n          ~^[23]  0;\n          default 1;\n        }\n        access_log   /dev/stderr  main  if=$loggable;\n\n        sendfile     on;\n        tcp_nopush   on;\n\n        server {\n          listen             8080;\n\n          location = / {\n            return 200 'OK';\n            auth_basic off;\n          }\n\n          location = /api/prom/push {\n            proxy_pass       http://loki-grafana-loki-distributor.loki.svc.cluster.local:3100$request_uri;\n          }\n\n          location = /api/prom/tail {\n            proxy_pass       http://loki-grafana-loki-querier.loki.svc.cluster.local:3100$request_uri;\n            proxy_set_header Upgrade $http_upgrade;\n            proxy_set_header Connection \"upgrade\";\n          }\n\n          # Ruler\n          location ~ /prometheus/api/v1/alerts.* {\n            proxy_pass       http://loki-grafana-loki-ruler.loki.svc.cluster.local:3100$request_uri;\n          }\n          location ~ /prometheus/api/v1/rules.* {\n            proxy_pass       http://loki-grafana-loki-ruler.loki.svc.cluster.local:3100$request_uri;\n          }\n          location ~ /api/prom/rules.* {\n            proxy_pass       http://loki-grafana-loki-ruler.loki.svc.cluster.local:3100$request_uri;\n          }\n          location ~ /api/prom/alerts.* {\n            proxy_pass       http://loki-grafana-loki-ruler.loki.svc.cluster.local:3100$request_uri;\n          }\n\n          location ~ /api/prom/.* {\n            proxy_pass       http://loki-grafana-loki-query-frontend.loki.svc.cluster.local:3100$request_uri;\n          }\n\n          location = /loki/api/v1/push {\n            proxy_pass       http://loki-grafana-loki-distributor.loki.svc.cluster.local:3100$request_uri;\n          }\n\n          location = /loki/api/v1/tail {\n            proxy_pass       http://loki-grafana-loki-querier.loki.svc.cluster.local:3100$request_uri;\n            proxy_set_header Upgrade $http_upgrade;\n            proxy_set_header Connection \"upgrade\";\n          }\n\n          location ~ /loki/api/.* {\n            proxy_pass       http://loki-grafana-loki-query-frontend.loki.svc.cluster.local:3100$request_uri;\n          }\n        }\n      }\n---\n# Source: grafana-loki/templates/loki-configmap.yaml\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: loki-grafana-loki\n  namespace: \"loki\"\n  labels:\n    app.kubernetes.io/name: grafana-loki\n    helm.sh/chart: grafana-loki-2.5.6\n    app.kubernetes.io/instance: loki\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/part-of: grafana-loki\n    app.kubernetes.io/component: loki\ndata:\n  loki.yaml: |-\n    auth_enabled: false\n    chunk_store_config:\n      chunk_cache_config:\n        memcached:\n          batch_size: 100\n          parallelism: 100\n        memcached_client:\n          addresses: dns+loki-memcachedchunks:11211\n          consistent_hash: true\n      max_look_back_period: 0s\n    common:\n      compactor_address: http://loki-grafana-loki-compactor:3100\n    compactor:\n      shared_store: filesystem\n    distributor:\n      ring:\n        kvstore:\n          store: memberlist\n    frontend:\n      compress_responses: true\n      log_queries_longer_than: 5s\n      tail_proxy_url: http://loki-grafana-loki-querier:3100\n    frontend_worker:\n      frontend_address: loki-grafana-loki-query-frontend:9095\n    ingester:\n      chunk_block_size: 262144\n      chunk_encoding: snappy\n      chunk_idle_period: 30m\n      chunk_retain_period: 1m\n      lifecycler:\n        ring:\n          kvstore:\n            store: memberlist\n          replication_factor: 1\n      max_transfer_retries: 0\n      wal:\n        dir: /bitnami/grafana-loki/wal\n    limits_config:\n      enforce_metric_name: false\n      max_cache_freshness_per_query: 10m\n      reject_old_samples: true\n      reject_old_samples_max_age: 168h\n      split_queries_by_interval: 15m\n    memberlist:\n      join_members:\n      - loki-grafana-loki-gossip-ring\n    query_range:\n      align_queries_with_step: true\n      cache_results: true\n      max_retries: 5\n      results_cache:\n        cache:\n          memcached_client:\n            addresses: dns+loki-memcachedfrontend:11211\n            consistent_hash: true\n            max_idle_conns: 16\n            timeout: 500ms\n            update_interval: 1m\n    ruler:\n      alertmanager_url: https://alertmanager.xx\n      external_url: https://alertmanager.xx\n      ring:\n        kvstore:\n          store: memberlist\n      rule_path: /tmp/loki/scratch\n      storage:\n        local:\n          directory: /bitnami/grafana-loki/conf/rules\n        type: local\n    schema_config:\n      configs:\n      - from: \"2020-10-24\"\n        index:\n          period: 24h\n          prefix: index_\n        object_store: filesystem\n        schema: v11\n        store: boltdb-shipper\n    server:\n      http_listen_port: 3100\n    storage_config:\n      boltdb_shipper:\n        active_index_directory: /bitnami/grafana-loki/loki/index\n        cache_location: /bitnami/grafana-loki/loki/cache\n        cache_ttl: 168h\n        shared_store: filesystem\n      filesystem:\n        directory: /bitnami/grafana-loki/chunks\n      index_queries_cache_config:\n        memcached:\n          batch_size: 100\n          parallelism: 100\n        memcached_client:\n          addresses: dns+loki-memcachedindexqueries:11211\n          consistent_hash: true\n          service: http\n    table_manager:\n      retention_deletes_enabled: false\n      retention_period: 0s\n---\n# Source: grafana-loki/templates/compactor/pvc.yaml\nkind: PersistentVolumeClaim\napiVersion: v1\nmetadata:\n  name: loki-grafana-loki-compactor\n  namespace: \"loki\"\n  labels:\n    app.kubernetes.io/name: grafana-loki\n    helm.sh/chart: grafana-loki-2.5.6\n    app.kubernetes.io/instance: loki\n    app.kubernetes.io/managed-by: Helm\nspec:\n  accessModes:\n    - \"ReadWriteOnce\"\n  resources:\n    requests:\n      storage: \"8Gi\"\n---\n# Source: grafana-loki/templates/promtail/clusterrole.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app.kubernetes.io/name: grafana-loki\n    helm.sh/chart: grafana-loki-2.5.6\n    app.kubernetes.io/instance: loki\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/part-of: grafana-loki\n    app.kubernetes.io/component: promtail\n  name: loki-grafana-loki-loki-promtail\nrules:\n  - apiGroups:\n      - \"\"\n    resources:\n      - nodes\n      - nodes/proxy\n      - services\n      - endpoints\n      - pods\n    verbs:\n      - get\n      - watch\n      - list\n---\n# Source: grafana-loki/templates/promtail/clusterrolebinding.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/name: grafana-loki\n    helm.sh/chart: grafana-loki-2.5.6\n    app.kubernetes.io/instance: loki\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/part-of: grafana-loki\n    app.kubernetes.io/component: promtail\n  name: loki-grafana-loki-loki-promtail\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: loki-grafana-loki-loki-promtail\nsubjects:\n  - kind: ServiceAccount\n    name: loki-grafana-loki-promtail\n    namespace: \"loki\"\n---\n# Source: grafana-loki/charts/memcachedchunks/templates/service.yaml\napiVersion: v1\nkind: Service\nmetadata:\n  name: loki-memcachedchunks\n  namespace: loki\n  labels:\n    app.kubernetes.io/name: memcachedchunks\n    helm.sh/chart: memcachedchunks-6.3.5\n    app.kubernetes.io/instance: loki\n    app.kubernetes.io/managed-by: Helm\n  annotations:\nspec:\n  type: ClusterIP\n  sessionAffinity: None\n  ports:\n    - name: memcache\n      port: 11211\n      targetPort: memcache\n      nodePort: null\n  selector:\n    app.kubernetes.io/name: memcachedchunks\n    app.kubernetes.io/instance: loki\n---\n# Source: grafana-loki/charts/memcachedfrontend/templates/service.yaml\napiVersion: v1\nkind: Service\nmetadata:\n  name: loki-memcachedfrontend\n  namespace: loki\n  labels:\n    app.kubernetes.io/name: memcachedfrontend\n    helm.sh/chart: memcachedfrontend-6.3.5\n    app.kubernetes.io/instance: loki\n    app.kubernetes.io/managed-by: Helm\n  annotations:\nspec:\n  type: ClusterIP\n  sessionAffinity: None\n  ports:\n    - name: memcache\n      port: 11211\n      targetPort: memcache\n      nodePort: null\n  selector:\n    app.kubernetes.io/name: memcachedfrontend\n    app.kubernetes.io/instance: loki\n---\n# Source: grafana-loki/charts/memcachedindexqueries/templates/service.yaml\napiVersion: v1\nkind: Service\nmetadata:\n  name: loki-memcachedindexqueries\n  namespace: loki\n  labels:\n    app.kubernetes.io/name: memcachedindexqueries\n    helm.sh/chart: memcachedindexqueries-6.3.5\n    app.kubernetes.io/instance: loki\n    app.kubernetes.io/managed-by: Helm\n  annotations:\nspec:\n  type: ClusterIP\n  sessionAffinity: None\n  ports:\n    - name: memcache\n      port: 11211\n      targetPort: memcache\n      nodePort: null\n  selector:\n    app.kubernetes.io/name: memcachedindexqueries\n    app.kubernetes.io/instance: loki\n---\n# Source: grafana-loki/templates/compactor/service.yaml\napiVersion: v1\nkind: Service\nmetadata:\n  name: loki-grafana-loki-compactor\n  namespace: \"loki\"\n  labels:\n    app.kubernetes.io/name: grafana-loki\n    helm.sh/chart: grafana-loki-2.5.6\n    app.kubernetes.io/instance: loki\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/part-of: grafana-loki\n    app.kubernetes.io/component: compactor\nspec:\n  type: ClusterIP\n  sessionAffinity: None\n  \n  ports:\n    - name: http\n      port: 3100\n      targetPort: http\n      protocol: TCP\n      nodePort: null\n  selector:\n    app.kubernetes.io/name: grafana-loki\n    app.kubernetes.io/instance: loki\n    app.kubernetes.io/part-of: grafana-loki\n    app.kubernetes.io/component: compactor\n---\n# Source: grafana-loki/templates/distributor/service.yaml\napiVersion: v1\nkind: Service\nmetadata:\n  name: loki-grafana-loki-distributor\n  namespace: \"loki\"\n  labels:\n    app.kubernetes.io/name: grafana-loki\n    helm.sh/chart: grafana-loki-2.5.6\n    app.kubernetes.io/instance: loki\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/part-of: grafana-loki\n    app.kubernetes.io/component: distributor\nspec:\n  type: ClusterIP\n  sessionAffinity: None\n  \n  ports:\n    - name: http\n      port: 3100\n      targetPort: http\n      protocol: TCP\n      nodePort: null\n    - name: grpc\n      port: 9095\n      protocol: TCP\n      targetPort: grpc\n      nodePort: null\n  selector:\n    app.kubernetes.io/name: grafana-loki\n    app.kubernetes.io/instance: loki\n    app.kubernetes.io/part-of: grafana-loki\n    app.kubernetes.io/component: distributor\n---\n# Source: grafana-loki/templates/gateway/service.yaml\napiVersion: v1\nkind: Service\nmetadata:\n  name: loki-grafana-loki-gateway\n  namespace: \"loki\"\n  labels:\n    app.kubernetes.io/name: grafana-loki\n    helm.sh/chart: grafana-loki-2.5.6\n    app.kubernetes.io/instance: loki\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/part-of: grafana-loki\n    app.kubernetes.io/component: gateway\n  annotations:\nspec:\n  type: ClusterIP\n  sessionAffinity: None\n  ports:\n    - name: http\n      port: 80\n      targetPort: http\n      nodePort: null\n  selector:\n    app.kubernetes.io/name: grafana-loki\n    app.kubernetes.io/instance: loki\n    app.kubernetes.io/part-of: grafana-loki\n    app.kubernetes.io/component: gateway\n---\n# Source: grafana-loki/templates/gossip-ring-headless-service.yaml\napiVersion: v1\nkind: Service\nmetadata:\n  name: loki-grafana-loki-gossip-ring\n  namespace: \"loki\"\n  labels:\n    app.kubernetes.io/name: grafana-loki\n    helm.sh/chart: grafana-loki-2.5.6\n    app.kubernetes.io/instance: loki\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/part-of: grafana-loki\n    app.kubernetes.io/component: loki\nspec:\n  type: ClusterIP\n  publishNotReadyAddresses: true\n  clusterIP: None\n  ports:\n    - name: http\n      port: 7946\n      targetPort: http-memberlist\n      protocol: TCP\n  selector:\n    app.kubernetes.io/name: grafana-loki\n    app.kubernetes.io/instance: loki\n    loki-gossip-member: \"true\"\n---\n# Source: grafana-loki/templates/ingester/service.yaml\napiVersion: v1\nkind: Service\nmetadata:\n  name: loki-grafana-loki-ingester\n  namespace: \"loki\"\n  labels:\n    app.kubernetes.io/name: grafana-loki\n    helm.sh/chart: grafana-loki-2.5.6\n    app.kubernetes.io/instance: loki\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/part-of: grafana-loki\n    app.kubernetes.io/component: ingester\nspec:\n  type: ClusterIP\n  sessionAffinity: None\n  \n  ports:\n    - name: http\n      port: 3100\n      targetPort: http\n      protocol: TCP\n      nodePort: null\n    - name: grpc\n      port: 9095\n      targetPort: grpc\n      protocol: TCP\n      nodePort: null\n  selector:\n    app.kubernetes.io/name: grafana-loki\n    app.kubernetes.io/instance: loki\n    app.kubernetes.io/part-of: grafana-loki\n    app.kubernetes.io/component: ingester\n---\n# Source: grafana-loki/templates/promtail/service.yaml\napiVersion: v1\nkind: Service\nmetadata:\n  name: loki-grafana-loki-promtail\n  namespace: \"loki\"\n  labels:\n    app.kubernetes.io/name: grafana-loki\n    helm.sh/chart: grafana-loki-2.5.6\n    app.kubernetes.io/instance: loki\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/part-of: grafana-loki\n    app.kubernetes.io/component: promtail\nspec:\n  type: ClusterIP\n  sessionAffinity: None\n  \n  ports:\n    - name: http\n      port: 3100\n      targetPort: http\n      protocol: TCP\n      nodePort: null\n  selector:\n    app.kubernetes.io/name: grafana-loki\n    app.kubernetes.io/instance: loki\n    app.kubernetes.io/part-of: grafana-loki\n    app.kubernetes.io/component: promtail\n---\n# Source: grafana-loki/templates/querier/service.yaml\napiVersion: v1\nkind: Service\nmetadata:\n  name: loki-grafana-loki-querier\n  namespace: \"loki\"\n  labels:\n    app.kubernetes.io/name: grafana-loki\n    helm.sh/chart: grafana-loki-2.5.6\n    app.kubernetes.io/instance: loki\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/part-of: grafana-loki\n    app.kubernetes.io/component: querier\nspec:\n  type: ClusterIP\n  sessionAffinity: None\n  \n  ports:\n    - name: http\n      port: 3100\n      targetPort: http\n      protocol: TCP\n      nodePort: null\n    - name: grpc\n      port: 9095\n      targetPort: grpc\n      protocol: TCP\n      nodePort: null\n  selector:\n    app.kubernetes.io/name: grafana-loki\n    app.kubernetes.io/instance: loki\n    app.kubernetes.io/part-of: grafana-loki\n    app.kubernetes.io/component: querier\n---\n# Source: grafana-loki/templates/query-frontend/headless-service.yaml\napiVersion: v1\nkind: Service\nmetadata:\n  name: loki-grafana-loki-query-frontend-headless\n  namespace: \"loki\"\n  labels:\n    app.kubernetes.io/name: grafana-loki\n    helm.sh/chart: grafana-loki-2.5.6\n    app.kubernetes.io/instance: loki\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/part-of: grafana-loki\n    app.kubernetes.io/component: query-frontend\nspec:\n  # NOTE: this is based on this https://github.com/grafana/helm-charts/pull/451. Should be reviewed if it is actually necessary in the future\n  publishNotReadyAddresses: true\n  type: ClusterIP\n  clusterIP: None\n  ports:\n    - name: http\n      port: 3100\n      targetPort: http\n      protocol: TCP\n    - name: grpc\n      port: 9095\n      targetPort: grpc\n      protocol: TCP\n  selector:\n    app.kubernetes.io/name: grafana-loki\n    app.kubernetes.io/instance: loki\n    app.kubernetes.io/part-of: grafana-loki\n    app.kubernetes.io/component: query-frontend\n---\n# Source: grafana-loki/templates/query-frontend/service.yaml\napiVersion: v1\nkind: Service\nmetadata:\n  name: loki-grafana-loki-query-frontend\n  namespace: \"loki\"\n  labels:\n    app.kubernetes.io/name: grafana-loki\n    helm.sh/chart: grafana-loki-2.5.6\n    app.kubernetes.io/instance: loki\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/part-of: grafana-loki\n    app.kubernetes.io/component: query-frontend\nspec:\n  type: ClusterIP\n  sessionAffinity: None\n  \n  publishNotReadyAddresses: true\n  ports:\n    - name: http\n      port: 3100\n      targetPort: http\n      protocol: TCP\n      nodePort: null\n    - name: grpc\n      port: 9095\n      targetPort: grpc\n      protocol: TCP\n      nodePort: null\n  selector:\n    app.kubernetes.io/name: grafana-loki\n    app.kubernetes.io/instance: loki\n    app.kubernetes.io/part-of: grafana-loki\n    app.kubernetes.io/component: query-frontend\n---\n# Source: grafana-loki/templates/promtail/daemonset.yaml\napiVersion: apps/v1\nkind: DaemonSet\nmetadata:\n  name: loki-grafana-loki-promtail\n  namespace: \"loki\"\n  labels:\n    app.kubernetes.io/name: grafana-loki\n    helm.sh/chart: grafana-loki-2.5.6\n    app.kubernetes.io/instance: loki\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/part-of: grafana-loki\n    app.kubernetes.io/component: promtail\nspec:\n  updateStrategy:\n    rollingUpdate: {}\n    type: RollingUpdate\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: grafana-loki\n      app.kubernetes.io/instance: loki\n      app.kubernetes.io/part-of: grafana-loki\n      app.kubernetes.io/component: promtail\n  template:\n    metadata:\n      annotations:\n        checksum/config: 306a1d5fd2ca1dc714fccaac3b5ea22df10271fb72728bbfd71c72088f9c690a\n      labels:\n        app.kubernetes.io/name: grafana-loki\n        helm.sh/chart: grafana-loki-2.5.6\n        app.kubernetes.io/instance: loki\n        app.kubernetes.io/managed-by: Helm\n        app.kubernetes.io/part-of: grafana-loki\n        app.kubernetes.io/component: promtail\n        loki-gossip-member: \"true\"\n    spec:\n      serviceAccountName: loki-grafana-loki-promtail\n      \n      affinity:\n        podAffinity:\n          \n        podAntiAffinity:\n          preferredDuringSchedulingIgnoredDuringExecution:\n            - podAffinityTerm:\n                labelSelector:\n                  matchLabels:\n                    app.kubernetes.io/name: grafana-loki\n                    app.kubernetes.io/instance: loki\n                    app.kubernetes.io/component: promtail\n                topologyKey: kubernetes.io/hostname\n              weight: 1\n        nodeAffinity:\n          \n      securityContext:\n        fsGroup: 0\n      initContainers:\n      containers:\n        - name: promtail\n          image: docker.io/bitnami/promtail:2.7.2-debian-11-r1\n          imagePullPolicy: IfNotPresent\n          securityContext:\n            runAsNonRoot: false\n            runAsUser: 0\n          args:\n            - -config.file=/bitnami/promtail/conf/promtail.yaml\n          env:\n            - name: HOSTNAME\n              valueFrom:\n                fieldRef:\n                  fieldPath: spec.nodeName\n          envFrom:\n          ports:\n            - containerPort: 8080\n              name: http\n          resources:\n            limits: {}\n            requests: {}\n          livenessProbe:\n            failureThreshold: 3\n            initialDelaySeconds: 10\n            periodSeconds: 10\n            successThreshold: 1\n            timeoutSeconds: 1\n            httpGet:\n              path: /ready\n              port: http\n          readinessProbe:\n            failureThreshold: 3\n            initialDelaySeconds: 10\n            periodSeconds: 10\n            successThreshold: 1\n            timeoutSeconds: 1\n            httpGet:\n              path: /ready\n              port: http\n          volumeMounts:\n            - name: loki-config\n              mountPath: /bitnami/promtail/conf/promtail.yaml\n              subPath: promtail.yaml\n            - name: containers\n              mountPath: /var/lib/docker/containers\n              readOnly: true\n            - name: pods\n              mountPath: /var/log/pods\n              readOnly: true\n            - name: run\n              mountPath: /run/promtail\n      volumes:\n        - name: loki-config\n          secret:\n            secretName: loki-grafana-loki-promtail\n        - name: containers\n          hostPath:\n            path: /var/lib/docker/containers\n        - name: pods\n          hostPath:\n            path: /var/log/pods\n        - name: run\n          hostPath:\n            path: /run/promtail\n---\n# Source: grafana-loki/templates/compactor/deployment.yaml\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: loki-grafana-loki-compactor\n  namespace: \"loki\"\n  labels:\n    app.kubernetes.io/name: grafana-loki\n    helm.sh/chart: grafana-loki-2.5.6\n    app.kubernetes.io/instance: loki\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/part-of: grafana-loki\n    app.kubernetes.io/component: compactor\nspec:\n  replicas: 1\n  strategy:\n    rollingUpdate: {}\n    type: RollingUpdate\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: grafana-loki\n      app.kubernetes.io/instance: loki\n      app.kubernetes.io/part-of: grafana-loki\n      app.kubernetes.io/component: compactor\n  template:\n    metadata:\n      annotations:\n        checksum/config: 306a1d5fd2ca1dc714fccaac3b5ea22df10271fb72728bbfd71c72088f9c690a\n      labels:\n        app.kubernetes.io/name: grafana-loki\n        helm.sh/chart: grafana-loki-2.5.6\n        app.kubernetes.io/instance: loki\n        app.kubernetes.io/managed-by: Helm\n        app.kubernetes.io/part-of: grafana-loki\n        app.kubernetes.io/component: compactor\n        loki-gossip-member: \"true\"\n    spec:\n      serviceAccountName: default\n      \n      affinity:\n        podAffinity:\n          \n        podAntiAffinity:\n          preferredDuringSchedulingIgnoredDuringExecution:\n            - podAffinityTerm:\n                labelSelector:\n                  matchLabels:\n                    app.kubernetes.io/name: grafana-loki\n                    app.kubernetes.io/instance: loki\n                    app.kubernetes.io/component: compactor\n                topologyKey: kubernetes.io/hostname\n              weight: 1\n        nodeAffinity:\n          \n      securityContext:\n        fsGroup: 1001\n      initContainers:\n      containers:\n        - name: grafana-loki-compactor\n          image: docker.io/bitnami/grafana-loki:2.7.3-debian-11-r0\n          imagePullPolicy: IfNotPresent\n          securityContext:\n            runAsNonRoot: true\n            runAsUser: 1001\n          args:\n            - -target=compactor\n            - -config.file=/bitnami/grafana-loki/conf/loki.yaml\n            - -boltdb.shipper.compactor.working-directory=/bitnami/grafana-loki/loki/compactor\n          envFrom:\n          ports:\n            - containerPort: 3100\n              name: http\n            - containerPort: 7946\n              name: http-memberlist\n          resources:\n            limits: {}\n            requests: {}\n          livenessProbe:\n            failureThreshold: 3\n            initialDelaySeconds: 60\n            periodSeconds: 10\n            successThreshold: 1\n            timeoutSeconds: 1\n            httpGet:\n              path: /ready\n              port: http\n          readinessProbe:\n            failureThreshold: 3\n            initialDelaySeconds: 60\n            periodSeconds: 10\n            successThreshold: 1\n            timeoutSeconds: 1\n            httpGet:\n              path: /ready\n              port: http\n          volumeMounts:\n            - name: loki-config\n              mountPath: /bitnami/grafana-loki/conf/loki.yaml\n              subPath: loki.yaml\n            - name: data\n              mountPath: /bitnami/grafana-loki/loki/compactor\n      volumes:\n        - name: data\n          persistentVolumeClaim:\n            claimName: loki-grafana-loki-compactor\n        - name: loki-config\n          configMap:\n            name: loki-grafana-loki\n---\n# Source: grafana-loki/templates/distributor/deployment.yaml\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: loki-grafana-loki-distributor\n  namespace: \"loki\"\n  labels:\n    app.kubernetes.io/name: grafana-loki\n    helm.sh/chart: grafana-loki-2.5.6\n    app.kubernetes.io/instance: loki\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/part-of: grafana-loki\n    app.kubernetes.io/component: distributor\n    loki-gossip-member: \"true\"\nspec:\n  replicas: 1\n  strategy:\n    rollingUpdate: {}\n    type: RollingUpdate\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: grafana-loki\n      app.kubernetes.io/instance: loki\n      app.kubernetes.io/part-of: grafana-loki\n      app.kubernetes.io/component: distributor\n      loki-gossip-member: \"true\"\n  template:\n    metadata:\n      annotations:\n        checksum/config: 306a1d5fd2ca1dc714fccaac3b5ea22df10271fb72728bbfd71c72088f9c690a\n      labels:\n        app.kubernetes.io/name: grafana-loki\n        helm.sh/chart: grafana-loki-2.5.6\n        app.kubernetes.io/instance: loki\n        app.kubernetes.io/managed-by: Helm\n        app.kubernetes.io/part-of: grafana-loki\n        app.kubernetes.io/component: distributor\n        loki-gossip-member: \"true\"\n    spec:\n      serviceAccountName: default\n      \n      affinity:\n        podAffinity:\n          \n        podAntiAffinity:\n          preferredDuringSchedulingIgnoredDuringExecution:\n            - podAffinityTerm:\n                labelSelector:\n                  matchLabels:\n                    app.kubernetes.io/name: grafana-loki\n                    app.kubernetes.io/instance: loki\n                    app.kubernetes.io/component: distributor\n                topologyKey: kubernetes.io/hostname\n              weight: 1\n        nodeAffinity:\n          \n      securityContext:\n        fsGroup: 1001\n      initContainers:\n      containers:\n        - name: grafana-loki-distributor\n          image: docker.io/bitnami/grafana-loki:2.7.3-debian-11-r0\n          imagePullPolicy: IfNotPresent\n          securityContext:\n            runAsNonRoot: true\n            runAsUser: 1001\n          args:\n            - -target=distributor\n            - -config.file=/bitnami/grafana-loki/conf/loki.yaml\n          envFrom:\n          ports:\n            - containerPort: 3100\n              name: http\n            - containerPort: 7946\n              name: http-memberlist\n            - containerPort: 9095\n              name: grpc\n          resources:\n            limits: {}\n            requests: {}\n          livenessProbe:\n            failureThreshold: 3\n            initialDelaySeconds: 10\n            periodSeconds: 10\n            successThreshold: 1\n            timeoutSeconds: 1\n            httpGet:\n              path: /ready\n              port: http\n          readinessProbe:\n            failureThreshold: 3\n            initialDelaySeconds: 10\n            periodSeconds: 10\n            successThreshold: 1\n            timeoutSeconds: 1\n            httpGet:\n              path: /ready\n              port: http\n          volumeMounts:\n            - name: loki-config\n              mountPath: /bitnami/grafana-loki/conf/loki.yaml\n              subPath: loki.yaml\n      volumes:\n        - name: loki-config\n          configMap:\n            name: loki-grafana-loki\n---\n# Source: grafana-loki/templates/gateway/deployment.yaml\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: loki-grafana-loki-gateway\n  namespace: \"loki\"\n  labels:\n    app.kubernetes.io/name: grafana-loki\n    helm.sh/chart: grafana-loki-2.5.6\n    app.kubernetes.io/instance: loki\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/part-of: grafana-loki\n    app.kubernetes.io/component: gateway\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: grafana-loki\n      app.kubernetes.io/instance: loki\n      app.kubernetes.io/part-of: grafana-loki\n      app.kubernetes.io/component: gateway\n  strategy:\n    rollingUpdate: {}\n    type: RollingUpdate\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/name: grafana-loki\n        helm.sh/chart: grafana-loki-2.5.6\n        app.kubernetes.io/instance: loki\n        app.kubernetes.io/managed-by: Helm\n        app.kubernetes.io/part-of: grafana-loki\n        app.kubernetes.io/component: gateway\n      annotations:\n        checksum/configmap: ded78754c1e7b12ebe43753d30978f9777fb0f67f46381624cdc9d9feb599fda\n    spec:\n      \n      affinity:\n        podAffinity:\n          \n        podAntiAffinity:\n          preferredDuringSchedulingIgnoredDuringExecution:\n            - podAffinityTerm:\n                labelSelector:\n                  matchLabels:\n                    app.kubernetes.io/name: grafana-loki\n                    app.kubernetes.io/instance: loki\n                    app.kubernetes.io/component: gateway\n                topologyKey: kubernetes.io/hostname\n              weight: 1\n        nodeAffinity:\n          \n      securityContext:\n        fsGroup: 1001\n      containers:\n        - name: gateway\n          image: docker.io/bitnami/nginx:1.23.3-debian-11-r19\n          imagePullPolicy: \"IfNotPresent\"\n          securityContext:\n            runAsNonRoot: true\n            runAsUser: 1001\n          command:\n            - /bin/bash\n            - -ec\n            - |\n              # Generate resolver data\n              echo resolver $(awk 'BEGIN{ORS=\" \"} $1==\"nameserver\" {print $2}' /etc/resolv.conf) \";\" > /opt/bitnami/nginx/conf/resolvers.conf\n              /opt/bitnami/scripts/nginx/entrypoint.sh /opt/bitnami/scripts/nginx/run.sh\n          env:\n            - name: BITNAMI_DEBUG\n              value: \"false\"\n          envFrom:\n          ports:\n            - containerPort: 8080\n              name: http\n          livenessProbe:\n            failureThreshold: 3\n            initialDelaySeconds: 10\n            periodSeconds: 10\n            successThreshold: 1\n            timeoutSeconds: 1\n            httpGet:\n              path: /\n              port: http\n          readinessProbe:\n            failureThreshold: 3\n            initialDelaySeconds: 10\n            periodSeconds: 10\n            successThreshold: 1\n            timeoutSeconds: 1\n            httpGet:\n              path: /\n              port: http\n          resources:\n            limits: {}\n            requests: {}\n          volumeMounts:\n            - name: config\n              mountPath: /opt/bitnami/nginx/conf/nginx.conf\n              subPath: nginx.conf\n      volumes:\n        - name: config\n          configMap:\n            name: loki-grafana-loki-gateway\n---\n# Source: grafana-loki/templates/query-frontend/deployment.yaml\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: loki-grafana-loki-query-frontend\n  namespace: \"loki\"\n  labels:\n    app.kubernetes.io/name: grafana-loki\n    helm.sh/chart: grafana-loki-2.5.6\n    app.kubernetes.io/instance: loki\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/part-of: grafana-loki\n    app.kubernetes.io/component: query-frontend\nspec:\n  replicas: 1\n  strategy:\n    rollingUpdate: {}\n    type: RollingUpdate\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: grafana-loki\n      app.kubernetes.io/instance: loki\n      app.kubernetes.io/part-of: grafana-loki\n      app.kubernetes.io/component: query-frontend\n  template:\n    metadata:\n      annotations:\n        checksum/config: 306a1d5fd2ca1dc714fccaac3b5ea22df10271fb72728bbfd71c72088f9c690a\n      labels:\n        app.kubernetes.io/name: grafana-loki\n        helm.sh/chart: grafana-loki-2.5.6\n        app.kubernetes.io/instance: loki\n        app.kubernetes.io/managed-by: Helm\n        app.kubernetes.io/part-of: grafana-loki\n        app.kubernetes.io/component: query-frontend\n        loki-gossip-member: \"true\"\n    spec:\n      serviceAccountName: default\n      \n      affinity:\n        podAffinity:\n          \n        podAntiAffinity:\n          preferredDuringSchedulingIgnoredDuringExecution:\n            - podAffinityTerm:\n                labelSelector:\n                  matchLabels:\n                    app.kubernetes.io/name: grafana-loki\n                    app.kubernetes.io/instance: loki\n                    app.kubernetes.io/component: query-frontend\n                topologyKey: kubernetes.io/hostname\n              weight: 1\n        nodeAffinity:\n          \n      securityContext:\n        fsGroup: 1001\n      initContainers:\n      containers:\n        - name: grafana-loki-query-frontend\n          image: docker.io/bitnami/grafana-loki:2.7.3-debian-11-r0\n          imagePullPolicy: IfNotPresent\n          securityContext:\n            runAsNonRoot: true\n            runAsUser: 1001\n          args:\n            - -target=query-frontend\n            - -config.file=/bitnami/grafana-loki/conf/loki.yaml\n          envFrom:\n          ports:\n            - containerPort: 3100\n              name: http\n            - containerPort: 9095\n              name: grpc\n          resources:\n            limits: {}\n            requests: {}\n          livenessProbe:\n            failureThreshold: 3\n            initialDelaySeconds: 10\n            periodSeconds: 10\n            successThreshold: 1\n            timeoutSeconds: 1\n            httpGet:\n              path: /ready\n              port: http\n          readinessProbe:\n            failureThreshold: 3\n            initialDelaySeconds: 10\n            periodSeconds: 10\n            successThreshold: 1\n            timeoutSeconds: 1\n            httpGet:\n              path: /ready\n              port: http\n          volumeMounts:\n            - name: loki-config\n              mountPath: /bitnami/grafana-loki/conf/loki.yaml\n              subPath: loki.yaml\n      volumes:\n        - name: loki-config\n          configMap:\n            name: loki-grafana-loki\n---\n# Source: grafana-loki/charts/memcachedchunks/templates/statefulset.yaml\napiVersion: apps/v1\nkind: StatefulSet\nmetadata:\n  name: loki-memcachedchunks\n  namespace: loki\n  labels:\n    app.kubernetes.io/name: memcachedchunks\n    helm.sh/chart: memcachedchunks-6.3.5\n    app.kubernetes.io/instance: loki\n    app.kubernetes.io/managed-by: Helm\nspec:\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: memcachedchunks\n      app.kubernetes.io/instance: loki\n  replicas: 1\n  podManagementPolicy: \"Parallel\"\n  serviceName: loki-memcachedchunks\n  updateStrategy:\n    rollingUpdate: {}\n    type: RollingUpdate\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/name: memcachedchunks\n        helm.sh/chart: memcachedchunks-6.3.5\n        app.kubernetes.io/instance: loki\n        app.kubernetes.io/managed-by: Helm\n      annotations:\n    spec:\n      \n      affinity:\n        podAffinity:\n          \n        podAntiAffinity:\n          preferredDuringSchedulingIgnoredDuringExecution:\n            - podAffinityTerm:\n                labelSelector:\n                  matchLabels:\n                    app.kubernetes.io/name: memcachedchunks\n                    app.kubernetes.io/instance: loki\n                topologyKey: kubernetes.io/hostname\n              weight: 1\n        nodeAffinity:\n          \n      securityContext:\n        fsGroup: 1001\n      serviceAccountName: default\n      containers:\n        - name: memcached\n          image: docker.io/bitnami/memcached:1.6.18-debian-11-r8\n          imagePullPolicy: \"IfNotPresent\"\n          securityContext:\n            runAsNonRoot: true\n            runAsUser: 1001\n          env:\n            - name: BITNAMI_DEBUG\n              value: \"false\"\n            - name: MEMCACHED_PORT_NUMBER\n              value: \"11211\"\n          ports:\n            - name: memcache\n              containerPort: 11211\n          livenessProbe:\n            failureThreshold: 6\n            initialDelaySeconds: 30\n            periodSeconds: 10\n            successThreshold: 1\n            timeoutSeconds: 5\n            tcpSocket:\n              port: memcache\n          readinessProbe:\n            failureThreshold: 6\n            initialDelaySeconds: 5\n            periodSeconds: 5\n            successThreshold: 1\n            timeoutSeconds: 3\n            tcpSocket:\n              port: memcache\n          resources:\n            limits: {}\n            requests:\n              cpu: 250m\n              memory: 256Mi\n          volumeMounts:\n            - name: tmp\n              mountPath: /tmp\n      volumes:\n        - name: tmp\n          emptyDir: {}\n---\n# Source: grafana-loki/charts/memcachedfrontend/templates/statefulset.yaml\napiVersion: apps/v1\nkind: StatefulSet\nmetadata:\n  name: loki-memcachedfrontend\n  namespace: loki\n  labels:\n    app.kubernetes.io/name: memcachedfrontend\n    helm.sh/chart: memcachedfrontend-6.3.5\n    app.kubernetes.io/instance: loki\n    app.kubernetes.io/managed-by: Helm\nspec:\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: memcachedfrontend\n      app.kubernetes.io/instance: loki\n  replicas: 1\n  podManagementPolicy: \"Parallel\"\n  serviceName: loki-memcachedfrontend\n  updateStrategy:\n    rollingUpdate: {}\n    type: RollingUpdate\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/name: memcachedfrontend\n        helm.sh/chart: memcachedfrontend-6.3.5\n        app.kubernetes.io/instance: loki\n        app.kubernetes.io/managed-by: Helm\n      annotations:\n    spec:\n      \n      affinity:\n        podAffinity:\n          \n        podAntiAffinity:\n          preferredDuringSchedulingIgnoredDuringExecution:\n            - podAffinityTerm:\n                labelSelector:\n                  matchLabels:\n                    app.kubernetes.io/name: memcachedfrontend\n                    app.kubernetes.io/instance: loki\n                topologyKey: kubernetes.io/hostname\n              weight: 1\n        nodeAffinity:\n          \n      securityContext:\n        fsGroup: 1001\n      serviceAccountName: default\n      containers:\n        - name: memcached\n          image: docker.io/bitnami/memcached:1.6.18-debian-11-r8\n          imagePullPolicy: \"IfNotPresent\"\n          securityContext:\n            runAsNonRoot: true\n            runAsUser: 1001\n          env:\n            - name: BITNAMI_DEBUG\n              value: \"false\"\n            - name: MEMCACHED_PORT_NUMBER\n              value: \"11211\"\n          ports:\n            - name: memcache\n              containerPort: 11211\n          livenessProbe:\n            failureThreshold: 6\n            initialDelaySeconds: 30\n            periodSeconds: 10\n            successThreshold: 1\n            timeoutSeconds: 5\n            tcpSocket:\n              port: memcache\n          readinessProbe:\n            failureThreshold: 6\n            initialDelaySeconds: 5\n            periodSeconds: 5\n            successThreshold: 1\n            timeoutSeconds: 3\n            tcpSocket:\n              port: memcache\n          resources:\n            limits: {}\n            requests:\n              cpu: 250m\n              memory: 256Mi\n          volumeMounts:\n            - name: tmp\n              mountPath: /tmp\n      volumes:\n        - name: tmp\n          emptyDir: {}\n---\n# Source: grafana-loki/charts/memcachedindexqueries/templates/statefulset.yaml\napiVersion: apps/v1\nkind: StatefulSet\nmetadata:\n  name: loki-memcachedindexqueries\n  namespace: loki\n  labels:\n    app.kubernetes.io/name: memcachedindexqueries\n    helm.sh/chart: memcachedindexqueries-6.3.5\n    app.kubernetes.io/instance: loki\n    app.kubernetes.io/managed-by: Helm\nspec:\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: memcachedindexqueries\n      app.kubernetes.io/instance: loki\n  replicas: 1\n  podManagementPolicy: \"Parallel\"\n  serviceName: loki-memcachedindexqueries\n  updateStrategy:\n    rollingUpdate: {}\n    type: RollingUpdate\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/name: memcachedindexqueries\n        helm.sh/chart: memcachedindexqueries-6.3.5\n        app.kubernetes.io/instance: loki\n        app.kubernetes.io/managed-by: Helm\n      annotations:\n    spec:\n      \n      affinity:\n        podAffinity:\n          \n        podAntiAffinity:\n          preferredDuringSchedulingIgnoredDuringExecution:\n            - podAffinityTerm:\n                labelSelector:\n                  matchLabels:\n                    app.kubernetes.io/name: memcachedindexqueries\n                    app.kubernetes.io/instance: loki\n                topologyKey: kubernetes.io/hostname\n              weight: 1\n        nodeAffinity:\n          \n      securityContext:\n        fsGroup: 1001\n      serviceAccountName: default\n      containers:\n        - name: memcached\n          image: docker.io/bitnami/memcached:1.6.18-debian-11-r8\n          imagePullPolicy: \"IfNotPresent\"\n          securityContext:\n            runAsNonRoot: true\n            runAsUser: 1001\n          env:\n            - name: BITNAMI_DEBUG\n              value: \"false\"\n            - name: MEMCACHED_PORT_NUMBER\n              value: \"11211\"\n          ports:\n            - name: memcache\n              containerPort: 11211\n          livenessProbe:\n            failureThreshold: 6\n            initialDelaySeconds: 30\n            periodSeconds: 10\n            successThreshold: 1\n            timeoutSeconds: 5\n            tcpSocket:\n              port: memcache\n          readinessProbe:\n            failureThreshold: 6\n            initialDelaySeconds: 5\n            periodSeconds: 5\n            successThreshold: 1\n            timeoutSeconds: 3\n            tcpSocket:\n              port: memcache\n          resources:\n            limits: {}\n            requests:\n              cpu: 250m\n              memory: 256Mi\n          volumeMounts:\n            - name: tmp\n              mountPath: /tmp\n      volumes:\n        - name: tmp\n          emptyDir: {}\n---\n# Source: grafana-loki/templates/ingester/statefulset.yaml\napiVersion: apps/v1\nkind: StatefulSet\nmetadata:\n  name: loki-grafana-loki-ingester\n  namespace: \"loki\"\n  labels:\n    app.kubernetes.io/name: grafana-loki\n    helm.sh/chart: grafana-loki-2.5.6\n    app.kubernetes.io/instance: loki\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/part-of: grafana-loki\n    app.kubernetes.io/component: ingester\nspec:\n  replicas: 1\n  updateStrategy:\n    rollingUpdate: {}\n    type: RollingUpdate\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: grafana-loki\n      app.kubernetes.io/instance: loki\n      app.kubernetes.io/part-of: grafana-loki\n      app.kubernetes.io/component: ingester\n  serviceName: loki-grafana-loki-ingester\n  podManagementPolicy: \n  template:\n    metadata:\n      annotations:\n        checksum/config: 306a1d5fd2ca1dc714fccaac3b5ea22df10271fb72728bbfd71c72088f9c690a\n      labels:\n        app.kubernetes.io/name: grafana-loki\n        helm.sh/chart: grafana-loki-2.5.6\n        app.kubernetes.io/instance: loki\n        app.kubernetes.io/managed-by: Helm\n        app.kubernetes.io/part-of: grafana-loki\n        app.kubernetes.io/component: ingester\n        loki-gossip-member: \"true\"\n    spec:\n      serviceAccountName: default\n      \n      affinity:\n        podAffinity:\n          \n        podAntiAffinity:\n          preferredDuringSchedulingIgnoredDuringExecution:\n            - podAffinityTerm:\n                labelSelector:\n                  matchLabels:\n                    app.kubernetes.io/name: grafana-loki\n                    app.kubernetes.io/instance: loki\n                    app.kubernetes.io/component: ingester\n                topologyKey: kubernetes.io/hostname\n              weight: 1\n        nodeAffinity:\n          \n      securityContext:\n        fsGroup: 1001\n      initContainers:\n      containers:\n        - name: grafana-loki-ingester\n          image: docker.io/bitnami/grafana-loki:2.7.3-debian-11-r0\n          imagePullPolicy: IfNotPresent\n          securityContext:\n            runAsNonRoot: true\n            runAsUser: 1001\n          args:\n            - -target=ingester\n            - -config.file=/bitnami/grafana-loki/conf/loki.yaml\n          envFrom:\n          ports:\n            - containerPort: 3100\n              name: http\n            - containerPort: 7946\n              name: http-memberlist\n            - containerPort: 9095\n              name: grpc\n          resources:\n            limits: {}\n            requests: {}\n          livenessProbe:\n            failureThreshold: 3\n            initialDelaySeconds: 10\n            periodSeconds: 10\n            successThreshold: 1\n            timeoutSeconds: 1\n            tcpSocket:\n              port: http\n          readinessProbe:\n            failureThreshold: 3\n            initialDelaySeconds: 10\n            periodSeconds: 10\n            successThreshold: 1\n            timeoutSeconds: 1\n            tcpSocket:\n              port: http\n          volumeMounts:\n            - name: loki-config\n              mountPath: /bitnami/grafana-loki/conf/loki.yaml\n              subPath: loki.yaml\n            - name: data\n              mountPath: /bitnami/grafana-loki\n      volumes:\n        - name: loki-config\n          configMap:\n            name: loki-grafana-loki\n  volumeClaimTemplates:\n    - metadata:\n        name: data\n        annotations:\n      spec:\n        accessModes:\n          - \"ReadWriteOnce\"\n        resources:\n          requests:\n            storage: \"8Gi\"\n---\n# Source: grafana-loki/templates/querier/statefulset.yaml\napiVersion: apps/v1\nkind: StatefulSet\nmetadata:\n  name: loki-grafana-loki-querier\n  namespace: \"loki\"\n  labels:\n    app.kubernetes.io/name: grafana-loki\n    helm.sh/chart: grafana-loki-2.5.6\n    app.kubernetes.io/instance: loki\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/part-of: grafana-loki\n    app.kubernetes.io/component: querier\n    loki-gossip-member: \"true\"\nspec:\n  replicas: 1\n  updateStrategy:\n    rollingUpdate: {}\n    type: RollingUpdate\n  podManagementPolicy: \n  selector:\n    matchLabels:\n      app.kubernetes.io/name: grafana-loki\n      app.kubernetes.io/instance: loki\n      app.kubernetes.io/part-of: grafana-loki\n      app.kubernetes.io/component: querier\n      loki-gossip-member: \"true\"\n  serviceName: loki-grafana-loki-querier\n  template:\n    metadata:\n      annotations:\n        checksum/config: 306a1d5fd2ca1dc714fccaac3b5ea22df10271fb72728bbfd71c72088f9c690a\n      labels:\n        app.kubernetes.io/name: grafana-loki\n        helm.sh/chart: grafana-loki-2.5.6\n        app.kubernetes.io/instance: loki\n        app.kubernetes.io/managed-by: Helm\n        app.kubernetes.io/part-of: grafana-loki\n        app.kubernetes.io/component: querier\n        loki-gossip-member: \"true\"\n    spec:\n      serviceAccountName: default\n      \n      affinity:\n        podAffinity:\n          \n        podAntiAffinity:\n          preferredDuringSchedulingIgnoredDuringExecution:\n            - podAffinityTerm:\n                labelSelector:\n                  matchLabels:\n                    app.kubernetes.io/name: grafana-loki\n                    app.kubernetes.io/instance: loki\n                    app.kubernetes.io/component: querier\n                topologyKey: kubernetes.io/hostname\n              weight: 1\n        nodeAffinity:\n          \n      securityContext:\n        fsGroup: 1001\n      initContainers:\n      containers:\n        - name: grafana-loki-querier\n          image: docker.io/bitnami/grafana-loki:2.7.3-debian-11-r0\n          imagePullPolicy: IfNotPresent\n          securityContext:\n            runAsNonRoot: true\n            runAsUser: 1001\n          args:\n            - -target=querier\n            - -config.file=/bitnami/grafana-loki/conf/loki.yaml\n          envFrom:\n          ports:\n            - containerPort: 3100\n              name: http\n            - containerPort: 7946\n              name: http-memberlist\n            - containerPort: 9095\n              name: grpc\n          resources:\n            limits: {}\n            requests: {}\n          livenessProbe:\n            failureThreshold: 3\n            initialDelaySeconds: 10\n            periodSeconds: 10\n            successThreshold: 1\n            timeoutSeconds: 1\n            tcpSocket:\n              port: http\n          readinessProbe:\n            failureThreshold: 3\n            initialDelaySeconds: 10\n            periodSeconds: 10\n            successThreshold: 1\n            timeoutSeconds: 1\n            tcpSocket:\n              port: http\n          volumeMounts:\n            - name: loki-config\n              mountPath: /bitnami/grafana-loki/conf/loki.yaml\n              subPath: loki.yaml\n            - name: data\n              mountPath: /bitnami/grafana-loki\n      volumes:\n        - name: loki-config\n          configMap:\n            name: loki-grafana-loki\n  volumeClaimTemplates:\n    - metadata:\n        name: data\n        annotations:\n      spec:\n        accessModes:\n          - \"ReadWriteOnce\"\n        resources:\n          requests:\n            storage: \"8Gi\"\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_041__gcp_k8s__nginx_ingress/ReadMe.md",
    "content": "# Nginx Ingress Setup\n\n## High Level Objectives\n\n- Create a GKE cluster using console\n- Set up nginx ingress controller\n- Use kustomize to deploy nginx ingress controller\n\n## Links\n\n- [Custom Logging](https://stackoverflow.com/questions/55799584/how-do-i-add-the-x-forwarded-for-field-to-my-access-logs-for-the-nginx-ingress-c)\n\n## GKE Kubernetes Version\n\n```bash\n$ kubectl version --short\nClient Version: v1.27.3\nKustomize Version: v5.0.1\nServer Version: v1.27.2-gke.1200\n```\n\n## Set up GKE access on local machine\n\n```bash\n$ gcloud auth login\n.\n\n# Once access is allowed\n\n# Get access to cluster and generate kubeconfig\n$ gcloud container clusters get-credentials dev --zone us-central1-c --project devops-391009\nFetching cluster endpoint and auth data.\nkubeconfig entry generated for dev.\n\n# Validate\n$ kubectl get nodes   \nNAME                                 STATUS   ROLES    AGE   VERSION\ngke-dev-default-pool-deac09b6-n853   Ready    <none>   20m   v1.27.2-gke.120\n```\n\n## Ingress Nginx Deployment\n\n- [kubernetes/ingress-nginx/releases](https://github.com/kubernetes/ingress-nginx/releases)\n- [check supported nginx version](https://github.com/kubernetes/ingress-nginx)\n\n```bash\n# Rotating Arrows Symbol (🔄): The rotating arrows symbol (🔄) in the first column indicates that there is a new release or update for Ingress-NGINX available. It suggests that there is a newer version of Ingress-NGINX available for use, and you may consider upgrading to the latest version to benefit from bug fixes, new features, and improvements. The rotating arrows symbol serves as a visual indicator for an update or release.\nv1.8.0 - Ingress-NGINX version\n1.27,1.26, 1.25, 1.24 - 1.27,1.26, 1.25, 1.24 - k8s supported version\n1.21.6 - Nginx Version - \n4.7.* - Helm Chart Version  # Star (): The star symbol () in the \"Helm Chart Version\" column indicates that the specific version of the Helm chart for Ingress-NGINX is the latest stable version available. It implies that it is recommended to use the latest stable Helm chart version for deploying Ingress-NGINX in your Kubernetes cluster. The star denotes the most up-to-date and recommended version.\n```\n\n- [helm install](https://github.com/kubernetes/ingress-nginx/blob/main/docs/deploy/index.md)\n\n```bash\n$ helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx\n$ helm repo update\n\n$ helm repo list | grep nginx\ningress-nginx   https://kubernetes.github.io/ingress-nginx\n\n# Generate yaml using template , output to ingress-nginx.yaml, also create namespace ingress-nginx\n$ helm template ingress-nginx-ext \\\n    --namespace ingress-nginx-ext \\\n    --create-namespace \\\n    --version v4.7 \\\n    --repo https://kubernetes.github.io/ingress-nginx \\\n    ingress-nginx > ingress-nginx-ext.yaml\n```\n\n- Create required files and folders\n\n```bash\n$ tree -L 3\n.\n├── ReadMe.md\n├── base\n│   └── ingress-nginx\n│       ├── configmap_patch.yaml\n│       ├── deployment.yaml\n│       ├── ingressclass.yaml\n│       ├── kustomization.yaml\n│       ├── namespace.yaml\n│       └── service.yaml\n├── build\n│   └── ingress_nginx_ext_all.yaml\n├── overlays\n└── vendor\n    └── ingress-nginx\n        ├── ingress-nginx-ext-vendor.yaml\n        └── kustomization.yaml\n```\n\n- Build using\n\n```bash\n$ kustomize build base/ingress-nginx -o build/ingress_nginx_ext_all.yaml\n.\n```\n\n- Apply\n\n```bash\n$ kubectl apply -f build/ingress_nginx_ext_all.yaml\n.\n```\n\n- Validate\n\n```bash\n$ kubectl get pods -n ingress-nginx-ext    \nNAME                                            READY   STATUS      RESTARTS   AGE\ningress-nginx-ext-admission-create-dw2f9        0/1     Completed   0          62m\ningress-nginx-ext-admission-patch-7w4hj         0/1     Completed   1          62m\ningress-nginx-ext-controller-5c8d78c9cc-ztdzv   1/1     Running     0          62m\n\n$ kubectl get svc -n ingress-nginx-ext\nNAME                                     TYPE           CLUSTER-IP     EXTERNAL-IP    PORT(S)                      AGE\ningress-nginx-ext-controller             LoadBalancer   10.112.3.156   35.232.7.154   80:31870/TCP,443:32046/TCP   62m\ningress-nginx-ext-controller-admission   ClusterIP      10.112.9.171   <none>         443/TCP                      62m\n```\n\n- Deploy the whoami app\n\n```bash\n$ kubectl apply -f base/app/.\n.\n```\n\n- You can check the headers for the configmap [ingress-nginx/user-guide/nginx-configuration/configmap](https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/configmap)\n\n- [Access Logs not showing up?](https://github.com/kubernetes/ingress-nginx/issues/3163)\n  - Access log is disabled for default server (the 404 server) (you can see that by inspecting the generated Nginx configuration, search for access_log off;)\n\n```bash\n# Logs of nginx pod\n...\n124.253.250.102 - - [29/Jun/2023:07:23:40 +0000] \"GET /whoami HTTP/2.0\" 200 1051 \"-\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36\" 472 0.002 [default-whoami-service-80] [] 10.108.0.49:80 1051 0.001 200 f33404630d88104c8a703ee597bcff2a\n124.253.250.102 - - [29/Jun/2023:07:23:58 +0000] \"GET /whoami HTTP/2.0\" 200 1008 \"-\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36\" 450 0.001 [default-whoami-service-80] [] 10.108.0.49:80 1008 0.001 200 23bcd9d1533e4fd243a6d914ba2354d1\n... \n```\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_041__gcp_k8s__nginx_ingress/base/app/dep_whoami.yaml",
    "content": "kind: Deployment\napiVersion: apps/v1\nmetadata:\n  namespace: ingress-nginx-ext\n  name: whoami\n  labels:\n    app: whoami\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: whoami\n  template:\n    metadata:\n      labels:\n        app: whoami\n    spec:\n      containers:\n        - name: whoami\n          image: containous/whoami\n          ports:\n            - name: web\n              containerPort: 80\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_041__gcp_k8s__nginx_ingress/base/app/ingress_whoami.yaml",
    "content": "apiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  name: whoami-ingress\n  namespace: ingress-nginx-ext\n  annotations:\n    kubernetes.io/ingress.class: \"nginx\"\nspec:\n  rules:\n  - http:\n      paths:\n      - pathType: Prefix\n        path: \"/whoami\"\n        backend:\n          service:\n            name: whoami-service\n            port:\n              number: 80\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_041__gcp_k8s__nginx_ingress/base/app/svc_whoami.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: whoami-service\n  namespace: ingress-nginx-ext\nspec:\n  selector:\n    app: whoami\n  ports:\n    - protocol: TCP\n      port: 80\n      targetPort: 80\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_041__gcp_k8s__nginx_ingress/base/ingress-nginx/configmap_patch.yaml",
    "content": "# Over-ride the default configmap with our own\n# Source: ingress-nginx/templates/controller-configmap.yaml\n\n# Uncomment to use\n\n# apiVersion: v1\n# kind: ConfigMap\n# metadata:\n#   name: ingress-nginx-ext-controller  # This should match the name of the resource being patched\n#   namespace: ingress-nginx-ext\n# data:\n#   allow-snippet-annotations: \"true\"  # Allow annotations to be used in the ingress to add custom nginx config\n#   enable-underscores-in-headers: \"true\"  # Allow underscores in headers\n#   use-forwarded-headers: \"true\"  # Use the X-Forwarded-* headers to determine the client address\n#   proxy-body-size: \"0\"  # Allow unlimited request body size\n#   server-tokens: \"false\"  # Hide nginx version in error pages and Server header\n#   access-log-format: '{\"time\": \"$time_iso8601\", \"remote_addr\": \"$remote_addr\", \"x-forwarded-for\": \"$proxy_add_x_forwarded_for\", \"request_id\": \"$req_id\", \"remote_user\": \"$remote_user\", \"bytes_sent\": \"$bytes_sent\", \"request_time\": \"$request_time\", \"status\": \"$status\", \"vhost\": \"$host\", \"request_proto\": \"$server_protocol\", \"path\": \"$uri\", \"request_query\": \"$args\", \"request_length\": \"$request_length\", \"duration\": \"$request_time\", \"method\": \"$request_method\", \"http_referrer\": \"$http_referer\", \"http_user_agent\": \"$http_user_agent\"}'  # Log in JSON format\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_041__gcp_k8s__nginx_ingress/base/ingress-nginx/deployment_patch.yaml",
    "content": "# Source: ingress-nginx/templates/controller-deployment.yaml\n\n# Uncomment if required, taken from the Vendor folder\n\n# apiVersion: apps/v1\n# kind: Deployment\n# metadata:\n#   name: ingress-nginx-controller\n#   namespace: ingress-nginx\n# spec:\n#   selector:\n#     matchLabels:\n#       app.kubernetes.io/name: ingress-nginx\n#       app.kubernetes.io/instance: ingress-nginx\n#       app.kubernetes.io/component: controller\n#   template:\n#     spec:\n#       dnsPolicy: ClusterFirst\n#       containers:\n#         - name: controller\n#           args:\n#             - /nginx-ingress-controller\n#             - --publish-service=$(POD_NAMESPACE)/ingress-nginx-controller\n#             - --election-id=ingress-nginx-leader\n#             - --controller-class=k8s.io/ingress-nginx\n#             - --ingress-class=nginx\n#             - --configmap=$(POD_NAMESPACE)/ingress-nginx-controller\n#             - --validating-webhook=:8443\n#             - --validating-webhook-certificate=/usr/local/certificates/cert\n#             - --validating-webhook-key=/usr/local/certificates/key\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_041__gcp_k8s__nginx_ingress/base/ingress-nginx/ingressclass_patch.yaml",
    "content": "# Source: ingress-nginx/templates/controller-ingressclass.yaml\n# We don't support namespaced ingressClass yet\n# So a ClusterRole and a ClusterRoleBinding is required\n\n# Uncomment if required, taken from the Vendor folder\n\n# apiVersion: networking.k8s.io/v1\n# kind: IngressClass\n# metadata:\n#   labels:\n#     helm.sh/chart: ingress-nginx-4.7.0\n#     app.kubernetes.io/name: ingress-nginx\n#     app.kubernetes.io/instance: ingress-nginx\n#     app.kubernetes.io/version: \"1.8.0\"\n#     app.kubernetes.io/part-of: ingress-nginx\n#     app.kubernetes.io/managed-by: Helm\n#     app.kubernetes.io/component: controller\n#   name: nginx\n# spec:\n#   controller: k8s.io/ingress-nginx"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_041__gcp_k8s__nginx_ingress/base/ingress-nginx/kustomization.yaml",
    "content": "apiVersion: kustomize.config.k8s.io/v1beta1\nkind: Kustomization\n\nnamespace: ingress-nginx-ext\n\nresources:\n  - \"namespace.yaml\" # Add your own resources here\n  - ../../vendor/ingress-nginx  # Add manifests from the ingress-nginx\n\n# configmap_patch.yaml is required if you use the following depricated syntax\n# patchesStrategicMerge:\n#   - \"configmap_patch.yaml\"  # Over-ride the default configmap with our own\n\npatches:\n  - target:\n      kind: ConfigMap\n      name: ingress-nginx-ext-controller \n      namespace: ingress-nginx-ext\n    patch: |-\n      # Over-ride the default configmap with our own\n      # Source: ingress-nginx/templates/controller-configmap.yaml\n      apiVersion: v1\n      kind: ConfigMap\n      metadata:\n        name: ingress-nginx-ext-controller  # This should match the name of the resource being patched\n        namespace: ingress-nginx-ext\n      data:\n        # https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/configmap/#access-log-params\n        # error-log-level: \"debug\"  # Log level for controller logs\n        # access-log-format: '{\"time\": \"$time_iso8601\", \"remote_addr\": \"$remote_addr\", \"x-forwarded-for\": \"$proxy_add_x_forwarded_for\", \"request_id\": \"$req_id\", \"remote_user\": \"$remote_user\", \"bytes_sent\": \"$bytes_sent\", \"request_time\": \"$request_time\", \"status\": \"$status\", \"vhost\": \"$host\", \"request_proto\": \"$server_protocol\", \"path\": \"$uri\", \"request_query\": \"$args\", \"request_length\": \"$request_length\", \"duration\": \"$request_time\", \"method\": \"$request_method\", \"http_referrer\": \"$http_referer\", \"http_user_agent\": \"$http_user_agent\"}'  # Log in JSON format\n        # use-forwarded-headers: \"true\"  # Use the X-Forwarded-* headers to determine the client address\n        enable-underscores-in-headers: \"true\"  # Allow underscores in headers\n        proxy-body-size: \"0\"  # Allow unlimited request body size\n        server-tokens: \"false\"  # Hide nginx version in error pages and Server header\n\n  - target:\n      kind: Service\n      name: ingress-nginx-ext-controller\n      namespace: ingress-nginx-ext\n    patch: |-\n      apiVersion: v1\n      kind: Service\n      metadata:\n        name: ingress-nginx-ext-controller\n        namespace: ingress-nginx-ext\n      spec:\n        externalTrafficPolicy: Local  # Use client IP address for load balancing\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_041__gcp_k8s__nginx_ingress/base/ingress-nginx/namespace.yaml",
    "content": "apiVersion: v1\nkind: Namespace\nmetadata:\n  name: ingress-nginx-ext\n---"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_041__gcp_k8s__nginx_ingress/base/ingress-nginx/service_patch.yaml",
    "content": "#  Service to create a GCP load balancer\n# If you need to override the default GCP load-balancer create by ingress-nginx\n\n# apiVersion: v1\n# kind: Service\n# metadata:\n#   labels:\n#     app.kubernetes.io/component: controller\n#     app.kubernetes.io/instance: ingress-nginx-ext\n#     app.kubernetes.io/managed-by: Helm\n#     app.kubernetes.io/name: ingress-nginx\n#     app.kubernetes.io/part-of: ingress-nginx\n#     app.kubernetes.io/version: 1.8.0\n#     helm.sh/chart: ingress-nginx-4.7.0\n#   name: ingress-nginx-ext-controller\n#   namespace: ingress-nginx\n# spec:\n#   ipFamilies:\n#   - IPv4\n#   ipFamilyPolicy: SingleStack\n#   ports:\n#   - appProtocol: http\n#     name: http\n#     port: 80\n#     protocol: TCP\n#     targetPort: http\n#   - appProtocol: https\n#     name: https\n#     port: 443\n#     protocol: TCP\n#     targetPort: https\n#   selector:\n#     app.kubernetes.io/component: controller\n#     app.kubernetes.io/instance: ingress-nginx-ext\n#     app.kubernetes.io/name: ingress-nginx\n#   type: LoadBalancer"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_041__gcp_k8s__nginx_ingress/build/ingress_nginx_ext_all.yaml",
    "content": "apiVersion: v1\nkind: Namespace\nmetadata:\n  name: ingress-nginx-ext\n---\napiVersion: v1\nautomountServiceAccountToken: true\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx-ext\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.0\n    helm.sh/chart: ingress-nginx-4.7.0\n  name: ingress-nginx-ext\n  namespace: ingress-nginx-ext\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  annotations:\n    helm.sh/hook: pre-install,pre-upgrade,post-install,post-upgrade\n    helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx-ext\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.0\n    helm.sh/chart: ingress-nginx-4.7.0\n  name: ingress-nginx-ext-admission\n  namespace: ingress-nginx-ext\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx-ext\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.0\n    helm.sh/chart: ingress-nginx-4.7.0\n  name: ingress-nginx-ext\n  namespace: ingress-nginx-ext\nrules:\n- apiGroups:\n  - \"\"\n  resources:\n  - namespaces\n  verbs:\n  - get\n- apiGroups:\n  - \"\"\n  resources:\n  - configmaps\n  - pods\n  - secrets\n  - endpoints\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - \"\"\n  resources:\n  - services\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - networking.k8s.io\n  resources:\n  - ingresses\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - networking.k8s.io\n  resources:\n  - ingresses/status\n  verbs:\n  - update\n- apiGroups:\n  - networking.k8s.io\n  resources:\n  - ingressclasses\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - coordination.k8s.io\n  resourceNames:\n  - ingress-nginx-ext-leader\n  resources:\n  - leases\n  verbs:\n  - get\n  - update\n- apiGroups:\n  - coordination.k8s.io\n  resources:\n  - leases\n  verbs:\n  - create\n- apiGroups:\n  - \"\"\n  resources:\n  - events\n  verbs:\n  - create\n  - patch\n- apiGroups:\n  - discovery.k8s.io\n  resources:\n  - endpointslices\n  verbs:\n  - list\n  - watch\n  - get\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  annotations:\n    helm.sh/hook: pre-install,pre-upgrade,post-install,post-upgrade\n    helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx-ext\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.0\n    helm.sh/chart: ingress-nginx-4.7.0\n  name: ingress-nginx-ext-admission\n  namespace: ingress-nginx-ext\nrules:\n- apiGroups:\n  - \"\"\n  resources:\n  - secrets\n  verbs:\n  - get\n  - create\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app.kubernetes.io/instance: ingress-nginx-ext\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.0\n    helm.sh/chart: ingress-nginx-4.7.0\n  name: ingress-nginx-ext\nrules:\n- apiGroups:\n  - \"\"\n  resources:\n  - configmaps\n  - endpoints\n  - nodes\n  - pods\n  - secrets\n  - namespaces\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - coordination.k8s.io\n  resources:\n  - leases\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - \"\"\n  resources:\n  - nodes\n  verbs:\n  - get\n- apiGroups:\n  - \"\"\n  resources:\n  - services\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - networking.k8s.io\n  resources:\n  - ingresses\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - \"\"\n  resources:\n  - events\n  verbs:\n  - create\n  - patch\n- apiGroups:\n  - networking.k8s.io\n  resources:\n  - ingresses/status\n  verbs:\n  - update\n- apiGroups:\n  - networking.k8s.io\n  resources:\n  - ingressclasses\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - discovery.k8s.io\n  resources:\n  - endpointslices\n  verbs:\n  - list\n  - watch\n  - get\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  annotations:\n    helm.sh/hook: pre-install,pre-upgrade,post-install,post-upgrade\n    helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx-ext\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.0\n    helm.sh/chart: ingress-nginx-4.7.0\n  name: ingress-nginx-ext-admission\nrules:\n- apiGroups:\n  - admissionregistration.k8s.io\n  resources:\n  - validatingwebhookconfigurations\n  verbs:\n  - get\n  - update\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx-ext\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.0\n    helm.sh/chart: ingress-nginx-4.7.0\n  name: ingress-nginx-ext\n  namespace: ingress-nginx-ext\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: ingress-nginx-ext\nsubjects:\n- kind: ServiceAccount\n  name: ingress-nginx-ext\n  namespace: ingress-nginx-ext\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  annotations:\n    helm.sh/hook: pre-install,pre-upgrade,post-install,post-upgrade\n    helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx-ext\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.0\n    helm.sh/chart: ingress-nginx-4.7.0\n  name: ingress-nginx-ext-admission\n  namespace: ingress-nginx-ext\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: ingress-nginx-ext-admission\nsubjects:\n- kind: ServiceAccount\n  name: ingress-nginx-ext-admission\n  namespace: ingress-nginx-ext\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/instance: ingress-nginx-ext\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.0\n    helm.sh/chart: ingress-nginx-4.7.0\n  name: ingress-nginx-ext\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: ingress-nginx-ext\nsubjects:\n- kind: ServiceAccount\n  name: ingress-nginx-ext\n  namespace: ingress-nginx-ext\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  annotations:\n    helm.sh/hook: pre-install,pre-upgrade,post-install,post-upgrade\n    helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx-ext\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.0\n    helm.sh/chart: ingress-nginx-4.7.0\n  name: ingress-nginx-ext-admission\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: ingress-nginx-ext-admission\nsubjects:\n- kind: ServiceAccount\n  name: ingress-nginx-ext-admission\n  namespace: ingress-nginx-ext\n---\napiVersion: v1\ndata:\n  allow-snippet-annotations: \"true\"\n  enable-underscores-in-headers: \"true\"\n  proxy-body-size: \"0\"\n  server-tokens: \"false\"\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx-ext\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.0\n    helm.sh/chart: ingress-nginx-4.7.0\n  name: ingress-nginx-ext-controller\n  namespace: ingress-nginx-ext\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx-ext\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.0\n    helm.sh/chart: ingress-nginx-4.7.0\n  name: ingress-nginx-ext-controller\n  namespace: ingress-nginx-ext\nspec:\n  externalTrafficPolicy: Local\n  ipFamilies:\n  - IPv4\n  ipFamilyPolicy: SingleStack\n  ports:\n  - appProtocol: http\n    name: http\n    port: 80\n    protocol: TCP\n    targetPort: http\n  - appProtocol: https\n    name: https\n    port: 443\n    protocol: TCP\n    targetPort: https\n  selector:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx-ext\n    app.kubernetes.io/name: ingress-nginx\n  type: LoadBalancer\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx-ext\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.0\n    helm.sh/chart: ingress-nginx-4.7.0\n  name: ingress-nginx-ext-controller-admission\n  namespace: ingress-nginx-ext\nspec:\n  ports:\n  - appProtocol: https\n    name: https-webhook\n    port: 443\n    targetPort: webhook\n  selector:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx-ext\n    app.kubernetes.io/name: ingress-nginx\n  type: ClusterIP\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx-ext\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.0\n    helm.sh/chart: ingress-nginx-4.7.0\n  name: ingress-nginx-ext-controller\n  namespace: ingress-nginx-ext\nspec:\n  minReadySeconds: 0\n  replicas: 1\n  revisionHistoryLimit: 10\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: controller\n      app.kubernetes.io/instance: ingress-nginx-ext\n      app.kubernetes.io/name: ingress-nginx\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/component: controller\n        app.kubernetes.io/instance: ingress-nginx-ext\n        app.kubernetes.io/managed-by: Helm\n        app.kubernetes.io/name: ingress-nginx\n        app.kubernetes.io/part-of: ingress-nginx\n        app.kubernetes.io/version: 1.8.0\n        helm.sh/chart: ingress-nginx-4.7.0\n    spec:\n      containers:\n      - args:\n        - /nginx-ingress-controller\n        - --publish-service=$(POD_NAMESPACE)/ingress-nginx-ext-controller\n        - --election-id=ingress-nginx-ext-leader\n        - --controller-class=k8s.io/ingress-nginx\n        - --ingress-class=nginx\n        - --configmap=$(POD_NAMESPACE)/ingress-nginx-ext-controller\n        - --validating-webhook=:8443\n        - --validating-webhook-certificate=/usr/local/certificates/cert\n        - --validating-webhook-key=/usr/local/certificates/key\n        env:\n        - name: POD_NAME\n          valueFrom:\n            fieldRef:\n              fieldPath: metadata.name\n        - name: POD_NAMESPACE\n          valueFrom:\n            fieldRef:\n              fieldPath: metadata.namespace\n        - name: LD_PRELOAD\n          value: /usr/local/lib/libmimalloc.so\n        image: registry.k8s.io/ingress-nginx/controller:v1.8.0@sha256:744ae2afd433a395eeb13dc03d3313facba92e96ad71d9feaafc85925493fee3\n        imagePullPolicy: IfNotPresent\n        lifecycle:\n          preStop:\n            exec:\n              command:\n              - /wait-shutdown\n        livenessProbe:\n          failureThreshold: 5\n          httpGet:\n            path: /healthz\n            port: 10254\n            scheme: HTTP\n          initialDelaySeconds: 10\n          periodSeconds: 10\n          successThreshold: 1\n          timeoutSeconds: 1\n        name: controller\n        ports:\n        - containerPort: 80\n          name: http\n          protocol: TCP\n        - containerPort: 443\n          name: https\n          protocol: TCP\n        - containerPort: 8443\n          name: webhook\n          protocol: TCP\n        readinessProbe:\n          failureThreshold: 3\n          httpGet:\n            path: /healthz\n            port: 10254\n            scheme: HTTP\n          initialDelaySeconds: 10\n          periodSeconds: 10\n          successThreshold: 1\n          timeoutSeconds: 1\n        resources:\n          requests:\n            cpu: 100m\n            memory: 90Mi\n        securityContext:\n          allowPrivilegeEscalation: true\n          capabilities:\n            add:\n            - NET_BIND_SERVICE\n            drop:\n            - ALL\n          runAsUser: 101\n        volumeMounts:\n        - mountPath: /usr/local/certificates/\n          name: webhook-cert\n          readOnly: true\n      dnsPolicy: ClusterFirst\n      nodeSelector:\n        kubernetes.io/os: linux\n      serviceAccountName: ingress-nginx-ext\n      terminationGracePeriodSeconds: 300\n      volumes:\n      - name: webhook-cert\n        secret:\n          secretName: ingress-nginx-ext-admission\n---\napiVersion: batch/v1\nkind: Job\nmetadata:\n  annotations:\n    helm.sh/hook: pre-install,pre-upgrade\n    helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx-ext\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.0\n    helm.sh/chart: ingress-nginx-4.7.0\n  name: ingress-nginx-ext-admission-create\n  namespace: ingress-nginx-ext\nspec:\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/component: admission-webhook\n        app.kubernetes.io/instance: ingress-nginx-ext\n        app.kubernetes.io/managed-by: Helm\n        app.kubernetes.io/name: ingress-nginx\n        app.kubernetes.io/part-of: ingress-nginx\n        app.kubernetes.io/version: 1.8.0\n        helm.sh/chart: ingress-nginx-4.7.0\n      name: ingress-nginx-ext-admission-create\n    spec:\n      containers:\n      - args:\n        - create\n        - --host=ingress-nginx-ext-controller-admission,ingress-nginx-ext-controller-admission.$(POD_NAMESPACE).svc\n        - --namespace=$(POD_NAMESPACE)\n        - --secret-name=ingress-nginx-ext-admission\n        env:\n        - name: POD_NAMESPACE\n          valueFrom:\n            fieldRef:\n              fieldPath: metadata.namespace\n        image: registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20230407@sha256:543c40fd093964bc9ab509d3e791f9989963021f1e9e4c9c7b6700b02bfb227b\n        imagePullPolicy: IfNotPresent\n        name: create\n        securityContext:\n          allowPrivilegeEscalation: false\n      nodeSelector:\n        kubernetes.io/os: linux\n      restartPolicy: OnFailure\n      securityContext:\n        fsGroup: 2000\n        runAsNonRoot: true\n        runAsUser: 2000\n      serviceAccountName: ingress-nginx-ext-admission\n---\napiVersion: batch/v1\nkind: Job\nmetadata:\n  annotations:\n    helm.sh/hook: post-install,post-upgrade\n    helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx-ext\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.0\n    helm.sh/chart: ingress-nginx-4.7.0\n  name: ingress-nginx-ext-admission-patch\n  namespace: ingress-nginx-ext\nspec:\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/component: admission-webhook\n        app.kubernetes.io/instance: ingress-nginx-ext\n        app.kubernetes.io/managed-by: Helm\n        app.kubernetes.io/name: ingress-nginx\n        app.kubernetes.io/part-of: ingress-nginx\n        app.kubernetes.io/version: 1.8.0\n        helm.sh/chart: ingress-nginx-4.7.0\n      name: ingress-nginx-ext-admission-patch\n    spec:\n      containers:\n      - args:\n        - patch\n        - --webhook-name=ingress-nginx-ext-admission\n        - --namespace=$(POD_NAMESPACE)\n        - --patch-mutating=false\n        - --secret-name=ingress-nginx-ext-admission\n        - --patch-failure-policy=Fail\n        env:\n        - name: POD_NAMESPACE\n          valueFrom:\n            fieldRef:\n              fieldPath: metadata.namespace\n        image: registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20230407@sha256:543c40fd093964bc9ab509d3e791f9989963021f1e9e4c9c7b6700b02bfb227b\n        imagePullPolicy: IfNotPresent\n        name: patch\n        securityContext:\n          allowPrivilegeEscalation: false\n      nodeSelector:\n        kubernetes.io/os: linux\n      restartPolicy: OnFailure\n      securityContext:\n        fsGroup: 2000\n        runAsNonRoot: true\n        runAsUser: 2000\n      serviceAccountName: ingress-nginx-ext-admission\n---\napiVersion: networking.k8s.io/v1\nkind: IngressClass\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: ingress-nginx-ext\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.0\n    helm.sh/chart: ingress-nginx-4.7.0\n  name: nginx\nspec:\n  controller: k8s.io/ingress-nginx\n---\napiVersion: admissionregistration.k8s.io/v1\nkind: ValidatingWebhookConfiguration\nmetadata:\n  labels:\n    app.kubernetes.io/component: admission-webhook\n    app.kubernetes.io/instance: ingress-nginx-ext\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/version: 1.8.0\n    helm.sh/chart: ingress-nginx-4.7.0\n  name: ingress-nginx-ext-admission\nwebhooks:\n- admissionReviewVersions:\n  - v1\n  clientConfig:\n    service:\n      name: ingress-nginx-ext-controller-admission\n      namespace: ingress-nginx-ext\n      path: /networking/v1/ingresses\n  failurePolicy: Fail\n  matchPolicy: Equivalent\n  name: validate.nginx.ingress.kubernetes.io\n  rules:\n  - apiGroups:\n    - networking.k8s.io\n    apiVersions:\n    - v1\n    operations:\n    - CREATE\n    - UPDATE\n    resources:\n    - ingresses\n  sideEffects: None\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_041__gcp_k8s__nginx_ingress/vendor/ingress-nginx/ingress-nginx-ext-vendor.yaml",
    "content": "---\n# Source: ingress-nginx/templates/controller-serviceaccount.yaml\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  labels:\n    helm.sh/chart: ingress-nginx-4.7.0\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/instance: ingress-nginx-ext\n    app.kubernetes.io/version: \"1.8.0\"\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: controller\n  name: ingress-nginx-ext\n  namespace: ingress-nginx-ext\nautomountServiceAccountToken: true\n---\n# Source: ingress-nginx/templates/controller-configmap.yaml\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  labels:\n    helm.sh/chart: ingress-nginx-4.7.0\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/instance: ingress-nginx-ext\n    app.kubernetes.io/version: \"1.8.0\"\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: controller\n  name: ingress-nginx-ext-controller\n  namespace: ingress-nginx-ext\ndata:\n  allow-snippet-annotations: \"true\"\n---\n# Source: ingress-nginx/templates/clusterrole.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    helm.sh/chart: ingress-nginx-4.7.0\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/instance: ingress-nginx-ext\n    app.kubernetes.io/version: \"1.8.0\"\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/managed-by: Helm\n  name: ingress-nginx-ext\nrules:\n  - apiGroups:\n      - \"\"\n    resources:\n      - configmaps\n      - endpoints\n      - nodes\n      - pods\n      - secrets\n      - namespaces\n    verbs:\n      - list\n      - watch\n  - apiGroups:\n      - coordination.k8s.io\n    resources:\n      - leases\n    verbs:\n      - list\n      - watch\n  - apiGroups:\n      - \"\"\n    resources:\n      - nodes\n    verbs:\n      - get\n  - apiGroups:\n      - \"\"\n    resources:\n      - services\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - networking.k8s.io\n    resources:\n      - ingresses\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - \"\"\n    resources:\n      - events\n    verbs:\n      - create\n      - patch\n  - apiGroups:\n      - networking.k8s.io\n    resources:\n      - ingresses/status\n    verbs:\n      - update\n  - apiGroups:\n      - networking.k8s.io\n    resources:\n      - ingressclasses\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - discovery.k8s.io\n    resources:\n      - endpointslices\n    verbs:\n      - list\n      - watch\n      - get\n---\n# Source: ingress-nginx/templates/clusterrolebinding.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    helm.sh/chart: ingress-nginx-4.7.0\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/instance: ingress-nginx-ext\n    app.kubernetes.io/version: \"1.8.0\"\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/managed-by: Helm\n  name: ingress-nginx-ext\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: ingress-nginx-ext\nsubjects:\n  - kind: ServiceAccount\n    name: ingress-nginx-ext\n    namespace: \"ingress-nginx-ext\"\n---\n# Source: ingress-nginx/templates/controller-role.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  labels:\n    helm.sh/chart: ingress-nginx-4.7.0\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/instance: ingress-nginx-ext\n    app.kubernetes.io/version: \"1.8.0\"\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: controller\n  name: ingress-nginx-ext\n  namespace: ingress-nginx-ext\nrules:\n  - apiGroups:\n      - \"\"\n    resources:\n      - namespaces\n    verbs:\n      - get\n  - apiGroups:\n      - \"\"\n    resources:\n      - configmaps\n      - pods\n      - secrets\n      - endpoints\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - \"\"\n    resources:\n      - services\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - networking.k8s.io\n    resources:\n      - ingresses\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - networking.k8s.io\n    resources:\n      - ingresses/status\n    verbs:\n      - update\n  - apiGroups:\n      - networking.k8s.io\n    resources:\n      - ingressclasses\n    verbs:\n      - get\n      - list\n      - watch\n  - apiGroups:\n      - coordination.k8s.io\n    resources:\n      - leases\n    resourceNames:\n      - ingress-nginx-ext-leader\n    verbs:\n      - get\n      - update\n  - apiGroups:\n      - coordination.k8s.io\n    resources:\n      - leases\n    verbs:\n      - create\n  - apiGroups:\n      - \"\"\n    resources:\n      - events\n    verbs:\n      - create\n      - patch\n  - apiGroups:\n      - discovery.k8s.io\n    resources:\n      - endpointslices\n    verbs:\n      - list\n      - watch\n      - get\n---\n# Source: ingress-nginx/templates/controller-rolebinding.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    helm.sh/chart: ingress-nginx-4.7.0\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/instance: ingress-nginx-ext\n    app.kubernetes.io/version: \"1.8.0\"\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: controller\n  name: ingress-nginx-ext\n  namespace: ingress-nginx-ext\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: ingress-nginx-ext\nsubjects:\n  - kind: ServiceAccount\n    name: ingress-nginx-ext\n    namespace: \"ingress-nginx-ext\"\n---\n# Source: ingress-nginx/templates/controller-service-webhook.yaml\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    helm.sh/chart: ingress-nginx-4.7.0\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/instance: ingress-nginx-ext\n    app.kubernetes.io/version: \"1.8.0\"\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: controller\n  name: ingress-nginx-ext-controller-admission\n  namespace: ingress-nginx-ext\nspec:\n  type: ClusterIP\n  ports:\n    - name: https-webhook\n      port: 443\n      targetPort: webhook\n      appProtocol: https\n  selector:\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/instance: ingress-nginx-ext\n    app.kubernetes.io/component: controller\n---\n# Source: ingress-nginx/templates/controller-service.yaml\napiVersion: v1\nkind: Service\nmetadata:\n  annotations:\n  labels:\n    helm.sh/chart: ingress-nginx-4.7.0\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/instance: ingress-nginx-ext\n    app.kubernetes.io/version: \"1.8.0\"\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: controller\n  name: ingress-nginx-ext-controller\n  namespace: ingress-nginx-ext\nspec:\n  type: LoadBalancer\n  ipFamilyPolicy: SingleStack\n  ipFamilies: \n    - IPv4\n  ports:\n    - name: http\n      port: 80\n      protocol: TCP\n      targetPort: http\n      appProtocol: http\n    - name: https\n      port: 443\n      protocol: TCP\n      targetPort: https\n      appProtocol: https\n  selector:\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/instance: ingress-nginx-ext\n    app.kubernetes.io/component: controller\n---\n# Source: ingress-nginx/templates/controller-deployment.yaml\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    helm.sh/chart: ingress-nginx-4.7.0\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/instance: ingress-nginx-ext\n    app.kubernetes.io/version: \"1.8.0\"\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: controller\n  name: ingress-nginx-ext-controller\n  namespace: ingress-nginx-ext\nspec:\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: ingress-nginx\n      app.kubernetes.io/instance: ingress-nginx-ext\n      app.kubernetes.io/component: controller\n  replicas: 1\n  revisionHistoryLimit: 10\n  minReadySeconds: 0\n  template:\n    metadata:\n      labels:\n        helm.sh/chart: ingress-nginx-4.7.0\n        app.kubernetes.io/name: ingress-nginx\n        app.kubernetes.io/instance: ingress-nginx-ext\n        app.kubernetes.io/version: \"1.8.0\"\n        app.kubernetes.io/part-of: ingress-nginx\n        app.kubernetes.io/managed-by: Helm\n        app.kubernetes.io/component: controller\n    spec:\n      dnsPolicy: ClusterFirst\n      containers:\n        - name: controller\n          image: \"registry.k8s.io/ingress-nginx/controller:v1.8.0@sha256:744ae2afd433a395eeb13dc03d3313facba92e96ad71d9feaafc85925493fee3\"\n          imagePullPolicy: IfNotPresent\n          lifecycle: \n            preStop:\n              exec:\n                command:\n                - /wait-shutdown\n          args:\n            - /nginx-ingress-controller\n            - --publish-service=$(POD_NAMESPACE)/ingress-nginx-ext-controller\n            - --election-id=ingress-nginx-ext-leader\n            - --controller-class=k8s.io/ingress-nginx\n            - --ingress-class=nginx\n            - --configmap=$(POD_NAMESPACE)/ingress-nginx-ext-controller\n            - --validating-webhook=:8443\n            - --validating-webhook-certificate=/usr/local/certificates/cert\n            - --validating-webhook-key=/usr/local/certificates/key\n          securityContext: \n            capabilities:\n              drop:\n              - ALL\n              add:\n              - NET_BIND_SERVICE\n            runAsUser: 101\n            allowPrivilegeEscalation: true\n          env:\n            - name: POD_NAME\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.name\n            - name: POD_NAMESPACE\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.namespace\n            - name: LD_PRELOAD\n              value: /usr/local/lib/libmimalloc.so\n          livenessProbe: \n            failureThreshold: 5\n            httpGet:\n              path: /healthz\n              port: 10254\n              scheme: HTTP\n            initialDelaySeconds: 10\n            periodSeconds: 10\n            successThreshold: 1\n            timeoutSeconds: 1\n          readinessProbe: \n            failureThreshold: 3\n            httpGet:\n              path: /healthz\n              port: 10254\n              scheme: HTTP\n            initialDelaySeconds: 10\n            periodSeconds: 10\n            successThreshold: 1\n            timeoutSeconds: 1\n          ports:\n            - name: http\n              containerPort: 80\n              protocol: TCP\n            - name: https\n              containerPort: 443\n              protocol: TCP\n            - name: webhook\n              containerPort: 8443\n              protocol: TCP\n          volumeMounts:\n            - name: webhook-cert\n              mountPath: /usr/local/certificates/\n              readOnly: true\n          resources: \n            requests:\n              cpu: 100m\n              memory: 90Mi\n      nodeSelector: \n        kubernetes.io/os: linux\n      serviceAccountName: ingress-nginx-ext\n      terminationGracePeriodSeconds: 300\n      volumes:\n        - name: webhook-cert\n          secret:\n            secretName: ingress-nginx-ext-admission\n---\n# Source: ingress-nginx/templates/controller-ingressclass.yaml\n# We don't support namespaced ingressClass yet\n# So a ClusterRole and a ClusterRoleBinding is required\napiVersion: networking.k8s.io/v1\nkind: IngressClass\nmetadata:\n  labels:\n    helm.sh/chart: ingress-nginx-4.7.0\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/instance: ingress-nginx-ext\n    app.kubernetes.io/version: \"1.8.0\"\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: controller\n  name: nginx\nspec:\n  controller: k8s.io/ingress-nginx\n---\n# Source: ingress-nginx/templates/admission-webhooks/validating-webhook.yaml\n# before changing this value, check the required kubernetes version\n# https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#prerequisites\napiVersion: admissionregistration.k8s.io/v1\nkind: ValidatingWebhookConfiguration\nmetadata:\n  annotations:\n  labels:\n    helm.sh/chart: ingress-nginx-4.7.0\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/instance: ingress-nginx-ext\n    app.kubernetes.io/version: \"1.8.0\"\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: admission-webhook\n  name: ingress-nginx-ext-admission\nwebhooks:\n  - name: validate.nginx.ingress.kubernetes.io\n    matchPolicy: Equivalent\n    rules:\n      - apiGroups:\n          - networking.k8s.io\n        apiVersions:\n          - v1\n        operations:\n          - CREATE\n          - UPDATE\n        resources:\n          - ingresses\n    failurePolicy: Fail\n    sideEffects: None\n    admissionReviewVersions:\n      - v1\n    clientConfig:\n      service:\n        namespace: \"ingress-nginx-ext\"\n        name: ingress-nginx-ext-controller-admission\n        path: /networking/v1/ingresses\n---\n# Source: ingress-nginx/templates/admission-webhooks/job-patch/serviceaccount.yaml\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: ingress-nginx-ext-admission\n  namespace: ingress-nginx-ext\n  annotations:\n    \"helm.sh/hook\": pre-install,pre-upgrade,post-install,post-upgrade\n    \"helm.sh/hook-delete-policy\": before-hook-creation,hook-succeeded\n  labels:\n    helm.sh/chart: ingress-nginx-4.7.0\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/instance: ingress-nginx-ext\n    app.kubernetes.io/version: \"1.8.0\"\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: admission-webhook\n---\n# Source: ingress-nginx/templates/admission-webhooks/job-patch/clusterrole.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: ingress-nginx-ext-admission\n  annotations:\n    \"helm.sh/hook\": pre-install,pre-upgrade,post-install,post-upgrade\n    \"helm.sh/hook-delete-policy\": before-hook-creation,hook-succeeded\n  labels:\n    helm.sh/chart: ingress-nginx-4.7.0\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/instance: ingress-nginx-ext\n    app.kubernetes.io/version: \"1.8.0\"\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: admission-webhook\nrules:\n  - apiGroups:\n      - admissionregistration.k8s.io\n    resources:\n      - validatingwebhookconfigurations\n    verbs:\n      - get\n      - update\n---\n# Source: ingress-nginx/templates/admission-webhooks/job-patch/clusterrolebinding.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: ingress-nginx-ext-admission\n  annotations:\n    \"helm.sh/hook\": pre-install,pre-upgrade,post-install,post-upgrade\n    \"helm.sh/hook-delete-policy\": before-hook-creation,hook-succeeded\n  labels:\n    helm.sh/chart: ingress-nginx-4.7.0\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/instance: ingress-nginx-ext\n    app.kubernetes.io/version: \"1.8.0\"\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: admission-webhook\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: ingress-nginx-ext-admission\nsubjects:\n  - kind: ServiceAccount\n    name: ingress-nginx-ext-admission\n    namespace: \"ingress-nginx-ext\"\n---\n# Source: ingress-nginx/templates/admission-webhooks/job-patch/role.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  name: ingress-nginx-ext-admission\n  namespace: ingress-nginx-ext\n  annotations:\n    \"helm.sh/hook\": pre-install,pre-upgrade,post-install,post-upgrade\n    \"helm.sh/hook-delete-policy\": before-hook-creation,hook-succeeded\n  labels:\n    helm.sh/chart: ingress-nginx-4.7.0\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/instance: ingress-nginx-ext\n    app.kubernetes.io/version: \"1.8.0\"\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: admission-webhook\nrules:\n  - apiGroups:\n      - \"\"\n    resources:\n      - secrets\n    verbs:\n      - get\n      - create\n---\n# Source: ingress-nginx/templates/admission-webhooks/job-patch/rolebinding.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  name: ingress-nginx-ext-admission\n  namespace: ingress-nginx-ext\n  annotations:\n    \"helm.sh/hook\": pre-install,pre-upgrade,post-install,post-upgrade\n    \"helm.sh/hook-delete-policy\": before-hook-creation,hook-succeeded\n  labels:\n    helm.sh/chart: ingress-nginx-4.7.0\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/instance: ingress-nginx-ext\n    app.kubernetes.io/version: \"1.8.0\"\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: admission-webhook\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: ingress-nginx-ext-admission\nsubjects:\n  - kind: ServiceAccount\n    name: ingress-nginx-ext-admission\n    namespace: \"ingress-nginx-ext\"\n---\n# Source: ingress-nginx/templates/admission-webhooks/job-patch/job-createSecret.yaml\napiVersion: batch/v1\nkind: Job\nmetadata:\n  name: ingress-nginx-ext-admission-create\n  namespace: ingress-nginx-ext\n  annotations:\n    \"helm.sh/hook\": pre-install,pre-upgrade\n    \"helm.sh/hook-delete-policy\": before-hook-creation,hook-succeeded\n  labels:\n    helm.sh/chart: ingress-nginx-4.7.0\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/instance: ingress-nginx-ext\n    app.kubernetes.io/version: \"1.8.0\"\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: admission-webhook\nspec:\n  template:\n    metadata:\n      name: ingress-nginx-ext-admission-create\n      labels:\n        helm.sh/chart: ingress-nginx-4.7.0\n        app.kubernetes.io/name: ingress-nginx\n        app.kubernetes.io/instance: ingress-nginx-ext\n        app.kubernetes.io/version: \"1.8.0\"\n        app.kubernetes.io/part-of: ingress-nginx\n        app.kubernetes.io/managed-by: Helm\n        app.kubernetes.io/component: admission-webhook\n    spec:\n      containers:\n        - name: create\n          image: \"registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20230407@sha256:543c40fd093964bc9ab509d3e791f9989963021f1e9e4c9c7b6700b02bfb227b\"\n          imagePullPolicy: IfNotPresent\n          args:\n            - create\n            - --host=ingress-nginx-ext-controller-admission,ingress-nginx-ext-controller-admission.$(POD_NAMESPACE).svc\n            - --namespace=$(POD_NAMESPACE)\n            - --secret-name=ingress-nginx-ext-admission\n          env:\n            - name: POD_NAMESPACE\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.namespace\n          securityContext: \n            allowPrivilegeEscalation: false\n      restartPolicy: OnFailure\n      serviceAccountName: ingress-nginx-ext-admission\n      nodeSelector: \n        kubernetes.io/os: linux\n      securityContext:\n        fsGroup: 2000\n        runAsNonRoot: true\n        runAsUser: 2000\n---\n# Source: ingress-nginx/templates/admission-webhooks/job-patch/job-patchWebhook.yaml\napiVersion: batch/v1\nkind: Job\nmetadata:\n  name: ingress-nginx-ext-admission-patch\n  namespace: ingress-nginx-ext\n  annotations:\n    \"helm.sh/hook\": post-install,post-upgrade\n    \"helm.sh/hook-delete-policy\": before-hook-creation,hook-succeeded\n  labels:\n    helm.sh/chart: ingress-nginx-4.7.0\n    app.kubernetes.io/name: ingress-nginx\n    app.kubernetes.io/instance: ingress-nginx-ext\n    app.kubernetes.io/version: \"1.8.0\"\n    app.kubernetes.io/part-of: ingress-nginx\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: admission-webhook\nspec:\n  template:\n    metadata:\n      name: ingress-nginx-ext-admission-patch\n      labels:\n        helm.sh/chart: ingress-nginx-4.7.0\n        app.kubernetes.io/name: ingress-nginx\n        app.kubernetes.io/instance: ingress-nginx-ext\n        app.kubernetes.io/version: \"1.8.0\"\n        app.kubernetes.io/part-of: ingress-nginx\n        app.kubernetes.io/managed-by: Helm\n        app.kubernetes.io/component: admission-webhook\n    spec:\n      containers:\n        - name: patch\n          image: \"registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20230407@sha256:543c40fd093964bc9ab509d3e791f9989963021f1e9e4c9c7b6700b02bfb227b\"\n          imagePullPolicy: IfNotPresent\n          args:\n            - patch\n            - --webhook-name=ingress-nginx-ext-admission\n            - --namespace=$(POD_NAMESPACE)\n            - --patch-mutating=false\n            - --secret-name=ingress-nginx-ext-admission\n            - --patch-failure-policy=Fail\n          env:\n            - name: POD_NAMESPACE\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.namespace\n          securityContext: \n            allowPrivilegeEscalation: false\n      restartPolicy: OnFailure\n      serviceAccountName: ingress-nginx-ext-admission\n      nodeSelector: \n        kubernetes.io/os: linux\n      securityContext:\n        fsGroup: 2000\n        runAsNonRoot: true\n        runAsUser: 2000\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_041__gcp_k8s__nginx_ingress/vendor/ingress-nginx/kustomization.yaml",
    "content": "resources:\n  - \"ingress-nginx-ext-vendor.yaml\""
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_042__gcp_k8s__cert_manager_dns_validation___using_41/ReadMe.md",
    "content": "# Cert Manager\n\n- [Github » CertManager » Releases](https://github.com/cert-manager/cert-manager/releases)\n- [CertManager » Docs » Installation » helm](https://cert-manager.io/docs/installation/helm/)\n- [CertManager » Docs » Tutorials » Getting started with cert manager on google kubernetes engine using lets encrypt for ingress ssl](https://cert-manager.io/docs/tutorials/getting-started-with-cert-manager-on-google-kubernetes-engine-using-lets-encrypt-for-ingress-ssl/)\n- [CertManager » Docs » Tutorials » dns-validation](https://cert-manager.io/docs/tutorials/acme/dns-validation)\n- [CertManager » Docs » Configuration » Acme » dns01 » route53](https://cert-manager.io/docs/configuration/acme/dns01/route53/)\n\nEnsure that you have completed the [task_041__gcp_k8s__nginx_ingress](../task_041__gcp_k8s__nginx_ingress) and we will continue from there\n\n## GKE Kubernetes Version\n\n```bash\n$ kubectl version --short\nClient Version: v1.27.3\nKustomize Version: v5.0.1\nServer Version: v1.27.2-gke.1200\n```\n\n```bash\n\n## Install\n\n```bash\n$ helm repo add jetstack https://charts.jetstack.io\n.\n$ helm repo update\n.\n```\n\n## Create manifest using helm template command\n\n- [setting-nameservers-for-dns01-self-check](https://cert-manager.io/docs/configuration/acme/dns01/#setting-nameservers-for-dns01-self-check)\n\nThe DNS01 challenge provider used by cert-manager (like Let's Encrypt) requires access to DNS servers to be able to resolve the TXT records for the domains it needs to create certificates for. In some environments, especially in private networks, the default DNS servers that the pods use might not have access to public DNS records.\n\nThe `--dns01-recursive-nameservers` argument provides a way to override the default DNS servers used by cert-manager. The servers listed here are used to check the propagation of DNS records. This is especially useful in scenarios where the default DNS server (like ones provided by the Kubernetes service) cannot resolve external domains.\n\nIn the command you provided, the `--dns01-recursive-nameservers-only` option forces cert-manager to use only the DNS servers provided in the `--dns01-recursive-nameservers` list (Google's public DNS server at 8.8.8.8 and Cloudflare's public DNS server at 1.1.1.1) for DNS01 challenges.\n\nSo, the usage of recursive DNS servers helps cert-manager to validate DNS01 challenges accurately even in environments where default DNS configurations are not sufficient or properly setup to reach public DNS records.\n\n```bash\n$ helm template cert-manager jetstack/cert-manager \\\n  --namespace cert-manager \\\n  --create-namespace \\\n  --version v1.12.2 \\\n  --set installCRDs=true \\\n  --set 'extraArgs={ --dns01-recursive-nameservers-only,--dns01-recursive-nameservers=8.8.8.8:53\\,1.1.1.1:53}' > cert-manager.yaml\n```\n\n- You can deploy the changes as well\n\n```bash\n$ kubectl apply -f cert-manager-vendor.yaml        \n.\n$ kubectl get pods -n cert-manager        \nNAME                                      READY   STATUS    RESTARTS   AGE\ncert-manager-65fb9476bd-ht8l9             1/1     Running   0          12m\ncert-manager-cainjector-869d958c8-tzkv6   1/1     Running   0          16m\ncert-manager-webhook-67cf5854d-hwq5q      1/1     Running   0          16m\n```\n\n- Create [IAM Policy](https://cert-manager.io/docs/configuration/acme/dns01/route53) and User/Role as per your requirement in AWS account\n\n- Policy `cert-manager-policy`\n\n```json\n{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [\n    {\n      \"Effect\": \"Allow\",\n      \"Action\": \"route53:GetChange\",\n      \"Resource\": \"arn:aws:route53:::change/*\"\n    },\n    {\n      \"Effect\": \"Allow\",\n      \"Action\": [\n        \"route53:ChangeResourceRecordSets\",\n        \"route53:ListResourceRecordSets\"\n      ],\n      \"Resource\": \"arn:aws:route53:::hostedzone/*\"\n    },\n    {\n      \"Effect\": \"Allow\",\n      \"Action\": \"route53:ListHostedZonesByName\",\n      \"Resource\": \"*\"\n    }\n  ]\n}\n```\n\n- Create a user `cert-manager-user` and ensure that you assign the above policy to this user.\n- Download the corresponding AWS_ACCESS_KEY and AWS_SECRET_KEY.\n\n- Create kubernetes secret with the credentials you just downloaded\n\n```bash\n$ kubectl create secret generic route53-credentials --namespace cert-manager --from-literal=secret-access-key=<secret-access-key> --from-literal=access-key-id=<access-key-id>\n.\n```\n\n- Create Cluster Issuer with let's encrypt staging URL and change the domains as per your requirement\n\n```bash\n$ export DNS_ZONE=<your_dnz_zone>\n.\n$ sed \"s/DNS_ZONE/$DNS_ZONE/g\" clusterIssuer-letsEncryptStaging.yaml | kubectl apply -f -\n.\n```\n\n- Create a certificate\n\n```bash\n$ export DOMAIN_NAME=<your_domain_name>        # like example.com\n$ sed \"s/DOMAIN_NAME/$DOMAIN_NAME/g\" certificate-letsEncryptStaging.yaml | kubectl apply -f -\n.\n```\n\n- Check if the certificate is ready\n\n```bash\n$ kubectl get certificate\nNAME         READY   SECRET           AGE\nankit-info   True    ankit-info-tls   9m12s\n\n$ kubectl get secret     \nNAME             TYPE                DATA   AGE\nankit-info-tls   kubernetes.io/tls   2      12m\n\n# copy tls.crt from this secret to your clipboard\n$ pbpaste | openssl x509 -text -noout | egrep \"Not|DNS\"                      \n            Not Before: Jun 28 12:35:16 2023 GMT\n            Not After : Sep 26 12:35:15 2023 GMT\n                DNS:*.<yourdomain>, DNS:<your_domain>\n```\n\n- Once everything is validated, let's do everything for production\n\n```bash\n$ mkdir build\n.\n$ kustomize build base/cert-manager -o build/cert_manager_all.yaml\n.\n\n# Let's delete and re-apply everything\n$ kubectl delete -f base/cert-manager/.\n.\n$ kubectl delete -f vendor/cert-manager/cert-manager-vendor.yaml\n.\n# If the namespace is stuck in terminating state\n# https://stackoverflow.com/questions/52369247/namespace-stuck-as-terminating-how-i-removed-it\n(\nNAMESPACE=your-rogue-namespace\nkubectl proxy &\nkubectl get namespace $NAMESPACE -o json |jq '.spec = {\"finalizers\":[]}' >temp.json\ncurl -k -H \"Content-Type: application/json\" -X PUT --data-binary @temp.json 127.0.0.1:8001/api/v1/namespaces/$NAMESPACE/finalize\n)\n  \n$ kubectl delete secret ankit-info-tls\n.\n\n## Start again\n\n$ kubectl create ns cert-manager\n.\n$ kubectl create secret generic route53-credentials --namespace cert-manager --from-literal=secret-access-key=<secret-access-key> --from-literal=access-key-id=<access-key-id>\n.\n$ export DNS_ZONE=<your_dnz_zone>\n.\n$ export DOMAIN_NAME=<your_domain_name>        # like example.com\n.\n$ sed -e \"s/DNS_ZONE/$DNS_ZONE/g\" -e \"s/DOMAIN_NAME/$DOMAIN_NAME/g\" build/cert_manager_all.yaml | kubectl apply -f -\n$ kubectl apply -f build/cert_manager_all.yaml\n.\n\n$ kubectl get certificate -n cert-manager\nNAME         READY   SECRET           AGE\nankit-info   True    ankit-info-tls   12m\n\n$ kubectl get secret -n cert-manager | egrep \"tls|NAME\"\nNAME                      TYPE                DATA   AGE\nankit-info-tls            kubernetes.io/tls   2      12m\n\n# copy tls.crt from this secret to your clipboard, you should see your_domain instead of example.com\n$ pbpaste | openssl x509 -text -noout | egrep \"Not|DNS\"\n            Not Before: Jun 28 14:38:12 2023 GMT\n            Not After : Sep 26 14:38:11 2023 GMT\n                DNS:*.example.com, DNS:example.com\n\n```\n\nthe annotation `cert-manager.io/cluster-issuer: \"letsencrypt-prod\"` in the Ingress resource tells cert-manager to automatically create a certificate for the specified hosts.\n\nWhen the Ingress resource is created, cert-manager will automatically create a Certificate resource, which triggers the creation of a certificate by the issuer. Once the certificate is ready, it's stored in a Kubernetes Secret (named as per the `secretName` field in the `tls` block of the Ingress resource).\n\nThe NGINX Ingress controller will then automatically detect the Secret and use the certificate it contains for SSL termination of the Ingress.\n\n- Also, make sure that you create a Route53 record for the subdomain for which you want to create a certificate. It should resolve to your load balancer IP.\n\n```bash\n$ nslookup whoamiservice.<DOMAIN_NAME>      \nServer:         192.168.18.1\nAddress:        192.168.18.1#53\n\nNon-authoritative answer:\nName:   whoamiservice.<DOMAIN_NAME>\nAddress: 35.232.7.154\n```\n\n- Let's deploy the app on TLS\n\n```bash\n$ kustomize build base/app -o build/app_all.yaml\n.\n## apply\n$ sed -e \"s/DNS_ZONE/$DNS_ZONE/g\" -e \"s/DOMAIN_NAME/$DOMAIN_NAME/g\" build/app_all.yaml | kubectl apply -f -\n.\n\n$ kubectl get certificate       \nNAME                 READY   SECRET               AGE\nwhoami-service-tls   True    whoami-service-tls   24m\n.\n\n$ kubectl get secret                  \nNAME                 TYPE                DATA   AGE\nwhoami-service-tls   kubernetes.io/tls   2      24m\n```\n\n- Let's create another deployment with a different subdomain i.e. echoservice.<DOMAIN_NAME> (change <DOMAIN_NAME> with your domain)\n\n- Ensure Route53 record exists\n\n```bash\n$ nslookup echoservice.<DOMAIN_NAME>  \nServer:         192.168.18.1\nAddress:        192.168.18.1#53\n\nNon-authoritative answer:\nName:   echoservice.<DOMAIN_NAME>\nAddress: 35.232.7.154\n```\n\n```yaml\nnamespace: default\n\nresources:\n  - dep_whoami.yaml\n  - ingress_whoami.yaml\n  - svc_whoami.yaml\n  - dep_echo.yaml\n  - ingress_echo.yaml\n  - svc_echo.yaml\n```\n\n- Build and deploy\n\n```bash\n$ kustomize build base/app -o build/app_all.yaml\n.\n$ sed -e \"s/DNS_ZONE/$DNS_ZONE/g\" -e \"s/DOMAIN_NAME/$DOMAIN_NAME/g\" build/app_all.yaml | kubectl apply -f -\n.\n\n$ kubectl get certificate\nNAME                 READY   SECRET               AGE\necho-service-tls     True    echo-service-tls     31m\nwhoami-service-tls   True    whoami-service-tls   29m\n\n$ kubectl get secret     \nNAME                 TYPE                DATA   AGE\necho-service-tls     kubernetes.io/tls   2      30m\nwhoami-service-tls   kubernetes.io/tls   2      29m\n\n## For secret echo-service-tls\n$ pbpaste | openssl x509 -text -noout | egrep \"Not|DNS\"\n            Not Before: Jun 29 07:03:45 2023 GMT\n            Not After : Sep 27 07:03:44 2023 GMT\n                DNS:echoservice.<DOMAIN_NAME>\n\n$ pbpaste | openssl x509 -text -noout | egrep \"Not|DNS\"\n            Not Before: Jun 29 07:04:30 2023 GMT\n            Not After : Sep 27 07:04:29 2023 GMT\n                DNS:whoamiservice.<DOMAIN_NAME>\n```\n\n- Let's check our certificates using curl client\n\n```bash\n# You should see your domain instead of <DOMAIN_NAME>\n$ curl -v https://whoamiservice.<DOMAIN_NAME>/whoami \n*   Trying 35.232.7.154:443...\n* Connected to whoamiservice.<DOMAIN_NAME> (35.232.7.154) port 443 (#0)\n.........\n* Server certificate:\n*  subject: CN=whoamiservice.<DOMAIN_NAME>\n*  start date: Jun 29 07:04:30 2023 GMT\n*  expire date: Sep 27 07:04:29 2023 GMT\n*  subjectAltName: host \"whoamiservice.<DOMAIN_NAME>\" matched cert's \"whoamiservice.<DOMAIN_NAME>\"\n*  issuer: C=US; O=Let's Encrypt; CN=R3\n*  SSL certificate verify ok.\n.......\n> GET /whoami HTTP/2\n> Host: whoamiservice.<DOMAIN_NAME>\n> user-agent: curl/7.88.1\n> accept: */*\n> \n< HTTP/2 200 \n< date: Thu, 29 Jun 2023 08:40:49 GMT\n< content-type: text/plain; charset=utf-8\n< content-length: 445\n< strict-transport-security: max-age=15724800; includeSubDomains\n< \nHostname: whoami-767d459f67-lq9ml\nIP: 127.0.0.1\nIP: 10.108.0.55\nRemoteAddr: 10.108.0.48:42790\nGET /whoami HTTP/1.1\nHost: whoamiservice.<DOMAIN_NAME>\nUser-Agent: curl/7.88.1\nAccept: */*\nX-Forwarded-For: 124.253.250.102\nX-Forwarded-Host: whoamiservice.<DOMAIN_NAME>\nX-Forwarded-Port: 443\nX-Forwarded-Proto: https\nX-Forwarded-Scheme: https\nX-Real-Ip: 124.253.250.102\nX-Request-Id: 90c67372dc645e17c1ae97fb614a2792\nX-Scheme: https\n\n\n## Let's validate for echo service\n$ curl -v https://echoservice.<DOMAIN_NAME>/echo   \n*   Trying 35.232.7.154:443...\n* Connected to echoservice.<DOMAIN_NAME> (35.232.7.154) port 443 (#0)\n..............................\n* Server certificate:\n*  subject: CN=echoservice.<DOMAIN_NAME>\n*  start date: Jun 29 07:03:45 2023 GMT\n*  expire date: Sep 27 07:03:44 2023 GMT\n*  subjectAltName: host \"echoservice.<DOMAIN_NAME>\" matched cert's \"echoservice.<DOMAIN_NAME>\"\n*  issuer: C=US; O=Let's Encrypt; CN=R3\n*  SSL certificate verify ok.\n............................................\n> GET /echo HTTP/2\n> Host: echoservice.<DOMAIN_NAME>\n> user-agent: curl/7.88.1\n> accept: */*\n> \n< HTTP/2 200 \n< date: Thu, 29 Jun 2023 08:43:26 GMT\n< content-type: text/plain\n< strict-transport-security: max-age=15724800; includeSubDomains\n< \n\n\nHostname: echo-68cc97587c-mddct\n\nPod Information:\n        node name:      gke-dev-default-pool-deac09b6-n853\n        pod name:       echo-68cc97587c-mddct\n        pod namespace:  default\n        pod IP: 10.108.0.54\n\nServer values:\n        server_version=nginx: 1.12.2 - lua: 10010\n\nRequest Information:\n        client_address=10.108.0.48\n        method=GET\n        real path=/echo\n        query=\n        request_version=1.1\n        request_scheme=http\n        request_uri=http://echoservice.<DOMAIN_NAME>:8080/echo\n\nRequest Headers:\n        accept=*/*  \n        host=echoservice.<DOMAIN_NAME>  \n        user-agent=curl/7.88.1  \n        x-forwarded-for=124.253.250.102  \n        x-forwarded-host=echoservice.<DOMAIN_NAME>  \n        x-forwarded-port=443  \n        x-forwarded-proto=https  \n        x-forwarded-scheme=https  \n        x-real-ip=124.253.250.102  \n        x-request-id=6df6c4625944a6b8955ecfa5d3ebcd32  \n        x-scheme=https  \n\nRequest Body:\n        -no body in request-\n```\n\n- Checking in browser (domain has been redacted in the image)\n\n![img](.images/image-2023-06-29-14-22-32.png)\n\n![img](.images/image-2023-06-29-14-24-52.png)"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_042__gcp_k8s__cert_manager_dns_validation___using_41/base/app/dep_echo.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app: echo\n  name: echo\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: echo\n  strategy: {}\n  template:\n    metadata:\n      labels:\n        app: echo\n    spec:\n      containers:\n        - image: gcr.io/kubernetes-e2e-test-images/echoserver:2.2\n          name: echo\n          ports:\n            - containerPort: 8080\n          env:\n            - name: NODE_NAME\n              valueFrom:\n                fieldRef:\n                  fieldPath: spec.nodeName\n            - name: POD_NAME\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.name\n            - name: POD_NAMESPACE\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.namespace\n            - name: POD_IP\n              valueFrom:\n                fieldRef:\n                  fieldPath: status.podIP\n          resources: {}"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_042__gcp_k8s__cert_manager_dns_validation___using_41/base/app/dep_whoami.yaml",
    "content": "kind: Deployment\napiVersion: apps/v1\nmetadata:\n  name: whoami\n  labels:\n    app: whoami\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: whoami\n  template:\n    metadata:\n      labels:\n        app: whoami\n    spec:\n      containers:\n        - name: whoami\n          image: containous/whoami\n          ports:\n            - name: web\n              containerPort: 80\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_042__gcp_k8s__cert_manager_dns_validation___using_41/base/app/ingress_echo.yaml",
    "content": "apiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  name: echo-ingress\n  annotations:\n    # kubernetes.io/ingress.class: \"nginx\" # Warning: annotation \"kubernetes.io/ingress.class\" is deprecated, please use 'spec.ingressClassName' instead\n    cert-manager.io/cluster-issuer: \"letsencrypt-prod\" \nspec:\n  ingressClassName: \"nginx\"\n  tls:\n  - hosts:\n    - echoservice.DOMAIN_NAME # replace with your domain\n    secretName: echo-service-tls # This is the secret that will hold the SSL certificate\n  rules:\n  - host: echoservice.DOMAIN_NAME # replace with your domain\n    http:\n      paths:\n      - pathType: Prefix\n        path: \"/echo\"\n        backend:\n          service:\n            name: echo\n            port:\n              number: 80\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_042__gcp_k8s__cert_manager_dns_validation___using_41/base/app/ingress_whoami.yaml",
    "content": "apiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  name: whoami-ingress\n  annotations:\n    # kubernetes.io/ingress.class: \"nginx\" # Warning: annotation \"kubernetes.io/ingress.class\" is deprecated, please use 'spec.ingressClassName' instead\n    cert-manager.io/cluster-issuer: \"letsencrypt-prod\" \nspec:\n  ingressClassName: \"nginx\"\n  tls:\n  - hosts:\n    - whoamiservice.DOMAIN_NAME # replace with your domain\n    secretName: whoami-service-tls # This is the secret that will hold the SSL certificate\n  rules:\n  - host: whoamiservice.DOMAIN_NAME # replace with your domain\n    http:\n      paths:\n      - pathType: Prefix\n        path: \"/whoami\"\n        backend:\n          service:\n            name: whoami-service\n            port:\n              number: 80\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_042__gcp_k8s__cert_manager_dns_validation___using_41/base/app/kustomization.yaml",
    "content": "namespace: default\n\nresources:\n  - dep_whoami.yaml\n  - ingress_whoami.yaml\n  - svc_whoami.yaml\n  - dep_echo.yaml\n  - ingress_echo.yaml\n  - svc_echo.yaml\n\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_042__gcp_k8s__cert_manager_dns_validation___using_41/base/app/svc_echo.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app: echo\n  name: echo\nspec:\n  ports:\n    - port: 8080\n      name: high\n      protocol: TCP\n      targetPort: 8080\n    - port: 80\n      name: low\n      protocol: TCP\n      targetPort: 8080\n  selector:\n    app: echo\n---"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_042__gcp_k8s__cert_manager_dns_validation___using_41/base/app/svc_whoami.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: whoami-service\nspec:\n  selector:\n    app: whoami\n  ports:\n    - protocol: TCP\n      port: 80\n      targetPort: 80\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_042__gcp_k8s__cert_manager_dns_validation___using_41/base/cert-manager/certificate-letsEncryptProd.yaml",
    "content": "apiVersion: cert-manager.io/v1\nkind: Certificate\nmetadata:\n  name: ankit-info\n  namespace: default\nspec:\n  secretName: ankit-info-tls\n  issuerRef:\n    name: letsencrypt-prod\n    kind: ClusterIssuer\n  dnsNames:\n  - '*.DOMAIN_NAME'\n  - DOMAIN_NAME\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_042__gcp_k8s__cert_manager_dns_validation___using_41/base/cert-manager/certificate-letsEncryptStaging.yaml",
    "content": "apiVersion: cert-manager.io/v1\nkind: Certificate\nmetadata:\n  name: ankit-info\n  namespace: default\nspec:\n  secretName: ankit-info-tls-staging\n  issuerRef:\n    name: letsencrypt-staging\n    kind: ClusterIssuer  # This line tells cert-manager to use a ClusterIssuer\n  dnsNames:\n  - '*.DOMAIN_NAME'\n  - DOMAIN_NAME\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_042__gcp_k8s__cert_manager_dns_validation___using_41/base/cert-manager/clusterIssuer-letsEncryptProd.yaml",
    "content": "apiVersion: cert-manager.io/v1\nkind: ClusterIssuer\nmetadata:\n  name: letsencrypt-prod\nspec:\n  acme:\n    server: https://acme-v02.api.letsencrypt.org/directory\n    email: testemail@gmail.com\n    privateKeySecretRef:\n      name: letsencrypt-prod\n    solvers:\n      - selector:\n          dnsZones:\n            - \"DNS_ZONE\"       # Replace with your DNS zone name, e.g. example.com, haven't tried with DNS zone ID but might work as well\n        dns01:\n          route53:\n            region: us-east-1  # replace with your region\n            accessKeyIDSecretRef:\n              name: route53-credentials\n              key: access-key-id\n            secretAccessKeySecretRef:\n              name: route53-credentials\n              key: secret-access-key\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_042__gcp_k8s__cert_manager_dns_validation___using_41/base/cert-manager/clusterIssuer-letsEncryptStaging.yaml",
    "content": "apiVersion: cert-manager.io/v1\nkind: ClusterIssuer\nmetadata:\n  name: letsencrypt-staging\nspec:\n  acme:\n    server: https://acme-staging-v02.api.letsencrypt.org/directory\n    email: testemail@gmail.com\n    privateKeySecretRef:\n      name: letsencrypt-staging\n    solvers:\n    - selector:\n        dnsZones:\n          - \"DNS_ZONE\"  # replace with your domain\n      dns01:\n        route53:\n          region: us-east-1  # replace with your region\n          accessKeyIDSecretRef:\n            name: route53-credentials\n            key: access-key-id\n          secretAccessKeySecretRef:\n            name: route53-credentials\n            key: secret-access-key\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_042__gcp_k8s__cert_manager_dns_validation___using_41/base/cert-manager/kustomization.yaml",
    "content": "apiVersion: kustomize.config.k8s.io/v1beta1\nkind: Kustomization\n\nnamespace: cert-manager\n\nresources:\n  - namespace.yaml  # Add your own resources here\n  # - clusterIssuer-letsEncryptStaging.yaml\n  # - certificate-letsEncryptStaging.yaml\n  - clusterIssuer-letsEncryptProd.yaml\n  - certificate-letsEncryptProd.yaml\n  - ../../vendor/cert-manager\n\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_042__gcp_k8s__cert_manager_dns_validation___using_41/base/cert-manager/namespace.yaml",
    "content": "apiVersion: v1\nkind: Namespace\nmetadata:\n  name: cert-manager\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_042__gcp_k8s__cert_manager_dns_validation___using_41/build/app_all.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app: echo\n  name: echo\n  namespace: default\nspec:\n  ports:\n  - name: high\n    port: 8080\n    protocol: TCP\n    targetPort: 8080\n  - name: low\n    port: 80\n    protocol: TCP\n    targetPort: 8080\n  selector:\n    app: echo\n---\napiVersion: v1\nkind: Service\nmetadata:\n  name: whoami-service\n  namespace: default\nspec:\n  ports:\n  - port: 80\n    protocol: TCP\n    targetPort: 80\n  selector:\n    app: whoami\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app: echo\n  name: echo\n  namespace: default\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: echo\n  strategy: {}\n  template:\n    metadata:\n      labels:\n        app: echo\n    spec:\n      containers:\n      - env:\n        - name: NODE_NAME\n          valueFrom:\n            fieldRef:\n              fieldPath: spec.nodeName\n        - name: POD_NAME\n          valueFrom:\n            fieldRef:\n              fieldPath: metadata.name\n        - name: POD_NAMESPACE\n          valueFrom:\n            fieldRef:\n              fieldPath: metadata.namespace\n        - name: POD_IP\n          valueFrom:\n            fieldRef:\n              fieldPath: status.podIP\n        image: gcr.io/kubernetes-e2e-test-images/echoserver:2.2\n        name: echo\n        ports:\n        - containerPort: 8080\n        resources: {}\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app: whoami\n  name: whoami\n  namespace: default\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: whoami\n  template:\n    metadata:\n      labels:\n        app: whoami\n    spec:\n      containers:\n      - image: containous/whoami\n        name: whoami\n        ports:\n        - containerPort: 80\n          name: web\n---\napiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  annotations:\n    cert-manager.io/cluster-issuer: letsencrypt-prod\n  name: echo-ingress\n  namespace: default\nspec:\n  ingressClassName: nginx\n  rules:\n  - host: echoservice.DOMAIN_NAME\n    http:\n      paths:\n      - backend:\n          service:\n            name: echo\n            port:\n              number: 80\n        path: /echo\n        pathType: Prefix\n  tls:\n  - hosts:\n    - echoservice.DOMAIN_NAME\n    secretName: echo-service-tls\n---\napiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  annotations:\n    cert-manager.io/cluster-issuer: letsencrypt-prod\n  name: whoami-ingress\n  namespace: default\nspec:\n  ingressClassName: nginx\n  rules:\n  - host: whoamiservice.DOMAIN_NAME\n    http:\n      paths:\n      - backend:\n          service:\n            name: whoami-service\n            port:\n              number: 80\n        path: /whoami\n        pathType: Prefix\n  tls:\n  - hosts:\n    - whoamiservice.DOMAIN_NAME\n    secretName: whoami-service-tls\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_042__gcp_k8s__cert_manager_dns_validation___using_41/build/cert_manager_all.yaml",
    "content": "apiVersion: v1\nkind: Namespace\nmetadata:\n  name: cert-manager\n---\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  labels:\n    app: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: certificaterequests.cert-manager.io\nspec:\n  group: cert-manager.io\n  names:\n    categories:\n    - cert-manager\n    kind: CertificateRequest\n    listKind: CertificateRequestList\n    plural: certificaterequests\n    shortNames:\n    - cr\n    - crs\n    singular: certificaterequest\n  scope: Namespaced\n  versions:\n  - additionalPrinterColumns:\n    - jsonPath: .status.conditions[?(@.type==\"Approved\")].status\n      name: Approved\n      type: string\n    - jsonPath: .status.conditions[?(@.type==\"Denied\")].status\n      name: Denied\n      type: string\n    - jsonPath: .status.conditions[?(@.type==\"Ready\")].status\n      name: Ready\n      type: string\n    - jsonPath: .spec.issuerRef.name\n      name: Issuer\n      type: string\n    - jsonPath: .spec.username\n      name: Requestor\n      type: string\n    - jsonPath: .status.conditions[?(@.type==\"Ready\")].message\n      name: Status\n      priority: 1\n      type: string\n    - description: CreationTimestamp is a timestamp representing the server time when\n        this object was created. It is not guaranteed to be set in happens-before\n        order across separate operations. Clients may not set this value. It is represented\n        in RFC3339 form and is in UTC.\n      jsonPath: .metadata.creationTimestamp\n      name: Age\n      type: date\n    name: v1\n    schema:\n      openAPIV3Schema:\n        description: \"A CertificateRequest is used to request a signed certificate\n          from one of the configured issuers. \\n All fields within the CertificateRequest's\n          `spec` are immutable after creation. A CertificateRequest will either succeed\n          or fail, as denoted by its `status.state` field. \\n A CertificateRequest\n          is a one-shot resource, meaning it represents a single point in time request\n          for a certificate and cannot be re-used.\"\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: Desired state of the CertificateRequest resource.\n            properties:\n              duration:\n                description: The requested 'duration' (i.e. lifetime) of the Certificate.\n                  This option may be ignored/overridden by some issuer types.\n                type: string\n              extra:\n                additionalProperties:\n                  items:\n                    type: string\n                  type: array\n                description: Extra contains extra attributes of the user that created\n                  the CertificateRequest. Populated by the cert-manager webhook on\n                  creation and immutable.\n                type: object\n              groups:\n                description: Groups contains group membership of the user that created\n                  the CertificateRequest. Populated by the cert-manager webhook on\n                  creation and immutable.\n                items:\n                  type: string\n                type: array\n                x-kubernetes-list-type: atomic\n              isCA:\n                description: IsCA will request to mark the certificate as valid for\n                  certificate signing when submitting to the issuer. This will automatically\n                  add the `cert sign` usage to the list of `usages`.\n                type: boolean\n              issuerRef:\n                description: IssuerRef is a reference to the issuer for this CertificateRequest.  If\n                  the `kind` field is not set, or set to `Issuer`, an Issuer resource\n                  with the given name in the same namespace as the CertificateRequest\n                  will be used.  If the `kind` field is set to `ClusterIssuer`, a\n                  ClusterIssuer with the provided name will be used. The `name` field\n                  in this stanza is required at all times. The group field refers\n                  to the API group of the issuer which defaults to `cert-manager.io`\n                  if empty.\n                properties:\n                  group:\n                    description: Group of the resource being referred to.\n                    type: string\n                  kind:\n                    description: Kind of the resource being referred to.\n                    type: string\n                  name:\n                    description: Name of the resource being referred to.\n                    type: string\n                required:\n                - name\n                type: object\n              request:\n                description: The PEM-encoded x509 certificate signing request to be\n                  submitted to the CA for signing.\n                format: byte\n                type: string\n              uid:\n                description: UID contains the uid of the user that created the CertificateRequest.\n                  Populated by the cert-manager webhook on creation and immutable.\n                type: string\n              usages:\n                description: Usages is the set of x509 usages that are requested for\n                  the certificate. If usages are set they SHOULD be encoded inside\n                  the CSR spec Defaults to `digital signature` and `key encipherment`\n                  if not specified.\n                items:\n                  description: \"KeyUsage specifies valid usage contexts for keys.\n                    See: https://tools.ietf.org/html/rfc5280#section-4.2.1.3 https://tools.ietf.org/html/rfc5280#section-4.2.1.12\n                    \\n Valid KeyUsage values are as follows: \\\"signing\\\", \\\"digital\n                    signature\\\", \\\"content commitment\\\", \\\"key encipherment\\\", \\\"key\n                    agreement\\\", \\\"data encipherment\\\", \\\"cert sign\\\", \\\"crl sign\\\",\n                    \\\"encipher only\\\", \\\"decipher only\\\", \\\"any\\\", \\\"server auth\\\",\n                    \\\"client auth\\\", \\\"code signing\\\", \\\"email protection\\\", \\\"s/mime\\\",\n                    \\\"ipsec end system\\\", \\\"ipsec tunnel\\\", \\\"ipsec user\\\", \\\"timestamping\\\",\n                    \\\"ocsp signing\\\", \\\"microsoft sgc\\\", \\\"netscape sgc\\\"\"\n                  enum:\n                  - signing\n                  - digital signature\n                  - content commitment\n                  - key encipherment\n                  - key agreement\n                  - data encipherment\n                  - cert sign\n                  - crl sign\n                  - encipher only\n                  - decipher only\n                  - any\n                  - server auth\n                  - client auth\n                  - code signing\n                  - email protection\n                  - s/mime\n                  - ipsec end system\n                  - ipsec tunnel\n                  - ipsec user\n                  - timestamping\n                  - ocsp signing\n                  - microsoft sgc\n                  - netscape sgc\n                  type: string\n                type: array\n              username:\n                description: Username contains the name of the user that created the\n                  CertificateRequest. Populated by the cert-manager webhook on creation\n                  and immutable.\n                type: string\n            required:\n            - issuerRef\n            - request\n            type: object\n          status:\n            description: Status of the CertificateRequest. This is set and managed\n              automatically.\n            properties:\n              ca:\n                description: The PEM encoded x509 certificate of the signer, also\n                  known as the CA (Certificate Authority). This is set on a best-effort\n                  basis by different issuers. If not set, the CA is assumed to be\n                  unknown/not available.\n                format: byte\n                type: string\n              certificate:\n                description: The PEM encoded x509 certificate resulting from the certificate\n                  signing request. If not set, the CertificateRequest has either not\n                  been completed or has failed. More information on failure can be\n                  found by checking the `conditions` field.\n                format: byte\n                type: string\n              conditions:\n                description: List of status conditions to indicate the status of a\n                  CertificateRequest. Known condition types are `Ready` and `InvalidRequest`.\n                items:\n                  description: CertificateRequestCondition contains condition information\n                    for a CertificateRequest.\n                  properties:\n                    lastTransitionTime:\n                      description: LastTransitionTime is the timestamp corresponding\n                        to the last status change of this condition.\n                      format: date-time\n                      type: string\n                    message:\n                      description: Message is a human readable description of the\n                        details of the last transition, complementing reason.\n                      type: string\n                    reason:\n                      description: Reason is a brief machine readable explanation\n                        for the condition's last transition.\n                      type: string\n                    status:\n                      description: Status of the condition, one of (`True`, `False`,\n                        `Unknown`).\n                      enum:\n                      - \"True\"\n                      - \"False\"\n                      - Unknown\n                      type: string\n                    type:\n                      description: Type of the condition, known values are (`Ready`,\n                        `InvalidRequest`, `Approved`, `Denied`).\n                      type: string\n                  required:\n                  - status\n                  - type\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - type\n                x-kubernetes-list-type: map\n              failureTime:\n                description: FailureTime stores the time that this CertificateRequest\n                  failed. This is used to influence garbage collection and back-off.\n                format: date-time\n                type: string\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n    subresources:\n      status: {}\n---\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  labels:\n    app: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: certificates.cert-manager.io\nspec:\n  group: cert-manager.io\n  names:\n    categories:\n    - cert-manager\n    kind: Certificate\n    listKind: CertificateList\n    plural: certificates\n    shortNames:\n    - cert\n    - certs\n    singular: certificate\n  scope: Namespaced\n  versions:\n  - additionalPrinterColumns:\n    - jsonPath: .status.conditions[?(@.type==\"Ready\")].status\n      name: Ready\n      type: string\n    - jsonPath: .spec.secretName\n      name: Secret\n      type: string\n    - jsonPath: .spec.issuerRef.name\n      name: Issuer\n      priority: 1\n      type: string\n    - jsonPath: .status.conditions[?(@.type==\"Ready\")].message\n      name: Status\n      priority: 1\n      type: string\n    - description: CreationTimestamp is a timestamp representing the server time when\n        this object was created. It is not guaranteed to be set in happens-before\n        order across separate operations. Clients may not set this value. It is represented\n        in RFC3339 form and is in UTC.\n      jsonPath: .metadata.creationTimestamp\n      name: Age\n      type: date\n    name: v1\n    schema:\n      openAPIV3Schema:\n        description: \"A Certificate resource should be created to ensure an up to\n          date and signed x509 certificate is stored in the Kubernetes Secret resource\n          named in `spec.secretName`. \\n The stored certificate will be renewed before\n          it expires (as configured by `spec.renewBefore`).\"\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: Desired state of the Certificate resource.\n            properties:\n              additionalOutputFormats:\n                description: AdditionalOutputFormats defines extra output formats\n                  of the private key and signed certificate chain to be written to\n                  this Certificate's target Secret. This is an Alpha Feature and is\n                  only enabled with the `--feature-gates=AdditionalCertificateOutputFormats=true`\n                  option on both the controller and webhook components.\n                items:\n                  description: CertificateAdditionalOutputFormat defines an additional\n                    output format of a Certificate resource. These contain supplementary\n                    data formats of the signed certificate chain and paired private\n                    key.\n                  properties:\n                    type:\n                      description: Type is the name of the format type that should\n                        be written to the Certificate's target Secret.\n                      enum:\n                      - DER\n                      - CombinedPEM\n                      type: string\n                  required:\n                  - type\n                  type: object\n                type: array\n              commonName:\n                description: 'CommonName is a common name to be used on the Certificate.\n                  The CommonName should have a length of 64 characters or fewer to\n                  avoid generating invalid CSRs. This value is ignored by TLS clients\n                  when any subject alt name is set. This is x509 behaviour: https://tools.ietf.org/html/rfc6125#section-6.4.4'\n                type: string\n              dnsNames:\n                description: DNSNames is a list of DNS subjectAltNames to be set on\n                  the Certificate.\n                items:\n                  type: string\n                type: array\n              duration:\n                description: The requested 'duration' (i.e. lifetime) of the Certificate.\n                  This option may be ignored/overridden by some issuer types. If unset\n                  this defaults to 90 days. Certificate will be renewed either 2/3\n                  through its duration or `renewBefore` period before its expiry,\n                  whichever is later. Minimum accepted duration is 1 hour. Value must\n                  be in units accepted by Go time.ParseDuration https://golang.org/pkg/time/#ParseDuration\n                type: string\n              emailAddresses:\n                description: EmailAddresses is a list of email subjectAltNames to\n                  be set on the Certificate.\n                items:\n                  type: string\n                type: array\n              encodeUsagesInRequest:\n                description: EncodeUsagesInRequest controls whether key usages should\n                  be present in the CertificateRequest\n                type: boolean\n              ipAddresses:\n                description: IPAddresses is a list of IP address subjectAltNames to\n                  be set on the Certificate.\n                items:\n                  type: string\n                type: array\n              isCA:\n                description: IsCA will mark this Certificate as valid for certificate\n                  signing. This will automatically add the `cert sign` usage to the\n                  list of `usages`.\n                type: boolean\n              issuerRef:\n                description: IssuerRef is a reference to the issuer for this certificate.\n                  If the `kind` field is not set, or set to `Issuer`, an Issuer resource\n                  with the given name in the same namespace as the Certificate will\n                  be used. If the `kind` field is set to `ClusterIssuer`, a ClusterIssuer\n                  with the provided name will be used. The `name` field in this stanza\n                  is required at all times.\n                properties:\n                  group:\n                    description: Group of the resource being referred to.\n                    type: string\n                  kind:\n                    description: Kind of the resource being referred to.\n                    type: string\n                  name:\n                    description: Name of the resource being referred to.\n                    type: string\n                required:\n                - name\n                type: object\n              keystores:\n                description: Keystores configures additional keystore output formats\n                  stored in the `secretName` Secret resource.\n                properties:\n                  jks:\n                    description: JKS configures options for storing a JKS keystore\n                      in the `spec.secretName` Secret resource.\n                    properties:\n                      create:\n                        description: Create enables JKS keystore creation for the\n                          Certificate. If true, a file named `keystore.jks` will be\n                          created in the target Secret resource, encrypted using the\n                          password stored in `passwordSecretRef`. The keystore file\n                          will be updated immediately. If the issuer provided a CA\n                          certificate, a file named `truststore.jks` will also be\n                          created in the target Secret resource, encrypted using the\n                          password stored in `passwordSecretRef` containing the issuing\n                          Certificate Authority\n                        type: boolean\n                      passwordSecretRef:\n                        description: PasswordSecretRef is a reference to a key in\n                          a Secret resource containing the password used to encrypt\n                          the JKS keystore.\n                        properties:\n                          key:\n                            description: The key of the entry in the Secret resource's\n                              `data` field to be used. Some instances of this field\n                              may be defaulted, in others it may be required.\n                            type: string\n                          name:\n                            description: 'Name of the resource being referred to.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                            type: string\n                        required:\n                        - name\n                        type: object\n                    required:\n                    - create\n                    - passwordSecretRef\n                    type: object\n                  pkcs12:\n                    description: PKCS12 configures options for storing a PKCS12 keystore\n                      in the `spec.secretName` Secret resource.\n                    properties:\n                      create:\n                        description: Create enables PKCS12 keystore creation for the\n                          Certificate. If true, a file named `keystore.p12` will be\n                          created in the target Secret resource, encrypted using the\n                          password stored in `passwordSecretRef`. The keystore file\n                          will be updated immediately. If the issuer provided a CA\n                          certificate, a file named `truststore.p12` will also be\n                          created in the target Secret resource, encrypted using the\n                          password stored in `passwordSecretRef` containing the issuing\n                          Certificate Authority\n                        type: boolean\n                      passwordSecretRef:\n                        description: PasswordSecretRef is a reference to a key in\n                          a Secret resource containing the password used to encrypt\n                          the PKCS12 keystore.\n                        properties:\n                          key:\n                            description: The key of the entry in the Secret resource's\n                              `data` field to be used. Some instances of this field\n                              may be defaulted, in others it may be required.\n                            type: string\n                          name:\n                            description: 'Name of the resource being referred to.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                            type: string\n                        required:\n                        - name\n                        type: object\n                    required:\n                    - create\n                    - passwordSecretRef\n                    type: object\n                type: object\n              literalSubject:\n                description: LiteralSubject is an LDAP formatted string that represents\n                  the [X.509 Subject field](https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6).\n                  Use this *instead* of the Subject field if you need to ensure the\n                  correct ordering of the RDN sequence, such as when issuing certs\n                  for LDAP authentication. See https://github.com/cert-manager/cert-manager/issues/3203,\n                  https://github.com/cert-manager/cert-manager/issues/4424. This field\n                  is alpha level and is only supported by cert-manager installations\n                  where LiteralCertificateSubject feature gate is enabled on both\n                  cert-manager controller and webhook.\n                type: string\n              privateKey:\n                description: Options to control private keys used for the Certificate.\n                properties:\n                  algorithm:\n                    description: Algorithm is the private key algorithm of the corresponding\n                      private key for this certificate. If provided, allowed values\n                      are either `RSA`,`Ed25519` or `ECDSA` If `algorithm` is specified\n                      and `size` is not provided, key size of 256 will be used for\n                      `ECDSA` key algorithm and key size of 2048 will be used for\n                      `RSA` key algorithm. key size is ignored when using the `Ed25519`\n                      key algorithm.\n                    enum:\n                    - RSA\n                    - ECDSA\n                    - Ed25519\n                    type: string\n                  encoding:\n                    description: The private key cryptography standards (PKCS) encoding\n                      for this certificate's private key to be encoded in. If provided,\n                      allowed values are `PKCS1` and `PKCS8` standing for PKCS#1 and\n                      PKCS#8, respectively. Defaults to `PKCS1` if not specified.\n                    enum:\n                    - PKCS1\n                    - PKCS8\n                    type: string\n                  rotationPolicy:\n                    description: RotationPolicy controls how private keys should be\n                      regenerated when a re-issuance is being processed. If set to\n                      Never, a private key will only be generated if one does not\n                      already exist in the target `spec.secretName`. If one does exists\n                      but it does not have the correct algorithm or size, a warning\n                      will be raised to await user intervention. If set to Always,\n                      a private key matching the specified requirements will be generated\n                      whenever a re-issuance occurs. Default is 'Never' for backward\n                      compatibility.\n                    enum:\n                    - Never\n                    - Always\n                    type: string\n                  size:\n                    description: Size is the key bit size of the corresponding private\n                      key for this certificate. If `algorithm` is set to `RSA`, valid\n                      values are `2048`, `4096` or `8192`, and will default to `2048`\n                      if not specified. If `algorithm` is set to `ECDSA`, valid values\n                      are `256`, `384` or `521`, and will default to `256` if not\n                      specified. If `algorithm` is set to `Ed25519`, Size is ignored.\n                      No other values are allowed.\n                    type: integer\n                type: object\n              renewBefore:\n                description: How long before the currently issued certificate's expiry\n                  cert-manager should renew the certificate. The default is 2/3 of\n                  the issued certificate's duration. Minimum accepted value is 5 minutes.\n                  Value must be in units accepted by Go time.ParseDuration https://golang.org/pkg/time/#ParseDuration\n                type: string\n              revisionHistoryLimit:\n                description: revisionHistoryLimit is the maximum number of CertificateRequest\n                  revisions that are maintained in the Certificate's history. Each\n                  revision represents a single `CertificateRequest` created by this\n                  Certificate, either when it was created, renewed, or Spec was changed.\n                  Revisions will be removed by oldest first if the number of revisions\n                  exceeds this number. If set, revisionHistoryLimit must be a value\n                  of `1` or greater. If unset (`nil`), revisions will not be garbage\n                  collected. Default value is `nil`.\n                format: int32\n                type: integer\n              secretName:\n                description: SecretName is the name of the secret resource that will\n                  be automatically created and managed by this Certificate resource.\n                  It will be populated with a private key and certificate, signed\n                  by the denoted issuer.\n                type: string\n              secretTemplate:\n                description: SecretTemplate defines annotations and labels to be copied\n                  to the Certificate's Secret. Labels and annotations on the Secret\n                  will be changed as they appear on the SecretTemplate when added\n                  or removed. SecretTemplate annotations are added in conjunction\n                  with, and cannot overwrite, the base set of annotations cert-manager\n                  sets on the Certificate's Secret.\n                properties:\n                  annotations:\n                    additionalProperties:\n                      type: string\n                    description: Annotations is a key value map to be copied to the\n                      target Kubernetes Secret.\n                    type: object\n                  labels:\n                    additionalProperties:\n                      type: string\n                    description: Labels is a key value map to be copied to the target\n                      Kubernetes Secret.\n                    type: object\n                type: object\n              subject:\n                description: Full X509 name specification (https://golang.org/pkg/crypto/x509/pkix/#Name).\n                properties:\n                  countries:\n                    description: Countries to be used on the Certificate.\n                    items:\n                      type: string\n                    type: array\n                  localities:\n                    description: Cities to be used on the Certificate.\n                    items:\n                      type: string\n                    type: array\n                  organizationalUnits:\n                    description: Organizational Units to be used on the Certificate.\n                    items:\n                      type: string\n                    type: array\n                  organizations:\n                    description: Organizations to be used on the Certificate.\n                    items:\n                      type: string\n                    type: array\n                  postalCodes:\n                    description: Postal codes to be used on the Certificate.\n                    items:\n                      type: string\n                    type: array\n                  provinces:\n                    description: State/Provinces to be used on the Certificate.\n                    items:\n                      type: string\n                    type: array\n                  serialNumber:\n                    description: Serial number to be used on the Certificate.\n                    type: string\n                  streetAddresses:\n                    description: Street addresses to be used on the Certificate.\n                    items:\n                      type: string\n                    type: array\n                type: object\n              uris:\n                description: URIs is a list of URI subjectAltNames to be set on the\n                  Certificate.\n                items:\n                  type: string\n                type: array\n              usages:\n                description: Usages is the set of x509 usages that are requested for\n                  the certificate. Defaults to `digital signature` and `key encipherment`\n                  if not specified.\n                items:\n                  description: \"KeyUsage specifies valid usage contexts for keys.\n                    See: https://tools.ietf.org/html/rfc5280#section-4.2.1.3 https://tools.ietf.org/html/rfc5280#section-4.2.1.12\n                    \\n Valid KeyUsage values are as follows: \\\"signing\\\", \\\"digital\n                    signature\\\", \\\"content commitment\\\", \\\"key encipherment\\\", \\\"key\n                    agreement\\\", \\\"data encipherment\\\", \\\"cert sign\\\", \\\"crl sign\\\",\n                    \\\"encipher only\\\", \\\"decipher only\\\", \\\"any\\\", \\\"server auth\\\",\n                    \\\"client auth\\\", \\\"code signing\\\", \\\"email protection\\\", \\\"s/mime\\\",\n                    \\\"ipsec end system\\\", \\\"ipsec tunnel\\\", \\\"ipsec user\\\", \\\"timestamping\\\",\n                    \\\"ocsp signing\\\", \\\"microsoft sgc\\\", \\\"netscape sgc\\\"\"\n                  enum:\n                  - signing\n                  - digital signature\n                  - content commitment\n                  - key encipherment\n                  - key agreement\n                  - data encipherment\n                  - cert sign\n                  - crl sign\n                  - encipher only\n                  - decipher only\n                  - any\n                  - server auth\n                  - client auth\n                  - code signing\n                  - email protection\n                  - s/mime\n                  - ipsec end system\n                  - ipsec tunnel\n                  - ipsec user\n                  - timestamping\n                  - ocsp signing\n                  - microsoft sgc\n                  - netscape sgc\n                  type: string\n                type: array\n            required:\n            - issuerRef\n            - secretName\n            type: object\n          status:\n            description: Status of the Certificate. This is set and managed automatically.\n            properties:\n              conditions:\n                description: List of status conditions to indicate the status of certificates.\n                  Known condition types are `Ready` and `Issuing`.\n                items:\n                  description: CertificateCondition contains condition information\n                    for an Certificate.\n                  properties:\n                    lastTransitionTime:\n                      description: LastTransitionTime is the timestamp corresponding\n                        to the last status change of this condition.\n                      format: date-time\n                      type: string\n                    message:\n                      description: Message is a human readable description of the\n                        details of the last transition, complementing reason.\n                      type: string\n                    observedGeneration:\n                      description: If set, this represents the .metadata.generation\n                        that the condition was set based upon. For instance, if .metadata.generation\n                        is currently 12, but the .status.condition[x].observedGeneration\n                        is 9, the condition is out of date with respect to the current\n                        state of the Certificate.\n                      format: int64\n                      type: integer\n                    reason:\n                      description: Reason is a brief machine readable explanation\n                        for the condition's last transition.\n                      type: string\n                    status:\n                      description: Status of the condition, one of (`True`, `False`,\n                        `Unknown`).\n                      enum:\n                      - \"True\"\n                      - \"False\"\n                      - Unknown\n                      type: string\n                    type:\n                      description: Type of the condition, known values are (`Ready`,\n                        `Issuing`).\n                      type: string\n                  required:\n                  - status\n                  - type\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - type\n                x-kubernetes-list-type: map\n              failedIssuanceAttempts:\n                description: The number of continuous failed issuance attempts up\n                  till now. This field gets removed (if set) on a successful issuance\n                  and gets set to 1 if unset and an issuance has failed. If an issuance\n                  has failed, the delay till the next issuance will be calculated\n                  using formula time.Hour * 2 ^ (failedIssuanceAttempts - 1).\n                type: integer\n              lastFailureTime:\n                description: LastFailureTime is set only if the lastest issuance for\n                  this Certificate failed and contains the time of the failure. If\n                  an issuance has failed, the delay till the next issuance will be\n                  calculated using formula time.Hour * 2 ^ (failedIssuanceAttempts\n                  - 1). If the latest issuance has succeeded this field will be unset.\n                format: date-time\n                type: string\n              nextPrivateKeySecretName:\n                description: The name of the Secret resource containing the private\n                  key to be used for the next certificate iteration. The keymanager\n                  controller will automatically set this field if the `Issuing` condition\n                  is set to `True`. It will automatically unset this field when the\n                  Issuing condition is not set or False.\n                type: string\n              notAfter:\n                description: The expiration time of the certificate stored in the\n                  secret named by this resource in `spec.secretName`.\n                format: date-time\n                type: string\n              notBefore:\n                description: The time after which the certificate stored in the secret\n                  named by this resource in spec.secretName is valid.\n                format: date-time\n                type: string\n              renewalTime:\n                description: RenewalTime is the time at which the certificate will\n                  be next renewed. If not set, no upcoming renewal is scheduled.\n                format: date-time\n                type: string\n              revision:\n                description: \"The current 'revision' of the certificate as issued.\n                  \\n When a CertificateRequest resource is created, it will have the\n                  `cert-manager.io/certificate-revision` set to one greater than the\n                  current value of this field. \\n Upon issuance, this field will be\n                  set to the value of the annotation on the CertificateRequest resource\n                  used to issue the certificate. \\n Persisting the value on the CertificateRequest\n                  resource allows the certificates controller to know whether a request\n                  is part of an old issuance or if it is part of the ongoing revision's\n                  issuance by checking if the revision value in the annotation is\n                  greater than this field.\"\n                type: integer\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n    subresources:\n      status: {}\n---\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  labels:\n    app: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: challenges.acme.cert-manager.io\nspec:\n  group: acme.cert-manager.io\n  names:\n    categories:\n    - cert-manager\n    - cert-manager-acme\n    kind: Challenge\n    listKind: ChallengeList\n    plural: challenges\n    singular: challenge\n  scope: Namespaced\n  versions:\n  - additionalPrinterColumns:\n    - jsonPath: .status.state\n      name: State\n      type: string\n    - jsonPath: .spec.dnsName\n      name: Domain\n      type: string\n    - jsonPath: .status.reason\n      name: Reason\n      priority: 1\n      type: string\n    - description: CreationTimestamp is a timestamp representing the server time when\n        this object was created. It is not guaranteed to be set in happens-before\n        order across separate operations. Clients may not set this value. It is represented\n        in RFC3339 form and is in UTC.\n      jsonPath: .metadata.creationTimestamp\n      name: Age\n      type: date\n    name: v1\n    schema:\n      openAPIV3Schema:\n        description: Challenge is a type to represent a Challenge request with an\n          ACME server\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            properties:\n              authorizationURL:\n                description: The URL to the ACME Authorization resource that this\n                  challenge is a part of.\n                type: string\n              dnsName:\n                description: dnsName is the identifier that this challenge is for,\n                  e.g. example.com. If the requested DNSName is a 'wildcard', this\n                  field MUST be set to the non-wildcard domain, e.g. for `*.example.com`,\n                  it must be `example.com`.\n                type: string\n              issuerRef:\n                description: References a properly configured ACME-type Issuer which\n                  should be used to create this Challenge. If the Issuer does not\n                  exist, processing will be retried. If the Issuer is not an 'ACME'\n                  Issuer, an error will be returned and the Challenge will be marked\n                  as failed.\n                properties:\n                  group:\n                    description: Group of the resource being referred to.\n                    type: string\n                  kind:\n                    description: Kind of the resource being referred to.\n                    type: string\n                  name:\n                    description: Name of the resource being referred to.\n                    type: string\n                required:\n                - name\n                type: object\n              key:\n                description: 'The ACME challenge key for this challenge For HTTP01\n                  challenges, this is the value that must be responded with to complete\n                  the HTTP01 challenge in the format: `<private key JWK thumbprint>.<key\n                  from acme server for challenge>`. For DNS01 challenges, this is\n                  the base64 encoded SHA256 sum of the `<private key JWK thumbprint>.<key\n                  from acme server for challenge>` text that must be set as the TXT\n                  record content.'\n                type: string\n              solver:\n                description: Contains the domain solving configuration that should\n                  be used to solve this challenge resource.\n                properties:\n                  dns01:\n                    description: Configures cert-manager to attempt to complete authorizations\n                      by performing the DNS01 challenge flow.\n                    properties:\n                      acmeDNS:\n                        description: Use the 'ACME DNS' (https://github.com/joohoi/acme-dns)\n                          API to manage DNS01 challenge records.\n                        properties:\n                          accountSecretRef:\n                            description: A reference to a specific 'key' within a\n                              Secret resource. In some instances, `key` is a required\n                              field.\n                            properties:\n                              key:\n                                description: The key of the entry in the Secret resource's\n                                  `data` field to be used. Some instances of this\n                                  field may be defaulted, in others it may be required.\n                                type: string\n                              name:\n                                description: 'Name of the resource being referred\n                                  to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                type: string\n                            required:\n                            - name\n                            type: object\n                          host:\n                            type: string\n                        required:\n                        - accountSecretRef\n                        - host\n                        type: object\n                      akamai:\n                        description: Use the Akamai DNS zone management API to manage\n                          DNS01 challenge records.\n                        properties:\n                          accessTokenSecretRef:\n                            description: A reference to a specific 'key' within a\n                              Secret resource. In some instances, `key` is a required\n                              field.\n                            properties:\n                              key:\n                                description: The key of the entry in the Secret resource's\n                                  `data` field to be used. Some instances of this\n                                  field may be defaulted, in others it may be required.\n                                type: string\n                              name:\n                                description: 'Name of the resource being referred\n                                  to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                type: string\n                            required:\n                            - name\n                            type: object\n                          clientSecretSecretRef:\n                            description: A reference to a specific 'key' within a\n                              Secret resource. In some instances, `key` is a required\n                              field.\n                            properties:\n                              key:\n                                description: The key of the entry in the Secret resource's\n                                  `data` field to be used. Some instances of this\n                                  field may be defaulted, in others it may be required.\n                                type: string\n                              name:\n                                description: 'Name of the resource being referred\n                                  to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                type: string\n                            required:\n                            - name\n                            type: object\n                          clientTokenSecretRef:\n                            description: A reference to a specific 'key' within a\n                              Secret resource. In some instances, `key` is a required\n                              field.\n                            properties:\n                              key:\n                                description: The key of the entry in the Secret resource's\n                                  `data` field to be used. Some instances of this\n                                  field may be defaulted, in others it may be required.\n                                type: string\n                              name:\n                                description: 'Name of the resource being referred\n                                  to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                type: string\n                            required:\n                            - name\n                            type: object\n                          serviceConsumerDomain:\n                            type: string\n                        required:\n                        - accessTokenSecretRef\n                        - clientSecretSecretRef\n                        - clientTokenSecretRef\n                        - serviceConsumerDomain\n                        type: object\n                      azureDNS:\n                        description: Use the Microsoft Azure DNS API to manage DNS01\n                          challenge records.\n                        properties:\n                          clientID:\n                            description: if both this and ClientSecret are left unset\n                              MSI will be used\n                            type: string\n                          clientSecretSecretRef:\n                            description: if both this and ClientID are left unset\n                              MSI will be used\n                            properties:\n                              key:\n                                description: The key of the entry in the Secret resource's\n                                  `data` field to be used. Some instances of this\n                                  field may be defaulted, in others it may be required.\n                                type: string\n                              name:\n                                description: 'Name of the resource being referred\n                                  to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                type: string\n                            required:\n                            - name\n                            type: object\n                          environment:\n                            description: name of the Azure environment (default AzurePublicCloud)\n                            enum:\n                            - AzurePublicCloud\n                            - AzureChinaCloud\n                            - AzureGermanCloud\n                            - AzureUSGovernmentCloud\n                            type: string\n                          hostedZoneName:\n                            description: name of the DNS zone that should be used\n                            type: string\n                          managedIdentity:\n                            description: managed identity configuration, can not be\n                              used at the same time as clientID, clientSecretSecretRef\n                              or tenantID\n                            properties:\n                              clientID:\n                                description: client ID of the managed identity, can\n                                  not be used at the same time as resourceID\n                                type: string\n                              resourceID:\n                                description: resource ID of the managed identity,\n                                  can not be used at the same time as clientID\n                                type: string\n                            type: object\n                          resourceGroupName:\n                            description: resource group the DNS zone is located in\n                            type: string\n                          subscriptionID:\n                            description: ID of the Azure subscription\n                            type: string\n                          tenantID:\n                            description: when specifying ClientID and ClientSecret\n                              then this field is also needed\n                            type: string\n                        required:\n                        - resourceGroupName\n                        - subscriptionID\n                        type: object\n                      cloudDNS:\n                        description: Use the Google Cloud DNS API to manage DNS01\n                          challenge records.\n                        properties:\n                          hostedZoneName:\n                            description: HostedZoneName is an optional field that\n                              tells cert-manager in which Cloud DNS zone the challenge\n                              record has to be created. If left empty cert-manager\n                              will automatically choose a zone.\n                            type: string\n                          project:\n                            type: string\n                          serviceAccountSecretRef:\n                            description: A reference to a specific 'key' within a\n                              Secret resource. In some instances, `key` is a required\n                              field.\n                            properties:\n                              key:\n                                description: The key of the entry in the Secret resource's\n                                  `data` field to be used. Some instances of this\n                                  field may be defaulted, in others it may be required.\n                                type: string\n                              name:\n                                description: 'Name of the resource being referred\n                                  to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                type: string\n                            required:\n                            - name\n                            type: object\n                        required:\n                        - project\n                        type: object\n                      cloudflare:\n                        description: Use the Cloudflare API to manage DNS01 challenge\n                          records.\n                        properties:\n                          apiKeySecretRef:\n                            description: 'API key to use to authenticate with Cloudflare.\n                              Note: using an API token to authenticate is now the\n                              recommended method as it allows greater control of permissions.'\n                            properties:\n                              key:\n                                description: The key of the entry in the Secret resource's\n                                  `data` field to be used. Some instances of this\n                                  field may be defaulted, in others it may be required.\n                                type: string\n                              name:\n                                description: 'Name of the resource being referred\n                                  to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                type: string\n                            required:\n                            - name\n                            type: object\n                          apiTokenSecretRef:\n                            description: API token used to authenticate with Cloudflare.\n                            properties:\n                              key:\n                                description: The key of the entry in the Secret resource's\n                                  `data` field to be used. Some instances of this\n                                  field may be defaulted, in others it may be required.\n                                type: string\n                              name:\n                                description: 'Name of the resource being referred\n                                  to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                type: string\n                            required:\n                            - name\n                            type: object\n                          email:\n                            description: Email of the account, only required when\n                              using API key based authentication.\n                            type: string\n                        type: object\n                      cnameStrategy:\n                        description: CNAMEStrategy configures how the DNS01 provider\n                          should handle CNAME records when found in DNS zones.\n                        enum:\n                        - None\n                        - Follow\n                        type: string\n                      digitalocean:\n                        description: Use the DigitalOcean DNS API to manage DNS01\n                          challenge records.\n                        properties:\n                          tokenSecretRef:\n                            description: A reference to a specific 'key' within a\n                              Secret resource. In some instances, `key` is a required\n                              field.\n                            properties:\n                              key:\n                                description: The key of the entry in the Secret resource's\n                                  `data` field to be used. Some instances of this\n                                  field may be defaulted, in others it may be required.\n                                type: string\n                              name:\n                                description: 'Name of the resource being referred\n                                  to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                type: string\n                            required:\n                            - name\n                            type: object\n                        required:\n                        - tokenSecretRef\n                        type: object\n                      rfc2136:\n                        description: Use RFC2136 (\"Dynamic Updates in the Domain Name\n                          System\") (https://datatracker.ietf.org/doc/rfc2136/) to\n                          manage DNS01 challenge records.\n                        properties:\n                          nameserver:\n                            description: The IP address or hostname of an authoritative\n                              DNS server supporting RFC2136 in the form host:port.\n                              If the host is an IPv6 address it must be enclosed in\n                              square brackets (e.g [2001:db8::1]) ; port is optional.\n                              This field is required.\n                            type: string\n                          tsigAlgorithm:\n                            description: 'The TSIG Algorithm configured in the DNS\n                              supporting RFC2136. Used only when ``tsigSecretSecretRef``\n                              and ``tsigKeyName`` are defined. Supported values are\n                              (case-insensitive): ``HMACMD5`` (default), ``HMACSHA1``,\n                              ``HMACSHA256`` or ``HMACSHA512``.'\n                            type: string\n                          tsigKeyName:\n                            description: The TSIG Key name configured in the DNS.\n                              If ``tsigSecretSecretRef`` is defined, this field is\n                              required.\n                            type: string\n                          tsigSecretSecretRef:\n                            description: The name of the secret containing the TSIG\n                              value. If ``tsigKeyName`` is defined, this field is\n                              required.\n                            properties:\n                              key:\n                                description: The key of the entry in the Secret resource's\n                                  `data` field to be used. Some instances of this\n                                  field may be defaulted, in others it may be required.\n                                type: string\n                              name:\n                                description: 'Name of the resource being referred\n                                  to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                type: string\n                            required:\n                            - name\n                            type: object\n                        required:\n                        - nameserver\n                        type: object\n                      route53:\n                        description: Use the AWS Route53 API to manage DNS01 challenge\n                          records.\n                        properties:\n                          accessKeyID:\n                            description: 'The AccessKeyID is used for authentication.\n                              Cannot be set when SecretAccessKeyID is set. If neither\n                              the Access Key nor Key ID are set, we fall-back to using\n                              env vars, shared credentials file or AWS Instance metadata,\n                              see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials'\n                            type: string\n                          accessKeyIDSecretRef:\n                            description: 'The SecretAccessKey is used for authentication.\n                              If set, pull the AWS access key ID from a key within\n                              a Kubernetes Secret. Cannot be set when AccessKeyID\n                              is set. If neither the Access Key nor Key ID are set,\n                              we fall-back to using env vars, shared credentials file\n                              or AWS Instance metadata, see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials'\n                            properties:\n                              key:\n                                description: The key of the entry in the Secret resource's\n                                  `data` field to be used. Some instances of this\n                                  field may be defaulted, in others it may be required.\n                                type: string\n                              name:\n                                description: 'Name of the resource being referred\n                                  to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                type: string\n                            required:\n                            - name\n                            type: object\n                          hostedZoneID:\n                            description: If set, the provider will manage only this\n                              zone in Route53 and will not do an lookup using the\n                              route53:ListHostedZonesByName api call.\n                            type: string\n                          region:\n                            description: Always set the region when using AccessKeyID\n                              and SecretAccessKey\n                            type: string\n                          role:\n                            description: Role is a Role ARN which the Route53 provider\n                              will assume using either the explicit credentials AccessKeyID/SecretAccessKey\n                              or the inferred credentials from environment variables,\n                              shared credentials file or AWS Instance metadata\n                            type: string\n                          secretAccessKeySecretRef:\n                            description: 'The SecretAccessKey is used for authentication.\n                              If neither the Access Key nor Key ID are set, we fall-back\n                              to using env vars, shared credentials file or AWS Instance\n                              metadata, see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials'\n                            properties:\n                              key:\n                                description: The key of the entry in the Secret resource's\n                                  `data` field to be used. Some instances of this\n                                  field may be defaulted, in others it may be required.\n                                type: string\n                              name:\n                                description: 'Name of the resource being referred\n                                  to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                type: string\n                            required:\n                            - name\n                            type: object\n                        required:\n                        - region\n                        type: object\n                      webhook:\n                        description: Configure an external webhook based DNS01 challenge\n                          solver to manage DNS01 challenge records.\n                        properties:\n                          config:\n                            description: Additional configuration that should be passed\n                              to the webhook apiserver when challenges are processed.\n                              This can contain arbitrary JSON data. Secret values\n                              should not be specified in this stanza. If secret values\n                              are needed (e.g. credentials for a DNS service), you\n                              should use a SecretKeySelector to reference a Secret\n                              resource. For details on the schema of this field, consult\n                              the webhook provider implementation's documentation.\n                            x-kubernetes-preserve-unknown-fields: true\n                          groupName:\n                            description: The API group name that should be used when\n                              POSTing ChallengePayload resources to the webhook apiserver.\n                              This should be the same as the GroupName specified in\n                              the webhook provider implementation.\n                            type: string\n                          solverName:\n                            description: The name of the solver to use, as defined\n                              in the webhook provider implementation. This will typically\n                              be the name of the provider, e.g. 'cloudflare'.\n                            type: string\n                        required:\n                        - groupName\n                        - solverName\n                        type: object\n                    type: object\n                  http01:\n                    description: Configures cert-manager to attempt to complete authorizations\n                      by performing the HTTP01 challenge flow. It is not possible\n                      to obtain certificates for wildcard domain names (e.g. `*.example.com`)\n                      using the HTTP01 challenge mechanism.\n                    properties:\n                      gatewayHTTPRoute:\n                        description: The Gateway API is a sig-network community API\n                          that models service networking in Kubernetes (https://gateway-api.sigs.k8s.io/).\n                          The Gateway solver will create HTTPRoutes with the specified\n                          labels in the same namespace as the challenge. This solver\n                          is experimental, and fields / behaviour may change in the\n                          future.\n                        properties:\n                          labels:\n                            additionalProperties:\n                              type: string\n                            description: Custom labels that will be applied to HTTPRoutes\n                              created by cert-manager while solving HTTP-01 challenges.\n                            type: object\n                          parentRefs:\n                            description: 'When solving an HTTP-01 challenge, cert-manager\n                              creates an HTTPRoute. cert-manager needs to know which\n                              parentRefs should be used when creating the HTTPRoute.\n                              Usually, the parentRef references a Gateway. See: https://gateway-api.sigs.k8s.io/api-types/httproute/#attaching-to-gateways'\n                            items:\n                              description: \"ParentReference identifies an API object\n                                (usually a Gateway) that can be considered a parent\n                                of this resource (usually a route). The only kind\n                                of parent resource with \\\"Core\\\" support is Gateway.\n                                This API may be extended in the future to support\n                                additional kinds of parent resources, such as HTTPRoute.\n                                \\n The API object must be valid in the cluster; the\n                                Group and Kind must be registered in the cluster for\n                                this reference to be valid.\"\n                              properties:\n                                group:\n                                  default: gateway.networking.k8s.io\n                                  description: \"Group is the group of the referent.\n                                    When unspecified, \\\"gateway.networking.k8s.io\\\"\n                                    is inferred. To set the core API group (such as\n                                    for a \\\"Service\\\" kind referent), Group must be\n                                    explicitly set to \\\"\\\" (empty string). \\n Support:\n                                    Core\"\n                                  maxLength: 253\n                                  pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$\n                                  type: string\n                                kind:\n                                  default: Gateway\n                                  description: \"Kind is kind of the referent. \\n Support:\n                                    Core (Gateway) \\n Support: Implementation-specific\n                                    (Other Resources)\"\n                                  maxLength: 63\n                                  minLength: 1\n                                  pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$\n                                  type: string\n                                name:\n                                  description: \"Name is the name of the referent.\n                                    \\n Support: Core\"\n                                  maxLength: 253\n                                  minLength: 1\n                                  type: string\n                                namespace:\n                                  description: \"Namespace is the namespace of the\n                                    referent. When unspecified, this refers to the\n                                    local namespace of the Route. \\n Note that there\n                                    are specific rules for ParentRefs which cross\n                                    namespace boundaries. Cross-namespace references\n                                    are only valid if they are explicitly allowed\n                                    by something in the namespace they are referring\n                                    to. For example: Gateway has the AllowedRoutes\n                                    field, and ReferenceGrant provides a generic way\n                                    to enable any other kind of cross-namespace reference.\n                                    \\n Support: Core\"\n                                  maxLength: 63\n                                  minLength: 1\n                                  pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$\n                                  type: string\n                                port:\n                                  description: \"Port is the network port this Route\n                                    targets. It can be interpreted differently based\n                                    on the type of parent resource. \\n When the parent\n                                    resource is a Gateway, this targets all listeners\n                                    listening on the specified port that also support\n                                    this kind of Route(and select this Route). It's\n                                    not recommended to set `Port` unless the networking\n                                    behaviors specified in a Route must apply to a\n                                    specific port as opposed to a listener(s) whose\n                                    port(s) may be changed. When both Port and SectionName\n                                    are specified, the name and port of the selected\n                                    listener must match both specified values. \\n\n                                    Implementations MAY choose to support other parent\n                                    resources. Implementations supporting other types\n                                    of parent resources MUST clearly document how/if\n                                    Port is interpreted. \\n For the purpose of status,\n                                    an attachment is considered successful as long\n                                    as the parent resource accepts it partially. For\n                                    example, Gateway listeners can restrict which\n                                    Routes can attach to them by Route kind, namespace,\n                                    or hostname. If 1 of 2 Gateway listeners accept\n                                    attachment from the referencing Route, the Route\n                                    MUST be considered successfully attached. If no\n                                    Gateway listeners accept attachment from this\n                                    Route, the Route MUST be considered detached from\n                                    the Gateway. \\n Support: Extended \\n <gateway:experimental>\"\n                                  format: int32\n                                  maximum: 65535\n                                  minimum: 1\n                                  type: integer\n                                sectionName:\n                                  description: \"SectionName is the name of a section\n                                    within the target resource. In the following resources,\n                                    SectionName is interpreted as the following: \\n\n                                    * Gateway: Listener Name. When both Port (experimental)\n                                    and SectionName are specified, the name and port\n                                    of the selected listener must match both specified\n                                    values. \\n Implementations MAY choose to support\n                                    attaching Routes to other resources. If that is\n                                    the case, they MUST clearly document how SectionName\n                                    is interpreted. \\n When unspecified (empty string),\n                                    this will reference the entire resource. For the\n                                    purpose of status, an attachment is considered\n                                    successful if at least one section in the parent\n                                    resource accepts it. For example, Gateway listeners\n                                    can restrict which Routes can attach to them by\n                                    Route kind, namespace, or hostname. If 1 of 2\n                                    Gateway listeners accept attachment from the referencing\n                                    Route, the Route MUST be considered successfully\n                                    attached. If no Gateway listeners accept attachment\n                                    from this Route, the Route MUST be considered\n                                    detached from the Gateway. \\n Support: Core\"\n                                  maxLength: 253\n                                  minLength: 1\n                                  pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$\n                                  type: string\n                              required:\n                              - name\n                              type: object\n                            type: array\n                          serviceType:\n                            description: Optional service type for Kubernetes solver\n                              service. Supported values are NodePort or ClusterIP.\n                              If unset, defaults to NodePort.\n                            type: string\n                        type: object\n                      ingress:\n                        description: The ingress based HTTP01 challenge solver will\n                          solve challenges by creating or modifying Ingress resources\n                          in order to route requests for '/.well-known/acme-challenge/XYZ'\n                          to 'challenge solver' pods that are provisioned by cert-manager\n                          for each Challenge to be completed.\n                        properties:\n                          class:\n                            description: This field configures the annotation `kubernetes.io/ingress.class`\n                              when creating Ingress resources to solve ACME challenges\n                              that use this challenge solver. Only one of `class`,\n                              `name` or `ingressClassName` may be specified.\n                            type: string\n                          ingressClassName:\n                            description: This field configures the field `ingressClassName`\n                              on the created Ingress resources used to solve ACME\n                              challenges that use this challenge solver. This is the\n                              recommended way of configuring the ingress class. Only\n                              one of `class`, `name` or `ingressClassName` may be\n                              specified.\n                            type: string\n                          ingressTemplate:\n                            description: Optional ingress template used to configure\n                              the ACME challenge solver ingress used for HTTP01 challenges.\n                            properties:\n                              metadata:\n                                description: ObjectMeta overrides for the ingress\n                                  used to solve HTTP01 challenges. Only the 'labels'\n                                  and 'annotations' fields may be set. If labels or\n                                  annotations overlap with in-built values, the values\n                                  here will override the in-built values.\n                                properties:\n                                  annotations:\n                                    additionalProperties:\n                                      type: string\n                                    description: Annotations that should be added\n                                      to the created ACME HTTP01 solver ingress.\n                                    type: object\n                                  labels:\n                                    additionalProperties:\n                                      type: string\n                                    description: Labels that should be added to the\n                                      created ACME HTTP01 solver ingress.\n                                    type: object\n                                type: object\n                            type: object\n                          name:\n                            description: The name of the ingress resource that should\n                              have ACME challenge solving routes inserted into it\n                              in order to solve HTTP01 challenges. This is typically\n                              used in conjunction with ingress controllers like ingress-gce,\n                              which maintains a 1:1 mapping between external IPs and\n                              ingress resources. Only one of `class`, `name` or `ingressClassName`\n                              may be specified.\n                            type: string\n                          podTemplate:\n                            description: Optional pod template used to configure the\n                              ACME challenge solver pods used for HTTP01 challenges.\n                            properties:\n                              metadata:\n                                description: ObjectMeta overrides for the pod used\n                                  to solve HTTP01 challenges. Only the 'labels' and\n                                  'annotations' fields may be set. If labels or annotations\n                                  overlap with in-built values, the values here will\n                                  override the in-built values.\n                                properties:\n                                  annotations:\n                                    additionalProperties:\n                                      type: string\n                                    description: Annotations that should be added\n                                      to the create ACME HTTP01 solver pods.\n                                    type: object\n                                  labels:\n                                    additionalProperties:\n                                      type: string\n                                    description: Labels that should be added to the\n                                      created ACME HTTP01 solver pods.\n                                    type: object\n                                type: object\n                              spec:\n                                description: PodSpec defines overrides for the HTTP01\n                                  challenge solver pod. Check ACMEChallengeSolverHTTP01IngressPodSpec\n                                  to find out currently supported fields. All other\n                                  fields will be ignored.\n                                properties:\n                                  affinity:\n                                    description: If specified, the pod's scheduling\n                                      constraints\n                                    properties:\n                                      nodeAffinity:\n                                        description: Describes node affinity scheduling\n                                          rules for the pod.\n                                        properties:\n                                          preferredDuringSchedulingIgnoredDuringExecution:\n                                            description: The scheduler will prefer\n                                              to schedule pods to nodes that satisfy\n                                              the affinity expressions specified by\n                                              this field, but it may choose a node\n                                              that violates one or more of the expressions.\n                                              The node that is most preferred is the\n                                              one with the greatest sum of weights,\n                                              i.e. for each node that meets all of\n                                              the scheduling requirements (resource\n                                              request, requiredDuringScheduling affinity\n                                              expressions, etc.), compute a sum by\n                                              iterating through the elements of this\n                                              field and adding \"weight\" to the sum\n                                              if the node matches the corresponding\n                                              matchExpressions; the node(s) with the\n                                              highest sum are the most preferred.\n                                            items:\n                                              description: An empty preferred scheduling\n                                                term matches all objects with implicit\n                                                weight 0 (i.e. it's a no-op). A null\n                                                preferred scheduling term matches\n                                                no objects (i.e. is also a no-op).\n                                              properties:\n                                                preference:\n                                                  description: A node selector term,\n                                                    associated with the corresponding\n                                                    weight.\n                                                  properties:\n                                                    matchExpressions:\n                                                      description: A list of node\n                                                        selector requirements by node's\n                                                        labels.\n                                                      items:\n                                                        description: A node selector\n                                                          requirement is a selector\n                                                          that contains values, a\n                                                          key, and an operator that\n                                                          relates the key and values.\n                                                        properties:\n                                                          key:\n                                                            description: The label\n                                                              key that the selector\n                                                              applies to.\n                                                            type: string\n                                                          operator:\n                                                            description: Represents\n                                                              a key's relationship\n                                                              to a set of values.\n                                                              Valid operators are\n                                                              In, NotIn, Exists, DoesNotExist.\n                                                              Gt, and Lt.\n                                                            type: string\n                                                          values:\n                                                            description: An array\n                                                              of string values. If\n                                                              the operator is In or\n                                                              NotIn, the values array\n                                                              must be non-empty. If\n                                                              the operator is Exists\n                                                              or DoesNotExist, the\n                                                              values array must be\n                                                              empty. If the operator\n                                                              is Gt or Lt, the values\n                                                              array must have a single\n                                                              element, which will\n                                                              be interpreted as an\n                                                              integer. This array\n                                                              is replaced during a\n                                                              strategic merge patch.\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                        required:\n                                                        - key\n                                                        - operator\n                                                        type: object\n                                                      type: array\n                                                    matchFields:\n                                                      description: A list of node\n                                                        selector requirements by node's\n                                                        fields.\n                                                      items:\n                                                        description: A node selector\n                                                          requirement is a selector\n                                                          that contains values, a\n                                                          key, and an operator that\n                                                          relates the key and values.\n                                                        properties:\n                                                          key:\n                                                            description: The label\n                                                              key that the selector\n                                                              applies to.\n                                                            type: string\n                                                          operator:\n                                                            description: Represents\n                                                              a key's relationship\n                                                              to a set of values.\n                                                              Valid operators are\n                                                              In, NotIn, Exists, DoesNotExist.\n                                                              Gt, and Lt.\n                                                            type: string\n                                                          values:\n                                                            description: An array\n                                                              of string values. If\n                                                              the operator is In or\n                                                              NotIn, the values array\n                                                              must be non-empty. If\n                                                              the operator is Exists\n                                                              or DoesNotExist, the\n                                                              values array must be\n                                                              empty. If the operator\n                                                              is Gt or Lt, the values\n                                                              array must have a single\n                                                              element, which will\n                                                              be interpreted as an\n                                                              integer. This array\n                                                              is replaced during a\n                                                              strategic merge patch.\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                        required:\n                                                        - key\n                                                        - operator\n                                                        type: object\n                                                      type: array\n                                                  type: object\n                                                  x-kubernetes-map-type: atomic\n                                                weight:\n                                                  description: Weight associated with\n                                                    matching the corresponding nodeSelectorTerm,\n                                                    in the range 1-100.\n                                                  format: int32\n                                                  type: integer\n                                              required:\n                                              - preference\n                                              - weight\n                                              type: object\n                                            type: array\n                                          requiredDuringSchedulingIgnoredDuringExecution:\n                                            description: If the affinity requirements\n                                              specified by this field are not met\n                                              at scheduling time, the pod will not\n                                              be scheduled onto the node. If the affinity\n                                              requirements specified by this field\n                                              cease to be met at some point during\n                                              pod execution (e.g. due to an update),\n                                              the system may or may not try to eventually\n                                              evict the pod from its node.\n                                            properties:\n                                              nodeSelectorTerms:\n                                                description: Required. A list of node\n                                                  selector terms. The terms are ORed.\n                                                items:\n                                                  description: A null or empty node\n                                                    selector term matches no objects.\n                                                    The requirements of them are ANDed.\n                                                    The TopologySelectorTerm type\n                                                    implements a subset of the NodeSelectorTerm.\n                                                  properties:\n                                                    matchExpressions:\n                                                      description: A list of node\n                                                        selector requirements by node's\n                                                        labels.\n                                                      items:\n                                                        description: A node selector\n                                                          requirement is a selector\n                                                          that contains values, a\n                                                          key, and an operator that\n                                                          relates the key and values.\n                                                        properties:\n                                                          key:\n                                                            description: The label\n                                                              key that the selector\n                                                              applies to.\n                                                            type: string\n                                                          operator:\n                                                            description: Represents\n                                                              a key's relationship\n                                                              to a set of values.\n                                                              Valid operators are\n                                                              In, NotIn, Exists, DoesNotExist.\n                                                              Gt, and Lt.\n                                                            type: string\n                                                          values:\n                                                            description: An array\n                                                              of string values. If\n                                                              the operator is In or\n                                                              NotIn, the values array\n                                                              must be non-empty. If\n                                                              the operator is Exists\n                                                              or DoesNotExist, the\n                                                              values array must be\n                                                              empty. If the operator\n                                                              is Gt or Lt, the values\n                                                              array must have a single\n                                                              element, which will\n                                                              be interpreted as an\n                                                              integer. This array\n                                                              is replaced during a\n                                                              strategic merge patch.\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                        required:\n                                                        - key\n                                                        - operator\n                                                        type: object\n                                                      type: array\n                                                    matchFields:\n                                                      description: A list of node\n                                                        selector requirements by node's\n                                                        fields.\n                                                      items:\n                                                        description: A node selector\n                                                          requirement is a selector\n                                                          that contains values, a\n                                                          key, and an operator that\n                                                          relates the key and values.\n                                                        properties:\n                                                          key:\n                                                            description: The label\n                                                              key that the selector\n                                                              applies to.\n                                                            type: string\n                                                          operator:\n                                                            description: Represents\n                                                              a key's relationship\n                                                              to a set of values.\n                                                              Valid operators are\n                                                              In, NotIn, Exists, DoesNotExist.\n                                                              Gt, and Lt.\n                                                            type: string\n                                                          values:\n                                                            description: An array\n                                                              of string values. If\n                                                              the operator is In or\n                                                              NotIn, the values array\n                                                              must be non-empty. If\n                                                              the operator is Exists\n                                                              or DoesNotExist, the\n                                                              values array must be\n                                                              empty. If the operator\n                                                              is Gt or Lt, the values\n                                                              array must have a single\n                                                              element, which will\n                                                              be interpreted as an\n                                                              integer. This array\n                                                              is replaced during a\n                                                              strategic merge patch.\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                        required:\n                                                        - key\n                                                        - operator\n                                                        type: object\n                                                      type: array\n                                                  type: object\n                                                  x-kubernetes-map-type: atomic\n                                                type: array\n                                            required:\n                                            - nodeSelectorTerms\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                        type: object\n                                      podAffinity:\n                                        description: Describes pod affinity scheduling\n                                          rules (e.g. co-locate this pod in the same\n                                          node, zone, etc. as some other pod(s)).\n                                        properties:\n                                          preferredDuringSchedulingIgnoredDuringExecution:\n                                            description: The scheduler will prefer\n                                              to schedule pods to nodes that satisfy\n                                              the affinity expressions specified by\n                                              this field, but it may choose a node\n                                              that violates one or more of the expressions.\n                                              The node that is most preferred is the\n                                              one with the greatest sum of weights,\n                                              i.e. for each node that meets all of\n                                              the scheduling requirements (resource\n                                              request, requiredDuringScheduling affinity\n                                              expressions, etc.), compute a sum by\n                                              iterating through the elements of this\n                                              field and adding \"weight\" to the sum\n                                              if the node has pods which matches the\n                                              corresponding podAffinityTerm; the node(s)\n                                              with the highest sum are the most preferred.\n                                            items:\n                                              description: The weights of all of the\n                                                matched WeightedPodAffinityTerm fields\n                                                are added per-node to find the most\n                                                preferred node(s)\n                                              properties:\n                                                podAffinityTerm:\n                                                  description: Required. A pod affinity\n                                                    term, associated with the corresponding\n                                                    weight.\n                                                  properties:\n                                                    labelSelector:\n                                                      description: A label query over\n                                                        a set of resources, in this\n                                                        case pods.\n                                                      properties:\n                                                        matchExpressions:\n                                                          description: matchExpressions\n                                                            is a list of label selector\n                                                            requirements. The requirements\n                                                            are ANDed.\n                                                          items:\n                                                            description: A label selector\n                                                              requirement is a selector\n                                                              that contains values,\n                                                              a key, and an operator\n                                                              that relates the key\n                                                              and values.\n                                                            properties:\n                                                              key:\n                                                                description: key is\n                                                                  the label key that\n                                                                  the selector applies\n                                                                  to.\n                                                                type: string\n                                                              operator:\n                                                                description: operator\n                                                                  represents a key's\n                                                                  relationship to\n                                                                  a set of values.\n                                                                  Valid operators\n                                                                  are In, NotIn, Exists\n                                                                  and DoesNotExist.\n                                                                type: string\n                                                              values:\n                                                                description: values\n                                                                  is an array of string\n                                                                  values. If the operator\n                                                                  is In or NotIn,\n                                                                  the values array\n                                                                  must be non-empty.\n                                                                  If the operator\n                                                                  is Exists or DoesNotExist,\n                                                                  the values array\n                                                                  must be empty. This\n                                                                  array is replaced\n                                                                  during a strategic\n                                                                  merge patch.\n                                                                items:\n                                                                  type: string\n                                                                type: array\n                                                            required:\n                                                            - key\n                                                            - operator\n                                                            type: object\n                                                          type: array\n                                                        matchLabels:\n                                                          additionalProperties:\n                                                            type: string\n                                                          description: matchLabels\n                                                            is a map of {key,value}\n                                                            pairs. A single {key,value}\n                                                            in the matchLabels map\n                                                            is equivalent to an element\n                                                            of matchExpressions, whose\n                                                            key field is \"key\", the\n                                                            operator is \"In\", and\n                                                            the values array contains\n                                                            only \"value\". The requirements\n                                                            are ANDed.\n                                                          type: object\n                                                      type: object\n                                                      x-kubernetes-map-type: atomic\n                                                    namespaceSelector:\n                                                      description: A label query over\n                                                        the set of namespaces that\n                                                        the term applies to. The term\n                                                        is applied to the union of\n                                                        the namespaces selected by\n                                                        this field and the ones listed\n                                                        in the namespaces field. null\n                                                        selector and null or empty\n                                                        namespaces list means \"this\n                                                        pod's namespace\". An empty\n                                                        selector ({}) matches all\n                                                        namespaces.\n                                                      properties:\n                                                        matchExpressions:\n                                                          description: matchExpressions\n                                                            is a list of label selector\n                                                            requirements. The requirements\n                                                            are ANDed.\n                                                          items:\n                                                            description: A label selector\n                                                              requirement is a selector\n                                                              that contains values,\n                                                              a key, and an operator\n                                                              that relates the key\n                                                              and values.\n                                                            properties:\n                                                              key:\n                                                                description: key is\n                                                                  the label key that\n                                                                  the selector applies\n                                                                  to.\n                                                                type: string\n                                                              operator:\n                                                                description: operator\n                                                                  represents a key's\n                                                                  relationship to\n                                                                  a set of values.\n                                                                  Valid operators\n                                                                  are In, NotIn, Exists\n                                                                  and DoesNotExist.\n                                                                type: string\n                                                              values:\n                                                                description: values\n                                                                  is an array of string\n                                                                  values. If the operator\n                                                                  is In or NotIn,\n                                                                  the values array\n                                                                  must be non-empty.\n                                                                  If the operator\n                                                                  is Exists or DoesNotExist,\n                                                                  the values array\n                                                                  must be empty. This\n                                                                  array is replaced\n                                                                  during a strategic\n                                                                  merge patch.\n                                                                items:\n                                                                  type: string\n                                                                type: array\n                                                            required:\n                                                            - key\n                                                            - operator\n                                                            type: object\n                                                          type: array\n                                                        matchLabels:\n                                                          additionalProperties:\n                                                            type: string\n                                                          description: matchLabels\n                                                            is a map of {key,value}\n                                                            pairs. A single {key,value}\n                                                            in the matchLabels map\n                                                            is equivalent to an element\n                                                            of matchExpressions, whose\n                                                            key field is \"key\", the\n                                                            operator is \"In\", and\n                                                            the values array contains\n                                                            only \"value\". The requirements\n                                                            are ANDed.\n                                                          type: object\n                                                      type: object\n                                                      x-kubernetes-map-type: atomic\n                                                    namespaces:\n                                                      description: namespaces specifies\n                                                        a static list of namespace\n                                                        names that the term applies\n                                                        to. The term is applied to\n                                                        the union of the namespaces\n                                                        listed in this field and the\n                                                        ones selected by namespaceSelector.\n                                                        null or empty namespaces list\n                                                        and null namespaceSelector\n                                                        means \"this pod's namespace\".\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    topologyKey:\n                                                      description: This pod should\n                                                        be co-located (affinity) or\n                                                        not co-located (anti-affinity)\n                                                        with the pods matching the\n                                                        labelSelector in the specified\n                                                        namespaces, where co-located\n                                                        is defined as running on a\n                                                        node whose value of the label\n                                                        with key topologyKey matches\n                                                        that of any node on which\n                                                        any of the selected pods is\n                                                        running. Empty topologyKey\n                                                        is not allowed.\n                                                      type: string\n                                                  required:\n                                                  - topologyKey\n                                                  type: object\n                                                weight:\n                                                  description: weight associated with\n                                                    matching the corresponding podAffinityTerm,\n                                                    in the range 1-100.\n                                                  format: int32\n                                                  type: integer\n                                              required:\n                                              - podAffinityTerm\n                                              - weight\n                                              type: object\n                                            type: array\n                                          requiredDuringSchedulingIgnoredDuringExecution:\n                                            description: If the affinity requirements\n                                              specified by this field are not met\n                                              at scheduling time, the pod will not\n                                              be scheduled onto the node. If the affinity\n                                              requirements specified by this field\n                                              cease to be met at some point during\n                                              pod execution (e.g. due to a pod label\n                                              update), the system may or may not try\n                                              to eventually evict the pod from its\n                                              node. When there are multiple elements,\n                                              the lists of nodes corresponding to\n                                              each podAffinityTerm are intersected,\n                                              i.e. all terms must be satisfied.\n                                            items:\n                                              description: Defines a set of pods (namely\n                                                those matching the labelSelector relative\n                                                to the given namespace(s)) that this\n                                                pod should be co-located (affinity)\n                                                or not co-located (anti-affinity)\n                                                with, where co-located is defined\n                                                as running on a node whose value of\n                                                the label with key <topologyKey> matches\n                                                that of any node on which a pod of\n                                                the set of pods is running\n                                              properties:\n                                                labelSelector:\n                                                  description: A label query over\n                                                    a set of resources, in this case\n                                                    pods.\n                                                  properties:\n                                                    matchExpressions:\n                                                      description: matchExpressions\n                                                        is a list of label selector\n                                                        requirements. The requirements\n                                                        are ANDed.\n                                                      items:\n                                                        description: A label selector\n                                                          requirement is a selector\n                                                          that contains values, a\n                                                          key, and an operator that\n                                                          relates the key and values.\n                                                        properties:\n                                                          key:\n                                                            description: key is the\n                                                              label key that the selector\n                                                              applies to.\n                                                            type: string\n                                                          operator:\n                                                            description: operator\n                                                              represents a key's relationship\n                                                              to a set of values.\n                                                              Valid operators are\n                                                              In, NotIn, Exists and\n                                                              DoesNotExist.\n                                                            type: string\n                                                          values:\n                                                            description: values is\n                                                              an array of string values.\n                                                              If the operator is In\n                                                              or NotIn, the values\n                                                              array must be non-empty.\n                                                              If the operator is Exists\n                                                              or DoesNotExist, the\n                                                              values array must be\n                                                              empty. This array is\n                                                              replaced during a strategic\n                                                              merge patch.\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                        required:\n                                                        - key\n                                                        - operator\n                                                        type: object\n                                                      type: array\n                                                    matchLabels:\n                                                      additionalProperties:\n                                                        type: string\n                                                      description: matchLabels is\n                                                        a map of {key,value} pairs.\n                                                        A single {key,value} in the\n                                                        matchLabels map is equivalent\n                                                        to an element of matchExpressions,\n                                                        whose key field is \"key\",\n                                                        the operator is \"In\", and\n                                                        the values array contains\n                                                        only \"value\". The requirements\n                                                        are ANDed.\n                                                      type: object\n                                                  type: object\n                                                  x-kubernetes-map-type: atomic\n                                                namespaceSelector:\n                                                  description: A label query over\n                                                    the set of namespaces that the\n                                                    term applies to. The term is applied\n                                                    to the union of the namespaces\n                                                    selected by this field and the\n                                                    ones listed in the namespaces\n                                                    field. null selector and null\n                                                    or empty namespaces list means\n                                                    \"this pod's namespace\". An empty\n                                                    selector ({}) matches all namespaces.\n                                                  properties:\n                                                    matchExpressions:\n                                                      description: matchExpressions\n                                                        is a list of label selector\n                                                        requirements. The requirements\n                                                        are ANDed.\n                                                      items:\n                                                        description: A label selector\n                                                          requirement is a selector\n                                                          that contains values, a\n                                                          key, and an operator that\n                                                          relates the key and values.\n                                                        properties:\n                                                          key:\n                                                            description: key is the\n                                                              label key that the selector\n                                                              applies to.\n                                                            type: string\n                                                          operator:\n                                                            description: operator\n                                                              represents a key's relationship\n                                                              to a set of values.\n                                                              Valid operators are\n                                                              In, NotIn, Exists and\n                                                              DoesNotExist.\n                                                            type: string\n                                                          values:\n                                                            description: values is\n                                                              an array of string values.\n                                                              If the operator is In\n                                                              or NotIn, the values\n                                                              array must be non-empty.\n                                                              If the operator is Exists\n                                                              or DoesNotExist, the\n                                                              values array must be\n                                                              empty. This array is\n                                                              replaced during a strategic\n                                                              merge patch.\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                        required:\n                                                        - key\n                                                        - operator\n                                                        type: object\n                                                      type: array\n                                                    matchLabels:\n                                                      additionalProperties:\n                                                        type: string\n                                                      description: matchLabels is\n                                                        a map of {key,value} pairs.\n                                                        A single {key,value} in the\n                                                        matchLabels map is equivalent\n                                                        to an element of matchExpressions,\n                                                        whose key field is \"key\",\n                                                        the operator is \"In\", and\n                                                        the values array contains\n                                                        only \"value\". The requirements\n                                                        are ANDed.\n                                                      type: object\n                                                  type: object\n                                                  x-kubernetes-map-type: atomic\n                                                namespaces:\n                                                  description: namespaces specifies\n                                                    a static list of namespace names\n                                                    that the term applies to. The\n                                                    term is applied to the union of\n                                                    the namespaces listed in this\n                                                    field and the ones selected by\n                                                    namespaceSelector. null or empty\n                                                    namespaces list and null namespaceSelector\n                                                    means \"this pod's namespace\".\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                topologyKey:\n                                                  description: This pod should be\n                                                    co-located (affinity) or not co-located\n                                                    (anti-affinity) with the pods\n                                                    matching the labelSelector in\n                                                    the specified namespaces, where\n                                                    co-located is defined as running\n                                                    on a node whose value of the label\n                                                    with key topologyKey matches that\n                                                    of any node on which any of the\n                                                    selected pods is running. Empty\n                                                    topologyKey is not allowed.\n                                                  type: string\n                                              required:\n                                              - topologyKey\n                                              type: object\n                                            type: array\n                                        type: object\n                                      podAntiAffinity:\n                                        description: Describes pod anti-affinity scheduling\n                                          rules (e.g. avoid putting this pod in the\n                                          same node, zone, etc. as some other pod(s)).\n                                        properties:\n                                          preferredDuringSchedulingIgnoredDuringExecution:\n                                            description: The scheduler will prefer\n                                              to schedule pods to nodes that satisfy\n                                              the anti-affinity expressions specified\n                                              by this field, but it may choose a node\n                                              that violates one or more of the expressions.\n                                              The node that is most preferred is the\n                                              one with the greatest sum of weights,\n                                              i.e. for each node that meets all of\n                                              the scheduling requirements (resource\n                                              request, requiredDuringScheduling anti-affinity\n                                              expressions, etc.), compute a sum by\n                                              iterating through the elements of this\n                                              field and adding \"weight\" to the sum\n                                              if the node has pods which matches the\n                                              corresponding podAffinityTerm; the node(s)\n                                              with the highest sum are the most preferred.\n                                            items:\n                                              description: The weights of all of the\n                                                matched WeightedPodAffinityTerm fields\n                                                are added per-node to find the most\n                                                preferred node(s)\n                                              properties:\n                                                podAffinityTerm:\n                                                  description: Required. A pod affinity\n                                                    term, associated with the corresponding\n                                                    weight.\n                                                  properties:\n                                                    labelSelector:\n                                                      description: A label query over\n                                                        a set of resources, in this\n                                                        case pods.\n                                                      properties:\n                                                        matchExpressions:\n                                                          description: matchExpressions\n                                                            is a list of label selector\n                                                            requirements. The requirements\n                                                            are ANDed.\n                                                          items:\n                                                            description: A label selector\n                                                              requirement is a selector\n                                                              that contains values,\n                                                              a key, and an operator\n                                                              that relates the key\n                                                              and values.\n                                                            properties:\n                                                              key:\n                                                                description: key is\n                                                                  the label key that\n                                                                  the selector applies\n                                                                  to.\n                                                                type: string\n                                                              operator:\n                                                                description: operator\n                                                                  represents a key's\n                                                                  relationship to\n                                                                  a set of values.\n                                                                  Valid operators\n                                                                  are In, NotIn, Exists\n                                                                  and DoesNotExist.\n                                                                type: string\n                                                              values:\n                                                                description: values\n                                                                  is an array of string\n                                                                  values. If the operator\n                                                                  is In or NotIn,\n                                                                  the values array\n                                                                  must be non-empty.\n                                                                  If the operator\n                                                                  is Exists or DoesNotExist,\n                                                                  the values array\n                                                                  must be empty. This\n                                                                  array is replaced\n                                                                  during a strategic\n                                                                  merge patch.\n                                                                items:\n                                                                  type: string\n                                                                type: array\n                                                            required:\n                                                            - key\n                                                            - operator\n                                                            type: object\n                                                          type: array\n                                                        matchLabels:\n                                                          additionalProperties:\n                                                            type: string\n                                                          description: matchLabels\n                                                            is a map of {key,value}\n                                                            pairs. A single {key,value}\n                                                            in the matchLabels map\n                                                            is equivalent to an element\n                                                            of matchExpressions, whose\n                                                            key field is \"key\", the\n                                                            operator is \"In\", and\n                                                            the values array contains\n                                                            only \"value\". The requirements\n                                                            are ANDed.\n                                                          type: object\n                                                      type: object\n                                                      x-kubernetes-map-type: atomic\n                                                    namespaceSelector:\n                                                      description: A label query over\n                                                        the set of namespaces that\n                                                        the term applies to. The term\n                                                        is applied to the union of\n                                                        the namespaces selected by\n                                                        this field and the ones listed\n                                                        in the namespaces field. null\n                                                        selector and null or empty\n                                                        namespaces list means \"this\n                                                        pod's namespace\". An empty\n                                                        selector ({}) matches all\n                                                        namespaces.\n                                                      properties:\n                                                        matchExpressions:\n                                                          description: matchExpressions\n                                                            is a list of label selector\n                                                            requirements. The requirements\n                                                            are ANDed.\n                                                          items:\n                                                            description: A label selector\n                                                              requirement is a selector\n                                                              that contains values,\n                                                              a key, and an operator\n                                                              that relates the key\n                                                              and values.\n                                                            properties:\n                                                              key:\n                                                                description: key is\n                                                                  the label key that\n                                                                  the selector applies\n                                                                  to.\n                                                                type: string\n                                                              operator:\n                                                                description: operator\n                                                                  represents a key's\n                                                                  relationship to\n                                                                  a set of values.\n                                                                  Valid operators\n                                                                  are In, NotIn, Exists\n                                                                  and DoesNotExist.\n                                                                type: string\n                                                              values:\n                                                                description: values\n                                                                  is an array of string\n                                                                  values. If the operator\n                                                                  is In or NotIn,\n                                                                  the values array\n                                                                  must be non-empty.\n                                                                  If the operator\n                                                                  is Exists or DoesNotExist,\n                                                                  the values array\n                                                                  must be empty. This\n                                                                  array is replaced\n                                                                  during a strategic\n                                                                  merge patch.\n                                                                items:\n                                                                  type: string\n                                                                type: array\n                                                            required:\n                                                            - key\n                                                            - operator\n                                                            type: object\n                                                          type: array\n                                                        matchLabels:\n                                                          additionalProperties:\n                                                            type: string\n                                                          description: matchLabels\n                                                            is a map of {key,value}\n                                                            pairs. A single {key,value}\n                                                            in the matchLabels map\n                                                            is equivalent to an element\n                                                            of matchExpressions, whose\n                                                            key field is \"key\", the\n                                                            operator is \"In\", and\n                                                            the values array contains\n                                                            only \"value\". The requirements\n                                                            are ANDed.\n                                                          type: object\n                                                      type: object\n                                                      x-kubernetes-map-type: atomic\n                                                    namespaces:\n                                                      description: namespaces specifies\n                                                        a static list of namespace\n                                                        names that the term applies\n                                                        to. The term is applied to\n                                                        the union of the namespaces\n                                                        listed in this field and the\n                                                        ones selected by namespaceSelector.\n                                                        null or empty namespaces list\n                                                        and null namespaceSelector\n                                                        means \"this pod's namespace\".\n                                                      items:\n                                                        type: string\n                                                      type: array\n                                                    topologyKey:\n                                                      description: This pod should\n                                                        be co-located (affinity) or\n                                                        not co-located (anti-affinity)\n                                                        with the pods matching the\n                                                        labelSelector in the specified\n                                                        namespaces, where co-located\n                                                        is defined as running on a\n                                                        node whose value of the label\n                                                        with key topologyKey matches\n                                                        that of any node on which\n                                                        any of the selected pods is\n                                                        running. Empty topologyKey\n                                                        is not allowed.\n                                                      type: string\n                                                  required:\n                                                  - topologyKey\n                                                  type: object\n                                                weight:\n                                                  description: weight associated with\n                                                    matching the corresponding podAffinityTerm,\n                                                    in the range 1-100.\n                                                  format: int32\n                                                  type: integer\n                                              required:\n                                              - podAffinityTerm\n                                              - weight\n                                              type: object\n                                            type: array\n                                          requiredDuringSchedulingIgnoredDuringExecution:\n                                            description: If the anti-affinity requirements\n                                              specified by this field are not met\n                                              at scheduling time, the pod will not\n                                              be scheduled onto the node. If the anti-affinity\n                                              requirements specified by this field\n                                              cease to be met at some point during\n                                              pod execution (e.g. due to a pod label\n                                              update), the system may or may not try\n                                              to eventually evict the pod from its\n                                              node. When there are multiple elements,\n                                              the lists of nodes corresponding to\n                                              each podAffinityTerm are intersected,\n                                              i.e. all terms must be satisfied.\n                                            items:\n                                              description: Defines a set of pods (namely\n                                                those matching the labelSelector relative\n                                                to the given namespace(s)) that this\n                                                pod should be co-located (affinity)\n                                                or not co-located (anti-affinity)\n                                                with, where co-located is defined\n                                                as running on a node whose value of\n                                                the label with key <topologyKey> matches\n                                                that of any node on which a pod of\n                                                the set of pods is running\n                                              properties:\n                                                labelSelector:\n                                                  description: A label query over\n                                                    a set of resources, in this case\n                                                    pods.\n                                                  properties:\n                                                    matchExpressions:\n                                                      description: matchExpressions\n                                                        is a list of label selector\n                                                        requirements. The requirements\n                                                        are ANDed.\n                                                      items:\n                                                        description: A label selector\n                                                          requirement is a selector\n                                                          that contains values, a\n                                                          key, and an operator that\n                                                          relates the key and values.\n                                                        properties:\n                                                          key:\n                                                            description: key is the\n                                                              label key that the selector\n                                                              applies to.\n                                                            type: string\n                                                          operator:\n                                                            description: operator\n                                                              represents a key's relationship\n                                                              to a set of values.\n                                                              Valid operators are\n                                                              In, NotIn, Exists and\n                                                              DoesNotExist.\n                                                            type: string\n                                                          values:\n                                                            description: values is\n                                                              an array of string values.\n                                                              If the operator is In\n                                                              or NotIn, the values\n                                                              array must be non-empty.\n                                                              If the operator is Exists\n                                                              or DoesNotExist, the\n                                                              values array must be\n                                                              empty. This array is\n                                                              replaced during a strategic\n                                                              merge patch.\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                        required:\n                                                        - key\n                                                        - operator\n                                                        type: object\n                                                      type: array\n                                                    matchLabels:\n                                                      additionalProperties:\n                                                        type: string\n                                                      description: matchLabels is\n                                                        a map of {key,value} pairs.\n                                                        A single {key,value} in the\n                                                        matchLabels map is equivalent\n                                                        to an element of matchExpressions,\n                                                        whose key field is \"key\",\n                                                        the operator is \"In\", and\n                                                        the values array contains\n                                                        only \"value\". The requirements\n                                                        are ANDed.\n                                                      type: object\n                                                  type: object\n                                                  x-kubernetes-map-type: atomic\n                                                namespaceSelector:\n                                                  description: A label query over\n                                                    the set of namespaces that the\n                                                    term applies to. The term is applied\n                                                    to the union of the namespaces\n                                                    selected by this field and the\n                                                    ones listed in the namespaces\n                                                    field. null selector and null\n                                                    or empty namespaces list means\n                                                    \"this pod's namespace\". An empty\n                                                    selector ({}) matches all namespaces.\n                                                  properties:\n                                                    matchExpressions:\n                                                      description: matchExpressions\n                                                        is a list of label selector\n                                                        requirements. The requirements\n                                                        are ANDed.\n                                                      items:\n                                                        description: A label selector\n                                                          requirement is a selector\n                                                          that contains values, a\n                                                          key, and an operator that\n                                                          relates the key and values.\n                                                        properties:\n                                                          key:\n                                                            description: key is the\n                                                              label key that the selector\n                                                              applies to.\n                                                            type: string\n                                                          operator:\n                                                            description: operator\n                                                              represents a key's relationship\n                                                              to a set of values.\n                                                              Valid operators are\n                                                              In, NotIn, Exists and\n                                                              DoesNotExist.\n                                                            type: string\n                                                          values:\n                                                            description: values is\n                                                              an array of string values.\n                                                              If the operator is In\n                                                              or NotIn, the values\n                                                              array must be non-empty.\n                                                              If the operator is Exists\n                                                              or DoesNotExist, the\n                                                              values array must be\n                                                              empty. This array is\n                                                              replaced during a strategic\n                                                              merge patch.\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                        required:\n                                                        - key\n                                                        - operator\n                                                        type: object\n                                                      type: array\n                                                    matchLabels:\n                                                      additionalProperties:\n                                                        type: string\n                                                      description: matchLabels is\n                                                        a map of {key,value} pairs.\n                                                        A single {key,value} in the\n                                                        matchLabels map is equivalent\n                                                        to an element of matchExpressions,\n                                                        whose key field is \"key\",\n                                                        the operator is \"In\", and\n                                                        the values array contains\n                                                        only \"value\". The requirements\n                                                        are ANDed.\n                                                      type: object\n                                                  type: object\n                                                  x-kubernetes-map-type: atomic\n                                                namespaces:\n                                                  description: namespaces specifies\n                                                    a static list of namespace names\n                                                    that the term applies to. The\n                                                    term is applied to the union of\n                                                    the namespaces listed in this\n                                                    field and the ones selected by\n                                                    namespaceSelector. null or empty\n                                                    namespaces list and null namespaceSelector\n                                                    means \"this pod's namespace\".\n                                                  items:\n                                                    type: string\n                                                  type: array\n                                                topologyKey:\n                                                  description: This pod should be\n                                                    co-located (affinity) or not co-located\n                                                    (anti-affinity) with the pods\n                                                    matching the labelSelector in\n                                                    the specified namespaces, where\n                                                    co-located is defined as running\n                                                    on a node whose value of the label\n                                                    with key topologyKey matches that\n                                                    of any node on which any of the\n                                                    selected pods is running. Empty\n                                                    topologyKey is not allowed.\n                                                  type: string\n                                              required:\n                                              - topologyKey\n                                              type: object\n                                            type: array\n                                        type: object\n                                    type: object\n                                  imagePullSecrets:\n                                    description: If specified, the pod's imagePullSecrets\n                                    items:\n                                      description: LocalObjectReference contains enough\n                                        information to let you locate the referenced\n                                        object inside the same namespace.\n                                      properties:\n                                        name:\n                                          description: 'Name of the referent. More\n                                            info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                            TODO: Add other useful fields. apiVersion,\n                                            kind, uid?'\n                                          type: string\n                                      type: object\n                                      x-kubernetes-map-type: atomic\n                                    type: array\n                                  nodeSelector:\n                                    additionalProperties:\n                                      type: string\n                                    description: 'NodeSelector is a selector which\n                                      must be true for the pod to fit on a node. Selector\n                                      which must match a node''s labels for the pod\n                                      to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/'\n                                    type: object\n                                  priorityClassName:\n                                    description: If specified, the pod's priorityClassName.\n                                    type: string\n                                  serviceAccountName:\n                                    description: If specified, the pod's service account\n                                    type: string\n                                  tolerations:\n                                    description: If specified, the pod's tolerations.\n                                    items:\n                                      description: The pod this Toleration is attached\n                                        to tolerates any taint that matches the triple\n                                        <key,value,effect> using the matching operator\n                                        <operator>.\n                                      properties:\n                                        effect:\n                                          description: Effect indicates the taint\n                                            effect to match. Empty means match all\n                                            taint effects. When specified, allowed\n                                            values are NoSchedule, PreferNoSchedule\n                                            and NoExecute.\n                                          type: string\n                                        key:\n                                          description: Key is the taint key that the\n                                            toleration applies to. Empty means match\n                                            all taint keys. If the key is empty, operator\n                                            must be Exists; this combination means\n                                            to match all values and all keys.\n                                          type: string\n                                        operator:\n                                          description: Operator represents a key's\n                                            relationship to the value. Valid operators\n                                            are Exists and Equal. Defaults to Equal.\n                                            Exists is equivalent to wildcard for value,\n                                            so that a pod can tolerate all taints\n                                            of a particular category.\n                                          type: string\n                                        tolerationSeconds:\n                                          description: TolerationSeconds represents\n                                            the period of time the toleration (which\n                                            must be of effect NoExecute, otherwise\n                                            this field is ignored) tolerates the taint.\n                                            By default, it is not set, which means\n                                            tolerate the taint forever (do not evict).\n                                            Zero and negative values will be treated\n                                            as 0 (evict immediately) by the system.\n                                          format: int64\n                                          type: integer\n                                        value:\n                                          description: Value is the taint value the\n                                            toleration matches to. If the operator\n                                            is Exists, the value should be empty,\n                                            otherwise just a regular string.\n                                          type: string\n                                      type: object\n                                    type: array\n                                type: object\n                            type: object\n                          serviceType:\n                            description: Optional service type for Kubernetes solver\n                              service. Supported values are NodePort or ClusterIP.\n                              If unset, defaults to NodePort.\n                            type: string\n                        type: object\n                    type: object\n                  selector:\n                    description: Selector selects a set of DNSNames on the Certificate\n                      resource that should be solved using this challenge solver.\n                      If not specified, the solver will be treated as the 'default'\n                      solver with the lowest priority, i.e. if any other solver has\n                      a more specific match, it will be used instead.\n                    properties:\n                      dnsNames:\n                        description: List of DNSNames that this solver will be used\n                          to solve. If specified and a match is found, a dnsNames\n                          selector will take precedence over a dnsZones selector.\n                          If multiple solvers match with the same dnsNames value,\n                          the solver with the most matching labels in matchLabels\n                          will be selected. If neither has more matches, the solver\n                          defined earlier in the list will be selected.\n                        items:\n                          type: string\n                        type: array\n                      dnsZones:\n                        description: List of DNSZones that this solver will be used\n                          to solve. The most specific DNS zone match specified here\n                          will take precedence over other DNS zone matches, so a solver\n                          specifying sys.example.com will be selected over one specifying\n                          example.com for the domain www.sys.example.com. If multiple\n                          solvers match with the same dnsZones value, the solver with\n                          the most matching labels in matchLabels will be selected.\n                          If neither has more matches, the solver defined earlier\n                          in the list will be selected.\n                        items:\n                          type: string\n                        type: array\n                      matchLabels:\n                        additionalProperties:\n                          type: string\n                        description: A label selector that is used to refine the set\n                          of certificate's that this challenge solver will apply to.\n                        type: object\n                    type: object\n                type: object\n              token:\n                description: The ACME challenge token for this challenge. This is\n                  the raw value returned from the ACME server.\n                type: string\n              type:\n                description: The type of ACME challenge this resource represents.\n                  One of \"HTTP-01\" or \"DNS-01\".\n                enum:\n                - HTTP-01\n                - DNS-01\n                type: string\n              url:\n                description: The URL of the ACME Challenge resource for this challenge.\n                  This can be used to lookup details about the status of this challenge.\n                type: string\n              wildcard:\n                description: wildcard will be true if this challenge is for a wildcard\n                  identifier, for example '*.example.com'.\n                type: boolean\n            required:\n            - authorizationURL\n            - dnsName\n            - issuerRef\n            - key\n            - solver\n            - token\n            - type\n            - url\n            type: object\n          status:\n            properties:\n              presented:\n                description: presented will be set to true if the challenge values\n                  for this challenge are currently 'presented'. This *does not* imply\n                  the self check is passing. Only that the values have been 'submitted'\n                  for the appropriate challenge mechanism (i.e. the DNS01 TXT record\n                  has been presented, or the HTTP01 configuration has been configured).\n                type: boolean\n              processing:\n                description: Used to denote whether this challenge should be processed\n                  or not. This field will only be set to true by the 'scheduling'\n                  component. It will only be set to false by the 'challenges' controller,\n                  after the challenge has reached a final state or timed out. If this\n                  field is set to false, the challenge controller will not take any\n                  more action.\n                type: boolean\n              reason:\n                description: Contains human readable information on why the Challenge\n                  is in the current state.\n                type: string\n              state:\n                description: Contains the current 'state' of the challenge. If not\n                  set, the state of the challenge is unknown.\n                enum:\n                - valid\n                - ready\n                - pending\n                - processing\n                - invalid\n                - expired\n                - errored\n                type: string\n            type: object\n        required:\n        - metadata\n        - spec\n        type: object\n    served: true\n    storage: true\n    subresources:\n      status: {}\n---\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  labels:\n    app: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: clusterissuers.cert-manager.io\nspec:\n  group: cert-manager.io\n  names:\n    categories:\n    - cert-manager\n    kind: ClusterIssuer\n    listKind: ClusterIssuerList\n    plural: clusterissuers\n    singular: clusterissuer\n  scope: Cluster\n  versions:\n  - additionalPrinterColumns:\n    - jsonPath: .status.conditions[?(@.type==\"Ready\")].status\n      name: Ready\n      type: string\n    - jsonPath: .status.conditions[?(@.type==\"Ready\")].message\n      name: Status\n      priority: 1\n      type: string\n    - description: CreationTimestamp is a timestamp representing the server time when\n        this object was created. It is not guaranteed to be set in happens-before\n        order across separate operations. Clients may not set this value. It is represented\n        in RFC3339 form and is in UTC.\n      jsonPath: .metadata.creationTimestamp\n      name: Age\n      type: date\n    name: v1\n    schema:\n      openAPIV3Schema:\n        description: A ClusterIssuer represents a certificate issuing authority which\n          can be referenced as part of `issuerRef` fields. It is similar to an Issuer,\n          however it is cluster-scoped and therefore can be referenced by resources\n          that exist in *any* namespace, not just the same namespace as the referent.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: Desired state of the ClusterIssuer resource.\n            properties:\n              acme:\n                description: ACME configures this issuer to communicate with a RFC8555\n                  (ACME) server to obtain signed x509 certificates.\n                properties:\n                  caBundle:\n                    description: Base64-encoded bundle of PEM CAs which can be used\n                      to validate the certificate chain presented by the ACME server.\n                      Mutually exclusive with SkipTLSVerify; prefer using CABundle\n                      to prevent various kinds of security vulnerabilities. If CABundle\n                      and SkipTLSVerify are unset, the system certificate bundle inside\n                      the container is used to validate the TLS connection.\n                    format: byte\n                    type: string\n                  disableAccountKeyGeneration:\n                    description: Enables or disables generating a new ACME account\n                      key. If true, the Issuer resource will *not* request a new account\n                      but will expect the account key to be supplied via an existing\n                      secret. If false, the cert-manager system will generate a new\n                      ACME account key for the Issuer. Defaults to false.\n                    type: boolean\n                  email:\n                    description: Email is the email address to be associated with\n                      the ACME account. This field is optional, but it is strongly\n                      recommended to be set. It will be used to contact you in case\n                      of issues with your account or certificates, including expiry\n                      notification emails. This field may be updated after the account\n                      is initially registered.\n                    type: string\n                  enableDurationFeature:\n                    description: Enables requesting a Not After date on certificates\n                      that matches the duration of the certificate. This is not supported\n                      by all ACME servers like Let's Encrypt. If set to true when\n                      the ACME server does not support it it will create an error\n                      on the Order. Defaults to false.\n                    type: boolean\n                  externalAccountBinding:\n                    description: ExternalAccountBinding is a reference to a CA external\n                      account of the ACME server. If set, upon registration cert-manager\n                      will attempt to associate the given external account credentials\n                      with the registered ACME account.\n                    properties:\n                      keyAlgorithm:\n                        description: 'Deprecated: keyAlgorithm field exists for historical\n                          compatibility reasons and should not be used. The algorithm\n                          is now hardcoded to HS256 in golang/x/crypto/acme.'\n                        enum:\n                        - HS256\n                        - HS384\n                        - HS512\n                        type: string\n                      keyID:\n                        description: keyID is the ID of the CA key that the External\n                          Account is bound to.\n                        type: string\n                      keySecretRef:\n                        description: keySecretRef is a Secret Key Selector referencing\n                          a data item in a Kubernetes Secret which holds the symmetric\n                          MAC key of the External Account Binding. The `key` is the\n                          index string that is paired with the key data in the Secret\n                          and should not be confused with the key data itself, or\n                          indeed with the External Account Binding keyID above. The\n                          secret key stored in the Secret **must** be un-padded, base64\n                          URL encoded data.\n                        properties:\n                          key:\n                            description: The key of the entry in the Secret resource's\n                              `data` field to be used. Some instances of this field\n                              may be defaulted, in others it may be required.\n                            type: string\n                          name:\n                            description: 'Name of the resource being referred to.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                            type: string\n                        required:\n                        - name\n                        type: object\n                    required:\n                    - keyID\n                    - keySecretRef\n                    type: object\n                  preferredChain:\n                    description: 'PreferredChain is the chain to use if the ACME server\n                      outputs multiple. PreferredChain is no guarantee that this one\n                      gets delivered by the ACME endpoint. For example, for Let''s\n                      Encrypt''s DST crosssign you would use: \"DST Root CA X3\" or\n                      \"ISRG Root X1\" for the newer Let''s Encrypt root CA. This value\n                      picks the first certificate bundle in the ACME alternative chains\n                      that has a certificate with this value as its issuer''s CN'\n                    maxLength: 64\n                    type: string\n                  privateKeySecretRef:\n                    description: PrivateKey is the name of a Kubernetes Secret resource\n                      that will be used to store the automatically generated ACME\n                      account private key. Optionally, a `key` may be specified to\n                      select a specific entry within the named Secret resource. If\n                      `key` is not specified, a default of `tls.key` will be used.\n                    properties:\n                      key:\n                        description: The key of the entry in the Secret resource's\n                          `data` field to be used. Some instances of this field may\n                          be defaulted, in others it may be required.\n                        type: string\n                      name:\n                        description: 'Name of the resource being referred to. More\n                          info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                        type: string\n                    required:\n                    - name\n                    type: object\n                  server:\n                    description: 'Server is the URL used to access the ACME server''s\n                      ''directory'' endpoint. For example, for Let''s Encrypt''s staging\n                      endpoint, you would use: \"https://acme-staging-v02.api.letsencrypt.org/directory\".\n                      Only ACME v2 endpoints (i.e. RFC 8555) are supported.'\n                    type: string\n                  skipTLSVerify:\n                    description: 'INSECURE: Enables or disables validation of the\n                      ACME server TLS certificate. If true, requests to the ACME server\n                      will not have the TLS certificate chain validated. Mutually\n                      exclusive with CABundle; prefer using CABundle to prevent various\n                      kinds of security vulnerabilities. Only enable this option in\n                      development environments. If CABundle and SkipTLSVerify are\n                      unset, the system certificate bundle inside the container is\n                      used to validate the TLS connection. Defaults to false.'\n                    type: boolean\n                  solvers:\n                    description: 'Solvers is a list of challenge solvers that will\n                      be used to solve ACME challenges for the matching domains. Solver\n                      configurations must be provided in order to obtain certificates\n                      from an ACME server. For more information, see: https://cert-manager.io/docs/configuration/acme/'\n                    items:\n                      description: An ACMEChallengeSolver describes how to solve ACME\n                        challenges for the issuer it is part of. A selector may be\n                        provided to use different solving strategies for different\n                        DNS names. Only one of HTTP01 or DNS01 must be provided.\n                      properties:\n                        dns01:\n                          description: Configures cert-manager to attempt to complete\n                            authorizations by performing the DNS01 challenge flow.\n                          properties:\n                            acmeDNS:\n                              description: Use the 'ACME DNS' (https://github.com/joohoi/acme-dns)\n                                API to manage DNS01 challenge records.\n                              properties:\n                                accountSecretRef:\n                                  description: A reference to a specific 'key' within\n                                    a Secret resource. In some instances, `key` is\n                                    a required field.\n                                  properties:\n                                    key:\n                                      description: The key of the entry in the Secret\n                                        resource's `data` field to be used. Some instances\n                                        of this field may be defaulted, in others\n                                        it may be required.\n                                      type: string\n                                    name:\n                                      description: 'Name of the resource being referred\n                                        to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                      type: string\n                                  required:\n                                  - name\n                                  type: object\n                                host:\n                                  type: string\n                              required:\n                              - accountSecretRef\n                              - host\n                              type: object\n                            akamai:\n                              description: Use the Akamai DNS zone management API\n                                to manage DNS01 challenge records.\n                              properties:\n                                accessTokenSecretRef:\n                                  description: A reference to a specific 'key' within\n                                    a Secret resource. In some instances, `key` is\n                                    a required field.\n                                  properties:\n                                    key:\n                                      description: The key of the entry in the Secret\n                                        resource's `data` field to be used. Some instances\n                                        of this field may be defaulted, in others\n                                        it may be required.\n                                      type: string\n                                    name:\n                                      description: 'Name of the resource being referred\n                                        to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                      type: string\n                                  required:\n                                  - name\n                                  type: object\n                                clientSecretSecretRef:\n                                  description: A reference to a specific 'key' within\n                                    a Secret resource. In some instances, `key` is\n                                    a required field.\n                                  properties:\n                                    key:\n                                      description: The key of the entry in the Secret\n                                        resource's `data` field to be used. Some instances\n                                        of this field may be defaulted, in others\n                                        it may be required.\n                                      type: string\n                                    name:\n                                      description: 'Name of the resource being referred\n                                        to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                      type: string\n                                  required:\n                                  - name\n                                  type: object\n                                clientTokenSecretRef:\n                                  description: A reference to a specific 'key' within\n                                    a Secret resource. In some instances, `key` is\n                                    a required field.\n                                  properties:\n                                    key:\n                                      description: The key of the entry in the Secret\n                                        resource's `data` field to be used. Some instances\n                                        of this field may be defaulted, in others\n                                        it may be required.\n                                      type: string\n                                    name:\n                                      description: 'Name of the resource being referred\n                                        to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                      type: string\n                                  required:\n                                  - name\n                                  type: object\n                                serviceConsumerDomain:\n                                  type: string\n                              required:\n                              - accessTokenSecretRef\n                              - clientSecretSecretRef\n                              - clientTokenSecretRef\n                              - serviceConsumerDomain\n                              type: object\n                            azureDNS:\n                              description: Use the Microsoft Azure DNS API to manage\n                                DNS01 challenge records.\n                              properties:\n                                clientID:\n                                  description: if both this and ClientSecret are left\n                                    unset MSI will be used\n                                  type: string\n                                clientSecretSecretRef:\n                                  description: if both this and ClientID are left\n                                    unset MSI will be used\n                                  properties:\n                                    key:\n                                      description: The key of the entry in the Secret\n                                        resource's `data` field to be used. Some instances\n                                        of this field may be defaulted, in others\n                                        it may be required.\n                                      type: string\n                                    name:\n                                      description: 'Name of the resource being referred\n                                        to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                      type: string\n                                  required:\n                                  - name\n                                  type: object\n                                environment:\n                                  description: name of the Azure environment (default\n                                    AzurePublicCloud)\n                                  enum:\n                                  - AzurePublicCloud\n                                  - AzureChinaCloud\n                                  - AzureGermanCloud\n                                  - AzureUSGovernmentCloud\n                                  type: string\n                                hostedZoneName:\n                                  description: name of the DNS zone that should be\n                                    used\n                                  type: string\n                                managedIdentity:\n                                  description: managed identity configuration, can\n                                    not be used at the same time as clientID, clientSecretSecretRef\n                                    or tenantID\n                                  properties:\n                                    clientID:\n                                      description: client ID of the managed identity,\n                                        can not be used at the same time as resourceID\n                                      type: string\n                                    resourceID:\n                                      description: resource ID of the managed identity,\n                                        can not be used at the same time as clientID\n                                      type: string\n                                  type: object\n                                resourceGroupName:\n                                  description: resource group the DNS zone is located\n                                    in\n                                  type: string\n                                subscriptionID:\n                                  description: ID of the Azure subscription\n                                  type: string\n                                tenantID:\n                                  description: when specifying ClientID and ClientSecret\n                                    then this field is also needed\n                                  type: string\n                              required:\n                              - resourceGroupName\n                              - subscriptionID\n                              type: object\n                            cloudDNS:\n                              description: Use the Google Cloud DNS API to manage\n                                DNS01 challenge records.\n                              properties:\n                                hostedZoneName:\n                                  description: HostedZoneName is an optional field\n                                    that tells cert-manager in which Cloud DNS zone\n                                    the challenge record has to be created. If left\n                                    empty cert-manager will automatically choose a\n                                    zone.\n                                  type: string\n                                project:\n                                  type: string\n                                serviceAccountSecretRef:\n                                  description: A reference to a specific 'key' within\n                                    a Secret resource. In some instances, `key` is\n                                    a required field.\n                                  properties:\n                                    key:\n                                      description: The key of the entry in the Secret\n                                        resource's `data` field to be used. Some instances\n                                        of this field may be defaulted, in others\n                                        it may be required.\n                                      type: string\n                                    name:\n                                      description: 'Name of the resource being referred\n                                        to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                      type: string\n                                  required:\n                                  - name\n                                  type: object\n                              required:\n                              - project\n                              type: object\n                            cloudflare:\n                              description: Use the Cloudflare API to manage DNS01\n                                challenge records.\n                              properties:\n                                apiKeySecretRef:\n                                  description: 'API key to use to authenticate with\n                                    Cloudflare. Note: using an API token to authenticate\n                                    is now the recommended method as it allows greater\n                                    control of permissions.'\n                                  properties:\n                                    key:\n                                      description: The key of the entry in the Secret\n                                        resource's `data` field to be used. Some instances\n                                        of this field may be defaulted, in others\n                                        it may be required.\n                                      type: string\n                                    name:\n                                      description: 'Name of the resource being referred\n                                        to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                      type: string\n                                  required:\n                                  - name\n                                  type: object\n                                apiTokenSecretRef:\n                                  description: API token used to authenticate with\n                                    Cloudflare.\n                                  properties:\n                                    key:\n                                      description: The key of the entry in the Secret\n                                        resource's `data` field to be used. Some instances\n                                        of this field may be defaulted, in others\n                                        it may be required.\n                                      type: string\n                                    name:\n                                      description: 'Name of the resource being referred\n                                        to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                      type: string\n                                  required:\n                                  - name\n                                  type: object\n                                email:\n                                  description: Email of the account, only required\n                                    when using API key based authentication.\n                                  type: string\n                              type: object\n                            cnameStrategy:\n                              description: CNAMEStrategy configures how the DNS01\n                                provider should handle CNAME records when found in\n                                DNS zones.\n                              enum:\n                              - None\n                              - Follow\n                              type: string\n                            digitalocean:\n                              description: Use the DigitalOcean DNS API to manage\n                                DNS01 challenge records.\n                              properties:\n                                tokenSecretRef:\n                                  description: A reference to a specific 'key' within\n                                    a Secret resource. In some instances, `key` is\n                                    a required field.\n                                  properties:\n                                    key:\n                                      description: The key of the entry in the Secret\n                                        resource's `data` field to be used. Some instances\n                                        of this field may be defaulted, in others\n                                        it may be required.\n                                      type: string\n                                    name:\n                                      description: 'Name of the resource being referred\n                                        to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                      type: string\n                                  required:\n                                  - name\n                                  type: object\n                              required:\n                              - tokenSecretRef\n                              type: object\n                            rfc2136:\n                              description: Use RFC2136 (\"Dynamic Updates in the Domain\n                                Name System\") (https://datatracker.ietf.org/doc/rfc2136/)\n                                to manage DNS01 challenge records.\n                              properties:\n                                nameserver:\n                                  description: The IP address or hostname of an authoritative\n                                    DNS server supporting RFC2136 in the form host:port.\n                                    If the host is an IPv6 address it must be enclosed\n                                    in square brackets (e.g [2001:db8::1]) ; port\n                                    is optional. This field is required.\n                                  type: string\n                                tsigAlgorithm:\n                                  description: 'The TSIG Algorithm configured in the\n                                    DNS supporting RFC2136. Used only when ``tsigSecretSecretRef``\n                                    and ``tsigKeyName`` are defined. Supported values\n                                    are (case-insensitive): ``HMACMD5`` (default),\n                                    ``HMACSHA1``, ``HMACSHA256`` or ``HMACSHA512``.'\n                                  type: string\n                                tsigKeyName:\n                                  description: The TSIG Key name configured in the\n                                    DNS. If ``tsigSecretSecretRef`` is defined, this\n                                    field is required.\n                                  type: string\n                                tsigSecretSecretRef:\n                                  description: The name of the secret containing the\n                                    TSIG value. If ``tsigKeyName`` is defined, this\n                                    field is required.\n                                  properties:\n                                    key:\n                                      description: The key of the entry in the Secret\n                                        resource's `data` field to be used. Some instances\n                                        of this field may be defaulted, in others\n                                        it may be required.\n                                      type: string\n                                    name:\n                                      description: 'Name of the resource being referred\n                                        to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                      type: string\n                                  required:\n                                  - name\n                                  type: object\n                              required:\n                              - nameserver\n                              type: object\n                            route53:\n                              description: Use the AWS Route53 API to manage DNS01\n                                challenge records.\n                              properties:\n                                accessKeyID:\n                                  description: 'The AccessKeyID is used for authentication.\n                                    Cannot be set when SecretAccessKeyID is set. If\n                                    neither the Access Key nor Key ID are set, we\n                                    fall-back to using env vars, shared credentials\n                                    file or AWS Instance metadata, see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials'\n                                  type: string\n                                accessKeyIDSecretRef:\n                                  description: 'The SecretAccessKey is used for authentication.\n                                    If set, pull the AWS access key ID from a key\n                                    within a Kubernetes Secret. Cannot be set when\n                                    AccessKeyID is set. If neither the Access Key\n                                    nor Key ID are set, we fall-back to using env\n                                    vars, shared credentials file or AWS Instance\n                                    metadata, see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials'\n                                  properties:\n                                    key:\n                                      description: The key of the entry in the Secret\n                                        resource's `data` field to be used. Some instances\n                                        of this field may be defaulted, in others\n                                        it may be required.\n                                      type: string\n                                    name:\n                                      description: 'Name of the resource being referred\n                                        to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                      type: string\n                                  required:\n                                  - name\n                                  type: object\n                                hostedZoneID:\n                                  description: If set, the provider will manage only\n                                    this zone in Route53 and will not do an lookup\n                                    using the route53:ListHostedZonesByName api call.\n                                  type: string\n                                region:\n                                  description: Always set the region when using AccessKeyID\n                                    and SecretAccessKey\n                                  type: string\n                                role:\n                                  description: Role is a Role ARN which the Route53\n                                    provider will assume using either the explicit\n                                    credentials AccessKeyID/SecretAccessKey or the\n                                    inferred credentials from environment variables,\n                                    shared credentials file or AWS Instance metadata\n                                  type: string\n                                secretAccessKeySecretRef:\n                                  description: 'The SecretAccessKey is used for authentication.\n                                    If neither the Access Key nor Key ID are set,\n                                    we fall-back to using env vars, shared credentials\n                                    file or AWS Instance metadata, see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials'\n                                  properties:\n                                    key:\n                                      description: The key of the entry in the Secret\n                                        resource's `data` field to be used. Some instances\n                                        of this field may be defaulted, in others\n                                        it may be required.\n                                      type: string\n                                    name:\n                                      description: 'Name of the resource being referred\n                                        to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                      type: string\n                                  required:\n                                  - name\n                                  type: object\n                              required:\n                              - region\n                              type: object\n                            webhook:\n                              description: Configure an external webhook based DNS01\n                                challenge solver to manage DNS01 challenge records.\n                              properties:\n                                config:\n                                  description: Additional configuration that should\n                                    be passed to the webhook apiserver when challenges\n                                    are processed. This can contain arbitrary JSON\n                                    data. Secret values should not be specified in\n                                    this stanza. If secret values are needed (e.g.\n                                    credentials for a DNS service), you should use\n                                    a SecretKeySelector to reference a Secret resource.\n                                    For details on the schema of this field, consult\n                                    the webhook provider implementation's documentation.\n                                  x-kubernetes-preserve-unknown-fields: true\n                                groupName:\n                                  description: The API group name that should be used\n                                    when POSTing ChallengePayload resources to the\n                                    webhook apiserver. This should be the same as\n                                    the GroupName specified in the webhook provider\n                                    implementation.\n                                  type: string\n                                solverName:\n                                  description: The name of the solver to use, as defined\n                                    in the webhook provider implementation. This will\n                                    typically be the name of the provider, e.g. 'cloudflare'.\n                                  type: string\n                              required:\n                              - groupName\n                              - solverName\n                              type: object\n                          type: object\n                        http01:\n                          description: Configures cert-manager to attempt to complete\n                            authorizations by performing the HTTP01 challenge flow.\n                            It is not possible to obtain certificates for wildcard\n                            domain names (e.g. `*.example.com`) using the HTTP01 challenge\n                            mechanism.\n                          properties:\n                            gatewayHTTPRoute:\n                              description: The Gateway API is a sig-network community\n                                API that models service networking in Kubernetes (https://gateway-api.sigs.k8s.io/).\n                                The Gateway solver will create HTTPRoutes with the\n                                specified labels in the same namespace as the challenge.\n                                This solver is experimental, and fields / behaviour\n                                may change in the future.\n                              properties:\n                                labels:\n                                  additionalProperties:\n                                    type: string\n                                  description: Custom labels that will be applied\n                                    to HTTPRoutes created by cert-manager while solving\n                                    HTTP-01 challenges.\n                                  type: object\n                                parentRefs:\n                                  description: 'When solving an HTTP-01 challenge,\n                                    cert-manager creates an HTTPRoute. cert-manager\n                                    needs to know which parentRefs should be used\n                                    when creating the HTTPRoute. Usually, the parentRef\n                                    references a Gateway. See: https://gateway-api.sigs.k8s.io/api-types/httproute/#attaching-to-gateways'\n                                  items:\n                                    description: \"ParentReference identifies an API\n                                      object (usually a Gateway) that can be considered\n                                      a parent of this resource (usually a route).\n                                      The only kind of parent resource with \\\"Core\\\"\n                                      support is Gateway. This API may be extended\n                                      in the future to support additional kinds of\n                                      parent resources, such as HTTPRoute. \\n The\n                                      API object must be valid in the cluster; the\n                                      Group and Kind must be registered in the cluster\n                                      for this reference to be valid.\"\n                                    properties:\n                                      group:\n                                        default: gateway.networking.k8s.io\n                                        description: \"Group is the group of the referent.\n                                          When unspecified, \\\"gateway.networking.k8s.io\\\"\n                                          is inferred. To set the core API group (such\n                                          as for a \\\"Service\\\" kind referent), Group\n                                          must be explicitly set to \\\"\\\" (empty string).\n                                          \\n Support: Core\"\n                                        maxLength: 253\n                                        pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$\n                                        type: string\n                                      kind:\n                                        default: Gateway\n                                        description: \"Kind is kind of the referent.\n                                          \\n Support: Core (Gateway) \\n Support: Implementation-specific\n                                          (Other Resources)\"\n                                        maxLength: 63\n                                        minLength: 1\n                                        pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$\n                                        type: string\n                                      name:\n                                        description: \"Name is the name of the referent.\n                                          \\n Support: Core\"\n                                        maxLength: 253\n                                        minLength: 1\n                                        type: string\n                                      namespace:\n                                        description: \"Namespace is the namespace of\n                                          the referent. When unspecified, this refers\n                                          to the local namespace of the Route. \\n\n                                          Note that there are specific rules for ParentRefs\n                                          which cross namespace boundaries. Cross-namespace\n                                          references are only valid if they are explicitly\n                                          allowed by something in the namespace they\n                                          are referring to. For example: Gateway has\n                                          the AllowedRoutes field, and ReferenceGrant\n                                          provides a generic way to enable any other\n                                          kind of cross-namespace reference. \\n Support:\n                                          Core\"\n                                        maxLength: 63\n                                        minLength: 1\n                                        pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$\n                                        type: string\n                                      port:\n                                        description: \"Port is the network port this\n                                          Route targets. It can be interpreted differently\n                                          based on the type of parent resource. \\n\n                                          When the parent resource is a Gateway, this\n                                          targets all listeners listening on the specified\n                                          port that also support this kind of Route(and\n                                          select this Route). It's not recommended\n                                          to set `Port` unless the networking behaviors\n                                          specified in a Route must apply to a specific\n                                          port as opposed to a listener(s) whose port(s)\n                                          may be changed. When both Port and SectionName\n                                          are specified, the name and port of the\n                                          selected listener must match both specified\n                                          values. \\n Implementations MAY choose to\n                                          support other parent resources. Implementations\n                                          supporting other types of parent resources\n                                          MUST clearly document how/if Port is interpreted.\n                                          \\n For the purpose of status, an attachment\n                                          is considered successful as long as the\n                                          parent resource accepts it partially. For\n                                          example, Gateway listeners can restrict\n                                          which Routes can attach to them by Route\n                                          kind, namespace, or hostname. If 1 of 2\n                                          Gateway listeners accept attachment from\n                                          the referencing Route, the Route MUST be\n                                          considered successfully attached. If no\n                                          Gateway listeners accept attachment from\n                                          this Route, the Route MUST be considered\n                                          detached from the Gateway. \\n Support: Extended\n                                          \\n <gateway:experimental>\"\n                                        format: int32\n                                        maximum: 65535\n                                        minimum: 1\n                                        type: integer\n                                      sectionName:\n                                        description: \"SectionName is the name of a\n                                          section within the target resource. In the\n                                          following resources, SectionName is interpreted\n                                          as the following: \\n * Gateway: Listener\n                                          Name. When both Port (experimental) and\n                                          SectionName are specified, the name and\n                                          port of the selected listener must match\n                                          both specified values. \\n Implementations\n                                          MAY choose to support attaching Routes to\n                                          other resources. If that is the case, they\n                                          MUST clearly document how SectionName is\n                                          interpreted. \\n When unspecified (empty\n                                          string), this will reference the entire\n                                          resource. For the purpose of status, an\n                                          attachment is considered successful if at\n                                          least one section in the parent resource\n                                          accepts it. For example, Gateway listeners\n                                          can restrict which Routes can attach to\n                                          them by Route kind, namespace, or hostname.\n                                          If 1 of 2 Gateway listeners accept attachment\n                                          from the referencing Route, the Route MUST\n                                          be considered successfully attached. If\n                                          no Gateway listeners accept attachment from\n                                          this Route, the Route MUST be considered\n                                          detached from the Gateway. \\n Support: Core\"\n                                        maxLength: 253\n                                        minLength: 1\n                                        pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$\n                                        type: string\n                                    required:\n                                    - name\n                                    type: object\n                                  type: array\n                                serviceType:\n                                  description: Optional service type for Kubernetes\n                                    solver service. Supported values are NodePort\n                                    or ClusterIP. If unset, defaults to NodePort.\n                                  type: string\n                              type: object\n                            ingress:\n                              description: The ingress based HTTP01 challenge solver\n                                will solve challenges by creating or modifying Ingress\n                                resources in order to route requests for '/.well-known/acme-challenge/XYZ'\n                                to 'challenge solver' pods that are provisioned by\n                                cert-manager for each Challenge to be completed.\n                              properties:\n                                class:\n                                  description: This field configures the annotation\n                                    `kubernetes.io/ingress.class` when creating Ingress\n                                    resources to solve ACME challenges that use this\n                                    challenge solver. Only one of `class`, `name`\n                                    or `ingressClassName` may be specified.\n                                  type: string\n                                ingressClassName:\n                                  description: This field configures the field `ingressClassName`\n                                    on the created Ingress resources used to solve\n                                    ACME challenges that use this challenge solver.\n                                    This is the recommended way of configuring the\n                                    ingress class. Only one of `class`, `name` or\n                                    `ingressClassName` may be specified.\n                                  type: string\n                                ingressTemplate:\n                                  description: Optional ingress template used to configure\n                                    the ACME challenge solver ingress used for HTTP01\n                                    challenges.\n                                  properties:\n                                    metadata:\n                                      description: ObjectMeta overrides for the ingress\n                                        used to solve HTTP01 challenges. Only the\n                                        'labels' and 'annotations' fields may be set.\n                                        If labels or annotations overlap with in-built\n                                        values, the values here will override the\n                                        in-built values.\n                                      properties:\n                                        annotations:\n                                          additionalProperties:\n                                            type: string\n                                          description: Annotations that should be\n                                            added to the created ACME HTTP01 solver\n                                            ingress.\n                                          type: object\n                                        labels:\n                                          additionalProperties:\n                                            type: string\n                                          description: Labels that should be added\n                                            to the created ACME HTTP01 solver ingress.\n                                          type: object\n                                      type: object\n                                  type: object\n                                name:\n                                  description: The name of the ingress resource that\n                                    should have ACME challenge solving routes inserted\n                                    into it in order to solve HTTP01 challenges. This\n                                    is typically used in conjunction with ingress\n                                    controllers like ingress-gce, which maintains\n                                    a 1:1 mapping between external IPs and ingress\n                                    resources. Only one of `class`, `name` or `ingressClassName`\n                                    may be specified.\n                                  type: string\n                                podTemplate:\n                                  description: Optional pod template used to configure\n                                    the ACME challenge solver pods used for HTTP01\n                                    challenges.\n                                  properties:\n                                    metadata:\n                                      description: ObjectMeta overrides for the pod\n                                        used to solve HTTP01 challenges. Only the\n                                        'labels' and 'annotations' fields may be set.\n                                        If labels or annotations overlap with in-built\n                                        values, the values here will override the\n                                        in-built values.\n                                      properties:\n                                        annotations:\n                                          additionalProperties:\n                                            type: string\n                                          description: Annotations that should be\n                                            added to the create ACME HTTP01 solver\n                                            pods.\n                                          type: object\n                                        labels:\n                                          additionalProperties:\n                                            type: string\n                                          description: Labels that should be added\n                                            to the created ACME HTTP01 solver pods.\n                                          type: object\n                                      type: object\n                                    spec:\n                                      description: PodSpec defines overrides for the\n                                        HTTP01 challenge solver pod. Check ACMEChallengeSolverHTTP01IngressPodSpec\n                                        to find out currently supported fields. All\n                                        other fields will be ignored.\n                                      properties:\n                                        affinity:\n                                          description: If specified, the pod's scheduling\n                                            constraints\n                                          properties:\n                                            nodeAffinity:\n                                              description: Describes node affinity\n                                                scheduling rules for the pod.\n                                              properties:\n                                                preferredDuringSchedulingIgnoredDuringExecution:\n                                                  description: The scheduler will\n                                                    prefer to schedule pods to nodes\n                                                    that satisfy the affinity expressions\n                                                    specified by this field, but it\n                                                    may choose a node that violates\n                                                    one or more of the expressions.\n                                                    The node that is most preferred\n                                                    is the one with the greatest sum\n                                                    of weights, i.e. for each node\n                                                    that meets all of the scheduling\n                                                    requirements (resource request,\n                                                    requiredDuringScheduling affinity\n                                                    expressions, etc.), compute a\n                                                    sum by iterating through the elements\n                                                    of this field and adding \"weight\"\n                                                    to the sum if the node matches\n                                                    the corresponding matchExpressions;\n                                                    the node(s) with the highest sum\n                                                    are the most preferred.\n                                                  items:\n                                                    description: An empty preferred\n                                                      scheduling term matches all\n                                                      objects with implicit weight\n                                                      0 (i.e. it's a no-op). A null\n                                                      preferred scheduling term matches\n                                                      no objects (i.e. is also a no-op).\n                                                    properties:\n                                                      preference:\n                                                        description: A node selector\n                                                          term, associated with the\n                                                          corresponding weight.\n                                                        properties:\n                                                          matchExpressions:\n                                                            description: A list of\n                                                              node selector requirements\n                                                              by node's labels.\n                                                            items:\n                                                              description: A node\n                                                                selector requirement\n                                                                is a selector that\n                                                                contains values, a\n                                                                key, and an operator\n                                                                that relates the key\n                                                                and values.\n                                                              properties:\n                                                                key:\n                                                                  description: The\n                                                                    label key that\n                                                                    the selector applies\n                                                                    to.\n                                                                  type: string\n                                                                operator:\n                                                                  description: Represents\n                                                                    a key's relationship\n                                                                    to a set of values.\n                                                                    Valid operators\n                                                                    are In, NotIn,\n                                                                    Exists, DoesNotExist.\n                                                                    Gt, and Lt.\n                                                                  type: string\n                                                                values:\n                                                                  description: An\n                                                                    array of string\n                                                                    values. If the\n                                                                    operator is In\n                                                                    or NotIn, the\n                                                                    values array must\n                                                                    be non-empty.\n                                                                    If the operator\n                                                                    is Exists or DoesNotExist,\n                                                                    the values array\n                                                                    must be empty.\n                                                                    If the operator\n                                                                    is Gt or Lt, the\n                                                                    values array must\n                                                                    have a single\n                                                                    element, which\n                                                                    will be interpreted\n                                                                    as an integer.\n                                                                    This array is\n                                                                    replaced during\n                                                                    a strategic merge\n                                                                    patch.\n                                                                  items:\n                                                                    type: string\n                                                                  type: array\n                                                              required:\n                                                              - key\n                                                              - operator\n                                                              type: object\n                                                            type: array\n                                                          matchFields:\n                                                            description: A list of\n                                                              node selector requirements\n                                                              by node's fields.\n                                                            items:\n                                                              description: A node\n                                                                selector requirement\n                                                                is a selector that\n                                                                contains values, a\n                                                                key, and an operator\n                                                                that relates the key\n                                                                and values.\n                                                              properties:\n                                                                key:\n                                                                  description: The\n                                                                    label key that\n                                                                    the selector applies\n                                                                    to.\n                                                                  type: string\n                                                                operator:\n                                                                  description: Represents\n                                                                    a key's relationship\n                                                                    to a set of values.\n                                                                    Valid operators\n                                                                    are In, NotIn,\n                                                                    Exists, DoesNotExist.\n                                                                    Gt, and Lt.\n                                                                  type: string\n                                                                values:\n                                                                  description: An\n                                                                    array of string\n                                                                    values. If the\n                                                                    operator is In\n                                                                    or NotIn, the\n                                                                    values array must\n                                                                    be non-empty.\n                                                                    If the operator\n                                                                    is Exists or DoesNotExist,\n                                                                    the values array\n                                                                    must be empty.\n                                                                    If the operator\n                                                                    is Gt or Lt, the\n                                                                    values array must\n                                                                    have a single\n                                                                    element, which\n                                                                    will be interpreted\n                                                                    as an integer.\n                                                                    This array is\n                                                                    replaced during\n                                                                    a strategic merge\n                                                                    patch.\n                                                                  items:\n                                                                    type: string\n                                                                  type: array\n                                                              required:\n                                                              - key\n                                                              - operator\n                                                              type: object\n                                                            type: array\n                                                        type: object\n                                                        x-kubernetes-map-type: atomic\n                                                      weight:\n                                                        description: Weight associated\n                                                          with matching the corresponding\n                                                          nodeSelectorTerm, in the\n                                                          range 1-100.\n                                                        format: int32\n                                                        type: integer\n                                                    required:\n                                                    - preference\n                                                    - weight\n                                                    type: object\n                                                  type: array\n                                                requiredDuringSchedulingIgnoredDuringExecution:\n                                                  description: If the affinity requirements\n                                                    specified by this field are not\n                                                    met at scheduling time, the pod\n                                                    will not be scheduled onto the\n                                                    node. If the affinity requirements\n                                                    specified by this field cease\n                                                    to be met at some point during\n                                                    pod execution (e.g. due to an\n                                                    update), the system may or may\n                                                    not try to eventually evict the\n                                                    pod from its node.\n                                                  properties:\n                                                    nodeSelectorTerms:\n                                                      description: Required. A list\n                                                        of node selector terms. The\n                                                        terms are ORed.\n                                                      items:\n                                                        description: A null or empty\n                                                          node selector term matches\n                                                          no objects. The requirements\n                                                          of them are ANDed. The TopologySelectorTerm\n                                                          type implements a subset\n                                                          of the NodeSelectorTerm.\n                                                        properties:\n                                                          matchExpressions:\n                                                            description: A list of\n                                                              node selector requirements\n                                                              by node's labels.\n                                                            items:\n                                                              description: A node\n                                                                selector requirement\n                                                                is a selector that\n                                                                contains values, a\n                                                                key, and an operator\n                                                                that relates the key\n                                                                and values.\n                                                              properties:\n                                                                key:\n                                                                  description: The\n                                                                    label key that\n                                                                    the selector applies\n                                                                    to.\n                                                                  type: string\n                                                                operator:\n                                                                  description: Represents\n                                                                    a key's relationship\n                                                                    to a set of values.\n                                                                    Valid operators\n                                                                    are In, NotIn,\n                                                                    Exists, DoesNotExist.\n                                                                    Gt, and Lt.\n                                                                  type: string\n                                                                values:\n                                                                  description: An\n                                                                    array of string\n                                                                    values. If the\n                                                                    operator is In\n                                                                    or NotIn, the\n                                                                    values array must\n                                                                    be non-empty.\n                                                                    If the operator\n                                                                    is Exists or DoesNotExist,\n                                                                    the values array\n                                                                    must be empty.\n                                                                    If the operator\n                                                                    is Gt or Lt, the\n                                                                    values array must\n                                                                    have a single\n                                                                    element, which\n                                                                    will be interpreted\n                                                                    as an integer.\n                                                                    This array is\n                                                                    replaced during\n                                                                    a strategic merge\n                                                                    patch.\n                                                                  items:\n                                                                    type: string\n                                                                  type: array\n                                                              required:\n                                                              - key\n                                                              - operator\n                                                              type: object\n                                                            type: array\n                                                          matchFields:\n                                                            description: A list of\n                                                              node selector requirements\n                                                              by node's fields.\n                                                            items:\n                                                              description: A node\n                                                                selector requirement\n                                                                is a selector that\n                                                                contains values, a\n                                                                key, and an operator\n                                                                that relates the key\n                                                                and values.\n                                                              properties:\n                                                                key:\n                                                                  description: The\n                                                                    label key that\n                                                                    the selector applies\n                                                                    to.\n                                                                  type: string\n                                                                operator:\n                                                                  description: Represents\n                                                                    a key's relationship\n                                                                    to a set of values.\n                                                                    Valid operators\n                                                                    are In, NotIn,\n                                                                    Exists, DoesNotExist.\n                                                                    Gt, and Lt.\n                                                                  type: string\n                                                                values:\n                                                                  description: An\n                                                                    array of string\n                                                                    values. If the\n                                                                    operator is In\n                                                                    or NotIn, the\n                                                                    values array must\n                                                                    be non-empty.\n                                                                    If the operator\n                                                                    is Exists or DoesNotExist,\n                                                                    the values array\n                                                                    must be empty.\n                                                                    If the operator\n                                                                    is Gt or Lt, the\n                                                                    values array must\n                                                                    have a single\n                                                                    element, which\n                                                                    will be interpreted\n                                                                    as an integer.\n                                                                    This array is\n                                                                    replaced during\n                                                                    a strategic merge\n                                                                    patch.\n                                                                  items:\n                                                                    type: string\n                                                                  type: array\n                                                              required:\n                                                              - key\n                                                              - operator\n                                                              type: object\n                                                            type: array\n                                                        type: object\n                                                        x-kubernetes-map-type: atomic\n                                                      type: array\n                                                  required:\n                                                  - nodeSelectorTerms\n                                                  type: object\n                                                  x-kubernetes-map-type: atomic\n                                              type: object\n                                            podAffinity:\n                                              description: Describes pod affinity\n                                                scheduling rules (e.g. co-locate this\n                                                pod in the same node, zone, etc. as\n                                                some other pod(s)).\n                                              properties:\n                                                preferredDuringSchedulingIgnoredDuringExecution:\n                                                  description: The scheduler will\n                                                    prefer to schedule pods to nodes\n                                                    that satisfy the affinity expressions\n                                                    specified by this field, but it\n                                                    may choose a node that violates\n                                                    one or more of the expressions.\n                                                    The node that is most preferred\n                                                    is the one with the greatest sum\n                                                    of weights, i.e. for each node\n                                                    that meets all of the scheduling\n                                                    requirements (resource request,\n                                                    requiredDuringScheduling affinity\n                                                    expressions, etc.), compute a\n                                                    sum by iterating through the elements\n                                                    of this field and adding \"weight\"\n                                                    to the sum if the node has pods\n                                                    which matches the corresponding\n                                                    podAffinityTerm; the node(s) with\n                                                    the highest sum are the most preferred.\n                                                  items:\n                                                    description: The weights of all\n                                                      of the matched WeightedPodAffinityTerm\n                                                      fields are added per-node to\n                                                      find the most preferred node(s)\n                                                    properties:\n                                                      podAffinityTerm:\n                                                        description: Required. A pod\n                                                          affinity term, associated\n                                                          with the corresponding weight.\n                                                        properties:\n                                                          labelSelector:\n                                                            description: A label query\n                                                              over a set of resources,\n                                                              in this case pods.\n                                                            properties:\n                                                              matchExpressions:\n                                                                description: matchExpressions\n                                                                  is a list of label\n                                                                  selector requirements.\n                                                                  The requirements\n                                                                  are ANDed.\n                                                                items:\n                                                                  description: A label\n                                                                    selector requirement\n                                                                    is a selector\n                                                                    that contains\n                                                                    values, a key,\n                                                                    and an operator\n                                                                    that relates the\n                                                                    key and values.\n                                                                  properties:\n                                                                    key:\n                                                                      description: key\n                                                                        is the label\n                                                                        key that the\n                                                                        selector applies\n                                                                        to.\n                                                                      type: string\n                                                                    operator:\n                                                                      description: operator\n                                                                        represents\n                                                                        a key's relationship\n                                                                        to a set of\n                                                                        values. Valid\n                                                                        operators\n                                                                        are In, NotIn,\n                                                                        Exists and\n                                                                        DoesNotExist.\n                                                                      type: string\n                                                                    values:\n                                                                      description: values\n                                                                        is an array\n                                                                        of string\n                                                                        values. If\n                                                                        the operator\n                                                                        is In or NotIn,\n                                                                        the values\n                                                                        array must\n                                                                        be non-empty.\n                                                                        If the operator\n                                                                        is Exists\n                                                                        or DoesNotExist,\n                                                                        the values\n                                                                        array must\n                                                                        be empty.\n                                                                        This array\n                                                                        is replaced\n                                                                        during a strategic\n                                                                        merge patch.\n                                                                      items:\n                                                                        type: string\n                                                                      type: array\n                                                                  required:\n                                                                  - key\n                                                                  - operator\n                                                                  type: object\n                                                                type: array\n                                                              matchLabels:\n                                                                additionalProperties:\n                                                                  type: string\n                                                                description: matchLabels\n                                                                  is a map of {key,value}\n                                                                  pairs. A single\n                                                                  {key,value} in the\n                                                                  matchLabels map\n                                                                  is equivalent to\n                                                                  an element of matchExpressions,\n                                                                  whose key field\n                                                                  is \"key\", the operator\n                                                                  is \"In\", and the\n                                                                  values array contains\n                                                                  only \"value\". The\n                                                                  requirements are\n                                                                  ANDed.\n                                                                type: object\n                                                            type: object\n                                                            x-kubernetes-map-type: atomic\n                                                          namespaceSelector:\n                                                            description: A label query\n                                                              over the set of namespaces\n                                                              that the term applies\n                                                              to. The term is applied\n                                                              to the union of the\n                                                              namespaces selected\n                                                              by this field and the\n                                                              ones listed in the namespaces\n                                                              field. null selector\n                                                              and null or empty namespaces\n                                                              list means \"this pod's\n                                                              namespace\". An empty\n                                                              selector ({}) matches\n                                                              all namespaces.\n                                                            properties:\n                                                              matchExpressions:\n                                                                description: matchExpressions\n                                                                  is a list of label\n                                                                  selector requirements.\n                                                                  The requirements\n                                                                  are ANDed.\n                                                                items:\n                                                                  description: A label\n                                                                    selector requirement\n                                                                    is a selector\n                                                                    that contains\n                                                                    values, a key,\n                                                                    and an operator\n                                                                    that relates the\n                                                                    key and values.\n                                                                  properties:\n                                                                    key:\n                                                                      description: key\n                                                                        is the label\n                                                                        key that the\n                                                                        selector applies\n                                                                        to.\n                                                                      type: string\n                                                                    operator:\n                                                                      description: operator\n                                                                        represents\n                                                                        a key's relationship\n                                                                        to a set of\n                                                                        values. Valid\n                                                                        operators\n                                                                        are In, NotIn,\n                                                                        Exists and\n                                                                        DoesNotExist.\n                                                                      type: string\n                                                                    values:\n                                                                      description: values\n                                                                        is an array\n                                                                        of string\n                                                                        values. If\n                                                                        the operator\n                                                                        is In or NotIn,\n                                                                        the values\n                                                                        array must\n                                                                        be non-empty.\n                                                                        If the operator\n                                                                        is Exists\n                                                                        or DoesNotExist,\n                                                                        the values\n                                                                        array must\n                                                                        be empty.\n                                                                        This array\n                                                                        is replaced\n                                                                        during a strategic\n                                                                        merge patch.\n                                                                      items:\n                                                                        type: string\n                                                                      type: array\n                                                                  required:\n                                                                  - key\n                                                                  - operator\n                                                                  type: object\n                                                                type: array\n                                                              matchLabels:\n                                                                additionalProperties:\n                                                                  type: string\n                                                                description: matchLabels\n                                                                  is a map of {key,value}\n                                                                  pairs. A single\n                                                                  {key,value} in the\n                                                                  matchLabels map\n                                                                  is equivalent to\n                                                                  an element of matchExpressions,\n                                                                  whose key field\n                                                                  is \"key\", the operator\n                                                                  is \"In\", and the\n                                                                  values array contains\n                                                                  only \"value\". The\n                                                                  requirements are\n                                                                  ANDed.\n                                                                type: object\n                                                            type: object\n                                                            x-kubernetes-map-type: atomic\n                                                          namespaces:\n                                                            description: namespaces\n                                                              specifies a static list\n                                                              of namespace names that\n                                                              the term applies to.\n                                                              The term is applied\n                                                              to the union of the\n                                                              namespaces listed in\n                                                              this field and the ones\n                                                              selected by namespaceSelector.\n                                                              null or empty namespaces\n                                                              list and null namespaceSelector\n                                                              means \"this pod's namespace\".\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                          topologyKey:\n                                                            description: This pod\n                                                              should be co-located\n                                                              (affinity) or not co-located\n                                                              (anti-affinity) with\n                                                              the pods matching the\n                                                              labelSelector in the\n                                                              specified namespaces,\n                                                              where co-located is\n                                                              defined as running on\n                                                              a node whose value of\n                                                              the label with key topologyKey\n                                                              matches that of any\n                                                              node on which any of\n                                                              the selected pods is\n                                                              running. Empty topologyKey\n                                                              is not allowed.\n                                                            type: string\n                                                        required:\n                                                        - topologyKey\n                                                        type: object\n                                                      weight:\n                                                        description: weight associated\n                                                          with matching the corresponding\n                                                          podAffinityTerm, in the\n                                                          range 1-100.\n                                                        format: int32\n                                                        type: integer\n                                                    required:\n                                                    - podAffinityTerm\n                                                    - weight\n                                                    type: object\n                                                  type: array\n                                                requiredDuringSchedulingIgnoredDuringExecution:\n                                                  description: If the affinity requirements\n                                                    specified by this field are not\n                                                    met at scheduling time, the pod\n                                                    will not be scheduled onto the\n                                                    node. If the affinity requirements\n                                                    specified by this field cease\n                                                    to be met at some point during\n                                                    pod execution (e.g. due to a pod\n                                                    label update), the system may\n                                                    or may not try to eventually evict\n                                                    the pod from its node. When there\n                                                    are multiple elements, the lists\n                                                    of nodes corresponding to each\n                                                    podAffinityTerm are intersected,\n                                                    i.e. all terms must be satisfied.\n                                                  items:\n                                                    description: Defines a set of\n                                                      pods (namely those matching\n                                                      the labelSelector relative to\n                                                      the given namespace(s)) that\n                                                      this pod should be co-located\n                                                      (affinity) or not co-located\n                                                      (anti-affinity) with, where\n                                                      co-located is defined as running\n                                                      on a node whose value of the\n                                                      label with key <topologyKey>\n                                                      matches that of any node on\n                                                      which a pod of the set of pods\n                                                      is running\n                                                    properties:\n                                                      labelSelector:\n                                                        description: A label query\n                                                          over a set of resources,\n                                                          in this case pods.\n                                                        properties:\n                                                          matchExpressions:\n                                                            description: matchExpressions\n                                                              is a list of label selector\n                                                              requirements. The requirements\n                                                              are ANDed.\n                                                            items:\n                                                              description: A label\n                                                                selector requirement\n                                                                is a selector that\n                                                                contains values, a\n                                                                key, and an operator\n                                                                that relates the key\n                                                                and values.\n                                                              properties:\n                                                                key:\n                                                                  description: key\n                                                                    is the label key\n                                                                    that the selector\n                                                                    applies to.\n                                                                  type: string\n                                                                operator:\n                                                                  description: operator\n                                                                    represents a key's\n                                                                    relationship to\n                                                                    a set of values.\n                                                                    Valid operators\n                                                                    are In, NotIn,\n                                                                    Exists and DoesNotExist.\n                                                                  type: string\n                                                                values:\n                                                                  description: values\n                                                                    is an array of\n                                                                    string values.\n                                                                    If the operator\n                                                                    is In or NotIn,\n                                                                    the values array\n                                                                    must be non-empty.\n                                                                    If the operator\n                                                                    is Exists or DoesNotExist,\n                                                                    the values array\n                                                                    must be empty.\n                                                                    This array is\n                                                                    replaced during\n                                                                    a strategic merge\n                                                                    patch.\n                                                                  items:\n                                                                    type: string\n                                                                  type: array\n                                                              required:\n                                                              - key\n                                                              - operator\n                                                              type: object\n                                                            type: array\n                                                          matchLabels:\n                                                            additionalProperties:\n                                                              type: string\n                                                            description: matchLabels\n                                                              is a map of {key,value}\n                                                              pairs. A single {key,value}\n                                                              in the matchLabels map\n                                                              is equivalent to an\n                                                              element of matchExpressions,\n                                                              whose key field is \"key\",\n                                                              the operator is \"In\",\n                                                              and the values array\n                                                              contains only \"value\".\n                                                              The requirements are\n                                                              ANDed.\n                                                            type: object\n                                                        type: object\n                                                        x-kubernetes-map-type: atomic\n                                                      namespaceSelector:\n                                                        description: A label query\n                                                          over the set of namespaces\n                                                          that the term applies to.\n                                                          The term is applied to the\n                                                          union of the namespaces\n                                                          selected by this field and\n                                                          the ones listed in the namespaces\n                                                          field. null selector and\n                                                          null or empty namespaces\n                                                          list means \"this pod's namespace\".\n                                                          An empty selector ({}) matches\n                                                          all namespaces.\n                                                        properties:\n                                                          matchExpressions:\n                                                            description: matchExpressions\n                                                              is a list of label selector\n                                                              requirements. The requirements\n                                                              are ANDed.\n                                                            items:\n                                                              description: A label\n                                                                selector requirement\n                                                                is a selector that\n                                                                contains values, a\n                                                                key, and an operator\n                                                                that relates the key\n                                                                and values.\n                                                              properties:\n                                                                key:\n                                                                  description: key\n                                                                    is the label key\n                                                                    that the selector\n                                                                    applies to.\n                                                                  type: string\n                                                                operator:\n                                                                  description: operator\n                                                                    represents a key's\n                                                                    relationship to\n                                                                    a set of values.\n                                                                    Valid operators\n                                                                    are In, NotIn,\n                                                                    Exists and DoesNotExist.\n                                                                  type: string\n                                                                values:\n                                                                  description: values\n                                                                    is an array of\n                                                                    string values.\n                                                                    If the operator\n                                                                    is In or NotIn,\n                                                                    the values array\n                                                                    must be non-empty.\n                                                                    If the operator\n                                                                    is Exists or DoesNotExist,\n                                                                    the values array\n                                                                    must be empty.\n                                                                    This array is\n                                                                    replaced during\n                                                                    a strategic merge\n                                                                    patch.\n                                                                  items:\n                                                                    type: string\n                                                                  type: array\n                                                              required:\n                                                              - key\n                                                              - operator\n                                                              type: object\n                                                            type: array\n                                                          matchLabels:\n                                                            additionalProperties:\n                                                              type: string\n                                                            description: matchLabels\n                                                              is a map of {key,value}\n                                                              pairs. A single {key,value}\n                                                              in the matchLabels map\n                                                              is equivalent to an\n                                                              element of matchExpressions,\n                                                              whose key field is \"key\",\n                                                              the operator is \"In\",\n                                                              and the values array\n                                                              contains only \"value\".\n                                                              The requirements are\n                                                              ANDed.\n                                                            type: object\n                                                        type: object\n                                                        x-kubernetes-map-type: atomic\n                                                      namespaces:\n                                                        description: namespaces specifies\n                                                          a static list of namespace\n                                                          names that the term applies\n                                                          to. The term is applied\n                                                          to the union of the namespaces\n                                                          listed in this field and\n                                                          the ones selected by namespaceSelector.\n                                                          null or empty namespaces\n                                                          list and null namespaceSelector\n                                                          means \"this pod's namespace\".\n                                                        items:\n                                                          type: string\n                                                        type: array\n                                                      topologyKey:\n                                                        description: This pod should\n                                                          be co-located (affinity)\n                                                          or not co-located (anti-affinity)\n                                                          with the pods matching the\n                                                          labelSelector in the specified\n                                                          namespaces, where co-located\n                                                          is defined as running on\n                                                          a node whose value of the\n                                                          label with key topologyKey\n                                                          matches that of any node\n                                                          on which any of the selected\n                                                          pods is running. Empty topologyKey\n                                                          is not allowed.\n                                                        type: string\n                                                    required:\n                                                    - topologyKey\n                                                    type: object\n                                                  type: array\n                                              type: object\n                                            podAntiAffinity:\n                                              description: Describes pod anti-affinity\n                                                scheduling rules (e.g. avoid putting\n                                                this pod in the same node, zone, etc.\n                                                as some other pod(s)).\n                                              properties:\n                                                preferredDuringSchedulingIgnoredDuringExecution:\n                                                  description: The scheduler will\n                                                    prefer to schedule pods to nodes\n                                                    that satisfy the anti-affinity\n                                                    expressions specified by this\n                                                    field, but it may choose a node\n                                                    that violates one or more of the\n                                                    expressions. The node that is\n                                                    most preferred is the one with\n                                                    the greatest sum of weights, i.e.\n                                                    for each node that meets all of\n                                                    the scheduling requirements (resource\n                                                    request, requiredDuringScheduling\n                                                    anti-affinity expressions, etc.),\n                                                    compute a sum by iterating through\n                                                    the elements of this field and\n                                                    adding \"weight\" to the sum if\n                                                    the node has pods which matches\n                                                    the corresponding podAffinityTerm;\n                                                    the node(s) with the highest sum\n                                                    are the most preferred.\n                                                  items:\n                                                    description: The weights of all\n                                                      of the matched WeightedPodAffinityTerm\n                                                      fields are added per-node to\n                                                      find the most preferred node(s)\n                                                    properties:\n                                                      podAffinityTerm:\n                                                        description: Required. A pod\n                                                          affinity term, associated\n                                                          with the corresponding weight.\n                                                        properties:\n                                                          labelSelector:\n                                                            description: A label query\n                                                              over a set of resources,\n                                                              in this case pods.\n                                                            properties:\n                                                              matchExpressions:\n                                                                description: matchExpressions\n                                                                  is a list of label\n                                                                  selector requirements.\n                                                                  The requirements\n                                                                  are ANDed.\n                                                                items:\n                                                                  description: A label\n                                                                    selector requirement\n                                                                    is a selector\n                                                                    that contains\n                                                                    values, a key,\n                                                                    and an operator\n                                                                    that relates the\n                                                                    key and values.\n                                                                  properties:\n                                                                    key:\n                                                                      description: key\n                                                                        is the label\n                                                                        key that the\n                                                                        selector applies\n                                                                        to.\n                                                                      type: string\n                                                                    operator:\n                                                                      description: operator\n                                                                        represents\n                                                                        a key's relationship\n                                                                        to a set of\n                                                                        values. Valid\n                                                                        operators\n                                                                        are In, NotIn,\n                                                                        Exists and\n                                                                        DoesNotExist.\n                                                                      type: string\n                                                                    values:\n                                                                      description: values\n                                                                        is an array\n                                                                        of string\n                                                                        values. If\n                                                                        the operator\n                                                                        is In or NotIn,\n                                                                        the values\n                                                                        array must\n                                                                        be non-empty.\n                                                                        If the operator\n                                                                        is Exists\n                                                                        or DoesNotExist,\n                                                                        the values\n                                                                        array must\n                                                                        be empty.\n                                                                        This array\n                                                                        is replaced\n                                                                        during a strategic\n                                                                        merge patch.\n                                                                      items:\n                                                                        type: string\n                                                                      type: array\n                                                                  required:\n                                                                  - key\n                                                                  - operator\n                                                                  type: object\n                                                                type: array\n                                                              matchLabels:\n                                                                additionalProperties:\n                                                                  type: string\n                                                                description: matchLabels\n                                                                  is a map of {key,value}\n                                                                  pairs. A single\n                                                                  {key,value} in the\n                                                                  matchLabels map\n                                                                  is equivalent to\n                                                                  an element of matchExpressions,\n                                                                  whose key field\n                                                                  is \"key\", the operator\n                                                                  is \"In\", and the\n                                                                  values array contains\n                                                                  only \"value\". The\n                                                                  requirements are\n                                                                  ANDed.\n                                                                type: object\n                                                            type: object\n                                                            x-kubernetes-map-type: atomic\n                                                          namespaceSelector:\n                                                            description: A label query\n                                                              over the set of namespaces\n                                                              that the term applies\n                                                              to. The term is applied\n                                                              to the union of the\n                                                              namespaces selected\n                                                              by this field and the\n                                                              ones listed in the namespaces\n                                                              field. null selector\n                                                              and null or empty namespaces\n                                                              list means \"this pod's\n                                                              namespace\". An empty\n                                                              selector ({}) matches\n                                                              all namespaces.\n                                                            properties:\n                                                              matchExpressions:\n                                                                description: matchExpressions\n                                                                  is a list of label\n                                                                  selector requirements.\n                                                                  The requirements\n                                                                  are ANDed.\n                                                                items:\n                                                                  description: A label\n                                                                    selector requirement\n                                                                    is a selector\n                                                                    that contains\n                                                                    values, a key,\n                                                                    and an operator\n                                                                    that relates the\n                                                                    key and values.\n                                                                  properties:\n                                                                    key:\n                                                                      description: key\n                                                                        is the label\n                                                                        key that the\n                                                                        selector applies\n                                                                        to.\n                                                                      type: string\n                                                                    operator:\n                                                                      description: operator\n                                                                        represents\n                                                                        a key's relationship\n                                                                        to a set of\n                                                                        values. Valid\n                                                                        operators\n                                                                        are In, NotIn,\n                                                                        Exists and\n                                                                        DoesNotExist.\n                                                                      type: string\n                                                                    values:\n                                                                      description: values\n                                                                        is an array\n                                                                        of string\n                                                                        values. If\n                                                                        the operator\n                                                                        is In or NotIn,\n                                                                        the values\n                                                                        array must\n                                                                        be non-empty.\n                                                                        If the operator\n                                                                        is Exists\n                                                                        or DoesNotExist,\n                                                                        the values\n                                                                        array must\n                                                                        be empty.\n                                                                        This array\n                                                                        is replaced\n                                                                        during a strategic\n                                                                        merge patch.\n                                                                      items:\n                                                                        type: string\n                                                                      type: array\n                                                                  required:\n                                                                  - key\n                                                                  - operator\n                                                                  type: object\n                                                                type: array\n                                                              matchLabels:\n                                                                additionalProperties:\n                                                                  type: string\n                                                                description: matchLabels\n                                                                  is a map of {key,value}\n                                                                  pairs. A single\n                                                                  {key,value} in the\n                                                                  matchLabels map\n                                                                  is equivalent to\n                                                                  an element of matchExpressions,\n                                                                  whose key field\n                                                                  is \"key\", the operator\n                                                                  is \"In\", and the\n                                                                  values array contains\n                                                                  only \"value\". The\n                                                                  requirements are\n                                                                  ANDed.\n                                                                type: object\n                                                            type: object\n                                                            x-kubernetes-map-type: atomic\n                                                          namespaces:\n                                                            description: namespaces\n                                                              specifies a static list\n                                                              of namespace names that\n                                                              the term applies to.\n                                                              The term is applied\n                                                              to the union of the\n                                                              namespaces listed in\n                                                              this field and the ones\n                                                              selected by namespaceSelector.\n                                                              null or empty namespaces\n                                                              list and null namespaceSelector\n                                                              means \"this pod's namespace\".\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                          topologyKey:\n                                                            description: This pod\n                                                              should be co-located\n                                                              (affinity) or not co-located\n                                                              (anti-affinity) with\n                                                              the pods matching the\n                                                              labelSelector in the\n                                                              specified namespaces,\n                                                              where co-located is\n                                                              defined as running on\n                                                              a node whose value of\n                                                              the label with key topologyKey\n                                                              matches that of any\n                                                              node on which any of\n                                                              the selected pods is\n                                                              running. Empty topologyKey\n                                                              is not allowed.\n                                                            type: string\n                                                        required:\n                                                        - topologyKey\n                                                        type: object\n                                                      weight:\n                                                        description: weight associated\n                                                          with matching the corresponding\n                                                          podAffinityTerm, in the\n                                                          range 1-100.\n                                                        format: int32\n                                                        type: integer\n                                                    required:\n                                                    - podAffinityTerm\n                                                    - weight\n                                                    type: object\n                                                  type: array\n                                                requiredDuringSchedulingIgnoredDuringExecution:\n                                                  description: If the anti-affinity\n                                                    requirements specified by this\n                                                    field are not met at scheduling\n                                                    time, the pod will not be scheduled\n                                                    onto the node. If the anti-affinity\n                                                    requirements specified by this\n                                                    field cease to be met at some\n                                                    point during pod execution (e.g.\n                                                    due to a pod label update), the\n                                                    system may or may not try to eventually\n                                                    evict the pod from its node. When\n                                                    there are multiple elements, the\n                                                    lists of nodes corresponding to\n                                                    each podAffinityTerm are intersected,\n                                                    i.e. all terms must be satisfied.\n                                                  items:\n                                                    description: Defines a set of\n                                                      pods (namely those matching\n                                                      the labelSelector relative to\n                                                      the given namespace(s)) that\n                                                      this pod should be co-located\n                                                      (affinity) or not co-located\n                                                      (anti-affinity) with, where\n                                                      co-located is defined as running\n                                                      on a node whose value of the\n                                                      label with key <topologyKey>\n                                                      matches that of any node on\n                                                      which a pod of the set of pods\n                                                      is running\n                                                    properties:\n                                                      labelSelector:\n                                                        description: A label query\n                                                          over a set of resources,\n                                                          in this case pods.\n                                                        properties:\n                                                          matchExpressions:\n                                                            description: matchExpressions\n                                                              is a list of label selector\n                                                              requirements. The requirements\n                                                              are ANDed.\n                                                            items:\n                                                              description: A label\n                                                                selector requirement\n                                                                is a selector that\n                                                                contains values, a\n                                                                key, and an operator\n                                                                that relates the key\n                                                                and values.\n                                                              properties:\n                                                                key:\n                                                                  description: key\n                                                                    is the label key\n                                                                    that the selector\n                                                                    applies to.\n                                                                  type: string\n                                                                operator:\n                                                                  description: operator\n                                                                    represents a key's\n                                                                    relationship to\n                                                                    a set of values.\n                                                                    Valid operators\n                                                                    are In, NotIn,\n                                                                    Exists and DoesNotExist.\n                                                                  type: string\n                                                                values:\n                                                                  description: values\n                                                                    is an array of\n                                                                    string values.\n                                                                    If the operator\n                                                                    is In or NotIn,\n                                                                    the values array\n                                                                    must be non-empty.\n                                                                    If the operator\n                                                                    is Exists or DoesNotExist,\n                                                                    the values array\n                                                                    must be empty.\n                                                                    This array is\n                                                                    replaced during\n                                                                    a strategic merge\n                                                                    patch.\n                                                                  items:\n                                                                    type: string\n                                                                  type: array\n                                                              required:\n                                                              - key\n                                                              - operator\n                                                              type: object\n                                                            type: array\n                                                          matchLabels:\n                                                            additionalProperties:\n                                                              type: string\n                                                            description: matchLabels\n                                                              is a map of {key,value}\n                                                              pairs. A single {key,value}\n                                                              in the matchLabels map\n                                                              is equivalent to an\n                                                              element of matchExpressions,\n                                                              whose key field is \"key\",\n                                                              the operator is \"In\",\n                                                              and the values array\n                                                              contains only \"value\".\n                                                              The requirements are\n                                                              ANDed.\n                                                            type: object\n                                                        type: object\n                                                        x-kubernetes-map-type: atomic\n                                                      namespaceSelector:\n                                                        description: A label query\n                                                          over the set of namespaces\n                                                          that the term applies to.\n                                                          The term is applied to the\n                                                          union of the namespaces\n                                                          selected by this field and\n                                                          the ones listed in the namespaces\n                                                          field. null selector and\n                                                          null or empty namespaces\n                                                          list means \"this pod's namespace\".\n                                                          An empty selector ({}) matches\n                                                          all namespaces.\n                                                        properties:\n                                                          matchExpressions:\n                                                            description: matchExpressions\n                                                              is a list of label selector\n                                                              requirements. The requirements\n                                                              are ANDed.\n                                                            items:\n                                                              description: A label\n                                                                selector requirement\n                                                                is a selector that\n                                                                contains values, a\n                                                                key, and an operator\n                                                                that relates the key\n                                                                and values.\n                                                              properties:\n                                                                key:\n                                                                  description: key\n                                                                    is the label key\n                                                                    that the selector\n                                                                    applies to.\n                                                                  type: string\n                                                                operator:\n                                                                  description: operator\n                                                                    represents a key's\n                                                                    relationship to\n                                                                    a set of values.\n                                                                    Valid operators\n                                                                    are In, NotIn,\n                                                                    Exists and DoesNotExist.\n                                                                  type: string\n                                                                values:\n                                                                  description: values\n                                                                    is an array of\n                                                                    string values.\n                                                                    If the operator\n                                                                    is In or NotIn,\n                                                                    the values array\n                                                                    must be non-empty.\n                                                                    If the operator\n                                                                    is Exists or DoesNotExist,\n                                                                    the values array\n                                                                    must be empty.\n                                                                    This array is\n                                                                    replaced during\n                                                                    a strategic merge\n                                                                    patch.\n                                                                  items:\n                                                                    type: string\n                                                                  type: array\n                                                              required:\n                                                              - key\n                                                              - operator\n                                                              type: object\n                                                            type: array\n                                                          matchLabels:\n                                                            additionalProperties:\n                                                              type: string\n                                                            description: matchLabels\n                                                              is a map of {key,value}\n                                                              pairs. A single {key,value}\n                                                              in the matchLabels map\n                                                              is equivalent to an\n                                                              element of matchExpressions,\n                                                              whose key field is \"key\",\n                                                              the operator is \"In\",\n                                                              and the values array\n                                                              contains only \"value\".\n                                                              The requirements are\n                                                              ANDed.\n                                                            type: object\n                                                        type: object\n                                                        x-kubernetes-map-type: atomic\n                                                      namespaces:\n                                                        description: namespaces specifies\n                                                          a static list of namespace\n                                                          names that the term applies\n                                                          to. The term is applied\n                                                          to the union of the namespaces\n                                                          listed in this field and\n                                                          the ones selected by namespaceSelector.\n                                                          null or empty namespaces\n                                                          list and null namespaceSelector\n                                                          means \"this pod's namespace\".\n                                                        items:\n                                                          type: string\n                                                        type: array\n                                                      topologyKey:\n                                                        description: This pod should\n                                                          be co-located (affinity)\n                                                          or not co-located (anti-affinity)\n                                                          with the pods matching the\n                                                          labelSelector in the specified\n                                                          namespaces, where co-located\n                                                          is defined as running on\n                                                          a node whose value of the\n                                                          label with key topologyKey\n                                                          matches that of any node\n                                                          on which any of the selected\n                                                          pods is running. Empty topologyKey\n                                                          is not allowed.\n                                                        type: string\n                                                    required:\n                                                    - topologyKey\n                                                    type: object\n                                                  type: array\n                                              type: object\n                                          type: object\n                                        imagePullSecrets:\n                                          description: If specified, the pod's imagePullSecrets\n                                          items:\n                                            description: LocalObjectReference contains\n                                              enough information to let you locate\n                                              the referenced object inside the same\n                                              namespace.\n                                            properties:\n                                              name:\n                                                description: 'Name of the referent.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                  TODO: Add other useful fields. apiVersion,\n                                                  kind, uid?'\n                                                type: string\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                          type: array\n                                        nodeSelector:\n                                          additionalProperties:\n                                            type: string\n                                          description: 'NodeSelector is a selector\n                                            which must be true for the pod to fit\n                                            on a node. Selector which must match a\n                                            node''s labels for the pod to be scheduled\n                                            on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/'\n                                          type: object\n                                        priorityClassName:\n                                          description: If specified, the pod's priorityClassName.\n                                          type: string\n                                        serviceAccountName:\n                                          description: If specified, the pod's service\n                                            account\n                                          type: string\n                                        tolerations:\n                                          description: If specified, the pod's tolerations.\n                                          items:\n                                            description: The pod this Toleration is\n                                              attached to tolerates any taint that\n                                              matches the triple <key,value,effect>\n                                              using the matching operator <operator>.\n                                            properties:\n                                              effect:\n                                                description: Effect indicates the\n                                                  taint effect to match. Empty means\n                                                  match all taint effects. When specified,\n                                                  allowed values are NoSchedule, PreferNoSchedule\n                                                  and NoExecute.\n                                                type: string\n                                              key:\n                                                description: Key is the taint key\n                                                  that the toleration applies to.\n                                                  Empty means match all taint keys.\n                                                  If the key is empty, operator must\n                                                  be Exists; this combination means\n                                                  to match all values and all keys.\n                                                type: string\n                                              operator:\n                                                description: Operator represents a\n                                                  key's relationship to the value.\n                                                  Valid operators are Exists and Equal.\n                                                  Defaults to Equal. Exists is equivalent\n                                                  to wildcard for value, so that a\n                                                  pod can tolerate all taints of a\n                                                  particular category.\n                                                type: string\n                                              tolerationSeconds:\n                                                description: TolerationSeconds represents\n                                                  the period of time the toleration\n                                                  (which must be of effect NoExecute,\n                                                  otherwise this field is ignored)\n                                                  tolerates the taint. By default,\n                                                  it is not set, which means tolerate\n                                                  the taint forever (do not evict).\n                                                  Zero and negative values will be\n                                                  treated as 0 (evict immediately)\n                                                  by the system.\n                                                format: int64\n                                                type: integer\n                                              value:\n                                                description: Value is the taint value\n                                                  the toleration matches to. If the\n                                                  operator is Exists, the value should\n                                                  be empty, otherwise just a regular\n                                                  string.\n                                                type: string\n                                            type: object\n                                          type: array\n                                      type: object\n                                  type: object\n                                serviceType:\n                                  description: Optional service type for Kubernetes\n                                    solver service. Supported values are NodePort\n                                    or ClusterIP. If unset, defaults to NodePort.\n                                  type: string\n                              type: object\n                          type: object\n                        selector:\n                          description: Selector selects a set of DNSNames on the Certificate\n                            resource that should be solved using this challenge solver.\n                            If not specified, the solver will be treated as the 'default'\n                            solver with the lowest priority, i.e. if any other solver\n                            has a more specific match, it will be used instead.\n                          properties:\n                            dnsNames:\n                              description: List of DNSNames that this solver will\n                                be used to solve. If specified and a match is found,\n                                a dnsNames selector will take precedence over a dnsZones\n                                selector. If multiple solvers match with the same\n                                dnsNames value, the solver with the most matching\n                                labels in matchLabels will be selected. If neither\n                                has more matches, the solver defined earlier in the\n                                list will be selected.\n                              items:\n                                type: string\n                              type: array\n                            dnsZones:\n                              description: List of DNSZones that this solver will\n                                be used to solve. The most specific DNS zone match\n                                specified here will take precedence over other DNS\n                                zone matches, so a solver specifying sys.example.com\n                                will be selected over one specifying example.com for\n                                the domain www.sys.example.com. If multiple solvers\n                                match with the same dnsZones value, the solver with\n                                the most matching labels in matchLabels will be selected.\n                                If neither has more matches, the solver defined earlier\n                                in the list will be selected.\n                              items:\n                                type: string\n                              type: array\n                            matchLabels:\n                              additionalProperties:\n                                type: string\n                              description: A label selector that is used to refine\n                                the set of certificate's that this challenge solver\n                                will apply to.\n                              type: object\n                          type: object\n                      type: object\n                    type: array\n                required:\n                - privateKeySecretRef\n                - server\n                type: object\n              ca:\n                description: CA configures this issuer to sign certificates using\n                  a signing CA keypair stored in a Secret resource. This is used to\n                  build internal PKIs that are managed by cert-manager.\n                properties:\n                  crlDistributionPoints:\n                    description: The CRL distribution points is an X.509 v3 certificate\n                      extension which identifies the location of the CRL from which\n                      the revocation of this certificate can be checked. If not set,\n                      certificates will be issued without distribution points set.\n                    items:\n                      type: string\n                    type: array\n                  ocspServers:\n                    description: The OCSP server list is an X.509 v3 extension that\n                      defines a list of URLs of OCSP responders. The OCSP responders\n                      can be queried for the revocation status of an issued certificate.\n                      If not set, the certificate will be issued with no OCSP servers\n                      set. For example, an OCSP server URL could be \"http://ocsp.int-x3.letsencrypt.org\".\n                    items:\n                      type: string\n                    type: array\n                  secretName:\n                    description: SecretName is the name of the secret used to sign\n                      Certificates issued by this Issuer.\n                    type: string\n                required:\n                - secretName\n                type: object\n              selfSigned:\n                description: SelfSigned configures this issuer to 'self sign' certificates\n                  using the private key used to create the CertificateRequest object.\n                properties:\n                  crlDistributionPoints:\n                    description: The CRL distribution points is an X.509 v3 certificate\n                      extension which identifies the location of the CRL from which\n                      the revocation of this certificate can be checked. If not set\n                      certificate will be issued without CDP. Values are strings.\n                    items:\n                      type: string\n                    type: array\n                type: object\n              vault:\n                description: Vault configures this issuer to sign certificates using\n                  a HashiCorp Vault PKI backend.\n                properties:\n                  auth:\n                    description: Auth configures how cert-manager authenticates with\n                      the Vault server.\n                    properties:\n                      appRole:\n                        description: AppRole authenticates with Vault using the App\n                          Role auth mechanism, with the role and secret stored in\n                          a Kubernetes Secret resource.\n                        properties:\n                          path:\n                            description: 'Path where the App Role authentication backend\n                              is mounted in Vault, e.g: \"approle\"'\n                            type: string\n                          roleId:\n                            description: RoleID configured in the App Role authentication\n                              backend when setting up the authentication backend in\n                              Vault.\n                            type: string\n                          secretRef:\n                            description: Reference to a key in a Secret that contains\n                              the App Role secret used to authenticate with Vault.\n                              The `key` field must be specified and denotes which\n                              entry within the Secret resource is used as the app\n                              role secret.\n                            properties:\n                              key:\n                                description: The key of the entry in the Secret resource's\n                                  `data` field to be used. Some instances of this\n                                  field may be defaulted, in others it may be required.\n                                type: string\n                              name:\n                                description: 'Name of the resource being referred\n                                  to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                type: string\n                            required:\n                            - name\n                            type: object\n                        required:\n                        - path\n                        - roleId\n                        - secretRef\n                        type: object\n                      kubernetes:\n                        description: Kubernetes authenticates with Vault by passing\n                          the ServiceAccount token stored in the named Secret resource\n                          to the Vault server.\n                        properties:\n                          mountPath:\n                            description: The Vault mountPath here is the mount path\n                              to use when authenticating with Vault. For example,\n                              setting a value to `/v1/auth/foo`, will use the path\n                              `/v1/auth/foo/login` to authenticate with Vault. If\n                              unspecified, the default value \"/v1/auth/kubernetes\"\n                              will be used.\n                            type: string\n                          role:\n                            description: A required field containing the Vault Role\n                              to assume. A Role binds a Kubernetes ServiceAccount\n                              with a set of Vault policies.\n                            type: string\n                          secretRef:\n                            description: The required Secret field containing a Kubernetes\n                              ServiceAccount JWT used for authenticating with Vault.\n                              Use of 'ambient credentials' is not supported.\n                            properties:\n                              key:\n                                description: The key of the entry in the Secret resource's\n                                  `data` field to be used. Some instances of this\n                                  field may be defaulted, in others it may be required.\n                                type: string\n                              name:\n                                description: 'Name of the resource being referred\n                                  to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                type: string\n                            required:\n                            - name\n                            type: object\n                          serviceAccountRef:\n                            description: A reference to a service account that will\n                              be used to request a bound token (also known as \"projected\n                              token\"). Compared to using \"secretRef\", using this field\n                              means that you don't rely on statically bound tokens.\n                              To use this field, you must configure an RBAC rule to\n                              let cert-manager request a token.\n                            properties:\n                              name:\n                                description: Name of the ServiceAccount used to request\n                                  a token.\n                                type: string\n                            required:\n                            - name\n                            type: object\n                        required:\n                        - role\n                        type: object\n                      tokenSecretRef:\n                        description: TokenSecretRef authenticates with Vault by presenting\n                          a token.\n                        properties:\n                          key:\n                            description: The key of the entry in the Secret resource's\n                              `data` field to be used. Some instances of this field\n                              may be defaulted, in others it may be required.\n                            type: string\n                          name:\n                            description: 'Name of the resource being referred to.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                            type: string\n                        required:\n                        - name\n                        type: object\n                    type: object\n                  caBundle:\n                    description: Base64-encoded bundle of PEM CAs which will be used\n                      to validate the certificate chain presented by Vault. Only used\n                      if using HTTPS to connect to Vault and ignored for HTTP connections.\n                      Mutually exclusive with CABundleSecretRef. If neither CABundle\n                      nor CABundleSecretRef are defined, the certificate bundle in\n                      the cert-manager controller container is used to validate the\n                      TLS connection.\n                    format: byte\n                    type: string\n                  caBundleSecretRef:\n                    description: Reference to a Secret containing a bundle of PEM-encoded\n                      CAs to use when verifying the certificate chain presented by\n                      Vault when using HTTPS. Mutually exclusive with CABundle. If\n                      neither CABundle nor CABundleSecretRef are defined, the certificate\n                      bundle in the cert-manager controller container is used to validate\n                      the TLS connection. If no key for the Secret is specified, cert-manager\n                      will default to 'ca.crt'.\n                    properties:\n                      key:\n                        description: The key of the entry in the Secret resource's\n                          `data` field to be used. Some instances of this field may\n                          be defaulted, in others it may be required.\n                        type: string\n                      name:\n                        description: 'Name of the resource being referred to. More\n                          info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                        type: string\n                    required:\n                    - name\n                    type: object\n                  namespace:\n                    description: 'Name of the vault namespace. Namespaces is a set\n                      of features within Vault Enterprise that allows Vault environments\n                      to support Secure Multi-tenancy. e.g: \"ns1\" More about namespaces\n                      can be found here https://www.vaultproject.io/docs/enterprise/namespaces'\n                    type: string\n                  path:\n                    description: 'Path is the mount path of the Vault PKI backend''s\n                      `sign` endpoint, e.g: \"my_pki_mount/sign/my-role-name\".'\n                    type: string\n                  server:\n                    description: 'Server is the connection address for the Vault server,\n                      e.g: \"https://vault.example.com:8200\".'\n                    type: string\n                required:\n                - auth\n                - path\n                - server\n                type: object\n              venafi:\n                description: Venafi configures this issuer to sign certificates using\n                  a Venafi TPP or Venafi Cloud policy zone.\n                properties:\n                  cloud:\n                    description: Cloud specifies the Venafi cloud configuration settings.\n                      Only one of TPP or Cloud may be specified.\n                    properties:\n                      apiTokenSecretRef:\n                        description: APITokenSecretRef is a secret key selector for\n                          the Venafi Cloud API token.\n                        properties:\n                          key:\n                            description: The key of the entry in the Secret resource's\n                              `data` field to be used. Some instances of this field\n                              may be defaulted, in others it may be required.\n                            type: string\n                          name:\n                            description: 'Name of the resource being referred to.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                            type: string\n                        required:\n                        - name\n                        type: object\n                      url:\n                        description: URL is the base URL for Venafi Cloud. Defaults\n                          to \"https://api.venafi.cloud/v1\".\n                        type: string\n                    required:\n                    - apiTokenSecretRef\n                    type: object\n                  tpp:\n                    description: TPP specifies Trust Protection Platform configuration\n                      settings. Only one of TPP or Cloud may be specified.\n                    properties:\n                      caBundle:\n                        description: Base64-encoded bundle of PEM CAs which will be\n                          used to validate the certificate chain presented by the\n                          TPP server. Only used if using HTTPS; ignored for HTTP.\n                          If undefined, the certificate bundle in the cert-manager\n                          controller container is used to validate the chain.\n                        format: byte\n                        type: string\n                      credentialsRef:\n                        description: CredentialsRef is a reference to a Secret containing\n                          the username and password for the TPP server. The secret\n                          must contain two keys, 'username' and 'password'.\n                        properties:\n                          name:\n                            description: 'Name of the resource being referred to.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                            type: string\n                        required:\n                        - name\n                        type: object\n                      url:\n                        description: 'URL is the base URL for the vedsdk endpoint\n                          of the Venafi TPP instance, for example: \"https://tpp.example.com/vedsdk\".'\n                        type: string\n                    required:\n                    - credentialsRef\n                    - url\n                    type: object\n                  zone:\n                    description: Zone is the Venafi Policy Zone to use for this issuer.\n                      All requests made to the Venafi platform will be restricted\n                      by the named zone policy. This field is required.\n                    type: string\n                required:\n                - zone\n                type: object\n            type: object\n          status:\n            description: Status of the ClusterIssuer. This is set and managed automatically.\n            properties:\n              acme:\n                description: ACME specific status options. This field should only\n                  be set if the Issuer is configured to use an ACME server to issue\n                  certificates.\n                properties:\n                  lastPrivateKeyHash:\n                    description: LastPrivateKeyHash is a hash of the private key associated\n                      with the latest registered ACME account, in order to track changes\n                      made to registered account associated with the Issuer\n                    type: string\n                  lastRegisteredEmail:\n                    description: LastRegisteredEmail is the email associated with\n                      the latest registered ACME account, in order to track changes\n                      made to registered account associated with the  Issuer\n                    type: string\n                  uri:\n                    description: URI is the unique account identifier, which can also\n                      be used to retrieve account details from the CA\n                    type: string\n                type: object\n              conditions:\n                description: List of status conditions to indicate the status of a\n                  CertificateRequest. Known condition types are `Ready`.\n                items:\n                  description: IssuerCondition contains condition information for\n                    an Issuer.\n                  properties:\n                    lastTransitionTime:\n                      description: LastTransitionTime is the timestamp corresponding\n                        to the last status change of this condition.\n                      format: date-time\n                      type: string\n                    message:\n                      description: Message is a human readable description of the\n                        details of the last transition, complementing reason.\n                      type: string\n                    observedGeneration:\n                      description: If set, this represents the .metadata.generation\n                        that the condition was set based upon. For instance, if .metadata.generation\n                        is currently 12, but the .status.condition[x].observedGeneration\n                        is 9, the condition is out of date with respect to the current\n                        state of the Issuer.\n                      format: int64\n                      type: integer\n                    reason:\n                      description: Reason is a brief machine readable explanation\n                        for the condition's last transition.\n                      type: string\n                    status:\n                      description: Status of the condition, one of (`True`, `False`,\n                        `Unknown`).\n                      enum:\n                      - \"True\"\n                      - \"False\"\n                      - Unknown\n                      type: string\n                    type:\n                      description: Type of the condition, known values are (`Ready`).\n                      type: string\n                  required:\n                  - status\n                  - type\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - type\n                x-kubernetes-list-type: map\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n    subresources:\n      status: {}\n---\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  labels:\n    app: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: issuers.cert-manager.io\nspec:\n  group: cert-manager.io\n  names:\n    categories:\n    - cert-manager\n    kind: Issuer\n    listKind: IssuerList\n    plural: issuers\n    singular: issuer\n  scope: Namespaced\n  versions:\n  - additionalPrinterColumns:\n    - jsonPath: .status.conditions[?(@.type==\"Ready\")].status\n      name: Ready\n      type: string\n    - jsonPath: .status.conditions[?(@.type==\"Ready\")].message\n      name: Status\n      priority: 1\n      type: string\n    - description: CreationTimestamp is a timestamp representing the server time when\n        this object was created. It is not guaranteed to be set in happens-before\n        order across separate operations. Clients may not set this value. It is represented\n        in RFC3339 form and is in UTC.\n      jsonPath: .metadata.creationTimestamp\n      name: Age\n      type: date\n    name: v1\n    schema:\n      openAPIV3Schema:\n        description: An Issuer represents a certificate issuing authority which can\n          be referenced as part of `issuerRef` fields. It is scoped to a single namespace\n          and can therefore only be referenced by resources within the same namespace.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: Desired state of the Issuer resource.\n            properties:\n              acme:\n                description: ACME configures this issuer to communicate with a RFC8555\n                  (ACME) server to obtain signed x509 certificates.\n                properties:\n                  caBundle:\n                    description: Base64-encoded bundle of PEM CAs which can be used\n                      to validate the certificate chain presented by the ACME server.\n                      Mutually exclusive with SkipTLSVerify; prefer using CABundle\n                      to prevent various kinds of security vulnerabilities. If CABundle\n                      and SkipTLSVerify are unset, the system certificate bundle inside\n                      the container is used to validate the TLS connection.\n                    format: byte\n                    type: string\n                  disableAccountKeyGeneration:\n                    description: Enables or disables generating a new ACME account\n                      key. If true, the Issuer resource will *not* request a new account\n                      but will expect the account key to be supplied via an existing\n                      secret. If false, the cert-manager system will generate a new\n                      ACME account key for the Issuer. Defaults to false.\n                    type: boolean\n                  email:\n                    description: Email is the email address to be associated with\n                      the ACME account. This field is optional, but it is strongly\n                      recommended to be set. It will be used to contact you in case\n                      of issues with your account or certificates, including expiry\n                      notification emails. This field may be updated after the account\n                      is initially registered.\n                    type: string\n                  enableDurationFeature:\n                    description: Enables requesting a Not After date on certificates\n                      that matches the duration of the certificate. This is not supported\n                      by all ACME servers like Let's Encrypt. If set to true when\n                      the ACME server does not support it it will create an error\n                      on the Order. Defaults to false.\n                    type: boolean\n                  externalAccountBinding:\n                    description: ExternalAccountBinding is a reference to a CA external\n                      account of the ACME server. If set, upon registration cert-manager\n                      will attempt to associate the given external account credentials\n                      with the registered ACME account.\n                    properties:\n                      keyAlgorithm:\n                        description: 'Deprecated: keyAlgorithm field exists for historical\n                          compatibility reasons and should not be used. The algorithm\n                          is now hardcoded to HS256 in golang/x/crypto/acme.'\n                        enum:\n                        - HS256\n                        - HS384\n                        - HS512\n                        type: string\n                      keyID:\n                        description: keyID is the ID of the CA key that the External\n                          Account is bound to.\n                        type: string\n                      keySecretRef:\n                        description: keySecretRef is a Secret Key Selector referencing\n                          a data item in a Kubernetes Secret which holds the symmetric\n                          MAC key of the External Account Binding. The `key` is the\n                          index string that is paired with the key data in the Secret\n                          and should not be confused with the key data itself, or\n                          indeed with the External Account Binding keyID above. The\n                          secret key stored in the Secret **must** be un-padded, base64\n                          URL encoded data.\n                        properties:\n                          key:\n                            description: The key of the entry in the Secret resource's\n                              `data` field to be used. Some instances of this field\n                              may be defaulted, in others it may be required.\n                            type: string\n                          name:\n                            description: 'Name of the resource being referred to.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                            type: string\n                        required:\n                        - name\n                        type: object\n                    required:\n                    - keyID\n                    - keySecretRef\n                    type: object\n                  preferredChain:\n                    description: 'PreferredChain is the chain to use if the ACME server\n                      outputs multiple. PreferredChain is no guarantee that this one\n                      gets delivered by the ACME endpoint. For example, for Let''s\n                      Encrypt''s DST crosssign you would use: \"DST Root CA X3\" or\n                      \"ISRG Root X1\" for the newer Let''s Encrypt root CA. This value\n                      picks the first certificate bundle in the ACME alternative chains\n                      that has a certificate with this value as its issuer''s CN'\n                    maxLength: 64\n                    type: string\n                  privateKeySecretRef:\n                    description: PrivateKey is the name of a Kubernetes Secret resource\n                      that will be used to store the automatically generated ACME\n                      account private key. Optionally, a `key` may be specified to\n                      select a specific entry within the named Secret resource. If\n                      `key` is not specified, a default of `tls.key` will be used.\n                    properties:\n                      key:\n                        description: The key of the entry in the Secret resource's\n                          `data` field to be used. Some instances of this field may\n                          be defaulted, in others it may be required.\n                        type: string\n                      name:\n                        description: 'Name of the resource being referred to. More\n                          info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                        type: string\n                    required:\n                    - name\n                    type: object\n                  server:\n                    description: 'Server is the URL used to access the ACME server''s\n                      ''directory'' endpoint. For example, for Let''s Encrypt''s staging\n                      endpoint, you would use: \"https://acme-staging-v02.api.letsencrypt.org/directory\".\n                      Only ACME v2 endpoints (i.e. RFC 8555) are supported.'\n                    type: string\n                  skipTLSVerify:\n                    description: 'INSECURE: Enables or disables validation of the\n                      ACME server TLS certificate. If true, requests to the ACME server\n                      will not have the TLS certificate chain validated. Mutually\n                      exclusive with CABundle; prefer using CABundle to prevent various\n                      kinds of security vulnerabilities. Only enable this option in\n                      development environments. If CABundle and SkipTLSVerify are\n                      unset, the system certificate bundle inside the container is\n                      used to validate the TLS connection. Defaults to false.'\n                    type: boolean\n                  solvers:\n                    description: 'Solvers is a list of challenge solvers that will\n                      be used to solve ACME challenges for the matching domains. Solver\n                      configurations must be provided in order to obtain certificates\n                      from an ACME server. For more information, see: https://cert-manager.io/docs/configuration/acme/'\n                    items:\n                      description: An ACMEChallengeSolver describes how to solve ACME\n                        challenges for the issuer it is part of. A selector may be\n                        provided to use different solving strategies for different\n                        DNS names. Only one of HTTP01 or DNS01 must be provided.\n                      properties:\n                        dns01:\n                          description: Configures cert-manager to attempt to complete\n                            authorizations by performing the DNS01 challenge flow.\n                          properties:\n                            acmeDNS:\n                              description: Use the 'ACME DNS' (https://github.com/joohoi/acme-dns)\n                                API to manage DNS01 challenge records.\n                              properties:\n                                accountSecretRef:\n                                  description: A reference to a specific 'key' within\n                                    a Secret resource. In some instances, `key` is\n                                    a required field.\n                                  properties:\n                                    key:\n                                      description: The key of the entry in the Secret\n                                        resource's `data` field to be used. Some instances\n                                        of this field may be defaulted, in others\n                                        it may be required.\n                                      type: string\n                                    name:\n                                      description: 'Name of the resource being referred\n                                        to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                      type: string\n                                  required:\n                                  - name\n                                  type: object\n                                host:\n                                  type: string\n                              required:\n                              - accountSecretRef\n                              - host\n                              type: object\n                            akamai:\n                              description: Use the Akamai DNS zone management API\n                                to manage DNS01 challenge records.\n                              properties:\n                                accessTokenSecretRef:\n                                  description: A reference to a specific 'key' within\n                                    a Secret resource. In some instances, `key` is\n                                    a required field.\n                                  properties:\n                                    key:\n                                      description: The key of the entry in the Secret\n                                        resource's `data` field to be used. Some instances\n                                        of this field may be defaulted, in others\n                                        it may be required.\n                                      type: string\n                                    name:\n                                      description: 'Name of the resource being referred\n                                        to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                      type: string\n                                  required:\n                                  - name\n                                  type: object\n                                clientSecretSecretRef:\n                                  description: A reference to a specific 'key' within\n                                    a Secret resource. In some instances, `key` is\n                                    a required field.\n                                  properties:\n                                    key:\n                                      description: The key of the entry in the Secret\n                                        resource's `data` field to be used. Some instances\n                                        of this field may be defaulted, in others\n                                        it may be required.\n                                      type: string\n                                    name:\n                                      description: 'Name of the resource being referred\n                                        to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                      type: string\n                                  required:\n                                  - name\n                                  type: object\n                                clientTokenSecretRef:\n                                  description: A reference to a specific 'key' within\n                                    a Secret resource. In some instances, `key` is\n                                    a required field.\n                                  properties:\n                                    key:\n                                      description: The key of the entry in the Secret\n                                        resource's `data` field to be used. Some instances\n                                        of this field may be defaulted, in others\n                                        it may be required.\n                                      type: string\n                                    name:\n                                      description: 'Name of the resource being referred\n                                        to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                      type: string\n                                  required:\n                                  - name\n                                  type: object\n                                serviceConsumerDomain:\n                                  type: string\n                              required:\n                              - accessTokenSecretRef\n                              - clientSecretSecretRef\n                              - clientTokenSecretRef\n                              - serviceConsumerDomain\n                              type: object\n                            azureDNS:\n                              description: Use the Microsoft Azure DNS API to manage\n                                DNS01 challenge records.\n                              properties:\n                                clientID:\n                                  description: if both this and ClientSecret are left\n                                    unset MSI will be used\n                                  type: string\n                                clientSecretSecretRef:\n                                  description: if both this and ClientID are left\n                                    unset MSI will be used\n                                  properties:\n                                    key:\n                                      description: The key of the entry in the Secret\n                                        resource's `data` field to be used. Some instances\n                                        of this field may be defaulted, in others\n                                        it may be required.\n                                      type: string\n                                    name:\n                                      description: 'Name of the resource being referred\n                                        to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                      type: string\n                                  required:\n                                  - name\n                                  type: object\n                                environment:\n                                  description: name of the Azure environment (default\n                                    AzurePublicCloud)\n                                  enum:\n                                  - AzurePublicCloud\n                                  - AzureChinaCloud\n                                  - AzureGermanCloud\n                                  - AzureUSGovernmentCloud\n                                  type: string\n                                hostedZoneName:\n                                  description: name of the DNS zone that should be\n                                    used\n                                  type: string\n                                managedIdentity:\n                                  description: managed identity configuration, can\n                                    not be used at the same time as clientID, clientSecretSecretRef\n                                    or tenantID\n                                  properties:\n                                    clientID:\n                                      description: client ID of the managed identity,\n                                        can not be used at the same time as resourceID\n                                      type: string\n                                    resourceID:\n                                      description: resource ID of the managed identity,\n                                        can not be used at the same time as clientID\n                                      type: string\n                                  type: object\n                                resourceGroupName:\n                                  description: resource group the DNS zone is located\n                                    in\n                                  type: string\n                                subscriptionID:\n                                  description: ID of the Azure subscription\n                                  type: string\n                                tenantID:\n                                  description: when specifying ClientID and ClientSecret\n                                    then this field is also needed\n                                  type: string\n                              required:\n                              - resourceGroupName\n                              - subscriptionID\n                              type: object\n                            cloudDNS:\n                              description: Use the Google Cloud DNS API to manage\n                                DNS01 challenge records.\n                              properties:\n                                hostedZoneName:\n                                  description: HostedZoneName is an optional field\n                                    that tells cert-manager in which Cloud DNS zone\n                                    the challenge record has to be created. If left\n                                    empty cert-manager will automatically choose a\n                                    zone.\n                                  type: string\n                                project:\n                                  type: string\n                                serviceAccountSecretRef:\n                                  description: A reference to a specific 'key' within\n                                    a Secret resource. In some instances, `key` is\n                                    a required field.\n                                  properties:\n                                    key:\n                                      description: The key of the entry in the Secret\n                                        resource's `data` field to be used. Some instances\n                                        of this field may be defaulted, in others\n                                        it may be required.\n                                      type: string\n                                    name:\n                                      description: 'Name of the resource being referred\n                                        to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                      type: string\n                                  required:\n                                  - name\n                                  type: object\n                              required:\n                              - project\n                              type: object\n                            cloudflare:\n                              description: Use the Cloudflare API to manage DNS01\n                                challenge records.\n                              properties:\n                                apiKeySecretRef:\n                                  description: 'API key to use to authenticate with\n                                    Cloudflare. Note: using an API token to authenticate\n                                    is now the recommended method as it allows greater\n                                    control of permissions.'\n                                  properties:\n                                    key:\n                                      description: The key of the entry in the Secret\n                                        resource's `data` field to be used. Some instances\n                                        of this field may be defaulted, in others\n                                        it may be required.\n                                      type: string\n                                    name:\n                                      description: 'Name of the resource being referred\n                                        to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                      type: string\n                                  required:\n                                  - name\n                                  type: object\n                                apiTokenSecretRef:\n                                  description: API token used to authenticate with\n                                    Cloudflare.\n                                  properties:\n                                    key:\n                                      description: The key of the entry in the Secret\n                                        resource's `data` field to be used. Some instances\n                                        of this field may be defaulted, in others\n                                        it may be required.\n                                      type: string\n                                    name:\n                                      description: 'Name of the resource being referred\n                                        to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                      type: string\n                                  required:\n                                  - name\n                                  type: object\n                                email:\n                                  description: Email of the account, only required\n                                    when using API key based authentication.\n                                  type: string\n                              type: object\n                            cnameStrategy:\n                              description: CNAMEStrategy configures how the DNS01\n                                provider should handle CNAME records when found in\n                                DNS zones.\n                              enum:\n                              - None\n                              - Follow\n                              type: string\n                            digitalocean:\n                              description: Use the DigitalOcean DNS API to manage\n                                DNS01 challenge records.\n                              properties:\n                                tokenSecretRef:\n                                  description: A reference to a specific 'key' within\n                                    a Secret resource. In some instances, `key` is\n                                    a required field.\n                                  properties:\n                                    key:\n                                      description: The key of the entry in the Secret\n                                        resource's `data` field to be used. Some instances\n                                        of this field may be defaulted, in others\n                                        it may be required.\n                                      type: string\n                                    name:\n                                      description: 'Name of the resource being referred\n                                        to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                      type: string\n                                  required:\n                                  - name\n                                  type: object\n                              required:\n                              - tokenSecretRef\n                              type: object\n                            rfc2136:\n                              description: Use RFC2136 (\"Dynamic Updates in the Domain\n                                Name System\") (https://datatracker.ietf.org/doc/rfc2136/)\n                                to manage DNS01 challenge records.\n                              properties:\n                                nameserver:\n                                  description: The IP address or hostname of an authoritative\n                                    DNS server supporting RFC2136 in the form host:port.\n                                    If the host is an IPv6 address it must be enclosed\n                                    in square brackets (e.g [2001:db8::1]) ; port\n                                    is optional. This field is required.\n                                  type: string\n                                tsigAlgorithm:\n                                  description: 'The TSIG Algorithm configured in the\n                                    DNS supporting RFC2136. Used only when ``tsigSecretSecretRef``\n                                    and ``tsigKeyName`` are defined. Supported values\n                                    are (case-insensitive): ``HMACMD5`` (default),\n                                    ``HMACSHA1``, ``HMACSHA256`` or ``HMACSHA512``.'\n                                  type: string\n                                tsigKeyName:\n                                  description: The TSIG Key name configured in the\n                                    DNS. If ``tsigSecretSecretRef`` is defined, this\n                                    field is required.\n                                  type: string\n                                tsigSecretSecretRef:\n                                  description: The name of the secret containing the\n                                    TSIG value. If ``tsigKeyName`` is defined, this\n                                    field is required.\n                                  properties:\n                                    key:\n                                      description: The key of the entry in the Secret\n                                        resource's `data` field to be used. Some instances\n                                        of this field may be defaulted, in others\n                                        it may be required.\n                                      type: string\n                                    name:\n                                      description: 'Name of the resource being referred\n                                        to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                      type: string\n                                  required:\n                                  - name\n                                  type: object\n                              required:\n                              - nameserver\n                              type: object\n                            route53:\n                              description: Use the AWS Route53 API to manage DNS01\n                                challenge records.\n                              properties:\n                                accessKeyID:\n                                  description: 'The AccessKeyID is used for authentication.\n                                    Cannot be set when SecretAccessKeyID is set. If\n                                    neither the Access Key nor Key ID are set, we\n                                    fall-back to using env vars, shared credentials\n                                    file or AWS Instance metadata, see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials'\n                                  type: string\n                                accessKeyIDSecretRef:\n                                  description: 'The SecretAccessKey is used for authentication.\n                                    If set, pull the AWS access key ID from a key\n                                    within a Kubernetes Secret. Cannot be set when\n                                    AccessKeyID is set. If neither the Access Key\n                                    nor Key ID are set, we fall-back to using env\n                                    vars, shared credentials file or AWS Instance\n                                    metadata, see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials'\n                                  properties:\n                                    key:\n                                      description: The key of the entry in the Secret\n                                        resource's `data` field to be used. Some instances\n                                        of this field may be defaulted, in others\n                                        it may be required.\n                                      type: string\n                                    name:\n                                      description: 'Name of the resource being referred\n                                        to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                      type: string\n                                  required:\n                                  - name\n                                  type: object\n                                hostedZoneID:\n                                  description: If set, the provider will manage only\n                                    this zone in Route53 and will not do an lookup\n                                    using the route53:ListHostedZonesByName api call.\n                                  type: string\n                                region:\n                                  description: Always set the region when using AccessKeyID\n                                    and SecretAccessKey\n                                  type: string\n                                role:\n                                  description: Role is a Role ARN which the Route53\n                                    provider will assume using either the explicit\n                                    credentials AccessKeyID/SecretAccessKey or the\n                                    inferred credentials from environment variables,\n                                    shared credentials file or AWS Instance metadata\n                                  type: string\n                                secretAccessKeySecretRef:\n                                  description: 'The SecretAccessKey is used for authentication.\n                                    If neither the Access Key nor Key ID are set,\n                                    we fall-back to using env vars, shared credentials\n                                    file or AWS Instance metadata, see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials'\n                                  properties:\n                                    key:\n                                      description: The key of the entry in the Secret\n                                        resource's `data` field to be used. Some instances\n                                        of this field may be defaulted, in others\n                                        it may be required.\n                                      type: string\n                                    name:\n                                      description: 'Name of the resource being referred\n                                        to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                      type: string\n                                  required:\n                                  - name\n                                  type: object\n                              required:\n                              - region\n                              type: object\n                            webhook:\n                              description: Configure an external webhook based DNS01\n                                challenge solver to manage DNS01 challenge records.\n                              properties:\n                                config:\n                                  description: Additional configuration that should\n                                    be passed to the webhook apiserver when challenges\n                                    are processed. This can contain arbitrary JSON\n                                    data. Secret values should not be specified in\n                                    this stanza. If secret values are needed (e.g.\n                                    credentials for a DNS service), you should use\n                                    a SecretKeySelector to reference a Secret resource.\n                                    For details on the schema of this field, consult\n                                    the webhook provider implementation's documentation.\n                                  x-kubernetes-preserve-unknown-fields: true\n                                groupName:\n                                  description: The API group name that should be used\n                                    when POSTing ChallengePayload resources to the\n                                    webhook apiserver. This should be the same as\n                                    the GroupName specified in the webhook provider\n                                    implementation.\n                                  type: string\n                                solverName:\n                                  description: The name of the solver to use, as defined\n                                    in the webhook provider implementation. This will\n                                    typically be the name of the provider, e.g. 'cloudflare'.\n                                  type: string\n                              required:\n                              - groupName\n                              - solverName\n                              type: object\n                          type: object\n                        http01:\n                          description: Configures cert-manager to attempt to complete\n                            authorizations by performing the HTTP01 challenge flow.\n                            It is not possible to obtain certificates for wildcard\n                            domain names (e.g. `*.example.com`) using the HTTP01 challenge\n                            mechanism.\n                          properties:\n                            gatewayHTTPRoute:\n                              description: The Gateway API is a sig-network community\n                                API that models service networking in Kubernetes (https://gateway-api.sigs.k8s.io/).\n                                The Gateway solver will create HTTPRoutes with the\n                                specified labels in the same namespace as the challenge.\n                                This solver is experimental, and fields / behaviour\n                                may change in the future.\n                              properties:\n                                labels:\n                                  additionalProperties:\n                                    type: string\n                                  description: Custom labels that will be applied\n                                    to HTTPRoutes created by cert-manager while solving\n                                    HTTP-01 challenges.\n                                  type: object\n                                parentRefs:\n                                  description: 'When solving an HTTP-01 challenge,\n                                    cert-manager creates an HTTPRoute. cert-manager\n                                    needs to know which parentRefs should be used\n                                    when creating the HTTPRoute. Usually, the parentRef\n                                    references a Gateway. See: https://gateway-api.sigs.k8s.io/api-types/httproute/#attaching-to-gateways'\n                                  items:\n                                    description: \"ParentReference identifies an API\n                                      object (usually a Gateway) that can be considered\n                                      a parent of this resource (usually a route).\n                                      The only kind of parent resource with \\\"Core\\\"\n                                      support is Gateway. This API may be extended\n                                      in the future to support additional kinds of\n                                      parent resources, such as HTTPRoute. \\n The\n                                      API object must be valid in the cluster; the\n                                      Group and Kind must be registered in the cluster\n                                      for this reference to be valid.\"\n                                    properties:\n                                      group:\n                                        default: gateway.networking.k8s.io\n                                        description: \"Group is the group of the referent.\n                                          When unspecified, \\\"gateway.networking.k8s.io\\\"\n                                          is inferred. To set the core API group (such\n                                          as for a \\\"Service\\\" kind referent), Group\n                                          must be explicitly set to \\\"\\\" (empty string).\n                                          \\n Support: Core\"\n                                        maxLength: 253\n                                        pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$\n                                        type: string\n                                      kind:\n                                        default: Gateway\n                                        description: \"Kind is kind of the referent.\n                                          \\n Support: Core (Gateway) \\n Support: Implementation-specific\n                                          (Other Resources)\"\n                                        maxLength: 63\n                                        minLength: 1\n                                        pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$\n                                        type: string\n                                      name:\n                                        description: \"Name is the name of the referent.\n                                          \\n Support: Core\"\n                                        maxLength: 253\n                                        minLength: 1\n                                        type: string\n                                      namespace:\n                                        description: \"Namespace is the namespace of\n                                          the referent. When unspecified, this refers\n                                          to the local namespace of the Route. \\n\n                                          Note that there are specific rules for ParentRefs\n                                          which cross namespace boundaries. Cross-namespace\n                                          references are only valid if they are explicitly\n                                          allowed by something in the namespace they\n                                          are referring to. For example: Gateway has\n                                          the AllowedRoutes field, and ReferenceGrant\n                                          provides a generic way to enable any other\n                                          kind of cross-namespace reference. \\n Support:\n                                          Core\"\n                                        maxLength: 63\n                                        minLength: 1\n                                        pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$\n                                        type: string\n                                      port:\n                                        description: \"Port is the network port this\n                                          Route targets. It can be interpreted differently\n                                          based on the type of parent resource. \\n\n                                          When the parent resource is a Gateway, this\n                                          targets all listeners listening on the specified\n                                          port that also support this kind of Route(and\n                                          select this Route). It's not recommended\n                                          to set `Port` unless the networking behaviors\n                                          specified in a Route must apply to a specific\n                                          port as opposed to a listener(s) whose port(s)\n                                          may be changed. When both Port and SectionName\n                                          are specified, the name and port of the\n                                          selected listener must match both specified\n                                          values. \\n Implementations MAY choose to\n                                          support other parent resources. Implementations\n                                          supporting other types of parent resources\n                                          MUST clearly document how/if Port is interpreted.\n                                          \\n For the purpose of status, an attachment\n                                          is considered successful as long as the\n                                          parent resource accepts it partially. For\n                                          example, Gateway listeners can restrict\n                                          which Routes can attach to them by Route\n                                          kind, namespace, or hostname. If 1 of 2\n                                          Gateway listeners accept attachment from\n                                          the referencing Route, the Route MUST be\n                                          considered successfully attached. If no\n                                          Gateway listeners accept attachment from\n                                          this Route, the Route MUST be considered\n                                          detached from the Gateway. \\n Support: Extended\n                                          \\n <gateway:experimental>\"\n                                        format: int32\n                                        maximum: 65535\n                                        minimum: 1\n                                        type: integer\n                                      sectionName:\n                                        description: \"SectionName is the name of a\n                                          section within the target resource. In the\n                                          following resources, SectionName is interpreted\n                                          as the following: \\n * Gateway: Listener\n                                          Name. When both Port (experimental) and\n                                          SectionName are specified, the name and\n                                          port of the selected listener must match\n                                          both specified values. \\n Implementations\n                                          MAY choose to support attaching Routes to\n                                          other resources. If that is the case, they\n                                          MUST clearly document how SectionName is\n                                          interpreted. \\n When unspecified (empty\n                                          string), this will reference the entire\n                                          resource. For the purpose of status, an\n                                          attachment is considered successful if at\n                                          least one section in the parent resource\n                                          accepts it. For example, Gateway listeners\n                                          can restrict which Routes can attach to\n                                          them by Route kind, namespace, or hostname.\n                                          If 1 of 2 Gateway listeners accept attachment\n                                          from the referencing Route, the Route MUST\n                                          be considered successfully attached. If\n                                          no Gateway listeners accept attachment from\n                                          this Route, the Route MUST be considered\n                                          detached from the Gateway. \\n Support: Core\"\n                                        maxLength: 253\n                                        minLength: 1\n                                        pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$\n                                        type: string\n                                    required:\n                                    - name\n                                    type: object\n                                  type: array\n                                serviceType:\n                                  description: Optional service type for Kubernetes\n                                    solver service. Supported values are NodePort\n                                    or ClusterIP. If unset, defaults to NodePort.\n                                  type: string\n                              type: object\n                            ingress:\n                              description: The ingress based HTTP01 challenge solver\n                                will solve challenges by creating or modifying Ingress\n                                resources in order to route requests for '/.well-known/acme-challenge/XYZ'\n                                to 'challenge solver' pods that are provisioned by\n                                cert-manager for each Challenge to be completed.\n                              properties:\n                                class:\n                                  description: This field configures the annotation\n                                    `kubernetes.io/ingress.class` when creating Ingress\n                                    resources to solve ACME challenges that use this\n                                    challenge solver. Only one of `class`, `name`\n                                    or `ingressClassName` may be specified.\n                                  type: string\n                                ingressClassName:\n                                  description: This field configures the field `ingressClassName`\n                                    on the created Ingress resources used to solve\n                                    ACME challenges that use this challenge solver.\n                                    This is the recommended way of configuring the\n                                    ingress class. Only one of `class`, `name` or\n                                    `ingressClassName` may be specified.\n                                  type: string\n                                ingressTemplate:\n                                  description: Optional ingress template used to configure\n                                    the ACME challenge solver ingress used for HTTP01\n                                    challenges.\n                                  properties:\n                                    metadata:\n                                      description: ObjectMeta overrides for the ingress\n                                        used to solve HTTP01 challenges. Only the\n                                        'labels' and 'annotations' fields may be set.\n                                        If labels or annotations overlap with in-built\n                                        values, the values here will override the\n                                        in-built values.\n                                      properties:\n                                        annotations:\n                                          additionalProperties:\n                                            type: string\n                                          description: Annotations that should be\n                                            added to the created ACME HTTP01 solver\n                                            ingress.\n                                          type: object\n                                        labels:\n                                          additionalProperties:\n                                            type: string\n                                          description: Labels that should be added\n                                            to the created ACME HTTP01 solver ingress.\n                                          type: object\n                                      type: object\n                                  type: object\n                                name:\n                                  description: The name of the ingress resource that\n                                    should have ACME challenge solving routes inserted\n                                    into it in order to solve HTTP01 challenges. This\n                                    is typically used in conjunction with ingress\n                                    controllers like ingress-gce, which maintains\n                                    a 1:1 mapping between external IPs and ingress\n                                    resources. Only one of `class`, `name` or `ingressClassName`\n                                    may be specified.\n                                  type: string\n                                podTemplate:\n                                  description: Optional pod template used to configure\n                                    the ACME challenge solver pods used for HTTP01\n                                    challenges.\n                                  properties:\n                                    metadata:\n                                      description: ObjectMeta overrides for the pod\n                                        used to solve HTTP01 challenges. Only the\n                                        'labels' and 'annotations' fields may be set.\n                                        If labels or annotations overlap with in-built\n                                        values, the values here will override the\n                                        in-built values.\n                                      properties:\n                                        annotations:\n                                          additionalProperties:\n                                            type: string\n                                          description: Annotations that should be\n                                            added to the create ACME HTTP01 solver\n                                            pods.\n                                          type: object\n                                        labels:\n                                          additionalProperties:\n                                            type: string\n                                          description: Labels that should be added\n                                            to the created ACME HTTP01 solver pods.\n                                          type: object\n                                      type: object\n                                    spec:\n                                      description: PodSpec defines overrides for the\n                                        HTTP01 challenge solver pod. Check ACMEChallengeSolverHTTP01IngressPodSpec\n                                        to find out currently supported fields. All\n                                        other fields will be ignored.\n                                      properties:\n                                        affinity:\n                                          description: If specified, the pod's scheduling\n                                            constraints\n                                          properties:\n                                            nodeAffinity:\n                                              description: Describes node affinity\n                                                scheduling rules for the pod.\n                                              properties:\n                                                preferredDuringSchedulingIgnoredDuringExecution:\n                                                  description: The scheduler will\n                                                    prefer to schedule pods to nodes\n                                                    that satisfy the affinity expressions\n                                                    specified by this field, but it\n                                                    may choose a node that violates\n                                                    one or more of the expressions.\n                                                    The node that is most preferred\n                                                    is the one with the greatest sum\n                                                    of weights, i.e. for each node\n                                                    that meets all of the scheduling\n                                                    requirements (resource request,\n                                                    requiredDuringScheduling affinity\n                                                    expressions, etc.), compute a\n                                                    sum by iterating through the elements\n                                                    of this field and adding \"weight\"\n                                                    to the sum if the node matches\n                                                    the corresponding matchExpressions;\n                                                    the node(s) with the highest sum\n                                                    are the most preferred.\n                                                  items:\n                                                    description: An empty preferred\n                                                      scheduling term matches all\n                                                      objects with implicit weight\n                                                      0 (i.e. it's a no-op). A null\n                                                      preferred scheduling term matches\n                                                      no objects (i.e. is also a no-op).\n                                                    properties:\n                                                      preference:\n                                                        description: A node selector\n                                                          term, associated with the\n                                                          corresponding weight.\n                                                        properties:\n                                                          matchExpressions:\n                                                            description: A list of\n                                                              node selector requirements\n                                                              by node's labels.\n                                                            items:\n                                                              description: A node\n                                                                selector requirement\n                                                                is a selector that\n                                                                contains values, a\n                                                                key, and an operator\n                                                                that relates the key\n                                                                and values.\n                                                              properties:\n                                                                key:\n                                                                  description: The\n                                                                    label key that\n                                                                    the selector applies\n                                                                    to.\n                                                                  type: string\n                                                                operator:\n                                                                  description: Represents\n                                                                    a key's relationship\n                                                                    to a set of values.\n                                                                    Valid operators\n                                                                    are In, NotIn,\n                                                                    Exists, DoesNotExist.\n                                                                    Gt, and Lt.\n                                                                  type: string\n                                                                values:\n                                                                  description: An\n                                                                    array of string\n                                                                    values. If the\n                                                                    operator is In\n                                                                    or NotIn, the\n                                                                    values array must\n                                                                    be non-empty.\n                                                                    If the operator\n                                                                    is Exists or DoesNotExist,\n                                                                    the values array\n                                                                    must be empty.\n                                                                    If the operator\n                                                                    is Gt or Lt, the\n                                                                    values array must\n                                                                    have a single\n                                                                    element, which\n                                                                    will be interpreted\n                                                                    as an integer.\n                                                                    This array is\n                                                                    replaced during\n                                                                    a strategic merge\n                                                                    patch.\n                                                                  items:\n                                                                    type: string\n                                                                  type: array\n                                                              required:\n                                                              - key\n                                                              - operator\n                                                              type: object\n                                                            type: array\n                                                          matchFields:\n                                                            description: A list of\n                                                              node selector requirements\n                                                              by node's fields.\n                                                            items:\n                                                              description: A node\n                                                                selector requirement\n                                                                is a selector that\n                                                                contains values, a\n                                                                key, and an operator\n                                                                that relates the key\n                                                                and values.\n                                                              properties:\n                                                                key:\n                                                                  description: The\n                                                                    label key that\n                                                                    the selector applies\n                                                                    to.\n                                                                  type: string\n                                                                operator:\n                                                                  description: Represents\n                                                                    a key's relationship\n                                                                    to a set of values.\n                                                                    Valid operators\n                                                                    are In, NotIn,\n                                                                    Exists, DoesNotExist.\n                                                                    Gt, and Lt.\n                                                                  type: string\n                                                                values:\n                                                                  description: An\n                                                                    array of string\n                                                                    values. If the\n                                                                    operator is In\n                                                                    or NotIn, the\n                                                                    values array must\n                                                                    be non-empty.\n                                                                    If the operator\n                                                                    is Exists or DoesNotExist,\n                                                                    the values array\n                                                                    must be empty.\n                                                                    If the operator\n                                                                    is Gt or Lt, the\n                                                                    values array must\n                                                                    have a single\n                                                                    element, which\n                                                                    will be interpreted\n                                                                    as an integer.\n                                                                    This array is\n                                                                    replaced during\n                                                                    a strategic merge\n                                                                    patch.\n                                                                  items:\n                                                                    type: string\n                                                                  type: array\n                                                              required:\n                                                              - key\n                                                              - operator\n                                                              type: object\n                                                            type: array\n                                                        type: object\n                                                        x-kubernetes-map-type: atomic\n                                                      weight:\n                                                        description: Weight associated\n                                                          with matching the corresponding\n                                                          nodeSelectorTerm, in the\n                                                          range 1-100.\n                                                        format: int32\n                                                        type: integer\n                                                    required:\n                                                    - preference\n                                                    - weight\n                                                    type: object\n                                                  type: array\n                                                requiredDuringSchedulingIgnoredDuringExecution:\n                                                  description: If the affinity requirements\n                                                    specified by this field are not\n                                                    met at scheduling time, the pod\n                                                    will not be scheduled onto the\n                                                    node. If the affinity requirements\n                                                    specified by this field cease\n                                                    to be met at some point during\n                                                    pod execution (e.g. due to an\n                                                    update), the system may or may\n                                                    not try to eventually evict the\n                                                    pod from its node.\n                                                  properties:\n                                                    nodeSelectorTerms:\n                                                      description: Required. A list\n                                                        of node selector terms. The\n                                                        terms are ORed.\n                                                      items:\n                                                        description: A null or empty\n                                                          node selector term matches\n                                                          no objects. The requirements\n                                                          of them are ANDed. The TopologySelectorTerm\n                                                          type implements a subset\n                                                          of the NodeSelectorTerm.\n                                                        properties:\n                                                          matchExpressions:\n                                                            description: A list of\n                                                              node selector requirements\n                                                              by node's labels.\n                                                            items:\n                                                              description: A node\n                                                                selector requirement\n                                                                is a selector that\n                                                                contains values, a\n                                                                key, and an operator\n                                                                that relates the key\n                                                                and values.\n                                                              properties:\n                                                                key:\n                                                                  description: The\n                                                                    label key that\n                                                                    the selector applies\n                                                                    to.\n                                                                  type: string\n                                                                operator:\n                                                                  description: Represents\n                                                                    a key's relationship\n                                                                    to a set of values.\n                                                                    Valid operators\n                                                                    are In, NotIn,\n                                                                    Exists, DoesNotExist.\n                                                                    Gt, and Lt.\n                                                                  type: string\n                                                                values:\n                                                                  description: An\n                                                                    array of string\n                                                                    values. If the\n                                                                    operator is In\n                                                                    or NotIn, the\n                                                                    values array must\n                                                                    be non-empty.\n                                                                    If the operator\n                                                                    is Exists or DoesNotExist,\n                                                                    the values array\n                                                                    must be empty.\n                                                                    If the operator\n                                                                    is Gt or Lt, the\n                                                                    values array must\n                                                                    have a single\n                                                                    element, which\n                                                                    will be interpreted\n                                                                    as an integer.\n                                                                    This array is\n                                                                    replaced during\n                                                                    a strategic merge\n                                                                    patch.\n                                                                  items:\n                                                                    type: string\n                                                                  type: array\n                                                              required:\n                                                              - key\n                                                              - operator\n                                                              type: object\n                                                            type: array\n                                                          matchFields:\n                                                            description: A list of\n                                                              node selector requirements\n                                                              by node's fields.\n                                                            items:\n                                                              description: A node\n                                                                selector requirement\n                                                                is a selector that\n                                                                contains values, a\n                                                                key, and an operator\n                                                                that relates the key\n                                                                and values.\n                                                              properties:\n                                                                key:\n                                                                  description: The\n                                                                    label key that\n                                                                    the selector applies\n                                                                    to.\n                                                                  type: string\n                                                                operator:\n                                                                  description: Represents\n                                                                    a key's relationship\n                                                                    to a set of values.\n                                                                    Valid operators\n                                                                    are In, NotIn,\n                                                                    Exists, DoesNotExist.\n                                                                    Gt, and Lt.\n                                                                  type: string\n                                                                values:\n                                                                  description: An\n                                                                    array of string\n                                                                    values. If the\n                                                                    operator is In\n                                                                    or NotIn, the\n                                                                    values array must\n                                                                    be non-empty.\n                                                                    If the operator\n                                                                    is Exists or DoesNotExist,\n                                                                    the values array\n                                                                    must be empty.\n                                                                    If the operator\n                                                                    is Gt or Lt, the\n                                                                    values array must\n                                                                    have a single\n                                                                    element, which\n                                                                    will be interpreted\n                                                                    as an integer.\n                                                                    This array is\n                                                                    replaced during\n                                                                    a strategic merge\n                                                                    patch.\n                                                                  items:\n                                                                    type: string\n                                                                  type: array\n                                                              required:\n                                                              - key\n                                                              - operator\n                                                              type: object\n                                                            type: array\n                                                        type: object\n                                                        x-kubernetes-map-type: atomic\n                                                      type: array\n                                                  required:\n                                                  - nodeSelectorTerms\n                                                  type: object\n                                                  x-kubernetes-map-type: atomic\n                                              type: object\n                                            podAffinity:\n                                              description: Describes pod affinity\n                                                scheduling rules (e.g. co-locate this\n                                                pod in the same node, zone, etc. as\n                                                some other pod(s)).\n                                              properties:\n                                                preferredDuringSchedulingIgnoredDuringExecution:\n                                                  description: The scheduler will\n                                                    prefer to schedule pods to nodes\n                                                    that satisfy the affinity expressions\n                                                    specified by this field, but it\n                                                    may choose a node that violates\n                                                    one or more of the expressions.\n                                                    The node that is most preferred\n                                                    is the one with the greatest sum\n                                                    of weights, i.e. for each node\n                                                    that meets all of the scheduling\n                                                    requirements (resource request,\n                                                    requiredDuringScheduling affinity\n                                                    expressions, etc.), compute a\n                                                    sum by iterating through the elements\n                                                    of this field and adding \"weight\"\n                                                    to the sum if the node has pods\n                                                    which matches the corresponding\n                                                    podAffinityTerm; the node(s) with\n                                                    the highest sum are the most preferred.\n                                                  items:\n                                                    description: The weights of all\n                                                      of the matched WeightedPodAffinityTerm\n                                                      fields are added per-node to\n                                                      find the most preferred node(s)\n                                                    properties:\n                                                      podAffinityTerm:\n                                                        description: Required. A pod\n                                                          affinity term, associated\n                                                          with the corresponding weight.\n                                                        properties:\n                                                          labelSelector:\n                                                            description: A label query\n                                                              over a set of resources,\n                                                              in this case pods.\n                                                            properties:\n                                                              matchExpressions:\n                                                                description: matchExpressions\n                                                                  is a list of label\n                                                                  selector requirements.\n                                                                  The requirements\n                                                                  are ANDed.\n                                                                items:\n                                                                  description: A label\n                                                                    selector requirement\n                                                                    is a selector\n                                                                    that contains\n                                                                    values, a key,\n                                                                    and an operator\n                                                                    that relates the\n                                                                    key and values.\n                                                                  properties:\n                                                                    key:\n                                                                      description: key\n                                                                        is the label\n                                                                        key that the\n                                                                        selector applies\n                                                                        to.\n                                                                      type: string\n                                                                    operator:\n                                                                      description: operator\n                                                                        represents\n                                                                        a key's relationship\n                                                                        to a set of\n                                                                        values. Valid\n                                                                        operators\n                                                                        are In, NotIn,\n                                                                        Exists and\n                                                                        DoesNotExist.\n                                                                      type: string\n                                                                    values:\n                                                                      description: values\n                                                                        is an array\n                                                                        of string\n                                                                        values. If\n                                                                        the operator\n                                                                        is In or NotIn,\n                                                                        the values\n                                                                        array must\n                                                                        be non-empty.\n                                                                        If the operator\n                                                                        is Exists\n                                                                        or DoesNotExist,\n                                                                        the values\n                                                                        array must\n                                                                        be empty.\n                                                                        This array\n                                                                        is replaced\n                                                                        during a strategic\n                                                                        merge patch.\n                                                                      items:\n                                                                        type: string\n                                                                      type: array\n                                                                  required:\n                                                                  - key\n                                                                  - operator\n                                                                  type: object\n                                                                type: array\n                                                              matchLabels:\n                                                                additionalProperties:\n                                                                  type: string\n                                                                description: matchLabels\n                                                                  is a map of {key,value}\n                                                                  pairs. A single\n                                                                  {key,value} in the\n                                                                  matchLabels map\n                                                                  is equivalent to\n                                                                  an element of matchExpressions,\n                                                                  whose key field\n                                                                  is \"key\", the operator\n                                                                  is \"In\", and the\n                                                                  values array contains\n                                                                  only \"value\". The\n                                                                  requirements are\n                                                                  ANDed.\n                                                                type: object\n                                                            type: object\n                                                            x-kubernetes-map-type: atomic\n                                                          namespaceSelector:\n                                                            description: A label query\n                                                              over the set of namespaces\n                                                              that the term applies\n                                                              to. The term is applied\n                                                              to the union of the\n                                                              namespaces selected\n                                                              by this field and the\n                                                              ones listed in the namespaces\n                                                              field. null selector\n                                                              and null or empty namespaces\n                                                              list means \"this pod's\n                                                              namespace\". An empty\n                                                              selector ({}) matches\n                                                              all namespaces.\n                                                            properties:\n                                                              matchExpressions:\n                                                                description: matchExpressions\n                                                                  is a list of label\n                                                                  selector requirements.\n                                                                  The requirements\n                                                                  are ANDed.\n                                                                items:\n                                                                  description: A label\n                                                                    selector requirement\n                                                                    is a selector\n                                                                    that contains\n                                                                    values, a key,\n                                                                    and an operator\n                                                                    that relates the\n                                                                    key and values.\n                                                                  properties:\n                                                                    key:\n                                                                      description: key\n                                                                        is the label\n                                                                        key that the\n                                                                        selector applies\n                                                                        to.\n                                                                      type: string\n                                                                    operator:\n                                                                      description: operator\n                                                                        represents\n                                                                        a key's relationship\n                                                                        to a set of\n                                                                        values. Valid\n                                                                        operators\n                                                                        are In, NotIn,\n                                                                        Exists and\n                                                                        DoesNotExist.\n                                                                      type: string\n                                                                    values:\n                                                                      description: values\n                                                                        is an array\n                                                                        of string\n                                                                        values. If\n                                                                        the operator\n                                                                        is In or NotIn,\n                                                                        the values\n                                                                        array must\n                                                                        be non-empty.\n                                                                        If the operator\n                                                                        is Exists\n                                                                        or DoesNotExist,\n                                                                        the values\n                                                                        array must\n                                                                        be empty.\n                                                                        This array\n                                                                        is replaced\n                                                                        during a strategic\n                                                                        merge patch.\n                                                                      items:\n                                                                        type: string\n                                                                      type: array\n                                                                  required:\n                                                                  - key\n                                                                  - operator\n                                                                  type: object\n                                                                type: array\n                                                              matchLabels:\n                                                                additionalProperties:\n                                                                  type: string\n                                                                description: matchLabels\n                                                                  is a map of {key,value}\n                                                                  pairs. A single\n                                                                  {key,value} in the\n                                                                  matchLabels map\n                                                                  is equivalent to\n                                                                  an element of matchExpressions,\n                                                                  whose key field\n                                                                  is \"key\", the operator\n                                                                  is \"In\", and the\n                                                                  values array contains\n                                                                  only \"value\". The\n                                                                  requirements are\n                                                                  ANDed.\n                                                                type: object\n                                                            type: object\n                                                            x-kubernetes-map-type: atomic\n                                                          namespaces:\n                                                            description: namespaces\n                                                              specifies a static list\n                                                              of namespace names that\n                                                              the term applies to.\n                                                              The term is applied\n                                                              to the union of the\n                                                              namespaces listed in\n                                                              this field and the ones\n                                                              selected by namespaceSelector.\n                                                              null or empty namespaces\n                                                              list and null namespaceSelector\n                                                              means \"this pod's namespace\".\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                          topologyKey:\n                                                            description: This pod\n                                                              should be co-located\n                                                              (affinity) or not co-located\n                                                              (anti-affinity) with\n                                                              the pods matching the\n                                                              labelSelector in the\n                                                              specified namespaces,\n                                                              where co-located is\n                                                              defined as running on\n                                                              a node whose value of\n                                                              the label with key topologyKey\n                                                              matches that of any\n                                                              node on which any of\n                                                              the selected pods is\n                                                              running. Empty topologyKey\n                                                              is not allowed.\n                                                            type: string\n                                                        required:\n                                                        - topologyKey\n                                                        type: object\n                                                      weight:\n                                                        description: weight associated\n                                                          with matching the corresponding\n                                                          podAffinityTerm, in the\n                                                          range 1-100.\n                                                        format: int32\n                                                        type: integer\n                                                    required:\n                                                    - podAffinityTerm\n                                                    - weight\n                                                    type: object\n                                                  type: array\n                                                requiredDuringSchedulingIgnoredDuringExecution:\n                                                  description: If the affinity requirements\n                                                    specified by this field are not\n                                                    met at scheduling time, the pod\n                                                    will not be scheduled onto the\n                                                    node. If the affinity requirements\n                                                    specified by this field cease\n                                                    to be met at some point during\n                                                    pod execution (e.g. due to a pod\n                                                    label update), the system may\n                                                    or may not try to eventually evict\n                                                    the pod from its node. When there\n                                                    are multiple elements, the lists\n                                                    of nodes corresponding to each\n                                                    podAffinityTerm are intersected,\n                                                    i.e. all terms must be satisfied.\n                                                  items:\n                                                    description: Defines a set of\n                                                      pods (namely those matching\n                                                      the labelSelector relative to\n                                                      the given namespace(s)) that\n                                                      this pod should be co-located\n                                                      (affinity) or not co-located\n                                                      (anti-affinity) with, where\n                                                      co-located is defined as running\n                                                      on a node whose value of the\n                                                      label with key <topologyKey>\n                                                      matches that of any node on\n                                                      which a pod of the set of pods\n                                                      is running\n                                                    properties:\n                                                      labelSelector:\n                                                        description: A label query\n                                                          over a set of resources,\n                                                          in this case pods.\n                                                        properties:\n                                                          matchExpressions:\n                                                            description: matchExpressions\n                                                              is a list of label selector\n                                                              requirements. The requirements\n                                                              are ANDed.\n                                                            items:\n                                                              description: A label\n                                                                selector requirement\n                                                                is a selector that\n                                                                contains values, a\n                                                                key, and an operator\n                                                                that relates the key\n                                                                and values.\n                                                              properties:\n                                                                key:\n                                                                  description: key\n                                                                    is the label key\n                                                                    that the selector\n                                                                    applies to.\n                                                                  type: string\n                                                                operator:\n                                                                  description: operator\n                                                                    represents a key's\n                                                                    relationship to\n                                                                    a set of values.\n                                                                    Valid operators\n                                                                    are In, NotIn,\n                                                                    Exists and DoesNotExist.\n                                                                  type: string\n                                                                values:\n                                                                  description: values\n                                                                    is an array of\n                                                                    string values.\n                                                                    If the operator\n                                                                    is In or NotIn,\n                                                                    the values array\n                                                                    must be non-empty.\n                                                                    If the operator\n                                                                    is Exists or DoesNotExist,\n                                                                    the values array\n                                                                    must be empty.\n                                                                    This array is\n                                                                    replaced during\n                                                                    a strategic merge\n                                                                    patch.\n                                                                  items:\n                                                                    type: string\n                                                                  type: array\n                                                              required:\n                                                              - key\n                                                              - operator\n                                                              type: object\n                                                            type: array\n                                                          matchLabels:\n                                                            additionalProperties:\n                                                              type: string\n                                                            description: matchLabels\n                                                              is a map of {key,value}\n                                                              pairs. A single {key,value}\n                                                              in the matchLabels map\n                                                              is equivalent to an\n                                                              element of matchExpressions,\n                                                              whose key field is \"key\",\n                                                              the operator is \"In\",\n                                                              and the values array\n                                                              contains only \"value\".\n                                                              The requirements are\n                                                              ANDed.\n                                                            type: object\n                                                        type: object\n                                                        x-kubernetes-map-type: atomic\n                                                      namespaceSelector:\n                                                        description: A label query\n                                                          over the set of namespaces\n                                                          that the term applies to.\n                                                          The term is applied to the\n                                                          union of the namespaces\n                                                          selected by this field and\n                                                          the ones listed in the namespaces\n                                                          field. null selector and\n                                                          null or empty namespaces\n                                                          list means \"this pod's namespace\".\n                                                          An empty selector ({}) matches\n                                                          all namespaces.\n                                                        properties:\n                                                          matchExpressions:\n                                                            description: matchExpressions\n                                                              is a list of label selector\n                                                              requirements. The requirements\n                                                              are ANDed.\n                                                            items:\n                                                              description: A label\n                                                                selector requirement\n                                                                is a selector that\n                                                                contains values, a\n                                                                key, and an operator\n                                                                that relates the key\n                                                                and values.\n                                                              properties:\n                                                                key:\n                                                                  description: key\n                                                                    is the label key\n                                                                    that the selector\n                                                                    applies to.\n                                                                  type: string\n                                                                operator:\n                                                                  description: operator\n                                                                    represents a key's\n                                                                    relationship to\n                                                                    a set of values.\n                                                                    Valid operators\n                                                                    are In, NotIn,\n                                                                    Exists and DoesNotExist.\n                                                                  type: string\n                                                                values:\n                                                                  description: values\n                                                                    is an array of\n                                                                    string values.\n                                                                    If the operator\n                                                                    is In or NotIn,\n                                                                    the values array\n                                                                    must be non-empty.\n                                                                    If the operator\n                                                                    is Exists or DoesNotExist,\n                                                                    the values array\n                                                                    must be empty.\n                                                                    This array is\n                                                                    replaced during\n                                                                    a strategic merge\n                                                                    patch.\n                                                                  items:\n                                                                    type: string\n                                                                  type: array\n                                                              required:\n                                                              - key\n                                                              - operator\n                                                              type: object\n                                                            type: array\n                                                          matchLabels:\n                                                            additionalProperties:\n                                                              type: string\n                                                            description: matchLabels\n                                                              is a map of {key,value}\n                                                              pairs. A single {key,value}\n                                                              in the matchLabels map\n                                                              is equivalent to an\n                                                              element of matchExpressions,\n                                                              whose key field is \"key\",\n                                                              the operator is \"In\",\n                                                              and the values array\n                                                              contains only \"value\".\n                                                              The requirements are\n                                                              ANDed.\n                                                            type: object\n                                                        type: object\n                                                        x-kubernetes-map-type: atomic\n                                                      namespaces:\n                                                        description: namespaces specifies\n                                                          a static list of namespace\n                                                          names that the term applies\n                                                          to. The term is applied\n                                                          to the union of the namespaces\n                                                          listed in this field and\n                                                          the ones selected by namespaceSelector.\n                                                          null or empty namespaces\n                                                          list and null namespaceSelector\n                                                          means \"this pod's namespace\".\n                                                        items:\n                                                          type: string\n                                                        type: array\n                                                      topologyKey:\n                                                        description: This pod should\n                                                          be co-located (affinity)\n                                                          or not co-located (anti-affinity)\n                                                          with the pods matching the\n                                                          labelSelector in the specified\n                                                          namespaces, where co-located\n                                                          is defined as running on\n                                                          a node whose value of the\n                                                          label with key topologyKey\n                                                          matches that of any node\n                                                          on which any of the selected\n                                                          pods is running. Empty topologyKey\n                                                          is not allowed.\n                                                        type: string\n                                                    required:\n                                                    - topologyKey\n                                                    type: object\n                                                  type: array\n                                              type: object\n                                            podAntiAffinity:\n                                              description: Describes pod anti-affinity\n                                                scheduling rules (e.g. avoid putting\n                                                this pod in the same node, zone, etc.\n                                                as some other pod(s)).\n                                              properties:\n                                                preferredDuringSchedulingIgnoredDuringExecution:\n                                                  description: The scheduler will\n                                                    prefer to schedule pods to nodes\n                                                    that satisfy the anti-affinity\n                                                    expressions specified by this\n                                                    field, but it may choose a node\n                                                    that violates one or more of the\n                                                    expressions. The node that is\n                                                    most preferred is the one with\n                                                    the greatest sum of weights, i.e.\n                                                    for each node that meets all of\n                                                    the scheduling requirements (resource\n                                                    request, requiredDuringScheduling\n                                                    anti-affinity expressions, etc.),\n                                                    compute a sum by iterating through\n                                                    the elements of this field and\n                                                    adding \"weight\" to the sum if\n                                                    the node has pods which matches\n                                                    the corresponding podAffinityTerm;\n                                                    the node(s) with the highest sum\n                                                    are the most preferred.\n                                                  items:\n                                                    description: The weights of all\n                                                      of the matched WeightedPodAffinityTerm\n                                                      fields are added per-node to\n                                                      find the most preferred node(s)\n                                                    properties:\n                                                      podAffinityTerm:\n                                                        description: Required. A pod\n                                                          affinity term, associated\n                                                          with the corresponding weight.\n                                                        properties:\n                                                          labelSelector:\n                                                            description: A label query\n                                                              over a set of resources,\n                                                              in this case pods.\n                                                            properties:\n                                                              matchExpressions:\n                                                                description: matchExpressions\n                                                                  is a list of label\n                                                                  selector requirements.\n                                                                  The requirements\n                                                                  are ANDed.\n                                                                items:\n                                                                  description: A label\n                                                                    selector requirement\n                                                                    is a selector\n                                                                    that contains\n                                                                    values, a key,\n                                                                    and an operator\n                                                                    that relates the\n                                                                    key and values.\n                                                                  properties:\n                                                                    key:\n                                                                      description: key\n                                                                        is the label\n                                                                        key that the\n                                                                        selector applies\n                                                                        to.\n                                                                      type: string\n                                                                    operator:\n                                                                      description: operator\n                                                                        represents\n                                                                        a key's relationship\n                                                                        to a set of\n                                                                        values. Valid\n                                                                        operators\n                                                                        are In, NotIn,\n                                                                        Exists and\n                                                                        DoesNotExist.\n                                                                      type: string\n                                                                    values:\n                                                                      description: values\n                                                                        is an array\n                                                                        of string\n                                                                        values. If\n                                                                        the operator\n                                                                        is In or NotIn,\n                                                                        the values\n                                                                        array must\n                                                                        be non-empty.\n                                                                        If the operator\n                                                                        is Exists\n                                                                        or DoesNotExist,\n                                                                        the values\n                                                                        array must\n                                                                        be empty.\n                                                                        This array\n                                                                        is replaced\n                                                                        during a strategic\n                                                                        merge patch.\n                                                                      items:\n                                                                        type: string\n                                                                      type: array\n                                                                  required:\n                                                                  - key\n                                                                  - operator\n                                                                  type: object\n                                                                type: array\n                                                              matchLabels:\n                                                                additionalProperties:\n                                                                  type: string\n                                                                description: matchLabels\n                                                                  is a map of {key,value}\n                                                                  pairs. A single\n                                                                  {key,value} in the\n                                                                  matchLabels map\n                                                                  is equivalent to\n                                                                  an element of matchExpressions,\n                                                                  whose key field\n                                                                  is \"key\", the operator\n                                                                  is \"In\", and the\n                                                                  values array contains\n                                                                  only \"value\". The\n                                                                  requirements are\n                                                                  ANDed.\n                                                                type: object\n                                                            type: object\n                                                            x-kubernetes-map-type: atomic\n                                                          namespaceSelector:\n                                                            description: A label query\n                                                              over the set of namespaces\n                                                              that the term applies\n                                                              to. The term is applied\n                                                              to the union of the\n                                                              namespaces selected\n                                                              by this field and the\n                                                              ones listed in the namespaces\n                                                              field. null selector\n                                                              and null or empty namespaces\n                                                              list means \"this pod's\n                                                              namespace\". An empty\n                                                              selector ({}) matches\n                                                              all namespaces.\n                                                            properties:\n                                                              matchExpressions:\n                                                                description: matchExpressions\n                                                                  is a list of label\n                                                                  selector requirements.\n                                                                  The requirements\n                                                                  are ANDed.\n                                                                items:\n                                                                  description: A label\n                                                                    selector requirement\n                                                                    is a selector\n                                                                    that contains\n                                                                    values, a key,\n                                                                    and an operator\n                                                                    that relates the\n                                                                    key and values.\n                                                                  properties:\n                                                                    key:\n                                                                      description: key\n                                                                        is the label\n                                                                        key that the\n                                                                        selector applies\n                                                                        to.\n                                                                      type: string\n                                                                    operator:\n                                                                      description: operator\n                                                                        represents\n                                                                        a key's relationship\n                                                                        to a set of\n                                                                        values. Valid\n                                                                        operators\n                                                                        are In, NotIn,\n                                                                        Exists and\n                                                                        DoesNotExist.\n                                                                      type: string\n                                                                    values:\n                                                                      description: values\n                                                                        is an array\n                                                                        of string\n                                                                        values. If\n                                                                        the operator\n                                                                        is In or NotIn,\n                                                                        the values\n                                                                        array must\n                                                                        be non-empty.\n                                                                        If the operator\n                                                                        is Exists\n                                                                        or DoesNotExist,\n                                                                        the values\n                                                                        array must\n                                                                        be empty.\n                                                                        This array\n                                                                        is replaced\n                                                                        during a strategic\n                                                                        merge patch.\n                                                                      items:\n                                                                        type: string\n                                                                      type: array\n                                                                  required:\n                                                                  - key\n                                                                  - operator\n                                                                  type: object\n                                                                type: array\n                                                              matchLabels:\n                                                                additionalProperties:\n                                                                  type: string\n                                                                description: matchLabels\n                                                                  is a map of {key,value}\n                                                                  pairs. A single\n                                                                  {key,value} in the\n                                                                  matchLabels map\n                                                                  is equivalent to\n                                                                  an element of matchExpressions,\n                                                                  whose key field\n                                                                  is \"key\", the operator\n                                                                  is \"In\", and the\n                                                                  values array contains\n                                                                  only \"value\". The\n                                                                  requirements are\n                                                                  ANDed.\n                                                                type: object\n                                                            type: object\n                                                            x-kubernetes-map-type: atomic\n                                                          namespaces:\n                                                            description: namespaces\n                                                              specifies a static list\n                                                              of namespace names that\n                                                              the term applies to.\n                                                              The term is applied\n                                                              to the union of the\n                                                              namespaces listed in\n                                                              this field and the ones\n                                                              selected by namespaceSelector.\n                                                              null or empty namespaces\n                                                              list and null namespaceSelector\n                                                              means \"this pod's namespace\".\n                                                            items:\n                                                              type: string\n                                                            type: array\n                                                          topologyKey:\n                                                            description: This pod\n                                                              should be co-located\n                                                              (affinity) or not co-located\n                                                              (anti-affinity) with\n                                                              the pods matching the\n                                                              labelSelector in the\n                                                              specified namespaces,\n                                                              where co-located is\n                                                              defined as running on\n                                                              a node whose value of\n                                                              the label with key topologyKey\n                                                              matches that of any\n                                                              node on which any of\n                                                              the selected pods is\n                                                              running. Empty topologyKey\n                                                              is not allowed.\n                                                            type: string\n                                                        required:\n                                                        - topologyKey\n                                                        type: object\n                                                      weight:\n                                                        description: weight associated\n                                                          with matching the corresponding\n                                                          podAffinityTerm, in the\n                                                          range 1-100.\n                                                        format: int32\n                                                        type: integer\n                                                    required:\n                                                    - podAffinityTerm\n                                                    - weight\n                                                    type: object\n                                                  type: array\n                                                requiredDuringSchedulingIgnoredDuringExecution:\n                                                  description: If the anti-affinity\n                                                    requirements specified by this\n                                                    field are not met at scheduling\n                                                    time, the pod will not be scheduled\n                                                    onto the node. If the anti-affinity\n                                                    requirements specified by this\n                                                    field cease to be met at some\n                                                    point during pod execution (e.g.\n                                                    due to a pod label update), the\n                                                    system may or may not try to eventually\n                                                    evict the pod from its node. When\n                                                    there are multiple elements, the\n                                                    lists of nodes corresponding to\n                                                    each podAffinityTerm are intersected,\n                                                    i.e. all terms must be satisfied.\n                                                  items:\n                                                    description: Defines a set of\n                                                      pods (namely those matching\n                                                      the labelSelector relative to\n                                                      the given namespace(s)) that\n                                                      this pod should be co-located\n                                                      (affinity) or not co-located\n                                                      (anti-affinity) with, where\n                                                      co-located is defined as running\n                                                      on a node whose value of the\n                                                      label with key <topologyKey>\n                                                      matches that of any node on\n                                                      which a pod of the set of pods\n                                                      is running\n                                                    properties:\n                                                      labelSelector:\n                                                        description: A label query\n                                                          over a set of resources,\n                                                          in this case pods.\n                                                        properties:\n                                                          matchExpressions:\n                                                            description: matchExpressions\n                                                              is a list of label selector\n                                                              requirements. The requirements\n                                                              are ANDed.\n                                                            items:\n                                                              description: A label\n                                                                selector requirement\n                                                                is a selector that\n                                                                contains values, a\n                                                                key, and an operator\n                                                                that relates the key\n                                                                and values.\n                                                              properties:\n                                                                key:\n                                                                  description: key\n                                                                    is the label key\n                                                                    that the selector\n                                                                    applies to.\n                                                                  type: string\n                                                                operator:\n                                                                  description: operator\n                                                                    represents a key's\n                                                                    relationship to\n                                                                    a set of values.\n                                                                    Valid operators\n                                                                    are In, NotIn,\n                                                                    Exists and DoesNotExist.\n                                                                  type: string\n                                                                values:\n                                                                  description: values\n                                                                    is an array of\n                                                                    string values.\n                                                                    If the operator\n                                                                    is In or NotIn,\n                                                                    the values array\n                                                                    must be non-empty.\n                                                                    If the operator\n                                                                    is Exists or DoesNotExist,\n                                                                    the values array\n                                                                    must be empty.\n                                                                    This array is\n                                                                    replaced during\n                                                                    a strategic merge\n                                                                    patch.\n                                                                  items:\n                                                                    type: string\n                                                                  type: array\n                                                              required:\n                                                              - key\n                                                              - operator\n                                                              type: object\n                                                            type: array\n                                                          matchLabels:\n                                                            additionalProperties:\n                                                              type: string\n                                                            description: matchLabels\n                                                              is a map of {key,value}\n                                                              pairs. A single {key,value}\n                                                              in the matchLabels map\n                                                              is equivalent to an\n                                                              element of matchExpressions,\n                                                              whose key field is \"key\",\n                                                              the operator is \"In\",\n                                                              and the values array\n                                                              contains only \"value\".\n                                                              The requirements are\n                                                              ANDed.\n                                                            type: object\n                                                        type: object\n                                                        x-kubernetes-map-type: atomic\n                                                      namespaceSelector:\n                                                        description: A label query\n                                                          over the set of namespaces\n                                                          that the term applies to.\n                                                          The term is applied to the\n                                                          union of the namespaces\n                                                          selected by this field and\n                                                          the ones listed in the namespaces\n                                                          field. null selector and\n                                                          null or empty namespaces\n                                                          list means \"this pod's namespace\".\n                                                          An empty selector ({}) matches\n                                                          all namespaces.\n                                                        properties:\n                                                          matchExpressions:\n                                                            description: matchExpressions\n                                                              is a list of label selector\n                                                              requirements. The requirements\n                                                              are ANDed.\n                                                            items:\n                                                              description: A label\n                                                                selector requirement\n                                                                is a selector that\n                                                                contains values, a\n                                                                key, and an operator\n                                                                that relates the key\n                                                                and values.\n                                                              properties:\n                                                                key:\n                                                                  description: key\n                                                                    is the label key\n                                                                    that the selector\n                                                                    applies to.\n                                                                  type: string\n                                                                operator:\n                                                                  description: operator\n                                                                    represents a key's\n                                                                    relationship to\n                                                                    a set of values.\n                                                                    Valid operators\n                                                                    are In, NotIn,\n                                                                    Exists and DoesNotExist.\n                                                                  type: string\n                                                                values:\n                                                                  description: values\n                                                                    is an array of\n                                                                    string values.\n                                                                    If the operator\n                                                                    is In or NotIn,\n                                                                    the values array\n                                                                    must be non-empty.\n                                                                    If the operator\n                                                                    is Exists or DoesNotExist,\n                                                                    the values array\n                                                                    must be empty.\n                                                                    This array is\n                                                                    replaced during\n                                                                    a strategic merge\n                                                                    patch.\n                                                                  items:\n                                                                    type: string\n                                                                  type: array\n                                                              required:\n                                                              - key\n                                                              - operator\n                                                              type: object\n                                                            type: array\n                                                          matchLabels:\n                                                            additionalProperties:\n                                                              type: string\n                                                            description: matchLabels\n                                                              is a map of {key,value}\n                                                              pairs. A single {key,value}\n                                                              in the matchLabels map\n                                                              is equivalent to an\n                                                              element of matchExpressions,\n                                                              whose key field is \"key\",\n                                                              the operator is \"In\",\n                                                              and the values array\n                                                              contains only \"value\".\n                                                              The requirements are\n                                                              ANDed.\n                                                            type: object\n                                                        type: object\n                                                        x-kubernetes-map-type: atomic\n                                                      namespaces:\n                                                        description: namespaces specifies\n                                                          a static list of namespace\n                                                          names that the term applies\n                                                          to. The term is applied\n                                                          to the union of the namespaces\n                                                          listed in this field and\n                                                          the ones selected by namespaceSelector.\n                                                          null or empty namespaces\n                                                          list and null namespaceSelector\n                                                          means \"this pod's namespace\".\n                                                        items:\n                                                          type: string\n                                                        type: array\n                                                      topologyKey:\n                                                        description: This pod should\n                                                          be co-located (affinity)\n                                                          or not co-located (anti-affinity)\n                                                          with the pods matching the\n                                                          labelSelector in the specified\n                                                          namespaces, where co-located\n                                                          is defined as running on\n                                                          a node whose value of the\n                                                          label with key topologyKey\n                                                          matches that of any node\n                                                          on which any of the selected\n                                                          pods is running. Empty topologyKey\n                                                          is not allowed.\n                                                        type: string\n                                                    required:\n                                                    - topologyKey\n                                                    type: object\n                                                  type: array\n                                              type: object\n                                          type: object\n                                        imagePullSecrets:\n                                          description: If specified, the pod's imagePullSecrets\n                                          items:\n                                            description: LocalObjectReference contains\n                                              enough information to let you locate\n                                              the referenced object inside the same\n                                              namespace.\n                                            properties:\n                                              name:\n                                                description: 'Name of the referent.\n                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                                  TODO: Add other useful fields. apiVersion,\n                                                  kind, uid?'\n                                                type: string\n                                            type: object\n                                            x-kubernetes-map-type: atomic\n                                          type: array\n                                        nodeSelector:\n                                          additionalProperties:\n                                            type: string\n                                          description: 'NodeSelector is a selector\n                                            which must be true for the pod to fit\n                                            on a node. Selector which must match a\n                                            node''s labels for the pod to be scheduled\n                                            on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/'\n                                          type: object\n                                        priorityClassName:\n                                          description: If specified, the pod's priorityClassName.\n                                          type: string\n                                        serviceAccountName:\n                                          description: If specified, the pod's service\n                                            account\n                                          type: string\n                                        tolerations:\n                                          description: If specified, the pod's tolerations.\n                                          items:\n                                            description: The pod this Toleration is\n                                              attached to tolerates any taint that\n                                              matches the triple <key,value,effect>\n                                              using the matching operator <operator>.\n                                            properties:\n                                              effect:\n                                                description: Effect indicates the\n                                                  taint effect to match. Empty means\n                                                  match all taint effects. When specified,\n                                                  allowed values are NoSchedule, PreferNoSchedule\n                                                  and NoExecute.\n                                                type: string\n                                              key:\n                                                description: Key is the taint key\n                                                  that the toleration applies to.\n                                                  Empty means match all taint keys.\n                                                  If the key is empty, operator must\n                                                  be Exists; this combination means\n                                                  to match all values and all keys.\n                                                type: string\n                                              operator:\n                                                description: Operator represents a\n                                                  key's relationship to the value.\n                                                  Valid operators are Exists and Equal.\n                                                  Defaults to Equal. Exists is equivalent\n                                                  to wildcard for value, so that a\n                                                  pod can tolerate all taints of a\n                                                  particular category.\n                                                type: string\n                                              tolerationSeconds:\n                                                description: TolerationSeconds represents\n                                                  the period of time the toleration\n                                                  (which must be of effect NoExecute,\n                                                  otherwise this field is ignored)\n                                                  tolerates the taint. By default,\n                                                  it is not set, which means tolerate\n                                                  the taint forever (do not evict).\n                                                  Zero and negative values will be\n                                                  treated as 0 (evict immediately)\n                                                  by the system.\n                                                format: int64\n                                                type: integer\n                                              value:\n                                                description: Value is the taint value\n                                                  the toleration matches to. If the\n                                                  operator is Exists, the value should\n                                                  be empty, otherwise just a regular\n                                                  string.\n                                                type: string\n                                            type: object\n                                          type: array\n                                      type: object\n                                  type: object\n                                serviceType:\n                                  description: Optional service type for Kubernetes\n                                    solver service. Supported values are NodePort\n                                    or ClusterIP. If unset, defaults to NodePort.\n                                  type: string\n                              type: object\n                          type: object\n                        selector:\n                          description: Selector selects a set of DNSNames on the Certificate\n                            resource that should be solved using this challenge solver.\n                            If not specified, the solver will be treated as the 'default'\n                            solver with the lowest priority, i.e. if any other solver\n                            has a more specific match, it will be used instead.\n                          properties:\n                            dnsNames:\n                              description: List of DNSNames that this solver will\n                                be used to solve. If specified and a match is found,\n                                a dnsNames selector will take precedence over a dnsZones\n                                selector. If multiple solvers match with the same\n                                dnsNames value, the solver with the most matching\n                                labels in matchLabels will be selected. If neither\n                                has more matches, the solver defined earlier in the\n                                list will be selected.\n                              items:\n                                type: string\n                              type: array\n                            dnsZones:\n                              description: List of DNSZones that this solver will\n                                be used to solve. The most specific DNS zone match\n                                specified here will take precedence over other DNS\n                                zone matches, so a solver specifying sys.example.com\n                                will be selected over one specifying example.com for\n                                the domain www.sys.example.com. If multiple solvers\n                                match with the same dnsZones value, the solver with\n                                the most matching labels in matchLabels will be selected.\n                                If neither has more matches, the solver defined earlier\n                                in the list will be selected.\n                              items:\n                                type: string\n                              type: array\n                            matchLabels:\n                              additionalProperties:\n                                type: string\n                              description: A label selector that is used to refine\n                                the set of certificate's that this challenge solver\n                                will apply to.\n                              type: object\n                          type: object\n                      type: object\n                    type: array\n                required:\n                - privateKeySecretRef\n                - server\n                type: object\n              ca:\n                description: CA configures this issuer to sign certificates using\n                  a signing CA keypair stored in a Secret resource. This is used to\n                  build internal PKIs that are managed by cert-manager.\n                properties:\n                  crlDistributionPoints:\n                    description: The CRL distribution points is an X.509 v3 certificate\n                      extension which identifies the location of the CRL from which\n                      the revocation of this certificate can be checked. If not set,\n                      certificates will be issued without distribution points set.\n                    items:\n                      type: string\n                    type: array\n                  ocspServers:\n                    description: The OCSP server list is an X.509 v3 extension that\n                      defines a list of URLs of OCSP responders. The OCSP responders\n                      can be queried for the revocation status of an issued certificate.\n                      If not set, the certificate will be issued with no OCSP servers\n                      set. For example, an OCSP server URL could be \"http://ocsp.int-x3.letsencrypt.org\".\n                    items:\n                      type: string\n                    type: array\n                  secretName:\n                    description: SecretName is the name of the secret used to sign\n                      Certificates issued by this Issuer.\n                    type: string\n                required:\n                - secretName\n                type: object\n              selfSigned:\n                description: SelfSigned configures this issuer to 'self sign' certificates\n                  using the private key used to create the CertificateRequest object.\n                properties:\n                  crlDistributionPoints:\n                    description: The CRL distribution points is an X.509 v3 certificate\n                      extension which identifies the location of the CRL from which\n                      the revocation of this certificate can be checked. If not set\n                      certificate will be issued without CDP. Values are strings.\n                    items:\n                      type: string\n                    type: array\n                type: object\n              vault:\n                description: Vault configures this issuer to sign certificates using\n                  a HashiCorp Vault PKI backend.\n                properties:\n                  auth:\n                    description: Auth configures how cert-manager authenticates with\n                      the Vault server.\n                    properties:\n                      appRole:\n                        description: AppRole authenticates with Vault using the App\n                          Role auth mechanism, with the role and secret stored in\n                          a Kubernetes Secret resource.\n                        properties:\n                          path:\n                            description: 'Path where the App Role authentication backend\n                              is mounted in Vault, e.g: \"approle\"'\n                            type: string\n                          roleId:\n                            description: RoleID configured in the App Role authentication\n                              backend when setting up the authentication backend in\n                              Vault.\n                            type: string\n                          secretRef:\n                            description: Reference to a key in a Secret that contains\n                              the App Role secret used to authenticate with Vault.\n                              The `key` field must be specified and denotes which\n                              entry within the Secret resource is used as the app\n                              role secret.\n                            properties:\n                              key:\n                                description: The key of the entry in the Secret resource's\n                                  `data` field to be used. Some instances of this\n                                  field may be defaulted, in others it may be required.\n                                type: string\n                              name:\n                                description: 'Name of the resource being referred\n                                  to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                type: string\n                            required:\n                            - name\n                            type: object\n                        required:\n                        - path\n                        - roleId\n                        - secretRef\n                        type: object\n                      kubernetes:\n                        description: Kubernetes authenticates with Vault by passing\n                          the ServiceAccount token stored in the named Secret resource\n                          to the Vault server.\n                        properties:\n                          mountPath:\n                            description: The Vault mountPath here is the mount path\n                              to use when authenticating with Vault. For example,\n                              setting a value to `/v1/auth/foo`, will use the path\n                              `/v1/auth/foo/login` to authenticate with Vault. If\n                              unspecified, the default value \"/v1/auth/kubernetes\"\n                              will be used.\n                            type: string\n                          role:\n                            description: A required field containing the Vault Role\n                              to assume. A Role binds a Kubernetes ServiceAccount\n                              with a set of Vault policies.\n                            type: string\n                          secretRef:\n                            description: The required Secret field containing a Kubernetes\n                              ServiceAccount JWT used for authenticating with Vault.\n                              Use of 'ambient credentials' is not supported.\n                            properties:\n                              key:\n                                description: The key of the entry in the Secret resource's\n                                  `data` field to be used. Some instances of this\n                                  field may be defaulted, in others it may be required.\n                                type: string\n                              name:\n                                description: 'Name of the resource being referred\n                                  to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                type: string\n                            required:\n                            - name\n                            type: object\n                          serviceAccountRef:\n                            description: A reference to a service account that will\n                              be used to request a bound token (also known as \"projected\n                              token\"). Compared to using \"secretRef\", using this field\n                              means that you don't rely on statically bound tokens.\n                              To use this field, you must configure an RBAC rule to\n                              let cert-manager request a token.\n                            properties:\n                              name:\n                                description: Name of the ServiceAccount used to request\n                                  a token.\n                                type: string\n                            required:\n                            - name\n                            type: object\n                        required:\n                        - role\n                        type: object\n                      tokenSecretRef:\n                        description: TokenSecretRef authenticates with Vault by presenting\n                          a token.\n                        properties:\n                          key:\n                            description: The key of the entry in the Secret resource's\n                              `data` field to be used. Some instances of this field\n                              may be defaulted, in others it may be required.\n                            type: string\n                          name:\n                            description: 'Name of the resource being referred to.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                            type: string\n                        required:\n                        - name\n                        type: object\n                    type: object\n                  caBundle:\n                    description: Base64-encoded bundle of PEM CAs which will be used\n                      to validate the certificate chain presented by Vault. Only used\n                      if using HTTPS to connect to Vault and ignored for HTTP connections.\n                      Mutually exclusive with CABundleSecretRef. If neither CABundle\n                      nor CABundleSecretRef are defined, the certificate bundle in\n                      the cert-manager controller container is used to validate the\n                      TLS connection.\n                    format: byte\n                    type: string\n                  caBundleSecretRef:\n                    description: Reference to a Secret containing a bundle of PEM-encoded\n                      CAs to use when verifying the certificate chain presented by\n                      Vault when using HTTPS. Mutually exclusive with CABundle. If\n                      neither CABundle nor CABundleSecretRef are defined, the certificate\n                      bundle in the cert-manager controller container is used to validate\n                      the TLS connection. If no key for the Secret is specified, cert-manager\n                      will default to 'ca.crt'.\n                    properties:\n                      key:\n                        description: The key of the entry in the Secret resource's\n                          `data` field to be used. Some instances of this field may\n                          be defaulted, in others it may be required.\n                        type: string\n                      name:\n                        description: 'Name of the resource being referred to. More\n                          info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                        type: string\n                    required:\n                    - name\n                    type: object\n                  namespace:\n                    description: 'Name of the vault namespace. Namespaces is a set\n                      of features within Vault Enterprise that allows Vault environments\n                      to support Secure Multi-tenancy. e.g: \"ns1\" More about namespaces\n                      can be found here https://www.vaultproject.io/docs/enterprise/namespaces'\n                    type: string\n                  path:\n                    description: 'Path is the mount path of the Vault PKI backend''s\n                      `sign` endpoint, e.g: \"my_pki_mount/sign/my-role-name\".'\n                    type: string\n                  server:\n                    description: 'Server is the connection address for the Vault server,\n                      e.g: \"https://vault.example.com:8200\".'\n                    type: string\n                required:\n                - auth\n                - path\n                - server\n                type: object\n              venafi:\n                description: Venafi configures this issuer to sign certificates using\n                  a Venafi TPP or Venafi Cloud policy zone.\n                properties:\n                  cloud:\n                    description: Cloud specifies the Venafi cloud configuration settings.\n                      Only one of TPP or Cloud may be specified.\n                    properties:\n                      apiTokenSecretRef:\n                        description: APITokenSecretRef is a secret key selector for\n                          the Venafi Cloud API token.\n                        properties:\n                          key:\n                            description: The key of the entry in the Secret resource's\n                              `data` field to be used. Some instances of this field\n                              may be defaulted, in others it may be required.\n                            type: string\n                          name:\n                            description: 'Name of the resource being referred to.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                            type: string\n                        required:\n                        - name\n                        type: object\n                      url:\n                        description: URL is the base URL for Venafi Cloud. Defaults\n                          to \"https://api.venafi.cloud/v1\".\n                        type: string\n                    required:\n                    - apiTokenSecretRef\n                    type: object\n                  tpp:\n                    description: TPP specifies Trust Protection Platform configuration\n                      settings. Only one of TPP or Cloud may be specified.\n                    properties:\n                      caBundle:\n                        description: Base64-encoded bundle of PEM CAs which will be\n                          used to validate the certificate chain presented by the\n                          TPP server. Only used if using HTTPS; ignored for HTTP.\n                          If undefined, the certificate bundle in the cert-manager\n                          controller container is used to validate the chain.\n                        format: byte\n                        type: string\n                      credentialsRef:\n                        description: CredentialsRef is a reference to a Secret containing\n                          the username and password for the TPP server. The secret\n                          must contain two keys, 'username' and 'password'.\n                        properties:\n                          name:\n                            description: 'Name of the resource being referred to.\n                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                            type: string\n                        required:\n                        - name\n                        type: object\n                      url:\n                        description: 'URL is the base URL for the vedsdk endpoint\n                          of the Venafi TPP instance, for example: \"https://tpp.example.com/vedsdk\".'\n                        type: string\n                    required:\n                    - credentialsRef\n                    - url\n                    type: object\n                  zone:\n                    description: Zone is the Venafi Policy Zone to use for this issuer.\n                      All requests made to the Venafi platform will be restricted\n                      by the named zone policy. This field is required.\n                    type: string\n                required:\n                - zone\n                type: object\n            type: object\n          status:\n            description: Status of the Issuer. This is set and managed automatically.\n            properties:\n              acme:\n                description: ACME specific status options. This field should only\n                  be set if the Issuer is configured to use an ACME server to issue\n                  certificates.\n                properties:\n                  lastPrivateKeyHash:\n                    description: LastPrivateKeyHash is a hash of the private key associated\n                      with the latest registered ACME account, in order to track changes\n                      made to registered account associated with the Issuer\n                    type: string\n                  lastRegisteredEmail:\n                    description: LastRegisteredEmail is the email associated with\n                      the latest registered ACME account, in order to track changes\n                      made to registered account associated with the  Issuer\n                    type: string\n                  uri:\n                    description: URI is the unique account identifier, which can also\n                      be used to retrieve account details from the CA\n                    type: string\n                type: object\n              conditions:\n                description: List of status conditions to indicate the status of a\n                  CertificateRequest. Known condition types are `Ready`.\n                items:\n                  description: IssuerCondition contains condition information for\n                    an Issuer.\n                  properties:\n                    lastTransitionTime:\n                      description: LastTransitionTime is the timestamp corresponding\n                        to the last status change of this condition.\n                      format: date-time\n                      type: string\n                    message:\n                      description: Message is a human readable description of the\n                        details of the last transition, complementing reason.\n                      type: string\n                    observedGeneration:\n                      description: If set, this represents the .metadata.generation\n                        that the condition was set based upon. For instance, if .metadata.generation\n                        is currently 12, but the .status.condition[x].observedGeneration\n                        is 9, the condition is out of date with respect to the current\n                        state of the Issuer.\n                      format: int64\n                      type: integer\n                    reason:\n                      description: Reason is a brief machine readable explanation\n                        for the condition's last transition.\n                      type: string\n                    status:\n                      description: Status of the condition, one of (`True`, `False`,\n                        `Unknown`).\n                      enum:\n                      - \"True\"\n                      - \"False\"\n                      - Unknown\n                      type: string\n                    type:\n                      description: Type of the condition, known values are (`Ready`).\n                      type: string\n                  required:\n                  - status\n                  - type\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - type\n                x-kubernetes-list-type: map\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n    subresources:\n      status: {}\n---\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  labels:\n    app: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: orders.acme.cert-manager.io\nspec:\n  group: acme.cert-manager.io\n  names:\n    categories:\n    - cert-manager\n    - cert-manager-acme\n    kind: Order\n    listKind: OrderList\n    plural: orders\n    singular: order\n  scope: Namespaced\n  versions:\n  - additionalPrinterColumns:\n    - jsonPath: .status.state\n      name: State\n      type: string\n    - jsonPath: .spec.issuerRef.name\n      name: Issuer\n      priority: 1\n      type: string\n    - jsonPath: .status.reason\n      name: Reason\n      priority: 1\n      type: string\n    - description: CreationTimestamp is a timestamp representing the server time when\n        this object was created. It is not guaranteed to be set in happens-before\n        order across separate operations. Clients may not set this value. It is represented\n        in RFC3339 form and is in UTC.\n      jsonPath: .metadata.creationTimestamp\n      name: Age\n      type: date\n    name: v1\n    schema:\n      openAPIV3Schema:\n        description: Order is a type to represent an Order with an ACME server\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            properties:\n              commonName:\n                description: CommonName is the common name as specified on the DER\n                  encoded CSR. If specified, this value must also be present in `dnsNames`\n                  or `ipAddresses`. This field must match the corresponding field\n                  on the DER encoded CSR.\n                type: string\n              dnsNames:\n                description: DNSNames is a list of DNS names that should be included\n                  as part of the Order validation process. This field must match the\n                  corresponding field on the DER encoded CSR.\n                items:\n                  type: string\n                type: array\n              duration:\n                description: Duration is the duration for the not after date for the\n                  requested certificate. this is set on order creation as pe the ACME\n                  spec.\n                type: string\n              ipAddresses:\n                description: IPAddresses is a list of IP addresses that should be\n                  included as part of the Order validation process. This field must\n                  match the corresponding field on the DER encoded CSR.\n                items:\n                  type: string\n                type: array\n              issuerRef:\n                description: IssuerRef references a properly configured ACME-type\n                  Issuer which should be used to create this Order. If the Issuer\n                  does not exist, processing will be retried. If the Issuer is not\n                  an 'ACME' Issuer, an error will be returned and the Order will be\n                  marked as failed.\n                properties:\n                  group:\n                    description: Group of the resource being referred to.\n                    type: string\n                  kind:\n                    description: Kind of the resource being referred to.\n                    type: string\n                  name:\n                    description: Name of the resource being referred to.\n                    type: string\n                required:\n                - name\n                type: object\n              request:\n                description: Certificate signing request bytes in DER encoding. This\n                  will be used when finalizing the order. This field must be set on\n                  the order.\n                format: byte\n                type: string\n            required:\n            - issuerRef\n            - request\n            type: object\n          status:\n            properties:\n              authorizations:\n                description: Authorizations contains data returned from the ACME server\n                  on what authorizations must be completed in order to validate the\n                  DNS names specified on the Order.\n                items:\n                  description: ACMEAuthorization contains data returned from the ACME\n                    server on an authorization that must be completed in order validate\n                    a DNS name on an ACME Order resource.\n                  properties:\n                    challenges:\n                      description: Challenges specifies the challenge types offered\n                        by the ACME server. One of these challenge types will be selected\n                        when validating the DNS name and an appropriate Challenge\n                        resource will be created to perform the ACME challenge process.\n                      items:\n                        description: Challenge specifies a challenge offered by the\n                          ACME server for an Order. An appropriate Challenge resource\n                          can be created to perform the ACME challenge process.\n                        properties:\n                          token:\n                            description: Token is the token that must be presented\n                              for this challenge. This is used to compute the 'key'\n                              that must also be presented.\n                            type: string\n                          type:\n                            description: Type is the type of challenge being offered,\n                              e.g. 'http-01', 'dns-01', 'tls-sni-01', etc. This is\n                              the raw value retrieved from the ACME server. Only 'http-01'\n                              and 'dns-01' are supported by cert-manager, other values\n                              will be ignored.\n                            type: string\n                          url:\n                            description: URL is the URL of this challenge. It can\n                              be used to retrieve additional metadata about the Challenge\n                              from the ACME server.\n                            type: string\n                        required:\n                        - token\n                        - type\n                        - url\n                        type: object\n                      type: array\n                    identifier:\n                      description: Identifier is the DNS name to be validated as part\n                        of this authorization\n                      type: string\n                    initialState:\n                      description: InitialState is the initial state of the ACME authorization\n                        when first fetched from the ACME server. If an Authorization\n                        is already 'valid', the Order controller will not create a\n                        Challenge resource for the authorization. This will occur\n                        when working with an ACME server that enables 'authz reuse'\n                        (such as Let's Encrypt's production endpoint). If not set\n                        and 'identifier' is set, the state is assumed to be pending\n                        and a Challenge will be created.\n                      enum:\n                      - valid\n                      - ready\n                      - pending\n                      - processing\n                      - invalid\n                      - expired\n                      - errored\n                      type: string\n                    url:\n                      description: URL is the URL of the Authorization that must be\n                        completed\n                      type: string\n                    wildcard:\n                      description: Wildcard will be true if this authorization is\n                        for a wildcard DNS name. If this is true, the identifier will\n                        be the *non-wildcard* version of the DNS name. For example,\n                        if '*.example.com' is the DNS name being validated, this field\n                        will be 'true' and the 'identifier' field will be 'example.com'.\n                      type: boolean\n                  required:\n                  - url\n                  type: object\n                type: array\n              certificate:\n                description: Certificate is a copy of the PEM encoded certificate\n                  for this Order. This field will be populated after the order has\n                  been successfully finalized with the ACME server, and the order\n                  has transitioned to the 'valid' state.\n                format: byte\n                type: string\n              failureTime:\n                description: FailureTime stores the time that this order failed. This\n                  is used to influence garbage collection and back-off.\n                format: date-time\n                type: string\n              finalizeURL:\n                description: FinalizeURL of the Order. This is used to obtain certificates\n                  for this order once it has been completed.\n                type: string\n              reason:\n                description: Reason optionally provides more information about a why\n                  the order is in the current state.\n                type: string\n              state:\n                description: State contains the current state of this Order resource.\n                  States 'success' and 'expired' are 'final'\n                enum:\n                - valid\n                - ready\n                - pending\n                - processing\n                - invalid\n                - expired\n                - errored\n                type: string\n              url:\n                description: URL of the Order. This will initially be empty when the\n                  resource is first created. The Order controller will populate this\n                  field when the Order is first processed. This field will be immutable\n                  after it is initially set.\n                type: string\n            type: object\n        required:\n        - metadata\n        - spec\n        type: object\n    served: true\n    storage: true\n    subresources:\n      status: {}\n---\napiVersion: v1\nautomountServiceAccountToken: true\nkind: ServiceAccount\nmetadata:\n  labels:\n    app: cert-manager\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: cert-manager\n  namespace: cert-manager\n---\napiVersion: v1\nautomountServiceAccountToken: true\nkind: ServiceAccount\nmetadata:\n  labels:\n    app: cainjector\n    app.kubernetes.io/component: cainjector\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: cainjector\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: cert-manager-cainjector\n  namespace: cert-manager\n---\napiVersion: v1\nautomountServiceAccountToken: true\nkind: ServiceAccount\nmetadata:\n  annotations:\n    helm.sh/hook: post-install\n    helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded\n    helm.sh/hook-weight: \"-5\"\n  labels:\n    app: startupapicheck\n    app.kubernetes.io/component: startupapicheck\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: startupapicheck\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: cert-manager-startupapicheck\n  namespace: cert-manager\n---\napiVersion: v1\nautomountServiceAccountToken: true\nkind: ServiceAccount\nmetadata:\n  labels:\n    app: webhook\n    app.kubernetes.io/component: webhook\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: cert-manager-webhook\n  namespace: cert-manager\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  labels:\n    app: cainjector\n    app.kubernetes.io/component: cainjector\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: cainjector\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: cert-manager-cainjector:leaderelection\n  namespace: cert-manager\nrules:\n- apiGroups:\n  - coordination.k8s.io\n  resourceNames:\n  - cert-manager-cainjector-leader-election\n  - cert-manager-cainjector-leader-election-core\n  resources:\n  - leases\n  verbs:\n  - get\n  - update\n  - patch\n- apiGroups:\n  - coordination.k8s.io\n  resources:\n  - leases\n  verbs:\n  - create\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  annotations:\n    helm.sh/hook: post-install\n    helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded\n    helm.sh/hook-weight: \"-5\"\n  labels:\n    app: startupapicheck\n    app.kubernetes.io/component: startupapicheck\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: startupapicheck\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: cert-manager-startupapicheck:create-cert\n  namespace: cert-manager\nrules:\n- apiGroups:\n  - cert-manager.io\n  resources:\n  - certificates\n  verbs:\n  - create\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  labels:\n    app: webhook\n    app.kubernetes.io/component: webhook\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: cert-manager-webhook:dynamic-serving\n  namespace: cert-manager\nrules:\n- apiGroups:\n  - \"\"\n  resourceNames:\n  - cert-manager-webhook-ca\n  resources:\n  - secrets\n  verbs:\n  - get\n  - list\n  - watch\n  - update\n- apiGroups:\n  - \"\"\n  resources:\n  - secrets\n  verbs:\n  - create\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  labels:\n    app: cert-manager\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: cert-manager:leaderelection\n  namespace: cert-manager\nrules:\n- apiGroups:\n  - coordination.k8s.io\n  resourceNames:\n  - cert-manager-controller\n  resources:\n  - leases\n  verbs:\n  - get\n  - update\n  - patch\n- apiGroups:\n  - coordination.k8s.io\n  resources:\n  - leases\n  verbs:\n  - create\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app: cainjector\n    app.kubernetes.io/component: cainjector\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: cainjector\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: cert-manager-cainjector\nrules:\n- apiGroups:\n  - cert-manager.io\n  resources:\n  - certificates\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - \"\"\n  resources:\n  - secrets\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - \"\"\n  resources:\n  - events\n  verbs:\n  - get\n  - create\n  - update\n  - patch\n- apiGroups:\n  - admissionregistration.k8s.io\n  resources:\n  - validatingwebhookconfigurations\n  - mutatingwebhookconfigurations\n  verbs:\n  - get\n  - list\n  - watch\n  - update\n  - patch\n- apiGroups:\n  - apiregistration.k8s.io\n  resources:\n  - apiservices\n  verbs:\n  - get\n  - list\n  - watch\n  - update\n  - patch\n- apiGroups:\n  - apiextensions.k8s.io\n  resources:\n  - customresourcedefinitions\n  verbs:\n  - get\n  - list\n  - watch\n  - update\n  - patch\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app: cert-manager\n    app.kubernetes.io/component: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: cert-manager-controller-approve:cert-manager-io\nrules:\n- apiGroups:\n  - cert-manager.io\n  resourceNames:\n  - issuers.cert-manager.io/*\n  - clusterissuers.cert-manager.io/*\n  resources:\n  - signers\n  verbs:\n  - approve\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app: cert-manager\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: cert-manager-controller-certificates\nrules:\n- apiGroups:\n  - cert-manager.io\n  resources:\n  - certificates\n  - certificates/status\n  - certificaterequests\n  - certificaterequests/status\n  verbs:\n  - update\n  - patch\n- apiGroups:\n  - cert-manager.io\n  resources:\n  - certificates\n  - certificaterequests\n  - clusterissuers\n  - issuers\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - cert-manager.io\n  resources:\n  - certificates/finalizers\n  - certificaterequests/finalizers\n  verbs:\n  - update\n- apiGroups:\n  - acme.cert-manager.io\n  resources:\n  - orders\n  verbs:\n  - create\n  - delete\n  - get\n  - list\n  - watch\n- apiGroups:\n  - \"\"\n  resources:\n  - secrets\n  verbs:\n  - get\n  - list\n  - watch\n  - create\n  - update\n  - delete\n  - patch\n- apiGroups:\n  - \"\"\n  resources:\n  - events\n  verbs:\n  - create\n  - patch\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app: cert-manager\n    app.kubernetes.io/component: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: cert-manager-controller-certificatesigningrequests\nrules:\n- apiGroups:\n  - certificates.k8s.io\n  resources:\n  - certificatesigningrequests\n  verbs:\n  - get\n  - list\n  - watch\n  - update\n- apiGroups:\n  - certificates.k8s.io\n  resources:\n  - certificatesigningrequests/status\n  verbs:\n  - update\n  - patch\n- apiGroups:\n  - certificates.k8s.io\n  resourceNames:\n  - issuers.cert-manager.io/*\n  - clusterissuers.cert-manager.io/*\n  resources:\n  - signers\n  verbs:\n  - sign\n- apiGroups:\n  - authorization.k8s.io\n  resources:\n  - subjectaccessreviews\n  verbs:\n  - create\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app: cert-manager\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: cert-manager-controller-challenges\nrules:\n- apiGroups:\n  - acme.cert-manager.io\n  resources:\n  - challenges\n  - challenges/status\n  verbs:\n  - update\n  - patch\n- apiGroups:\n  - acme.cert-manager.io\n  resources:\n  - challenges\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - cert-manager.io\n  resources:\n  - issuers\n  - clusterissuers\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - \"\"\n  resources:\n  - secrets\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - \"\"\n  resources:\n  - events\n  verbs:\n  - create\n  - patch\n- apiGroups:\n  - \"\"\n  resources:\n  - pods\n  - services\n  verbs:\n  - get\n  - list\n  - watch\n  - create\n  - delete\n- apiGroups:\n  - networking.k8s.io\n  resources:\n  - ingresses\n  verbs:\n  - get\n  - list\n  - watch\n  - create\n  - delete\n  - update\n- apiGroups:\n  - gateway.networking.k8s.io\n  resources:\n  - httproutes\n  verbs:\n  - get\n  - list\n  - watch\n  - create\n  - delete\n  - update\n- apiGroups:\n  - route.openshift.io\n  resources:\n  - routes/custom-host\n  verbs:\n  - create\n- apiGroups:\n  - acme.cert-manager.io\n  resources:\n  - challenges/finalizers\n  verbs:\n  - update\n- apiGroups:\n  - \"\"\n  resources:\n  - secrets\n  verbs:\n  - get\n  - list\n  - watch\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app: cert-manager\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: cert-manager-controller-clusterissuers\nrules:\n- apiGroups:\n  - cert-manager.io\n  resources:\n  - clusterissuers\n  - clusterissuers/status\n  verbs:\n  - update\n  - patch\n- apiGroups:\n  - cert-manager.io\n  resources:\n  - clusterissuers\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - \"\"\n  resources:\n  - secrets\n  verbs:\n  - get\n  - list\n  - watch\n  - create\n  - update\n  - delete\n- apiGroups:\n  - \"\"\n  resources:\n  - events\n  verbs:\n  - create\n  - patch\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app: cert-manager\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: cert-manager-controller-ingress-shim\nrules:\n- apiGroups:\n  - cert-manager.io\n  resources:\n  - certificates\n  - certificaterequests\n  verbs:\n  - create\n  - update\n  - delete\n- apiGroups:\n  - cert-manager.io\n  resources:\n  - certificates\n  - certificaterequests\n  - issuers\n  - clusterissuers\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - networking.k8s.io\n  resources:\n  - ingresses\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - networking.k8s.io\n  resources:\n  - ingresses/finalizers\n  verbs:\n  - update\n- apiGroups:\n  - gateway.networking.k8s.io\n  resources:\n  - gateways\n  - httproutes\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - gateway.networking.k8s.io\n  resources:\n  - gateways/finalizers\n  - httproutes/finalizers\n  verbs:\n  - update\n- apiGroups:\n  - \"\"\n  resources:\n  - events\n  verbs:\n  - create\n  - patch\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app: cert-manager\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: cert-manager-controller-issuers\nrules:\n- apiGroups:\n  - cert-manager.io\n  resources:\n  - issuers\n  - issuers/status\n  verbs:\n  - update\n  - patch\n- apiGroups:\n  - cert-manager.io\n  resources:\n  - issuers\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - \"\"\n  resources:\n  - secrets\n  verbs:\n  - get\n  - list\n  - watch\n  - create\n  - update\n  - delete\n- apiGroups:\n  - \"\"\n  resources:\n  - events\n  verbs:\n  - create\n  - patch\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app: cert-manager\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: cert-manager-controller-orders\nrules:\n- apiGroups:\n  - acme.cert-manager.io\n  resources:\n  - orders\n  - orders/status\n  verbs:\n  - update\n  - patch\n- apiGroups:\n  - acme.cert-manager.io\n  resources:\n  - orders\n  - challenges\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - cert-manager.io\n  resources:\n  - clusterissuers\n  - issuers\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - acme.cert-manager.io\n  resources:\n  - challenges\n  verbs:\n  - create\n  - delete\n- apiGroups:\n  - acme.cert-manager.io\n  resources:\n  - orders/finalizers\n  verbs:\n  - update\n- apiGroups:\n  - \"\"\n  resources:\n  - secrets\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - \"\"\n  resources:\n  - events\n  verbs:\n  - create\n  - patch\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app: cert-manager\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n    rbac.authorization.k8s.io/aggregate-to-admin: \"true\"\n    rbac.authorization.k8s.io/aggregate-to-edit: \"true\"\n  name: cert-manager-edit\nrules:\n- apiGroups:\n  - cert-manager.io\n  resources:\n  - certificates\n  - certificaterequests\n  - issuers\n  verbs:\n  - create\n  - delete\n  - deletecollection\n  - patch\n  - update\n- apiGroups:\n  - cert-manager.io\n  resources:\n  - certificates/status\n  verbs:\n  - update\n- apiGroups:\n  - acme.cert-manager.io\n  resources:\n  - challenges\n  - orders\n  verbs:\n  - create\n  - delete\n  - deletecollection\n  - patch\n  - update\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app: cert-manager\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n    rbac.authorization.k8s.io/aggregate-to-admin: \"true\"\n    rbac.authorization.k8s.io/aggregate-to-edit: \"true\"\n    rbac.authorization.k8s.io/aggregate-to-view: \"true\"\n  name: cert-manager-view\nrules:\n- apiGroups:\n  - cert-manager.io\n  resources:\n  - certificates\n  - certificaterequests\n  - issuers\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - acme.cert-manager.io\n  resources:\n  - challenges\n  - orders\n  verbs:\n  - get\n  - list\n  - watch\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app: webhook\n    app.kubernetes.io/component: webhook\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: cert-manager-webhook:subjectaccessreviews\nrules:\n- apiGroups:\n  - authorization.k8s.io\n  resources:\n  - subjectaccessreviews\n  verbs:\n  - create\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    app: cainjector\n    app.kubernetes.io/component: cainjector\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: cainjector\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: cert-manager-cainjector:leaderelection\n  namespace: cert-manager\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: cert-manager-cainjector:leaderelection\nsubjects:\n- kind: ServiceAccount\n  name: cert-manager-cainjector\n  namespace: cert-manager\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  annotations:\n    helm.sh/hook: post-install\n    helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded\n    helm.sh/hook-weight: \"-5\"\n  labels:\n    app: startupapicheck\n    app.kubernetes.io/component: startupapicheck\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: startupapicheck\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: cert-manager-startupapicheck:create-cert\n  namespace: cert-manager\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: cert-manager-startupapicheck:create-cert\nsubjects:\n- kind: ServiceAccount\n  name: cert-manager-startupapicheck\n  namespace: cert-manager\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    app: webhook\n    app.kubernetes.io/component: webhook\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: cert-manager-webhook:dynamic-serving\n  namespace: cert-manager\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: cert-manager-webhook:dynamic-serving\nsubjects:\n- apiGroup: \"\"\n  kind: ServiceAccount\n  name: cert-manager-webhook\n  namespace: cert-manager\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    app: cert-manager\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: cert-manager:leaderelection\n  namespace: cert-manager\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: cert-manager:leaderelection\nsubjects:\n- apiGroup: \"\"\n  kind: ServiceAccount\n  name: cert-manager\n  namespace: cert-manager\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app: cainjector\n    app.kubernetes.io/component: cainjector\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: cainjector\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: cert-manager-cainjector\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-cainjector\nsubjects:\n- kind: ServiceAccount\n  name: cert-manager-cainjector\n  namespace: cert-manager\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app: cert-manager\n    app.kubernetes.io/component: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: cert-manager-controller-approve:cert-manager-io\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-controller-approve:cert-manager-io\nsubjects:\n- kind: ServiceAccount\n  name: cert-manager\n  namespace: cert-manager\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app: cert-manager\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: cert-manager-controller-certificates\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-controller-certificates\nsubjects:\n- kind: ServiceAccount\n  name: cert-manager\n  namespace: cert-manager\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app: cert-manager\n    app.kubernetes.io/component: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: cert-manager-controller-certificatesigningrequests\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-controller-certificatesigningrequests\nsubjects:\n- kind: ServiceAccount\n  name: cert-manager\n  namespace: cert-manager\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app: cert-manager\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: cert-manager-controller-challenges\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-controller-challenges\nsubjects:\n- kind: ServiceAccount\n  name: cert-manager\n  namespace: cert-manager\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app: cert-manager\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: cert-manager-controller-clusterissuers\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-controller-clusterissuers\nsubjects:\n- kind: ServiceAccount\n  name: cert-manager\n  namespace: cert-manager\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app: cert-manager\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: cert-manager-controller-ingress-shim\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-controller-ingress-shim\nsubjects:\n- kind: ServiceAccount\n  name: cert-manager\n  namespace: cert-manager\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app: cert-manager\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: cert-manager-controller-issuers\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-controller-issuers\nsubjects:\n- kind: ServiceAccount\n  name: cert-manager\n  namespace: cert-manager\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app: cert-manager\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: cert-manager-controller-orders\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-controller-orders\nsubjects:\n- kind: ServiceAccount\n  name: cert-manager\n  namespace: cert-manager\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app: webhook\n    app.kubernetes.io/component: webhook\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: cert-manager-webhook:subjectaccessreviews\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-webhook:subjectaccessreviews\nsubjects:\n- apiGroup: \"\"\n  kind: ServiceAccount\n  name: cert-manager-webhook\n  namespace: cert-manager\n---\napiVersion: v1\ndata: null\nkind: ConfigMap\nmetadata:\n  labels:\n    app: webhook\n    app.kubernetes.io/component: webhook\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: cert-manager-webhook\n  namespace: cert-manager\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app: cert-manager\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: cert-manager\n  namespace: cert-manager\nspec:\n  ports:\n  - name: tcp-prometheus-servicemonitor\n    port: 9402\n    protocol: TCP\n    targetPort: 9402\n  selector:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/name: cert-manager\n  type: ClusterIP\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app: webhook\n    app.kubernetes.io/component: webhook\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: cert-manager-webhook\n  namespace: cert-manager\nspec:\n  ports:\n  - name: https\n    port: 443\n    protocol: TCP\n    targetPort: https\n  selector:\n    app.kubernetes.io/component: webhook\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/name: webhook\n  type: ClusterIP\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app: cert-manager\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: cert-manager\n  namespace: cert-manager\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: controller\n      app.kubernetes.io/instance: cert-manager\n      app.kubernetes.io/name: cert-manager\n  template:\n    metadata:\n      annotations:\n        prometheus.io/path: /metrics\n        prometheus.io/port: \"9402\"\n        prometheus.io/scrape: \"true\"\n      labels:\n        app: cert-manager\n        app.kubernetes.io/component: controller\n        app.kubernetes.io/instance: cert-manager\n        app.kubernetes.io/managed-by: Helm\n        app.kubernetes.io/name: cert-manager\n        app.kubernetes.io/version: v1.12.2\n        helm.sh/chart: cert-manager-v1.12.2\n    spec:\n      containers:\n      - args:\n        - --v=2\n        - --cluster-resource-namespace=$(POD_NAMESPACE)\n        - --leader-election-namespace=kube-system\n        - --acme-http01-solver-image=quay.io/jetstack/cert-manager-acmesolver:v1.12.2\n        - ' --dns01-recursive-nameservers-only'\n        - --dns01-recursive-nameservers=8.8.8.8:53,1.1.1.1:53\n        - --max-concurrent-challenges=60\n        env:\n        - name: POD_NAMESPACE\n          valueFrom:\n            fieldRef:\n              fieldPath: metadata.namespace\n        image: quay.io/jetstack/cert-manager-controller:v1.12.2\n        imagePullPolicy: IfNotPresent\n        name: cert-manager-controller\n        ports:\n        - containerPort: 9402\n          name: http-metrics\n          protocol: TCP\n        - containerPort: 9403\n          name: http-healthz\n          protocol: TCP\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n      nodeSelector:\n        kubernetes.io/os: linux\n      securityContext:\n        runAsNonRoot: true\n        seccompProfile:\n          type: RuntimeDefault\n      serviceAccountName: cert-manager\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app: cainjector\n    app.kubernetes.io/component: cainjector\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: cainjector\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: cert-manager-cainjector\n  namespace: cert-manager\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: cainjector\n      app.kubernetes.io/instance: cert-manager\n      app.kubernetes.io/name: cainjector\n  template:\n    metadata:\n      labels:\n        app: cainjector\n        app.kubernetes.io/component: cainjector\n        app.kubernetes.io/instance: cert-manager\n        app.kubernetes.io/managed-by: Helm\n        app.kubernetes.io/name: cainjector\n        app.kubernetes.io/version: v1.12.2\n        helm.sh/chart: cert-manager-v1.12.2\n    spec:\n      containers:\n      - args:\n        - --v=2\n        - --leader-election-namespace=kube-system\n        env:\n        - name: POD_NAMESPACE\n          valueFrom:\n            fieldRef:\n              fieldPath: metadata.namespace\n        image: quay.io/jetstack/cert-manager-cainjector:v1.12.2\n        imagePullPolicy: IfNotPresent\n        name: cert-manager-cainjector\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n      nodeSelector:\n        kubernetes.io/os: linux\n      securityContext:\n        runAsNonRoot: true\n        seccompProfile:\n          type: RuntimeDefault\n      serviceAccountName: cert-manager-cainjector\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app: webhook\n    app.kubernetes.io/component: webhook\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: cert-manager-webhook\n  namespace: cert-manager\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: webhook\n      app.kubernetes.io/instance: cert-manager\n      app.kubernetes.io/name: webhook\n  template:\n    metadata:\n      labels:\n        app: webhook\n        app.kubernetes.io/component: webhook\n        app.kubernetes.io/instance: cert-manager\n        app.kubernetes.io/managed-by: Helm\n        app.kubernetes.io/name: webhook\n        app.kubernetes.io/version: v1.12.2\n        helm.sh/chart: cert-manager-v1.12.2\n    spec:\n      containers:\n      - args:\n        - --v=2\n        - --secure-port=10250\n        - --dynamic-serving-ca-secret-namespace=$(POD_NAMESPACE)\n        - --dynamic-serving-ca-secret-name=cert-manager-webhook-ca\n        - --dynamic-serving-dns-names=cert-manager-webhook\n        - --dynamic-serving-dns-names=cert-manager-webhook.$(POD_NAMESPACE)\n        - --dynamic-serving-dns-names=cert-manager-webhook.$(POD_NAMESPACE).svc\n        env:\n        - name: POD_NAMESPACE\n          valueFrom:\n            fieldRef:\n              fieldPath: metadata.namespace\n        image: quay.io/jetstack/cert-manager-webhook:v1.12.2\n        imagePullPolicy: IfNotPresent\n        livenessProbe:\n          failureThreshold: 3\n          httpGet:\n            path: /livez\n            port: 6080\n            scheme: HTTP\n          initialDelaySeconds: 60\n          periodSeconds: 10\n          successThreshold: 1\n          timeoutSeconds: 1\n        name: cert-manager-webhook\n        ports:\n        - containerPort: 10250\n          name: https\n          protocol: TCP\n        - containerPort: 6080\n          name: healthcheck\n          protocol: TCP\n        readinessProbe:\n          failureThreshold: 3\n          httpGet:\n            path: /healthz\n            port: 6080\n            scheme: HTTP\n          initialDelaySeconds: 5\n          periodSeconds: 5\n          successThreshold: 1\n          timeoutSeconds: 1\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n      nodeSelector:\n        kubernetes.io/os: linux\n      securityContext:\n        runAsNonRoot: true\n        seccompProfile:\n          type: RuntimeDefault\n      serviceAccountName: cert-manager-webhook\n---\napiVersion: batch/v1\nkind: Job\nmetadata:\n  annotations:\n    helm.sh/hook: post-install\n    helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded\n    helm.sh/hook-weight: \"1\"\n  labels:\n    app: startupapicheck\n    app.kubernetes.io/component: startupapicheck\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: startupapicheck\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: cert-manager-startupapicheck\n  namespace: cert-manager\nspec:\n  backoffLimit: 4\n  template:\n    metadata:\n      labels:\n        app: startupapicheck\n        app.kubernetes.io/component: startupapicheck\n        app.kubernetes.io/instance: cert-manager\n        app.kubernetes.io/managed-by: Helm\n        app.kubernetes.io/name: startupapicheck\n        app.kubernetes.io/version: v1.12.2\n        helm.sh/chart: cert-manager-v1.12.2\n    spec:\n      containers:\n      - args:\n        - check\n        - api\n        - --wait=1m\n        image: quay.io/jetstack/cert-manager-ctl:v1.12.2\n        imagePullPolicy: IfNotPresent\n        name: cert-manager-startupapicheck\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n      nodeSelector:\n        kubernetes.io/os: linux\n      restartPolicy: OnFailure\n      securityContext:\n        runAsNonRoot: true\n        seccompProfile:\n          type: RuntimeDefault\n      serviceAccountName: cert-manager-startupapicheck\n---\napiVersion: cert-manager.io/v1\nkind: Certificate\nmetadata:\n  name: ankit-info\n  namespace: cert-manager\nspec:\n  dnsNames:\n  - '*.DOMAIN_NAME'\n  - DOMAIN_NAME\n  issuerRef:\n    kind: ClusterIssuer\n    name: letsencrypt-prod\n  secretName: ankit-info-tls\n---\napiVersion: cert-manager.io/v1\nkind: ClusterIssuer\nmetadata:\n  name: letsencrypt-prod\n  namespace: cert-manager\nspec:\n  acme:\n    email: testemail@gmail.com\n    privateKeySecretRef:\n      name: letsencrypt-prod\n    server: https://acme-v02.api.letsencrypt.org/directory\n    solvers:\n    - dns01:\n        route53:\n          accessKeyIDSecretRef:\n            key: access-key-id\n            name: route53-credentials\n          region: us-east-1\n          secretAccessKeySecretRef:\n            key: secret-access-key\n            name: route53-credentials\n      selector:\n        dnsZones:\n        - DNS_ZONE\n---\napiVersion: admissionregistration.k8s.io/v1\nkind: MutatingWebhookConfiguration\nmetadata:\n  annotations:\n    cert-manager.io/inject-ca-from-secret: cert-manager/cert-manager-webhook-ca\n  labels:\n    app: webhook\n    app.kubernetes.io/component: webhook\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: cert-manager-webhook\nwebhooks:\n- admissionReviewVersions:\n  - v1\n  clientConfig:\n    service:\n      name: cert-manager-webhook\n      namespace: cert-manager\n      path: /mutate\n  failurePolicy: Fail\n  matchPolicy: Equivalent\n  name: webhook.cert-manager.io\n  rules:\n  - apiGroups:\n    - cert-manager.io\n    - acme.cert-manager.io\n    apiVersions:\n    - v1\n    operations:\n    - CREATE\n    - UPDATE\n    resources:\n    - '*/*'\n  sideEffects: None\n  timeoutSeconds: 10\n---\napiVersion: admissionregistration.k8s.io/v1\nkind: ValidatingWebhookConfiguration\nmetadata:\n  annotations:\n    cert-manager.io/inject-ca-from-secret: cert-manager/cert-manager-webhook-ca\n  labels:\n    app: webhook\n    app.kubernetes.io/component: webhook\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/version: v1.12.2\n    helm.sh/chart: cert-manager-v1.12.2\n  name: cert-manager-webhook\nwebhooks:\n- admissionReviewVersions:\n  - v1\n  clientConfig:\n    service:\n      name: cert-manager-webhook\n      namespace: cert-manager\n      path: /validate\n  failurePolicy: Fail\n  matchPolicy: Equivalent\n  name: webhook.cert-manager.io\n  namespaceSelector:\n    matchExpressions:\n    - key: cert-manager.io/disable-validation\n      operator: NotIn\n      values:\n      - \"true\"\n    - key: name\n      operator: NotIn\n      values:\n      - cert-manager\n  rules:\n  - apiGroups:\n    - cert-manager.io\n    - acme.cert-manager.io\n    apiVersions:\n    - v1\n    operations:\n    - CREATE\n    - UPDATE\n    resources:\n    - '*/*'\n  sideEffects: None\n  timeoutSeconds: 10\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_042__gcp_k8s__cert_manager_dns_validation___using_41/vendor/cert-manager/cert-manager-vendor.yaml",
    "content": "---\n# Source: cert-manager/templates/cainjector-serviceaccount.yaml\napiVersion: v1\nkind: ServiceAccount\nautomountServiceAccountToken: true\nmetadata:\n  name: cert-manager-cainjector\n  namespace: cert-manager\n  labels:\n    app: cainjector\n    app.kubernetes.io/name: cainjector\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"cainjector\"\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\n---\n# Source: cert-manager/templates/serviceaccount.yaml\napiVersion: v1\nkind: ServiceAccount\nautomountServiceAccountToken: true\nmetadata:\n  name: cert-manager\n  namespace: cert-manager\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\n---\n# Source: cert-manager/templates/webhook-serviceaccount.yaml\napiVersion: v1\nkind: ServiceAccount\nautomountServiceAccountToken: true\nmetadata:\n  name: cert-manager-webhook\n  namespace: cert-manager\n  labels:\n    app: webhook\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"webhook\"\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\n---\n# Source: cert-manager/templates/webhook-config.yaml\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: cert-manager-webhook\n  namespace: cert-manager\n  labels:\n    app: webhook\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"webhook\"\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\ndata:\n---\n# Source: cert-manager/templates/crds.yaml\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  name: certificaterequests.cert-manager.io\n  labels:\n    app: 'cert-manager'\n    app.kubernetes.io/name: 'cert-manager'\n    app.kubernetes.io/instance: 'cert-manager'\n    # Generated labels\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\nspec:\n  group: cert-manager.io\n  names:\n    kind: CertificateRequest\n    listKind: CertificateRequestList\n    plural: certificaterequests\n    shortNames:\n      - cr\n      - crs\n    singular: certificaterequest\n    categories:\n      - cert-manager\n  scope: Namespaced\n  versions:\n    - name: v1\n      subresources:\n        status: {}\n      additionalPrinterColumns:\n        - jsonPath: .status.conditions[?(@.type==\"Approved\")].status\n          name: Approved\n          type: string\n        - jsonPath: .status.conditions[?(@.type==\"Denied\")].status\n          name: Denied\n          type: string\n        - jsonPath: .status.conditions[?(@.type==\"Ready\")].status\n          name: Ready\n          type: string\n        - jsonPath: .spec.issuerRef.name\n          name: Issuer\n          type: string\n        - jsonPath: .spec.username\n          name: Requestor\n          type: string\n        - jsonPath: .status.conditions[?(@.type==\"Ready\")].message\n          name: Status\n          priority: 1\n          type: string\n        - jsonPath: .metadata.creationTimestamp\n          description: CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n          name: Age\n          type: date\n      schema:\n        openAPIV3Schema:\n          description: \"A CertificateRequest is used to request a signed certificate from one of the configured issuers. \\n All fields within the CertificateRequest's `spec` are immutable after creation. A CertificateRequest will either succeed or fail, as denoted by its `status.state` field. \\n A CertificateRequest is a one-shot resource, meaning it represents a single point in time request for a certificate and cannot be re-used.\"\n          type: object\n          required:\n            - spec\n          properties:\n            apiVersion:\n              description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n              type: string\n            kind:\n              description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n              type: string\n            metadata:\n              type: object\n            spec:\n              description: Desired state of the CertificateRequest resource.\n              type: object\n              required:\n                - issuerRef\n                - request\n              properties:\n                duration:\n                  description: The requested 'duration' (i.e. lifetime) of the Certificate. This option may be ignored/overridden by some issuer types.\n                  type: string\n                extra:\n                  description: Extra contains extra attributes of the user that created the CertificateRequest. Populated by the cert-manager webhook on creation and immutable.\n                  type: object\n                  additionalProperties:\n                    type: array\n                    items:\n                      type: string\n                groups:\n                  description: Groups contains group membership of the user that created the CertificateRequest. Populated by the cert-manager webhook on creation and immutable.\n                  type: array\n                  items:\n                    type: string\n                  x-kubernetes-list-type: atomic\n                isCA:\n                  description: IsCA will request to mark the certificate as valid for certificate signing when submitting to the issuer. This will automatically add the `cert sign` usage to the list of `usages`.\n                  type: boolean\n                issuerRef:\n                  description: IssuerRef is a reference to the issuer for this CertificateRequest.  If the `kind` field is not set, or set to `Issuer`, an Issuer resource with the given name in the same namespace as the CertificateRequest will be used.  If the `kind` field is set to `ClusterIssuer`, a ClusterIssuer with the provided name will be used. The `name` field in this stanza is required at all times. The group field refers to the API group of the issuer which defaults to `cert-manager.io` if empty.\n                  type: object\n                  required:\n                    - name\n                  properties:\n                    group:\n                      description: Group of the resource being referred to.\n                      type: string\n                    kind:\n                      description: Kind of the resource being referred to.\n                      type: string\n                    name:\n                      description: Name of the resource being referred to.\n                      type: string\n                request:\n                  description: The PEM-encoded x509 certificate signing request to be submitted to the CA for signing.\n                  type: string\n                  format: byte\n                uid:\n                  description: UID contains the uid of the user that created the CertificateRequest. Populated by the cert-manager webhook on creation and immutable.\n                  type: string\n                usages:\n                  description: Usages is the set of x509 usages that are requested for the certificate. If usages are set they SHOULD be encoded inside the CSR spec Defaults to `digital signature` and `key encipherment` if not specified.\n                  type: array\n                  items:\n                    description: \"KeyUsage specifies valid usage contexts for keys. See: https://tools.ietf.org/html/rfc5280#section-4.2.1.3 https://tools.ietf.org/html/rfc5280#section-4.2.1.12 \\n Valid KeyUsage values are as follows: \\\"signing\\\", \\\"digital signature\\\", \\\"content commitment\\\", \\\"key encipherment\\\", \\\"key agreement\\\", \\\"data encipherment\\\", \\\"cert sign\\\", \\\"crl sign\\\", \\\"encipher only\\\", \\\"decipher only\\\", \\\"any\\\", \\\"server auth\\\", \\\"client auth\\\", \\\"code signing\\\", \\\"email protection\\\", \\\"s/mime\\\", \\\"ipsec end system\\\", \\\"ipsec tunnel\\\", \\\"ipsec user\\\", \\\"timestamping\\\", \\\"ocsp signing\\\", \\\"microsoft sgc\\\", \\\"netscape sgc\\\"\"\n                    type: string\n                    enum:\n                      - signing\n                      - digital signature\n                      - content commitment\n                      - key encipherment\n                      - key agreement\n                      - data encipherment\n                      - cert sign\n                      - crl sign\n                      - encipher only\n                      - decipher only\n                      - any\n                      - server auth\n                      - client auth\n                      - code signing\n                      - email protection\n                      - s/mime\n                      - ipsec end system\n                      - ipsec tunnel\n                      - ipsec user\n                      - timestamping\n                      - ocsp signing\n                      - microsoft sgc\n                      - netscape sgc\n                username:\n                  description: Username contains the name of the user that created the CertificateRequest. Populated by the cert-manager webhook on creation and immutable.\n                  type: string\n            status:\n              description: Status of the CertificateRequest. This is set and managed automatically.\n              type: object\n              properties:\n                ca:\n                  description: The PEM encoded x509 certificate of the signer, also known as the CA (Certificate Authority). This is set on a best-effort basis by different issuers. If not set, the CA is assumed to be unknown/not available.\n                  type: string\n                  format: byte\n                certificate:\n                  description: The PEM encoded x509 certificate resulting from the certificate signing request. If not set, the CertificateRequest has either not been completed or has failed. More information on failure can be found by checking the `conditions` field.\n                  type: string\n                  format: byte\n                conditions:\n                  description: List of status conditions to indicate the status of a CertificateRequest. Known condition types are `Ready` and `InvalidRequest`.\n                  type: array\n                  items:\n                    description: CertificateRequestCondition contains condition information for a CertificateRequest.\n                    type: object\n                    required:\n                      - status\n                      - type\n                    properties:\n                      lastTransitionTime:\n                        description: LastTransitionTime is the timestamp corresponding to the last status change of this condition.\n                        type: string\n                        format: date-time\n                      message:\n                        description: Message is a human readable description of the details of the last transition, complementing reason.\n                        type: string\n                      reason:\n                        description: Reason is a brief machine readable explanation for the condition's last transition.\n                        type: string\n                      status:\n                        description: Status of the condition, one of (`True`, `False`, `Unknown`).\n                        type: string\n                        enum:\n                          - \"True\"\n                          - \"False\"\n                          - Unknown\n                      type:\n                        description: Type of the condition, known values are (`Ready`, `InvalidRequest`, `Approved`, `Denied`).\n                        type: string\n                  x-kubernetes-list-map-keys:\n                    - type\n                  x-kubernetes-list-type: map\n                failureTime:\n                  description: FailureTime stores the time that this CertificateRequest failed. This is used to influence garbage collection and back-off.\n                  type: string\n                  format: date-time\n      served: true\n      storage: true\n---\n# Source: cert-manager/templates/crds.yaml\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  name: certificates.cert-manager.io\n  labels:\n    app: 'cert-manager'\n    app.kubernetes.io/name: 'cert-manager'\n    app.kubernetes.io/instance: 'cert-manager'\n    # Generated labels\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\nspec:\n  group: cert-manager.io\n  names:\n    kind: Certificate\n    listKind: CertificateList\n    plural: certificates\n    shortNames:\n      - cert\n      - certs\n    singular: certificate\n    categories:\n      - cert-manager\n  scope: Namespaced\n  versions:\n    - name: v1\n      subresources:\n        status: {}\n      additionalPrinterColumns:\n        - jsonPath: .status.conditions[?(@.type==\"Ready\")].status\n          name: Ready\n          type: string\n        - jsonPath: .spec.secretName\n          name: Secret\n          type: string\n        - jsonPath: .spec.issuerRef.name\n          name: Issuer\n          priority: 1\n          type: string\n        - jsonPath: .status.conditions[?(@.type==\"Ready\")].message\n          name: Status\n          priority: 1\n          type: string\n        - jsonPath: .metadata.creationTimestamp\n          description: CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n          name: Age\n          type: date\n      schema:\n        openAPIV3Schema:\n          description: \"A Certificate resource should be created to ensure an up to date and signed x509 certificate is stored in the Kubernetes Secret resource named in `spec.secretName`. \\n The stored certificate will be renewed before it expires (as configured by `spec.renewBefore`).\"\n          type: object\n          required:\n            - spec\n          properties:\n            apiVersion:\n              description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n              type: string\n            kind:\n              description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n              type: string\n            metadata:\n              type: object\n            spec:\n              description: Desired state of the Certificate resource.\n              type: object\n              required:\n                - issuerRef\n                - secretName\n              properties:\n                additionalOutputFormats:\n                  description: AdditionalOutputFormats defines extra output formats of the private key and signed certificate chain to be written to this Certificate's target Secret. This is an Alpha Feature and is only enabled with the `--feature-gates=AdditionalCertificateOutputFormats=true` option on both the controller and webhook components.\n                  type: array\n                  items:\n                    description: CertificateAdditionalOutputFormat defines an additional output format of a Certificate resource. These contain supplementary data formats of the signed certificate chain and paired private key.\n                    type: object\n                    required:\n                      - type\n                    properties:\n                      type:\n                        description: Type is the name of the format type that should be written to the Certificate's target Secret.\n                        type: string\n                        enum:\n                          - DER\n                          - CombinedPEM\n                commonName:\n                  description: 'CommonName is a common name to be used on the Certificate. The CommonName should have a length of 64 characters or fewer to avoid generating invalid CSRs. This value is ignored by TLS clients when any subject alt name is set. This is x509 behaviour: https://tools.ietf.org/html/rfc6125#section-6.4.4'\n                  type: string\n                dnsNames:\n                  description: DNSNames is a list of DNS subjectAltNames to be set on the Certificate.\n                  type: array\n                  items:\n                    type: string\n                duration:\n                  description: The requested 'duration' (i.e. lifetime) of the Certificate. This option may be ignored/overridden by some issuer types. If unset this defaults to 90 days. Certificate will be renewed either 2/3 through its duration or `renewBefore` period before its expiry, whichever is later. Minimum accepted duration is 1 hour. Value must be in units accepted by Go time.ParseDuration https://golang.org/pkg/time/#ParseDuration\n                  type: string\n                emailAddresses:\n                  description: EmailAddresses is a list of email subjectAltNames to be set on the Certificate.\n                  type: array\n                  items:\n                    type: string\n                encodeUsagesInRequest:\n                  description: EncodeUsagesInRequest controls whether key usages should be present in the CertificateRequest\n                  type: boolean\n                ipAddresses:\n                  description: IPAddresses is a list of IP address subjectAltNames to be set on the Certificate.\n                  type: array\n                  items:\n                    type: string\n                isCA:\n                  description: IsCA will mark this Certificate as valid for certificate signing. This will automatically add the `cert sign` usage to the list of `usages`.\n                  type: boolean\n                issuerRef:\n                  description: IssuerRef is a reference to the issuer for this certificate. If the `kind` field is not set, or set to `Issuer`, an Issuer resource with the given name in the same namespace as the Certificate will be used. If the `kind` field is set to `ClusterIssuer`, a ClusterIssuer with the provided name will be used. The `name` field in this stanza is required at all times.\n                  type: object\n                  required:\n                    - name\n                  properties:\n                    group:\n                      description: Group of the resource being referred to.\n                      type: string\n                    kind:\n                      description: Kind of the resource being referred to.\n                      type: string\n                    name:\n                      description: Name of the resource being referred to.\n                      type: string\n                keystores:\n                  description: Keystores configures additional keystore output formats stored in the `secretName` Secret resource.\n                  type: object\n                  properties:\n                    jks:\n                      description: JKS configures options for storing a JKS keystore in the `spec.secretName` Secret resource.\n                      type: object\n                      required:\n                        - create\n                        - passwordSecretRef\n                      properties:\n                        create:\n                          description: Create enables JKS keystore creation for the Certificate. If true, a file named `keystore.jks` will be created in the target Secret resource, encrypted using the password stored in `passwordSecretRef`. The keystore file will be updated immediately. If the issuer provided a CA certificate, a file named `truststore.jks` will also be created in the target Secret resource, encrypted using the password stored in `passwordSecretRef` containing the issuing Certificate Authority\n                          type: boolean\n                        passwordSecretRef:\n                          description: PasswordSecretRef is a reference to a key in a Secret resource containing the password used to encrypt the JKS keystore.\n                          type: object\n                          required:\n                            - name\n                          properties:\n                            key:\n                              description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                              type: string\n                            name:\n                              description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                              type: string\n                    pkcs12:\n                      description: PKCS12 configures options for storing a PKCS12 keystore in the `spec.secretName` Secret resource.\n                      type: object\n                      required:\n                        - create\n                        - passwordSecretRef\n                      properties:\n                        create:\n                          description: Create enables PKCS12 keystore creation for the Certificate. If true, a file named `keystore.p12` will be created in the target Secret resource, encrypted using the password stored in `passwordSecretRef`. The keystore file will be updated immediately. If the issuer provided a CA certificate, a file named `truststore.p12` will also be created in the target Secret resource, encrypted using the password stored in `passwordSecretRef` containing the issuing Certificate Authority\n                          type: boolean\n                        passwordSecretRef:\n                          description: PasswordSecretRef is a reference to a key in a Secret resource containing the password used to encrypt the PKCS12 keystore.\n                          type: object\n                          required:\n                            - name\n                          properties:\n                            key:\n                              description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                              type: string\n                            name:\n                              description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                              type: string\n                literalSubject:\n                  description: LiteralSubject is an LDAP formatted string that represents the [X.509 Subject field](https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6). Use this *instead* of the Subject field if you need to ensure the correct ordering of the RDN sequence, such as when issuing certs for LDAP authentication. See https://github.com/cert-manager/cert-manager/issues/3203, https://github.com/cert-manager/cert-manager/issues/4424. This field is alpha level and is only supported by cert-manager installations where LiteralCertificateSubject feature gate is enabled on both cert-manager controller and webhook.\n                  type: string\n                privateKey:\n                  description: Options to control private keys used for the Certificate.\n                  type: object\n                  properties:\n                    algorithm:\n                      description: Algorithm is the private key algorithm of the corresponding private key for this certificate. If provided, allowed values are either `RSA`,`Ed25519` or `ECDSA` If `algorithm` is specified and `size` is not provided, key size of 256 will be used for `ECDSA` key algorithm and key size of 2048 will be used for `RSA` key algorithm. key size is ignored when using the `Ed25519` key algorithm.\n                      type: string\n                      enum:\n                        - RSA\n                        - ECDSA\n                        - Ed25519\n                    encoding:\n                      description: The private key cryptography standards (PKCS) encoding for this certificate's private key to be encoded in. If provided, allowed values are `PKCS1` and `PKCS8` standing for PKCS#1 and PKCS#8, respectively. Defaults to `PKCS1` if not specified.\n                      type: string\n                      enum:\n                        - PKCS1\n                        - PKCS8\n                    rotationPolicy:\n                      description: RotationPolicy controls how private keys should be regenerated when a re-issuance is being processed. If set to Never, a private key will only be generated if one does not already exist in the target `spec.secretName`. If one does exists but it does not have the correct algorithm or size, a warning will be raised to await user intervention. If set to Always, a private key matching the specified requirements will be generated whenever a re-issuance occurs. Default is 'Never' for backward compatibility.\n                      type: string\n                      enum:\n                        - Never\n                        - Always\n                    size:\n                      description: Size is the key bit size of the corresponding private key for this certificate. If `algorithm` is set to `RSA`, valid values are `2048`, `4096` or `8192`, and will default to `2048` if not specified. If `algorithm` is set to `ECDSA`, valid values are `256`, `384` or `521`, and will default to `256` if not specified. If `algorithm` is set to `Ed25519`, Size is ignored. No other values are allowed.\n                      type: integer\n                renewBefore:\n                  description: How long before the currently issued certificate's expiry cert-manager should renew the certificate. The default is 2/3 of the issued certificate's duration. Minimum accepted value is 5 minutes. Value must be in units accepted by Go time.ParseDuration https://golang.org/pkg/time/#ParseDuration\n                  type: string\n                revisionHistoryLimit:\n                  description: revisionHistoryLimit is the maximum number of CertificateRequest revisions that are maintained in the Certificate's history. Each revision represents a single `CertificateRequest` created by this Certificate, either when it was created, renewed, or Spec was changed. Revisions will be removed by oldest first if the number of revisions exceeds this number. If set, revisionHistoryLimit must be a value of `1` or greater. If unset (`nil`), revisions will not be garbage collected. Default value is `nil`.\n                  type: integer\n                  format: int32\n                secretName:\n                  description: SecretName is the name of the secret resource that will be automatically created and managed by this Certificate resource. It will be populated with a private key and certificate, signed by the denoted issuer.\n                  type: string\n                secretTemplate:\n                  description: SecretTemplate defines annotations and labels to be copied to the Certificate's Secret. Labels and annotations on the Secret will be changed as they appear on the SecretTemplate when added or removed. SecretTemplate annotations are added in conjunction with, and cannot overwrite, the base set of annotations cert-manager sets on the Certificate's Secret.\n                  type: object\n                  properties:\n                    annotations:\n                      description: Annotations is a key value map to be copied to the target Kubernetes Secret.\n                      type: object\n                      additionalProperties:\n                        type: string\n                    labels:\n                      description: Labels is a key value map to be copied to the target Kubernetes Secret.\n                      type: object\n                      additionalProperties:\n                        type: string\n                subject:\n                  description: Full X509 name specification (https://golang.org/pkg/crypto/x509/pkix/#Name).\n                  type: object\n                  properties:\n                    countries:\n                      description: Countries to be used on the Certificate.\n                      type: array\n                      items:\n                        type: string\n                    localities:\n                      description: Cities to be used on the Certificate.\n                      type: array\n                      items:\n                        type: string\n                    organizationalUnits:\n                      description: Organizational Units to be used on the Certificate.\n                      type: array\n                      items:\n                        type: string\n                    organizations:\n                      description: Organizations to be used on the Certificate.\n                      type: array\n                      items:\n                        type: string\n                    postalCodes:\n                      description: Postal codes to be used on the Certificate.\n                      type: array\n                      items:\n                        type: string\n                    provinces:\n                      description: State/Provinces to be used on the Certificate.\n                      type: array\n                      items:\n                        type: string\n                    serialNumber:\n                      description: Serial number to be used on the Certificate.\n                      type: string\n                    streetAddresses:\n                      description: Street addresses to be used on the Certificate.\n                      type: array\n                      items:\n                        type: string\n                uris:\n                  description: URIs is a list of URI subjectAltNames to be set on the Certificate.\n                  type: array\n                  items:\n                    type: string\n                usages:\n                  description: Usages is the set of x509 usages that are requested for the certificate. Defaults to `digital signature` and `key encipherment` if not specified.\n                  type: array\n                  items:\n                    description: \"KeyUsage specifies valid usage contexts for keys. See: https://tools.ietf.org/html/rfc5280#section-4.2.1.3 https://tools.ietf.org/html/rfc5280#section-4.2.1.12 \\n Valid KeyUsage values are as follows: \\\"signing\\\", \\\"digital signature\\\", \\\"content commitment\\\", \\\"key encipherment\\\", \\\"key agreement\\\", \\\"data encipherment\\\", \\\"cert sign\\\", \\\"crl sign\\\", \\\"encipher only\\\", \\\"decipher only\\\", \\\"any\\\", \\\"server auth\\\", \\\"client auth\\\", \\\"code signing\\\", \\\"email protection\\\", \\\"s/mime\\\", \\\"ipsec end system\\\", \\\"ipsec tunnel\\\", \\\"ipsec user\\\", \\\"timestamping\\\", \\\"ocsp signing\\\", \\\"microsoft sgc\\\", \\\"netscape sgc\\\"\"\n                    type: string\n                    enum:\n                      - signing\n                      - digital signature\n                      - content commitment\n                      - key encipherment\n                      - key agreement\n                      - data encipherment\n                      - cert sign\n                      - crl sign\n                      - encipher only\n                      - decipher only\n                      - any\n                      - server auth\n                      - client auth\n                      - code signing\n                      - email protection\n                      - s/mime\n                      - ipsec end system\n                      - ipsec tunnel\n                      - ipsec user\n                      - timestamping\n                      - ocsp signing\n                      - microsoft sgc\n                      - netscape sgc\n            status:\n              description: Status of the Certificate. This is set and managed automatically.\n              type: object\n              properties:\n                conditions:\n                  description: List of status conditions to indicate the status of certificates. Known condition types are `Ready` and `Issuing`.\n                  type: array\n                  items:\n                    description: CertificateCondition contains condition information for an Certificate.\n                    type: object\n                    required:\n                      - status\n                      - type\n                    properties:\n                      lastTransitionTime:\n                        description: LastTransitionTime is the timestamp corresponding to the last status change of this condition.\n                        type: string\n                        format: date-time\n                      message:\n                        description: Message is a human readable description of the details of the last transition, complementing reason.\n                        type: string\n                      observedGeneration:\n                        description: If set, this represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.condition[x].observedGeneration is 9, the condition is out of date with respect to the current state of the Certificate.\n                        type: integer\n                        format: int64\n                      reason:\n                        description: Reason is a brief machine readable explanation for the condition's last transition.\n                        type: string\n                      status:\n                        description: Status of the condition, one of (`True`, `False`, `Unknown`).\n                        type: string\n                        enum:\n                          - \"True\"\n                          - \"False\"\n                          - Unknown\n                      type:\n                        description: Type of the condition, known values are (`Ready`, `Issuing`).\n                        type: string\n                  x-kubernetes-list-map-keys:\n                    - type\n                  x-kubernetes-list-type: map\n                failedIssuanceAttempts:\n                  description: The number of continuous failed issuance attempts up till now. This field gets removed (if set) on a successful issuance and gets set to 1 if unset and an issuance has failed. If an issuance has failed, the delay till the next issuance will be calculated using formula time.Hour * 2 ^ (failedIssuanceAttempts - 1).\n                  type: integer\n                lastFailureTime:\n                  description: LastFailureTime is set only if the lastest issuance for this Certificate failed and contains the time of the failure. If an issuance has failed, the delay till the next issuance will be calculated using formula time.Hour * 2 ^ (failedIssuanceAttempts - 1). If the latest issuance has succeeded this field will be unset.\n                  type: string\n                  format: date-time\n                nextPrivateKeySecretName:\n                  description: The name of the Secret resource containing the private key to be used for the next certificate iteration. The keymanager controller will automatically set this field if the `Issuing` condition is set to `True`. It will automatically unset this field when the Issuing condition is not set or False.\n                  type: string\n                notAfter:\n                  description: The expiration time of the certificate stored in the secret named by this resource in `spec.secretName`.\n                  type: string\n                  format: date-time\n                notBefore:\n                  description: The time after which the certificate stored in the secret named by this resource in spec.secretName is valid.\n                  type: string\n                  format: date-time\n                renewalTime:\n                  description: RenewalTime is the time at which the certificate will be next renewed. If not set, no upcoming renewal is scheduled.\n                  type: string\n                  format: date-time\n                revision:\n                  description: \"The current 'revision' of the certificate as issued. \\n When a CertificateRequest resource is created, it will have the `cert-manager.io/certificate-revision` set to one greater than the current value of this field. \\n Upon issuance, this field will be set to the value of the annotation on the CertificateRequest resource used to issue the certificate. \\n Persisting the value on the CertificateRequest resource allows the certificates controller to know whether a request is part of an old issuance or if it is part of the ongoing revision's issuance by checking if the revision value in the annotation is greater than this field.\"\n                  type: integer\n      served: true\n      storage: true\n---\n# Source: cert-manager/templates/crds.yaml\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  name: challenges.acme.cert-manager.io\n  labels:\n    app: 'cert-manager'\n    app.kubernetes.io/name: 'cert-manager'\n    app.kubernetes.io/instance: 'cert-manager'\n    # Generated labels\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\nspec:\n  group: acme.cert-manager.io\n  names:\n    kind: Challenge\n    listKind: ChallengeList\n    plural: challenges\n    singular: challenge\n    categories:\n      - cert-manager\n      - cert-manager-acme\n  scope: Namespaced\n  versions:\n    - additionalPrinterColumns:\n        - jsonPath: .status.state\n          name: State\n          type: string\n        - jsonPath: .spec.dnsName\n          name: Domain\n          type: string\n        - jsonPath: .status.reason\n          name: Reason\n          priority: 1\n          type: string\n        - description: CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n          jsonPath: .metadata.creationTimestamp\n          name: Age\n          type: date\n      name: v1\n      schema:\n        openAPIV3Schema:\n          description: Challenge is a type to represent a Challenge request with an ACME server\n          type: object\n          required:\n            - metadata\n            - spec\n          properties:\n            apiVersion:\n              description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n              type: string\n            kind:\n              description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n              type: string\n            metadata:\n              type: object\n            spec:\n              type: object\n              required:\n                - authorizationURL\n                - dnsName\n                - issuerRef\n                - key\n                - solver\n                - token\n                - type\n                - url\n              properties:\n                authorizationURL:\n                  description: The URL to the ACME Authorization resource that this challenge is a part of.\n                  type: string\n                dnsName:\n                  description: dnsName is the identifier that this challenge is for, e.g. example.com. If the requested DNSName is a 'wildcard', this field MUST be set to the non-wildcard domain, e.g. for `*.example.com`, it must be `example.com`.\n                  type: string\n                issuerRef:\n                  description: References a properly configured ACME-type Issuer which should be used to create this Challenge. If the Issuer does not exist, processing will be retried. If the Issuer is not an 'ACME' Issuer, an error will be returned and the Challenge will be marked as failed.\n                  type: object\n                  required:\n                    - name\n                  properties:\n                    group:\n                      description: Group of the resource being referred to.\n                      type: string\n                    kind:\n                      description: Kind of the resource being referred to.\n                      type: string\n                    name:\n                      description: Name of the resource being referred to.\n                      type: string\n                key:\n                  description: 'The ACME challenge key for this challenge For HTTP01 challenges, this is the value that must be responded with to complete the HTTP01 challenge in the format: `<private key JWK thumbprint>.<key from acme server for challenge>`. For DNS01 challenges, this is the base64 encoded SHA256 sum of the `<private key JWK thumbprint>.<key from acme server for challenge>` text that must be set as the TXT record content.'\n                  type: string\n                solver:\n                  description: Contains the domain solving configuration that should be used to solve this challenge resource.\n                  type: object\n                  properties:\n                    dns01:\n                      description: Configures cert-manager to attempt to complete authorizations by performing the DNS01 challenge flow.\n                      type: object\n                      properties:\n                        acmeDNS:\n                          description: Use the 'ACME DNS' (https://github.com/joohoi/acme-dns) API to manage DNS01 challenge records.\n                          type: object\n                          required:\n                            - accountSecretRef\n                            - host\n                          properties:\n                            accountSecretRef:\n                              description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                            host:\n                              type: string\n                        akamai:\n                          description: Use the Akamai DNS zone management API to manage DNS01 challenge records.\n                          type: object\n                          required:\n                            - accessTokenSecretRef\n                            - clientSecretSecretRef\n                            - clientTokenSecretRef\n                            - serviceConsumerDomain\n                          properties:\n                            accessTokenSecretRef:\n                              description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                            clientSecretSecretRef:\n                              description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                            clientTokenSecretRef:\n                              description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                            serviceConsumerDomain:\n                              type: string\n                        azureDNS:\n                          description: Use the Microsoft Azure DNS API to manage DNS01 challenge records.\n                          type: object\n                          required:\n                            - resourceGroupName\n                            - subscriptionID\n                          properties:\n                            clientID:\n                              description: if both this and ClientSecret are left unset MSI will be used\n                              type: string\n                            clientSecretSecretRef:\n                              description: if both this and ClientID are left unset MSI will be used\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                            environment:\n                              description: name of the Azure environment (default AzurePublicCloud)\n                              type: string\n                              enum:\n                                - AzurePublicCloud\n                                - AzureChinaCloud\n                                - AzureGermanCloud\n                                - AzureUSGovernmentCloud\n                            hostedZoneName:\n                              description: name of the DNS zone that should be used\n                              type: string\n                            managedIdentity:\n                              description: managed identity configuration, can not be used at the same time as clientID, clientSecretSecretRef or tenantID\n                              type: object\n                              properties:\n                                clientID:\n                                  description: client ID of the managed identity, can not be used at the same time as resourceID\n                                  type: string\n                                resourceID:\n                                  description: resource ID of the managed identity, can not be used at the same time as clientID\n                                  type: string\n                            resourceGroupName:\n                              description: resource group the DNS zone is located in\n                              type: string\n                            subscriptionID:\n                              description: ID of the Azure subscription\n                              type: string\n                            tenantID:\n                              description: when specifying ClientID and ClientSecret then this field is also needed\n                              type: string\n                        cloudDNS:\n                          description: Use the Google Cloud DNS API to manage DNS01 challenge records.\n                          type: object\n                          required:\n                            - project\n                          properties:\n                            hostedZoneName:\n                              description: HostedZoneName is an optional field that tells cert-manager in which Cloud DNS zone the challenge record has to be created. If left empty cert-manager will automatically choose a zone.\n                              type: string\n                            project:\n                              type: string\n                            serviceAccountSecretRef:\n                              description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                        cloudflare:\n                          description: Use the Cloudflare API to manage DNS01 challenge records.\n                          type: object\n                          properties:\n                            apiKeySecretRef:\n                              description: 'API key to use to authenticate with Cloudflare. Note: using an API token to authenticate is now the recommended method as it allows greater control of permissions.'\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                            apiTokenSecretRef:\n                              description: API token used to authenticate with Cloudflare.\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                            email:\n                              description: Email of the account, only required when using API key based authentication.\n                              type: string\n                        cnameStrategy:\n                          description: CNAMEStrategy configures how the DNS01 provider should handle CNAME records when found in DNS zones.\n                          type: string\n                          enum:\n                            - None\n                            - Follow\n                        digitalocean:\n                          description: Use the DigitalOcean DNS API to manage DNS01 challenge records.\n                          type: object\n                          required:\n                            - tokenSecretRef\n                          properties:\n                            tokenSecretRef:\n                              description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                        rfc2136:\n                          description: Use RFC2136 (\"Dynamic Updates in the Domain Name System\") (https://datatracker.ietf.org/doc/rfc2136/) to manage DNS01 challenge records.\n                          type: object\n                          required:\n                            - nameserver\n                          properties:\n                            nameserver:\n                              description: The IP address or hostname of an authoritative DNS server supporting RFC2136 in the form host:port. If the host is an IPv6 address it must be enclosed in square brackets (e.g [2001:db8::1]) ; port is optional. This field is required.\n                              type: string\n                            tsigAlgorithm:\n                              description: 'The TSIG Algorithm configured in the DNS supporting RFC2136. Used only when ``tsigSecretSecretRef`` and ``tsigKeyName`` are defined. Supported values are (case-insensitive): ``HMACMD5`` (default), ``HMACSHA1``, ``HMACSHA256`` or ``HMACSHA512``.'\n                              type: string\n                            tsigKeyName:\n                              description: The TSIG Key name configured in the DNS. If ``tsigSecretSecretRef`` is defined, this field is required.\n                              type: string\n                            tsigSecretSecretRef:\n                              description: The name of the secret containing the TSIG value. If ``tsigKeyName`` is defined, this field is required.\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                        route53:\n                          description: Use the AWS Route53 API to manage DNS01 challenge records.\n                          type: object\n                          required:\n                            - region\n                          properties:\n                            accessKeyID:\n                              description: 'The AccessKeyID is used for authentication. Cannot be set when SecretAccessKeyID is set. If neither the Access Key nor Key ID are set, we fall-back to using env vars, shared credentials file or AWS Instance metadata, see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials'\n                              type: string\n                            accessKeyIDSecretRef:\n                              description: 'The SecretAccessKey is used for authentication. If set, pull the AWS access key ID from a key within a Kubernetes Secret. Cannot be set when AccessKeyID is set. If neither the Access Key nor Key ID are set, we fall-back to using env vars, shared credentials file or AWS Instance metadata, see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials'\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                            hostedZoneID:\n                              description: If set, the provider will manage only this zone in Route53 and will not do an lookup using the route53:ListHostedZonesByName api call.\n                              type: string\n                            region:\n                              description: Always set the region when using AccessKeyID and SecretAccessKey\n                              type: string\n                            role:\n                              description: Role is a Role ARN which the Route53 provider will assume using either the explicit credentials AccessKeyID/SecretAccessKey or the inferred credentials from environment variables, shared credentials file or AWS Instance metadata\n                              type: string\n                            secretAccessKeySecretRef:\n                              description: 'The SecretAccessKey is used for authentication. If neither the Access Key nor Key ID are set, we fall-back to using env vars, shared credentials file or AWS Instance metadata, see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials'\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                        webhook:\n                          description: Configure an external webhook based DNS01 challenge solver to manage DNS01 challenge records.\n                          type: object\n                          required:\n                            - groupName\n                            - solverName\n                          properties:\n                            config:\n                              description: Additional configuration that should be passed to the webhook apiserver when challenges are processed. This can contain arbitrary JSON data. Secret values should not be specified in this stanza. If secret values are needed (e.g. credentials for a DNS service), you should use a SecretKeySelector to reference a Secret resource. For details on the schema of this field, consult the webhook provider implementation's documentation.\n                              x-kubernetes-preserve-unknown-fields: true\n                            groupName:\n                              description: The API group name that should be used when POSTing ChallengePayload resources to the webhook apiserver. This should be the same as the GroupName specified in the webhook provider implementation.\n                              type: string\n                            solverName:\n                              description: The name of the solver to use, as defined in the webhook provider implementation. This will typically be the name of the provider, e.g. 'cloudflare'.\n                              type: string\n                    http01:\n                      description: Configures cert-manager to attempt to complete authorizations by performing the HTTP01 challenge flow. It is not possible to obtain certificates for wildcard domain names (e.g. `*.example.com`) using the HTTP01 challenge mechanism.\n                      type: object\n                      properties:\n                        gatewayHTTPRoute:\n                          description: The Gateway API is a sig-network community API that models service networking in Kubernetes (https://gateway-api.sigs.k8s.io/). The Gateway solver will create HTTPRoutes with the specified labels in the same namespace as the challenge. This solver is experimental, and fields / behaviour may change in the future.\n                          type: object\n                          properties:\n                            labels:\n                              description: Custom labels that will be applied to HTTPRoutes created by cert-manager while solving HTTP-01 challenges.\n                              type: object\n                              additionalProperties:\n                                type: string\n                            parentRefs:\n                              description: 'When solving an HTTP-01 challenge, cert-manager creates an HTTPRoute. cert-manager needs to know which parentRefs should be used when creating the HTTPRoute. Usually, the parentRef references a Gateway. See: https://gateway-api.sigs.k8s.io/api-types/httproute/#attaching-to-gateways'\n                              type: array\n                              items:\n                                description: \"ParentReference identifies an API object (usually a Gateway) that can be considered a parent of this resource (usually a route). The only kind of parent resource with \\\"Core\\\" support is Gateway. This API may be extended in the future to support additional kinds of parent resources, such as HTTPRoute. \\n The API object must be valid in the cluster; the Group and Kind must be registered in the cluster for this reference to be valid.\"\n                                type: object\n                                required:\n                                  - name\n                                properties:\n                                  group:\n                                    description: \"Group is the group of the referent. When unspecified, \\\"gateway.networking.k8s.io\\\" is inferred. To set the core API group (such as for a \\\"Service\\\" kind referent), Group must be explicitly set to \\\"\\\" (empty string). \\n Support: Core\"\n                                    type: string\n                                    default: gateway.networking.k8s.io\n                                    maxLength: 253\n                                    pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$\n                                  kind:\n                                    description: \"Kind is kind of the referent. \\n Support: Core (Gateway) \\n Support: Implementation-specific (Other Resources)\"\n                                    type: string\n                                    default: Gateway\n                                    maxLength: 63\n                                    minLength: 1\n                                    pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$\n                                  name:\n                                    description: \"Name is the name of the referent. \\n Support: Core\"\n                                    type: string\n                                    maxLength: 253\n                                    minLength: 1\n                                  namespace:\n                                    description: \"Namespace is the namespace of the referent. When unspecified, this refers to the local namespace of the Route. \\n Note that there are specific rules for ParentRefs which cross namespace boundaries. Cross-namespace references are only valid if they are explicitly allowed by something in the namespace they are referring to. For example: Gateway has the AllowedRoutes field, and ReferenceGrant provides a generic way to enable any other kind of cross-namespace reference. \\n Support: Core\"\n                                    type: string\n                                    maxLength: 63\n                                    minLength: 1\n                                    pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$\n                                  port:\n                                    description: \"Port is the network port this Route targets. It can be interpreted differently based on the type of parent resource. \\n When the parent resource is a Gateway, this targets all listeners listening on the specified port that also support this kind of Route(and select this Route). It's not recommended to set `Port` unless the networking behaviors specified in a Route must apply to a specific port as opposed to a listener(s) whose port(s) may be changed. When both Port and SectionName are specified, the name and port of the selected listener must match both specified values. \\n Implementations MAY choose to support other parent resources. Implementations supporting other types of parent resources MUST clearly document how/if Port is interpreted. \\n For the purpose of status, an attachment is considered successful as long as the parent resource accepts it partially. For example, Gateway listeners can restrict which Routes can attach to them by Route kind, namespace, or hostname. If 1 of 2 Gateway listeners accept attachment from the referencing Route, the Route MUST be considered successfully attached. If no Gateway listeners accept attachment from this Route, the Route MUST be considered detached from the Gateway. \\n Support: Extended \\n <gateway:experimental>\"\n                                    type: integer\n                                    format: int32\n                                    maximum: 65535\n                                    minimum: 1\n                                  sectionName:\n                                    description: \"SectionName is the name of a section within the target resource. In the following resources, SectionName is interpreted as the following: \\n * Gateway: Listener Name. When both Port (experimental) and SectionName are specified, the name and port of the selected listener must match both specified values. \\n Implementations MAY choose to support attaching Routes to other resources. If that is the case, they MUST clearly document how SectionName is interpreted. \\n When unspecified (empty string), this will reference the entire resource. For the purpose of status, an attachment is considered successful if at least one section in the parent resource accepts it. For example, Gateway listeners can restrict which Routes can attach to them by Route kind, namespace, or hostname. If 1 of 2 Gateway listeners accept attachment from the referencing Route, the Route MUST be considered successfully attached. If no Gateway listeners accept attachment from this Route, the Route MUST be considered detached from the Gateway. \\n Support: Core\"\n                                    type: string\n                                    maxLength: 253\n                                    minLength: 1\n                                    pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$\n                            serviceType:\n                              description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP. If unset, defaults to NodePort.\n                              type: string\n                        ingress:\n                          description: The ingress based HTTP01 challenge solver will solve challenges by creating or modifying Ingress resources in order to route requests for '/.well-known/acme-challenge/XYZ' to 'challenge solver' pods that are provisioned by cert-manager for each Challenge to be completed.\n                          type: object\n                          properties:\n                            class:\n                              description: This field configures the annotation `kubernetes.io/ingress.class` when creating Ingress resources to solve ACME challenges that use this challenge solver. Only one of `class`, `name` or `ingressClassName` may be specified.\n                              type: string\n                            ingressClassName:\n                              description: This field configures the field `ingressClassName` on the created Ingress resources used to solve ACME challenges that use this challenge solver. This is the recommended way of configuring the ingress class. Only one of `class`, `name` or `ingressClassName` may be specified.\n                              type: string\n                            ingressTemplate:\n                              description: Optional ingress template used to configure the ACME challenge solver ingress used for HTTP01 challenges.\n                              type: object\n                              properties:\n                                metadata:\n                                  description: ObjectMeta overrides for the ingress used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.\n                                  type: object\n                                  properties:\n                                    annotations:\n                                      description: Annotations that should be added to the created ACME HTTP01 solver ingress.\n                                      type: object\n                                      additionalProperties:\n                                        type: string\n                                    labels:\n                                      description: Labels that should be added to the created ACME HTTP01 solver ingress.\n                                      type: object\n                                      additionalProperties:\n                                        type: string\n                            name:\n                              description: The name of the ingress resource that should have ACME challenge solving routes inserted into it in order to solve HTTP01 challenges. This is typically used in conjunction with ingress controllers like ingress-gce, which maintains a 1:1 mapping between external IPs and ingress resources. Only one of `class`, `name` or `ingressClassName` may be specified.\n                              type: string\n                            podTemplate:\n                              description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges.\n                              type: object\n                              properties:\n                                metadata:\n                                  description: ObjectMeta overrides for the pod used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.\n                                  type: object\n                                  properties:\n                                    annotations:\n                                      description: Annotations that should be added to the create ACME HTTP01 solver pods.\n                                      type: object\n                                      additionalProperties:\n                                        type: string\n                                    labels:\n                                      description: Labels that should be added to the created ACME HTTP01 solver pods.\n                                      type: object\n                                      additionalProperties:\n                                        type: string\n                                spec:\n                                  description: PodSpec defines overrides for the HTTP01 challenge solver pod. Check ACMEChallengeSolverHTTP01IngressPodSpec to find out currently supported fields. All other fields will be ignored.\n                                  type: object\n                                  properties:\n                                    affinity:\n                                      description: If specified, the pod's scheduling constraints\n                                      type: object\n                                      properties:\n                                        nodeAffinity:\n                                          description: Describes node affinity scheduling rules for the pod.\n                                          type: object\n                                          properties:\n                                            preferredDuringSchedulingIgnoredDuringExecution:\n                                              description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n                                              type: array\n                                              items:\n                                                description: An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\n                                                type: object\n                                                required:\n                                                  - preference\n                                                  - weight\n                                                properties:\n                                                  preference:\n                                                    description: A node selector term, associated with the corresponding weight.\n                                                    type: object\n                                                    properties:\n                                                      matchExpressions:\n                                                        description: A list of node selector requirements by node's labels.\n                                                        type: array\n                                                        items:\n                                                          description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                          type: object\n                                                          required:\n                                                            - key\n                                                            - operator\n                                                          properties:\n                                                            key:\n                                                              description: The label key that the selector applies to.\n                                                              type: string\n                                                            operator:\n                                                              description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                              type: string\n                                                            values:\n                                                              description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                                              type: array\n                                                              items:\n                                                                type: string\n                                                      matchFields:\n                                                        description: A list of node selector requirements by node's fields.\n                                                        type: array\n                                                        items:\n                                                          description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                          type: object\n                                                          required:\n                                                            - key\n                                                            - operator\n                                                          properties:\n                                                            key:\n                                                              description: The label key that the selector applies to.\n                                                              type: string\n                                                            operator:\n                                                              description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                              type: string\n                                                            values:\n                                                              description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                                              type: array\n                                                              items:\n                                                                type: string\n                                                    x-kubernetes-map-type: atomic\n                                                  weight:\n                                                    description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\n                                                    type: integer\n                                                    format: int32\n                                            requiredDuringSchedulingIgnoredDuringExecution:\n                                              description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.\n                                              type: object\n                                              required:\n                                                - nodeSelectorTerms\n                                              properties:\n                                                nodeSelectorTerms:\n                                                  description: Required. A list of node selector terms. The terms are ORed.\n                                                  type: array\n                                                  items:\n                                                    description: A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\n                                                    type: object\n                                                    properties:\n                                                      matchExpressions:\n                                                        description: A list of node selector requirements by node's labels.\n                                                        type: array\n                                                        items:\n                                                          description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                          type: object\n                                                          required:\n                                                            - key\n                                                            - operator\n                                                          properties:\n                                                            key:\n                                                              description: The label key that the selector applies to.\n                                                              type: string\n                                                            operator:\n                                                              description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                              type: string\n                                                            values:\n                                                              description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                                              type: array\n                                                              items:\n                                                                type: string\n                                                      matchFields:\n                                                        description: A list of node selector requirements by node's fields.\n                                                        type: array\n                                                        items:\n                                                          description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                          type: object\n                                                          required:\n                                                            - key\n                                                            - operator\n                                                          properties:\n                                                            key:\n                                                              description: The label key that the selector applies to.\n                                                              type: string\n                                                            operator:\n                                                              description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                              type: string\n                                                            values:\n                                                              description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                                              type: array\n                                                              items:\n                                                                type: string\n                                                    x-kubernetes-map-type: atomic\n                                              x-kubernetes-map-type: atomic\n                                        podAffinity:\n                                          description: Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\n                                          type: object\n                                          properties:\n                                            preferredDuringSchedulingIgnoredDuringExecution:\n                                              description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n                                              type: array\n                                              items:\n                                                description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\n                                                type: object\n                                                required:\n                                                  - podAffinityTerm\n                                                  - weight\n                                                properties:\n                                                  podAffinityTerm:\n                                                    description: Required. A pod affinity term, associated with the corresponding weight.\n                                                    type: object\n                                                    required:\n                                                      - topologyKey\n                                                    properties:\n                                                      labelSelector:\n                                                        description: A label query over a set of resources, in this case pods.\n                                                        type: object\n                                                        properties:\n                                                          matchExpressions:\n                                                            description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                            type: array\n                                                            items:\n                                                              description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                              type: object\n                                                              required:\n                                                                - key\n                                                                - operator\n                                                              properties:\n                                                                key:\n                                                                  description: key is the label key that the selector applies to.\n                                                                  type: string\n                                                                operator:\n                                                                  description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                  type: string\n                                                                values:\n                                                                  description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                  type: array\n                                                                  items:\n                                                                    type: string\n                                                          matchLabels:\n                                                            description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                            type: object\n                                                            additionalProperties:\n                                                              type: string\n                                                        x-kubernetes-map-type: atomic\n                                                      namespaceSelector:\n                                                        description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                                                        type: object\n                                                        properties:\n                                                          matchExpressions:\n                                                            description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                            type: array\n                                                            items:\n                                                              description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                              type: object\n                                                              required:\n                                                                - key\n                                                                - operator\n                                                              properties:\n                                                                key:\n                                                                  description: key is the label key that the selector applies to.\n                                                                  type: string\n                                                                operator:\n                                                                  description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                  type: string\n                                                                values:\n                                                                  description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                  type: array\n                                                                  items:\n                                                                    type: string\n                                                          matchLabels:\n                                                            description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                            type: object\n                                                            additionalProperties:\n                                                              type: string\n                                                        x-kubernetes-map-type: atomic\n                                                      namespaces:\n                                                        description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                                        type: array\n                                                        items:\n                                                          type: string\n                                                      topologyKey:\n                                                        description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                                                        type: string\n                                                  weight:\n                                                    description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.\n                                                    type: integer\n                                                    format: int32\n                                            requiredDuringSchedulingIgnoredDuringExecution:\n                                              description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n                                              type: array\n                                              items:\n                                                description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running\n                                                type: object\n                                                required:\n                                                  - topologyKey\n                                                properties:\n                                                  labelSelector:\n                                                    description: A label query over a set of resources, in this case pods.\n                                                    type: object\n                                                    properties:\n                                                      matchExpressions:\n                                                        description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                        type: array\n                                                        items:\n                                                          description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                          type: object\n                                                          required:\n                                                            - key\n                                                            - operator\n                                                          properties:\n                                                            key:\n                                                              description: key is the label key that the selector applies to.\n                                                              type: string\n                                                            operator:\n                                                              description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                              type: string\n                                                            values:\n                                                              description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                              type: array\n                                                              items:\n                                                                type: string\n                                                      matchLabels:\n                                                        description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                        type: object\n                                                        additionalProperties:\n                                                          type: string\n                                                    x-kubernetes-map-type: atomic\n                                                  namespaceSelector:\n                                                    description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                                                    type: object\n                                                    properties:\n                                                      matchExpressions:\n                                                        description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                        type: array\n                                                        items:\n                                                          description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                          type: object\n                                                          required:\n                                                            - key\n                                                            - operator\n                                                          properties:\n                                                            key:\n                                                              description: key is the label key that the selector applies to.\n                                                              type: string\n                                                            operator:\n                                                              description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                              type: string\n                                                            values:\n                                                              description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                              type: array\n                                                              items:\n                                                                type: string\n                                                      matchLabels:\n                                                        description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                        type: object\n                                                        additionalProperties:\n                                                          type: string\n                                                    x-kubernetes-map-type: atomic\n                                                  namespaces:\n                                                    description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                                    type: array\n                                                    items:\n                                                      type: string\n                                                  topologyKey:\n                                                    description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                                                    type: string\n                                        podAntiAffinity:\n                                          description: Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\n                                          type: object\n                                          properties:\n                                            preferredDuringSchedulingIgnoredDuringExecution:\n                                              description: The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n                                              type: array\n                                              items:\n                                                description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\n                                                type: object\n                                                required:\n                                                  - podAffinityTerm\n                                                  - weight\n                                                properties:\n                                                  podAffinityTerm:\n                                                    description: Required. A pod affinity term, associated with the corresponding weight.\n                                                    type: object\n                                                    required:\n                                                      - topologyKey\n                                                    properties:\n                                                      labelSelector:\n                                                        description: A label query over a set of resources, in this case pods.\n                                                        type: object\n                                                        properties:\n                                                          matchExpressions:\n                                                            description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                            type: array\n                                                            items:\n                                                              description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                              type: object\n                                                              required:\n                                                                - key\n                                                                - operator\n                                                              properties:\n                                                                key:\n                                                                  description: key is the label key that the selector applies to.\n                                                                  type: string\n                                                                operator:\n                                                                  description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                  type: string\n                                                                values:\n                                                                  description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                  type: array\n                                                                  items:\n                                                                    type: string\n                                                          matchLabels:\n                                                            description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                            type: object\n                                                            additionalProperties:\n                                                              type: string\n                                                        x-kubernetes-map-type: atomic\n                                                      namespaceSelector:\n                                                        description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                                                        type: object\n                                                        properties:\n                                                          matchExpressions:\n                                                            description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                            type: array\n                                                            items:\n                                                              description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                              type: object\n                                                              required:\n                                                                - key\n                                                                - operator\n                                                              properties:\n                                                                key:\n                                                                  description: key is the label key that the selector applies to.\n                                                                  type: string\n                                                                operator:\n                                                                  description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                  type: string\n                                                                values:\n                                                                  description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                  type: array\n                                                                  items:\n                                                                    type: string\n                                                          matchLabels:\n                                                            description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                            type: object\n                                                            additionalProperties:\n                                                              type: string\n                                                        x-kubernetes-map-type: atomic\n                                                      namespaces:\n                                                        description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                                        type: array\n                                                        items:\n                                                          type: string\n                                                      topologyKey:\n                                                        description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                                                        type: string\n                                                  weight:\n                                                    description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.\n                                                    type: integer\n                                                    format: int32\n                                            requiredDuringSchedulingIgnoredDuringExecution:\n                                              description: If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n                                              type: array\n                                              items:\n                                                description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running\n                                                type: object\n                                                required:\n                                                  - topologyKey\n                                                properties:\n                                                  labelSelector:\n                                                    description: A label query over a set of resources, in this case pods.\n                                                    type: object\n                                                    properties:\n                                                      matchExpressions:\n                                                        description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                        type: array\n                                                        items:\n                                                          description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                          type: object\n                                                          required:\n                                                            - key\n                                                            - operator\n                                                          properties:\n                                                            key:\n                                                              description: key is the label key that the selector applies to.\n                                                              type: string\n                                                            operator:\n                                                              description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                              type: string\n                                                            values:\n                                                              description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                              type: array\n                                                              items:\n                                                                type: string\n                                                      matchLabels:\n                                                        description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                        type: object\n                                                        additionalProperties:\n                                                          type: string\n                                                    x-kubernetes-map-type: atomic\n                                                  namespaceSelector:\n                                                    description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                                                    type: object\n                                                    properties:\n                                                      matchExpressions:\n                                                        description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                        type: array\n                                                        items:\n                                                          description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                          type: object\n                                                          required:\n                                                            - key\n                                                            - operator\n                                                          properties:\n                                                            key:\n                                                              description: key is the label key that the selector applies to.\n                                                              type: string\n                                                            operator:\n                                                              description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                              type: string\n                                                            values:\n                                                              description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                              type: array\n                                                              items:\n                                                                type: string\n                                                      matchLabels:\n                                                        description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                        type: object\n                                                        additionalProperties:\n                                                          type: string\n                                                    x-kubernetes-map-type: atomic\n                                                  namespaces:\n                                                    description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                                    type: array\n                                                    items:\n                                                      type: string\n                                                  topologyKey:\n                                                    description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                                                    type: string\n                                    imagePullSecrets:\n                                      description: If specified, the pod's imagePullSecrets\n                                      type: array\n                                      items:\n                                        description: LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.\n                                        type: object\n                                        properties:\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                        x-kubernetes-map-type: atomic\n                                    nodeSelector:\n                                      description: 'NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node''s labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/'\n                                      type: object\n                                      additionalProperties:\n                                        type: string\n                                    priorityClassName:\n                                      description: If specified, the pod's priorityClassName.\n                                      type: string\n                                    serviceAccountName:\n                                      description: If specified, the pod's service account\n                                      type: string\n                                    tolerations:\n                                      description: If specified, the pod's tolerations.\n                                      type: array\n                                      items:\n                                        description: The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.\n                                        type: object\n                                        properties:\n                                          effect:\n                                            description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\n                                            type: string\n                                          key:\n                                            description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.\n                                            type: string\n                                          operator:\n                                            description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.\n                                            type: string\n                                          tolerationSeconds:\n                                            description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.\n                                            type: integer\n                                            format: int64\n                                          value:\n                                            description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.\n                                            type: string\n                            serviceType:\n                              description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP. If unset, defaults to NodePort.\n                              type: string\n                    selector:\n                      description: Selector selects a set of DNSNames on the Certificate resource that should be solved using this challenge solver. If not specified, the solver will be treated as the 'default' solver with the lowest priority, i.e. if any other solver has a more specific match, it will be used instead.\n                      type: object\n                      properties:\n                        dnsNames:\n                          description: List of DNSNames that this solver will be used to solve. If specified and a match is found, a dnsNames selector will take precedence over a dnsZones selector. If multiple solvers match with the same dnsNames value, the solver with the most matching labels in matchLabels will be selected. If neither has more matches, the solver defined earlier in the list will be selected.\n                          type: array\n                          items:\n                            type: string\n                        dnsZones:\n                          description: List of DNSZones that this solver will be used to solve. The most specific DNS zone match specified here will take precedence over other DNS zone matches, so a solver specifying sys.example.com will be selected over one specifying example.com for the domain www.sys.example.com. If multiple solvers match with the same dnsZones value, the solver with the most matching labels in matchLabels will be selected. If neither has more matches, the solver defined earlier in the list will be selected.\n                          type: array\n                          items:\n                            type: string\n                        matchLabels:\n                          description: A label selector that is used to refine the set of certificate's that this challenge solver will apply to.\n                          type: object\n                          additionalProperties:\n                            type: string\n                token:\n                  description: The ACME challenge token for this challenge. This is the raw value returned from the ACME server.\n                  type: string\n                type:\n                  description: The type of ACME challenge this resource represents. One of \"HTTP-01\" or \"DNS-01\".\n                  type: string\n                  enum:\n                    - HTTP-01\n                    - DNS-01\n                url:\n                  description: The URL of the ACME Challenge resource for this challenge. This can be used to lookup details about the status of this challenge.\n                  type: string\n                wildcard:\n                  description: wildcard will be true if this challenge is for a wildcard identifier, for example '*.example.com'.\n                  type: boolean\n            status:\n              type: object\n              properties:\n                presented:\n                  description: presented will be set to true if the challenge values for this challenge are currently 'presented'. This *does not* imply the self check is passing. Only that the values have been 'submitted' for the appropriate challenge mechanism (i.e. the DNS01 TXT record has been presented, or the HTTP01 configuration has been configured).\n                  type: boolean\n                processing:\n                  description: Used to denote whether this challenge should be processed or not. This field will only be set to true by the 'scheduling' component. It will only be set to false by the 'challenges' controller, after the challenge has reached a final state or timed out. If this field is set to false, the challenge controller will not take any more action.\n                  type: boolean\n                reason:\n                  description: Contains human readable information on why the Challenge is in the current state.\n                  type: string\n                state:\n                  description: Contains the current 'state' of the challenge. If not set, the state of the challenge is unknown.\n                  type: string\n                  enum:\n                    - valid\n                    - ready\n                    - pending\n                    - processing\n                    - invalid\n                    - expired\n                    - errored\n      served: true\n      storage: true\n      subresources:\n        status: {}\n---\n# Source: cert-manager/templates/crds.yaml\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  name: clusterissuers.cert-manager.io\n  labels:\n    app: 'cert-manager'\n    app.kubernetes.io/name: 'cert-manager'\n    app.kubernetes.io/instance: \"cert-manager\"\n    # Generated labels\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\nspec:\n  group: cert-manager.io\n  names:\n    kind: ClusterIssuer\n    listKind: ClusterIssuerList\n    plural: clusterissuers\n    singular: clusterissuer\n    categories:\n      - cert-manager\n  scope: Cluster\n  versions:\n    - name: v1\n      subresources:\n        status: {}\n      additionalPrinterColumns:\n        - jsonPath: .status.conditions[?(@.type==\"Ready\")].status\n          name: Ready\n          type: string\n        - jsonPath: .status.conditions[?(@.type==\"Ready\")].message\n          name: Status\n          priority: 1\n          type: string\n        - jsonPath: .metadata.creationTimestamp\n          description: CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n          name: Age\n          type: date\n      schema:\n        openAPIV3Schema:\n          description: A ClusterIssuer represents a certificate issuing authority which can be referenced as part of `issuerRef` fields. It is similar to an Issuer, however it is cluster-scoped and therefore can be referenced by resources that exist in *any* namespace, not just the same namespace as the referent.\n          type: object\n          required:\n            - spec\n          properties:\n            apiVersion:\n              description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n              type: string\n            kind:\n              description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n              type: string\n            metadata:\n              type: object\n            spec:\n              description: Desired state of the ClusterIssuer resource.\n              type: object\n              properties:\n                acme:\n                  description: ACME configures this issuer to communicate with a RFC8555 (ACME) server to obtain signed x509 certificates.\n                  type: object\n                  required:\n                    - privateKeySecretRef\n                    - server\n                  properties:\n                    caBundle:\n                      description: Base64-encoded bundle of PEM CAs which can be used to validate the certificate chain presented by the ACME server. Mutually exclusive with SkipTLSVerify; prefer using CABundle to prevent various kinds of security vulnerabilities. If CABundle and SkipTLSVerify are unset, the system certificate bundle inside the container is used to validate the TLS connection.\n                      type: string\n                      format: byte\n                    disableAccountKeyGeneration:\n                      description: Enables or disables generating a new ACME account key. If true, the Issuer resource will *not* request a new account but will expect the account key to be supplied via an existing secret. If false, the cert-manager system will generate a new ACME account key for the Issuer. Defaults to false.\n                      type: boolean\n                    email:\n                      description: Email is the email address to be associated with the ACME account. This field is optional, but it is strongly recommended to be set. It will be used to contact you in case of issues with your account or certificates, including expiry notification emails. This field may be updated after the account is initially registered.\n                      type: string\n                    enableDurationFeature:\n                      description: Enables requesting a Not After date on certificates that matches the duration of the certificate. This is not supported by all ACME servers like Let's Encrypt. If set to true when the ACME server does not support it it will create an error on the Order. Defaults to false.\n                      type: boolean\n                    externalAccountBinding:\n                      description: ExternalAccountBinding is a reference to a CA external account of the ACME server. If set, upon registration cert-manager will attempt to associate the given external account credentials with the registered ACME account.\n                      type: object\n                      required:\n                        - keyID\n                        - keySecretRef\n                      properties:\n                        keyAlgorithm:\n                          description: 'Deprecated: keyAlgorithm field exists for historical compatibility reasons and should not be used. The algorithm is now hardcoded to HS256 in golang/x/crypto/acme.'\n                          type: string\n                          enum:\n                            - HS256\n                            - HS384\n                            - HS512\n                        keyID:\n                          description: keyID is the ID of the CA key that the External Account is bound to.\n                          type: string\n                        keySecretRef:\n                          description: keySecretRef is a Secret Key Selector referencing a data item in a Kubernetes Secret which holds the symmetric MAC key of the External Account Binding. The `key` is the index string that is paired with the key data in the Secret and should not be confused with the key data itself, or indeed with the External Account Binding keyID above. The secret key stored in the Secret **must** be un-padded, base64 URL encoded data.\n                          type: object\n                          required:\n                            - name\n                          properties:\n                            key:\n                              description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                              type: string\n                            name:\n                              description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                              type: string\n                    preferredChain:\n                      description: 'PreferredChain is the chain to use if the ACME server outputs multiple. PreferredChain is no guarantee that this one gets delivered by the ACME endpoint. For example, for Let''s Encrypt''s DST crosssign you would use: \"DST Root CA X3\" or \"ISRG Root X1\" for the newer Let''s Encrypt root CA. This value picks the first certificate bundle in the ACME alternative chains that has a certificate with this value as its issuer''s CN'\n                      type: string\n                      maxLength: 64\n                    privateKeySecretRef:\n                      description: PrivateKey is the name of a Kubernetes Secret resource that will be used to store the automatically generated ACME account private key. Optionally, a `key` may be specified to select a specific entry within the named Secret resource. If `key` is not specified, a default of `tls.key` will be used.\n                      type: object\n                      required:\n                        - name\n                      properties:\n                        key:\n                          description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                          type: string\n                        name:\n                          description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                          type: string\n                    server:\n                      description: 'Server is the URL used to access the ACME server''s ''directory'' endpoint. For example, for Let''s Encrypt''s staging endpoint, you would use: \"https://acme-staging-v02.api.letsencrypt.org/directory\". Only ACME v2 endpoints (i.e. RFC 8555) are supported.'\n                      type: string\n                    skipTLSVerify:\n                      description: 'INSECURE: Enables or disables validation of the ACME server TLS certificate. If true, requests to the ACME server will not have the TLS certificate chain validated. Mutually exclusive with CABundle; prefer using CABundle to prevent various kinds of security vulnerabilities. Only enable this option in development environments. If CABundle and SkipTLSVerify are unset, the system certificate bundle inside the container is used to validate the TLS connection. Defaults to false.'\n                      type: boolean\n                    solvers:\n                      description: 'Solvers is a list of challenge solvers that will be used to solve ACME challenges for the matching domains. Solver configurations must be provided in order to obtain certificates from an ACME server. For more information, see: https://cert-manager.io/docs/configuration/acme/'\n                      type: array\n                      items:\n                        description: An ACMEChallengeSolver describes how to solve ACME challenges for the issuer it is part of. A selector may be provided to use different solving strategies for different DNS names. Only one of HTTP01 or DNS01 must be provided.\n                        type: object\n                        properties:\n                          dns01:\n                            description: Configures cert-manager to attempt to complete authorizations by performing the DNS01 challenge flow.\n                            type: object\n                            properties:\n                              acmeDNS:\n                                description: Use the 'ACME DNS' (https://github.com/joohoi/acme-dns) API to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - accountSecretRef\n                                  - host\n                                properties:\n                                  accountSecretRef:\n                                    description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  host:\n                                    type: string\n                              akamai:\n                                description: Use the Akamai DNS zone management API to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - accessTokenSecretRef\n                                  - clientSecretSecretRef\n                                  - clientTokenSecretRef\n                                  - serviceConsumerDomain\n                                properties:\n                                  accessTokenSecretRef:\n                                    description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  clientSecretSecretRef:\n                                    description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  clientTokenSecretRef:\n                                    description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  serviceConsumerDomain:\n                                    type: string\n                              azureDNS:\n                                description: Use the Microsoft Azure DNS API to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - resourceGroupName\n                                  - subscriptionID\n                                properties:\n                                  clientID:\n                                    description: if both this and ClientSecret are left unset MSI will be used\n                                    type: string\n                                  clientSecretSecretRef:\n                                    description: if both this and ClientID are left unset MSI will be used\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  environment:\n                                    description: name of the Azure environment (default AzurePublicCloud)\n                                    type: string\n                                    enum:\n                                      - AzurePublicCloud\n                                      - AzureChinaCloud\n                                      - AzureGermanCloud\n                                      - AzureUSGovernmentCloud\n                                  hostedZoneName:\n                                    description: name of the DNS zone that should be used\n                                    type: string\n                                  managedIdentity:\n                                    description: managed identity configuration, can not be used at the same time as clientID, clientSecretSecretRef or tenantID\n                                    type: object\n                                    properties:\n                                      clientID:\n                                        description: client ID of the managed identity, can not be used at the same time as resourceID\n                                        type: string\n                                      resourceID:\n                                        description: resource ID of the managed identity, can not be used at the same time as clientID\n                                        type: string\n                                  resourceGroupName:\n                                    description: resource group the DNS zone is located in\n                                    type: string\n                                  subscriptionID:\n                                    description: ID of the Azure subscription\n                                    type: string\n                                  tenantID:\n                                    description: when specifying ClientID and ClientSecret then this field is also needed\n                                    type: string\n                              cloudDNS:\n                                description: Use the Google Cloud DNS API to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - project\n                                properties:\n                                  hostedZoneName:\n                                    description: HostedZoneName is an optional field that tells cert-manager in which Cloud DNS zone the challenge record has to be created. If left empty cert-manager will automatically choose a zone.\n                                    type: string\n                                  project:\n                                    type: string\n                                  serviceAccountSecretRef:\n                                    description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                              cloudflare:\n                                description: Use the Cloudflare API to manage DNS01 challenge records.\n                                type: object\n                                properties:\n                                  apiKeySecretRef:\n                                    description: 'API key to use to authenticate with Cloudflare. Note: using an API token to authenticate is now the recommended method as it allows greater control of permissions.'\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  apiTokenSecretRef:\n                                    description: API token used to authenticate with Cloudflare.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  email:\n                                    description: Email of the account, only required when using API key based authentication.\n                                    type: string\n                              cnameStrategy:\n                                description: CNAMEStrategy configures how the DNS01 provider should handle CNAME records when found in DNS zones.\n                                type: string\n                                enum:\n                                  - None\n                                  - Follow\n                              digitalocean:\n                                description: Use the DigitalOcean DNS API to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - tokenSecretRef\n                                properties:\n                                  tokenSecretRef:\n                                    description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                              rfc2136:\n                                description: Use RFC2136 (\"Dynamic Updates in the Domain Name System\") (https://datatracker.ietf.org/doc/rfc2136/) to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - nameserver\n                                properties:\n                                  nameserver:\n                                    description: The IP address or hostname of an authoritative DNS server supporting RFC2136 in the form host:port. If the host is an IPv6 address it must be enclosed in square brackets (e.g [2001:db8::1]) ; port is optional. This field is required.\n                                    type: string\n                                  tsigAlgorithm:\n                                    description: 'The TSIG Algorithm configured in the DNS supporting RFC2136. Used only when ``tsigSecretSecretRef`` and ``tsigKeyName`` are defined. Supported values are (case-insensitive): ``HMACMD5`` (default), ``HMACSHA1``, ``HMACSHA256`` or ``HMACSHA512``.'\n                                    type: string\n                                  tsigKeyName:\n                                    description: The TSIG Key name configured in the DNS. If ``tsigSecretSecretRef`` is defined, this field is required.\n                                    type: string\n                                  tsigSecretSecretRef:\n                                    description: The name of the secret containing the TSIG value. If ``tsigKeyName`` is defined, this field is required.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                              route53:\n                                description: Use the AWS Route53 API to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - region\n                                properties:\n                                  accessKeyID:\n                                    description: 'The AccessKeyID is used for authentication. Cannot be set when SecretAccessKeyID is set. If neither the Access Key nor Key ID are set, we fall-back to using env vars, shared credentials file or AWS Instance metadata, see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials'\n                                    type: string\n                                  accessKeyIDSecretRef:\n                                    description: 'The SecretAccessKey is used for authentication. If set, pull the AWS access key ID from a key within a Kubernetes Secret. Cannot be set when AccessKeyID is set. If neither the Access Key nor Key ID are set, we fall-back to using env vars, shared credentials file or AWS Instance metadata, see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials'\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  hostedZoneID:\n                                    description: If set, the provider will manage only this zone in Route53 and will not do an lookup using the route53:ListHostedZonesByName api call.\n                                    type: string\n                                  region:\n                                    description: Always set the region when using AccessKeyID and SecretAccessKey\n                                    type: string\n                                  role:\n                                    description: Role is a Role ARN which the Route53 provider will assume using either the explicit credentials AccessKeyID/SecretAccessKey or the inferred credentials from environment variables, shared credentials file or AWS Instance metadata\n                                    type: string\n                                  secretAccessKeySecretRef:\n                                    description: 'The SecretAccessKey is used for authentication. If neither the Access Key nor Key ID are set, we fall-back to using env vars, shared credentials file or AWS Instance metadata, see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials'\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                              webhook:\n                                description: Configure an external webhook based DNS01 challenge solver to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - groupName\n                                  - solverName\n                                properties:\n                                  config:\n                                    description: Additional configuration that should be passed to the webhook apiserver when challenges are processed. This can contain arbitrary JSON data. Secret values should not be specified in this stanza. If secret values are needed (e.g. credentials for a DNS service), you should use a SecretKeySelector to reference a Secret resource. For details on the schema of this field, consult the webhook provider implementation's documentation.\n                                    x-kubernetes-preserve-unknown-fields: true\n                                  groupName:\n                                    description: The API group name that should be used when POSTing ChallengePayload resources to the webhook apiserver. This should be the same as the GroupName specified in the webhook provider implementation.\n                                    type: string\n                                  solverName:\n                                    description: The name of the solver to use, as defined in the webhook provider implementation. This will typically be the name of the provider, e.g. 'cloudflare'.\n                                    type: string\n                          http01:\n                            description: Configures cert-manager to attempt to complete authorizations by performing the HTTP01 challenge flow. It is not possible to obtain certificates for wildcard domain names (e.g. `*.example.com`) using the HTTP01 challenge mechanism.\n                            type: object\n                            properties:\n                              gatewayHTTPRoute:\n                                description: The Gateway API is a sig-network community API that models service networking in Kubernetes (https://gateway-api.sigs.k8s.io/). The Gateway solver will create HTTPRoutes with the specified labels in the same namespace as the challenge. This solver is experimental, and fields / behaviour may change in the future.\n                                type: object\n                                properties:\n                                  labels:\n                                    description: Custom labels that will be applied to HTTPRoutes created by cert-manager while solving HTTP-01 challenges.\n                                    type: object\n                                    additionalProperties:\n                                      type: string\n                                  parentRefs:\n                                    description: 'When solving an HTTP-01 challenge, cert-manager creates an HTTPRoute. cert-manager needs to know which parentRefs should be used when creating the HTTPRoute. Usually, the parentRef references a Gateway. See: https://gateway-api.sigs.k8s.io/api-types/httproute/#attaching-to-gateways'\n                                    type: array\n                                    items:\n                                      description: \"ParentReference identifies an API object (usually a Gateway) that can be considered a parent of this resource (usually a route). The only kind of parent resource with \\\"Core\\\" support is Gateway. This API may be extended in the future to support additional kinds of parent resources, such as HTTPRoute. \\n The API object must be valid in the cluster; the Group and Kind must be registered in the cluster for this reference to be valid.\"\n                                      type: object\n                                      required:\n                                        - name\n                                      properties:\n                                        group:\n                                          description: \"Group is the group of the referent. When unspecified, \\\"gateway.networking.k8s.io\\\" is inferred. To set the core API group (such as for a \\\"Service\\\" kind referent), Group must be explicitly set to \\\"\\\" (empty string). \\n Support: Core\"\n                                          type: string\n                                          default: gateway.networking.k8s.io\n                                          maxLength: 253\n                                          pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$\n                                        kind:\n                                          description: \"Kind is kind of the referent. \\n Support: Core (Gateway) \\n Support: Implementation-specific (Other Resources)\"\n                                          type: string\n                                          default: Gateway\n                                          maxLength: 63\n                                          minLength: 1\n                                          pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$\n                                        name:\n                                          description: \"Name is the name of the referent. \\n Support: Core\"\n                                          type: string\n                                          maxLength: 253\n                                          minLength: 1\n                                        namespace:\n                                          description: \"Namespace is the namespace of the referent. When unspecified, this refers to the local namespace of the Route. \\n Note that there are specific rules for ParentRefs which cross namespace boundaries. Cross-namespace references are only valid if they are explicitly allowed by something in the namespace they are referring to. For example: Gateway has the AllowedRoutes field, and ReferenceGrant provides a generic way to enable any other kind of cross-namespace reference. \\n Support: Core\"\n                                          type: string\n                                          maxLength: 63\n                                          minLength: 1\n                                          pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$\n                                        port:\n                                          description: \"Port is the network port this Route targets. It can be interpreted differently based on the type of parent resource. \\n When the parent resource is a Gateway, this targets all listeners listening on the specified port that also support this kind of Route(and select this Route). It's not recommended to set `Port` unless the networking behaviors specified in a Route must apply to a specific port as opposed to a listener(s) whose port(s) may be changed. When both Port and SectionName are specified, the name and port of the selected listener must match both specified values. \\n Implementations MAY choose to support other parent resources. Implementations supporting other types of parent resources MUST clearly document how/if Port is interpreted. \\n For the purpose of status, an attachment is considered successful as long as the parent resource accepts it partially. For example, Gateway listeners can restrict which Routes can attach to them by Route kind, namespace, or hostname. If 1 of 2 Gateway listeners accept attachment from the referencing Route, the Route MUST be considered successfully attached. If no Gateway listeners accept attachment from this Route, the Route MUST be considered detached from the Gateway. \\n Support: Extended \\n <gateway:experimental>\"\n                                          type: integer\n                                          format: int32\n                                          maximum: 65535\n                                          minimum: 1\n                                        sectionName:\n                                          description: \"SectionName is the name of a section within the target resource. In the following resources, SectionName is interpreted as the following: \\n * Gateway: Listener Name. When both Port (experimental) and SectionName are specified, the name and port of the selected listener must match both specified values. \\n Implementations MAY choose to support attaching Routes to other resources. If that is the case, they MUST clearly document how SectionName is interpreted. \\n When unspecified (empty string), this will reference the entire resource. For the purpose of status, an attachment is considered successful if at least one section in the parent resource accepts it. For example, Gateway listeners can restrict which Routes can attach to them by Route kind, namespace, or hostname. If 1 of 2 Gateway listeners accept attachment from the referencing Route, the Route MUST be considered successfully attached. If no Gateway listeners accept attachment from this Route, the Route MUST be considered detached from the Gateway. \\n Support: Core\"\n                                          type: string\n                                          maxLength: 253\n                                          minLength: 1\n                                          pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$\n                                  serviceType:\n                                    description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP. If unset, defaults to NodePort.\n                                    type: string\n                              ingress:\n                                description: The ingress based HTTP01 challenge solver will solve challenges by creating or modifying Ingress resources in order to route requests for '/.well-known/acme-challenge/XYZ' to 'challenge solver' pods that are provisioned by cert-manager for each Challenge to be completed.\n                                type: object\n                                properties:\n                                  class:\n                                    description: This field configures the annotation `kubernetes.io/ingress.class` when creating Ingress resources to solve ACME challenges that use this challenge solver. Only one of `class`, `name` or `ingressClassName` may be specified.\n                                    type: string\n                                  ingressClassName:\n                                    description: This field configures the field `ingressClassName` on the created Ingress resources used to solve ACME challenges that use this challenge solver. This is the recommended way of configuring the ingress class. Only one of `class`, `name` or `ingressClassName` may be specified.\n                                    type: string\n                                  ingressTemplate:\n                                    description: Optional ingress template used to configure the ACME challenge solver ingress used for HTTP01 challenges.\n                                    type: object\n                                    properties:\n                                      metadata:\n                                        description: ObjectMeta overrides for the ingress used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.\n                                        type: object\n                                        properties:\n                                          annotations:\n                                            description: Annotations that should be added to the created ACME HTTP01 solver ingress.\n                                            type: object\n                                            additionalProperties:\n                                              type: string\n                                          labels:\n                                            description: Labels that should be added to the created ACME HTTP01 solver ingress.\n                                            type: object\n                                            additionalProperties:\n                                              type: string\n                                  name:\n                                    description: The name of the ingress resource that should have ACME challenge solving routes inserted into it in order to solve HTTP01 challenges. This is typically used in conjunction with ingress controllers like ingress-gce, which maintains a 1:1 mapping between external IPs and ingress resources. Only one of `class`, `name` or `ingressClassName` may be specified.\n                                    type: string\n                                  podTemplate:\n                                    description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges.\n                                    type: object\n                                    properties:\n                                      metadata:\n                                        description: ObjectMeta overrides for the pod used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.\n                                        type: object\n                                        properties:\n                                          annotations:\n                                            description: Annotations that should be added to the create ACME HTTP01 solver pods.\n                                            type: object\n                                            additionalProperties:\n                                              type: string\n                                          labels:\n                                            description: Labels that should be added to the created ACME HTTP01 solver pods.\n                                            type: object\n                                            additionalProperties:\n                                              type: string\n                                      spec:\n                                        description: PodSpec defines overrides for the HTTP01 challenge solver pod. Check ACMEChallengeSolverHTTP01IngressPodSpec to find out currently supported fields. All other fields will be ignored.\n                                        type: object\n                                        properties:\n                                          affinity:\n                                            description: If specified, the pod's scheduling constraints\n                                            type: object\n                                            properties:\n                                              nodeAffinity:\n                                                description: Describes node affinity scheduling rules for the pod.\n                                                type: object\n                                                properties:\n                                                  preferredDuringSchedulingIgnoredDuringExecution:\n                                                    description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n                                                    type: array\n                                                    items:\n                                                      description: An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\n                                                      type: object\n                                                      required:\n                                                        - preference\n                                                        - weight\n                                                      properties:\n                                                        preference:\n                                                          description: A node selector term, associated with the corresponding weight.\n                                                          type: object\n                                                          properties:\n                                                            matchExpressions:\n                                                              description: A list of node selector requirements by node's labels.\n                                                              type: array\n                                                              items:\n                                                                description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: The label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                                    type: string\n                                                                  values:\n                                                                    description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                            matchFields:\n                                                              description: A list of node selector requirements by node's fields.\n                                                              type: array\n                                                              items:\n                                                                description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: The label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                                    type: string\n                                                                  values:\n                                                                    description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                          x-kubernetes-map-type: atomic\n                                                        weight:\n                                                          description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\n                                                          type: integer\n                                                          format: int32\n                                                  requiredDuringSchedulingIgnoredDuringExecution:\n                                                    description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.\n                                                    type: object\n                                                    required:\n                                                      - nodeSelectorTerms\n                                                    properties:\n                                                      nodeSelectorTerms:\n                                                        description: Required. A list of node selector terms. The terms are ORed.\n                                                        type: array\n                                                        items:\n                                                          description: A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\n                                                          type: object\n                                                          properties:\n                                                            matchExpressions:\n                                                              description: A list of node selector requirements by node's labels.\n                                                              type: array\n                                                              items:\n                                                                description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: The label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                                    type: string\n                                                                  values:\n                                                                    description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                            matchFields:\n                                                              description: A list of node selector requirements by node's fields.\n                                                              type: array\n                                                              items:\n                                                                description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: The label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                                    type: string\n                                                                  values:\n                                                                    description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                          x-kubernetes-map-type: atomic\n                                                    x-kubernetes-map-type: atomic\n                                              podAffinity:\n                                                description: Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\n                                                type: object\n                                                properties:\n                                                  preferredDuringSchedulingIgnoredDuringExecution:\n                                                    description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n                                                    type: array\n                                                    items:\n                                                      description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\n                                                      type: object\n                                                      required:\n                                                        - podAffinityTerm\n                                                        - weight\n                                                      properties:\n                                                        podAffinityTerm:\n                                                          description: Required. A pod affinity term, associated with the corresponding weight.\n                                                          type: object\n                                                          required:\n                                                            - topologyKey\n                                                          properties:\n                                                            labelSelector:\n                                                              description: A label query over a set of resources, in this case pods.\n                                                              type: object\n                                                              properties:\n                                                                matchExpressions:\n                                                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                                  type: array\n                                                                  items:\n                                                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                    type: object\n                                                                    required:\n                                                                      - key\n                                                                      - operator\n                                                                    properties:\n                                                                      key:\n                                                                        description: key is the label key that the selector applies to.\n                                                                        type: string\n                                                                      operator:\n                                                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                        type: string\n                                                                      values:\n                                                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                        type: array\n                                                                        items:\n                                                                          type: string\n                                                                matchLabels:\n                                                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                                  type: object\n                                                                  additionalProperties:\n                                                                    type: string\n                                                              x-kubernetes-map-type: atomic\n                                                            namespaceSelector:\n                                                              description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                                                              type: object\n                                                              properties:\n                                                                matchExpressions:\n                                                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                                  type: array\n                                                                  items:\n                                                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                    type: object\n                                                                    required:\n                                                                      - key\n                                                                      - operator\n                                                                    properties:\n                                                                      key:\n                                                                        description: key is the label key that the selector applies to.\n                                                                        type: string\n                                                                      operator:\n                                                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                        type: string\n                                                                      values:\n                                                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                        type: array\n                                                                        items:\n                                                                          type: string\n                                                                matchLabels:\n                                                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                                  type: object\n                                                                  additionalProperties:\n                                                                    type: string\n                                                              x-kubernetes-map-type: atomic\n                                                            namespaces:\n                                                              description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                                              type: array\n                                                              items:\n                                                                type: string\n                                                            topologyKey:\n                                                              description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                                                              type: string\n                                                        weight:\n                                                          description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.\n                                                          type: integer\n                                                          format: int32\n                                                  requiredDuringSchedulingIgnoredDuringExecution:\n                                                    description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n                                                    type: array\n                                                    items:\n                                                      description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running\n                                                      type: object\n                                                      required:\n                                                        - topologyKey\n                                                      properties:\n                                                        labelSelector:\n                                                          description: A label query over a set of resources, in this case pods.\n                                                          type: object\n                                                          properties:\n                                                            matchExpressions:\n                                                              description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                              type: array\n                                                              items:\n                                                                description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: key is the label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                    type: string\n                                                                  values:\n                                                                    description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                            matchLabels:\n                                                              description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                              type: object\n                                                              additionalProperties:\n                                                                type: string\n                                                          x-kubernetes-map-type: atomic\n                                                        namespaceSelector:\n                                                          description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                                                          type: object\n                                                          properties:\n                                                            matchExpressions:\n                                                              description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                              type: array\n                                                              items:\n                                                                description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: key is the label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                    type: string\n                                                                  values:\n                                                                    description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                            matchLabels:\n                                                              description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                              type: object\n                                                              additionalProperties:\n                                                                type: string\n                                                          x-kubernetes-map-type: atomic\n                                                        namespaces:\n                                                          description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                                          type: array\n                                                          items:\n                                                            type: string\n                                                        topologyKey:\n                                                          description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                                                          type: string\n                                              podAntiAffinity:\n                                                description: Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\n                                                type: object\n                                                properties:\n                                                  preferredDuringSchedulingIgnoredDuringExecution:\n                                                    description: The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n                                                    type: array\n                                                    items:\n                                                      description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\n                                                      type: object\n                                                      required:\n                                                        - podAffinityTerm\n                                                        - weight\n                                                      properties:\n                                                        podAffinityTerm:\n                                                          description: Required. A pod affinity term, associated with the corresponding weight.\n                                                          type: object\n                                                          required:\n                                                            - topologyKey\n                                                          properties:\n                                                            labelSelector:\n                                                              description: A label query over a set of resources, in this case pods.\n                                                              type: object\n                                                              properties:\n                                                                matchExpressions:\n                                                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                                  type: array\n                                                                  items:\n                                                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                    type: object\n                                                                    required:\n                                                                      - key\n                                                                      - operator\n                                                                    properties:\n                                                                      key:\n                                                                        description: key is the label key that the selector applies to.\n                                                                        type: string\n                                                                      operator:\n                                                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                        type: string\n                                                                      values:\n                                                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                        type: array\n                                                                        items:\n                                                                          type: string\n                                                                matchLabels:\n                                                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                                  type: object\n                                                                  additionalProperties:\n                                                                    type: string\n                                                              x-kubernetes-map-type: atomic\n                                                            namespaceSelector:\n                                                              description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                                                              type: object\n                                                              properties:\n                                                                matchExpressions:\n                                                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                                  type: array\n                                                                  items:\n                                                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                    type: object\n                                                                    required:\n                                                                      - key\n                                                                      - operator\n                                                                    properties:\n                                                                      key:\n                                                                        description: key is the label key that the selector applies to.\n                                                                        type: string\n                                                                      operator:\n                                                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                        type: string\n                                                                      values:\n                                                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                        type: array\n                                                                        items:\n                                                                          type: string\n                                                                matchLabels:\n                                                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                                  type: object\n                                                                  additionalProperties:\n                                                                    type: string\n                                                              x-kubernetes-map-type: atomic\n                                                            namespaces:\n                                                              description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                                              type: array\n                                                              items:\n                                                                type: string\n                                                            topologyKey:\n                                                              description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                                                              type: string\n                                                        weight:\n                                                          description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.\n                                                          type: integer\n                                                          format: int32\n                                                  requiredDuringSchedulingIgnoredDuringExecution:\n                                                    description: If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n                                                    type: array\n                                                    items:\n                                                      description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running\n                                                      type: object\n                                                      required:\n                                                        - topologyKey\n                                                      properties:\n                                                        labelSelector:\n                                                          description: A label query over a set of resources, in this case pods.\n                                                          type: object\n                                                          properties:\n                                                            matchExpressions:\n                                                              description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                              type: array\n                                                              items:\n                                                                description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: key is the label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                    type: string\n                                                                  values:\n                                                                    description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                            matchLabels:\n                                                              description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                              type: object\n                                                              additionalProperties:\n                                                                type: string\n                                                          x-kubernetes-map-type: atomic\n                                                        namespaceSelector:\n                                                          description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                                                          type: object\n                                                          properties:\n                                                            matchExpressions:\n                                                              description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                              type: array\n                                                              items:\n                                                                description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: key is the label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                    type: string\n                                                                  values:\n                                                                    description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                            matchLabels:\n                                                              description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                              type: object\n                                                              additionalProperties:\n                                                                type: string\n                                                          x-kubernetes-map-type: atomic\n                                                        namespaces:\n                                                          description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                                          type: array\n                                                          items:\n                                                            type: string\n                                                        topologyKey:\n                                                          description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                                                          type: string\n                                          imagePullSecrets:\n                                            description: If specified, the pod's imagePullSecrets\n                                            type: array\n                                            items:\n                                              description: LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.\n                                              type: object\n                                              properties:\n                                                name:\n                                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                                  type: string\n                                              x-kubernetes-map-type: atomic\n                                          nodeSelector:\n                                            description: 'NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node''s labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/'\n                                            type: object\n                                            additionalProperties:\n                                              type: string\n                                          priorityClassName:\n                                            description: If specified, the pod's priorityClassName.\n                                            type: string\n                                          serviceAccountName:\n                                            description: If specified, the pod's service account\n                                            type: string\n                                          tolerations:\n                                            description: If specified, the pod's tolerations.\n                                            type: array\n                                            items:\n                                              description: The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.\n                                              type: object\n                                              properties:\n                                                effect:\n                                                  description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\n                                                  type: string\n                                                key:\n                                                  description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.\n                                                  type: string\n                                                operator:\n                                                  description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.\n                                                  type: string\n                                                tolerationSeconds:\n                                                  description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.\n                                                  type: integer\n                                                  format: int64\n                                                value:\n                                                  description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.\n                                                  type: string\n                                  serviceType:\n                                    description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP. If unset, defaults to NodePort.\n                                    type: string\n                          selector:\n                            description: Selector selects a set of DNSNames on the Certificate resource that should be solved using this challenge solver. If not specified, the solver will be treated as the 'default' solver with the lowest priority, i.e. if any other solver has a more specific match, it will be used instead.\n                            type: object\n                            properties:\n                              dnsNames:\n                                description: List of DNSNames that this solver will be used to solve. If specified and a match is found, a dnsNames selector will take precedence over a dnsZones selector. If multiple solvers match with the same dnsNames value, the solver with the most matching labels in matchLabels will be selected. If neither has more matches, the solver defined earlier in the list will be selected.\n                                type: array\n                                items:\n                                  type: string\n                              dnsZones:\n                                description: List of DNSZones that this solver will be used to solve. The most specific DNS zone match specified here will take precedence over other DNS zone matches, so a solver specifying sys.example.com will be selected over one specifying example.com for the domain www.sys.example.com. If multiple solvers match with the same dnsZones value, the solver with the most matching labels in matchLabels will be selected. If neither has more matches, the solver defined earlier in the list will be selected.\n                                type: array\n                                items:\n                                  type: string\n                              matchLabels:\n                                description: A label selector that is used to refine the set of certificate's that this challenge solver will apply to.\n                                type: object\n                                additionalProperties:\n                                  type: string\n                ca:\n                  description: CA configures this issuer to sign certificates using a signing CA keypair stored in a Secret resource. This is used to build internal PKIs that are managed by cert-manager.\n                  type: object\n                  required:\n                    - secretName\n                  properties:\n                    crlDistributionPoints:\n                      description: The CRL distribution points is an X.509 v3 certificate extension which identifies the location of the CRL from which the revocation of this certificate can be checked. If not set, certificates will be issued without distribution points set.\n                      type: array\n                      items:\n                        type: string\n                    ocspServers:\n                      description: The OCSP server list is an X.509 v3 extension that defines a list of URLs of OCSP responders. The OCSP responders can be queried for the revocation status of an issued certificate. If not set, the certificate will be issued with no OCSP servers set. For example, an OCSP server URL could be \"http://ocsp.int-x3.letsencrypt.org\".\n                      type: array\n                      items:\n                        type: string\n                    secretName:\n                      description: SecretName is the name of the secret used to sign Certificates issued by this Issuer.\n                      type: string\n                selfSigned:\n                  description: SelfSigned configures this issuer to 'self sign' certificates using the private key used to create the CertificateRequest object.\n                  type: object\n                  properties:\n                    crlDistributionPoints:\n                      description: The CRL distribution points is an X.509 v3 certificate extension which identifies the location of the CRL from which the revocation of this certificate can be checked. If not set certificate will be issued without CDP. Values are strings.\n                      type: array\n                      items:\n                        type: string\n                vault:\n                  description: Vault configures this issuer to sign certificates using a HashiCorp Vault PKI backend.\n                  type: object\n                  required:\n                    - auth\n                    - path\n                    - server\n                  properties:\n                    auth:\n                      description: Auth configures how cert-manager authenticates with the Vault server.\n                      type: object\n                      properties:\n                        appRole:\n                          description: AppRole authenticates with Vault using the App Role auth mechanism, with the role and secret stored in a Kubernetes Secret resource.\n                          type: object\n                          required:\n                            - path\n                            - roleId\n                            - secretRef\n                          properties:\n                            path:\n                              description: 'Path where the App Role authentication backend is mounted in Vault, e.g: \"approle\"'\n                              type: string\n                            roleId:\n                              description: RoleID configured in the App Role authentication backend when setting up the authentication backend in Vault.\n                              type: string\n                            secretRef:\n                              description: Reference to a key in a Secret that contains the App Role secret used to authenticate with Vault. The `key` field must be specified and denotes which entry within the Secret resource is used as the app role secret.\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                        kubernetes:\n                          description: Kubernetes authenticates with Vault by passing the ServiceAccount token stored in the named Secret resource to the Vault server.\n                          type: object\n                          required:\n                            - role\n                          properties:\n                            mountPath:\n                              description: The Vault mountPath here is the mount path to use when authenticating with Vault. For example, setting a value to `/v1/auth/foo`, will use the path `/v1/auth/foo/login` to authenticate with Vault. If unspecified, the default value \"/v1/auth/kubernetes\" will be used.\n                              type: string\n                            role:\n                              description: A required field containing the Vault Role to assume. A Role binds a Kubernetes ServiceAccount with a set of Vault policies.\n                              type: string\n                            secretRef:\n                              description: The required Secret field containing a Kubernetes ServiceAccount JWT used for authenticating with Vault. Use of 'ambient credentials' is not supported.\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                            serviceAccountRef:\n                              description: A reference to a service account that will be used to request a bound token (also known as \"projected token\"). Compared to using \"secretRef\", using this field means that you don't rely on statically bound tokens. To use this field, you must configure an RBAC rule to let cert-manager request a token.\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                name:\n                                  description: Name of the ServiceAccount used to request a token.\n                                  type: string\n                        tokenSecretRef:\n                          description: TokenSecretRef authenticates with Vault by presenting a token.\n                          type: object\n                          required:\n                            - name\n                          properties:\n                            key:\n                              description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                              type: string\n                            name:\n                              description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                              type: string\n                    caBundle:\n                      description: Base64-encoded bundle of PEM CAs which will be used to validate the certificate chain presented by Vault. Only used if using HTTPS to connect to Vault and ignored for HTTP connections. Mutually exclusive with CABundleSecretRef. If neither CABundle nor CABundleSecretRef are defined, the certificate bundle in the cert-manager controller container is used to validate the TLS connection.\n                      type: string\n                      format: byte\n                    caBundleSecretRef:\n                      description: Reference to a Secret containing a bundle of PEM-encoded CAs to use when verifying the certificate chain presented by Vault when using HTTPS. Mutually exclusive with CABundle. If neither CABundle nor CABundleSecretRef are defined, the certificate bundle in the cert-manager controller container is used to validate the TLS connection. If no key for the Secret is specified, cert-manager will default to 'ca.crt'.\n                      type: object\n                      required:\n                        - name\n                      properties:\n                        key:\n                          description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                          type: string\n                        name:\n                          description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                          type: string\n                    namespace:\n                      description: 'Name of the vault namespace. Namespaces is a set of features within Vault Enterprise that allows Vault environments to support Secure Multi-tenancy. e.g: \"ns1\" More about namespaces can be found here https://www.vaultproject.io/docs/enterprise/namespaces'\n                      type: string\n                    path:\n                      description: 'Path is the mount path of the Vault PKI backend''s `sign` endpoint, e.g: \"my_pki_mount/sign/my-role-name\".'\n                      type: string\n                    server:\n                      description: 'Server is the connection address for the Vault server, e.g: \"https://vault.example.com:8200\".'\n                      type: string\n                venafi:\n                  description: Venafi configures this issuer to sign certificates using a Venafi TPP or Venafi Cloud policy zone.\n                  type: object\n                  required:\n                    - zone\n                  properties:\n                    cloud:\n                      description: Cloud specifies the Venafi cloud configuration settings. Only one of TPP or Cloud may be specified.\n                      type: object\n                      required:\n                        - apiTokenSecretRef\n                      properties:\n                        apiTokenSecretRef:\n                          description: APITokenSecretRef is a secret key selector for the Venafi Cloud API token.\n                          type: object\n                          required:\n                            - name\n                          properties:\n                            key:\n                              description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                              type: string\n                            name:\n                              description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                              type: string\n                        url:\n                          description: URL is the base URL for Venafi Cloud. Defaults to \"https://api.venafi.cloud/v1\".\n                          type: string\n                    tpp:\n                      description: TPP specifies Trust Protection Platform configuration settings. Only one of TPP or Cloud may be specified.\n                      type: object\n                      required:\n                        - credentialsRef\n                        - url\n                      properties:\n                        caBundle:\n                          description: Base64-encoded bundle of PEM CAs which will be used to validate the certificate chain presented by the TPP server. Only used if using HTTPS; ignored for HTTP. If undefined, the certificate bundle in the cert-manager controller container is used to validate the chain.\n                          type: string\n                          format: byte\n                        credentialsRef:\n                          description: CredentialsRef is a reference to a Secret containing the username and password for the TPP server. The secret must contain two keys, 'username' and 'password'.\n                          type: object\n                          required:\n                            - name\n                          properties:\n                            name:\n                              description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                              type: string\n                        url:\n                          description: 'URL is the base URL for the vedsdk endpoint of the Venafi TPP instance, for example: \"https://tpp.example.com/vedsdk\".'\n                          type: string\n                    zone:\n                      description: Zone is the Venafi Policy Zone to use for this issuer. All requests made to the Venafi platform will be restricted by the named zone policy. This field is required.\n                      type: string\n            status:\n              description: Status of the ClusterIssuer. This is set and managed automatically.\n              type: object\n              properties:\n                acme:\n                  description: ACME specific status options. This field should only be set if the Issuer is configured to use an ACME server to issue certificates.\n                  type: object\n                  properties:\n                    lastPrivateKeyHash:\n                      description: LastPrivateKeyHash is a hash of the private key associated with the latest registered ACME account, in order to track changes made to registered account associated with the Issuer\n                      type: string\n                    lastRegisteredEmail:\n                      description: LastRegisteredEmail is the email associated with the latest registered ACME account, in order to track changes made to registered account associated with the  Issuer\n                      type: string\n                    uri:\n                      description: URI is the unique account identifier, which can also be used to retrieve account details from the CA\n                      type: string\n                conditions:\n                  description: List of status conditions to indicate the status of a CertificateRequest. Known condition types are `Ready`.\n                  type: array\n                  items:\n                    description: IssuerCondition contains condition information for an Issuer.\n                    type: object\n                    required:\n                      - status\n                      - type\n                    properties:\n                      lastTransitionTime:\n                        description: LastTransitionTime is the timestamp corresponding to the last status change of this condition.\n                        type: string\n                        format: date-time\n                      message:\n                        description: Message is a human readable description of the details of the last transition, complementing reason.\n                        type: string\n                      observedGeneration:\n                        description: If set, this represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.condition[x].observedGeneration is 9, the condition is out of date with respect to the current state of the Issuer.\n                        type: integer\n                        format: int64\n                      reason:\n                        description: Reason is a brief machine readable explanation for the condition's last transition.\n                        type: string\n                      status:\n                        description: Status of the condition, one of (`True`, `False`, `Unknown`).\n                        type: string\n                        enum:\n                          - \"True\"\n                          - \"False\"\n                          - Unknown\n                      type:\n                        description: Type of the condition, known values are (`Ready`).\n                        type: string\n                  x-kubernetes-list-map-keys:\n                    - type\n                  x-kubernetes-list-type: map\n      served: true\n      storage: true\n---\n# Source: cert-manager/templates/crds.yaml\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  name: issuers.cert-manager.io\n  labels:\n    app: 'cert-manager'\n    app.kubernetes.io/name: 'cert-manager'\n    app.kubernetes.io/instance: \"cert-manager\"\n    # Generated labels\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\nspec:\n  group: cert-manager.io\n  names:\n    kind: Issuer\n    listKind: IssuerList\n    plural: issuers\n    singular: issuer\n    categories:\n      - cert-manager\n  scope: Namespaced\n  versions:\n    - name: v1\n      subresources:\n        status: {}\n      additionalPrinterColumns:\n        - jsonPath: .status.conditions[?(@.type==\"Ready\")].status\n          name: Ready\n          type: string\n        - jsonPath: .status.conditions[?(@.type==\"Ready\")].message\n          name: Status\n          priority: 1\n          type: string\n        - jsonPath: .metadata.creationTimestamp\n          description: CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n          name: Age\n          type: date\n      schema:\n        openAPIV3Schema:\n          description: An Issuer represents a certificate issuing authority which can be referenced as part of `issuerRef` fields. It is scoped to a single namespace and can therefore only be referenced by resources within the same namespace.\n          type: object\n          required:\n            - spec\n          properties:\n            apiVersion:\n              description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n              type: string\n            kind:\n              description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n              type: string\n            metadata:\n              type: object\n            spec:\n              description: Desired state of the Issuer resource.\n              type: object\n              properties:\n                acme:\n                  description: ACME configures this issuer to communicate with a RFC8555 (ACME) server to obtain signed x509 certificates.\n                  type: object\n                  required:\n                    - privateKeySecretRef\n                    - server\n                  properties:\n                    caBundle:\n                      description: Base64-encoded bundle of PEM CAs which can be used to validate the certificate chain presented by the ACME server. Mutually exclusive with SkipTLSVerify; prefer using CABundle to prevent various kinds of security vulnerabilities. If CABundle and SkipTLSVerify are unset, the system certificate bundle inside the container is used to validate the TLS connection.\n                      type: string\n                      format: byte\n                    disableAccountKeyGeneration:\n                      description: Enables or disables generating a new ACME account key. If true, the Issuer resource will *not* request a new account but will expect the account key to be supplied via an existing secret. If false, the cert-manager system will generate a new ACME account key for the Issuer. Defaults to false.\n                      type: boolean\n                    email:\n                      description: Email is the email address to be associated with the ACME account. This field is optional, but it is strongly recommended to be set. It will be used to contact you in case of issues with your account or certificates, including expiry notification emails. This field may be updated after the account is initially registered.\n                      type: string\n                    enableDurationFeature:\n                      description: Enables requesting a Not After date on certificates that matches the duration of the certificate. This is not supported by all ACME servers like Let's Encrypt. If set to true when the ACME server does not support it it will create an error on the Order. Defaults to false.\n                      type: boolean\n                    externalAccountBinding:\n                      description: ExternalAccountBinding is a reference to a CA external account of the ACME server. If set, upon registration cert-manager will attempt to associate the given external account credentials with the registered ACME account.\n                      type: object\n                      required:\n                        - keyID\n                        - keySecretRef\n                      properties:\n                        keyAlgorithm:\n                          description: 'Deprecated: keyAlgorithm field exists for historical compatibility reasons and should not be used. The algorithm is now hardcoded to HS256 in golang/x/crypto/acme.'\n                          type: string\n                          enum:\n                            - HS256\n                            - HS384\n                            - HS512\n                        keyID:\n                          description: keyID is the ID of the CA key that the External Account is bound to.\n                          type: string\n                        keySecretRef:\n                          description: keySecretRef is a Secret Key Selector referencing a data item in a Kubernetes Secret which holds the symmetric MAC key of the External Account Binding. The `key` is the index string that is paired with the key data in the Secret and should not be confused with the key data itself, or indeed with the External Account Binding keyID above. The secret key stored in the Secret **must** be un-padded, base64 URL encoded data.\n                          type: object\n                          required:\n                            - name\n                          properties:\n                            key:\n                              description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                              type: string\n                            name:\n                              description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                              type: string\n                    preferredChain:\n                      description: 'PreferredChain is the chain to use if the ACME server outputs multiple. PreferredChain is no guarantee that this one gets delivered by the ACME endpoint. For example, for Let''s Encrypt''s DST crosssign you would use: \"DST Root CA X3\" or \"ISRG Root X1\" for the newer Let''s Encrypt root CA. This value picks the first certificate bundle in the ACME alternative chains that has a certificate with this value as its issuer''s CN'\n                      type: string\n                      maxLength: 64\n                    privateKeySecretRef:\n                      description: PrivateKey is the name of a Kubernetes Secret resource that will be used to store the automatically generated ACME account private key. Optionally, a `key` may be specified to select a specific entry within the named Secret resource. If `key` is not specified, a default of `tls.key` will be used.\n                      type: object\n                      required:\n                        - name\n                      properties:\n                        key:\n                          description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                          type: string\n                        name:\n                          description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                          type: string\n                    server:\n                      description: 'Server is the URL used to access the ACME server''s ''directory'' endpoint. For example, for Let''s Encrypt''s staging endpoint, you would use: \"https://acme-staging-v02.api.letsencrypt.org/directory\". Only ACME v2 endpoints (i.e. RFC 8555) are supported.'\n                      type: string\n                    skipTLSVerify:\n                      description: 'INSECURE: Enables or disables validation of the ACME server TLS certificate. If true, requests to the ACME server will not have the TLS certificate chain validated. Mutually exclusive with CABundle; prefer using CABundle to prevent various kinds of security vulnerabilities. Only enable this option in development environments. If CABundle and SkipTLSVerify are unset, the system certificate bundle inside the container is used to validate the TLS connection. Defaults to false.'\n                      type: boolean\n                    solvers:\n                      description: 'Solvers is a list of challenge solvers that will be used to solve ACME challenges for the matching domains. Solver configurations must be provided in order to obtain certificates from an ACME server. For more information, see: https://cert-manager.io/docs/configuration/acme/'\n                      type: array\n                      items:\n                        description: An ACMEChallengeSolver describes how to solve ACME challenges for the issuer it is part of. A selector may be provided to use different solving strategies for different DNS names. Only one of HTTP01 or DNS01 must be provided.\n                        type: object\n                        properties:\n                          dns01:\n                            description: Configures cert-manager to attempt to complete authorizations by performing the DNS01 challenge flow.\n                            type: object\n                            properties:\n                              acmeDNS:\n                                description: Use the 'ACME DNS' (https://github.com/joohoi/acme-dns) API to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - accountSecretRef\n                                  - host\n                                properties:\n                                  accountSecretRef:\n                                    description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  host:\n                                    type: string\n                              akamai:\n                                description: Use the Akamai DNS zone management API to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - accessTokenSecretRef\n                                  - clientSecretSecretRef\n                                  - clientTokenSecretRef\n                                  - serviceConsumerDomain\n                                properties:\n                                  accessTokenSecretRef:\n                                    description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  clientSecretSecretRef:\n                                    description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  clientTokenSecretRef:\n                                    description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  serviceConsumerDomain:\n                                    type: string\n                              azureDNS:\n                                description: Use the Microsoft Azure DNS API to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - resourceGroupName\n                                  - subscriptionID\n                                properties:\n                                  clientID:\n                                    description: if both this and ClientSecret are left unset MSI will be used\n                                    type: string\n                                  clientSecretSecretRef:\n                                    description: if both this and ClientID are left unset MSI will be used\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  environment:\n                                    description: name of the Azure environment (default AzurePublicCloud)\n                                    type: string\n                                    enum:\n                                      - AzurePublicCloud\n                                      - AzureChinaCloud\n                                      - AzureGermanCloud\n                                      - AzureUSGovernmentCloud\n                                  hostedZoneName:\n                                    description: name of the DNS zone that should be used\n                                    type: string\n                                  managedIdentity:\n                                    description: managed identity configuration, can not be used at the same time as clientID, clientSecretSecretRef or tenantID\n                                    type: object\n                                    properties:\n                                      clientID:\n                                        description: client ID of the managed identity, can not be used at the same time as resourceID\n                                        type: string\n                                      resourceID:\n                                        description: resource ID of the managed identity, can not be used at the same time as clientID\n                                        type: string\n                                  resourceGroupName:\n                                    description: resource group the DNS zone is located in\n                                    type: string\n                                  subscriptionID:\n                                    description: ID of the Azure subscription\n                                    type: string\n                                  tenantID:\n                                    description: when specifying ClientID and ClientSecret then this field is also needed\n                                    type: string\n                              cloudDNS:\n                                description: Use the Google Cloud DNS API to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - project\n                                properties:\n                                  hostedZoneName:\n                                    description: HostedZoneName is an optional field that tells cert-manager in which Cloud DNS zone the challenge record has to be created. If left empty cert-manager will automatically choose a zone.\n                                    type: string\n                                  project:\n                                    type: string\n                                  serviceAccountSecretRef:\n                                    description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                              cloudflare:\n                                description: Use the Cloudflare API to manage DNS01 challenge records.\n                                type: object\n                                properties:\n                                  apiKeySecretRef:\n                                    description: 'API key to use to authenticate with Cloudflare. Note: using an API token to authenticate is now the recommended method as it allows greater control of permissions.'\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  apiTokenSecretRef:\n                                    description: API token used to authenticate with Cloudflare.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  email:\n                                    description: Email of the account, only required when using API key based authentication.\n                                    type: string\n                              cnameStrategy:\n                                description: CNAMEStrategy configures how the DNS01 provider should handle CNAME records when found in DNS zones.\n                                type: string\n                                enum:\n                                  - None\n                                  - Follow\n                              digitalocean:\n                                description: Use the DigitalOcean DNS API to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - tokenSecretRef\n                                properties:\n                                  tokenSecretRef:\n                                    description: A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                              rfc2136:\n                                description: Use RFC2136 (\"Dynamic Updates in the Domain Name System\") (https://datatracker.ietf.org/doc/rfc2136/) to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - nameserver\n                                properties:\n                                  nameserver:\n                                    description: The IP address or hostname of an authoritative DNS server supporting RFC2136 in the form host:port. If the host is an IPv6 address it must be enclosed in square brackets (e.g [2001:db8::1]) ; port is optional. This field is required.\n                                    type: string\n                                  tsigAlgorithm:\n                                    description: 'The TSIG Algorithm configured in the DNS supporting RFC2136. Used only when ``tsigSecretSecretRef`` and ``tsigKeyName`` are defined. Supported values are (case-insensitive): ``HMACMD5`` (default), ``HMACSHA1``, ``HMACSHA256`` or ``HMACSHA512``.'\n                                    type: string\n                                  tsigKeyName:\n                                    description: The TSIG Key name configured in the DNS. If ``tsigSecretSecretRef`` is defined, this field is required.\n                                    type: string\n                                  tsigSecretSecretRef:\n                                    description: The name of the secret containing the TSIG value. If ``tsigKeyName`` is defined, this field is required.\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                              route53:\n                                description: Use the AWS Route53 API to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - region\n                                properties:\n                                  accessKeyID:\n                                    description: 'The AccessKeyID is used for authentication. Cannot be set when SecretAccessKeyID is set. If neither the Access Key nor Key ID are set, we fall-back to using env vars, shared credentials file or AWS Instance metadata, see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials'\n                                    type: string\n                                  accessKeyIDSecretRef:\n                                    description: 'The SecretAccessKey is used for authentication. If set, pull the AWS access key ID from a key within a Kubernetes Secret. Cannot be set when AccessKeyID is set. If neither the Access Key nor Key ID are set, we fall-back to using env vars, shared credentials file or AWS Instance metadata, see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials'\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                                  hostedZoneID:\n                                    description: If set, the provider will manage only this zone in Route53 and will not do an lookup using the route53:ListHostedZonesByName api call.\n                                    type: string\n                                  region:\n                                    description: Always set the region when using AccessKeyID and SecretAccessKey\n                                    type: string\n                                  role:\n                                    description: Role is a Role ARN which the Route53 provider will assume using either the explicit credentials AccessKeyID/SecretAccessKey or the inferred credentials from environment variables, shared credentials file or AWS Instance metadata\n                                    type: string\n                                  secretAccessKeySecretRef:\n                                    description: 'The SecretAccessKey is used for authentication. If neither the Access Key nor Key ID are set, we fall-back to using env vars, shared credentials file or AWS Instance metadata, see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials'\n                                    type: object\n                                    required:\n                                      - name\n                                    properties:\n                                      key:\n                                        description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                        type: string\n                                      name:\n                                        description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                        type: string\n                              webhook:\n                                description: Configure an external webhook based DNS01 challenge solver to manage DNS01 challenge records.\n                                type: object\n                                required:\n                                  - groupName\n                                  - solverName\n                                properties:\n                                  config:\n                                    description: Additional configuration that should be passed to the webhook apiserver when challenges are processed. This can contain arbitrary JSON data. Secret values should not be specified in this stanza. If secret values are needed (e.g. credentials for a DNS service), you should use a SecretKeySelector to reference a Secret resource. For details on the schema of this field, consult the webhook provider implementation's documentation.\n                                    x-kubernetes-preserve-unknown-fields: true\n                                  groupName:\n                                    description: The API group name that should be used when POSTing ChallengePayload resources to the webhook apiserver. This should be the same as the GroupName specified in the webhook provider implementation.\n                                    type: string\n                                  solverName:\n                                    description: The name of the solver to use, as defined in the webhook provider implementation. This will typically be the name of the provider, e.g. 'cloudflare'.\n                                    type: string\n                          http01:\n                            description: Configures cert-manager to attempt to complete authorizations by performing the HTTP01 challenge flow. It is not possible to obtain certificates for wildcard domain names (e.g. `*.example.com`) using the HTTP01 challenge mechanism.\n                            type: object\n                            properties:\n                              gatewayHTTPRoute:\n                                description: The Gateway API is a sig-network community API that models service networking in Kubernetes (https://gateway-api.sigs.k8s.io/). The Gateway solver will create HTTPRoutes with the specified labels in the same namespace as the challenge. This solver is experimental, and fields / behaviour may change in the future.\n                                type: object\n                                properties:\n                                  labels:\n                                    description: Custom labels that will be applied to HTTPRoutes created by cert-manager while solving HTTP-01 challenges.\n                                    type: object\n                                    additionalProperties:\n                                      type: string\n                                  parentRefs:\n                                    description: 'When solving an HTTP-01 challenge, cert-manager creates an HTTPRoute. cert-manager needs to know which parentRefs should be used when creating the HTTPRoute. Usually, the parentRef references a Gateway. See: https://gateway-api.sigs.k8s.io/api-types/httproute/#attaching-to-gateways'\n                                    type: array\n                                    items:\n                                      description: \"ParentReference identifies an API object (usually a Gateway) that can be considered a parent of this resource (usually a route). The only kind of parent resource with \\\"Core\\\" support is Gateway. This API may be extended in the future to support additional kinds of parent resources, such as HTTPRoute. \\n The API object must be valid in the cluster; the Group and Kind must be registered in the cluster for this reference to be valid.\"\n                                      type: object\n                                      required:\n                                        - name\n                                      properties:\n                                        group:\n                                          description: \"Group is the group of the referent. When unspecified, \\\"gateway.networking.k8s.io\\\" is inferred. To set the core API group (such as for a \\\"Service\\\" kind referent), Group must be explicitly set to \\\"\\\" (empty string). \\n Support: Core\"\n                                          type: string\n                                          default: gateway.networking.k8s.io\n                                          maxLength: 253\n                                          pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$\n                                        kind:\n                                          description: \"Kind is kind of the referent. \\n Support: Core (Gateway) \\n Support: Implementation-specific (Other Resources)\"\n                                          type: string\n                                          default: Gateway\n                                          maxLength: 63\n                                          minLength: 1\n                                          pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$\n                                        name:\n                                          description: \"Name is the name of the referent. \\n Support: Core\"\n                                          type: string\n                                          maxLength: 253\n                                          minLength: 1\n                                        namespace:\n                                          description: \"Namespace is the namespace of the referent. When unspecified, this refers to the local namespace of the Route. \\n Note that there are specific rules for ParentRefs which cross namespace boundaries. Cross-namespace references are only valid if they are explicitly allowed by something in the namespace they are referring to. For example: Gateway has the AllowedRoutes field, and ReferenceGrant provides a generic way to enable any other kind of cross-namespace reference. \\n Support: Core\"\n                                          type: string\n                                          maxLength: 63\n                                          minLength: 1\n                                          pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$\n                                        port:\n                                          description: \"Port is the network port this Route targets. It can be interpreted differently based on the type of parent resource. \\n When the parent resource is a Gateway, this targets all listeners listening on the specified port that also support this kind of Route(and select this Route). It's not recommended to set `Port` unless the networking behaviors specified in a Route must apply to a specific port as opposed to a listener(s) whose port(s) may be changed. When both Port and SectionName are specified, the name and port of the selected listener must match both specified values. \\n Implementations MAY choose to support other parent resources. Implementations supporting other types of parent resources MUST clearly document how/if Port is interpreted. \\n For the purpose of status, an attachment is considered successful as long as the parent resource accepts it partially. For example, Gateway listeners can restrict which Routes can attach to them by Route kind, namespace, or hostname. If 1 of 2 Gateway listeners accept attachment from the referencing Route, the Route MUST be considered successfully attached. If no Gateway listeners accept attachment from this Route, the Route MUST be considered detached from the Gateway. \\n Support: Extended \\n <gateway:experimental>\"\n                                          type: integer\n                                          format: int32\n                                          maximum: 65535\n                                          minimum: 1\n                                        sectionName:\n                                          description: \"SectionName is the name of a section within the target resource. In the following resources, SectionName is interpreted as the following: \\n * Gateway: Listener Name. When both Port (experimental) and SectionName are specified, the name and port of the selected listener must match both specified values. \\n Implementations MAY choose to support attaching Routes to other resources. If that is the case, they MUST clearly document how SectionName is interpreted. \\n When unspecified (empty string), this will reference the entire resource. For the purpose of status, an attachment is considered successful if at least one section in the parent resource accepts it. For example, Gateway listeners can restrict which Routes can attach to them by Route kind, namespace, or hostname. If 1 of 2 Gateway listeners accept attachment from the referencing Route, the Route MUST be considered successfully attached. If no Gateway listeners accept attachment from this Route, the Route MUST be considered detached from the Gateway. \\n Support: Core\"\n                                          type: string\n                                          maxLength: 253\n                                          minLength: 1\n                                          pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$\n                                  serviceType:\n                                    description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP. If unset, defaults to NodePort.\n                                    type: string\n                              ingress:\n                                description: The ingress based HTTP01 challenge solver will solve challenges by creating or modifying Ingress resources in order to route requests for '/.well-known/acme-challenge/XYZ' to 'challenge solver' pods that are provisioned by cert-manager for each Challenge to be completed.\n                                type: object\n                                properties:\n                                  class:\n                                    description: This field configures the annotation `kubernetes.io/ingress.class` when creating Ingress resources to solve ACME challenges that use this challenge solver. Only one of `class`, `name` or `ingressClassName` may be specified.\n                                    type: string\n                                  ingressClassName:\n                                    description: This field configures the field `ingressClassName` on the created Ingress resources used to solve ACME challenges that use this challenge solver. This is the recommended way of configuring the ingress class. Only one of `class`, `name` or `ingressClassName` may be specified.\n                                    type: string\n                                  ingressTemplate:\n                                    description: Optional ingress template used to configure the ACME challenge solver ingress used for HTTP01 challenges.\n                                    type: object\n                                    properties:\n                                      metadata:\n                                        description: ObjectMeta overrides for the ingress used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.\n                                        type: object\n                                        properties:\n                                          annotations:\n                                            description: Annotations that should be added to the created ACME HTTP01 solver ingress.\n                                            type: object\n                                            additionalProperties:\n                                              type: string\n                                          labels:\n                                            description: Labels that should be added to the created ACME HTTP01 solver ingress.\n                                            type: object\n                                            additionalProperties:\n                                              type: string\n                                  name:\n                                    description: The name of the ingress resource that should have ACME challenge solving routes inserted into it in order to solve HTTP01 challenges. This is typically used in conjunction with ingress controllers like ingress-gce, which maintains a 1:1 mapping between external IPs and ingress resources. Only one of `class`, `name` or `ingressClassName` may be specified.\n                                    type: string\n                                  podTemplate:\n                                    description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges.\n                                    type: object\n                                    properties:\n                                      metadata:\n                                        description: ObjectMeta overrides for the pod used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.\n                                        type: object\n                                        properties:\n                                          annotations:\n                                            description: Annotations that should be added to the create ACME HTTP01 solver pods.\n                                            type: object\n                                            additionalProperties:\n                                              type: string\n                                          labels:\n                                            description: Labels that should be added to the created ACME HTTP01 solver pods.\n                                            type: object\n                                            additionalProperties:\n                                              type: string\n                                      spec:\n                                        description: PodSpec defines overrides for the HTTP01 challenge solver pod. Check ACMEChallengeSolverHTTP01IngressPodSpec to find out currently supported fields. All other fields will be ignored.\n                                        type: object\n                                        properties:\n                                          affinity:\n                                            description: If specified, the pod's scheduling constraints\n                                            type: object\n                                            properties:\n                                              nodeAffinity:\n                                                description: Describes node affinity scheduling rules for the pod.\n                                                type: object\n                                                properties:\n                                                  preferredDuringSchedulingIgnoredDuringExecution:\n                                                    description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n                                                    type: array\n                                                    items:\n                                                      description: An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\n                                                      type: object\n                                                      required:\n                                                        - preference\n                                                        - weight\n                                                      properties:\n                                                        preference:\n                                                          description: A node selector term, associated with the corresponding weight.\n                                                          type: object\n                                                          properties:\n                                                            matchExpressions:\n                                                              description: A list of node selector requirements by node's labels.\n                                                              type: array\n                                                              items:\n                                                                description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: The label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                                    type: string\n                                                                  values:\n                                                                    description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                            matchFields:\n                                                              description: A list of node selector requirements by node's fields.\n                                                              type: array\n                                                              items:\n                                                                description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: The label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                                    type: string\n                                                                  values:\n                                                                    description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                          x-kubernetes-map-type: atomic\n                                                        weight:\n                                                          description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\n                                                          type: integer\n                                                          format: int32\n                                                  requiredDuringSchedulingIgnoredDuringExecution:\n                                                    description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.\n                                                    type: object\n                                                    required:\n                                                      - nodeSelectorTerms\n                                                    properties:\n                                                      nodeSelectorTerms:\n                                                        description: Required. A list of node selector terms. The terms are ORed.\n                                                        type: array\n                                                        items:\n                                                          description: A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\n                                                          type: object\n                                                          properties:\n                                                            matchExpressions:\n                                                              description: A list of node selector requirements by node's labels.\n                                                              type: array\n                                                              items:\n                                                                description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: The label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                                    type: string\n                                                                  values:\n                                                                    description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                            matchFields:\n                                                              description: A list of node selector requirements by node's fields.\n                                                              type: array\n                                                              items:\n                                                                description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: The label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                                                    type: string\n                                                                  values:\n                                                                    description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                          x-kubernetes-map-type: atomic\n                                                    x-kubernetes-map-type: atomic\n                                              podAffinity:\n                                                description: Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\n                                                type: object\n                                                properties:\n                                                  preferredDuringSchedulingIgnoredDuringExecution:\n                                                    description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n                                                    type: array\n                                                    items:\n                                                      description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\n                                                      type: object\n                                                      required:\n                                                        - podAffinityTerm\n                                                        - weight\n                                                      properties:\n                                                        podAffinityTerm:\n                                                          description: Required. A pod affinity term, associated with the corresponding weight.\n                                                          type: object\n                                                          required:\n                                                            - topologyKey\n                                                          properties:\n                                                            labelSelector:\n                                                              description: A label query over a set of resources, in this case pods.\n                                                              type: object\n                                                              properties:\n                                                                matchExpressions:\n                                                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                                  type: array\n                                                                  items:\n                                                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                    type: object\n                                                                    required:\n                                                                      - key\n                                                                      - operator\n                                                                    properties:\n                                                                      key:\n                                                                        description: key is the label key that the selector applies to.\n                                                                        type: string\n                                                                      operator:\n                                                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                        type: string\n                                                                      values:\n                                                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                        type: array\n                                                                        items:\n                                                                          type: string\n                                                                matchLabels:\n                                                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                                  type: object\n                                                                  additionalProperties:\n                                                                    type: string\n                                                              x-kubernetes-map-type: atomic\n                                                            namespaceSelector:\n                                                              description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                                                              type: object\n                                                              properties:\n                                                                matchExpressions:\n                                                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                                  type: array\n                                                                  items:\n                                                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                    type: object\n                                                                    required:\n                                                                      - key\n                                                                      - operator\n                                                                    properties:\n                                                                      key:\n                                                                        description: key is the label key that the selector applies to.\n                                                                        type: string\n                                                                      operator:\n                                                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                        type: string\n                                                                      values:\n                                                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                        type: array\n                                                                        items:\n                                                                          type: string\n                                                                matchLabels:\n                                                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                                  type: object\n                                                                  additionalProperties:\n                                                                    type: string\n                                                              x-kubernetes-map-type: atomic\n                                                            namespaces:\n                                                              description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                                              type: array\n                                                              items:\n                                                                type: string\n                                                            topologyKey:\n                                                              description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                                                              type: string\n                                                        weight:\n                                                          description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.\n                                                          type: integer\n                                                          format: int32\n                                                  requiredDuringSchedulingIgnoredDuringExecution:\n                                                    description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n                                                    type: array\n                                                    items:\n                                                      description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running\n                                                      type: object\n                                                      required:\n                                                        - topologyKey\n                                                      properties:\n                                                        labelSelector:\n                                                          description: A label query over a set of resources, in this case pods.\n                                                          type: object\n                                                          properties:\n                                                            matchExpressions:\n                                                              description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                              type: array\n                                                              items:\n                                                                description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: key is the label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                    type: string\n                                                                  values:\n                                                                    description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                            matchLabels:\n                                                              description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                              type: object\n                                                              additionalProperties:\n                                                                type: string\n                                                          x-kubernetes-map-type: atomic\n                                                        namespaceSelector:\n                                                          description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                                                          type: object\n                                                          properties:\n                                                            matchExpressions:\n                                                              description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                              type: array\n                                                              items:\n                                                                description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: key is the label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                    type: string\n                                                                  values:\n                                                                    description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                            matchLabels:\n                                                              description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                              type: object\n                                                              additionalProperties:\n                                                                type: string\n                                                          x-kubernetes-map-type: atomic\n                                                        namespaces:\n                                                          description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                                          type: array\n                                                          items:\n                                                            type: string\n                                                        topologyKey:\n                                                          description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                                                          type: string\n                                              podAntiAffinity:\n                                                description: Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\n                                                type: object\n                                                properties:\n                                                  preferredDuringSchedulingIgnoredDuringExecution:\n                                                    description: The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n                                                    type: array\n                                                    items:\n                                                      description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\n                                                      type: object\n                                                      required:\n                                                        - podAffinityTerm\n                                                        - weight\n                                                      properties:\n                                                        podAffinityTerm:\n                                                          description: Required. A pod affinity term, associated with the corresponding weight.\n                                                          type: object\n                                                          required:\n                                                            - topologyKey\n                                                          properties:\n                                                            labelSelector:\n                                                              description: A label query over a set of resources, in this case pods.\n                                                              type: object\n                                                              properties:\n                                                                matchExpressions:\n                                                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                                  type: array\n                                                                  items:\n                                                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                    type: object\n                                                                    required:\n                                                                      - key\n                                                                      - operator\n                                                                    properties:\n                                                                      key:\n                                                                        description: key is the label key that the selector applies to.\n                                                                        type: string\n                                                                      operator:\n                                                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                        type: string\n                                                                      values:\n                                                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                        type: array\n                                                                        items:\n                                                                          type: string\n                                                                matchLabels:\n                                                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                                  type: object\n                                                                  additionalProperties:\n                                                                    type: string\n                                                              x-kubernetes-map-type: atomic\n                                                            namespaceSelector:\n                                                              description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                                                              type: object\n                                                              properties:\n                                                                matchExpressions:\n                                                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                                  type: array\n                                                                  items:\n                                                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                    type: object\n                                                                    required:\n                                                                      - key\n                                                                      - operator\n                                                                    properties:\n                                                                      key:\n                                                                        description: key is the label key that the selector applies to.\n                                                                        type: string\n                                                                      operator:\n                                                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                        type: string\n                                                                      values:\n                                                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                        type: array\n                                                                        items:\n                                                                          type: string\n                                                                matchLabels:\n                                                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                                  type: object\n                                                                  additionalProperties:\n                                                                    type: string\n                                                              x-kubernetes-map-type: atomic\n                                                            namespaces:\n                                                              description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                                              type: array\n                                                              items:\n                                                                type: string\n                                                            topologyKey:\n                                                              description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                                                              type: string\n                                                        weight:\n                                                          description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.\n                                                          type: integer\n                                                          format: int32\n                                                  requiredDuringSchedulingIgnoredDuringExecution:\n                                                    description: If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n                                                    type: array\n                                                    items:\n                                                      description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running\n                                                      type: object\n                                                      required:\n                                                        - topologyKey\n                                                      properties:\n                                                        labelSelector:\n                                                          description: A label query over a set of resources, in this case pods.\n                                                          type: object\n                                                          properties:\n                                                            matchExpressions:\n                                                              description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                              type: array\n                                                              items:\n                                                                description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: key is the label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                    type: string\n                                                                  values:\n                                                                    description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                            matchLabels:\n                                                              description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                              type: object\n                                                              additionalProperties:\n                                                                type: string\n                                                          x-kubernetes-map-type: atomic\n                                                        namespaceSelector:\n                                                          description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                                                          type: object\n                                                          properties:\n                                                            matchExpressions:\n                                                              description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                                              type: array\n                                                              items:\n                                                                description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                                                type: object\n                                                                required:\n                                                                  - key\n                                                                  - operator\n                                                                properties:\n                                                                  key:\n                                                                    description: key is the label key that the selector applies to.\n                                                                    type: string\n                                                                  operator:\n                                                                    description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                                                    type: string\n                                                                  values:\n                                                                    description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                                                    type: array\n                                                                    items:\n                                                                      type: string\n                                                            matchLabels:\n                                                              description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                                              type: object\n                                                              additionalProperties:\n                                                                type: string\n                                                          x-kubernetes-map-type: atomic\n                                                        namespaces:\n                                                          description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                                          type: array\n                                                          items:\n                                                            type: string\n                                                        topologyKey:\n                                                          description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                                                          type: string\n                                          imagePullSecrets:\n                                            description: If specified, the pod's imagePullSecrets\n                                            type: array\n                                            items:\n                                              description: LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.\n                                              type: object\n                                              properties:\n                                                name:\n                                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                                  type: string\n                                              x-kubernetes-map-type: atomic\n                                          nodeSelector:\n                                            description: 'NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node''s labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/'\n                                            type: object\n                                            additionalProperties:\n                                              type: string\n                                          priorityClassName:\n                                            description: If specified, the pod's priorityClassName.\n                                            type: string\n                                          serviceAccountName:\n                                            description: If specified, the pod's service account\n                                            type: string\n                                          tolerations:\n                                            description: If specified, the pod's tolerations.\n                                            type: array\n                                            items:\n                                              description: The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.\n                                              type: object\n                                              properties:\n                                                effect:\n                                                  description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\n                                                  type: string\n                                                key:\n                                                  description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.\n                                                  type: string\n                                                operator:\n                                                  description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.\n                                                  type: string\n                                                tolerationSeconds:\n                                                  description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.\n                                                  type: integer\n                                                  format: int64\n                                                value:\n                                                  description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.\n                                                  type: string\n                                  serviceType:\n                                    description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP. If unset, defaults to NodePort.\n                                    type: string\n                          selector:\n                            description: Selector selects a set of DNSNames on the Certificate resource that should be solved using this challenge solver. If not specified, the solver will be treated as the 'default' solver with the lowest priority, i.e. if any other solver has a more specific match, it will be used instead.\n                            type: object\n                            properties:\n                              dnsNames:\n                                description: List of DNSNames that this solver will be used to solve. If specified and a match is found, a dnsNames selector will take precedence over a dnsZones selector. If multiple solvers match with the same dnsNames value, the solver with the most matching labels in matchLabels will be selected. If neither has more matches, the solver defined earlier in the list will be selected.\n                                type: array\n                                items:\n                                  type: string\n                              dnsZones:\n                                description: List of DNSZones that this solver will be used to solve. The most specific DNS zone match specified here will take precedence over other DNS zone matches, so a solver specifying sys.example.com will be selected over one specifying example.com for the domain www.sys.example.com. If multiple solvers match with the same dnsZones value, the solver with the most matching labels in matchLabels will be selected. If neither has more matches, the solver defined earlier in the list will be selected.\n                                type: array\n                                items:\n                                  type: string\n                              matchLabels:\n                                description: A label selector that is used to refine the set of certificate's that this challenge solver will apply to.\n                                type: object\n                                additionalProperties:\n                                  type: string\n                ca:\n                  description: CA configures this issuer to sign certificates using a signing CA keypair stored in a Secret resource. This is used to build internal PKIs that are managed by cert-manager.\n                  type: object\n                  required:\n                    - secretName\n                  properties:\n                    crlDistributionPoints:\n                      description: The CRL distribution points is an X.509 v3 certificate extension which identifies the location of the CRL from which the revocation of this certificate can be checked. If not set, certificates will be issued without distribution points set.\n                      type: array\n                      items:\n                        type: string\n                    ocspServers:\n                      description: The OCSP server list is an X.509 v3 extension that defines a list of URLs of OCSP responders. The OCSP responders can be queried for the revocation status of an issued certificate. If not set, the certificate will be issued with no OCSP servers set. For example, an OCSP server URL could be \"http://ocsp.int-x3.letsencrypt.org\".\n                      type: array\n                      items:\n                        type: string\n                    secretName:\n                      description: SecretName is the name of the secret used to sign Certificates issued by this Issuer.\n                      type: string\n                selfSigned:\n                  description: SelfSigned configures this issuer to 'self sign' certificates using the private key used to create the CertificateRequest object.\n                  type: object\n                  properties:\n                    crlDistributionPoints:\n                      description: The CRL distribution points is an X.509 v3 certificate extension which identifies the location of the CRL from which the revocation of this certificate can be checked. If not set certificate will be issued without CDP. Values are strings.\n                      type: array\n                      items:\n                        type: string\n                vault:\n                  description: Vault configures this issuer to sign certificates using a HashiCorp Vault PKI backend.\n                  type: object\n                  required:\n                    - auth\n                    - path\n                    - server\n                  properties:\n                    auth:\n                      description: Auth configures how cert-manager authenticates with the Vault server.\n                      type: object\n                      properties:\n                        appRole:\n                          description: AppRole authenticates with Vault using the App Role auth mechanism, with the role and secret stored in a Kubernetes Secret resource.\n                          type: object\n                          required:\n                            - path\n                            - roleId\n                            - secretRef\n                          properties:\n                            path:\n                              description: 'Path where the App Role authentication backend is mounted in Vault, e.g: \"approle\"'\n                              type: string\n                            roleId:\n                              description: RoleID configured in the App Role authentication backend when setting up the authentication backend in Vault.\n                              type: string\n                            secretRef:\n                              description: Reference to a key in a Secret that contains the App Role secret used to authenticate with Vault. The `key` field must be specified and denotes which entry within the Secret resource is used as the app role secret.\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                        kubernetes:\n                          description: Kubernetes authenticates with Vault by passing the ServiceAccount token stored in the named Secret resource to the Vault server.\n                          type: object\n                          required:\n                            - role\n                          properties:\n                            mountPath:\n                              description: The Vault mountPath here is the mount path to use when authenticating with Vault. For example, setting a value to `/v1/auth/foo`, will use the path `/v1/auth/foo/login` to authenticate with Vault. If unspecified, the default value \"/v1/auth/kubernetes\" will be used.\n                              type: string\n                            role:\n                              description: A required field containing the Vault Role to assume. A Role binds a Kubernetes ServiceAccount with a set of Vault policies.\n                              type: string\n                            secretRef:\n                              description: The required Secret field containing a Kubernetes ServiceAccount JWT used for authenticating with Vault. Use of 'ambient credentials' is not supported.\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                key:\n                                  description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                                  type: string\n                                name:\n                                  description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                                  type: string\n                            serviceAccountRef:\n                              description: A reference to a service account that will be used to request a bound token (also known as \"projected token\"). Compared to using \"secretRef\", using this field means that you don't rely on statically bound tokens. To use this field, you must configure an RBAC rule to let cert-manager request a token.\n                              type: object\n                              required:\n                                - name\n                              properties:\n                                name:\n                                  description: Name of the ServiceAccount used to request a token.\n                                  type: string\n                        tokenSecretRef:\n                          description: TokenSecretRef authenticates with Vault by presenting a token.\n                          type: object\n                          required:\n                            - name\n                          properties:\n                            key:\n                              description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                              type: string\n                            name:\n                              description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                              type: string\n                    caBundle:\n                      description: Base64-encoded bundle of PEM CAs which will be used to validate the certificate chain presented by Vault. Only used if using HTTPS to connect to Vault and ignored for HTTP connections. Mutually exclusive with CABundleSecretRef. If neither CABundle nor CABundleSecretRef are defined, the certificate bundle in the cert-manager controller container is used to validate the TLS connection.\n                      type: string\n                      format: byte\n                    caBundleSecretRef:\n                      description: Reference to a Secret containing a bundle of PEM-encoded CAs to use when verifying the certificate chain presented by Vault when using HTTPS. Mutually exclusive with CABundle. If neither CABundle nor CABundleSecretRef are defined, the certificate bundle in the cert-manager controller container is used to validate the TLS connection. If no key for the Secret is specified, cert-manager will default to 'ca.crt'.\n                      type: object\n                      required:\n                        - name\n                      properties:\n                        key:\n                          description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                          type: string\n                        name:\n                          description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                          type: string\n                    namespace:\n                      description: 'Name of the vault namespace. Namespaces is a set of features within Vault Enterprise that allows Vault environments to support Secure Multi-tenancy. e.g: \"ns1\" More about namespaces can be found here https://www.vaultproject.io/docs/enterprise/namespaces'\n                      type: string\n                    path:\n                      description: 'Path is the mount path of the Vault PKI backend''s `sign` endpoint, e.g: \"my_pki_mount/sign/my-role-name\".'\n                      type: string\n                    server:\n                      description: 'Server is the connection address for the Vault server, e.g: \"https://vault.example.com:8200\".'\n                      type: string\n                venafi:\n                  description: Venafi configures this issuer to sign certificates using a Venafi TPP or Venafi Cloud policy zone.\n                  type: object\n                  required:\n                    - zone\n                  properties:\n                    cloud:\n                      description: Cloud specifies the Venafi cloud configuration settings. Only one of TPP or Cloud may be specified.\n                      type: object\n                      required:\n                        - apiTokenSecretRef\n                      properties:\n                        apiTokenSecretRef:\n                          description: APITokenSecretRef is a secret key selector for the Venafi Cloud API token.\n                          type: object\n                          required:\n                            - name\n                          properties:\n                            key:\n                              description: The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.\n                              type: string\n                            name:\n                              description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                              type: string\n                        url:\n                          description: URL is the base URL for Venafi Cloud. Defaults to \"https://api.venafi.cloud/v1\".\n                          type: string\n                    tpp:\n                      description: TPP specifies Trust Protection Platform configuration settings. Only one of TPP or Cloud may be specified.\n                      type: object\n                      required:\n                        - credentialsRef\n                        - url\n                      properties:\n                        caBundle:\n                          description: Base64-encoded bundle of PEM CAs which will be used to validate the certificate chain presented by the TPP server. Only used if using HTTPS; ignored for HTTP. If undefined, the certificate bundle in the cert-manager controller container is used to validate the chain.\n                          type: string\n                          format: byte\n                        credentialsRef:\n                          description: CredentialsRef is a reference to a Secret containing the username and password for the TPP server. The secret must contain two keys, 'username' and 'password'.\n                          type: object\n                          required:\n                            - name\n                          properties:\n                            name:\n                              description: 'Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                              type: string\n                        url:\n                          description: 'URL is the base URL for the vedsdk endpoint of the Venafi TPP instance, for example: \"https://tpp.example.com/vedsdk\".'\n                          type: string\n                    zone:\n                      description: Zone is the Venafi Policy Zone to use for this issuer. All requests made to the Venafi platform will be restricted by the named zone policy. This field is required.\n                      type: string\n            status:\n              description: Status of the Issuer. This is set and managed automatically.\n              type: object\n              properties:\n                acme:\n                  description: ACME specific status options. This field should only be set if the Issuer is configured to use an ACME server to issue certificates.\n                  type: object\n                  properties:\n                    lastPrivateKeyHash:\n                      description: LastPrivateKeyHash is a hash of the private key associated with the latest registered ACME account, in order to track changes made to registered account associated with the Issuer\n                      type: string\n                    lastRegisteredEmail:\n                      description: LastRegisteredEmail is the email associated with the latest registered ACME account, in order to track changes made to registered account associated with the  Issuer\n                      type: string\n                    uri:\n                      description: URI is the unique account identifier, which can also be used to retrieve account details from the CA\n                      type: string\n                conditions:\n                  description: List of status conditions to indicate the status of a CertificateRequest. Known condition types are `Ready`.\n                  type: array\n                  items:\n                    description: IssuerCondition contains condition information for an Issuer.\n                    type: object\n                    required:\n                      - status\n                      - type\n                    properties:\n                      lastTransitionTime:\n                        description: LastTransitionTime is the timestamp corresponding to the last status change of this condition.\n                        type: string\n                        format: date-time\n                      message:\n                        description: Message is a human readable description of the details of the last transition, complementing reason.\n                        type: string\n                      observedGeneration:\n                        description: If set, this represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.condition[x].observedGeneration is 9, the condition is out of date with respect to the current state of the Issuer.\n                        type: integer\n                        format: int64\n                      reason:\n                        description: Reason is a brief machine readable explanation for the condition's last transition.\n                        type: string\n                      status:\n                        description: Status of the condition, one of (`True`, `False`, `Unknown`).\n                        type: string\n                        enum:\n                          - \"True\"\n                          - \"False\"\n                          - Unknown\n                      type:\n                        description: Type of the condition, known values are (`Ready`).\n                        type: string\n                  x-kubernetes-list-map-keys:\n                    - type\n                  x-kubernetes-list-type: map\n      served: true\n      storage: true\n---\n# Source: cert-manager/templates/crds.yaml\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  name: orders.acme.cert-manager.io\n  labels:\n    app: 'cert-manager'\n    app.kubernetes.io/name: 'cert-manager'\n    app.kubernetes.io/instance: 'cert-manager'\n    # Generated labels\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\nspec:\n  group: acme.cert-manager.io\n  names:\n    kind: Order\n    listKind: OrderList\n    plural: orders\n    singular: order\n    categories:\n      - cert-manager\n      - cert-manager-acme\n  scope: Namespaced\n  versions:\n    - name: v1\n      subresources:\n        status: {}\n      additionalPrinterColumns:\n        - jsonPath: .status.state\n          name: State\n          type: string\n        - jsonPath: .spec.issuerRef.name\n          name: Issuer\n          priority: 1\n          type: string\n        - jsonPath: .status.reason\n          name: Reason\n          priority: 1\n          type: string\n        - jsonPath: .metadata.creationTimestamp\n          description: CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n          name: Age\n          type: date\n      schema:\n        openAPIV3Schema:\n          description: Order is a type to represent an Order with an ACME server\n          type: object\n          required:\n            - metadata\n            - spec\n          properties:\n            apiVersion:\n              description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n              type: string\n            kind:\n              description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n              type: string\n            metadata:\n              type: object\n            spec:\n              type: object\n              required:\n                - issuerRef\n                - request\n              properties:\n                commonName:\n                  description: CommonName is the common name as specified on the DER encoded CSR. If specified, this value must also be present in `dnsNames` or `ipAddresses`. This field must match the corresponding field on the DER encoded CSR.\n                  type: string\n                dnsNames:\n                  description: DNSNames is a list of DNS names that should be included as part of the Order validation process. This field must match the corresponding field on the DER encoded CSR.\n                  type: array\n                  items:\n                    type: string\n                duration:\n                  description: Duration is the duration for the not after date for the requested certificate. this is set on order creation as pe the ACME spec.\n                  type: string\n                ipAddresses:\n                  description: IPAddresses is a list of IP addresses that should be included as part of the Order validation process. This field must match the corresponding field on the DER encoded CSR.\n                  type: array\n                  items:\n                    type: string\n                issuerRef:\n                  description: IssuerRef references a properly configured ACME-type Issuer which should be used to create this Order. If the Issuer does not exist, processing will be retried. If the Issuer is not an 'ACME' Issuer, an error will be returned and the Order will be marked as failed.\n                  type: object\n                  required:\n                    - name\n                  properties:\n                    group:\n                      description: Group of the resource being referred to.\n                      type: string\n                    kind:\n                      description: Kind of the resource being referred to.\n                      type: string\n                    name:\n                      description: Name of the resource being referred to.\n                      type: string\n                request:\n                  description: Certificate signing request bytes in DER encoding. This will be used when finalizing the order. This field must be set on the order.\n                  type: string\n                  format: byte\n            status:\n              type: object\n              properties:\n                authorizations:\n                  description: Authorizations contains data returned from the ACME server on what authorizations must be completed in order to validate the DNS names specified on the Order.\n                  type: array\n                  items:\n                    description: ACMEAuthorization contains data returned from the ACME server on an authorization that must be completed in order validate a DNS name on an ACME Order resource.\n                    type: object\n                    required:\n                      - url\n                    properties:\n                      challenges:\n                        description: Challenges specifies the challenge types offered by the ACME server. One of these challenge types will be selected when validating the DNS name and an appropriate Challenge resource will be created to perform the ACME challenge process.\n                        type: array\n                        items:\n                          description: Challenge specifies a challenge offered by the ACME server for an Order. An appropriate Challenge resource can be created to perform the ACME challenge process.\n                          type: object\n                          required:\n                            - token\n                            - type\n                            - url\n                          properties:\n                            token:\n                              description: Token is the token that must be presented for this challenge. This is used to compute the 'key' that must also be presented.\n                              type: string\n                            type:\n                              description: Type is the type of challenge being offered, e.g. 'http-01', 'dns-01', 'tls-sni-01', etc. This is the raw value retrieved from the ACME server. Only 'http-01' and 'dns-01' are supported by cert-manager, other values will be ignored.\n                              type: string\n                            url:\n                              description: URL is the URL of this challenge. It can be used to retrieve additional metadata about the Challenge from the ACME server.\n                              type: string\n                      identifier:\n                        description: Identifier is the DNS name to be validated as part of this authorization\n                        type: string\n                      initialState:\n                        description: InitialState is the initial state of the ACME authorization when first fetched from the ACME server. If an Authorization is already 'valid', the Order controller will not create a Challenge resource for the authorization. This will occur when working with an ACME server that enables 'authz reuse' (such as Let's Encrypt's production endpoint). If not set and 'identifier' is set, the state is assumed to be pending and a Challenge will be created.\n                        type: string\n                        enum:\n                          - valid\n                          - ready\n                          - pending\n                          - processing\n                          - invalid\n                          - expired\n                          - errored\n                      url:\n                        description: URL is the URL of the Authorization that must be completed\n                        type: string\n                      wildcard:\n                        description: Wildcard will be true if this authorization is for a wildcard DNS name. If this is true, the identifier will be the *non-wildcard* version of the DNS name. For example, if '*.example.com' is the DNS name being validated, this field will be 'true' and the 'identifier' field will be 'example.com'.\n                        type: boolean\n                certificate:\n                  description: Certificate is a copy of the PEM encoded certificate for this Order. This field will be populated after the order has been successfully finalized with the ACME server, and the order has transitioned to the 'valid' state.\n                  type: string\n                  format: byte\n                failureTime:\n                  description: FailureTime stores the time that this order failed. This is used to influence garbage collection and back-off.\n                  type: string\n                  format: date-time\n                finalizeURL:\n                  description: FinalizeURL of the Order. This is used to obtain certificates for this order once it has been completed.\n                  type: string\n                reason:\n                  description: Reason optionally provides more information about a why the order is in the current state.\n                  type: string\n                state:\n                  description: State contains the current state of this Order resource. States 'success' and 'expired' are 'final'\n                  type: string\n                  enum:\n                    - valid\n                    - ready\n                    - pending\n                    - processing\n                    - invalid\n                    - expired\n                    - errored\n                url:\n                  description: URL of the Order. This will initially be empty when the resource is first created. The Order controller will populate this field when the Order is first processed. This field will be immutable after it is initially set.\n                  type: string\n      served: true\n      storage: true\n---\n# Source: cert-manager/templates/cainjector-rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: cert-manager-cainjector\n  labels:\n    app: cainjector\n    app.kubernetes.io/name: cainjector\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"cainjector\"\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\nrules:\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"certificates\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  - apiGroups: [\"\"]\n    resources: [\"secrets\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  - apiGroups: [\"\"]\n    resources: [\"events\"]\n    verbs: [\"get\", \"create\", \"update\", \"patch\"]\n  - apiGroups: [\"admissionregistration.k8s.io\"]\n    resources: [\"validatingwebhookconfigurations\", \"mutatingwebhookconfigurations\"]\n    verbs: [\"get\", \"list\", \"watch\", \"update\", \"patch\"]\n  - apiGroups: [\"apiregistration.k8s.io\"]\n    resources: [\"apiservices\"]\n    verbs: [\"get\", \"list\", \"watch\", \"update\", \"patch\"]\n  - apiGroups: [\"apiextensions.k8s.io\"]\n    resources: [\"customresourcedefinitions\"]\n    verbs: [\"get\", \"list\", \"watch\", \"update\", \"patch\"]\n---\n# Source: cert-manager/templates/rbac.yaml\n# Issuer controller role\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: cert-manager-controller-issuers\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\nrules:\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"issuers\", \"issuers/status\"]\n    verbs: [\"update\", \"patch\"]\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"issuers\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  - apiGroups: [\"\"]\n    resources: [\"secrets\"]\n    verbs: [\"get\", \"list\", \"watch\", \"create\", \"update\", \"delete\"]\n  - apiGroups: [\"\"]\n    resources: [\"events\"]\n    verbs: [\"create\", \"patch\"]\n---\n# Source: cert-manager/templates/rbac.yaml\n# ClusterIssuer controller role\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: cert-manager-controller-clusterissuers\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\nrules:\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"clusterissuers\", \"clusterissuers/status\"]\n    verbs: [\"update\", \"patch\"]\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"clusterissuers\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  - apiGroups: [\"\"]\n    resources: [\"secrets\"]\n    verbs: [\"get\", \"list\", \"watch\", \"create\", \"update\", \"delete\"]\n  - apiGroups: [\"\"]\n    resources: [\"events\"]\n    verbs: [\"create\", \"patch\"]\n---\n# Source: cert-manager/templates/rbac.yaml\n# Certificates controller role\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: cert-manager-controller-certificates\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\nrules:\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"certificates\", \"certificates/status\", \"certificaterequests\", \"certificaterequests/status\"]\n    verbs: [\"update\", \"patch\"]\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"certificates\", \"certificaterequests\", \"clusterissuers\", \"issuers\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  # We require these rules to support users with the OwnerReferencesPermissionEnforcement\n  # admission controller enabled:\n  # https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#ownerreferencespermissionenforcement\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"certificates/finalizers\", \"certificaterequests/finalizers\"]\n    verbs: [\"update\"]\n  - apiGroups: [\"acme.cert-manager.io\"]\n    resources: [\"orders\"]\n    verbs: [\"create\", \"delete\", \"get\", \"list\", \"watch\"]\n  - apiGroups: [\"\"]\n    resources: [\"secrets\"]\n    verbs: [\"get\", \"list\", \"watch\", \"create\", \"update\", \"delete\", \"patch\"]\n  - apiGroups: [\"\"]\n    resources: [\"events\"]\n    verbs: [\"create\", \"patch\"]\n---\n# Source: cert-manager/templates/rbac.yaml\n# Orders controller role\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: cert-manager-controller-orders\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\nrules:\n  - apiGroups: [\"acme.cert-manager.io\"]\n    resources: [\"orders\", \"orders/status\"]\n    verbs: [\"update\", \"patch\"]\n  - apiGroups: [\"acme.cert-manager.io\"]\n    resources: [\"orders\", \"challenges\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"clusterissuers\", \"issuers\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  - apiGroups: [\"acme.cert-manager.io\"]\n    resources: [\"challenges\"]\n    verbs: [\"create\", \"delete\"]\n  # We require these rules to support users with the OwnerReferencesPermissionEnforcement\n  # admission controller enabled:\n  # https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#ownerreferencespermissionenforcement\n  - apiGroups: [\"acme.cert-manager.io\"]\n    resources: [\"orders/finalizers\"]\n    verbs: [\"update\"]\n  - apiGroups: [\"\"]\n    resources: [\"secrets\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  - apiGroups: [\"\"]\n    resources: [\"events\"]\n    verbs: [\"create\", \"patch\"]\n---\n# Source: cert-manager/templates/rbac.yaml\n# Challenges controller role\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: cert-manager-controller-challenges\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\nrules:\n  # Use to update challenge resource status\n  - apiGroups: [\"acme.cert-manager.io\"]\n    resources: [\"challenges\", \"challenges/status\"]\n    verbs: [\"update\", \"patch\"]\n  # Used to watch challenge resources\n  - apiGroups: [\"acme.cert-manager.io\"]\n    resources: [\"challenges\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  # Used to watch challenges, issuer and clusterissuer resources\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"issuers\", \"clusterissuers\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  # Need to be able to retrieve ACME account private key to complete challenges\n  - apiGroups: [\"\"]\n    resources: [\"secrets\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  # Used to create events\n  - apiGroups: [\"\"]\n    resources: [\"events\"]\n    verbs: [\"create\", \"patch\"]\n  # HTTP01 rules\n  - apiGroups: [\"\"]\n    resources: [\"pods\", \"services\"]\n    verbs: [\"get\", \"list\", \"watch\", \"create\", \"delete\"]\n  - apiGroups: [\"networking.k8s.io\"]\n    resources: [\"ingresses\"]\n    verbs: [\"get\", \"list\", \"watch\", \"create\", \"delete\", \"update\"]\n  - apiGroups: [ \"gateway.networking.k8s.io\" ]\n    resources: [ \"httproutes\" ]\n    verbs: [\"get\", \"list\", \"watch\", \"create\", \"delete\", \"update\"]\n  # We require the ability to specify a custom hostname when we are creating\n  # new ingress resources.\n  # See: https://github.com/openshift/origin/blob/21f191775636f9acadb44fa42beeb4f75b255532/pkg/route/apiserver/admission/ingress_admission.go#L84-L148\n  - apiGroups: [\"route.openshift.io\"]\n    resources: [\"routes/custom-host\"]\n    verbs: [\"create\"]\n  # We require these rules to support users with the OwnerReferencesPermissionEnforcement\n  # admission controller enabled:\n  # https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#ownerreferencespermissionenforcement\n  - apiGroups: [\"acme.cert-manager.io\"]\n    resources: [\"challenges/finalizers\"]\n    verbs: [\"update\"]\n  # DNS01 rules (duplicated above)\n  - apiGroups: [\"\"]\n    resources: [\"secrets\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n---\n# Source: cert-manager/templates/rbac.yaml\n# ingress-shim controller role\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: cert-manager-controller-ingress-shim\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\nrules:\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"certificates\", \"certificaterequests\"]\n    verbs: [\"create\", \"update\", \"delete\"]\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"certificates\", \"certificaterequests\", \"issuers\", \"clusterissuers\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  - apiGroups: [\"networking.k8s.io\"]\n    resources: [\"ingresses\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  # We require these rules to support users with the OwnerReferencesPermissionEnforcement\n  # admission controller enabled:\n  # https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#ownerreferencespermissionenforcement\n  - apiGroups: [\"networking.k8s.io\"]\n    resources: [\"ingresses/finalizers\"]\n    verbs: [\"update\"]\n  - apiGroups: [\"gateway.networking.k8s.io\"]\n    resources: [\"gateways\", \"httproutes\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  - apiGroups: [\"gateway.networking.k8s.io\"]\n    resources: [\"gateways/finalizers\", \"httproutes/finalizers\"]\n    verbs: [\"update\"]\n  - apiGroups: [\"\"]\n    resources: [\"events\"]\n    verbs: [\"create\", \"patch\"]\n---\n# Source: cert-manager/templates/rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: cert-manager-view\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\n    rbac.authorization.k8s.io/aggregate-to-view: \"true\"\n    rbac.authorization.k8s.io/aggregate-to-edit: \"true\"\n    rbac.authorization.k8s.io/aggregate-to-admin: \"true\"\nrules:\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"certificates\", \"certificaterequests\", \"issuers\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n  - apiGroups: [\"acme.cert-manager.io\"]\n    resources: [\"challenges\", \"orders\"]\n    verbs: [\"get\", \"list\", \"watch\"]\n---\n# Source: cert-manager/templates/rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: cert-manager-edit\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\n    rbac.authorization.k8s.io/aggregate-to-edit: \"true\"\n    rbac.authorization.k8s.io/aggregate-to-admin: \"true\"\nrules:\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"certificates\", \"certificaterequests\", \"issuers\"]\n    verbs: [\"create\", \"delete\", \"deletecollection\", \"patch\", \"update\"]\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"certificates/status\"]\n    verbs: [\"update\"]\n  - apiGroups: [\"acme.cert-manager.io\"]\n    resources: [\"challenges\", \"orders\"]\n    verbs: [\"create\", \"delete\", \"deletecollection\", \"patch\", \"update\"]\n---\n# Source: cert-manager/templates/rbac.yaml\n# Permission to approve CertificateRequests referencing cert-manager.io Issuers and ClusterIssuers\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: cert-manager-controller-approve:cert-manager-io\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"cert-manager\"\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\nrules:\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"signers\"]\n    verbs: [\"approve\"]\n    resourceNames: [\"issuers.cert-manager.io/*\", \"clusterissuers.cert-manager.io/*\"]\n---\n# Source: cert-manager/templates/rbac.yaml\n# Permission to:\n# - Update and sign CertificatSigningeRequests referencing cert-manager.io Issuers and ClusterIssuers\n# - Perform SubjectAccessReviews to test whether users are able to reference Namespaced Issuers\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: cert-manager-controller-certificatesigningrequests\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"cert-manager\"\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\nrules:\n  - apiGroups: [\"certificates.k8s.io\"]\n    resources: [\"certificatesigningrequests\"]\n    verbs: [\"get\", \"list\", \"watch\", \"update\"]\n  - apiGroups: [\"certificates.k8s.io\"]\n    resources: [\"certificatesigningrequests/status\"]\n    verbs: [\"update\", \"patch\"]\n  - apiGroups: [\"certificates.k8s.io\"]\n    resources: [\"signers\"]\n    resourceNames: [\"issuers.cert-manager.io/*\", \"clusterissuers.cert-manager.io/*\"]\n    verbs: [\"sign\"]\n  - apiGroups: [\"authorization.k8s.io\"]\n    resources: [\"subjectaccessreviews\"]\n    verbs: [\"create\"]\n---\n# Source: cert-manager/templates/webhook-rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: cert-manager-webhook:subjectaccessreviews\n  labels:\n    app: webhook\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"webhook\"\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\nrules:\n- apiGroups: [\"authorization.k8s.io\"]\n  resources: [\"subjectaccessreviews\"]\n  verbs: [\"create\"]\n---\n# Source: cert-manager/templates/cainjector-rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: cert-manager-cainjector\n  labels:\n    app: cainjector\n    app.kubernetes.io/name: cainjector\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"cainjector\"\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-cainjector\nsubjects:\n  - name: cert-manager-cainjector\n    namespace: cert-manager\n    kind: ServiceAccount\n---\n# Source: cert-manager/templates/rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: cert-manager-controller-issuers\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-controller-issuers\nsubjects:\n  - name: cert-manager\n    namespace: cert-manager\n    kind: ServiceAccount\n---\n# Source: cert-manager/templates/rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: cert-manager-controller-clusterissuers\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-controller-clusterissuers\nsubjects:\n  - name: cert-manager\n    namespace: cert-manager\n    kind: ServiceAccount\n---\n# Source: cert-manager/templates/rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: cert-manager-controller-certificates\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-controller-certificates\nsubjects:\n  - name: cert-manager\n    namespace: cert-manager\n    kind: ServiceAccount\n---\n# Source: cert-manager/templates/rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: cert-manager-controller-orders\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-controller-orders\nsubjects:\n  - name: cert-manager\n    namespace: cert-manager\n    kind: ServiceAccount\n---\n# Source: cert-manager/templates/rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: cert-manager-controller-challenges\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-controller-challenges\nsubjects:\n  - name: cert-manager\n    namespace: cert-manager\n    kind: ServiceAccount\n---\n# Source: cert-manager/templates/rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: cert-manager-controller-ingress-shim\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-controller-ingress-shim\nsubjects:\n  - name: cert-manager\n    namespace: cert-manager\n    kind: ServiceAccount\n---\n# Source: cert-manager/templates/rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: cert-manager-controller-approve:cert-manager-io\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"cert-manager\"\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-controller-approve:cert-manager-io\nsubjects:\n  - name: cert-manager\n    namespace: cert-manager\n    kind: ServiceAccount\n---\n# Source: cert-manager/templates/rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: cert-manager-controller-certificatesigningrequests\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"cert-manager\"\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-controller-certificatesigningrequests\nsubjects:\n  - name: cert-manager\n    namespace: cert-manager\n    kind: ServiceAccount\n---\n# Source: cert-manager/templates/webhook-rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: cert-manager-webhook:subjectaccessreviews\n  labels:\n    app: webhook\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"webhook\"\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cert-manager-webhook:subjectaccessreviews\nsubjects:\n- apiGroup: \"\"\n  kind: ServiceAccount\n  name: cert-manager-webhook\n  namespace: cert-manager\n---\n# Source: cert-manager/templates/cainjector-rbac.yaml\n# leader election rules\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  name: cert-manager-cainjector:leaderelection\n  namespace: kube-system\n  labels:\n    app: cainjector\n    app.kubernetes.io/name: cainjector\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"cainjector\"\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\nrules:\n  # Used for leader election by the controller\n  # cert-manager-cainjector-leader-election is used by the CertificateBased injector controller\n  #   see cmd/cainjector/start.go#L113\n  # cert-manager-cainjector-leader-election-core is used by the SecretBased injector controller\n  #   see cmd/cainjector/start.go#L137\n  - apiGroups: [\"coordination.k8s.io\"]\n    resources: [\"leases\"]\n    resourceNames: [\"cert-manager-cainjector-leader-election\", \"cert-manager-cainjector-leader-election-core\"]\n    verbs: [\"get\", \"update\", \"patch\"]\n  - apiGroups: [\"coordination.k8s.io\"]\n    resources: [\"leases\"]\n    verbs: [\"create\"]\n---\n# Source: cert-manager/templates/rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  name: cert-manager:leaderelection\n  namespace: kube-system\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\nrules:\n  - apiGroups: [\"coordination.k8s.io\"]\n    resources: [\"leases\"]\n    resourceNames: [\"cert-manager-controller\"]\n    verbs: [\"get\", \"update\", \"patch\"]\n  - apiGroups: [\"coordination.k8s.io\"]\n    resources: [\"leases\"]\n    verbs: [\"create\"]\n---\n# Source: cert-manager/templates/webhook-rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  name: cert-manager-webhook:dynamic-serving\n  namespace: cert-manager\n  labels:\n    app: webhook\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"webhook\"\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\nrules:\n- apiGroups: [\"\"]\n  resources: [\"secrets\"]\n  resourceNames:\n  - 'cert-manager-webhook-ca'\n  verbs: [\"get\", \"list\", \"watch\", \"update\"]\n# It's not possible to grant CREATE permission on a single resourceName.\n- apiGroups: [\"\"]\n  resources: [\"secrets\"]\n  verbs: [\"create\"]\n---\n# Source: cert-manager/templates/cainjector-rbac.yaml\n# grant cert-manager permission to manage the leaderelection configmap in the\n# leader election namespace\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  name: cert-manager-cainjector:leaderelection\n  namespace: kube-system\n  labels:\n    app: cainjector\n    app.kubernetes.io/name: cainjector\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"cainjector\"\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: cert-manager-cainjector:leaderelection\nsubjects:\n  - kind: ServiceAccount\n    name: cert-manager-cainjector\n    namespace: cert-manager\n---\n# Source: cert-manager/templates/rbac.yaml\n# grant cert-manager permission to manage the leaderelection configmap in the\n# leader election namespace\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  name: cert-manager:leaderelection\n  namespace: kube-system\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: cert-manager:leaderelection\nsubjects:\n  - apiGroup: \"\"\n    kind: ServiceAccount\n    name: cert-manager\n    namespace: cert-manager\n---\n# Source: cert-manager/templates/webhook-rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  name: cert-manager-webhook:dynamic-serving\n  namespace: cert-manager\n  labels:\n    app: webhook\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"webhook\"\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: cert-manager-webhook:dynamic-serving\nsubjects:\n- apiGroup: \"\"\n  kind: ServiceAccount\n  name: cert-manager-webhook\n  namespace: cert-manager\n---\n# Source: cert-manager/templates/service.yaml\napiVersion: v1\nkind: Service\nmetadata:\n  name: cert-manager\n  namespace: cert-manager\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\nspec:\n  type: ClusterIP\n  ports:\n  - protocol: TCP\n    port: 9402\n    name: tcp-prometheus-servicemonitor\n    targetPort: 9402\n  selector:\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n---\n# Source: cert-manager/templates/webhook-service.yaml\napiVersion: v1\nkind: Service\nmetadata:\n  name: cert-manager-webhook\n  namespace: cert-manager\n  labels:\n    app: webhook\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"webhook\"\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\nspec:\n  type: ClusterIP\n  ports:\n  - name: https\n    port: 443\n    protocol: TCP\n    targetPort: \"https\"\n  selector:\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"webhook\"\n---\n# Source: cert-manager/templates/cainjector-deployment.yaml\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: cert-manager-cainjector\n  namespace: cert-manager\n  labels:\n    app: cainjector\n    app.kubernetes.io/name: cainjector\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"cainjector\"\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: cainjector\n      app.kubernetes.io/instance: cert-manager\n      app.kubernetes.io/component: \"cainjector\"\n  template:\n    metadata:\n      labels:\n        app: cainjector\n        app.kubernetes.io/name: cainjector\n        app.kubernetes.io/instance: cert-manager\n        app.kubernetes.io/component: \"cainjector\"\n        app.kubernetes.io/version: \"v1.12.2\"\n        app.kubernetes.io/managed-by: Helm\n        helm.sh/chart: cert-manager-v1.12.2\n    spec:\n      serviceAccountName: cert-manager-cainjector\n      securityContext:\n        runAsNonRoot: true\n        seccompProfile:\n          type: RuntimeDefault\n      containers:\n        - name: cert-manager-cainjector\n          image: \"quay.io/jetstack/cert-manager-cainjector:v1.12.2\"\n          imagePullPolicy: IfNotPresent\n          args:\n          - --v=2\n          - --leader-election-namespace=kube-system\n          env:\n          - name: POD_NAMESPACE\n            valueFrom:\n              fieldRef:\n                fieldPath: metadata.namespace\n          securityContext:\n            allowPrivilegeEscalation: false\n            capabilities:\n              drop:\n              - ALL\n      nodeSelector:\n        kubernetes.io/os: linux\n---\n# Source: cert-manager/templates/deployment.yaml\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: cert-manager\n  namespace: cert-manager\n  labels:\n    app: cert-manager\n    app.kubernetes.io/name: cert-manager\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"controller\"\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: cert-manager\n      app.kubernetes.io/instance: cert-manager\n      app.kubernetes.io/component: \"controller\"\n  template:\n    metadata:\n      labels:\n        app: cert-manager\n        app.kubernetes.io/name: cert-manager\n        app.kubernetes.io/instance: cert-manager\n        app.kubernetes.io/component: \"controller\"\n        app.kubernetes.io/version: \"v1.12.2\"\n        app.kubernetes.io/managed-by: Helm\n        helm.sh/chart: cert-manager-v1.12.2\n      annotations:\n        prometheus.io/path: \"/metrics\"\n        prometheus.io/scrape: 'true'\n        prometheus.io/port: '9402'\n    spec:\n      serviceAccountName: cert-manager\n      securityContext:\n        runAsNonRoot: true\n        seccompProfile:\n          type: RuntimeDefault\n      containers:\n        - name: cert-manager-controller\n          image: \"quay.io/jetstack/cert-manager-controller:v1.12.2\"\n          imagePullPolicy: IfNotPresent\n          args:\n          - --v=2\n          - --cluster-resource-namespace=$(POD_NAMESPACE)\n          - --leader-election-namespace=kube-system\n          - --acme-http01-solver-image=quay.io/jetstack/cert-manager-acmesolver:v1.12.2\n          - ' --dns01-recursive-nameservers-only'\n          - --dns01-recursive-nameservers=8.8.8.8:53,1.1.1.1:53\n          - --max-concurrent-challenges=60\n          ports:\n          - containerPort: 9402\n            name: http-metrics\n            protocol: TCP\n          - containerPort: 9403\n            name: http-healthz\n            protocol: TCP\n          securityContext:\n            allowPrivilegeEscalation: false\n            capabilities:\n              drop:\n              - ALL\n          env:\n          - name: POD_NAMESPACE\n            valueFrom:\n              fieldRef:\n                fieldPath: metadata.namespace\n      nodeSelector:\n        kubernetes.io/os: linux\n---\n# Source: cert-manager/templates/webhook-deployment.yaml\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: cert-manager-webhook\n  namespace: cert-manager\n  labels:\n    app: webhook\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"webhook\"\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: webhook\n      app.kubernetes.io/instance: cert-manager\n      app.kubernetes.io/component: \"webhook\"\n  template:\n    metadata:\n      labels:\n        app: webhook\n        app.kubernetes.io/name: webhook\n        app.kubernetes.io/instance: cert-manager\n        app.kubernetes.io/component: \"webhook\"\n        app.kubernetes.io/version: \"v1.12.2\"\n        app.kubernetes.io/managed-by: Helm\n        helm.sh/chart: cert-manager-v1.12.2\n    spec:\n      serviceAccountName: cert-manager-webhook\n      securityContext:\n        runAsNonRoot: true\n        seccompProfile:\n          type: RuntimeDefault\n      containers:\n        - name: cert-manager-webhook\n          image: \"quay.io/jetstack/cert-manager-webhook:v1.12.2\"\n          imagePullPolicy: IfNotPresent\n          args:\n          - --v=2\n          - --secure-port=10250\n          - --dynamic-serving-ca-secret-namespace=$(POD_NAMESPACE)\n          - --dynamic-serving-ca-secret-name=cert-manager-webhook-ca\n          - --dynamic-serving-dns-names=cert-manager-webhook\n          - --dynamic-serving-dns-names=cert-manager-webhook.$(POD_NAMESPACE)\n          - --dynamic-serving-dns-names=cert-manager-webhook.$(POD_NAMESPACE).svc\n          \n          ports:\n          - name: https\n            protocol: TCP\n            containerPort: 10250\n          - name: healthcheck\n            protocol: TCP\n            containerPort: 6080\n          livenessProbe:\n            httpGet:\n              path: /livez\n              port: 6080\n              scheme: HTTP\n            initialDelaySeconds: 60\n            periodSeconds: 10\n            timeoutSeconds: 1\n            successThreshold: 1\n            failureThreshold: 3\n          readinessProbe:\n            httpGet:\n              path: /healthz\n              port: 6080\n              scheme: HTTP\n            initialDelaySeconds: 5\n            periodSeconds: 5\n            timeoutSeconds: 1\n            successThreshold: 1\n            failureThreshold: 3\n          securityContext:\n            allowPrivilegeEscalation: false\n            capabilities:\n              drop:\n              - ALL\n          env:\n          - name: POD_NAMESPACE\n            valueFrom:\n              fieldRef:\n                fieldPath: metadata.namespace\n      nodeSelector:\n        kubernetes.io/os: linux\n---\n# Source: cert-manager/templates/webhook-mutating-webhook.yaml\napiVersion: admissionregistration.k8s.io/v1\nkind: MutatingWebhookConfiguration\nmetadata:\n  name: cert-manager-webhook\n  labels:\n    app: webhook\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"webhook\"\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\n  annotations:\n    cert-manager.io/inject-ca-from-secret: \"cert-manager/cert-manager-webhook-ca\"\nwebhooks:\n  - name: webhook.cert-manager.io\n    rules:\n      - apiGroups:\n          - \"cert-manager.io\"\n          - \"acme.cert-manager.io\"\n        apiVersions:\n          - \"v1\"\n        operations:\n          - CREATE\n          - UPDATE\n        resources:\n          - \"*/*\"\n    admissionReviewVersions: [\"v1\"]\n    # This webhook only accepts v1 cert-manager resources.\n    # Equivalent matchPolicy ensures that non-v1 resource requests are sent to\n    # this webhook (after the resources have been converted to v1).\n    matchPolicy: Equivalent\n    timeoutSeconds: 10\n    failurePolicy: Fail\n    # Only include 'sideEffects' field in Kubernetes 1.12+\n    sideEffects: None\n    clientConfig:\n      service:\n        name: cert-manager-webhook\n        namespace: cert-manager\n        path: /mutate\n---\n# Source: cert-manager/templates/webhook-validating-webhook.yaml\napiVersion: admissionregistration.k8s.io/v1\nkind: ValidatingWebhookConfiguration\nmetadata:\n  name: cert-manager-webhook\n  labels:\n    app: webhook\n    app.kubernetes.io/name: webhook\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"webhook\"\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\n  annotations:\n    cert-manager.io/inject-ca-from-secret: \"cert-manager/cert-manager-webhook-ca\"\nwebhooks:\n  - name: webhook.cert-manager.io\n    namespaceSelector:\n      matchExpressions:\n      - key: \"cert-manager.io/disable-validation\"\n        operator: \"NotIn\"\n        values:\n        - \"true\"\n      - key: \"name\"\n        operator: \"NotIn\"\n        values:\n        - cert-manager\n    rules:\n      - apiGroups:\n          - \"cert-manager.io\"\n          - \"acme.cert-manager.io\"\n        apiVersions:\n          - \"v1\"\n        operations:\n          - CREATE\n          - UPDATE\n        resources:\n          - \"*/*\"\n    admissionReviewVersions: [\"v1\"]\n    # This webhook only accepts v1 cert-manager resources.\n    # Equivalent matchPolicy ensures that non-v1 resource requests are sent to\n    # this webhook (after the resources have been converted to v1).\n    matchPolicy: Equivalent\n    timeoutSeconds: 10\n    failurePolicy: Fail\n    sideEffects: None\n    clientConfig:\n      service:\n        name: cert-manager-webhook\n        namespace: cert-manager\n        path: /validate\n---\n# Source: cert-manager/templates/startupapicheck-serviceaccount.yaml\napiVersion: v1\nkind: ServiceAccount\nautomountServiceAccountToken: true\nmetadata:\n  name: cert-manager-startupapicheck\n  namespace: cert-manager\n  annotations:\n    helm.sh/hook: post-install\n    helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded\n    helm.sh/hook-weight: \"-5\"\n  labels:\n    app: startupapicheck\n    app.kubernetes.io/name: startupapicheck\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"startupapicheck\"\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\n---\n# Source: cert-manager/templates/startupapicheck-rbac.yaml\n# create certificate role\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  name: cert-manager-startupapicheck:create-cert\n  namespace: cert-manager\n  labels:\n    app: startupapicheck\n    app.kubernetes.io/name: startupapicheck\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"startupapicheck\"\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\n  annotations:\n    helm.sh/hook: post-install\n    helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded\n    helm.sh/hook-weight: \"-5\"\nrules:\n  - apiGroups: [\"cert-manager.io\"]\n    resources: [\"certificates\"]\n    verbs: [\"create\"]\n---\n# Source: cert-manager/templates/startupapicheck-rbac.yaml\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  name: cert-manager-startupapicheck:create-cert\n  namespace: cert-manager\n  labels:\n    app: startupapicheck\n    app.kubernetes.io/name: startupapicheck\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"startupapicheck\"\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\n  annotations:\n    helm.sh/hook: post-install\n    helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded\n    helm.sh/hook-weight: \"-5\"\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: cert-manager-startupapicheck:create-cert\nsubjects:\n  - kind: ServiceAccount\n    name: cert-manager-startupapicheck\n    namespace: cert-manager\n---\n# Source: cert-manager/templates/startupapicheck-job.yaml\napiVersion: batch/v1\nkind: Job\nmetadata:\n  name: cert-manager-startupapicheck\n  namespace: cert-manager\n  labels:\n    app: startupapicheck\n    app.kubernetes.io/name: startupapicheck\n    app.kubernetes.io/instance: cert-manager\n    app.kubernetes.io/component: \"startupapicheck\"\n    app.kubernetes.io/version: \"v1.12.2\"\n    app.kubernetes.io/managed-by: Helm\n    helm.sh/chart: cert-manager-v1.12.2\n  annotations:\n    helm.sh/hook: post-install\n    helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded\n    helm.sh/hook-weight: \"1\"\nspec:\n  backoffLimit: 4\n  template:\n    metadata:\n      labels:\n        app: startupapicheck\n        app.kubernetes.io/name: startupapicheck\n        app.kubernetes.io/instance: cert-manager\n        app.kubernetes.io/component: \"startupapicheck\"\n        app.kubernetes.io/version: \"v1.12.2\"\n        app.kubernetes.io/managed-by: Helm\n        helm.sh/chart: cert-manager-v1.12.2\n    spec:\n      restartPolicy: OnFailure\n      serviceAccountName: cert-manager-startupapicheck\n      securityContext:\n        runAsNonRoot: true\n        seccompProfile:\n          type: RuntimeDefault\n      containers:\n        - name: cert-manager-startupapicheck\n          image: \"quay.io/jetstack/cert-manager-ctl:v1.12.2\"\n          imagePullPolicy: IfNotPresent\n          args:\n          - check\n          - api\n          - --wait=1m\n          securityContext:\n            allowPrivilegeEscalation: false\n            capabilities:\n              drop:\n              - ALL\n      nodeSelector:\n        kubernetes.io/os: linux\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_042__gcp_k8s__cert_manager_dns_validation___using_41/vendor/cert-manager/kustomization.yaml",
    "content": "apiVersion: kustomize.config.k8s.io/v1beta1\nkind: Kustomization\n\nnamespace: cert-manager\n\nresources:\n  - cert-manager-vendor.yaml     "
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_043_gcp_k8s__codecentric_keycloak__bitnami_postgres___using_41_42/ReadMe.md",
    "content": "# Keycloak\n\n- [keycloak)](https://github.com/codecentric/helm-charts/tree/master/charts/keycloak)\n- [keycloakx](https://github.com/codecentric/helm-charts/tree/master/charts/keycloakx)\n- [keycloakx/examples](https://github.com/codecentric/helm-charts/tree/master/charts/keycloakx/examples)\n- [Keycloak.X with PostgreSQL](https://github.com/codecentric/helm-charts/blob/master/charts/keycloakx/examples/postgresql/readme.md)\n- [keycloak.org/documentation](https://www.keycloak.org/documentation)\n- [bitnami/postgresql](https://github.com/bitnami/charts/tree/main/bitnami/postgresql)\n- [keycloak.org/docs/latest/server_admin](https://www.keycloak.org/docs/latest/server_admin/)\n\n\n> WARNING: The configured password will be ignored on new installation in case when previous Posgresql release was deleted through the helm command. In that case, old PVC will have an old password, and setting it through helm won't take effect. Deleting persistent volumes (PVs) will solve the issue.\n\n> Delete the PV and PVC if you are getting the error: \"psql: error: could not connect to server: FATAL: password authentication failed for user \"keycloak\". Spent hours trying to debug the issue. It should be highlighted in the documentation more clearly.\n\n## GKE Kubernetes Version\n\n```bash\n$ kubectl version --short\nClient Version: v1.27.3\nKustomize Version: v5.0.1\nServer Version: v1.27.2-gke.1200\n```\n\n## Keycloak.X with PostgreSQL\n\n- [doc](https://github.com/codecentric/helm-charts/tree/master/charts/keycloakx/examples/postgresql)\n\n```bash\n$ helm repo add bitnami https://charts.bitnami.com/bitnami\n.\n$ helm repo add codecentric https://codecentric.github.io/helm-charts\n.\n$ helm repo update\n.\n```\n\n- Pull repo\n- [bitnami/postgresql](https://github.com/bitnami/charts/tree/main/bitnami/postgresql)\n\n```bash\n$ export POSTGRES_USER_PASSWORD='<admin_user>'   # Admin user : postgres\n$ export KEYCLOAK_USER_PASSWORD='<keycloak_user>'    # Custom user : keycloak\n\n$ cd vendor/postgresql\n.\n# helm install keycloak-db bitnami/postgresql --values ./keycloak-db-values.yaml, note the bitnami/postgresql is the repo name, you can use this in the helm pull command\n$ helm pull bitnami/postgresql                    \n$ ls\npostgresql-12.6.0.tgz\n$ tar -xvf postgresql-12.6.0.tgz\n$ ls\npostgresql            postgresql-12.6.0.tgz\n$ rm -rf postgresql-12.6.0.tgz\n\n# https://github.com/codecentric/helm-charts/tree/master/charts/keycloakx/examples/postgresql\n# Get the keycloak-db-values.yaml\n```\n\n- Let's first install the PostgreSQL database \n\n```bash\n# https://github.com/codecentric/helm-charts/tree/master/charts/keycloakx/examples/postgresql\n\n# Generate Manifests\nhelm template keycloak-db postgresql \\  \n--namespace keycloak \\\n--create-namespace \\\n--set global.postgresql.auth.postgresPassword=\"$POSTGRES_USER_PASSWORD\" \\\n--set global.postgresql.auth.username=\"keycloak\" \\\n--set global.postgresql.auth.password=\"$KEYCLOAK_USER_PASSWORD\" \\\n--set global.postgresql.auth.database=\"keycloak_db\" > keycloak-db-manifest-vendor.yaml\n\n############# OR ############## Install directlry using helm install\n\n$ helm install keycloak-db postgresql \\\n--namespace keycloak \\\n--create-namespace \\\n--set global.postgresql.auth.postgresPassword=\"$POSTGRES_USER_PASSWORD\" \\\n--set global.postgresql.auth.username=\"keycloak\" \\\n--set global.postgresql.auth.password=\"$KEYCLOAK_USER_PASSWORD\" \\\n--set global.postgresql.auth.database=\"keycloak_db\" \n...\nNAME: keycloak-db\nNAMESPACE: keycloak\nCHART NAME: postgresql\nCHART VERSION: 12.6.0\nAPP VERSION: 15.3.0\n\nPostgreSQL can be accessed via port 5432 on the following DNS names from within your cluster:\n\n    keycloak-db-postgresql.keycloak.svc.cluster.local - Read/Write connection\n\nTo get the password for \"postgres\" run:\n\n    export POSTGRES_ADMIN_PASSWORD=$(kubectl get secret --namespace keycloak keycloak-db-postgresql -o jsonpath=\"{.data.postgres-password}\" | base64 -d)\n\nTo get the password for \"keycloak\" run:\n\n    export POSTGRES_PASSWORD=$(kubectl get secret --namespace keycloak keycloak-db-postgresql -o jsonpath=\"{.data.password}\" | base64 -d)\n\nTo connect to your database run the following command:\n\n    kubectl run keycloak-db-postgresql-client --rm --tty -i --restart='Never' --namespace keycloak --image docker.io/bitnami/postgresql:15.3.0-debian-11-r17 --env=\"PGPASSWORD=$POSTGRES_PASSWORD\" \\\n      --command -- psql --host keycloak-db-postgresql -U keycloak -d keycloak_db -p 5432\n\n    > NOTE: If you access the container using bash, make sure that you execute \"/opt/bitnami/scripts/postgresql/entrypoint.sh /bin/bash\" in order to avoid the error \"psql: local user with ID 1001} does not exist\"\n\nTo connect to your database from outside the cluster execute the following commands:\n\n    kubectl port-forward --namespace keycloak svc/keycloak-db-postgresql 5432:5432 &\n    PGPASSWORD=\"$POSTGRES_PASSWORD\" psql --host 127.0.0.1 -U keycloak -d keycloak_db -p 5432\n\nWARNING: The configured password will be ignored on new installation in case when previous Posgresql release was deleted through the helm command. In that case, old PVC will have an old password, and setting it through helm won't take effect. Deleting persistent volumes (PVs) will solve the issue.    \n```\n\n## Apply manifest\n\n```bash\n$ kubectl apply -f keycloak-db-manifest-vendor.yaml\n.\n\n# Connect to keycloak db using keycloak user\n$ kubectl run keycloak-db-postgresql-client --rm --tty -i --restart='Never' --namespace keycloak --image docker.io/bitnami/postgresql:15.3.0-debian-11-r17 --env=\"PGPASSWORD=$POSTGRES_PASSWORD\" \\\n      --command -- psql --host keycloak-db-postgresql -U keycloak -d keycloak_db -p 5432\n\nkeycloak_db=> \nkeycloak_db=> \\l\n                                                  List of databases\n    Name     |  Owner   | Encoding |   Collate   |    Ctype    | ICU Locale | Locale Provider |   Access privileges   \n-------------+----------+----------+-------------+-------------+------------+-----------------+-----------------------\n keycloak_db | keycloak | UTF8     | en_US.UTF-8 | en_US.UTF-8 |            | libc            | =Tc/keycloak         +\n             |          |          |             |             |            |                 | keycloak=CTc/keycloak\n postgres    | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |            | libc            | \n template0   | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |            | libc            | =c/postgres          +\n             |          |          |             |             |            |                 | postgres=CTc/postgres\n template1   | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |            | libc            | =c/postgres          +\n             |          |          |             |             |            |                 | postgres=CTc/postgres\n(4 rows)\n\nkeycloak_db=> \n\n$ rm -rf postgresql\n.\n```\n\n- Now let's generate manifests for keycloak\n\n```bash\n$ cd vendor/keycloakx\n.\n```\n\n- Download the file [keycloak-server-values.yaml](https://github.com/codecentric/helm-charts/blob/master/charts/keycloakx/examples/postgresql/keycloak-server-values.yaml)\n  \n```bash\n$ helm install keycloak --namespace keycloak --create-namespace  keycloakx --values ./keycloak-server-values.yaml \nNAME: keycloak\nLAST DEPLOYED: Sat Jul  1 21:35:50 2023\nNAMESPACE: keycloak\nSTATUS: deployed\nREVISION: 1\nTEST SUITE: None\nNOTES:\n***********************************************************************\n*                                                                     *\n*                Keycloak.X Helm Chart by codecentric AG              *\n*                                                                     *\n***********************************************************************\n\nKeycloak was installed with a Service of type ClusterIP\n\nCreate a port-forwarding with the following commands:\n\nexport POD_NAME=$(kubectl get pods --namespace keycloak -l \"app.kubernetes.io/name=keycloakx,app.kubernetes.io/instance=keycloak\" -o name)\necho \"Visit http://127.0.0.1:8080 to use your application\"\nkubectl --namespace keycloak port-forward \"$POD_NAME\" 8080\n\n#####################################################\n#         OR use helm template command              #\n\n$ helm pull codecentric/keycloakx\n.\n$ tar -xvf keycloakx-2.2.1.tgz\n.\n$ rm -rf keycloakx-2.2.1.tgz\n.\n# Generate keycloak-server-manifest-vendor.yaml\nhelm template keycloak \\\n--namespace keycloak \\\n--create-namespace  keycloakx \\\n--values ./keycloak-server-values.yaml  \\\n> keycloak-server-manifest-vendor.yaml\n\n# Apply manifest\n$ kubeclt apply -f keycloak-server-manifest-vendor.yaml\n.\n```\n\n- Let's access the keycloak service\n\n```bash\n$ kubectl port-forward -n keycloak service/keycloak-keycloakx-http 8080:80\n\nForwarding from 127.0.0.1:8080 -> 8080\nForwarding from [::1]:8080 -> 8080\n```\n\n- You can then access the Keycloak Admin-Console via [http://localhost:8080/auth](http://localhost:8080/auth) with username: admin and password: secret123\n\n- Let's create ingress for keycloak service\n\n```bash\n$ cd base/keycloakx\n.\n$ export DOMAIN_NAME=<DOMAIN_NAME>\n.\n# Ensure that corresponding DNS is created\n$ nslookup keycloak.<DOMAIN_NAME>     \nServer:         8.8.8.8\nAddress:        8.8.8.8#53\n\nNon-authoritative answer:\nName:   keycloak.<DOMAIN_NAME>\nAddress: 35.232.7.154\n\n$ sed -e \"s/DNS_ZONE/$DNS_ZONE/g\" -e \"s/DOMAIN_NAME/$DOMAIN_NAME/g\" ingress_keycloak.yaml |  kubectl apply -f -\ningress.networking.k8s.io/keycloak-ingress created\n\n$ kubectl get secret -n keycloak | grep tls                                                                                  \nkeycloak-tls                     kubernetes.io/tls    2      13m\n\n# Copy the tls.crt from the secret in clipboard\n$ pbpaste | openssl x509 -text -noout | egrep \"Not|DNS\"\n            Not Before: Jul  1 17:16:55 2023 GMT\n            Not After : Sep 29 17:16:54 2023 GMT\n                DNS:keycloak.<DOMAIN_NAME>\n```\n\n- Let's visit the keycloak https URL using curl\n\n```bash\n$ curl -v https://keycloak.<DOMAIN_NAME>/auth/ -o /dev/null\n...\n* Connected to keycloak.<DOMAIN_NAME> (35.232.7.154) port 443 (#0)\n...\n* SSL connection using TLSv1.3 / AEAD-AES256-GCM-SHA384\n...\n* Server certificate:\n*  subject: CN=keycloak.<DOMAIN_NAME>\n*  start date: Jul  1 17:16:55 2023 GMT\n*  expire date: Sep 29 17:16:54 2023 GMT\n*  subjectAltName: host \"keycloak.<DOMAIN_NAME>\" matched cert's \"keycloak.<DOMAIN_NAME>\"\n*  issuer: C=US; O=Let's Encrypt; CN=R3\n*  SSL certificate verify ok.\n...\n> GET /auth/ HTTP/2\n> Host: keycloak.<DOMAIN_NAME>\n> user-agent: curl/7.88.1\n> accept: */*\n> \n< HTTP/2 200 \n< date: Sat, 01 Jul 2023 18:36:43 GMT\n< content-type: text/html;charset=utf-8\n< content-length: 3882\n< referrer-policy: no-referrer\n< x-frame-options: SAMEORIGIN\n< strict-transport-security: max-age=15724800; includeSubDomains\n< x-robots-tag: none\n< cache-control: no-cache, must-revalidate, no-transform, no-store\n< x-content-type-options: nosniff\n< content-security-policy: frame-src 'self'; frame-ancestors 'self'; object-src 'none';\n< x-xss-protection: 1; mode=block\n```\n\n- Let's also create build files\n\n```bash\n$ mkdir build\n.\n$ kustomize build base/keycloakx -o build/keycloakx_all.yaml\n.\n$ sed -e \"s/DNS_ZONE/$DNS_ZONE/g\" -e \"s/DOMAIN_NAME/$DOMAIN_NAME/g\" build/keycloakx_all.yaml |  kubectl apply -f - \nserviceaccount/keycloak-keycloakx configured\nsecret/keycloak-keycloakx-admin-creds configured\nsecret/keycloak-keycloakx-database configured\nservice/keycloak-keycloakx-headless unchanged\nservice/keycloak-keycloakx-http unchanged\nstatefulset.apps/keycloak-keycloakx configured\ningress.networking.k8s.io/keycloak-ingress unchanged\n```\n\n- Visit in the browser [https://keycloak.<DOMAIN_NAME>/auth](https://keycloak.<DOMAIN_NAME>/auth)\n\n![img](.images/image-2023-07-03-14-53-32.png)\n\n- Going to admin console, you should be asked to login with username: admin and password: secret123\n- After login, you should be able to see the admin console\n\n![img](.images/image-2023-07-03-14-56-06.png)"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_043_gcp_k8s__codecentric_keycloak__bitnami_postgres___using_41_42/base/keycloakx/ingress_keycloak.yaml",
    "content": "\napiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  name: keycloak-ingress\n  namespace: keycloak\n  annotations:\n    # kubernetes.io/ingress.class: \"nginx\" # Warning: annotation \"kubernetes.io/ingress.class\" is deprecated, please use 'spec.ingressClassName' instead\n    cert-manager.io/cluster-issuer: \"letsencrypt-prod\" \nspec:\n  ingressClassName: \"nginx\"\n  tls:\n  - hosts:\n    - keycloak.DOMAIN_NAME # replace with your domain\n    secretName: keycloak-tls # This is the secret that will hold the SSL certificate\n  rules:\n  - host: keycloak.DOMAIN_NAME # replace with your domain\n    http:\n      paths:\n      - pathType: Prefix\n        path: \"/\"\n        backend:\n          service:\n            name: keycloak-keycloakx-http\n            port:\n              number: 80"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_043_gcp_k8s__codecentric_keycloak__bitnami_postgres___using_41_42/base/keycloakx/kustomization.yaml",
    "content": "namespace: keycloak\n\nresources:\n  - ingress_keycloak.yaml\n  - ../../vendor/keycloakx"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_043_gcp_k8s__codecentric_keycloak__bitnami_postgres___using_41_42/base/postgresql/namespace.yaml",
    "content": "apiVersion: v1\nkind: Namespace\nmetadata:\n  name: keycloak\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_043_gcp_k8s__codecentric_keycloak__bitnami_postgres___using_41_42/build/keycloakx_all.yaml",
    "content": "apiVersion: v1\nautomountServiceAccountToken: true\nimagePullSecrets: []\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/instance: keycloak\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: keycloakx\n    app.kubernetes.io/version: 20.0.3\n    helm.sh/chart: keycloakx-2.2.1\n  name: keycloak-keycloakx\n  namespace: keycloak\n---\napiVersion: v1\nkind: Secret\nmetadata:\n  annotations:\n    my-test-annotation: Test secret for keycloak-keycloakx\n  labels:\n    app.kubernetes.io/instance: keycloak\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: keycloakx\n    app.kubernetes.io/version: 20.0.3\n    helm.sh/chart: keycloakx-2.2.1\n  name: keycloak-keycloakx-admin-creds\n  namespace: keycloak\nstringData:\n  password: secret123\n  user: admin\ntype: Opaque\n---\napiVersion: v1\nkind: Secret\nmetadata:\n  labels:\n    app.kubernetes.io/instance: keycloak\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: keycloakx\n    app.kubernetes.io/version: 20.0.3\n    helm.sh/chart: keycloakx-2.2.1\n  name: keycloak-keycloakx-database\n  namespace: keycloak\nstringData:\n  password: keycloakpassword\ntype: Opaque\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: headless\n    app.kubernetes.io/instance: keycloak\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: keycloakx\n    app.kubernetes.io/version: 20.0.3\n    helm.sh/chart: keycloakx-2.2.1\n  name: keycloak-keycloakx-headless\n  namespace: keycloak\nspec:\n  clusterIP: None\n  ports:\n  - name: http\n    port: 80\n    protocol: TCP\n    targetPort: http\n  selector:\n    app.kubernetes.io/instance: keycloak\n    app.kubernetes.io/name: keycloakx\n  type: ClusterIP\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: http\n    app.kubernetes.io/instance: keycloak\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: keycloakx\n    app.kubernetes.io/version: 20.0.3\n    helm.sh/chart: keycloakx-2.2.1\n  name: keycloak-keycloakx-http\n  namespace: keycloak\nspec:\n  ports:\n  - name: http\n    port: 80\n    protocol: TCP\n    targetPort: http\n  - name: https\n    port: 8443\n    protocol: TCP\n    targetPort: https\n  selector:\n    app.kubernetes.io/instance: keycloak\n    app.kubernetes.io/name: keycloakx\n  type: ClusterIP\n---\napiVersion: apps/v1\nkind: StatefulSet\nmetadata:\n  labels:\n    app.kubernetes.io/instance: keycloak\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/name: keycloakx\n    app.kubernetes.io/version: 20.0.3\n    helm.sh/chart: keycloakx-2.2.1\n  name: keycloak-keycloakx\n  namespace: keycloak\nspec:\n  podManagementPolicy: OrderedReady\n  replicas: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/instance: keycloak\n      app.kubernetes.io/name: keycloakx\n  serviceName: keycloak-keycloakx-headless\n  template:\n    metadata:\n      annotations:\n        checksum/config-startup: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\n        checksum/secrets: b2466d2981a74c44b000743be38b8b8d83b467daecd0dfae8b486927d8e6649a\n      labels:\n        app.kubernetes.io/instance: keycloak\n        app.kubernetes.io/name: keycloakx\n    spec:\n      affinity:\n        podAntiAffinity:\n          preferredDuringSchedulingIgnoredDuringExecution:\n          - podAffinityTerm:\n              labelSelector:\n                matchExpressions:\n                - key: app.kubernetes.io/component\n                  operator: NotIn\n                  values:\n                  - test\n                matchLabels:\n                  app.kubernetes.io/instance: keycloak\n                  app.kubernetes.io/name: keycloakx\n              topologyKey: topology.kubernetes.io/zone\n            weight: 100\n          requiredDuringSchedulingIgnoredDuringExecution:\n          - labelSelector:\n              matchExpressions:\n              - key: app.kubernetes.io/component\n                operator: NotIn\n                values:\n                - test\n              matchLabels:\n                app.kubernetes.io/instance: keycloak\n                app.kubernetes.io/name: keycloakx\n            topologyKey: kubernetes.io/hostname\n      containers:\n      - command:\n        - /opt/keycloak/bin/kc.sh\n        - --verbose\n        - start\n        - --http-enabled=true\n        - --http-port=8080\n        - --hostname-strict=false\n        - --hostname-strict-https=false\n        - --spi-events-listener-jboss-logging-success-level=info\n        - --spi-events-listener-jboss-logging-error-level=warn\n        env:\n        - name: KC_HTTP_RELATIVE_PATH\n          value: /auth\n        - name: KC_CACHE\n          value: ispn\n        - name: KC_CACHE_STACK\n          value: kubernetes\n        - name: KC_PROXY\n          value: edge\n        - name: KC_DB\n          value: postgres\n        - name: KC_DB_URL_HOST\n          value: keycloak-db-postgresql\n        - name: KC_DB_URL_PORT\n          value: \"5432\"\n        - name: KC_DB_URL_DATABASE\n          value: keycloak_db\n        - name: KC_DB_USERNAME\n          value: keycloak\n        - name: KC_DB_PASSWORD\n          valueFrom:\n            secretKeyRef:\n              key: password\n              name: keycloak-keycloakx-database\n        - name: KC_METRICS_ENABLED\n          value: \"true\"\n        - name: KC_HEALTH_ENABLED\n          value: \"true\"\n        - name: KEYCLOAK_ADMIN\n          valueFrom:\n            secretKeyRef:\n              key: user\n              name: keycloak-keycloakx-admin-creds\n        - name: KEYCLOAK_ADMIN_PASSWORD\n          valueFrom:\n            secretKeyRef:\n              key: password\n              name: keycloak-keycloakx-admin-creds\n        - name: JAVA_OPTS_APPEND\n          value: -XX:+UseContainerSupport -XX:MaxRAMPercentage=50.0 -Djava.awt.headless=true\n            -Djgroups.dns.query=keycloak-keycloakx-headless\n        envFrom: null\n        image: quay.io/keycloak/keycloak:20.0.3\n        imagePullPolicy: IfNotPresent\n        livenessProbe:\n          httpGet:\n            path: /auth/health/live\n            port: http\n          initialDelaySeconds: 0\n          timeoutSeconds: 5\n        name: keycloak\n        ports:\n        - containerPort: 8080\n          name: http\n          protocol: TCP\n        - containerPort: 8443\n          name: https\n          protocol: TCP\n        readinessProbe:\n          httpGet:\n            path: /auth/health/ready\n            port: http\n          initialDelaySeconds: 10\n          timeoutSeconds: 1\n        resources: {}\n        securityContext:\n          runAsNonRoot: true\n          runAsUser: 1000\n        startupProbe:\n          failureThreshold: 60\n          httpGet:\n            path: /auth/health\n            port: http\n          initialDelaySeconds: 15\n          periodSeconds: 5\n          timeoutSeconds: 1\n        volumeMounts: null\n      enableServiceLinks: true\n      initContainers:\n      - command:\n        - sh\n        - -c\n        - |\n          echo 'Waiting for Database to become ready...'\n\n          until printf \".\" && nc -z -w 2 keycloak-db-postgresql 5432; do\n              sleep 2;\n          done;\n\n          echo 'Database OK ✓'\n        image: docker.io/busybox:1.32\n        imagePullPolicy: IfNotPresent\n        name: dbchecker\n        resources:\n          limits:\n            cpu: 20m\n            memory: 32Mi\n          requests:\n            cpu: 20m\n            memory: 32Mi\n        securityContext:\n          allowPrivilegeEscalation: false\n          runAsGroup: 1000\n          runAsNonRoot: true\n          runAsUser: 1000\n      restartPolicy: Always\n      securityContext:\n        fsGroup: 1000\n      serviceAccountName: keycloak-keycloakx\n      terminationGracePeriodSeconds: 60\n      volumes: null\n  updateStrategy:\n    type: RollingUpdate\n---\napiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  annotations:\n    cert-manager.io/cluster-issuer: letsencrypt-prod\n  name: keycloak-ingress\n  namespace: keycloak\nspec:\n  ingressClassName: nginx\n  rules:\n  - host: keycloak.DOMAIN_NAME\n    http:\n      paths:\n      - backend:\n          service:\n            name: keycloak-keycloakx-http\n            port:\n              number: 80\n        path: /\n        pathType: Prefix\n  tls:\n  - hosts:\n    - keycloak.DOMAIN_NAME\n    secretName: keycloak-tls\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/ReadMe.md",
    "content": "# Prometheus Operator -- Kube Prometheus, Grafana and Alertmanager\n\n- [prometheus-operator/kube-prometheus](https://github.com/prometheus-operator/kube-prometheus)\n\n## GKE Kubernetes Version\n\n```bash\n$ kubectl version --short\n\nClient Version: v1.27.3\nKustomize Version: v5.0.1\nServer Version: v1.27.2-gke.1200\n```\n\n\n## Clone the repo\n\n\n```bash\n$ git clone https://github.com/prometheus-operator/kube-prometheus.git\n.\n$ ls\nkube-prometheus manifests\n$ rm -rf kube-prometheus \n```\n\n## Deploy kube-prometheus\n\n```bash\n$ kubectl apply --server-side -f manifests/setup\n$ kubectl wait \\\n--for condition=Established \\\n--all CustomResourceDefinition \\\n--namespace=monitoring\n$ kubectl apply -f manifests/\n```\n\n> Insufficient regional quota to satisfy request: resource \"SSD_TOTAL_GB\": request requires '100.0' and is short '94.0'. project has a quota of '250.0' with '6.0' available. View and manage quotas at <URL>\n\n> https://stackoverflow.com/questions/58578695/insufficient-regional-quota-to-satisfy-request-resource-in-use-addresses\n\n> sort data by Current Usage.\n\n- Validate the pods\n\n```bash\n$ kubectl get pods -n monitoring   \nNAME                                   READY   STATUS    RESTARTS   AGE\nalertmanager-main-0                    2/2     Running   0          47s\nalertmanager-main-1                    2/2     Running   0          47s\nalertmanager-main-2                    2/2     Running   0          47s\nblackbox-exporter-85b4fb4b69-xrktv     3/3     Running   0          9m44s\ngrafana-6ccd547d9-tbl54                1/1     Running   0          9m44s\nkube-state-metrics-785cf8974b-5gzgn    3/3     Running   0          9m44s\nprometheus-adapter-648959cd84-cx5vn    1/1     Running   0          9m44s\nprometheus-adapter-648959cd84-q6qxr    1/1     Running   0          9m44s\nprometheus-k8s-0                       2/2     Running   0          46s\nprometheus-k8s-1                       2/2     Running   0          46s\nprometheus-operator-5745bf7d85-24qnk   2/2     Running   0          19m\n```\n\n- Access prometheus\n\n```bash\nkubectl --namespace monitoring port-forward svc/prometheus-k8s 9090\nForwarding from 127.0.0.1:9090 -> 9090\nForwarding from [::1]:9090 -> 9090\n\n# Another terminal\n$ curl -s -o /dev/null -w \"%{http_code}\" http://localhost:9090/graph                                                                                \n200\n```\n\n- Access grafana\n\n```bash\n$ kubectl --namespace monitoring port-forward svc/grafana 3000\nForwarding from 127.0.0.1:3000 -> 3000\nForwarding from [::1]:3000 -> 3000\n\n# Another terminal; default user/password: admin/admin\n$ curl -s -o /dev/null -w \"%{http_code}\" http://localhost:3000/login\n200\n```\n\n- Access alertmanager\n\n```bash\n$ kubectl --namespace monitoring port-forward svc/alertmanager-main 9093\nForwarding from 127.0.0.1:9093 -> 9093\nForwarding from [::1]:9093 -> 9093\n\n# Another terminal\n$ curl -s -o /dev/null -w \"%{http_code}\" http://localhost:9093/\\#/alerts                           \n200\n```\n\n- Let's create ingress for all\n\n```bash\n$ mkdir -p vendor/kube_prometheus\n.\n# move manifests folder to vendor/kube_prometheus\n$ mv vendor/manifets vendor/kube_prometheus/\n.\n$ mkdir -p base/kube_prometheus\n$ touch base/kube_prometheus/prometheus_ingress.yaml\n$ touch base/kube_prometheus/grafana_ingress.yaml\n$ touch base/kube_prometheus/alertmanager_ingress.yaml\n# Creat kustomization.yaml\n$ touch base/kube_prometheus/kustomization.yaml\n$ mkdir build\n$ kustomize build base/kube_prometheus -o build/kube_prometheus_all.yaml\n```\n\n- Let's deploy ingress\n\n```bash\n$ export DOMAIN_NAME=<YOUR_DOMAIN_NAME>\n.\n$ sed -e \"s/DOMAIN_NAME/$DOMAIN_NAME/g\" base/kube_prometheus/prometheus_ingress.yaml | kubectl apply -f -\n.\n```\n\n- Access prometheus at `https://prometheus.<YOUR_DOMAIN_NAME>/graph`\n\n![img](.images/image-2023-07-03-21-12-26.png)\n\n- Deploy ingress for grafana\n\n```bash\n$ sed -e \"s/DOMAIN_NAME/$DOMAIN_NAME/g\" base/kube_prometheus/grafana_ingress.yaml | kubectl apply -f -\n.\n```\n\n- Access grafana at `https://grafana.<YOUR_DOMAIN_NAME>/login`\n\n![img](.images/image-2023-07-03-21-23-33.png)\n\n- Deploy ingress for alertmanager\n\n```bash\n$ sed -e \"s/DOMAIN_NAME/$DOMAIN_NAME/g\" base/kube_prometheus/alertmanager_ingress.yaml | kubectl apply -f -\n.\n```\n\n- Access alertmanager at `https://alertmanager.<YOUR_DOMAIN_NAME>/#/alerts`\n\n![img](.images/image-2023-07-03-21-24-47.png)"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/base/kube_prometheus/alertmanager_ingress.yaml",
    "content": "apiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  name: alertmanager-ingress\n  namespace: monitoring \n  annotations:\n    # kubernetes.io/ingress.class: \"nginx\" # Warning: annotation \"kubernetes.io/ingress.class\" is deprecated, please use 'spec.ingressClassName' instead\n    cert-manager.io/cluster-issuer: \"letsencrypt-prod\" \nspec:\n  ingressClassName: \"nginx\"\n  tls:\n  - hosts:\n    - alertmanager.DOMAIN_NAME # replace with your domain\n    secretName: alertmanager-tls # This is the secret that will hold the SSL certificate\n  rules:\n  - host: alertmanager.DOMAIN_NAME # replace with your domain\n    http:\n      paths:\n      - pathType: Prefix\n        path: \"/\"\n        backend:\n          service:\n            name: alertmanager-main\n            port:\n              number: 9093"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/base/kube_prometheus/grafana_ingress.yaml",
    "content": "apiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  name: grafana-ingress\n  namespace: monitoring \n  annotations:\n    # kubernetes.io/ingress.class: \"nginx\" # Warning: annotation \"kubernetes.io/ingress.class\" is deprecated, please use 'spec.ingressClassName' instead\n    cert-manager.io/cluster-issuer: \"letsencrypt-prod\" \nspec:\n  ingressClassName: \"nginx\"\n  tls:\n  - hosts:\n    - grafana.DOMAIN_NAME # replace with your domain\n    secretName: grafana-tls # This is the secret that will hold the SSL certificate\n  rules:\n  - host: grafana.DOMAIN_NAME # replace with your domain\n    http:\n      paths:\n      - pathType: Prefix\n        path: \"/\"\n        backend:\n          service:\n            name: grafana\n            port:\n              number: 3000"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/base/kube_prometheus/kustomization.yaml",
    "content": "\n# $ find . -type f | awk {'print \"  - \" $1'}\nresources:\n  - ./alertmanager_ingress.yaml\n  - ./prometheus_ingress.yaml\n  - ./grafana_ingress.yaml\n  - ../../vendor/kube_prometheus"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/base/kube_prometheus/prometheus_ingress.yaml",
    "content": "apiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  name: prometheus-ingress\n  namespace: monitoring \n  annotations:\n    # kubernetes.io/ingress.class: \"nginx\" # Warning: annotation \"kubernetes.io/ingress.class\" is deprecated, please use 'spec.ingressClassName' instead\n    cert-manager.io/cluster-issuer: \"letsencrypt-prod\" \nspec:\n  ingressClassName: \"nginx\"\n  tls:\n  - hosts:\n    - prometheus.DOMAIN_NAME # replace with your domain\n    secretName: prometheus-tls # This is the secret that will hold the SSL certificate\n  rules:\n  - host: prometheus.DOMAIN_NAME # replace with your domain\n    http:\n      paths:\n      - pathType: Prefix\n        path: \"/\"\n        backend:\n          service:\n            name: prometheus-k8s\n            port:\n              number: 9090"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/build/kube_prometheus_all.yaml",
    "content": "apiVersion: v1\nkind: Namespace\nmetadata:\n  name: monitoring\n---\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.11.1\n  creationTimestamp: null\n  name: alertmanagerconfigs.monitoring.coreos.com\nspec:\n  group: monitoring.coreos.com\n  names:\n    categories:\n    - prometheus-operator\n    kind: AlertmanagerConfig\n    listKind: AlertmanagerConfigList\n    plural: alertmanagerconfigs\n    shortNames:\n    - amcfg\n    singular: alertmanagerconfig\n  scope: Namespaced\n  versions:\n  - name: v1alpha1\n    schema:\n      openAPIV3Schema:\n        description: AlertmanagerConfig defines a namespaced AlertmanagerConfig to\n          be aggregated across multiple namespaces configuring one Alertmanager cluster.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: AlertmanagerConfigSpec is a specification of the desired\n              behavior of the Alertmanager configuration. By definition, the Alertmanager\n              configuration only applies to alerts for which the `namespace` label\n              is equal to the namespace of the AlertmanagerConfig resource.\n            properties:\n              inhibitRules:\n                description: List of inhibition rules. The rules will only apply to\n                  alerts matching the resource's namespace.\n                items:\n                  description: InhibitRule defines an inhibition rule that allows\n                    to mute alerts when other alerts are already firing. See https://prometheus.io/docs/alerting/latest/configuration/#inhibit_rule\n                  properties:\n                    equal:\n                      description: Labels that must have an equal value in the source\n                        and target alert for the inhibition to take effect.\n                      items:\n                        type: string\n                      type: array\n                    sourceMatch:\n                      description: Matchers for which one or more alerts have to exist\n                        for the inhibition to take effect. The operator enforces that\n                        the alert matches the resource's namespace.\n                      items:\n                        description: Matcher defines how to match on alert's labels.\n                        properties:\n                          matchType:\n                            description: Match operation available with AlertManager\n                              >= v0.22.0 and takes precedence over Regex (deprecated)\n                              if non-empty.\n                            enum:\n                            - '!='\n                            - =\n                            - =~\n                            - '!~'\n                            type: string\n                          name:\n                            description: Label to match.\n                            minLength: 1\n                            type: string\n                          regex:\n                            description: Whether to match on equality (false) or regular-expression\n                              (true). Deprecated as of AlertManager >= v0.22.0 where\n                              a user should use MatchType instead.\n                            type: boolean\n                          value:\n                            description: Label value to match.\n                            type: string\n                        required:\n                        - name\n                        type: object\n                      type: array\n                    targetMatch:\n                      description: Matchers that have to be fulfilled in the alerts\n                        to be muted. The operator enforces that the alert matches\n                        the resource's namespace.\n                      items:\n                        description: Matcher defines how to match on alert's labels.\n                        properties:\n                          matchType:\n                            description: Match operation available with AlertManager\n                              >= v0.22.0 and takes precedence over Regex (deprecated)\n                              if non-empty.\n                            enum:\n                            - '!='\n                            - =\n                            - =~\n                            - '!~'\n                            type: string\n                          name:\n                            description: Label to match.\n                            minLength: 1\n                            type: string\n                          regex:\n                            description: Whether to match on equality (false) or regular-expression\n                              (true). Deprecated as of AlertManager >= v0.22.0 where\n                              a user should use MatchType instead.\n                            type: boolean\n                          value:\n                            description: Label value to match.\n                            type: string\n                        required:\n                        - name\n                        type: object\n                      type: array\n                  type: object\n                type: array\n              muteTimeIntervals:\n                description: List of MuteTimeInterval specifying when the routes should\n                  be muted.\n                items:\n                  description: MuteTimeInterval specifies the periods in time when\n                    notifications will be muted\n                  properties:\n                    name:\n                      description: Name of the time interval\n                      type: string\n                    timeIntervals:\n                      description: TimeIntervals is a list of TimeInterval\n                      items:\n                        description: TimeInterval describes intervals of time\n                        properties:\n                          daysOfMonth:\n                            description: DaysOfMonth is a list of DayOfMonthRange\n                            items:\n                              description: DayOfMonthRange is an inclusive range of\n                                days of the month beginning at 1\n                              properties:\n                                end:\n                                  description: End of the inclusive range\n                                  maximum: 31\n                                  minimum: -31\n                                  type: integer\n                                start:\n                                  description: Start of the inclusive range\n                                  maximum: 31\n                                  minimum: -31\n                                  type: integer\n                              type: object\n                            type: array\n                          months:\n                            description: Months is a list of MonthRange\n                            items:\n                              description: MonthRange is an inclusive range of months\n                                of the year beginning in January Months can be specified\n                                by name (e.g 'January') by numerical month (e.g '1')\n                                or as an inclusive range (e.g 'January:March', '1:3',\n                                '1:March')\n                              pattern: ^((?i)january|february|march|april|may|june|july|august|september|october|november|december|[1-12])(?:((:((?i)january|february|march|april|may|june|july|august|september|october|november|december|[1-12]))$)|$)\n                              type: string\n                            type: array\n                          times:\n                            description: Times is a list of TimeRange\n                            items:\n                              description: TimeRange defines a start and end time\n                                in 24hr format\n                              properties:\n                                endTime:\n                                  description: EndTime is the end time in 24hr format.\n                                  pattern: ^((([01][0-9])|(2[0-3])):[0-5][0-9])$|(^24:00$)\n                                  type: string\n                                startTime:\n                                  description: StartTime is the start time in 24hr\n                                    format.\n                                  pattern: ^((([01][0-9])|(2[0-3])):[0-5][0-9])$|(^24:00$)\n                                  type: string\n                              type: object\n                            type: array\n                          weekdays:\n                            description: Weekdays is a list of WeekdayRange\n                            items:\n                              description: WeekdayRange is an inclusive range of days\n                                of the week beginning on Sunday Days can be specified\n                                by name (e.g 'Sunday') or as an inclusive range (e.g\n                                'Monday:Friday')\n                              pattern: ^((?i)sun|mon|tues|wednes|thurs|fri|satur)day(?:((:(sun|mon|tues|wednes|thurs|fri|satur)day)$)|$)\n                              type: string\n                            type: array\n                          years:\n                            description: Years is a list of YearRange\n                            items:\n                              description: YearRange is an inclusive range of years\n                              pattern: ^2\\d{3}(?::2\\d{3}|$)\n                              type: string\n                            type: array\n                        type: object\n                      type: array\n                  type: object\n                type: array\n              receivers:\n                description: List of receivers.\n                items:\n                  description: Receiver defines one or more notification integrations.\n                  properties:\n                    emailConfigs:\n                      description: List of Email configurations.\n                      items:\n                        description: EmailConfig configures notifications via Email.\n                        properties:\n                          authIdentity:\n                            description: The identity to use for authentication.\n                            type: string\n                          authPassword:\n                            description: The secret's key that contains the password\n                              to use for authentication. The secret needs to be in\n                              the same namespace as the AlertmanagerConfig object\n                              and accessible by the Prometheus Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                          authSecret:\n                            description: The secret's key that contains the CRAM-MD5\n                              secret. The secret needs to be in the same namespace\n                              as the AlertmanagerConfig object and accessible by the\n                              Prometheus Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                          authUsername:\n                            description: The username to use for authentication.\n                            type: string\n                          from:\n                            description: The sender address.\n                            type: string\n                          headers:\n                            description: Further headers email header key/value pairs.\n                              Overrides any headers previously set by the notification\n                              implementation.\n                            items:\n                              description: KeyValue defines a (key, value) tuple.\n                              properties:\n                                key:\n                                  description: Key of the tuple.\n                                  minLength: 1\n                                  type: string\n                                value:\n                                  description: Value of the tuple.\n                                  type: string\n                              required:\n                              - key\n                              - value\n                              type: object\n                            type: array\n                          hello:\n                            description: The hostname to identify to the SMTP server.\n                            type: string\n                          html:\n                            description: The HTML body of the email notification.\n                            type: string\n                          requireTLS:\n                            description: The SMTP TLS requirement. Note that Go does\n                              not support unencrypted connections to remote SMTP endpoints.\n                            type: boolean\n                          sendResolved:\n                            description: Whether or not to notify about resolved alerts.\n                            type: boolean\n                          smarthost:\n                            description: The SMTP host and port through which emails\n                              are sent. E.g. example.com:25\n                            type: string\n                          text:\n                            description: The text body of the email notification.\n                            type: string\n                          tlsConfig:\n                            description: TLS configuration\n                            properties:\n                              ca:\n                                description: Certificate authority used when verifying\n                                  server certificates.\n                                properties:\n                                  configMap:\n                                    description: ConfigMap containing data to use\n                                      for the targets.\n                                    properties:\n                                      key:\n                                        description: The key to select.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the ConfigMap\n                                          or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  secret:\n                                    description: Secret containing data to use for\n                                      the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              cert:\n                                description: Client certificate to present when doing\n                                  client-authentication.\n                                properties:\n                                  configMap:\n                                    description: ConfigMap containing data to use\n                                      for the targets.\n                                    properties:\n                                      key:\n                                        description: The key to select.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the ConfigMap\n                                          or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  secret:\n                                    description: Secret containing data to use for\n                                      the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              insecureSkipVerify:\n                                description: Disable target certificate validation.\n                                type: boolean\n                              keySecret:\n                                description: Secret containing the client key file\n                                  for the targets.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              serverName:\n                                description: Used to verify the hostname for the targets.\n                                type: string\n                            type: object\n                          to:\n                            description: The email address to send notifications to.\n                            type: string\n                        type: object\n                      type: array\n                    name:\n                      description: Name of the receiver. Must be unique across all\n                        items from the list.\n                      minLength: 1\n                      type: string\n                    opsgenieConfigs:\n                      description: List of OpsGenie configurations.\n                      items:\n                        description: OpsGenieConfig configures notifications via OpsGenie.\n                          See https://prometheus.io/docs/alerting/latest/configuration/#opsgenie_config\n                        properties:\n                          actions:\n                            description: Comma separated list of actions that will\n                              be available for the alert.\n                            type: string\n                          apiKey:\n                            description: The secret's key that contains the OpsGenie\n                              API key. The secret needs to be in the same namespace\n                              as the AlertmanagerConfig object and accessible by the\n                              Prometheus Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                          apiURL:\n                            description: The URL to send OpsGenie API requests to.\n                            type: string\n                          description:\n                            description: Description of the incident.\n                            type: string\n                          details:\n                            description: A set of arbitrary key/value pairs that provide\n                              further detail about the incident.\n                            items:\n                              description: KeyValue defines a (key, value) tuple.\n                              properties:\n                                key:\n                                  description: Key of the tuple.\n                                  minLength: 1\n                                  type: string\n                                value:\n                                  description: Value of the tuple.\n                                  type: string\n                              required:\n                              - key\n                              - value\n                              type: object\n                            type: array\n                          entity:\n                            description: Optional field that can be used to specify\n                              which domain alert is related to.\n                            type: string\n                          httpConfig:\n                            description: HTTP client configuration.\n                            properties:\n                              authorization:\n                                description: Authorization header configuration for\n                                  the client. This is mutually exclusive with BasicAuth\n                                  and is only available starting from Alertmanager\n                                  v0.22+.\n                                properties:\n                                  credentials:\n                                    description: Selects a key of a Secret in the\n                                      namespace that contains the credentials for\n                                      authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type:\n                                    description: \"Defines the authentication type.\n                                      The value is case-insensitive. \\n \\\"Basic\\\"\n                                      is not a supported value. \\n Default: \\\"Bearer\\\"\"\n                                    type: string\n                                type: object\n                              basicAuth:\n                                description: BasicAuth for the client. This is mutually\n                                  exclusive with Authorization. If both are defined,\n                                  BasicAuth takes precedence.\n                                properties:\n                                  password:\n                                    description: The secret in the service monitor\n                                      namespace that contains the password for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  username:\n                                    description: The secret in the service monitor\n                                      namespace that contains the username for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              bearerTokenSecret:\n                                description: The secret's key that contains the bearer\n                                  token to be used by the client for authentication.\n                                  The secret needs to be in the same namespace as\n                                  the AlertmanagerConfig object and accessible by\n                                  the Prometheus Operator.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                              followRedirects:\n                                description: FollowRedirects specifies whether the\n                                  client should follow HTTP 3xx redirects.\n                                type: boolean\n                              oauth2:\n                                description: OAuth2 client credentials used to fetch\n                                  a token for the targets.\n                                properties:\n                                  clientId:\n                                    description: The secret or configmap containing\n                                      the OAuth2 client id\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  clientSecret:\n                                    description: The secret containing the OAuth2\n                                      client secret\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  endpointParams:\n                                    additionalProperties:\n                                      type: string\n                                    description: Parameters to append to the token\n                                      URL\n                                    type: object\n                                  scopes:\n                                    description: OAuth2 scopes used for the token\n                                      request\n                                    items:\n                                      type: string\n                                    type: array\n                                  tokenUrl:\n                                    description: The URL to fetch the token from\n                                    minLength: 1\n                                    type: string\n                                required:\n                                - clientId\n                                - clientSecret\n                                - tokenUrl\n                                type: object\n                              proxyURL:\n                                description: Optional proxy URL.\n                                type: string\n                              tlsConfig:\n                                description: TLS configuration for the client.\n                                properties:\n                                  ca:\n                                    description: Certificate authority used when verifying\n                                      server certificates.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  cert:\n                                    description: Client certificate to present when\n                                      doing client-authentication.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  insecureSkipVerify:\n                                    description: Disable target certificate validation.\n                                    type: boolean\n                                  keySecret:\n                                    description: Secret containing the client key\n                                      file for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  serverName:\n                                    description: Used to verify the hostname for the\n                                      targets.\n                                    type: string\n                                type: object\n                            type: object\n                          message:\n                            description: Alert text limited to 130 characters.\n                            type: string\n                          note:\n                            description: Additional alert note.\n                            type: string\n                          priority:\n                            description: Priority level of alert. Possible values\n                              are P1, P2, P3, P4, and P5.\n                            type: string\n                          responders:\n                            description: List of responders responsible for notifications.\n                            items:\n                              description: OpsGenieConfigResponder defines a responder\n                                to an incident. One of `id`, `name` or `username`\n                                has to be defined.\n                              properties:\n                                id:\n                                  description: ID of the responder.\n                                  type: string\n                                name:\n                                  description: Name of the responder.\n                                  type: string\n                                type:\n                                  description: Type of responder.\n                                  enum:\n                                  - team\n                                  - teams\n                                  - user\n                                  - escalation\n                                  - schedule\n                                  minLength: 1\n                                  type: string\n                                username:\n                                  description: Username of the responder.\n                                  type: string\n                              required:\n                              - type\n                              type: object\n                            type: array\n                          sendResolved:\n                            description: Whether or not to notify about resolved alerts.\n                            type: boolean\n                          source:\n                            description: Backlink to the sender of the notification.\n                            type: string\n                          tags:\n                            description: Comma separated list of tags attached to\n                              the notifications.\n                            type: string\n                          updateAlerts:\n                            description: Whether to update message and description\n                              of the alert in OpsGenie if it already exists By default,\n                              the alert is never updated in OpsGenie, the new message\n                              only appears in activity log.\n                            type: boolean\n                        type: object\n                      type: array\n                    pagerdutyConfigs:\n                      description: List of PagerDuty configurations.\n                      items:\n                        description: PagerDutyConfig configures notifications via\n                          PagerDuty. See https://prometheus.io/docs/alerting/latest/configuration/#pagerduty_config\n                        properties:\n                          class:\n                            description: The class/type of the event.\n                            type: string\n                          client:\n                            description: Client identification.\n                            type: string\n                          clientURL:\n                            description: Backlink to the sender of notification.\n                            type: string\n                          component:\n                            description: The part or component of the affected system\n                              that is broken.\n                            type: string\n                          description:\n                            description: Description of the incident.\n                            type: string\n                          details:\n                            description: Arbitrary key/value pairs that provide further\n                              detail about the incident.\n                            items:\n                              description: KeyValue defines a (key, value) tuple.\n                              properties:\n                                key:\n                                  description: Key of the tuple.\n                                  minLength: 1\n                                  type: string\n                                value:\n                                  description: Value of the tuple.\n                                  type: string\n                              required:\n                              - key\n                              - value\n                              type: object\n                            type: array\n                          group:\n                            description: A cluster or grouping of sources.\n                            type: string\n                          httpConfig:\n                            description: HTTP client configuration.\n                            properties:\n                              authorization:\n                                description: Authorization header configuration for\n                                  the client. This is mutually exclusive with BasicAuth\n                                  and is only available starting from Alertmanager\n                                  v0.22+.\n                                properties:\n                                  credentials:\n                                    description: Selects a key of a Secret in the\n                                      namespace that contains the credentials for\n                                      authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type:\n                                    description: \"Defines the authentication type.\n                                      The value is case-insensitive. \\n \\\"Basic\\\"\n                                      is not a supported value. \\n Default: \\\"Bearer\\\"\"\n                                    type: string\n                                type: object\n                              basicAuth:\n                                description: BasicAuth for the client. This is mutually\n                                  exclusive with Authorization. If both are defined,\n                                  BasicAuth takes precedence.\n                                properties:\n                                  password:\n                                    description: The secret in the service monitor\n                                      namespace that contains the password for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  username:\n                                    description: The secret in the service monitor\n                                      namespace that contains the username for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              bearerTokenSecret:\n                                description: The secret's key that contains the bearer\n                                  token to be used by the client for authentication.\n                                  The secret needs to be in the same namespace as\n                                  the AlertmanagerConfig object and accessible by\n                                  the Prometheus Operator.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                              followRedirects:\n                                description: FollowRedirects specifies whether the\n                                  client should follow HTTP 3xx redirects.\n                                type: boolean\n                              oauth2:\n                                description: OAuth2 client credentials used to fetch\n                                  a token for the targets.\n                                properties:\n                                  clientId:\n                                    description: The secret or configmap containing\n                                      the OAuth2 client id\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  clientSecret:\n                                    description: The secret containing the OAuth2\n                                      client secret\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  endpointParams:\n                                    additionalProperties:\n                                      type: string\n                                    description: Parameters to append to the token\n                                      URL\n                                    type: object\n                                  scopes:\n                                    description: OAuth2 scopes used for the token\n                                      request\n                                    items:\n                                      type: string\n                                    type: array\n                                  tokenUrl:\n                                    description: The URL to fetch the token from\n                                    minLength: 1\n                                    type: string\n                                required:\n                                - clientId\n                                - clientSecret\n                                - tokenUrl\n                                type: object\n                              proxyURL:\n                                description: Optional proxy URL.\n                                type: string\n                              tlsConfig:\n                                description: TLS configuration for the client.\n                                properties:\n                                  ca:\n                                    description: Certificate authority used when verifying\n                                      server certificates.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  cert:\n                                    description: Client certificate to present when\n                                      doing client-authentication.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  insecureSkipVerify:\n                                    description: Disable target certificate validation.\n                                    type: boolean\n                                  keySecret:\n                                    description: Secret containing the client key\n                                      file for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  serverName:\n                                    description: Used to verify the hostname for the\n                                      targets.\n                                    type: string\n                                type: object\n                            type: object\n                          pagerDutyImageConfigs:\n                            description: A list of image details to attach that provide\n                              further detail about an incident.\n                            items:\n                              description: PagerDutyImageConfig attaches images to\n                                an incident\n                              properties:\n                                alt:\n                                  description: Alt is the optional alternative text\n                                    for the image.\n                                  type: string\n                                href:\n                                  description: Optional URL; makes the image a clickable\n                                    link.\n                                  type: string\n                                src:\n                                  description: Src of the image being attached to\n                                    the incident\n                                  type: string\n                              type: object\n                            type: array\n                          pagerDutyLinkConfigs:\n                            description: A list of link details to attach that provide\n                              further detail about an incident.\n                            items:\n                              description: PagerDutyLinkConfig attaches text links\n                                to an incident\n                              properties:\n                                alt:\n                                  description: Text that describes the purpose of\n                                    the link, and can be used as the link's text.\n                                  type: string\n                                href:\n                                  description: Href is the URL of the link to be attached\n                                  type: string\n                              type: object\n                            type: array\n                          routingKey:\n                            description: The secret's key that contains the PagerDuty\n                              integration key (when using Events API v2). Either this\n                              field or `serviceKey` needs to be defined. The secret\n                              needs to be in the same namespace as the AlertmanagerConfig\n                              object and accessible by the Prometheus Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                          sendResolved:\n                            description: Whether or not to notify about resolved alerts.\n                            type: boolean\n                          serviceKey:\n                            description: The secret's key that contains the PagerDuty\n                              service key (when using integration type \"Prometheus\").\n                              Either this field or `routingKey` needs to be defined.\n                              The secret needs to be in the same namespace as the\n                              AlertmanagerConfig object and accessible by the Prometheus\n                              Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                          severity:\n                            description: Severity of the incident.\n                            type: string\n                          url:\n                            description: The URL to send requests to.\n                            type: string\n                        type: object\n                      type: array\n                    pushoverConfigs:\n                      description: List of Pushover configurations.\n                      items:\n                        description: PushoverConfig configures notifications via Pushover.\n                          See https://prometheus.io/docs/alerting/latest/configuration/#pushover_config\n                        properties:\n                          expire:\n                            description: How long your notification will continue\n                              to be retried for, unless the user acknowledges the\n                              notification.\n                            pattern: ^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$\n                            type: string\n                          html:\n                            description: Whether notification message is HTML or plain\n                              text.\n                            type: boolean\n                          httpConfig:\n                            description: HTTP client configuration.\n                            properties:\n                              authorization:\n                                description: Authorization header configuration for\n                                  the client. This is mutually exclusive with BasicAuth\n                                  and is only available starting from Alertmanager\n                                  v0.22+.\n                                properties:\n                                  credentials:\n                                    description: Selects a key of a Secret in the\n                                      namespace that contains the credentials for\n                                      authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type:\n                                    description: \"Defines the authentication type.\n                                      The value is case-insensitive. \\n \\\"Basic\\\"\n                                      is not a supported value. \\n Default: \\\"Bearer\\\"\"\n                                    type: string\n                                type: object\n                              basicAuth:\n                                description: BasicAuth for the client. This is mutually\n                                  exclusive with Authorization. If both are defined,\n                                  BasicAuth takes precedence.\n                                properties:\n                                  password:\n                                    description: The secret in the service monitor\n                                      namespace that contains the password for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  username:\n                                    description: The secret in the service monitor\n                                      namespace that contains the username for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              bearerTokenSecret:\n                                description: The secret's key that contains the bearer\n                                  token to be used by the client for authentication.\n                                  The secret needs to be in the same namespace as\n                                  the AlertmanagerConfig object and accessible by\n                                  the Prometheus Operator.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                              followRedirects:\n                                description: FollowRedirects specifies whether the\n                                  client should follow HTTP 3xx redirects.\n                                type: boolean\n                              oauth2:\n                                description: OAuth2 client credentials used to fetch\n                                  a token for the targets.\n                                properties:\n                                  clientId:\n                                    description: The secret or configmap containing\n                                      the OAuth2 client id\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  clientSecret:\n                                    description: The secret containing the OAuth2\n                                      client secret\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  endpointParams:\n                                    additionalProperties:\n                                      type: string\n                                    description: Parameters to append to the token\n                                      URL\n                                    type: object\n                                  scopes:\n                                    description: OAuth2 scopes used for the token\n                                      request\n                                    items:\n                                      type: string\n                                    type: array\n                                  tokenUrl:\n                                    description: The URL to fetch the token from\n                                    minLength: 1\n                                    type: string\n                                required:\n                                - clientId\n                                - clientSecret\n                                - tokenUrl\n                                type: object\n                              proxyURL:\n                                description: Optional proxy URL.\n                                type: string\n                              tlsConfig:\n                                description: TLS configuration for the client.\n                                properties:\n                                  ca:\n                                    description: Certificate authority used when verifying\n                                      server certificates.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  cert:\n                                    description: Client certificate to present when\n                                      doing client-authentication.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  insecureSkipVerify:\n                                    description: Disable target certificate validation.\n                                    type: boolean\n                                  keySecret:\n                                    description: Secret containing the client key\n                                      file for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  serverName:\n                                    description: Used to verify the hostname for the\n                                      targets.\n                                    type: string\n                                type: object\n                            type: object\n                          message:\n                            description: Notification message.\n                            type: string\n                          priority:\n                            description: Priority, see https://pushover.net/api#priority\n                            type: string\n                          retry:\n                            description: How often the Pushover servers will send\n                              the same notification to the user. Must be at least\n                              30 seconds.\n                            pattern: ^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$\n                            type: string\n                          sendResolved:\n                            description: Whether or not to notify about resolved alerts.\n                            type: boolean\n                          sound:\n                            description: The name of one of the sounds supported by\n                              device clients to override the user's default sound\n                              choice\n                            type: string\n                          title:\n                            description: Notification title.\n                            type: string\n                          token:\n                            description: The secret's key that contains the registered\n                              application's API token, see https://pushover.net/apps.\n                              The secret needs to be in the same namespace as the\n                              AlertmanagerConfig object and accessible by the Prometheus\n                              Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                          url:\n                            description: A supplementary URL shown alongside the message.\n                            type: string\n                          urlTitle:\n                            description: A title for supplementary URL, otherwise\n                              just the URL is shown\n                            type: string\n                          userKey:\n                            description: The secret's key that contains the recipient\n                              user's user key. The secret needs to be in the same\n                              namespace as the AlertmanagerConfig object and accessible\n                              by the Prometheus Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                        type: object\n                      type: array\n                    slackConfigs:\n                      description: List of Slack configurations.\n                      items:\n                        description: SlackConfig configures notifications via Slack.\n                          See https://prometheus.io/docs/alerting/latest/configuration/#slack_config\n                        properties:\n                          actions:\n                            description: A list of Slack actions that are sent with\n                              each notification.\n                            items:\n                              description: SlackAction configures a single Slack action\n                                that is sent with each notification. See https://api.slack.com/docs/message-attachments#action_fields\n                                and https://api.slack.com/docs/message-buttons for\n                                more information.\n                              properties:\n                                confirm:\n                                  description: SlackConfirmationField protect users\n                                    from destructive actions or particularly distinguished\n                                    decisions by asking them to confirm their button\n                                    click one more time. See https://api.slack.com/docs/interactive-message-field-guide#confirmation_fields\n                                    for more information.\n                                  properties:\n                                    dismissText:\n                                      type: string\n                                    okText:\n                                      type: string\n                                    text:\n                                      minLength: 1\n                                      type: string\n                                    title:\n                                      type: string\n                                  required:\n                                  - text\n                                  type: object\n                                name:\n                                  type: string\n                                style:\n                                  type: string\n                                text:\n                                  minLength: 1\n                                  type: string\n                                type:\n                                  minLength: 1\n                                  type: string\n                                url:\n                                  type: string\n                                value:\n                                  type: string\n                              required:\n                              - text\n                              - type\n                              type: object\n                            type: array\n                          apiURL:\n                            description: The secret's key that contains the Slack\n                              webhook URL. The secret needs to be in the same namespace\n                              as the AlertmanagerConfig object and accessible by the\n                              Prometheus Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                          callbackId:\n                            type: string\n                          channel:\n                            description: The channel or user to send notifications\n                              to.\n                            type: string\n                          color:\n                            type: string\n                          fallback:\n                            type: string\n                          fields:\n                            description: A list of Slack fields that are sent with\n                              each notification.\n                            items:\n                              description: SlackField configures a single Slack field\n                                that is sent with each notification. Each field must\n                                contain a title, value, and optionally, a boolean\n                                value to indicate if the field is short enough to\n                                be displayed next to other fields designated as short.\n                                See https://api.slack.com/docs/message-attachments#fields\n                                for more information.\n                              properties:\n                                short:\n                                  type: boolean\n                                title:\n                                  minLength: 1\n                                  type: string\n                                value:\n                                  minLength: 1\n                                  type: string\n                              required:\n                              - title\n                              - value\n                              type: object\n                            type: array\n                          footer:\n                            type: string\n                          httpConfig:\n                            description: HTTP client configuration.\n                            properties:\n                              authorization:\n                                description: Authorization header configuration for\n                                  the client. This is mutually exclusive with BasicAuth\n                                  and is only available starting from Alertmanager\n                                  v0.22+.\n                                properties:\n                                  credentials:\n                                    description: Selects a key of a Secret in the\n                                      namespace that contains the credentials for\n                                      authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type:\n                                    description: \"Defines the authentication type.\n                                      The value is case-insensitive. \\n \\\"Basic\\\"\n                                      is not a supported value. \\n Default: \\\"Bearer\\\"\"\n                                    type: string\n                                type: object\n                              basicAuth:\n                                description: BasicAuth for the client. This is mutually\n                                  exclusive with Authorization. If both are defined,\n                                  BasicAuth takes precedence.\n                                properties:\n                                  password:\n                                    description: The secret in the service monitor\n                                      namespace that contains the password for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  username:\n                                    description: The secret in the service monitor\n                                      namespace that contains the username for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              bearerTokenSecret:\n                                description: The secret's key that contains the bearer\n                                  token to be used by the client for authentication.\n                                  The secret needs to be in the same namespace as\n                                  the AlertmanagerConfig object and accessible by\n                                  the Prometheus Operator.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                              followRedirects:\n                                description: FollowRedirects specifies whether the\n                                  client should follow HTTP 3xx redirects.\n                                type: boolean\n                              oauth2:\n                                description: OAuth2 client credentials used to fetch\n                                  a token for the targets.\n                                properties:\n                                  clientId:\n                                    description: The secret or configmap containing\n                                      the OAuth2 client id\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  clientSecret:\n                                    description: The secret containing the OAuth2\n                                      client secret\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  endpointParams:\n                                    additionalProperties:\n                                      type: string\n                                    description: Parameters to append to the token\n                                      URL\n                                    type: object\n                                  scopes:\n                                    description: OAuth2 scopes used for the token\n                                      request\n                                    items:\n                                      type: string\n                                    type: array\n                                  tokenUrl:\n                                    description: The URL to fetch the token from\n                                    minLength: 1\n                                    type: string\n                                required:\n                                - clientId\n                                - clientSecret\n                                - tokenUrl\n                                type: object\n                              proxyURL:\n                                description: Optional proxy URL.\n                                type: string\n                              tlsConfig:\n                                description: TLS configuration for the client.\n                                properties:\n                                  ca:\n                                    description: Certificate authority used when verifying\n                                      server certificates.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  cert:\n                                    description: Client certificate to present when\n                                      doing client-authentication.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  insecureSkipVerify:\n                                    description: Disable target certificate validation.\n                                    type: boolean\n                                  keySecret:\n                                    description: Secret containing the client key\n                                      file for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  serverName:\n                                    description: Used to verify the hostname for the\n                                      targets.\n                                    type: string\n                                type: object\n                            type: object\n                          iconEmoji:\n                            type: string\n                          iconURL:\n                            type: string\n                          imageURL:\n                            type: string\n                          linkNames:\n                            type: boolean\n                          mrkdwnIn:\n                            items:\n                              type: string\n                            type: array\n                          pretext:\n                            type: string\n                          sendResolved:\n                            description: Whether or not to notify about resolved alerts.\n                            type: boolean\n                          shortFields:\n                            type: boolean\n                          text:\n                            type: string\n                          thumbURL:\n                            type: string\n                          title:\n                            type: string\n                          titleLink:\n                            type: string\n                          username:\n                            type: string\n                        type: object\n                      type: array\n                    snsConfigs:\n                      description: List of SNS configurations\n                      items:\n                        description: SNSConfig configures notifications via AWS SNS.\n                          See https://prometheus.io/docs/alerting/latest/configuration/#sns_configs\n                        properties:\n                          apiURL:\n                            description: The SNS API URL i.e. https://sns.us-east-2.amazonaws.com.\n                              If not specified, the SNS API URL from the SNS SDK will\n                              be used.\n                            type: string\n                          attributes:\n                            additionalProperties:\n                              type: string\n                            description: SNS message attributes.\n                            type: object\n                          httpConfig:\n                            description: HTTP client configuration.\n                            properties:\n                              authorization:\n                                description: Authorization header configuration for\n                                  the client. This is mutually exclusive with BasicAuth\n                                  and is only available starting from Alertmanager\n                                  v0.22+.\n                                properties:\n                                  credentials:\n                                    description: Selects a key of a Secret in the\n                                      namespace that contains the credentials for\n                                      authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type:\n                                    description: \"Defines the authentication type.\n                                      The value is case-insensitive. \\n \\\"Basic\\\"\n                                      is not a supported value. \\n Default: \\\"Bearer\\\"\"\n                                    type: string\n                                type: object\n                              basicAuth:\n                                description: BasicAuth for the client. This is mutually\n                                  exclusive with Authorization. If both are defined,\n                                  BasicAuth takes precedence.\n                                properties:\n                                  password:\n                                    description: The secret in the service monitor\n                                      namespace that contains the password for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  username:\n                                    description: The secret in the service monitor\n                                      namespace that contains the username for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              bearerTokenSecret:\n                                description: The secret's key that contains the bearer\n                                  token to be used by the client for authentication.\n                                  The secret needs to be in the same namespace as\n                                  the AlertmanagerConfig object and accessible by\n                                  the Prometheus Operator.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                              followRedirects:\n                                description: FollowRedirects specifies whether the\n                                  client should follow HTTP 3xx redirects.\n                                type: boolean\n                              oauth2:\n                                description: OAuth2 client credentials used to fetch\n                                  a token for the targets.\n                                properties:\n                                  clientId:\n                                    description: The secret or configmap containing\n                                      the OAuth2 client id\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  clientSecret:\n                                    description: The secret containing the OAuth2\n                                      client secret\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  endpointParams:\n                                    additionalProperties:\n                                      type: string\n                                    description: Parameters to append to the token\n                                      URL\n                                    type: object\n                                  scopes:\n                                    description: OAuth2 scopes used for the token\n                                      request\n                                    items:\n                                      type: string\n                                    type: array\n                                  tokenUrl:\n                                    description: The URL to fetch the token from\n                                    minLength: 1\n                                    type: string\n                                required:\n                                - clientId\n                                - clientSecret\n                                - tokenUrl\n                                type: object\n                              proxyURL:\n                                description: Optional proxy URL.\n                                type: string\n                              tlsConfig:\n                                description: TLS configuration for the client.\n                                properties:\n                                  ca:\n                                    description: Certificate authority used when verifying\n                                      server certificates.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  cert:\n                                    description: Client certificate to present when\n                                      doing client-authentication.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  insecureSkipVerify:\n                                    description: Disable target certificate validation.\n                                    type: boolean\n                                  keySecret:\n                                    description: Secret containing the client key\n                                      file for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  serverName:\n                                    description: Used to verify the hostname for the\n                                      targets.\n                                    type: string\n                                type: object\n                            type: object\n                          message:\n                            description: The message content of the SNS notification.\n                            type: string\n                          phoneNumber:\n                            description: Phone number if message is delivered via\n                              SMS in E.164 format. If you don't specify this value,\n                              you must specify a value for the TopicARN or TargetARN.\n                            type: string\n                          sendResolved:\n                            description: Whether or not to notify about resolved alerts.\n                            type: boolean\n                          sigv4:\n                            description: Configures AWS's Signature Verification 4\n                              signing process to sign requests.\n                            properties:\n                              accessKey:\n                                description: AccessKey is the AWS API key. If not\n                                  specified, the environment variable `AWS_ACCESS_KEY_ID`\n                                  is used.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              profile:\n                                description: Profile is the named AWS profile used\n                                  to authenticate.\n                                type: string\n                              region:\n                                description: Region is the AWS region. If blank, the\n                                  region from the default credentials chain used.\n                                type: string\n                              roleArn:\n                                description: RoleArn is the named AWS profile used\n                                  to authenticate.\n                                type: string\n                              secretKey:\n                                description: SecretKey is the AWS API secret. If not\n                                  specified, the environment variable `AWS_SECRET_ACCESS_KEY`\n                                  is used.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            type: object\n                          subject:\n                            description: Subject line when the message is delivered\n                              to email endpoints.\n                            type: string\n                          targetARN:\n                            description: The  mobile platform endpoint ARN if message\n                              is delivered via mobile notifications. If you don't\n                              specify this value, you must specify a value for the\n                              topic_arn or PhoneNumber.\n                            type: string\n                          topicARN:\n                            description: SNS topic ARN, i.e. arn:aws:sns:us-east-2:698519295917:My-Topic\n                              If you don't specify this value, you must specify a\n                              value for the PhoneNumber or TargetARN.\n                            type: string\n                        type: object\n                      type: array\n                    telegramConfigs:\n                      description: List of Telegram configurations.\n                      items:\n                        description: TelegramConfig configures notifications via Telegram.\n                          See https://prometheus.io/docs/alerting/latest/configuration/#telegram_config\n                        properties:\n                          apiURL:\n                            description: The Telegram API URL i.e. https://api.telegram.org.\n                              If not specified, default API URL will be used.\n                            type: string\n                          botToken:\n                            description: Telegram bot token The secret needs to be\n                              in the same namespace as the AlertmanagerConfig object\n                              and accessible by the Prometheus Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                          chatID:\n                            description: The Telegram chat ID.\n                            format: int64\n                            type: integer\n                          disableNotifications:\n                            description: Disable telegram notifications\n                            type: boolean\n                          httpConfig:\n                            description: HTTP client configuration.\n                            properties:\n                              authorization:\n                                description: Authorization header configuration for\n                                  the client. This is mutually exclusive with BasicAuth\n                                  and is only available starting from Alertmanager\n                                  v0.22+.\n                                properties:\n                                  credentials:\n                                    description: Selects a key of a Secret in the\n                                      namespace that contains the credentials for\n                                      authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type:\n                                    description: \"Defines the authentication type.\n                                      The value is case-insensitive. \\n \\\"Basic\\\"\n                                      is not a supported value. \\n Default: \\\"Bearer\\\"\"\n                                    type: string\n                                type: object\n                              basicAuth:\n                                description: BasicAuth for the client. This is mutually\n                                  exclusive with Authorization. If both are defined,\n                                  BasicAuth takes precedence.\n                                properties:\n                                  password:\n                                    description: The secret in the service monitor\n                                      namespace that contains the password for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  username:\n                                    description: The secret in the service monitor\n                                      namespace that contains the username for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              bearerTokenSecret:\n                                description: The secret's key that contains the bearer\n                                  token to be used by the client for authentication.\n                                  The secret needs to be in the same namespace as\n                                  the AlertmanagerConfig object and accessible by\n                                  the Prometheus Operator.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                              followRedirects:\n                                description: FollowRedirects specifies whether the\n                                  client should follow HTTP 3xx redirects.\n                                type: boolean\n                              oauth2:\n                                description: OAuth2 client credentials used to fetch\n                                  a token for the targets.\n                                properties:\n                                  clientId:\n                                    description: The secret or configmap containing\n                                      the OAuth2 client id\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  clientSecret:\n                                    description: The secret containing the OAuth2\n                                      client secret\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  endpointParams:\n                                    additionalProperties:\n                                      type: string\n                                    description: Parameters to append to the token\n                                      URL\n                                    type: object\n                                  scopes:\n                                    description: OAuth2 scopes used for the token\n                                      request\n                                    items:\n                                      type: string\n                                    type: array\n                                  tokenUrl:\n                                    description: The URL to fetch the token from\n                                    minLength: 1\n                                    type: string\n                                required:\n                                - clientId\n                                - clientSecret\n                                - tokenUrl\n                                type: object\n                              proxyURL:\n                                description: Optional proxy URL.\n                                type: string\n                              tlsConfig:\n                                description: TLS configuration for the client.\n                                properties:\n                                  ca:\n                                    description: Certificate authority used when verifying\n                                      server certificates.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  cert:\n                                    description: Client certificate to present when\n                                      doing client-authentication.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  insecureSkipVerify:\n                                    description: Disable target certificate validation.\n                                    type: boolean\n                                  keySecret:\n                                    description: Secret containing the client key\n                                      file for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  serverName:\n                                    description: Used to verify the hostname for the\n                                      targets.\n                                    type: string\n                                type: object\n                            type: object\n                          message:\n                            description: Message template\n                            type: string\n                          parseMode:\n                            description: Parse mode for telegram message\n                            enum:\n                            - MarkdownV2\n                            - Markdown\n                            - HTML\n                            type: string\n                          sendResolved:\n                            description: Whether to notify about resolved alerts.\n                            type: boolean\n                        type: object\n                      type: array\n                    victoropsConfigs:\n                      description: List of VictorOps configurations.\n                      items:\n                        description: VictorOpsConfig configures notifications via\n                          VictorOps. See https://prometheus.io/docs/alerting/latest/configuration/#victorops_config\n                        properties:\n                          apiKey:\n                            description: The secret's key that contains the API key\n                              to use when talking to the VictorOps API. The secret\n                              needs to be in the same namespace as the AlertmanagerConfig\n                              object and accessible by the Prometheus Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                          apiUrl:\n                            description: The VictorOps API URL.\n                            type: string\n                          customFields:\n                            description: Additional custom fields for notification.\n                            items:\n                              description: KeyValue defines a (key, value) tuple.\n                              properties:\n                                key:\n                                  description: Key of the tuple.\n                                  minLength: 1\n                                  type: string\n                                value:\n                                  description: Value of the tuple.\n                                  type: string\n                              required:\n                              - key\n                              - value\n                              type: object\n                            type: array\n                          entityDisplayName:\n                            description: Contains summary of the alerted problem.\n                            type: string\n                          httpConfig:\n                            description: The HTTP client's configuration.\n                            properties:\n                              authorization:\n                                description: Authorization header configuration for\n                                  the client. This is mutually exclusive with BasicAuth\n                                  and is only available starting from Alertmanager\n                                  v0.22+.\n                                properties:\n                                  credentials:\n                                    description: Selects a key of a Secret in the\n                                      namespace that contains the credentials for\n                                      authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type:\n                                    description: \"Defines the authentication type.\n                                      The value is case-insensitive. \\n \\\"Basic\\\"\n                                      is not a supported value. \\n Default: \\\"Bearer\\\"\"\n                                    type: string\n                                type: object\n                              basicAuth:\n                                description: BasicAuth for the client. This is mutually\n                                  exclusive with Authorization. If both are defined,\n                                  BasicAuth takes precedence.\n                                properties:\n                                  password:\n                                    description: The secret in the service monitor\n                                      namespace that contains the password for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  username:\n                                    description: The secret in the service monitor\n                                      namespace that contains the username for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              bearerTokenSecret:\n                                description: The secret's key that contains the bearer\n                                  token to be used by the client for authentication.\n                                  The secret needs to be in the same namespace as\n                                  the AlertmanagerConfig object and accessible by\n                                  the Prometheus Operator.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                              followRedirects:\n                                description: FollowRedirects specifies whether the\n                                  client should follow HTTP 3xx redirects.\n                                type: boolean\n                              oauth2:\n                                description: OAuth2 client credentials used to fetch\n                                  a token for the targets.\n                                properties:\n                                  clientId:\n                                    description: The secret or configmap containing\n                                      the OAuth2 client id\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  clientSecret:\n                                    description: The secret containing the OAuth2\n                                      client secret\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  endpointParams:\n                                    additionalProperties:\n                                      type: string\n                                    description: Parameters to append to the token\n                                      URL\n                                    type: object\n                                  scopes:\n                                    description: OAuth2 scopes used for the token\n                                      request\n                                    items:\n                                      type: string\n                                    type: array\n                                  tokenUrl:\n                                    description: The URL to fetch the token from\n                                    minLength: 1\n                                    type: string\n                                required:\n                                - clientId\n                                - clientSecret\n                                - tokenUrl\n                                type: object\n                              proxyURL:\n                                description: Optional proxy URL.\n                                type: string\n                              tlsConfig:\n                                description: TLS configuration for the client.\n                                properties:\n                                  ca:\n                                    description: Certificate authority used when verifying\n                                      server certificates.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  cert:\n                                    description: Client certificate to present when\n                                      doing client-authentication.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  insecureSkipVerify:\n                                    description: Disable target certificate validation.\n                                    type: boolean\n                                  keySecret:\n                                    description: Secret containing the client key\n                                      file for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  serverName:\n                                    description: Used to verify the hostname for the\n                                      targets.\n                                    type: string\n                                type: object\n                            type: object\n                          messageType:\n                            description: Describes the behavior of the alert (CRITICAL,\n                              WARNING, INFO).\n                            type: string\n                          monitoringTool:\n                            description: The monitoring tool the state message is\n                              from.\n                            type: string\n                          routingKey:\n                            description: A key used to map the alert to a team.\n                            type: string\n                          sendResolved:\n                            description: Whether or not to notify about resolved alerts.\n                            type: boolean\n                          stateMessage:\n                            description: Contains long explanation of the alerted\n                              problem.\n                            type: string\n                        type: object\n                      type: array\n                    webhookConfigs:\n                      description: List of webhook configurations.\n                      items:\n                        description: WebhookConfig configures notifications via a\n                          generic receiver supporting the webhook payload. See https://prometheus.io/docs/alerting/latest/configuration/#webhook_config\n                        properties:\n                          httpConfig:\n                            description: HTTP client configuration.\n                            properties:\n                              authorization:\n                                description: Authorization header configuration for\n                                  the client. This is mutually exclusive with BasicAuth\n                                  and is only available starting from Alertmanager\n                                  v0.22+.\n                                properties:\n                                  credentials:\n                                    description: Selects a key of a Secret in the\n                                      namespace that contains the credentials for\n                                      authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type:\n                                    description: \"Defines the authentication type.\n                                      The value is case-insensitive. \\n \\\"Basic\\\"\n                                      is not a supported value. \\n Default: \\\"Bearer\\\"\"\n                                    type: string\n                                type: object\n                              basicAuth:\n                                description: BasicAuth for the client. This is mutually\n                                  exclusive with Authorization. If both are defined,\n                                  BasicAuth takes precedence.\n                                properties:\n                                  password:\n                                    description: The secret in the service monitor\n                                      namespace that contains the password for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  username:\n                                    description: The secret in the service monitor\n                                      namespace that contains the username for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              bearerTokenSecret:\n                                description: The secret's key that contains the bearer\n                                  token to be used by the client for authentication.\n                                  The secret needs to be in the same namespace as\n                                  the AlertmanagerConfig object and accessible by\n                                  the Prometheus Operator.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                              followRedirects:\n                                description: FollowRedirects specifies whether the\n                                  client should follow HTTP 3xx redirects.\n                                type: boolean\n                              oauth2:\n                                description: OAuth2 client credentials used to fetch\n                                  a token for the targets.\n                                properties:\n                                  clientId:\n                                    description: The secret or configmap containing\n                                      the OAuth2 client id\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  clientSecret:\n                                    description: The secret containing the OAuth2\n                                      client secret\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  endpointParams:\n                                    additionalProperties:\n                                      type: string\n                                    description: Parameters to append to the token\n                                      URL\n                                    type: object\n                                  scopes:\n                                    description: OAuth2 scopes used for the token\n                                      request\n                                    items:\n                                      type: string\n                                    type: array\n                                  tokenUrl:\n                                    description: The URL to fetch the token from\n                                    minLength: 1\n                                    type: string\n                                required:\n                                - clientId\n                                - clientSecret\n                                - tokenUrl\n                                type: object\n                              proxyURL:\n                                description: Optional proxy URL.\n                                type: string\n                              tlsConfig:\n                                description: TLS configuration for the client.\n                                properties:\n                                  ca:\n                                    description: Certificate authority used when verifying\n                                      server certificates.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  cert:\n                                    description: Client certificate to present when\n                                      doing client-authentication.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  insecureSkipVerify:\n                                    description: Disable target certificate validation.\n                                    type: boolean\n                                  keySecret:\n                                    description: Secret containing the client key\n                                      file for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  serverName:\n                                    description: Used to verify the hostname for the\n                                      targets.\n                                    type: string\n                                type: object\n                            type: object\n                          maxAlerts:\n                            description: Maximum number of alerts to be sent per webhook\n                              message. When 0, all alerts are included.\n                            format: int32\n                            minimum: 0\n                            type: integer\n                          sendResolved:\n                            description: Whether or not to notify about resolved alerts.\n                            type: boolean\n                          url:\n                            description: The URL to send HTTP POST requests to. `urlSecret`\n                              takes precedence over `url`. One of `urlSecret` and\n                              `url` should be defined.\n                            type: string\n                          urlSecret:\n                            description: The secret's key that contains the webhook\n                              URL to send HTTP requests to. `urlSecret` takes precedence\n                              over `url`. One of `urlSecret` and `url` should be defined.\n                              The secret needs to be in the same namespace as the\n                              AlertmanagerConfig object and accessible by the Prometheus\n                              Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                        type: object\n                      type: array\n                    wechatConfigs:\n                      description: List of WeChat configurations.\n                      items:\n                        description: WeChatConfig configures notifications via WeChat.\n                          See https://prometheus.io/docs/alerting/latest/configuration/#wechat_config\n                        properties:\n                          agentID:\n                            type: string\n                          apiSecret:\n                            description: The secret's key that contains the WeChat\n                              API key. The secret needs to be in the same namespace\n                              as the AlertmanagerConfig object and accessible by the\n                              Prometheus Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                          apiURL:\n                            description: The WeChat API URL.\n                            type: string\n                          corpID:\n                            description: The corp id for authentication.\n                            type: string\n                          httpConfig:\n                            description: HTTP client configuration.\n                            properties:\n                              authorization:\n                                description: Authorization header configuration for\n                                  the client. This is mutually exclusive with BasicAuth\n                                  and is only available starting from Alertmanager\n                                  v0.22+.\n                                properties:\n                                  credentials:\n                                    description: Selects a key of a Secret in the\n                                      namespace that contains the credentials for\n                                      authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type:\n                                    description: \"Defines the authentication type.\n                                      The value is case-insensitive. \\n \\\"Basic\\\"\n                                      is not a supported value. \\n Default: \\\"Bearer\\\"\"\n                                    type: string\n                                type: object\n                              basicAuth:\n                                description: BasicAuth for the client. This is mutually\n                                  exclusive with Authorization. If both are defined,\n                                  BasicAuth takes precedence.\n                                properties:\n                                  password:\n                                    description: The secret in the service monitor\n                                      namespace that contains the password for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  username:\n                                    description: The secret in the service monitor\n                                      namespace that contains the username for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              bearerTokenSecret:\n                                description: The secret's key that contains the bearer\n                                  token to be used by the client for authentication.\n                                  The secret needs to be in the same namespace as\n                                  the AlertmanagerConfig object and accessible by\n                                  the Prometheus Operator.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                              followRedirects:\n                                description: FollowRedirects specifies whether the\n                                  client should follow HTTP 3xx redirects.\n                                type: boolean\n                              oauth2:\n                                description: OAuth2 client credentials used to fetch\n                                  a token for the targets.\n                                properties:\n                                  clientId:\n                                    description: The secret or configmap containing\n                                      the OAuth2 client id\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  clientSecret:\n                                    description: The secret containing the OAuth2\n                                      client secret\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  endpointParams:\n                                    additionalProperties:\n                                      type: string\n                                    description: Parameters to append to the token\n                                      URL\n                                    type: object\n                                  scopes:\n                                    description: OAuth2 scopes used for the token\n                                      request\n                                    items:\n                                      type: string\n                                    type: array\n                                  tokenUrl:\n                                    description: The URL to fetch the token from\n                                    minLength: 1\n                                    type: string\n                                required:\n                                - clientId\n                                - clientSecret\n                                - tokenUrl\n                                type: object\n                              proxyURL:\n                                description: Optional proxy URL.\n                                type: string\n                              tlsConfig:\n                                description: TLS configuration for the client.\n                                properties:\n                                  ca:\n                                    description: Certificate authority used when verifying\n                                      server certificates.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  cert:\n                                    description: Client certificate to present when\n                                      doing client-authentication.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to\n                                          use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use\n                                          for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to\n                                              select from.  Must be a valid secret\n                                              key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More\n                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                              TODO: Add other useful fields. apiVersion,\n                                              kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret\n                                              or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  insecureSkipVerify:\n                                    description: Disable target certificate validation.\n                                    type: boolean\n                                  keySecret:\n                                    description: Secret containing the client key\n                                      file for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  serverName:\n                                    description: Used to verify the hostname for the\n                                      targets.\n                                    type: string\n                                type: object\n                            type: object\n                          message:\n                            description: API request data as defined by the WeChat\n                              API.\n                            type: string\n                          messageType:\n                            type: string\n                          sendResolved:\n                            description: Whether or not to notify about resolved alerts.\n                            type: boolean\n                          toParty:\n                            type: string\n                          toTag:\n                            type: string\n                          toUser:\n                            type: string\n                        type: object\n                      type: array\n                  required:\n                  - name\n                  type: object\n                type: array\n              route:\n                description: The Alertmanager route definition for alerts matching\n                  the resource's namespace. If present, it will be added to the generated\n                  Alertmanager configuration as a first-level route.\n                properties:\n                  activeTimeIntervals:\n                    description: ActiveTimeIntervals is a list of MuteTimeInterval\n                      names when this route should be active.\n                    items:\n                      type: string\n                    type: array\n                  continue:\n                    description: Boolean indicating whether an alert should continue\n                      matching subsequent sibling nodes. It will always be overridden\n                      to true for the first-level route by the Prometheus operator.\n                    type: boolean\n                  groupBy:\n                    description: List of labels to group by. Labels must not be repeated\n                      (unique list). Special label \"...\" (aggregate by all possible\n                      labels), if provided, must be the only element in the list.\n                    items:\n                      type: string\n                    type: array\n                  groupInterval:\n                    description: 'How long to wait before sending an updated notification.\n                      Must match the regular expression`^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$`\n                      Example: \"5m\"'\n                    type: string\n                  groupWait:\n                    description: 'How long to wait before sending the initial notification.\n                      Must match the regular expression`^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$`\n                      Example: \"30s\"'\n                    type: string\n                  matchers:\n                    description: 'List of matchers that the alert''s labels should\n                      match. For the first level route, the operator removes any existing\n                      equality and regexp matcher on the `namespace` label and adds\n                      a `namespace: <object namespace>` matcher.'\n                    items:\n                      description: Matcher defines how to match on alert's labels.\n                      properties:\n                        matchType:\n                          description: Match operation available with AlertManager\n                            >= v0.22.0 and takes precedence over Regex (deprecated)\n                            if non-empty.\n                          enum:\n                          - '!='\n                          - =\n                          - =~\n                          - '!~'\n                          type: string\n                        name:\n                          description: Label to match.\n                          minLength: 1\n                          type: string\n                        regex:\n                          description: Whether to match on equality (false) or regular-expression\n                            (true). Deprecated as of AlertManager >= v0.22.0 where\n                            a user should use MatchType instead.\n                          type: boolean\n                        value:\n                          description: Label value to match.\n                          type: string\n                      required:\n                      - name\n                      type: object\n                    type: array\n                  muteTimeIntervals:\n                    description: 'Note: this comment applies to the field definition\n                      above but appears below otherwise it gets included in the generated\n                      manifest. CRD schema doesn''t support self-referential types\n                      for now (see https://github.com/kubernetes/kubernetes/issues/62872).\n                      We have to use an alternative type to circumvent the limitation.\n                      The downside is that the Kube API can''t validate the data beyond\n                      the fact that it is a valid JSON representation. MuteTimeIntervals\n                      is a list of MuteTimeInterval names that will mute this route\n                      when matched,'\n                    items:\n                      type: string\n                    type: array\n                  receiver:\n                    description: Name of the receiver for this route. If not empty,\n                      it should be listed in the `receivers` field.\n                    type: string\n                  repeatInterval:\n                    description: 'How long to wait before repeating the last notification.\n                      Must match the regular expression`^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$`\n                      Example: \"4h\"'\n                    type: string\n                  routes:\n                    description: Child routes.\n                    items:\n                      x-kubernetes-preserve-unknown-fields: true\n                    type: array\n                type: object\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n---\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.11.1\n  creationTimestamp: null\n  name: alertmanagers.monitoring.coreos.com\nspec:\n  group: monitoring.coreos.com\n  names:\n    categories:\n    - prometheus-operator\n    kind: Alertmanager\n    listKind: AlertmanagerList\n    plural: alertmanagers\n    shortNames:\n    - am\n    singular: alertmanager\n  scope: Namespaced\n  versions:\n  - additionalPrinterColumns:\n    - description: The version of Alertmanager\n      jsonPath: .spec.version\n      name: Version\n      type: string\n    - description: The number of desired replicas\n      jsonPath: .spec.replicas\n      name: Replicas\n      type: integer\n    - description: The number of ready replicas\n      jsonPath: .status.availableReplicas\n      name: Ready\n      type: integer\n    - jsonPath: .status.conditions[?(@.type == 'Reconciled')].status\n      name: Reconciled\n      type: string\n    - jsonPath: .status.conditions[?(@.type == 'Available')].status\n      name: Available\n      type: string\n    - jsonPath: .metadata.creationTimestamp\n      name: Age\n      type: date\n    - description: Whether the resource reconciliation is paused or not\n      jsonPath: .status.paused\n      name: Paused\n      priority: 1\n      type: boolean\n    name: v1\n    schema:\n      openAPIV3Schema:\n        description: Alertmanager describes an Alertmanager cluster.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: 'Specification of the desired behavior of the Alertmanager\n              cluster. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status'\n            properties:\n              additionalPeers:\n                description: AdditionalPeers allows injecting a set of additional\n                  Alertmanagers to peer with to form a highly available cluster.\n                items:\n                  type: string\n                type: array\n              affinity:\n                description: If specified, the pod's scheduling constraints.\n                properties:\n                  nodeAffinity:\n                    description: Describes node affinity scheduling rules for the\n                      pod.\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: The scheduler will prefer to schedule pods to\n                          nodes that satisfy the affinity expressions specified by\n                          this field, but it may choose a node that violates one or\n                          more of the expressions. The node that is most preferred\n                          is the one with the greatest sum of weights, i.e. for each\n                          node that meets all of the scheduling requirements (resource\n                          request, requiredDuringScheduling affinity expressions,\n                          etc.), compute a sum by iterating through the elements of\n                          this field and adding \"weight\" to the sum if the node matches\n                          the corresponding matchExpressions; the node(s) with the\n                          highest sum are the most preferred.\n                        items:\n                          description: An empty preferred scheduling term matches\n                            all objects with implicit weight 0 (i.e. it's a no-op).\n                            A null preferred scheduling term matches no objects (i.e.\n                            is also a no-op).\n                          properties:\n                            preference:\n                              description: A node selector term, associated with the\n                                corresponding weight.\n                              properties:\n                                matchExpressions:\n                                  description: A list of node selector requirements\n                                    by node's labels.\n                                  items:\n                                    description: A node selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector\n                                          applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists, DoesNotExist. Gt, and\n                                          Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If\n                                          the operator is In or NotIn, the values\n                                          array must be non-empty. If the operator\n                                          is Exists or DoesNotExist, the values array\n                                          must be empty. If the operator is Gt or\n                                          Lt, the values array must have a single\n                                          element, which will be interpreted as an\n                                          integer. This array is replaced during a\n                                          strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchFields:\n                                  description: A list of node selector requirements\n                                    by node's fields.\n                                  items:\n                                    description: A node selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector\n                                          applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists, DoesNotExist. Gt, and\n                                          Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If\n                                          the operator is In or NotIn, the values\n                                          array must be non-empty. If the operator\n                                          is Exists or DoesNotExist, the values array\n                                          must be empty. If the operator is Gt or\n                                          Lt, the values array must have a single\n                                          element, which will be interpreted as an\n                                          integer. This array is replaced during a\n                                          strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            weight:\n                              description: Weight associated with matching the corresponding\n                                nodeSelectorTerm, in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - preference\n                          - weight\n                          type: object\n                        type: array\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: If the affinity requirements specified by this\n                          field are not met at scheduling time, the pod will not be\n                          scheduled onto the node. If the affinity requirements specified\n                          by this field cease to be met at some point during pod execution\n                          (e.g. due to an update), the system may or may not try to\n                          eventually evict the pod from its node.\n                        properties:\n                          nodeSelectorTerms:\n                            description: Required. A list of node selector terms.\n                              The terms are ORed.\n                            items:\n                              description: A null or empty node selector term matches\n                                no objects. The requirements of them are ANDed. The\n                                TopologySelectorTerm type implements a subset of the\n                                NodeSelectorTerm.\n                              properties:\n                                matchExpressions:\n                                  description: A list of node selector requirements\n                                    by node's labels.\n                                  items:\n                                    description: A node selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector\n                                          applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists, DoesNotExist. Gt, and\n                                          Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If\n                                          the operator is In or NotIn, the values\n                                          array must be non-empty. If the operator\n                                          is Exists or DoesNotExist, the values array\n                                          must be empty. If the operator is Gt or\n                                          Lt, the values array must have a single\n                                          element, which will be interpreted as an\n                                          integer. This array is replaced during a\n                                          strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchFields:\n                                  description: A list of node selector requirements\n                                    by node's fields.\n                                  items:\n                                    description: A node selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector\n                                          applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists, DoesNotExist. Gt, and\n                                          Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If\n                                          the operator is In or NotIn, the values\n                                          array must be non-empty. If the operator\n                                          is Exists or DoesNotExist, the values array\n                                          must be empty. If the operator is Gt or\n                                          Lt, the values array must have a single\n                                          element, which will be interpreted as an\n                                          integer. This array is replaced during a\n                                          strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            type: array\n                        required:\n                        - nodeSelectorTerms\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  podAffinity:\n                    description: Describes pod affinity scheduling rules (e.g. co-locate\n                      this pod in the same node, zone, etc. as some other pod(s)).\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: The scheduler will prefer to schedule pods to\n                          nodes that satisfy the affinity expressions specified by\n                          this field, but it may choose a node that violates one or\n                          more of the expressions. The node that is most preferred\n                          is the one with the greatest sum of weights, i.e. for each\n                          node that meets all of the scheduling requirements (resource\n                          request, requiredDuringScheduling affinity expressions,\n                          etc.), compute a sum by iterating through the elements of\n                          this field and adding \"weight\" to the sum if the node has\n                          pods which matches the corresponding podAffinityTerm; the\n                          node(s) with the highest sum are the most preferred.\n                        items:\n                          description: The weights of all of the matched WeightedPodAffinityTerm\n                            fields are added per-node to find the most preferred node(s)\n                          properties:\n                            podAffinityTerm:\n                              description: Required. A pod affinity term, associated\n                                with the corresponding weight.\n                              properties:\n                                labelSelector:\n                                  description: A label query over a set of resources,\n                                    in this case pods.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label\n                                        selector requirements. The requirements are\n                                        ANDed.\n                                      items:\n                                        description: A label selector requirement\n                                          is a selector that contains values, a key,\n                                          and an operator that relates the key and\n                                          values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that\n                                              the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's\n                                              relationship to a set of values. Valid\n                                              operators are In, NotIn, Exists and\n                                              DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string\n                                              values. If the operator is In or NotIn,\n                                              the values array must be non-empty.\n                                              If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This\n                                              array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value}\n                                        pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions,\n                                        whose key field is \"key\", the operator is\n                                        \"In\", and the values array contains only \"value\".\n                                        The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaceSelector:\n                                  description: A label query over the set of namespaces\n                                    that the term applies to. The term is applied\n                                    to the union of the namespaces selected by this\n                                    field and the ones listed in the namespaces field.\n                                    null selector and null or empty namespaces list\n                                    means \"this pod's namespace\". An empty selector\n                                    ({}) matches all namespaces.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label\n                                        selector requirements. The requirements are\n                                        ANDed.\n                                      items:\n                                        description: A label selector requirement\n                                          is a selector that contains values, a key,\n                                          and an operator that relates the key and\n                                          values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that\n                                              the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's\n                                              relationship to a set of values. Valid\n                                              operators are In, NotIn, Exists and\n                                              DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string\n                                              values. If the operator is In or NotIn,\n                                              the values array must be non-empty.\n                                              If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This\n                                              array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value}\n                                        pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions,\n                                        whose key field is \"key\", the operator is\n                                        \"In\", and the values array contains only \"value\".\n                                        The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaces:\n                                  description: namespaces specifies a static list\n                                    of namespace names that the term applies to. The\n                                    term is applied to the union of the namespaces\n                                    listed in this field and the ones selected by\n                                    namespaceSelector. null or empty namespaces list\n                                    and null namespaceSelector means \"this pod's namespace\".\n                                  items:\n                                    type: string\n                                  type: array\n                                topologyKey:\n                                  description: This pod should be co-located (affinity)\n                                    or not co-located (anti-affinity) with the pods\n                                    matching the labelSelector in the specified namespaces,\n                                    where co-located is defined as running on a node\n                                    whose value of the label with key topologyKey\n                                    matches that of any node on which any of the selected\n                                    pods is running. Empty topologyKey is not allowed.\n                                  type: string\n                              required:\n                              - topologyKey\n                              type: object\n                            weight:\n                              description: weight associated with matching the corresponding\n                                podAffinityTerm, in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - podAffinityTerm\n                          - weight\n                          type: object\n                        type: array\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: If the affinity requirements specified by this\n                          field are not met at scheduling time, the pod will not be\n                          scheduled onto the node. If the affinity requirements specified\n                          by this field cease to be met at some point during pod execution\n                          (e.g. due to a pod label update), the system may or may\n                          not try to eventually evict the pod from its node. When\n                          there are multiple elements, the lists of nodes corresponding\n                          to each podAffinityTerm are intersected, i.e. all terms\n                          must be satisfied.\n                        items:\n                          description: Defines a set of pods (namely those matching\n                            the labelSelector relative to the given namespace(s))\n                            that this pod should be co-located (affinity) or not co-located\n                            (anti-affinity) with, where co-located is defined as running\n                            on a node whose value of the label with key <topologyKey>\n                            matches that of any node on which a pod of the set of\n                            pods is running\n                          properties:\n                            labelSelector:\n                              description: A label query over a set of resources,\n                                in this case pods.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label\n                                    selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the\n                                          selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string\n                                          values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the\n                                          operator is Exists or DoesNotExist, the\n                                          values array must be empty. This array is\n                                          replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value}\n                                    pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions,\n                                    whose key field is \"key\", the operator is \"In\",\n                                    and the values array contains only \"value\". The\n                                    requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaceSelector:\n                              description: A label query over the set of namespaces\n                                that the term applies to. The term is applied to the\n                                union of the namespaces selected by this field and\n                                the ones listed in the namespaces field. null selector\n                                and null or empty namespaces list means \"this pod's\n                                namespace\". An empty selector ({}) matches all namespaces.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label\n                                    selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the\n                                          selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string\n                                          values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the\n                                          operator is Exists or DoesNotExist, the\n                                          values array must be empty. This array is\n                                          replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value}\n                                    pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions,\n                                    whose key field is \"key\", the operator is \"In\",\n                                    and the values array contains only \"value\". The\n                                    requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaces:\n                              description: namespaces specifies a static list of namespace\n                                names that the term applies to. The term is applied\n                                to the union of the namespaces listed in this field\n                                and the ones selected by namespaceSelector. null or\n                                empty namespaces list and null namespaceSelector means\n                                \"this pod's namespace\".\n                              items:\n                                type: string\n                              type: array\n                            topologyKey:\n                              description: This pod should be co-located (affinity)\n                                or not co-located (anti-affinity) with the pods matching\n                                the labelSelector in the specified namespaces, where\n                                co-located is defined as running on a node whose value\n                                of the label with key topologyKey matches that of\n                                any node on which any of the selected pods is running.\n                                Empty topologyKey is not allowed.\n                              type: string\n                          required:\n                          - topologyKey\n                          type: object\n                        type: array\n                    type: object\n                  podAntiAffinity:\n                    description: Describes pod anti-affinity scheduling rules (e.g.\n                      avoid putting this pod in the same node, zone, etc. as some\n                      other pod(s)).\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: The scheduler will prefer to schedule pods to\n                          nodes that satisfy the anti-affinity expressions specified\n                          by this field, but it may choose a node that violates one\n                          or more of the expressions. The node that is most preferred\n                          is the one with the greatest sum of weights, i.e. for each\n                          node that meets all of the scheduling requirements (resource\n                          request, requiredDuringScheduling anti-affinity expressions,\n                          etc.), compute a sum by iterating through the elements of\n                          this field and adding \"weight\" to the sum if the node has\n                          pods which matches the corresponding podAffinityTerm; the\n                          node(s) with the highest sum are the most preferred.\n                        items:\n                          description: The weights of all of the matched WeightedPodAffinityTerm\n                            fields are added per-node to find the most preferred node(s)\n                          properties:\n                            podAffinityTerm:\n                              description: Required. A pod affinity term, associated\n                                with the corresponding weight.\n                              properties:\n                                labelSelector:\n                                  description: A label query over a set of resources,\n                                    in this case pods.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label\n                                        selector requirements. The requirements are\n                                        ANDed.\n                                      items:\n                                        description: A label selector requirement\n                                          is a selector that contains values, a key,\n                                          and an operator that relates the key and\n                                          values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that\n                                              the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's\n                                              relationship to a set of values. Valid\n                                              operators are In, NotIn, Exists and\n                                              DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string\n                                              values. If the operator is In or NotIn,\n                                              the values array must be non-empty.\n                                              If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This\n                                              array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value}\n                                        pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions,\n                                        whose key field is \"key\", the operator is\n                                        \"In\", and the values array contains only \"value\".\n                                        The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaceSelector:\n                                  description: A label query over the set of namespaces\n                                    that the term applies to. The term is applied\n                                    to the union of the namespaces selected by this\n                                    field and the ones listed in the namespaces field.\n                                    null selector and null or empty namespaces list\n                                    means \"this pod's namespace\". An empty selector\n                                    ({}) matches all namespaces.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label\n                                        selector requirements. The requirements are\n                                        ANDed.\n                                      items:\n                                        description: A label selector requirement\n                                          is a selector that contains values, a key,\n                                          and an operator that relates the key and\n                                          values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that\n                                              the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's\n                                              relationship to a set of values. Valid\n                                              operators are In, NotIn, Exists and\n                                              DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string\n                                              values. If the operator is In or NotIn,\n                                              the values array must be non-empty.\n                                              If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This\n                                              array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value}\n                                        pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions,\n                                        whose key field is \"key\", the operator is\n                                        \"In\", and the values array contains only \"value\".\n                                        The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaces:\n                                  description: namespaces specifies a static list\n                                    of namespace names that the term applies to. The\n                                    term is applied to the union of the namespaces\n                                    listed in this field and the ones selected by\n                                    namespaceSelector. null or empty namespaces list\n                                    and null namespaceSelector means \"this pod's namespace\".\n                                  items:\n                                    type: string\n                                  type: array\n                                topologyKey:\n                                  description: This pod should be co-located (affinity)\n                                    or not co-located (anti-affinity) with the pods\n                                    matching the labelSelector in the specified namespaces,\n                                    where co-located is defined as running on a node\n                                    whose value of the label with key topologyKey\n                                    matches that of any node on which any of the selected\n                                    pods is running. Empty topologyKey is not allowed.\n                                  type: string\n                              required:\n                              - topologyKey\n                              type: object\n                            weight:\n                              description: weight associated with matching the corresponding\n                                podAffinityTerm, in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - podAffinityTerm\n                          - weight\n                          type: object\n                        type: array\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: If the anti-affinity requirements specified by\n                          this field are not met at scheduling time, the pod will\n                          not be scheduled onto the node. If the anti-affinity requirements\n                          specified by this field cease to be met at some point during\n                          pod execution (e.g. due to a pod label update), the system\n                          may or may not try to eventually evict the pod from its\n                          node. When there are multiple elements, the lists of nodes\n                          corresponding to each podAffinityTerm are intersected, i.e.\n                          all terms must be satisfied.\n                        items:\n                          description: Defines a set of pods (namely those matching\n                            the labelSelector relative to the given namespace(s))\n                            that this pod should be co-located (affinity) or not co-located\n                            (anti-affinity) with, where co-located is defined as running\n                            on a node whose value of the label with key <topologyKey>\n                            matches that of any node on which a pod of the set of\n                            pods is running\n                          properties:\n                            labelSelector:\n                              description: A label query over a set of resources,\n                                in this case pods.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label\n                                    selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the\n                                          selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string\n                                          values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the\n                                          operator is Exists or DoesNotExist, the\n                                          values array must be empty. This array is\n                                          replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value}\n                                    pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions,\n                                    whose key field is \"key\", the operator is \"In\",\n                                    and the values array contains only \"value\". The\n                                    requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaceSelector:\n                              description: A label query over the set of namespaces\n                                that the term applies to. The term is applied to the\n                                union of the namespaces selected by this field and\n                                the ones listed in the namespaces field. null selector\n                                and null or empty namespaces list means \"this pod's\n                                namespace\". An empty selector ({}) matches all namespaces.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label\n                                    selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the\n                                          selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string\n                                          values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the\n                                          operator is Exists or DoesNotExist, the\n                                          values array must be empty. This array is\n                                          replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value}\n                                    pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions,\n                                    whose key field is \"key\", the operator is \"In\",\n                                    and the values array contains only \"value\". The\n                                    requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaces:\n                              description: namespaces specifies a static list of namespace\n                                names that the term applies to. The term is applied\n                                to the union of the namespaces listed in this field\n                                and the ones selected by namespaceSelector. null or\n                                empty namespaces list and null namespaceSelector means\n                                \"this pod's namespace\".\n                              items:\n                                type: string\n                              type: array\n                            topologyKey:\n                              description: This pod should be co-located (affinity)\n                                or not co-located (anti-affinity) with the pods matching\n                                the labelSelector in the specified namespaces, where\n                                co-located is defined as running on a node whose value\n                                of the label with key topologyKey matches that of\n                                any node on which any of the selected pods is running.\n                                Empty topologyKey is not allowed.\n                              type: string\n                          required:\n                          - topologyKey\n                          type: object\n                        type: array\n                    type: object\n                type: object\n              alertmanagerConfigMatcherStrategy:\n                description: The AlertmanagerConfigMatcherStrategy defines how AlertmanagerConfig\n                  objects match the alerts. In the future more options may be added.\n                properties:\n                  type:\n                    default: OnNamespace\n                    description: If set to `OnNamespace`, the operator injects a label\n                      matcher matching the namespace of the AlertmanagerConfig object\n                      for all its routes and inhibition rules. `None` will not add\n                      any additional matchers other than the ones specified in the\n                      AlertmanagerConfig. Default is `OnNamespace`.\n                    enum:\n                    - OnNamespace\n                    - None\n                    type: string\n                type: object\n              alertmanagerConfigNamespaceSelector:\n                description: Namespaces to be selected for AlertmanagerConfig discovery.\n                  If nil, only check own namespace.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              alertmanagerConfigSelector:\n                description: AlertmanagerConfigs to be selected for to merge and configure\n                  Alertmanager with.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              alertmanagerConfiguration:\n                description: 'EXPERIMENTAL: alertmanagerConfiguration specifies the\n                  configuration of Alertmanager. If defined, it takes precedence over\n                  the `configSecret` field. This field may change in future releases.'\n                properties:\n                  global:\n                    description: Defines the global parameters of the Alertmanager\n                      configuration.\n                    properties:\n                      httpConfig:\n                        description: HTTP client configuration.\n                        properties:\n                          authorization:\n                            description: Authorization header configuration for the\n                              client. This is mutually exclusive with BasicAuth and\n                              is only available starting from Alertmanager v0.22+.\n                            properties:\n                              credentials:\n                                description: Selects a key of a Secret in the namespace\n                                  that contains the credentials for authentication.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              type:\n                                description: \"Defines the authentication type. The\n                                  value is case-insensitive. \\n \\\"Basic\\\" is not a\n                                  supported value. \\n Default: \\\"Bearer\\\"\"\n                                type: string\n                            type: object\n                          basicAuth:\n                            description: BasicAuth for the client. This is mutually\n                              exclusive with Authorization. If both are defined, BasicAuth\n                              takes precedence.\n                            properties:\n                              password:\n                                description: The secret in the service monitor namespace\n                                  that contains the password for authentication.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              username:\n                                description: The secret in the service monitor namespace\n                                  that contains the username for authentication.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            type: object\n                          bearerTokenSecret:\n                            description: The secret's key that contains the bearer\n                              token to be used by the client for authentication. The\n                              secret needs to be in the same namespace as the Alertmanager\n                              object and accessible by the Prometheus Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          followRedirects:\n                            description: FollowRedirects specifies whether the client\n                              should follow HTTP 3xx redirects.\n                            type: boolean\n                          oauth2:\n                            description: OAuth2 client credentials used to fetch a\n                              token for the targets.\n                            properties:\n                              clientId:\n                                description: The secret or configmap containing the\n                                  OAuth2 client id\n                                properties:\n                                  configMap:\n                                    description: ConfigMap containing data to use\n                                      for the targets.\n                                    properties:\n                                      key:\n                                        description: The key to select.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the ConfigMap\n                                          or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  secret:\n                                    description: Secret containing data to use for\n                                      the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              clientSecret:\n                                description: The secret containing the OAuth2 client\n                                  secret\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              endpointParams:\n                                additionalProperties:\n                                  type: string\n                                description: Parameters to append to the token URL\n                                type: object\n                              scopes:\n                                description: OAuth2 scopes used for the token request\n                                items:\n                                  type: string\n                                type: array\n                              tokenUrl:\n                                description: The URL to fetch the token from\n                                minLength: 1\n                                type: string\n                            required:\n                            - clientId\n                            - clientSecret\n                            - tokenUrl\n                            type: object\n                          proxyURL:\n                            description: Optional proxy URL.\n                            type: string\n                          tlsConfig:\n                            description: TLS configuration for the client.\n                            properties:\n                              ca:\n                                description: Certificate authority used when verifying\n                                  server certificates.\n                                properties:\n                                  configMap:\n                                    description: ConfigMap containing data to use\n                                      for the targets.\n                                    properties:\n                                      key:\n                                        description: The key to select.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the ConfigMap\n                                          or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  secret:\n                                    description: Secret containing data to use for\n                                      the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              cert:\n                                description: Client certificate to present when doing\n                                  client-authentication.\n                                properties:\n                                  configMap:\n                                    description: ConfigMap containing data to use\n                                      for the targets.\n                                    properties:\n                                      key:\n                                        description: The key to select.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the ConfigMap\n                                          or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  secret:\n                                    description: Secret containing data to use for\n                                      the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select\n                                          from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info:\n                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                          TODO: Add other useful fields. apiVersion,\n                                          kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or\n                                          its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              insecureSkipVerify:\n                                description: Disable target certificate validation.\n                                type: boolean\n                              keySecret:\n                                description: Secret containing the client key file\n                                  for the targets.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              serverName:\n                                description: Used to verify the hostname for the targets.\n                                type: string\n                            type: object\n                        type: object\n                      opsGenieApiKey:\n                        description: The default OpsGenie API Key.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must\n                              be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must\n                              be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      opsGenieApiUrl:\n                        description: The default OpsGenie API URL.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must\n                              be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must\n                              be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      pagerdutyUrl:\n                        description: The default Pagerduty URL.\n                        type: string\n                      resolveTimeout:\n                        description: ResolveTimeout is the default value used by alertmanager\n                          if the alert does not include EndsAt, after this time passes\n                          it can declare the alert as resolved if it has not been\n                          updated. This has no impact on alerts from Prometheus, as\n                          they always include EndsAt.\n                        pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                        type: string\n                      slackApiUrl:\n                        description: The default Slack API URL.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must\n                              be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must\n                              be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      smtp:\n                        description: Configures global SMTP parameters.\n                        properties:\n                          authIdentity:\n                            description: SMTP Auth using PLAIN\n                            type: string\n                          authPassword:\n                            description: SMTP Auth using LOGIN and PLAIN.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          authSecret:\n                            description: SMTP Auth using CRAM-MD5.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          authUsername:\n                            description: SMTP Auth using CRAM-MD5, LOGIN and PLAIN.\n                              If empty, Alertmanager doesn't authenticate to the SMTP\n                              server.\n                            type: string\n                          from:\n                            description: The default SMTP From header field.\n                            type: string\n                          hello:\n                            description: The default hostname to identify to the SMTP\n                              server.\n                            type: string\n                          requireTLS:\n                            description: The default SMTP TLS requirement. Note that\n                              Go does not support unencrypted connections to remote\n                              SMTP endpoints.\n                            type: boolean\n                          smartHost:\n                            description: The default SMTP smarthost used for sending\n                              emails.\n                            properties:\n                              host:\n                                description: Defines the host's address, it can be\n                                  a DNS name or a literal IP address.\n                                minLength: 1\n                                type: string\n                              port:\n                                description: Defines the host's port, it can be a\n                                  literal port number or a port name.\n                                minLength: 1\n                                type: string\n                            required:\n                            - host\n                            - port\n                            type: object\n                        type: object\n                    type: object\n                  name:\n                    description: The name of the AlertmanagerConfig resource which\n                      is used to generate the Alertmanager configuration. It must\n                      be defined in the same namespace as the Alertmanager object.\n                      The operator will not enforce a `namespace` label for routes\n                      and inhibition rules.\n                    minLength: 1\n                    type: string\n                  templates:\n                    description: Custom notification templates.\n                    items:\n                      description: SecretOrConfigMap allows to specify data as a Secret\n                        or ConfigMap. Fields are mutually exclusive.\n                      properties:\n                        configMap:\n                          description: ConfigMap containing data to use for the targets.\n                          properties:\n                            key:\n                              description: The key to select.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the ConfigMap or its key\n                                must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        secret:\n                          description: Secret containing data to use for the targets.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      type: object\n                    type: array\n                type: object\n              automountServiceAccountToken:\n                description: 'AutomountServiceAccountToken indicates whether a service\n                  account token should be automatically mounted in the pod. If the\n                  service account has `automountServiceAccountToken: true`, set the\n                  field to `false` to opt out of automounting API credentials.'\n                type: boolean\n              baseImage:\n                description: 'Base image that is used to deploy pods, without tag.\n                  Deprecated: use ''image'' instead'\n                type: string\n              clusterAdvertiseAddress:\n                description: 'ClusterAdvertiseAddress is the explicit address to advertise\n                  in cluster. Needs to be provided for non RFC1918 [1] (public) addresses.\n                  [1] RFC1918: https://tools.ietf.org/html/rfc1918'\n                type: string\n              clusterGossipInterval:\n                description: Interval between gossip attempts.\n                pattern: ^(0|(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              clusterPeerTimeout:\n                description: Timeout for cluster peering.\n                pattern: ^(0|(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              clusterPushpullInterval:\n                description: Interval between pushpull attempts.\n                pattern: ^(0|(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              configMaps:\n                description: ConfigMaps is a list of ConfigMaps in the same namespace\n                  as the Alertmanager object, which shall be mounted into the Alertmanager\n                  Pods. Each ConfigMap is added to the StatefulSet definition as a\n                  volume named `configmap-<configmap-name>`. The ConfigMaps are mounted\n                  into `/etc/alertmanager/configmaps/<configmap-name>` in the 'alertmanager'\n                  container.\n                items:\n                  type: string\n                type: array\n              configSecret:\n                description: \"ConfigSecret is the name of a Kubernetes Secret in the\n                  same namespace as the Alertmanager object, which contains the configuration\n                  for this Alertmanager instance. If empty, it defaults to `alertmanager-<alertmanager-name>`.\n                  \\n The Alertmanager configuration should be available under the\n                  `alertmanager.yaml` key. Additional keys from the original secret\n                  are copied to the generated secret and mounted into the `/etc/alertmanager/config`\n                  directory in the `alertmanager` container. \\n If either the secret\n                  or the `alertmanager.yaml` key is missing, the operator provisions\n                  a minimal Alertmanager configuration with one empty receiver (effectively\n                  dropping alert notifications).\"\n                type: string\n              containers:\n                description: 'Containers allows injecting additional containers. This\n                  is meant to allow adding an authentication proxy to an Alertmanager\n                  pod. Containers described here modify an operator generated container\n                  if they share the same name and modifications are done via a strategic\n                  merge patch. The current container names are: `alertmanager` and\n                  `config-reloader`. Overriding containers is entirely outside the\n                  scope of what the maintainers will support and by doing so, you\n                  accept that this behaviour may break at any time without notice.'\n                items:\n                  description: A single application container that you want to run\n                    within a pod.\n                  properties:\n                    args:\n                      description: 'Arguments to the entrypoint. The container image''s\n                        CMD is used if this is not provided. Variable references $(VAR_NAME)\n                        are expanded using the container''s environment. If a variable\n                        cannot be resolved, the reference in the input string will\n                        be unchanged. Double $$ are reduced to a single $, which allows\n                        for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\n                        produce the string literal \"$(VAR_NAME)\". Escaped references\n                        will never be expanded, regardless of whether the variable\n                        exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    command:\n                      description: 'Entrypoint array. Not executed within a shell.\n                        The container image''s ENTRYPOINT is used if this is not provided.\n                        Variable references $(VAR_NAME) are expanded using the container''s\n                        environment. If a variable cannot be resolved, the reference\n                        in the input string will be unchanged. Double $$ are reduced\n                        to a single $, which allows for escaping the $(VAR_NAME) syntax:\n                        i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\".\n                        Escaped references will never be expanded, regardless of whether\n                        the variable exists or not. Cannot be updated. More info:\n                        https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    env:\n                      description: List of environment variables to set in the container.\n                        Cannot be updated.\n                      items:\n                        description: EnvVar represents an environment variable present\n                          in a Container.\n                        properties:\n                          name:\n                            description: Name of the environment variable. Must be\n                              a C_IDENTIFIER.\n                            type: string\n                          value:\n                            description: 'Variable references $(VAR_NAME) are expanded\n                              using the previously defined environment variables in\n                              the container and any service environment variables.\n                              If a variable cannot be resolved, the reference in the\n                              input string will be unchanged. Double $$ are reduced\n                              to a single $, which allows for escaping the $(VAR_NAME)\n                              syntax: i.e. \"$$(VAR_NAME)\" will produce the string\n                              literal \"$(VAR_NAME)\". Escaped references will never\n                              be expanded, regardless of whether the variable exists\n                              or not. Defaults to \"\".'\n                            type: string\n                          valueFrom:\n                            description: Source for the environment variable's value.\n                              Cannot be used if value is not empty.\n                            properties:\n                              configMapKeyRef:\n                                description: Selects a key of a ConfigMap.\n                                properties:\n                                  key:\n                                    description: The key to select.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the ConfigMap or\n                                      its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              fieldRef:\n                                description: 'Selects a field of the pod: supports\n                                  metadata.name, metadata.namespace, `metadata.labels[''<KEY>'']`,\n                                  `metadata.annotations[''<KEY>'']`, spec.nodeName,\n                                  spec.serviceAccountName, status.hostIP, status.podIP,\n                                  status.podIPs.'\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath\n                                      is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the\n                                      specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              resourceFieldRef:\n                                description: 'Selects a resource of the container:\n                                  only resources limits and requests (limits.cpu,\n                                  limits.memory, limits.ephemeral-storage, requests.cpu,\n                                  requests.memory and requests.ephemeral-storage)\n                                  are currently supported.'\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes,\n                                      optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the\n                                      exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              secretKeyRef:\n                                description: Selects a key of a secret in the pod's\n                                  namespace\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            type: object\n                        required:\n                        - name\n                        type: object\n                      type: array\n                    envFrom:\n                      description: List of sources to populate environment variables\n                        in the container. The keys defined within a source must be\n                        a C_IDENTIFIER. All invalid keys will be reported as an event\n                        when the container is starting. When a key exists in multiple\n                        sources, the value associated with the last source will take\n                        precedence. Values defined by an Env with a duplicate key\n                        will take precedence. Cannot be updated.\n                      items:\n                        description: EnvFromSource represents the source of a set\n                          of ConfigMaps\n                        properties:\n                          configMapRef:\n                            description: The ConfigMap to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap must be\n                                  defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          prefix:\n                            description: An optional identifier to prepend to each\n                              key in the ConfigMap. Must be a C_IDENTIFIER.\n                            type: string\n                          secretRef:\n                            description: The Secret to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      type: array\n                    image:\n                      description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images\n                        This field is optional to allow higher level config management\n                        to default or override container images in workload controllers\n                        like Deployments and StatefulSets.'\n                      type: string\n                    imagePullPolicy:\n                      description: 'Image pull policy. One of Always, Never, IfNotPresent.\n                        Defaults to Always if :latest tag is specified, or IfNotPresent\n                        otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images'\n                      type: string\n                    lifecycle:\n                      description: Actions that the management system should take\n                        in response to container lifecycle events. Cannot be updated.\n                      properties:\n                        postStart:\n                          description: 'PostStart is called immediately after a container\n                            is created. If the handler fails, the container is terminated\n                            and restarted according to its restart policy. Other management\n                            of the container blocks until the hook completes. More\n                            info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute\n                                    inside the container, the working directory for\n                                    the command  is root ('/') in the container's\n                                    filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions\n                                    ('|', etc) won't work. To use a shell, you need\n                                    to explicitly call out to that shell. Exit status\n                                    of 0 is treated as live/healthy and non-zero is\n                                    unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to\n                                    the pod IP. You probably want to set \"Host\" in\n                                    httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request.\n                                    HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header\n                                      to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will\n                                          be canonicalized upon output, so case-variant\n                                          names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the\n                                    host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported\n                                as a LifecycleHandler and kept for the backward compatibility.\n                                There are no validation of this field and lifecycle\n                                hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to,\n                                    defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                        preStop:\n                          description: 'PreStop is called immediately before a container\n                            is terminated due to an API request or management event\n                            such as liveness/startup probe failure, preemption, resource\n                            contention, etc. The handler is not called if the container\n                            crashes or exits. The Pod''s termination grace period\n                            countdown begins before the PreStop hook is executed.\n                            Regardless of the outcome of the handler, the container\n                            will eventually terminate within the Pod''s termination\n                            grace period (unless delayed by finalizers). Other management\n                            of the container blocks until the hook completes or until\n                            the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute\n                                    inside the container, the working directory for\n                                    the command  is root ('/') in the container's\n                                    filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions\n                                    ('|', etc) won't work. To use a shell, you need\n                                    to explicitly call out to that shell. Exit status\n                                    of 0 is treated as live/healthy and non-zero is\n                                    unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to\n                                    the pod IP. You probably want to set \"Host\" in\n                                    httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request.\n                                    HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header\n                                      to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will\n                                          be canonicalized upon output, so case-variant\n                                          names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the\n                                    host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported\n                                as a LifecycleHandler and kept for the backward compatibility.\n                                There are no validation of this field and lifecycle\n                                hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to,\n                                    defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                      type: object\n                    livenessProbe:\n                      description: 'Periodic probe of container liveness. Container\n                        will be restarted if the probe fails. Cannot be updated. More\n                        info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    name:\n                      description: Name of the container specified as a DNS_LABEL.\n                        Each container in a pod must have a unique name (DNS_LABEL).\n                        Cannot be updated.\n                      type: string\n                    ports:\n                      description: List of ports to expose from the container. Not\n                        specifying a port here DOES NOT prevent that port from being\n                        exposed. Any port which is listening on the default \"0.0.0.0\"\n                        address inside a container will be accessible from the network.\n                        Modifying this array with strategic merge patch may corrupt\n                        the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255.\n                        Cannot be updated.\n                      items:\n                        description: ContainerPort represents a network port in a\n                          single container.\n                        properties:\n                          containerPort:\n                            description: Number of port to expose on the pod's IP\n                              address. This must be a valid port number, 0 < x < 65536.\n                            format: int32\n                            type: integer\n                          hostIP:\n                            description: What host IP to bind the external port to.\n                            type: string\n                          hostPort:\n                            description: Number of port to expose on the host. If\n                              specified, this must be a valid port number, 0 < x <\n                              65536. If HostNetwork is specified, this must match\n                              ContainerPort. Most containers do not need this.\n                            format: int32\n                            type: integer\n                          name:\n                            description: If specified, this must be an IANA_SVC_NAME\n                              and unique within the pod. Each named port in a pod\n                              must have a unique name. Name for the port that can\n                              be referred to by services.\n                            type: string\n                          protocol:\n                            default: TCP\n                            description: Protocol for port. Must be UDP, TCP, or SCTP.\n                              Defaults to \"TCP\".\n                            type: string\n                        required:\n                        - containerPort\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - containerPort\n                      - protocol\n                      x-kubernetes-list-type: map\n                    readinessProbe:\n                      description: 'Periodic probe of container service readiness.\n                        Container will be removed from service endpoints if the probe\n                        fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    resizePolicy:\n                      description: Resources resize policy for the container.\n                      items:\n                        description: ContainerResizePolicy represents resource resize\n                          policy for the container.\n                        properties:\n                          resourceName:\n                            description: 'Name of the resource to which this resource\n                              resize policy applies. Supported values: cpu, memory.'\n                            type: string\n                          restartPolicy:\n                            description: Restart policy to apply when specified resource\n                              is resized. If not specified, it defaults to NotRequired.\n                            type: string\n                        required:\n                        - resourceName\n                        - restartPolicy\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    resources:\n                      description: 'Compute Resources required by this container.\n                        Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                      properties:\n                        claims:\n                          description: \"Claims lists the names of resources, defined\n                            in spec.resourceClaims, that are used by this container.\n                            \\n This is an alpha field and requires enabling the DynamicResourceAllocation\n                            feature gate. \\n This field is immutable. It can only\n                            be set for containers.\"\n                          items:\n                            description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                            properties:\n                              name:\n                                description: Name must match the name of one entry\n                                  in pod.spec.resourceClaims of the Pod where this\n                                  field is used. It makes that resource available\n                                  inside a container.\n                                type: string\n                            required:\n                            - name\n                            type: object\n                          type: array\n                          x-kubernetes-list-map-keys:\n                          - name\n                          x-kubernetes-list-type: map\n                        limits:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Limits describes the maximum amount of compute\n                            resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                        requests:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Requests describes the minimum amount of compute\n                            resources required. If Requests is omitted for a container,\n                            it defaults to Limits if that is explicitly specified,\n                            otherwise to an implementation-defined value. Requests\n                            cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                      type: object\n                    securityContext:\n                      description: 'SecurityContext defines the security options the\n                        container should be run with. If set, the fields of SecurityContext\n                        override the equivalent fields of PodSecurityContext. More\n                        info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/'\n                      properties:\n                        allowPrivilegeEscalation:\n                          description: 'AllowPrivilegeEscalation controls whether\n                            a process can gain more privileges than its parent process.\n                            This bool directly controls if the no_new_privs flag will\n                            be set on the container process. AllowPrivilegeEscalation\n                            is true always when the container is: 1) run as Privileged\n                            2) has CAP_SYS_ADMIN Note that this field cannot be set\n                            when spec.os.name is windows.'\n                          type: boolean\n                        capabilities:\n                          description: The capabilities to add/drop when running containers.\n                            Defaults to the default set of capabilities granted by\n                            the container runtime. Note that this field cannot be\n                            set when spec.os.name is windows.\n                          properties:\n                            add:\n                              description: Added capabilities\n                              items:\n                                description: Capability represent POSIX capabilities\n                                  type\n                                type: string\n                              type: array\n                            drop:\n                              description: Removed capabilities\n                              items:\n                                description: Capability represent POSIX capabilities\n                                  type\n                                type: string\n                              type: array\n                          type: object\n                        privileged:\n                          description: Run container in privileged mode. Processes\n                            in privileged containers are essentially equivalent to\n                            root on the host. Defaults to false. Note that this field\n                            cannot be set when spec.os.name is windows.\n                          type: boolean\n                        procMount:\n                          description: procMount denotes the type of proc mount to\n                            use for the containers. The default is DefaultProcMount\n                            which uses the container runtime defaults for readonly\n                            paths and masked paths. This requires the ProcMountType\n                            feature flag to be enabled. Note that this field cannot\n                            be set when spec.os.name is windows.\n                          type: string\n                        readOnlyRootFilesystem:\n                          description: Whether this container has a read-only root\n                            filesystem. Default is false. Note that this field cannot\n                            be set when spec.os.name is windows.\n                          type: boolean\n                        runAsGroup:\n                          description: The GID to run the entrypoint of the container\n                            process. Uses runtime default if unset. May also be set\n                            in PodSecurityContext.  If set in both SecurityContext\n                            and PodSecurityContext, the value specified in SecurityContext\n                            takes precedence. Note that this field cannot be set when\n                            spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        runAsNonRoot:\n                          description: Indicates that the container must run as a\n                            non-root user. If true, the Kubelet will validate the\n                            image at runtime to ensure that it does not run as UID\n                            0 (root) and fail to start the container if it does. If\n                            unset or false, no such validation will be performed.\n                            May also be set in PodSecurityContext.  If set in both\n                            SecurityContext and PodSecurityContext, the value specified\n                            in SecurityContext takes precedence.\n                          type: boolean\n                        runAsUser:\n                          description: The UID to run the entrypoint of the container\n                            process. Defaults to user specified in image metadata\n                            if unspecified. May also be set in PodSecurityContext.  If\n                            set in both SecurityContext and PodSecurityContext, the\n                            value specified in SecurityContext takes precedence. Note\n                            that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        seLinuxOptions:\n                          description: The SELinux context to be applied to the container.\n                            If unspecified, the container runtime will allocate a\n                            random SELinux context for each container.  May also be\n                            set in PodSecurityContext.  If set in both SecurityContext\n                            and PodSecurityContext, the value specified in SecurityContext\n                            takes precedence. Note that this field cannot be set when\n                            spec.os.name is windows.\n                          properties:\n                            level:\n                              description: Level is SELinux level label that applies\n                                to the container.\n                              type: string\n                            role:\n                              description: Role is a SELinux role label that applies\n                                to the container.\n                              type: string\n                            type:\n                              description: Type is a SELinux type label that applies\n                                to the container.\n                              type: string\n                            user:\n                              description: User is a SELinux user label that applies\n                                to the container.\n                              type: string\n                          type: object\n                        seccompProfile:\n                          description: The seccomp options to use by this container.\n                            If seccomp options are provided at both the pod & container\n                            level, the container options override the pod options.\n                            Note that this field cannot be set when spec.os.name is\n                            windows.\n                          properties:\n                            localhostProfile:\n                              description: localhostProfile indicates a profile defined\n                                in a file on the node should be used. The profile\n                                must be preconfigured on the node to work. Must be\n                                a descending path, relative to the kubelet's configured\n                                seccomp profile location. Must only be set if type\n                                is \"Localhost\".\n                              type: string\n                            type:\n                              description: \"type indicates which kind of seccomp profile\n                                will be applied. Valid options are: \\n Localhost -\n                                a profile defined in a file on the node should be\n                                used. RuntimeDefault - the container runtime default\n                                profile should be used. Unconfined - no profile should\n                                be applied.\"\n                              type: string\n                          required:\n                          - type\n                          type: object\n                        windowsOptions:\n                          description: The Windows specific settings applied to all\n                            containers. If unspecified, the options from the PodSecurityContext\n                            will be used. If set in both SecurityContext and PodSecurityContext,\n                            the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is\n                            linux.\n                          properties:\n                            gmsaCredentialSpec:\n                              description: GMSACredentialSpec is where the GMSA admission\n                                webhook (https://github.com/kubernetes-sigs/windows-gmsa)\n                                inlines the contents of the GMSA credential spec named\n                                by the GMSACredentialSpecName field.\n                              type: string\n                            gmsaCredentialSpecName:\n                              description: GMSACredentialSpecName is the name of the\n                                GMSA credential spec to use.\n                              type: string\n                            hostProcess:\n                              description: HostProcess determines if a container should\n                                be run as a 'Host Process' container. This field is\n                                alpha-level and will only be honored by components\n                                that enable the WindowsHostProcessContainers feature\n                                flag. Setting this field without the feature flag\n                                will result in errors when validating the Pod. All\n                                of a Pod's containers must have the same effective\n                                HostProcess value (it is not allowed to have a mix\n                                of HostProcess containers and non-HostProcess containers).  In\n                                addition, if HostProcess is true then HostNetwork\n                                must also be set to true.\n                              type: boolean\n                            runAsUserName:\n                              description: The UserName in Windows to run the entrypoint\n                                of the container process. Defaults to the user specified\n                                in image metadata if unspecified. May also be set\n                                in PodSecurityContext. If set in both SecurityContext\n                                and PodSecurityContext, the value specified in SecurityContext\n                                takes precedence.\n                              type: string\n                          type: object\n                      type: object\n                    startupProbe:\n                      description: 'StartupProbe indicates that the Pod has successfully\n                        initialized. If specified, no other probes are executed until\n                        this completes successfully. If this probe fails, the Pod\n                        will be restarted, just as if the livenessProbe failed. This\n                        can be used to provide different probe parameters at the beginning\n                        of a Pod''s lifecycle, when it might take a long time to load\n                        data or warm a cache, than during steady-state operation.\n                        This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    stdin:\n                      description: Whether this container should allocate a buffer\n                        for stdin in the container runtime. If this is not set, reads\n                        from stdin in the container will always result in EOF. Default\n                        is false.\n                      type: boolean\n                    stdinOnce:\n                      description: Whether the container runtime should close the\n                        stdin channel after it has been opened by a single attach.\n                        When stdin is true the stdin stream will remain open across\n                        multiple attach sessions. If stdinOnce is set to true, stdin\n                        is opened on container start, is empty until the first client\n                        attaches to stdin, and then remains open and accepts data\n                        until the client disconnects, at which time stdin is closed\n                        and remains closed until the container is restarted. If this\n                        flag is false, a container processes that reads from stdin\n                        will never receive an EOF. Default is false\n                      type: boolean\n                    terminationMessagePath:\n                      description: 'Optional: Path at which the file to which the\n                        container''s termination message will be written is mounted\n                        into the container''s filesystem. Message written is intended\n                        to be brief final status, such as an assertion failure message.\n                        Will be truncated by the node if greater than 4096 bytes.\n                        The total message length across all containers will be limited\n                        to 12kb. Defaults to /dev/termination-log. Cannot be updated.'\n                      type: string\n                    terminationMessagePolicy:\n                      description: Indicate how the termination message should be\n                        populated. File will use the contents of terminationMessagePath\n                        to populate the container status message on both success and\n                        failure. FallbackToLogsOnError will use the last chunk of\n                        container log output if the termination message file is empty\n                        and the container exited with an error. The log output is\n                        limited to 2048 bytes or 80 lines, whichever is smaller. Defaults\n                        to File. Cannot be updated.\n                      type: string\n                    tty:\n                      description: Whether this container should allocate a TTY for\n                        itself, also requires 'stdin' to be true. Default is false.\n                      type: boolean\n                    volumeDevices:\n                      description: volumeDevices is the list of block devices to be\n                        used by the container.\n                      items:\n                        description: volumeDevice describes a mapping of a raw block\n                          device within a container.\n                        properties:\n                          devicePath:\n                            description: devicePath is the path inside of the container\n                              that the device will be mapped to.\n                            type: string\n                          name:\n                            description: name must match the name of a persistentVolumeClaim\n                              in the pod\n                            type: string\n                        required:\n                        - devicePath\n                        - name\n                        type: object\n                      type: array\n                    volumeMounts:\n                      description: Pod volumes to mount into the container's filesystem.\n                        Cannot be updated.\n                      items:\n                        description: VolumeMount describes a mounting of a Volume\n                          within a container.\n                        properties:\n                          mountPath:\n                            description: Path within the container at which the volume\n                              should be mounted.  Must not contain ':'.\n                            type: string\n                          mountPropagation:\n                            description: mountPropagation determines how mounts are\n                              propagated from the host to container and the other\n                              way around. When not set, MountPropagationNone is used.\n                              This field is beta in 1.10.\n                            type: string\n                          name:\n                            description: This must match the Name of a Volume.\n                            type: string\n                          readOnly:\n                            description: Mounted read-only if true, read-write otherwise\n                              (false or unspecified). Defaults to false.\n                            type: boolean\n                          subPath:\n                            description: Path within the volume from which the container's\n                              volume should be mounted. Defaults to \"\" (volume's root).\n                            type: string\n                          subPathExpr:\n                            description: Expanded path within the volume from which\n                              the container's volume should be mounted. Behaves similarly\n                              to SubPath but environment variable references $(VAR_NAME)\n                              are expanded using the container's environment. Defaults\n                              to \"\" (volume's root). SubPathExpr and SubPath are mutually\n                              exclusive.\n                            type: string\n                        required:\n                        - mountPath\n                        - name\n                        type: object\n                      type: array\n                    workingDir:\n                      description: Container's working directory. If not specified,\n                        the container runtime's default will be used, which might\n                        be configured in the container image. Cannot be updated.\n                      type: string\n                  required:\n                  - name\n                  type: object\n                type: array\n              externalUrl:\n                description: The external URL the Alertmanager instances will be available\n                  under. This is necessary to generate correct URLs. This is necessary\n                  if Alertmanager is not served from root of a DNS name.\n                type: string\n              forceEnableClusterMode:\n                description: ForceEnableClusterMode ensures Alertmanager does not\n                  deactivate the cluster mode when running with a single replica.\n                  Use case is e.g. spanning an Alertmanager cluster across Kubernetes\n                  clusters with a single replica in each.\n                type: boolean\n              hostAliases:\n                description: Pods' hostAliases configuration\n                items:\n                  description: HostAlias holds the mapping between IP and hostnames\n                    that will be injected as an entry in the pod's hosts file.\n                  properties:\n                    hostnames:\n                      description: Hostnames for the above IP address.\n                      items:\n                        type: string\n                      type: array\n                    ip:\n                      description: IP address of the host file entry.\n                      type: string\n                  required:\n                  - hostnames\n                  - ip\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - ip\n                x-kubernetes-list-type: map\n              image:\n                description: Image if specified has precedence over baseImage, tag\n                  and sha combinations. Specifying the version is still necessary\n                  to ensure the Prometheus Operator knows what version of Alertmanager\n                  is being configured.\n                type: string\n              imagePullPolicy:\n                description: Image pull policy for the 'alertmanager', 'init-config-reloader'\n                  and 'config-reloader' containers. See https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy\n                  for more details.\n                enum:\n                - \"\"\n                - Always\n                - Never\n                - IfNotPresent\n                type: string\n              imagePullSecrets:\n                description: An optional list of references to secrets in the same\n                  namespace to use for pulling prometheus and alertmanager images\n                  from registries see http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod\n                items:\n                  description: LocalObjectReference contains enough information to\n                    let you locate the referenced object inside the same namespace.\n                  properties:\n                    name:\n                      description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                        TODO: Add other useful fields. apiVersion, kind, uid?'\n                      type: string\n                  type: object\n                  x-kubernetes-map-type: atomic\n                type: array\n              initContainers:\n                description: 'InitContainers allows adding initContainers to the pod\n                  definition. Those can be used to e.g. fetch secrets for injection\n                  into the Alertmanager configuration from external sources. Any errors\n                  during the execution of an initContainer will lead to a restart\n                  of the Pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n                  InitContainers described here modify an operator generated init\n                  containers if they share the same name and modifications are done\n                  via a strategic merge patch. The current init container name is:\n                  `init-config-reloader`. Overriding init containers is entirely outside\n                  the scope of what the maintainers will support and by doing so,\n                  you accept that this behaviour may break at any time without notice.'\n                items:\n                  description: A single application container that you want to run\n                    within a pod.\n                  properties:\n                    args:\n                      description: 'Arguments to the entrypoint. The container image''s\n                        CMD is used if this is not provided. Variable references $(VAR_NAME)\n                        are expanded using the container''s environment. If a variable\n                        cannot be resolved, the reference in the input string will\n                        be unchanged. Double $$ are reduced to a single $, which allows\n                        for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\n                        produce the string literal \"$(VAR_NAME)\". Escaped references\n                        will never be expanded, regardless of whether the variable\n                        exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    command:\n                      description: 'Entrypoint array. Not executed within a shell.\n                        The container image''s ENTRYPOINT is used if this is not provided.\n                        Variable references $(VAR_NAME) are expanded using the container''s\n                        environment. If a variable cannot be resolved, the reference\n                        in the input string will be unchanged. Double $$ are reduced\n                        to a single $, which allows for escaping the $(VAR_NAME) syntax:\n                        i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\".\n                        Escaped references will never be expanded, regardless of whether\n                        the variable exists or not. Cannot be updated. More info:\n                        https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    env:\n                      description: List of environment variables to set in the container.\n                        Cannot be updated.\n                      items:\n                        description: EnvVar represents an environment variable present\n                          in a Container.\n                        properties:\n                          name:\n                            description: Name of the environment variable. Must be\n                              a C_IDENTIFIER.\n                            type: string\n                          value:\n                            description: 'Variable references $(VAR_NAME) are expanded\n                              using the previously defined environment variables in\n                              the container and any service environment variables.\n                              If a variable cannot be resolved, the reference in the\n                              input string will be unchanged. Double $$ are reduced\n                              to a single $, which allows for escaping the $(VAR_NAME)\n                              syntax: i.e. \"$$(VAR_NAME)\" will produce the string\n                              literal \"$(VAR_NAME)\". Escaped references will never\n                              be expanded, regardless of whether the variable exists\n                              or not. Defaults to \"\".'\n                            type: string\n                          valueFrom:\n                            description: Source for the environment variable's value.\n                              Cannot be used if value is not empty.\n                            properties:\n                              configMapKeyRef:\n                                description: Selects a key of a ConfigMap.\n                                properties:\n                                  key:\n                                    description: The key to select.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the ConfigMap or\n                                      its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              fieldRef:\n                                description: 'Selects a field of the pod: supports\n                                  metadata.name, metadata.namespace, `metadata.labels[''<KEY>'']`,\n                                  `metadata.annotations[''<KEY>'']`, spec.nodeName,\n                                  spec.serviceAccountName, status.hostIP, status.podIP,\n                                  status.podIPs.'\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath\n                                      is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the\n                                      specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              resourceFieldRef:\n                                description: 'Selects a resource of the container:\n                                  only resources limits and requests (limits.cpu,\n                                  limits.memory, limits.ephemeral-storage, requests.cpu,\n                                  requests.memory and requests.ephemeral-storage)\n                                  are currently supported.'\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes,\n                                      optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the\n                                      exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              secretKeyRef:\n                                description: Selects a key of a secret in the pod's\n                                  namespace\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            type: object\n                        required:\n                        - name\n                        type: object\n                      type: array\n                    envFrom:\n                      description: List of sources to populate environment variables\n                        in the container. The keys defined within a source must be\n                        a C_IDENTIFIER. All invalid keys will be reported as an event\n                        when the container is starting. When a key exists in multiple\n                        sources, the value associated with the last source will take\n                        precedence. Values defined by an Env with a duplicate key\n                        will take precedence. Cannot be updated.\n                      items:\n                        description: EnvFromSource represents the source of a set\n                          of ConfigMaps\n                        properties:\n                          configMapRef:\n                            description: The ConfigMap to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap must be\n                                  defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          prefix:\n                            description: An optional identifier to prepend to each\n                              key in the ConfigMap. Must be a C_IDENTIFIER.\n                            type: string\n                          secretRef:\n                            description: The Secret to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      type: array\n                    image:\n                      description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images\n                        This field is optional to allow higher level config management\n                        to default or override container images in workload controllers\n                        like Deployments and StatefulSets.'\n                      type: string\n                    imagePullPolicy:\n                      description: 'Image pull policy. One of Always, Never, IfNotPresent.\n                        Defaults to Always if :latest tag is specified, or IfNotPresent\n                        otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images'\n                      type: string\n                    lifecycle:\n                      description: Actions that the management system should take\n                        in response to container lifecycle events. Cannot be updated.\n                      properties:\n                        postStart:\n                          description: 'PostStart is called immediately after a container\n                            is created. If the handler fails, the container is terminated\n                            and restarted according to its restart policy. Other management\n                            of the container blocks until the hook completes. More\n                            info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute\n                                    inside the container, the working directory for\n                                    the command  is root ('/') in the container's\n                                    filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions\n                                    ('|', etc) won't work. To use a shell, you need\n                                    to explicitly call out to that shell. Exit status\n                                    of 0 is treated as live/healthy and non-zero is\n                                    unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to\n                                    the pod IP. You probably want to set \"Host\" in\n                                    httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request.\n                                    HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header\n                                      to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will\n                                          be canonicalized upon output, so case-variant\n                                          names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the\n                                    host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported\n                                as a LifecycleHandler and kept for the backward compatibility.\n                                There are no validation of this field and lifecycle\n                                hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to,\n                                    defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                        preStop:\n                          description: 'PreStop is called immediately before a container\n                            is terminated due to an API request or management event\n                            such as liveness/startup probe failure, preemption, resource\n                            contention, etc. The handler is not called if the container\n                            crashes or exits. The Pod''s termination grace period\n                            countdown begins before the PreStop hook is executed.\n                            Regardless of the outcome of the handler, the container\n                            will eventually terminate within the Pod''s termination\n                            grace period (unless delayed by finalizers). Other management\n                            of the container blocks until the hook completes or until\n                            the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute\n                                    inside the container, the working directory for\n                                    the command  is root ('/') in the container's\n                                    filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions\n                                    ('|', etc) won't work. To use a shell, you need\n                                    to explicitly call out to that shell. Exit status\n                                    of 0 is treated as live/healthy and non-zero is\n                                    unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to\n                                    the pod IP. You probably want to set \"Host\" in\n                                    httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request.\n                                    HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header\n                                      to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will\n                                          be canonicalized upon output, so case-variant\n                                          names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the\n                                    host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported\n                                as a LifecycleHandler and kept for the backward compatibility.\n                                There are no validation of this field and lifecycle\n                                hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to,\n                                    defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                      type: object\n                    livenessProbe:\n                      description: 'Periodic probe of container liveness. Container\n                        will be restarted if the probe fails. Cannot be updated. More\n                        info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    name:\n                      description: Name of the container specified as a DNS_LABEL.\n                        Each container in a pod must have a unique name (DNS_LABEL).\n                        Cannot be updated.\n                      type: string\n                    ports:\n                      description: List of ports to expose from the container. Not\n                        specifying a port here DOES NOT prevent that port from being\n                        exposed. Any port which is listening on the default \"0.0.0.0\"\n                        address inside a container will be accessible from the network.\n                        Modifying this array with strategic merge patch may corrupt\n                        the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255.\n                        Cannot be updated.\n                      items:\n                        description: ContainerPort represents a network port in a\n                          single container.\n                        properties:\n                          containerPort:\n                            description: Number of port to expose on the pod's IP\n                              address. This must be a valid port number, 0 < x < 65536.\n                            format: int32\n                            type: integer\n                          hostIP:\n                            description: What host IP to bind the external port to.\n                            type: string\n                          hostPort:\n                            description: Number of port to expose on the host. If\n                              specified, this must be a valid port number, 0 < x <\n                              65536. If HostNetwork is specified, this must match\n                              ContainerPort. Most containers do not need this.\n                            format: int32\n                            type: integer\n                          name:\n                            description: If specified, this must be an IANA_SVC_NAME\n                              and unique within the pod. Each named port in a pod\n                              must have a unique name. Name for the port that can\n                              be referred to by services.\n                            type: string\n                          protocol:\n                            default: TCP\n                            description: Protocol for port. Must be UDP, TCP, or SCTP.\n                              Defaults to \"TCP\".\n                            type: string\n                        required:\n                        - containerPort\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - containerPort\n                      - protocol\n                      x-kubernetes-list-type: map\n                    readinessProbe:\n                      description: 'Periodic probe of container service readiness.\n                        Container will be removed from service endpoints if the probe\n                        fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    resizePolicy:\n                      description: Resources resize policy for the container.\n                      items:\n                        description: ContainerResizePolicy represents resource resize\n                          policy for the container.\n                        properties:\n                          resourceName:\n                            description: 'Name of the resource to which this resource\n                              resize policy applies. Supported values: cpu, memory.'\n                            type: string\n                          restartPolicy:\n                            description: Restart policy to apply when specified resource\n                              is resized. If not specified, it defaults to NotRequired.\n                            type: string\n                        required:\n                        - resourceName\n                        - restartPolicy\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    resources:\n                      description: 'Compute Resources required by this container.\n                        Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                      properties:\n                        claims:\n                          description: \"Claims lists the names of resources, defined\n                            in spec.resourceClaims, that are used by this container.\n                            \\n This is an alpha field and requires enabling the DynamicResourceAllocation\n                            feature gate. \\n This field is immutable. It can only\n                            be set for containers.\"\n                          items:\n                            description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                            properties:\n                              name:\n                                description: Name must match the name of one entry\n                                  in pod.spec.resourceClaims of the Pod where this\n                                  field is used. It makes that resource available\n                                  inside a container.\n                                type: string\n                            required:\n                            - name\n                            type: object\n                          type: array\n                          x-kubernetes-list-map-keys:\n                          - name\n                          x-kubernetes-list-type: map\n                        limits:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Limits describes the maximum amount of compute\n                            resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                        requests:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Requests describes the minimum amount of compute\n                            resources required. If Requests is omitted for a container,\n                            it defaults to Limits if that is explicitly specified,\n                            otherwise to an implementation-defined value. Requests\n                            cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                      type: object\n                    securityContext:\n                      description: 'SecurityContext defines the security options the\n                        container should be run with. If set, the fields of SecurityContext\n                        override the equivalent fields of PodSecurityContext. More\n                        info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/'\n                      properties:\n                        allowPrivilegeEscalation:\n                          description: 'AllowPrivilegeEscalation controls whether\n                            a process can gain more privileges than its parent process.\n                            This bool directly controls if the no_new_privs flag will\n                            be set on the container process. AllowPrivilegeEscalation\n                            is true always when the container is: 1) run as Privileged\n                            2) has CAP_SYS_ADMIN Note that this field cannot be set\n                            when spec.os.name is windows.'\n                          type: boolean\n                        capabilities:\n                          description: The capabilities to add/drop when running containers.\n                            Defaults to the default set of capabilities granted by\n                            the container runtime. Note that this field cannot be\n                            set when spec.os.name is windows.\n                          properties:\n                            add:\n                              description: Added capabilities\n                              items:\n                                description: Capability represent POSIX capabilities\n                                  type\n                                type: string\n                              type: array\n                            drop:\n                              description: Removed capabilities\n                              items:\n                                description: Capability represent POSIX capabilities\n                                  type\n                                type: string\n                              type: array\n                          type: object\n                        privileged:\n                          description: Run container in privileged mode. Processes\n                            in privileged containers are essentially equivalent to\n                            root on the host. Defaults to false. Note that this field\n                            cannot be set when spec.os.name is windows.\n                          type: boolean\n                        procMount:\n                          description: procMount denotes the type of proc mount to\n                            use for the containers. The default is DefaultProcMount\n                            which uses the container runtime defaults for readonly\n                            paths and masked paths. This requires the ProcMountType\n                            feature flag to be enabled. Note that this field cannot\n                            be set when spec.os.name is windows.\n                          type: string\n                        readOnlyRootFilesystem:\n                          description: Whether this container has a read-only root\n                            filesystem. Default is false. Note that this field cannot\n                            be set when spec.os.name is windows.\n                          type: boolean\n                        runAsGroup:\n                          description: The GID to run the entrypoint of the container\n                            process. Uses runtime default if unset. May also be set\n                            in PodSecurityContext.  If set in both SecurityContext\n                            and PodSecurityContext, the value specified in SecurityContext\n                            takes precedence. Note that this field cannot be set when\n                            spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        runAsNonRoot:\n                          description: Indicates that the container must run as a\n                            non-root user. If true, the Kubelet will validate the\n                            image at runtime to ensure that it does not run as UID\n                            0 (root) and fail to start the container if it does. If\n                            unset or false, no such validation will be performed.\n                            May also be set in PodSecurityContext.  If set in both\n                            SecurityContext and PodSecurityContext, the value specified\n                            in SecurityContext takes precedence.\n                          type: boolean\n                        runAsUser:\n                          description: The UID to run the entrypoint of the container\n                            process. Defaults to user specified in image metadata\n                            if unspecified. May also be set in PodSecurityContext.  If\n                            set in both SecurityContext and PodSecurityContext, the\n                            value specified in SecurityContext takes precedence. Note\n                            that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        seLinuxOptions:\n                          description: The SELinux context to be applied to the container.\n                            If unspecified, the container runtime will allocate a\n                            random SELinux context for each container.  May also be\n                            set in PodSecurityContext.  If set in both SecurityContext\n                            and PodSecurityContext, the value specified in SecurityContext\n                            takes precedence. Note that this field cannot be set when\n                            spec.os.name is windows.\n                          properties:\n                            level:\n                              description: Level is SELinux level label that applies\n                                to the container.\n                              type: string\n                            role:\n                              description: Role is a SELinux role label that applies\n                                to the container.\n                              type: string\n                            type:\n                              description: Type is a SELinux type label that applies\n                                to the container.\n                              type: string\n                            user:\n                              description: User is a SELinux user label that applies\n                                to the container.\n                              type: string\n                          type: object\n                        seccompProfile:\n                          description: The seccomp options to use by this container.\n                            If seccomp options are provided at both the pod & container\n                            level, the container options override the pod options.\n                            Note that this field cannot be set when spec.os.name is\n                            windows.\n                          properties:\n                            localhostProfile:\n                              description: localhostProfile indicates a profile defined\n                                in a file on the node should be used. The profile\n                                must be preconfigured on the node to work. Must be\n                                a descending path, relative to the kubelet's configured\n                                seccomp profile location. Must only be set if type\n                                is \"Localhost\".\n                              type: string\n                            type:\n                              description: \"type indicates which kind of seccomp profile\n                                will be applied. Valid options are: \\n Localhost -\n                                a profile defined in a file on the node should be\n                                used. RuntimeDefault - the container runtime default\n                                profile should be used. Unconfined - no profile should\n                                be applied.\"\n                              type: string\n                          required:\n                          - type\n                          type: object\n                        windowsOptions:\n                          description: The Windows specific settings applied to all\n                            containers. If unspecified, the options from the PodSecurityContext\n                            will be used. If set in both SecurityContext and PodSecurityContext,\n                            the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is\n                            linux.\n                          properties:\n                            gmsaCredentialSpec:\n                              description: GMSACredentialSpec is where the GMSA admission\n                                webhook (https://github.com/kubernetes-sigs/windows-gmsa)\n                                inlines the contents of the GMSA credential spec named\n                                by the GMSACredentialSpecName field.\n                              type: string\n                            gmsaCredentialSpecName:\n                              description: GMSACredentialSpecName is the name of the\n                                GMSA credential spec to use.\n                              type: string\n                            hostProcess:\n                              description: HostProcess determines if a container should\n                                be run as a 'Host Process' container. This field is\n                                alpha-level and will only be honored by components\n                                that enable the WindowsHostProcessContainers feature\n                                flag. Setting this field without the feature flag\n                                will result in errors when validating the Pod. All\n                                of a Pod's containers must have the same effective\n                                HostProcess value (it is not allowed to have a mix\n                                of HostProcess containers and non-HostProcess containers).  In\n                                addition, if HostProcess is true then HostNetwork\n                                must also be set to true.\n                              type: boolean\n                            runAsUserName:\n                              description: The UserName in Windows to run the entrypoint\n                                of the container process. Defaults to the user specified\n                                in image metadata if unspecified. May also be set\n                                in PodSecurityContext. If set in both SecurityContext\n                                and PodSecurityContext, the value specified in SecurityContext\n                                takes precedence.\n                              type: string\n                          type: object\n                      type: object\n                    startupProbe:\n                      description: 'StartupProbe indicates that the Pod has successfully\n                        initialized. If specified, no other probes are executed until\n                        this completes successfully. If this probe fails, the Pod\n                        will be restarted, just as if the livenessProbe failed. This\n                        can be used to provide different probe parameters at the beginning\n                        of a Pod''s lifecycle, when it might take a long time to load\n                        data or warm a cache, than during steady-state operation.\n                        This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    stdin:\n                      description: Whether this container should allocate a buffer\n                        for stdin in the container runtime. If this is not set, reads\n                        from stdin in the container will always result in EOF. Default\n                        is false.\n                      type: boolean\n                    stdinOnce:\n                      description: Whether the container runtime should close the\n                        stdin channel after it has been opened by a single attach.\n                        When stdin is true the stdin stream will remain open across\n                        multiple attach sessions. If stdinOnce is set to true, stdin\n                        is opened on container start, is empty until the first client\n                        attaches to stdin, and then remains open and accepts data\n                        until the client disconnects, at which time stdin is closed\n                        and remains closed until the container is restarted. If this\n                        flag is false, a container processes that reads from stdin\n                        will never receive an EOF. Default is false\n                      type: boolean\n                    terminationMessagePath:\n                      description: 'Optional: Path at which the file to which the\n                        container''s termination message will be written is mounted\n                        into the container''s filesystem. Message written is intended\n                        to be brief final status, such as an assertion failure message.\n                        Will be truncated by the node if greater than 4096 bytes.\n                        The total message length across all containers will be limited\n                        to 12kb. Defaults to /dev/termination-log. Cannot be updated.'\n                      type: string\n                    terminationMessagePolicy:\n                      description: Indicate how the termination message should be\n                        populated. File will use the contents of terminationMessagePath\n                        to populate the container status message on both success and\n                        failure. FallbackToLogsOnError will use the last chunk of\n                        container log output if the termination message file is empty\n                        and the container exited with an error. The log output is\n                        limited to 2048 bytes or 80 lines, whichever is smaller. Defaults\n                        to File. Cannot be updated.\n                      type: string\n                    tty:\n                      description: Whether this container should allocate a TTY for\n                        itself, also requires 'stdin' to be true. Default is false.\n                      type: boolean\n                    volumeDevices:\n                      description: volumeDevices is the list of block devices to be\n                        used by the container.\n                      items:\n                        description: volumeDevice describes a mapping of a raw block\n                          device within a container.\n                        properties:\n                          devicePath:\n                            description: devicePath is the path inside of the container\n                              that the device will be mapped to.\n                            type: string\n                          name:\n                            description: name must match the name of a persistentVolumeClaim\n                              in the pod\n                            type: string\n                        required:\n                        - devicePath\n                        - name\n                        type: object\n                      type: array\n                    volumeMounts:\n                      description: Pod volumes to mount into the container's filesystem.\n                        Cannot be updated.\n                      items:\n                        description: VolumeMount describes a mounting of a Volume\n                          within a container.\n                        properties:\n                          mountPath:\n                            description: Path within the container at which the volume\n                              should be mounted.  Must not contain ':'.\n                            type: string\n                          mountPropagation:\n                            description: mountPropagation determines how mounts are\n                              propagated from the host to container and the other\n                              way around. When not set, MountPropagationNone is used.\n                              This field is beta in 1.10.\n                            type: string\n                          name:\n                            description: This must match the Name of a Volume.\n                            type: string\n                          readOnly:\n                            description: Mounted read-only if true, read-write otherwise\n                              (false or unspecified). Defaults to false.\n                            type: boolean\n                          subPath:\n                            description: Path within the volume from which the container's\n                              volume should be mounted. Defaults to \"\" (volume's root).\n                            type: string\n                          subPathExpr:\n                            description: Expanded path within the volume from which\n                              the container's volume should be mounted. Behaves similarly\n                              to SubPath but environment variable references $(VAR_NAME)\n                              are expanded using the container's environment. Defaults\n                              to \"\" (volume's root). SubPathExpr and SubPath are mutually\n                              exclusive.\n                            type: string\n                        required:\n                        - mountPath\n                        - name\n                        type: object\n                      type: array\n                    workingDir:\n                      description: Container's working directory. If not specified,\n                        the container runtime's default will be used, which might\n                        be configured in the container image. Cannot be updated.\n                      type: string\n                  required:\n                  - name\n                  type: object\n                type: array\n              listenLocal:\n                description: ListenLocal makes the Alertmanager server listen on loopback,\n                  so that it does not bind against the Pod IP. Note this is only for\n                  the Alertmanager UI, not the gossip communication.\n                type: boolean\n              logFormat:\n                description: Log format for Alertmanager to be configured with.\n                enum:\n                - \"\"\n                - logfmt\n                - json\n                type: string\n              logLevel:\n                description: Log level for Alertmanager to be configured with.\n                enum:\n                - \"\"\n                - debug\n                - info\n                - warn\n                - error\n                type: string\n              minReadySeconds:\n                description: Minimum number of seconds for which a newly created pod\n                  should be ready without any of its container crashing for it to\n                  be considered available. Defaults to 0 (pod will be considered available\n                  as soon as it is ready) This is an alpha field from kubernetes 1.22\n                  until 1.24 which requires enabling the StatefulSetMinReadySeconds\n                  feature gate.\n                format: int32\n                type: integer\n              nodeSelector:\n                additionalProperties:\n                  type: string\n                description: Define which Nodes the Pods are scheduled on.\n                type: object\n              paused:\n                description: If set to true all actions on the underlying managed\n                  objects are not goint to be performed, except for delete actions.\n                type: boolean\n              podMetadata:\n                description: PodMetadata configures Labels and Annotations which are\n                  propagated to the alertmanager pods.\n                properties:\n                  annotations:\n                    additionalProperties:\n                      type: string\n                    description: 'Annotations is an unstructured key value map stored\n                      with a resource that may be set by external tools to store and\n                      retrieve arbitrary metadata. They are not queryable and should\n                      be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations'\n                    type: object\n                  labels:\n                    additionalProperties:\n                      type: string\n                    description: 'Map of string keys and values that can be used to\n                      organize and categorize (scope and select) objects. May match\n                      selectors of replication controllers and services. More info:\n                      http://kubernetes.io/docs/user-guide/labels'\n                    type: object\n                  name:\n                    description: 'Name must be unique within a namespace. Is required\n                      when creating resources, although some resources may allow a\n                      client to request the generation of an appropriate name automatically.\n                      Name is primarily intended for creation idempotence and configuration\n                      definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names'\n                    type: string\n                type: object\n              portName:\n                default: web\n                description: Port name used for the pods and governing service. Defaults\n                  to `web`.\n                type: string\n              priorityClassName:\n                description: Priority class assigned to the Pods\n                type: string\n              replicas:\n                description: Size is the expected size of the alertmanager cluster.\n                  The controller will eventually make the size of the running cluster\n                  equal to the expected size.\n                format: int32\n                type: integer\n              resources:\n                description: Define resources requests and limits for single Pods.\n                properties:\n                  claims:\n                    description: \"Claims lists the names of resources, defined in\n                      spec.resourceClaims, that are used by this container. \\n This\n                      is an alpha field and requires enabling the DynamicResourceAllocation\n                      feature gate. \\n This field is immutable. It can only be set\n                      for containers.\"\n                    items:\n                      description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                      properties:\n                        name:\n                          description: Name must match the name of one entry in pod.spec.resourceClaims\n                            of the Pod where this field is used. It makes that resource\n                            available inside a container.\n                          type: string\n                      required:\n                      - name\n                      type: object\n                    type: array\n                    x-kubernetes-list-map-keys:\n                    - name\n                    x-kubernetes-list-type: map\n                  limits:\n                    additionalProperties:\n                      anyOf:\n                      - type: integer\n                      - type: string\n                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                      x-kubernetes-int-or-string: true\n                    description: 'Limits describes the maximum amount of compute resources\n                      allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                    type: object\n                  requests:\n                    additionalProperties:\n                      anyOf:\n                      - type: integer\n                      - type: string\n                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                      x-kubernetes-int-or-string: true\n                    description: 'Requests describes the minimum amount of compute\n                      resources required. If Requests is omitted for a container,\n                      it defaults to Limits if that is explicitly specified, otherwise\n                      to an implementation-defined value. Requests cannot exceed Limits.\n                      More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                    type: object\n                type: object\n              retention:\n                default: 120h\n                description: Time duration Alertmanager shall retain data for. Default\n                  is '120h', and must match the regular expression `[0-9]+(ms|s|m|h)`\n                  (milliseconds seconds minutes hours).\n                pattern: ^(0|(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              routePrefix:\n                description: The route prefix Alertmanager registers HTTP handlers\n                  for. This is useful, if using ExternalURL and a proxy is rewriting\n                  HTTP routes of a request, and the actual ExternalURL is still true,\n                  but the server serves requests under a different route prefix. For\n                  example for use with `kubectl proxy`.\n                type: string\n              secrets:\n                description: Secrets is a list of Secrets in the same namespace as\n                  the Alertmanager object, which shall be mounted into the Alertmanager\n                  Pods. Each Secret is added to the StatefulSet definition as a volume\n                  named `secret-<secret-name>`. The Secrets are mounted into `/etc/alertmanager/secrets/<secret-name>`\n                  in the 'alertmanager' container.\n                items:\n                  type: string\n                type: array\n              securityContext:\n                description: SecurityContext holds pod-level security attributes and\n                  common container settings. This defaults to the default PodSecurityContext.\n                properties:\n                  fsGroup:\n                    description: \"A special supplemental group that applies to all\n                      containers in a pod. Some volume types allow the Kubelet to\n                      change the ownership of that volume to be owned by the pod:\n                      \\n 1. The owning GID will be the FSGroup 2. The setgid bit is\n                      set (new files created in the volume will be owned by FSGroup)\n                      3. The permission bits are OR'd with rw-rw---- \\n If unset,\n                      the Kubelet will not modify the ownership and permissions of\n                      any volume. Note that this field cannot be set when spec.os.name\n                      is windows.\"\n                    format: int64\n                    type: integer\n                  fsGroupChangePolicy:\n                    description: 'fsGroupChangePolicy defines behavior of changing\n                      ownership and permission of the volume before being exposed\n                      inside Pod. This field will only apply to volume types which\n                      support fsGroup based ownership(and permissions). It will have\n                      no effect on ephemeral volume types such as: secret, configmaps\n                      and emptydir. Valid values are \"OnRootMismatch\" and \"Always\".\n                      If not specified, \"Always\" is used. Note that this field cannot\n                      be set when spec.os.name is windows.'\n                    type: string\n                  runAsGroup:\n                    description: The GID to run the entrypoint of the container process.\n                      Uses runtime default if unset. May also be set in SecurityContext.  If\n                      set in both SecurityContext and PodSecurityContext, the value\n                      specified in SecurityContext takes precedence for that container.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    format: int64\n                    type: integer\n                  runAsNonRoot:\n                    description: Indicates that the container must run as a non-root\n                      user. If true, the Kubelet will validate the image at runtime\n                      to ensure that it does not run as UID 0 (root) and fail to start\n                      the container if it does. If unset or false, no such validation\n                      will be performed. May also be set in SecurityContext.  If set\n                      in both SecurityContext and PodSecurityContext, the value specified\n                      in SecurityContext takes precedence.\n                    type: boolean\n                  runAsUser:\n                    description: The UID to run the entrypoint of the container process.\n                      Defaults to user specified in image metadata if unspecified.\n                      May also be set in SecurityContext.  If set in both SecurityContext\n                      and PodSecurityContext, the value specified in SecurityContext\n                      takes precedence for that container. Note that this field cannot\n                      be set when spec.os.name is windows.\n                    format: int64\n                    type: integer\n                  seLinuxOptions:\n                    description: The SELinux context to be applied to all containers.\n                      If unspecified, the container runtime will allocate a random\n                      SELinux context for each container.  May also be set in SecurityContext.  If\n                      set in both SecurityContext and PodSecurityContext, the value\n                      specified in SecurityContext takes precedence for that container.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    properties:\n                      level:\n                        description: Level is SELinux level label that applies to\n                          the container.\n                        type: string\n                      role:\n                        description: Role is a SELinux role label that applies to\n                          the container.\n                        type: string\n                      type:\n                        description: Type is a SELinux type label that applies to\n                          the container.\n                        type: string\n                      user:\n                        description: User is a SELinux user label that applies to\n                          the container.\n                        type: string\n                    type: object\n                  seccompProfile:\n                    description: The seccomp options to use by the containers in this\n                      pod. Note that this field cannot be set when spec.os.name is\n                      windows.\n                    properties:\n                      localhostProfile:\n                        description: localhostProfile indicates a profile defined\n                          in a file on the node should be used. The profile must be\n                          preconfigured on the node to work. Must be a descending\n                          path, relative to the kubelet's configured seccomp profile\n                          location. Must only be set if type is \"Localhost\".\n                        type: string\n                      type:\n                        description: \"type indicates which kind of seccomp profile\n                          will be applied. Valid options are: \\n Localhost - a profile\n                          defined in a file on the node should be used. RuntimeDefault\n                          - the container runtime default profile should be used.\n                          Unconfined - no profile should be applied.\"\n                        type: string\n                    required:\n                    - type\n                    type: object\n                  supplementalGroups:\n                    description: A list of groups applied to the first process run\n                      in each container, in addition to the container's primary GID,\n                      the fsGroup (if specified), and group memberships defined in\n                      the container image for the uid of the container process. If\n                      unspecified, no additional groups are added to any container.\n                      Note that group memberships defined in the container image for\n                      the uid of the container process are still effective, even if\n                      they are not included in this list. Note that this field cannot\n                      be set when spec.os.name is windows.\n                    items:\n                      format: int64\n                      type: integer\n                    type: array\n                  sysctls:\n                    description: Sysctls hold a list of namespaced sysctls used for\n                      the pod. Pods with unsupported sysctls (by the container runtime)\n                      might fail to launch. Note that this field cannot be set when\n                      spec.os.name is windows.\n                    items:\n                      description: Sysctl defines a kernel parameter to be set\n                      properties:\n                        name:\n                          description: Name of a property to set\n                          type: string\n                        value:\n                          description: Value of a property to set\n                          type: string\n                      required:\n                      - name\n                      - value\n                      type: object\n                    type: array\n                  windowsOptions:\n                    description: The Windows specific settings applied to all containers.\n                      If unspecified, the options within a container's SecurityContext\n                      will be used. If set in both SecurityContext and PodSecurityContext,\n                      the value specified in SecurityContext takes precedence. Note\n                      that this field cannot be set when spec.os.name is linux.\n                    properties:\n                      gmsaCredentialSpec:\n                        description: GMSACredentialSpec is where the GMSA admission\n                          webhook (https://github.com/kubernetes-sigs/windows-gmsa)\n                          inlines the contents of the GMSA credential spec named by\n                          the GMSACredentialSpecName field.\n                        type: string\n                      gmsaCredentialSpecName:\n                        description: GMSACredentialSpecName is the name of the GMSA\n                          credential spec to use.\n                        type: string\n                      hostProcess:\n                        description: HostProcess determines if a container should\n                          be run as a 'Host Process' container. This field is alpha-level\n                          and will only be honored by components that enable the WindowsHostProcessContainers\n                          feature flag. Setting this field without the feature flag\n                          will result in errors when validating the Pod. All of a\n                          Pod's containers must have the same effective HostProcess\n                          value (it is not allowed to have a mix of HostProcess containers\n                          and non-HostProcess containers).  In addition, if HostProcess\n                          is true then HostNetwork must also be set to true.\n                        type: boolean\n                      runAsUserName:\n                        description: The UserName in Windows to run the entrypoint\n                          of the container process. Defaults to the user specified\n                          in image metadata if unspecified. May also be set in PodSecurityContext.\n                          If set in both SecurityContext and PodSecurityContext, the\n                          value specified in SecurityContext takes precedence.\n                        type: string\n                    type: object\n                type: object\n              serviceAccountName:\n                description: ServiceAccountName is the name of the ServiceAccount\n                  to use to run the Prometheus Pods.\n                type: string\n              sha:\n                description: 'SHA of Alertmanager container image to be deployed.\n                  Defaults to the value of `version`. Similar to a tag, but the SHA\n                  explicitly deploys an immutable container image. Version and Tag\n                  are ignored if SHA is set. Deprecated: use ''image'' instead.  The\n                  image digest can be specified as part of the image URL.'\n                type: string\n              storage:\n                description: Storage is the definition of how storage will be used\n                  by the Alertmanager instances.\n                properties:\n                  disableMountSubPath:\n                    description: '*Deprecated: subPath usage will be removed in a\n                      future release.*'\n                    type: boolean\n                  emptyDir:\n                    description: 'EmptyDirVolumeSource to be used by the StatefulSet.\n                      If specified, it takes precedence over `ephemeral` and `volumeClaimTemplate`.\n                      More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir'\n                    properties:\n                      medium:\n                        description: 'medium represents what type of storage medium\n                          should back this directory. The default is \"\" which means\n                          to use the node''s default medium. Must be an empty string\n                          (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                        type: string\n                      sizeLimit:\n                        anyOf:\n                        - type: integer\n                        - type: string\n                        description: 'sizeLimit is the total amount of local storage\n                          required for this EmptyDir volume. The size limit is also\n                          applicable for memory medium. The maximum usage on memory\n                          medium EmptyDir would be the minimum value between the SizeLimit\n                          specified here and the sum of memory limits of all containers\n                          in a pod. The default is nil which means that the limit\n                          is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                        x-kubernetes-int-or-string: true\n                    type: object\n                  ephemeral:\n                    description: 'EphemeralVolumeSource to be used by the StatefulSet.\n                      This is a beta field in k8s 1.21 and GA in 1.15. For lower versions,\n                      starting with k8s 1.19, it requires enabling the GenericEphemeralVolume\n                      feature gate. More info: https://kubernetes.io/docs/concepts/storage/ephemeral-volumes/#generic-ephemeral-volumes'\n                    properties:\n                      volumeClaimTemplate:\n                        description: \"Will be used to create a stand-alone PVC to\n                          provision the volume. The pod in which this EphemeralVolumeSource\n                          is embedded will be the owner of the PVC, i.e. the PVC will\n                          be deleted together with the pod.  The name of the PVC will\n                          be `<pod name>-<volume name>` where `<volume name>` is the\n                          name from the `PodSpec.Volumes` array entry. Pod validation\n                          will reject the pod if the concatenated name is not valid\n                          for a PVC (for example, too long). \\n An existing PVC with\n                          that name that is not owned by the pod will *not* be used\n                          for the pod to avoid using an unrelated volume by mistake.\n                          Starting the pod is then blocked until the unrelated PVC\n                          is removed. If such a pre-created PVC is meant to be used\n                          by the pod, the PVC has to updated with an owner reference\n                          to the pod once the pod exists. Normally this should not\n                          be necessary, but it may be useful when manually reconstructing\n                          a broken cluster. \\n This field is read-only and no changes\n                          will be made by Kubernetes to the PVC after it has been\n                          created. \\n Required, must not be nil.\"\n                        properties:\n                          metadata:\n                            description: May contain labels and annotations that will\n                              be copied into the PVC when creating it. No other fields\n                              are allowed and will be rejected during validation.\n                            type: object\n                          spec:\n                            description: The specification for the PersistentVolumeClaim.\n                              The entire content is copied unchanged into the PVC\n                              that gets created from this template. The same fields\n                              as in a PersistentVolumeClaim are also valid here.\n                            properties:\n                              accessModes:\n                                description: 'accessModes contains the desired access\n                                  modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                                items:\n                                  type: string\n                                type: array\n                              dataSource:\n                                description: 'dataSource field can be used to specify\n                                  either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\n                                  * An existing PVC (PersistentVolumeClaim) If the\n                                  provisioner or an external controller can support\n                                  the specified data source, it will create a new\n                                  volume based on the contents of the specified data\n                                  source. When the AnyVolumeDataSource feature gate\n                                  is enabled, dataSource contents will be copied to\n                                  dataSourceRef, and dataSourceRef contents will be\n                                  copied to dataSource when dataSourceRef.namespace\n                                  is not specified. If the namespace is specified,\n                                  then dataSourceRef will not be copied to dataSource.'\n                                properties:\n                                  apiGroup:\n                                    description: APIGroup is the group for the resource\n                                      being referenced. If APIGroup is not specified,\n                                      the specified Kind must be in the core API group.\n                                      For any other third-party types, APIGroup is\n                                      required.\n                                    type: string\n                                  kind:\n                                    description: Kind is the type of resource being\n                                      referenced\n                                    type: string\n                                  name:\n                                    description: Name is the name of resource being\n                                      referenced\n                                    type: string\n                                required:\n                                - kind\n                                - name\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              dataSourceRef:\n                                description: 'dataSourceRef specifies the object from\n                                  which to populate the volume with data, if a non-empty\n                                  volume is desired. This may be any object from a\n                                  non-empty API group (non core object) or a PersistentVolumeClaim\n                                  object. When this field is specified, volume binding\n                                  will only succeed if the type of the specified object\n                                  matches some installed volume populator or dynamic\n                                  provisioner. This field will replace the functionality\n                                  of the dataSource field and as such if both fields\n                                  are non-empty, they must have the same value. For\n                                  backwards compatibility, when namespace isn''t specified\n                                  in dataSourceRef, both fields (dataSource and dataSourceRef)\n                                  will be set to the same value automatically if one\n                                  of them is empty and the other is non-empty. When\n                                  namespace is specified in dataSourceRef, dataSource\n                                  isn''t set to the same value and must be empty.\n                                  There are three important differences between dataSource\n                                  and dataSourceRef: * While dataSource only allows\n                                  two specific types of objects, dataSourceRef allows\n                                  any non-core object, as well as PersistentVolumeClaim\n                                  objects. * While dataSource ignores disallowed values\n                                  (dropping them), dataSourceRef preserves all values,\n                                  and generates an error if a disallowed value is\n                                  specified. * While dataSource only allows local\n                                  objects, dataSourceRef allows objects in any namespaces.\n                                  (Beta) Using this field requires the AnyVolumeDataSource\n                                  feature gate to be enabled. (Alpha) Using the namespace\n                                  field of dataSourceRef requires the CrossNamespaceVolumeDataSource\n                                  feature gate to be enabled.'\n                                properties:\n                                  apiGroup:\n                                    description: APIGroup is the group for the resource\n                                      being referenced. If APIGroup is not specified,\n                                      the specified Kind must be in the core API group.\n                                      For any other third-party types, APIGroup is\n                                      required.\n                                    type: string\n                                  kind:\n                                    description: Kind is the type of resource being\n                                      referenced\n                                    type: string\n                                  name:\n                                    description: Name is the name of resource being\n                                      referenced\n                                    type: string\n                                  namespace:\n                                    description: Namespace is the namespace of resource\n                                      being referenced Note that when a namespace\n                                      is specified, a gateway.networking.k8s.io/ReferenceGrant\n                                      object is required in the referent namespace\n                                      to allow that namespace's owner to accept the\n                                      reference. See the ReferenceGrant documentation\n                                      for details. (Alpha) This field requires the\n                                      CrossNamespaceVolumeDataSource feature gate\n                                      to be enabled.\n                                    type: string\n                                required:\n                                - kind\n                                - name\n                                type: object\n                              resources:\n                                description: 'resources represents the minimum resources\n                                  the volume should have. If RecoverVolumeExpansionFailure\n                                  feature is enabled users are allowed to specify\n                                  resource requirements that are lower than previous\n                                  value but must still be higher than capacity recorded\n                                  in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'\n                                properties:\n                                  claims:\n                                    description: \"Claims lists the names of resources,\n                                      defined in spec.resourceClaims, that are used\n                                      by this container. \\n This is an alpha field\n                                      and requires enabling the DynamicResourceAllocation\n                                      feature gate. \\n This field is immutable. It\n                                      can only be set for containers.\"\n                                    items:\n                                      description: ResourceClaim references one entry\n                                        in PodSpec.ResourceClaims.\n                                      properties:\n                                        name:\n                                          description: Name must match the name of\n                                            one entry in pod.spec.resourceClaims of\n                                            the Pod where this field is used. It makes\n                                            that resource available inside a container.\n                                          type: string\n                                      required:\n                                      - name\n                                      type: object\n                                    type: array\n                                    x-kubernetes-list-map-keys:\n                                    - name\n                                    x-kubernetes-list-type: map\n                                  limits:\n                                    additionalProperties:\n                                      anyOf:\n                                      - type: integer\n                                      - type: string\n                                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                      x-kubernetes-int-or-string: true\n                                    description: 'Limits describes the maximum amount\n                                      of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                    type: object\n                                  requests:\n                                    additionalProperties:\n                                      anyOf:\n                                      - type: integer\n                                      - type: string\n                                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                      x-kubernetes-int-or-string: true\n                                    description: 'Requests describes the minimum amount\n                                      of compute resources required. If Requests is\n                                      omitted for a container, it defaults to Limits\n                                      if that is explicitly specified, otherwise to\n                                      an implementation-defined value. Requests cannot\n                                      exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                    type: object\n                                type: object\n                              selector:\n                                description: selector is a label query over volumes\n                                  to consider for binding.\n                                properties:\n                                  matchExpressions:\n                                    description: matchExpressions is a list of label\n                                      selector requirements. The requirements are\n                                      ANDed.\n                                    items:\n                                      description: A label selector requirement is\n                                        a selector that contains values, a key, and\n                                        an operator that relates the key and values.\n                                      properties:\n                                        key:\n                                          description: key is the label key that the\n                                            selector applies to.\n                                          type: string\n                                        operator:\n                                          description: operator represents a key's\n                                            relationship to a set of values. Valid\n                                            operators are In, NotIn, Exists and DoesNotExist.\n                                          type: string\n                                        values:\n                                          description: values is an array of string\n                                            values. If the operator is In or NotIn,\n                                            the values array must be non-empty. If\n                                            the operator is Exists or DoesNotExist,\n                                            the values array must be empty. This array\n                                            is replaced during a strategic merge patch.\n                                          items:\n                                            type: string\n                                          type: array\n                                      required:\n                                      - key\n                                      - operator\n                                      type: object\n                                    type: array\n                                  matchLabels:\n                                    additionalProperties:\n                                      type: string\n                                    description: matchLabels is a map of {key,value}\n                                      pairs. A single {key,value} in the matchLabels\n                                      map is equivalent to an element of matchExpressions,\n                                      whose key field is \"key\", the operator is \"In\",\n                                      and the values array contains only \"value\".\n                                      The requirements are ANDed.\n                                    type: object\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              storageClassName:\n                                description: 'storageClassName is the name of the\n                                  StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'\n                                type: string\n                              volumeMode:\n                                description: volumeMode defines what type of volume\n                                  is required by the claim. Value of Filesystem is\n                                  implied when not included in claim spec.\n                                type: string\n                              volumeName:\n                                description: volumeName is the binding reference to\n                                  the PersistentVolume backing this claim.\n                                type: string\n                            type: object\n                        required:\n                        - spec\n                        type: object\n                    type: object\n                  volumeClaimTemplate:\n                    description: Defines the PVC spec to be used by the Prometheus\n                      StatefulSets. The easiest way to use a volume that cannot be\n                      automatically provisioned is to use a label selector alongside\n                      manually created PersistentVolumes.\n                    properties:\n                      apiVersion:\n                        description: 'APIVersion defines the versioned schema of this\n                          representation of an object. Servers should convert recognized\n                          schemas to the latest internal value, and may reject unrecognized\n                          values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n                        type: string\n                      kind:\n                        description: 'Kind is a string value representing the REST\n                          resource this object represents. Servers may infer this\n                          from the endpoint the client submits requests to. Cannot\n                          be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n                        type: string\n                      metadata:\n                        description: EmbeddedMetadata contains metadata relevant to\n                          an EmbeddedResource.\n                        properties:\n                          annotations:\n                            additionalProperties:\n                              type: string\n                            description: 'Annotations is an unstructured key value\n                              map stored with a resource that may be set by external\n                              tools to store and retrieve arbitrary metadata. They\n                              are not queryable and should be preserved when modifying\n                              objects. More info: http://kubernetes.io/docs/user-guide/annotations'\n                            type: object\n                          labels:\n                            additionalProperties:\n                              type: string\n                            description: 'Map of string keys and values that can be\n                              used to organize and categorize (scope and select) objects.\n                              May match selectors of replication controllers and services.\n                              More info: http://kubernetes.io/docs/user-guide/labels'\n                            type: object\n                          name:\n                            description: 'Name must be unique within a namespace.\n                              Is required when creating resources, although some resources\n                              may allow a client to request the generation of an appropriate\n                              name automatically. Name is primarily intended for creation\n                              idempotence and configuration definition. Cannot be\n                              updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names'\n                            type: string\n                        type: object\n                      spec:\n                        description: 'Defines the desired characteristics of a volume\n                          requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'\n                        properties:\n                          accessModes:\n                            description: 'accessModes contains the desired access\n                              modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                            items:\n                              type: string\n                            type: array\n                          dataSource:\n                            description: 'dataSource field can be used to specify\n                              either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\n                              * An existing PVC (PersistentVolumeClaim) If the provisioner\n                              or an external controller can support the specified\n                              data source, it will create a new volume based on the\n                              contents of the specified data source. When the AnyVolumeDataSource\n                              feature gate is enabled, dataSource contents will be\n                              copied to dataSourceRef, and dataSourceRef contents\n                              will be copied to dataSource when dataSourceRef.namespace\n                              is not specified. If the namespace is specified, then\n                              dataSourceRef will not be copied to dataSource.'\n                            properties:\n                              apiGroup:\n                                description: APIGroup is the group for the resource\n                                  being referenced. If APIGroup is not specified,\n                                  the specified Kind must be in the core API group.\n                                  For any other third-party types, APIGroup is required.\n                                type: string\n                              kind:\n                                description: Kind is the type of resource being referenced\n                                type: string\n                              name:\n                                description: Name is the name of resource being referenced\n                                type: string\n                            required:\n                            - kind\n                            - name\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          dataSourceRef:\n                            description: 'dataSourceRef specifies the object from\n                              which to populate the volume with data, if a non-empty\n                              volume is desired. This may be any object from a non-empty\n                              API group (non core object) or a PersistentVolumeClaim\n                              object. When this field is specified, volume binding\n                              will only succeed if the type of the specified object\n                              matches some installed volume populator or dynamic provisioner.\n                              This field will replace the functionality of the dataSource\n                              field and as such if both fields are non-empty, they\n                              must have the same value. For backwards compatibility,\n                              when namespace isn''t specified in dataSourceRef, both\n                              fields (dataSource and dataSourceRef) will be set to\n                              the same value automatically if one of them is empty\n                              and the other is non-empty. When namespace is specified\n                              in dataSourceRef, dataSource isn''t set to the same\n                              value and must be empty. There are three important differences\n                              between dataSource and dataSourceRef: * While dataSource\n                              only allows two specific types of objects, dataSourceRef\n                              allows any non-core object, as well as PersistentVolumeClaim\n                              objects. * While dataSource ignores disallowed values\n                              (dropping them), dataSourceRef preserves all values,\n                              and generates an error if a disallowed value is specified.\n                              * While dataSource only allows local objects, dataSourceRef\n                              allows objects in any namespaces. (Beta) Using this\n                              field requires the AnyVolumeDataSource feature gate\n                              to be enabled. (Alpha) Using the namespace field of\n                              dataSourceRef requires the CrossNamespaceVolumeDataSource\n                              feature gate to be enabled.'\n                            properties:\n                              apiGroup:\n                                description: APIGroup is the group for the resource\n                                  being referenced. If APIGroup is not specified,\n                                  the specified Kind must be in the core API group.\n                                  For any other third-party types, APIGroup is required.\n                                type: string\n                              kind:\n                                description: Kind is the type of resource being referenced\n                                type: string\n                              name:\n                                description: Name is the name of resource being referenced\n                                type: string\n                              namespace:\n                                description: Namespace is the namespace of resource\n                                  being referenced Note that when a namespace is specified,\n                                  a gateway.networking.k8s.io/ReferenceGrant object\n                                  is required in the referent namespace to allow that\n                                  namespace's owner to accept the reference. See the\n                                  ReferenceGrant documentation for details. (Alpha)\n                                  This field requires the CrossNamespaceVolumeDataSource\n                                  feature gate to be enabled.\n                                type: string\n                            required:\n                            - kind\n                            - name\n                            type: object\n                          resources:\n                            description: 'resources represents the minimum resources\n                              the volume should have. If RecoverVolumeExpansionFailure\n                              feature is enabled users are allowed to specify resource\n                              requirements that are lower than previous value but\n                              must still be higher than capacity recorded in the status\n                              field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'\n                            properties:\n                              claims:\n                                description: \"Claims lists the names of resources,\n                                  defined in spec.resourceClaims, that are used by\n                                  this container. \\n This is an alpha field and requires\n                                  enabling the DynamicResourceAllocation feature gate.\n                                  \\n This field is immutable. It can only be set for\n                                  containers.\"\n                                items:\n                                  description: ResourceClaim references one entry\n                                    in PodSpec.ResourceClaims.\n                                  properties:\n                                    name:\n                                      description: Name must match the name of one\n                                        entry in pod.spec.resourceClaims of the Pod\n                                        where this field is used. It makes that resource\n                                        available inside a container.\n                                      type: string\n                                  required:\n                                  - name\n                                  type: object\n                                type: array\n                                x-kubernetes-list-map-keys:\n                                - name\n                                x-kubernetes-list-type: map\n                              limits:\n                                additionalProperties:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                  x-kubernetes-int-or-string: true\n                                description: 'Limits describes the maximum amount\n                                  of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                type: object\n                              requests:\n                                additionalProperties:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                  x-kubernetes-int-or-string: true\n                                description: 'Requests describes the minimum amount\n                                  of compute resources required. If Requests is omitted\n                                  for a container, it defaults to Limits if that is\n                                  explicitly specified, otherwise to an implementation-defined\n                                  value. Requests cannot exceed Limits. More info:\n                                  https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                type: object\n                            type: object\n                          selector:\n                            description: selector is a label query over volumes to\n                              consider for binding.\n                            properties:\n                              matchExpressions:\n                                description: matchExpressions is a list of label selector\n                                  requirements. The requirements are ANDed.\n                                items:\n                                  description: A label selector requirement is a selector\n                                    that contains values, a key, and an operator that\n                                    relates the key and values.\n                                  properties:\n                                    key:\n                                      description: key is the label key that the selector\n                                        applies to.\n                                      type: string\n                                    operator:\n                                      description: operator represents a key's relationship\n                                        to a set of values. Valid operators are In,\n                                        NotIn, Exists and DoesNotExist.\n                                      type: string\n                                    values:\n                                      description: values is an array of string values.\n                                        If the operator is In or NotIn, the values\n                                        array must be non-empty. If the operator is\n                                        Exists or DoesNotExist, the values array must\n                                        be empty. This array is replaced during a\n                                        strategic merge patch.\n                                      items:\n                                        type: string\n                                      type: array\n                                  required:\n                                  - key\n                                  - operator\n                                  type: object\n                                type: array\n                              matchLabels:\n                                additionalProperties:\n                                  type: string\n                                description: matchLabels is a map of {key,value} pairs.\n                                  A single {key,value} in the matchLabels map is equivalent\n                                  to an element of matchExpressions, whose key field\n                                  is \"key\", the operator is \"In\", and the values array\n                                  contains only \"value\". The requirements are ANDed.\n                                type: object\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          storageClassName:\n                            description: 'storageClassName is the name of the StorageClass\n                              required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'\n                            type: string\n                          volumeMode:\n                            description: volumeMode defines what type of volume is\n                              required by the claim. Value of Filesystem is implied\n                              when not included in claim spec.\n                            type: string\n                          volumeName:\n                            description: volumeName is the binding reference to the\n                              PersistentVolume backing this claim.\n                            type: string\n                        type: object\n                      status:\n                        description: '*Deprecated: this field is never set.*'\n                        properties:\n                          accessModes:\n                            description: 'accessModes contains the actual access modes\n                              the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                            items:\n                              type: string\n                            type: array\n                          allocatedResources:\n                            additionalProperties:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                              x-kubernetes-int-or-string: true\n                            description: allocatedResources is the storage resource\n                              within AllocatedResources tracks the capacity allocated\n                              to a PVC. It may be larger than the actual capacity\n                              when a volume expansion operation is requested. For\n                              storage quota, the larger value from allocatedResources\n                              and PVC.spec.resources is used. If allocatedResources\n                              is not set, PVC.spec.resources alone is used for quota\n                              calculation. If a volume expansion capacity request\n                              is lowered, allocatedResources is only lowered if there\n                              are no expansion operations in progress and if the actual\n                              volume capacity is equal or lower than the requested\n                              capacity. This is an alpha field and requires enabling\n                              RecoverVolumeExpansionFailure feature.\n                            type: object\n                          capacity:\n                            additionalProperties:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                              x-kubernetes-int-or-string: true\n                            description: capacity represents the actual resources\n                              of the underlying volume.\n                            type: object\n                          conditions:\n                            description: conditions is the current Condition of persistent\n                              volume claim. If underlying persistent volume is being\n                              resized then the Condition will be set to 'ResizeStarted'.\n                            items:\n                              description: PersistentVolumeClaimCondition contains\n                                details about state of pvc\n                              properties:\n                                lastProbeTime:\n                                  description: lastProbeTime is the time we probed\n                                    the condition.\n                                  format: date-time\n                                  type: string\n                                lastTransitionTime:\n                                  description: lastTransitionTime is the time the\n                                    condition transitioned from one status to another.\n                                  format: date-time\n                                  type: string\n                                message:\n                                  description: message is the human-readable message\n                                    indicating details about last transition.\n                                  type: string\n                                reason:\n                                  description: reason is a unique, this should be\n                                    a short, machine understandable string that gives\n                                    the reason for condition's last transition. If\n                                    it reports \"ResizeStarted\" that means the underlying\n                                    persistent volume is being resized.\n                                  type: string\n                                status:\n                                  type: string\n                                type:\n                                  description: PersistentVolumeClaimConditionType\n                                    is a valid value of PersistentVolumeClaimCondition.Type\n                                  type: string\n                              required:\n                              - status\n                              - type\n                              type: object\n                            type: array\n                          phase:\n                            description: phase represents the current phase of PersistentVolumeClaim.\n                            type: string\n                          resizeStatus:\n                            description: resizeStatus stores status of resize operation.\n                              ResizeStatus is not set by default but when expansion\n                              is complete resizeStatus is set to empty string by resize\n                              controller or kubelet. This is an alpha field and requires\n                              enabling RecoverVolumeExpansionFailure feature.\n                            type: string\n                        type: object\n                    type: object\n                type: object\n              tag:\n                description: 'Tag of Alertmanager container image to be deployed.\n                  Defaults to the value of `version`. Version is ignored if Tag is\n                  set. Deprecated: use ''image'' instead.  The image tag can be specified\n                  as part of the image URL.'\n                type: string\n              tolerations:\n                description: If specified, the pod's tolerations.\n                items:\n                  description: The pod this Toleration is attached to tolerates any\n                    taint that matches the triple <key,value,effect> using the matching\n                    operator <operator>.\n                  properties:\n                    effect:\n                      description: Effect indicates the taint effect to match. Empty\n                        means match all taint effects. When specified, allowed values\n                        are NoSchedule, PreferNoSchedule and NoExecute.\n                      type: string\n                    key:\n                      description: Key is the taint key that the toleration applies\n                        to. Empty means match all taint keys. If the key is empty,\n                        operator must be Exists; this combination means to match all\n                        values and all keys.\n                      type: string\n                    operator:\n                      description: Operator represents a key's relationship to the\n                        value. Valid operators are Exists and Equal. Defaults to Equal.\n                        Exists is equivalent to wildcard for value, so that a pod\n                        can tolerate all taints of a particular category.\n                      type: string\n                    tolerationSeconds:\n                      description: TolerationSeconds represents the period of time\n                        the toleration (which must be of effect NoExecute, otherwise\n                        this field is ignored) tolerates the taint. By default, it\n                        is not set, which means tolerate the taint forever (do not\n                        evict). Zero and negative values will be treated as 0 (evict\n                        immediately) by the system.\n                      format: int64\n                      type: integer\n                    value:\n                      description: Value is the taint value the toleration matches\n                        to. If the operator is Exists, the value should be empty,\n                        otherwise just a regular string.\n                      type: string\n                  type: object\n                type: array\n              topologySpreadConstraints:\n                description: If specified, the pod's topology spread constraints.\n                items:\n                  description: TopologySpreadConstraint specifies how to spread matching\n                    pods among the given topology.\n                  properties:\n                    labelSelector:\n                      description: LabelSelector is used to find matching pods. Pods\n                        that match this label selector are counted to determine the\n                        number of pods in their corresponding topology domain.\n                      properties:\n                        matchExpressions:\n                          description: matchExpressions is a list of label selector\n                            requirements. The requirements are ANDed.\n                          items:\n                            description: A label selector requirement is a selector\n                              that contains values, a key, and an operator that relates\n                              the key and values.\n                            properties:\n                              key:\n                                description: key is the label key that the selector\n                                  applies to.\n                                type: string\n                              operator:\n                                description: operator represents a key's relationship\n                                  to a set of values. Valid operators are In, NotIn,\n                                  Exists and DoesNotExist.\n                                type: string\n                              values:\n                                description: values is an array of string values.\n                                  If the operator is In or NotIn, the values array\n                                  must be non-empty. If the operator is Exists or\n                                  DoesNotExist, the values array must be empty. This\n                                  array is replaced during a strategic merge patch.\n                                items:\n                                  type: string\n                                type: array\n                            required:\n                            - key\n                            - operator\n                            type: object\n                          type: array\n                        matchLabels:\n                          additionalProperties:\n                            type: string\n                          description: matchLabels is a map of {key,value} pairs.\n                            A single {key,value} in the matchLabels map is equivalent\n                            to an element of matchExpressions, whose key field is\n                            \"key\", the operator is \"In\", and the values array contains\n                            only \"value\". The requirements are ANDed.\n                          type: object\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    matchLabelKeys:\n                      description: \"MatchLabelKeys is a set of pod label keys to select\n                        the pods over which spreading will be calculated. The keys\n                        are used to lookup values from the incoming pod labels, those\n                        key-value labels are ANDed with labelSelector to select the\n                        group of existing pods over which spreading will be calculated\n                        for the incoming pod. The same key is forbidden to exist in\n                        both MatchLabelKeys and LabelSelector. MatchLabelKeys cannot\n                        be set when LabelSelector isn't set. Keys that don't exist\n                        in the incoming pod labels will be ignored. A null or empty\n                        list means only match against labelSelector. \\n This is a\n                        beta field and requires the MatchLabelKeysInPodTopologySpread\n                        feature gate to be enabled (enabled by default).\"\n                      items:\n                        type: string\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    maxSkew:\n                      description: 'MaxSkew describes the degree to which pods may\n                        be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`,\n                        it is the maximum permitted difference between the number\n                        of matching pods in the target topology and the global minimum.\n                        The global minimum is the minimum number of matching pods\n                        in an eligible domain or zero if the number of eligible domains\n                        is less than MinDomains. For example, in a 3-zone cluster,\n                        MaxSkew is set to 1, and pods with the same labelSelector\n                        spread as 2/2/1: In this case, the global minimum is 1. |\n                        zone1 | zone2 | zone3 | |  P P  |  P P  |   P   | - if MaxSkew\n                        is 1, incoming pod can only be scheduled to zone3 to become\n                        2/2/2; scheduling it onto zone1(zone2) would make the ActualSkew(3-1)\n                        on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming\n                        pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`,\n                        it is used to give higher precedence to topologies that satisfy\n                        it. It''s a required field. Default value is 1 and 0 is not\n                        allowed.'\n                      format: int32\n                      type: integer\n                    minDomains:\n                      description: \"MinDomains indicates a minimum number of eligible\n                        domains. When the number of eligible domains with matching\n                        topology keys is less than minDomains, Pod Topology Spread\n                        treats \\\"global minimum\\\" as 0, and then the calculation of\n                        Skew is performed. And when the number of eligible domains\n                        with matching topology keys equals or greater than minDomains,\n                        this value has no effect on scheduling. As a result, when\n                        the number of eligible domains is less than minDomains, scheduler\n                        won't schedule more than maxSkew Pods to those domains. If\n                        value is nil, the constraint behaves as if MinDomains is equal\n                        to 1. Valid values are integers greater than 0. When value\n                        is not nil, WhenUnsatisfiable must be DoNotSchedule. \\n For\n                        example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains\n                        is set to 5 and pods with the same labelSelector spread as\n                        2/2/2: | zone1 | zone2 | zone3 | |  P P  |  P P  |  P P  |\n                        The number of domains is less than 5(MinDomains), so \\\"global\n                        minimum\\\" is treated as 0. In this situation, new pod with\n                        the same labelSelector cannot be scheduled, because computed\n                        skew will be 3(3 - 0) if new Pod is scheduled to any of the\n                        three zones, it will violate MaxSkew. \\n This is a beta field\n                        and requires the MinDomainsInPodTopologySpread feature gate\n                        to be enabled (enabled by default).\"\n                      format: int32\n                      type: integer\n                    nodeAffinityPolicy:\n                      description: \"NodeAffinityPolicy indicates how we will treat\n                        Pod's nodeAffinity/nodeSelector when calculating pod topology\n                        spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector\n                        are included in the calculations. - Ignore: nodeAffinity/nodeSelector\n                        are ignored. All nodes are included in the calculations. \\n\n                        If this value is nil, the behavior is equivalent to the Honor\n                        policy. This is a beta-level feature default enabled by the\n                        NodeInclusionPolicyInPodTopologySpread feature flag.\"\n                      type: string\n                    nodeTaintsPolicy:\n                      description: \"NodeTaintsPolicy indicates how we will treat node\n                        taints when calculating pod topology spread skew. Options\n                        are: - Honor: nodes without taints, along with tainted nodes\n                        for which the incoming pod has a toleration, are included.\n                        - Ignore: node taints are ignored. All nodes are included.\n                        \\n If this value is nil, the behavior is equivalent to the\n                        Ignore policy. This is a beta-level feature default enabled\n                        by the NodeInclusionPolicyInPodTopologySpread feature flag.\"\n                      type: string\n                    topologyKey:\n                      description: TopologyKey is the key of node labels. Nodes that\n                        have a label with this key and identical values are considered\n                        to be in the same topology. We consider each <key, value>\n                        as a \"bucket\", and try to put balanced number of pods into\n                        each bucket. We define a domain as a particular instance of\n                        a topology. Also, we define an eligible domain as a domain\n                        whose nodes meet the requirements of nodeAffinityPolicy and\n                        nodeTaintsPolicy. e.g. If TopologyKey is \"kubernetes.io/hostname\",\n                        each Node is a domain of that topology. And, if TopologyKey\n                        is \"topology.kubernetes.io/zone\", each zone is a domain of\n                        that topology. It's a required field.\n                      type: string\n                    whenUnsatisfiable:\n                      description: 'WhenUnsatisfiable indicates how to deal with a\n                        pod if it doesn''t satisfy the spread constraint. - DoNotSchedule\n                        (default) tells the scheduler not to schedule it. - ScheduleAnyway\n                        tells the scheduler to schedule the pod in any location, but\n                        giving higher precedence to topologies that would help reduce\n                        the skew. A constraint is considered \"Unsatisfiable\" for an\n                        incoming pod if and only if every possible node assignment\n                        for that pod would violate \"MaxSkew\" on some topology. For\n                        example, in a 3-zone cluster, MaxSkew is set to 1, and pods\n                        with the same labelSelector spread as 3/1/1: | zone1 | zone2\n                        | zone3 | | P P P |   P   |   P   | If WhenUnsatisfiable is\n                        set to DoNotSchedule, incoming pod can only be scheduled to\n                        zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on\n                        zone2(zone3) satisfies MaxSkew(1). In other words, the cluster\n                        can still be imbalanced, but scheduler won''t make it *more*\n                        imbalanced. It''s a required field.'\n                      type: string\n                  required:\n                  - maxSkew\n                  - topologyKey\n                  - whenUnsatisfiable\n                  type: object\n                type: array\n              version:\n                description: Version the cluster should be on.\n                type: string\n              volumeMounts:\n                description: VolumeMounts allows configuration of additional VolumeMounts\n                  on the output StatefulSet definition. VolumeMounts specified will\n                  be appended to other VolumeMounts in the alertmanager container,\n                  that are generated as a result of StorageSpec objects.\n                items:\n                  description: VolumeMount describes a mounting of a Volume within\n                    a container.\n                  properties:\n                    mountPath:\n                      description: Path within the container at which the volume should\n                        be mounted.  Must not contain ':'.\n                      type: string\n                    mountPropagation:\n                      description: mountPropagation determines how mounts are propagated\n                        from the host to container and the other way around. When\n                        not set, MountPropagationNone is used. This field is beta\n                        in 1.10.\n                      type: string\n                    name:\n                      description: This must match the Name of a Volume.\n                      type: string\n                    readOnly:\n                      description: Mounted read-only if true, read-write otherwise\n                        (false or unspecified). Defaults to false.\n                      type: boolean\n                    subPath:\n                      description: Path within the volume from which the container's\n                        volume should be mounted. Defaults to \"\" (volume's root).\n                      type: string\n                    subPathExpr:\n                      description: Expanded path within the volume from which the\n                        container's volume should be mounted. Behaves similarly to\n                        SubPath but environment variable references $(VAR_NAME) are\n                        expanded using the container's environment. Defaults to \"\"\n                        (volume's root). SubPathExpr and SubPath are mutually exclusive.\n                      type: string\n                  required:\n                  - mountPath\n                  - name\n                  type: object\n                type: array\n              volumes:\n                description: Volumes allows configuration of additional volumes on\n                  the output StatefulSet definition. Volumes specified will be appended\n                  to other volumes that are generated as a result of StorageSpec objects.\n                items:\n                  description: Volume represents a named volume in a pod that may\n                    be accessed by any container in the pod.\n                  properties:\n                    awsElasticBlockStore:\n                      description: 'awsElasticBlockStore represents an AWS Disk resource\n                        that is attached to a kubelet''s host machine and then exposed\n                        to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type of the volume\n                            that you want to mount. Tip: Ensure that the filesystem\n                            type is supported by the host operating system. Examples:\n                            \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\n                            TODO: how do we prevent errors in the filesystem from\n                            compromising the machine'\n                          type: string\n                        partition:\n                          description: 'partition is the partition in the volume that\n                            you want to mount. If omitted, the default is to mount\n                            by volume name. Examples: For volume /dev/sda1, you specify\n                            the partition as \"1\". Similarly, the volume partition\n                            for /dev/sda is \"0\" (or you can leave the property empty).'\n                          format: int32\n                          type: integer\n                        readOnly:\n                          description: 'readOnly value true will force the readOnly\n                            setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'\n                          type: boolean\n                        volumeID:\n                          description: 'volumeID is unique ID of the persistent disk\n                            resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    azureDisk:\n                      description: azureDisk represents an Azure Data Disk mount on\n                        the host and bind mount to the pod.\n                      properties:\n                        cachingMode:\n                          description: 'cachingMode is the Host Caching mode: None,\n                            Read Only, Read Write.'\n                          type: string\n                        diskName:\n                          description: diskName is the Name of the data disk in the\n                            blob storage\n                          type: string\n                        diskURI:\n                          description: diskURI is the URI of data disk in the blob\n                            storage\n                          type: string\n                        fsType:\n                          description: fsType is Filesystem type to mount. Must be\n                            a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified.\n                          type: string\n                        kind:\n                          description: 'kind expected values are Shared: multiple\n                            blob disks per storage account  Dedicated: single blob\n                            disk per storage account  Managed: azure managed data\n                            disk (only in managed availability set). defaults to shared'\n                          type: string\n                        readOnly:\n                          description: readOnly Defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                      required:\n                      - diskName\n                      - diskURI\n                      type: object\n                    azureFile:\n                      description: azureFile represents an Azure File Service mount\n                        on the host and bind mount to the pod.\n                      properties:\n                        readOnly:\n                          description: readOnly defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretName:\n                          description: secretName is the  name of secret that contains\n                            Azure Storage Account Name and Key\n                          type: string\n                        shareName:\n                          description: shareName is the azure share Name\n                          type: string\n                      required:\n                      - secretName\n                      - shareName\n                      type: object\n                    cephfs:\n                      description: cephFS represents a Ceph FS mount on the host that\n                        shares a pod's lifetime\n                      properties:\n                        monitors:\n                          description: 'monitors is Required: Monitors is a collection\n                            of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          items:\n                            type: string\n                          type: array\n                        path:\n                          description: 'path is Optional: Used as the mounted root,\n                            rather than the full Ceph tree, default is /'\n                          type: string\n                        readOnly:\n                          description: 'readOnly is Optional: Defaults to false (read/write).\n                            ReadOnly here will force the ReadOnly setting in VolumeMounts.\n                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          type: boolean\n                        secretFile:\n                          description: 'secretFile is Optional: SecretFile is the\n                            path to key ring for User, default is /etc/ceph/user.secret\n                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          type: string\n                        secretRef:\n                          description: 'secretRef is Optional: SecretRef is reference\n                            to the authentication secret for User, default is empty.\n                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        user:\n                          description: 'user is optional: User is the rados user name,\n                            default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          type: string\n                      required:\n                      - monitors\n                      type: object\n                    cinder:\n                      description: 'cinder represents a cinder volume attached and\n                        mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to\n                            be \"ext4\" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                          type: string\n                        readOnly:\n                          description: 'readOnly defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                            More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                          type: boolean\n                        secretRef:\n                          description: 'secretRef is optional: points to a secret\n                            object containing parameters used to connect to OpenStack.'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        volumeID:\n                          description: 'volumeID used to identify the volume in cinder.\n                            More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    configMap:\n                      description: configMap represents a configMap that should populate\n                        this volume\n                      properties:\n                        defaultMode:\n                          description: 'defaultMode is optional: mode bits used to\n                            set permissions on created files by default. Must be an\n                            octal value between 0000 and 0777 or a decimal value between\n                            0 and 511. YAML accepts both octal and decimal values,\n                            JSON requires decimal values for mode bits. Defaults to\n                            0644. Directories within the path are not affected by\n                            this setting. This might be in conflict with other options\n                            that affect the file mode, like fsGroup, and the result\n                            can be other mode bits set.'\n                          format: int32\n                          type: integer\n                        items:\n                          description: items if unspecified, each key-value pair in\n                            the Data field of the referenced ConfigMap will be projected\n                            into the volume as a file whose name is the key and content\n                            is the value. If specified, the listed keys will be projected\n                            into the specified paths, and unlisted keys will not be\n                            present. If a key is specified which is not present in\n                            the ConfigMap, the volume setup will error unless it is\n                            marked optional. Paths must be relative and may not contain\n                            the '..' path or start with '..'.\n                          items:\n                            description: Maps a string key to a path within a volume.\n                            properties:\n                              key:\n                                description: key is the key to project.\n                                type: string\n                              mode:\n                                description: 'mode is Optional: mode bits used to\n                                  set permissions on this file. Must be an octal value\n                                  between 0000 and 0777 or a decimal value between\n                                  0 and 511. YAML accepts both octal and decimal values,\n                                  JSON requires decimal values for mode bits. If not\n                                  specified, the volume defaultMode will be used.\n                                  This might be in conflict with other options that\n                                  affect the file mode, like fsGroup, and the result\n                                  can be other mode bits set.'\n                                format: int32\n                                type: integer\n                              path:\n                                description: path is the relative path of the file\n                                  to map the key to. May not be an absolute path.\n                                  May not contain the path element '..'. May not start\n                                  with the string '..'.\n                                type: string\n                            required:\n                            - key\n                            - path\n                            type: object\n                          type: array\n                        name:\n                          description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            TODO: Add other useful fields. apiVersion, kind, uid?'\n                          type: string\n                        optional:\n                          description: optional specify whether the ConfigMap or its\n                            keys must be defined\n                          type: boolean\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    csi:\n                      description: csi (Container Storage Interface) represents ephemeral\n                        storage that is handled by certain external CSI drivers (Beta\n                        feature).\n                      properties:\n                        driver:\n                          description: driver is the name of the CSI driver that handles\n                            this volume. Consult with your admin for the correct name\n                            as registered in the cluster.\n                          type: string\n                        fsType:\n                          description: fsType to mount. Ex. \"ext4\", \"xfs\", \"ntfs\".\n                            If not provided, the empty value is passed to the associated\n                            CSI driver which will determine the default filesystem\n                            to apply.\n                          type: string\n                        nodePublishSecretRef:\n                          description: nodePublishSecretRef is a reference to the\n                            secret object containing sensitive information to pass\n                            to the CSI driver to complete the CSI NodePublishVolume\n                            and NodeUnpublishVolume calls. This field is optional,\n                            and  may be empty if no secret is required. If the secret\n                            object contains more than one secret, all secret references\n                            are passed.\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        readOnly:\n                          description: readOnly specifies a read-only configuration\n                            for the volume. Defaults to false (read/write).\n                          type: boolean\n                        volumeAttributes:\n                          additionalProperties:\n                            type: string\n                          description: volumeAttributes stores driver-specific properties\n                            that are passed to the CSI driver. Consult your driver's\n                            documentation for supported values.\n                          type: object\n                      required:\n                      - driver\n                      type: object\n                    downwardAPI:\n                      description: downwardAPI represents downward API about the pod\n                        that should populate this volume\n                      properties:\n                        defaultMode:\n                          description: 'Optional: mode bits to use on created files\n                            by default. Must be a Optional: mode bits used to set\n                            permissions on created files by default. Must be an octal\n                            value between 0000 and 0777 or a decimal value between\n                            0 and 511. YAML accepts both octal and decimal values,\n                            JSON requires decimal values for mode bits. Defaults to\n                            0644. Directories within the path are not affected by\n                            this setting. This might be in conflict with other options\n                            that affect the file mode, like fsGroup, and the result\n                            can be other mode bits set.'\n                          format: int32\n                          type: integer\n                        items:\n                          description: Items is a list of downward API volume file\n                          items:\n                            description: DownwardAPIVolumeFile represents information\n                              to create the file containing the pod field\n                            properties:\n                              fieldRef:\n                                description: 'Required: Selects a field of the pod:\n                                  only annotations, labels, name and namespace are\n                                  supported.'\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath\n                                      is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the\n                                      specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              mode:\n                                description: 'Optional: mode bits used to set permissions\n                                  on this file, must be an octal value between 0000\n                                  and 0777 or a decimal value between 0 and 511. YAML\n                                  accepts both octal and decimal values, JSON requires\n                                  decimal values for mode bits. If not specified,\n                                  the volume defaultMode will be used. This might\n                                  be in conflict with other options that affect the\n                                  file mode, like fsGroup, and the result can be other\n                                  mode bits set.'\n                                format: int32\n                                type: integer\n                              path:\n                                description: 'Required: Path is  the relative path\n                                  name of the file to be created. Must not be absolute\n                                  or contain the ''..'' path. Must be utf-8 encoded.\n                                  The first item of the relative path must not start\n                                  with ''..'''\n                                type: string\n                              resourceFieldRef:\n                                description: 'Selects a resource of the container:\n                                  only resources limits and requests (limits.cpu,\n                                  limits.memory, requests.cpu and requests.memory)\n                                  are currently supported.'\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes,\n                                      optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the\n                                      exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            required:\n                            - path\n                            type: object\n                          type: array\n                      type: object\n                    emptyDir:\n                      description: 'emptyDir represents a temporary directory that\n                        shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                      properties:\n                        medium:\n                          description: 'medium represents what type of storage medium\n                            should back this directory. The default is \"\" which means\n                            to use the node''s default medium. Must be an empty string\n                            (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                          type: string\n                        sizeLimit:\n                          anyOf:\n                          - type: integer\n                          - type: string\n                          description: 'sizeLimit is the total amount of local storage\n                            required for this EmptyDir volume. The size limit is also\n                            applicable for memory medium. The maximum usage on memory\n                            medium EmptyDir would be the minimum value between the\n                            SizeLimit specified here and the sum of memory limits\n                            of all containers in a pod. The default is nil which means\n                            that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                          pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                          x-kubernetes-int-or-string: true\n                      type: object\n                    ephemeral:\n                      description: \"ephemeral represents a volume that is handled\n                        by a cluster storage driver. The volume's lifecycle is tied\n                        to the pod that defines it - it will be created before the\n                        pod starts, and deleted when the pod is removed. \\n Use this\n                        if: a) the volume is only needed while the pod runs, b) features\n                        of normal volumes like restoring from snapshot or capacity\n                        tracking are needed, c) the storage driver is specified through\n                        a storage class, and d) the storage driver supports dynamic\n                        volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource\n                        for more information on the connection between this volume\n                        type and PersistentVolumeClaim). \\n Use PersistentVolumeClaim\n                        or one of the vendor-specific APIs for volumes that persist\n                        for longer than the lifecycle of an individual pod. \\n Use\n                        CSI for light-weight local ephemeral volumes if the CSI driver\n                        is meant to be used that way - see the documentation of the\n                        driver for more information. \\n A pod can use both types of\n                        ephemeral volumes and persistent volumes at the same time.\"\n                      properties:\n                        volumeClaimTemplate:\n                          description: \"Will be used to create a stand-alone PVC to\n                            provision the volume. The pod in which this EphemeralVolumeSource\n                            is embedded will be the owner of the PVC, i.e. the PVC\n                            will be deleted together with the pod.  The name of the\n                            PVC will be `<pod name>-<volume name>` where `<volume\n                            name>` is the name from the `PodSpec.Volumes` array entry.\n                            Pod validation will reject the pod if the concatenated\n                            name is not valid for a PVC (for example, too long). \\n\n                            An existing PVC with that name that is not owned by the\n                            pod will *not* be used for the pod to avoid using an unrelated\n                            volume by mistake. Starting the pod is then blocked until\n                            the unrelated PVC is removed. If such a pre-created PVC\n                            is meant to be used by the pod, the PVC has to updated\n                            with an owner reference to the pod once the pod exists.\n                            Normally this should not be necessary, but it may be useful\n                            when manually reconstructing a broken cluster. \\n This\n                            field is read-only and no changes will be made by Kubernetes\n                            to the PVC after it has been created. \\n Required, must\n                            not be nil.\"\n                          properties:\n                            metadata:\n                              description: May contain labels and annotations that\n                                will be copied into the PVC when creating it. No other\n                                fields are allowed and will be rejected during validation.\n                              type: object\n                            spec:\n                              description: The specification for the PersistentVolumeClaim.\n                                The entire content is copied unchanged into the PVC\n                                that gets created from this template. The same fields\n                                as in a PersistentVolumeClaim are also valid here.\n                              properties:\n                                accessModes:\n                                  description: 'accessModes contains the desired access\n                                    modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                                  items:\n                                    type: string\n                                  type: array\n                                dataSource:\n                                  description: 'dataSource field can be used to specify\n                                    either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\n                                    * An existing PVC (PersistentVolumeClaim) If the\n                                    provisioner or an external controller can support\n                                    the specified data source, it will create a new\n                                    volume based on the contents of the specified\n                                    data source. When the AnyVolumeDataSource feature\n                                    gate is enabled, dataSource contents will be copied\n                                    to dataSourceRef, and dataSourceRef contents will\n                                    be copied to dataSource when dataSourceRef.namespace\n                                    is not specified. If the namespace is specified,\n                                    then dataSourceRef will not be copied to dataSource.'\n                                  properties:\n                                    apiGroup:\n                                      description: APIGroup is the group for the resource\n                                        being referenced. If APIGroup is not specified,\n                                        the specified Kind must be in the core API\n                                        group. For any other third-party types, APIGroup\n                                        is required.\n                                      type: string\n                                    kind:\n                                      description: Kind is the type of resource being\n                                        referenced\n                                      type: string\n                                    name:\n                                      description: Name is the name of resource being\n                                        referenced\n                                      type: string\n                                  required:\n                                  - kind\n                                  - name\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                dataSourceRef:\n                                  description: 'dataSourceRef specifies the object\n                                    from which to populate the volume with data, if\n                                    a non-empty volume is desired. This may be any\n                                    object from a non-empty API group (non core object)\n                                    or a PersistentVolumeClaim object. When this field\n                                    is specified, volume binding will only succeed\n                                    if the type of the specified object matches some\n                                    installed volume populator or dynamic provisioner.\n                                    This field will replace the functionality of the\n                                    dataSource field and as such if both fields are\n                                    non-empty, they must have the same value. For\n                                    backwards compatibility, when namespace isn''t\n                                    specified in dataSourceRef, both fields (dataSource\n                                    and dataSourceRef) will be set to the same value\n                                    automatically if one of them is empty and the\n                                    other is non-empty. When namespace is specified\n                                    in dataSourceRef, dataSource isn''t set to the\n                                    same value and must be empty. There are three\n                                    important differences between dataSource and dataSourceRef:\n                                    * While dataSource only allows two specific types\n                                    of objects, dataSourceRef allows any non-core\n                                    object, as well as PersistentVolumeClaim objects.\n                                    * While dataSource ignores disallowed values (dropping\n                                    them), dataSourceRef preserves all values, and\n                                    generates an error if a disallowed value is specified.\n                                    * While dataSource only allows local objects,\n                                    dataSourceRef allows objects in any namespaces.\n                                    (Beta) Using this field requires the AnyVolumeDataSource\n                                    feature gate to be enabled. (Alpha) Using the\n                                    namespace field of dataSourceRef requires the\n                                    CrossNamespaceVolumeDataSource feature gate to\n                                    be enabled.'\n                                  properties:\n                                    apiGroup:\n                                      description: APIGroup is the group for the resource\n                                        being referenced. If APIGroup is not specified,\n                                        the specified Kind must be in the core API\n                                        group. For any other third-party types, APIGroup\n                                        is required.\n                                      type: string\n                                    kind:\n                                      description: Kind is the type of resource being\n                                        referenced\n                                      type: string\n                                    name:\n                                      description: Name is the name of resource being\n                                        referenced\n                                      type: string\n                                    namespace:\n                                      description: Namespace is the namespace of resource\n                                        being referenced Note that when a namespace\n                                        is specified, a gateway.networking.k8s.io/ReferenceGrant\n                                        object is required in the referent namespace\n                                        to allow that namespace's owner to accept\n                                        the reference. See the ReferenceGrant documentation\n                                        for details. (Alpha) This field requires the\n                                        CrossNamespaceVolumeDataSource feature gate\n                                        to be enabled.\n                                      type: string\n                                  required:\n                                  - kind\n                                  - name\n                                  type: object\n                                resources:\n                                  description: 'resources represents the minimum resources\n                                    the volume should have. If RecoverVolumeExpansionFailure\n                                    feature is enabled users are allowed to specify\n                                    resource requirements that are lower than previous\n                                    value but must still be higher than capacity recorded\n                                    in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'\n                                  properties:\n                                    claims:\n                                      description: \"Claims lists the names of resources,\n                                        defined in spec.resourceClaims, that are used\n                                        by this container. \\n This is an alpha field\n                                        and requires enabling the DynamicResourceAllocation\n                                        feature gate. \\n This field is immutable.\n                                        It can only be set for containers.\"\n                                      items:\n                                        description: ResourceClaim references one\n                                          entry in PodSpec.ResourceClaims.\n                                        properties:\n                                          name:\n                                            description: Name must match the name\n                                              of one entry in pod.spec.resourceClaims\n                                              of the Pod where this field is used.\n                                              It makes that resource available inside\n                                              a container.\n                                            type: string\n                                        required:\n                                        - name\n                                        type: object\n                                      type: array\n                                      x-kubernetes-list-map-keys:\n                                      - name\n                                      x-kubernetes-list-type: map\n                                    limits:\n                                      additionalProperties:\n                                        anyOf:\n                                        - type: integer\n                                        - type: string\n                                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                        x-kubernetes-int-or-string: true\n                                      description: 'Limits describes the maximum amount\n                                        of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                      type: object\n                                    requests:\n                                      additionalProperties:\n                                        anyOf:\n                                        - type: integer\n                                        - type: string\n                                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                        x-kubernetes-int-or-string: true\n                                      description: 'Requests describes the minimum\n                                        amount of compute resources required. If Requests\n                                        is omitted for a container, it defaults to\n                                        Limits if that is explicitly specified, otherwise\n                                        to an implementation-defined value. Requests\n                                        cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                      type: object\n                                  type: object\n                                selector:\n                                  description: selector is a label query over volumes\n                                    to consider for binding.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label\n                                        selector requirements. The requirements are\n                                        ANDed.\n                                      items:\n                                        description: A label selector requirement\n                                          is a selector that contains values, a key,\n                                          and an operator that relates the key and\n                                          values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that\n                                              the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's\n                                              relationship to a set of values. Valid\n                                              operators are In, NotIn, Exists and\n                                              DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string\n                                              values. If the operator is In or NotIn,\n                                              the values array must be non-empty.\n                                              If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This\n                                              array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value}\n                                        pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions,\n                                        whose key field is \"key\", the operator is\n                                        \"In\", and the values array contains only \"value\".\n                                        The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                storageClassName:\n                                  description: 'storageClassName is the name of the\n                                    StorageClass required by the claim. More info:\n                                    https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'\n                                  type: string\n                                volumeMode:\n                                  description: volumeMode defines what type of volume\n                                    is required by the claim. Value of Filesystem\n                                    is implied when not included in claim spec.\n                                  type: string\n                                volumeName:\n                                  description: volumeName is the binding reference\n                                    to the PersistentVolume backing this claim.\n                                  type: string\n                              type: object\n                          required:\n                          - spec\n                          type: object\n                      type: object\n                    fc:\n                      description: fc represents a Fibre Channel resource that is\n                        attached to a kubelet's host machine and then exposed to the\n                        pod.\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified. TODO: how do we prevent errors in the\n                            filesystem from compromising the machine'\n                          type: string\n                        lun:\n                          description: 'lun is Optional: FC target lun number'\n                          format: int32\n                          type: integer\n                        readOnly:\n                          description: 'readOnly is Optional: Defaults to false (read/write).\n                            ReadOnly here will force the ReadOnly setting in VolumeMounts.'\n                          type: boolean\n                        targetWWNs:\n                          description: 'targetWWNs is Optional: FC target worldwide\n                            names (WWNs)'\n                          items:\n                            type: string\n                          type: array\n                        wwids:\n                          description: 'wwids Optional: FC volume world wide identifiers\n                            (wwids) Either wwids or combination of targetWWNs and\n                            lun must be set, but not both simultaneously.'\n                          items:\n                            type: string\n                          type: array\n                      type: object\n                    flexVolume:\n                      description: flexVolume represents a generic volume resource\n                        that is provisioned/attached using an exec based plugin.\n                      properties:\n                        driver:\n                          description: driver is the name of the driver to use for\n                            this volume.\n                          type: string\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". The default filesystem depends\n                            on FlexVolume script.\n                          type: string\n                        options:\n                          additionalProperties:\n                            type: string\n                          description: 'options is Optional: this field holds extra\n                            command options if any.'\n                          type: object\n                        readOnly:\n                          description: 'readOnly is Optional: defaults to false (read/write).\n                            ReadOnly here will force the ReadOnly setting in VolumeMounts.'\n                          type: boolean\n                        secretRef:\n                          description: 'secretRef is Optional: secretRef is reference\n                            to the secret object containing sensitive information\n                            to pass to the plugin scripts. This may be empty if no\n                            secret object is specified. If the secret object contains\n                            more than one secret, all secrets are passed to the plugin\n                            scripts.'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      required:\n                      - driver\n                      type: object\n                    flocker:\n                      description: flocker represents a Flocker volume attached to\n                        a kubelet's host machine. This depends on the Flocker control\n                        service being running\n                      properties:\n                        datasetName:\n                          description: datasetName is Name of the dataset stored as\n                            metadata -> name on the dataset for Flocker should be\n                            considered as deprecated\n                          type: string\n                        datasetUUID:\n                          description: datasetUUID is the UUID of the dataset. This\n                            is unique identifier of a Flocker dataset\n                          type: string\n                      type: object\n                    gcePersistentDisk:\n                      description: 'gcePersistentDisk represents a GCE Disk resource\n                        that is attached to a kubelet''s host machine and then exposed\n                        to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                      properties:\n                        fsType:\n                          description: 'fsType is filesystem type of the volume that\n                            you want to mount. Tip: Ensure that the filesystem type\n                            is supported by the host operating system. Examples: \"ext4\",\n                            \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\n                            TODO: how do we prevent errors in the filesystem from\n                            compromising the machine'\n                          type: string\n                        partition:\n                          description: 'partition is the partition in the volume that\n                            you want to mount. If omitted, the default is to mount\n                            by volume name. Examples: For volume /dev/sda1, you specify\n                            the partition as \"1\". Similarly, the volume partition\n                            for /dev/sda is \"0\" (or you can leave the property empty).\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                          format: int32\n                          type: integer\n                        pdName:\n                          description: 'pdName is unique name of the PD resource in\n                            GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the ReadOnly setting\n                            in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                          type: boolean\n                      required:\n                      - pdName\n                      type: object\n                    gitRepo:\n                      description: 'gitRepo represents a git repository at a particular\n                        revision. DEPRECATED: GitRepo is deprecated. To provision\n                        a container with a git repo, mount an EmptyDir into an InitContainer\n                        that clones the repo using git, then mount the EmptyDir into\n                        the Pod''s container.'\n                      properties:\n                        directory:\n                          description: directory is the target directory name. Must\n                            not contain or start with '..'.  If '.' is supplied, the\n                            volume directory will be the git repository.  Otherwise,\n                            if specified, the volume will contain the git repository\n                            in the subdirectory with the given name.\n                          type: string\n                        repository:\n                          description: repository is the URL\n                          type: string\n                        revision:\n                          description: revision is the commit hash for the specified\n                            revision.\n                          type: string\n                      required:\n                      - repository\n                      type: object\n                    glusterfs:\n                      description: 'glusterfs represents a Glusterfs mount on the\n                        host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md'\n                      properties:\n                        endpoints:\n                          description: 'endpoints is the endpoint name that details\n                            Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'\n                          type: string\n                        path:\n                          description: 'path is the Glusterfs volume path. More info:\n                            https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the Glusterfs volume\n                            to be mounted with read-only permissions. Defaults to\n                            false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'\n                          type: boolean\n                      required:\n                      - endpoints\n                      - path\n                      type: object\n                    hostPath:\n                      description: 'hostPath represents a pre-existing file or directory\n                        on the host machine that is directly exposed to the container.\n                        This is generally used for system agents or other privileged\n                        things that are allowed to see the host machine. Most containers\n                        will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\n                        --- TODO(jonesdl) We need to restrict who can use host directory\n                        mounts and who can/can not mount host directories as read/write.'\n                      properties:\n                        path:\n                          description: 'path of the directory on the host. If the\n                            path is a symlink, it will follow the link to the real\n                            path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'\n                          type: string\n                        type:\n                          description: 'type for HostPath Volume Defaults to \"\" More\n                            info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'\n                          type: string\n                      required:\n                      - path\n                      type: object\n                    iscsi:\n                      description: 'iscsi represents an ISCSI Disk resource that is\n                        attached to a kubelet''s host machine and then exposed to\n                        the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md'\n                      properties:\n                        chapAuthDiscovery:\n                          description: chapAuthDiscovery defines whether support iSCSI\n                            Discovery CHAP authentication\n                          type: boolean\n                        chapAuthSession:\n                          description: chapAuthSession defines whether support iSCSI\n                            Session CHAP authentication\n                          type: boolean\n                        fsType:\n                          description: 'fsType is the filesystem type of the volume\n                            that you want to mount. Tip: Ensure that the filesystem\n                            type is supported by the host operating system. Examples:\n                            \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\n                            TODO: how do we prevent errors in the filesystem from\n                            compromising the machine'\n                          type: string\n                        initiatorName:\n                          description: initiatorName is the custom iSCSI Initiator\n                            Name. If initiatorName is specified with iscsiInterface\n                            simultaneously, new iSCSI interface <target portal>:<volume\n                            name> will be created for the connection.\n                          type: string\n                        iqn:\n                          description: iqn is the target iSCSI Qualified Name.\n                          type: string\n                        iscsiInterface:\n                          description: iscsiInterface is the interface Name that uses\n                            an iSCSI transport. Defaults to 'default' (tcp).\n                          type: string\n                        lun:\n                          description: lun represents iSCSI Target Lun number.\n                          format: int32\n                          type: integer\n                        portals:\n                          description: portals is the iSCSI Target Portal List. The\n                            portal is either an IP or ip_addr:port if the port is\n                            other than default (typically TCP ports 860 and 3260).\n                          items:\n                            type: string\n                          type: array\n                        readOnly:\n                          description: readOnly here will force the ReadOnly setting\n                            in VolumeMounts. Defaults to false.\n                          type: boolean\n                        secretRef:\n                          description: secretRef is the CHAP Secret for iSCSI target\n                            and initiator authentication\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        targetPortal:\n                          description: targetPortal is iSCSI Target Portal. The Portal\n                            is either an IP or ip_addr:port if the port is other than\n                            default (typically TCP ports 860 and 3260).\n                          type: string\n                      required:\n                      - iqn\n                      - lun\n                      - targetPortal\n                      type: object\n                    name:\n                      description: 'name of the volume. Must be a DNS_LABEL and unique\n                        within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                      type: string\n                    nfs:\n                      description: 'nfs represents an NFS mount on the host that shares\n                        a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                      properties:\n                        path:\n                          description: 'path that is exported by the NFS server. More\n                            info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the NFS export to\n                            be mounted with read-only permissions. Defaults to false.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                          type: boolean\n                        server:\n                          description: 'server is the hostname or IP address of the\n                            NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                          type: string\n                      required:\n                      - path\n                      - server\n                      type: object\n                    persistentVolumeClaim:\n                      description: 'persistentVolumeClaimVolumeSource represents a\n                        reference to a PersistentVolumeClaim in the same namespace.\n                        More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'\n                      properties:\n                        claimName:\n                          description: 'claimName is the name of a PersistentVolumeClaim\n                            in the same namespace as the pod using this volume. More\n                            info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'\n                          type: string\n                        readOnly:\n                          description: readOnly Will force the ReadOnly setting in\n                            VolumeMounts. Default false.\n                          type: boolean\n                      required:\n                      - claimName\n                      type: object\n                    photonPersistentDisk:\n                      description: photonPersistentDisk represents a PhotonController\n                        persistent disk attached and mounted on kubelets host machine\n                      properties:\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified.\n                          type: string\n                        pdID:\n                          description: pdID is the ID that identifies Photon Controller\n                            persistent disk\n                          type: string\n                      required:\n                      - pdID\n                      type: object\n                    portworxVolume:\n                      description: portworxVolume represents a portworx volume attached\n                        and mounted on kubelets host machine\n                      properties:\n                        fsType:\n                          description: fSType represents the filesystem type to mount\n                            Must be a filesystem type supported by the host operating\n                            system. Ex. \"ext4\", \"xfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified.\n                          type: string\n                        readOnly:\n                          description: readOnly defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        volumeID:\n                          description: volumeID uniquely identifies a Portworx volume\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    projected:\n                      description: projected items for all in one resources secrets,\n                        configmaps, and downward API\n                      properties:\n                        defaultMode:\n                          description: defaultMode are the mode bits used to set permissions\n                            on created files by default. Must be an octal value between\n                            0000 and 0777 or a decimal value between 0 and 511. YAML\n                            accepts both octal and decimal values, JSON requires decimal\n                            values for mode bits. Directories within the path are\n                            not affected by this setting. This might be in conflict\n                            with other options that affect the file mode, like fsGroup,\n                            and the result can be other mode bits set.\n                          format: int32\n                          type: integer\n                        sources:\n                          description: sources is the list of volume projections\n                          items:\n                            description: Projection that may be projected along with\n                              other supported volume types\n                            properties:\n                              configMap:\n                                description: configMap information about the configMap\n                                  data to project\n                                properties:\n                                  items:\n                                    description: items if unspecified, each key-value\n                                      pair in the Data field of the referenced ConfigMap\n                                      will be projected into the volume as a file\n                                      whose name is the key and content is the value.\n                                      If specified, the listed keys will be projected\n                                      into the specified paths, and unlisted keys\n                                      will not be present. If a key is specified which\n                                      is not present in the ConfigMap, the volume\n                                      setup will error unless it is marked optional.\n                                      Paths must be relative and may not contain the\n                                      '..' path or start with '..'.\n                                    items:\n                                      description: Maps a string key to a path within\n                                        a volume.\n                                      properties:\n                                        key:\n                                          description: key is the key to project.\n                                          type: string\n                                        mode:\n                                          description: 'mode is Optional: mode bits\n                                            used to set permissions on this file.\n                                            Must be an octal value between 0000 and\n                                            0777 or a decimal value between 0 and\n                                            511. YAML accepts both octal and decimal\n                                            values, JSON requires decimal values for\n                                            mode bits. If not specified, the volume\n                                            defaultMode will be used. This might be\n                                            in conflict with other options that affect\n                                            the file mode, like fsGroup, and the result\n                                            can be other mode bits set.'\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: path is the relative path of\n                                            the file to map the key to. May not be\n                                            an absolute path. May not contain the\n                                            path element '..'. May not start with\n                                            the string '..'.\n                                          type: string\n                                      required:\n                                      - key\n                                      - path\n                                      type: object\n                                    type: array\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: optional specify whether the ConfigMap\n                                      or its keys must be defined\n                                    type: boolean\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              downwardAPI:\n                                description: downwardAPI information about the downwardAPI\n                                  data to project\n                                properties:\n                                  items:\n                                    description: Items is a list of DownwardAPIVolume\n                                      file\n                                    items:\n                                      description: DownwardAPIVolumeFile represents\n                                        information to create the file containing\n                                        the pod field\n                                      properties:\n                                        fieldRef:\n                                          description: 'Required: Selects a field\n                                            of the pod: only annotations, labels,\n                                            name and namespace are supported.'\n                                          properties:\n                                            apiVersion:\n                                              description: Version of the schema the\n                                                FieldPath is written in terms of,\n                                                defaults to \"v1\".\n                                              type: string\n                                            fieldPath:\n                                              description: Path of the field to select\n                                                in the specified API version.\n                                              type: string\n                                          required:\n                                          - fieldPath\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                        mode:\n                                          description: 'Optional: mode bits used to\n                                            set permissions on this file, must be\n                                            an octal value between 0000 and 0777 or\n                                            a decimal value between 0 and 511. YAML\n                                            accepts both octal and decimal values,\n                                            JSON requires decimal values for mode\n                                            bits. If not specified, the volume defaultMode\n                                            will be used. This might be in conflict\n                                            with other options that affect the file\n                                            mode, like fsGroup, and the result can\n                                            be other mode bits set.'\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: 'Required: Path is  the relative\n                                            path name of the file to be created. Must\n                                            not be absolute or contain the ''..''\n                                            path. Must be utf-8 encoded. The first\n                                            item of the relative path must not start\n                                            with ''..'''\n                                          type: string\n                                        resourceFieldRef:\n                                          description: 'Selects a resource of the\n                                            container: only resources limits and requests\n                                            (limits.cpu, limits.memory, requests.cpu\n                                            and requests.memory) are currently supported.'\n                                          properties:\n                                            containerName:\n                                              description: 'Container name: required\n                                                for volumes, optional for env vars'\n                                              type: string\n                                            divisor:\n                                              anyOf:\n                                              - type: integer\n                                              - type: string\n                                              description: Specifies the output format\n                                                of the exposed resources, defaults\n                                                to \"1\"\n                                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                              x-kubernetes-int-or-string: true\n                                            resource:\n                                              description: 'Required: resource to\n                                                select'\n                                              type: string\n                                          required:\n                                          - resource\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                      required:\n                                      - path\n                                      type: object\n                                    type: array\n                                type: object\n                              secret:\n                                description: secret information about the secret data\n                                  to project\n                                properties:\n                                  items:\n                                    description: items if unspecified, each key-value\n                                      pair in the Data field of the referenced Secret\n                                      will be projected into the volume as a file\n                                      whose name is the key and content is the value.\n                                      If specified, the listed keys will be projected\n                                      into the specified paths, and unlisted keys\n                                      will not be present. If a key is specified which\n                                      is not present in the Secret, the volume setup\n                                      will error unless it is marked optional. Paths\n                                      must be relative and may not contain the '..'\n                                      path or start with '..'.\n                                    items:\n                                      description: Maps a string key to a path within\n                                        a volume.\n                                      properties:\n                                        key:\n                                          description: key is the key to project.\n                                          type: string\n                                        mode:\n                                          description: 'mode is Optional: mode bits\n                                            used to set permissions on this file.\n                                            Must be an octal value between 0000 and\n                                            0777 or a decimal value between 0 and\n                                            511. YAML accepts both octal and decimal\n                                            values, JSON requires decimal values for\n                                            mode bits. If not specified, the volume\n                                            defaultMode will be used. This might be\n                                            in conflict with other options that affect\n                                            the file mode, like fsGroup, and the result\n                                            can be other mode bits set.'\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: path is the relative path of\n                                            the file to map the key to. May not be\n                                            an absolute path. May not contain the\n                                            path element '..'. May not start with\n                                            the string '..'.\n                                          type: string\n                                      required:\n                                      - key\n                                      - path\n                                      type: object\n                                    type: array\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: optional field specify whether the\n                                      Secret or its key must be defined\n                                    type: boolean\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              serviceAccountToken:\n                                description: serviceAccountToken is information about\n                                  the serviceAccountToken data to project\n                                properties:\n                                  audience:\n                                    description: audience is the intended audience\n                                      of the token. A recipient of a token must identify\n                                      itself with an identifier specified in the audience\n                                      of the token, and otherwise should reject the\n                                      token. The audience defaults to the identifier\n                                      of the apiserver.\n                                    type: string\n                                  expirationSeconds:\n                                    description: expirationSeconds is the requested\n                                      duration of validity of the service account\n                                      token. As the token approaches expiration, the\n                                      kubelet volume plugin will proactively rotate\n                                      the service account token. The kubelet will\n                                      start trying to rotate the token if the token\n                                      is older than 80 percent of its time to live\n                                      or if the token is older than 24 hours.Defaults\n                                      to 1 hour and must be at least 10 minutes.\n                                    format: int64\n                                    type: integer\n                                  path:\n                                    description: path is the path relative to the\n                                      mount point of the file to project the token\n                                      into.\n                                    type: string\n                                required:\n                                - path\n                                type: object\n                            type: object\n                          type: array\n                      type: object\n                    quobyte:\n                      description: quobyte represents a Quobyte mount on the host\n                        that shares a pod's lifetime\n                      properties:\n                        group:\n                          description: group to map volume access to Default is no\n                            group\n                          type: string\n                        readOnly:\n                          description: readOnly here will force the Quobyte volume\n                            to be mounted with read-only permissions. Defaults to\n                            false.\n                          type: boolean\n                        registry:\n                          description: registry represents a single or multiple Quobyte\n                            Registry services specified as a string as host:port pair\n                            (multiple entries are separated with commas) which acts\n                            as the central registry for volumes\n                          type: string\n                        tenant:\n                          description: tenant owning the given Quobyte volume in the\n                            Backend Used with dynamically provisioned Quobyte volumes,\n                            value is set by the plugin\n                          type: string\n                        user:\n                          description: user to map volume access to Defaults to serivceaccount\n                            user\n                          type: string\n                        volume:\n                          description: volume is a string that references an already\n                            created Quobyte volume by name.\n                          type: string\n                      required:\n                      - registry\n                      - volume\n                      type: object\n                    rbd:\n                      description: 'rbd represents a Rados Block Device mount on the\n                        host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md'\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type of the volume\n                            that you want to mount. Tip: Ensure that the filesystem\n                            type is supported by the host operating system. Examples:\n                            \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\n                            TODO: how do we prevent errors in the filesystem from\n                            compromising the machine'\n                          type: string\n                        image:\n                          description: 'image is the rados image name. More info:\n                            https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                        keyring:\n                          description: 'keyring is the path to key ring for RBDUser.\n                            Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                        monitors:\n                          description: 'monitors is a collection of Ceph monitors.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          items:\n                            type: string\n                          type: array\n                        pool:\n                          description: 'pool is the rados pool name. Default is rbd.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the ReadOnly setting\n                            in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: boolean\n                        secretRef:\n                          description: 'secretRef is name of the authentication secret\n                            for RBDUser. If provided overrides keyring. Default is\n                            nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        user:\n                          description: 'user is the rados user name. Default is admin.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                      required:\n                      - image\n                      - monitors\n                      type: object\n                    scaleIO:\n                      description: scaleIO represents a ScaleIO persistent volume\n                        attached and mounted on Kubernetes nodes.\n                      properties:\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Default is \"xfs\".\n                          type: string\n                        gateway:\n                          description: gateway is the host address of the ScaleIO\n                            API Gateway.\n                          type: string\n                        protectionDomain:\n                          description: protectionDomain is the name of the ScaleIO\n                            Protection Domain for the configured storage.\n                          type: string\n                        readOnly:\n                          description: readOnly Defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretRef:\n                          description: secretRef references to the secret for ScaleIO\n                            user and other sensitive information. If this is not provided,\n                            Login operation will fail.\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        sslEnabled:\n                          description: sslEnabled Flag enable/disable SSL communication\n                            with Gateway, default false\n                          type: boolean\n                        storageMode:\n                          description: storageMode indicates whether the storage for\n                            a volume should be ThickProvisioned or ThinProvisioned.\n                            Default is ThinProvisioned.\n                          type: string\n                        storagePool:\n                          description: storagePool is the ScaleIO Storage Pool associated\n                            with the protection domain.\n                          type: string\n                        system:\n                          description: system is the name of the storage system as\n                            configured in ScaleIO.\n                          type: string\n                        volumeName:\n                          description: volumeName is the name of a volume already\n                            created in the ScaleIO system that is associated with\n                            this volume source.\n                          type: string\n                      required:\n                      - gateway\n                      - secretRef\n                      - system\n                      type: object\n                    secret:\n                      description: 'secret represents a secret that should populate\n                        this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'\n                      properties:\n                        defaultMode:\n                          description: 'defaultMode is Optional: mode bits used to\n                            set permissions on created files by default. Must be an\n                            octal value between 0000 and 0777 or a decimal value between\n                            0 and 511. YAML accepts both octal and decimal values,\n                            JSON requires decimal values for mode bits. Defaults to\n                            0644. Directories within the path are not affected by\n                            this setting. This might be in conflict with other options\n                            that affect the file mode, like fsGroup, and the result\n                            can be other mode bits set.'\n                          format: int32\n                          type: integer\n                        items:\n                          description: items If unspecified, each key-value pair in\n                            the Data field of the referenced Secret will be projected\n                            into the volume as a file whose name is the key and content\n                            is the value. If specified, the listed keys will be projected\n                            into the specified paths, and unlisted keys will not be\n                            present. If a key is specified which is not present in\n                            the Secret, the volume setup will error unless it is marked\n                            optional. Paths must be relative and may not contain the\n                            '..' path or start with '..'.\n                          items:\n                            description: Maps a string key to a path within a volume.\n                            properties:\n                              key:\n                                description: key is the key to project.\n                                type: string\n                              mode:\n                                description: 'mode is Optional: mode bits used to\n                                  set permissions on this file. Must be an octal value\n                                  between 0000 and 0777 or a decimal value between\n                                  0 and 511. YAML accepts both octal and decimal values,\n                                  JSON requires decimal values for mode bits. If not\n                                  specified, the volume defaultMode will be used.\n                                  This might be in conflict with other options that\n                                  affect the file mode, like fsGroup, and the result\n                                  can be other mode bits set.'\n                                format: int32\n                                type: integer\n                              path:\n                                description: path is the relative path of the file\n                                  to map the key to. May not be an absolute path.\n                                  May not contain the path element '..'. May not start\n                                  with the string '..'.\n                                type: string\n                            required:\n                            - key\n                            - path\n                            type: object\n                          type: array\n                        optional:\n                          description: optional field specify whether the Secret or\n                            its keys must be defined\n                          type: boolean\n                        secretName:\n                          description: 'secretName is the name of the secret in the\n                            pod''s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'\n                          type: string\n                      type: object\n                    storageos:\n                      description: storageOS represents a StorageOS volume attached\n                        and mounted on Kubernetes nodes.\n                      properties:\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified.\n                          type: string\n                        readOnly:\n                          description: readOnly defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretRef:\n                          description: secretRef specifies the secret to use for obtaining\n                            the StorageOS API credentials.  If not specified, default\n                            values will be attempted.\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        volumeName:\n                          description: volumeName is the human-readable name of the\n                            StorageOS volume.  Volume names are only unique within\n                            a namespace.\n                          type: string\n                        volumeNamespace:\n                          description: volumeNamespace specifies the scope of the\n                            volume within StorageOS.  If no namespace is specified\n                            then the Pod's namespace will be used.  This allows the\n                            Kubernetes name scoping to be mirrored within StorageOS\n                            for tighter integration. Set VolumeName to any name to\n                            override the default behaviour. Set to \"default\" if you\n                            are not using namespaces within StorageOS. Namespaces\n                            that do not pre-exist within StorageOS will be created.\n                          type: string\n                      type: object\n                    vsphereVolume:\n                      description: vsphereVolume represents a vSphere volume attached\n                        and mounted on kubelets host machine\n                      properties:\n                        fsType:\n                          description: fsType is filesystem type to mount. Must be\n                            a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified.\n                          type: string\n                        storagePolicyID:\n                          description: storagePolicyID is the storage Policy Based\n                            Management (SPBM) profile ID associated with the StoragePolicyName.\n                          type: string\n                        storagePolicyName:\n                          description: storagePolicyName is the storage Policy Based\n                            Management (SPBM) profile name.\n                          type: string\n                        volumePath:\n                          description: volumePath is the path that identifies vSphere\n                            volume vmdk\n                          type: string\n                      required:\n                      - volumePath\n                      type: object\n                  required:\n                  - name\n                  type: object\n                type: array\n              web:\n                description: Defines the web command line flags when starting Alertmanager.\n                properties:\n                  getConcurrency:\n                    description: Maximum number of GET requests processed concurrently.\n                      This corresponds to the Alertmanager's `--web.get-concurrency`\n                      flag.\n                    format: int32\n                    type: integer\n                  httpConfig:\n                    description: Defines HTTP parameters for web server.\n                    properties:\n                      headers:\n                        description: List of headers that can be added to HTTP responses.\n                        properties:\n                          contentSecurityPolicy:\n                            description: Set the Content-Security-Policy header to\n                              HTTP responses. Unset if blank.\n                            type: string\n                          strictTransportSecurity:\n                            description: Set the Strict-Transport-Security header\n                              to HTTP responses. Unset if blank. Please make sure\n                              that you use this with care as this header might force\n                              browsers to load Prometheus and the other applications\n                              hosted on the same domain and subdomains over HTTPS.\n                              https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security\n                            type: string\n                          xContentTypeOptions:\n                            description: Set the X-Content-Type-Options header to\n                              HTTP responses. Unset if blank. Accepted value is nosniff.\n                              https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options\n                            enum:\n                            - \"\"\n                            - NoSniff\n                            type: string\n                          xFrameOptions:\n                            description: Set the X-Frame-Options header to HTTP responses.\n                              Unset if blank. Accepted values are deny and sameorigin.\n                              https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options\n                            enum:\n                            - \"\"\n                            - Deny\n                            - SameOrigin\n                            type: string\n                          xXSSProtection:\n                            description: Set the X-XSS-Protection header to all responses.\n                              Unset if blank. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection\n                            type: string\n                        type: object\n                      http2:\n                        description: Enable HTTP/2 support. Note that HTTP/2 is only\n                          supported with TLS. When TLSConfig is not configured, HTTP/2\n                          will be disabled. Whenever the value of the field changes,\n                          a rolling update will be triggered.\n                        type: boolean\n                    type: object\n                  timeout:\n                    description: Timeout for HTTP requests. This corresponds to the\n                      Alertmanager's `--web.timeout` flag.\n                    format: int32\n                    type: integer\n                  tlsConfig:\n                    description: Defines the TLS parameters for HTTPS.\n                    properties:\n                      cert:\n                        description: Contains the TLS certificate for the server.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the\n                              targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its\n                                  key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      cipherSuites:\n                        description: 'List of supported cipher suites for TLS versions\n                          up to TLS 1.2. If empty, Go default cipher suites are used.\n                          Available cipher suites are documented in the go documentation:\n                          https://golang.org/pkg/crypto/tls/#pkg-constants'\n                        items:\n                          type: string\n                        type: array\n                      client_ca:\n                        description: Contains the CA certificate for client certificate\n                          authentication to the server.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the\n                              targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its\n                                  key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      clientAuthType:\n                        description: 'Server policy for client authentication. Maps\n                          to ClientAuth Policies. For more detail on clientAuth options:\n                          https://golang.org/pkg/crypto/tls/#ClientAuthType'\n                        type: string\n                      curvePreferences:\n                        description: 'Elliptic curves that will be used in an ECDHE\n                          handshake, in preference order. Available curves are documented\n                          in the go documentation: https://golang.org/pkg/crypto/tls/#CurveID'\n                        items:\n                          type: string\n                        type: array\n                      keySecret:\n                        description: Secret containing the TLS key for the server.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must\n                              be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must\n                              be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      maxVersion:\n                        description: Maximum TLS version that is acceptable. Defaults\n                          to TLS13.\n                        type: string\n                      minVersion:\n                        description: Minimum TLS version that is acceptable. Defaults\n                          to TLS12.\n                        type: string\n                      preferServerCipherSuites:\n                        description: Controls whether the server selects the client's\n                          most preferred cipher suite, or the server's most preferred\n                          cipher suite. If true then the server's preference, as expressed\n                          in the order of elements in cipherSuites, is used.\n                        type: boolean\n                    required:\n                    - cert\n                    - keySecret\n                    type: object\n                type: object\n            type: object\n          status:\n            description: 'Most recent observed status of the Alertmanager cluster.\n              Read-only. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status'\n            properties:\n              availableReplicas:\n                description: Total number of available pods (ready for at least minReadySeconds)\n                  targeted by this Alertmanager cluster.\n                format: int32\n                type: integer\n              conditions:\n                description: The current state of the Alertmanager object.\n                items:\n                  description: Condition represents the state of the resources associated\n                    with the Prometheus, Alertmanager or ThanosRuler resource.\n                  properties:\n                    lastTransitionTime:\n                      description: lastTransitionTime is the time of the last update\n                        to the current status property.\n                      format: date-time\n                      type: string\n                    message:\n                      description: Human-readable message indicating details for the\n                        condition's last transition.\n                      type: string\n                    observedGeneration:\n                      description: ObservedGeneration represents the .metadata.generation\n                        that the condition was set based upon. For instance, if `.metadata.generation`\n                        is currently 12, but the `.status.conditions[].observedGeneration`\n                        is 9, the condition is out of date with respect to the current\n                        state of the instance.\n                      format: int64\n                      type: integer\n                    reason:\n                      description: Reason for the condition's last transition.\n                      type: string\n                    status:\n                      description: Status of the condition.\n                      type: string\n                    type:\n                      description: Type of the condition being reported.\n                      type: string\n                  required:\n                  - lastTransitionTime\n                  - status\n                  - type\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - type\n                x-kubernetes-list-type: map\n              paused:\n                description: Represents whether any actions on the underlying managed\n                  objects are being performed. Only delete actions will be performed.\n                type: boolean\n              replicas:\n                description: Total number of non-terminated pods targeted by this\n                  Alertmanager object (their labels match the selector).\n                format: int32\n                type: integer\n              unavailableReplicas:\n                description: Total number of unavailable pods targeted by this Alertmanager\n                  object.\n                format: int32\n                type: integer\n              updatedReplicas:\n                description: Total number of non-terminated pods targeted by this\n                  Alertmanager object that have the desired version spec.\n                format: int32\n                type: integer\n            required:\n            - availableReplicas\n            - paused\n            - replicas\n            - unavailableReplicas\n            - updatedReplicas\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n    subresources:\n      status: {}\n---\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.11.1\n  creationTimestamp: null\n  name: podmonitors.monitoring.coreos.com\nspec:\n  group: monitoring.coreos.com\n  names:\n    categories:\n    - prometheus-operator\n    kind: PodMonitor\n    listKind: PodMonitorList\n    plural: podmonitors\n    shortNames:\n    - pmon\n    singular: podmonitor\n  scope: Namespaced\n  versions:\n  - name: v1\n    schema:\n      openAPIV3Schema:\n        description: PodMonitor defines monitoring for a set of pods.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: Specification of desired Pod selection for target discovery\n              by Prometheus.\n            properties:\n              attachMetadata:\n                description: Attaches node metadata to discovered targets. Requires\n                  Prometheus v2.35.0 and above.\n                properties:\n                  node:\n                    description: When set to true, Prometheus must have permissions\n                      to get Nodes.\n                    type: boolean\n                type: object\n              jobLabel:\n                description: The label to use to retrieve the job name from.\n                type: string\n              labelLimit:\n                description: Per-scrape limit on number of labels that will be accepted\n                  for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n                format: int64\n                type: integer\n              labelNameLengthLimit:\n                description: Per-scrape limit on length of labels name that will be\n                  accepted for a sample. Only valid in Prometheus versions 2.27.0\n                  and newer.\n                format: int64\n                type: integer\n              labelValueLengthLimit:\n                description: Per-scrape limit on length of labels value that will\n                  be accepted for a sample. Only valid in Prometheus versions 2.27.0\n                  and newer.\n                format: int64\n                type: integer\n              namespaceSelector:\n                description: Selector to select which namespaces the Endpoints objects\n                  are discovered from.\n                properties:\n                  any:\n                    description: Boolean describing whether all namespaces are selected\n                      in contrast to a list restricting them.\n                    type: boolean\n                  matchNames:\n                    description: List of namespace names to select from.\n                    items:\n                      type: string\n                    type: array\n                type: object\n              podMetricsEndpoints:\n                description: A list of endpoints allowed as part of this PodMonitor.\n                items:\n                  description: PodMetricsEndpoint defines a scrapeable endpoint of\n                    a Kubernetes Pod serving Prometheus metrics.\n                  properties:\n                    authorization:\n                      description: Authorization section for this endpoint\n                      properties:\n                        credentials:\n                          description: Selects a key of a Secret in the namespace\n                            that contains the credentials for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type:\n                          description: \"Defines the authentication type. The value\n                            is case-insensitive. \\n \\\"Basic\\\" is not a supported value.\n                            \\n Default: \\\"Bearer\\\"\"\n                          type: string\n                      type: object\n                    basicAuth:\n                      description: 'BasicAuth allow an endpoint to authenticate over\n                        basic authentication. More info: https://prometheus.io/docs/operating/configuration/#endpoint'\n                      properties:\n                        password:\n                          description: The secret in the service monitor namespace\n                            that contains the password for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        username:\n                          description: The secret in the service monitor namespace\n                            that contains the username for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      type: object\n                    bearerTokenSecret:\n                      description: Secret to mount to read bearer token for scraping\n                        targets. The secret needs to be in the same namespace as the\n                        pod monitor and accessible by the Prometheus Operator.\n                      properties:\n                        key:\n                          description: The key of the secret to select from.  Must\n                            be a valid secret key.\n                          type: string\n                        name:\n                          description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            TODO: Add other useful fields. apiVersion, kind, uid?'\n                          type: string\n                        optional:\n                          description: Specify whether the Secret or its key must\n                            be defined\n                          type: boolean\n                      required:\n                      - key\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    enableHttp2:\n                      description: Whether to enable HTTP2.\n                      type: boolean\n                    filterRunning:\n                      description: 'Drop pods that are not running. (Failed, Succeeded).\n                        Enabled by default. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase'\n                      type: boolean\n                    followRedirects:\n                      description: FollowRedirects configures whether scrape requests\n                        follow HTTP 3xx redirects.\n                      type: boolean\n                    honorLabels:\n                      description: HonorLabels chooses the metric's labels on collisions\n                        with target labels.\n                      type: boolean\n                    honorTimestamps:\n                      description: HonorTimestamps controls whether Prometheus respects\n                        the timestamps present in scraped data.\n                      type: boolean\n                    interval:\n                      description: Interval at which metrics should be scraped If\n                        not specified Prometheus' global scrape interval is used.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    metricRelabelings:\n                      description: MetricRelabelConfigs to apply to samples before\n                        ingestion.\n                      items:\n                        description: \"RelabelConfig allows dynamic rewriting of the\n                          label set for targets, alerts, scraped samples and remote\n                          write samples. \\n More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\"\n                        properties:\n                          action:\n                            default: replace\n                            description: \"Action to perform based on the regex matching.\n                              \\n `Uppercase` and `Lowercase` actions require Prometheus\n                              >= v2.36.0. `DropEqual` and `KeepEqual` actions require\n                              Prometheus >= v2.41.0. \\n Default: \\\"Replace\\\"\"\n                            enum:\n                            - replace\n                            - Replace\n                            - keep\n                            - Keep\n                            - drop\n                            - Drop\n                            - hashmod\n                            - HashMod\n                            - labelmap\n                            - LabelMap\n                            - labeldrop\n                            - LabelDrop\n                            - labelkeep\n                            - LabelKeep\n                            - lowercase\n                            - Lowercase\n                            - uppercase\n                            - Uppercase\n                            - keepequal\n                            - KeepEqual\n                            - dropequal\n                            - DropEqual\n                            type: string\n                          modulus:\n                            description: \"Modulus to take of the hash of the source\n                              label values. \\n Only applicable when the action is\n                              `HashMod`.\"\n                            format: int64\n                            type: integer\n                          regex:\n                            description: Regular expression against which the extracted\n                              value is matched.\n                            type: string\n                          replacement:\n                            description: \"Replacement value against which a Replace\n                              action is performed if the regular expression matches.\n                              \\n Regex capture groups are available.\"\n                            type: string\n                          separator:\n                            description: Separator is the string between concatenated\n                              SourceLabels.\n                            type: string\n                          sourceLabels:\n                            description: The source labels select values from existing\n                              labels. Their content is concatenated using the configured\n                              Separator and matched against the configured regular\n                              expression.\n                            items:\n                              description: LabelName is a valid Prometheus label name\n                                which may only contain ASCII letters, numbers, as\n                                well as underscores.\n                              pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$\n                              type: string\n                            type: array\n                          targetLabel:\n                            description: \"Label to which the resulting string is written\n                              in a replacement. \\n It is mandatory for `Replace`,\n                              `HashMod`, `Lowercase`, `Uppercase`, `KeepEqual` and\n                              `DropEqual` actions. \\n Regex capture groups are available.\"\n                            type: string\n                        type: object\n                      type: array\n                    oauth2:\n                      description: OAuth2 for the URL. Only valid in Prometheus versions\n                        2.27.0 and newer.\n                      properties:\n                        clientId:\n                          description: The secret or configmap containing the OAuth2\n                            client id\n                          properties:\n                            configMap:\n                              description: ConfigMap containing data to use for the\n                                targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its\n                                    key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must\n                                    be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key\n                                    must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        clientSecret:\n                          description: The secret containing the OAuth2 client secret\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        endpointParams:\n                          additionalProperties:\n                            type: string\n                          description: Parameters to append to the token URL\n                          type: object\n                        scopes:\n                          description: OAuth2 scopes used for the token request\n                          items:\n                            type: string\n                          type: array\n                        tokenUrl:\n                          description: The URL to fetch the token from\n                          minLength: 1\n                          type: string\n                      required:\n                      - clientId\n                      - clientSecret\n                      - tokenUrl\n                      type: object\n                    params:\n                      additionalProperties:\n                        items:\n                          type: string\n                        type: array\n                      description: Optional HTTP URL parameters\n                      type: object\n                    path:\n                      description: HTTP path to scrape for metrics. If empty, Prometheus\n                        uses the default value (e.g. `/metrics`).\n                      type: string\n                    port:\n                      description: Name of the pod port this endpoint refers to. Mutually\n                        exclusive with targetPort.\n                      type: string\n                    proxyUrl:\n                      description: ProxyURL eg http://proxyserver:2195 Directs scrapes\n                        to proxy through this endpoint.\n                      type: string\n                    relabelings:\n                      description: 'RelabelConfigs to apply to samples before scraping.\n                        Prometheus Operator automatically adds relabelings for a few\n                        standard Kubernetes fields. The original scrape job''s name\n                        is available via the `__tmp_prometheus_job_name` label. More\n                        info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config'\n                      items:\n                        description: \"RelabelConfig allows dynamic rewriting of the\n                          label set for targets, alerts, scraped samples and remote\n                          write samples. \\n More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\"\n                        properties:\n                          action:\n                            default: replace\n                            description: \"Action to perform based on the regex matching.\n                              \\n `Uppercase` and `Lowercase` actions require Prometheus\n                              >= v2.36.0. `DropEqual` and `KeepEqual` actions require\n                              Prometheus >= v2.41.0. \\n Default: \\\"Replace\\\"\"\n                            enum:\n                            - replace\n                            - Replace\n                            - keep\n                            - Keep\n                            - drop\n                            - Drop\n                            - hashmod\n                            - HashMod\n                            - labelmap\n                            - LabelMap\n                            - labeldrop\n                            - LabelDrop\n                            - labelkeep\n                            - LabelKeep\n                            - lowercase\n                            - Lowercase\n                            - uppercase\n                            - Uppercase\n                            - keepequal\n                            - KeepEqual\n                            - dropequal\n                            - DropEqual\n                            type: string\n                          modulus:\n                            description: \"Modulus to take of the hash of the source\n                              label values. \\n Only applicable when the action is\n                              `HashMod`.\"\n                            format: int64\n                            type: integer\n                          regex:\n                            description: Regular expression against which the extracted\n                              value is matched.\n                            type: string\n                          replacement:\n                            description: \"Replacement value against which a Replace\n                              action is performed if the regular expression matches.\n                              \\n Regex capture groups are available.\"\n                            type: string\n                          separator:\n                            description: Separator is the string between concatenated\n                              SourceLabels.\n                            type: string\n                          sourceLabels:\n                            description: The source labels select values from existing\n                              labels. Their content is concatenated using the configured\n                              Separator and matched against the configured regular\n                              expression.\n                            items:\n                              description: LabelName is a valid Prometheus label name\n                                which may only contain ASCII letters, numbers, as\n                                well as underscores.\n                              pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$\n                              type: string\n                            type: array\n                          targetLabel:\n                            description: \"Label to which the resulting string is written\n                              in a replacement. \\n It is mandatory for `Replace`,\n                              `HashMod`, `Lowercase`, `Uppercase`, `KeepEqual` and\n                              `DropEqual` actions. \\n Regex capture groups are available.\"\n                            type: string\n                        type: object\n                      type: array\n                    scheme:\n                      description: HTTP scheme to use for scraping. `http` and `https`\n                        are the expected values unless you rewrite the `__scheme__`\n                        label via relabeling. If empty, Prometheus uses the default\n                        value `http`.\n                      enum:\n                      - http\n                      - https\n                      type: string\n                    scrapeTimeout:\n                      description: Timeout after which the scrape is ended If not\n                        specified, the Prometheus global scrape interval is used.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    targetPort:\n                      anyOf:\n                      - type: integer\n                      - type: string\n                      description: 'Deprecated: Use ''port'' instead.'\n                      x-kubernetes-int-or-string: true\n                    tlsConfig:\n                      description: TLS configuration to use when scraping the endpoint.\n                      properties:\n                        ca:\n                          description: Certificate authority used when verifying server\n                            certificates.\n                          properties:\n                            configMap:\n                              description: ConfigMap containing data to use for the\n                                targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its\n                                    key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must\n                                    be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key\n                                    must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        cert:\n                          description: Client certificate to present when doing client-authentication.\n                          properties:\n                            configMap:\n                              description: ConfigMap containing data to use for the\n                                targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its\n                                    key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must\n                                    be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key\n                                    must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        insecureSkipVerify:\n                          description: Disable target certificate validation.\n                          type: boolean\n                        keySecret:\n                          description: Secret containing the client key file for the\n                            targets.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        serverName:\n                          description: Used to verify the hostname for the targets.\n                          type: string\n                      type: object\n                  type: object\n                type: array\n              podTargetLabels:\n                description: PodTargetLabels transfers labels on the Kubernetes Pod\n                  onto the target.\n                items:\n                  type: string\n                type: array\n              sampleLimit:\n                description: SampleLimit defines per-scrape limit on number of scraped\n                  samples that will be accepted.\n                format: int64\n                type: integer\n              selector:\n                description: Selector to select Pod objects.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              targetLimit:\n                description: TargetLimit defines a limit on the number of scraped\n                  targets that will be accepted.\n                format: int64\n                type: integer\n            required:\n            - podMetricsEndpoints\n            - selector\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n---\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.11.1\n  creationTimestamp: null\n  name: probes.monitoring.coreos.com\nspec:\n  group: monitoring.coreos.com\n  names:\n    categories:\n    - prometheus-operator\n    kind: Probe\n    listKind: ProbeList\n    plural: probes\n    shortNames:\n    - prb\n    singular: probe\n  scope: Namespaced\n  versions:\n  - name: v1\n    schema:\n      openAPIV3Schema:\n        description: Probe defines monitoring for a set of static targets or ingresses.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: Specification of desired Ingress selection for target discovery\n              by Prometheus.\n            properties:\n              authorization:\n                description: Authorization section for this endpoint\n                properties:\n                  credentials:\n                    description: Selects a key of a Secret in the namespace that contains\n                      the credentials for authentication.\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be\n                          a valid secret key.\n                        type: string\n                      name:\n                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                          TODO: Add other useful fields. apiVersion, kind, uid?'\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be\n                          defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                  type:\n                    description: \"Defines the authentication type. The value is case-insensitive.\n                      \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\"\n                    type: string\n                type: object\n              basicAuth:\n                description: 'BasicAuth allow an endpoint to authenticate over basic\n                  authentication. More info: https://prometheus.io/docs/operating/configuration/#endpoint'\n                properties:\n                  password:\n                    description: The secret in the service monitor namespace that\n                      contains the password for authentication.\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be\n                          a valid secret key.\n                        type: string\n                      name:\n                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                          TODO: Add other useful fields. apiVersion, kind, uid?'\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be\n                          defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                  username:\n                    description: The secret in the service monitor namespace that\n                      contains the username for authentication.\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be\n                          a valid secret key.\n                        type: string\n                      name:\n                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                          TODO: Add other useful fields. apiVersion, kind, uid?'\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be\n                          defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                type: object\n              bearerTokenSecret:\n                description: Secret to mount to read bearer token for scraping targets.\n                  The secret needs to be in the same namespace as the probe and accessible\n                  by the Prometheus Operator.\n                properties:\n                  key:\n                    description: The key of the secret to select from.  Must be a\n                      valid secret key.\n                    type: string\n                  name:\n                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                      TODO: Add other useful fields. apiVersion, kind, uid?'\n                    type: string\n                  optional:\n                    description: Specify whether the Secret or its key must be defined\n                    type: boolean\n                required:\n                - key\n                type: object\n                x-kubernetes-map-type: atomic\n              interval:\n                description: Interval at which targets are probed using the configured\n                  prober. If not specified Prometheus' global scrape interval is used.\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              jobName:\n                description: The job name assigned to scraped metrics by default.\n                type: string\n              labelLimit:\n                description: Per-scrape limit on number of labels that will be accepted\n                  for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n                format: int64\n                type: integer\n              labelNameLengthLimit:\n                description: Per-scrape limit on length of labels name that will be\n                  accepted for a sample. Only valid in Prometheus versions 2.27.0\n                  and newer.\n                format: int64\n                type: integer\n              labelValueLengthLimit:\n                description: Per-scrape limit on length of labels value that will\n                  be accepted for a sample. Only valid in Prometheus versions 2.27.0\n                  and newer.\n                format: int64\n                type: integer\n              metricRelabelings:\n                description: MetricRelabelConfigs to apply to samples before ingestion.\n                items:\n                  description: \"RelabelConfig allows dynamic rewriting of the label\n                    set for targets, alerts, scraped samples and remote write samples.\n                    \\n More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\"\n                  properties:\n                    action:\n                      default: replace\n                      description: \"Action to perform based on the regex matching.\n                        \\n `Uppercase` and `Lowercase` actions require Prometheus\n                        >= v2.36.0. `DropEqual` and `KeepEqual` actions require Prometheus\n                        >= v2.41.0. \\n Default: \\\"Replace\\\"\"\n                      enum:\n                      - replace\n                      - Replace\n                      - keep\n                      - Keep\n                      - drop\n                      - Drop\n                      - hashmod\n                      - HashMod\n                      - labelmap\n                      - LabelMap\n                      - labeldrop\n                      - LabelDrop\n                      - labelkeep\n                      - LabelKeep\n                      - lowercase\n                      - Lowercase\n                      - uppercase\n                      - Uppercase\n                      - keepequal\n                      - KeepEqual\n                      - dropequal\n                      - DropEqual\n                      type: string\n                    modulus:\n                      description: \"Modulus to take of the hash of the source label\n                        values. \\n Only applicable when the action is `HashMod`.\"\n                      format: int64\n                      type: integer\n                    regex:\n                      description: Regular expression against which the extracted\n                        value is matched.\n                      type: string\n                    replacement:\n                      description: \"Replacement value against which a Replace action\n                        is performed if the regular expression matches. \\n Regex capture\n                        groups are available.\"\n                      type: string\n                    separator:\n                      description: Separator is the string between concatenated SourceLabels.\n                      type: string\n                    sourceLabels:\n                      description: The source labels select values from existing labels.\n                        Their content is concatenated using the configured Separator\n                        and matched against the configured regular expression.\n                      items:\n                        description: LabelName is a valid Prometheus label name which\n                          may only contain ASCII letters, numbers, as well as underscores.\n                        pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$\n                        type: string\n                      type: array\n                    targetLabel:\n                      description: \"Label to which the resulting string is written\n                        in a replacement. \\n It is mandatory for `Replace`, `HashMod`,\n                        `Lowercase`, `Uppercase`, `KeepEqual` and `DropEqual` actions.\n                        \\n Regex capture groups are available.\"\n                      type: string\n                  type: object\n                type: array\n              module:\n                description: 'The module to use for probing specifying how to probe\n                  the target. Example module configuring in the blackbox exporter:\n                  https://github.com/prometheus/blackbox_exporter/blob/master/example.yml'\n                type: string\n              oauth2:\n                description: OAuth2 for the URL. Only valid in Prometheus versions\n                  2.27.0 and newer.\n                properties:\n                  clientId:\n                    description: The secret or configmap containing the OAuth2 client\n                      id\n                    properties:\n                      configMap:\n                        description: ConfigMap containing data to use for the targets.\n                        properties:\n                          key:\n                            description: The key to select.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the ConfigMap or its key\n                              must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      secret:\n                        description: Secret containing data to use for the targets.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must\n                              be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must\n                              be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  clientSecret:\n                    description: The secret containing the OAuth2 client secret\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be\n                          a valid secret key.\n                        type: string\n                      name:\n                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                          TODO: Add other useful fields. apiVersion, kind, uid?'\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be\n                          defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                  endpointParams:\n                    additionalProperties:\n                      type: string\n                    description: Parameters to append to the token URL\n                    type: object\n                  scopes:\n                    description: OAuth2 scopes used for the token request\n                    items:\n                      type: string\n                    type: array\n                  tokenUrl:\n                    description: The URL to fetch the token from\n                    minLength: 1\n                    type: string\n                required:\n                - clientId\n                - clientSecret\n                - tokenUrl\n                type: object\n              prober:\n                description: Specification for the prober to use for probing targets.\n                  The prober.URL parameter is required. Targets cannot be probed if\n                  left empty.\n                properties:\n                  path:\n                    default: /probe\n                    description: Path to collect metrics from. Defaults to `/probe`.\n                    type: string\n                  proxyUrl:\n                    description: Optional ProxyURL.\n                    type: string\n                  scheme:\n                    description: HTTP scheme to use for scraping. `http` and `https`\n                      are the expected values unless you rewrite the `__scheme__`\n                      label via relabeling. If empty, Prometheus uses the default\n                      value `http`.\n                    enum:\n                    - http\n                    - https\n                    type: string\n                  url:\n                    description: Mandatory URL of the prober.\n                    type: string\n                required:\n                - url\n                type: object\n              sampleLimit:\n                description: SampleLimit defines per-scrape limit on number of scraped\n                  samples that will be accepted.\n                format: int64\n                type: integer\n              scrapeTimeout:\n                description: Timeout for scraping metrics from the Prometheus exporter.\n                  If not specified, the Prometheus global scrape timeout is used.\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              targetLimit:\n                description: TargetLimit defines a limit on the number of scraped\n                  targets that will be accepted.\n                format: int64\n                type: integer\n              targets:\n                description: Targets defines a set of static or dynamically discovered\n                  targets to probe.\n                properties:\n                  ingress:\n                    description: ingress defines the Ingress objects to probe and\n                      the relabeling configuration. If `staticConfig` is also defined,\n                      `staticConfig` takes precedence.\n                    properties:\n                      namespaceSelector:\n                        description: From which namespaces to select Ingress objects.\n                        properties:\n                          any:\n                            description: Boolean describing whether all namespaces\n                              are selected in contrast to a list restricting them.\n                            type: boolean\n                          matchNames:\n                            description: List of namespace names to select from.\n                            items:\n                              type: string\n                            type: array\n                        type: object\n                      relabelingConfigs:\n                        description: 'RelabelConfigs to apply to the label set of\n                          the target before it gets scraped. The original ingress\n                          address is available via the `__tmp_prometheus_ingress_address`\n                          label. It can be used to customize the probed URL. The original\n                          scrape job''s name is available via the `__tmp_prometheus_job_name`\n                          label. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config'\n                        items:\n                          description: \"RelabelConfig allows dynamic rewriting of\n                            the label set for targets, alerts, scraped samples and\n                            remote write samples. \\n More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\"\n                          properties:\n                            action:\n                              default: replace\n                              description: \"Action to perform based on the regex matching.\n                                \\n `Uppercase` and `Lowercase` actions require Prometheus\n                                >= v2.36.0. `DropEqual` and `KeepEqual` actions require\n                                Prometheus >= v2.41.0. \\n Default: \\\"Replace\\\"\"\n                              enum:\n                              - replace\n                              - Replace\n                              - keep\n                              - Keep\n                              - drop\n                              - Drop\n                              - hashmod\n                              - HashMod\n                              - labelmap\n                              - LabelMap\n                              - labeldrop\n                              - LabelDrop\n                              - labelkeep\n                              - LabelKeep\n                              - lowercase\n                              - Lowercase\n                              - uppercase\n                              - Uppercase\n                              - keepequal\n                              - KeepEqual\n                              - dropequal\n                              - DropEqual\n                              type: string\n                            modulus:\n                              description: \"Modulus to take of the hash of the source\n                                label values. \\n Only applicable when the action is\n                                `HashMod`.\"\n                              format: int64\n                              type: integer\n                            regex:\n                              description: Regular expression against which the extracted\n                                value is matched.\n                              type: string\n                            replacement:\n                              description: \"Replacement value against which a Replace\n                                action is performed if the regular expression matches.\n                                \\n Regex capture groups are available.\"\n                              type: string\n                            separator:\n                              description: Separator is the string between concatenated\n                                SourceLabels.\n                              type: string\n                            sourceLabels:\n                              description: The source labels select values from existing\n                                labels. Their content is concatenated using the configured\n                                Separator and matched against the configured regular\n                                expression.\n                              items:\n                                description: LabelName is a valid Prometheus label\n                                  name which may only contain ASCII letters, numbers,\n                                  as well as underscores.\n                                pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$\n                                type: string\n                              type: array\n                            targetLabel:\n                              description: \"Label to which the resulting string is\n                                written in a replacement. \\n It is mandatory for `Replace`,\n                                `HashMod`, `Lowercase`, `Uppercase`, `KeepEqual` and\n                                `DropEqual` actions. \\n Regex capture groups are available.\"\n                              type: string\n                          type: object\n                        type: array\n                      selector:\n                        description: Selector to select the Ingress objects.\n                        properties:\n                          matchExpressions:\n                            description: matchExpressions is a list of label selector\n                              requirements. The requirements are ANDed.\n                            items:\n                              description: A label selector requirement is a selector\n                                that contains values, a key, and an operator that\n                                relates the key and values.\n                              properties:\n                                key:\n                                  description: key is the label key that the selector\n                                    applies to.\n                                  type: string\n                                operator:\n                                  description: operator represents a key's relationship\n                                    to a set of values. Valid operators are In, NotIn,\n                                    Exists and DoesNotExist.\n                                  type: string\n                                values:\n                                  description: values is an array of string values.\n                                    If the operator is In or NotIn, the values array\n                                    must be non-empty. If the operator is Exists or\n                                    DoesNotExist, the values array must be empty.\n                                    This array is replaced during a strategic merge\n                                    patch.\n                                  items:\n                                    type: string\n                                  type: array\n                              required:\n                              - key\n                              - operator\n                              type: object\n                            type: array\n                          matchLabels:\n                            additionalProperties:\n                              type: string\n                            description: matchLabels is a map of {key,value} pairs.\n                              A single {key,value} in the matchLabels map is equivalent\n                              to an element of matchExpressions, whose key field is\n                              \"key\", the operator is \"In\", and the values array contains\n                              only \"value\". The requirements are ANDed.\n                            type: object\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  staticConfig:\n                    description: 'staticConfig defines the static list of targets\n                      to probe and the relabeling configuration. If `ingress` is also\n                      defined, `staticConfig` takes precedence. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#static_config.'\n                    properties:\n                      labels:\n                        additionalProperties:\n                          type: string\n                        description: Labels assigned to all metrics scraped from the\n                          targets.\n                        type: object\n                      relabelingConfigs:\n                        description: 'RelabelConfigs to apply to the label set of\n                          the targets before it gets scraped. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config'\n                        items:\n                          description: \"RelabelConfig allows dynamic rewriting of\n                            the label set for targets, alerts, scraped samples and\n                            remote write samples. \\n More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\"\n                          properties:\n                            action:\n                              default: replace\n                              description: \"Action to perform based on the regex matching.\n                                \\n `Uppercase` and `Lowercase` actions require Prometheus\n                                >= v2.36.0. `DropEqual` and `KeepEqual` actions require\n                                Prometheus >= v2.41.0. \\n Default: \\\"Replace\\\"\"\n                              enum:\n                              - replace\n                              - Replace\n                              - keep\n                              - Keep\n                              - drop\n                              - Drop\n                              - hashmod\n                              - HashMod\n                              - labelmap\n                              - LabelMap\n                              - labeldrop\n                              - LabelDrop\n                              - labelkeep\n                              - LabelKeep\n                              - lowercase\n                              - Lowercase\n                              - uppercase\n                              - Uppercase\n                              - keepequal\n                              - KeepEqual\n                              - dropequal\n                              - DropEqual\n                              type: string\n                            modulus:\n                              description: \"Modulus to take of the hash of the source\n                                label values. \\n Only applicable when the action is\n                                `HashMod`.\"\n                              format: int64\n                              type: integer\n                            regex:\n                              description: Regular expression against which the extracted\n                                value is matched.\n                              type: string\n                            replacement:\n                              description: \"Replacement value against which a Replace\n                                action is performed if the regular expression matches.\n                                \\n Regex capture groups are available.\"\n                              type: string\n                            separator:\n                              description: Separator is the string between concatenated\n                                SourceLabels.\n                              type: string\n                            sourceLabels:\n                              description: The source labels select values from existing\n                                labels. Their content is concatenated using the configured\n                                Separator and matched against the configured regular\n                                expression.\n                              items:\n                                description: LabelName is a valid Prometheus label\n                                  name which may only contain ASCII letters, numbers,\n                                  as well as underscores.\n                                pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$\n                                type: string\n                              type: array\n                            targetLabel:\n                              description: \"Label to which the resulting string is\n                                written in a replacement. \\n It is mandatory for `Replace`,\n                                `HashMod`, `Lowercase`, `Uppercase`, `KeepEqual` and\n                                `DropEqual` actions. \\n Regex capture groups are available.\"\n                              type: string\n                          type: object\n                        type: array\n                      static:\n                        description: The list of hosts to probe.\n                        items:\n                          type: string\n                        type: array\n                    type: object\n                type: object\n              tlsConfig:\n                description: TLS configuration to use when scraping the endpoint.\n                properties:\n                  ca:\n                    description: Certificate authority used when verifying server\n                      certificates.\n                    properties:\n                      configMap:\n                        description: ConfigMap containing data to use for the targets.\n                        properties:\n                          key:\n                            description: The key to select.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the ConfigMap or its key\n                              must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      secret:\n                        description: Secret containing data to use for the targets.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must\n                              be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must\n                              be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  cert:\n                    description: Client certificate to present when doing client-authentication.\n                    properties:\n                      configMap:\n                        description: ConfigMap containing data to use for the targets.\n                        properties:\n                          key:\n                            description: The key to select.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the ConfigMap or its key\n                              must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      secret:\n                        description: Secret containing data to use for the targets.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must\n                              be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must\n                              be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  insecureSkipVerify:\n                    description: Disable target certificate validation.\n                    type: boolean\n                  keySecret:\n                    description: Secret containing the client key file for the targets.\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be\n                          a valid secret key.\n                        type: string\n                      name:\n                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                          TODO: Add other useful fields. apiVersion, kind, uid?'\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be\n                          defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                  serverName:\n                    description: Used to verify the hostname for the targets.\n                    type: string\n                type: object\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n---\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.11.1\n  creationTimestamp: null\n  name: prometheusagents.monitoring.coreos.com\nspec:\n  group: monitoring.coreos.com\n  names:\n    categories:\n    - prometheus-operator\n    kind: PrometheusAgent\n    listKind: PrometheusAgentList\n    plural: prometheusagents\n    shortNames:\n    - promagent\n    singular: prometheusagent\n  scope: Namespaced\n  versions:\n  - additionalPrinterColumns:\n    - description: The version of Prometheus agent\n      jsonPath: .spec.version\n      name: Version\n      type: string\n    - description: The number of desired replicas\n      jsonPath: .spec.replicas\n      name: Desired\n      type: integer\n    - description: The number of ready replicas\n      jsonPath: .status.availableReplicas\n      name: Ready\n      type: integer\n    - jsonPath: .status.conditions[?(@.type == 'Reconciled')].status\n      name: Reconciled\n      type: string\n    - jsonPath: .status.conditions[?(@.type == 'Available')].status\n      name: Available\n      type: string\n    - jsonPath: .metadata.creationTimestamp\n      name: Age\n      type: date\n    - description: Whether the resource reconciliation is paused or not\n      jsonPath: .status.paused\n      name: Paused\n      priority: 1\n      type: boolean\n    name: v1alpha1\n    schema:\n      openAPIV3Schema:\n        description: PrometheusAgent defines a Prometheus agent deployment.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: 'Specification of the desired behavior of the Prometheus\n              agent. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status'\n            properties:\n              additionalArgs:\n                description: \"AdditionalArgs allows setting additional arguments for\n                  the 'prometheus' container. \\n It is intended for e.g. activating\n                  hidden flags which are not supported by the dedicated configuration\n                  options yet. The arguments are passed as-is to the Prometheus container\n                  which may cause issues if they are invalid or not supported by the\n                  given Prometheus version. \\n In case of an argument conflict (e.g.\n                  an argument which is already set by the operator itself) or when\n                  providing an invalid argument, the reconciliation will fail and\n                  an error will be logged.\"\n                items:\n                  description: Argument as part of the AdditionalArgs list.\n                  properties:\n                    name:\n                      description: Name of the argument, e.g. \"scrape.discovery-reload-interval\".\n                      minLength: 1\n                      type: string\n                    value:\n                      description: Argument value, e.g. 30s. Can be empty for name-only\n                        arguments (e.g. --storage.tsdb.no-lockfile)\n                      type: string\n                  required:\n                  - name\n                  type: object\n                type: array\n              additionalScrapeConfigs:\n                description: 'AdditionalScrapeConfigs allows specifying a key of a\n                  Secret containing additional Prometheus scrape configurations. Scrape\n                  configurations specified are appended to the configurations generated\n                  by the Prometheus Operator. Job configurations specified must have\n                  the form as specified in the official Prometheus documentation:\n                  https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config.\n                  As scrape configs are appended, the user is responsible to make\n                  sure it is valid. Note that using this feature may expose the possibility\n                  to break upgrades of Prometheus. It is advised to review Prometheus\n                  release notes to ensure that no incompatible scrape configs are\n                  going to break Prometheus after the upgrade.'\n                properties:\n                  key:\n                    description: The key of the secret to select from.  Must be a\n                      valid secret key.\n                    type: string\n                  name:\n                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                      TODO: Add other useful fields. apiVersion, kind, uid?'\n                    type: string\n                  optional:\n                    description: Specify whether the Secret or its key must be defined\n                    type: boolean\n                required:\n                - key\n                type: object\n                x-kubernetes-map-type: atomic\n              affinity:\n                description: Defines the Pods' affinity scheduling rules if specified.\n                properties:\n                  nodeAffinity:\n                    description: Describes node affinity scheduling rules for the\n                      pod.\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: The scheduler will prefer to schedule pods to\n                          nodes that satisfy the affinity expressions specified by\n                          this field, but it may choose a node that violates one or\n                          more of the expressions. The node that is most preferred\n                          is the one with the greatest sum of weights, i.e. for each\n                          node that meets all of the scheduling requirements (resource\n                          request, requiredDuringScheduling affinity expressions,\n                          etc.), compute a sum by iterating through the elements of\n                          this field and adding \"weight\" to the sum if the node matches\n                          the corresponding matchExpressions; the node(s) with the\n                          highest sum are the most preferred.\n                        items:\n                          description: An empty preferred scheduling term matches\n                            all objects with implicit weight 0 (i.e. it's a no-op).\n                            A null preferred scheduling term matches no objects (i.e.\n                            is also a no-op).\n                          properties:\n                            preference:\n                              description: A node selector term, associated with the\n                                corresponding weight.\n                              properties:\n                                matchExpressions:\n                                  description: A list of node selector requirements\n                                    by node's labels.\n                                  items:\n                                    description: A node selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector\n                                          applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists, DoesNotExist. Gt, and\n                                          Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If\n                                          the operator is In or NotIn, the values\n                                          array must be non-empty. If the operator\n                                          is Exists or DoesNotExist, the values array\n                                          must be empty. If the operator is Gt or\n                                          Lt, the values array must have a single\n                                          element, which will be interpreted as an\n                                          integer. This array is replaced during a\n                                          strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchFields:\n                                  description: A list of node selector requirements\n                                    by node's fields.\n                                  items:\n                                    description: A node selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector\n                                          applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists, DoesNotExist. Gt, and\n                                          Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If\n                                          the operator is In or NotIn, the values\n                                          array must be non-empty. If the operator\n                                          is Exists or DoesNotExist, the values array\n                                          must be empty. If the operator is Gt or\n                                          Lt, the values array must have a single\n                                          element, which will be interpreted as an\n                                          integer. This array is replaced during a\n                                          strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            weight:\n                              description: Weight associated with matching the corresponding\n                                nodeSelectorTerm, in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - preference\n                          - weight\n                          type: object\n                        type: array\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: If the affinity requirements specified by this\n                          field are not met at scheduling time, the pod will not be\n                          scheduled onto the node. If the affinity requirements specified\n                          by this field cease to be met at some point during pod execution\n                          (e.g. due to an update), the system may or may not try to\n                          eventually evict the pod from its node.\n                        properties:\n                          nodeSelectorTerms:\n                            description: Required. A list of node selector terms.\n                              The terms are ORed.\n                            items:\n                              description: A null or empty node selector term matches\n                                no objects. The requirements of them are ANDed. The\n                                TopologySelectorTerm type implements a subset of the\n                                NodeSelectorTerm.\n                              properties:\n                                matchExpressions:\n                                  description: A list of node selector requirements\n                                    by node's labels.\n                                  items:\n                                    description: A node selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector\n                                          applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists, DoesNotExist. Gt, and\n                                          Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If\n                                          the operator is In or NotIn, the values\n                                          array must be non-empty. If the operator\n                                          is Exists or DoesNotExist, the values array\n                                          must be empty. If the operator is Gt or\n                                          Lt, the values array must have a single\n                                          element, which will be interpreted as an\n                                          integer. This array is replaced during a\n                                          strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchFields:\n                                  description: A list of node selector requirements\n                                    by node's fields.\n                                  items:\n                                    description: A node selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector\n                                          applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists, DoesNotExist. Gt, and\n                                          Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If\n                                          the operator is In or NotIn, the values\n                                          array must be non-empty. If the operator\n                                          is Exists or DoesNotExist, the values array\n                                          must be empty. If the operator is Gt or\n                                          Lt, the values array must have a single\n                                          element, which will be interpreted as an\n                                          integer. This array is replaced during a\n                                          strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            type: array\n                        required:\n                        - nodeSelectorTerms\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  podAffinity:\n                    description: Describes pod affinity scheduling rules (e.g. co-locate\n                      this pod in the same node, zone, etc. as some other pod(s)).\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: The scheduler will prefer to schedule pods to\n                          nodes that satisfy the affinity expressions specified by\n                          this field, but it may choose a node that violates one or\n                          more of the expressions. The node that is most preferred\n                          is the one with the greatest sum of weights, i.e. for each\n                          node that meets all of the scheduling requirements (resource\n                          request, requiredDuringScheduling affinity expressions,\n                          etc.), compute a sum by iterating through the elements of\n                          this field and adding \"weight\" to the sum if the node has\n                          pods which matches the corresponding podAffinityTerm; the\n                          node(s) with the highest sum are the most preferred.\n                        items:\n                          description: The weights of all of the matched WeightedPodAffinityTerm\n                            fields are added per-node to find the most preferred node(s)\n                          properties:\n                            podAffinityTerm:\n                              description: Required. A pod affinity term, associated\n                                with the corresponding weight.\n                              properties:\n                                labelSelector:\n                                  description: A label query over a set of resources,\n                                    in this case pods.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label\n                                        selector requirements. The requirements are\n                                        ANDed.\n                                      items:\n                                        description: A label selector requirement\n                                          is a selector that contains values, a key,\n                                          and an operator that relates the key and\n                                          values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that\n                                              the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's\n                                              relationship to a set of values. Valid\n                                              operators are In, NotIn, Exists and\n                                              DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string\n                                              values. If the operator is In or NotIn,\n                                              the values array must be non-empty.\n                                              If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This\n                                              array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value}\n                                        pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions,\n                                        whose key field is \"key\", the operator is\n                                        \"In\", and the values array contains only \"value\".\n                                        The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaceSelector:\n                                  description: A label query over the set of namespaces\n                                    that the term applies to. The term is applied\n                                    to the union of the namespaces selected by this\n                                    field and the ones listed in the namespaces field.\n                                    null selector and null or empty namespaces list\n                                    means \"this pod's namespace\". An empty selector\n                                    ({}) matches all namespaces.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label\n                                        selector requirements. The requirements are\n                                        ANDed.\n                                      items:\n                                        description: A label selector requirement\n                                          is a selector that contains values, a key,\n                                          and an operator that relates the key and\n                                          values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that\n                                              the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's\n                                              relationship to a set of values. Valid\n                                              operators are In, NotIn, Exists and\n                                              DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string\n                                              values. If the operator is In or NotIn,\n                                              the values array must be non-empty.\n                                              If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This\n                                              array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value}\n                                        pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions,\n                                        whose key field is \"key\", the operator is\n                                        \"In\", and the values array contains only \"value\".\n                                        The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaces:\n                                  description: namespaces specifies a static list\n                                    of namespace names that the term applies to. The\n                                    term is applied to the union of the namespaces\n                                    listed in this field and the ones selected by\n                                    namespaceSelector. null or empty namespaces list\n                                    and null namespaceSelector means \"this pod's namespace\".\n                                  items:\n                                    type: string\n                                  type: array\n                                topologyKey:\n                                  description: This pod should be co-located (affinity)\n                                    or not co-located (anti-affinity) with the pods\n                                    matching the labelSelector in the specified namespaces,\n                                    where co-located is defined as running on a node\n                                    whose value of the label with key topologyKey\n                                    matches that of any node on which any of the selected\n                                    pods is running. Empty topologyKey is not allowed.\n                                  type: string\n                              required:\n                              - topologyKey\n                              type: object\n                            weight:\n                              description: weight associated with matching the corresponding\n                                podAffinityTerm, in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - podAffinityTerm\n                          - weight\n                          type: object\n                        type: array\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: If the affinity requirements specified by this\n                          field are not met at scheduling time, the pod will not be\n                          scheduled onto the node. If the affinity requirements specified\n                          by this field cease to be met at some point during pod execution\n                          (e.g. due to a pod label update), the system may or may\n                          not try to eventually evict the pod from its node. When\n                          there are multiple elements, the lists of nodes corresponding\n                          to each podAffinityTerm are intersected, i.e. all terms\n                          must be satisfied.\n                        items:\n                          description: Defines a set of pods (namely those matching\n                            the labelSelector relative to the given namespace(s))\n                            that this pod should be co-located (affinity) or not co-located\n                            (anti-affinity) with, where co-located is defined as running\n                            on a node whose value of the label with key <topologyKey>\n                            matches that of any node on which a pod of the set of\n                            pods is running\n                          properties:\n                            labelSelector:\n                              description: A label query over a set of resources,\n                                in this case pods.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label\n                                    selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the\n                                          selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string\n                                          values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the\n                                          operator is Exists or DoesNotExist, the\n                                          values array must be empty. This array is\n                                          replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value}\n                                    pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions,\n                                    whose key field is \"key\", the operator is \"In\",\n                                    and the values array contains only \"value\". The\n                                    requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaceSelector:\n                              description: A label query over the set of namespaces\n                                that the term applies to. The term is applied to the\n                                union of the namespaces selected by this field and\n                                the ones listed in the namespaces field. null selector\n                                and null or empty namespaces list means \"this pod's\n                                namespace\". An empty selector ({}) matches all namespaces.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label\n                                    selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the\n                                          selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string\n                                          values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the\n                                          operator is Exists or DoesNotExist, the\n                                          values array must be empty. This array is\n                                          replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value}\n                                    pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions,\n                                    whose key field is \"key\", the operator is \"In\",\n                                    and the values array contains only \"value\". The\n                                    requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaces:\n                              description: namespaces specifies a static list of namespace\n                                names that the term applies to. The term is applied\n                                to the union of the namespaces listed in this field\n                                and the ones selected by namespaceSelector. null or\n                                empty namespaces list and null namespaceSelector means\n                                \"this pod's namespace\".\n                              items:\n                                type: string\n                              type: array\n                            topologyKey:\n                              description: This pod should be co-located (affinity)\n                                or not co-located (anti-affinity) with the pods matching\n                                the labelSelector in the specified namespaces, where\n                                co-located is defined as running on a node whose value\n                                of the label with key topologyKey matches that of\n                                any node on which any of the selected pods is running.\n                                Empty topologyKey is not allowed.\n                              type: string\n                          required:\n                          - topologyKey\n                          type: object\n                        type: array\n                    type: object\n                  podAntiAffinity:\n                    description: Describes pod anti-affinity scheduling rules (e.g.\n                      avoid putting this pod in the same node, zone, etc. as some\n                      other pod(s)).\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: The scheduler will prefer to schedule pods to\n                          nodes that satisfy the anti-affinity expressions specified\n                          by this field, but it may choose a node that violates one\n                          or more of the expressions. The node that is most preferred\n                          is the one with the greatest sum of weights, i.e. for each\n                          node that meets all of the scheduling requirements (resource\n                          request, requiredDuringScheduling anti-affinity expressions,\n                          etc.), compute a sum by iterating through the elements of\n                          this field and adding \"weight\" to the sum if the node has\n                          pods which matches the corresponding podAffinityTerm; the\n                          node(s) with the highest sum are the most preferred.\n                        items:\n                          description: The weights of all of the matched WeightedPodAffinityTerm\n                            fields are added per-node to find the most preferred node(s)\n                          properties:\n                            podAffinityTerm:\n                              description: Required. A pod affinity term, associated\n                                with the corresponding weight.\n                              properties:\n                                labelSelector:\n                                  description: A label query over a set of resources,\n                                    in this case pods.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label\n                                        selector requirements. The requirements are\n                                        ANDed.\n                                      items:\n                                        description: A label selector requirement\n                                          is a selector that contains values, a key,\n                                          and an operator that relates the key and\n                                          values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that\n                                              the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's\n                                              relationship to a set of values. Valid\n                                              operators are In, NotIn, Exists and\n                                              DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string\n                                              values. If the operator is In or NotIn,\n                                              the values array must be non-empty.\n                                              If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This\n                                              array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value}\n                                        pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions,\n                                        whose key field is \"key\", the operator is\n                                        \"In\", and the values array contains only \"value\".\n                                        The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaceSelector:\n                                  description: A label query over the set of namespaces\n                                    that the term applies to. The term is applied\n                                    to the union of the namespaces selected by this\n                                    field and the ones listed in the namespaces field.\n                                    null selector and null or empty namespaces list\n                                    means \"this pod's namespace\". An empty selector\n                                    ({}) matches all namespaces.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label\n                                        selector requirements. The requirements are\n                                        ANDed.\n                                      items:\n                                        description: A label selector requirement\n                                          is a selector that contains values, a key,\n                                          and an operator that relates the key and\n                                          values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that\n                                              the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's\n                                              relationship to a set of values. Valid\n                                              operators are In, NotIn, Exists and\n                                              DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string\n                                              values. If the operator is In or NotIn,\n                                              the values array must be non-empty.\n                                              If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This\n                                              array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value}\n                                        pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions,\n                                        whose key field is \"key\", the operator is\n                                        \"In\", and the values array contains only \"value\".\n                                        The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaces:\n                                  description: namespaces specifies a static list\n                                    of namespace names that the term applies to. The\n                                    term is applied to the union of the namespaces\n                                    listed in this field and the ones selected by\n                                    namespaceSelector. null or empty namespaces list\n                                    and null namespaceSelector means \"this pod's namespace\".\n                                  items:\n                                    type: string\n                                  type: array\n                                topologyKey:\n                                  description: This pod should be co-located (affinity)\n                                    or not co-located (anti-affinity) with the pods\n                                    matching the labelSelector in the specified namespaces,\n                                    where co-located is defined as running on a node\n                                    whose value of the label with key topologyKey\n                                    matches that of any node on which any of the selected\n                                    pods is running. Empty topologyKey is not allowed.\n                                  type: string\n                              required:\n                              - topologyKey\n                              type: object\n                            weight:\n                              description: weight associated with matching the corresponding\n                                podAffinityTerm, in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - podAffinityTerm\n                          - weight\n                          type: object\n                        type: array\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: If the anti-affinity requirements specified by\n                          this field are not met at scheduling time, the pod will\n                          not be scheduled onto the node. If the anti-affinity requirements\n                          specified by this field cease to be met at some point during\n                          pod execution (e.g. due to a pod label update), the system\n                          may or may not try to eventually evict the pod from its\n                          node. When there are multiple elements, the lists of nodes\n                          corresponding to each podAffinityTerm are intersected, i.e.\n                          all terms must be satisfied.\n                        items:\n                          description: Defines a set of pods (namely those matching\n                            the labelSelector relative to the given namespace(s))\n                            that this pod should be co-located (affinity) or not co-located\n                            (anti-affinity) with, where co-located is defined as running\n                            on a node whose value of the label with key <topologyKey>\n                            matches that of any node on which a pod of the set of\n                            pods is running\n                          properties:\n                            labelSelector:\n                              description: A label query over a set of resources,\n                                in this case pods.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label\n                                    selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the\n                                          selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string\n                                          values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the\n                                          operator is Exists or DoesNotExist, the\n                                          values array must be empty. This array is\n                                          replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value}\n                                    pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions,\n                                    whose key field is \"key\", the operator is \"In\",\n                                    and the values array contains only \"value\". The\n                                    requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaceSelector:\n                              description: A label query over the set of namespaces\n                                that the term applies to. The term is applied to the\n                                union of the namespaces selected by this field and\n                                the ones listed in the namespaces field. null selector\n                                and null or empty namespaces list means \"this pod's\n                                namespace\". An empty selector ({}) matches all namespaces.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label\n                                    selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the\n                                          selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string\n                                          values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the\n                                          operator is Exists or DoesNotExist, the\n                                          values array must be empty. This array is\n                                          replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value}\n                                    pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions,\n                                    whose key field is \"key\", the operator is \"In\",\n                                    and the values array contains only \"value\". The\n                                    requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaces:\n                              description: namespaces specifies a static list of namespace\n                                names that the term applies to. The term is applied\n                                to the union of the namespaces listed in this field\n                                and the ones selected by namespaceSelector. null or\n                                empty namespaces list and null namespaceSelector means\n                                \"this pod's namespace\".\n                              items:\n                                type: string\n                              type: array\n                            topologyKey:\n                              description: This pod should be co-located (affinity)\n                                or not co-located (anti-affinity) with the pods matching\n                                the labelSelector in the specified namespaces, where\n                                co-located is defined as running on a node whose value\n                                of the label with key topologyKey matches that of\n                                any node on which any of the selected pods is running.\n                                Empty topologyKey is not allowed.\n                              type: string\n                          required:\n                          - topologyKey\n                          type: object\n                        type: array\n                    type: object\n                type: object\n              apiserverConfig:\n                description: 'APIServerConfig allows specifying a host and auth methods\n                  to access the Kuberntees API server. If null, Prometheus is assumed\n                  to run inside of the cluster: it will discover the API servers automatically\n                  and use the Pod''s CA certificate and bearer token file at /var/run/secrets/kubernetes.io/serviceaccount/.'\n                properties:\n                  authorization:\n                    description: \"Authorization section for the API server. \\n Cannot\n                      be set at the same time as `basicAuth`, `bearerToken`, or `bearerTokenFile`.\"\n                    properties:\n                      credentials:\n                        description: Selects a key of a Secret in the namespace that\n                          contains the credentials for authentication.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must\n                              be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must\n                              be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      credentialsFile:\n                        description: File to read a secret from, mutually exclusive\n                          with `credentials`.\n                        type: string\n                      type:\n                        description: \"Defines the authentication type. The value is\n                          case-insensitive. \\n \\\"Basic\\\" is not a supported value.\n                          \\n Default: \\\"Bearer\\\"\"\n                        type: string\n                    type: object\n                  basicAuth:\n                    description: \"BasicAuth configuration for the API server. \\n Cannot\n                      be set at the same time as `authorization`, `bearerToken`, or\n                      `bearerTokenFile`.\"\n                    properties:\n                      password:\n                        description: The secret in the service monitor namespace that\n                          contains the password for authentication.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must\n                              be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must\n                              be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      username:\n                        description: The secret in the service monitor namespace that\n                          contains the username for authentication.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must\n                              be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must\n                              be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  bearerToken:\n                    description: \"*Warning: this field shouldn't be used because the\n                      token value appears in clear-text. Prefer using `authorization`.*\n                      \\n *Deprecated: this will be removed in a future release.*\"\n                    type: string\n                  bearerTokenFile:\n                    description: \"File to read bearer token for accessing apiserver.\n                      \\n Cannot be set at the same time as `basicAuth`, `authorization`,\n                      or `bearerToken`. \\n *Deprecated: this will be removed in a\n                      future release. Prefer using `authorization`.*\"\n                    type: string\n                  host:\n                    description: Kubernetes API address consisting of a hostname or\n                      IP address followed by an optional port number.\n                    type: string\n                  tlsConfig:\n                    description: TLS Config to use for the API server.\n                    properties:\n                      ca:\n                        description: Certificate authority used when verifying server\n                          certificates.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the\n                              targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its\n                                  key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      caFile:\n                        description: Path to the CA cert in the Prometheus container\n                          to use for the targets.\n                        type: string\n                      cert:\n                        description: Client certificate to present when doing client-authentication.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the\n                              targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its\n                                  key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      certFile:\n                        description: Path to the client cert file in the Prometheus\n                          container for the targets.\n                        type: string\n                      insecureSkipVerify:\n                        description: Disable target certificate validation.\n                        type: boolean\n                      keyFile:\n                        description: Path to the client key file in the Prometheus\n                          container for the targets.\n                        type: string\n                      keySecret:\n                        description: Secret containing the client key file for the\n                          targets.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must\n                              be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must\n                              be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      serverName:\n                        description: Used to verify the hostname for the targets.\n                        type: string\n                    type: object\n                required:\n                - host\n                type: object\n              arbitraryFSAccessThroughSMs:\n                description: When true, ServiceMonitor, PodMonitor and Probe object\n                  are forbidden to reference arbitrary files on the file system of\n                  the 'prometheus' container. When a ServiceMonitor's endpoint specifies\n                  a `bearerTokenFile` value (e.g.  '/var/run/secrets/kubernetes.io/serviceaccount/token'),\n                  a malicious target can get access to the Prometheus service account's\n                  token in the Prometheus' scrape request. Setting `spec.arbitraryFSAccessThroughSM`\n                  to 'true' would prevent the attack. Users should instead provide\n                  the credentials using the `spec.bearerTokenSecret` field.\n                properties:\n                  deny:\n                    type: boolean\n                type: object\n              configMaps:\n                description: ConfigMaps is a list of ConfigMaps in the same namespace\n                  as the Prometheus object, which shall be mounted into the Prometheus\n                  Pods. Each ConfigMap is added to the StatefulSet definition as a\n                  volume named `configmap-<configmap-name>`. The ConfigMaps are mounted\n                  into /etc/prometheus/configmaps/<configmap-name> in the 'prometheus'\n                  container.\n                items:\n                  type: string\n                type: array\n              containers:\n                description: \"Containers allows injecting additional containers or\n                  modifying operator generated containers. This can be used to allow\n                  adding an authentication proxy to the Pods or to change the behavior\n                  of an operator generated container. Containers described here modify\n                  an operator generated container if they share the same name and\n                  modifications are done via a strategic merge patch. \\n The names\n                  of containers managed by the operator are: * `prometheus` * `config-reloader`\n                  * `thanos-sidecar` \\n Overriding containers is entirely outside\n                  the scope of what the maintainers will support and by doing so,\n                  you accept that this behaviour may break at any time without notice.\"\n                items:\n                  description: A single application container that you want to run\n                    within a pod.\n                  properties:\n                    args:\n                      description: 'Arguments to the entrypoint. The container image''s\n                        CMD is used if this is not provided. Variable references $(VAR_NAME)\n                        are expanded using the container''s environment. If a variable\n                        cannot be resolved, the reference in the input string will\n                        be unchanged. Double $$ are reduced to a single $, which allows\n                        for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\n                        produce the string literal \"$(VAR_NAME)\". Escaped references\n                        will never be expanded, regardless of whether the variable\n                        exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    command:\n                      description: 'Entrypoint array. Not executed within a shell.\n                        The container image''s ENTRYPOINT is used if this is not provided.\n                        Variable references $(VAR_NAME) are expanded using the container''s\n                        environment. If a variable cannot be resolved, the reference\n                        in the input string will be unchanged. Double $$ are reduced\n                        to a single $, which allows for escaping the $(VAR_NAME) syntax:\n                        i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\".\n                        Escaped references will never be expanded, regardless of whether\n                        the variable exists or not. Cannot be updated. More info:\n                        https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    env:\n                      description: List of environment variables to set in the container.\n                        Cannot be updated.\n                      items:\n                        description: EnvVar represents an environment variable present\n                          in a Container.\n                        properties:\n                          name:\n                            description: Name of the environment variable. Must be\n                              a C_IDENTIFIER.\n                            type: string\n                          value:\n                            description: 'Variable references $(VAR_NAME) are expanded\n                              using the previously defined environment variables in\n                              the container and any service environment variables.\n                              If a variable cannot be resolved, the reference in the\n                              input string will be unchanged. Double $$ are reduced\n                              to a single $, which allows for escaping the $(VAR_NAME)\n                              syntax: i.e. \"$$(VAR_NAME)\" will produce the string\n                              literal \"$(VAR_NAME)\". Escaped references will never\n                              be expanded, regardless of whether the variable exists\n                              or not. Defaults to \"\".'\n                            type: string\n                          valueFrom:\n                            description: Source for the environment variable's value.\n                              Cannot be used if value is not empty.\n                            properties:\n                              configMapKeyRef:\n                                description: Selects a key of a ConfigMap.\n                                properties:\n                                  key:\n                                    description: The key to select.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the ConfigMap or\n                                      its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              fieldRef:\n                                description: 'Selects a field of the pod: supports\n                                  metadata.name, metadata.namespace, `metadata.labels[''<KEY>'']`,\n                                  `metadata.annotations[''<KEY>'']`, spec.nodeName,\n                                  spec.serviceAccountName, status.hostIP, status.podIP,\n                                  status.podIPs.'\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath\n                                      is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the\n                                      specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              resourceFieldRef:\n                                description: 'Selects a resource of the container:\n                                  only resources limits and requests (limits.cpu,\n                                  limits.memory, limits.ephemeral-storage, requests.cpu,\n                                  requests.memory and requests.ephemeral-storage)\n                                  are currently supported.'\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes,\n                                      optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the\n                                      exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              secretKeyRef:\n                                description: Selects a key of a secret in the pod's\n                                  namespace\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            type: object\n                        required:\n                        - name\n                        type: object\n                      type: array\n                    envFrom:\n                      description: List of sources to populate environment variables\n                        in the container. The keys defined within a source must be\n                        a C_IDENTIFIER. All invalid keys will be reported as an event\n                        when the container is starting. When a key exists in multiple\n                        sources, the value associated with the last source will take\n                        precedence. Values defined by an Env with a duplicate key\n                        will take precedence. Cannot be updated.\n                      items:\n                        description: EnvFromSource represents the source of a set\n                          of ConfigMaps\n                        properties:\n                          configMapRef:\n                            description: The ConfigMap to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap must be\n                                  defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          prefix:\n                            description: An optional identifier to prepend to each\n                              key in the ConfigMap. Must be a C_IDENTIFIER.\n                            type: string\n                          secretRef:\n                            description: The Secret to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      type: array\n                    image:\n                      description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images\n                        This field is optional to allow higher level config management\n                        to default or override container images in workload controllers\n                        like Deployments and StatefulSets.'\n                      type: string\n                    imagePullPolicy:\n                      description: 'Image pull policy. One of Always, Never, IfNotPresent.\n                        Defaults to Always if :latest tag is specified, or IfNotPresent\n                        otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images'\n                      type: string\n                    lifecycle:\n                      description: Actions that the management system should take\n                        in response to container lifecycle events. Cannot be updated.\n                      properties:\n                        postStart:\n                          description: 'PostStart is called immediately after a container\n                            is created. If the handler fails, the container is terminated\n                            and restarted according to its restart policy. Other management\n                            of the container blocks until the hook completes. More\n                            info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute\n                                    inside the container, the working directory for\n                                    the command  is root ('/') in the container's\n                                    filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions\n                                    ('|', etc) won't work. To use a shell, you need\n                                    to explicitly call out to that shell. Exit status\n                                    of 0 is treated as live/healthy and non-zero is\n                                    unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to\n                                    the pod IP. You probably want to set \"Host\" in\n                                    httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request.\n                                    HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header\n                                      to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will\n                                          be canonicalized upon output, so case-variant\n                                          names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the\n                                    host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported\n                                as a LifecycleHandler and kept for the backward compatibility.\n                                There are no validation of this field and lifecycle\n                                hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to,\n                                    defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                        preStop:\n                          description: 'PreStop is called immediately before a container\n                            is terminated due to an API request or management event\n                            such as liveness/startup probe failure, preemption, resource\n                            contention, etc. The handler is not called if the container\n                            crashes or exits. The Pod''s termination grace period\n                            countdown begins before the PreStop hook is executed.\n                            Regardless of the outcome of the handler, the container\n                            will eventually terminate within the Pod''s termination\n                            grace period (unless delayed by finalizers). Other management\n                            of the container blocks until the hook completes or until\n                            the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute\n                                    inside the container, the working directory for\n                                    the command  is root ('/') in the container's\n                                    filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions\n                                    ('|', etc) won't work. To use a shell, you need\n                                    to explicitly call out to that shell. Exit status\n                                    of 0 is treated as live/healthy and non-zero is\n                                    unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to\n                                    the pod IP. You probably want to set \"Host\" in\n                                    httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request.\n                                    HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header\n                                      to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will\n                                          be canonicalized upon output, so case-variant\n                                          names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the\n                                    host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported\n                                as a LifecycleHandler and kept for the backward compatibility.\n                                There are no validation of this field and lifecycle\n                                hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to,\n                                    defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                      type: object\n                    livenessProbe:\n                      description: 'Periodic probe of container liveness. Container\n                        will be restarted if the probe fails. Cannot be updated. More\n                        info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    name:\n                      description: Name of the container specified as a DNS_LABEL.\n                        Each container in a pod must have a unique name (DNS_LABEL).\n                        Cannot be updated.\n                      type: string\n                    ports:\n                      description: List of ports to expose from the container. Not\n                        specifying a port here DOES NOT prevent that port from being\n                        exposed. Any port which is listening on the default \"0.0.0.0\"\n                        address inside a container will be accessible from the network.\n                        Modifying this array with strategic merge patch may corrupt\n                        the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255.\n                        Cannot be updated.\n                      items:\n                        description: ContainerPort represents a network port in a\n                          single container.\n                        properties:\n                          containerPort:\n                            description: Number of port to expose on the pod's IP\n                              address. This must be a valid port number, 0 < x < 65536.\n                            format: int32\n                            type: integer\n                          hostIP:\n                            description: What host IP to bind the external port to.\n                            type: string\n                          hostPort:\n                            description: Number of port to expose on the host. If\n                              specified, this must be a valid port number, 0 < x <\n                              65536. If HostNetwork is specified, this must match\n                              ContainerPort. Most containers do not need this.\n                            format: int32\n                            type: integer\n                          name:\n                            description: If specified, this must be an IANA_SVC_NAME\n                              and unique within the pod. Each named port in a pod\n                              must have a unique name. Name for the port that can\n                              be referred to by services.\n                            type: string\n                          protocol:\n                            default: TCP\n                            description: Protocol for port. Must be UDP, TCP, or SCTP.\n                              Defaults to \"TCP\".\n                            type: string\n                        required:\n                        - containerPort\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - containerPort\n                      - protocol\n                      x-kubernetes-list-type: map\n                    readinessProbe:\n                      description: 'Periodic probe of container service readiness.\n                        Container will be removed from service endpoints if the probe\n                        fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    resizePolicy:\n                      description: Resources resize policy for the container.\n                      items:\n                        description: ContainerResizePolicy represents resource resize\n                          policy for the container.\n                        properties:\n                          resourceName:\n                            description: 'Name of the resource to which this resource\n                              resize policy applies. Supported values: cpu, memory.'\n                            type: string\n                          restartPolicy:\n                            description: Restart policy to apply when specified resource\n                              is resized. If not specified, it defaults to NotRequired.\n                            type: string\n                        required:\n                        - resourceName\n                        - restartPolicy\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    resources:\n                      description: 'Compute Resources required by this container.\n                        Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                      properties:\n                        claims:\n                          description: \"Claims lists the names of resources, defined\n                            in spec.resourceClaims, that are used by this container.\n                            \\n This is an alpha field and requires enabling the DynamicResourceAllocation\n                            feature gate. \\n This field is immutable. It can only\n                            be set for containers.\"\n                          items:\n                            description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                            properties:\n                              name:\n                                description: Name must match the name of one entry\n                                  in pod.spec.resourceClaims of the Pod where this\n                                  field is used. It makes that resource available\n                                  inside a container.\n                                type: string\n                            required:\n                            - name\n                            type: object\n                          type: array\n                          x-kubernetes-list-map-keys:\n                          - name\n                          x-kubernetes-list-type: map\n                        limits:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Limits describes the maximum amount of compute\n                            resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                        requests:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Requests describes the minimum amount of compute\n                            resources required. If Requests is omitted for a container,\n                            it defaults to Limits if that is explicitly specified,\n                            otherwise to an implementation-defined value. Requests\n                            cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                      type: object\n                    securityContext:\n                      description: 'SecurityContext defines the security options the\n                        container should be run with. If set, the fields of SecurityContext\n                        override the equivalent fields of PodSecurityContext. More\n                        info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/'\n                      properties:\n                        allowPrivilegeEscalation:\n                          description: 'AllowPrivilegeEscalation controls whether\n                            a process can gain more privileges than its parent process.\n                            This bool directly controls if the no_new_privs flag will\n                            be set on the container process. AllowPrivilegeEscalation\n                            is true always when the container is: 1) run as Privileged\n                            2) has CAP_SYS_ADMIN Note that this field cannot be set\n                            when spec.os.name is windows.'\n                          type: boolean\n                        capabilities:\n                          description: The capabilities to add/drop when running containers.\n                            Defaults to the default set of capabilities granted by\n                            the container runtime. Note that this field cannot be\n                            set when spec.os.name is windows.\n                          properties:\n                            add:\n                              description: Added capabilities\n                              items:\n                                description: Capability represent POSIX capabilities\n                                  type\n                                type: string\n                              type: array\n                            drop:\n                              description: Removed capabilities\n                              items:\n                                description: Capability represent POSIX capabilities\n                                  type\n                                type: string\n                              type: array\n                          type: object\n                        privileged:\n                          description: Run container in privileged mode. Processes\n                            in privileged containers are essentially equivalent to\n                            root on the host. Defaults to false. Note that this field\n                            cannot be set when spec.os.name is windows.\n                          type: boolean\n                        procMount:\n                          description: procMount denotes the type of proc mount to\n                            use for the containers. The default is DefaultProcMount\n                            which uses the container runtime defaults for readonly\n                            paths and masked paths. This requires the ProcMountType\n                            feature flag to be enabled. Note that this field cannot\n                            be set when spec.os.name is windows.\n                          type: string\n                        readOnlyRootFilesystem:\n                          description: Whether this container has a read-only root\n                            filesystem. Default is false. Note that this field cannot\n                            be set when spec.os.name is windows.\n                          type: boolean\n                        runAsGroup:\n                          description: The GID to run the entrypoint of the container\n                            process. Uses runtime default if unset. May also be set\n                            in PodSecurityContext.  If set in both SecurityContext\n                            and PodSecurityContext, the value specified in SecurityContext\n                            takes precedence. Note that this field cannot be set when\n                            spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        runAsNonRoot:\n                          description: Indicates that the container must run as a\n                            non-root user. If true, the Kubelet will validate the\n                            image at runtime to ensure that it does not run as UID\n                            0 (root) and fail to start the container if it does. If\n                            unset or false, no such validation will be performed.\n                            May also be set in PodSecurityContext.  If set in both\n                            SecurityContext and PodSecurityContext, the value specified\n                            in SecurityContext takes precedence.\n                          type: boolean\n                        runAsUser:\n                          description: The UID to run the entrypoint of the container\n                            process. Defaults to user specified in image metadata\n                            if unspecified. May also be set in PodSecurityContext.  If\n                            set in both SecurityContext and PodSecurityContext, the\n                            value specified in SecurityContext takes precedence. Note\n                            that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        seLinuxOptions:\n                          description: The SELinux context to be applied to the container.\n                            If unspecified, the container runtime will allocate a\n                            random SELinux context for each container.  May also be\n                            set in PodSecurityContext.  If set in both SecurityContext\n                            and PodSecurityContext, the value specified in SecurityContext\n                            takes precedence. Note that this field cannot be set when\n                            spec.os.name is windows.\n                          properties:\n                            level:\n                              description: Level is SELinux level label that applies\n                                to the container.\n                              type: string\n                            role:\n                              description: Role is a SELinux role label that applies\n                                to the container.\n                              type: string\n                            type:\n                              description: Type is a SELinux type label that applies\n                                to the container.\n                              type: string\n                            user:\n                              description: User is a SELinux user label that applies\n                                to the container.\n                              type: string\n                          type: object\n                        seccompProfile:\n                          description: The seccomp options to use by this container.\n                            If seccomp options are provided at both the pod & container\n                            level, the container options override the pod options.\n                            Note that this field cannot be set when spec.os.name is\n                            windows.\n                          properties:\n                            localhostProfile:\n                              description: localhostProfile indicates a profile defined\n                                in a file on the node should be used. The profile\n                                must be preconfigured on the node to work. Must be\n                                a descending path, relative to the kubelet's configured\n                                seccomp profile location. Must only be set if type\n                                is \"Localhost\".\n                              type: string\n                            type:\n                              description: \"type indicates which kind of seccomp profile\n                                will be applied. Valid options are: \\n Localhost -\n                                a profile defined in a file on the node should be\n                                used. RuntimeDefault - the container runtime default\n                                profile should be used. Unconfined - no profile should\n                                be applied.\"\n                              type: string\n                          required:\n                          - type\n                          type: object\n                        windowsOptions:\n                          description: The Windows specific settings applied to all\n                            containers. If unspecified, the options from the PodSecurityContext\n                            will be used. If set in both SecurityContext and PodSecurityContext,\n                            the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is\n                            linux.\n                          properties:\n                            gmsaCredentialSpec:\n                              description: GMSACredentialSpec is where the GMSA admission\n                                webhook (https://github.com/kubernetes-sigs/windows-gmsa)\n                                inlines the contents of the GMSA credential spec named\n                                by the GMSACredentialSpecName field.\n                              type: string\n                            gmsaCredentialSpecName:\n                              description: GMSACredentialSpecName is the name of the\n                                GMSA credential spec to use.\n                              type: string\n                            hostProcess:\n                              description: HostProcess determines if a container should\n                                be run as a 'Host Process' container. This field is\n                                alpha-level and will only be honored by components\n                                that enable the WindowsHostProcessContainers feature\n                                flag. Setting this field without the feature flag\n                                will result in errors when validating the Pod. All\n                                of a Pod's containers must have the same effective\n                                HostProcess value (it is not allowed to have a mix\n                                of HostProcess containers and non-HostProcess containers).  In\n                                addition, if HostProcess is true then HostNetwork\n                                must also be set to true.\n                              type: boolean\n                            runAsUserName:\n                              description: The UserName in Windows to run the entrypoint\n                                of the container process. Defaults to the user specified\n                                in image metadata if unspecified. May also be set\n                                in PodSecurityContext. If set in both SecurityContext\n                                and PodSecurityContext, the value specified in SecurityContext\n                                takes precedence.\n                              type: string\n                          type: object\n                      type: object\n                    startupProbe:\n                      description: 'StartupProbe indicates that the Pod has successfully\n                        initialized. If specified, no other probes are executed until\n                        this completes successfully. If this probe fails, the Pod\n                        will be restarted, just as if the livenessProbe failed. This\n                        can be used to provide different probe parameters at the beginning\n                        of a Pod''s lifecycle, when it might take a long time to load\n                        data or warm a cache, than during steady-state operation.\n                        This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    stdin:\n                      description: Whether this container should allocate a buffer\n                        for stdin in the container runtime. If this is not set, reads\n                        from stdin in the container will always result in EOF. Default\n                        is false.\n                      type: boolean\n                    stdinOnce:\n                      description: Whether the container runtime should close the\n                        stdin channel after it has been opened by a single attach.\n                        When stdin is true the stdin stream will remain open across\n                        multiple attach sessions. If stdinOnce is set to true, stdin\n                        is opened on container start, is empty until the first client\n                        attaches to stdin, and then remains open and accepts data\n                        until the client disconnects, at which time stdin is closed\n                        and remains closed until the container is restarted. If this\n                        flag is false, a container processes that reads from stdin\n                        will never receive an EOF. Default is false\n                      type: boolean\n                    terminationMessagePath:\n                      description: 'Optional: Path at which the file to which the\n                        container''s termination message will be written is mounted\n                        into the container''s filesystem. Message written is intended\n                        to be brief final status, such as an assertion failure message.\n                        Will be truncated by the node if greater than 4096 bytes.\n                        The total message length across all containers will be limited\n                        to 12kb. Defaults to /dev/termination-log. Cannot be updated.'\n                      type: string\n                    terminationMessagePolicy:\n                      description: Indicate how the termination message should be\n                        populated. File will use the contents of terminationMessagePath\n                        to populate the container status message on both success and\n                        failure. FallbackToLogsOnError will use the last chunk of\n                        container log output if the termination message file is empty\n                        and the container exited with an error. The log output is\n                        limited to 2048 bytes or 80 lines, whichever is smaller. Defaults\n                        to File. Cannot be updated.\n                      type: string\n                    tty:\n                      description: Whether this container should allocate a TTY for\n                        itself, also requires 'stdin' to be true. Default is false.\n                      type: boolean\n                    volumeDevices:\n                      description: volumeDevices is the list of block devices to be\n                        used by the container.\n                      items:\n                        description: volumeDevice describes a mapping of a raw block\n                          device within a container.\n                        properties:\n                          devicePath:\n                            description: devicePath is the path inside of the container\n                              that the device will be mapped to.\n                            type: string\n                          name:\n                            description: name must match the name of a persistentVolumeClaim\n                              in the pod\n                            type: string\n                        required:\n                        - devicePath\n                        - name\n                        type: object\n                      type: array\n                    volumeMounts:\n                      description: Pod volumes to mount into the container's filesystem.\n                        Cannot be updated.\n                      items:\n                        description: VolumeMount describes a mounting of a Volume\n                          within a container.\n                        properties:\n                          mountPath:\n                            description: Path within the container at which the volume\n                              should be mounted.  Must not contain ':'.\n                            type: string\n                          mountPropagation:\n                            description: mountPropagation determines how mounts are\n                              propagated from the host to container and the other\n                              way around. When not set, MountPropagationNone is used.\n                              This field is beta in 1.10.\n                            type: string\n                          name:\n                            description: This must match the Name of a Volume.\n                            type: string\n                          readOnly:\n                            description: Mounted read-only if true, read-write otherwise\n                              (false or unspecified). Defaults to false.\n                            type: boolean\n                          subPath:\n                            description: Path within the volume from which the container's\n                              volume should be mounted. Defaults to \"\" (volume's root).\n                            type: string\n                          subPathExpr:\n                            description: Expanded path within the volume from which\n                              the container's volume should be mounted. Behaves similarly\n                              to SubPath but environment variable references $(VAR_NAME)\n                              are expanded using the container's environment. Defaults\n                              to \"\" (volume's root). SubPathExpr and SubPath are mutually\n                              exclusive.\n                            type: string\n                        required:\n                        - mountPath\n                        - name\n                        type: object\n                      type: array\n                    workingDir:\n                      description: Container's working directory. If not specified,\n                        the container runtime's default will be used, which might\n                        be configured in the container image. Cannot be updated.\n                      type: string\n                  required:\n                  - name\n                  type: object\n                type: array\n              enableFeatures:\n                description: \"Enable access to Prometheus feature flags. By default,\n                  no features are enabled. \\n Enabling features which are disabled\n                  by default is entirely outside the scope of what the maintainers\n                  will support and by doing so, you accept that this behaviour may\n                  break at any time without notice. \\n For more information see https://prometheus.io/docs/prometheus/latest/feature_flags/\"\n                items:\n                  type: string\n                type: array\n              enableRemoteWriteReceiver:\n                description: \"Enable Prometheus to be used as a receiver for the Prometheus\n                  remote write protocol. \\n WARNING: This is not considered an efficient\n                  way of ingesting samples. Use it with caution for specific low-volume\n                  use cases. It is not suitable for replacing the ingestion via scraping\n                  and turning Prometheus into a push-based metrics collection system.\n                  For more information see https://prometheus.io/docs/prometheus/latest/querying/api/#remote-write-receiver\n                  \\n It requires Prometheus >= v2.33.0.\"\n                type: boolean\n              enforcedBodySizeLimit:\n                description: \"When defined, enforcedBodySizeLimit specifies a global\n                  limit on the size of uncompressed response body that will be accepted\n                  by Prometheus. Targets responding with a body larger than this many\n                  bytes will cause the scrape to fail. \\n It requires Prometheus >=\n                  v2.28.0.\"\n                pattern: (^0|([0-9]*[.])?[0-9]+((K|M|G|T|E|P)i?)?B)$\n                type: string\n              enforcedLabelLimit:\n                description: \"When defined, enforcedLabelLimit specifies a global\n                  limit on the number of labels per sample. The value overrides any\n                  `spec.labelLimit` set by ServiceMonitor, PodMonitor, Probe objects\n                  unless `spec.labelLimit` is greater than zero and less than `spec.enforcedLabelLimit`.\n                  \\n It requires Prometheus >= v2.27.0.\"\n                format: int64\n                type: integer\n              enforcedLabelNameLengthLimit:\n                description: \"When defined, enforcedLabelNameLengthLimit specifies\n                  a global limit on the length of labels name per sample. The value\n                  overrides any `spec.labelNameLengthLimit` set by ServiceMonitor,\n                  PodMonitor, Probe objects unless `spec.labelNameLengthLimit` is\n                  greater than zero and less than `spec.enforcedLabelNameLengthLimit`.\n                  \\n It requires Prometheus >= v2.27.0.\"\n                format: int64\n                type: integer\n              enforcedLabelValueLengthLimit:\n                description: \"When not null, enforcedLabelValueLengthLimit defines\n                  a global limit on the length of labels value per sample. The value\n                  overrides any `spec.labelValueLengthLimit` set by ServiceMonitor,\n                  PodMonitor, Probe objects unless `spec.labelValueLengthLimit` is\n                  greater than zero and less than `spec.enforcedLabelValueLengthLimit`.\n                  \\n It requires Prometheus >= v2.27.0.\"\n                format: int64\n                type: integer\n              enforcedNamespaceLabel:\n                description: \"When not empty, a label will be added to \\n 1. All metrics\n                  scraped from `ServiceMonitor`, `PodMonitor`, `Probe` and `ScrapeConfig`\n                  objects. 2. All metrics generated from recording rules defined in\n                  `PrometheusRule` objects. 3. All alerts generated from alerting\n                  rules defined in `PrometheusRule` objects. 4. All vector selectors\n                  of PromQL expressions defined in `PrometheusRule` objects. \\n The\n                  label will not added for objects referenced in `spec.excludedFromEnforcement`.\n                  \\n The label's name is this field's value. The label's value is\n                  the namespace of the `ServiceMonitor`, `PodMonitor`, `Probe` or\n                  `PrometheusRule` object.\"\n                type: string\n              enforcedSampleLimit:\n                description: \"When defined, enforcedSampleLimit specifies a global\n                  limit on the number of scraped samples that will be accepted. This\n                  overrides any `spec.sampleLimit` set by ServiceMonitor, PodMonitor,\n                  Probe objects unless `spec.sampleLimit` is greater than zero and\n                  less than than `spec.enforcedSampleLimit`. \\n It is meant to be\n                  used by admins to keep the overall number of samples/series under\n                  a desired limit.\"\n                format: int64\n                type: integer\n              enforcedTargetLimit:\n                description: \"When defined, enforcedTargetLimit specifies a global\n                  limit on the number of scraped targets. The value overrides any\n                  `spec.targetLimit` set by ServiceMonitor, PodMonitor, Probe objects\n                  unless `spec.targetLimit` is greater than zero and less than `spec.enforcedTargetLimit`.\n                  \\n It is meant to be used by admins to to keep the overall number\n                  of targets under a desired limit.\"\n                format: int64\n                type: integer\n              excludedFromEnforcement:\n                description: \"List of references to PodMonitor, ServiceMonitor, Probe\n                  and PrometheusRule objects to be excluded from enforcing a namespace\n                  label of origin. \\n It is only applicable if `spec.enforcedNamespaceLabel`\n                  set to true.\"\n                items:\n                  description: ObjectReference references a PodMonitor, ServiceMonitor,\n                    Probe or PrometheusRule object.\n                  properties:\n                    group:\n                      default: monitoring.coreos.com\n                      description: Group of the referent. When not specified, it defaults\n                        to `monitoring.coreos.com`\n                      enum:\n                      - monitoring.coreos.com\n                      type: string\n                    name:\n                      description: Name of the referent. When not set, all resources\n                        in the namespace are matched.\n                      type: string\n                    namespace:\n                      description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'\n                      minLength: 1\n                      type: string\n                    resource:\n                      description: Resource of the referent.\n                      enum:\n                      - prometheusrules\n                      - servicemonitors\n                      - podmonitors\n                      - probes\n                      type: string\n                  required:\n                  - namespace\n                  - resource\n                  type: object\n                type: array\n              externalLabels:\n                additionalProperties:\n                  type: string\n                description: The labels to add to any time series or alerts when communicating\n                  with external systems (federation, remote storage, Alertmanager).\n                  Labels defined by `spec.replicaExternalLabelName` and `spec.prometheusExternalLabelName`\n                  take precedence over this list.\n                type: object\n              externalUrl:\n                description: The external URL under which the Prometheus service is\n                  externally available. This is necessary to generate correct URLs\n                  (for instance if Prometheus is accessible behind an Ingress resource).\n                type: string\n              hostAliases:\n                description: Optional list of hosts and IPs that will be injected\n                  into the Pod's hosts file if specified.\n                items:\n                  description: HostAlias holds the mapping between IP and hostnames\n                    that will be injected as an entry in the pod's hosts file.\n                  properties:\n                    hostnames:\n                      description: Hostnames for the above IP address.\n                      items:\n                        type: string\n                      type: array\n                    ip:\n                      description: IP address of the host file entry.\n                      type: string\n                  required:\n                  - hostnames\n                  - ip\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - ip\n                x-kubernetes-list-type: map\n              hostNetwork:\n                description: \"Use the host's network namespace if true. \\n Make sure\n                  to understand the security implications if you want to enable it\n                  (https://kubernetes.io/docs/concepts/configuration/overview/). \\n\n                  When hostNetwork is enabled, this will set the DNS policy to `ClusterFirstWithHostNet`\n                  automatically.\"\n                type: boolean\n              ignoreNamespaceSelectors:\n                description: When true, `spec.namespaceSelector` from all PodMonitor,\n                  ServiceMonitor and Probe objects will be ignored. They will only\n                  discover targets within the namespace of the PodMonitor, ServiceMonitor\n                  and Probe objec.\n                type: boolean\n              image:\n                description: \"Container image name for Prometheus. If specified, it\n                  takes precedence over the `spec.baseImage`, `spec.tag` and `spec.sha`\n                  fields. \\n Specifying `spec.version` is still necessary to ensure\n                  the Prometheus Operator knows which version of Prometheus is being\n                  configured. \\n If neither `spec.image` nor `spec.baseImage` are\n                  defined, the operator will use the latest upstream version of Prometheus\n                  available at the time when the operator was released.\"\n                type: string\n              imagePullPolicy:\n                description: Image pull policy for the 'prometheus', 'init-config-reloader'\n                  and 'config-reloader' containers. See https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy\n                  for more details.\n                enum:\n                - \"\"\n                - Always\n                - Never\n                - IfNotPresent\n                type: string\n              imagePullSecrets:\n                description: An optional list of references to Secrets in the same\n                  namespace to use for pulling images from registries. See http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod\n                items:\n                  description: LocalObjectReference contains enough information to\n                    let you locate the referenced object inside the same namespace.\n                  properties:\n                    name:\n                      description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                        TODO: Add other useful fields. apiVersion, kind, uid?'\n                      type: string\n                  type: object\n                  x-kubernetes-map-type: atomic\n                type: array\n              initContainers:\n                description: \"InitContainers allows injecting initContainers to the\n                  Pod definition. Those can be used to e.g.  fetch secrets for injection\n                  into the Prometheus configuration from external sources. Any errors\n                  during the execution of an initContainer will lead to a restart\n                  of the Pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n                  InitContainers described here modify an operator generated init\n                  containers if they share the same name and modifications are done\n                  via a strategic merge patch. \\n The names of init container name\n                  managed by the operator are: * `init-config-reloader`. \\n Overriding\n                  init containers is entirely outside the scope of what the maintainers\n                  will support and by doing so, you accept that this behaviour may\n                  break at any time without notice.\"\n                items:\n                  description: A single application container that you want to run\n                    within a pod.\n                  properties:\n                    args:\n                      description: 'Arguments to the entrypoint. The container image''s\n                        CMD is used if this is not provided. Variable references $(VAR_NAME)\n                        are expanded using the container''s environment. If a variable\n                        cannot be resolved, the reference in the input string will\n                        be unchanged. Double $$ are reduced to a single $, which allows\n                        for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\n                        produce the string literal \"$(VAR_NAME)\". Escaped references\n                        will never be expanded, regardless of whether the variable\n                        exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    command:\n                      description: 'Entrypoint array. Not executed within a shell.\n                        The container image''s ENTRYPOINT is used if this is not provided.\n                        Variable references $(VAR_NAME) are expanded using the container''s\n                        environment. If a variable cannot be resolved, the reference\n                        in the input string will be unchanged. Double $$ are reduced\n                        to a single $, which allows for escaping the $(VAR_NAME) syntax:\n                        i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\".\n                        Escaped references will never be expanded, regardless of whether\n                        the variable exists or not. Cannot be updated. More info:\n                        https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    env:\n                      description: List of environment variables to set in the container.\n                        Cannot be updated.\n                      items:\n                        description: EnvVar represents an environment variable present\n                          in a Container.\n                        properties:\n                          name:\n                            description: Name of the environment variable. Must be\n                              a C_IDENTIFIER.\n                            type: string\n                          value:\n                            description: 'Variable references $(VAR_NAME) are expanded\n                              using the previously defined environment variables in\n                              the container and any service environment variables.\n                              If a variable cannot be resolved, the reference in the\n                              input string will be unchanged. Double $$ are reduced\n                              to a single $, which allows for escaping the $(VAR_NAME)\n                              syntax: i.e. \"$$(VAR_NAME)\" will produce the string\n                              literal \"$(VAR_NAME)\". Escaped references will never\n                              be expanded, regardless of whether the variable exists\n                              or not. Defaults to \"\".'\n                            type: string\n                          valueFrom:\n                            description: Source for the environment variable's value.\n                              Cannot be used if value is not empty.\n                            properties:\n                              configMapKeyRef:\n                                description: Selects a key of a ConfigMap.\n                                properties:\n                                  key:\n                                    description: The key to select.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the ConfigMap or\n                                      its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              fieldRef:\n                                description: 'Selects a field of the pod: supports\n                                  metadata.name, metadata.namespace, `metadata.labels[''<KEY>'']`,\n                                  `metadata.annotations[''<KEY>'']`, spec.nodeName,\n                                  spec.serviceAccountName, status.hostIP, status.podIP,\n                                  status.podIPs.'\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath\n                                      is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the\n                                      specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              resourceFieldRef:\n                                description: 'Selects a resource of the container:\n                                  only resources limits and requests (limits.cpu,\n                                  limits.memory, limits.ephemeral-storage, requests.cpu,\n                                  requests.memory and requests.ephemeral-storage)\n                                  are currently supported.'\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes,\n                                      optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the\n                                      exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              secretKeyRef:\n                                description: Selects a key of a secret in the pod's\n                                  namespace\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            type: object\n                        required:\n                        - name\n                        type: object\n                      type: array\n                    envFrom:\n                      description: List of sources to populate environment variables\n                        in the container. The keys defined within a source must be\n                        a C_IDENTIFIER. All invalid keys will be reported as an event\n                        when the container is starting. When a key exists in multiple\n                        sources, the value associated with the last source will take\n                        precedence. Values defined by an Env with a duplicate key\n                        will take precedence. Cannot be updated.\n                      items:\n                        description: EnvFromSource represents the source of a set\n                          of ConfigMaps\n                        properties:\n                          configMapRef:\n                            description: The ConfigMap to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap must be\n                                  defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          prefix:\n                            description: An optional identifier to prepend to each\n                              key in the ConfigMap. Must be a C_IDENTIFIER.\n                            type: string\n                          secretRef:\n                            description: The Secret to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      type: array\n                    image:\n                      description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images\n                        This field is optional to allow higher level config management\n                        to default or override container images in workload controllers\n                        like Deployments and StatefulSets.'\n                      type: string\n                    imagePullPolicy:\n                      description: 'Image pull policy. One of Always, Never, IfNotPresent.\n                        Defaults to Always if :latest tag is specified, or IfNotPresent\n                        otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images'\n                      type: string\n                    lifecycle:\n                      description: Actions that the management system should take\n                        in response to container lifecycle events. Cannot be updated.\n                      properties:\n                        postStart:\n                          description: 'PostStart is called immediately after a container\n                            is created. If the handler fails, the container is terminated\n                            and restarted according to its restart policy. Other management\n                            of the container blocks until the hook completes. More\n                            info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute\n                                    inside the container, the working directory for\n                                    the command  is root ('/') in the container's\n                                    filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions\n                                    ('|', etc) won't work. To use a shell, you need\n                                    to explicitly call out to that shell. Exit status\n                                    of 0 is treated as live/healthy and non-zero is\n                                    unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to\n                                    the pod IP. You probably want to set \"Host\" in\n                                    httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request.\n                                    HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header\n                                      to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will\n                                          be canonicalized upon output, so case-variant\n                                          names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the\n                                    host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported\n                                as a LifecycleHandler and kept for the backward compatibility.\n                                There are no validation of this field and lifecycle\n                                hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to,\n                                    defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                        preStop:\n                          description: 'PreStop is called immediately before a container\n                            is terminated due to an API request or management event\n                            such as liveness/startup probe failure, preemption, resource\n                            contention, etc. The handler is not called if the container\n                            crashes or exits. The Pod''s termination grace period\n                            countdown begins before the PreStop hook is executed.\n                            Regardless of the outcome of the handler, the container\n                            will eventually terminate within the Pod''s termination\n                            grace period (unless delayed by finalizers). Other management\n                            of the container blocks until the hook completes or until\n                            the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute\n                                    inside the container, the working directory for\n                                    the command  is root ('/') in the container's\n                                    filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions\n                                    ('|', etc) won't work. To use a shell, you need\n                                    to explicitly call out to that shell. Exit status\n                                    of 0 is treated as live/healthy and non-zero is\n                                    unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to\n                                    the pod IP. You probably want to set \"Host\" in\n                                    httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request.\n                                    HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header\n                                      to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will\n                                          be canonicalized upon output, so case-variant\n                                          names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the\n                                    host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported\n                                as a LifecycleHandler and kept for the backward compatibility.\n                                There are no validation of this field and lifecycle\n                                hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to,\n                                    defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                      type: object\n                    livenessProbe:\n                      description: 'Periodic probe of container liveness. Container\n                        will be restarted if the probe fails. Cannot be updated. More\n                        info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    name:\n                      description: Name of the container specified as a DNS_LABEL.\n                        Each container in a pod must have a unique name (DNS_LABEL).\n                        Cannot be updated.\n                      type: string\n                    ports:\n                      description: List of ports to expose from the container. Not\n                        specifying a port here DOES NOT prevent that port from being\n                        exposed. Any port which is listening on the default \"0.0.0.0\"\n                        address inside a container will be accessible from the network.\n                        Modifying this array with strategic merge patch may corrupt\n                        the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255.\n                        Cannot be updated.\n                      items:\n                        description: ContainerPort represents a network port in a\n                          single container.\n                        properties:\n                          containerPort:\n                            description: Number of port to expose on the pod's IP\n                              address. This must be a valid port number, 0 < x < 65536.\n                            format: int32\n                            type: integer\n                          hostIP:\n                            description: What host IP to bind the external port to.\n                            type: string\n                          hostPort:\n                            description: Number of port to expose on the host. If\n                              specified, this must be a valid port number, 0 < x <\n                              65536. If HostNetwork is specified, this must match\n                              ContainerPort. Most containers do not need this.\n                            format: int32\n                            type: integer\n                          name:\n                            description: If specified, this must be an IANA_SVC_NAME\n                              and unique within the pod. Each named port in a pod\n                              must have a unique name. Name for the port that can\n                              be referred to by services.\n                            type: string\n                          protocol:\n                            default: TCP\n                            description: Protocol for port. Must be UDP, TCP, or SCTP.\n                              Defaults to \"TCP\".\n                            type: string\n                        required:\n                        - containerPort\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - containerPort\n                      - protocol\n                      x-kubernetes-list-type: map\n                    readinessProbe:\n                      description: 'Periodic probe of container service readiness.\n                        Container will be removed from service endpoints if the probe\n                        fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    resizePolicy:\n                      description: Resources resize policy for the container.\n                      items:\n                        description: ContainerResizePolicy represents resource resize\n                          policy for the container.\n                        properties:\n                          resourceName:\n                            description: 'Name of the resource to which this resource\n                              resize policy applies. Supported values: cpu, memory.'\n                            type: string\n                          restartPolicy:\n                            description: Restart policy to apply when specified resource\n                              is resized. If not specified, it defaults to NotRequired.\n                            type: string\n                        required:\n                        - resourceName\n                        - restartPolicy\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    resources:\n                      description: 'Compute Resources required by this container.\n                        Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                      properties:\n                        claims:\n                          description: \"Claims lists the names of resources, defined\n                            in spec.resourceClaims, that are used by this container.\n                            \\n This is an alpha field and requires enabling the DynamicResourceAllocation\n                            feature gate. \\n This field is immutable. It can only\n                            be set for containers.\"\n                          items:\n                            description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                            properties:\n                              name:\n                                description: Name must match the name of one entry\n                                  in pod.spec.resourceClaims of the Pod where this\n                                  field is used. It makes that resource available\n                                  inside a container.\n                                type: string\n                            required:\n                            - name\n                            type: object\n                          type: array\n                          x-kubernetes-list-map-keys:\n                          - name\n                          x-kubernetes-list-type: map\n                        limits:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Limits describes the maximum amount of compute\n                            resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                        requests:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Requests describes the minimum amount of compute\n                            resources required. If Requests is omitted for a container,\n                            it defaults to Limits if that is explicitly specified,\n                            otherwise to an implementation-defined value. Requests\n                            cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                      type: object\n                    securityContext:\n                      description: 'SecurityContext defines the security options the\n                        container should be run with. If set, the fields of SecurityContext\n                        override the equivalent fields of PodSecurityContext. More\n                        info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/'\n                      properties:\n                        allowPrivilegeEscalation:\n                          description: 'AllowPrivilegeEscalation controls whether\n                            a process can gain more privileges than its parent process.\n                            This bool directly controls if the no_new_privs flag will\n                            be set on the container process. AllowPrivilegeEscalation\n                            is true always when the container is: 1) run as Privileged\n                            2) has CAP_SYS_ADMIN Note that this field cannot be set\n                            when spec.os.name is windows.'\n                          type: boolean\n                        capabilities:\n                          description: The capabilities to add/drop when running containers.\n                            Defaults to the default set of capabilities granted by\n                            the container runtime. Note that this field cannot be\n                            set when spec.os.name is windows.\n                          properties:\n                            add:\n                              description: Added capabilities\n                              items:\n                                description: Capability represent POSIX capabilities\n                                  type\n                                type: string\n                              type: array\n                            drop:\n                              description: Removed capabilities\n                              items:\n                                description: Capability represent POSIX capabilities\n                                  type\n                                type: string\n                              type: array\n                          type: object\n                        privileged:\n                          description: Run container in privileged mode. Processes\n                            in privileged containers are essentially equivalent to\n                            root on the host. Defaults to false. Note that this field\n                            cannot be set when spec.os.name is windows.\n                          type: boolean\n                        procMount:\n                          description: procMount denotes the type of proc mount to\n                            use for the containers. The default is DefaultProcMount\n                            which uses the container runtime defaults for readonly\n                            paths and masked paths. This requires the ProcMountType\n                            feature flag to be enabled. Note that this field cannot\n                            be set when spec.os.name is windows.\n                          type: string\n                        readOnlyRootFilesystem:\n                          description: Whether this container has a read-only root\n                            filesystem. Default is false. Note that this field cannot\n                            be set when spec.os.name is windows.\n                          type: boolean\n                        runAsGroup:\n                          description: The GID to run the entrypoint of the container\n                            process. Uses runtime default if unset. May also be set\n                            in PodSecurityContext.  If set in both SecurityContext\n                            and PodSecurityContext, the value specified in SecurityContext\n                            takes precedence. Note that this field cannot be set when\n                            spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        runAsNonRoot:\n                          description: Indicates that the container must run as a\n                            non-root user. If true, the Kubelet will validate the\n                            image at runtime to ensure that it does not run as UID\n                            0 (root) and fail to start the container if it does. If\n                            unset or false, no such validation will be performed.\n                            May also be set in PodSecurityContext.  If set in both\n                            SecurityContext and PodSecurityContext, the value specified\n                            in SecurityContext takes precedence.\n                          type: boolean\n                        runAsUser:\n                          description: The UID to run the entrypoint of the container\n                            process. Defaults to user specified in image metadata\n                            if unspecified. May also be set in PodSecurityContext.  If\n                            set in both SecurityContext and PodSecurityContext, the\n                            value specified in SecurityContext takes precedence. Note\n                            that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        seLinuxOptions:\n                          description: The SELinux context to be applied to the container.\n                            If unspecified, the container runtime will allocate a\n                            random SELinux context for each container.  May also be\n                            set in PodSecurityContext.  If set in both SecurityContext\n                            and PodSecurityContext, the value specified in SecurityContext\n                            takes precedence. Note that this field cannot be set when\n                            spec.os.name is windows.\n                          properties:\n                            level:\n                              description: Level is SELinux level label that applies\n                                to the container.\n                              type: string\n                            role:\n                              description: Role is a SELinux role label that applies\n                                to the container.\n                              type: string\n                            type:\n                              description: Type is a SELinux type label that applies\n                                to the container.\n                              type: string\n                            user:\n                              description: User is a SELinux user label that applies\n                                to the container.\n                              type: string\n                          type: object\n                        seccompProfile:\n                          description: The seccomp options to use by this container.\n                            If seccomp options are provided at both the pod & container\n                            level, the container options override the pod options.\n                            Note that this field cannot be set when spec.os.name is\n                            windows.\n                          properties:\n                            localhostProfile:\n                              description: localhostProfile indicates a profile defined\n                                in a file on the node should be used. The profile\n                                must be preconfigured on the node to work. Must be\n                                a descending path, relative to the kubelet's configured\n                                seccomp profile location. Must only be set if type\n                                is \"Localhost\".\n                              type: string\n                            type:\n                              description: \"type indicates which kind of seccomp profile\n                                will be applied. Valid options are: \\n Localhost -\n                                a profile defined in a file on the node should be\n                                used. RuntimeDefault - the container runtime default\n                                profile should be used. Unconfined - no profile should\n                                be applied.\"\n                              type: string\n                          required:\n                          - type\n                          type: object\n                        windowsOptions:\n                          description: The Windows specific settings applied to all\n                            containers. If unspecified, the options from the PodSecurityContext\n                            will be used. If set in both SecurityContext and PodSecurityContext,\n                            the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is\n                            linux.\n                          properties:\n                            gmsaCredentialSpec:\n                              description: GMSACredentialSpec is where the GMSA admission\n                                webhook (https://github.com/kubernetes-sigs/windows-gmsa)\n                                inlines the contents of the GMSA credential spec named\n                                by the GMSACredentialSpecName field.\n                              type: string\n                            gmsaCredentialSpecName:\n                              description: GMSACredentialSpecName is the name of the\n                                GMSA credential spec to use.\n                              type: string\n                            hostProcess:\n                              description: HostProcess determines if a container should\n                                be run as a 'Host Process' container. This field is\n                                alpha-level and will only be honored by components\n                                that enable the WindowsHostProcessContainers feature\n                                flag. Setting this field without the feature flag\n                                will result in errors when validating the Pod. All\n                                of a Pod's containers must have the same effective\n                                HostProcess value (it is not allowed to have a mix\n                                of HostProcess containers and non-HostProcess containers).  In\n                                addition, if HostProcess is true then HostNetwork\n                                must also be set to true.\n                              type: boolean\n                            runAsUserName:\n                              description: The UserName in Windows to run the entrypoint\n                                of the container process. Defaults to the user specified\n                                in image metadata if unspecified. May also be set\n                                in PodSecurityContext. If set in both SecurityContext\n                                and PodSecurityContext, the value specified in SecurityContext\n                                takes precedence.\n                              type: string\n                          type: object\n                      type: object\n                    startupProbe:\n                      description: 'StartupProbe indicates that the Pod has successfully\n                        initialized. If specified, no other probes are executed until\n                        this completes successfully. If this probe fails, the Pod\n                        will be restarted, just as if the livenessProbe failed. This\n                        can be used to provide different probe parameters at the beginning\n                        of a Pod''s lifecycle, when it might take a long time to load\n                        data or warm a cache, than during steady-state operation.\n                        This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    stdin:\n                      description: Whether this container should allocate a buffer\n                        for stdin in the container runtime. If this is not set, reads\n                        from stdin in the container will always result in EOF. Default\n                        is false.\n                      type: boolean\n                    stdinOnce:\n                      description: Whether the container runtime should close the\n                        stdin channel after it has been opened by a single attach.\n                        When stdin is true the stdin stream will remain open across\n                        multiple attach sessions. If stdinOnce is set to true, stdin\n                        is opened on container start, is empty until the first client\n                        attaches to stdin, and then remains open and accepts data\n                        until the client disconnects, at which time stdin is closed\n                        and remains closed until the container is restarted. If this\n                        flag is false, a container processes that reads from stdin\n                        will never receive an EOF. Default is false\n                      type: boolean\n                    terminationMessagePath:\n                      description: 'Optional: Path at which the file to which the\n                        container''s termination message will be written is mounted\n                        into the container''s filesystem. Message written is intended\n                        to be brief final status, such as an assertion failure message.\n                        Will be truncated by the node if greater than 4096 bytes.\n                        The total message length across all containers will be limited\n                        to 12kb. Defaults to /dev/termination-log. Cannot be updated.'\n                      type: string\n                    terminationMessagePolicy:\n                      description: Indicate how the termination message should be\n                        populated. File will use the contents of terminationMessagePath\n                        to populate the container status message on both success and\n                        failure. FallbackToLogsOnError will use the last chunk of\n                        container log output if the termination message file is empty\n                        and the container exited with an error. The log output is\n                        limited to 2048 bytes or 80 lines, whichever is smaller. Defaults\n                        to File. Cannot be updated.\n                      type: string\n                    tty:\n                      description: Whether this container should allocate a TTY for\n                        itself, also requires 'stdin' to be true. Default is false.\n                      type: boolean\n                    volumeDevices:\n                      description: volumeDevices is the list of block devices to be\n                        used by the container.\n                      items:\n                        description: volumeDevice describes a mapping of a raw block\n                          device within a container.\n                        properties:\n                          devicePath:\n                            description: devicePath is the path inside of the container\n                              that the device will be mapped to.\n                            type: string\n                          name:\n                            description: name must match the name of a persistentVolumeClaim\n                              in the pod\n                            type: string\n                        required:\n                        - devicePath\n                        - name\n                        type: object\n                      type: array\n                    volumeMounts:\n                      description: Pod volumes to mount into the container's filesystem.\n                        Cannot be updated.\n                      items:\n                        description: VolumeMount describes a mounting of a Volume\n                          within a container.\n                        properties:\n                          mountPath:\n                            description: Path within the container at which the volume\n                              should be mounted.  Must not contain ':'.\n                            type: string\n                          mountPropagation:\n                            description: mountPropagation determines how mounts are\n                              propagated from the host to container and the other\n                              way around. When not set, MountPropagationNone is used.\n                              This field is beta in 1.10.\n                            type: string\n                          name:\n                            description: This must match the Name of a Volume.\n                            type: string\n                          readOnly:\n                            description: Mounted read-only if true, read-write otherwise\n                              (false or unspecified). Defaults to false.\n                            type: boolean\n                          subPath:\n                            description: Path within the volume from which the container's\n                              volume should be mounted. Defaults to \"\" (volume's root).\n                            type: string\n                          subPathExpr:\n                            description: Expanded path within the volume from which\n                              the container's volume should be mounted. Behaves similarly\n                              to SubPath but environment variable references $(VAR_NAME)\n                              are expanded using the container's environment. Defaults\n                              to \"\" (volume's root). SubPathExpr and SubPath are mutually\n                              exclusive.\n                            type: string\n                        required:\n                        - mountPath\n                        - name\n                        type: object\n                      type: array\n                    workingDir:\n                      description: Container's working directory. If not specified,\n                        the container runtime's default will be used, which might\n                        be configured in the container image. Cannot be updated.\n                      type: string\n                  required:\n                  - name\n                  type: object\n                type: array\n              listenLocal:\n                description: When true, the Prometheus server listens on the loopback\n                  address instead of the Pod IP's address.\n                type: boolean\n              logFormat:\n                description: Log format for Log level for Prometheus and the config-reloader\n                  sidecar.\n                enum:\n                - \"\"\n                - logfmt\n                - json\n                type: string\n              logLevel:\n                description: Log level for Prometheus and the config-reloader sidecar.\n                enum:\n                - \"\"\n                - debug\n                - info\n                - warn\n                - error\n                type: string\n              minReadySeconds:\n                description: \"Minimum number of seconds for which a newly created\n                  Pod should be ready without any of its container crashing for it\n                  to be considered available. Defaults to 0 (pod will be considered\n                  available as soon as it is ready) \\n This is an alpha field from\n                  kubernetes 1.22 until 1.24 which requires enabling the StatefulSetMinReadySeconds\n                  feature gate.\"\n                format: int32\n                type: integer\n              nodeSelector:\n                additionalProperties:\n                  type: string\n                description: Defines on which Nodes the Pods are scheduled.\n                type: object\n              overrideHonorLabels:\n                description: When true, Prometheus resolves label conflicts by renaming\n                  the labels in the scraped data to \"exported_<label value>\" for all\n                  targets created from service and pod monitors. Otherwise the HonorLabels\n                  field of the service or pod monitor applies.\n                type: boolean\n              overrideHonorTimestamps:\n                description: When true, Prometheus ignores the timestamps for all\n                  the targets created from service and pod monitors. Otherwise the\n                  HonorTimestamps field of the service or pod monitor applies.\n                type: boolean\n              paused:\n                description: When a Prometheus deployment is paused, no actions except\n                  for deletion will be performed on the underlying objects.\n                type: boolean\n              podMetadata:\n                description: PodMetadata configures labels and annotations which are\n                  propagated to the Prometheus pods.\n                properties:\n                  annotations:\n                    additionalProperties:\n                      type: string\n                    description: 'Annotations is an unstructured key value map stored\n                      with a resource that may be set by external tools to store and\n                      retrieve arbitrary metadata. They are not queryable and should\n                      be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations'\n                    type: object\n                  labels:\n                    additionalProperties:\n                      type: string\n                    description: 'Map of string keys and values that can be used to\n                      organize and categorize (scope and select) objects. May match\n                      selectors of replication controllers and services. More info:\n                      http://kubernetes.io/docs/user-guide/labels'\n                    type: object\n                  name:\n                    description: 'Name must be unique within a namespace. Is required\n                      when creating resources, although some resources may allow a\n                      client to request the generation of an appropriate name automatically.\n                      Name is primarily intended for creation idempotence and configuration\n                      definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names'\n                    type: string\n                type: object\n              podMonitorNamespaceSelector:\n                description: Namespaces to match for PodMonitors discovery. An empty\n                  label selector matches all namespaces. A null label selector matches\n                  the current namespace only.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              podMonitorSelector:\n                description: \"*Experimental* PodMonitors to be selected for target\n                  discovery. An empty label selector matches all objects. A null label\n                  selector matches no objects. \\n If `spec.serviceMonitorSelector`,\n                  `spec.podMonitorSelector`, `spec.probeSelector` and `spec.scrapeConfigSelector`\n                  are null, the Prometheus configuration is unmanaged. The Prometheus\n                  operator will ensure that the Prometheus configuration's Secret\n                  exists, but it is the responsibility of the user to provide the\n                  raw gzipped Prometheus configuration under the `prometheus.yaml.gz`\n                  key. This behavior is *deprecated* and will be removed in the next\n                  major version of the custom resource definition. It is recommended\n                  to use `spec.additionalScrapeConfigs` instead.\"\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              podTargetLabels:\n                description: PodTargetLabels are appended to the `spec.podTargetLabels`\n                  field of all PodMonitor and ServiceMonitor objects.\n                items:\n                  type: string\n                type: array\n              portName:\n                default: web\n                description: 'Port name used for the pods and governing service. Default:\n                  \"web\"'\n                type: string\n              priorityClassName:\n                description: Priority class assigned to the Pods.\n                type: string\n              probeNamespaceSelector:\n                description: '*Experimental* Namespaces to match for Probe discovery.\n                  An empty label selector matches all namespaces. A null label selector\n                  matches the current namespace only.'\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              probeSelector:\n                description: \"*Experimental* Probes to be selected for target discovery.\n                  An empty label selector matches all objects. A null label selector\n                  matches no objects. \\n If `spec.serviceMonitorSelector`, `spec.podMonitorSelector`,\n                  `spec.probeSelector` and `spec.scrapeConfigSelector` are null, the\n                  Prometheus configuration is unmanaged. The Prometheus operator will\n                  ensure that the Prometheus configuration's Secret exists, but it\n                  is the responsibility of the user to provide the raw gzipped Prometheus\n                  configuration under the `prometheus.yaml.gz` key. This behavior\n                  is *deprecated* and will be removed in the next major version of\n                  the custom resource definition. It is recommended to use `spec.additionalScrapeConfigs`\n                  instead.\"\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              prometheusExternalLabelName:\n                description: \"Name of Prometheus external label used to denote the\n                  Prometheus instance name. The external label will _not_ be added\n                  when the field is set to the empty string (`\\\"\\\"`). \\n Default:\n                  \\\"prometheus\\\"\"\n                type: string\n              remoteWrite:\n                description: Defines the list of remote write configurations.\n                items:\n                  description: RemoteWriteSpec defines the configuration to write\n                    samples from Prometheus to a remote endpoint.\n                  properties:\n                    authorization:\n                      description: \"Authorization section for the URL. \\n It requires\n                        Prometheus >= v2.26.0. \\n Cannot be set at the same time as\n                        `sigv4`, `basicAuth`, or `oauth2`.\"\n                      properties:\n                        credentials:\n                          description: Selects a key of a Secret in the namespace\n                            that contains the credentials for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        credentialsFile:\n                          description: File to read a secret from, mutually exclusive\n                            with `credentials`.\n                          type: string\n                        type:\n                          description: \"Defines the authentication type. The value\n                            is case-insensitive. \\n \\\"Basic\\\" is not a supported value.\n                            \\n Default: \\\"Bearer\\\"\"\n                          type: string\n                      type: object\n                    basicAuth:\n                      description: \"BasicAuth configuration for the URL. \\n Cannot\n                        be set at the same time as `sigv4`, `authorization`, or `oauth2`.\"\n                      properties:\n                        password:\n                          description: The secret in the service monitor namespace\n                            that contains the password for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        username:\n                          description: The secret in the service monitor namespace\n                            that contains the username for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      type: object\n                    bearerToken:\n                      description: \"*Warning: this field shouldn't be used because\n                        the token value appears in clear-text. Prefer using `authorization`.*\n                        \\n *Deprecated: this will be removed in a future release.*\"\n                      type: string\n                    bearerTokenFile:\n                      description: \"File from which to read bearer token for the URL.\n                        \\n *Deprecated: this will be removed in a future release.\n                        Prefer using `authorization`.*\"\n                      type: string\n                    headers:\n                      additionalProperties:\n                        type: string\n                      description: \"Custom HTTP headers to be sent along with each\n                        remote write request. Be aware that headers that are set by\n                        Prometheus itself can't be overwritten. \\n It requires Prometheus\n                        >= v2.25.0.\"\n                      type: object\n                    metadataConfig:\n                      description: MetadataConfig configures the sending of series\n                        metadata to the remote storage.\n                      properties:\n                        send:\n                          description: Defines whether metric metadata is sent to\n                            the remote storage or not.\n                          type: boolean\n                        sendInterval:\n                          description: Defines how frequently metric metadata is sent\n                            to the remote storage.\n                          pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                          type: string\n                      type: object\n                    name:\n                      description: \"The name of the remote write queue, it must be\n                        unique if specified. The name is used in metrics and logging\n                        in order to differentiate queues. \\n It requires Prometheus\n                        >= v2.15.0.\"\n                      type: string\n                    oauth2:\n                      description: \"OAuth2 configuration for the URL. \\n It requires\n                        Prometheus >= v2.27.0. \\n Cannot be set at the same time as\n                        `sigv4`, `authorization`, or `basicAuth`.\"\n                      properties:\n                        clientId:\n                          description: The secret or configmap containing the OAuth2\n                            client id\n                          properties:\n                            configMap:\n                              description: ConfigMap containing data to use for the\n                                targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its\n                                    key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must\n                                    be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key\n                                    must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        clientSecret:\n                          description: The secret containing the OAuth2 client secret\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        endpointParams:\n                          additionalProperties:\n                            type: string\n                          description: Parameters to append to the token URL\n                          type: object\n                        scopes:\n                          description: OAuth2 scopes used for the token request\n                          items:\n                            type: string\n                          type: array\n                        tokenUrl:\n                          description: The URL to fetch the token from\n                          minLength: 1\n                          type: string\n                      required:\n                      - clientId\n                      - clientSecret\n                      - tokenUrl\n                      type: object\n                    proxyUrl:\n                      description: Optional ProxyURL.\n                      type: string\n                    queueConfig:\n                      description: QueueConfig allows tuning of the remote write queue\n                        parameters.\n                      properties:\n                        batchSendDeadline:\n                          description: BatchSendDeadline is the maximum time a sample\n                            will wait in buffer.\n                          type: string\n                        capacity:\n                          description: Capacity is the number of samples to buffer\n                            per shard before we start dropping them.\n                          type: integer\n                        maxBackoff:\n                          description: MaxBackoff is the maximum retry delay.\n                          type: string\n                        maxRetries:\n                          description: MaxRetries is the maximum number of times to\n                            retry a batch on recoverable errors.\n                          type: integer\n                        maxSamplesPerSend:\n                          description: MaxSamplesPerSend is the maximum number of\n                            samples per send.\n                          type: integer\n                        maxShards:\n                          description: MaxShards is the maximum number of shards,\n                            i.e. amount of concurrency.\n                          type: integer\n                        minBackoff:\n                          description: MinBackoff is the initial retry delay. Gets\n                            doubled for every retry.\n                          type: string\n                        minShards:\n                          description: MinShards is the minimum number of shards,\n                            i.e. amount of concurrency.\n                          type: integer\n                        retryOnRateLimit:\n                          description: Retry upon receiving a 429 status code from\n                            the remote-write storage. This is experimental feature\n                            and might change in the future.\n                          type: boolean\n                      type: object\n                    remoteTimeout:\n                      description: Timeout for requests to the remote write endpoint.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    sendExemplars:\n                      description: \"Enables sending of exemplars over remote write.\n                        Note that exemplar-storage itself must be enabled using the\n                        `spec.enableFeature` option for exemplars to be scraped in\n                        the first place. \\n It requires Prometheus >= v2.27.0.\"\n                      type: boolean\n                    sendNativeHistograms:\n                      description: \"Enables sending of native histograms, also known\n                        as sparse histograms over remote write. \\n It requires Prometheus\n                        >= v2.40.0.\"\n                      type: boolean\n                    sigv4:\n                      description: \"Sigv4 allows to configures AWS's Signature Verification\n                        4 for the URL. \\n It requires Prometheus >= v2.26.0. \\n Cannot\n                        be set at the same time as `authorization`, `basicAuth`, or\n                        `oauth2`.\"\n                      properties:\n                        accessKey:\n                          description: AccessKey is the AWS API key. If not specified,\n                            the environment variable `AWS_ACCESS_KEY_ID` is used.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        profile:\n                          description: Profile is the named AWS profile used to authenticate.\n                          type: string\n                        region:\n                          description: Region is the AWS region. If blank, the region\n                            from the default credentials chain used.\n                          type: string\n                        roleArn:\n                          description: RoleArn is the named AWS profile used to authenticate.\n                          type: string\n                        secretKey:\n                          description: SecretKey is the AWS API secret. If not specified,\n                            the environment variable `AWS_SECRET_ACCESS_KEY` is used.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      type: object\n                    tlsConfig:\n                      description: TLS Config to use for the URL.\n                      properties:\n                        ca:\n                          description: Certificate authority used when verifying server\n                            certificates.\n                          properties:\n                            configMap:\n                              description: ConfigMap containing data to use for the\n                                targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its\n                                    key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must\n                                    be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key\n                                    must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        caFile:\n                          description: Path to the CA cert in the Prometheus container\n                            to use for the targets.\n                          type: string\n                        cert:\n                          description: Client certificate to present when doing client-authentication.\n                          properties:\n                            configMap:\n                              description: ConfigMap containing data to use for the\n                                targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its\n                                    key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must\n                                    be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key\n                                    must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        certFile:\n                          description: Path to the client cert file in the Prometheus\n                            container for the targets.\n                          type: string\n                        insecureSkipVerify:\n                          description: Disable target certificate validation.\n                          type: boolean\n                        keyFile:\n                          description: Path to the client key file in the Prometheus\n                            container for the targets.\n                          type: string\n                        keySecret:\n                          description: Secret containing the client key file for the\n                            targets.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        serverName:\n                          description: Used to verify the hostname for the targets.\n                          type: string\n                      type: object\n                    url:\n                      description: The URL of the endpoint to send samples to.\n                      type: string\n                    writeRelabelConfigs:\n                      description: The list of remote write relabel configurations.\n                      items:\n                        description: \"RelabelConfig allows dynamic rewriting of the\n                          label set for targets, alerts, scraped samples and remote\n                          write samples. \\n More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\"\n                        properties:\n                          action:\n                            default: replace\n                            description: \"Action to perform based on the regex matching.\n                              \\n `Uppercase` and `Lowercase` actions require Prometheus\n                              >= v2.36.0. `DropEqual` and `KeepEqual` actions require\n                              Prometheus >= v2.41.0. \\n Default: \\\"Replace\\\"\"\n                            enum:\n                            - replace\n                            - Replace\n                            - keep\n                            - Keep\n                            - drop\n                            - Drop\n                            - hashmod\n                            - HashMod\n                            - labelmap\n                            - LabelMap\n                            - labeldrop\n                            - LabelDrop\n                            - labelkeep\n                            - LabelKeep\n                            - lowercase\n                            - Lowercase\n                            - uppercase\n                            - Uppercase\n                            - keepequal\n                            - KeepEqual\n                            - dropequal\n                            - DropEqual\n                            type: string\n                          modulus:\n                            description: \"Modulus to take of the hash of the source\n                              label values. \\n Only applicable when the action is\n                              `HashMod`.\"\n                            format: int64\n                            type: integer\n                          regex:\n                            description: Regular expression against which the extracted\n                              value is matched.\n                            type: string\n                          replacement:\n                            description: \"Replacement value against which a Replace\n                              action is performed if the regular expression matches.\n                              \\n Regex capture groups are available.\"\n                            type: string\n                          separator:\n                            description: Separator is the string between concatenated\n                              SourceLabels.\n                            type: string\n                          sourceLabels:\n                            description: The source labels select values from existing\n                              labels. Their content is concatenated using the configured\n                              Separator and matched against the configured regular\n                              expression.\n                            items:\n                              description: LabelName is a valid Prometheus label name\n                                which may only contain ASCII letters, numbers, as\n                                well as underscores.\n                              pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$\n                              type: string\n                            type: array\n                          targetLabel:\n                            description: \"Label to which the resulting string is written\n                              in a replacement. \\n It is mandatory for `Replace`,\n                              `HashMod`, `Lowercase`, `Uppercase`, `KeepEqual` and\n                              `DropEqual` actions. \\n Regex capture groups are available.\"\n                            type: string\n                        type: object\n                      type: array\n                  required:\n                  - url\n                  type: object\n                type: array\n              replicaExternalLabelName:\n                description: \"Name of Prometheus external label used to denote the\n                  replica name. The external label will _not_ be added when the field\n                  is set to the empty string (`\\\"\\\"`). \\n Default: \\\"prometheus_replica\\\"\"\n                type: string\n              replicas:\n                description: \"Number of replicas of each shard to deploy for a Prometheus\n                  deployment. `spec.replicas` multiplied by `spec.shards` is the total\n                  number of Pods created. \\n Default: 1\"\n                format: int32\n                type: integer\n              resources:\n                description: Defines the resources requests and limits of the 'prometheus'\n                  container.\n                properties:\n                  claims:\n                    description: \"Claims lists the names of resources, defined in\n                      spec.resourceClaims, that are used by this container. \\n This\n                      is an alpha field and requires enabling the DynamicResourceAllocation\n                      feature gate. \\n This field is immutable. It can only be set\n                      for containers.\"\n                    items:\n                      description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                      properties:\n                        name:\n                          description: Name must match the name of one entry in pod.spec.resourceClaims\n                            of the Pod where this field is used. It makes that resource\n                            available inside a container.\n                          type: string\n                      required:\n                      - name\n                      type: object\n                    type: array\n                    x-kubernetes-list-map-keys:\n                    - name\n                    x-kubernetes-list-type: map\n                  limits:\n                    additionalProperties:\n                      anyOf:\n                      - type: integer\n                      - type: string\n                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                      x-kubernetes-int-or-string: true\n                    description: 'Limits describes the maximum amount of compute resources\n                      allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                    type: object\n                  requests:\n                    additionalProperties:\n                      anyOf:\n                      - type: integer\n                      - type: string\n                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                      x-kubernetes-int-or-string: true\n                    description: 'Requests describes the minimum amount of compute\n                      resources required. If Requests is omitted for a container,\n                      it defaults to Limits if that is explicitly specified, otherwise\n                      to an implementation-defined value. Requests cannot exceed Limits.\n                      More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                    type: object\n                type: object\n              routePrefix:\n                description: \"The route prefix Prometheus registers HTTP handlers\n                  for. \\n This is useful when using `spec.externalURL`, and a proxy\n                  is rewriting HTTP routes of a request, and the actual ExternalURL\n                  is still true, but the server serves requests under a different\n                  route prefix. For example for use with `kubectl proxy`.\"\n                type: string\n              scrapeConfigNamespaceSelector:\n                description: Namespaces to match for ScrapeConfig discovery. An empty\n                  label selector matches all namespaces. A null label selector matches\n                  the current current namespace only.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              scrapeConfigSelector:\n                description: \"*Experimental* ScrapeConfigs to be selected for target\n                  discovery. An empty label selector matches all objects. A null label\n                  selector matches no objects. \\n If `spec.serviceMonitorSelector`,\n                  `spec.podMonitorSelector`, `spec.probeSelector` and `spec.scrapeConfigSelector`\n                  are null, the Prometheus configuration is unmanaged. The Prometheus\n                  operator will ensure that the Prometheus configuration's Secret\n                  exists, but it is the responsibility of the user to provide the\n                  raw gzipped Prometheus configuration under the `prometheus.yaml.gz`\n                  key. This behavior is *deprecated* and will be removed in the next\n                  major version of the custom resource definition. It is recommended\n                  to use `spec.additionalScrapeConfigs` instead.\"\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              scrapeInterval:\n                default: 30s\n                description: \"Interval between consecutive scrapes. \\n Default: \\\"30s\\\"\"\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              scrapeTimeout:\n                description: Number of seconds to wait until a scrape request times\n                  out.\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              secrets:\n                description: Secrets is a list of Secrets in the same namespace as\n                  the Prometheus object, which shall be mounted into the Prometheus\n                  Pods. Each Secret is added to the StatefulSet definition as a volume\n                  named `secret-<secret-name>`. The Secrets are mounted into /etc/prometheus/secrets/<secret-name>\n                  in the 'prometheus' container.\n                items:\n                  type: string\n                type: array\n              securityContext:\n                description: SecurityContext holds pod-level security attributes and\n                  common container settings. This defaults to the default PodSecurityContext.\n                properties:\n                  fsGroup:\n                    description: \"A special supplemental group that applies to all\n                      containers in a pod. Some volume types allow the Kubelet to\n                      change the ownership of that volume to be owned by the pod:\n                      \\n 1. The owning GID will be the FSGroup 2. The setgid bit is\n                      set (new files created in the volume will be owned by FSGroup)\n                      3. The permission bits are OR'd with rw-rw---- \\n If unset,\n                      the Kubelet will not modify the ownership and permissions of\n                      any volume. Note that this field cannot be set when spec.os.name\n                      is windows.\"\n                    format: int64\n                    type: integer\n                  fsGroupChangePolicy:\n                    description: 'fsGroupChangePolicy defines behavior of changing\n                      ownership and permission of the volume before being exposed\n                      inside Pod. This field will only apply to volume types which\n                      support fsGroup based ownership(and permissions). It will have\n                      no effect on ephemeral volume types such as: secret, configmaps\n                      and emptydir. Valid values are \"OnRootMismatch\" and \"Always\".\n                      If not specified, \"Always\" is used. Note that this field cannot\n                      be set when spec.os.name is windows.'\n                    type: string\n                  runAsGroup:\n                    description: The GID to run the entrypoint of the container process.\n                      Uses runtime default if unset. May also be set in SecurityContext.  If\n                      set in both SecurityContext and PodSecurityContext, the value\n                      specified in SecurityContext takes precedence for that container.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    format: int64\n                    type: integer\n                  runAsNonRoot:\n                    description: Indicates that the container must run as a non-root\n                      user. If true, the Kubelet will validate the image at runtime\n                      to ensure that it does not run as UID 0 (root) and fail to start\n                      the container if it does. If unset or false, no such validation\n                      will be performed. May also be set in SecurityContext.  If set\n                      in both SecurityContext and PodSecurityContext, the value specified\n                      in SecurityContext takes precedence.\n                    type: boolean\n                  runAsUser:\n                    description: The UID to run the entrypoint of the container process.\n                      Defaults to user specified in image metadata if unspecified.\n                      May also be set in SecurityContext.  If set in both SecurityContext\n                      and PodSecurityContext, the value specified in SecurityContext\n                      takes precedence for that container. Note that this field cannot\n                      be set when spec.os.name is windows.\n                    format: int64\n                    type: integer\n                  seLinuxOptions:\n                    description: The SELinux context to be applied to all containers.\n                      If unspecified, the container runtime will allocate a random\n                      SELinux context for each container.  May also be set in SecurityContext.  If\n                      set in both SecurityContext and PodSecurityContext, the value\n                      specified in SecurityContext takes precedence for that container.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    properties:\n                      level:\n                        description: Level is SELinux level label that applies to\n                          the container.\n                        type: string\n                      role:\n                        description: Role is a SELinux role label that applies to\n                          the container.\n                        type: string\n                      type:\n                        description: Type is a SELinux type label that applies to\n                          the container.\n                        type: string\n                      user:\n                        description: User is a SELinux user label that applies to\n                          the container.\n                        type: string\n                    type: object\n                  seccompProfile:\n                    description: The seccomp options to use by the containers in this\n                      pod. Note that this field cannot be set when spec.os.name is\n                      windows.\n                    properties:\n                      localhostProfile:\n                        description: localhostProfile indicates a profile defined\n                          in a file on the node should be used. The profile must be\n                          preconfigured on the node to work. Must be a descending\n                          path, relative to the kubelet's configured seccomp profile\n                          location. Must only be set if type is \"Localhost\".\n                        type: string\n                      type:\n                        description: \"type indicates which kind of seccomp profile\n                          will be applied. Valid options are: \\n Localhost - a profile\n                          defined in a file on the node should be used. RuntimeDefault\n                          - the container runtime default profile should be used.\n                          Unconfined - no profile should be applied.\"\n                        type: string\n                    required:\n                    - type\n                    type: object\n                  supplementalGroups:\n                    description: A list of groups applied to the first process run\n                      in each container, in addition to the container's primary GID,\n                      the fsGroup (if specified), and group memberships defined in\n                      the container image for the uid of the container process. If\n                      unspecified, no additional groups are added to any container.\n                      Note that group memberships defined in the container image for\n                      the uid of the container process are still effective, even if\n                      they are not included in this list. Note that this field cannot\n                      be set when spec.os.name is windows.\n                    items:\n                      format: int64\n                      type: integer\n                    type: array\n                  sysctls:\n                    description: Sysctls hold a list of namespaced sysctls used for\n                      the pod. Pods with unsupported sysctls (by the container runtime)\n                      might fail to launch. Note that this field cannot be set when\n                      spec.os.name is windows.\n                    items:\n                      description: Sysctl defines a kernel parameter to be set\n                      properties:\n                        name:\n                          description: Name of a property to set\n                          type: string\n                        value:\n                          description: Value of a property to set\n                          type: string\n                      required:\n                      - name\n                      - value\n                      type: object\n                    type: array\n                  windowsOptions:\n                    description: The Windows specific settings applied to all containers.\n                      If unspecified, the options within a container's SecurityContext\n                      will be used. If set in both SecurityContext and PodSecurityContext,\n                      the value specified in SecurityContext takes precedence. Note\n                      that this field cannot be set when spec.os.name is linux.\n                    properties:\n                      gmsaCredentialSpec:\n                        description: GMSACredentialSpec is where the GMSA admission\n                          webhook (https://github.com/kubernetes-sigs/windows-gmsa)\n                          inlines the contents of the GMSA credential spec named by\n                          the GMSACredentialSpecName field.\n                        type: string\n                      gmsaCredentialSpecName:\n                        description: GMSACredentialSpecName is the name of the GMSA\n                          credential spec to use.\n                        type: string\n                      hostProcess:\n                        description: HostProcess determines if a container should\n                          be run as a 'Host Process' container. This field is alpha-level\n                          and will only be honored by components that enable the WindowsHostProcessContainers\n                          feature flag. Setting this field without the feature flag\n                          will result in errors when validating the Pod. All of a\n                          Pod's containers must have the same effective HostProcess\n                          value (it is not allowed to have a mix of HostProcess containers\n                          and non-HostProcess containers).  In addition, if HostProcess\n                          is true then HostNetwork must also be set to true.\n                        type: boolean\n                      runAsUserName:\n                        description: The UserName in Windows to run the entrypoint\n                          of the container process. Defaults to the user specified\n                          in image metadata if unspecified. May also be set in PodSecurityContext.\n                          If set in both SecurityContext and PodSecurityContext, the\n                          value specified in SecurityContext takes precedence.\n                        type: string\n                    type: object\n                type: object\n              serviceAccountName:\n                description: ServiceAccountName is the name of the ServiceAccount\n                  to use to run the Prometheus Pods.\n                type: string\n              serviceMonitorNamespaceSelector:\n                description: Namespaces to match for ServicedMonitors discovery. An\n                  empty label selector matches all namespaces. A null label selector\n                  matches the current namespace only.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              serviceMonitorSelector:\n                description: \"ServiceMonitors to be selected for target discovery.\n                  An empty label selector matches all objects. A null label selector\n                  matches no objects. \\n If `spec.serviceMonitorSelector`, `spec.podMonitorSelector`,\n                  `spec.probeSelector` and `spec.scrapeConfigSelector` are null, the\n                  Prometheus configuration is unmanaged. The Prometheus operator will\n                  ensure that the Prometheus configuration's Secret exists, but it\n                  is the responsibility of the user to provide the raw gzipped Prometheus\n                  configuration under the `prometheus.yaml.gz` key. This behavior\n                  is *deprecated* and will be removed in the next major version of\n                  the custom resource definition. It is recommended to use `spec.additionalScrapeConfigs`\n                  instead.\"\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              shards:\n                description: \"EXPERIMENTAL: Number of shards to distribute targets\n                  onto. `spec.replicas` multiplied by `spec.shards` is the total number\n                  of Pods created. \\n Note that scaling down shards will not reshard\n                  data onto remaining instances, it must be manually moved. Increasing\n                  shards will not reshard data either but it will continue to be available\n                  from the same instances. To query globally, use Thanos sidecar and\n                  Thanos querier or remote write data to a central location. \\n Sharding\n                  is performed on the content of the `__address__` target meta-label\n                  for PodMonitors and ServiceMonitors and `__param_target__` for Probes.\n                  \\n Default: 1\"\n                format: int32\n                type: integer\n              storage:\n                description: Storage defines the storage used by Prometheus.\n                properties:\n                  disableMountSubPath:\n                    description: '*Deprecated: subPath usage will be removed in a\n                      future release.*'\n                    type: boolean\n                  emptyDir:\n                    description: 'EmptyDirVolumeSource to be used by the StatefulSet.\n                      If specified, it takes precedence over `ephemeral` and `volumeClaimTemplate`.\n                      More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir'\n                    properties:\n                      medium:\n                        description: 'medium represents what type of storage medium\n                          should back this directory. The default is \"\" which means\n                          to use the node''s default medium. Must be an empty string\n                          (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                        type: string\n                      sizeLimit:\n                        anyOf:\n                        - type: integer\n                        - type: string\n                        description: 'sizeLimit is the total amount of local storage\n                          required for this EmptyDir volume. The size limit is also\n                          applicable for memory medium. The maximum usage on memory\n                          medium EmptyDir would be the minimum value between the SizeLimit\n                          specified here and the sum of memory limits of all containers\n                          in a pod. The default is nil which means that the limit\n                          is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                        x-kubernetes-int-or-string: true\n                    type: object\n                  ephemeral:\n                    description: 'EphemeralVolumeSource to be used by the StatefulSet.\n                      This is a beta field in k8s 1.21 and GA in 1.15. For lower versions,\n                      starting with k8s 1.19, it requires enabling the GenericEphemeralVolume\n                      feature gate. More info: https://kubernetes.io/docs/concepts/storage/ephemeral-volumes/#generic-ephemeral-volumes'\n                    properties:\n                      volumeClaimTemplate:\n                        description: \"Will be used to create a stand-alone PVC to\n                          provision the volume. The pod in which this EphemeralVolumeSource\n                          is embedded will be the owner of the PVC, i.e. the PVC will\n                          be deleted together with the pod.  The name of the PVC will\n                          be `<pod name>-<volume name>` where `<volume name>` is the\n                          name from the `PodSpec.Volumes` array entry. Pod validation\n                          will reject the pod if the concatenated name is not valid\n                          for a PVC (for example, too long). \\n An existing PVC with\n                          that name that is not owned by the pod will *not* be used\n                          for the pod to avoid using an unrelated volume by mistake.\n                          Starting the pod is then blocked until the unrelated PVC\n                          is removed. If such a pre-created PVC is meant to be used\n                          by the pod, the PVC has to updated with an owner reference\n                          to the pod once the pod exists. Normally this should not\n                          be necessary, but it may be useful when manually reconstructing\n                          a broken cluster. \\n This field is read-only and no changes\n                          will be made by Kubernetes to the PVC after it has been\n                          created. \\n Required, must not be nil.\"\n                        properties:\n                          metadata:\n                            description: May contain labels and annotations that will\n                              be copied into the PVC when creating it. No other fields\n                              are allowed and will be rejected during validation.\n                            type: object\n                          spec:\n                            description: The specification for the PersistentVolumeClaim.\n                              The entire content is copied unchanged into the PVC\n                              that gets created from this template. The same fields\n                              as in a PersistentVolumeClaim are also valid here.\n                            properties:\n                              accessModes:\n                                description: 'accessModes contains the desired access\n                                  modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                                items:\n                                  type: string\n                                type: array\n                              dataSource:\n                                description: 'dataSource field can be used to specify\n                                  either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\n                                  * An existing PVC (PersistentVolumeClaim) If the\n                                  provisioner or an external controller can support\n                                  the specified data source, it will create a new\n                                  volume based on the contents of the specified data\n                                  source. When the AnyVolumeDataSource feature gate\n                                  is enabled, dataSource contents will be copied to\n                                  dataSourceRef, and dataSourceRef contents will be\n                                  copied to dataSource when dataSourceRef.namespace\n                                  is not specified. If the namespace is specified,\n                                  then dataSourceRef will not be copied to dataSource.'\n                                properties:\n                                  apiGroup:\n                                    description: APIGroup is the group for the resource\n                                      being referenced. If APIGroup is not specified,\n                                      the specified Kind must be in the core API group.\n                                      For any other third-party types, APIGroup is\n                                      required.\n                                    type: string\n                                  kind:\n                                    description: Kind is the type of resource being\n                                      referenced\n                                    type: string\n                                  name:\n                                    description: Name is the name of resource being\n                                      referenced\n                                    type: string\n                                required:\n                                - kind\n                                - name\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              dataSourceRef:\n                                description: 'dataSourceRef specifies the object from\n                                  which to populate the volume with data, if a non-empty\n                                  volume is desired. This may be any object from a\n                                  non-empty API group (non core object) or a PersistentVolumeClaim\n                                  object. When this field is specified, volume binding\n                                  will only succeed if the type of the specified object\n                                  matches some installed volume populator or dynamic\n                                  provisioner. This field will replace the functionality\n                                  of the dataSource field and as such if both fields\n                                  are non-empty, they must have the same value. For\n                                  backwards compatibility, when namespace isn''t specified\n                                  in dataSourceRef, both fields (dataSource and dataSourceRef)\n                                  will be set to the same value automatically if one\n                                  of them is empty and the other is non-empty. When\n                                  namespace is specified in dataSourceRef, dataSource\n                                  isn''t set to the same value and must be empty.\n                                  There are three important differences between dataSource\n                                  and dataSourceRef: * While dataSource only allows\n                                  two specific types of objects, dataSourceRef allows\n                                  any non-core object, as well as PersistentVolumeClaim\n                                  objects. * While dataSource ignores disallowed values\n                                  (dropping them), dataSourceRef preserves all values,\n                                  and generates an error if a disallowed value is\n                                  specified. * While dataSource only allows local\n                                  objects, dataSourceRef allows objects in any namespaces.\n                                  (Beta) Using this field requires the AnyVolumeDataSource\n                                  feature gate to be enabled. (Alpha) Using the namespace\n                                  field of dataSourceRef requires the CrossNamespaceVolumeDataSource\n                                  feature gate to be enabled.'\n                                properties:\n                                  apiGroup:\n                                    description: APIGroup is the group for the resource\n                                      being referenced. If APIGroup is not specified,\n                                      the specified Kind must be in the core API group.\n                                      For any other third-party types, APIGroup is\n                                      required.\n                                    type: string\n                                  kind:\n                                    description: Kind is the type of resource being\n                                      referenced\n                                    type: string\n                                  name:\n                                    description: Name is the name of resource being\n                                      referenced\n                                    type: string\n                                  namespace:\n                                    description: Namespace is the namespace of resource\n                                      being referenced Note that when a namespace\n                                      is specified, a gateway.networking.k8s.io/ReferenceGrant\n                                      object is required in the referent namespace\n                                      to allow that namespace's owner to accept the\n                                      reference. See the ReferenceGrant documentation\n                                      for details. (Alpha) This field requires the\n                                      CrossNamespaceVolumeDataSource feature gate\n                                      to be enabled.\n                                    type: string\n                                required:\n                                - kind\n                                - name\n                                type: object\n                              resources:\n                                description: 'resources represents the minimum resources\n                                  the volume should have. If RecoverVolumeExpansionFailure\n                                  feature is enabled users are allowed to specify\n                                  resource requirements that are lower than previous\n                                  value but must still be higher than capacity recorded\n                                  in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'\n                                properties:\n                                  claims:\n                                    description: \"Claims lists the names of resources,\n                                      defined in spec.resourceClaims, that are used\n                                      by this container. \\n This is an alpha field\n                                      and requires enabling the DynamicResourceAllocation\n                                      feature gate. \\n This field is immutable. It\n                                      can only be set for containers.\"\n                                    items:\n                                      description: ResourceClaim references one entry\n                                        in PodSpec.ResourceClaims.\n                                      properties:\n                                        name:\n                                          description: Name must match the name of\n                                            one entry in pod.spec.resourceClaims of\n                                            the Pod where this field is used. It makes\n                                            that resource available inside a container.\n                                          type: string\n                                      required:\n                                      - name\n                                      type: object\n                                    type: array\n                                    x-kubernetes-list-map-keys:\n                                    - name\n                                    x-kubernetes-list-type: map\n                                  limits:\n                                    additionalProperties:\n                                      anyOf:\n                                      - type: integer\n                                      - type: string\n                                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                      x-kubernetes-int-or-string: true\n                                    description: 'Limits describes the maximum amount\n                                      of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                    type: object\n                                  requests:\n                                    additionalProperties:\n                                      anyOf:\n                                      - type: integer\n                                      - type: string\n                                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                      x-kubernetes-int-or-string: true\n                                    description: 'Requests describes the minimum amount\n                                      of compute resources required. If Requests is\n                                      omitted for a container, it defaults to Limits\n                                      if that is explicitly specified, otherwise to\n                                      an implementation-defined value. Requests cannot\n                                      exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                    type: object\n                                type: object\n                              selector:\n                                description: selector is a label query over volumes\n                                  to consider for binding.\n                                properties:\n                                  matchExpressions:\n                                    description: matchExpressions is a list of label\n                                      selector requirements. The requirements are\n                                      ANDed.\n                                    items:\n                                      description: A label selector requirement is\n                                        a selector that contains values, a key, and\n                                        an operator that relates the key and values.\n                                      properties:\n                                        key:\n                                          description: key is the label key that the\n                                            selector applies to.\n                                          type: string\n                                        operator:\n                                          description: operator represents a key's\n                                            relationship to a set of values. Valid\n                                            operators are In, NotIn, Exists and DoesNotExist.\n                                          type: string\n                                        values:\n                                          description: values is an array of string\n                                            values. If the operator is In or NotIn,\n                                            the values array must be non-empty. If\n                                            the operator is Exists or DoesNotExist,\n                                            the values array must be empty. This array\n                                            is replaced during a strategic merge patch.\n                                          items:\n                                            type: string\n                                          type: array\n                                      required:\n                                      - key\n                                      - operator\n                                      type: object\n                                    type: array\n                                  matchLabels:\n                                    additionalProperties:\n                                      type: string\n                                    description: matchLabels is a map of {key,value}\n                                      pairs. A single {key,value} in the matchLabels\n                                      map is equivalent to an element of matchExpressions,\n                                      whose key field is \"key\", the operator is \"In\",\n                                      and the values array contains only \"value\".\n                                      The requirements are ANDed.\n                                    type: object\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              storageClassName:\n                                description: 'storageClassName is the name of the\n                                  StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'\n                                type: string\n                              volumeMode:\n                                description: volumeMode defines what type of volume\n                                  is required by the claim. Value of Filesystem is\n                                  implied when not included in claim spec.\n                                type: string\n                              volumeName:\n                                description: volumeName is the binding reference to\n                                  the PersistentVolume backing this claim.\n                                type: string\n                            type: object\n                        required:\n                        - spec\n                        type: object\n                    type: object\n                  volumeClaimTemplate:\n                    description: Defines the PVC spec to be used by the Prometheus\n                      StatefulSets. The easiest way to use a volume that cannot be\n                      automatically provisioned is to use a label selector alongside\n                      manually created PersistentVolumes.\n                    properties:\n                      apiVersion:\n                        description: 'APIVersion defines the versioned schema of this\n                          representation of an object. Servers should convert recognized\n                          schemas to the latest internal value, and may reject unrecognized\n                          values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n                        type: string\n                      kind:\n                        description: 'Kind is a string value representing the REST\n                          resource this object represents. Servers may infer this\n                          from the endpoint the client submits requests to. Cannot\n                          be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n                        type: string\n                      metadata:\n                        description: EmbeddedMetadata contains metadata relevant to\n                          an EmbeddedResource.\n                        properties:\n                          annotations:\n                            additionalProperties:\n                              type: string\n                            description: 'Annotations is an unstructured key value\n                              map stored with a resource that may be set by external\n                              tools to store and retrieve arbitrary metadata. They\n                              are not queryable and should be preserved when modifying\n                              objects. More info: http://kubernetes.io/docs/user-guide/annotations'\n                            type: object\n                          labels:\n                            additionalProperties:\n                              type: string\n                            description: 'Map of string keys and values that can be\n                              used to organize and categorize (scope and select) objects.\n                              May match selectors of replication controllers and services.\n                              More info: http://kubernetes.io/docs/user-guide/labels'\n                            type: object\n                          name:\n                            description: 'Name must be unique within a namespace.\n                              Is required when creating resources, although some resources\n                              may allow a client to request the generation of an appropriate\n                              name automatically. Name is primarily intended for creation\n                              idempotence and configuration definition. Cannot be\n                              updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names'\n                            type: string\n                        type: object\n                      spec:\n                        description: 'Defines the desired characteristics of a volume\n                          requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'\n                        properties:\n                          accessModes:\n                            description: 'accessModes contains the desired access\n                              modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                            items:\n                              type: string\n                            type: array\n                          dataSource:\n                            description: 'dataSource field can be used to specify\n                              either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\n                              * An existing PVC (PersistentVolumeClaim) If the provisioner\n                              or an external controller can support the specified\n                              data source, it will create a new volume based on the\n                              contents of the specified data source. When the AnyVolumeDataSource\n                              feature gate is enabled, dataSource contents will be\n                              copied to dataSourceRef, and dataSourceRef contents\n                              will be copied to dataSource when dataSourceRef.namespace\n                              is not specified. If the namespace is specified, then\n                              dataSourceRef will not be copied to dataSource.'\n                            properties:\n                              apiGroup:\n                                description: APIGroup is the group for the resource\n                                  being referenced. If APIGroup is not specified,\n                                  the specified Kind must be in the core API group.\n                                  For any other third-party types, APIGroup is required.\n                                type: string\n                              kind:\n                                description: Kind is the type of resource being referenced\n                                type: string\n                              name:\n                                description: Name is the name of resource being referenced\n                                type: string\n                            required:\n                            - kind\n                            - name\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          dataSourceRef:\n                            description: 'dataSourceRef specifies the object from\n                              which to populate the volume with data, if a non-empty\n                              volume is desired. This may be any object from a non-empty\n                              API group (non core object) or a PersistentVolumeClaim\n                              object. When this field is specified, volume binding\n                              will only succeed if the type of the specified object\n                              matches some installed volume populator or dynamic provisioner.\n                              This field will replace the functionality of the dataSource\n                              field and as such if both fields are non-empty, they\n                              must have the same value. For backwards compatibility,\n                              when namespace isn''t specified in dataSourceRef, both\n                              fields (dataSource and dataSourceRef) will be set to\n                              the same value automatically if one of them is empty\n                              and the other is non-empty. When namespace is specified\n                              in dataSourceRef, dataSource isn''t set to the same\n                              value and must be empty. There are three important differences\n                              between dataSource and dataSourceRef: * While dataSource\n                              only allows two specific types of objects, dataSourceRef\n                              allows any non-core object, as well as PersistentVolumeClaim\n                              objects. * While dataSource ignores disallowed values\n                              (dropping them), dataSourceRef preserves all values,\n                              and generates an error if a disallowed value is specified.\n                              * While dataSource only allows local objects, dataSourceRef\n                              allows objects in any namespaces. (Beta) Using this\n                              field requires the AnyVolumeDataSource feature gate\n                              to be enabled. (Alpha) Using the namespace field of\n                              dataSourceRef requires the CrossNamespaceVolumeDataSource\n                              feature gate to be enabled.'\n                            properties:\n                              apiGroup:\n                                description: APIGroup is the group for the resource\n                                  being referenced. If APIGroup is not specified,\n                                  the specified Kind must be in the core API group.\n                                  For any other third-party types, APIGroup is required.\n                                type: string\n                              kind:\n                                description: Kind is the type of resource being referenced\n                                type: string\n                              name:\n                                description: Name is the name of resource being referenced\n                                type: string\n                              namespace:\n                                description: Namespace is the namespace of resource\n                                  being referenced Note that when a namespace is specified,\n                                  a gateway.networking.k8s.io/ReferenceGrant object\n                                  is required in the referent namespace to allow that\n                                  namespace's owner to accept the reference. See the\n                                  ReferenceGrant documentation for details. (Alpha)\n                                  This field requires the CrossNamespaceVolumeDataSource\n                                  feature gate to be enabled.\n                                type: string\n                            required:\n                            - kind\n                            - name\n                            type: object\n                          resources:\n                            description: 'resources represents the minimum resources\n                              the volume should have. If RecoverVolumeExpansionFailure\n                              feature is enabled users are allowed to specify resource\n                              requirements that are lower than previous value but\n                              must still be higher than capacity recorded in the status\n                              field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'\n                            properties:\n                              claims:\n                                description: \"Claims lists the names of resources,\n                                  defined in spec.resourceClaims, that are used by\n                                  this container. \\n This is an alpha field and requires\n                                  enabling the DynamicResourceAllocation feature gate.\n                                  \\n This field is immutable. It can only be set for\n                                  containers.\"\n                                items:\n                                  description: ResourceClaim references one entry\n                                    in PodSpec.ResourceClaims.\n                                  properties:\n                                    name:\n                                      description: Name must match the name of one\n                                        entry in pod.spec.resourceClaims of the Pod\n                                        where this field is used. It makes that resource\n                                        available inside a container.\n                                      type: string\n                                  required:\n                                  - name\n                                  type: object\n                                type: array\n                                x-kubernetes-list-map-keys:\n                                - name\n                                x-kubernetes-list-type: map\n                              limits:\n                                additionalProperties:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                  x-kubernetes-int-or-string: true\n                                description: 'Limits describes the maximum amount\n                                  of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                type: object\n                              requests:\n                                additionalProperties:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                  x-kubernetes-int-or-string: true\n                                description: 'Requests describes the minimum amount\n                                  of compute resources required. If Requests is omitted\n                                  for a container, it defaults to Limits if that is\n                                  explicitly specified, otherwise to an implementation-defined\n                                  value. Requests cannot exceed Limits. More info:\n                                  https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                type: object\n                            type: object\n                          selector:\n                            description: selector is a label query over volumes to\n                              consider for binding.\n                            properties:\n                              matchExpressions:\n                                description: matchExpressions is a list of label selector\n                                  requirements. The requirements are ANDed.\n                                items:\n                                  description: A label selector requirement is a selector\n                                    that contains values, a key, and an operator that\n                                    relates the key and values.\n                                  properties:\n                                    key:\n                                      description: key is the label key that the selector\n                                        applies to.\n                                      type: string\n                                    operator:\n                                      description: operator represents a key's relationship\n                                        to a set of values. Valid operators are In,\n                                        NotIn, Exists and DoesNotExist.\n                                      type: string\n                                    values:\n                                      description: values is an array of string values.\n                                        If the operator is In or NotIn, the values\n                                        array must be non-empty. If the operator is\n                                        Exists or DoesNotExist, the values array must\n                                        be empty. This array is replaced during a\n                                        strategic merge patch.\n                                      items:\n                                        type: string\n                                      type: array\n                                  required:\n                                  - key\n                                  - operator\n                                  type: object\n                                type: array\n                              matchLabels:\n                                additionalProperties:\n                                  type: string\n                                description: matchLabels is a map of {key,value} pairs.\n                                  A single {key,value} in the matchLabels map is equivalent\n                                  to an element of matchExpressions, whose key field\n                                  is \"key\", the operator is \"In\", and the values array\n                                  contains only \"value\". The requirements are ANDed.\n                                type: object\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          storageClassName:\n                            description: 'storageClassName is the name of the StorageClass\n                              required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'\n                            type: string\n                          volumeMode:\n                            description: volumeMode defines what type of volume is\n                              required by the claim. Value of Filesystem is implied\n                              when not included in claim spec.\n                            type: string\n                          volumeName:\n                            description: volumeName is the binding reference to the\n                              PersistentVolume backing this claim.\n                            type: string\n                        type: object\n                      status:\n                        description: '*Deprecated: this field is never set.*'\n                        properties:\n                          accessModes:\n                            description: 'accessModes contains the actual access modes\n                              the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                            items:\n                              type: string\n                            type: array\n                          allocatedResources:\n                            additionalProperties:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                              x-kubernetes-int-or-string: true\n                            description: allocatedResources is the storage resource\n                              within AllocatedResources tracks the capacity allocated\n                              to a PVC. It may be larger than the actual capacity\n                              when a volume expansion operation is requested. For\n                              storage quota, the larger value from allocatedResources\n                              and PVC.spec.resources is used. If allocatedResources\n                              is not set, PVC.spec.resources alone is used for quota\n                              calculation. If a volume expansion capacity request\n                              is lowered, allocatedResources is only lowered if there\n                              are no expansion operations in progress and if the actual\n                              volume capacity is equal or lower than the requested\n                              capacity. This is an alpha field and requires enabling\n                              RecoverVolumeExpansionFailure feature.\n                            type: object\n                          capacity:\n                            additionalProperties:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                              x-kubernetes-int-or-string: true\n                            description: capacity represents the actual resources\n                              of the underlying volume.\n                            type: object\n                          conditions:\n                            description: conditions is the current Condition of persistent\n                              volume claim. If underlying persistent volume is being\n                              resized then the Condition will be set to 'ResizeStarted'.\n                            items:\n                              description: PersistentVolumeClaimCondition contains\n                                details about state of pvc\n                              properties:\n                                lastProbeTime:\n                                  description: lastProbeTime is the time we probed\n                                    the condition.\n                                  format: date-time\n                                  type: string\n                                lastTransitionTime:\n                                  description: lastTransitionTime is the time the\n                                    condition transitioned from one status to another.\n                                  format: date-time\n                                  type: string\n                                message:\n                                  description: message is the human-readable message\n                                    indicating details about last transition.\n                                  type: string\n                                reason:\n                                  description: reason is a unique, this should be\n                                    a short, machine understandable string that gives\n                                    the reason for condition's last transition. If\n                                    it reports \"ResizeStarted\" that means the underlying\n                                    persistent volume is being resized.\n                                  type: string\n                                status:\n                                  type: string\n                                type:\n                                  description: PersistentVolumeClaimConditionType\n                                    is a valid value of PersistentVolumeClaimCondition.Type\n                                  type: string\n                              required:\n                              - status\n                              - type\n                              type: object\n                            type: array\n                          phase:\n                            description: phase represents the current phase of PersistentVolumeClaim.\n                            type: string\n                          resizeStatus:\n                            description: resizeStatus stores status of resize operation.\n                              ResizeStatus is not set by default but when expansion\n                              is complete resizeStatus is set to empty string by resize\n                              controller or kubelet. This is an alpha field and requires\n                              enabling RecoverVolumeExpansionFailure feature.\n                            type: string\n                        type: object\n                    type: object\n                type: object\n              tolerations:\n                description: Defines the Pods' tolerations if specified.\n                items:\n                  description: The pod this Toleration is attached to tolerates any\n                    taint that matches the triple <key,value,effect> using the matching\n                    operator <operator>.\n                  properties:\n                    effect:\n                      description: Effect indicates the taint effect to match. Empty\n                        means match all taint effects. When specified, allowed values\n                        are NoSchedule, PreferNoSchedule and NoExecute.\n                      type: string\n                    key:\n                      description: Key is the taint key that the toleration applies\n                        to. Empty means match all taint keys. If the key is empty,\n                        operator must be Exists; this combination means to match all\n                        values and all keys.\n                      type: string\n                    operator:\n                      description: Operator represents a key's relationship to the\n                        value. Valid operators are Exists and Equal. Defaults to Equal.\n                        Exists is equivalent to wildcard for value, so that a pod\n                        can tolerate all taints of a particular category.\n                      type: string\n                    tolerationSeconds:\n                      description: TolerationSeconds represents the period of time\n                        the toleration (which must be of effect NoExecute, otherwise\n                        this field is ignored) tolerates the taint. By default, it\n                        is not set, which means tolerate the taint forever (do not\n                        evict). Zero and negative values will be treated as 0 (evict\n                        immediately) by the system.\n                      format: int64\n                      type: integer\n                    value:\n                      description: Value is the taint value the toleration matches\n                        to. If the operator is Exists, the value should be empty,\n                        otherwise just a regular string.\n                      type: string\n                  type: object\n                type: array\n              topologySpreadConstraints:\n                description: Defines the pod's topology spread constraints if specified.\n                items:\n                  description: TopologySpreadConstraint specifies how to spread matching\n                    pods among the given topology.\n                  properties:\n                    labelSelector:\n                      description: LabelSelector is used to find matching pods. Pods\n                        that match this label selector are counted to determine the\n                        number of pods in their corresponding topology domain.\n                      properties:\n                        matchExpressions:\n                          description: matchExpressions is a list of label selector\n                            requirements. The requirements are ANDed.\n                          items:\n                            description: A label selector requirement is a selector\n                              that contains values, a key, and an operator that relates\n                              the key and values.\n                            properties:\n                              key:\n                                description: key is the label key that the selector\n                                  applies to.\n                                type: string\n                              operator:\n                                description: operator represents a key's relationship\n                                  to a set of values. Valid operators are In, NotIn,\n                                  Exists and DoesNotExist.\n                                type: string\n                              values:\n                                description: values is an array of string values.\n                                  If the operator is In or NotIn, the values array\n                                  must be non-empty. If the operator is Exists or\n                                  DoesNotExist, the values array must be empty. This\n                                  array is replaced during a strategic merge patch.\n                                items:\n                                  type: string\n                                type: array\n                            required:\n                            - key\n                            - operator\n                            type: object\n                          type: array\n                        matchLabels:\n                          additionalProperties:\n                            type: string\n                          description: matchLabels is a map of {key,value} pairs.\n                            A single {key,value} in the matchLabels map is equivalent\n                            to an element of matchExpressions, whose key field is\n                            \"key\", the operator is \"In\", and the values array contains\n                            only \"value\". The requirements are ANDed.\n                          type: object\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    matchLabelKeys:\n                      description: \"MatchLabelKeys is a set of pod label keys to select\n                        the pods over which spreading will be calculated. The keys\n                        are used to lookup values from the incoming pod labels, those\n                        key-value labels are ANDed with labelSelector to select the\n                        group of existing pods over which spreading will be calculated\n                        for the incoming pod. The same key is forbidden to exist in\n                        both MatchLabelKeys and LabelSelector. MatchLabelKeys cannot\n                        be set when LabelSelector isn't set. Keys that don't exist\n                        in the incoming pod labels will be ignored. A null or empty\n                        list means only match against labelSelector. \\n This is a\n                        beta field and requires the MatchLabelKeysInPodTopologySpread\n                        feature gate to be enabled (enabled by default).\"\n                      items:\n                        type: string\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    maxSkew:\n                      description: 'MaxSkew describes the degree to which pods may\n                        be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`,\n                        it is the maximum permitted difference between the number\n                        of matching pods in the target topology and the global minimum.\n                        The global minimum is the minimum number of matching pods\n                        in an eligible domain or zero if the number of eligible domains\n                        is less than MinDomains. For example, in a 3-zone cluster,\n                        MaxSkew is set to 1, and pods with the same labelSelector\n                        spread as 2/2/1: In this case, the global minimum is 1. |\n                        zone1 | zone2 | zone3 | |  P P  |  P P  |   P   | - if MaxSkew\n                        is 1, incoming pod can only be scheduled to zone3 to become\n                        2/2/2; scheduling it onto zone1(zone2) would make the ActualSkew(3-1)\n                        on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming\n                        pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`,\n                        it is used to give higher precedence to topologies that satisfy\n                        it. It''s a required field. Default value is 1 and 0 is not\n                        allowed.'\n                      format: int32\n                      type: integer\n                    minDomains:\n                      description: \"MinDomains indicates a minimum number of eligible\n                        domains. When the number of eligible domains with matching\n                        topology keys is less than minDomains, Pod Topology Spread\n                        treats \\\"global minimum\\\" as 0, and then the calculation of\n                        Skew is performed. And when the number of eligible domains\n                        with matching topology keys equals or greater than minDomains,\n                        this value has no effect on scheduling. As a result, when\n                        the number of eligible domains is less than minDomains, scheduler\n                        won't schedule more than maxSkew Pods to those domains. If\n                        value is nil, the constraint behaves as if MinDomains is equal\n                        to 1. Valid values are integers greater than 0. When value\n                        is not nil, WhenUnsatisfiable must be DoNotSchedule. \\n For\n                        example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains\n                        is set to 5 and pods with the same labelSelector spread as\n                        2/2/2: | zone1 | zone2 | zone3 | |  P P  |  P P  |  P P  |\n                        The number of domains is less than 5(MinDomains), so \\\"global\n                        minimum\\\" is treated as 0. In this situation, new pod with\n                        the same labelSelector cannot be scheduled, because computed\n                        skew will be 3(3 - 0) if new Pod is scheduled to any of the\n                        three zones, it will violate MaxSkew. \\n This is a beta field\n                        and requires the MinDomainsInPodTopologySpread feature gate\n                        to be enabled (enabled by default).\"\n                      format: int32\n                      type: integer\n                    nodeAffinityPolicy:\n                      description: \"NodeAffinityPolicy indicates how we will treat\n                        Pod's nodeAffinity/nodeSelector when calculating pod topology\n                        spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector\n                        are included in the calculations. - Ignore: nodeAffinity/nodeSelector\n                        are ignored. All nodes are included in the calculations. \\n\n                        If this value is nil, the behavior is equivalent to the Honor\n                        policy. This is a beta-level feature default enabled by the\n                        NodeInclusionPolicyInPodTopologySpread feature flag.\"\n                      type: string\n                    nodeTaintsPolicy:\n                      description: \"NodeTaintsPolicy indicates how we will treat node\n                        taints when calculating pod topology spread skew. Options\n                        are: - Honor: nodes without taints, along with tainted nodes\n                        for which the incoming pod has a toleration, are included.\n                        - Ignore: node taints are ignored. All nodes are included.\n                        \\n If this value is nil, the behavior is equivalent to the\n                        Ignore policy. This is a beta-level feature default enabled\n                        by the NodeInclusionPolicyInPodTopologySpread feature flag.\"\n                      type: string\n                    topologyKey:\n                      description: TopologyKey is the key of node labels. Nodes that\n                        have a label with this key and identical values are considered\n                        to be in the same topology. We consider each <key, value>\n                        as a \"bucket\", and try to put balanced number of pods into\n                        each bucket. We define a domain as a particular instance of\n                        a topology. Also, we define an eligible domain as a domain\n                        whose nodes meet the requirements of nodeAffinityPolicy and\n                        nodeTaintsPolicy. e.g. If TopologyKey is \"kubernetes.io/hostname\",\n                        each Node is a domain of that topology. And, if TopologyKey\n                        is \"topology.kubernetes.io/zone\", each zone is a domain of\n                        that topology. It's a required field.\n                      type: string\n                    whenUnsatisfiable:\n                      description: 'WhenUnsatisfiable indicates how to deal with a\n                        pod if it doesn''t satisfy the spread constraint. - DoNotSchedule\n                        (default) tells the scheduler not to schedule it. - ScheduleAnyway\n                        tells the scheduler to schedule the pod in any location, but\n                        giving higher precedence to topologies that would help reduce\n                        the skew. A constraint is considered \"Unsatisfiable\" for an\n                        incoming pod if and only if every possible node assignment\n                        for that pod would violate \"MaxSkew\" on some topology. For\n                        example, in a 3-zone cluster, MaxSkew is set to 1, and pods\n                        with the same labelSelector spread as 3/1/1: | zone1 | zone2\n                        | zone3 | | P P P |   P   |   P   | If WhenUnsatisfiable is\n                        set to DoNotSchedule, incoming pod can only be scheduled to\n                        zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on\n                        zone2(zone3) satisfies MaxSkew(1). In other words, the cluster\n                        can still be imbalanced, but scheduler won''t make it *more*\n                        imbalanced. It''s a required field.'\n                      type: string\n                  required:\n                  - maxSkew\n                  - topologyKey\n                  - whenUnsatisfiable\n                  type: object\n                type: array\n              tracingConfig:\n                description: 'EXPERIMENTAL: TracingConfig configures tracing in Prometheus.\n                  This is an experimental feature, it may change in any upcoming release\n                  in a breaking way.'\n                properties:\n                  clientType:\n                    description: Client used to export the traces. Supported values\n                      are `http` or `grpc`.\n                    enum:\n                    - http\n                    - grpc\n                    type: string\n                  compression:\n                    description: Compression key for supported compression types.\n                      The only supported value is `gzip`.\n                    enum:\n                    - gzip\n                    type: string\n                  endpoint:\n                    description: Endpoint to send the traces to. Should be provided\n                      in format <host>:<port>.\n                    minLength: 1\n                    type: string\n                  headers:\n                    additionalProperties:\n                      type: string\n                    description: Key-value pairs to be used as headers associated\n                      with gRPC or HTTP requests.\n                    type: object\n                  insecure:\n                    description: If disabled, the client will use a secure connection.\n                    type: boolean\n                  samplingFraction:\n                    anyOf:\n                    - type: integer\n                    - type: string\n                    description: Sets the probability a given trace will be sampled.\n                      Must be a float from 0 through 1.\n                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                    x-kubernetes-int-or-string: true\n                  timeout:\n                    description: Maximum time the exporter will wait for each batch\n                      export.\n                    pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                    type: string\n                  tlsConfig:\n                    description: TLS Config to use when sending traces.\n                    properties:\n                      ca:\n                        description: Certificate authority used when verifying server\n                          certificates.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the\n                              targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its\n                                  key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      caFile:\n                        description: Path to the CA cert in the Prometheus container\n                          to use for the targets.\n                        type: string\n                      cert:\n                        description: Client certificate to present when doing client-authentication.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the\n                              targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its\n                                  key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      certFile:\n                        description: Path to the client cert file in the Prometheus\n                          container for the targets.\n                        type: string\n                      insecureSkipVerify:\n                        description: Disable target certificate validation.\n                        type: boolean\n                      keyFile:\n                        description: Path to the client key file in the Prometheus\n                          container for the targets.\n                        type: string\n                      keySecret:\n                        description: Secret containing the client key file for the\n                          targets.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must\n                              be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must\n                              be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      serverName:\n                        description: Used to verify the hostname for the targets.\n                        type: string\n                    type: object\n                required:\n                - endpoint\n                type: object\n              version:\n                description: \"Version of Prometheus being deployed. The operator uses\n                  this information to generate the Prometheus StatefulSet + configuration\n                  files. \\n If not specified, the operator assumes the latest upstream\n                  version of Prometheus available at the time when the version of\n                  the operator was released.\"\n                type: string\n              volumeMounts:\n                description: \"VolumeMounts allows the configuration of additional\n                  VolumeMounts. \\n VolumeMounts will be appended to other VolumeMounts\n                  in the 'prometheus' container, that are generated as a result of\n                  StorageSpec objects.\"\n                items:\n                  description: VolumeMount describes a mounting of a Volume within\n                    a container.\n                  properties:\n                    mountPath:\n                      description: Path within the container at which the volume should\n                        be mounted.  Must not contain ':'.\n                      type: string\n                    mountPropagation:\n                      description: mountPropagation determines how mounts are propagated\n                        from the host to container and the other way around. When\n                        not set, MountPropagationNone is used. This field is beta\n                        in 1.10.\n                      type: string\n                    name:\n                      description: This must match the Name of a Volume.\n                      type: string\n                    readOnly:\n                      description: Mounted read-only if true, read-write otherwise\n                        (false or unspecified). Defaults to false.\n                      type: boolean\n                    subPath:\n                      description: Path within the volume from which the container's\n                        volume should be mounted. Defaults to \"\" (volume's root).\n                      type: string\n                    subPathExpr:\n                      description: Expanded path within the volume from which the\n                        container's volume should be mounted. Behaves similarly to\n                        SubPath but environment variable references $(VAR_NAME) are\n                        expanded using the container's environment. Defaults to \"\"\n                        (volume's root). SubPathExpr and SubPath are mutually exclusive.\n                      type: string\n                  required:\n                  - mountPath\n                  - name\n                  type: object\n                type: array\n              volumes:\n                description: Volumes allows the configuration of additional volumes\n                  on the output StatefulSet definition. Volumes specified will be\n                  appended to other volumes that are generated as a result of StorageSpec\n                  objects.\n                items:\n                  description: Volume represents a named volume in a pod that may\n                    be accessed by any container in the pod.\n                  properties:\n                    awsElasticBlockStore:\n                      description: 'awsElasticBlockStore represents an AWS Disk resource\n                        that is attached to a kubelet''s host machine and then exposed\n                        to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type of the volume\n                            that you want to mount. Tip: Ensure that the filesystem\n                            type is supported by the host operating system. Examples:\n                            \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\n                            TODO: how do we prevent errors in the filesystem from\n                            compromising the machine'\n                          type: string\n                        partition:\n                          description: 'partition is the partition in the volume that\n                            you want to mount. If omitted, the default is to mount\n                            by volume name. Examples: For volume /dev/sda1, you specify\n                            the partition as \"1\". Similarly, the volume partition\n                            for /dev/sda is \"0\" (or you can leave the property empty).'\n                          format: int32\n                          type: integer\n                        readOnly:\n                          description: 'readOnly value true will force the readOnly\n                            setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'\n                          type: boolean\n                        volumeID:\n                          description: 'volumeID is unique ID of the persistent disk\n                            resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    azureDisk:\n                      description: azureDisk represents an Azure Data Disk mount on\n                        the host and bind mount to the pod.\n                      properties:\n                        cachingMode:\n                          description: 'cachingMode is the Host Caching mode: None,\n                            Read Only, Read Write.'\n                          type: string\n                        diskName:\n                          description: diskName is the Name of the data disk in the\n                            blob storage\n                          type: string\n                        diskURI:\n                          description: diskURI is the URI of data disk in the blob\n                            storage\n                          type: string\n                        fsType:\n                          description: fsType is Filesystem type to mount. Must be\n                            a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified.\n                          type: string\n                        kind:\n                          description: 'kind expected values are Shared: multiple\n                            blob disks per storage account  Dedicated: single blob\n                            disk per storage account  Managed: azure managed data\n                            disk (only in managed availability set). defaults to shared'\n                          type: string\n                        readOnly:\n                          description: readOnly Defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                      required:\n                      - diskName\n                      - diskURI\n                      type: object\n                    azureFile:\n                      description: azureFile represents an Azure File Service mount\n                        on the host and bind mount to the pod.\n                      properties:\n                        readOnly:\n                          description: readOnly defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretName:\n                          description: secretName is the  name of secret that contains\n                            Azure Storage Account Name and Key\n                          type: string\n                        shareName:\n                          description: shareName is the azure share Name\n                          type: string\n                      required:\n                      - secretName\n                      - shareName\n                      type: object\n                    cephfs:\n                      description: cephFS represents a Ceph FS mount on the host that\n                        shares a pod's lifetime\n                      properties:\n                        monitors:\n                          description: 'monitors is Required: Monitors is a collection\n                            of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          items:\n                            type: string\n                          type: array\n                        path:\n                          description: 'path is Optional: Used as the mounted root,\n                            rather than the full Ceph tree, default is /'\n                          type: string\n                        readOnly:\n                          description: 'readOnly is Optional: Defaults to false (read/write).\n                            ReadOnly here will force the ReadOnly setting in VolumeMounts.\n                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          type: boolean\n                        secretFile:\n                          description: 'secretFile is Optional: SecretFile is the\n                            path to key ring for User, default is /etc/ceph/user.secret\n                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          type: string\n                        secretRef:\n                          description: 'secretRef is Optional: SecretRef is reference\n                            to the authentication secret for User, default is empty.\n                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        user:\n                          description: 'user is optional: User is the rados user name,\n                            default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          type: string\n                      required:\n                      - monitors\n                      type: object\n                    cinder:\n                      description: 'cinder represents a cinder volume attached and\n                        mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to\n                            be \"ext4\" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                          type: string\n                        readOnly:\n                          description: 'readOnly defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                            More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                          type: boolean\n                        secretRef:\n                          description: 'secretRef is optional: points to a secret\n                            object containing parameters used to connect to OpenStack.'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        volumeID:\n                          description: 'volumeID used to identify the volume in cinder.\n                            More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    configMap:\n                      description: configMap represents a configMap that should populate\n                        this volume\n                      properties:\n                        defaultMode:\n                          description: 'defaultMode is optional: mode bits used to\n                            set permissions on created files by default. Must be an\n                            octal value between 0000 and 0777 or a decimal value between\n                            0 and 511. YAML accepts both octal and decimal values,\n                            JSON requires decimal values for mode bits. Defaults to\n                            0644. Directories within the path are not affected by\n                            this setting. This might be in conflict with other options\n                            that affect the file mode, like fsGroup, and the result\n                            can be other mode bits set.'\n                          format: int32\n                          type: integer\n                        items:\n                          description: items if unspecified, each key-value pair in\n                            the Data field of the referenced ConfigMap will be projected\n                            into the volume as a file whose name is the key and content\n                            is the value. If specified, the listed keys will be projected\n                            into the specified paths, and unlisted keys will not be\n                            present. If a key is specified which is not present in\n                            the ConfigMap, the volume setup will error unless it is\n                            marked optional. Paths must be relative and may not contain\n                            the '..' path or start with '..'.\n                          items:\n                            description: Maps a string key to a path within a volume.\n                            properties:\n                              key:\n                                description: key is the key to project.\n                                type: string\n                              mode:\n                                description: 'mode is Optional: mode bits used to\n                                  set permissions on this file. Must be an octal value\n                                  between 0000 and 0777 or a decimal value between\n                                  0 and 511. YAML accepts both octal and decimal values,\n                                  JSON requires decimal values for mode bits. If not\n                                  specified, the volume defaultMode will be used.\n                                  This might be in conflict with other options that\n                                  affect the file mode, like fsGroup, and the result\n                                  can be other mode bits set.'\n                                format: int32\n                                type: integer\n                              path:\n                                description: path is the relative path of the file\n                                  to map the key to. May not be an absolute path.\n                                  May not contain the path element '..'. May not start\n                                  with the string '..'.\n                                type: string\n                            required:\n                            - key\n                            - path\n                            type: object\n                          type: array\n                        name:\n                          description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            TODO: Add other useful fields. apiVersion, kind, uid?'\n                          type: string\n                        optional:\n                          description: optional specify whether the ConfigMap or its\n                            keys must be defined\n                          type: boolean\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    csi:\n                      description: csi (Container Storage Interface) represents ephemeral\n                        storage that is handled by certain external CSI drivers (Beta\n                        feature).\n                      properties:\n                        driver:\n                          description: driver is the name of the CSI driver that handles\n                            this volume. Consult with your admin for the correct name\n                            as registered in the cluster.\n                          type: string\n                        fsType:\n                          description: fsType to mount. Ex. \"ext4\", \"xfs\", \"ntfs\".\n                            If not provided, the empty value is passed to the associated\n                            CSI driver which will determine the default filesystem\n                            to apply.\n                          type: string\n                        nodePublishSecretRef:\n                          description: nodePublishSecretRef is a reference to the\n                            secret object containing sensitive information to pass\n                            to the CSI driver to complete the CSI NodePublishVolume\n                            and NodeUnpublishVolume calls. This field is optional,\n                            and  may be empty if no secret is required. If the secret\n                            object contains more than one secret, all secret references\n                            are passed.\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        readOnly:\n                          description: readOnly specifies a read-only configuration\n                            for the volume. Defaults to false (read/write).\n                          type: boolean\n                        volumeAttributes:\n                          additionalProperties:\n                            type: string\n                          description: volumeAttributes stores driver-specific properties\n                            that are passed to the CSI driver. Consult your driver's\n                            documentation for supported values.\n                          type: object\n                      required:\n                      - driver\n                      type: object\n                    downwardAPI:\n                      description: downwardAPI represents downward API about the pod\n                        that should populate this volume\n                      properties:\n                        defaultMode:\n                          description: 'Optional: mode bits to use on created files\n                            by default. Must be a Optional: mode bits used to set\n                            permissions on created files by default. Must be an octal\n                            value between 0000 and 0777 or a decimal value between\n                            0 and 511. YAML accepts both octal and decimal values,\n                            JSON requires decimal values for mode bits. Defaults to\n                            0644. Directories within the path are not affected by\n                            this setting. This might be in conflict with other options\n                            that affect the file mode, like fsGroup, and the result\n                            can be other mode bits set.'\n                          format: int32\n                          type: integer\n                        items:\n                          description: Items is a list of downward API volume file\n                          items:\n                            description: DownwardAPIVolumeFile represents information\n                              to create the file containing the pod field\n                            properties:\n                              fieldRef:\n                                description: 'Required: Selects a field of the pod:\n                                  only annotations, labels, name and namespace are\n                                  supported.'\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath\n                                      is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the\n                                      specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              mode:\n                                description: 'Optional: mode bits used to set permissions\n                                  on this file, must be an octal value between 0000\n                                  and 0777 or a decimal value between 0 and 511. YAML\n                                  accepts both octal and decimal values, JSON requires\n                                  decimal values for mode bits. If not specified,\n                                  the volume defaultMode will be used. This might\n                                  be in conflict with other options that affect the\n                                  file mode, like fsGroup, and the result can be other\n                                  mode bits set.'\n                                format: int32\n                                type: integer\n                              path:\n                                description: 'Required: Path is  the relative path\n                                  name of the file to be created. Must not be absolute\n                                  or contain the ''..'' path. Must be utf-8 encoded.\n                                  The first item of the relative path must not start\n                                  with ''..'''\n                                type: string\n                              resourceFieldRef:\n                                description: 'Selects a resource of the container:\n                                  only resources limits and requests (limits.cpu,\n                                  limits.memory, requests.cpu and requests.memory)\n                                  are currently supported.'\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes,\n                                      optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the\n                                      exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            required:\n                            - path\n                            type: object\n                          type: array\n                      type: object\n                    emptyDir:\n                      description: 'emptyDir represents a temporary directory that\n                        shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                      properties:\n                        medium:\n                          description: 'medium represents what type of storage medium\n                            should back this directory. The default is \"\" which means\n                            to use the node''s default medium. Must be an empty string\n                            (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                          type: string\n                        sizeLimit:\n                          anyOf:\n                          - type: integer\n                          - type: string\n                          description: 'sizeLimit is the total amount of local storage\n                            required for this EmptyDir volume. The size limit is also\n                            applicable for memory medium. The maximum usage on memory\n                            medium EmptyDir would be the minimum value between the\n                            SizeLimit specified here and the sum of memory limits\n                            of all containers in a pod. The default is nil which means\n                            that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                          pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                          x-kubernetes-int-or-string: true\n                      type: object\n                    ephemeral:\n                      description: \"ephemeral represents a volume that is handled\n                        by a cluster storage driver. The volume's lifecycle is tied\n                        to the pod that defines it - it will be created before the\n                        pod starts, and deleted when the pod is removed. \\n Use this\n                        if: a) the volume is only needed while the pod runs, b) features\n                        of normal volumes like restoring from snapshot or capacity\n                        tracking are needed, c) the storage driver is specified through\n                        a storage class, and d) the storage driver supports dynamic\n                        volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource\n                        for more information on the connection between this volume\n                        type and PersistentVolumeClaim). \\n Use PersistentVolumeClaim\n                        or one of the vendor-specific APIs for volumes that persist\n                        for longer than the lifecycle of an individual pod. \\n Use\n                        CSI for light-weight local ephemeral volumes if the CSI driver\n                        is meant to be used that way - see the documentation of the\n                        driver for more information. \\n A pod can use both types of\n                        ephemeral volumes and persistent volumes at the same time.\"\n                      properties:\n                        volumeClaimTemplate:\n                          description: \"Will be used to create a stand-alone PVC to\n                            provision the volume. The pod in which this EphemeralVolumeSource\n                            is embedded will be the owner of the PVC, i.e. the PVC\n                            will be deleted together with the pod.  The name of the\n                            PVC will be `<pod name>-<volume name>` where `<volume\n                            name>` is the name from the `PodSpec.Volumes` array entry.\n                            Pod validation will reject the pod if the concatenated\n                            name is not valid for a PVC (for example, too long). \\n\n                            An existing PVC with that name that is not owned by the\n                            pod will *not* be used for the pod to avoid using an unrelated\n                            volume by mistake. Starting the pod is then blocked until\n                            the unrelated PVC is removed. If such a pre-created PVC\n                            is meant to be used by the pod, the PVC has to updated\n                            with an owner reference to the pod once the pod exists.\n                            Normally this should not be necessary, but it may be useful\n                            when manually reconstructing a broken cluster. \\n This\n                            field is read-only and no changes will be made by Kubernetes\n                            to the PVC after it has been created. \\n Required, must\n                            not be nil.\"\n                          properties:\n                            metadata:\n                              description: May contain labels and annotations that\n                                will be copied into the PVC when creating it. No other\n                                fields are allowed and will be rejected during validation.\n                              type: object\n                            spec:\n                              description: The specification for the PersistentVolumeClaim.\n                                The entire content is copied unchanged into the PVC\n                                that gets created from this template. The same fields\n                                as in a PersistentVolumeClaim are also valid here.\n                              properties:\n                                accessModes:\n                                  description: 'accessModes contains the desired access\n                                    modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                                  items:\n                                    type: string\n                                  type: array\n                                dataSource:\n                                  description: 'dataSource field can be used to specify\n                                    either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\n                                    * An existing PVC (PersistentVolumeClaim) If the\n                                    provisioner or an external controller can support\n                                    the specified data source, it will create a new\n                                    volume based on the contents of the specified\n                                    data source. When the AnyVolumeDataSource feature\n                                    gate is enabled, dataSource contents will be copied\n                                    to dataSourceRef, and dataSourceRef contents will\n                                    be copied to dataSource when dataSourceRef.namespace\n                                    is not specified. If the namespace is specified,\n                                    then dataSourceRef will not be copied to dataSource.'\n                                  properties:\n                                    apiGroup:\n                                      description: APIGroup is the group for the resource\n                                        being referenced. If APIGroup is not specified,\n                                        the specified Kind must be in the core API\n                                        group. For any other third-party types, APIGroup\n                                        is required.\n                                      type: string\n                                    kind:\n                                      description: Kind is the type of resource being\n                                        referenced\n                                      type: string\n                                    name:\n                                      description: Name is the name of resource being\n                                        referenced\n                                      type: string\n                                  required:\n                                  - kind\n                                  - name\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                dataSourceRef:\n                                  description: 'dataSourceRef specifies the object\n                                    from which to populate the volume with data, if\n                                    a non-empty volume is desired. This may be any\n                                    object from a non-empty API group (non core object)\n                                    or a PersistentVolumeClaim object. When this field\n                                    is specified, volume binding will only succeed\n                                    if the type of the specified object matches some\n                                    installed volume populator or dynamic provisioner.\n                                    This field will replace the functionality of the\n                                    dataSource field and as such if both fields are\n                                    non-empty, they must have the same value. For\n                                    backwards compatibility, when namespace isn''t\n                                    specified in dataSourceRef, both fields (dataSource\n                                    and dataSourceRef) will be set to the same value\n                                    automatically if one of them is empty and the\n                                    other is non-empty. When namespace is specified\n                                    in dataSourceRef, dataSource isn''t set to the\n                                    same value and must be empty. There are three\n                                    important differences between dataSource and dataSourceRef:\n                                    * While dataSource only allows two specific types\n                                    of objects, dataSourceRef allows any non-core\n                                    object, as well as PersistentVolumeClaim objects.\n                                    * While dataSource ignores disallowed values (dropping\n                                    them), dataSourceRef preserves all values, and\n                                    generates an error if a disallowed value is specified.\n                                    * While dataSource only allows local objects,\n                                    dataSourceRef allows objects in any namespaces.\n                                    (Beta) Using this field requires the AnyVolumeDataSource\n                                    feature gate to be enabled. (Alpha) Using the\n                                    namespace field of dataSourceRef requires the\n                                    CrossNamespaceVolumeDataSource feature gate to\n                                    be enabled.'\n                                  properties:\n                                    apiGroup:\n                                      description: APIGroup is the group for the resource\n                                        being referenced. If APIGroup is not specified,\n                                        the specified Kind must be in the core API\n                                        group. For any other third-party types, APIGroup\n                                        is required.\n                                      type: string\n                                    kind:\n                                      description: Kind is the type of resource being\n                                        referenced\n                                      type: string\n                                    name:\n                                      description: Name is the name of resource being\n                                        referenced\n                                      type: string\n                                    namespace:\n                                      description: Namespace is the namespace of resource\n                                        being referenced Note that when a namespace\n                                        is specified, a gateway.networking.k8s.io/ReferenceGrant\n                                        object is required in the referent namespace\n                                        to allow that namespace's owner to accept\n                                        the reference. See the ReferenceGrant documentation\n                                        for details. (Alpha) This field requires the\n                                        CrossNamespaceVolumeDataSource feature gate\n                                        to be enabled.\n                                      type: string\n                                  required:\n                                  - kind\n                                  - name\n                                  type: object\n                                resources:\n                                  description: 'resources represents the minimum resources\n                                    the volume should have. If RecoverVolumeExpansionFailure\n                                    feature is enabled users are allowed to specify\n                                    resource requirements that are lower than previous\n                                    value but must still be higher than capacity recorded\n                                    in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'\n                                  properties:\n                                    claims:\n                                      description: \"Claims lists the names of resources,\n                                        defined in spec.resourceClaims, that are used\n                                        by this container. \\n This is an alpha field\n                                        and requires enabling the DynamicResourceAllocation\n                                        feature gate. \\n This field is immutable.\n                                        It can only be set for containers.\"\n                                      items:\n                                        description: ResourceClaim references one\n                                          entry in PodSpec.ResourceClaims.\n                                        properties:\n                                          name:\n                                            description: Name must match the name\n                                              of one entry in pod.spec.resourceClaims\n                                              of the Pod where this field is used.\n                                              It makes that resource available inside\n                                              a container.\n                                            type: string\n                                        required:\n                                        - name\n                                        type: object\n                                      type: array\n                                      x-kubernetes-list-map-keys:\n                                      - name\n                                      x-kubernetes-list-type: map\n                                    limits:\n                                      additionalProperties:\n                                        anyOf:\n                                        - type: integer\n                                        - type: string\n                                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                        x-kubernetes-int-or-string: true\n                                      description: 'Limits describes the maximum amount\n                                        of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                      type: object\n                                    requests:\n                                      additionalProperties:\n                                        anyOf:\n                                        - type: integer\n                                        - type: string\n                                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                        x-kubernetes-int-or-string: true\n                                      description: 'Requests describes the minimum\n                                        amount of compute resources required. If Requests\n                                        is omitted for a container, it defaults to\n                                        Limits if that is explicitly specified, otherwise\n                                        to an implementation-defined value. Requests\n                                        cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                      type: object\n                                  type: object\n                                selector:\n                                  description: selector is a label query over volumes\n                                    to consider for binding.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label\n                                        selector requirements. The requirements are\n                                        ANDed.\n                                      items:\n                                        description: A label selector requirement\n                                          is a selector that contains values, a key,\n                                          and an operator that relates the key and\n                                          values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that\n                                              the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's\n                                              relationship to a set of values. Valid\n                                              operators are In, NotIn, Exists and\n                                              DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string\n                                              values. If the operator is In or NotIn,\n                                              the values array must be non-empty.\n                                              If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This\n                                              array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value}\n                                        pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions,\n                                        whose key field is \"key\", the operator is\n                                        \"In\", and the values array contains only \"value\".\n                                        The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                storageClassName:\n                                  description: 'storageClassName is the name of the\n                                    StorageClass required by the claim. More info:\n                                    https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'\n                                  type: string\n                                volumeMode:\n                                  description: volumeMode defines what type of volume\n                                    is required by the claim. Value of Filesystem\n                                    is implied when not included in claim spec.\n                                  type: string\n                                volumeName:\n                                  description: volumeName is the binding reference\n                                    to the PersistentVolume backing this claim.\n                                  type: string\n                              type: object\n                          required:\n                          - spec\n                          type: object\n                      type: object\n                    fc:\n                      description: fc represents a Fibre Channel resource that is\n                        attached to a kubelet's host machine and then exposed to the\n                        pod.\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified. TODO: how do we prevent errors in the\n                            filesystem from compromising the machine'\n                          type: string\n                        lun:\n                          description: 'lun is Optional: FC target lun number'\n                          format: int32\n                          type: integer\n                        readOnly:\n                          description: 'readOnly is Optional: Defaults to false (read/write).\n                            ReadOnly here will force the ReadOnly setting in VolumeMounts.'\n                          type: boolean\n                        targetWWNs:\n                          description: 'targetWWNs is Optional: FC target worldwide\n                            names (WWNs)'\n                          items:\n                            type: string\n                          type: array\n                        wwids:\n                          description: 'wwids Optional: FC volume world wide identifiers\n                            (wwids) Either wwids or combination of targetWWNs and\n                            lun must be set, but not both simultaneously.'\n                          items:\n                            type: string\n                          type: array\n                      type: object\n                    flexVolume:\n                      description: flexVolume represents a generic volume resource\n                        that is provisioned/attached using an exec based plugin.\n                      properties:\n                        driver:\n                          description: driver is the name of the driver to use for\n                            this volume.\n                          type: string\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". The default filesystem depends\n                            on FlexVolume script.\n                          type: string\n                        options:\n                          additionalProperties:\n                            type: string\n                          description: 'options is Optional: this field holds extra\n                            command options if any.'\n                          type: object\n                        readOnly:\n                          description: 'readOnly is Optional: defaults to false (read/write).\n                            ReadOnly here will force the ReadOnly setting in VolumeMounts.'\n                          type: boolean\n                        secretRef:\n                          description: 'secretRef is Optional: secretRef is reference\n                            to the secret object containing sensitive information\n                            to pass to the plugin scripts. This may be empty if no\n                            secret object is specified. If the secret object contains\n                            more than one secret, all secrets are passed to the plugin\n                            scripts.'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      required:\n                      - driver\n                      type: object\n                    flocker:\n                      description: flocker represents a Flocker volume attached to\n                        a kubelet's host machine. This depends on the Flocker control\n                        service being running\n                      properties:\n                        datasetName:\n                          description: datasetName is Name of the dataset stored as\n                            metadata -> name on the dataset for Flocker should be\n                            considered as deprecated\n                          type: string\n                        datasetUUID:\n                          description: datasetUUID is the UUID of the dataset. This\n                            is unique identifier of a Flocker dataset\n                          type: string\n                      type: object\n                    gcePersistentDisk:\n                      description: 'gcePersistentDisk represents a GCE Disk resource\n                        that is attached to a kubelet''s host machine and then exposed\n                        to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                      properties:\n                        fsType:\n                          description: 'fsType is filesystem type of the volume that\n                            you want to mount. Tip: Ensure that the filesystem type\n                            is supported by the host operating system. Examples: \"ext4\",\n                            \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\n                            TODO: how do we prevent errors in the filesystem from\n                            compromising the machine'\n                          type: string\n                        partition:\n                          description: 'partition is the partition in the volume that\n                            you want to mount. If omitted, the default is to mount\n                            by volume name. Examples: For volume /dev/sda1, you specify\n                            the partition as \"1\". Similarly, the volume partition\n                            for /dev/sda is \"0\" (or you can leave the property empty).\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                          format: int32\n                          type: integer\n                        pdName:\n                          description: 'pdName is unique name of the PD resource in\n                            GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the ReadOnly setting\n                            in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                          type: boolean\n                      required:\n                      - pdName\n                      type: object\n                    gitRepo:\n                      description: 'gitRepo represents a git repository at a particular\n                        revision. DEPRECATED: GitRepo is deprecated. To provision\n                        a container with a git repo, mount an EmptyDir into an InitContainer\n                        that clones the repo using git, then mount the EmptyDir into\n                        the Pod''s container.'\n                      properties:\n                        directory:\n                          description: directory is the target directory name. Must\n                            not contain or start with '..'.  If '.' is supplied, the\n                            volume directory will be the git repository.  Otherwise,\n                            if specified, the volume will contain the git repository\n                            in the subdirectory with the given name.\n                          type: string\n                        repository:\n                          description: repository is the URL\n                          type: string\n                        revision:\n                          description: revision is the commit hash for the specified\n                            revision.\n                          type: string\n                      required:\n                      - repository\n                      type: object\n                    glusterfs:\n                      description: 'glusterfs represents a Glusterfs mount on the\n                        host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md'\n                      properties:\n                        endpoints:\n                          description: 'endpoints is the endpoint name that details\n                            Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'\n                          type: string\n                        path:\n                          description: 'path is the Glusterfs volume path. More info:\n                            https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the Glusterfs volume\n                            to be mounted with read-only permissions. Defaults to\n                            false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'\n                          type: boolean\n                      required:\n                      - endpoints\n                      - path\n                      type: object\n                    hostPath:\n                      description: 'hostPath represents a pre-existing file or directory\n                        on the host machine that is directly exposed to the container.\n                        This is generally used for system agents or other privileged\n                        things that are allowed to see the host machine. Most containers\n                        will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\n                        --- TODO(jonesdl) We need to restrict who can use host directory\n                        mounts and who can/can not mount host directories as read/write.'\n                      properties:\n                        path:\n                          description: 'path of the directory on the host. If the\n                            path is a symlink, it will follow the link to the real\n                            path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'\n                          type: string\n                        type:\n                          description: 'type for HostPath Volume Defaults to \"\" More\n                            info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'\n                          type: string\n                      required:\n                      - path\n                      type: object\n                    iscsi:\n                      description: 'iscsi represents an ISCSI Disk resource that is\n                        attached to a kubelet''s host machine and then exposed to\n                        the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md'\n                      properties:\n                        chapAuthDiscovery:\n                          description: chapAuthDiscovery defines whether support iSCSI\n                            Discovery CHAP authentication\n                          type: boolean\n                        chapAuthSession:\n                          description: chapAuthSession defines whether support iSCSI\n                            Session CHAP authentication\n                          type: boolean\n                        fsType:\n                          description: 'fsType is the filesystem type of the volume\n                            that you want to mount. Tip: Ensure that the filesystem\n                            type is supported by the host operating system. Examples:\n                            \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\n                            TODO: how do we prevent errors in the filesystem from\n                            compromising the machine'\n                          type: string\n                        initiatorName:\n                          description: initiatorName is the custom iSCSI Initiator\n                            Name. If initiatorName is specified with iscsiInterface\n                            simultaneously, new iSCSI interface <target portal>:<volume\n                            name> will be created for the connection.\n                          type: string\n                        iqn:\n                          description: iqn is the target iSCSI Qualified Name.\n                          type: string\n                        iscsiInterface:\n                          description: iscsiInterface is the interface Name that uses\n                            an iSCSI transport. Defaults to 'default' (tcp).\n                          type: string\n                        lun:\n                          description: lun represents iSCSI Target Lun number.\n                          format: int32\n                          type: integer\n                        portals:\n                          description: portals is the iSCSI Target Portal List. The\n                            portal is either an IP or ip_addr:port if the port is\n                            other than default (typically TCP ports 860 and 3260).\n                          items:\n                            type: string\n                          type: array\n                        readOnly:\n                          description: readOnly here will force the ReadOnly setting\n                            in VolumeMounts. Defaults to false.\n                          type: boolean\n                        secretRef:\n                          description: secretRef is the CHAP Secret for iSCSI target\n                            and initiator authentication\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        targetPortal:\n                          description: targetPortal is iSCSI Target Portal. The Portal\n                            is either an IP or ip_addr:port if the port is other than\n                            default (typically TCP ports 860 and 3260).\n                          type: string\n                      required:\n                      - iqn\n                      - lun\n                      - targetPortal\n                      type: object\n                    name:\n                      description: 'name of the volume. Must be a DNS_LABEL and unique\n                        within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                      type: string\n                    nfs:\n                      description: 'nfs represents an NFS mount on the host that shares\n                        a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                      properties:\n                        path:\n                          description: 'path that is exported by the NFS server. More\n                            info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the NFS export to\n                            be mounted with read-only permissions. Defaults to false.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                          type: boolean\n                        server:\n                          description: 'server is the hostname or IP address of the\n                            NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                          type: string\n                      required:\n                      - path\n                      - server\n                      type: object\n                    persistentVolumeClaim:\n                      description: 'persistentVolumeClaimVolumeSource represents a\n                        reference to a PersistentVolumeClaim in the same namespace.\n                        More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'\n                      properties:\n                        claimName:\n                          description: 'claimName is the name of a PersistentVolumeClaim\n                            in the same namespace as the pod using this volume. More\n                            info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'\n                          type: string\n                        readOnly:\n                          description: readOnly Will force the ReadOnly setting in\n                            VolumeMounts. Default false.\n                          type: boolean\n                      required:\n                      - claimName\n                      type: object\n                    photonPersistentDisk:\n                      description: photonPersistentDisk represents a PhotonController\n                        persistent disk attached and mounted on kubelets host machine\n                      properties:\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified.\n                          type: string\n                        pdID:\n                          description: pdID is the ID that identifies Photon Controller\n                            persistent disk\n                          type: string\n                      required:\n                      - pdID\n                      type: object\n                    portworxVolume:\n                      description: portworxVolume represents a portworx volume attached\n                        and mounted on kubelets host machine\n                      properties:\n                        fsType:\n                          description: fSType represents the filesystem type to mount\n                            Must be a filesystem type supported by the host operating\n                            system. Ex. \"ext4\", \"xfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified.\n                          type: string\n                        readOnly:\n                          description: readOnly defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        volumeID:\n                          description: volumeID uniquely identifies a Portworx volume\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    projected:\n                      description: projected items for all in one resources secrets,\n                        configmaps, and downward API\n                      properties:\n                        defaultMode:\n                          description: defaultMode are the mode bits used to set permissions\n                            on created files by default. Must be an octal value between\n                            0000 and 0777 or a decimal value between 0 and 511. YAML\n                            accepts both octal and decimal values, JSON requires decimal\n                            values for mode bits. Directories within the path are\n                            not affected by this setting. This might be in conflict\n                            with other options that affect the file mode, like fsGroup,\n                            and the result can be other mode bits set.\n                          format: int32\n                          type: integer\n                        sources:\n                          description: sources is the list of volume projections\n                          items:\n                            description: Projection that may be projected along with\n                              other supported volume types\n                            properties:\n                              configMap:\n                                description: configMap information about the configMap\n                                  data to project\n                                properties:\n                                  items:\n                                    description: items if unspecified, each key-value\n                                      pair in the Data field of the referenced ConfigMap\n                                      will be projected into the volume as a file\n                                      whose name is the key and content is the value.\n                                      If specified, the listed keys will be projected\n                                      into the specified paths, and unlisted keys\n                                      will not be present. If a key is specified which\n                                      is not present in the ConfigMap, the volume\n                                      setup will error unless it is marked optional.\n                                      Paths must be relative and may not contain the\n                                      '..' path or start with '..'.\n                                    items:\n                                      description: Maps a string key to a path within\n                                        a volume.\n                                      properties:\n                                        key:\n                                          description: key is the key to project.\n                                          type: string\n                                        mode:\n                                          description: 'mode is Optional: mode bits\n                                            used to set permissions on this file.\n                                            Must be an octal value between 0000 and\n                                            0777 or a decimal value between 0 and\n                                            511. YAML accepts both octal and decimal\n                                            values, JSON requires decimal values for\n                                            mode bits. If not specified, the volume\n                                            defaultMode will be used. This might be\n                                            in conflict with other options that affect\n                                            the file mode, like fsGroup, and the result\n                                            can be other mode bits set.'\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: path is the relative path of\n                                            the file to map the key to. May not be\n                                            an absolute path. May not contain the\n                                            path element '..'. May not start with\n                                            the string '..'.\n                                          type: string\n                                      required:\n                                      - key\n                                      - path\n                                      type: object\n                                    type: array\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: optional specify whether the ConfigMap\n                                      or its keys must be defined\n                                    type: boolean\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              downwardAPI:\n                                description: downwardAPI information about the downwardAPI\n                                  data to project\n                                properties:\n                                  items:\n                                    description: Items is a list of DownwardAPIVolume\n                                      file\n                                    items:\n                                      description: DownwardAPIVolumeFile represents\n                                        information to create the file containing\n                                        the pod field\n                                      properties:\n                                        fieldRef:\n                                          description: 'Required: Selects a field\n                                            of the pod: only annotations, labels,\n                                            name and namespace are supported.'\n                                          properties:\n                                            apiVersion:\n                                              description: Version of the schema the\n                                                FieldPath is written in terms of,\n                                                defaults to \"v1\".\n                                              type: string\n                                            fieldPath:\n                                              description: Path of the field to select\n                                                in the specified API version.\n                                              type: string\n                                          required:\n                                          - fieldPath\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                        mode:\n                                          description: 'Optional: mode bits used to\n                                            set permissions on this file, must be\n                                            an octal value between 0000 and 0777 or\n                                            a decimal value between 0 and 511. YAML\n                                            accepts both octal and decimal values,\n                                            JSON requires decimal values for mode\n                                            bits. If not specified, the volume defaultMode\n                                            will be used. This might be in conflict\n                                            with other options that affect the file\n                                            mode, like fsGroup, and the result can\n                                            be other mode bits set.'\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: 'Required: Path is  the relative\n                                            path name of the file to be created. Must\n                                            not be absolute or contain the ''..''\n                                            path. Must be utf-8 encoded. The first\n                                            item of the relative path must not start\n                                            with ''..'''\n                                          type: string\n                                        resourceFieldRef:\n                                          description: 'Selects a resource of the\n                                            container: only resources limits and requests\n                                            (limits.cpu, limits.memory, requests.cpu\n                                            and requests.memory) are currently supported.'\n                                          properties:\n                                            containerName:\n                                              description: 'Container name: required\n                                                for volumes, optional for env vars'\n                                              type: string\n                                            divisor:\n                                              anyOf:\n                                              - type: integer\n                                              - type: string\n                                              description: Specifies the output format\n                                                of the exposed resources, defaults\n                                                to \"1\"\n                                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                              x-kubernetes-int-or-string: true\n                                            resource:\n                                              description: 'Required: resource to\n                                                select'\n                                              type: string\n                                          required:\n                                          - resource\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                      required:\n                                      - path\n                                      type: object\n                                    type: array\n                                type: object\n                              secret:\n                                description: secret information about the secret data\n                                  to project\n                                properties:\n                                  items:\n                                    description: items if unspecified, each key-value\n                                      pair in the Data field of the referenced Secret\n                                      will be projected into the volume as a file\n                                      whose name is the key and content is the value.\n                                      If specified, the listed keys will be projected\n                                      into the specified paths, and unlisted keys\n                                      will not be present. If a key is specified which\n                                      is not present in the Secret, the volume setup\n                                      will error unless it is marked optional. Paths\n                                      must be relative and may not contain the '..'\n                                      path or start with '..'.\n                                    items:\n                                      description: Maps a string key to a path within\n                                        a volume.\n                                      properties:\n                                        key:\n                                          description: key is the key to project.\n                                          type: string\n                                        mode:\n                                          description: 'mode is Optional: mode bits\n                                            used to set permissions on this file.\n                                            Must be an octal value between 0000 and\n                                            0777 or a decimal value between 0 and\n                                            511. YAML accepts both octal and decimal\n                                            values, JSON requires decimal values for\n                                            mode bits. If not specified, the volume\n                                            defaultMode will be used. This might be\n                                            in conflict with other options that affect\n                                            the file mode, like fsGroup, and the result\n                                            can be other mode bits set.'\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: path is the relative path of\n                                            the file to map the key to. May not be\n                                            an absolute path. May not contain the\n                                            path element '..'. May not start with\n                                            the string '..'.\n                                          type: string\n                                      required:\n                                      - key\n                                      - path\n                                      type: object\n                                    type: array\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: optional field specify whether the\n                                      Secret or its key must be defined\n                                    type: boolean\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              serviceAccountToken:\n                                description: serviceAccountToken is information about\n                                  the serviceAccountToken data to project\n                                properties:\n                                  audience:\n                                    description: audience is the intended audience\n                                      of the token. A recipient of a token must identify\n                                      itself with an identifier specified in the audience\n                                      of the token, and otherwise should reject the\n                                      token. The audience defaults to the identifier\n                                      of the apiserver.\n                                    type: string\n                                  expirationSeconds:\n                                    description: expirationSeconds is the requested\n                                      duration of validity of the service account\n                                      token. As the token approaches expiration, the\n                                      kubelet volume plugin will proactively rotate\n                                      the service account token. The kubelet will\n                                      start trying to rotate the token if the token\n                                      is older than 80 percent of its time to live\n                                      or if the token is older than 24 hours.Defaults\n                                      to 1 hour and must be at least 10 minutes.\n                                    format: int64\n                                    type: integer\n                                  path:\n                                    description: path is the path relative to the\n                                      mount point of the file to project the token\n                                      into.\n                                    type: string\n                                required:\n                                - path\n                                type: object\n                            type: object\n                          type: array\n                      type: object\n                    quobyte:\n                      description: quobyte represents a Quobyte mount on the host\n                        that shares a pod's lifetime\n                      properties:\n                        group:\n                          description: group to map volume access to Default is no\n                            group\n                          type: string\n                        readOnly:\n                          description: readOnly here will force the Quobyte volume\n                            to be mounted with read-only permissions. Defaults to\n                            false.\n                          type: boolean\n                        registry:\n                          description: registry represents a single or multiple Quobyte\n                            Registry services specified as a string as host:port pair\n                            (multiple entries are separated with commas) which acts\n                            as the central registry for volumes\n                          type: string\n                        tenant:\n                          description: tenant owning the given Quobyte volume in the\n                            Backend Used with dynamically provisioned Quobyte volumes,\n                            value is set by the plugin\n                          type: string\n                        user:\n                          description: user to map volume access to Defaults to serivceaccount\n                            user\n                          type: string\n                        volume:\n                          description: volume is a string that references an already\n                            created Quobyte volume by name.\n                          type: string\n                      required:\n                      - registry\n                      - volume\n                      type: object\n                    rbd:\n                      description: 'rbd represents a Rados Block Device mount on the\n                        host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md'\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type of the volume\n                            that you want to mount. Tip: Ensure that the filesystem\n                            type is supported by the host operating system. Examples:\n                            \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\n                            TODO: how do we prevent errors in the filesystem from\n                            compromising the machine'\n                          type: string\n                        image:\n                          description: 'image is the rados image name. More info:\n                            https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                        keyring:\n                          description: 'keyring is the path to key ring for RBDUser.\n                            Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                        monitors:\n                          description: 'monitors is a collection of Ceph monitors.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          items:\n                            type: string\n                          type: array\n                        pool:\n                          description: 'pool is the rados pool name. Default is rbd.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the ReadOnly setting\n                            in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: boolean\n                        secretRef:\n                          description: 'secretRef is name of the authentication secret\n                            for RBDUser. If provided overrides keyring. Default is\n                            nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        user:\n                          description: 'user is the rados user name. Default is admin.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                      required:\n                      - image\n                      - monitors\n                      type: object\n                    scaleIO:\n                      description: scaleIO represents a ScaleIO persistent volume\n                        attached and mounted on Kubernetes nodes.\n                      properties:\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Default is \"xfs\".\n                          type: string\n                        gateway:\n                          description: gateway is the host address of the ScaleIO\n                            API Gateway.\n                          type: string\n                        protectionDomain:\n                          description: protectionDomain is the name of the ScaleIO\n                            Protection Domain for the configured storage.\n                          type: string\n                        readOnly:\n                          description: readOnly Defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretRef:\n                          description: secretRef references to the secret for ScaleIO\n                            user and other sensitive information. If this is not provided,\n                            Login operation will fail.\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        sslEnabled:\n                          description: sslEnabled Flag enable/disable SSL communication\n                            with Gateway, default false\n                          type: boolean\n                        storageMode:\n                          description: storageMode indicates whether the storage for\n                            a volume should be ThickProvisioned or ThinProvisioned.\n                            Default is ThinProvisioned.\n                          type: string\n                        storagePool:\n                          description: storagePool is the ScaleIO Storage Pool associated\n                            with the protection domain.\n                          type: string\n                        system:\n                          description: system is the name of the storage system as\n                            configured in ScaleIO.\n                          type: string\n                        volumeName:\n                          description: volumeName is the name of a volume already\n                            created in the ScaleIO system that is associated with\n                            this volume source.\n                          type: string\n                      required:\n                      - gateway\n                      - secretRef\n                      - system\n                      type: object\n                    secret:\n                      description: 'secret represents a secret that should populate\n                        this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'\n                      properties:\n                        defaultMode:\n                          description: 'defaultMode is Optional: mode bits used to\n                            set permissions on created files by default. Must be an\n                            octal value between 0000 and 0777 or a decimal value between\n                            0 and 511. YAML accepts both octal and decimal values,\n                            JSON requires decimal values for mode bits. Defaults to\n                            0644. Directories within the path are not affected by\n                            this setting. This might be in conflict with other options\n                            that affect the file mode, like fsGroup, and the result\n                            can be other mode bits set.'\n                          format: int32\n                          type: integer\n                        items:\n                          description: items If unspecified, each key-value pair in\n                            the Data field of the referenced Secret will be projected\n                            into the volume as a file whose name is the key and content\n                            is the value. If specified, the listed keys will be projected\n                            into the specified paths, and unlisted keys will not be\n                            present. If a key is specified which is not present in\n                            the Secret, the volume setup will error unless it is marked\n                            optional. Paths must be relative and may not contain the\n                            '..' path or start with '..'.\n                          items:\n                            description: Maps a string key to a path within a volume.\n                            properties:\n                              key:\n                                description: key is the key to project.\n                                type: string\n                              mode:\n                                description: 'mode is Optional: mode bits used to\n                                  set permissions on this file. Must be an octal value\n                                  between 0000 and 0777 or a decimal value between\n                                  0 and 511. YAML accepts both octal and decimal values,\n                                  JSON requires decimal values for mode bits. If not\n                                  specified, the volume defaultMode will be used.\n                                  This might be in conflict with other options that\n                                  affect the file mode, like fsGroup, and the result\n                                  can be other mode bits set.'\n                                format: int32\n                                type: integer\n                              path:\n                                description: path is the relative path of the file\n                                  to map the key to. May not be an absolute path.\n                                  May not contain the path element '..'. May not start\n                                  with the string '..'.\n                                type: string\n                            required:\n                            - key\n                            - path\n                            type: object\n                          type: array\n                        optional:\n                          description: optional field specify whether the Secret or\n                            its keys must be defined\n                          type: boolean\n                        secretName:\n                          description: 'secretName is the name of the secret in the\n                            pod''s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'\n                          type: string\n                      type: object\n                    storageos:\n                      description: storageOS represents a StorageOS volume attached\n                        and mounted on Kubernetes nodes.\n                      properties:\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified.\n                          type: string\n                        readOnly:\n                          description: readOnly defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretRef:\n                          description: secretRef specifies the secret to use for obtaining\n                            the StorageOS API credentials.  If not specified, default\n                            values will be attempted.\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        volumeName:\n                          description: volumeName is the human-readable name of the\n                            StorageOS volume.  Volume names are only unique within\n                            a namespace.\n                          type: string\n                        volumeNamespace:\n                          description: volumeNamespace specifies the scope of the\n                            volume within StorageOS.  If no namespace is specified\n                            then the Pod's namespace will be used.  This allows the\n                            Kubernetes name scoping to be mirrored within StorageOS\n                            for tighter integration. Set VolumeName to any name to\n                            override the default behaviour. Set to \"default\" if you\n                            are not using namespaces within StorageOS. Namespaces\n                            that do not pre-exist within StorageOS will be created.\n                          type: string\n                      type: object\n                    vsphereVolume:\n                      description: vsphereVolume represents a vSphere volume attached\n                        and mounted on kubelets host machine\n                      properties:\n                        fsType:\n                          description: fsType is filesystem type to mount. Must be\n                            a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified.\n                          type: string\n                        storagePolicyID:\n                          description: storagePolicyID is the storage Policy Based\n                            Management (SPBM) profile ID associated with the StoragePolicyName.\n                          type: string\n                        storagePolicyName:\n                          description: storagePolicyName is the storage Policy Based\n                            Management (SPBM) profile name.\n                          type: string\n                        volumePath:\n                          description: volumePath is the path that identifies vSphere\n                            volume vmdk\n                          type: string\n                      required:\n                      - volumePath\n                      type: object\n                  required:\n                  - name\n                  type: object\n                type: array\n              walCompression:\n                description: \"Configures compression of the write-ahead log (WAL)\n                  using Snappy. \\n WAL compression is enabled by default for Prometheus\n                  >= 2.20.0 \\n Requires Prometheus v2.11.0 and above.\"\n                type: boolean\n              web:\n                description: Defines the configuration of the Prometheus web server.\n                properties:\n                  httpConfig:\n                    description: Defines HTTP parameters for web server.\n                    properties:\n                      headers:\n                        description: List of headers that can be added to HTTP responses.\n                        properties:\n                          contentSecurityPolicy:\n                            description: Set the Content-Security-Policy header to\n                              HTTP responses. Unset if blank.\n                            type: string\n                          strictTransportSecurity:\n                            description: Set the Strict-Transport-Security header\n                              to HTTP responses. Unset if blank. Please make sure\n                              that you use this with care as this header might force\n                              browsers to load Prometheus and the other applications\n                              hosted on the same domain and subdomains over HTTPS.\n                              https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security\n                            type: string\n                          xContentTypeOptions:\n                            description: Set the X-Content-Type-Options header to\n                              HTTP responses. Unset if blank. Accepted value is nosniff.\n                              https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options\n                            enum:\n                            - \"\"\n                            - NoSniff\n                            type: string\n                          xFrameOptions:\n                            description: Set the X-Frame-Options header to HTTP responses.\n                              Unset if blank. Accepted values are deny and sameorigin.\n                              https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options\n                            enum:\n                            - \"\"\n                            - Deny\n                            - SameOrigin\n                            type: string\n                          xXSSProtection:\n                            description: Set the X-XSS-Protection header to all responses.\n                              Unset if blank. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection\n                            type: string\n                        type: object\n                      http2:\n                        description: Enable HTTP/2 support. Note that HTTP/2 is only\n                          supported with TLS. When TLSConfig is not configured, HTTP/2\n                          will be disabled. Whenever the value of the field changes,\n                          a rolling update will be triggered.\n                        type: boolean\n                    type: object\n                  maxConnections:\n                    description: Defines the maximum number of simultaneous connections\n                      A zero value means that Prometheus doesn't accept any incoming\n                      connection.\n                    format: int32\n                    minimum: 0\n                    type: integer\n                  pageTitle:\n                    description: The prometheus web page title.\n                    type: string\n                  tlsConfig:\n                    description: Defines the TLS parameters for HTTPS.\n                    properties:\n                      cert:\n                        description: Contains the TLS certificate for the server.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the\n                              targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its\n                                  key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      cipherSuites:\n                        description: 'List of supported cipher suites for TLS versions\n                          up to TLS 1.2. If empty, Go default cipher suites are used.\n                          Available cipher suites are documented in the go documentation:\n                          https://golang.org/pkg/crypto/tls/#pkg-constants'\n                        items:\n                          type: string\n                        type: array\n                      client_ca:\n                        description: Contains the CA certificate for client certificate\n                          authentication to the server.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the\n                              targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its\n                                  key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      clientAuthType:\n                        description: 'Server policy for client authentication. Maps\n                          to ClientAuth Policies. For more detail on clientAuth options:\n                          https://golang.org/pkg/crypto/tls/#ClientAuthType'\n                        type: string\n                      curvePreferences:\n                        description: 'Elliptic curves that will be used in an ECDHE\n                          handshake, in preference order. Available curves are documented\n                          in the go documentation: https://golang.org/pkg/crypto/tls/#CurveID'\n                        items:\n                          type: string\n                        type: array\n                      keySecret:\n                        description: Secret containing the TLS key for the server.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must\n                              be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must\n                              be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      maxVersion:\n                        description: Maximum TLS version that is acceptable. Defaults\n                          to TLS13.\n                        type: string\n                      minVersion:\n                        description: Minimum TLS version that is acceptable. Defaults\n                          to TLS12.\n                        type: string\n                      preferServerCipherSuites:\n                        description: Controls whether the server selects the client's\n                          most preferred cipher suite, or the server's most preferred\n                          cipher suite. If true then the server's preference, as expressed\n                          in the order of elements in cipherSuites, is used.\n                        type: boolean\n                    required:\n                    - cert\n                    - keySecret\n                    type: object\n                type: object\n            type: object\n          status:\n            description: 'Most recent observed status of the Prometheus cluster. Read-only.\n              More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status'\n            properties:\n              availableReplicas:\n                description: Total number of available pods (ready for at least minReadySeconds)\n                  targeted by this Prometheus deployment.\n                format: int32\n                type: integer\n              conditions:\n                description: The current state of the Prometheus deployment.\n                items:\n                  description: Condition represents the state of the resources associated\n                    with the Prometheus, Alertmanager or ThanosRuler resource.\n                  properties:\n                    lastTransitionTime:\n                      description: lastTransitionTime is the time of the last update\n                        to the current status property.\n                      format: date-time\n                      type: string\n                    message:\n                      description: Human-readable message indicating details for the\n                        condition's last transition.\n                      type: string\n                    observedGeneration:\n                      description: ObservedGeneration represents the .metadata.generation\n                        that the condition was set based upon. For instance, if `.metadata.generation`\n                        is currently 12, but the `.status.conditions[].observedGeneration`\n                        is 9, the condition is out of date with respect to the current\n                        state of the instance.\n                      format: int64\n                      type: integer\n                    reason:\n                      description: Reason for the condition's last transition.\n                      type: string\n                    status:\n                      description: Status of the condition.\n                      type: string\n                    type:\n                      description: Type of the condition being reported.\n                      type: string\n                  required:\n                  - lastTransitionTime\n                  - status\n                  - type\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - type\n                x-kubernetes-list-type: map\n              paused:\n                description: Represents whether any actions on the underlying managed\n                  objects are being performed. Only delete actions will be performed.\n                type: boolean\n              replicas:\n                description: Total number of non-terminated pods targeted by this\n                  Prometheus deployment (their labels match the selector).\n                format: int32\n                type: integer\n              shardStatuses:\n                description: The list has one entry per shard. Each entry provides\n                  a summary of the shard status.\n                items:\n                  properties:\n                    availableReplicas:\n                      description: Total number of available pods (ready for at least\n                        minReadySeconds) targeted by this shard.\n                      format: int32\n                      type: integer\n                    replicas:\n                      description: Total number of pods targeted by this shard.\n                      format: int32\n                      type: integer\n                    shardID:\n                      description: Identifier of the shard.\n                      type: string\n                    unavailableReplicas:\n                      description: Total number of unavailable pods targeted by this\n                        shard.\n                      format: int32\n                      type: integer\n                    updatedReplicas:\n                      description: Total number of non-terminated pods targeted by\n                        this shard that have the desired spec.\n                      format: int32\n                      type: integer\n                  required:\n                  - availableReplicas\n                  - replicas\n                  - shardID\n                  - unavailableReplicas\n                  - updatedReplicas\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - shardID\n                x-kubernetes-list-type: map\n              unavailableReplicas:\n                description: Total number of unavailable pods targeted by this Prometheus\n                  deployment.\n                format: int32\n                type: integer\n              updatedReplicas:\n                description: Total number of non-terminated pods targeted by this\n                  Prometheus deployment that have the desired version spec.\n                format: int32\n                type: integer\n            required:\n            - availableReplicas\n            - paused\n            - replicas\n            - unavailableReplicas\n            - updatedReplicas\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n    subresources:\n      status: {}\n---\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.11.1\n  creationTimestamp: null\n  name: prometheuses.monitoring.coreos.com\nspec:\n  group: monitoring.coreos.com\n  names:\n    categories:\n    - prometheus-operator\n    kind: Prometheus\n    listKind: PrometheusList\n    plural: prometheuses\n    shortNames:\n    - prom\n    singular: prometheus\n  scope: Namespaced\n  versions:\n  - additionalPrinterColumns:\n    - description: The version of Prometheus\n      jsonPath: .spec.version\n      name: Version\n      type: string\n    - description: The number of desired replicas\n      jsonPath: .spec.replicas\n      name: Desired\n      type: integer\n    - description: The number of ready replicas\n      jsonPath: .status.availableReplicas\n      name: Ready\n      type: integer\n    - jsonPath: .status.conditions[?(@.type == 'Reconciled')].status\n      name: Reconciled\n      type: string\n    - jsonPath: .status.conditions[?(@.type == 'Available')].status\n      name: Available\n      type: string\n    - jsonPath: .metadata.creationTimestamp\n      name: Age\n      type: date\n    - description: Whether the resource reconciliation is paused or not\n      jsonPath: .status.paused\n      name: Paused\n      priority: 1\n      type: boolean\n    name: v1\n    schema:\n      openAPIV3Schema:\n        description: Prometheus defines a Prometheus deployment.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: 'Specification of the desired behavior of the Prometheus\n              cluster. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status'\n            properties:\n              additionalAlertManagerConfigs:\n                description: \"AdditionalAlertManagerConfigs specifies a key of a Secret\n                  containing additional Prometheus Alertmanager configurations. The\n                  Alertmanager configurations are appended to the configuration generated\n                  by the Prometheus Operator. They must be formatted according to\n                  the official Prometheus documentation: \\n https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alertmanager_config\n                  \\n The user is responsible for making sure that the configurations\n                  are valid \\n Note that using this feature may expose the possibility\n                  to break upgrades of Prometheus. It is advised to review Prometheus\n                  release notes to ensure that no incompatible AlertManager configs\n                  are going to break Prometheus after the upgrade.\"\n                properties:\n                  key:\n                    description: The key of the secret to select from.  Must be a\n                      valid secret key.\n                    type: string\n                  name:\n                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                      TODO: Add other useful fields. apiVersion, kind, uid?'\n                    type: string\n                  optional:\n                    description: Specify whether the Secret or its key must be defined\n                    type: boolean\n                required:\n                - key\n                type: object\n                x-kubernetes-map-type: atomic\n              additionalAlertRelabelConfigs:\n                description: \"AdditionalAlertRelabelConfigs specifies a key of a Secret\n                  containing additional Prometheus alert relabel configurations. The\n                  alert relabel configurations are appended to the configuration generated\n                  by the Prometheus Operator. They must be formatted according to\n                  the official Prometheus documentation: \\n https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alert_relabel_configs\n                  \\n The user is responsible for making sure that the configurations\n                  are valid \\n Note that using this feature may expose the possibility\n                  to break upgrades of Prometheus. It is advised to review Prometheus\n                  release notes to ensure that no incompatible alert relabel configs\n                  are going to break Prometheus after the upgrade.\"\n                properties:\n                  key:\n                    description: The key of the secret to select from.  Must be a\n                      valid secret key.\n                    type: string\n                  name:\n                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                      TODO: Add other useful fields. apiVersion, kind, uid?'\n                    type: string\n                  optional:\n                    description: Specify whether the Secret or its key must be defined\n                    type: boolean\n                required:\n                - key\n                type: object\n                x-kubernetes-map-type: atomic\n              additionalArgs:\n                description: \"AdditionalArgs allows setting additional arguments for\n                  the 'prometheus' container. \\n It is intended for e.g. activating\n                  hidden flags which are not supported by the dedicated configuration\n                  options yet. The arguments are passed as-is to the Prometheus container\n                  which may cause issues if they are invalid or not supported by the\n                  given Prometheus version. \\n In case of an argument conflict (e.g.\n                  an argument which is already set by the operator itself) or when\n                  providing an invalid argument, the reconciliation will fail and\n                  an error will be logged.\"\n                items:\n                  description: Argument as part of the AdditionalArgs list.\n                  properties:\n                    name:\n                      description: Name of the argument, e.g. \"scrape.discovery-reload-interval\".\n                      minLength: 1\n                      type: string\n                    value:\n                      description: Argument value, e.g. 30s. Can be empty for name-only\n                        arguments (e.g. --storage.tsdb.no-lockfile)\n                      type: string\n                  required:\n                  - name\n                  type: object\n                type: array\n              additionalScrapeConfigs:\n                description: 'AdditionalScrapeConfigs allows specifying a key of a\n                  Secret containing additional Prometheus scrape configurations. Scrape\n                  configurations specified are appended to the configurations generated\n                  by the Prometheus Operator. Job configurations specified must have\n                  the form as specified in the official Prometheus documentation:\n                  https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config.\n                  As scrape configs are appended, the user is responsible to make\n                  sure it is valid. Note that using this feature may expose the possibility\n                  to break upgrades of Prometheus. It is advised to review Prometheus\n                  release notes to ensure that no incompatible scrape configs are\n                  going to break Prometheus after the upgrade.'\n                properties:\n                  key:\n                    description: The key of the secret to select from.  Must be a\n                      valid secret key.\n                    type: string\n                  name:\n                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                      TODO: Add other useful fields. apiVersion, kind, uid?'\n                    type: string\n                  optional:\n                    description: Specify whether the Secret or its key must be defined\n                    type: boolean\n                required:\n                - key\n                type: object\n                x-kubernetes-map-type: atomic\n              affinity:\n                description: Defines the Pods' affinity scheduling rules if specified.\n                properties:\n                  nodeAffinity:\n                    description: Describes node affinity scheduling rules for the\n                      pod.\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: The scheduler will prefer to schedule pods to\n                          nodes that satisfy the affinity expressions specified by\n                          this field, but it may choose a node that violates one or\n                          more of the expressions. The node that is most preferred\n                          is the one with the greatest sum of weights, i.e. for each\n                          node that meets all of the scheduling requirements (resource\n                          request, requiredDuringScheduling affinity expressions,\n                          etc.), compute a sum by iterating through the elements of\n                          this field and adding \"weight\" to the sum if the node matches\n                          the corresponding matchExpressions; the node(s) with the\n                          highest sum are the most preferred.\n                        items:\n                          description: An empty preferred scheduling term matches\n                            all objects with implicit weight 0 (i.e. it's a no-op).\n                            A null preferred scheduling term matches no objects (i.e.\n                            is also a no-op).\n                          properties:\n                            preference:\n                              description: A node selector term, associated with the\n                                corresponding weight.\n                              properties:\n                                matchExpressions:\n                                  description: A list of node selector requirements\n                                    by node's labels.\n                                  items:\n                                    description: A node selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector\n                                          applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists, DoesNotExist. Gt, and\n                                          Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If\n                                          the operator is In or NotIn, the values\n                                          array must be non-empty. If the operator\n                                          is Exists or DoesNotExist, the values array\n                                          must be empty. If the operator is Gt or\n                                          Lt, the values array must have a single\n                                          element, which will be interpreted as an\n                                          integer. This array is replaced during a\n                                          strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchFields:\n                                  description: A list of node selector requirements\n                                    by node's fields.\n                                  items:\n                                    description: A node selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector\n                                          applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists, DoesNotExist. Gt, and\n                                          Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If\n                                          the operator is In or NotIn, the values\n                                          array must be non-empty. If the operator\n                                          is Exists or DoesNotExist, the values array\n                                          must be empty. If the operator is Gt or\n                                          Lt, the values array must have a single\n                                          element, which will be interpreted as an\n                                          integer. This array is replaced during a\n                                          strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            weight:\n                              description: Weight associated with matching the corresponding\n                                nodeSelectorTerm, in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - preference\n                          - weight\n                          type: object\n                        type: array\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: If the affinity requirements specified by this\n                          field are not met at scheduling time, the pod will not be\n                          scheduled onto the node. If the affinity requirements specified\n                          by this field cease to be met at some point during pod execution\n                          (e.g. due to an update), the system may or may not try to\n                          eventually evict the pod from its node.\n                        properties:\n                          nodeSelectorTerms:\n                            description: Required. A list of node selector terms.\n                              The terms are ORed.\n                            items:\n                              description: A null or empty node selector term matches\n                                no objects. The requirements of them are ANDed. The\n                                TopologySelectorTerm type implements a subset of the\n                                NodeSelectorTerm.\n                              properties:\n                                matchExpressions:\n                                  description: A list of node selector requirements\n                                    by node's labels.\n                                  items:\n                                    description: A node selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector\n                                          applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists, DoesNotExist. Gt, and\n                                          Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If\n                                          the operator is In or NotIn, the values\n                                          array must be non-empty. If the operator\n                                          is Exists or DoesNotExist, the values array\n                                          must be empty. If the operator is Gt or\n                                          Lt, the values array must have a single\n                                          element, which will be interpreted as an\n                                          integer. This array is replaced during a\n                                          strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchFields:\n                                  description: A list of node selector requirements\n                                    by node's fields.\n                                  items:\n                                    description: A node selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector\n                                          applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists, DoesNotExist. Gt, and\n                                          Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If\n                                          the operator is In or NotIn, the values\n                                          array must be non-empty. If the operator\n                                          is Exists or DoesNotExist, the values array\n                                          must be empty. If the operator is Gt or\n                                          Lt, the values array must have a single\n                                          element, which will be interpreted as an\n                                          integer. This array is replaced during a\n                                          strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            type: array\n                        required:\n                        - nodeSelectorTerms\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  podAffinity:\n                    description: Describes pod affinity scheduling rules (e.g. co-locate\n                      this pod in the same node, zone, etc. as some other pod(s)).\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: The scheduler will prefer to schedule pods to\n                          nodes that satisfy the affinity expressions specified by\n                          this field, but it may choose a node that violates one or\n                          more of the expressions. The node that is most preferred\n                          is the one with the greatest sum of weights, i.e. for each\n                          node that meets all of the scheduling requirements (resource\n                          request, requiredDuringScheduling affinity expressions,\n                          etc.), compute a sum by iterating through the elements of\n                          this field and adding \"weight\" to the sum if the node has\n                          pods which matches the corresponding podAffinityTerm; the\n                          node(s) with the highest sum are the most preferred.\n                        items:\n                          description: The weights of all of the matched WeightedPodAffinityTerm\n                            fields are added per-node to find the most preferred node(s)\n                          properties:\n                            podAffinityTerm:\n                              description: Required. A pod affinity term, associated\n                                with the corresponding weight.\n                              properties:\n                                labelSelector:\n                                  description: A label query over a set of resources,\n                                    in this case pods.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label\n                                        selector requirements. The requirements are\n                                        ANDed.\n                                      items:\n                                        description: A label selector requirement\n                                          is a selector that contains values, a key,\n                                          and an operator that relates the key and\n                                          values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that\n                                              the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's\n                                              relationship to a set of values. Valid\n                                              operators are In, NotIn, Exists and\n                                              DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string\n                                              values. If the operator is In or NotIn,\n                                              the values array must be non-empty.\n                                              If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This\n                                              array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value}\n                                        pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions,\n                                        whose key field is \"key\", the operator is\n                                        \"In\", and the values array contains only \"value\".\n                                        The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaceSelector:\n                                  description: A label query over the set of namespaces\n                                    that the term applies to. The term is applied\n                                    to the union of the namespaces selected by this\n                                    field and the ones listed in the namespaces field.\n                                    null selector and null or empty namespaces list\n                                    means \"this pod's namespace\". An empty selector\n                                    ({}) matches all namespaces.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label\n                                        selector requirements. The requirements are\n                                        ANDed.\n                                      items:\n                                        description: A label selector requirement\n                                          is a selector that contains values, a key,\n                                          and an operator that relates the key and\n                                          values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that\n                                              the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's\n                                              relationship to a set of values. Valid\n                                              operators are In, NotIn, Exists and\n                                              DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string\n                                              values. If the operator is In or NotIn,\n                                              the values array must be non-empty.\n                                              If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This\n                                              array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value}\n                                        pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions,\n                                        whose key field is \"key\", the operator is\n                                        \"In\", and the values array contains only \"value\".\n                                        The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaces:\n                                  description: namespaces specifies a static list\n                                    of namespace names that the term applies to. The\n                                    term is applied to the union of the namespaces\n                                    listed in this field and the ones selected by\n                                    namespaceSelector. null or empty namespaces list\n                                    and null namespaceSelector means \"this pod's namespace\".\n                                  items:\n                                    type: string\n                                  type: array\n                                topologyKey:\n                                  description: This pod should be co-located (affinity)\n                                    or not co-located (anti-affinity) with the pods\n                                    matching the labelSelector in the specified namespaces,\n                                    where co-located is defined as running on a node\n                                    whose value of the label with key topologyKey\n                                    matches that of any node on which any of the selected\n                                    pods is running. Empty topologyKey is not allowed.\n                                  type: string\n                              required:\n                              - topologyKey\n                              type: object\n                            weight:\n                              description: weight associated with matching the corresponding\n                                podAffinityTerm, in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - podAffinityTerm\n                          - weight\n                          type: object\n                        type: array\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: If the affinity requirements specified by this\n                          field are not met at scheduling time, the pod will not be\n                          scheduled onto the node. If the affinity requirements specified\n                          by this field cease to be met at some point during pod execution\n                          (e.g. due to a pod label update), the system may or may\n                          not try to eventually evict the pod from its node. When\n                          there are multiple elements, the lists of nodes corresponding\n                          to each podAffinityTerm are intersected, i.e. all terms\n                          must be satisfied.\n                        items:\n                          description: Defines a set of pods (namely those matching\n                            the labelSelector relative to the given namespace(s))\n                            that this pod should be co-located (affinity) or not co-located\n                            (anti-affinity) with, where co-located is defined as running\n                            on a node whose value of the label with key <topologyKey>\n                            matches that of any node on which a pod of the set of\n                            pods is running\n                          properties:\n                            labelSelector:\n                              description: A label query over a set of resources,\n                                in this case pods.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label\n                                    selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the\n                                          selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string\n                                          values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the\n                                          operator is Exists or DoesNotExist, the\n                                          values array must be empty. This array is\n                                          replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value}\n                                    pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions,\n                                    whose key field is \"key\", the operator is \"In\",\n                                    and the values array contains only \"value\". The\n                                    requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaceSelector:\n                              description: A label query over the set of namespaces\n                                that the term applies to. The term is applied to the\n                                union of the namespaces selected by this field and\n                                the ones listed in the namespaces field. null selector\n                                and null or empty namespaces list means \"this pod's\n                                namespace\". An empty selector ({}) matches all namespaces.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label\n                                    selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the\n                                          selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string\n                                          values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the\n                                          operator is Exists or DoesNotExist, the\n                                          values array must be empty. This array is\n                                          replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value}\n                                    pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions,\n                                    whose key field is \"key\", the operator is \"In\",\n                                    and the values array contains only \"value\". The\n                                    requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaces:\n                              description: namespaces specifies a static list of namespace\n                                names that the term applies to. The term is applied\n                                to the union of the namespaces listed in this field\n                                and the ones selected by namespaceSelector. null or\n                                empty namespaces list and null namespaceSelector means\n                                \"this pod's namespace\".\n                              items:\n                                type: string\n                              type: array\n                            topologyKey:\n                              description: This pod should be co-located (affinity)\n                                or not co-located (anti-affinity) with the pods matching\n                                the labelSelector in the specified namespaces, where\n                                co-located is defined as running on a node whose value\n                                of the label with key topologyKey matches that of\n                                any node on which any of the selected pods is running.\n                                Empty topologyKey is not allowed.\n                              type: string\n                          required:\n                          - topologyKey\n                          type: object\n                        type: array\n                    type: object\n                  podAntiAffinity:\n                    description: Describes pod anti-affinity scheduling rules (e.g.\n                      avoid putting this pod in the same node, zone, etc. as some\n                      other pod(s)).\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: The scheduler will prefer to schedule pods to\n                          nodes that satisfy the anti-affinity expressions specified\n                          by this field, but it may choose a node that violates one\n                          or more of the expressions. The node that is most preferred\n                          is the one with the greatest sum of weights, i.e. for each\n                          node that meets all of the scheduling requirements (resource\n                          request, requiredDuringScheduling anti-affinity expressions,\n                          etc.), compute a sum by iterating through the elements of\n                          this field and adding \"weight\" to the sum if the node has\n                          pods which matches the corresponding podAffinityTerm; the\n                          node(s) with the highest sum are the most preferred.\n                        items:\n                          description: The weights of all of the matched WeightedPodAffinityTerm\n                            fields are added per-node to find the most preferred node(s)\n                          properties:\n                            podAffinityTerm:\n                              description: Required. A pod affinity term, associated\n                                with the corresponding weight.\n                              properties:\n                                labelSelector:\n                                  description: A label query over a set of resources,\n                                    in this case pods.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label\n                                        selector requirements. The requirements are\n                                        ANDed.\n                                      items:\n                                        description: A label selector requirement\n                                          is a selector that contains values, a key,\n                                          and an operator that relates the key and\n                                          values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that\n                                              the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's\n                                              relationship to a set of values. Valid\n                                              operators are In, NotIn, Exists and\n                                              DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string\n                                              values. If the operator is In or NotIn,\n                                              the values array must be non-empty.\n                                              If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This\n                                              array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value}\n                                        pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions,\n                                        whose key field is \"key\", the operator is\n                                        \"In\", and the values array contains only \"value\".\n                                        The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaceSelector:\n                                  description: A label query over the set of namespaces\n                                    that the term applies to. The term is applied\n                                    to the union of the namespaces selected by this\n                                    field and the ones listed in the namespaces field.\n                                    null selector and null or empty namespaces list\n                                    means \"this pod's namespace\". An empty selector\n                                    ({}) matches all namespaces.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label\n                                        selector requirements. The requirements are\n                                        ANDed.\n                                      items:\n                                        description: A label selector requirement\n                                          is a selector that contains values, a key,\n                                          and an operator that relates the key and\n                                          values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that\n                                              the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's\n                                              relationship to a set of values. Valid\n                                              operators are In, NotIn, Exists and\n                                              DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string\n                                              values. If the operator is In or NotIn,\n                                              the values array must be non-empty.\n                                              If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This\n                                              array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value}\n                                        pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions,\n                                        whose key field is \"key\", the operator is\n                                        \"In\", and the values array contains only \"value\".\n                                        The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaces:\n                                  description: namespaces specifies a static list\n                                    of namespace names that the term applies to. The\n                                    term is applied to the union of the namespaces\n                                    listed in this field and the ones selected by\n                                    namespaceSelector. null or empty namespaces list\n                                    and null namespaceSelector means \"this pod's namespace\".\n                                  items:\n                                    type: string\n                                  type: array\n                                topologyKey:\n                                  description: This pod should be co-located (affinity)\n                                    or not co-located (anti-affinity) with the pods\n                                    matching the labelSelector in the specified namespaces,\n                                    where co-located is defined as running on a node\n                                    whose value of the label with key topologyKey\n                                    matches that of any node on which any of the selected\n                                    pods is running. Empty topologyKey is not allowed.\n                                  type: string\n                              required:\n                              - topologyKey\n                              type: object\n                            weight:\n                              description: weight associated with matching the corresponding\n                                podAffinityTerm, in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - podAffinityTerm\n                          - weight\n                          type: object\n                        type: array\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: If the anti-affinity requirements specified by\n                          this field are not met at scheduling time, the pod will\n                          not be scheduled onto the node. If the anti-affinity requirements\n                          specified by this field cease to be met at some point during\n                          pod execution (e.g. due to a pod label update), the system\n                          may or may not try to eventually evict the pod from its\n                          node. When there are multiple elements, the lists of nodes\n                          corresponding to each podAffinityTerm are intersected, i.e.\n                          all terms must be satisfied.\n                        items:\n                          description: Defines a set of pods (namely those matching\n                            the labelSelector relative to the given namespace(s))\n                            that this pod should be co-located (affinity) or not co-located\n                            (anti-affinity) with, where co-located is defined as running\n                            on a node whose value of the label with key <topologyKey>\n                            matches that of any node on which a pod of the set of\n                            pods is running\n                          properties:\n                            labelSelector:\n                              description: A label query over a set of resources,\n                                in this case pods.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label\n                                    selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the\n                                          selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string\n                                          values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the\n                                          operator is Exists or DoesNotExist, the\n                                          values array must be empty. This array is\n                                          replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value}\n                                    pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions,\n                                    whose key field is \"key\", the operator is \"In\",\n                                    and the values array contains only \"value\". The\n                                    requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaceSelector:\n                              description: A label query over the set of namespaces\n                                that the term applies to. The term is applied to the\n                                union of the namespaces selected by this field and\n                                the ones listed in the namespaces field. null selector\n                                and null or empty namespaces list means \"this pod's\n                                namespace\". An empty selector ({}) matches all namespaces.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label\n                                    selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the\n                                          selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string\n                                          values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the\n                                          operator is Exists or DoesNotExist, the\n                                          values array must be empty. This array is\n                                          replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value}\n                                    pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions,\n                                    whose key field is \"key\", the operator is \"In\",\n                                    and the values array contains only \"value\". The\n                                    requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaces:\n                              description: namespaces specifies a static list of namespace\n                                names that the term applies to. The term is applied\n                                to the union of the namespaces listed in this field\n                                and the ones selected by namespaceSelector. null or\n                                empty namespaces list and null namespaceSelector means\n                                \"this pod's namespace\".\n                              items:\n                                type: string\n                              type: array\n                            topologyKey:\n                              description: This pod should be co-located (affinity)\n                                or not co-located (anti-affinity) with the pods matching\n                                the labelSelector in the specified namespaces, where\n                                co-located is defined as running on a node whose value\n                                of the label with key topologyKey matches that of\n                                any node on which any of the selected pods is running.\n                                Empty topologyKey is not allowed.\n                              type: string\n                          required:\n                          - topologyKey\n                          type: object\n                        type: array\n                    type: object\n                type: object\n              alerting:\n                description: Defines the settings related to Alertmanager.\n                properties:\n                  alertmanagers:\n                    description: AlertmanagerEndpoints Prometheus should fire alerts\n                      against.\n                    items:\n                      description: AlertmanagerEndpoints defines a selection of a\n                        single Endpoints object containing Alertmanager IPs to fire\n                        alerts against.\n                      properties:\n                        apiVersion:\n                          description: Version of the Alertmanager API that Prometheus\n                            uses to send alerts. It can be \"v1\" or \"v2\".\n                          type: string\n                        authorization:\n                          description: \"Authorization section for Alertmanager. \\n\n                            Cannot be set at the same time as `basicAuth`, or `bearerTokenFile`.\"\n                          properties:\n                            credentials:\n                              description: Selects a key of a Secret in the namespace\n                                that contains the credentials for authentication.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must\n                                    be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key\n                                    must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            type:\n                              description: \"Defines the authentication type. The value\n                                is case-insensitive. \\n \\\"Basic\\\" is not a supported\n                                value. \\n Default: \\\"Bearer\\\"\"\n                              type: string\n                          type: object\n                        basicAuth:\n                          description: \"BasicAuth configuration for Alertmanager.\n                            \\n Cannot be set at the same time as `bearerTokenFile`,\n                            or `authorization`.\"\n                          properties:\n                            password:\n                              description: The secret in the service monitor namespace\n                                that contains the password for authentication.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must\n                                    be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key\n                                    must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            username:\n                              description: The secret in the service monitor namespace\n                                that contains the username for authentication.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must\n                                    be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key\n                                    must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        bearerTokenFile:\n                          description: \"File to read bearer token for Alertmanager.\n                            \\n Cannot be set at the same time as `basicAuth`, or `authorization`.\n                            \\n *Deprecated: this will be removed in a future release.\n                            Prefer using `authorization`.*\"\n                          type: string\n                        enableHttp2:\n                          description: Whether to enable HTTP2.\n                          type: boolean\n                        name:\n                          description: Name of the Endpoints object in the namespace.\n                          type: string\n                        namespace:\n                          description: Namespace of the Endpoints object.\n                          type: string\n                        pathPrefix:\n                          description: Prefix for the HTTP path alerts are pushed\n                            to.\n                          type: string\n                        port:\n                          anyOf:\n                          - type: integer\n                          - type: string\n                          description: Port on which the Alertmanager API is exposed.\n                          x-kubernetes-int-or-string: true\n                        scheme:\n                          description: Scheme to use when firing alerts.\n                          type: string\n                        timeout:\n                          description: Timeout is a per-target Alertmanager timeout\n                            when pushing alerts.\n                          pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                          type: string\n                        tlsConfig:\n                          description: TLS Config to use for Alertmanager.\n                          properties:\n                            ca:\n                              description: Certificate authority used when verifying\n                                server certificates.\n                              properties:\n                                configMap:\n                                  description: ConfigMap containing data to use for\n                                    the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      description: 'Name of the referent. More info:\n                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        TODO: Add other useful fields. apiVersion,\n                                        kind, uid?'\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or\n                                        its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: Secret containing data to use for the\n                                    targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select\n                                        from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      description: 'Name of the referent. More info:\n                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        TODO: Add other useful fields. apiVersion,\n                                        kind, uid?'\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its\n                                        key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            caFile:\n                              description: Path to the CA cert in the Prometheus container\n                                to use for the targets.\n                              type: string\n                            cert:\n                              description: Client certificate to present when doing\n                                client-authentication.\n                              properties:\n                                configMap:\n                                  description: ConfigMap containing data to use for\n                                    the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      description: 'Name of the referent. More info:\n                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        TODO: Add other useful fields. apiVersion,\n                                        kind, uid?'\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or\n                                        its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: Secret containing data to use for the\n                                    targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select\n                                        from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      description: 'Name of the referent. More info:\n                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                        TODO: Add other useful fields. apiVersion,\n                                        kind, uid?'\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its\n                                        key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            certFile:\n                              description: Path to the client cert file in the Prometheus\n                                container for the targets.\n                              type: string\n                            insecureSkipVerify:\n                              description: Disable target certificate validation.\n                              type: boolean\n                            keyFile:\n                              description: Path to the client key file in the Prometheus\n                                container for the targets.\n                              type: string\n                            keySecret:\n                              description: Secret containing the client key file for\n                                the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must\n                                    be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key\n                                    must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            serverName:\n                              description: Used to verify the hostname for the targets.\n                              type: string\n                          type: object\n                      required:\n                      - name\n                      - namespace\n                      - port\n                      type: object\n                    type: array\n                required:\n                - alertmanagers\n                type: object\n              allowOverlappingBlocks:\n                description: \"AllowOverlappingBlocks enables vertical compaction and\n                  vertical query merge in Prometheus. \\n *Deprecated: this flag has\n                  no effect for Prometheus >= 2.39.0 where overlapping blocks are\n                  enabled by default.*\"\n                type: boolean\n              apiserverConfig:\n                description: 'APIServerConfig allows specifying a host and auth methods\n                  to access the Kuberntees API server. If null, Prometheus is assumed\n                  to run inside of the cluster: it will discover the API servers automatically\n                  and use the Pod''s CA certificate and bearer token file at /var/run/secrets/kubernetes.io/serviceaccount/.'\n                properties:\n                  authorization:\n                    description: \"Authorization section for the API server. \\n Cannot\n                      be set at the same time as `basicAuth`, `bearerToken`, or `bearerTokenFile`.\"\n                    properties:\n                      credentials:\n                        description: Selects a key of a Secret in the namespace that\n                          contains the credentials for authentication.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must\n                              be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must\n                              be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      credentialsFile:\n                        description: File to read a secret from, mutually exclusive\n                          with `credentials`.\n                        type: string\n                      type:\n                        description: \"Defines the authentication type. The value is\n                          case-insensitive. \\n \\\"Basic\\\" is not a supported value.\n                          \\n Default: \\\"Bearer\\\"\"\n                        type: string\n                    type: object\n                  basicAuth:\n                    description: \"BasicAuth configuration for the API server. \\n Cannot\n                      be set at the same time as `authorization`, `bearerToken`, or\n                      `bearerTokenFile`.\"\n                    properties:\n                      password:\n                        description: The secret in the service monitor namespace that\n                          contains the password for authentication.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must\n                              be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must\n                              be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      username:\n                        description: The secret in the service monitor namespace that\n                          contains the username for authentication.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must\n                              be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must\n                              be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  bearerToken:\n                    description: \"*Warning: this field shouldn't be used because the\n                      token value appears in clear-text. Prefer using `authorization`.*\n                      \\n *Deprecated: this will be removed in a future release.*\"\n                    type: string\n                  bearerTokenFile:\n                    description: \"File to read bearer token for accessing apiserver.\n                      \\n Cannot be set at the same time as `basicAuth`, `authorization`,\n                      or `bearerToken`. \\n *Deprecated: this will be removed in a\n                      future release. Prefer using `authorization`.*\"\n                    type: string\n                  host:\n                    description: Kubernetes API address consisting of a hostname or\n                      IP address followed by an optional port number.\n                    type: string\n                  tlsConfig:\n                    description: TLS Config to use for the API server.\n                    properties:\n                      ca:\n                        description: Certificate authority used when verifying server\n                          certificates.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the\n                              targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its\n                                  key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      caFile:\n                        description: Path to the CA cert in the Prometheus container\n                          to use for the targets.\n                        type: string\n                      cert:\n                        description: Client certificate to present when doing client-authentication.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the\n                              targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its\n                                  key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      certFile:\n                        description: Path to the client cert file in the Prometheus\n                          container for the targets.\n                        type: string\n                      insecureSkipVerify:\n                        description: Disable target certificate validation.\n                        type: boolean\n                      keyFile:\n                        description: Path to the client key file in the Prometheus\n                          container for the targets.\n                        type: string\n                      keySecret:\n                        description: Secret containing the client key file for the\n                          targets.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must\n                              be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must\n                              be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      serverName:\n                        description: Used to verify the hostname for the targets.\n                        type: string\n                    type: object\n                required:\n                - host\n                type: object\n              arbitraryFSAccessThroughSMs:\n                description: When true, ServiceMonitor, PodMonitor and Probe object\n                  are forbidden to reference arbitrary files on the file system of\n                  the 'prometheus' container. When a ServiceMonitor's endpoint specifies\n                  a `bearerTokenFile` value (e.g.  '/var/run/secrets/kubernetes.io/serviceaccount/token'),\n                  a malicious target can get access to the Prometheus service account's\n                  token in the Prometheus' scrape request. Setting `spec.arbitraryFSAccessThroughSM`\n                  to 'true' would prevent the attack. Users should instead provide\n                  the credentials using the `spec.bearerTokenSecret` field.\n                properties:\n                  deny:\n                    type: boolean\n                type: object\n              baseImage:\n                description: '*Deprecated: use ''spec.image'' instead.*'\n                type: string\n              configMaps:\n                description: ConfigMaps is a list of ConfigMaps in the same namespace\n                  as the Prometheus object, which shall be mounted into the Prometheus\n                  Pods. Each ConfigMap is added to the StatefulSet definition as a\n                  volume named `configmap-<configmap-name>`. The ConfigMaps are mounted\n                  into /etc/prometheus/configmaps/<configmap-name> in the 'prometheus'\n                  container.\n                items:\n                  type: string\n                type: array\n              containers:\n                description: \"Containers allows injecting additional containers or\n                  modifying operator generated containers. This can be used to allow\n                  adding an authentication proxy to the Pods or to change the behavior\n                  of an operator generated container. Containers described here modify\n                  an operator generated container if they share the same name and\n                  modifications are done via a strategic merge patch. \\n The names\n                  of containers managed by the operator are: * `prometheus` * `config-reloader`\n                  * `thanos-sidecar` \\n Overriding containers is entirely outside\n                  the scope of what the maintainers will support and by doing so,\n                  you accept that this behaviour may break at any time without notice.\"\n                items:\n                  description: A single application container that you want to run\n                    within a pod.\n                  properties:\n                    args:\n                      description: 'Arguments to the entrypoint. The container image''s\n                        CMD is used if this is not provided. Variable references $(VAR_NAME)\n                        are expanded using the container''s environment. If a variable\n                        cannot be resolved, the reference in the input string will\n                        be unchanged. Double $$ are reduced to a single $, which allows\n                        for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\n                        produce the string literal \"$(VAR_NAME)\". Escaped references\n                        will never be expanded, regardless of whether the variable\n                        exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    command:\n                      description: 'Entrypoint array. Not executed within a shell.\n                        The container image''s ENTRYPOINT is used if this is not provided.\n                        Variable references $(VAR_NAME) are expanded using the container''s\n                        environment. If a variable cannot be resolved, the reference\n                        in the input string will be unchanged. Double $$ are reduced\n                        to a single $, which allows for escaping the $(VAR_NAME) syntax:\n                        i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\".\n                        Escaped references will never be expanded, regardless of whether\n                        the variable exists or not. Cannot be updated. More info:\n                        https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    env:\n                      description: List of environment variables to set in the container.\n                        Cannot be updated.\n                      items:\n                        description: EnvVar represents an environment variable present\n                          in a Container.\n                        properties:\n                          name:\n                            description: Name of the environment variable. Must be\n                              a C_IDENTIFIER.\n                            type: string\n                          value:\n                            description: 'Variable references $(VAR_NAME) are expanded\n                              using the previously defined environment variables in\n                              the container and any service environment variables.\n                              If a variable cannot be resolved, the reference in the\n                              input string will be unchanged. Double $$ are reduced\n                              to a single $, which allows for escaping the $(VAR_NAME)\n                              syntax: i.e. \"$$(VAR_NAME)\" will produce the string\n                              literal \"$(VAR_NAME)\". Escaped references will never\n                              be expanded, regardless of whether the variable exists\n                              or not. Defaults to \"\".'\n                            type: string\n                          valueFrom:\n                            description: Source for the environment variable's value.\n                              Cannot be used if value is not empty.\n                            properties:\n                              configMapKeyRef:\n                                description: Selects a key of a ConfigMap.\n                                properties:\n                                  key:\n                                    description: The key to select.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the ConfigMap or\n                                      its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              fieldRef:\n                                description: 'Selects a field of the pod: supports\n                                  metadata.name, metadata.namespace, `metadata.labels[''<KEY>'']`,\n                                  `metadata.annotations[''<KEY>'']`, spec.nodeName,\n                                  spec.serviceAccountName, status.hostIP, status.podIP,\n                                  status.podIPs.'\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath\n                                      is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the\n                                      specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              resourceFieldRef:\n                                description: 'Selects a resource of the container:\n                                  only resources limits and requests (limits.cpu,\n                                  limits.memory, limits.ephemeral-storage, requests.cpu,\n                                  requests.memory and requests.ephemeral-storage)\n                                  are currently supported.'\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes,\n                                      optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the\n                                      exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              secretKeyRef:\n                                description: Selects a key of a secret in the pod's\n                                  namespace\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            type: object\n                        required:\n                        - name\n                        type: object\n                      type: array\n                    envFrom:\n                      description: List of sources to populate environment variables\n                        in the container. The keys defined within a source must be\n                        a C_IDENTIFIER. All invalid keys will be reported as an event\n                        when the container is starting. When a key exists in multiple\n                        sources, the value associated with the last source will take\n                        precedence. Values defined by an Env with a duplicate key\n                        will take precedence. Cannot be updated.\n                      items:\n                        description: EnvFromSource represents the source of a set\n                          of ConfigMaps\n                        properties:\n                          configMapRef:\n                            description: The ConfigMap to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap must be\n                                  defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          prefix:\n                            description: An optional identifier to prepend to each\n                              key in the ConfigMap. Must be a C_IDENTIFIER.\n                            type: string\n                          secretRef:\n                            description: The Secret to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      type: array\n                    image:\n                      description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images\n                        This field is optional to allow higher level config management\n                        to default or override container images in workload controllers\n                        like Deployments and StatefulSets.'\n                      type: string\n                    imagePullPolicy:\n                      description: 'Image pull policy. One of Always, Never, IfNotPresent.\n                        Defaults to Always if :latest tag is specified, or IfNotPresent\n                        otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images'\n                      type: string\n                    lifecycle:\n                      description: Actions that the management system should take\n                        in response to container lifecycle events. Cannot be updated.\n                      properties:\n                        postStart:\n                          description: 'PostStart is called immediately after a container\n                            is created. If the handler fails, the container is terminated\n                            and restarted according to its restart policy. Other management\n                            of the container blocks until the hook completes. More\n                            info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute\n                                    inside the container, the working directory for\n                                    the command  is root ('/') in the container's\n                                    filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions\n                                    ('|', etc) won't work. To use a shell, you need\n                                    to explicitly call out to that shell. Exit status\n                                    of 0 is treated as live/healthy and non-zero is\n                                    unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to\n                                    the pod IP. You probably want to set \"Host\" in\n                                    httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request.\n                                    HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header\n                                      to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will\n                                          be canonicalized upon output, so case-variant\n                                          names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the\n                                    host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported\n                                as a LifecycleHandler and kept for the backward compatibility.\n                                There are no validation of this field and lifecycle\n                                hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to,\n                                    defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                        preStop:\n                          description: 'PreStop is called immediately before a container\n                            is terminated due to an API request or management event\n                            such as liveness/startup probe failure, preemption, resource\n                            contention, etc. The handler is not called if the container\n                            crashes or exits. The Pod''s termination grace period\n                            countdown begins before the PreStop hook is executed.\n                            Regardless of the outcome of the handler, the container\n                            will eventually terminate within the Pod''s termination\n                            grace period (unless delayed by finalizers). Other management\n                            of the container blocks until the hook completes or until\n                            the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute\n                                    inside the container, the working directory for\n                                    the command  is root ('/') in the container's\n                                    filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions\n                                    ('|', etc) won't work. To use a shell, you need\n                                    to explicitly call out to that shell. Exit status\n                                    of 0 is treated as live/healthy and non-zero is\n                                    unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to\n                                    the pod IP. You probably want to set \"Host\" in\n                                    httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request.\n                                    HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header\n                                      to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will\n                                          be canonicalized upon output, so case-variant\n                                          names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the\n                                    host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported\n                                as a LifecycleHandler and kept for the backward compatibility.\n                                There are no validation of this field and lifecycle\n                                hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to,\n                                    defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                      type: object\n                    livenessProbe:\n                      description: 'Periodic probe of container liveness. Container\n                        will be restarted if the probe fails. Cannot be updated. More\n                        info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    name:\n                      description: Name of the container specified as a DNS_LABEL.\n                        Each container in a pod must have a unique name (DNS_LABEL).\n                        Cannot be updated.\n                      type: string\n                    ports:\n                      description: List of ports to expose from the container. Not\n                        specifying a port here DOES NOT prevent that port from being\n                        exposed. Any port which is listening on the default \"0.0.0.0\"\n                        address inside a container will be accessible from the network.\n                        Modifying this array with strategic merge patch may corrupt\n                        the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255.\n                        Cannot be updated.\n                      items:\n                        description: ContainerPort represents a network port in a\n                          single container.\n                        properties:\n                          containerPort:\n                            description: Number of port to expose on the pod's IP\n                              address. This must be a valid port number, 0 < x < 65536.\n                            format: int32\n                            type: integer\n                          hostIP:\n                            description: What host IP to bind the external port to.\n                            type: string\n                          hostPort:\n                            description: Number of port to expose on the host. If\n                              specified, this must be a valid port number, 0 < x <\n                              65536. If HostNetwork is specified, this must match\n                              ContainerPort. Most containers do not need this.\n                            format: int32\n                            type: integer\n                          name:\n                            description: If specified, this must be an IANA_SVC_NAME\n                              and unique within the pod. Each named port in a pod\n                              must have a unique name. Name for the port that can\n                              be referred to by services.\n                            type: string\n                          protocol:\n                            default: TCP\n                            description: Protocol for port. Must be UDP, TCP, or SCTP.\n                              Defaults to \"TCP\".\n                            type: string\n                        required:\n                        - containerPort\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - containerPort\n                      - protocol\n                      x-kubernetes-list-type: map\n                    readinessProbe:\n                      description: 'Periodic probe of container service readiness.\n                        Container will be removed from service endpoints if the probe\n                        fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    resizePolicy:\n                      description: Resources resize policy for the container.\n                      items:\n                        description: ContainerResizePolicy represents resource resize\n                          policy for the container.\n                        properties:\n                          resourceName:\n                            description: 'Name of the resource to which this resource\n                              resize policy applies. Supported values: cpu, memory.'\n                            type: string\n                          restartPolicy:\n                            description: Restart policy to apply when specified resource\n                              is resized. If not specified, it defaults to NotRequired.\n                            type: string\n                        required:\n                        - resourceName\n                        - restartPolicy\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    resources:\n                      description: 'Compute Resources required by this container.\n                        Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                      properties:\n                        claims:\n                          description: \"Claims lists the names of resources, defined\n                            in spec.resourceClaims, that are used by this container.\n                            \\n This is an alpha field and requires enabling the DynamicResourceAllocation\n                            feature gate. \\n This field is immutable. It can only\n                            be set for containers.\"\n                          items:\n                            description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                            properties:\n                              name:\n                                description: Name must match the name of one entry\n                                  in pod.spec.resourceClaims of the Pod where this\n                                  field is used. It makes that resource available\n                                  inside a container.\n                                type: string\n                            required:\n                            - name\n                            type: object\n                          type: array\n                          x-kubernetes-list-map-keys:\n                          - name\n                          x-kubernetes-list-type: map\n                        limits:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Limits describes the maximum amount of compute\n                            resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                        requests:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Requests describes the minimum amount of compute\n                            resources required. If Requests is omitted for a container,\n                            it defaults to Limits if that is explicitly specified,\n                            otherwise to an implementation-defined value. Requests\n                            cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                      type: object\n                    securityContext:\n                      description: 'SecurityContext defines the security options the\n                        container should be run with. If set, the fields of SecurityContext\n                        override the equivalent fields of PodSecurityContext. More\n                        info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/'\n                      properties:\n                        allowPrivilegeEscalation:\n                          description: 'AllowPrivilegeEscalation controls whether\n                            a process can gain more privileges than its parent process.\n                            This bool directly controls if the no_new_privs flag will\n                            be set on the container process. AllowPrivilegeEscalation\n                            is true always when the container is: 1) run as Privileged\n                            2) has CAP_SYS_ADMIN Note that this field cannot be set\n                            when spec.os.name is windows.'\n                          type: boolean\n                        capabilities:\n                          description: The capabilities to add/drop when running containers.\n                            Defaults to the default set of capabilities granted by\n                            the container runtime. Note that this field cannot be\n                            set when spec.os.name is windows.\n                          properties:\n                            add:\n                              description: Added capabilities\n                              items:\n                                description: Capability represent POSIX capabilities\n                                  type\n                                type: string\n                              type: array\n                            drop:\n                              description: Removed capabilities\n                              items:\n                                description: Capability represent POSIX capabilities\n                                  type\n                                type: string\n                              type: array\n                          type: object\n                        privileged:\n                          description: Run container in privileged mode. Processes\n                            in privileged containers are essentially equivalent to\n                            root on the host. Defaults to false. Note that this field\n                            cannot be set when spec.os.name is windows.\n                          type: boolean\n                        procMount:\n                          description: procMount denotes the type of proc mount to\n                            use for the containers. The default is DefaultProcMount\n                            which uses the container runtime defaults for readonly\n                            paths and masked paths. This requires the ProcMountType\n                            feature flag to be enabled. Note that this field cannot\n                            be set when spec.os.name is windows.\n                          type: string\n                        readOnlyRootFilesystem:\n                          description: Whether this container has a read-only root\n                            filesystem. Default is false. Note that this field cannot\n                            be set when spec.os.name is windows.\n                          type: boolean\n                        runAsGroup:\n                          description: The GID to run the entrypoint of the container\n                            process. Uses runtime default if unset. May also be set\n                            in PodSecurityContext.  If set in both SecurityContext\n                            and PodSecurityContext, the value specified in SecurityContext\n                            takes precedence. Note that this field cannot be set when\n                            spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        runAsNonRoot:\n                          description: Indicates that the container must run as a\n                            non-root user. If true, the Kubelet will validate the\n                            image at runtime to ensure that it does not run as UID\n                            0 (root) and fail to start the container if it does. If\n                            unset or false, no such validation will be performed.\n                            May also be set in PodSecurityContext.  If set in both\n                            SecurityContext and PodSecurityContext, the value specified\n                            in SecurityContext takes precedence.\n                          type: boolean\n                        runAsUser:\n                          description: The UID to run the entrypoint of the container\n                            process. Defaults to user specified in image metadata\n                            if unspecified. May also be set in PodSecurityContext.  If\n                            set in both SecurityContext and PodSecurityContext, the\n                            value specified in SecurityContext takes precedence. Note\n                            that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        seLinuxOptions:\n                          description: The SELinux context to be applied to the container.\n                            If unspecified, the container runtime will allocate a\n                            random SELinux context for each container.  May also be\n                            set in PodSecurityContext.  If set in both SecurityContext\n                            and PodSecurityContext, the value specified in SecurityContext\n                            takes precedence. Note that this field cannot be set when\n                            spec.os.name is windows.\n                          properties:\n                            level:\n                              description: Level is SELinux level label that applies\n                                to the container.\n                              type: string\n                            role:\n                              description: Role is a SELinux role label that applies\n                                to the container.\n                              type: string\n                            type:\n                              description: Type is a SELinux type label that applies\n                                to the container.\n                              type: string\n                            user:\n                              description: User is a SELinux user label that applies\n                                to the container.\n                              type: string\n                          type: object\n                        seccompProfile:\n                          description: The seccomp options to use by this container.\n                            If seccomp options are provided at both the pod & container\n                            level, the container options override the pod options.\n                            Note that this field cannot be set when spec.os.name is\n                            windows.\n                          properties:\n                            localhostProfile:\n                              description: localhostProfile indicates a profile defined\n                                in a file on the node should be used. The profile\n                                must be preconfigured on the node to work. Must be\n                                a descending path, relative to the kubelet's configured\n                                seccomp profile location. Must only be set if type\n                                is \"Localhost\".\n                              type: string\n                            type:\n                              description: \"type indicates which kind of seccomp profile\n                                will be applied. Valid options are: \\n Localhost -\n                                a profile defined in a file on the node should be\n                                used. RuntimeDefault - the container runtime default\n                                profile should be used. Unconfined - no profile should\n                                be applied.\"\n                              type: string\n                          required:\n                          - type\n                          type: object\n                        windowsOptions:\n                          description: The Windows specific settings applied to all\n                            containers. If unspecified, the options from the PodSecurityContext\n                            will be used. If set in both SecurityContext and PodSecurityContext,\n                            the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is\n                            linux.\n                          properties:\n                            gmsaCredentialSpec:\n                              description: GMSACredentialSpec is where the GMSA admission\n                                webhook (https://github.com/kubernetes-sigs/windows-gmsa)\n                                inlines the contents of the GMSA credential spec named\n                                by the GMSACredentialSpecName field.\n                              type: string\n                            gmsaCredentialSpecName:\n                              description: GMSACredentialSpecName is the name of the\n                                GMSA credential spec to use.\n                              type: string\n                            hostProcess:\n                              description: HostProcess determines if a container should\n                                be run as a 'Host Process' container. This field is\n                                alpha-level and will only be honored by components\n                                that enable the WindowsHostProcessContainers feature\n                                flag. Setting this field without the feature flag\n                                will result in errors when validating the Pod. All\n                                of a Pod's containers must have the same effective\n                                HostProcess value (it is not allowed to have a mix\n                                of HostProcess containers and non-HostProcess containers).  In\n                                addition, if HostProcess is true then HostNetwork\n                                must also be set to true.\n                              type: boolean\n                            runAsUserName:\n                              description: The UserName in Windows to run the entrypoint\n                                of the container process. Defaults to the user specified\n                                in image metadata if unspecified. May also be set\n                                in PodSecurityContext. If set in both SecurityContext\n                                and PodSecurityContext, the value specified in SecurityContext\n                                takes precedence.\n                              type: string\n                          type: object\n                      type: object\n                    startupProbe:\n                      description: 'StartupProbe indicates that the Pod has successfully\n                        initialized. If specified, no other probes are executed until\n                        this completes successfully. If this probe fails, the Pod\n                        will be restarted, just as if the livenessProbe failed. This\n                        can be used to provide different probe parameters at the beginning\n                        of a Pod''s lifecycle, when it might take a long time to load\n                        data or warm a cache, than during steady-state operation.\n                        This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    stdin:\n                      description: Whether this container should allocate a buffer\n                        for stdin in the container runtime. If this is not set, reads\n                        from stdin in the container will always result in EOF. Default\n                        is false.\n                      type: boolean\n                    stdinOnce:\n                      description: Whether the container runtime should close the\n                        stdin channel after it has been opened by a single attach.\n                        When stdin is true the stdin stream will remain open across\n                        multiple attach sessions. If stdinOnce is set to true, stdin\n                        is opened on container start, is empty until the first client\n                        attaches to stdin, and then remains open and accepts data\n                        until the client disconnects, at which time stdin is closed\n                        and remains closed until the container is restarted. If this\n                        flag is false, a container processes that reads from stdin\n                        will never receive an EOF. Default is false\n                      type: boolean\n                    terminationMessagePath:\n                      description: 'Optional: Path at which the file to which the\n                        container''s termination message will be written is mounted\n                        into the container''s filesystem. Message written is intended\n                        to be brief final status, such as an assertion failure message.\n                        Will be truncated by the node if greater than 4096 bytes.\n                        The total message length across all containers will be limited\n                        to 12kb. Defaults to /dev/termination-log. Cannot be updated.'\n                      type: string\n                    terminationMessagePolicy:\n                      description: Indicate how the termination message should be\n                        populated. File will use the contents of terminationMessagePath\n                        to populate the container status message on both success and\n                        failure. FallbackToLogsOnError will use the last chunk of\n                        container log output if the termination message file is empty\n                        and the container exited with an error. The log output is\n                        limited to 2048 bytes or 80 lines, whichever is smaller. Defaults\n                        to File. Cannot be updated.\n                      type: string\n                    tty:\n                      description: Whether this container should allocate a TTY for\n                        itself, also requires 'stdin' to be true. Default is false.\n                      type: boolean\n                    volumeDevices:\n                      description: volumeDevices is the list of block devices to be\n                        used by the container.\n                      items:\n                        description: volumeDevice describes a mapping of a raw block\n                          device within a container.\n                        properties:\n                          devicePath:\n                            description: devicePath is the path inside of the container\n                              that the device will be mapped to.\n                            type: string\n                          name:\n                            description: name must match the name of a persistentVolumeClaim\n                              in the pod\n                            type: string\n                        required:\n                        - devicePath\n                        - name\n                        type: object\n                      type: array\n                    volumeMounts:\n                      description: Pod volumes to mount into the container's filesystem.\n                        Cannot be updated.\n                      items:\n                        description: VolumeMount describes a mounting of a Volume\n                          within a container.\n                        properties:\n                          mountPath:\n                            description: Path within the container at which the volume\n                              should be mounted.  Must not contain ':'.\n                            type: string\n                          mountPropagation:\n                            description: mountPropagation determines how mounts are\n                              propagated from the host to container and the other\n                              way around. When not set, MountPropagationNone is used.\n                              This field is beta in 1.10.\n                            type: string\n                          name:\n                            description: This must match the Name of a Volume.\n                            type: string\n                          readOnly:\n                            description: Mounted read-only if true, read-write otherwise\n                              (false or unspecified). Defaults to false.\n                            type: boolean\n                          subPath:\n                            description: Path within the volume from which the container's\n                              volume should be mounted. Defaults to \"\" (volume's root).\n                            type: string\n                          subPathExpr:\n                            description: Expanded path within the volume from which\n                              the container's volume should be mounted. Behaves similarly\n                              to SubPath but environment variable references $(VAR_NAME)\n                              are expanded using the container's environment. Defaults\n                              to \"\" (volume's root). SubPathExpr and SubPath are mutually\n                              exclusive.\n                            type: string\n                        required:\n                        - mountPath\n                        - name\n                        type: object\n                      type: array\n                    workingDir:\n                      description: Container's working directory. If not specified,\n                        the container runtime's default will be used, which might\n                        be configured in the container image. Cannot be updated.\n                      type: string\n                  required:\n                  - name\n                  type: object\n                type: array\n              disableCompaction:\n                description: When true, the Prometheus compaction is disabled.\n                type: boolean\n              enableAdminAPI:\n                description: \"Enables access to the Prometheus web admin API. \\n WARNING:\n                  Enabling the admin APIs enables mutating endpoints, to delete data,\n                  shutdown Prometheus, and more. Enabling this should be done with\n                  care and the user is advised to add additional authentication authorization\n                  via a proxy to ensure only clients authorized to perform these actions\n                  can do so. \\n For more information: https://prometheus.io/docs/prometheus/latest/querying/api/#tsdb-admin-apis\"\n                type: boolean\n              enableFeatures:\n                description: \"Enable access to Prometheus feature flags. By default,\n                  no features are enabled. \\n Enabling features which are disabled\n                  by default is entirely outside the scope of what the maintainers\n                  will support and by doing so, you accept that this behaviour may\n                  break at any time without notice. \\n For more information see https://prometheus.io/docs/prometheus/latest/feature_flags/\"\n                items:\n                  type: string\n                type: array\n              enableRemoteWriteReceiver:\n                description: \"Enable Prometheus to be used as a receiver for the Prometheus\n                  remote write protocol. \\n WARNING: This is not considered an efficient\n                  way of ingesting samples. Use it with caution for specific low-volume\n                  use cases. It is not suitable for replacing the ingestion via scraping\n                  and turning Prometheus into a push-based metrics collection system.\n                  For more information see https://prometheus.io/docs/prometheus/latest/querying/api/#remote-write-receiver\n                  \\n It requires Prometheus >= v2.33.0.\"\n                type: boolean\n              enforcedBodySizeLimit:\n                description: \"When defined, enforcedBodySizeLimit specifies a global\n                  limit on the size of uncompressed response body that will be accepted\n                  by Prometheus. Targets responding with a body larger than this many\n                  bytes will cause the scrape to fail. \\n It requires Prometheus >=\n                  v2.28.0.\"\n                pattern: (^0|([0-9]*[.])?[0-9]+((K|M|G|T|E|P)i?)?B)$\n                type: string\n              enforcedLabelLimit:\n                description: \"When defined, enforcedLabelLimit specifies a global\n                  limit on the number of labels per sample. The value overrides any\n                  `spec.labelLimit` set by ServiceMonitor, PodMonitor, Probe objects\n                  unless `spec.labelLimit` is greater than zero and less than `spec.enforcedLabelLimit`.\n                  \\n It requires Prometheus >= v2.27.0.\"\n                format: int64\n                type: integer\n              enforcedLabelNameLengthLimit:\n                description: \"When defined, enforcedLabelNameLengthLimit specifies\n                  a global limit on the length of labels name per sample. The value\n                  overrides any `spec.labelNameLengthLimit` set by ServiceMonitor,\n                  PodMonitor, Probe objects unless `spec.labelNameLengthLimit` is\n                  greater than zero and less than `spec.enforcedLabelNameLengthLimit`.\n                  \\n It requires Prometheus >= v2.27.0.\"\n                format: int64\n                type: integer\n              enforcedLabelValueLengthLimit:\n                description: \"When not null, enforcedLabelValueLengthLimit defines\n                  a global limit on the length of labels value per sample. The value\n                  overrides any `spec.labelValueLengthLimit` set by ServiceMonitor,\n                  PodMonitor, Probe objects unless `spec.labelValueLengthLimit` is\n                  greater than zero and less than `spec.enforcedLabelValueLengthLimit`.\n                  \\n It requires Prometheus >= v2.27.0.\"\n                format: int64\n                type: integer\n              enforcedNamespaceLabel:\n                description: \"When not empty, a label will be added to \\n 1. All metrics\n                  scraped from `ServiceMonitor`, `PodMonitor`, `Probe` and `ScrapeConfig`\n                  objects. 2. All metrics generated from recording rules defined in\n                  `PrometheusRule` objects. 3. All alerts generated from alerting\n                  rules defined in `PrometheusRule` objects. 4. All vector selectors\n                  of PromQL expressions defined in `PrometheusRule` objects. \\n The\n                  label will not added for objects referenced in `spec.excludedFromEnforcement`.\n                  \\n The label's name is this field's value. The label's value is\n                  the namespace of the `ServiceMonitor`, `PodMonitor`, `Probe` or\n                  `PrometheusRule` object.\"\n                type: string\n              enforcedSampleLimit:\n                description: \"When defined, enforcedSampleLimit specifies a global\n                  limit on the number of scraped samples that will be accepted. This\n                  overrides any `spec.sampleLimit` set by ServiceMonitor, PodMonitor,\n                  Probe objects unless `spec.sampleLimit` is greater than zero and\n                  less than than `spec.enforcedSampleLimit`. \\n It is meant to be\n                  used by admins to keep the overall number of samples/series under\n                  a desired limit.\"\n                format: int64\n                type: integer\n              enforcedTargetLimit:\n                description: \"When defined, enforcedTargetLimit specifies a global\n                  limit on the number of scraped targets. The value overrides any\n                  `spec.targetLimit` set by ServiceMonitor, PodMonitor, Probe objects\n                  unless `spec.targetLimit` is greater than zero and less than `spec.enforcedTargetLimit`.\n                  \\n It is meant to be used by admins to to keep the overall number\n                  of targets under a desired limit.\"\n                format: int64\n                type: integer\n              evaluationInterval:\n                default: 30s\n                description: 'Interval between rule evaluations. Default: \"30s\"'\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              excludedFromEnforcement:\n                description: \"List of references to PodMonitor, ServiceMonitor, Probe\n                  and PrometheusRule objects to be excluded from enforcing a namespace\n                  label of origin. \\n It is only applicable if `spec.enforcedNamespaceLabel`\n                  set to true.\"\n                items:\n                  description: ObjectReference references a PodMonitor, ServiceMonitor,\n                    Probe or PrometheusRule object.\n                  properties:\n                    group:\n                      default: monitoring.coreos.com\n                      description: Group of the referent. When not specified, it defaults\n                        to `monitoring.coreos.com`\n                      enum:\n                      - monitoring.coreos.com\n                      type: string\n                    name:\n                      description: Name of the referent. When not set, all resources\n                        in the namespace are matched.\n                      type: string\n                    namespace:\n                      description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'\n                      minLength: 1\n                      type: string\n                    resource:\n                      description: Resource of the referent.\n                      enum:\n                      - prometheusrules\n                      - servicemonitors\n                      - podmonitors\n                      - probes\n                      type: string\n                  required:\n                  - namespace\n                  - resource\n                  type: object\n                type: array\n              exemplars:\n                description: Exemplars related settings that are runtime reloadable.\n                  It requires to enable the `exemplar-storage` feature flag to be\n                  effective.\n                properties:\n                  maxSize:\n                    description: \"Maximum number of exemplars stored in memory for\n                      all series. \\n exemplar-storage itself must be enabled using\n                      the `spec.enableFeature` option for exemplars to be scraped\n                      in the first place. \\n If not set, Prometheus uses its default\n                      value. A value of zero or less than zero disables the storage.\"\n                    format: int64\n                    type: integer\n                type: object\n              externalLabels:\n                additionalProperties:\n                  type: string\n                description: The labels to add to any time series or alerts when communicating\n                  with external systems (federation, remote storage, Alertmanager).\n                  Labels defined by `spec.replicaExternalLabelName` and `spec.prometheusExternalLabelName`\n                  take precedence over this list.\n                type: object\n              externalUrl:\n                description: The external URL under which the Prometheus service is\n                  externally available. This is necessary to generate correct URLs\n                  (for instance if Prometheus is accessible behind an Ingress resource).\n                type: string\n              hostAliases:\n                description: Optional list of hosts and IPs that will be injected\n                  into the Pod's hosts file if specified.\n                items:\n                  description: HostAlias holds the mapping between IP and hostnames\n                    that will be injected as an entry in the pod's hosts file.\n                  properties:\n                    hostnames:\n                      description: Hostnames for the above IP address.\n                      items:\n                        type: string\n                      type: array\n                    ip:\n                      description: IP address of the host file entry.\n                      type: string\n                  required:\n                  - hostnames\n                  - ip\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - ip\n                x-kubernetes-list-type: map\n              hostNetwork:\n                description: \"Use the host's network namespace if true. \\n Make sure\n                  to understand the security implications if you want to enable it\n                  (https://kubernetes.io/docs/concepts/configuration/overview/). \\n\n                  When hostNetwork is enabled, this will set the DNS policy to `ClusterFirstWithHostNet`\n                  automatically.\"\n                type: boolean\n              ignoreNamespaceSelectors:\n                description: When true, `spec.namespaceSelector` from all PodMonitor,\n                  ServiceMonitor and Probe objects will be ignored. They will only\n                  discover targets within the namespace of the PodMonitor, ServiceMonitor\n                  and Probe objec.\n                type: boolean\n              image:\n                description: \"Container image name for Prometheus. If specified, it\n                  takes precedence over the `spec.baseImage`, `spec.tag` and `spec.sha`\n                  fields. \\n Specifying `spec.version` is still necessary to ensure\n                  the Prometheus Operator knows which version of Prometheus is being\n                  configured. \\n If neither `spec.image` nor `spec.baseImage` are\n                  defined, the operator will use the latest upstream version of Prometheus\n                  available at the time when the operator was released.\"\n                type: string\n              imagePullPolicy:\n                description: Image pull policy for the 'prometheus', 'init-config-reloader'\n                  and 'config-reloader' containers. See https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy\n                  for more details.\n                enum:\n                - \"\"\n                - Always\n                - Never\n                - IfNotPresent\n                type: string\n              imagePullSecrets:\n                description: An optional list of references to Secrets in the same\n                  namespace to use for pulling images from registries. See http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod\n                items:\n                  description: LocalObjectReference contains enough information to\n                    let you locate the referenced object inside the same namespace.\n                  properties:\n                    name:\n                      description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                        TODO: Add other useful fields. apiVersion, kind, uid?'\n                      type: string\n                  type: object\n                  x-kubernetes-map-type: atomic\n                type: array\n              initContainers:\n                description: \"InitContainers allows injecting initContainers to the\n                  Pod definition. Those can be used to e.g.  fetch secrets for injection\n                  into the Prometheus configuration from external sources. Any errors\n                  during the execution of an initContainer will lead to a restart\n                  of the Pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n                  InitContainers described here modify an operator generated init\n                  containers if they share the same name and modifications are done\n                  via a strategic merge patch. \\n The names of init container name\n                  managed by the operator are: * `init-config-reloader`. \\n Overriding\n                  init containers is entirely outside the scope of what the maintainers\n                  will support and by doing so, you accept that this behaviour may\n                  break at any time without notice.\"\n                items:\n                  description: A single application container that you want to run\n                    within a pod.\n                  properties:\n                    args:\n                      description: 'Arguments to the entrypoint. The container image''s\n                        CMD is used if this is not provided. Variable references $(VAR_NAME)\n                        are expanded using the container''s environment. If a variable\n                        cannot be resolved, the reference in the input string will\n                        be unchanged. Double $$ are reduced to a single $, which allows\n                        for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\n                        produce the string literal \"$(VAR_NAME)\". Escaped references\n                        will never be expanded, regardless of whether the variable\n                        exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    command:\n                      description: 'Entrypoint array. Not executed within a shell.\n                        The container image''s ENTRYPOINT is used if this is not provided.\n                        Variable references $(VAR_NAME) are expanded using the container''s\n                        environment. If a variable cannot be resolved, the reference\n                        in the input string will be unchanged. Double $$ are reduced\n                        to a single $, which allows for escaping the $(VAR_NAME) syntax:\n                        i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\".\n                        Escaped references will never be expanded, regardless of whether\n                        the variable exists or not. Cannot be updated. More info:\n                        https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    env:\n                      description: List of environment variables to set in the container.\n                        Cannot be updated.\n                      items:\n                        description: EnvVar represents an environment variable present\n                          in a Container.\n                        properties:\n                          name:\n                            description: Name of the environment variable. Must be\n                              a C_IDENTIFIER.\n                            type: string\n                          value:\n                            description: 'Variable references $(VAR_NAME) are expanded\n                              using the previously defined environment variables in\n                              the container and any service environment variables.\n                              If a variable cannot be resolved, the reference in the\n                              input string will be unchanged. Double $$ are reduced\n                              to a single $, which allows for escaping the $(VAR_NAME)\n                              syntax: i.e. \"$$(VAR_NAME)\" will produce the string\n                              literal \"$(VAR_NAME)\". Escaped references will never\n                              be expanded, regardless of whether the variable exists\n                              or not. Defaults to \"\".'\n                            type: string\n                          valueFrom:\n                            description: Source for the environment variable's value.\n                              Cannot be used if value is not empty.\n                            properties:\n                              configMapKeyRef:\n                                description: Selects a key of a ConfigMap.\n                                properties:\n                                  key:\n                                    description: The key to select.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the ConfigMap or\n                                      its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              fieldRef:\n                                description: 'Selects a field of the pod: supports\n                                  metadata.name, metadata.namespace, `metadata.labels[''<KEY>'']`,\n                                  `metadata.annotations[''<KEY>'']`, spec.nodeName,\n                                  spec.serviceAccountName, status.hostIP, status.podIP,\n                                  status.podIPs.'\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath\n                                      is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the\n                                      specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              resourceFieldRef:\n                                description: 'Selects a resource of the container:\n                                  only resources limits and requests (limits.cpu,\n                                  limits.memory, limits.ephemeral-storage, requests.cpu,\n                                  requests.memory and requests.ephemeral-storage)\n                                  are currently supported.'\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes,\n                                      optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the\n                                      exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              secretKeyRef:\n                                description: Selects a key of a secret in the pod's\n                                  namespace\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            type: object\n                        required:\n                        - name\n                        type: object\n                      type: array\n                    envFrom:\n                      description: List of sources to populate environment variables\n                        in the container. The keys defined within a source must be\n                        a C_IDENTIFIER. All invalid keys will be reported as an event\n                        when the container is starting. When a key exists in multiple\n                        sources, the value associated with the last source will take\n                        precedence. Values defined by an Env with a duplicate key\n                        will take precedence. Cannot be updated.\n                      items:\n                        description: EnvFromSource represents the source of a set\n                          of ConfigMaps\n                        properties:\n                          configMapRef:\n                            description: The ConfigMap to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap must be\n                                  defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          prefix:\n                            description: An optional identifier to prepend to each\n                              key in the ConfigMap. Must be a C_IDENTIFIER.\n                            type: string\n                          secretRef:\n                            description: The Secret to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      type: array\n                    image:\n                      description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images\n                        This field is optional to allow higher level config management\n                        to default or override container images in workload controllers\n                        like Deployments and StatefulSets.'\n                      type: string\n                    imagePullPolicy:\n                      description: 'Image pull policy. One of Always, Never, IfNotPresent.\n                        Defaults to Always if :latest tag is specified, or IfNotPresent\n                        otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images'\n                      type: string\n                    lifecycle:\n                      description: Actions that the management system should take\n                        in response to container lifecycle events. Cannot be updated.\n                      properties:\n                        postStart:\n                          description: 'PostStart is called immediately after a container\n                            is created. If the handler fails, the container is terminated\n                            and restarted according to its restart policy. Other management\n                            of the container blocks until the hook completes. More\n                            info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute\n                                    inside the container, the working directory for\n                                    the command  is root ('/') in the container's\n                                    filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions\n                                    ('|', etc) won't work. To use a shell, you need\n                                    to explicitly call out to that shell. Exit status\n                                    of 0 is treated as live/healthy and non-zero is\n                                    unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to\n                                    the pod IP. You probably want to set \"Host\" in\n                                    httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request.\n                                    HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header\n                                      to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will\n                                          be canonicalized upon output, so case-variant\n                                          names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the\n                                    host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported\n                                as a LifecycleHandler and kept for the backward compatibility.\n                                There are no validation of this field and lifecycle\n                                hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to,\n                                    defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                        preStop:\n                          description: 'PreStop is called immediately before a container\n                            is terminated due to an API request or management event\n                            such as liveness/startup probe failure, preemption, resource\n                            contention, etc. The handler is not called if the container\n                            crashes or exits. The Pod''s termination grace period\n                            countdown begins before the PreStop hook is executed.\n                            Regardless of the outcome of the handler, the container\n                            will eventually terminate within the Pod''s termination\n                            grace period (unless delayed by finalizers). Other management\n                            of the container blocks until the hook completes or until\n                            the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute\n                                    inside the container, the working directory for\n                                    the command  is root ('/') in the container's\n                                    filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions\n                                    ('|', etc) won't work. To use a shell, you need\n                                    to explicitly call out to that shell. Exit status\n                                    of 0 is treated as live/healthy and non-zero is\n                                    unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to\n                                    the pod IP. You probably want to set \"Host\" in\n                                    httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request.\n                                    HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header\n                                      to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will\n                                          be canonicalized upon output, so case-variant\n                                          names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the\n                                    host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported\n                                as a LifecycleHandler and kept for the backward compatibility.\n                                There are no validation of this field and lifecycle\n                                hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to,\n                                    defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                      type: object\n                    livenessProbe:\n                      description: 'Periodic probe of container liveness. Container\n                        will be restarted if the probe fails. Cannot be updated. More\n                        info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    name:\n                      description: Name of the container specified as a DNS_LABEL.\n                        Each container in a pod must have a unique name (DNS_LABEL).\n                        Cannot be updated.\n                      type: string\n                    ports:\n                      description: List of ports to expose from the container. Not\n                        specifying a port here DOES NOT prevent that port from being\n                        exposed. Any port which is listening on the default \"0.0.0.0\"\n                        address inside a container will be accessible from the network.\n                        Modifying this array with strategic merge patch may corrupt\n                        the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255.\n                        Cannot be updated.\n                      items:\n                        description: ContainerPort represents a network port in a\n                          single container.\n                        properties:\n                          containerPort:\n                            description: Number of port to expose on the pod's IP\n                              address. This must be a valid port number, 0 < x < 65536.\n                            format: int32\n                            type: integer\n                          hostIP:\n                            description: What host IP to bind the external port to.\n                            type: string\n                          hostPort:\n                            description: Number of port to expose on the host. If\n                              specified, this must be a valid port number, 0 < x <\n                              65536. If HostNetwork is specified, this must match\n                              ContainerPort. Most containers do not need this.\n                            format: int32\n                            type: integer\n                          name:\n                            description: If specified, this must be an IANA_SVC_NAME\n                              and unique within the pod. Each named port in a pod\n                              must have a unique name. Name for the port that can\n                              be referred to by services.\n                            type: string\n                          protocol:\n                            default: TCP\n                            description: Protocol for port. Must be UDP, TCP, or SCTP.\n                              Defaults to \"TCP\".\n                            type: string\n                        required:\n                        - containerPort\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - containerPort\n                      - protocol\n                      x-kubernetes-list-type: map\n                    readinessProbe:\n                      description: 'Periodic probe of container service readiness.\n                        Container will be removed from service endpoints if the probe\n                        fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    resizePolicy:\n                      description: Resources resize policy for the container.\n                      items:\n                        description: ContainerResizePolicy represents resource resize\n                          policy for the container.\n                        properties:\n                          resourceName:\n                            description: 'Name of the resource to which this resource\n                              resize policy applies. Supported values: cpu, memory.'\n                            type: string\n                          restartPolicy:\n                            description: Restart policy to apply when specified resource\n                              is resized. If not specified, it defaults to NotRequired.\n                            type: string\n                        required:\n                        - resourceName\n                        - restartPolicy\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    resources:\n                      description: 'Compute Resources required by this container.\n                        Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                      properties:\n                        claims:\n                          description: \"Claims lists the names of resources, defined\n                            in spec.resourceClaims, that are used by this container.\n                            \\n This is an alpha field and requires enabling the DynamicResourceAllocation\n                            feature gate. \\n This field is immutable. It can only\n                            be set for containers.\"\n                          items:\n                            description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                            properties:\n                              name:\n                                description: Name must match the name of one entry\n                                  in pod.spec.resourceClaims of the Pod where this\n                                  field is used. It makes that resource available\n                                  inside a container.\n                                type: string\n                            required:\n                            - name\n                            type: object\n                          type: array\n                          x-kubernetes-list-map-keys:\n                          - name\n                          x-kubernetes-list-type: map\n                        limits:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Limits describes the maximum amount of compute\n                            resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                        requests:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Requests describes the minimum amount of compute\n                            resources required. If Requests is omitted for a container,\n                            it defaults to Limits if that is explicitly specified,\n                            otherwise to an implementation-defined value. Requests\n                            cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                      type: object\n                    securityContext:\n                      description: 'SecurityContext defines the security options the\n                        container should be run with. If set, the fields of SecurityContext\n                        override the equivalent fields of PodSecurityContext. More\n                        info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/'\n                      properties:\n                        allowPrivilegeEscalation:\n                          description: 'AllowPrivilegeEscalation controls whether\n                            a process can gain more privileges than its parent process.\n                            This bool directly controls if the no_new_privs flag will\n                            be set on the container process. AllowPrivilegeEscalation\n                            is true always when the container is: 1) run as Privileged\n                            2) has CAP_SYS_ADMIN Note that this field cannot be set\n                            when spec.os.name is windows.'\n                          type: boolean\n                        capabilities:\n                          description: The capabilities to add/drop when running containers.\n                            Defaults to the default set of capabilities granted by\n                            the container runtime. Note that this field cannot be\n                            set when spec.os.name is windows.\n                          properties:\n                            add:\n                              description: Added capabilities\n                              items:\n                                description: Capability represent POSIX capabilities\n                                  type\n                                type: string\n                              type: array\n                            drop:\n                              description: Removed capabilities\n                              items:\n                                description: Capability represent POSIX capabilities\n                                  type\n                                type: string\n                              type: array\n                          type: object\n                        privileged:\n                          description: Run container in privileged mode. Processes\n                            in privileged containers are essentially equivalent to\n                            root on the host. Defaults to false. Note that this field\n                            cannot be set when spec.os.name is windows.\n                          type: boolean\n                        procMount:\n                          description: procMount denotes the type of proc mount to\n                            use for the containers. The default is DefaultProcMount\n                            which uses the container runtime defaults for readonly\n                            paths and masked paths. This requires the ProcMountType\n                            feature flag to be enabled. Note that this field cannot\n                            be set when spec.os.name is windows.\n                          type: string\n                        readOnlyRootFilesystem:\n                          description: Whether this container has a read-only root\n                            filesystem. Default is false. Note that this field cannot\n                            be set when spec.os.name is windows.\n                          type: boolean\n                        runAsGroup:\n                          description: The GID to run the entrypoint of the container\n                            process. Uses runtime default if unset. May also be set\n                            in PodSecurityContext.  If set in both SecurityContext\n                            and PodSecurityContext, the value specified in SecurityContext\n                            takes precedence. Note that this field cannot be set when\n                            spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        runAsNonRoot:\n                          description: Indicates that the container must run as a\n                            non-root user. If true, the Kubelet will validate the\n                            image at runtime to ensure that it does not run as UID\n                            0 (root) and fail to start the container if it does. If\n                            unset or false, no such validation will be performed.\n                            May also be set in PodSecurityContext.  If set in both\n                            SecurityContext and PodSecurityContext, the value specified\n                            in SecurityContext takes precedence.\n                          type: boolean\n                        runAsUser:\n                          description: The UID to run the entrypoint of the container\n                            process. Defaults to user specified in image metadata\n                            if unspecified. May also be set in PodSecurityContext.  If\n                            set in both SecurityContext and PodSecurityContext, the\n                            value specified in SecurityContext takes precedence. Note\n                            that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        seLinuxOptions:\n                          description: The SELinux context to be applied to the container.\n                            If unspecified, the container runtime will allocate a\n                            random SELinux context for each container.  May also be\n                            set in PodSecurityContext.  If set in both SecurityContext\n                            and PodSecurityContext, the value specified in SecurityContext\n                            takes precedence. Note that this field cannot be set when\n                            spec.os.name is windows.\n                          properties:\n                            level:\n                              description: Level is SELinux level label that applies\n                                to the container.\n                              type: string\n                            role:\n                              description: Role is a SELinux role label that applies\n                                to the container.\n                              type: string\n                            type:\n                              description: Type is a SELinux type label that applies\n                                to the container.\n                              type: string\n                            user:\n                              description: User is a SELinux user label that applies\n                                to the container.\n                              type: string\n                          type: object\n                        seccompProfile:\n                          description: The seccomp options to use by this container.\n                            If seccomp options are provided at both the pod & container\n                            level, the container options override the pod options.\n                            Note that this field cannot be set when spec.os.name is\n                            windows.\n                          properties:\n                            localhostProfile:\n                              description: localhostProfile indicates a profile defined\n                                in a file on the node should be used. The profile\n                                must be preconfigured on the node to work. Must be\n                                a descending path, relative to the kubelet's configured\n                                seccomp profile location. Must only be set if type\n                                is \"Localhost\".\n                              type: string\n                            type:\n                              description: \"type indicates which kind of seccomp profile\n                                will be applied. Valid options are: \\n Localhost -\n                                a profile defined in a file on the node should be\n                                used. RuntimeDefault - the container runtime default\n                                profile should be used. Unconfined - no profile should\n                                be applied.\"\n                              type: string\n                          required:\n                          - type\n                          type: object\n                        windowsOptions:\n                          description: The Windows specific settings applied to all\n                            containers. If unspecified, the options from the PodSecurityContext\n                            will be used. If set in both SecurityContext and PodSecurityContext,\n                            the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is\n                            linux.\n                          properties:\n                            gmsaCredentialSpec:\n                              description: GMSACredentialSpec is where the GMSA admission\n                                webhook (https://github.com/kubernetes-sigs/windows-gmsa)\n                                inlines the contents of the GMSA credential spec named\n                                by the GMSACredentialSpecName field.\n                              type: string\n                            gmsaCredentialSpecName:\n                              description: GMSACredentialSpecName is the name of the\n                                GMSA credential spec to use.\n                              type: string\n                            hostProcess:\n                              description: HostProcess determines if a container should\n                                be run as a 'Host Process' container. This field is\n                                alpha-level and will only be honored by components\n                                that enable the WindowsHostProcessContainers feature\n                                flag. Setting this field without the feature flag\n                                will result in errors when validating the Pod. All\n                                of a Pod's containers must have the same effective\n                                HostProcess value (it is not allowed to have a mix\n                                of HostProcess containers and non-HostProcess containers).  In\n                                addition, if HostProcess is true then HostNetwork\n                                must also be set to true.\n                              type: boolean\n                            runAsUserName:\n                              description: The UserName in Windows to run the entrypoint\n                                of the container process. Defaults to the user specified\n                                in image metadata if unspecified. May also be set\n                                in PodSecurityContext. If set in both SecurityContext\n                                and PodSecurityContext, the value specified in SecurityContext\n                                takes precedence.\n                              type: string\n                          type: object\n                      type: object\n                    startupProbe:\n                      description: 'StartupProbe indicates that the Pod has successfully\n                        initialized. If specified, no other probes are executed until\n                        this completes successfully. If this probe fails, the Pod\n                        will be restarted, just as if the livenessProbe failed. This\n                        can be used to provide different probe parameters at the beginning\n                        of a Pod''s lifecycle, when it might take a long time to load\n                        data or warm a cache, than during steady-state operation.\n                        This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    stdin:\n                      description: Whether this container should allocate a buffer\n                        for stdin in the container runtime. If this is not set, reads\n                        from stdin in the container will always result in EOF. Default\n                        is false.\n                      type: boolean\n                    stdinOnce:\n                      description: Whether the container runtime should close the\n                        stdin channel after it has been opened by a single attach.\n                        When stdin is true the stdin stream will remain open across\n                        multiple attach sessions. If stdinOnce is set to true, stdin\n                        is opened on container start, is empty until the first client\n                        attaches to stdin, and then remains open and accepts data\n                        until the client disconnects, at which time stdin is closed\n                        and remains closed until the container is restarted. If this\n                        flag is false, a container processes that reads from stdin\n                        will never receive an EOF. Default is false\n                      type: boolean\n                    terminationMessagePath:\n                      description: 'Optional: Path at which the file to which the\n                        container''s termination message will be written is mounted\n                        into the container''s filesystem. Message written is intended\n                        to be brief final status, such as an assertion failure message.\n                        Will be truncated by the node if greater than 4096 bytes.\n                        The total message length across all containers will be limited\n                        to 12kb. Defaults to /dev/termination-log. Cannot be updated.'\n                      type: string\n                    terminationMessagePolicy:\n                      description: Indicate how the termination message should be\n                        populated. File will use the contents of terminationMessagePath\n                        to populate the container status message on both success and\n                        failure. FallbackToLogsOnError will use the last chunk of\n                        container log output if the termination message file is empty\n                        and the container exited with an error. The log output is\n                        limited to 2048 bytes or 80 lines, whichever is smaller. Defaults\n                        to File. Cannot be updated.\n                      type: string\n                    tty:\n                      description: Whether this container should allocate a TTY for\n                        itself, also requires 'stdin' to be true. Default is false.\n                      type: boolean\n                    volumeDevices:\n                      description: volumeDevices is the list of block devices to be\n                        used by the container.\n                      items:\n                        description: volumeDevice describes a mapping of a raw block\n                          device within a container.\n                        properties:\n                          devicePath:\n                            description: devicePath is the path inside of the container\n                              that the device will be mapped to.\n                            type: string\n                          name:\n                            description: name must match the name of a persistentVolumeClaim\n                              in the pod\n                            type: string\n                        required:\n                        - devicePath\n                        - name\n                        type: object\n                      type: array\n                    volumeMounts:\n                      description: Pod volumes to mount into the container's filesystem.\n                        Cannot be updated.\n                      items:\n                        description: VolumeMount describes a mounting of a Volume\n                          within a container.\n                        properties:\n                          mountPath:\n                            description: Path within the container at which the volume\n                              should be mounted.  Must not contain ':'.\n                            type: string\n                          mountPropagation:\n                            description: mountPropagation determines how mounts are\n                              propagated from the host to container and the other\n                              way around. When not set, MountPropagationNone is used.\n                              This field is beta in 1.10.\n                            type: string\n                          name:\n                            description: This must match the Name of a Volume.\n                            type: string\n                          readOnly:\n                            description: Mounted read-only if true, read-write otherwise\n                              (false or unspecified). Defaults to false.\n                            type: boolean\n                          subPath:\n                            description: Path within the volume from which the container's\n                              volume should be mounted. Defaults to \"\" (volume's root).\n                            type: string\n                          subPathExpr:\n                            description: Expanded path within the volume from which\n                              the container's volume should be mounted. Behaves similarly\n                              to SubPath but environment variable references $(VAR_NAME)\n                              are expanded using the container's environment. Defaults\n                              to \"\" (volume's root). SubPathExpr and SubPath are mutually\n                              exclusive.\n                            type: string\n                        required:\n                        - mountPath\n                        - name\n                        type: object\n                      type: array\n                    workingDir:\n                      description: Container's working directory. If not specified,\n                        the container runtime's default will be used, which might\n                        be configured in the container image. Cannot be updated.\n                      type: string\n                  required:\n                  - name\n                  type: object\n                type: array\n              listenLocal:\n                description: When true, the Prometheus server listens on the loopback\n                  address instead of the Pod IP's address.\n                type: boolean\n              logFormat:\n                description: Log format for Log level for Prometheus and the config-reloader\n                  sidecar.\n                enum:\n                - \"\"\n                - logfmt\n                - json\n                type: string\n              logLevel:\n                description: Log level for Prometheus and the config-reloader sidecar.\n                enum:\n                - \"\"\n                - debug\n                - info\n                - warn\n                - error\n                type: string\n              minReadySeconds:\n                description: \"Minimum number of seconds for which a newly created\n                  Pod should be ready without any of its container crashing for it\n                  to be considered available. Defaults to 0 (pod will be considered\n                  available as soon as it is ready) \\n This is an alpha field from\n                  kubernetes 1.22 until 1.24 which requires enabling the StatefulSetMinReadySeconds\n                  feature gate.\"\n                format: int32\n                type: integer\n              nodeSelector:\n                additionalProperties:\n                  type: string\n                description: Defines on which Nodes the Pods are scheduled.\n                type: object\n              overrideHonorLabels:\n                description: When true, Prometheus resolves label conflicts by renaming\n                  the labels in the scraped data to \"exported_<label value>\" for all\n                  targets created from service and pod monitors. Otherwise the HonorLabels\n                  field of the service or pod monitor applies.\n                type: boolean\n              overrideHonorTimestamps:\n                description: When true, Prometheus ignores the timestamps for all\n                  the targets created from service and pod monitors. Otherwise the\n                  HonorTimestamps field of the service or pod monitor applies.\n                type: boolean\n              paused:\n                description: When a Prometheus deployment is paused, no actions except\n                  for deletion will be performed on the underlying objects.\n                type: boolean\n              podMetadata:\n                description: PodMetadata configures labels and annotations which are\n                  propagated to the Prometheus pods.\n                properties:\n                  annotations:\n                    additionalProperties:\n                      type: string\n                    description: 'Annotations is an unstructured key value map stored\n                      with a resource that may be set by external tools to store and\n                      retrieve arbitrary metadata. They are not queryable and should\n                      be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations'\n                    type: object\n                  labels:\n                    additionalProperties:\n                      type: string\n                    description: 'Map of string keys and values that can be used to\n                      organize and categorize (scope and select) objects. May match\n                      selectors of replication controllers and services. More info:\n                      http://kubernetes.io/docs/user-guide/labels'\n                    type: object\n                  name:\n                    description: 'Name must be unique within a namespace. Is required\n                      when creating resources, although some resources may allow a\n                      client to request the generation of an appropriate name automatically.\n                      Name is primarily intended for creation idempotence and configuration\n                      definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names'\n                    type: string\n                type: object\n              podMonitorNamespaceSelector:\n                description: Namespaces to match for PodMonitors discovery. An empty\n                  label selector matches all namespaces. A null label selector matches\n                  the current namespace only.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              podMonitorSelector:\n                description: \"*Experimental* PodMonitors to be selected for target\n                  discovery. An empty label selector matches all objects. A null label\n                  selector matches no objects. \\n If `spec.serviceMonitorSelector`,\n                  `spec.podMonitorSelector`, `spec.probeSelector` and `spec.scrapeConfigSelector`\n                  are null, the Prometheus configuration is unmanaged. The Prometheus\n                  operator will ensure that the Prometheus configuration's Secret\n                  exists, but it is the responsibility of the user to provide the\n                  raw gzipped Prometheus configuration under the `prometheus.yaml.gz`\n                  key. This behavior is *deprecated* and will be removed in the next\n                  major version of the custom resource definition. It is recommended\n                  to use `spec.additionalScrapeConfigs` instead.\"\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              podTargetLabels:\n                description: PodTargetLabels are appended to the `spec.podTargetLabels`\n                  field of all PodMonitor and ServiceMonitor objects.\n                items:\n                  type: string\n                type: array\n              portName:\n                default: web\n                description: 'Port name used for the pods and governing service. Default:\n                  \"web\"'\n                type: string\n              priorityClassName:\n                description: Priority class assigned to the Pods.\n                type: string\n              probeNamespaceSelector:\n                description: '*Experimental* Namespaces to match for Probe discovery.\n                  An empty label selector matches all namespaces. A null label selector\n                  matches the current namespace only.'\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              probeSelector:\n                description: \"*Experimental* Probes to be selected for target discovery.\n                  An empty label selector matches all objects. A null label selector\n                  matches no objects. \\n If `spec.serviceMonitorSelector`, `spec.podMonitorSelector`,\n                  `spec.probeSelector` and `spec.scrapeConfigSelector` are null, the\n                  Prometheus configuration is unmanaged. The Prometheus operator will\n                  ensure that the Prometheus configuration's Secret exists, but it\n                  is the responsibility of the user to provide the raw gzipped Prometheus\n                  configuration under the `prometheus.yaml.gz` key. This behavior\n                  is *deprecated* and will be removed in the next major version of\n                  the custom resource definition. It is recommended to use `spec.additionalScrapeConfigs`\n                  instead.\"\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              prometheusExternalLabelName:\n                description: \"Name of Prometheus external label used to denote the\n                  Prometheus instance name. The external label will _not_ be added\n                  when the field is set to the empty string (`\\\"\\\"`). \\n Default:\n                  \\\"prometheus\\\"\"\n                type: string\n              prometheusRulesExcludedFromEnforce:\n                description: 'Defines the list of PrometheusRule objects to which\n                  the namespace label enforcement doesn''t apply. This is only relevant\n                  when `spec.enforcedNamespaceLabel` is set to true. *Deprecated:\n                  use `spec.excludedFromEnforcement` instead.*'\n                items:\n                  description: PrometheusRuleExcludeConfig enables users to configure\n                    excluded PrometheusRule names and their namespaces to be ignored\n                    while enforcing namespace label for alerts and metrics.\n                  properties:\n                    ruleName:\n                      description: Name of the excluded PrometheusRule object.\n                      type: string\n                    ruleNamespace:\n                      description: Namespace of the excluded PrometheusRule object.\n                      type: string\n                  required:\n                  - ruleName\n                  - ruleNamespace\n                  type: object\n                type: array\n              query:\n                description: QuerySpec defines the configuration of the Promethus\n                  query service.\n                properties:\n                  lookbackDelta:\n                    description: The delta difference allowed for retrieving metrics\n                      during expression evaluations.\n                    type: string\n                  maxConcurrency:\n                    description: Number of concurrent queries that can be run at once.\n                    format: int32\n                    minimum: 1\n                    type: integer\n                  maxSamples:\n                    description: Maximum number of samples a single query can load\n                      into memory. Note that queries will fail if they would load\n                      more samples than this into memory, so this also limits the\n                      number of samples a query can return.\n                    format: int32\n                    type: integer\n                  timeout:\n                    description: Maximum time a query may take before being aborted.\n                    pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                    type: string\n                type: object\n              queryLogFile:\n                description: \"queryLogFile specifies where the file to which PromQL\n                  queries are logged. \\n If the filename has an empty path, e.g. 'query.log',\n                  The Prometheus Pods will mount the file into an emptyDir volume\n                  at `/var/log/prometheus`. If a full path is provided, e.g. '/var/log/prometheus/query.log',\n                  you must mount a volume in the specified directory and it must be\n                  writable. This is because the prometheus container runs with a read-only\n                  root filesystem for security reasons. Alternatively, the location\n                  can be set to a standard I/O stream, e.g. `/dev/stdout`, to log\n                  query information to the default Prometheus log stream.\"\n                type: string\n              remoteRead:\n                description: Defines the list of remote read configurations.\n                items:\n                  description: RemoteReadSpec defines the configuration for Prometheus\n                    to read back samples from a remote endpoint.\n                  properties:\n                    authorization:\n                      description: \"Authorization section for the URL. \\n It requires\n                        Prometheus >= v2.26.0. \\n Cannot be set at the same time as\n                        `basicAuth`, or `oauth2`.\"\n                      properties:\n                        credentials:\n                          description: Selects a key of a Secret in the namespace\n                            that contains the credentials for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        credentialsFile:\n                          description: File to read a secret from, mutually exclusive\n                            with `credentials`.\n                          type: string\n                        type:\n                          description: \"Defines the authentication type. The value\n                            is case-insensitive. \\n \\\"Basic\\\" is not a supported value.\n                            \\n Default: \\\"Bearer\\\"\"\n                          type: string\n                      type: object\n                    basicAuth:\n                      description: \"BasicAuth configuration for the URL. \\n Cannot\n                        be set at the same time as `authorization`, or `oauth2`.\"\n                      properties:\n                        password:\n                          description: The secret in the service monitor namespace\n                            that contains the password for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        username:\n                          description: The secret in the service monitor namespace\n                            that contains the username for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      type: object\n                    bearerToken:\n                      description: \"*Warning: this field shouldn't be used because\n                        the token value appears in clear-text. Prefer using `authorization`.*\n                        \\n *Deprecated: this will be removed in a future release.*\"\n                      type: string\n                    bearerTokenFile:\n                      description: \"File from which to read the bearer token for the\n                        URL. \\n *Deprecated: this will be removed in a future release.\n                        Prefer using `authorization`.*\"\n                      type: string\n                    filterExternalLabels:\n                      description: \"Whether to use the external labels as selectors\n                        for the remote read endpoint. \\n It requires Prometheus >=\n                        v2.34.0.\"\n                      type: boolean\n                    followRedirects:\n                      description: \"Configure whether HTTP requests follow HTTP 3xx\n                        redirects. \\n It requires Prometheus >= v2.26.0.\"\n                      type: boolean\n                    headers:\n                      additionalProperties:\n                        type: string\n                      description: Custom HTTP headers to be sent along with each\n                        remote read request. Be aware that headers that are set by\n                        Prometheus itself can't be overwritten. Only valid in Prometheus\n                        versions 2.26.0 and newer.\n                      type: object\n                    name:\n                      description: \"The name of the remote read queue, it must be\n                        unique if specified. The name is used in metrics and logging\n                        in order to differentiate read configurations. \\n It requires\n                        Prometheus >= v2.15.0.\"\n                      type: string\n                    oauth2:\n                      description: \"OAuth2 configuration for the URL. \\n It requires\n                        Prometheus >= v2.27.0. \\n Cannot be set at the same time as\n                        `authorization`, or `basicAuth`.\"\n                      properties:\n                        clientId:\n                          description: The secret or configmap containing the OAuth2\n                            client id\n                          properties:\n                            configMap:\n                              description: ConfigMap containing data to use for the\n                                targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its\n                                    key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must\n                                    be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key\n                                    must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        clientSecret:\n                          description: The secret containing the OAuth2 client secret\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        endpointParams:\n                          additionalProperties:\n                            type: string\n                          description: Parameters to append to the token URL\n                          type: object\n                        scopes:\n                          description: OAuth2 scopes used for the token request\n                          items:\n                            type: string\n                          type: array\n                        tokenUrl:\n                          description: The URL to fetch the token from\n                          minLength: 1\n                          type: string\n                      required:\n                      - clientId\n                      - clientSecret\n                      - tokenUrl\n                      type: object\n                    proxyUrl:\n                      description: Optional ProxyURL.\n                      type: string\n                    readRecent:\n                      description: Whether reads should be made for queries for time\n                        ranges that the local storage should have complete data for.\n                      type: boolean\n                    remoteTimeout:\n                      description: Timeout for requests to the remote read endpoint.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    requiredMatchers:\n                      additionalProperties:\n                        type: string\n                      description: An optional list of equality matchers which have\n                        to be present in a selector to query the remote read endpoint.\n                      type: object\n                    tlsConfig:\n                      description: TLS Config to use for the URL.\n                      properties:\n                        ca:\n                          description: Certificate authority used when verifying server\n                            certificates.\n                          properties:\n                            configMap:\n                              description: ConfigMap containing data to use for the\n                                targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its\n                                    key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must\n                                    be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key\n                                    must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        caFile:\n                          description: Path to the CA cert in the Prometheus container\n                            to use for the targets.\n                          type: string\n                        cert:\n                          description: Client certificate to present when doing client-authentication.\n                          properties:\n                            configMap:\n                              description: ConfigMap containing data to use for the\n                                targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its\n                                    key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must\n                                    be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key\n                                    must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        certFile:\n                          description: Path to the client cert file in the Prometheus\n                            container for the targets.\n                          type: string\n                        insecureSkipVerify:\n                          description: Disable target certificate validation.\n                          type: boolean\n                        keyFile:\n                          description: Path to the client key file in the Prometheus\n                            container for the targets.\n                          type: string\n                        keySecret:\n                          description: Secret containing the client key file for the\n                            targets.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        serverName:\n                          description: Used to verify the hostname for the targets.\n                          type: string\n                      type: object\n                    url:\n                      description: The URL of the endpoint to query from.\n                      type: string\n                  required:\n                  - url\n                  type: object\n                type: array\n              remoteWrite:\n                description: Defines the list of remote write configurations.\n                items:\n                  description: RemoteWriteSpec defines the configuration to write\n                    samples from Prometheus to a remote endpoint.\n                  properties:\n                    authorization:\n                      description: \"Authorization section for the URL. \\n It requires\n                        Prometheus >= v2.26.0. \\n Cannot be set at the same time as\n                        `sigv4`, `basicAuth`, or `oauth2`.\"\n                      properties:\n                        credentials:\n                          description: Selects a key of a Secret in the namespace\n                            that contains the credentials for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        credentialsFile:\n                          description: File to read a secret from, mutually exclusive\n                            with `credentials`.\n                          type: string\n                        type:\n                          description: \"Defines the authentication type. The value\n                            is case-insensitive. \\n \\\"Basic\\\" is not a supported value.\n                            \\n Default: \\\"Bearer\\\"\"\n                          type: string\n                      type: object\n                    basicAuth:\n                      description: \"BasicAuth configuration for the URL. \\n Cannot\n                        be set at the same time as `sigv4`, `authorization`, or `oauth2`.\"\n                      properties:\n                        password:\n                          description: The secret in the service monitor namespace\n                            that contains the password for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        username:\n                          description: The secret in the service monitor namespace\n                            that contains the username for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      type: object\n                    bearerToken:\n                      description: \"*Warning: this field shouldn't be used because\n                        the token value appears in clear-text. Prefer using `authorization`.*\n                        \\n *Deprecated: this will be removed in a future release.*\"\n                      type: string\n                    bearerTokenFile:\n                      description: \"File from which to read bearer token for the URL.\n                        \\n *Deprecated: this will be removed in a future release.\n                        Prefer using `authorization`.*\"\n                      type: string\n                    headers:\n                      additionalProperties:\n                        type: string\n                      description: \"Custom HTTP headers to be sent along with each\n                        remote write request. Be aware that headers that are set by\n                        Prometheus itself can't be overwritten. \\n It requires Prometheus\n                        >= v2.25.0.\"\n                      type: object\n                    metadataConfig:\n                      description: MetadataConfig configures the sending of series\n                        metadata to the remote storage.\n                      properties:\n                        send:\n                          description: Defines whether metric metadata is sent to\n                            the remote storage or not.\n                          type: boolean\n                        sendInterval:\n                          description: Defines how frequently metric metadata is sent\n                            to the remote storage.\n                          pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                          type: string\n                      type: object\n                    name:\n                      description: \"The name of the remote write queue, it must be\n                        unique if specified. The name is used in metrics and logging\n                        in order to differentiate queues. \\n It requires Prometheus\n                        >= v2.15.0.\"\n                      type: string\n                    oauth2:\n                      description: \"OAuth2 configuration for the URL. \\n It requires\n                        Prometheus >= v2.27.0. \\n Cannot be set at the same time as\n                        `sigv4`, `authorization`, or `basicAuth`.\"\n                      properties:\n                        clientId:\n                          description: The secret or configmap containing the OAuth2\n                            client id\n                          properties:\n                            configMap:\n                              description: ConfigMap containing data to use for the\n                                targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its\n                                    key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must\n                                    be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key\n                                    must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        clientSecret:\n                          description: The secret containing the OAuth2 client secret\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        endpointParams:\n                          additionalProperties:\n                            type: string\n                          description: Parameters to append to the token URL\n                          type: object\n                        scopes:\n                          description: OAuth2 scopes used for the token request\n                          items:\n                            type: string\n                          type: array\n                        tokenUrl:\n                          description: The URL to fetch the token from\n                          minLength: 1\n                          type: string\n                      required:\n                      - clientId\n                      - clientSecret\n                      - tokenUrl\n                      type: object\n                    proxyUrl:\n                      description: Optional ProxyURL.\n                      type: string\n                    queueConfig:\n                      description: QueueConfig allows tuning of the remote write queue\n                        parameters.\n                      properties:\n                        batchSendDeadline:\n                          description: BatchSendDeadline is the maximum time a sample\n                            will wait in buffer.\n                          type: string\n                        capacity:\n                          description: Capacity is the number of samples to buffer\n                            per shard before we start dropping them.\n                          type: integer\n                        maxBackoff:\n                          description: MaxBackoff is the maximum retry delay.\n                          type: string\n                        maxRetries:\n                          description: MaxRetries is the maximum number of times to\n                            retry a batch on recoverable errors.\n                          type: integer\n                        maxSamplesPerSend:\n                          description: MaxSamplesPerSend is the maximum number of\n                            samples per send.\n                          type: integer\n                        maxShards:\n                          description: MaxShards is the maximum number of shards,\n                            i.e. amount of concurrency.\n                          type: integer\n                        minBackoff:\n                          description: MinBackoff is the initial retry delay. Gets\n                            doubled for every retry.\n                          type: string\n                        minShards:\n                          description: MinShards is the minimum number of shards,\n                            i.e. amount of concurrency.\n                          type: integer\n                        retryOnRateLimit:\n                          description: Retry upon receiving a 429 status code from\n                            the remote-write storage. This is experimental feature\n                            and might change in the future.\n                          type: boolean\n                      type: object\n                    remoteTimeout:\n                      description: Timeout for requests to the remote write endpoint.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    sendExemplars:\n                      description: \"Enables sending of exemplars over remote write.\n                        Note that exemplar-storage itself must be enabled using the\n                        `spec.enableFeature` option for exemplars to be scraped in\n                        the first place. \\n It requires Prometheus >= v2.27.0.\"\n                      type: boolean\n                    sendNativeHistograms:\n                      description: \"Enables sending of native histograms, also known\n                        as sparse histograms over remote write. \\n It requires Prometheus\n                        >= v2.40.0.\"\n                      type: boolean\n                    sigv4:\n                      description: \"Sigv4 allows to configures AWS's Signature Verification\n                        4 for the URL. \\n It requires Prometheus >= v2.26.0. \\n Cannot\n                        be set at the same time as `authorization`, `basicAuth`, or\n                        `oauth2`.\"\n                      properties:\n                        accessKey:\n                          description: AccessKey is the AWS API key. If not specified,\n                            the environment variable `AWS_ACCESS_KEY_ID` is used.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        profile:\n                          description: Profile is the named AWS profile used to authenticate.\n                          type: string\n                        region:\n                          description: Region is the AWS region. If blank, the region\n                            from the default credentials chain used.\n                          type: string\n                        roleArn:\n                          description: RoleArn is the named AWS profile used to authenticate.\n                          type: string\n                        secretKey:\n                          description: SecretKey is the AWS API secret. If not specified,\n                            the environment variable `AWS_SECRET_ACCESS_KEY` is used.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      type: object\n                    tlsConfig:\n                      description: TLS Config to use for the URL.\n                      properties:\n                        ca:\n                          description: Certificate authority used when verifying server\n                            certificates.\n                          properties:\n                            configMap:\n                              description: ConfigMap containing data to use for the\n                                targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its\n                                    key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must\n                                    be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key\n                                    must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        caFile:\n                          description: Path to the CA cert in the Prometheus container\n                            to use for the targets.\n                          type: string\n                        cert:\n                          description: Client certificate to present when doing client-authentication.\n                          properties:\n                            configMap:\n                              description: ConfigMap containing data to use for the\n                                targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its\n                                    key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must\n                                    be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key\n                                    must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        certFile:\n                          description: Path to the client cert file in the Prometheus\n                            container for the targets.\n                          type: string\n                        insecureSkipVerify:\n                          description: Disable target certificate validation.\n                          type: boolean\n                        keyFile:\n                          description: Path to the client key file in the Prometheus\n                            container for the targets.\n                          type: string\n                        keySecret:\n                          description: Secret containing the client key file for the\n                            targets.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        serverName:\n                          description: Used to verify the hostname for the targets.\n                          type: string\n                      type: object\n                    url:\n                      description: The URL of the endpoint to send samples to.\n                      type: string\n                    writeRelabelConfigs:\n                      description: The list of remote write relabel configurations.\n                      items:\n                        description: \"RelabelConfig allows dynamic rewriting of the\n                          label set for targets, alerts, scraped samples and remote\n                          write samples. \\n More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\"\n                        properties:\n                          action:\n                            default: replace\n                            description: \"Action to perform based on the regex matching.\n                              \\n `Uppercase` and `Lowercase` actions require Prometheus\n                              >= v2.36.0. `DropEqual` and `KeepEqual` actions require\n                              Prometheus >= v2.41.0. \\n Default: \\\"Replace\\\"\"\n                            enum:\n                            - replace\n                            - Replace\n                            - keep\n                            - Keep\n                            - drop\n                            - Drop\n                            - hashmod\n                            - HashMod\n                            - labelmap\n                            - LabelMap\n                            - labeldrop\n                            - LabelDrop\n                            - labelkeep\n                            - LabelKeep\n                            - lowercase\n                            - Lowercase\n                            - uppercase\n                            - Uppercase\n                            - keepequal\n                            - KeepEqual\n                            - dropequal\n                            - DropEqual\n                            type: string\n                          modulus:\n                            description: \"Modulus to take of the hash of the source\n                              label values. \\n Only applicable when the action is\n                              `HashMod`.\"\n                            format: int64\n                            type: integer\n                          regex:\n                            description: Regular expression against which the extracted\n                              value is matched.\n                            type: string\n                          replacement:\n                            description: \"Replacement value against which a Replace\n                              action is performed if the regular expression matches.\n                              \\n Regex capture groups are available.\"\n                            type: string\n                          separator:\n                            description: Separator is the string between concatenated\n                              SourceLabels.\n                            type: string\n                          sourceLabels:\n                            description: The source labels select values from existing\n                              labels. Their content is concatenated using the configured\n                              Separator and matched against the configured regular\n                              expression.\n                            items:\n                              description: LabelName is a valid Prometheus label name\n                                which may only contain ASCII letters, numbers, as\n                                well as underscores.\n                              pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$\n                              type: string\n                            type: array\n                          targetLabel:\n                            description: \"Label to which the resulting string is written\n                              in a replacement. \\n It is mandatory for `Replace`,\n                              `HashMod`, `Lowercase`, `Uppercase`, `KeepEqual` and\n                              `DropEqual` actions. \\n Regex capture groups are available.\"\n                            type: string\n                        type: object\n                      type: array\n                  required:\n                  - url\n                  type: object\n                type: array\n              replicaExternalLabelName:\n                description: \"Name of Prometheus external label used to denote the\n                  replica name. The external label will _not_ be added when the field\n                  is set to the empty string (`\\\"\\\"`). \\n Default: \\\"prometheus_replica\\\"\"\n                type: string\n              replicas:\n                description: \"Number of replicas of each shard to deploy for a Prometheus\n                  deployment. `spec.replicas` multiplied by `spec.shards` is the total\n                  number of Pods created. \\n Default: 1\"\n                format: int32\n                type: integer\n              resources:\n                description: Defines the resources requests and limits of the 'prometheus'\n                  container.\n                properties:\n                  claims:\n                    description: \"Claims lists the names of resources, defined in\n                      spec.resourceClaims, that are used by this container. \\n This\n                      is an alpha field and requires enabling the DynamicResourceAllocation\n                      feature gate. \\n This field is immutable. It can only be set\n                      for containers.\"\n                    items:\n                      description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                      properties:\n                        name:\n                          description: Name must match the name of one entry in pod.spec.resourceClaims\n                            of the Pod where this field is used. It makes that resource\n                            available inside a container.\n                          type: string\n                      required:\n                      - name\n                      type: object\n                    type: array\n                    x-kubernetes-list-map-keys:\n                    - name\n                    x-kubernetes-list-type: map\n                  limits:\n                    additionalProperties:\n                      anyOf:\n                      - type: integer\n                      - type: string\n                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                      x-kubernetes-int-or-string: true\n                    description: 'Limits describes the maximum amount of compute resources\n                      allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                    type: object\n                  requests:\n                    additionalProperties:\n                      anyOf:\n                      - type: integer\n                      - type: string\n                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                      x-kubernetes-int-or-string: true\n                    description: 'Requests describes the minimum amount of compute\n                      resources required. If Requests is omitted for a container,\n                      it defaults to Limits if that is explicitly specified, otherwise\n                      to an implementation-defined value. Requests cannot exceed Limits.\n                      More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                    type: object\n                type: object\n              retention:\n                description: \"How long to retain the Prometheus data. \\n Default:\n                  \\\"24h\\\" if `spec.retention` and `spec.retentionSize` are empty.\"\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              retentionSize:\n                description: Maximum number of bytes used by the Prometheus data.\n                pattern: (^0|([0-9]*[.])?[0-9]+((K|M|G|T|E|P)i?)?B)$\n                type: string\n              routePrefix:\n                description: \"The route prefix Prometheus registers HTTP handlers\n                  for. \\n This is useful when using `spec.externalURL`, and a proxy\n                  is rewriting HTTP routes of a request, and the actual ExternalURL\n                  is still true, but the server serves requests under a different\n                  route prefix. For example for use with `kubectl proxy`.\"\n                type: string\n              ruleNamespaceSelector:\n                description: Namespaces to match for PrometheusRule discovery. An\n                  empty label selector matches all namespaces. A null label selector\n                  matches the current namespace only.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              ruleSelector:\n                description: PrometheusRule objects to be selected for rule evaluation.\n                  An empty label selector matches all objects. A null label selector\n                  matches no objects.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              rules:\n                description: Defines the configuration of the Prometheus rules' engine.\n                properties:\n                  alert:\n                    description: \"Defines the parameters of the Prometheus rules'\n                      engine. \\n Any update to these parameters trigger a restart\n                      of the pods.\"\n                    properties:\n                      forGracePeriod:\n                        description: \"Minimum duration between alert and restored\n                          'for' state. \\n This is maintained only for alerts with\n                          a configured 'for' time greater than the grace period.\"\n                        type: string\n                      forOutageTolerance:\n                        description: Max time to tolerate prometheus outage for restoring\n                          'for' state of alert.\n                        type: string\n                      resendDelay:\n                        description: Minimum amount of time to wait before resending\n                          an alert to Alertmanager.\n                        type: string\n                    type: object\n                type: object\n              scrapeConfigNamespaceSelector:\n                description: Namespaces to match for ScrapeConfig discovery. An empty\n                  label selector matches all namespaces. A null label selector matches\n                  the current current namespace only.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              scrapeConfigSelector:\n                description: \"*Experimental* ScrapeConfigs to be selected for target\n                  discovery. An empty label selector matches all objects. A null label\n                  selector matches no objects. \\n If `spec.serviceMonitorSelector`,\n                  `spec.podMonitorSelector`, `spec.probeSelector` and `spec.scrapeConfigSelector`\n                  are null, the Prometheus configuration is unmanaged. The Prometheus\n                  operator will ensure that the Prometheus configuration's Secret\n                  exists, but it is the responsibility of the user to provide the\n                  raw gzipped Prometheus configuration under the `prometheus.yaml.gz`\n                  key. This behavior is *deprecated* and will be removed in the next\n                  major version of the custom resource definition. It is recommended\n                  to use `spec.additionalScrapeConfigs` instead.\"\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              scrapeInterval:\n                default: 30s\n                description: \"Interval between consecutive scrapes. \\n Default: \\\"30s\\\"\"\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              scrapeTimeout:\n                description: Number of seconds to wait until a scrape request times\n                  out.\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              secrets:\n                description: Secrets is a list of Secrets in the same namespace as\n                  the Prometheus object, which shall be mounted into the Prometheus\n                  Pods. Each Secret is added to the StatefulSet definition as a volume\n                  named `secret-<secret-name>`. The Secrets are mounted into /etc/prometheus/secrets/<secret-name>\n                  in the 'prometheus' container.\n                items:\n                  type: string\n                type: array\n              securityContext:\n                description: SecurityContext holds pod-level security attributes and\n                  common container settings. This defaults to the default PodSecurityContext.\n                properties:\n                  fsGroup:\n                    description: \"A special supplemental group that applies to all\n                      containers in a pod. Some volume types allow the Kubelet to\n                      change the ownership of that volume to be owned by the pod:\n                      \\n 1. The owning GID will be the FSGroup 2. The setgid bit is\n                      set (new files created in the volume will be owned by FSGroup)\n                      3. The permission bits are OR'd with rw-rw---- \\n If unset,\n                      the Kubelet will not modify the ownership and permissions of\n                      any volume. Note that this field cannot be set when spec.os.name\n                      is windows.\"\n                    format: int64\n                    type: integer\n                  fsGroupChangePolicy:\n                    description: 'fsGroupChangePolicy defines behavior of changing\n                      ownership and permission of the volume before being exposed\n                      inside Pod. This field will only apply to volume types which\n                      support fsGroup based ownership(and permissions). It will have\n                      no effect on ephemeral volume types such as: secret, configmaps\n                      and emptydir. Valid values are \"OnRootMismatch\" and \"Always\".\n                      If not specified, \"Always\" is used. Note that this field cannot\n                      be set when spec.os.name is windows.'\n                    type: string\n                  runAsGroup:\n                    description: The GID to run the entrypoint of the container process.\n                      Uses runtime default if unset. May also be set in SecurityContext.  If\n                      set in both SecurityContext and PodSecurityContext, the value\n                      specified in SecurityContext takes precedence for that container.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    format: int64\n                    type: integer\n                  runAsNonRoot:\n                    description: Indicates that the container must run as a non-root\n                      user. If true, the Kubelet will validate the image at runtime\n                      to ensure that it does not run as UID 0 (root) and fail to start\n                      the container if it does. If unset or false, no such validation\n                      will be performed. May also be set in SecurityContext.  If set\n                      in both SecurityContext and PodSecurityContext, the value specified\n                      in SecurityContext takes precedence.\n                    type: boolean\n                  runAsUser:\n                    description: The UID to run the entrypoint of the container process.\n                      Defaults to user specified in image metadata if unspecified.\n                      May also be set in SecurityContext.  If set in both SecurityContext\n                      and PodSecurityContext, the value specified in SecurityContext\n                      takes precedence for that container. Note that this field cannot\n                      be set when spec.os.name is windows.\n                    format: int64\n                    type: integer\n                  seLinuxOptions:\n                    description: The SELinux context to be applied to all containers.\n                      If unspecified, the container runtime will allocate a random\n                      SELinux context for each container.  May also be set in SecurityContext.  If\n                      set in both SecurityContext and PodSecurityContext, the value\n                      specified in SecurityContext takes precedence for that container.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    properties:\n                      level:\n                        description: Level is SELinux level label that applies to\n                          the container.\n                        type: string\n                      role:\n                        description: Role is a SELinux role label that applies to\n                          the container.\n                        type: string\n                      type:\n                        description: Type is a SELinux type label that applies to\n                          the container.\n                        type: string\n                      user:\n                        description: User is a SELinux user label that applies to\n                          the container.\n                        type: string\n                    type: object\n                  seccompProfile:\n                    description: The seccomp options to use by the containers in this\n                      pod. Note that this field cannot be set when spec.os.name is\n                      windows.\n                    properties:\n                      localhostProfile:\n                        description: localhostProfile indicates a profile defined\n                          in a file on the node should be used. The profile must be\n                          preconfigured on the node to work. Must be a descending\n                          path, relative to the kubelet's configured seccomp profile\n                          location. Must only be set if type is \"Localhost\".\n                        type: string\n                      type:\n                        description: \"type indicates which kind of seccomp profile\n                          will be applied. Valid options are: \\n Localhost - a profile\n                          defined in a file on the node should be used. RuntimeDefault\n                          - the container runtime default profile should be used.\n                          Unconfined - no profile should be applied.\"\n                        type: string\n                    required:\n                    - type\n                    type: object\n                  supplementalGroups:\n                    description: A list of groups applied to the first process run\n                      in each container, in addition to the container's primary GID,\n                      the fsGroup (if specified), and group memberships defined in\n                      the container image for the uid of the container process. If\n                      unspecified, no additional groups are added to any container.\n                      Note that group memberships defined in the container image for\n                      the uid of the container process are still effective, even if\n                      they are not included in this list. Note that this field cannot\n                      be set when spec.os.name is windows.\n                    items:\n                      format: int64\n                      type: integer\n                    type: array\n                  sysctls:\n                    description: Sysctls hold a list of namespaced sysctls used for\n                      the pod. Pods with unsupported sysctls (by the container runtime)\n                      might fail to launch. Note that this field cannot be set when\n                      spec.os.name is windows.\n                    items:\n                      description: Sysctl defines a kernel parameter to be set\n                      properties:\n                        name:\n                          description: Name of a property to set\n                          type: string\n                        value:\n                          description: Value of a property to set\n                          type: string\n                      required:\n                      - name\n                      - value\n                      type: object\n                    type: array\n                  windowsOptions:\n                    description: The Windows specific settings applied to all containers.\n                      If unspecified, the options within a container's SecurityContext\n                      will be used. If set in both SecurityContext and PodSecurityContext,\n                      the value specified in SecurityContext takes precedence. Note\n                      that this field cannot be set when spec.os.name is linux.\n                    properties:\n                      gmsaCredentialSpec:\n                        description: GMSACredentialSpec is where the GMSA admission\n                          webhook (https://github.com/kubernetes-sigs/windows-gmsa)\n                          inlines the contents of the GMSA credential spec named by\n                          the GMSACredentialSpecName field.\n                        type: string\n                      gmsaCredentialSpecName:\n                        description: GMSACredentialSpecName is the name of the GMSA\n                          credential spec to use.\n                        type: string\n                      hostProcess:\n                        description: HostProcess determines if a container should\n                          be run as a 'Host Process' container. This field is alpha-level\n                          and will only be honored by components that enable the WindowsHostProcessContainers\n                          feature flag. Setting this field without the feature flag\n                          will result in errors when validating the Pod. All of a\n                          Pod's containers must have the same effective HostProcess\n                          value (it is not allowed to have a mix of HostProcess containers\n                          and non-HostProcess containers).  In addition, if HostProcess\n                          is true then HostNetwork must also be set to true.\n                        type: boolean\n                      runAsUserName:\n                        description: The UserName in Windows to run the entrypoint\n                          of the container process. Defaults to the user specified\n                          in image metadata if unspecified. May also be set in PodSecurityContext.\n                          If set in both SecurityContext and PodSecurityContext, the\n                          value specified in SecurityContext takes precedence.\n                        type: string\n                    type: object\n                type: object\n              serviceAccountName:\n                description: ServiceAccountName is the name of the ServiceAccount\n                  to use to run the Prometheus Pods.\n                type: string\n              serviceMonitorNamespaceSelector:\n                description: Namespaces to match for ServicedMonitors discovery. An\n                  empty label selector matches all namespaces. A null label selector\n                  matches the current namespace only.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              serviceMonitorSelector:\n                description: \"ServiceMonitors to be selected for target discovery.\n                  An empty label selector matches all objects. A null label selector\n                  matches no objects. \\n If `spec.serviceMonitorSelector`, `spec.podMonitorSelector`,\n                  `spec.probeSelector` and `spec.scrapeConfigSelector` are null, the\n                  Prometheus configuration is unmanaged. The Prometheus operator will\n                  ensure that the Prometheus configuration's Secret exists, but it\n                  is the responsibility of the user to provide the raw gzipped Prometheus\n                  configuration under the `prometheus.yaml.gz` key. This behavior\n                  is *deprecated* and will be removed in the next major version of\n                  the custom resource definition. It is recommended to use `spec.additionalScrapeConfigs`\n                  instead.\"\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              sha:\n                description: '*Deprecated: use ''spec.image'' instead. The image''s\n                  digest can be specified as part of the image name.*'\n                type: string\n              shards:\n                description: \"EXPERIMENTAL: Number of shards to distribute targets\n                  onto. `spec.replicas` multiplied by `spec.shards` is the total number\n                  of Pods created. \\n Note that scaling down shards will not reshard\n                  data onto remaining instances, it must be manually moved. Increasing\n                  shards will not reshard data either but it will continue to be available\n                  from the same instances. To query globally, use Thanos sidecar and\n                  Thanos querier or remote write data to a central location. \\n Sharding\n                  is performed on the content of the `__address__` target meta-label\n                  for PodMonitors and ServiceMonitors and `__param_target__` for Probes.\n                  \\n Default: 1\"\n                format: int32\n                type: integer\n              storage:\n                description: Storage defines the storage used by Prometheus.\n                properties:\n                  disableMountSubPath:\n                    description: '*Deprecated: subPath usage will be removed in a\n                      future release.*'\n                    type: boolean\n                  emptyDir:\n                    description: 'EmptyDirVolumeSource to be used by the StatefulSet.\n                      If specified, it takes precedence over `ephemeral` and `volumeClaimTemplate`.\n                      More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir'\n                    properties:\n                      medium:\n                        description: 'medium represents what type of storage medium\n                          should back this directory. The default is \"\" which means\n                          to use the node''s default medium. Must be an empty string\n                          (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                        type: string\n                      sizeLimit:\n                        anyOf:\n                        - type: integer\n                        - type: string\n                        description: 'sizeLimit is the total amount of local storage\n                          required for this EmptyDir volume. The size limit is also\n                          applicable for memory medium. The maximum usage on memory\n                          medium EmptyDir would be the minimum value between the SizeLimit\n                          specified here and the sum of memory limits of all containers\n                          in a pod. The default is nil which means that the limit\n                          is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                        x-kubernetes-int-or-string: true\n                    type: object\n                  ephemeral:\n                    description: 'EphemeralVolumeSource to be used by the StatefulSet.\n                      This is a beta field in k8s 1.21 and GA in 1.15. For lower versions,\n                      starting with k8s 1.19, it requires enabling the GenericEphemeralVolume\n                      feature gate. More info: https://kubernetes.io/docs/concepts/storage/ephemeral-volumes/#generic-ephemeral-volumes'\n                    properties:\n                      volumeClaimTemplate:\n                        description: \"Will be used to create a stand-alone PVC to\n                          provision the volume. The pod in which this EphemeralVolumeSource\n                          is embedded will be the owner of the PVC, i.e. the PVC will\n                          be deleted together with the pod.  The name of the PVC will\n                          be `<pod name>-<volume name>` where `<volume name>` is the\n                          name from the `PodSpec.Volumes` array entry. Pod validation\n                          will reject the pod if the concatenated name is not valid\n                          for a PVC (for example, too long). \\n An existing PVC with\n                          that name that is not owned by the pod will *not* be used\n                          for the pod to avoid using an unrelated volume by mistake.\n                          Starting the pod is then blocked until the unrelated PVC\n                          is removed. If such a pre-created PVC is meant to be used\n                          by the pod, the PVC has to updated with an owner reference\n                          to the pod once the pod exists. Normally this should not\n                          be necessary, but it may be useful when manually reconstructing\n                          a broken cluster. \\n This field is read-only and no changes\n                          will be made by Kubernetes to the PVC after it has been\n                          created. \\n Required, must not be nil.\"\n                        properties:\n                          metadata:\n                            description: May contain labels and annotations that will\n                              be copied into the PVC when creating it. No other fields\n                              are allowed and will be rejected during validation.\n                            type: object\n                          spec:\n                            description: The specification for the PersistentVolumeClaim.\n                              The entire content is copied unchanged into the PVC\n                              that gets created from this template. The same fields\n                              as in a PersistentVolumeClaim are also valid here.\n                            properties:\n                              accessModes:\n                                description: 'accessModes contains the desired access\n                                  modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                                items:\n                                  type: string\n                                type: array\n                              dataSource:\n                                description: 'dataSource field can be used to specify\n                                  either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\n                                  * An existing PVC (PersistentVolumeClaim) If the\n                                  provisioner or an external controller can support\n                                  the specified data source, it will create a new\n                                  volume based on the contents of the specified data\n                                  source. When the AnyVolumeDataSource feature gate\n                                  is enabled, dataSource contents will be copied to\n                                  dataSourceRef, and dataSourceRef contents will be\n                                  copied to dataSource when dataSourceRef.namespace\n                                  is not specified. If the namespace is specified,\n                                  then dataSourceRef will not be copied to dataSource.'\n                                properties:\n                                  apiGroup:\n                                    description: APIGroup is the group for the resource\n                                      being referenced. If APIGroup is not specified,\n                                      the specified Kind must be in the core API group.\n                                      For any other third-party types, APIGroup is\n                                      required.\n                                    type: string\n                                  kind:\n                                    description: Kind is the type of resource being\n                                      referenced\n                                    type: string\n                                  name:\n                                    description: Name is the name of resource being\n                                      referenced\n                                    type: string\n                                required:\n                                - kind\n                                - name\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              dataSourceRef:\n                                description: 'dataSourceRef specifies the object from\n                                  which to populate the volume with data, if a non-empty\n                                  volume is desired. This may be any object from a\n                                  non-empty API group (non core object) or a PersistentVolumeClaim\n                                  object. When this field is specified, volume binding\n                                  will only succeed if the type of the specified object\n                                  matches some installed volume populator or dynamic\n                                  provisioner. This field will replace the functionality\n                                  of the dataSource field and as such if both fields\n                                  are non-empty, they must have the same value. For\n                                  backwards compatibility, when namespace isn''t specified\n                                  in dataSourceRef, both fields (dataSource and dataSourceRef)\n                                  will be set to the same value automatically if one\n                                  of them is empty and the other is non-empty. When\n                                  namespace is specified in dataSourceRef, dataSource\n                                  isn''t set to the same value and must be empty.\n                                  There are three important differences between dataSource\n                                  and dataSourceRef: * While dataSource only allows\n                                  two specific types of objects, dataSourceRef allows\n                                  any non-core object, as well as PersistentVolumeClaim\n                                  objects. * While dataSource ignores disallowed values\n                                  (dropping them), dataSourceRef preserves all values,\n                                  and generates an error if a disallowed value is\n                                  specified. * While dataSource only allows local\n                                  objects, dataSourceRef allows objects in any namespaces.\n                                  (Beta) Using this field requires the AnyVolumeDataSource\n                                  feature gate to be enabled. (Alpha) Using the namespace\n                                  field of dataSourceRef requires the CrossNamespaceVolumeDataSource\n                                  feature gate to be enabled.'\n                                properties:\n                                  apiGroup:\n                                    description: APIGroup is the group for the resource\n                                      being referenced. If APIGroup is not specified,\n                                      the specified Kind must be in the core API group.\n                                      For any other third-party types, APIGroup is\n                                      required.\n                                    type: string\n                                  kind:\n                                    description: Kind is the type of resource being\n                                      referenced\n                                    type: string\n                                  name:\n                                    description: Name is the name of resource being\n                                      referenced\n                                    type: string\n                                  namespace:\n                                    description: Namespace is the namespace of resource\n                                      being referenced Note that when a namespace\n                                      is specified, a gateway.networking.k8s.io/ReferenceGrant\n                                      object is required in the referent namespace\n                                      to allow that namespace's owner to accept the\n                                      reference. See the ReferenceGrant documentation\n                                      for details. (Alpha) This field requires the\n                                      CrossNamespaceVolumeDataSource feature gate\n                                      to be enabled.\n                                    type: string\n                                required:\n                                - kind\n                                - name\n                                type: object\n                              resources:\n                                description: 'resources represents the minimum resources\n                                  the volume should have. If RecoverVolumeExpansionFailure\n                                  feature is enabled users are allowed to specify\n                                  resource requirements that are lower than previous\n                                  value but must still be higher than capacity recorded\n                                  in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'\n                                properties:\n                                  claims:\n                                    description: \"Claims lists the names of resources,\n                                      defined in spec.resourceClaims, that are used\n                                      by this container. \\n This is an alpha field\n                                      and requires enabling the DynamicResourceAllocation\n                                      feature gate. \\n This field is immutable. It\n                                      can only be set for containers.\"\n                                    items:\n                                      description: ResourceClaim references one entry\n                                        in PodSpec.ResourceClaims.\n                                      properties:\n                                        name:\n                                          description: Name must match the name of\n                                            one entry in pod.spec.resourceClaims of\n                                            the Pod where this field is used. It makes\n                                            that resource available inside a container.\n                                          type: string\n                                      required:\n                                      - name\n                                      type: object\n                                    type: array\n                                    x-kubernetes-list-map-keys:\n                                    - name\n                                    x-kubernetes-list-type: map\n                                  limits:\n                                    additionalProperties:\n                                      anyOf:\n                                      - type: integer\n                                      - type: string\n                                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                      x-kubernetes-int-or-string: true\n                                    description: 'Limits describes the maximum amount\n                                      of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                    type: object\n                                  requests:\n                                    additionalProperties:\n                                      anyOf:\n                                      - type: integer\n                                      - type: string\n                                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                      x-kubernetes-int-or-string: true\n                                    description: 'Requests describes the minimum amount\n                                      of compute resources required. If Requests is\n                                      omitted for a container, it defaults to Limits\n                                      if that is explicitly specified, otherwise to\n                                      an implementation-defined value. Requests cannot\n                                      exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                    type: object\n                                type: object\n                              selector:\n                                description: selector is a label query over volumes\n                                  to consider for binding.\n                                properties:\n                                  matchExpressions:\n                                    description: matchExpressions is a list of label\n                                      selector requirements. The requirements are\n                                      ANDed.\n                                    items:\n                                      description: A label selector requirement is\n                                        a selector that contains values, a key, and\n                                        an operator that relates the key and values.\n                                      properties:\n                                        key:\n                                          description: key is the label key that the\n                                            selector applies to.\n                                          type: string\n                                        operator:\n                                          description: operator represents a key's\n                                            relationship to a set of values. Valid\n                                            operators are In, NotIn, Exists and DoesNotExist.\n                                          type: string\n                                        values:\n                                          description: values is an array of string\n                                            values. If the operator is In or NotIn,\n                                            the values array must be non-empty. If\n                                            the operator is Exists or DoesNotExist,\n                                            the values array must be empty. This array\n                                            is replaced during a strategic merge patch.\n                                          items:\n                                            type: string\n                                          type: array\n                                      required:\n                                      - key\n                                      - operator\n                                      type: object\n                                    type: array\n                                  matchLabels:\n                                    additionalProperties:\n                                      type: string\n                                    description: matchLabels is a map of {key,value}\n                                      pairs. A single {key,value} in the matchLabels\n                                      map is equivalent to an element of matchExpressions,\n                                      whose key field is \"key\", the operator is \"In\",\n                                      and the values array contains only \"value\".\n                                      The requirements are ANDed.\n                                    type: object\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              storageClassName:\n                                description: 'storageClassName is the name of the\n                                  StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'\n                                type: string\n                              volumeMode:\n                                description: volumeMode defines what type of volume\n                                  is required by the claim. Value of Filesystem is\n                                  implied when not included in claim spec.\n                                type: string\n                              volumeName:\n                                description: volumeName is the binding reference to\n                                  the PersistentVolume backing this claim.\n                                type: string\n                            type: object\n                        required:\n                        - spec\n                        type: object\n                    type: object\n                  volumeClaimTemplate:\n                    description: Defines the PVC spec to be used by the Prometheus\n                      StatefulSets. The easiest way to use a volume that cannot be\n                      automatically provisioned is to use a label selector alongside\n                      manually created PersistentVolumes.\n                    properties:\n                      apiVersion:\n                        description: 'APIVersion defines the versioned schema of this\n                          representation of an object. Servers should convert recognized\n                          schemas to the latest internal value, and may reject unrecognized\n                          values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n                        type: string\n                      kind:\n                        description: 'Kind is a string value representing the REST\n                          resource this object represents. Servers may infer this\n                          from the endpoint the client submits requests to. Cannot\n                          be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n                        type: string\n                      metadata:\n                        description: EmbeddedMetadata contains metadata relevant to\n                          an EmbeddedResource.\n                        properties:\n                          annotations:\n                            additionalProperties:\n                              type: string\n                            description: 'Annotations is an unstructured key value\n                              map stored with a resource that may be set by external\n                              tools to store and retrieve arbitrary metadata. They\n                              are not queryable and should be preserved when modifying\n                              objects. More info: http://kubernetes.io/docs/user-guide/annotations'\n                            type: object\n                          labels:\n                            additionalProperties:\n                              type: string\n                            description: 'Map of string keys and values that can be\n                              used to organize and categorize (scope and select) objects.\n                              May match selectors of replication controllers and services.\n                              More info: http://kubernetes.io/docs/user-guide/labels'\n                            type: object\n                          name:\n                            description: 'Name must be unique within a namespace.\n                              Is required when creating resources, although some resources\n                              may allow a client to request the generation of an appropriate\n                              name automatically. Name is primarily intended for creation\n                              idempotence and configuration definition. Cannot be\n                              updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names'\n                            type: string\n                        type: object\n                      spec:\n                        description: 'Defines the desired characteristics of a volume\n                          requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'\n                        properties:\n                          accessModes:\n                            description: 'accessModes contains the desired access\n                              modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                            items:\n                              type: string\n                            type: array\n                          dataSource:\n                            description: 'dataSource field can be used to specify\n                              either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\n                              * An existing PVC (PersistentVolumeClaim) If the provisioner\n                              or an external controller can support the specified\n                              data source, it will create a new volume based on the\n                              contents of the specified data source. When the AnyVolumeDataSource\n                              feature gate is enabled, dataSource contents will be\n                              copied to dataSourceRef, and dataSourceRef contents\n                              will be copied to dataSource when dataSourceRef.namespace\n                              is not specified. If the namespace is specified, then\n                              dataSourceRef will not be copied to dataSource.'\n                            properties:\n                              apiGroup:\n                                description: APIGroup is the group for the resource\n                                  being referenced. If APIGroup is not specified,\n                                  the specified Kind must be in the core API group.\n                                  For any other third-party types, APIGroup is required.\n                                type: string\n                              kind:\n                                description: Kind is the type of resource being referenced\n                                type: string\n                              name:\n                                description: Name is the name of resource being referenced\n                                type: string\n                            required:\n                            - kind\n                            - name\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          dataSourceRef:\n                            description: 'dataSourceRef specifies the object from\n                              which to populate the volume with data, if a non-empty\n                              volume is desired. This may be any object from a non-empty\n                              API group (non core object) or a PersistentVolumeClaim\n                              object. When this field is specified, volume binding\n                              will only succeed if the type of the specified object\n                              matches some installed volume populator or dynamic provisioner.\n                              This field will replace the functionality of the dataSource\n                              field and as such if both fields are non-empty, they\n                              must have the same value. For backwards compatibility,\n                              when namespace isn''t specified in dataSourceRef, both\n                              fields (dataSource and dataSourceRef) will be set to\n                              the same value automatically if one of them is empty\n                              and the other is non-empty. When namespace is specified\n                              in dataSourceRef, dataSource isn''t set to the same\n                              value and must be empty. There are three important differences\n                              between dataSource and dataSourceRef: * While dataSource\n                              only allows two specific types of objects, dataSourceRef\n                              allows any non-core object, as well as PersistentVolumeClaim\n                              objects. * While dataSource ignores disallowed values\n                              (dropping them), dataSourceRef preserves all values,\n                              and generates an error if a disallowed value is specified.\n                              * While dataSource only allows local objects, dataSourceRef\n                              allows objects in any namespaces. (Beta) Using this\n                              field requires the AnyVolumeDataSource feature gate\n                              to be enabled. (Alpha) Using the namespace field of\n                              dataSourceRef requires the CrossNamespaceVolumeDataSource\n                              feature gate to be enabled.'\n                            properties:\n                              apiGroup:\n                                description: APIGroup is the group for the resource\n                                  being referenced. If APIGroup is not specified,\n                                  the specified Kind must be in the core API group.\n                                  For any other third-party types, APIGroup is required.\n                                type: string\n                              kind:\n                                description: Kind is the type of resource being referenced\n                                type: string\n                              name:\n                                description: Name is the name of resource being referenced\n                                type: string\n                              namespace:\n                                description: Namespace is the namespace of resource\n                                  being referenced Note that when a namespace is specified,\n                                  a gateway.networking.k8s.io/ReferenceGrant object\n                                  is required in the referent namespace to allow that\n                                  namespace's owner to accept the reference. See the\n                                  ReferenceGrant documentation for details. (Alpha)\n                                  This field requires the CrossNamespaceVolumeDataSource\n                                  feature gate to be enabled.\n                                type: string\n                            required:\n                            - kind\n                            - name\n                            type: object\n                          resources:\n                            description: 'resources represents the minimum resources\n                              the volume should have. If RecoverVolumeExpansionFailure\n                              feature is enabled users are allowed to specify resource\n                              requirements that are lower than previous value but\n                              must still be higher than capacity recorded in the status\n                              field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'\n                            properties:\n                              claims:\n                                description: \"Claims lists the names of resources,\n                                  defined in spec.resourceClaims, that are used by\n                                  this container. \\n This is an alpha field and requires\n                                  enabling the DynamicResourceAllocation feature gate.\n                                  \\n This field is immutable. It can only be set for\n                                  containers.\"\n                                items:\n                                  description: ResourceClaim references one entry\n                                    in PodSpec.ResourceClaims.\n                                  properties:\n                                    name:\n                                      description: Name must match the name of one\n                                        entry in pod.spec.resourceClaims of the Pod\n                                        where this field is used. It makes that resource\n                                        available inside a container.\n                                      type: string\n                                  required:\n                                  - name\n                                  type: object\n                                type: array\n                                x-kubernetes-list-map-keys:\n                                - name\n                                x-kubernetes-list-type: map\n                              limits:\n                                additionalProperties:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                  x-kubernetes-int-or-string: true\n                                description: 'Limits describes the maximum amount\n                                  of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                type: object\n                              requests:\n                                additionalProperties:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                  x-kubernetes-int-or-string: true\n                                description: 'Requests describes the minimum amount\n                                  of compute resources required. If Requests is omitted\n                                  for a container, it defaults to Limits if that is\n                                  explicitly specified, otherwise to an implementation-defined\n                                  value. Requests cannot exceed Limits. More info:\n                                  https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                type: object\n                            type: object\n                          selector:\n                            description: selector is a label query over volumes to\n                              consider for binding.\n                            properties:\n                              matchExpressions:\n                                description: matchExpressions is a list of label selector\n                                  requirements. The requirements are ANDed.\n                                items:\n                                  description: A label selector requirement is a selector\n                                    that contains values, a key, and an operator that\n                                    relates the key and values.\n                                  properties:\n                                    key:\n                                      description: key is the label key that the selector\n                                        applies to.\n                                      type: string\n                                    operator:\n                                      description: operator represents a key's relationship\n                                        to a set of values. Valid operators are In,\n                                        NotIn, Exists and DoesNotExist.\n                                      type: string\n                                    values:\n                                      description: values is an array of string values.\n                                        If the operator is In or NotIn, the values\n                                        array must be non-empty. If the operator is\n                                        Exists or DoesNotExist, the values array must\n                                        be empty. This array is replaced during a\n                                        strategic merge patch.\n                                      items:\n                                        type: string\n                                      type: array\n                                  required:\n                                  - key\n                                  - operator\n                                  type: object\n                                type: array\n                              matchLabels:\n                                additionalProperties:\n                                  type: string\n                                description: matchLabels is a map of {key,value} pairs.\n                                  A single {key,value} in the matchLabels map is equivalent\n                                  to an element of matchExpressions, whose key field\n                                  is \"key\", the operator is \"In\", and the values array\n                                  contains only \"value\". The requirements are ANDed.\n                                type: object\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          storageClassName:\n                            description: 'storageClassName is the name of the StorageClass\n                              required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'\n                            type: string\n                          volumeMode:\n                            description: volumeMode defines what type of volume is\n                              required by the claim. Value of Filesystem is implied\n                              when not included in claim spec.\n                            type: string\n                          volumeName:\n                            description: volumeName is the binding reference to the\n                              PersistentVolume backing this claim.\n                            type: string\n                        type: object\n                      status:\n                        description: '*Deprecated: this field is never set.*'\n                        properties:\n                          accessModes:\n                            description: 'accessModes contains the actual access modes\n                              the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                            items:\n                              type: string\n                            type: array\n                          allocatedResources:\n                            additionalProperties:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                              x-kubernetes-int-or-string: true\n                            description: allocatedResources is the storage resource\n                              within AllocatedResources tracks the capacity allocated\n                              to a PVC. It may be larger than the actual capacity\n                              when a volume expansion operation is requested. For\n                              storage quota, the larger value from allocatedResources\n                              and PVC.spec.resources is used. If allocatedResources\n                              is not set, PVC.spec.resources alone is used for quota\n                              calculation. If a volume expansion capacity request\n                              is lowered, allocatedResources is only lowered if there\n                              are no expansion operations in progress and if the actual\n                              volume capacity is equal or lower than the requested\n                              capacity. This is an alpha field and requires enabling\n                              RecoverVolumeExpansionFailure feature.\n                            type: object\n                          capacity:\n                            additionalProperties:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                              x-kubernetes-int-or-string: true\n                            description: capacity represents the actual resources\n                              of the underlying volume.\n                            type: object\n                          conditions:\n                            description: conditions is the current Condition of persistent\n                              volume claim. If underlying persistent volume is being\n                              resized then the Condition will be set to 'ResizeStarted'.\n                            items:\n                              description: PersistentVolumeClaimCondition contains\n                                details about state of pvc\n                              properties:\n                                lastProbeTime:\n                                  description: lastProbeTime is the time we probed\n                                    the condition.\n                                  format: date-time\n                                  type: string\n                                lastTransitionTime:\n                                  description: lastTransitionTime is the time the\n                                    condition transitioned from one status to another.\n                                  format: date-time\n                                  type: string\n                                message:\n                                  description: message is the human-readable message\n                                    indicating details about last transition.\n                                  type: string\n                                reason:\n                                  description: reason is a unique, this should be\n                                    a short, machine understandable string that gives\n                                    the reason for condition's last transition. If\n                                    it reports \"ResizeStarted\" that means the underlying\n                                    persistent volume is being resized.\n                                  type: string\n                                status:\n                                  type: string\n                                type:\n                                  description: PersistentVolumeClaimConditionType\n                                    is a valid value of PersistentVolumeClaimCondition.Type\n                                  type: string\n                              required:\n                              - status\n                              - type\n                              type: object\n                            type: array\n                          phase:\n                            description: phase represents the current phase of PersistentVolumeClaim.\n                            type: string\n                          resizeStatus:\n                            description: resizeStatus stores status of resize operation.\n                              ResizeStatus is not set by default but when expansion\n                              is complete resizeStatus is set to empty string by resize\n                              controller or kubelet. This is an alpha field and requires\n                              enabling RecoverVolumeExpansionFailure feature.\n                            type: string\n                        type: object\n                    type: object\n                type: object\n              tag:\n                description: '*Deprecated: use ''spec.image'' instead. The image''s\n                  tag can be specified as part of the image name.*'\n                type: string\n              thanos:\n                description: \"Defines the configuration of the optional Thanos sidecar.\n                  \\n This section is experimental, it may change significantly without\n                  deprecation notice in any release.\"\n                properties:\n                  additionalArgs:\n                    description: AdditionalArgs allows setting additional arguments\n                      for the Thanos container. The arguments are passed as-is to\n                      the Thanos container which may cause issues if they are invalid\n                      or not supported the given Thanos version. In case of an argument\n                      conflict (e.g. an argument which is already set by the operator\n                      itself) or when providing an invalid argument, the reconciliation\n                      will fail and an error will be logged.\n                    items:\n                      description: Argument as part of the AdditionalArgs list.\n                      properties:\n                        name:\n                          description: Name of the argument, e.g. \"scrape.discovery-reload-interval\".\n                          minLength: 1\n                          type: string\n                        value:\n                          description: Argument value, e.g. 30s. Can be empty for\n                            name-only arguments (e.g. --storage.tsdb.no-lockfile)\n                          type: string\n                      required:\n                      - name\n                      type: object\n                    type: array\n                  baseImage:\n                    description: '*Deprecated: use ''image'' instead.*'\n                    type: string\n                  blockSize:\n                    default: 2h\n                    description: \"BlockDuration controls the size of TSDB blocks produced\n                      by Prometheus. The default value is 2h to match the upstream\n                      Prometheus defaults. \\n WARNING: Changing the block duration\n                      can impact the performance and efficiency of the entire Prometheus/Thanos\n                      stack due to how it interacts with memory and Thanos compactors.\n                      It is recommended to keep this value set to a multiple of 120\n                      times your longest scrape or rule interval. For example, 30s\n                      * 120 = 1h.\"\n                    pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                    type: string\n                  getConfigInterval:\n                    description: How often to retrieve the Prometheus configuration.\n                    pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                    type: string\n                  getConfigTimeout:\n                    description: Maximum time to wait when retrieving the Prometheus\n                      configuration.\n                    pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                    type: string\n                  grpcListenLocal:\n                    description: \"When true, the Thanos sidecar listens on the loopback\n                      interface instead of the Pod IP's address for the gRPC endpoints.\n                      \\n It has no effect if `listenLocal` is true.\"\n                    type: boolean\n                  grpcServerTlsConfig:\n                    description: \"Configures the TLS parameters for the gRPC server\n                      providing the StoreAPI. \\n Note: Currently only the `caFile`,\n                      `certFile`, and `keyFile` fields are supported.\"\n                    properties:\n                      ca:\n                        description: Certificate authority used when verifying server\n                          certificates.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the\n                              targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its\n                                  key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      caFile:\n                        description: Path to the CA cert in the Prometheus container\n                          to use for the targets.\n                        type: string\n                      cert:\n                        description: Client certificate to present when doing client-authentication.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the\n                              targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its\n                                  key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      certFile:\n                        description: Path to the client cert file in the Prometheus\n                          container for the targets.\n                        type: string\n                      insecureSkipVerify:\n                        description: Disable target certificate validation.\n                        type: boolean\n                      keyFile:\n                        description: Path to the client key file in the Prometheus\n                          container for the targets.\n                        type: string\n                      keySecret:\n                        description: Secret containing the client key file for the\n                          targets.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must\n                              be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must\n                              be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      serverName:\n                        description: Used to verify the hostname for the targets.\n                        type: string\n                    type: object\n                  httpListenLocal:\n                    description: \"When true, the Thanos sidecar listens on the loopback\n                      interface instead of the Pod IP's address for the HTTP endpoints.\n                      \\n It has no effect if `listenLocal` is true.\"\n                    type: boolean\n                  image:\n                    description: \"Container image name for Thanos. If specified, it\n                      takes precedence over the `spec.thanos.baseImage`, `spec.thanos.tag`\n                      and `spec.thanos.sha` fields. \\n Specifying `spec.thanos.version`\n                      is still necessary to ensure the Prometheus Operator knows which\n                      version of Thanos is being configured. \\n If neither `spec.thanos.image`\n                      nor `spec.thanos.baseImage` are defined, the operator will use\n                      the latest upstream version of Thanos available at the time\n                      when the operator was released.\"\n                    type: string\n                  listenLocal:\n                    description: '*Deprecated: use `grpcListenLocal` and `httpListenLocal`\n                      instead.*'\n                    type: boolean\n                  logFormat:\n                    description: Log format for the Thanos sidecar.\n                    enum:\n                    - \"\"\n                    - logfmt\n                    - json\n                    type: string\n                  logLevel:\n                    description: Log level for the Thanos sidecar.\n                    enum:\n                    - \"\"\n                    - debug\n                    - info\n                    - warn\n                    - error\n                    type: string\n                  minTime:\n                    description: Defines the start of time range limit served by the\n                      Thanos sidecar's StoreAPI. The field's value should be a constant\n                      time in RFC3339 format or a time duration relative to current\n                      time, such as -1d or 2h45m. Valid duration units are ms, s,\n                      m, h, d, w, y.\n                    type: string\n                  objectStorageConfig:\n                    description: \"Defines the Thanos sidecar's configuration to upload\n                      TSDB blocks to object storage. \\n More info: https://thanos.io/tip/thanos/storage.md/\n                      \\n objectStorageConfigFile takes precedence over this field.\"\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be\n                          a valid secret key.\n                        type: string\n                      name:\n                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                          TODO: Add other useful fields. apiVersion, kind, uid?'\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be\n                          defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                  objectStorageConfigFile:\n                    description: \"Defines the Thanos sidecar's configuration file\n                      to upload TSDB blocks to object storage. \\n More info: https://thanos.io/tip/thanos/storage.md/\n                      \\n This field takes precedence over objectStorageConfig.\"\n                    type: string\n                  readyTimeout:\n                    description: ReadyTimeout is the maximum time that the Thanos\n                      sidecar will wait for Prometheus to start.\n                    pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                    type: string\n                  resources:\n                    description: Defines the resources requests and limits of the\n                      Thanos sidecar.\n                    properties:\n                      claims:\n                        description: \"Claims lists the names of resources, defined\n                          in spec.resourceClaims, that are used by this container.\n                          \\n This is an alpha field and requires enabling the DynamicResourceAllocation\n                          feature gate. \\n This field is immutable. It can only be\n                          set for containers.\"\n                        items:\n                          description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                          properties:\n                            name:\n                              description: Name must match the name of one entry in\n                                pod.spec.resourceClaims of the Pod where this field\n                                is used. It makes that resource available inside a\n                                container.\n                              type: string\n                          required:\n                          - name\n                          type: object\n                        type: array\n                        x-kubernetes-list-map-keys:\n                        - name\n                        x-kubernetes-list-type: map\n                      limits:\n                        additionalProperties:\n                          anyOf:\n                          - type: integer\n                          - type: string\n                          pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                          x-kubernetes-int-or-string: true\n                        description: 'Limits describes the maximum amount of compute\n                          resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                        type: object\n                      requests:\n                        additionalProperties:\n                          anyOf:\n                          - type: integer\n                          - type: string\n                          pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                          x-kubernetes-int-or-string: true\n                        description: 'Requests describes the minimum amount of compute\n                          resources required. If Requests is omitted for a container,\n                          it defaults to Limits if that is explicitly specified, otherwise\n                          to an implementation-defined value. Requests cannot exceed\n                          Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                        type: object\n                    type: object\n                  sha:\n                    description: '*Deprecated: use ''image'' instead.  The image digest\n                      can be specified as part of the image name.*'\n                    type: string\n                  tag:\n                    description: '*Deprecated: use ''image'' instead. The image''s\n                      tag can be specified as part of the image name.*'\n                    type: string\n                  tracingConfig:\n                    description: \"Defines the tracing configuration for the Thanos\n                      sidecar. \\n More info: https://thanos.io/tip/thanos/tracing.md/\n                      \\n This is an experimental feature, it may change in any upcoming\n                      release in a breaking way. \\n tracingConfigFile takes precedence\n                      over this field.\"\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be\n                          a valid secret key.\n                        type: string\n                      name:\n                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                          TODO: Add other useful fields. apiVersion, kind, uid?'\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be\n                          defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                  tracingConfigFile:\n                    description: \"Defines the tracing configuration file for the Thanos\n                      sidecar. \\n More info: https://thanos.io/tip/thanos/tracing.md/\n                      \\n This is an experimental feature, it may change in any upcoming\n                      release in a breaking way. \\n This field takes precedence over\n                      tracingConfig.\"\n                    type: string\n                  version:\n                    description: \"Version of Thanos being deployed. The operator uses\n                      this information to generate the Prometheus StatefulSet + configuration\n                      files. \\n If not specified, the operator assumes the latest\n                      upstream release of Thanos available at the time when the version\n                      of the operator was released.\"\n                    type: string\n                  volumeMounts:\n                    description: VolumeMounts allows configuration of additional VolumeMounts\n                      for Thanos. VolumeMounts specified will be appended to other\n                      VolumeMounts in the 'thanos-sidecar' container.\n                    items:\n                      description: VolumeMount describes a mounting of a Volume within\n                        a container.\n                      properties:\n                        mountPath:\n                          description: Path within the container at which the volume\n                            should be mounted.  Must not contain ':'.\n                          type: string\n                        mountPropagation:\n                          description: mountPropagation determines how mounts are\n                            propagated from the host to container and the other way\n                            around. When not set, MountPropagationNone is used. This\n                            field is beta in 1.10.\n                          type: string\n                        name:\n                          description: This must match the Name of a Volume.\n                          type: string\n                        readOnly:\n                          description: Mounted read-only if true, read-write otherwise\n                            (false or unspecified). Defaults to false.\n                          type: boolean\n                        subPath:\n                          description: Path within the volume from which the container's\n                            volume should be mounted. Defaults to \"\" (volume's root).\n                          type: string\n                        subPathExpr:\n                          description: Expanded path within the volume from which\n                            the container's volume should be mounted. Behaves similarly\n                            to SubPath but environment variable references $(VAR_NAME)\n                            are expanded using the container's environment. Defaults\n                            to \"\" (volume's root). SubPathExpr and SubPath are mutually\n                            exclusive.\n                          type: string\n                      required:\n                      - mountPath\n                      - name\n                      type: object\n                    type: array\n                type: object\n              tolerations:\n                description: Defines the Pods' tolerations if specified.\n                items:\n                  description: The pod this Toleration is attached to tolerates any\n                    taint that matches the triple <key,value,effect> using the matching\n                    operator <operator>.\n                  properties:\n                    effect:\n                      description: Effect indicates the taint effect to match. Empty\n                        means match all taint effects. When specified, allowed values\n                        are NoSchedule, PreferNoSchedule and NoExecute.\n                      type: string\n                    key:\n                      description: Key is the taint key that the toleration applies\n                        to. Empty means match all taint keys. If the key is empty,\n                        operator must be Exists; this combination means to match all\n                        values and all keys.\n                      type: string\n                    operator:\n                      description: Operator represents a key's relationship to the\n                        value. Valid operators are Exists and Equal. Defaults to Equal.\n                        Exists is equivalent to wildcard for value, so that a pod\n                        can tolerate all taints of a particular category.\n                      type: string\n                    tolerationSeconds:\n                      description: TolerationSeconds represents the period of time\n                        the toleration (which must be of effect NoExecute, otherwise\n                        this field is ignored) tolerates the taint. By default, it\n                        is not set, which means tolerate the taint forever (do not\n                        evict). Zero and negative values will be treated as 0 (evict\n                        immediately) by the system.\n                      format: int64\n                      type: integer\n                    value:\n                      description: Value is the taint value the toleration matches\n                        to. If the operator is Exists, the value should be empty,\n                        otherwise just a regular string.\n                      type: string\n                  type: object\n                type: array\n              topologySpreadConstraints:\n                description: Defines the pod's topology spread constraints if specified.\n                items:\n                  description: TopologySpreadConstraint specifies how to spread matching\n                    pods among the given topology.\n                  properties:\n                    labelSelector:\n                      description: LabelSelector is used to find matching pods. Pods\n                        that match this label selector are counted to determine the\n                        number of pods in their corresponding topology domain.\n                      properties:\n                        matchExpressions:\n                          description: matchExpressions is a list of label selector\n                            requirements. The requirements are ANDed.\n                          items:\n                            description: A label selector requirement is a selector\n                              that contains values, a key, and an operator that relates\n                              the key and values.\n                            properties:\n                              key:\n                                description: key is the label key that the selector\n                                  applies to.\n                                type: string\n                              operator:\n                                description: operator represents a key's relationship\n                                  to a set of values. Valid operators are In, NotIn,\n                                  Exists and DoesNotExist.\n                                type: string\n                              values:\n                                description: values is an array of string values.\n                                  If the operator is In or NotIn, the values array\n                                  must be non-empty. If the operator is Exists or\n                                  DoesNotExist, the values array must be empty. This\n                                  array is replaced during a strategic merge patch.\n                                items:\n                                  type: string\n                                type: array\n                            required:\n                            - key\n                            - operator\n                            type: object\n                          type: array\n                        matchLabels:\n                          additionalProperties:\n                            type: string\n                          description: matchLabels is a map of {key,value} pairs.\n                            A single {key,value} in the matchLabels map is equivalent\n                            to an element of matchExpressions, whose key field is\n                            \"key\", the operator is \"In\", and the values array contains\n                            only \"value\". The requirements are ANDed.\n                          type: object\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    matchLabelKeys:\n                      description: \"MatchLabelKeys is a set of pod label keys to select\n                        the pods over which spreading will be calculated. The keys\n                        are used to lookup values from the incoming pod labels, those\n                        key-value labels are ANDed with labelSelector to select the\n                        group of existing pods over which spreading will be calculated\n                        for the incoming pod. The same key is forbidden to exist in\n                        both MatchLabelKeys and LabelSelector. MatchLabelKeys cannot\n                        be set when LabelSelector isn't set. Keys that don't exist\n                        in the incoming pod labels will be ignored. A null or empty\n                        list means only match against labelSelector. \\n This is a\n                        beta field and requires the MatchLabelKeysInPodTopologySpread\n                        feature gate to be enabled (enabled by default).\"\n                      items:\n                        type: string\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    maxSkew:\n                      description: 'MaxSkew describes the degree to which pods may\n                        be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`,\n                        it is the maximum permitted difference between the number\n                        of matching pods in the target topology and the global minimum.\n                        The global minimum is the minimum number of matching pods\n                        in an eligible domain or zero if the number of eligible domains\n                        is less than MinDomains. For example, in a 3-zone cluster,\n                        MaxSkew is set to 1, and pods with the same labelSelector\n                        spread as 2/2/1: In this case, the global minimum is 1. |\n                        zone1 | zone2 | zone3 | |  P P  |  P P  |   P   | - if MaxSkew\n                        is 1, incoming pod can only be scheduled to zone3 to become\n                        2/2/2; scheduling it onto zone1(zone2) would make the ActualSkew(3-1)\n                        on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming\n                        pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`,\n                        it is used to give higher precedence to topologies that satisfy\n                        it. It''s a required field. Default value is 1 and 0 is not\n                        allowed.'\n                      format: int32\n                      type: integer\n                    minDomains:\n                      description: \"MinDomains indicates a minimum number of eligible\n                        domains. When the number of eligible domains with matching\n                        topology keys is less than minDomains, Pod Topology Spread\n                        treats \\\"global minimum\\\" as 0, and then the calculation of\n                        Skew is performed. And when the number of eligible domains\n                        with matching topology keys equals or greater than minDomains,\n                        this value has no effect on scheduling. As a result, when\n                        the number of eligible domains is less than minDomains, scheduler\n                        won't schedule more than maxSkew Pods to those domains. If\n                        value is nil, the constraint behaves as if MinDomains is equal\n                        to 1. Valid values are integers greater than 0. When value\n                        is not nil, WhenUnsatisfiable must be DoNotSchedule. \\n For\n                        example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains\n                        is set to 5 and pods with the same labelSelector spread as\n                        2/2/2: | zone1 | zone2 | zone3 | |  P P  |  P P  |  P P  |\n                        The number of domains is less than 5(MinDomains), so \\\"global\n                        minimum\\\" is treated as 0. In this situation, new pod with\n                        the same labelSelector cannot be scheduled, because computed\n                        skew will be 3(3 - 0) if new Pod is scheduled to any of the\n                        three zones, it will violate MaxSkew. \\n This is a beta field\n                        and requires the MinDomainsInPodTopologySpread feature gate\n                        to be enabled (enabled by default).\"\n                      format: int32\n                      type: integer\n                    nodeAffinityPolicy:\n                      description: \"NodeAffinityPolicy indicates how we will treat\n                        Pod's nodeAffinity/nodeSelector when calculating pod topology\n                        spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector\n                        are included in the calculations. - Ignore: nodeAffinity/nodeSelector\n                        are ignored. All nodes are included in the calculations. \\n\n                        If this value is nil, the behavior is equivalent to the Honor\n                        policy. This is a beta-level feature default enabled by the\n                        NodeInclusionPolicyInPodTopologySpread feature flag.\"\n                      type: string\n                    nodeTaintsPolicy:\n                      description: \"NodeTaintsPolicy indicates how we will treat node\n                        taints when calculating pod topology spread skew. Options\n                        are: - Honor: nodes without taints, along with tainted nodes\n                        for which the incoming pod has a toleration, are included.\n                        - Ignore: node taints are ignored. All nodes are included.\n                        \\n If this value is nil, the behavior is equivalent to the\n                        Ignore policy. This is a beta-level feature default enabled\n                        by the NodeInclusionPolicyInPodTopologySpread feature flag.\"\n                      type: string\n                    topologyKey:\n                      description: TopologyKey is the key of node labels. Nodes that\n                        have a label with this key and identical values are considered\n                        to be in the same topology. We consider each <key, value>\n                        as a \"bucket\", and try to put balanced number of pods into\n                        each bucket. We define a domain as a particular instance of\n                        a topology. Also, we define an eligible domain as a domain\n                        whose nodes meet the requirements of nodeAffinityPolicy and\n                        nodeTaintsPolicy. e.g. If TopologyKey is \"kubernetes.io/hostname\",\n                        each Node is a domain of that topology. And, if TopologyKey\n                        is \"topology.kubernetes.io/zone\", each zone is a domain of\n                        that topology. It's a required field.\n                      type: string\n                    whenUnsatisfiable:\n                      description: 'WhenUnsatisfiable indicates how to deal with a\n                        pod if it doesn''t satisfy the spread constraint. - DoNotSchedule\n                        (default) tells the scheduler not to schedule it. - ScheduleAnyway\n                        tells the scheduler to schedule the pod in any location, but\n                        giving higher precedence to topologies that would help reduce\n                        the skew. A constraint is considered \"Unsatisfiable\" for an\n                        incoming pod if and only if every possible node assignment\n                        for that pod would violate \"MaxSkew\" on some topology. For\n                        example, in a 3-zone cluster, MaxSkew is set to 1, and pods\n                        with the same labelSelector spread as 3/1/1: | zone1 | zone2\n                        | zone3 | | P P P |   P   |   P   | If WhenUnsatisfiable is\n                        set to DoNotSchedule, incoming pod can only be scheduled to\n                        zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on\n                        zone2(zone3) satisfies MaxSkew(1). In other words, the cluster\n                        can still be imbalanced, but scheduler won''t make it *more*\n                        imbalanced. It''s a required field.'\n                      type: string\n                  required:\n                  - maxSkew\n                  - topologyKey\n                  - whenUnsatisfiable\n                  type: object\n                type: array\n              tracingConfig:\n                description: 'EXPERIMENTAL: TracingConfig configures tracing in Prometheus.\n                  This is an experimental feature, it may change in any upcoming release\n                  in a breaking way.'\n                properties:\n                  clientType:\n                    description: Client used to export the traces. Supported values\n                      are `http` or `grpc`.\n                    enum:\n                    - http\n                    - grpc\n                    type: string\n                  compression:\n                    description: Compression key for supported compression types.\n                      The only supported value is `gzip`.\n                    enum:\n                    - gzip\n                    type: string\n                  endpoint:\n                    description: Endpoint to send the traces to. Should be provided\n                      in format <host>:<port>.\n                    minLength: 1\n                    type: string\n                  headers:\n                    additionalProperties:\n                      type: string\n                    description: Key-value pairs to be used as headers associated\n                      with gRPC or HTTP requests.\n                    type: object\n                  insecure:\n                    description: If disabled, the client will use a secure connection.\n                    type: boolean\n                  samplingFraction:\n                    anyOf:\n                    - type: integer\n                    - type: string\n                    description: Sets the probability a given trace will be sampled.\n                      Must be a float from 0 through 1.\n                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                    x-kubernetes-int-or-string: true\n                  timeout:\n                    description: Maximum time the exporter will wait for each batch\n                      export.\n                    pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                    type: string\n                  tlsConfig:\n                    description: TLS Config to use when sending traces.\n                    properties:\n                      ca:\n                        description: Certificate authority used when verifying server\n                          certificates.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the\n                              targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its\n                                  key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      caFile:\n                        description: Path to the CA cert in the Prometheus container\n                          to use for the targets.\n                        type: string\n                      cert:\n                        description: Client certificate to present when doing client-authentication.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the\n                              targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its\n                                  key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      certFile:\n                        description: Path to the client cert file in the Prometheus\n                          container for the targets.\n                        type: string\n                      insecureSkipVerify:\n                        description: Disable target certificate validation.\n                        type: boolean\n                      keyFile:\n                        description: Path to the client key file in the Prometheus\n                          container for the targets.\n                        type: string\n                      keySecret:\n                        description: Secret containing the client key file for the\n                          targets.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must\n                              be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must\n                              be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      serverName:\n                        description: Used to verify the hostname for the targets.\n                        type: string\n                    type: object\n                required:\n                - endpoint\n                type: object\n              tsdb:\n                description: Defines the runtime reloadable configuration of the timeseries\n                  database (TSDB).\n                properties:\n                  outOfOrderTimeWindow:\n                    description: \"Configures how old an out-of-order/out-of-bounds\n                      sample can be with respect to the TSDB max time. \\n An out-of-order/out-of-bounds\n                      sample is ingested into the TSDB as long as the timestamp of\n                      the sample is >= (TSDB.MaxTime - outOfOrderTimeWindow). \\n Out\n                      of order ingestion is an experimental feature. \\n It requires\n                      Prometheus >= v2.39.0.\"\n                    pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                    type: string\n                type: object\n              version:\n                description: \"Version of Prometheus being deployed. The operator uses\n                  this information to generate the Prometheus StatefulSet + configuration\n                  files. \\n If not specified, the operator assumes the latest upstream\n                  version of Prometheus available at the time when the version of\n                  the operator was released.\"\n                type: string\n              volumeMounts:\n                description: \"VolumeMounts allows the configuration of additional\n                  VolumeMounts. \\n VolumeMounts will be appended to other VolumeMounts\n                  in the 'prometheus' container, that are generated as a result of\n                  StorageSpec objects.\"\n                items:\n                  description: VolumeMount describes a mounting of a Volume within\n                    a container.\n                  properties:\n                    mountPath:\n                      description: Path within the container at which the volume should\n                        be mounted.  Must not contain ':'.\n                      type: string\n                    mountPropagation:\n                      description: mountPropagation determines how mounts are propagated\n                        from the host to container and the other way around. When\n                        not set, MountPropagationNone is used. This field is beta\n                        in 1.10.\n                      type: string\n                    name:\n                      description: This must match the Name of a Volume.\n                      type: string\n                    readOnly:\n                      description: Mounted read-only if true, read-write otherwise\n                        (false or unspecified). Defaults to false.\n                      type: boolean\n                    subPath:\n                      description: Path within the volume from which the container's\n                        volume should be mounted. Defaults to \"\" (volume's root).\n                      type: string\n                    subPathExpr:\n                      description: Expanded path within the volume from which the\n                        container's volume should be mounted. Behaves similarly to\n                        SubPath but environment variable references $(VAR_NAME) are\n                        expanded using the container's environment. Defaults to \"\"\n                        (volume's root). SubPathExpr and SubPath are mutually exclusive.\n                      type: string\n                  required:\n                  - mountPath\n                  - name\n                  type: object\n                type: array\n              volumes:\n                description: Volumes allows the configuration of additional volumes\n                  on the output StatefulSet definition. Volumes specified will be\n                  appended to other volumes that are generated as a result of StorageSpec\n                  objects.\n                items:\n                  description: Volume represents a named volume in a pod that may\n                    be accessed by any container in the pod.\n                  properties:\n                    awsElasticBlockStore:\n                      description: 'awsElasticBlockStore represents an AWS Disk resource\n                        that is attached to a kubelet''s host machine and then exposed\n                        to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type of the volume\n                            that you want to mount. Tip: Ensure that the filesystem\n                            type is supported by the host operating system. Examples:\n                            \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\n                            TODO: how do we prevent errors in the filesystem from\n                            compromising the machine'\n                          type: string\n                        partition:\n                          description: 'partition is the partition in the volume that\n                            you want to mount. If omitted, the default is to mount\n                            by volume name. Examples: For volume /dev/sda1, you specify\n                            the partition as \"1\". Similarly, the volume partition\n                            for /dev/sda is \"0\" (or you can leave the property empty).'\n                          format: int32\n                          type: integer\n                        readOnly:\n                          description: 'readOnly value true will force the readOnly\n                            setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'\n                          type: boolean\n                        volumeID:\n                          description: 'volumeID is unique ID of the persistent disk\n                            resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    azureDisk:\n                      description: azureDisk represents an Azure Data Disk mount on\n                        the host and bind mount to the pod.\n                      properties:\n                        cachingMode:\n                          description: 'cachingMode is the Host Caching mode: None,\n                            Read Only, Read Write.'\n                          type: string\n                        diskName:\n                          description: diskName is the Name of the data disk in the\n                            blob storage\n                          type: string\n                        diskURI:\n                          description: diskURI is the URI of data disk in the blob\n                            storage\n                          type: string\n                        fsType:\n                          description: fsType is Filesystem type to mount. Must be\n                            a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified.\n                          type: string\n                        kind:\n                          description: 'kind expected values are Shared: multiple\n                            blob disks per storage account  Dedicated: single blob\n                            disk per storage account  Managed: azure managed data\n                            disk (only in managed availability set). defaults to shared'\n                          type: string\n                        readOnly:\n                          description: readOnly Defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                      required:\n                      - diskName\n                      - diskURI\n                      type: object\n                    azureFile:\n                      description: azureFile represents an Azure File Service mount\n                        on the host and bind mount to the pod.\n                      properties:\n                        readOnly:\n                          description: readOnly defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretName:\n                          description: secretName is the  name of secret that contains\n                            Azure Storage Account Name and Key\n                          type: string\n                        shareName:\n                          description: shareName is the azure share Name\n                          type: string\n                      required:\n                      - secretName\n                      - shareName\n                      type: object\n                    cephfs:\n                      description: cephFS represents a Ceph FS mount on the host that\n                        shares a pod's lifetime\n                      properties:\n                        monitors:\n                          description: 'monitors is Required: Monitors is a collection\n                            of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          items:\n                            type: string\n                          type: array\n                        path:\n                          description: 'path is Optional: Used as the mounted root,\n                            rather than the full Ceph tree, default is /'\n                          type: string\n                        readOnly:\n                          description: 'readOnly is Optional: Defaults to false (read/write).\n                            ReadOnly here will force the ReadOnly setting in VolumeMounts.\n                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          type: boolean\n                        secretFile:\n                          description: 'secretFile is Optional: SecretFile is the\n                            path to key ring for User, default is /etc/ceph/user.secret\n                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          type: string\n                        secretRef:\n                          description: 'secretRef is Optional: SecretRef is reference\n                            to the authentication secret for User, default is empty.\n                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        user:\n                          description: 'user is optional: User is the rados user name,\n                            default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          type: string\n                      required:\n                      - monitors\n                      type: object\n                    cinder:\n                      description: 'cinder represents a cinder volume attached and\n                        mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to\n                            be \"ext4\" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                          type: string\n                        readOnly:\n                          description: 'readOnly defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                            More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                          type: boolean\n                        secretRef:\n                          description: 'secretRef is optional: points to a secret\n                            object containing parameters used to connect to OpenStack.'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        volumeID:\n                          description: 'volumeID used to identify the volume in cinder.\n                            More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    configMap:\n                      description: configMap represents a configMap that should populate\n                        this volume\n                      properties:\n                        defaultMode:\n                          description: 'defaultMode is optional: mode bits used to\n                            set permissions on created files by default. Must be an\n                            octal value between 0000 and 0777 or a decimal value between\n                            0 and 511. YAML accepts both octal and decimal values,\n                            JSON requires decimal values for mode bits. Defaults to\n                            0644. Directories within the path are not affected by\n                            this setting. This might be in conflict with other options\n                            that affect the file mode, like fsGroup, and the result\n                            can be other mode bits set.'\n                          format: int32\n                          type: integer\n                        items:\n                          description: items if unspecified, each key-value pair in\n                            the Data field of the referenced ConfigMap will be projected\n                            into the volume as a file whose name is the key and content\n                            is the value. If specified, the listed keys will be projected\n                            into the specified paths, and unlisted keys will not be\n                            present. If a key is specified which is not present in\n                            the ConfigMap, the volume setup will error unless it is\n                            marked optional. Paths must be relative and may not contain\n                            the '..' path or start with '..'.\n                          items:\n                            description: Maps a string key to a path within a volume.\n                            properties:\n                              key:\n                                description: key is the key to project.\n                                type: string\n                              mode:\n                                description: 'mode is Optional: mode bits used to\n                                  set permissions on this file. Must be an octal value\n                                  between 0000 and 0777 or a decimal value between\n                                  0 and 511. YAML accepts both octal and decimal values,\n                                  JSON requires decimal values for mode bits. If not\n                                  specified, the volume defaultMode will be used.\n                                  This might be in conflict with other options that\n                                  affect the file mode, like fsGroup, and the result\n                                  can be other mode bits set.'\n                                format: int32\n                                type: integer\n                              path:\n                                description: path is the relative path of the file\n                                  to map the key to. May not be an absolute path.\n                                  May not contain the path element '..'. May not start\n                                  with the string '..'.\n                                type: string\n                            required:\n                            - key\n                            - path\n                            type: object\n                          type: array\n                        name:\n                          description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            TODO: Add other useful fields. apiVersion, kind, uid?'\n                          type: string\n                        optional:\n                          description: optional specify whether the ConfigMap or its\n                            keys must be defined\n                          type: boolean\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    csi:\n                      description: csi (Container Storage Interface) represents ephemeral\n                        storage that is handled by certain external CSI drivers (Beta\n                        feature).\n                      properties:\n                        driver:\n                          description: driver is the name of the CSI driver that handles\n                            this volume. Consult with your admin for the correct name\n                            as registered in the cluster.\n                          type: string\n                        fsType:\n                          description: fsType to mount. Ex. \"ext4\", \"xfs\", \"ntfs\".\n                            If not provided, the empty value is passed to the associated\n                            CSI driver which will determine the default filesystem\n                            to apply.\n                          type: string\n                        nodePublishSecretRef:\n                          description: nodePublishSecretRef is a reference to the\n                            secret object containing sensitive information to pass\n                            to the CSI driver to complete the CSI NodePublishVolume\n                            and NodeUnpublishVolume calls. This field is optional,\n                            and  may be empty if no secret is required. If the secret\n                            object contains more than one secret, all secret references\n                            are passed.\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        readOnly:\n                          description: readOnly specifies a read-only configuration\n                            for the volume. Defaults to false (read/write).\n                          type: boolean\n                        volumeAttributes:\n                          additionalProperties:\n                            type: string\n                          description: volumeAttributes stores driver-specific properties\n                            that are passed to the CSI driver. Consult your driver's\n                            documentation for supported values.\n                          type: object\n                      required:\n                      - driver\n                      type: object\n                    downwardAPI:\n                      description: downwardAPI represents downward API about the pod\n                        that should populate this volume\n                      properties:\n                        defaultMode:\n                          description: 'Optional: mode bits to use on created files\n                            by default. Must be a Optional: mode bits used to set\n                            permissions on created files by default. Must be an octal\n                            value between 0000 and 0777 or a decimal value between\n                            0 and 511. YAML accepts both octal and decimal values,\n                            JSON requires decimal values for mode bits. Defaults to\n                            0644. Directories within the path are not affected by\n                            this setting. This might be in conflict with other options\n                            that affect the file mode, like fsGroup, and the result\n                            can be other mode bits set.'\n                          format: int32\n                          type: integer\n                        items:\n                          description: Items is a list of downward API volume file\n                          items:\n                            description: DownwardAPIVolumeFile represents information\n                              to create the file containing the pod field\n                            properties:\n                              fieldRef:\n                                description: 'Required: Selects a field of the pod:\n                                  only annotations, labels, name and namespace are\n                                  supported.'\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath\n                                      is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the\n                                      specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              mode:\n                                description: 'Optional: mode bits used to set permissions\n                                  on this file, must be an octal value between 0000\n                                  and 0777 or a decimal value between 0 and 511. YAML\n                                  accepts both octal and decimal values, JSON requires\n                                  decimal values for mode bits. If not specified,\n                                  the volume defaultMode will be used. This might\n                                  be in conflict with other options that affect the\n                                  file mode, like fsGroup, and the result can be other\n                                  mode bits set.'\n                                format: int32\n                                type: integer\n                              path:\n                                description: 'Required: Path is  the relative path\n                                  name of the file to be created. Must not be absolute\n                                  or contain the ''..'' path. Must be utf-8 encoded.\n                                  The first item of the relative path must not start\n                                  with ''..'''\n                                type: string\n                              resourceFieldRef:\n                                description: 'Selects a resource of the container:\n                                  only resources limits and requests (limits.cpu,\n                                  limits.memory, requests.cpu and requests.memory)\n                                  are currently supported.'\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes,\n                                      optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the\n                                      exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            required:\n                            - path\n                            type: object\n                          type: array\n                      type: object\n                    emptyDir:\n                      description: 'emptyDir represents a temporary directory that\n                        shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                      properties:\n                        medium:\n                          description: 'medium represents what type of storage medium\n                            should back this directory. The default is \"\" which means\n                            to use the node''s default medium. Must be an empty string\n                            (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                          type: string\n                        sizeLimit:\n                          anyOf:\n                          - type: integer\n                          - type: string\n                          description: 'sizeLimit is the total amount of local storage\n                            required for this EmptyDir volume. The size limit is also\n                            applicable for memory medium. The maximum usage on memory\n                            medium EmptyDir would be the minimum value between the\n                            SizeLimit specified here and the sum of memory limits\n                            of all containers in a pod. The default is nil which means\n                            that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                          pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                          x-kubernetes-int-or-string: true\n                      type: object\n                    ephemeral:\n                      description: \"ephemeral represents a volume that is handled\n                        by a cluster storage driver. The volume's lifecycle is tied\n                        to the pod that defines it - it will be created before the\n                        pod starts, and deleted when the pod is removed. \\n Use this\n                        if: a) the volume is only needed while the pod runs, b) features\n                        of normal volumes like restoring from snapshot or capacity\n                        tracking are needed, c) the storage driver is specified through\n                        a storage class, and d) the storage driver supports dynamic\n                        volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource\n                        for more information on the connection between this volume\n                        type and PersistentVolumeClaim). \\n Use PersistentVolumeClaim\n                        or one of the vendor-specific APIs for volumes that persist\n                        for longer than the lifecycle of an individual pod. \\n Use\n                        CSI for light-weight local ephemeral volumes if the CSI driver\n                        is meant to be used that way - see the documentation of the\n                        driver for more information. \\n A pod can use both types of\n                        ephemeral volumes and persistent volumes at the same time.\"\n                      properties:\n                        volumeClaimTemplate:\n                          description: \"Will be used to create a stand-alone PVC to\n                            provision the volume. The pod in which this EphemeralVolumeSource\n                            is embedded will be the owner of the PVC, i.e. the PVC\n                            will be deleted together with the pod.  The name of the\n                            PVC will be `<pod name>-<volume name>` where `<volume\n                            name>` is the name from the `PodSpec.Volumes` array entry.\n                            Pod validation will reject the pod if the concatenated\n                            name is not valid for a PVC (for example, too long). \\n\n                            An existing PVC with that name that is not owned by the\n                            pod will *not* be used for the pod to avoid using an unrelated\n                            volume by mistake. Starting the pod is then blocked until\n                            the unrelated PVC is removed. If such a pre-created PVC\n                            is meant to be used by the pod, the PVC has to updated\n                            with an owner reference to the pod once the pod exists.\n                            Normally this should not be necessary, but it may be useful\n                            when manually reconstructing a broken cluster. \\n This\n                            field is read-only and no changes will be made by Kubernetes\n                            to the PVC after it has been created. \\n Required, must\n                            not be nil.\"\n                          properties:\n                            metadata:\n                              description: May contain labels and annotations that\n                                will be copied into the PVC when creating it. No other\n                                fields are allowed and will be rejected during validation.\n                              type: object\n                            spec:\n                              description: The specification for the PersistentVolumeClaim.\n                                The entire content is copied unchanged into the PVC\n                                that gets created from this template. The same fields\n                                as in a PersistentVolumeClaim are also valid here.\n                              properties:\n                                accessModes:\n                                  description: 'accessModes contains the desired access\n                                    modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                                  items:\n                                    type: string\n                                  type: array\n                                dataSource:\n                                  description: 'dataSource field can be used to specify\n                                    either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\n                                    * An existing PVC (PersistentVolumeClaim) If the\n                                    provisioner or an external controller can support\n                                    the specified data source, it will create a new\n                                    volume based on the contents of the specified\n                                    data source. When the AnyVolumeDataSource feature\n                                    gate is enabled, dataSource contents will be copied\n                                    to dataSourceRef, and dataSourceRef contents will\n                                    be copied to dataSource when dataSourceRef.namespace\n                                    is not specified. If the namespace is specified,\n                                    then dataSourceRef will not be copied to dataSource.'\n                                  properties:\n                                    apiGroup:\n                                      description: APIGroup is the group for the resource\n                                        being referenced. If APIGroup is not specified,\n                                        the specified Kind must be in the core API\n                                        group. For any other third-party types, APIGroup\n                                        is required.\n                                      type: string\n                                    kind:\n                                      description: Kind is the type of resource being\n                                        referenced\n                                      type: string\n                                    name:\n                                      description: Name is the name of resource being\n                                        referenced\n                                      type: string\n                                  required:\n                                  - kind\n                                  - name\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                dataSourceRef:\n                                  description: 'dataSourceRef specifies the object\n                                    from which to populate the volume with data, if\n                                    a non-empty volume is desired. This may be any\n                                    object from a non-empty API group (non core object)\n                                    or a PersistentVolumeClaim object. When this field\n                                    is specified, volume binding will only succeed\n                                    if the type of the specified object matches some\n                                    installed volume populator or dynamic provisioner.\n                                    This field will replace the functionality of the\n                                    dataSource field and as such if both fields are\n                                    non-empty, they must have the same value. For\n                                    backwards compatibility, when namespace isn''t\n                                    specified in dataSourceRef, both fields (dataSource\n                                    and dataSourceRef) will be set to the same value\n                                    automatically if one of them is empty and the\n                                    other is non-empty. When namespace is specified\n                                    in dataSourceRef, dataSource isn''t set to the\n                                    same value and must be empty. There are three\n                                    important differences between dataSource and dataSourceRef:\n                                    * While dataSource only allows two specific types\n                                    of objects, dataSourceRef allows any non-core\n                                    object, as well as PersistentVolumeClaim objects.\n                                    * While dataSource ignores disallowed values (dropping\n                                    them), dataSourceRef preserves all values, and\n                                    generates an error if a disallowed value is specified.\n                                    * While dataSource only allows local objects,\n                                    dataSourceRef allows objects in any namespaces.\n                                    (Beta) Using this field requires the AnyVolumeDataSource\n                                    feature gate to be enabled. (Alpha) Using the\n                                    namespace field of dataSourceRef requires the\n                                    CrossNamespaceVolumeDataSource feature gate to\n                                    be enabled.'\n                                  properties:\n                                    apiGroup:\n                                      description: APIGroup is the group for the resource\n                                        being referenced. If APIGroup is not specified,\n                                        the specified Kind must be in the core API\n                                        group. For any other third-party types, APIGroup\n                                        is required.\n                                      type: string\n                                    kind:\n                                      description: Kind is the type of resource being\n                                        referenced\n                                      type: string\n                                    name:\n                                      description: Name is the name of resource being\n                                        referenced\n                                      type: string\n                                    namespace:\n                                      description: Namespace is the namespace of resource\n                                        being referenced Note that when a namespace\n                                        is specified, a gateway.networking.k8s.io/ReferenceGrant\n                                        object is required in the referent namespace\n                                        to allow that namespace's owner to accept\n                                        the reference. See the ReferenceGrant documentation\n                                        for details. (Alpha) This field requires the\n                                        CrossNamespaceVolumeDataSource feature gate\n                                        to be enabled.\n                                      type: string\n                                  required:\n                                  - kind\n                                  - name\n                                  type: object\n                                resources:\n                                  description: 'resources represents the minimum resources\n                                    the volume should have. If RecoverVolumeExpansionFailure\n                                    feature is enabled users are allowed to specify\n                                    resource requirements that are lower than previous\n                                    value but must still be higher than capacity recorded\n                                    in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'\n                                  properties:\n                                    claims:\n                                      description: \"Claims lists the names of resources,\n                                        defined in spec.resourceClaims, that are used\n                                        by this container. \\n This is an alpha field\n                                        and requires enabling the DynamicResourceAllocation\n                                        feature gate. \\n This field is immutable.\n                                        It can only be set for containers.\"\n                                      items:\n                                        description: ResourceClaim references one\n                                          entry in PodSpec.ResourceClaims.\n                                        properties:\n                                          name:\n                                            description: Name must match the name\n                                              of one entry in pod.spec.resourceClaims\n                                              of the Pod where this field is used.\n                                              It makes that resource available inside\n                                              a container.\n                                            type: string\n                                        required:\n                                        - name\n                                        type: object\n                                      type: array\n                                      x-kubernetes-list-map-keys:\n                                      - name\n                                      x-kubernetes-list-type: map\n                                    limits:\n                                      additionalProperties:\n                                        anyOf:\n                                        - type: integer\n                                        - type: string\n                                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                        x-kubernetes-int-or-string: true\n                                      description: 'Limits describes the maximum amount\n                                        of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                      type: object\n                                    requests:\n                                      additionalProperties:\n                                        anyOf:\n                                        - type: integer\n                                        - type: string\n                                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                        x-kubernetes-int-or-string: true\n                                      description: 'Requests describes the minimum\n                                        amount of compute resources required. If Requests\n                                        is omitted for a container, it defaults to\n                                        Limits if that is explicitly specified, otherwise\n                                        to an implementation-defined value. Requests\n                                        cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                      type: object\n                                  type: object\n                                selector:\n                                  description: selector is a label query over volumes\n                                    to consider for binding.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label\n                                        selector requirements. The requirements are\n                                        ANDed.\n                                      items:\n                                        description: A label selector requirement\n                                          is a selector that contains values, a key,\n                                          and an operator that relates the key and\n                                          values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that\n                                              the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's\n                                              relationship to a set of values. Valid\n                                              operators are In, NotIn, Exists and\n                                              DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string\n                                              values. If the operator is In or NotIn,\n                                              the values array must be non-empty.\n                                              If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This\n                                              array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value}\n                                        pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions,\n                                        whose key field is \"key\", the operator is\n                                        \"In\", and the values array contains only \"value\".\n                                        The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                storageClassName:\n                                  description: 'storageClassName is the name of the\n                                    StorageClass required by the claim. More info:\n                                    https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'\n                                  type: string\n                                volumeMode:\n                                  description: volumeMode defines what type of volume\n                                    is required by the claim. Value of Filesystem\n                                    is implied when not included in claim spec.\n                                  type: string\n                                volumeName:\n                                  description: volumeName is the binding reference\n                                    to the PersistentVolume backing this claim.\n                                  type: string\n                              type: object\n                          required:\n                          - spec\n                          type: object\n                      type: object\n                    fc:\n                      description: fc represents a Fibre Channel resource that is\n                        attached to a kubelet's host machine and then exposed to the\n                        pod.\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified. TODO: how do we prevent errors in the\n                            filesystem from compromising the machine'\n                          type: string\n                        lun:\n                          description: 'lun is Optional: FC target lun number'\n                          format: int32\n                          type: integer\n                        readOnly:\n                          description: 'readOnly is Optional: Defaults to false (read/write).\n                            ReadOnly here will force the ReadOnly setting in VolumeMounts.'\n                          type: boolean\n                        targetWWNs:\n                          description: 'targetWWNs is Optional: FC target worldwide\n                            names (WWNs)'\n                          items:\n                            type: string\n                          type: array\n                        wwids:\n                          description: 'wwids Optional: FC volume world wide identifiers\n                            (wwids) Either wwids or combination of targetWWNs and\n                            lun must be set, but not both simultaneously.'\n                          items:\n                            type: string\n                          type: array\n                      type: object\n                    flexVolume:\n                      description: flexVolume represents a generic volume resource\n                        that is provisioned/attached using an exec based plugin.\n                      properties:\n                        driver:\n                          description: driver is the name of the driver to use for\n                            this volume.\n                          type: string\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". The default filesystem depends\n                            on FlexVolume script.\n                          type: string\n                        options:\n                          additionalProperties:\n                            type: string\n                          description: 'options is Optional: this field holds extra\n                            command options if any.'\n                          type: object\n                        readOnly:\n                          description: 'readOnly is Optional: defaults to false (read/write).\n                            ReadOnly here will force the ReadOnly setting in VolumeMounts.'\n                          type: boolean\n                        secretRef:\n                          description: 'secretRef is Optional: secretRef is reference\n                            to the secret object containing sensitive information\n                            to pass to the plugin scripts. This may be empty if no\n                            secret object is specified. If the secret object contains\n                            more than one secret, all secrets are passed to the plugin\n                            scripts.'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      required:\n                      - driver\n                      type: object\n                    flocker:\n                      description: flocker represents a Flocker volume attached to\n                        a kubelet's host machine. This depends on the Flocker control\n                        service being running\n                      properties:\n                        datasetName:\n                          description: datasetName is Name of the dataset stored as\n                            metadata -> name on the dataset for Flocker should be\n                            considered as deprecated\n                          type: string\n                        datasetUUID:\n                          description: datasetUUID is the UUID of the dataset. This\n                            is unique identifier of a Flocker dataset\n                          type: string\n                      type: object\n                    gcePersistentDisk:\n                      description: 'gcePersistentDisk represents a GCE Disk resource\n                        that is attached to a kubelet''s host machine and then exposed\n                        to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                      properties:\n                        fsType:\n                          description: 'fsType is filesystem type of the volume that\n                            you want to mount. Tip: Ensure that the filesystem type\n                            is supported by the host operating system. Examples: \"ext4\",\n                            \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\n                            TODO: how do we prevent errors in the filesystem from\n                            compromising the machine'\n                          type: string\n                        partition:\n                          description: 'partition is the partition in the volume that\n                            you want to mount. If omitted, the default is to mount\n                            by volume name. Examples: For volume /dev/sda1, you specify\n                            the partition as \"1\". Similarly, the volume partition\n                            for /dev/sda is \"0\" (or you can leave the property empty).\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                          format: int32\n                          type: integer\n                        pdName:\n                          description: 'pdName is unique name of the PD resource in\n                            GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the ReadOnly setting\n                            in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                          type: boolean\n                      required:\n                      - pdName\n                      type: object\n                    gitRepo:\n                      description: 'gitRepo represents a git repository at a particular\n                        revision. DEPRECATED: GitRepo is deprecated. To provision\n                        a container with a git repo, mount an EmptyDir into an InitContainer\n                        that clones the repo using git, then mount the EmptyDir into\n                        the Pod''s container.'\n                      properties:\n                        directory:\n                          description: directory is the target directory name. Must\n                            not contain or start with '..'.  If '.' is supplied, the\n                            volume directory will be the git repository.  Otherwise,\n                            if specified, the volume will contain the git repository\n                            in the subdirectory with the given name.\n                          type: string\n                        repository:\n                          description: repository is the URL\n                          type: string\n                        revision:\n                          description: revision is the commit hash for the specified\n                            revision.\n                          type: string\n                      required:\n                      - repository\n                      type: object\n                    glusterfs:\n                      description: 'glusterfs represents a Glusterfs mount on the\n                        host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md'\n                      properties:\n                        endpoints:\n                          description: 'endpoints is the endpoint name that details\n                            Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'\n                          type: string\n                        path:\n                          description: 'path is the Glusterfs volume path. More info:\n                            https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the Glusterfs volume\n                            to be mounted with read-only permissions. Defaults to\n                            false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'\n                          type: boolean\n                      required:\n                      - endpoints\n                      - path\n                      type: object\n                    hostPath:\n                      description: 'hostPath represents a pre-existing file or directory\n                        on the host machine that is directly exposed to the container.\n                        This is generally used for system agents or other privileged\n                        things that are allowed to see the host machine. Most containers\n                        will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\n                        --- TODO(jonesdl) We need to restrict who can use host directory\n                        mounts and who can/can not mount host directories as read/write.'\n                      properties:\n                        path:\n                          description: 'path of the directory on the host. If the\n                            path is a symlink, it will follow the link to the real\n                            path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'\n                          type: string\n                        type:\n                          description: 'type for HostPath Volume Defaults to \"\" More\n                            info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'\n                          type: string\n                      required:\n                      - path\n                      type: object\n                    iscsi:\n                      description: 'iscsi represents an ISCSI Disk resource that is\n                        attached to a kubelet''s host machine and then exposed to\n                        the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md'\n                      properties:\n                        chapAuthDiscovery:\n                          description: chapAuthDiscovery defines whether support iSCSI\n                            Discovery CHAP authentication\n                          type: boolean\n                        chapAuthSession:\n                          description: chapAuthSession defines whether support iSCSI\n                            Session CHAP authentication\n                          type: boolean\n                        fsType:\n                          description: 'fsType is the filesystem type of the volume\n                            that you want to mount. Tip: Ensure that the filesystem\n                            type is supported by the host operating system. Examples:\n                            \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\n                            TODO: how do we prevent errors in the filesystem from\n                            compromising the machine'\n                          type: string\n                        initiatorName:\n                          description: initiatorName is the custom iSCSI Initiator\n                            Name. If initiatorName is specified with iscsiInterface\n                            simultaneously, new iSCSI interface <target portal>:<volume\n                            name> will be created for the connection.\n                          type: string\n                        iqn:\n                          description: iqn is the target iSCSI Qualified Name.\n                          type: string\n                        iscsiInterface:\n                          description: iscsiInterface is the interface Name that uses\n                            an iSCSI transport. Defaults to 'default' (tcp).\n                          type: string\n                        lun:\n                          description: lun represents iSCSI Target Lun number.\n                          format: int32\n                          type: integer\n                        portals:\n                          description: portals is the iSCSI Target Portal List. The\n                            portal is either an IP or ip_addr:port if the port is\n                            other than default (typically TCP ports 860 and 3260).\n                          items:\n                            type: string\n                          type: array\n                        readOnly:\n                          description: readOnly here will force the ReadOnly setting\n                            in VolumeMounts. Defaults to false.\n                          type: boolean\n                        secretRef:\n                          description: secretRef is the CHAP Secret for iSCSI target\n                            and initiator authentication\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        targetPortal:\n                          description: targetPortal is iSCSI Target Portal. The Portal\n                            is either an IP or ip_addr:port if the port is other than\n                            default (typically TCP ports 860 and 3260).\n                          type: string\n                      required:\n                      - iqn\n                      - lun\n                      - targetPortal\n                      type: object\n                    name:\n                      description: 'name of the volume. Must be a DNS_LABEL and unique\n                        within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                      type: string\n                    nfs:\n                      description: 'nfs represents an NFS mount on the host that shares\n                        a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                      properties:\n                        path:\n                          description: 'path that is exported by the NFS server. More\n                            info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the NFS export to\n                            be mounted with read-only permissions. Defaults to false.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                          type: boolean\n                        server:\n                          description: 'server is the hostname or IP address of the\n                            NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                          type: string\n                      required:\n                      - path\n                      - server\n                      type: object\n                    persistentVolumeClaim:\n                      description: 'persistentVolumeClaimVolumeSource represents a\n                        reference to a PersistentVolumeClaim in the same namespace.\n                        More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'\n                      properties:\n                        claimName:\n                          description: 'claimName is the name of a PersistentVolumeClaim\n                            in the same namespace as the pod using this volume. More\n                            info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'\n                          type: string\n                        readOnly:\n                          description: readOnly Will force the ReadOnly setting in\n                            VolumeMounts. Default false.\n                          type: boolean\n                      required:\n                      - claimName\n                      type: object\n                    photonPersistentDisk:\n                      description: photonPersistentDisk represents a PhotonController\n                        persistent disk attached and mounted on kubelets host machine\n                      properties:\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified.\n                          type: string\n                        pdID:\n                          description: pdID is the ID that identifies Photon Controller\n                            persistent disk\n                          type: string\n                      required:\n                      - pdID\n                      type: object\n                    portworxVolume:\n                      description: portworxVolume represents a portworx volume attached\n                        and mounted on kubelets host machine\n                      properties:\n                        fsType:\n                          description: fSType represents the filesystem type to mount\n                            Must be a filesystem type supported by the host operating\n                            system. Ex. \"ext4\", \"xfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified.\n                          type: string\n                        readOnly:\n                          description: readOnly defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        volumeID:\n                          description: volumeID uniquely identifies a Portworx volume\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    projected:\n                      description: projected items for all in one resources secrets,\n                        configmaps, and downward API\n                      properties:\n                        defaultMode:\n                          description: defaultMode are the mode bits used to set permissions\n                            on created files by default. Must be an octal value between\n                            0000 and 0777 or a decimal value between 0 and 511. YAML\n                            accepts both octal and decimal values, JSON requires decimal\n                            values for mode bits. Directories within the path are\n                            not affected by this setting. This might be in conflict\n                            with other options that affect the file mode, like fsGroup,\n                            and the result can be other mode bits set.\n                          format: int32\n                          type: integer\n                        sources:\n                          description: sources is the list of volume projections\n                          items:\n                            description: Projection that may be projected along with\n                              other supported volume types\n                            properties:\n                              configMap:\n                                description: configMap information about the configMap\n                                  data to project\n                                properties:\n                                  items:\n                                    description: items if unspecified, each key-value\n                                      pair in the Data field of the referenced ConfigMap\n                                      will be projected into the volume as a file\n                                      whose name is the key and content is the value.\n                                      If specified, the listed keys will be projected\n                                      into the specified paths, and unlisted keys\n                                      will not be present. If a key is specified which\n                                      is not present in the ConfigMap, the volume\n                                      setup will error unless it is marked optional.\n                                      Paths must be relative and may not contain the\n                                      '..' path or start with '..'.\n                                    items:\n                                      description: Maps a string key to a path within\n                                        a volume.\n                                      properties:\n                                        key:\n                                          description: key is the key to project.\n                                          type: string\n                                        mode:\n                                          description: 'mode is Optional: mode bits\n                                            used to set permissions on this file.\n                                            Must be an octal value between 0000 and\n                                            0777 or a decimal value between 0 and\n                                            511. YAML accepts both octal and decimal\n                                            values, JSON requires decimal values for\n                                            mode bits. If not specified, the volume\n                                            defaultMode will be used. This might be\n                                            in conflict with other options that affect\n                                            the file mode, like fsGroup, and the result\n                                            can be other mode bits set.'\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: path is the relative path of\n                                            the file to map the key to. May not be\n                                            an absolute path. May not contain the\n                                            path element '..'. May not start with\n                                            the string '..'.\n                                          type: string\n                                      required:\n                                      - key\n                                      - path\n                                      type: object\n                                    type: array\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: optional specify whether the ConfigMap\n                                      or its keys must be defined\n                                    type: boolean\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              downwardAPI:\n                                description: downwardAPI information about the downwardAPI\n                                  data to project\n                                properties:\n                                  items:\n                                    description: Items is a list of DownwardAPIVolume\n                                      file\n                                    items:\n                                      description: DownwardAPIVolumeFile represents\n                                        information to create the file containing\n                                        the pod field\n                                      properties:\n                                        fieldRef:\n                                          description: 'Required: Selects a field\n                                            of the pod: only annotations, labels,\n                                            name and namespace are supported.'\n                                          properties:\n                                            apiVersion:\n                                              description: Version of the schema the\n                                                FieldPath is written in terms of,\n                                                defaults to \"v1\".\n                                              type: string\n                                            fieldPath:\n                                              description: Path of the field to select\n                                                in the specified API version.\n                                              type: string\n                                          required:\n                                          - fieldPath\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                        mode:\n                                          description: 'Optional: mode bits used to\n                                            set permissions on this file, must be\n                                            an octal value between 0000 and 0777 or\n                                            a decimal value between 0 and 511. YAML\n                                            accepts both octal and decimal values,\n                                            JSON requires decimal values for mode\n                                            bits. If not specified, the volume defaultMode\n                                            will be used. This might be in conflict\n                                            with other options that affect the file\n                                            mode, like fsGroup, and the result can\n                                            be other mode bits set.'\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: 'Required: Path is  the relative\n                                            path name of the file to be created. Must\n                                            not be absolute or contain the ''..''\n                                            path. Must be utf-8 encoded. The first\n                                            item of the relative path must not start\n                                            with ''..'''\n                                          type: string\n                                        resourceFieldRef:\n                                          description: 'Selects a resource of the\n                                            container: only resources limits and requests\n                                            (limits.cpu, limits.memory, requests.cpu\n                                            and requests.memory) are currently supported.'\n                                          properties:\n                                            containerName:\n                                              description: 'Container name: required\n                                                for volumes, optional for env vars'\n                                              type: string\n                                            divisor:\n                                              anyOf:\n                                              - type: integer\n                                              - type: string\n                                              description: Specifies the output format\n                                                of the exposed resources, defaults\n                                                to \"1\"\n                                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                              x-kubernetes-int-or-string: true\n                                            resource:\n                                              description: 'Required: resource to\n                                                select'\n                                              type: string\n                                          required:\n                                          - resource\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                      required:\n                                      - path\n                                      type: object\n                                    type: array\n                                type: object\n                              secret:\n                                description: secret information about the secret data\n                                  to project\n                                properties:\n                                  items:\n                                    description: items if unspecified, each key-value\n                                      pair in the Data field of the referenced Secret\n                                      will be projected into the volume as a file\n                                      whose name is the key and content is the value.\n                                      If specified, the listed keys will be projected\n                                      into the specified paths, and unlisted keys\n                                      will not be present. If a key is specified which\n                                      is not present in the Secret, the volume setup\n                                      will error unless it is marked optional. Paths\n                                      must be relative and may not contain the '..'\n                                      path or start with '..'.\n                                    items:\n                                      description: Maps a string key to a path within\n                                        a volume.\n                                      properties:\n                                        key:\n                                          description: key is the key to project.\n                                          type: string\n                                        mode:\n                                          description: 'mode is Optional: mode bits\n                                            used to set permissions on this file.\n                                            Must be an octal value between 0000 and\n                                            0777 or a decimal value between 0 and\n                                            511. YAML accepts both octal and decimal\n                                            values, JSON requires decimal values for\n                                            mode bits. If not specified, the volume\n                                            defaultMode will be used. This might be\n                                            in conflict with other options that affect\n                                            the file mode, like fsGroup, and the result\n                                            can be other mode bits set.'\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: path is the relative path of\n                                            the file to map the key to. May not be\n                                            an absolute path. May not contain the\n                                            path element '..'. May not start with\n                                            the string '..'.\n                                          type: string\n                                      required:\n                                      - key\n                                      - path\n                                      type: object\n                                    type: array\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: optional field specify whether the\n                                      Secret or its key must be defined\n                                    type: boolean\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              serviceAccountToken:\n                                description: serviceAccountToken is information about\n                                  the serviceAccountToken data to project\n                                properties:\n                                  audience:\n                                    description: audience is the intended audience\n                                      of the token. A recipient of a token must identify\n                                      itself with an identifier specified in the audience\n                                      of the token, and otherwise should reject the\n                                      token. The audience defaults to the identifier\n                                      of the apiserver.\n                                    type: string\n                                  expirationSeconds:\n                                    description: expirationSeconds is the requested\n                                      duration of validity of the service account\n                                      token. As the token approaches expiration, the\n                                      kubelet volume plugin will proactively rotate\n                                      the service account token. The kubelet will\n                                      start trying to rotate the token if the token\n                                      is older than 80 percent of its time to live\n                                      or if the token is older than 24 hours.Defaults\n                                      to 1 hour and must be at least 10 minutes.\n                                    format: int64\n                                    type: integer\n                                  path:\n                                    description: path is the path relative to the\n                                      mount point of the file to project the token\n                                      into.\n                                    type: string\n                                required:\n                                - path\n                                type: object\n                            type: object\n                          type: array\n                      type: object\n                    quobyte:\n                      description: quobyte represents a Quobyte mount on the host\n                        that shares a pod's lifetime\n                      properties:\n                        group:\n                          description: group to map volume access to Default is no\n                            group\n                          type: string\n                        readOnly:\n                          description: readOnly here will force the Quobyte volume\n                            to be mounted with read-only permissions. Defaults to\n                            false.\n                          type: boolean\n                        registry:\n                          description: registry represents a single or multiple Quobyte\n                            Registry services specified as a string as host:port pair\n                            (multiple entries are separated with commas) which acts\n                            as the central registry for volumes\n                          type: string\n                        tenant:\n                          description: tenant owning the given Quobyte volume in the\n                            Backend Used with dynamically provisioned Quobyte volumes,\n                            value is set by the plugin\n                          type: string\n                        user:\n                          description: user to map volume access to Defaults to serivceaccount\n                            user\n                          type: string\n                        volume:\n                          description: volume is a string that references an already\n                            created Quobyte volume by name.\n                          type: string\n                      required:\n                      - registry\n                      - volume\n                      type: object\n                    rbd:\n                      description: 'rbd represents a Rados Block Device mount on the\n                        host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md'\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type of the volume\n                            that you want to mount. Tip: Ensure that the filesystem\n                            type is supported by the host operating system. Examples:\n                            \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\n                            TODO: how do we prevent errors in the filesystem from\n                            compromising the machine'\n                          type: string\n                        image:\n                          description: 'image is the rados image name. More info:\n                            https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                        keyring:\n                          description: 'keyring is the path to key ring for RBDUser.\n                            Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                        monitors:\n                          description: 'monitors is a collection of Ceph monitors.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          items:\n                            type: string\n                          type: array\n                        pool:\n                          description: 'pool is the rados pool name. Default is rbd.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the ReadOnly setting\n                            in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: boolean\n                        secretRef:\n                          description: 'secretRef is name of the authentication secret\n                            for RBDUser. If provided overrides keyring. Default is\n                            nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        user:\n                          description: 'user is the rados user name. Default is admin.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                      required:\n                      - image\n                      - monitors\n                      type: object\n                    scaleIO:\n                      description: scaleIO represents a ScaleIO persistent volume\n                        attached and mounted on Kubernetes nodes.\n                      properties:\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Default is \"xfs\".\n                          type: string\n                        gateway:\n                          description: gateway is the host address of the ScaleIO\n                            API Gateway.\n                          type: string\n                        protectionDomain:\n                          description: protectionDomain is the name of the ScaleIO\n                            Protection Domain for the configured storage.\n                          type: string\n                        readOnly:\n                          description: readOnly Defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretRef:\n                          description: secretRef references to the secret for ScaleIO\n                            user and other sensitive information. If this is not provided,\n                            Login operation will fail.\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        sslEnabled:\n                          description: sslEnabled Flag enable/disable SSL communication\n                            with Gateway, default false\n                          type: boolean\n                        storageMode:\n                          description: storageMode indicates whether the storage for\n                            a volume should be ThickProvisioned or ThinProvisioned.\n                            Default is ThinProvisioned.\n                          type: string\n                        storagePool:\n                          description: storagePool is the ScaleIO Storage Pool associated\n                            with the protection domain.\n                          type: string\n                        system:\n                          description: system is the name of the storage system as\n                            configured in ScaleIO.\n                          type: string\n                        volumeName:\n                          description: volumeName is the name of a volume already\n                            created in the ScaleIO system that is associated with\n                            this volume source.\n                          type: string\n                      required:\n                      - gateway\n                      - secretRef\n                      - system\n                      type: object\n                    secret:\n                      description: 'secret represents a secret that should populate\n                        this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'\n                      properties:\n                        defaultMode:\n                          description: 'defaultMode is Optional: mode bits used to\n                            set permissions on created files by default. Must be an\n                            octal value between 0000 and 0777 or a decimal value between\n                            0 and 511. YAML accepts both octal and decimal values,\n                            JSON requires decimal values for mode bits. Defaults to\n                            0644. Directories within the path are not affected by\n                            this setting. This might be in conflict with other options\n                            that affect the file mode, like fsGroup, and the result\n                            can be other mode bits set.'\n                          format: int32\n                          type: integer\n                        items:\n                          description: items If unspecified, each key-value pair in\n                            the Data field of the referenced Secret will be projected\n                            into the volume as a file whose name is the key and content\n                            is the value. If specified, the listed keys will be projected\n                            into the specified paths, and unlisted keys will not be\n                            present. If a key is specified which is not present in\n                            the Secret, the volume setup will error unless it is marked\n                            optional. Paths must be relative and may not contain the\n                            '..' path or start with '..'.\n                          items:\n                            description: Maps a string key to a path within a volume.\n                            properties:\n                              key:\n                                description: key is the key to project.\n                                type: string\n                              mode:\n                                description: 'mode is Optional: mode bits used to\n                                  set permissions on this file. Must be an octal value\n                                  between 0000 and 0777 or a decimal value between\n                                  0 and 511. YAML accepts both octal and decimal values,\n                                  JSON requires decimal values for mode bits. If not\n                                  specified, the volume defaultMode will be used.\n                                  This might be in conflict with other options that\n                                  affect the file mode, like fsGroup, and the result\n                                  can be other mode bits set.'\n                                format: int32\n                                type: integer\n                              path:\n                                description: path is the relative path of the file\n                                  to map the key to. May not be an absolute path.\n                                  May not contain the path element '..'. May not start\n                                  with the string '..'.\n                                type: string\n                            required:\n                            - key\n                            - path\n                            type: object\n                          type: array\n                        optional:\n                          description: optional field specify whether the Secret or\n                            its keys must be defined\n                          type: boolean\n                        secretName:\n                          description: 'secretName is the name of the secret in the\n                            pod''s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'\n                          type: string\n                      type: object\n                    storageos:\n                      description: storageOS represents a StorageOS volume attached\n                        and mounted on Kubernetes nodes.\n                      properties:\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified.\n                          type: string\n                        readOnly:\n                          description: readOnly defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretRef:\n                          description: secretRef specifies the secret to use for obtaining\n                            the StorageOS API credentials.  If not specified, default\n                            values will be attempted.\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        volumeName:\n                          description: volumeName is the human-readable name of the\n                            StorageOS volume.  Volume names are only unique within\n                            a namespace.\n                          type: string\n                        volumeNamespace:\n                          description: volumeNamespace specifies the scope of the\n                            volume within StorageOS.  If no namespace is specified\n                            then the Pod's namespace will be used.  This allows the\n                            Kubernetes name scoping to be mirrored within StorageOS\n                            for tighter integration. Set VolumeName to any name to\n                            override the default behaviour. Set to \"default\" if you\n                            are not using namespaces within StorageOS. Namespaces\n                            that do not pre-exist within StorageOS will be created.\n                          type: string\n                      type: object\n                    vsphereVolume:\n                      description: vsphereVolume represents a vSphere volume attached\n                        and mounted on kubelets host machine\n                      properties:\n                        fsType:\n                          description: fsType is filesystem type to mount. Must be\n                            a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified.\n                          type: string\n                        storagePolicyID:\n                          description: storagePolicyID is the storage Policy Based\n                            Management (SPBM) profile ID associated with the StoragePolicyName.\n                          type: string\n                        storagePolicyName:\n                          description: storagePolicyName is the storage Policy Based\n                            Management (SPBM) profile name.\n                          type: string\n                        volumePath:\n                          description: volumePath is the path that identifies vSphere\n                            volume vmdk\n                          type: string\n                      required:\n                      - volumePath\n                      type: object\n                  required:\n                  - name\n                  type: object\n                type: array\n              walCompression:\n                description: \"Configures compression of the write-ahead log (WAL)\n                  using Snappy. \\n WAL compression is enabled by default for Prometheus\n                  >= 2.20.0 \\n Requires Prometheus v2.11.0 and above.\"\n                type: boolean\n              web:\n                description: Defines the configuration of the Prometheus web server.\n                properties:\n                  httpConfig:\n                    description: Defines HTTP parameters for web server.\n                    properties:\n                      headers:\n                        description: List of headers that can be added to HTTP responses.\n                        properties:\n                          contentSecurityPolicy:\n                            description: Set the Content-Security-Policy header to\n                              HTTP responses. Unset if blank.\n                            type: string\n                          strictTransportSecurity:\n                            description: Set the Strict-Transport-Security header\n                              to HTTP responses. Unset if blank. Please make sure\n                              that you use this with care as this header might force\n                              browsers to load Prometheus and the other applications\n                              hosted on the same domain and subdomains over HTTPS.\n                              https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security\n                            type: string\n                          xContentTypeOptions:\n                            description: Set the X-Content-Type-Options header to\n                              HTTP responses. Unset if blank. Accepted value is nosniff.\n                              https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options\n                            enum:\n                            - \"\"\n                            - NoSniff\n                            type: string\n                          xFrameOptions:\n                            description: Set the X-Frame-Options header to HTTP responses.\n                              Unset if blank. Accepted values are deny and sameorigin.\n                              https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options\n                            enum:\n                            - \"\"\n                            - Deny\n                            - SameOrigin\n                            type: string\n                          xXSSProtection:\n                            description: Set the X-XSS-Protection header to all responses.\n                              Unset if blank. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection\n                            type: string\n                        type: object\n                      http2:\n                        description: Enable HTTP/2 support. Note that HTTP/2 is only\n                          supported with TLS. When TLSConfig is not configured, HTTP/2\n                          will be disabled. Whenever the value of the field changes,\n                          a rolling update will be triggered.\n                        type: boolean\n                    type: object\n                  maxConnections:\n                    description: Defines the maximum number of simultaneous connections\n                      A zero value means that Prometheus doesn't accept any incoming\n                      connection.\n                    format: int32\n                    minimum: 0\n                    type: integer\n                  pageTitle:\n                    description: The prometheus web page title.\n                    type: string\n                  tlsConfig:\n                    description: Defines the TLS parameters for HTTPS.\n                    properties:\n                      cert:\n                        description: Contains the TLS certificate for the server.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the\n                              targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its\n                                  key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      cipherSuites:\n                        description: 'List of supported cipher suites for TLS versions\n                          up to TLS 1.2. If empty, Go default cipher suites are used.\n                          Available cipher suites are documented in the go documentation:\n                          https://golang.org/pkg/crypto/tls/#pkg-constants'\n                        items:\n                          type: string\n                        type: array\n                      client_ca:\n                        description: Contains the CA certificate for client certificate\n                          authentication to the server.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the\n                              targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its\n                                  key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must\n                                  be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key\n                                  must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      clientAuthType:\n                        description: 'Server policy for client authentication. Maps\n                          to ClientAuth Policies. For more detail on clientAuth options:\n                          https://golang.org/pkg/crypto/tls/#ClientAuthType'\n                        type: string\n                      curvePreferences:\n                        description: 'Elliptic curves that will be used in an ECDHE\n                          handshake, in preference order. Available curves are documented\n                          in the go documentation: https://golang.org/pkg/crypto/tls/#CurveID'\n                        items:\n                          type: string\n                        type: array\n                      keySecret:\n                        description: Secret containing the TLS key for the server.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must\n                              be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must\n                              be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      maxVersion:\n                        description: Maximum TLS version that is acceptable. Defaults\n                          to TLS13.\n                        type: string\n                      minVersion:\n                        description: Minimum TLS version that is acceptable. Defaults\n                          to TLS12.\n                        type: string\n                      preferServerCipherSuites:\n                        description: Controls whether the server selects the client's\n                          most preferred cipher suite, or the server's most preferred\n                          cipher suite. If true then the server's preference, as expressed\n                          in the order of elements in cipherSuites, is used.\n                        type: boolean\n                    required:\n                    - cert\n                    - keySecret\n                    type: object\n                type: object\n            type: object\n          status:\n            description: 'Most recent observed status of the Prometheus cluster. Read-only.\n              More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status'\n            properties:\n              availableReplicas:\n                description: Total number of available pods (ready for at least minReadySeconds)\n                  targeted by this Prometheus deployment.\n                format: int32\n                type: integer\n              conditions:\n                description: The current state of the Prometheus deployment.\n                items:\n                  description: Condition represents the state of the resources associated\n                    with the Prometheus, Alertmanager or ThanosRuler resource.\n                  properties:\n                    lastTransitionTime:\n                      description: lastTransitionTime is the time of the last update\n                        to the current status property.\n                      format: date-time\n                      type: string\n                    message:\n                      description: Human-readable message indicating details for the\n                        condition's last transition.\n                      type: string\n                    observedGeneration:\n                      description: ObservedGeneration represents the .metadata.generation\n                        that the condition was set based upon. For instance, if `.metadata.generation`\n                        is currently 12, but the `.status.conditions[].observedGeneration`\n                        is 9, the condition is out of date with respect to the current\n                        state of the instance.\n                      format: int64\n                      type: integer\n                    reason:\n                      description: Reason for the condition's last transition.\n                      type: string\n                    status:\n                      description: Status of the condition.\n                      type: string\n                    type:\n                      description: Type of the condition being reported.\n                      type: string\n                  required:\n                  - lastTransitionTime\n                  - status\n                  - type\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - type\n                x-kubernetes-list-type: map\n              paused:\n                description: Represents whether any actions on the underlying managed\n                  objects are being performed. Only delete actions will be performed.\n                type: boolean\n              replicas:\n                description: Total number of non-terminated pods targeted by this\n                  Prometheus deployment (their labels match the selector).\n                format: int32\n                type: integer\n              shardStatuses:\n                description: The list has one entry per shard. Each entry provides\n                  a summary of the shard status.\n                items:\n                  properties:\n                    availableReplicas:\n                      description: Total number of available pods (ready for at least\n                        minReadySeconds) targeted by this shard.\n                      format: int32\n                      type: integer\n                    replicas:\n                      description: Total number of pods targeted by this shard.\n                      format: int32\n                      type: integer\n                    shardID:\n                      description: Identifier of the shard.\n                      type: string\n                    unavailableReplicas:\n                      description: Total number of unavailable pods targeted by this\n                        shard.\n                      format: int32\n                      type: integer\n                    updatedReplicas:\n                      description: Total number of non-terminated pods targeted by\n                        this shard that have the desired spec.\n                      format: int32\n                      type: integer\n                  required:\n                  - availableReplicas\n                  - replicas\n                  - shardID\n                  - unavailableReplicas\n                  - updatedReplicas\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - shardID\n                x-kubernetes-list-type: map\n              unavailableReplicas:\n                description: Total number of unavailable pods targeted by this Prometheus\n                  deployment.\n                format: int32\n                type: integer\n              updatedReplicas:\n                description: Total number of non-terminated pods targeted by this\n                  Prometheus deployment that have the desired version spec.\n                format: int32\n                type: integer\n            required:\n            - availableReplicas\n            - paused\n            - replicas\n            - unavailableReplicas\n            - updatedReplicas\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n    subresources:\n      status: {}\n---\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.11.1\n  creationTimestamp: null\n  name: prometheusrules.monitoring.coreos.com\nspec:\n  group: monitoring.coreos.com\n  names:\n    categories:\n    - prometheus-operator\n    kind: PrometheusRule\n    listKind: PrometheusRuleList\n    plural: prometheusrules\n    shortNames:\n    - promrule\n    singular: prometheusrule\n  scope: Namespaced\n  versions:\n  - name: v1\n    schema:\n      openAPIV3Schema:\n        description: PrometheusRule defines recording and alerting rules for a Prometheus\n          instance\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: Specification of desired alerting rule definitions for Prometheus.\n            properties:\n              groups:\n                description: Content of Prometheus rule file\n                items:\n                  description: RuleGroup is a list of sequentially evaluated recording\n                    and alerting rules.\n                  properties:\n                    interval:\n                      description: Interval determines how often rules in the group\n                        are evaluated.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    limit:\n                      description: Limit the number of alerts an alerting rule and\n                        series a recording rule can produce. Limit is supported starting\n                        with Prometheus >= 2.31 and Thanos Ruler >= 0.24.\n                      type: integer\n                    name:\n                      description: Name of the rule group.\n                      minLength: 1\n                      type: string\n                    partial_response_strategy:\n                      description: 'PartialResponseStrategy is only used by ThanosRuler\n                        and will be ignored by Prometheus instances. More info: https://github.com/thanos-io/thanos/blob/main/docs/components/rule.md#partial-response'\n                      pattern: ^(?i)(abort|warn)?$\n                      type: string\n                    rules:\n                      description: List of alerting and recording rules.\n                      items:\n                        description: 'Rule describes an alerting or recording rule\n                          See Prometheus documentation: [alerting](https://www.prometheus.io/docs/prometheus/latest/configuration/alerting_rules/)\n                          or [recording](https://www.prometheus.io/docs/prometheus/latest/configuration/recording_rules/#recording-rules)\n                          rule'\n                        properties:\n                          alert:\n                            description: Name of the alert. Must be a valid label\n                              value. Only one of `record` and `alert` must be set.\n                            type: string\n                          annotations:\n                            additionalProperties:\n                              type: string\n                            description: Annotations to add to each alert. Only valid\n                              for alerting rules.\n                            type: object\n                          expr:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            description: PromQL expression to evaluate.\n                            x-kubernetes-int-or-string: true\n                          for:\n                            description: Alerts are considered firing once they have\n                              been returned for this long.\n                            pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                            type: string\n                          keep_firing_for:\n                            description: KeepFiringFor defines how long an alert will\n                              continue firing after the condition that triggered it\n                              has cleared.\n                            minLength: 1\n                            pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                            type: string\n                          labels:\n                            additionalProperties:\n                              type: string\n                            description: Labels to add or overwrite.\n                            type: object\n                          record:\n                            description: Name of the time series to output to. Must\n                              be a valid metric name. Only one of `record` and `alert`\n                              must be set.\n                            type: string\n                        required:\n                        - expr\n                        type: object\n                      type: array\n                  required:\n                  - name\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - name\n                x-kubernetes-list-type: map\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n---\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.11.1\n  creationTimestamp: null\n  name: scrapeconfigs.monitoring.coreos.com\nspec:\n  group: monitoring.coreos.com\n  names:\n    categories:\n    - prometheus-operator\n    kind: ScrapeConfig\n    listKind: ScrapeConfigList\n    plural: scrapeconfigs\n    shortNames:\n    - scfg\n    singular: scrapeconfig\n  scope: Namespaced\n  versions:\n  - name: v1alpha1\n    schema:\n      openAPIV3Schema:\n        description: ScrapeConfig defines a namespaced Prometheus scrape_config to\n          be aggregated across multiple namespaces into the Prometheus configuration.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: ScrapeConfigSpec is a specification of the desired configuration\n              for a scrape configuration.\n            properties:\n              authorization:\n                description: Authorization header to use on every scrape request.\n                properties:\n                  credentials:\n                    description: Selects a key of a Secret in the namespace that contains\n                      the credentials for authentication.\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be\n                          a valid secret key.\n                        type: string\n                      name:\n                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                          TODO: Add other useful fields. apiVersion, kind, uid?'\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be\n                          defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                  type:\n                    description: \"Defines the authentication type. The value is case-insensitive.\n                      \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\"\n                    type: string\n                type: object\n              basicAuth:\n                description: BasicAuth information to use on every scrape request.\n                properties:\n                  password:\n                    description: The secret in the service monitor namespace that\n                      contains the password for authentication.\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be\n                          a valid secret key.\n                        type: string\n                      name:\n                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                          TODO: Add other useful fields. apiVersion, kind, uid?'\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be\n                          defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                  username:\n                    description: The secret in the service monitor namespace that\n                      contains the username for authentication.\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be\n                          a valid secret key.\n                        type: string\n                      name:\n                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                          TODO: Add other useful fields. apiVersion, kind, uid?'\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be\n                          defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                type: object\n              fileSDConfigs:\n                description: FileSDConfigs defines a list of file service discovery\n                  configurations.\n                items:\n                  description: FileSDConfig defines a Prometheus file service discovery\n                    configuration See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#file_sd_config\n                  properties:\n                    files:\n                      description: 'List of files to be used for file discovery. Recommendation:\n                        use absolute paths. While relative paths work, the prometheus-operator\n                        project makes no guarantees about the working directory where\n                        the configuration file is stored. Files must be mounted using\n                        Prometheus.ConfigMaps or Prometheus.Secrets.'\n                      items:\n                        description: SDFile represents a file used for service discovery\n                        pattern: ^[^*]*(\\*[^/]*)?\\.(json|yml|yaml|JSON|YML|YAML)$\n                        type: string\n                      minItems: 1\n                      type: array\n                    refreshInterval:\n                      description: RefreshInterval configures the refresh interval\n                        at which Prometheus will reload the content of the files.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                  required:\n                  - files\n                  type: object\n                type: array\n              honorLabels:\n                description: HonorLabels chooses the metric's labels on collisions\n                  with target labels.\n                type: boolean\n              honorTimestamps:\n                description: HonorTimestamps controls whether Prometheus respects\n                  the timestamps present in scraped data.\n                type: boolean\n              httpSDConfigs:\n                description: HTTPSDConfigs defines a list of HTTP service discovery\n                  configurations.\n                items:\n                  description: HTTPSDConfig defines a prometheus HTTP service discovery\n                    configuration See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#http_sd_config\n                  properties:\n                    authorization:\n                      description: Authorization header configuration to authenticate\n                        against the target HTTP endpoint.\n                      properties:\n                        credentials:\n                          description: Selects a key of a Secret in the namespace\n                            that contains the credentials for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type:\n                          description: \"Defines the authentication type. The value\n                            is case-insensitive. \\n \\\"Basic\\\" is not a supported value.\n                            \\n Default: \\\"Bearer\\\"\"\n                          type: string\n                      type: object\n                    basicAuth:\n                      description: 'BasicAuth information to authenticate against\n                        the target HTTP endpoint. More info: https://prometheus.io/docs/operating/configuration/#endpoints'\n                      properties:\n                        password:\n                          description: The secret in the service monitor namespace\n                            that contains the password for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        username:\n                          description: The secret in the service monitor namespace\n                            that contains the username for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      type: object\n                    refreshInterval:\n                      description: RefreshInterval configures the refresh interval\n                        at which Prometheus will re-query the endpoint to update the\n                        target list.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    url:\n                      description: URL from which the targets are fetched.\n                      minLength: 1\n                      pattern: ^http(s)?://.+$\n                      type: string\n                  required:\n                  - url\n                  type: object\n                type: array\n              metricsPath:\n                description: MetricsPath HTTP path to scrape for metrics. If empty,\n                  Prometheus uses the default value (e.g. /metrics).\n                type: string\n              relabelings:\n                description: 'RelabelConfigs defines how to rewrite the target''s\n                  labels before scraping. Prometheus Operator automatically adds relabelings\n                  for a few standard Kubernetes fields. The original scrape job''s\n                  name is available via the `__tmp_prometheus_job_name` label. More\n                  info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config'\n                items:\n                  description: \"RelabelConfig allows dynamic rewriting of the label\n                    set for targets, alerts, scraped samples and remote write samples.\n                    \\n More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\"\n                  properties:\n                    action:\n                      default: replace\n                      description: \"Action to perform based on the regex matching.\n                        \\n `Uppercase` and `Lowercase` actions require Prometheus\n                        >= v2.36.0. `DropEqual` and `KeepEqual` actions require Prometheus\n                        >= v2.41.0. \\n Default: \\\"Replace\\\"\"\n                      enum:\n                      - replace\n                      - Replace\n                      - keep\n                      - Keep\n                      - drop\n                      - Drop\n                      - hashmod\n                      - HashMod\n                      - labelmap\n                      - LabelMap\n                      - labeldrop\n                      - LabelDrop\n                      - labelkeep\n                      - LabelKeep\n                      - lowercase\n                      - Lowercase\n                      - uppercase\n                      - Uppercase\n                      - keepequal\n                      - KeepEqual\n                      - dropequal\n                      - DropEqual\n                      type: string\n                    modulus:\n                      description: \"Modulus to take of the hash of the source label\n                        values. \\n Only applicable when the action is `HashMod`.\"\n                      format: int64\n                      type: integer\n                    regex:\n                      description: Regular expression against which the extracted\n                        value is matched.\n                      type: string\n                    replacement:\n                      description: \"Replacement value against which a Replace action\n                        is performed if the regular expression matches. \\n Regex capture\n                        groups are available.\"\n                      type: string\n                    separator:\n                      description: Separator is the string between concatenated SourceLabels.\n                      type: string\n                    sourceLabels:\n                      description: The source labels select values from existing labels.\n                        Their content is concatenated using the configured Separator\n                        and matched against the configured regular expression.\n                      items:\n                        description: LabelName is a valid Prometheus label name which\n                          may only contain ASCII letters, numbers, as well as underscores.\n                        pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$\n                        type: string\n                      type: array\n                    targetLabel:\n                      description: \"Label to which the resulting string is written\n                        in a replacement. \\n It is mandatory for `Replace`, `HashMod`,\n                        `Lowercase`, `Uppercase`, `KeepEqual` and `DropEqual` actions.\n                        \\n Regex capture groups are available.\"\n                      type: string\n                  type: object\n                type: array\n              scheme:\n                description: Configures the protocol scheme used for requests. If\n                  empty, Prometheus uses HTTP by default.\n                enum:\n                - HTTP\n                - HTTPS\n                type: string\n              staticConfigs:\n                description: StaticConfigs defines a list of static targets with a\n                  common label set.\n                items:\n                  description: StaticConfig defines a Prometheus static configuration.\n                    See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config\n                  properties:\n                    labels:\n                      additionalProperties:\n                        type: string\n                      description: Labels assigned to all metrics scraped from the\n                        targets.\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    targets:\n                      description: List of targets for this static configuration.\n                      items:\n                        description: Target represents a target for Prometheus to\n                          scrape\n                        type: string\n                      type: array\n                  type: object\n                type: array\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n---\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.11.1\n  creationTimestamp: null\n  name: servicemonitors.monitoring.coreos.com\nspec:\n  group: monitoring.coreos.com\n  names:\n    categories:\n    - prometheus-operator\n    kind: ServiceMonitor\n    listKind: ServiceMonitorList\n    plural: servicemonitors\n    shortNames:\n    - smon\n    singular: servicemonitor\n  scope: Namespaced\n  versions:\n  - name: v1\n    schema:\n      openAPIV3Schema:\n        description: ServiceMonitor defines monitoring for a set of services.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: Specification of desired Service selection for target discovery\n              by Prometheus.\n            properties:\n              attachMetadata:\n                description: Attaches node metadata to discovered targets. Requires\n                  Prometheus v2.37.0 and above.\n                properties:\n                  node:\n                    description: When set to true, Prometheus must have permissions\n                      to get Nodes.\n                    type: boolean\n                type: object\n              endpoints:\n                description: A list of endpoints allowed as part of this ServiceMonitor.\n                items:\n                  description: Endpoint defines a scrapeable endpoint serving Prometheus\n                    metrics.\n                  properties:\n                    authorization:\n                      description: Authorization section for this endpoint\n                      properties:\n                        credentials:\n                          description: Selects a key of a Secret in the namespace\n                            that contains the credentials for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type:\n                          description: \"Defines the authentication type. The value\n                            is case-insensitive. \\n \\\"Basic\\\" is not a supported value.\n                            \\n Default: \\\"Bearer\\\"\"\n                          type: string\n                      type: object\n                    basicAuth:\n                      description: 'BasicAuth allow an endpoint to authenticate over\n                        basic authentication More info: https://prometheus.io/docs/operating/configuration/#endpoints'\n                      properties:\n                        password:\n                          description: The secret in the service monitor namespace\n                            that contains the password for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        username:\n                          description: The secret in the service monitor namespace\n                            that contains the username for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      type: object\n                    bearerTokenFile:\n                      description: File to read bearer token for scraping targets.\n                      type: string\n                    bearerTokenSecret:\n                      description: Secret to mount to read bearer token for scraping\n                        targets. The secret needs to be in the same namespace as the\n                        service monitor and accessible by the Prometheus Operator.\n                      properties:\n                        key:\n                          description: The key of the secret to select from.  Must\n                            be a valid secret key.\n                          type: string\n                        name:\n                          description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            TODO: Add other useful fields. apiVersion, kind, uid?'\n                          type: string\n                        optional:\n                          description: Specify whether the Secret or its key must\n                            be defined\n                          type: boolean\n                      required:\n                      - key\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    enableHttp2:\n                      description: Whether to enable HTTP2.\n                      type: boolean\n                    filterRunning:\n                      description: 'Drop pods that are not running. (Failed, Succeeded).\n                        Enabled by default. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase'\n                      type: boolean\n                    followRedirects:\n                      description: FollowRedirects configures whether scrape requests\n                        follow HTTP 3xx redirects.\n                      type: boolean\n                    honorLabels:\n                      description: HonorLabels chooses the metric's labels on collisions\n                        with target labels.\n                      type: boolean\n                    honorTimestamps:\n                      description: HonorTimestamps controls whether Prometheus respects\n                        the timestamps present in scraped data.\n                      type: boolean\n                    interval:\n                      description: Interval at which metrics should be scraped If\n                        not specified Prometheus' global scrape interval is used.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    metricRelabelings:\n                      description: MetricRelabelConfigs to apply to samples before\n                        ingestion.\n                      items:\n                        description: \"RelabelConfig allows dynamic rewriting of the\n                          label set for targets, alerts, scraped samples and remote\n                          write samples. \\n More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\"\n                        properties:\n                          action:\n                            default: replace\n                            description: \"Action to perform based on the regex matching.\n                              \\n `Uppercase` and `Lowercase` actions require Prometheus\n                              >= v2.36.0. `DropEqual` and `KeepEqual` actions require\n                              Prometheus >= v2.41.0. \\n Default: \\\"Replace\\\"\"\n                            enum:\n                            - replace\n                            - Replace\n                            - keep\n                            - Keep\n                            - drop\n                            - Drop\n                            - hashmod\n                            - HashMod\n                            - labelmap\n                            - LabelMap\n                            - labeldrop\n                            - LabelDrop\n                            - labelkeep\n                            - LabelKeep\n                            - lowercase\n                            - Lowercase\n                            - uppercase\n                            - Uppercase\n                            - keepequal\n                            - KeepEqual\n                            - dropequal\n                            - DropEqual\n                            type: string\n                          modulus:\n                            description: \"Modulus to take of the hash of the source\n                              label values. \\n Only applicable when the action is\n                              `HashMod`.\"\n                            format: int64\n                            type: integer\n                          regex:\n                            description: Regular expression against which the extracted\n                              value is matched.\n                            type: string\n                          replacement:\n                            description: \"Replacement value against which a Replace\n                              action is performed if the regular expression matches.\n                              \\n Regex capture groups are available.\"\n                            type: string\n                          separator:\n                            description: Separator is the string between concatenated\n                              SourceLabels.\n                            type: string\n                          sourceLabels:\n                            description: The source labels select values from existing\n                              labels. Their content is concatenated using the configured\n                              Separator and matched against the configured regular\n                              expression.\n                            items:\n                              description: LabelName is a valid Prometheus label name\n                                which may only contain ASCII letters, numbers, as\n                                well as underscores.\n                              pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$\n                              type: string\n                            type: array\n                          targetLabel:\n                            description: \"Label to which the resulting string is written\n                              in a replacement. \\n It is mandatory for `Replace`,\n                              `HashMod`, `Lowercase`, `Uppercase`, `KeepEqual` and\n                              `DropEqual` actions. \\n Regex capture groups are available.\"\n                            type: string\n                        type: object\n                      type: array\n                    oauth2:\n                      description: OAuth2 for the URL. Only valid in Prometheus versions\n                        2.27.0 and newer.\n                      properties:\n                        clientId:\n                          description: The secret or configmap containing the OAuth2\n                            client id\n                          properties:\n                            configMap:\n                              description: ConfigMap containing data to use for the\n                                targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its\n                                    key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must\n                                    be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key\n                                    must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        clientSecret:\n                          description: The secret containing the OAuth2 client secret\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        endpointParams:\n                          additionalProperties:\n                            type: string\n                          description: Parameters to append to the token URL\n                          type: object\n                        scopes:\n                          description: OAuth2 scopes used for the token request\n                          items:\n                            type: string\n                          type: array\n                        tokenUrl:\n                          description: The URL to fetch the token from\n                          minLength: 1\n                          type: string\n                      required:\n                      - clientId\n                      - clientSecret\n                      - tokenUrl\n                      type: object\n                    params:\n                      additionalProperties:\n                        items:\n                          type: string\n                        type: array\n                      description: Optional HTTP URL parameters\n                      type: object\n                    path:\n                      description: HTTP path to scrape for metrics. If empty, Prometheus\n                        uses the default value (e.g. `/metrics`).\n                      type: string\n                    port:\n                      description: Name of the service port this endpoint refers to.\n                        Mutually exclusive with targetPort.\n                      type: string\n                    proxyUrl:\n                      description: ProxyURL eg http://proxyserver:2195 Directs scrapes\n                        to proxy through this endpoint.\n                      type: string\n                    relabelings:\n                      description: 'RelabelConfigs to apply to samples before scraping.\n                        Prometheus Operator automatically adds relabelings for a few\n                        standard Kubernetes fields. The original scrape job''s name\n                        is available via the `__tmp_prometheus_job_name` label. More\n                        info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config'\n                      items:\n                        description: \"RelabelConfig allows dynamic rewriting of the\n                          label set for targets, alerts, scraped samples and remote\n                          write samples. \\n More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\"\n                        properties:\n                          action:\n                            default: replace\n                            description: \"Action to perform based on the regex matching.\n                              \\n `Uppercase` and `Lowercase` actions require Prometheus\n                              >= v2.36.0. `DropEqual` and `KeepEqual` actions require\n                              Prometheus >= v2.41.0. \\n Default: \\\"Replace\\\"\"\n                            enum:\n                            - replace\n                            - Replace\n                            - keep\n                            - Keep\n                            - drop\n                            - Drop\n                            - hashmod\n                            - HashMod\n                            - labelmap\n                            - LabelMap\n                            - labeldrop\n                            - LabelDrop\n                            - labelkeep\n                            - LabelKeep\n                            - lowercase\n                            - Lowercase\n                            - uppercase\n                            - Uppercase\n                            - keepequal\n                            - KeepEqual\n                            - dropequal\n                            - DropEqual\n                            type: string\n                          modulus:\n                            description: \"Modulus to take of the hash of the source\n                              label values. \\n Only applicable when the action is\n                              `HashMod`.\"\n                            format: int64\n                            type: integer\n                          regex:\n                            description: Regular expression against which the extracted\n                              value is matched.\n                            type: string\n                          replacement:\n                            description: \"Replacement value against which a Replace\n                              action is performed if the regular expression matches.\n                              \\n Regex capture groups are available.\"\n                            type: string\n                          separator:\n                            description: Separator is the string between concatenated\n                              SourceLabels.\n                            type: string\n                          sourceLabels:\n                            description: The source labels select values from existing\n                              labels. Their content is concatenated using the configured\n                              Separator and matched against the configured regular\n                              expression.\n                            items:\n                              description: LabelName is a valid Prometheus label name\n                                which may only contain ASCII letters, numbers, as\n                                well as underscores.\n                              pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$\n                              type: string\n                            type: array\n                          targetLabel:\n                            description: \"Label to which the resulting string is written\n                              in a replacement. \\n It is mandatory for `Replace`,\n                              `HashMod`, `Lowercase`, `Uppercase`, `KeepEqual` and\n                              `DropEqual` actions. \\n Regex capture groups are available.\"\n                            type: string\n                        type: object\n                      type: array\n                    scheme:\n                      description: HTTP scheme to use for scraping. `http` and `https`\n                        are the expected values unless you rewrite the `__scheme__`\n                        label via relabeling. If empty, Prometheus uses the default\n                        value `http`.\n                      enum:\n                      - http\n                      - https\n                      type: string\n                    scrapeTimeout:\n                      description: Timeout after which the scrape is ended If not\n                        specified, the Prometheus global scrape timeout is used unless\n                        it is less than `Interval` in which the latter is used.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    targetPort:\n                      anyOf:\n                      - type: integer\n                      - type: string\n                      description: Name or number of the target port of the Pod behind\n                        the Service, the port must be specified with container port\n                        property. Mutually exclusive with port.\n                      x-kubernetes-int-or-string: true\n                    tlsConfig:\n                      description: TLS configuration to use when scraping the endpoint\n                      properties:\n                        ca:\n                          description: Certificate authority used when verifying server\n                            certificates.\n                          properties:\n                            configMap:\n                              description: ConfigMap containing data to use for the\n                                targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its\n                                    key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must\n                                    be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key\n                                    must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        caFile:\n                          description: Path to the CA cert in the Prometheus container\n                            to use for the targets.\n                          type: string\n                        cert:\n                          description: Client certificate to present when doing client-authentication.\n                          properties:\n                            configMap:\n                              description: ConfigMap containing data to use for the\n                                targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its\n                                    key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must\n                                    be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                    TODO: Add other useful fields. apiVersion, kind,\n                                    uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key\n                                    must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        certFile:\n                          description: Path to the client cert file in the Prometheus\n                            container for the targets.\n                          type: string\n                        insecureSkipVerify:\n                          description: Disable target certificate validation.\n                          type: boolean\n                        keyFile:\n                          description: Path to the client key file in the Prometheus\n                            container for the targets.\n                          type: string\n                        keySecret:\n                          description: Secret containing the client key file for the\n                            targets.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must\n                                be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must\n                                be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        serverName:\n                          description: Used to verify the hostname for the targets.\n                          type: string\n                      type: object\n                  type: object\n                type: array\n              jobLabel:\n                description: \"JobLabel selects the label from the associated Kubernetes\n                  service which will be used as the `job` label for all metrics. \\n\n                  For example: If in `ServiceMonitor.spec.jobLabel: foo` and in `Service.metadata.labels.foo:\n                  bar`, then the `job=\\\"bar\\\"` label is added to all metrics. \\n If\n                  the value of this field is empty or if the label doesn't exist for\n                  the given Service, the `job` label of the metrics defaults to the\n                  name of the Kubernetes Service.\"\n                type: string\n              labelLimit:\n                description: Per-scrape limit on number of labels that will be accepted\n                  for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n                format: int64\n                type: integer\n              labelNameLengthLimit:\n                description: Per-scrape limit on length of labels name that will be\n                  accepted for a sample. Only valid in Prometheus versions 2.27.0\n                  and newer.\n                format: int64\n                type: integer\n              labelValueLengthLimit:\n                description: Per-scrape limit on length of labels value that will\n                  be accepted for a sample. Only valid in Prometheus versions 2.27.0\n                  and newer.\n                format: int64\n                type: integer\n              namespaceSelector:\n                description: Selector to select which namespaces the Kubernetes Endpoints\n                  objects are discovered from.\n                properties:\n                  any:\n                    description: Boolean describing whether all namespaces are selected\n                      in contrast to a list restricting them.\n                    type: boolean\n                  matchNames:\n                    description: List of namespace names to select from.\n                    items:\n                      type: string\n                    type: array\n                type: object\n              podTargetLabels:\n                description: PodTargetLabels transfers labels on the Kubernetes `Pod`\n                  onto the created metrics.\n                items:\n                  type: string\n                type: array\n              sampleLimit:\n                description: SampleLimit defines per-scrape limit on number of scraped\n                  samples that will be accepted.\n                format: int64\n                type: integer\n              selector:\n                description: Selector to select Endpoints objects.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              targetLabels:\n                description: TargetLabels transfers labels from the Kubernetes `Service`\n                  onto the created metrics.\n                items:\n                  type: string\n                type: array\n              targetLimit:\n                description: TargetLimit defines a limit on the number of scraped\n                  targets that will be accepted.\n                format: int64\n                type: integer\n            required:\n            - endpoints\n            - selector\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n---\napiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.11.1\n  creationTimestamp: null\n  name: thanosrulers.monitoring.coreos.com\nspec:\n  group: monitoring.coreos.com\n  names:\n    categories:\n    - prometheus-operator\n    kind: ThanosRuler\n    listKind: ThanosRulerList\n    plural: thanosrulers\n    shortNames:\n    - ruler\n    singular: thanosruler\n  scope: Namespaced\n  versions:\n  - additionalPrinterColumns:\n    - description: The version of Thanos Ruler\n      jsonPath: .spec.version\n      name: Version\n      type: string\n    - description: The number of desired replicas\n      jsonPath: .spec.replicas\n      name: Replicas\n      type: integer\n    - description: The number of ready replicas\n      jsonPath: .status.availableReplicas\n      name: Ready\n      type: integer\n    - jsonPath: .status.conditions[?(@.type == 'Reconciled')].status\n      name: Reconciled\n      type: string\n    - jsonPath: .status.conditions[?(@.type == 'Available')].status\n      name: Available\n      type: string\n    - jsonPath: .metadata.creationTimestamp\n      name: Age\n      type: date\n    - description: Whether the resource reconciliation is paused or not\n      jsonPath: .status.paused\n      name: Paused\n      priority: 1\n      type: boolean\n    name: v1\n    schema:\n      openAPIV3Schema:\n        description: ThanosRuler defines a ThanosRuler deployment.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation\n              of an object. Servers should convert recognized schemas to the latest\n              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this\n              object represents. Servers may infer this from the endpoint the client\n              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: 'Specification of the desired behavior of the ThanosRuler\n              cluster. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status'\n            properties:\n              additionalArgs:\n                description: AdditionalArgs allows setting additional arguments for\n                  the ThanosRuler container. It is intended for e.g. activating hidden\n                  flags which are not supported by the dedicated configuration options\n                  yet. The arguments are passed as-is to the ThanosRuler container\n                  which may cause issues if they are invalid or not supported by the\n                  given ThanosRuler version. In case of an argument conflict (e.g.\n                  an argument which is already set by the operator itself) or when\n                  providing an invalid argument the reconciliation will fail and an\n                  error will be logged.\n                items:\n                  description: Argument as part of the AdditionalArgs list.\n                  properties:\n                    name:\n                      description: Name of the argument, e.g. \"scrape.discovery-reload-interval\".\n                      minLength: 1\n                      type: string\n                    value:\n                      description: Argument value, e.g. 30s. Can be empty for name-only\n                        arguments (e.g. --storage.tsdb.no-lockfile)\n                      type: string\n                  required:\n                  - name\n                  type: object\n                type: array\n              affinity:\n                description: If specified, the pod's scheduling constraints.\n                properties:\n                  nodeAffinity:\n                    description: Describes node affinity scheduling rules for the\n                      pod.\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: The scheduler will prefer to schedule pods to\n                          nodes that satisfy the affinity expressions specified by\n                          this field, but it may choose a node that violates one or\n                          more of the expressions. The node that is most preferred\n                          is the one with the greatest sum of weights, i.e. for each\n                          node that meets all of the scheduling requirements (resource\n                          request, requiredDuringScheduling affinity expressions,\n                          etc.), compute a sum by iterating through the elements of\n                          this field and adding \"weight\" to the sum if the node matches\n                          the corresponding matchExpressions; the node(s) with the\n                          highest sum are the most preferred.\n                        items:\n                          description: An empty preferred scheduling term matches\n                            all objects with implicit weight 0 (i.e. it's a no-op).\n                            A null preferred scheduling term matches no objects (i.e.\n                            is also a no-op).\n                          properties:\n                            preference:\n                              description: A node selector term, associated with the\n                                corresponding weight.\n                              properties:\n                                matchExpressions:\n                                  description: A list of node selector requirements\n                                    by node's labels.\n                                  items:\n                                    description: A node selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector\n                                          applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists, DoesNotExist. Gt, and\n                                          Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If\n                                          the operator is In or NotIn, the values\n                                          array must be non-empty. If the operator\n                                          is Exists or DoesNotExist, the values array\n                                          must be empty. If the operator is Gt or\n                                          Lt, the values array must have a single\n                                          element, which will be interpreted as an\n                                          integer. This array is replaced during a\n                                          strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchFields:\n                                  description: A list of node selector requirements\n                                    by node's fields.\n                                  items:\n                                    description: A node selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector\n                                          applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists, DoesNotExist. Gt, and\n                                          Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If\n                                          the operator is In or NotIn, the values\n                                          array must be non-empty. If the operator\n                                          is Exists or DoesNotExist, the values array\n                                          must be empty. If the operator is Gt or\n                                          Lt, the values array must have a single\n                                          element, which will be interpreted as an\n                                          integer. This array is replaced during a\n                                          strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            weight:\n                              description: Weight associated with matching the corresponding\n                                nodeSelectorTerm, in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - preference\n                          - weight\n                          type: object\n                        type: array\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: If the affinity requirements specified by this\n                          field are not met at scheduling time, the pod will not be\n                          scheduled onto the node. If the affinity requirements specified\n                          by this field cease to be met at some point during pod execution\n                          (e.g. due to an update), the system may or may not try to\n                          eventually evict the pod from its node.\n                        properties:\n                          nodeSelectorTerms:\n                            description: Required. A list of node selector terms.\n                              The terms are ORed.\n                            items:\n                              description: A null or empty node selector term matches\n                                no objects. The requirements of them are ANDed. The\n                                TopologySelectorTerm type implements a subset of the\n                                NodeSelectorTerm.\n                              properties:\n                                matchExpressions:\n                                  description: A list of node selector requirements\n                                    by node's labels.\n                                  items:\n                                    description: A node selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector\n                                          applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists, DoesNotExist. Gt, and\n                                          Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If\n                                          the operator is In or NotIn, the values\n                                          array must be non-empty. If the operator\n                                          is Exists or DoesNotExist, the values array\n                                          must be empty. If the operator is Gt or\n                                          Lt, the values array must have a single\n                                          element, which will be interpreted as an\n                                          integer. This array is replaced during a\n                                          strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchFields:\n                                  description: A list of node selector requirements\n                                    by node's fields.\n                                  items:\n                                    description: A node selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector\n                                          applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists, DoesNotExist. Gt, and\n                                          Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If\n                                          the operator is In or NotIn, the values\n                                          array must be non-empty. If the operator\n                                          is Exists or DoesNotExist, the values array\n                                          must be empty. If the operator is Gt or\n                                          Lt, the values array must have a single\n                                          element, which will be interpreted as an\n                                          integer. This array is replaced during a\n                                          strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            type: array\n                        required:\n                        - nodeSelectorTerms\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  podAffinity:\n                    description: Describes pod affinity scheduling rules (e.g. co-locate\n                      this pod in the same node, zone, etc. as some other pod(s)).\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: The scheduler will prefer to schedule pods to\n                          nodes that satisfy the affinity expressions specified by\n                          this field, but it may choose a node that violates one or\n                          more of the expressions. The node that is most preferred\n                          is the one with the greatest sum of weights, i.e. for each\n                          node that meets all of the scheduling requirements (resource\n                          request, requiredDuringScheduling affinity expressions,\n                          etc.), compute a sum by iterating through the elements of\n                          this field and adding \"weight\" to the sum if the node has\n                          pods which matches the corresponding podAffinityTerm; the\n                          node(s) with the highest sum are the most preferred.\n                        items:\n                          description: The weights of all of the matched WeightedPodAffinityTerm\n                            fields are added per-node to find the most preferred node(s)\n                          properties:\n                            podAffinityTerm:\n                              description: Required. A pod affinity term, associated\n                                with the corresponding weight.\n                              properties:\n                                labelSelector:\n                                  description: A label query over a set of resources,\n                                    in this case pods.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label\n                                        selector requirements. The requirements are\n                                        ANDed.\n                                      items:\n                                        description: A label selector requirement\n                                          is a selector that contains values, a key,\n                                          and an operator that relates the key and\n                                          values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that\n                                              the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's\n                                              relationship to a set of values. Valid\n                                              operators are In, NotIn, Exists and\n                                              DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string\n                                              values. If the operator is In or NotIn,\n                                              the values array must be non-empty.\n                                              If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This\n                                              array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value}\n                                        pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions,\n                                        whose key field is \"key\", the operator is\n                                        \"In\", and the values array contains only \"value\".\n                                        The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaceSelector:\n                                  description: A label query over the set of namespaces\n                                    that the term applies to. The term is applied\n                                    to the union of the namespaces selected by this\n                                    field and the ones listed in the namespaces field.\n                                    null selector and null or empty namespaces list\n                                    means \"this pod's namespace\". An empty selector\n                                    ({}) matches all namespaces.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label\n                                        selector requirements. The requirements are\n                                        ANDed.\n                                      items:\n                                        description: A label selector requirement\n                                          is a selector that contains values, a key,\n                                          and an operator that relates the key and\n                                          values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that\n                                              the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's\n                                              relationship to a set of values. Valid\n                                              operators are In, NotIn, Exists and\n                                              DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string\n                                              values. If the operator is In or NotIn,\n                                              the values array must be non-empty.\n                                              If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This\n                                              array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value}\n                                        pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions,\n                                        whose key field is \"key\", the operator is\n                                        \"In\", and the values array contains only \"value\".\n                                        The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaces:\n                                  description: namespaces specifies a static list\n                                    of namespace names that the term applies to. The\n                                    term is applied to the union of the namespaces\n                                    listed in this field and the ones selected by\n                                    namespaceSelector. null or empty namespaces list\n                                    and null namespaceSelector means \"this pod's namespace\".\n                                  items:\n                                    type: string\n                                  type: array\n                                topologyKey:\n                                  description: This pod should be co-located (affinity)\n                                    or not co-located (anti-affinity) with the pods\n                                    matching the labelSelector in the specified namespaces,\n                                    where co-located is defined as running on a node\n                                    whose value of the label with key topologyKey\n                                    matches that of any node on which any of the selected\n                                    pods is running. Empty topologyKey is not allowed.\n                                  type: string\n                              required:\n                              - topologyKey\n                              type: object\n                            weight:\n                              description: weight associated with matching the corresponding\n                                podAffinityTerm, in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - podAffinityTerm\n                          - weight\n                          type: object\n                        type: array\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: If the affinity requirements specified by this\n                          field are not met at scheduling time, the pod will not be\n                          scheduled onto the node. If the affinity requirements specified\n                          by this field cease to be met at some point during pod execution\n                          (e.g. due to a pod label update), the system may or may\n                          not try to eventually evict the pod from its node. When\n                          there are multiple elements, the lists of nodes corresponding\n                          to each podAffinityTerm are intersected, i.e. all terms\n                          must be satisfied.\n                        items:\n                          description: Defines a set of pods (namely those matching\n                            the labelSelector relative to the given namespace(s))\n                            that this pod should be co-located (affinity) or not co-located\n                            (anti-affinity) with, where co-located is defined as running\n                            on a node whose value of the label with key <topologyKey>\n                            matches that of any node on which a pod of the set of\n                            pods is running\n                          properties:\n                            labelSelector:\n                              description: A label query over a set of resources,\n                                in this case pods.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label\n                                    selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the\n                                          selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string\n                                          values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the\n                                          operator is Exists or DoesNotExist, the\n                                          values array must be empty. This array is\n                                          replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value}\n                                    pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions,\n                                    whose key field is \"key\", the operator is \"In\",\n                                    and the values array contains only \"value\". The\n                                    requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaceSelector:\n                              description: A label query over the set of namespaces\n                                that the term applies to. The term is applied to the\n                                union of the namespaces selected by this field and\n                                the ones listed in the namespaces field. null selector\n                                and null or empty namespaces list means \"this pod's\n                                namespace\". An empty selector ({}) matches all namespaces.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label\n                                    selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the\n                                          selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string\n                                          values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the\n                                          operator is Exists or DoesNotExist, the\n                                          values array must be empty. This array is\n                                          replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value}\n                                    pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions,\n                                    whose key field is \"key\", the operator is \"In\",\n                                    and the values array contains only \"value\". The\n                                    requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaces:\n                              description: namespaces specifies a static list of namespace\n                                names that the term applies to. The term is applied\n                                to the union of the namespaces listed in this field\n                                and the ones selected by namespaceSelector. null or\n                                empty namespaces list and null namespaceSelector means\n                                \"this pod's namespace\".\n                              items:\n                                type: string\n                              type: array\n                            topologyKey:\n                              description: This pod should be co-located (affinity)\n                                or not co-located (anti-affinity) with the pods matching\n                                the labelSelector in the specified namespaces, where\n                                co-located is defined as running on a node whose value\n                                of the label with key topologyKey matches that of\n                                any node on which any of the selected pods is running.\n                                Empty topologyKey is not allowed.\n                              type: string\n                          required:\n                          - topologyKey\n                          type: object\n                        type: array\n                    type: object\n                  podAntiAffinity:\n                    description: Describes pod anti-affinity scheduling rules (e.g.\n                      avoid putting this pod in the same node, zone, etc. as some\n                      other pod(s)).\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: The scheduler will prefer to schedule pods to\n                          nodes that satisfy the anti-affinity expressions specified\n                          by this field, but it may choose a node that violates one\n                          or more of the expressions. The node that is most preferred\n                          is the one with the greatest sum of weights, i.e. for each\n                          node that meets all of the scheduling requirements (resource\n                          request, requiredDuringScheduling anti-affinity expressions,\n                          etc.), compute a sum by iterating through the elements of\n                          this field and adding \"weight\" to the sum if the node has\n                          pods which matches the corresponding podAffinityTerm; the\n                          node(s) with the highest sum are the most preferred.\n                        items:\n                          description: The weights of all of the matched WeightedPodAffinityTerm\n                            fields are added per-node to find the most preferred node(s)\n                          properties:\n                            podAffinityTerm:\n                              description: Required. A pod affinity term, associated\n                                with the corresponding weight.\n                              properties:\n                                labelSelector:\n                                  description: A label query over a set of resources,\n                                    in this case pods.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label\n                                        selector requirements. The requirements are\n                                        ANDed.\n                                      items:\n                                        description: A label selector requirement\n                                          is a selector that contains values, a key,\n                                          and an operator that relates the key and\n                                          values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that\n                                              the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's\n                                              relationship to a set of values. Valid\n                                              operators are In, NotIn, Exists and\n                                              DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string\n                                              values. If the operator is In or NotIn,\n                                              the values array must be non-empty.\n                                              If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This\n                                              array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value}\n                                        pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions,\n                                        whose key field is \"key\", the operator is\n                                        \"In\", and the values array contains only \"value\".\n                                        The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaceSelector:\n                                  description: A label query over the set of namespaces\n                                    that the term applies to. The term is applied\n                                    to the union of the namespaces selected by this\n                                    field and the ones listed in the namespaces field.\n                                    null selector and null or empty namespaces list\n                                    means \"this pod's namespace\". An empty selector\n                                    ({}) matches all namespaces.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label\n                                        selector requirements. The requirements are\n                                        ANDed.\n                                      items:\n                                        description: A label selector requirement\n                                          is a selector that contains values, a key,\n                                          and an operator that relates the key and\n                                          values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that\n                                              the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's\n                                              relationship to a set of values. Valid\n                                              operators are In, NotIn, Exists and\n                                              DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string\n                                              values. If the operator is In or NotIn,\n                                              the values array must be non-empty.\n                                              If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This\n                                              array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value}\n                                        pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions,\n                                        whose key field is \"key\", the operator is\n                                        \"In\", and the values array contains only \"value\".\n                                        The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaces:\n                                  description: namespaces specifies a static list\n                                    of namespace names that the term applies to. The\n                                    term is applied to the union of the namespaces\n                                    listed in this field and the ones selected by\n                                    namespaceSelector. null or empty namespaces list\n                                    and null namespaceSelector means \"this pod's namespace\".\n                                  items:\n                                    type: string\n                                  type: array\n                                topologyKey:\n                                  description: This pod should be co-located (affinity)\n                                    or not co-located (anti-affinity) with the pods\n                                    matching the labelSelector in the specified namespaces,\n                                    where co-located is defined as running on a node\n                                    whose value of the label with key topologyKey\n                                    matches that of any node on which any of the selected\n                                    pods is running. Empty topologyKey is not allowed.\n                                  type: string\n                              required:\n                              - topologyKey\n                              type: object\n                            weight:\n                              description: weight associated with matching the corresponding\n                                podAffinityTerm, in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - podAffinityTerm\n                          - weight\n                          type: object\n                        type: array\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: If the anti-affinity requirements specified by\n                          this field are not met at scheduling time, the pod will\n                          not be scheduled onto the node. If the anti-affinity requirements\n                          specified by this field cease to be met at some point during\n                          pod execution (e.g. due to a pod label update), the system\n                          may or may not try to eventually evict the pod from its\n                          node. When there are multiple elements, the lists of nodes\n                          corresponding to each podAffinityTerm are intersected, i.e.\n                          all terms must be satisfied.\n                        items:\n                          description: Defines a set of pods (namely those matching\n                            the labelSelector relative to the given namespace(s))\n                            that this pod should be co-located (affinity) or not co-located\n                            (anti-affinity) with, where co-located is defined as running\n                            on a node whose value of the label with key <topologyKey>\n                            matches that of any node on which a pod of the set of\n                            pods is running\n                          properties:\n                            labelSelector:\n                              description: A label query over a set of resources,\n                                in this case pods.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label\n                                    selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the\n                                          selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string\n                                          values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the\n                                          operator is Exists or DoesNotExist, the\n                                          values array must be empty. This array is\n                                          replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value}\n                                    pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions,\n                                    whose key field is \"key\", the operator is \"In\",\n                                    and the values array contains only \"value\". The\n                                    requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaceSelector:\n                              description: A label query over the set of namespaces\n                                that the term applies to. The term is applied to the\n                                union of the namespaces selected by this field and\n                                the ones listed in the namespaces field. null selector\n                                and null or empty namespaces list means \"this pod's\n                                namespace\". An empty selector ({}) matches all namespaces.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label\n                                    selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a\n                                      selector that contains values, a key, and an\n                                      operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the\n                                          selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship\n                                          to a set of values. Valid operators are\n                                          In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string\n                                          values. If the operator is In or NotIn,\n                                          the values array must be non-empty. If the\n                                          operator is Exists or DoesNotExist, the\n                                          values array must be empty. This array is\n                                          replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value}\n                                    pairs. A single {key,value} in the matchLabels\n                                    map is equivalent to an element of matchExpressions,\n                                    whose key field is \"key\", the operator is \"In\",\n                                    and the values array contains only \"value\". The\n                                    requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaces:\n                              description: namespaces specifies a static list of namespace\n                                names that the term applies to. The term is applied\n                                to the union of the namespaces listed in this field\n                                and the ones selected by namespaceSelector. null or\n                                empty namespaces list and null namespaceSelector means\n                                \"this pod's namespace\".\n                              items:\n                                type: string\n                              type: array\n                            topologyKey:\n                              description: This pod should be co-located (affinity)\n                                or not co-located (anti-affinity) with the pods matching\n                                the labelSelector in the specified namespaces, where\n                                co-located is defined as running on a node whose value\n                                of the label with key topologyKey matches that of\n                                any node on which any of the selected pods is running.\n                                Empty topologyKey is not allowed.\n                              type: string\n                          required:\n                          - topologyKey\n                          type: object\n                        type: array\n                    type: object\n                type: object\n              alertDropLabels:\n                description: AlertDropLabels configure the label names which should\n                  be dropped in ThanosRuler alerts. The replica label `thanos_ruler_replica`\n                  will always be dropped in alerts.\n                items:\n                  type: string\n                type: array\n              alertQueryUrl:\n                description: The external Query URL the Thanos Ruler will set in the\n                  'Source' field of all alerts. Maps to the '--alert.query-url' CLI\n                  arg.\n                type: string\n              alertRelabelConfigFile:\n                description: AlertRelabelConfigFile specifies the path of the alert\n                  relabeling configuration file. When used alongside with AlertRelabelConfigs,\n                  alertRelabelConfigFile takes precedence.\n                type: string\n              alertRelabelConfigs:\n                description: 'AlertRelabelConfigs configures alert relabeling in ThanosRuler.\n                  Alert relabel configurations must have the form as specified in\n                  the official Prometheus documentation: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alert_relabel_configs\n                  Alternative to AlertRelabelConfigFile, and lower order priority.'\n                properties:\n                  key:\n                    description: The key of the secret to select from.  Must be a\n                      valid secret key.\n                    type: string\n                  name:\n                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                      TODO: Add other useful fields. apiVersion, kind, uid?'\n                    type: string\n                  optional:\n                    description: Specify whether the Secret or its key must be defined\n                    type: boolean\n                required:\n                - key\n                type: object\n                x-kubernetes-map-type: atomic\n              alertmanagersConfig:\n                description: Define configuration for connecting to alertmanager.  Only\n                  available with thanos v0.10.0 and higher.  Maps to the `alertmanagers.config`\n                  arg.\n                properties:\n                  key:\n                    description: The key of the secret to select from.  Must be a\n                      valid secret key.\n                    type: string\n                  name:\n                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                      TODO: Add other useful fields. apiVersion, kind, uid?'\n                    type: string\n                  optional:\n                    description: Specify whether the Secret or its key must be defined\n                    type: boolean\n                required:\n                - key\n                type: object\n                x-kubernetes-map-type: atomic\n              alertmanagersUrl:\n                description: 'Define URLs to send alerts to Alertmanager.  For Thanos\n                  v0.10.0 and higher, AlertManagersConfig should be used instead.  Note:\n                  this field will be ignored if AlertManagersConfig is specified.\n                  Maps to the `alertmanagers.url` arg.'\n                items:\n                  type: string\n                type: array\n              containers:\n                description: 'Containers allows injecting additional containers or\n                  modifying operator generated containers. This can be used to allow\n                  adding an authentication proxy to a ThanosRuler pod or to change\n                  the behavior of an operator generated container. Containers described\n                  here modify an operator generated container if they share the same\n                  name and modifications are done via a strategic merge patch. The\n                  current container names are: `thanos-ruler` and `config-reloader`.\n                  Overriding containers is entirely outside the scope of what the\n                  maintainers will support and by doing so, you accept that this behaviour\n                  may break at any time without notice.'\n                items:\n                  description: A single application container that you want to run\n                    within a pod.\n                  properties:\n                    args:\n                      description: 'Arguments to the entrypoint. The container image''s\n                        CMD is used if this is not provided. Variable references $(VAR_NAME)\n                        are expanded using the container''s environment. If a variable\n                        cannot be resolved, the reference in the input string will\n                        be unchanged. Double $$ are reduced to a single $, which allows\n                        for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\n                        produce the string literal \"$(VAR_NAME)\". Escaped references\n                        will never be expanded, regardless of whether the variable\n                        exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    command:\n                      description: 'Entrypoint array. Not executed within a shell.\n                        The container image''s ENTRYPOINT is used if this is not provided.\n                        Variable references $(VAR_NAME) are expanded using the container''s\n                        environment. If a variable cannot be resolved, the reference\n                        in the input string will be unchanged. Double $$ are reduced\n                        to a single $, which allows for escaping the $(VAR_NAME) syntax:\n                        i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\".\n                        Escaped references will never be expanded, regardless of whether\n                        the variable exists or not. Cannot be updated. More info:\n                        https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    env:\n                      description: List of environment variables to set in the container.\n                        Cannot be updated.\n                      items:\n                        description: EnvVar represents an environment variable present\n                          in a Container.\n                        properties:\n                          name:\n                            description: Name of the environment variable. Must be\n                              a C_IDENTIFIER.\n                            type: string\n                          value:\n                            description: 'Variable references $(VAR_NAME) are expanded\n                              using the previously defined environment variables in\n                              the container and any service environment variables.\n                              If a variable cannot be resolved, the reference in the\n                              input string will be unchanged. Double $$ are reduced\n                              to a single $, which allows for escaping the $(VAR_NAME)\n                              syntax: i.e. \"$$(VAR_NAME)\" will produce the string\n                              literal \"$(VAR_NAME)\". Escaped references will never\n                              be expanded, regardless of whether the variable exists\n                              or not. Defaults to \"\".'\n                            type: string\n                          valueFrom:\n                            description: Source for the environment variable's value.\n                              Cannot be used if value is not empty.\n                            properties:\n                              configMapKeyRef:\n                                description: Selects a key of a ConfigMap.\n                                properties:\n                                  key:\n                                    description: The key to select.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the ConfigMap or\n                                      its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              fieldRef:\n                                description: 'Selects a field of the pod: supports\n                                  metadata.name, metadata.namespace, `metadata.labels[''<KEY>'']`,\n                                  `metadata.annotations[''<KEY>'']`, spec.nodeName,\n                                  spec.serviceAccountName, status.hostIP, status.podIP,\n                                  status.podIPs.'\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath\n                                      is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the\n                                      specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              resourceFieldRef:\n                                description: 'Selects a resource of the container:\n                                  only resources limits and requests (limits.cpu,\n                                  limits.memory, limits.ephemeral-storage, requests.cpu,\n                                  requests.memory and requests.ephemeral-storage)\n                                  are currently supported.'\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes,\n                                      optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the\n                                      exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              secretKeyRef:\n                                description: Selects a key of a secret in the pod's\n                                  namespace\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            type: object\n                        required:\n                        - name\n                        type: object\n                      type: array\n                    envFrom:\n                      description: List of sources to populate environment variables\n                        in the container. The keys defined within a source must be\n                        a C_IDENTIFIER. All invalid keys will be reported as an event\n                        when the container is starting. When a key exists in multiple\n                        sources, the value associated with the last source will take\n                        precedence. Values defined by an Env with a duplicate key\n                        will take precedence. Cannot be updated.\n                      items:\n                        description: EnvFromSource represents the source of a set\n                          of ConfigMaps\n                        properties:\n                          configMapRef:\n                            description: The ConfigMap to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap must be\n                                  defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          prefix:\n                            description: An optional identifier to prepend to each\n                              key in the ConfigMap. Must be a C_IDENTIFIER.\n                            type: string\n                          secretRef:\n                            description: The Secret to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      type: array\n                    image:\n                      description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images\n                        This field is optional to allow higher level config management\n                        to default or override container images in workload controllers\n                        like Deployments and StatefulSets.'\n                      type: string\n                    imagePullPolicy:\n                      description: 'Image pull policy. One of Always, Never, IfNotPresent.\n                        Defaults to Always if :latest tag is specified, or IfNotPresent\n                        otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images'\n                      type: string\n                    lifecycle:\n                      description: Actions that the management system should take\n                        in response to container lifecycle events. Cannot be updated.\n                      properties:\n                        postStart:\n                          description: 'PostStart is called immediately after a container\n                            is created. If the handler fails, the container is terminated\n                            and restarted according to its restart policy. Other management\n                            of the container blocks until the hook completes. More\n                            info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute\n                                    inside the container, the working directory for\n                                    the command  is root ('/') in the container's\n                                    filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions\n                                    ('|', etc) won't work. To use a shell, you need\n                                    to explicitly call out to that shell. Exit status\n                                    of 0 is treated as live/healthy and non-zero is\n                                    unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to\n                                    the pod IP. You probably want to set \"Host\" in\n                                    httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request.\n                                    HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header\n                                      to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will\n                                          be canonicalized upon output, so case-variant\n                                          names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the\n                                    host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported\n                                as a LifecycleHandler and kept for the backward compatibility.\n                                There are no validation of this field and lifecycle\n                                hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to,\n                                    defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                        preStop:\n                          description: 'PreStop is called immediately before a container\n                            is terminated due to an API request or management event\n                            such as liveness/startup probe failure, preemption, resource\n                            contention, etc. The handler is not called if the container\n                            crashes or exits. The Pod''s termination grace period\n                            countdown begins before the PreStop hook is executed.\n                            Regardless of the outcome of the handler, the container\n                            will eventually terminate within the Pod''s termination\n                            grace period (unless delayed by finalizers). Other management\n                            of the container blocks until the hook completes or until\n                            the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute\n                                    inside the container, the working directory for\n                                    the command  is root ('/') in the container's\n                                    filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions\n                                    ('|', etc) won't work. To use a shell, you need\n                                    to explicitly call out to that shell. Exit status\n                                    of 0 is treated as live/healthy and non-zero is\n                                    unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to\n                                    the pod IP. You probably want to set \"Host\" in\n                                    httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request.\n                                    HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header\n                                      to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will\n                                          be canonicalized upon output, so case-variant\n                                          names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the\n                                    host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported\n                                as a LifecycleHandler and kept for the backward compatibility.\n                                There are no validation of this field and lifecycle\n                                hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to,\n                                    defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                      type: object\n                    livenessProbe:\n                      description: 'Periodic probe of container liveness. Container\n                        will be restarted if the probe fails. Cannot be updated. More\n                        info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    name:\n                      description: Name of the container specified as a DNS_LABEL.\n                        Each container in a pod must have a unique name (DNS_LABEL).\n                        Cannot be updated.\n                      type: string\n                    ports:\n                      description: List of ports to expose from the container. Not\n                        specifying a port here DOES NOT prevent that port from being\n                        exposed. Any port which is listening on the default \"0.0.0.0\"\n                        address inside a container will be accessible from the network.\n                        Modifying this array with strategic merge patch may corrupt\n                        the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255.\n                        Cannot be updated.\n                      items:\n                        description: ContainerPort represents a network port in a\n                          single container.\n                        properties:\n                          containerPort:\n                            description: Number of port to expose on the pod's IP\n                              address. This must be a valid port number, 0 < x < 65536.\n                            format: int32\n                            type: integer\n                          hostIP:\n                            description: What host IP to bind the external port to.\n                            type: string\n                          hostPort:\n                            description: Number of port to expose on the host. If\n                              specified, this must be a valid port number, 0 < x <\n                              65536. If HostNetwork is specified, this must match\n                              ContainerPort. Most containers do not need this.\n                            format: int32\n                            type: integer\n                          name:\n                            description: If specified, this must be an IANA_SVC_NAME\n                              and unique within the pod. Each named port in a pod\n                              must have a unique name. Name for the port that can\n                              be referred to by services.\n                            type: string\n                          protocol:\n                            default: TCP\n                            description: Protocol for port. Must be UDP, TCP, or SCTP.\n                              Defaults to \"TCP\".\n                            type: string\n                        required:\n                        - containerPort\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - containerPort\n                      - protocol\n                      x-kubernetes-list-type: map\n                    readinessProbe:\n                      description: 'Periodic probe of container service readiness.\n                        Container will be removed from service endpoints if the probe\n                        fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    resizePolicy:\n                      description: Resources resize policy for the container.\n                      items:\n                        description: ContainerResizePolicy represents resource resize\n                          policy for the container.\n                        properties:\n                          resourceName:\n                            description: 'Name of the resource to which this resource\n                              resize policy applies. Supported values: cpu, memory.'\n                            type: string\n                          restartPolicy:\n                            description: Restart policy to apply when specified resource\n                              is resized. If not specified, it defaults to NotRequired.\n                            type: string\n                        required:\n                        - resourceName\n                        - restartPolicy\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    resources:\n                      description: 'Compute Resources required by this container.\n                        Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                      properties:\n                        claims:\n                          description: \"Claims lists the names of resources, defined\n                            in spec.resourceClaims, that are used by this container.\n                            \\n This is an alpha field and requires enabling the DynamicResourceAllocation\n                            feature gate. \\n This field is immutable. It can only\n                            be set for containers.\"\n                          items:\n                            description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                            properties:\n                              name:\n                                description: Name must match the name of one entry\n                                  in pod.spec.resourceClaims of the Pod where this\n                                  field is used. It makes that resource available\n                                  inside a container.\n                                type: string\n                            required:\n                            - name\n                            type: object\n                          type: array\n                          x-kubernetes-list-map-keys:\n                          - name\n                          x-kubernetes-list-type: map\n                        limits:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Limits describes the maximum amount of compute\n                            resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                        requests:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Requests describes the minimum amount of compute\n                            resources required. If Requests is omitted for a container,\n                            it defaults to Limits if that is explicitly specified,\n                            otherwise to an implementation-defined value. Requests\n                            cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                      type: object\n                    securityContext:\n                      description: 'SecurityContext defines the security options the\n                        container should be run with. If set, the fields of SecurityContext\n                        override the equivalent fields of PodSecurityContext. More\n                        info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/'\n                      properties:\n                        allowPrivilegeEscalation:\n                          description: 'AllowPrivilegeEscalation controls whether\n                            a process can gain more privileges than its parent process.\n                            This bool directly controls if the no_new_privs flag will\n                            be set on the container process. AllowPrivilegeEscalation\n                            is true always when the container is: 1) run as Privileged\n                            2) has CAP_SYS_ADMIN Note that this field cannot be set\n                            when spec.os.name is windows.'\n                          type: boolean\n                        capabilities:\n                          description: The capabilities to add/drop when running containers.\n                            Defaults to the default set of capabilities granted by\n                            the container runtime. Note that this field cannot be\n                            set when spec.os.name is windows.\n                          properties:\n                            add:\n                              description: Added capabilities\n                              items:\n                                description: Capability represent POSIX capabilities\n                                  type\n                                type: string\n                              type: array\n                            drop:\n                              description: Removed capabilities\n                              items:\n                                description: Capability represent POSIX capabilities\n                                  type\n                                type: string\n                              type: array\n                          type: object\n                        privileged:\n                          description: Run container in privileged mode. Processes\n                            in privileged containers are essentially equivalent to\n                            root on the host. Defaults to false. Note that this field\n                            cannot be set when spec.os.name is windows.\n                          type: boolean\n                        procMount:\n                          description: procMount denotes the type of proc mount to\n                            use for the containers. The default is DefaultProcMount\n                            which uses the container runtime defaults for readonly\n                            paths and masked paths. This requires the ProcMountType\n                            feature flag to be enabled. Note that this field cannot\n                            be set when spec.os.name is windows.\n                          type: string\n                        readOnlyRootFilesystem:\n                          description: Whether this container has a read-only root\n                            filesystem. Default is false. Note that this field cannot\n                            be set when spec.os.name is windows.\n                          type: boolean\n                        runAsGroup:\n                          description: The GID to run the entrypoint of the container\n                            process. Uses runtime default if unset. May also be set\n                            in PodSecurityContext.  If set in both SecurityContext\n                            and PodSecurityContext, the value specified in SecurityContext\n                            takes precedence. Note that this field cannot be set when\n                            spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        runAsNonRoot:\n                          description: Indicates that the container must run as a\n                            non-root user. If true, the Kubelet will validate the\n                            image at runtime to ensure that it does not run as UID\n                            0 (root) and fail to start the container if it does. If\n                            unset or false, no such validation will be performed.\n                            May also be set in PodSecurityContext.  If set in both\n                            SecurityContext and PodSecurityContext, the value specified\n                            in SecurityContext takes precedence.\n                          type: boolean\n                        runAsUser:\n                          description: The UID to run the entrypoint of the container\n                            process. Defaults to user specified in image metadata\n                            if unspecified. May also be set in PodSecurityContext.  If\n                            set in both SecurityContext and PodSecurityContext, the\n                            value specified in SecurityContext takes precedence. Note\n                            that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        seLinuxOptions:\n                          description: The SELinux context to be applied to the container.\n                            If unspecified, the container runtime will allocate a\n                            random SELinux context for each container.  May also be\n                            set in PodSecurityContext.  If set in both SecurityContext\n                            and PodSecurityContext, the value specified in SecurityContext\n                            takes precedence. Note that this field cannot be set when\n                            spec.os.name is windows.\n                          properties:\n                            level:\n                              description: Level is SELinux level label that applies\n                                to the container.\n                              type: string\n                            role:\n                              description: Role is a SELinux role label that applies\n                                to the container.\n                              type: string\n                            type:\n                              description: Type is a SELinux type label that applies\n                                to the container.\n                              type: string\n                            user:\n                              description: User is a SELinux user label that applies\n                                to the container.\n                              type: string\n                          type: object\n                        seccompProfile:\n                          description: The seccomp options to use by this container.\n                            If seccomp options are provided at both the pod & container\n                            level, the container options override the pod options.\n                            Note that this field cannot be set when spec.os.name is\n                            windows.\n                          properties:\n                            localhostProfile:\n                              description: localhostProfile indicates a profile defined\n                                in a file on the node should be used. The profile\n                                must be preconfigured on the node to work. Must be\n                                a descending path, relative to the kubelet's configured\n                                seccomp profile location. Must only be set if type\n                                is \"Localhost\".\n                              type: string\n                            type:\n                              description: \"type indicates which kind of seccomp profile\n                                will be applied. Valid options are: \\n Localhost -\n                                a profile defined in a file on the node should be\n                                used. RuntimeDefault - the container runtime default\n                                profile should be used. Unconfined - no profile should\n                                be applied.\"\n                              type: string\n                          required:\n                          - type\n                          type: object\n                        windowsOptions:\n                          description: The Windows specific settings applied to all\n                            containers. If unspecified, the options from the PodSecurityContext\n                            will be used. If set in both SecurityContext and PodSecurityContext,\n                            the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is\n                            linux.\n                          properties:\n                            gmsaCredentialSpec:\n                              description: GMSACredentialSpec is where the GMSA admission\n                                webhook (https://github.com/kubernetes-sigs/windows-gmsa)\n                                inlines the contents of the GMSA credential spec named\n                                by the GMSACredentialSpecName field.\n                              type: string\n                            gmsaCredentialSpecName:\n                              description: GMSACredentialSpecName is the name of the\n                                GMSA credential spec to use.\n                              type: string\n                            hostProcess:\n                              description: HostProcess determines if a container should\n                                be run as a 'Host Process' container. This field is\n                                alpha-level and will only be honored by components\n                                that enable the WindowsHostProcessContainers feature\n                                flag. Setting this field without the feature flag\n                                will result in errors when validating the Pod. All\n                                of a Pod's containers must have the same effective\n                                HostProcess value (it is not allowed to have a mix\n                                of HostProcess containers and non-HostProcess containers).  In\n                                addition, if HostProcess is true then HostNetwork\n                                must also be set to true.\n                              type: boolean\n                            runAsUserName:\n                              description: The UserName in Windows to run the entrypoint\n                                of the container process. Defaults to the user specified\n                                in image metadata if unspecified. May also be set\n                                in PodSecurityContext. If set in both SecurityContext\n                                and PodSecurityContext, the value specified in SecurityContext\n                                takes precedence.\n                              type: string\n                          type: object\n                      type: object\n                    startupProbe:\n                      description: 'StartupProbe indicates that the Pod has successfully\n                        initialized. If specified, no other probes are executed until\n                        this completes successfully. If this probe fails, the Pod\n                        will be restarted, just as if the livenessProbe failed. This\n                        can be used to provide different probe parameters at the beginning\n                        of a Pod''s lifecycle, when it might take a long time to load\n                        data or warm a cache, than during steady-state operation.\n                        This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    stdin:\n                      description: Whether this container should allocate a buffer\n                        for stdin in the container runtime. If this is not set, reads\n                        from stdin in the container will always result in EOF. Default\n                        is false.\n                      type: boolean\n                    stdinOnce:\n                      description: Whether the container runtime should close the\n                        stdin channel after it has been opened by a single attach.\n                        When stdin is true the stdin stream will remain open across\n                        multiple attach sessions. If stdinOnce is set to true, stdin\n                        is opened on container start, is empty until the first client\n                        attaches to stdin, and then remains open and accepts data\n                        until the client disconnects, at which time stdin is closed\n                        and remains closed until the container is restarted. If this\n                        flag is false, a container processes that reads from stdin\n                        will never receive an EOF. Default is false\n                      type: boolean\n                    terminationMessagePath:\n                      description: 'Optional: Path at which the file to which the\n                        container''s termination message will be written is mounted\n                        into the container''s filesystem. Message written is intended\n                        to be brief final status, such as an assertion failure message.\n                        Will be truncated by the node if greater than 4096 bytes.\n                        The total message length across all containers will be limited\n                        to 12kb. Defaults to /dev/termination-log. Cannot be updated.'\n                      type: string\n                    terminationMessagePolicy:\n                      description: Indicate how the termination message should be\n                        populated. File will use the contents of terminationMessagePath\n                        to populate the container status message on both success and\n                        failure. FallbackToLogsOnError will use the last chunk of\n                        container log output if the termination message file is empty\n                        and the container exited with an error. The log output is\n                        limited to 2048 bytes or 80 lines, whichever is smaller. Defaults\n                        to File. Cannot be updated.\n                      type: string\n                    tty:\n                      description: Whether this container should allocate a TTY for\n                        itself, also requires 'stdin' to be true. Default is false.\n                      type: boolean\n                    volumeDevices:\n                      description: volumeDevices is the list of block devices to be\n                        used by the container.\n                      items:\n                        description: volumeDevice describes a mapping of a raw block\n                          device within a container.\n                        properties:\n                          devicePath:\n                            description: devicePath is the path inside of the container\n                              that the device will be mapped to.\n                            type: string\n                          name:\n                            description: name must match the name of a persistentVolumeClaim\n                              in the pod\n                            type: string\n                        required:\n                        - devicePath\n                        - name\n                        type: object\n                      type: array\n                    volumeMounts:\n                      description: Pod volumes to mount into the container's filesystem.\n                        Cannot be updated.\n                      items:\n                        description: VolumeMount describes a mounting of a Volume\n                          within a container.\n                        properties:\n                          mountPath:\n                            description: Path within the container at which the volume\n                              should be mounted.  Must not contain ':'.\n                            type: string\n                          mountPropagation:\n                            description: mountPropagation determines how mounts are\n                              propagated from the host to container and the other\n                              way around. When not set, MountPropagationNone is used.\n                              This field is beta in 1.10.\n                            type: string\n                          name:\n                            description: This must match the Name of a Volume.\n                            type: string\n                          readOnly:\n                            description: Mounted read-only if true, read-write otherwise\n                              (false or unspecified). Defaults to false.\n                            type: boolean\n                          subPath:\n                            description: Path within the volume from which the container's\n                              volume should be mounted. Defaults to \"\" (volume's root).\n                            type: string\n                          subPathExpr:\n                            description: Expanded path within the volume from which\n                              the container's volume should be mounted. Behaves similarly\n                              to SubPath but environment variable references $(VAR_NAME)\n                              are expanded using the container's environment. Defaults\n                              to \"\" (volume's root). SubPathExpr and SubPath are mutually\n                              exclusive.\n                            type: string\n                        required:\n                        - mountPath\n                        - name\n                        type: object\n                      type: array\n                    workingDir:\n                      description: Container's working directory. If not specified,\n                        the container runtime's default will be used, which might\n                        be configured in the container image. Cannot be updated.\n                      type: string\n                  required:\n                  - name\n                  type: object\n                type: array\n              enforcedNamespaceLabel:\n                description: EnforcedNamespaceLabel enforces adding a namespace label\n                  of origin for each alert and metric that is user created. The label\n                  value will always be the namespace of the object that is being created.\n                type: string\n              evaluationInterval:\n                default: 15s\n                description: Interval between consecutive evaluations.\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              excludedFromEnforcement:\n                description: List of references to PrometheusRule objects to be excluded\n                  from enforcing a namespace label of origin. Applies only if enforcedNamespaceLabel\n                  set to true.\n                items:\n                  description: ObjectReference references a PodMonitor, ServiceMonitor,\n                    Probe or PrometheusRule object.\n                  properties:\n                    group:\n                      default: monitoring.coreos.com\n                      description: Group of the referent. When not specified, it defaults\n                        to `monitoring.coreos.com`\n                      enum:\n                      - monitoring.coreos.com\n                      type: string\n                    name:\n                      description: Name of the referent. When not set, all resources\n                        in the namespace are matched.\n                      type: string\n                    namespace:\n                      description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'\n                      minLength: 1\n                      type: string\n                    resource:\n                      description: Resource of the referent.\n                      enum:\n                      - prometheusrules\n                      - servicemonitors\n                      - podmonitors\n                      - probes\n                      type: string\n                  required:\n                  - namespace\n                  - resource\n                  type: object\n                type: array\n              externalPrefix:\n                description: The external URL the Thanos Ruler instances will be available\n                  under. This is necessary to generate correct URLs. This is necessary\n                  if Thanos Ruler is not served from root of a DNS name.\n                type: string\n              grpcServerTlsConfig:\n                description: 'GRPCServerTLSConfig configures the gRPC server from\n                  which Thanos Querier reads recorded rule data. Note: Currently only\n                  the CAFile, CertFile, and KeyFile fields are supported. Maps to\n                  the ''--grpc-server-tls-*'' CLI args.'\n                properties:\n                  ca:\n                    description: Certificate authority used when verifying server\n                      certificates.\n                    properties:\n                      configMap:\n                        description: ConfigMap containing data to use for the targets.\n                        properties:\n                          key:\n                            description: The key to select.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the ConfigMap or its key\n                              must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      secret:\n                        description: Secret containing data to use for the targets.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must\n                              be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must\n                              be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  caFile:\n                    description: Path to the CA cert in the Prometheus container to\n                      use for the targets.\n                    type: string\n                  cert:\n                    description: Client certificate to present when doing client-authentication.\n                    properties:\n                      configMap:\n                        description: ConfigMap containing data to use for the targets.\n                        properties:\n                          key:\n                            description: The key to select.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the ConfigMap or its key\n                              must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      secret:\n                        description: Secret containing data to use for the targets.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must\n                              be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                              TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must\n                              be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  certFile:\n                    description: Path to the client cert file in the Prometheus container\n                      for the targets.\n                    type: string\n                  insecureSkipVerify:\n                    description: Disable target certificate validation.\n                    type: boolean\n                  keyFile:\n                    description: Path to the client key file in the Prometheus container\n                      for the targets.\n                    type: string\n                  keySecret:\n                    description: Secret containing the client key file for the targets.\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be\n                          a valid secret key.\n                        type: string\n                      name:\n                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                          TODO: Add other useful fields. apiVersion, kind, uid?'\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be\n                          defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                  serverName:\n                    description: Used to verify the hostname for the targets.\n                    type: string\n                type: object\n              hostAliases:\n                description: Pods' hostAliases configuration\n                items:\n                  description: HostAlias holds the mapping between IP and hostnames\n                    that will be injected as an entry in the pod's hosts file.\n                  properties:\n                    hostnames:\n                      description: Hostnames for the above IP address.\n                      items:\n                        type: string\n                      type: array\n                    ip:\n                      description: IP address of the host file entry.\n                      type: string\n                  required:\n                  - hostnames\n                  - ip\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - ip\n                x-kubernetes-list-type: map\n              image:\n                description: Thanos container image URL.\n                type: string\n              imagePullPolicy:\n                description: Image pull policy for the 'thanos', 'init-config-reloader'\n                  and 'config-reloader' containers. See https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy\n                  for more details.\n                enum:\n                - \"\"\n                - Always\n                - Never\n                - IfNotPresent\n                type: string\n              imagePullSecrets:\n                description: An optional list of references to secrets in the same\n                  namespace to use for pulling thanos images from registries see http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod\n                items:\n                  description: LocalObjectReference contains enough information to\n                    let you locate the referenced object inside the same namespace.\n                  properties:\n                    name:\n                      description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                        TODO: Add other useful fields. apiVersion, kind, uid?'\n                      type: string\n                  type: object\n                  x-kubernetes-map-type: atomic\n                type: array\n              initContainers:\n                description: 'InitContainers allows adding initContainers to the pod\n                  definition. Those can be used to e.g. fetch secrets for injection\n                  into the ThanosRuler configuration from external sources. Any errors\n                  during the execution of an initContainer will lead to a restart\n                  of the Pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n                  Using initContainers for any use case other then secret fetching\n                  is entirely outside the scope of what the maintainers will support\n                  and by doing so, you accept that this behaviour may break at any\n                  time without notice.'\n                items:\n                  description: A single application container that you want to run\n                    within a pod.\n                  properties:\n                    args:\n                      description: 'Arguments to the entrypoint. The container image''s\n                        CMD is used if this is not provided. Variable references $(VAR_NAME)\n                        are expanded using the container''s environment. If a variable\n                        cannot be resolved, the reference in the input string will\n                        be unchanged. Double $$ are reduced to a single $, which allows\n                        for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\n                        produce the string literal \"$(VAR_NAME)\". Escaped references\n                        will never be expanded, regardless of whether the variable\n                        exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    command:\n                      description: 'Entrypoint array. Not executed within a shell.\n                        The container image''s ENTRYPOINT is used if this is not provided.\n                        Variable references $(VAR_NAME) are expanded using the container''s\n                        environment. If a variable cannot be resolved, the reference\n                        in the input string will be unchanged. Double $$ are reduced\n                        to a single $, which allows for escaping the $(VAR_NAME) syntax:\n                        i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\".\n                        Escaped references will never be expanded, regardless of whether\n                        the variable exists or not. Cannot be updated. More info:\n                        https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    env:\n                      description: List of environment variables to set in the container.\n                        Cannot be updated.\n                      items:\n                        description: EnvVar represents an environment variable present\n                          in a Container.\n                        properties:\n                          name:\n                            description: Name of the environment variable. Must be\n                              a C_IDENTIFIER.\n                            type: string\n                          value:\n                            description: 'Variable references $(VAR_NAME) are expanded\n                              using the previously defined environment variables in\n                              the container and any service environment variables.\n                              If a variable cannot be resolved, the reference in the\n                              input string will be unchanged. Double $$ are reduced\n                              to a single $, which allows for escaping the $(VAR_NAME)\n                              syntax: i.e. \"$$(VAR_NAME)\" will produce the string\n                              literal \"$(VAR_NAME)\". Escaped references will never\n                              be expanded, regardless of whether the variable exists\n                              or not. Defaults to \"\".'\n                            type: string\n                          valueFrom:\n                            description: Source for the environment variable's value.\n                              Cannot be used if value is not empty.\n                            properties:\n                              configMapKeyRef:\n                                description: Selects a key of a ConfigMap.\n                                properties:\n                                  key:\n                                    description: The key to select.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the ConfigMap or\n                                      its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              fieldRef:\n                                description: 'Selects a field of the pod: supports\n                                  metadata.name, metadata.namespace, `metadata.labels[''<KEY>'']`,\n                                  `metadata.annotations[''<KEY>'']`, spec.nodeName,\n                                  spec.serviceAccountName, status.hostIP, status.podIP,\n                                  status.podIPs.'\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath\n                                      is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the\n                                      specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              resourceFieldRef:\n                                description: 'Selects a resource of the container:\n                                  only resources limits and requests (limits.cpu,\n                                  limits.memory, limits.ephemeral-storage, requests.cpu,\n                                  requests.memory and requests.ephemeral-storage)\n                                  are currently supported.'\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes,\n                                      optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the\n                                      exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              secretKeyRef:\n                                description: Selects a key of a secret in the pod's\n                                  namespace\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must\n                                      be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its\n                                      key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            type: object\n                        required:\n                        - name\n                        type: object\n                      type: array\n                    envFrom:\n                      description: List of sources to populate environment variables\n                        in the container. The keys defined within a source must be\n                        a C_IDENTIFIER. All invalid keys will be reported as an event\n                        when the container is starting. When a key exists in multiple\n                        sources, the value associated with the last source will take\n                        precedence. Values defined by an Env with a duplicate key\n                        will take precedence. Cannot be updated.\n                      items:\n                        description: EnvFromSource represents the source of a set\n                          of ConfigMaps\n                        properties:\n                          configMapRef:\n                            description: The ConfigMap to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap must be\n                                  defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          prefix:\n                            description: An optional identifier to prepend to each\n                              key in the ConfigMap. Must be a C_IDENTIFIER.\n                            type: string\n                          secretRef:\n                            description: The Secret to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                  TODO: Add other useful fields. apiVersion, kind,\n                                  uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      type: array\n                    image:\n                      description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images\n                        This field is optional to allow higher level config management\n                        to default or override container images in workload controllers\n                        like Deployments and StatefulSets.'\n                      type: string\n                    imagePullPolicy:\n                      description: 'Image pull policy. One of Always, Never, IfNotPresent.\n                        Defaults to Always if :latest tag is specified, or IfNotPresent\n                        otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images'\n                      type: string\n                    lifecycle:\n                      description: Actions that the management system should take\n                        in response to container lifecycle events. Cannot be updated.\n                      properties:\n                        postStart:\n                          description: 'PostStart is called immediately after a container\n                            is created. If the handler fails, the container is terminated\n                            and restarted according to its restart policy. Other management\n                            of the container blocks until the hook completes. More\n                            info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute\n                                    inside the container, the working directory for\n                                    the command  is root ('/') in the container's\n                                    filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions\n                                    ('|', etc) won't work. To use a shell, you need\n                                    to explicitly call out to that shell. Exit status\n                                    of 0 is treated as live/healthy and non-zero is\n                                    unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to\n                                    the pod IP. You probably want to set \"Host\" in\n                                    httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request.\n                                    HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header\n                                      to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will\n                                          be canonicalized upon output, so case-variant\n                                          names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the\n                                    host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported\n                                as a LifecycleHandler and kept for the backward compatibility.\n                                There are no validation of this field and lifecycle\n                                hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to,\n                                    defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                        preStop:\n                          description: 'PreStop is called immediately before a container\n                            is terminated due to an API request or management event\n                            such as liveness/startup probe failure, preemption, resource\n                            contention, etc. The handler is not called if the container\n                            crashes or exits. The Pod''s termination grace period\n                            countdown begins before the PreStop hook is executed.\n                            Regardless of the outcome of the handler, the container\n                            will eventually terminate within the Pod''s termination\n                            grace period (unless delayed by finalizers). Other management\n                            of the container blocks until the hook completes or until\n                            the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute\n                                    inside the container, the working directory for\n                                    the command  is root ('/') in the container's\n                                    filesystem. The command is simply exec'd, it is\n                                    not run inside a shell, so traditional shell instructions\n                                    ('|', etc) won't work. To use a shell, you need\n                                    to explicitly call out to that shell. Exit status\n                                    of 0 is treated as live/healthy and non-zero is\n                                    unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to\n                                    the pod IP. You probably want to set \"Host\" in\n                                    httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request.\n                                    HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header\n                                      to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will\n                                          be canonicalized upon output, so case-variant\n                                          names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the\n                                    host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported\n                                as a LifecycleHandler and kept for the backward compatibility.\n                                There are no validation of this field and lifecycle\n                                hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to,\n                                    defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access\n                                    on the container. Number must be in the range\n                                    1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                      type: object\n                    livenessProbe:\n                      description: 'Periodic probe of container liveness. Container\n                        will be restarted if the probe fails. Cannot be updated. More\n                        info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    name:\n                      description: Name of the container specified as a DNS_LABEL.\n                        Each container in a pod must have a unique name (DNS_LABEL).\n                        Cannot be updated.\n                      type: string\n                    ports:\n                      description: List of ports to expose from the container. Not\n                        specifying a port here DOES NOT prevent that port from being\n                        exposed. Any port which is listening on the default \"0.0.0.0\"\n                        address inside a container will be accessible from the network.\n                        Modifying this array with strategic merge patch may corrupt\n                        the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255.\n                        Cannot be updated.\n                      items:\n                        description: ContainerPort represents a network port in a\n                          single container.\n                        properties:\n                          containerPort:\n                            description: Number of port to expose on the pod's IP\n                              address. This must be a valid port number, 0 < x < 65536.\n                            format: int32\n                            type: integer\n                          hostIP:\n                            description: What host IP to bind the external port to.\n                            type: string\n                          hostPort:\n                            description: Number of port to expose on the host. If\n                              specified, this must be a valid port number, 0 < x <\n                              65536. If HostNetwork is specified, this must match\n                              ContainerPort. Most containers do not need this.\n                            format: int32\n                            type: integer\n                          name:\n                            description: If specified, this must be an IANA_SVC_NAME\n                              and unique within the pod. Each named port in a pod\n                              must have a unique name. Name for the port that can\n                              be referred to by services.\n                            type: string\n                          protocol:\n                            default: TCP\n                            description: Protocol for port. Must be UDP, TCP, or SCTP.\n                              Defaults to \"TCP\".\n                            type: string\n                        required:\n                        - containerPort\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - containerPort\n                      - protocol\n                      x-kubernetes-list-type: map\n                    readinessProbe:\n                      description: 'Periodic probe of container service readiness.\n                        Container will be removed from service endpoints if the probe\n                        fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    resizePolicy:\n                      description: Resources resize policy for the container.\n                      items:\n                        description: ContainerResizePolicy represents resource resize\n                          policy for the container.\n                        properties:\n                          resourceName:\n                            description: 'Name of the resource to which this resource\n                              resize policy applies. Supported values: cpu, memory.'\n                            type: string\n                          restartPolicy:\n                            description: Restart policy to apply when specified resource\n                              is resized. If not specified, it defaults to NotRequired.\n                            type: string\n                        required:\n                        - resourceName\n                        - restartPolicy\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    resources:\n                      description: 'Compute Resources required by this container.\n                        Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                      properties:\n                        claims:\n                          description: \"Claims lists the names of resources, defined\n                            in spec.resourceClaims, that are used by this container.\n                            \\n This is an alpha field and requires enabling the DynamicResourceAllocation\n                            feature gate. \\n This field is immutable. It can only\n                            be set for containers.\"\n                          items:\n                            description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                            properties:\n                              name:\n                                description: Name must match the name of one entry\n                                  in pod.spec.resourceClaims of the Pod where this\n                                  field is used. It makes that resource available\n                                  inside a container.\n                                type: string\n                            required:\n                            - name\n                            type: object\n                          type: array\n                          x-kubernetes-list-map-keys:\n                          - name\n                          x-kubernetes-list-type: map\n                        limits:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Limits describes the maximum amount of compute\n                            resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                        requests:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Requests describes the minimum amount of compute\n                            resources required. If Requests is omitted for a container,\n                            it defaults to Limits if that is explicitly specified,\n                            otherwise to an implementation-defined value. Requests\n                            cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                      type: object\n                    securityContext:\n                      description: 'SecurityContext defines the security options the\n                        container should be run with. If set, the fields of SecurityContext\n                        override the equivalent fields of PodSecurityContext. More\n                        info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/'\n                      properties:\n                        allowPrivilegeEscalation:\n                          description: 'AllowPrivilegeEscalation controls whether\n                            a process can gain more privileges than its parent process.\n                            This bool directly controls if the no_new_privs flag will\n                            be set on the container process. AllowPrivilegeEscalation\n                            is true always when the container is: 1) run as Privileged\n                            2) has CAP_SYS_ADMIN Note that this field cannot be set\n                            when spec.os.name is windows.'\n                          type: boolean\n                        capabilities:\n                          description: The capabilities to add/drop when running containers.\n                            Defaults to the default set of capabilities granted by\n                            the container runtime. Note that this field cannot be\n                            set when spec.os.name is windows.\n                          properties:\n                            add:\n                              description: Added capabilities\n                              items:\n                                description: Capability represent POSIX capabilities\n                                  type\n                                type: string\n                              type: array\n                            drop:\n                              description: Removed capabilities\n                              items:\n                                description: Capability represent POSIX capabilities\n                                  type\n                                type: string\n                              type: array\n                          type: object\n                        privileged:\n                          description: Run container in privileged mode. Processes\n                            in privileged containers are essentially equivalent to\n                            root on the host. Defaults to false. Note that this field\n                            cannot be set when spec.os.name is windows.\n                          type: boolean\n                        procMount:\n                          description: procMount denotes the type of proc mount to\n                            use for the containers. The default is DefaultProcMount\n                            which uses the container runtime defaults for readonly\n                            paths and masked paths. This requires the ProcMountType\n                            feature flag to be enabled. Note that this field cannot\n                            be set when spec.os.name is windows.\n                          type: string\n                        readOnlyRootFilesystem:\n                          description: Whether this container has a read-only root\n                            filesystem. Default is false. Note that this field cannot\n                            be set when spec.os.name is windows.\n                          type: boolean\n                        runAsGroup:\n                          description: The GID to run the entrypoint of the container\n                            process. Uses runtime default if unset. May also be set\n                            in PodSecurityContext.  If set in both SecurityContext\n                            and PodSecurityContext, the value specified in SecurityContext\n                            takes precedence. Note that this field cannot be set when\n                            spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        runAsNonRoot:\n                          description: Indicates that the container must run as a\n                            non-root user. If true, the Kubelet will validate the\n                            image at runtime to ensure that it does not run as UID\n                            0 (root) and fail to start the container if it does. If\n                            unset or false, no such validation will be performed.\n                            May also be set in PodSecurityContext.  If set in both\n                            SecurityContext and PodSecurityContext, the value specified\n                            in SecurityContext takes precedence.\n                          type: boolean\n                        runAsUser:\n                          description: The UID to run the entrypoint of the container\n                            process. Defaults to user specified in image metadata\n                            if unspecified. May also be set in PodSecurityContext.  If\n                            set in both SecurityContext and PodSecurityContext, the\n                            value specified in SecurityContext takes precedence. Note\n                            that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        seLinuxOptions:\n                          description: The SELinux context to be applied to the container.\n                            If unspecified, the container runtime will allocate a\n                            random SELinux context for each container.  May also be\n                            set in PodSecurityContext.  If set in both SecurityContext\n                            and PodSecurityContext, the value specified in SecurityContext\n                            takes precedence. Note that this field cannot be set when\n                            spec.os.name is windows.\n                          properties:\n                            level:\n                              description: Level is SELinux level label that applies\n                                to the container.\n                              type: string\n                            role:\n                              description: Role is a SELinux role label that applies\n                                to the container.\n                              type: string\n                            type:\n                              description: Type is a SELinux type label that applies\n                                to the container.\n                              type: string\n                            user:\n                              description: User is a SELinux user label that applies\n                                to the container.\n                              type: string\n                          type: object\n                        seccompProfile:\n                          description: The seccomp options to use by this container.\n                            If seccomp options are provided at both the pod & container\n                            level, the container options override the pod options.\n                            Note that this field cannot be set when spec.os.name is\n                            windows.\n                          properties:\n                            localhostProfile:\n                              description: localhostProfile indicates a profile defined\n                                in a file on the node should be used. The profile\n                                must be preconfigured on the node to work. Must be\n                                a descending path, relative to the kubelet's configured\n                                seccomp profile location. Must only be set if type\n                                is \"Localhost\".\n                              type: string\n                            type:\n                              description: \"type indicates which kind of seccomp profile\n                                will be applied. Valid options are: \\n Localhost -\n                                a profile defined in a file on the node should be\n                                used. RuntimeDefault - the container runtime default\n                                profile should be used. Unconfined - no profile should\n                                be applied.\"\n                              type: string\n                          required:\n                          - type\n                          type: object\n                        windowsOptions:\n                          description: The Windows specific settings applied to all\n                            containers. If unspecified, the options from the PodSecurityContext\n                            will be used. If set in both SecurityContext and PodSecurityContext,\n                            the value specified in SecurityContext takes precedence.\n                            Note that this field cannot be set when spec.os.name is\n                            linux.\n                          properties:\n                            gmsaCredentialSpec:\n                              description: GMSACredentialSpec is where the GMSA admission\n                                webhook (https://github.com/kubernetes-sigs/windows-gmsa)\n                                inlines the contents of the GMSA credential spec named\n                                by the GMSACredentialSpecName field.\n                              type: string\n                            gmsaCredentialSpecName:\n                              description: GMSACredentialSpecName is the name of the\n                                GMSA credential spec to use.\n                              type: string\n                            hostProcess:\n                              description: HostProcess determines if a container should\n                                be run as a 'Host Process' container. This field is\n                                alpha-level and will only be honored by components\n                                that enable the WindowsHostProcessContainers feature\n                                flag. Setting this field without the feature flag\n                                will result in errors when validating the Pod. All\n                                of a Pod's containers must have the same effective\n                                HostProcess value (it is not allowed to have a mix\n                                of HostProcess containers and non-HostProcess containers).  In\n                                addition, if HostProcess is true then HostNetwork\n                                must also be set to true.\n                              type: boolean\n                            runAsUserName:\n                              description: The UserName in Windows to run the entrypoint\n                                of the container process. Defaults to the user specified\n                                in image metadata if unspecified. May also be set\n                                in PodSecurityContext. If set in both SecurityContext\n                                and PodSecurityContext, the value specified in SecurityContext\n                                takes precedence.\n                              type: string\n                          type: object\n                      type: object\n                    startupProbe:\n                      description: 'StartupProbe indicates that the Pod has successfully\n                        initialized. If specified, no other probes are executed until\n                        this completes successfully. If this probe fails, the Pod\n                        will be restarted, just as if the livenessProbe failed. This\n                        can be used to provide different probe parameters at the beginning\n                        of a Pod''s lifecycle, when it might take a long time to load\n                        data or warm a cache, than during steady-state operation.\n                        This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute\n                                inside the container, the working directory for the\n                                command  is root ('/') in the container's filesystem.\n                                The command is simply exec'd, it is not run inside\n                                a shell, so traditional shell instructions ('|', etc)\n                                won't work. To use a shell, you need to explicitly\n                                call out to that shell. Exit status of 0 is treated\n                                as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe\n                            to be considered failed after having succeeded. Defaults\n                            to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number\n                                must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to\n                                place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n                                \\n If this is not specified, the default behavior\n                                is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the\n                                pod IP. You probably want to set \"Host\" in httpHeaders\n                                instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP\n                                allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header\n                                  to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will\n                                      be canonicalized upon output, so case-variant\n                                      names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host.\n                                Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has\n                            started before liveness probes are initiated. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe.\n                            Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe\n                            to be considered successful after having failed. Defaults\n                            to 1. Must be 1 for liveness and startup. Minimum value\n                            is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP\n                            port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults\n                                to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on\n                                the container. Number must be in the range 1 to 65535.\n                                Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs\n                            to terminate gracefully upon probe failure. The grace\n                            period is the duration in seconds after the processes\n                            running in the pod are sent a termination signal and the\n                            time when the processes are forcibly halted with a kill\n                            signal. Set this value longer than the expected cleanup\n                            time for your process. If this value is nil, the pod's\n                            terminationGracePeriodSeconds will be used. Otherwise,\n                            this value overrides the value provided by the pod spec.\n                            Value must be non-negative integer. The value zero indicates\n                            stop immediately via the kill signal (no opportunity to\n                            shut down). This is a beta field and requires enabling\n                            ProbeTerminationGracePeriod feature gate. Minimum value\n                            is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times\n                            out. Defaults to 1 second. Minimum value is 1. More info:\n                            https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    stdin:\n                      description: Whether this container should allocate a buffer\n                        for stdin in the container runtime. If this is not set, reads\n                        from stdin in the container will always result in EOF. Default\n                        is false.\n                      type: boolean\n                    stdinOnce:\n                      description: Whether the container runtime should close the\n                        stdin channel after it has been opened by a single attach.\n                        When stdin is true the stdin stream will remain open across\n                        multiple attach sessions. If stdinOnce is set to true, stdin\n                        is opened on container start, is empty until the first client\n                        attaches to stdin, and then remains open and accepts data\n                        until the client disconnects, at which time stdin is closed\n                        and remains closed until the container is restarted. If this\n                        flag is false, a container processes that reads from stdin\n                        will never receive an EOF. Default is false\n                      type: boolean\n                    terminationMessagePath:\n                      description: 'Optional: Path at which the file to which the\n                        container''s termination message will be written is mounted\n                        into the container''s filesystem. Message written is intended\n                        to be brief final status, such as an assertion failure message.\n                        Will be truncated by the node if greater than 4096 bytes.\n                        The total message length across all containers will be limited\n                        to 12kb. Defaults to /dev/termination-log. Cannot be updated.'\n                      type: string\n                    terminationMessagePolicy:\n                      description: Indicate how the termination message should be\n                        populated. File will use the contents of terminationMessagePath\n                        to populate the container status message on both success and\n                        failure. FallbackToLogsOnError will use the last chunk of\n                        container log output if the termination message file is empty\n                        and the container exited with an error. The log output is\n                        limited to 2048 bytes or 80 lines, whichever is smaller. Defaults\n                        to File. Cannot be updated.\n                      type: string\n                    tty:\n                      description: Whether this container should allocate a TTY for\n                        itself, also requires 'stdin' to be true. Default is false.\n                      type: boolean\n                    volumeDevices:\n                      description: volumeDevices is the list of block devices to be\n                        used by the container.\n                      items:\n                        description: volumeDevice describes a mapping of a raw block\n                          device within a container.\n                        properties:\n                          devicePath:\n                            description: devicePath is the path inside of the container\n                              that the device will be mapped to.\n                            type: string\n                          name:\n                            description: name must match the name of a persistentVolumeClaim\n                              in the pod\n                            type: string\n                        required:\n                        - devicePath\n                        - name\n                        type: object\n                      type: array\n                    volumeMounts:\n                      description: Pod volumes to mount into the container's filesystem.\n                        Cannot be updated.\n                      items:\n                        description: VolumeMount describes a mounting of a Volume\n                          within a container.\n                        properties:\n                          mountPath:\n                            description: Path within the container at which the volume\n                              should be mounted.  Must not contain ':'.\n                            type: string\n                          mountPropagation:\n                            description: mountPropagation determines how mounts are\n                              propagated from the host to container and the other\n                              way around. When not set, MountPropagationNone is used.\n                              This field is beta in 1.10.\n                            type: string\n                          name:\n                            description: This must match the Name of a Volume.\n                            type: string\n                          readOnly:\n                            description: Mounted read-only if true, read-write otherwise\n                              (false or unspecified). Defaults to false.\n                            type: boolean\n                          subPath:\n                            description: Path within the volume from which the container's\n                              volume should be mounted. Defaults to \"\" (volume's root).\n                            type: string\n                          subPathExpr:\n                            description: Expanded path within the volume from which\n                              the container's volume should be mounted. Behaves similarly\n                              to SubPath but environment variable references $(VAR_NAME)\n                              are expanded using the container's environment. Defaults\n                              to \"\" (volume's root). SubPathExpr and SubPath are mutually\n                              exclusive.\n                            type: string\n                        required:\n                        - mountPath\n                        - name\n                        type: object\n                      type: array\n                    workingDir:\n                      description: Container's working directory. If not specified,\n                        the container runtime's default will be used, which might\n                        be configured in the container image. Cannot be updated.\n                      type: string\n                  required:\n                  - name\n                  type: object\n                type: array\n              labels:\n                additionalProperties:\n                  type: string\n                description: Labels configure the external label pairs to ThanosRuler.\n                  A default replica label `thanos_ruler_replica` will be always added  as\n                  a label with the value of the pod's name and it will be dropped\n                  in the alerts.\n                type: object\n              listenLocal:\n                description: ListenLocal makes the Thanos ruler listen on loopback,\n                  so that it does not bind against the Pod IP.\n                type: boolean\n              logFormat:\n                description: Log format for ThanosRuler to be configured with.\n                enum:\n                - \"\"\n                - logfmt\n                - json\n                type: string\n              logLevel:\n                description: Log level for ThanosRuler to be configured with.\n                enum:\n                - \"\"\n                - debug\n                - info\n                - warn\n                - error\n                type: string\n              minReadySeconds:\n                description: Minimum number of seconds for which a newly created pod\n                  should be ready without any of its container crashing for it to\n                  be considered available. Defaults to 0 (pod will be considered available\n                  as soon as it is ready) This is an alpha field from kubernetes 1.22\n                  until 1.24 which requires enabling the StatefulSetMinReadySeconds\n                  feature gate.\n                format: int32\n                type: integer\n              nodeSelector:\n                additionalProperties:\n                  type: string\n                description: Define which Nodes the Pods are scheduled on.\n                type: object\n              objectStorageConfig:\n                description: ObjectStorageConfig configures object storage in Thanos.\n                  Alternative to ObjectStorageConfigFile, and lower order priority.\n                properties:\n                  key:\n                    description: The key of the secret to select from.  Must be a\n                      valid secret key.\n                    type: string\n                  name:\n                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                      TODO: Add other useful fields. apiVersion, kind, uid?'\n                    type: string\n                  optional:\n                    description: Specify whether the Secret or its key must be defined\n                    type: boolean\n                required:\n                - key\n                type: object\n                x-kubernetes-map-type: atomic\n              objectStorageConfigFile:\n                description: ObjectStorageConfigFile specifies the path of the object\n                  storage configuration file. When used alongside with ObjectStorageConfig,\n                  ObjectStorageConfigFile takes precedence.\n                type: string\n              paused:\n                description: When a ThanosRuler deployment is paused, no actions except\n                  for deletion will be performed on the underlying objects.\n                type: boolean\n              podMetadata:\n                description: PodMetadata contains Labels and Annotations gets propagated\n                  to the thanos ruler pods.\n                properties:\n                  annotations:\n                    additionalProperties:\n                      type: string\n                    description: 'Annotations is an unstructured key value map stored\n                      with a resource that may be set by external tools to store and\n                      retrieve arbitrary metadata. They are not queryable and should\n                      be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations'\n                    type: object\n                  labels:\n                    additionalProperties:\n                      type: string\n                    description: 'Map of string keys and values that can be used to\n                      organize and categorize (scope and select) objects. May match\n                      selectors of replication controllers and services. More info:\n                      http://kubernetes.io/docs/user-guide/labels'\n                    type: object\n                  name:\n                    description: 'Name must be unique within a namespace. Is required\n                      when creating resources, although some resources may allow a\n                      client to request the generation of an appropriate name automatically.\n                      Name is primarily intended for creation idempotence and configuration\n                      definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names'\n                    type: string\n                type: object\n              portName:\n                default: web\n                description: Port name used for the pods and governing service. Defaults\n                  to `web`.\n                type: string\n              priorityClassName:\n                description: Priority class assigned to the Pods\n                type: string\n              prometheusRulesExcludedFromEnforce:\n                description: 'PrometheusRulesExcludedFromEnforce - list of Prometheus\n                  rules to be excluded from enforcing of adding namespace labels.\n                  Works only if enforcedNamespaceLabel set to true. Make sure both\n                  ruleNamespace and ruleName are set for each pair Deprecated: use\n                  excludedFromEnforcement instead.'\n                items:\n                  description: PrometheusRuleExcludeConfig enables users to configure\n                    excluded PrometheusRule names and their namespaces to be ignored\n                    while enforcing namespace label for alerts and metrics.\n                  properties:\n                    ruleName:\n                      description: Name of the excluded PrometheusRule object.\n                      type: string\n                    ruleNamespace:\n                      description: Namespace of the excluded PrometheusRule object.\n                      type: string\n                  required:\n                  - ruleName\n                  - ruleNamespace\n                  type: object\n                type: array\n              queryConfig:\n                description: Define configuration for connecting to thanos query instances.\n                  If this is defined, the QueryEndpoints field will be ignored. Maps\n                  to the `query.config` CLI argument. Only available with thanos v0.11.0\n                  and higher.\n                properties:\n                  key:\n                    description: The key of the secret to select from.  Must be a\n                      valid secret key.\n                    type: string\n                  name:\n                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                      TODO: Add other useful fields. apiVersion, kind, uid?'\n                    type: string\n                  optional:\n                    description: Specify whether the Secret or its key must be defined\n                    type: boolean\n                required:\n                - key\n                type: object\n                x-kubernetes-map-type: atomic\n              queryEndpoints:\n                description: QueryEndpoints defines Thanos querier endpoints from\n                  which to query metrics. Maps to the --query flag of thanos ruler.\n                items:\n                  type: string\n                type: array\n              replicas:\n                description: Number of thanos ruler instances to deploy.\n                format: int32\n                type: integer\n              resources:\n                description: Resources defines the resource requirements for single\n                  Pods. If not provided, no requests/limits will be set\n                properties:\n                  claims:\n                    description: \"Claims lists the names of resources, defined in\n                      spec.resourceClaims, that are used by this container. \\n This\n                      is an alpha field and requires enabling the DynamicResourceAllocation\n                      feature gate. \\n This field is immutable. It can only be set\n                      for containers.\"\n                    items:\n                      description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                      properties:\n                        name:\n                          description: Name must match the name of one entry in pod.spec.resourceClaims\n                            of the Pod where this field is used. It makes that resource\n                            available inside a container.\n                          type: string\n                      required:\n                      - name\n                      type: object\n                    type: array\n                    x-kubernetes-list-map-keys:\n                    - name\n                    x-kubernetes-list-type: map\n                  limits:\n                    additionalProperties:\n                      anyOf:\n                      - type: integer\n                      - type: string\n                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                      x-kubernetes-int-or-string: true\n                    description: 'Limits describes the maximum amount of compute resources\n                      allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                    type: object\n                  requests:\n                    additionalProperties:\n                      anyOf:\n                      - type: integer\n                      - type: string\n                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                      x-kubernetes-int-or-string: true\n                    description: 'Requests describes the minimum amount of compute\n                      resources required. If Requests is omitted for a container,\n                      it defaults to Limits if that is explicitly specified, otherwise\n                      to an implementation-defined value. Requests cannot exceed Limits.\n                      More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                    type: object\n                type: object\n              retention:\n                default: 24h\n                description: Time duration ThanosRuler shall retain data for. Default\n                  is '24h', and must match the regular expression `[0-9]+(ms|s|m|h|d|w|y)`\n                  (milliseconds seconds minutes hours days weeks years).\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              routePrefix:\n                description: The route prefix ThanosRuler registers HTTP handlers\n                  for. This allows thanos UI to be served on a sub-path.\n                type: string\n              ruleNamespaceSelector:\n                description: Namespaces to be selected for Rules discovery. If unspecified,\n                  only the same namespace as the ThanosRuler object is in is used.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              ruleSelector:\n                description: A label selector to select which PrometheusRules to mount\n                  for alerting and recording.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements.\n                      The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that\n                        contains values, a key, and an operator that relates the key\n                        and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies\n                            to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to\n                            a set of values. Valid operators are In, NotIn, Exists\n                            and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the\n                            operator is In or NotIn, the values array must be non-empty.\n                            If the operator is Exists or DoesNotExist, the values\n                            array must be empty. This array is replaced during a strategic\n                            merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single\n                      {key,value} in the matchLabels map is equivalent to an element\n                      of matchExpressions, whose key field is \"key\", the operator\n                      is \"In\", and the values array contains only \"value\". The requirements\n                      are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              securityContext:\n                description: SecurityContext holds pod-level security attributes and\n                  common container settings. This defaults to the default PodSecurityContext.\n                properties:\n                  fsGroup:\n                    description: \"A special supplemental group that applies to all\n                      containers in a pod. Some volume types allow the Kubelet to\n                      change the ownership of that volume to be owned by the pod:\n                      \\n 1. The owning GID will be the FSGroup 2. The setgid bit is\n                      set (new files created in the volume will be owned by FSGroup)\n                      3. The permission bits are OR'd with rw-rw---- \\n If unset,\n                      the Kubelet will not modify the ownership and permissions of\n                      any volume. Note that this field cannot be set when spec.os.name\n                      is windows.\"\n                    format: int64\n                    type: integer\n                  fsGroupChangePolicy:\n                    description: 'fsGroupChangePolicy defines behavior of changing\n                      ownership and permission of the volume before being exposed\n                      inside Pod. This field will only apply to volume types which\n                      support fsGroup based ownership(and permissions). It will have\n                      no effect on ephemeral volume types such as: secret, configmaps\n                      and emptydir. Valid values are \"OnRootMismatch\" and \"Always\".\n                      If not specified, \"Always\" is used. Note that this field cannot\n                      be set when spec.os.name is windows.'\n                    type: string\n                  runAsGroup:\n                    description: The GID to run the entrypoint of the container process.\n                      Uses runtime default if unset. May also be set in SecurityContext.  If\n                      set in both SecurityContext and PodSecurityContext, the value\n                      specified in SecurityContext takes precedence for that container.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    format: int64\n                    type: integer\n                  runAsNonRoot:\n                    description: Indicates that the container must run as a non-root\n                      user. If true, the Kubelet will validate the image at runtime\n                      to ensure that it does not run as UID 0 (root) and fail to start\n                      the container if it does. If unset or false, no such validation\n                      will be performed. May also be set in SecurityContext.  If set\n                      in both SecurityContext and PodSecurityContext, the value specified\n                      in SecurityContext takes precedence.\n                    type: boolean\n                  runAsUser:\n                    description: The UID to run the entrypoint of the container process.\n                      Defaults to user specified in image metadata if unspecified.\n                      May also be set in SecurityContext.  If set in both SecurityContext\n                      and PodSecurityContext, the value specified in SecurityContext\n                      takes precedence for that container. Note that this field cannot\n                      be set when spec.os.name is windows.\n                    format: int64\n                    type: integer\n                  seLinuxOptions:\n                    description: The SELinux context to be applied to all containers.\n                      If unspecified, the container runtime will allocate a random\n                      SELinux context for each container.  May also be set in SecurityContext.  If\n                      set in both SecurityContext and PodSecurityContext, the value\n                      specified in SecurityContext takes precedence for that container.\n                      Note that this field cannot be set when spec.os.name is windows.\n                    properties:\n                      level:\n                        description: Level is SELinux level label that applies to\n                          the container.\n                        type: string\n                      role:\n                        description: Role is a SELinux role label that applies to\n                          the container.\n                        type: string\n                      type:\n                        description: Type is a SELinux type label that applies to\n                          the container.\n                        type: string\n                      user:\n                        description: User is a SELinux user label that applies to\n                          the container.\n                        type: string\n                    type: object\n                  seccompProfile:\n                    description: The seccomp options to use by the containers in this\n                      pod. Note that this field cannot be set when spec.os.name is\n                      windows.\n                    properties:\n                      localhostProfile:\n                        description: localhostProfile indicates a profile defined\n                          in a file on the node should be used. The profile must be\n                          preconfigured on the node to work. Must be a descending\n                          path, relative to the kubelet's configured seccomp profile\n                          location. Must only be set if type is \"Localhost\".\n                        type: string\n                      type:\n                        description: \"type indicates which kind of seccomp profile\n                          will be applied. Valid options are: \\n Localhost - a profile\n                          defined in a file on the node should be used. RuntimeDefault\n                          - the container runtime default profile should be used.\n                          Unconfined - no profile should be applied.\"\n                        type: string\n                    required:\n                    - type\n                    type: object\n                  supplementalGroups:\n                    description: A list of groups applied to the first process run\n                      in each container, in addition to the container's primary GID,\n                      the fsGroup (if specified), and group memberships defined in\n                      the container image for the uid of the container process. If\n                      unspecified, no additional groups are added to any container.\n                      Note that group memberships defined in the container image for\n                      the uid of the container process are still effective, even if\n                      they are not included in this list. Note that this field cannot\n                      be set when spec.os.name is windows.\n                    items:\n                      format: int64\n                      type: integer\n                    type: array\n                  sysctls:\n                    description: Sysctls hold a list of namespaced sysctls used for\n                      the pod. Pods with unsupported sysctls (by the container runtime)\n                      might fail to launch. Note that this field cannot be set when\n                      spec.os.name is windows.\n                    items:\n                      description: Sysctl defines a kernel parameter to be set\n                      properties:\n                        name:\n                          description: Name of a property to set\n                          type: string\n                        value:\n                          description: Value of a property to set\n                          type: string\n                      required:\n                      - name\n                      - value\n                      type: object\n                    type: array\n                  windowsOptions:\n                    description: The Windows specific settings applied to all containers.\n                      If unspecified, the options within a container's SecurityContext\n                      will be used. If set in both SecurityContext and PodSecurityContext,\n                      the value specified in SecurityContext takes precedence. Note\n                      that this field cannot be set when spec.os.name is linux.\n                    properties:\n                      gmsaCredentialSpec:\n                        description: GMSACredentialSpec is where the GMSA admission\n                          webhook (https://github.com/kubernetes-sigs/windows-gmsa)\n                          inlines the contents of the GMSA credential spec named by\n                          the GMSACredentialSpecName field.\n                        type: string\n                      gmsaCredentialSpecName:\n                        description: GMSACredentialSpecName is the name of the GMSA\n                          credential spec to use.\n                        type: string\n                      hostProcess:\n                        description: HostProcess determines if a container should\n                          be run as a 'Host Process' container. This field is alpha-level\n                          and will only be honored by components that enable the WindowsHostProcessContainers\n                          feature flag. Setting this field without the feature flag\n                          will result in errors when validating the Pod. All of a\n                          Pod's containers must have the same effective HostProcess\n                          value (it is not allowed to have a mix of HostProcess containers\n                          and non-HostProcess containers).  In addition, if HostProcess\n                          is true then HostNetwork must also be set to true.\n                        type: boolean\n                      runAsUserName:\n                        description: The UserName in Windows to run the entrypoint\n                          of the container process. Defaults to the user specified\n                          in image metadata if unspecified. May also be set in PodSecurityContext.\n                          If set in both SecurityContext and PodSecurityContext, the\n                          value specified in SecurityContext takes precedence.\n                        type: string\n                    type: object\n                type: object\n              serviceAccountName:\n                description: ServiceAccountName is the name of the ServiceAccount\n                  to use to run the Thanos Ruler Pods.\n                type: string\n              storage:\n                description: Storage spec to specify how storage shall be used.\n                properties:\n                  disableMountSubPath:\n                    description: '*Deprecated: subPath usage will be removed in a\n                      future release.*'\n                    type: boolean\n                  emptyDir:\n                    description: 'EmptyDirVolumeSource to be used by the StatefulSet.\n                      If specified, it takes precedence over `ephemeral` and `volumeClaimTemplate`.\n                      More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir'\n                    properties:\n                      medium:\n                        description: 'medium represents what type of storage medium\n                          should back this directory. The default is \"\" which means\n                          to use the node''s default medium. Must be an empty string\n                          (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                        type: string\n                      sizeLimit:\n                        anyOf:\n                        - type: integer\n                        - type: string\n                        description: 'sizeLimit is the total amount of local storage\n                          required for this EmptyDir volume. The size limit is also\n                          applicable for memory medium. The maximum usage on memory\n                          medium EmptyDir would be the minimum value between the SizeLimit\n                          specified here and the sum of memory limits of all containers\n                          in a pod. The default is nil which means that the limit\n                          is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                        x-kubernetes-int-or-string: true\n                    type: object\n                  ephemeral:\n                    description: 'EphemeralVolumeSource to be used by the StatefulSet.\n                      This is a beta field in k8s 1.21 and GA in 1.15. For lower versions,\n                      starting with k8s 1.19, it requires enabling the GenericEphemeralVolume\n                      feature gate. More info: https://kubernetes.io/docs/concepts/storage/ephemeral-volumes/#generic-ephemeral-volumes'\n                    properties:\n                      volumeClaimTemplate:\n                        description: \"Will be used to create a stand-alone PVC to\n                          provision the volume. The pod in which this EphemeralVolumeSource\n                          is embedded will be the owner of the PVC, i.e. the PVC will\n                          be deleted together with the pod.  The name of the PVC will\n                          be `<pod name>-<volume name>` where `<volume name>` is the\n                          name from the `PodSpec.Volumes` array entry. Pod validation\n                          will reject the pod if the concatenated name is not valid\n                          for a PVC (for example, too long). \\n An existing PVC with\n                          that name that is not owned by the pod will *not* be used\n                          for the pod to avoid using an unrelated volume by mistake.\n                          Starting the pod is then blocked until the unrelated PVC\n                          is removed. If such a pre-created PVC is meant to be used\n                          by the pod, the PVC has to updated with an owner reference\n                          to the pod once the pod exists. Normally this should not\n                          be necessary, but it may be useful when manually reconstructing\n                          a broken cluster. \\n This field is read-only and no changes\n                          will be made by Kubernetes to the PVC after it has been\n                          created. \\n Required, must not be nil.\"\n                        properties:\n                          metadata:\n                            description: May contain labels and annotations that will\n                              be copied into the PVC when creating it. No other fields\n                              are allowed and will be rejected during validation.\n                            type: object\n                          spec:\n                            description: The specification for the PersistentVolumeClaim.\n                              The entire content is copied unchanged into the PVC\n                              that gets created from this template. The same fields\n                              as in a PersistentVolumeClaim are also valid here.\n                            properties:\n                              accessModes:\n                                description: 'accessModes contains the desired access\n                                  modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                                items:\n                                  type: string\n                                type: array\n                              dataSource:\n                                description: 'dataSource field can be used to specify\n                                  either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\n                                  * An existing PVC (PersistentVolumeClaim) If the\n                                  provisioner or an external controller can support\n                                  the specified data source, it will create a new\n                                  volume based on the contents of the specified data\n                                  source. When the AnyVolumeDataSource feature gate\n                                  is enabled, dataSource contents will be copied to\n                                  dataSourceRef, and dataSourceRef contents will be\n                                  copied to dataSource when dataSourceRef.namespace\n                                  is not specified. If the namespace is specified,\n                                  then dataSourceRef will not be copied to dataSource.'\n                                properties:\n                                  apiGroup:\n                                    description: APIGroup is the group for the resource\n                                      being referenced. If APIGroup is not specified,\n                                      the specified Kind must be in the core API group.\n                                      For any other third-party types, APIGroup is\n                                      required.\n                                    type: string\n                                  kind:\n                                    description: Kind is the type of resource being\n                                      referenced\n                                    type: string\n                                  name:\n                                    description: Name is the name of resource being\n                                      referenced\n                                    type: string\n                                required:\n                                - kind\n                                - name\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              dataSourceRef:\n                                description: 'dataSourceRef specifies the object from\n                                  which to populate the volume with data, if a non-empty\n                                  volume is desired. This may be any object from a\n                                  non-empty API group (non core object) or a PersistentVolumeClaim\n                                  object. When this field is specified, volume binding\n                                  will only succeed if the type of the specified object\n                                  matches some installed volume populator or dynamic\n                                  provisioner. This field will replace the functionality\n                                  of the dataSource field and as such if both fields\n                                  are non-empty, they must have the same value. For\n                                  backwards compatibility, when namespace isn''t specified\n                                  in dataSourceRef, both fields (dataSource and dataSourceRef)\n                                  will be set to the same value automatically if one\n                                  of them is empty and the other is non-empty. When\n                                  namespace is specified in dataSourceRef, dataSource\n                                  isn''t set to the same value and must be empty.\n                                  There are three important differences between dataSource\n                                  and dataSourceRef: * While dataSource only allows\n                                  two specific types of objects, dataSourceRef allows\n                                  any non-core object, as well as PersistentVolumeClaim\n                                  objects. * While dataSource ignores disallowed values\n                                  (dropping them), dataSourceRef preserves all values,\n                                  and generates an error if a disallowed value is\n                                  specified. * While dataSource only allows local\n                                  objects, dataSourceRef allows objects in any namespaces.\n                                  (Beta) Using this field requires the AnyVolumeDataSource\n                                  feature gate to be enabled. (Alpha) Using the namespace\n                                  field of dataSourceRef requires the CrossNamespaceVolumeDataSource\n                                  feature gate to be enabled.'\n                                properties:\n                                  apiGroup:\n                                    description: APIGroup is the group for the resource\n                                      being referenced. If APIGroup is not specified,\n                                      the specified Kind must be in the core API group.\n                                      For any other third-party types, APIGroup is\n                                      required.\n                                    type: string\n                                  kind:\n                                    description: Kind is the type of resource being\n                                      referenced\n                                    type: string\n                                  name:\n                                    description: Name is the name of resource being\n                                      referenced\n                                    type: string\n                                  namespace:\n                                    description: Namespace is the namespace of resource\n                                      being referenced Note that when a namespace\n                                      is specified, a gateway.networking.k8s.io/ReferenceGrant\n                                      object is required in the referent namespace\n                                      to allow that namespace's owner to accept the\n                                      reference. See the ReferenceGrant documentation\n                                      for details. (Alpha) This field requires the\n                                      CrossNamespaceVolumeDataSource feature gate\n                                      to be enabled.\n                                    type: string\n                                required:\n                                - kind\n                                - name\n                                type: object\n                              resources:\n                                description: 'resources represents the minimum resources\n                                  the volume should have. If RecoverVolumeExpansionFailure\n                                  feature is enabled users are allowed to specify\n                                  resource requirements that are lower than previous\n                                  value but must still be higher than capacity recorded\n                                  in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'\n                                properties:\n                                  claims:\n                                    description: \"Claims lists the names of resources,\n                                      defined in spec.resourceClaims, that are used\n                                      by this container. \\n This is an alpha field\n                                      and requires enabling the DynamicResourceAllocation\n                                      feature gate. \\n This field is immutable. It\n                                      can only be set for containers.\"\n                                    items:\n                                      description: ResourceClaim references one entry\n                                        in PodSpec.ResourceClaims.\n                                      properties:\n                                        name:\n                                          description: Name must match the name of\n                                            one entry in pod.spec.resourceClaims of\n                                            the Pod where this field is used. It makes\n                                            that resource available inside a container.\n                                          type: string\n                                      required:\n                                      - name\n                                      type: object\n                                    type: array\n                                    x-kubernetes-list-map-keys:\n                                    - name\n                                    x-kubernetes-list-type: map\n                                  limits:\n                                    additionalProperties:\n                                      anyOf:\n                                      - type: integer\n                                      - type: string\n                                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                      x-kubernetes-int-or-string: true\n                                    description: 'Limits describes the maximum amount\n                                      of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                    type: object\n                                  requests:\n                                    additionalProperties:\n                                      anyOf:\n                                      - type: integer\n                                      - type: string\n                                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                      x-kubernetes-int-or-string: true\n                                    description: 'Requests describes the minimum amount\n                                      of compute resources required. If Requests is\n                                      omitted for a container, it defaults to Limits\n                                      if that is explicitly specified, otherwise to\n                                      an implementation-defined value. Requests cannot\n                                      exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                    type: object\n                                type: object\n                              selector:\n                                description: selector is a label query over volumes\n                                  to consider for binding.\n                                properties:\n                                  matchExpressions:\n                                    description: matchExpressions is a list of label\n                                      selector requirements. The requirements are\n                                      ANDed.\n                                    items:\n                                      description: A label selector requirement is\n                                        a selector that contains values, a key, and\n                                        an operator that relates the key and values.\n                                      properties:\n                                        key:\n                                          description: key is the label key that the\n                                            selector applies to.\n                                          type: string\n                                        operator:\n                                          description: operator represents a key's\n                                            relationship to a set of values. Valid\n                                            operators are In, NotIn, Exists and DoesNotExist.\n                                          type: string\n                                        values:\n                                          description: values is an array of string\n                                            values. If the operator is In or NotIn,\n                                            the values array must be non-empty. If\n                                            the operator is Exists or DoesNotExist,\n                                            the values array must be empty. This array\n                                            is replaced during a strategic merge patch.\n                                          items:\n                                            type: string\n                                          type: array\n                                      required:\n                                      - key\n                                      - operator\n                                      type: object\n                                    type: array\n                                  matchLabels:\n                                    additionalProperties:\n                                      type: string\n                                    description: matchLabels is a map of {key,value}\n                                      pairs. A single {key,value} in the matchLabels\n                                      map is equivalent to an element of matchExpressions,\n                                      whose key field is \"key\", the operator is \"In\",\n                                      and the values array contains only \"value\".\n                                      The requirements are ANDed.\n                                    type: object\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              storageClassName:\n                                description: 'storageClassName is the name of the\n                                  StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'\n                                type: string\n                              volumeMode:\n                                description: volumeMode defines what type of volume\n                                  is required by the claim. Value of Filesystem is\n                                  implied when not included in claim spec.\n                                type: string\n                              volumeName:\n                                description: volumeName is the binding reference to\n                                  the PersistentVolume backing this claim.\n                                type: string\n                            type: object\n                        required:\n                        - spec\n                        type: object\n                    type: object\n                  volumeClaimTemplate:\n                    description: Defines the PVC spec to be used by the Prometheus\n                      StatefulSets. The easiest way to use a volume that cannot be\n                      automatically provisioned is to use a label selector alongside\n                      manually created PersistentVolumes.\n                    properties:\n                      apiVersion:\n                        description: 'APIVersion defines the versioned schema of this\n                          representation of an object. Servers should convert recognized\n                          schemas to the latest internal value, and may reject unrecognized\n                          values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n                        type: string\n                      kind:\n                        description: 'Kind is a string value representing the REST\n                          resource this object represents. Servers may infer this\n                          from the endpoint the client submits requests to. Cannot\n                          be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n                        type: string\n                      metadata:\n                        description: EmbeddedMetadata contains metadata relevant to\n                          an EmbeddedResource.\n                        properties:\n                          annotations:\n                            additionalProperties:\n                              type: string\n                            description: 'Annotations is an unstructured key value\n                              map stored with a resource that may be set by external\n                              tools to store and retrieve arbitrary metadata. They\n                              are not queryable and should be preserved when modifying\n                              objects. More info: http://kubernetes.io/docs/user-guide/annotations'\n                            type: object\n                          labels:\n                            additionalProperties:\n                              type: string\n                            description: 'Map of string keys and values that can be\n                              used to organize and categorize (scope and select) objects.\n                              May match selectors of replication controllers and services.\n                              More info: http://kubernetes.io/docs/user-guide/labels'\n                            type: object\n                          name:\n                            description: 'Name must be unique within a namespace.\n                              Is required when creating resources, although some resources\n                              may allow a client to request the generation of an appropriate\n                              name automatically. Name is primarily intended for creation\n                              idempotence and configuration definition. Cannot be\n                              updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names'\n                            type: string\n                        type: object\n                      spec:\n                        description: 'Defines the desired characteristics of a volume\n                          requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'\n                        properties:\n                          accessModes:\n                            description: 'accessModes contains the desired access\n                              modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                            items:\n                              type: string\n                            type: array\n                          dataSource:\n                            description: 'dataSource field can be used to specify\n                              either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\n                              * An existing PVC (PersistentVolumeClaim) If the provisioner\n                              or an external controller can support the specified\n                              data source, it will create a new volume based on the\n                              contents of the specified data source. When the AnyVolumeDataSource\n                              feature gate is enabled, dataSource contents will be\n                              copied to dataSourceRef, and dataSourceRef contents\n                              will be copied to dataSource when dataSourceRef.namespace\n                              is not specified. If the namespace is specified, then\n                              dataSourceRef will not be copied to dataSource.'\n                            properties:\n                              apiGroup:\n                                description: APIGroup is the group for the resource\n                                  being referenced. If APIGroup is not specified,\n                                  the specified Kind must be in the core API group.\n                                  For any other third-party types, APIGroup is required.\n                                type: string\n                              kind:\n                                description: Kind is the type of resource being referenced\n                                type: string\n                              name:\n                                description: Name is the name of resource being referenced\n                                type: string\n                            required:\n                            - kind\n                            - name\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          dataSourceRef:\n                            description: 'dataSourceRef specifies the object from\n                              which to populate the volume with data, if a non-empty\n                              volume is desired. This may be any object from a non-empty\n                              API group (non core object) or a PersistentVolumeClaim\n                              object. When this field is specified, volume binding\n                              will only succeed if the type of the specified object\n                              matches some installed volume populator or dynamic provisioner.\n                              This field will replace the functionality of the dataSource\n                              field and as such if both fields are non-empty, they\n                              must have the same value. For backwards compatibility,\n                              when namespace isn''t specified in dataSourceRef, both\n                              fields (dataSource and dataSourceRef) will be set to\n                              the same value automatically if one of them is empty\n                              and the other is non-empty. When namespace is specified\n                              in dataSourceRef, dataSource isn''t set to the same\n                              value and must be empty. There are three important differences\n                              between dataSource and dataSourceRef: * While dataSource\n                              only allows two specific types of objects, dataSourceRef\n                              allows any non-core object, as well as PersistentVolumeClaim\n                              objects. * While dataSource ignores disallowed values\n                              (dropping them), dataSourceRef preserves all values,\n                              and generates an error if a disallowed value is specified.\n                              * While dataSource only allows local objects, dataSourceRef\n                              allows objects in any namespaces. (Beta) Using this\n                              field requires the AnyVolumeDataSource feature gate\n                              to be enabled. (Alpha) Using the namespace field of\n                              dataSourceRef requires the CrossNamespaceVolumeDataSource\n                              feature gate to be enabled.'\n                            properties:\n                              apiGroup:\n                                description: APIGroup is the group for the resource\n                                  being referenced. If APIGroup is not specified,\n                                  the specified Kind must be in the core API group.\n                                  For any other third-party types, APIGroup is required.\n                                type: string\n                              kind:\n                                description: Kind is the type of resource being referenced\n                                type: string\n                              name:\n                                description: Name is the name of resource being referenced\n                                type: string\n                              namespace:\n                                description: Namespace is the namespace of resource\n                                  being referenced Note that when a namespace is specified,\n                                  a gateway.networking.k8s.io/ReferenceGrant object\n                                  is required in the referent namespace to allow that\n                                  namespace's owner to accept the reference. See the\n                                  ReferenceGrant documentation for details. (Alpha)\n                                  This field requires the CrossNamespaceVolumeDataSource\n                                  feature gate to be enabled.\n                                type: string\n                            required:\n                            - kind\n                            - name\n                            type: object\n                          resources:\n                            description: 'resources represents the minimum resources\n                              the volume should have. If RecoverVolumeExpansionFailure\n                              feature is enabled users are allowed to specify resource\n                              requirements that are lower than previous value but\n                              must still be higher than capacity recorded in the status\n                              field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'\n                            properties:\n                              claims:\n                                description: \"Claims lists the names of resources,\n                                  defined in spec.resourceClaims, that are used by\n                                  this container. \\n This is an alpha field and requires\n                                  enabling the DynamicResourceAllocation feature gate.\n                                  \\n This field is immutable. It can only be set for\n                                  containers.\"\n                                items:\n                                  description: ResourceClaim references one entry\n                                    in PodSpec.ResourceClaims.\n                                  properties:\n                                    name:\n                                      description: Name must match the name of one\n                                        entry in pod.spec.resourceClaims of the Pod\n                                        where this field is used. It makes that resource\n                                        available inside a container.\n                                      type: string\n                                  required:\n                                  - name\n                                  type: object\n                                type: array\n                                x-kubernetes-list-map-keys:\n                                - name\n                                x-kubernetes-list-type: map\n                              limits:\n                                additionalProperties:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                  x-kubernetes-int-or-string: true\n                                description: 'Limits describes the maximum amount\n                                  of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                type: object\n                              requests:\n                                additionalProperties:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                  x-kubernetes-int-or-string: true\n                                description: 'Requests describes the minimum amount\n                                  of compute resources required. If Requests is omitted\n                                  for a container, it defaults to Limits if that is\n                                  explicitly specified, otherwise to an implementation-defined\n                                  value. Requests cannot exceed Limits. More info:\n                                  https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                type: object\n                            type: object\n                          selector:\n                            description: selector is a label query over volumes to\n                              consider for binding.\n                            properties:\n                              matchExpressions:\n                                description: matchExpressions is a list of label selector\n                                  requirements. The requirements are ANDed.\n                                items:\n                                  description: A label selector requirement is a selector\n                                    that contains values, a key, and an operator that\n                                    relates the key and values.\n                                  properties:\n                                    key:\n                                      description: key is the label key that the selector\n                                        applies to.\n                                      type: string\n                                    operator:\n                                      description: operator represents a key's relationship\n                                        to a set of values. Valid operators are In,\n                                        NotIn, Exists and DoesNotExist.\n                                      type: string\n                                    values:\n                                      description: values is an array of string values.\n                                        If the operator is In or NotIn, the values\n                                        array must be non-empty. If the operator is\n                                        Exists or DoesNotExist, the values array must\n                                        be empty. This array is replaced during a\n                                        strategic merge patch.\n                                      items:\n                                        type: string\n                                      type: array\n                                  required:\n                                  - key\n                                  - operator\n                                  type: object\n                                type: array\n                              matchLabels:\n                                additionalProperties:\n                                  type: string\n                                description: matchLabels is a map of {key,value} pairs.\n                                  A single {key,value} in the matchLabels map is equivalent\n                                  to an element of matchExpressions, whose key field\n                                  is \"key\", the operator is \"In\", and the values array\n                                  contains only \"value\". The requirements are ANDed.\n                                type: object\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          storageClassName:\n                            description: 'storageClassName is the name of the StorageClass\n                              required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'\n                            type: string\n                          volumeMode:\n                            description: volumeMode defines what type of volume is\n                              required by the claim. Value of Filesystem is implied\n                              when not included in claim spec.\n                            type: string\n                          volumeName:\n                            description: volumeName is the binding reference to the\n                              PersistentVolume backing this claim.\n                            type: string\n                        type: object\n                      status:\n                        description: '*Deprecated: this field is never set.*'\n                        properties:\n                          accessModes:\n                            description: 'accessModes contains the actual access modes\n                              the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                            items:\n                              type: string\n                            type: array\n                          allocatedResources:\n                            additionalProperties:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                              x-kubernetes-int-or-string: true\n                            description: allocatedResources is the storage resource\n                              within AllocatedResources tracks the capacity allocated\n                              to a PVC. It may be larger than the actual capacity\n                              when a volume expansion operation is requested. For\n                              storage quota, the larger value from allocatedResources\n                              and PVC.spec.resources is used. If allocatedResources\n                              is not set, PVC.spec.resources alone is used for quota\n                              calculation. If a volume expansion capacity request\n                              is lowered, allocatedResources is only lowered if there\n                              are no expansion operations in progress and if the actual\n                              volume capacity is equal or lower than the requested\n                              capacity. This is an alpha field and requires enabling\n                              RecoverVolumeExpansionFailure feature.\n                            type: object\n                          capacity:\n                            additionalProperties:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                              x-kubernetes-int-or-string: true\n                            description: capacity represents the actual resources\n                              of the underlying volume.\n                            type: object\n                          conditions:\n                            description: conditions is the current Condition of persistent\n                              volume claim. If underlying persistent volume is being\n                              resized then the Condition will be set to 'ResizeStarted'.\n                            items:\n                              description: PersistentVolumeClaimCondition contains\n                                details about state of pvc\n                              properties:\n                                lastProbeTime:\n                                  description: lastProbeTime is the time we probed\n                                    the condition.\n                                  format: date-time\n                                  type: string\n                                lastTransitionTime:\n                                  description: lastTransitionTime is the time the\n                                    condition transitioned from one status to another.\n                                  format: date-time\n                                  type: string\n                                message:\n                                  description: message is the human-readable message\n                                    indicating details about last transition.\n                                  type: string\n                                reason:\n                                  description: reason is a unique, this should be\n                                    a short, machine understandable string that gives\n                                    the reason for condition's last transition. If\n                                    it reports \"ResizeStarted\" that means the underlying\n                                    persistent volume is being resized.\n                                  type: string\n                                status:\n                                  type: string\n                                type:\n                                  description: PersistentVolumeClaimConditionType\n                                    is a valid value of PersistentVolumeClaimCondition.Type\n                                  type: string\n                              required:\n                              - status\n                              - type\n                              type: object\n                            type: array\n                          phase:\n                            description: phase represents the current phase of PersistentVolumeClaim.\n                            type: string\n                          resizeStatus:\n                            description: resizeStatus stores status of resize operation.\n                              ResizeStatus is not set by default but when expansion\n                              is complete resizeStatus is set to empty string by resize\n                              controller or kubelet. This is an alpha field and requires\n                              enabling RecoverVolumeExpansionFailure feature.\n                            type: string\n                        type: object\n                    type: object\n                type: object\n              tolerations:\n                description: If specified, the pod's tolerations.\n                items:\n                  description: The pod this Toleration is attached to tolerates any\n                    taint that matches the triple <key,value,effect> using the matching\n                    operator <operator>.\n                  properties:\n                    effect:\n                      description: Effect indicates the taint effect to match. Empty\n                        means match all taint effects. When specified, allowed values\n                        are NoSchedule, PreferNoSchedule and NoExecute.\n                      type: string\n                    key:\n                      description: Key is the taint key that the toleration applies\n                        to. Empty means match all taint keys. If the key is empty,\n                        operator must be Exists; this combination means to match all\n                        values and all keys.\n                      type: string\n                    operator:\n                      description: Operator represents a key's relationship to the\n                        value. Valid operators are Exists and Equal. Defaults to Equal.\n                        Exists is equivalent to wildcard for value, so that a pod\n                        can tolerate all taints of a particular category.\n                      type: string\n                    tolerationSeconds:\n                      description: TolerationSeconds represents the period of time\n                        the toleration (which must be of effect NoExecute, otherwise\n                        this field is ignored) tolerates the taint. By default, it\n                        is not set, which means tolerate the taint forever (do not\n                        evict). Zero and negative values will be treated as 0 (evict\n                        immediately) by the system.\n                      format: int64\n                      type: integer\n                    value:\n                      description: Value is the taint value the toleration matches\n                        to. If the operator is Exists, the value should be empty,\n                        otherwise just a regular string.\n                      type: string\n                  type: object\n                type: array\n              topologySpreadConstraints:\n                description: If specified, the pod's topology spread constraints.\n                items:\n                  description: TopologySpreadConstraint specifies how to spread matching\n                    pods among the given topology.\n                  properties:\n                    labelSelector:\n                      description: LabelSelector is used to find matching pods. Pods\n                        that match this label selector are counted to determine the\n                        number of pods in their corresponding topology domain.\n                      properties:\n                        matchExpressions:\n                          description: matchExpressions is a list of label selector\n                            requirements. The requirements are ANDed.\n                          items:\n                            description: A label selector requirement is a selector\n                              that contains values, a key, and an operator that relates\n                              the key and values.\n                            properties:\n                              key:\n                                description: key is the label key that the selector\n                                  applies to.\n                                type: string\n                              operator:\n                                description: operator represents a key's relationship\n                                  to a set of values. Valid operators are In, NotIn,\n                                  Exists and DoesNotExist.\n                                type: string\n                              values:\n                                description: values is an array of string values.\n                                  If the operator is In or NotIn, the values array\n                                  must be non-empty. If the operator is Exists or\n                                  DoesNotExist, the values array must be empty. This\n                                  array is replaced during a strategic merge patch.\n                                items:\n                                  type: string\n                                type: array\n                            required:\n                            - key\n                            - operator\n                            type: object\n                          type: array\n                        matchLabels:\n                          additionalProperties:\n                            type: string\n                          description: matchLabels is a map of {key,value} pairs.\n                            A single {key,value} in the matchLabels map is equivalent\n                            to an element of matchExpressions, whose key field is\n                            \"key\", the operator is \"In\", and the values array contains\n                            only \"value\". The requirements are ANDed.\n                          type: object\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    matchLabelKeys:\n                      description: \"MatchLabelKeys is a set of pod label keys to select\n                        the pods over which spreading will be calculated. The keys\n                        are used to lookup values from the incoming pod labels, those\n                        key-value labels are ANDed with labelSelector to select the\n                        group of existing pods over which spreading will be calculated\n                        for the incoming pod. The same key is forbidden to exist in\n                        both MatchLabelKeys and LabelSelector. MatchLabelKeys cannot\n                        be set when LabelSelector isn't set. Keys that don't exist\n                        in the incoming pod labels will be ignored. A null or empty\n                        list means only match against labelSelector. \\n This is a\n                        beta field and requires the MatchLabelKeysInPodTopologySpread\n                        feature gate to be enabled (enabled by default).\"\n                      items:\n                        type: string\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    maxSkew:\n                      description: 'MaxSkew describes the degree to which pods may\n                        be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`,\n                        it is the maximum permitted difference between the number\n                        of matching pods in the target topology and the global minimum.\n                        The global minimum is the minimum number of matching pods\n                        in an eligible domain or zero if the number of eligible domains\n                        is less than MinDomains. For example, in a 3-zone cluster,\n                        MaxSkew is set to 1, and pods with the same labelSelector\n                        spread as 2/2/1: In this case, the global minimum is 1. |\n                        zone1 | zone2 | zone3 | |  P P  |  P P  |   P   | - if MaxSkew\n                        is 1, incoming pod can only be scheduled to zone3 to become\n                        2/2/2; scheduling it onto zone1(zone2) would make the ActualSkew(3-1)\n                        on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming\n                        pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`,\n                        it is used to give higher precedence to topologies that satisfy\n                        it. It''s a required field. Default value is 1 and 0 is not\n                        allowed.'\n                      format: int32\n                      type: integer\n                    minDomains:\n                      description: \"MinDomains indicates a minimum number of eligible\n                        domains. When the number of eligible domains with matching\n                        topology keys is less than minDomains, Pod Topology Spread\n                        treats \\\"global minimum\\\" as 0, and then the calculation of\n                        Skew is performed. And when the number of eligible domains\n                        with matching topology keys equals or greater than minDomains,\n                        this value has no effect on scheduling. As a result, when\n                        the number of eligible domains is less than minDomains, scheduler\n                        won't schedule more than maxSkew Pods to those domains. If\n                        value is nil, the constraint behaves as if MinDomains is equal\n                        to 1. Valid values are integers greater than 0. When value\n                        is not nil, WhenUnsatisfiable must be DoNotSchedule. \\n For\n                        example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains\n                        is set to 5 and pods with the same labelSelector spread as\n                        2/2/2: | zone1 | zone2 | zone3 | |  P P  |  P P  |  P P  |\n                        The number of domains is less than 5(MinDomains), so \\\"global\n                        minimum\\\" is treated as 0. In this situation, new pod with\n                        the same labelSelector cannot be scheduled, because computed\n                        skew will be 3(3 - 0) if new Pod is scheduled to any of the\n                        three zones, it will violate MaxSkew. \\n This is a beta field\n                        and requires the MinDomainsInPodTopologySpread feature gate\n                        to be enabled (enabled by default).\"\n                      format: int32\n                      type: integer\n                    nodeAffinityPolicy:\n                      description: \"NodeAffinityPolicy indicates how we will treat\n                        Pod's nodeAffinity/nodeSelector when calculating pod topology\n                        spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector\n                        are included in the calculations. - Ignore: nodeAffinity/nodeSelector\n                        are ignored. All nodes are included in the calculations. \\n\n                        If this value is nil, the behavior is equivalent to the Honor\n                        policy. This is a beta-level feature default enabled by the\n                        NodeInclusionPolicyInPodTopologySpread feature flag.\"\n                      type: string\n                    nodeTaintsPolicy:\n                      description: \"NodeTaintsPolicy indicates how we will treat node\n                        taints when calculating pod topology spread skew. Options\n                        are: - Honor: nodes without taints, along with tainted nodes\n                        for which the incoming pod has a toleration, are included.\n                        - Ignore: node taints are ignored. All nodes are included.\n                        \\n If this value is nil, the behavior is equivalent to the\n                        Ignore policy. This is a beta-level feature default enabled\n                        by the NodeInclusionPolicyInPodTopologySpread feature flag.\"\n                      type: string\n                    topologyKey:\n                      description: TopologyKey is the key of node labels. Nodes that\n                        have a label with this key and identical values are considered\n                        to be in the same topology. We consider each <key, value>\n                        as a \"bucket\", and try to put balanced number of pods into\n                        each bucket. We define a domain as a particular instance of\n                        a topology. Also, we define an eligible domain as a domain\n                        whose nodes meet the requirements of nodeAffinityPolicy and\n                        nodeTaintsPolicy. e.g. If TopologyKey is \"kubernetes.io/hostname\",\n                        each Node is a domain of that topology. And, if TopologyKey\n                        is \"topology.kubernetes.io/zone\", each zone is a domain of\n                        that topology. It's a required field.\n                      type: string\n                    whenUnsatisfiable:\n                      description: 'WhenUnsatisfiable indicates how to deal with a\n                        pod if it doesn''t satisfy the spread constraint. - DoNotSchedule\n                        (default) tells the scheduler not to schedule it. - ScheduleAnyway\n                        tells the scheduler to schedule the pod in any location, but\n                        giving higher precedence to topologies that would help reduce\n                        the skew. A constraint is considered \"Unsatisfiable\" for an\n                        incoming pod if and only if every possible node assignment\n                        for that pod would violate \"MaxSkew\" on some topology. For\n                        example, in a 3-zone cluster, MaxSkew is set to 1, and pods\n                        with the same labelSelector spread as 3/1/1: | zone1 | zone2\n                        | zone3 | | P P P |   P   |   P   | If WhenUnsatisfiable is\n                        set to DoNotSchedule, incoming pod can only be scheduled to\n                        zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on\n                        zone2(zone3) satisfies MaxSkew(1). In other words, the cluster\n                        can still be imbalanced, but scheduler won''t make it *more*\n                        imbalanced. It''s a required field.'\n                      type: string\n                  required:\n                  - maxSkew\n                  - topologyKey\n                  - whenUnsatisfiable\n                  type: object\n                type: array\n              tracingConfig:\n                description: TracingConfig configures tracing in Thanos. This is an\n                  experimental feature, it may change in any upcoming release in a\n                  breaking way.\n                properties:\n                  key:\n                    description: The key of the secret to select from.  Must be a\n                      valid secret key.\n                    type: string\n                  name:\n                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                      TODO: Add other useful fields. apiVersion, kind, uid?'\n                    type: string\n                  optional:\n                    description: Specify whether the Secret or its key must be defined\n                    type: boolean\n                required:\n                - key\n                type: object\n                x-kubernetes-map-type: atomic\n              tracingConfigFile:\n                description: TracingConfig specifies the path of the tracing configuration\n                  file. When used alongside with TracingConfig, TracingConfigFile\n                  takes precedence.\n                type: string\n              version:\n                description: Version of Thanos to be deployed.\n                type: string\n              volumeMounts:\n                description: VolumeMounts allows configuration of additional VolumeMounts\n                  on the output StatefulSet definition. VolumeMounts specified will\n                  be appended to other VolumeMounts in the ruler container, that are\n                  generated as a result of StorageSpec objects.\n                items:\n                  description: VolumeMount describes a mounting of a Volume within\n                    a container.\n                  properties:\n                    mountPath:\n                      description: Path within the container at which the volume should\n                        be mounted.  Must not contain ':'.\n                      type: string\n                    mountPropagation:\n                      description: mountPropagation determines how mounts are propagated\n                        from the host to container and the other way around. When\n                        not set, MountPropagationNone is used. This field is beta\n                        in 1.10.\n                      type: string\n                    name:\n                      description: This must match the Name of a Volume.\n                      type: string\n                    readOnly:\n                      description: Mounted read-only if true, read-write otherwise\n                        (false or unspecified). Defaults to false.\n                      type: boolean\n                    subPath:\n                      description: Path within the volume from which the container's\n                        volume should be mounted. Defaults to \"\" (volume's root).\n                      type: string\n                    subPathExpr:\n                      description: Expanded path within the volume from which the\n                        container's volume should be mounted. Behaves similarly to\n                        SubPath but environment variable references $(VAR_NAME) are\n                        expanded using the container's environment. Defaults to \"\"\n                        (volume's root). SubPathExpr and SubPath are mutually exclusive.\n                      type: string\n                  required:\n                  - mountPath\n                  - name\n                  type: object\n                type: array\n              volumes:\n                description: Volumes allows configuration of additional volumes on\n                  the output StatefulSet definition. Volumes specified will be appended\n                  to other volumes that are generated as a result of StorageSpec objects.\n                items:\n                  description: Volume represents a named volume in a pod that may\n                    be accessed by any container in the pod.\n                  properties:\n                    awsElasticBlockStore:\n                      description: 'awsElasticBlockStore represents an AWS Disk resource\n                        that is attached to a kubelet''s host machine and then exposed\n                        to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type of the volume\n                            that you want to mount. Tip: Ensure that the filesystem\n                            type is supported by the host operating system. Examples:\n                            \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\n                            TODO: how do we prevent errors in the filesystem from\n                            compromising the machine'\n                          type: string\n                        partition:\n                          description: 'partition is the partition in the volume that\n                            you want to mount. If omitted, the default is to mount\n                            by volume name. Examples: For volume /dev/sda1, you specify\n                            the partition as \"1\". Similarly, the volume partition\n                            for /dev/sda is \"0\" (or you can leave the property empty).'\n                          format: int32\n                          type: integer\n                        readOnly:\n                          description: 'readOnly value true will force the readOnly\n                            setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'\n                          type: boolean\n                        volumeID:\n                          description: 'volumeID is unique ID of the persistent disk\n                            resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    azureDisk:\n                      description: azureDisk represents an Azure Data Disk mount on\n                        the host and bind mount to the pod.\n                      properties:\n                        cachingMode:\n                          description: 'cachingMode is the Host Caching mode: None,\n                            Read Only, Read Write.'\n                          type: string\n                        diskName:\n                          description: diskName is the Name of the data disk in the\n                            blob storage\n                          type: string\n                        diskURI:\n                          description: diskURI is the URI of data disk in the blob\n                            storage\n                          type: string\n                        fsType:\n                          description: fsType is Filesystem type to mount. Must be\n                            a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified.\n                          type: string\n                        kind:\n                          description: 'kind expected values are Shared: multiple\n                            blob disks per storage account  Dedicated: single blob\n                            disk per storage account  Managed: azure managed data\n                            disk (only in managed availability set). defaults to shared'\n                          type: string\n                        readOnly:\n                          description: readOnly Defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                      required:\n                      - diskName\n                      - diskURI\n                      type: object\n                    azureFile:\n                      description: azureFile represents an Azure File Service mount\n                        on the host and bind mount to the pod.\n                      properties:\n                        readOnly:\n                          description: readOnly defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretName:\n                          description: secretName is the  name of secret that contains\n                            Azure Storage Account Name and Key\n                          type: string\n                        shareName:\n                          description: shareName is the azure share Name\n                          type: string\n                      required:\n                      - secretName\n                      - shareName\n                      type: object\n                    cephfs:\n                      description: cephFS represents a Ceph FS mount on the host that\n                        shares a pod's lifetime\n                      properties:\n                        monitors:\n                          description: 'monitors is Required: Monitors is a collection\n                            of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          items:\n                            type: string\n                          type: array\n                        path:\n                          description: 'path is Optional: Used as the mounted root,\n                            rather than the full Ceph tree, default is /'\n                          type: string\n                        readOnly:\n                          description: 'readOnly is Optional: Defaults to false (read/write).\n                            ReadOnly here will force the ReadOnly setting in VolumeMounts.\n                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          type: boolean\n                        secretFile:\n                          description: 'secretFile is Optional: SecretFile is the\n                            path to key ring for User, default is /etc/ceph/user.secret\n                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          type: string\n                        secretRef:\n                          description: 'secretRef is Optional: SecretRef is reference\n                            to the authentication secret for User, default is empty.\n                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        user:\n                          description: 'user is optional: User is the rados user name,\n                            default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          type: string\n                      required:\n                      - monitors\n                      type: object\n                    cinder:\n                      description: 'cinder represents a cinder volume attached and\n                        mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to\n                            be \"ext4\" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                          type: string\n                        readOnly:\n                          description: 'readOnly defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                            More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                          type: boolean\n                        secretRef:\n                          description: 'secretRef is optional: points to a secret\n                            object containing parameters used to connect to OpenStack.'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        volumeID:\n                          description: 'volumeID used to identify the volume in cinder.\n                            More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    configMap:\n                      description: configMap represents a configMap that should populate\n                        this volume\n                      properties:\n                        defaultMode:\n                          description: 'defaultMode is optional: mode bits used to\n                            set permissions on created files by default. Must be an\n                            octal value between 0000 and 0777 or a decimal value between\n                            0 and 511. YAML accepts both octal and decimal values,\n                            JSON requires decimal values for mode bits. Defaults to\n                            0644. Directories within the path are not affected by\n                            this setting. This might be in conflict with other options\n                            that affect the file mode, like fsGroup, and the result\n                            can be other mode bits set.'\n                          format: int32\n                          type: integer\n                        items:\n                          description: items if unspecified, each key-value pair in\n                            the Data field of the referenced ConfigMap will be projected\n                            into the volume as a file whose name is the key and content\n                            is the value. If specified, the listed keys will be projected\n                            into the specified paths, and unlisted keys will not be\n                            present. If a key is specified which is not present in\n                            the ConfigMap, the volume setup will error unless it is\n                            marked optional. Paths must be relative and may not contain\n                            the '..' path or start with '..'.\n                          items:\n                            description: Maps a string key to a path within a volume.\n                            properties:\n                              key:\n                                description: key is the key to project.\n                                type: string\n                              mode:\n                                description: 'mode is Optional: mode bits used to\n                                  set permissions on this file. Must be an octal value\n                                  between 0000 and 0777 or a decimal value between\n                                  0 and 511. YAML accepts both octal and decimal values,\n                                  JSON requires decimal values for mode bits. If not\n                                  specified, the volume defaultMode will be used.\n                                  This might be in conflict with other options that\n                                  affect the file mode, like fsGroup, and the result\n                                  can be other mode bits set.'\n                                format: int32\n                                type: integer\n                              path:\n                                description: path is the relative path of the file\n                                  to map the key to. May not be an absolute path.\n                                  May not contain the path element '..'. May not start\n                                  with the string '..'.\n                                type: string\n                            required:\n                            - key\n                            - path\n                            type: object\n                          type: array\n                        name:\n                          description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                            TODO: Add other useful fields. apiVersion, kind, uid?'\n                          type: string\n                        optional:\n                          description: optional specify whether the ConfigMap or its\n                            keys must be defined\n                          type: boolean\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    csi:\n                      description: csi (Container Storage Interface) represents ephemeral\n                        storage that is handled by certain external CSI drivers (Beta\n                        feature).\n                      properties:\n                        driver:\n                          description: driver is the name of the CSI driver that handles\n                            this volume. Consult with your admin for the correct name\n                            as registered in the cluster.\n                          type: string\n                        fsType:\n                          description: fsType to mount. Ex. \"ext4\", \"xfs\", \"ntfs\".\n                            If not provided, the empty value is passed to the associated\n                            CSI driver which will determine the default filesystem\n                            to apply.\n                          type: string\n                        nodePublishSecretRef:\n                          description: nodePublishSecretRef is a reference to the\n                            secret object containing sensitive information to pass\n                            to the CSI driver to complete the CSI NodePublishVolume\n                            and NodeUnpublishVolume calls. This field is optional,\n                            and  may be empty if no secret is required. If the secret\n                            object contains more than one secret, all secret references\n                            are passed.\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        readOnly:\n                          description: readOnly specifies a read-only configuration\n                            for the volume. Defaults to false (read/write).\n                          type: boolean\n                        volumeAttributes:\n                          additionalProperties:\n                            type: string\n                          description: volumeAttributes stores driver-specific properties\n                            that are passed to the CSI driver. Consult your driver's\n                            documentation for supported values.\n                          type: object\n                      required:\n                      - driver\n                      type: object\n                    downwardAPI:\n                      description: downwardAPI represents downward API about the pod\n                        that should populate this volume\n                      properties:\n                        defaultMode:\n                          description: 'Optional: mode bits to use on created files\n                            by default. Must be a Optional: mode bits used to set\n                            permissions on created files by default. Must be an octal\n                            value between 0000 and 0777 or a decimal value between\n                            0 and 511. YAML accepts both octal and decimal values,\n                            JSON requires decimal values for mode bits. Defaults to\n                            0644. Directories within the path are not affected by\n                            this setting. This might be in conflict with other options\n                            that affect the file mode, like fsGroup, and the result\n                            can be other mode bits set.'\n                          format: int32\n                          type: integer\n                        items:\n                          description: Items is a list of downward API volume file\n                          items:\n                            description: DownwardAPIVolumeFile represents information\n                              to create the file containing the pod field\n                            properties:\n                              fieldRef:\n                                description: 'Required: Selects a field of the pod:\n                                  only annotations, labels, name and namespace are\n                                  supported.'\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath\n                                      is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the\n                                      specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              mode:\n                                description: 'Optional: mode bits used to set permissions\n                                  on this file, must be an octal value between 0000\n                                  and 0777 or a decimal value between 0 and 511. YAML\n                                  accepts both octal and decimal values, JSON requires\n                                  decimal values for mode bits. If not specified,\n                                  the volume defaultMode will be used. This might\n                                  be in conflict with other options that affect the\n                                  file mode, like fsGroup, and the result can be other\n                                  mode bits set.'\n                                format: int32\n                                type: integer\n                              path:\n                                description: 'Required: Path is  the relative path\n                                  name of the file to be created. Must not be absolute\n                                  or contain the ''..'' path. Must be utf-8 encoded.\n                                  The first item of the relative path must not start\n                                  with ''..'''\n                                type: string\n                              resourceFieldRef:\n                                description: 'Selects a resource of the container:\n                                  only resources limits and requests (limits.cpu,\n                                  limits.memory, requests.cpu and requests.memory)\n                                  are currently supported.'\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes,\n                                      optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the\n                                      exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            required:\n                            - path\n                            type: object\n                          type: array\n                      type: object\n                    emptyDir:\n                      description: 'emptyDir represents a temporary directory that\n                        shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                      properties:\n                        medium:\n                          description: 'medium represents what type of storage medium\n                            should back this directory. The default is \"\" which means\n                            to use the node''s default medium. Must be an empty string\n                            (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                          type: string\n                        sizeLimit:\n                          anyOf:\n                          - type: integer\n                          - type: string\n                          description: 'sizeLimit is the total amount of local storage\n                            required for this EmptyDir volume. The size limit is also\n                            applicable for memory medium. The maximum usage on memory\n                            medium EmptyDir would be the minimum value between the\n                            SizeLimit specified here and the sum of memory limits\n                            of all containers in a pod. The default is nil which means\n                            that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                          pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                          x-kubernetes-int-or-string: true\n                      type: object\n                    ephemeral:\n                      description: \"ephemeral represents a volume that is handled\n                        by a cluster storage driver. The volume's lifecycle is tied\n                        to the pod that defines it - it will be created before the\n                        pod starts, and deleted when the pod is removed. \\n Use this\n                        if: a) the volume is only needed while the pod runs, b) features\n                        of normal volumes like restoring from snapshot or capacity\n                        tracking are needed, c) the storage driver is specified through\n                        a storage class, and d) the storage driver supports dynamic\n                        volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource\n                        for more information on the connection between this volume\n                        type and PersistentVolumeClaim). \\n Use PersistentVolumeClaim\n                        or one of the vendor-specific APIs for volumes that persist\n                        for longer than the lifecycle of an individual pod. \\n Use\n                        CSI for light-weight local ephemeral volumes if the CSI driver\n                        is meant to be used that way - see the documentation of the\n                        driver for more information. \\n A pod can use both types of\n                        ephemeral volumes and persistent volumes at the same time.\"\n                      properties:\n                        volumeClaimTemplate:\n                          description: \"Will be used to create a stand-alone PVC to\n                            provision the volume. The pod in which this EphemeralVolumeSource\n                            is embedded will be the owner of the PVC, i.e. the PVC\n                            will be deleted together with the pod.  The name of the\n                            PVC will be `<pod name>-<volume name>` where `<volume\n                            name>` is the name from the `PodSpec.Volumes` array entry.\n                            Pod validation will reject the pod if the concatenated\n                            name is not valid for a PVC (for example, too long). \\n\n                            An existing PVC with that name that is not owned by the\n                            pod will *not* be used for the pod to avoid using an unrelated\n                            volume by mistake. Starting the pod is then blocked until\n                            the unrelated PVC is removed. If such a pre-created PVC\n                            is meant to be used by the pod, the PVC has to updated\n                            with an owner reference to the pod once the pod exists.\n                            Normally this should not be necessary, but it may be useful\n                            when manually reconstructing a broken cluster. \\n This\n                            field is read-only and no changes will be made by Kubernetes\n                            to the PVC after it has been created. \\n Required, must\n                            not be nil.\"\n                          properties:\n                            metadata:\n                              description: May contain labels and annotations that\n                                will be copied into the PVC when creating it. No other\n                                fields are allowed and will be rejected during validation.\n                              type: object\n                            spec:\n                              description: The specification for the PersistentVolumeClaim.\n                                The entire content is copied unchanged into the PVC\n                                that gets created from this template. The same fields\n                                as in a PersistentVolumeClaim are also valid here.\n                              properties:\n                                accessModes:\n                                  description: 'accessModes contains the desired access\n                                    modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                                  items:\n                                    type: string\n                                  type: array\n                                dataSource:\n                                  description: 'dataSource field can be used to specify\n                                    either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\n                                    * An existing PVC (PersistentVolumeClaim) If the\n                                    provisioner or an external controller can support\n                                    the specified data source, it will create a new\n                                    volume based on the contents of the specified\n                                    data source. When the AnyVolumeDataSource feature\n                                    gate is enabled, dataSource contents will be copied\n                                    to dataSourceRef, and dataSourceRef contents will\n                                    be copied to dataSource when dataSourceRef.namespace\n                                    is not specified. If the namespace is specified,\n                                    then dataSourceRef will not be copied to dataSource.'\n                                  properties:\n                                    apiGroup:\n                                      description: APIGroup is the group for the resource\n                                        being referenced. If APIGroup is not specified,\n                                        the specified Kind must be in the core API\n                                        group. For any other third-party types, APIGroup\n                                        is required.\n                                      type: string\n                                    kind:\n                                      description: Kind is the type of resource being\n                                        referenced\n                                      type: string\n                                    name:\n                                      description: Name is the name of resource being\n                                        referenced\n                                      type: string\n                                  required:\n                                  - kind\n                                  - name\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                dataSourceRef:\n                                  description: 'dataSourceRef specifies the object\n                                    from which to populate the volume with data, if\n                                    a non-empty volume is desired. This may be any\n                                    object from a non-empty API group (non core object)\n                                    or a PersistentVolumeClaim object. When this field\n                                    is specified, volume binding will only succeed\n                                    if the type of the specified object matches some\n                                    installed volume populator or dynamic provisioner.\n                                    This field will replace the functionality of the\n                                    dataSource field and as such if both fields are\n                                    non-empty, they must have the same value. For\n                                    backwards compatibility, when namespace isn''t\n                                    specified in dataSourceRef, both fields (dataSource\n                                    and dataSourceRef) will be set to the same value\n                                    automatically if one of them is empty and the\n                                    other is non-empty. When namespace is specified\n                                    in dataSourceRef, dataSource isn''t set to the\n                                    same value and must be empty. There are three\n                                    important differences between dataSource and dataSourceRef:\n                                    * While dataSource only allows two specific types\n                                    of objects, dataSourceRef allows any non-core\n                                    object, as well as PersistentVolumeClaim objects.\n                                    * While dataSource ignores disallowed values (dropping\n                                    them), dataSourceRef preserves all values, and\n                                    generates an error if a disallowed value is specified.\n                                    * While dataSource only allows local objects,\n                                    dataSourceRef allows objects in any namespaces.\n                                    (Beta) Using this field requires the AnyVolumeDataSource\n                                    feature gate to be enabled. (Alpha) Using the\n                                    namespace field of dataSourceRef requires the\n                                    CrossNamespaceVolumeDataSource feature gate to\n                                    be enabled.'\n                                  properties:\n                                    apiGroup:\n                                      description: APIGroup is the group for the resource\n                                        being referenced. If APIGroup is not specified,\n                                        the specified Kind must be in the core API\n                                        group. For any other third-party types, APIGroup\n                                        is required.\n                                      type: string\n                                    kind:\n                                      description: Kind is the type of resource being\n                                        referenced\n                                      type: string\n                                    name:\n                                      description: Name is the name of resource being\n                                        referenced\n                                      type: string\n                                    namespace:\n                                      description: Namespace is the namespace of resource\n                                        being referenced Note that when a namespace\n                                        is specified, a gateway.networking.k8s.io/ReferenceGrant\n                                        object is required in the referent namespace\n                                        to allow that namespace's owner to accept\n                                        the reference. See the ReferenceGrant documentation\n                                        for details. (Alpha) This field requires the\n                                        CrossNamespaceVolumeDataSource feature gate\n                                        to be enabled.\n                                      type: string\n                                  required:\n                                  - kind\n                                  - name\n                                  type: object\n                                resources:\n                                  description: 'resources represents the minimum resources\n                                    the volume should have. If RecoverVolumeExpansionFailure\n                                    feature is enabled users are allowed to specify\n                                    resource requirements that are lower than previous\n                                    value but must still be higher than capacity recorded\n                                    in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'\n                                  properties:\n                                    claims:\n                                      description: \"Claims lists the names of resources,\n                                        defined in spec.resourceClaims, that are used\n                                        by this container. \\n This is an alpha field\n                                        and requires enabling the DynamicResourceAllocation\n                                        feature gate. \\n This field is immutable.\n                                        It can only be set for containers.\"\n                                      items:\n                                        description: ResourceClaim references one\n                                          entry in PodSpec.ResourceClaims.\n                                        properties:\n                                          name:\n                                            description: Name must match the name\n                                              of one entry in pod.spec.resourceClaims\n                                              of the Pod where this field is used.\n                                              It makes that resource available inside\n                                              a container.\n                                            type: string\n                                        required:\n                                        - name\n                                        type: object\n                                      type: array\n                                      x-kubernetes-list-map-keys:\n                                      - name\n                                      x-kubernetes-list-type: map\n                                    limits:\n                                      additionalProperties:\n                                        anyOf:\n                                        - type: integer\n                                        - type: string\n                                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                        x-kubernetes-int-or-string: true\n                                      description: 'Limits describes the maximum amount\n                                        of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                      type: object\n                                    requests:\n                                      additionalProperties:\n                                        anyOf:\n                                        - type: integer\n                                        - type: string\n                                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                        x-kubernetes-int-or-string: true\n                                      description: 'Requests describes the minimum\n                                        amount of compute resources required. If Requests\n                                        is omitted for a container, it defaults to\n                                        Limits if that is explicitly specified, otherwise\n                                        to an implementation-defined value. Requests\n                                        cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                      type: object\n                                  type: object\n                                selector:\n                                  description: selector is a label query over volumes\n                                    to consider for binding.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label\n                                        selector requirements. The requirements are\n                                        ANDed.\n                                      items:\n                                        description: A label selector requirement\n                                          is a selector that contains values, a key,\n                                          and an operator that relates the key and\n                                          values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that\n                                              the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's\n                                              relationship to a set of values. Valid\n                                              operators are In, NotIn, Exists and\n                                              DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string\n                                              values. If the operator is In or NotIn,\n                                              the values array must be non-empty.\n                                              If the operator is Exists or DoesNotExist,\n                                              the values array must be empty. This\n                                              array is replaced during a strategic\n                                              merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value}\n                                        pairs. A single {key,value} in the matchLabels\n                                        map is equivalent to an element of matchExpressions,\n                                        whose key field is \"key\", the operator is\n                                        \"In\", and the values array contains only \"value\".\n                                        The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                storageClassName:\n                                  description: 'storageClassName is the name of the\n                                    StorageClass required by the claim. More info:\n                                    https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'\n                                  type: string\n                                volumeMode:\n                                  description: volumeMode defines what type of volume\n                                    is required by the claim. Value of Filesystem\n                                    is implied when not included in claim spec.\n                                  type: string\n                                volumeName:\n                                  description: volumeName is the binding reference\n                                    to the PersistentVolume backing this claim.\n                                  type: string\n                              type: object\n                          required:\n                          - spec\n                          type: object\n                      type: object\n                    fc:\n                      description: fc represents a Fibre Channel resource that is\n                        attached to a kubelet's host machine and then exposed to the\n                        pod.\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified. TODO: how do we prevent errors in the\n                            filesystem from compromising the machine'\n                          type: string\n                        lun:\n                          description: 'lun is Optional: FC target lun number'\n                          format: int32\n                          type: integer\n                        readOnly:\n                          description: 'readOnly is Optional: Defaults to false (read/write).\n                            ReadOnly here will force the ReadOnly setting in VolumeMounts.'\n                          type: boolean\n                        targetWWNs:\n                          description: 'targetWWNs is Optional: FC target worldwide\n                            names (WWNs)'\n                          items:\n                            type: string\n                          type: array\n                        wwids:\n                          description: 'wwids Optional: FC volume world wide identifiers\n                            (wwids) Either wwids or combination of targetWWNs and\n                            lun must be set, but not both simultaneously.'\n                          items:\n                            type: string\n                          type: array\n                      type: object\n                    flexVolume:\n                      description: flexVolume represents a generic volume resource\n                        that is provisioned/attached using an exec based plugin.\n                      properties:\n                        driver:\n                          description: driver is the name of the driver to use for\n                            this volume.\n                          type: string\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". The default filesystem depends\n                            on FlexVolume script.\n                          type: string\n                        options:\n                          additionalProperties:\n                            type: string\n                          description: 'options is Optional: this field holds extra\n                            command options if any.'\n                          type: object\n                        readOnly:\n                          description: 'readOnly is Optional: defaults to false (read/write).\n                            ReadOnly here will force the ReadOnly setting in VolumeMounts.'\n                          type: boolean\n                        secretRef:\n                          description: 'secretRef is Optional: secretRef is reference\n                            to the secret object containing sensitive information\n                            to pass to the plugin scripts. This may be empty if no\n                            secret object is specified. If the secret object contains\n                            more than one secret, all secrets are passed to the plugin\n                            scripts.'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      required:\n                      - driver\n                      type: object\n                    flocker:\n                      description: flocker represents a Flocker volume attached to\n                        a kubelet's host machine. This depends on the Flocker control\n                        service being running\n                      properties:\n                        datasetName:\n                          description: datasetName is Name of the dataset stored as\n                            metadata -> name on the dataset for Flocker should be\n                            considered as deprecated\n                          type: string\n                        datasetUUID:\n                          description: datasetUUID is the UUID of the dataset. This\n                            is unique identifier of a Flocker dataset\n                          type: string\n                      type: object\n                    gcePersistentDisk:\n                      description: 'gcePersistentDisk represents a GCE Disk resource\n                        that is attached to a kubelet''s host machine and then exposed\n                        to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                      properties:\n                        fsType:\n                          description: 'fsType is filesystem type of the volume that\n                            you want to mount. Tip: Ensure that the filesystem type\n                            is supported by the host operating system. Examples: \"ext4\",\n                            \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\n                            TODO: how do we prevent errors in the filesystem from\n                            compromising the machine'\n                          type: string\n                        partition:\n                          description: 'partition is the partition in the volume that\n                            you want to mount. If omitted, the default is to mount\n                            by volume name. Examples: For volume /dev/sda1, you specify\n                            the partition as \"1\". Similarly, the volume partition\n                            for /dev/sda is \"0\" (or you can leave the property empty).\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                          format: int32\n                          type: integer\n                        pdName:\n                          description: 'pdName is unique name of the PD resource in\n                            GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the ReadOnly setting\n                            in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                          type: boolean\n                      required:\n                      - pdName\n                      type: object\n                    gitRepo:\n                      description: 'gitRepo represents a git repository at a particular\n                        revision. DEPRECATED: GitRepo is deprecated. To provision\n                        a container with a git repo, mount an EmptyDir into an InitContainer\n                        that clones the repo using git, then mount the EmptyDir into\n                        the Pod''s container.'\n                      properties:\n                        directory:\n                          description: directory is the target directory name. Must\n                            not contain or start with '..'.  If '.' is supplied, the\n                            volume directory will be the git repository.  Otherwise,\n                            if specified, the volume will contain the git repository\n                            in the subdirectory with the given name.\n                          type: string\n                        repository:\n                          description: repository is the URL\n                          type: string\n                        revision:\n                          description: revision is the commit hash for the specified\n                            revision.\n                          type: string\n                      required:\n                      - repository\n                      type: object\n                    glusterfs:\n                      description: 'glusterfs represents a Glusterfs mount on the\n                        host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md'\n                      properties:\n                        endpoints:\n                          description: 'endpoints is the endpoint name that details\n                            Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'\n                          type: string\n                        path:\n                          description: 'path is the Glusterfs volume path. More info:\n                            https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the Glusterfs volume\n                            to be mounted with read-only permissions. Defaults to\n                            false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'\n                          type: boolean\n                      required:\n                      - endpoints\n                      - path\n                      type: object\n                    hostPath:\n                      description: 'hostPath represents a pre-existing file or directory\n                        on the host machine that is directly exposed to the container.\n                        This is generally used for system agents or other privileged\n                        things that are allowed to see the host machine. Most containers\n                        will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\n                        --- TODO(jonesdl) We need to restrict who can use host directory\n                        mounts and who can/can not mount host directories as read/write.'\n                      properties:\n                        path:\n                          description: 'path of the directory on the host. If the\n                            path is a symlink, it will follow the link to the real\n                            path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'\n                          type: string\n                        type:\n                          description: 'type for HostPath Volume Defaults to \"\" More\n                            info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'\n                          type: string\n                      required:\n                      - path\n                      type: object\n                    iscsi:\n                      description: 'iscsi represents an ISCSI Disk resource that is\n                        attached to a kubelet''s host machine and then exposed to\n                        the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md'\n                      properties:\n                        chapAuthDiscovery:\n                          description: chapAuthDiscovery defines whether support iSCSI\n                            Discovery CHAP authentication\n                          type: boolean\n                        chapAuthSession:\n                          description: chapAuthSession defines whether support iSCSI\n                            Session CHAP authentication\n                          type: boolean\n                        fsType:\n                          description: 'fsType is the filesystem type of the volume\n                            that you want to mount. Tip: Ensure that the filesystem\n                            type is supported by the host operating system. Examples:\n                            \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\n                            TODO: how do we prevent errors in the filesystem from\n                            compromising the machine'\n                          type: string\n                        initiatorName:\n                          description: initiatorName is the custom iSCSI Initiator\n                            Name. If initiatorName is specified with iscsiInterface\n                            simultaneously, new iSCSI interface <target portal>:<volume\n                            name> will be created for the connection.\n                          type: string\n                        iqn:\n                          description: iqn is the target iSCSI Qualified Name.\n                          type: string\n                        iscsiInterface:\n                          description: iscsiInterface is the interface Name that uses\n                            an iSCSI transport. Defaults to 'default' (tcp).\n                          type: string\n                        lun:\n                          description: lun represents iSCSI Target Lun number.\n                          format: int32\n                          type: integer\n                        portals:\n                          description: portals is the iSCSI Target Portal List. The\n                            portal is either an IP or ip_addr:port if the port is\n                            other than default (typically TCP ports 860 and 3260).\n                          items:\n                            type: string\n                          type: array\n                        readOnly:\n                          description: readOnly here will force the ReadOnly setting\n                            in VolumeMounts. Defaults to false.\n                          type: boolean\n                        secretRef:\n                          description: secretRef is the CHAP Secret for iSCSI target\n                            and initiator authentication\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        targetPortal:\n                          description: targetPortal is iSCSI Target Portal. The Portal\n                            is either an IP or ip_addr:port if the port is other than\n                            default (typically TCP ports 860 and 3260).\n                          type: string\n                      required:\n                      - iqn\n                      - lun\n                      - targetPortal\n                      type: object\n                    name:\n                      description: 'name of the volume. Must be a DNS_LABEL and unique\n                        within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                      type: string\n                    nfs:\n                      description: 'nfs represents an NFS mount on the host that shares\n                        a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                      properties:\n                        path:\n                          description: 'path that is exported by the NFS server. More\n                            info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the NFS export to\n                            be mounted with read-only permissions. Defaults to false.\n                            More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                          type: boolean\n                        server:\n                          description: 'server is the hostname or IP address of the\n                            NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                          type: string\n                      required:\n                      - path\n                      - server\n                      type: object\n                    persistentVolumeClaim:\n                      description: 'persistentVolumeClaimVolumeSource represents a\n                        reference to a PersistentVolumeClaim in the same namespace.\n                        More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'\n                      properties:\n                        claimName:\n                          description: 'claimName is the name of a PersistentVolumeClaim\n                            in the same namespace as the pod using this volume. More\n                            info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'\n                          type: string\n                        readOnly:\n                          description: readOnly Will force the ReadOnly setting in\n                            VolumeMounts. Default false.\n                          type: boolean\n                      required:\n                      - claimName\n                      type: object\n                    photonPersistentDisk:\n                      description: photonPersistentDisk represents a PhotonController\n                        persistent disk attached and mounted on kubelets host machine\n                      properties:\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified.\n                          type: string\n                        pdID:\n                          description: pdID is the ID that identifies Photon Controller\n                            persistent disk\n                          type: string\n                      required:\n                      - pdID\n                      type: object\n                    portworxVolume:\n                      description: portworxVolume represents a portworx volume attached\n                        and mounted on kubelets host machine\n                      properties:\n                        fsType:\n                          description: fSType represents the filesystem type to mount\n                            Must be a filesystem type supported by the host operating\n                            system. Ex. \"ext4\", \"xfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified.\n                          type: string\n                        readOnly:\n                          description: readOnly defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        volumeID:\n                          description: volumeID uniquely identifies a Portworx volume\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    projected:\n                      description: projected items for all in one resources secrets,\n                        configmaps, and downward API\n                      properties:\n                        defaultMode:\n                          description: defaultMode are the mode bits used to set permissions\n                            on created files by default. Must be an octal value between\n                            0000 and 0777 or a decimal value between 0 and 511. YAML\n                            accepts both octal and decimal values, JSON requires decimal\n                            values for mode bits. Directories within the path are\n                            not affected by this setting. This might be in conflict\n                            with other options that affect the file mode, like fsGroup,\n                            and the result can be other mode bits set.\n                          format: int32\n                          type: integer\n                        sources:\n                          description: sources is the list of volume projections\n                          items:\n                            description: Projection that may be projected along with\n                              other supported volume types\n                            properties:\n                              configMap:\n                                description: configMap information about the configMap\n                                  data to project\n                                properties:\n                                  items:\n                                    description: items if unspecified, each key-value\n                                      pair in the Data field of the referenced ConfigMap\n                                      will be projected into the volume as a file\n                                      whose name is the key and content is the value.\n                                      If specified, the listed keys will be projected\n                                      into the specified paths, and unlisted keys\n                                      will not be present. If a key is specified which\n                                      is not present in the ConfigMap, the volume\n                                      setup will error unless it is marked optional.\n                                      Paths must be relative and may not contain the\n                                      '..' path or start with '..'.\n                                    items:\n                                      description: Maps a string key to a path within\n                                        a volume.\n                                      properties:\n                                        key:\n                                          description: key is the key to project.\n                                          type: string\n                                        mode:\n                                          description: 'mode is Optional: mode bits\n                                            used to set permissions on this file.\n                                            Must be an octal value between 0000 and\n                                            0777 or a decimal value between 0 and\n                                            511. YAML accepts both octal and decimal\n                                            values, JSON requires decimal values for\n                                            mode bits. If not specified, the volume\n                                            defaultMode will be used. This might be\n                                            in conflict with other options that affect\n                                            the file mode, like fsGroup, and the result\n                                            can be other mode bits set.'\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: path is the relative path of\n                                            the file to map the key to. May not be\n                                            an absolute path. May not contain the\n                                            path element '..'. May not start with\n                                            the string '..'.\n                                          type: string\n                                      required:\n                                      - key\n                                      - path\n                                      type: object\n                                    type: array\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: optional specify whether the ConfigMap\n                                      or its keys must be defined\n                                    type: boolean\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              downwardAPI:\n                                description: downwardAPI information about the downwardAPI\n                                  data to project\n                                properties:\n                                  items:\n                                    description: Items is a list of DownwardAPIVolume\n                                      file\n                                    items:\n                                      description: DownwardAPIVolumeFile represents\n                                        information to create the file containing\n                                        the pod field\n                                      properties:\n                                        fieldRef:\n                                          description: 'Required: Selects a field\n                                            of the pod: only annotations, labels,\n                                            name and namespace are supported.'\n                                          properties:\n                                            apiVersion:\n                                              description: Version of the schema the\n                                                FieldPath is written in terms of,\n                                                defaults to \"v1\".\n                                              type: string\n                                            fieldPath:\n                                              description: Path of the field to select\n                                                in the specified API version.\n                                              type: string\n                                          required:\n                                          - fieldPath\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                        mode:\n                                          description: 'Optional: mode bits used to\n                                            set permissions on this file, must be\n                                            an octal value between 0000 and 0777 or\n                                            a decimal value between 0 and 511. YAML\n                                            accepts both octal and decimal values,\n                                            JSON requires decimal values for mode\n                                            bits. If not specified, the volume defaultMode\n                                            will be used. This might be in conflict\n                                            with other options that affect the file\n                                            mode, like fsGroup, and the result can\n                                            be other mode bits set.'\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: 'Required: Path is  the relative\n                                            path name of the file to be created. Must\n                                            not be absolute or contain the ''..''\n                                            path. Must be utf-8 encoded. The first\n                                            item of the relative path must not start\n                                            with ''..'''\n                                          type: string\n                                        resourceFieldRef:\n                                          description: 'Selects a resource of the\n                                            container: only resources limits and requests\n                                            (limits.cpu, limits.memory, requests.cpu\n                                            and requests.memory) are currently supported.'\n                                          properties:\n                                            containerName:\n                                              description: 'Container name: required\n                                                for volumes, optional for env vars'\n                                              type: string\n                                            divisor:\n                                              anyOf:\n                                              - type: integer\n                                              - type: string\n                                              description: Specifies the output format\n                                                of the exposed resources, defaults\n                                                to \"1\"\n                                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                              x-kubernetes-int-or-string: true\n                                            resource:\n                                              description: 'Required: resource to\n                                                select'\n                                              type: string\n                                          required:\n                                          - resource\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                      required:\n                                      - path\n                                      type: object\n                                    type: array\n                                type: object\n                              secret:\n                                description: secret information about the secret data\n                                  to project\n                                properties:\n                                  items:\n                                    description: items if unspecified, each key-value\n                                      pair in the Data field of the referenced Secret\n                                      will be projected into the volume as a file\n                                      whose name is the key and content is the value.\n                                      If specified, the listed keys will be projected\n                                      into the specified paths, and unlisted keys\n                                      will not be present. If a key is specified which\n                                      is not present in the Secret, the volume setup\n                                      will error unless it is marked optional. Paths\n                                      must be relative and may not contain the '..'\n                                      path or start with '..'.\n                                    items:\n                                      description: Maps a string key to a path within\n                                        a volume.\n                                      properties:\n                                        key:\n                                          description: key is the key to project.\n                                          type: string\n                                        mode:\n                                          description: 'mode is Optional: mode bits\n                                            used to set permissions on this file.\n                                            Must be an octal value between 0000 and\n                                            0777 or a decimal value between 0 and\n                                            511. YAML accepts both octal and decimal\n                                            values, JSON requires decimal values for\n                                            mode bits. If not specified, the volume\n                                            defaultMode will be used. This might be\n                                            in conflict with other options that affect\n                                            the file mode, like fsGroup, and the result\n                                            can be other mode bits set.'\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: path is the relative path of\n                                            the file to map the key to. May not be\n                                            an absolute path. May not contain the\n                                            path element '..'. May not start with\n                                            the string '..'.\n                                          type: string\n                                      required:\n                                      - key\n                                      - path\n                                      type: object\n                                    type: array\n                                  name:\n                                    description: 'Name of the referent. More info:\n                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                      TODO: Add other useful fields. apiVersion, kind,\n                                      uid?'\n                                    type: string\n                                  optional:\n                                    description: optional field specify whether the\n                                      Secret or its key must be defined\n                                    type: boolean\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              serviceAccountToken:\n                                description: serviceAccountToken is information about\n                                  the serviceAccountToken data to project\n                                properties:\n                                  audience:\n                                    description: audience is the intended audience\n                                      of the token. A recipient of a token must identify\n                                      itself with an identifier specified in the audience\n                                      of the token, and otherwise should reject the\n                                      token. The audience defaults to the identifier\n                                      of the apiserver.\n                                    type: string\n                                  expirationSeconds:\n                                    description: expirationSeconds is the requested\n                                      duration of validity of the service account\n                                      token. As the token approaches expiration, the\n                                      kubelet volume plugin will proactively rotate\n                                      the service account token. The kubelet will\n                                      start trying to rotate the token if the token\n                                      is older than 80 percent of its time to live\n                                      or if the token is older than 24 hours.Defaults\n                                      to 1 hour and must be at least 10 minutes.\n                                    format: int64\n                                    type: integer\n                                  path:\n                                    description: path is the path relative to the\n                                      mount point of the file to project the token\n                                      into.\n                                    type: string\n                                required:\n                                - path\n                                type: object\n                            type: object\n                          type: array\n                      type: object\n                    quobyte:\n                      description: quobyte represents a Quobyte mount on the host\n                        that shares a pod's lifetime\n                      properties:\n                        group:\n                          description: group to map volume access to Default is no\n                            group\n                          type: string\n                        readOnly:\n                          description: readOnly here will force the Quobyte volume\n                            to be mounted with read-only permissions. Defaults to\n                            false.\n                          type: boolean\n                        registry:\n                          description: registry represents a single or multiple Quobyte\n                            Registry services specified as a string as host:port pair\n                            (multiple entries are separated with commas) which acts\n                            as the central registry for volumes\n                          type: string\n                        tenant:\n                          description: tenant owning the given Quobyte volume in the\n                            Backend Used with dynamically provisioned Quobyte volumes,\n                            value is set by the plugin\n                          type: string\n                        user:\n                          description: user to map volume access to Defaults to serivceaccount\n                            user\n                          type: string\n                        volume:\n                          description: volume is a string that references an already\n                            created Quobyte volume by name.\n                          type: string\n                      required:\n                      - registry\n                      - volume\n                      type: object\n                    rbd:\n                      description: 'rbd represents a Rados Block Device mount on the\n                        host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md'\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type of the volume\n                            that you want to mount. Tip: Ensure that the filesystem\n                            type is supported by the host operating system. Examples:\n                            \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\n                            TODO: how do we prevent errors in the filesystem from\n                            compromising the machine'\n                          type: string\n                        image:\n                          description: 'image is the rados image name. More info:\n                            https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                        keyring:\n                          description: 'keyring is the path to key ring for RBDUser.\n                            Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                        monitors:\n                          description: 'monitors is a collection of Ceph monitors.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          items:\n                            type: string\n                          type: array\n                        pool:\n                          description: 'pool is the rados pool name. Default is rbd.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the ReadOnly setting\n                            in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: boolean\n                        secretRef:\n                          description: 'secretRef is name of the authentication secret\n                            for RBDUser. If provided overrides keyring. Default is\n                            nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        user:\n                          description: 'user is the rados user name. Default is admin.\n                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                      required:\n                      - image\n                      - monitors\n                      type: object\n                    scaleIO:\n                      description: scaleIO represents a ScaleIO persistent volume\n                        attached and mounted on Kubernetes nodes.\n                      properties:\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Default is \"xfs\".\n                          type: string\n                        gateway:\n                          description: gateway is the host address of the ScaleIO\n                            API Gateway.\n                          type: string\n                        protectionDomain:\n                          description: protectionDomain is the name of the ScaleIO\n                            Protection Domain for the configured storage.\n                          type: string\n                        readOnly:\n                          description: readOnly Defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretRef:\n                          description: secretRef references to the secret for ScaleIO\n                            user and other sensitive information. If this is not provided,\n                            Login operation will fail.\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        sslEnabled:\n                          description: sslEnabled Flag enable/disable SSL communication\n                            with Gateway, default false\n                          type: boolean\n                        storageMode:\n                          description: storageMode indicates whether the storage for\n                            a volume should be ThickProvisioned or ThinProvisioned.\n                            Default is ThinProvisioned.\n                          type: string\n                        storagePool:\n                          description: storagePool is the ScaleIO Storage Pool associated\n                            with the protection domain.\n                          type: string\n                        system:\n                          description: system is the name of the storage system as\n                            configured in ScaleIO.\n                          type: string\n                        volumeName:\n                          description: volumeName is the name of a volume already\n                            created in the ScaleIO system that is associated with\n                            this volume source.\n                          type: string\n                      required:\n                      - gateway\n                      - secretRef\n                      - system\n                      type: object\n                    secret:\n                      description: 'secret represents a secret that should populate\n                        this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'\n                      properties:\n                        defaultMode:\n                          description: 'defaultMode is Optional: mode bits used to\n                            set permissions on created files by default. Must be an\n                            octal value between 0000 and 0777 or a decimal value between\n                            0 and 511. YAML accepts both octal and decimal values,\n                            JSON requires decimal values for mode bits. Defaults to\n                            0644. Directories within the path are not affected by\n                            this setting. This might be in conflict with other options\n                            that affect the file mode, like fsGroup, and the result\n                            can be other mode bits set.'\n                          format: int32\n                          type: integer\n                        items:\n                          description: items If unspecified, each key-value pair in\n                            the Data field of the referenced Secret will be projected\n                            into the volume as a file whose name is the key and content\n                            is the value. If specified, the listed keys will be projected\n                            into the specified paths, and unlisted keys will not be\n                            present. If a key is specified which is not present in\n                            the Secret, the volume setup will error unless it is marked\n                            optional. Paths must be relative and may not contain the\n                            '..' path or start with '..'.\n                          items:\n                            description: Maps a string key to a path within a volume.\n                            properties:\n                              key:\n                                description: key is the key to project.\n                                type: string\n                              mode:\n                                description: 'mode is Optional: mode bits used to\n                                  set permissions on this file. Must be an octal value\n                                  between 0000 and 0777 or a decimal value between\n                                  0 and 511. YAML accepts both octal and decimal values,\n                                  JSON requires decimal values for mode bits. If not\n                                  specified, the volume defaultMode will be used.\n                                  This might be in conflict with other options that\n                                  affect the file mode, like fsGroup, and the result\n                                  can be other mode bits set.'\n                                format: int32\n                                type: integer\n                              path:\n                                description: path is the relative path of the file\n                                  to map the key to. May not be an absolute path.\n                                  May not contain the path element '..'. May not start\n                                  with the string '..'.\n                                type: string\n                            required:\n                            - key\n                            - path\n                            type: object\n                          type: array\n                        optional:\n                          description: optional field specify whether the Secret or\n                            its keys must be defined\n                          type: boolean\n                        secretName:\n                          description: 'secretName is the name of the secret in the\n                            pod''s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'\n                          type: string\n                      type: object\n                    storageos:\n                      description: storageOS represents a StorageOS volume attached\n                        and mounted on Kubernetes nodes.\n                      properties:\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must\n                            be a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified.\n                          type: string\n                        readOnly:\n                          description: readOnly defaults to false (read/write). ReadOnly\n                            here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretRef:\n                          description: secretRef specifies the secret to use for obtaining\n                            the StorageOS API credentials.  If not specified, default\n                            values will be attempted.\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n                                TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        volumeName:\n                          description: volumeName is the human-readable name of the\n                            StorageOS volume.  Volume names are only unique within\n                            a namespace.\n                          type: string\n                        volumeNamespace:\n                          description: volumeNamespace specifies the scope of the\n                            volume within StorageOS.  If no namespace is specified\n                            then the Pod's namespace will be used.  This allows the\n                            Kubernetes name scoping to be mirrored within StorageOS\n                            for tighter integration. Set VolumeName to any name to\n                            override the default behaviour. Set to \"default\" if you\n                            are not using namespaces within StorageOS. Namespaces\n                            that do not pre-exist within StorageOS will be created.\n                          type: string\n                      type: object\n                    vsphereVolume:\n                      description: vsphereVolume represents a vSphere volume attached\n                        and mounted on kubelets host machine\n                      properties:\n                        fsType:\n                          description: fsType is filesystem type to mount. Must be\n                            a filesystem type supported by the host operating system.\n                            Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\"\n                            if unspecified.\n                          type: string\n                        storagePolicyID:\n                          description: storagePolicyID is the storage Policy Based\n                            Management (SPBM) profile ID associated with the StoragePolicyName.\n                          type: string\n                        storagePolicyName:\n                          description: storagePolicyName is the storage Policy Based\n                            Management (SPBM) profile name.\n                          type: string\n                        volumePath:\n                          description: volumePath is the path that identifies vSphere\n                            volume vmdk\n                          type: string\n                      required:\n                      - volumePath\n                      type: object\n                  required:\n                  - name\n                  type: object\n                type: array\n            type: object\n          status:\n            description: 'Most recent observed status of the ThanosRuler cluster.\n              Read-only. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status'\n            properties:\n              availableReplicas:\n                description: Total number of available pods (ready for at least minReadySeconds)\n                  targeted by this ThanosRuler deployment.\n                format: int32\n                type: integer\n              conditions:\n                description: The current state of the Alertmanager object.\n                items:\n                  description: Condition represents the state of the resources associated\n                    with the Prometheus, Alertmanager or ThanosRuler resource.\n                  properties:\n                    lastTransitionTime:\n                      description: lastTransitionTime is the time of the last update\n                        to the current status property.\n                      format: date-time\n                      type: string\n                    message:\n                      description: Human-readable message indicating details for the\n                        condition's last transition.\n                      type: string\n                    observedGeneration:\n                      description: ObservedGeneration represents the .metadata.generation\n                        that the condition was set based upon. For instance, if `.metadata.generation`\n                        is currently 12, but the `.status.conditions[].observedGeneration`\n                        is 9, the condition is out of date with respect to the current\n                        state of the instance.\n                      format: int64\n                      type: integer\n                    reason:\n                      description: Reason for the condition's last transition.\n                      type: string\n                    status:\n                      description: Status of the condition.\n                      type: string\n                    type:\n                      description: Type of the condition being reported.\n                      type: string\n                  required:\n                  - lastTransitionTime\n                  - status\n                  - type\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - type\n                x-kubernetes-list-type: map\n              paused:\n                description: Represents whether any actions on the underlying managed\n                  objects are being performed. Only delete actions will be performed.\n                type: boolean\n              replicas:\n                description: Total number of non-terminated pods targeted by this\n                  ThanosRuler deployment (their labels match the selector).\n                format: int32\n                type: integer\n              unavailableReplicas:\n                description: Total number of unavailable pods targeted by this ThanosRuler\n                  deployment.\n                format: int32\n                type: integer\n              updatedReplicas:\n                description: Total number of non-terminated pods targeted by this\n                  ThanosRuler deployment that have the desired version spec.\n                format: int32\n                type: integer\n            required:\n            - availableReplicas\n            - paused\n            - replicas\n            - unavailableReplicas\n            - updatedReplicas\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n    subresources:\n      status: {}\n---\napiVersion: v1\nautomountServiceAccountToken: false\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: alert-router\n    app.kubernetes.io/instance: main\n    app.kubernetes.io/name: alertmanager\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.25.0\n  name: alertmanager-main\n  namespace: monitoring\n---\napiVersion: v1\nautomountServiceAccountToken: false\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: blackbox-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.24.0\n  name: blackbox-exporter\n  namespace: monitoring\n---\napiVersion: v1\nautomountServiceAccountToken: false\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 9.5.3\n  name: grafana\n  namespace: monitoring\n---\napiVersion: v1\nautomountServiceAccountToken: false\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: kube-state-metrics\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.9.2\n  name: kube-state-metrics\n  namespace: monitoring\n---\napiVersion: v1\nautomountServiceAccountToken: false\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: node-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 1.6.0\n  name: node-exporter\n  namespace: monitoring\n---\napiVersion: v1\nautomountServiceAccountToken: false\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: metrics-adapter\n    app.kubernetes.io/name: prometheus-adapter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.10.0\n  name: prometheus-adapter\n  namespace: monitoring\n---\napiVersion: v1\nautomountServiceAccountToken: true\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: prometheus\n    app.kubernetes.io/instance: k8s\n    app.kubernetes.io/name: prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.45.0\n  name: prometheus-k8s\n  namespace: monitoring\n---\napiVersion: v1\nautomountServiceAccountToken: false\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/name: prometheus-operator\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.66.0\n  name: prometheus-operator\n  namespace: monitoring\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  labels:\n    app.kubernetes.io/component: prometheus\n    app.kubernetes.io/instance: k8s\n    app.kubernetes.io/name: prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.45.0\n  name: prometheus-k8s\n  namespace: default\nrules:\n- apiGroups:\n  - \"\"\n  resources:\n  - services\n  - endpoints\n  - pods\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - extensions\n  resources:\n  - ingresses\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - networking.k8s.io\n  resources:\n  - ingresses\n  verbs:\n  - get\n  - list\n  - watch\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  labels:\n    app.kubernetes.io/component: prometheus\n    app.kubernetes.io/instance: k8s\n    app.kubernetes.io/name: prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.45.0\n  name: prometheus-k8s\n  namespace: kube-system\nrules:\n- apiGroups:\n  - \"\"\n  resources:\n  - services\n  - endpoints\n  - pods\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - extensions\n  resources:\n  - ingresses\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - networking.k8s.io\n  resources:\n  - ingresses\n  verbs:\n  - get\n  - list\n  - watch\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  labels:\n    app.kubernetes.io/component: prometheus\n    app.kubernetes.io/instance: k8s\n    app.kubernetes.io/name: prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.45.0\n  name: prometheus-k8s\n  namespace: monitoring\nrules:\n- apiGroups:\n  - \"\"\n  resources:\n  - services\n  - endpoints\n  - pods\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - extensions\n  resources:\n  - ingresses\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - networking.k8s.io\n  resources:\n  - ingresses\n  verbs:\n  - get\n  - list\n  - watch\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  labels:\n    app.kubernetes.io/component: prometheus\n    app.kubernetes.io/instance: k8s\n    app.kubernetes.io/name: prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.45.0\n  name: prometheus-k8s-config\n  namespace: monitoring\nrules:\n- apiGroups:\n  - \"\"\n  resources:\n  - configmaps\n  verbs:\n  - get\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: node-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 1.6.0\n  name: node-exporter\n  namespace: monitoring\nrules:\n- apiGroups:\n  - authentication.k8s.io\n  resources:\n  - tokenreviews\n  verbs:\n  - create\n- apiGroups:\n  - authorization.k8s.io\n  resources:\n  - subjectaccessreviews\n  verbs:\n  - create\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app.kubernetes.io/component: metrics-adapter\n    app.kubernetes.io/name: prometheus-adapter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.10.0\n  name: prometheus-adapter\n  namespace: monitoring\nrules:\n- apiGroups:\n  - \"\"\n  resources:\n  - nodes\n  - namespaces\n  - pods\n  - services\n  verbs:\n  - get\n  - list\n  - watch\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app.kubernetes.io/component: metrics-adapter\n    app.kubernetes.io/name: prometheus-adapter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.10.0\n  name: resource-metrics-server-resources\n  namespace: monitoring\nrules:\n- apiGroups:\n  - metrics.k8s.io\n  resources:\n  - '*'\n  verbs:\n  - '*'\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app.kubernetes.io/component: metrics-adapter\n    app.kubernetes.io/name: prometheus-adapter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.10.0\n    rbac.authorization.k8s.io/aggregate-to-admin: \"true\"\n    rbac.authorization.k8s.io/aggregate-to-edit: \"true\"\n    rbac.authorization.k8s.io/aggregate-to-view: \"true\"\n  name: system:aggregated-metrics-reader\n  namespace: monitoring\nrules:\n- apiGroups:\n  - metrics.k8s.io\n  resources:\n  - pods\n  - nodes\n  verbs:\n  - get\n  - list\n  - watch\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: blackbox-exporter\nrules:\n- apiGroups:\n  - authentication.k8s.io\n  resources:\n  - tokenreviews\n  verbs:\n  - create\n- apiGroups:\n  - authorization.k8s.io\n  resources:\n  - subjectaccessreviews\n  verbs:\n  - create\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: kube-state-metrics\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.9.2\n  name: kube-state-metrics\nrules:\n- apiGroups:\n  - \"\"\n  resources:\n  - configmaps\n  - secrets\n  - nodes\n  - pods\n  - services\n  - serviceaccounts\n  - resourcequotas\n  - replicationcontrollers\n  - limitranges\n  - persistentvolumeclaims\n  - persistentvolumes\n  - namespaces\n  - endpoints\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - apps\n  resources:\n  - statefulsets\n  - daemonsets\n  - deployments\n  - replicasets\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - batch\n  resources:\n  - cronjobs\n  - jobs\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - autoscaling\n  resources:\n  - horizontalpodautoscalers\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - authentication.k8s.io\n  resources:\n  - tokenreviews\n  verbs:\n  - create\n- apiGroups:\n  - authorization.k8s.io\n  resources:\n  - subjectaccessreviews\n  verbs:\n  - create\n- apiGroups:\n  - policy\n  resources:\n  - poddisruptionbudgets\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - certificates.k8s.io\n  resources:\n  - certificatesigningrequests\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - discovery.k8s.io\n  resources:\n  - endpointslices\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - storage.k8s.io\n  resources:\n  - storageclasses\n  - volumeattachments\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - admissionregistration.k8s.io\n  resources:\n  - mutatingwebhookconfigurations\n  - validatingwebhookconfigurations\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - networking.k8s.io\n  resources:\n  - networkpolicies\n  - ingressclasses\n  - ingresses\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - coordination.k8s.io\n  resources:\n  - leases\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - rbac.authorization.k8s.io\n  resources:\n  - clusterrolebindings\n  - clusterroles\n  - rolebindings\n  - roles\n  verbs:\n  - list\n  - watch\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app.kubernetes.io/component: prometheus\n    app.kubernetes.io/instance: k8s\n    app.kubernetes.io/name: prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.45.0\n  name: prometheus-k8s\nrules:\n- apiGroups:\n  - \"\"\n  resources:\n  - nodes/metrics\n  verbs:\n  - get\n- nonResourceURLs:\n  - /metrics\n  verbs:\n  - get\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/name: prometheus-operator\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.66.0\n  name: prometheus-operator\nrules:\n- apiGroups:\n  - monitoring.coreos.com\n  resources:\n  - alertmanagers\n  - alertmanagers/finalizers\n  - alertmanagers/status\n  - alertmanagerconfigs\n  - prometheuses\n  - prometheuses/finalizers\n  - prometheuses/status\n  - prometheusagents\n  - prometheusagents/finalizers\n  - prometheusagents/status\n  - thanosrulers\n  - thanosrulers/finalizers\n  - thanosrulers/status\n  - scrapeconfigs\n  - servicemonitors\n  - podmonitors\n  - probes\n  - prometheusrules\n  verbs:\n  - '*'\n- apiGroups:\n  - apps\n  resources:\n  - statefulsets\n  verbs:\n  - '*'\n- apiGroups:\n  - \"\"\n  resources:\n  - configmaps\n  - secrets\n  verbs:\n  - '*'\n- apiGroups:\n  - \"\"\n  resources:\n  - pods\n  verbs:\n  - list\n  - delete\n- apiGroups:\n  - \"\"\n  resources:\n  - services\n  - services/finalizers\n  - endpoints\n  verbs:\n  - get\n  - create\n  - update\n  - delete\n- apiGroups:\n  - \"\"\n  resources:\n  - nodes\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - \"\"\n  resources:\n  - namespaces\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - networking.k8s.io\n  resources:\n  - ingresses\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - authentication.k8s.io\n  resources:\n  - tokenreviews\n  verbs:\n  - create\n- apiGroups:\n  - authorization.k8s.io\n  resources:\n  - subjectaccessreviews\n  verbs:\n  - create\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: prometheus\n    app.kubernetes.io/instance: k8s\n    app.kubernetes.io/name: prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.45.0\n  name: prometheus-k8s\n  namespace: default\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: prometheus-k8s\nsubjects:\n- kind: ServiceAccount\n  name: prometheus-k8s\n  namespace: monitoring\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: prometheus\n    app.kubernetes.io/instance: k8s\n    app.kubernetes.io/name: prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.45.0\n  name: prometheus-k8s\n  namespace: kube-system\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: prometheus-k8s\nsubjects:\n- kind: ServiceAccount\n  name: prometheus-k8s\n  namespace: monitoring\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: metrics-adapter\n    app.kubernetes.io/name: prometheus-adapter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.10.0\n  name: resource-metrics-auth-reader\n  namespace: kube-system\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: extension-apiserver-authentication-reader\nsubjects:\n- kind: ServiceAccount\n  name: prometheus-adapter\n  namespace: monitoring\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: prometheus\n    app.kubernetes.io/instance: k8s\n    app.kubernetes.io/name: prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.45.0\n  name: prometheus-k8s\n  namespace: monitoring\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: prometheus-k8s\nsubjects:\n- kind: ServiceAccount\n  name: prometheus-k8s\n  namespace: monitoring\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: prometheus\n    app.kubernetes.io/instance: k8s\n    app.kubernetes.io/name: prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.45.0\n  name: prometheus-k8s-config\n  namespace: monitoring\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: prometheus-k8s-config\nsubjects:\n- kind: ServiceAccount\n  name: prometheus-k8s\n  namespace: monitoring\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: blackbox-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.24.0\n  name: blackbox-exporter\n  namespace: monitoring\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: blackbox-exporter\nsubjects:\n- kind: ServiceAccount\n  name: blackbox-exporter\n  namespace: monitoring\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: node-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 1.6.0\n  name: node-exporter\n  namespace: monitoring\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: node-exporter\nsubjects:\n- kind: ServiceAccount\n  name: node-exporter\n  namespace: monitoring\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: metrics-adapter\n    app.kubernetes.io/name: prometheus-adapter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.10.0\n  name: prometheus-adapter\n  namespace: monitoring\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: prometheus-adapter\nsubjects:\n- kind: ServiceAccount\n  name: prometheus-adapter\n  namespace: monitoring\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: metrics-adapter\n    app.kubernetes.io/name: prometheus-adapter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.10.0\n  name: resource-metrics:system:auth-delegator\n  namespace: monitoring\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: system:auth-delegator\nsubjects:\n- kind: ServiceAccount\n  name: prometheus-adapter\n  namespace: monitoring\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: kube-state-metrics\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.9.2\n  name: kube-state-metrics\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: kube-state-metrics\nsubjects:\n- kind: ServiceAccount\n  name: kube-state-metrics\n  namespace: monitoring\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: prometheus\n    app.kubernetes.io/instance: k8s\n    app.kubernetes.io/name: prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.45.0\n  name: prometheus-k8s\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: prometheus-k8s\nsubjects:\n- kind: ServiceAccount\n  name: prometheus-k8s\n  namespace: monitoring\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/name: prometheus-operator\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.66.0\n  name: prometheus-operator\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: prometheus-operator\nsubjects:\n- kind: ServiceAccount\n  name: prometheus-operator\n  namespace: monitoring\n---\napiVersion: v1\ndata:\n  config.yaml: |-\n    \"resourceRules\":\n      \"cpu\":\n        \"containerLabel\": \"container\"\n        \"containerQuery\": |\n          sum by (<<.GroupBy>>) (\n            irate (\n                container_cpu_usage_seconds_total{<<.LabelMatchers>>,container!=\"\",pod!=\"\"}[120s]\n            )\n          )\n        \"nodeQuery\": |\n          sum by (<<.GroupBy>>) (\n            1 - irate(\n              node_cpu_seconds_total{mode=\"idle\"}[60s]\n            )\n            * on(namespace, pod) group_left(node) (\n              node_namespace_pod:kube_pod_info:{<<.LabelMatchers>>}\n            )\n          )\n          or sum by (<<.GroupBy>>) (\n            1 - irate(\n              windows_cpu_time_total{mode=\"idle\", job=\"windows-exporter\",<<.LabelMatchers>>}[4m]\n            )\n          )\n        \"resources\":\n          \"overrides\":\n            \"namespace\":\n              \"resource\": \"namespace\"\n            \"node\":\n              \"resource\": \"node\"\n            \"pod\":\n              \"resource\": \"pod\"\n      \"memory\":\n        \"containerLabel\": \"container\"\n        \"containerQuery\": |\n          sum by (<<.GroupBy>>) (\n            container_memory_working_set_bytes{<<.LabelMatchers>>,container!=\"\",pod!=\"\"}\n          )\n        \"nodeQuery\": |\n          sum by (<<.GroupBy>>) (\n            node_memory_MemTotal_bytes{job=\"node-exporter\",<<.LabelMatchers>>}\n            -\n            node_memory_MemAvailable_bytes{job=\"node-exporter\",<<.LabelMatchers>>}\n          )\n          or sum by (<<.GroupBy>>) (\n            windows_cs_physical_memory_bytes{job=\"windows-exporter\",<<.LabelMatchers>>}\n            -\n            windows_memory_available_bytes{job=\"windows-exporter\",<<.LabelMatchers>>}\n          )\n        \"resources\":\n          \"overrides\":\n            \"instance\":\n              \"resource\": \"node\"\n            \"namespace\":\n              \"resource\": \"namespace\"\n            \"pod\":\n              \"resource\": \"pod\"\n      \"window\": \"5m\"\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/component: metrics-adapter\n    app.kubernetes.io/name: prometheus-adapter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.10.0\n  name: adapter-config\n  namespace: monitoring\n---\napiVersion: v1\ndata:\n  config.yml: |-\n    \"modules\":\n      \"http_2xx\":\n        \"http\":\n          \"preferred_ip_protocol\": \"ip4\"\n        \"prober\": \"http\"\n      \"http_post_2xx\":\n        \"http\":\n          \"method\": \"POST\"\n          \"preferred_ip_protocol\": \"ip4\"\n        \"prober\": \"http\"\n      \"irc_banner\":\n        \"prober\": \"tcp\"\n        \"tcp\":\n          \"preferred_ip_protocol\": \"ip4\"\n          \"query_response\":\n          - \"send\": \"NICK prober\"\n          - \"send\": \"USER prober prober prober :prober\"\n          - \"expect\": \"PING :([^ ]+)\"\n            \"send\": \"PONG ${1}\"\n          - \"expect\": \"^:[^ ]+ 001\"\n      \"pop3s_banner\":\n        \"prober\": \"tcp\"\n        \"tcp\":\n          \"preferred_ip_protocol\": \"ip4\"\n          \"query_response\":\n          - \"expect\": \"^+OK\"\n          \"tls\": true\n          \"tls_config\":\n            \"insecure_skip_verify\": false\n      \"ssh_banner\":\n        \"prober\": \"tcp\"\n        \"tcp\":\n          \"preferred_ip_protocol\": \"ip4\"\n          \"query_response\":\n          - \"expect\": \"^SSH-2.0-\"\n      \"tcp_connect\":\n        \"prober\": \"tcp\"\n        \"tcp\":\n          \"preferred_ip_protocol\": \"ip4\"\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: blackbox-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.24.0\n  name: blackbox-exporter-configuration\n  namespace: monitoring\n---\napiVersion: v1\ndata:\n  alertmanager-overview.json: |-\n    {\n        \"__inputs\": [\n\n        ],\n        \"__requires\": [\n\n        ],\n        \"annotations\": {\n            \"list\": [\n\n            ]\n        },\n        \"editable\": false,\n        \"gnetId\": null,\n        \"graphTooltip\": 1,\n        \"hideControls\": false,\n        \"id\": null,\n        \"links\": [\n\n        ],\n        \"refresh\": \"30s\",\n        \"rows\": [\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"description\": \"current set of alerts stored in the Alertmanager\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 2,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": false,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(alertmanager_alerts{namespace=~\\\"$namespace\\\",service=~\\\"$service\\\"}) by (namespace,service,instance)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{instance}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Alerts\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"none\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"none\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"description\": \"rate of successful and invalid alerts received by the Alertmanager\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 3,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": false,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(rate(alertmanager_alerts_received_total{namespace=~\\\"$namespace\\\",service=~\\\"$service\\\"}[$__rate_interval])) by (namespace,service,instance)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{instance}} Received\",\n                                \"refId\": \"A\"\n                            },\n                            {\n                                \"expr\": \"sum(rate(alertmanager_alerts_invalid_total{namespace=~\\\"$namespace\\\",service=~\\\"$service\\\"}[$__rate_interval])) by (namespace,service,instance)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{instance}} Invalid\",\n                                \"refId\": \"B\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Alerts receive rate\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"ops\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"ops\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Alerts\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"description\": \"rate of successful and invalid notifications sent by the Alertmanager\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 4,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": false,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": \"integration\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(rate(alertmanager_notifications_total{namespace=~\\\"$namespace\\\",service=~\\\"$service\\\", integration=\\\"$integration\\\"}[$__rate_interval])) by (integration,namespace,service,instance)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{instance}} Total\",\n                                \"refId\": \"A\"\n                            },\n                            {\n                                \"expr\": \"sum(rate(alertmanager_notifications_failed_total{namespace=~\\\"$namespace\\\",service=~\\\"$service\\\", integration=\\\"$integration\\\"}[$__rate_interval])) by (integration,namespace,service,instance)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{instance}} Failed\",\n                                \"refId\": \"B\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"$integration: Notifications Send Rate\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"ops\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"ops\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"description\": \"latency of notifications sent by the Alertmanager\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 5,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": false,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": \"integration\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"histogram_quantile(0.99,\\n  sum(rate(alertmanager_notification_latency_seconds_bucket{namespace=~\\\"$namespace\\\",service=~\\\"$service\\\", integration=\\\"$integration\\\"}[$__rate_interval])) by (le,namespace,service,instance)\\n) \\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{instance}} 99th Percentile\",\n                                \"refId\": \"A\"\n                            },\n                            {\n                                \"expr\": \"histogram_quantile(0.50,\\n  sum(rate(alertmanager_notification_latency_seconds_bucket{namespace=~\\\"$namespace\\\",service=~\\\"$service\\\", integration=\\\"$integration\\\"}[$__rate_interval])) by (le,namespace,service,instance)\\n) \\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{instance}} Median\",\n                                \"refId\": \"B\"\n                            },\n                            {\n                                \"expr\": \"sum(rate(alertmanager_notification_latency_seconds_sum{namespace=~\\\"$namespace\\\",service=~\\\"$service\\\", integration=\\\"$integration\\\"}[$__rate_interval])) by (namespace,service,instance)\\n/\\nsum(rate(alertmanager_notification_latency_seconds_count{namespace=~\\\"$namespace\\\",service=~\\\"$service\\\", integration=\\\"$integration\\\"}[$__rate_interval])) by (namespace,service,instance)\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{instance}} Average\",\n                                \"refId\": \"C\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"$integration: Notification Duration\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"s\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"s\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Notifications\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            }\n        ],\n        \"schemaVersion\": 14,\n        \"style\": \"dark\",\n        \"tags\": [\n            \"alertmanager-mixin\"\n        ],\n        \"templating\": {\n            \"list\": [\n                {\n                    \"current\": {\n                        \"text\": \"Prometheus\",\n                        \"value\": \"Prometheus\"\n                    },\n                    \"hide\": 0,\n                    \"label\": \"Data Source\",\n                    \"name\": \"datasource\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"prometheus\",\n                    \"refresh\": 1,\n                    \"regex\": \"\",\n                    \"type\": \"datasource\"\n                },\n                {\n                    \"allValue\": null,\n                    \"current\": {\n                        \"text\": \"\",\n                        \"value\": \"\"\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": false,\n                    \"label\": \"namespace\",\n                    \"multi\": false,\n                    \"name\": \"namespace\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(alertmanager_alerts, namespace)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                },\n                {\n                    \"allValue\": null,\n                    \"current\": {\n                        \"text\": \"\",\n                        \"value\": \"\"\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": false,\n                    \"label\": \"service\",\n                    \"multi\": false,\n                    \"name\": \"service\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(alertmanager_alerts, service)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                },\n                {\n                    \"allValue\": null,\n                    \"current\": {\n                        \"text\": \"all\",\n                        \"value\": \"$__all\"\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 2,\n                    \"includeAll\": true,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"integration\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(alertmanager_notifications_total{integration=~\\\".*\\\"}, integration)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                }\n            ]\n        },\n        \"time\": {\n            \"from\": \"now-1h\",\n            \"to\": \"now\"\n        },\n        \"timepicker\": {\n            \"refresh_intervals\": [\n                \"5s\",\n                \"10s\",\n                \"30s\",\n                \"1m\",\n                \"5m\",\n                \"15m\",\n                \"30m\",\n                \"1h\",\n                \"2h\",\n                \"1d\"\n            ],\n            \"time_options\": [\n                \"5m\",\n                \"15m\",\n                \"1h\",\n                \"6h\",\n                \"12h\",\n                \"24h\",\n                \"2d\",\n                \"7d\",\n                \"30d\"\n            ]\n        },\n        \"timezone\": \"utc\",\n        \"title\": \"Alertmanager / Overview\",\n        \"uid\": \"alertmanager-overview\",\n        \"version\": 0\n    }\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 9.5.3\n  name: grafana-dashboard-alertmanager-overview\n  namespace: monitoring\n---\napiVersion: v1\ndata:\n  apiserver.json: |-\n    {\n        \"__inputs\": [\n\n        ],\n        \"__requires\": [\n\n        ],\n        \"annotations\": {\n            \"list\": [\n\n            ]\n        },\n        \"editable\": false,\n        \"gnetId\": null,\n        \"graphTooltip\": 0,\n        \"hideControls\": false,\n        \"id\": null,\n        \"links\": [\n\n        ],\n        \"panels\": [\n            {\n                \"content\": \"The SLO (service level objective) and other metrics displayed on this dashboard are for informational purposes only.\",\n                \"datasource\": null,\n                \"description\": \"The SLO (service level objective) and other metrics displayed on this dashboard are for informational purposes only.\",\n                \"gridPos\": {\n                    \"h\": 2,\n                    \"w\": 24,\n                    \"x\": 0,\n                    \"y\": 0\n                },\n                \"id\": 2,\n                \"mode\": \"markdown\",\n                \"span\": 12,\n                \"title\": \"Notice\",\n                \"type\": \"text\"\n            }\n        ],\n        \"refresh\": \"10s\",\n        \"rows\": [\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"cacheTimeout\": null,\n                        \"colorBackground\": false,\n                        \"colorValue\": false,\n                        \"colors\": [\n                            \"#299c46\",\n                            \"rgba(237, 129, 40, 0.89)\",\n                            \"#d44a3a\"\n                        ],\n                        \"datasource\": \"$datasource\",\n                        \"decimals\": 3,\n                        \"description\": \"How many percent of requests (both read and write) in 30 days have been answered successfully and fast enough?\",\n                        \"format\": \"percentunit\",\n                        \"gauge\": {\n                            \"maxValue\": 100,\n                            \"minValue\": 0,\n                            \"show\": false,\n                            \"thresholdLabels\": false,\n                            \"thresholdMarkers\": true\n                        },\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 3,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"rightSide\": true\n                        },\n                        \"links\": [\n\n                        ],\n                        \"mappingType\": 1,\n                        \"mappingTypes\": [\n                            {\n                                \"name\": \"value to text\",\n                                \"value\": 1\n                            },\n                            {\n                                \"name\": \"range to text\",\n                                \"value\": 2\n                            }\n                        ],\n                        \"maxDataPoints\": 100,\n                        \"nullPointMode\": \"connected\",\n                        \"nullText\": null,\n                        \"postfix\": \"\",\n                        \"postfixFontSize\": \"50%\",\n                        \"prefix\": \"\",\n                        \"prefixFontSize\": \"50%\",\n                        \"rangeMaps\": [\n                            {\n                                \"from\": \"null\",\n                                \"text\": \"N/A\",\n                                \"to\": \"null\"\n                            }\n                        ],\n                        \"span\": 4,\n                        \"sparkline\": {\n                            \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n                            \"full\": false,\n                            \"lineColor\": \"rgb(31, 120, 193)\",\n                            \"show\": false\n                        },\n                        \"tableColumn\": \"\",\n                        \"targets\": [\n                            {\n                                \"expr\": \"apiserver_request:availability30d{verb=\\\"all\\\", cluster=\\\"$cluster\\\"}\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": \"\",\n                        \"title\": \"Availability (30d) > 99.000%\",\n                        \"tooltip\": {\n                            \"shared\": false\n                        },\n                        \"type\": \"singlestat\",\n                        \"valueFontSize\": \"80%\",\n                        \"valueMaps\": [\n                            {\n                                \"op\": \"=\",\n                                \"text\": \"N/A\",\n                                \"value\": \"null\"\n                            }\n                        ],\n                        \"valueName\": \"avg\"\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"decimals\": 3,\n                        \"description\": \"How much error budget is left looking at our 0.990% availability guarantees?\",\n                        \"fill\": 10,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 4,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 8,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"100 * (apiserver_request:availability30d{verb=\\\"all\\\", cluster=\\\"$cluster\\\"} - 0.990000)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"errorbudget\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"ErrorBudget (30d) > 99.000%\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"decimals\": 3,\n                                \"format\": \"percentunit\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"decimals\": 3,\n                                \"format\": \"percentunit\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": false,\n                \"title\": \"Dashboard Row\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"cacheTimeout\": null,\n                        \"colorBackground\": false,\n                        \"colorValue\": false,\n                        \"colors\": [\n                            \"#299c46\",\n                            \"rgba(237, 129, 40, 0.89)\",\n                            \"#d44a3a\"\n                        ],\n                        \"datasource\": \"$datasource\",\n                        \"decimals\": 3,\n                        \"description\": \"How many percent of read requests (LIST,GET) in 30 days have been answered successfully and fast enough?\",\n                        \"format\": \"percentunit\",\n                        \"gauge\": {\n                            \"maxValue\": 100,\n                            \"minValue\": 0,\n                            \"show\": false,\n                            \"thresholdLabels\": false,\n                            \"thresholdMarkers\": true\n                        },\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 5,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"rightSide\": true\n                        },\n                        \"links\": [\n\n                        ],\n                        \"mappingType\": 1,\n                        \"mappingTypes\": [\n                            {\n                                \"name\": \"value to text\",\n                                \"value\": 1\n                            },\n                            {\n                                \"name\": \"range to text\",\n                                \"value\": 2\n                            }\n                        ],\n                        \"maxDataPoints\": 100,\n                        \"nullPointMode\": \"connected\",\n                        \"nullText\": null,\n                        \"postfix\": \"\",\n                        \"postfixFontSize\": \"50%\",\n                        \"prefix\": \"\",\n                        \"prefixFontSize\": \"50%\",\n                        \"rangeMaps\": [\n                            {\n                                \"from\": \"null\",\n                                \"text\": \"N/A\",\n                                \"to\": \"null\"\n                            }\n                        ],\n                        \"span\": 3,\n                        \"sparkline\": {\n                            \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n                            \"full\": false,\n                            \"lineColor\": \"rgb(31, 120, 193)\",\n                            \"show\": false\n                        },\n                        \"tableColumn\": \"\",\n                        \"targets\": [\n                            {\n                                \"expr\": \"apiserver_request:availability30d{verb=\\\"read\\\", cluster=\\\"$cluster\\\"}\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": \"\",\n                        \"title\": \"Read Availability (30d)\",\n                        \"tooltip\": {\n                            \"shared\": false\n                        },\n                        \"type\": \"singlestat\",\n                        \"valueFontSize\": \"80%\",\n                        \"valueMaps\": [\n                            {\n                                \"op\": \"=\",\n                                \"text\": \"N/A\",\n                                \"value\": \"null\"\n                            }\n                        ],\n                        \"valueName\": \"avg\"\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"description\": \"How many read requests (LIST,GET) per second do the apiservers get by code?\",\n                        \"fill\": 10,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 6,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n                            {\n                                \"alias\": \"/2../i\",\n                                \"color\": \"#56A64B\"\n                            },\n                            {\n                                \"alias\": \"/3../i\",\n                                \"color\": \"#F2CC0C\"\n                            },\n                            {\n                                \"alias\": \"/4../i\",\n                                \"color\": \"#3274D9\"\n                            },\n                            {\n                                \"alias\": \"/5../i\",\n                                \"color\": \"#E02F44\"\n                            }\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 3,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum by (code) (code_resource:apiserver_request_total:rate5m{verb=\\\"read\\\", cluster=\\\"$cluster\\\"})\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{ code }}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Read SLI - Requests\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"reqps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"reqps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"description\": \"How many percent of read requests (LIST,GET) per second are returned with errors (5xx)?\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 7,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 3,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum by (resource) (code_resource:apiserver_request_total:rate5m{verb=\\\"read\\\",code=~\\\"5..\\\", cluster=\\\"$cluster\\\"}) / sum by (resource) (code_resource:apiserver_request_total:rate5m{verb=\\\"read\\\", cluster=\\\"$cluster\\\"})\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{ resource }}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Read SLI - Errors\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"percentunit\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"percentunit\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"description\": \"How many seconds is the 99th percentile for reading (LIST|GET) a given resource?\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 8,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 3,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"cluster_quantile:apiserver_request_slo_duration_seconds:histogram_quantile{verb=\\\"read\\\", cluster=\\\"$cluster\\\"}\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{ resource }}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Read SLI - Duration\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"s\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"s\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": false,\n                \"title\": \"Dashboard Row\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"cacheTimeout\": null,\n                        \"colorBackground\": false,\n                        \"colorValue\": false,\n                        \"colors\": [\n                            \"#299c46\",\n                            \"rgba(237, 129, 40, 0.89)\",\n                            \"#d44a3a\"\n                        ],\n                        \"datasource\": \"$datasource\",\n                        \"decimals\": 3,\n                        \"description\": \"How many percent of write requests (POST|PUT|PATCH|DELETE) in 30 days have been answered successfully and fast enough?\",\n                        \"format\": \"percentunit\",\n                        \"gauge\": {\n                            \"maxValue\": 100,\n                            \"minValue\": 0,\n                            \"show\": false,\n                            \"thresholdLabels\": false,\n                            \"thresholdMarkers\": true\n                        },\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 9,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"rightSide\": true\n                        },\n                        \"links\": [\n\n                        ],\n                        \"mappingType\": 1,\n                        \"mappingTypes\": [\n                            {\n                                \"name\": \"value to text\",\n                                \"value\": 1\n                            },\n                            {\n                                \"name\": \"range to text\",\n                                \"value\": 2\n                            }\n                        ],\n                        \"maxDataPoints\": 100,\n                        \"nullPointMode\": \"connected\",\n                        \"nullText\": null,\n                        \"postfix\": \"\",\n                        \"postfixFontSize\": \"50%\",\n                        \"prefix\": \"\",\n                        \"prefixFontSize\": \"50%\",\n                        \"rangeMaps\": [\n                            {\n                                \"from\": \"null\",\n                                \"text\": \"N/A\",\n                                \"to\": \"null\"\n                            }\n                        ],\n                        \"span\": 3,\n                        \"sparkline\": {\n                            \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n                            \"full\": false,\n                            \"lineColor\": \"rgb(31, 120, 193)\",\n                            \"show\": false\n                        },\n                        \"tableColumn\": \"\",\n                        \"targets\": [\n                            {\n                                \"expr\": \"apiserver_request:availability30d{verb=\\\"write\\\", cluster=\\\"$cluster\\\"}\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": \"\",\n                        \"title\": \"Write Availability (30d)\",\n                        \"tooltip\": {\n                            \"shared\": false\n                        },\n                        \"type\": \"singlestat\",\n                        \"valueFontSize\": \"80%\",\n                        \"valueMaps\": [\n                            {\n                                \"op\": \"=\",\n                                \"text\": \"N/A\",\n                                \"value\": \"null\"\n                            }\n                        ],\n                        \"valueName\": \"avg\"\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"description\": \"How many write requests (POST|PUT|PATCH|DELETE) per second do the apiservers get by code?\",\n                        \"fill\": 10,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 10,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n                            {\n                                \"alias\": \"/2../i\",\n                                \"color\": \"#56A64B\"\n                            },\n                            {\n                                \"alias\": \"/3../i\",\n                                \"color\": \"#F2CC0C\"\n                            },\n                            {\n                                \"alias\": \"/4../i\",\n                                \"color\": \"#3274D9\"\n                            },\n                            {\n                                \"alias\": \"/5../i\",\n                                \"color\": \"#E02F44\"\n                            }\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 3,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum by (code) (code_resource:apiserver_request_total:rate5m{verb=\\\"write\\\", cluster=\\\"$cluster\\\"})\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{ code }}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Write SLI - Requests\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"reqps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"reqps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"description\": \"How many percent of write requests (POST|PUT|PATCH|DELETE) per second are returned with errors (5xx)?\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 11,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 3,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum by (resource) (code_resource:apiserver_request_total:rate5m{verb=\\\"write\\\",code=~\\\"5..\\\", cluster=\\\"$cluster\\\"}) / sum by (resource) (code_resource:apiserver_request_total:rate5m{verb=\\\"write\\\", cluster=\\\"$cluster\\\"})\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{ resource }}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Write SLI - Errors\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"percentunit\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"percentunit\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"description\": \"How many seconds is the 99th percentile for writing (POST|PUT|PATCH|DELETE) a given resource?\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 12,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 3,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"cluster_quantile:apiserver_request_slo_duration_seconds:histogram_quantile{verb=\\\"write\\\", cluster=\\\"$cluster\\\"}\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{ resource }}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Write SLI - Duration\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"s\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"s\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": false,\n                \"title\": \"Dashboard Row\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 13,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": false,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(rate(workqueue_adds_total{job=\\\"apiserver\\\", instance=~\\\"$instance\\\", cluster=\\\"$cluster\\\"}[$__rate_interval])) by (instance, name)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{instance}} {{name}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Work Queue Add Rate\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"ops\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"ops\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 14,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": false,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(rate(workqueue_depth{job=\\\"apiserver\\\", instance=~\\\"$instance\\\", cluster=\\\"$cluster\\\"}[$__rate_interval])) by (instance, name)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{instance}} {{name}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Work Queue Depth\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 15,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": true,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": true\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"histogram_quantile(0.99, sum(rate(workqueue_queue_duration_seconds_bucket{job=\\\"apiserver\\\", instance=~\\\"$instance\\\", cluster=\\\"$cluster\\\"}[$__rate_interval])) by (instance, name, le))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{instance}} {{name}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Work Queue Latency\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"s\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"s\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": false,\n                \"title\": \"Dashboard Row\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 16,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 4,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"process_resident_memory_bytes{job=\\\"apiserver\\\",instance=~\\\"$instance\\\", cluster=\\\"$cluster\\\"}\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{instance}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Memory\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"bytes\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"bytes\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 17,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 4,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"rate(process_cpu_seconds_total{job=\\\"apiserver\\\",instance=~\\\"$instance\\\", cluster=\\\"$cluster\\\"}[$__rate_interval])\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{instance}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"CPU usage\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 18,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 4,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"go_goroutines{job=\\\"apiserver\\\",instance=~\\\"$instance\\\", cluster=\\\"$cluster\\\"}\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{instance}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Goroutines\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": false,\n                \"title\": \"Dashboard Row\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            }\n        ],\n        \"schemaVersion\": 14,\n        \"style\": \"dark\",\n        \"tags\": [\n            \"kubernetes-mixin\"\n        ],\n        \"templating\": {\n            \"list\": [\n                {\n                    \"current\": {\n                        \"text\": \"default\",\n                        \"value\": \"default\"\n                    },\n                    \"hide\": 0,\n                    \"label\": \"Data Source\",\n                    \"name\": \"datasource\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"prometheus\",\n                    \"refresh\": 1,\n                    \"regex\": \"\",\n                    \"type\": \"datasource\"\n                },\n                {\n                    \"allValue\": null,\n                    \"current\": {\n\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": false,\n                    \"label\": \"cluster\",\n                    \"multi\": false,\n                    \"name\": \"cluster\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(up{job=\\\"apiserver\\\"}, cluster)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                },\n                {\n                    \"allValue\": null,\n                    \"current\": {\n\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": true,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"instance\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(up{job=\\\"apiserver\\\", cluster=\\\"$cluster\\\"}, instance)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                }\n            ]\n        },\n        \"time\": {\n            \"from\": \"now-1h\",\n            \"to\": \"now\"\n        },\n        \"timepicker\": {\n            \"refresh_intervals\": [\n                \"5s\",\n                \"10s\",\n                \"30s\",\n                \"1m\",\n                \"5m\",\n                \"15m\",\n                \"30m\",\n                \"1h\",\n                \"2h\",\n                \"1d\"\n            ],\n            \"time_options\": [\n                \"5m\",\n                \"15m\",\n                \"1h\",\n                \"6h\",\n                \"12h\",\n                \"24h\",\n                \"2d\",\n                \"7d\",\n                \"30d\"\n            ]\n        },\n        \"timezone\": \"UTC\",\n        \"title\": \"Kubernetes / API server\",\n        \"uid\": \"09ec8aa1e996d6ffcd6817bbaff4db1b\",\n        \"version\": 0\n    }\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 9.5.3\n  name: grafana-dashboard-apiserver\n  namespace: monitoring\n---\napiVersion: v1\ndata:\n  cluster-total.json: |-\n    {\n        \"__inputs\": [\n\n        ],\n        \"__requires\": [\n\n        ],\n        \"annotations\": {\n            \"list\": [\n                {\n                    \"builtIn\": 1,\n                    \"datasource\": \"-- Grafana --\",\n                    \"enable\": true,\n                    \"hide\": true,\n                    \"iconColor\": \"rgba(0, 211, 255, 1)\",\n                    \"name\": \"Annotations & Alerts\",\n                    \"type\": \"dashboard\"\n                }\n            ]\n        },\n        \"editable\": true,\n        \"gnetId\": null,\n        \"graphTooltip\": 0,\n        \"hideControls\": false,\n        \"id\": null,\n        \"links\": [\n\n        ],\n        \"panels\": [\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"gridPos\": {\n                    \"h\": 1,\n                    \"w\": 24,\n                    \"x\": 0,\n                    \"y\": 0\n                },\n                \"id\": 2,\n                \"panels\": [\n\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Current Bandwidth\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"aliasColors\": {\n\n                },\n                \"bars\": true,\n                \"dashLength\": 10,\n                \"dashes\": false,\n                \"datasource\": \"$datasource\",\n                \"fill\": 2,\n                \"fillGradient\": 0,\n                \"gridPos\": {\n                    \"h\": 9,\n                    \"w\": 12,\n                    \"x\": 0,\n                    \"y\": 1\n                },\n                \"id\": 3,\n                \"legend\": {\n                    \"alignAsTable\": true,\n                    \"avg\": false,\n                    \"current\": true,\n                    \"hideEmpty\": true,\n                    \"hideZero\": true,\n                    \"max\": false,\n                    \"min\": false,\n                    \"rightSide\": true,\n                    \"show\": true,\n                    \"sideWidth\": null,\n                    \"sort\": \"current\",\n                    \"sortDesc\": true,\n                    \"total\": false,\n                    \"values\": true\n                },\n                \"lines\": false,\n                \"linewidth\": 1,\n                \"links\": [\n\n                ],\n                \"minSpan\": 24,\n                \"nullPointMode\": \"null\",\n                \"paceLength\": 10,\n                \"percentage\": false,\n                \"pointradius\": 5,\n                \"points\": false,\n                \"renderer\": \"flot\",\n                \"repeat\": null,\n                \"seriesOverrides\": [\n\n                ],\n                \"spaceLength\": 10,\n                \"span\": 24,\n                \"stack\": false,\n                \"steppedLine\": false,\n                \"targets\": [\n                    {\n                        \"expr\": \"sort_desc(sum(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\n                        \"format\": \"time_series\",\n                        \"intervalFactor\": 1,\n                        \"legendFormat\": \"{{namespace}}\",\n                        \"refId\": \"A\",\n                        \"step\": 10\n                    }\n                ],\n                \"thresholds\": [\n\n                ],\n                \"timeFrom\": null,\n                \"timeShift\": null,\n                \"title\": \"Current Rate of Bytes Received\",\n                \"tooltip\": {\n                    \"shared\": true,\n                    \"sort\": 2,\n                    \"value_type\": \"individual\"\n                },\n                \"type\": \"graph\",\n                \"xaxis\": {\n                    \"buckets\": null,\n                    \"mode\": \"series\",\n                    \"name\": null,\n                    \"show\": false,\n                    \"values\": [\n                        \"current\"\n                    ]\n                },\n                \"yaxes\": [\n                    {\n                        \"format\": \"Bps\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": 0,\n                        \"show\": true\n                    },\n                    {\n                        \"format\": \"Bps\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": 0,\n                        \"show\": true\n                    }\n                ]\n            },\n            {\n                \"aliasColors\": {\n\n                },\n                \"bars\": true,\n                \"dashLength\": 10,\n                \"dashes\": false,\n                \"datasource\": \"$datasource\",\n                \"fill\": 2,\n                \"fillGradient\": 0,\n                \"gridPos\": {\n                    \"h\": 9,\n                    \"w\": 12,\n                    \"x\": 12,\n                    \"y\": 1\n                },\n                \"id\": 4,\n                \"legend\": {\n                    \"alignAsTable\": true,\n                    \"avg\": false,\n                    \"current\": true,\n                    \"hideEmpty\": true,\n                    \"hideZero\": true,\n                    \"max\": false,\n                    \"min\": false,\n                    \"rightSide\": true,\n                    \"show\": true,\n                    \"sideWidth\": null,\n                    \"sort\": \"current\",\n                    \"sortDesc\": true,\n                    \"total\": false,\n                    \"values\": true\n                },\n                \"lines\": false,\n                \"linewidth\": 1,\n                \"links\": [\n\n                ],\n                \"minSpan\": 24,\n                \"nullPointMode\": \"null\",\n                \"paceLength\": 10,\n                \"percentage\": false,\n                \"pointradius\": 5,\n                \"points\": false,\n                \"renderer\": \"flot\",\n                \"repeat\": null,\n                \"seriesOverrides\": [\n\n                ],\n                \"spaceLength\": 10,\n                \"span\": 24,\n                \"stack\": false,\n                \"steppedLine\": false,\n                \"targets\": [\n                    {\n                        \"expr\": \"sort_desc(sum(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\n                        \"format\": \"time_series\",\n                        \"intervalFactor\": 1,\n                        \"legendFormat\": \"{{namespace}}\",\n                        \"refId\": \"A\",\n                        \"step\": 10\n                    }\n                ],\n                \"thresholds\": [\n\n                ],\n                \"timeFrom\": null,\n                \"timeShift\": null,\n                \"title\": \"Current Rate of Bytes Transmitted\",\n                \"tooltip\": {\n                    \"shared\": true,\n                    \"sort\": 2,\n                    \"value_type\": \"individual\"\n                },\n                \"type\": \"graph\",\n                \"xaxis\": {\n                    \"buckets\": null,\n                    \"mode\": \"series\",\n                    \"name\": null,\n                    \"show\": false,\n                    \"values\": [\n                        \"current\"\n                    ]\n                },\n                \"yaxes\": [\n                    {\n                        \"format\": \"Bps\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": 0,\n                        \"show\": true\n                    },\n                    {\n                        \"format\": \"Bps\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": 0,\n                        \"show\": true\n                    }\n                ]\n            },\n            {\n                \"columns\": [\n                    {\n                        \"text\": \"Time\",\n                        \"value\": \"Time\"\n                    },\n                    {\n                        \"text\": \"Value #A\",\n                        \"value\": \"Value #A\"\n                    },\n                    {\n                        \"text\": \"Value #B\",\n                        \"value\": \"Value #B\"\n                    },\n                    {\n                        \"text\": \"Value #C\",\n                        \"value\": \"Value #C\"\n                    },\n                    {\n                        \"text\": \"Value #D\",\n                        \"value\": \"Value #D\"\n                    },\n                    {\n                        \"text\": \"Value #E\",\n                        \"value\": \"Value #E\"\n                    },\n                    {\n                        \"text\": \"Value #F\",\n                        \"value\": \"Value #F\"\n                    },\n                    {\n                        \"text\": \"Value #G\",\n                        \"value\": \"Value #G\"\n                    },\n                    {\n                        \"text\": \"Value #H\",\n                        \"value\": \"Value #H\"\n                    },\n                    {\n                        \"text\": \"namespace\",\n                        \"value\": \"namespace\"\n                    }\n                ],\n                \"datasource\": \"$datasource\",\n                \"fill\": 1,\n                \"fontSize\": \"90%\",\n                \"gridPos\": {\n                    \"h\": 9,\n                    \"w\": 24,\n                    \"x\": 0,\n                    \"y\": 10\n                },\n                \"id\": 5,\n                \"lines\": true,\n                \"linewidth\": 1,\n                \"links\": [\n\n                ],\n                \"minSpan\": 24,\n                \"nullPointMode\": \"null as zero\",\n                \"renderer\": \"flot\",\n                \"scroll\": true,\n                \"showHeader\": true,\n                \"sort\": {\n                    \"col\": 0,\n                    \"desc\": false\n                },\n                \"spaceLength\": 10,\n                \"span\": 24,\n                \"styles\": [\n                    {\n                        \"alias\": \"Time\",\n                        \"colorMode\": null,\n                        \"colors\": [\n\n                        ],\n                        \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                        \"decimals\": 2,\n                        \"link\": false,\n                        \"linkTooltip\": \"Drill down\",\n                        \"linkUrl\": \"\",\n                        \"pattern\": \"Time\",\n                        \"thresholds\": [\n\n                        ],\n                        \"type\": \"hidden\",\n                        \"unit\": \"short\"\n                    },\n                    {\n                        \"alias\": \"Current Bandwidth Received\",\n                        \"colorMode\": null,\n                        \"colors\": [\n\n                        ],\n                        \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                        \"decimals\": 2,\n                        \"link\": false,\n                        \"linkTooltip\": \"Drill down\",\n                        \"linkUrl\": \"\",\n                        \"pattern\": \"Value #A\",\n                        \"thresholds\": [\n\n                        ],\n                        \"type\": \"number\",\n                        \"unit\": \"Bps\"\n                    },\n                    {\n                        \"alias\": \"Current Bandwidth Transmitted\",\n                        \"colorMode\": null,\n                        \"colors\": [\n\n                        ],\n                        \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                        \"decimals\": 2,\n                        \"link\": false,\n                        \"linkTooltip\": \"Drill down\",\n                        \"linkUrl\": \"\",\n                        \"pattern\": \"Value #B\",\n                        \"thresholds\": [\n\n                        ],\n                        \"type\": \"number\",\n                        \"unit\": \"Bps\"\n                    },\n                    {\n                        \"alias\": \"Average Bandwidth Received\",\n                        \"colorMode\": null,\n                        \"colors\": [\n\n                        ],\n                        \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                        \"decimals\": 2,\n                        \"link\": false,\n                        \"linkTooltip\": \"Drill down\",\n                        \"linkUrl\": \"\",\n                        \"pattern\": \"Value #C\",\n                        \"thresholds\": [\n\n                        ],\n                        \"type\": \"number\",\n                        \"unit\": \"Bps\"\n                    },\n                    {\n                        \"alias\": \"Average Bandwidth Transmitted\",\n                        \"colorMode\": null,\n                        \"colors\": [\n\n                        ],\n                        \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                        \"decimals\": 2,\n                        \"link\": false,\n                        \"linkTooltip\": \"Drill down\",\n                        \"linkUrl\": \"\",\n                        \"pattern\": \"Value #D\",\n                        \"thresholds\": [\n\n                        ],\n                        \"type\": \"number\",\n                        \"unit\": \"Bps\"\n                    },\n                    {\n                        \"alias\": \"Rate of Received Packets\",\n                        \"colorMode\": null,\n                        \"colors\": [\n\n                        ],\n                        \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                        \"decimals\": 2,\n                        \"link\": false,\n                        \"linkTooltip\": \"Drill down\",\n                        \"linkUrl\": \"\",\n                        \"pattern\": \"Value #E\",\n                        \"thresholds\": [\n\n                        ],\n                        \"type\": \"number\",\n                        \"unit\": \"pps\"\n                    },\n                    {\n                        \"alias\": \"Rate of Transmitted Packets\",\n                        \"colorMode\": null,\n                        \"colors\": [\n\n                        ],\n                        \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                        \"decimals\": 2,\n                        \"link\": false,\n                        \"linkTooltip\": \"Drill down\",\n                        \"linkUrl\": \"\",\n                        \"pattern\": \"Value #F\",\n                        \"thresholds\": [\n\n                        ],\n                        \"type\": \"number\",\n                        \"unit\": \"pps\"\n                    },\n                    {\n                        \"alias\": \"Rate of Received Packets Dropped\",\n                        \"colorMode\": null,\n                        \"colors\": [\n\n                        ],\n                        \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                        \"decimals\": 2,\n                        \"link\": false,\n                        \"linkTooltip\": \"Drill down\",\n                        \"linkUrl\": \"\",\n                        \"pattern\": \"Value #G\",\n                        \"thresholds\": [\n\n                        ],\n                        \"type\": \"number\",\n                        \"unit\": \"pps\"\n                    },\n                    {\n                        \"alias\": \"Rate of Transmitted Packets Dropped\",\n                        \"colorMode\": null,\n                        \"colors\": [\n\n                        ],\n                        \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                        \"decimals\": 2,\n                        \"link\": false,\n                        \"linkTooltip\": \"Drill down\",\n                        \"linkUrl\": \"\",\n                        \"pattern\": \"Value #H\",\n                        \"thresholds\": [\n\n                        ],\n                        \"type\": \"number\",\n                        \"unit\": \"pps\"\n                    },\n                    {\n                        \"alias\": \"Namespace\",\n                        \"colorMode\": null,\n                        \"colors\": [\n\n                        ],\n                        \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                        \"decimals\": 2,\n                        \"link\": true,\n                        \"linkTooltip\": \"Drill down\",\n                        \"linkUrl\": \"d/8b7a8b326d7a6f1f04244066368c67af/kubernetes-networking-namespace-pods?orgId=1&refresh=30s&var-namespace=$__cell\",\n                        \"pattern\": \"namespace\",\n                        \"thresholds\": [\n\n                        ],\n                        \"type\": \"number\",\n                        \"unit\": \"short\"\n                    }\n                ],\n                \"targets\": [\n                    {\n                        \"expr\": \"sort_desc(sum(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\n                        \"format\": \"table\",\n                        \"instant\": true,\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"\",\n                        \"refId\": \"A\",\n                        \"step\": 10\n                    },\n                    {\n                        \"expr\": \"sort_desc(sum(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\n                        \"format\": \"table\",\n                        \"instant\": true,\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"\",\n                        \"refId\": \"B\",\n                        \"step\": 10\n                    },\n                    {\n                        \"expr\": \"sort_desc(avg(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\n                        \"format\": \"table\",\n                        \"instant\": true,\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"\",\n                        \"refId\": \"C\",\n                        \"step\": 10\n                    },\n                    {\n                        \"expr\": \"sort_desc(avg(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\n                        \"format\": \"table\",\n                        \"instant\": true,\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"\",\n                        \"refId\": \"D\",\n                        \"step\": 10\n                    },\n                    {\n                        \"expr\": \"sort_desc(sum(irate(container_network_receive_packets_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\n                        \"format\": \"table\",\n                        \"instant\": true,\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"\",\n                        \"refId\": \"E\",\n                        \"step\": 10\n                    },\n                    {\n                        \"expr\": \"sort_desc(sum(irate(container_network_transmit_packets_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\n                        \"format\": \"table\",\n                        \"instant\": true,\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"\",\n                        \"refId\": \"F\",\n                        \"step\": 10\n                    },\n                    {\n                        \"expr\": \"sort_desc(sum(irate(container_network_receive_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\n                        \"format\": \"table\",\n                        \"instant\": true,\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"\",\n                        \"refId\": \"G\",\n                        \"step\": 10\n                    },\n                    {\n                        \"expr\": \"sort_desc(sum(irate(container_network_transmit_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\n                        \"format\": \"table\",\n                        \"instant\": true,\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"\",\n                        \"refId\": \"H\",\n                        \"step\": 10\n                    }\n                ],\n                \"timeFrom\": null,\n                \"timeShift\": null,\n                \"title\": \"Current Status\",\n                \"type\": \"table\"\n            },\n            {\n                \"collapse\": true,\n                \"collapsed\": true,\n                \"gridPos\": {\n                    \"h\": 1,\n                    \"w\": 24,\n                    \"x\": 0,\n                    \"y\": 10\n                },\n                \"id\": 6,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": true,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 2,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n                            \"h\": 9,\n                            \"w\": 12,\n                            \"x\": 0,\n                            \"y\": 11\n                        },\n                        \"id\": 7,\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": true,\n                            \"hideEmpty\": true,\n                            \"hideZero\": true,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"sort\": \"current\",\n                            \"sortDesc\": true,\n                            \"total\": false,\n                            \"values\": true\n                        },\n                        \"lines\": false,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"minSpan\": 24,\n                        \"nullPointMode\": \"null\",\n                        \"paceLength\": 10,\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 24,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sort_desc(avg(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 1,\n                                \"legendFormat\": \"{{namespace}}\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Average Rate of Bytes Received\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"series\",\n                            \"name\": null,\n                            \"show\": false,\n                            \"values\": [\n                                \"current\"\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"Bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"Bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": true,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 2,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n                            \"h\": 9,\n                            \"w\": 12,\n                            \"x\": 12,\n                            \"y\": 11\n                        },\n                        \"id\": 8,\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": true,\n                            \"hideEmpty\": true,\n                            \"hideZero\": true,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"sort\": \"current\",\n                            \"sortDesc\": true,\n                            \"total\": false,\n                            \"values\": true\n                        },\n                        \"lines\": false,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"minSpan\": 24,\n                        \"nullPointMode\": \"null\",\n                        \"paceLength\": 10,\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 24,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sort_desc(avg(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 1,\n                                \"legendFormat\": \"{{namespace}}\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Average Rate of Bytes Transmitted\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"series\",\n                            \"name\": null,\n                            \"show\": false,\n                            \"values\": [\n                                \"current\"\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"Bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"Bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Average Bandwidth\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"gridPos\": {\n                    \"h\": 1,\n                    \"w\": 24,\n                    \"x\": 0,\n                    \"y\": 11\n                },\n                \"id\": 9,\n                \"panels\": [\n\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Bandwidth History\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"aliasColors\": {\n\n                },\n                \"bars\": false,\n                \"dashLength\": 10,\n                \"dashes\": false,\n                \"datasource\": \"$datasource\",\n                \"fill\": 2,\n                \"fillGradient\": 0,\n                \"gridPos\": {\n                    \"h\": 9,\n                    \"w\": 24,\n                    \"x\": 0,\n                    \"y\": 12\n                },\n                \"id\": 10,\n                \"legend\": {\n                    \"alignAsTable\": true,\n                    \"avg\": true,\n                    \"current\": true,\n                    \"hideEmpty\": true,\n                    \"hideZero\": true,\n                    \"max\": true,\n                    \"min\": true,\n                    \"rightSide\": true,\n                    \"show\": true,\n                    \"sideWidth\": null,\n                    \"total\": false,\n                    \"values\": true\n                },\n                \"lines\": true,\n                \"linewidth\": 2,\n                \"links\": [\n\n                ],\n                \"minSpan\": 24,\n                \"nullPointMode\": \"connected\",\n                \"paceLength\": 10,\n                \"percentage\": false,\n                \"pointradius\": 5,\n                \"points\": false,\n                \"renderer\": \"flot\",\n                \"repeat\": null,\n                \"seriesOverrides\": [\n\n                ],\n                \"spaceLength\": 10,\n                \"span\": 24,\n                \"stack\": true,\n                \"steppedLine\": false,\n                \"targets\": [\n                    {\n                        \"expr\": \"sort_desc(sum(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\n                        \"format\": \"time_series\",\n                        \"intervalFactor\": 1,\n                        \"legendFormat\": \"{{namespace}}\",\n                        \"refId\": \"A\",\n                        \"step\": 10\n                    }\n                ],\n                \"thresholds\": [\n\n                ],\n                \"timeFrom\": null,\n                \"timeShift\": null,\n                \"title\": \"Receive Bandwidth\",\n                \"tooltip\": {\n                    \"shared\": true,\n                    \"sort\": 2,\n                    \"value_type\": \"individual\"\n                },\n                \"type\": \"graph\",\n                \"xaxis\": {\n                    \"buckets\": null,\n                    \"mode\": \"time\",\n                    \"name\": null,\n                    \"show\": true,\n                    \"values\": [\n\n                    ]\n                },\n                \"yaxes\": [\n                    {\n                        \"format\": \"Bps\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": 0,\n                        \"show\": true\n                    },\n                    {\n                        \"format\": \"Bps\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": 0,\n                        \"show\": true\n                    }\n                ]\n            },\n            {\n                \"aliasColors\": {\n\n                },\n                \"bars\": false,\n                \"dashLength\": 10,\n                \"dashes\": false,\n                \"datasource\": \"$datasource\",\n                \"fill\": 2,\n                \"fillGradient\": 0,\n                \"gridPos\": {\n                    \"h\": 9,\n                    \"w\": 24,\n                    \"x\": 0,\n                    \"y\": 21\n                },\n                \"id\": 11,\n                \"legend\": {\n                    \"alignAsTable\": true,\n                    \"avg\": true,\n                    \"current\": true,\n                    \"hideEmpty\": true,\n                    \"hideZero\": true,\n                    \"max\": true,\n                    \"min\": true,\n                    \"rightSide\": true,\n                    \"show\": true,\n                    \"sideWidth\": null,\n                    \"total\": false,\n                    \"values\": true\n                },\n                \"lines\": true,\n                \"linewidth\": 2,\n                \"links\": [\n\n                ],\n                \"minSpan\": 24,\n                \"nullPointMode\": \"connected\",\n                \"paceLength\": 10,\n                \"percentage\": false,\n                \"pointradius\": 5,\n                \"points\": false,\n                \"renderer\": \"flot\",\n                \"repeat\": null,\n                \"seriesOverrides\": [\n\n                ],\n                \"spaceLength\": 10,\n                \"span\": 24,\n                \"stack\": true,\n                \"steppedLine\": false,\n                \"targets\": [\n                    {\n                        \"expr\": \"sort_desc(sum(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\n                        \"format\": \"time_series\",\n                        \"intervalFactor\": 1,\n                        \"legendFormat\": \"{{namespace}}\",\n                        \"refId\": \"A\",\n                        \"step\": 10\n                    }\n                ],\n                \"thresholds\": [\n\n                ],\n                \"timeFrom\": null,\n                \"timeShift\": null,\n                \"title\": \"Transmit Bandwidth\",\n                \"tooltip\": {\n                    \"shared\": true,\n                    \"sort\": 2,\n                    \"value_type\": \"individual\"\n                },\n                \"type\": \"graph\",\n                \"xaxis\": {\n                    \"buckets\": null,\n                    \"mode\": \"time\",\n                    \"name\": null,\n                    \"show\": true,\n                    \"values\": [\n\n                    ]\n                },\n                \"yaxes\": [\n                    {\n                        \"format\": \"Bps\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": 0,\n                        \"show\": true\n                    },\n                    {\n                        \"format\": \"Bps\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": 0,\n                        \"show\": true\n                    }\n                ]\n            },\n            {\n                \"collapse\": true,\n                \"collapsed\": true,\n                \"gridPos\": {\n                    \"h\": 1,\n                    \"w\": 24,\n                    \"x\": 0,\n                    \"y\": 30\n                },\n                \"id\": 12,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 2,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n                            \"h\": 9,\n                            \"w\": 24,\n                            \"x\": 0,\n                            \"y\": 31\n                        },\n                        \"id\": 13,\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": true,\n                            \"current\": true,\n                            \"hideEmpty\": true,\n                            \"hideZero\": true,\n                            \"max\": true,\n                            \"min\": true,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": true\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 2,\n                        \"links\": [\n\n                        ],\n                        \"minSpan\": 24,\n                        \"nullPointMode\": \"connected\",\n                        \"paceLength\": 10,\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 24,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sort_desc(sum(irate(container_network_receive_packets_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 1,\n                                \"legendFormat\": \"{{namespace}}\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Rate of Received Packets\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 2,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n                            \"h\": 9,\n                            \"w\": 24,\n                            \"x\": 0,\n                            \"y\": 40\n                        },\n                        \"id\": 14,\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": true,\n                            \"current\": true,\n                            \"hideEmpty\": true,\n                            \"hideZero\": true,\n                            \"max\": true,\n                            \"min\": true,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": true\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 2,\n                        \"links\": [\n\n                        ],\n                        \"minSpan\": 24,\n                        \"nullPointMode\": \"connected\",\n                        \"paceLength\": 10,\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 24,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sort_desc(sum(irate(container_network_transmit_packets_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 1,\n                                \"legendFormat\": \"{{namespace}}\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Rate of Transmitted Packets\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Packets\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"collapse\": true,\n                \"collapsed\": true,\n                \"gridPos\": {\n                    \"h\": 1,\n                    \"w\": 24,\n                    \"x\": 0,\n                    \"y\": 31\n                },\n                \"id\": 15,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 2,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n                            \"h\": 9,\n                            \"w\": 24,\n                            \"x\": 0,\n                            \"y\": 50\n                        },\n                        \"id\": 16,\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": true,\n                            \"current\": true,\n                            \"hideEmpty\": true,\n                            \"hideZero\": true,\n                            \"max\": true,\n                            \"min\": true,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": true\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 2,\n                        \"links\": [\n\n                        ],\n                        \"minSpan\": 24,\n                        \"nullPointMode\": \"connected\",\n                        \"paceLength\": 10,\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 24,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sort_desc(sum(irate(container_network_receive_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 1,\n                                \"legendFormat\": \"{{namespace}}\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Rate of Received Packets Dropped\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 2,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n                            \"h\": 9,\n                            \"w\": 24,\n                            \"x\": 0,\n                            \"y\": 59\n                        },\n                        \"id\": 17,\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": true,\n                            \"current\": true,\n                            \"hideEmpty\": true,\n                            \"hideZero\": true,\n                            \"max\": true,\n                            \"min\": true,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": true\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 2,\n                        \"links\": [\n\n                        ],\n                        \"minSpan\": 24,\n                        \"nullPointMode\": \"connected\",\n                        \"paceLength\": 10,\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 24,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sort_desc(sum(irate(container_network_transmit_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 1,\n                                \"legendFormat\": \"{{namespace}}\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Rate of Transmitted Packets Dropped\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 2,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n                            \"h\": 9,\n                            \"w\": 24,\n                            \"x\": 0,\n                            \"y\": 59\n                        },\n                        \"id\": 18,\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": true,\n                            \"current\": true,\n                            \"hideEmpty\": true,\n                            \"hideZero\": true,\n                            \"max\": true,\n                            \"min\": true,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": true\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 2,\n                        \"links\": [\n                            {\n                                \"targetBlank\": true,\n                                \"title\": \"What is TCP Retransmit?\",\n                                \"url\": \"https://accedian.com/enterprises/blog/network-packet-loss-retransmissions-and-duplicate-acknowledgements/\"\n                            }\n                        ],\n                        \"minSpan\": 24,\n                        \"nullPointMode\": \"connected\",\n                        \"paceLength\": 10,\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 24,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sort_desc(sum(rate(node_netstat_Tcp_RetransSegs{cluster=\\\"$cluster\\\"}[$interval:$resolution]) / rate(node_netstat_Tcp_OutSegs{cluster=\\\"$cluster\\\"}[$interval:$resolution])) by (instance))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 1,\n                                \"legendFormat\": \"{{instance}}\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Rate of TCP Retransmits out of all sent segments\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"percentunit\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"percentunit\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 2,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n                            \"h\": 9,\n                            \"w\": 24,\n                            \"x\": 0,\n                            \"y\": 59\n                        },\n                        \"id\": 19,\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": true,\n                            \"current\": true,\n                            \"hideEmpty\": true,\n                            \"hideZero\": true,\n                            \"max\": true,\n                            \"min\": true,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": true\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 2,\n                        \"links\": [\n                            {\n                                \"targetBlank\": true,\n                                \"title\": \"Why monitor SYN retransmits?\",\n                                \"url\": \"https://github.com/prometheus/node_exporter/issues/1023#issuecomment-408128365\"\n                            }\n                        ],\n                        \"minSpan\": 24,\n                        \"nullPointMode\": \"connected\",\n                        \"paceLength\": 10,\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 24,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sort_desc(sum(rate(node_netstat_TcpExt_TCPSynRetrans{cluster=\\\"$cluster\\\"}[$interval:$resolution]) / rate(node_netstat_Tcp_RetransSegs{cluster=\\\"$cluster\\\"}[$interval:$resolution])) by (instance))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 1,\n                                \"legendFormat\": \"{{instance}}\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Rate of TCP SYN Retransmits out of all retransmits\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"percentunit\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"percentunit\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Errors\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            }\n        ],\n        \"refresh\": \"10s\",\n        \"rows\": [\n\n        ],\n        \"schemaVersion\": 18,\n        \"style\": \"dark\",\n        \"tags\": [\n            \"kubernetes-mixin\"\n        ],\n        \"templating\": {\n            \"list\": [\n                {\n                    \"allValue\": null,\n                    \"auto\": false,\n                    \"auto_count\": 30,\n                    \"auto_min\": \"10s\",\n                    \"current\": {\n                        \"text\": \"5m\",\n                        \"value\": \"5m\"\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": false,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"resolution\",\n                    \"options\": [\n                        {\n                            \"selected\": false,\n                            \"text\": \"30s\",\n                            \"value\": \"30s\"\n                        },\n                        {\n                            \"selected\": true,\n                            \"text\": \"5m\",\n                            \"value\": \"5m\"\n                        },\n                        {\n                            \"selected\": false,\n                            \"text\": \"1h\",\n                            \"value\": \"1h\"\n                        }\n                    ],\n                    \"query\": \"30s,5m,1h\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"skipUrlSync\": false,\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"interval\",\n                    \"useTags\": false\n                },\n                {\n                    \"allValue\": null,\n                    \"auto\": false,\n                    \"auto_count\": 30,\n                    \"auto_min\": \"10s\",\n                    \"current\": {\n                        \"text\": \"5m\",\n                        \"value\": \"5m\"\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 2,\n                    \"includeAll\": false,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"interval\",\n                    \"options\": [\n                        {\n                            \"selected\": true,\n                            \"text\": \"4h\",\n                            \"value\": \"4h\"\n                        }\n                    ],\n                    \"query\": \"4h\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"skipUrlSync\": false,\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"interval\",\n                    \"useTags\": false\n                },\n                {\n                    \"current\": {\n                        \"text\": \"default\",\n                        \"value\": \"default\"\n                    },\n                    \"hide\": 0,\n                    \"label\": \"Data Source\",\n                    \"name\": \"datasource\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"prometheus\",\n                    \"refresh\": 1,\n                    \"regex\": \"\",\n                    \"type\": \"datasource\"\n                },\n                {\n                    \"allValue\": null,\n                    \"current\": {\n\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": false,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"cluster\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(up{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\"}, cluster)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"sort\": 0,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                }\n            ]\n        },\n        \"time\": {\n            \"from\": \"now-1h\",\n            \"to\": \"now\"\n        },\n        \"timepicker\": {\n            \"refresh_intervals\": [\n                \"5s\",\n                \"10s\",\n                \"30s\",\n                \"1m\",\n                \"5m\",\n                \"15m\",\n                \"30m\",\n                \"1h\",\n                \"2h\",\n                \"1d\"\n            ],\n            \"time_options\": [\n                \"5m\",\n                \"15m\",\n                \"1h\",\n                \"6h\",\n                \"12h\",\n                \"24h\",\n                \"2d\",\n                \"7d\",\n                \"30d\"\n            ]\n        },\n        \"timezone\": \"UTC\",\n        \"title\": \"Kubernetes / Networking / Cluster\",\n        \"uid\": \"ff635a025bcfea7bc3dd4f508990a3e9\",\n        \"version\": 0\n    }\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 9.5.3\n  name: grafana-dashboard-cluster-total\n  namespace: monitoring\n---\napiVersion: v1\ndata:\n  controller-manager.json: |-\n    {\n        \"__inputs\": [\n\n        ],\n        \"__requires\": [\n\n        ],\n        \"annotations\": {\n            \"list\": [\n\n            ]\n        },\n        \"editable\": false,\n        \"gnetId\": null,\n        \"graphTooltip\": 0,\n        \"hideControls\": false,\n        \"id\": null,\n        \"links\": [\n\n        ],\n        \"refresh\": \"10s\",\n        \"rows\": [\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"cacheTimeout\": null,\n                        \"colorBackground\": false,\n                        \"colorValue\": false,\n                        \"colors\": [\n                            \"#299c46\",\n                            \"rgba(237, 129, 40, 0.89)\",\n                            \"#d44a3a\"\n                        ],\n                        \"datasource\": \"$datasource\",\n                        \"format\": \"none\",\n                        \"gauge\": {\n                            \"maxValue\": 100,\n                            \"minValue\": 0,\n                            \"show\": false,\n                            \"thresholdLabels\": false,\n                            \"thresholdMarkers\": true\n                        },\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 2,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"rightSide\": true\n                        },\n                        \"links\": [\n\n                        ],\n                        \"mappingType\": 1,\n                        \"mappingTypes\": [\n                            {\n                                \"name\": \"value to text\",\n                                \"value\": 1\n                            },\n                            {\n                                \"name\": \"range to text\",\n                                \"value\": 2\n                            }\n                        ],\n                        \"maxDataPoints\": 100,\n                        \"nullPointMode\": \"connected\",\n                        \"nullText\": null,\n                        \"postfix\": \"\",\n                        \"postfixFontSize\": \"50%\",\n                        \"prefix\": \"\",\n                        \"prefixFontSize\": \"50%\",\n                        \"rangeMaps\": [\n                            {\n                                \"from\": \"null\",\n                                \"text\": \"N/A\",\n                                \"to\": \"null\"\n                            }\n                        ],\n                        \"span\": 2,\n                        \"sparkline\": {\n                            \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n                            \"full\": false,\n                            \"lineColor\": \"rgb(31, 120, 193)\",\n                            \"show\": false\n                        },\n                        \"tableColumn\": \"\",\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(up{cluster=\\\"$cluster\\\", job=\\\"kube-controller-manager\\\"})\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": \"\",\n                        \"title\": \"Up\",\n                        \"tooltip\": {\n                            \"shared\": false\n                        },\n                        \"type\": \"singlestat\",\n                        \"valueFontSize\": \"80%\",\n                        \"valueMaps\": [\n                            {\n                                \"op\": \"=\",\n                                \"text\": \"N/A\",\n                                \"value\": \"null\"\n                            }\n                        ],\n                        \"valueName\": \"min\"\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 3,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": true,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": true\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 10,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(rate(workqueue_adds_total{cluster=\\\"$cluster\\\", job=\\\"kube-controller-manager\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (cluster, instance, name)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{cluster}} {{instance}} {{name}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Work Queue Add Rate\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"ops\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"ops\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": false,\n                \"title\": \"Dashboard Row\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 4,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": true,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": true\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(rate(workqueue_depth{cluster=\\\"$cluster\\\", job=\\\"kube-controller-manager\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (cluster, instance, name)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{cluster}} {{instance}} {{name}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Work Queue Depth\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": false,\n                \"title\": \"Dashboard Row\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 5,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": true,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": true\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"histogram_quantile(0.99, sum(rate(workqueue_queue_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-controller-manager\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (cluster, instance, name, le))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{cluster}} {{instance}} {{name}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Work Queue Latency\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"s\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"s\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": false,\n                \"title\": \"Dashboard Row\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 6,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 4,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(rate(rest_client_requests_total{job=\\\"kube-controller-manager\\\", instance=~\\\"$instance\\\",code=~\\\"2..\\\"}[$__rate_interval]))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"2xx\",\n                                \"refId\": \"A\"\n                            },\n                            {\n                                \"expr\": \"sum(rate(rest_client_requests_total{job=\\\"kube-controller-manager\\\", instance=~\\\"$instance\\\",code=~\\\"3..\\\"}[$__rate_interval]))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"3xx\",\n                                \"refId\": \"B\"\n                            },\n                            {\n                                \"expr\": \"sum(rate(rest_client_requests_total{job=\\\"kube-controller-manager\\\", instance=~\\\"$instance\\\",code=~\\\"4..\\\"}[$__rate_interval]))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"4xx\",\n                                \"refId\": \"C\"\n                            },\n                            {\n                                \"expr\": \"sum(rate(rest_client_requests_total{job=\\\"kube-controller-manager\\\", instance=~\\\"$instance\\\",code=~\\\"5..\\\"}[$__rate_interval]))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"5xx\",\n                                \"refId\": \"D\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Kube API Request Rate\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"ops\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"ops\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 7,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 8,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"histogram_quantile(0.99, sum(rate(rest_client_request_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-controller-manager\\\", instance=~\\\"$instance\\\", verb=\\\"POST\\\"}[$__rate_interval])) by (verb, url, le))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{verb}} {{url}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Post Request Latency 99th Quantile\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"s\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"s\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": false,\n                \"title\": \"Dashboard Row\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 8,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": true,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": true\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"histogram_quantile(0.99, sum(rate(rest_client_request_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-controller-manager\\\", instance=~\\\"$instance\\\", verb=\\\"GET\\\"}[$__rate_interval])) by (verb, url, le))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{verb}} {{url}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Get Request Latency 99th Quantile\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"s\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"s\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": false,\n                \"title\": \"Dashboard Row\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 9,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 4,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"process_resident_memory_bytes{cluster=\\\"$cluster\\\", job=\\\"kube-controller-manager\\\",instance=~\\\"$instance\\\"}\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{instance}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Memory\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"bytes\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"bytes\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 10,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 4,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"rate(process_cpu_seconds_total{cluster=\\\"$cluster\\\", job=\\\"kube-controller-manager\\\",instance=~\\\"$instance\\\"}[$__rate_interval])\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{instance}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"CPU usage\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 11,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 4,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"go_goroutines{cluster=\\\"$cluster\\\", job=\\\"kube-controller-manager\\\",instance=~\\\"$instance\\\"}\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{instance}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Goroutines\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": false,\n                \"title\": \"Dashboard Row\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            }\n        ],\n        \"schemaVersion\": 14,\n        \"style\": \"dark\",\n        \"tags\": [\n            \"kubernetes-mixin\"\n        ],\n        \"templating\": {\n            \"list\": [\n                {\n                    \"current\": {\n                        \"text\": \"default\",\n                        \"value\": \"default\"\n                    },\n                    \"hide\": 0,\n                    \"label\": \"Data Source\",\n                    \"name\": \"datasource\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"prometheus\",\n                    \"refresh\": 1,\n                    \"regex\": \"\",\n                    \"type\": \"datasource\"\n                },\n                {\n                    \"allValue\": null,\n                    \"current\": {\n\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": false,\n                    \"label\": \"cluster\",\n                    \"multi\": false,\n                    \"name\": \"cluster\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(up{job=\\\"kube-controller-manager\\\"}, cluster)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                },\n                {\n                    \"allValue\": null,\n                    \"current\": {\n\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": true,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"instance\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(up{cluster=\\\"$cluster\\\", job=\\\"kube-controller-manager\\\"}, instance)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                }\n            ]\n        },\n        \"time\": {\n            \"from\": \"now-1h\",\n            \"to\": \"now\"\n        },\n        \"timepicker\": {\n            \"refresh_intervals\": [\n                \"5s\",\n                \"10s\",\n                \"30s\",\n                \"1m\",\n                \"5m\",\n                \"15m\",\n                \"30m\",\n                \"1h\",\n                \"2h\",\n                \"1d\"\n            ],\n            \"time_options\": [\n                \"5m\",\n                \"15m\",\n                \"1h\",\n                \"6h\",\n                \"12h\",\n                \"24h\",\n                \"2d\",\n                \"7d\",\n                \"30d\"\n            ]\n        },\n        \"timezone\": \"UTC\",\n        \"title\": \"Kubernetes / Controller Manager\",\n        \"uid\": \"72e0e05bef5099e5f049b05fdc429ed4\",\n        \"version\": 0\n    }\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 9.5.3\n  name: grafana-dashboard-controller-manager\n  namespace: monitoring\n---\napiVersion: v1\ndata:\n  grafana-overview.json: |-\n    {\n        \"annotations\": {\n            \"list\": [\n                {\n                    \"builtIn\": 1,\n                    \"datasource\": \"-- Grafana --\",\n                    \"enable\": true,\n                    \"hide\": true,\n                    \"iconColor\": \"rgba(0, 211, 255, 1)\",\n                    \"name\": \"Annotations & Alerts\",\n                    \"target\": {\n                        \"limit\": 100,\n                        \"matchAny\": false,\n                        \"tags\": [\n\n                        ],\n                        \"type\": \"dashboard\"\n                    },\n                    \"type\": \"dashboard\"\n                }\n            ]\n        },\n        \"editable\": true,\n        \"gnetId\": null,\n        \"graphTooltip\": 0,\n        \"id\": 3085,\n        \"iteration\": 1631554945276,\n        \"links\": [\n\n        ],\n        \"panels\": [\n            {\n                \"datasource\": \"$datasource\",\n                \"fieldConfig\": {\n                    \"defaults\": {\n                        \"mappings\": [\n\n                        ],\n                        \"noValue\": \"0\",\n                        \"thresholds\": {\n                            \"mode\": \"absolute\",\n                            \"steps\": [\n                                {\n                                    \"color\": \"green\",\n                                    \"value\": null\n                                },\n                                {\n                                    \"color\": \"red\",\n                                    \"value\": 80\n                                }\n                            ]\n                        }\n                    },\n                    \"overrides\": [\n\n                    ]\n                },\n                \"gridPos\": {\n                    \"h\": 5,\n                    \"w\": 6,\n                    \"x\": 0,\n                    \"y\": 0\n                },\n                \"id\": 6,\n                \"options\": {\n                    \"colorMode\": \"value\",\n                    \"graphMode\": \"area\",\n                    \"justifyMode\": \"auto\",\n                    \"orientation\": \"auto\",\n                    \"reduceOptions\": {\n                        \"calcs\": [\n                            \"mean\"\n                        ],\n                        \"fields\": \"\",\n                        \"values\": false\n                    },\n                    \"text\": {\n\n                    },\n                    \"textMode\": \"auto\"\n                },\n                \"pluginVersion\": \"8.1.3\",\n                \"targets\": [\n                    {\n                        \"expr\": \"grafana_alerting_result_total{job=~\\\"$job\\\", instance=~\\\"$instance\\\", state=\\\"alerting\\\"}\",\n                        \"instant\": true,\n                        \"interval\": \"\",\n                        \"legendFormat\": \"\",\n                        \"refId\": \"A\"\n                    }\n                ],\n                \"timeFrom\": null,\n                \"timeShift\": null,\n                \"title\": \"Firing Alerts\",\n                \"type\": \"stat\"\n            },\n            {\n                \"datasource\": \"$datasource\",\n                \"fieldConfig\": {\n                    \"defaults\": {\n                        \"mappings\": [\n\n                        ],\n                        \"thresholds\": {\n                            \"mode\": \"absolute\",\n                            \"steps\": [\n                                {\n                                    \"color\": \"green\",\n                                    \"value\": null\n                                },\n                                {\n                                    \"color\": \"red\",\n                                    \"value\": 80\n                                }\n                            ]\n                        }\n                    },\n                    \"overrides\": [\n\n                    ]\n                },\n                \"gridPos\": {\n                    \"h\": 5,\n                    \"w\": 6,\n                    \"x\": 6,\n                    \"y\": 0\n                },\n                \"id\": 8,\n                \"options\": {\n                    \"colorMode\": \"value\",\n                    \"graphMode\": \"area\",\n                    \"justifyMode\": \"auto\",\n                    \"orientation\": \"auto\",\n                    \"reduceOptions\": {\n                        \"calcs\": [\n                            \"mean\"\n                        ],\n                        \"fields\": \"\",\n                        \"values\": false\n                    },\n                    \"text\": {\n\n                    },\n                    \"textMode\": \"auto\"\n                },\n                \"pluginVersion\": \"8.1.3\",\n                \"targets\": [\n                    {\n                        \"expr\": \"sum(grafana_stat_totals_dashboard{job=~\\\"$job\\\", instance=~\\\"$instance\\\"})\",\n                        \"interval\": \"\",\n                        \"legendFormat\": \"\",\n                        \"refId\": \"A\"\n                    }\n                ],\n                \"timeFrom\": null,\n                \"timeShift\": null,\n                \"title\": \"Dashboards\",\n                \"type\": \"stat\"\n            },\n            {\n                \"datasource\": \"$datasource\",\n                \"fieldConfig\": {\n                    \"defaults\": {\n                        \"custom\": {\n                            \"align\": null,\n                            \"displayMode\": \"auto\"\n                        },\n                        \"mappings\": [\n\n                        ],\n                        \"thresholds\": {\n                            \"mode\": \"absolute\",\n                            \"steps\": [\n                                {\n                                    \"color\": \"green\",\n                                    \"value\": null\n                                },\n                                {\n                                    \"color\": \"red\",\n                                    \"value\": 80\n                                }\n                            ]\n                        }\n                    },\n                    \"overrides\": [\n\n                    ]\n                },\n                \"gridPos\": {\n                    \"h\": 5,\n                    \"w\": 12,\n                    \"x\": 12,\n                    \"y\": 0\n                },\n                \"id\": 10,\n                \"options\": {\n                    \"showHeader\": true\n                },\n                \"pluginVersion\": \"8.1.3\",\n                \"targets\": [\n                    {\n                        \"expr\": \"grafana_build_info{job=~\\\"$job\\\", instance=~\\\"$instance\\\"}\",\n                        \"instant\": true,\n                        \"interval\": \"\",\n                        \"legendFormat\": \"\",\n                        \"refId\": \"A\"\n                    }\n                ],\n                \"timeFrom\": null,\n                \"timeShift\": null,\n                \"title\": \"Build Info\",\n                \"transformations\": [\n                    {\n                        \"id\": \"labelsToFields\",\n                        \"options\": {\n\n                        }\n                    },\n                    {\n                        \"id\": \"organize\",\n                        \"options\": {\n                            \"excludeByName\": {\n                                \"Time\": true,\n                                \"Value\": true,\n                                \"branch\": true,\n                                \"container\": true,\n                                \"goversion\": true,\n                                \"namespace\": true,\n                                \"pod\": true,\n                                \"revision\": true\n                            },\n                            \"indexByName\": {\n                                \"Time\": 7,\n                                \"Value\": 11,\n                                \"branch\": 4,\n                                \"container\": 8,\n                                \"edition\": 2,\n                                \"goversion\": 6,\n                                \"instance\": 1,\n                                \"job\": 0,\n                                \"namespace\": 9,\n                                \"pod\": 10,\n                                \"revision\": 5,\n                                \"version\": 3\n                            },\n                            \"renameByName\": {\n\n                            }\n                        }\n                    }\n                ],\n                \"type\": \"table\"\n            },\n            {\n                \"aliasColors\": {\n\n                },\n                \"bars\": false,\n                \"dashLength\": 10,\n                \"dashes\": false,\n                \"datasource\": \"$datasource\",\n                \"fieldConfig\": {\n                    \"defaults\": {\n                        \"links\": [\n\n                        ]\n                    },\n                    \"overrides\": [\n\n                    ]\n                },\n                \"fill\": 1,\n                \"fillGradient\": 0,\n                \"gridPos\": {\n                    \"h\": 8,\n                    \"w\": 12,\n                    \"x\": 0,\n                    \"y\": 5\n                },\n                \"hiddenSeries\": false,\n                \"id\": 2,\n                \"legend\": {\n                    \"avg\": false,\n                    \"current\": false,\n                    \"max\": false,\n                    \"min\": false,\n                    \"show\": true,\n                    \"total\": false,\n                    \"values\": false\n                },\n                \"lines\": true,\n                \"linewidth\": 1,\n                \"nullPointMode\": \"null\",\n                \"options\": {\n                    \"alertThreshold\": true\n                },\n                \"percentage\": false,\n                \"pluginVersion\": \"8.1.3\",\n                \"pointradius\": 2,\n                \"points\": false,\n                \"renderer\": \"flot\",\n                \"seriesOverrides\": [\n\n                ],\n                \"spaceLength\": 10,\n                \"stack\": true,\n                \"steppedLine\": false,\n                \"targets\": [\n                    {\n                        \"expr\": \"sum by (status_code) (irate(grafana_http_request_duration_seconds_count{job=~\\\"$job\\\", instance=~\\\"$instance\\\"}[1m])) \",\n                        \"interval\": \"\",\n                        \"legendFormat\": \"{{status_code}}\",\n                        \"refId\": \"A\"\n                    }\n                ],\n                \"thresholds\": [\n\n                ],\n                \"timeFrom\": null,\n                \"timeRegions\": [\n\n                ],\n                \"timeShift\": null,\n                \"title\": \"RPS\",\n                \"tooltip\": {\n                    \"shared\": true,\n                    \"sort\": 0,\n                    \"value_type\": \"individual\"\n                },\n                \"type\": \"graph\",\n                \"xaxis\": {\n                    \"buckets\": null,\n                    \"mode\": \"time\",\n                    \"name\": null,\n                    \"show\": true,\n                    \"values\": [\n\n                    ]\n                },\n                \"yaxes\": [\n                    {\n                        \"$$hashKey\": \"object:157\",\n                        \"format\": \"reqps\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": null,\n                        \"show\": true\n                    },\n                    {\n                        \"$$hashKey\": \"object:158\",\n                        \"format\": \"short\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": null,\n                        \"show\": false\n                    }\n                ],\n                \"yaxis\": {\n                    \"align\": false,\n                    \"alignLevel\": null\n                }\n            },\n            {\n                \"aliasColors\": {\n\n                },\n                \"bars\": false,\n                \"dashLength\": 10,\n                \"dashes\": false,\n                \"datasource\": \"$datasource\",\n                \"fieldConfig\": {\n                    \"defaults\": {\n                        \"links\": [\n\n                        ]\n                    },\n                    \"overrides\": [\n\n                    ]\n                },\n                \"fill\": 1,\n                \"fillGradient\": 0,\n                \"gridPos\": {\n                    \"h\": 8,\n                    \"w\": 12,\n                    \"x\": 12,\n                    \"y\": 5\n                },\n                \"hiddenSeries\": false,\n                \"id\": 4,\n                \"legend\": {\n                    \"avg\": false,\n                    \"current\": false,\n                    \"max\": false,\n                    \"min\": false,\n                    \"show\": true,\n                    \"total\": false,\n                    \"values\": false\n                },\n                \"lines\": true,\n                \"linewidth\": 1,\n                \"nullPointMode\": \"null\",\n                \"options\": {\n                    \"alertThreshold\": true\n                },\n                \"percentage\": false,\n                \"pluginVersion\": \"8.1.3\",\n                \"pointradius\": 2,\n                \"points\": false,\n                \"renderer\": \"flot\",\n                \"seriesOverrides\": [\n\n                ],\n                \"spaceLength\": 10,\n                \"stack\": false,\n                \"steppedLine\": false,\n                \"targets\": [\n                    {\n                        \"exemplar\": true,\n                        \"expr\": \"histogram_quantile(0.99, sum(irate(grafana_http_request_duration_seconds_bucket{instance=~\\\"$instance\\\", job=~\\\"$job\\\"}[$__rate_interval])) by (le)) * 1\",\n                        \"interval\": \"\",\n                        \"legendFormat\": \"99th Percentile\",\n                        \"refId\": \"A\"\n                    },\n                    {\n                        \"exemplar\": true,\n                        \"expr\": \"histogram_quantile(0.50, sum(irate(grafana_http_request_duration_seconds_bucket{instance=~\\\"$instance\\\", job=~\\\"$job\\\"}[$__rate_interval])) by (le)) * 1\",\n                        \"interval\": \"\",\n                        \"legendFormat\": \"50th Percentile\",\n                        \"refId\": \"B\"\n                    },\n                    {\n                        \"exemplar\": true,\n                        \"expr\": \"sum(irate(grafana_http_request_duration_seconds_sum{instance=~\\\"$instance\\\", job=~\\\"$job\\\"}[$__rate_interval])) * 1 / sum(irate(grafana_http_request_duration_seconds_count{instance=~\\\"$instance\\\", job=~\\\"$job\\\"}[$__rate_interval]))\",\n                        \"interval\": \"\",\n                        \"legendFormat\": \"Average\",\n                        \"refId\": \"C\"\n                    }\n                ],\n                \"thresholds\": [\n\n                ],\n                \"timeFrom\": null,\n                \"timeRegions\": [\n\n                ],\n                \"timeShift\": null,\n                \"title\": \"Request Latency\",\n                \"tooltip\": {\n                    \"shared\": true,\n                    \"sort\": 0,\n                    \"value_type\": \"individual\"\n                },\n                \"type\": \"graph\",\n                \"xaxis\": {\n                    \"buckets\": null,\n                    \"mode\": \"time\",\n                    \"name\": null,\n                    \"show\": true,\n                    \"values\": [\n\n                    ]\n                },\n                \"yaxes\": [\n                    {\n                        \"$$hashKey\": \"object:210\",\n                        \"format\": \"ms\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": null,\n                        \"show\": true\n                    },\n                    {\n                        \"$$hashKey\": \"object:211\",\n                        \"format\": \"short\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": null,\n                        \"show\": true\n                    }\n                ],\n                \"yaxis\": {\n                    \"align\": false,\n                    \"alignLevel\": null\n                }\n            }\n        ],\n        \"schemaVersion\": 30,\n        \"style\": \"dark\",\n        \"tags\": [\n\n        ],\n        \"templating\": {\n            \"list\": [\n                {\n                    \"current\": {\n                        \"selected\": true,\n                        \"text\": \"dev-cortex\",\n                        \"value\": \"dev-cortex\"\n                    },\n                    \"description\": null,\n                    \"error\": null,\n                    \"hide\": 0,\n                    \"includeAll\": false,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"datasource\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"prometheus\",\n                    \"queryValue\": \"\",\n                    \"refresh\": 1,\n                    \"regex\": \"\",\n                    \"skipUrlSync\": false,\n                    \"type\": \"datasource\"\n                },\n                {\n                    \"allValue\": \".*\",\n                    \"current\": {\n                        \"selected\": false,\n                        \"text\": [\n                            \"default/grafana\"\n                        ],\n                        \"value\": [\n                            \"default/grafana\"\n                        ]\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"definition\": \"label_values(grafana_build_info, job)\",\n                    \"description\": null,\n                    \"error\": null,\n                    \"hide\": 0,\n                    \"includeAll\": true,\n                    \"label\": null,\n                    \"multi\": true,\n                    \"name\": \"job\",\n                    \"options\": [\n\n                    ],\n                    \"query\": {\n                        \"query\": \"label_values(grafana_build_info, job)\",\n                        \"refId\": \"Billing Admin-job-Variable-Query\"\n                    },\n                    \"refresh\": 1,\n                    \"regex\": \"\",\n                    \"skipUrlSync\": false,\n                    \"sort\": 0,\n                    \"tagValuesQuery\": \"\",\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                },\n                {\n                    \"allValue\": \".*\",\n                    \"current\": {\n                        \"selected\": false,\n                        \"text\": \"All\",\n                        \"value\": \"$__all\"\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"definition\": \"label_values(grafana_build_info, instance)\",\n                    \"description\": null,\n                    \"error\": null,\n                    \"hide\": 0,\n                    \"includeAll\": true,\n                    \"label\": null,\n                    \"multi\": true,\n                    \"name\": \"instance\",\n                    \"options\": [\n\n                    ],\n                    \"query\": {\n                        \"query\": \"label_values(grafana_build_info, instance)\",\n                        \"refId\": \"Billing Admin-instance-Variable-Query\"\n                    },\n                    \"refresh\": 1,\n                    \"regex\": \"\",\n                    \"skipUrlSync\": false,\n                    \"sort\": 0,\n                    \"tagValuesQuery\": \"\",\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                }\n            ]\n        },\n        \"time\": {\n            \"from\": \"now-6h\",\n            \"to\": \"now\"\n        },\n        \"timepicker\": {\n            \"refresh_intervals\": [\n                \"10s\",\n                \"30s\",\n                \"1m\",\n                \"5m\",\n                \"15m\",\n                \"30m\",\n                \"1h\",\n                \"2h\",\n                \"1d\"\n            ]\n        },\n        \"timezone\": \"\",\n        \"title\": \"Grafana Overview\",\n        \"uid\": \"6be0s85Mk\",\n        \"version\": 2\n    }\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 9.5.3\n  name: grafana-dashboard-grafana-overview\n  namespace: monitoring\n---\napiVersion: v1\ndata:\n  k8s-resources-cluster.json: |-\n    {\n        \"annotations\": {\n            \"list\": [\n\n            ]\n        },\n        \"editable\": true,\n        \"gnetId\": null,\n        \"graphTooltip\": 0,\n        \"hideControls\": false,\n        \"links\": [\n\n        ],\n        \"refresh\": \"10s\",\n        \"rows\": [\n            {\n                \"collapse\": false,\n                \"height\": \"100px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"format\": \"percentunit\",\n                        \"id\": 1,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 2,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"cluster:node_cpu:ratio_rate5m{cluster=\\\"$cluster\\\"}\",\n                                \"format\": \"time_series\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": \"70,80\",\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"CPU Utilisation\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"singlestat\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"format\": \"percentunit\",\n                        \"id\": 2,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 2,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(namespace_cpu:kube_pod_container_resource_requests:sum{cluster=\\\"$cluster\\\"}) / sum(kube_node_status_allocatable{job=\\\"kube-state-metrics\\\",resource=\\\"cpu\\\",cluster=\\\"$cluster\\\"})\",\n                                \"format\": \"time_series\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": \"70,80\",\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"CPU Requests Commitment\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"singlestat\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"format\": \"percentunit\",\n                        \"id\": 3,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 2,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(namespace_cpu:kube_pod_container_resource_limits:sum{cluster=\\\"$cluster\\\"}) / sum(kube_node_status_allocatable{job=\\\"kube-state-metrics\\\",resource=\\\"cpu\\\",cluster=\\\"$cluster\\\"})\",\n                                \"format\": \"time_series\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": \"70,80\",\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"CPU Limits Commitment\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"singlestat\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"format\": \"percentunit\",\n                        \"id\": 4,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 2,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"1 - sum(:node_memory_MemAvailable_bytes:sum{cluster=\\\"$cluster\\\"}) / sum(node_memory_MemTotal_bytes{job=\\\"node-exporter\\\",cluster=\\\"$cluster\\\"})\",\n                                \"format\": \"time_series\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": \"70,80\",\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Memory Utilisation\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"singlestat\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"format\": \"percentunit\",\n                        \"id\": 5,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 2,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(namespace_memory:kube_pod_container_resource_requests:sum{cluster=\\\"$cluster\\\"}) / sum(kube_node_status_allocatable{job=\\\"kube-state-metrics\\\",resource=\\\"memory\\\",cluster=\\\"$cluster\\\"})\",\n                                \"format\": \"time_series\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": \"70,80\",\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Memory Requests Commitment\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"singlestat\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"format\": \"percentunit\",\n                        \"id\": 6,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 2,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(namespace_memory:kube_pod_container_resource_limits:sum{cluster=\\\"$cluster\\\"}) / sum(kube_node_status_allocatable{job=\\\"kube-state-metrics\\\",resource=\\\"memory\\\",cluster=\\\"$cluster\\\"})\",\n                                \"format\": \"time_series\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": \"70,80\",\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Memory Limits Commitment\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"singlestat\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": false,\n                \"title\": \"Headlines\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 7,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\"}) by (namespace)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{namespace}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"CPU Usage\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"CPU\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"id\": 8,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"styles\": [\n                            {\n                                \"alias\": \"Time\",\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"pattern\": \"Time\",\n                                \"type\": \"hidden\"\n                            },\n                            {\n                                \"alias\": \"Pods\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 0,\n                                \"link\": true,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down to pods\",\n                                \"linkUrl\": \"/d/85a562078cdf77779eaa1add43ccec1e/k8s-resources-namespace?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$__cell_1\",\n                                \"pattern\": \"Value #A\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"Workloads\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 0,\n                                \"link\": true,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down to workloads\",\n                                \"linkUrl\": \"/d/a87fb0d919ec0ea5f6543124e16c42a5/k8s-resources-workloads-namespace?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$__cell_1\",\n                                \"pattern\": \"Value #B\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"CPU Usage\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #C\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"CPU Requests\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #D\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"CPU Requests %\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #E\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"percentunit\"\n                            },\n                            {\n                                \"alias\": \"CPU Limits\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #F\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"CPU Limits %\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #G\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"percentunit\"\n                            },\n                            {\n                                \"alias\": \"Namespace\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": true,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down to pods\",\n                                \"linkUrl\": \"/d/85a562078cdf77779eaa1add43ccec1e/k8s-resources-namespace?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$__cell\",\n                                \"pattern\": \"namespace\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"pattern\": \"/.*/\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"string\",\n                                \"unit\": \"short\"\n                            }\n                        ],\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(kube_pod_owner{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\"}) by (namespace)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"count(avg(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\"}) by (workload, namespace)) by (namespace)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"B\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\"}) by (namespace)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"C\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(namespace_cpu:kube_pod_container_resource_requests:sum{cluster=\\\"$cluster\\\"}) by (namespace)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"D\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\"}) by (namespace) / sum(namespace_cpu:kube_pod_container_resource_requests:sum{cluster=\\\"$cluster\\\"}) by (namespace)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"E\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(namespace_cpu:kube_pod_container_resource_limits:sum{cluster=\\\"$cluster\\\"}) by (namespace)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"F\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\"}) by (namespace) / sum(namespace_cpu:kube_pod_container_resource_limits:sum{cluster=\\\"$cluster\\\"}) by (namespace)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"G\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"CPU Quota\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"transform\": \"table\",\n                        \"type\": \"table\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"CPU Quota\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 9,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(container_memory_rss{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", container!=\\\"\\\"}) by (namespace)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{namespace}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Memory Usage (w/o cache)\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"bytes\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Memory\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"id\": 10,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"styles\": [\n                            {\n                                \"alias\": \"Time\",\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"pattern\": \"Time\",\n                                \"type\": \"hidden\"\n                            },\n                            {\n                                \"alias\": \"Pods\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 0,\n                                \"link\": true,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down to pods\",\n                                \"linkUrl\": \"/d/85a562078cdf77779eaa1add43ccec1e/k8s-resources-namespace?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$__cell_1\",\n                                \"pattern\": \"Value #A\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"Workloads\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 0,\n                                \"link\": true,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down to workloads\",\n                                \"linkUrl\": \"/d/a87fb0d919ec0ea5f6543124e16c42a5/k8s-resources-workloads-namespace?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$__cell_1\",\n                                \"pattern\": \"Value #B\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"Memory Usage\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #C\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"bytes\"\n                            },\n                            {\n                                \"alias\": \"Memory Requests\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #D\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"bytes\"\n                            },\n                            {\n                                \"alias\": \"Memory Requests %\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #E\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"percentunit\"\n                            },\n                            {\n                                \"alias\": \"Memory Limits\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #F\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"bytes\"\n                            },\n                            {\n                                \"alias\": \"Memory Limits %\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #G\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"percentunit\"\n                            },\n                            {\n                                \"alias\": \"Namespace\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": true,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down to pods\",\n                                \"linkUrl\": \"/d/85a562078cdf77779eaa1add43ccec1e/k8s-resources-namespace?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$__cell\",\n                                \"pattern\": \"namespace\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"pattern\": \"/.*/\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"string\",\n                                \"unit\": \"short\"\n                            }\n                        ],\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(kube_pod_owner{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\"}) by (namespace)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"count(avg(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\"}) by (workload, namespace)) by (namespace)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"B\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(container_memory_rss{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", container!=\\\"\\\"}) by (namespace)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"C\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(namespace_memory:kube_pod_container_resource_requests:sum{cluster=\\\"$cluster\\\"}) by (namespace)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"D\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(container_memory_rss{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", container!=\\\"\\\"}) by (namespace) / sum(namespace_memory:kube_pod_container_resource_requests:sum{cluster=\\\"$cluster\\\"}) by (namespace)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"E\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(namespace_memory:kube_pod_container_resource_limits:sum{cluster=\\\"$cluster\\\"}) by (namespace)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"F\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(container_memory_rss{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", container!=\\\"\\\"}) by (namespace) / sum(namespace_memory:kube_pod_container_resource_limits:sum{cluster=\\\"$cluster\\\"}) by (namespace)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"G\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Requests by Namespace\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"transform\": \"table\",\n                        \"type\": \"table\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Memory Requests\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"id\": 11,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"styles\": [\n                            {\n                                \"alias\": \"Time\",\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"pattern\": \"Time\",\n                                \"type\": \"hidden\"\n                            },\n                            {\n                                \"alias\": \"Current Receive Bandwidth\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #A\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"Bps\"\n                            },\n                            {\n                                \"alias\": \"Current Transmit Bandwidth\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #B\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"Bps\"\n                            },\n                            {\n                                \"alias\": \"Rate of Received Packets\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #C\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"pps\"\n                            },\n                            {\n                                \"alias\": \"Rate of Transmitted Packets\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #D\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"pps\"\n                            },\n                            {\n                                \"alias\": \"Rate of Received Packets Dropped\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #E\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"pps\"\n                            },\n                            {\n                                \"alias\": \"Rate of Transmitted Packets Dropped\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #F\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"pps\"\n                            },\n                            {\n                                \"alias\": \"Namespace\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": true,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down to pods\",\n                                \"linkUrl\": \"/d/85a562078cdf77779eaa1add43ccec1e/k8s-resources-namespace?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$__cell\",\n                                \"pattern\": \"namespace\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"pattern\": \"/.*/\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"string\",\n                                \"unit\": \"short\"\n                            }\n                        ],\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(irate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(irate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"B\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(irate(container_network_receive_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"C\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(irate(container_network_transmit_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"D\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(irate(container_network_receive_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"E\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(irate(container_network_transmit_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"F\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Current Network Usage\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"transform\": \"table\",\n                        \"type\": \"table\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Current Network Usage\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 12,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(irate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{namespace}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Receive Bandwidth\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"Bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 13,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(irate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{namespace}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Transmit Bandwidth\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"Bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Bandwidth\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 14,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"avg(irate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{namespace}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Average Container Bandwidth by Namespace: Received\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"Bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 15,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"avg(irate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{namespace}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Average Container Bandwidth by Namespace: Transmitted\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"Bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Average Container Bandwidth by Namespace\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 16,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(irate(container_network_receive_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{namespace}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Rate of Received Packets\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 17,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(irate(container_network_transmit_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{namespace}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Rate of Transmitted Packets\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Rate of Packets\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 18,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(irate(container_network_receive_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{namespace}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Rate of Received Packets Dropped\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 19,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(irate(container_network_transmit_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{namespace}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Rate of Transmitted Packets Dropped\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Rate of Packets Dropped\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"decimals\": -1,\n                        \"fill\": 10,\n                        \"id\": 20,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"ceil(sum by(namespace) (rate(container_fs_reads_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval]) + rate(container_fs_writes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval])))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{namespace}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"IOPS(Reads+Writes)\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 21,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum by(namespace) (rate(container_fs_reads_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval]) + rate(container_fs_writes_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval]))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{namespace}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"ThroughPut(Read+Write)\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"Bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Storage IO\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"id\": 22,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"sort\": {\n                            \"col\": 4,\n                            \"desc\": true\n                        },\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"styles\": [\n                            {\n                                \"alias\": \"Time\",\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"pattern\": \"Time\",\n                                \"type\": \"hidden\"\n                            },\n                            {\n                                \"alias\": \"IOPS(Reads)\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": -1,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #A\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"IOPS(Writes)\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": -1,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #B\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"IOPS(Reads + Writes)\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": -1,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #C\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"Throughput(Read)\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #D\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"Bps\"\n                            },\n                            {\n                                \"alias\": \"Throughput(Write)\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #E\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"Bps\"\n                            },\n                            {\n                                \"alias\": \"Throughput(Read + Write)\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #F\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"Bps\"\n                            },\n                            {\n                                \"alias\": \"Namespace\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": true,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down to pods\",\n                                \"linkUrl\": \"/d/85a562078cdf77779eaa1add43ccec1e/k8s-resources-namespace?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$__cell\",\n                                \"pattern\": \"namespace\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"pattern\": \"/.*/\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"string\",\n                                \"unit\": \"short\"\n                            }\n                        ],\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum by(namespace) (rate(container_fs_reads_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval]))\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum by(namespace) (rate(container_fs_writes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval]))\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"B\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum by(namespace) (rate(container_fs_reads_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval]) + rate(container_fs_writes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval]))\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"C\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum by(namespace) (rate(container_fs_reads_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval]))\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"D\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum by(namespace) (rate(container_fs_writes_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval]))\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"E\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum by(namespace) (rate(container_fs_reads_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval]) + rate(container_fs_writes_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval]))\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"F\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Current Storage IO\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"transform\": \"table\",\n                        \"type\": \"table\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Storage IO - Distribution\",\n                \"titleSize\": \"h6\"\n            }\n        ],\n        \"schemaVersion\": 14,\n        \"style\": \"dark\",\n        \"tags\": [\n            \"kubernetes-mixin\"\n        ],\n        \"templating\": {\n            \"list\": [\n                {\n                    \"current\": {\n                        \"text\": \"default\",\n                        \"value\": \"default\"\n                    },\n                    \"hide\": 0,\n                    \"label\": \"Data Source\",\n                    \"name\": \"datasource\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"prometheus\",\n                    \"refresh\": 1,\n                    \"regex\": \"\",\n                    \"type\": \"datasource\"\n                },\n                {\n                    \"allValue\": null,\n                    \"current\": {\n                        \"text\": \"\",\n                        \"value\": \"\"\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": false,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"cluster\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(up{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\"}, cluster)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                }\n            ]\n        },\n        \"time\": {\n            \"from\": \"now-1h\",\n            \"to\": \"now\"\n        },\n        \"timepicker\": {\n            \"refresh_intervals\": [\n                \"5s\",\n                \"10s\",\n                \"30s\",\n                \"1m\",\n                \"5m\",\n                \"15m\",\n                \"30m\",\n                \"1h\",\n                \"2h\",\n                \"1d\"\n            ],\n            \"time_options\": [\n                \"5m\",\n                \"15m\",\n                \"1h\",\n                \"6h\",\n                \"12h\",\n                \"24h\",\n                \"2d\",\n                \"7d\",\n                \"30d\"\n            ]\n        },\n        \"timezone\": \"UTC\",\n        \"title\": \"Kubernetes / Compute Resources / Cluster\",\n        \"uid\": \"efa86fd1d0c121a26444b636a3f509a8\",\n        \"version\": 0\n    }\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 9.5.3\n  name: grafana-dashboard-k8s-resources-cluster\n  namespace: monitoring\n---\napiVersion: v1\ndata:\n  k8s-resources-multicluster.json: |-\n    {\n        \"annotations\": {\n            \"list\": [\n\n            ]\n        },\n        \"editable\": true,\n        \"gnetId\": null,\n        \"graphTooltip\": 0,\n        \"hideControls\": false,\n        \"links\": [\n\n        ],\n        \"refresh\": \"10s\",\n        \"rows\": [\n            {\n                \"collapse\": false,\n                \"height\": \"100px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"format\": \"percentunit\",\n                        \"id\": 1,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 2,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"cluster:node_cpu:ratio_rate5m\",\n                                \"format\": \"time_series\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": \"70,80\",\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"CPU Utilisation\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"singlestat\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"format\": \"percentunit\",\n                        \"id\": 2,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 2,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", resource=\\\"cpu\\\"}) / sum(kube_node_status_allocatable{job=\\\"kube-state-metrics\\\", resource=\\\"cpu\\\"})\",\n                                \"format\": \"time_series\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": \"70,80\",\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"CPU Requests Commitment\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"singlestat\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"format\": \"percentunit\",\n                        \"id\": 3,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 2,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", resource=\\\"cpu\\\"}) / sum(kube_node_status_allocatable{job=\\\"kube-state-metrics\\\", resource=\\\"cpu\\\"})\",\n                                \"format\": \"time_series\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": \"70,80\",\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"CPU Limits Commitment\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"singlestat\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"format\": \"percentunit\",\n                        \"id\": 4,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 2,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"1 - sum(:node_memory_MemAvailable_bytes:sum) / sum(node_memory_MemTotal_bytes{job=\\\"node-exporter\\\"})\",\n                                \"format\": \"time_series\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": \"70,80\",\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Memory Utilisation\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"singlestat\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"format\": \"percentunit\",\n                        \"id\": 5,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 2,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", resource=\\\"memory\\\"}) / sum(kube_node_status_allocatable{job=\\\"kube-state-metrics\\\", resource=\\\"memory\\\"})\",\n                                \"format\": \"time_series\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": \"70,80\",\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Memory Requests Commitment\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"singlestat\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"format\": \"percentunit\",\n                        \"id\": 6,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 2,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", resource=\\\"memory\\\"}) / sum(kube_node_status_allocatable{job=\\\"kube-state-metrics\\\", resource=\\\"memory\\\"})\",\n                                \"format\": \"time_series\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": \"70,80\",\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Memory Limits Commitment\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"singlestat\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": false,\n                \"title\": \"Headlines\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 0,\n                        \"id\": 7,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 2,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate) by (cluster)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{cluster}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"CPU Usage\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"CPU\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"id\": 8,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"styles\": [\n                            {\n                                \"alias\": \"Time\",\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"pattern\": \"Time\",\n                                \"type\": \"hidden\"\n                            },\n                            {\n                                \"alias\": \"CPU Usage\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #A\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"CPU Requests\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #B\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"CPU Requests %\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #C\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"percentunit\"\n                            },\n                            {\n                                \"alias\": \"CPU Limits\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #D\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"CPU Limits %\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #E\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"percentunit\"\n                            },\n                            {\n                                \"alias\": \"Cluster\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": true,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"/d/efa86fd1d0c121a26444b636a3f509a8/k8s-resources-cluster?var-datasource=$datasource&var-cluster=$__cell\",\n                                \"pattern\": \"cluster\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"pattern\": \"/.*/\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"string\",\n                                \"unit\": \"short\"\n                            }\n                        ],\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate) by (cluster)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", resource=\\\"cpu\\\"}) by (cluster)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"B\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate) by (cluster) / sum(kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", resource=\\\"cpu\\\"}) by (cluster)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"C\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", resource=\\\"cpu\\\"}) by (cluster)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"D\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate) by (cluster) / sum(kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", resource=\\\"cpu\\\"}) by (cluster)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"E\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"CPU Quota\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"transform\": \"table\",\n                        \"type\": \"table\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"CPU Quota\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 0,\n                        \"id\": 9,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 2,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(container_memory_rss{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\"}) by (cluster)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{cluster}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Memory Usage (w/o cache)\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"bytes\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Memory\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"id\": 10,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"styles\": [\n                            {\n                                \"alias\": \"Time\",\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"pattern\": \"Time\",\n                                \"type\": \"hidden\"\n                            },\n                            {\n                                \"alias\": \"Memory Usage\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #A\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"bytes\"\n                            },\n                            {\n                                \"alias\": \"Memory Requests\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #B\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"bytes\"\n                            },\n                            {\n                                \"alias\": \"Memory Requests %\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #C\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"percentunit\"\n                            },\n                            {\n                                \"alias\": \"Memory Limits\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #D\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"bytes\"\n                            },\n                            {\n                                \"alias\": \"Memory Limits %\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #E\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"percentunit\"\n                            },\n                            {\n                                \"alias\": \"Cluster\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": true,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"/d/efa86fd1d0c121a26444b636a3f509a8/k8s-resources-cluster?var-datasource=$datasource&var-cluster=$__cell\",\n                                \"pattern\": \"cluster\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"pattern\": \"/.*/\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"string\",\n                                \"unit\": \"short\"\n                            }\n                        ],\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(container_memory_rss{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\"}) by (cluster)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", resource=\\\"memory\\\"}) by (cluster)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"B\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(container_memory_rss{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\"}) by (cluster) / sum(kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", resource=\\\"memory\\\"}) by (cluster)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"C\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", resource=\\\"memory\\\"}) by (cluster)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"D\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(container_memory_rss{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\"}) by (cluster) / sum(kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", resource=\\\"memory\\\"}) by (cluster)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"E\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Requests by Cluster\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"transform\": \"table\",\n                        \"type\": \"table\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Memory Requests\",\n                \"titleSize\": \"h6\"\n            }\n        ],\n        \"schemaVersion\": 14,\n        \"style\": \"dark\",\n        \"tags\": [\n            \"kubernetes-mixin\"\n        ],\n        \"templating\": {\n            \"list\": [\n                {\n                    \"current\": {\n                        \"text\": \"default\",\n                        \"value\": \"default\"\n                    },\n                    \"hide\": 0,\n                    \"label\": \"Data Source\",\n                    \"name\": \"datasource\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"prometheus\",\n                    \"refresh\": 1,\n                    \"regex\": \"\",\n                    \"type\": \"datasource\"\n                }\n            ]\n        },\n        \"time\": {\n            \"from\": \"now-1h\",\n            \"to\": \"now\"\n        },\n        \"timepicker\": {\n            \"refresh_intervals\": [\n                \"5s\",\n                \"10s\",\n                \"30s\",\n                \"1m\",\n                \"5m\",\n                \"15m\",\n                \"30m\",\n                \"1h\",\n                \"2h\",\n                \"1d\"\n            ],\n            \"time_options\": [\n                \"5m\",\n                \"15m\",\n                \"1h\",\n                \"6h\",\n                \"12h\",\n                \"24h\",\n                \"2d\",\n                \"7d\",\n                \"30d\"\n            ]\n        },\n        \"timezone\": \"UTC\",\n        \"title\": \"Kubernetes / Compute Resources /  Multi-Cluster\",\n        \"uid\": \"b59e6c9f2fcbe2e16d77fc492374cc4f\",\n        \"version\": 0\n    }\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 9.5.3\n  name: grafana-dashboard-k8s-resources-multicluster\n  namespace: monitoring\n---\napiVersion: v1\ndata:\n  k8s-resources-namespace.json: |-\n    {\n        \"annotations\": {\n            \"list\": [\n\n            ]\n        },\n        \"editable\": true,\n        \"gnetId\": null,\n        \"graphTooltip\": 0,\n        \"hideControls\": false,\n        \"links\": [\n\n        ],\n        \"refresh\": \"10s\",\n        \"rows\": [\n            {\n                \"collapse\": false,\n                \"height\": \"100px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"format\": \"percentunit\",\n                        \"id\": 1,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 3,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) / sum(kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"cpu\\\"})\",\n                                \"format\": \"time_series\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": \"70,80\",\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"CPU Utilisation (from requests)\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"singlestat\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"format\": \"percentunit\",\n                        \"id\": 2,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 3,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) / sum(kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"cpu\\\"})\",\n                                \"format\": \"time_series\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": \"70,80\",\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"CPU Utilisation (from limits)\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"singlestat\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"format\": \"percentunit\",\n                        \"id\": 3,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 3,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\",container!=\\\"\\\", image!=\\\"\\\"}) / sum(kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"memory\\\"})\",\n                                \"format\": \"time_series\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": \"70,80\",\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Memory Utilisation (from requests)\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"singlestat\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"format\": \"percentunit\",\n                        \"id\": 4,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 3,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\",container!=\\\"\\\", image!=\\\"\\\"}) / sum(kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"memory\\\"})\",\n                                \"format\": \"time_series\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": \"70,80\",\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Memory Utilisation (from limits)\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"singlestat\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": false,\n                \"title\": \"Headlines\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 5,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n                            {\n                                \"alias\": \"quota - requests\",\n                                \"color\": \"#F2495C\",\n                                \"dashes\": true,\n                                \"fill\": 0,\n                                \"hiddenSeries\": true,\n                                \"hideTooltip\": true,\n                                \"legend\": true,\n                                \"linewidth\": 2,\n                                \"stack\": false\n                            },\n                            {\n                                \"alias\": \"quota - limits\",\n                                \"color\": \"#FF9830\",\n                                \"dashes\": true,\n                                \"fill\": 0,\n                                \"hiddenSeries\": true,\n                                \"hideTooltip\": true,\n                                \"legend\": true,\n                                \"linewidth\": 2,\n                                \"stack\": false\n                            }\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{pod}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"scalar(kube_resourcequota{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", type=\\\"hard\\\",resource=\\\"requests.cpu\\\"})\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"quota - requests\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"scalar(kube_resourcequota{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", type=\\\"hard\\\",resource=\\\"limits.cpu\\\"})\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"quota - limits\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"CPU Usage\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"CPU Usage\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"id\": 6,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"styles\": [\n                            {\n                                \"alias\": \"Time\",\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"pattern\": \"Time\",\n                                \"type\": \"hidden\"\n                            },\n                            {\n                                \"alias\": \"CPU Usage\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #A\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"CPU Requests\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #B\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"CPU Requests %\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #C\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"percentunit\"\n                            },\n                            {\n                                \"alias\": \"CPU Limits\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #D\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"CPU Limits %\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #E\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"percentunit\"\n                            },\n                            {\n                                \"alias\": \"Pod\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": true,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"/d/6581e46e4e5c7ba40a07646395ef7b23/k8s-resources-pod?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$namespace&var-pod=$__cell\",\n                                \"pattern\": \"pod\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"pattern\": \"/.*/\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"string\",\n                                \"unit\": \"short\"\n                            }\n                        ],\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"B\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod) / sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"C\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"D\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod) / sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"E\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"CPU Quota\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"transform\": \"table\",\n                        \"type\": \"table\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"CPU Quota\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 7,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n                            {\n                                \"alias\": \"quota - requests\",\n                                \"color\": \"#F2495C\",\n                                \"dashes\": true,\n                                \"fill\": 0,\n                                \"hiddenSeries\": true,\n                                \"hideTooltip\": true,\n                                \"legend\": true,\n                                \"linewidth\": 2,\n                                \"stack\": false\n                            },\n                            {\n                                \"alias\": \"quota - limits\",\n                                \"color\": \"#FF9830\",\n                                \"dashes\": true,\n                                \"fill\": 0,\n                                \"hiddenSeries\": true,\n                                \"hideTooltip\": true,\n                                \"legend\": true,\n                                \"linewidth\": 2,\n                                \"stack\": false\n                            }\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", container!=\\\"\\\", image!=\\\"\\\"}) by (pod)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{pod}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"scalar(kube_resourcequota{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", type=\\\"hard\\\",resource=\\\"requests.memory\\\"})\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"quota - requests\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"scalar(kube_resourcequota{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", type=\\\"hard\\\",resource=\\\"limits.memory\\\"})\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"quota - limits\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Memory Usage (w/o cache)\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"bytes\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Memory Usage\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"id\": 8,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"styles\": [\n                            {\n                                \"alias\": \"Time\",\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"pattern\": \"Time\",\n                                \"type\": \"hidden\"\n                            },\n                            {\n                                \"alias\": \"Memory Usage\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #A\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"bytes\"\n                            },\n                            {\n                                \"alias\": \"Memory Requests\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #B\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"bytes\"\n                            },\n                            {\n                                \"alias\": \"Memory Requests %\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #C\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"percentunit\"\n                            },\n                            {\n                                \"alias\": \"Memory Limits\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #D\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"bytes\"\n                            },\n                            {\n                                \"alias\": \"Memory Limits %\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #E\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"percentunit\"\n                            },\n                            {\n                                \"alias\": \"Memory Usage (RSS)\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #F\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"bytes\"\n                            },\n                            {\n                                \"alias\": \"Memory Usage (Cache)\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #G\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"bytes\"\n                            },\n                            {\n                                \"alias\": \"Memory Usage (Swap)\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #H\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"bytes\"\n                            },\n                            {\n                                \"alias\": \"Pod\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": true,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"/d/6581e46e4e5c7ba40a07646395ef7b23/k8s-resources-pod?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$namespace&var-pod=$__cell\",\n                                \"pattern\": \"pod\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"pattern\": \"/.*/\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"string\",\n                                \"unit\": \"short\"\n                            }\n                        ],\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\",container!=\\\"\\\", image!=\\\"\\\"}) by (pod)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"B\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\",container!=\\\"\\\", image!=\\\"\\\"}) by (pod) / sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"C\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"D\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\",container!=\\\"\\\", image!=\\\"\\\"}) by (pod) / sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"E\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(container_memory_rss{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\",container!=\\\"\\\"}) by (pod)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"F\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(container_memory_cache{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\",container!=\\\"\\\"}) by (pod)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"G\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(container_memory_swap{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\",container!=\\\"\\\"}) by (pod)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"H\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Memory Quota\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"transform\": \"table\",\n                        \"type\": \"table\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Memory Quota\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"id\": 9,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"styles\": [\n                            {\n                                \"alias\": \"Time\",\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"pattern\": \"Time\",\n                                \"type\": \"hidden\"\n                            },\n                            {\n                                \"alias\": \"Current Receive Bandwidth\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #A\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"Bps\"\n                            },\n                            {\n                                \"alias\": \"Current Transmit Bandwidth\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #B\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"Bps\"\n                            },\n                            {\n                                \"alias\": \"Rate of Received Packets\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #C\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"pps\"\n                            },\n                            {\n                                \"alias\": \"Rate of Transmitted Packets\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #D\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"pps\"\n                            },\n                            {\n                                \"alias\": \"Rate of Received Packets Dropped\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #E\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"pps\"\n                            },\n                            {\n                                \"alias\": \"Rate of Transmitted Packets Dropped\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #F\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"pps\"\n                            },\n                            {\n                                \"alias\": \"Pod\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": true,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down to pods\",\n                                \"linkUrl\": \"/d/6581e46e4e5c7ba40a07646395ef7b23/k8s-resources-pod?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$namespace&var-pod=$__cell\",\n                                \"pattern\": \"pod\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"pattern\": \"/.*/\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"string\",\n                                \"unit\": \"short\"\n                            }\n                        ],\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(irate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])) by (pod)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(irate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])) by (pod)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"B\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(irate(container_network_receive_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])) by (pod)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"C\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(irate(container_network_transmit_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])) by (pod)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"D\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(irate(container_network_receive_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])) by (pod)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"E\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(irate(container_network_transmit_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])) by (pod)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"F\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Current Network Usage\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"transform\": \"table\",\n                        \"type\": \"table\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Current Network Usage\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 10,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])) by (pod)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{pod}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Receive Bandwidth\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"Bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 11,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])) by (pod)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{pod}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Transmit Bandwidth\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"Bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Bandwidth\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 12,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(irate(container_network_receive_packets_total{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])) by (pod)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{pod}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Rate of Received Packets\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 13,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(irate(container_network_transmit_packets_total{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])) by (pod)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{pod}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Rate of Transmitted Packets\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Rate of Packets\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 14,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(irate(container_network_receive_packets_dropped_total{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])) by (pod)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{pod}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Rate of Received Packets Dropped\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 15,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(irate(container_network_transmit_packets_dropped_total{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])) by (pod)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{pod}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Rate of Transmitted Packets Dropped\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Rate of Packets Dropped\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"decimals\": -1,\n                        \"fill\": 10,\n                        \"id\": 16,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"ceil(sum by(pod) (rate(container_fs_reads_total{container!=\\\"\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]) + rate(container_fs_writes_total{container!=\\\"\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{pod}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"IOPS(Reads+Writes)\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 17,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum by(pod) (rate(container_fs_reads_bytes_total{container!=\\\"\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]) + rate(container_fs_writes_bytes_total{container!=\\\"\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{pod}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"ThroughPut(Read+Write)\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"Bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Storage IO\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"id\": 18,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"sort\": {\n                            \"col\": 4,\n                            \"desc\": true\n                        },\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"styles\": [\n                            {\n                                \"alias\": \"Time\",\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"pattern\": \"Time\",\n                                \"type\": \"hidden\"\n                            },\n                            {\n                                \"alias\": \"IOPS(Reads)\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": -1,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #A\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"IOPS(Writes)\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": -1,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #B\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"IOPS(Reads + Writes)\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": -1,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #C\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"Throughput(Read)\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #D\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"Bps\"\n                            },\n                            {\n                                \"alias\": \"Throughput(Write)\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #E\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"Bps\"\n                            },\n                            {\n                                \"alias\": \"Throughput(Read + Write)\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #F\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"Bps\"\n                            },\n                            {\n                                \"alias\": \"Pod\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": true,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down to pods\",\n                                \"linkUrl\": \"/d/6581e46e4e5c7ba40a07646395ef7b23/k8s-resources-pod?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$namespace&var-pod=$__cell\",\n                                \"pattern\": \"pod\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"pattern\": \"/.*/\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"string\",\n                                \"unit\": \"short\"\n                            }\n                        ],\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum by(pod) (rate(container_fs_reads_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]))\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum by(pod) (rate(container_fs_writes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]))\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"B\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum by(pod) (rate(container_fs_reads_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]) + rate(container_fs_writes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]))\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"C\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum by(pod) (rate(container_fs_reads_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]))\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"D\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum by(pod) (rate(container_fs_writes_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]))\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"E\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum by(pod) (rate(container_fs_reads_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]) + rate(container_fs_writes_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]))\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"F\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Current Storage IO\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"transform\": \"table\",\n                        \"type\": \"table\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Storage IO - Distribution\",\n                \"titleSize\": \"h6\"\n            }\n        ],\n        \"schemaVersion\": 14,\n        \"style\": \"dark\",\n        \"tags\": [\n            \"kubernetes-mixin\"\n        ],\n        \"templating\": {\n            \"list\": [\n                {\n                    \"current\": {\n                        \"text\": \"default\",\n                        \"value\": \"default\"\n                    },\n                    \"hide\": 0,\n                    \"label\": \"Data Source\",\n                    \"name\": \"datasource\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"prometheus\",\n                    \"refresh\": 1,\n                    \"regex\": \"\",\n                    \"type\": \"datasource\"\n                },\n                {\n                    \"allValue\": null,\n                    \"current\": {\n                        \"text\": \"\",\n                        \"value\": \"\"\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": false,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"cluster\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(up{job=\\\"kube-state-metrics\\\"}, cluster)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                },\n                {\n                    \"allValue\": null,\n                    \"current\": {\n                        \"text\": \"\",\n                        \"value\": \"\"\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": false,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"namespace\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(kube_namespace_status_phase{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\"}, namespace)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                }\n            ]\n        },\n        \"time\": {\n            \"from\": \"now-1h\",\n            \"to\": \"now\"\n        },\n        \"timepicker\": {\n            \"refresh_intervals\": [\n                \"5s\",\n                \"10s\",\n                \"30s\",\n                \"1m\",\n                \"5m\",\n                \"15m\",\n                \"30m\",\n                \"1h\",\n                \"2h\",\n                \"1d\"\n            ],\n            \"time_options\": [\n                \"5m\",\n                \"15m\",\n                \"1h\",\n                \"6h\",\n                \"12h\",\n                \"24h\",\n                \"2d\",\n                \"7d\",\n                \"30d\"\n            ]\n        },\n        \"timezone\": \"UTC\",\n        \"title\": \"Kubernetes / Compute Resources / Namespace (Pods)\",\n        \"uid\": \"85a562078cdf77779eaa1add43ccec1e\",\n        \"version\": 0\n    }\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 9.5.3\n  name: grafana-dashboard-k8s-resources-namespace\n  namespace: monitoring\n---\napiVersion: v1\ndata:\n  k8s-resources-node.json: |-\n    {\n        \"annotations\": {\n            \"list\": [\n\n            ]\n        },\n        \"editable\": true,\n        \"gnetId\": null,\n        \"graphTooltip\": 0,\n        \"hideControls\": false,\n        \"links\": [\n\n        ],\n        \"refresh\": \"10s\",\n        \"rows\": [\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 1,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n                            {\n                                \"alias\": \"max capacity\",\n                                \"color\": \"#F2495C\",\n                                \"dashes\": true,\n                                \"fill\": 0,\n                                \"hiddenSeries\": true,\n                                \"hideTooltip\": true,\n                                \"legend\": true,\n                                \"linewidth\": 2,\n                                \"stack\": false\n                            }\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(kube_node_status_capacity{cluster=\\\"$cluster\\\", node=~\\\"$node\\\", resource=\\\"cpu\\\"})\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"max capacity\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"}) by (pod)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{pod}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"CPU Usage\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"CPU Usage\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"id\": 2,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"styles\": [\n                            {\n                                \"alias\": \"Time\",\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"pattern\": \"Time\",\n                                \"type\": \"hidden\"\n                            },\n                            {\n                                \"alias\": \"CPU Usage\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #A\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"CPU Requests\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #B\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"CPU Requests %\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #C\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"percentunit\"\n                            },\n                            {\n                                \"alias\": \"CPU Limits\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #D\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"CPU Limits %\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #E\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"percentunit\"\n                            },\n                            {\n                                \"alias\": \"Pod\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"pod\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"pattern\": \"/.*/\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"string\",\n                                \"unit\": \"short\"\n                            }\n                        ],\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"}) by (pod)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"}) by (pod)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"B\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"}) by (pod) / sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"}) by (pod)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"C\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"}) by (pod)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"D\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"}) by (pod) / sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"}) by (pod)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"E\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"CPU Quota\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"transform\": \"table\",\n                        \"type\": \"table\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"CPU Quota\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 3,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n                            {\n                                \"alias\": \"max capacity\",\n                                \"color\": \"#F2495C\",\n                                \"dashes\": true,\n                                \"fill\": 0,\n                                \"hiddenSeries\": true,\n                                \"hideTooltip\": true,\n                                \"legend\": true,\n                                \"linewidth\": 2,\n                                \"stack\": false\n                            }\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(kube_node_status_capacity{cluster=\\\"$cluster\\\", node=~\\\"$node\\\", resource=\\\"memory\\\"})\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"max capacity\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(node_namespace_pod_container:container_memory_working_set_bytes{cluster=\\\"$cluster\\\", node=~\\\"$node\\\", container!=\\\"\\\"}) by (pod)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{pod}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Memory Usage (w/o cache)\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"bytes\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Memory Usage\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"id\": 4,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"styles\": [\n                            {\n                                \"alias\": \"Time\",\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"pattern\": \"Time\",\n                                \"type\": \"hidden\"\n                            },\n                            {\n                                \"alias\": \"Memory Usage\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #A\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"bytes\"\n                            },\n                            {\n                                \"alias\": \"Memory Requests\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #B\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"bytes\"\n                            },\n                            {\n                                \"alias\": \"Memory Requests %\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #C\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"percentunit\"\n                            },\n                            {\n                                \"alias\": \"Memory Limits\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #D\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"bytes\"\n                            },\n                            {\n                                \"alias\": \"Memory Limits %\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #E\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"percentunit\"\n                            },\n                            {\n                                \"alias\": \"Memory Usage (RSS)\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #F\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"bytes\"\n                            },\n                            {\n                                \"alias\": \"Memory Usage (Cache)\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #G\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"bytes\"\n                            },\n                            {\n                                \"alias\": \"Memory Usage (Swap)\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #H\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"bytes\"\n                            },\n                            {\n                                \"alias\": \"Pod\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"pod\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"pattern\": \"/.*/\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"string\",\n                                \"unit\": \"short\"\n                            }\n                        ],\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(node_namespace_pod_container:container_memory_working_set_bytes{cluster=\\\"$cluster\\\", node=~\\\"$node\\\",container!=\\\"\\\"}) by (pod)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"}) by (pod)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"B\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(node_namespace_pod_container:container_memory_working_set_bytes{cluster=\\\"$cluster\\\", node=~\\\"$node\\\",container!=\\\"\\\"}) by (pod) / sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"}) by (pod)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"C\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"}) by (pod)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"D\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(node_namespace_pod_container:container_memory_working_set_bytes{cluster=\\\"$cluster\\\", node=~\\\"$node\\\",container!=\\\"\\\"}) by (pod) / sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"}) by (pod)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"E\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(node_namespace_pod_container:container_memory_rss{cluster=\\\"$cluster\\\", node=~\\\"$node\\\",container!=\\\"\\\"}) by (pod)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"F\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(node_namespace_pod_container:container_memory_cache{cluster=\\\"$cluster\\\", node=~\\\"$node\\\",container!=\\\"\\\"}) by (pod)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"G\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(node_namespace_pod_container:container_memory_swap{cluster=\\\"$cluster\\\", node=~\\\"$node\\\",container!=\\\"\\\"}) by (pod)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"H\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Memory Quota\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"transform\": \"table\",\n                        \"type\": \"table\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Memory Quota\",\n                \"titleSize\": \"h6\"\n            }\n        ],\n        \"schemaVersion\": 14,\n        \"style\": \"dark\",\n        \"tags\": [\n            \"kubernetes-mixin\"\n        ],\n        \"templating\": {\n            \"list\": [\n                {\n                    \"current\": {\n                        \"text\": \"default\",\n                        \"value\": \"default\"\n                    },\n                    \"hide\": 0,\n                    \"label\": \"Data Source\",\n                    \"name\": \"datasource\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"prometheus\",\n                    \"refresh\": 1,\n                    \"regex\": \"\",\n                    \"type\": \"datasource\"\n                },\n                {\n                    \"allValue\": null,\n                    \"current\": {\n                        \"text\": \"\",\n                        \"value\": \"\"\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": false,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"cluster\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(up{job=\\\"kube-state-metrics\\\"}, cluster)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                },\n                {\n                    \"allValue\": null,\n                    \"current\": {\n                        \"text\": \"\",\n                        \"value\": \"\"\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": false,\n                    \"label\": null,\n                    \"multi\": true,\n                    \"name\": \"node\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(kube_node_info{cluster=\\\"$cluster\\\"}, node)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                }\n            ]\n        },\n        \"time\": {\n            \"from\": \"now-1h\",\n            \"to\": \"now\"\n        },\n        \"timepicker\": {\n            \"refresh_intervals\": [\n                \"5s\",\n                \"10s\",\n                \"30s\",\n                \"1m\",\n                \"5m\",\n                \"15m\",\n                \"30m\",\n                \"1h\",\n                \"2h\",\n                \"1d\"\n            ],\n            \"time_options\": [\n                \"5m\",\n                \"15m\",\n                \"1h\",\n                \"6h\",\n                \"12h\",\n                \"24h\",\n                \"2d\",\n                \"7d\",\n                \"30d\"\n            ]\n        },\n        \"timezone\": \"UTC\",\n        \"title\": \"Kubernetes / Compute Resources / Node (Pods)\",\n        \"uid\": \"200ac8fdbfbb74b39aff88118e4d1c2c\",\n        \"version\": 0\n    }\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 9.5.3\n  name: grafana-dashboard-k8s-resources-node\n  namespace: monitoring\n---\napiVersion: v1\ndata:\n  k8s-resources-pod.json: |-\n    {\n        \"annotations\": {\n            \"list\": [\n\n            ]\n        },\n        \"editable\": true,\n        \"gnetId\": null,\n        \"graphTooltip\": 0,\n        \"hideControls\": false,\n        \"links\": [\n\n        ],\n        \"refresh\": \"10s\",\n        \"rows\": [\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 1,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n                            {\n                                \"alias\": \"requests\",\n                                \"color\": \"#F2495C\",\n                                \"fill\": 0,\n                                \"hideTooltip\": true,\n                                \"legend\": true,\n                                \"linewidth\": 2,\n                                \"stack\": false\n                            },\n                            {\n                                \"alias\": \"limits\",\n                                \"color\": \"#FF9830\",\n                                \"fill\": 0,\n                                \"hideTooltip\": true,\n                                \"legend\": true,\n                                \"linewidth\": 2,\n                                \"stack\": false\n                            }\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", cluster=\\\"$cluster\\\"}) by (container)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{container}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(\\n    kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", resource=\\\"cpu\\\"}\\n)\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"requests\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(\\n    kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", resource=\\\"cpu\\\"}\\n)\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"limits\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"CPU Usage\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"CPU Usage\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 2,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": true,\n                            \"max\": true,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(increase(container_cpu_cfs_throttled_periods_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\"}[$__rate_interval])) by (container) /sum(increase(container_cpu_cfs_periods_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\"}[$__rate_interval])) by (container)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{container}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n                            {\n                                \"colorMode\": \"critical\",\n                                \"fill\": true,\n                                \"line\": true,\n                                \"op\": \"gt\",\n                                \"value\": 0.25,\n                                \"yaxis\": \"left\"\n                            }\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"CPU Throttling\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"percentunit\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": 1,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"CPU Throttling\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"id\": 3,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"styles\": [\n                            {\n                                \"alias\": \"Time\",\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"pattern\": \"Time\",\n                                \"type\": \"hidden\"\n                            },\n                            {\n                                \"alias\": \"CPU Usage\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #A\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"CPU Requests\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #B\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"CPU Requests %\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #C\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"percentunit\"\n                            },\n                            {\n                                \"alias\": \"CPU Limits\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #D\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"CPU Limits %\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #E\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"percentunit\"\n                            },\n                            {\n                                \"alias\": \"Container\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"container\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"pattern\": \"/.*/\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"string\",\n                                \"unit\": \"short\"\n                            }\n                        ],\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"B\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container) / sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"C\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"D\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container) / sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"E\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"CPU Quota\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"transform\": \"table\",\n                        \"type\": \"table\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"CPU Quota\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 4,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n                            {\n                                \"alias\": \"requests\",\n                                \"color\": \"#F2495C\",\n                                \"dashes\": true,\n                                \"fill\": 0,\n                                \"hideTooltip\": true,\n                                \"legend\": true,\n                                \"linewidth\": 2,\n                                \"stack\": false\n                            },\n                            {\n                                \"alias\": \"limits\",\n                                \"color\": \"#FF9830\",\n                                \"dashes\": true,\n                                \"fill\": 0,\n                                \"hideTooltip\": true,\n                                \"legend\": true,\n                                \"linewidth\": 2,\n                                \"stack\": false\n                            }\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", container!=\\\"\\\", image!=\\\"\\\"}) by (container)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{container}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(\\n    kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", resource=\\\"memory\\\"}\\n)\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"requests\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(\\n    kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", resource=\\\"memory\\\"}\\n)\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"limits\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Memory Usage (WSS)\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"bytes\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Memory Usage\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"id\": 5,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"styles\": [\n                            {\n                                \"alias\": \"Time\",\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"pattern\": \"Time\",\n                                \"type\": \"hidden\"\n                            },\n                            {\n                                \"alias\": \"Memory Usage (WSS)\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #A\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"bytes\"\n                            },\n                            {\n                                \"alias\": \"Memory Requests\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #B\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"bytes\"\n                            },\n                            {\n                                \"alias\": \"Memory Requests %\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #C\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"percentunit\"\n                            },\n                            {\n                                \"alias\": \"Memory Limits\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #D\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"bytes\"\n                            },\n                            {\n                                \"alias\": \"Memory Limits %\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #E\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"percentunit\"\n                            },\n                            {\n                                \"alias\": \"Memory Usage (RSS)\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #F\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"bytes\"\n                            },\n                            {\n                                \"alias\": \"Memory Usage (Cache)\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #G\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"bytes\"\n                            },\n                            {\n                                \"alias\": \"Memory Usage (Swap)\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #H\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"bytes\"\n                            },\n                            {\n                                \"alias\": \"Container\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"container\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"pattern\": \"/.*/\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"string\",\n                                \"unit\": \"short\"\n                            }\n                        ],\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", container!=\\\"\\\", image!=\\\"\\\"}) by (container)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"B\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", image!=\\\"\\\"}) by (container) / sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"C\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"D\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", container!=\\\"\\\", image!=\\\"\\\"}) by (container) / sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"E\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(container_memory_rss{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", container != \\\"\\\", container != \\\"POD\\\"}) by (container)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"F\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(container_memory_cache{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", container != \\\"\\\", container != \\\"POD\\\"}) by (container)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"G\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(container_memory_swap{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", container != \\\"\\\", container != \\\"POD\\\"}) by (container)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"H\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Memory Quota\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"transform\": \"table\",\n                        \"type\": \"table\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Memory Quota\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 6,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(irate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval])) by (pod)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{pod}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Receive Bandwidth\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"Bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 7,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(irate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval])) by (pod)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{pod}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Transmit Bandwidth\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"Bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Bandwidth\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 8,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(irate(container_network_receive_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval])) by (pod)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{pod}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Rate of Received Packets\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 9,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(irate(container_network_transmit_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval])) by (pod)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{pod}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Rate of Transmitted Packets\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Rate of Packets\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 10,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(irate(container_network_receive_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval])) by (pod)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{pod}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Rate of Received Packets Dropped\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 11,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(irate(container_network_transmit_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval])) by (pod)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{pod}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Rate of Transmitted Packets Dropped\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Rate of Packets Dropped\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"decimals\": -1,\n                        \"fill\": 10,\n                        \"id\": 12,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"ceil(sum by(pod) (rate(container_fs_reads_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval])))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"Reads\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"ceil(sum by(pod) (rate(container_fs_writes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval])))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"Writes\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"IOPS\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 13,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum by(pod) (rate(container_fs_reads_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval]))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"Reads\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum by(pod) (rate(container_fs_writes_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval]))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"Writes\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"ThroughPut\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"Bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Storage IO - Distribution(Pod - Read & Writes)\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"decimals\": -1,\n                        \"fill\": 10,\n                        \"id\": 14,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"ceil(sum by(container) (rate(container_fs_reads_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval]) + rate(container_fs_writes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval])))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{container}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"IOPS(Reads+Writes)\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 15,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum by(container) (rate(container_fs_reads_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval]) + rate(container_fs_writes_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval]))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{container}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"ThroughPut(Read+Write)\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"Bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Storage IO - Distribution(Containers)\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"id\": 16,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"sort\": {\n                            \"col\": 4,\n                            \"desc\": true\n                        },\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"styles\": [\n                            {\n                                \"alias\": \"Time\",\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"pattern\": \"Time\",\n                                \"type\": \"hidden\"\n                            },\n                            {\n                                \"alias\": \"IOPS(Reads)\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": -1,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #A\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"IOPS(Writes)\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": -1,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #B\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"IOPS(Reads + Writes)\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": -1,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #C\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"Throughput(Read)\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #D\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"Bps\"\n                            },\n                            {\n                                \"alias\": \"Throughput(Write)\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #E\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"Bps\"\n                            },\n                            {\n                                \"alias\": \"Throughput(Read + Write)\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #F\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"Bps\"\n                            },\n                            {\n                                \"alias\": \"Container\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"container\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"pattern\": \"/.*/\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"string\",\n                                \"unit\": \"short\"\n                            }\n                        ],\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum by(container) (rate(container_fs_reads_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval]))\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum by(container) (rate(container_fs_writes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\",device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval]))\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"B\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum by(container) (rate(container_fs_reads_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval]) + rate(container_fs_writes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval]))\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"C\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum by(container) (rate(container_fs_reads_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval]))\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"D\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum by(container) (rate(container_fs_writes_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval]))\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"E\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum by(container) (rate(container_fs_reads_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval]) + rate(container_fs_writes_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval]))\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"F\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Current Storage IO\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"transform\": \"table\",\n                        \"type\": \"table\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Storage IO - Distribution\",\n                \"titleSize\": \"h6\"\n            }\n        ],\n        \"schemaVersion\": 14,\n        \"style\": \"dark\",\n        \"tags\": [\n            \"kubernetes-mixin\"\n        ],\n        \"templating\": {\n            \"list\": [\n                {\n                    \"current\": {\n                        \"text\": \"default\",\n                        \"value\": \"default\"\n                    },\n                    \"hide\": 0,\n                    \"label\": \"Data Source\",\n                    \"name\": \"datasource\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"prometheus\",\n                    \"refresh\": 1,\n                    \"regex\": \"\",\n                    \"type\": \"datasource\"\n                },\n                {\n                    \"allValue\": null,\n                    \"current\": {\n                        \"text\": \"\",\n                        \"value\": \"\"\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": false,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"cluster\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(up{job=\\\"kube-state-metrics\\\"}, cluster)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                },\n                {\n                    \"allValue\": null,\n                    \"current\": {\n                        \"text\": \"\",\n                        \"value\": \"\"\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": false,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"namespace\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(kube_namespace_status_phase{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\"}, namespace)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                },\n                {\n                    \"allValue\": null,\n                    \"current\": {\n                        \"text\": \"\",\n                        \"value\": \"\"\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": false,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"pod\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(kube_pod_info{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}, pod)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                }\n            ]\n        },\n        \"time\": {\n            \"from\": \"now-1h\",\n            \"to\": \"now\"\n        },\n        \"timepicker\": {\n            \"refresh_intervals\": [\n                \"5s\",\n                \"10s\",\n                \"30s\",\n                \"1m\",\n                \"5m\",\n                \"15m\",\n                \"30m\",\n                \"1h\",\n                \"2h\",\n                \"1d\"\n            ],\n            \"time_options\": [\n                \"5m\",\n                \"15m\",\n                \"1h\",\n                \"6h\",\n                \"12h\",\n                \"24h\",\n                \"2d\",\n                \"7d\",\n                \"30d\"\n            ]\n        },\n        \"timezone\": \"UTC\",\n        \"title\": \"Kubernetes / Compute Resources / Pod\",\n        \"uid\": \"6581e46e4e5c7ba40a07646395ef7b23\",\n        \"version\": 0\n    }\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 9.5.3\n  name: grafana-dashboard-k8s-resources-pod\n  namespace: monitoring\n---\napiVersion: v1\ndata:\n  k8s-resources-workload.json: |-\n    {\n        \"annotations\": {\n            \"list\": [\n\n            ]\n        },\n        \"editable\": true,\n        \"gnetId\": null,\n        \"graphTooltip\": 0,\n        \"hideControls\": false,\n        \"links\": [\n\n        ],\n        \"refresh\": \"10s\",\n        \"rows\": [\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 1,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(\\n    node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{pod}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"CPU Usage\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"CPU Usage\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"id\": 2,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"styles\": [\n                            {\n                                \"alias\": \"Time\",\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"pattern\": \"Time\",\n                                \"type\": \"hidden\"\n                            },\n                            {\n                                \"alias\": \"CPU Usage\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #A\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"CPU Requests\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #B\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"CPU Requests %\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #C\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"percentunit\"\n                            },\n                            {\n                                \"alias\": \"CPU Limits\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #D\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"CPU Limits %\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #E\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"percentunit\"\n                            },\n                            {\n                                \"alias\": \"Pod\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": true,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"/d/6581e46e4e5c7ba40a07646395ef7b23/k8s-resources-pod?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$namespace&var-pod=$__cell\",\n                                \"pattern\": \"pod\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"pattern\": \"/.*/\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"string\",\n                                \"unit\": \"short\"\n                            }\n                        ],\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(\\n    node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(\\n    kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"cpu\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"B\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(\\n    node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n/sum(\\n    kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"cpu\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"C\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(\\n    kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"cpu\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"D\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(\\n    node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n/sum(\\n    kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"cpu\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"E\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"CPU Quota\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"transform\": \"table\",\n                        \"type\": \"table\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"CPU Quota\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 3,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(\\n    container_memory_working_set_bytes{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", container!=\\\"\\\", image!=\\\"\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{pod}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Memory Usage\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"bytes\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Memory Usage\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"id\": 4,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"styles\": [\n                            {\n                                \"alias\": \"Time\",\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"pattern\": \"Time\",\n                                \"type\": \"hidden\"\n                            },\n                            {\n                                \"alias\": \"Memory Usage\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #A\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"bytes\"\n                            },\n                            {\n                                \"alias\": \"Memory Requests\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #B\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"bytes\"\n                            },\n                            {\n                                \"alias\": \"Memory Requests %\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #C\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"percentunit\"\n                            },\n                            {\n                                \"alias\": \"Memory Limits\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #D\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"bytes\"\n                            },\n                            {\n                                \"alias\": \"Memory Limits %\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #E\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"percentunit\"\n                            },\n                            {\n                                \"alias\": \"Pod\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": true,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"/d/6581e46e4e5c7ba40a07646395ef7b23/k8s-resources-pod?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$namespace&var-pod=$__cell\",\n                                \"pattern\": \"pod\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"pattern\": \"/.*/\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"string\",\n                                \"unit\": \"short\"\n                            }\n                        ],\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(\\n    container_memory_working_set_bytes{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", container!=\\\"\\\", image!=\\\"\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(\\n    kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"memory\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"B\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(\\n    container_memory_working_set_bytes{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", container!=\\\"\\\", image!=\\\"\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n/sum(\\n    kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"memory\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"C\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(\\n    kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"memory\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"D\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(\\n    container_memory_working_set_bytes{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", container!=\\\"\\\", image!=\\\"\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n/sum(\\n    kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"memory\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"E\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Memory Quota\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"transform\": \"table\",\n                        \"type\": \"table\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Memory Quota\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"id\": 5,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"styles\": [\n                            {\n                                \"alias\": \"Time\",\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"pattern\": \"Time\",\n                                \"type\": \"hidden\"\n                            },\n                            {\n                                \"alias\": \"Current Receive Bandwidth\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #A\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"Bps\"\n                            },\n                            {\n                                \"alias\": \"Current Transmit Bandwidth\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #B\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"Bps\"\n                            },\n                            {\n                                \"alias\": \"Rate of Received Packets\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #C\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"pps\"\n                            },\n                            {\n                                \"alias\": \"Rate of Transmitted Packets\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #D\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"pps\"\n                            },\n                            {\n                                \"alias\": \"Rate of Received Packets Dropped\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #E\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"pps\"\n                            },\n                            {\n                                \"alias\": \"Rate of Transmitted Packets Dropped\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #F\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"pps\"\n                            },\n                            {\n                                \"alias\": \"Pod\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": true,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"/d/6581e46e4e5c7ba40a07646395ef7b23/k8s-resources-pod?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$namespace&var-pod=$__cell\",\n                                \"pattern\": \"pod\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"pattern\": \"/.*/\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"string\",\n                                \"unit\": \"short\"\n                            }\n                        ],\n                        \"targets\": [\n                            {\n                                \"expr\": \"(sum(irate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"(sum(irate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"B\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"(sum(irate(container_network_receive_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"C\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"(sum(irate(container_network_transmit_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"D\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"(sum(irate(container_network_receive_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"E\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"(sum(irate(container_network_transmit_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"F\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Current Network Usage\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"transform\": \"table\",\n                        \"type\": \"table\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Current Network Usage\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 6,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"(sum(irate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{pod}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Receive Bandwidth\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"Bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 7,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"(sum(irate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{pod}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Transmit Bandwidth\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"Bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Bandwidth\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 8,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"(avg(irate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{pod}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Average Container Bandwidth by Pod: Received\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"Bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 9,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"(avg(irate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{pod}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Average Container Bandwidth by Pod: Transmitted\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"Bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Average Container Bandwidth by Pod\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 10,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"(sum(irate(container_network_receive_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{pod}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Rate of Received Packets\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 11,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"(sum(irate(container_network_transmit_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{pod}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Rate of Transmitted Packets\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Rate of Packets\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 12,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"(sum(irate(container_network_receive_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{pod}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Rate of Received Packets Dropped\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 13,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"(sum(irate(container_network_transmit_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{pod}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Rate of Transmitted Packets Dropped\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Rate of Packets Dropped\",\n                \"titleSize\": \"h6\"\n            }\n        ],\n        \"schemaVersion\": 14,\n        \"style\": \"dark\",\n        \"tags\": [\n            \"kubernetes-mixin\"\n        ],\n        \"templating\": {\n            \"list\": [\n                {\n                    \"current\": {\n                        \"text\": \"default\",\n                        \"value\": \"default\"\n                    },\n                    \"hide\": 0,\n                    \"label\": \"Data Source\",\n                    \"name\": \"datasource\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"prometheus\",\n                    \"refresh\": 1,\n                    \"regex\": \"\",\n                    \"type\": \"datasource\"\n                },\n                {\n                    \"allValue\": null,\n                    \"current\": {\n                        \"text\": \"\",\n                        \"value\": \"\"\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": false,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"cluster\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(up{job=\\\"kube-state-metrics\\\"}, cluster)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                },\n                {\n                    \"allValue\": null,\n                    \"current\": {\n                        \"text\": \"\",\n                        \"value\": \"\"\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": false,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"namespace\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(kube_namespace_status_phase{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\"}, namespace)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                },\n                {\n                    \"allValue\": null,\n                    \"current\": {\n                        \"text\": \"\",\n                        \"value\": \"\"\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": false,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"type\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}, workload_type)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                },\n                {\n                    \"allValue\": null,\n                    \"current\": {\n                        \"text\": \"\",\n                        \"value\": \"\"\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": false,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"workload\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}, workload)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                }\n            ]\n        },\n        \"time\": {\n            \"from\": \"now-1h\",\n            \"to\": \"now\"\n        },\n        \"timepicker\": {\n            \"refresh_intervals\": [\n                \"5s\",\n                \"10s\",\n                \"30s\",\n                \"1m\",\n                \"5m\",\n                \"15m\",\n                \"30m\",\n                \"1h\",\n                \"2h\",\n                \"1d\"\n            ],\n            \"time_options\": [\n                \"5m\",\n                \"15m\",\n                \"1h\",\n                \"6h\",\n                \"12h\",\n                \"24h\",\n                \"2d\",\n                \"7d\",\n                \"30d\"\n            ]\n        },\n        \"timezone\": \"UTC\",\n        \"title\": \"Kubernetes / Compute Resources / Workload\",\n        \"uid\": \"a164a7f0339f99e89cea5cb47e9be617\",\n        \"version\": 0\n    }\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 9.5.3\n  name: grafana-dashboard-k8s-resources-workload\n  namespace: monitoring\n---\napiVersion: v1\ndata:\n  k8s-resources-workloads-namespace.json: |-\n    {\n        \"annotations\": {\n            \"list\": [\n\n            ]\n        },\n        \"editable\": true,\n        \"gnetId\": null,\n        \"graphTooltip\": 0,\n        \"hideControls\": false,\n        \"links\": [\n\n        ],\n        \"refresh\": \"10s\",\n        \"rows\": [\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 1,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n                            {\n                                \"alias\": \"quota - requests\",\n                                \"color\": \"#F2495C\",\n                                \"dashes\": true,\n                                \"fill\": 0,\n                                \"hiddenSeries\": true,\n                                \"hideTooltip\": true,\n                                \"legend\": true,\n                                \"linewidth\": 2,\n                                \"stack\": false\n                            },\n                            {\n                                \"alias\": \"quota - limits\",\n                                \"color\": \"#FF9830\",\n                                \"dashes\": true,\n                                \"fill\": 0,\n                                \"hiddenSeries\": true,\n                                \"hideTooltip\": true,\n                                \"legend\": true,\n                                \"linewidth\": 2,\n                                \"stack\": false\n                            }\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(\\n  node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}\\n* on(namespace,pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{workload}} - {{workload_type}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"scalar(kube_resourcequota{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", type=\\\"hard\\\",resource=\\\"requests.cpu\\\"})\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"quota - requests\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"scalar(kube_resourcequota{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", type=\\\"hard\\\",resource=\\\"limits.cpu\\\"})\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"quota - limits\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"CPU Usage\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"CPU Usage\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"id\": 2,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"styles\": [\n                            {\n                                \"alias\": \"Time\",\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"pattern\": \"Time\",\n                                \"type\": \"hidden\"\n                            },\n                            {\n                                \"alias\": \"Running Pods\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 0,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #A\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"CPU Usage\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #B\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"CPU Requests\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #C\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"CPU Requests %\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #D\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"percentunit\"\n                            },\n                            {\n                                \"alias\": \"CPU Limits\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #E\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"CPU Limits %\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #F\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"percentunit\"\n                            },\n                            {\n                                \"alias\": \"Workload\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": true,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"/d/a164a7f0339f99e89cea5cb47e9be617/k8s-resources-workload?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$namespace&var-workload=$__cell&var-type=$__cell_2\",\n                                \"pattern\": \"workload\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"Workload Type\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"workload_type\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"pattern\": \"/.*/\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"string\",\n                                \"unit\": \"short\"\n                            }\n                        ],\n                        \"targets\": [\n                            {\n                                \"expr\": \"count(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}) by (workload, workload_type)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(\\n  node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}\\n* on(namespace,pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"B\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(\\n  kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"cpu\\\"}\\n* on(namespace,pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"C\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(\\n  node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}\\n* on(namespace,pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n/sum(\\n  kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"cpu\\\"}\\n* on(namespace,pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"D\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(\\n  kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"cpu\\\"}\\n* on(namespace,pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"E\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(\\n  node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}\\n* on(namespace,pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n/sum(\\n  kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"cpu\\\"}\\n* on(namespace,pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"F\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"CPU Quota\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"transform\": \"table\",\n                        \"type\": \"table\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"CPU Quota\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 3,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n                            {\n                                \"alias\": \"quota - requests\",\n                                \"color\": \"#F2495C\",\n                                \"dashes\": true,\n                                \"fill\": 0,\n                                \"hiddenSeries\": true,\n                                \"hideTooltip\": true,\n                                \"legend\": true,\n                                \"linewidth\": 2,\n                                \"stack\": false\n                            },\n                            {\n                                \"alias\": \"quota - limits\",\n                                \"color\": \"#FF9830\",\n                                \"dashes\": true,\n                                \"fill\": 0,\n                                \"hiddenSeries\": true,\n                                \"hideTooltip\": true,\n                                \"legend\": true,\n                                \"linewidth\": 2,\n                                \"stack\": false\n                            }\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(\\n    container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", container!=\\\"\\\", image!=\\\"\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{workload}} - {{workload_type}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"scalar(kube_resourcequota{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", type=\\\"hard\\\",resource=\\\"requests.memory\\\"})\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"quota - requests\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"scalar(kube_resourcequota{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", type=\\\"hard\\\",resource=\\\"limits.memory\\\"})\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"quota - limits\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Memory Usage\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"bytes\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Memory Usage\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"id\": 4,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"styles\": [\n                            {\n                                \"alias\": \"Time\",\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"pattern\": \"Time\",\n                                \"type\": \"hidden\"\n                            },\n                            {\n                                \"alias\": \"Running Pods\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 0,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #A\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"Memory Usage\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #B\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"bytes\"\n                            },\n                            {\n                                \"alias\": \"Memory Requests\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #C\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"bytes\"\n                            },\n                            {\n                                \"alias\": \"Memory Requests %\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #D\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"percentunit\"\n                            },\n                            {\n                                \"alias\": \"Memory Limits\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #E\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"bytes\"\n                            },\n                            {\n                                \"alias\": \"Memory Limits %\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #F\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"percentunit\"\n                            },\n                            {\n                                \"alias\": \"Workload\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": true,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"/d/a164a7f0339f99e89cea5cb47e9be617/k8s-resources-workload?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$namespace&var-workload=$__cell&var-type=$__cell_2\",\n                                \"pattern\": \"workload\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"Workload Type\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"workload_type\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"pattern\": \"/.*/\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"string\",\n                                \"unit\": \"short\"\n                            }\n                        ],\n                        \"targets\": [\n                            {\n                                \"expr\": \"count(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}) by (workload, workload_type)\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(\\n    container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", container!=\\\"\\\", image!=\\\"\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"B\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(\\n  kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"memory\\\"}\\n* on(namespace,pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"C\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(\\n    container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", container!=\\\"\\\", image!=\\\"\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n/sum(\\n  kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"memory\\\"}\\n* on(namespace,pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"D\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(\\n  kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"memory\\\"}\\n* on(namespace,pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"E\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum(\\n    container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", container!=\\\"\\\", image!=\\\"\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n/sum(\\n  kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"memory\\\"}\\n* on(namespace,pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"F\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Memory Quota\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"transform\": \"table\",\n                        \"type\": \"table\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Memory Quota\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"id\": 5,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"styles\": [\n                            {\n                                \"alias\": \"Time\",\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"pattern\": \"Time\",\n                                \"type\": \"hidden\"\n                            },\n                            {\n                                \"alias\": \"Current Receive Bandwidth\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #A\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"Bps\"\n                            },\n                            {\n                                \"alias\": \"Current Transmit Bandwidth\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #B\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"Bps\"\n                            },\n                            {\n                                \"alias\": \"Rate of Received Packets\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #C\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"pps\"\n                            },\n                            {\n                                \"alias\": \"Rate of Transmitted Packets\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #D\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"pps\"\n                            },\n                            {\n                                \"alias\": \"Rate of Received Packets Dropped\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #E\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"pps\"\n                            },\n                            {\n                                \"alias\": \"Rate of Transmitted Packets Dropped\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #F\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"pps\"\n                            },\n                            {\n                                \"alias\": \"Workload\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": true,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down to pods\",\n                                \"linkUrl\": \"/d/a164a7f0339f99e89cea5cb47e9be617/k8s-resources-workload?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$namespace&var-workload=$__cell&var-type=$type\",\n                                \"pattern\": \"workload\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"Workload Type\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"workload_type\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"pattern\": \"/.*/\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"string\",\n                                \"unit\": \"short\"\n                            }\n                        ],\n                        \"targets\": [\n                            {\n                                \"expr\": \"(sum(irate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"(sum(irate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"B\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"(sum(irate(container_network_receive_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"C\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"(sum(irate(container_network_transmit_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"D\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"(sum(irate(container_network_receive_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"E\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"(sum(irate(container_network_transmit_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"F\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Current Network Usage\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"transform\": \"table\",\n                        \"type\": \"table\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Current Network Usage\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 6,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"(sum(irate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{workload}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Receive Bandwidth\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"Bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 7,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"(sum(irate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{workload}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Transmit Bandwidth\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"Bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Bandwidth\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 8,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"(avg(irate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{workload}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Average Container Bandwidth by Workload: Received\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"Bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 9,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"(avg(irate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{workload}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Average Container Bandwidth by Workload: Transmitted\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"Bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Average Container Bandwidth by Workload\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 10,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"(sum(irate(container_network_receive_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{workload}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Rate of Received Packets\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 11,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"(sum(irate(container_network_transmit_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{workload}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Rate of Transmitted Packets\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Rate of Packets\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 12,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"(sum(irate(container_network_receive_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{workload}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Rate of Received Packets Dropped\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 13,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"(sum(irate(container_network_transmit_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{workload}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Rate of Transmitted Packets Dropped\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Rate of Packets Dropped\",\n                \"titleSize\": \"h6\"\n            }\n        ],\n        \"schemaVersion\": 14,\n        \"style\": \"dark\",\n        \"tags\": [\n            \"kubernetes-mixin\"\n        ],\n        \"templating\": {\n            \"list\": [\n                {\n                    \"current\": {\n                        \"text\": \"default\",\n                        \"value\": \"default\"\n                    },\n                    \"hide\": 0,\n                    \"label\": \"Data Source\",\n                    \"name\": \"datasource\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"prometheus\",\n                    \"refresh\": 1,\n                    \"regex\": \"\",\n                    \"type\": \"datasource\"\n                },\n                {\n                    \"allValue\": null,\n                    \"current\": {\n                        \"text\": \"\",\n                        \"value\": \"\"\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": false,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"cluster\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(up{job=\\\"kube-state-metrics\\\"}, cluster)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                },\n                {\n                    \"allValue\": null,\n                    \"current\": {\n                        \"text\": \"\",\n                        \"value\": \"\"\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": false,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"namespace\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(kube_pod_info{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\"}, namespace)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                },\n                {\n                    \"allValue\": null,\n                    \"auto\": false,\n                    \"auto_count\": 30,\n                    \"auto_min\": \"10s\",\n                    \"current\": {\n                        \"text\": \"deployment\",\n                        \"value\": \"deployment\"\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"definition\": \"label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\".+\\\"}, workload_type)\",\n                    \"hide\": 0,\n                    \"includeAll\": false,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"type\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\".+\\\"}, workload_type)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"skipUrlSync\": false,\n                    \"sort\": 0,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                }\n            ]\n        },\n        \"time\": {\n            \"from\": \"now-1h\",\n            \"to\": \"now\"\n        },\n        \"timepicker\": {\n            \"refresh_intervals\": [\n                \"5s\",\n                \"10s\",\n                \"30s\",\n                \"1m\",\n                \"5m\",\n                \"15m\",\n                \"30m\",\n                \"1h\",\n                \"2h\",\n                \"1d\"\n            ],\n            \"time_options\": [\n                \"5m\",\n                \"15m\",\n                \"1h\",\n                \"6h\",\n                \"12h\",\n                \"24h\",\n                \"2d\",\n                \"7d\",\n                \"30d\"\n            ]\n        },\n        \"timezone\": \"UTC\",\n        \"title\": \"Kubernetes / Compute Resources / Namespace (Workloads)\",\n        \"uid\": \"a87fb0d919ec0ea5f6543124e16c42a5\",\n        \"version\": 0\n    }\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 9.5.3\n  name: grafana-dashboard-k8s-resources-workloads-namespace\n  namespace: monitoring\n---\napiVersion: v1\ndata:\n  kubelet.json: |-\n    {\n        \"__inputs\": [\n\n        ],\n        \"__requires\": [\n\n        ],\n        \"annotations\": {\n            \"list\": [\n\n            ]\n        },\n        \"editable\": false,\n        \"gnetId\": null,\n        \"graphTooltip\": 0,\n        \"hideControls\": false,\n        \"id\": null,\n        \"links\": [\n\n        ],\n        \"panels\": [\n            {\n                \"datasource\": \"$datasource\",\n                \"fieldConfig\": {\n                    \"defaults\": {\n                        \"links\": [\n\n                        ],\n                        \"mappings\": [\n\n                        ],\n                        \"thresholds\": {\n                            \"mode\": \"absolute\",\n                            \"steps\": [\n\n                            ]\n                        },\n                        \"unit\": \"none\"\n                    }\n                },\n                \"gridPos\": {\n                    \"h\": 7,\n                    \"w\": 4,\n                    \"x\": 0,\n                    \"y\": 0\n                },\n                \"id\": 2,\n                \"links\": [\n\n                ],\n                \"options\": {\n                    \"colorMode\": \"value\",\n                    \"graphMode\": \"area\",\n                    \"justifyMode\": \"auto\",\n                    \"orientation\": \"auto\",\n                    \"reduceOptions\": {\n                        \"calcs\": [\n                            \"lastNotNull\"\n                        ],\n                        \"fields\": \"\",\n                        \"values\": false\n                    },\n                    \"textMode\": \"auto\"\n                },\n                \"pluginVersion\": \"7\",\n                \"targets\": [\n                    {\n                        \"expr\": \"sum(kubelet_node_name{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\"})\",\n                        \"format\": \"time_series\",\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"\",\n                        \"refId\": \"A\"\n                    }\n                ],\n                \"title\": \"Running Kubelets\",\n                \"transparent\": false,\n                \"type\": \"stat\"\n            },\n            {\n                \"datasource\": \"$datasource\",\n                \"fieldConfig\": {\n                    \"defaults\": {\n                        \"links\": [\n\n                        ],\n                        \"mappings\": [\n\n                        ],\n                        \"thresholds\": {\n                            \"mode\": \"absolute\",\n                            \"steps\": [\n\n                            ]\n                        },\n                        \"unit\": \"none\"\n                    }\n                },\n                \"gridPos\": {\n                    \"h\": 7,\n                    \"w\": 4,\n                    \"x\": 4,\n                    \"y\": 0\n                },\n                \"id\": 3,\n                \"links\": [\n\n                ],\n                \"options\": {\n                    \"colorMode\": \"value\",\n                    \"graphMode\": \"area\",\n                    \"justifyMode\": \"auto\",\n                    \"orientation\": \"auto\",\n                    \"reduceOptions\": {\n                        \"calcs\": [\n                            \"lastNotNull\"\n                        ],\n                        \"fields\": \"\",\n                        \"values\": false\n                    },\n                    \"textMode\": \"auto\"\n                },\n                \"pluginVersion\": \"7\",\n                \"targets\": [\n                    {\n                        \"expr\": \"sum(kubelet_running_pods{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\"}) OR sum(kubelet_running_pod_count{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\"})\",\n                        \"format\": \"time_series\",\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"{{instance}}\",\n                        \"refId\": \"A\"\n                    }\n                ],\n                \"title\": \"Running Pods\",\n                \"transparent\": false,\n                \"type\": \"stat\"\n            },\n            {\n                \"datasource\": \"$datasource\",\n                \"fieldConfig\": {\n                    \"defaults\": {\n                        \"links\": [\n\n                        ],\n                        \"mappings\": [\n\n                        ],\n                        \"thresholds\": {\n                            \"mode\": \"absolute\",\n                            \"steps\": [\n\n                            ]\n                        },\n                        \"unit\": \"none\"\n                    }\n                },\n                \"gridPos\": {\n                    \"h\": 7,\n                    \"w\": 4,\n                    \"x\": 8,\n                    \"y\": 0\n                },\n                \"id\": 4,\n                \"links\": [\n\n                ],\n                \"options\": {\n                    \"colorMode\": \"value\",\n                    \"graphMode\": \"area\",\n                    \"justifyMode\": \"auto\",\n                    \"orientation\": \"auto\",\n                    \"reduceOptions\": {\n                        \"calcs\": [\n                            \"lastNotNull\"\n                        ],\n                        \"fields\": \"\",\n                        \"values\": false\n                    },\n                    \"textMode\": \"auto\"\n                },\n                \"pluginVersion\": \"7\",\n                \"targets\": [\n                    {\n                        \"expr\": \"sum(kubelet_running_containers{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\"}) OR sum(kubelet_running_container_count{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\"})\",\n                        \"format\": \"time_series\",\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"{{instance}}\",\n                        \"refId\": \"A\"\n                    }\n                ],\n                \"title\": \"Running Containers\",\n                \"transparent\": false,\n                \"type\": \"stat\"\n            },\n            {\n                \"datasource\": \"$datasource\",\n                \"fieldConfig\": {\n                    \"defaults\": {\n                        \"links\": [\n\n                        ],\n                        \"mappings\": [\n\n                        ],\n                        \"thresholds\": {\n                            \"mode\": \"absolute\",\n                            \"steps\": [\n\n                            ]\n                        },\n                        \"unit\": \"none\"\n                    }\n                },\n                \"gridPos\": {\n                    \"h\": 7,\n                    \"w\": 4,\n                    \"x\": 12,\n                    \"y\": 0\n                },\n                \"id\": 5,\n                \"links\": [\n\n                ],\n                \"options\": {\n                    \"colorMode\": \"value\",\n                    \"graphMode\": \"area\",\n                    \"justifyMode\": \"auto\",\n                    \"orientation\": \"auto\",\n                    \"reduceOptions\": {\n                        \"calcs\": [\n                            \"lastNotNull\"\n                        ],\n                        \"fields\": \"\",\n                        \"values\": false\n                    },\n                    \"textMode\": \"auto\"\n                },\n                \"pluginVersion\": \"7\",\n                \"targets\": [\n                    {\n                        \"expr\": \"sum(volume_manager_total_volumes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\", state=\\\"actual_state_of_world\\\"})\",\n                        \"format\": \"time_series\",\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"{{instance}}\",\n                        \"refId\": \"A\"\n                    }\n                ],\n                \"title\": \"Actual Volume Count\",\n                \"transparent\": false,\n                \"type\": \"stat\"\n            },\n            {\n                \"datasource\": \"$datasource\",\n                \"fieldConfig\": {\n                    \"defaults\": {\n                        \"links\": [\n\n                        ],\n                        \"mappings\": [\n\n                        ],\n                        \"thresholds\": {\n                            \"mode\": \"absolute\",\n                            \"steps\": [\n\n                            ]\n                        },\n                        \"unit\": \"none\"\n                    }\n                },\n                \"gridPos\": {\n                    \"h\": 7,\n                    \"w\": 4,\n                    \"x\": 16,\n                    \"y\": 0\n                },\n                \"id\": 6,\n                \"links\": [\n\n                ],\n                \"options\": {\n                    \"colorMode\": \"value\",\n                    \"graphMode\": \"area\",\n                    \"justifyMode\": \"auto\",\n                    \"orientation\": \"auto\",\n                    \"reduceOptions\": {\n                        \"calcs\": [\n                            \"lastNotNull\"\n                        ],\n                        \"fields\": \"\",\n                        \"values\": false\n                    },\n                    \"textMode\": \"auto\"\n                },\n                \"pluginVersion\": \"7\",\n                \"targets\": [\n                    {\n                        \"expr\": \"sum(volume_manager_total_volumes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\",state=\\\"desired_state_of_world\\\"})\",\n                        \"format\": \"time_series\",\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"{{instance}}\",\n                        \"refId\": \"A\"\n                    }\n                ],\n                \"title\": \"Desired Volume Count\",\n                \"transparent\": false,\n                \"type\": \"stat\"\n            },\n            {\n                \"datasource\": \"$datasource\",\n                \"fieldConfig\": {\n                    \"defaults\": {\n                        \"links\": [\n\n                        ],\n                        \"mappings\": [\n\n                        ],\n                        \"thresholds\": {\n                            \"mode\": \"absolute\",\n                            \"steps\": [\n\n                            ]\n                        },\n                        \"unit\": \"none\"\n                    }\n                },\n                \"gridPos\": {\n                    \"h\": 7,\n                    \"w\": 4,\n                    \"x\": 20,\n                    \"y\": 0\n                },\n                \"id\": 7,\n                \"links\": [\n\n                ],\n                \"options\": {\n                    \"colorMode\": \"value\",\n                    \"graphMode\": \"area\",\n                    \"justifyMode\": \"auto\",\n                    \"orientation\": \"auto\",\n                    \"reduceOptions\": {\n                        \"calcs\": [\n                            \"lastNotNull\"\n                        ],\n                        \"fields\": \"\",\n                        \"values\": false\n                    },\n                    \"textMode\": \"auto\"\n                },\n                \"pluginVersion\": \"7\",\n                \"targets\": [\n                    {\n                        \"expr\": \"sum(rate(kubelet_node_config_error{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\"}[$__rate_interval]))\",\n                        \"format\": \"time_series\",\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"{{instance}}\",\n                        \"refId\": \"A\"\n                    }\n                ],\n                \"title\": \"Config Error Count\",\n                \"transparent\": false,\n                \"type\": \"stat\"\n            },\n            {\n                \"aliasColors\": {\n\n                },\n                \"bars\": false,\n                \"dashLength\": 10,\n                \"dashes\": false,\n                \"datasource\": \"$datasource\",\n                \"fill\": 1,\n                \"fillGradient\": 0,\n                \"gridPos\": {\n                    \"h\": 7,\n                    \"w\": 12,\n                    \"x\": 0,\n                    \"y\": 7\n                },\n                \"id\": 8,\n                \"legend\": {\n                    \"alignAsTable\": true,\n                    \"avg\": false,\n                    \"current\": true,\n                    \"max\": false,\n                    \"min\": false,\n                    \"rightSide\": true,\n                    \"show\": true,\n                    \"sideWidth\": null,\n                    \"total\": false,\n                    \"values\": true\n                },\n                \"lines\": true,\n                \"linewidth\": 1,\n                \"links\": [\n\n                ],\n                \"nullPointMode\": \"null\",\n                \"percentage\": false,\n                \"pointradius\": 5,\n                \"points\": false,\n                \"renderer\": \"flot\",\n                \"repeat\": null,\n                \"seriesOverrides\": [\n\n                ],\n                \"spaceLength\": 10,\n                \"stack\": false,\n                \"steppedLine\": false,\n                \"targets\": [\n                    {\n                        \"expr\": \"sum(rate(kubelet_runtime_operations_total{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (operation_type, instance)\",\n                        \"format\": \"time_series\",\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"{{instance}} {{operation_type}}\",\n                        \"refId\": \"A\"\n                    }\n                ],\n                \"thresholds\": [\n\n                ],\n                \"timeFrom\": null,\n                \"timeShift\": null,\n                \"title\": \"Operation Rate\",\n                \"tooltip\": {\n                    \"shared\": true,\n                    \"sort\": 0,\n                    \"value_type\": \"individual\"\n                },\n                \"type\": \"graph\",\n                \"xaxis\": {\n                    \"buckets\": null,\n                    \"mode\": \"time\",\n                    \"name\": null,\n                    \"show\": true,\n                    \"values\": [\n\n                    ]\n                },\n                \"yaxes\": [\n                    {\n                        \"format\": \"ops\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": null,\n                        \"show\": true\n                    },\n                    {\n                        \"format\": \"ops\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": null,\n                        \"show\": true\n                    }\n                ]\n            },\n            {\n                \"aliasColors\": {\n\n                },\n                \"bars\": false,\n                \"dashLength\": 10,\n                \"dashes\": false,\n                \"datasource\": \"$datasource\",\n                \"fill\": 1,\n                \"fillGradient\": 0,\n                \"gridPos\": {\n                    \"h\": 7,\n                    \"w\": 12,\n                    \"x\": 12,\n                    \"y\": 7\n                },\n                \"id\": 9,\n                \"legend\": {\n                    \"alignAsTable\": true,\n                    \"avg\": false,\n                    \"current\": true,\n                    \"max\": false,\n                    \"min\": false,\n                    \"rightSide\": true,\n                    \"show\": true,\n                    \"sideWidth\": null,\n                    \"total\": false,\n                    \"values\": true\n                },\n                \"lines\": true,\n                \"linewidth\": 1,\n                \"links\": [\n\n                ],\n                \"nullPointMode\": \"null\",\n                \"percentage\": false,\n                \"pointradius\": 5,\n                \"points\": false,\n                \"renderer\": \"flot\",\n                \"repeat\": null,\n                \"seriesOverrides\": [\n\n                ],\n                \"spaceLength\": 10,\n                \"stack\": false,\n                \"steppedLine\": false,\n                \"targets\": [\n                    {\n                        \"expr\": \"sum(rate(kubelet_runtime_operations_errors_total{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, operation_type)\",\n                        \"format\": \"time_series\",\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"{{instance}} {{operation_type}}\",\n                        \"refId\": \"A\"\n                    }\n                ],\n                \"thresholds\": [\n\n                ],\n                \"timeFrom\": null,\n                \"timeShift\": null,\n                \"title\": \"Operation Error Rate\",\n                \"tooltip\": {\n                    \"shared\": true,\n                    \"sort\": 0,\n                    \"value_type\": \"individual\"\n                },\n                \"type\": \"graph\",\n                \"xaxis\": {\n                    \"buckets\": null,\n                    \"mode\": \"time\",\n                    \"name\": null,\n                    \"show\": true,\n                    \"values\": [\n\n                    ]\n                },\n                \"yaxes\": [\n                    {\n                        \"format\": \"ops\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": null,\n                        \"show\": true\n                    },\n                    {\n                        \"format\": \"ops\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": null,\n                        \"show\": true\n                    }\n                ]\n            },\n            {\n                \"aliasColors\": {\n\n                },\n                \"bars\": false,\n                \"dashLength\": 10,\n                \"dashes\": false,\n                \"datasource\": \"$datasource\",\n                \"fill\": 1,\n                \"fillGradient\": 0,\n                \"gridPos\": {\n                    \"h\": 7,\n                    \"w\": 24,\n                    \"x\": 0,\n                    \"y\": 14\n                },\n                \"id\": 10,\n                \"legend\": {\n                    \"alignAsTable\": true,\n                    \"avg\": false,\n                    \"current\": true,\n                    \"max\": false,\n                    \"min\": false,\n                    \"rightSide\": true,\n                    \"show\": true,\n                    \"sideWidth\": null,\n                    \"total\": false,\n                    \"values\": true\n                },\n                \"lines\": true,\n                \"linewidth\": 1,\n                \"links\": [\n\n                ],\n                \"nullPointMode\": \"null\",\n                \"percentage\": false,\n                \"pointradius\": 5,\n                \"points\": false,\n                \"renderer\": \"flot\",\n                \"repeat\": null,\n                \"seriesOverrides\": [\n\n                ],\n                \"spaceLength\": 10,\n                \"stack\": false,\n                \"steppedLine\": false,\n                \"targets\": [\n                    {\n                        \"expr\": \"histogram_quantile(0.99, sum(rate(kubelet_runtime_operations_duration_seconds_bucket{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, operation_type, le))\",\n                        \"format\": \"time_series\",\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"{{instance}} {{operation_type}}\",\n                        \"refId\": \"A\"\n                    }\n                ],\n                \"thresholds\": [\n\n                ],\n                \"timeFrom\": null,\n                \"timeShift\": null,\n                \"title\": \"Operation duration 99th quantile\",\n                \"tooltip\": {\n                    \"shared\": true,\n                    \"sort\": 0,\n                    \"value_type\": \"individual\"\n                },\n                \"type\": \"graph\",\n                \"xaxis\": {\n                    \"buckets\": null,\n                    \"mode\": \"time\",\n                    \"name\": null,\n                    \"show\": true,\n                    \"values\": [\n\n                    ]\n                },\n                \"yaxes\": [\n                    {\n                        \"format\": \"s\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": null,\n                        \"show\": true\n                    },\n                    {\n                        \"format\": \"s\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": null,\n                        \"show\": true\n                    }\n                ]\n            },\n            {\n                \"aliasColors\": {\n\n                },\n                \"bars\": false,\n                \"dashLength\": 10,\n                \"dashes\": false,\n                \"datasource\": \"$datasource\",\n                \"fill\": 1,\n                \"fillGradient\": 0,\n                \"gridPos\": {\n                    \"h\": 7,\n                    \"w\": 12,\n                    \"x\": 0,\n                    \"y\": 21\n                },\n                \"id\": 11,\n                \"legend\": {\n                    \"alignAsTable\": true,\n                    \"avg\": false,\n                    \"current\": true,\n                    \"max\": false,\n                    \"min\": false,\n                    \"rightSide\": true,\n                    \"show\": true,\n                    \"sideWidth\": null,\n                    \"total\": false,\n                    \"values\": true\n                },\n                \"lines\": true,\n                \"linewidth\": 1,\n                \"links\": [\n\n                ],\n                \"nullPointMode\": \"null\",\n                \"percentage\": false,\n                \"pointradius\": 5,\n                \"points\": false,\n                \"renderer\": \"flot\",\n                \"repeat\": null,\n                \"seriesOverrides\": [\n\n                ],\n                \"spaceLength\": 10,\n                \"stack\": false,\n                \"steppedLine\": false,\n                \"targets\": [\n                    {\n                        \"expr\": \"sum(rate(kubelet_pod_start_duration_seconds_count{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance)\",\n                        \"format\": \"time_series\",\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"{{instance}} pod\",\n                        \"refId\": \"A\"\n                    },\n                    {\n                        \"expr\": \"sum(rate(kubelet_pod_worker_duration_seconds_count{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance)\",\n                        \"format\": \"time_series\",\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"{{instance}} worker\",\n                        \"refId\": \"B\"\n                    }\n                ],\n                \"thresholds\": [\n\n                ],\n                \"timeFrom\": null,\n                \"timeShift\": null,\n                \"title\": \"Pod Start Rate\",\n                \"tooltip\": {\n                    \"shared\": true,\n                    \"sort\": 0,\n                    \"value_type\": \"individual\"\n                },\n                \"type\": \"graph\",\n                \"xaxis\": {\n                    \"buckets\": null,\n                    \"mode\": \"time\",\n                    \"name\": null,\n                    \"show\": true,\n                    \"values\": [\n\n                    ]\n                },\n                \"yaxes\": [\n                    {\n                        \"format\": \"ops\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": null,\n                        \"show\": true\n                    },\n                    {\n                        \"format\": \"ops\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": null,\n                        \"show\": true\n                    }\n                ]\n            },\n            {\n                \"aliasColors\": {\n\n                },\n                \"bars\": false,\n                \"dashLength\": 10,\n                \"dashes\": false,\n                \"datasource\": \"$datasource\",\n                \"fill\": 1,\n                \"fillGradient\": 0,\n                \"gridPos\": {\n                    \"h\": 7,\n                    \"w\": 12,\n                    \"x\": 12,\n                    \"y\": 21\n                },\n                \"id\": 12,\n                \"legend\": {\n                    \"alignAsTable\": true,\n                    \"avg\": false,\n                    \"current\": true,\n                    \"max\": false,\n                    \"min\": false,\n                    \"rightSide\": true,\n                    \"show\": true,\n                    \"sideWidth\": null,\n                    \"total\": false,\n                    \"values\": true\n                },\n                \"lines\": true,\n                \"linewidth\": 1,\n                \"links\": [\n\n                ],\n                \"nullPointMode\": \"null\",\n                \"percentage\": false,\n                \"pointradius\": 5,\n                \"points\": false,\n                \"renderer\": \"flot\",\n                \"repeat\": null,\n                \"seriesOverrides\": [\n\n                ],\n                \"spaceLength\": 10,\n                \"stack\": false,\n                \"steppedLine\": false,\n                \"targets\": [\n                    {\n                        \"expr\": \"histogram_quantile(0.99, sum(rate(kubelet_pod_start_duration_seconds_bucket{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, le))\",\n                        \"format\": \"time_series\",\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"{{instance}} pod\",\n                        \"refId\": \"A\"\n                    },\n                    {\n                        \"expr\": \"histogram_quantile(0.99, sum(rate(kubelet_pod_worker_duration_seconds_bucket{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, le))\",\n                        \"format\": \"time_series\",\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"{{instance}} worker\",\n                        \"refId\": \"B\"\n                    }\n                ],\n                \"thresholds\": [\n\n                ],\n                \"timeFrom\": null,\n                \"timeShift\": null,\n                \"title\": \"Pod Start Duration\",\n                \"tooltip\": {\n                    \"shared\": true,\n                    \"sort\": 0,\n                    \"value_type\": \"individual\"\n                },\n                \"type\": \"graph\",\n                \"xaxis\": {\n                    \"buckets\": null,\n                    \"mode\": \"time\",\n                    \"name\": null,\n                    \"show\": true,\n                    \"values\": [\n\n                    ]\n                },\n                \"yaxes\": [\n                    {\n                        \"format\": \"s\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": null,\n                        \"show\": true\n                    },\n                    {\n                        \"format\": \"s\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": null,\n                        \"show\": true\n                    }\n                ]\n            },\n            {\n                \"aliasColors\": {\n\n                },\n                \"bars\": false,\n                \"dashLength\": 10,\n                \"dashes\": false,\n                \"datasource\": \"$datasource\",\n                \"fill\": 1,\n                \"fillGradient\": 0,\n                \"gridPos\": {\n                    \"h\": 7,\n                    \"w\": 12,\n                    \"x\": 0,\n                    \"y\": 28\n                },\n                \"id\": 13,\n                \"legend\": {\n                    \"alignAsTable\": true,\n                    \"avg\": false,\n                    \"current\": true,\n                    \"hideEmpty\": true,\n                    \"hideZero\": true,\n                    \"max\": false,\n                    \"min\": false,\n                    \"rightSide\": true,\n                    \"show\": true,\n                    \"sideWidth\": null,\n                    \"total\": false,\n                    \"values\": true\n                },\n                \"lines\": true,\n                \"linewidth\": 1,\n                \"links\": [\n\n                ],\n                \"nullPointMode\": \"null\",\n                \"percentage\": false,\n                \"pointradius\": 5,\n                \"points\": false,\n                \"renderer\": \"flot\",\n                \"repeat\": null,\n                \"seriesOverrides\": [\n\n                ],\n                \"spaceLength\": 10,\n                \"stack\": false,\n                \"steppedLine\": false,\n                \"targets\": [\n                    {\n                        \"expr\": \"sum(rate(storage_operation_duration_seconds_count{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, operation_name, volume_plugin)\",\n                        \"format\": \"time_series\",\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"{{instance}} {{operation_name}} {{volume_plugin}}\",\n                        \"refId\": \"A\"\n                    }\n                ],\n                \"thresholds\": [\n\n                ],\n                \"timeFrom\": null,\n                \"timeShift\": null,\n                \"title\": \"Storage Operation Rate\",\n                \"tooltip\": {\n                    \"shared\": true,\n                    \"sort\": 0,\n                    \"value_type\": \"individual\"\n                },\n                \"type\": \"graph\",\n                \"xaxis\": {\n                    \"buckets\": null,\n                    \"mode\": \"time\",\n                    \"name\": null,\n                    \"show\": true,\n                    \"values\": [\n\n                    ]\n                },\n                \"yaxes\": [\n                    {\n                        \"format\": \"ops\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": null,\n                        \"show\": true\n                    },\n                    {\n                        \"format\": \"ops\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": null,\n                        \"show\": true\n                    }\n                ]\n            },\n            {\n                \"aliasColors\": {\n\n                },\n                \"bars\": false,\n                \"dashLength\": 10,\n                \"dashes\": false,\n                \"datasource\": \"$datasource\",\n                \"fill\": 1,\n                \"fillGradient\": 0,\n                \"gridPos\": {\n                    \"h\": 7,\n                    \"w\": 12,\n                    \"x\": 12,\n                    \"y\": 28\n                },\n                \"id\": 14,\n                \"legend\": {\n                    \"alignAsTable\": true,\n                    \"avg\": false,\n                    \"current\": true,\n                    \"hideEmpty\": true,\n                    \"hideZero\": true,\n                    \"max\": false,\n                    \"min\": false,\n                    \"rightSide\": true,\n                    \"show\": true,\n                    \"sideWidth\": null,\n                    \"total\": false,\n                    \"values\": true\n                },\n                \"lines\": true,\n                \"linewidth\": 1,\n                \"links\": [\n\n                ],\n                \"nullPointMode\": \"null\",\n                \"percentage\": false,\n                \"pointradius\": 5,\n                \"points\": false,\n                \"renderer\": \"flot\",\n                \"repeat\": null,\n                \"seriesOverrides\": [\n\n                ],\n                \"spaceLength\": 10,\n                \"stack\": false,\n                \"steppedLine\": false,\n                \"targets\": [\n                    {\n                        \"expr\": \"sum(rate(storage_operation_errors_total{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, operation_name, volume_plugin)\",\n                        \"format\": \"time_series\",\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"{{instance}} {{operation_name}} {{volume_plugin}}\",\n                        \"refId\": \"A\"\n                    }\n                ],\n                \"thresholds\": [\n\n                ],\n                \"timeFrom\": null,\n                \"timeShift\": null,\n                \"title\": \"Storage Operation Error Rate\",\n                \"tooltip\": {\n                    \"shared\": true,\n                    \"sort\": 0,\n                    \"value_type\": \"individual\"\n                },\n                \"type\": \"graph\",\n                \"xaxis\": {\n                    \"buckets\": null,\n                    \"mode\": \"time\",\n                    \"name\": null,\n                    \"show\": true,\n                    \"values\": [\n\n                    ]\n                },\n                \"yaxes\": [\n                    {\n                        \"format\": \"ops\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": null,\n                        \"show\": true\n                    },\n                    {\n                        \"format\": \"ops\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": null,\n                        \"show\": true\n                    }\n                ]\n            },\n            {\n                \"aliasColors\": {\n\n                },\n                \"bars\": false,\n                \"dashLength\": 10,\n                \"dashes\": false,\n                \"datasource\": \"$datasource\",\n                \"fill\": 1,\n                \"fillGradient\": 0,\n                \"gridPos\": {\n                    \"h\": 7,\n                    \"w\": 24,\n                    \"x\": 0,\n                    \"y\": 35\n                },\n                \"id\": 15,\n                \"legend\": {\n                    \"alignAsTable\": true,\n                    \"avg\": false,\n                    \"current\": true,\n                    \"hideEmpty\": true,\n                    \"hideZero\": true,\n                    \"max\": false,\n                    \"min\": false,\n                    \"rightSide\": true,\n                    \"show\": true,\n                    \"sideWidth\": null,\n                    \"total\": false,\n                    \"values\": true\n                },\n                \"lines\": true,\n                \"linewidth\": 1,\n                \"links\": [\n\n                ],\n                \"nullPointMode\": \"null\",\n                \"percentage\": false,\n                \"pointradius\": 5,\n                \"points\": false,\n                \"renderer\": \"flot\",\n                \"repeat\": null,\n                \"seriesOverrides\": [\n\n                ],\n                \"spaceLength\": 10,\n                \"stack\": false,\n                \"steppedLine\": false,\n                \"targets\": [\n                    {\n                        \"expr\": \"histogram_quantile(0.99, sum(rate(storage_operation_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, operation_name, volume_plugin, le))\",\n                        \"format\": \"time_series\",\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"{{instance}} {{operation_name}} {{volume_plugin}}\",\n                        \"refId\": \"A\"\n                    }\n                ],\n                \"thresholds\": [\n\n                ],\n                \"timeFrom\": null,\n                \"timeShift\": null,\n                \"title\": \"Storage Operation Duration 99th quantile\",\n                \"tooltip\": {\n                    \"shared\": true,\n                    \"sort\": 0,\n                    \"value_type\": \"individual\"\n                },\n                \"type\": \"graph\",\n                \"xaxis\": {\n                    \"buckets\": null,\n                    \"mode\": \"time\",\n                    \"name\": null,\n                    \"show\": true,\n                    \"values\": [\n\n                    ]\n                },\n                \"yaxes\": [\n                    {\n                        \"format\": \"s\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": null,\n                        \"show\": true\n                    },\n                    {\n                        \"format\": \"s\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": null,\n                        \"show\": true\n                    }\n                ]\n            },\n            {\n                \"aliasColors\": {\n\n                },\n                \"bars\": false,\n                \"dashLength\": 10,\n                \"dashes\": false,\n                \"datasource\": \"$datasource\",\n                \"fill\": 1,\n                \"fillGradient\": 0,\n                \"gridPos\": {\n                    \"h\": 7,\n                    \"w\": 12,\n                    \"x\": 0,\n                    \"y\": 42\n                },\n                \"id\": 16,\n                \"legend\": {\n                    \"alignAsTable\": true,\n                    \"avg\": false,\n                    \"current\": true,\n                    \"max\": false,\n                    \"min\": false,\n                    \"rightSide\": true,\n                    \"show\": true,\n                    \"sideWidth\": null,\n                    \"total\": false,\n                    \"values\": true\n                },\n                \"lines\": true,\n                \"linewidth\": 1,\n                \"links\": [\n\n                ],\n                \"nullPointMode\": \"null\",\n                \"percentage\": false,\n                \"pointradius\": 5,\n                \"points\": false,\n                \"renderer\": \"flot\",\n                \"repeat\": null,\n                \"seriesOverrides\": [\n\n                ],\n                \"spaceLength\": 10,\n                \"stack\": false,\n                \"steppedLine\": false,\n                \"targets\": [\n                    {\n                        \"expr\": \"sum(rate(kubelet_cgroup_manager_duration_seconds_count{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, operation_type)\",\n                        \"format\": \"time_series\",\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"{{operation_type}}\",\n                        \"refId\": \"A\"\n                    }\n                ],\n                \"thresholds\": [\n\n                ],\n                \"timeFrom\": null,\n                \"timeShift\": null,\n                \"title\": \"Cgroup manager operation rate\",\n                \"tooltip\": {\n                    \"shared\": true,\n                    \"sort\": 0,\n                    \"value_type\": \"individual\"\n                },\n                \"type\": \"graph\",\n                \"xaxis\": {\n                    \"buckets\": null,\n                    \"mode\": \"time\",\n                    \"name\": null,\n                    \"show\": true,\n                    \"values\": [\n\n                    ]\n                },\n                \"yaxes\": [\n                    {\n                        \"format\": \"ops\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": null,\n                        \"show\": true\n                    },\n                    {\n                        \"format\": \"ops\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": null,\n                        \"show\": true\n                    }\n                ]\n            },\n            {\n                \"aliasColors\": {\n\n                },\n                \"bars\": false,\n                \"dashLength\": 10,\n                \"dashes\": false,\n                \"datasource\": \"$datasource\",\n                \"fill\": 1,\n                \"fillGradient\": 0,\n                \"gridPos\": {\n                    \"h\": 7,\n                    \"w\": 12,\n                    \"x\": 12,\n                    \"y\": 42\n                },\n                \"id\": 17,\n                \"legend\": {\n                    \"alignAsTable\": true,\n                    \"avg\": false,\n                    \"current\": true,\n                    \"max\": false,\n                    \"min\": false,\n                    \"rightSide\": true,\n                    \"show\": true,\n                    \"sideWidth\": null,\n                    \"total\": false,\n                    \"values\": true\n                },\n                \"lines\": true,\n                \"linewidth\": 1,\n                \"links\": [\n\n                ],\n                \"nullPointMode\": \"null\",\n                \"percentage\": false,\n                \"pointradius\": 5,\n                \"points\": false,\n                \"renderer\": \"flot\",\n                \"repeat\": null,\n                \"seriesOverrides\": [\n\n                ],\n                \"spaceLength\": 10,\n                \"stack\": false,\n                \"steppedLine\": false,\n                \"targets\": [\n                    {\n                        \"expr\": \"histogram_quantile(0.99, sum(rate(kubelet_cgroup_manager_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, operation_type, le))\",\n                        \"format\": \"time_series\",\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"{{instance}} {{operation_type}}\",\n                        \"refId\": \"A\"\n                    }\n                ],\n                \"thresholds\": [\n\n                ],\n                \"timeFrom\": null,\n                \"timeShift\": null,\n                \"title\": \"Cgroup manager 99th quantile\",\n                \"tooltip\": {\n                    \"shared\": true,\n                    \"sort\": 0,\n                    \"value_type\": \"individual\"\n                },\n                \"type\": \"graph\",\n                \"xaxis\": {\n                    \"buckets\": null,\n                    \"mode\": \"time\",\n                    \"name\": null,\n                    \"show\": true,\n                    \"values\": [\n\n                    ]\n                },\n                \"yaxes\": [\n                    {\n                        \"format\": \"s\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": null,\n                        \"show\": true\n                    },\n                    {\n                        \"format\": \"s\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": null,\n                        \"show\": true\n                    }\n                ]\n            },\n            {\n                \"aliasColors\": {\n\n                },\n                \"bars\": false,\n                \"dashLength\": 10,\n                \"dashes\": false,\n                \"datasource\": \"$datasource\",\n                \"description\": \"Pod lifecycle event generator\",\n                \"fill\": 1,\n                \"fillGradient\": 0,\n                \"gridPos\": {\n                    \"h\": 7,\n                    \"w\": 12,\n                    \"x\": 0,\n                    \"y\": 49\n                },\n                \"id\": 18,\n                \"legend\": {\n                    \"alignAsTable\": true,\n                    \"avg\": false,\n                    \"current\": true,\n                    \"max\": false,\n                    \"min\": false,\n                    \"rightSide\": true,\n                    \"show\": true,\n                    \"sideWidth\": null,\n                    \"total\": false,\n                    \"values\": true\n                },\n                \"lines\": true,\n                \"linewidth\": 1,\n                \"links\": [\n\n                ],\n                \"nullPointMode\": \"null\",\n                \"percentage\": false,\n                \"pointradius\": 5,\n                \"points\": false,\n                \"renderer\": \"flot\",\n                \"repeat\": null,\n                \"seriesOverrides\": [\n\n                ],\n                \"spaceLength\": 10,\n                \"stack\": false,\n                \"steppedLine\": false,\n                \"targets\": [\n                    {\n                        \"expr\": \"sum(rate(kubelet_pleg_relist_duration_seconds_count{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance)\",\n                        \"format\": \"time_series\",\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"{{instance}}\",\n                        \"refId\": \"A\"\n                    }\n                ],\n                \"thresholds\": [\n\n                ],\n                \"timeFrom\": null,\n                \"timeShift\": null,\n                \"title\": \"PLEG relist rate\",\n                \"tooltip\": {\n                    \"shared\": true,\n                    \"sort\": 0,\n                    \"value_type\": \"individual\"\n                },\n                \"type\": \"graph\",\n                \"xaxis\": {\n                    \"buckets\": null,\n                    \"mode\": \"time\",\n                    \"name\": null,\n                    \"show\": true,\n                    \"values\": [\n\n                    ]\n                },\n                \"yaxes\": [\n                    {\n                        \"format\": \"ops\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": null,\n                        \"show\": true\n                    },\n                    {\n                        \"format\": \"ops\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": null,\n                        \"show\": true\n                    }\n                ]\n            },\n            {\n                \"aliasColors\": {\n\n                },\n                \"bars\": false,\n                \"dashLength\": 10,\n                \"dashes\": false,\n                \"datasource\": \"$datasource\",\n                \"fill\": 1,\n                \"fillGradient\": 0,\n                \"gridPos\": {\n                    \"h\": 7,\n                    \"w\": 12,\n                    \"x\": 12,\n                    \"y\": 49\n                },\n                \"id\": 19,\n                \"legend\": {\n                    \"alignAsTable\": true,\n                    \"avg\": false,\n                    \"current\": true,\n                    \"max\": false,\n                    \"min\": false,\n                    \"rightSide\": true,\n                    \"show\": true,\n                    \"sideWidth\": null,\n                    \"total\": false,\n                    \"values\": true\n                },\n                \"lines\": true,\n                \"linewidth\": 1,\n                \"links\": [\n\n                ],\n                \"nullPointMode\": \"null\",\n                \"percentage\": false,\n                \"pointradius\": 5,\n                \"points\": false,\n                \"renderer\": \"flot\",\n                \"repeat\": null,\n                \"seriesOverrides\": [\n\n                ],\n                \"spaceLength\": 10,\n                \"stack\": false,\n                \"steppedLine\": false,\n                \"targets\": [\n                    {\n                        \"expr\": \"histogram_quantile(0.99, sum(rate(kubelet_pleg_relist_interval_seconds_bucket{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, le))\",\n                        \"format\": \"time_series\",\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"{{instance}}\",\n                        \"refId\": \"A\"\n                    }\n                ],\n                \"thresholds\": [\n\n                ],\n                \"timeFrom\": null,\n                \"timeShift\": null,\n                \"title\": \"PLEG relist interval\",\n                \"tooltip\": {\n                    \"shared\": true,\n                    \"sort\": 0,\n                    \"value_type\": \"individual\"\n                },\n                \"type\": \"graph\",\n                \"xaxis\": {\n                    \"buckets\": null,\n                    \"mode\": \"time\",\n                    \"name\": null,\n                    \"show\": true,\n                    \"values\": [\n\n                    ]\n                },\n                \"yaxes\": [\n                    {\n                        \"format\": \"s\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": null,\n                        \"show\": true\n                    },\n                    {\n                        \"format\": \"s\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": null,\n                        \"show\": true\n                    }\n                ]\n            },\n            {\n                \"aliasColors\": {\n\n                },\n                \"bars\": false,\n                \"dashLength\": 10,\n                \"dashes\": false,\n                \"datasource\": \"$datasource\",\n                \"fill\": 1,\n                \"fillGradient\": 0,\n                \"gridPos\": {\n                    \"h\": 7,\n                    \"w\": 24,\n                    \"x\": 0,\n                    \"y\": 56\n                },\n                \"id\": 20,\n                \"legend\": {\n                    \"alignAsTable\": true,\n                    \"avg\": false,\n                    \"current\": true,\n                    \"max\": false,\n                    \"min\": false,\n                    \"rightSide\": true,\n                    \"show\": true,\n                    \"sideWidth\": null,\n                    \"total\": false,\n                    \"values\": true\n                },\n                \"lines\": true,\n                \"linewidth\": 1,\n                \"links\": [\n\n                ],\n                \"nullPointMode\": \"null\",\n                \"percentage\": false,\n                \"pointradius\": 5,\n                \"points\": false,\n                \"renderer\": \"flot\",\n                \"repeat\": null,\n                \"seriesOverrides\": [\n\n                ],\n                \"spaceLength\": 10,\n                \"stack\": false,\n                \"steppedLine\": false,\n                \"targets\": [\n                    {\n                        \"expr\": \"histogram_quantile(0.99, sum(rate(kubelet_pleg_relist_duration_seconds_bucket{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, le))\",\n                        \"format\": \"time_series\",\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"{{instance}}\",\n                        \"refId\": \"A\"\n                    }\n                ],\n                \"thresholds\": [\n\n                ],\n                \"timeFrom\": null,\n                \"timeShift\": null,\n                \"title\": \"PLEG relist duration\",\n                \"tooltip\": {\n                    \"shared\": true,\n                    \"sort\": 0,\n                    \"value_type\": \"individual\"\n                },\n                \"type\": \"graph\",\n                \"xaxis\": {\n                    \"buckets\": null,\n                    \"mode\": \"time\",\n                    \"name\": null,\n                    \"show\": true,\n                    \"values\": [\n\n                    ]\n                },\n                \"yaxes\": [\n                    {\n                        \"format\": \"s\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": null,\n                        \"show\": true\n                    },\n                    {\n                        \"format\": \"s\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": null,\n                        \"show\": true\n                    }\n                ]\n            },\n            {\n                \"aliasColors\": {\n\n                },\n                \"bars\": false,\n                \"dashLength\": 10,\n                \"dashes\": false,\n                \"datasource\": \"$datasource\",\n                \"fill\": 1,\n                \"fillGradient\": 0,\n                \"gridPos\": {\n                    \"h\": 7,\n                    \"w\": 24,\n                    \"x\": 0,\n                    \"y\": 63\n                },\n                \"id\": 21,\n                \"legend\": {\n                    \"alignAsTable\": false,\n                    \"avg\": false,\n                    \"current\": false,\n                    \"max\": false,\n                    \"min\": false,\n                    \"rightSide\": false,\n                    \"show\": true,\n                    \"sideWidth\": null,\n                    \"total\": false,\n                    \"values\": false\n                },\n                \"lines\": true,\n                \"linewidth\": 1,\n                \"links\": [\n\n                ],\n                \"nullPointMode\": \"null\",\n                \"percentage\": false,\n                \"pointradius\": 5,\n                \"points\": false,\n                \"renderer\": \"flot\",\n                \"repeat\": null,\n                \"seriesOverrides\": [\n\n                ],\n                \"spaceLength\": 10,\n                \"stack\": false,\n                \"steppedLine\": false,\n                \"targets\": [\n                    {\n                        \"expr\": \"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\",code=~\\\"2..\\\"}[$__rate_interval]))\",\n                        \"format\": \"time_series\",\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"2xx\",\n                        \"refId\": \"A\"\n                    },\n                    {\n                        \"expr\": \"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\",code=~\\\"3..\\\"}[$__rate_interval]))\",\n                        \"format\": \"time_series\",\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"3xx\",\n                        \"refId\": \"B\"\n                    },\n                    {\n                        \"expr\": \"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\",code=~\\\"4..\\\"}[$__rate_interval]))\",\n                        \"format\": \"time_series\",\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"4xx\",\n                        \"refId\": \"C\"\n                    },\n                    {\n                        \"expr\": \"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\",code=~\\\"5..\\\"}[$__rate_interval]))\",\n                        \"format\": \"time_series\",\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"5xx\",\n                        \"refId\": \"D\"\n                    }\n                ],\n                \"thresholds\": [\n\n                ],\n                \"timeFrom\": null,\n                \"timeShift\": null,\n                \"title\": \"RPC Rate\",\n                \"tooltip\": {\n                    \"shared\": true,\n                    \"sort\": 0,\n                    \"value_type\": \"individual\"\n                },\n                \"type\": \"graph\",\n                \"xaxis\": {\n                    \"buckets\": null,\n                    \"mode\": \"time\",\n                    \"name\": null,\n                    \"show\": true,\n                    \"values\": [\n\n                    ]\n                },\n                \"yaxes\": [\n                    {\n                        \"format\": \"ops\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": null,\n                        \"show\": true\n                    },\n                    {\n                        \"format\": \"ops\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": null,\n                        \"show\": true\n                    }\n                ]\n            },\n            {\n                \"aliasColors\": {\n\n                },\n                \"bars\": false,\n                \"dashLength\": 10,\n                \"dashes\": false,\n                \"datasource\": \"$datasource\",\n                \"fill\": 1,\n                \"fillGradient\": 0,\n                \"gridPos\": {\n                    \"h\": 7,\n                    \"w\": 24,\n                    \"x\": 0,\n                    \"y\": 70\n                },\n                \"id\": 22,\n                \"legend\": {\n                    \"alignAsTable\": true,\n                    \"avg\": false,\n                    \"current\": true,\n                    \"max\": false,\n                    \"min\": false,\n                    \"rightSide\": true,\n                    \"show\": true,\n                    \"sideWidth\": null,\n                    \"total\": false,\n                    \"values\": true\n                },\n                \"lines\": true,\n                \"linewidth\": 1,\n                \"links\": [\n\n                ],\n                \"nullPointMode\": \"null\",\n                \"percentage\": false,\n                \"pointradius\": 5,\n                \"points\": false,\n                \"renderer\": \"flot\",\n                \"repeat\": null,\n                \"seriesOverrides\": [\n\n                ],\n                \"spaceLength\": 10,\n                \"stack\": false,\n                \"steppedLine\": false,\n                \"targets\": [\n                    {\n                        \"expr\": \"histogram_quantile(0.99, sum(rate(rest_client_request_duration_seconds_bucket{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, verb, url, le))\",\n                        \"format\": \"time_series\",\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"{{instance}} {{verb}} {{url}}\",\n                        \"refId\": \"A\"\n                    }\n                ],\n                \"thresholds\": [\n\n                ],\n                \"timeFrom\": null,\n                \"timeShift\": null,\n                \"title\": \"Request duration 99th quantile\",\n                \"tooltip\": {\n                    \"shared\": true,\n                    \"sort\": 0,\n                    \"value_type\": \"individual\"\n                },\n                \"type\": \"graph\",\n                \"xaxis\": {\n                    \"buckets\": null,\n                    \"mode\": \"time\",\n                    \"name\": null,\n                    \"show\": true,\n                    \"values\": [\n\n                    ]\n                },\n                \"yaxes\": [\n                    {\n                        \"format\": \"s\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": null,\n                        \"show\": true\n                    },\n                    {\n                        \"format\": \"s\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": null,\n                        \"show\": true\n                    }\n                ]\n            },\n            {\n                \"aliasColors\": {\n\n                },\n                \"bars\": false,\n                \"dashLength\": 10,\n                \"dashes\": false,\n                \"datasource\": \"$datasource\",\n                \"fill\": 1,\n                \"fillGradient\": 0,\n                \"gridPos\": {\n                    \"h\": 7,\n                    \"w\": 8,\n                    \"x\": 0,\n                    \"y\": 77\n                },\n                \"id\": 23,\n                \"legend\": {\n                    \"alignAsTable\": false,\n                    \"avg\": false,\n                    \"current\": false,\n                    \"max\": false,\n                    \"min\": false,\n                    \"rightSide\": false,\n                    \"show\": true,\n                    \"sideWidth\": null,\n                    \"total\": false,\n                    \"values\": false\n                },\n                \"lines\": true,\n                \"linewidth\": 1,\n                \"links\": [\n\n                ],\n                \"nullPointMode\": \"null\",\n                \"percentage\": false,\n                \"pointradius\": 5,\n                \"points\": false,\n                \"renderer\": \"flot\",\n                \"repeat\": null,\n                \"seriesOverrides\": [\n\n                ],\n                \"spaceLength\": 10,\n                \"stack\": false,\n                \"steppedLine\": false,\n                \"targets\": [\n                    {\n                        \"expr\": \"process_resident_memory_bytes{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}\",\n                        \"format\": \"time_series\",\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"{{instance}}\",\n                        \"refId\": \"A\"\n                    }\n                ],\n                \"thresholds\": [\n\n                ],\n                \"timeFrom\": null,\n                \"timeShift\": null,\n                \"title\": \"Memory\",\n                \"tooltip\": {\n                    \"shared\": true,\n                    \"sort\": 0,\n                    \"value_type\": \"individual\"\n                },\n                \"type\": \"graph\",\n                \"xaxis\": {\n                    \"buckets\": null,\n                    \"mode\": \"time\",\n                    \"name\": null,\n                    \"show\": true,\n                    \"values\": [\n\n                    ]\n                },\n                \"yaxes\": [\n                    {\n                        \"format\": \"bytes\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": null,\n                        \"show\": true\n                    },\n                    {\n                        \"format\": \"bytes\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": null,\n                        \"show\": true\n                    }\n                ]\n            },\n            {\n                \"aliasColors\": {\n\n                },\n                \"bars\": false,\n                \"dashLength\": 10,\n                \"dashes\": false,\n                \"datasource\": \"$datasource\",\n                \"fill\": 1,\n                \"fillGradient\": 0,\n                \"gridPos\": {\n                    \"h\": 7,\n                    \"w\": 8,\n                    \"x\": 8,\n                    \"y\": 77\n                },\n                \"id\": 24,\n                \"legend\": {\n                    \"alignAsTable\": false,\n                    \"avg\": false,\n                    \"current\": false,\n                    \"max\": false,\n                    \"min\": false,\n                    \"rightSide\": false,\n                    \"show\": true,\n                    \"sideWidth\": null,\n                    \"total\": false,\n                    \"values\": false\n                },\n                \"lines\": true,\n                \"linewidth\": 1,\n                \"links\": [\n\n                ],\n                \"nullPointMode\": \"null\",\n                \"percentage\": false,\n                \"pointradius\": 5,\n                \"points\": false,\n                \"renderer\": \"flot\",\n                \"repeat\": null,\n                \"seriesOverrides\": [\n\n                ],\n                \"spaceLength\": 10,\n                \"stack\": false,\n                \"steppedLine\": false,\n                \"targets\": [\n                    {\n                        \"expr\": \"rate(process_cpu_seconds_total{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])\",\n                        \"format\": \"time_series\",\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"{{instance}}\",\n                        \"refId\": \"A\"\n                    }\n                ],\n                \"thresholds\": [\n\n                ],\n                \"timeFrom\": null,\n                \"timeShift\": null,\n                \"title\": \"CPU usage\",\n                \"tooltip\": {\n                    \"shared\": true,\n                    \"sort\": 0,\n                    \"value_type\": \"individual\"\n                },\n                \"type\": \"graph\",\n                \"xaxis\": {\n                    \"buckets\": null,\n                    \"mode\": \"time\",\n                    \"name\": null,\n                    \"show\": true,\n                    \"values\": [\n\n                    ]\n                },\n                \"yaxes\": [\n                    {\n                        \"format\": \"short\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": null,\n                        \"show\": true\n                    },\n                    {\n                        \"format\": \"short\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": null,\n                        \"show\": true\n                    }\n                ]\n            },\n            {\n                \"aliasColors\": {\n\n                },\n                \"bars\": false,\n                \"dashLength\": 10,\n                \"dashes\": false,\n                \"datasource\": \"$datasource\",\n                \"fill\": 1,\n                \"fillGradient\": 0,\n                \"gridPos\": {\n                    \"h\": 7,\n                    \"w\": 8,\n                    \"x\": 16,\n                    \"y\": 77\n                },\n                \"id\": 25,\n                \"legend\": {\n                    \"alignAsTable\": false,\n                    \"avg\": false,\n                    \"current\": false,\n                    \"max\": false,\n                    \"min\": false,\n                    \"rightSide\": false,\n                    \"show\": true,\n                    \"sideWidth\": null,\n                    \"total\": false,\n                    \"values\": false\n                },\n                \"lines\": true,\n                \"linewidth\": 1,\n                \"links\": [\n\n                ],\n                \"nullPointMode\": \"null\",\n                \"percentage\": false,\n                \"pointradius\": 5,\n                \"points\": false,\n                \"renderer\": \"flot\",\n                \"repeat\": null,\n                \"seriesOverrides\": [\n\n                ],\n                \"spaceLength\": 10,\n                \"stack\": false,\n                \"steppedLine\": false,\n                \"targets\": [\n                    {\n                        \"expr\": \"go_goroutines{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}\",\n                        \"format\": \"time_series\",\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"{{instance}}\",\n                        \"refId\": \"A\"\n                    }\n                ],\n                \"thresholds\": [\n\n                ],\n                \"timeFrom\": null,\n                \"timeShift\": null,\n                \"title\": \"Goroutines\",\n                \"tooltip\": {\n                    \"shared\": true,\n                    \"sort\": 0,\n                    \"value_type\": \"individual\"\n                },\n                \"type\": \"graph\",\n                \"xaxis\": {\n                    \"buckets\": null,\n                    \"mode\": \"time\",\n                    \"name\": null,\n                    \"show\": true,\n                    \"values\": [\n\n                    ]\n                },\n                \"yaxes\": [\n                    {\n                        \"format\": \"short\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": null,\n                        \"show\": true\n                    },\n                    {\n                        \"format\": \"short\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": null,\n                        \"show\": true\n                    }\n                ]\n            }\n        ],\n        \"refresh\": \"10s\",\n        \"rows\": [\n\n        ],\n        \"schemaVersion\": 14,\n        \"style\": \"dark\",\n        \"tags\": [\n            \"kubernetes-mixin\"\n        ],\n        \"templating\": {\n            \"list\": [\n                {\n                    \"current\": {\n                        \"text\": \"default\",\n                        \"value\": \"default\"\n                    },\n                    \"hide\": 0,\n                    \"label\": \"Data Source\",\n                    \"name\": \"datasource\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"prometheus\",\n                    \"refresh\": 1,\n                    \"regex\": \"\",\n                    \"type\": \"datasource\"\n                },\n                {\n                    \"allValue\": null,\n                    \"current\": {\n\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": false,\n                    \"label\": \"cluster\",\n                    \"multi\": false,\n                    \"name\": \"cluster\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(up{job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\"}, cluster)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                },\n                {\n                    \"allValue\": null,\n                    \"current\": {\n\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": true,\n                    \"label\": \"instance\",\n                    \"multi\": false,\n                    \"name\": \"instance\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(up{job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",cluster=\\\"$cluster\\\"}, instance)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                }\n            ]\n        },\n        \"time\": {\n            \"from\": \"now-1h\",\n            \"to\": \"now\"\n        },\n        \"timepicker\": {\n            \"refresh_intervals\": [\n                \"5s\",\n                \"10s\",\n                \"30s\",\n                \"1m\",\n                \"5m\",\n                \"15m\",\n                \"30m\",\n                \"1h\",\n                \"2h\",\n                \"1d\"\n            ],\n            \"time_options\": [\n                \"5m\",\n                \"15m\",\n                \"1h\",\n                \"6h\",\n                \"12h\",\n                \"24h\",\n                \"2d\",\n                \"7d\",\n                \"30d\"\n            ]\n        },\n        \"timezone\": \"UTC\",\n        \"title\": \"Kubernetes / Kubelet\",\n        \"uid\": \"3138fa155d5915769fbded898ac09fd9\",\n        \"version\": 0\n    }\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 9.5.3\n  name: grafana-dashboard-kubelet\n  namespace: monitoring\n---\napiVersion: v1\ndata:\n  namespace-by-pod.json: |-\n    {\n        \"__inputs\": [\n\n        ],\n        \"__requires\": [\n\n        ],\n        \"annotations\": {\n            \"list\": [\n                {\n                    \"builtIn\": 1,\n                    \"datasource\": \"-- Grafana --\",\n                    \"enable\": true,\n                    \"hide\": true,\n                    \"iconColor\": \"rgba(0, 211, 255, 1)\",\n                    \"name\": \"Annotations & Alerts\",\n                    \"type\": \"dashboard\"\n                }\n            ]\n        },\n        \"editable\": true,\n        \"gnetId\": null,\n        \"graphTooltip\": 0,\n        \"hideControls\": false,\n        \"id\": null,\n        \"links\": [\n\n        ],\n        \"panels\": [\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"gridPos\": {\n                    \"h\": 1,\n                    \"w\": 24,\n                    \"x\": 0,\n                    \"y\": 0\n                },\n                \"id\": 2,\n                \"panels\": [\n\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Current Bandwidth\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"cacheTimeout\": null,\n                \"colorBackground\": false,\n                \"colorValue\": false,\n                \"colors\": [\n                    \"#299c46\",\n                    \"rgba(237, 129, 40, 0.89)\",\n                    \"#d44a3a\"\n                ],\n                \"datasource\": \"$datasource\",\n                \"decimals\": 0,\n                \"format\": \"time_series\",\n                \"gauge\": {\n                    \"maxValue\": 100,\n                    \"minValue\": 0,\n                    \"show\": false,\n                    \"thresholdLabels\": false,\n                    \"thresholdMarkers\": true\n                },\n                \"gridPos\": {\n                    \"h\": 9,\n                    \"w\": 12,\n                    \"x\": 0,\n                    \"y\": 1\n                },\n                \"height\": 9,\n                \"id\": 3,\n                \"interval\": null,\n                \"links\": [\n\n                ],\n                \"mappingType\": 1,\n                \"mappingTypes\": [\n                    {\n                        \"name\": \"value to text\",\n                        \"value\": 1\n                    },\n                    {\n                        \"name\": \"range to text\",\n                        \"value\": 2\n                    }\n                ],\n                \"maxDataPoints\": 100,\n                \"minSpan\": 12,\n                \"nullPointMode\": \"connected\",\n                \"nullText\": null,\n                \"options\": {\n                    \"fieldOptions\": {\n                        \"calcs\": [\n                            \"last\"\n                        ],\n                        \"defaults\": {\n                            \"max\": 10000000000,\n                            \"min\": 0,\n                            \"title\": \"$namespace\",\n                            \"unit\": \"Bps\"\n                        },\n                        \"mappings\": [\n\n                        ],\n                        \"override\": {\n\n                        },\n                        \"thresholds\": [\n                            {\n                                \"color\": \"dark-green\",\n                                \"index\": 0,\n                                \"value\": null\n                            },\n                            {\n                                \"color\": \"dark-yellow\",\n                                \"index\": 1,\n                                \"value\": 5000000000\n                            },\n                            {\n                                \"color\": \"dark-red\",\n                                \"index\": 2,\n                                \"value\": 7000000000\n                            }\n                        ],\n                        \"values\": false\n                    }\n                },\n                \"postfix\": \"\",\n                \"postfixFontSize\": \"50%\",\n                \"prefix\": \"\",\n                \"prefixFontSize\": \"50%\",\n                \"rangeMaps\": [\n                    {\n                        \"from\": \"null\",\n                        \"text\": \"N/A\",\n                        \"to\": \"null\"\n                    }\n                ],\n                \"span\": 12,\n                \"sparkline\": {\n                    \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n                    \"full\": false,\n                    \"lineColor\": \"rgb(31, 120, 193)\",\n                    \"show\": false\n                },\n                \"tableColumn\": \"\",\n                \"targets\": [\n                    {\n                        \"expr\": \"sum(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution]))\",\n                        \"format\": \"time_series\",\n                        \"instant\": null,\n                        \"intervalFactor\": 1,\n                        \"legendFormat\": \"\",\n                        \"refId\": \"A\"\n                    }\n                ],\n                \"thresholds\": \"\",\n                \"timeFrom\": null,\n                \"timeShift\": null,\n                \"title\": \"Current Rate of Bytes Received\",\n                \"type\": \"gauge\",\n                \"valueFontSize\": \"80%\",\n                \"valueMaps\": [\n                    {\n                        \"op\": \"=\",\n                        \"text\": \"N/A\",\n                        \"value\": \"null\"\n                    }\n                ],\n                \"valueName\": \"current\"\n            },\n            {\n                \"cacheTimeout\": null,\n                \"colorBackground\": false,\n                \"colorValue\": false,\n                \"colors\": [\n                    \"#299c46\",\n                    \"rgba(237, 129, 40, 0.89)\",\n                    \"#d44a3a\"\n                ],\n                \"datasource\": \"$datasource\",\n                \"decimals\": 0,\n                \"format\": \"time_series\",\n                \"gauge\": {\n                    \"maxValue\": 100,\n                    \"minValue\": 0,\n                    \"show\": false,\n                    \"thresholdLabels\": false,\n                    \"thresholdMarkers\": true\n                },\n                \"gridPos\": {\n                    \"h\": 9,\n                    \"w\": 12,\n                    \"x\": 12,\n                    \"y\": 1\n                },\n                \"height\": 9,\n                \"id\": 4,\n                \"interval\": null,\n                \"links\": [\n\n                ],\n                \"mappingType\": 1,\n                \"mappingTypes\": [\n                    {\n                        \"name\": \"value to text\",\n                        \"value\": 1\n                    },\n                    {\n                        \"name\": \"range to text\",\n                        \"value\": 2\n                    }\n                ],\n                \"maxDataPoints\": 100,\n                \"minSpan\": 12,\n                \"nullPointMode\": \"connected\",\n                \"nullText\": null,\n                \"options\": {\n                    \"fieldOptions\": {\n                        \"calcs\": [\n                            \"last\"\n                        ],\n                        \"defaults\": {\n                            \"max\": 10000000000,\n                            \"min\": 0,\n                            \"title\": \"$namespace\",\n                            \"unit\": \"Bps\"\n                        },\n                        \"mappings\": [\n\n                        ],\n                        \"override\": {\n\n                        },\n                        \"thresholds\": [\n                            {\n                                \"color\": \"dark-green\",\n                                \"index\": 0,\n                                \"value\": null\n                            },\n                            {\n                                \"color\": \"dark-yellow\",\n                                \"index\": 1,\n                                \"value\": 5000000000\n                            },\n                            {\n                                \"color\": \"dark-red\",\n                                \"index\": 2,\n                                \"value\": 7000000000\n                            }\n                        ],\n                        \"values\": false\n                    }\n                },\n                \"postfix\": \"\",\n                \"postfixFontSize\": \"50%\",\n                \"prefix\": \"\",\n                \"prefixFontSize\": \"50%\",\n                \"rangeMaps\": [\n                    {\n                        \"from\": \"null\",\n                        \"text\": \"N/A\",\n                        \"to\": \"null\"\n                    }\n                ],\n                \"span\": 12,\n                \"sparkline\": {\n                    \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n                    \"full\": false,\n                    \"lineColor\": \"rgb(31, 120, 193)\",\n                    \"show\": false\n                },\n                \"tableColumn\": \"\",\n                \"targets\": [\n                    {\n                        \"expr\": \"sum(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution]))\",\n                        \"format\": \"time_series\",\n                        \"instant\": null,\n                        \"intervalFactor\": 1,\n                        \"legendFormat\": \"\",\n                        \"refId\": \"A\"\n                    }\n                ],\n                \"thresholds\": \"\",\n                \"timeFrom\": null,\n                \"timeShift\": null,\n                \"title\": \"Current Rate of Bytes Transmitted\",\n                \"type\": \"gauge\",\n                \"valueFontSize\": \"80%\",\n                \"valueMaps\": [\n                    {\n                        \"op\": \"=\",\n                        \"text\": \"N/A\",\n                        \"value\": \"null\"\n                    }\n                ],\n                \"valueName\": \"current\"\n            },\n            {\n                \"columns\": [\n                    {\n                        \"text\": \"Time\",\n                        \"value\": \"Time\"\n                    },\n                    {\n                        \"text\": \"Value #A\",\n                        \"value\": \"Value #A\"\n                    },\n                    {\n                        \"text\": \"Value #B\",\n                        \"value\": \"Value #B\"\n                    },\n                    {\n                        \"text\": \"Value #C\",\n                        \"value\": \"Value #C\"\n                    },\n                    {\n                        \"text\": \"Value #D\",\n                        \"value\": \"Value #D\"\n                    },\n                    {\n                        \"text\": \"Value #E\",\n                        \"value\": \"Value #E\"\n                    },\n                    {\n                        \"text\": \"Value #F\",\n                        \"value\": \"Value #F\"\n                    },\n                    {\n                        \"text\": \"pod\",\n                        \"value\": \"pod\"\n                    }\n                ],\n                \"datasource\": \"$datasource\",\n                \"fill\": 1,\n                \"fontSize\": \"100%\",\n                \"gridPos\": {\n                    \"h\": 9,\n                    \"w\": 24,\n                    \"x\": 0,\n                    \"y\": 10\n                },\n                \"id\": 5,\n                \"lines\": true,\n                \"linewidth\": 1,\n                \"links\": [\n\n                ],\n                \"minSpan\": 24,\n                \"nullPointMode\": \"null as zero\",\n                \"renderer\": \"flot\",\n                \"scroll\": true,\n                \"showHeader\": true,\n                \"sort\": {\n                    \"col\": 0,\n                    \"desc\": false\n                },\n                \"spaceLength\": 10,\n                \"span\": 24,\n                \"styles\": [\n                    {\n                        \"alias\": \"Time\",\n                        \"colorMode\": null,\n                        \"colors\": [\n\n                        ],\n                        \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                        \"decimals\": 2,\n                        \"link\": false,\n                        \"linkTooltip\": \"Drill down\",\n                        \"linkUrl\": \"\",\n                        \"pattern\": \"Time\",\n                        \"thresholds\": [\n\n                        ],\n                        \"type\": \"hidden\",\n                        \"unit\": \"short\"\n                    },\n                    {\n                        \"alias\": \"Bandwidth Received\",\n                        \"colorMode\": null,\n                        \"colors\": [\n\n                        ],\n                        \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                        \"decimals\": 2,\n                        \"link\": false,\n                        \"linkTooltip\": \"Drill down\",\n                        \"linkUrl\": \"\",\n                        \"pattern\": \"Value #A\",\n                        \"thresholds\": [\n\n                        ],\n                        \"type\": \"number\",\n                        \"unit\": \"Bps\"\n                    },\n                    {\n                        \"alias\": \"Bandwidth Transmitted\",\n                        \"colorMode\": null,\n                        \"colors\": [\n\n                        ],\n                        \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                        \"decimals\": 2,\n                        \"link\": false,\n                        \"linkTooltip\": \"Drill down\",\n                        \"linkUrl\": \"\",\n                        \"pattern\": \"Value #B\",\n                        \"thresholds\": [\n\n                        ],\n                        \"type\": \"number\",\n                        \"unit\": \"Bps\"\n                    },\n                    {\n                        \"alias\": \"Rate of Received Packets\",\n                        \"colorMode\": null,\n                        \"colors\": [\n\n                        ],\n                        \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                        \"decimals\": 2,\n                        \"link\": false,\n                        \"linkTooltip\": \"Drill down\",\n                        \"linkUrl\": \"\",\n                        \"pattern\": \"Value #C\",\n                        \"thresholds\": [\n\n                        ],\n                        \"type\": \"number\",\n                        \"unit\": \"pps\"\n                    },\n                    {\n                        \"alias\": \"Rate of Transmitted Packets\",\n                        \"colorMode\": null,\n                        \"colors\": [\n\n                        ],\n                        \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                        \"decimals\": 2,\n                        \"link\": false,\n                        \"linkTooltip\": \"Drill down\",\n                        \"linkUrl\": \"\",\n                        \"pattern\": \"Value #D\",\n                        \"thresholds\": [\n\n                        ],\n                        \"type\": \"number\",\n                        \"unit\": \"pps\"\n                    },\n                    {\n                        \"alias\": \"Rate of Received Packets Dropped\",\n                        \"colorMode\": null,\n                        \"colors\": [\n\n                        ],\n                        \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                        \"decimals\": 2,\n                        \"link\": false,\n                        \"linkTooltip\": \"Drill down\",\n                        \"linkUrl\": \"\",\n                        \"pattern\": \"Value #E\",\n                        \"thresholds\": [\n\n                        ],\n                        \"type\": \"number\",\n                        \"unit\": \"pps\"\n                    },\n                    {\n                        \"alias\": \"Rate of Transmitted Packets Dropped\",\n                        \"colorMode\": null,\n                        \"colors\": [\n\n                        ],\n                        \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                        \"decimals\": 2,\n                        \"link\": false,\n                        \"linkTooltip\": \"Drill down\",\n                        \"linkUrl\": \"\",\n                        \"pattern\": \"Value #F\",\n                        \"thresholds\": [\n\n                        ],\n                        \"type\": \"number\",\n                        \"unit\": \"pps\"\n                    },\n                    {\n                        \"alias\": \"Pod\",\n                        \"colorMode\": null,\n                        \"colors\": [\n\n                        ],\n                        \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                        \"decimals\": 2,\n                        \"link\": true,\n                        \"linkTooltip\": \"Drill down\",\n                        \"linkUrl\": \"d/7a18067ce943a40ae25454675c19ff5c/kubernetes-networking-pod?orgId=1&refresh=30s&var-namespace=$namespace&var-pod=$__cell\",\n                        \"pattern\": \"pod\",\n                        \"thresholds\": [\n\n                        ],\n                        \"type\": \"number\",\n                        \"unit\": \"short\"\n                    }\n                ],\n                \"targets\": [\n                    {\n                        \"expr\": \"sum(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])) by (pod)\",\n                        \"format\": \"table\",\n                        \"instant\": true,\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"\",\n                        \"refId\": \"A\",\n                        \"step\": 10\n                    },\n                    {\n                        \"expr\": \"sum(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])) by (pod)\",\n                        \"format\": \"table\",\n                        \"instant\": true,\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"\",\n                        \"refId\": \"B\",\n                        \"step\": 10\n                    },\n                    {\n                        \"expr\": \"sum(irate(container_network_receive_packets_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])) by (pod)\",\n                        \"format\": \"table\",\n                        \"instant\": true,\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"\",\n                        \"refId\": \"C\",\n                        \"step\": 10\n                    },\n                    {\n                        \"expr\": \"sum(irate(container_network_transmit_packets_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])) by (pod)\",\n                        \"format\": \"table\",\n                        \"instant\": true,\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"\",\n                        \"refId\": \"D\",\n                        \"step\": 10\n                    },\n                    {\n                        \"expr\": \"sum(irate(container_network_receive_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])) by (pod)\",\n                        \"format\": \"table\",\n                        \"instant\": true,\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"\",\n                        \"refId\": \"E\",\n                        \"step\": 10\n                    },\n                    {\n                        \"expr\": \"sum(irate(container_network_transmit_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])) by (pod)\",\n                        \"format\": \"table\",\n                        \"instant\": true,\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"\",\n                        \"refId\": \"F\",\n                        \"step\": 10\n                    }\n                ],\n                \"timeFrom\": null,\n                \"timeShift\": null,\n                \"title\": \"Current Status\",\n                \"type\": \"table\"\n            },\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"gridPos\": {\n                    \"h\": 1,\n                    \"w\": 24,\n                    \"x\": 0,\n                    \"y\": 19\n                },\n                \"id\": 6,\n                \"panels\": [\n\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Bandwidth\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"aliasColors\": {\n\n                },\n                \"bars\": false,\n                \"dashLength\": 10,\n                \"dashes\": false,\n                \"datasource\": \"$datasource\",\n                \"fill\": 2,\n                \"fillGradient\": 0,\n                \"gridPos\": {\n                    \"h\": 9,\n                    \"w\": 12,\n                    \"x\": 0,\n                    \"y\": 20\n                },\n                \"id\": 7,\n                \"legend\": {\n                    \"alignAsTable\": false,\n                    \"avg\": false,\n                    \"current\": false,\n                    \"hideEmpty\": true,\n                    \"hideZero\": true,\n                    \"max\": false,\n                    \"min\": false,\n                    \"rightSide\": false,\n                    \"show\": true,\n                    \"sideWidth\": null,\n                    \"total\": false,\n                    \"values\": false\n                },\n                \"lines\": true,\n                \"linewidth\": 2,\n                \"links\": [\n\n                ],\n                \"minSpan\": 12,\n                \"nullPointMode\": \"connected\",\n                \"paceLength\": 10,\n                \"percentage\": false,\n                \"pointradius\": 5,\n                \"points\": false,\n                \"renderer\": \"flot\",\n                \"repeat\": null,\n                \"seriesOverrides\": [\n\n                ],\n                \"spaceLength\": 10,\n                \"span\": 12,\n                \"stack\": true,\n                \"steppedLine\": false,\n                \"targets\": [\n                    {\n                        \"expr\": \"sum(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])) by (pod)\",\n                        \"format\": \"time_series\",\n                        \"intervalFactor\": 1,\n                        \"legendFormat\": \"{{pod}}\",\n                        \"refId\": \"A\",\n                        \"step\": 10\n                    }\n                ],\n                \"thresholds\": [\n\n                ],\n                \"timeFrom\": null,\n                \"timeShift\": null,\n                \"title\": \"Receive Bandwidth\",\n                \"tooltip\": {\n                    \"shared\": true,\n                    \"sort\": 2,\n                    \"value_type\": \"individual\"\n                },\n                \"type\": \"graph\",\n                \"xaxis\": {\n                    \"buckets\": null,\n                    \"mode\": \"time\",\n                    \"name\": null,\n                    \"show\": true,\n                    \"values\": [\n\n                    ]\n                },\n                \"yaxes\": [\n                    {\n                        \"format\": \"Bps\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": 0,\n                        \"show\": true\n                    },\n                    {\n                        \"format\": \"Bps\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": 0,\n                        \"show\": true\n                    }\n                ]\n            },\n            {\n                \"aliasColors\": {\n\n                },\n                \"bars\": false,\n                \"dashLength\": 10,\n                \"dashes\": false,\n                \"datasource\": \"$datasource\",\n                \"fill\": 2,\n                \"fillGradient\": 0,\n                \"gridPos\": {\n                    \"h\": 9,\n                    \"w\": 12,\n                    \"x\": 12,\n                    \"y\": 20\n                },\n                \"id\": 8,\n                \"legend\": {\n                    \"alignAsTable\": false,\n                    \"avg\": false,\n                    \"current\": false,\n                    \"hideEmpty\": true,\n                    \"hideZero\": true,\n                    \"max\": false,\n                    \"min\": false,\n                    \"rightSide\": false,\n                    \"show\": true,\n                    \"sideWidth\": null,\n                    \"total\": false,\n                    \"values\": false\n                },\n                \"lines\": true,\n                \"linewidth\": 2,\n                \"links\": [\n\n                ],\n                \"minSpan\": 12,\n                \"nullPointMode\": \"connected\",\n                \"paceLength\": 10,\n                \"percentage\": false,\n                \"pointradius\": 5,\n                \"points\": false,\n                \"renderer\": \"flot\",\n                \"repeat\": null,\n                \"seriesOverrides\": [\n\n                ],\n                \"spaceLength\": 10,\n                \"span\": 12,\n                \"stack\": true,\n                \"steppedLine\": false,\n                \"targets\": [\n                    {\n                        \"expr\": \"sum(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])) by (pod)\",\n                        \"format\": \"time_series\",\n                        \"intervalFactor\": 1,\n                        \"legendFormat\": \"{{pod}}\",\n                        \"refId\": \"A\",\n                        \"step\": 10\n                    }\n                ],\n                \"thresholds\": [\n\n                ],\n                \"timeFrom\": null,\n                \"timeShift\": null,\n                \"title\": \"Transmit Bandwidth\",\n                \"tooltip\": {\n                    \"shared\": true,\n                    \"sort\": 2,\n                    \"value_type\": \"individual\"\n                },\n                \"type\": \"graph\",\n                \"xaxis\": {\n                    \"buckets\": null,\n                    \"mode\": \"time\",\n                    \"name\": null,\n                    \"show\": true,\n                    \"values\": [\n\n                    ]\n                },\n                \"yaxes\": [\n                    {\n                        \"format\": \"Bps\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": 0,\n                        \"show\": true\n                    },\n                    {\n                        \"format\": \"Bps\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": 0,\n                        \"show\": true\n                    }\n                ]\n            },\n            {\n                \"collapse\": true,\n                \"collapsed\": true,\n                \"gridPos\": {\n                    \"h\": 1,\n                    \"w\": 24,\n                    \"x\": 0,\n                    \"y\": 29\n                },\n                \"id\": 9,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 2,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n                            \"h\": 10,\n                            \"w\": 12,\n                            \"x\": 0,\n                            \"y\": 30\n                        },\n                        \"id\": 10,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"hideEmpty\": true,\n                            \"hideZero\": true,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 2,\n                        \"links\": [\n\n                        ],\n                        \"minSpan\": 12,\n                        \"nullPointMode\": \"connected\",\n                        \"paceLength\": 10,\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(irate(container_network_receive_packets_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])) by (pod)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 1,\n                                \"legendFormat\": \"{{pod}}\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Rate of Received Packets\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 2,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n                            \"h\": 10,\n                            \"w\": 12,\n                            \"x\": 12,\n                            \"y\": 30\n                        },\n                        \"id\": 11,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"hideEmpty\": true,\n                            \"hideZero\": true,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 2,\n                        \"links\": [\n\n                        ],\n                        \"minSpan\": 12,\n                        \"nullPointMode\": \"connected\",\n                        \"paceLength\": 10,\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(irate(container_network_transmit_packets_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])) by (pod)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 1,\n                                \"legendFormat\": \"{{pod}}\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Rate of Transmitted Packets\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Packets\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"collapse\": true,\n                \"collapsed\": true,\n                \"gridPos\": {\n                    \"h\": 1,\n                    \"w\": 24,\n                    \"x\": 0,\n                    \"y\": 30\n                },\n                \"id\": 12,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 2,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n                            \"h\": 10,\n                            \"w\": 12,\n                            \"x\": 0,\n                            \"y\": 40\n                        },\n                        \"id\": 13,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"hideEmpty\": true,\n                            \"hideZero\": true,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 2,\n                        \"links\": [\n\n                        ],\n                        \"minSpan\": 12,\n                        \"nullPointMode\": \"connected\",\n                        \"paceLength\": 10,\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(irate(container_network_receive_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])) by (pod)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 1,\n                                \"legendFormat\": \"{{pod}}\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Rate of Received Packets Dropped\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 2,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n                            \"h\": 10,\n                            \"w\": 12,\n                            \"x\": 12,\n                            \"y\": 40\n                        },\n                        \"id\": 14,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"hideEmpty\": true,\n                            \"hideZero\": true,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 2,\n                        \"links\": [\n\n                        ],\n                        \"minSpan\": 12,\n                        \"nullPointMode\": \"connected\",\n                        \"paceLength\": 10,\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(irate(container_network_transmit_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])) by (pod)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 1,\n                                \"legendFormat\": \"{{pod}}\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Rate of Transmitted Packets Dropped\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Errors\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            }\n        ],\n        \"refresh\": \"10s\",\n        \"rows\": [\n\n        ],\n        \"schemaVersion\": 18,\n        \"style\": \"dark\",\n        \"tags\": [\n            \"kubernetes-mixin\"\n        ],\n        \"templating\": {\n            \"list\": [\n                {\n                    \"current\": {\n                        \"text\": \"default\",\n                        \"value\": \"default\"\n                    },\n                    \"hide\": 0,\n                    \"label\": \"Data Source\",\n                    \"name\": \"datasource\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"prometheus\",\n                    \"refresh\": 1,\n                    \"regex\": \"\",\n                    \"type\": \"datasource\"\n                },\n                {\n                    \"allValue\": null,\n                    \"current\": {\n\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": false,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"cluster\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(up{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\"}, cluster)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"sort\": 0,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                },\n                {\n                    \"allValue\": \".+\",\n                    \"auto\": false,\n                    \"auto_count\": 30,\n                    \"auto_min\": \"10s\",\n                    \"current\": {\n                        \"text\": \"kube-system\",\n                        \"value\": \"kube-system\"\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"definition\": \"label_values(container_network_receive_packets_total{cluster=\\\"$cluster\\\"}, namespace)\",\n                    \"hide\": 0,\n                    \"includeAll\": true,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"namespace\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(container_network_receive_packets_total{cluster=\\\"$cluster\\\"}, namespace)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"skipUrlSync\": false,\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                },\n                {\n                    \"allValue\": null,\n                    \"auto\": false,\n                    \"auto_count\": 30,\n                    \"auto_min\": \"10s\",\n                    \"current\": {\n                        \"text\": \"5m\",\n                        \"value\": \"5m\"\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": false,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"resolution\",\n                    \"options\": [\n                        {\n                            \"selected\": false,\n                            \"text\": \"30s\",\n                            \"value\": \"30s\"\n                        },\n                        {\n                            \"selected\": true,\n                            \"text\": \"5m\",\n                            \"value\": \"5m\"\n                        },\n                        {\n                            \"selected\": false,\n                            \"text\": \"1h\",\n                            \"value\": \"1h\"\n                        }\n                    ],\n                    \"query\": \"30s,5m,1h\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"skipUrlSync\": false,\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"interval\",\n                    \"useTags\": false\n                },\n                {\n                    \"allValue\": null,\n                    \"auto\": false,\n                    \"auto_count\": 30,\n                    \"auto_min\": \"10s\",\n                    \"current\": {\n                        \"text\": \"5m\",\n                        \"value\": \"5m\"\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 2,\n                    \"includeAll\": false,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"interval\",\n                    \"options\": [\n                        {\n                            \"selected\": true,\n                            \"text\": \"4h\",\n                            \"value\": \"4h\"\n                        }\n                    ],\n                    \"query\": \"4h\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"skipUrlSync\": false,\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"interval\",\n                    \"useTags\": false\n                }\n            ]\n        },\n        \"time\": {\n            \"from\": \"now-1h\",\n            \"to\": \"now\"\n        },\n        \"timepicker\": {\n            \"refresh_intervals\": [\n                \"5s\",\n                \"10s\",\n                \"30s\",\n                \"1m\",\n                \"5m\",\n                \"15m\",\n                \"30m\",\n                \"1h\",\n                \"2h\",\n                \"1d\"\n            ],\n            \"time_options\": [\n                \"5m\",\n                \"15m\",\n                \"1h\",\n                \"6h\",\n                \"12h\",\n                \"24h\",\n                \"2d\",\n                \"7d\",\n                \"30d\"\n            ]\n        },\n        \"timezone\": \"UTC\",\n        \"title\": \"Kubernetes / Networking / Namespace (Pods)\",\n        \"uid\": \"8b7a8b326d7a6f1f04244066368c67af\",\n        \"version\": 0\n    }\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 9.5.3\n  name: grafana-dashboard-namespace-by-pod\n  namespace: monitoring\n---\napiVersion: v1\ndata:\n  namespace-by-workload.json: |-\n    {\n        \"__inputs\": [\n\n        ],\n        \"__requires\": [\n\n        ],\n        \"annotations\": {\n            \"list\": [\n                {\n                    \"builtIn\": 1,\n                    \"datasource\": \"-- Grafana --\",\n                    \"enable\": true,\n                    \"hide\": true,\n                    \"iconColor\": \"rgba(0, 211, 255, 1)\",\n                    \"name\": \"Annotations & Alerts\",\n                    \"type\": \"dashboard\"\n                }\n            ]\n        },\n        \"editable\": true,\n        \"gnetId\": null,\n        \"graphTooltip\": 0,\n        \"hideControls\": false,\n        \"id\": null,\n        \"links\": [\n\n        ],\n        \"panels\": [\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"gridPos\": {\n                    \"h\": 1,\n                    \"w\": 24,\n                    \"x\": 0,\n                    \"y\": 0\n                },\n                \"id\": 2,\n                \"panels\": [\n\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Current Bandwidth\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"aliasColors\": {\n\n                },\n                \"bars\": true,\n                \"dashLength\": 10,\n                \"dashes\": false,\n                \"datasource\": \"$datasource\",\n                \"fill\": 2,\n                \"fillGradient\": 0,\n                \"gridPos\": {\n                    \"h\": 9,\n                    \"w\": 12,\n                    \"x\": 0,\n                    \"y\": 1\n                },\n                \"id\": 3,\n                \"legend\": {\n                    \"alignAsTable\": true,\n                    \"avg\": false,\n                    \"current\": true,\n                    \"hideEmpty\": true,\n                    \"hideZero\": true,\n                    \"max\": false,\n                    \"min\": false,\n                    \"rightSide\": true,\n                    \"show\": true,\n                    \"sideWidth\": null,\n                    \"sort\": \"current\",\n                    \"sortDesc\": true,\n                    \"total\": false,\n                    \"values\": true\n                },\n                \"lines\": false,\n                \"linewidth\": 1,\n                \"links\": [\n\n                ],\n                \"minSpan\": 24,\n                \"nullPointMode\": \"null\",\n                \"paceLength\": 10,\n                \"percentage\": false,\n                \"pointradius\": 5,\n                \"points\": false,\n                \"renderer\": \"flot\",\n                \"repeat\": null,\n                \"seriesOverrides\": [\n\n                ],\n                \"spaceLength\": 10,\n                \"span\": 24,\n                \"stack\": false,\n                \"steppedLine\": false,\n                \"targets\": [\n                    {\n                        \"expr\": \"sort_desc(sum(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                        \"format\": \"time_series\",\n                        \"intervalFactor\": 1,\n                        \"legendFormat\": \"{{ workload }}\",\n                        \"refId\": \"A\",\n                        \"step\": 10\n                    }\n                ],\n                \"thresholds\": [\n\n                ],\n                \"timeFrom\": null,\n                \"timeShift\": null,\n                \"title\": \"Current Rate of Bytes Received\",\n                \"tooltip\": {\n                    \"shared\": true,\n                    \"sort\": 2,\n                    \"value_type\": \"individual\"\n                },\n                \"type\": \"graph\",\n                \"xaxis\": {\n                    \"buckets\": null,\n                    \"mode\": \"series\",\n                    \"name\": null,\n                    \"show\": false,\n                    \"values\": [\n                        \"current\"\n                    ]\n                },\n                \"yaxes\": [\n                    {\n                        \"format\": \"Bps\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": 0,\n                        \"show\": true\n                    },\n                    {\n                        \"format\": \"Bps\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": 0,\n                        \"show\": true\n                    }\n                ]\n            },\n            {\n                \"aliasColors\": {\n\n                },\n                \"bars\": true,\n                \"dashLength\": 10,\n                \"dashes\": false,\n                \"datasource\": \"$datasource\",\n                \"fill\": 2,\n                \"fillGradient\": 0,\n                \"gridPos\": {\n                    \"h\": 9,\n                    \"w\": 12,\n                    \"x\": 12,\n                    \"y\": 1\n                },\n                \"id\": 4,\n                \"legend\": {\n                    \"alignAsTable\": true,\n                    \"avg\": false,\n                    \"current\": true,\n                    \"hideEmpty\": true,\n                    \"hideZero\": true,\n                    \"max\": false,\n                    \"min\": false,\n                    \"rightSide\": true,\n                    \"show\": true,\n                    \"sideWidth\": null,\n                    \"sort\": \"current\",\n                    \"sortDesc\": true,\n                    \"total\": false,\n                    \"values\": true\n                },\n                \"lines\": false,\n                \"linewidth\": 1,\n                \"links\": [\n\n                ],\n                \"minSpan\": 24,\n                \"nullPointMode\": \"null\",\n                \"paceLength\": 10,\n                \"percentage\": false,\n                \"pointradius\": 5,\n                \"points\": false,\n                \"renderer\": \"flot\",\n                \"repeat\": null,\n                \"seriesOverrides\": [\n\n                ],\n                \"spaceLength\": 10,\n                \"span\": 24,\n                \"stack\": false,\n                \"steppedLine\": false,\n                \"targets\": [\n                    {\n                        \"expr\": \"sort_desc(sum(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                        \"format\": \"time_series\",\n                        \"intervalFactor\": 1,\n                        \"legendFormat\": \"{{ workload }}\",\n                        \"refId\": \"A\",\n                        \"step\": 10\n                    }\n                ],\n                \"thresholds\": [\n\n                ],\n                \"timeFrom\": null,\n                \"timeShift\": null,\n                \"title\": \"Current Rate of Bytes Transmitted\",\n                \"tooltip\": {\n                    \"shared\": true,\n                    \"sort\": 2,\n                    \"value_type\": \"individual\"\n                },\n                \"type\": \"graph\",\n                \"xaxis\": {\n                    \"buckets\": null,\n                    \"mode\": \"series\",\n                    \"name\": null,\n                    \"show\": false,\n                    \"values\": [\n                        \"current\"\n                    ]\n                },\n                \"yaxes\": [\n                    {\n                        \"format\": \"Bps\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": 0,\n                        \"show\": true\n                    },\n                    {\n                        \"format\": \"Bps\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": 0,\n                        \"show\": true\n                    }\n                ]\n            },\n            {\n                \"columns\": [\n                    {\n                        \"text\": \"Time\",\n                        \"value\": \"Time\"\n                    },\n                    {\n                        \"text\": \"Value #A\",\n                        \"value\": \"Value #A\"\n                    },\n                    {\n                        \"text\": \"Value #B\",\n                        \"value\": \"Value #B\"\n                    },\n                    {\n                        \"text\": \"Value #C\",\n                        \"value\": \"Value #C\"\n                    },\n                    {\n                        \"text\": \"Value #D\",\n                        \"value\": \"Value #D\"\n                    },\n                    {\n                        \"text\": \"Value #E\",\n                        \"value\": \"Value #E\"\n                    },\n                    {\n                        \"text\": \"Value #F\",\n                        \"value\": \"Value #F\"\n                    },\n                    {\n                        \"text\": \"Value #G\",\n                        \"value\": \"Value #G\"\n                    },\n                    {\n                        \"text\": \"Value #H\",\n                        \"value\": \"Value #H\"\n                    },\n                    {\n                        \"text\": \"workload\",\n                        \"value\": \"workload\"\n                    }\n                ],\n                \"datasource\": \"$datasource\",\n                \"fill\": 1,\n                \"fontSize\": \"90%\",\n                \"gridPos\": {\n                    \"h\": 9,\n                    \"w\": 24,\n                    \"x\": 0,\n                    \"y\": 10\n                },\n                \"id\": 5,\n                \"lines\": true,\n                \"linewidth\": 1,\n                \"links\": [\n\n                ],\n                \"minSpan\": 24,\n                \"nullPointMode\": \"null as zero\",\n                \"renderer\": \"flot\",\n                \"scroll\": true,\n                \"showHeader\": true,\n                \"sort\": {\n                    \"col\": 0,\n                    \"desc\": false\n                },\n                \"spaceLength\": 10,\n                \"span\": 24,\n                \"styles\": [\n                    {\n                        \"alias\": \"Time\",\n                        \"colorMode\": null,\n                        \"colors\": [\n\n                        ],\n                        \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                        \"decimals\": 2,\n                        \"link\": false,\n                        \"linkTooltip\": \"Drill down\",\n                        \"linkUrl\": \"\",\n                        \"pattern\": \"Time\",\n                        \"thresholds\": [\n\n                        ],\n                        \"type\": \"hidden\",\n                        \"unit\": \"short\"\n                    },\n                    {\n                        \"alias\": \"Current Bandwidth Received\",\n                        \"colorMode\": null,\n                        \"colors\": [\n\n                        ],\n                        \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                        \"decimals\": 2,\n                        \"link\": false,\n                        \"linkTooltip\": \"Drill down\",\n                        \"linkUrl\": \"\",\n                        \"pattern\": \"Value #A\",\n                        \"thresholds\": [\n\n                        ],\n                        \"type\": \"number\",\n                        \"unit\": \"Bps\"\n                    },\n                    {\n                        \"alias\": \"Current Bandwidth Transmitted\",\n                        \"colorMode\": null,\n                        \"colors\": [\n\n                        ],\n                        \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                        \"decimals\": 2,\n                        \"link\": false,\n                        \"linkTooltip\": \"Drill down\",\n                        \"linkUrl\": \"\",\n                        \"pattern\": \"Value #B\",\n                        \"thresholds\": [\n\n                        ],\n                        \"type\": \"number\",\n                        \"unit\": \"Bps\"\n                    },\n                    {\n                        \"alias\": \"Average Bandwidth Received\",\n                        \"colorMode\": null,\n                        \"colors\": [\n\n                        ],\n                        \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                        \"decimals\": 2,\n                        \"link\": false,\n                        \"linkTooltip\": \"Drill down\",\n                        \"linkUrl\": \"\",\n                        \"pattern\": \"Value #C\",\n                        \"thresholds\": [\n\n                        ],\n                        \"type\": \"number\",\n                        \"unit\": \"Bps\"\n                    },\n                    {\n                        \"alias\": \"Average Bandwidth Transmitted\",\n                        \"colorMode\": null,\n                        \"colors\": [\n\n                        ],\n                        \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                        \"decimals\": 2,\n                        \"link\": false,\n                        \"linkTooltip\": \"Drill down\",\n                        \"linkUrl\": \"\",\n                        \"pattern\": \"Value #D\",\n                        \"thresholds\": [\n\n                        ],\n                        \"type\": \"number\",\n                        \"unit\": \"Bps\"\n                    },\n                    {\n                        \"alias\": \"Rate of Received Packets\",\n                        \"colorMode\": null,\n                        \"colors\": [\n\n                        ],\n                        \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                        \"decimals\": 2,\n                        \"link\": false,\n                        \"linkTooltip\": \"Drill down\",\n                        \"linkUrl\": \"\",\n                        \"pattern\": \"Value #E\",\n                        \"thresholds\": [\n\n                        ],\n                        \"type\": \"number\",\n                        \"unit\": \"pps\"\n                    },\n                    {\n                        \"alias\": \"Rate of Transmitted Packets\",\n                        \"colorMode\": null,\n                        \"colors\": [\n\n                        ],\n                        \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                        \"decimals\": 2,\n                        \"link\": false,\n                        \"linkTooltip\": \"Drill down\",\n                        \"linkUrl\": \"\",\n                        \"pattern\": \"Value #F\",\n                        \"thresholds\": [\n\n                        ],\n                        \"type\": \"number\",\n                        \"unit\": \"pps\"\n                    },\n                    {\n                        \"alias\": \"Rate of Received Packets Dropped\",\n                        \"colorMode\": null,\n                        \"colors\": [\n\n                        ],\n                        \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                        \"decimals\": 2,\n                        \"link\": false,\n                        \"linkTooltip\": \"Drill down\",\n                        \"linkUrl\": \"\",\n                        \"pattern\": \"Value #G\",\n                        \"thresholds\": [\n\n                        ],\n                        \"type\": \"number\",\n                        \"unit\": \"pps\"\n                    },\n                    {\n                        \"alias\": \"Rate of Transmitted Packets Dropped\",\n                        \"colorMode\": null,\n                        \"colors\": [\n\n                        ],\n                        \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                        \"decimals\": 2,\n                        \"link\": false,\n                        \"linkTooltip\": \"Drill down\",\n                        \"linkUrl\": \"\",\n                        \"pattern\": \"Value #H\",\n                        \"thresholds\": [\n\n                        ],\n                        \"type\": \"number\",\n                        \"unit\": \"pps\"\n                    },\n                    {\n                        \"alias\": \"Workload\",\n                        \"colorMode\": null,\n                        \"colors\": [\n\n                        ],\n                        \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                        \"decimals\": 2,\n                        \"link\": true,\n                        \"linkTooltip\": \"Drill down\",\n                        \"linkUrl\": \"d/728bf77cc1166d2f3133bf25846876cc/kubernetes-networking-workload?orgId=1&refresh=30s&var-namespace=$namespace&var-type=$type&var-workload=$__cell\",\n                        \"pattern\": \"workload\",\n                        \"thresholds\": [\n\n                        ],\n                        \"type\": \"number\",\n                        \"unit\": \"short\"\n                    }\n                ],\n                \"targets\": [\n                    {\n                        \"expr\": \"sort_desc(sum(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                        \"format\": \"table\",\n                        \"instant\": true,\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"\",\n                        \"refId\": \"A\",\n                        \"step\": 10\n                    },\n                    {\n                        \"expr\": \"sort_desc(sum(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                        \"format\": \"table\",\n                        \"instant\": true,\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"\",\n                        \"refId\": \"B\",\n                        \"step\": 10\n                    },\n                    {\n                        \"expr\": \"sort_desc(avg(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                        \"format\": \"table\",\n                        \"instant\": true,\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"\",\n                        \"refId\": \"C\",\n                        \"step\": 10\n                    },\n                    {\n                        \"expr\": \"sort_desc(avg(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                        \"format\": \"table\",\n                        \"instant\": true,\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"\",\n                        \"refId\": \"D\",\n                        \"step\": 10\n                    },\n                    {\n                        \"expr\": \"sort_desc(sum(irate(container_network_receive_packets_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                        \"format\": \"table\",\n                        \"instant\": true,\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"\",\n                        \"refId\": \"E\",\n                        \"step\": 10\n                    },\n                    {\n                        \"expr\": \"sort_desc(sum(irate(container_network_transmit_packets_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                        \"format\": \"table\",\n                        \"instant\": true,\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"\",\n                        \"refId\": \"F\",\n                        \"step\": 10\n                    },\n                    {\n                        \"expr\": \"sort_desc(sum(irate(container_network_receive_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                        \"format\": \"table\",\n                        \"instant\": true,\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"\",\n                        \"refId\": \"G\",\n                        \"step\": 10\n                    },\n                    {\n                        \"expr\": \"sort_desc(sum(irate(container_network_transmit_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                        \"format\": \"table\",\n                        \"instant\": true,\n                        \"intervalFactor\": 2,\n                        \"legendFormat\": \"\",\n                        \"refId\": \"H\",\n                        \"step\": 10\n                    }\n                ],\n                \"timeFrom\": null,\n                \"timeShift\": null,\n                \"title\": \"Current Status\",\n                \"type\": \"table\"\n            },\n            {\n                \"collapse\": true,\n                \"collapsed\": true,\n                \"gridPos\": {\n                    \"h\": 1,\n                    \"w\": 24,\n                    \"x\": 0,\n                    \"y\": 19\n                },\n                \"id\": 6,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": true,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 2,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n                            \"h\": 9,\n                            \"w\": 12,\n                            \"x\": 0,\n                            \"y\": 20\n                        },\n                        \"id\": 7,\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": true,\n                            \"hideEmpty\": true,\n                            \"hideZero\": true,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"sort\": \"current\",\n                            \"sortDesc\": true,\n                            \"total\": false,\n                            \"values\": true\n                        },\n                        \"lines\": false,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"minSpan\": 24,\n                        \"nullPointMode\": \"null\",\n                        \"paceLength\": 10,\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 24,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sort_desc(avg(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 1,\n                                \"legendFormat\": \"{{ workload }}\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Average Rate of Bytes Received\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"series\",\n                            \"name\": null,\n                            \"show\": false,\n                            \"values\": [\n                                \"current\"\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"Bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"Bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": true,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 2,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n                            \"h\": 9,\n                            \"w\": 12,\n                            \"x\": 12,\n                            \"y\": 20\n                        },\n                        \"id\": 8,\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": true,\n                            \"hideEmpty\": true,\n                            \"hideZero\": true,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"sort\": \"current\",\n                            \"sortDesc\": true,\n                            \"total\": false,\n                            \"values\": true\n                        },\n                        \"lines\": false,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"minSpan\": 24,\n                        \"nullPointMode\": \"null\",\n                        \"paceLength\": 10,\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 24,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sort_desc(avg(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 1,\n                                \"legendFormat\": \"{{ workload }}\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Average Rate of Bytes Transmitted\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"series\",\n                            \"name\": null,\n                            \"show\": false,\n                            \"values\": [\n                                \"current\"\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"Bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"Bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Average Bandwidth\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"gridPos\": {\n                    \"h\": 1,\n                    \"w\": 24,\n                    \"x\": 0,\n                    \"y\": 29\n                },\n                \"id\": 9,\n                \"panels\": [\n\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Bandwidth HIstory\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"aliasColors\": {\n\n                },\n                \"bars\": false,\n                \"dashLength\": 10,\n                \"dashes\": false,\n                \"datasource\": \"$datasource\",\n                \"fill\": 2,\n                \"fillGradient\": 0,\n                \"gridPos\": {\n                    \"h\": 9,\n                    \"w\": 12,\n                    \"x\": 0,\n                    \"y\": 38\n                },\n                \"id\": 10,\n                \"legend\": {\n                    \"alignAsTable\": false,\n                    \"avg\": false,\n                    \"current\": false,\n                    \"hideEmpty\": true,\n                    \"hideZero\": true,\n                    \"max\": false,\n                    \"min\": false,\n                    \"rightSide\": false,\n                    \"show\": true,\n                    \"sideWidth\": null,\n                    \"total\": false,\n                    \"values\": false\n                },\n                \"lines\": true,\n                \"linewidth\": 2,\n                \"links\": [\n\n                ],\n                \"minSpan\": 12,\n                \"nullPointMode\": \"connected\",\n                \"paceLength\": 10,\n                \"percentage\": false,\n                \"pointradius\": 5,\n                \"points\": false,\n                \"renderer\": \"flot\",\n                \"repeat\": null,\n                \"seriesOverrides\": [\n\n                ],\n                \"spaceLength\": 10,\n                \"span\": 12,\n                \"stack\": true,\n                \"steppedLine\": false,\n                \"targets\": [\n                    {\n                        \"expr\": \"sort_desc(sum(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                        \"format\": \"time_series\",\n                        \"intervalFactor\": 1,\n                        \"legendFormat\": \"{{workload}}\",\n                        \"refId\": \"A\",\n                        \"step\": 10\n                    }\n                ],\n                \"thresholds\": [\n\n                ],\n                \"timeFrom\": null,\n                \"timeShift\": null,\n                \"title\": \"Receive Bandwidth\",\n                \"tooltip\": {\n                    \"shared\": true,\n                    \"sort\": 2,\n                    \"value_type\": \"individual\"\n                },\n                \"type\": \"graph\",\n                \"xaxis\": {\n                    \"buckets\": null,\n                    \"mode\": \"time\",\n                    \"name\": null,\n                    \"show\": true,\n                    \"values\": [\n\n                    ]\n                },\n                \"yaxes\": [\n                    {\n                        \"format\": \"Bps\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": 0,\n                        \"show\": true\n                    },\n                    {\n                        \"format\": \"Bps\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": 0,\n                        \"show\": true\n                    }\n                ]\n            },\n            {\n                \"aliasColors\": {\n\n                },\n                \"bars\": false,\n                \"dashLength\": 10,\n                \"dashes\": false,\n                \"datasource\": \"$datasource\",\n                \"fill\": 2,\n                \"fillGradient\": 0,\n                \"gridPos\": {\n                    \"h\": 9,\n                    \"w\": 12,\n                    \"x\": 12,\n                    \"y\": 38\n                },\n                \"id\": 11,\n                \"legend\": {\n                    \"alignAsTable\": false,\n                    \"avg\": false,\n                    \"current\": false,\n                    \"hideEmpty\": true,\n                    \"hideZero\": true,\n                    \"max\": false,\n                    \"min\": false,\n                    \"rightSide\": false,\n                    \"show\": true,\n                    \"sideWidth\": null,\n                    \"total\": false,\n                    \"values\": false\n                },\n                \"lines\": true,\n                \"linewidth\": 2,\n                \"links\": [\n\n                ],\n                \"minSpan\": 12,\n                \"nullPointMode\": \"connected\",\n                \"paceLength\": 10,\n                \"percentage\": false,\n                \"pointradius\": 5,\n                \"points\": false,\n                \"renderer\": \"flot\",\n                \"repeat\": null,\n                \"seriesOverrides\": [\n\n                ],\n                \"spaceLength\": 10,\n                \"span\": 12,\n                \"stack\": true,\n                \"steppedLine\": false,\n                \"targets\": [\n                    {\n                        \"expr\": \"sort_desc(sum(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                        \"format\": \"time_series\",\n                        \"intervalFactor\": 1,\n                        \"legendFormat\": \"{{workload}}\",\n                        \"refId\": \"A\",\n                        \"step\": 10\n                    }\n                ],\n                \"thresholds\": [\n\n                ],\n                \"timeFrom\": null,\n                \"timeShift\": null,\n                \"title\": \"Transmit Bandwidth\",\n                \"tooltip\": {\n                    \"shared\": true,\n                    \"sort\": 2,\n                    \"value_type\": \"individual\"\n                },\n                \"type\": \"graph\",\n                \"xaxis\": {\n                    \"buckets\": null,\n                    \"mode\": \"time\",\n                    \"name\": null,\n                    \"show\": true,\n                    \"values\": [\n\n                    ]\n                },\n                \"yaxes\": [\n                    {\n                        \"format\": \"Bps\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": 0,\n                        \"show\": true\n                    },\n                    {\n                        \"format\": \"Bps\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": 0,\n                        \"show\": true\n                    }\n                ]\n            },\n            {\n                \"collapse\": true,\n                \"collapsed\": true,\n                \"gridPos\": {\n                    \"h\": 1,\n                    \"w\": 24,\n                    \"x\": 0,\n                    \"y\": 39\n                },\n                \"id\": 12,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 2,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n                            \"h\": 9,\n                            \"w\": 12,\n                            \"x\": 0,\n                            \"y\": 40\n                        },\n                        \"id\": 13,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"hideEmpty\": true,\n                            \"hideZero\": true,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 2,\n                        \"links\": [\n\n                        ],\n                        \"minSpan\": 12,\n                        \"nullPointMode\": \"connected\",\n                        \"paceLength\": 10,\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sort_desc(sum(irate(container_network_receive_packets_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 1,\n                                \"legendFormat\": \"{{workload}}\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Rate of Received Packets\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 2,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n                            \"h\": 9,\n                            \"w\": 12,\n                            \"x\": 12,\n                            \"y\": 40\n                        },\n                        \"id\": 14,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"hideEmpty\": true,\n                            \"hideZero\": true,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 2,\n                        \"links\": [\n\n                        ],\n                        \"minSpan\": 12,\n                        \"nullPointMode\": \"connected\",\n                        \"paceLength\": 10,\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sort_desc(sum(irate(container_network_transmit_packets_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 1,\n                                \"legendFormat\": \"{{workload}}\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Rate of Transmitted Packets\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Packets\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"collapse\": true,\n                \"collapsed\": true,\n                \"gridPos\": {\n                    \"h\": 1,\n                    \"w\": 24,\n                    \"x\": 0,\n                    \"y\": 40\n                },\n                \"id\": 15,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 2,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n                            \"h\": 9,\n                            \"w\": 12,\n                            \"x\": 0,\n                            \"y\": 41\n                        },\n                        \"id\": 16,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"hideEmpty\": true,\n                            \"hideZero\": true,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 2,\n                        \"links\": [\n\n                        ],\n                        \"minSpan\": 12,\n                        \"nullPointMode\": \"connected\",\n                        \"paceLength\": 10,\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sort_desc(sum(irate(container_network_receive_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 1,\n                                \"legendFormat\": \"{{workload}}\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Rate of Received Packets Dropped\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 2,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n                            \"h\": 9,\n                            \"w\": 12,\n                            \"x\": 12,\n                            \"y\": 41\n                        },\n                        \"id\": 17,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"hideEmpty\": true,\n                            \"hideZero\": true,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 2,\n                        \"links\": [\n\n                        ],\n                        \"minSpan\": 12,\n                        \"nullPointMode\": \"connected\",\n                        \"paceLength\": 10,\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sort_desc(sum(irate(container_network_transmit_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 1,\n                                \"legendFormat\": \"{{workload}}\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Rate of Transmitted Packets Dropped\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Errors\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            }\n        ],\n        \"refresh\": \"10s\",\n        \"rows\": [\n\n        ],\n        \"schemaVersion\": 18,\n        \"style\": \"dark\",\n        \"tags\": [\n            \"kubernetes-mixin\"\n        ],\n        \"templating\": {\n            \"list\": [\n                {\n                    \"current\": {\n                        \"text\": \"default\",\n                        \"value\": \"default\"\n                    },\n                    \"hide\": 0,\n                    \"label\": \"Data Source\",\n                    \"name\": \"datasource\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"prometheus\",\n                    \"refresh\": 1,\n                    \"regex\": \"\",\n                    \"type\": \"datasource\"\n                },\n                {\n                    \"allValue\": null,\n                    \"current\": {\n\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": false,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"cluster\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(up{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\"}, cluster)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"sort\": 0,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                },\n                {\n                    \"allValue\": null,\n                    \"auto\": false,\n                    \"auto_count\": 30,\n                    \"auto_min\": \"10s\",\n                    \"current\": {\n                        \"text\": \"kube-system\",\n                        \"value\": \"kube-system\"\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"definition\": \"label_values(container_network_receive_packets_total{cluster=\\\"$cluster\\\"}, namespace)\",\n                    \"hide\": 0,\n                    \"includeAll\": false,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"namespace\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(container_network_receive_packets_total{cluster=\\\"$cluster\\\"}, namespace)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"skipUrlSync\": false,\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                },\n                {\n                    \"allValue\": null,\n                    \"auto\": false,\n                    \"auto_count\": 30,\n                    \"auto_min\": \"10s\",\n                    \"current\": {\n                        \"text\": \"deployment\",\n                        \"value\": \"deployment\"\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"definition\": \"label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\"}, workload_type)\",\n                    \"hide\": 0,\n                    \"includeAll\": false,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"type\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\"}, workload_type)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"skipUrlSync\": false,\n                    \"sort\": 0,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                },\n                {\n                    \"allValue\": null,\n                    \"auto\": false,\n                    \"auto_count\": 30,\n                    \"auto_min\": \"10s\",\n                    \"current\": {\n                        \"text\": \"5m\",\n                        \"value\": \"5m\"\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": false,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"resolution\",\n                    \"options\": [\n                        {\n                            \"selected\": false,\n                            \"text\": \"30s\",\n                            \"value\": \"30s\"\n                        },\n                        {\n                            \"selected\": true,\n                            \"text\": \"5m\",\n                            \"value\": \"5m\"\n                        },\n                        {\n                            \"selected\": false,\n                            \"text\": \"1h\",\n                            \"value\": \"1h\"\n                        }\n                    ],\n                    \"query\": \"30s,5m,1h\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"skipUrlSync\": false,\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"interval\",\n                    \"useTags\": false\n                },\n                {\n                    \"allValue\": null,\n                    \"auto\": false,\n                    \"auto_count\": 30,\n                    \"auto_min\": \"10s\",\n                    \"current\": {\n                        \"text\": \"5m\",\n                        \"value\": \"5m\"\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 2,\n                    \"includeAll\": false,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"interval\",\n                    \"options\": [\n                        {\n                            \"selected\": true,\n                            \"text\": \"4h\",\n                            \"value\": \"4h\"\n                        }\n                    ],\n                    \"query\": \"4h\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"skipUrlSync\": false,\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"interval\",\n                    \"useTags\": false\n                }\n            ]\n        },\n        \"time\": {\n            \"from\": \"now-1h\",\n            \"to\": \"now\"\n        },\n        \"timepicker\": {\n            \"refresh_intervals\": [\n                \"5s\",\n                \"10s\",\n                \"30s\",\n                \"1m\",\n                \"5m\",\n                \"15m\",\n                \"30m\",\n                \"1h\",\n                \"2h\",\n                \"1d\"\n            ],\n            \"time_options\": [\n                \"5m\",\n                \"15m\",\n                \"1h\",\n                \"6h\",\n                \"12h\",\n                \"24h\",\n                \"2d\",\n                \"7d\",\n                \"30d\"\n            ]\n        },\n        \"timezone\": \"UTC\",\n        \"title\": \"Kubernetes / Networking / Namespace (Workload)\",\n        \"uid\": \"bbb2a765a623ae38130206c7d94a160f\",\n        \"version\": 0\n    }\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 9.5.3\n  name: grafana-dashboard-namespace-by-workload\n  namespace: monitoring\n---\napiVersion: v1\ndata:\n  node-cluster-rsrc-use.json: |-\n    {\n        \"__inputs\": [\n\n        ],\n        \"__requires\": [\n\n        ],\n        \"annotations\": {\n            \"list\": [\n\n            ]\n        },\n        \"editable\": false,\n        \"gnetId\": null,\n        \"graphTooltip\": 1,\n        \"hideControls\": false,\n        \"id\": null,\n        \"links\": [\n\n        ],\n        \"refresh\": \"30s\",\n        \"rows\": [\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 2,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": false,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"((\\n  instance:node_cpu_utilisation:rate5m{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"}\\n  *\\n  instance:node_num_cpu:sum{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"}\\n) != 0 )\\n/ scalar(sum(instance:node_num_cpu:sum{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"}))\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{ instance }}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"CPU Utilisation\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"percentunit\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"percentunit\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 3,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": false,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"(\\n  instance:node_load1_per_cpu:ratio{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"}\\n  / scalar(count(instance:node_load1_per_cpu:ratio{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"}))\\n)  != 0\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{instance}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"CPU Saturation (Load1 per CPU)\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"percentunit\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"percentunit\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"CPU\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 4,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": false,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"(\\n  instance:node_memory_utilisation:ratio{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"}\\n  / scalar(count(instance:node_memory_utilisation:ratio{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"}))\\n) != 0\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{instance}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Memory Utilisation\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"percentunit\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"percentunit\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 5,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": false,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"instance:node_vmstat_pgmajfault:rate5m{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"}\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{instance}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Memory Saturation (Major Page Faults)\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"rds\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"rds\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Memory\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 6,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": false,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n                            {\n                                \"alias\": \"/Receive/\",\n                                \"stack\": \"A\"\n                            },\n                            {\n                                \"alias\": \"/Transmit/\",\n                                \"stack\": \"B\",\n                                \"transform\": \"negative-Y\"\n                            }\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"instance:node_network_receive_bytes_excluding_lo:rate5m{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"} != 0\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{instance}} Receive\",\n                                \"refId\": \"A\"\n                            },\n                            {\n                                \"expr\": \"instance:node_network_transmit_bytes_excluding_lo:rate5m{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"} != 0\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{instance}} Transmit\",\n                                \"refId\": \"B\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Network Utilisation (Bytes Receive/Transmit)\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"Bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"Bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 7,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": false,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n                            {\n                                \"alias\": \"/ Receive/\",\n                                \"stack\": \"A\"\n                            },\n                            {\n                                \"alias\": \"/ Transmit/\",\n                                \"stack\": \"B\",\n                                \"transform\": \"negative-Y\"\n                            }\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"instance:node_network_receive_drop_excluding_lo:rate5m{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"} != 0\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{instance}} Receive\",\n                                \"refId\": \"A\"\n                            },\n                            {\n                                \"expr\": \"instance:node_network_transmit_drop_excluding_lo:rate5m{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"} != 0\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{instance}} Transmit\",\n                                \"refId\": \"B\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Network Saturation (Drops Receive/Transmit)\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"Bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"Bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Network\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 8,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": false,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"(\\n  instance_device:node_disk_io_time_seconds:rate5m{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"}\\n  / scalar(count(instance_device:node_disk_io_time_seconds:rate5m{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"}))\\n) != 0\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{instance}} {{device}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Disk IO Utilisation\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"percentunit\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"percentunit\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 9,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": false,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"(\\n  instance_device:node_disk_io_time_weighted_seconds:rate5m{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"}\\n  / scalar(count(instance_device:node_disk_io_time_weighted_seconds:rate5m{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"}))\\n) != 0\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{instance}} {{device}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Disk IO Saturation\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"percentunit\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"percentunit\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Disk IO\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 10,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": false,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum without (device) (\\n  max without (fstype, mountpoint) ((\\n    node_filesystem_size_bytes{job=\\\"node-exporter\\\", fstype!=\\\"\\\", mountpoint!=\\\"\\\", cluster=\\\"$cluster\\\"}\\n    -\\n    node_filesystem_avail_bytes{job=\\\"node-exporter\\\", fstype!=\\\"\\\", mountpoint!=\\\"\\\", cluster=\\\"$cluster\\\"}\\n  ) != 0)\\n)\\n/ scalar(sum(max without (fstype, mountpoint) (node_filesystem_size_bytes{job=\\\"node-exporter\\\", fstype!=\\\"\\\", mountpoint!=\\\"\\\", cluster=\\\"$cluster\\\"})))\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{instance}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Disk Space Utilisation\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"percentunit\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"percentunit\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Disk Space\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            }\n        ],\n        \"schemaVersion\": 14,\n        \"style\": \"dark\",\n        \"tags\": [\n            \"node-exporter-mixin\"\n        ],\n        \"templating\": {\n            \"list\": [\n                {\n                    \"current\": {\n                        \"text\": \"default\",\n                        \"value\": \"default\"\n                    },\n                    \"hide\": 0,\n                    \"label\": \"Data Source\",\n                    \"name\": \"datasource\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"prometheus\",\n                    \"refresh\": 1,\n                    \"regex\": \"\",\n                    \"type\": \"datasource\"\n                },\n                {\n                    \"allValue\": null,\n                    \"current\": {\n                        \"text\": \"\",\n                        \"value\": \"\"\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 2,\n                    \"includeAll\": false,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"cluster\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(node_time_seconds, cluster)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                }\n            ]\n        },\n        \"time\": {\n            \"from\": \"now-1h\",\n            \"to\": \"now\"\n        },\n        \"timepicker\": {\n            \"refresh_intervals\": [\n                \"5s\",\n                \"10s\",\n                \"30s\",\n                \"1m\",\n                \"5m\",\n                \"15m\",\n                \"30m\",\n                \"1h\",\n                \"2h\",\n                \"1d\"\n            ],\n            \"time_options\": [\n                \"5m\",\n                \"15m\",\n                \"1h\",\n                \"6h\",\n                \"12h\",\n                \"24h\",\n                \"2d\",\n                \"7d\",\n                \"30d\"\n            ]\n        },\n        \"timezone\": \"utc\",\n        \"title\": \"Node Exporter / USE Method / Cluster\",\n        \"version\": 0\n    }\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 9.5.3\n  name: grafana-dashboard-node-cluster-rsrc-use\n  namespace: monitoring\n---\napiVersion: v1\ndata:\n  node-rsrc-use.json: |-\n    {\n        \"__inputs\": [\n\n        ],\n        \"__requires\": [\n\n        ],\n        \"annotations\": {\n            \"list\": [\n\n            ]\n        },\n        \"editable\": false,\n        \"gnetId\": null,\n        \"graphTooltip\": 1,\n        \"hideControls\": false,\n        \"id\": null,\n        \"links\": [\n\n        ],\n        \"refresh\": \"30s\",\n        \"rows\": [\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 2,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": false,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"instance:node_cpu_utilisation:rate5m{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=\\\"$cluster\\\"} != 0\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"Utilisation\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"CPU Utilisation\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"percentunit\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"percentunit\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 3,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": false,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"instance:node_load1_per_cpu:ratio{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=\\\"$cluster\\\"} != 0\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"Saturation\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"CPU Saturation (Load1 per CPU)\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"percentunit\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"percentunit\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"CPU\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 4,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": false,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"instance:node_memory_utilisation:ratio{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=\\\"$cluster\\\"} != 0\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"Utilisation\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Memory Utilisation\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"percentunit\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"percentunit\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 5,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": false,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"instance:node_vmstat_pgmajfault:rate5m{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=\\\"$cluster\\\"} != 0\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"Major page Faults\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Memory Saturation (Major Page Faults)\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"rds\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"rds\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Memory\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 6,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": false,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n                            {\n                                \"alias\": \"/Receive/\",\n                                \"stack\": \"A\"\n                            },\n                            {\n                                \"alias\": \"/Transmit/\",\n                                \"stack\": \"B\",\n                                \"transform\": \"negative-Y\"\n                            }\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"instance:node_network_receive_bytes_excluding_lo:rate5m{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=\\\"$cluster\\\"} != 0\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"Receive\",\n                                \"refId\": \"A\"\n                            },\n                            {\n                                \"expr\": \"instance:node_network_transmit_bytes_excluding_lo:rate5m{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=\\\"$cluster\\\"} != 0\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"Transmit\",\n                                \"refId\": \"B\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Network Utilisation (Bytes Receive/Transmit)\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"Bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"Bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 7,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": false,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n                            {\n                                \"alias\": \"/ Receive/\",\n                                \"stack\": \"A\"\n                            },\n                            {\n                                \"alias\": \"/ Transmit/\",\n                                \"stack\": \"B\",\n                                \"transform\": \"negative-Y\"\n                            }\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"instance:node_network_receive_drop_excluding_lo:rate5m{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=\\\"$cluster\\\"} != 0\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"Receive\",\n                                \"refId\": \"A\"\n                            },\n                            {\n                                \"expr\": \"instance:node_network_transmit_drop_excluding_lo:rate5m{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=\\\"$cluster\\\"} != 0\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"Transmit\",\n                                \"refId\": \"B\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Network Saturation (Drops Receive/Transmit)\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"Bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"Bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Network\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 8,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": false,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"instance_device:node_disk_io_time_seconds:rate5m{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=\\\"$cluster\\\"} != 0\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{device}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Disk IO Utilisation\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"percentunit\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"percentunit\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 9,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": false,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"instance_device:node_disk_io_time_weighted_seconds:rate5m{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=\\\"$cluster\\\"} != 0\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{device}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Disk IO Saturation\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"percentunit\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"percentunit\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Disk IO\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 10,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": false,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sort_desc(1 -\\n  (\\n   max without (mountpoint, fstype) (node_filesystem_avail_bytes{job=\\\"node-exporter\\\", fstype!=\\\"\\\", instance=\\\"$instance\\\", cluster=\\\"$cluster\\\"})\\n   /\\n   max without (mountpoint, fstype) (node_filesystem_size_bytes{job=\\\"node-exporter\\\", fstype!=\\\"\\\", instance=\\\"$instance\\\", cluster=\\\"$cluster\\\"})\\n  ) != 0\\n)\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{device}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Disk Space Utilisation\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"percentunit\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"percentunit\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Disk Space\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            }\n        ],\n        \"schemaVersion\": 14,\n        \"style\": \"dark\",\n        \"tags\": [\n            \"node-exporter-mixin\"\n        ],\n        \"templating\": {\n            \"list\": [\n                {\n                    \"current\": {\n                        \"text\": \"default\",\n                        \"value\": \"default\"\n                    },\n                    \"hide\": 0,\n                    \"label\": \"Data Source\",\n                    \"name\": \"datasource\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"prometheus\",\n                    \"refresh\": 1,\n                    \"regex\": \"\",\n                    \"type\": \"datasource\"\n                },\n                {\n                    \"allValue\": null,\n                    \"current\": {\n                        \"text\": \"\",\n                        \"value\": \"\"\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 2,\n                    \"includeAll\": false,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"cluster\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(node_time_seconds, cluster)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                },\n                {\n                    \"allValue\": null,\n                    \"current\": {\n\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": false,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"instance\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(node_exporter_build_info{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"}, instance)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                }\n            ]\n        },\n        \"time\": {\n            \"from\": \"now-1h\",\n            \"to\": \"now\"\n        },\n        \"timepicker\": {\n            \"refresh_intervals\": [\n                \"5s\",\n                \"10s\",\n                \"30s\",\n                \"1m\",\n                \"5m\",\n                \"15m\",\n                \"30m\",\n                \"1h\",\n                \"2h\",\n                \"1d\"\n            ],\n            \"time_options\": [\n                \"5m\",\n                \"15m\",\n                \"1h\",\n                \"6h\",\n                \"12h\",\n                \"24h\",\n                \"2d\",\n                \"7d\",\n                \"30d\"\n            ]\n        },\n        \"timezone\": \"utc\",\n        \"title\": \"Node Exporter / USE Method / Node\",\n        \"version\": 0\n    }\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 9.5.3\n  name: grafana-dashboard-node-rsrc-use\n  namespace: monitoring\n---\napiVersion: v1\ndata:\n  nodes.json: |-\n    {\n        \"__inputs\": [\n\n        ],\n        \"__requires\": [\n\n        ],\n        \"annotations\": {\n            \"list\": [\n\n            ]\n        },\n        \"editable\": false,\n        \"gnetId\": null,\n        \"graphTooltip\": 1,\n        \"hideControls\": false,\n        \"id\": null,\n        \"links\": [\n\n        ],\n        \"refresh\": \"30s\",\n        \"rows\": [\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 2,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"(\\n  (1 - sum without (mode) (rate(node_cpu_seconds_total{job=\\\"node-exporter\\\", mode=~\\\"idle|iowait|steal\\\", instance=\\\"$instance\\\"}[$__rate_interval])))\\n/ ignoring(cpu) group_left\\n  count without (cpu, mode) (node_cpu_seconds_total{job=\\\"node-exporter\\\", mode=\\\"idle\\\", instance=\\\"$instance\\\"})\\n)\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 5,\n                                \"legendFormat\": \"{{cpu}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"CPU Usage\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"percentunit\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": 1,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"percentunit\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": 1,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 0,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 3,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"node_load1{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"1m load average\",\n                                \"refId\": \"A\"\n                            },\n                            {\n                                \"expr\": \"node_load5{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"5m load average\",\n                                \"refId\": \"B\"\n                            },\n                            {\n                                \"expr\": \"node_load15{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"15m load average\",\n                                \"refId\": \"C\"\n                            },\n                            {\n                                \"expr\": \"count(node_cpu_seconds_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", mode=\\\"idle\\\"})\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"logical cores\",\n                                \"refId\": \"D\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Load Average\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"CPU\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 4,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 9,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"(\\n  node_memory_MemTotal_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\\n-\\n  node_memory_MemFree_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\\n-\\n  node_memory_Buffers_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\\n-\\n  node_memory_Cached_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\\n)\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"memory used\",\n                                \"refId\": \"A\"\n                            },\n                            {\n                                \"expr\": \"node_memory_Buffers_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"memory buffers\",\n                                \"refId\": \"B\"\n                            },\n                            {\n                                \"expr\": \"node_memory_Cached_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"memory cached\",\n                                \"refId\": \"C\"\n                            },\n                            {\n                                \"expr\": \"node_memory_MemFree_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"memory free\",\n                                \"refId\": \"D\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Memory Usage\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"bytes\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"bytes\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"datasource\": \"$datasource\",\n                        \"fieldConfig\": {\n                            \"defaults\": {\n                                \"max\": 100,\n                                \"min\": 0,\n                                \"thresholds\": {\n                                    \"mode\": \"absolute\",\n                                    \"steps\": [\n                                        {\n                                            \"color\": \"rgba(50, 172, 45, 0.97)\"\n                                        },\n                                        {\n                                            \"color\": \"rgba(237, 129, 40, 0.89)\",\n                                            \"value\": 80\n                                        },\n                                        {\n                                            \"color\": \"rgba(245, 54, 54, 0.9)\",\n                                            \"value\": 90\n                                        }\n                                    ]\n                                },\n                                \"unit\": \"percent\"\n                            }\n                        },\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 5,\n                        \"span\": 3,\n                        \"targets\": [\n                            {\n                                \"expr\": \"100 -\\n(\\n  avg(node_memory_MemAvailable_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}) /\\n  avg(node_memory_MemTotal_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"})\\n* 100\\n)\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\"\n                            }\n                        ],\n                        \"title\": \"Memory Usage\",\n                        \"transparent\": false,\n                        \"type\": \"gauge\"\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Memory\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 0,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 6,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n                            {\n                                \"alias\": \"/ read| written/\",\n                                \"yaxis\": 1\n                            },\n                            {\n                                \"alias\": \"/ io time/\",\n                                \"yaxis\": 2\n                            }\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"rate(node_disk_read_bytes_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\"}[$__rate_interval])\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 1,\n                                \"legendFormat\": \"{{device}} read\",\n                                \"refId\": \"A\"\n                            },\n                            {\n                                \"expr\": \"rate(node_disk_written_bytes_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\"}[$__rate_interval])\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 1,\n                                \"legendFormat\": \"{{device}} written\",\n                                \"refId\": \"B\"\n                            },\n                            {\n                                \"expr\": \"rate(node_disk_io_time_seconds_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\"}[$__rate_interval])\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 1,\n                                \"legendFormat\": \"{{device}} io time\",\n                                \"refId\": \"C\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Disk I/O\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"Bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"percentunit\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"datasource\": \"$datasource\",\n                        \"fieldConfig\": {\n                            \"defaults\": {\n                                \"custom\": {\n\n                                },\n                                \"thresholds\": {\n                                    \"mode\": \"absolute\",\n                                    \"steps\": [\n                                        {\n                                            \"color\": \"green\"\n                                        },\n                                        {\n                                            \"color\": \"yellow\",\n                                            \"value\": 0.8\n                                        },\n                                        {\n                                            \"color\": \"red\",\n                                            \"value\": 0.9\n                                        }\n                                    ]\n                                },\n                                \"unit\": \"decbytes\"\n                            },\n                            \"overrides\": [\n                                {\n                                    \"matcher\": {\n                                        \"id\": \"byName\",\n                                        \"options\": \"Mounted on\"\n                                    },\n                                    \"properties\": [\n                                        {\n                                            \"id\": \"custom.width\",\n                                            \"value\": 260\n                                        }\n                                    ]\n                                },\n                                {\n                                    \"matcher\": {\n                                        \"id\": \"byName\",\n                                        \"options\": \"Size\"\n                                    },\n                                    \"properties\": [\n                                        {\n                                            \"id\": \"custom.width\",\n                                            \"value\": 93\n                                        }\n                                    ]\n                                },\n                                {\n                                    \"matcher\": {\n                                        \"id\": \"byName\",\n                                        \"options\": \"Used\"\n                                    },\n                                    \"properties\": [\n                                        {\n                                            \"id\": \"custom.width\",\n                                            \"value\": 72\n                                        }\n                                    ]\n                                },\n                                {\n                                    \"matcher\": {\n                                        \"id\": \"byName\",\n                                        \"options\": \"Available\"\n                                    },\n                                    \"properties\": [\n                                        {\n                                            \"id\": \"custom.width\",\n                                            \"value\": 88\n                                        }\n                                    ]\n                                },\n                                {\n                                    \"matcher\": {\n                                        \"id\": \"byName\",\n                                        \"options\": \"Used, %\"\n                                    },\n                                    \"properties\": [\n                                        {\n                                            \"id\": \"unit\",\n                                            \"value\": \"percentunit\"\n                                        },\n                                        {\n                                            \"id\": \"custom.displayMode\",\n                                            \"value\": \"gradient-gauge\"\n                                        },\n                                        {\n                                            \"id\": \"max\",\n                                            \"value\": 1\n                                        },\n                                        {\n                                            \"id\": \"min\",\n                                            \"value\": 0\n                                        }\n                                    ]\n                                }\n                            ]\n                        },\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 7,\n                        \"span\": 6,\n                        \"targets\": [\n                            {\n                                \"expr\": \"max by (mountpoint) (node_filesystem_size_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", fstype!=\\\"\\\", mountpoint!=\\\"\\\"})\\n\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\"\n                            },\n                            {\n                                \"expr\": \"max by (mountpoint) (node_filesystem_avail_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", fstype!=\\\"\\\", mountpoint!=\\\"\\\"})\\n\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\"\n                            }\n                        ],\n                        \"title\": \"Disk Space Usage\",\n                        \"transformations\": [\n                            {\n                                \"id\": \"groupBy\",\n                                \"options\": {\n                                    \"fields\": {\n                                        \"Value #A\": {\n                                            \"aggregations\": [\n                                                \"lastNotNull\"\n                                            ],\n                                            \"operation\": \"aggregate\"\n                                        },\n                                        \"Value #B\": {\n                                            \"aggregations\": [\n                                                \"lastNotNull\"\n                                            ],\n                                            \"operation\": \"aggregate\"\n                                        },\n                                        \"mountpoint\": {\n                                            \"aggregations\": [\n\n                                            ],\n                                            \"operation\": \"groupby\"\n                                        }\n                                    }\n                                }\n                            },\n                            {\n                                \"id\": \"merge\",\n                                \"options\": {\n\n                                }\n                            },\n                            {\n                                \"id\": \"calculateField\",\n                                \"options\": {\n                                    \"alias\": \"Used\",\n                                    \"binary\": {\n                                        \"left\": \"Value #A (lastNotNull)\",\n                                        \"operator\": \"-\",\n                                        \"reducer\": \"sum\",\n                                        \"right\": \"Value #B (lastNotNull)\"\n                                    },\n                                    \"mode\": \"binary\",\n                                    \"reduce\": {\n                                        \"reducer\": \"sum\"\n                                    }\n                                }\n                            },\n                            {\n                                \"id\": \"calculateField\",\n                                \"options\": {\n                                    \"alias\": \"Used, %\",\n                                    \"binary\": {\n                                        \"left\": \"Used\",\n                                        \"operator\": \"/\",\n                                        \"reducer\": \"sum\",\n                                        \"right\": \"Value #A (lastNotNull)\"\n                                    },\n                                    \"mode\": \"binary\",\n                                    \"reduce\": {\n                                        \"reducer\": \"sum\"\n                                    }\n                                }\n                            },\n                            {\n                                \"id\": \"organize\",\n                                \"options\": {\n                                    \"excludeByName\": {\n\n                                    },\n                                    \"indexByName\": {\n\n                                    },\n                                    \"renameByName\": {\n                                        \"Value #A (lastNotNull)\": \"Size\",\n                                        \"Value #B (lastNotNull)\": \"Available\",\n                                        \"mountpoint\": \"Mounted on\"\n                                    }\n                                }\n                            },\n                            {\n                                \"id\": \"sortBy\",\n                                \"options\": {\n                                    \"fields\": {\n\n                                    },\n                                    \"sort\": [\n                                        {\n                                            \"field\": \"Mounted on\"\n                                        }\n                                    ]\n                                }\n                            }\n                        ],\n                        \"transparent\": false,\n                        \"type\": \"table\"\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Disk\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"description\": \"Network received (bits/s)\",\n                        \"fill\": 0,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 8,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"rate(node_network_receive_bytes_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", device!=\\\"lo\\\"}[$__rate_interval]) * 8\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 1,\n                                \"legendFormat\": \"{{device}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Network Received\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"description\": \"Network transmitted (bits/s)\",\n                        \"fill\": 0,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 9,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"rate(node_network_transmit_bytes_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", device!=\\\"lo\\\"}[$__rate_interval]) * 8\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 1,\n                                \"legendFormat\": \"{{device}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Network Transmitted\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Network\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            }\n        ],\n        \"schemaVersion\": 14,\n        \"style\": \"dark\",\n        \"tags\": [\n            \"node-exporter-mixin\"\n        ],\n        \"templating\": {\n            \"list\": [\n                {\n                    \"current\": {\n                        \"text\": \"default\",\n                        \"value\": \"default\"\n                    },\n                    \"hide\": 0,\n                    \"label\": \"Data Source\",\n                    \"name\": \"datasource\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"prometheus\",\n                    \"refresh\": 1,\n                    \"regex\": \"\",\n                    \"type\": \"datasource\"\n                },\n                {\n                    \"allValue\": null,\n                    \"current\": {\n\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": false,\n                    \"label\": \"Instance\",\n                    \"multi\": false,\n                    \"name\": \"instance\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(node_uname_info{job=\\\"node-exporter\\\", sysname!=\\\"Darwin\\\"}, instance)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"sort\": 0,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                }\n            ]\n        },\n        \"time\": {\n            \"from\": \"now-1h\",\n            \"to\": \"now\"\n        },\n        \"timepicker\": {\n            \"refresh_intervals\": [\n                \"5s\",\n                \"10s\",\n                \"30s\",\n                \"1m\",\n                \"5m\",\n                \"15m\",\n                \"30m\",\n                \"1h\",\n                \"2h\",\n                \"1d\"\n            ],\n            \"time_options\": [\n                \"5m\",\n                \"15m\",\n                \"1h\",\n                \"6h\",\n                \"12h\",\n                \"24h\",\n                \"2d\",\n                \"7d\",\n                \"30d\"\n            ]\n        },\n        \"timezone\": \"utc\",\n        \"title\": \"Node Exporter / Nodes\",\n        \"version\": 0\n    }\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 9.5.3\n  name: grafana-dashboard-nodes\n  namespace: monitoring\n---\napiVersion: v1\ndata:\n  nodes-darwin.json: |-\n    {\n        \"__inputs\": [\n\n        ],\n        \"__requires\": [\n\n        ],\n        \"annotations\": {\n            \"list\": [\n\n            ]\n        },\n        \"editable\": false,\n        \"gnetId\": null,\n        \"graphTooltip\": 1,\n        \"hideControls\": false,\n        \"id\": null,\n        \"links\": [\n\n        ],\n        \"refresh\": \"30s\",\n        \"rows\": [\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 2,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"(\\n  (1 - sum without (mode) (rate(node_cpu_seconds_total{job=\\\"node-exporter\\\", mode=~\\\"idle|iowait|steal\\\", instance=\\\"$instance\\\"}[$__rate_interval])))\\n/ ignoring(cpu) group_left\\n  count without (cpu, mode) (node_cpu_seconds_total{job=\\\"node-exporter\\\", mode=\\\"idle\\\", instance=\\\"$instance\\\"})\\n)\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 5,\n                                \"legendFormat\": \"{{cpu}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"CPU Usage\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"percentunit\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": 1,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"percentunit\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": 1,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 0,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 3,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"node_load1{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"1m load average\",\n                                \"refId\": \"A\"\n                            },\n                            {\n                                \"expr\": \"node_load5{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"5m load average\",\n                                \"refId\": \"B\"\n                            },\n                            {\n                                \"expr\": \"node_load15{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"15m load average\",\n                                \"refId\": \"C\"\n                            },\n                            {\n                                \"expr\": \"count(node_cpu_seconds_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", mode=\\\"idle\\\"})\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"logical cores\",\n                                \"refId\": \"D\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Load Average\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"CPU\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 4,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 9,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"node_memory_total_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"Physical Memory\",\n                                \"refId\": \"A\"\n                            },\n                            {\n                                \"expr\": \"(\\n    node_memory_internal_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"} -\\n    node_memory_purgeable_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"} +\\n    node_memory_wired_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"} +\\n    node_memory_compressed_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\\n)\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"Memory Used\",\n                                \"refId\": \"B\"\n                            },\n                            {\n                                \"expr\": \"(\\n    node_memory_internal_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"} -\\n    node_memory_purgeable_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\\n)\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"App Memory\",\n                                \"refId\": \"C\"\n                            },\n                            {\n                                \"expr\": \"node_memory_wired_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"Wired Memory\",\n                                \"refId\": \"D\"\n                            },\n                            {\n                                \"expr\": \"node_memory_compressed_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"Compressed\",\n                                \"refId\": \"E\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Memory Usage\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"bytes\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"bytes\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"datasource\": \"$datasource\",\n                        \"fieldConfig\": {\n                            \"defaults\": {\n                                \"max\": 100,\n                                \"min\": 0,\n                                \"thresholds\": {\n                                    \"mode\": \"absolute\",\n                                    \"steps\": [\n                                        {\n                                            \"color\": \"rgba(50, 172, 45, 0.97)\"\n                                        },\n                                        {\n                                            \"color\": \"rgba(237, 129, 40, 0.89)\",\n                                            \"value\": 80\n                                        },\n                                        {\n                                            \"color\": \"rgba(245, 54, 54, 0.9)\",\n                                            \"value\": 90\n                                        }\n                                    ]\n                                },\n                                \"unit\": \"percent\"\n                            }\n                        },\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 5,\n                        \"span\": 3,\n                        \"targets\": [\n                            {\n                                \"expr\": \"(\\n    (\\n      avg(node_memory_internal_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}) -\\n      avg(node_memory_purgeable_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}) +\\n      avg(node_memory_wired_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}) +\\n      avg(node_memory_compressed_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"})\\n    ) /\\n    avg(node_memory_total_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"})\\n)\\n*\\n100\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\"\n                            }\n                        ],\n                        \"title\": \"Memory Usage\",\n                        \"transparent\": false,\n                        \"type\": \"gauge\"\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Memory\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 0,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 6,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n                            {\n                                \"alias\": \"/ read| written/\",\n                                \"yaxis\": 1\n                            },\n                            {\n                                \"alias\": \"/ io time/\",\n                                \"yaxis\": 2\n                            }\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"rate(node_disk_read_bytes_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\"}[$__rate_interval])\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 1,\n                                \"legendFormat\": \"{{device}} read\",\n                                \"refId\": \"A\"\n                            },\n                            {\n                                \"expr\": \"rate(node_disk_written_bytes_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\"}[$__rate_interval])\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 1,\n                                \"legendFormat\": \"{{device}} written\",\n                                \"refId\": \"B\"\n                            },\n                            {\n                                \"expr\": \"rate(node_disk_io_time_seconds_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\"}[$__rate_interval])\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 1,\n                                \"legendFormat\": \"{{device}} io time\",\n                                \"refId\": \"C\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Disk I/O\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"Bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"percentunit\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"datasource\": \"$datasource\",\n                        \"fieldConfig\": {\n                            \"defaults\": {\n                                \"custom\": {\n\n                                },\n                                \"thresholds\": {\n                                    \"mode\": \"absolute\",\n                                    \"steps\": [\n                                        {\n                                            \"color\": \"green\"\n                                        },\n                                        {\n                                            \"color\": \"yellow\",\n                                            \"value\": 0.8\n                                        },\n                                        {\n                                            \"color\": \"red\",\n                                            \"value\": 0.9\n                                        }\n                                    ]\n                                },\n                                \"unit\": \"decbytes\"\n                            },\n                            \"overrides\": [\n                                {\n                                    \"matcher\": {\n                                        \"id\": \"byName\",\n                                        \"options\": \"Mounted on\"\n                                    },\n                                    \"properties\": [\n                                        {\n                                            \"id\": \"custom.width\",\n                                            \"value\": 260\n                                        }\n                                    ]\n                                },\n                                {\n                                    \"matcher\": {\n                                        \"id\": \"byName\",\n                                        \"options\": \"Size\"\n                                    },\n                                    \"properties\": [\n                                        {\n                                            \"id\": \"custom.width\",\n                                            \"value\": 93\n                                        }\n                                    ]\n                                },\n                                {\n                                    \"matcher\": {\n                                        \"id\": \"byName\",\n                                        \"options\": \"Used\"\n                                    },\n                                    \"properties\": [\n                                        {\n                                            \"id\": \"custom.width\",\n                                            \"value\": 72\n                                        }\n                                    ]\n                                },\n                                {\n                                    \"matcher\": {\n                                        \"id\": \"byName\",\n                                        \"options\": \"Available\"\n                                    },\n                                    \"properties\": [\n                                        {\n                                            \"id\": \"custom.width\",\n                                            \"value\": 88\n                                        }\n                                    ]\n                                },\n                                {\n                                    \"matcher\": {\n                                        \"id\": \"byName\",\n                                        \"options\": \"Used, %\"\n                                    },\n                                    \"properties\": [\n                                        {\n                                            \"id\": \"unit\",\n                                            \"value\": \"percentunit\"\n                                        },\n                                        {\n                                            \"id\": \"custom.displayMode\",\n                                            \"value\": \"gradient-gauge\"\n                                        },\n                                        {\n                                            \"id\": \"max\",\n                                            \"value\": 1\n                                        },\n                                        {\n                                            \"id\": \"min\",\n                                            \"value\": 0\n                                        }\n                                    ]\n                                }\n                            ]\n                        },\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 7,\n                        \"span\": 6,\n                        \"targets\": [\n                            {\n                                \"expr\": \"max by (mountpoint) (node_filesystem_size_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", fstype!=\\\"\\\", mountpoint!=\\\"\\\"})\\n\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\"\n                            },\n                            {\n                                \"expr\": \"max by (mountpoint) (node_filesystem_avail_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", fstype!=\\\"\\\", mountpoint!=\\\"\\\"})\\n\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\"\n                            }\n                        ],\n                        \"title\": \"Disk Space Usage\",\n                        \"transformations\": [\n                            {\n                                \"id\": \"groupBy\",\n                                \"options\": {\n                                    \"fields\": {\n                                        \"Value #A\": {\n                                            \"aggregations\": [\n                                                \"lastNotNull\"\n                                            ],\n                                            \"operation\": \"aggregate\"\n                                        },\n                                        \"Value #B\": {\n                                            \"aggregations\": [\n                                                \"lastNotNull\"\n                                            ],\n                                            \"operation\": \"aggregate\"\n                                        },\n                                        \"mountpoint\": {\n                                            \"aggregations\": [\n\n                                            ],\n                                            \"operation\": \"groupby\"\n                                        }\n                                    }\n                                }\n                            },\n                            {\n                                \"id\": \"merge\",\n                                \"options\": {\n\n                                }\n                            },\n                            {\n                                \"id\": \"calculateField\",\n                                \"options\": {\n                                    \"alias\": \"Used\",\n                                    \"binary\": {\n                                        \"left\": \"Value #A (lastNotNull)\",\n                                        \"operator\": \"-\",\n                                        \"reducer\": \"sum\",\n                                        \"right\": \"Value #B (lastNotNull)\"\n                                    },\n                                    \"mode\": \"binary\",\n                                    \"reduce\": {\n                                        \"reducer\": \"sum\"\n                                    }\n                                }\n                            },\n                            {\n                                \"id\": \"calculateField\",\n                                \"options\": {\n                                    \"alias\": \"Used, %\",\n                                    \"binary\": {\n                                        \"left\": \"Used\",\n                                        \"operator\": \"/\",\n                                        \"reducer\": \"sum\",\n                                        \"right\": \"Value #A (lastNotNull)\"\n                                    },\n                                    \"mode\": \"binary\",\n                                    \"reduce\": {\n                                        \"reducer\": \"sum\"\n                                    }\n                                }\n                            },\n                            {\n                                \"id\": \"organize\",\n                                \"options\": {\n                                    \"excludeByName\": {\n\n                                    },\n                                    \"indexByName\": {\n\n                                    },\n                                    \"renameByName\": {\n                                        \"Value #A (lastNotNull)\": \"Size\",\n                                        \"Value #B (lastNotNull)\": \"Available\",\n                                        \"mountpoint\": \"Mounted on\"\n                                    }\n                                }\n                            },\n                            {\n                                \"id\": \"sortBy\",\n                                \"options\": {\n                                    \"fields\": {\n\n                                    },\n                                    \"sort\": [\n                                        {\n                                            \"field\": \"Mounted on\"\n                                        }\n                                    ]\n                                }\n                            }\n                        ],\n                        \"transparent\": false,\n                        \"type\": \"table\"\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Disk\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"description\": \"Network received (bits/s)\",\n                        \"fill\": 0,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 8,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"rate(node_network_receive_bytes_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", device!=\\\"lo\\\"}[$__rate_interval]) * 8\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 1,\n                                \"legendFormat\": \"{{device}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Network Received\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"description\": \"Network transmitted (bits/s)\",\n                        \"fill\": 0,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 9,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"rate(node_network_transmit_bytes_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", device!=\\\"lo\\\"}[$__rate_interval]) * 8\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 1,\n                                \"legendFormat\": \"{{device}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Network Transmitted\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Network\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            }\n        ],\n        \"schemaVersion\": 14,\n        \"style\": \"dark\",\n        \"tags\": [\n            \"node-exporter-mixin\"\n        ],\n        \"templating\": {\n            \"list\": [\n                {\n                    \"current\": {\n                        \"text\": \"default\",\n                        \"value\": \"default\"\n                    },\n                    \"hide\": 0,\n                    \"label\": \"Data Source\",\n                    \"name\": \"datasource\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"prometheus\",\n                    \"refresh\": 1,\n                    \"regex\": \"\",\n                    \"type\": \"datasource\"\n                },\n                {\n                    \"allValue\": null,\n                    \"current\": {\n\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": false,\n                    \"label\": \"Instance\",\n                    \"multi\": false,\n                    \"name\": \"instance\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(node_uname_info{job=\\\"node-exporter\\\", sysname=\\\"Darwin\\\"}, instance)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"sort\": 0,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                }\n            ]\n        },\n        \"time\": {\n            \"from\": \"now-1h\",\n            \"to\": \"now\"\n        },\n        \"timepicker\": {\n            \"refresh_intervals\": [\n                \"5s\",\n                \"10s\",\n                \"30s\",\n                \"1m\",\n                \"5m\",\n                \"15m\",\n                \"30m\",\n                \"1h\",\n                \"2h\",\n                \"1d\"\n            ],\n            \"time_options\": [\n                \"5m\",\n                \"15m\",\n                \"1h\",\n                \"6h\",\n                \"12h\",\n                \"24h\",\n                \"2d\",\n                \"7d\",\n                \"30d\"\n            ]\n        },\n        \"timezone\": \"utc\",\n        \"title\": \"Node Exporter / MacOS\",\n        \"version\": 0\n    }\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 9.5.3\n  name: grafana-dashboard-nodes-darwin\n  namespace: monitoring\n---\napiVersion: v1\ndata:\n  persistentvolumesusage.json: |-\n    {\n        \"__inputs\": [\n\n        ],\n        \"__requires\": [\n\n        ],\n        \"annotations\": {\n            \"list\": [\n\n            ]\n        },\n        \"editable\": false,\n        \"gnetId\": null,\n        \"graphTooltip\": 0,\n        \"hideControls\": false,\n        \"id\": null,\n        \"links\": [\n\n        ],\n        \"refresh\": \"10s\",\n        \"rows\": [\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 2,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": true,\n                            \"current\": true,\n                            \"max\": true,\n                            \"min\": true,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": true\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 9,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"(\\n  sum without(instance, node) (topk(1, (kubelet_volume_stats_capacity_bytes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\", persistentvolumeclaim=\\\"$volume\\\"})))\\n  -\\n  sum without(instance, node) (topk(1, (kubelet_volume_stats_available_bytes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\", persistentvolumeclaim=\\\"$volume\\\"})))\\n)\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 1,\n                                \"legendFormat\": \"Used Space\",\n                                \"refId\": \"A\"\n                            },\n                            {\n                                \"expr\": \"sum without(instance, node) (topk(1, (kubelet_volume_stats_available_bytes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\", persistentvolumeclaim=\\\"$volume\\\"})))\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 1,\n                                \"legendFormat\": \"Free Space\",\n                                \"refId\": \"B\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Volume Space Usage\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"bytes\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"bytes\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"cacheTimeout\": null,\n                        \"colorBackground\": false,\n                        \"colorValue\": false,\n                        \"colors\": [\n                            \"rgba(50, 172, 45, 0.97)\",\n                            \"rgba(237, 129, 40, 0.89)\",\n                            \"rgba(245, 54, 54, 0.9)\"\n                        ],\n                        \"datasource\": \"$datasource\",\n                        \"format\": \"percent\",\n                        \"gauge\": {\n                            \"maxValue\": 100,\n                            \"minValue\": 0,\n                            \"show\": true,\n                            \"thresholdLabels\": false,\n                            \"thresholdMarkers\": true\n                        },\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 3,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"rightSide\": true\n                        },\n                        \"links\": [\n\n                        ],\n                        \"mappingType\": 1,\n                        \"mappingTypes\": [\n                            {\n                                \"name\": \"value to text\",\n                                \"value\": 1\n                            },\n                            {\n                                \"name\": \"range to text\",\n                                \"value\": 2\n                            }\n                        ],\n                        \"maxDataPoints\": 100,\n                        \"nullPointMode\": \"connected\",\n                        \"nullText\": null,\n                        \"postfix\": \"\",\n                        \"postfixFontSize\": \"50%\",\n                        \"prefix\": \"\",\n                        \"prefixFontSize\": \"50%\",\n                        \"rangeMaps\": [\n                            {\n                                \"from\": \"null\",\n                                \"text\": \"N/A\",\n                                \"to\": \"null\"\n                            }\n                        ],\n                        \"span\": 3,\n                        \"sparkline\": {\n                            \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n                            \"full\": false,\n                            \"lineColor\": \"rgb(31, 120, 193)\",\n                            \"show\": false\n                        },\n                        \"tableColumn\": \"\",\n                        \"targets\": [\n                            {\n                                \"expr\": \"max without(instance,node) (\\n(\\n  topk(1, kubelet_volume_stats_capacity_bytes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\", persistentvolumeclaim=\\\"$volume\\\"})\\n  -\\n  topk(1, kubelet_volume_stats_available_bytes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\", persistentvolumeclaim=\\\"$volume\\\"})\\n)\\n/\\ntopk(1, kubelet_volume_stats_capacity_bytes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\", persistentvolumeclaim=\\\"$volume\\\"})\\n* 100)\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": \"80, 90\",\n                        \"title\": \"Volume Space Usage\",\n                        \"tooltip\": {\n                            \"shared\": false\n                        },\n                        \"type\": \"singlestat\",\n                        \"valueFontSize\": \"80%\",\n                        \"valueMaps\": [\n                            {\n                                \"op\": \"=\",\n                                \"text\": \"N/A\",\n                                \"value\": \"null\"\n                            }\n                        ],\n                        \"valueName\": \"current\"\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": false,\n                \"title\": \"Dashboard Row\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 4,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": true,\n                            \"current\": true,\n                            \"max\": true,\n                            \"min\": true,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": true\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 9,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum without(instance, node) (topk(1, (kubelet_volume_stats_inodes_used{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\", persistentvolumeclaim=\\\"$volume\\\"})))\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 1,\n                                \"legendFormat\": \"Used inodes\",\n                                \"refId\": \"A\"\n                            },\n                            {\n                                \"expr\": \"(\\n  sum without(instance, node) (topk(1, (kubelet_volume_stats_inodes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\", persistentvolumeclaim=\\\"$volume\\\"})))\\n  -\\n  sum without(instance, node) (topk(1, (kubelet_volume_stats_inodes_used{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\", persistentvolumeclaim=\\\"$volume\\\"})))\\n)\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 1,\n                                \"legendFormat\": \" Free inodes\",\n                                \"refId\": \"B\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Volume inodes Usage\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"none\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"none\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"cacheTimeout\": null,\n                        \"colorBackground\": false,\n                        \"colorValue\": false,\n                        \"colors\": [\n                            \"rgba(50, 172, 45, 0.97)\",\n                            \"rgba(237, 129, 40, 0.89)\",\n                            \"rgba(245, 54, 54, 0.9)\"\n                        ],\n                        \"datasource\": \"$datasource\",\n                        \"format\": \"percent\",\n                        \"gauge\": {\n                            \"maxValue\": 100,\n                            \"minValue\": 0,\n                            \"show\": true,\n                            \"thresholdLabels\": false,\n                            \"thresholdMarkers\": true\n                        },\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 5,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"rightSide\": true\n                        },\n                        \"links\": [\n\n                        ],\n                        \"mappingType\": 1,\n                        \"mappingTypes\": [\n                            {\n                                \"name\": \"value to text\",\n                                \"value\": 1\n                            },\n                            {\n                                \"name\": \"range to text\",\n                                \"value\": 2\n                            }\n                        ],\n                        \"maxDataPoints\": 100,\n                        \"nullPointMode\": \"connected\",\n                        \"nullText\": null,\n                        \"postfix\": \"\",\n                        \"postfixFontSize\": \"50%\",\n                        \"prefix\": \"\",\n                        \"prefixFontSize\": \"50%\",\n                        \"rangeMaps\": [\n                            {\n                                \"from\": \"null\",\n                                \"text\": \"N/A\",\n                                \"to\": \"null\"\n                            }\n                        ],\n                        \"span\": 3,\n                        \"sparkline\": {\n                            \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n                            \"full\": false,\n                            \"lineColor\": \"rgb(31, 120, 193)\",\n                            \"show\": false\n                        },\n                        \"tableColumn\": \"\",\n                        \"targets\": [\n                            {\n                                \"expr\": \"max without(instance,node) (\\ntopk(1, kubelet_volume_stats_inodes_used{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\", persistentvolumeclaim=\\\"$volume\\\"})\\n/\\ntopk(1, kubelet_volume_stats_inodes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\", persistentvolumeclaim=\\\"$volume\\\"})\\n* 100)\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": \"80, 90\",\n                        \"title\": \"Volume inodes Usage\",\n                        \"tooltip\": {\n                            \"shared\": false\n                        },\n                        \"type\": \"singlestat\",\n                        \"valueFontSize\": \"80%\",\n                        \"valueMaps\": [\n                            {\n                                \"op\": \"=\",\n                                \"text\": \"N/A\",\n                                \"value\": \"null\"\n                            }\n                        ],\n                        \"valueName\": \"current\"\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": false,\n                \"title\": \"Dashboard Row\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            }\n        ],\n        \"schemaVersion\": 14,\n        \"style\": \"dark\",\n        \"tags\": [\n            \"kubernetes-mixin\"\n        ],\n        \"templating\": {\n            \"list\": [\n                {\n                    \"current\": {\n                        \"text\": \"default\",\n                        \"value\": \"default\"\n                    },\n                    \"hide\": 0,\n                    \"label\": \"Data Source\",\n                    \"name\": \"datasource\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"prometheus\",\n                    \"refresh\": 1,\n                    \"regex\": \"\",\n                    \"type\": \"datasource\"\n                },\n                {\n                    \"allValue\": null,\n                    \"current\": {\n\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": false,\n                    \"label\": \"cluster\",\n                    \"multi\": false,\n                    \"name\": \"cluster\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(kubelet_volume_stats_capacity_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\"}, cluster)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                },\n                {\n                    \"allValue\": null,\n                    \"current\": {\n\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": false,\n                    \"label\": \"Namespace\",\n                    \"multi\": false,\n                    \"name\": \"namespace\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(kubelet_volume_stats_capacity_bytes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\"}, namespace)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                },\n                {\n                    \"allValue\": null,\n                    \"current\": {\n\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": false,\n                    \"label\": \"PersistentVolumeClaim\",\n                    \"multi\": false,\n                    \"name\": \"volume\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(kubelet_volume_stats_capacity_bytes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\"}, persistentvolumeclaim)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                }\n            ]\n        },\n        \"time\": {\n            \"from\": \"now-7d\",\n            \"to\": \"now\"\n        },\n        \"timepicker\": {\n            \"refresh_intervals\": [\n                \"5s\",\n                \"10s\",\n                \"30s\",\n                \"1m\",\n                \"5m\",\n                \"15m\",\n                \"30m\",\n                \"1h\",\n                \"2h\",\n                \"1d\"\n            ],\n            \"time_options\": [\n                \"5m\",\n                \"15m\",\n                \"1h\",\n                \"6h\",\n                \"12h\",\n                \"24h\",\n                \"2d\",\n                \"7d\",\n                \"30d\"\n            ]\n        },\n        \"timezone\": \"UTC\",\n        \"title\": \"Kubernetes / Persistent Volumes\",\n        \"uid\": \"919b92a8e8041bd567af9edab12c840c\",\n        \"version\": 0\n    }\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 9.5.3\n  name: grafana-dashboard-persistentvolumesusage\n  namespace: monitoring\n---\napiVersion: v1\ndata:\n  pod-total.json: |-\n    {\n        \"__inputs\": [\n\n        ],\n        \"__requires\": [\n\n        ],\n        \"annotations\": {\n            \"list\": [\n                {\n                    \"builtIn\": 1,\n                    \"datasource\": \"-- Grafana --\",\n                    \"enable\": true,\n                    \"hide\": true,\n                    \"iconColor\": \"rgba(0, 211, 255, 1)\",\n                    \"name\": \"Annotations & Alerts\",\n                    \"type\": \"dashboard\"\n                }\n            ]\n        },\n        \"editable\": true,\n        \"gnetId\": null,\n        \"graphTooltip\": 0,\n        \"hideControls\": false,\n        \"id\": null,\n        \"links\": [\n\n        ],\n        \"panels\": [\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"gridPos\": {\n                    \"h\": 1,\n                    \"w\": 24,\n                    \"x\": 0,\n                    \"y\": 0\n                },\n                \"id\": 2,\n                \"panels\": [\n\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Current Bandwidth\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"cacheTimeout\": null,\n                \"colorBackground\": false,\n                \"colorValue\": false,\n                \"colors\": [\n                    \"#299c46\",\n                    \"rgba(237, 129, 40, 0.89)\",\n                    \"#d44a3a\"\n                ],\n                \"datasource\": \"$datasource\",\n                \"decimals\": 0,\n                \"format\": \"time_series\",\n                \"gauge\": {\n                    \"maxValue\": 100,\n                    \"minValue\": 0,\n                    \"show\": false,\n                    \"thresholdLabels\": false,\n                    \"thresholdMarkers\": true\n                },\n                \"gridPos\": {\n                    \"h\": 9,\n                    \"w\": 12,\n                    \"x\": 0,\n                    \"y\": 1\n                },\n                \"height\": 9,\n                \"id\": 3,\n                \"interval\": null,\n                \"links\": [\n\n                ],\n                \"mappingType\": 1,\n                \"mappingTypes\": [\n                    {\n                        \"name\": \"value to text\",\n                        \"value\": 1\n                    },\n                    {\n                        \"name\": \"range to text\",\n                        \"value\": 2\n                    }\n                ],\n                \"maxDataPoints\": 100,\n                \"minSpan\": 12,\n                \"nullPointMode\": \"connected\",\n                \"nullText\": null,\n                \"options\": {\n                    \"fieldOptions\": {\n                        \"calcs\": [\n                            \"last\"\n                        ],\n                        \"defaults\": {\n                            \"max\": 10000000000,\n                            \"min\": 0,\n                            \"title\": \"$namespace: $pod\",\n                            \"unit\": \"Bps\"\n                        },\n                        \"mappings\": [\n\n                        ],\n                        \"override\": {\n\n                        },\n                        \"thresholds\": [\n                            {\n                                \"color\": \"dark-green\",\n                                \"index\": 0,\n                                \"value\": null\n                            },\n                            {\n                                \"color\": \"dark-yellow\",\n                                \"index\": 1,\n                                \"value\": 5000000000\n                            },\n                            {\n                                \"color\": \"dark-red\",\n                                \"index\": 2,\n                                \"value\": 7000000000\n                            }\n                        ],\n                        \"values\": false\n                    }\n                },\n                \"postfix\": \"\",\n                \"postfixFontSize\": \"50%\",\n                \"prefix\": \"\",\n                \"prefixFontSize\": \"50%\",\n                \"rangeMaps\": [\n                    {\n                        \"from\": \"null\",\n                        \"text\": \"N/A\",\n                        \"to\": \"null\"\n                    }\n                ],\n                \"span\": 12,\n                \"sparkline\": {\n                    \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n                    \"full\": false,\n                    \"lineColor\": \"rgb(31, 120, 193)\",\n                    \"show\": false\n                },\n                \"tableColumn\": \"\",\n                \"targets\": [\n                    {\n                        \"expr\": \"sum(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$interval:$resolution]))\",\n                        \"format\": \"time_series\",\n                        \"instant\": null,\n                        \"intervalFactor\": 1,\n                        \"legendFormat\": \"\",\n                        \"refId\": \"A\"\n                    }\n                ],\n                \"thresholds\": \"\",\n                \"timeFrom\": null,\n                \"timeShift\": null,\n                \"title\": \"Current Rate of Bytes Received\",\n                \"type\": \"gauge\",\n                \"valueFontSize\": \"80%\",\n                \"valueMaps\": [\n                    {\n                        \"op\": \"=\",\n                        \"text\": \"N/A\",\n                        \"value\": \"null\"\n                    }\n                ],\n                \"valueName\": \"current\"\n            },\n            {\n                \"cacheTimeout\": null,\n                \"colorBackground\": false,\n                \"colorValue\": false,\n                \"colors\": [\n                    \"#299c46\",\n                    \"rgba(237, 129, 40, 0.89)\",\n                    \"#d44a3a\"\n                ],\n                \"datasource\": \"$datasource\",\n                \"decimals\": 0,\n                \"format\": \"time_series\",\n                \"gauge\": {\n                    \"maxValue\": 100,\n                    \"minValue\": 0,\n                    \"show\": false,\n                    \"thresholdLabels\": false,\n                    \"thresholdMarkers\": true\n                },\n                \"gridPos\": {\n                    \"h\": 9,\n                    \"w\": 12,\n                    \"x\": 12,\n                    \"y\": 1\n                },\n                \"height\": 9,\n                \"id\": 4,\n                \"interval\": null,\n                \"links\": [\n\n                ],\n                \"mappingType\": 1,\n                \"mappingTypes\": [\n                    {\n                        \"name\": \"value to text\",\n                        \"value\": 1\n                    },\n                    {\n                        \"name\": \"range to text\",\n                        \"value\": 2\n                    }\n                ],\n                \"maxDataPoints\": 100,\n                \"minSpan\": 12,\n                \"nullPointMode\": \"connected\",\n                \"nullText\": null,\n                \"options\": {\n                    \"fieldOptions\": {\n                        \"calcs\": [\n                            \"last\"\n                        ],\n                        \"defaults\": {\n                            \"max\": 10000000000,\n                            \"min\": 0,\n                            \"title\": \"$namespace: $pod\",\n                            \"unit\": \"Bps\"\n                        },\n                        \"mappings\": [\n\n                        ],\n                        \"override\": {\n\n                        },\n                        \"thresholds\": [\n                            {\n                                \"color\": \"dark-green\",\n                                \"index\": 0,\n                                \"value\": null\n                            },\n                            {\n                                \"color\": \"dark-yellow\",\n                                \"index\": 1,\n                                \"value\": 5000000000\n                            },\n                            {\n                                \"color\": \"dark-red\",\n                                \"index\": 2,\n                                \"value\": 7000000000\n                            }\n                        ],\n                        \"values\": false\n                    }\n                },\n                \"postfix\": \"\",\n                \"postfixFontSize\": \"50%\",\n                \"prefix\": \"\",\n                \"prefixFontSize\": \"50%\",\n                \"rangeMaps\": [\n                    {\n                        \"from\": \"null\",\n                        \"text\": \"N/A\",\n                        \"to\": \"null\"\n                    }\n                ],\n                \"span\": 12,\n                \"sparkline\": {\n                    \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n                    \"full\": false,\n                    \"lineColor\": \"rgb(31, 120, 193)\",\n                    \"show\": false\n                },\n                \"tableColumn\": \"\",\n                \"targets\": [\n                    {\n                        \"expr\": \"sum(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$interval:$resolution]))\",\n                        \"format\": \"time_series\",\n                        \"instant\": null,\n                        \"intervalFactor\": 1,\n                        \"legendFormat\": \"\",\n                        \"refId\": \"A\"\n                    }\n                ],\n                \"thresholds\": \"\",\n                \"timeFrom\": null,\n                \"timeShift\": null,\n                \"title\": \"Current Rate of Bytes Transmitted\",\n                \"type\": \"gauge\",\n                \"valueFontSize\": \"80%\",\n                \"valueMaps\": [\n                    {\n                        \"op\": \"=\",\n                        \"text\": \"N/A\",\n                        \"value\": \"null\"\n                    }\n                ],\n                \"valueName\": \"current\"\n            },\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"gridPos\": {\n                    \"h\": 1,\n                    \"w\": 24,\n                    \"x\": 0,\n                    \"y\": 10\n                },\n                \"id\": 5,\n                \"panels\": [\n\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Bandwidth\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"aliasColors\": {\n\n                },\n                \"bars\": false,\n                \"dashLength\": 10,\n                \"dashes\": false,\n                \"datasource\": \"$datasource\",\n                \"fill\": 2,\n                \"fillGradient\": 0,\n                \"gridPos\": {\n                    \"h\": 9,\n                    \"w\": 12,\n                    \"x\": 0,\n                    \"y\": 11\n                },\n                \"id\": 6,\n                \"legend\": {\n                    \"alignAsTable\": false,\n                    \"avg\": false,\n                    \"current\": false,\n                    \"hideEmpty\": true,\n                    \"hideZero\": true,\n                    \"max\": false,\n                    \"min\": false,\n                    \"rightSide\": false,\n                    \"show\": true,\n                    \"sideWidth\": null,\n                    \"total\": false,\n                    \"values\": false\n                },\n                \"lines\": true,\n                \"linewidth\": 2,\n                \"links\": [\n\n                ],\n                \"minSpan\": 12,\n                \"nullPointMode\": \"connected\",\n                \"paceLength\": 10,\n                \"percentage\": false,\n                \"pointradius\": 5,\n                \"points\": false,\n                \"renderer\": \"flot\",\n                \"repeat\": null,\n                \"seriesOverrides\": [\n\n                ],\n                \"spaceLength\": 10,\n                \"span\": 12,\n                \"stack\": true,\n                \"steppedLine\": false,\n                \"targets\": [\n                    {\n                        \"expr\": \"sum(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$interval:$resolution])) by (pod)\",\n                        \"format\": \"time_series\",\n                        \"intervalFactor\": 1,\n                        \"legendFormat\": \"{{pod}}\",\n                        \"refId\": \"A\",\n                        \"step\": 10\n                    }\n                ],\n                \"thresholds\": [\n\n                ],\n                \"timeFrom\": null,\n                \"timeShift\": null,\n                \"title\": \"Receive Bandwidth\",\n                \"tooltip\": {\n                    \"shared\": true,\n                    \"sort\": 2,\n                    \"value_type\": \"individual\"\n                },\n                \"type\": \"graph\",\n                \"xaxis\": {\n                    \"buckets\": null,\n                    \"mode\": \"time\",\n                    \"name\": null,\n                    \"show\": true,\n                    \"values\": [\n\n                    ]\n                },\n                \"yaxes\": [\n                    {\n                        \"format\": \"Bps\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": 0,\n                        \"show\": true\n                    },\n                    {\n                        \"format\": \"Bps\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": 0,\n                        \"show\": true\n                    }\n                ]\n            },\n            {\n                \"aliasColors\": {\n\n                },\n                \"bars\": false,\n                \"dashLength\": 10,\n                \"dashes\": false,\n                \"datasource\": \"$datasource\",\n                \"fill\": 2,\n                \"fillGradient\": 0,\n                \"gridPos\": {\n                    \"h\": 9,\n                    \"w\": 12,\n                    \"x\": 12,\n                    \"y\": 11\n                },\n                \"id\": 7,\n                \"legend\": {\n                    \"alignAsTable\": false,\n                    \"avg\": false,\n                    \"current\": false,\n                    \"hideEmpty\": true,\n                    \"hideZero\": true,\n                    \"max\": false,\n                    \"min\": false,\n                    \"rightSide\": false,\n                    \"show\": true,\n                    \"sideWidth\": null,\n                    \"total\": false,\n                    \"values\": false\n                },\n                \"lines\": true,\n                \"linewidth\": 2,\n                \"links\": [\n\n                ],\n                \"minSpan\": 12,\n                \"nullPointMode\": \"connected\",\n                \"paceLength\": 10,\n                \"percentage\": false,\n                \"pointradius\": 5,\n                \"points\": false,\n                \"renderer\": \"flot\",\n                \"repeat\": null,\n                \"seriesOverrides\": [\n\n                ],\n                \"spaceLength\": 10,\n                \"span\": 12,\n                \"stack\": true,\n                \"steppedLine\": false,\n                \"targets\": [\n                    {\n                        \"expr\": \"sum(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$interval:$resolution])) by (pod)\",\n                        \"format\": \"time_series\",\n                        \"intervalFactor\": 1,\n                        \"legendFormat\": \"{{pod}}\",\n                        \"refId\": \"A\",\n                        \"step\": 10\n                    }\n                ],\n                \"thresholds\": [\n\n                ],\n                \"timeFrom\": null,\n                \"timeShift\": null,\n                \"title\": \"Transmit Bandwidth\",\n                \"tooltip\": {\n                    \"shared\": true,\n                    \"sort\": 2,\n                    \"value_type\": \"individual\"\n                },\n                \"type\": \"graph\",\n                \"xaxis\": {\n                    \"buckets\": null,\n                    \"mode\": \"time\",\n                    \"name\": null,\n                    \"show\": true,\n                    \"values\": [\n\n                    ]\n                },\n                \"yaxes\": [\n                    {\n                        \"format\": \"Bps\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": 0,\n                        \"show\": true\n                    },\n                    {\n                        \"format\": \"Bps\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": 0,\n                        \"show\": true\n                    }\n                ]\n            },\n            {\n                \"collapse\": true,\n                \"collapsed\": true,\n                \"gridPos\": {\n                    \"h\": 1,\n                    \"w\": 24,\n                    \"x\": 0,\n                    \"y\": 20\n                },\n                \"id\": 8,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 2,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n                            \"h\": 10,\n                            \"w\": 12,\n                            \"x\": 0,\n                            \"y\": 21\n                        },\n                        \"id\": 9,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"hideEmpty\": true,\n                            \"hideZero\": true,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 2,\n                        \"links\": [\n\n                        ],\n                        \"minSpan\": 12,\n                        \"nullPointMode\": \"connected\",\n                        \"paceLength\": 10,\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(irate(container_network_receive_packets_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$interval:$resolution])) by (pod)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 1,\n                                \"legendFormat\": \"{{pod}}\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Rate of Received Packets\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 2,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n                            \"h\": 10,\n                            \"w\": 12,\n                            \"x\": 12,\n                            \"y\": 21\n                        },\n                        \"id\": 10,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"hideEmpty\": true,\n                            \"hideZero\": true,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 2,\n                        \"links\": [\n\n                        ],\n                        \"minSpan\": 12,\n                        \"nullPointMode\": \"connected\",\n                        \"paceLength\": 10,\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(irate(container_network_transmit_packets_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$interval:$resolution])) by (pod)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 1,\n                                \"legendFormat\": \"{{pod}}\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Rate of Transmitted Packets\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Packets\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"collapse\": true,\n                \"collapsed\": true,\n                \"gridPos\": {\n                    \"h\": 1,\n                    \"w\": 24,\n                    \"x\": 0,\n                    \"y\": 21\n                },\n                \"id\": 11,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 2,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n                            \"h\": 10,\n                            \"w\": 12,\n                            \"x\": 0,\n                            \"y\": 32\n                        },\n                        \"id\": 12,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"hideEmpty\": true,\n                            \"hideZero\": true,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 2,\n                        \"links\": [\n\n                        ],\n                        \"minSpan\": 12,\n                        \"nullPointMode\": \"connected\",\n                        \"paceLength\": 10,\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(irate(container_network_receive_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$interval:$resolution])) by (pod)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 1,\n                                \"legendFormat\": \"{{pod}}\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Rate of Received Packets Dropped\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 2,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n                            \"h\": 10,\n                            \"w\": 12,\n                            \"x\": 12,\n                            \"y\": 32\n                        },\n                        \"id\": 13,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"hideEmpty\": true,\n                            \"hideZero\": true,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 2,\n                        \"links\": [\n\n                        ],\n                        \"minSpan\": 12,\n                        \"nullPointMode\": \"connected\",\n                        \"paceLength\": 10,\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(irate(container_network_transmit_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$interval:$resolution])) by (pod)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 1,\n                                \"legendFormat\": \"{{pod}}\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Rate of Transmitted Packets Dropped\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Errors\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            }\n        ],\n        \"refresh\": \"10s\",\n        \"rows\": [\n\n        ],\n        \"schemaVersion\": 18,\n        \"style\": \"dark\",\n        \"tags\": [\n            \"kubernetes-mixin\"\n        ],\n        \"templating\": {\n            \"list\": [\n                {\n                    \"current\": {\n                        \"text\": \"default\",\n                        \"value\": \"default\"\n                    },\n                    \"hide\": 0,\n                    \"label\": \"Data Source\",\n                    \"name\": \"datasource\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"prometheus\",\n                    \"refresh\": 1,\n                    \"regex\": \"\",\n                    \"type\": \"datasource\"\n                },\n                {\n                    \"allValue\": null,\n                    \"current\": {\n\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": false,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"cluster\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(up{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\"}, cluster)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"sort\": 0,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                },\n                {\n                    \"allValue\": \".+\",\n                    \"auto\": false,\n                    \"auto_count\": 30,\n                    \"auto_min\": \"10s\",\n                    \"current\": {\n                        \"text\": \"kube-system\",\n                        \"value\": \"kube-system\"\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"definition\": \"label_values(container_network_receive_packets_total{cluster=\\\"$cluster\\\"}, namespace)\",\n                    \"hide\": 0,\n                    \"includeAll\": true,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"namespace\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(container_network_receive_packets_total{cluster=\\\"$cluster\\\"}, namespace)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"skipUrlSync\": false,\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                },\n                {\n                    \"allValue\": \".+\",\n                    \"auto\": false,\n                    \"auto_count\": 30,\n                    \"auto_min\": \"10s\",\n                    \"current\": {\n                        \"text\": \"\",\n                        \"value\": \"\"\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"definition\": \"label_values(container_network_receive_packets_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}, pod)\",\n                    \"hide\": 0,\n                    \"includeAll\": false,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"pod\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(container_network_receive_packets_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}, pod)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"skipUrlSync\": false,\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                },\n                {\n                    \"allValue\": null,\n                    \"auto\": false,\n                    \"auto_count\": 30,\n                    \"auto_min\": \"10s\",\n                    \"current\": {\n                        \"text\": \"5m\",\n                        \"value\": \"5m\"\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": false,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"resolution\",\n                    \"options\": [\n                        {\n                            \"selected\": false,\n                            \"text\": \"30s\",\n                            \"value\": \"30s\"\n                        },\n                        {\n                            \"selected\": true,\n                            \"text\": \"5m\",\n                            \"value\": \"5m\"\n                        },\n                        {\n                            \"selected\": false,\n                            \"text\": \"1h\",\n                            \"value\": \"1h\"\n                        }\n                    ],\n                    \"query\": \"30s,5m,1h\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"skipUrlSync\": false,\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"interval\",\n                    \"useTags\": false\n                },\n                {\n                    \"allValue\": null,\n                    \"auto\": false,\n                    \"auto_count\": 30,\n                    \"auto_min\": \"10s\",\n                    \"current\": {\n                        \"text\": \"5m\",\n                        \"value\": \"5m\"\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 2,\n                    \"includeAll\": false,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"interval\",\n                    \"options\": [\n                        {\n                            \"selected\": true,\n                            \"text\": \"4h\",\n                            \"value\": \"4h\"\n                        }\n                    ],\n                    \"query\": \"4h\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"skipUrlSync\": false,\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"interval\",\n                    \"useTags\": false\n                }\n            ]\n        },\n        \"time\": {\n            \"from\": \"now-1h\",\n            \"to\": \"now\"\n        },\n        \"timepicker\": {\n            \"refresh_intervals\": [\n                \"5s\",\n                \"10s\",\n                \"30s\",\n                \"1m\",\n                \"5m\",\n                \"15m\",\n                \"30m\",\n                \"1h\",\n                \"2h\",\n                \"1d\"\n            ],\n            \"time_options\": [\n                \"5m\",\n                \"15m\",\n                \"1h\",\n                \"6h\",\n                \"12h\",\n                \"24h\",\n                \"2d\",\n                \"7d\",\n                \"30d\"\n            ]\n        },\n        \"timezone\": \"UTC\",\n        \"title\": \"Kubernetes / Networking / Pod\",\n        \"uid\": \"7a18067ce943a40ae25454675c19ff5c\",\n        \"version\": 0\n    }\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 9.5.3\n  name: grafana-dashboard-pod-total\n  namespace: monitoring\n---\napiVersion: v1\ndata:\n  prometheus.json: |-\n    {\n        \"annotations\": {\n            \"list\": [\n\n            ]\n        },\n        \"editable\": true,\n        \"gnetId\": null,\n        \"graphTooltip\": 0,\n        \"hideControls\": false,\n        \"links\": [\n\n        ],\n        \"refresh\": \"60s\",\n        \"rows\": [\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"id\": 1,\n                        \"legend\": {\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"styles\": [\n                            {\n                                \"alias\": \"Time\",\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"pattern\": \"Time\",\n                                \"type\": \"hidden\"\n                            },\n                            {\n                                \"alias\": \"Count\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #A\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"hidden\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"Uptime\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"Value #B\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"s\"\n                            },\n                            {\n                                \"alias\": \"Instance\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"instance\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"Job\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"job\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"Version\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"link\": false,\n                                \"linkTargetBlank\": false,\n                                \"linkTooltip\": \"Drill down\",\n                                \"linkUrl\": \"\",\n                                \"pattern\": \"version\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"number\",\n                                \"unit\": \"short\"\n                            },\n                            {\n                                \"alias\": \"\",\n                                \"colorMode\": null,\n                                \"colors\": [\n\n                                ],\n                                \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                \"decimals\": 2,\n                                \"pattern\": \"/.*/\",\n                                \"thresholds\": [\n\n                                ],\n                                \"type\": \"string\",\n                                \"unit\": \"short\"\n                            }\n                        ],\n                        \"targets\": [\n                            {\n                                \"expr\": \"count by (job, instance, version) (prometheus_build_info{job=~\\\"$job\\\", instance=~\\\"$instance\\\"})\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"max by (job, instance) (time() - process_start_time_seconds{job=~\\\"$job\\\", instance=~\\\"$instance\\\"})\",\n                                \"format\": \"table\",\n                                \"instant\": true,\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"B\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Prometheus Stats\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"transform\": \"table\",\n                        \"type\": \"table\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Prometheus Stats\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"id\": 2,\n                        \"legend\": {\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(rate(prometheus_target_sync_length_seconds_sum{job=~\\\"$job\\\",instance=~\\\"$instance\\\"}[5m])) by (scrape_job) * 1e3\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{scrape_job}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Target Sync\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"ms\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 3,\n                        \"legend\": {\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(prometheus_sd_discovered_targets{job=~\\\"$job\\\",instance=~\\\"$instance\\\"})\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"Targets\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Targets\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Discovery\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"id\": 4,\n                        \"legend\": {\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 4,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"rate(prometheus_target_interval_length_seconds_sum{job=~\\\"$job\\\",instance=~\\\"$instance\\\"}[5m]) / rate(prometheus_target_interval_length_seconds_count{job=~\\\"$job\\\",instance=~\\\"$instance\\\"}[5m]) * 1e3\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{interval}} configured\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Average Scrape Interval Duration\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"ms\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 5,\n                        \"legend\": {\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 4,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum by (job) (rate(prometheus_target_scrapes_exceeded_body_size_limit_total[1m]))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"exceeded body size limit: {{job}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum by (job) (rate(prometheus_target_scrapes_exceeded_sample_limit_total[1m]))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"exceeded sample limit: {{job}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum by (job) (rate(prometheus_target_scrapes_sample_duplicate_timestamp_total[1m]))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"duplicate timestamp: {{job}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum by (job) (rate(prometheus_target_scrapes_sample_out_of_bounds_total[1m]))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"out of bounds: {{job}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            },\n                            {\n                                \"expr\": \"sum by (job) (rate(prometheus_target_scrapes_sample_out_of_order_total[1m]))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"out of order: {{job}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Scrape failures\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 6,\n                        \"legend\": {\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 4,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"rate(prometheus_tsdb_head_samples_appended_total{job=~\\\"$job\\\",instance=~\\\"$instance\\\"}[5m])\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{job}} {{instance}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Appended Samples\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Retrieval\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 7,\n                        \"legend\": {\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"prometheus_tsdb_head_series{job=~\\\"$job\\\",instance=~\\\"$instance\\\"}\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{job}} {{instance}} head series\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Head Series\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 8,\n                        \"legend\": {\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"prometheus_tsdb_head_chunks{job=~\\\"$job\\\",instance=~\\\"$instance\\\"}\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{job}} {{instance}} head chunks\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Head Chunks\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Storage\",\n                \"titleSize\": \"h6\"\n            },\n            {\n                \"collapse\": false,\n                \"height\": \"250px\",\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 9,\n                        \"legend\": {\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"rate(prometheus_engine_query_duration_seconds_count{job=~\\\"$job\\\",instance=~\\\"$instance\\\",slice=\\\"inner_eval\\\"}[5m])\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{job}} {{instance}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Query Rate\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 10,\n                        \"id\": 10,\n                        \"legend\": {\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"show\": true,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 0,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null as zero\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"max by (slice) (prometheus_engine_query_duration_seconds{quantile=\\\"0.9\\\",job=~\\\"$job\\\",instance=~\\\"$instance\\\"}) * 1e3\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{slice}}\",\n                                \"legendLink\": null,\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Stage Duration\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"ms\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": false\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Query\",\n                \"titleSize\": \"h6\"\n            }\n        ],\n        \"schemaVersion\": 14,\n        \"style\": \"dark\",\n        \"tags\": [\n            \"prometheus-mixin\"\n        ],\n        \"templating\": {\n            \"list\": [\n                {\n                    \"current\": {\n                        \"text\": \"default\",\n                        \"value\": \"default\"\n                    },\n                    \"hide\": 0,\n                    \"label\": \"Data Source\",\n                    \"name\": \"datasource\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"prometheus\",\n                    \"refresh\": 1,\n                    \"regex\": \"\",\n                    \"type\": \"datasource\"\n                },\n                {\n                    \"allValue\": \".+\",\n                    \"current\": {\n                        \"selected\": true,\n                        \"text\": \"All\",\n                        \"value\": \"$__all\"\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": true,\n                    \"label\": \"job\",\n                    \"multi\": true,\n                    \"name\": \"job\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(prometheus_build_info{job=\\\"prometheus-k8s\\\",namespace=\\\"monitoring\\\"}, job)\",\n                    \"refresh\": 1,\n                    \"regex\": \"\",\n                    \"sort\": 2,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                },\n                {\n                    \"allValue\": \".+\",\n                    \"current\": {\n                        \"selected\": true,\n                        \"text\": \"All\",\n                        \"value\": \"$__all\"\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": true,\n                    \"label\": \"instance\",\n                    \"multi\": true,\n                    \"name\": \"instance\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(prometheus_build_info{job=~\\\"$job\\\"}, instance)\",\n                    \"refresh\": 1,\n                    \"regex\": \"\",\n                    \"sort\": 2,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                }\n            ]\n        },\n        \"time\": {\n            \"from\": \"now-1h\",\n            \"to\": \"now\"\n        },\n        \"timepicker\": {\n            \"refresh_intervals\": [\n                \"5s\",\n                \"10s\",\n                \"30s\",\n                \"1m\",\n                \"5m\",\n                \"15m\",\n                \"30m\",\n                \"1h\",\n                \"2h\",\n                \"1d\"\n            ],\n            \"time_options\": [\n                \"5m\",\n                \"15m\",\n                \"1h\",\n                \"6h\",\n                \"12h\",\n                \"24h\",\n                \"2d\",\n                \"7d\",\n                \"30d\"\n            ]\n        },\n        \"timezone\": \"utc\",\n        \"title\": \"Prometheus / Overview\",\n        \"uid\": \"\",\n        \"version\": 0\n    }\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 9.5.3\n  name: grafana-dashboard-prometheus\n  namespace: monitoring\n---\napiVersion: v1\ndata:\n  prometheus-remote-write.json: |-\n    {\n        \"__inputs\": [\n\n        ],\n        \"__requires\": [\n\n        ],\n        \"annotations\": {\n            \"list\": [\n\n            ]\n        },\n        \"editable\": true,\n        \"gnetId\": null,\n        \"graphTooltip\": 0,\n        \"hideControls\": false,\n        \"id\": null,\n        \"links\": [\n\n        ],\n        \"refresh\": \"60s\",\n        \"rows\": [\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 2,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"(\\n  prometheus_remote_storage_highest_timestamp_in_seconds{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"} \\n-  \\n  ignoring(remote_name, url) group_right(instance) (prometheus_remote_storage_queue_highest_sent_timestamp_seconds{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"} != 0)\\n)\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Highest Timestamp In vs. Highest Timestamp Sent\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 3,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"clamp_min(\\n  rate(prometheus_remote_storage_highest_timestamp_in_seconds{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}[5m])  \\n- \\n  ignoring (remote_name, url) group_right(instance) rate(prometheus_remote_storage_queue_highest_sent_timestamp_seconds{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}[5m])\\n, 0)\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Rate[5m]\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Timestamps\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 4,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"rate(\\n  prometheus_remote_storage_samples_in_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}[5m])\\n- \\n  ignoring(remote_name, url) group_right(instance) (rate(prometheus_remote_storage_succeeded_samples_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}[5m]) or rate(prometheus_remote_storage_samples_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}[5m]))\\n- \\n  (rate(prometheus_remote_storage_dropped_samples_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}[5m]) or rate(prometheus_remote_storage_samples_dropped_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}[5m]))\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Rate, in vs. succeeded or dropped [5m]\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Samples\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 5,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"minSpan\": 6,\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"prometheus_remote_storage_shards{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Current Shards\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 6,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 4,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"prometheus_remote_storage_shards_max{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Max Shards\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 7,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 4,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"prometheus_remote_storage_shards_min{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Min Shards\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 8,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 4,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"prometheus_remote_storage_shards_desired{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Desired Shards\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Shards\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 9,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"prometheus_remote_storage_shard_capacity{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Shard Capacity\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 10,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"prometheus_remote_storage_pending_samples{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"} or prometheus_remote_storage_samples_pending{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Pending Samples\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Shard Details\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 11,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"prometheus_tsdb_wal_segment_current{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{cluster}}:{{instance}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"TSDB Current Segment\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"none\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 12,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"prometheus_wal_watcher_current_segment{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{cluster}}:{{instance}} {{consumer}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Remote Write Current Segment\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"none\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Segments\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 13,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 3,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"rate(prometheus_remote_storage_dropped_samples_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}[5m]) or rate(prometheus_remote_storage_samples_dropped_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}[5m])\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Dropped Samples\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 14,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 3,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"rate(prometheus_remote_storage_failed_samples_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}[5m]) or rate(prometheus_remote_storage_samples_failed_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}[5m])\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Failed Samples\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 15,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 3,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"rate(prometheus_remote_storage_retried_samples_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}[5m]) or rate(prometheus_remote_storage_samples_retried_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}[5m])\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Retried Samples\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 16,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 3,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"rate(prometheus_remote_storage_enqueue_retries_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}[5m])\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Enqueue Retries\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Misc. Rates\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            }\n        ],\n        \"schemaVersion\": 14,\n        \"style\": \"dark\",\n        \"tags\": [\n            \"prometheus-mixin\"\n        ],\n        \"templating\": {\n            \"list\": [\n                {\n                    \"hide\": 0,\n                    \"label\": null,\n                    \"name\": \"datasource\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"prometheus\",\n                    \"refresh\": 1,\n                    \"regex\": \"\",\n                    \"type\": \"datasource\"\n                },\n                {\n                    \"allValue\": null,\n                    \"current\": {\n                        \"text\": {\n                            \"selected\": true,\n                            \"text\": \"All\",\n                            \"value\": \"$__all\"\n                        },\n                        \"value\": {\n                            \"selected\": true,\n                            \"text\": \"All\",\n                            \"value\": \"$__all\"\n                        }\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": true,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"cluster\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(kube_pod_container_info{image=~\\\".*prometheus.*\\\"}, cluster)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"sort\": 0,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                },\n                {\n                    \"allValue\": null,\n                    \"current\": {\n                        \"text\": {\n                            \"selected\": true,\n                            \"text\": \"All\",\n                            \"value\": \"$__all\"\n                        },\n                        \"value\": {\n                            \"selected\": true,\n                            \"text\": \"All\",\n                            \"value\": \"$__all\"\n                        }\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": true,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"instance\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(prometheus_build_info{cluster=~\\\"$cluster\\\"}, instance)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"sort\": 0,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                },\n                {\n                    \"allValue\": null,\n                    \"current\": {\n\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": true,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"url\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(prometheus_remote_storage_shards{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}, url)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"sort\": 0,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                }\n            ]\n        },\n        \"time\": {\n            \"from\": \"now-6h\",\n            \"to\": \"now\"\n        },\n        \"timepicker\": {\n            \"refresh_intervals\": [\n                \"5s\",\n                \"10s\",\n                \"30s\",\n                \"1m\",\n                \"5m\",\n                \"15m\",\n                \"30m\",\n                \"1h\",\n                \"2h\",\n                \"1d\"\n            ],\n            \"time_options\": [\n                \"5m\",\n                \"15m\",\n                \"1h\",\n                \"6h\",\n                \"12h\",\n                \"24h\",\n                \"2d\",\n                \"7d\",\n                \"30d\"\n            ]\n        },\n        \"timezone\": \"browser\",\n        \"title\": \"Prometheus / Remote Write\",\n        \"version\": 0\n    }\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 9.5.3\n  name: grafana-dashboard-prometheus-remote-write\n  namespace: monitoring\n---\napiVersion: v1\ndata:\n  proxy.json: |-\n    {\n        \"__inputs\": [\n\n        ],\n        \"__requires\": [\n\n        ],\n        \"annotations\": {\n            \"list\": [\n\n            ]\n        },\n        \"editable\": false,\n        \"gnetId\": null,\n        \"graphTooltip\": 0,\n        \"hideControls\": false,\n        \"id\": null,\n        \"links\": [\n\n        ],\n        \"refresh\": \"10s\",\n        \"rows\": [\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"cacheTimeout\": null,\n                        \"colorBackground\": false,\n                        \"colorValue\": false,\n                        \"colors\": [\n                            \"#299c46\",\n                            \"rgba(237, 129, 40, 0.89)\",\n                            \"#d44a3a\"\n                        ],\n                        \"datasource\": \"$datasource\",\n                        \"format\": \"none\",\n                        \"gauge\": {\n                            \"maxValue\": 100,\n                            \"minValue\": 0,\n                            \"show\": false,\n                            \"thresholdLabels\": false,\n                            \"thresholdMarkers\": true\n                        },\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 2,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"rightSide\": true\n                        },\n                        \"links\": [\n\n                        ],\n                        \"mappingType\": 1,\n                        \"mappingTypes\": [\n                            {\n                                \"name\": \"value to text\",\n                                \"value\": 1\n                            },\n                            {\n                                \"name\": \"range to text\",\n                                \"value\": 2\n                            }\n                        ],\n                        \"maxDataPoints\": 100,\n                        \"nullPointMode\": \"connected\",\n                        \"nullText\": null,\n                        \"postfix\": \"\",\n                        \"postfixFontSize\": \"50%\",\n                        \"prefix\": \"\",\n                        \"prefixFontSize\": \"50%\",\n                        \"rangeMaps\": [\n                            {\n                                \"from\": \"null\",\n                                \"text\": \"N/A\",\n                                \"to\": \"null\"\n                            }\n                        ],\n                        \"span\": 2,\n                        \"sparkline\": {\n                            \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n                            \"full\": false,\n                            \"lineColor\": \"rgb(31, 120, 193)\",\n                            \"show\": false\n                        },\n                        \"tableColumn\": \"\",\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(up{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\"})\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": \"\",\n                        \"title\": \"Up\",\n                        \"tooltip\": {\n                            \"shared\": false\n                        },\n                        \"type\": \"singlestat\",\n                        \"valueFontSize\": \"80%\",\n                        \"valueMaps\": [\n                            {\n                                \"op\": \"=\",\n                                \"text\": \"N/A\",\n                                \"value\": \"null\"\n                            }\n                        ],\n                        \"valueName\": \"min\"\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 3,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 5,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(rate(kubeproxy_sync_proxy_rules_duration_seconds_count{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\", instance=~\\\"$instance\\\"}[$__rate_interval]))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"rate\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Rules Sync Rate\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"ops\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"ops\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 4,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": true,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": true\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 5,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"histogram_quantile(0.99,rate(kubeproxy_sync_proxy_rules_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\", instance=~\\\"$instance\\\"}[$__rate_interval]))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{instance}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Rule Sync Latency 99th Quantile\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"s\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"s\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": false,\n                \"title\": \"Dashboard Row\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 5,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(rate(kubeproxy_network_programming_duration_seconds_count{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\", instance=~\\\"$instance\\\"}[$__rate_interval]))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"rate\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Network Programming Rate\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"ops\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"ops\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 6,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": true,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": true\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 6,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"histogram_quantile(0.99, sum(rate(kubeproxy_network_programming_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, le))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{instance}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Network Programming Latency 99th Quantile\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"s\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"s\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": false,\n                \"title\": \"Dashboard Row\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 7,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 4,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\", instance=~\\\"$instance\\\",code=~\\\"2..\\\"}[$__rate_interval]))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"2xx\",\n                                \"refId\": \"A\"\n                            },\n                            {\n                                \"expr\": \"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\", instance=~\\\"$instance\\\",code=~\\\"3..\\\"}[$__rate_interval]))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"3xx\",\n                                \"refId\": \"B\"\n                            },\n                            {\n                                \"expr\": \"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\", instance=~\\\"$instance\\\",code=~\\\"4..\\\"}[$__rate_interval]))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"4xx\",\n                                \"refId\": \"C\"\n                            },\n                            {\n                                \"expr\": \"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\", instance=~\\\"$instance\\\",code=~\\\"5..\\\"}[$__rate_interval]))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"5xx\",\n                                \"refId\": \"D\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Kube API Request Rate\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"ops\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"ops\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 8,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 8,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"histogram_quantile(0.99, sum(rate(rest_client_request_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\",instance=~\\\"$instance\\\",verb=\\\"POST\\\"}[$__rate_interval])) by (verb, url, le))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{verb}} {{url}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Post Request Latency 99th Quantile\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"s\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"s\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": false,\n                \"title\": \"Dashboard Row\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 9,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": true,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": true\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"histogram_quantile(0.99, sum(rate(rest_client_request_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\", instance=~\\\"$instance\\\", verb=\\\"GET\\\"}[$__rate_interval])) by (verb, url, le))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{verb}} {{url}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Get Request Latency 99th Quantile\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"s\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"s\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": false,\n                \"title\": \"Dashboard Row\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 10,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 4,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"process_resident_memory_bytes{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\",instance=~\\\"$instance\\\"}\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{instance}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Memory\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"bytes\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"bytes\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 11,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 4,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"rate(process_cpu_seconds_total{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\",instance=~\\\"$instance\\\"}[$__rate_interval])\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{instance}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"CPU usage\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 12,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 4,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"go_goroutines{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\",instance=~\\\"$instance\\\"}\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{instance}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Goroutines\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": false,\n                \"title\": \"Dashboard Row\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            }\n        ],\n        \"schemaVersion\": 14,\n        \"style\": \"dark\",\n        \"tags\": [\n            \"kubernetes-mixin\"\n        ],\n        \"templating\": {\n            \"list\": [\n                {\n                    \"current\": {\n                        \"text\": \"default\",\n                        \"value\": \"default\"\n                    },\n                    \"hide\": 0,\n                    \"label\": \"Data Source\",\n                    \"name\": \"datasource\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"prometheus\",\n                    \"refresh\": 1,\n                    \"regex\": \"\",\n                    \"type\": \"datasource\"\n                },\n                {\n                    \"allValue\": null,\n                    \"current\": {\n\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": false,\n                    \"label\": \"cluster\",\n                    \"multi\": false,\n                    \"name\": \"cluster\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(up{job=\\\"kube-proxy\\\"}, cluster)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                },\n                {\n                    \"allValue\": null,\n                    \"current\": {\n\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": true,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"instance\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(up{job=\\\"kube-proxy\\\", cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\"}, instance)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                }\n            ]\n        },\n        \"time\": {\n            \"from\": \"now-1h\",\n            \"to\": \"now\"\n        },\n        \"timepicker\": {\n            \"refresh_intervals\": [\n                \"5s\",\n                \"10s\",\n                \"30s\",\n                \"1m\",\n                \"5m\",\n                \"15m\",\n                \"30m\",\n                \"1h\",\n                \"2h\",\n                \"1d\"\n            ],\n            \"time_options\": [\n                \"5m\",\n                \"15m\",\n                \"1h\",\n                \"6h\",\n                \"12h\",\n                \"24h\",\n                \"2d\",\n                \"7d\",\n                \"30d\"\n            ]\n        },\n        \"timezone\": \"UTC\",\n        \"title\": \"Kubernetes / Proxy\",\n        \"uid\": \"632e265de029684c40b21cb76bca4f94\",\n        \"version\": 0\n    }\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 9.5.3\n  name: grafana-dashboard-proxy\n  namespace: monitoring\n---\napiVersion: v1\ndata:\n  scheduler.json: |-\n    {\n        \"__inputs\": [\n\n        ],\n        \"__requires\": [\n\n        ],\n        \"annotations\": {\n            \"list\": [\n\n            ]\n        },\n        \"editable\": false,\n        \"gnetId\": null,\n        \"graphTooltip\": 0,\n        \"hideControls\": false,\n        \"id\": null,\n        \"links\": [\n\n        ],\n        \"refresh\": \"10s\",\n        \"rows\": [\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"cacheTimeout\": null,\n                        \"colorBackground\": false,\n                        \"colorValue\": false,\n                        \"colors\": [\n                            \"#299c46\",\n                            \"rgba(237, 129, 40, 0.89)\",\n                            \"#d44a3a\"\n                        ],\n                        \"datasource\": \"$datasource\",\n                        \"format\": \"none\",\n                        \"gauge\": {\n                            \"maxValue\": 100,\n                            \"minValue\": 0,\n                            \"show\": false,\n                            \"thresholdLabels\": false,\n                            \"thresholdMarkers\": true\n                        },\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 2,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"rightSide\": true\n                        },\n                        \"links\": [\n\n                        ],\n                        \"mappingType\": 1,\n                        \"mappingTypes\": [\n                            {\n                                \"name\": \"value to text\",\n                                \"value\": 1\n                            },\n                            {\n                                \"name\": \"range to text\",\n                                \"value\": 2\n                            }\n                        ],\n                        \"maxDataPoints\": 100,\n                        \"nullPointMode\": \"connected\",\n                        \"nullText\": null,\n                        \"postfix\": \"\",\n                        \"postfixFontSize\": \"50%\",\n                        \"prefix\": \"\",\n                        \"prefixFontSize\": \"50%\",\n                        \"rangeMaps\": [\n                            {\n                                \"from\": \"null\",\n                                \"text\": \"N/A\",\n                                \"to\": \"null\"\n                            }\n                        ],\n                        \"span\": 2,\n                        \"sparkline\": {\n                            \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n                            \"full\": false,\n                            \"lineColor\": \"rgb(31, 120, 193)\",\n                            \"show\": false\n                        },\n                        \"tableColumn\": \"\",\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(up{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\"})\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": \"\",\n                        \"title\": \"Up\",\n                        \"tooltip\": {\n                            \"shared\": false\n                        },\n                        \"type\": \"singlestat\",\n                        \"valueFontSize\": \"80%\",\n                        \"valueMaps\": [\n                            {\n                                \"op\": \"=\",\n                                \"text\": \"N/A\",\n                                \"value\": \"null\"\n                            }\n                        ],\n                        \"valueName\": \"min\"\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 3,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": true,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": true\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 5,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(rate(scheduler_e2e_scheduling_duration_seconds_count{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (cluster, instance)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{cluster}} {{instance}} e2e\",\n                                \"refId\": \"A\"\n                            },\n                            {\n                                \"expr\": \"sum(rate(scheduler_binding_duration_seconds_count{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (cluster, instance)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{cluster}} {{instance}} binding\",\n                                \"refId\": \"B\"\n                            },\n                            {\n                                \"expr\": \"sum(rate(scheduler_scheduling_algorithm_duration_seconds_count{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (cluster, instance)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{cluster}} {{instance}} scheduling algorithm\",\n                                \"refId\": \"C\"\n                            },\n                            {\n                                \"expr\": \"sum(rate(scheduler_volume_scheduling_duration_seconds_count{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (cluster, instance)\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{cluster}} {{instance}} volume\",\n                                \"refId\": \"D\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Scheduling Rate\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"ops\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"ops\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 4,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": true,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": true\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 5,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"histogram_quantile(0.99, sum(rate(scheduler_e2e_scheduling_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (cluster, instance, le))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{cluster}} {{instance}} e2e\",\n                                \"refId\": \"A\"\n                            },\n                            {\n                                \"expr\": \"histogram_quantile(0.99, sum(rate(scheduler_binding_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (cluster, instance, le))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{cluster}} {{instance}} binding\",\n                                \"refId\": \"B\"\n                            },\n                            {\n                                \"expr\": \"histogram_quantile(0.99, sum(rate(scheduler_scheduling_algorithm_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (cluster, instance, le))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{cluster}} {{instance}} scheduling algorithm\",\n                                \"refId\": \"C\"\n                            },\n                            {\n                                \"expr\": \"histogram_quantile(0.99, sum(rate(scheduler_volume_scheduling_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (cluster, instance, le))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{cluster}} {{instance}} volume\",\n                                \"refId\": \"D\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Scheduling latency 99th Quantile\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"s\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"s\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": false,\n                \"title\": \"Dashboard Row\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 5,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 4,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\",code=~\\\"2..\\\"}[$__rate_interval]))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"2xx\",\n                                \"refId\": \"A\"\n                            },\n                            {\n                                \"expr\": \"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\",code=~\\\"3..\\\"}[$__rate_interval]))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"3xx\",\n                                \"refId\": \"B\"\n                            },\n                            {\n                                \"expr\": \"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\",code=~\\\"4..\\\"}[$__rate_interval]))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"4xx\",\n                                \"refId\": \"C\"\n                            },\n                            {\n                                \"expr\": \"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\",code=~\\\"5..\\\"}[$__rate_interval]))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"5xx\",\n                                \"refId\": \"D\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Kube API Request Rate\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"ops\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"ops\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 6,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 8,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"histogram_quantile(0.99, sum(rate(rest_client_request_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\", verb=\\\"POST\\\"}[$__rate_interval])) by (verb, url, le))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{verb}} {{url}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Post Request Latency 99th Quantile\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"s\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"s\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": false,\n                \"title\": \"Dashboard Row\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 7,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": true,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": true\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"histogram_quantile(0.99, sum(rate(rest_client_request_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\", verb=\\\"GET\\\"}[$__rate_interval])) by (verb, url, le))\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{verb}} {{url}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Get Request Latency 99th Quantile\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"s\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"s\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": false,\n                \"title\": \"Dashboard Row\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 8,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 4,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"process_resident_memory_bytes{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\"}\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{instance}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Memory\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"bytes\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"bytes\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 9,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 4,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"rate(process_cpu_seconds_total{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\"}[$__rate_interval])\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{instance}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"CPU usage\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"bytes\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"bytes\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 1,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n\n                        },\n                        \"id\": 10,\n                        \"interval\": \"1m\",\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"nullPointMode\": \"null\",\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 4,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"go_goroutines{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\",instance=~\\\"$instance\\\"}\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 2,\n                                \"legendFormat\": \"{{instance}}\",\n                                \"refId\": \"A\"\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Goroutines\",\n                        \"tooltip\": {\n                            \"shared\": false,\n                            \"sort\": 0,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"short\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": null,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": false,\n                \"title\": \"Dashboard Row\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            }\n        ],\n        \"schemaVersion\": 14,\n        \"style\": \"dark\",\n        \"tags\": [\n            \"kubernetes-mixin\"\n        ],\n        \"templating\": {\n            \"list\": [\n                {\n                    \"current\": {\n                        \"text\": \"default\",\n                        \"value\": \"default\"\n                    },\n                    \"hide\": 0,\n                    \"label\": \"Data Source\",\n                    \"name\": \"datasource\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"prometheus\",\n                    \"refresh\": 1,\n                    \"regex\": \"\",\n                    \"type\": \"datasource\"\n                },\n                {\n                    \"allValue\": null,\n                    \"current\": {\n\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": false,\n                    \"label\": \"cluster\",\n                    \"multi\": false,\n                    \"name\": \"cluster\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(up{job=\\\"kube-scheduler\\\"}, cluster)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                },\n                {\n                    \"allValue\": null,\n                    \"current\": {\n\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": true,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"instance\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(up{job=\\\"kube-scheduler\\\", cluster=\\\"$cluster\\\"}, instance)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                }\n            ]\n        },\n        \"time\": {\n            \"from\": \"now-1h\",\n            \"to\": \"now\"\n        },\n        \"timepicker\": {\n            \"refresh_intervals\": [\n                \"5s\",\n                \"10s\",\n                \"30s\",\n                \"1m\",\n                \"5m\",\n                \"15m\",\n                \"30m\",\n                \"1h\",\n                \"2h\",\n                \"1d\"\n            ],\n            \"time_options\": [\n                \"5m\",\n                \"15m\",\n                \"1h\",\n                \"6h\",\n                \"12h\",\n                \"24h\",\n                \"2d\",\n                \"7d\",\n                \"30d\"\n            ]\n        },\n        \"timezone\": \"UTC\",\n        \"title\": \"Kubernetes / Scheduler\",\n        \"uid\": \"2e6b6a3b4bddf1427b3a55aa1311c656\",\n        \"version\": 0\n    }\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 9.5.3\n  name: grafana-dashboard-scheduler\n  namespace: monitoring\n---\napiVersion: v1\ndata:\n  workload-total.json: |-\n    {\n        \"__inputs\": [\n\n        ],\n        \"__requires\": [\n\n        ],\n        \"annotations\": {\n            \"list\": [\n                {\n                    \"builtIn\": 1,\n                    \"datasource\": \"-- Grafana --\",\n                    \"enable\": true,\n                    \"hide\": true,\n                    \"iconColor\": \"rgba(0, 211, 255, 1)\",\n                    \"name\": \"Annotations & Alerts\",\n                    \"type\": \"dashboard\"\n                }\n            ]\n        },\n        \"editable\": true,\n        \"gnetId\": null,\n        \"graphTooltip\": 0,\n        \"hideControls\": false,\n        \"id\": null,\n        \"links\": [\n\n        ],\n        \"panels\": [\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"gridPos\": {\n                    \"h\": 1,\n                    \"w\": 24,\n                    \"x\": 0,\n                    \"y\": 0\n                },\n                \"id\": 2,\n                \"panels\": [\n\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Current Bandwidth\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"aliasColors\": {\n\n                },\n                \"bars\": true,\n                \"dashLength\": 10,\n                \"dashes\": false,\n                \"datasource\": \"$datasource\",\n                \"fill\": 2,\n                \"fillGradient\": 0,\n                \"gridPos\": {\n                    \"h\": 9,\n                    \"w\": 12,\n                    \"x\": 0,\n                    \"y\": 1\n                },\n                \"id\": 3,\n                \"legend\": {\n                    \"alignAsTable\": true,\n                    \"avg\": false,\n                    \"current\": true,\n                    \"hideEmpty\": true,\n                    \"hideZero\": true,\n                    \"max\": false,\n                    \"min\": false,\n                    \"rightSide\": true,\n                    \"show\": true,\n                    \"sideWidth\": null,\n                    \"sort\": \"current\",\n                    \"sortDesc\": true,\n                    \"total\": false,\n                    \"values\": true\n                },\n                \"lines\": false,\n                \"linewidth\": 1,\n                \"links\": [\n\n                ],\n                \"minSpan\": 24,\n                \"nullPointMode\": \"null\",\n                \"paceLength\": 10,\n                \"percentage\": false,\n                \"pointradius\": 5,\n                \"points\": false,\n                \"renderer\": \"flot\",\n                \"repeat\": null,\n                \"seriesOverrides\": [\n\n                ],\n                \"spaceLength\": 10,\n                \"span\": 24,\n                \"stack\": false,\n                \"steppedLine\": false,\n                \"targets\": [\n                    {\n                        \"expr\": \"sort_desc(sum(irate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                        \"format\": \"time_series\",\n                        \"intervalFactor\": 1,\n                        \"legendFormat\": \"{{ pod }}\",\n                        \"refId\": \"A\",\n                        \"step\": 10\n                    }\n                ],\n                \"thresholds\": [\n\n                ],\n                \"timeFrom\": null,\n                \"timeShift\": null,\n                \"title\": \"Current Rate of Bytes Received\",\n                \"tooltip\": {\n                    \"shared\": true,\n                    \"sort\": 2,\n                    \"value_type\": \"individual\"\n                },\n                \"type\": \"graph\",\n                \"xaxis\": {\n                    \"buckets\": null,\n                    \"mode\": \"series\",\n                    \"name\": null,\n                    \"show\": false,\n                    \"values\": [\n                        \"current\"\n                    ]\n                },\n                \"yaxes\": [\n                    {\n                        \"format\": \"Bps\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": 0,\n                        \"show\": true\n                    },\n                    {\n                        \"format\": \"Bps\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": 0,\n                        \"show\": true\n                    }\n                ]\n            },\n            {\n                \"aliasColors\": {\n\n                },\n                \"bars\": true,\n                \"dashLength\": 10,\n                \"dashes\": false,\n                \"datasource\": \"$datasource\",\n                \"fill\": 2,\n                \"fillGradient\": 0,\n                \"gridPos\": {\n                    \"h\": 9,\n                    \"w\": 12,\n                    \"x\": 12,\n                    \"y\": 1\n                },\n                \"id\": 4,\n                \"legend\": {\n                    \"alignAsTable\": true,\n                    \"avg\": false,\n                    \"current\": true,\n                    \"hideEmpty\": true,\n                    \"hideZero\": true,\n                    \"max\": false,\n                    \"min\": false,\n                    \"rightSide\": true,\n                    \"show\": true,\n                    \"sideWidth\": null,\n                    \"sort\": \"current\",\n                    \"sortDesc\": true,\n                    \"total\": false,\n                    \"values\": true\n                },\n                \"lines\": false,\n                \"linewidth\": 1,\n                \"links\": [\n\n                ],\n                \"minSpan\": 24,\n                \"nullPointMode\": \"null\",\n                \"paceLength\": 10,\n                \"percentage\": false,\n                \"pointradius\": 5,\n                \"points\": false,\n                \"renderer\": \"flot\",\n                \"repeat\": null,\n                \"seriesOverrides\": [\n\n                ],\n                \"spaceLength\": 10,\n                \"span\": 24,\n                \"stack\": false,\n                \"steppedLine\": false,\n                \"targets\": [\n                    {\n                        \"expr\": \"sort_desc(sum(irate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                        \"format\": \"time_series\",\n                        \"intervalFactor\": 1,\n                        \"legendFormat\": \"{{ pod }}\",\n                        \"refId\": \"A\",\n                        \"step\": 10\n                    }\n                ],\n                \"thresholds\": [\n\n                ],\n                \"timeFrom\": null,\n                \"timeShift\": null,\n                \"title\": \"Current Rate of Bytes Transmitted\",\n                \"tooltip\": {\n                    \"shared\": true,\n                    \"sort\": 2,\n                    \"value_type\": \"individual\"\n                },\n                \"type\": \"graph\",\n                \"xaxis\": {\n                    \"buckets\": null,\n                    \"mode\": \"series\",\n                    \"name\": null,\n                    \"show\": false,\n                    \"values\": [\n                        \"current\"\n                    ]\n                },\n                \"yaxes\": [\n                    {\n                        \"format\": \"Bps\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": 0,\n                        \"show\": true\n                    },\n                    {\n                        \"format\": \"Bps\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": 0,\n                        \"show\": true\n                    }\n                ]\n            },\n            {\n                \"collapse\": true,\n                \"collapsed\": true,\n                \"gridPos\": {\n                    \"h\": 1,\n                    \"w\": 24,\n                    \"x\": 0,\n                    \"y\": 10\n                },\n                \"id\": 5,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": true,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 2,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n                            \"h\": 9,\n                            \"w\": 12,\n                            \"x\": 0,\n                            \"y\": 11\n                        },\n                        \"id\": 6,\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": true,\n                            \"hideEmpty\": true,\n                            \"hideZero\": true,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"sort\": \"current\",\n                            \"sortDesc\": true,\n                            \"total\": false,\n                            \"values\": true\n                        },\n                        \"lines\": false,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"minSpan\": 24,\n                        \"nullPointMode\": \"null\",\n                        \"paceLength\": 10,\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 24,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sort_desc(avg(irate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 1,\n                                \"legendFormat\": \"{{ pod }}\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Average Rate of Bytes Received\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"series\",\n                            \"name\": null,\n                            \"show\": false,\n                            \"values\": [\n                                \"current\"\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"Bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"Bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": true,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 2,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n                            \"h\": 9,\n                            \"w\": 12,\n                            \"x\": 12,\n                            \"y\": 11\n                        },\n                        \"id\": 7,\n                        \"legend\": {\n                            \"alignAsTable\": true,\n                            \"avg\": false,\n                            \"current\": true,\n                            \"hideEmpty\": true,\n                            \"hideZero\": true,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": true,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"sort\": \"current\",\n                            \"sortDesc\": true,\n                            \"total\": false,\n                            \"values\": true\n                        },\n                        \"lines\": false,\n                        \"linewidth\": 1,\n                        \"links\": [\n\n                        ],\n                        \"minSpan\": 24,\n                        \"nullPointMode\": \"null\",\n                        \"paceLength\": 10,\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 24,\n                        \"stack\": false,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sort_desc(avg(irate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 1,\n                                \"legendFormat\": \"{{ pod }}\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Average Rate of Bytes Transmitted\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"series\",\n                            \"name\": null,\n                            \"show\": false,\n                            \"values\": [\n                                \"current\"\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"Bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"Bps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Average Bandwidth\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"collapse\": false,\n                \"collapsed\": false,\n                \"gridPos\": {\n                    \"h\": 1,\n                    \"w\": 24,\n                    \"x\": 0,\n                    \"y\": 11\n                },\n                \"id\": 8,\n                \"panels\": [\n\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Bandwidth HIstory\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"aliasColors\": {\n\n                },\n                \"bars\": false,\n                \"dashLength\": 10,\n                \"dashes\": false,\n                \"datasource\": \"$datasource\",\n                \"fill\": 2,\n                \"fillGradient\": 0,\n                \"gridPos\": {\n                    \"h\": 9,\n                    \"w\": 12,\n                    \"x\": 0,\n                    \"y\": 12\n                },\n                \"id\": 9,\n                \"legend\": {\n                    \"alignAsTable\": false,\n                    \"avg\": false,\n                    \"current\": false,\n                    \"hideEmpty\": true,\n                    \"hideZero\": true,\n                    \"max\": false,\n                    \"min\": false,\n                    \"rightSide\": false,\n                    \"show\": true,\n                    \"sideWidth\": null,\n                    \"total\": false,\n                    \"values\": false\n                },\n                \"lines\": true,\n                \"linewidth\": 2,\n                \"links\": [\n\n                ],\n                \"minSpan\": 12,\n                \"nullPointMode\": \"connected\",\n                \"paceLength\": 10,\n                \"percentage\": false,\n                \"pointradius\": 5,\n                \"points\": false,\n                \"renderer\": \"flot\",\n                \"repeat\": null,\n                \"seriesOverrides\": [\n\n                ],\n                \"spaceLength\": 10,\n                \"span\": 12,\n                \"stack\": true,\n                \"steppedLine\": false,\n                \"targets\": [\n                    {\n                        \"expr\": \"sort_desc(sum(irate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                        \"format\": \"time_series\",\n                        \"intervalFactor\": 1,\n                        \"legendFormat\": \"{{pod}}\",\n                        \"refId\": \"A\",\n                        \"step\": 10\n                    }\n                ],\n                \"thresholds\": [\n\n                ],\n                \"timeFrom\": null,\n                \"timeShift\": null,\n                \"title\": \"Receive Bandwidth\",\n                \"tooltip\": {\n                    \"shared\": true,\n                    \"sort\": 2,\n                    \"value_type\": \"individual\"\n                },\n                \"type\": \"graph\",\n                \"xaxis\": {\n                    \"buckets\": null,\n                    \"mode\": \"time\",\n                    \"name\": null,\n                    \"show\": true,\n                    \"values\": [\n\n                    ]\n                },\n                \"yaxes\": [\n                    {\n                        \"format\": \"Bps\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": 0,\n                        \"show\": true\n                    },\n                    {\n                        \"format\": \"Bps\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": 0,\n                        \"show\": true\n                    }\n                ]\n            },\n            {\n                \"aliasColors\": {\n\n                },\n                \"bars\": false,\n                \"dashLength\": 10,\n                \"dashes\": false,\n                \"datasource\": \"$datasource\",\n                \"fill\": 2,\n                \"fillGradient\": 0,\n                \"gridPos\": {\n                    \"h\": 9,\n                    \"w\": 12,\n                    \"x\": 12,\n                    \"y\": 12\n                },\n                \"id\": 10,\n                \"legend\": {\n                    \"alignAsTable\": false,\n                    \"avg\": false,\n                    \"current\": false,\n                    \"hideEmpty\": true,\n                    \"hideZero\": true,\n                    \"max\": false,\n                    \"min\": false,\n                    \"rightSide\": false,\n                    \"show\": true,\n                    \"sideWidth\": null,\n                    \"total\": false,\n                    \"values\": false\n                },\n                \"lines\": true,\n                \"linewidth\": 2,\n                \"links\": [\n\n                ],\n                \"minSpan\": 12,\n                \"nullPointMode\": \"connected\",\n                \"paceLength\": 10,\n                \"percentage\": false,\n                \"pointradius\": 5,\n                \"points\": false,\n                \"renderer\": \"flot\",\n                \"repeat\": null,\n                \"seriesOverrides\": [\n\n                ],\n                \"spaceLength\": 10,\n                \"span\": 12,\n                \"stack\": true,\n                \"steppedLine\": false,\n                \"targets\": [\n                    {\n                        \"expr\": \"sort_desc(sum(irate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                        \"format\": \"time_series\",\n                        \"intervalFactor\": 1,\n                        \"legendFormat\": \"{{pod}}\",\n                        \"refId\": \"A\",\n                        \"step\": 10\n                    }\n                ],\n                \"thresholds\": [\n\n                ],\n                \"timeFrom\": null,\n                \"timeShift\": null,\n                \"title\": \"Transmit Bandwidth\",\n                \"tooltip\": {\n                    \"shared\": true,\n                    \"sort\": 2,\n                    \"value_type\": \"individual\"\n                },\n                \"type\": \"graph\",\n                \"xaxis\": {\n                    \"buckets\": null,\n                    \"mode\": \"time\",\n                    \"name\": null,\n                    \"show\": true,\n                    \"values\": [\n\n                    ]\n                },\n                \"yaxes\": [\n                    {\n                        \"format\": \"Bps\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": 0,\n                        \"show\": true\n                    },\n                    {\n                        \"format\": \"Bps\",\n                        \"label\": null,\n                        \"logBase\": 1,\n                        \"max\": null,\n                        \"min\": 0,\n                        \"show\": true\n                    }\n                ]\n            },\n            {\n                \"collapse\": true,\n                \"collapsed\": true,\n                \"gridPos\": {\n                    \"h\": 1,\n                    \"w\": 24,\n                    \"x\": 0,\n                    \"y\": 21\n                },\n                \"id\": 11,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 2,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n                            \"h\": 9,\n                            \"w\": 12,\n                            \"x\": 0,\n                            \"y\": 22\n                        },\n                        \"id\": 12,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"hideEmpty\": true,\n                            \"hideZero\": true,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 2,\n                        \"links\": [\n\n                        ],\n                        \"minSpan\": 12,\n                        \"nullPointMode\": \"connected\",\n                        \"paceLength\": 10,\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sort_desc(sum(irate(container_network_receive_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 1,\n                                \"legendFormat\": \"{{pod}}\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Rate of Received Packets\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 2,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n                            \"h\": 9,\n                            \"w\": 12,\n                            \"x\": 12,\n                            \"y\": 22\n                        },\n                        \"id\": 13,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"hideEmpty\": true,\n                            \"hideZero\": true,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 2,\n                        \"links\": [\n\n                        ],\n                        \"minSpan\": 12,\n                        \"nullPointMode\": \"connected\",\n                        \"paceLength\": 10,\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sort_desc(sum(irate(container_network_transmit_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 1,\n                                \"legendFormat\": \"{{pod}}\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Rate of Transmitted Packets\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Packets\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            },\n            {\n                \"collapse\": true,\n                \"collapsed\": true,\n                \"gridPos\": {\n                    \"h\": 1,\n                    \"w\": 24,\n                    \"x\": 0,\n                    \"y\": 22\n                },\n                \"id\": 14,\n                \"panels\": [\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 2,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n                            \"h\": 9,\n                            \"w\": 12,\n                            \"x\": 0,\n                            \"y\": 23\n                        },\n                        \"id\": 15,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"hideEmpty\": true,\n                            \"hideZero\": true,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 2,\n                        \"links\": [\n\n                        ],\n                        \"minSpan\": 12,\n                        \"nullPointMode\": \"connected\",\n                        \"paceLength\": 10,\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sort_desc(sum(irate(container_network_receive_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 1,\n                                \"legendFormat\": \"{{pod}}\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Rate of Received Packets Dropped\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    },\n                    {\n                        \"aliasColors\": {\n\n                        },\n                        \"bars\": false,\n                        \"dashLength\": 10,\n                        \"dashes\": false,\n                        \"datasource\": \"$datasource\",\n                        \"fill\": 2,\n                        \"fillGradient\": 0,\n                        \"gridPos\": {\n                            \"h\": 9,\n                            \"w\": 12,\n                            \"x\": 12,\n                            \"y\": 23\n                        },\n                        \"id\": 16,\n                        \"legend\": {\n                            \"alignAsTable\": false,\n                            \"avg\": false,\n                            \"current\": false,\n                            \"hideEmpty\": true,\n                            \"hideZero\": true,\n                            \"max\": false,\n                            \"min\": false,\n                            \"rightSide\": false,\n                            \"show\": true,\n                            \"sideWidth\": null,\n                            \"total\": false,\n                            \"values\": false\n                        },\n                        \"lines\": true,\n                        \"linewidth\": 2,\n                        \"links\": [\n\n                        ],\n                        \"minSpan\": 12,\n                        \"nullPointMode\": \"connected\",\n                        \"paceLength\": 10,\n                        \"percentage\": false,\n                        \"pointradius\": 5,\n                        \"points\": false,\n                        \"renderer\": \"flot\",\n                        \"repeat\": null,\n                        \"seriesOverrides\": [\n\n                        ],\n                        \"spaceLength\": 10,\n                        \"span\": 12,\n                        \"stack\": true,\n                        \"steppedLine\": false,\n                        \"targets\": [\n                            {\n                                \"expr\": \"sort_desc(sum(irate(container_network_transmit_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                                \"format\": \"time_series\",\n                                \"intervalFactor\": 1,\n                                \"legendFormat\": \"{{pod}}\",\n                                \"refId\": \"A\",\n                                \"step\": 10\n                            }\n                        ],\n                        \"thresholds\": [\n\n                        ],\n                        \"timeFrom\": null,\n                        \"timeShift\": null,\n                        \"title\": \"Rate of Transmitted Packets Dropped\",\n                        \"tooltip\": {\n                            \"shared\": true,\n                            \"sort\": 2,\n                            \"value_type\": \"individual\"\n                        },\n                        \"type\": \"graph\",\n                        \"xaxis\": {\n                            \"buckets\": null,\n                            \"mode\": \"time\",\n                            \"name\": null,\n                            \"show\": true,\n                            \"values\": [\n\n                            ]\n                        },\n                        \"yaxes\": [\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            },\n                            {\n                                \"format\": \"pps\",\n                                \"label\": null,\n                                \"logBase\": 1,\n                                \"max\": null,\n                                \"min\": 0,\n                                \"show\": true\n                            }\n                        ]\n                    }\n                ],\n                \"repeat\": null,\n                \"repeatIteration\": null,\n                \"repeatRowId\": null,\n                \"showTitle\": true,\n                \"title\": \"Errors\",\n                \"titleSize\": \"h6\",\n                \"type\": \"row\"\n            }\n        ],\n        \"refresh\": \"10s\",\n        \"rows\": [\n\n        ],\n        \"schemaVersion\": 18,\n        \"style\": \"dark\",\n        \"tags\": [\n            \"kubernetes-mixin\"\n        ],\n        \"templating\": {\n            \"list\": [\n                {\n                    \"current\": {\n                        \"text\": \"default\",\n                        \"value\": \"default\"\n                    },\n                    \"hide\": 0,\n                    \"label\": \"Data Source\",\n                    \"name\": \"datasource\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"prometheus\",\n                    \"refresh\": 1,\n                    \"regex\": \"\",\n                    \"type\": \"datasource\"\n                },\n                {\n                    \"allValue\": null,\n                    \"current\": {\n\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": false,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"cluster\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(kube_pod_info{job=\\\"kube-state-metrics\\\"}, cluster)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"sort\": 0,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                },\n                {\n                    \"allValue\": \".+\",\n                    \"auto\": false,\n                    \"auto_count\": 30,\n                    \"auto_min\": \"10s\",\n                    \"current\": {\n                        \"text\": \"kube-system\",\n                        \"value\": \"kube-system\"\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"definition\": \"label_values(container_network_receive_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\"}, namespace)\",\n                    \"hide\": 0,\n                    \"includeAll\": true,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"namespace\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(container_network_receive_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\"}, namespace)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"skipUrlSync\": false,\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                },\n                {\n                    \"allValue\": null,\n                    \"auto\": false,\n                    \"auto_count\": 30,\n                    \"auto_min\": \"10s\",\n                    \"current\": {\n                        \"text\": \"\",\n                        \"value\": \"\"\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"definition\": \"label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}, workload)\",\n                    \"hide\": 0,\n                    \"includeAll\": false,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"workload\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}, workload)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"skipUrlSync\": false,\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                },\n                {\n                    \"allValue\": null,\n                    \"auto\": false,\n                    \"auto_count\": 30,\n                    \"auto_min\": \"10s\",\n                    \"current\": {\n                        \"text\": \"deployment\",\n                        \"value\": \"deployment\"\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"definition\": \"label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\"}, workload_type)\",\n                    \"hide\": 0,\n                    \"includeAll\": false,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"type\",\n                    \"options\": [\n\n                    ],\n                    \"query\": \"label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\"}, workload_type)\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"skipUrlSync\": false,\n                    \"sort\": 0,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"query\",\n                    \"useTags\": false\n                },\n                {\n                    \"allValue\": null,\n                    \"auto\": false,\n                    \"auto_count\": 30,\n                    \"auto_min\": \"10s\",\n                    \"current\": {\n                        \"text\": \"5m\",\n                        \"value\": \"5m\"\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 0,\n                    \"includeAll\": false,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"resolution\",\n                    \"options\": [\n                        {\n                            \"selected\": false,\n                            \"text\": \"30s\",\n                            \"value\": \"30s\"\n                        },\n                        {\n                            \"selected\": true,\n                            \"text\": \"5m\",\n                            \"value\": \"5m\"\n                        },\n                        {\n                            \"selected\": false,\n                            \"text\": \"1h\",\n                            \"value\": \"1h\"\n                        }\n                    ],\n                    \"query\": \"30s,5m,1h\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"skipUrlSync\": false,\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"interval\",\n                    \"useTags\": false\n                },\n                {\n                    \"allValue\": null,\n                    \"auto\": false,\n                    \"auto_count\": 30,\n                    \"auto_min\": \"10s\",\n                    \"current\": {\n                        \"text\": \"5m\",\n                        \"value\": \"5m\"\n                    },\n                    \"datasource\": \"$datasource\",\n                    \"hide\": 2,\n                    \"includeAll\": false,\n                    \"label\": null,\n                    \"multi\": false,\n                    \"name\": \"interval\",\n                    \"options\": [\n                        {\n                            \"selected\": true,\n                            \"text\": \"4h\",\n                            \"value\": \"4h\"\n                        }\n                    ],\n                    \"query\": \"4h\",\n                    \"refresh\": 2,\n                    \"regex\": \"\",\n                    \"skipUrlSync\": false,\n                    \"sort\": 1,\n                    \"tagValuesQuery\": \"\",\n                    \"tags\": [\n\n                    ],\n                    \"tagsQuery\": \"\",\n                    \"type\": \"interval\",\n                    \"useTags\": false\n                }\n            ]\n        },\n        \"time\": {\n            \"from\": \"now-1h\",\n            \"to\": \"now\"\n        },\n        \"timepicker\": {\n            \"refresh_intervals\": [\n                \"5s\",\n                \"10s\",\n                \"30s\",\n                \"1m\",\n                \"5m\",\n                \"15m\",\n                \"30m\",\n                \"1h\",\n                \"2h\",\n                \"1d\"\n            ],\n            \"time_options\": [\n                \"5m\",\n                \"15m\",\n                \"1h\",\n                \"6h\",\n                \"12h\",\n                \"24h\",\n                \"2d\",\n                \"7d\",\n                \"30d\"\n            ]\n        },\n        \"timezone\": \"UTC\",\n        \"title\": \"Kubernetes / Networking / Workload\",\n        \"uid\": \"728bf77cc1166d2f3133bf25846876cc\",\n        \"version\": 0\n    }\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 9.5.3\n  name: grafana-dashboard-workload-total\n  namespace: monitoring\n---\napiVersion: v1\ndata:\n  dashboards.yaml: |-\n    {\n        \"apiVersion\": 1,\n        \"providers\": [\n            {\n                \"folder\": \"Default\",\n                \"folderUid\": \"\",\n                \"name\": \"0\",\n                \"options\": {\n                    \"path\": \"/grafana-dashboard-definitions/0\"\n                },\n                \"orgId\": 1,\n                \"type\": \"file\"\n            }\n        ]\n    }\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 9.5.3\n  name: grafana-dashboards\n  namespace: monitoring\n---\napiVersion: v1\nkind: Secret\nmetadata:\n  labels:\n    app.kubernetes.io/component: alert-router\n    app.kubernetes.io/instance: main\n    app.kubernetes.io/name: alertmanager\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.25.0\n  name: alertmanager-main\n  namespace: monitoring\nstringData:\n  alertmanager.yaml: |-\n    \"global\":\n      \"resolve_timeout\": \"5m\"\n    \"inhibit_rules\":\n    - \"equal\":\n      - \"namespace\"\n      - \"alertname\"\n      \"source_matchers\":\n      - \"severity = critical\"\n      \"target_matchers\":\n      - \"severity =~ warning|info\"\n    - \"equal\":\n      - \"namespace\"\n      - \"alertname\"\n      \"source_matchers\":\n      - \"severity = warning\"\n      \"target_matchers\":\n      - \"severity = info\"\n    - \"equal\":\n      - \"namespace\"\n      \"source_matchers\":\n      - \"alertname = InfoInhibitor\"\n      \"target_matchers\":\n      - \"severity = info\"\n    \"receivers\":\n    - \"name\": \"Default\"\n    - \"name\": \"Watchdog\"\n    - \"name\": \"Critical\"\n    - \"name\": \"null\"\n    \"route\":\n      \"group_by\":\n      - \"namespace\"\n      \"group_interval\": \"5m\"\n      \"group_wait\": \"30s\"\n      \"receiver\": \"Default\"\n      \"repeat_interval\": \"12h\"\n      \"routes\":\n      - \"matchers\":\n        - \"alertname = Watchdog\"\n        \"receiver\": \"Watchdog\"\n      - \"matchers\":\n        - \"alertname = InfoInhibitor\"\n        \"receiver\": \"null\"\n      - \"matchers\":\n        - \"severity = critical\"\n        \"receiver\": \"Critical\"\ntype: Opaque\n---\napiVersion: v1\nkind: Secret\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 9.5.3\n  name: grafana-config\n  namespace: monitoring\nstringData:\n  grafana.ini: |\n    [date_formats]\n    default_timezone = UTC\ntype: Opaque\n---\napiVersion: v1\nkind: Secret\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 9.5.3\n  name: grafana-datasources\n  namespace: monitoring\nstringData:\n  datasources.yaml: |-\n    {\n        \"apiVersion\": 1,\n        \"datasources\": [\n            {\n                \"access\": \"proxy\",\n                \"editable\": false,\n                \"name\": \"prometheus\",\n                \"orgId\": 1,\n                \"type\": \"prometheus\",\n                \"url\": \"http://prometheus-k8s.monitoring.svc:9090\",\n                \"version\": 1\n            }\n        ]\n    }\ntype: Opaque\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: alert-router\n    app.kubernetes.io/instance: main\n    app.kubernetes.io/name: alertmanager\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.25.0\n  name: alertmanager-main\n  namespace: monitoring\nspec:\n  ports:\n  - name: web\n    port: 9093\n    targetPort: web\n  - name: reloader-web\n    port: 8080\n    targetPort: reloader-web\n  selector:\n    app.kubernetes.io/component: alert-router\n    app.kubernetes.io/instance: main\n    app.kubernetes.io/name: alertmanager\n    app.kubernetes.io/part-of: kube-prometheus\n  sessionAffinity: ClientIP\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: blackbox-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.24.0\n  name: blackbox-exporter\n  namespace: monitoring\nspec:\n  ports:\n  - name: https\n    port: 9115\n    targetPort: https\n  - name: probe\n    port: 19115\n    targetPort: http\n  selector:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: blackbox-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 9.5.3\n  name: grafana\n  namespace: monitoring\nspec:\n  ports:\n  - name: http\n    port: 3000\n    targetPort: http\n  selector:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: kube-state-metrics\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.9.2\n  name: kube-state-metrics\n  namespace: monitoring\nspec:\n  clusterIP: None\n  ports:\n  - name: https-main\n    port: 8443\n    targetPort: https-main\n  - name: https-self\n    port: 9443\n    targetPort: https-self\n  selector:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: kube-state-metrics\n    app.kubernetes.io/part-of: kube-prometheus\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: node-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 1.6.0\n  name: node-exporter\n  namespace: monitoring\nspec:\n  clusterIP: None\n  ports:\n  - name: https\n    port: 9100\n    targetPort: https\n  selector:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: node-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: metrics-adapter\n    app.kubernetes.io/name: prometheus-adapter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.10.0\n  name: prometheus-adapter\n  namespace: monitoring\nspec:\n  ports:\n  - name: https\n    port: 443\n    targetPort: 6443\n  selector:\n    app.kubernetes.io/component: metrics-adapter\n    app.kubernetes.io/name: prometheus-adapter\n    app.kubernetes.io/part-of: kube-prometheus\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: prometheus\n    app.kubernetes.io/instance: k8s\n    app.kubernetes.io/name: prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.45.0\n  name: prometheus-k8s\n  namespace: monitoring\nspec:\n  ports:\n  - name: web\n    port: 9090\n    targetPort: web\n  - name: reloader-web\n    port: 8080\n    targetPort: reloader-web\n  selector:\n    app.kubernetes.io/component: prometheus\n    app.kubernetes.io/instance: k8s\n    app.kubernetes.io/name: prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n  sessionAffinity: ClientIP\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/name: prometheus-operator\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.66.0\n  name: prometheus-operator\n  namespace: monitoring\nspec:\n  clusterIP: None\n  ports:\n  - name: https\n    port: 8443\n    targetPort: https\n  selector:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/name: prometheus-operator\n    app.kubernetes.io/part-of: kube-prometheus\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: blackbox-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.24.0\n  name: blackbox-exporter\n  namespace: monitoring\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: exporter\n      app.kubernetes.io/name: blackbox-exporter\n      app.kubernetes.io/part-of: kube-prometheus\n  template:\n    metadata:\n      annotations:\n        kubectl.kubernetes.io/default-container: blackbox-exporter\n      labels:\n        app.kubernetes.io/component: exporter\n        app.kubernetes.io/name: blackbox-exporter\n        app.kubernetes.io/part-of: kube-prometheus\n        app.kubernetes.io/version: 0.24.0\n    spec:\n      automountServiceAccountToken: true\n      containers:\n      - args:\n        - --config.file=/etc/blackbox_exporter/config.yml\n        - --web.listen-address=:19115\n        image: quay.io/prometheus/blackbox-exporter:v0.24.0\n        name: blackbox-exporter\n        ports:\n        - containerPort: 19115\n          name: http\n        resources:\n          limits:\n            cpu: 20m\n            memory: 40Mi\n          requests:\n            cpu: 10m\n            memory: 20Mi\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsNonRoot: true\n          runAsUser: 65534\n        volumeMounts:\n        - mountPath: /etc/blackbox_exporter/\n          name: config\n          readOnly: true\n      - args:\n        - --webhook-url=http://localhost:19115/-/reload\n        - --volume-dir=/etc/blackbox_exporter/\n        image: jimmidyson/configmap-reload:v0.5.0\n        name: module-configmap-reloader\n        resources:\n          limits:\n            cpu: 20m\n            memory: 40Mi\n          requests:\n            cpu: 10m\n            memory: 20Mi\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsNonRoot: true\n          runAsUser: 65534\n        terminationMessagePath: /dev/termination-log\n        terminationMessagePolicy: FallbackToLogsOnError\n        volumeMounts:\n        - mountPath: /etc/blackbox_exporter/\n          name: config\n          readOnly: true\n      - args:\n        - --logtostderr\n        - --secure-listen-address=:9115\n        - --tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305\n        - --upstream=http://127.0.0.1:19115/\n        image: quay.io/brancz/kube-rbac-proxy:v0.14.2\n        name: kube-rbac-proxy\n        ports:\n        - containerPort: 9115\n          name: https\n        resources:\n          limits:\n            cpu: 20m\n            memory: 40Mi\n          requests:\n            cpu: 10m\n            memory: 20Mi\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsGroup: 65532\n          runAsNonRoot: true\n          runAsUser: 65532\n      nodeSelector:\n        kubernetes.io/os: linux\n      serviceAccountName: blackbox-exporter\n      volumes:\n      - configMap:\n          name: blackbox-exporter-configuration\n        name: config\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 9.5.3\n  name: grafana\n  namespace: monitoring\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n  template:\n    metadata:\n      annotations:\n        checksum/grafana-config: 5c598ba58d9b65011bdbb3864138399a\n        checksum/grafana-dashboardproviders: c9c1743868aa1c3dab60d2c402e2dcf0\n        checksum/grafana-datasources: 5ef0e6acaa5b4e8603740fbad440717d\n      labels:\n        app.kubernetes.io/component: grafana\n        app.kubernetes.io/name: grafana\n        app.kubernetes.io/part-of: kube-prometheus\n        app.kubernetes.io/version: 9.5.3\n    spec:\n      automountServiceAccountToken: false\n      containers:\n      - env: []\n        image: grafana/grafana:9.5.3\n        name: grafana\n        ports:\n        - containerPort: 3000\n          name: http\n        readinessProbe:\n          httpGet:\n            path: /api/health\n            port: http\n        resources:\n          limits:\n            cpu: 200m\n            memory: 200Mi\n          requests:\n            cpu: 100m\n            memory: 100Mi\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          seccompProfile:\n            type: RuntimeDefault\n        volumeMounts:\n        - mountPath: /var/lib/grafana\n          name: grafana-storage\n          readOnly: false\n        - mountPath: /etc/grafana/provisioning/datasources\n          name: grafana-datasources\n          readOnly: false\n        - mountPath: /etc/grafana/provisioning/dashboards\n          name: grafana-dashboards\n          readOnly: false\n        - mountPath: /tmp\n          name: tmp-plugins\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/alertmanager-overview\n          name: grafana-dashboard-alertmanager-overview\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/apiserver\n          name: grafana-dashboard-apiserver\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/cluster-total\n          name: grafana-dashboard-cluster-total\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/controller-manager\n          name: grafana-dashboard-controller-manager\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/grafana-overview\n          name: grafana-dashboard-grafana-overview\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/k8s-resources-cluster\n          name: grafana-dashboard-k8s-resources-cluster\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/k8s-resources-multicluster\n          name: grafana-dashboard-k8s-resources-multicluster\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/k8s-resources-namespace\n          name: grafana-dashboard-k8s-resources-namespace\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/k8s-resources-node\n          name: grafana-dashboard-k8s-resources-node\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/k8s-resources-pod\n          name: grafana-dashboard-k8s-resources-pod\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/k8s-resources-workload\n          name: grafana-dashboard-k8s-resources-workload\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/k8s-resources-workloads-namespace\n          name: grafana-dashboard-k8s-resources-workloads-namespace\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/kubelet\n          name: grafana-dashboard-kubelet\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/namespace-by-pod\n          name: grafana-dashboard-namespace-by-pod\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/namespace-by-workload\n          name: grafana-dashboard-namespace-by-workload\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/node-cluster-rsrc-use\n          name: grafana-dashboard-node-cluster-rsrc-use\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/node-rsrc-use\n          name: grafana-dashboard-node-rsrc-use\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/nodes-darwin\n          name: grafana-dashboard-nodes-darwin\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/nodes\n          name: grafana-dashboard-nodes\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/persistentvolumesusage\n          name: grafana-dashboard-persistentvolumesusage\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/pod-total\n          name: grafana-dashboard-pod-total\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/prometheus-remote-write\n          name: grafana-dashboard-prometheus-remote-write\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/prometheus\n          name: grafana-dashboard-prometheus\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/proxy\n          name: grafana-dashboard-proxy\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/scheduler\n          name: grafana-dashboard-scheduler\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/workload-total\n          name: grafana-dashboard-workload-total\n          readOnly: false\n        - mountPath: /etc/grafana\n          name: grafana-config\n          readOnly: false\n      nodeSelector:\n        kubernetes.io/os: linux\n      securityContext:\n        fsGroup: 65534\n        runAsNonRoot: true\n        runAsUser: 65534\n      serviceAccountName: grafana\n      volumes:\n      - emptyDir: {}\n        name: grafana-storage\n      - name: grafana-datasources\n        secret:\n          secretName: grafana-datasources\n      - configMap:\n          name: grafana-dashboards\n        name: grafana-dashboards\n      - emptyDir:\n          medium: Memory\n        name: tmp-plugins\n      - configMap:\n          name: grafana-dashboard-alertmanager-overview\n        name: grafana-dashboard-alertmanager-overview\n      - configMap:\n          name: grafana-dashboard-apiserver\n        name: grafana-dashboard-apiserver\n      - configMap:\n          name: grafana-dashboard-cluster-total\n        name: grafana-dashboard-cluster-total\n      - configMap:\n          name: grafana-dashboard-controller-manager\n        name: grafana-dashboard-controller-manager\n      - configMap:\n          name: grafana-dashboard-grafana-overview\n        name: grafana-dashboard-grafana-overview\n      - configMap:\n          name: grafana-dashboard-k8s-resources-cluster\n        name: grafana-dashboard-k8s-resources-cluster\n      - configMap:\n          name: grafana-dashboard-k8s-resources-multicluster\n        name: grafana-dashboard-k8s-resources-multicluster\n      - configMap:\n          name: grafana-dashboard-k8s-resources-namespace\n        name: grafana-dashboard-k8s-resources-namespace\n      - configMap:\n          name: grafana-dashboard-k8s-resources-node\n        name: grafana-dashboard-k8s-resources-node\n      - configMap:\n          name: grafana-dashboard-k8s-resources-pod\n        name: grafana-dashboard-k8s-resources-pod\n      - configMap:\n          name: grafana-dashboard-k8s-resources-workload\n        name: grafana-dashboard-k8s-resources-workload\n      - configMap:\n          name: grafana-dashboard-k8s-resources-workloads-namespace\n        name: grafana-dashboard-k8s-resources-workloads-namespace\n      - configMap:\n          name: grafana-dashboard-kubelet\n        name: grafana-dashboard-kubelet\n      - configMap:\n          name: grafana-dashboard-namespace-by-pod\n        name: grafana-dashboard-namespace-by-pod\n      - configMap:\n          name: grafana-dashboard-namespace-by-workload\n        name: grafana-dashboard-namespace-by-workload\n      - configMap:\n          name: grafana-dashboard-node-cluster-rsrc-use\n        name: grafana-dashboard-node-cluster-rsrc-use\n      - configMap:\n          name: grafana-dashboard-node-rsrc-use\n        name: grafana-dashboard-node-rsrc-use\n      - configMap:\n          name: grafana-dashboard-nodes-darwin\n        name: grafana-dashboard-nodes-darwin\n      - configMap:\n          name: grafana-dashboard-nodes\n        name: grafana-dashboard-nodes\n      - configMap:\n          name: grafana-dashboard-persistentvolumesusage\n        name: grafana-dashboard-persistentvolumesusage\n      - configMap:\n          name: grafana-dashboard-pod-total\n        name: grafana-dashboard-pod-total\n      - configMap:\n          name: grafana-dashboard-prometheus-remote-write\n        name: grafana-dashboard-prometheus-remote-write\n      - configMap:\n          name: grafana-dashboard-prometheus\n        name: grafana-dashboard-prometheus\n      - configMap:\n          name: grafana-dashboard-proxy\n        name: grafana-dashboard-proxy\n      - configMap:\n          name: grafana-dashboard-scheduler\n        name: grafana-dashboard-scheduler\n      - configMap:\n          name: grafana-dashboard-workload-total\n        name: grafana-dashboard-workload-total\n      - name: grafana-config\n        secret:\n          secretName: grafana-config\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: kube-state-metrics\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.9.2\n  name: kube-state-metrics\n  namespace: monitoring\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: exporter\n      app.kubernetes.io/name: kube-state-metrics\n      app.kubernetes.io/part-of: kube-prometheus\n  template:\n    metadata:\n      annotations:\n        kubectl.kubernetes.io/default-container: kube-state-metrics\n      labels:\n        app.kubernetes.io/component: exporter\n        app.kubernetes.io/name: kube-state-metrics\n        app.kubernetes.io/part-of: kube-prometheus\n        app.kubernetes.io/version: 2.9.2\n    spec:\n      automountServiceAccountToken: true\n      containers:\n      - args:\n        - --host=127.0.0.1\n        - --port=8081\n        - --telemetry-host=127.0.0.1\n        - --telemetry-port=8082\n        image: registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.9.2\n        name: kube-state-metrics\n        resources:\n          limits:\n            cpu: 100m\n            memory: 250Mi\n          requests:\n            cpu: 10m\n            memory: 190Mi\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsNonRoot: true\n          runAsUser: 65534\n          seccompProfile:\n            type: RuntimeDefault\n      - args:\n        - --logtostderr\n        - --secure-listen-address=:8443\n        - --tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305\n        - --upstream=http://127.0.0.1:8081/\n        image: quay.io/brancz/kube-rbac-proxy:v0.14.2\n        name: kube-rbac-proxy-main\n        ports:\n        - containerPort: 8443\n          name: https-main\n        resources:\n          limits:\n            cpu: 40m\n            memory: 40Mi\n          requests:\n            cpu: 20m\n            memory: 20Mi\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsGroup: 65532\n          runAsNonRoot: true\n          runAsUser: 65532\n      - args:\n        - --logtostderr\n        - --secure-listen-address=:9443\n        - --tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305\n        - --upstream=http://127.0.0.1:8082/\n        image: quay.io/brancz/kube-rbac-proxy:v0.14.2\n        name: kube-rbac-proxy-self\n        ports:\n        - containerPort: 9443\n          name: https-self\n        resources:\n          limits:\n            cpu: 20m\n            memory: 40Mi\n          requests:\n            cpu: 10m\n            memory: 20Mi\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsGroup: 65532\n          runAsNonRoot: true\n          runAsUser: 65532\n      nodeSelector:\n        kubernetes.io/os: linux\n      serviceAccountName: kube-state-metrics\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app.kubernetes.io/component: metrics-adapter\n    app.kubernetes.io/name: prometheus-adapter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.10.0\n  name: prometheus-adapter\n  namespace: monitoring\nspec:\n  replicas: 2\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: metrics-adapter\n      app.kubernetes.io/name: prometheus-adapter\n      app.kubernetes.io/part-of: kube-prometheus\n  strategy:\n    rollingUpdate:\n      maxSurge: 1\n      maxUnavailable: 1\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/component: metrics-adapter\n        app.kubernetes.io/name: prometheus-adapter\n        app.kubernetes.io/part-of: kube-prometheus\n        app.kubernetes.io/version: 0.10.0\n    spec:\n      automountServiceAccountToken: true\n      containers:\n      - args:\n        - --cert-dir=/var/run/serving-cert\n        - --config=/etc/adapter/config.yaml\n        - --logtostderr=true\n        - --metrics-relist-interval=1m\n        - --prometheus-url=http://prometheus-k8s.monitoring.svc:9090/\n        - --secure-port=6443\n        - --tls-cipher-suites=TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA\n        image: registry.k8s.io/prometheus-adapter/prometheus-adapter:v0.10.0\n        livenessProbe:\n          failureThreshold: 5\n          httpGet:\n            path: /livez\n            port: https\n            scheme: HTTPS\n          periodSeconds: 5\n        name: prometheus-adapter\n        ports:\n        - containerPort: 6443\n          name: https\n        readinessProbe:\n          failureThreshold: 5\n          httpGet:\n            path: /readyz\n            port: https\n            scheme: HTTPS\n          periodSeconds: 5\n        resources:\n          limits:\n            cpu: 250m\n            memory: 180Mi\n          requests:\n            cpu: 102m\n            memory: 180Mi\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n        startupProbe:\n          failureThreshold: 18\n          httpGet:\n            path: /livez\n            port: https\n            scheme: HTTPS\n          periodSeconds: 10\n        volumeMounts:\n        - mountPath: /tmp\n          name: tmpfs\n          readOnly: false\n        - mountPath: /var/run/serving-cert\n          name: volume-serving-cert\n          readOnly: false\n        - mountPath: /etc/adapter\n          name: config\n          readOnly: false\n      nodeSelector:\n        kubernetes.io/os: linux\n      serviceAccountName: prometheus-adapter\n      volumes:\n      - emptyDir: {}\n        name: tmpfs\n      - emptyDir: {}\n        name: volume-serving-cert\n      - configMap:\n          name: adapter-config\n        name: config\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/name: prometheus-operator\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.66.0\n  name: prometheus-operator\n  namespace: monitoring\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: controller\n      app.kubernetes.io/name: prometheus-operator\n      app.kubernetes.io/part-of: kube-prometheus\n  template:\n    metadata:\n      annotations:\n        kubectl.kubernetes.io/default-container: prometheus-operator\n      labels:\n        app.kubernetes.io/component: controller\n        app.kubernetes.io/name: prometheus-operator\n        app.kubernetes.io/part-of: kube-prometheus\n        app.kubernetes.io/version: 0.66.0\n    spec:\n      automountServiceAccountToken: true\n      containers:\n      - args:\n        - --kubelet-service=kube-system/kubelet\n        - --prometheus-config-reloader=quay.io/prometheus-operator/prometheus-config-reloader:v0.66.0\n        image: quay.io/prometheus-operator/prometheus-operator:v0.66.0\n        name: prometheus-operator\n        ports:\n        - containerPort: 8080\n          name: http\n        resources:\n          limits:\n            cpu: 200m\n            memory: 200Mi\n          requests:\n            cpu: 100m\n            memory: 100Mi\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n      - args:\n        - --logtostderr\n        - --secure-listen-address=:8443\n        - --tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305\n        - --upstream=http://127.0.0.1:8080/\n        image: quay.io/brancz/kube-rbac-proxy:v0.14.2\n        name: kube-rbac-proxy\n        ports:\n        - containerPort: 8443\n          name: https\n        resources:\n          limits:\n            cpu: 20m\n            memory: 40Mi\n          requests:\n            cpu: 10m\n            memory: 20Mi\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsGroup: 65532\n          runAsNonRoot: true\n          runAsUser: 65532\n      nodeSelector:\n        kubernetes.io/os: linux\n      securityContext:\n        runAsNonRoot: true\n        runAsUser: 65534\n        seccompProfile:\n          type: RuntimeDefault\n      serviceAccountName: prometheus-operator\n---\napiVersion: policy/v1\nkind: PodDisruptionBudget\nmetadata:\n  labels:\n    app.kubernetes.io/component: alert-router\n    app.kubernetes.io/instance: main\n    app.kubernetes.io/name: alertmanager\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.25.0\n  name: alertmanager-main\n  namespace: monitoring\nspec:\n  maxUnavailable: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: alert-router\n      app.kubernetes.io/instance: main\n      app.kubernetes.io/name: alertmanager\n      app.kubernetes.io/part-of: kube-prometheus\n---\napiVersion: policy/v1\nkind: PodDisruptionBudget\nmetadata:\n  labels:\n    app.kubernetes.io/component: metrics-adapter\n    app.kubernetes.io/name: prometheus-adapter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.10.0\n  name: prometheus-adapter\n  namespace: monitoring\nspec:\n  minAvailable: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: metrics-adapter\n      app.kubernetes.io/name: prometheus-adapter\n      app.kubernetes.io/part-of: kube-prometheus\n---\napiVersion: policy/v1\nkind: PodDisruptionBudget\nmetadata:\n  labels:\n    app.kubernetes.io/component: prometheus\n    app.kubernetes.io/instance: k8s\n    app.kubernetes.io/name: prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.45.0\n  name: prometheus-k8s\n  namespace: monitoring\nspec:\n  minAvailable: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: prometheus\n      app.kubernetes.io/instance: k8s\n      app.kubernetes.io/name: prometheus\n      app.kubernetes.io/part-of: kube-prometheus\n---\napiVersion: apiregistration.k8s.io/v1\nkind: APIService\nmetadata:\n  labels:\n    app.kubernetes.io/component: metrics-adapter\n    app.kubernetes.io/name: prometheus-adapter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.10.0\n  name: v1beta1.metrics.k8s.io\nspec:\n  group: metrics.k8s.io\n  groupPriorityMinimum: 100\n  insecureSkipTLSVerify: true\n  service:\n    name: prometheus-adapter\n    namespace: monitoring\n  version: v1beta1\n  versionPriority: 100\n---\napiVersion: apps/v1\nkind: DaemonSet\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: node-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 1.6.0\n  name: node-exporter\n  namespace: monitoring\nspec:\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: exporter\n      app.kubernetes.io/name: node-exporter\n      app.kubernetes.io/part-of: kube-prometheus\n  template:\n    metadata:\n      annotations:\n        kubectl.kubernetes.io/default-container: node-exporter\n      labels:\n        app.kubernetes.io/component: exporter\n        app.kubernetes.io/name: node-exporter\n        app.kubernetes.io/part-of: kube-prometheus\n        app.kubernetes.io/version: 1.6.0\n    spec:\n      automountServiceAccountToken: true\n      containers:\n      - args:\n        - --web.listen-address=127.0.0.1:9100\n        - --path.sysfs=/host/sys\n        - --path.rootfs=/host/root\n        - --path.udev.data=/host/root/run/udev/data\n        - --no-collector.wifi\n        - --no-collector.hwmon\n        - --no-collector.btrfs\n        - --collector.filesystem.mount-points-exclude=^/(dev|proc|sys|run/k3s/containerd/.+|var/lib/docker/.+|var/lib/kubelet/pods/.+)($|/)\n        - --collector.netclass.ignored-devices=^(veth.*|[a-f0-9]{15})$\n        - --collector.netdev.device-exclude=^(veth.*|[a-f0-9]{15})$\n        image: quay.io/prometheus/node-exporter:v1.6.0\n        name: node-exporter\n        resources:\n          limits:\n            cpu: 250m\n            memory: 180Mi\n          requests:\n            cpu: 102m\n            memory: 180Mi\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            add:\n            - SYS_TIME\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n        volumeMounts:\n        - mountPath: /host/sys\n          mountPropagation: HostToContainer\n          name: sys\n          readOnly: true\n        - mountPath: /host/root\n          mountPropagation: HostToContainer\n          name: root\n          readOnly: true\n      - args:\n        - --logtostderr\n        - --secure-listen-address=[$(IP)]:9100\n        - --tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305\n        - --upstream=http://127.0.0.1:9100/\n        env:\n        - name: IP\n          valueFrom:\n            fieldRef:\n              fieldPath: status.podIP\n        image: quay.io/brancz/kube-rbac-proxy:v0.14.2\n        name: kube-rbac-proxy\n        ports:\n        - containerPort: 9100\n          hostPort: 9100\n          name: https\n        resources:\n          limits:\n            cpu: 20m\n            memory: 40Mi\n          requests:\n            cpu: 10m\n            memory: 20Mi\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsGroup: 65532\n          runAsNonRoot: true\n          runAsUser: 65532\n      hostNetwork: true\n      hostPID: true\n      nodeSelector:\n        kubernetes.io/os: linux\n      priorityClassName: system-cluster-critical\n      securityContext:\n        runAsNonRoot: true\n        runAsUser: 65534\n      serviceAccountName: node-exporter\n      tolerations:\n      - operator: Exists\n      volumes:\n      - hostPath:\n          path: /sys\n        name: sys\n      - hostPath:\n          path: /\n        name: root\n  updateStrategy:\n    rollingUpdate:\n      maxUnavailable: 10%\n    type: RollingUpdate\n---\napiVersion: monitoring.coreos.com/v1\nkind: Alertmanager\nmetadata:\n  labels:\n    app.kubernetes.io/component: alert-router\n    app.kubernetes.io/instance: main\n    app.kubernetes.io/name: alertmanager\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.25.0\n  name: main\n  namespace: monitoring\nspec:\n  image: quay.io/prometheus/alertmanager:v0.25.0\n  nodeSelector:\n    kubernetes.io/os: linux\n  podMetadata:\n    labels:\n      app.kubernetes.io/component: alert-router\n      app.kubernetes.io/instance: main\n      app.kubernetes.io/name: alertmanager\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 0.25.0\n  replicas: 3\n  resources:\n    limits:\n      cpu: 100m\n      memory: 100Mi\n    requests:\n      cpu: 4m\n      memory: 100Mi\n  securityContext:\n    fsGroup: 2000\n    runAsNonRoot: true\n    runAsUser: 1000\n  serviceAccountName: alertmanager-main\n  version: 0.25.0\n---\napiVersion: monitoring.coreos.com/v1\nkind: Prometheus\nmetadata:\n  labels:\n    app.kubernetes.io/component: prometheus\n    app.kubernetes.io/instance: k8s\n    app.kubernetes.io/name: prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.45.0\n  name: k8s\n  namespace: monitoring\nspec:\n  alerting:\n    alertmanagers:\n    - apiVersion: v2\n      name: alertmanager-main\n      namespace: monitoring\n      port: web\n  enableFeatures: []\n  externalLabels: {}\n  image: quay.io/prometheus/prometheus:v2.45.0\n  nodeSelector:\n    kubernetes.io/os: linux\n  podMetadata:\n    labels:\n      app.kubernetes.io/component: prometheus\n      app.kubernetes.io/instance: k8s\n      app.kubernetes.io/name: prometheus\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 2.45.0\n  podMonitorNamespaceSelector: {}\n  podMonitorSelector: {}\n  probeNamespaceSelector: {}\n  probeSelector: {}\n  replicas: 2\n  resources:\n    requests:\n      memory: 400Mi\n  ruleNamespaceSelector: {}\n  ruleSelector: {}\n  securityContext:\n    fsGroup: 2000\n    runAsNonRoot: true\n    runAsUser: 1000\n  serviceAccountName: prometheus-k8s\n  serviceMonitorNamespaceSelector: {}\n  serviceMonitorSelector: {}\n  version: 2.45.0\n---\napiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  labels:\n    app.kubernetes.io/component: alert-router\n    app.kubernetes.io/instance: main\n    app.kubernetes.io/name: alertmanager\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.25.0\n    prometheus: k8s\n    role: alert-rules\n  name: alertmanager-main-rules\n  namespace: monitoring\nspec:\n  groups:\n  - name: alertmanager.rules\n    rules:\n    - alert: AlertmanagerFailedReload\n      annotations:\n        description: Configuration has failed to load for {{ $labels.namespace }}/{{\n          $labels.pod}}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/alertmanager/alertmanagerfailedreload\n        summary: Reloading an Alertmanager configuration has failed.\n      expr: |\n        # Without max_over_time, failed scrapes could create false negatives, see\n        # https://www.robustperception.io/alerting-on-gauges-in-prometheus-2-0 for details.\n        max_over_time(alertmanager_config_last_reload_successful{job=\"alertmanager-main\",namespace=\"monitoring\"}[5m]) == 0\n      for: 10m\n      labels:\n        severity: critical\n    - alert: AlertmanagerMembersInconsistent\n      annotations:\n        description: Alertmanager {{ $labels.namespace }}/{{ $labels.pod}} has only\n          found {{ $value }} members of the {{$labels.job}} cluster.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/alertmanager/alertmanagermembersinconsistent\n        summary: A member of an Alertmanager cluster has not found all other cluster\n          members.\n      expr: |\n        # Without max_over_time, failed scrapes could create false negatives, see\n        # https://www.robustperception.io/alerting-on-gauges-in-prometheus-2-0 for details.\n          max_over_time(alertmanager_cluster_members{job=\"alertmanager-main\",namespace=\"monitoring\"}[5m])\n        < on (namespace,service) group_left\n          count by (namespace,service) (max_over_time(alertmanager_cluster_members{job=\"alertmanager-main\",namespace=\"monitoring\"}[5m]))\n      for: 15m\n      labels:\n        severity: critical\n    - alert: AlertmanagerFailedToSendAlerts\n      annotations:\n        description: Alertmanager {{ $labels.namespace }}/{{ $labels.pod}} failed\n          to send {{ $value | humanizePercentage }} of notifications to {{ $labels.integration\n          }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/alertmanager/alertmanagerfailedtosendalerts\n        summary: An Alertmanager instance failed to send notifications.\n      expr: |\n        (\n          rate(alertmanager_notifications_failed_total{job=\"alertmanager-main\",namespace=\"monitoring\"}[5m])\n        /\n          rate(alertmanager_notifications_total{job=\"alertmanager-main\",namespace=\"monitoring\"}[5m])\n        )\n        > 0.01\n      for: 5m\n      labels:\n        severity: warning\n    - alert: AlertmanagerClusterFailedToSendAlerts\n      annotations:\n        description: The minimum notification failure rate to {{ $labels.integration\n          }} sent from any instance in the {{$labels.job}} cluster is {{ $value |\n          humanizePercentage }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/alertmanager/alertmanagerclusterfailedtosendalerts\n        summary: All Alertmanager instances in a cluster failed to send notifications\n          to a critical integration.\n      expr: |\n        min by (namespace,service, integration) (\n          rate(alertmanager_notifications_failed_total{job=\"alertmanager-main\",namespace=\"monitoring\", integration=~`.*`}[5m])\n        /\n          rate(alertmanager_notifications_total{job=\"alertmanager-main\",namespace=\"monitoring\", integration=~`.*`}[5m])\n        )\n        > 0.01\n      for: 5m\n      labels:\n        severity: critical\n    - alert: AlertmanagerClusterFailedToSendAlerts\n      annotations:\n        description: The minimum notification failure rate to {{ $labels.integration\n          }} sent from any instance in the {{$labels.job}} cluster is {{ $value |\n          humanizePercentage }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/alertmanager/alertmanagerclusterfailedtosendalerts\n        summary: All Alertmanager instances in a cluster failed to send notifications\n          to a non-critical integration.\n      expr: |\n        min by (namespace,service, integration) (\n          rate(alertmanager_notifications_failed_total{job=\"alertmanager-main\",namespace=\"monitoring\", integration!~`.*`}[5m])\n        /\n          rate(alertmanager_notifications_total{job=\"alertmanager-main\",namespace=\"monitoring\", integration!~`.*`}[5m])\n        )\n        > 0.01\n      for: 5m\n      labels:\n        severity: warning\n    - alert: AlertmanagerConfigInconsistent\n      annotations:\n        description: Alertmanager instances within the {{$labels.job}} cluster have\n          different configurations.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/alertmanager/alertmanagerconfiginconsistent\n        summary: Alertmanager instances within the same cluster have different configurations.\n      expr: |\n        count by (namespace,service) (\n          count_values by (namespace,service) (\"config_hash\", alertmanager_config_hash{job=\"alertmanager-main\",namespace=\"monitoring\"})\n        )\n        != 1\n      for: 20m\n      labels:\n        severity: critical\n    - alert: AlertmanagerClusterDown\n      annotations:\n        description: '{{ $value | humanizePercentage }} of Alertmanager instances\n          within the {{$labels.job}} cluster have been up for less than half of the\n          last 5m.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/alertmanager/alertmanagerclusterdown\n        summary: Half or more of the Alertmanager instances within the same cluster\n          are down.\n      expr: |\n        (\n          count by (namespace,service) (\n            avg_over_time(up{job=\"alertmanager-main\",namespace=\"monitoring\"}[5m]) < 0.5\n          )\n        /\n          count by (namespace,service) (\n            up{job=\"alertmanager-main\",namespace=\"monitoring\"}\n          )\n        )\n        >= 0.5\n      for: 5m\n      labels:\n        severity: critical\n    - alert: AlertmanagerClusterCrashlooping\n      annotations:\n        description: '{{ $value | humanizePercentage }} of Alertmanager instances\n          within the {{$labels.job}} cluster have restarted at least 5 times in the\n          last 10m.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/alertmanager/alertmanagerclustercrashlooping\n        summary: Half or more of the Alertmanager instances within the same cluster\n          are crashlooping.\n      expr: |\n        (\n          count by (namespace,service) (\n            changes(process_start_time_seconds{job=\"alertmanager-main\",namespace=\"monitoring\"}[10m]) > 4\n          )\n        /\n          count by (namespace,service) (\n            up{job=\"alertmanager-main\",namespace=\"monitoring\"}\n          )\n        )\n        >= 0.5\n      for: 5m\n      labels:\n        severity: critical\n---\napiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 9.5.3\n    prometheus: k8s\n    role: alert-rules\n  name: grafana-rules\n  namespace: monitoring\nspec:\n  groups:\n  - name: GrafanaAlerts\n    rules:\n    - alert: GrafanaRequestsFailing\n      annotations:\n        message: '{{ $labels.namespace }}/{{ $labels.job }}/{{ $labels.handler }}\n          is experiencing {{ $value | humanize }}% errors'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/grafana/grafanarequestsfailing\n      expr: |\n        100 * namespace_job_handler_statuscode:grafana_http_request_duration_seconds_count:rate5m{handler!~\"/api/datasources/proxy/:id.*|/api/ds/query|/api/tsdb/query\", status_code=~\"5..\"}\n        / ignoring (status_code)\n        sum without (status_code) (namespace_job_handler_statuscode:grafana_http_request_duration_seconds_count:rate5m{handler!~\"/api/datasources/proxy/:id.*|/api/ds/query|/api/tsdb/query\"})\n        > 50\n      for: 5m\n      labels:\n        severity: warning\n  - name: grafana_rules\n    rules:\n    - expr: |\n        sum by (namespace, job, handler, status_code) (rate(grafana_http_request_duration_seconds_count[5m]))\n      record: namespace_job_handler_statuscode:grafana_http_request_duration_seconds_count:rate5m\n---\napiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: kube-prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n    prometheus: k8s\n    role: alert-rules\n  name: kube-prometheus-rules\n  namespace: monitoring\nspec:\n  groups:\n  - name: general.rules\n    rules:\n    - alert: TargetDown\n      annotations:\n        description: '{{ printf \"%.4g\" $value }}% of the {{ $labels.job }}/{{ $labels.service\n          }} targets in {{ $labels.namespace }} namespace are down.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/general/targetdown\n        summary: One or more targets are unreachable.\n      expr: 100 * (count(up == 0) BY (cluster, job, namespace, service) / count(up)\n        BY (cluster, job, namespace, service)) > 10\n      for: 10m\n      labels:\n        severity: warning\n    - alert: Watchdog\n      annotations:\n        description: |\n          This is an alert meant to ensure that the entire alerting pipeline is functional.\n          This alert is always firing, therefore it should always be firing in Alertmanager\n          and always fire against a receiver. There are integrations with various notification\n          mechanisms that send a notification when this alert is not firing. For example the\n          \"DeadMansSnitch\" integration in PagerDuty.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/general/watchdog\n        summary: An alert that should always be firing to certify that Alertmanager\n          is working properly.\n      expr: vector(1)\n      labels:\n        severity: none\n    - alert: InfoInhibitor\n      annotations:\n        description: |\n          This is an alert that is used to inhibit info alerts.\n          By themselves, the info-level alerts are sometimes very noisy, but they are relevant when combined with\n          other alerts.\n          This alert fires whenever there's a severity=\"info\" alert, and stops firing when another alert with a\n          severity of 'warning' or 'critical' starts firing on the same namespace.\n          This alert should be routed to a null receiver and configured to inhibit alerts with severity=\"info\".\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/general/infoinhibitor\n        summary: Info-level alert inhibition.\n      expr: ALERTS{severity = \"info\"} == 1 unless on(namespace) ALERTS{alertname !=\n        \"InfoInhibitor\", severity =~ \"warning|critical\", alertstate=\"firing\"} == 1\n      labels:\n        severity: none\n  - name: node-network\n    rules:\n    - alert: NodeNetworkInterfaceFlapping\n      annotations:\n        description: Network interface \"{{ $labels.device }}\" changing its up status\n          often on node-exporter {{ $labels.namespace }}/{{ $labels.pod }}\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/general/nodenetworkinterfaceflapping\n        summary: Network interface is often changing its status\n      expr: |\n        changes(node_network_up{job=\"node-exporter\",device!~\"veth.+\"}[2m]) > 2\n      for: 2m\n      labels:\n        severity: warning\n  - name: kube-prometheus-node-recording.rules\n    rules:\n    - expr: sum(rate(node_cpu_seconds_total{mode!=\"idle\",mode!=\"iowait\",mode!=\"steal\"}[3m]))\n        BY (instance)\n      record: instance:node_cpu:rate:sum\n    - expr: sum(rate(node_network_receive_bytes_total[3m])) BY (instance)\n      record: instance:node_network_receive_bytes:rate:sum\n    - expr: sum(rate(node_network_transmit_bytes_total[3m])) BY (instance)\n      record: instance:node_network_transmit_bytes:rate:sum\n    - expr: sum(rate(node_cpu_seconds_total{mode!=\"idle\",mode!=\"iowait\",mode!=\"steal\"}[5m]))\n        WITHOUT (cpu, mode) / ON(instance) GROUP_LEFT() count(sum(node_cpu_seconds_total)\n        BY (instance, cpu)) BY (instance)\n      record: instance:node_cpu:ratio\n    - expr: sum(rate(node_cpu_seconds_total{mode!=\"idle\",mode!=\"iowait\",mode!=\"steal\"}[5m]))\n      record: cluster:node_cpu:sum_rate5m\n    - expr: cluster:node_cpu:sum_rate5m / count(sum(node_cpu_seconds_total) BY (instance,\n        cpu))\n      record: cluster:node_cpu:ratio\n  - name: kube-prometheus-general.rules\n    rules:\n    - expr: count without(instance, pod, node) (up == 1)\n      record: count:up1\n    - expr: count without(instance, pod, node) (up == 0)\n      record: count:up0\n---\napiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: kube-state-metrics\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.9.2\n    prometheus: k8s\n    role: alert-rules\n  name: kube-state-metrics-rules\n  namespace: monitoring\nspec:\n  groups:\n  - name: kube-state-metrics\n    rules:\n    - alert: KubeStateMetricsListErrors\n      annotations:\n        description: kube-state-metrics is experiencing errors at an elevated rate\n          in list operations. This is likely causing it to not be able to expose metrics\n          about Kubernetes objects correctly or at all.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kube-state-metrics/kubestatemetricslisterrors\n        summary: kube-state-metrics is experiencing errors in list operations.\n      expr: |\n        (sum(rate(kube_state_metrics_list_total{job=\"kube-state-metrics\",result=\"error\"}[5m])) by (cluster)\n          /\n        sum(rate(kube_state_metrics_list_total{job=\"kube-state-metrics\"}[5m])) by (cluster))\n        > 0.01\n      for: 15m\n      labels:\n        severity: critical\n    - alert: KubeStateMetricsWatchErrors\n      annotations:\n        description: kube-state-metrics is experiencing errors at an elevated rate\n          in watch operations. This is likely causing it to not be able to expose\n          metrics about Kubernetes objects correctly or at all.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kube-state-metrics/kubestatemetricswatcherrors\n        summary: kube-state-metrics is experiencing errors in watch operations.\n      expr: |\n        (sum(rate(kube_state_metrics_watch_total{job=\"kube-state-metrics\",result=\"error\"}[5m])) by (cluster)\n          /\n        sum(rate(kube_state_metrics_watch_total{job=\"kube-state-metrics\"}[5m])) by (cluster))\n        > 0.01\n      for: 15m\n      labels:\n        severity: critical\n    - alert: KubeStateMetricsShardingMismatch\n      annotations:\n        description: kube-state-metrics pods are running with different --total-shards\n          configuration, some Kubernetes objects may be exposed multiple times or\n          not exposed at all.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kube-state-metrics/kubestatemetricsshardingmismatch\n        summary: kube-state-metrics sharding is misconfigured.\n      expr: |\n        stdvar (kube_state_metrics_total_shards{job=\"kube-state-metrics\"}) by (cluster) != 0\n      for: 15m\n      labels:\n        severity: critical\n    - alert: KubeStateMetricsShardsMissing\n      annotations:\n        description: kube-state-metrics shards are missing, some Kubernetes objects\n          are not being exposed.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kube-state-metrics/kubestatemetricsshardsmissing\n        summary: kube-state-metrics shards are missing.\n      expr: |\n        2^max(kube_state_metrics_total_shards{job=\"kube-state-metrics\"}) by (cluster) - 1\n          -\n        sum( 2 ^ max by (cluster, shard_ordinal) (kube_state_metrics_shard_ordinal{job=\"kube-state-metrics\"}) ) by (cluster)\n        != 0\n      for: 15m\n      labels:\n        severity: critical\n---\napiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  labels:\n    app.kubernetes.io/name: kube-prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n    prometheus: k8s\n    role: alert-rules\n  name: kubernetes-monitoring-rules\n  namespace: monitoring\nspec:\n  groups:\n  - name: kubernetes-apps\n    rules:\n    - alert: KubePodCrashLooping\n      annotations:\n        description: 'Pod {{ $labels.namespace }}/{{ $labels.pod }} ({{ $labels.container\n          }}) is in waiting state (reason: \"CrashLoopBackOff\").'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubepodcrashlooping\n        summary: Pod is crash looping.\n      expr: |\n        max_over_time(kube_pod_container_status_waiting_reason{reason=\"CrashLoopBackOff\", job=\"kube-state-metrics\"}[5m]) >= 1\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubePodNotReady\n      annotations:\n        description: Pod {{ $labels.namespace }}/{{ $labels.pod }} has been in a non-ready\n          state for longer than 15 minutes.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubepodnotready\n        summary: Pod has been in a non-ready state for more than 15 minutes.\n      expr: |\n        sum by (namespace, pod, cluster) (\n          max by(namespace, pod, cluster) (\n            kube_pod_status_phase{job=\"kube-state-metrics\", phase=~\"Pending|Unknown|Failed\"}\n          ) * on(namespace, pod, cluster) group_left(owner_kind) topk by(namespace, pod, cluster) (\n            1, max by(namespace, pod, owner_kind, cluster) (kube_pod_owner{owner_kind!=\"Job\"})\n          )\n        ) > 0\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeDeploymentGenerationMismatch\n      annotations:\n        description: Deployment generation for {{ $labels.namespace }}/{{ $labels.deployment\n          }} does not match, this indicates that the Deployment has failed but has\n          not been rolled back.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubedeploymentgenerationmismatch\n        summary: Deployment generation mismatch due to possible roll-back\n      expr: |\n        kube_deployment_status_observed_generation{job=\"kube-state-metrics\"}\n          !=\n        kube_deployment_metadata_generation{job=\"kube-state-metrics\"}\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeDeploymentReplicasMismatch\n      annotations:\n        description: Deployment {{ $labels.namespace }}/{{ $labels.deployment }} has\n          not matched the expected number of replicas for longer than 15 minutes.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubedeploymentreplicasmismatch\n        summary: Deployment has not matched the expected number of replicas.\n      expr: |\n        (\n          kube_deployment_spec_replicas{job=\"kube-state-metrics\"}\n            >\n          kube_deployment_status_replicas_available{job=\"kube-state-metrics\"}\n        ) and (\n          changes(kube_deployment_status_replicas_updated{job=\"kube-state-metrics\"}[10m])\n            ==\n          0\n        )\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeDeploymentRolloutStuck\n      annotations:\n        description: Rollout of deployment {{ $labels.namespace }}/{{ $labels.deployment\n          }} is not progressing for longer than 15 minutes.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubedeploymentrolloutstuck\n        summary: Deployment rollout is not progressing.\n      expr: |\n        kube_deployment_status_condition{condition=\"Progressing\", status=\"false\",job=\"kube-state-metrics\"}\n        != 0\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeStatefulSetReplicasMismatch\n      annotations:\n        description: StatefulSet {{ $labels.namespace }}/{{ $labels.statefulset }}\n          has not matched the expected number of replicas for longer than 15 minutes.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubestatefulsetreplicasmismatch\n        summary: Deployment has not matched the expected number of replicas.\n      expr: |\n        (\n          kube_statefulset_status_replicas_ready{job=\"kube-state-metrics\"}\n            !=\n          kube_statefulset_status_replicas{job=\"kube-state-metrics\"}\n        ) and (\n          changes(kube_statefulset_status_replicas_updated{job=\"kube-state-metrics\"}[10m])\n            ==\n          0\n        )\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeStatefulSetGenerationMismatch\n      annotations:\n        description: StatefulSet generation for {{ $labels.namespace }}/{{ $labels.statefulset\n          }} does not match, this indicates that the StatefulSet has failed but has\n          not been rolled back.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubestatefulsetgenerationmismatch\n        summary: StatefulSet generation mismatch due to possible roll-back\n      expr: |\n        kube_statefulset_status_observed_generation{job=\"kube-state-metrics\"}\n          !=\n        kube_statefulset_metadata_generation{job=\"kube-state-metrics\"}\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeStatefulSetUpdateNotRolledOut\n      annotations:\n        description: StatefulSet {{ $labels.namespace }}/{{ $labels.statefulset }}\n          update has not been rolled out.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubestatefulsetupdatenotrolledout\n        summary: StatefulSet update has not been rolled out.\n      expr: |\n        (\n          max without (revision) (\n            kube_statefulset_status_current_revision{job=\"kube-state-metrics\"}\n              unless\n            kube_statefulset_status_update_revision{job=\"kube-state-metrics\"}\n          )\n            *\n          (\n            kube_statefulset_replicas{job=\"kube-state-metrics\"}\n              !=\n            kube_statefulset_status_replicas_updated{job=\"kube-state-metrics\"}\n          )\n        )  and (\n          changes(kube_statefulset_status_replicas_updated{job=\"kube-state-metrics\"}[5m])\n            ==\n          0\n        )\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeDaemonSetRolloutStuck\n      annotations:\n        description: DaemonSet {{ $labels.namespace }}/{{ $labels.daemonset }} has\n          not finished or progressed for at least 15 minutes.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubedaemonsetrolloutstuck\n        summary: DaemonSet rollout is stuck.\n      expr: |\n        (\n          (\n            kube_daemonset_status_current_number_scheduled{job=\"kube-state-metrics\"}\n             !=\n            kube_daemonset_status_desired_number_scheduled{job=\"kube-state-metrics\"}\n          ) or (\n            kube_daemonset_status_number_misscheduled{job=\"kube-state-metrics\"}\n             !=\n            0\n          ) or (\n            kube_daemonset_status_updated_number_scheduled{job=\"kube-state-metrics\"}\n             !=\n            kube_daemonset_status_desired_number_scheduled{job=\"kube-state-metrics\"}\n          ) or (\n            kube_daemonset_status_number_available{job=\"kube-state-metrics\"}\n             !=\n            kube_daemonset_status_desired_number_scheduled{job=\"kube-state-metrics\"}\n          )\n        ) and (\n          changes(kube_daemonset_status_updated_number_scheduled{job=\"kube-state-metrics\"}[5m])\n            ==\n          0\n        )\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeContainerWaiting\n      annotations:\n        description: pod/{{ $labels.pod }} in namespace {{ $labels.namespace }} on\n          container {{ $labels.container}} has been in waiting state for longer than\n          1 hour.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubecontainerwaiting\n        summary: Pod container waiting longer than 1 hour\n      expr: |\n        sum by (namespace, pod, container, cluster) (kube_pod_container_status_waiting_reason{job=\"kube-state-metrics\"}) > 0\n      for: 1h\n      labels:\n        severity: warning\n    - alert: KubeDaemonSetNotScheduled\n      annotations:\n        description: '{{ $value }} Pods of DaemonSet {{ $labels.namespace }}/{{ $labels.daemonset\n          }} are not scheduled.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubedaemonsetnotscheduled\n        summary: DaemonSet pods are not scheduled.\n      expr: |\n        kube_daemonset_status_desired_number_scheduled{job=\"kube-state-metrics\"}\n          -\n        kube_daemonset_status_current_number_scheduled{job=\"kube-state-metrics\"} > 0\n      for: 10m\n      labels:\n        severity: warning\n    - alert: KubeDaemonSetMisScheduled\n      annotations:\n        description: '{{ $value }} Pods of DaemonSet {{ $labels.namespace }}/{{ $labels.daemonset\n          }} are running where they are not supposed to run.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubedaemonsetmisscheduled\n        summary: DaemonSet pods are misscheduled.\n      expr: |\n        kube_daemonset_status_number_misscheduled{job=\"kube-state-metrics\"} > 0\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeJobNotCompleted\n      annotations:\n        description: Job {{ $labels.namespace }}/{{ $labels.job_name }} is taking\n          more than {{ \"43200\" | humanizeDuration }} to complete.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubejobnotcompleted\n        summary: Job did not complete in time\n      expr: |\n        time() - max by(namespace, job_name, cluster) (kube_job_status_start_time{job=\"kube-state-metrics\"}\n          and\n        kube_job_status_active{job=\"kube-state-metrics\"} > 0) > 43200\n      labels:\n        severity: warning\n    - alert: KubeJobFailed\n      annotations:\n        description: Job {{ $labels.namespace }}/{{ $labels.job_name }} failed to\n          complete. Removing failed job after investigation should clear this alert.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubejobfailed\n        summary: Job failed to complete.\n      expr: |\n        kube_job_failed{job=\"kube-state-metrics\"}  > 0\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeHpaReplicasMismatch\n      annotations:\n        description: HPA {{ $labels.namespace }}/{{ $labels.horizontalpodautoscaler  }}\n          has not matched the desired number of replicas for longer than 15 minutes.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubehpareplicasmismatch\n        summary: HPA has not matched desired number of replicas.\n      expr: |\n        (kube_horizontalpodautoscaler_status_desired_replicas{job=\"kube-state-metrics\"}\n          !=\n        kube_horizontalpodautoscaler_status_current_replicas{job=\"kube-state-metrics\"})\n          and\n        (kube_horizontalpodautoscaler_status_current_replicas{job=\"kube-state-metrics\"}\n          >\n        kube_horizontalpodautoscaler_spec_min_replicas{job=\"kube-state-metrics\"})\n          and\n        (kube_horizontalpodautoscaler_status_current_replicas{job=\"kube-state-metrics\"}\n          <\n        kube_horizontalpodautoscaler_spec_max_replicas{job=\"kube-state-metrics\"})\n          and\n        changes(kube_horizontalpodautoscaler_status_current_replicas{job=\"kube-state-metrics\"}[15m]) == 0\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeHpaMaxedOut\n      annotations:\n        description: HPA {{ $labels.namespace }}/{{ $labels.horizontalpodautoscaler  }}\n          has been running at max replicas for longer than 15 minutes.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubehpamaxedout\n        summary: HPA is running at max replicas\n      expr: |\n        kube_horizontalpodautoscaler_status_current_replicas{job=\"kube-state-metrics\"}\n          ==\n        kube_horizontalpodautoscaler_spec_max_replicas{job=\"kube-state-metrics\"}\n      for: 15m\n      labels:\n        severity: warning\n  - name: kubernetes-resources\n    rules:\n    - alert: KubeCPUOvercommit\n      annotations:\n        description: Cluster {{ $labels.cluster }} has overcommitted CPU resource\n          requests for Pods by {{ $value }} CPU shares and cannot tolerate node failure.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubecpuovercommit\n        summary: Cluster has overcommitted CPU resource requests.\n      expr: |\n        sum(namespace_cpu:kube_pod_container_resource_requests:sum{job=\"kube-state-metrics\",}) by (cluster) - (sum(kube_node_status_allocatable{job=\"kube-state-metrics\",resource=\"cpu\"}) by (cluster) - max(kube_node_status_allocatable{job=\"kube-state-metrics\",resource=\"cpu\"}) by (cluster)) > 0\n        and\n        (sum(kube_node_status_allocatable{job=\"kube-state-metrics\",resource=\"cpu\"}) by (cluster) - max(kube_node_status_allocatable{job=\"kube-state-metrics\",resource=\"cpu\"}) by (cluster)) > 0\n      for: 10m\n      labels:\n        severity: warning\n    - alert: KubeMemoryOvercommit\n      annotations:\n        description: Cluster {{ $labels.cluster }} has overcommitted memory resource\n          requests for Pods by {{ $value | humanize }} bytes and cannot tolerate node\n          failure.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubememoryovercommit\n        summary: Cluster has overcommitted memory resource requests.\n      expr: |\n        sum(namespace_memory:kube_pod_container_resource_requests:sum{}) by (cluster) - (sum(kube_node_status_allocatable{resource=\"memory\", job=\"kube-state-metrics\"}) by (cluster) - max(kube_node_status_allocatable{resource=\"memory\", job=\"kube-state-metrics\"}) by (cluster)) > 0\n        and\n        (sum(kube_node_status_allocatable{resource=\"memory\", job=\"kube-state-metrics\"}) by (cluster) - max(kube_node_status_allocatable{resource=\"memory\", job=\"kube-state-metrics\"}) by (cluster)) > 0\n      for: 10m\n      labels:\n        severity: warning\n    - alert: KubeCPUQuotaOvercommit\n      annotations:\n        description: Cluster {{ $labels.cluster }}  has overcommitted CPU resource\n          requests for Namespaces.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubecpuquotaovercommit\n        summary: Cluster has overcommitted CPU resource requests.\n      expr: |\n        sum(min without(resource) (kube_resourcequota{job=\"kube-state-metrics\", type=\"hard\", resource=~\"(cpu|requests.cpu)\"})) by (cluster)\n          /\n        sum(kube_node_status_allocatable{resource=\"cpu\", job=\"kube-state-metrics\"}) by (cluster)\n          > 1.5\n      for: 5m\n      labels:\n        severity: warning\n    - alert: KubeMemoryQuotaOvercommit\n      annotations:\n        description: Cluster {{ $labels.cluster }}  has overcommitted memory resource\n          requests for Namespaces.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubememoryquotaovercommit\n        summary: Cluster has overcommitted memory resource requests.\n      expr: |\n        sum(min without(resource) (kube_resourcequota{job=\"kube-state-metrics\", type=\"hard\", resource=~\"(memory|requests.memory)\"})) by (cluster)\n          /\n        sum(kube_node_status_allocatable{resource=\"memory\", job=\"kube-state-metrics\"}) by (cluster)\n          > 1.5\n      for: 5m\n      labels:\n        severity: warning\n    - alert: KubeQuotaAlmostFull\n      annotations:\n        description: Namespace {{ $labels.namespace }} is using {{ $value | humanizePercentage\n          }} of its {{ $labels.resource }} quota.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubequotaalmostfull\n        summary: Namespace quota is going to be full.\n      expr: |\n        kube_resourcequota{job=\"kube-state-metrics\", type=\"used\"}\n          / ignoring(instance, job, type)\n        (kube_resourcequota{job=\"kube-state-metrics\", type=\"hard\"} > 0)\n          > 0.9 < 1\n      for: 15m\n      labels:\n        severity: info\n    - alert: KubeQuotaFullyUsed\n      annotations:\n        description: Namespace {{ $labels.namespace }} is using {{ $value | humanizePercentage\n          }} of its {{ $labels.resource }} quota.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubequotafullyused\n        summary: Namespace quota is fully used.\n      expr: |\n        kube_resourcequota{job=\"kube-state-metrics\", type=\"used\"}\n          / ignoring(instance, job, type)\n        (kube_resourcequota{job=\"kube-state-metrics\", type=\"hard\"} > 0)\n          == 1\n      for: 15m\n      labels:\n        severity: info\n    - alert: KubeQuotaExceeded\n      annotations:\n        description: Namespace {{ $labels.namespace }} is using {{ $value | humanizePercentage\n          }} of its {{ $labels.resource }} quota.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubequotaexceeded\n        summary: Namespace quota has exceeded the limits.\n      expr: |\n        kube_resourcequota{job=\"kube-state-metrics\", type=\"used\"}\n          / ignoring(instance, job, type)\n        (kube_resourcequota{job=\"kube-state-metrics\", type=\"hard\"} > 0)\n          > 1\n      for: 15m\n      labels:\n        severity: warning\n    - alert: CPUThrottlingHigh\n      annotations:\n        description: '{{ $value | humanizePercentage }} throttling of CPU in namespace\n          {{ $labels.namespace }} for container {{ $labels.container }} in pod {{\n          $labels.pod }}.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/cputhrottlinghigh\n        summary: Processes experience elevated CPU throttling.\n      expr: |\n        sum(increase(container_cpu_cfs_throttled_periods_total{container!=\"\", }[5m])) by (container, pod, namespace)\n          /\n        sum(increase(container_cpu_cfs_periods_total{}[5m])) by (container, pod, namespace)\n          > ( 25 / 100 )\n      for: 15m\n      labels:\n        severity: info\n  - name: kubernetes-storage\n    rules:\n    - alert: KubePersistentVolumeFillingUp\n      annotations:\n        description: The PersistentVolume claimed by {{ $labels.persistentvolumeclaim\n          }} in Namespace {{ $labels.namespace }} is only {{ $value | humanizePercentage\n          }} free.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubepersistentvolumefillingup\n        summary: PersistentVolume is filling up.\n      expr: |\n        (\n          kubelet_volume_stats_available_bytes{job=\"kubelet\", metrics_path=\"/metrics\"}\n            /\n          kubelet_volume_stats_capacity_bytes{job=\"kubelet\", metrics_path=\"/metrics\"}\n        ) < 0.03\n        and\n        kubelet_volume_stats_used_bytes{job=\"kubelet\", metrics_path=\"/metrics\"} > 0\n        unless on(namespace, persistentvolumeclaim)\n        kube_persistentvolumeclaim_access_mode{ access_mode=\"ReadOnlyMany\"} == 1\n        unless on(namespace, persistentvolumeclaim)\n        kube_persistentvolumeclaim_labels{label_excluded_from_alerts=\"true\"} == 1\n      for: 1m\n      labels:\n        severity: critical\n    - alert: KubePersistentVolumeFillingUp\n      annotations:\n        description: Based on recent sampling, the PersistentVolume claimed by {{\n          $labels.persistentvolumeclaim }} in Namespace {{ $labels.namespace }} is\n          expected to fill up within four days. Currently {{ $value | humanizePercentage\n          }} is available.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubepersistentvolumefillingup\n        summary: PersistentVolume is filling up.\n      expr: |\n        (\n          kubelet_volume_stats_available_bytes{job=\"kubelet\", metrics_path=\"/metrics\"}\n            /\n          kubelet_volume_stats_capacity_bytes{job=\"kubelet\", metrics_path=\"/metrics\"}\n        ) < 0.15\n        and\n        kubelet_volume_stats_used_bytes{job=\"kubelet\", metrics_path=\"/metrics\"} > 0\n        and\n        predict_linear(kubelet_volume_stats_available_bytes{job=\"kubelet\", metrics_path=\"/metrics\"}[6h], 4 * 24 * 3600) < 0\n        unless on(namespace, persistentvolumeclaim)\n        kube_persistentvolumeclaim_access_mode{ access_mode=\"ReadOnlyMany\"} == 1\n        unless on(namespace, persistentvolumeclaim)\n        kube_persistentvolumeclaim_labels{label_excluded_from_alerts=\"true\"} == 1\n      for: 1h\n      labels:\n        severity: warning\n    - alert: KubePersistentVolumeInodesFillingUp\n      annotations:\n        description: The PersistentVolume claimed by {{ $labels.persistentvolumeclaim\n          }} in Namespace {{ $labels.namespace }} only has {{ $value | humanizePercentage\n          }} free inodes.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubepersistentvolumeinodesfillingup\n        summary: PersistentVolumeInodes are filling up.\n      expr: |\n        (\n          kubelet_volume_stats_inodes_free{job=\"kubelet\", metrics_path=\"/metrics\"}\n            /\n          kubelet_volume_stats_inodes{job=\"kubelet\", metrics_path=\"/metrics\"}\n        ) < 0.03\n        and\n        kubelet_volume_stats_inodes_used{job=\"kubelet\", metrics_path=\"/metrics\"} > 0\n        unless on(namespace, persistentvolumeclaim)\n        kube_persistentvolumeclaim_access_mode{ access_mode=\"ReadOnlyMany\"} == 1\n        unless on(namespace, persistentvolumeclaim)\n        kube_persistentvolumeclaim_labels{label_excluded_from_alerts=\"true\"} == 1\n      for: 1m\n      labels:\n        severity: critical\n    - alert: KubePersistentVolumeInodesFillingUp\n      annotations:\n        description: Based on recent sampling, the PersistentVolume claimed by {{\n          $labels.persistentvolumeclaim }} in Namespace {{ $labels.namespace }} is\n          expected to run out of inodes within four days. Currently {{ $value | humanizePercentage\n          }} of its inodes are free.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubepersistentvolumeinodesfillingup\n        summary: PersistentVolumeInodes are filling up.\n      expr: |\n        (\n          kubelet_volume_stats_inodes_free{job=\"kubelet\", metrics_path=\"/metrics\"}\n            /\n          kubelet_volume_stats_inodes{job=\"kubelet\", metrics_path=\"/metrics\"}\n        ) < 0.15\n        and\n        kubelet_volume_stats_inodes_used{job=\"kubelet\", metrics_path=\"/metrics\"} > 0\n        and\n        predict_linear(kubelet_volume_stats_inodes_free{job=\"kubelet\", metrics_path=\"/metrics\"}[6h], 4 * 24 * 3600) < 0\n        unless on(namespace, persistentvolumeclaim)\n        kube_persistentvolumeclaim_access_mode{ access_mode=\"ReadOnlyMany\"} == 1\n        unless on(namespace, persistentvolumeclaim)\n        kube_persistentvolumeclaim_labels{label_excluded_from_alerts=\"true\"} == 1\n      for: 1h\n      labels:\n        severity: warning\n    - alert: KubePersistentVolumeErrors\n      annotations:\n        description: The persistent volume {{ $labels.persistentvolume }} has status\n          {{ $labels.phase }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubepersistentvolumeerrors\n        summary: PersistentVolume is having issues with provisioning.\n      expr: |\n        kube_persistentvolume_status_phase{phase=~\"Failed|Pending\",job=\"kube-state-metrics\"} > 0\n      for: 5m\n      labels:\n        severity: critical\n  - name: kubernetes-system\n    rules:\n    - alert: KubeVersionMismatch\n      annotations:\n        description: There are {{ $value }} different semantic versions of Kubernetes\n          components running.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeversionmismatch\n        summary: Different semantic versions of Kubernetes components running.\n      expr: |\n        count by (cluster) (count by (git_version, cluster) (label_replace(kubernetes_build_info{job!~\"kube-dns|coredns\"},\"git_version\",\"$1\",\"git_version\",\"(v[0-9]*.[0-9]*).*\"))) > 1\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeClientErrors\n      annotations:\n        description: Kubernetes API server client '{{ $labels.job }}/{{ $labels.instance\n          }}' is experiencing {{ $value | humanizePercentage }} errors.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeclienterrors\n        summary: Kubernetes API server client is experiencing errors.\n      expr: |\n        (sum(rate(rest_client_requests_total{job=\"apiserver\",code=~\"5..\"}[5m])) by (cluster, instance, job, namespace)\n          /\n        sum(rate(rest_client_requests_total{job=\"apiserver\"}[5m])) by (cluster, instance, job, namespace))\n        > 0.01\n      for: 15m\n      labels:\n        severity: warning\n  - name: kube-apiserver-slos\n    rules:\n    - alert: KubeAPIErrorBudgetBurn\n      annotations:\n        description: The API server is burning too much error budget.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeapierrorbudgetburn\n        summary: The API server is burning too much error budget.\n      expr: |\n        sum(apiserver_request:burnrate1h) > (14.40 * 0.01000)\n        and\n        sum(apiserver_request:burnrate5m) > (14.40 * 0.01000)\n      for: 2m\n      labels:\n        long: 1h\n        severity: critical\n        short: 5m\n    - alert: KubeAPIErrorBudgetBurn\n      annotations:\n        description: The API server is burning too much error budget.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeapierrorbudgetburn\n        summary: The API server is burning too much error budget.\n      expr: |\n        sum(apiserver_request:burnrate6h) > (6.00 * 0.01000)\n        and\n        sum(apiserver_request:burnrate30m) > (6.00 * 0.01000)\n      for: 15m\n      labels:\n        long: 6h\n        severity: critical\n        short: 30m\n    - alert: KubeAPIErrorBudgetBurn\n      annotations:\n        description: The API server is burning too much error budget.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeapierrorbudgetburn\n        summary: The API server is burning too much error budget.\n      expr: |\n        sum(apiserver_request:burnrate1d) > (3.00 * 0.01000)\n        and\n        sum(apiserver_request:burnrate2h) > (3.00 * 0.01000)\n      for: 1h\n      labels:\n        long: 1d\n        severity: warning\n        short: 2h\n    - alert: KubeAPIErrorBudgetBurn\n      annotations:\n        description: The API server is burning too much error budget.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeapierrorbudgetburn\n        summary: The API server is burning too much error budget.\n      expr: |\n        sum(apiserver_request:burnrate3d) > (1.00 * 0.01000)\n        and\n        sum(apiserver_request:burnrate6h) > (1.00 * 0.01000)\n      for: 3h\n      labels:\n        long: 3d\n        severity: warning\n        short: 6h\n  - name: kubernetes-system-apiserver\n    rules:\n    - alert: KubeClientCertificateExpiration\n      annotations:\n        description: A client certificate used to authenticate to kubernetes apiserver\n          is expiring in less than 7.0 days.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeclientcertificateexpiration\n        summary: Client certificate is about to expire.\n      expr: |\n        apiserver_client_certificate_expiration_seconds_count{job=\"apiserver\"} > 0 and on(job) histogram_quantile(0.01, sum by (job, le) (rate(apiserver_client_certificate_expiration_seconds_bucket{job=\"apiserver\"}[5m]))) < 604800\n      for: 5m\n      labels:\n        severity: warning\n    - alert: KubeClientCertificateExpiration\n      annotations:\n        description: A client certificate used to authenticate to kubernetes apiserver\n          is expiring in less than 24.0 hours.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeclientcertificateexpiration\n        summary: Client certificate is about to expire.\n      expr: |\n        apiserver_client_certificate_expiration_seconds_count{job=\"apiserver\"} > 0 and on(job) histogram_quantile(0.01, sum by (job, le) (rate(apiserver_client_certificate_expiration_seconds_bucket{job=\"apiserver\"}[5m]))) < 86400\n      for: 5m\n      labels:\n        severity: critical\n    - alert: KubeAggregatedAPIErrors\n      annotations:\n        description: Kubernetes aggregated API {{ $labels.name }}/{{ $labels.namespace\n          }} has reported errors. It has appeared unavailable {{ $value | humanize\n          }} times averaged over the past 10m.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeaggregatedapierrors\n        summary: Kubernetes aggregated API has reported errors.\n      expr: |\n        sum by(name, namespace, cluster)(increase(aggregator_unavailable_apiservice_total{job=\"apiserver\"}[10m])) > 4\n      labels:\n        severity: warning\n    - alert: KubeAggregatedAPIDown\n      annotations:\n        description: Kubernetes aggregated API {{ $labels.name }}/{{ $labels.namespace\n          }} has been only {{ $value | humanize }}% available over the last 10m.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeaggregatedapidown\n        summary: Kubernetes aggregated API is down.\n      expr: |\n        (1 - max by(name, namespace, cluster)(avg_over_time(aggregator_unavailable_apiservice{job=\"apiserver\"}[10m]))) * 100 < 85\n      for: 5m\n      labels:\n        severity: warning\n    - alert: KubeAPIDown\n      annotations:\n        description: KubeAPI has disappeared from Prometheus target discovery.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeapidown\n        summary: Target disappeared from Prometheus target discovery.\n      expr: |\n        absent(up{job=\"apiserver\"} == 1)\n      for: 15m\n      labels:\n        severity: critical\n    - alert: KubeAPITerminatedRequests\n      annotations:\n        description: The kubernetes apiserver has terminated {{ $value | humanizePercentage\n          }} of its incoming requests.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeapiterminatedrequests\n        summary: The kubernetes apiserver has terminated {{ $value | humanizePercentage\n          }} of its incoming requests.\n      expr: |\n        sum(rate(apiserver_request_terminations_total{job=\"apiserver\"}[10m]))  / (  sum(rate(apiserver_request_total{job=\"apiserver\"}[10m])) + sum(rate(apiserver_request_terminations_total{job=\"apiserver\"}[10m])) ) > 0.20\n      for: 5m\n      labels:\n        severity: warning\n  - name: kubernetes-system-kubelet\n    rules:\n    - alert: KubeNodeNotReady\n      annotations:\n        description: '{{ $labels.node }} has been unready for more than 15 minutes.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubenodenotready\n        summary: Node is not ready.\n      expr: |\n        kube_node_status_condition{job=\"kube-state-metrics\",condition=\"Ready\",status=\"true\"} == 0\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeNodeUnreachable\n      annotations:\n        description: '{{ $labels.node }} is unreachable and some workloads may be\n          rescheduled.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubenodeunreachable\n        summary: Node is unreachable.\n      expr: |\n        (kube_node_spec_taint{job=\"kube-state-metrics\",key=\"node.kubernetes.io/unreachable\",effect=\"NoSchedule\"} unless ignoring(key,value) kube_node_spec_taint{job=\"kube-state-metrics\",key=~\"ToBeDeletedByClusterAutoscaler|cloud.google.com/impending-node-termination|aws-node-termination-handler/spot-itn\"}) == 1\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeletTooManyPods\n      annotations:\n        description: Kubelet '{{ $labels.node }}' is running at {{ $value | humanizePercentage\n          }} of its Pod capacity.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubelettoomanypods\n        summary: Kubelet is running at capacity.\n      expr: |\n        count by(cluster, node) (\n          (kube_pod_status_phase{job=\"kube-state-metrics\",phase=\"Running\"} == 1) * on(instance,pod,namespace,cluster) group_left(node) topk by(instance,pod,namespace,cluster) (1, kube_pod_info{job=\"kube-state-metrics\"})\n        )\n        /\n        max by(cluster, node) (\n          kube_node_status_capacity{job=\"kube-state-metrics\",resource=\"pods\"} != 1\n        ) > 0.95\n      for: 15m\n      labels:\n        severity: info\n    - alert: KubeNodeReadinessFlapping\n      annotations:\n        description: The readiness status of node {{ $labels.node }} has changed {{\n          $value }} times in the last 15 minutes.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubenodereadinessflapping\n        summary: Node readiness status is flapping.\n      expr: |\n        sum(changes(kube_node_status_condition{job=\"kube-state-metrics\",status=\"true\",condition=\"Ready\"}[15m])) by (cluster, node) > 2\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeletPlegDurationHigh\n      annotations:\n        description: The Kubelet Pod Lifecycle Event Generator has a 99th percentile\n          duration of {{ $value }} seconds on node {{ $labels.node }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeletplegdurationhigh\n        summary: Kubelet Pod Lifecycle Event Generator is taking too long to relist.\n      expr: |\n        node_quantile:kubelet_pleg_relist_duration_seconds:histogram_quantile{quantile=\"0.99\"} >= 10\n      for: 5m\n      labels:\n        severity: warning\n    - alert: KubeletPodStartUpLatencyHigh\n      annotations:\n        description: Kubelet Pod startup 99th percentile latency is {{ $value }} seconds\n          on node {{ $labels.node }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeletpodstartuplatencyhigh\n        summary: Kubelet Pod startup latency is too high.\n      expr: |\n        histogram_quantile(0.99, sum(rate(kubelet_pod_worker_duration_seconds_bucket{job=\"kubelet\", metrics_path=\"/metrics\"}[5m])) by (cluster, instance, le)) * on(cluster, instance) group_left(node) kubelet_node_name{job=\"kubelet\", metrics_path=\"/metrics\"} > 60\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeletClientCertificateExpiration\n      annotations:\n        description: Client certificate for Kubelet on node {{ $labels.node }} expires\n          in {{ $value | humanizeDuration }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeletclientcertificateexpiration\n        summary: Kubelet client certificate is about to expire.\n      expr: |\n        kubelet_certificate_manager_client_ttl_seconds < 604800\n      labels:\n        severity: warning\n    - alert: KubeletClientCertificateExpiration\n      annotations:\n        description: Client certificate for Kubelet on node {{ $labels.node }} expires\n          in {{ $value | humanizeDuration }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeletclientcertificateexpiration\n        summary: Kubelet client certificate is about to expire.\n      expr: |\n        kubelet_certificate_manager_client_ttl_seconds < 86400\n      labels:\n        severity: critical\n    - alert: KubeletServerCertificateExpiration\n      annotations:\n        description: Server certificate for Kubelet on node {{ $labels.node }} expires\n          in {{ $value | humanizeDuration }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeletservercertificateexpiration\n        summary: Kubelet server certificate is about to expire.\n      expr: |\n        kubelet_certificate_manager_server_ttl_seconds < 604800\n      labels:\n        severity: warning\n    - alert: KubeletServerCertificateExpiration\n      annotations:\n        description: Server certificate for Kubelet on node {{ $labels.node }} expires\n          in {{ $value | humanizeDuration }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeletservercertificateexpiration\n        summary: Kubelet server certificate is about to expire.\n      expr: |\n        kubelet_certificate_manager_server_ttl_seconds < 86400\n      labels:\n        severity: critical\n    - alert: KubeletClientCertificateRenewalErrors\n      annotations:\n        description: Kubelet on node {{ $labels.node }} has failed to renew its client\n          certificate ({{ $value | humanize }} errors in the last 5 minutes).\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeletclientcertificaterenewalerrors\n        summary: Kubelet has failed to renew its client certificate.\n      expr: |\n        increase(kubelet_certificate_manager_client_expiration_renew_errors[5m]) > 0\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeletServerCertificateRenewalErrors\n      annotations:\n        description: Kubelet on node {{ $labels.node }} has failed to renew its server\n          certificate ({{ $value | humanize }} errors in the last 5 minutes).\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeletservercertificaterenewalerrors\n        summary: Kubelet has failed to renew its server certificate.\n      expr: |\n        increase(kubelet_server_expiration_renew_errors[5m]) > 0\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeletDown\n      annotations:\n        description: Kubelet has disappeared from Prometheus target discovery.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeletdown\n        summary: Target disappeared from Prometheus target discovery.\n      expr: |\n        absent(up{job=\"kubelet\", metrics_path=\"/metrics\"} == 1)\n      for: 15m\n      labels:\n        severity: critical\n  - name: kubernetes-system-scheduler\n    rules:\n    - alert: KubeSchedulerDown\n      annotations:\n        description: KubeScheduler has disappeared from Prometheus target discovery.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeschedulerdown\n        summary: Target disappeared from Prometheus target discovery.\n      expr: |\n        absent(up{job=\"kube-scheduler\"} == 1)\n      for: 15m\n      labels:\n        severity: critical\n  - name: kubernetes-system-controller-manager\n    rules:\n    - alert: KubeControllerManagerDown\n      annotations:\n        description: KubeControllerManager has disappeared from Prometheus target\n          discovery.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubecontrollermanagerdown\n        summary: Target disappeared from Prometheus target discovery.\n      expr: |\n        absent(up{job=\"kube-controller-manager\"} == 1)\n      for: 15m\n      labels:\n        severity: critical\n  - name: kube-apiserver-burnrate.rules\n    rules:\n    - expr: |\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_count{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\"}[1d]))\n            -\n            (\n              (\n                sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=~\"resource|\",le=\"1\"}[1d]))\n                or\n                vector(0)\n              )\n              +\n              sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"namespace\",le=\"5\"}[1d]))\n              +\n              sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"cluster\",le=\"30\"}[1d]))\n            )\n          )\n          +\n          # errors\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\",code=~\"5..\"}[1d]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\"}[1d]))\n      labels:\n        verb: read\n      record: apiserver_request:burnrate1d\n    - expr: |\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_count{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\"}[1h]))\n            -\n            (\n              (\n                sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=~\"resource|\",le=\"1\"}[1h]))\n                or\n                vector(0)\n              )\n              +\n              sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"namespace\",le=\"5\"}[1h]))\n              +\n              sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"cluster\",le=\"30\"}[1h]))\n            )\n          )\n          +\n          # errors\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\",code=~\"5..\"}[1h]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\"}[1h]))\n      labels:\n        verb: read\n      record: apiserver_request:burnrate1h\n    - expr: |\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_count{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\"}[2h]))\n            -\n            (\n              (\n                sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=~\"resource|\",le=\"1\"}[2h]))\n                or\n                vector(0)\n              )\n              +\n              sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"namespace\",le=\"5\"}[2h]))\n              +\n              sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"cluster\",le=\"30\"}[2h]))\n            )\n          )\n          +\n          # errors\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\",code=~\"5..\"}[2h]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\"}[2h]))\n      labels:\n        verb: read\n      record: apiserver_request:burnrate2h\n    - expr: |\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_count{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\"}[30m]))\n            -\n            (\n              (\n                sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=~\"resource|\",le=\"1\"}[30m]))\n                or\n                vector(0)\n              )\n              +\n              sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"namespace\",le=\"5\"}[30m]))\n              +\n              sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"cluster\",le=\"30\"}[30m]))\n            )\n          )\n          +\n          # errors\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\",code=~\"5..\"}[30m]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\"}[30m]))\n      labels:\n        verb: read\n      record: apiserver_request:burnrate30m\n    - expr: |\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_count{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\"}[3d]))\n            -\n            (\n              (\n                sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=~\"resource|\",le=\"1\"}[3d]))\n                or\n                vector(0)\n              )\n              +\n              sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"namespace\",le=\"5\"}[3d]))\n              +\n              sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"cluster\",le=\"30\"}[3d]))\n            )\n          )\n          +\n          # errors\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\",code=~\"5..\"}[3d]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\"}[3d]))\n      labels:\n        verb: read\n      record: apiserver_request:burnrate3d\n    - expr: |\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_count{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\"}[5m]))\n            -\n            (\n              (\n                sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=~\"resource|\",le=\"1\"}[5m]))\n                or\n                vector(0)\n              )\n              +\n              sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"namespace\",le=\"5\"}[5m]))\n              +\n              sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"cluster\",le=\"30\"}[5m]))\n            )\n          )\n          +\n          # errors\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\",code=~\"5..\"}[5m]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\"}[5m]))\n      labels:\n        verb: read\n      record: apiserver_request:burnrate5m\n    - expr: |\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_count{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\"}[6h]))\n            -\n            (\n              (\n                sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=~\"resource|\",le=\"1\"}[6h]))\n                or\n                vector(0)\n              )\n              +\n              sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"namespace\",le=\"5\"}[6h]))\n              +\n              sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"cluster\",le=\"30\"}[6h]))\n            )\n          )\n          +\n          # errors\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\",code=~\"5..\"}[6h]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\"}[6h]))\n      labels:\n        verb: read\n      record: apiserver_request:burnrate6h\n    - expr: |\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_count{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\"}[1d]))\n            -\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\",le=\"1\"}[1d]))\n          )\n          +\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",code=~\"5..\"}[1d]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\"}[1d]))\n      labels:\n        verb: write\n      record: apiserver_request:burnrate1d\n    - expr: |\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_count{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\"}[1h]))\n            -\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\",le=\"1\"}[1h]))\n          )\n          +\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",code=~\"5..\"}[1h]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\"}[1h]))\n      labels:\n        verb: write\n      record: apiserver_request:burnrate1h\n    - expr: |\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_count{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\"}[2h]))\n            -\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\",le=\"1\"}[2h]))\n          )\n          +\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",code=~\"5..\"}[2h]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\"}[2h]))\n      labels:\n        verb: write\n      record: apiserver_request:burnrate2h\n    - expr: |\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_count{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\"}[30m]))\n            -\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\",le=\"1\"}[30m]))\n          )\n          +\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",code=~\"5..\"}[30m]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\"}[30m]))\n      labels:\n        verb: write\n      record: apiserver_request:burnrate30m\n    - expr: |\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_count{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\"}[3d]))\n            -\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\",le=\"1\"}[3d]))\n          )\n          +\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",code=~\"5..\"}[3d]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\"}[3d]))\n      labels:\n        verb: write\n      record: apiserver_request:burnrate3d\n    - expr: |\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_count{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\"}[5m]))\n            -\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\",le=\"1\"}[5m]))\n          )\n          +\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",code=~\"5..\"}[5m]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\"}[5m]))\n      labels:\n        verb: write\n      record: apiserver_request:burnrate5m\n    - expr: |\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_count{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\"}[6h]))\n            -\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\",le=\"1\"}[6h]))\n          )\n          +\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",code=~\"5..\"}[6h]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\"}[6h]))\n      labels:\n        verb: write\n      record: apiserver_request:burnrate6h\n  - name: kube-apiserver-histogram.rules\n    rules:\n    - expr: |\n        histogram_quantile(0.99, sum by (cluster, le, resource) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\"}[5m]))) > 0\n      labels:\n        quantile: \"0.99\"\n        verb: read\n      record: cluster_quantile:apiserver_request_slo_duration_seconds:histogram_quantile\n    - expr: |\n        histogram_quantile(0.99, sum by (cluster, le, resource) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\"}[5m]))) > 0\n      labels:\n        quantile: \"0.99\"\n        verb: write\n      record: cluster_quantile:apiserver_request_slo_duration_seconds:histogram_quantile\n  - interval: 3m\n    name: kube-apiserver-availability.rules\n    rules:\n    - expr: |\n        avg_over_time(code_verb:apiserver_request_total:increase1h[30d]) * 24 * 30\n      record: code_verb:apiserver_request_total:increase30d\n    - expr: |\n        sum by (cluster, code) (code_verb:apiserver_request_total:increase30d{verb=~\"LIST|GET\"})\n      labels:\n        verb: read\n      record: code:apiserver_request_total:increase30d\n    - expr: |\n        sum by (cluster, code) (code_verb:apiserver_request_total:increase30d{verb=~\"POST|PUT|PATCH|DELETE\"})\n      labels:\n        verb: write\n      record: code:apiserver_request_total:increase30d\n    - expr: |\n        sum by (cluster, verb, scope) (increase(apiserver_request_slo_duration_seconds_count{job=\"apiserver\"}[1h]))\n      record: cluster_verb_scope:apiserver_request_slo_duration_seconds_count:increase1h\n    - expr: |\n        sum by (cluster, verb, scope) (avg_over_time(cluster_verb_scope:apiserver_request_slo_duration_seconds_count:increase1h[30d]) * 24 * 30)\n      record: cluster_verb_scope:apiserver_request_slo_duration_seconds_count:increase30d\n    - expr: |\n        sum by (cluster, verb, scope, le) (increase(apiserver_request_slo_duration_seconds_bucket[1h]))\n      record: cluster_verb_scope_le:apiserver_request_slo_duration_seconds_bucket:increase1h\n    - expr: |\n        sum by (cluster, verb, scope, le) (avg_over_time(cluster_verb_scope_le:apiserver_request_slo_duration_seconds_bucket:increase1h[30d]) * 24 * 30)\n      record: cluster_verb_scope_le:apiserver_request_slo_duration_seconds_bucket:increase30d\n    - expr: |\n        1 - (\n          (\n            # write too slow\n            sum by (cluster) (cluster_verb_scope:apiserver_request_slo_duration_seconds_count:increase30d{verb=~\"POST|PUT|PATCH|DELETE\"})\n            -\n            sum by (cluster) (cluster_verb_scope_le:apiserver_request_slo_duration_seconds_bucket:increase30d{verb=~\"POST|PUT|PATCH|DELETE\",le=\"1\"})\n          ) +\n          (\n            # read too slow\n            sum by (cluster) (cluster_verb_scope:apiserver_request_slo_duration_seconds_count:increase30d{verb=~\"LIST|GET\"})\n            -\n            (\n              (\n                sum by (cluster) (cluster_verb_scope_le:apiserver_request_slo_duration_seconds_bucket:increase30d{verb=~\"LIST|GET\",scope=~\"resource|\",le=\"1\"})\n                or\n                vector(0)\n              )\n              +\n              sum by (cluster) (cluster_verb_scope_le:apiserver_request_slo_duration_seconds_bucket:increase30d{verb=~\"LIST|GET\",scope=\"namespace\",le=\"5\"})\n              +\n              sum by (cluster) (cluster_verb_scope_le:apiserver_request_slo_duration_seconds_bucket:increase30d{verb=~\"LIST|GET\",scope=\"cluster\",le=\"30\"})\n            )\n          ) +\n          # errors\n          sum by (cluster) (code:apiserver_request_total:increase30d{code=~\"5..\"} or vector(0))\n        )\n        /\n        sum by (cluster) (code:apiserver_request_total:increase30d)\n      labels:\n        verb: all\n      record: apiserver_request:availability30d\n    - expr: |\n        1 - (\n          sum by (cluster) (cluster_verb_scope:apiserver_request_slo_duration_seconds_count:increase30d{verb=~\"LIST|GET\"})\n          -\n          (\n            # too slow\n            (\n              sum by (cluster) (cluster_verb_scope_le:apiserver_request_slo_duration_seconds_bucket:increase30d{verb=~\"LIST|GET\",scope=~\"resource|\",le=\"1\"})\n              or\n              vector(0)\n            )\n            +\n            sum by (cluster) (cluster_verb_scope_le:apiserver_request_slo_duration_seconds_bucket:increase30d{verb=~\"LIST|GET\",scope=\"namespace\",le=\"5\"})\n            +\n            sum by (cluster) (cluster_verb_scope_le:apiserver_request_slo_duration_seconds_bucket:increase30d{verb=~\"LIST|GET\",scope=\"cluster\",le=\"30\"})\n          )\n          +\n          # errors\n          sum by (cluster) (code:apiserver_request_total:increase30d{verb=\"read\",code=~\"5..\"} or vector(0))\n        )\n        /\n        sum by (cluster) (code:apiserver_request_total:increase30d{verb=\"read\"})\n      labels:\n        verb: read\n      record: apiserver_request:availability30d\n    - expr: |\n        1 - (\n          (\n            # too slow\n            sum by (cluster) (cluster_verb_scope:apiserver_request_slo_duration_seconds_count:increase30d{verb=~\"POST|PUT|PATCH|DELETE\"})\n            -\n            sum by (cluster) (cluster_verb_scope_le:apiserver_request_slo_duration_seconds_bucket:increase30d{verb=~\"POST|PUT|PATCH|DELETE\",le=\"1\"})\n          )\n          +\n          # errors\n          sum by (cluster) (code:apiserver_request_total:increase30d{verb=\"write\",code=~\"5..\"} or vector(0))\n        )\n        /\n        sum by (cluster) (code:apiserver_request_total:increase30d{verb=\"write\"})\n      labels:\n        verb: write\n      record: apiserver_request:availability30d\n    - expr: |\n        sum by (cluster,code,resource) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\"}[5m]))\n      labels:\n        verb: read\n      record: code_resource:apiserver_request_total:rate5m\n    - expr: |\n        sum by (cluster,code,resource) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\"}[5m]))\n      labels:\n        verb: write\n      record: code_resource:apiserver_request_total:rate5m\n    - expr: |\n        sum by (cluster, code, verb) (increase(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET|POST|PUT|PATCH|DELETE\",code=~\"2..\"}[1h]))\n      record: code_verb:apiserver_request_total:increase1h\n    - expr: |\n        sum by (cluster, code, verb) (increase(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET|POST|PUT|PATCH|DELETE\",code=~\"3..\"}[1h]))\n      record: code_verb:apiserver_request_total:increase1h\n    - expr: |\n        sum by (cluster, code, verb) (increase(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET|POST|PUT|PATCH|DELETE\",code=~\"4..\"}[1h]))\n      record: code_verb:apiserver_request_total:increase1h\n    - expr: |\n        sum by (cluster, code, verb) (increase(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET|POST|PUT|PATCH|DELETE\",code=~\"5..\"}[1h]))\n      record: code_verb:apiserver_request_total:increase1h\n  - name: k8s.rules\n    rules:\n    - expr: |\n        sum by (cluster, namespace, pod, container) (\n          irate(container_cpu_usage_seconds_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", image!=\"\"}[5m])\n        ) * on (cluster, namespace, pod) group_left(node) topk by (cluster, namespace, pod) (\n          1, max by(cluster, namespace, pod, node) (kube_pod_info{node!=\"\"})\n        )\n      record: node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate\n    - expr: |\n        container_memory_working_set_bytes{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", image!=\"\"}\n        * on (cluster, namespace, pod) group_left(node) topk by(cluster, namespace, pod) (1,\n          max by(cluster, namespace, pod, node) (kube_pod_info{node!=\"\"})\n        )\n      record: node_namespace_pod_container:container_memory_working_set_bytes\n    - expr: |\n        container_memory_rss{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", image!=\"\"}\n        * on (cluster, namespace, pod) group_left(node) topk by(cluster, namespace, pod) (1,\n          max by(cluster, namespace, pod, node) (kube_pod_info{node!=\"\"})\n        )\n      record: node_namespace_pod_container:container_memory_rss\n    - expr: |\n        container_memory_cache{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", image!=\"\"}\n        * on (cluster, namespace, pod) group_left(node) topk by(cluster, namespace, pod) (1,\n          max by(cluster, namespace, pod, node) (kube_pod_info{node!=\"\"})\n        )\n      record: node_namespace_pod_container:container_memory_cache\n    - expr: |\n        container_memory_swap{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", image!=\"\"}\n        * on (cluster, namespace, pod) group_left(node) topk by(cluster, namespace, pod) (1,\n          max by(cluster, namespace, pod, node) (kube_pod_info{node!=\"\"})\n        )\n      record: node_namespace_pod_container:container_memory_swap\n    - expr: |\n        kube_pod_container_resource_requests{resource=\"memory\",job=\"kube-state-metrics\"}  * on (namespace, pod, cluster)\n        group_left() max by (namespace, pod, cluster) (\n          (kube_pod_status_phase{phase=~\"Pending|Running\"} == 1)\n        )\n      record: cluster:namespace:pod_memory:active:kube_pod_container_resource_requests\n    - expr: |\n        sum by (namespace, cluster) (\n            sum by (namespace, pod, cluster) (\n                max by (namespace, pod, container, cluster) (\n                  kube_pod_container_resource_requests{resource=\"memory\",job=\"kube-state-metrics\"}\n                ) * on(namespace, pod, cluster) group_left() max by (namespace, pod, cluster) (\n                  kube_pod_status_phase{phase=~\"Pending|Running\"} == 1\n                )\n            )\n        )\n      record: namespace_memory:kube_pod_container_resource_requests:sum\n    - expr: |\n        kube_pod_container_resource_requests{resource=\"cpu\",job=\"kube-state-metrics\"}  * on (namespace, pod, cluster)\n        group_left() max by (namespace, pod, cluster) (\n          (kube_pod_status_phase{phase=~\"Pending|Running\"} == 1)\n        )\n      record: cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests\n    - expr: |\n        sum by (namespace, cluster) (\n            sum by (namespace, pod, cluster) (\n                max by (namespace, pod, container, cluster) (\n                  kube_pod_container_resource_requests{resource=\"cpu\",job=\"kube-state-metrics\"}\n                ) * on(namespace, pod, cluster) group_left() max by (namespace, pod, cluster) (\n                  kube_pod_status_phase{phase=~\"Pending|Running\"} == 1\n                )\n            )\n        )\n      record: namespace_cpu:kube_pod_container_resource_requests:sum\n    - expr: |\n        kube_pod_container_resource_limits{resource=\"memory\",job=\"kube-state-metrics\"}  * on (namespace, pod, cluster)\n        group_left() max by (namespace, pod, cluster) (\n          (kube_pod_status_phase{phase=~\"Pending|Running\"} == 1)\n        )\n      record: cluster:namespace:pod_memory:active:kube_pod_container_resource_limits\n    - expr: |\n        sum by (namespace, cluster) (\n            sum by (namespace, pod, cluster) (\n                max by (namespace, pod, container, cluster) (\n                  kube_pod_container_resource_limits{resource=\"memory\",job=\"kube-state-metrics\"}\n                ) * on(namespace, pod, cluster) group_left() max by (namespace, pod, cluster) (\n                  kube_pod_status_phase{phase=~\"Pending|Running\"} == 1\n                )\n            )\n        )\n      record: namespace_memory:kube_pod_container_resource_limits:sum\n    - expr: |\n        kube_pod_container_resource_limits{resource=\"cpu\",job=\"kube-state-metrics\"}  * on (namespace, pod, cluster)\n        group_left() max by (namespace, pod, cluster) (\n         (kube_pod_status_phase{phase=~\"Pending|Running\"} == 1)\n         )\n      record: cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits\n    - expr: |\n        sum by (namespace, cluster) (\n            sum by (namespace, pod, cluster) (\n                max by (namespace, pod, container, cluster) (\n                  kube_pod_container_resource_limits{resource=\"cpu\",job=\"kube-state-metrics\"}\n                ) * on(namespace, pod, cluster) group_left() max by (namespace, pod, cluster) (\n                  kube_pod_status_phase{phase=~\"Pending|Running\"} == 1\n                )\n            )\n        )\n      record: namespace_cpu:kube_pod_container_resource_limits:sum\n    - expr: |\n        max by (cluster, namespace, workload, pod) (\n          label_replace(\n            label_replace(\n              kube_pod_owner{job=\"kube-state-metrics\", owner_kind=\"ReplicaSet\"},\n              \"replicaset\", \"$1\", \"owner_name\", \"(.*)\"\n            ) * on(replicaset, namespace) group_left(owner_name) topk by(replicaset, namespace) (\n              1, max by (replicaset, namespace, owner_name) (\n                kube_replicaset_owner{job=\"kube-state-metrics\"}\n              )\n            ),\n            \"workload\", \"$1\", \"owner_name\", \"(.*)\"\n          )\n        )\n      labels:\n        workload_type: deployment\n      record: namespace_workload_pod:kube_pod_owner:relabel\n    - expr: |\n        max by (cluster, namespace, workload, pod) (\n          label_replace(\n            kube_pod_owner{job=\"kube-state-metrics\", owner_kind=\"DaemonSet\"},\n            \"workload\", \"$1\", \"owner_name\", \"(.*)\"\n          )\n        )\n      labels:\n        workload_type: daemonset\n      record: namespace_workload_pod:kube_pod_owner:relabel\n    - expr: |\n        max by (cluster, namespace, workload, pod) (\n          label_replace(\n            kube_pod_owner{job=\"kube-state-metrics\", owner_kind=\"StatefulSet\"},\n            \"workload\", \"$1\", \"owner_name\", \"(.*)\"\n          )\n        )\n      labels:\n        workload_type: statefulset\n      record: namespace_workload_pod:kube_pod_owner:relabel\n    - expr: |\n        max by (cluster, namespace, workload, pod) (\n          label_replace(\n            kube_pod_owner{job=\"kube-state-metrics\", owner_kind=\"Job\"},\n            \"workload\", \"$1\", \"owner_name\", \"(.*)\"\n          )\n        )\n      labels:\n        workload_type: job\n      record: namespace_workload_pod:kube_pod_owner:relabel\n  - name: kube-scheduler.rules\n    rules:\n    - expr: |\n        histogram_quantile(0.99, sum(rate(scheduler_e2e_scheduling_duration_seconds_bucket{job=\"kube-scheduler\"}[5m])) without(instance, pod))\n      labels:\n        quantile: \"0.99\"\n      record: cluster_quantile:scheduler_e2e_scheduling_duration_seconds:histogram_quantile\n    - expr: |\n        histogram_quantile(0.99, sum(rate(scheduler_scheduling_algorithm_duration_seconds_bucket{job=\"kube-scheduler\"}[5m])) without(instance, pod))\n      labels:\n        quantile: \"0.99\"\n      record: cluster_quantile:scheduler_scheduling_algorithm_duration_seconds:histogram_quantile\n    - expr: |\n        histogram_quantile(0.99, sum(rate(scheduler_binding_duration_seconds_bucket{job=\"kube-scheduler\"}[5m])) without(instance, pod))\n      labels:\n        quantile: \"0.99\"\n      record: cluster_quantile:scheduler_binding_duration_seconds:histogram_quantile\n    - expr: |\n        histogram_quantile(0.9, sum(rate(scheduler_e2e_scheduling_duration_seconds_bucket{job=\"kube-scheduler\"}[5m])) without(instance, pod))\n      labels:\n        quantile: \"0.9\"\n      record: cluster_quantile:scheduler_e2e_scheduling_duration_seconds:histogram_quantile\n    - expr: |\n        histogram_quantile(0.9, sum(rate(scheduler_scheduling_algorithm_duration_seconds_bucket{job=\"kube-scheduler\"}[5m])) without(instance, pod))\n      labels:\n        quantile: \"0.9\"\n      record: cluster_quantile:scheduler_scheduling_algorithm_duration_seconds:histogram_quantile\n    - expr: |\n        histogram_quantile(0.9, sum(rate(scheduler_binding_duration_seconds_bucket{job=\"kube-scheduler\"}[5m])) without(instance, pod))\n      labels:\n        quantile: \"0.9\"\n      record: cluster_quantile:scheduler_binding_duration_seconds:histogram_quantile\n    - expr: |\n        histogram_quantile(0.5, sum(rate(scheduler_e2e_scheduling_duration_seconds_bucket{job=\"kube-scheduler\"}[5m])) without(instance, pod))\n      labels:\n        quantile: \"0.5\"\n      record: cluster_quantile:scheduler_e2e_scheduling_duration_seconds:histogram_quantile\n    - expr: |\n        histogram_quantile(0.5, sum(rate(scheduler_scheduling_algorithm_duration_seconds_bucket{job=\"kube-scheduler\"}[5m])) without(instance, pod))\n      labels:\n        quantile: \"0.5\"\n      record: cluster_quantile:scheduler_scheduling_algorithm_duration_seconds:histogram_quantile\n    - expr: |\n        histogram_quantile(0.5, sum(rate(scheduler_binding_duration_seconds_bucket{job=\"kube-scheduler\"}[5m])) without(instance, pod))\n      labels:\n        quantile: \"0.5\"\n      record: cluster_quantile:scheduler_binding_duration_seconds:histogram_quantile\n  - name: node.rules\n    rules:\n    - expr: |\n        topk by(cluster, namespace, pod) (1,\n          max by (cluster, node, namespace, pod) (\n            label_replace(kube_pod_info{job=\"kube-state-metrics\",node!=\"\"}, \"pod\", \"$1\", \"pod\", \"(.*)\")\n        ))\n      record: 'node_namespace_pod:kube_pod_info:'\n    - expr: |\n        count by (cluster, node) (\n          node_cpu_seconds_total{mode=\"idle\",job=\"node-exporter\"}\n          * on (namespace, pod) group_left(node)\n          topk by(namespace, pod) (1, node_namespace_pod:kube_pod_info:)\n        )\n      record: node:node_num_cpu:sum\n    - expr: |\n        sum(\n          node_memory_MemAvailable_bytes{job=\"node-exporter\"} or\n          (\n            node_memory_Buffers_bytes{job=\"node-exporter\"} +\n            node_memory_Cached_bytes{job=\"node-exporter\"} +\n            node_memory_MemFree_bytes{job=\"node-exporter\"} +\n            node_memory_Slab_bytes{job=\"node-exporter\"}\n          )\n        ) by (cluster)\n      record: :node_memory_MemAvailable_bytes:sum\n    - expr: |\n        avg by (cluster, node) (\n          sum without (mode) (\n            rate(node_cpu_seconds_total{mode!=\"idle\",mode!=\"iowait\",mode!=\"steal\",job=\"node-exporter\"}[5m])\n          )\n        )\n      record: node:node_cpu_utilization:ratio_rate5m\n    - expr: |\n        avg by (cluster) (\n          node:node_cpu_utilization:ratio_rate5m\n        )\n      record: cluster:node_cpu:ratio_rate5m\n  - name: kubelet.rules\n    rules:\n    - expr: |\n        histogram_quantile(0.99, sum(rate(kubelet_pleg_relist_duration_seconds_bucket{job=\"kubelet\", metrics_path=\"/metrics\"}[5m])) by (cluster, instance, le) * on(cluster, instance) group_left(node) kubelet_node_name{job=\"kubelet\", metrics_path=\"/metrics\"})\n      labels:\n        quantile: \"0.99\"\n      record: node_quantile:kubelet_pleg_relist_duration_seconds:histogram_quantile\n    - expr: |\n        histogram_quantile(0.9, sum(rate(kubelet_pleg_relist_duration_seconds_bucket{job=\"kubelet\", metrics_path=\"/metrics\"}[5m])) by (cluster, instance, le) * on(cluster, instance) group_left(node) kubelet_node_name{job=\"kubelet\", metrics_path=\"/metrics\"})\n      labels:\n        quantile: \"0.9\"\n      record: node_quantile:kubelet_pleg_relist_duration_seconds:histogram_quantile\n    - expr: |\n        histogram_quantile(0.5, sum(rate(kubelet_pleg_relist_duration_seconds_bucket{job=\"kubelet\", metrics_path=\"/metrics\"}[5m])) by (cluster, instance, le) * on(cluster, instance) group_left(node) kubelet_node_name{job=\"kubelet\", metrics_path=\"/metrics\"})\n      labels:\n        quantile: \"0.5\"\n      record: node_quantile:kubelet_pleg_relist_duration_seconds:histogram_quantile\n---\napiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: node-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 1.6.0\n    prometheus: k8s\n    role: alert-rules\n  name: node-exporter-rules\n  namespace: monitoring\nspec:\n  groups:\n  - name: node-exporter\n    rules:\n    - alert: NodeFilesystemSpaceFillingUp\n      annotations:\n        description: Filesystem on {{ $labels.device }} at {{ $labels.instance }}\n          has only {{ printf \"%.2f\" $value }}% available space left and is filling\n          up.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefilesystemspacefillingup\n        summary: Filesystem is predicted to run out of space within the next 24 hours.\n      expr: |\n        (\n          node_filesystem_avail_bytes{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} / node_filesystem_size_bytes{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} * 100 < 15\n        and\n          predict_linear(node_filesystem_avail_bytes{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"}[6h], 24*60*60) < 0\n        and\n          node_filesystem_readonly{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} == 0\n        )\n      for: 1h\n      labels:\n        severity: warning\n    - alert: NodeFilesystemSpaceFillingUp\n      annotations:\n        description: Filesystem on {{ $labels.device }} at {{ $labels.instance }}\n          has only {{ printf \"%.2f\" $value }}% available space left and is filling\n          up fast.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefilesystemspacefillingup\n        summary: Filesystem is predicted to run out of space within the next 4 hours.\n      expr: |\n        (\n          node_filesystem_avail_bytes{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} / node_filesystem_size_bytes{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} * 100 < 10\n        and\n          predict_linear(node_filesystem_avail_bytes{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"}[6h], 4*60*60) < 0\n        and\n          node_filesystem_readonly{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} == 0\n        )\n      for: 1h\n      labels:\n        severity: critical\n    - alert: NodeFilesystemAlmostOutOfSpace\n      annotations:\n        description: Filesystem on {{ $labels.device }} at {{ $labels.instance }}\n          has only {{ printf \"%.2f\" $value }}% available space left.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefilesystemalmostoutofspace\n        summary: Filesystem has less than 5% space left.\n      expr: |\n        (\n          node_filesystem_avail_bytes{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} / node_filesystem_size_bytes{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} * 100 < 5\n        and\n          node_filesystem_readonly{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} == 0\n        )\n      for: 30m\n      labels:\n        severity: warning\n    - alert: NodeFilesystemAlmostOutOfSpace\n      annotations:\n        description: Filesystem on {{ $labels.device }} at {{ $labels.instance }}\n          has only {{ printf \"%.2f\" $value }}% available space left.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefilesystemalmostoutofspace\n        summary: Filesystem has less than 3% space left.\n      expr: |\n        (\n          node_filesystem_avail_bytes{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} / node_filesystem_size_bytes{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} * 100 < 3\n        and\n          node_filesystem_readonly{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} == 0\n        )\n      for: 30m\n      labels:\n        severity: critical\n    - alert: NodeFilesystemFilesFillingUp\n      annotations:\n        description: Filesystem on {{ $labels.device }} at {{ $labels.instance }}\n          has only {{ printf \"%.2f\" $value }}% available inodes left and is filling\n          up.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefilesystemfilesfillingup\n        summary: Filesystem is predicted to run out of inodes within the next 24 hours.\n      expr: |\n        (\n          node_filesystem_files_free{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} / node_filesystem_files{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} * 100 < 40\n        and\n          predict_linear(node_filesystem_files_free{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"}[6h], 24*60*60) < 0\n        and\n          node_filesystem_readonly{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} == 0\n        )\n      for: 1h\n      labels:\n        severity: warning\n    - alert: NodeFilesystemFilesFillingUp\n      annotations:\n        description: Filesystem on {{ $labels.device }} at {{ $labels.instance }}\n          has only {{ printf \"%.2f\" $value }}% available inodes left and is filling\n          up fast.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefilesystemfilesfillingup\n        summary: Filesystem is predicted to run out of inodes within the next 4 hours.\n      expr: |\n        (\n          node_filesystem_files_free{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} / node_filesystem_files{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} * 100 < 20\n        and\n          predict_linear(node_filesystem_files_free{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"}[6h], 4*60*60) < 0\n        and\n          node_filesystem_readonly{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} == 0\n        )\n      for: 1h\n      labels:\n        severity: critical\n    - alert: NodeFilesystemAlmostOutOfFiles\n      annotations:\n        description: Filesystem on {{ $labels.device }} at {{ $labels.instance }}\n          has only {{ printf \"%.2f\" $value }}% available inodes left.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefilesystemalmostoutoffiles\n        summary: Filesystem has less than 5% inodes left.\n      expr: |\n        (\n          node_filesystem_files_free{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} / node_filesystem_files{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} * 100 < 5\n        and\n          node_filesystem_readonly{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} == 0\n        )\n      for: 1h\n      labels:\n        severity: warning\n    - alert: NodeFilesystemAlmostOutOfFiles\n      annotations:\n        description: Filesystem on {{ $labels.device }} at {{ $labels.instance }}\n          has only {{ printf \"%.2f\" $value }}% available inodes left.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefilesystemalmostoutoffiles\n        summary: Filesystem has less than 3% inodes left.\n      expr: |\n        (\n          node_filesystem_files_free{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} / node_filesystem_files{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} * 100 < 3\n        and\n          node_filesystem_readonly{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} == 0\n        )\n      for: 1h\n      labels:\n        severity: critical\n    - alert: NodeNetworkReceiveErrs\n      annotations:\n        description: '{{ $labels.instance }} interface {{ $labels.device }} has encountered\n          {{ printf \"%.0f\" $value }} receive errors in the last two minutes.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodenetworkreceiveerrs\n        summary: Network interface is reporting many receive errors.\n      expr: |\n        rate(node_network_receive_errs_total[2m]) / rate(node_network_receive_packets_total[2m]) > 0.01\n      for: 1h\n      labels:\n        severity: warning\n    - alert: NodeNetworkTransmitErrs\n      annotations:\n        description: '{{ $labels.instance }} interface {{ $labels.device }} has encountered\n          {{ printf \"%.0f\" $value }} transmit errors in the last two minutes.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodenetworktransmiterrs\n        summary: Network interface is reporting many transmit errors.\n      expr: |\n        rate(node_network_transmit_errs_total[2m]) / rate(node_network_transmit_packets_total[2m]) > 0.01\n      for: 1h\n      labels:\n        severity: warning\n    - alert: NodeHighNumberConntrackEntriesUsed\n      annotations:\n        description: '{{ $value | humanizePercentage }} of conntrack entries are used.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodehighnumberconntrackentriesused\n        summary: Number of conntrack are getting close to the limit.\n      expr: |\n        (node_nf_conntrack_entries / node_nf_conntrack_entries_limit) > 0.75\n      labels:\n        severity: warning\n    - alert: NodeTextFileCollectorScrapeError\n      annotations:\n        description: Node Exporter text file collector failed to scrape.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodetextfilecollectorscrapeerror\n        summary: Node Exporter text file collector failed to scrape.\n      expr: |\n        node_textfile_scrape_error{job=\"node-exporter\"} == 1\n      labels:\n        severity: warning\n    - alert: NodeClockSkewDetected\n      annotations:\n        description: Clock on {{ $labels.instance }} is out of sync by more than 0.05s.\n          Ensure NTP is configured correctly on this host.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodeclockskewdetected\n        summary: Clock skew detected.\n      expr: |\n        (\n          node_timex_offset_seconds{job=\"node-exporter\"} > 0.05\n        and\n          deriv(node_timex_offset_seconds{job=\"node-exporter\"}[5m]) >= 0\n        )\n        or\n        (\n          node_timex_offset_seconds{job=\"node-exporter\"} < -0.05\n        and\n          deriv(node_timex_offset_seconds{job=\"node-exporter\"}[5m]) <= 0\n        )\n      for: 10m\n      labels:\n        severity: warning\n    - alert: NodeClockNotSynchronising\n      annotations:\n        description: Clock on {{ $labels.instance }} is not synchronising. Ensure\n          NTP is configured on this host.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodeclocknotsynchronising\n        summary: Clock not synchronising.\n      expr: |\n        min_over_time(node_timex_sync_status{job=\"node-exporter\"}[5m]) == 0\n        and\n        node_timex_maxerror_seconds{job=\"node-exporter\"} >= 16\n      for: 10m\n      labels:\n        severity: warning\n    - alert: NodeRAIDDegraded\n      annotations:\n        description: RAID array '{{ $labels.device }}' on {{ $labels.instance }} is\n          in degraded state due to one or more disks failures. Number of spare drives\n          is insufficient to fix issue automatically.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/noderaiddegraded\n        summary: RAID Array is degraded\n      expr: |\n        node_md_disks_required{job=\"node-exporter\",device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\"} - ignoring (state) (node_md_disks{state=\"active\",job=\"node-exporter\",device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\"}) > 0\n      for: 15m\n      labels:\n        severity: critical\n    - alert: NodeRAIDDiskFailure\n      annotations:\n        description: At least one device in RAID array on {{ $labels.instance }} failed.\n          Array '{{ $labels.device }}' needs attention and possibly a disk swap.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/noderaiddiskfailure\n        summary: Failed device in RAID array\n      expr: |\n        node_md_disks{state=\"failed\",job=\"node-exporter\",device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\"} > 0\n      labels:\n        severity: warning\n    - alert: NodeFileDescriptorLimit\n      annotations:\n        description: File descriptors limit at {{ $labels.instance }} is currently\n          at {{ printf \"%.2f\" $value }}%.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefiledescriptorlimit\n        summary: Kernel is predicted to exhaust file descriptors limit soon.\n      expr: |\n        (\n          node_filefd_allocated{job=\"node-exporter\"} * 100 / node_filefd_maximum{job=\"node-exporter\"} > 70\n        )\n      for: 15m\n      labels:\n        severity: warning\n    - alert: NodeFileDescriptorLimit\n      annotations:\n        description: File descriptors limit at {{ $labels.instance }} is currently\n          at {{ printf \"%.2f\" $value }}%.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefiledescriptorlimit\n        summary: Kernel is predicted to exhaust file descriptors limit soon.\n      expr: |\n        (\n          node_filefd_allocated{job=\"node-exporter\"} * 100 / node_filefd_maximum{job=\"node-exporter\"} > 90\n        )\n      for: 15m\n      labels:\n        severity: critical\n  - name: node-exporter.rules\n    rules:\n    - expr: |\n        count without (cpu, mode) (\n          node_cpu_seconds_total{job=\"node-exporter\",mode=\"idle\"}\n        )\n      record: instance:node_num_cpu:sum\n    - expr: |\n        1 - avg without (cpu) (\n          sum without (mode) (rate(node_cpu_seconds_total{job=\"node-exporter\", mode=~\"idle|iowait|steal\"}[5m]))\n        )\n      record: instance:node_cpu_utilisation:rate5m\n    - expr: |\n        (\n          node_load1{job=\"node-exporter\"}\n        /\n          instance:node_num_cpu:sum{job=\"node-exporter\"}\n        )\n      record: instance:node_load1_per_cpu:ratio\n    - expr: |\n        1 - (\n          (\n            node_memory_MemAvailable_bytes{job=\"node-exporter\"}\n            or\n            (\n              node_memory_Buffers_bytes{job=\"node-exporter\"}\n              +\n              node_memory_Cached_bytes{job=\"node-exporter\"}\n              +\n              node_memory_MemFree_bytes{job=\"node-exporter\"}\n              +\n              node_memory_Slab_bytes{job=\"node-exporter\"}\n            )\n          )\n        /\n          node_memory_MemTotal_bytes{job=\"node-exporter\"}\n        )\n      record: instance:node_memory_utilisation:ratio\n    - expr: |\n        rate(node_vmstat_pgmajfault{job=\"node-exporter\"}[5m])\n      record: instance:node_vmstat_pgmajfault:rate5m\n    - expr: |\n        rate(node_disk_io_time_seconds_total{job=\"node-exporter\", device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\"}[5m])\n      record: instance_device:node_disk_io_time_seconds:rate5m\n    - expr: |\n        rate(node_disk_io_time_weighted_seconds_total{job=\"node-exporter\", device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\"}[5m])\n      record: instance_device:node_disk_io_time_weighted_seconds:rate5m\n    - expr: |\n        sum without (device) (\n          rate(node_network_receive_bytes_total{job=\"node-exporter\", device!=\"lo\"}[5m])\n        )\n      record: instance:node_network_receive_bytes_excluding_lo:rate5m\n    - expr: |\n        sum without (device) (\n          rate(node_network_transmit_bytes_total{job=\"node-exporter\", device!=\"lo\"}[5m])\n        )\n      record: instance:node_network_transmit_bytes_excluding_lo:rate5m\n    - expr: |\n        sum without (device) (\n          rate(node_network_receive_drop_total{job=\"node-exporter\", device!=\"lo\"}[5m])\n        )\n      record: instance:node_network_receive_drop_excluding_lo:rate5m\n    - expr: |\n        sum without (device) (\n          rate(node_network_transmit_drop_total{job=\"node-exporter\", device!=\"lo\"}[5m])\n        )\n      record: instance:node_network_transmit_drop_excluding_lo:rate5m\n---\napiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  labels:\n    app.kubernetes.io/component: prometheus\n    app.kubernetes.io/instance: k8s\n    app.kubernetes.io/name: prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.45.0\n    prometheus: k8s\n    role: alert-rules\n  name: prometheus-k8s-prometheus-rules\n  namespace: monitoring\nspec:\n  groups:\n  - name: prometheus\n    rules:\n    - alert: PrometheusBadConfig\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has failed to\n          reload its configuration.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusbadconfig\n        summary: Failed Prometheus configuration reload.\n      expr: |\n        # Without max_over_time, failed scrapes could create false negatives, see\n        # https://www.robustperception.io/alerting-on-gauges-in-prometheus-2-0 for details.\n        max_over_time(prometheus_config_last_reload_successful{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) == 0\n      for: 10m\n      labels:\n        severity: critical\n    - alert: PrometheusSDRefreshFailure\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has failed to\n          refresh SD with mechanism {{$labels.mechanism}}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheussdrefreshfailure\n        summary: Failed Prometheus SD refresh.\n      expr: |\n        increase(prometheus_sd_refresh_failures_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[10m]) > 0\n      for: 20m\n      labels:\n        severity: warning\n    - alert: PrometheusNotificationQueueRunningFull\n      annotations:\n        description: Alert notification queue of Prometheus {{$labels.namespace}}/{{$labels.pod}}\n          is running full.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusnotificationqueuerunningfull\n        summary: Prometheus alert notification queue predicted to run full in less\n          than 30m.\n      expr: |\n        # Without min_over_time, failed scrapes could create false negatives, see\n        # https://www.robustperception.io/alerting-on-gauges-in-prometheus-2-0 for details.\n        (\n          predict_linear(prometheus_notifications_queue_length{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m], 60 * 30)\n        >\n          min_over_time(prometheus_notifications_queue_capacity{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m])\n        )\n      for: 15m\n      labels:\n        severity: warning\n    - alert: PrometheusErrorSendingAlertsToSomeAlertmanagers\n      annotations:\n        description: '{{ printf \"%.1f\" $value }}% errors while sending alerts from\n          Prometheus {{$labels.namespace}}/{{$labels.pod}} to Alertmanager {{$labels.alertmanager}}.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheuserrorsendingalertstosomealertmanagers\n        summary: Prometheus has encountered more than 1% errors sending alerts to\n          a specific Alertmanager.\n      expr: |\n        (\n          rate(prometheus_notifications_errors_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m])\n        /\n          rate(prometheus_notifications_sent_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m])\n        )\n        * 100\n        > 1\n      for: 15m\n      labels:\n        severity: warning\n    - alert: PrometheusNotConnectedToAlertmanagers\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} is not connected\n          to any Alertmanagers.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusnotconnectedtoalertmanagers\n        summary: Prometheus is not connected to any Alertmanagers.\n      expr: |\n        # Without max_over_time, failed scrapes could create false negatives, see\n        # https://www.robustperception.io/alerting-on-gauges-in-prometheus-2-0 for details.\n        max_over_time(prometheus_notifications_alertmanagers_discovered{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) < 1\n      for: 10m\n      labels:\n        severity: warning\n    - alert: PrometheusTSDBReloadsFailing\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has detected\n          {{$value | humanize}} reload failures over the last 3h.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheustsdbreloadsfailing\n        summary: Prometheus has issues reloading blocks from disk.\n      expr: |\n        increase(prometheus_tsdb_reloads_failures_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[3h]) > 0\n      for: 4h\n      labels:\n        severity: warning\n    - alert: PrometheusTSDBCompactionsFailing\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has detected\n          {{$value | humanize}} compaction failures over the last 3h.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheustsdbcompactionsfailing\n        summary: Prometheus has issues compacting blocks.\n      expr: |\n        increase(prometheus_tsdb_compactions_failed_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[3h]) > 0\n      for: 4h\n      labels:\n        severity: warning\n    - alert: PrometheusNotIngestingSamples\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} is not ingesting\n          samples.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusnotingestingsamples\n        summary: Prometheus is not ingesting samples.\n      expr: |\n        (\n          rate(prometheus_tsdb_head_samples_appended_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) <= 0\n        and\n          (\n            sum without(scrape_job) (prometheus_target_metadata_cache_entries{job=\"prometheus-k8s\",namespace=\"monitoring\"}) > 0\n          or\n            sum without(rule_group) (prometheus_rule_group_rules{job=\"prometheus-k8s\",namespace=\"monitoring\"}) > 0\n          )\n        )\n      for: 10m\n      labels:\n        severity: warning\n    - alert: PrometheusDuplicateTimestamps\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} is dropping\n          {{ printf \"%.4g\" $value  }} samples/s with different values but duplicated\n          timestamp.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusduplicatetimestamps\n        summary: Prometheus is dropping samples with duplicate timestamps.\n      expr: |\n        rate(prometheus_target_scrapes_sample_duplicate_timestamp_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) > 0\n      for: 10m\n      labels:\n        severity: warning\n    - alert: PrometheusOutOfOrderTimestamps\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} is dropping\n          {{ printf \"%.4g\" $value  }} samples/s with timestamps arriving out of order.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusoutofordertimestamps\n        summary: Prometheus drops samples with out-of-order timestamps.\n      expr: |\n        rate(prometheus_target_scrapes_sample_out_of_order_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) > 0\n      for: 10m\n      labels:\n        severity: warning\n    - alert: PrometheusRemoteStorageFailures\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} failed to send\n          {{ printf \"%.1f\" $value }}% of the samples to {{ $labels.remote_name}}:{{\n          $labels.url }}\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusremotestoragefailures\n        summary: Prometheus fails to send samples to remote storage.\n      expr: |\n        (\n          (rate(prometheus_remote_storage_failed_samples_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) or rate(prometheus_remote_storage_samples_failed_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]))\n        /\n          (\n            (rate(prometheus_remote_storage_failed_samples_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) or rate(prometheus_remote_storage_samples_failed_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]))\n          +\n            (rate(prometheus_remote_storage_succeeded_samples_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) or rate(prometheus_remote_storage_samples_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]))\n          )\n        )\n        * 100\n        > 1\n      for: 15m\n      labels:\n        severity: critical\n    - alert: PrometheusRemoteWriteBehind\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} remote write\n          is {{ printf \"%.1f\" $value }}s behind for {{ $labels.remote_name}}:{{ $labels.url\n          }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusremotewritebehind\n        summary: Prometheus remote write is behind.\n      expr: |\n        # Without max_over_time, failed scrapes could create false negatives, see\n        # https://www.robustperception.io/alerting-on-gauges-in-prometheus-2-0 for details.\n        (\n          max_over_time(prometheus_remote_storage_highest_timestamp_in_seconds{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m])\n        - ignoring(remote_name, url) group_right\n          max_over_time(prometheus_remote_storage_queue_highest_sent_timestamp_seconds{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m])\n        )\n        > 120\n      for: 15m\n      labels:\n        severity: critical\n    - alert: PrometheusRemoteWriteDesiredShards\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} remote write\n          desired shards calculation wants to run {{ $value }} shards for queue {{\n          $labels.remote_name}}:{{ $labels.url }}, which is more than the max of {{\n          printf `prometheus_remote_storage_shards_max{instance=\"%s\",job=\"prometheus-k8s\",namespace=\"monitoring\"}`\n          $labels.instance | query | first | value }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusremotewritedesiredshards\n        summary: Prometheus remote write desired shards calculation wants to run more\n          than configured max shards.\n      expr: |\n        # Without max_over_time, failed scrapes could create false negatives, see\n        # https://www.robustperception.io/alerting-on-gauges-in-prometheus-2-0 for details.\n        (\n          max_over_time(prometheus_remote_storage_shards_desired{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m])\n        >\n          max_over_time(prometheus_remote_storage_shards_max{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m])\n        )\n      for: 15m\n      labels:\n        severity: warning\n    - alert: PrometheusRuleFailures\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has failed to\n          evaluate {{ printf \"%.0f\" $value }} rules in the last 5m.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusrulefailures\n        summary: Prometheus is failing rule evaluations.\n      expr: |\n        increase(prometheus_rule_evaluation_failures_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) > 0\n      for: 15m\n      labels:\n        severity: critical\n    - alert: PrometheusMissingRuleEvaluations\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has missed {{\n          printf \"%.0f\" $value }} rule group evaluations in the last 5m.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusmissingruleevaluations\n        summary: Prometheus is missing rule evaluations due to slow rule group evaluation.\n      expr: |\n        increase(prometheus_rule_group_iterations_missed_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) > 0\n      for: 15m\n      labels:\n        severity: warning\n    - alert: PrometheusTargetLimitHit\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has dropped\n          {{ printf \"%.0f\" $value }} targets because the number of targets exceeded\n          the configured target_limit.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheustargetlimithit\n        summary: Prometheus has dropped targets because some scrape configs have exceeded\n          the targets limit.\n      expr: |\n        increase(prometheus_target_scrape_pool_exceeded_target_limit_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) > 0\n      for: 15m\n      labels:\n        severity: warning\n    - alert: PrometheusLabelLimitHit\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has dropped\n          {{ printf \"%.0f\" $value }} targets because some samples exceeded the configured\n          label_limit, label_name_length_limit or label_value_length_limit.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheuslabellimithit\n        summary: Prometheus has dropped targets because some scrape configs have exceeded\n          the labels limit.\n      expr: |\n        increase(prometheus_target_scrape_pool_exceeded_label_limits_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) > 0\n      for: 15m\n      labels:\n        severity: warning\n    - alert: PrometheusScrapeBodySizeLimitHit\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has failed {{\n          printf \"%.0f\" $value }} scrapes in the last 5m because some targets exceeded\n          the configured body_size_limit.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusscrapebodysizelimithit\n        summary: Prometheus has dropped some targets that exceeded body size limit.\n      expr: |\n        increase(prometheus_target_scrapes_exceeded_body_size_limit_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) > 0\n      for: 15m\n      labels:\n        severity: warning\n    - alert: PrometheusScrapeSampleLimitHit\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has failed {{\n          printf \"%.0f\" $value }} scrapes in the last 5m because some targets exceeded\n          the configured sample_limit.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusscrapesamplelimithit\n        summary: Prometheus has failed scrapes that have exceeded the configured sample\n          limit.\n      expr: |\n        increase(prometheus_target_scrapes_exceeded_sample_limit_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) > 0\n      for: 15m\n      labels:\n        severity: warning\n    - alert: PrometheusTargetSyncFailure\n      annotations:\n        description: '{{ printf \"%.0f\" $value }} targets in Prometheus {{$labels.namespace}}/{{$labels.pod}}\n          have failed to sync because invalid configuration was supplied.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheustargetsyncfailure\n        summary: Prometheus has failed to sync targets.\n      expr: |\n        increase(prometheus_target_sync_failed_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[30m]) > 0\n      for: 5m\n      labels:\n        severity: critical\n    - alert: PrometheusHighQueryLoad\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} query API has\n          less than 20% available capacity in its query engine for the last 15 minutes.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheushighqueryload\n        summary: Prometheus is reaching its maximum capacity serving concurrent requests.\n      expr: |\n        avg_over_time(prometheus_engine_queries{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) / max_over_time(prometheus_engine_queries_concurrent_max{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) > 0.8\n      for: 15m\n      labels:\n        severity: warning\n    - alert: PrometheusErrorSendingAlertsToAnyAlertmanager\n      annotations:\n        description: '{{ printf \"%.1f\" $value }}% minimum errors while sending alerts\n          from Prometheus {{$labels.namespace}}/{{$labels.pod}} to any Alertmanager.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheuserrorsendingalertstoanyalertmanager\n        summary: Prometheus encounters more than 3% errors sending alerts to any Alertmanager.\n      expr: |\n        min without (alertmanager) (\n          rate(prometheus_notifications_errors_total{job=\"prometheus-k8s\",namespace=\"monitoring\",alertmanager!~``}[5m])\n        /\n          rate(prometheus_notifications_sent_total{job=\"prometheus-k8s\",namespace=\"monitoring\",alertmanager!~``}[5m])\n        )\n        * 100\n        > 3\n      for: 15m\n      labels:\n        severity: critical\n---\napiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/name: prometheus-operator\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.66.0\n    prometheus: k8s\n    role: alert-rules\n  name: prometheus-operator-rules\n  namespace: monitoring\nspec:\n  groups:\n  - name: prometheus-operator\n    rules:\n    - alert: PrometheusOperatorListErrors\n      annotations:\n        description: Errors while performing List operations in controller {{$labels.controller}}\n          in {{$labels.namespace}} namespace.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus-operator/prometheusoperatorlisterrors\n        summary: Errors while performing list operations in controller.\n      expr: |\n        (sum by (cluster,controller,namespace) (rate(prometheus_operator_list_operations_failed_total{job=\"prometheus-operator\",namespace=\"monitoring\"}[10m])) / sum by (cluster,controller,namespace) (rate(prometheus_operator_list_operations_total{job=\"prometheus-operator\",namespace=\"monitoring\"}[10m]))) > 0.4\n      for: 15m\n      labels:\n        severity: warning\n    - alert: PrometheusOperatorWatchErrors\n      annotations:\n        description: Errors while performing watch operations in controller {{$labels.controller}}\n          in {{$labels.namespace}} namespace.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus-operator/prometheusoperatorwatcherrors\n        summary: Errors while performing watch operations in controller.\n      expr: |\n        (sum by (cluster,controller,namespace) (rate(prometheus_operator_watch_operations_failed_total{job=\"prometheus-operator\",namespace=\"monitoring\"}[5m])) / sum by (cluster,controller,namespace) (rate(prometheus_operator_watch_operations_total{job=\"prometheus-operator\",namespace=\"monitoring\"}[5m]))) > 0.4\n      for: 15m\n      labels:\n        severity: warning\n    - alert: PrometheusOperatorSyncFailed\n      annotations:\n        description: Controller {{ $labels.controller }} in {{ $labels.namespace }}\n          namespace fails to reconcile {{ $value }} objects.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus-operator/prometheusoperatorsyncfailed\n        summary: Last controller reconciliation failed\n      expr: |\n        min_over_time(prometheus_operator_syncs{status=\"failed\",job=\"prometheus-operator\",namespace=\"monitoring\"}[5m]) > 0\n      for: 10m\n      labels:\n        severity: warning\n    - alert: PrometheusOperatorReconcileErrors\n      annotations:\n        description: '{{ $value | humanizePercentage }} of reconciling operations\n          failed for {{ $labels.controller }} controller in {{ $labels.namespace }}\n          namespace.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus-operator/prometheusoperatorreconcileerrors\n        summary: Errors while reconciling controller.\n      expr: |\n        (sum by (cluster,controller,namespace) (rate(prometheus_operator_reconcile_errors_total{job=\"prometheus-operator\",namespace=\"monitoring\"}[5m]))) / (sum by (cluster,controller,namespace) (rate(prometheus_operator_reconcile_operations_total{job=\"prometheus-operator\",namespace=\"monitoring\"}[5m]))) > 0.1\n      for: 10m\n      labels:\n        severity: warning\n    - alert: PrometheusOperatorNodeLookupErrors\n      annotations:\n        description: Errors while reconciling Prometheus in {{ $labels.namespace }}\n          Namespace.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus-operator/prometheusoperatornodelookuperrors\n        summary: Errors while reconciling Prometheus.\n      expr: |\n        rate(prometheus_operator_node_address_lookup_errors_total{job=\"prometheus-operator\",namespace=\"monitoring\"}[5m]) > 0.1\n      for: 10m\n      labels:\n        severity: warning\n    - alert: PrometheusOperatorNotReady\n      annotations:\n        description: Prometheus operator in {{ $labels.namespace }} namespace isn't\n          ready to reconcile {{ $labels.controller }} resources.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus-operator/prometheusoperatornotready\n        summary: Prometheus operator not ready\n      expr: |\n        min by (cluster,controller,namespace) (max_over_time(prometheus_operator_ready{job=\"prometheus-operator\",namespace=\"monitoring\"}[5m]) == 0)\n      for: 5m\n      labels:\n        severity: warning\n    - alert: PrometheusOperatorRejectedResources\n      annotations:\n        description: Prometheus operator in {{ $labels.namespace }} namespace rejected\n          {{ printf \"%0.0f\" $value }} {{ $labels.controller }}/{{ $labels.resource\n          }} resources.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus-operator/prometheusoperatorrejectedresources\n        summary: Resources rejected by Prometheus operator\n      expr: |\n        min_over_time(prometheus_operator_managed_resources{state=\"rejected\",job=\"prometheus-operator\",namespace=\"monitoring\"}[5m]) > 0\n      for: 5m\n      labels:\n        severity: warning\n  - name: config-reloaders\n    rules:\n    - alert: ConfigReloaderSidecarErrors\n      annotations:\n        description: |-\n          Errors encountered while the {{$labels.pod}} config-reloader sidecar attempts to sync config in {{$labels.namespace}} namespace.\n          As a result, configuration for service running in {{$labels.pod}} may be stale and cannot be updated anymore.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus-operator/configreloadersidecarerrors\n        summary: config-reloader sidecar has not had a successful reload for 10m\n      expr: |\n        max_over_time(reloader_last_reload_successful{namespace=~\".+\"}[5m]) == 0\n      for: 10m\n      labels:\n        severity: warning\n---\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  labels:\n    app.kubernetes.io/component: alert-router\n    app.kubernetes.io/instance: main\n    app.kubernetes.io/name: alertmanager\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.25.0\n  name: alertmanager-main\n  namespace: monitoring\nspec:\n  endpoints:\n  - interval: 30s\n    port: web\n  - interval: 30s\n    port: reloader-web\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: alert-router\n      app.kubernetes.io/instance: main\n      app.kubernetes.io/name: alertmanager\n      app.kubernetes.io/part-of: kube-prometheus\n---\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: blackbox-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.24.0\n  name: blackbox-exporter\n  namespace: monitoring\nspec:\n  endpoints:\n  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    interval: 30s\n    path: /metrics\n    port: https\n    scheme: https\n    tlsConfig:\n      insecureSkipVerify: true\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: exporter\n      app.kubernetes.io/name: blackbox-exporter\n      app.kubernetes.io/part-of: kube-prometheus\n---\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  labels:\n    app.kubernetes.io/name: coredns\n    app.kubernetes.io/part-of: kube-prometheus\n  name: coredns\n  namespace: monitoring\nspec:\n  endpoints:\n  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    interval: 15s\n    metricRelabelings:\n    - action: drop\n      regex: coredns_cache_misses_total\n      sourceLabels:\n      - __name__\n    port: metrics\n  jobLabel: app.kubernetes.io/name\n  namespaceSelector:\n    matchNames:\n    - kube-system\n  selector:\n    matchLabels:\n      k8s-app: kube-dns\n---\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 9.5.3\n  name: grafana\n  namespace: monitoring\nspec:\n  endpoints:\n  - interval: 15s\n    port: http\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: grafana\n---\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  labels:\n    app.kubernetes.io/name: apiserver\n    app.kubernetes.io/part-of: kube-prometheus\n  name: kube-apiserver\n  namespace: monitoring\nspec:\n  endpoints:\n  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    interval: 30s\n    metricRelabelings:\n    - action: drop\n      regex: kubelet_(pod_worker_latency_microseconds|pod_start_latency_microseconds|cgroup_manager_latency_microseconds|pod_worker_start_latency_microseconds|pleg_relist_latency_microseconds|pleg_relist_interval_microseconds|runtime_operations|runtime_operations_latency_microseconds|runtime_operations_errors|eviction_stats_age_microseconds|device_plugin_registration_count|device_plugin_alloc_latency_microseconds|network_plugin_operations_latency_microseconds)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: scheduler_(e2e_scheduling_latency_microseconds|scheduling_algorithm_predicate_evaluation|scheduling_algorithm_priority_evaluation|scheduling_algorithm_preemption_evaluation|scheduling_algorithm_latency_microseconds|binding_latency_microseconds|scheduling_latency_seconds)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: apiserver_(request_count|request_latencies|request_latencies_summary|dropped_requests|storage_data_key_generation_latencies_microseconds|storage_transformation_failures_total|storage_transformation_latencies_microseconds|proxy_tunnel_sync_latency_secs|longrunning_gauge|registered_watchers)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: kubelet_docker_(operations|operations_latency_microseconds|operations_errors|operations_timeout)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: reflector_(items_per_list|items_per_watch|list_duration_seconds|lists_total|short_watches_total|watch_duration_seconds|watches_total)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: etcd_(helper_cache_hit_count|helper_cache_miss_count|helper_cache_entry_count|object_counts|request_cache_get_latencies_summary|request_cache_add_latencies_summary|request_latencies_summary)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: transformation_(transformation_latencies_microseconds|failures_total)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: (admission_quota_controller_adds|admission_quota_controller_depth|admission_quota_controller_longest_running_processor_microseconds|admission_quota_controller_queue_latency|admission_quota_controller_unfinished_work_seconds|admission_quota_controller_work_duration|APIServiceOpenAPIAggregationControllerQueue1_adds|APIServiceOpenAPIAggregationControllerQueue1_depth|APIServiceOpenAPIAggregationControllerQueue1_longest_running_processor_microseconds|APIServiceOpenAPIAggregationControllerQueue1_queue_latency|APIServiceOpenAPIAggregationControllerQueue1_retries|APIServiceOpenAPIAggregationControllerQueue1_unfinished_work_seconds|APIServiceOpenAPIAggregationControllerQueue1_work_duration|APIServiceRegistrationController_adds|APIServiceRegistrationController_depth|APIServiceRegistrationController_longest_running_processor_microseconds|APIServiceRegistrationController_queue_latency|APIServiceRegistrationController_retries|APIServiceRegistrationController_unfinished_work_seconds|APIServiceRegistrationController_work_duration|autoregister_adds|autoregister_depth|autoregister_longest_running_processor_microseconds|autoregister_queue_latency|autoregister_retries|autoregister_unfinished_work_seconds|autoregister_work_duration|AvailableConditionController_adds|AvailableConditionController_depth|AvailableConditionController_longest_running_processor_microseconds|AvailableConditionController_queue_latency|AvailableConditionController_retries|AvailableConditionController_unfinished_work_seconds|AvailableConditionController_work_duration|crd_autoregistration_controller_adds|crd_autoregistration_controller_depth|crd_autoregistration_controller_longest_running_processor_microseconds|crd_autoregistration_controller_queue_latency|crd_autoregistration_controller_retries|crd_autoregistration_controller_unfinished_work_seconds|crd_autoregistration_controller_work_duration|crdEstablishing_adds|crdEstablishing_depth|crdEstablishing_longest_running_processor_microseconds|crdEstablishing_queue_latency|crdEstablishing_retries|crdEstablishing_unfinished_work_seconds|crdEstablishing_work_duration|crd_finalizer_adds|crd_finalizer_depth|crd_finalizer_longest_running_processor_microseconds|crd_finalizer_queue_latency|crd_finalizer_retries|crd_finalizer_unfinished_work_seconds|crd_finalizer_work_duration|crd_naming_condition_controller_adds|crd_naming_condition_controller_depth|crd_naming_condition_controller_longest_running_processor_microseconds|crd_naming_condition_controller_queue_latency|crd_naming_condition_controller_retries|crd_naming_condition_controller_unfinished_work_seconds|crd_naming_condition_controller_work_duration|crd_openapi_controller_adds|crd_openapi_controller_depth|crd_openapi_controller_longest_running_processor_microseconds|crd_openapi_controller_queue_latency|crd_openapi_controller_retries|crd_openapi_controller_unfinished_work_seconds|crd_openapi_controller_work_duration|DiscoveryController_adds|DiscoveryController_depth|DiscoveryController_longest_running_processor_microseconds|DiscoveryController_queue_latency|DiscoveryController_retries|DiscoveryController_unfinished_work_seconds|DiscoveryController_work_duration|kubeproxy_sync_proxy_rules_latency_microseconds|non_structural_schema_condition_controller_adds|non_structural_schema_condition_controller_depth|non_structural_schema_condition_controller_longest_running_processor_microseconds|non_structural_schema_condition_controller_queue_latency|non_structural_schema_condition_controller_retries|non_structural_schema_condition_controller_unfinished_work_seconds|non_structural_schema_condition_controller_work_duration|rest_client_request_latency_seconds|storage_operation_errors_total|storage_operation_status_count)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: etcd_(debugging|disk|server).*\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: apiserver_admission_controller_admission_latencies_seconds_.*\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: apiserver_admission_step_admission_latencies_seconds_.*\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: apiserver_request_duration_seconds_bucket;(0.15|0.25|0.3|0.35|0.4|0.45|0.6|0.7|0.8|0.9|1.25|1.5|1.75|2.5|3|3.5|4.5|6|7|8|9|15|25|30|50)\n      sourceLabels:\n      - __name__\n      - le\n    port: https\n    scheme: https\n    tlsConfig:\n      caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt\n      serverName: kubernetes\n  jobLabel: component\n  namespaceSelector:\n    matchNames:\n    - default\n  selector:\n    matchLabels:\n      component: apiserver\n      provider: kubernetes\n---\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  labels:\n    app.kubernetes.io/name: kube-controller-manager\n    app.kubernetes.io/part-of: kube-prometheus\n  name: kube-controller-manager\n  namespace: monitoring\nspec:\n  endpoints:\n  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    interval: 30s\n    metricRelabelings:\n    - action: drop\n      regex: kubelet_(pod_worker_latency_microseconds|pod_start_latency_microseconds|cgroup_manager_latency_microseconds|pod_worker_start_latency_microseconds|pleg_relist_latency_microseconds|pleg_relist_interval_microseconds|runtime_operations|runtime_operations_latency_microseconds|runtime_operations_errors|eviction_stats_age_microseconds|device_plugin_registration_count|device_plugin_alloc_latency_microseconds|network_plugin_operations_latency_microseconds)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: scheduler_(e2e_scheduling_latency_microseconds|scheduling_algorithm_predicate_evaluation|scheduling_algorithm_priority_evaluation|scheduling_algorithm_preemption_evaluation|scheduling_algorithm_latency_microseconds|binding_latency_microseconds|scheduling_latency_seconds)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: apiserver_(request_count|request_latencies|request_latencies_summary|dropped_requests|storage_data_key_generation_latencies_microseconds|storage_transformation_failures_total|storage_transformation_latencies_microseconds|proxy_tunnel_sync_latency_secs|longrunning_gauge|registered_watchers)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: kubelet_docker_(operations|operations_latency_microseconds|operations_errors|operations_timeout)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: reflector_(items_per_list|items_per_watch|list_duration_seconds|lists_total|short_watches_total|watch_duration_seconds|watches_total)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: etcd_(helper_cache_hit_count|helper_cache_miss_count|helper_cache_entry_count|object_counts|request_cache_get_latencies_summary|request_cache_add_latencies_summary|request_latencies_summary)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: transformation_(transformation_latencies_microseconds|failures_total)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: (admission_quota_controller_adds|admission_quota_controller_depth|admission_quota_controller_longest_running_processor_microseconds|admission_quota_controller_queue_latency|admission_quota_controller_unfinished_work_seconds|admission_quota_controller_work_duration|APIServiceOpenAPIAggregationControllerQueue1_adds|APIServiceOpenAPIAggregationControllerQueue1_depth|APIServiceOpenAPIAggregationControllerQueue1_longest_running_processor_microseconds|APIServiceOpenAPIAggregationControllerQueue1_queue_latency|APIServiceOpenAPIAggregationControllerQueue1_retries|APIServiceOpenAPIAggregationControllerQueue1_unfinished_work_seconds|APIServiceOpenAPIAggregationControllerQueue1_work_duration|APIServiceRegistrationController_adds|APIServiceRegistrationController_depth|APIServiceRegistrationController_longest_running_processor_microseconds|APIServiceRegistrationController_queue_latency|APIServiceRegistrationController_retries|APIServiceRegistrationController_unfinished_work_seconds|APIServiceRegistrationController_work_duration|autoregister_adds|autoregister_depth|autoregister_longest_running_processor_microseconds|autoregister_queue_latency|autoregister_retries|autoregister_unfinished_work_seconds|autoregister_work_duration|AvailableConditionController_adds|AvailableConditionController_depth|AvailableConditionController_longest_running_processor_microseconds|AvailableConditionController_queue_latency|AvailableConditionController_retries|AvailableConditionController_unfinished_work_seconds|AvailableConditionController_work_duration|crd_autoregistration_controller_adds|crd_autoregistration_controller_depth|crd_autoregistration_controller_longest_running_processor_microseconds|crd_autoregistration_controller_queue_latency|crd_autoregistration_controller_retries|crd_autoregistration_controller_unfinished_work_seconds|crd_autoregistration_controller_work_duration|crdEstablishing_adds|crdEstablishing_depth|crdEstablishing_longest_running_processor_microseconds|crdEstablishing_queue_latency|crdEstablishing_retries|crdEstablishing_unfinished_work_seconds|crdEstablishing_work_duration|crd_finalizer_adds|crd_finalizer_depth|crd_finalizer_longest_running_processor_microseconds|crd_finalizer_queue_latency|crd_finalizer_retries|crd_finalizer_unfinished_work_seconds|crd_finalizer_work_duration|crd_naming_condition_controller_adds|crd_naming_condition_controller_depth|crd_naming_condition_controller_longest_running_processor_microseconds|crd_naming_condition_controller_queue_latency|crd_naming_condition_controller_retries|crd_naming_condition_controller_unfinished_work_seconds|crd_naming_condition_controller_work_duration|crd_openapi_controller_adds|crd_openapi_controller_depth|crd_openapi_controller_longest_running_processor_microseconds|crd_openapi_controller_queue_latency|crd_openapi_controller_retries|crd_openapi_controller_unfinished_work_seconds|crd_openapi_controller_work_duration|DiscoveryController_adds|DiscoveryController_depth|DiscoveryController_longest_running_processor_microseconds|DiscoveryController_queue_latency|DiscoveryController_retries|DiscoveryController_unfinished_work_seconds|DiscoveryController_work_duration|kubeproxy_sync_proxy_rules_latency_microseconds|non_structural_schema_condition_controller_adds|non_structural_schema_condition_controller_depth|non_structural_schema_condition_controller_longest_running_processor_microseconds|non_structural_schema_condition_controller_queue_latency|non_structural_schema_condition_controller_retries|non_structural_schema_condition_controller_unfinished_work_seconds|non_structural_schema_condition_controller_work_duration|rest_client_request_latency_seconds|storage_operation_errors_total|storage_operation_status_count)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: etcd_(debugging|disk|request|server).*\n      sourceLabels:\n      - __name__\n    port: https-metrics\n    scheme: https\n    tlsConfig:\n      insecureSkipVerify: true\n  jobLabel: app.kubernetes.io/name\n  namespaceSelector:\n    matchNames:\n    - kube-system\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: kube-controller-manager\n---\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  labels:\n    app.kubernetes.io/name: kube-scheduler\n    app.kubernetes.io/part-of: kube-prometheus\n  name: kube-scheduler\n  namespace: monitoring\nspec:\n  endpoints:\n  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    interval: 30s\n    port: https-metrics\n    scheme: https\n    tlsConfig:\n      insecureSkipVerify: true\n  jobLabel: app.kubernetes.io/name\n  namespaceSelector:\n    matchNames:\n    - kube-system\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: kube-scheduler\n---\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: kube-state-metrics\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.9.2\n  name: kube-state-metrics\n  namespace: monitoring\nspec:\n  endpoints:\n  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    honorLabels: true\n    interval: 30s\n    metricRelabelings:\n    - action: drop\n      regex: kube_endpoint_address_not_ready|kube_endpoint_address_available\n      sourceLabels:\n      - __name__\n    port: https-main\n    relabelings:\n    - action: labeldrop\n      regex: (pod|service|endpoint|namespace)\n    scheme: https\n    scrapeTimeout: 30s\n    tlsConfig:\n      insecureSkipVerify: true\n  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    interval: 30s\n    port: https-self\n    scheme: https\n    tlsConfig:\n      insecureSkipVerify: true\n  jobLabel: app.kubernetes.io/name\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: exporter\n      app.kubernetes.io/name: kube-state-metrics\n      app.kubernetes.io/part-of: kube-prometheus\n---\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  labels:\n    app.kubernetes.io/name: kubelet\n    app.kubernetes.io/part-of: kube-prometheus\n  name: kubelet\n  namespace: monitoring\nspec:\n  endpoints:\n  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    honorLabels: true\n    interval: 30s\n    metricRelabelings:\n    - action: drop\n      regex: kubelet_(pod_worker_latency_microseconds|pod_start_latency_microseconds|cgroup_manager_latency_microseconds|pod_worker_start_latency_microseconds|pleg_relist_latency_microseconds|pleg_relist_interval_microseconds|runtime_operations|runtime_operations_latency_microseconds|runtime_operations_errors|eviction_stats_age_microseconds|device_plugin_registration_count|device_plugin_alloc_latency_microseconds|network_plugin_operations_latency_microseconds)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: scheduler_(e2e_scheduling_latency_microseconds|scheduling_algorithm_predicate_evaluation|scheduling_algorithm_priority_evaluation|scheduling_algorithm_preemption_evaluation|scheduling_algorithm_latency_microseconds|binding_latency_microseconds|scheduling_latency_seconds)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: apiserver_(request_count|request_latencies|request_latencies_summary|dropped_requests|storage_data_key_generation_latencies_microseconds|storage_transformation_failures_total|storage_transformation_latencies_microseconds|proxy_tunnel_sync_latency_secs|longrunning_gauge|registered_watchers)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: kubelet_docker_(operations|operations_latency_microseconds|operations_errors|operations_timeout)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: reflector_(items_per_list|items_per_watch|list_duration_seconds|lists_total|short_watches_total|watch_duration_seconds|watches_total)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: etcd_(helper_cache_hit_count|helper_cache_miss_count|helper_cache_entry_count|object_counts|request_cache_get_latencies_summary|request_cache_add_latencies_summary|request_latencies_summary)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: transformation_(transformation_latencies_microseconds|failures_total)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: (admission_quota_controller_adds|admission_quota_controller_depth|admission_quota_controller_longest_running_processor_microseconds|admission_quota_controller_queue_latency|admission_quota_controller_unfinished_work_seconds|admission_quota_controller_work_duration|APIServiceOpenAPIAggregationControllerQueue1_adds|APIServiceOpenAPIAggregationControllerQueue1_depth|APIServiceOpenAPIAggregationControllerQueue1_longest_running_processor_microseconds|APIServiceOpenAPIAggregationControllerQueue1_queue_latency|APIServiceOpenAPIAggregationControllerQueue1_retries|APIServiceOpenAPIAggregationControllerQueue1_unfinished_work_seconds|APIServiceOpenAPIAggregationControllerQueue1_work_duration|APIServiceRegistrationController_adds|APIServiceRegistrationController_depth|APIServiceRegistrationController_longest_running_processor_microseconds|APIServiceRegistrationController_queue_latency|APIServiceRegistrationController_retries|APIServiceRegistrationController_unfinished_work_seconds|APIServiceRegistrationController_work_duration|autoregister_adds|autoregister_depth|autoregister_longest_running_processor_microseconds|autoregister_queue_latency|autoregister_retries|autoregister_unfinished_work_seconds|autoregister_work_duration|AvailableConditionController_adds|AvailableConditionController_depth|AvailableConditionController_longest_running_processor_microseconds|AvailableConditionController_queue_latency|AvailableConditionController_retries|AvailableConditionController_unfinished_work_seconds|AvailableConditionController_work_duration|crd_autoregistration_controller_adds|crd_autoregistration_controller_depth|crd_autoregistration_controller_longest_running_processor_microseconds|crd_autoregistration_controller_queue_latency|crd_autoregistration_controller_retries|crd_autoregistration_controller_unfinished_work_seconds|crd_autoregistration_controller_work_duration|crdEstablishing_adds|crdEstablishing_depth|crdEstablishing_longest_running_processor_microseconds|crdEstablishing_queue_latency|crdEstablishing_retries|crdEstablishing_unfinished_work_seconds|crdEstablishing_work_duration|crd_finalizer_adds|crd_finalizer_depth|crd_finalizer_longest_running_processor_microseconds|crd_finalizer_queue_latency|crd_finalizer_retries|crd_finalizer_unfinished_work_seconds|crd_finalizer_work_duration|crd_naming_condition_controller_adds|crd_naming_condition_controller_depth|crd_naming_condition_controller_longest_running_processor_microseconds|crd_naming_condition_controller_queue_latency|crd_naming_condition_controller_retries|crd_naming_condition_controller_unfinished_work_seconds|crd_naming_condition_controller_work_duration|crd_openapi_controller_adds|crd_openapi_controller_depth|crd_openapi_controller_longest_running_processor_microseconds|crd_openapi_controller_queue_latency|crd_openapi_controller_retries|crd_openapi_controller_unfinished_work_seconds|crd_openapi_controller_work_duration|DiscoveryController_adds|DiscoveryController_depth|DiscoveryController_longest_running_processor_microseconds|DiscoveryController_queue_latency|DiscoveryController_retries|DiscoveryController_unfinished_work_seconds|DiscoveryController_work_duration|kubeproxy_sync_proxy_rules_latency_microseconds|non_structural_schema_condition_controller_adds|non_structural_schema_condition_controller_depth|non_structural_schema_condition_controller_longest_running_processor_microseconds|non_structural_schema_condition_controller_queue_latency|non_structural_schema_condition_controller_retries|non_structural_schema_condition_controller_unfinished_work_seconds|non_structural_schema_condition_controller_work_duration|rest_client_request_latency_seconds|storage_operation_errors_total|storage_operation_status_count)\n      sourceLabels:\n      - __name__\n    port: https-metrics\n    relabelings:\n    - action: replace\n      sourceLabels:\n      - __metrics_path__\n      targetLabel: metrics_path\n    scheme: https\n    tlsConfig:\n      insecureSkipVerify: true\n  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    honorLabels: true\n    honorTimestamps: false\n    interval: 30s\n    metricRelabelings:\n    - action: drop\n      regex: container_(network_tcp_usage_total|network_udp_usage_total|tasks_state|cpu_load_average_10s)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: (container_spec_.*|container_file_descriptors|container_sockets|container_threads_max|container_threads|container_start_time_seconds|container_last_seen);;\n      sourceLabels:\n      - __name__\n      - pod\n      - namespace\n    - action: drop\n      regex: (container_blkio_device_usage_total);.+\n      sourceLabels:\n      - __name__\n      - container\n    path: /metrics/cadvisor\n    port: https-metrics\n    relabelings:\n    - action: replace\n      sourceLabels:\n      - __metrics_path__\n      targetLabel: metrics_path\n    scheme: https\n    tlsConfig:\n      insecureSkipVerify: true\n  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    honorLabels: true\n    interval: 30s\n    path: /metrics/probes\n    port: https-metrics\n    relabelings:\n    - action: replace\n      sourceLabels:\n      - __metrics_path__\n      targetLabel: metrics_path\n    scheme: https\n    tlsConfig:\n      insecureSkipVerify: true\n  jobLabel: app.kubernetes.io/name\n  namespaceSelector:\n    matchNames:\n    - kube-system\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: kubelet\n---\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: node-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 1.6.0\n  name: node-exporter\n  namespace: monitoring\nspec:\n  endpoints:\n  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    interval: 15s\n    port: https\n    relabelings:\n    - action: replace\n      regex: (.*)\n      replacement: $1\n      sourceLabels:\n      - __meta_kubernetes_pod_node_name\n      targetLabel: instance\n    scheme: https\n    tlsConfig:\n      insecureSkipVerify: true\n  jobLabel: app.kubernetes.io/name\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: exporter\n      app.kubernetes.io/name: node-exporter\n      app.kubernetes.io/part-of: kube-prometheus\n---\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  labels:\n    app.kubernetes.io/component: metrics-adapter\n    app.kubernetes.io/name: prometheus-adapter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.10.0\n  name: prometheus-adapter\n  namespace: monitoring\nspec:\n  endpoints:\n  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    interval: 30s\n    metricRelabelings:\n    - action: drop\n      regex: (apiserver_client_certificate_.*|apiserver_envelope_.*|apiserver_flowcontrol_.*|apiserver_storage_.*|apiserver_webhooks_.*|workqueue_.*)\n      sourceLabels:\n      - __name__\n    port: https\n    scheme: https\n    tlsConfig:\n      insecureSkipVerify: true\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: metrics-adapter\n      app.kubernetes.io/name: prometheus-adapter\n      app.kubernetes.io/part-of: kube-prometheus\n---\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  labels:\n    app.kubernetes.io/component: prometheus\n    app.kubernetes.io/instance: k8s\n    app.kubernetes.io/name: prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.45.0\n  name: prometheus-k8s\n  namespace: monitoring\nspec:\n  endpoints:\n  - interval: 30s\n    port: web\n  - interval: 30s\n    port: reloader-web\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: prometheus\n      app.kubernetes.io/instance: k8s\n      app.kubernetes.io/name: prometheus\n      app.kubernetes.io/part-of: kube-prometheus\n---\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/name: prometheus-operator\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.66.0\n  name: prometheus-operator\n  namespace: monitoring\nspec:\n  endpoints:\n  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    honorLabels: true\n    port: https\n    scheme: https\n    tlsConfig:\n      insecureSkipVerify: true\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: controller\n      app.kubernetes.io/name: prometheus-operator\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 0.66.0\n---\napiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  annotations:\n    cert-manager.io/cluster-issuer: letsencrypt-prod\n  name: prometheus-ingress\n  namespace: monitoring\nspec:\n  ingressClassName: nginx\n  rules:\n  - host: prometheus.DOMAIN_NAME\n    http:\n      paths:\n      - backend:\n          service:\n            name: prometheus-k8s\n            port:\n              number: 9090\n        path: /\n        pathType: Prefix\n  tls:\n  - hosts:\n    - prometheus.DOMAIN_NAME\n    secretName: prometheus-tls\n---\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  labels:\n    app.kubernetes.io/component: alert-router\n    app.kubernetes.io/instance: main\n    app.kubernetes.io/name: alertmanager\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.25.0\n  name: alertmanager-main\n  namespace: monitoring\nspec:\n  egress:\n  - {}\n  ingress:\n  - from:\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: prometheus\n    ports:\n    - port: 9093\n      protocol: TCP\n    - port: 8080\n      protocol: TCP\n  - from:\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: alertmanager\n    ports:\n    - port: 9094\n      protocol: TCP\n    - port: 9094\n      protocol: UDP\n  podSelector:\n    matchLabels:\n      app.kubernetes.io/component: alert-router\n      app.kubernetes.io/instance: main\n      app.kubernetes.io/name: alertmanager\n      app.kubernetes.io/part-of: kube-prometheus\n  policyTypes:\n  - Egress\n  - Ingress\n---\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: blackbox-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.24.0\n  name: blackbox-exporter\n  namespace: monitoring\nspec:\n  egress:\n  - {}\n  ingress:\n  - from:\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: prometheus\n    ports:\n    - port: 9115\n      protocol: TCP\n    - port: 19115\n      protocol: TCP\n  podSelector:\n    matchLabels:\n      app.kubernetes.io/component: exporter\n      app.kubernetes.io/name: blackbox-exporter\n      app.kubernetes.io/part-of: kube-prometheus\n  policyTypes:\n  - Egress\n  - Ingress\n---\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 9.5.3\n  name: grafana\n  namespace: monitoring\nspec:\n  egress:\n  - {}\n  ingress:\n  - from:\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: prometheus\n    ports:\n    - port: 3000\n      protocol: TCP\n  podSelector:\n    matchLabels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n  policyTypes:\n  - Egress\n  - Ingress\n---\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: kube-state-metrics\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.9.2\n  name: kube-state-metrics\n  namespace: monitoring\nspec:\n  egress:\n  - {}\n  ingress:\n  - from:\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: prometheus\n    ports:\n    - port: 8443\n      protocol: TCP\n    - port: 9443\n      protocol: TCP\n  podSelector:\n    matchLabels:\n      app.kubernetes.io/component: exporter\n      app.kubernetes.io/name: kube-state-metrics\n      app.kubernetes.io/part-of: kube-prometheus\n  policyTypes:\n  - Egress\n  - Ingress\n---\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: node-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 1.6.0\n  name: node-exporter\n  namespace: monitoring\nspec:\n  egress:\n  - {}\n  ingress:\n  - from:\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: prometheus\n    ports:\n    - port: 9100\n      protocol: TCP\n  podSelector:\n    matchLabels:\n      app.kubernetes.io/component: exporter\n      app.kubernetes.io/name: node-exporter\n      app.kubernetes.io/part-of: kube-prometheus\n  policyTypes:\n  - Egress\n  - Ingress\n---\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  labels:\n    app.kubernetes.io/component: metrics-adapter\n    app.kubernetes.io/name: prometheus-adapter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.10.0\n  name: prometheus-adapter\n  namespace: monitoring\nspec:\n  egress:\n  - {}\n  ingress:\n  - {}\n  podSelector:\n    matchLabels:\n      app.kubernetes.io/component: metrics-adapter\n      app.kubernetes.io/name: prometheus-adapter\n      app.kubernetes.io/part-of: kube-prometheus\n  policyTypes:\n  - Egress\n  - Ingress\n---\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  labels:\n    app.kubernetes.io/component: prometheus\n    app.kubernetes.io/instance: k8s\n    app.kubernetes.io/name: prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.45.0\n  name: prometheus-k8s\n  namespace: monitoring\nspec:\n  egress:\n  - {}\n  ingress:\n  - from:\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: prometheus\n    ports:\n    - port: 9090\n      protocol: TCP\n    - port: 8080\n      protocol: TCP\n  - from:\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: prometheus-adapter\n    ports:\n    - port: 9090\n      protocol: TCP\n  - from:\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: grafana\n    ports:\n    - port: 9090\n      protocol: TCP\n  podSelector:\n    matchLabels:\n      app.kubernetes.io/component: prometheus\n      app.kubernetes.io/instance: k8s\n      app.kubernetes.io/name: prometheus\n      app.kubernetes.io/part-of: kube-prometheus\n  policyTypes:\n  - Egress\n  - Ingress\n---\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/name: prometheus-operator\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.66.0\n  name: prometheus-operator\n  namespace: monitoring\nspec:\n  egress:\n  - {}\n  ingress:\n  - from:\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: prometheus\n    ports:\n    - port: 8443\n      protocol: TCP\n  podSelector:\n    matchLabels:\n      app.kubernetes.io/component: controller\n      app.kubernetes.io/name: prometheus-operator\n      app.kubernetes.io/part-of: kube-prometheus\n  policyTypes:\n  - Egress\n  - Ingress\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/kustomization.yaml",
    "content": "\n# $ find . -type f | awk {'print \"  - \" $1'}\nresources:\n  - ./manifests/prometheus-clusterRole.yaml\n  - ./manifests/prometheusAdapter-clusterRole.yaml\n  - ./manifests/prometheus-serviceAccount.yaml\n  - ./manifests/alertmanager-podDisruptionBudget.yaml\n  - ./manifests/prometheusAdapter-clusterRoleServerResources.yaml\n  - ./manifests/blackboxExporter-serviceAccount.yaml\n  - ./manifests/prometheusAdapter-service.yaml\n  - ./manifests/prometheus-roleBindingSpecificNamespaces.yaml\n  - ./manifests/kubeStateMetrics-serviceAccount.yaml\n  - ./manifests/prometheus-roleBindingConfig.yaml\n  - ./manifests/grafana-service.yaml\n  - ./manifests/nodeExporter-service.yaml\n  - ./manifests/nodeExporter-networkPolicy.yaml\n  - ./manifests/prometheusOperator-prometheusRule.yaml\n  - ./manifests/prometheusAdapter-configMap.yaml\n  - ./manifests/blackboxExporter-networkPolicy.yaml\n  - ./manifests/kubernetesControlPlane-serviceMonitorCoreDNS.yaml\n  - ./manifests/prometheusAdapter-clusterRoleAggregatedMetricsReader.yaml\n  - ./manifests/prometheusAdapter-serviceAccount.yaml\n  - ./manifests/prometheusOperator-serviceMonitor.yaml\n  - ./manifests/prometheusAdapter-podDisruptionBudget.yaml\n  - ./manifests/blackboxExporter-clusterRole.yaml\n  - ./manifests/grafana-deployment.yaml\n  - ./manifests/nodeExporter-serviceAccount.yaml\n  - ./manifests/blackboxExporter-configuration.yaml\n  - ./manifests/blackboxExporter-service.yaml\n  - ./manifests/grafana-dashboardDefinitions.yaml\n  - ./manifests/prometheusAdapter-roleBindingAuthReader.yaml\n  - ./manifests/grafana-dashboardDatasources.yaml\n  - ./manifests/prometheusAdapter-apiService.yaml\n  - ./manifests/grafana-config.yaml\n  - ./manifests/grafana-dashboardSources.yaml\n  - ./manifests/prometheus-networkPolicy.yaml\n  - ./manifests/kubernetesControlPlane-prometheusRule.yaml\n  - ./manifests/grafana-serviceAccount.yaml\n  - ./manifests/setup/0alertmanagerConfigCustomResourceDefinition.yaml\n  - ./manifests/setup/0prometheusruleCustomResourceDefinition.yaml\n  - ./manifests/setup/0servicemonitorCustomResourceDefinition.yaml\n  - ./manifests/setup/0podmonitorCustomResourceDefinition.yaml\n  - ./manifests/setup/0scrapeconfigCustomResourceDefinition.yaml\n  - ./manifests/setup/0alertmanagerCustomResourceDefinition.yaml\n  - ./manifests/setup/namespace.yaml\n  - ./manifests/setup/0thanosrulerCustomResourceDefinition.yaml\n  - ./manifests/setup/0prometheusagentCustomResourceDefinition.yaml\n  - ./manifests/setup/0prometheusCustomResourceDefinition.yaml\n  - ./manifests/setup/0probeCustomResourceDefinition.yaml\n  - ./manifests/kubeStateMetrics-clusterRole.yaml\n  - ./manifests/kubePrometheus-prometheusRule.yaml\n  - ./manifests/prometheusOperator-clusterRoleBinding.yaml\n  - ./manifests/kubernetesControlPlane-serviceMonitorKubeScheduler.yaml\n  - ./manifests/alertmanager-serviceAccount.yaml\n  - ./manifests/nodeExporter-clusterRoleBinding.yaml\n  - ./manifests/prometheus-prometheus.yaml\n  - ./manifests/prometheus-clusterRoleBinding.yaml\n  - ./manifests/grafana-networkPolicy.yaml\n  - ./manifests/prometheusOperator-service.yaml\n  - ./manifests/kubeStateMetrics-serviceMonitor.yaml\n  - ./manifests/prometheus-roleConfig.yaml\n  - ./manifests/nodeExporter-prometheusRule.yaml\n  - ./manifests/prometheusAdapter-clusterRoleBinding.yaml\n  - ./manifests/nodeExporter-daemonset.yaml\n  - ./manifests/grafana-prometheusRule.yaml\n  - ./manifests/blackboxExporter-clusterRoleBinding.yaml\n  - ./manifests/alertmanager-networkPolicy.yaml\n  - ./manifests/prometheusAdapter-serviceMonitor.yaml\n  - ./manifests/prometheusAdapter-networkPolicy.yaml\n  - ./manifests/prometheus-serviceMonitor.yaml\n  - ./manifests/prometheus-roleSpecificNamespaces.yaml\n  - ./manifests/alertmanager-alertmanager.yaml\n  - ./manifests/prometheusOperator-clusterRole.yaml\n  - ./manifests/blackboxExporter-serviceMonitor.yaml\n  - ./manifests/prometheus-podDisruptionBudget.yaml\n  - ./manifests/alertmanager-prometheusRule.yaml\n  - ./manifests/kubernetesControlPlane-serviceMonitorApiserver.yaml\n  - ./manifests/blackboxExporter-deployment.yaml\n  - ./manifests/prometheus-service.yaml\n  - ./manifests/alertmanager-secret.yaml\n  - ./manifests/prometheus-prometheusRule.yaml\n  - ./manifests/nodeExporter-clusterRole.yaml\n  - ./manifests/kubeStateMetrics-networkPolicy.yaml\n  - ./manifests/kubeStateMetrics-deployment.yaml\n  - ./manifests/alertmanager-serviceMonitor.yaml\n  - ./manifests/kubeStateMetrics-service.yaml\n  - ./manifests/prometheusOperator-networkPolicy.yaml\n  - ./manifests/kubeStateMetrics-clusterRoleBinding.yaml\n  - ./manifests/prometheusOperator-serviceAccount.yaml\n  - ./manifests/nodeExporter-serviceMonitor.yaml\n  - ./manifests/prometheusAdapter-deployment.yaml\n  - ./manifests/kubeStateMetrics-prometheusRule.yaml\n  - ./manifests/alertmanager-service.yaml\n  - ./manifests/prometheusOperator-deployment.yaml\n  - ./manifests/kubernetesControlPlane-serviceMonitorKubeControllerManager.yaml\n  - ./manifests/grafana-serviceMonitor.yaml\n  - ./manifests/kubernetesControlPlane-serviceMonitorKubelet.yaml\n  - ./manifests/prometheusAdapter-clusterRoleBindingDelegator.yaml"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/alertmanager-alertmanager.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: Alertmanager\nmetadata:\n  labels:\n    app.kubernetes.io/component: alert-router\n    app.kubernetes.io/instance: main\n    app.kubernetes.io/name: alertmanager\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.25.0\n  name: main\n  namespace: monitoring\nspec:\n  image: quay.io/prometheus/alertmanager:v0.25.0\n  nodeSelector:\n    kubernetes.io/os: linux\n  podMetadata:\n    labels:\n      app.kubernetes.io/component: alert-router\n      app.kubernetes.io/instance: main\n      app.kubernetes.io/name: alertmanager\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 0.25.0\n  replicas: 3\n  resources:\n    limits:\n      cpu: 100m\n      memory: 100Mi\n    requests:\n      cpu: 4m\n      memory: 100Mi\n  securityContext:\n    fsGroup: 2000\n    runAsNonRoot: true\n    runAsUser: 1000\n  serviceAccountName: alertmanager-main\n  version: 0.25.0\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/alertmanager-networkPolicy.yaml",
    "content": "apiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  labels:\n    app.kubernetes.io/component: alert-router\n    app.kubernetes.io/instance: main\n    app.kubernetes.io/name: alertmanager\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.25.0\n  name: alertmanager-main\n  namespace: monitoring\nspec:\n  egress:\n  - {}\n  ingress:\n  - from:\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: prometheus\n    ports:\n    - port: 9093\n      protocol: TCP\n    - port: 8080\n      protocol: TCP\n  - from:\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: alertmanager\n    ports:\n    - port: 9094\n      protocol: TCP\n    - port: 9094\n      protocol: UDP\n  podSelector:\n    matchLabels:\n      app.kubernetes.io/component: alert-router\n      app.kubernetes.io/instance: main\n      app.kubernetes.io/name: alertmanager\n      app.kubernetes.io/part-of: kube-prometheus\n  policyTypes:\n  - Egress\n  - Ingress\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/alertmanager-podDisruptionBudget.yaml",
    "content": "apiVersion: policy/v1\nkind: PodDisruptionBudget\nmetadata:\n  labels:\n    app.kubernetes.io/component: alert-router\n    app.kubernetes.io/instance: main\n    app.kubernetes.io/name: alertmanager\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.25.0\n  name: alertmanager-main\n  namespace: monitoring\nspec:\n  maxUnavailable: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: alert-router\n      app.kubernetes.io/instance: main\n      app.kubernetes.io/name: alertmanager\n      app.kubernetes.io/part-of: kube-prometheus\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/alertmanager-prometheusRule.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  labels:\n    app.kubernetes.io/component: alert-router\n    app.kubernetes.io/instance: main\n    app.kubernetes.io/name: alertmanager\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.25.0\n    prometheus: k8s\n    role: alert-rules\n  name: alertmanager-main-rules\n  namespace: monitoring\nspec:\n  groups:\n  - name: alertmanager.rules\n    rules:\n    - alert: AlertmanagerFailedReload\n      annotations:\n        description: Configuration has failed to load for {{ $labels.namespace }}/{{ $labels.pod}}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/alertmanager/alertmanagerfailedreload\n        summary: Reloading an Alertmanager configuration has failed.\n      expr: |\n        # Without max_over_time, failed scrapes could create false negatives, see\n        # https://www.robustperception.io/alerting-on-gauges-in-prometheus-2-0 for details.\n        max_over_time(alertmanager_config_last_reload_successful{job=\"alertmanager-main\",namespace=\"monitoring\"}[5m]) == 0\n      for: 10m\n      labels:\n        severity: critical\n    - alert: AlertmanagerMembersInconsistent\n      annotations:\n        description: Alertmanager {{ $labels.namespace }}/{{ $labels.pod}} has only found {{ $value }} members of the {{$labels.job}} cluster.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/alertmanager/alertmanagermembersinconsistent\n        summary: A member of an Alertmanager cluster has not found all other cluster members.\n      expr: |\n        # Without max_over_time, failed scrapes could create false negatives, see\n        # https://www.robustperception.io/alerting-on-gauges-in-prometheus-2-0 for details.\n          max_over_time(alertmanager_cluster_members{job=\"alertmanager-main\",namespace=\"monitoring\"}[5m])\n        < on (namespace,service) group_left\n          count by (namespace,service) (max_over_time(alertmanager_cluster_members{job=\"alertmanager-main\",namespace=\"monitoring\"}[5m]))\n      for: 15m\n      labels:\n        severity: critical\n    - alert: AlertmanagerFailedToSendAlerts\n      annotations:\n        description: Alertmanager {{ $labels.namespace }}/{{ $labels.pod}} failed to send {{ $value | humanizePercentage }} of notifications to {{ $labels.integration }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/alertmanager/alertmanagerfailedtosendalerts\n        summary: An Alertmanager instance failed to send notifications.\n      expr: |\n        (\n          rate(alertmanager_notifications_failed_total{job=\"alertmanager-main\",namespace=\"monitoring\"}[5m])\n        /\n          rate(alertmanager_notifications_total{job=\"alertmanager-main\",namespace=\"monitoring\"}[5m])\n        )\n        > 0.01\n      for: 5m\n      labels:\n        severity: warning\n    - alert: AlertmanagerClusterFailedToSendAlerts\n      annotations:\n        description: The minimum notification failure rate to {{ $labels.integration }} sent from any instance in the {{$labels.job}} cluster is {{ $value | humanizePercentage }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/alertmanager/alertmanagerclusterfailedtosendalerts\n        summary: All Alertmanager instances in a cluster failed to send notifications to a critical integration.\n      expr: |\n        min by (namespace,service, integration) (\n          rate(alertmanager_notifications_failed_total{job=\"alertmanager-main\",namespace=\"monitoring\", integration=~`.*`}[5m])\n        /\n          rate(alertmanager_notifications_total{job=\"alertmanager-main\",namespace=\"monitoring\", integration=~`.*`}[5m])\n        )\n        > 0.01\n      for: 5m\n      labels:\n        severity: critical\n    - alert: AlertmanagerClusterFailedToSendAlerts\n      annotations:\n        description: The minimum notification failure rate to {{ $labels.integration }} sent from any instance in the {{$labels.job}} cluster is {{ $value | humanizePercentage }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/alertmanager/alertmanagerclusterfailedtosendalerts\n        summary: All Alertmanager instances in a cluster failed to send notifications to a non-critical integration.\n      expr: |\n        min by (namespace,service, integration) (\n          rate(alertmanager_notifications_failed_total{job=\"alertmanager-main\",namespace=\"monitoring\", integration!~`.*`}[5m])\n        /\n          rate(alertmanager_notifications_total{job=\"alertmanager-main\",namespace=\"monitoring\", integration!~`.*`}[5m])\n        )\n        > 0.01\n      for: 5m\n      labels:\n        severity: warning\n    - alert: AlertmanagerConfigInconsistent\n      annotations:\n        description: Alertmanager instances within the {{$labels.job}} cluster have different configurations.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/alertmanager/alertmanagerconfiginconsistent\n        summary: Alertmanager instances within the same cluster have different configurations.\n      expr: |\n        count by (namespace,service) (\n          count_values by (namespace,service) (\"config_hash\", alertmanager_config_hash{job=\"alertmanager-main\",namespace=\"monitoring\"})\n        )\n        != 1\n      for: 20m\n      labels:\n        severity: critical\n    - alert: AlertmanagerClusterDown\n      annotations:\n        description: '{{ $value | humanizePercentage }} of Alertmanager instances within the {{$labels.job}} cluster have been up for less than half of the last 5m.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/alertmanager/alertmanagerclusterdown\n        summary: Half or more of the Alertmanager instances within the same cluster are down.\n      expr: |\n        (\n          count by (namespace,service) (\n            avg_over_time(up{job=\"alertmanager-main\",namespace=\"monitoring\"}[5m]) < 0.5\n          )\n        /\n          count by (namespace,service) (\n            up{job=\"alertmanager-main\",namespace=\"monitoring\"}\n          )\n        )\n        >= 0.5\n      for: 5m\n      labels:\n        severity: critical\n    - alert: AlertmanagerClusterCrashlooping\n      annotations:\n        description: '{{ $value | humanizePercentage }} of Alertmanager instances within the {{$labels.job}} cluster have restarted at least 5 times in the last 10m.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/alertmanager/alertmanagerclustercrashlooping\n        summary: Half or more of the Alertmanager instances within the same cluster are crashlooping.\n      expr: |\n        (\n          count by (namespace,service) (\n            changes(process_start_time_seconds{job=\"alertmanager-main\",namespace=\"monitoring\"}[10m]) > 4\n          )\n        /\n          count by (namespace,service) (\n            up{job=\"alertmanager-main\",namespace=\"monitoring\"}\n          )\n        )\n        >= 0.5\n      for: 5m\n      labels:\n        severity: critical\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/alertmanager-secret.yaml",
    "content": "apiVersion: v1\nkind: Secret\nmetadata:\n  labels:\n    app.kubernetes.io/component: alert-router\n    app.kubernetes.io/instance: main\n    app.kubernetes.io/name: alertmanager\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.25.0\n  name: alertmanager-main\n  namespace: monitoring\nstringData:\n  alertmanager.yaml: |-\n    \"global\":\n      \"resolve_timeout\": \"5m\"\n    \"inhibit_rules\":\n    - \"equal\":\n      - \"namespace\"\n      - \"alertname\"\n      \"source_matchers\":\n      - \"severity = critical\"\n      \"target_matchers\":\n      - \"severity =~ warning|info\"\n    - \"equal\":\n      - \"namespace\"\n      - \"alertname\"\n      \"source_matchers\":\n      - \"severity = warning\"\n      \"target_matchers\":\n      - \"severity = info\"\n    - \"equal\":\n      - \"namespace\"\n      \"source_matchers\":\n      - \"alertname = InfoInhibitor\"\n      \"target_matchers\":\n      - \"severity = info\"\n    \"receivers\":\n    - \"name\": \"Default\"\n    - \"name\": \"Watchdog\"\n    - \"name\": \"Critical\"\n    - \"name\": \"null\"\n    \"route\":\n      \"group_by\":\n      - \"namespace\"\n      \"group_interval\": \"5m\"\n      \"group_wait\": \"30s\"\n      \"receiver\": \"Default\"\n      \"repeat_interval\": \"12h\"\n      \"routes\":\n      - \"matchers\":\n        - \"alertname = Watchdog\"\n        \"receiver\": \"Watchdog\"\n      - \"matchers\":\n        - \"alertname = InfoInhibitor\"\n        \"receiver\": \"null\"\n      - \"matchers\":\n        - \"severity = critical\"\n        \"receiver\": \"Critical\"\ntype: Opaque\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/alertmanager-service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: alert-router\n    app.kubernetes.io/instance: main\n    app.kubernetes.io/name: alertmanager\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.25.0\n  name: alertmanager-main\n  namespace: monitoring\nspec:\n  ports:\n  - name: web\n    port: 9093\n    targetPort: web\n  - name: reloader-web\n    port: 8080\n    targetPort: reloader-web\n  selector:\n    app.kubernetes.io/component: alert-router\n    app.kubernetes.io/instance: main\n    app.kubernetes.io/name: alertmanager\n    app.kubernetes.io/part-of: kube-prometheus\n  sessionAffinity: ClientIP\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/alertmanager-serviceAccount.yaml",
    "content": "apiVersion: v1\nautomountServiceAccountToken: false\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: alert-router\n    app.kubernetes.io/instance: main\n    app.kubernetes.io/name: alertmanager\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.25.0\n  name: alertmanager-main\n  namespace: monitoring\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/alertmanager-serviceMonitor.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  labels:\n    app.kubernetes.io/component: alert-router\n    app.kubernetes.io/instance: main\n    app.kubernetes.io/name: alertmanager\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.25.0\n  name: alertmanager-main\n  namespace: monitoring\nspec:\n  endpoints:\n  - interval: 30s\n    port: web\n  - interval: 30s\n    port: reloader-web\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: alert-router\n      app.kubernetes.io/instance: main\n      app.kubernetes.io/name: alertmanager\n      app.kubernetes.io/part-of: kube-prometheus\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/blackboxExporter-clusterRole.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: blackbox-exporter\nrules:\n- apiGroups:\n  - authentication.k8s.io\n  resources:\n  - tokenreviews\n  verbs:\n  - create\n- apiGroups:\n  - authorization.k8s.io\n  resources:\n  - subjectaccessreviews\n  verbs:\n  - create\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/blackboxExporter-clusterRoleBinding.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: blackbox-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.24.0\n  name: blackbox-exporter\n  namespace: monitoring\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: blackbox-exporter\nsubjects:\n- kind: ServiceAccount\n  name: blackbox-exporter\n  namespace: monitoring\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/blackboxExporter-configuration.yaml",
    "content": "apiVersion: v1\ndata:\n  config.yml: |-\n    \"modules\":\n      \"http_2xx\":\n        \"http\":\n          \"preferred_ip_protocol\": \"ip4\"\n        \"prober\": \"http\"\n      \"http_post_2xx\":\n        \"http\":\n          \"method\": \"POST\"\n          \"preferred_ip_protocol\": \"ip4\"\n        \"prober\": \"http\"\n      \"irc_banner\":\n        \"prober\": \"tcp\"\n        \"tcp\":\n          \"preferred_ip_protocol\": \"ip4\"\n          \"query_response\":\n          - \"send\": \"NICK prober\"\n          - \"send\": \"USER prober prober prober :prober\"\n          - \"expect\": \"PING :([^ ]+)\"\n            \"send\": \"PONG ${1}\"\n          - \"expect\": \"^:[^ ]+ 001\"\n      \"pop3s_banner\":\n        \"prober\": \"tcp\"\n        \"tcp\":\n          \"preferred_ip_protocol\": \"ip4\"\n          \"query_response\":\n          - \"expect\": \"^+OK\"\n          \"tls\": true\n          \"tls_config\":\n            \"insecure_skip_verify\": false\n      \"ssh_banner\":\n        \"prober\": \"tcp\"\n        \"tcp\":\n          \"preferred_ip_protocol\": \"ip4\"\n          \"query_response\":\n          - \"expect\": \"^SSH-2.0-\"\n      \"tcp_connect\":\n        \"prober\": \"tcp\"\n        \"tcp\":\n          \"preferred_ip_protocol\": \"ip4\"\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: blackbox-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.24.0\n  name: blackbox-exporter-configuration\n  namespace: monitoring\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/blackboxExporter-deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: blackbox-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.24.0\n  name: blackbox-exporter\n  namespace: monitoring\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: exporter\n      app.kubernetes.io/name: blackbox-exporter\n      app.kubernetes.io/part-of: kube-prometheus\n  template:\n    metadata:\n      annotations:\n        kubectl.kubernetes.io/default-container: blackbox-exporter\n      labels:\n        app.kubernetes.io/component: exporter\n        app.kubernetes.io/name: blackbox-exporter\n        app.kubernetes.io/part-of: kube-prometheus\n        app.kubernetes.io/version: 0.24.0\n    spec:\n      automountServiceAccountToken: true\n      containers:\n      - args:\n        - --config.file=/etc/blackbox_exporter/config.yml\n        - --web.listen-address=:19115\n        image: quay.io/prometheus/blackbox-exporter:v0.24.0\n        name: blackbox-exporter\n        ports:\n        - containerPort: 19115\n          name: http\n        resources:\n          limits:\n            cpu: 20m\n            memory: 40Mi\n          requests:\n            cpu: 10m\n            memory: 20Mi\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsNonRoot: true\n          runAsUser: 65534\n        volumeMounts:\n        - mountPath: /etc/blackbox_exporter/\n          name: config\n          readOnly: true\n      - args:\n        - --webhook-url=http://localhost:19115/-/reload\n        - --volume-dir=/etc/blackbox_exporter/\n        image: jimmidyson/configmap-reload:v0.5.0\n        name: module-configmap-reloader\n        resources:\n          limits:\n            cpu: 20m\n            memory: 40Mi\n          requests:\n            cpu: 10m\n            memory: 20Mi\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsNonRoot: true\n          runAsUser: 65534\n        terminationMessagePath: /dev/termination-log\n        terminationMessagePolicy: FallbackToLogsOnError\n        volumeMounts:\n        - mountPath: /etc/blackbox_exporter/\n          name: config\n          readOnly: true\n      - args:\n        - --logtostderr\n        - --secure-listen-address=:9115\n        - --tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305\n        - --upstream=http://127.0.0.1:19115/\n        image: quay.io/brancz/kube-rbac-proxy:v0.14.2\n        name: kube-rbac-proxy\n        ports:\n        - containerPort: 9115\n          name: https\n        resources:\n          limits:\n            cpu: 20m\n            memory: 40Mi\n          requests:\n            cpu: 10m\n            memory: 20Mi\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsGroup: 65532\n          runAsNonRoot: true\n          runAsUser: 65532\n      nodeSelector:\n        kubernetes.io/os: linux\n      serviceAccountName: blackbox-exporter\n      volumes:\n      - configMap:\n          name: blackbox-exporter-configuration\n        name: config\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/blackboxExporter-networkPolicy.yaml",
    "content": "apiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: blackbox-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.24.0\n  name: blackbox-exporter\n  namespace: monitoring\nspec:\n  egress:\n  - {}\n  ingress:\n  - from:\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: prometheus\n    ports:\n    - port: 9115\n      protocol: TCP\n    - port: 19115\n      protocol: TCP\n  podSelector:\n    matchLabels:\n      app.kubernetes.io/component: exporter\n      app.kubernetes.io/name: blackbox-exporter\n      app.kubernetes.io/part-of: kube-prometheus\n  policyTypes:\n  - Egress\n  - Ingress\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/blackboxExporter-service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: blackbox-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.24.0\n  name: blackbox-exporter\n  namespace: monitoring\nspec:\n  ports:\n  - name: https\n    port: 9115\n    targetPort: https\n  - name: probe\n    port: 19115\n    targetPort: http\n  selector:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: blackbox-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/blackboxExporter-serviceAccount.yaml",
    "content": "apiVersion: v1\nautomountServiceAccountToken: false\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: blackbox-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.24.0\n  name: blackbox-exporter\n  namespace: monitoring\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/blackboxExporter-serviceMonitor.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: blackbox-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.24.0\n  name: blackbox-exporter\n  namespace: monitoring\nspec:\n  endpoints:\n  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    interval: 30s\n    path: /metrics\n    port: https\n    scheme: https\n    tlsConfig:\n      insecureSkipVerify: true\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: exporter\n      app.kubernetes.io/name: blackbox-exporter\n      app.kubernetes.io/part-of: kube-prometheus\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/grafana-config.yaml",
    "content": "apiVersion: v1\nkind: Secret\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 9.5.3\n  name: grafana-config\n  namespace: monitoring\nstringData:\n  grafana.ini: |\n    [date_formats]\n    default_timezone = UTC\ntype: Opaque\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/grafana-dashboardDatasources.yaml",
    "content": "apiVersion: v1\nkind: Secret\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 9.5.3\n  name: grafana-datasources\n  namespace: monitoring\nstringData:\n  datasources.yaml: |-\n    {\n        \"apiVersion\": 1,\n        \"datasources\": [\n            {\n                \"access\": \"proxy\",\n                \"editable\": false,\n                \"name\": \"prometheus\",\n                \"orgId\": 1,\n                \"type\": \"prometheus\",\n                \"url\": \"http://prometheus-k8s.monitoring.svc:9090\",\n                \"version\": 1\n            }\n        ]\n    }\ntype: Opaque\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/grafana-dashboardDefinitions.yaml",
    "content": "apiVersion: v1\nitems:\n- apiVersion: v1\n  data:\n    alertmanager-overview.json: |-\n      {\n          \"__inputs\": [\n\n          ],\n          \"__requires\": [\n\n          ],\n          \"annotations\": {\n              \"list\": [\n\n              ]\n          },\n          \"editable\": false,\n          \"gnetId\": null,\n          \"graphTooltip\": 1,\n          \"hideControls\": false,\n          \"id\": null,\n          \"links\": [\n\n          ],\n          \"refresh\": \"30s\",\n          \"rows\": [\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"description\": \"current set of alerts stored in the Alertmanager\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 2,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": false,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(alertmanager_alerts{namespace=~\\\"$namespace\\\",service=~\\\"$service\\\"}) by (namespace,service,instance)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{instance}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Alerts\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"none\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"none\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"description\": \"rate of successful and invalid alerts received by the Alertmanager\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 3,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": false,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(rate(alertmanager_alerts_received_total{namespace=~\\\"$namespace\\\",service=~\\\"$service\\\"}[$__rate_interval])) by (namespace,service,instance)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{instance}} Received\",\n                                  \"refId\": \"A\"\n                              },\n                              {\n                                  \"expr\": \"sum(rate(alertmanager_alerts_invalid_total{namespace=~\\\"$namespace\\\",service=~\\\"$service\\\"}[$__rate_interval])) by (namespace,service,instance)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{instance}} Invalid\",\n                                  \"refId\": \"B\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Alerts receive rate\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"ops\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"ops\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Alerts\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"description\": \"rate of successful and invalid notifications sent by the Alertmanager\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 4,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": false,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": \"integration\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(rate(alertmanager_notifications_total{namespace=~\\\"$namespace\\\",service=~\\\"$service\\\", integration=\\\"$integration\\\"}[$__rate_interval])) by (integration,namespace,service,instance)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{instance}} Total\",\n                                  \"refId\": \"A\"\n                              },\n                              {\n                                  \"expr\": \"sum(rate(alertmanager_notifications_failed_total{namespace=~\\\"$namespace\\\",service=~\\\"$service\\\", integration=\\\"$integration\\\"}[$__rate_interval])) by (integration,namespace,service,instance)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{instance}} Failed\",\n                                  \"refId\": \"B\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"$integration: Notifications Send Rate\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"ops\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"ops\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"description\": \"latency of notifications sent by the Alertmanager\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 5,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": false,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": \"integration\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"histogram_quantile(0.99,\\n  sum(rate(alertmanager_notification_latency_seconds_bucket{namespace=~\\\"$namespace\\\",service=~\\\"$service\\\", integration=\\\"$integration\\\"}[$__rate_interval])) by (le,namespace,service,instance)\\n) \\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{instance}} 99th Percentile\",\n                                  \"refId\": \"A\"\n                              },\n                              {\n                                  \"expr\": \"histogram_quantile(0.50,\\n  sum(rate(alertmanager_notification_latency_seconds_bucket{namespace=~\\\"$namespace\\\",service=~\\\"$service\\\", integration=\\\"$integration\\\"}[$__rate_interval])) by (le,namespace,service,instance)\\n) \\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{instance}} Median\",\n                                  \"refId\": \"B\"\n                              },\n                              {\n                                  \"expr\": \"sum(rate(alertmanager_notification_latency_seconds_sum{namespace=~\\\"$namespace\\\",service=~\\\"$service\\\", integration=\\\"$integration\\\"}[$__rate_interval])) by (namespace,service,instance)\\n/\\nsum(rate(alertmanager_notification_latency_seconds_count{namespace=~\\\"$namespace\\\",service=~\\\"$service\\\", integration=\\\"$integration\\\"}[$__rate_interval])) by (namespace,service,instance)\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{instance}} Average\",\n                                  \"refId\": \"C\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"$integration: Notification Duration\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"s\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"s\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Notifications\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              }\n          ],\n          \"schemaVersion\": 14,\n          \"style\": \"dark\",\n          \"tags\": [\n              \"alertmanager-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"text\": \"Prometheus\",\n                          \"value\": \"Prometheus\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data Source\",\n                      \"name\": \"datasource\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"prometheus\",\n                      \"refresh\": 1,\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"allValue\": null,\n                      \"current\": {\n                          \"text\": \"\",\n                          \"value\": \"\"\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": false,\n                      \"label\": \"namespace\",\n                      \"multi\": false,\n                      \"name\": \"namespace\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(alertmanager_alerts, namespace)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  },\n                  {\n                      \"allValue\": null,\n                      \"current\": {\n                          \"text\": \"\",\n                          \"value\": \"\"\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": false,\n                      \"label\": \"service\",\n                      \"multi\": false,\n                      \"name\": \"service\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(alertmanager_alerts, service)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  },\n                  {\n                      \"allValue\": null,\n                      \"current\": {\n                          \"text\": \"all\",\n                          \"value\": \"$__all\"\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 2,\n                      \"includeAll\": true,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"integration\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(alertmanager_notifications_total{integration=~\\\".*\\\"}, integration)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timepicker\": {\n              \"refresh_intervals\": [\n                  \"5s\",\n                  \"10s\",\n                  \"30s\",\n                  \"1m\",\n                  \"5m\",\n                  \"15m\",\n                  \"30m\",\n                  \"1h\",\n                  \"2h\",\n                  \"1d\"\n              ],\n              \"time_options\": [\n                  \"5m\",\n                  \"15m\",\n                  \"1h\",\n                  \"6h\",\n                  \"12h\",\n                  \"24h\",\n                  \"2d\",\n                  \"7d\",\n                  \"30d\"\n              ]\n          },\n          \"timezone\": \"utc\",\n          \"title\": \"Alertmanager / Overview\",\n          \"uid\": \"alertmanager-overview\",\n          \"version\": 0\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 9.5.3\n    name: grafana-dashboard-alertmanager-overview\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    apiserver.json: |-\n      {\n          \"__inputs\": [\n\n          ],\n          \"__requires\": [\n\n          ],\n          \"annotations\": {\n              \"list\": [\n\n              ]\n          },\n          \"editable\": false,\n          \"gnetId\": null,\n          \"graphTooltip\": 0,\n          \"hideControls\": false,\n          \"id\": null,\n          \"links\": [\n\n          ],\n          \"panels\": [\n              {\n                  \"content\": \"The SLO (service level objective) and other metrics displayed on this dashboard are for informational purposes only.\",\n                  \"datasource\": null,\n                  \"description\": \"The SLO (service level objective) and other metrics displayed on this dashboard are for informational purposes only.\",\n                  \"gridPos\": {\n                      \"h\": 2,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 0\n                  },\n                  \"id\": 2,\n                  \"mode\": \"markdown\",\n                  \"span\": 12,\n                  \"title\": \"Notice\",\n                  \"type\": \"text\"\n              }\n          ],\n          \"refresh\": \"10s\",\n          \"rows\": [\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"cacheTimeout\": null,\n                          \"colorBackground\": false,\n                          \"colorValue\": false,\n                          \"colors\": [\n                              \"#299c46\",\n                              \"rgba(237, 129, 40, 0.89)\",\n                              \"#d44a3a\"\n                          ],\n                          \"datasource\": \"$datasource\",\n                          \"decimals\": 3,\n                          \"description\": \"How many percent of requests (both read and write) in 30 days have been answered successfully and fast enough?\",\n                          \"format\": \"percentunit\",\n                          \"gauge\": {\n                              \"maxValue\": 100,\n                              \"minValue\": 0,\n                              \"show\": false,\n                              \"thresholdLabels\": false,\n                              \"thresholdMarkers\": true\n                          },\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 3,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"rightSide\": true\n                          },\n                          \"links\": [\n\n                          ],\n                          \"mappingType\": 1,\n                          \"mappingTypes\": [\n                              {\n                                  \"name\": \"value to text\",\n                                  \"value\": 1\n                              },\n                              {\n                                  \"name\": \"range to text\",\n                                  \"value\": 2\n                              }\n                          ],\n                          \"maxDataPoints\": 100,\n                          \"nullPointMode\": \"connected\",\n                          \"nullText\": null,\n                          \"postfix\": \"\",\n                          \"postfixFontSize\": \"50%\",\n                          \"prefix\": \"\",\n                          \"prefixFontSize\": \"50%\",\n                          \"rangeMaps\": [\n                              {\n                                  \"from\": \"null\",\n                                  \"text\": \"N/A\",\n                                  \"to\": \"null\"\n                              }\n                          ],\n                          \"span\": 4,\n                          \"sparkline\": {\n                              \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n                              \"full\": false,\n                              \"lineColor\": \"rgb(31, 120, 193)\",\n                              \"show\": false\n                          },\n                          \"tableColumn\": \"\",\n                          \"targets\": [\n                              {\n                                  \"expr\": \"apiserver_request:availability30d{verb=\\\"all\\\", cluster=\\\"$cluster\\\"}\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": \"\",\n                          \"title\": \"Availability (30d) > 99.000%\",\n                          \"tooltip\": {\n                              \"shared\": false\n                          },\n                          \"type\": \"singlestat\",\n                          \"valueFontSize\": \"80%\",\n                          \"valueMaps\": [\n                              {\n                                  \"op\": \"=\",\n                                  \"text\": \"N/A\",\n                                  \"value\": \"null\"\n                              }\n                          ],\n                          \"valueName\": \"avg\"\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"decimals\": 3,\n                          \"description\": \"How much error budget is left looking at our 0.990% availability guarantees?\",\n                          \"fill\": 10,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 4,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 8,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"100 * (apiserver_request:availability30d{verb=\\\"all\\\", cluster=\\\"$cluster\\\"} - 0.990000)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"errorbudget\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"ErrorBudget (30d) > 99.000%\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"decimals\": 3,\n                                  \"format\": \"percentunit\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"decimals\": 3,\n                                  \"format\": \"percentunit\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": false,\n                  \"title\": \"Dashboard Row\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"cacheTimeout\": null,\n                          \"colorBackground\": false,\n                          \"colorValue\": false,\n                          \"colors\": [\n                              \"#299c46\",\n                              \"rgba(237, 129, 40, 0.89)\",\n                              \"#d44a3a\"\n                          ],\n                          \"datasource\": \"$datasource\",\n                          \"decimals\": 3,\n                          \"description\": \"How many percent of read requests (LIST,GET) in 30 days have been answered successfully and fast enough?\",\n                          \"format\": \"percentunit\",\n                          \"gauge\": {\n                              \"maxValue\": 100,\n                              \"minValue\": 0,\n                              \"show\": false,\n                              \"thresholdLabels\": false,\n                              \"thresholdMarkers\": true\n                          },\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 5,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"rightSide\": true\n                          },\n                          \"links\": [\n\n                          ],\n                          \"mappingType\": 1,\n                          \"mappingTypes\": [\n                              {\n                                  \"name\": \"value to text\",\n                                  \"value\": 1\n                              },\n                              {\n                                  \"name\": \"range to text\",\n                                  \"value\": 2\n                              }\n                          ],\n                          \"maxDataPoints\": 100,\n                          \"nullPointMode\": \"connected\",\n                          \"nullText\": null,\n                          \"postfix\": \"\",\n                          \"postfixFontSize\": \"50%\",\n                          \"prefix\": \"\",\n                          \"prefixFontSize\": \"50%\",\n                          \"rangeMaps\": [\n                              {\n                                  \"from\": \"null\",\n                                  \"text\": \"N/A\",\n                                  \"to\": \"null\"\n                              }\n                          ],\n                          \"span\": 3,\n                          \"sparkline\": {\n                              \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n                              \"full\": false,\n                              \"lineColor\": \"rgb(31, 120, 193)\",\n                              \"show\": false\n                          },\n                          \"tableColumn\": \"\",\n                          \"targets\": [\n                              {\n                                  \"expr\": \"apiserver_request:availability30d{verb=\\\"read\\\", cluster=\\\"$cluster\\\"}\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": \"\",\n                          \"title\": \"Read Availability (30d)\",\n                          \"tooltip\": {\n                              \"shared\": false\n                          },\n                          \"type\": \"singlestat\",\n                          \"valueFontSize\": \"80%\",\n                          \"valueMaps\": [\n                              {\n                                  \"op\": \"=\",\n                                  \"text\": \"N/A\",\n                                  \"value\": \"null\"\n                              }\n                          ],\n                          \"valueName\": \"avg\"\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"description\": \"How many read requests (LIST,GET) per second do the apiservers get by code?\",\n                          \"fill\": 10,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 6,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n                              {\n                                  \"alias\": \"/2../i\",\n                                  \"color\": \"#56A64B\"\n                              },\n                              {\n                                  \"alias\": \"/3../i\",\n                                  \"color\": \"#F2CC0C\"\n                              },\n                              {\n                                  \"alias\": \"/4../i\",\n                                  \"color\": \"#3274D9\"\n                              },\n                              {\n                                  \"alias\": \"/5../i\",\n                                  \"color\": \"#E02F44\"\n                              }\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 3,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum by (code) (code_resource:apiserver_request_total:rate5m{verb=\\\"read\\\", cluster=\\\"$cluster\\\"})\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{ code }}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Read SLI - Requests\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"reqps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"reqps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"description\": \"How many percent of read requests (LIST,GET) per second are returned with errors (5xx)?\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 7,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 3,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum by (resource) (code_resource:apiserver_request_total:rate5m{verb=\\\"read\\\",code=~\\\"5..\\\", cluster=\\\"$cluster\\\"}) / sum by (resource) (code_resource:apiserver_request_total:rate5m{verb=\\\"read\\\", cluster=\\\"$cluster\\\"})\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{ resource }}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Read SLI - Errors\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"percentunit\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"percentunit\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"description\": \"How many seconds is the 99th percentile for reading (LIST|GET) a given resource?\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 8,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 3,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"cluster_quantile:apiserver_request_slo_duration_seconds:histogram_quantile{verb=\\\"read\\\", cluster=\\\"$cluster\\\"}\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{ resource }}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Read SLI - Duration\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"s\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"s\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": false,\n                  \"title\": \"Dashboard Row\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"cacheTimeout\": null,\n                          \"colorBackground\": false,\n                          \"colorValue\": false,\n                          \"colors\": [\n                              \"#299c46\",\n                              \"rgba(237, 129, 40, 0.89)\",\n                              \"#d44a3a\"\n                          ],\n                          \"datasource\": \"$datasource\",\n                          \"decimals\": 3,\n                          \"description\": \"How many percent of write requests (POST|PUT|PATCH|DELETE) in 30 days have been answered successfully and fast enough?\",\n                          \"format\": \"percentunit\",\n                          \"gauge\": {\n                              \"maxValue\": 100,\n                              \"minValue\": 0,\n                              \"show\": false,\n                              \"thresholdLabels\": false,\n                              \"thresholdMarkers\": true\n                          },\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 9,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"rightSide\": true\n                          },\n                          \"links\": [\n\n                          ],\n                          \"mappingType\": 1,\n                          \"mappingTypes\": [\n                              {\n                                  \"name\": \"value to text\",\n                                  \"value\": 1\n                              },\n                              {\n                                  \"name\": \"range to text\",\n                                  \"value\": 2\n                              }\n                          ],\n                          \"maxDataPoints\": 100,\n                          \"nullPointMode\": \"connected\",\n                          \"nullText\": null,\n                          \"postfix\": \"\",\n                          \"postfixFontSize\": \"50%\",\n                          \"prefix\": \"\",\n                          \"prefixFontSize\": \"50%\",\n                          \"rangeMaps\": [\n                              {\n                                  \"from\": \"null\",\n                                  \"text\": \"N/A\",\n                                  \"to\": \"null\"\n                              }\n                          ],\n                          \"span\": 3,\n                          \"sparkline\": {\n                              \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n                              \"full\": false,\n                              \"lineColor\": \"rgb(31, 120, 193)\",\n                              \"show\": false\n                          },\n                          \"tableColumn\": \"\",\n                          \"targets\": [\n                              {\n                                  \"expr\": \"apiserver_request:availability30d{verb=\\\"write\\\", cluster=\\\"$cluster\\\"}\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": \"\",\n                          \"title\": \"Write Availability (30d)\",\n                          \"tooltip\": {\n                              \"shared\": false\n                          },\n                          \"type\": \"singlestat\",\n                          \"valueFontSize\": \"80%\",\n                          \"valueMaps\": [\n                              {\n                                  \"op\": \"=\",\n                                  \"text\": \"N/A\",\n                                  \"value\": \"null\"\n                              }\n                          ],\n                          \"valueName\": \"avg\"\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"description\": \"How many write requests (POST|PUT|PATCH|DELETE) per second do the apiservers get by code?\",\n                          \"fill\": 10,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 10,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n                              {\n                                  \"alias\": \"/2../i\",\n                                  \"color\": \"#56A64B\"\n                              },\n                              {\n                                  \"alias\": \"/3../i\",\n                                  \"color\": \"#F2CC0C\"\n                              },\n                              {\n                                  \"alias\": \"/4../i\",\n                                  \"color\": \"#3274D9\"\n                              },\n                              {\n                                  \"alias\": \"/5../i\",\n                                  \"color\": \"#E02F44\"\n                              }\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 3,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum by (code) (code_resource:apiserver_request_total:rate5m{verb=\\\"write\\\", cluster=\\\"$cluster\\\"})\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{ code }}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Write SLI - Requests\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"reqps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"reqps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"description\": \"How many percent of write requests (POST|PUT|PATCH|DELETE) per second are returned with errors (5xx)?\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 11,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 3,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum by (resource) (code_resource:apiserver_request_total:rate5m{verb=\\\"write\\\",code=~\\\"5..\\\", cluster=\\\"$cluster\\\"}) / sum by (resource) (code_resource:apiserver_request_total:rate5m{verb=\\\"write\\\", cluster=\\\"$cluster\\\"})\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{ resource }}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Write SLI - Errors\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"percentunit\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"percentunit\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"description\": \"How many seconds is the 99th percentile for writing (POST|PUT|PATCH|DELETE) a given resource?\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 12,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 3,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"cluster_quantile:apiserver_request_slo_duration_seconds:histogram_quantile{verb=\\\"write\\\", cluster=\\\"$cluster\\\"}\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{ resource }}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Write SLI - Duration\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"s\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"s\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": false,\n                  \"title\": \"Dashboard Row\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 13,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": false,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(rate(workqueue_adds_total{job=\\\"apiserver\\\", instance=~\\\"$instance\\\", cluster=\\\"$cluster\\\"}[$__rate_interval])) by (instance, name)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{instance}} {{name}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Work Queue Add Rate\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"ops\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"ops\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 14,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": false,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(rate(workqueue_depth{job=\\\"apiserver\\\", instance=~\\\"$instance\\\", cluster=\\\"$cluster\\\"}[$__rate_interval])) by (instance, name)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{instance}} {{name}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Work Queue Depth\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 15,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": true,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": true\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"histogram_quantile(0.99, sum(rate(workqueue_queue_duration_seconds_bucket{job=\\\"apiserver\\\", instance=~\\\"$instance\\\", cluster=\\\"$cluster\\\"}[$__rate_interval])) by (instance, name, le))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{instance}} {{name}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Work Queue Latency\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"s\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"s\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": false,\n                  \"title\": \"Dashboard Row\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 16,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 4,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"process_resident_memory_bytes{job=\\\"apiserver\\\",instance=~\\\"$instance\\\", cluster=\\\"$cluster\\\"}\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{instance}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Memory\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"bytes\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"bytes\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 17,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 4,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"rate(process_cpu_seconds_total{job=\\\"apiserver\\\",instance=~\\\"$instance\\\", cluster=\\\"$cluster\\\"}[$__rate_interval])\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{instance}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"CPU usage\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 18,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 4,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"go_goroutines{job=\\\"apiserver\\\",instance=~\\\"$instance\\\", cluster=\\\"$cluster\\\"}\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{instance}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Goroutines\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": false,\n                  \"title\": \"Dashboard Row\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              }\n          ],\n          \"schemaVersion\": 14,\n          \"style\": \"dark\",\n          \"tags\": [\n              \"kubernetes-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data Source\",\n                      \"name\": \"datasource\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"prometheus\",\n                      \"refresh\": 1,\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"allValue\": null,\n                      \"current\": {\n\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": false,\n                      \"label\": \"cluster\",\n                      \"multi\": false,\n                      \"name\": \"cluster\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(up{job=\\\"apiserver\\\"}, cluster)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  },\n                  {\n                      \"allValue\": null,\n                      \"current\": {\n\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": true,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"instance\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(up{job=\\\"apiserver\\\", cluster=\\\"$cluster\\\"}, instance)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timepicker\": {\n              \"refresh_intervals\": [\n                  \"5s\",\n                  \"10s\",\n                  \"30s\",\n                  \"1m\",\n                  \"5m\",\n                  \"15m\",\n                  \"30m\",\n                  \"1h\",\n                  \"2h\",\n                  \"1d\"\n              ],\n              \"time_options\": [\n                  \"5m\",\n                  \"15m\",\n                  \"1h\",\n                  \"6h\",\n                  \"12h\",\n                  \"24h\",\n                  \"2d\",\n                  \"7d\",\n                  \"30d\"\n              ]\n          },\n          \"timezone\": \"UTC\",\n          \"title\": \"Kubernetes / API server\",\n          \"uid\": \"09ec8aa1e996d6ffcd6817bbaff4db1b\",\n          \"version\": 0\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 9.5.3\n    name: grafana-dashboard-apiserver\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    cluster-total.json: |-\n      {\n          \"__inputs\": [\n\n          ],\n          \"__requires\": [\n\n          ],\n          \"annotations\": {\n              \"list\": [\n                  {\n                      \"builtIn\": 1,\n                      \"datasource\": \"-- Grafana --\",\n                      \"enable\": true,\n                      \"hide\": true,\n                      \"iconColor\": \"rgba(0, 211, 255, 1)\",\n                      \"name\": \"Annotations & Alerts\",\n                      \"type\": \"dashboard\"\n                  }\n              ]\n          },\n          \"editable\": true,\n          \"gnetId\": null,\n          \"graphTooltip\": 0,\n          \"hideControls\": false,\n          \"id\": null,\n          \"links\": [\n\n          ],\n          \"panels\": [\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 0\n                  },\n                  \"id\": 2,\n                  \"panels\": [\n\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Current Bandwidth\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"aliasColors\": {\n\n                  },\n                  \"bars\": true,\n                  \"dashLength\": 10,\n                  \"dashes\": false,\n                  \"datasource\": \"$datasource\",\n                  \"fill\": 2,\n                  \"fillGradient\": 0,\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 1\n                  },\n                  \"id\": 3,\n                  \"legend\": {\n                      \"alignAsTable\": true,\n                      \"avg\": false,\n                      \"current\": true,\n                      \"hideEmpty\": true,\n                      \"hideZero\": true,\n                      \"max\": false,\n                      \"min\": false,\n                      \"rightSide\": true,\n                      \"show\": true,\n                      \"sideWidth\": null,\n                      \"sort\": \"current\",\n                      \"sortDesc\": true,\n                      \"total\": false,\n                      \"values\": true\n                  },\n                  \"lines\": false,\n                  \"linewidth\": 1,\n                  \"links\": [\n\n                  ],\n                  \"minSpan\": 24,\n                  \"nullPointMode\": \"null\",\n                  \"paceLength\": 10,\n                  \"percentage\": false,\n                  \"pointradius\": 5,\n                  \"points\": false,\n                  \"renderer\": \"flot\",\n                  \"repeat\": null,\n                  \"seriesOverrides\": [\n\n                  ],\n                  \"spaceLength\": 10,\n                  \"span\": 24,\n                  \"stack\": false,\n                  \"steppedLine\": false,\n                  \"targets\": [\n                      {\n                          \"expr\": \"sort_desc(sum(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 1,\n                          \"legendFormat\": \"{{namespace}}\",\n                          \"refId\": \"A\",\n                          \"step\": 10\n                      }\n                  ],\n                  \"thresholds\": [\n\n                  ],\n                  \"timeFrom\": null,\n                  \"timeShift\": null,\n                  \"title\": \"Current Rate of Bytes Received\",\n                  \"tooltip\": {\n                      \"shared\": true,\n                      \"sort\": 2,\n                      \"value_type\": \"individual\"\n                  },\n                  \"type\": \"graph\",\n                  \"xaxis\": {\n                      \"buckets\": null,\n                      \"mode\": \"series\",\n                      \"name\": null,\n                      \"show\": false,\n                      \"values\": [\n                          \"current\"\n                      ]\n                  },\n                  \"yaxes\": [\n                      {\n                          \"format\": \"Bps\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": 0,\n                          \"show\": true\n                      },\n                      {\n                          \"format\": \"Bps\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": 0,\n                          \"show\": true\n                      }\n                  ]\n              },\n              {\n                  \"aliasColors\": {\n\n                  },\n                  \"bars\": true,\n                  \"dashLength\": 10,\n                  \"dashes\": false,\n                  \"datasource\": \"$datasource\",\n                  \"fill\": 2,\n                  \"fillGradient\": 0,\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 1\n                  },\n                  \"id\": 4,\n                  \"legend\": {\n                      \"alignAsTable\": true,\n                      \"avg\": false,\n                      \"current\": true,\n                      \"hideEmpty\": true,\n                      \"hideZero\": true,\n                      \"max\": false,\n                      \"min\": false,\n                      \"rightSide\": true,\n                      \"show\": true,\n                      \"sideWidth\": null,\n                      \"sort\": \"current\",\n                      \"sortDesc\": true,\n                      \"total\": false,\n                      \"values\": true\n                  },\n                  \"lines\": false,\n                  \"linewidth\": 1,\n                  \"links\": [\n\n                  ],\n                  \"minSpan\": 24,\n                  \"nullPointMode\": \"null\",\n                  \"paceLength\": 10,\n                  \"percentage\": false,\n                  \"pointradius\": 5,\n                  \"points\": false,\n                  \"renderer\": \"flot\",\n                  \"repeat\": null,\n                  \"seriesOverrides\": [\n\n                  ],\n                  \"spaceLength\": 10,\n                  \"span\": 24,\n                  \"stack\": false,\n                  \"steppedLine\": false,\n                  \"targets\": [\n                      {\n                          \"expr\": \"sort_desc(sum(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 1,\n                          \"legendFormat\": \"{{namespace}}\",\n                          \"refId\": \"A\",\n                          \"step\": 10\n                      }\n                  ],\n                  \"thresholds\": [\n\n                  ],\n                  \"timeFrom\": null,\n                  \"timeShift\": null,\n                  \"title\": \"Current Rate of Bytes Transmitted\",\n                  \"tooltip\": {\n                      \"shared\": true,\n                      \"sort\": 2,\n                      \"value_type\": \"individual\"\n                  },\n                  \"type\": \"graph\",\n                  \"xaxis\": {\n                      \"buckets\": null,\n                      \"mode\": \"series\",\n                      \"name\": null,\n                      \"show\": false,\n                      \"values\": [\n                          \"current\"\n                      ]\n                  },\n                  \"yaxes\": [\n                      {\n                          \"format\": \"Bps\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": 0,\n                          \"show\": true\n                      },\n                      {\n                          \"format\": \"Bps\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": 0,\n                          \"show\": true\n                      }\n                  ]\n              },\n              {\n                  \"columns\": [\n                      {\n                          \"text\": \"Time\",\n                          \"value\": \"Time\"\n                      },\n                      {\n                          \"text\": \"Value #A\",\n                          \"value\": \"Value #A\"\n                      },\n                      {\n                          \"text\": \"Value #B\",\n                          \"value\": \"Value #B\"\n                      },\n                      {\n                          \"text\": \"Value #C\",\n                          \"value\": \"Value #C\"\n                      },\n                      {\n                          \"text\": \"Value #D\",\n                          \"value\": \"Value #D\"\n                      },\n                      {\n                          \"text\": \"Value #E\",\n                          \"value\": \"Value #E\"\n                      },\n                      {\n                          \"text\": \"Value #F\",\n                          \"value\": \"Value #F\"\n                      },\n                      {\n                          \"text\": \"Value #G\",\n                          \"value\": \"Value #G\"\n                      },\n                      {\n                          \"text\": \"Value #H\",\n                          \"value\": \"Value #H\"\n                      },\n                      {\n                          \"text\": \"namespace\",\n                          \"value\": \"namespace\"\n                      }\n                  ],\n                  \"datasource\": \"$datasource\",\n                  \"fill\": 1,\n                  \"fontSize\": \"90%\",\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 10\n                  },\n                  \"id\": 5,\n                  \"lines\": true,\n                  \"linewidth\": 1,\n                  \"links\": [\n\n                  ],\n                  \"minSpan\": 24,\n                  \"nullPointMode\": \"null as zero\",\n                  \"renderer\": \"flot\",\n                  \"scroll\": true,\n                  \"showHeader\": true,\n                  \"sort\": {\n                      \"col\": 0,\n                      \"desc\": false\n                  },\n                  \"spaceLength\": 10,\n                  \"span\": 24,\n                  \"styles\": [\n                      {\n                          \"alias\": \"Time\",\n                          \"colorMode\": null,\n                          \"colors\": [\n\n                          ],\n                          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                          \"decimals\": 2,\n                          \"link\": false,\n                          \"linkTooltip\": \"Drill down\",\n                          \"linkUrl\": \"\",\n                          \"pattern\": \"Time\",\n                          \"thresholds\": [\n\n                          ],\n                          \"type\": \"hidden\",\n                          \"unit\": \"short\"\n                      },\n                      {\n                          \"alias\": \"Current Bandwidth Received\",\n                          \"colorMode\": null,\n                          \"colors\": [\n\n                          ],\n                          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                          \"decimals\": 2,\n                          \"link\": false,\n                          \"linkTooltip\": \"Drill down\",\n                          \"linkUrl\": \"\",\n                          \"pattern\": \"Value #A\",\n                          \"thresholds\": [\n\n                          ],\n                          \"type\": \"number\",\n                          \"unit\": \"Bps\"\n                      },\n                      {\n                          \"alias\": \"Current Bandwidth Transmitted\",\n                          \"colorMode\": null,\n                          \"colors\": [\n\n                          ],\n                          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                          \"decimals\": 2,\n                          \"link\": false,\n                          \"linkTooltip\": \"Drill down\",\n                          \"linkUrl\": \"\",\n                          \"pattern\": \"Value #B\",\n                          \"thresholds\": [\n\n                          ],\n                          \"type\": \"number\",\n                          \"unit\": \"Bps\"\n                      },\n                      {\n                          \"alias\": \"Average Bandwidth Received\",\n                          \"colorMode\": null,\n                          \"colors\": [\n\n                          ],\n                          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                          \"decimals\": 2,\n                          \"link\": false,\n                          \"linkTooltip\": \"Drill down\",\n                          \"linkUrl\": \"\",\n                          \"pattern\": \"Value #C\",\n                          \"thresholds\": [\n\n                          ],\n                          \"type\": \"number\",\n                          \"unit\": \"Bps\"\n                      },\n                      {\n                          \"alias\": \"Average Bandwidth Transmitted\",\n                          \"colorMode\": null,\n                          \"colors\": [\n\n                          ],\n                          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                          \"decimals\": 2,\n                          \"link\": false,\n                          \"linkTooltip\": \"Drill down\",\n                          \"linkUrl\": \"\",\n                          \"pattern\": \"Value #D\",\n                          \"thresholds\": [\n\n                          ],\n                          \"type\": \"number\",\n                          \"unit\": \"Bps\"\n                      },\n                      {\n                          \"alias\": \"Rate of Received Packets\",\n                          \"colorMode\": null,\n                          \"colors\": [\n\n                          ],\n                          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                          \"decimals\": 2,\n                          \"link\": false,\n                          \"linkTooltip\": \"Drill down\",\n                          \"linkUrl\": \"\",\n                          \"pattern\": \"Value #E\",\n                          \"thresholds\": [\n\n                          ],\n                          \"type\": \"number\",\n                          \"unit\": \"pps\"\n                      },\n                      {\n                          \"alias\": \"Rate of Transmitted Packets\",\n                          \"colorMode\": null,\n                          \"colors\": [\n\n                          ],\n                          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                          \"decimals\": 2,\n                          \"link\": false,\n                          \"linkTooltip\": \"Drill down\",\n                          \"linkUrl\": \"\",\n                          \"pattern\": \"Value #F\",\n                          \"thresholds\": [\n\n                          ],\n                          \"type\": \"number\",\n                          \"unit\": \"pps\"\n                      },\n                      {\n                          \"alias\": \"Rate of Received Packets Dropped\",\n                          \"colorMode\": null,\n                          \"colors\": [\n\n                          ],\n                          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                          \"decimals\": 2,\n                          \"link\": false,\n                          \"linkTooltip\": \"Drill down\",\n                          \"linkUrl\": \"\",\n                          \"pattern\": \"Value #G\",\n                          \"thresholds\": [\n\n                          ],\n                          \"type\": \"number\",\n                          \"unit\": \"pps\"\n                      },\n                      {\n                          \"alias\": \"Rate of Transmitted Packets Dropped\",\n                          \"colorMode\": null,\n                          \"colors\": [\n\n                          ],\n                          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                          \"decimals\": 2,\n                          \"link\": false,\n                          \"linkTooltip\": \"Drill down\",\n                          \"linkUrl\": \"\",\n                          \"pattern\": \"Value #H\",\n                          \"thresholds\": [\n\n                          ],\n                          \"type\": \"number\",\n                          \"unit\": \"pps\"\n                      },\n                      {\n                          \"alias\": \"Namespace\",\n                          \"colorMode\": null,\n                          \"colors\": [\n\n                          ],\n                          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                          \"decimals\": 2,\n                          \"link\": true,\n                          \"linkTooltip\": \"Drill down\",\n                          \"linkUrl\": \"d/8b7a8b326d7a6f1f04244066368c67af/kubernetes-networking-namespace-pods?orgId=1&refresh=30s&var-namespace=$__cell\",\n                          \"pattern\": \"namespace\",\n                          \"thresholds\": [\n\n                          ],\n                          \"type\": \"number\",\n                          \"unit\": \"short\"\n                      }\n                  ],\n                  \"targets\": [\n                      {\n                          \"expr\": \"sort_desc(sum(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\n                          \"format\": \"table\",\n                          \"instant\": true,\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"\",\n                          \"refId\": \"A\",\n                          \"step\": 10\n                      },\n                      {\n                          \"expr\": \"sort_desc(sum(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\n                          \"format\": \"table\",\n                          \"instant\": true,\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"\",\n                          \"refId\": \"B\",\n                          \"step\": 10\n                      },\n                      {\n                          \"expr\": \"sort_desc(avg(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\n                          \"format\": \"table\",\n                          \"instant\": true,\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"\",\n                          \"refId\": \"C\",\n                          \"step\": 10\n                      },\n                      {\n                          \"expr\": \"sort_desc(avg(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\n                          \"format\": \"table\",\n                          \"instant\": true,\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"\",\n                          \"refId\": \"D\",\n                          \"step\": 10\n                      },\n                      {\n                          \"expr\": \"sort_desc(sum(irate(container_network_receive_packets_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\n                          \"format\": \"table\",\n                          \"instant\": true,\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"\",\n                          \"refId\": \"E\",\n                          \"step\": 10\n                      },\n                      {\n                          \"expr\": \"sort_desc(sum(irate(container_network_transmit_packets_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\n                          \"format\": \"table\",\n                          \"instant\": true,\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"\",\n                          \"refId\": \"F\",\n                          \"step\": 10\n                      },\n                      {\n                          \"expr\": \"sort_desc(sum(irate(container_network_receive_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\n                          \"format\": \"table\",\n                          \"instant\": true,\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"\",\n                          \"refId\": \"G\",\n                          \"step\": 10\n                      },\n                      {\n                          \"expr\": \"sort_desc(sum(irate(container_network_transmit_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\n                          \"format\": \"table\",\n                          \"instant\": true,\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"\",\n                          \"refId\": \"H\",\n                          \"step\": 10\n                      }\n                  ],\n                  \"timeFrom\": null,\n                  \"timeShift\": null,\n                  \"title\": \"Current Status\",\n                  \"type\": \"table\"\n              },\n              {\n                  \"collapse\": true,\n                  \"collapsed\": true,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 10\n                  },\n                  \"id\": 6,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": true,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 2,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n                              \"h\": 9,\n                              \"w\": 12,\n                              \"x\": 0,\n                              \"y\": 11\n                          },\n                          \"id\": 7,\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": true,\n                              \"hideEmpty\": true,\n                              \"hideZero\": true,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"sort\": \"current\",\n                              \"sortDesc\": true,\n                              \"total\": false,\n                              \"values\": true\n                          },\n                          \"lines\": false,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"minSpan\": 24,\n                          \"nullPointMode\": \"null\",\n                          \"paceLength\": 10,\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 24,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sort_desc(avg(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 1,\n                                  \"legendFormat\": \"{{namespace}}\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Average Rate of Bytes Received\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"series\",\n                              \"name\": null,\n                              \"show\": false,\n                              \"values\": [\n                                  \"current\"\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"Bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"Bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": true,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 2,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n                              \"h\": 9,\n                              \"w\": 12,\n                              \"x\": 12,\n                              \"y\": 11\n                          },\n                          \"id\": 8,\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": true,\n                              \"hideEmpty\": true,\n                              \"hideZero\": true,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"sort\": \"current\",\n                              \"sortDesc\": true,\n                              \"total\": false,\n                              \"values\": true\n                          },\n                          \"lines\": false,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"minSpan\": 24,\n                          \"nullPointMode\": \"null\",\n                          \"paceLength\": 10,\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 24,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sort_desc(avg(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 1,\n                                  \"legendFormat\": \"{{namespace}}\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Average Rate of Bytes Transmitted\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"series\",\n                              \"name\": null,\n                              \"show\": false,\n                              \"values\": [\n                                  \"current\"\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"Bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"Bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Average Bandwidth\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 11\n                  },\n                  \"id\": 9,\n                  \"panels\": [\n\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Bandwidth History\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"aliasColors\": {\n\n                  },\n                  \"bars\": false,\n                  \"dashLength\": 10,\n                  \"dashes\": false,\n                  \"datasource\": \"$datasource\",\n                  \"fill\": 2,\n                  \"fillGradient\": 0,\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 12\n                  },\n                  \"id\": 10,\n                  \"legend\": {\n                      \"alignAsTable\": true,\n                      \"avg\": true,\n                      \"current\": true,\n                      \"hideEmpty\": true,\n                      \"hideZero\": true,\n                      \"max\": true,\n                      \"min\": true,\n                      \"rightSide\": true,\n                      \"show\": true,\n                      \"sideWidth\": null,\n                      \"total\": false,\n                      \"values\": true\n                  },\n                  \"lines\": true,\n                  \"linewidth\": 2,\n                  \"links\": [\n\n                  ],\n                  \"minSpan\": 24,\n                  \"nullPointMode\": \"connected\",\n                  \"paceLength\": 10,\n                  \"percentage\": false,\n                  \"pointradius\": 5,\n                  \"points\": false,\n                  \"renderer\": \"flot\",\n                  \"repeat\": null,\n                  \"seriesOverrides\": [\n\n                  ],\n                  \"spaceLength\": 10,\n                  \"span\": 24,\n                  \"stack\": true,\n                  \"steppedLine\": false,\n                  \"targets\": [\n                      {\n                          \"expr\": \"sort_desc(sum(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 1,\n                          \"legendFormat\": \"{{namespace}}\",\n                          \"refId\": \"A\",\n                          \"step\": 10\n                      }\n                  ],\n                  \"thresholds\": [\n\n                  ],\n                  \"timeFrom\": null,\n                  \"timeShift\": null,\n                  \"title\": \"Receive Bandwidth\",\n                  \"tooltip\": {\n                      \"shared\": true,\n                      \"sort\": 2,\n                      \"value_type\": \"individual\"\n                  },\n                  \"type\": \"graph\",\n                  \"xaxis\": {\n                      \"buckets\": null,\n                      \"mode\": \"time\",\n                      \"name\": null,\n                      \"show\": true,\n                      \"values\": [\n\n                      ]\n                  },\n                  \"yaxes\": [\n                      {\n                          \"format\": \"Bps\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": 0,\n                          \"show\": true\n                      },\n                      {\n                          \"format\": \"Bps\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": 0,\n                          \"show\": true\n                      }\n                  ]\n              },\n              {\n                  \"aliasColors\": {\n\n                  },\n                  \"bars\": false,\n                  \"dashLength\": 10,\n                  \"dashes\": false,\n                  \"datasource\": \"$datasource\",\n                  \"fill\": 2,\n                  \"fillGradient\": 0,\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 21\n                  },\n                  \"id\": 11,\n                  \"legend\": {\n                      \"alignAsTable\": true,\n                      \"avg\": true,\n                      \"current\": true,\n                      \"hideEmpty\": true,\n                      \"hideZero\": true,\n                      \"max\": true,\n                      \"min\": true,\n                      \"rightSide\": true,\n                      \"show\": true,\n                      \"sideWidth\": null,\n                      \"total\": false,\n                      \"values\": true\n                  },\n                  \"lines\": true,\n                  \"linewidth\": 2,\n                  \"links\": [\n\n                  ],\n                  \"minSpan\": 24,\n                  \"nullPointMode\": \"connected\",\n                  \"paceLength\": 10,\n                  \"percentage\": false,\n                  \"pointradius\": 5,\n                  \"points\": false,\n                  \"renderer\": \"flot\",\n                  \"repeat\": null,\n                  \"seriesOverrides\": [\n\n                  ],\n                  \"spaceLength\": 10,\n                  \"span\": 24,\n                  \"stack\": true,\n                  \"steppedLine\": false,\n                  \"targets\": [\n                      {\n                          \"expr\": \"sort_desc(sum(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 1,\n                          \"legendFormat\": \"{{namespace}}\",\n                          \"refId\": \"A\",\n                          \"step\": 10\n                      }\n                  ],\n                  \"thresholds\": [\n\n                  ],\n                  \"timeFrom\": null,\n                  \"timeShift\": null,\n                  \"title\": \"Transmit Bandwidth\",\n                  \"tooltip\": {\n                      \"shared\": true,\n                      \"sort\": 2,\n                      \"value_type\": \"individual\"\n                  },\n                  \"type\": \"graph\",\n                  \"xaxis\": {\n                      \"buckets\": null,\n                      \"mode\": \"time\",\n                      \"name\": null,\n                      \"show\": true,\n                      \"values\": [\n\n                      ]\n                  },\n                  \"yaxes\": [\n                      {\n                          \"format\": \"Bps\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": 0,\n                          \"show\": true\n                      },\n                      {\n                          \"format\": \"Bps\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": 0,\n                          \"show\": true\n                      }\n                  ]\n              },\n              {\n                  \"collapse\": true,\n                  \"collapsed\": true,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 30\n                  },\n                  \"id\": 12,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 2,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n                              \"h\": 9,\n                              \"w\": 24,\n                              \"x\": 0,\n                              \"y\": 31\n                          },\n                          \"id\": 13,\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": true,\n                              \"current\": true,\n                              \"hideEmpty\": true,\n                              \"hideZero\": true,\n                              \"max\": true,\n                              \"min\": true,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": true\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 2,\n                          \"links\": [\n\n                          ],\n                          \"minSpan\": 24,\n                          \"nullPointMode\": \"connected\",\n                          \"paceLength\": 10,\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 24,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sort_desc(sum(irate(container_network_receive_packets_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 1,\n                                  \"legendFormat\": \"{{namespace}}\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Rate of Received Packets\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 2,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n                              \"h\": 9,\n                              \"w\": 24,\n                              \"x\": 0,\n                              \"y\": 40\n                          },\n                          \"id\": 14,\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": true,\n                              \"current\": true,\n                              \"hideEmpty\": true,\n                              \"hideZero\": true,\n                              \"max\": true,\n                              \"min\": true,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": true\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 2,\n                          \"links\": [\n\n                          ],\n                          \"minSpan\": 24,\n                          \"nullPointMode\": \"connected\",\n                          \"paceLength\": 10,\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 24,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sort_desc(sum(irate(container_network_transmit_packets_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 1,\n                                  \"legendFormat\": \"{{namespace}}\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Rate of Transmitted Packets\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Packets\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"collapse\": true,\n                  \"collapsed\": true,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 31\n                  },\n                  \"id\": 15,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 2,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n                              \"h\": 9,\n                              \"w\": 24,\n                              \"x\": 0,\n                              \"y\": 50\n                          },\n                          \"id\": 16,\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": true,\n                              \"current\": true,\n                              \"hideEmpty\": true,\n                              \"hideZero\": true,\n                              \"max\": true,\n                              \"min\": true,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": true\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 2,\n                          \"links\": [\n\n                          ],\n                          \"minSpan\": 24,\n                          \"nullPointMode\": \"connected\",\n                          \"paceLength\": 10,\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 24,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sort_desc(sum(irate(container_network_receive_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 1,\n                                  \"legendFormat\": \"{{namespace}}\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Rate of Received Packets Dropped\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 2,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n                              \"h\": 9,\n                              \"w\": 24,\n                              \"x\": 0,\n                              \"y\": 59\n                          },\n                          \"id\": 17,\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": true,\n                              \"current\": true,\n                              \"hideEmpty\": true,\n                              \"hideZero\": true,\n                              \"max\": true,\n                              \"min\": true,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": true\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 2,\n                          \"links\": [\n\n                          ],\n                          \"minSpan\": 24,\n                          \"nullPointMode\": \"connected\",\n                          \"paceLength\": 10,\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 24,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sort_desc(sum(irate(container_network_transmit_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=~\\\".+\\\"}[$interval:$resolution])) by (namespace))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 1,\n                                  \"legendFormat\": \"{{namespace}}\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Rate of Transmitted Packets Dropped\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 2,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n                              \"h\": 9,\n                              \"w\": 24,\n                              \"x\": 0,\n                              \"y\": 59\n                          },\n                          \"id\": 18,\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": true,\n                              \"current\": true,\n                              \"hideEmpty\": true,\n                              \"hideZero\": true,\n                              \"max\": true,\n                              \"min\": true,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": true\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 2,\n                          \"links\": [\n                              {\n                                  \"targetBlank\": true,\n                                  \"title\": \"What is TCP Retransmit?\",\n                                  \"url\": \"https://accedian.com/enterprises/blog/network-packet-loss-retransmissions-and-duplicate-acknowledgements/\"\n                              }\n                          ],\n                          \"minSpan\": 24,\n                          \"nullPointMode\": \"connected\",\n                          \"paceLength\": 10,\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 24,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sort_desc(sum(rate(node_netstat_Tcp_RetransSegs{cluster=\\\"$cluster\\\"}[$interval:$resolution]) / rate(node_netstat_Tcp_OutSegs{cluster=\\\"$cluster\\\"}[$interval:$resolution])) by (instance))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 1,\n                                  \"legendFormat\": \"{{instance}}\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Rate of TCP Retransmits out of all sent segments\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"percentunit\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"percentunit\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 2,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n                              \"h\": 9,\n                              \"w\": 24,\n                              \"x\": 0,\n                              \"y\": 59\n                          },\n                          \"id\": 19,\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": true,\n                              \"current\": true,\n                              \"hideEmpty\": true,\n                              \"hideZero\": true,\n                              \"max\": true,\n                              \"min\": true,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": true\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 2,\n                          \"links\": [\n                              {\n                                  \"targetBlank\": true,\n                                  \"title\": \"Why monitor SYN retransmits?\",\n                                  \"url\": \"https://github.com/prometheus/node_exporter/issues/1023#issuecomment-408128365\"\n                              }\n                          ],\n                          \"minSpan\": 24,\n                          \"nullPointMode\": \"connected\",\n                          \"paceLength\": 10,\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 24,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sort_desc(sum(rate(node_netstat_TcpExt_TCPSynRetrans{cluster=\\\"$cluster\\\"}[$interval:$resolution]) / rate(node_netstat_Tcp_RetransSegs{cluster=\\\"$cluster\\\"}[$interval:$resolution])) by (instance))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 1,\n                                  \"legendFormat\": \"{{instance}}\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Rate of TCP SYN Retransmits out of all retransmits\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"percentunit\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"percentunit\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Errors\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              }\n          ],\n          \"refresh\": \"10s\",\n          \"rows\": [\n\n          ],\n          \"schemaVersion\": 18,\n          \"style\": \"dark\",\n          \"tags\": [\n              \"kubernetes-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"allValue\": null,\n                      \"auto\": false,\n                      \"auto_count\": 30,\n                      \"auto_min\": \"10s\",\n                      \"current\": {\n                          \"text\": \"5m\",\n                          \"value\": \"5m\"\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": false,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"resolution\",\n                      \"options\": [\n                          {\n                              \"selected\": false,\n                              \"text\": \"30s\",\n                              \"value\": \"30s\"\n                          },\n                          {\n                              \"selected\": true,\n                              \"text\": \"5m\",\n                              \"value\": \"5m\"\n                          },\n                          {\n                              \"selected\": false,\n                              \"text\": \"1h\",\n                              \"value\": \"1h\"\n                          }\n                      ],\n                      \"query\": \"30s,5m,1h\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"skipUrlSync\": false,\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"interval\",\n                      \"useTags\": false\n                  },\n                  {\n                      \"allValue\": null,\n                      \"auto\": false,\n                      \"auto_count\": 30,\n                      \"auto_min\": \"10s\",\n                      \"current\": {\n                          \"text\": \"5m\",\n                          \"value\": \"5m\"\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 2,\n                      \"includeAll\": false,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"interval\",\n                      \"options\": [\n                          {\n                              \"selected\": true,\n                              \"text\": \"4h\",\n                              \"value\": \"4h\"\n                          }\n                      ],\n                      \"query\": \"4h\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"skipUrlSync\": false,\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"interval\",\n                      \"useTags\": false\n                  },\n                  {\n                      \"current\": {\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data Source\",\n                      \"name\": \"datasource\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"prometheus\",\n                      \"refresh\": 1,\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"allValue\": null,\n                      \"current\": {\n\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": false,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"cluster\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(up{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\"}, cluster)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"sort\": 0,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timepicker\": {\n              \"refresh_intervals\": [\n                  \"5s\",\n                  \"10s\",\n                  \"30s\",\n                  \"1m\",\n                  \"5m\",\n                  \"15m\",\n                  \"30m\",\n                  \"1h\",\n                  \"2h\",\n                  \"1d\"\n              ],\n              \"time_options\": [\n                  \"5m\",\n                  \"15m\",\n                  \"1h\",\n                  \"6h\",\n                  \"12h\",\n                  \"24h\",\n                  \"2d\",\n                  \"7d\",\n                  \"30d\"\n              ]\n          },\n          \"timezone\": \"UTC\",\n          \"title\": \"Kubernetes / Networking / Cluster\",\n          \"uid\": \"ff635a025bcfea7bc3dd4f508990a3e9\",\n          \"version\": 0\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 9.5.3\n    name: grafana-dashboard-cluster-total\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    controller-manager.json: |-\n      {\n          \"__inputs\": [\n\n          ],\n          \"__requires\": [\n\n          ],\n          \"annotations\": {\n              \"list\": [\n\n              ]\n          },\n          \"editable\": false,\n          \"gnetId\": null,\n          \"graphTooltip\": 0,\n          \"hideControls\": false,\n          \"id\": null,\n          \"links\": [\n\n          ],\n          \"refresh\": \"10s\",\n          \"rows\": [\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"cacheTimeout\": null,\n                          \"colorBackground\": false,\n                          \"colorValue\": false,\n                          \"colors\": [\n                              \"#299c46\",\n                              \"rgba(237, 129, 40, 0.89)\",\n                              \"#d44a3a\"\n                          ],\n                          \"datasource\": \"$datasource\",\n                          \"format\": \"none\",\n                          \"gauge\": {\n                              \"maxValue\": 100,\n                              \"minValue\": 0,\n                              \"show\": false,\n                              \"thresholdLabels\": false,\n                              \"thresholdMarkers\": true\n                          },\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 2,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"rightSide\": true\n                          },\n                          \"links\": [\n\n                          ],\n                          \"mappingType\": 1,\n                          \"mappingTypes\": [\n                              {\n                                  \"name\": \"value to text\",\n                                  \"value\": 1\n                              },\n                              {\n                                  \"name\": \"range to text\",\n                                  \"value\": 2\n                              }\n                          ],\n                          \"maxDataPoints\": 100,\n                          \"nullPointMode\": \"connected\",\n                          \"nullText\": null,\n                          \"postfix\": \"\",\n                          \"postfixFontSize\": \"50%\",\n                          \"prefix\": \"\",\n                          \"prefixFontSize\": \"50%\",\n                          \"rangeMaps\": [\n                              {\n                                  \"from\": \"null\",\n                                  \"text\": \"N/A\",\n                                  \"to\": \"null\"\n                              }\n                          ],\n                          \"span\": 2,\n                          \"sparkline\": {\n                              \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n                              \"full\": false,\n                              \"lineColor\": \"rgb(31, 120, 193)\",\n                              \"show\": false\n                          },\n                          \"tableColumn\": \"\",\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(up{cluster=\\\"$cluster\\\", job=\\\"kube-controller-manager\\\"})\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": \"\",\n                          \"title\": \"Up\",\n                          \"tooltip\": {\n                              \"shared\": false\n                          },\n                          \"type\": \"singlestat\",\n                          \"valueFontSize\": \"80%\",\n                          \"valueMaps\": [\n                              {\n                                  \"op\": \"=\",\n                                  \"text\": \"N/A\",\n                                  \"value\": \"null\"\n                              }\n                          ],\n                          \"valueName\": \"min\"\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 3,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": true,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": true\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 10,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(rate(workqueue_adds_total{cluster=\\\"$cluster\\\", job=\\\"kube-controller-manager\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (cluster, instance, name)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{cluster}} {{instance}} {{name}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Work Queue Add Rate\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"ops\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"ops\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": false,\n                  \"title\": \"Dashboard Row\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 4,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": true,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": true\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(rate(workqueue_depth{cluster=\\\"$cluster\\\", job=\\\"kube-controller-manager\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (cluster, instance, name)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{cluster}} {{instance}} {{name}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Work Queue Depth\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": false,\n                  \"title\": \"Dashboard Row\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 5,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": true,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": true\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"histogram_quantile(0.99, sum(rate(workqueue_queue_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-controller-manager\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (cluster, instance, name, le))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{cluster}} {{instance}} {{name}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Work Queue Latency\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"s\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"s\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": false,\n                  \"title\": \"Dashboard Row\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 6,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 4,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(rate(rest_client_requests_total{job=\\\"kube-controller-manager\\\", instance=~\\\"$instance\\\",code=~\\\"2..\\\"}[$__rate_interval]))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"2xx\",\n                                  \"refId\": \"A\"\n                              },\n                              {\n                                  \"expr\": \"sum(rate(rest_client_requests_total{job=\\\"kube-controller-manager\\\", instance=~\\\"$instance\\\",code=~\\\"3..\\\"}[$__rate_interval]))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"3xx\",\n                                  \"refId\": \"B\"\n                              },\n                              {\n                                  \"expr\": \"sum(rate(rest_client_requests_total{job=\\\"kube-controller-manager\\\", instance=~\\\"$instance\\\",code=~\\\"4..\\\"}[$__rate_interval]))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"4xx\",\n                                  \"refId\": \"C\"\n                              },\n                              {\n                                  \"expr\": \"sum(rate(rest_client_requests_total{job=\\\"kube-controller-manager\\\", instance=~\\\"$instance\\\",code=~\\\"5..\\\"}[$__rate_interval]))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"5xx\",\n                                  \"refId\": \"D\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Kube API Request Rate\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"ops\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"ops\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 7,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 8,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"histogram_quantile(0.99, sum(rate(rest_client_request_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-controller-manager\\\", instance=~\\\"$instance\\\", verb=\\\"POST\\\"}[$__rate_interval])) by (verb, url, le))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{verb}} {{url}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Post Request Latency 99th Quantile\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"s\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"s\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": false,\n                  \"title\": \"Dashboard Row\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 8,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": true,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": true\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"histogram_quantile(0.99, sum(rate(rest_client_request_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-controller-manager\\\", instance=~\\\"$instance\\\", verb=\\\"GET\\\"}[$__rate_interval])) by (verb, url, le))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{verb}} {{url}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Get Request Latency 99th Quantile\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"s\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"s\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": false,\n                  \"title\": \"Dashboard Row\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 9,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 4,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"process_resident_memory_bytes{cluster=\\\"$cluster\\\", job=\\\"kube-controller-manager\\\",instance=~\\\"$instance\\\"}\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{instance}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Memory\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"bytes\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"bytes\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 10,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 4,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"rate(process_cpu_seconds_total{cluster=\\\"$cluster\\\", job=\\\"kube-controller-manager\\\",instance=~\\\"$instance\\\"}[$__rate_interval])\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{instance}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"CPU usage\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 11,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 4,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"go_goroutines{cluster=\\\"$cluster\\\", job=\\\"kube-controller-manager\\\",instance=~\\\"$instance\\\"}\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{instance}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Goroutines\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": false,\n                  \"title\": \"Dashboard Row\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              }\n          ],\n          \"schemaVersion\": 14,\n          \"style\": \"dark\",\n          \"tags\": [\n              \"kubernetes-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data Source\",\n                      \"name\": \"datasource\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"prometheus\",\n                      \"refresh\": 1,\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"allValue\": null,\n                      \"current\": {\n\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": false,\n                      \"label\": \"cluster\",\n                      \"multi\": false,\n                      \"name\": \"cluster\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(up{job=\\\"kube-controller-manager\\\"}, cluster)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  },\n                  {\n                      \"allValue\": null,\n                      \"current\": {\n\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": true,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"instance\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(up{cluster=\\\"$cluster\\\", job=\\\"kube-controller-manager\\\"}, instance)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timepicker\": {\n              \"refresh_intervals\": [\n                  \"5s\",\n                  \"10s\",\n                  \"30s\",\n                  \"1m\",\n                  \"5m\",\n                  \"15m\",\n                  \"30m\",\n                  \"1h\",\n                  \"2h\",\n                  \"1d\"\n              ],\n              \"time_options\": [\n                  \"5m\",\n                  \"15m\",\n                  \"1h\",\n                  \"6h\",\n                  \"12h\",\n                  \"24h\",\n                  \"2d\",\n                  \"7d\",\n                  \"30d\"\n              ]\n          },\n          \"timezone\": \"UTC\",\n          \"title\": \"Kubernetes / Controller Manager\",\n          \"uid\": \"72e0e05bef5099e5f049b05fdc429ed4\",\n          \"version\": 0\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 9.5.3\n    name: grafana-dashboard-controller-manager\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    grafana-overview.json: |-\n      {\n          \"annotations\": {\n              \"list\": [\n                  {\n                      \"builtIn\": 1,\n                      \"datasource\": \"-- Grafana --\",\n                      \"enable\": true,\n                      \"hide\": true,\n                      \"iconColor\": \"rgba(0, 211, 255, 1)\",\n                      \"name\": \"Annotations & Alerts\",\n                      \"target\": {\n                          \"limit\": 100,\n                          \"matchAny\": false,\n                          \"tags\": [\n\n                          ],\n                          \"type\": \"dashboard\"\n                      },\n                      \"type\": \"dashboard\"\n                  }\n              ]\n          },\n          \"editable\": true,\n          \"gnetId\": null,\n          \"graphTooltip\": 0,\n          \"id\": 3085,\n          \"iteration\": 1631554945276,\n          \"links\": [\n\n          ],\n          \"panels\": [\n              {\n                  \"datasource\": \"$datasource\",\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"mappings\": [\n\n                          ],\n                          \"noValue\": \"0\",\n                          \"thresholds\": {\n                              \"mode\": \"absolute\",\n                              \"steps\": [\n                                  {\n                                      \"color\": \"green\",\n                                      \"value\": null\n                                  },\n                                  {\n                                      \"color\": \"red\",\n                                      \"value\": 80\n                                  }\n                              ]\n                          }\n                      },\n                      \"overrides\": [\n\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 5,\n                      \"w\": 6,\n                      \"x\": 0,\n                      \"y\": 0\n                  },\n                  \"id\": 6,\n                  \"options\": {\n                      \"colorMode\": \"value\",\n                      \"graphMode\": \"area\",\n                      \"justifyMode\": \"auto\",\n                      \"orientation\": \"auto\",\n                      \"reduceOptions\": {\n                          \"calcs\": [\n                              \"mean\"\n                          ],\n                          \"fields\": \"\",\n                          \"values\": false\n                      },\n                      \"text\": {\n\n                      },\n                      \"textMode\": \"auto\"\n                  },\n                  \"pluginVersion\": \"8.1.3\",\n                  \"targets\": [\n                      {\n                          \"expr\": \"grafana_alerting_result_total{job=~\\\"$job\\\", instance=~\\\"$instance\\\", state=\\\"alerting\\\"}\",\n                          \"instant\": true,\n                          \"interval\": \"\",\n                          \"legendFormat\": \"\",\n                          \"refId\": \"A\"\n                      }\n                  ],\n                  \"timeFrom\": null,\n                  \"timeShift\": null,\n                  \"title\": \"Firing Alerts\",\n                  \"type\": \"stat\"\n              },\n              {\n                  \"datasource\": \"$datasource\",\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"mappings\": [\n\n                          ],\n                          \"thresholds\": {\n                              \"mode\": \"absolute\",\n                              \"steps\": [\n                                  {\n                                      \"color\": \"green\",\n                                      \"value\": null\n                                  },\n                                  {\n                                      \"color\": \"red\",\n                                      \"value\": 80\n                                  }\n                              ]\n                          }\n                      },\n                      \"overrides\": [\n\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 5,\n                      \"w\": 6,\n                      \"x\": 6,\n                      \"y\": 0\n                  },\n                  \"id\": 8,\n                  \"options\": {\n                      \"colorMode\": \"value\",\n                      \"graphMode\": \"area\",\n                      \"justifyMode\": \"auto\",\n                      \"orientation\": \"auto\",\n                      \"reduceOptions\": {\n                          \"calcs\": [\n                              \"mean\"\n                          ],\n                          \"fields\": \"\",\n                          \"values\": false\n                      },\n                      \"text\": {\n\n                      },\n                      \"textMode\": \"auto\"\n                  },\n                  \"pluginVersion\": \"8.1.3\",\n                  \"targets\": [\n                      {\n                          \"expr\": \"sum(grafana_stat_totals_dashboard{job=~\\\"$job\\\", instance=~\\\"$instance\\\"})\",\n                          \"interval\": \"\",\n                          \"legendFormat\": \"\",\n                          \"refId\": \"A\"\n                      }\n                  ],\n                  \"timeFrom\": null,\n                  \"timeShift\": null,\n                  \"title\": \"Dashboards\",\n                  \"type\": \"stat\"\n              },\n              {\n                  \"datasource\": \"$datasource\",\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"custom\": {\n                              \"align\": null,\n                              \"displayMode\": \"auto\"\n                          },\n                          \"mappings\": [\n\n                          ],\n                          \"thresholds\": {\n                              \"mode\": \"absolute\",\n                              \"steps\": [\n                                  {\n                                      \"color\": \"green\",\n                                      \"value\": null\n                                  },\n                                  {\n                                      \"color\": \"red\",\n                                      \"value\": 80\n                                  }\n                              ]\n                          }\n                      },\n                      \"overrides\": [\n\n                      ]\n                  },\n                  \"gridPos\": {\n                      \"h\": 5,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 0\n                  },\n                  \"id\": 10,\n                  \"options\": {\n                      \"showHeader\": true\n                  },\n                  \"pluginVersion\": \"8.1.3\",\n                  \"targets\": [\n                      {\n                          \"expr\": \"grafana_build_info{job=~\\\"$job\\\", instance=~\\\"$instance\\\"}\",\n                          \"instant\": true,\n                          \"interval\": \"\",\n                          \"legendFormat\": \"\",\n                          \"refId\": \"A\"\n                      }\n                  ],\n                  \"timeFrom\": null,\n                  \"timeShift\": null,\n                  \"title\": \"Build Info\",\n                  \"transformations\": [\n                      {\n                          \"id\": \"labelsToFields\",\n                          \"options\": {\n\n                          }\n                      },\n                      {\n                          \"id\": \"organize\",\n                          \"options\": {\n                              \"excludeByName\": {\n                                  \"Time\": true,\n                                  \"Value\": true,\n                                  \"branch\": true,\n                                  \"container\": true,\n                                  \"goversion\": true,\n                                  \"namespace\": true,\n                                  \"pod\": true,\n                                  \"revision\": true\n                              },\n                              \"indexByName\": {\n                                  \"Time\": 7,\n                                  \"Value\": 11,\n                                  \"branch\": 4,\n                                  \"container\": 8,\n                                  \"edition\": 2,\n                                  \"goversion\": 6,\n                                  \"instance\": 1,\n                                  \"job\": 0,\n                                  \"namespace\": 9,\n                                  \"pod\": 10,\n                                  \"revision\": 5,\n                                  \"version\": 3\n                              },\n                              \"renameByName\": {\n\n                              }\n                          }\n                      }\n                  ],\n                  \"type\": \"table\"\n              },\n              {\n                  \"aliasColors\": {\n\n                  },\n                  \"bars\": false,\n                  \"dashLength\": 10,\n                  \"dashes\": false,\n                  \"datasource\": \"$datasource\",\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"links\": [\n\n                          ]\n                      },\n                      \"overrides\": [\n\n                      ]\n                  },\n                  \"fill\": 1,\n                  \"fillGradient\": 0,\n                  \"gridPos\": {\n                      \"h\": 8,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 5\n                  },\n                  \"hiddenSeries\": false,\n                  \"id\": 2,\n                  \"legend\": {\n                      \"avg\": false,\n                      \"current\": false,\n                      \"max\": false,\n                      \"min\": false,\n                      \"show\": true,\n                      \"total\": false,\n                      \"values\": false\n                  },\n                  \"lines\": true,\n                  \"linewidth\": 1,\n                  \"nullPointMode\": \"null\",\n                  \"options\": {\n                      \"alertThreshold\": true\n                  },\n                  \"percentage\": false,\n                  \"pluginVersion\": \"8.1.3\",\n                  \"pointradius\": 2,\n                  \"points\": false,\n                  \"renderer\": \"flot\",\n                  \"seriesOverrides\": [\n\n                  ],\n                  \"spaceLength\": 10,\n                  \"stack\": true,\n                  \"steppedLine\": false,\n                  \"targets\": [\n                      {\n                          \"expr\": \"sum by (status_code) (irate(grafana_http_request_duration_seconds_count{job=~\\\"$job\\\", instance=~\\\"$instance\\\"}[1m])) \",\n                          \"interval\": \"\",\n                          \"legendFormat\": \"{{status_code}}\",\n                          \"refId\": \"A\"\n                      }\n                  ],\n                  \"thresholds\": [\n\n                  ],\n                  \"timeFrom\": null,\n                  \"timeRegions\": [\n\n                  ],\n                  \"timeShift\": null,\n                  \"title\": \"RPS\",\n                  \"tooltip\": {\n                      \"shared\": true,\n                      \"sort\": 0,\n                      \"value_type\": \"individual\"\n                  },\n                  \"type\": \"graph\",\n                  \"xaxis\": {\n                      \"buckets\": null,\n                      \"mode\": \"time\",\n                      \"name\": null,\n                      \"show\": true,\n                      \"values\": [\n\n                      ]\n                  },\n                  \"yaxes\": [\n                      {\n                          \"$$hashKey\": \"object:157\",\n                          \"format\": \"reqps\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": null,\n                          \"show\": true\n                      },\n                      {\n                          \"$$hashKey\": \"object:158\",\n                          \"format\": \"short\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": null,\n                          \"show\": false\n                      }\n                  ],\n                  \"yaxis\": {\n                      \"align\": false,\n                      \"alignLevel\": null\n                  }\n              },\n              {\n                  \"aliasColors\": {\n\n                  },\n                  \"bars\": false,\n                  \"dashLength\": 10,\n                  \"dashes\": false,\n                  \"datasource\": \"$datasource\",\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"links\": [\n\n                          ]\n                      },\n                      \"overrides\": [\n\n                      ]\n                  },\n                  \"fill\": 1,\n                  \"fillGradient\": 0,\n                  \"gridPos\": {\n                      \"h\": 8,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 5\n                  },\n                  \"hiddenSeries\": false,\n                  \"id\": 4,\n                  \"legend\": {\n                      \"avg\": false,\n                      \"current\": false,\n                      \"max\": false,\n                      \"min\": false,\n                      \"show\": true,\n                      \"total\": false,\n                      \"values\": false\n                  },\n                  \"lines\": true,\n                  \"linewidth\": 1,\n                  \"nullPointMode\": \"null\",\n                  \"options\": {\n                      \"alertThreshold\": true\n                  },\n                  \"percentage\": false,\n                  \"pluginVersion\": \"8.1.3\",\n                  \"pointradius\": 2,\n                  \"points\": false,\n                  \"renderer\": \"flot\",\n                  \"seriesOverrides\": [\n\n                  ],\n                  \"spaceLength\": 10,\n                  \"stack\": false,\n                  \"steppedLine\": false,\n                  \"targets\": [\n                      {\n                          \"exemplar\": true,\n                          \"expr\": \"histogram_quantile(0.99, sum(irate(grafana_http_request_duration_seconds_bucket{instance=~\\\"$instance\\\", job=~\\\"$job\\\"}[$__rate_interval])) by (le)) * 1\",\n                          \"interval\": \"\",\n                          \"legendFormat\": \"99th Percentile\",\n                          \"refId\": \"A\"\n                      },\n                      {\n                          \"exemplar\": true,\n                          \"expr\": \"histogram_quantile(0.50, sum(irate(grafana_http_request_duration_seconds_bucket{instance=~\\\"$instance\\\", job=~\\\"$job\\\"}[$__rate_interval])) by (le)) * 1\",\n                          \"interval\": \"\",\n                          \"legendFormat\": \"50th Percentile\",\n                          \"refId\": \"B\"\n                      },\n                      {\n                          \"exemplar\": true,\n                          \"expr\": \"sum(irate(grafana_http_request_duration_seconds_sum{instance=~\\\"$instance\\\", job=~\\\"$job\\\"}[$__rate_interval])) * 1 / sum(irate(grafana_http_request_duration_seconds_count{instance=~\\\"$instance\\\", job=~\\\"$job\\\"}[$__rate_interval]))\",\n                          \"interval\": \"\",\n                          \"legendFormat\": \"Average\",\n                          \"refId\": \"C\"\n                      }\n                  ],\n                  \"thresholds\": [\n\n                  ],\n                  \"timeFrom\": null,\n                  \"timeRegions\": [\n\n                  ],\n                  \"timeShift\": null,\n                  \"title\": \"Request Latency\",\n                  \"tooltip\": {\n                      \"shared\": true,\n                      \"sort\": 0,\n                      \"value_type\": \"individual\"\n                  },\n                  \"type\": \"graph\",\n                  \"xaxis\": {\n                      \"buckets\": null,\n                      \"mode\": \"time\",\n                      \"name\": null,\n                      \"show\": true,\n                      \"values\": [\n\n                      ]\n                  },\n                  \"yaxes\": [\n                      {\n                          \"$$hashKey\": \"object:210\",\n                          \"format\": \"ms\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": null,\n                          \"show\": true\n                      },\n                      {\n                          \"$$hashKey\": \"object:211\",\n                          \"format\": \"short\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": null,\n                          \"show\": true\n                      }\n                  ],\n                  \"yaxis\": {\n                      \"align\": false,\n                      \"alignLevel\": null\n                  }\n              }\n          ],\n          \"schemaVersion\": 30,\n          \"style\": \"dark\",\n          \"tags\": [\n\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"selected\": true,\n                          \"text\": \"dev-cortex\",\n                          \"value\": \"dev-cortex\"\n                      },\n                      \"description\": null,\n                      \"error\": null,\n                      \"hide\": 0,\n                      \"includeAll\": false,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"datasource\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"prometheus\",\n                      \"queryValue\": \"\",\n                      \"refresh\": 1,\n                      \"regex\": \"\",\n                      \"skipUrlSync\": false,\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"allValue\": \".*\",\n                      \"current\": {\n                          \"selected\": false,\n                          \"text\": [\n                              \"default/grafana\"\n                          ],\n                          \"value\": [\n                              \"default/grafana\"\n                          ]\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"definition\": \"label_values(grafana_build_info, job)\",\n                      \"description\": null,\n                      \"error\": null,\n                      \"hide\": 0,\n                      \"includeAll\": true,\n                      \"label\": null,\n                      \"multi\": true,\n                      \"name\": \"job\",\n                      \"options\": [\n\n                      ],\n                      \"query\": {\n                          \"query\": \"label_values(grafana_build_info, job)\",\n                          \"refId\": \"Billing Admin-job-Variable-Query\"\n                      },\n                      \"refresh\": 1,\n                      \"regex\": \"\",\n                      \"skipUrlSync\": false,\n                      \"sort\": 0,\n                      \"tagValuesQuery\": \"\",\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  },\n                  {\n                      \"allValue\": \".*\",\n                      \"current\": {\n                          \"selected\": false,\n                          \"text\": \"All\",\n                          \"value\": \"$__all\"\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"definition\": \"label_values(grafana_build_info, instance)\",\n                      \"description\": null,\n                      \"error\": null,\n                      \"hide\": 0,\n                      \"includeAll\": true,\n                      \"label\": null,\n                      \"multi\": true,\n                      \"name\": \"instance\",\n                      \"options\": [\n\n                      ],\n                      \"query\": {\n                          \"query\": \"label_values(grafana_build_info, instance)\",\n                          \"refId\": \"Billing Admin-instance-Variable-Query\"\n                      },\n                      \"refresh\": 1,\n                      \"regex\": \"\",\n                      \"skipUrlSync\": false,\n                      \"sort\": 0,\n                      \"tagValuesQuery\": \"\",\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-6h\",\n              \"to\": \"now\"\n          },\n          \"timepicker\": {\n              \"refresh_intervals\": [\n                  \"10s\",\n                  \"30s\",\n                  \"1m\",\n                  \"5m\",\n                  \"15m\",\n                  \"30m\",\n                  \"1h\",\n                  \"2h\",\n                  \"1d\"\n              ]\n          },\n          \"timezone\": \"\",\n          \"title\": \"Grafana Overview\",\n          \"uid\": \"6be0s85Mk\",\n          \"version\": 2\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 9.5.3\n    name: grafana-dashboard-grafana-overview\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    k8s-resources-cluster.json: |-\n      {\n          \"annotations\": {\n              \"list\": [\n\n              ]\n          },\n          \"editable\": true,\n          \"gnetId\": null,\n          \"graphTooltip\": 0,\n          \"hideControls\": false,\n          \"links\": [\n\n          ],\n          \"refresh\": \"10s\",\n          \"rows\": [\n              {\n                  \"collapse\": false,\n                  \"height\": \"100px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"format\": \"percentunit\",\n                          \"id\": 1,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 2,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"cluster:node_cpu:ratio_rate5m{cluster=\\\"$cluster\\\"}\",\n                                  \"format\": \"time_series\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": \"70,80\",\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"CPU Utilisation\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"singlestat\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"format\": \"percentunit\",\n                          \"id\": 2,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 2,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(namespace_cpu:kube_pod_container_resource_requests:sum{cluster=\\\"$cluster\\\"}) / sum(kube_node_status_allocatable{job=\\\"kube-state-metrics\\\",resource=\\\"cpu\\\",cluster=\\\"$cluster\\\"})\",\n                                  \"format\": \"time_series\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": \"70,80\",\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"CPU Requests Commitment\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"singlestat\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"format\": \"percentunit\",\n                          \"id\": 3,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 2,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(namespace_cpu:kube_pod_container_resource_limits:sum{cluster=\\\"$cluster\\\"}) / sum(kube_node_status_allocatable{job=\\\"kube-state-metrics\\\",resource=\\\"cpu\\\",cluster=\\\"$cluster\\\"})\",\n                                  \"format\": \"time_series\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": \"70,80\",\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"CPU Limits Commitment\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"singlestat\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"format\": \"percentunit\",\n                          \"id\": 4,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 2,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"1 - sum(:node_memory_MemAvailable_bytes:sum{cluster=\\\"$cluster\\\"}) / sum(node_memory_MemTotal_bytes{job=\\\"node-exporter\\\",cluster=\\\"$cluster\\\"})\",\n                                  \"format\": \"time_series\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": \"70,80\",\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Memory Utilisation\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"singlestat\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"format\": \"percentunit\",\n                          \"id\": 5,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 2,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(namespace_memory:kube_pod_container_resource_requests:sum{cluster=\\\"$cluster\\\"}) / sum(kube_node_status_allocatable{job=\\\"kube-state-metrics\\\",resource=\\\"memory\\\",cluster=\\\"$cluster\\\"})\",\n                                  \"format\": \"time_series\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": \"70,80\",\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Memory Requests Commitment\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"singlestat\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"format\": \"percentunit\",\n                          \"id\": 6,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 2,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(namespace_memory:kube_pod_container_resource_limits:sum{cluster=\\\"$cluster\\\"}) / sum(kube_node_status_allocatable{job=\\\"kube-state-metrics\\\",resource=\\\"memory\\\",cluster=\\\"$cluster\\\"})\",\n                                  \"format\": \"time_series\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": \"70,80\",\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Memory Limits Commitment\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"singlestat\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": false,\n                  \"title\": \"Headlines\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 7,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\"}) by (namespace)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{namespace}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"CPU Usage\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"CPU\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"id\": 8,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"styles\": [\n                              {\n                                  \"alias\": \"Time\",\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"pattern\": \"Time\",\n                                  \"type\": \"hidden\"\n                              },\n                              {\n                                  \"alias\": \"Pods\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 0,\n                                  \"link\": true,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down to pods\",\n                                  \"linkUrl\": \"/d/85a562078cdf77779eaa1add43ccec1e/k8s-resources-namespace?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$__cell_1\",\n                                  \"pattern\": \"Value #A\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"Workloads\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 0,\n                                  \"link\": true,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down to workloads\",\n                                  \"linkUrl\": \"/d/a87fb0d919ec0ea5f6543124e16c42a5/k8s-resources-workloads-namespace?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$__cell_1\",\n                                  \"pattern\": \"Value #B\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"CPU Usage\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #C\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"CPU Requests\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #D\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"CPU Requests %\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #E\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"percentunit\"\n                              },\n                              {\n                                  \"alias\": \"CPU Limits\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #F\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"CPU Limits %\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #G\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"percentunit\"\n                              },\n                              {\n                                  \"alias\": \"Namespace\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": true,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down to pods\",\n                                  \"linkUrl\": \"/d/85a562078cdf77779eaa1add43ccec1e/k8s-resources-namespace?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$__cell\",\n                                  \"pattern\": \"namespace\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"pattern\": \"/.*/\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"string\",\n                                  \"unit\": \"short\"\n                              }\n                          ],\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(kube_pod_owner{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\"}) by (namespace)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"count(avg(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\"}) by (workload, namespace)) by (namespace)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"B\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\"}) by (namespace)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"C\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(namespace_cpu:kube_pod_container_resource_requests:sum{cluster=\\\"$cluster\\\"}) by (namespace)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"D\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\"}) by (namespace) / sum(namespace_cpu:kube_pod_container_resource_requests:sum{cluster=\\\"$cluster\\\"}) by (namespace)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"E\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(namespace_cpu:kube_pod_container_resource_limits:sum{cluster=\\\"$cluster\\\"}) by (namespace)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"F\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\"}) by (namespace) / sum(namespace_cpu:kube_pod_container_resource_limits:sum{cluster=\\\"$cluster\\\"}) by (namespace)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"G\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"CPU Quota\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"transform\": \"table\",\n                          \"type\": \"table\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"CPU Quota\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 9,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(container_memory_rss{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", container!=\\\"\\\"}) by (namespace)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{namespace}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Memory Usage (w/o cache)\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"bytes\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Memory\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"id\": 10,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"styles\": [\n                              {\n                                  \"alias\": \"Time\",\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"pattern\": \"Time\",\n                                  \"type\": \"hidden\"\n                              },\n                              {\n                                  \"alias\": \"Pods\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 0,\n                                  \"link\": true,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down to pods\",\n                                  \"linkUrl\": \"/d/85a562078cdf77779eaa1add43ccec1e/k8s-resources-namespace?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$__cell_1\",\n                                  \"pattern\": \"Value #A\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"Workloads\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 0,\n                                  \"link\": true,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down to workloads\",\n                                  \"linkUrl\": \"/d/a87fb0d919ec0ea5f6543124e16c42a5/k8s-resources-workloads-namespace?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$__cell_1\",\n                                  \"pattern\": \"Value #B\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"Memory Usage\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #C\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"bytes\"\n                              },\n                              {\n                                  \"alias\": \"Memory Requests\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #D\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"bytes\"\n                              },\n                              {\n                                  \"alias\": \"Memory Requests %\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #E\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"percentunit\"\n                              },\n                              {\n                                  \"alias\": \"Memory Limits\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #F\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"bytes\"\n                              },\n                              {\n                                  \"alias\": \"Memory Limits %\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #G\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"percentunit\"\n                              },\n                              {\n                                  \"alias\": \"Namespace\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": true,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down to pods\",\n                                  \"linkUrl\": \"/d/85a562078cdf77779eaa1add43ccec1e/k8s-resources-namespace?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$__cell\",\n                                  \"pattern\": \"namespace\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"pattern\": \"/.*/\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"string\",\n                                  \"unit\": \"short\"\n                              }\n                          ],\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(kube_pod_owner{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\"}) by (namespace)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"count(avg(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\"}) by (workload, namespace)) by (namespace)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"B\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(container_memory_rss{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", container!=\\\"\\\"}) by (namespace)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"C\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(namespace_memory:kube_pod_container_resource_requests:sum{cluster=\\\"$cluster\\\"}) by (namespace)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"D\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(container_memory_rss{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", container!=\\\"\\\"}) by (namespace) / sum(namespace_memory:kube_pod_container_resource_requests:sum{cluster=\\\"$cluster\\\"}) by (namespace)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"E\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(namespace_memory:kube_pod_container_resource_limits:sum{cluster=\\\"$cluster\\\"}) by (namespace)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"F\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(container_memory_rss{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", container!=\\\"\\\"}) by (namespace) / sum(namespace_memory:kube_pod_container_resource_limits:sum{cluster=\\\"$cluster\\\"}) by (namespace)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"G\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Requests by Namespace\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"transform\": \"table\",\n                          \"type\": \"table\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Memory Requests\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"id\": 11,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"styles\": [\n                              {\n                                  \"alias\": \"Time\",\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"pattern\": \"Time\",\n                                  \"type\": \"hidden\"\n                              },\n                              {\n                                  \"alias\": \"Current Receive Bandwidth\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #A\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"Bps\"\n                              },\n                              {\n                                  \"alias\": \"Current Transmit Bandwidth\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #B\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"Bps\"\n                              },\n                              {\n                                  \"alias\": \"Rate of Received Packets\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #C\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"pps\"\n                              },\n                              {\n                                  \"alias\": \"Rate of Transmitted Packets\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #D\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"pps\"\n                              },\n                              {\n                                  \"alias\": \"Rate of Received Packets Dropped\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #E\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"pps\"\n                              },\n                              {\n                                  \"alias\": \"Rate of Transmitted Packets Dropped\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #F\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"pps\"\n                              },\n                              {\n                                  \"alias\": \"Namespace\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": true,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down to pods\",\n                                  \"linkUrl\": \"/d/85a562078cdf77779eaa1add43ccec1e/k8s-resources-namespace?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$__cell\",\n                                  \"pattern\": \"namespace\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"pattern\": \"/.*/\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"string\",\n                                  \"unit\": \"short\"\n                              }\n                          ],\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(irate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(irate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"B\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(irate(container_network_receive_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"C\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(irate(container_network_transmit_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"D\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(irate(container_network_receive_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"E\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(irate(container_network_transmit_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"F\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Current Network Usage\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"transform\": \"table\",\n                          \"type\": \"table\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Current Network Usage\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 12,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(irate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{namespace}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Receive Bandwidth\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"Bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 13,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(irate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{namespace}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Transmit Bandwidth\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"Bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Bandwidth\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 14,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"avg(irate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{namespace}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Average Container Bandwidth by Namespace: Received\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"Bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 15,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"avg(irate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{namespace}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Average Container Bandwidth by Namespace: Transmitted\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"Bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Average Container Bandwidth by Namespace\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 16,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(irate(container_network_receive_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{namespace}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Rate of Received Packets\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 17,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(irate(container_network_transmit_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{namespace}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Rate of Transmitted Packets\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Rate of Packets\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 18,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(irate(container_network_receive_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{namespace}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Rate of Received Packets Dropped\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 19,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(irate(container_network_transmit_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=~\\\".+\\\"}[$__rate_interval])) by (namespace)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{namespace}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Rate of Transmitted Packets Dropped\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Rate of Packets Dropped\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"decimals\": -1,\n                          \"fill\": 10,\n                          \"id\": 20,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"ceil(sum by(namespace) (rate(container_fs_reads_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval]) + rate(container_fs_writes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval])))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{namespace}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"IOPS(Reads+Writes)\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 21,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum by(namespace) (rate(container_fs_reads_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval]) + rate(container_fs_writes_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval]))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{namespace}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"ThroughPut(Read+Write)\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"Bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Storage IO\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"id\": 22,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"sort\": {\n                              \"col\": 4,\n                              \"desc\": true\n                          },\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"styles\": [\n                              {\n                                  \"alias\": \"Time\",\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"pattern\": \"Time\",\n                                  \"type\": \"hidden\"\n                              },\n                              {\n                                  \"alias\": \"IOPS(Reads)\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": -1,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #A\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"IOPS(Writes)\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": -1,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #B\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"IOPS(Reads + Writes)\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": -1,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #C\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"Throughput(Read)\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #D\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"Bps\"\n                              },\n                              {\n                                  \"alias\": \"Throughput(Write)\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #E\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"Bps\"\n                              },\n                              {\n                                  \"alias\": \"Throughput(Read + Write)\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #F\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"Bps\"\n                              },\n                              {\n                                  \"alias\": \"Namespace\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": true,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down to pods\",\n                                  \"linkUrl\": \"/d/85a562078cdf77779eaa1add43ccec1e/k8s-resources-namespace?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$__cell\",\n                                  \"pattern\": \"namespace\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"pattern\": \"/.*/\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"string\",\n                                  \"unit\": \"short\"\n                              }\n                          ],\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum by(namespace) (rate(container_fs_reads_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval]))\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum by(namespace) (rate(container_fs_writes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval]))\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"B\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum by(namespace) (rate(container_fs_reads_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval]) + rate(container_fs_writes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval]))\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"C\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum by(namespace) (rate(container_fs_reads_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval]))\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"D\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum by(namespace) (rate(container_fs_writes_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval]))\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"E\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum by(namespace) (rate(container_fs_reads_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval]) + rate(container_fs_writes_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace!=\\\"\\\"}[$__rate_interval]))\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"F\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Current Storage IO\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"transform\": \"table\",\n                          \"type\": \"table\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Storage IO - Distribution\",\n                  \"titleSize\": \"h6\"\n              }\n          ],\n          \"schemaVersion\": 14,\n          \"style\": \"dark\",\n          \"tags\": [\n              \"kubernetes-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data Source\",\n                      \"name\": \"datasource\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"prometheus\",\n                      \"refresh\": 1,\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"allValue\": null,\n                      \"current\": {\n                          \"text\": \"\",\n                          \"value\": \"\"\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": false,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"cluster\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(up{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\"}, cluster)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timepicker\": {\n              \"refresh_intervals\": [\n                  \"5s\",\n                  \"10s\",\n                  \"30s\",\n                  \"1m\",\n                  \"5m\",\n                  \"15m\",\n                  \"30m\",\n                  \"1h\",\n                  \"2h\",\n                  \"1d\"\n              ],\n              \"time_options\": [\n                  \"5m\",\n                  \"15m\",\n                  \"1h\",\n                  \"6h\",\n                  \"12h\",\n                  \"24h\",\n                  \"2d\",\n                  \"7d\",\n                  \"30d\"\n              ]\n          },\n          \"timezone\": \"UTC\",\n          \"title\": \"Kubernetes / Compute Resources / Cluster\",\n          \"uid\": \"efa86fd1d0c121a26444b636a3f509a8\",\n          \"version\": 0\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 9.5.3\n    name: grafana-dashboard-k8s-resources-cluster\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    k8s-resources-multicluster.json: |-\n      {\n          \"annotations\": {\n              \"list\": [\n\n              ]\n          },\n          \"editable\": true,\n          \"gnetId\": null,\n          \"graphTooltip\": 0,\n          \"hideControls\": false,\n          \"links\": [\n\n          ],\n          \"refresh\": \"10s\",\n          \"rows\": [\n              {\n                  \"collapse\": false,\n                  \"height\": \"100px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"format\": \"percentunit\",\n                          \"id\": 1,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 2,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"cluster:node_cpu:ratio_rate5m\",\n                                  \"format\": \"time_series\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": \"70,80\",\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"CPU Utilisation\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"singlestat\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"format\": \"percentunit\",\n                          \"id\": 2,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 2,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", resource=\\\"cpu\\\"}) / sum(kube_node_status_allocatable{job=\\\"kube-state-metrics\\\", resource=\\\"cpu\\\"})\",\n                                  \"format\": \"time_series\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": \"70,80\",\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"CPU Requests Commitment\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"singlestat\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"format\": \"percentunit\",\n                          \"id\": 3,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 2,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", resource=\\\"cpu\\\"}) / sum(kube_node_status_allocatable{job=\\\"kube-state-metrics\\\", resource=\\\"cpu\\\"})\",\n                                  \"format\": \"time_series\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": \"70,80\",\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"CPU Limits Commitment\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"singlestat\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"format\": \"percentunit\",\n                          \"id\": 4,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 2,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"1 - sum(:node_memory_MemAvailable_bytes:sum) / sum(node_memory_MemTotal_bytes{job=\\\"node-exporter\\\"})\",\n                                  \"format\": \"time_series\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": \"70,80\",\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Memory Utilisation\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"singlestat\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"format\": \"percentunit\",\n                          \"id\": 5,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 2,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", resource=\\\"memory\\\"}) / sum(kube_node_status_allocatable{job=\\\"kube-state-metrics\\\", resource=\\\"memory\\\"})\",\n                                  \"format\": \"time_series\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": \"70,80\",\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Memory Requests Commitment\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"singlestat\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"format\": \"percentunit\",\n                          \"id\": 6,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 2,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", resource=\\\"memory\\\"}) / sum(kube_node_status_allocatable{job=\\\"kube-state-metrics\\\", resource=\\\"memory\\\"})\",\n                                  \"format\": \"time_series\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": \"70,80\",\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Memory Limits Commitment\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"singlestat\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": false,\n                  \"title\": \"Headlines\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 0,\n                          \"id\": 7,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 2,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate) by (cluster)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{cluster}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"CPU Usage\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"CPU\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"id\": 8,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"styles\": [\n                              {\n                                  \"alias\": \"Time\",\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"pattern\": \"Time\",\n                                  \"type\": \"hidden\"\n                              },\n                              {\n                                  \"alias\": \"CPU Usage\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #A\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"CPU Requests\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #B\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"CPU Requests %\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #C\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"percentunit\"\n                              },\n                              {\n                                  \"alias\": \"CPU Limits\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #D\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"CPU Limits %\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #E\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"percentunit\"\n                              },\n                              {\n                                  \"alias\": \"Cluster\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": true,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"/d/efa86fd1d0c121a26444b636a3f509a8/k8s-resources-cluster?var-datasource=$datasource&var-cluster=$__cell\",\n                                  \"pattern\": \"cluster\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"pattern\": \"/.*/\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"string\",\n                                  \"unit\": \"short\"\n                              }\n                          ],\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate) by (cluster)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", resource=\\\"cpu\\\"}) by (cluster)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"B\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate) by (cluster) / sum(kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", resource=\\\"cpu\\\"}) by (cluster)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"C\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", resource=\\\"cpu\\\"}) by (cluster)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"D\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate) by (cluster) / sum(kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", resource=\\\"cpu\\\"}) by (cluster)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"E\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"CPU Quota\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"transform\": \"table\",\n                          \"type\": \"table\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"CPU Quota\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 0,\n                          \"id\": 9,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 2,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(container_memory_rss{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\"}) by (cluster)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{cluster}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Memory Usage (w/o cache)\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"bytes\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Memory\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"id\": 10,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"styles\": [\n                              {\n                                  \"alias\": \"Time\",\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"pattern\": \"Time\",\n                                  \"type\": \"hidden\"\n                              },\n                              {\n                                  \"alias\": \"Memory Usage\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #A\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"bytes\"\n                              },\n                              {\n                                  \"alias\": \"Memory Requests\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #B\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"bytes\"\n                              },\n                              {\n                                  \"alias\": \"Memory Requests %\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #C\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"percentunit\"\n                              },\n                              {\n                                  \"alias\": \"Memory Limits\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #D\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"bytes\"\n                              },\n                              {\n                                  \"alias\": \"Memory Limits %\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #E\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"percentunit\"\n                              },\n                              {\n                                  \"alias\": \"Cluster\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": true,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"/d/efa86fd1d0c121a26444b636a3f509a8/k8s-resources-cluster?var-datasource=$datasource&var-cluster=$__cell\",\n                                  \"pattern\": \"cluster\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"pattern\": \"/.*/\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"string\",\n                                  \"unit\": \"short\"\n                              }\n                          ],\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(container_memory_rss{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\"}) by (cluster)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", resource=\\\"memory\\\"}) by (cluster)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"B\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(container_memory_rss{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\"}) by (cluster) / sum(kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", resource=\\\"memory\\\"}) by (cluster)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"C\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", resource=\\\"memory\\\"}) by (cluster)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"D\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(container_memory_rss{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\"}) by (cluster) / sum(kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", resource=\\\"memory\\\"}) by (cluster)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"E\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Requests by Cluster\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"transform\": \"table\",\n                          \"type\": \"table\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Memory Requests\",\n                  \"titleSize\": \"h6\"\n              }\n          ],\n          \"schemaVersion\": 14,\n          \"style\": \"dark\",\n          \"tags\": [\n              \"kubernetes-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data Source\",\n                      \"name\": \"datasource\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"prometheus\",\n                      \"refresh\": 1,\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timepicker\": {\n              \"refresh_intervals\": [\n                  \"5s\",\n                  \"10s\",\n                  \"30s\",\n                  \"1m\",\n                  \"5m\",\n                  \"15m\",\n                  \"30m\",\n                  \"1h\",\n                  \"2h\",\n                  \"1d\"\n              ],\n              \"time_options\": [\n                  \"5m\",\n                  \"15m\",\n                  \"1h\",\n                  \"6h\",\n                  \"12h\",\n                  \"24h\",\n                  \"2d\",\n                  \"7d\",\n                  \"30d\"\n              ]\n          },\n          \"timezone\": \"UTC\",\n          \"title\": \"Kubernetes / Compute Resources /  Multi-Cluster\",\n          \"uid\": \"b59e6c9f2fcbe2e16d77fc492374cc4f\",\n          \"version\": 0\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 9.5.3\n    name: grafana-dashboard-k8s-resources-multicluster\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    k8s-resources-namespace.json: |-\n      {\n          \"annotations\": {\n              \"list\": [\n\n              ]\n          },\n          \"editable\": true,\n          \"gnetId\": null,\n          \"graphTooltip\": 0,\n          \"hideControls\": false,\n          \"links\": [\n\n          ],\n          \"refresh\": \"10s\",\n          \"rows\": [\n              {\n                  \"collapse\": false,\n                  \"height\": \"100px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"format\": \"percentunit\",\n                          \"id\": 1,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 3,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) / sum(kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"cpu\\\"})\",\n                                  \"format\": \"time_series\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": \"70,80\",\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"CPU Utilisation (from requests)\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"singlestat\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"format\": \"percentunit\",\n                          \"id\": 2,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 3,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) / sum(kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"cpu\\\"})\",\n                                  \"format\": \"time_series\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": \"70,80\",\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"CPU Utilisation (from limits)\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"singlestat\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"format\": \"percentunit\",\n                          \"id\": 3,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 3,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\",container!=\\\"\\\", image!=\\\"\\\"}) / sum(kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"memory\\\"})\",\n                                  \"format\": \"time_series\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": \"70,80\",\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Memory Utilisation (from requests)\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"singlestat\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"format\": \"percentunit\",\n                          \"id\": 4,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 3,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\",container!=\\\"\\\", image!=\\\"\\\"}) / sum(kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"memory\\\"})\",\n                                  \"format\": \"time_series\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": \"70,80\",\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Memory Utilisation (from limits)\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"singlestat\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": false,\n                  \"title\": \"Headlines\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 5,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n                              {\n                                  \"alias\": \"quota - requests\",\n                                  \"color\": \"#F2495C\",\n                                  \"dashes\": true,\n                                  \"fill\": 0,\n                                  \"hiddenSeries\": true,\n                                  \"hideTooltip\": true,\n                                  \"legend\": true,\n                                  \"linewidth\": 2,\n                                  \"stack\": false\n                              },\n                              {\n                                  \"alias\": \"quota - limits\",\n                                  \"color\": \"#FF9830\",\n                                  \"dashes\": true,\n                                  \"fill\": 0,\n                                  \"hiddenSeries\": true,\n                                  \"hideTooltip\": true,\n                                  \"legend\": true,\n                                  \"linewidth\": 2,\n                                  \"stack\": false\n                              }\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{pod}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"scalar(kube_resourcequota{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", type=\\\"hard\\\",resource=\\\"requests.cpu\\\"})\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"quota - requests\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"scalar(kube_resourcequota{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", type=\\\"hard\\\",resource=\\\"limits.cpu\\\"})\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"quota - limits\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"CPU Usage\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"CPU Usage\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"id\": 6,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"styles\": [\n                              {\n                                  \"alias\": \"Time\",\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"pattern\": \"Time\",\n                                  \"type\": \"hidden\"\n                              },\n                              {\n                                  \"alias\": \"CPU Usage\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #A\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"CPU Requests\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #B\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"CPU Requests %\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #C\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"percentunit\"\n                              },\n                              {\n                                  \"alias\": \"CPU Limits\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #D\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"CPU Limits %\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #E\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"percentunit\"\n                              },\n                              {\n                                  \"alias\": \"Pod\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": true,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"/d/6581e46e4e5c7ba40a07646395ef7b23/k8s-resources-pod?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$namespace&var-pod=$__cell\",\n                                  \"pattern\": \"pod\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"pattern\": \"/.*/\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"string\",\n                                  \"unit\": \"short\"\n                              }\n                          ],\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"B\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod) / sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"C\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"D\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod) / sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"E\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"CPU Quota\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"transform\": \"table\",\n                          \"type\": \"table\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"CPU Quota\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 7,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n                              {\n                                  \"alias\": \"quota - requests\",\n                                  \"color\": \"#F2495C\",\n                                  \"dashes\": true,\n                                  \"fill\": 0,\n                                  \"hiddenSeries\": true,\n                                  \"hideTooltip\": true,\n                                  \"legend\": true,\n                                  \"linewidth\": 2,\n                                  \"stack\": false\n                              },\n                              {\n                                  \"alias\": \"quota - limits\",\n                                  \"color\": \"#FF9830\",\n                                  \"dashes\": true,\n                                  \"fill\": 0,\n                                  \"hiddenSeries\": true,\n                                  \"hideTooltip\": true,\n                                  \"legend\": true,\n                                  \"linewidth\": 2,\n                                  \"stack\": false\n                              }\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", container!=\\\"\\\", image!=\\\"\\\"}) by (pod)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{pod}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"scalar(kube_resourcequota{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", type=\\\"hard\\\",resource=\\\"requests.memory\\\"})\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"quota - requests\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"scalar(kube_resourcequota{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", type=\\\"hard\\\",resource=\\\"limits.memory\\\"})\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"quota - limits\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Memory Usage (w/o cache)\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"bytes\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Memory Usage\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"id\": 8,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"styles\": [\n                              {\n                                  \"alias\": \"Time\",\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"pattern\": \"Time\",\n                                  \"type\": \"hidden\"\n                              },\n                              {\n                                  \"alias\": \"Memory Usage\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #A\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"bytes\"\n                              },\n                              {\n                                  \"alias\": \"Memory Requests\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #B\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"bytes\"\n                              },\n                              {\n                                  \"alias\": \"Memory Requests %\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #C\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"percentunit\"\n                              },\n                              {\n                                  \"alias\": \"Memory Limits\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #D\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"bytes\"\n                              },\n                              {\n                                  \"alias\": \"Memory Limits %\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #E\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"percentunit\"\n                              },\n                              {\n                                  \"alias\": \"Memory Usage (RSS)\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #F\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"bytes\"\n                              },\n                              {\n                                  \"alias\": \"Memory Usage (Cache)\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #G\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"bytes\"\n                              },\n                              {\n                                  \"alias\": \"Memory Usage (Swap)\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #H\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"bytes\"\n                              },\n                              {\n                                  \"alias\": \"Pod\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": true,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"/d/6581e46e4e5c7ba40a07646395ef7b23/k8s-resources-pod?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$namespace&var-pod=$__cell\",\n                                  \"pattern\": \"pod\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"pattern\": \"/.*/\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"string\",\n                                  \"unit\": \"short\"\n                              }\n                          ],\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\",container!=\\\"\\\", image!=\\\"\\\"}) by (pod)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"B\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\",container!=\\\"\\\", image!=\\\"\\\"}) by (pod) / sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"C\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"D\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\",container!=\\\"\\\", image!=\\\"\\\"}) by (pod) / sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}) by (pod)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"E\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(container_memory_rss{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\",container!=\\\"\\\"}) by (pod)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"F\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(container_memory_cache{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\",container!=\\\"\\\"}) by (pod)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"G\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(container_memory_swap{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\",container!=\\\"\\\"}) by (pod)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"H\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Memory Quota\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"transform\": \"table\",\n                          \"type\": \"table\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Memory Quota\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"id\": 9,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"styles\": [\n                              {\n                                  \"alias\": \"Time\",\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"pattern\": \"Time\",\n                                  \"type\": \"hidden\"\n                              },\n                              {\n                                  \"alias\": \"Current Receive Bandwidth\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #A\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"Bps\"\n                              },\n                              {\n                                  \"alias\": \"Current Transmit Bandwidth\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #B\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"Bps\"\n                              },\n                              {\n                                  \"alias\": \"Rate of Received Packets\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #C\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"pps\"\n                              },\n                              {\n                                  \"alias\": \"Rate of Transmitted Packets\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #D\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"pps\"\n                              },\n                              {\n                                  \"alias\": \"Rate of Received Packets Dropped\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #E\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"pps\"\n                              },\n                              {\n                                  \"alias\": \"Rate of Transmitted Packets Dropped\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #F\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"pps\"\n                              },\n                              {\n                                  \"alias\": \"Pod\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": true,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down to pods\",\n                                  \"linkUrl\": \"/d/6581e46e4e5c7ba40a07646395ef7b23/k8s-resources-pod?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$namespace&var-pod=$__cell\",\n                                  \"pattern\": \"pod\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"pattern\": \"/.*/\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"string\",\n                                  \"unit\": \"short\"\n                              }\n                          ],\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(irate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])) by (pod)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(irate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])) by (pod)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"B\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(irate(container_network_receive_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])) by (pod)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"C\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(irate(container_network_transmit_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])) by (pod)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"D\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(irate(container_network_receive_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])) by (pod)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"E\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(irate(container_network_transmit_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])) by (pod)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"F\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Current Network Usage\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"transform\": \"table\",\n                          \"type\": \"table\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Current Network Usage\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 10,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])) by (pod)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{pod}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Receive Bandwidth\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"Bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 11,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])) by (pod)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{pod}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Transmit Bandwidth\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"Bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Bandwidth\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 12,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(irate(container_network_receive_packets_total{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])) by (pod)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{pod}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Rate of Received Packets\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 13,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(irate(container_network_transmit_packets_total{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])) by (pod)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{pod}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Rate of Transmitted Packets\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Rate of Packets\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 14,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(irate(container_network_receive_packets_dropped_total{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])) by (pod)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{pod}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Rate of Received Packets Dropped\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 15,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(irate(container_network_transmit_packets_dropped_total{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])) by (pod)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{pod}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Rate of Transmitted Packets Dropped\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Rate of Packets Dropped\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"decimals\": -1,\n                          \"fill\": 10,\n                          \"id\": 16,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"ceil(sum by(pod) (rate(container_fs_reads_total{container!=\\\"\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]) + rate(container_fs_writes_total{container!=\\\"\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{pod}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"IOPS(Reads+Writes)\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 17,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum by(pod) (rate(container_fs_reads_bytes_total{container!=\\\"\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]) + rate(container_fs_writes_bytes_total{container!=\\\"\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{pod}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"ThroughPut(Read+Write)\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"Bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Storage IO\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"id\": 18,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"sort\": {\n                              \"col\": 4,\n                              \"desc\": true\n                          },\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"styles\": [\n                              {\n                                  \"alias\": \"Time\",\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"pattern\": \"Time\",\n                                  \"type\": \"hidden\"\n                              },\n                              {\n                                  \"alias\": \"IOPS(Reads)\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": -1,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #A\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"IOPS(Writes)\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": -1,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #B\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"IOPS(Reads + Writes)\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": -1,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #C\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"Throughput(Read)\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #D\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"Bps\"\n                              },\n                              {\n                                  \"alias\": \"Throughput(Write)\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #E\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"Bps\"\n                              },\n                              {\n                                  \"alias\": \"Throughput(Read + Write)\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #F\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"Bps\"\n                              },\n                              {\n                                  \"alias\": \"Pod\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": true,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down to pods\",\n                                  \"linkUrl\": \"/d/6581e46e4e5c7ba40a07646395ef7b23/k8s-resources-pod?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$namespace&var-pod=$__cell\",\n                                  \"pattern\": \"pod\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"pattern\": \"/.*/\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"string\",\n                                  \"unit\": \"short\"\n                              }\n                          ],\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum by(pod) (rate(container_fs_reads_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]))\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum by(pod) (rate(container_fs_writes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]))\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"B\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum by(pod) (rate(container_fs_reads_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]) + rate(container_fs_writes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]))\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"C\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum by(pod) (rate(container_fs_reads_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]))\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"D\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum by(pod) (rate(container_fs_writes_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]))\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"E\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum by(pod) (rate(container_fs_reads_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]) + rate(container_fs_writes_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval]))\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"F\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Current Storage IO\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"transform\": \"table\",\n                          \"type\": \"table\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Storage IO - Distribution\",\n                  \"titleSize\": \"h6\"\n              }\n          ],\n          \"schemaVersion\": 14,\n          \"style\": \"dark\",\n          \"tags\": [\n              \"kubernetes-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data Source\",\n                      \"name\": \"datasource\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"prometheus\",\n                      \"refresh\": 1,\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"allValue\": null,\n                      \"current\": {\n                          \"text\": \"\",\n                          \"value\": \"\"\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": false,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"cluster\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(up{job=\\\"kube-state-metrics\\\"}, cluster)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  },\n                  {\n                      \"allValue\": null,\n                      \"current\": {\n                          \"text\": \"\",\n                          \"value\": \"\"\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": false,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"namespace\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(kube_namespace_status_phase{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\"}, namespace)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timepicker\": {\n              \"refresh_intervals\": [\n                  \"5s\",\n                  \"10s\",\n                  \"30s\",\n                  \"1m\",\n                  \"5m\",\n                  \"15m\",\n                  \"30m\",\n                  \"1h\",\n                  \"2h\",\n                  \"1d\"\n              ],\n              \"time_options\": [\n                  \"5m\",\n                  \"15m\",\n                  \"1h\",\n                  \"6h\",\n                  \"12h\",\n                  \"24h\",\n                  \"2d\",\n                  \"7d\",\n                  \"30d\"\n              ]\n          },\n          \"timezone\": \"UTC\",\n          \"title\": \"Kubernetes / Compute Resources / Namespace (Pods)\",\n          \"uid\": \"85a562078cdf77779eaa1add43ccec1e\",\n          \"version\": 0\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 9.5.3\n    name: grafana-dashboard-k8s-resources-namespace\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    k8s-resources-node.json: |-\n      {\n          \"annotations\": {\n              \"list\": [\n\n              ]\n          },\n          \"editable\": true,\n          \"gnetId\": null,\n          \"graphTooltip\": 0,\n          \"hideControls\": false,\n          \"links\": [\n\n          ],\n          \"refresh\": \"10s\",\n          \"rows\": [\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 1,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n                              {\n                                  \"alias\": \"max capacity\",\n                                  \"color\": \"#F2495C\",\n                                  \"dashes\": true,\n                                  \"fill\": 0,\n                                  \"hiddenSeries\": true,\n                                  \"hideTooltip\": true,\n                                  \"legend\": true,\n                                  \"linewidth\": 2,\n                                  \"stack\": false\n                              }\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(kube_node_status_capacity{cluster=\\\"$cluster\\\", node=~\\\"$node\\\", resource=\\\"cpu\\\"})\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"max capacity\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"}) by (pod)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{pod}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"CPU Usage\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"CPU Usage\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"id\": 2,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"styles\": [\n                              {\n                                  \"alias\": \"Time\",\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"pattern\": \"Time\",\n                                  \"type\": \"hidden\"\n                              },\n                              {\n                                  \"alias\": \"CPU Usage\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #A\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"CPU Requests\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #B\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"CPU Requests %\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #C\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"percentunit\"\n                              },\n                              {\n                                  \"alias\": \"CPU Limits\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #D\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"CPU Limits %\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #E\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"percentunit\"\n                              },\n                              {\n                                  \"alias\": \"Pod\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"pod\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"pattern\": \"/.*/\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"string\",\n                                  \"unit\": \"short\"\n                              }\n                          ],\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"}) by (pod)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"}) by (pod)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"B\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"}) by (pod) / sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"}) by (pod)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"C\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"}) by (pod)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"D\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"}) by (pod) / sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"}) by (pod)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"E\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"CPU Quota\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"transform\": \"table\",\n                          \"type\": \"table\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"CPU Quota\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 3,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n                              {\n                                  \"alias\": \"max capacity\",\n                                  \"color\": \"#F2495C\",\n                                  \"dashes\": true,\n                                  \"fill\": 0,\n                                  \"hiddenSeries\": true,\n                                  \"hideTooltip\": true,\n                                  \"legend\": true,\n                                  \"linewidth\": 2,\n                                  \"stack\": false\n                              }\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(kube_node_status_capacity{cluster=\\\"$cluster\\\", node=~\\\"$node\\\", resource=\\\"memory\\\"})\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"max capacity\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(node_namespace_pod_container:container_memory_working_set_bytes{cluster=\\\"$cluster\\\", node=~\\\"$node\\\", container!=\\\"\\\"}) by (pod)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{pod}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Memory Usage (w/o cache)\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"bytes\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Memory Usage\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"id\": 4,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"styles\": [\n                              {\n                                  \"alias\": \"Time\",\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"pattern\": \"Time\",\n                                  \"type\": \"hidden\"\n                              },\n                              {\n                                  \"alias\": \"Memory Usage\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #A\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"bytes\"\n                              },\n                              {\n                                  \"alias\": \"Memory Requests\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #B\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"bytes\"\n                              },\n                              {\n                                  \"alias\": \"Memory Requests %\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #C\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"percentunit\"\n                              },\n                              {\n                                  \"alias\": \"Memory Limits\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #D\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"bytes\"\n                              },\n                              {\n                                  \"alias\": \"Memory Limits %\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #E\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"percentunit\"\n                              },\n                              {\n                                  \"alias\": \"Memory Usage (RSS)\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #F\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"bytes\"\n                              },\n                              {\n                                  \"alias\": \"Memory Usage (Cache)\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #G\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"bytes\"\n                              },\n                              {\n                                  \"alias\": \"Memory Usage (Swap)\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #H\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"bytes\"\n                              },\n                              {\n                                  \"alias\": \"Pod\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"pod\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"pattern\": \"/.*/\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"string\",\n                                  \"unit\": \"short\"\n                              }\n                          ],\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(node_namespace_pod_container:container_memory_working_set_bytes{cluster=\\\"$cluster\\\", node=~\\\"$node\\\",container!=\\\"\\\"}) by (pod)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"}) by (pod)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"B\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(node_namespace_pod_container:container_memory_working_set_bytes{cluster=\\\"$cluster\\\", node=~\\\"$node\\\",container!=\\\"\\\"}) by (pod) / sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"}) by (pod)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"C\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"}) by (pod)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"D\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(node_namespace_pod_container:container_memory_working_set_bytes{cluster=\\\"$cluster\\\", node=~\\\"$node\\\",container!=\\\"\\\"}) by (pod) / sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", node=~\\\"$node\\\"}) by (pod)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"E\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(node_namespace_pod_container:container_memory_rss{cluster=\\\"$cluster\\\", node=~\\\"$node\\\",container!=\\\"\\\"}) by (pod)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"F\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(node_namespace_pod_container:container_memory_cache{cluster=\\\"$cluster\\\", node=~\\\"$node\\\",container!=\\\"\\\"}) by (pod)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"G\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(node_namespace_pod_container:container_memory_swap{cluster=\\\"$cluster\\\", node=~\\\"$node\\\",container!=\\\"\\\"}) by (pod)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"H\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Memory Quota\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"transform\": \"table\",\n                          \"type\": \"table\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Memory Quota\",\n                  \"titleSize\": \"h6\"\n              }\n          ],\n          \"schemaVersion\": 14,\n          \"style\": \"dark\",\n          \"tags\": [\n              \"kubernetes-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data Source\",\n                      \"name\": \"datasource\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"prometheus\",\n                      \"refresh\": 1,\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"allValue\": null,\n                      \"current\": {\n                          \"text\": \"\",\n                          \"value\": \"\"\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": false,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"cluster\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(up{job=\\\"kube-state-metrics\\\"}, cluster)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  },\n                  {\n                      \"allValue\": null,\n                      \"current\": {\n                          \"text\": \"\",\n                          \"value\": \"\"\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": false,\n                      \"label\": null,\n                      \"multi\": true,\n                      \"name\": \"node\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(kube_node_info{cluster=\\\"$cluster\\\"}, node)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timepicker\": {\n              \"refresh_intervals\": [\n                  \"5s\",\n                  \"10s\",\n                  \"30s\",\n                  \"1m\",\n                  \"5m\",\n                  \"15m\",\n                  \"30m\",\n                  \"1h\",\n                  \"2h\",\n                  \"1d\"\n              ],\n              \"time_options\": [\n                  \"5m\",\n                  \"15m\",\n                  \"1h\",\n                  \"6h\",\n                  \"12h\",\n                  \"24h\",\n                  \"2d\",\n                  \"7d\",\n                  \"30d\"\n              ]\n          },\n          \"timezone\": \"UTC\",\n          \"title\": \"Kubernetes / Compute Resources / Node (Pods)\",\n          \"uid\": \"200ac8fdbfbb74b39aff88118e4d1c2c\",\n          \"version\": 0\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 9.5.3\n    name: grafana-dashboard-k8s-resources-node\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    k8s-resources-pod.json: |-\n      {\n          \"annotations\": {\n              \"list\": [\n\n              ]\n          },\n          \"editable\": true,\n          \"gnetId\": null,\n          \"graphTooltip\": 0,\n          \"hideControls\": false,\n          \"links\": [\n\n          ],\n          \"refresh\": \"10s\",\n          \"rows\": [\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 1,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n                              {\n                                  \"alias\": \"requests\",\n                                  \"color\": \"#F2495C\",\n                                  \"fill\": 0,\n                                  \"hideTooltip\": true,\n                                  \"legend\": true,\n                                  \"linewidth\": 2,\n                                  \"stack\": false\n                              },\n                              {\n                                  \"alias\": \"limits\",\n                                  \"color\": \"#FF9830\",\n                                  \"fill\": 0,\n                                  \"hideTooltip\": true,\n                                  \"legend\": true,\n                                  \"linewidth\": 2,\n                                  \"stack\": false\n                              }\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", cluster=\\\"$cluster\\\"}) by (container)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{container}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(\\n    kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", resource=\\\"cpu\\\"}\\n)\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"requests\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(\\n    kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", resource=\\\"cpu\\\"}\\n)\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"limits\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"CPU Usage\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"CPU Usage\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 2,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": true,\n                              \"max\": true,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(increase(container_cpu_cfs_throttled_periods_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\"}[$__rate_interval])) by (container) /sum(increase(container_cpu_cfs_periods_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\"}[$__rate_interval])) by (container)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{container}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n                              {\n                                  \"colorMode\": \"critical\",\n                                  \"fill\": true,\n                                  \"line\": true,\n                                  \"op\": \"gt\",\n                                  \"value\": 0.25,\n                                  \"yaxis\": \"left\"\n                              }\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"CPU Throttling\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"percentunit\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": 1,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"CPU Throttling\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"id\": 3,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"styles\": [\n                              {\n                                  \"alias\": \"Time\",\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"pattern\": \"Time\",\n                                  \"type\": \"hidden\"\n                              },\n                              {\n                                  \"alias\": \"CPU Usage\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #A\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"CPU Requests\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #B\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"CPU Requests %\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #C\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"percentunit\"\n                              },\n                              {\n                                  \"alias\": \"CPU Limits\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #D\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"CPU Limits %\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #E\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"percentunit\"\n                              },\n                              {\n                                  \"alias\": \"Container\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"container\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"pattern\": \"/.*/\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"string\",\n                                  \"unit\": \"short\"\n                              }\n                          ],\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"B\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container) / sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"C\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"D\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container) / sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"E\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"CPU Quota\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"transform\": \"table\",\n                          \"type\": \"table\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"CPU Quota\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 4,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n                              {\n                                  \"alias\": \"requests\",\n                                  \"color\": \"#F2495C\",\n                                  \"dashes\": true,\n                                  \"fill\": 0,\n                                  \"hideTooltip\": true,\n                                  \"legend\": true,\n                                  \"linewidth\": 2,\n                                  \"stack\": false\n                              },\n                              {\n                                  \"alias\": \"limits\",\n                                  \"color\": \"#FF9830\",\n                                  \"dashes\": true,\n                                  \"fill\": 0,\n                                  \"hideTooltip\": true,\n                                  \"legend\": true,\n                                  \"linewidth\": 2,\n                                  \"stack\": false\n                              }\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", container!=\\\"\\\", image!=\\\"\\\"}) by (container)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{container}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(\\n    kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", resource=\\\"memory\\\"}\\n)\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"requests\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(\\n    kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", resource=\\\"memory\\\"}\\n)\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"limits\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Memory Usage (WSS)\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"bytes\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Memory Usage\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"id\": 5,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"styles\": [\n                              {\n                                  \"alias\": \"Time\",\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"pattern\": \"Time\",\n                                  \"type\": \"hidden\"\n                              },\n                              {\n                                  \"alias\": \"Memory Usage (WSS)\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #A\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"bytes\"\n                              },\n                              {\n                                  \"alias\": \"Memory Requests\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #B\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"bytes\"\n                              },\n                              {\n                                  \"alias\": \"Memory Requests %\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #C\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"percentunit\"\n                              },\n                              {\n                                  \"alias\": \"Memory Limits\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #D\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"bytes\"\n                              },\n                              {\n                                  \"alias\": \"Memory Limits %\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #E\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"percentunit\"\n                              },\n                              {\n                                  \"alias\": \"Memory Usage (RSS)\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #F\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"bytes\"\n                              },\n                              {\n                                  \"alias\": \"Memory Usage (Cache)\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #G\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"bytes\"\n                              },\n                              {\n                                  \"alias\": \"Memory Usage (Swap)\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #H\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"bytes\"\n                              },\n                              {\n                                  \"alias\": \"Container\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"container\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"pattern\": \"/.*/\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"string\",\n                                  \"unit\": \"short\"\n                              }\n                          ],\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", container!=\\\"\\\", image!=\\\"\\\"}) by (container)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"B\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", image!=\\\"\\\"}) by (container) / sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_requests{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"C\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"D\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", container!=\\\"\\\", image!=\\\"\\\"}) by (container) / sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_limits{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}) by (container)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"E\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(container_memory_rss{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", container != \\\"\\\", container != \\\"POD\\\"}) by (container)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"F\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(container_memory_cache{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", container != \\\"\\\", container != \\\"POD\\\"}) by (container)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"G\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(container_memory_swap{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\", container != \\\"\\\", container != \\\"POD\\\"}) by (container)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"H\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Memory Quota\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"transform\": \"table\",\n                          \"type\": \"table\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Memory Quota\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 6,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(irate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval])) by (pod)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{pod}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Receive Bandwidth\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"Bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 7,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(irate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval])) by (pod)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{pod}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Transmit Bandwidth\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"Bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Bandwidth\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 8,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(irate(container_network_receive_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval])) by (pod)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{pod}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Rate of Received Packets\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 9,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(irate(container_network_transmit_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval])) by (pod)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{pod}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Rate of Transmitted Packets\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Rate of Packets\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 10,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(irate(container_network_receive_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval])) by (pod)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{pod}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Rate of Received Packets Dropped\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 11,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(irate(container_network_transmit_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval])) by (pod)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{pod}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Rate of Transmitted Packets Dropped\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Rate of Packets Dropped\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"decimals\": -1,\n                          \"fill\": 10,\n                          \"id\": 12,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"ceil(sum by(pod) (rate(container_fs_reads_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval])))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"Reads\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"ceil(sum by(pod) (rate(container_fs_writes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval])))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"Writes\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"IOPS\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 13,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum by(pod) (rate(container_fs_reads_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval]))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"Reads\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum by(pod) (rate(container_fs_writes_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$__rate_interval]))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"Writes\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"ThroughPut\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"Bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Storage IO - Distribution(Pod - Read & Writes)\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"decimals\": -1,\n                          \"fill\": 10,\n                          \"id\": 14,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"ceil(sum by(container) (rate(container_fs_reads_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval]) + rate(container_fs_writes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval])))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{container}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"IOPS(Reads+Writes)\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 15,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum by(container) (rate(container_fs_reads_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval]) + rate(container_fs_writes_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval]))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{container}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"ThroughPut(Read+Write)\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"Bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Storage IO - Distribution(Containers)\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"id\": 16,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"sort\": {\n                              \"col\": 4,\n                              \"desc\": true\n                          },\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"styles\": [\n                              {\n                                  \"alias\": \"Time\",\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"pattern\": \"Time\",\n                                  \"type\": \"hidden\"\n                              },\n                              {\n                                  \"alias\": \"IOPS(Reads)\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": -1,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #A\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"IOPS(Writes)\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": -1,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #B\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"IOPS(Reads + Writes)\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": -1,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #C\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"Throughput(Read)\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #D\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"Bps\"\n                              },\n                              {\n                                  \"alias\": \"Throughput(Write)\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #E\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"Bps\"\n                              },\n                              {\n                                  \"alias\": \"Throughput(Read + Write)\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #F\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"Bps\"\n                              },\n                              {\n                                  \"alias\": \"Container\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"container\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"pattern\": \"/.*/\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"string\",\n                                  \"unit\": \"short\"\n                              }\n                          ],\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum by(container) (rate(container_fs_reads_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval]))\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum by(container) (rate(container_fs_writes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\",device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval]))\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"B\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum by(container) (rate(container_fs_reads_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval]) + rate(container_fs_writes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval]))\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"C\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum by(container) (rate(container_fs_reads_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval]))\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"D\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum by(container) (rate(container_fs_writes_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval]))\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"E\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum by(container) (rate(container_fs_reads_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval]) + rate(container_fs_writes_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\", container!=\\\"\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", pod=\\\"$pod\\\"}[$__rate_interval]))\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"F\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Current Storage IO\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"transform\": \"table\",\n                          \"type\": \"table\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Storage IO - Distribution\",\n                  \"titleSize\": \"h6\"\n              }\n          ],\n          \"schemaVersion\": 14,\n          \"style\": \"dark\",\n          \"tags\": [\n              \"kubernetes-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data Source\",\n                      \"name\": \"datasource\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"prometheus\",\n                      \"refresh\": 1,\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"allValue\": null,\n                      \"current\": {\n                          \"text\": \"\",\n                          \"value\": \"\"\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": false,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"cluster\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(up{job=\\\"kube-state-metrics\\\"}, cluster)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  },\n                  {\n                      \"allValue\": null,\n                      \"current\": {\n                          \"text\": \"\",\n                          \"value\": \"\"\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": false,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"namespace\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(kube_namespace_status_phase{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\"}, namespace)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  },\n                  {\n                      \"allValue\": null,\n                      \"current\": {\n                          \"text\": \"\",\n                          \"value\": \"\"\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": false,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"pod\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(kube_pod_info{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}, pod)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timepicker\": {\n              \"refresh_intervals\": [\n                  \"5s\",\n                  \"10s\",\n                  \"30s\",\n                  \"1m\",\n                  \"5m\",\n                  \"15m\",\n                  \"30m\",\n                  \"1h\",\n                  \"2h\",\n                  \"1d\"\n              ],\n              \"time_options\": [\n                  \"5m\",\n                  \"15m\",\n                  \"1h\",\n                  \"6h\",\n                  \"12h\",\n                  \"24h\",\n                  \"2d\",\n                  \"7d\",\n                  \"30d\"\n              ]\n          },\n          \"timezone\": \"UTC\",\n          \"title\": \"Kubernetes / Compute Resources / Pod\",\n          \"uid\": \"6581e46e4e5c7ba40a07646395ef7b23\",\n          \"version\": 0\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 9.5.3\n    name: grafana-dashboard-k8s-resources-pod\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    k8s-resources-workload.json: |-\n      {\n          \"annotations\": {\n              \"list\": [\n\n              ]\n          },\n          \"editable\": true,\n          \"gnetId\": null,\n          \"graphTooltip\": 0,\n          \"hideControls\": false,\n          \"links\": [\n\n          ],\n          \"refresh\": \"10s\",\n          \"rows\": [\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 1,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(\\n    node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{pod}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"CPU Usage\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"CPU Usage\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"id\": 2,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"styles\": [\n                              {\n                                  \"alias\": \"Time\",\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"pattern\": \"Time\",\n                                  \"type\": \"hidden\"\n                              },\n                              {\n                                  \"alias\": \"CPU Usage\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #A\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"CPU Requests\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #B\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"CPU Requests %\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #C\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"percentunit\"\n                              },\n                              {\n                                  \"alias\": \"CPU Limits\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #D\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"CPU Limits %\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #E\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"percentunit\"\n                              },\n                              {\n                                  \"alias\": \"Pod\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": true,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"/d/6581e46e4e5c7ba40a07646395ef7b23/k8s-resources-pod?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$namespace&var-pod=$__cell\",\n                                  \"pattern\": \"pod\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"pattern\": \"/.*/\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"string\",\n                                  \"unit\": \"short\"\n                              }\n                          ],\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(\\n    node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(\\n    kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"cpu\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"B\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(\\n    node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n/sum(\\n    kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"cpu\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"C\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(\\n    kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"cpu\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"D\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(\\n    node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n/sum(\\n    kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"cpu\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"E\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"CPU Quota\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"transform\": \"table\",\n                          \"type\": \"table\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"CPU Quota\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 3,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(\\n    container_memory_working_set_bytes{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", container!=\\\"\\\", image!=\\\"\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{pod}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Memory Usage\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"bytes\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Memory Usage\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"id\": 4,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"styles\": [\n                              {\n                                  \"alias\": \"Time\",\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"pattern\": \"Time\",\n                                  \"type\": \"hidden\"\n                              },\n                              {\n                                  \"alias\": \"Memory Usage\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #A\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"bytes\"\n                              },\n                              {\n                                  \"alias\": \"Memory Requests\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #B\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"bytes\"\n                              },\n                              {\n                                  \"alias\": \"Memory Requests %\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #C\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"percentunit\"\n                              },\n                              {\n                                  \"alias\": \"Memory Limits\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #D\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"bytes\"\n                              },\n                              {\n                                  \"alias\": \"Memory Limits %\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #E\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"percentunit\"\n                              },\n                              {\n                                  \"alias\": \"Pod\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": true,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"/d/6581e46e4e5c7ba40a07646395ef7b23/k8s-resources-pod?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$namespace&var-pod=$__cell\",\n                                  \"pattern\": \"pod\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"pattern\": \"/.*/\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"string\",\n                                  \"unit\": \"short\"\n                              }\n                          ],\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(\\n    container_memory_working_set_bytes{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", container!=\\\"\\\", image!=\\\"\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(\\n    kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"memory\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"B\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(\\n    container_memory_working_set_bytes{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", container!=\\\"\\\", image!=\\\"\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n/sum(\\n    kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"memory\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"C\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(\\n    kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"memory\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"D\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(\\n    container_memory_working_set_bytes{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", container!=\\\"\\\", image!=\\\"\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n/sum(\\n    kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"memory\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=\\\"$workload\\\", workload_type=\\\"$type\\\"}\\n) by (pod)\\n\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"E\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Memory Quota\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"transform\": \"table\",\n                          \"type\": \"table\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Memory Quota\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"id\": 5,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"styles\": [\n                              {\n                                  \"alias\": \"Time\",\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"pattern\": \"Time\",\n                                  \"type\": \"hidden\"\n                              },\n                              {\n                                  \"alias\": \"Current Receive Bandwidth\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #A\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"Bps\"\n                              },\n                              {\n                                  \"alias\": \"Current Transmit Bandwidth\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #B\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"Bps\"\n                              },\n                              {\n                                  \"alias\": \"Rate of Received Packets\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #C\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"pps\"\n                              },\n                              {\n                                  \"alias\": \"Rate of Transmitted Packets\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #D\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"pps\"\n                              },\n                              {\n                                  \"alias\": \"Rate of Received Packets Dropped\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #E\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"pps\"\n                              },\n                              {\n                                  \"alias\": \"Rate of Transmitted Packets Dropped\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #F\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"pps\"\n                              },\n                              {\n                                  \"alias\": \"Pod\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": true,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"/d/6581e46e4e5c7ba40a07646395ef7b23/k8s-resources-pod?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$namespace&var-pod=$__cell\",\n                                  \"pattern\": \"pod\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"pattern\": \"/.*/\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"string\",\n                                  \"unit\": \"short\"\n                              }\n                          ],\n                          \"targets\": [\n                              {\n                                  \"expr\": \"(sum(irate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"(sum(irate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"B\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"(sum(irate(container_network_receive_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"C\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"(sum(irate(container_network_transmit_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"D\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"(sum(irate(container_network_receive_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"E\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"(sum(irate(container_network_transmit_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"F\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Current Network Usage\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"transform\": \"table\",\n                          \"type\": \"table\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Current Network Usage\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 6,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"(sum(irate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{pod}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Receive Bandwidth\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"Bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 7,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"(sum(irate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{pod}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Transmit Bandwidth\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"Bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Bandwidth\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 8,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"(avg(irate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{pod}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Average Container Bandwidth by Pod: Received\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"Bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 9,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"(avg(irate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{pod}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Average Container Bandwidth by Pod: Transmitted\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"Bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Average Container Bandwidth by Pod\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 10,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"(sum(irate(container_network_receive_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{pod}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Rate of Received Packets\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 11,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"(sum(irate(container_network_transmit_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{pod}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Rate of Transmitted Packets\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Rate of Packets\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 12,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"(sum(irate(container_network_receive_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{pod}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Rate of Received Packets Dropped\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 13,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"(sum(irate(container_network_transmit_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{pod}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Rate of Transmitted Packets Dropped\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Rate of Packets Dropped\",\n                  \"titleSize\": \"h6\"\n              }\n          ],\n          \"schemaVersion\": 14,\n          \"style\": \"dark\",\n          \"tags\": [\n              \"kubernetes-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data Source\",\n                      \"name\": \"datasource\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"prometheus\",\n                      \"refresh\": 1,\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"allValue\": null,\n                      \"current\": {\n                          \"text\": \"\",\n                          \"value\": \"\"\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": false,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"cluster\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(up{job=\\\"kube-state-metrics\\\"}, cluster)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  },\n                  {\n                      \"allValue\": null,\n                      \"current\": {\n                          \"text\": \"\",\n                          \"value\": \"\"\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": false,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"namespace\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(kube_namespace_status_phase{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\"}, namespace)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  },\n                  {\n                      \"allValue\": null,\n                      \"current\": {\n                          \"text\": \"\",\n                          \"value\": \"\"\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": false,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"type\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}, workload_type)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  },\n                  {\n                      \"allValue\": null,\n                      \"current\": {\n                          \"text\": \"\",\n                          \"value\": \"\"\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": false,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"workload\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}, workload)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timepicker\": {\n              \"refresh_intervals\": [\n                  \"5s\",\n                  \"10s\",\n                  \"30s\",\n                  \"1m\",\n                  \"5m\",\n                  \"15m\",\n                  \"30m\",\n                  \"1h\",\n                  \"2h\",\n                  \"1d\"\n              ],\n              \"time_options\": [\n                  \"5m\",\n                  \"15m\",\n                  \"1h\",\n                  \"6h\",\n                  \"12h\",\n                  \"24h\",\n                  \"2d\",\n                  \"7d\",\n                  \"30d\"\n              ]\n          },\n          \"timezone\": \"UTC\",\n          \"title\": \"Kubernetes / Compute Resources / Workload\",\n          \"uid\": \"a164a7f0339f99e89cea5cb47e9be617\",\n          \"version\": 0\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 9.5.3\n    name: grafana-dashboard-k8s-resources-workload\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    k8s-resources-workloads-namespace.json: |-\n      {\n          \"annotations\": {\n              \"list\": [\n\n              ]\n          },\n          \"editable\": true,\n          \"gnetId\": null,\n          \"graphTooltip\": 0,\n          \"hideControls\": false,\n          \"links\": [\n\n          ],\n          \"refresh\": \"10s\",\n          \"rows\": [\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 1,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n                              {\n                                  \"alias\": \"quota - requests\",\n                                  \"color\": \"#F2495C\",\n                                  \"dashes\": true,\n                                  \"fill\": 0,\n                                  \"hiddenSeries\": true,\n                                  \"hideTooltip\": true,\n                                  \"legend\": true,\n                                  \"linewidth\": 2,\n                                  \"stack\": false\n                              },\n                              {\n                                  \"alias\": \"quota - limits\",\n                                  \"color\": \"#FF9830\",\n                                  \"dashes\": true,\n                                  \"fill\": 0,\n                                  \"hiddenSeries\": true,\n                                  \"hideTooltip\": true,\n                                  \"legend\": true,\n                                  \"linewidth\": 2,\n                                  \"stack\": false\n                              }\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(\\n  node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}\\n* on(namespace,pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{workload}} - {{workload_type}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"scalar(kube_resourcequota{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", type=\\\"hard\\\",resource=\\\"requests.cpu\\\"})\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"quota - requests\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"scalar(kube_resourcequota{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", type=\\\"hard\\\",resource=\\\"limits.cpu\\\"})\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"quota - limits\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"CPU Usage\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"CPU Usage\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"id\": 2,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"styles\": [\n                              {\n                                  \"alias\": \"Time\",\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"pattern\": \"Time\",\n                                  \"type\": \"hidden\"\n                              },\n                              {\n                                  \"alias\": \"Running Pods\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 0,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #A\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"CPU Usage\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #B\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"CPU Requests\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #C\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"CPU Requests %\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #D\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"percentunit\"\n                              },\n                              {\n                                  \"alias\": \"CPU Limits\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #E\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"CPU Limits %\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #F\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"percentunit\"\n                              },\n                              {\n                                  \"alias\": \"Workload\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": true,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"/d/a164a7f0339f99e89cea5cb47e9be617/k8s-resources-workload?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$namespace&var-workload=$__cell&var-type=$__cell_2\",\n                                  \"pattern\": \"workload\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"Workload Type\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"workload_type\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"pattern\": \"/.*/\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"string\",\n                                  \"unit\": \"short\"\n                              }\n                          ],\n                          \"targets\": [\n                              {\n                                  \"expr\": \"count(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}) by (workload, workload_type)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(\\n  node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}\\n* on(namespace,pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"B\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(\\n  kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"cpu\\\"}\\n* on(namespace,pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"C\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(\\n  node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}\\n* on(namespace,pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n/sum(\\n  kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"cpu\\\"}\\n* on(namespace,pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"D\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(\\n  kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"cpu\\\"}\\n* on(namespace,pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"E\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(\\n  node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}\\n* on(namespace,pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n/sum(\\n  kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"cpu\\\"}\\n* on(namespace,pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"F\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"CPU Quota\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"transform\": \"table\",\n                          \"type\": \"table\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"CPU Quota\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 3,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n                              {\n                                  \"alias\": \"quota - requests\",\n                                  \"color\": \"#F2495C\",\n                                  \"dashes\": true,\n                                  \"fill\": 0,\n                                  \"hiddenSeries\": true,\n                                  \"hideTooltip\": true,\n                                  \"legend\": true,\n                                  \"linewidth\": 2,\n                                  \"stack\": false\n                              },\n                              {\n                                  \"alias\": \"quota - limits\",\n                                  \"color\": \"#FF9830\",\n                                  \"dashes\": true,\n                                  \"fill\": 0,\n                                  \"hiddenSeries\": true,\n                                  \"hideTooltip\": true,\n                                  \"legend\": true,\n                                  \"linewidth\": 2,\n                                  \"stack\": false\n                              }\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(\\n    container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", container!=\\\"\\\", image!=\\\"\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{workload}} - {{workload_type}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"scalar(kube_resourcequota{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", type=\\\"hard\\\",resource=\\\"requests.memory\\\"})\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"quota - requests\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"scalar(kube_resourcequota{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", type=\\\"hard\\\",resource=\\\"limits.memory\\\"})\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"quota - limits\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Memory Usage\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"bytes\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Memory Usage\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"id\": 4,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"styles\": [\n                              {\n                                  \"alias\": \"Time\",\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"pattern\": \"Time\",\n                                  \"type\": \"hidden\"\n                              },\n                              {\n                                  \"alias\": \"Running Pods\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 0,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #A\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"Memory Usage\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #B\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"bytes\"\n                              },\n                              {\n                                  \"alias\": \"Memory Requests\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #C\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"bytes\"\n                              },\n                              {\n                                  \"alias\": \"Memory Requests %\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #D\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"percentunit\"\n                              },\n                              {\n                                  \"alias\": \"Memory Limits\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #E\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"bytes\"\n                              },\n                              {\n                                  \"alias\": \"Memory Limits %\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #F\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"percentunit\"\n                              },\n                              {\n                                  \"alias\": \"Workload\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": true,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"/d/a164a7f0339f99e89cea5cb47e9be617/k8s-resources-workload?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$namespace&var-workload=$__cell&var-type=$__cell_2\",\n                                  \"pattern\": \"workload\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"Workload Type\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"workload_type\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"pattern\": \"/.*/\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"string\",\n                                  \"unit\": \"short\"\n                              }\n                          ],\n                          \"targets\": [\n                              {\n                                  \"expr\": \"count(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}) by (workload, workload_type)\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(\\n    container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", container!=\\\"\\\", image!=\\\"\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"B\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(\\n  kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"memory\\\"}\\n* on(namespace,pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"C\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(\\n    container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", container!=\\\"\\\", image!=\\\"\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n/sum(\\n  kube_pod_container_resource_requests{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"memory\\\"}\\n* on(namespace,pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"D\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(\\n  kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"memory\\\"}\\n* on(namespace,pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"E\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum(\\n    container_memory_working_set_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", container!=\\\"\\\", image!=\\\"\\\"}\\n  * on(namespace,pod)\\n    group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n/sum(\\n  kube_pod_container_resource_limits{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", resource=\\\"memory\\\"}\\n* on(namespace,pod)\\n  group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}\\n) by (workload, workload_type)\\n\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"F\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Memory Quota\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"transform\": \"table\",\n                          \"type\": \"table\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Memory Quota\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"id\": 5,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"styles\": [\n                              {\n                                  \"alias\": \"Time\",\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"pattern\": \"Time\",\n                                  \"type\": \"hidden\"\n                              },\n                              {\n                                  \"alias\": \"Current Receive Bandwidth\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #A\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"Bps\"\n                              },\n                              {\n                                  \"alias\": \"Current Transmit Bandwidth\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #B\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"Bps\"\n                              },\n                              {\n                                  \"alias\": \"Rate of Received Packets\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #C\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"pps\"\n                              },\n                              {\n                                  \"alias\": \"Rate of Transmitted Packets\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #D\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"pps\"\n                              },\n                              {\n                                  \"alias\": \"Rate of Received Packets Dropped\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #E\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"pps\"\n                              },\n                              {\n                                  \"alias\": \"Rate of Transmitted Packets Dropped\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #F\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"pps\"\n                              },\n                              {\n                                  \"alias\": \"Workload\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": true,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down to pods\",\n                                  \"linkUrl\": \"/d/a164a7f0339f99e89cea5cb47e9be617/k8s-resources-workload?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$namespace&var-workload=$__cell&var-type=$type\",\n                                  \"pattern\": \"workload\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"Workload Type\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"workload_type\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"pattern\": \"/.*/\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"string\",\n                                  \"unit\": \"short\"\n                              }\n                          ],\n                          \"targets\": [\n                              {\n                                  \"expr\": \"(sum(irate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"(sum(irate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"B\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"(sum(irate(container_network_receive_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"C\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"(sum(irate(container_network_transmit_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"D\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"(sum(irate(container_network_receive_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"E\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"(sum(irate(container_network_transmit_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"F\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Current Network Usage\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"transform\": \"table\",\n                          \"type\": \"table\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Current Network Usage\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 6,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"(sum(irate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{workload}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Receive Bandwidth\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"Bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 7,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"(sum(irate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{workload}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Transmit Bandwidth\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"Bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Bandwidth\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 8,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"(avg(irate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{workload}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Average Container Bandwidth by Workload: Received\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"Bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 9,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"(avg(irate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{workload}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Average Container Bandwidth by Workload: Transmitted\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"Bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Average Container Bandwidth by Workload\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 10,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"(sum(irate(container_network_receive_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{workload}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Rate of Received Packets\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 11,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"(sum(irate(container_network_transmit_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{workload}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Rate of Transmitted Packets\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Rate of Packets\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 12,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"(sum(irate(container_network_receive_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{workload}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Rate of Received Packets Dropped\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 13,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"(sum(irate(container_network_transmit_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\"}[$__rate_interval])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{workload}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Rate of Transmitted Packets Dropped\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Rate of Packets Dropped\",\n                  \"titleSize\": \"h6\"\n              }\n          ],\n          \"schemaVersion\": 14,\n          \"style\": \"dark\",\n          \"tags\": [\n              \"kubernetes-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data Source\",\n                      \"name\": \"datasource\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"prometheus\",\n                      \"refresh\": 1,\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"allValue\": null,\n                      \"current\": {\n                          \"text\": \"\",\n                          \"value\": \"\"\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": false,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"cluster\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(up{job=\\\"kube-state-metrics\\\"}, cluster)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  },\n                  {\n                      \"allValue\": null,\n                      \"current\": {\n                          \"text\": \"\",\n                          \"value\": \"\"\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": false,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"namespace\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(kube_pod_info{job=\\\"kube-state-metrics\\\", cluster=\\\"$cluster\\\"}, namespace)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  },\n                  {\n                      \"allValue\": null,\n                      \"auto\": false,\n                      \"auto_count\": 30,\n                      \"auto_min\": \"10s\",\n                      \"current\": {\n                          \"text\": \"deployment\",\n                          \"value\": \"deployment\"\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"definition\": \"label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\".+\\\"}, workload_type)\",\n                      \"hide\": 0,\n                      \"includeAll\": false,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"type\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\", namespace=\\\"$namespace\\\", workload=~\\\".+\\\"}, workload_type)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"skipUrlSync\": false,\n                      \"sort\": 0,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timepicker\": {\n              \"refresh_intervals\": [\n                  \"5s\",\n                  \"10s\",\n                  \"30s\",\n                  \"1m\",\n                  \"5m\",\n                  \"15m\",\n                  \"30m\",\n                  \"1h\",\n                  \"2h\",\n                  \"1d\"\n              ],\n              \"time_options\": [\n                  \"5m\",\n                  \"15m\",\n                  \"1h\",\n                  \"6h\",\n                  \"12h\",\n                  \"24h\",\n                  \"2d\",\n                  \"7d\",\n                  \"30d\"\n              ]\n          },\n          \"timezone\": \"UTC\",\n          \"title\": \"Kubernetes / Compute Resources / Namespace (Workloads)\",\n          \"uid\": \"a87fb0d919ec0ea5f6543124e16c42a5\",\n          \"version\": 0\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 9.5.3\n    name: grafana-dashboard-k8s-resources-workloads-namespace\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    kubelet.json: |-\n      {\n          \"__inputs\": [\n\n          ],\n          \"__requires\": [\n\n          ],\n          \"annotations\": {\n              \"list\": [\n\n              ]\n          },\n          \"editable\": false,\n          \"gnetId\": null,\n          \"graphTooltip\": 0,\n          \"hideControls\": false,\n          \"id\": null,\n          \"links\": [\n\n          ],\n          \"panels\": [\n              {\n                  \"datasource\": \"$datasource\",\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"links\": [\n\n                          ],\n                          \"mappings\": [\n\n                          ],\n                          \"thresholds\": {\n                              \"mode\": \"absolute\",\n                              \"steps\": [\n\n                              ]\n                          },\n                          \"unit\": \"none\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 4,\n                      \"x\": 0,\n                      \"y\": 0\n                  },\n                  \"id\": 2,\n                  \"links\": [\n\n                  ],\n                  \"options\": {\n                      \"colorMode\": \"value\",\n                      \"graphMode\": \"area\",\n                      \"justifyMode\": \"auto\",\n                      \"orientation\": \"auto\",\n                      \"reduceOptions\": {\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"fields\": \"\",\n                          \"values\": false\n                      },\n                      \"textMode\": \"auto\"\n                  },\n                  \"pluginVersion\": \"7\",\n                  \"targets\": [\n                      {\n                          \"expr\": \"sum(kubelet_node_name{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\"})\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"\",\n                          \"refId\": \"A\"\n                      }\n                  ],\n                  \"title\": \"Running Kubelets\",\n                  \"transparent\": false,\n                  \"type\": \"stat\"\n              },\n              {\n                  \"datasource\": \"$datasource\",\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"links\": [\n\n                          ],\n                          \"mappings\": [\n\n                          ],\n                          \"thresholds\": {\n                              \"mode\": \"absolute\",\n                              \"steps\": [\n\n                              ]\n                          },\n                          \"unit\": \"none\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 4,\n                      \"x\": 4,\n                      \"y\": 0\n                  },\n                  \"id\": 3,\n                  \"links\": [\n\n                  ],\n                  \"options\": {\n                      \"colorMode\": \"value\",\n                      \"graphMode\": \"area\",\n                      \"justifyMode\": \"auto\",\n                      \"orientation\": \"auto\",\n                      \"reduceOptions\": {\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"fields\": \"\",\n                          \"values\": false\n                      },\n                      \"textMode\": \"auto\"\n                  },\n                  \"pluginVersion\": \"7\",\n                  \"targets\": [\n                      {\n                          \"expr\": \"sum(kubelet_running_pods{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\"}) OR sum(kubelet_running_pod_count{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\"})\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{instance}}\",\n                          \"refId\": \"A\"\n                      }\n                  ],\n                  \"title\": \"Running Pods\",\n                  \"transparent\": false,\n                  \"type\": \"stat\"\n              },\n              {\n                  \"datasource\": \"$datasource\",\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"links\": [\n\n                          ],\n                          \"mappings\": [\n\n                          ],\n                          \"thresholds\": {\n                              \"mode\": \"absolute\",\n                              \"steps\": [\n\n                              ]\n                          },\n                          \"unit\": \"none\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 4,\n                      \"x\": 8,\n                      \"y\": 0\n                  },\n                  \"id\": 4,\n                  \"links\": [\n\n                  ],\n                  \"options\": {\n                      \"colorMode\": \"value\",\n                      \"graphMode\": \"area\",\n                      \"justifyMode\": \"auto\",\n                      \"orientation\": \"auto\",\n                      \"reduceOptions\": {\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"fields\": \"\",\n                          \"values\": false\n                      },\n                      \"textMode\": \"auto\"\n                  },\n                  \"pluginVersion\": \"7\",\n                  \"targets\": [\n                      {\n                          \"expr\": \"sum(kubelet_running_containers{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\"}) OR sum(kubelet_running_container_count{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\"})\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{instance}}\",\n                          \"refId\": \"A\"\n                      }\n                  ],\n                  \"title\": \"Running Containers\",\n                  \"transparent\": false,\n                  \"type\": \"stat\"\n              },\n              {\n                  \"datasource\": \"$datasource\",\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"links\": [\n\n                          ],\n                          \"mappings\": [\n\n                          ],\n                          \"thresholds\": {\n                              \"mode\": \"absolute\",\n                              \"steps\": [\n\n                              ]\n                          },\n                          \"unit\": \"none\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 4,\n                      \"x\": 12,\n                      \"y\": 0\n                  },\n                  \"id\": 5,\n                  \"links\": [\n\n                  ],\n                  \"options\": {\n                      \"colorMode\": \"value\",\n                      \"graphMode\": \"area\",\n                      \"justifyMode\": \"auto\",\n                      \"orientation\": \"auto\",\n                      \"reduceOptions\": {\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"fields\": \"\",\n                          \"values\": false\n                      },\n                      \"textMode\": \"auto\"\n                  },\n                  \"pluginVersion\": \"7\",\n                  \"targets\": [\n                      {\n                          \"expr\": \"sum(volume_manager_total_volumes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\", state=\\\"actual_state_of_world\\\"})\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{instance}}\",\n                          \"refId\": \"A\"\n                      }\n                  ],\n                  \"title\": \"Actual Volume Count\",\n                  \"transparent\": false,\n                  \"type\": \"stat\"\n              },\n              {\n                  \"datasource\": \"$datasource\",\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"links\": [\n\n                          ],\n                          \"mappings\": [\n\n                          ],\n                          \"thresholds\": {\n                              \"mode\": \"absolute\",\n                              \"steps\": [\n\n                              ]\n                          },\n                          \"unit\": \"none\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 4,\n                      \"x\": 16,\n                      \"y\": 0\n                  },\n                  \"id\": 6,\n                  \"links\": [\n\n                  ],\n                  \"options\": {\n                      \"colorMode\": \"value\",\n                      \"graphMode\": \"area\",\n                      \"justifyMode\": \"auto\",\n                      \"orientation\": \"auto\",\n                      \"reduceOptions\": {\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"fields\": \"\",\n                          \"values\": false\n                      },\n                      \"textMode\": \"auto\"\n                  },\n                  \"pluginVersion\": \"7\",\n                  \"targets\": [\n                      {\n                          \"expr\": \"sum(volume_manager_total_volumes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\",state=\\\"desired_state_of_world\\\"})\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{instance}}\",\n                          \"refId\": \"A\"\n                      }\n                  ],\n                  \"title\": \"Desired Volume Count\",\n                  \"transparent\": false,\n                  \"type\": \"stat\"\n              },\n              {\n                  \"datasource\": \"$datasource\",\n                  \"fieldConfig\": {\n                      \"defaults\": {\n                          \"links\": [\n\n                          ],\n                          \"mappings\": [\n\n                          ],\n                          \"thresholds\": {\n                              \"mode\": \"absolute\",\n                              \"steps\": [\n\n                              ]\n                          },\n                          \"unit\": \"none\"\n                      }\n                  },\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 4,\n                      \"x\": 20,\n                      \"y\": 0\n                  },\n                  \"id\": 7,\n                  \"links\": [\n\n                  ],\n                  \"options\": {\n                      \"colorMode\": \"value\",\n                      \"graphMode\": \"area\",\n                      \"justifyMode\": \"auto\",\n                      \"orientation\": \"auto\",\n                      \"reduceOptions\": {\n                          \"calcs\": [\n                              \"lastNotNull\"\n                          ],\n                          \"fields\": \"\",\n                          \"values\": false\n                      },\n                      \"textMode\": \"auto\"\n                  },\n                  \"pluginVersion\": \"7\",\n                  \"targets\": [\n                      {\n                          \"expr\": \"sum(rate(kubelet_node_config_error{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\"}[$__rate_interval]))\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{instance}}\",\n                          \"refId\": \"A\"\n                      }\n                  ],\n                  \"title\": \"Config Error Count\",\n                  \"transparent\": false,\n                  \"type\": \"stat\"\n              },\n              {\n                  \"aliasColors\": {\n\n                  },\n                  \"bars\": false,\n                  \"dashLength\": 10,\n                  \"dashes\": false,\n                  \"datasource\": \"$datasource\",\n                  \"fill\": 1,\n                  \"fillGradient\": 0,\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 7\n                  },\n                  \"id\": 8,\n                  \"legend\": {\n                      \"alignAsTable\": true,\n                      \"avg\": false,\n                      \"current\": true,\n                      \"max\": false,\n                      \"min\": false,\n                      \"rightSide\": true,\n                      \"show\": true,\n                      \"sideWidth\": null,\n                      \"total\": false,\n                      \"values\": true\n                  },\n                  \"lines\": true,\n                  \"linewidth\": 1,\n                  \"links\": [\n\n                  ],\n                  \"nullPointMode\": \"null\",\n                  \"percentage\": false,\n                  \"pointradius\": 5,\n                  \"points\": false,\n                  \"renderer\": \"flot\",\n                  \"repeat\": null,\n                  \"seriesOverrides\": [\n\n                  ],\n                  \"spaceLength\": 10,\n                  \"stack\": false,\n                  \"steppedLine\": false,\n                  \"targets\": [\n                      {\n                          \"expr\": \"sum(rate(kubelet_runtime_operations_total{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (operation_type, instance)\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{instance}} {{operation_type}}\",\n                          \"refId\": \"A\"\n                      }\n                  ],\n                  \"thresholds\": [\n\n                  ],\n                  \"timeFrom\": null,\n                  \"timeShift\": null,\n                  \"title\": \"Operation Rate\",\n                  \"tooltip\": {\n                      \"shared\": true,\n                      \"sort\": 0,\n                      \"value_type\": \"individual\"\n                  },\n                  \"type\": \"graph\",\n                  \"xaxis\": {\n                      \"buckets\": null,\n                      \"mode\": \"time\",\n                      \"name\": null,\n                      \"show\": true,\n                      \"values\": [\n\n                      ]\n                  },\n                  \"yaxes\": [\n                      {\n                          \"format\": \"ops\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": null,\n                          \"show\": true\n                      },\n                      {\n                          \"format\": \"ops\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": null,\n                          \"show\": true\n                      }\n                  ]\n              },\n              {\n                  \"aliasColors\": {\n\n                  },\n                  \"bars\": false,\n                  \"dashLength\": 10,\n                  \"dashes\": false,\n                  \"datasource\": \"$datasource\",\n                  \"fill\": 1,\n                  \"fillGradient\": 0,\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 7\n                  },\n                  \"id\": 9,\n                  \"legend\": {\n                      \"alignAsTable\": true,\n                      \"avg\": false,\n                      \"current\": true,\n                      \"max\": false,\n                      \"min\": false,\n                      \"rightSide\": true,\n                      \"show\": true,\n                      \"sideWidth\": null,\n                      \"total\": false,\n                      \"values\": true\n                  },\n                  \"lines\": true,\n                  \"linewidth\": 1,\n                  \"links\": [\n\n                  ],\n                  \"nullPointMode\": \"null\",\n                  \"percentage\": false,\n                  \"pointradius\": 5,\n                  \"points\": false,\n                  \"renderer\": \"flot\",\n                  \"repeat\": null,\n                  \"seriesOverrides\": [\n\n                  ],\n                  \"spaceLength\": 10,\n                  \"stack\": false,\n                  \"steppedLine\": false,\n                  \"targets\": [\n                      {\n                          \"expr\": \"sum(rate(kubelet_runtime_operations_errors_total{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, operation_type)\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{instance}} {{operation_type}}\",\n                          \"refId\": \"A\"\n                      }\n                  ],\n                  \"thresholds\": [\n\n                  ],\n                  \"timeFrom\": null,\n                  \"timeShift\": null,\n                  \"title\": \"Operation Error Rate\",\n                  \"tooltip\": {\n                      \"shared\": true,\n                      \"sort\": 0,\n                      \"value_type\": \"individual\"\n                  },\n                  \"type\": \"graph\",\n                  \"xaxis\": {\n                      \"buckets\": null,\n                      \"mode\": \"time\",\n                      \"name\": null,\n                      \"show\": true,\n                      \"values\": [\n\n                      ]\n                  },\n                  \"yaxes\": [\n                      {\n                          \"format\": \"ops\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": null,\n                          \"show\": true\n                      },\n                      {\n                          \"format\": \"ops\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": null,\n                          \"show\": true\n                      }\n                  ]\n              },\n              {\n                  \"aliasColors\": {\n\n                  },\n                  \"bars\": false,\n                  \"dashLength\": 10,\n                  \"dashes\": false,\n                  \"datasource\": \"$datasource\",\n                  \"fill\": 1,\n                  \"fillGradient\": 0,\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 14\n                  },\n                  \"id\": 10,\n                  \"legend\": {\n                      \"alignAsTable\": true,\n                      \"avg\": false,\n                      \"current\": true,\n                      \"max\": false,\n                      \"min\": false,\n                      \"rightSide\": true,\n                      \"show\": true,\n                      \"sideWidth\": null,\n                      \"total\": false,\n                      \"values\": true\n                  },\n                  \"lines\": true,\n                  \"linewidth\": 1,\n                  \"links\": [\n\n                  ],\n                  \"nullPointMode\": \"null\",\n                  \"percentage\": false,\n                  \"pointradius\": 5,\n                  \"points\": false,\n                  \"renderer\": \"flot\",\n                  \"repeat\": null,\n                  \"seriesOverrides\": [\n\n                  ],\n                  \"spaceLength\": 10,\n                  \"stack\": false,\n                  \"steppedLine\": false,\n                  \"targets\": [\n                      {\n                          \"expr\": \"histogram_quantile(0.99, sum(rate(kubelet_runtime_operations_duration_seconds_bucket{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, operation_type, le))\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{instance}} {{operation_type}}\",\n                          \"refId\": \"A\"\n                      }\n                  ],\n                  \"thresholds\": [\n\n                  ],\n                  \"timeFrom\": null,\n                  \"timeShift\": null,\n                  \"title\": \"Operation duration 99th quantile\",\n                  \"tooltip\": {\n                      \"shared\": true,\n                      \"sort\": 0,\n                      \"value_type\": \"individual\"\n                  },\n                  \"type\": \"graph\",\n                  \"xaxis\": {\n                      \"buckets\": null,\n                      \"mode\": \"time\",\n                      \"name\": null,\n                      \"show\": true,\n                      \"values\": [\n\n                      ]\n                  },\n                  \"yaxes\": [\n                      {\n                          \"format\": \"s\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": null,\n                          \"show\": true\n                      },\n                      {\n                          \"format\": \"s\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": null,\n                          \"show\": true\n                      }\n                  ]\n              },\n              {\n                  \"aliasColors\": {\n\n                  },\n                  \"bars\": false,\n                  \"dashLength\": 10,\n                  \"dashes\": false,\n                  \"datasource\": \"$datasource\",\n                  \"fill\": 1,\n                  \"fillGradient\": 0,\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 21\n                  },\n                  \"id\": 11,\n                  \"legend\": {\n                      \"alignAsTable\": true,\n                      \"avg\": false,\n                      \"current\": true,\n                      \"max\": false,\n                      \"min\": false,\n                      \"rightSide\": true,\n                      \"show\": true,\n                      \"sideWidth\": null,\n                      \"total\": false,\n                      \"values\": true\n                  },\n                  \"lines\": true,\n                  \"linewidth\": 1,\n                  \"links\": [\n\n                  ],\n                  \"nullPointMode\": \"null\",\n                  \"percentage\": false,\n                  \"pointradius\": 5,\n                  \"points\": false,\n                  \"renderer\": \"flot\",\n                  \"repeat\": null,\n                  \"seriesOverrides\": [\n\n                  ],\n                  \"spaceLength\": 10,\n                  \"stack\": false,\n                  \"steppedLine\": false,\n                  \"targets\": [\n                      {\n                          \"expr\": \"sum(rate(kubelet_pod_start_duration_seconds_count{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance)\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{instance}} pod\",\n                          \"refId\": \"A\"\n                      },\n                      {\n                          \"expr\": \"sum(rate(kubelet_pod_worker_duration_seconds_count{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance)\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{instance}} worker\",\n                          \"refId\": \"B\"\n                      }\n                  ],\n                  \"thresholds\": [\n\n                  ],\n                  \"timeFrom\": null,\n                  \"timeShift\": null,\n                  \"title\": \"Pod Start Rate\",\n                  \"tooltip\": {\n                      \"shared\": true,\n                      \"sort\": 0,\n                      \"value_type\": \"individual\"\n                  },\n                  \"type\": \"graph\",\n                  \"xaxis\": {\n                      \"buckets\": null,\n                      \"mode\": \"time\",\n                      \"name\": null,\n                      \"show\": true,\n                      \"values\": [\n\n                      ]\n                  },\n                  \"yaxes\": [\n                      {\n                          \"format\": \"ops\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": null,\n                          \"show\": true\n                      },\n                      {\n                          \"format\": \"ops\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": null,\n                          \"show\": true\n                      }\n                  ]\n              },\n              {\n                  \"aliasColors\": {\n\n                  },\n                  \"bars\": false,\n                  \"dashLength\": 10,\n                  \"dashes\": false,\n                  \"datasource\": \"$datasource\",\n                  \"fill\": 1,\n                  \"fillGradient\": 0,\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 21\n                  },\n                  \"id\": 12,\n                  \"legend\": {\n                      \"alignAsTable\": true,\n                      \"avg\": false,\n                      \"current\": true,\n                      \"max\": false,\n                      \"min\": false,\n                      \"rightSide\": true,\n                      \"show\": true,\n                      \"sideWidth\": null,\n                      \"total\": false,\n                      \"values\": true\n                  },\n                  \"lines\": true,\n                  \"linewidth\": 1,\n                  \"links\": [\n\n                  ],\n                  \"nullPointMode\": \"null\",\n                  \"percentage\": false,\n                  \"pointradius\": 5,\n                  \"points\": false,\n                  \"renderer\": \"flot\",\n                  \"repeat\": null,\n                  \"seriesOverrides\": [\n\n                  ],\n                  \"spaceLength\": 10,\n                  \"stack\": false,\n                  \"steppedLine\": false,\n                  \"targets\": [\n                      {\n                          \"expr\": \"histogram_quantile(0.99, sum(rate(kubelet_pod_start_duration_seconds_bucket{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, le))\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{instance}} pod\",\n                          \"refId\": \"A\"\n                      },\n                      {\n                          \"expr\": \"histogram_quantile(0.99, sum(rate(kubelet_pod_worker_duration_seconds_bucket{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, le))\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{instance}} worker\",\n                          \"refId\": \"B\"\n                      }\n                  ],\n                  \"thresholds\": [\n\n                  ],\n                  \"timeFrom\": null,\n                  \"timeShift\": null,\n                  \"title\": \"Pod Start Duration\",\n                  \"tooltip\": {\n                      \"shared\": true,\n                      \"sort\": 0,\n                      \"value_type\": \"individual\"\n                  },\n                  \"type\": \"graph\",\n                  \"xaxis\": {\n                      \"buckets\": null,\n                      \"mode\": \"time\",\n                      \"name\": null,\n                      \"show\": true,\n                      \"values\": [\n\n                      ]\n                  },\n                  \"yaxes\": [\n                      {\n                          \"format\": \"s\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": null,\n                          \"show\": true\n                      },\n                      {\n                          \"format\": \"s\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": null,\n                          \"show\": true\n                      }\n                  ]\n              },\n              {\n                  \"aliasColors\": {\n\n                  },\n                  \"bars\": false,\n                  \"dashLength\": 10,\n                  \"dashes\": false,\n                  \"datasource\": \"$datasource\",\n                  \"fill\": 1,\n                  \"fillGradient\": 0,\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 28\n                  },\n                  \"id\": 13,\n                  \"legend\": {\n                      \"alignAsTable\": true,\n                      \"avg\": false,\n                      \"current\": true,\n                      \"hideEmpty\": true,\n                      \"hideZero\": true,\n                      \"max\": false,\n                      \"min\": false,\n                      \"rightSide\": true,\n                      \"show\": true,\n                      \"sideWidth\": null,\n                      \"total\": false,\n                      \"values\": true\n                  },\n                  \"lines\": true,\n                  \"linewidth\": 1,\n                  \"links\": [\n\n                  ],\n                  \"nullPointMode\": \"null\",\n                  \"percentage\": false,\n                  \"pointradius\": 5,\n                  \"points\": false,\n                  \"renderer\": \"flot\",\n                  \"repeat\": null,\n                  \"seriesOverrides\": [\n\n                  ],\n                  \"spaceLength\": 10,\n                  \"stack\": false,\n                  \"steppedLine\": false,\n                  \"targets\": [\n                      {\n                          \"expr\": \"sum(rate(storage_operation_duration_seconds_count{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, operation_name, volume_plugin)\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{instance}} {{operation_name}} {{volume_plugin}}\",\n                          \"refId\": \"A\"\n                      }\n                  ],\n                  \"thresholds\": [\n\n                  ],\n                  \"timeFrom\": null,\n                  \"timeShift\": null,\n                  \"title\": \"Storage Operation Rate\",\n                  \"tooltip\": {\n                      \"shared\": true,\n                      \"sort\": 0,\n                      \"value_type\": \"individual\"\n                  },\n                  \"type\": \"graph\",\n                  \"xaxis\": {\n                      \"buckets\": null,\n                      \"mode\": \"time\",\n                      \"name\": null,\n                      \"show\": true,\n                      \"values\": [\n\n                      ]\n                  },\n                  \"yaxes\": [\n                      {\n                          \"format\": \"ops\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": null,\n                          \"show\": true\n                      },\n                      {\n                          \"format\": \"ops\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": null,\n                          \"show\": true\n                      }\n                  ]\n              },\n              {\n                  \"aliasColors\": {\n\n                  },\n                  \"bars\": false,\n                  \"dashLength\": 10,\n                  \"dashes\": false,\n                  \"datasource\": \"$datasource\",\n                  \"fill\": 1,\n                  \"fillGradient\": 0,\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 28\n                  },\n                  \"id\": 14,\n                  \"legend\": {\n                      \"alignAsTable\": true,\n                      \"avg\": false,\n                      \"current\": true,\n                      \"hideEmpty\": true,\n                      \"hideZero\": true,\n                      \"max\": false,\n                      \"min\": false,\n                      \"rightSide\": true,\n                      \"show\": true,\n                      \"sideWidth\": null,\n                      \"total\": false,\n                      \"values\": true\n                  },\n                  \"lines\": true,\n                  \"linewidth\": 1,\n                  \"links\": [\n\n                  ],\n                  \"nullPointMode\": \"null\",\n                  \"percentage\": false,\n                  \"pointradius\": 5,\n                  \"points\": false,\n                  \"renderer\": \"flot\",\n                  \"repeat\": null,\n                  \"seriesOverrides\": [\n\n                  ],\n                  \"spaceLength\": 10,\n                  \"stack\": false,\n                  \"steppedLine\": false,\n                  \"targets\": [\n                      {\n                          \"expr\": \"sum(rate(storage_operation_errors_total{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, operation_name, volume_plugin)\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{instance}} {{operation_name}} {{volume_plugin}}\",\n                          \"refId\": \"A\"\n                      }\n                  ],\n                  \"thresholds\": [\n\n                  ],\n                  \"timeFrom\": null,\n                  \"timeShift\": null,\n                  \"title\": \"Storage Operation Error Rate\",\n                  \"tooltip\": {\n                      \"shared\": true,\n                      \"sort\": 0,\n                      \"value_type\": \"individual\"\n                  },\n                  \"type\": \"graph\",\n                  \"xaxis\": {\n                      \"buckets\": null,\n                      \"mode\": \"time\",\n                      \"name\": null,\n                      \"show\": true,\n                      \"values\": [\n\n                      ]\n                  },\n                  \"yaxes\": [\n                      {\n                          \"format\": \"ops\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": null,\n                          \"show\": true\n                      },\n                      {\n                          \"format\": \"ops\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": null,\n                          \"show\": true\n                      }\n                  ]\n              },\n              {\n                  \"aliasColors\": {\n\n                  },\n                  \"bars\": false,\n                  \"dashLength\": 10,\n                  \"dashes\": false,\n                  \"datasource\": \"$datasource\",\n                  \"fill\": 1,\n                  \"fillGradient\": 0,\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 35\n                  },\n                  \"id\": 15,\n                  \"legend\": {\n                      \"alignAsTable\": true,\n                      \"avg\": false,\n                      \"current\": true,\n                      \"hideEmpty\": true,\n                      \"hideZero\": true,\n                      \"max\": false,\n                      \"min\": false,\n                      \"rightSide\": true,\n                      \"show\": true,\n                      \"sideWidth\": null,\n                      \"total\": false,\n                      \"values\": true\n                  },\n                  \"lines\": true,\n                  \"linewidth\": 1,\n                  \"links\": [\n\n                  ],\n                  \"nullPointMode\": \"null\",\n                  \"percentage\": false,\n                  \"pointradius\": 5,\n                  \"points\": false,\n                  \"renderer\": \"flot\",\n                  \"repeat\": null,\n                  \"seriesOverrides\": [\n\n                  ],\n                  \"spaceLength\": 10,\n                  \"stack\": false,\n                  \"steppedLine\": false,\n                  \"targets\": [\n                      {\n                          \"expr\": \"histogram_quantile(0.99, sum(rate(storage_operation_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, operation_name, volume_plugin, le))\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{instance}} {{operation_name}} {{volume_plugin}}\",\n                          \"refId\": \"A\"\n                      }\n                  ],\n                  \"thresholds\": [\n\n                  ],\n                  \"timeFrom\": null,\n                  \"timeShift\": null,\n                  \"title\": \"Storage Operation Duration 99th quantile\",\n                  \"tooltip\": {\n                      \"shared\": true,\n                      \"sort\": 0,\n                      \"value_type\": \"individual\"\n                  },\n                  \"type\": \"graph\",\n                  \"xaxis\": {\n                      \"buckets\": null,\n                      \"mode\": \"time\",\n                      \"name\": null,\n                      \"show\": true,\n                      \"values\": [\n\n                      ]\n                  },\n                  \"yaxes\": [\n                      {\n                          \"format\": \"s\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": null,\n                          \"show\": true\n                      },\n                      {\n                          \"format\": \"s\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": null,\n                          \"show\": true\n                      }\n                  ]\n              },\n              {\n                  \"aliasColors\": {\n\n                  },\n                  \"bars\": false,\n                  \"dashLength\": 10,\n                  \"dashes\": false,\n                  \"datasource\": \"$datasource\",\n                  \"fill\": 1,\n                  \"fillGradient\": 0,\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 42\n                  },\n                  \"id\": 16,\n                  \"legend\": {\n                      \"alignAsTable\": true,\n                      \"avg\": false,\n                      \"current\": true,\n                      \"max\": false,\n                      \"min\": false,\n                      \"rightSide\": true,\n                      \"show\": true,\n                      \"sideWidth\": null,\n                      \"total\": false,\n                      \"values\": true\n                  },\n                  \"lines\": true,\n                  \"linewidth\": 1,\n                  \"links\": [\n\n                  ],\n                  \"nullPointMode\": \"null\",\n                  \"percentage\": false,\n                  \"pointradius\": 5,\n                  \"points\": false,\n                  \"renderer\": \"flot\",\n                  \"repeat\": null,\n                  \"seriesOverrides\": [\n\n                  ],\n                  \"spaceLength\": 10,\n                  \"stack\": false,\n                  \"steppedLine\": false,\n                  \"targets\": [\n                      {\n                          \"expr\": \"sum(rate(kubelet_cgroup_manager_duration_seconds_count{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, operation_type)\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{operation_type}}\",\n                          \"refId\": \"A\"\n                      }\n                  ],\n                  \"thresholds\": [\n\n                  ],\n                  \"timeFrom\": null,\n                  \"timeShift\": null,\n                  \"title\": \"Cgroup manager operation rate\",\n                  \"tooltip\": {\n                      \"shared\": true,\n                      \"sort\": 0,\n                      \"value_type\": \"individual\"\n                  },\n                  \"type\": \"graph\",\n                  \"xaxis\": {\n                      \"buckets\": null,\n                      \"mode\": \"time\",\n                      \"name\": null,\n                      \"show\": true,\n                      \"values\": [\n\n                      ]\n                  },\n                  \"yaxes\": [\n                      {\n                          \"format\": \"ops\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": null,\n                          \"show\": true\n                      },\n                      {\n                          \"format\": \"ops\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": null,\n                          \"show\": true\n                      }\n                  ]\n              },\n              {\n                  \"aliasColors\": {\n\n                  },\n                  \"bars\": false,\n                  \"dashLength\": 10,\n                  \"dashes\": false,\n                  \"datasource\": \"$datasource\",\n                  \"fill\": 1,\n                  \"fillGradient\": 0,\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 42\n                  },\n                  \"id\": 17,\n                  \"legend\": {\n                      \"alignAsTable\": true,\n                      \"avg\": false,\n                      \"current\": true,\n                      \"max\": false,\n                      \"min\": false,\n                      \"rightSide\": true,\n                      \"show\": true,\n                      \"sideWidth\": null,\n                      \"total\": false,\n                      \"values\": true\n                  },\n                  \"lines\": true,\n                  \"linewidth\": 1,\n                  \"links\": [\n\n                  ],\n                  \"nullPointMode\": \"null\",\n                  \"percentage\": false,\n                  \"pointradius\": 5,\n                  \"points\": false,\n                  \"renderer\": \"flot\",\n                  \"repeat\": null,\n                  \"seriesOverrides\": [\n\n                  ],\n                  \"spaceLength\": 10,\n                  \"stack\": false,\n                  \"steppedLine\": false,\n                  \"targets\": [\n                      {\n                          \"expr\": \"histogram_quantile(0.99, sum(rate(kubelet_cgroup_manager_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, operation_type, le))\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{instance}} {{operation_type}}\",\n                          \"refId\": \"A\"\n                      }\n                  ],\n                  \"thresholds\": [\n\n                  ],\n                  \"timeFrom\": null,\n                  \"timeShift\": null,\n                  \"title\": \"Cgroup manager 99th quantile\",\n                  \"tooltip\": {\n                      \"shared\": true,\n                      \"sort\": 0,\n                      \"value_type\": \"individual\"\n                  },\n                  \"type\": \"graph\",\n                  \"xaxis\": {\n                      \"buckets\": null,\n                      \"mode\": \"time\",\n                      \"name\": null,\n                      \"show\": true,\n                      \"values\": [\n\n                      ]\n                  },\n                  \"yaxes\": [\n                      {\n                          \"format\": \"s\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": null,\n                          \"show\": true\n                      },\n                      {\n                          \"format\": \"s\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": null,\n                          \"show\": true\n                      }\n                  ]\n              },\n              {\n                  \"aliasColors\": {\n\n                  },\n                  \"bars\": false,\n                  \"dashLength\": 10,\n                  \"dashes\": false,\n                  \"datasource\": \"$datasource\",\n                  \"description\": \"Pod lifecycle event generator\",\n                  \"fill\": 1,\n                  \"fillGradient\": 0,\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 49\n                  },\n                  \"id\": 18,\n                  \"legend\": {\n                      \"alignAsTable\": true,\n                      \"avg\": false,\n                      \"current\": true,\n                      \"max\": false,\n                      \"min\": false,\n                      \"rightSide\": true,\n                      \"show\": true,\n                      \"sideWidth\": null,\n                      \"total\": false,\n                      \"values\": true\n                  },\n                  \"lines\": true,\n                  \"linewidth\": 1,\n                  \"links\": [\n\n                  ],\n                  \"nullPointMode\": \"null\",\n                  \"percentage\": false,\n                  \"pointradius\": 5,\n                  \"points\": false,\n                  \"renderer\": \"flot\",\n                  \"repeat\": null,\n                  \"seriesOverrides\": [\n\n                  ],\n                  \"spaceLength\": 10,\n                  \"stack\": false,\n                  \"steppedLine\": false,\n                  \"targets\": [\n                      {\n                          \"expr\": \"sum(rate(kubelet_pleg_relist_duration_seconds_count{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance)\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{instance}}\",\n                          \"refId\": \"A\"\n                      }\n                  ],\n                  \"thresholds\": [\n\n                  ],\n                  \"timeFrom\": null,\n                  \"timeShift\": null,\n                  \"title\": \"PLEG relist rate\",\n                  \"tooltip\": {\n                      \"shared\": true,\n                      \"sort\": 0,\n                      \"value_type\": \"individual\"\n                  },\n                  \"type\": \"graph\",\n                  \"xaxis\": {\n                      \"buckets\": null,\n                      \"mode\": \"time\",\n                      \"name\": null,\n                      \"show\": true,\n                      \"values\": [\n\n                      ]\n                  },\n                  \"yaxes\": [\n                      {\n                          \"format\": \"ops\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": null,\n                          \"show\": true\n                      },\n                      {\n                          \"format\": \"ops\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": null,\n                          \"show\": true\n                      }\n                  ]\n              },\n              {\n                  \"aliasColors\": {\n\n                  },\n                  \"bars\": false,\n                  \"dashLength\": 10,\n                  \"dashes\": false,\n                  \"datasource\": \"$datasource\",\n                  \"fill\": 1,\n                  \"fillGradient\": 0,\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 49\n                  },\n                  \"id\": 19,\n                  \"legend\": {\n                      \"alignAsTable\": true,\n                      \"avg\": false,\n                      \"current\": true,\n                      \"max\": false,\n                      \"min\": false,\n                      \"rightSide\": true,\n                      \"show\": true,\n                      \"sideWidth\": null,\n                      \"total\": false,\n                      \"values\": true\n                  },\n                  \"lines\": true,\n                  \"linewidth\": 1,\n                  \"links\": [\n\n                  ],\n                  \"nullPointMode\": \"null\",\n                  \"percentage\": false,\n                  \"pointradius\": 5,\n                  \"points\": false,\n                  \"renderer\": \"flot\",\n                  \"repeat\": null,\n                  \"seriesOverrides\": [\n\n                  ],\n                  \"spaceLength\": 10,\n                  \"stack\": false,\n                  \"steppedLine\": false,\n                  \"targets\": [\n                      {\n                          \"expr\": \"histogram_quantile(0.99, sum(rate(kubelet_pleg_relist_interval_seconds_bucket{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, le))\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{instance}}\",\n                          \"refId\": \"A\"\n                      }\n                  ],\n                  \"thresholds\": [\n\n                  ],\n                  \"timeFrom\": null,\n                  \"timeShift\": null,\n                  \"title\": \"PLEG relist interval\",\n                  \"tooltip\": {\n                      \"shared\": true,\n                      \"sort\": 0,\n                      \"value_type\": \"individual\"\n                  },\n                  \"type\": \"graph\",\n                  \"xaxis\": {\n                      \"buckets\": null,\n                      \"mode\": \"time\",\n                      \"name\": null,\n                      \"show\": true,\n                      \"values\": [\n\n                      ]\n                  },\n                  \"yaxes\": [\n                      {\n                          \"format\": \"s\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": null,\n                          \"show\": true\n                      },\n                      {\n                          \"format\": \"s\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": null,\n                          \"show\": true\n                      }\n                  ]\n              },\n              {\n                  \"aliasColors\": {\n\n                  },\n                  \"bars\": false,\n                  \"dashLength\": 10,\n                  \"dashes\": false,\n                  \"datasource\": \"$datasource\",\n                  \"fill\": 1,\n                  \"fillGradient\": 0,\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 56\n                  },\n                  \"id\": 20,\n                  \"legend\": {\n                      \"alignAsTable\": true,\n                      \"avg\": false,\n                      \"current\": true,\n                      \"max\": false,\n                      \"min\": false,\n                      \"rightSide\": true,\n                      \"show\": true,\n                      \"sideWidth\": null,\n                      \"total\": false,\n                      \"values\": true\n                  },\n                  \"lines\": true,\n                  \"linewidth\": 1,\n                  \"links\": [\n\n                  ],\n                  \"nullPointMode\": \"null\",\n                  \"percentage\": false,\n                  \"pointradius\": 5,\n                  \"points\": false,\n                  \"renderer\": \"flot\",\n                  \"repeat\": null,\n                  \"seriesOverrides\": [\n\n                  ],\n                  \"spaceLength\": 10,\n                  \"stack\": false,\n                  \"steppedLine\": false,\n                  \"targets\": [\n                      {\n                          \"expr\": \"histogram_quantile(0.99, sum(rate(kubelet_pleg_relist_duration_seconds_bucket{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, le))\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{instance}}\",\n                          \"refId\": \"A\"\n                      }\n                  ],\n                  \"thresholds\": [\n\n                  ],\n                  \"timeFrom\": null,\n                  \"timeShift\": null,\n                  \"title\": \"PLEG relist duration\",\n                  \"tooltip\": {\n                      \"shared\": true,\n                      \"sort\": 0,\n                      \"value_type\": \"individual\"\n                  },\n                  \"type\": \"graph\",\n                  \"xaxis\": {\n                      \"buckets\": null,\n                      \"mode\": \"time\",\n                      \"name\": null,\n                      \"show\": true,\n                      \"values\": [\n\n                      ]\n                  },\n                  \"yaxes\": [\n                      {\n                          \"format\": \"s\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": null,\n                          \"show\": true\n                      },\n                      {\n                          \"format\": \"s\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": null,\n                          \"show\": true\n                      }\n                  ]\n              },\n              {\n                  \"aliasColors\": {\n\n                  },\n                  \"bars\": false,\n                  \"dashLength\": 10,\n                  \"dashes\": false,\n                  \"datasource\": \"$datasource\",\n                  \"fill\": 1,\n                  \"fillGradient\": 0,\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 63\n                  },\n                  \"id\": 21,\n                  \"legend\": {\n                      \"alignAsTable\": false,\n                      \"avg\": false,\n                      \"current\": false,\n                      \"max\": false,\n                      \"min\": false,\n                      \"rightSide\": false,\n                      \"show\": true,\n                      \"sideWidth\": null,\n                      \"total\": false,\n                      \"values\": false\n                  },\n                  \"lines\": true,\n                  \"linewidth\": 1,\n                  \"links\": [\n\n                  ],\n                  \"nullPointMode\": \"null\",\n                  \"percentage\": false,\n                  \"pointradius\": 5,\n                  \"points\": false,\n                  \"renderer\": \"flot\",\n                  \"repeat\": null,\n                  \"seriesOverrides\": [\n\n                  ],\n                  \"spaceLength\": 10,\n                  \"stack\": false,\n                  \"steppedLine\": false,\n                  \"targets\": [\n                      {\n                          \"expr\": \"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\",code=~\\\"2..\\\"}[$__rate_interval]))\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"2xx\",\n                          \"refId\": \"A\"\n                      },\n                      {\n                          \"expr\": \"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\",code=~\\\"3..\\\"}[$__rate_interval]))\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"3xx\",\n                          \"refId\": \"B\"\n                      },\n                      {\n                          \"expr\": \"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\",code=~\\\"4..\\\"}[$__rate_interval]))\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"4xx\",\n                          \"refId\": \"C\"\n                      },\n                      {\n                          \"expr\": \"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\",code=~\\\"5..\\\"}[$__rate_interval]))\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"5xx\",\n                          \"refId\": \"D\"\n                      }\n                  ],\n                  \"thresholds\": [\n\n                  ],\n                  \"timeFrom\": null,\n                  \"timeShift\": null,\n                  \"title\": \"RPC Rate\",\n                  \"tooltip\": {\n                      \"shared\": true,\n                      \"sort\": 0,\n                      \"value_type\": \"individual\"\n                  },\n                  \"type\": \"graph\",\n                  \"xaxis\": {\n                      \"buckets\": null,\n                      \"mode\": \"time\",\n                      \"name\": null,\n                      \"show\": true,\n                      \"values\": [\n\n                      ]\n                  },\n                  \"yaxes\": [\n                      {\n                          \"format\": \"ops\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": null,\n                          \"show\": true\n                      },\n                      {\n                          \"format\": \"ops\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": null,\n                          \"show\": true\n                      }\n                  ]\n              },\n              {\n                  \"aliasColors\": {\n\n                  },\n                  \"bars\": false,\n                  \"dashLength\": 10,\n                  \"dashes\": false,\n                  \"datasource\": \"$datasource\",\n                  \"fill\": 1,\n                  \"fillGradient\": 0,\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 70\n                  },\n                  \"id\": 22,\n                  \"legend\": {\n                      \"alignAsTable\": true,\n                      \"avg\": false,\n                      \"current\": true,\n                      \"max\": false,\n                      \"min\": false,\n                      \"rightSide\": true,\n                      \"show\": true,\n                      \"sideWidth\": null,\n                      \"total\": false,\n                      \"values\": true\n                  },\n                  \"lines\": true,\n                  \"linewidth\": 1,\n                  \"links\": [\n\n                  ],\n                  \"nullPointMode\": \"null\",\n                  \"percentage\": false,\n                  \"pointradius\": 5,\n                  \"points\": false,\n                  \"renderer\": \"flot\",\n                  \"repeat\": null,\n                  \"seriesOverrides\": [\n\n                  ],\n                  \"spaceLength\": 10,\n                  \"stack\": false,\n                  \"steppedLine\": false,\n                  \"targets\": [\n                      {\n                          \"expr\": \"histogram_quantile(0.99, sum(rate(rest_client_request_duration_seconds_bucket{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, verb, url, le))\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{instance}} {{verb}} {{url}}\",\n                          \"refId\": \"A\"\n                      }\n                  ],\n                  \"thresholds\": [\n\n                  ],\n                  \"timeFrom\": null,\n                  \"timeShift\": null,\n                  \"title\": \"Request duration 99th quantile\",\n                  \"tooltip\": {\n                      \"shared\": true,\n                      \"sort\": 0,\n                      \"value_type\": \"individual\"\n                  },\n                  \"type\": \"graph\",\n                  \"xaxis\": {\n                      \"buckets\": null,\n                      \"mode\": \"time\",\n                      \"name\": null,\n                      \"show\": true,\n                      \"values\": [\n\n                      ]\n                  },\n                  \"yaxes\": [\n                      {\n                          \"format\": \"s\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": null,\n                          \"show\": true\n                      },\n                      {\n                          \"format\": \"s\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": null,\n                          \"show\": true\n                      }\n                  ]\n              },\n              {\n                  \"aliasColors\": {\n\n                  },\n                  \"bars\": false,\n                  \"dashLength\": 10,\n                  \"dashes\": false,\n                  \"datasource\": \"$datasource\",\n                  \"fill\": 1,\n                  \"fillGradient\": 0,\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 8,\n                      \"x\": 0,\n                      \"y\": 77\n                  },\n                  \"id\": 23,\n                  \"legend\": {\n                      \"alignAsTable\": false,\n                      \"avg\": false,\n                      \"current\": false,\n                      \"max\": false,\n                      \"min\": false,\n                      \"rightSide\": false,\n                      \"show\": true,\n                      \"sideWidth\": null,\n                      \"total\": false,\n                      \"values\": false\n                  },\n                  \"lines\": true,\n                  \"linewidth\": 1,\n                  \"links\": [\n\n                  ],\n                  \"nullPointMode\": \"null\",\n                  \"percentage\": false,\n                  \"pointradius\": 5,\n                  \"points\": false,\n                  \"renderer\": \"flot\",\n                  \"repeat\": null,\n                  \"seriesOverrides\": [\n\n                  ],\n                  \"spaceLength\": 10,\n                  \"stack\": false,\n                  \"steppedLine\": false,\n                  \"targets\": [\n                      {\n                          \"expr\": \"process_resident_memory_bytes{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{instance}}\",\n                          \"refId\": \"A\"\n                      }\n                  ],\n                  \"thresholds\": [\n\n                  ],\n                  \"timeFrom\": null,\n                  \"timeShift\": null,\n                  \"title\": \"Memory\",\n                  \"tooltip\": {\n                      \"shared\": true,\n                      \"sort\": 0,\n                      \"value_type\": \"individual\"\n                  },\n                  \"type\": \"graph\",\n                  \"xaxis\": {\n                      \"buckets\": null,\n                      \"mode\": \"time\",\n                      \"name\": null,\n                      \"show\": true,\n                      \"values\": [\n\n                      ]\n                  },\n                  \"yaxes\": [\n                      {\n                          \"format\": \"bytes\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": null,\n                          \"show\": true\n                      },\n                      {\n                          \"format\": \"bytes\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": null,\n                          \"show\": true\n                      }\n                  ]\n              },\n              {\n                  \"aliasColors\": {\n\n                  },\n                  \"bars\": false,\n                  \"dashLength\": 10,\n                  \"dashes\": false,\n                  \"datasource\": \"$datasource\",\n                  \"fill\": 1,\n                  \"fillGradient\": 0,\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 8,\n                      \"x\": 8,\n                      \"y\": 77\n                  },\n                  \"id\": 24,\n                  \"legend\": {\n                      \"alignAsTable\": false,\n                      \"avg\": false,\n                      \"current\": false,\n                      \"max\": false,\n                      \"min\": false,\n                      \"rightSide\": false,\n                      \"show\": true,\n                      \"sideWidth\": null,\n                      \"total\": false,\n                      \"values\": false\n                  },\n                  \"lines\": true,\n                  \"linewidth\": 1,\n                  \"links\": [\n\n                  ],\n                  \"nullPointMode\": \"null\",\n                  \"percentage\": false,\n                  \"pointradius\": 5,\n                  \"points\": false,\n                  \"renderer\": \"flot\",\n                  \"repeat\": null,\n                  \"seriesOverrides\": [\n\n                  ],\n                  \"spaceLength\": 10,\n                  \"stack\": false,\n                  \"steppedLine\": false,\n                  \"targets\": [\n                      {\n                          \"expr\": \"rate(process_cpu_seconds_total{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}[$__rate_interval])\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{instance}}\",\n                          \"refId\": \"A\"\n                      }\n                  ],\n                  \"thresholds\": [\n\n                  ],\n                  \"timeFrom\": null,\n                  \"timeShift\": null,\n                  \"title\": \"CPU usage\",\n                  \"tooltip\": {\n                      \"shared\": true,\n                      \"sort\": 0,\n                      \"value_type\": \"individual\"\n                  },\n                  \"type\": \"graph\",\n                  \"xaxis\": {\n                      \"buckets\": null,\n                      \"mode\": \"time\",\n                      \"name\": null,\n                      \"show\": true,\n                      \"values\": [\n\n                      ]\n                  },\n                  \"yaxes\": [\n                      {\n                          \"format\": \"short\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": null,\n                          \"show\": true\n                      },\n                      {\n                          \"format\": \"short\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": null,\n                          \"show\": true\n                      }\n                  ]\n              },\n              {\n                  \"aliasColors\": {\n\n                  },\n                  \"bars\": false,\n                  \"dashLength\": 10,\n                  \"dashes\": false,\n                  \"datasource\": \"$datasource\",\n                  \"fill\": 1,\n                  \"fillGradient\": 0,\n                  \"gridPos\": {\n                      \"h\": 7,\n                      \"w\": 8,\n                      \"x\": 16,\n                      \"y\": 77\n                  },\n                  \"id\": 25,\n                  \"legend\": {\n                      \"alignAsTable\": false,\n                      \"avg\": false,\n                      \"current\": false,\n                      \"max\": false,\n                      \"min\": false,\n                      \"rightSide\": false,\n                      \"show\": true,\n                      \"sideWidth\": null,\n                      \"total\": false,\n                      \"values\": false\n                  },\n                  \"lines\": true,\n                  \"linewidth\": 1,\n                  \"links\": [\n\n                  ],\n                  \"nullPointMode\": \"null\",\n                  \"percentage\": false,\n                  \"pointradius\": 5,\n                  \"points\": false,\n                  \"renderer\": \"flot\",\n                  \"repeat\": null,\n                  \"seriesOverrides\": [\n\n                  ],\n                  \"spaceLength\": 10,\n                  \"stack\": false,\n                  \"steppedLine\": false,\n                  \"targets\": [\n                      {\n                          \"expr\": \"go_goroutines{cluster=\\\"$cluster\\\",job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",instance=~\\\"$instance\\\"}\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"{{instance}}\",\n                          \"refId\": \"A\"\n                      }\n                  ],\n                  \"thresholds\": [\n\n                  ],\n                  \"timeFrom\": null,\n                  \"timeShift\": null,\n                  \"title\": \"Goroutines\",\n                  \"tooltip\": {\n                      \"shared\": true,\n                      \"sort\": 0,\n                      \"value_type\": \"individual\"\n                  },\n                  \"type\": \"graph\",\n                  \"xaxis\": {\n                      \"buckets\": null,\n                      \"mode\": \"time\",\n                      \"name\": null,\n                      \"show\": true,\n                      \"values\": [\n\n                      ]\n                  },\n                  \"yaxes\": [\n                      {\n                          \"format\": \"short\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": null,\n                          \"show\": true\n                      },\n                      {\n                          \"format\": \"short\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": null,\n                          \"show\": true\n                      }\n                  ]\n              }\n          ],\n          \"refresh\": \"10s\",\n          \"rows\": [\n\n          ],\n          \"schemaVersion\": 14,\n          \"style\": \"dark\",\n          \"tags\": [\n              \"kubernetes-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data Source\",\n                      \"name\": \"datasource\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"prometheus\",\n                      \"refresh\": 1,\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"allValue\": null,\n                      \"current\": {\n\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": false,\n                      \"label\": \"cluster\",\n                      \"multi\": false,\n                      \"name\": \"cluster\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(up{job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\"}, cluster)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  },\n                  {\n                      \"allValue\": null,\n                      \"current\": {\n\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": true,\n                      \"label\": \"instance\",\n                      \"multi\": false,\n                      \"name\": \"instance\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(up{job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\",cluster=\\\"$cluster\\\"}, instance)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timepicker\": {\n              \"refresh_intervals\": [\n                  \"5s\",\n                  \"10s\",\n                  \"30s\",\n                  \"1m\",\n                  \"5m\",\n                  \"15m\",\n                  \"30m\",\n                  \"1h\",\n                  \"2h\",\n                  \"1d\"\n              ],\n              \"time_options\": [\n                  \"5m\",\n                  \"15m\",\n                  \"1h\",\n                  \"6h\",\n                  \"12h\",\n                  \"24h\",\n                  \"2d\",\n                  \"7d\",\n                  \"30d\"\n              ]\n          },\n          \"timezone\": \"UTC\",\n          \"title\": \"Kubernetes / Kubelet\",\n          \"uid\": \"3138fa155d5915769fbded898ac09fd9\",\n          \"version\": 0\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 9.5.3\n    name: grafana-dashboard-kubelet\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    namespace-by-pod.json: |-\n      {\n          \"__inputs\": [\n\n          ],\n          \"__requires\": [\n\n          ],\n          \"annotations\": {\n              \"list\": [\n                  {\n                      \"builtIn\": 1,\n                      \"datasource\": \"-- Grafana --\",\n                      \"enable\": true,\n                      \"hide\": true,\n                      \"iconColor\": \"rgba(0, 211, 255, 1)\",\n                      \"name\": \"Annotations & Alerts\",\n                      \"type\": \"dashboard\"\n                  }\n              ]\n          },\n          \"editable\": true,\n          \"gnetId\": null,\n          \"graphTooltip\": 0,\n          \"hideControls\": false,\n          \"id\": null,\n          \"links\": [\n\n          ],\n          \"panels\": [\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 0\n                  },\n                  \"id\": 2,\n                  \"panels\": [\n\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Current Bandwidth\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"cacheTimeout\": null,\n                  \"colorBackground\": false,\n                  \"colorValue\": false,\n                  \"colors\": [\n                      \"#299c46\",\n                      \"rgba(237, 129, 40, 0.89)\",\n                      \"#d44a3a\"\n                  ],\n                  \"datasource\": \"$datasource\",\n                  \"decimals\": 0,\n                  \"format\": \"time_series\",\n                  \"gauge\": {\n                      \"maxValue\": 100,\n                      \"minValue\": 0,\n                      \"show\": false,\n                      \"thresholdLabels\": false,\n                      \"thresholdMarkers\": true\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 1\n                  },\n                  \"height\": 9,\n                  \"id\": 3,\n                  \"interval\": null,\n                  \"links\": [\n\n                  ],\n                  \"mappingType\": 1,\n                  \"mappingTypes\": [\n                      {\n                          \"name\": \"value to text\",\n                          \"value\": 1\n                      },\n                      {\n                          \"name\": \"range to text\",\n                          \"value\": 2\n                      }\n                  ],\n                  \"maxDataPoints\": 100,\n                  \"minSpan\": 12,\n                  \"nullPointMode\": \"connected\",\n                  \"nullText\": null,\n                  \"options\": {\n                      \"fieldOptions\": {\n                          \"calcs\": [\n                              \"last\"\n                          ],\n                          \"defaults\": {\n                              \"max\": 10000000000,\n                              \"min\": 0,\n                              \"title\": \"$namespace\",\n                              \"unit\": \"Bps\"\n                          },\n                          \"mappings\": [\n\n                          ],\n                          \"override\": {\n\n                          },\n                          \"thresholds\": [\n                              {\n                                  \"color\": \"dark-green\",\n                                  \"index\": 0,\n                                  \"value\": null\n                              },\n                              {\n                                  \"color\": \"dark-yellow\",\n                                  \"index\": 1,\n                                  \"value\": 5000000000\n                              },\n                              {\n                                  \"color\": \"dark-red\",\n                                  \"index\": 2,\n                                  \"value\": 7000000000\n                              }\n                          ],\n                          \"values\": false\n                      }\n                  },\n                  \"postfix\": \"\",\n                  \"postfixFontSize\": \"50%\",\n                  \"prefix\": \"\",\n                  \"prefixFontSize\": \"50%\",\n                  \"rangeMaps\": [\n                      {\n                          \"from\": \"null\",\n                          \"text\": \"N/A\",\n                          \"to\": \"null\"\n                      }\n                  ],\n                  \"span\": 12,\n                  \"sparkline\": {\n                      \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n                      \"full\": false,\n                      \"lineColor\": \"rgb(31, 120, 193)\",\n                      \"show\": false\n                  },\n                  \"tableColumn\": \"\",\n                  \"targets\": [\n                      {\n                          \"expr\": \"sum(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution]))\",\n                          \"format\": \"time_series\",\n                          \"instant\": null,\n                          \"intervalFactor\": 1,\n                          \"legendFormat\": \"\",\n                          \"refId\": \"A\"\n                      }\n                  ],\n                  \"thresholds\": \"\",\n                  \"timeFrom\": null,\n                  \"timeShift\": null,\n                  \"title\": \"Current Rate of Bytes Received\",\n                  \"type\": \"gauge\",\n                  \"valueFontSize\": \"80%\",\n                  \"valueMaps\": [\n                      {\n                          \"op\": \"=\",\n                          \"text\": \"N/A\",\n                          \"value\": \"null\"\n                      }\n                  ],\n                  \"valueName\": \"current\"\n              },\n              {\n                  \"cacheTimeout\": null,\n                  \"colorBackground\": false,\n                  \"colorValue\": false,\n                  \"colors\": [\n                      \"#299c46\",\n                      \"rgba(237, 129, 40, 0.89)\",\n                      \"#d44a3a\"\n                  ],\n                  \"datasource\": \"$datasource\",\n                  \"decimals\": 0,\n                  \"format\": \"time_series\",\n                  \"gauge\": {\n                      \"maxValue\": 100,\n                      \"minValue\": 0,\n                      \"show\": false,\n                      \"thresholdLabels\": false,\n                      \"thresholdMarkers\": true\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 1\n                  },\n                  \"height\": 9,\n                  \"id\": 4,\n                  \"interval\": null,\n                  \"links\": [\n\n                  ],\n                  \"mappingType\": 1,\n                  \"mappingTypes\": [\n                      {\n                          \"name\": \"value to text\",\n                          \"value\": 1\n                      },\n                      {\n                          \"name\": \"range to text\",\n                          \"value\": 2\n                      }\n                  ],\n                  \"maxDataPoints\": 100,\n                  \"minSpan\": 12,\n                  \"nullPointMode\": \"connected\",\n                  \"nullText\": null,\n                  \"options\": {\n                      \"fieldOptions\": {\n                          \"calcs\": [\n                              \"last\"\n                          ],\n                          \"defaults\": {\n                              \"max\": 10000000000,\n                              \"min\": 0,\n                              \"title\": \"$namespace\",\n                              \"unit\": \"Bps\"\n                          },\n                          \"mappings\": [\n\n                          ],\n                          \"override\": {\n\n                          },\n                          \"thresholds\": [\n                              {\n                                  \"color\": \"dark-green\",\n                                  \"index\": 0,\n                                  \"value\": null\n                              },\n                              {\n                                  \"color\": \"dark-yellow\",\n                                  \"index\": 1,\n                                  \"value\": 5000000000\n                              },\n                              {\n                                  \"color\": \"dark-red\",\n                                  \"index\": 2,\n                                  \"value\": 7000000000\n                              }\n                          ],\n                          \"values\": false\n                      }\n                  },\n                  \"postfix\": \"\",\n                  \"postfixFontSize\": \"50%\",\n                  \"prefix\": \"\",\n                  \"prefixFontSize\": \"50%\",\n                  \"rangeMaps\": [\n                      {\n                          \"from\": \"null\",\n                          \"text\": \"N/A\",\n                          \"to\": \"null\"\n                      }\n                  ],\n                  \"span\": 12,\n                  \"sparkline\": {\n                      \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n                      \"full\": false,\n                      \"lineColor\": \"rgb(31, 120, 193)\",\n                      \"show\": false\n                  },\n                  \"tableColumn\": \"\",\n                  \"targets\": [\n                      {\n                          \"expr\": \"sum(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution]))\",\n                          \"format\": \"time_series\",\n                          \"instant\": null,\n                          \"intervalFactor\": 1,\n                          \"legendFormat\": \"\",\n                          \"refId\": \"A\"\n                      }\n                  ],\n                  \"thresholds\": \"\",\n                  \"timeFrom\": null,\n                  \"timeShift\": null,\n                  \"title\": \"Current Rate of Bytes Transmitted\",\n                  \"type\": \"gauge\",\n                  \"valueFontSize\": \"80%\",\n                  \"valueMaps\": [\n                      {\n                          \"op\": \"=\",\n                          \"text\": \"N/A\",\n                          \"value\": \"null\"\n                      }\n                  ],\n                  \"valueName\": \"current\"\n              },\n              {\n                  \"columns\": [\n                      {\n                          \"text\": \"Time\",\n                          \"value\": \"Time\"\n                      },\n                      {\n                          \"text\": \"Value #A\",\n                          \"value\": \"Value #A\"\n                      },\n                      {\n                          \"text\": \"Value #B\",\n                          \"value\": \"Value #B\"\n                      },\n                      {\n                          \"text\": \"Value #C\",\n                          \"value\": \"Value #C\"\n                      },\n                      {\n                          \"text\": \"Value #D\",\n                          \"value\": \"Value #D\"\n                      },\n                      {\n                          \"text\": \"Value #E\",\n                          \"value\": \"Value #E\"\n                      },\n                      {\n                          \"text\": \"Value #F\",\n                          \"value\": \"Value #F\"\n                      },\n                      {\n                          \"text\": \"pod\",\n                          \"value\": \"pod\"\n                      }\n                  ],\n                  \"datasource\": \"$datasource\",\n                  \"fill\": 1,\n                  \"fontSize\": \"100%\",\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 10\n                  },\n                  \"id\": 5,\n                  \"lines\": true,\n                  \"linewidth\": 1,\n                  \"links\": [\n\n                  ],\n                  \"minSpan\": 24,\n                  \"nullPointMode\": \"null as zero\",\n                  \"renderer\": \"flot\",\n                  \"scroll\": true,\n                  \"showHeader\": true,\n                  \"sort\": {\n                      \"col\": 0,\n                      \"desc\": false\n                  },\n                  \"spaceLength\": 10,\n                  \"span\": 24,\n                  \"styles\": [\n                      {\n                          \"alias\": \"Time\",\n                          \"colorMode\": null,\n                          \"colors\": [\n\n                          ],\n                          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                          \"decimals\": 2,\n                          \"link\": false,\n                          \"linkTooltip\": \"Drill down\",\n                          \"linkUrl\": \"\",\n                          \"pattern\": \"Time\",\n                          \"thresholds\": [\n\n                          ],\n                          \"type\": \"hidden\",\n                          \"unit\": \"short\"\n                      },\n                      {\n                          \"alias\": \"Bandwidth Received\",\n                          \"colorMode\": null,\n                          \"colors\": [\n\n                          ],\n                          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                          \"decimals\": 2,\n                          \"link\": false,\n                          \"linkTooltip\": \"Drill down\",\n                          \"linkUrl\": \"\",\n                          \"pattern\": \"Value #A\",\n                          \"thresholds\": [\n\n                          ],\n                          \"type\": \"number\",\n                          \"unit\": \"Bps\"\n                      },\n                      {\n                          \"alias\": \"Bandwidth Transmitted\",\n                          \"colorMode\": null,\n                          \"colors\": [\n\n                          ],\n                          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                          \"decimals\": 2,\n                          \"link\": false,\n                          \"linkTooltip\": \"Drill down\",\n                          \"linkUrl\": \"\",\n                          \"pattern\": \"Value #B\",\n                          \"thresholds\": [\n\n                          ],\n                          \"type\": \"number\",\n                          \"unit\": \"Bps\"\n                      },\n                      {\n                          \"alias\": \"Rate of Received Packets\",\n                          \"colorMode\": null,\n                          \"colors\": [\n\n                          ],\n                          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                          \"decimals\": 2,\n                          \"link\": false,\n                          \"linkTooltip\": \"Drill down\",\n                          \"linkUrl\": \"\",\n                          \"pattern\": \"Value #C\",\n                          \"thresholds\": [\n\n                          ],\n                          \"type\": \"number\",\n                          \"unit\": \"pps\"\n                      },\n                      {\n                          \"alias\": \"Rate of Transmitted Packets\",\n                          \"colorMode\": null,\n                          \"colors\": [\n\n                          ],\n                          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                          \"decimals\": 2,\n                          \"link\": false,\n                          \"linkTooltip\": \"Drill down\",\n                          \"linkUrl\": \"\",\n                          \"pattern\": \"Value #D\",\n                          \"thresholds\": [\n\n                          ],\n                          \"type\": \"number\",\n                          \"unit\": \"pps\"\n                      },\n                      {\n                          \"alias\": \"Rate of Received Packets Dropped\",\n                          \"colorMode\": null,\n                          \"colors\": [\n\n                          ],\n                          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                          \"decimals\": 2,\n                          \"link\": false,\n                          \"linkTooltip\": \"Drill down\",\n                          \"linkUrl\": \"\",\n                          \"pattern\": \"Value #E\",\n                          \"thresholds\": [\n\n                          ],\n                          \"type\": \"number\",\n                          \"unit\": \"pps\"\n                      },\n                      {\n                          \"alias\": \"Rate of Transmitted Packets Dropped\",\n                          \"colorMode\": null,\n                          \"colors\": [\n\n                          ],\n                          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                          \"decimals\": 2,\n                          \"link\": false,\n                          \"linkTooltip\": \"Drill down\",\n                          \"linkUrl\": \"\",\n                          \"pattern\": \"Value #F\",\n                          \"thresholds\": [\n\n                          ],\n                          \"type\": \"number\",\n                          \"unit\": \"pps\"\n                      },\n                      {\n                          \"alias\": \"Pod\",\n                          \"colorMode\": null,\n                          \"colors\": [\n\n                          ],\n                          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                          \"decimals\": 2,\n                          \"link\": true,\n                          \"linkTooltip\": \"Drill down\",\n                          \"linkUrl\": \"d/7a18067ce943a40ae25454675c19ff5c/kubernetes-networking-pod?orgId=1&refresh=30s&var-namespace=$namespace&var-pod=$__cell\",\n                          \"pattern\": \"pod\",\n                          \"thresholds\": [\n\n                          ],\n                          \"type\": \"number\",\n                          \"unit\": \"short\"\n                      }\n                  ],\n                  \"targets\": [\n                      {\n                          \"expr\": \"sum(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true,\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"\",\n                          \"refId\": \"A\",\n                          \"step\": 10\n                      },\n                      {\n                          \"expr\": \"sum(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true,\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"\",\n                          \"refId\": \"B\",\n                          \"step\": 10\n                      },\n                      {\n                          \"expr\": \"sum(irate(container_network_receive_packets_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true,\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"\",\n                          \"refId\": \"C\",\n                          \"step\": 10\n                      },\n                      {\n                          \"expr\": \"sum(irate(container_network_transmit_packets_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true,\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"\",\n                          \"refId\": \"D\",\n                          \"step\": 10\n                      },\n                      {\n                          \"expr\": \"sum(irate(container_network_receive_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true,\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"\",\n                          \"refId\": \"E\",\n                          \"step\": 10\n                      },\n                      {\n                          \"expr\": \"sum(irate(container_network_transmit_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])) by (pod)\",\n                          \"format\": \"table\",\n                          \"instant\": true,\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"\",\n                          \"refId\": \"F\",\n                          \"step\": 10\n                      }\n                  ],\n                  \"timeFrom\": null,\n                  \"timeShift\": null,\n                  \"title\": \"Current Status\",\n                  \"type\": \"table\"\n              },\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 19\n                  },\n                  \"id\": 6,\n                  \"panels\": [\n\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Bandwidth\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"aliasColors\": {\n\n                  },\n                  \"bars\": false,\n                  \"dashLength\": 10,\n                  \"dashes\": false,\n                  \"datasource\": \"$datasource\",\n                  \"fill\": 2,\n                  \"fillGradient\": 0,\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 20\n                  },\n                  \"id\": 7,\n                  \"legend\": {\n                      \"alignAsTable\": false,\n                      \"avg\": false,\n                      \"current\": false,\n                      \"hideEmpty\": true,\n                      \"hideZero\": true,\n                      \"max\": false,\n                      \"min\": false,\n                      \"rightSide\": false,\n                      \"show\": true,\n                      \"sideWidth\": null,\n                      \"total\": false,\n                      \"values\": false\n                  },\n                  \"lines\": true,\n                  \"linewidth\": 2,\n                  \"links\": [\n\n                  ],\n                  \"minSpan\": 12,\n                  \"nullPointMode\": \"connected\",\n                  \"paceLength\": 10,\n                  \"percentage\": false,\n                  \"pointradius\": 5,\n                  \"points\": false,\n                  \"renderer\": \"flot\",\n                  \"repeat\": null,\n                  \"seriesOverrides\": [\n\n                  ],\n                  \"spaceLength\": 10,\n                  \"span\": 12,\n                  \"stack\": true,\n                  \"steppedLine\": false,\n                  \"targets\": [\n                      {\n                          \"expr\": \"sum(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])) by (pod)\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 1,\n                          \"legendFormat\": \"{{pod}}\",\n                          \"refId\": \"A\",\n                          \"step\": 10\n                      }\n                  ],\n                  \"thresholds\": [\n\n                  ],\n                  \"timeFrom\": null,\n                  \"timeShift\": null,\n                  \"title\": \"Receive Bandwidth\",\n                  \"tooltip\": {\n                      \"shared\": true,\n                      \"sort\": 2,\n                      \"value_type\": \"individual\"\n                  },\n                  \"type\": \"graph\",\n                  \"xaxis\": {\n                      \"buckets\": null,\n                      \"mode\": \"time\",\n                      \"name\": null,\n                      \"show\": true,\n                      \"values\": [\n\n                      ]\n                  },\n                  \"yaxes\": [\n                      {\n                          \"format\": \"Bps\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": 0,\n                          \"show\": true\n                      },\n                      {\n                          \"format\": \"Bps\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": 0,\n                          \"show\": true\n                      }\n                  ]\n              },\n              {\n                  \"aliasColors\": {\n\n                  },\n                  \"bars\": false,\n                  \"dashLength\": 10,\n                  \"dashes\": false,\n                  \"datasource\": \"$datasource\",\n                  \"fill\": 2,\n                  \"fillGradient\": 0,\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 20\n                  },\n                  \"id\": 8,\n                  \"legend\": {\n                      \"alignAsTable\": false,\n                      \"avg\": false,\n                      \"current\": false,\n                      \"hideEmpty\": true,\n                      \"hideZero\": true,\n                      \"max\": false,\n                      \"min\": false,\n                      \"rightSide\": false,\n                      \"show\": true,\n                      \"sideWidth\": null,\n                      \"total\": false,\n                      \"values\": false\n                  },\n                  \"lines\": true,\n                  \"linewidth\": 2,\n                  \"links\": [\n\n                  ],\n                  \"minSpan\": 12,\n                  \"nullPointMode\": \"connected\",\n                  \"paceLength\": 10,\n                  \"percentage\": false,\n                  \"pointradius\": 5,\n                  \"points\": false,\n                  \"renderer\": \"flot\",\n                  \"repeat\": null,\n                  \"seriesOverrides\": [\n\n                  ],\n                  \"spaceLength\": 10,\n                  \"span\": 12,\n                  \"stack\": true,\n                  \"steppedLine\": false,\n                  \"targets\": [\n                      {\n                          \"expr\": \"sum(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])) by (pod)\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 1,\n                          \"legendFormat\": \"{{pod}}\",\n                          \"refId\": \"A\",\n                          \"step\": 10\n                      }\n                  ],\n                  \"thresholds\": [\n\n                  ],\n                  \"timeFrom\": null,\n                  \"timeShift\": null,\n                  \"title\": \"Transmit Bandwidth\",\n                  \"tooltip\": {\n                      \"shared\": true,\n                      \"sort\": 2,\n                      \"value_type\": \"individual\"\n                  },\n                  \"type\": \"graph\",\n                  \"xaxis\": {\n                      \"buckets\": null,\n                      \"mode\": \"time\",\n                      \"name\": null,\n                      \"show\": true,\n                      \"values\": [\n\n                      ]\n                  },\n                  \"yaxes\": [\n                      {\n                          \"format\": \"Bps\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": 0,\n                          \"show\": true\n                      },\n                      {\n                          \"format\": \"Bps\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": 0,\n                          \"show\": true\n                      }\n                  ]\n              },\n              {\n                  \"collapse\": true,\n                  \"collapsed\": true,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 29\n                  },\n                  \"id\": 9,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 2,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n                              \"h\": 10,\n                              \"w\": 12,\n                              \"x\": 0,\n                              \"y\": 30\n                          },\n                          \"id\": 10,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"hideEmpty\": true,\n                              \"hideZero\": true,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 2,\n                          \"links\": [\n\n                          ],\n                          \"minSpan\": 12,\n                          \"nullPointMode\": \"connected\",\n                          \"paceLength\": 10,\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(irate(container_network_receive_packets_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])) by (pod)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 1,\n                                  \"legendFormat\": \"{{pod}}\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Rate of Received Packets\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 2,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n                              \"h\": 10,\n                              \"w\": 12,\n                              \"x\": 12,\n                              \"y\": 30\n                          },\n                          \"id\": 11,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"hideEmpty\": true,\n                              \"hideZero\": true,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 2,\n                          \"links\": [\n\n                          ],\n                          \"minSpan\": 12,\n                          \"nullPointMode\": \"connected\",\n                          \"paceLength\": 10,\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(irate(container_network_transmit_packets_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])) by (pod)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 1,\n                                  \"legendFormat\": \"{{pod}}\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Rate of Transmitted Packets\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Packets\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"collapse\": true,\n                  \"collapsed\": true,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 30\n                  },\n                  \"id\": 12,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 2,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n                              \"h\": 10,\n                              \"w\": 12,\n                              \"x\": 0,\n                              \"y\": 40\n                          },\n                          \"id\": 13,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"hideEmpty\": true,\n                              \"hideZero\": true,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 2,\n                          \"links\": [\n\n                          ],\n                          \"minSpan\": 12,\n                          \"nullPointMode\": \"connected\",\n                          \"paceLength\": 10,\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(irate(container_network_receive_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])) by (pod)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 1,\n                                  \"legendFormat\": \"{{pod}}\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Rate of Received Packets Dropped\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 2,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n                              \"h\": 10,\n                              \"w\": 12,\n                              \"x\": 12,\n                              \"y\": 40\n                          },\n                          \"id\": 14,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"hideEmpty\": true,\n                              \"hideZero\": true,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 2,\n                          \"links\": [\n\n                          ],\n                          \"minSpan\": 12,\n                          \"nullPointMode\": \"connected\",\n                          \"paceLength\": 10,\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(irate(container_network_transmit_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])) by (pod)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 1,\n                                  \"legendFormat\": \"{{pod}}\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Rate of Transmitted Packets Dropped\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Errors\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              }\n          ],\n          \"refresh\": \"10s\",\n          \"rows\": [\n\n          ],\n          \"schemaVersion\": 18,\n          \"style\": \"dark\",\n          \"tags\": [\n              \"kubernetes-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data Source\",\n                      \"name\": \"datasource\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"prometheus\",\n                      \"refresh\": 1,\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"allValue\": null,\n                      \"current\": {\n\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": false,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"cluster\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(up{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\"}, cluster)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"sort\": 0,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  },\n                  {\n                      \"allValue\": \".+\",\n                      \"auto\": false,\n                      \"auto_count\": 30,\n                      \"auto_min\": \"10s\",\n                      \"current\": {\n                          \"text\": \"kube-system\",\n                          \"value\": \"kube-system\"\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"definition\": \"label_values(container_network_receive_packets_total{cluster=\\\"$cluster\\\"}, namespace)\",\n                      \"hide\": 0,\n                      \"includeAll\": true,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"namespace\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(container_network_receive_packets_total{cluster=\\\"$cluster\\\"}, namespace)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"skipUrlSync\": false,\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  },\n                  {\n                      \"allValue\": null,\n                      \"auto\": false,\n                      \"auto_count\": 30,\n                      \"auto_min\": \"10s\",\n                      \"current\": {\n                          \"text\": \"5m\",\n                          \"value\": \"5m\"\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": false,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"resolution\",\n                      \"options\": [\n                          {\n                              \"selected\": false,\n                              \"text\": \"30s\",\n                              \"value\": \"30s\"\n                          },\n                          {\n                              \"selected\": true,\n                              \"text\": \"5m\",\n                              \"value\": \"5m\"\n                          },\n                          {\n                              \"selected\": false,\n                              \"text\": \"1h\",\n                              \"value\": \"1h\"\n                          }\n                      ],\n                      \"query\": \"30s,5m,1h\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"skipUrlSync\": false,\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"interval\",\n                      \"useTags\": false\n                  },\n                  {\n                      \"allValue\": null,\n                      \"auto\": false,\n                      \"auto_count\": 30,\n                      \"auto_min\": \"10s\",\n                      \"current\": {\n                          \"text\": \"5m\",\n                          \"value\": \"5m\"\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 2,\n                      \"includeAll\": false,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"interval\",\n                      \"options\": [\n                          {\n                              \"selected\": true,\n                              \"text\": \"4h\",\n                              \"value\": \"4h\"\n                          }\n                      ],\n                      \"query\": \"4h\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"skipUrlSync\": false,\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"interval\",\n                      \"useTags\": false\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timepicker\": {\n              \"refresh_intervals\": [\n                  \"5s\",\n                  \"10s\",\n                  \"30s\",\n                  \"1m\",\n                  \"5m\",\n                  \"15m\",\n                  \"30m\",\n                  \"1h\",\n                  \"2h\",\n                  \"1d\"\n              ],\n              \"time_options\": [\n                  \"5m\",\n                  \"15m\",\n                  \"1h\",\n                  \"6h\",\n                  \"12h\",\n                  \"24h\",\n                  \"2d\",\n                  \"7d\",\n                  \"30d\"\n              ]\n          },\n          \"timezone\": \"UTC\",\n          \"title\": \"Kubernetes / Networking / Namespace (Pods)\",\n          \"uid\": \"8b7a8b326d7a6f1f04244066368c67af\",\n          \"version\": 0\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 9.5.3\n    name: grafana-dashboard-namespace-by-pod\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    namespace-by-workload.json: |-\n      {\n          \"__inputs\": [\n\n          ],\n          \"__requires\": [\n\n          ],\n          \"annotations\": {\n              \"list\": [\n                  {\n                      \"builtIn\": 1,\n                      \"datasource\": \"-- Grafana --\",\n                      \"enable\": true,\n                      \"hide\": true,\n                      \"iconColor\": \"rgba(0, 211, 255, 1)\",\n                      \"name\": \"Annotations & Alerts\",\n                      \"type\": \"dashboard\"\n                  }\n              ]\n          },\n          \"editable\": true,\n          \"gnetId\": null,\n          \"graphTooltip\": 0,\n          \"hideControls\": false,\n          \"id\": null,\n          \"links\": [\n\n          ],\n          \"panels\": [\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 0\n                  },\n                  \"id\": 2,\n                  \"panels\": [\n\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Current Bandwidth\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"aliasColors\": {\n\n                  },\n                  \"bars\": true,\n                  \"dashLength\": 10,\n                  \"dashes\": false,\n                  \"datasource\": \"$datasource\",\n                  \"fill\": 2,\n                  \"fillGradient\": 0,\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 1\n                  },\n                  \"id\": 3,\n                  \"legend\": {\n                      \"alignAsTable\": true,\n                      \"avg\": false,\n                      \"current\": true,\n                      \"hideEmpty\": true,\n                      \"hideZero\": true,\n                      \"max\": false,\n                      \"min\": false,\n                      \"rightSide\": true,\n                      \"show\": true,\n                      \"sideWidth\": null,\n                      \"sort\": \"current\",\n                      \"sortDesc\": true,\n                      \"total\": false,\n                      \"values\": true\n                  },\n                  \"lines\": false,\n                  \"linewidth\": 1,\n                  \"links\": [\n\n                  ],\n                  \"minSpan\": 24,\n                  \"nullPointMode\": \"null\",\n                  \"paceLength\": 10,\n                  \"percentage\": false,\n                  \"pointradius\": 5,\n                  \"points\": false,\n                  \"renderer\": \"flot\",\n                  \"repeat\": null,\n                  \"seriesOverrides\": [\n\n                  ],\n                  \"spaceLength\": 10,\n                  \"span\": 24,\n                  \"stack\": false,\n                  \"steppedLine\": false,\n                  \"targets\": [\n                      {\n                          \"expr\": \"sort_desc(sum(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 1,\n                          \"legendFormat\": \"{{ workload }}\",\n                          \"refId\": \"A\",\n                          \"step\": 10\n                      }\n                  ],\n                  \"thresholds\": [\n\n                  ],\n                  \"timeFrom\": null,\n                  \"timeShift\": null,\n                  \"title\": \"Current Rate of Bytes Received\",\n                  \"tooltip\": {\n                      \"shared\": true,\n                      \"sort\": 2,\n                      \"value_type\": \"individual\"\n                  },\n                  \"type\": \"graph\",\n                  \"xaxis\": {\n                      \"buckets\": null,\n                      \"mode\": \"series\",\n                      \"name\": null,\n                      \"show\": false,\n                      \"values\": [\n                          \"current\"\n                      ]\n                  },\n                  \"yaxes\": [\n                      {\n                          \"format\": \"Bps\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": 0,\n                          \"show\": true\n                      },\n                      {\n                          \"format\": \"Bps\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": 0,\n                          \"show\": true\n                      }\n                  ]\n              },\n              {\n                  \"aliasColors\": {\n\n                  },\n                  \"bars\": true,\n                  \"dashLength\": 10,\n                  \"dashes\": false,\n                  \"datasource\": \"$datasource\",\n                  \"fill\": 2,\n                  \"fillGradient\": 0,\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 1\n                  },\n                  \"id\": 4,\n                  \"legend\": {\n                      \"alignAsTable\": true,\n                      \"avg\": false,\n                      \"current\": true,\n                      \"hideEmpty\": true,\n                      \"hideZero\": true,\n                      \"max\": false,\n                      \"min\": false,\n                      \"rightSide\": true,\n                      \"show\": true,\n                      \"sideWidth\": null,\n                      \"sort\": \"current\",\n                      \"sortDesc\": true,\n                      \"total\": false,\n                      \"values\": true\n                  },\n                  \"lines\": false,\n                  \"linewidth\": 1,\n                  \"links\": [\n\n                  ],\n                  \"minSpan\": 24,\n                  \"nullPointMode\": \"null\",\n                  \"paceLength\": 10,\n                  \"percentage\": false,\n                  \"pointradius\": 5,\n                  \"points\": false,\n                  \"renderer\": \"flot\",\n                  \"repeat\": null,\n                  \"seriesOverrides\": [\n\n                  ],\n                  \"spaceLength\": 10,\n                  \"span\": 24,\n                  \"stack\": false,\n                  \"steppedLine\": false,\n                  \"targets\": [\n                      {\n                          \"expr\": \"sort_desc(sum(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 1,\n                          \"legendFormat\": \"{{ workload }}\",\n                          \"refId\": \"A\",\n                          \"step\": 10\n                      }\n                  ],\n                  \"thresholds\": [\n\n                  ],\n                  \"timeFrom\": null,\n                  \"timeShift\": null,\n                  \"title\": \"Current Rate of Bytes Transmitted\",\n                  \"tooltip\": {\n                      \"shared\": true,\n                      \"sort\": 2,\n                      \"value_type\": \"individual\"\n                  },\n                  \"type\": \"graph\",\n                  \"xaxis\": {\n                      \"buckets\": null,\n                      \"mode\": \"series\",\n                      \"name\": null,\n                      \"show\": false,\n                      \"values\": [\n                          \"current\"\n                      ]\n                  },\n                  \"yaxes\": [\n                      {\n                          \"format\": \"Bps\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": 0,\n                          \"show\": true\n                      },\n                      {\n                          \"format\": \"Bps\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": 0,\n                          \"show\": true\n                      }\n                  ]\n              },\n              {\n                  \"columns\": [\n                      {\n                          \"text\": \"Time\",\n                          \"value\": \"Time\"\n                      },\n                      {\n                          \"text\": \"Value #A\",\n                          \"value\": \"Value #A\"\n                      },\n                      {\n                          \"text\": \"Value #B\",\n                          \"value\": \"Value #B\"\n                      },\n                      {\n                          \"text\": \"Value #C\",\n                          \"value\": \"Value #C\"\n                      },\n                      {\n                          \"text\": \"Value #D\",\n                          \"value\": \"Value #D\"\n                      },\n                      {\n                          \"text\": \"Value #E\",\n                          \"value\": \"Value #E\"\n                      },\n                      {\n                          \"text\": \"Value #F\",\n                          \"value\": \"Value #F\"\n                      },\n                      {\n                          \"text\": \"Value #G\",\n                          \"value\": \"Value #G\"\n                      },\n                      {\n                          \"text\": \"Value #H\",\n                          \"value\": \"Value #H\"\n                      },\n                      {\n                          \"text\": \"workload\",\n                          \"value\": \"workload\"\n                      }\n                  ],\n                  \"datasource\": \"$datasource\",\n                  \"fill\": 1,\n                  \"fontSize\": \"90%\",\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 10\n                  },\n                  \"id\": 5,\n                  \"lines\": true,\n                  \"linewidth\": 1,\n                  \"links\": [\n\n                  ],\n                  \"minSpan\": 24,\n                  \"nullPointMode\": \"null as zero\",\n                  \"renderer\": \"flot\",\n                  \"scroll\": true,\n                  \"showHeader\": true,\n                  \"sort\": {\n                      \"col\": 0,\n                      \"desc\": false\n                  },\n                  \"spaceLength\": 10,\n                  \"span\": 24,\n                  \"styles\": [\n                      {\n                          \"alias\": \"Time\",\n                          \"colorMode\": null,\n                          \"colors\": [\n\n                          ],\n                          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                          \"decimals\": 2,\n                          \"link\": false,\n                          \"linkTooltip\": \"Drill down\",\n                          \"linkUrl\": \"\",\n                          \"pattern\": \"Time\",\n                          \"thresholds\": [\n\n                          ],\n                          \"type\": \"hidden\",\n                          \"unit\": \"short\"\n                      },\n                      {\n                          \"alias\": \"Current Bandwidth Received\",\n                          \"colorMode\": null,\n                          \"colors\": [\n\n                          ],\n                          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                          \"decimals\": 2,\n                          \"link\": false,\n                          \"linkTooltip\": \"Drill down\",\n                          \"linkUrl\": \"\",\n                          \"pattern\": \"Value #A\",\n                          \"thresholds\": [\n\n                          ],\n                          \"type\": \"number\",\n                          \"unit\": \"Bps\"\n                      },\n                      {\n                          \"alias\": \"Current Bandwidth Transmitted\",\n                          \"colorMode\": null,\n                          \"colors\": [\n\n                          ],\n                          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                          \"decimals\": 2,\n                          \"link\": false,\n                          \"linkTooltip\": \"Drill down\",\n                          \"linkUrl\": \"\",\n                          \"pattern\": \"Value #B\",\n                          \"thresholds\": [\n\n                          ],\n                          \"type\": \"number\",\n                          \"unit\": \"Bps\"\n                      },\n                      {\n                          \"alias\": \"Average Bandwidth Received\",\n                          \"colorMode\": null,\n                          \"colors\": [\n\n                          ],\n                          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                          \"decimals\": 2,\n                          \"link\": false,\n                          \"linkTooltip\": \"Drill down\",\n                          \"linkUrl\": \"\",\n                          \"pattern\": \"Value #C\",\n                          \"thresholds\": [\n\n                          ],\n                          \"type\": \"number\",\n                          \"unit\": \"Bps\"\n                      },\n                      {\n                          \"alias\": \"Average Bandwidth Transmitted\",\n                          \"colorMode\": null,\n                          \"colors\": [\n\n                          ],\n                          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                          \"decimals\": 2,\n                          \"link\": false,\n                          \"linkTooltip\": \"Drill down\",\n                          \"linkUrl\": \"\",\n                          \"pattern\": \"Value #D\",\n                          \"thresholds\": [\n\n                          ],\n                          \"type\": \"number\",\n                          \"unit\": \"Bps\"\n                      },\n                      {\n                          \"alias\": \"Rate of Received Packets\",\n                          \"colorMode\": null,\n                          \"colors\": [\n\n                          ],\n                          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                          \"decimals\": 2,\n                          \"link\": false,\n                          \"linkTooltip\": \"Drill down\",\n                          \"linkUrl\": \"\",\n                          \"pattern\": \"Value #E\",\n                          \"thresholds\": [\n\n                          ],\n                          \"type\": \"number\",\n                          \"unit\": \"pps\"\n                      },\n                      {\n                          \"alias\": \"Rate of Transmitted Packets\",\n                          \"colorMode\": null,\n                          \"colors\": [\n\n                          ],\n                          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                          \"decimals\": 2,\n                          \"link\": false,\n                          \"linkTooltip\": \"Drill down\",\n                          \"linkUrl\": \"\",\n                          \"pattern\": \"Value #F\",\n                          \"thresholds\": [\n\n                          ],\n                          \"type\": \"number\",\n                          \"unit\": \"pps\"\n                      },\n                      {\n                          \"alias\": \"Rate of Received Packets Dropped\",\n                          \"colorMode\": null,\n                          \"colors\": [\n\n                          ],\n                          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                          \"decimals\": 2,\n                          \"link\": false,\n                          \"linkTooltip\": \"Drill down\",\n                          \"linkUrl\": \"\",\n                          \"pattern\": \"Value #G\",\n                          \"thresholds\": [\n\n                          ],\n                          \"type\": \"number\",\n                          \"unit\": \"pps\"\n                      },\n                      {\n                          \"alias\": \"Rate of Transmitted Packets Dropped\",\n                          \"colorMode\": null,\n                          \"colors\": [\n\n                          ],\n                          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                          \"decimals\": 2,\n                          \"link\": false,\n                          \"linkTooltip\": \"Drill down\",\n                          \"linkUrl\": \"\",\n                          \"pattern\": \"Value #H\",\n                          \"thresholds\": [\n\n                          ],\n                          \"type\": \"number\",\n                          \"unit\": \"pps\"\n                      },\n                      {\n                          \"alias\": \"Workload\",\n                          \"colorMode\": null,\n                          \"colors\": [\n\n                          ],\n                          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                          \"decimals\": 2,\n                          \"link\": true,\n                          \"linkTooltip\": \"Drill down\",\n                          \"linkUrl\": \"d/728bf77cc1166d2f3133bf25846876cc/kubernetes-networking-workload?orgId=1&refresh=30s&var-namespace=$namespace&var-type=$type&var-workload=$__cell\",\n                          \"pattern\": \"workload\",\n                          \"thresholds\": [\n\n                          ],\n                          \"type\": \"number\",\n                          \"unit\": \"short\"\n                      }\n                  ],\n                  \"targets\": [\n                      {\n                          \"expr\": \"sort_desc(sum(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true,\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"\",\n                          \"refId\": \"A\",\n                          \"step\": 10\n                      },\n                      {\n                          \"expr\": \"sort_desc(sum(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true,\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"\",\n                          \"refId\": \"B\",\n                          \"step\": 10\n                      },\n                      {\n                          \"expr\": \"sort_desc(avg(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true,\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"\",\n                          \"refId\": \"C\",\n                          \"step\": 10\n                      },\n                      {\n                          \"expr\": \"sort_desc(avg(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true,\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"\",\n                          \"refId\": \"D\",\n                          \"step\": 10\n                      },\n                      {\n                          \"expr\": \"sort_desc(sum(irate(container_network_receive_packets_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true,\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"\",\n                          \"refId\": \"E\",\n                          \"step\": 10\n                      },\n                      {\n                          \"expr\": \"sort_desc(sum(irate(container_network_transmit_packets_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true,\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"\",\n                          \"refId\": \"F\",\n                          \"step\": 10\n                      },\n                      {\n                          \"expr\": \"sort_desc(sum(irate(container_network_receive_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true,\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"\",\n                          \"refId\": \"G\",\n                          \"step\": 10\n                      },\n                      {\n                          \"expr\": \"sort_desc(sum(irate(container_network_transmit_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                          \"format\": \"table\",\n                          \"instant\": true,\n                          \"intervalFactor\": 2,\n                          \"legendFormat\": \"\",\n                          \"refId\": \"H\",\n                          \"step\": 10\n                      }\n                  ],\n                  \"timeFrom\": null,\n                  \"timeShift\": null,\n                  \"title\": \"Current Status\",\n                  \"type\": \"table\"\n              },\n              {\n                  \"collapse\": true,\n                  \"collapsed\": true,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 19\n                  },\n                  \"id\": 6,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": true,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 2,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n                              \"h\": 9,\n                              \"w\": 12,\n                              \"x\": 0,\n                              \"y\": 20\n                          },\n                          \"id\": 7,\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": true,\n                              \"hideEmpty\": true,\n                              \"hideZero\": true,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"sort\": \"current\",\n                              \"sortDesc\": true,\n                              \"total\": false,\n                              \"values\": true\n                          },\n                          \"lines\": false,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"minSpan\": 24,\n                          \"nullPointMode\": \"null\",\n                          \"paceLength\": 10,\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 24,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sort_desc(avg(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 1,\n                                  \"legendFormat\": \"{{ workload }}\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Average Rate of Bytes Received\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"series\",\n                              \"name\": null,\n                              \"show\": false,\n                              \"values\": [\n                                  \"current\"\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"Bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"Bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": true,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 2,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n                              \"h\": 9,\n                              \"w\": 12,\n                              \"x\": 12,\n                              \"y\": 20\n                          },\n                          \"id\": 8,\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": true,\n                              \"hideEmpty\": true,\n                              \"hideZero\": true,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"sort\": \"current\",\n                              \"sortDesc\": true,\n                              \"total\": false,\n                              \"values\": true\n                          },\n                          \"lines\": false,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"minSpan\": 24,\n                          \"nullPointMode\": \"null\",\n                          \"paceLength\": 10,\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 24,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sort_desc(avg(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 1,\n                                  \"legendFormat\": \"{{ workload }}\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Average Rate of Bytes Transmitted\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"series\",\n                              \"name\": null,\n                              \"show\": false,\n                              \"values\": [\n                                  \"current\"\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"Bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"Bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Average Bandwidth\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 29\n                  },\n                  \"id\": 9,\n                  \"panels\": [\n\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Bandwidth HIstory\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"aliasColors\": {\n\n                  },\n                  \"bars\": false,\n                  \"dashLength\": 10,\n                  \"dashes\": false,\n                  \"datasource\": \"$datasource\",\n                  \"fill\": 2,\n                  \"fillGradient\": 0,\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 38\n                  },\n                  \"id\": 10,\n                  \"legend\": {\n                      \"alignAsTable\": false,\n                      \"avg\": false,\n                      \"current\": false,\n                      \"hideEmpty\": true,\n                      \"hideZero\": true,\n                      \"max\": false,\n                      \"min\": false,\n                      \"rightSide\": false,\n                      \"show\": true,\n                      \"sideWidth\": null,\n                      \"total\": false,\n                      \"values\": false\n                  },\n                  \"lines\": true,\n                  \"linewidth\": 2,\n                  \"links\": [\n\n                  ],\n                  \"minSpan\": 12,\n                  \"nullPointMode\": \"connected\",\n                  \"paceLength\": 10,\n                  \"percentage\": false,\n                  \"pointradius\": 5,\n                  \"points\": false,\n                  \"renderer\": \"flot\",\n                  \"repeat\": null,\n                  \"seriesOverrides\": [\n\n                  ],\n                  \"spaceLength\": 10,\n                  \"span\": 12,\n                  \"stack\": true,\n                  \"steppedLine\": false,\n                  \"targets\": [\n                      {\n                          \"expr\": \"sort_desc(sum(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 1,\n                          \"legendFormat\": \"{{workload}}\",\n                          \"refId\": \"A\",\n                          \"step\": 10\n                      }\n                  ],\n                  \"thresholds\": [\n\n                  ],\n                  \"timeFrom\": null,\n                  \"timeShift\": null,\n                  \"title\": \"Receive Bandwidth\",\n                  \"tooltip\": {\n                      \"shared\": true,\n                      \"sort\": 2,\n                      \"value_type\": \"individual\"\n                  },\n                  \"type\": \"graph\",\n                  \"xaxis\": {\n                      \"buckets\": null,\n                      \"mode\": \"time\",\n                      \"name\": null,\n                      \"show\": true,\n                      \"values\": [\n\n                      ]\n                  },\n                  \"yaxes\": [\n                      {\n                          \"format\": \"Bps\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": 0,\n                          \"show\": true\n                      },\n                      {\n                          \"format\": \"Bps\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": 0,\n                          \"show\": true\n                      }\n                  ]\n              },\n              {\n                  \"aliasColors\": {\n\n                  },\n                  \"bars\": false,\n                  \"dashLength\": 10,\n                  \"dashes\": false,\n                  \"datasource\": \"$datasource\",\n                  \"fill\": 2,\n                  \"fillGradient\": 0,\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 38\n                  },\n                  \"id\": 11,\n                  \"legend\": {\n                      \"alignAsTable\": false,\n                      \"avg\": false,\n                      \"current\": false,\n                      \"hideEmpty\": true,\n                      \"hideZero\": true,\n                      \"max\": false,\n                      \"min\": false,\n                      \"rightSide\": false,\n                      \"show\": true,\n                      \"sideWidth\": null,\n                      \"total\": false,\n                      \"values\": false\n                  },\n                  \"lines\": true,\n                  \"linewidth\": 2,\n                  \"links\": [\n\n                  ],\n                  \"minSpan\": 12,\n                  \"nullPointMode\": \"connected\",\n                  \"paceLength\": 10,\n                  \"percentage\": false,\n                  \"pointradius\": 5,\n                  \"points\": false,\n                  \"renderer\": \"flot\",\n                  \"repeat\": null,\n                  \"seriesOverrides\": [\n\n                  ],\n                  \"spaceLength\": 10,\n                  \"span\": 12,\n                  \"stack\": true,\n                  \"steppedLine\": false,\n                  \"targets\": [\n                      {\n                          \"expr\": \"sort_desc(sum(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 1,\n                          \"legendFormat\": \"{{workload}}\",\n                          \"refId\": \"A\",\n                          \"step\": 10\n                      }\n                  ],\n                  \"thresholds\": [\n\n                  ],\n                  \"timeFrom\": null,\n                  \"timeShift\": null,\n                  \"title\": \"Transmit Bandwidth\",\n                  \"tooltip\": {\n                      \"shared\": true,\n                      \"sort\": 2,\n                      \"value_type\": \"individual\"\n                  },\n                  \"type\": \"graph\",\n                  \"xaxis\": {\n                      \"buckets\": null,\n                      \"mode\": \"time\",\n                      \"name\": null,\n                      \"show\": true,\n                      \"values\": [\n\n                      ]\n                  },\n                  \"yaxes\": [\n                      {\n                          \"format\": \"Bps\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": 0,\n                          \"show\": true\n                      },\n                      {\n                          \"format\": \"Bps\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": 0,\n                          \"show\": true\n                      }\n                  ]\n              },\n              {\n                  \"collapse\": true,\n                  \"collapsed\": true,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 39\n                  },\n                  \"id\": 12,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 2,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n                              \"h\": 9,\n                              \"w\": 12,\n                              \"x\": 0,\n                              \"y\": 40\n                          },\n                          \"id\": 13,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"hideEmpty\": true,\n                              \"hideZero\": true,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 2,\n                          \"links\": [\n\n                          ],\n                          \"minSpan\": 12,\n                          \"nullPointMode\": \"connected\",\n                          \"paceLength\": 10,\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sort_desc(sum(irate(container_network_receive_packets_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 1,\n                                  \"legendFormat\": \"{{workload}}\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Rate of Received Packets\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 2,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n                              \"h\": 9,\n                              \"w\": 12,\n                              \"x\": 12,\n                              \"y\": 40\n                          },\n                          \"id\": 14,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"hideEmpty\": true,\n                              \"hideZero\": true,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 2,\n                          \"links\": [\n\n                          ],\n                          \"minSpan\": 12,\n                          \"nullPointMode\": \"connected\",\n                          \"paceLength\": 10,\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sort_desc(sum(irate(container_network_transmit_packets_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 1,\n                                  \"legendFormat\": \"{{workload}}\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Rate of Transmitted Packets\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Packets\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"collapse\": true,\n                  \"collapsed\": true,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 40\n                  },\n                  \"id\": 15,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 2,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n                              \"h\": 9,\n                              \"w\": 12,\n                              \"x\": 0,\n                              \"y\": 41\n                          },\n                          \"id\": 16,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"hideEmpty\": true,\n                              \"hideZero\": true,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 2,\n                          \"links\": [\n\n                          ],\n                          \"minSpan\": 12,\n                          \"nullPointMode\": \"connected\",\n                          \"paceLength\": 10,\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sort_desc(sum(irate(container_network_receive_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 1,\n                                  \"legendFormat\": \"{{workload}}\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Rate of Received Packets Dropped\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 2,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n                              \"h\": 9,\n                              \"w\": 12,\n                              \"x\": 12,\n                              \"y\": 41\n                          },\n                          \"id\": 17,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"hideEmpty\": true,\n                              \"hideZero\": true,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 2,\n                          \"links\": [\n\n                          ],\n                          \"minSpan\": 12,\n                          \"nullPointMode\": \"connected\",\n                          \"paceLength\": 10,\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sort_desc(sum(irate(container_network_transmit_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\", workload_type=\\\"$type\\\"}) by (workload))\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 1,\n                                  \"legendFormat\": \"{{workload}}\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Rate of Transmitted Packets Dropped\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Errors\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              }\n          ],\n          \"refresh\": \"10s\",\n          \"rows\": [\n\n          ],\n          \"schemaVersion\": 18,\n          \"style\": \"dark\",\n          \"tags\": [\n              \"kubernetes-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data Source\",\n                      \"name\": \"datasource\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"prometheus\",\n                      \"refresh\": 1,\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"allValue\": null,\n                      \"current\": {\n\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": false,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"cluster\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(up{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\"}, cluster)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"sort\": 0,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  },\n                  {\n                      \"allValue\": null,\n                      \"auto\": false,\n                      \"auto_count\": 30,\n                      \"auto_min\": \"10s\",\n                      \"current\": {\n                          \"text\": \"kube-system\",\n                          \"value\": \"kube-system\"\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"definition\": \"label_values(container_network_receive_packets_total{cluster=\\\"$cluster\\\"}, namespace)\",\n                      \"hide\": 0,\n                      \"includeAll\": false,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"namespace\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(container_network_receive_packets_total{cluster=\\\"$cluster\\\"}, namespace)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"skipUrlSync\": false,\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  },\n                  {\n                      \"allValue\": null,\n                      \"auto\": false,\n                      \"auto_count\": 30,\n                      \"auto_min\": \"10s\",\n                      \"current\": {\n                          \"text\": \"deployment\",\n                          \"value\": \"deployment\"\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"definition\": \"label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\"}, workload_type)\",\n                      \"hide\": 0,\n                      \"includeAll\": false,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"type\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=\\\"$namespace\\\", workload=~\\\".+\\\"}, workload_type)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"skipUrlSync\": false,\n                      \"sort\": 0,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  },\n                  {\n                      \"allValue\": null,\n                      \"auto\": false,\n                      \"auto_count\": 30,\n                      \"auto_min\": \"10s\",\n                      \"current\": {\n                          \"text\": \"5m\",\n                          \"value\": \"5m\"\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": false,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"resolution\",\n                      \"options\": [\n                          {\n                              \"selected\": false,\n                              \"text\": \"30s\",\n                              \"value\": \"30s\"\n                          },\n                          {\n                              \"selected\": true,\n                              \"text\": \"5m\",\n                              \"value\": \"5m\"\n                          },\n                          {\n                              \"selected\": false,\n                              \"text\": \"1h\",\n                              \"value\": \"1h\"\n                          }\n                      ],\n                      \"query\": \"30s,5m,1h\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"skipUrlSync\": false,\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"interval\",\n                      \"useTags\": false\n                  },\n                  {\n                      \"allValue\": null,\n                      \"auto\": false,\n                      \"auto_count\": 30,\n                      \"auto_min\": \"10s\",\n                      \"current\": {\n                          \"text\": \"5m\",\n                          \"value\": \"5m\"\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 2,\n                      \"includeAll\": false,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"interval\",\n                      \"options\": [\n                          {\n                              \"selected\": true,\n                              \"text\": \"4h\",\n                              \"value\": \"4h\"\n                          }\n                      ],\n                      \"query\": \"4h\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"skipUrlSync\": false,\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"interval\",\n                      \"useTags\": false\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timepicker\": {\n              \"refresh_intervals\": [\n                  \"5s\",\n                  \"10s\",\n                  \"30s\",\n                  \"1m\",\n                  \"5m\",\n                  \"15m\",\n                  \"30m\",\n                  \"1h\",\n                  \"2h\",\n                  \"1d\"\n              ],\n              \"time_options\": [\n                  \"5m\",\n                  \"15m\",\n                  \"1h\",\n                  \"6h\",\n                  \"12h\",\n                  \"24h\",\n                  \"2d\",\n                  \"7d\",\n                  \"30d\"\n              ]\n          },\n          \"timezone\": \"UTC\",\n          \"title\": \"Kubernetes / Networking / Namespace (Workload)\",\n          \"uid\": \"bbb2a765a623ae38130206c7d94a160f\",\n          \"version\": 0\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 9.5.3\n    name: grafana-dashboard-namespace-by-workload\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    node-cluster-rsrc-use.json: |-\n      {\n          \"__inputs\": [\n\n          ],\n          \"__requires\": [\n\n          ],\n          \"annotations\": {\n              \"list\": [\n\n              ]\n          },\n          \"editable\": false,\n          \"gnetId\": null,\n          \"graphTooltip\": 1,\n          \"hideControls\": false,\n          \"id\": null,\n          \"links\": [\n\n          ],\n          \"refresh\": \"30s\",\n          \"rows\": [\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 2,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": false,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"((\\n  instance:node_cpu_utilisation:rate5m{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"}\\n  *\\n  instance:node_num_cpu:sum{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"}\\n) != 0 )\\n/ scalar(sum(instance:node_num_cpu:sum{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"}))\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{ instance }}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"CPU Utilisation\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"percentunit\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"percentunit\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 3,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": false,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"(\\n  instance:node_load1_per_cpu:ratio{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"}\\n  / scalar(count(instance:node_load1_per_cpu:ratio{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"}))\\n)  != 0\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{instance}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"CPU Saturation (Load1 per CPU)\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"percentunit\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"percentunit\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"CPU\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 4,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": false,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"(\\n  instance:node_memory_utilisation:ratio{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"}\\n  / scalar(count(instance:node_memory_utilisation:ratio{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"}))\\n) != 0\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{instance}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Memory Utilisation\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"percentunit\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"percentunit\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 5,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": false,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"instance:node_vmstat_pgmajfault:rate5m{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"}\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{instance}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Memory Saturation (Major Page Faults)\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"rds\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"rds\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Memory\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 6,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": false,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n                              {\n                                  \"alias\": \"/Receive/\",\n                                  \"stack\": \"A\"\n                              },\n                              {\n                                  \"alias\": \"/Transmit/\",\n                                  \"stack\": \"B\",\n                                  \"transform\": \"negative-Y\"\n                              }\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"instance:node_network_receive_bytes_excluding_lo:rate5m{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"} != 0\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{instance}} Receive\",\n                                  \"refId\": \"A\"\n                              },\n                              {\n                                  \"expr\": \"instance:node_network_transmit_bytes_excluding_lo:rate5m{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"} != 0\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{instance}} Transmit\",\n                                  \"refId\": \"B\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Network Utilisation (Bytes Receive/Transmit)\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"Bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"Bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 7,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": false,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n                              {\n                                  \"alias\": \"/ Receive/\",\n                                  \"stack\": \"A\"\n                              },\n                              {\n                                  \"alias\": \"/ Transmit/\",\n                                  \"stack\": \"B\",\n                                  \"transform\": \"negative-Y\"\n                              }\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"instance:node_network_receive_drop_excluding_lo:rate5m{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"} != 0\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{instance}} Receive\",\n                                  \"refId\": \"A\"\n                              },\n                              {\n                                  \"expr\": \"instance:node_network_transmit_drop_excluding_lo:rate5m{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"} != 0\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{instance}} Transmit\",\n                                  \"refId\": \"B\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Network Saturation (Drops Receive/Transmit)\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"Bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"Bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Network\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 8,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": false,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"(\\n  instance_device:node_disk_io_time_seconds:rate5m{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"}\\n  / scalar(count(instance_device:node_disk_io_time_seconds:rate5m{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"}))\\n) != 0\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{instance}} {{device}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Disk IO Utilisation\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"percentunit\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"percentunit\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 9,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": false,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"(\\n  instance_device:node_disk_io_time_weighted_seconds:rate5m{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"}\\n  / scalar(count(instance_device:node_disk_io_time_weighted_seconds:rate5m{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"}))\\n) != 0\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{instance}} {{device}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Disk IO Saturation\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"percentunit\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"percentunit\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Disk IO\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 10,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": false,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum without (device) (\\n  max without (fstype, mountpoint) ((\\n    node_filesystem_size_bytes{job=\\\"node-exporter\\\", fstype!=\\\"\\\", mountpoint!=\\\"\\\", cluster=\\\"$cluster\\\"}\\n    -\\n    node_filesystem_avail_bytes{job=\\\"node-exporter\\\", fstype!=\\\"\\\", mountpoint!=\\\"\\\", cluster=\\\"$cluster\\\"}\\n  ) != 0)\\n)\\n/ scalar(sum(max without (fstype, mountpoint) (node_filesystem_size_bytes{job=\\\"node-exporter\\\", fstype!=\\\"\\\", mountpoint!=\\\"\\\", cluster=\\\"$cluster\\\"})))\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{instance}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Disk Space Utilisation\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"percentunit\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"percentunit\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Disk Space\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              }\n          ],\n          \"schemaVersion\": 14,\n          \"style\": \"dark\",\n          \"tags\": [\n              \"node-exporter-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data Source\",\n                      \"name\": \"datasource\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"prometheus\",\n                      \"refresh\": 1,\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"allValue\": null,\n                      \"current\": {\n                          \"text\": \"\",\n                          \"value\": \"\"\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 2,\n                      \"includeAll\": false,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"cluster\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(node_time_seconds, cluster)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timepicker\": {\n              \"refresh_intervals\": [\n                  \"5s\",\n                  \"10s\",\n                  \"30s\",\n                  \"1m\",\n                  \"5m\",\n                  \"15m\",\n                  \"30m\",\n                  \"1h\",\n                  \"2h\",\n                  \"1d\"\n              ],\n              \"time_options\": [\n                  \"5m\",\n                  \"15m\",\n                  \"1h\",\n                  \"6h\",\n                  \"12h\",\n                  \"24h\",\n                  \"2d\",\n                  \"7d\",\n                  \"30d\"\n              ]\n          },\n          \"timezone\": \"utc\",\n          \"title\": \"Node Exporter / USE Method / Cluster\",\n          \"version\": 0\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 9.5.3\n    name: grafana-dashboard-node-cluster-rsrc-use\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    node-rsrc-use.json: |-\n      {\n          \"__inputs\": [\n\n          ],\n          \"__requires\": [\n\n          ],\n          \"annotations\": {\n              \"list\": [\n\n              ]\n          },\n          \"editable\": false,\n          \"gnetId\": null,\n          \"graphTooltip\": 1,\n          \"hideControls\": false,\n          \"id\": null,\n          \"links\": [\n\n          ],\n          \"refresh\": \"30s\",\n          \"rows\": [\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 2,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": false,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"instance:node_cpu_utilisation:rate5m{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=\\\"$cluster\\\"} != 0\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"Utilisation\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"CPU Utilisation\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"percentunit\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"percentunit\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 3,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": false,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"instance:node_load1_per_cpu:ratio{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=\\\"$cluster\\\"} != 0\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"Saturation\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"CPU Saturation (Load1 per CPU)\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"percentunit\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"percentunit\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"CPU\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 4,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": false,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"instance:node_memory_utilisation:ratio{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=\\\"$cluster\\\"} != 0\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"Utilisation\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Memory Utilisation\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"percentunit\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"percentunit\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 5,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": false,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"instance:node_vmstat_pgmajfault:rate5m{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=\\\"$cluster\\\"} != 0\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"Major page Faults\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Memory Saturation (Major Page Faults)\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"rds\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"rds\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Memory\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 6,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": false,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n                              {\n                                  \"alias\": \"/Receive/\",\n                                  \"stack\": \"A\"\n                              },\n                              {\n                                  \"alias\": \"/Transmit/\",\n                                  \"stack\": \"B\",\n                                  \"transform\": \"negative-Y\"\n                              }\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"instance:node_network_receive_bytes_excluding_lo:rate5m{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=\\\"$cluster\\\"} != 0\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"Receive\",\n                                  \"refId\": \"A\"\n                              },\n                              {\n                                  \"expr\": \"instance:node_network_transmit_bytes_excluding_lo:rate5m{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=\\\"$cluster\\\"} != 0\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"Transmit\",\n                                  \"refId\": \"B\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Network Utilisation (Bytes Receive/Transmit)\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"Bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"Bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 7,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": false,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n                              {\n                                  \"alias\": \"/ Receive/\",\n                                  \"stack\": \"A\"\n                              },\n                              {\n                                  \"alias\": \"/ Transmit/\",\n                                  \"stack\": \"B\",\n                                  \"transform\": \"negative-Y\"\n                              }\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"instance:node_network_receive_drop_excluding_lo:rate5m{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=\\\"$cluster\\\"} != 0\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"Receive\",\n                                  \"refId\": \"A\"\n                              },\n                              {\n                                  \"expr\": \"instance:node_network_transmit_drop_excluding_lo:rate5m{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=\\\"$cluster\\\"} != 0\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"Transmit\",\n                                  \"refId\": \"B\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Network Saturation (Drops Receive/Transmit)\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"Bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"Bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Network\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 8,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": false,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"instance_device:node_disk_io_time_seconds:rate5m{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=\\\"$cluster\\\"} != 0\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{device}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Disk IO Utilisation\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"percentunit\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"percentunit\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 9,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": false,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"instance_device:node_disk_io_time_weighted_seconds:rate5m{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", cluster=\\\"$cluster\\\"} != 0\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{device}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Disk IO Saturation\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"percentunit\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"percentunit\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Disk IO\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 10,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": false,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sort_desc(1 -\\n  (\\n   max without (mountpoint, fstype) (node_filesystem_avail_bytes{job=\\\"node-exporter\\\", fstype!=\\\"\\\", instance=\\\"$instance\\\", cluster=\\\"$cluster\\\"})\\n   /\\n   max without (mountpoint, fstype) (node_filesystem_size_bytes{job=\\\"node-exporter\\\", fstype!=\\\"\\\", instance=\\\"$instance\\\", cluster=\\\"$cluster\\\"})\\n  ) != 0\\n)\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{device}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Disk Space Utilisation\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"percentunit\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"percentunit\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Disk Space\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              }\n          ],\n          \"schemaVersion\": 14,\n          \"style\": \"dark\",\n          \"tags\": [\n              \"node-exporter-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data Source\",\n                      \"name\": \"datasource\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"prometheus\",\n                      \"refresh\": 1,\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"allValue\": null,\n                      \"current\": {\n                          \"text\": \"\",\n                          \"value\": \"\"\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 2,\n                      \"includeAll\": false,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"cluster\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(node_time_seconds, cluster)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  },\n                  {\n                      \"allValue\": null,\n                      \"current\": {\n\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": false,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"instance\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(node_exporter_build_info{job=\\\"node-exporter\\\", cluster=\\\"$cluster\\\"}, instance)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timepicker\": {\n              \"refresh_intervals\": [\n                  \"5s\",\n                  \"10s\",\n                  \"30s\",\n                  \"1m\",\n                  \"5m\",\n                  \"15m\",\n                  \"30m\",\n                  \"1h\",\n                  \"2h\",\n                  \"1d\"\n              ],\n              \"time_options\": [\n                  \"5m\",\n                  \"15m\",\n                  \"1h\",\n                  \"6h\",\n                  \"12h\",\n                  \"24h\",\n                  \"2d\",\n                  \"7d\",\n                  \"30d\"\n              ]\n          },\n          \"timezone\": \"utc\",\n          \"title\": \"Node Exporter / USE Method / Node\",\n          \"version\": 0\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 9.5.3\n    name: grafana-dashboard-node-rsrc-use\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    nodes-darwin.json: |-\n      {\n          \"__inputs\": [\n\n          ],\n          \"__requires\": [\n\n          ],\n          \"annotations\": {\n              \"list\": [\n\n              ]\n          },\n          \"editable\": false,\n          \"gnetId\": null,\n          \"graphTooltip\": 1,\n          \"hideControls\": false,\n          \"id\": null,\n          \"links\": [\n\n          ],\n          \"refresh\": \"30s\",\n          \"rows\": [\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 2,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"(\\n  (1 - sum without (mode) (rate(node_cpu_seconds_total{job=\\\"node-exporter\\\", mode=~\\\"idle|iowait|steal\\\", instance=\\\"$instance\\\"}[$__rate_interval])))\\n/ ignoring(cpu) group_left\\n  count without (cpu, mode) (node_cpu_seconds_total{job=\\\"node-exporter\\\", mode=\\\"idle\\\", instance=\\\"$instance\\\"})\\n)\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 5,\n                                  \"legendFormat\": \"{{cpu}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"CPU Usage\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"percentunit\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": 1,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"percentunit\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": 1,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 0,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 3,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"node_load1{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"1m load average\",\n                                  \"refId\": \"A\"\n                              },\n                              {\n                                  \"expr\": \"node_load5{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"5m load average\",\n                                  \"refId\": \"B\"\n                              },\n                              {\n                                  \"expr\": \"node_load15{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"15m load average\",\n                                  \"refId\": \"C\"\n                              },\n                              {\n                                  \"expr\": \"count(node_cpu_seconds_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", mode=\\\"idle\\\"})\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"logical cores\",\n                                  \"refId\": \"D\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Load Average\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"CPU\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 4,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 9,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"node_memory_total_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"Physical Memory\",\n                                  \"refId\": \"A\"\n                              },\n                              {\n                                  \"expr\": \"(\\n    node_memory_internal_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"} -\\n    node_memory_purgeable_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"} +\\n    node_memory_wired_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"} +\\n    node_memory_compressed_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\\n)\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"Memory Used\",\n                                  \"refId\": \"B\"\n                              },\n                              {\n                                  \"expr\": \"(\\n    node_memory_internal_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"} -\\n    node_memory_purgeable_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\\n)\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"App Memory\",\n                                  \"refId\": \"C\"\n                              },\n                              {\n                                  \"expr\": \"node_memory_wired_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"Wired Memory\",\n                                  \"refId\": \"D\"\n                              },\n                              {\n                                  \"expr\": \"node_memory_compressed_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"Compressed\",\n                                  \"refId\": \"E\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Memory Usage\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"bytes\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"bytes\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"datasource\": \"$datasource\",\n                          \"fieldConfig\": {\n                              \"defaults\": {\n                                  \"max\": 100,\n                                  \"min\": 0,\n                                  \"thresholds\": {\n                                      \"mode\": \"absolute\",\n                                      \"steps\": [\n                                          {\n                                              \"color\": \"rgba(50, 172, 45, 0.97)\"\n                                          },\n                                          {\n                                              \"color\": \"rgba(237, 129, 40, 0.89)\",\n                                              \"value\": 80\n                                          },\n                                          {\n                                              \"color\": \"rgba(245, 54, 54, 0.9)\",\n                                              \"value\": 90\n                                          }\n                                      ]\n                                  },\n                                  \"unit\": \"percent\"\n                              }\n                          },\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 5,\n                          \"span\": 3,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"(\\n    (\\n      avg(node_memory_internal_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}) -\\n      avg(node_memory_purgeable_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}) +\\n      avg(node_memory_wired_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}) +\\n      avg(node_memory_compressed_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"})\\n    ) /\\n    avg(node_memory_total_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"})\\n)\\n*\\n100\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\"\n                              }\n                          ],\n                          \"title\": \"Memory Usage\",\n                          \"transparent\": false,\n                          \"type\": \"gauge\"\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Memory\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 0,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 6,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n                              {\n                                  \"alias\": \"/ read| written/\",\n                                  \"yaxis\": 1\n                              },\n                              {\n                                  \"alias\": \"/ io time/\",\n                                  \"yaxis\": 2\n                              }\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"rate(node_disk_read_bytes_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\"}[$__rate_interval])\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 1,\n                                  \"legendFormat\": \"{{device}} read\",\n                                  \"refId\": \"A\"\n                              },\n                              {\n                                  \"expr\": \"rate(node_disk_written_bytes_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\"}[$__rate_interval])\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 1,\n                                  \"legendFormat\": \"{{device}} written\",\n                                  \"refId\": \"B\"\n                              },\n                              {\n                                  \"expr\": \"rate(node_disk_io_time_seconds_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\"}[$__rate_interval])\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 1,\n                                  \"legendFormat\": \"{{device}} io time\",\n                                  \"refId\": \"C\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Disk I/O\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"Bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"percentunit\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"datasource\": \"$datasource\",\n                          \"fieldConfig\": {\n                              \"defaults\": {\n                                  \"custom\": {\n\n                                  },\n                                  \"thresholds\": {\n                                      \"mode\": \"absolute\",\n                                      \"steps\": [\n                                          {\n                                              \"color\": \"green\"\n                                          },\n                                          {\n                                              \"color\": \"yellow\",\n                                              \"value\": 0.8\n                                          },\n                                          {\n                                              \"color\": \"red\",\n                                              \"value\": 0.9\n                                          }\n                                      ]\n                                  },\n                                  \"unit\": \"decbytes\"\n                              },\n                              \"overrides\": [\n                                  {\n                                      \"matcher\": {\n                                          \"id\": \"byName\",\n                                          \"options\": \"Mounted on\"\n                                      },\n                                      \"properties\": [\n                                          {\n                                              \"id\": \"custom.width\",\n                                              \"value\": 260\n                                          }\n                                      ]\n                                  },\n                                  {\n                                      \"matcher\": {\n                                          \"id\": \"byName\",\n                                          \"options\": \"Size\"\n                                      },\n                                      \"properties\": [\n                                          {\n                                              \"id\": \"custom.width\",\n                                              \"value\": 93\n                                          }\n                                      ]\n                                  },\n                                  {\n                                      \"matcher\": {\n                                          \"id\": \"byName\",\n                                          \"options\": \"Used\"\n                                      },\n                                      \"properties\": [\n                                          {\n                                              \"id\": \"custom.width\",\n                                              \"value\": 72\n                                          }\n                                      ]\n                                  },\n                                  {\n                                      \"matcher\": {\n                                          \"id\": \"byName\",\n                                          \"options\": \"Available\"\n                                      },\n                                      \"properties\": [\n                                          {\n                                              \"id\": \"custom.width\",\n                                              \"value\": 88\n                                          }\n                                      ]\n                                  },\n                                  {\n                                      \"matcher\": {\n                                          \"id\": \"byName\",\n                                          \"options\": \"Used, %\"\n                                      },\n                                      \"properties\": [\n                                          {\n                                              \"id\": \"unit\",\n                                              \"value\": \"percentunit\"\n                                          },\n                                          {\n                                              \"id\": \"custom.displayMode\",\n                                              \"value\": \"gradient-gauge\"\n                                          },\n                                          {\n                                              \"id\": \"max\",\n                                              \"value\": 1\n                                          },\n                                          {\n                                              \"id\": \"min\",\n                                              \"value\": 0\n                                          }\n                                      ]\n                                  }\n                              ]\n                          },\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 7,\n                          \"span\": 6,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"max by (mountpoint) (node_filesystem_size_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", fstype!=\\\"\\\", mountpoint!=\\\"\\\"})\\n\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\"\n                              },\n                              {\n                                  \"expr\": \"max by (mountpoint) (node_filesystem_avail_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", fstype!=\\\"\\\", mountpoint!=\\\"\\\"})\\n\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\"\n                              }\n                          ],\n                          \"title\": \"Disk Space Usage\",\n                          \"transformations\": [\n                              {\n                                  \"id\": \"groupBy\",\n                                  \"options\": {\n                                      \"fields\": {\n                                          \"Value #A\": {\n                                              \"aggregations\": [\n                                                  \"lastNotNull\"\n                                              ],\n                                              \"operation\": \"aggregate\"\n                                          },\n                                          \"Value #B\": {\n                                              \"aggregations\": [\n                                                  \"lastNotNull\"\n                                              ],\n                                              \"operation\": \"aggregate\"\n                                          },\n                                          \"mountpoint\": {\n                                              \"aggregations\": [\n\n                                              ],\n                                              \"operation\": \"groupby\"\n                                          }\n                                      }\n                                  }\n                              },\n                              {\n                                  \"id\": \"merge\",\n                                  \"options\": {\n\n                                  }\n                              },\n                              {\n                                  \"id\": \"calculateField\",\n                                  \"options\": {\n                                      \"alias\": \"Used\",\n                                      \"binary\": {\n                                          \"left\": \"Value #A (lastNotNull)\",\n                                          \"operator\": \"-\",\n                                          \"reducer\": \"sum\",\n                                          \"right\": \"Value #B (lastNotNull)\"\n                                      },\n                                      \"mode\": \"binary\",\n                                      \"reduce\": {\n                                          \"reducer\": \"sum\"\n                                      }\n                                  }\n                              },\n                              {\n                                  \"id\": \"calculateField\",\n                                  \"options\": {\n                                      \"alias\": \"Used, %\",\n                                      \"binary\": {\n                                          \"left\": \"Used\",\n                                          \"operator\": \"/\",\n                                          \"reducer\": \"sum\",\n                                          \"right\": \"Value #A (lastNotNull)\"\n                                      },\n                                      \"mode\": \"binary\",\n                                      \"reduce\": {\n                                          \"reducer\": \"sum\"\n                                      }\n                                  }\n                              },\n                              {\n                                  \"id\": \"organize\",\n                                  \"options\": {\n                                      \"excludeByName\": {\n\n                                      },\n                                      \"indexByName\": {\n\n                                      },\n                                      \"renameByName\": {\n                                          \"Value #A (lastNotNull)\": \"Size\",\n                                          \"Value #B (lastNotNull)\": \"Available\",\n                                          \"mountpoint\": \"Mounted on\"\n                                      }\n                                  }\n                              },\n                              {\n                                  \"id\": \"sortBy\",\n                                  \"options\": {\n                                      \"fields\": {\n\n                                      },\n                                      \"sort\": [\n                                          {\n                                              \"field\": \"Mounted on\"\n                                          }\n                                      ]\n                                  }\n                              }\n                          ],\n                          \"transparent\": false,\n                          \"type\": \"table\"\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Disk\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"description\": \"Network received (bits/s)\",\n                          \"fill\": 0,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 8,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"rate(node_network_receive_bytes_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", device!=\\\"lo\\\"}[$__rate_interval]) * 8\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 1,\n                                  \"legendFormat\": \"{{device}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Network Received\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"description\": \"Network transmitted (bits/s)\",\n                          \"fill\": 0,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 9,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"rate(node_network_transmit_bytes_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", device!=\\\"lo\\\"}[$__rate_interval]) * 8\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 1,\n                                  \"legendFormat\": \"{{device}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Network Transmitted\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Network\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              }\n          ],\n          \"schemaVersion\": 14,\n          \"style\": \"dark\",\n          \"tags\": [\n              \"node-exporter-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data Source\",\n                      \"name\": \"datasource\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"prometheus\",\n                      \"refresh\": 1,\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"allValue\": null,\n                      \"current\": {\n\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": false,\n                      \"label\": \"Instance\",\n                      \"multi\": false,\n                      \"name\": \"instance\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(node_uname_info{job=\\\"node-exporter\\\", sysname=\\\"Darwin\\\"}, instance)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"sort\": 0,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timepicker\": {\n              \"refresh_intervals\": [\n                  \"5s\",\n                  \"10s\",\n                  \"30s\",\n                  \"1m\",\n                  \"5m\",\n                  \"15m\",\n                  \"30m\",\n                  \"1h\",\n                  \"2h\",\n                  \"1d\"\n              ],\n              \"time_options\": [\n                  \"5m\",\n                  \"15m\",\n                  \"1h\",\n                  \"6h\",\n                  \"12h\",\n                  \"24h\",\n                  \"2d\",\n                  \"7d\",\n                  \"30d\"\n              ]\n          },\n          \"timezone\": \"utc\",\n          \"title\": \"Node Exporter / MacOS\",\n          \"version\": 0\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 9.5.3\n    name: grafana-dashboard-nodes-darwin\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    nodes.json: |-\n      {\n          \"__inputs\": [\n\n          ],\n          \"__requires\": [\n\n          ],\n          \"annotations\": {\n              \"list\": [\n\n              ]\n          },\n          \"editable\": false,\n          \"gnetId\": null,\n          \"graphTooltip\": 1,\n          \"hideControls\": false,\n          \"id\": null,\n          \"links\": [\n\n          ],\n          \"refresh\": \"30s\",\n          \"rows\": [\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 2,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"(\\n  (1 - sum without (mode) (rate(node_cpu_seconds_total{job=\\\"node-exporter\\\", mode=~\\\"idle|iowait|steal\\\", instance=\\\"$instance\\\"}[$__rate_interval])))\\n/ ignoring(cpu) group_left\\n  count without (cpu, mode) (node_cpu_seconds_total{job=\\\"node-exporter\\\", mode=\\\"idle\\\", instance=\\\"$instance\\\"})\\n)\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 5,\n                                  \"legendFormat\": \"{{cpu}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"CPU Usage\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"percentunit\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": 1,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"percentunit\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": 1,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 0,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 3,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"node_load1{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"1m load average\",\n                                  \"refId\": \"A\"\n                              },\n                              {\n                                  \"expr\": \"node_load5{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"5m load average\",\n                                  \"refId\": \"B\"\n                              },\n                              {\n                                  \"expr\": \"node_load15{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"15m load average\",\n                                  \"refId\": \"C\"\n                              },\n                              {\n                                  \"expr\": \"count(node_cpu_seconds_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", mode=\\\"idle\\\"})\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"logical cores\",\n                                  \"refId\": \"D\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Load Average\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"CPU\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 4,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 9,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"(\\n  node_memory_MemTotal_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\\n-\\n  node_memory_MemFree_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\\n-\\n  node_memory_Buffers_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\\n-\\n  node_memory_Cached_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\\n)\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"memory used\",\n                                  \"refId\": \"A\"\n                              },\n                              {\n                                  \"expr\": \"node_memory_Buffers_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"memory buffers\",\n                                  \"refId\": \"B\"\n                              },\n                              {\n                                  \"expr\": \"node_memory_Cached_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"memory cached\",\n                                  \"refId\": \"C\"\n                              },\n                              {\n                                  \"expr\": \"node_memory_MemFree_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"memory free\",\n                                  \"refId\": \"D\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Memory Usage\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"bytes\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"bytes\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"datasource\": \"$datasource\",\n                          \"fieldConfig\": {\n                              \"defaults\": {\n                                  \"max\": 100,\n                                  \"min\": 0,\n                                  \"thresholds\": {\n                                      \"mode\": \"absolute\",\n                                      \"steps\": [\n                                          {\n                                              \"color\": \"rgba(50, 172, 45, 0.97)\"\n                                          },\n                                          {\n                                              \"color\": \"rgba(237, 129, 40, 0.89)\",\n                                              \"value\": 80\n                                          },\n                                          {\n                                              \"color\": \"rgba(245, 54, 54, 0.9)\",\n                                              \"value\": 90\n                                          }\n                                      ]\n                                  },\n                                  \"unit\": \"percent\"\n                              }\n                          },\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 5,\n                          \"span\": 3,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"100 -\\n(\\n  avg(node_memory_MemAvailable_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"}) /\\n  avg(node_memory_MemTotal_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\"})\\n* 100\\n)\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\"\n                              }\n                          ],\n                          \"title\": \"Memory Usage\",\n                          \"transparent\": false,\n                          \"type\": \"gauge\"\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Memory\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 0,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 6,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n                              {\n                                  \"alias\": \"/ read| written/\",\n                                  \"yaxis\": 1\n                              },\n                              {\n                                  \"alias\": \"/ io time/\",\n                                  \"yaxis\": 2\n                              }\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"rate(node_disk_read_bytes_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\"}[$__rate_interval])\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 1,\n                                  \"legendFormat\": \"{{device}} read\",\n                                  \"refId\": \"A\"\n                              },\n                              {\n                                  \"expr\": \"rate(node_disk_written_bytes_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\"}[$__rate_interval])\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 1,\n                                  \"legendFormat\": \"{{device}} written\",\n                                  \"refId\": \"B\"\n                              },\n                              {\n                                  \"expr\": \"rate(node_disk_io_time_seconds_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", device=~\\\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\\\"}[$__rate_interval])\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 1,\n                                  \"legendFormat\": \"{{device}} io time\",\n                                  \"refId\": \"C\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Disk I/O\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"Bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"percentunit\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"datasource\": \"$datasource\",\n                          \"fieldConfig\": {\n                              \"defaults\": {\n                                  \"custom\": {\n\n                                  },\n                                  \"thresholds\": {\n                                      \"mode\": \"absolute\",\n                                      \"steps\": [\n                                          {\n                                              \"color\": \"green\"\n                                          },\n                                          {\n                                              \"color\": \"yellow\",\n                                              \"value\": 0.8\n                                          },\n                                          {\n                                              \"color\": \"red\",\n                                              \"value\": 0.9\n                                          }\n                                      ]\n                                  },\n                                  \"unit\": \"decbytes\"\n                              },\n                              \"overrides\": [\n                                  {\n                                      \"matcher\": {\n                                          \"id\": \"byName\",\n                                          \"options\": \"Mounted on\"\n                                      },\n                                      \"properties\": [\n                                          {\n                                              \"id\": \"custom.width\",\n                                              \"value\": 260\n                                          }\n                                      ]\n                                  },\n                                  {\n                                      \"matcher\": {\n                                          \"id\": \"byName\",\n                                          \"options\": \"Size\"\n                                      },\n                                      \"properties\": [\n                                          {\n                                              \"id\": \"custom.width\",\n                                              \"value\": 93\n                                          }\n                                      ]\n                                  },\n                                  {\n                                      \"matcher\": {\n                                          \"id\": \"byName\",\n                                          \"options\": \"Used\"\n                                      },\n                                      \"properties\": [\n                                          {\n                                              \"id\": \"custom.width\",\n                                              \"value\": 72\n                                          }\n                                      ]\n                                  },\n                                  {\n                                      \"matcher\": {\n                                          \"id\": \"byName\",\n                                          \"options\": \"Available\"\n                                      },\n                                      \"properties\": [\n                                          {\n                                              \"id\": \"custom.width\",\n                                              \"value\": 88\n                                          }\n                                      ]\n                                  },\n                                  {\n                                      \"matcher\": {\n                                          \"id\": \"byName\",\n                                          \"options\": \"Used, %\"\n                                      },\n                                      \"properties\": [\n                                          {\n                                              \"id\": \"unit\",\n                                              \"value\": \"percentunit\"\n                                          },\n                                          {\n                                              \"id\": \"custom.displayMode\",\n                                              \"value\": \"gradient-gauge\"\n                                          },\n                                          {\n                                              \"id\": \"max\",\n                                              \"value\": 1\n                                          },\n                                          {\n                                              \"id\": \"min\",\n                                              \"value\": 0\n                                          }\n                                      ]\n                                  }\n                              ]\n                          },\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 7,\n                          \"span\": 6,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"max by (mountpoint) (node_filesystem_size_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", fstype!=\\\"\\\", mountpoint!=\\\"\\\"})\\n\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\"\n                              },\n                              {\n                                  \"expr\": \"max by (mountpoint) (node_filesystem_avail_bytes{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", fstype!=\\\"\\\", mountpoint!=\\\"\\\"})\\n\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\"\n                              }\n                          ],\n                          \"title\": \"Disk Space Usage\",\n                          \"transformations\": [\n                              {\n                                  \"id\": \"groupBy\",\n                                  \"options\": {\n                                      \"fields\": {\n                                          \"Value #A\": {\n                                              \"aggregations\": [\n                                                  \"lastNotNull\"\n                                              ],\n                                              \"operation\": \"aggregate\"\n                                          },\n                                          \"Value #B\": {\n                                              \"aggregations\": [\n                                                  \"lastNotNull\"\n                                              ],\n                                              \"operation\": \"aggregate\"\n                                          },\n                                          \"mountpoint\": {\n                                              \"aggregations\": [\n\n                                              ],\n                                              \"operation\": \"groupby\"\n                                          }\n                                      }\n                                  }\n                              },\n                              {\n                                  \"id\": \"merge\",\n                                  \"options\": {\n\n                                  }\n                              },\n                              {\n                                  \"id\": \"calculateField\",\n                                  \"options\": {\n                                      \"alias\": \"Used\",\n                                      \"binary\": {\n                                          \"left\": \"Value #A (lastNotNull)\",\n                                          \"operator\": \"-\",\n                                          \"reducer\": \"sum\",\n                                          \"right\": \"Value #B (lastNotNull)\"\n                                      },\n                                      \"mode\": \"binary\",\n                                      \"reduce\": {\n                                          \"reducer\": \"sum\"\n                                      }\n                                  }\n                              },\n                              {\n                                  \"id\": \"calculateField\",\n                                  \"options\": {\n                                      \"alias\": \"Used, %\",\n                                      \"binary\": {\n                                          \"left\": \"Used\",\n                                          \"operator\": \"/\",\n                                          \"reducer\": \"sum\",\n                                          \"right\": \"Value #A (lastNotNull)\"\n                                      },\n                                      \"mode\": \"binary\",\n                                      \"reduce\": {\n                                          \"reducer\": \"sum\"\n                                      }\n                                  }\n                              },\n                              {\n                                  \"id\": \"organize\",\n                                  \"options\": {\n                                      \"excludeByName\": {\n\n                                      },\n                                      \"indexByName\": {\n\n                                      },\n                                      \"renameByName\": {\n                                          \"Value #A (lastNotNull)\": \"Size\",\n                                          \"Value #B (lastNotNull)\": \"Available\",\n                                          \"mountpoint\": \"Mounted on\"\n                                      }\n                                  }\n                              },\n                              {\n                                  \"id\": \"sortBy\",\n                                  \"options\": {\n                                      \"fields\": {\n\n                                      },\n                                      \"sort\": [\n                                          {\n                                              \"field\": \"Mounted on\"\n                                          }\n                                      ]\n                                  }\n                              }\n                          ],\n                          \"transparent\": false,\n                          \"type\": \"table\"\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Disk\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"description\": \"Network received (bits/s)\",\n                          \"fill\": 0,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 8,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"rate(node_network_receive_bytes_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", device!=\\\"lo\\\"}[$__rate_interval]) * 8\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 1,\n                                  \"legendFormat\": \"{{device}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Network Received\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"description\": \"Network transmitted (bits/s)\",\n                          \"fill\": 0,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 9,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"rate(node_network_transmit_bytes_total{job=\\\"node-exporter\\\", instance=\\\"$instance\\\", device!=\\\"lo\\\"}[$__rate_interval]) * 8\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 1,\n                                  \"legendFormat\": \"{{device}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Network Transmitted\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Network\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              }\n          ],\n          \"schemaVersion\": 14,\n          \"style\": \"dark\",\n          \"tags\": [\n              \"node-exporter-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data Source\",\n                      \"name\": \"datasource\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"prometheus\",\n                      \"refresh\": 1,\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"allValue\": null,\n                      \"current\": {\n\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": false,\n                      \"label\": \"Instance\",\n                      \"multi\": false,\n                      \"name\": \"instance\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(node_uname_info{job=\\\"node-exporter\\\", sysname!=\\\"Darwin\\\"}, instance)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"sort\": 0,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timepicker\": {\n              \"refresh_intervals\": [\n                  \"5s\",\n                  \"10s\",\n                  \"30s\",\n                  \"1m\",\n                  \"5m\",\n                  \"15m\",\n                  \"30m\",\n                  \"1h\",\n                  \"2h\",\n                  \"1d\"\n              ],\n              \"time_options\": [\n                  \"5m\",\n                  \"15m\",\n                  \"1h\",\n                  \"6h\",\n                  \"12h\",\n                  \"24h\",\n                  \"2d\",\n                  \"7d\",\n                  \"30d\"\n              ]\n          },\n          \"timezone\": \"utc\",\n          \"title\": \"Node Exporter / Nodes\",\n          \"version\": 0\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 9.5.3\n    name: grafana-dashboard-nodes\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    persistentvolumesusage.json: |-\n      {\n          \"__inputs\": [\n\n          ],\n          \"__requires\": [\n\n          ],\n          \"annotations\": {\n              \"list\": [\n\n              ]\n          },\n          \"editable\": false,\n          \"gnetId\": null,\n          \"graphTooltip\": 0,\n          \"hideControls\": false,\n          \"id\": null,\n          \"links\": [\n\n          ],\n          \"refresh\": \"10s\",\n          \"rows\": [\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 2,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": true,\n                              \"current\": true,\n                              \"max\": true,\n                              \"min\": true,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": true\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 9,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"(\\n  sum without(instance, node) (topk(1, (kubelet_volume_stats_capacity_bytes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\", persistentvolumeclaim=\\\"$volume\\\"})))\\n  -\\n  sum without(instance, node) (topk(1, (kubelet_volume_stats_available_bytes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\", persistentvolumeclaim=\\\"$volume\\\"})))\\n)\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 1,\n                                  \"legendFormat\": \"Used Space\",\n                                  \"refId\": \"A\"\n                              },\n                              {\n                                  \"expr\": \"sum without(instance, node) (topk(1, (kubelet_volume_stats_available_bytes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\", persistentvolumeclaim=\\\"$volume\\\"})))\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 1,\n                                  \"legendFormat\": \"Free Space\",\n                                  \"refId\": \"B\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Volume Space Usage\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"bytes\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"bytes\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"cacheTimeout\": null,\n                          \"colorBackground\": false,\n                          \"colorValue\": false,\n                          \"colors\": [\n                              \"rgba(50, 172, 45, 0.97)\",\n                              \"rgba(237, 129, 40, 0.89)\",\n                              \"rgba(245, 54, 54, 0.9)\"\n                          ],\n                          \"datasource\": \"$datasource\",\n                          \"format\": \"percent\",\n                          \"gauge\": {\n                              \"maxValue\": 100,\n                              \"minValue\": 0,\n                              \"show\": true,\n                              \"thresholdLabels\": false,\n                              \"thresholdMarkers\": true\n                          },\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 3,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"rightSide\": true\n                          },\n                          \"links\": [\n\n                          ],\n                          \"mappingType\": 1,\n                          \"mappingTypes\": [\n                              {\n                                  \"name\": \"value to text\",\n                                  \"value\": 1\n                              },\n                              {\n                                  \"name\": \"range to text\",\n                                  \"value\": 2\n                              }\n                          ],\n                          \"maxDataPoints\": 100,\n                          \"nullPointMode\": \"connected\",\n                          \"nullText\": null,\n                          \"postfix\": \"\",\n                          \"postfixFontSize\": \"50%\",\n                          \"prefix\": \"\",\n                          \"prefixFontSize\": \"50%\",\n                          \"rangeMaps\": [\n                              {\n                                  \"from\": \"null\",\n                                  \"text\": \"N/A\",\n                                  \"to\": \"null\"\n                              }\n                          ],\n                          \"span\": 3,\n                          \"sparkline\": {\n                              \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n                              \"full\": false,\n                              \"lineColor\": \"rgb(31, 120, 193)\",\n                              \"show\": false\n                          },\n                          \"tableColumn\": \"\",\n                          \"targets\": [\n                              {\n                                  \"expr\": \"max without(instance,node) (\\n(\\n  topk(1, kubelet_volume_stats_capacity_bytes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\", persistentvolumeclaim=\\\"$volume\\\"})\\n  -\\n  topk(1, kubelet_volume_stats_available_bytes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\", persistentvolumeclaim=\\\"$volume\\\"})\\n)\\n/\\ntopk(1, kubelet_volume_stats_capacity_bytes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\", persistentvolumeclaim=\\\"$volume\\\"})\\n* 100)\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": \"80, 90\",\n                          \"title\": \"Volume Space Usage\",\n                          \"tooltip\": {\n                              \"shared\": false\n                          },\n                          \"type\": \"singlestat\",\n                          \"valueFontSize\": \"80%\",\n                          \"valueMaps\": [\n                              {\n                                  \"op\": \"=\",\n                                  \"text\": \"N/A\",\n                                  \"value\": \"null\"\n                              }\n                          ],\n                          \"valueName\": \"current\"\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": false,\n                  \"title\": \"Dashboard Row\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 4,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": true,\n                              \"current\": true,\n                              \"max\": true,\n                              \"min\": true,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": true\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 9,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum without(instance, node) (topk(1, (kubelet_volume_stats_inodes_used{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\", persistentvolumeclaim=\\\"$volume\\\"})))\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 1,\n                                  \"legendFormat\": \"Used inodes\",\n                                  \"refId\": \"A\"\n                              },\n                              {\n                                  \"expr\": \"(\\n  sum without(instance, node) (topk(1, (kubelet_volume_stats_inodes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\", persistentvolumeclaim=\\\"$volume\\\"})))\\n  -\\n  sum without(instance, node) (topk(1, (kubelet_volume_stats_inodes_used{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\", persistentvolumeclaim=\\\"$volume\\\"})))\\n)\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 1,\n                                  \"legendFormat\": \" Free inodes\",\n                                  \"refId\": \"B\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Volume inodes Usage\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"none\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"none\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"cacheTimeout\": null,\n                          \"colorBackground\": false,\n                          \"colorValue\": false,\n                          \"colors\": [\n                              \"rgba(50, 172, 45, 0.97)\",\n                              \"rgba(237, 129, 40, 0.89)\",\n                              \"rgba(245, 54, 54, 0.9)\"\n                          ],\n                          \"datasource\": \"$datasource\",\n                          \"format\": \"percent\",\n                          \"gauge\": {\n                              \"maxValue\": 100,\n                              \"minValue\": 0,\n                              \"show\": true,\n                              \"thresholdLabels\": false,\n                              \"thresholdMarkers\": true\n                          },\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 5,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"rightSide\": true\n                          },\n                          \"links\": [\n\n                          ],\n                          \"mappingType\": 1,\n                          \"mappingTypes\": [\n                              {\n                                  \"name\": \"value to text\",\n                                  \"value\": 1\n                              },\n                              {\n                                  \"name\": \"range to text\",\n                                  \"value\": 2\n                              }\n                          ],\n                          \"maxDataPoints\": 100,\n                          \"nullPointMode\": \"connected\",\n                          \"nullText\": null,\n                          \"postfix\": \"\",\n                          \"postfixFontSize\": \"50%\",\n                          \"prefix\": \"\",\n                          \"prefixFontSize\": \"50%\",\n                          \"rangeMaps\": [\n                              {\n                                  \"from\": \"null\",\n                                  \"text\": \"N/A\",\n                                  \"to\": \"null\"\n                              }\n                          ],\n                          \"span\": 3,\n                          \"sparkline\": {\n                              \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n                              \"full\": false,\n                              \"lineColor\": \"rgb(31, 120, 193)\",\n                              \"show\": false\n                          },\n                          \"tableColumn\": \"\",\n                          \"targets\": [\n                              {\n                                  \"expr\": \"max without(instance,node) (\\ntopk(1, kubelet_volume_stats_inodes_used{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\", persistentvolumeclaim=\\\"$volume\\\"})\\n/\\ntopk(1, kubelet_volume_stats_inodes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\", persistentvolumeclaim=\\\"$volume\\\"})\\n* 100)\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": \"80, 90\",\n                          \"title\": \"Volume inodes Usage\",\n                          \"tooltip\": {\n                              \"shared\": false\n                          },\n                          \"type\": \"singlestat\",\n                          \"valueFontSize\": \"80%\",\n                          \"valueMaps\": [\n                              {\n                                  \"op\": \"=\",\n                                  \"text\": \"N/A\",\n                                  \"value\": \"null\"\n                              }\n                          ],\n                          \"valueName\": \"current\"\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": false,\n                  \"title\": \"Dashboard Row\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              }\n          ],\n          \"schemaVersion\": 14,\n          \"style\": \"dark\",\n          \"tags\": [\n              \"kubernetes-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data Source\",\n                      \"name\": \"datasource\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"prometheus\",\n                      \"refresh\": 1,\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"allValue\": null,\n                      \"current\": {\n\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": false,\n                      \"label\": \"cluster\",\n                      \"multi\": false,\n                      \"name\": \"cluster\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(kubelet_volume_stats_capacity_bytes{job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\"}, cluster)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  },\n                  {\n                      \"allValue\": null,\n                      \"current\": {\n\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": false,\n                      \"label\": \"Namespace\",\n                      \"multi\": false,\n                      \"name\": \"namespace\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(kubelet_volume_stats_capacity_bytes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\"}, namespace)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  },\n                  {\n                      \"allValue\": null,\n                      \"current\": {\n\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": false,\n                      \"label\": \"PersistentVolumeClaim\",\n                      \"multi\": false,\n                      \"name\": \"volume\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(kubelet_volume_stats_capacity_bytes{cluster=\\\"$cluster\\\", job=\\\"kubelet\\\", metrics_path=\\\"/metrics\\\", namespace=\\\"$namespace\\\"}, persistentvolumeclaim)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-7d\",\n              \"to\": \"now\"\n          },\n          \"timepicker\": {\n              \"refresh_intervals\": [\n                  \"5s\",\n                  \"10s\",\n                  \"30s\",\n                  \"1m\",\n                  \"5m\",\n                  \"15m\",\n                  \"30m\",\n                  \"1h\",\n                  \"2h\",\n                  \"1d\"\n              ],\n              \"time_options\": [\n                  \"5m\",\n                  \"15m\",\n                  \"1h\",\n                  \"6h\",\n                  \"12h\",\n                  \"24h\",\n                  \"2d\",\n                  \"7d\",\n                  \"30d\"\n              ]\n          },\n          \"timezone\": \"UTC\",\n          \"title\": \"Kubernetes / Persistent Volumes\",\n          \"uid\": \"919b92a8e8041bd567af9edab12c840c\",\n          \"version\": 0\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 9.5.3\n    name: grafana-dashboard-persistentvolumesusage\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    pod-total.json: |-\n      {\n          \"__inputs\": [\n\n          ],\n          \"__requires\": [\n\n          ],\n          \"annotations\": {\n              \"list\": [\n                  {\n                      \"builtIn\": 1,\n                      \"datasource\": \"-- Grafana --\",\n                      \"enable\": true,\n                      \"hide\": true,\n                      \"iconColor\": \"rgba(0, 211, 255, 1)\",\n                      \"name\": \"Annotations & Alerts\",\n                      \"type\": \"dashboard\"\n                  }\n              ]\n          },\n          \"editable\": true,\n          \"gnetId\": null,\n          \"graphTooltip\": 0,\n          \"hideControls\": false,\n          \"id\": null,\n          \"links\": [\n\n          ],\n          \"panels\": [\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 0\n                  },\n                  \"id\": 2,\n                  \"panels\": [\n\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Current Bandwidth\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"cacheTimeout\": null,\n                  \"colorBackground\": false,\n                  \"colorValue\": false,\n                  \"colors\": [\n                      \"#299c46\",\n                      \"rgba(237, 129, 40, 0.89)\",\n                      \"#d44a3a\"\n                  ],\n                  \"datasource\": \"$datasource\",\n                  \"decimals\": 0,\n                  \"format\": \"time_series\",\n                  \"gauge\": {\n                      \"maxValue\": 100,\n                      \"minValue\": 0,\n                      \"show\": false,\n                      \"thresholdLabels\": false,\n                      \"thresholdMarkers\": true\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 1\n                  },\n                  \"height\": 9,\n                  \"id\": 3,\n                  \"interval\": null,\n                  \"links\": [\n\n                  ],\n                  \"mappingType\": 1,\n                  \"mappingTypes\": [\n                      {\n                          \"name\": \"value to text\",\n                          \"value\": 1\n                      },\n                      {\n                          \"name\": \"range to text\",\n                          \"value\": 2\n                      }\n                  ],\n                  \"maxDataPoints\": 100,\n                  \"minSpan\": 12,\n                  \"nullPointMode\": \"connected\",\n                  \"nullText\": null,\n                  \"options\": {\n                      \"fieldOptions\": {\n                          \"calcs\": [\n                              \"last\"\n                          ],\n                          \"defaults\": {\n                              \"max\": 10000000000,\n                              \"min\": 0,\n                              \"title\": \"$namespace: $pod\",\n                              \"unit\": \"Bps\"\n                          },\n                          \"mappings\": [\n\n                          ],\n                          \"override\": {\n\n                          },\n                          \"thresholds\": [\n                              {\n                                  \"color\": \"dark-green\",\n                                  \"index\": 0,\n                                  \"value\": null\n                              },\n                              {\n                                  \"color\": \"dark-yellow\",\n                                  \"index\": 1,\n                                  \"value\": 5000000000\n                              },\n                              {\n                                  \"color\": \"dark-red\",\n                                  \"index\": 2,\n                                  \"value\": 7000000000\n                              }\n                          ],\n                          \"values\": false\n                      }\n                  },\n                  \"postfix\": \"\",\n                  \"postfixFontSize\": \"50%\",\n                  \"prefix\": \"\",\n                  \"prefixFontSize\": \"50%\",\n                  \"rangeMaps\": [\n                      {\n                          \"from\": \"null\",\n                          \"text\": \"N/A\",\n                          \"to\": \"null\"\n                      }\n                  ],\n                  \"span\": 12,\n                  \"sparkline\": {\n                      \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n                      \"full\": false,\n                      \"lineColor\": \"rgb(31, 120, 193)\",\n                      \"show\": false\n                  },\n                  \"tableColumn\": \"\",\n                  \"targets\": [\n                      {\n                          \"expr\": \"sum(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$interval:$resolution]))\",\n                          \"format\": \"time_series\",\n                          \"instant\": null,\n                          \"intervalFactor\": 1,\n                          \"legendFormat\": \"\",\n                          \"refId\": \"A\"\n                      }\n                  ],\n                  \"thresholds\": \"\",\n                  \"timeFrom\": null,\n                  \"timeShift\": null,\n                  \"title\": \"Current Rate of Bytes Received\",\n                  \"type\": \"gauge\",\n                  \"valueFontSize\": \"80%\",\n                  \"valueMaps\": [\n                      {\n                          \"op\": \"=\",\n                          \"text\": \"N/A\",\n                          \"value\": \"null\"\n                      }\n                  ],\n                  \"valueName\": \"current\"\n              },\n              {\n                  \"cacheTimeout\": null,\n                  \"colorBackground\": false,\n                  \"colorValue\": false,\n                  \"colors\": [\n                      \"#299c46\",\n                      \"rgba(237, 129, 40, 0.89)\",\n                      \"#d44a3a\"\n                  ],\n                  \"datasource\": \"$datasource\",\n                  \"decimals\": 0,\n                  \"format\": \"time_series\",\n                  \"gauge\": {\n                      \"maxValue\": 100,\n                      \"minValue\": 0,\n                      \"show\": false,\n                      \"thresholdLabels\": false,\n                      \"thresholdMarkers\": true\n                  },\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 1\n                  },\n                  \"height\": 9,\n                  \"id\": 4,\n                  \"interval\": null,\n                  \"links\": [\n\n                  ],\n                  \"mappingType\": 1,\n                  \"mappingTypes\": [\n                      {\n                          \"name\": \"value to text\",\n                          \"value\": 1\n                      },\n                      {\n                          \"name\": \"range to text\",\n                          \"value\": 2\n                      }\n                  ],\n                  \"maxDataPoints\": 100,\n                  \"minSpan\": 12,\n                  \"nullPointMode\": \"connected\",\n                  \"nullText\": null,\n                  \"options\": {\n                      \"fieldOptions\": {\n                          \"calcs\": [\n                              \"last\"\n                          ],\n                          \"defaults\": {\n                              \"max\": 10000000000,\n                              \"min\": 0,\n                              \"title\": \"$namespace: $pod\",\n                              \"unit\": \"Bps\"\n                          },\n                          \"mappings\": [\n\n                          ],\n                          \"override\": {\n\n                          },\n                          \"thresholds\": [\n                              {\n                                  \"color\": \"dark-green\",\n                                  \"index\": 0,\n                                  \"value\": null\n                              },\n                              {\n                                  \"color\": \"dark-yellow\",\n                                  \"index\": 1,\n                                  \"value\": 5000000000\n                              },\n                              {\n                                  \"color\": \"dark-red\",\n                                  \"index\": 2,\n                                  \"value\": 7000000000\n                              }\n                          ],\n                          \"values\": false\n                      }\n                  },\n                  \"postfix\": \"\",\n                  \"postfixFontSize\": \"50%\",\n                  \"prefix\": \"\",\n                  \"prefixFontSize\": \"50%\",\n                  \"rangeMaps\": [\n                      {\n                          \"from\": \"null\",\n                          \"text\": \"N/A\",\n                          \"to\": \"null\"\n                      }\n                  ],\n                  \"span\": 12,\n                  \"sparkline\": {\n                      \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n                      \"full\": false,\n                      \"lineColor\": \"rgb(31, 120, 193)\",\n                      \"show\": false\n                  },\n                  \"tableColumn\": \"\",\n                  \"targets\": [\n                      {\n                          \"expr\": \"sum(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$interval:$resolution]))\",\n                          \"format\": \"time_series\",\n                          \"instant\": null,\n                          \"intervalFactor\": 1,\n                          \"legendFormat\": \"\",\n                          \"refId\": \"A\"\n                      }\n                  ],\n                  \"thresholds\": \"\",\n                  \"timeFrom\": null,\n                  \"timeShift\": null,\n                  \"title\": \"Current Rate of Bytes Transmitted\",\n                  \"type\": \"gauge\",\n                  \"valueFontSize\": \"80%\",\n                  \"valueMaps\": [\n                      {\n                          \"op\": \"=\",\n                          \"text\": \"N/A\",\n                          \"value\": \"null\"\n                      }\n                  ],\n                  \"valueName\": \"current\"\n              },\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 10\n                  },\n                  \"id\": 5,\n                  \"panels\": [\n\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Bandwidth\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"aliasColors\": {\n\n                  },\n                  \"bars\": false,\n                  \"dashLength\": 10,\n                  \"dashes\": false,\n                  \"datasource\": \"$datasource\",\n                  \"fill\": 2,\n                  \"fillGradient\": 0,\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 11\n                  },\n                  \"id\": 6,\n                  \"legend\": {\n                      \"alignAsTable\": false,\n                      \"avg\": false,\n                      \"current\": false,\n                      \"hideEmpty\": true,\n                      \"hideZero\": true,\n                      \"max\": false,\n                      \"min\": false,\n                      \"rightSide\": false,\n                      \"show\": true,\n                      \"sideWidth\": null,\n                      \"total\": false,\n                      \"values\": false\n                  },\n                  \"lines\": true,\n                  \"linewidth\": 2,\n                  \"links\": [\n\n                  ],\n                  \"minSpan\": 12,\n                  \"nullPointMode\": \"connected\",\n                  \"paceLength\": 10,\n                  \"percentage\": false,\n                  \"pointradius\": 5,\n                  \"points\": false,\n                  \"renderer\": \"flot\",\n                  \"repeat\": null,\n                  \"seriesOverrides\": [\n\n                  ],\n                  \"spaceLength\": 10,\n                  \"span\": 12,\n                  \"stack\": true,\n                  \"steppedLine\": false,\n                  \"targets\": [\n                      {\n                          \"expr\": \"sum(irate(container_network_receive_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$interval:$resolution])) by (pod)\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 1,\n                          \"legendFormat\": \"{{pod}}\",\n                          \"refId\": \"A\",\n                          \"step\": 10\n                      }\n                  ],\n                  \"thresholds\": [\n\n                  ],\n                  \"timeFrom\": null,\n                  \"timeShift\": null,\n                  \"title\": \"Receive Bandwidth\",\n                  \"tooltip\": {\n                      \"shared\": true,\n                      \"sort\": 2,\n                      \"value_type\": \"individual\"\n                  },\n                  \"type\": \"graph\",\n                  \"xaxis\": {\n                      \"buckets\": null,\n                      \"mode\": \"time\",\n                      \"name\": null,\n                      \"show\": true,\n                      \"values\": [\n\n                      ]\n                  },\n                  \"yaxes\": [\n                      {\n                          \"format\": \"Bps\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": 0,\n                          \"show\": true\n                      },\n                      {\n                          \"format\": \"Bps\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": 0,\n                          \"show\": true\n                      }\n                  ]\n              },\n              {\n                  \"aliasColors\": {\n\n                  },\n                  \"bars\": false,\n                  \"dashLength\": 10,\n                  \"dashes\": false,\n                  \"datasource\": \"$datasource\",\n                  \"fill\": 2,\n                  \"fillGradient\": 0,\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 11\n                  },\n                  \"id\": 7,\n                  \"legend\": {\n                      \"alignAsTable\": false,\n                      \"avg\": false,\n                      \"current\": false,\n                      \"hideEmpty\": true,\n                      \"hideZero\": true,\n                      \"max\": false,\n                      \"min\": false,\n                      \"rightSide\": false,\n                      \"show\": true,\n                      \"sideWidth\": null,\n                      \"total\": false,\n                      \"values\": false\n                  },\n                  \"lines\": true,\n                  \"linewidth\": 2,\n                  \"links\": [\n\n                  ],\n                  \"minSpan\": 12,\n                  \"nullPointMode\": \"connected\",\n                  \"paceLength\": 10,\n                  \"percentage\": false,\n                  \"pointradius\": 5,\n                  \"points\": false,\n                  \"renderer\": \"flot\",\n                  \"repeat\": null,\n                  \"seriesOverrides\": [\n\n                  ],\n                  \"spaceLength\": 10,\n                  \"span\": 12,\n                  \"stack\": true,\n                  \"steppedLine\": false,\n                  \"targets\": [\n                      {\n                          \"expr\": \"sum(irate(container_network_transmit_bytes_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$interval:$resolution])) by (pod)\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 1,\n                          \"legendFormat\": \"{{pod}}\",\n                          \"refId\": \"A\",\n                          \"step\": 10\n                      }\n                  ],\n                  \"thresholds\": [\n\n                  ],\n                  \"timeFrom\": null,\n                  \"timeShift\": null,\n                  \"title\": \"Transmit Bandwidth\",\n                  \"tooltip\": {\n                      \"shared\": true,\n                      \"sort\": 2,\n                      \"value_type\": \"individual\"\n                  },\n                  \"type\": \"graph\",\n                  \"xaxis\": {\n                      \"buckets\": null,\n                      \"mode\": \"time\",\n                      \"name\": null,\n                      \"show\": true,\n                      \"values\": [\n\n                      ]\n                  },\n                  \"yaxes\": [\n                      {\n                          \"format\": \"Bps\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": 0,\n                          \"show\": true\n                      },\n                      {\n                          \"format\": \"Bps\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": 0,\n                          \"show\": true\n                      }\n                  ]\n              },\n              {\n                  \"collapse\": true,\n                  \"collapsed\": true,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 20\n                  },\n                  \"id\": 8,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 2,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n                              \"h\": 10,\n                              \"w\": 12,\n                              \"x\": 0,\n                              \"y\": 21\n                          },\n                          \"id\": 9,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"hideEmpty\": true,\n                              \"hideZero\": true,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 2,\n                          \"links\": [\n\n                          ],\n                          \"minSpan\": 12,\n                          \"nullPointMode\": \"connected\",\n                          \"paceLength\": 10,\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(irate(container_network_receive_packets_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$interval:$resolution])) by (pod)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 1,\n                                  \"legendFormat\": \"{{pod}}\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Rate of Received Packets\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 2,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n                              \"h\": 10,\n                              \"w\": 12,\n                              \"x\": 12,\n                              \"y\": 21\n                          },\n                          \"id\": 10,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"hideEmpty\": true,\n                              \"hideZero\": true,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 2,\n                          \"links\": [\n\n                          ],\n                          \"minSpan\": 12,\n                          \"nullPointMode\": \"connected\",\n                          \"paceLength\": 10,\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(irate(container_network_transmit_packets_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$interval:$resolution])) by (pod)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 1,\n                                  \"legendFormat\": \"{{pod}}\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Rate of Transmitted Packets\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Packets\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"collapse\": true,\n                  \"collapsed\": true,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 21\n                  },\n                  \"id\": 11,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 2,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n                              \"h\": 10,\n                              \"w\": 12,\n                              \"x\": 0,\n                              \"y\": 32\n                          },\n                          \"id\": 12,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"hideEmpty\": true,\n                              \"hideZero\": true,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 2,\n                          \"links\": [\n\n                          ],\n                          \"minSpan\": 12,\n                          \"nullPointMode\": \"connected\",\n                          \"paceLength\": 10,\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(irate(container_network_receive_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$interval:$resolution])) by (pod)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 1,\n                                  \"legendFormat\": \"{{pod}}\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Rate of Received Packets Dropped\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 2,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n                              \"h\": 10,\n                              \"w\": 12,\n                              \"x\": 12,\n                              \"y\": 32\n                          },\n                          \"id\": 13,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"hideEmpty\": true,\n                              \"hideZero\": true,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 2,\n                          \"links\": [\n\n                          ],\n                          \"minSpan\": 12,\n                          \"nullPointMode\": \"connected\",\n                          \"paceLength\": 10,\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(irate(container_network_transmit_packets_dropped_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", pod=~\\\"$pod\\\"}[$interval:$resolution])) by (pod)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 1,\n                                  \"legendFormat\": \"{{pod}}\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Rate of Transmitted Packets Dropped\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Errors\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              }\n          ],\n          \"refresh\": \"10s\",\n          \"rows\": [\n\n          ],\n          \"schemaVersion\": 18,\n          \"style\": \"dark\",\n          \"tags\": [\n              \"kubernetes-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data Source\",\n                      \"name\": \"datasource\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"prometheus\",\n                      \"refresh\": 1,\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"allValue\": null,\n                      \"current\": {\n\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": false,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"cluster\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(up{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\"}, cluster)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"sort\": 0,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  },\n                  {\n                      \"allValue\": \".+\",\n                      \"auto\": false,\n                      \"auto_count\": 30,\n                      \"auto_min\": \"10s\",\n                      \"current\": {\n                          \"text\": \"kube-system\",\n                          \"value\": \"kube-system\"\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"definition\": \"label_values(container_network_receive_packets_total{cluster=\\\"$cluster\\\"}, namespace)\",\n                      \"hide\": 0,\n                      \"includeAll\": true,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"namespace\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(container_network_receive_packets_total{cluster=\\\"$cluster\\\"}, namespace)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"skipUrlSync\": false,\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  },\n                  {\n                      \"allValue\": \".+\",\n                      \"auto\": false,\n                      \"auto_count\": 30,\n                      \"auto_min\": \"10s\",\n                      \"current\": {\n                          \"text\": \"\",\n                          \"value\": \"\"\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"definition\": \"label_values(container_network_receive_packets_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}, pod)\",\n                      \"hide\": 0,\n                      \"includeAll\": false,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"pod\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(container_network_receive_packets_total{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}, pod)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"skipUrlSync\": false,\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  },\n                  {\n                      \"allValue\": null,\n                      \"auto\": false,\n                      \"auto_count\": 30,\n                      \"auto_min\": \"10s\",\n                      \"current\": {\n                          \"text\": \"5m\",\n                          \"value\": \"5m\"\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": false,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"resolution\",\n                      \"options\": [\n                          {\n                              \"selected\": false,\n                              \"text\": \"30s\",\n                              \"value\": \"30s\"\n                          },\n                          {\n                              \"selected\": true,\n                              \"text\": \"5m\",\n                              \"value\": \"5m\"\n                          },\n                          {\n                              \"selected\": false,\n                              \"text\": \"1h\",\n                              \"value\": \"1h\"\n                          }\n                      ],\n                      \"query\": \"30s,5m,1h\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"skipUrlSync\": false,\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"interval\",\n                      \"useTags\": false\n                  },\n                  {\n                      \"allValue\": null,\n                      \"auto\": false,\n                      \"auto_count\": 30,\n                      \"auto_min\": \"10s\",\n                      \"current\": {\n                          \"text\": \"5m\",\n                          \"value\": \"5m\"\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 2,\n                      \"includeAll\": false,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"interval\",\n                      \"options\": [\n                          {\n                              \"selected\": true,\n                              \"text\": \"4h\",\n                              \"value\": \"4h\"\n                          }\n                      ],\n                      \"query\": \"4h\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"skipUrlSync\": false,\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"interval\",\n                      \"useTags\": false\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timepicker\": {\n              \"refresh_intervals\": [\n                  \"5s\",\n                  \"10s\",\n                  \"30s\",\n                  \"1m\",\n                  \"5m\",\n                  \"15m\",\n                  \"30m\",\n                  \"1h\",\n                  \"2h\",\n                  \"1d\"\n              ],\n              \"time_options\": [\n                  \"5m\",\n                  \"15m\",\n                  \"1h\",\n                  \"6h\",\n                  \"12h\",\n                  \"24h\",\n                  \"2d\",\n                  \"7d\",\n                  \"30d\"\n              ]\n          },\n          \"timezone\": \"UTC\",\n          \"title\": \"Kubernetes / Networking / Pod\",\n          \"uid\": \"7a18067ce943a40ae25454675c19ff5c\",\n          \"version\": 0\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 9.5.3\n    name: grafana-dashboard-pod-total\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    prometheus-remote-write.json: |-\n      {\n          \"__inputs\": [\n\n          ],\n          \"__requires\": [\n\n          ],\n          \"annotations\": {\n              \"list\": [\n\n              ]\n          },\n          \"editable\": true,\n          \"gnetId\": null,\n          \"graphTooltip\": 0,\n          \"hideControls\": false,\n          \"id\": null,\n          \"links\": [\n\n          ],\n          \"refresh\": \"60s\",\n          \"rows\": [\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 2,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"(\\n  prometheus_remote_storage_highest_timestamp_in_seconds{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"} \\n-  \\n  ignoring(remote_name, url) group_right(instance) (prometheus_remote_storage_queue_highest_sent_timestamp_seconds{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"} != 0)\\n)\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Highest Timestamp In vs. Highest Timestamp Sent\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 3,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"clamp_min(\\n  rate(prometheus_remote_storage_highest_timestamp_in_seconds{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}[5m])  \\n- \\n  ignoring (remote_name, url) group_right(instance) rate(prometheus_remote_storage_queue_highest_sent_timestamp_seconds{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}[5m])\\n, 0)\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Rate[5m]\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Timestamps\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 4,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"rate(\\n  prometheus_remote_storage_samples_in_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}[5m])\\n- \\n  ignoring(remote_name, url) group_right(instance) (rate(prometheus_remote_storage_succeeded_samples_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}[5m]) or rate(prometheus_remote_storage_samples_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}[5m]))\\n- \\n  (rate(prometheus_remote_storage_dropped_samples_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}[5m]) or rate(prometheus_remote_storage_samples_dropped_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}[5m]))\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Rate, in vs. succeeded or dropped [5m]\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Samples\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 5,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"minSpan\": 6,\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"prometheus_remote_storage_shards{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Current Shards\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 6,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 4,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"prometheus_remote_storage_shards_max{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Max Shards\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 7,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 4,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"prometheus_remote_storage_shards_min{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Min Shards\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 8,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 4,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"prometheus_remote_storage_shards_desired{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Desired Shards\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Shards\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 9,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"prometheus_remote_storage_shard_capacity{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Shard Capacity\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 10,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"prometheus_remote_storage_pending_samples{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"} or prometheus_remote_storage_samples_pending{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Pending Samples\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Shard Details\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 11,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"prometheus_tsdb_wal_segment_current{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{cluster}}:{{instance}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"TSDB Current Segment\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"none\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 12,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"prometheus_wal_watcher_current_segment{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{cluster}}:{{instance}} {{consumer}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Remote Write Current Segment\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"none\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Segments\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 13,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 3,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"rate(prometheus_remote_storage_dropped_samples_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}[5m]) or rate(prometheus_remote_storage_samples_dropped_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}[5m])\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Dropped Samples\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 14,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 3,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"rate(prometheus_remote_storage_failed_samples_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}[5m]) or rate(prometheus_remote_storage_samples_failed_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}[5m])\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Failed Samples\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 15,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 3,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"rate(prometheus_remote_storage_retried_samples_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}[5m]) or rate(prometheus_remote_storage_samples_retried_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}[5m])\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Retried Samples\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 16,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 3,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"rate(prometheus_remote_storage_enqueue_retries_total{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}[5m])\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{cluster}}:{{instance}} {{remote_name}}:{{url}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Enqueue Retries\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Misc. Rates\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              }\n          ],\n          \"schemaVersion\": 14,\n          \"style\": \"dark\",\n          \"tags\": [\n              \"prometheus-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"hide\": 0,\n                      \"label\": null,\n                      \"name\": \"datasource\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"prometheus\",\n                      \"refresh\": 1,\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"allValue\": null,\n                      \"current\": {\n                          \"text\": {\n                              \"selected\": true,\n                              \"text\": \"All\",\n                              \"value\": \"$__all\"\n                          },\n                          \"value\": {\n                              \"selected\": true,\n                              \"text\": \"All\",\n                              \"value\": \"$__all\"\n                          }\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": true,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"cluster\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(kube_pod_container_info{image=~\\\".*prometheus.*\\\"}, cluster)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"sort\": 0,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  },\n                  {\n                      \"allValue\": null,\n                      \"current\": {\n                          \"text\": {\n                              \"selected\": true,\n                              \"text\": \"All\",\n                              \"value\": \"$__all\"\n                          },\n                          \"value\": {\n                              \"selected\": true,\n                              \"text\": \"All\",\n                              \"value\": \"$__all\"\n                          }\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": true,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"instance\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(prometheus_build_info{cluster=~\\\"$cluster\\\"}, instance)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"sort\": 0,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  },\n                  {\n                      \"allValue\": null,\n                      \"current\": {\n\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": true,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"url\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(prometheus_remote_storage_shards{cluster=~\\\"$cluster\\\", instance=~\\\"$instance\\\"}, url)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"sort\": 0,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-6h\",\n              \"to\": \"now\"\n          },\n          \"timepicker\": {\n              \"refresh_intervals\": [\n                  \"5s\",\n                  \"10s\",\n                  \"30s\",\n                  \"1m\",\n                  \"5m\",\n                  \"15m\",\n                  \"30m\",\n                  \"1h\",\n                  \"2h\",\n                  \"1d\"\n              ],\n              \"time_options\": [\n                  \"5m\",\n                  \"15m\",\n                  \"1h\",\n                  \"6h\",\n                  \"12h\",\n                  \"24h\",\n                  \"2d\",\n                  \"7d\",\n                  \"30d\"\n              ]\n          },\n          \"timezone\": \"browser\",\n          \"title\": \"Prometheus / Remote Write\",\n          \"version\": 0\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 9.5.3\n    name: grafana-dashboard-prometheus-remote-write\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    prometheus.json: |-\n      {\n          \"annotations\": {\n              \"list\": [\n\n              ]\n          },\n          \"editable\": true,\n          \"gnetId\": null,\n          \"graphTooltip\": 0,\n          \"hideControls\": false,\n          \"links\": [\n\n          ],\n          \"refresh\": \"60s\",\n          \"rows\": [\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"id\": 1,\n                          \"legend\": {\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"styles\": [\n                              {\n                                  \"alias\": \"Time\",\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"pattern\": \"Time\",\n                                  \"type\": \"hidden\"\n                              },\n                              {\n                                  \"alias\": \"Count\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #A\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"hidden\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"Uptime\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"Value #B\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"s\"\n                              },\n                              {\n                                  \"alias\": \"Instance\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"instance\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"Job\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"job\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"Version\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"link\": false,\n                                  \"linkTargetBlank\": false,\n                                  \"linkTooltip\": \"Drill down\",\n                                  \"linkUrl\": \"\",\n                                  \"pattern\": \"version\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"number\",\n                                  \"unit\": \"short\"\n                              },\n                              {\n                                  \"alias\": \"\",\n                                  \"colorMode\": null,\n                                  \"colors\": [\n\n                                  ],\n                                  \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n                                  \"decimals\": 2,\n                                  \"pattern\": \"/.*/\",\n                                  \"thresholds\": [\n\n                                  ],\n                                  \"type\": \"string\",\n                                  \"unit\": \"short\"\n                              }\n                          ],\n                          \"targets\": [\n                              {\n                                  \"expr\": \"count by (job, instance, version) (prometheus_build_info{job=~\\\"$job\\\", instance=~\\\"$instance\\\"})\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"max by (job, instance) (time() - process_start_time_seconds{job=~\\\"$job\\\", instance=~\\\"$instance\\\"})\",\n                                  \"format\": \"table\",\n                                  \"instant\": true,\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"B\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Prometheus Stats\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"transform\": \"table\",\n                          \"type\": \"table\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Prometheus Stats\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"id\": 2,\n                          \"legend\": {\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(rate(prometheus_target_sync_length_seconds_sum{job=~\\\"$job\\\",instance=~\\\"$instance\\\"}[5m])) by (scrape_job) * 1e3\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{scrape_job}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Target Sync\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"ms\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 3,\n                          \"legend\": {\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(prometheus_sd_discovered_targets{job=~\\\"$job\\\",instance=~\\\"$instance\\\"})\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"Targets\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Targets\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Discovery\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"id\": 4,\n                          \"legend\": {\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 4,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"rate(prometheus_target_interval_length_seconds_sum{job=~\\\"$job\\\",instance=~\\\"$instance\\\"}[5m]) / rate(prometheus_target_interval_length_seconds_count{job=~\\\"$job\\\",instance=~\\\"$instance\\\"}[5m]) * 1e3\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{interval}} configured\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Average Scrape Interval Duration\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"ms\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 5,\n                          \"legend\": {\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 4,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum by (job) (rate(prometheus_target_scrapes_exceeded_body_size_limit_total[1m]))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"exceeded body size limit: {{job}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum by (job) (rate(prometheus_target_scrapes_exceeded_sample_limit_total[1m]))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"exceeded sample limit: {{job}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum by (job) (rate(prometheus_target_scrapes_sample_duplicate_timestamp_total[1m]))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"duplicate timestamp: {{job}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum by (job) (rate(prometheus_target_scrapes_sample_out_of_bounds_total[1m]))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"out of bounds: {{job}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              },\n                              {\n                                  \"expr\": \"sum by (job) (rate(prometheus_target_scrapes_sample_out_of_order_total[1m]))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"out of order: {{job}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Scrape failures\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 6,\n                          \"legend\": {\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 4,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"rate(prometheus_tsdb_head_samples_appended_total{job=~\\\"$job\\\",instance=~\\\"$instance\\\"}[5m])\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{job}} {{instance}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Appended Samples\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Retrieval\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 7,\n                          \"legend\": {\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"prometheus_tsdb_head_series{job=~\\\"$job\\\",instance=~\\\"$instance\\\"}\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{job}} {{instance}} head series\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Head Series\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 8,\n                          \"legend\": {\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"prometheus_tsdb_head_chunks{job=~\\\"$job\\\",instance=~\\\"$instance\\\"}\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{job}} {{instance}} head chunks\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Head Chunks\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Storage\",\n                  \"titleSize\": \"h6\"\n              },\n              {\n                  \"collapse\": false,\n                  \"height\": \"250px\",\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 9,\n                          \"legend\": {\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"rate(prometheus_engine_query_duration_seconds_count{job=~\\\"$job\\\",instance=~\\\"$instance\\\",slice=\\\"inner_eval\\\"}[5m])\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{job}} {{instance}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Query Rate\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 10,\n                          \"id\": 10,\n                          \"legend\": {\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"show\": true,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 0,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null as zero\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"max by (slice) (prometheus_engine_query_duration_seconds{quantile=\\\"0.9\\\",job=~\\\"$job\\\",instance=~\\\"$instance\\\"}) * 1e3\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{slice}}\",\n                                  \"legendLink\": null,\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Stage Duration\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"ms\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": false\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Query\",\n                  \"titleSize\": \"h6\"\n              }\n          ],\n          \"schemaVersion\": 14,\n          \"style\": \"dark\",\n          \"tags\": [\n              \"prometheus-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data Source\",\n                      \"name\": \"datasource\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"prometheus\",\n                      \"refresh\": 1,\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"allValue\": \".+\",\n                      \"current\": {\n                          \"selected\": true,\n                          \"text\": \"All\",\n                          \"value\": \"$__all\"\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": true,\n                      \"label\": \"job\",\n                      \"multi\": true,\n                      \"name\": \"job\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(prometheus_build_info{job=\\\"prometheus-k8s\\\",namespace=\\\"monitoring\\\"}, job)\",\n                      \"refresh\": 1,\n                      \"regex\": \"\",\n                      \"sort\": 2,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  },\n                  {\n                      \"allValue\": \".+\",\n                      \"current\": {\n                          \"selected\": true,\n                          \"text\": \"All\",\n                          \"value\": \"$__all\"\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": true,\n                      \"label\": \"instance\",\n                      \"multi\": true,\n                      \"name\": \"instance\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(prometheus_build_info{job=~\\\"$job\\\"}, instance)\",\n                      \"refresh\": 1,\n                      \"regex\": \"\",\n                      \"sort\": 2,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timepicker\": {\n              \"refresh_intervals\": [\n                  \"5s\",\n                  \"10s\",\n                  \"30s\",\n                  \"1m\",\n                  \"5m\",\n                  \"15m\",\n                  \"30m\",\n                  \"1h\",\n                  \"2h\",\n                  \"1d\"\n              ],\n              \"time_options\": [\n                  \"5m\",\n                  \"15m\",\n                  \"1h\",\n                  \"6h\",\n                  \"12h\",\n                  \"24h\",\n                  \"2d\",\n                  \"7d\",\n                  \"30d\"\n              ]\n          },\n          \"timezone\": \"utc\",\n          \"title\": \"Prometheus / Overview\",\n          \"uid\": \"\",\n          \"version\": 0\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 9.5.3\n    name: grafana-dashboard-prometheus\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    proxy.json: |-\n      {\n          \"__inputs\": [\n\n          ],\n          \"__requires\": [\n\n          ],\n          \"annotations\": {\n              \"list\": [\n\n              ]\n          },\n          \"editable\": false,\n          \"gnetId\": null,\n          \"graphTooltip\": 0,\n          \"hideControls\": false,\n          \"id\": null,\n          \"links\": [\n\n          ],\n          \"refresh\": \"10s\",\n          \"rows\": [\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"cacheTimeout\": null,\n                          \"colorBackground\": false,\n                          \"colorValue\": false,\n                          \"colors\": [\n                              \"#299c46\",\n                              \"rgba(237, 129, 40, 0.89)\",\n                              \"#d44a3a\"\n                          ],\n                          \"datasource\": \"$datasource\",\n                          \"format\": \"none\",\n                          \"gauge\": {\n                              \"maxValue\": 100,\n                              \"minValue\": 0,\n                              \"show\": false,\n                              \"thresholdLabels\": false,\n                              \"thresholdMarkers\": true\n                          },\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 2,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"rightSide\": true\n                          },\n                          \"links\": [\n\n                          ],\n                          \"mappingType\": 1,\n                          \"mappingTypes\": [\n                              {\n                                  \"name\": \"value to text\",\n                                  \"value\": 1\n                              },\n                              {\n                                  \"name\": \"range to text\",\n                                  \"value\": 2\n                              }\n                          ],\n                          \"maxDataPoints\": 100,\n                          \"nullPointMode\": \"connected\",\n                          \"nullText\": null,\n                          \"postfix\": \"\",\n                          \"postfixFontSize\": \"50%\",\n                          \"prefix\": \"\",\n                          \"prefixFontSize\": \"50%\",\n                          \"rangeMaps\": [\n                              {\n                                  \"from\": \"null\",\n                                  \"text\": \"N/A\",\n                                  \"to\": \"null\"\n                              }\n                          ],\n                          \"span\": 2,\n                          \"sparkline\": {\n                              \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n                              \"full\": false,\n                              \"lineColor\": \"rgb(31, 120, 193)\",\n                              \"show\": false\n                          },\n                          \"tableColumn\": \"\",\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(up{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\"})\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": \"\",\n                          \"title\": \"Up\",\n                          \"tooltip\": {\n                              \"shared\": false\n                          },\n                          \"type\": \"singlestat\",\n                          \"valueFontSize\": \"80%\",\n                          \"valueMaps\": [\n                              {\n                                  \"op\": \"=\",\n                                  \"text\": \"N/A\",\n                                  \"value\": \"null\"\n                              }\n                          ],\n                          \"valueName\": \"min\"\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 3,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 5,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(rate(kubeproxy_sync_proxy_rules_duration_seconds_count{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\", instance=~\\\"$instance\\\"}[$__rate_interval]))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"rate\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Rules Sync Rate\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"ops\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"ops\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 4,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": true,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": true\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 5,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"histogram_quantile(0.99,rate(kubeproxy_sync_proxy_rules_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\", instance=~\\\"$instance\\\"}[$__rate_interval]))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{instance}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Rule Sync Latency 99th Quantile\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"s\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"s\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": false,\n                  \"title\": \"Dashboard Row\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 5,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(rate(kubeproxy_network_programming_duration_seconds_count{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\", instance=~\\\"$instance\\\"}[$__rate_interval]))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"rate\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Network Programming Rate\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"ops\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"ops\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 6,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": true,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": true\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 6,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"histogram_quantile(0.99, sum(rate(kubeproxy_network_programming_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (instance, le))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{instance}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Network Programming Latency 99th Quantile\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"s\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"s\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": false,\n                  \"title\": \"Dashboard Row\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 7,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 4,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\", instance=~\\\"$instance\\\",code=~\\\"2..\\\"}[$__rate_interval]))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"2xx\",\n                                  \"refId\": \"A\"\n                              },\n                              {\n                                  \"expr\": \"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\", instance=~\\\"$instance\\\",code=~\\\"3..\\\"}[$__rate_interval]))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"3xx\",\n                                  \"refId\": \"B\"\n                              },\n                              {\n                                  \"expr\": \"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\", instance=~\\\"$instance\\\",code=~\\\"4..\\\"}[$__rate_interval]))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"4xx\",\n                                  \"refId\": \"C\"\n                              },\n                              {\n                                  \"expr\": \"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\", instance=~\\\"$instance\\\",code=~\\\"5..\\\"}[$__rate_interval]))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"5xx\",\n                                  \"refId\": \"D\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Kube API Request Rate\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"ops\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"ops\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 8,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 8,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"histogram_quantile(0.99, sum(rate(rest_client_request_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\",instance=~\\\"$instance\\\",verb=\\\"POST\\\"}[$__rate_interval])) by (verb, url, le))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{verb}} {{url}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Post Request Latency 99th Quantile\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"s\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"s\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": false,\n                  \"title\": \"Dashboard Row\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 9,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": true,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": true\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"histogram_quantile(0.99, sum(rate(rest_client_request_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\", instance=~\\\"$instance\\\", verb=\\\"GET\\\"}[$__rate_interval])) by (verb, url, le))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{verb}} {{url}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Get Request Latency 99th Quantile\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"s\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"s\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": false,\n                  \"title\": \"Dashboard Row\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 10,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 4,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"process_resident_memory_bytes{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\",instance=~\\\"$instance\\\"}\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{instance}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Memory\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"bytes\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"bytes\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 11,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 4,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"rate(process_cpu_seconds_total{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\",instance=~\\\"$instance\\\"}[$__rate_interval])\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{instance}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"CPU usage\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 12,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 4,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"go_goroutines{cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\",instance=~\\\"$instance\\\"}\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{instance}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Goroutines\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": false,\n                  \"title\": \"Dashboard Row\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              }\n          ],\n          \"schemaVersion\": 14,\n          \"style\": \"dark\",\n          \"tags\": [\n              \"kubernetes-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data Source\",\n                      \"name\": \"datasource\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"prometheus\",\n                      \"refresh\": 1,\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"allValue\": null,\n                      \"current\": {\n\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": false,\n                      \"label\": \"cluster\",\n                      \"multi\": false,\n                      \"name\": \"cluster\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(up{job=\\\"kube-proxy\\\"}, cluster)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  },\n                  {\n                      \"allValue\": null,\n                      \"current\": {\n\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": true,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"instance\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(up{job=\\\"kube-proxy\\\", cluster=\\\"$cluster\\\", job=\\\"kube-proxy\\\"}, instance)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timepicker\": {\n              \"refresh_intervals\": [\n                  \"5s\",\n                  \"10s\",\n                  \"30s\",\n                  \"1m\",\n                  \"5m\",\n                  \"15m\",\n                  \"30m\",\n                  \"1h\",\n                  \"2h\",\n                  \"1d\"\n              ],\n              \"time_options\": [\n                  \"5m\",\n                  \"15m\",\n                  \"1h\",\n                  \"6h\",\n                  \"12h\",\n                  \"24h\",\n                  \"2d\",\n                  \"7d\",\n                  \"30d\"\n              ]\n          },\n          \"timezone\": \"UTC\",\n          \"title\": \"Kubernetes / Proxy\",\n          \"uid\": \"632e265de029684c40b21cb76bca4f94\",\n          \"version\": 0\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 9.5.3\n    name: grafana-dashboard-proxy\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    scheduler.json: |-\n      {\n          \"__inputs\": [\n\n          ],\n          \"__requires\": [\n\n          ],\n          \"annotations\": {\n              \"list\": [\n\n              ]\n          },\n          \"editable\": false,\n          \"gnetId\": null,\n          \"graphTooltip\": 0,\n          \"hideControls\": false,\n          \"id\": null,\n          \"links\": [\n\n          ],\n          \"refresh\": \"10s\",\n          \"rows\": [\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"cacheTimeout\": null,\n                          \"colorBackground\": false,\n                          \"colorValue\": false,\n                          \"colors\": [\n                              \"#299c46\",\n                              \"rgba(237, 129, 40, 0.89)\",\n                              \"#d44a3a\"\n                          ],\n                          \"datasource\": \"$datasource\",\n                          \"format\": \"none\",\n                          \"gauge\": {\n                              \"maxValue\": 100,\n                              \"minValue\": 0,\n                              \"show\": false,\n                              \"thresholdLabels\": false,\n                              \"thresholdMarkers\": true\n                          },\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 2,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"rightSide\": true\n                          },\n                          \"links\": [\n\n                          ],\n                          \"mappingType\": 1,\n                          \"mappingTypes\": [\n                              {\n                                  \"name\": \"value to text\",\n                                  \"value\": 1\n                              },\n                              {\n                                  \"name\": \"range to text\",\n                                  \"value\": 2\n                              }\n                          ],\n                          \"maxDataPoints\": 100,\n                          \"nullPointMode\": \"connected\",\n                          \"nullText\": null,\n                          \"postfix\": \"\",\n                          \"postfixFontSize\": \"50%\",\n                          \"prefix\": \"\",\n                          \"prefixFontSize\": \"50%\",\n                          \"rangeMaps\": [\n                              {\n                                  \"from\": \"null\",\n                                  \"text\": \"N/A\",\n                                  \"to\": \"null\"\n                              }\n                          ],\n                          \"span\": 2,\n                          \"sparkline\": {\n                              \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n                              \"full\": false,\n                              \"lineColor\": \"rgb(31, 120, 193)\",\n                              \"show\": false\n                          },\n                          \"tableColumn\": \"\",\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(up{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\"})\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": \"\",\n                          \"title\": \"Up\",\n                          \"tooltip\": {\n                              \"shared\": false\n                          },\n                          \"type\": \"singlestat\",\n                          \"valueFontSize\": \"80%\",\n                          \"valueMaps\": [\n                              {\n                                  \"op\": \"=\",\n                                  \"text\": \"N/A\",\n                                  \"value\": \"null\"\n                              }\n                          ],\n                          \"valueName\": \"min\"\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 3,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": true,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": true\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 5,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(rate(scheduler_e2e_scheduling_duration_seconds_count{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (cluster, instance)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{cluster}} {{instance}} e2e\",\n                                  \"refId\": \"A\"\n                              },\n                              {\n                                  \"expr\": \"sum(rate(scheduler_binding_duration_seconds_count{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (cluster, instance)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{cluster}} {{instance}} binding\",\n                                  \"refId\": \"B\"\n                              },\n                              {\n                                  \"expr\": \"sum(rate(scheduler_scheduling_algorithm_duration_seconds_count{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (cluster, instance)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{cluster}} {{instance}} scheduling algorithm\",\n                                  \"refId\": \"C\"\n                              },\n                              {\n                                  \"expr\": \"sum(rate(scheduler_volume_scheduling_duration_seconds_count{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\"}[$__rate_interval])) by (cluster, instance)\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{cluster}} {{instance}} volume\",\n                                  \"refId\": \"D\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Scheduling Rate\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"ops\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"ops\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 4,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": true,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": true\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 5,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"histogram_quantile(0.99, sum(rate(scheduler_e2e_scheduling_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (cluster, instance, le))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{cluster}} {{instance}} e2e\",\n                                  \"refId\": \"A\"\n                              },\n                              {\n                                  \"expr\": \"histogram_quantile(0.99, sum(rate(scheduler_binding_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (cluster, instance, le))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{cluster}} {{instance}} binding\",\n                                  \"refId\": \"B\"\n                              },\n                              {\n                                  \"expr\": \"histogram_quantile(0.99, sum(rate(scheduler_scheduling_algorithm_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (cluster, instance, le))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{cluster}} {{instance}} scheduling algorithm\",\n                                  \"refId\": \"C\"\n                              },\n                              {\n                                  \"expr\": \"histogram_quantile(0.99, sum(rate(scheduler_volume_scheduling_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\",instance=~\\\"$instance\\\"}[$__rate_interval])) by (cluster, instance, le))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{cluster}} {{instance}} volume\",\n                                  \"refId\": \"D\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Scheduling latency 99th Quantile\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"s\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"s\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": false,\n                  \"title\": \"Dashboard Row\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 5,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 4,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\",code=~\\\"2..\\\"}[$__rate_interval]))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"2xx\",\n                                  \"refId\": \"A\"\n                              },\n                              {\n                                  \"expr\": \"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\",code=~\\\"3..\\\"}[$__rate_interval]))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"3xx\",\n                                  \"refId\": \"B\"\n                              },\n                              {\n                                  \"expr\": \"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\",code=~\\\"4..\\\"}[$__rate_interval]))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"4xx\",\n                                  \"refId\": \"C\"\n                              },\n                              {\n                                  \"expr\": \"sum(rate(rest_client_requests_total{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\",code=~\\\"5..\\\"}[$__rate_interval]))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"5xx\",\n                                  \"refId\": \"D\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Kube API Request Rate\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"ops\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"ops\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 6,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 8,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"histogram_quantile(0.99, sum(rate(rest_client_request_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\", verb=\\\"POST\\\"}[$__rate_interval])) by (verb, url, le))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{verb}} {{url}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Post Request Latency 99th Quantile\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"s\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"s\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": false,\n                  \"title\": \"Dashboard Row\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 7,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": true,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": true\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"histogram_quantile(0.99, sum(rate(rest_client_request_duration_seconds_bucket{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\", verb=\\\"GET\\\"}[$__rate_interval])) by (verb, url, le))\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{verb}} {{url}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Get Request Latency 99th Quantile\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"s\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"s\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": false,\n                  \"title\": \"Dashboard Row\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 8,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 4,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"process_resident_memory_bytes{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\"}\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{instance}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Memory\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"bytes\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"bytes\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 9,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 4,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"rate(process_cpu_seconds_total{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\", instance=~\\\"$instance\\\"}[$__rate_interval])\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{instance}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"CPU usage\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"bytes\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"bytes\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 1,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n\n                          },\n                          \"id\": 10,\n                          \"interval\": \"1m\",\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"nullPointMode\": \"null\",\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 4,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"go_goroutines{cluster=\\\"$cluster\\\", job=\\\"kube-scheduler\\\",instance=~\\\"$instance\\\"}\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 2,\n                                  \"legendFormat\": \"{{instance}}\",\n                                  \"refId\": \"A\"\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Goroutines\",\n                          \"tooltip\": {\n                              \"shared\": false,\n                              \"sort\": 0,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"short\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": null,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": false,\n                  \"title\": \"Dashboard Row\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              }\n          ],\n          \"schemaVersion\": 14,\n          \"style\": \"dark\",\n          \"tags\": [\n              \"kubernetes-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data Source\",\n                      \"name\": \"datasource\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"prometheus\",\n                      \"refresh\": 1,\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"allValue\": null,\n                      \"current\": {\n\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": false,\n                      \"label\": \"cluster\",\n                      \"multi\": false,\n                      \"name\": \"cluster\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(up{job=\\\"kube-scheduler\\\"}, cluster)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  },\n                  {\n                      \"allValue\": null,\n                      \"current\": {\n\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": true,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"instance\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(up{job=\\\"kube-scheduler\\\", cluster=\\\"$cluster\\\"}, instance)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timepicker\": {\n              \"refresh_intervals\": [\n                  \"5s\",\n                  \"10s\",\n                  \"30s\",\n                  \"1m\",\n                  \"5m\",\n                  \"15m\",\n                  \"30m\",\n                  \"1h\",\n                  \"2h\",\n                  \"1d\"\n              ],\n              \"time_options\": [\n                  \"5m\",\n                  \"15m\",\n                  \"1h\",\n                  \"6h\",\n                  \"12h\",\n                  \"24h\",\n                  \"2d\",\n                  \"7d\",\n                  \"30d\"\n              ]\n          },\n          \"timezone\": \"UTC\",\n          \"title\": \"Kubernetes / Scheduler\",\n          \"uid\": \"2e6b6a3b4bddf1427b3a55aa1311c656\",\n          \"version\": 0\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 9.5.3\n    name: grafana-dashboard-scheduler\n    namespace: monitoring\n- apiVersion: v1\n  data:\n    workload-total.json: |-\n      {\n          \"__inputs\": [\n\n          ],\n          \"__requires\": [\n\n          ],\n          \"annotations\": {\n              \"list\": [\n                  {\n                      \"builtIn\": 1,\n                      \"datasource\": \"-- Grafana --\",\n                      \"enable\": true,\n                      \"hide\": true,\n                      \"iconColor\": \"rgba(0, 211, 255, 1)\",\n                      \"name\": \"Annotations & Alerts\",\n                      \"type\": \"dashboard\"\n                  }\n              ]\n          },\n          \"editable\": true,\n          \"gnetId\": null,\n          \"graphTooltip\": 0,\n          \"hideControls\": false,\n          \"id\": null,\n          \"links\": [\n\n          ],\n          \"panels\": [\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 0\n                  },\n                  \"id\": 2,\n                  \"panels\": [\n\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Current Bandwidth\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"aliasColors\": {\n\n                  },\n                  \"bars\": true,\n                  \"dashLength\": 10,\n                  \"dashes\": false,\n                  \"datasource\": \"$datasource\",\n                  \"fill\": 2,\n                  \"fillGradient\": 0,\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 1\n                  },\n                  \"id\": 3,\n                  \"legend\": {\n                      \"alignAsTable\": true,\n                      \"avg\": false,\n                      \"current\": true,\n                      \"hideEmpty\": true,\n                      \"hideZero\": true,\n                      \"max\": false,\n                      \"min\": false,\n                      \"rightSide\": true,\n                      \"show\": true,\n                      \"sideWidth\": null,\n                      \"sort\": \"current\",\n                      \"sortDesc\": true,\n                      \"total\": false,\n                      \"values\": true\n                  },\n                  \"lines\": false,\n                  \"linewidth\": 1,\n                  \"links\": [\n\n                  ],\n                  \"minSpan\": 24,\n                  \"nullPointMode\": \"null\",\n                  \"paceLength\": 10,\n                  \"percentage\": false,\n                  \"pointradius\": 5,\n                  \"points\": false,\n                  \"renderer\": \"flot\",\n                  \"repeat\": null,\n                  \"seriesOverrides\": [\n\n                  ],\n                  \"spaceLength\": 10,\n                  \"span\": 24,\n                  \"stack\": false,\n                  \"steppedLine\": false,\n                  \"targets\": [\n                      {\n                          \"expr\": \"sort_desc(sum(irate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 1,\n                          \"legendFormat\": \"{{ pod }}\",\n                          \"refId\": \"A\",\n                          \"step\": 10\n                      }\n                  ],\n                  \"thresholds\": [\n\n                  ],\n                  \"timeFrom\": null,\n                  \"timeShift\": null,\n                  \"title\": \"Current Rate of Bytes Received\",\n                  \"tooltip\": {\n                      \"shared\": true,\n                      \"sort\": 2,\n                      \"value_type\": \"individual\"\n                  },\n                  \"type\": \"graph\",\n                  \"xaxis\": {\n                      \"buckets\": null,\n                      \"mode\": \"series\",\n                      \"name\": null,\n                      \"show\": false,\n                      \"values\": [\n                          \"current\"\n                      ]\n                  },\n                  \"yaxes\": [\n                      {\n                          \"format\": \"Bps\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": 0,\n                          \"show\": true\n                      },\n                      {\n                          \"format\": \"Bps\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": 0,\n                          \"show\": true\n                      }\n                  ]\n              },\n              {\n                  \"aliasColors\": {\n\n                  },\n                  \"bars\": true,\n                  \"dashLength\": 10,\n                  \"dashes\": false,\n                  \"datasource\": \"$datasource\",\n                  \"fill\": 2,\n                  \"fillGradient\": 0,\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 1\n                  },\n                  \"id\": 4,\n                  \"legend\": {\n                      \"alignAsTable\": true,\n                      \"avg\": false,\n                      \"current\": true,\n                      \"hideEmpty\": true,\n                      \"hideZero\": true,\n                      \"max\": false,\n                      \"min\": false,\n                      \"rightSide\": true,\n                      \"show\": true,\n                      \"sideWidth\": null,\n                      \"sort\": \"current\",\n                      \"sortDesc\": true,\n                      \"total\": false,\n                      \"values\": true\n                  },\n                  \"lines\": false,\n                  \"linewidth\": 1,\n                  \"links\": [\n\n                  ],\n                  \"minSpan\": 24,\n                  \"nullPointMode\": \"null\",\n                  \"paceLength\": 10,\n                  \"percentage\": false,\n                  \"pointradius\": 5,\n                  \"points\": false,\n                  \"renderer\": \"flot\",\n                  \"repeat\": null,\n                  \"seriesOverrides\": [\n\n                  ],\n                  \"spaceLength\": 10,\n                  \"span\": 24,\n                  \"stack\": false,\n                  \"steppedLine\": false,\n                  \"targets\": [\n                      {\n                          \"expr\": \"sort_desc(sum(irate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 1,\n                          \"legendFormat\": \"{{ pod }}\",\n                          \"refId\": \"A\",\n                          \"step\": 10\n                      }\n                  ],\n                  \"thresholds\": [\n\n                  ],\n                  \"timeFrom\": null,\n                  \"timeShift\": null,\n                  \"title\": \"Current Rate of Bytes Transmitted\",\n                  \"tooltip\": {\n                      \"shared\": true,\n                      \"sort\": 2,\n                      \"value_type\": \"individual\"\n                  },\n                  \"type\": \"graph\",\n                  \"xaxis\": {\n                      \"buckets\": null,\n                      \"mode\": \"series\",\n                      \"name\": null,\n                      \"show\": false,\n                      \"values\": [\n                          \"current\"\n                      ]\n                  },\n                  \"yaxes\": [\n                      {\n                          \"format\": \"Bps\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": 0,\n                          \"show\": true\n                      },\n                      {\n                          \"format\": \"Bps\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": 0,\n                          \"show\": true\n                      }\n                  ]\n              },\n              {\n                  \"collapse\": true,\n                  \"collapsed\": true,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 10\n                  },\n                  \"id\": 5,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": true,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 2,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n                              \"h\": 9,\n                              \"w\": 12,\n                              \"x\": 0,\n                              \"y\": 11\n                          },\n                          \"id\": 6,\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": true,\n                              \"hideEmpty\": true,\n                              \"hideZero\": true,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"sort\": \"current\",\n                              \"sortDesc\": true,\n                              \"total\": false,\n                              \"values\": true\n                          },\n                          \"lines\": false,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"minSpan\": 24,\n                          \"nullPointMode\": \"null\",\n                          \"paceLength\": 10,\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 24,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sort_desc(avg(irate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 1,\n                                  \"legendFormat\": \"{{ pod }}\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Average Rate of Bytes Received\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"series\",\n                              \"name\": null,\n                              \"show\": false,\n                              \"values\": [\n                                  \"current\"\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"Bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"Bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": true,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 2,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n                              \"h\": 9,\n                              \"w\": 12,\n                              \"x\": 12,\n                              \"y\": 11\n                          },\n                          \"id\": 7,\n                          \"legend\": {\n                              \"alignAsTable\": true,\n                              \"avg\": false,\n                              \"current\": true,\n                              \"hideEmpty\": true,\n                              \"hideZero\": true,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": true,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"sort\": \"current\",\n                              \"sortDesc\": true,\n                              \"total\": false,\n                              \"values\": true\n                          },\n                          \"lines\": false,\n                          \"linewidth\": 1,\n                          \"links\": [\n\n                          ],\n                          \"minSpan\": 24,\n                          \"nullPointMode\": \"null\",\n                          \"paceLength\": 10,\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 24,\n                          \"stack\": false,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sort_desc(avg(irate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 1,\n                                  \"legendFormat\": \"{{ pod }}\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Average Rate of Bytes Transmitted\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"series\",\n                              \"name\": null,\n                              \"show\": false,\n                              \"values\": [\n                                  \"current\"\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"Bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"Bps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Average Bandwidth\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"collapse\": false,\n                  \"collapsed\": false,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 11\n                  },\n                  \"id\": 8,\n                  \"panels\": [\n\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Bandwidth HIstory\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"aliasColors\": {\n\n                  },\n                  \"bars\": false,\n                  \"dashLength\": 10,\n                  \"dashes\": false,\n                  \"datasource\": \"$datasource\",\n                  \"fill\": 2,\n                  \"fillGradient\": 0,\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 0,\n                      \"y\": 12\n                  },\n                  \"id\": 9,\n                  \"legend\": {\n                      \"alignAsTable\": false,\n                      \"avg\": false,\n                      \"current\": false,\n                      \"hideEmpty\": true,\n                      \"hideZero\": true,\n                      \"max\": false,\n                      \"min\": false,\n                      \"rightSide\": false,\n                      \"show\": true,\n                      \"sideWidth\": null,\n                      \"total\": false,\n                      \"values\": false\n                  },\n                  \"lines\": true,\n                  \"linewidth\": 2,\n                  \"links\": [\n\n                  ],\n                  \"minSpan\": 12,\n                  \"nullPointMode\": \"connected\",\n                  \"paceLength\": 10,\n                  \"percentage\": false,\n                  \"pointradius\": 5,\n                  \"points\": false,\n                  \"renderer\": \"flot\",\n                  \"repeat\": null,\n                  \"seriesOverrides\": [\n\n                  ],\n                  \"spaceLength\": 10,\n                  \"span\": 12,\n                  \"stack\": true,\n                  \"steppedLine\": false,\n                  \"targets\": [\n                      {\n                          \"expr\": \"sort_desc(sum(irate(container_network_receive_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 1,\n                          \"legendFormat\": \"{{pod}}\",\n                          \"refId\": \"A\",\n                          \"step\": 10\n                      }\n                  ],\n                  \"thresholds\": [\n\n                  ],\n                  \"timeFrom\": null,\n                  \"timeShift\": null,\n                  \"title\": \"Receive Bandwidth\",\n                  \"tooltip\": {\n                      \"shared\": true,\n                      \"sort\": 2,\n                      \"value_type\": \"individual\"\n                  },\n                  \"type\": \"graph\",\n                  \"xaxis\": {\n                      \"buckets\": null,\n                      \"mode\": \"time\",\n                      \"name\": null,\n                      \"show\": true,\n                      \"values\": [\n\n                      ]\n                  },\n                  \"yaxes\": [\n                      {\n                          \"format\": \"Bps\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": 0,\n                          \"show\": true\n                      },\n                      {\n                          \"format\": \"Bps\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": 0,\n                          \"show\": true\n                      }\n                  ]\n              },\n              {\n                  \"aliasColors\": {\n\n                  },\n                  \"bars\": false,\n                  \"dashLength\": 10,\n                  \"dashes\": false,\n                  \"datasource\": \"$datasource\",\n                  \"fill\": 2,\n                  \"fillGradient\": 0,\n                  \"gridPos\": {\n                      \"h\": 9,\n                      \"w\": 12,\n                      \"x\": 12,\n                      \"y\": 12\n                  },\n                  \"id\": 10,\n                  \"legend\": {\n                      \"alignAsTable\": false,\n                      \"avg\": false,\n                      \"current\": false,\n                      \"hideEmpty\": true,\n                      \"hideZero\": true,\n                      \"max\": false,\n                      \"min\": false,\n                      \"rightSide\": false,\n                      \"show\": true,\n                      \"sideWidth\": null,\n                      \"total\": false,\n                      \"values\": false\n                  },\n                  \"lines\": true,\n                  \"linewidth\": 2,\n                  \"links\": [\n\n                  ],\n                  \"minSpan\": 12,\n                  \"nullPointMode\": \"connected\",\n                  \"paceLength\": 10,\n                  \"percentage\": false,\n                  \"pointradius\": 5,\n                  \"points\": false,\n                  \"renderer\": \"flot\",\n                  \"repeat\": null,\n                  \"seriesOverrides\": [\n\n                  ],\n                  \"spaceLength\": 10,\n                  \"span\": 12,\n                  \"stack\": true,\n                  \"steppedLine\": false,\n                  \"targets\": [\n                      {\n                          \"expr\": \"sort_desc(sum(irate(container_network_transmit_bytes_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                          \"format\": \"time_series\",\n                          \"intervalFactor\": 1,\n                          \"legendFormat\": \"{{pod}}\",\n                          \"refId\": \"A\",\n                          \"step\": 10\n                      }\n                  ],\n                  \"thresholds\": [\n\n                  ],\n                  \"timeFrom\": null,\n                  \"timeShift\": null,\n                  \"title\": \"Transmit Bandwidth\",\n                  \"tooltip\": {\n                      \"shared\": true,\n                      \"sort\": 2,\n                      \"value_type\": \"individual\"\n                  },\n                  \"type\": \"graph\",\n                  \"xaxis\": {\n                      \"buckets\": null,\n                      \"mode\": \"time\",\n                      \"name\": null,\n                      \"show\": true,\n                      \"values\": [\n\n                      ]\n                  },\n                  \"yaxes\": [\n                      {\n                          \"format\": \"Bps\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": 0,\n                          \"show\": true\n                      },\n                      {\n                          \"format\": \"Bps\",\n                          \"label\": null,\n                          \"logBase\": 1,\n                          \"max\": null,\n                          \"min\": 0,\n                          \"show\": true\n                      }\n                  ]\n              },\n              {\n                  \"collapse\": true,\n                  \"collapsed\": true,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 21\n                  },\n                  \"id\": 11,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 2,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n                              \"h\": 9,\n                              \"w\": 12,\n                              \"x\": 0,\n                              \"y\": 22\n                          },\n                          \"id\": 12,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"hideEmpty\": true,\n                              \"hideZero\": true,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 2,\n                          \"links\": [\n\n                          ],\n                          \"minSpan\": 12,\n                          \"nullPointMode\": \"connected\",\n                          \"paceLength\": 10,\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sort_desc(sum(irate(container_network_receive_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 1,\n                                  \"legendFormat\": \"{{pod}}\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Rate of Received Packets\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 2,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n                              \"h\": 9,\n                              \"w\": 12,\n                              \"x\": 12,\n                              \"y\": 22\n                          },\n                          \"id\": 13,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"hideEmpty\": true,\n                              \"hideZero\": true,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 2,\n                          \"links\": [\n\n                          ],\n                          \"minSpan\": 12,\n                          \"nullPointMode\": \"connected\",\n                          \"paceLength\": 10,\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sort_desc(sum(irate(container_network_transmit_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 1,\n                                  \"legendFormat\": \"{{pod}}\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Rate of Transmitted Packets\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Packets\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              },\n              {\n                  \"collapse\": true,\n                  \"collapsed\": true,\n                  \"gridPos\": {\n                      \"h\": 1,\n                      \"w\": 24,\n                      \"x\": 0,\n                      \"y\": 22\n                  },\n                  \"id\": 14,\n                  \"panels\": [\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 2,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n                              \"h\": 9,\n                              \"w\": 12,\n                              \"x\": 0,\n                              \"y\": 23\n                          },\n                          \"id\": 15,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"hideEmpty\": true,\n                              \"hideZero\": true,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 2,\n                          \"links\": [\n\n                          ],\n                          \"minSpan\": 12,\n                          \"nullPointMode\": \"connected\",\n                          \"paceLength\": 10,\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sort_desc(sum(irate(container_network_receive_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 1,\n                                  \"legendFormat\": \"{{pod}}\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Rate of Received Packets Dropped\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      },\n                      {\n                          \"aliasColors\": {\n\n                          },\n                          \"bars\": false,\n                          \"dashLength\": 10,\n                          \"dashes\": false,\n                          \"datasource\": \"$datasource\",\n                          \"fill\": 2,\n                          \"fillGradient\": 0,\n                          \"gridPos\": {\n                              \"h\": 9,\n                              \"w\": 12,\n                              \"x\": 12,\n                              \"y\": 23\n                          },\n                          \"id\": 16,\n                          \"legend\": {\n                              \"alignAsTable\": false,\n                              \"avg\": false,\n                              \"current\": false,\n                              \"hideEmpty\": true,\n                              \"hideZero\": true,\n                              \"max\": false,\n                              \"min\": false,\n                              \"rightSide\": false,\n                              \"show\": true,\n                              \"sideWidth\": null,\n                              \"total\": false,\n                              \"values\": false\n                          },\n                          \"lines\": true,\n                          \"linewidth\": 2,\n                          \"links\": [\n\n                          ],\n                          \"minSpan\": 12,\n                          \"nullPointMode\": \"connected\",\n                          \"paceLength\": 10,\n                          \"percentage\": false,\n                          \"pointradius\": 5,\n                          \"points\": false,\n                          \"renderer\": \"flot\",\n                          \"repeat\": null,\n                          \"seriesOverrides\": [\n\n                          ],\n                          \"spaceLength\": 10,\n                          \"span\": 12,\n                          \"stack\": true,\n                          \"steppedLine\": false,\n                          \"targets\": [\n                              {\n                                  \"expr\": \"sort_desc(sum(irate(container_network_transmit_packets_dropped_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}[$interval:$resolution])\\n* on (namespace,pod)\\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\", workload_type=\\\"$type\\\"}) by (pod))\\n\",\n                                  \"format\": \"time_series\",\n                                  \"intervalFactor\": 1,\n                                  \"legendFormat\": \"{{pod}}\",\n                                  \"refId\": \"A\",\n                                  \"step\": 10\n                              }\n                          ],\n                          \"thresholds\": [\n\n                          ],\n                          \"timeFrom\": null,\n                          \"timeShift\": null,\n                          \"title\": \"Rate of Transmitted Packets Dropped\",\n                          \"tooltip\": {\n                              \"shared\": true,\n                              \"sort\": 2,\n                              \"value_type\": \"individual\"\n                          },\n                          \"type\": \"graph\",\n                          \"xaxis\": {\n                              \"buckets\": null,\n                              \"mode\": \"time\",\n                              \"name\": null,\n                              \"show\": true,\n                              \"values\": [\n\n                              ]\n                          },\n                          \"yaxes\": [\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              },\n                              {\n                                  \"format\": \"pps\",\n                                  \"label\": null,\n                                  \"logBase\": 1,\n                                  \"max\": null,\n                                  \"min\": 0,\n                                  \"show\": true\n                              }\n                          ]\n                      }\n                  ],\n                  \"repeat\": null,\n                  \"repeatIteration\": null,\n                  \"repeatRowId\": null,\n                  \"showTitle\": true,\n                  \"title\": \"Errors\",\n                  \"titleSize\": \"h6\",\n                  \"type\": \"row\"\n              }\n          ],\n          \"refresh\": \"10s\",\n          \"rows\": [\n\n          ],\n          \"schemaVersion\": 18,\n          \"style\": \"dark\",\n          \"tags\": [\n              \"kubernetes-mixin\"\n          ],\n          \"templating\": {\n              \"list\": [\n                  {\n                      \"current\": {\n                          \"text\": \"default\",\n                          \"value\": \"default\"\n                      },\n                      \"hide\": 0,\n                      \"label\": \"Data Source\",\n                      \"name\": \"datasource\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"prometheus\",\n                      \"refresh\": 1,\n                      \"regex\": \"\",\n                      \"type\": \"datasource\"\n                  },\n                  {\n                      \"allValue\": null,\n                      \"current\": {\n\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": false,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"cluster\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(kube_pod_info{job=\\\"kube-state-metrics\\\"}, cluster)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"sort\": 0,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  },\n                  {\n                      \"allValue\": \".+\",\n                      \"auto\": false,\n                      \"auto_count\": 30,\n                      \"auto_min\": \"10s\",\n                      \"current\": {\n                          \"text\": \"kube-system\",\n                          \"value\": \"kube-system\"\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"definition\": \"label_values(container_network_receive_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\"}, namespace)\",\n                      \"hide\": 0,\n                      \"includeAll\": true,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"namespace\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(container_network_receive_packets_total{job=\\\"kubelet\\\", metrics_path=\\\"/metrics/cadvisor\\\", cluster=\\\"$cluster\\\"}, namespace)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"skipUrlSync\": false,\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  },\n                  {\n                      \"allValue\": null,\n                      \"auto\": false,\n                      \"auto_count\": 30,\n                      \"auto_min\": \"10s\",\n                      \"current\": {\n                          \"text\": \"\",\n                          \"value\": \"\"\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"definition\": \"label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}, workload)\",\n                      \"hide\": 0,\n                      \"includeAll\": false,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"workload\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\"}, workload)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"skipUrlSync\": false,\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  },\n                  {\n                      \"allValue\": null,\n                      \"auto\": false,\n                      \"auto_count\": 30,\n                      \"auto_min\": \"10s\",\n                      \"current\": {\n                          \"text\": \"deployment\",\n                          \"value\": \"deployment\"\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"definition\": \"label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\"}, workload_type)\",\n                      \"hide\": 0,\n                      \"includeAll\": false,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"type\",\n                      \"options\": [\n\n                      ],\n                      \"query\": \"label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\\\"$cluster\\\",namespace=~\\\"$namespace\\\", workload=~\\\"$workload\\\"}, workload_type)\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"skipUrlSync\": false,\n                      \"sort\": 0,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"query\",\n                      \"useTags\": false\n                  },\n                  {\n                      \"allValue\": null,\n                      \"auto\": false,\n                      \"auto_count\": 30,\n                      \"auto_min\": \"10s\",\n                      \"current\": {\n                          \"text\": \"5m\",\n                          \"value\": \"5m\"\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 0,\n                      \"includeAll\": false,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"resolution\",\n                      \"options\": [\n                          {\n                              \"selected\": false,\n                              \"text\": \"30s\",\n                              \"value\": \"30s\"\n                          },\n                          {\n                              \"selected\": true,\n                              \"text\": \"5m\",\n                              \"value\": \"5m\"\n                          },\n                          {\n                              \"selected\": false,\n                              \"text\": \"1h\",\n                              \"value\": \"1h\"\n                          }\n                      ],\n                      \"query\": \"30s,5m,1h\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"skipUrlSync\": false,\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"interval\",\n                      \"useTags\": false\n                  },\n                  {\n                      \"allValue\": null,\n                      \"auto\": false,\n                      \"auto_count\": 30,\n                      \"auto_min\": \"10s\",\n                      \"current\": {\n                          \"text\": \"5m\",\n                          \"value\": \"5m\"\n                      },\n                      \"datasource\": \"$datasource\",\n                      \"hide\": 2,\n                      \"includeAll\": false,\n                      \"label\": null,\n                      \"multi\": false,\n                      \"name\": \"interval\",\n                      \"options\": [\n                          {\n                              \"selected\": true,\n                              \"text\": \"4h\",\n                              \"value\": \"4h\"\n                          }\n                      ],\n                      \"query\": \"4h\",\n                      \"refresh\": 2,\n                      \"regex\": \"\",\n                      \"skipUrlSync\": false,\n                      \"sort\": 1,\n                      \"tagValuesQuery\": \"\",\n                      \"tags\": [\n\n                      ],\n                      \"tagsQuery\": \"\",\n                      \"type\": \"interval\",\n                      \"useTags\": false\n                  }\n              ]\n          },\n          \"time\": {\n              \"from\": \"now-1h\",\n              \"to\": \"now\"\n          },\n          \"timepicker\": {\n              \"refresh_intervals\": [\n                  \"5s\",\n                  \"10s\",\n                  \"30s\",\n                  \"1m\",\n                  \"5m\",\n                  \"15m\",\n                  \"30m\",\n                  \"1h\",\n                  \"2h\",\n                  \"1d\"\n              ],\n              \"time_options\": [\n                  \"5m\",\n                  \"15m\",\n                  \"1h\",\n                  \"6h\",\n                  \"12h\",\n                  \"24h\",\n                  \"2d\",\n                  \"7d\",\n                  \"30d\"\n              ]\n          },\n          \"timezone\": \"UTC\",\n          \"title\": \"Kubernetes / Networking / Workload\",\n          \"uid\": \"728bf77cc1166d2f3133bf25846876cc\",\n          \"version\": 0\n      }\n  kind: ConfigMap\n  metadata:\n    labels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 9.5.3\n    name: grafana-dashboard-workload-total\n    namespace: monitoring\nkind: ConfigMapList\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/grafana-dashboardSources.yaml",
    "content": "apiVersion: v1\ndata:\n  dashboards.yaml: |-\n    {\n        \"apiVersion\": 1,\n        \"providers\": [\n            {\n                \"folder\": \"Default\",\n                \"folderUid\": \"\",\n                \"name\": \"0\",\n                \"options\": {\n                    \"path\": \"/grafana-dashboard-definitions/0\"\n                },\n                \"orgId\": 1,\n                \"type\": \"file\"\n            }\n        ]\n    }\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 9.5.3\n  name: grafana-dashboards\n  namespace: monitoring\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/grafana-deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 9.5.3\n  name: grafana\n  namespace: monitoring\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n  template:\n    metadata:\n      annotations:\n        checksum/grafana-config: 5c598ba58d9b65011bdbb3864138399a\n        checksum/grafana-dashboardproviders: c9c1743868aa1c3dab60d2c402e2dcf0\n        checksum/grafana-datasources: 5ef0e6acaa5b4e8603740fbad440717d\n      labels:\n        app.kubernetes.io/component: grafana\n        app.kubernetes.io/name: grafana\n        app.kubernetes.io/part-of: kube-prometheus\n        app.kubernetes.io/version: 9.5.3\n    spec:\n      automountServiceAccountToken: false\n      containers:\n      - env: []\n        image: grafana/grafana:9.5.3\n        name: grafana\n        ports:\n        - containerPort: 3000\n          name: http\n        readinessProbe:\n          httpGet:\n            path: /api/health\n            port: http\n        resources:\n          limits:\n            cpu: 200m\n            memory: 200Mi\n          requests:\n            cpu: 100m\n            memory: 100Mi\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          seccompProfile:\n            type: RuntimeDefault\n        volumeMounts:\n        - mountPath: /var/lib/grafana\n          name: grafana-storage\n          readOnly: false\n        - mountPath: /etc/grafana/provisioning/datasources\n          name: grafana-datasources\n          readOnly: false\n        - mountPath: /etc/grafana/provisioning/dashboards\n          name: grafana-dashboards\n          readOnly: false\n        - mountPath: /tmp\n          name: tmp-plugins\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/alertmanager-overview\n          name: grafana-dashboard-alertmanager-overview\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/apiserver\n          name: grafana-dashboard-apiserver\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/cluster-total\n          name: grafana-dashboard-cluster-total\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/controller-manager\n          name: grafana-dashboard-controller-manager\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/grafana-overview\n          name: grafana-dashboard-grafana-overview\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/k8s-resources-cluster\n          name: grafana-dashboard-k8s-resources-cluster\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/k8s-resources-multicluster\n          name: grafana-dashboard-k8s-resources-multicluster\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/k8s-resources-namespace\n          name: grafana-dashboard-k8s-resources-namespace\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/k8s-resources-node\n          name: grafana-dashboard-k8s-resources-node\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/k8s-resources-pod\n          name: grafana-dashboard-k8s-resources-pod\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/k8s-resources-workload\n          name: grafana-dashboard-k8s-resources-workload\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/k8s-resources-workloads-namespace\n          name: grafana-dashboard-k8s-resources-workloads-namespace\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/kubelet\n          name: grafana-dashboard-kubelet\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/namespace-by-pod\n          name: grafana-dashboard-namespace-by-pod\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/namespace-by-workload\n          name: grafana-dashboard-namespace-by-workload\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/node-cluster-rsrc-use\n          name: grafana-dashboard-node-cluster-rsrc-use\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/node-rsrc-use\n          name: grafana-dashboard-node-rsrc-use\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/nodes-darwin\n          name: grafana-dashboard-nodes-darwin\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/nodes\n          name: grafana-dashboard-nodes\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/persistentvolumesusage\n          name: grafana-dashboard-persistentvolumesusage\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/pod-total\n          name: grafana-dashboard-pod-total\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/prometheus-remote-write\n          name: grafana-dashboard-prometheus-remote-write\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/prometheus\n          name: grafana-dashboard-prometheus\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/proxy\n          name: grafana-dashboard-proxy\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/scheduler\n          name: grafana-dashboard-scheduler\n          readOnly: false\n        - mountPath: /grafana-dashboard-definitions/0/workload-total\n          name: grafana-dashboard-workload-total\n          readOnly: false\n        - mountPath: /etc/grafana\n          name: grafana-config\n          readOnly: false\n      nodeSelector:\n        kubernetes.io/os: linux\n      securityContext:\n        fsGroup: 65534\n        runAsNonRoot: true\n        runAsUser: 65534\n      serviceAccountName: grafana\n      volumes:\n      - emptyDir: {}\n        name: grafana-storage\n      - name: grafana-datasources\n        secret:\n          secretName: grafana-datasources\n      - configMap:\n          name: grafana-dashboards\n        name: grafana-dashboards\n      - emptyDir:\n          medium: Memory\n        name: tmp-plugins\n      - configMap:\n          name: grafana-dashboard-alertmanager-overview\n        name: grafana-dashboard-alertmanager-overview\n      - configMap:\n          name: grafana-dashboard-apiserver\n        name: grafana-dashboard-apiserver\n      - configMap:\n          name: grafana-dashboard-cluster-total\n        name: grafana-dashboard-cluster-total\n      - configMap:\n          name: grafana-dashboard-controller-manager\n        name: grafana-dashboard-controller-manager\n      - configMap:\n          name: grafana-dashboard-grafana-overview\n        name: grafana-dashboard-grafana-overview\n      - configMap:\n          name: grafana-dashboard-k8s-resources-cluster\n        name: grafana-dashboard-k8s-resources-cluster\n      - configMap:\n          name: grafana-dashboard-k8s-resources-multicluster\n        name: grafana-dashboard-k8s-resources-multicluster\n      - configMap:\n          name: grafana-dashboard-k8s-resources-namespace\n        name: grafana-dashboard-k8s-resources-namespace\n      - configMap:\n          name: grafana-dashboard-k8s-resources-node\n        name: grafana-dashboard-k8s-resources-node\n      - configMap:\n          name: grafana-dashboard-k8s-resources-pod\n        name: grafana-dashboard-k8s-resources-pod\n      - configMap:\n          name: grafana-dashboard-k8s-resources-workload\n        name: grafana-dashboard-k8s-resources-workload\n      - configMap:\n          name: grafana-dashboard-k8s-resources-workloads-namespace\n        name: grafana-dashboard-k8s-resources-workloads-namespace\n      - configMap:\n          name: grafana-dashboard-kubelet\n        name: grafana-dashboard-kubelet\n      - configMap:\n          name: grafana-dashboard-namespace-by-pod\n        name: grafana-dashboard-namespace-by-pod\n      - configMap:\n          name: grafana-dashboard-namespace-by-workload\n        name: grafana-dashboard-namespace-by-workload\n      - configMap:\n          name: grafana-dashboard-node-cluster-rsrc-use\n        name: grafana-dashboard-node-cluster-rsrc-use\n      - configMap:\n          name: grafana-dashboard-node-rsrc-use\n        name: grafana-dashboard-node-rsrc-use\n      - configMap:\n          name: grafana-dashboard-nodes-darwin\n        name: grafana-dashboard-nodes-darwin\n      - configMap:\n          name: grafana-dashboard-nodes\n        name: grafana-dashboard-nodes\n      - configMap:\n          name: grafana-dashboard-persistentvolumesusage\n        name: grafana-dashboard-persistentvolumesusage\n      - configMap:\n          name: grafana-dashboard-pod-total\n        name: grafana-dashboard-pod-total\n      - configMap:\n          name: grafana-dashboard-prometheus-remote-write\n        name: grafana-dashboard-prometheus-remote-write\n      - configMap:\n          name: grafana-dashboard-prometheus\n        name: grafana-dashboard-prometheus\n      - configMap:\n          name: grafana-dashboard-proxy\n        name: grafana-dashboard-proxy\n      - configMap:\n          name: grafana-dashboard-scheduler\n        name: grafana-dashboard-scheduler\n      - configMap:\n          name: grafana-dashboard-workload-total\n        name: grafana-dashboard-workload-total\n      - name: grafana-config\n        secret:\n          secretName: grafana-config\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/grafana-networkPolicy.yaml",
    "content": "apiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 9.5.3\n  name: grafana\n  namespace: monitoring\nspec:\n  egress:\n  - {}\n  ingress:\n  - from:\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: prometheus\n    ports:\n    - port: 3000\n      protocol: TCP\n  podSelector:\n    matchLabels:\n      app.kubernetes.io/component: grafana\n      app.kubernetes.io/name: grafana\n      app.kubernetes.io/part-of: kube-prometheus\n  policyTypes:\n  - Egress\n  - Ingress\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/grafana-prometheusRule.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 9.5.3\n    prometheus: k8s\n    role: alert-rules\n  name: grafana-rules\n  namespace: monitoring\nspec:\n  groups:\n  - name: GrafanaAlerts\n    rules:\n    - alert: GrafanaRequestsFailing\n      annotations:\n        message: '{{ $labels.namespace }}/{{ $labels.job }}/{{ $labels.handler }} is experiencing {{ $value | humanize }}% errors'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/grafana/grafanarequestsfailing\n      expr: |\n        100 * namespace_job_handler_statuscode:grafana_http_request_duration_seconds_count:rate5m{handler!~\"/api/datasources/proxy/:id.*|/api/ds/query|/api/tsdb/query\", status_code=~\"5..\"}\n        / ignoring (status_code)\n        sum without (status_code) (namespace_job_handler_statuscode:grafana_http_request_duration_seconds_count:rate5m{handler!~\"/api/datasources/proxy/:id.*|/api/ds/query|/api/tsdb/query\"})\n        > 50\n      for: 5m\n      labels:\n        severity: warning\n  - name: grafana_rules\n    rules:\n    - expr: |\n        sum by (namespace, job, handler, status_code) (rate(grafana_http_request_duration_seconds_count[5m]))\n      record: namespace_job_handler_statuscode:grafana_http_request_duration_seconds_count:rate5m\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/grafana-service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 9.5.3\n  name: grafana\n  namespace: monitoring\nspec:\n  ports:\n  - name: http\n    port: 3000\n    targetPort: http\n  selector:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/grafana-serviceAccount.yaml",
    "content": "apiVersion: v1\nautomountServiceAccountToken: false\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 9.5.3\n  name: grafana\n  namespace: monitoring\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/grafana-serviceMonitor.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  labels:\n    app.kubernetes.io/component: grafana\n    app.kubernetes.io/name: grafana\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 9.5.3\n  name: grafana\n  namespace: monitoring\nspec:\n  endpoints:\n  - interval: 15s\n    port: http\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: grafana\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/kubePrometheus-prometheusRule.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: kube-prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n    prometheus: k8s\n    role: alert-rules\n  name: kube-prometheus-rules\n  namespace: monitoring\nspec:\n  groups:\n  - name: general.rules\n    rules:\n    - alert: TargetDown\n      annotations:\n        description: '{{ printf \"%.4g\" $value }}% of the {{ $labels.job }}/{{ $labels.service }} targets in {{ $labels.namespace }} namespace are down.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/general/targetdown\n        summary: One or more targets are unreachable.\n      expr: 100 * (count(up == 0) BY (cluster, job, namespace, service) / count(up) BY (cluster, job, namespace, service)) > 10\n      for: 10m\n      labels:\n        severity: warning\n    - alert: Watchdog\n      annotations:\n        description: |\n          This is an alert meant to ensure that the entire alerting pipeline is functional.\n          This alert is always firing, therefore it should always be firing in Alertmanager\n          and always fire against a receiver. There are integrations with various notification\n          mechanisms that send a notification when this alert is not firing. For example the\n          \"DeadMansSnitch\" integration in PagerDuty.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/general/watchdog\n        summary: An alert that should always be firing to certify that Alertmanager is working properly.\n      expr: vector(1)\n      labels:\n        severity: none\n    - alert: InfoInhibitor\n      annotations:\n        description: |\n          This is an alert that is used to inhibit info alerts.\n          By themselves, the info-level alerts are sometimes very noisy, but they are relevant when combined with\n          other alerts.\n          This alert fires whenever there's a severity=\"info\" alert, and stops firing when another alert with a\n          severity of 'warning' or 'critical' starts firing on the same namespace.\n          This alert should be routed to a null receiver and configured to inhibit alerts with severity=\"info\".\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/general/infoinhibitor\n        summary: Info-level alert inhibition.\n      expr: ALERTS{severity = \"info\"} == 1 unless on(namespace) ALERTS{alertname != \"InfoInhibitor\", severity =~ \"warning|critical\", alertstate=\"firing\"} == 1\n      labels:\n        severity: none\n  - name: node-network\n    rules:\n    - alert: NodeNetworkInterfaceFlapping\n      annotations:\n        description: Network interface \"{{ $labels.device }}\" changing its up status often on node-exporter {{ $labels.namespace }}/{{ $labels.pod }}\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/general/nodenetworkinterfaceflapping\n        summary: Network interface is often changing its status\n      expr: |\n        changes(node_network_up{job=\"node-exporter\",device!~\"veth.+\"}[2m]) > 2\n      for: 2m\n      labels:\n        severity: warning\n  - name: kube-prometheus-node-recording.rules\n    rules:\n    - expr: sum(rate(node_cpu_seconds_total{mode!=\"idle\",mode!=\"iowait\",mode!=\"steal\"}[3m])) BY (instance)\n      record: instance:node_cpu:rate:sum\n    - expr: sum(rate(node_network_receive_bytes_total[3m])) BY (instance)\n      record: instance:node_network_receive_bytes:rate:sum\n    - expr: sum(rate(node_network_transmit_bytes_total[3m])) BY (instance)\n      record: instance:node_network_transmit_bytes:rate:sum\n    - expr: sum(rate(node_cpu_seconds_total{mode!=\"idle\",mode!=\"iowait\",mode!=\"steal\"}[5m])) WITHOUT (cpu, mode) / ON(instance) GROUP_LEFT() count(sum(node_cpu_seconds_total) BY (instance, cpu)) BY (instance)\n      record: instance:node_cpu:ratio\n    - expr: sum(rate(node_cpu_seconds_total{mode!=\"idle\",mode!=\"iowait\",mode!=\"steal\"}[5m]))\n      record: cluster:node_cpu:sum_rate5m\n    - expr: cluster:node_cpu:sum_rate5m / count(sum(node_cpu_seconds_total) BY (instance, cpu))\n      record: cluster:node_cpu:ratio\n  - name: kube-prometheus-general.rules\n    rules:\n    - expr: count without(instance, pod, node) (up == 1)\n      record: count:up1\n    - expr: count without(instance, pod, node) (up == 0)\n      record: count:up0\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/kubeStateMetrics-clusterRole.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: kube-state-metrics\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.9.2\n  name: kube-state-metrics\nrules:\n- apiGroups:\n  - \"\"\n  resources:\n  - configmaps\n  - secrets\n  - nodes\n  - pods\n  - services\n  - serviceaccounts\n  - resourcequotas\n  - replicationcontrollers\n  - limitranges\n  - persistentvolumeclaims\n  - persistentvolumes\n  - namespaces\n  - endpoints\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - apps\n  resources:\n  - statefulsets\n  - daemonsets\n  - deployments\n  - replicasets\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - batch\n  resources:\n  - cronjobs\n  - jobs\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - autoscaling\n  resources:\n  - horizontalpodautoscalers\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - authentication.k8s.io\n  resources:\n  - tokenreviews\n  verbs:\n  - create\n- apiGroups:\n  - authorization.k8s.io\n  resources:\n  - subjectaccessreviews\n  verbs:\n  - create\n- apiGroups:\n  - policy\n  resources:\n  - poddisruptionbudgets\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - certificates.k8s.io\n  resources:\n  - certificatesigningrequests\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - discovery.k8s.io\n  resources:\n  - endpointslices\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - storage.k8s.io\n  resources:\n  - storageclasses\n  - volumeattachments\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - admissionregistration.k8s.io\n  resources:\n  - mutatingwebhookconfigurations\n  - validatingwebhookconfigurations\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - networking.k8s.io\n  resources:\n  - networkpolicies\n  - ingressclasses\n  - ingresses\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - coordination.k8s.io\n  resources:\n  - leases\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - rbac.authorization.k8s.io\n  resources:\n  - clusterrolebindings\n  - clusterroles\n  - rolebindings\n  - roles\n  verbs:\n  - list\n  - watch\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/kubeStateMetrics-clusterRoleBinding.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: kube-state-metrics\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.9.2\n  name: kube-state-metrics\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: kube-state-metrics\nsubjects:\n- kind: ServiceAccount\n  name: kube-state-metrics\n  namespace: monitoring\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/kubeStateMetrics-deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: kube-state-metrics\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.9.2\n  name: kube-state-metrics\n  namespace: monitoring\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: exporter\n      app.kubernetes.io/name: kube-state-metrics\n      app.kubernetes.io/part-of: kube-prometheus\n  template:\n    metadata:\n      annotations:\n        kubectl.kubernetes.io/default-container: kube-state-metrics\n      labels:\n        app.kubernetes.io/component: exporter\n        app.kubernetes.io/name: kube-state-metrics\n        app.kubernetes.io/part-of: kube-prometheus\n        app.kubernetes.io/version: 2.9.2\n    spec:\n      automountServiceAccountToken: true\n      containers:\n      - args:\n        - --host=127.0.0.1\n        - --port=8081\n        - --telemetry-host=127.0.0.1\n        - --telemetry-port=8082\n        image: registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.9.2\n        name: kube-state-metrics\n        resources:\n          limits:\n            cpu: 100m\n            memory: 250Mi\n          requests:\n            cpu: 10m\n            memory: 190Mi\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsNonRoot: true\n          runAsUser: 65534\n          seccompProfile:\n            type: RuntimeDefault\n      - args:\n        - --logtostderr\n        - --secure-listen-address=:8443\n        - --tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305\n        - --upstream=http://127.0.0.1:8081/\n        image: quay.io/brancz/kube-rbac-proxy:v0.14.2\n        name: kube-rbac-proxy-main\n        ports:\n        - containerPort: 8443\n          name: https-main\n        resources:\n          limits:\n            cpu: 40m\n            memory: 40Mi\n          requests:\n            cpu: 20m\n            memory: 20Mi\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsGroup: 65532\n          runAsNonRoot: true\n          runAsUser: 65532\n      - args:\n        - --logtostderr\n        - --secure-listen-address=:9443\n        - --tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305\n        - --upstream=http://127.0.0.1:8082/\n        image: quay.io/brancz/kube-rbac-proxy:v0.14.2\n        name: kube-rbac-proxy-self\n        ports:\n        - containerPort: 9443\n          name: https-self\n        resources:\n          limits:\n            cpu: 20m\n            memory: 40Mi\n          requests:\n            cpu: 10m\n            memory: 20Mi\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsGroup: 65532\n          runAsNonRoot: true\n          runAsUser: 65532\n      nodeSelector:\n        kubernetes.io/os: linux\n      serviceAccountName: kube-state-metrics\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/kubeStateMetrics-networkPolicy.yaml",
    "content": "apiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: kube-state-metrics\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.9.2\n  name: kube-state-metrics\n  namespace: monitoring\nspec:\n  egress:\n  - {}\n  ingress:\n  - from:\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: prometheus\n    ports:\n    - port: 8443\n      protocol: TCP\n    - port: 9443\n      protocol: TCP\n  podSelector:\n    matchLabels:\n      app.kubernetes.io/component: exporter\n      app.kubernetes.io/name: kube-state-metrics\n      app.kubernetes.io/part-of: kube-prometheus\n  policyTypes:\n  - Egress\n  - Ingress\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/kubeStateMetrics-prometheusRule.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: kube-state-metrics\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.9.2\n    prometheus: k8s\n    role: alert-rules\n  name: kube-state-metrics-rules\n  namespace: monitoring\nspec:\n  groups:\n  - name: kube-state-metrics\n    rules:\n    - alert: KubeStateMetricsListErrors\n      annotations:\n        description: kube-state-metrics is experiencing errors at an elevated rate in list operations. This is likely causing it to not be able to expose metrics about Kubernetes objects correctly or at all.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kube-state-metrics/kubestatemetricslisterrors\n        summary: kube-state-metrics is experiencing errors in list operations.\n      expr: |\n        (sum(rate(kube_state_metrics_list_total{job=\"kube-state-metrics\",result=\"error\"}[5m])) by (cluster)\n          /\n        sum(rate(kube_state_metrics_list_total{job=\"kube-state-metrics\"}[5m])) by (cluster))\n        > 0.01\n      for: 15m\n      labels:\n        severity: critical\n    - alert: KubeStateMetricsWatchErrors\n      annotations:\n        description: kube-state-metrics is experiencing errors at an elevated rate in watch operations. This is likely causing it to not be able to expose metrics about Kubernetes objects correctly or at all.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kube-state-metrics/kubestatemetricswatcherrors\n        summary: kube-state-metrics is experiencing errors in watch operations.\n      expr: |\n        (sum(rate(kube_state_metrics_watch_total{job=\"kube-state-metrics\",result=\"error\"}[5m])) by (cluster)\n          /\n        sum(rate(kube_state_metrics_watch_total{job=\"kube-state-metrics\"}[5m])) by (cluster))\n        > 0.01\n      for: 15m\n      labels:\n        severity: critical\n    - alert: KubeStateMetricsShardingMismatch\n      annotations:\n        description: kube-state-metrics pods are running with different --total-shards configuration, some Kubernetes objects may be exposed multiple times or not exposed at all.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kube-state-metrics/kubestatemetricsshardingmismatch\n        summary: kube-state-metrics sharding is misconfigured.\n      expr: |\n        stdvar (kube_state_metrics_total_shards{job=\"kube-state-metrics\"}) by (cluster) != 0\n      for: 15m\n      labels:\n        severity: critical\n    - alert: KubeStateMetricsShardsMissing\n      annotations:\n        description: kube-state-metrics shards are missing, some Kubernetes objects are not being exposed.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kube-state-metrics/kubestatemetricsshardsmissing\n        summary: kube-state-metrics shards are missing.\n      expr: |\n        2^max(kube_state_metrics_total_shards{job=\"kube-state-metrics\"}) by (cluster) - 1\n          -\n        sum( 2 ^ max by (cluster, shard_ordinal) (kube_state_metrics_shard_ordinal{job=\"kube-state-metrics\"}) ) by (cluster)\n        != 0\n      for: 15m\n      labels:\n        severity: critical\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/kubeStateMetrics-service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: kube-state-metrics\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.9.2\n  name: kube-state-metrics\n  namespace: monitoring\nspec:\n  clusterIP: None\n  ports:\n  - name: https-main\n    port: 8443\n    targetPort: https-main\n  - name: https-self\n    port: 9443\n    targetPort: https-self\n  selector:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: kube-state-metrics\n    app.kubernetes.io/part-of: kube-prometheus\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/kubeStateMetrics-serviceAccount.yaml",
    "content": "apiVersion: v1\nautomountServiceAccountToken: false\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: kube-state-metrics\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.9.2\n  name: kube-state-metrics\n  namespace: monitoring\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/kubeStateMetrics-serviceMonitor.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: kube-state-metrics\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.9.2\n  name: kube-state-metrics\n  namespace: monitoring\nspec:\n  endpoints:\n  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    honorLabels: true\n    interval: 30s\n    metricRelabelings:\n    - action: drop\n      regex: kube_endpoint_address_not_ready|kube_endpoint_address_available\n      sourceLabels:\n      - __name__\n    port: https-main\n    relabelings:\n    - action: labeldrop\n      regex: (pod|service|endpoint|namespace)\n    scheme: https\n    scrapeTimeout: 30s\n    tlsConfig:\n      insecureSkipVerify: true\n  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    interval: 30s\n    port: https-self\n    scheme: https\n    tlsConfig:\n      insecureSkipVerify: true\n  jobLabel: app.kubernetes.io/name\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: exporter\n      app.kubernetes.io/name: kube-state-metrics\n      app.kubernetes.io/part-of: kube-prometheus\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/kubernetesControlPlane-prometheusRule.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  labels:\n    app.kubernetes.io/name: kube-prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n    prometheus: k8s\n    role: alert-rules\n  name: kubernetes-monitoring-rules\n  namespace: monitoring\nspec:\n  groups:\n  - name: kubernetes-apps\n    rules:\n    - alert: KubePodCrashLooping\n      annotations:\n        description: 'Pod {{ $labels.namespace }}/{{ $labels.pod }} ({{ $labels.container }}) is in waiting state (reason: \"CrashLoopBackOff\").'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubepodcrashlooping\n        summary: Pod is crash looping.\n      expr: |\n        max_over_time(kube_pod_container_status_waiting_reason{reason=\"CrashLoopBackOff\", job=\"kube-state-metrics\"}[5m]) >= 1\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubePodNotReady\n      annotations:\n        description: Pod {{ $labels.namespace }}/{{ $labels.pod }} has been in a non-ready state for longer than 15 minutes.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubepodnotready\n        summary: Pod has been in a non-ready state for more than 15 minutes.\n      expr: |\n        sum by (namespace, pod, cluster) (\n          max by(namespace, pod, cluster) (\n            kube_pod_status_phase{job=\"kube-state-metrics\", phase=~\"Pending|Unknown|Failed\"}\n          ) * on(namespace, pod, cluster) group_left(owner_kind) topk by(namespace, pod, cluster) (\n            1, max by(namespace, pod, owner_kind, cluster) (kube_pod_owner{owner_kind!=\"Job\"})\n          )\n        ) > 0\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeDeploymentGenerationMismatch\n      annotations:\n        description: Deployment generation for {{ $labels.namespace }}/{{ $labels.deployment }} does not match, this indicates that the Deployment has failed but has not been rolled back.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubedeploymentgenerationmismatch\n        summary: Deployment generation mismatch due to possible roll-back\n      expr: |\n        kube_deployment_status_observed_generation{job=\"kube-state-metrics\"}\n          !=\n        kube_deployment_metadata_generation{job=\"kube-state-metrics\"}\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeDeploymentReplicasMismatch\n      annotations:\n        description: Deployment {{ $labels.namespace }}/{{ $labels.deployment }} has not matched the expected number of replicas for longer than 15 minutes.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubedeploymentreplicasmismatch\n        summary: Deployment has not matched the expected number of replicas.\n      expr: |\n        (\n          kube_deployment_spec_replicas{job=\"kube-state-metrics\"}\n            >\n          kube_deployment_status_replicas_available{job=\"kube-state-metrics\"}\n        ) and (\n          changes(kube_deployment_status_replicas_updated{job=\"kube-state-metrics\"}[10m])\n            ==\n          0\n        )\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeDeploymentRolloutStuck\n      annotations:\n        description: Rollout of deployment {{ $labels.namespace }}/{{ $labels.deployment }} is not progressing for longer than 15 minutes.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubedeploymentrolloutstuck\n        summary: Deployment rollout is not progressing.\n      expr: |\n        kube_deployment_status_condition{condition=\"Progressing\", status=\"false\",job=\"kube-state-metrics\"}\n        != 0\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeStatefulSetReplicasMismatch\n      annotations:\n        description: StatefulSet {{ $labels.namespace }}/{{ $labels.statefulset }} has not matched the expected number of replicas for longer than 15 minutes.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubestatefulsetreplicasmismatch\n        summary: Deployment has not matched the expected number of replicas.\n      expr: |\n        (\n          kube_statefulset_status_replicas_ready{job=\"kube-state-metrics\"}\n            !=\n          kube_statefulset_status_replicas{job=\"kube-state-metrics\"}\n        ) and (\n          changes(kube_statefulset_status_replicas_updated{job=\"kube-state-metrics\"}[10m])\n            ==\n          0\n        )\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeStatefulSetGenerationMismatch\n      annotations:\n        description: StatefulSet generation for {{ $labels.namespace }}/{{ $labels.statefulset }} does not match, this indicates that the StatefulSet has failed but has not been rolled back.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubestatefulsetgenerationmismatch\n        summary: StatefulSet generation mismatch due to possible roll-back\n      expr: |\n        kube_statefulset_status_observed_generation{job=\"kube-state-metrics\"}\n          !=\n        kube_statefulset_metadata_generation{job=\"kube-state-metrics\"}\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeStatefulSetUpdateNotRolledOut\n      annotations:\n        description: StatefulSet {{ $labels.namespace }}/{{ $labels.statefulset }} update has not been rolled out.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubestatefulsetupdatenotrolledout\n        summary: StatefulSet update has not been rolled out.\n      expr: |\n        (\n          max without (revision) (\n            kube_statefulset_status_current_revision{job=\"kube-state-metrics\"}\n              unless\n            kube_statefulset_status_update_revision{job=\"kube-state-metrics\"}\n          )\n            *\n          (\n            kube_statefulset_replicas{job=\"kube-state-metrics\"}\n              !=\n            kube_statefulset_status_replicas_updated{job=\"kube-state-metrics\"}\n          )\n        )  and (\n          changes(kube_statefulset_status_replicas_updated{job=\"kube-state-metrics\"}[5m])\n            ==\n          0\n        )\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeDaemonSetRolloutStuck\n      annotations:\n        description: DaemonSet {{ $labels.namespace }}/{{ $labels.daemonset }} has not finished or progressed for at least 15 minutes.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubedaemonsetrolloutstuck\n        summary: DaemonSet rollout is stuck.\n      expr: |\n        (\n          (\n            kube_daemonset_status_current_number_scheduled{job=\"kube-state-metrics\"}\n             !=\n            kube_daemonset_status_desired_number_scheduled{job=\"kube-state-metrics\"}\n          ) or (\n            kube_daemonset_status_number_misscheduled{job=\"kube-state-metrics\"}\n             !=\n            0\n          ) or (\n            kube_daemonset_status_updated_number_scheduled{job=\"kube-state-metrics\"}\n             !=\n            kube_daemonset_status_desired_number_scheduled{job=\"kube-state-metrics\"}\n          ) or (\n            kube_daemonset_status_number_available{job=\"kube-state-metrics\"}\n             !=\n            kube_daemonset_status_desired_number_scheduled{job=\"kube-state-metrics\"}\n          )\n        ) and (\n          changes(kube_daemonset_status_updated_number_scheduled{job=\"kube-state-metrics\"}[5m])\n            ==\n          0\n        )\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeContainerWaiting\n      annotations:\n        description: pod/{{ $labels.pod }} in namespace {{ $labels.namespace }} on container {{ $labels.container}} has been in waiting state for longer than 1 hour.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubecontainerwaiting\n        summary: Pod container waiting longer than 1 hour\n      expr: |\n        sum by (namespace, pod, container, cluster) (kube_pod_container_status_waiting_reason{job=\"kube-state-metrics\"}) > 0\n      for: 1h\n      labels:\n        severity: warning\n    - alert: KubeDaemonSetNotScheduled\n      annotations:\n        description: '{{ $value }} Pods of DaemonSet {{ $labels.namespace }}/{{ $labels.daemonset }} are not scheduled.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubedaemonsetnotscheduled\n        summary: DaemonSet pods are not scheduled.\n      expr: |\n        kube_daemonset_status_desired_number_scheduled{job=\"kube-state-metrics\"}\n          -\n        kube_daemonset_status_current_number_scheduled{job=\"kube-state-metrics\"} > 0\n      for: 10m\n      labels:\n        severity: warning\n    - alert: KubeDaemonSetMisScheduled\n      annotations:\n        description: '{{ $value }} Pods of DaemonSet {{ $labels.namespace }}/{{ $labels.daemonset }} are running where they are not supposed to run.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubedaemonsetmisscheduled\n        summary: DaemonSet pods are misscheduled.\n      expr: |\n        kube_daemonset_status_number_misscheduled{job=\"kube-state-metrics\"} > 0\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeJobNotCompleted\n      annotations:\n        description: Job {{ $labels.namespace }}/{{ $labels.job_name }} is taking more than {{ \"43200\" | humanizeDuration }} to complete.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubejobnotcompleted\n        summary: Job did not complete in time\n      expr: |\n        time() - max by(namespace, job_name, cluster) (kube_job_status_start_time{job=\"kube-state-metrics\"}\n          and\n        kube_job_status_active{job=\"kube-state-metrics\"} > 0) > 43200\n      labels:\n        severity: warning\n    - alert: KubeJobFailed\n      annotations:\n        description: Job {{ $labels.namespace }}/{{ $labels.job_name }} failed to complete. Removing failed job after investigation should clear this alert.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubejobfailed\n        summary: Job failed to complete.\n      expr: |\n        kube_job_failed{job=\"kube-state-metrics\"}  > 0\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeHpaReplicasMismatch\n      annotations:\n        description: HPA {{ $labels.namespace }}/{{ $labels.horizontalpodautoscaler  }} has not matched the desired number of replicas for longer than 15 minutes.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubehpareplicasmismatch\n        summary: HPA has not matched desired number of replicas.\n      expr: |\n        (kube_horizontalpodautoscaler_status_desired_replicas{job=\"kube-state-metrics\"}\n          !=\n        kube_horizontalpodautoscaler_status_current_replicas{job=\"kube-state-metrics\"})\n          and\n        (kube_horizontalpodautoscaler_status_current_replicas{job=\"kube-state-metrics\"}\n          >\n        kube_horizontalpodautoscaler_spec_min_replicas{job=\"kube-state-metrics\"})\n          and\n        (kube_horizontalpodautoscaler_status_current_replicas{job=\"kube-state-metrics\"}\n          <\n        kube_horizontalpodautoscaler_spec_max_replicas{job=\"kube-state-metrics\"})\n          and\n        changes(kube_horizontalpodautoscaler_status_current_replicas{job=\"kube-state-metrics\"}[15m]) == 0\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeHpaMaxedOut\n      annotations:\n        description: HPA {{ $labels.namespace }}/{{ $labels.horizontalpodautoscaler  }} has been running at max replicas for longer than 15 minutes.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubehpamaxedout\n        summary: HPA is running at max replicas\n      expr: |\n        kube_horizontalpodautoscaler_status_current_replicas{job=\"kube-state-metrics\"}\n          ==\n        kube_horizontalpodautoscaler_spec_max_replicas{job=\"kube-state-metrics\"}\n      for: 15m\n      labels:\n        severity: warning\n  - name: kubernetes-resources\n    rules:\n    - alert: KubeCPUOvercommit\n      annotations:\n        description: Cluster {{ $labels.cluster }} has overcommitted CPU resource requests for Pods by {{ $value }} CPU shares and cannot tolerate node failure.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubecpuovercommit\n        summary: Cluster has overcommitted CPU resource requests.\n      expr: |\n        sum(namespace_cpu:kube_pod_container_resource_requests:sum{job=\"kube-state-metrics\",}) by (cluster) - (sum(kube_node_status_allocatable{job=\"kube-state-metrics\",resource=\"cpu\"}) by (cluster) - max(kube_node_status_allocatable{job=\"kube-state-metrics\",resource=\"cpu\"}) by (cluster)) > 0\n        and\n        (sum(kube_node_status_allocatable{job=\"kube-state-metrics\",resource=\"cpu\"}) by (cluster) - max(kube_node_status_allocatable{job=\"kube-state-metrics\",resource=\"cpu\"}) by (cluster)) > 0\n      for: 10m\n      labels:\n        severity: warning\n    - alert: KubeMemoryOvercommit\n      annotations:\n        description: Cluster {{ $labels.cluster }} has overcommitted memory resource requests for Pods by {{ $value | humanize }} bytes and cannot tolerate node failure.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubememoryovercommit\n        summary: Cluster has overcommitted memory resource requests.\n      expr: |\n        sum(namespace_memory:kube_pod_container_resource_requests:sum{}) by (cluster) - (sum(kube_node_status_allocatable{resource=\"memory\", job=\"kube-state-metrics\"}) by (cluster) - max(kube_node_status_allocatable{resource=\"memory\", job=\"kube-state-metrics\"}) by (cluster)) > 0\n        and\n        (sum(kube_node_status_allocatable{resource=\"memory\", job=\"kube-state-metrics\"}) by (cluster) - max(kube_node_status_allocatable{resource=\"memory\", job=\"kube-state-metrics\"}) by (cluster)) > 0\n      for: 10m\n      labels:\n        severity: warning\n    - alert: KubeCPUQuotaOvercommit\n      annotations:\n        description: Cluster {{ $labels.cluster }}  has overcommitted CPU resource requests for Namespaces.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubecpuquotaovercommit\n        summary: Cluster has overcommitted CPU resource requests.\n      expr: |\n        sum(min without(resource) (kube_resourcequota{job=\"kube-state-metrics\", type=\"hard\", resource=~\"(cpu|requests.cpu)\"})) by (cluster)\n          /\n        sum(kube_node_status_allocatable{resource=\"cpu\", job=\"kube-state-metrics\"}) by (cluster)\n          > 1.5\n      for: 5m\n      labels:\n        severity: warning\n    - alert: KubeMemoryQuotaOvercommit\n      annotations:\n        description: Cluster {{ $labels.cluster }}  has overcommitted memory resource requests for Namespaces.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubememoryquotaovercommit\n        summary: Cluster has overcommitted memory resource requests.\n      expr: |\n        sum(min without(resource) (kube_resourcequota{job=\"kube-state-metrics\", type=\"hard\", resource=~\"(memory|requests.memory)\"})) by (cluster)\n          /\n        sum(kube_node_status_allocatable{resource=\"memory\", job=\"kube-state-metrics\"}) by (cluster)\n          > 1.5\n      for: 5m\n      labels:\n        severity: warning\n    - alert: KubeQuotaAlmostFull\n      annotations:\n        description: Namespace {{ $labels.namespace }} is using {{ $value | humanizePercentage }} of its {{ $labels.resource }} quota.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubequotaalmostfull\n        summary: Namespace quota is going to be full.\n      expr: |\n        kube_resourcequota{job=\"kube-state-metrics\", type=\"used\"}\n          / ignoring(instance, job, type)\n        (kube_resourcequota{job=\"kube-state-metrics\", type=\"hard\"} > 0)\n          > 0.9 < 1\n      for: 15m\n      labels:\n        severity: info\n    - alert: KubeQuotaFullyUsed\n      annotations:\n        description: Namespace {{ $labels.namespace }} is using {{ $value | humanizePercentage }} of its {{ $labels.resource }} quota.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubequotafullyused\n        summary: Namespace quota is fully used.\n      expr: |\n        kube_resourcequota{job=\"kube-state-metrics\", type=\"used\"}\n          / ignoring(instance, job, type)\n        (kube_resourcequota{job=\"kube-state-metrics\", type=\"hard\"} > 0)\n          == 1\n      for: 15m\n      labels:\n        severity: info\n    - alert: KubeQuotaExceeded\n      annotations:\n        description: Namespace {{ $labels.namespace }} is using {{ $value | humanizePercentage }} of its {{ $labels.resource }} quota.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubequotaexceeded\n        summary: Namespace quota has exceeded the limits.\n      expr: |\n        kube_resourcequota{job=\"kube-state-metrics\", type=\"used\"}\n          / ignoring(instance, job, type)\n        (kube_resourcequota{job=\"kube-state-metrics\", type=\"hard\"} > 0)\n          > 1\n      for: 15m\n      labels:\n        severity: warning\n    - alert: CPUThrottlingHigh\n      annotations:\n        description: '{{ $value | humanizePercentage }} throttling of CPU in namespace {{ $labels.namespace }} for container {{ $labels.container }} in pod {{ $labels.pod }}.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/cputhrottlinghigh\n        summary: Processes experience elevated CPU throttling.\n      expr: |\n        sum(increase(container_cpu_cfs_throttled_periods_total{container!=\"\", }[5m])) by (container, pod, namespace)\n          /\n        sum(increase(container_cpu_cfs_periods_total{}[5m])) by (container, pod, namespace)\n          > ( 25 / 100 )\n      for: 15m\n      labels:\n        severity: info\n  - name: kubernetes-storage\n    rules:\n    - alert: KubePersistentVolumeFillingUp\n      annotations:\n        description: The PersistentVolume claimed by {{ $labels.persistentvolumeclaim }} in Namespace {{ $labels.namespace }} is only {{ $value | humanizePercentage }} free.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubepersistentvolumefillingup\n        summary: PersistentVolume is filling up.\n      expr: |\n        (\n          kubelet_volume_stats_available_bytes{job=\"kubelet\", metrics_path=\"/metrics\"}\n            /\n          kubelet_volume_stats_capacity_bytes{job=\"kubelet\", metrics_path=\"/metrics\"}\n        ) < 0.03\n        and\n        kubelet_volume_stats_used_bytes{job=\"kubelet\", metrics_path=\"/metrics\"} > 0\n        unless on(namespace, persistentvolumeclaim)\n        kube_persistentvolumeclaim_access_mode{ access_mode=\"ReadOnlyMany\"} == 1\n        unless on(namespace, persistentvolumeclaim)\n        kube_persistentvolumeclaim_labels{label_excluded_from_alerts=\"true\"} == 1\n      for: 1m\n      labels:\n        severity: critical\n    - alert: KubePersistentVolumeFillingUp\n      annotations:\n        description: Based on recent sampling, the PersistentVolume claimed by {{ $labels.persistentvolumeclaim }} in Namespace {{ $labels.namespace }} is expected to fill up within four days. Currently {{ $value | humanizePercentage }} is available.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubepersistentvolumefillingup\n        summary: PersistentVolume is filling up.\n      expr: |\n        (\n          kubelet_volume_stats_available_bytes{job=\"kubelet\", metrics_path=\"/metrics\"}\n            /\n          kubelet_volume_stats_capacity_bytes{job=\"kubelet\", metrics_path=\"/metrics\"}\n        ) < 0.15\n        and\n        kubelet_volume_stats_used_bytes{job=\"kubelet\", metrics_path=\"/metrics\"} > 0\n        and\n        predict_linear(kubelet_volume_stats_available_bytes{job=\"kubelet\", metrics_path=\"/metrics\"}[6h], 4 * 24 * 3600) < 0\n        unless on(namespace, persistentvolumeclaim)\n        kube_persistentvolumeclaim_access_mode{ access_mode=\"ReadOnlyMany\"} == 1\n        unless on(namespace, persistentvolumeclaim)\n        kube_persistentvolumeclaim_labels{label_excluded_from_alerts=\"true\"} == 1\n      for: 1h\n      labels:\n        severity: warning\n    - alert: KubePersistentVolumeInodesFillingUp\n      annotations:\n        description: The PersistentVolume claimed by {{ $labels.persistentvolumeclaim }} in Namespace {{ $labels.namespace }} only has {{ $value | humanizePercentage }} free inodes.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubepersistentvolumeinodesfillingup\n        summary: PersistentVolumeInodes are filling up.\n      expr: |\n        (\n          kubelet_volume_stats_inodes_free{job=\"kubelet\", metrics_path=\"/metrics\"}\n            /\n          kubelet_volume_stats_inodes{job=\"kubelet\", metrics_path=\"/metrics\"}\n        ) < 0.03\n        and\n        kubelet_volume_stats_inodes_used{job=\"kubelet\", metrics_path=\"/metrics\"} > 0\n        unless on(namespace, persistentvolumeclaim)\n        kube_persistentvolumeclaim_access_mode{ access_mode=\"ReadOnlyMany\"} == 1\n        unless on(namespace, persistentvolumeclaim)\n        kube_persistentvolumeclaim_labels{label_excluded_from_alerts=\"true\"} == 1\n      for: 1m\n      labels:\n        severity: critical\n    - alert: KubePersistentVolumeInodesFillingUp\n      annotations:\n        description: Based on recent sampling, the PersistentVolume claimed by {{ $labels.persistentvolumeclaim }} in Namespace {{ $labels.namespace }} is expected to run out of inodes within four days. Currently {{ $value | humanizePercentage }} of its inodes are free.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubepersistentvolumeinodesfillingup\n        summary: PersistentVolumeInodes are filling up.\n      expr: |\n        (\n          kubelet_volume_stats_inodes_free{job=\"kubelet\", metrics_path=\"/metrics\"}\n            /\n          kubelet_volume_stats_inodes{job=\"kubelet\", metrics_path=\"/metrics\"}\n        ) < 0.15\n        and\n        kubelet_volume_stats_inodes_used{job=\"kubelet\", metrics_path=\"/metrics\"} > 0\n        and\n        predict_linear(kubelet_volume_stats_inodes_free{job=\"kubelet\", metrics_path=\"/metrics\"}[6h], 4 * 24 * 3600) < 0\n        unless on(namespace, persistentvolumeclaim)\n        kube_persistentvolumeclaim_access_mode{ access_mode=\"ReadOnlyMany\"} == 1\n        unless on(namespace, persistentvolumeclaim)\n        kube_persistentvolumeclaim_labels{label_excluded_from_alerts=\"true\"} == 1\n      for: 1h\n      labels:\n        severity: warning\n    - alert: KubePersistentVolumeErrors\n      annotations:\n        description: The persistent volume {{ $labels.persistentvolume }} has status {{ $labels.phase }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubepersistentvolumeerrors\n        summary: PersistentVolume is having issues with provisioning.\n      expr: |\n        kube_persistentvolume_status_phase{phase=~\"Failed|Pending\",job=\"kube-state-metrics\"} > 0\n      for: 5m\n      labels:\n        severity: critical\n  - name: kubernetes-system\n    rules:\n    - alert: KubeVersionMismatch\n      annotations:\n        description: There are {{ $value }} different semantic versions of Kubernetes components running.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeversionmismatch\n        summary: Different semantic versions of Kubernetes components running.\n      expr: |\n        count by (cluster) (count by (git_version, cluster) (label_replace(kubernetes_build_info{job!~\"kube-dns|coredns\"},\"git_version\",\"$1\",\"git_version\",\"(v[0-9]*.[0-9]*).*\"))) > 1\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeClientErrors\n      annotations:\n        description: Kubernetes API server client '{{ $labels.job }}/{{ $labels.instance }}' is experiencing {{ $value | humanizePercentage }} errors.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeclienterrors\n        summary: Kubernetes API server client is experiencing errors.\n      expr: |\n        (sum(rate(rest_client_requests_total{job=\"apiserver\",code=~\"5..\"}[5m])) by (cluster, instance, job, namespace)\n          /\n        sum(rate(rest_client_requests_total{job=\"apiserver\"}[5m])) by (cluster, instance, job, namespace))\n        > 0.01\n      for: 15m\n      labels:\n        severity: warning\n  - name: kube-apiserver-slos\n    rules:\n    - alert: KubeAPIErrorBudgetBurn\n      annotations:\n        description: The API server is burning too much error budget.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeapierrorbudgetburn\n        summary: The API server is burning too much error budget.\n      expr: |\n        sum(apiserver_request:burnrate1h) > (14.40 * 0.01000)\n        and\n        sum(apiserver_request:burnrate5m) > (14.40 * 0.01000)\n      for: 2m\n      labels:\n        long: 1h\n        severity: critical\n        short: 5m\n    - alert: KubeAPIErrorBudgetBurn\n      annotations:\n        description: The API server is burning too much error budget.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeapierrorbudgetburn\n        summary: The API server is burning too much error budget.\n      expr: |\n        sum(apiserver_request:burnrate6h) > (6.00 * 0.01000)\n        and\n        sum(apiserver_request:burnrate30m) > (6.00 * 0.01000)\n      for: 15m\n      labels:\n        long: 6h\n        severity: critical\n        short: 30m\n    - alert: KubeAPIErrorBudgetBurn\n      annotations:\n        description: The API server is burning too much error budget.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeapierrorbudgetburn\n        summary: The API server is burning too much error budget.\n      expr: |\n        sum(apiserver_request:burnrate1d) > (3.00 * 0.01000)\n        and\n        sum(apiserver_request:burnrate2h) > (3.00 * 0.01000)\n      for: 1h\n      labels:\n        long: 1d\n        severity: warning\n        short: 2h\n    - alert: KubeAPIErrorBudgetBurn\n      annotations:\n        description: The API server is burning too much error budget.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeapierrorbudgetburn\n        summary: The API server is burning too much error budget.\n      expr: |\n        sum(apiserver_request:burnrate3d) > (1.00 * 0.01000)\n        and\n        sum(apiserver_request:burnrate6h) > (1.00 * 0.01000)\n      for: 3h\n      labels:\n        long: 3d\n        severity: warning\n        short: 6h\n  - name: kubernetes-system-apiserver\n    rules:\n    - alert: KubeClientCertificateExpiration\n      annotations:\n        description: A client certificate used to authenticate to kubernetes apiserver is expiring in less than 7.0 days.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeclientcertificateexpiration\n        summary: Client certificate is about to expire.\n      expr: |\n        apiserver_client_certificate_expiration_seconds_count{job=\"apiserver\"} > 0 and on(job) histogram_quantile(0.01, sum by (job, le) (rate(apiserver_client_certificate_expiration_seconds_bucket{job=\"apiserver\"}[5m]))) < 604800\n      for: 5m\n      labels:\n        severity: warning\n    - alert: KubeClientCertificateExpiration\n      annotations:\n        description: A client certificate used to authenticate to kubernetes apiserver is expiring in less than 24.0 hours.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeclientcertificateexpiration\n        summary: Client certificate is about to expire.\n      expr: |\n        apiserver_client_certificate_expiration_seconds_count{job=\"apiserver\"} > 0 and on(job) histogram_quantile(0.01, sum by (job, le) (rate(apiserver_client_certificate_expiration_seconds_bucket{job=\"apiserver\"}[5m]))) < 86400\n      for: 5m\n      labels:\n        severity: critical\n    - alert: KubeAggregatedAPIErrors\n      annotations:\n        description: Kubernetes aggregated API {{ $labels.name }}/{{ $labels.namespace }} has reported errors. It has appeared unavailable {{ $value | humanize }} times averaged over the past 10m.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeaggregatedapierrors\n        summary: Kubernetes aggregated API has reported errors.\n      expr: |\n        sum by(name, namespace, cluster)(increase(aggregator_unavailable_apiservice_total{job=\"apiserver\"}[10m])) > 4\n      labels:\n        severity: warning\n    - alert: KubeAggregatedAPIDown\n      annotations:\n        description: Kubernetes aggregated API {{ $labels.name }}/{{ $labels.namespace }} has been only {{ $value | humanize }}% available over the last 10m.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeaggregatedapidown\n        summary: Kubernetes aggregated API is down.\n      expr: |\n        (1 - max by(name, namespace, cluster)(avg_over_time(aggregator_unavailable_apiservice{job=\"apiserver\"}[10m]))) * 100 < 85\n      for: 5m\n      labels:\n        severity: warning\n    - alert: KubeAPIDown\n      annotations:\n        description: KubeAPI has disappeared from Prometheus target discovery.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeapidown\n        summary: Target disappeared from Prometheus target discovery.\n      expr: |\n        absent(up{job=\"apiserver\"} == 1)\n      for: 15m\n      labels:\n        severity: critical\n    - alert: KubeAPITerminatedRequests\n      annotations:\n        description: The kubernetes apiserver has terminated {{ $value | humanizePercentage }} of its incoming requests.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeapiterminatedrequests\n        summary: The kubernetes apiserver has terminated {{ $value | humanizePercentage }} of its incoming requests.\n      expr: |\n        sum(rate(apiserver_request_terminations_total{job=\"apiserver\"}[10m]))  / (  sum(rate(apiserver_request_total{job=\"apiserver\"}[10m])) + sum(rate(apiserver_request_terminations_total{job=\"apiserver\"}[10m])) ) > 0.20\n      for: 5m\n      labels:\n        severity: warning\n  - name: kubernetes-system-kubelet\n    rules:\n    - alert: KubeNodeNotReady\n      annotations:\n        description: '{{ $labels.node }} has been unready for more than 15 minutes.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubenodenotready\n        summary: Node is not ready.\n      expr: |\n        kube_node_status_condition{job=\"kube-state-metrics\",condition=\"Ready\",status=\"true\"} == 0\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeNodeUnreachable\n      annotations:\n        description: '{{ $labels.node }} is unreachable and some workloads may be rescheduled.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubenodeunreachable\n        summary: Node is unreachable.\n      expr: |\n        (kube_node_spec_taint{job=\"kube-state-metrics\",key=\"node.kubernetes.io/unreachable\",effect=\"NoSchedule\"} unless ignoring(key,value) kube_node_spec_taint{job=\"kube-state-metrics\",key=~\"ToBeDeletedByClusterAutoscaler|cloud.google.com/impending-node-termination|aws-node-termination-handler/spot-itn\"}) == 1\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeletTooManyPods\n      annotations:\n        description: Kubelet '{{ $labels.node }}' is running at {{ $value | humanizePercentage }} of its Pod capacity.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubelettoomanypods\n        summary: Kubelet is running at capacity.\n      expr: |\n        count by(cluster, node) (\n          (kube_pod_status_phase{job=\"kube-state-metrics\",phase=\"Running\"} == 1) * on(instance,pod,namespace,cluster) group_left(node) topk by(instance,pod,namespace,cluster) (1, kube_pod_info{job=\"kube-state-metrics\"})\n        )\n        /\n        max by(cluster, node) (\n          kube_node_status_capacity{job=\"kube-state-metrics\",resource=\"pods\"} != 1\n        ) > 0.95\n      for: 15m\n      labels:\n        severity: info\n    - alert: KubeNodeReadinessFlapping\n      annotations:\n        description: The readiness status of node {{ $labels.node }} has changed {{ $value }} times in the last 15 minutes.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubenodereadinessflapping\n        summary: Node readiness status is flapping.\n      expr: |\n        sum(changes(kube_node_status_condition{job=\"kube-state-metrics\",status=\"true\",condition=\"Ready\"}[15m])) by (cluster, node) > 2\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeletPlegDurationHigh\n      annotations:\n        description: The Kubelet Pod Lifecycle Event Generator has a 99th percentile duration of {{ $value }} seconds on node {{ $labels.node }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeletplegdurationhigh\n        summary: Kubelet Pod Lifecycle Event Generator is taking too long to relist.\n      expr: |\n        node_quantile:kubelet_pleg_relist_duration_seconds:histogram_quantile{quantile=\"0.99\"} >= 10\n      for: 5m\n      labels:\n        severity: warning\n    - alert: KubeletPodStartUpLatencyHigh\n      annotations:\n        description: Kubelet Pod startup 99th percentile latency is {{ $value }} seconds on node {{ $labels.node }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeletpodstartuplatencyhigh\n        summary: Kubelet Pod startup latency is too high.\n      expr: |\n        histogram_quantile(0.99, sum(rate(kubelet_pod_worker_duration_seconds_bucket{job=\"kubelet\", metrics_path=\"/metrics\"}[5m])) by (cluster, instance, le)) * on(cluster, instance) group_left(node) kubelet_node_name{job=\"kubelet\", metrics_path=\"/metrics\"} > 60\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeletClientCertificateExpiration\n      annotations:\n        description: Client certificate for Kubelet on node {{ $labels.node }} expires in {{ $value | humanizeDuration }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeletclientcertificateexpiration\n        summary: Kubelet client certificate is about to expire.\n      expr: |\n        kubelet_certificate_manager_client_ttl_seconds < 604800\n      labels:\n        severity: warning\n    - alert: KubeletClientCertificateExpiration\n      annotations:\n        description: Client certificate for Kubelet on node {{ $labels.node }} expires in {{ $value | humanizeDuration }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeletclientcertificateexpiration\n        summary: Kubelet client certificate is about to expire.\n      expr: |\n        kubelet_certificate_manager_client_ttl_seconds < 86400\n      labels:\n        severity: critical\n    - alert: KubeletServerCertificateExpiration\n      annotations:\n        description: Server certificate for Kubelet on node {{ $labels.node }} expires in {{ $value | humanizeDuration }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeletservercertificateexpiration\n        summary: Kubelet server certificate is about to expire.\n      expr: |\n        kubelet_certificate_manager_server_ttl_seconds < 604800\n      labels:\n        severity: warning\n    - alert: KubeletServerCertificateExpiration\n      annotations:\n        description: Server certificate for Kubelet on node {{ $labels.node }} expires in {{ $value | humanizeDuration }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeletservercertificateexpiration\n        summary: Kubelet server certificate is about to expire.\n      expr: |\n        kubelet_certificate_manager_server_ttl_seconds < 86400\n      labels:\n        severity: critical\n    - alert: KubeletClientCertificateRenewalErrors\n      annotations:\n        description: Kubelet on node {{ $labels.node }} has failed to renew its client certificate ({{ $value | humanize }} errors in the last 5 minutes).\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeletclientcertificaterenewalerrors\n        summary: Kubelet has failed to renew its client certificate.\n      expr: |\n        increase(kubelet_certificate_manager_client_expiration_renew_errors[5m]) > 0\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeletServerCertificateRenewalErrors\n      annotations:\n        description: Kubelet on node {{ $labels.node }} has failed to renew its server certificate ({{ $value | humanize }} errors in the last 5 minutes).\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeletservercertificaterenewalerrors\n        summary: Kubelet has failed to renew its server certificate.\n      expr: |\n        increase(kubelet_server_expiration_renew_errors[5m]) > 0\n      for: 15m\n      labels:\n        severity: warning\n    - alert: KubeletDown\n      annotations:\n        description: Kubelet has disappeared from Prometheus target discovery.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeletdown\n        summary: Target disappeared from Prometheus target discovery.\n      expr: |\n        absent(up{job=\"kubelet\", metrics_path=\"/metrics\"} == 1)\n      for: 15m\n      labels:\n        severity: critical\n  - name: kubernetes-system-scheduler\n    rules:\n    - alert: KubeSchedulerDown\n      annotations:\n        description: KubeScheduler has disappeared from Prometheus target discovery.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubeschedulerdown\n        summary: Target disappeared from Prometheus target discovery.\n      expr: |\n        absent(up{job=\"kube-scheduler\"} == 1)\n      for: 15m\n      labels:\n        severity: critical\n  - name: kubernetes-system-controller-manager\n    rules:\n    - alert: KubeControllerManagerDown\n      annotations:\n        description: KubeControllerManager has disappeared from Prometheus target discovery.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubecontrollermanagerdown\n        summary: Target disappeared from Prometheus target discovery.\n      expr: |\n        absent(up{job=\"kube-controller-manager\"} == 1)\n      for: 15m\n      labels:\n        severity: critical\n  - name: kube-apiserver-burnrate.rules\n    rules:\n    - expr: |\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_count{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\"}[1d]))\n            -\n            (\n              (\n                sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=~\"resource|\",le=\"1\"}[1d]))\n                or\n                vector(0)\n              )\n              +\n              sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"namespace\",le=\"5\"}[1d]))\n              +\n              sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"cluster\",le=\"30\"}[1d]))\n            )\n          )\n          +\n          # errors\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\",code=~\"5..\"}[1d]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\"}[1d]))\n      labels:\n        verb: read\n      record: apiserver_request:burnrate1d\n    - expr: |\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_count{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\"}[1h]))\n            -\n            (\n              (\n                sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=~\"resource|\",le=\"1\"}[1h]))\n                or\n                vector(0)\n              )\n              +\n              sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"namespace\",le=\"5\"}[1h]))\n              +\n              sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"cluster\",le=\"30\"}[1h]))\n            )\n          )\n          +\n          # errors\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\",code=~\"5..\"}[1h]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\"}[1h]))\n      labels:\n        verb: read\n      record: apiserver_request:burnrate1h\n    - expr: |\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_count{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\"}[2h]))\n            -\n            (\n              (\n                sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=~\"resource|\",le=\"1\"}[2h]))\n                or\n                vector(0)\n              )\n              +\n              sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"namespace\",le=\"5\"}[2h]))\n              +\n              sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"cluster\",le=\"30\"}[2h]))\n            )\n          )\n          +\n          # errors\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\",code=~\"5..\"}[2h]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\"}[2h]))\n      labels:\n        verb: read\n      record: apiserver_request:burnrate2h\n    - expr: |\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_count{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\"}[30m]))\n            -\n            (\n              (\n                sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=~\"resource|\",le=\"1\"}[30m]))\n                or\n                vector(0)\n              )\n              +\n              sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"namespace\",le=\"5\"}[30m]))\n              +\n              sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"cluster\",le=\"30\"}[30m]))\n            )\n          )\n          +\n          # errors\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\",code=~\"5..\"}[30m]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\"}[30m]))\n      labels:\n        verb: read\n      record: apiserver_request:burnrate30m\n    - expr: |\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_count{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\"}[3d]))\n            -\n            (\n              (\n                sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=~\"resource|\",le=\"1\"}[3d]))\n                or\n                vector(0)\n              )\n              +\n              sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"namespace\",le=\"5\"}[3d]))\n              +\n              sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"cluster\",le=\"30\"}[3d]))\n            )\n          )\n          +\n          # errors\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\",code=~\"5..\"}[3d]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\"}[3d]))\n      labels:\n        verb: read\n      record: apiserver_request:burnrate3d\n    - expr: |\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_count{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\"}[5m]))\n            -\n            (\n              (\n                sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=~\"resource|\",le=\"1\"}[5m]))\n                or\n                vector(0)\n              )\n              +\n              sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"namespace\",le=\"5\"}[5m]))\n              +\n              sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"cluster\",le=\"30\"}[5m]))\n            )\n          )\n          +\n          # errors\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\",code=~\"5..\"}[5m]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\"}[5m]))\n      labels:\n        verb: read\n      record: apiserver_request:burnrate5m\n    - expr: |\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_count{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\"}[6h]))\n            -\n            (\n              (\n                sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=~\"resource|\",le=\"1\"}[6h]))\n                or\n                vector(0)\n              )\n              +\n              sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"namespace\",le=\"5\"}[6h]))\n              +\n              sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\",scope=\"cluster\",le=\"30\"}[6h]))\n            )\n          )\n          +\n          # errors\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\",code=~\"5..\"}[6h]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\"}[6h]))\n      labels:\n        verb: read\n      record: apiserver_request:burnrate6h\n    - expr: |\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_count{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\"}[1d]))\n            -\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\",le=\"1\"}[1d]))\n          )\n          +\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",code=~\"5..\"}[1d]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\"}[1d]))\n      labels:\n        verb: write\n      record: apiserver_request:burnrate1d\n    - expr: |\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_count{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\"}[1h]))\n            -\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\",le=\"1\"}[1h]))\n          )\n          +\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",code=~\"5..\"}[1h]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\"}[1h]))\n      labels:\n        verb: write\n      record: apiserver_request:burnrate1h\n    - expr: |\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_count{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\"}[2h]))\n            -\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\",le=\"1\"}[2h]))\n          )\n          +\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",code=~\"5..\"}[2h]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\"}[2h]))\n      labels:\n        verb: write\n      record: apiserver_request:burnrate2h\n    - expr: |\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_count{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\"}[30m]))\n            -\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\",le=\"1\"}[30m]))\n          )\n          +\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",code=~\"5..\"}[30m]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\"}[30m]))\n      labels:\n        verb: write\n      record: apiserver_request:burnrate30m\n    - expr: |\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_count{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\"}[3d]))\n            -\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\",le=\"1\"}[3d]))\n          )\n          +\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",code=~\"5..\"}[3d]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\"}[3d]))\n      labels:\n        verb: write\n      record: apiserver_request:burnrate3d\n    - expr: |\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_count{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\"}[5m]))\n            -\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\",le=\"1\"}[5m]))\n          )\n          +\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",code=~\"5..\"}[5m]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\"}[5m]))\n      labels:\n        verb: write\n      record: apiserver_request:burnrate5m\n    - expr: |\n        (\n          (\n            # too slow\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_count{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\"}[6h]))\n            -\n            sum by (cluster) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\",le=\"1\"}[6h]))\n          )\n          +\n          sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",code=~\"5..\"}[6h]))\n        )\n        /\n        sum by (cluster) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\"}[6h]))\n      labels:\n        verb: write\n      record: apiserver_request:burnrate6h\n  - name: kube-apiserver-histogram.rules\n    rules:\n    - expr: |\n        histogram_quantile(0.99, sum by (cluster, le, resource) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"LIST|GET\",subresource!~\"proxy|attach|log|exec|portforward\"}[5m]))) > 0\n      labels:\n        quantile: \"0.99\"\n        verb: read\n      record: cluster_quantile:apiserver_request_slo_duration_seconds:histogram_quantile\n    - expr: |\n        histogram_quantile(0.99, sum by (cluster, le, resource) (rate(apiserver_request_slo_duration_seconds_bucket{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\",subresource!~\"proxy|attach|log|exec|portforward\"}[5m]))) > 0\n      labels:\n        quantile: \"0.99\"\n        verb: write\n      record: cluster_quantile:apiserver_request_slo_duration_seconds:histogram_quantile\n  - interval: 3m\n    name: kube-apiserver-availability.rules\n    rules:\n    - expr: |\n        avg_over_time(code_verb:apiserver_request_total:increase1h[30d]) * 24 * 30\n      record: code_verb:apiserver_request_total:increase30d\n    - expr: |\n        sum by (cluster, code) (code_verb:apiserver_request_total:increase30d{verb=~\"LIST|GET\"})\n      labels:\n        verb: read\n      record: code:apiserver_request_total:increase30d\n    - expr: |\n        sum by (cluster, code) (code_verb:apiserver_request_total:increase30d{verb=~\"POST|PUT|PATCH|DELETE\"})\n      labels:\n        verb: write\n      record: code:apiserver_request_total:increase30d\n    - expr: |\n        sum by (cluster, verb, scope) (increase(apiserver_request_slo_duration_seconds_count{job=\"apiserver\"}[1h]))\n      record: cluster_verb_scope:apiserver_request_slo_duration_seconds_count:increase1h\n    - expr: |\n        sum by (cluster, verb, scope) (avg_over_time(cluster_verb_scope:apiserver_request_slo_duration_seconds_count:increase1h[30d]) * 24 * 30)\n      record: cluster_verb_scope:apiserver_request_slo_duration_seconds_count:increase30d\n    - expr: |\n        sum by (cluster, verb, scope, le) (increase(apiserver_request_slo_duration_seconds_bucket[1h]))\n      record: cluster_verb_scope_le:apiserver_request_slo_duration_seconds_bucket:increase1h\n    - expr: |\n        sum by (cluster, verb, scope, le) (avg_over_time(cluster_verb_scope_le:apiserver_request_slo_duration_seconds_bucket:increase1h[30d]) * 24 * 30)\n      record: cluster_verb_scope_le:apiserver_request_slo_duration_seconds_bucket:increase30d\n    - expr: |\n        1 - (\n          (\n            # write too slow\n            sum by (cluster) (cluster_verb_scope:apiserver_request_slo_duration_seconds_count:increase30d{verb=~\"POST|PUT|PATCH|DELETE\"})\n            -\n            sum by (cluster) (cluster_verb_scope_le:apiserver_request_slo_duration_seconds_bucket:increase30d{verb=~\"POST|PUT|PATCH|DELETE\",le=\"1\"})\n          ) +\n          (\n            # read too slow\n            sum by (cluster) (cluster_verb_scope:apiserver_request_slo_duration_seconds_count:increase30d{verb=~\"LIST|GET\"})\n            -\n            (\n              (\n                sum by (cluster) (cluster_verb_scope_le:apiserver_request_slo_duration_seconds_bucket:increase30d{verb=~\"LIST|GET\",scope=~\"resource|\",le=\"1\"})\n                or\n                vector(0)\n              )\n              +\n              sum by (cluster) (cluster_verb_scope_le:apiserver_request_slo_duration_seconds_bucket:increase30d{verb=~\"LIST|GET\",scope=\"namespace\",le=\"5\"})\n              +\n              sum by (cluster) (cluster_verb_scope_le:apiserver_request_slo_duration_seconds_bucket:increase30d{verb=~\"LIST|GET\",scope=\"cluster\",le=\"30\"})\n            )\n          ) +\n          # errors\n          sum by (cluster) (code:apiserver_request_total:increase30d{code=~\"5..\"} or vector(0))\n        )\n        /\n        sum by (cluster) (code:apiserver_request_total:increase30d)\n      labels:\n        verb: all\n      record: apiserver_request:availability30d\n    - expr: |\n        1 - (\n          sum by (cluster) (cluster_verb_scope:apiserver_request_slo_duration_seconds_count:increase30d{verb=~\"LIST|GET\"})\n          -\n          (\n            # too slow\n            (\n              sum by (cluster) (cluster_verb_scope_le:apiserver_request_slo_duration_seconds_bucket:increase30d{verb=~\"LIST|GET\",scope=~\"resource|\",le=\"1\"})\n              or\n              vector(0)\n            )\n            +\n            sum by (cluster) (cluster_verb_scope_le:apiserver_request_slo_duration_seconds_bucket:increase30d{verb=~\"LIST|GET\",scope=\"namespace\",le=\"5\"})\n            +\n            sum by (cluster) (cluster_verb_scope_le:apiserver_request_slo_duration_seconds_bucket:increase30d{verb=~\"LIST|GET\",scope=\"cluster\",le=\"30\"})\n          )\n          +\n          # errors\n          sum by (cluster) (code:apiserver_request_total:increase30d{verb=\"read\",code=~\"5..\"} or vector(0))\n        )\n        /\n        sum by (cluster) (code:apiserver_request_total:increase30d{verb=\"read\"})\n      labels:\n        verb: read\n      record: apiserver_request:availability30d\n    - expr: |\n        1 - (\n          (\n            # too slow\n            sum by (cluster) (cluster_verb_scope:apiserver_request_slo_duration_seconds_count:increase30d{verb=~\"POST|PUT|PATCH|DELETE\"})\n            -\n            sum by (cluster) (cluster_verb_scope_le:apiserver_request_slo_duration_seconds_bucket:increase30d{verb=~\"POST|PUT|PATCH|DELETE\",le=\"1\"})\n          )\n          +\n          # errors\n          sum by (cluster) (code:apiserver_request_total:increase30d{verb=\"write\",code=~\"5..\"} or vector(0))\n        )\n        /\n        sum by (cluster) (code:apiserver_request_total:increase30d{verb=\"write\"})\n      labels:\n        verb: write\n      record: apiserver_request:availability30d\n    - expr: |\n        sum by (cluster,code,resource) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET\"}[5m]))\n      labels:\n        verb: read\n      record: code_resource:apiserver_request_total:rate5m\n    - expr: |\n        sum by (cluster,code,resource) (rate(apiserver_request_total{job=\"apiserver\",verb=~\"POST|PUT|PATCH|DELETE\"}[5m]))\n      labels:\n        verb: write\n      record: code_resource:apiserver_request_total:rate5m\n    - expr: |\n        sum by (cluster, code, verb) (increase(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET|POST|PUT|PATCH|DELETE\",code=~\"2..\"}[1h]))\n      record: code_verb:apiserver_request_total:increase1h\n    - expr: |\n        sum by (cluster, code, verb) (increase(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET|POST|PUT|PATCH|DELETE\",code=~\"3..\"}[1h]))\n      record: code_verb:apiserver_request_total:increase1h\n    - expr: |\n        sum by (cluster, code, verb) (increase(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET|POST|PUT|PATCH|DELETE\",code=~\"4..\"}[1h]))\n      record: code_verb:apiserver_request_total:increase1h\n    - expr: |\n        sum by (cluster, code, verb) (increase(apiserver_request_total{job=\"apiserver\",verb=~\"LIST|GET|POST|PUT|PATCH|DELETE\",code=~\"5..\"}[1h]))\n      record: code_verb:apiserver_request_total:increase1h\n  - name: k8s.rules\n    rules:\n    - expr: |\n        sum by (cluster, namespace, pod, container) (\n          irate(container_cpu_usage_seconds_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", image!=\"\"}[5m])\n        ) * on (cluster, namespace, pod) group_left(node) topk by (cluster, namespace, pod) (\n          1, max by(cluster, namespace, pod, node) (kube_pod_info{node!=\"\"})\n        )\n      record: node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate\n    - expr: |\n        container_memory_working_set_bytes{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", image!=\"\"}\n        * on (cluster, namespace, pod) group_left(node) topk by(cluster, namespace, pod) (1,\n          max by(cluster, namespace, pod, node) (kube_pod_info{node!=\"\"})\n        )\n      record: node_namespace_pod_container:container_memory_working_set_bytes\n    - expr: |\n        container_memory_rss{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", image!=\"\"}\n        * on (cluster, namespace, pod) group_left(node) topk by(cluster, namespace, pod) (1,\n          max by(cluster, namespace, pod, node) (kube_pod_info{node!=\"\"})\n        )\n      record: node_namespace_pod_container:container_memory_rss\n    - expr: |\n        container_memory_cache{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", image!=\"\"}\n        * on (cluster, namespace, pod) group_left(node) topk by(cluster, namespace, pod) (1,\n          max by(cluster, namespace, pod, node) (kube_pod_info{node!=\"\"})\n        )\n      record: node_namespace_pod_container:container_memory_cache\n    - expr: |\n        container_memory_swap{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", image!=\"\"}\n        * on (cluster, namespace, pod) group_left(node) topk by(cluster, namespace, pod) (1,\n          max by(cluster, namespace, pod, node) (kube_pod_info{node!=\"\"})\n        )\n      record: node_namespace_pod_container:container_memory_swap\n    - expr: |\n        kube_pod_container_resource_requests{resource=\"memory\",job=\"kube-state-metrics\"}  * on (namespace, pod, cluster)\n        group_left() max by (namespace, pod, cluster) (\n          (kube_pod_status_phase{phase=~\"Pending|Running\"} == 1)\n        )\n      record: cluster:namespace:pod_memory:active:kube_pod_container_resource_requests\n    - expr: |\n        sum by (namespace, cluster) (\n            sum by (namespace, pod, cluster) (\n                max by (namespace, pod, container, cluster) (\n                  kube_pod_container_resource_requests{resource=\"memory\",job=\"kube-state-metrics\"}\n                ) * on(namespace, pod, cluster) group_left() max by (namespace, pod, cluster) (\n                  kube_pod_status_phase{phase=~\"Pending|Running\"} == 1\n                )\n            )\n        )\n      record: namespace_memory:kube_pod_container_resource_requests:sum\n    - expr: |\n        kube_pod_container_resource_requests{resource=\"cpu\",job=\"kube-state-metrics\"}  * on (namespace, pod, cluster)\n        group_left() max by (namespace, pod, cluster) (\n          (kube_pod_status_phase{phase=~\"Pending|Running\"} == 1)\n        )\n      record: cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests\n    - expr: |\n        sum by (namespace, cluster) (\n            sum by (namespace, pod, cluster) (\n                max by (namespace, pod, container, cluster) (\n                  kube_pod_container_resource_requests{resource=\"cpu\",job=\"kube-state-metrics\"}\n                ) * on(namespace, pod, cluster) group_left() max by (namespace, pod, cluster) (\n                  kube_pod_status_phase{phase=~\"Pending|Running\"} == 1\n                )\n            )\n        )\n      record: namespace_cpu:kube_pod_container_resource_requests:sum\n    - expr: |\n        kube_pod_container_resource_limits{resource=\"memory\",job=\"kube-state-metrics\"}  * on (namespace, pod, cluster)\n        group_left() max by (namespace, pod, cluster) (\n          (kube_pod_status_phase{phase=~\"Pending|Running\"} == 1)\n        )\n      record: cluster:namespace:pod_memory:active:kube_pod_container_resource_limits\n    - expr: |\n        sum by (namespace, cluster) (\n            sum by (namespace, pod, cluster) (\n                max by (namespace, pod, container, cluster) (\n                  kube_pod_container_resource_limits{resource=\"memory\",job=\"kube-state-metrics\"}\n                ) * on(namespace, pod, cluster) group_left() max by (namespace, pod, cluster) (\n                  kube_pod_status_phase{phase=~\"Pending|Running\"} == 1\n                )\n            )\n        )\n      record: namespace_memory:kube_pod_container_resource_limits:sum\n    - expr: |\n        kube_pod_container_resource_limits{resource=\"cpu\",job=\"kube-state-metrics\"}  * on (namespace, pod, cluster)\n        group_left() max by (namespace, pod, cluster) (\n         (kube_pod_status_phase{phase=~\"Pending|Running\"} == 1)\n         )\n      record: cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits\n    - expr: |\n        sum by (namespace, cluster) (\n            sum by (namespace, pod, cluster) (\n                max by (namespace, pod, container, cluster) (\n                  kube_pod_container_resource_limits{resource=\"cpu\",job=\"kube-state-metrics\"}\n                ) * on(namespace, pod, cluster) group_left() max by (namespace, pod, cluster) (\n                  kube_pod_status_phase{phase=~\"Pending|Running\"} == 1\n                )\n            )\n        )\n      record: namespace_cpu:kube_pod_container_resource_limits:sum\n    - expr: |\n        max by (cluster, namespace, workload, pod) (\n          label_replace(\n            label_replace(\n              kube_pod_owner{job=\"kube-state-metrics\", owner_kind=\"ReplicaSet\"},\n              \"replicaset\", \"$1\", \"owner_name\", \"(.*)\"\n            ) * on(replicaset, namespace) group_left(owner_name) topk by(replicaset, namespace) (\n              1, max by (replicaset, namespace, owner_name) (\n                kube_replicaset_owner{job=\"kube-state-metrics\"}\n              )\n            ),\n            \"workload\", \"$1\", \"owner_name\", \"(.*)\"\n          )\n        )\n      labels:\n        workload_type: deployment\n      record: namespace_workload_pod:kube_pod_owner:relabel\n    - expr: |\n        max by (cluster, namespace, workload, pod) (\n          label_replace(\n            kube_pod_owner{job=\"kube-state-metrics\", owner_kind=\"DaemonSet\"},\n            \"workload\", \"$1\", \"owner_name\", \"(.*)\"\n          )\n        )\n      labels:\n        workload_type: daemonset\n      record: namespace_workload_pod:kube_pod_owner:relabel\n    - expr: |\n        max by (cluster, namespace, workload, pod) (\n          label_replace(\n            kube_pod_owner{job=\"kube-state-metrics\", owner_kind=\"StatefulSet\"},\n            \"workload\", \"$1\", \"owner_name\", \"(.*)\"\n          )\n        )\n      labels:\n        workload_type: statefulset\n      record: namespace_workload_pod:kube_pod_owner:relabel\n    - expr: |\n        max by (cluster, namespace, workload, pod) (\n          label_replace(\n            kube_pod_owner{job=\"kube-state-metrics\", owner_kind=\"Job\"},\n            \"workload\", \"$1\", \"owner_name\", \"(.*)\"\n          )\n        )\n      labels:\n        workload_type: job\n      record: namespace_workload_pod:kube_pod_owner:relabel\n  - name: kube-scheduler.rules\n    rules:\n    - expr: |\n        histogram_quantile(0.99, sum(rate(scheduler_e2e_scheduling_duration_seconds_bucket{job=\"kube-scheduler\"}[5m])) without(instance, pod))\n      labels:\n        quantile: \"0.99\"\n      record: cluster_quantile:scheduler_e2e_scheduling_duration_seconds:histogram_quantile\n    - expr: |\n        histogram_quantile(0.99, sum(rate(scheduler_scheduling_algorithm_duration_seconds_bucket{job=\"kube-scheduler\"}[5m])) without(instance, pod))\n      labels:\n        quantile: \"0.99\"\n      record: cluster_quantile:scheduler_scheduling_algorithm_duration_seconds:histogram_quantile\n    - expr: |\n        histogram_quantile(0.99, sum(rate(scheduler_binding_duration_seconds_bucket{job=\"kube-scheduler\"}[5m])) without(instance, pod))\n      labels:\n        quantile: \"0.99\"\n      record: cluster_quantile:scheduler_binding_duration_seconds:histogram_quantile\n    - expr: |\n        histogram_quantile(0.9, sum(rate(scheduler_e2e_scheduling_duration_seconds_bucket{job=\"kube-scheduler\"}[5m])) without(instance, pod))\n      labels:\n        quantile: \"0.9\"\n      record: cluster_quantile:scheduler_e2e_scheduling_duration_seconds:histogram_quantile\n    - expr: |\n        histogram_quantile(0.9, sum(rate(scheduler_scheduling_algorithm_duration_seconds_bucket{job=\"kube-scheduler\"}[5m])) without(instance, pod))\n      labels:\n        quantile: \"0.9\"\n      record: cluster_quantile:scheduler_scheduling_algorithm_duration_seconds:histogram_quantile\n    - expr: |\n        histogram_quantile(0.9, sum(rate(scheduler_binding_duration_seconds_bucket{job=\"kube-scheduler\"}[5m])) without(instance, pod))\n      labels:\n        quantile: \"0.9\"\n      record: cluster_quantile:scheduler_binding_duration_seconds:histogram_quantile\n    - expr: |\n        histogram_quantile(0.5, sum(rate(scheduler_e2e_scheduling_duration_seconds_bucket{job=\"kube-scheduler\"}[5m])) without(instance, pod))\n      labels:\n        quantile: \"0.5\"\n      record: cluster_quantile:scheduler_e2e_scheduling_duration_seconds:histogram_quantile\n    - expr: |\n        histogram_quantile(0.5, sum(rate(scheduler_scheduling_algorithm_duration_seconds_bucket{job=\"kube-scheduler\"}[5m])) without(instance, pod))\n      labels:\n        quantile: \"0.5\"\n      record: cluster_quantile:scheduler_scheduling_algorithm_duration_seconds:histogram_quantile\n    - expr: |\n        histogram_quantile(0.5, sum(rate(scheduler_binding_duration_seconds_bucket{job=\"kube-scheduler\"}[5m])) without(instance, pod))\n      labels:\n        quantile: \"0.5\"\n      record: cluster_quantile:scheduler_binding_duration_seconds:histogram_quantile\n  - name: node.rules\n    rules:\n    - expr: |\n        topk by(cluster, namespace, pod) (1,\n          max by (cluster, node, namespace, pod) (\n            label_replace(kube_pod_info{job=\"kube-state-metrics\",node!=\"\"}, \"pod\", \"$1\", \"pod\", \"(.*)\")\n        ))\n      record: 'node_namespace_pod:kube_pod_info:'\n    - expr: |\n        count by (cluster, node) (\n          node_cpu_seconds_total{mode=\"idle\",job=\"node-exporter\"}\n          * on (namespace, pod) group_left(node)\n          topk by(namespace, pod) (1, node_namespace_pod:kube_pod_info:)\n        )\n      record: node:node_num_cpu:sum\n    - expr: |\n        sum(\n          node_memory_MemAvailable_bytes{job=\"node-exporter\"} or\n          (\n            node_memory_Buffers_bytes{job=\"node-exporter\"} +\n            node_memory_Cached_bytes{job=\"node-exporter\"} +\n            node_memory_MemFree_bytes{job=\"node-exporter\"} +\n            node_memory_Slab_bytes{job=\"node-exporter\"}\n          )\n        ) by (cluster)\n      record: :node_memory_MemAvailable_bytes:sum\n    - expr: |\n        avg by (cluster, node) (\n          sum without (mode) (\n            rate(node_cpu_seconds_total{mode!=\"idle\",mode!=\"iowait\",mode!=\"steal\",job=\"node-exporter\"}[5m])\n          )\n        )\n      record: node:node_cpu_utilization:ratio_rate5m\n    - expr: |\n        avg by (cluster) (\n          node:node_cpu_utilization:ratio_rate5m\n        )\n      record: cluster:node_cpu:ratio_rate5m\n  - name: kubelet.rules\n    rules:\n    - expr: |\n        histogram_quantile(0.99, sum(rate(kubelet_pleg_relist_duration_seconds_bucket{job=\"kubelet\", metrics_path=\"/metrics\"}[5m])) by (cluster, instance, le) * on(cluster, instance) group_left(node) kubelet_node_name{job=\"kubelet\", metrics_path=\"/metrics\"})\n      labels:\n        quantile: \"0.99\"\n      record: node_quantile:kubelet_pleg_relist_duration_seconds:histogram_quantile\n    - expr: |\n        histogram_quantile(0.9, sum(rate(kubelet_pleg_relist_duration_seconds_bucket{job=\"kubelet\", metrics_path=\"/metrics\"}[5m])) by (cluster, instance, le) * on(cluster, instance) group_left(node) kubelet_node_name{job=\"kubelet\", metrics_path=\"/metrics\"})\n      labels:\n        quantile: \"0.9\"\n      record: node_quantile:kubelet_pleg_relist_duration_seconds:histogram_quantile\n    - expr: |\n        histogram_quantile(0.5, sum(rate(kubelet_pleg_relist_duration_seconds_bucket{job=\"kubelet\", metrics_path=\"/metrics\"}[5m])) by (cluster, instance, le) * on(cluster, instance) group_left(node) kubelet_node_name{job=\"kubelet\", metrics_path=\"/metrics\"})\n      labels:\n        quantile: \"0.5\"\n      record: node_quantile:kubelet_pleg_relist_duration_seconds:histogram_quantile\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/kubernetesControlPlane-serviceMonitorApiserver.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  labels:\n    app.kubernetes.io/name: apiserver\n    app.kubernetes.io/part-of: kube-prometheus\n  name: kube-apiserver\n  namespace: monitoring\nspec:\n  endpoints:\n  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    interval: 30s\n    metricRelabelings:\n    - action: drop\n      regex: kubelet_(pod_worker_latency_microseconds|pod_start_latency_microseconds|cgroup_manager_latency_microseconds|pod_worker_start_latency_microseconds|pleg_relist_latency_microseconds|pleg_relist_interval_microseconds|runtime_operations|runtime_operations_latency_microseconds|runtime_operations_errors|eviction_stats_age_microseconds|device_plugin_registration_count|device_plugin_alloc_latency_microseconds|network_plugin_operations_latency_microseconds)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: scheduler_(e2e_scheduling_latency_microseconds|scheduling_algorithm_predicate_evaluation|scheduling_algorithm_priority_evaluation|scheduling_algorithm_preemption_evaluation|scheduling_algorithm_latency_microseconds|binding_latency_microseconds|scheduling_latency_seconds)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: apiserver_(request_count|request_latencies|request_latencies_summary|dropped_requests|storage_data_key_generation_latencies_microseconds|storage_transformation_failures_total|storage_transformation_latencies_microseconds|proxy_tunnel_sync_latency_secs|longrunning_gauge|registered_watchers)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: kubelet_docker_(operations|operations_latency_microseconds|operations_errors|operations_timeout)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: reflector_(items_per_list|items_per_watch|list_duration_seconds|lists_total|short_watches_total|watch_duration_seconds|watches_total)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: etcd_(helper_cache_hit_count|helper_cache_miss_count|helper_cache_entry_count|object_counts|request_cache_get_latencies_summary|request_cache_add_latencies_summary|request_latencies_summary)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: transformation_(transformation_latencies_microseconds|failures_total)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: (admission_quota_controller_adds|admission_quota_controller_depth|admission_quota_controller_longest_running_processor_microseconds|admission_quota_controller_queue_latency|admission_quota_controller_unfinished_work_seconds|admission_quota_controller_work_duration|APIServiceOpenAPIAggregationControllerQueue1_adds|APIServiceOpenAPIAggregationControllerQueue1_depth|APIServiceOpenAPIAggregationControllerQueue1_longest_running_processor_microseconds|APIServiceOpenAPIAggregationControllerQueue1_queue_latency|APIServiceOpenAPIAggregationControllerQueue1_retries|APIServiceOpenAPIAggregationControllerQueue1_unfinished_work_seconds|APIServiceOpenAPIAggregationControllerQueue1_work_duration|APIServiceRegistrationController_adds|APIServiceRegistrationController_depth|APIServiceRegistrationController_longest_running_processor_microseconds|APIServiceRegistrationController_queue_latency|APIServiceRegistrationController_retries|APIServiceRegistrationController_unfinished_work_seconds|APIServiceRegistrationController_work_duration|autoregister_adds|autoregister_depth|autoregister_longest_running_processor_microseconds|autoregister_queue_latency|autoregister_retries|autoregister_unfinished_work_seconds|autoregister_work_duration|AvailableConditionController_adds|AvailableConditionController_depth|AvailableConditionController_longest_running_processor_microseconds|AvailableConditionController_queue_latency|AvailableConditionController_retries|AvailableConditionController_unfinished_work_seconds|AvailableConditionController_work_duration|crd_autoregistration_controller_adds|crd_autoregistration_controller_depth|crd_autoregistration_controller_longest_running_processor_microseconds|crd_autoregistration_controller_queue_latency|crd_autoregistration_controller_retries|crd_autoregistration_controller_unfinished_work_seconds|crd_autoregistration_controller_work_duration|crdEstablishing_adds|crdEstablishing_depth|crdEstablishing_longest_running_processor_microseconds|crdEstablishing_queue_latency|crdEstablishing_retries|crdEstablishing_unfinished_work_seconds|crdEstablishing_work_duration|crd_finalizer_adds|crd_finalizer_depth|crd_finalizer_longest_running_processor_microseconds|crd_finalizer_queue_latency|crd_finalizer_retries|crd_finalizer_unfinished_work_seconds|crd_finalizer_work_duration|crd_naming_condition_controller_adds|crd_naming_condition_controller_depth|crd_naming_condition_controller_longest_running_processor_microseconds|crd_naming_condition_controller_queue_latency|crd_naming_condition_controller_retries|crd_naming_condition_controller_unfinished_work_seconds|crd_naming_condition_controller_work_duration|crd_openapi_controller_adds|crd_openapi_controller_depth|crd_openapi_controller_longest_running_processor_microseconds|crd_openapi_controller_queue_latency|crd_openapi_controller_retries|crd_openapi_controller_unfinished_work_seconds|crd_openapi_controller_work_duration|DiscoveryController_adds|DiscoveryController_depth|DiscoveryController_longest_running_processor_microseconds|DiscoveryController_queue_latency|DiscoveryController_retries|DiscoveryController_unfinished_work_seconds|DiscoveryController_work_duration|kubeproxy_sync_proxy_rules_latency_microseconds|non_structural_schema_condition_controller_adds|non_structural_schema_condition_controller_depth|non_structural_schema_condition_controller_longest_running_processor_microseconds|non_structural_schema_condition_controller_queue_latency|non_structural_schema_condition_controller_retries|non_structural_schema_condition_controller_unfinished_work_seconds|non_structural_schema_condition_controller_work_duration|rest_client_request_latency_seconds|storage_operation_errors_total|storage_operation_status_count)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: etcd_(debugging|disk|server).*\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: apiserver_admission_controller_admission_latencies_seconds_.*\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: apiserver_admission_step_admission_latencies_seconds_.*\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: apiserver_request_duration_seconds_bucket;(0.15|0.25|0.3|0.35|0.4|0.45|0.6|0.7|0.8|0.9|1.25|1.5|1.75|2.5|3|3.5|4.5|6|7|8|9|15|25|30|50)\n      sourceLabels:\n      - __name__\n      - le\n    port: https\n    scheme: https\n    tlsConfig:\n      caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt\n      serverName: kubernetes\n  jobLabel: component\n  namespaceSelector:\n    matchNames:\n    - default\n  selector:\n    matchLabels:\n      component: apiserver\n      provider: kubernetes\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/kubernetesControlPlane-serviceMonitorCoreDNS.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  labels:\n    app.kubernetes.io/name: coredns\n    app.kubernetes.io/part-of: kube-prometheus\n  name: coredns\n  namespace: monitoring\nspec:\n  endpoints:\n  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    interval: 15s\n    metricRelabelings:\n    - action: drop\n      regex: coredns_cache_misses_total\n      sourceLabels:\n      - __name__\n    port: metrics\n  jobLabel: app.kubernetes.io/name\n  namespaceSelector:\n    matchNames:\n    - kube-system\n  selector:\n    matchLabels:\n      k8s-app: kube-dns\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/kubernetesControlPlane-serviceMonitorKubeControllerManager.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  labels:\n    app.kubernetes.io/name: kube-controller-manager\n    app.kubernetes.io/part-of: kube-prometheus\n  name: kube-controller-manager\n  namespace: monitoring\nspec:\n  endpoints:\n  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    interval: 30s\n    metricRelabelings:\n    - action: drop\n      regex: kubelet_(pod_worker_latency_microseconds|pod_start_latency_microseconds|cgroup_manager_latency_microseconds|pod_worker_start_latency_microseconds|pleg_relist_latency_microseconds|pleg_relist_interval_microseconds|runtime_operations|runtime_operations_latency_microseconds|runtime_operations_errors|eviction_stats_age_microseconds|device_plugin_registration_count|device_plugin_alloc_latency_microseconds|network_plugin_operations_latency_microseconds)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: scheduler_(e2e_scheduling_latency_microseconds|scheduling_algorithm_predicate_evaluation|scheduling_algorithm_priority_evaluation|scheduling_algorithm_preemption_evaluation|scheduling_algorithm_latency_microseconds|binding_latency_microseconds|scheduling_latency_seconds)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: apiserver_(request_count|request_latencies|request_latencies_summary|dropped_requests|storage_data_key_generation_latencies_microseconds|storage_transformation_failures_total|storage_transformation_latencies_microseconds|proxy_tunnel_sync_latency_secs|longrunning_gauge|registered_watchers)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: kubelet_docker_(operations|operations_latency_microseconds|operations_errors|operations_timeout)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: reflector_(items_per_list|items_per_watch|list_duration_seconds|lists_total|short_watches_total|watch_duration_seconds|watches_total)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: etcd_(helper_cache_hit_count|helper_cache_miss_count|helper_cache_entry_count|object_counts|request_cache_get_latencies_summary|request_cache_add_latencies_summary|request_latencies_summary)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: transformation_(transformation_latencies_microseconds|failures_total)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: (admission_quota_controller_adds|admission_quota_controller_depth|admission_quota_controller_longest_running_processor_microseconds|admission_quota_controller_queue_latency|admission_quota_controller_unfinished_work_seconds|admission_quota_controller_work_duration|APIServiceOpenAPIAggregationControllerQueue1_adds|APIServiceOpenAPIAggregationControllerQueue1_depth|APIServiceOpenAPIAggregationControllerQueue1_longest_running_processor_microseconds|APIServiceOpenAPIAggregationControllerQueue1_queue_latency|APIServiceOpenAPIAggregationControllerQueue1_retries|APIServiceOpenAPIAggregationControllerQueue1_unfinished_work_seconds|APIServiceOpenAPIAggregationControllerQueue1_work_duration|APIServiceRegistrationController_adds|APIServiceRegistrationController_depth|APIServiceRegistrationController_longest_running_processor_microseconds|APIServiceRegistrationController_queue_latency|APIServiceRegistrationController_retries|APIServiceRegistrationController_unfinished_work_seconds|APIServiceRegistrationController_work_duration|autoregister_adds|autoregister_depth|autoregister_longest_running_processor_microseconds|autoregister_queue_latency|autoregister_retries|autoregister_unfinished_work_seconds|autoregister_work_duration|AvailableConditionController_adds|AvailableConditionController_depth|AvailableConditionController_longest_running_processor_microseconds|AvailableConditionController_queue_latency|AvailableConditionController_retries|AvailableConditionController_unfinished_work_seconds|AvailableConditionController_work_duration|crd_autoregistration_controller_adds|crd_autoregistration_controller_depth|crd_autoregistration_controller_longest_running_processor_microseconds|crd_autoregistration_controller_queue_latency|crd_autoregistration_controller_retries|crd_autoregistration_controller_unfinished_work_seconds|crd_autoregistration_controller_work_duration|crdEstablishing_adds|crdEstablishing_depth|crdEstablishing_longest_running_processor_microseconds|crdEstablishing_queue_latency|crdEstablishing_retries|crdEstablishing_unfinished_work_seconds|crdEstablishing_work_duration|crd_finalizer_adds|crd_finalizer_depth|crd_finalizer_longest_running_processor_microseconds|crd_finalizer_queue_latency|crd_finalizer_retries|crd_finalizer_unfinished_work_seconds|crd_finalizer_work_duration|crd_naming_condition_controller_adds|crd_naming_condition_controller_depth|crd_naming_condition_controller_longest_running_processor_microseconds|crd_naming_condition_controller_queue_latency|crd_naming_condition_controller_retries|crd_naming_condition_controller_unfinished_work_seconds|crd_naming_condition_controller_work_duration|crd_openapi_controller_adds|crd_openapi_controller_depth|crd_openapi_controller_longest_running_processor_microseconds|crd_openapi_controller_queue_latency|crd_openapi_controller_retries|crd_openapi_controller_unfinished_work_seconds|crd_openapi_controller_work_duration|DiscoveryController_adds|DiscoveryController_depth|DiscoveryController_longest_running_processor_microseconds|DiscoveryController_queue_latency|DiscoveryController_retries|DiscoveryController_unfinished_work_seconds|DiscoveryController_work_duration|kubeproxy_sync_proxy_rules_latency_microseconds|non_structural_schema_condition_controller_adds|non_structural_schema_condition_controller_depth|non_structural_schema_condition_controller_longest_running_processor_microseconds|non_structural_schema_condition_controller_queue_latency|non_structural_schema_condition_controller_retries|non_structural_schema_condition_controller_unfinished_work_seconds|non_structural_schema_condition_controller_work_duration|rest_client_request_latency_seconds|storage_operation_errors_total|storage_operation_status_count)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: etcd_(debugging|disk|request|server).*\n      sourceLabels:\n      - __name__\n    port: https-metrics\n    scheme: https\n    tlsConfig:\n      insecureSkipVerify: true\n  jobLabel: app.kubernetes.io/name\n  namespaceSelector:\n    matchNames:\n    - kube-system\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: kube-controller-manager\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/kubernetesControlPlane-serviceMonitorKubeScheduler.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  labels:\n    app.kubernetes.io/name: kube-scheduler\n    app.kubernetes.io/part-of: kube-prometheus\n  name: kube-scheduler\n  namespace: monitoring\nspec:\n  endpoints:\n  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    interval: 30s\n    port: https-metrics\n    scheme: https\n    tlsConfig:\n      insecureSkipVerify: true\n  jobLabel: app.kubernetes.io/name\n  namespaceSelector:\n    matchNames:\n    - kube-system\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: kube-scheduler\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/kubernetesControlPlane-serviceMonitorKubelet.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  labels:\n    app.kubernetes.io/name: kubelet\n    app.kubernetes.io/part-of: kube-prometheus\n  name: kubelet\n  namespace: monitoring\nspec:\n  endpoints:\n  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    honorLabels: true\n    interval: 30s\n    metricRelabelings:\n    - action: drop\n      regex: kubelet_(pod_worker_latency_microseconds|pod_start_latency_microseconds|cgroup_manager_latency_microseconds|pod_worker_start_latency_microseconds|pleg_relist_latency_microseconds|pleg_relist_interval_microseconds|runtime_operations|runtime_operations_latency_microseconds|runtime_operations_errors|eviction_stats_age_microseconds|device_plugin_registration_count|device_plugin_alloc_latency_microseconds|network_plugin_operations_latency_microseconds)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: scheduler_(e2e_scheduling_latency_microseconds|scheduling_algorithm_predicate_evaluation|scheduling_algorithm_priority_evaluation|scheduling_algorithm_preemption_evaluation|scheduling_algorithm_latency_microseconds|binding_latency_microseconds|scheduling_latency_seconds)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: apiserver_(request_count|request_latencies|request_latencies_summary|dropped_requests|storage_data_key_generation_latencies_microseconds|storage_transformation_failures_total|storage_transformation_latencies_microseconds|proxy_tunnel_sync_latency_secs|longrunning_gauge|registered_watchers)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: kubelet_docker_(operations|operations_latency_microseconds|operations_errors|operations_timeout)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: reflector_(items_per_list|items_per_watch|list_duration_seconds|lists_total|short_watches_total|watch_duration_seconds|watches_total)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: etcd_(helper_cache_hit_count|helper_cache_miss_count|helper_cache_entry_count|object_counts|request_cache_get_latencies_summary|request_cache_add_latencies_summary|request_latencies_summary)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: transformation_(transformation_latencies_microseconds|failures_total)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: (admission_quota_controller_adds|admission_quota_controller_depth|admission_quota_controller_longest_running_processor_microseconds|admission_quota_controller_queue_latency|admission_quota_controller_unfinished_work_seconds|admission_quota_controller_work_duration|APIServiceOpenAPIAggregationControllerQueue1_adds|APIServiceOpenAPIAggregationControllerQueue1_depth|APIServiceOpenAPIAggregationControllerQueue1_longest_running_processor_microseconds|APIServiceOpenAPIAggregationControllerQueue1_queue_latency|APIServiceOpenAPIAggregationControllerQueue1_retries|APIServiceOpenAPIAggregationControllerQueue1_unfinished_work_seconds|APIServiceOpenAPIAggregationControllerQueue1_work_duration|APIServiceRegistrationController_adds|APIServiceRegistrationController_depth|APIServiceRegistrationController_longest_running_processor_microseconds|APIServiceRegistrationController_queue_latency|APIServiceRegistrationController_retries|APIServiceRegistrationController_unfinished_work_seconds|APIServiceRegistrationController_work_duration|autoregister_adds|autoregister_depth|autoregister_longest_running_processor_microseconds|autoregister_queue_latency|autoregister_retries|autoregister_unfinished_work_seconds|autoregister_work_duration|AvailableConditionController_adds|AvailableConditionController_depth|AvailableConditionController_longest_running_processor_microseconds|AvailableConditionController_queue_latency|AvailableConditionController_retries|AvailableConditionController_unfinished_work_seconds|AvailableConditionController_work_duration|crd_autoregistration_controller_adds|crd_autoregistration_controller_depth|crd_autoregistration_controller_longest_running_processor_microseconds|crd_autoregistration_controller_queue_latency|crd_autoregistration_controller_retries|crd_autoregistration_controller_unfinished_work_seconds|crd_autoregistration_controller_work_duration|crdEstablishing_adds|crdEstablishing_depth|crdEstablishing_longest_running_processor_microseconds|crdEstablishing_queue_latency|crdEstablishing_retries|crdEstablishing_unfinished_work_seconds|crdEstablishing_work_duration|crd_finalizer_adds|crd_finalizer_depth|crd_finalizer_longest_running_processor_microseconds|crd_finalizer_queue_latency|crd_finalizer_retries|crd_finalizer_unfinished_work_seconds|crd_finalizer_work_duration|crd_naming_condition_controller_adds|crd_naming_condition_controller_depth|crd_naming_condition_controller_longest_running_processor_microseconds|crd_naming_condition_controller_queue_latency|crd_naming_condition_controller_retries|crd_naming_condition_controller_unfinished_work_seconds|crd_naming_condition_controller_work_duration|crd_openapi_controller_adds|crd_openapi_controller_depth|crd_openapi_controller_longest_running_processor_microseconds|crd_openapi_controller_queue_latency|crd_openapi_controller_retries|crd_openapi_controller_unfinished_work_seconds|crd_openapi_controller_work_duration|DiscoveryController_adds|DiscoveryController_depth|DiscoveryController_longest_running_processor_microseconds|DiscoveryController_queue_latency|DiscoveryController_retries|DiscoveryController_unfinished_work_seconds|DiscoveryController_work_duration|kubeproxy_sync_proxy_rules_latency_microseconds|non_structural_schema_condition_controller_adds|non_structural_schema_condition_controller_depth|non_structural_schema_condition_controller_longest_running_processor_microseconds|non_structural_schema_condition_controller_queue_latency|non_structural_schema_condition_controller_retries|non_structural_schema_condition_controller_unfinished_work_seconds|non_structural_schema_condition_controller_work_duration|rest_client_request_latency_seconds|storage_operation_errors_total|storage_operation_status_count)\n      sourceLabels:\n      - __name__\n    port: https-metrics\n    relabelings:\n    - action: replace\n      sourceLabels:\n      - __metrics_path__\n      targetLabel: metrics_path\n    scheme: https\n    tlsConfig:\n      insecureSkipVerify: true\n  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    honorLabels: true\n    honorTimestamps: false\n    interval: 30s\n    metricRelabelings:\n    - action: drop\n      regex: container_(network_tcp_usage_total|network_udp_usage_total|tasks_state|cpu_load_average_10s)\n      sourceLabels:\n      - __name__\n    - action: drop\n      regex: (container_spec_.*|container_file_descriptors|container_sockets|container_threads_max|container_threads|container_start_time_seconds|container_last_seen);;\n      sourceLabels:\n      - __name__\n      - pod\n      - namespace\n    - action: drop\n      regex: (container_blkio_device_usage_total);.+\n      sourceLabels:\n      - __name__\n      - container\n    path: /metrics/cadvisor\n    port: https-metrics\n    relabelings:\n    - action: replace\n      sourceLabels:\n      - __metrics_path__\n      targetLabel: metrics_path\n    scheme: https\n    tlsConfig:\n      insecureSkipVerify: true\n  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    honorLabels: true\n    interval: 30s\n    path: /metrics/probes\n    port: https-metrics\n    relabelings:\n    - action: replace\n      sourceLabels:\n      - __metrics_path__\n      targetLabel: metrics_path\n    scheme: https\n    tlsConfig:\n      insecureSkipVerify: true\n  jobLabel: app.kubernetes.io/name\n  namespaceSelector:\n    matchNames:\n    - kube-system\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: kubelet\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/nodeExporter-clusterRole.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: node-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 1.6.0\n  name: node-exporter\n  namespace: monitoring\nrules:\n- apiGroups:\n  - authentication.k8s.io\n  resources:\n  - tokenreviews\n  verbs:\n  - create\n- apiGroups:\n  - authorization.k8s.io\n  resources:\n  - subjectaccessreviews\n  verbs:\n  - create\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/nodeExporter-clusterRoleBinding.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: node-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 1.6.0\n  name: node-exporter\n  namespace: monitoring\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: node-exporter\nsubjects:\n- kind: ServiceAccount\n  name: node-exporter\n  namespace: monitoring\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/nodeExporter-daemonset.yaml",
    "content": "apiVersion: apps/v1\nkind: DaemonSet\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: node-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 1.6.0\n  name: node-exporter\n  namespace: monitoring\nspec:\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: exporter\n      app.kubernetes.io/name: node-exporter\n      app.kubernetes.io/part-of: kube-prometheus\n  template:\n    metadata:\n      annotations:\n        kubectl.kubernetes.io/default-container: node-exporter\n      labels:\n        app.kubernetes.io/component: exporter\n        app.kubernetes.io/name: node-exporter\n        app.kubernetes.io/part-of: kube-prometheus\n        app.kubernetes.io/version: 1.6.0\n    spec:\n      automountServiceAccountToken: true\n      containers:\n      - args:\n        - --web.listen-address=127.0.0.1:9100\n        - --path.sysfs=/host/sys\n        - --path.rootfs=/host/root\n        - --path.udev.data=/host/root/run/udev/data\n        - --no-collector.wifi\n        - --no-collector.hwmon\n        - --no-collector.btrfs\n        - --collector.filesystem.mount-points-exclude=^/(dev|proc|sys|run/k3s/containerd/.+|var/lib/docker/.+|var/lib/kubelet/pods/.+)($|/)\n        - --collector.netclass.ignored-devices=^(veth.*|[a-f0-9]{15})$\n        - --collector.netdev.device-exclude=^(veth.*|[a-f0-9]{15})$\n        image: quay.io/prometheus/node-exporter:v1.6.0\n        name: node-exporter\n        resources:\n          limits:\n            cpu: 250m\n            memory: 180Mi\n          requests:\n            cpu: 102m\n            memory: 180Mi\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            add:\n            - SYS_TIME\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n        volumeMounts:\n        - mountPath: /host/sys\n          mountPropagation: HostToContainer\n          name: sys\n          readOnly: true\n        - mountPath: /host/root\n          mountPropagation: HostToContainer\n          name: root\n          readOnly: true\n      - args:\n        - --logtostderr\n        - --secure-listen-address=[$(IP)]:9100\n        - --tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305\n        - --upstream=http://127.0.0.1:9100/\n        env:\n        - name: IP\n          valueFrom:\n            fieldRef:\n              fieldPath: status.podIP\n        image: quay.io/brancz/kube-rbac-proxy:v0.14.2\n        name: kube-rbac-proxy\n        ports:\n        - containerPort: 9100\n          hostPort: 9100\n          name: https\n        resources:\n          limits:\n            cpu: 20m\n            memory: 40Mi\n          requests:\n            cpu: 10m\n            memory: 20Mi\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsGroup: 65532\n          runAsNonRoot: true\n          runAsUser: 65532\n      hostNetwork: true\n      hostPID: true\n      nodeSelector:\n        kubernetes.io/os: linux\n      priorityClassName: system-cluster-critical\n      securityContext:\n        runAsNonRoot: true\n        runAsUser: 65534\n      serviceAccountName: node-exporter\n      tolerations:\n      - operator: Exists\n      volumes:\n      - hostPath:\n          path: /sys\n        name: sys\n      - hostPath:\n          path: /\n        name: root\n  updateStrategy:\n    rollingUpdate:\n      maxUnavailable: 10%\n    type: RollingUpdate\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/nodeExporter-networkPolicy.yaml",
    "content": "apiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: node-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 1.6.0\n  name: node-exporter\n  namespace: monitoring\nspec:\n  egress:\n  - {}\n  ingress:\n  - from:\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: prometheus\n    ports:\n    - port: 9100\n      protocol: TCP\n  podSelector:\n    matchLabels:\n      app.kubernetes.io/component: exporter\n      app.kubernetes.io/name: node-exporter\n      app.kubernetes.io/part-of: kube-prometheus\n  policyTypes:\n  - Egress\n  - Ingress\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/nodeExporter-prometheusRule.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: node-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 1.6.0\n    prometheus: k8s\n    role: alert-rules\n  name: node-exporter-rules\n  namespace: monitoring\nspec:\n  groups:\n  - name: node-exporter\n    rules:\n    - alert: NodeFilesystemSpaceFillingUp\n      annotations:\n        description: Filesystem on {{ $labels.device }} at {{ $labels.instance }} has only {{ printf \"%.2f\" $value }}% available space left and is filling up.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefilesystemspacefillingup\n        summary: Filesystem is predicted to run out of space within the next 24 hours.\n      expr: |\n        (\n          node_filesystem_avail_bytes{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} / node_filesystem_size_bytes{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} * 100 < 15\n        and\n          predict_linear(node_filesystem_avail_bytes{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"}[6h], 24*60*60) < 0\n        and\n          node_filesystem_readonly{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} == 0\n        )\n      for: 1h\n      labels:\n        severity: warning\n    - alert: NodeFilesystemSpaceFillingUp\n      annotations:\n        description: Filesystem on {{ $labels.device }} at {{ $labels.instance }} has only {{ printf \"%.2f\" $value }}% available space left and is filling up fast.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefilesystemspacefillingup\n        summary: Filesystem is predicted to run out of space within the next 4 hours.\n      expr: |\n        (\n          node_filesystem_avail_bytes{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} / node_filesystem_size_bytes{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} * 100 < 10\n        and\n          predict_linear(node_filesystem_avail_bytes{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"}[6h], 4*60*60) < 0\n        and\n          node_filesystem_readonly{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} == 0\n        )\n      for: 1h\n      labels:\n        severity: critical\n    - alert: NodeFilesystemAlmostOutOfSpace\n      annotations:\n        description: Filesystem on {{ $labels.device }} at {{ $labels.instance }} has only {{ printf \"%.2f\" $value }}% available space left.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefilesystemalmostoutofspace\n        summary: Filesystem has less than 5% space left.\n      expr: |\n        (\n          node_filesystem_avail_bytes{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} / node_filesystem_size_bytes{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} * 100 < 5\n        and\n          node_filesystem_readonly{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} == 0\n        )\n      for: 30m\n      labels:\n        severity: warning\n    - alert: NodeFilesystemAlmostOutOfSpace\n      annotations:\n        description: Filesystem on {{ $labels.device }} at {{ $labels.instance }} has only {{ printf \"%.2f\" $value }}% available space left.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefilesystemalmostoutofspace\n        summary: Filesystem has less than 3% space left.\n      expr: |\n        (\n          node_filesystem_avail_bytes{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} / node_filesystem_size_bytes{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} * 100 < 3\n        and\n          node_filesystem_readonly{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} == 0\n        )\n      for: 30m\n      labels:\n        severity: critical\n    - alert: NodeFilesystemFilesFillingUp\n      annotations:\n        description: Filesystem on {{ $labels.device }} at {{ $labels.instance }} has only {{ printf \"%.2f\" $value }}% available inodes left and is filling up.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefilesystemfilesfillingup\n        summary: Filesystem is predicted to run out of inodes within the next 24 hours.\n      expr: |\n        (\n          node_filesystem_files_free{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} / node_filesystem_files{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} * 100 < 40\n        and\n          predict_linear(node_filesystem_files_free{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"}[6h], 24*60*60) < 0\n        and\n          node_filesystem_readonly{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} == 0\n        )\n      for: 1h\n      labels:\n        severity: warning\n    - alert: NodeFilesystemFilesFillingUp\n      annotations:\n        description: Filesystem on {{ $labels.device }} at {{ $labels.instance }} has only {{ printf \"%.2f\" $value }}% available inodes left and is filling up fast.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefilesystemfilesfillingup\n        summary: Filesystem is predicted to run out of inodes within the next 4 hours.\n      expr: |\n        (\n          node_filesystem_files_free{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} / node_filesystem_files{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} * 100 < 20\n        and\n          predict_linear(node_filesystem_files_free{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"}[6h], 4*60*60) < 0\n        and\n          node_filesystem_readonly{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} == 0\n        )\n      for: 1h\n      labels:\n        severity: critical\n    - alert: NodeFilesystemAlmostOutOfFiles\n      annotations:\n        description: Filesystem on {{ $labels.device }} at {{ $labels.instance }} has only {{ printf \"%.2f\" $value }}% available inodes left.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefilesystemalmostoutoffiles\n        summary: Filesystem has less than 5% inodes left.\n      expr: |\n        (\n          node_filesystem_files_free{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} / node_filesystem_files{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} * 100 < 5\n        and\n          node_filesystem_readonly{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} == 0\n        )\n      for: 1h\n      labels:\n        severity: warning\n    - alert: NodeFilesystemAlmostOutOfFiles\n      annotations:\n        description: Filesystem on {{ $labels.device }} at {{ $labels.instance }} has only {{ printf \"%.2f\" $value }}% available inodes left.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefilesystemalmostoutoffiles\n        summary: Filesystem has less than 3% inodes left.\n      expr: |\n        (\n          node_filesystem_files_free{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} / node_filesystem_files{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} * 100 < 3\n        and\n          node_filesystem_readonly{job=\"node-exporter\",fstype!=\"\",mountpoint!=\"\"} == 0\n        )\n      for: 1h\n      labels:\n        severity: critical\n    - alert: NodeNetworkReceiveErrs\n      annotations:\n        description: '{{ $labels.instance }} interface {{ $labels.device }} has encountered {{ printf \"%.0f\" $value }} receive errors in the last two minutes.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodenetworkreceiveerrs\n        summary: Network interface is reporting many receive errors.\n      expr: |\n        rate(node_network_receive_errs_total[2m]) / rate(node_network_receive_packets_total[2m]) > 0.01\n      for: 1h\n      labels:\n        severity: warning\n    - alert: NodeNetworkTransmitErrs\n      annotations:\n        description: '{{ $labels.instance }} interface {{ $labels.device }} has encountered {{ printf \"%.0f\" $value }} transmit errors in the last two minutes.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodenetworktransmiterrs\n        summary: Network interface is reporting many transmit errors.\n      expr: |\n        rate(node_network_transmit_errs_total[2m]) / rate(node_network_transmit_packets_total[2m]) > 0.01\n      for: 1h\n      labels:\n        severity: warning\n    - alert: NodeHighNumberConntrackEntriesUsed\n      annotations:\n        description: '{{ $value | humanizePercentage }} of conntrack entries are used.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodehighnumberconntrackentriesused\n        summary: Number of conntrack are getting close to the limit.\n      expr: |\n        (node_nf_conntrack_entries / node_nf_conntrack_entries_limit) > 0.75\n      labels:\n        severity: warning\n    - alert: NodeTextFileCollectorScrapeError\n      annotations:\n        description: Node Exporter text file collector failed to scrape.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodetextfilecollectorscrapeerror\n        summary: Node Exporter text file collector failed to scrape.\n      expr: |\n        node_textfile_scrape_error{job=\"node-exporter\"} == 1\n      labels:\n        severity: warning\n    - alert: NodeClockSkewDetected\n      annotations:\n        description: Clock on {{ $labels.instance }} is out of sync by more than 0.05s. Ensure NTP is configured correctly on this host.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodeclockskewdetected\n        summary: Clock skew detected.\n      expr: |\n        (\n          node_timex_offset_seconds{job=\"node-exporter\"} > 0.05\n        and\n          deriv(node_timex_offset_seconds{job=\"node-exporter\"}[5m]) >= 0\n        )\n        or\n        (\n          node_timex_offset_seconds{job=\"node-exporter\"} < -0.05\n        and\n          deriv(node_timex_offset_seconds{job=\"node-exporter\"}[5m]) <= 0\n        )\n      for: 10m\n      labels:\n        severity: warning\n    - alert: NodeClockNotSynchronising\n      annotations:\n        description: Clock on {{ $labels.instance }} is not synchronising. Ensure NTP is configured on this host.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodeclocknotsynchronising\n        summary: Clock not synchronising.\n      expr: |\n        min_over_time(node_timex_sync_status{job=\"node-exporter\"}[5m]) == 0\n        and\n        node_timex_maxerror_seconds{job=\"node-exporter\"} >= 16\n      for: 10m\n      labels:\n        severity: warning\n    - alert: NodeRAIDDegraded\n      annotations:\n        description: RAID array '{{ $labels.device }}' on {{ $labels.instance }} is in degraded state due to one or more disks failures. Number of spare drives is insufficient to fix issue automatically.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/noderaiddegraded\n        summary: RAID Array is degraded\n      expr: |\n        node_md_disks_required{job=\"node-exporter\",device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\"} - ignoring (state) (node_md_disks{state=\"active\",job=\"node-exporter\",device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\"}) > 0\n      for: 15m\n      labels:\n        severity: critical\n    - alert: NodeRAIDDiskFailure\n      annotations:\n        description: At least one device in RAID array on {{ $labels.instance }} failed. Array '{{ $labels.device }}' needs attention and possibly a disk swap.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/noderaiddiskfailure\n        summary: Failed device in RAID array\n      expr: |\n        node_md_disks{state=\"failed\",job=\"node-exporter\",device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\"} > 0\n      labels:\n        severity: warning\n    - alert: NodeFileDescriptorLimit\n      annotations:\n        description: File descriptors limit at {{ $labels.instance }} is currently at {{ printf \"%.2f\" $value }}%.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefiledescriptorlimit\n        summary: Kernel is predicted to exhaust file descriptors limit soon.\n      expr: |\n        (\n          node_filefd_allocated{job=\"node-exporter\"} * 100 / node_filefd_maximum{job=\"node-exporter\"} > 70\n        )\n      for: 15m\n      labels:\n        severity: warning\n    - alert: NodeFileDescriptorLimit\n      annotations:\n        description: File descriptors limit at {{ $labels.instance }} is currently at {{ printf \"%.2f\" $value }}%.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodefiledescriptorlimit\n        summary: Kernel is predicted to exhaust file descriptors limit soon.\n      expr: |\n        (\n          node_filefd_allocated{job=\"node-exporter\"} * 100 / node_filefd_maximum{job=\"node-exporter\"} > 90\n        )\n      for: 15m\n      labels:\n        severity: critical\n  - name: node-exporter.rules\n    rules:\n    - expr: |\n        count without (cpu, mode) (\n          node_cpu_seconds_total{job=\"node-exporter\",mode=\"idle\"}\n        )\n      record: instance:node_num_cpu:sum\n    - expr: |\n        1 - avg without (cpu) (\n          sum without (mode) (rate(node_cpu_seconds_total{job=\"node-exporter\", mode=~\"idle|iowait|steal\"}[5m]))\n        )\n      record: instance:node_cpu_utilisation:rate5m\n    - expr: |\n        (\n          node_load1{job=\"node-exporter\"}\n        /\n          instance:node_num_cpu:sum{job=\"node-exporter\"}\n        )\n      record: instance:node_load1_per_cpu:ratio\n    - expr: |\n        1 - (\n          (\n            node_memory_MemAvailable_bytes{job=\"node-exporter\"}\n            or\n            (\n              node_memory_Buffers_bytes{job=\"node-exporter\"}\n              +\n              node_memory_Cached_bytes{job=\"node-exporter\"}\n              +\n              node_memory_MemFree_bytes{job=\"node-exporter\"}\n              +\n              node_memory_Slab_bytes{job=\"node-exporter\"}\n            )\n          )\n        /\n          node_memory_MemTotal_bytes{job=\"node-exporter\"}\n        )\n      record: instance:node_memory_utilisation:ratio\n    - expr: |\n        rate(node_vmstat_pgmajfault{job=\"node-exporter\"}[5m])\n      record: instance:node_vmstat_pgmajfault:rate5m\n    - expr: |\n        rate(node_disk_io_time_seconds_total{job=\"node-exporter\", device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\"}[5m])\n      record: instance_device:node_disk_io_time_seconds:rate5m\n    - expr: |\n        rate(node_disk_io_time_weighted_seconds_total{job=\"node-exporter\", device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\"}[5m])\n      record: instance_device:node_disk_io_time_weighted_seconds:rate5m\n    - expr: |\n        sum without (device) (\n          rate(node_network_receive_bytes_total{job=\"node-exporter\", device!=\"lo\"}[5m])\n        )\n      record: instance:node_network_receive_bytes_excluding_lo:rate5m\n    - expr: |\n        sum without (device) (\n          rate(node_network_transmit_bytes_total{job=\"node-exporter\", device!=\"lo\"}[5m])\n        )\n      record: instance:node_network_transmit_bytes_excluding_lo:rate5m\n    - expr: |\n        sum without (device) (\n          rate(node_network_receive_drop_total{job=\"node-exporter\", device!=\"lo\"}[5m])\n        )\n      record: instance:node_network_receive_drop_excluding_lo:rate5m\n    - expr: |\n        sum without (device) (\n          rate(node_network_transmit_drop_total{job=\"node-exporter\", device!=\"lo\"}[5m])\n        )\n      record: instance:node_network_transmit_drop_excluding_lo:rate5m\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/nodeExporter-service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: node-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 1.6.0\n  name: node-exporter\n  namespace: monitoring\nspec:\n  clusterIP: None\n  ports:\n  - name: https\n    port: 9100\n    targetPort: https\n  selector:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: node-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/nodeExporter-serviceAccount.yaml",
    "content": "apiVersion: v1\nautomountServiceAccountToken: false\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: node-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 1.6.0\n  name: node-exporter\n  namespace: monitoring\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/nodeExporter-serviceMonitor.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  labels:\n    app.kubernetes.io/component: exporter\n    app.kubernetes.io/name: node-exporter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 1.6.0\n  name: node-exporter\n  namespace: monitoring\nspec:\n  endpoints:\n  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    interval: 15s\n    port: https\n    relabelings:\n    - action: replace\n      regex: (.*)\n      replacement: $1\n      sourceLabels:\n      - __meta_kubernetes_pod_node_name\n      targetLabel: instance\n    scheme: https\n    tlsConfig:\n      insecureSkipVerify: true\n  jobLabel: app.kubernetes.io/name\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: exporter\n      app.kubernetes.io/name: node-exporter\n      app.kubernetes.io/part-of: kube-prometheus\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/prometheus-clusterRole.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app.kubernetes.io/component: prometheus\n    app.kubernetes.io/instance: k8s\n    app.kubernetes.io/name: prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.45.0\n  name: prometheus-k8s\nrules:\n- apiGroups:\n  - \"\"\n  resources:\n  - nodes/metrics\n  verbs:\n  - get\n- nonResourceURLs:\n  - /metrics\n  verbs:\n  - get\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/prometheus-clusterRoleBinding.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: prometheus\n    app.kubernetes.io/instance: k8s\n    app.kubernetes.io/name: prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.45.0\n  name: prometheus-k8s\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: prometheus-k8s\nsubjects:\n- kind: ServiceAccount\n  name: prometheus-k8s\n  namespace: monitoring\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/prometheus-networkPolicy.yaml",
    "content": "apiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  labels:\n    app.kubernetes.io/component: prometheus\n    app.kubernetes.io/instance: k8s\n    app.kubernetes.io/name: prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.45.0\n  name: prometheus-k8s\n  namespace: monitoring\nspec:\n  egress:\n  - {}\n  ingress:\n  - from:\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: prometheus\n    ports:\n    - port: 9090\n      protocol: TCP\n    - port: 8080\n      protocol: TCP\n  - from:\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: prometheus-adapter\n    ports:\n    - port: 9090\n      protocol: TCP\n  - from:\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: grafana\n    ports:\n    - port: 9090\n      protocol: TCP\n  podSelector:\n    matchLabels:\n      app.kubernetes.io/component: prometheus\n      app.kubernetes.io/instance: k8s\n      app.kubernetes.io/name: prometheus\n      app.kubernetes.io/part-of: kube-prometheus\n  policyTypes:\n  - Egress\n  - Ingress\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/prometheus-podDisruptionBudget.yaml",
    "content": "apiVersion: policy/v1\nkind: PodDisruptionBudget\nmetadata:\n  labels:\n    app.kubernetes.io/component: prometheus\n    app.kubernetes.io/instance: k8s\n    app.kubernetes.io/name: prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.45.0\n  name: prometheus-k8s\n  namespace: monitoring\nspec:\n  minAvailable: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: prometheus\n      app.kubernetes.io/instance: k8s\n      app.kubernetes.io/name: prometheus\n      app.kubernetes.io/part-of: kube-prometheus\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/prometheus-prometheus.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: Prometheus\nmetadata:\n  labels:\n    app.kubernetes.io/component: prometheus\n    app.kubernetes.io/instance: k8s\n    app.kubernetes.io/name: prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.45.0\n  name: k8s\n  namespace: monitoring\nspec:\n  alerting:\n    alertmanagers:\n    - apiVersion: v2\n      name: alertmanager-main\n      namespace: monitoring\n      port: web\n  enableFeatures: []\n  externalLabels: {}\n  image: quay.io/prometheus/prometheus:v2.45.0\n  nodeSelector:\n    kubernetes.io/os: linux\n  podMetadata:\n    labels:\n      app.kubernetes.io/component: prometheus\n      app.kubernetes.io/instance: k8s\n      app.kubernetes.io/name: prometheus\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 2.45.0\n  podMonitorNamespaceSelector: {}\n  podMonitorSelector: {}\n  probeNamespaceSelector: {}\n  probeSelector: {}\n  replicas: 2\n  resources:\n    requests:\n      memory: 400Mi\n  ruleNamespaceSelector: {}\n  ruleSelector: {}\n  securityContext:\n    fsGroup: 2000\n    runAsNonRoot: true\n    runAsUser: 1000\n  serviceAccountName: prometheus-k8s\n  serviceMonitorNamespaceSelector: {}\n  serviceMonitorSelector: {}\n  version: 2.45.0\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/prometheus-prometheusRule.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  labels:\n    app.kubernetes.io/component: prometheus\n    app.kubernetes.io/instance: k8s\n    app.kubernetes.io/name: prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.45.0\n    prometheus: k8s\n    role: alert-rules\n  name: prometheus-k8s-prometheus-rules\n  namespace: monitoring\nspec:\n  groups:\n  - name: prometheus\n    rules:\n    - alert: PrometheusBadConfig\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has failed to reload its configuration.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusbadconfig\n        summary: Failed Prometheus configuration reload.\n      expr: |\n        # Without max_over_time, failed scrapes could create false negatives, see\n        # https://www.robustperception.io/alerting-on-gauges-in-prometheus-2-0 for details.\n        max_over_time(prometheus_config_last_reload_successful{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) == 0\n      for: 10m\n      labels:\n        severity: critical\n    - alert: PrometheusSDRefreshFailure\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has failed to refresh SD with mechanism {{$labels.mechanism}}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheussdrefreshfailure\n        summary: Failed Prometheus SD refresh.\n      expr: |\n        increase(prometheus_sd_refresh_failures_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[10m]) > 0\n      for: 20m\n      labels:\n        severity: warning\n    - alert: PrometheusNotificationQueueRunningFull\n      annotations:\n        description: Alert notification queue of Prometheus {{$labels.namespace}}/{{$labels.pod}} is running full.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusnotificationqueuerunningfull\n        summary: Prometheus alert notification queue predicted to run full in less than 30m.\n      expr: |\n        # Without min_over_time, failed scrapes could create false negatives, see\n        # https://www.robustperception.io/alerting-on-gauges-in-prometheus-2-0 for details.\n        (\n          predict_linear(prometheus_notifications_queue_length{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m], 60 * 30)\n        >\n          min_over_time(prometheus_notifications_queue_capacity{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m])\n        )\n      for: 15m\n      labels:\n        severity: warning\n    - alert: PrometheusErrorSendingAlertsToSomeAlertmanagers\n      annotations:\n        description: '{{ printf \"%.1f\" $value }}% errors while sending alerts from Prometheus {{$labels.namespace}}/{{$labels.pod}} to Alertmanager {{$labels.alertmanager}}.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheuserrorsendingalertstosomealertmanagers\n        summary: Prometheus has encountered more than 1% errors sending alerts to a specific Alertmanager.\n      expr: |\n        (\n          rate(prometheus_notifications_errors_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m])\n        /\n          rate(prometheus_notifications_sent_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m])\n        )\n        * 100\n        > 1\n      for: 15m\n      labels:\n        severity: warning\n    - alert: PrometheusNotConnectedToAlertmanagers\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} is not connected to any Alertmanagers.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusnotconnectedtoalertmanagers\n        summary: Prometheus is not connected to any Alertmanagers.\n      expr: |\n        # Without max_over_time, failed scrapes could create false negatives, see\n        # https://www.robustperception.io/alerting-on-gauges-in-prometheus-2-0 for details.\n        max_over_time(prometheus_notifications_alertmanagers_discovered{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) < 1\n      for: 10m\n      labels:\n        severity: warning\n    - alert: PrometheusTSDBReloadsFailing\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has detected {{$value | humanize}} reload failures over the last 3h.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheustsdbreloadsfailing\n        summary: Prometheus has issues reloading blocks from disk.\n      expr: |\n        increase(prometheus_tsdb_reloads_failures_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[3h]) > 0\n      for: 4h\n      labels:\n        severity: warning\n    - alert: PrometheusTSDBCompactionsFailing\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has detected {{$value | humanize}} compaction failures over the last 3h.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheustsdbcompactionsfailing\n        summary: Prometheus has issues compacting blocks.\n      expr: |\n        increase(prometheus_tsdb_compactions_failed_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[3h]) > 0\n      for: 4h\n      labels:\n        severity: warning\n    - alert: PrometheusNotIngestingSamples\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} is not ingesting samples.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusnotingestingsamples\n        summary: Prometheus is not ingesting samples.\n      expr: |\n        (\n          rate(prometheus_tsdb_head_samples_appended_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) <= 0\n        and\n          (\n            sum without(scrape_job) (prometheus_target_metadata_cache_entries{job=\"prometheus-k8s\",namespace=\"monitoring\"}) > 0\n          or\n            sum without(rule_group) (prometheus_rule_group_rules{job=\"prometheus-k8s\",namespace=\"monitoring\"}) > 0\n          )\n        )\n      for: 10m\n      labels:\n        severity: warning\n    - alert: PrometheusDuplicateTimestamps\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} is dropping {{ printf \"%.4g\" $value  }} samples/s with different values but duplicated timestamp.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusduplicatetimestamps\n        summary: Prometheus is dropping samples with duplicate timestamps.\n      expr: |\n        rate(prometheus_target_scrapes_sample_duplicate_timestamp_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) > 0\n      for: 10m\n      labels:\n        severity: warning\n    - alert: PrometheusOutOfOrderTimestamps\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} is dropping {{ printf \"%.4g\" $value  }} samples/s with timestamps arriving out of order.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusoutofordertimestamps\n        summary: Prometheus drops samples with out-of-order timestamps.\n      expr: |\n        rate(prometheus_target_scrapes_sample_out_of_order_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) > 0\n      for: 10m\n      labels:\n        severity: warning\n    - alert: PrometheusRemoteStorageFailures\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} failed to send {{ printf \"%.1f\" $value }}% of the samples to {{ $labels.remote_name}}:{{ $labels.url }}\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusremotestoragefailures\n        summary: Prometheus fails to send samples to remote storage.\n      expr: |\n        (\n          (rate(prometheus_remote_storage_failed_samples_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) or rate(prometheus_remote_storage_samples_failed_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]))\n        /\n          (\n            (rate(prometheus_remote_storage_failed_samples_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) or rate(prometheus_remote_storage_samples_failed_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]))\n          +\n            (rate(prometheus_remote_storage_succeeded_samples_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) or rate(prometheus_remote_storage_samples_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]))\n          )\n        )\n        * 100\n        > 1\n      for: 15m\n      labels:\n        severity: critical\n    - alert: PrometheusRemoteWriteBehind\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} remote write is {{ printf \"%.1f\" $value }}s behind for {{ $labels.remote_name}}:{{ $labels.url }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusremotewritebehind\n        summary: Prometheus remote write is behind.\n      expr: |\n        # Without max_over_time, failed scrapes could create false negatives, see\n        # https://www.robustperception.io/alerting-on-gauges-in-prometheus-2-0 for details.\n        (\n          max_over_time(prometheus_remote_storage_highest_timestamp_in_seconds{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m])\n        - ignoring(remote_name, url) group_right\n          max_over_time(prometheus_remote_storage_queue_highest_sent_timestamp_seconds{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m])\n        )\n        > 120\n      for: 15m\n      labels:\n        severity: critical\n    - alert: PrometheusRemoteWriteDesiredShards\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} remote write desired shards calculation wants to run {{ $value }} shards for queue {{ $labels.remote_name}}:{{ $labels.url }}, which is more than the max of {{ printf `prometheus_remote_storage_shards_max{instance=\"%s\",job=\"prometheus-k8s\",namespace=\"monitoring\"}` $labels.instance | query | first | value }}.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusremotewritedesiredshards\n        summary: Prometheus remote write desired shards calculation wants to run more than configured max shards.\n      expr: |\n        # Without max_over_time, failed scrapes could create false negatives, see\n        # https://www.robustperception.io/alerting-on-gauges-in-prometheus-2-0 for details.\n        (\n          max_over_time(prometheus_remote_storage_shards_desired{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m])\n        >\n          max_over_time(prometheus_remote_storage_shards_max{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m])\n        )\n      for: 15m\n      labels:\n        severity: warning\n    - alert: PrometheusRuleFailures\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has failed to evaluate {{ printf \"%.0f\" $value }} rules in the last 5m.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusrulefailures\n        summary: Prometheus is failing rule evaluations.\n      expr: |\n        increase(prometheus_rule_evaluation_failures_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) > 0\n      for: 15m\n      labels:\n        severity: critical\n    - alert: PrometheusMissingRuleEvaluations\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has missed {{ printf \"%.0f\" $value }} rule group evaluations in the last 5m.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusmissingruleevaluations\n        summary: Prometheus is missing rule evaluations due to slow rule group evaluation.\n      expr: |\n        increase(prometheus_rule_group_iterations_missed_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) > 0\n      for: 15m\n      labels:\n        severity: warning\n    - alert: PrometheusTargetLimitHit\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has dropped {{ printf \"%.0f\" $value }} targets because the number of targets exceeded the configured target_limit.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheustargetlimithit\n        summary: Prometheus has dropped targets because some scrape configs have exceeded the targets limit.\n      expr: |\n        increase(prometheus_target_scrape_pool_exceeded_target_limit_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) > 0\n      for: 15m\n      labels:\n        severity: warning\n    - alert: PrometheusLabelLimitHit\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has dropped {{ printf \"%.0f\" $value }} targets because some samples exceeded the configured label_limit, label_name_length_limit or label_value_length_limit.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheuslabellimithit\n        summary: Prometheus has dropped targets because some scrape configs have exceeded the labels limit.\n      expr: |\n        increase(prometheus_target_scrape_pool_exceeded_label_limits_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) > 0\n      for: 15m\n      labels:\n        severity: warning\n    - alert: PrometheusScrapeBodySizeLimitHit\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has failed {{ printf \"%.0f\" $value }} scrapes in the last 5m because some targets exceeded the configured body_size_limit.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusscrapebodysizelimithit\n        summary: Prometheus has dropped some targets that exceeded body size limit.\n      expr: |\n        increase(prometheus_target_scrapes_exceeded_body_size_limit_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) > 0\n      for: 15m\n      labels:\n        severity: warning\n    - alert: PrometheusScrapeSampleLimitHit\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} has failed {{ printf \"%.0f\" $value }} scrapes in the last 5m because some targets exceeded the configured sample_limit.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheusscrapesamplelimithit\n        summary: Prometheus has failed scrapes that have exceeded the configured sample limit.\n      expr: |\n        increase(prometheus_target_scrapes_exceeded_sample_limit_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) > 0\n      for: 15m\n      labels:\n        severity: warning\n    - alert: PrometheusTargetSyncFailure\n      annotations:\n        description: '{{ printf \"%.0f\" $value }} targets in Prometheus {{$labels.namespace}}/{{$labels.pod}} have failed to sync because invalid configuration was supplied.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheustargetsyncfailure\n        summary: Prometheus has failed to sync targets.\n      expr: |\n        increase(prometheus_target_sync_failed_total{job=\"prometheus-k8s\",namespace=\"monitoring\"}[30m]) > 0\n      for: 5m\n      labels:\n        severity: critical\n    - alert: PrometheusHighQueryLoad\n      annotations:\n        description: Prometheus {{$labels.namespace}}/{{$labels.pod}} query API has less than 20% available capacity in its query engine for the last 15 minutes.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheushighqueryload\n        summary: Prometheus is reaching its maximum capacity serving concurrent requests.\n      expr: |\n        avg_over_time(prometheus_engine_queries{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) / max_over_time(prometheus_engine_queries_concurrent_max{job=\"prometheus-k8s\",namespace=\"monitoring\"}[5m]) > 0.8\n      for: 15m\n      labels:\n        severity: warning\n    - alert: PrometheusErrorSendingAlertsToAnyAlertmanager\n      annotations:\n        description: '{{ printf \"%.1f\" $value }}% minimum errors while sending alerts from Prometheus {{$labels.namespace}}/{{$labels.pod}} to any Alertmanager.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus/prometheuserrorsendingalertstoanyalertmanager\n        summary: Prometheus encounters more than 3% errors sending alerts to any Alertmanager.\n      expr: |\n        min without (alertmanager) (\n          rate(prometheus_notifications_errors_total{job=\"prometheus-k8s\",namespace=\"monitoring\",alertmanager!~``}[5m])\n        /\n          rate(prometheus_notifications_sent_total{job=\"prometheus-k8s\",namespace=\"monitoring\",alertmanager!~``}[5m])\n        )\n        * 100\n        > 3\n      for: 15m\n      labels:\n        severity: critical\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/prometheus-roleBindingConfig.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: prometheus\n    app.kubernetes.io/instance: k8s\n    app.kubernetes.io/name: prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.45.0\n  name: prometheus-k8s-config\n  namespace: monitoring\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: prometheus-k8s-config\nsubjects:\n- kind: ServiceAccount\n  name: prometheus-k8s\n  namespace: monitoring\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/prometheus-roleBindingSpecificNamespaces.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nitems:\n- apiVersion: rbac.authorization.k8s.io/v1\n  kind: RoleBinding\n  metadata:\n    labels:\n      app.kubernetes.io/component: prometheus\n      app.kubernetes.io/instance: k8s\n      app.kubernetes.io/name: prometheus\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 2.45.0\n    name: prometheus-k8s\n    namespace: default\n  roleRef:\n    apiGroup: rbac.authorization.k8s.io\n    kind: Role\n    name: prometheus-k8s\n  subjects:\n  - kind: ServiceAccount\n    name: prometheus-k8s\n    namespace: monitoring\n- apiVersion: rbac.authorization.k8s.io/v1\n  kind: RoleBinding\n  metadata:\n    labels:\n      app.kubernetes.io/component: prometheus\n      app.kubernetes.io/instance: k8s\n      app.kubernetes.io/name: prometheus\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 2.45.0\n    name: prometheus-k8s\n    namespace: kube-system\n  roleRef:\n    apiGroup: rbac.authorization.k8s.io\n    kind: Role\n    name: prometheus-k8s\n  subjects:\n  - kind: ServiceAccount\n    name: prometheus-k8s\n    namespace: monitoring\n- apiVersion: rbac.authorization.k8s.io/v1\n  kind: RoleBinding\n  metadata:\n    labels:\n      app.kubernetes.io/component: prometheus\n      app.kubernetes.io/instance: k8s\n      app.kubernetes.io/name: prometheus\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 2.45.0\n    name: prometheus-k8s\n    namespace: monitoring\n  roleRef:\n    apiGroup: rbac.authorization.k8s.io\n    kind: Role\n    name: prometheus-k8s\n  subjects:\n  - kind: ServiceAccount\n    name: prometheus-k8s\n    namespace: monitoring\nkind: RoleBindingList\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/prometheus-roleConfig.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  labels:\n    app.kubernetes.io/component: prometheus\n    app.kubernetes.io/instance: k8s\n    app.kubernetes.io/name: prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.45.0\n  name: prometheus-k8s-config\n  namespace: monitoring\nrules:\n- apiGroups:\n  - \"\"\n  resources:\n  - configmaps\n  verbs:\n  - get\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/prometheus-roleSpecificNamespaces.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nitems:\n- apiVersion: rbac.authorization.k8s.io/v1\n  kind: Role\n  metadata:\n    labels:\n      app.kubernetes.io/component: prometheus\n      app.kubernetes.io/instance: k8s\n      app.kubernetes.io/name: prometheus\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 2.45.0\n    name: prometheus-k8s\n    namespace: default\n  rules:\n  - apiGroups:\n    - \"\"\n    resources:\n    - services\n    - endpoints\n    - pods\n    verbs:\n    - get\n    - list\n    - watch\n  - apiGroups:\n    - extensions\n    resources:\n    - ingresses\n    verbs:\n    - get\n    - list\n    - watch\n  - apiGroups:\n    - networking.k8s.io\n    resources:\n    - ingresses\n    verbs:\n    - get\n    - list\n    - watch\n- apiVersion: rbac.authorization.k8s.io/v1\n  kind: Role\n  metadata:\n    labels:\n      app.kubernetes.io/component: prometheus\n      app.kubernetes.io/instance: k8s\n      app.kubernetes.io/name: prometheus\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 2.45.0\n    name: prometheus-k8s\n    namespace: kube-system\n  rules:\n  - apiGroups:\n    - \"\"\n    resources:\n    - services\n    - endpoints\n    - pods\n    verbs:\n    - get\n    - list\n    - watch\n  - apiGroups:\n    - extensions\n    resources:\n    - ingresses\n    verbs:\n    - get\n    - list\n    - watch\n  - apiGroups:\n    - networking.k8s.io\n    resources:\n    - ingresses\n    verbs:\n    - get\n    - list\n    - watch\n- apiVersion: rbac.authorization.k8s.io/v1\n  kind: Role\n  metadata:\n    labels:\n      app.kubernetes.io/component: prometheus\n      app.kubernetes.io/instance: k8s\n      app.kubernetes.io/name: prometheus\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 2.45.0\n    name: prometheus-k8s\n    namespace: monitoring\n  rules:\n  - apiGroups:\n    - \"\"\n    resources:\n    - services\n    - endpoints\n    - pods\n    verbs:\n    - get\n    - list\n    - watch\n  - apiGroups:\n    - extensions\n    resources:\n    - ingresses\n    verbs:\n    - get\n    - list\n    - watch\n  - apiGroups:\n    - networking.k8s.io\n    resources:\n    - ingresses\n    verbs:\n    - get\n    - list\n    - watch\nkind: RoleList\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/prometheus-service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: prometheus\n    app.kubernetes.io/instance: k8s\n    app.kubernetes.io/name: prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.45.0\n  name: prometheus-k8s\n  namespace: monitoring\nspec:\n  ports:\n  - name: web\n    port: 9090\n    targetPort: web\n  - name: reloader-web\n    port: 8080\n    targetPort: reloader-web\n  selector:\n    app.kubernetes.io/component: prometheus\n    app.kubernetes.io/instance: k8s\n    app.kubernetes.io/name: prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n  sessionAffinity: ClientIP\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/prometheus-serviceAccount.yaml",
    "content": "apiVersion: v1\nautomountServiceAccountToken: true\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: prometheus\n    app.kubernetes.io/instance: k8s\n    app.kubernetes.io/name: prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.45.0\n  name: prometheus-k8s\n  namespace: monitoring\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/prometheus-serviceMonitor.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  labels:\n    app.kubernetes.io/component: prometheus\n    app.kubernetes.io/instance: k8s\n    app.kubernetes.io/name: prometheus\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 2.45.0\n  name: prometheus-k8s\n  namespace: monitoring\nspec:\n  endpoints:\n  - interval: 30s\n    port: web\n  - interval: 30s\n    port: reloader-web\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: prometheus\n      app.kubernetes.io/instance: k8s\n      app.kubernetes.io/name: prometheus\n      app.kubernetes.io/part-of: kube-prometheus\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/prometheusAdapter-apiService.yaml",
    "content": "apiVersion: apiregistration.k8s.io/v1\nkind: APIService\nmetadata:\n  labels:\n    app.kubernetes.io/component: metrics-adapter\n    app.kubernetes.io/name: prometheus-adapter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.10.0\n  name: v1beta1.metrics.k8s.io\nspec:\n  group: metrics.k8s.io\n  groupPriorityMinimum: 100\n  insecureSkipTLSVerify: true\n  service:\n    name: prometheus-adapter\n    namespace: monitoring\n  version: v1beta1\n  versionPriority: 100\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/prometheusAdapter-clusterRole.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app.kubernetes.io/component: metrics-adapter\n    app.kubernetes.io/name: prometheus-adapter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.10.0\n  name: prometheus-adapter\n  namespace: monitoring\nrules:\n- apiGroups:\n  - \"\"\n  resources:\n  - nodes\n  - namespaces\n  - pods\n  - services\n  verbs:\n  - get\n  - list\n  - watch\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/prometheusAdapter-clusterRoleAggregatedMetricsReader.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app.kubernetes.io/component: metrics-adapter\n    app.kubernetes.io/name: prometheus-adapter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.10.0\n    rbac.authorization.k8s.io/aggregate-to-admin: \"true\"\n    rbac.authorization.k8s.io/aggregate-to-edit: \"true\"\n    rbac.authorization.k8s.io/aggregate-to-view: \"true\"\n  name: system:aggregated-metrics-reader\n  namespace: monitoring\nrules:\n- apiGroups:\n  - metrics.k8s.io\n  resources:\n  - pods\n  - nodes\n  verbs:\n  - get\n  - list\n  - watch\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/prometheusAdapter-clusterRoleBinding.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: metrics-adapter\n    app.kubernetes.io/name: prometheus-adapter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.10.0\n  name: prometheus-adapter\n  namespace: monitoring\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: prometheus-adapter\nsubjects:\n- kind: ServiceAccount\n  name: prometheus-adapter\n  namespace: monitoring\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/prometheusAdapter-clusterRoleBindingDelegator.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: metrics-adapter\n    app.kubernetes.io/name: prometheus-adapter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.10.0\n  name: resource-metrics:system:auth-delegator\n  namespace: monitoring\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: system:auth-delegator\nsubjects:\n- kind: ServiceAccount\n  name: prometheus-adapter\n  namespace: monitoring\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/prometheusAdapter-clusterRoleServerResources.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app.kubernetes.io/component: metrics-adapter\n    app.kubernetes.io/name: prometheus-adapter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.10.0\n  name: resource-metrics-server-resources\n  namespace: monitoring\nrules:\n- apiGroups:\n  - metrics.k8s.io\n  resources:\n  - '*'\n  verbs:\n  - '*'\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/prometheusAdapter-configMap.yaml",
    "content": "apiVersion: v1\ndata:\n  config.yaml: |-\n    \"resourceRules\":\n      \"cpu\":\n        \"containerLabel\": \"container\"\n        \"containerQuery\": |\n          sum by (<<.GroupBy>>) (\n            irate (\n                container_cpu_usage_seconds_total{<<.LabelMatchers>>,container!=\"\",pod!=\"\"}[120s]\n            )\n          )\n        \"nodeQuery\": |\n          sum by (<<.GroupBy>>) (\n            1 - irate(\n              node_cpu_seconds_total{mode=\"idle\"}[60s]\n            )\n            * on(namespace, pod) group_left(node) (\n              node_namespace_pod:kube_pod_info:{<<.LabelMatchers>>}\n            )\n          )\n          or sum by (<<.GroupBy>>) (\n            1 - irate(\n              windows_cpu_time_total{mode=\"idle\", job=\"windows-exporter\",<<.LabelMatchers>>}[4m]\n            )\n          )\n        \"resources\":\n          \"overrides\":\n            \"namespace\":\n              \"resource\": \"namespace\"\n            \"node\":\n              \"resource\": \"node\"\n            \"pod\":\n              \"resource\": \"pod\"\n      \"memory\":\n        \"containerLabel\": \"container\"\n        \"containerQuery\": |\n          sum by (<<.GroupBy>>) (\n            container_memory_working_set_bytes{<<.LabelMatchers>>,container!=\"\",pod!=\"\"}\n          )\n        \"nodeQuery\": |\n          sum by (<<.GroupBy>>) (\n            node_memory_MemTotal_bytes{job=\"node-exporter\",<<.LabelMatchers>>}\n            -\n            node_memory_MemAvailable_bytes{job=\"node-exporter\",<<.LabelMatchers>>}\n          )\n          or sum by (<<.GroupBy>>) (\n            windows_cs_physical_memory_bytes{job=\"windows-exporter\",<<.LabelMatchers>>}\n            -\n            windows_memory_available_bytes{job=\"windows-exporter\",<<.LabelMatchers>>}\n          )\n        \"resources\":\n          \"overrides\":\n            \"instance\":\n              \"resource\": \"node\"\n            \"namespace\":\n              \"resource\": \"namespace\"\n            \"pod\":\n              \"resource\": \"pod\"\n      \"window\": \"5m\"\nkind: ConfigMap\nmetadata:\n  labels:\n    app.kubernetes.io/component: metrics-adapter\n    app.kubernetes.io/name: prometheus-adapter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.10.0\n  name: adapter-config\n  namespace: monitoring\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/prometheusAdapter-deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app.kubernetes.io/component: metrics-adapter\n    app.kubernetes.io/name: prometheus-adapter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.10.0\n  name: prometheus-adapter\n  namespace: monitoring\nspec:\n  replicas: 2\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: metrics-adapter\n      app.kubernetes.io/name: prometheus-adapter\n      app.kubernetes.io/part-of: kube-prometheus\n  strategy:\n    rollingUpdate:\n      maxSurge: 1\n      maxUnavailable: 1\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/component: metrics-adapter\n        app.kubernetes.io/name: prometheus-adapter\n        app.kubernetes.io/part-of: kube-prometheus\n        app.kubernetes.io/version: 0.10.0\n    spec:\n      automountServiceAccountToken: true\n      containers:\n      - args:\n        - --cert-dir=/var/run/serving-cert\n        - --config=/etc/adapter/config.yaml\n        - --logtostderr=true\n        - --metrics-relist-interval=1m\n        - --prometheus-url=http://prometheus-k8s.monitoring.svc:9090/\n        - --secure-port=6443\n        - --tls-cipher-suites=TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA\n        image: registry.k8s.io/prometheus-adapter/prometheus-adapter:v0.10.0\n        livenessProbe:\n          failureThreshold: 5\n          httpGet:\n            path: /livez\n            port: https\n            scheme: HTTPS\n          periodSeconds: 5\n        name: prometheus-adapter\n        ports:\n        - containerPort: 6443\n          name: https\n        readinessProbe:\n          failureThreshold: 5\n          httpGet:\n            path: /readyz\n            port: https\n            scheme: HTTPS\n          periodSeconds: 5\n        resources:\n          limits:\n            cpu: 250m\n            memory: 180Mi\n          requests:\n            cpu: 102m\n            memory: 180Mi\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n        startupProbe:\n          failureThreshold: 18\n          httpGet:\n            path: /livez\n            port: https\n            scheme: HTTPS\n          periodSeconds: 10\n        volumeMounts:\n        - mountPath: /tmp\n          name: tmpfs\n          readOnly: false\n        - mountPath: /var/run/serving-cert\n          name: volume-serving-cert\n          readOnly: false\n        - mountPath: /etc/adapter\n          name: config\n          readOnly: false\n      nodeSelector:\n        kubernetes.io/os: linux\n      serviceAccountName: prometheus-adapter\n      volumes:\n      - emptyDir: {}\n        name: tmpfs\n      - emptyDir: {}\n        name: volume-serving-cert\n      - configMap:\n          name: adapter-config\n        name: config\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/prometheusAdapter-networkPolicy.yaml",
    "content": "apiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  labels:\n    app.kubernetes.io/component: metrics-adapter\n    app.kubernetes.io/name: prometheus-adapter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.10.0\n  name: prometheus-adapter\n  namespace: monitoring\nspec:\n  egress:\n  - {}\n  ingress:\n  - {}\n  podSelector:\n    matchLabels:\n      app.kubernetes.io/component: metrics-adapter\n      app.kubernetes.io/name: prometheus-adapter\n      app.kubernetes.io/part-of: kube-prometheus\n  policyTypes:\n  - Egress\n  - Ingress\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/prometheusAdapter-podDisruptionBudget.yaml",
    "content": "apiVersion: policy/v1\nkind: PodDisruptionBudget\nmetadata:\n  labels:\n    app.kubernetes.io/component: metrics-adapter\n    app.kubernetes.io/name: prometheus-adapter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.10.0\n  name: prometheus-adapter\n  namespace: monitoring\nspec:\n  minAvailable: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: metrics-adapter\n      app.kubernetes.io/name: prometheus-adapter\n      app.kubernetes.io/part-of: kube-prometheus\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/prometheusAdapter-roleBindingAuthReader.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: metrics-adapter\n    app.kubernetes.io/name: prometheus-adapter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.10.0\n  name: resource-metrics-auth-reader\n  namespace: kube-system\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: extension-apiserver-authentication-reader\nsubjects:\n- kind: ServiceAccount\n  name: prometheus-adapter\n  namespace: monitoring\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/prometheusAdapter-service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: metrics-adapter\n    app.kubernetes.io/name: prometheus-adapter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.10.0\n  name: prometheus-adapter\n  namespace: monitoring\nspec:\n  ports:\n  - name: https\n    port: 443\n    targetPort: 6443\n  selector:\n    app.kubernetes.io/component: metrics-adapter\n    app.kubernetes.io/name: prometheus-adapter\n    app.kubernetes.io/part-of: kube-prometheus\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/prometheusAdapter-serviceAccount.yaml",
    "content": "apiVersion: v1\nautomountServiceAccountToken: false\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: metrics-adapter\n    app.kubernetes.io/name: prometheus-adapter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.10.0\n  name: prometheus-adapter\n  namespace: monitoring\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/prometheusAdapter-serviceMonitor.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  labels:\n    app.kubernetes.io/component: metrics-adapter\n    app.kubernetes.io/name: prometheus-adapter\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.10.0\n  name: prometheus-adapter\n  namespace: monitoring\nspec:\n  endpoints:\n  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    interval: 30s\n    metricRelabelings:\n    - action: drop\n      regex: (apiserver_client_certificate_.*|apiserver_envelope_.*|apiserver_flowcontrol_.*|apiserver_storage_.*|apiserver_webhooks_.*|workqueue_.*)\n      sourceLabels:\n      - __name__\n    port: https\n    scheme: https\n    tlsConfig:\n      insecureSkipVerify: true\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: metrics-adapter\n      app.kubernetes.io/name: prometheus-adapter\n      app.kubernetes.io/part-of: kube-prometheus\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/prometheusOperator-clusterRole.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/name: prometheus-operator\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.66.0\n  name: prometheus-operator\nrules:\n- apiGroups:\n  - monitoring.coreos.com\n  resources:\n  - alertmanagers\n  - alertmanagers/finalizers\n  - alertmanagers/status\n  - alertmanagerconfigs\n  - prometheuses\n  - prometheuses/finalizers\n  - prometheuses/status\n  - prometheusagents\n  - prometheusagents/finalizers\n  - prometheusagents/status\n  - thanosrulers\n  - thanosrulers/finalizers\n  - thanosrulers/status\n  - scrapeconfigs\n  - servicemonitors\n  - podmonitors\n  - probes\n  - prometheusrules\n  verbs:\n  - '*'\n- apiGroups:\n  - apps\n  resources:\n  - statefulsets\n  verbs:\n  - '*'\n- apiGroups:\n  - \"\"\n  resources:\n  - configmaps\n  - secrets\n  verbs:\n  - '*'\n- apiGroups:\n  - \"\"\n  resources:\n  - pods\n  verbs:\n  - list\n  - delete\n- apiGroups:\n  - \"\"\n  resources:\n  - services\n  - services/finalizers\n  - endpoints\n  verbs:\n  - get\n  - create\n  - update\n  - delete\n- apiGroups:\n  - \"\"\n  resources:\n  - nodes\n  verbs:\n  - list\n  - watch\n- apiGroups:\n  - \"\"\n  resources:\n  - namespaces\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - networking.k8s.io\n  resources:\n  - ingresses\n  verbs:\n  - get\n  - list\n  - watch\n- apiGroups:\n  - authentication.k8s.io\n  resources:\n  - tokenreviews\n  verbs:\n  - create\n- apiGroups:\n  - authorization.k8s.io\n  resources:\n  - subjectaccessreviews\n  verbs:\n  - create\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/prometheusOperator-clusterRoleBinding.yaml",
    "content": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/name: prometheus-operator\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.66.0\n  name: prometheus-operator\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: prometheus-operator\nsubjects:\n- kind: ServiceAccount\n  name: prometheus-operator\n  namespace: monitoring\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/prometheusOperator-deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/name: prometheus-operator\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.66.0\n  name: prometheus-operator\n  namespace: monitoring\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: controller\n      app.kubernetes.io/name: prometheus-operator\n      app.kubernetes.io/part-of: kube-prometheus\n  template:\n    metadata:\n      annotations:\n        kubectl.kubernetes.io/default-container: prometheus-operator\n      labels:\n        app.kubernetes.io/component: controller\n        app.kubernetes.io/name: prometheus-operator\n        app.kubernetes.io/part-of: kube-prometheus\n        app.kubernetes.io/version: 0.66.0\n    spec:\n      automountServiceAccountToken: true\n      containers:\n      - args:\n        - --kubelet-service=kube-system/kubelet\n        - --prometheus-config-reloader=quay.io/prometheus-operator/prometheus-config-reloader:v0.66.0\n        image: quay.io/prometheus-operator/prometheus-operator:v0.66.0\n        name: prometheus-operator\n        ports:\n        - containerPort: 8080\n          name: http\n        resources:\n          limits:\n            cpu: 200m\n            memory: 200Mi\n          requests:\n            cpu: 100m\n            memory: 100Mi\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n      - args:\n        - --logtostderr\n        - --secure-listen-address=:8443\n        - --tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305\n        - --upstream=http://127.0.0.1:8080/\n        image: quay.io/brancz/kube-rbac-proxy:v0.14.2\n        name: kube-rbac-proxy\n        ports:\n        - containerPort: 8443\n          name: https\n        resources:\n          limits:\n            cpu: 20m\n            memory: 40Mi\n          requests:\n            cpu: 10m\n            memory: 20Mi\n        securityContext:\n          allowPrivilegeEscalation: false\n          capabilities:\n            drop:\n            - ALL\n          readOnlyRootFilesystem: true\n          runAsGroup: 65532\n          runAsNonRoot: true\n          runAsUser: 65532\n      nodeSelector:\n        kubernetes.io/os: linux\n      securityContext:\n        runAsNonRoot: true\n        runAsUser: 65534\n        seccompProfile:\n          type: RuntimeDefault\n      serviceAccountName: prometheus-operator\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/prometheusOperator-networkPolicy.yaml",
    "content": "apiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/name: prometheus-operator\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.66.0\n  name: prometheus-operator\n  namespace: monitoring\nspec:\n  egress:\n  - {}\n  ingress:\n  - from:\n    - podSelector:\n        matchLabels:\n          app.kubernetes.io/name: prometheus\n    ports:\n    - port: 8443\n      protocol: TCP\n  podSelector:\n    matchLabels:\n      app.kubernetes.io/component: controller\n      app.kubernetes.io/name: prometheus-operator\n      app.kubernetes.io/part-of: kube-prometheus\n  policyTypes:\n  - Egress\n  - Ingress\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/prometheusOperator-prometheusRule.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: PrometheusRule\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/name: prometheus-operator\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.66.0\n    prometheus: k8s\n    role: alert-rules\n  name: prometheus-operator-rules\n  namespace: monitoring\nspec:\n  groups:\n  - name: prometheus-operator\n    rules:\n    - alert: PrometheusOperatorListErrors\n      annotations:\n        description: Errors while performing List operations in controller {{$labels.controller}} in {{$labels.namespace}} namespace.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus-operator/prometheusoperatorlisterrors\n        summary: Errors while performing list operations in controller.\n      expr: |\n        (sum by (cluster,controller,namespace) (rate(prometheus_operator_list_operations_failed_total{job=\"prometheus-operator\",namespace=\"monitoring\"}[10m])) / sum by (cluster,controller,namespace) (rate(prometheus_operator_list_operations_total{job=\"prometheus-operator\",namespace=\"monitoring\"}[10m]))) > 0.4\n      for: 15m\n      labels:\n        severity: warning\n    - alert: PrometheusOperatorWatchErrors\n      annotations:\n        description: Errors while performing watch operations in controller {{$labels.controller}} in {{$labels.namespace}} namespace.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus-operator/prometheusoperatorwatcherrors\n        summary: Errors while performing watch operations in controller.\n      expr: |\n        (sum by (cluster,controller,namespace) (rate(prometheus_operator_watch_operations_failed_total{job=\"prometheus-operator\",namespace=\"monitoring\"}[5m])) / sum by (cluster,controller,namespace) (rate(prometheus_operator_watch_operations_total{job=\"prometheus-operator\",namespace=\"monitoring\"}[5m]))) > 0.4\n      for: 15m\n      labels:\n        severity: warning\n    - alert: PrometheusOperatorSyncFailed\n      annotations:\n        description: Controller {{ $labels.controller }} in {{ $labels.namespace }} namespace fails to reconcile {{ $value }} objects.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus-operator/prometheusoperatorsyncfailed\n        summary: Last controller reconciliation failed\n      expr: |\n        min_over_time(prometheus_operator_syncs{status=\"failed\",job=\"prometheus-operator\",namespace=\"monitoring\"}[5m]) > 0\n      for: 10m\n      labels:\n        severity: warning\n    - alert: PrometheusOperatorReconcileErrors\n      annotations:\n        description: '{{ $value | humanizePercentage }} of reconciling operations failed for {{ $labels.controller }} controller in {{ $labels.namespace }} namespace.'\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus-operator/prometheusoperatorreconcileerrors\n        summary: Errors while reconciling controller.\n      expr: |\n        (sum by (cluster,controller,namespace) (rate(prometheus_operator_reconcile_errors_total{job=\"prometheus-operator\",namespace=\"monitoring\"}[5m]))) / (sum by (cluster,controller,namespace) (rate(prometheus_operator_reconcile_operations_total{job=\"prometheus-operator\",namespace=\"monitoring\"}[5m]))) > 0.1\n      for: 10m\n      labels:\n        severity: warning\n    - alert: PrometheusOperatorNodeLookupErrors\n      annotations:\n        description: Errors while reconciling Prometheus in {{ $labels.namespace }} Namespace.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus-operator/prometheusoperatornodelookuperrors\n        summary: Errors while reconciling Prometheus.\n      expr: |\n        rate(prometheus_operator_node_address_lookup_errors_total{job=\"prometheus-operator\",namespace=\"monitoring\"}[5m]) > 0.1\n      for: 10m\n      labels:\n        severity: warning\n    - alert: PrometheusOperatorNotReady\n      annotations:\n        description: Prometheus operator in {{ $labels.namespace }} namespace isn't ready to reconcile {{ $labels.controller }} resources.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus-operator/prometheusoperatornotready\n        summary: Prometheus operator not ready\n      expr: |\n        min by (cluster,controller,namespace) (max_over_time(prometheus_operator_ready{job=\"prometheus-operator\",namespace=\"monitoring\"}[5m]) == 0)\n      for: 5m\n      labels:\n        severity: warning\n    - alert: PrometheusOperatorRejectedResources\n      annotations:\n        description: Prometheus operator in {{ $labels.namespace }} namespace rejected {{ printf \"%0.0f\" $value }} {{ $labels.controller }}/{{ $labels.resource }} resources.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus-operator/prometheusoperatorrejectedresources\n        summary: Resources rejected by Prometheus operator\n      expr: |\n        min_over_time(prometheus_operator_managed_resources{state=\"rejected\",job=\"prometheus-operator\",namespace=\"monitoring\"}[5m]) > 0\n      for: 5m\n      labels:\n        severity: warning\n  - name: config-reloaders\n    rules:\n    - alert: ConfigReloaderSidecarErrors\n      annotations:\n        description: |-\n          Errors encountered while the {{$labels.pod}} config-reloader sidecar attempts to sync config in {{$labels.namespace}} namespace.\n          As a result, configuration for service running in {{$labels.pod}} may be stale and cannot be updated anymore.\n        runbook_url: https://runbooks.prometheus-operator.dev/runbooks/prometheus-operator/configreloadersidecarerrors\n        summary: config-reloader sidecar has not had a successful reload for 10m\n      expr: |\n        max_over_time(reloader_last_reload_successful{namespace=~\".+\"}[5m]) == 0\n      for: 10m\n      labels:\n        severity: warning\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/prometheusOperator-service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/name: prometheus-operator\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.66.0\n  name: prometheus-operator\n  namespace: monitoring\nspec:\n  clusterIP: None\n  ports:\n  - name: https\n    port: 8443\n    targetPort: https\n  selector:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/name: prometheus-operator\n    app.kubernetes.io/part-of: kube-prometheus\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/prometheusOperator-serviceAccount.yaml",
    "content": "apiVersion: v1\nautomountServiceAccountToken: false\nkind: ServiceAccount\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/name: prometheus-operator\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.66.0\n  name: prometheus-operator\n  namespace: monitoring\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/prometheusOperator-serviceMonitor.yaml",
    "content": "apiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n  labels:\n    app.kubernetes.io/component: controller\n    app.kubernetes.io/name: prometheus-operator\n    app.kubernetes.io/part-of: kube-prometheus\n    app.kubernetes.io/version: 0.66.0\n  name: prometheus-operator\n  namespace: monitoring\nspec:\n  endpoints:\n  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token\n    honorLabels: true\n    port: https\n    scheme: https\n    tlsConfig:\n      insecureSkipVerify: true\n  selector:\n    matchLabels:\n      app.kubernetes.io/component: controller\n      app.kubernetes.io/name: prometheus-operator\n      app.kubernetes.io/part-of: kube-prometheus\n      app.kubernetes.io/version: 0.66.0\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/setup/0alertmanagerConfigCustomResourceDefinition.yaml",
    "content": "apiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.11.1\n  creationTimestamp: null\n  name: alertmanagerconfigs.monitoring.coreos.com\nspec:\n  group: monitoring.coreos.com\n  names:\n    categories:\n    - prometheus-operator\n    kind: AlertmanagerConfig\n    listKind: AlertmanagerConfigList\n    plural: alertmanagerconfigs\n    shortNames:\n    - amcfg\n    singular: alertmanagerconfig\n  scope: Namespaced\n  versions:\n  - name: v1alpha1\n    schema:\n      openAPIV3Schema:\n        description: AlertmanagerConfig defines a namespaced AlertmanagerConfig to be aggregated across multiple namespaces configuring one Alertmanager cluster.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: AlertmanagerConfigSpec is a specification of the desired behavior of the Alertmanager configuration. By definition, the Alertmanager configuration only applies to alerts for which the `namespace` label is equal to the namespace of the AlertmanagerConfig resource.\n            properties:\n              inhibitRules:\n                description: List of inhibition rules. The rules will only apply to alerts matching the resource's namespace.\n                items:\n                  description: InhibitRule defines an inhibition rule that allows to mute alerts when other alerts are already firing. See https://prometheus.io/docs/alerting/latest/configuration/#inhibit_rule\n                  properties:\n                    equal:\n                      description: Labels that must have an equal value in the source and target alert for the inhibition to take effect.\n                      items:\n                        type: string\n                      type: array\n                    sourceMatch:\n                      description: Matchers for which one or more alerts have to exist for the inhibition to take effect. The operator enforces that the alert matches the resource's namespace.\n                      items:\n                        description: Matcher defines how to match on alert's labels.\n                        properties:\n                          matchType:\n                            description: Match operation available with AlertManager >= v0.22.0 and takes precedence over Regex (deprecated) if non-empty.\n                            enum:\n                            - '!='\n                            - =\n                            - =~\n                            - '!~'\n                            type: string\n                          name:\n                            description: Label to match.\n                            minLength: 1\n                            type: string\n                          regex:\n                            description: Whether to match on equality (false) or regular-expression (true). Deprecated as of AlertManager >= v0.22.0 where a user should use MatchType instead.\n                            type: boolean\n                          value:\n                            description: Label value to match.\n                            type: string\n                        required:\n                        - name\n                        type: object\n                      type: array\n                    targetMatch:\n                      description: Matchers that have to be fulfilled in the alerts to be muted. The operator enforces that the alert matches the resource's namespace.\n                      items:\n                        description: Matcher defines how to match on alert's labels.\n                        properties:\n                          matchType:\n                            description: Match operation available with AlertManager >= v0.22.0 and takes precedence over Regex (deprecated) if non-empty.\n                            enum:\n                            - '!='\n                            - =\n                            - =~\n                            - '!~'\n                            type: string\n                          name:\n                            description: Label to match.\n                            minLength: 1\n                            type: string\n                          regex:\n                            description: Whether to match on equality (false) or regular-expression (true). Deprecated as of AlertManager >= v0.22.0 where a user should use MatchType instead.\n                            type: boolean\n                          value:\n                            description: Label value to match.\n                            type: string\n                        required:\n                        - name\n                        type: object\n                      type: array\n                  type: object\n                type: array\n              muteTimeIntervals:\n                description: List of MuteTimeInterval specifying when the routes should be muted.\n                items:\n                  description: MuteTimeInterval specifies the periods in time when notifications will be muted\n                  properties:\n                    name:\n                      description: Name of the time interval\n                      type: string\n                    timeIntervals:\n                      description: TimeIntervals is a list of TimeInterval\n                      items:\n                        description: TimeInterval describes intervals of time\n                        properties:\n                          daysOfMonth:\n                            description: DaysOfMonth is a list of DayOfMonthRange\n                            items:\n                              description: DayOfMonthRange is an inclusive range of days of the month beginning at 1\n                              properties:\n                                end:\n                                  description: End of the inclusive range\n                                  maximum: 31\n                                  minimum: -31\n                                  type: integer\n                                start:\n                                  description: Start of the inclusive range\n                                  maximum: 31\n                                  minimum: -31\n                                  type: integer\n                              type: object\n                            type: array\n                          months:\n                            description: Months is a list of MonthRange\n                            items:\n                              description: MonthRange is an inclusive range of months of the year beginning in January Months can be specified by name (e.g 'January') by numerical month (e.g '1') or as an inclusive range (e.g 'January:March', '1:3', '1:March')\n                              pattern: ^((?i)january|february|march|april|may|june|july|august|september|october|november|december|[1-12])(?:((:((?i)january|february|march|april|may|june|july|august|september|october|november|december|[1-12]))$)|$)\n                              type: string\n                            type: array\n                          times:\n                            description: Times is a list of TimeRange\n                            items:\n                              description: TimeRange defines a start and end time in 24hr format\n                              properties:\n                                endTime:\n                                  description: EndTime is the end time in 24hr format.\n                                  pattern: ^((([01][0-9])|(2[0-3])):[0-5][0-9])$|(^24:00$)\n                                  type: string\n                                startTime:\n                                  description: StartTime is the start time in 24hr format.\n                                  pattern: ^((([01][0-9])|(2[0-3])):[0-5][0-9])$|(^24:00$)\n                                  type: string\n                              type: object\n                            type: array\n                          weekdays:\n                            description: Weekdays is a list of WeekdayRange\n                            items:\n                              description: WeekdayRange is an inclusive range of days of the week beginning on Sunday Days can be specified by name (e.g 'Sunday') or as an inclusive range (e.g 'Monday:Friday')\n                              pattern: ^((?i)sun|mon|tues|wednes|thurs|fri|satur)day(?:((:(sun|mon|tues|wednes|thurs|fri|satur)day)$)|$)\n                              type: string\n                            type: array\n                          years:\n                            description: Years is a list of YearRange\n                            items:\n                              description: YearRange is an inclusive range of years\n                              pattern: ^2\\d{3}(?::2\\d{3}|$)\n                              type: string\n                            type: array\n                        type: object\n                      type: array\n                  type: object\n                type: array\n              receivers:\n                description: List of receivers.\n                items:\n                  description: Receiver defines one or more notification integrations.\n                  properties:\n                    emailConfigs:\n                      description: List of Email configurations.\n                      items:\n                        description: EmailConfig configures notifications via Email.\n                        properties:\n                          authIdentity:\n                            description: The identity to use for authentication.\n                            type: string\n                          authPassword:\n                            description: The secret's key that contains the password to use for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                          authSecret:\n                            description: The secret's key that contains the CRAM-MD5 secret. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                          authUsername:\n                            description: The username to use for authentication.\n                            type: string\n                          from:\n                            description: The sender address.\n                            type: string\n                          headers:\n                            description: Further headers email header key/value pairs. Overrides any headers previously set by the notification implementation.\n                            items:\n                              description: KeyValue defines a (key, value) tuple.\n                              properties:\n                                key:\n                                  description: Key of the tuple.\n                                  minLength: 1\n                                  type: string\n                                value:\n                                  description: Value of the tuple.\n                                  type: string\n                              required:\n                              - key\n                              - value\n                              type: object\n                            type: array\n                          hello:\n                            description: The hostname to identify to the SMTP server.\n                            type: string\n                          html:\n                            description: The HTML body of the email notification.\n                            type: string\n                          requireTLS:\n                            description: The SMTP TLS requirement. Note that Go does not support unencrypted connections to remote SMTP endpoints.\n                            type: boolean\n                          sendResolved:\n                            description: Whether or not to notify about resolved alerts.\n                            type: boolean\n                          smarthost:\n                            description: The SMTP host and port through which emails are sent. E.g. example.com:25\n                            type: string\n                          text:\n                            description: The text body of the email notification.\n                            type: string\n                          tlsConfig:\n                            description: TLS configuration\n                            properties:\n                              ca:\n                                description: Certificate authority used when verifying server certificates.\n                                properties:\n                                  configMap:\n                                    description: ConfigMap containing data to use for the targets.\n                                    properties:\n                                      key:\n                                        description: The key to select.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the ConfigMap or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  secret:\n                                    description: Secret containing data to use for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              cert:\n                                description: Client certificate to present when doing client-authentication.\n                                properties:\n                                  configMap:\n                                    description: ConfigMap containing data to use for the targets.\n                                    properties:\n                                      key:\n                                        description: The key to select.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the ConfigMap or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  secret:\n                                    description: Secret containing data to use for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              insecureSkipVerify:\n                                description: Disable target certificate validation.\n                                type: boolean\n                              keySecret:\n                                description: Secret containing the client key file for the targets.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              serverName:\n                                description: Used to verify the hostname for the targets.\n                                type: string\n                            type: object\n                          to:\n                            description: The email address to send notifications to.\n                            type: string\n                        type: object\n                      type: array\n                    name:\n                      description: Name of the receiver. Must be unique across all items from the list.\n                      minLength: 1\n                      type: string\n                    opsgenieConfigs:\n                      description: List of OpsGenie configurations.\n                      items:\n                        description: OpsGenieConfig configures notifications via OpsGenie. See https://prometheus.io/docs/alerting/latest/configuration/#opsgenie_config\n                        properties:\n                          actions:\n                            description: Comma separated list of actions that will be available for the alert.\n                            type: string\n                          apiKey:\n                            description: The secret's key that contains the OpsGenie API key. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                          apiURL:\n                            description: The URL to send OpsGenie API requests to.\n                            type: string\n                          description:\n                            description: Description of the incident.\n                            type: string\n                          details:\n                            description: A set of arbitrary key/value pairs that provide further detail about the incident.\n                            items:\n                              description: KeyValue defines a (key, value) tuple.\n                              properties:\n                                key:\n                                  description: Key of the tuple.\n                                  minLength: 1\n                                  type: string\n                                value:\n                                  description: Value of the tuple.\n                                  type: string\n                              required:\n                              - key\n                              - value\n                              type: object\n                            type: array\n                          entity:\n                            description: Optional field that can be used to specify which domain alert is related to.\n                            type: string\n                          httpConfig:\n                            description: HTTP client configuration.\n                            properties:\n                              authorization:\n                                description: Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\n                                properties:\n                                  credentials:\n                                    description: Selects a key of a Secret in the namespace that contains the credentials for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type:\n                                    description: \"Defines the authentication type. The value is case-insensitive. \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\"\n                                    type: string\n                                type: object\n                              basicAuth:\n                                description: BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.\n                                properties:\n                                  password:\n                                    description: The secret in the service monitor namespace that contains the password for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  username:\n                                    description: The secret in the service monitor namespace that contains the username for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              bearerTokenSecret:\n                                description: The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                              followRedirects:\n                                description: FollowRedirects specifies whether the client should follow HTTP 3xx redirects.\n                                type: boolean\n                              oauth2:\n                                description: OAuth2 client credentials used to fetch a token for the targets.\n                                properties:\n                                  clientId:\n                                    description: The secret or configmap containing the OAuth2 client id\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  clientSecret:\n                                    description: The secret containing the OAuth2 client secret\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  endpointParams:\n                                    additionalProperties:\n                                      type: string\n                                    description: Parameters to append to the token URL\n                                    type: object\n                                  scopes:\n                                    description: OAuth2 scopes used for the token request\n                                    items:\n                                      type: string\n                                    type: array\n                                  tokenUrl:\n                                    description: The URL to fetch the token from\n                                    minLength: 1\n                                    type: string\n                                required:\n                                - clientId\n                                - clientSecret\n                                - tokenUrl\n                                type: object\n                              proxyURL:\n                                description: Optional proxy URL.\n                                type: string\n                              tlsConfig:\n                                description: TLS configuration for the client.\n                                properties:\n                                  ca:\n                                    description: Certificate authority used when verifying server certificates.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  cert:\n                                    description: Client certificate to present when doing client-authentication.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  insecureSkipVerify:\n                                    description: Disable target certificate validation.\n                                    type: boolean\n                                  keySecret:\n                                    description: Secret containing the client key file for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  serverName:\n                                    description: Used to verify the hostname for the targets.\n                                    type: string\n                                type: object\n                            type: object\n                          message:\n                            description: Alert text limited to 130 characters.\n                            type: string\n                          note:\n                            description: Additional alert note.\n                            type: string\n                          priority:\n                            description: Priority level of alert. Possible values are P1, P2, P3, P4, and P5.\n                            type: string\n                          responders:\n                            description: List of responders responsible for notifications.\n                            items:\n                              description: OpsGenieConfigResponder defines a responder to an incident. One of `id`, `name` or `username` has to be defined.\n                              properties:\n                                id:\n                                  description: ID of the responder.\n                                  type: string\n                                name:\n                                  description: Name of the responder.\n                                  type: string\n                                type:\n                                  description: Type of responder.\n                                  enum:\n                                  - team\n                                  - teams\n                                  - user\n                                  - escalation\n                                  - schedule\n                                  minLength: 1\n                                  type: string\n                                username:\n                                  description: Username of the responder.\n                                  type: string\n                              required:\n                              - type\n                              type: object\n                            type: array\n                          sendResolved:\n                            description: Whether or not to notify about resolved alerts.\n                            type: boolean\n                          source:\n                            description: Backlink to the sender of the notification.\n                            type: string\n                          tags:\n                            description: Comma separated list of tags attached to the notifications.\n                            type: string\n                          updateAlerts:\n                            description: Whether to update message and description of the alert in OpsGenie if it already exists By default, the alert is never updated in OpsGenie, the new message only appears in activity log.\n                            type: boolean\n                        type: object\n                      type: array\n                    pagerdutyConfigs:\n                      description: List of PagerDuty configurations.\n                      items:\n                        description: PagerDutyConfig configures notifications via PagerDuty. See https://prometheus.io/docs/alerting/latest/configuration/#pagerduty_config\n                        properties:\n                          class:\n                            description: The class/type of the event.\n                            type: string\n                          client:\n                            description: Client identification.\n                            type: string\n                          clientURL:\n                            description: Backlink to the sender of notification.\n                            type: string\n                          component:\n                            description: The part or component of the affected system that is broken.\n                            type: string\n                          description:\n                            description: Description of the incident.\n                            type: string\n                          details:\n                            description: Arbitrary key/value pairs that provide further detail about the incident.\n                            items:\n                              description: KeyValue defines a (key, value) tuple.\n                              properties:\n                                key:\n                                  description: Key of the tuple.\n                                  minLength: 1\n                                  type: string\n                                value:\n                                  description: Value of the tuple.\n                                  type: string\n                              required:\n                              - key\n                              - value\n                              type: object\n                            type: array\n                          group:\n                            description: A cluster or grouping of sources.\n                            type: string\n                          httpConfig:\n                            description: HTTP client configuration.\n                            properties:\n                              authorization:\n                                description: Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\n                                properties:\n                                  credentials:\n                                    description: Selects a key of a Secret in the namespace that contains the credentials for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type:\n                                    description: \"Defines the authentication type. The value is case-insensitive. \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\"\n                                    type: string\n                                type: object\n                              basicAuth:\n                                description: BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.\n                                properties:\n                                  password:\n                                    description: The secret in the service monitor namespace that contains the password for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  username:\n                                    description: The secret in the service monitor namespace that contains the username for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              bearerTokenSecret:\n                                description: The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                              followRedirects:\n                                description: FollowRedirects specifies whether the client should follow HTTP 3xx redirects.\n                                type: boolean\n                              oauth2:\n                                description: OAuth2 client credentials used to fetch a token for the targets.\n                                properties:\n                                  clientId:\n                                    description: The secret or configmap containing the OAuth2 client id\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  clientSecret:\n                                    description: The secret containing the OAuth2 client secret\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  endpointParams:\n                                    additionalProperties:\n                                      type: string\n                                    description: Parameters to append to the token URL\n                                    type: object\n                                  scopes:\n                                    description: OAuth2 scopes used for the token request\n                                    items:\n                                      type: string\n                                    type: array\n                                  tokenUrl:\n                                    description: The URL to fetch the token from\n                                    minLength: 1\n                                    type: string\n                                required:\n                                - clientId\n                                - clientSecret\n                                - tokenUrl\n                                type: object\n                              proxyURL:\n                                description: Optional proxy URL.\n                                type: string\n                              tlsConfig:\n                                description: TLS configuration for the client.\n                                properties:\n                                  ca:\n                                    description: Certificate authority used when verifying server certificates.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  cert:\n                                    description: Client certificate to present when doing client-authentication.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  insecureSkipVerify:\n                                    description: Disable target certificate validation.\n                                    type: boolean\n                                  keySecret:\n                                    description: Secret containing the client key file for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  serverName:\n                                    description: Used to verify the hostname for the targets.\n                                    type: string\n                                type: object\n                            type: object\n                          pagerDutyImageConfigs:\n                            description: A list of image details to attach that provide further detail about an incident.\n                            items:\n                              description: PagerDutyImageConfig attaches images to an incident\n                              properties:\n                                alt:\n                                  description: Alt is the optional alternative text for the image.\n                                  type: string\n                                href:\n                                  description: Optional URL; makes the image a clickable link.\n                                  type: string\n                                src:\n                                  description: Src of the image being attached to the incident\n                                  type: string\n                              type: object\n                            type: array\n                          pagerDutyLinkConfigs:\n                            description: A list of link details to attach that provide further detail about an incident.\n                            items:\n                              description: PagerDutyLinkConfig attaches text links to an incident\n                              properties:\n                                alt:\n                                  description: Text that describes the purpose of the link, and can be used as the link's text.\n                                  type: string\n                                href:\n                                  description: Href is the URL of the link to be attached\n                                  type: string\n                              type: object\n                            type: array\n                          routingKey:\n                            description: The secret's key that contains the PagerDuty integration key (when using Events API v2). Either this field or `serviceKey` needs to be defined. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                          sendResolved:\n                            description: Whether or not to notify about resolved alerts.\n                            type: boolean\n                          serviceKey:\n                            description: The secret's key that contains the PagerDuty service key (when using integration type \"Prometheus\"). Either this field or `routingKey` needs to be defined. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                          severity:\n                            description: Severity of the incident.\n                            type: string\n                          url:\n                            description: The URL to send requests to.\n                            type: string\n                        type: object\n                      type: array\n                    pushoverConfigs:\n                      description: List of Pushover configurations.\n                      items:\n                        description: PushoverConfig configures notifications via Pushover. See https://prometheus.io/docs/alerting/latest/configuration/#pushover_config\n                        properties:\n                          expire:\n                            description: How long your notification will continue to be retried for, unless the user acknowledges the notification.\n                            pattern: ^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$\n                            type: string\n                          html:\n                            description: Whether notification message is HTML or plain text.\n                            type: boolean\n                          httpConfig:\n                            description: HTTP client configuration.\n                            properties:\n                              authorization:\n                                description: Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\n                                properties:\n                                  credentials:\n                                    description: Selects a key of a Secret in the namespace that contains the credentials for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type:\n                                    description: \"Defines the authentication type. The value is case-insensitive. \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\"\n                                    type: string\n                                type: object\n                              basicAuth:\n                                description: BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.\n                                properties:\n                                  password:\n                                    description: The secret in the service monitor namespace that contains the password for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  username:\n                                    description: The secret in the service monitor namespace that contains the username for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              bearerTokenSecret:\n                                description: The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                              followRedirects:\n                                description: FollowRedirects specifies whether the client should follow HTTP 3xx redirects.\n                                type: boolean\n                              oauth2:\n                                description: OAuth2 client credentials used to fetch a token for the targets.\n                                properties:\n                                  clientId:\n                                    description: The secret or configmap containing the OAuth2 client id\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  clientSecret:\n                                    description: The secret containing the OAuth2 client secret\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  endpointParams:\n                                    additionalProperties:\n                                      type: string\n                                    description: Parameters to append to the token URL\n                                    type: object\n                                  scopes:\n                                    description: OAuth2 scopes used for the token request\n                                    items:\n                                      type: string\n                                    type: array\n                                  tokenUrl:\n                                    description: The URL to fetch the token from\n                                    minLength: 1\n                                    type: string\n                                required:\n                                - clientId\n                                - clientSecret\n                                - tokenUrl\n                                type: object\n                              proxyURL:\n                                description: Optional proxy URL.\n                                type: string\n                              tlsConfig:\n                                description: TLS configuration for the client.\n                                properties:\n                                  ca:\n                                    description: Certificate authority used when verifying server certificates.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  cert:\n                                    description: Client certificate to present when doing client-authentication.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  insecureSkipVerify:\n                                    description: Disable target certificate validation.\n                                    type: boolean\n                                  keySecret:\n                                    description: Secret containing the client key file for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  serverName:\n                                    description: Used to verify the hostname for the targets.\n                                    type: string\n                                type: object\n                            type: object\n                          message:\n                            description: Notification message.\n                            type: string\n                          priority:\n                            description: Priority, see https://pushover.net/api#priority\n                            type: string\n                          retry:\n                            description: How often the Pushover servers will send the same notification to the user. Must be at least 30 seconds.\n                            pattern: ^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$\n                            type: string\n                          sendResolved:\n                            description: Whether or not to notify about resolved alerts.\n                            type: boolean\n                          sound:\n                            description: The name of one of the sounds supported by device clients to override the user's default sound choice\n                            type: string\n                          title:\n                            description: Notification title.\n                            type: string\n                          token:\n                            description: The secret's key that contains the registered application's API token, see https://pushover.net/apps. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                          url:\n                            description: A supplementary URL shown alongside the message.\n                            type: string\n                          urlTitle:\n                            description: A title for supplementary URL, otherwise just the URL is shown\n                            type: string\n                          userKey:\n                            description: The secret's key that contains the recipient user's user key. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                        type: object\n                      type: array\n                    slackConfigs:\n                      description: List of Slack configurations.\n                      items:\n                        description: SlackConfig configures notifications via Slack. See https://prometheus.io/docs/alerting/latest/configuration/#slack_config\n                        properties:\n                          actions:\n                            description: A list of Slack actions that are sent with each notification.\n                            items:\n                              description: SlackAction configures a single Slack action that is sent with each notification. See https://api.slack.com/docs/message-attachments#action_fields and https://api.slack.com/docs/message-buttons for more information.\n                              properties:\n                                confirm:\n                                  description: SlackConfirmationField protect users from destructive actions or particularly distinguished decisions by asking them to confirm their button click one more time. See https://api.slack.com/docs/interactive-message-field-guide#confirmation_fields for more information.\n                                  properties:\n                                    dismissText:\n                                      type: string\n                                    okText:\n                                      type: string\n                                    text:\n                                      minLength: 1\n                                      type: string\n                                    title:\n                                      type: string\n                                  required:\n                                  - text\n                                  type: object\n                                name:\n                                  type: string\n                                style:\n                                  type: string\n                                text:\n                                  minLength: 1\n                                  type: string\n                                type:\n                                  minLength: 1\n                                  type: string\n                                url:\n                                  type: string\n                                value:\n                                  type: string\n                              required:\n                              - text\n                              - type\n                              type: object\n                            type: array\n                          apiURL:\n                            description: The secret's key that contains the Slack webhook URL. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                          callbackId:\n                            type: string\n                          channel:\n                            description: The channel or user to send notifications to.\n                            type: string\n                          color:\n                            type: string\n                          fallback:\n                            type: string\n                          fields:\n                            description: A list of Slack fields that are sent with each notification.\n                            items:\n                              description: SlackField configures a single Slack field that is sent with each notification. Each field must contain a title, value, and optionally, a boolean value to indicate if the field is short enough to be displayed next to other fields designated as short. See https://api.slack.com/docs/message-attachments#fields for more information.\n                              properties:\n                                short:\n                                  type: boolean\n                                title:\n                                  minLength: 1\n                                  type: string\n                                value:\n                                  minLength: 1\n                                  type: string\n                              required:\n                              - title\n                              - value\n                              type: object\n                            type: array\n                          footer:\n                            type: string\n                          httpConfig:\n                            description: HTTP client configuration.\n                            properties:\n                              authorization:\n                                description: Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\n                                properties:\n                                  credentials:\n                                    description: Selects a key of a Secret in the namespace that contains the credentials for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type:\n                                    description: \"Defines the authentication type. The value is case-insensitive. \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\"\n                                    type: string\n                                type: object\n                              basicAuth:\n                                description: BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.\n                                properties:\n                                  password:\n                                    description: The secret in the service monitor namespace that contains the password for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  username:\n                                    description: The secret in the service monitor namespace that contains the username for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              bearerTokenSecret:\n                                description: The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                              followRedirects:\n                                description: FollowRedirects specifies whether the client should follow HTTP 3xx redirects.\n                                type: boolean\n                              oauth2:\n                                description: OAuth2 client credentials used to fetch a token for the targets.\n                                properties:\n                                  clientId:\n                                    description: The secret or configmap containing the OAuth2 client id\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  clientSecret:\n                                    description: The secret containing the OAuth2 client secret\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  endpointParams:\n                                    additionalProperties:\n                                      type: string\n                                    description: Parameters to append to the token URL\n                                    type: object\n                                  scopes:\n                                    description: OAuth2 scopes used for the token request\n                                    items:\n                                      type: string\n                                    type: array\n                                  tokenUrl:\n                                    description: The URL to fetch the token from\n                                    minLength: 1\n                                    type: string\n                                required:\n                                - clientId\n                                - clientSecret\n                                - tokenUrl\n                                type: object\n                              proxyURL:\n                                description: Optional proxy URL.\n                                type: string\n                              tlsConfig:\n                                description: TLS configuration for the client.\n                                properties:\n                                  ca:\n                                    description: Certificate authority used when verifying server certificates.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  cert:\n                                    description: Client certificate to present when doing client-authentication.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  insecureSkipVerify:\n                                    description: Disable target certificate validation.\n                                    type: boolean\n                                  keySecret:\n                                    description: Secret containing the client key file for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  serverName:\n                                    description: Used to verify the hostname for the targets.\n                                    type: string\n                                type: object\n                            type: object\n                          iconEmoji:\n                            type: string\n                          iconURL:\n                            type: string\n                          imageURL:\n                            type: string\n                          linkNames:\n                            type: boolean\n                          mrkdwnIn:\n                            items:\n                              type: string\n                            type: array\n                          pretext:\n                            type: string\n                          sendResolved:\n                            description: Whether or not to notify about resolved alerts.\n                            type: boolean\n                          shortFields:\n                            type: boolean\n                          text:\n                            type: string\n                          thumbURL:\n                            type: string\n                          title:\n                            type: string\n                          titleLink:\n                            type: string\n                          username:\n                            type: string\n                        type: object\n                      type: array\n                    snsConfigs:\n                      description: List of SNS configurations\n                      items:\n                        description: SNSConfig configures notifications via AWS SNS. See https://prometheus.io/docs/alerting/latest/configuration/#sns_configs\n                        properties:\n                          apiURL:\n                            description: The SNS API URL i.e. https://sns.us-east-2.amazonaws.com. If not specified, the SNS API URL from the SNS SDK will be used.\n                            type: string\n                          attributes:\n                            additionalProperties:\n                              type: string\n                            description: SNS message attributes.\n                            type: object\n                          httpConfig:\n                            description: HTTP client configuration.\n                            properties:\n                              authorization:\n                                description: Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\n                                properties:\n                                  credentials:\n                                    description: Selects a key of a Secret in the namespace that contains the credentials for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type:\n                                    description: \"Defines the authentication type. The value is case-insensitive. \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\"\n                                    type: string\n                                type: object\n                              basicAuth:\n                                description: BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.\n                                properties:\n                                  password:\n                                    description: The secret in the service monitor namespace that contains the password for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  username:\n                                    description: The secret in the service monitor namespace that contains the username for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              bearerTokenSecret:\n                                description: The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                              followRedirects:\n                                description: FollowRedirects specifies whether the client should follow HTTP 3xx redirects.\n                                type: boolean\n                              oauth2:\n                                description: OAuth2 client credentials used to fetch a token for the targets.\n                                properties:\n                                  clientId:\n                                    description: The secret or configmap containing the OAuth2 client id\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  clientSecret:\n                                    description: The secret containing the OAuth2 client secret\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  endpointParams:\n                                    additionalProperties:\n                                      type: string\n                                    description: Parameters to append to the token URL\n                                    type: object\n                                  scopes:\n                                    description: OAuth2 scopes used for the token request\n                                    items:\n                                      type: string\n                                    type: array\n                                  tokenUrl:\n                                    description: The URL to fetch the token from\n                                    minLength: 1\n                                    type: string\n                                required:\n                                - clientId\n                                - clientSecret\n                                - tokenUrl\n                                type: object\n                              proxyURL:\n                                description: Optional proxy URL.\n                                type: string\n                              tlsConfig:\n                                description: TLS configuration for the client.\n                                properties:\n                                  ca:\n                                    description: Certificate authority used when verifying server certificates.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  cert:\n                                    description: Client certificate to present when doing client-authentication.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  insecureSkipVerify:\n                                    description: Disable target certificate validation.\n                                    type: boolean\n                                  keySecret:\n                                    description: Secret containing the client key file for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  serverName:\n                                    description: Used to verify the hostname for the targets.\n                                    type: string\n                                type: object\n                            type: object\n                          message:\n                            description: The message content of the SNS notification.\n                            type: string\n                          phoneNumber:\n                            description: Phone number if message is delivered via SMS in E.164 format. If you don't specify this value, you must specify a value for the TopicARN or TargetARN.\n                            type: string\n                          sendResolved:\n                            description: Whether or not to notify about resolved alerts.\n                            type: boolean\n                          sigv4:\n                            description: Configures AWS's Signature Verification 4 signing process to sign requests.\n                            properties:\n                              accessKey:\n                                description: AccessKey is the AWS API key. If not specified, the environment variable `AWS_ACCESS_KEY_ID` is used.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              profile:\n                                description: Profile is the named AWS profile used to authenticate.\n                                type: string\n                              region:\n                                description: Region is the AWS region. If blank, the region from the default credentials chain used.\n                                type: string\n                              roleArn:\n                                description: RoleArn is the named AWS profile used to authenticate.\n                                type: string\n                              secretKey:\n                                description: SecretKey is the AWS API secret. If not specified, the environment variable `AWS_SECRET_ACCESS_KEY` is used.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            type: object\n                          subject:\n                            description: Subject line when the message is delivered to email endpoints.\n                            type: string\n                          targetARN:\n                            description: The  mobile platform endpoint ARN if message is delivered via mobile notifications. If you don't specify this value, you must specify a value for the topic_arn or PhoneNumber.\n                            type: string\n                          topicARN:\n                            description: SNS topic ARN, i.e. arn:aws:sns:us-east-2:698519295917:My-Topic If you don't specify this value, you must specify a value for the PhoneNumber or TargetARN.\n                            type: string\n                        type: object\n                      type: array\n                    telegramConfigs:\n                      description: List of Telegram configurations.\n                      items:\n                        description: TelegramConfig configures notifications via Telegram. See https://prometheus.io/docs/alerting/latest/configuration/#telegram_config\n                        properties:\n                          apiURL:\n                            description: The Telegram API URL i.e. https://api.telegram.org. If not specified, default API URL will be used.\n                            type: string\n                          botToken:\n                            description: Telegram bot token The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                          chatID:\n                            description: The Telegram chat ID.\n                            format: int64\n                            type: integer\n                          disableNotifications:\n                            description: Disable telegram notifications\n                            type: boolean\n                          httpConfig:\n                            description: HTTP client configuration.\n                            properties:\n                              authorization:\n                                description: Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\n                                properties:\n                                  credentials:\n                                    description: Selects a key of a Secret in the namespace that contains the credentials for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type:\n                                    description: \"Defines the authentication type. The value is case-insensitive. \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\"\n                                    type: string\n                                type: object\n                              basicAuth:\n                                description: BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.\n                                properties:\n                                  password:\n                                    description: The secret in the service monitor namespace that contains the password for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  username:\n                                    description: The secret in the service monitor namespace that contains the username for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              bearerTokenSecret:\n                                description: The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                              followRedirects:\n                                description: FollowRedirects specifies whether the client should follow HTTP 3xx redirects.\n                                type: boolean\n                              oauth2:\n                                description: OAuth2 client credentials used to fetch a token for the targets.\n                                properties:\n                                  clientId:\n                                    description: The secret or configmap containing the OAuth2 client id\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  clientSecret:\n                                    description: The secret containing the OAuth2 client secret\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  endpointParams:\n                                    additionalProperties:\n                                      type: string\n                                    description: Parameters to append to the token URL\n                                    type: object\n                                  scopes:\n                                    description: OAuth2 scopes used for the token request\n                                    items:\n                                      type: string\n                                    type: array\n                                  tokenUrl:\n                                    description: The URL to fetch the token from\n                                    minLength: 1\n                                    type: string\n                                required:\n                                - clientId\n                                - clientSecret\n                                - tokenUrl\n                                type: object\n                              proxyURL:\n                                description: Optional proxy URL.\n                                type: string\n                              tlsConfig:\n                                description: TLS configuration for the client.\n                                properties:\n                                  ca:\n                                    description: Certificate authority used when verifying server certificates.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  cert:\n                                    description: Client certificate to present when doing client-authentication.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  insecureSkipVerify:\n                                    description: Disable target certificate validation.\n                                    type: boolean\n                                  keySecret:\n                                    description: Secret containing the client key file for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  serverName:\n                                    description: Used to verify the hostname for the targets.\n                                    type: string\n                                type: object\n                            type: object\n                          message:\n                            description: Message template\n                            type: string\n                          parseMode:\n                            description: Parse mode for telegram message\n                            enum:\n                            - MarkdownV2\n                            - Markdown\n                            - HTML\n                            type: string\n                          sendResolved:\n                            description: Whether to notify about resolved alerts.\n                            type: boolean\n                        type: object\n                      type: array\n                    victoropsConfigs:\n                      description: List of VictorOps configurations.\n                      items:\n                        description: VictorOpsConfig configures notifications via VictorOps. See https://prometheus.io/docs/alerting/latest/configuration/#victorops_config\n                        properties:\n                          apiKey:\n                            description: The secret's key that contains the API key to use when talking to the VictorOps API. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                          apiUrl:\n                            description: The VictorOps API URL.\n                            type: string\n                          customFields:\n                            description: Additional custom fields for notification.\n                            items:\n                              description: KeyValue defines a (key, value) tuple.\n                              properties:\n                                key:\n                                  description: Key of the tuple.\n                                  minLength: 1\n                                  type: string\n                                value:\n                                  description: Value of the tuple.\n                                  type: string\n                              required:\n                              - key\n                              - value\n                              type: object\n                            type: array\n                          entityDisplayName:\n                            description: Contains summary of the alerted problem.\n                            type: string\n                          httpConfig:\n                            description: The HTTP client's configuration.\n                            properties:\n                              authorization:\n                                description: Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\n                                properties:\n                                  credentials:\n                                    description: Selects a key of a Secret in the namespace that contains the credentials for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type:\n                                    description: \"Defines the authentication type. The value is case-insensitive. \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\"\n                                    type: string\n                                type: object\n                              basicAuth:\n                                description: BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.\n                                properties:\n                                  password:\n                                    description: The secret in the service monitor namespace that contains the password for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  username:\n                                    description: The secret in the service monitor namespace that contains the username for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              bearerTokenSecret:\n                                description: The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                              followRedirects:\n                                description: FollowRedirects specifies whether the client should follow HTTP 3xx redirects.\n                                type: boolean\n                              oauth2:\n                                description: OAuth2 client credentials used to fetch a token for the targets.\n                                properties:\n                                  clientId:\n                                    description: The secret or configmap containing the OAuth2 client id\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  clientSecret:\n                                    description: The secret containing the OAuth2 client secret\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  endpointParams:\n                                    additionalProperties:\n                                      type: string\n                                    description: Parameters to append to the token URL\n                                    type: object\n                                  scopes:\n                                    description: OAuth2 scopes used for the token request\n                                    items:\n                                      type: string\n                                    type: array\n                                  tokenUrl:\n                                    description: The URL to fetch the token from\n                                    minLength: 1\n                                    type: string\n                                required:\n                                - clientId\n                                - clientSecret\n                                - tokenUrl\n                                type: object\n                              proxyURL:\n                                description: Optional proxy URL.\n                                type: string\n                              tlsConfig:\n                                description: TLS configuration for the client.\n                                properties:\n                                  ca:\n                                    description: Certificate authority used when verifying server certificates.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  cert:\n                                    description: Client certificate to present when doing client-authentication.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  insecureSkipVerify:\n                                    description: Disable target certificate validation.\n                                    type: boolean\n                                  keySecret:\n                                    description: Secret containing the client key file for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  serverName:\n                                    description: Used to verify the hostname for the targets.\n                                    type: string\n                                type: object\n                            type: object\n                          messageType:\n                            description: Describes the behavior of the alert (CRITICAL, WARNING, INFO).\n                            type: string\n                          monitoringTool:\n                            description: The monitoring tool the state message is from.\n                            type: string\n                          routingKey:\n                            description: A key used to map the alert to a team.\n                            type: string\n                          sendResolved:\n                            description: Whether or not to notify about resolved alerts.\n                            type: boolean\n                          stateMessage:\n                            description: Contains long explanation of the alerted problem.\n                            type: string\n                        type: object\n                      type: array\n                    webhookConfigs:\n                      description: List of webhook configurations.\n                      items:\n                        description: WebhookConfig configures notifications via a generic receiver supporting the webhook payload. See https://prometheus.io/docs/alerting/latest/configuration/#webhook_config\n                        properties:\n                          httpConfig:\n                            description: HTTP client configuration.\n                            properties:\n                              authorization:\n                                description: Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\n                                properties:\n                                  credentials:\n                                    description: Selects a key of a Secret in the namespace that contains the credentials for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type:\n                                    description: \"Defines the authentication type. The value is case-insensitive. \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\"\n                                    type: string\n                                type: object\n                              basicAuth:\n                                description: BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.\n                                properties:\n                                  password:\n                                    description: The secret in the service monitor namespace that contains the password for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  username:\n                                    description: The secret in the service monitor namespace that contains the username for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              bearerTokenSecret:\n                                description: The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                              followRedirects:\n                                description: FollowRedirects specifies whether the client should follow HTTP 3xx redirects.\n                                type: boolean\n                              oauth2:\n                                description: OAuth2 client credentials used to fetch a token for the targets.\n                                properties:\n                                  clientId:\n                                    description: The secret or configmap containing the OAuth2 client id\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  clientSecret:\n                                    description: The secret containing the OAuth2 client secret\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  endpointParams:\n                                    additionalProperties:\n                                      type: string\n                                    description: Parameters to append to the token URL\n                                    type: object\n                                  scopes:\n                                    description: OAuth2 scopes used for the token request\n                                    items:\n                                      type: string\n                                    type: array\n                                  tokenUrl:\n                                    description: The URL to fetch the token from\n                                    minLength: 1\n                                    type: string\n                                required:\n                                - clientId\n                                - clientSecret\n                                - tokenUrl\n                                type: object\n                              proxyURL:\n                                description: Optional proxy URL.\n                                type: string\n                              tlsConfig:\n                                description: TLS configuration for the client.\n                                properties:\n                                  ca:\n                                    description: Certificate authority used when verifying server certificates.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  cert:\n                                    description: Client certificate to present when doing client-authentication.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  insecureSkipVerify:\n                                    description: Disable target certificate validation.\n                                    type: boolean\n                                  keySecret:\n                                    description: Secret containing the client key file for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  serverName:\n                                    description: Used to verify the hostname for the targets.\n                                    type: string\n                                type: object\n                            type: object\n                          maxAlerts:\n                            description: Maximum number of alerts to be sent per webhook message. When 0, all alerts are included.\n                            format: int32\n                            minimum: 0\n                            type: integer\n                          sendResolved:\n                            description: Whether or not to notify about resolved alerts.\n                            type: boolean\n                          url:\n                            description: The URL to send HTTP POST requests to. `urlSecret` takes precedence over `url`. One of `urlSecret` and `url` should be defined.\n                            type: string\n                          urlSecret:\n                            description: The secret's key that contains the webhook URL to send HTTP requests to. `urlSecret` takes precedence over `url`. One of `urlSecret` and `url` should be defined. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                        type: object\n                      type: array\n                    wechatConfigs:\n                      description: List of WeChat configurations.\n                      items:\n                        description: WeChatConfig configures notifications via WeChat. See https://prometheus.io/docs/alerting/latest/configuration/#wechat_config\n                        properties:\n                          agentID:\n                            type: string\n                          apiSecret:\n                            description: The secret's key that contains the WeChat API key. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                          apiURL:\n                            description: The WeChat API URL.\n                            type: string\n                          corpID:\n                            description: The corp id for authentication.\n                            type: string\n                          httpConfig:\n                            description: HTTP client configuration.\n                            properties:\n                              authorization:\n                                description: Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\n                                properties:\n                                  credentials:\n                                    description: Selects a key of a Secret in the namespace that contains the credentials for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  type:\n                                    description: \"Defines the authentication type. The value is case-insensitive. \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\"\n                                    type: string\n                                type: object\n                              basicAuth:\n                                description: BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.\n                                properties:\n                                  password:\n                                    description: The secret in the service monitor namespace that contains the password for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  username:\n                                    description: The secret in the service monitor namespace that contains the username for authentication.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              bearerTokenSecret:\n                                description: The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                              followRedirects:\n                                description: FollowRedirects specifies whether the client should follow HTTP 3xx redirects.\n                                type: boolean\n                              oauth2:\n                                description: OAuth2 client credentials used to fetch a token for the targets.\n                                properties:\n                                  clientId:\n                                    description: The secret or configmap containing the OAuth2 client id\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  clientSecret:\n                                    description: The secret containing the OAuth2 client secret\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  endpointParams:\n                                    additionalProperties:\n                                      type: string\n                                    description: Parameters to append to the token URL\n                                    type: object\n                                  scopes:\n                                    description: OAuth2 scopes used for the token request\n                                    items:\n                                      type: string\n                                    type: array\n                                  tokenUrl:\n                                    description: The URL to fetch the token from\n                                    minLength: 1\n                                    type: string\n                                required:\n                                - clientId\n                                - clientSecret\n                                - tokenUrl\n                                type: object\n                              proxyURL:\n                                description: Optional proxy URL.\n                                type: string\n                              tlsConfig:\n                                description: TLS configuration for the client.\n                                properties:\n                                  ca:\n                                    description: Certificate authority used when verifying server certificates.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  cert:\n                                    description: Client certificate to present when doing client-authentication.\n                                    properties:\n                                      configMap:\n                                        description: ConfigMap containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key to select.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the ConfigMap or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                      secret:\n                                        description: Secret containing data to use for the targets.\n                                        properties:\n                                          key:\n                                            description: The key of the secret to select from.  Must be a valid secret key.\n                                            type: string\n                                          name:\n                                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                            type: string\n                                          optional:\n                                            description: Specify whether the Secret or its key must be defined\n                                            type: boolean\n                                        required:\n                                        - key\n                                        type: object\n                                        x-kubernetes-map-type: atomic\n                                    type: object\n                                  insecureSkipVerify:\n                                    description: Disable target certificate validation.\n                                    type: boolean\n                                  keySecret:\n                                    description: Secret containing the client key file for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  serverName:\n                                    description: Used to verify the hostname for the targets.\n                                    type: string\n                                type: object\n                            type: object\n                          message:\n                            description: API request data as defined by the WeChat API.\n                            type: string\n                          messageType:\n                            type: string\n                          sendResolved:\n                            description: Whether or not to notify about resolved alerts.\n                            type: boolean\n                          toParty:\n                            type: string\n                          toTag:\n                            type: string\n                          toUser:\n                            type: string\n                        type: object\n                      type: array\n                  required:\n                  - name\n                  type: object\n                type: array\n              route:\n                description: The Alertmanager route definition for alerts matching the resource's namespace. If present, it will be added to the generated Alertmanager configuration as a first-level route.\n                properties:\n                  activeTimeIntervals:\n                    description: ActiveTimeIntervals is a list of MuteTimeInterval names when this route should be active.\n                    items:\n                      type: string\n                    type: array\n                  continue:\n                    description: Boolean indicating whether an alert should continue matching subsequent sibling nodes. It will always be overridden to true for the first-level route by the Prometheus operator.\n                    type: boolean\n                  groupBy:\n                    description: List of labels to group by. Labels must not be repeated (unique list). Special label \"...\" (aggregate by all possible labels), if provided, must be the only element in the list.\n                    items:\n                      type: string\n                    type: array\n                  groupInterval:\n                    description: 'How long to wait before sending an updated notification. Must match the regular expression`^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$` Example: \"5m\"'\n                    type: string\n                  groupWait:\n                    description: 'How long to wait before sending the initial notification. Must match the regular expression`^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$` Example: \"30s\"'\n                    type: string\n                  matchers:\n                    description: 'List of matchers that the alert''s labels should match. For the first level route, the operator removes any existing equality and regexp matcher on the `namespace` label and adds a `namespace: <object namespace>` matcher.'\n                    items:\n                      description: Matcher defines how to match on alert's labels.\n                      properties:\n                        matchType:\n                          description: Match operation available with AlertManager >= v0.22.0 and takes precedence over Regex (deprecated) if non-empty.\n                          enum:\n                          - '!='\n                          - =\n                          - =~\n                          - '!~'\n                          type: string\n                        name:\n                          description: Label to match.\n                          minLength: 1\n                          type: string\n                        regex:\n                          description: Whether to match on equality (false) or regular-expression (true). Deprecated as of AlertManager >= v0.22.0 where a user should use MatchType instead.\n                          type: boolean\n                        value:\n                          description: Label value to match.\n                          type: string\n                      required:\n                      - name\n                      type: object\n                    type: array\n                  muteTimeIntervals:\n                    description: 'Note: this comment applies to the field definition above but appears below otherwise it gets included in the generated manifest. CRD schema doesn''t support self-referential types for now (see https://github.com/kubernetes/kubernetes/issues/62872). We have to use an alternative type to circumvent the limitation. The downside is that the Kube API can''t validate the data beyond the fact that it is a valid JSON representation. MuteTimeIntervals is a list of MuteTimeInterval names that will mute this route when matched,'\n                    items:\n                      type: string\n                    type: array\n                  receiver:\n                    description: Name of the receiver for this route. If not empty, it should be listed in the `receivers` field.\n                    type: string\n                  repeatInterval:\n                    description: 'How long to wait before repeating the last notification. Must match the regular expression`^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$` Example: \"4h\"'\n                    type: string\n                  routes:\n                    description: Child routes.\n                    items:\n                      x-kubernetes-preserve-unknown-fields: true\n                    type: array\n                type: object\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/setup/0alertmanagerCustomResourceDefinition.yaml",
    "content": "apiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.11.1\n  creationTimestamp: null\n  name: alertmanagers.monitoring.coreos.com\nspec:\n  group: monitoring.coreos.com\n  names:\n    categories:\n    - prometheus-operator\n    kind: Alertmanager\n    listKind: AlertmanagerList\n    plural: alertmanagers\n    shortNames:\n    - am\n    singular: alertmanager\n  scope: Namespaced\n  versions:\n  - additionalPrinterColumns:\n    - description: The version of Alertmanager\n      jsonPath: .spec.version\n      name: Version\n      type: string\n    - description: The number of desired replicas\n      jsonPath: .spec.replicas\n      name: Replicas\n      type: integer\n    - description: The number of ready replicas\n      jsonPath: .status.availableReplicas\n      name: Ready\n      type: integer\n    - jsonPath: .status.conditions[?(@.type == 'Reconciled')].status\n      name: Reconciled\n      type: string\n    - jsonPath: .status.conditions[?(@.type == 'Available')].status\n      name: Available\n      type: string\n    - jsonPath: .metadata.creationTimestamp\n      name: Age\n      type: date\n    - description: Whether the resource reconciliation is paused or not\n      jsonPath: .status.paused\n      name: Paused\n      priority: 1\n      type: boolean\n    name: v1\n    schema:\n      openAPIV3Schema:\n        description: Alertmanager describes an Alertmanager cluster.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: 'Specification of the desired behavior of the Alertmanager cluster. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status'\n            properties:\n              additionalPeers:\n                description: AdditionalPeers allows injecting a set of additional Alertmanagers to peer with to form a highly available cluster.\n                items:\n                  type: string\n                type: array\n              affinity:\n                description: If specified, the pod's scheduling constraints.\n                properties:\n                  nodeAffinity:\n                    description: Describes node affinity scheduling rules for the pod.\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n                        items:\n                          description: An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\n                          properties:\n                            preference:\n                              description: A node selector term, associated with the corresponding weight.\n                              properties:\n                                matchExpressions:\n                                  description: A list of node selector requirements by node's labels.\n                                  items:\n                                    description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchFields:\n                                  description: A list of node selector requirements by node's fields.\n                                  items:\n                                    description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            weight:\n                              description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - preference\n                          - weight\n                          type: object\n                        type: array\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.\n                        properties:\n                          nodeSelectorTerms:\n                            description: Required. A list of node selector terms. The terms are ORed.\n                            items:\n                              description: A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\n                              properties:\n                                matchExpressions:\n                                  description: A list of node selector requirements by node's labels.\n                                  items:\n                                    description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchFields:\n                                  description: A list of node selector requirements by node's fields.\n                                  items:\n                                    description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            type: array\n                        required:\n                        - nodeSelectorTerms\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  podAffinity:\n                    description: Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n                        items:\n                          description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\n                          properties:\n                            podAffinityTerm:\n                              description: Required. A pod affinity term, associated with the corresponding weight.\n                              properties:\n                                labelSelector:\n                                  description: A label query over a set of resources, in this case pods.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                      items:\n                                        description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaceSelector:\n                                  description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                      items:\n                                        description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaces:\n                                  description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                  items:\n                                    type: string\n                                  type: array\n                                topologyKey:\n                                  description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                                  type: string\n                              required:\n                              - topologyKey\n                              type: object\n                            weight:\n                              description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - podAffinityTerm\n                          - weight\n                          type: object\n                        type: array\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n                        items:\n                          description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running\n                          properties:\n                            labelSelector:\n                              description: A label query over a set of resources, in this case pods.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaceSelector:\n                              description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaces:\n                              description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                              items:\n                                type: string\n                              type: array\n                            topologyKey:\n                              description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                              type: string\n                          required:\n                          - topologyKey\n                          type: object\n                        type: array\n                    type: object\n                  podAntiAffinity:\n                    description: Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n                        items:\n                          description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\n                          properties:\n                            podAffinityTerm:\n                              description: Required. A pod affinity term, associated with the corresponding weight.\n                              properties:\n                                labelSelector:\n                                  description: A label query over a set of resources, in this case pods.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                      items:\n                                        description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaceSelector:\n                                  description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                      items:\n                                        description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaces:\n                                  description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                  items:\n                                    type: string\n                                  type: array\n                                topologyKey:\n                                  description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                                  type: string\n                              required:\n                              - topologyKey\n                              type: object\n                            weight:\n                              description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - podAffinityTerm\n                          - weight\n                          type: object\n                        type: array\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n                        items:\n                          description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running\n                          properties:\n                            labelSelector:\n                              description: A label query over a set of resources, in this case pods.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaceSelector:\n                              description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaces:\n                              description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                              items:\n                                type: string\n                              type: array\n                            topologyKey:\n                              description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                              type: string\n                          required:\n                          - topologyKey\n                          type: object\n                        type: array\n                    type: object\n                type: object\n              alertmanagerConfigMatcherStrategy:\n                description: The AlertmanagerConfigMatcherStrategy defines how AlertmanagerConfig objects match the alerts. In the future more options may be added.\n                properties:\n                  type:\n                    default: OnNamespace\n                    description: If set to `OnNamespace`, the operator injects a label matcher matching the namespace of the AlertmanagerConfig object for all its routes and inhibition rules. `None` will not add any additional matchers other than the ones specified in the AlertmanagerConfig. Default is `OnNamespace`.\n                    enum:\n                    - OnNamespace\n                    - None\n                    type: string\n                type: object\n              alertmanagerConfigNamespaceSelector:\n                description: Namespaces to be selected for AlertmanagerConfig discovery. If nil, only check own namespace.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              alertmanagerConfigSelector:\n                description: AlertmanagerConfigs to be selected for to merge and configure Alertmanager with.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              alertmanagerConfiguration:\n                description: 'EXPERIMENTAL: alertmanagerConfiguration specifies the configuration of Alertmanager. If defined, it takes precedence over the `configSecret` field. This field may change in future releases.'\n                properties:\n                  global:\n                    description: Defines the global parameters of the Alertmanager configuration.\n                    properties:\n                      httpConfig:\n                        description: HTTP client configuration.\n                        properties:\n                          authorization:\n                            description: Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.\n                            properties:\n                              credentials:\n                                description: Selects a key of a Secret in the namespace that contains the credentials for authentication.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              type:\n                                description: \"Defines the authentication type. The value is case-insensitive. \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\"\n                                type: string\n                            type: object\n                          basicAuth:\n                            description: BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.\n                            properties:\n                              password:\n                                description: The secret in the service monitor namespace that contains the password for authentication.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              username:\n                                description: The secret in the service monitor namespace that contains the username for authentication.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            type: object\n                          bearerTokenSecret:\n                            description: The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the Alertmanager object and accessible by the Prometheus Operator.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          followRedirects:\n                            description: FollowRedirects specifies whether the client should follow HTTP 3xx redirects.\n                            type: boolean\n                          oauth2:\n                            description: OAuth2 client credentials used to fetch a token for the targets.\n                            properties:\n                              clientId:\n                                description: The secret or configmap containing the OAuth2 client id\n                                properties:\n                                  configMap:\n                                    description: ConfigMap containing data to use for the targets.\n                                    properties:\n                                      key:\n                                        description: The key to select.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the ConfigMap or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  secret:\n                                    description: Secret containing data to use for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              clientSecret:\n                                description: The secret containing the OAuth2 client secret\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              endpointParams:\n                                additionalProperties:\n                                  type: string\n                                description: Parameters to append to the token URL\n                                type: object\n                              scopes:\n                                description: OAuth2 scopes used for the token request\n                                items:\n                                  type: string\n                                type: array\n                              tokenUrl:\n                                description: The URL to fetch the token from\n                                minLength: 1\n                                type: string\n                            required:\n                            - clientId\n                            - clientSecret\n                            - tokenUrl\n                            type: object\n                          proxyURL:\n                            description: Optional proxy URL.\n                            type: string\n                          tlsConfig:\n                            description: TLS configuration for the client.\n                            properties:\n                              ca:\n                                description: Certificate authority used when verifying server certificates.\n                                properties:\n                                  configMap:\n                                    description: ConfigMap containing data to use for the targets.\n                                    properties:\n                                      key:\n                                        description: The key to select.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the ConfigMap or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  secret:\n                                    description: Secret containing data to use for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              cert:\n                                description: Client certificate to present when doing client-authentication.\n                                properties:\n                                  configMap:\n                                    description: ConfigMap containing data to use for the targets.\n                                    properties:\n                                      key:\n                                        description: The key to select.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the ConfigMap or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                  secret:\n                                    description: Secret containing data to use for the targets.\n                                    properties:\n                                      key:\n                                        description: The key of the secret to select from.  Must be a valid secret key.\n                                        type: string\n                                      name:\n                                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                        type: string\n                                      optional:\n                                        description: Specify whether the Secret or its key must be defined\n                                        type: boolean\n                                    required:\n                                    - key\n                                    type: object\n                                    x-kubernetes-map-type: atomic\n                                type: object\n                              insecureSkipVerify:\n                                description: Disable target certificate validation.\n                                type: boolean\n                              keySecret:\n                                description: Secret containing the client key file for the targets.\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              serverName:\n                                description: Used to verify the hostname for the targets.\n                                type: string\n                            type: object\n                        type: object\n                      opsGenieApiKey:\n                        description: The default OpsGenie API Key.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      opsGenieApiUrl:\n                        description: The default OpsGenie API URL.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      pagerdutyUrl:\n                        description: The default Pagerduty URL.\n                        type: string\n                      resolveTimeout:\n                        description: ResolveTimeout is the default value used by alertmanager if the alert does not include EndsAt, after this time passes it can declare the alert as resolved if it has not been updated. This has no impact on alerts from Prometheus, as they always include EndsAt.\n                        pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                        type: string\n                      slackApiUrl:\n                        description: The default Slack API URL.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      smtp:\n                        description: Configures global SMTP parameters.\n                        properties:\n                          authIdentity:\n                            description: SMTP Auth using PLAIN\n                            type: string\n                          authPassword:\n                            description: SMTP Auth using LOGIN and PLAIN.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          authSecret:\n                            description: SMTP Auth using CRAM-MD5.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          authUsername:\n                            description: SMTP Auth using CRAM-MD5, LOGIN and PLAIN. If empty, Alertmanager doesn't authenticate to the SMTP server.\n                            type: string\n                          from:\n                            description: The default SMTP From header field.\n                            type: string\n                          hello:\n                            description: The default hostname to identify to the SMTP server.\n                            type: string\n                          requireTLS:\n                            description: The default SMTP TLS requirement. Note that Go does not support unencrypted connections to remote SMTP endpoints.\n                            type: boolean\n                          smartHost:\n                            description: The default SMTP smarthost used for sending emails.\n                            properties:\n                              host:\n                                description: Defines the host's address, it can be a DNS name or a literal IP address.\n                                minLength: 1\n                                type: string\n                              port:\n                                description: Defines the host's port, it can be a literal port number or a port name.\n                                minLength: 1\n                                type: string\n                            required:\n                            - host\n                            - port\n                            type: object\n                        type: object\n                    type: object\n                  name:\n                    description: The name of the AlertmanagerConfig resource which is used to generate the Alertmanager configuration. It must be defined in the same namespace as the Alertmanager object. The operator will not enforce a `namespace` label for routes and inhibition rules.\n                    minLength: 1\n                    type: string\n                  templates:\n                    description: Custom notification templates.\n                    items:\n                      description: SecretOrConfigMap allows to specify data as a Secret or ConfigMap. Fields are mutually exclusive.\n                      properties:\n                        configMap:\n                          description: ConfigMap containing data to use for the targets.\n                          properties:\n                            key:\n                              description: The key to select.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the ConfigMap or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        secret:\n                          description: Secret containing data to use for the targets.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      type: object\n                    type: array\n                type: object\n              automountServiceAccountToken:\n                description: 'AutomountServiceAccountToken indicates whether a service account token should be automatically mounted in the pod. If the service account has `automountServiceAccountToken: true`, set the field to `false` to opt out of automounting API credentials.'\n                type: boolean\n              baseImage:\n                description: 'Base image that is used to deploy pods, without tag. Deprecated: use ''image'' instead'\n                type: string\n              clusterAdvertiseAddress:\n                description: 'ClusterAdvertiseAddress is the explicit address to advertise in cluster. Needs to be provided for non RFC1918 [1] (public) addresses. [1] RFC1918: https://tools.ietf.org/html/rfc1918'\n                type: string\n              clusterGossipInterval:\n                description: Interval between gossip attempts.\n                pattern: ^(0|(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              clusterPeerTimeout:\n                description: Timeout for cluster peering.\n                pattern: ^(0|(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              clusterPushpullInterval:\n                description: Interval between pushpull attempts.\n                pattern: ^(0|(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              configMaps:\n                description: ConfigMaps is a list of ConfigMaps in the same namespace as the Alertmanager object, which shall be mounted into the Alertmanager Pods. Each ConfigMap is added to the StatefulSet definition as a volume named `configmap-<configmap-name>`. The ConfigMaps are mounted into `/etc/alertmanager/configmaps/<configmap-name>` in the 'alertmanager' container.\n                items:\n                  type: string\n                type: array\n              configSecret:\n                description: \"ConfigSecret is the name of a Kubernetes Secret in the same namespace as the Alertmanager object, which contains the configuration for this Alertmanager instance. If empty, it defaults to `alertmanager-<alertmanager-name>`. \\n The Alertmanager configuration should be available under the `alertmanager.yaml` key. Additional keys from the original secret are copied to the generated secret and mounted into the `/etc/alertmanager/config` directory in the `alertmanager` container. \\n If either the secret or the `alertmanager.yaml` key is missing, the operator provisions a minimal Alertmanager configuration with one empty receiver (effectively dropping alert notifications).\"\n                type: string\n              containers:\n                description: 'Containers allows injecting additional containers. This is meant to allow adding an authentication proxy to an Alertmanager pod. Containers described here modify an operator generated container if they share the same name and modifications are done via a strategic merge patch. The current container names are: `alertmanager` and `config-reloader`. Overriding containers is entirely outside the scope of what the maintainers will support and by doing so, you accept that this behaviour may break at any time without notice.'\n                items:\n                  description: A single application container that you want to run within a pod.\n                  properties:\n                    args:\n                      description: 'Arguments to the entrypoint. The container image''s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    command:\n                      description: 'Entrypoint array. Not executed within a shell. The container image''s ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    env:\n                      description: List of environment variables to set in the container. Cannot be updated.\n                      items:\n                        description: EnvVar represents an environment variable present in a Container.\n                        properties:\n                          name:\n                            description: Name of the environment variable. Must be a C_IDENTIFIER.\n                            type: string\n                          value:\n                            description: 'Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to \"\".'\n                            type: string\n                          valueFrom:\n                            description: Source for the environment variable's value. Cannot be used if value is not empty.\n                            properties:\n                              configMapKeyRef:\n                                description: Selects a key of a ConfigMap.\n                                properties:\n                                  key:\n                                    description: The key to select.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the ConfigMap or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              fieldRef:\n                                description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels[''<KEY>'']`, `metadata.annotations[''<KEY>'']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.'\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              resourceFieldRef:\n                                description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.'\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes, optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              secretKeyRef:\n                                description: Selects a key of a secret in the pod's namespace\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            type: object\n                        required:\n                        - name\n                        type: object\n                      type: array\n                    envFrom:\n                      description: List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.\n                      items:\n                        description: EnvFromSource represents the source of a set of ConfigMaps\n                        properties:\n                          configMapRef:\n                            description: The ConfigMap to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          prefix:\n                            description: An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\n                            type: string\n                          secretRef:\n                            description: The Secret to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      type: array\n                    image:\n                      description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.'\n                      type: string\n                    imagePullPolicy:\n                      description: 'Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images'\n                      type: string\n                    lifecycle:\n                      description: Actions that the management system should take in response to container lifecycle events. Cannot be updated.\n                      properties:\n                        postStart:\n                          description: 'PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request. HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                        preStop:\n                          description: 'PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The Pod''s termination grace period countdown begins before the PreStop hook is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod''s termination grace period (unless delayed by finalizers). Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request. HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                      type: object\n                    livenessProbe:\n                      description: 'Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \\n If this is not specified, the default behavior is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host. Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    name:\n                      description: Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated.\n                      type: string\n                    ports:\n                      description: List of ports to expose from the container. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Modifying this array with strategic merge patch may corrupt the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255. Cannot be updated.\n                      items:\n                        description: ContainerPort represents a network port in a single container.\n                        properties:\n                          containerPort:\n                            description: Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536.\n                            format: int32\n                            type: integer\n                          hostIP:\n                            description: What host IP to bind the external port to.\n                            type: string\n                          hostPort:\n                            description: Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.\n                            format: int32\n                            type: integer\n                          name:\n                            description: If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.\n                            type: string\n                          protocol:\n                            default: TCP\n                            description: Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".\n                            type: string\n                        required:\n                        - containerPort\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - containerPort\n                      - protocol\n                      x-kubernetes-list-type: map\n                    readinessProbe:\n                      description: 'Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \\n If this is not specified, the default behavior is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host. Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    resizePolicy:\n                      description: Resources resize policy for the container.\n                      items:\n                        description: ContainerResizePolicy represents resource resize policy for the container.\n                        properties:\n                          resourceName:\n                            description: 'Name of the resource to which this resource resize policy applies. Supported values: cpu, memory.'\n                            type: string\n                          restartPolicy:\n                            description: Restart policy to apply when specified resource is resized. If not specified, it defaults to NotRequired.\n                            type: string\n                        required:\n                        - resourceName\n                        - restartPolicy\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    resources:\n                      description: 'Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                      properties:\n                        claims:\n                          description: \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\"\n                          items:\n                            description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                            properties:\n                              name:\n                                description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\n                                type: string\n                            required:\n                            - name\n                            type: object\n                          type: array\n                          x-kubernetes-list-map-keys:\n                          - name\n                          x-kubernetes-list-type: map\n                        limits:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                        requests:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                      type: object\n                    securityContext:\n                      description: 'SecurityContext defines the security options the container should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/'\n                      properties:\n                        allowPrivilegeEscalation:\n                          description: 'AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN Note that this field cannot be set when spec.os.name is windows.'\n                          type: boolean\n                        capabilities:\n                          description: The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            add:\n                              description: Added capabilities\n                              items:\n                                description: Capability represent POSIX capabilities type\n                                type: string\n                              type: array\n                            drop:\n                              description: Removed capabilities\n                              items:\n                                description: Capability represent POSIX capabilities type\n                                type: string\n                              type: array\n                          type: object\n                        privileged:\n                          description: Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. Note that this field cannot be set when spec.os.name is windows.\n                          type: boolean\n                        procMount:\n                          description: procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. Note that this field cannot be set when spec.os.name is windows.\n                          type: string\n                        readOnlyRootFilesystem:\n                          description: Whether this container has a read-only root filesystem. Default is false. Note that this field cannot be set when spec.os.name is windows.\n                          type: boolean\n                        runAsGroup:\n                          description: The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        runAsNonRoot:\n                          description: Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\n                          type: boolean\n                        runAsUser:\n                          description: The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        seLinuxOptions:\n                          description: The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container.  May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            level:\n                              description: Level is SELinux level label that applies to the container.\n                              type: string\n                            role:\n                              description: Role is a SELinux role label that applies to the container.\n                              type: string\n                            type:\n                              description: Type is a SELinux type label that applies to the container.\n                              type: string\n                            user:\n                              description: User is a SELinux user label that applies to the container.\n                              type: string\n                          type: object\n                        seccompProfile:\n                          description: The seccomp options to use by this container. If seccomp options are provided at both the pod & container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            localhostProfile:\n                              description: localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is \"Localhost\".\n                              type: string\n                            type:\n                              description: \"type indicates which kind of seccomp profile will be applied. Valid options are: \\n Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.\"\n                              type: string\n                          required:\n                          - type\n                          type: object\n                        windowsOptions:\n                          description: The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux.\n                          properties:\n                            gmsaCredentialSpec:\n                              description: GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.\n                              type: string\n                            gmsaCredentialSpecName:\n                              description: GMSACredentialSpecName is the name of the GMSA credential spec to use.\n                              type: string\n                            hostProcess:\n                              description: HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).  In addition, if HostProcess is true then HostNetwork must also be set to true.\n                              type: boolean\n                            runAsUserName:\n                              description: The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\n                              type: string\n                          type: object\n                      type: object\n                    startupProbe:\n                      description: 'StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod''s lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \\n If this is not specified, the default behavior is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host. Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    stdin:\n                      description: Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false.\n                      type: boolean\n                    stdinOnce:\n                      description: Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false\n                      type: boolean\n                    terminationMessagePath:\n                      description: 'Optional: Path at which the file to which the container''s termination message will be written is mounted into the container''s filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.'\n                      type: string\n                    terminationMessagePolicy:\n                      description: Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.\n                      type: string\n                    tty:\n                      description: Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.\n                      type: boolean\n                    volumeDevices:\n                      description: volumeDevices is the list of block devices to be used by the container.\n                      items:\n                        description: volumeDevice describes a mapping of a raw block device within a container.\n                        properties:\n                          devicePath:\n                            description: devicePath is the path inside of the container that the device will be mapped to.\n                            type: string\n                          name:\n                            description: name must match the name of a persistentVolumeClaim in the pod\n                            type: string\n                        required:\n                        - devicePath\n                        - name\n                        type: object\n                      type: array\n                    volumeMounts:\n                      description: Pod volumes to mount into the container's filesystem. Cannot be updated.\n                      items:\n                        description: VolumeMount describes a mounting of a Volume within a container.\n                        properties:\n                          mountPath:\n                            description: Path within the container at which the volume should be mounted.  Must not contain ':'.\n                            type: string\n                          mountPropagation:\n                            description: mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10.\n                            type: string\n                          name:\n                            description: This must match the Name of a Volume.\n                            type: string\n                          readOnly:\n                            description: Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.\n                            type: boolean\n                          subPath:\n                            description: Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root).\n                            type: string\n                          subPathExpr:\n                            description: Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to \"\" (volume's root). SubPathExpr and SubPath are mutually exclusive.\n                            type: string\n                        required:\n                        - mountPath\n                        - name\n                        type: object\n                      type: array\n                    workingDir:\n                      description: Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.\n                      type: string\n                  required:\n                  - name\n                  type: object\n                type: array\n              externalUrl:\n                description: The external URL the Alertmanager instances will be available under. This is necessary to generate correct URLs. This is necessary if Alertmanager is not served from root of a DNS name.\n                type: string\n              forceEnableClusterMode:\n                description: ForceEnableClusterMode ensures Alertmanager does not deactivate the cluster mode when running with a single replica. Use case is e.g. spanning an Alertmanager cluster across Kubernetes clusters with a single replica in each.\n                type: boolean\n              hostAliases:\n                description: Pods' hostAliases configuration\n                items:\n                  description: HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the pod's hosts file.\n                  properties:\n                    hostnames:\n                      description: Hostnames for the above IP address.\n                      items:\n                        type: string\n                      type: array\n                    ip:\n                      description: IP address of the host file entry.\n                      type: string\n                  required:\n                  - hostnames\n                  - ip\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - ip\n                x-kubernetes-list-type: map\n              image:\n                description: Image if specified has precedence over baseImage, tag and sha combinations. Specifying the version is still necessary to ensure the Prometheus Operator knows what version of Alertmanager is being configured.\n                type: string\n              imagePullPolicy:\n                description: Image pull policy for the 'alertmanager', 'init-config-reloader' and 'config-reloader' containers. See https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy for more details.\n                enum:\n                - \"\"\n                - Always\n                - Never\n                - IfNotPresent\n                type: string\n              imagePullSecrets:\n                description: An optional list of references to secrets in the same namespace to use for pulling prometheus and alertmanager images from registries see http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod\n                items:\n                  description: LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.\n                  properties:\n                    name:\n                      description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                      type: string\n                  type: object\n                  x-kubernetes-map-type: atomic\n                type: array\n              initContainers:\n                description: 'InitContainers allows adding initContainers to the pod definition. Those can be used to e.g. fetch secrets for injection into the Alertmanager configuration from external sources. Any errors during the execution of an initContainer will lead to a restart of the Pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ InitContainers described here modify an operator generated init containers if they share the same name and modifications are done via a strategic merge patch. The current init container name is: `init-config-reloader`. Overriding init containers is entirely outside the scope of what the maintainers will support and by doing so, you accept that this behaviour may break at any time without notice.'\n                items:\n                  description: A single application container that you want to run within a pod.\n                  properties:\n                    args:\n                      description: 'Arguments to the entrypoint. The container image''s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    command:\n                      description: 'Entrypoint array. Not executed within a shell. The container image''s ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    env:\n                      description: List of environment variables to set in the container. Cannot be updated.\n                      items:\n                        description: EnvVar represents an environment variable present in a Container.\n                        properties:\n                          name:\n                            description: Name of the environment variable. Must be a C_IDENTIFIER.\n                            type: string\n                          value:\n                            description: 'Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to \"\".'\n                            type: string\n                          valueFrom:\n                            description: Source for the environment variable's value. Cannot be used if value is not empty.\n                            properties:\n                              configMapKeyRef:\n                                description: Selects a key of a ConfigMap.\n                                properties:\n                                  key:\n                                    description: The key to select.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the ConfigMap or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              fieldRef:\n                                description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels[''<KEY>'']`, `metadata.annotations[''<KEY>'']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.'\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              resourceFieldRef:\n                                description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.'\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes, optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              secretKeyRef:\n                                description: Selects a key of a secret in the pod's namespace\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            type: object\n                        required:\n                        - name\n                        type: object\n                      type: array\n                    envFrom:\n                      description: List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.\n                      items:\n                        description: EnvFromSource represents the source of a set of ConfigMaps\n                        properties:\n                          configMapRef:\n                            description: The ConfigMap to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          prefix:\n                            description: An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\n                            type: string\n                          secretRef:\n                            description: The Secret to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      type: array\n                    image:\n                      description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.'\n                      type: string\n                    imagePullPolicy:\n                      description: 'Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images'\n                      type: string\n                    lifecycle:\n                      description: Actions that the management system should take in response to container lifecycle events. Cannot be updated.\n                      properties:\n                        postStart:\n                          description: 'PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request. HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                        preStop:\n                          description: 'PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The Pod''s termination grace period countdown begins before the PreStop hook is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod''s termination grace period (unless delayed by finalizers). Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request. HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                      type: object\n                    livenessProbe:\n                      description: 'Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \\n If this is not specified, the default behavior is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host. Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    name:\n                      description: Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated.\n                      type: string\n                    ports:\n                      description: List of ports to expose from the container. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Modifying this array with strategic merge patch may corrupt the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255. Cannot be updated.\n                      items:\n                        description: ContainerPort represents a network port in a single container.\n                        properties:\n                          containerPort:\n                            description: Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536.\n                            format: int32\n                            type: integer\n                          hostIP:\n                            description: What host IP to bind the external port to.\n                            type: string\n                          hostPort:\n                            description: Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.\n                            format: int32\n                            type: integer\n                          name:\n                            description: If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.\n                            type: string\n                          protocol:\n                            default: TCP\n                            description: Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".\n                            type: string\n                        required:\n                        - containerPort\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - containerPort\n                      - protocol\n                      x-kubernetes-list-type: map\n                    readinessProbe:\n                      description: 'Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \\n If this is not specified, the default behavior is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host. Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    resizePolicy:\n                      description: Resources resize policy for the container.\n                      items:\n                        description: ContainerResizePolicy represents resource resize policy for the container.\n                        properties:\n                          resourceName:\n                            description: 'Name of the resource to which this resource resize policy applies. Supported values: cpu, memory.'\n                            type: string\n                          restartPolicy:\n                            description: Restart policy to apply when specified resource is resized. If not specified, it defaults to NotRequired.\n                            type: string\n                        required:\n                        - resourceName\n                        - restartPolicy\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    resources:\n                      description: 'Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                      properties:\n                        claims:\n                          description: \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\"\n                          items:\n                            description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                            properties:\n                              name:\n                                description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\n                                type: string\n                            required:\n                            - name\n                            type: object\n                          type: array\n                          x-kubernetes-list-map-keys:\n                          - name\n                          x-kubernetes-list-type: map\n                        limits:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                        requests:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                      type: object\n                    securityContext:\n                      description: 'SecurityContext defines the security options the container should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/'\n                      properties:\n                        allowPrivilegeEscalation:\n                          description: 'AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN Note that this field cannot be set when spec.os.name is windows.'\n                          type: boolean\n                        capabilities:\n                          description: The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            add:\n                              description: Added capabilities\n                              items:\n                                description: Capability represent POSIX capabilities type\n                                type: string\n                              type: array\n                            drop:\n                              description: Removed capabilities\n                              items:\n                                description: Capability represent POSIX capabilities type\n                                type: string\n                              type: array\n                          type: object\n                        privileged:\n                          description: Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. Note that this field cannot be set when spec.os.name is windows.\n                          type: boolean\n                        procMount:\n                          description: procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. Note that this field cannot be set when spec.os.name is windows.\n                          type: string\n                        readOnlyRootFilesystem:\n                          description: Whether this container has a read-only root filesystem. Default is false. Note that this field cannot be set when spec.os.name is windows.\n                          type: boolean\n                        runAsGroup:\n                          description: The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        runAsNonRoot:\n                          description: Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\n                          type: boolean\n                        runAsUser:\n                          description: The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        seLinuxOptions:\n                          description: The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container.  May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            level:\n                              description: Level is SELinux level label that applies to the container.\n                              type: string\n                            role:\n                              description: Role is a SELinux role label that applies to the container.\n                              type: string\n                            type:\n                              description: Type is a SELinux type label that applies to the container.\n                              type: string\n                            user:\n                              description: User is a SELinux user label that applies to the container.\n                              type: string\n                          type: object\n                        seccompProfile:\n                          description: The seccomp options to use by this container. If seccomp options are provided at both the pod & container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            localhostProfile:\n                              description: localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is \"Localhost\".\n                              type: string\n                            type:\n                              description: \"type indicates which kind of seccomp profile will be applied. Valid options are: \\n Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.\"\n                              type: string\n                          required:\n                          - type\n                          type: object\n                        windowsOptions:\n                          description: The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux.\n                          properties:\n                            gmsaCredentialSpec:\n                              description: GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.\n                              type: string\n                            gmsaCredentialSpecName:\n                              description: GMSACredentialSpecName is the name of the GMSA credential spec to use.\n                              type: string\n                            hostProcess:\n                              description: HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).  In addition, if HostProcess is true then HostNetwork must also be set to true.\n                              type: boolean\n                            runAsUserName:\n                              description: The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\n                              type: string\n                          type: object\n                      type: object\n                    startupProbe:\n                      description: 'StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod''s lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \\n If this is not specified, the default behavior is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host. Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    stdin:\n                      description: Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false.\n                      type: boolean\n                    stdinOnce:\n                      description: Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false\n                      type: boolean\n                    terminationMessagePath:\n                      description: 'Optional: Path at which the file to which the container''s termination message will be written is mounted into the container''s filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.'\n                      type: string\n                    terminationMessagePolicy:\n                      description: Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.\n                      type: string\n                    tty:\n                      description: Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.\n                      type: boolean\n                    volumeDevices:\n                      description: volumeDevices is the list of block devices to be used by the container.\n                      items:\n                        description: volumeDevice describes a mapping of a raw block device within a container.\n                        properties:\n                          devicePath:\n                            description: devicePath is the path inside of the container that the device will be mapped to.\n                            type: string\n                          name:\n                            description: name must match the name of a persistentVolumeClaim in the pod\n                            type: string\n                        required:\n                        - devicePath\n                        - name\n                        type: object\n                      type: array\n                    volumeMounts:\n                      description: Pod volumes to mount into the container's filesystem. Cannot be updated.\n                      items:\n                        description: VolumeMount describes a mounting of a Volume within a container.\n                        properties:\n                          mountPath:\n                            description: Path within the container at which the volume should be mounted.  Must not contain ':'.\n                            type: string\n                          mountPropagation:\n                            description: mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10.\n                            type: string\n                          name:\n                            description: This must match the Name of a Volume.\n                            type: string\n                          readOnly:\n                            description: Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.\n                            type: boolean\n                          subPath:\n                            description: Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root).\n                            type: string\n                          subPathExpr:\n                            description: Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to \"\" (volume's root). SubPathExpr and SubPath are mutually exclusive.\n                            type: string\n                        required:\n                        - mountPath\n                        - name\n                        type: object\n                      type: array\n                    workingDir:\n                      description: Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.\n                      type: string\n                  required:\n                  - name\n                  type: object\n                type: array\n              listenLocal:\n                description: ListenLocal makes the Alertmanager server listen on loopback, so that it does not bind against the Pod IP. Note this is only for the Alertmanager UI, not the gossip communication.\n                type: boolean\n              logFormat:\n                description: Log format for Alertmanager to be configured with.\n                enum:\n                - \"\"\n                - logfmt\n                - json\n                type: string\n              logLevel:\n                description: Log level for Alertmanager to be configured with.\n                enum:\n                - \"\"\n                - debug\n                - info\n                - warn\n                - error\n                type: string\n              minReadySeconds:\n                description: Minimum number of seconds for which a newly created pod should be ready without any of its container crashing for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready) This is an alpha field from kubernetes 1.22 until 1.24 which requires enabling the StatefulSetMinReadySeconds feature gate.\n                format: int32\n                type: integer\n              nodeSelector:\n                additionalProperties:\n                  type: string\n                description: Define which Nodes the Pods are scheduled on.\n                type: object\n              paused:\n                description: If set to true all actions on the underlying managed objects are not goint to be performed, except for delete actions.\n                type: boolean\n              podMetadata:\n                description: PodMetadata configures Labels and Annotations which are propagated to the alertmanager pods.\n                properties:\n                  annotations:\n                    additionalProperties:\n                      type: string\n                    description: 'Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations'\n                    type: object\n                  labels:\n                    additionalProperties:\n                      type: string\n                    description: 'Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels'\n                    type: object\n                  name:\n                    description: 'Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names'\n                    type: string\n                type: object\n              portName:\n                default: web\n                description: Port name used for the pods and governing service. Defaults to `web`.\n                type: string\n              priorityClassName:\n                description: Priority class assigned to the Pods\n                type: string\n              replicas:\n                description: Size is the expected size of the alertmanager cluster. The controller will eventually make the size of the running cluster equal to the expected size.\n                format: int32\n                type: integer\n              resources:\n                description: Define resources requests and limits for single Pods.\n                properties:\n                  claims:\n                    description: \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\"\n                    items:\n                      description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                      properties:\n                        name:\n                          description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\n                          type: string\n                      required:\n                      - name\n                      type: object\n                    type: array\n                    x-kubernetes-list-map-keys:\n                    - name\n                    x-kubernetes-list-type: map\n                  limits:\n                    additionalProperties:\n                      anyOf:\n                      - type: integer\n                      - type: string\n                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                      x-kubernetes-int-or-string: true\n                    description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                    type: object\n                  requests:\n                    additionalProperties:\n                      anyOf:\n                      - type: integer\n                      - type: string\n                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                      x-kubernetes-int-or-string: true\n                    description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                    type: object\n                type: object\n              retention:\n                default: 120h\n                description: Time duration Alertmanager shall retain data for. Default is '120h', and must match the regular expression `[0-9]+(ms|s|m|h)` (milliseconds seconds minutes hours).\n                pattern: ^(0|(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              routePrefix:\n                description: The route prefix Alertmanager registers HTTP handlers for. This is useful, if using ExternalURL and a proxy is rewriting HTTP routes of a request, and the actual ExternalURL is still true, but the server serves requests under a different route prefix. For example for use with `kubectl proxy`.\n                type: string\n              secrets:\n                description: Secrets is a list of Secrets in the same namespace as the Alertmanager object, which shall be mounted into the Alertmanager Pods. Each Secret is added to the StatefulSet definition as a volume named `secret-<secret-name>`. The Secrets are mounted into `/etc/alertmanager/secrets/<secret-name>` in the 'alertmanager' container.\n                items:\n                  type: string\n                type: array\n              securityContext:\n                description: SecurityContext holds pod-level security attributes and common container settings. This defaults to the default PodSecurityContext.\n                properties:\n                  fsGroup:\n                    description: \"A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod: \\n 1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw---- \\n If unset, the Kubelet will not modify the ownership and permissions of any volume. Note that this field cannot be set when spec.os.name is windows.\"\n                    format: int64\n                    type: integer\n                  fsGroupChangePolicy:\n                    description: 'fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are \"OnRootMismatch\" and \"Always\". If not specified, \"Always\" is used. Note that this field cannot be set when spec.os.name is windows.'\n                    type: string\n                  runAsGroup:\n                    description: The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows.\n                    format: int64\n                    type: integer\n                  runAsNonRoot:\n                    description: Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\n                    type: boolean\n                  runAsUser:\n                    description: The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows.\n                    format: int64\n                    type: integer\n                  seLinuxOptions:\n                    description: The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container.  May also be set in SecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows.\n                    properties:\n                      level:\n                        description: Level is SELinux level label that applies to the container.\n                        type: string\n                      role:\n                        description: Role is a SELinux role label that applies to the container.\n                        type: string\n                      type:\n                        description: Type is a SELinux type label that applies to the container.\n                        type: string\n                      user:\n                        description: User is a SELinux user label that applies to the container.\n                        type: string\n                    type: object\n                  seccompProfile:\n                    description: The seccomp options to use by the containers in this pod. Note that this field cannot be set when spec.os.name is windows.\n                    properties:\n                      localhostProfile:\n                        description: localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is \"Localhost\".\n                        type: string\n                      type:\n                        description: \"type indicates which kind of seccomp profile will be applied. Valid options are: \\n Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.\"\n                        type: string\n                    required:\n                    - type\n                    type: object\n                  supplementalGroups:\n                    description: A list of groups applied to the first process run in each container, in addition to the container's primary GID, the fsGroup (if specified), and group memberships defined in the container image for the uid of the container process. If unspecified, no additional groups are added to any container. Note that group memberships defined in the container image for the uid of the container process are still effective, even if they are not included in this list. Note that this field cannot be set when spec.os.name is windows.\n                    items:\n                      format: int64\n                      type: integer\n                    type: array\n                  sysctls:\n                    description: Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch. Note that this field cannot be set when spec.os.name is windows.\n                    items:\n                      description: Sysctl defines a kernel parameter to be set\n                      properties:\n                        name:\n                          description: Name of a property to set\n                          type: string\n                        value:\n                          description: Value of a property to set\n                          type: string\n                      required:\n                      - name\n                      - value\n                      type: object\n                    type: array\n                  windowsOptions:\n                    description: The Windows specific settings applied to all containers. If unspecified, the options within a container's SecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux.\n                    properties:\n                      gmsaCredentialSpec:\n                        description: GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.\n                        type: string\n                      gmsaCredentialSpecName:\n                        description: GMSACredentialSpecName is the name of the GMSA credential spec to use.\n                        type: string\n                      hostProcess:\n                        description: HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).  In addition, if HostProcess is true then HostNetwork must also be set to true.\n                        type: boolean\n                      runAsUserName:\n                        description: The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\n                        type: string\n                    type: object\n                type: object\n              serviceAccountName:\n                description: ServiceAccountName is the name of the ServiceAccount to use to run the Prometheus Pods.\n                type: string\n              sha:\n                description: 'SHA of Alertmanager container image to be deployed. Defaults to the value of `version`. Similar to a tag, but the SHA explicitly deploys an immutable container image. Version and Tag are ignored if SHA is set. Deprecated: use ''image'' instead.  The image digest can be specified as part of the image URL.'\n                type: string\n              storage:\n                description: Storage is the definition of how storage will be used by the Alertmanager instances.\n                properties:\n                  disableMountSubPath:\n                    description: '*Deprecated: subPath usage will be removed in a future release.*'\n                    type: boolean\n                  emptyDir:\n                    description: 'EmptyDirVolumeSource to be used by the StatefulSet. If specified, it takes precedence over `ephemeral` and `volumeClaimTemplate`. More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir'\n                    properties:\n                      medium:\n                        description: 'medium represents what type of storage medium should back this directory. The default is \"\" which means to use the node''s default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                        type: string\n                      sizeLimit:\n                        anyOf:\n                        - type: integer\n                        - type: string\n                        description: 'sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                        x-kubernetes-int-or-string: true\n                    type: object\n                  ephemeral:\n                    description: 'EphemeralVolumeSource to be used by the StatefulSet. This is a beta field in k8s 1.21 and GA in 1.15. For lower versions, starting with k8s 1.19, it requires enabling the GenericEphemeralVolume feature gate. More info: https://kubernetes.io/docs/concepts/storage/ephemeral-volumes/#generic-ephemeral-volumes'\n                    properties:\n                      volumeClaimTemplate:\n                        description: \"Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod.  The name of the PVC will be `<pod name>-<volume name>` where `<volume name>` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long). \\n An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. \\n This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. \\n Required, must not be nil.\"\n                        properties:\n                          metadata:\n                            description: May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.\n                            type: object\n                          spec:\n                            description: The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.\n                            properties:\n                              accessModes:\n                                description: 'accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                                items:\n                                  type: string\n                                type: array\n                              dataSource:\n                                description: 'dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.'\n                                properties:\n                                  apiGroup:\n                                    description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.\n                                    type: string\n                                  kind:\n                                    description: Kind is the type of resource being referenced\n                                    type: string\n                                  name:\n                                    description: Name is the name of resource being referenced\n                                    type: string\n                                required:\n                                - kind\n                                - name\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              dataSourceRef:\n                                description: 'dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn''t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn''t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.'\n                                properties:\n                                  apiGroup:\n                                    description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.\n                                    type: string\n                                  kind:\n                                    description: Kind is the type of resource being referenced\n                                    type: string\n                                  name:\n                                    description: Name is the name of resource being referenced\n                                    type: string\n                                  namespace:\n                                    description: Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\n                                    type: string\n                                required:\n                                - kind\n                                - name\n                                type: object\n                              resources:\n                                description: 'resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'\n                                properties:\n                                  claims:\n                                    description: \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\"\n                                    items:\n                                      description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                                      properties:\n                                        name:\n                                          description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\n                                          type: string\n                                      required:\n                                      - name\n                                      type: object\n                                    type: array\n                                    x-kubernetes-list-map-keys:\n                                    - name\n                                    x-kubernetes-list-type: map\n                                  limits:\n                                    additionalProperties:\n                                      anyOf:\n                                      - type: integer\n                                      - type: string\n                                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                      x-kubernetes-int-or-string: true\n                                    description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                    type: object\n                                  requests:\n                                    additionalProperties:\n                                      anyOf:\n                                      - type: integer\n                                      - type: string\n                                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                      x-kubernetes-int-or-string: true\n                                    description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                    type: object\n                                type: object\n                              selector:\n                                description: selector is a label query over volumes to consider for binding.\n                                properties:\n                                  matchExpressions:\n                                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                    items:\n                                      description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                      properties:\n                                        key:\n                                          description: key is the label key that the selector applies to.\n                                          type: string\n                                        operator:\n                                          description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                          type: string\n                                        values:\n                                          description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                          items:\n                                            type: string\n                                          type: array\n                                      required:\n                                      - key\n                                      - operator\n                                      type: object\n                                    type: array\n                                  matchLabels:\n                                    additionalProperties:\n                                      type: string\n                                    description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                    type: object\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              storageClassName:\n                                description: 'storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'\n                                type: string\n                              volumeMode:\n                                description: volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.\n                                type: string\n                              volumeName:\n                                description: volumeName is the binding reference to the PersistentVolume backing this claim.\n                                type: string\n                            type: object\n                        required:\n                        - spec\n                        type: object\n                    type: object\n                  volumeClaimTemplate:\n                    description: Defines the PVC spec to be used by the Prometheus StatefulSets. The easiest way to use a volume that cannot be automatically provisioned is to use a label selector alongside manually created PersistentVolumes.\n                    properties:\n                      apiVersion:\n                        description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n                        type: string\n                      kind:\n                        description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n                        type: string\n                      metadata:\n                        description: EmbeddedMetadata contains metadata relevant to an EmbeddedResource.\n                        properties:\n                          annotations:\n                            additionalProperties:\n                              type: string\n                            description: 'Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations'\n                            type: object\n                          labels:\n                            additionalProperties:\n                              type: string\n                            description: 'Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels'\n                            type: object\n                          name:\n                            description: 'Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names'\n                            type: string\n                        type: object\n                      spec:\n                        description: 'Defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'\n                        properties:\n                          accessModes:\n                            description: 'accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                            items:\n                              type: string\n                            type: array\n                          dataSource:\n                            description: 'dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.'\n                            properties:\n                              apiGroup:\n                                description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.\n                                type: string\n                              kind:\n                                description: Kind is the type of resource being referenced\n                                type: string\n                              name:\n                                description: Name is the name of resource being referenced\n                                type: string\n                            required:\n                            - kind\n                            - name\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          dataSourceRef:\n                            description: 'dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn''t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn''t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.'\n                            properties:\n                              apiGroup:\n                                description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.\n                                type: string\n                              kind:\n                                description: Kind is the type of resource being referenced\n                                type: string\n                              name:\n                                description: Name is the name of resource being referenced\n                                type: string\n                              namespace:\n                                description: Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\n                                type: string\n                            required:\n                            - kind\n                            - name\n                            type: object\n                          resources:\n                            description: 'resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'\n                            properties:\n                              claims:\n                                description: \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\"\n                                items:\n                                  description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                                  properties:\n                                    name:\n                                      description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\n                                      type: string\n                                  required:\n                                  - name\n                                  type: object\n                                type: array\n                                x-kubernetes-list-map-keys:\n                                - name\n                                x-kubernetes-list-type: map\n                              limits:\n                                additionalProperties:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                  x-kubernetes-int-or-string: true\n                                description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                type: object\n                              requests:\n                                additionalProperties:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                  x-kubernetes-int-or-string: true\n                                description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                type: object\n                            type: object\n                          selector:\n                            description: selector is a label query over volumes to consider for binding.\n                            properties:\n                              matchExpressions:\n                                description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                items:\n                                  description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                  properties:\n                                    key:\n                                      description: key is the label key that the selector applies to.\n                                      type: string\n                                    operator:\n                                      description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                      type: string\n                                    values:\n                                      description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                      items:\n                                        type: string\n                                      type: array\n                                  required:\n                                  - key\n                                  - operator\n                                  type: object\n                                type: array\n                              matchLabels:\n                                additionalProperties:\n                                  type: string\n                                description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                type: object\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          storageClassName:\n                            description: 'storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'\n                            type: string\n                          volumeMode:\n                            description: volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.\n                            type: string\n                          volumeName:\n                            description: volumeName is the binding reference to the PersistentVolume backing this claim.\n                            type: string\n                        type: object\n                      status:\n                        description: '*Deprecated: this field is never set.*'\n                        properties:\n                          accessModes:\n                            description: 'accessModes contains the actual access modes the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                            items:\n                              type: string\n                            type: array\n                          allocatedResources:\n                            additionalProperties:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                              x-kubernetes-int-or-string: true\n                            description: allocatedResources is the storage resource within AllocatedResources tracks the capacity allocated to a PVC. It may be larger than the actual capacity when a volume expansion operation is requested. For storage quota, the larger value from allocatedResources and PVC.spec.resources is used. If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation. If a volume expansion capacity request is lowered, allocatedResources is only lowered if there are no expansion operations in progress and if the actual volume capacity is equal or lower than the requested capacity. This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.\n                            type: object\n                          capacity:\n                            additionalProperties:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                              x-kubernetes-int-or-string: true\n                            description: capacity represents the actual resources of the underlying volume.\n                            type: object\n                          conditions:\n                            description: conditions is the current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'.\n                            items:\n                              description: PersistentVolumeClaimCondition contains details about state of pvc\n                              properties:\n                                lastProbeTime:\n                                  description: lastProbeTime is the time we probed the condition.\n                                  format: date-time\n                                  type: string\n                                lastTransitionTime:\n                                  description: lastTransitionTime is the time the condition transitioned from one status to another.\n                                  format: date-time\n                                  type: string\n                                message:\n                                  description: message is the human-readable message indicating details about last transition.\n                                  type: string\n                                reason:\n                                  description: reason is a unique, this should be a short, machine understandable string that gives the reason for condition's last transition. If it reports \"ResizeStarted\" that means the underlying persistent volume is being resized.\n                                  type: string\n                                status:\n                                  type: string\n                                type:\n                                  description: PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type\n                                  type: string\n                              required:\n                              - status\n                              - type\n                              type: object\n                            type: array\n                          phase:\n                            description: phase represents the current phase of PersistentVolumeClaim.\n                            type: string\n                          resizeStatus:\n                            description: resizeStatus stores status of resize operation. ResizeStatus is not set by default but when expansion is complete resizeStatus is set to empty string by resize controller or kubelet. This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.\n                            type: string\n                        type: object\n                    type: object\n                type: object\n              tag:\n                description: 'Tag of Alertmanager container image to be deployed. Defaults to the value of `version`. Version is ignored if Tag is set. Deprecated: use ''image'' instead.  The image tag can be specified as part of the image URL.'\n                type: string\n              tolerations:\n                description: If specified, the pod's tolerations.\n                items:\n                  description: The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.\n                  properties:\n                    effect:\n                      description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\n                      type: string\n                    key:\n                      description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.\n                      type: string\n                    operator:\n                      description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.\n                      type: string\n                    tolerationSeconds:\n                      description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.\n                      format: int64\n                      type: integer\n                    value:\n                      description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.\n                      type: string\n                  type: object\n                type: array\n              topologySpreadConstraints:\n                description: If specified, the pod's topology spread constraints.\n                items:\n                  description: TopologySpreadConstraint specifies how to spread matching pods among the given topology.\n                  properties:\n                    labelSelector:\n                      description: LabelSelector is used to find matching pods. Pods that match this label selector are counted to determine the number of pods in their corresponding topology domain.\n                      properties:\n                        matchExpressions:\n                          description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                          items:\n                            description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                            properties:\n                              key:\n                                description: key is the label key that the selector applies to.\n                                type: string\n                              operator:\n                                description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                type: string\n                              values:\n                                description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                items:\n                                  type: string\n                                type: array\n                            required:\n                            - key\n                            - operator\n                            type: object\n                          type: array\n                        matchLabels:\n                          additionalProperties:\n                            type: string\n                          description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                          type: object\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    matchLabelKeys:\n                      description: \"MatchLabelKeys is a set of pod label keys to select the pods over which spreading will be calculated. The keys are used to lookup values from the incoming pod labels, those key-value labels are ANDed with labelSelector to select the group of existing pods over which spreading will be calculated for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. MatchLabelKeys cannot be set when LabelSelector isn't set. Keys that don't exist in the incoming pod labels will be ignored. A null or empty list means only match against labelSelector. \\n This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).\"\n                      items:\n                        type: string\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    maxSkew:\n                      description: 'MaxSkew describes the degree to which pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. The global minimum is the minimum number of matching pods in an eligible domain or zero if the number of eligible domains is less than MinDomains. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 2/2/1: In this case, the global minimum is 1. | zone1 | zone2 | zone3 | |  P P  |  P P  |   P   | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2; scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence to topologies that satisfy it. It''s a required field. Default value is 1 and 0 is not allowed.'\n                      format: int32\n                      type: integer\n                    minDomains:\n                      description: \"MinDomains indicates a minimum number of eligible domains. When the number of eligible domains with matching topology keys is less than minDomains, Pod Topology Spread treats \\\"global minimum\\\" as 0, and then the calculation of Skew is performed. And when the number of eligible domains with matching topology keys equals or greater than minDomains, this value has no effect on scheduling. As a result, when the number of eligible domains is less than minDomains, scheduler won't schedule more than maxSkew Pods to those domains. If value is nil, the constraint behaves as if MinDomains is equal to 1. Valid values are integers greater than 0. When value is not nil, WhenUnsatisfiable must be DoNotSchedule. \\n For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same labelSelector spread as 2/2/2: | zone1 | zone2 | zone3 | |  P P  |  P P  |  P P  | The number of domains is less than 5(MinDomains), so \\\"global minimum\\\" is treated as 0. In this situation, new pod with the same labelSelector cannot be scheduled, because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones, it will violate MaxSkew. \\n This is a beta field and requires the MinDomainsInPodTopologySpread feature gate to be enabled (enabled by default).\"\n                      format: int32\n                      type: integer\n                    nodeAffinityPolicy:\n                      description: \"NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector when calculating pod topology spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations. \\n If this value is nil, the behavior is equivalent to the Honor policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\"\n                      type: string\n                    nodeTaintsPolicy:\n                      description: \"NodeTaintsPolicy indicates how we will treat node taints when calculating pod topology spread skew. Options are: - Honor: nodes without taints, along with tainted nodes for which the incoming pod has a toleration, are included. - Ignore: node taints are ignored. All nodes are included. \\n If this value is nil, the behavior is equivalent to the Ignore policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\"\n                      type: string\n                    topologyKey:\n                      description: TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each <key, value> as a \"bucket\", and try to put balanced number of pods into each bucket. We define a domain as a particular instance of a topology. Also, we define an eligible domain as a domain whose nodes meet the requirements of nodeAffinityPolicy and nodeTaintsPolicy. e.g. If TopologyKey is \"kubernetes.io/hostname\", each Node is a domain of that topology. And, if TopologyKey is \"topology.kubernetes.io/zone\", each zone is a domain of that topology. It's a required field.\n                      type: string\n                    whenUnsatisfiable:\n                      description: 'WhenUnsatisfiable indicates how to deal with a pod if it doesn''t satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location, but giving higher precedence to topologies that would help reduce the skew. A constraint is considered \"Unsatisfiable\" for an incoming pod if and only if every possible node assignment for that pod would violate \"MaxSkew\" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P |   P   |   P   | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won''t make it *more* imbalanced. It''s a required field.'\n                      type: string\n                  required:\n                  - maxSkew\n                  - topologyKey\n                  - whenUnsatisfiable\n                  type: object\n                type: array\n              version:\n                description: Version the cluster should be on.\n                type: string\n              volumeMounts:\n                description: VolumeMounts allows configuration of additional VolumeMounts on the output StatefulSet definition. VolumeMounts specified will be appended to other VolumeMounts in the alertmanager container, that are generated as a result of StorageSpec objects.\n                items:\n                  description: VolumeMount describes a mounting of a Volume within a container.\n                  properties:\n                    mountPath:\n                      description: Path within the container at which the volume should be mounted.  Must not contain ':'.\n                      type: string\n                    mountPropagation:\n                      description: mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10.\n                      type: string\n                    name:\n                      description: This must match the Name of a Volume.\n                      type: string\n                    readOnly:\n                      description: Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.\n                      type: boolean\n                    subPath:\n                      description: Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root).\n                      type: string\n                    subPathExpr:\n                      description: Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to \"\" (volume's root). SubPathExpr and SubPath are mutually exclusive.\n                      type: string\n                  required:\n                  - mountPath\n                  - name\n                  type: object\n                type: array\n              volumes:\n                description: Volumes allows configuration of additional volumes on the output StatefulSet definition. Volumes specified will be appended to other volumes that are generated as a result of StorageSpec objects.\n                items:\n                  description: Volume represents a named volume in a pod that may be accessed by any container in the pod.\n                  properties:\n                    awsElasticBlockStore:\n                      description: 'awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet''s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore TODO: how do we prevent errors in the filesystem from compromising the machine'\n                          type: string\n                        partition:\n                          description: 'partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as \"1\". Similarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty).'\n                          format: int32\n                          type: integer\n                        readOnly:\n                          description: 'readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'\n                          type: boolean\n                        volumeID:\n                          description: 'volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    azureDisk:\n                      description: azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\n                      properties:\n                        cachingMode:\n                          description: 'cachingMode is the Host Caching mode: None, Read Only, Read Write.'\n                          type: string\n                        diskName:\n                          description: diskName is the Name of the data disk in the blob storage\n                          type: string\n                        diskURI:\n                          description: diskURI is the URI of data disk in the blob storage\n                          type: string\n                        fsType:\n                          description: fsType is Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                          type: string\n                        kind:\n                          description: 'kind expected values are Shared: multiple blob disks per storage account  Dedicated: single blob disk per storage account  Managed: azure managed data disk (only in managed availability set). defaults to shared'\n                          type: string\n                        readOnly:\n                          description: readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                      required:\n                      - diskName\n                      - diskURI\n                      type: object\n                    azureFile:\n                      description: azureFile represents an Azure File Service mount on the host and bind mount to the pod.\n                      properties:\n                        readOnly:\n                          description: readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretName:\n                          description: secretName is the  name of secret that contains Azure Storage Account Name and Key\n                          type: string\n                        shareName:\n                          description: shareName is the azure share Name\n                          type: string\n                      required:\n                      - secretName\n                      - shareName\n                      type: object\n                    cephfs:\n                      description: cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\n                      properties:\n                        monitors:\n                          description: 'monitors is Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          items:\n                            type: string\n                          type: array\n                        path:\n                          description: 'path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /'\n                          type: string\n                        readOnly:\n                          description: 'readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          type: boolean\n                        secretFile:\n                          description: 'secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          type: string\n                        secretRef:\n                          description: 'secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        user:\n                          description: 'user is optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          type: string\n                      required:\n                      - monitors\n                      type: object\n                    cinder:\n                      description: 'cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                          type: string\n                        readOnly:\n                          description: 'readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                          type: boolean\n                        secretRef:\n                          description: 'secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        volumeID:\n                          description: 'volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    configMap:\n                      description: configMap represents a configMap that should populate this volume\n                      properties:\n                        defaultMode:\n                          description: 'defaultMode is optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'\n                          format: int32\n                          type: integer\n                        items:\n                          description: items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\n                          items:\n                            description: Maps a string key to a path within a volume.\n                            properties:\n                              key:\n                                description: key is the key to project.\n                                type: string\n                              mode:\n                                description: 'mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'\n                                format: int32\n                                type: integer\n                              path:\n                                description: path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.\n                                type: string\n                            required:\n                            - key\n                            - path\n                            type: object\n                          type: array\n                        name:\n                          description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                          type: string\n                        optional:\n                          description: optional specify whether the ConfigMap or its keys must be defined\n                          type: boolean\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    csi:\n                      description: csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\n                      properties:\n                        driver:\n                          description: driver is the name of the CSI driver that handles this volume. Consult with your admin for the correct name as registered in the cluster.\n                          type: string\n                        fsType:\n                          description: fsType to mount. Ex. \"ext4\", \"xfs\", \"ntfs\". If not provided, the empty value is passed to the associated CSI driver which will determine the default filesystem to apply.\n                          type: string\n                        nodePublishSecretRef:\n                          description: nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and  may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed.\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        readOnly:\n                          description: readOnly specifies a read-only configuration for the volume. Defaults to false (read/write).\n                          type: boolean\n                        volumeAttributes:\n                          additionalProperties:\n                            type: string\n                          description: volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values.\n                          type: object\n                      required:\n                      - driver\n                      type: object\n                    downwardAPI:\n                      description: downwardAPI represents downward API about the pod that should populate this volume\n                      properties:\n                        defaultMode:\n                          description: 'Optional: mode bits to use on created files by default. Must be a Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'\n                          format: int32\n                          type: integer\n                        items:\n                          description: Items is a list of downward API volume file\n                          items:\n                            description: DownwardAPIVolumeFile represents information to create the file containing the pod field\n                            properties:\n                              fieldRef:\n                                description: 'Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.'\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              mode:\n                                description: 'Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'\n                                format: int32\n                                type: integer\n                              path:\n                                description: 'Required: Path is  the relative path name of the file to be created. Must not be absolute or contain the ''..'' path. Must be utf-8 encoded. The first item of the relative path must not start with ''..'''\n                                type: string\n                              resourceFieldRef:\n                                description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.'\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes, optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            required:\n                            - path\n                            type: object\n                          type: array\n                      type: object\n                    emptyDir:\n                      description: 'emptyDir represents a temporary directory that shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                      properties:\n                        medium:\n                          description: 'medium represents what type of storage medium should back this directory. The default is \"\" which means to use the node''s default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                          type: string\n                        sizeLimit:\n                          anyOf:\n                          - type: integer\n                          - type: string\n                          description: 'sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                          pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                          x-kubernetes-int-or-string: true\n                      type: object\n                    ephemeral:\n                      description: \"ephemeral represents a volume that is handled by a cluster storage driver. The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed. \\n Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). \\n Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. \\n Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. \\n A pod can use both types of ephemeral volumes and persistent volumes at the same time.\"\n                      properties:\n                        volumeClaimTemplate:\n                          description: \"Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod.  The name of the PVC will be `<pod name>-<volume name>` where `<volume name>` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long). \\n An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. \\n This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. \\n Required, must not be nil.\"\n                          properties:\n                            metadata:\n                              description: May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.\n                              type: object\n                            spec:\n                              description: The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.\n                              properties:\n                                accessModes:\n                                  description: 'accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                                  items:\n                                    type: string\n                                  type: array\n                                dataSource:\n                                  description: 'dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.'\n                                  properties:\n                                    apiGroup:\n                                      description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.\n                                      type: string\n                                    kind:\n                                      description: Kind is the type of resource being referenced\n                                      type: string\n                                    name:\n                                      description: Name is the name of resource being referenced\n                                      type: string\n                                  required:\n                                  - kind\n                                  - name\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                dataSourceRef:\n                                  description: 'dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn''t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn''t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.'\n                                  properties:\n                                    apiGroup:\n                                      description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.\n                                      type: string\n                                    kind:\n                                      description: Kind is the type of resource being referenced\n                                      type: string\n                                    name:\n                                      description: Name is the name of resource being referenced\n                                      type: string\n                                    namespace:\n                                      description: Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\n                                      type: string\n                                  required:\n                                  - kind\n                                  - name\n                                  type: object\n                                resources:\n                                  description: 'resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'\n                                  properties:\n                                    claims:\n                                      description: \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\"\n                                      items:\n                                        description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                                        properties:\n                                          name:\n                                            description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\n                                            type: string\n                                        required:\n                                        - name\n                                        type: object\n                                      type: array\n                                      x-kubernetes-list-map-keys:\n                                      - name\n                                      x-kubernetes-list-type: map\n                                    limits:\n                                      additionalProperties:\n                                        anyOf:\n                                        - type: integer\n                                        - type: string\n                                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                        x-kubernetes-int-or-string: true\n                                      description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                      type: object\n                                    requests:\n                                      additionalProperties:\n                                        anyOf:\n                                        - type: integer\n                                        - type: string\n                                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                        x-kubernetes-int-or-string: true\n                                      description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                      type: object\n                                  type: object\n                                selector:\n                                  description: selector is a label query over volumes to consider for binding.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                      items:\n                                        description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                storageClassName:\n                                  description: 'storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'\n                                  type: string\n                                volumeMode:\n                                  description: volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.\n                                  type: string\n                                volumeName:\n                                  description: volumeName is the binding reference to the PersistentVolume backing this claim.\n                                  type: string\n                              type: object\n                          required:\n                          - spec\n                          type: object\n                      type: object\n                    fc:\n                      description: fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. TODO: how do we prevent errors in the filesystem from compromising the machine'\n                          type: string\n                        lun:\n                          description: 'lun is Optional: FC target lun number'\n                          format: int32\n                          type: integer\n                        readOnly:\n                          description: 'readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.'\n                          type: boolean\n                        targetWWNs:\n                          description: 'targetWWNs is Optional: FC target worldwide names (WWNs)'\n                          items:\n                            type: string\n                          type: array\n                        wwids:\n                          description: 'wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.'\n                          items:\n                            type: string\n                          type: array\n                      type: object\n                    flexVolume:\n                      description: flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.\n                      properties:\n                        driver:\n                          description: driver is the name of the driver to use for this volume.\n                          type: string\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". The default filesystem depends on FlexVolume script.\n                          type: string\n                        options:\n                          additionalProperties:\n                            type: string\n                          description: 'options is Optional: this field holds extra command options if any.'\n                          type: object\n                        readOnly:\n                          description: 'readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.'\n                          type: boolean\n                        secretRef:\n                          description: 'secretRef is Optional: secretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts.'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      required:\n                      - driver\n                      type: object\n                    flocker:\n                      description: flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\n                      properties:\n                        datasetName:\n                          description: datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated\n                          type: string\n                        datasetUUID:\n                          description: datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\n                          type: string\n                      type: object\n                    gcePersistentDisk:\n                      description: 'gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet''s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                      properties:\n                        fsType:\n                          description: 'fsType is filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk TODO: how do we prevent errors in the filesystem from compromising the machine'\n                          type: string\n                        partition:\n                          description: 'partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as \"1\". Similarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                          format: int32\n                          type: integer\n                        pdName:\n                          description: 'pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                          type: boolean\n                      required:\n                      - pdName\n                      type: object\n                    gitRepo:\n                      description: 'gitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod''s container.'\n                      properties:\n                        directory:\n                          description: directory is the target directory name. Must not contain or start with '..'.  If '.' is supplied, the volume directory will be the git repository.  Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name.\n                          type: string\n                        repository:\n                          description: repository is the URL\n                          type: string\n                        revision:\n                          description: revision is the commit hash for the specified revision.\n                          type: string\n                      required:\n                      - repository\n                      type: object\n                    glusterfs:\n                      description: 'glusterfs represents a Glusterfs mount on the host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md'\n                      properties:\n                        endpoints:\n                          description: 'endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'\n                          type: string\n                        path:\n                          description: 'path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'\n                          type: boolean\n                      required:\n                      - endpoints\n                      - path\n                      type: object\n                    hostPath:\n                      description: 'hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath --- TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write.'\n                      properties:\n                        path:\n                          description: 'path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'\n                          type: string\n                        type:\n                          description: 'type for HostPath Volume Defaults to \"\" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'\n                          type: string\n                      required:\n                      - path\n                      type: object\n                    iscsi:\n                      description: 'iscsi represents an ISCSI Disk resource that is attached to a kubelet''s host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md'\n                      properties:\n                        chapAuthDiscovery:\n                          description: chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\n                          type: boolean\n                        chapAuthSession:\n                          description: chapAuthSession defines whether support iSCSI Session CHAP authentication\n                          type: boolean\n                        fsType:\n                          description: 'fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi TODO: how do we prevent errors in the filesystem from compromising the machine'\n                          type: string\n                        initiatorName:\n                          description: initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface <target portal>:<volume name> will be created for the connection.\n                          type: string\n                        iqn:\n                          description: iqn is the target iSCSI Qualified Name.\n                          type: string\n                        iscsiInterface:\n                          description: iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).\n                          type: string\n                        lun:\n                          description: lun represents iSCSI Target Lun number.\n                          format: int32\n                          type: integer\n                        portals:\n                          description: portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).\n                          items:\n                            type: string\n                          type: array\n                        readOnly:\n                          description: readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.\n                          type: boolean\n                        secretRef:\n                          description: secretRef is the CHAP Secret for iSCSI target and initiator authentication\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        targetPortal:\n                          description: targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).\n                          type: string\n                      required:\n                      - iqn\n                      - lun\n                      - targetPortal\n                      type: object\n                    name:\n                      description: 'name of the volume. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                      type: string\n                    nfs:\n                      description: 'nfs represents an NFS mount on the host that shares a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                      properties:\n                        path:\n                          description: 'path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                          type: boolean\n                        server:\n                          description: 'server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                          type: string\n                      required:\n                      - path\n                      - server\n                      type: object\n                    persistentVolumeClaim:\n                      description: 'persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'\n                      properties:\n                        claimName:\n                          description: 'claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'\n                          type: string\n                        readOnly:\n                          description: readOnly Will force the ReadOnly setting in VolumeMounts. Default false.\n                          type: boolean\n                      required:\n                      - claimName\n                      type: object\n                    photonPersistentDisk:\n                      description: photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\n                      properties:\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                          type: string\n                        pdID:\n                          description: pdID is the ID that identifies Photon Controller persistent disk\n                          type: string\n                      required:\n                      - pdID\n                      type: object\n                    portworxVolume:\n                      description: portworxVolume represents a portworx volume attached and mounted on kubelets host machine\n                      properties:\n                        fsType:\n                          description: fSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                          type: string\n                        readOnly:\n                          description: readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        volumeID:\n                          description: volumeID uniquely identifies a Portworx volume\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    projected:\n                      description: projected items for all in one resources secrets, configmaps, and downward API\n                      properties:\n                        defaultMode:\n                          description: defaultMode are the mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.\n                          format: int32\n                          type: integer\n                        sources:\n                          description: sources is the list of volume projections\n                          items:\n                            description: Projection that may be projected along with other supported volume types\n                            properties:\n                              configMap:\n                                description: configMap information about the configMap data to project\n                                properties:\n                                  items:\n                                    description: items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\n                                    items:\n                                      description: Maps a string key to a path within a volume.\n                                      properties:\n                                        key:\n                                          description: key is the key to project.\n                                          type: string\n                                        mode:\n                                          description: 'mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.\n                                          type: string\n                                      required:\n                                      - key\n                                      - path\n                                      type: object\n                                    type: array\n                                  name:\n                                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                    type: string\n                                  optional:\n                                    description: optional specify whether the ConfigMap or its keys must be defined\n                                    type: boolean\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              downwardAPI:\n                                description: downwardAPI information about the downwardAPI data to project\n                                properties:\n                                  items:\n                                    description: Items is a list of DownwardAPIVolume file\n                                    items:\n                                      description: DownwardAPIVolumeFile represents information to create the file containing the pod field\n                                      properties:\n                                        fieldRef:\n                                          description: 'Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.'\n                                          properties:\n                                            apiVersion:\n                                              description: Version of the schema the FieldPath is written in terms of, defaults to \"v1\".\n                                              type: string\n                                            fieldPath:\n                                              description: Path of the field to select in the specified API version.\n                                              type: string\n                                          required:\n                                          - fieldPath\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                        mode:\n                                          description: 'Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: 'Required: Path is  the relative path name of the file to be created. Must not be absolute or contain the ''..'' path. Must be utf-8 encoded. The first item of the relative path must not start with ''..'''\n                                          type: string\n                                        resourceFieldRef:\n                                          description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.'\n                                          properties:\n                                            containerName:\n                                              description: 'Container name: required for volumes, optional for env vars'\n                                              type: string\n                                            divisor:\n                                              anyOf:\n                                              - type: integer\n                                              - type: string\n                                              description: Specifies the output format of the exposed resources, defaults to \"1\"\n                                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                              x-kubernetes-int-or-string: true\n                                            resource:\n                                              description: 'Required: resource to select'\n                                              type: string\n                                          required:\n                                          - resource\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                      required:\n                                      - path\n                                      type: object\n                                    type: array\n                                type: object\n                              secret:\n                                description: secret information about the secret data to project\n                                properties:\n                                  items:\n                                    description: items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\n                                    items:\n                                      description: Maps a string key to a path within a volume.\n                                      properties:\n                                        key:\n                                          description: key is the key to project.\n                                          type: string\n                                        mode:\n                                          description: 'mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.\n                                          type: string\n                                      required:\n                                      - key\n                                      - path\n                                      type: object\n                                    type: array\n                                  name:\n                                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                    type: string\n                                  optional:\n                                    description: optional field specify whether the Secret or its key must be defined\n                                    type: boolean\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              serviceAccountToken:\n                                description: serviceAccountToken is information about the serviceAccountToken data to project\n                                properties:\n                                  audience:\n                                    description: audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver.\n                                    type: string\n                                  expirationSeconds:\n                                    description: expirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes.\n                                    format: int64\n                                    type: integer\n                                  path:\n                                    description: path is the path relative to the mount point of the file to project the token into.\n                                    type: string\n                                required:\n                                - path\n                                type: object\n                            type: object\n                          type: array\n                      type: object\n                    quobyte:\n                      description: quobyte represents a Quobyte mount on the host that shares a pod's lifetime\n                      properties:\n                        group:\n                          description: group to map volume access to Default is no group\n                          type: string\n                        readOnly:\n                          description: readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.\n                          type: boolean\n                        registry:\n                          description: registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes\n                          type: string\n                        tenant:\n                          description: tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin\n                          type: string\n                        user:\n                          description: user to map volume access to Defaults to serivceaccount user\n                          type: string\n                        volume:\n                          description: volume is a string that references an already created Quobyte volume by name.\n                          type: string\n                      required:\n                      - registry\n                      - volume\n                      type: object\n                    rbd:\n                      description: 'rbd represents a Rados Block Device mount on the host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md'\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd TODO: how do we prevent errors in the filesystem from compromising the machine'\n                          type: string\n                        image:\n                          description: 'image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                        keyring:\n                          description: 'keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                        monitors:\n                          description: 'monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          items:\n                            type: string\n                          type: array\n                        pool:\n                          description: 'pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: boolean\n                        secretRef:\n                          description: 'secretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        user:\n                          description: 'user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                      required:\n                      - image\n                      - monitors\n                      type: object\n                    scaleIO:\n                      description: scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\n                      properties:\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Default is \"xfs\".\n                          type: string\n                        gateway:\n                          description: gateway is the host address of the ScaleIO API Gateway.\n                          type: string\n                        protectionDomain:\n                          description: protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\n                          type: string\n                        readOnly:\n                          description: readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretRef:\n                          description: secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        sslEnabled:\n                          description: sslEnabled Flag enable/disable SSL communication with Gateway, default false\n                          type: boolean\n                        storageMode:\n                          description: storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.\n                          type: string\n                        storagePool:\n                          description: storagePool is the ScaleIO Storage Pool associated with the protection domain.\n                          type: string\n                        system:\n                          description: system is the name of the storage system as configured in ScaleIO.\n                          type: string\n                        volumeName:\n                          description: volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source.\n                          type: string\n                      required:\n                      - gateway\n                      - secretRef\n                      - system\n                      type: object\n                    secret:\n                      description: 'secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'\n                      properties:\n                        defaultMode:\n                          description: 'defaultMode is Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'\n                          format: int32\n                          type: integer\n                        items:\n                          description: items If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\n                          items:\n                            description: Maps a string key to a path within a volume.\n                            properties:\n                              key:\n                                description: key is the key to project.\n                                type: string\n                              mode:\n                                description: 'mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'\n                                format: int32\n                                type: integer\n                              path:\n                                description: path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.\n                                type: string\n                            required:\n                            - key\n                            - path\n                            type: object\n                          type: array\n                        optional:\n                          description: optional field specify whether the Secret or its keys must be defined\n                          type: boolean\n                        secretName:\n                          description: 'secretName is the name of the secret in the pod''s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'\n                          type: string\n                      type: object\n                    storageos:\n                      description: storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\n                      properties:\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                          type: string\n                        readOnly:\n                          description: readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretRef:\n                          description: secretRef specifies the secret to use for obtaining the StorageOS API credentials.  If not specified, default values will be attempted.\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        volumeName:\n                          description: volumeName is the human-readable name of the StorageOS volume.  Volume names are only unique within a namespace.\n                          type: string\n                        volumeNamespace:\n                          description: volumeNamespace specifies the scope of the volume within StorageOS.  If no namespace is specified then the Pod's namespace will be used.  This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to \"default\" if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created.\n                          type: string\n                      type: object\n                    vsphereVolume:\n                      description: vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\n                      properties:\n                        fsType:\n                          description: fsType is filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                          type: string\n                        storagePolicyID:\n                          description: storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\n                          type: string\n                        storagePolicyName:\n                          description: storagePolicyName is the storage Policy Based Management (SPBM) profile name.\n                          type: string\n                        volumePath:\n                          description: volumePath is the path that identifies vSphere volume vmdk\n                          type: string\n                      required:\n                      - volumePath\n                      type: object\n                  required:\n                  - name\n                  type: object\n                type: array\n              web:\n                description: Defines the web command line flags when starting Alertmanager.\n                properties:\n                  getConcurrency:\n                    description: Maximum number of GET requests processed concurrently. This corresponds to the Alertmanager's `--web.get-concurrency` flag.\n                    format: int32\n                    type: integer\n                  httpConfig:\n                    description: Defines HTTP parameters for web server.\n                    properties:\n                      headers:\n                        description: List of headers that can be added to HTTP responses.\n                        properties:\n                          contentSecurityPolicy:\n                            description: Set the Content-Security-Policy header to HTTP responses. Unset if blank.\n                            type: string\n                          strictTransportSecurity:\n                            description: Set the Strict-Transport-Security header to HTTP responses. Unset if blank. Please make sure that you use this with care as this header might force browsers to load Prometheus and the other applications hosted on the same domain and subdomains over HTTPS. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security\n                            type: string\n                          xContentTypeOptions:\n                            description: Set the X-Content-Type-Options header to HTTP responses. Unset if blank. Accepted value is nosniff. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options\n                            enum:\n                            - \"\"\n                            - NoSniff\n                            type: string\n                          xFrameOptions:\n                            description: Set the X-Frame-Options header to HTTP responses. Unset if blank. Accepted values are deny and sameorigin. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options\n                            enum:\n                            - \"\"\n                            - Deny\n                            - SameOrigin\n                            type: string\n                          xXSSProtection:\n                            description: Set the X-XSS-Protection header to all responses. Unset if blank. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection\n                            type: string\n                        type: object\n                      http2:\n                        description: Enable HTTP/2 support. Note that HTTP/2 is only supported with TLS. When TLSConfig is not configured, HTTP/2 will be disabled. Whenever the value of the field changes, a rolling update will be triggered.\n                        type: boolean\n                    type: object\n                  timeout:\n                    description: Timeout for HTTP requests. This corresponds to the Alertmanager's `--web.timeout` flag.\n                    format: int32\n                    type: integer\n                  tlsConfig:\n                    description: Defines the TLS parameters for HTTPS.\n                    properties:\n                      cert:\n                        description: Contains the TLS certificate for the server.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      cipherSuites:\n                        description: 'List of supported cipher suites for TLS versions up to TLS 1.2. If empty, Go default cipher suites are used. Available cipher suites are documented in the go documentation: https://golang.org/pkg/crypto/tls/#pkg-constants'\n                        items:\n                          type: string\n                        type: array\n                      client_ca:\n                        description: Contains the CA certificate for client certificate authentication to the server.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      clientAuthType:\n                        description: 'Server policy for client authentication. Maps to ClientAuth Policies. For more detail on clientAuth options: https://golang.org/pkg/crypto/tls/#ClientAuthType'\n                        type: string\n                      curvePreferences:\n                        description: 'Elliptic curves that will be used in an ECDHE handshake, in preference order. Available curves are documented in the go documentation: https://golang.org/pkg/crypto/tls/#CurveID'\n                        items:\n                          type: string\n                        type: array\n                      keySecret:\n                        description: Secret containing the TLS key for the server.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      maxVersion:\n                        description: Maximum TLS version that is acceptable. Defaults to TLS13.\n                        type: string\n                      minVersion:\n                        description: Minimum TLS version that is acceptable. Defaults to TLS12.\n                        type: string\n                      preferServerCipherSuites:\n                        description: Controls whether the server selects the client's most preferred cipher suite, or the server's most preferred cipher suite. If true then the server's preference, as expressed in the order of elements in cipherSuites, is used.\n                        type: boolean\n                    required:\n                    - cert\n                    - keySecret\n                    type: object\n                type: object\n            type: object\n          status:\n            description: 'Most recent observed status of the Alertmanager cluster. Read-only. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status'\n            properties:\n              availableReplicas:\n                description: Total number of available pods (ready for at least minReadySeconds) targeted by this Alertmanager cluster.\n                format: int32\n                type: integer\n              conditions:\n                description: The current state of the Alertmanager object.\n                items:\n                  description: Condition represents the state of the resources associated with the Prometheus, Alertmanager or ThanosRuler resource.\n                  properties:\n                    lastTransitionTime:\n                      description: lastTransitionTime is the time of the last update to the current status property.\n                      format: date-time\n                      type: string\n                    message:\n                      description: Human-readable message indicating details for the condition's last transition.\n                      type: string\n                    observedGeneration:\n                      description: ObservedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if `.metadata.generation` is currently 12, but the `.status.conditions[].observedGeneration` is 9, the condition is out of date with respect to the current state of the instance.\n                      format: int64\n                      type: integer\n                    reason:\n                      description: Reason for the condition's last transition.\n                      type: string\n                    status:\n                      description: Status of the condition.\n                      type: string\n                    type:\n                      description: Type of the condition being reported.\n                      type: string\n                  required:\n                  - lastTransitionTime\n                  - status\n                  - type\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - type\n                x-kubernetes-list-type: map\n              paused:\n                description: Represents whether any actions on the underlying managed objects are being performed. Only delete actions will be performed.\n                type: boolean\n              replicas:\n                description: Total number of non-terminated pods targeted by this Alertmanager object (their labels match the selector).\n                format: int32\n                type: integer\n              unavailableReplicas:\n                description: Total number of unavailable pods targeted by this Alertmanager object.\n                format: int32\n                type: integer\n              updatedReplicas:\n                description: Total number of non-terminated pods targeted by this Alertmanager object that have the desired version spec.\n                format: int32\n                type: integer\n            required:\n            - availableReplicas\n            - paused\n            - replicas\n            - unavailableReplicas\n            - updatedReplicas\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n    subresources:\n      status: {}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/setup/0podmonitorCustomResourceDefinition.yaml",
    "content": "apiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.11.1\n  creationTimestamp: null\n  name: podmonitors.monitoring.coreos.com\nspec:\n  group: monitoring.coreos.com\n  names:\n    categories:\n    - prometheus-operator\n    kind: PodMonitor\n    listKind: PodMonitorList\n    plural: podmonitors\n    shortNames:\n    - pmon\n    singular: podmonitor\n  scope: Namespaced\n  versions:\n  - name: v1\n    schema:\n      openAPIV3Schema:\n        description: PodMonitor defines monitoring for a set of pods.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: Specification of desired Pod selection for target discovery by Prometheus.\n            properties:\n              attachMetadata:\n                description: Attaches node metadata to discovered targets. Requires Prometheus v2.35.0 and above.\n                properties:\n                  node:\n                    description: When set to true, Prometheus must have permissions to get Nodes.\n                    type: boolean\n                type: object\n              jobLabel:\n                description: The label to use to retrieve the job name from.\n                type: string\n              labelLimit:\n                description: Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n                format: int64\n                type: integer\n              labelNameLengthLimit:\n                description: Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n                format: int64\n                type: integer\n              labelValueLengthLimit:\n                description: Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n                format: int64\n                type: integer\n              namespaceSelector:\n                description: Selector to select which namespaces the Endpoints objects are discovered from.\n                properties:\n                  any:\n                    description: Boolean describing whether all namespaces are selected in contrast to a list restricting them.\n                    type: boolean\n                  matchNames:\n                    description: List of namespace names to select from.\n                    items:\n                      type: string\n                    type: array\n                type: object\n              podMetricsEndpoints:\n                description: A list of endpoints allowed as part of this PodMonitor.\n                items:\n                  description: PodMetricsEndpoint defines a scrapeable endpoint of a Kubernetes Pod serving Prometheus metrics.\n                  properties:\n                    authorization:\n                      description: Authorization section for this endpoint\n                      properties:\n                        credentials:\n                          description: Selects a key of a Secret in the namespace that contains the credentials for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type:\n                          description: \"Defines the authentication type. The value is case-insensitive. \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\"\n                          type: string\n                      type: object\n                    basicAuth:\n                      description: 'BasicAuth allow an endpoint to authenticate over basic authentication. More info: https://prometheus.io/docs/operating/configuration/#endpoint'\n                      properties:\n                        password:\n                          description: The secret in the service monitor namespace that contains the password for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        username:\n                          description: The secret in the service monitor namespace that contains the username for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      type: object\n                    bearerTokenSecret:\n                      description: Secret to mount to read bearer token for scraping targets. The secret needs to be in the same namespace as the pod monitor and accessible by the Prometheus Operator.\n                      properties:\n                        key:\n                          description: The key of the secret to select from.  Must be a valid secret key.\n                          type: string\n                        name:\n                          description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                          type: string\n                        optional:\n                          description: Specify whether the Secret or its key must be defined\n                          type: boolean\n                      required:\n                      - key\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    enableHttp2:\n                      description: Whether to enable HTTP2.\n                      type: boolean\n                    filterRunning:\n                      description: 'Drop pods that are not running. (Failed, Succeeded). Enabled by default. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase'\n                      type: boolean\n                    followRedirects:\n                      description: FollowRedirects configures whether scrape requests follow HTTP 3xx redirects.\n                      type: boolean\n                    honorLabels:\n                      description: HonorLabels chooses the metric's labels on collisions with target labels.\n                      type: boolean\n                    honorTimestamps:\n                      description: HonorTimestamps controls whether Prometheus respects the timestamps present in scraped data.\n                      type: boolean\n                    interval:\n                      description: Interval at which metrics should be scraped If not specified Prometheus' global scrape interval is used.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    metricRelabelings:\n                      description: MetricRelabelConfigs to apply to samples before ingestion.\n                      items:\n                        description: \"RelabelConfig allows dynamic rewriting of the label set for targets, alerts, scraped samples and remote write samples. \\n More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\"\n                        properties:\n                          action:\n                            default: replace\n                            description: \"Action to perform based on the regex matching. \\n `Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0. `DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0. \\n Default: \\\"Replace\\\"\"\n                            enum:\n                            - replace\n                            - Replace\n                            - keep\n                            - Keep\n                            - drop\n                            - Drop\n                            - hashmod\n                            - HashMod\n                            - labelmap\n                            - LabelMap\n                            - labeldrop\n                            - LabelDrop\n                            - labelkeep\n                            - LabelKeep\n                            - lowercase\n                            - Lowercase\n                            - uppercase\n                            - Uppercase\n                            - keepequal\n                            - KeepEqual\n                            - dropequal\n                            - DropEqual\n                            type: string\n                          modulus:\n                            description: \"Modulus to take of the hash of the source label values. \\n Only applicable when the action is `HashMod`.\"\n                            format: int64\n                            type: integer\n                          regex:\n                            description: Regular expression against which the extracted value is matched.\n                            type: string\n                          replacement:\n                            description: \"Replacement value against which a Replace action is performed if the regular expression matches. \\n Regex capture groups are available.\"\n                            type: string\n                          separator:\n                            description: Separator is the string between concatenated SourceLabels.\n                            type: string\n                          sourceLabels:\n                            description: The source labels select values from existing labels. Their content is concatenated using the configured Separator and matched against the configured regular expression.\n                            items:\n                              description: LabelName is a valid Prometheus label name which may only contain ASCII letters, numbers, as well as underscores.\n                              pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$\n                              type: string\n                            type: array\n                          targetLabel:\n                            description: \"Label to which the resulting string is written in a replacement. \\n It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`, `KeepEqual` and `DropEqual` actions. \\n Regex capture groups are available.\"\n                            type: string\n                        type: object\n                      type: array\n                    oauth2:\n                      description: OAuth2 for the URL. Only valid in Prometheus versions 2.27.0 and newer.\n                      properties:\n                        clientId:\n                          description: The secret or configmap containing the OAuth2 client id\n                          properties:\n                            configMap:\n                              description: ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        clientSecret:\n                          description: The secret containing the OAuth2 client secret\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        endpointParams:\n                          additionalProperties:\n                            type: string\n                          description: Parameters to append to the token URL\n                          type: object\n                        scopes:\n                          description: OAuth2 scopes used for the token request\n                          items:\n                            type: string\n                          type: array\n                        tokenUrl:\n                          description: The URL to fetch the token from\n                          minLength: 1\n                          type: string\n                      required:\n                      - clientId\n                      - clientSecret\n                      - tokenUrl\n                      type: object\n                    params:\n                      additionalProperties:\n                        items:\n                          type: string\n                        type: array\n                      description: Optional HTTP URL parameters\n                      type: object\n                    path:\n                      description: HTTP path to scrape for metrics. If empty, Prometheus uses the default value (e.g. `/metrics`).\n                      type: string\n                    port:\n                      description: Name of the pod port this endpoint refers to. Mutually exclusive with targetPort.\n                      type: string\n                    proxyUrl:\n                      description: ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint.\n                      type: string\n                    relabelings:\n                      description: 'RelabelConfigs to apply to samples before scraping. Prometheus Operator automatically adds relabelings for a few standard Kubernetes fields. The original scrape job''s name is available via the `__tmp_prometheus_job_name` label. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config'\n                      items:\n                        description: \"RelabelConfig allows dynamic rewriting of the label set for targets, alerts, scraped samples and remote write samples. \\n More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\"\n                        properties:\n                          action:\n                            default: replace\n                            description: \"Action to perform based on the regex matching. \\n `Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0. `DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0. \\n Default: \\\"Replace\\\"\"\n                            enum:\n                            - replace\n                            - Replace\n                            - keep\n                            - Keep\n                            - drop\n                            - Drop\n                            - hashmod\n                            - HashMod\n                            - labelmap\n                            - LabelMap\n                            - labeldrop\n                            - LabelDrop\n                            - labelkeep\n                            - LabelKeep\n                            - lowercase\n                            - Lowercase\n                            - uppercase\n                            - Uppercase\n                            - keepequal\n                            - KeepEqual\n                            - dropequal\n                            - DropEqual\n                            type: string\n                          modulus:\n                            description: \"Modulus to take of the hash of the source label values. \\n Only applicable when the action is `HashMod`.\"\n                            format: int64\n                            type: integer\n                          regex:\n                            description: Regular expression against which the extracted value is matched.\n                            type: string\n                          replacement:\n                            description: \"Replacement value against which a Replace action is performed if the regular expression matches. \\n Regex capture groups are available.\"\n                            type: string\n                          separator:\n                            description: Separator is the string between concatenated SourceLabels.\n                            type: string\n                          sourceLabels:\n                            description: The source labels select values from existing labels. Their content is concatenated using the configured Separator and matched against the configured regular expression.\n                            items:\n                              description: LabelName is a valid Prometheus label name which may only contain ASCII letters, numbers, as well as underscores.\n                              pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$\n                              type: string\n                            type: array\n                          targetLabel:\n                            description: \"Label to which the resulting string is written in a replacement. \\n It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`, `KeepEqual` and `DropEqual` actions. \\n Regex capture groups are available.\"\n                            type: string\n                        type: object\n                      type: array\n                    scheme:\n                      description: HTTP scheme to use for scraping. `http` and `https` are the expected values unless you rewrite the `__scheme__` label via relabeling. If empty, Prometheus uses the default value `http`.\n                      enum:\n                      - http\n                      - https\n                      type: string\n                    scrapeTimeout:\n                      description: Timeout after which the scrape is ended If not specified, the Prometheus global scrape interval is used.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    targetPort:\n                      anyOf:\n                      - type: integer\n                      - type: string\n                      description: 'Deprecated: Use ''port'' instead.'\n                      x-kubernetes-int-or-string: true\n                    tlsConfig:\n                      description: TLS configuration to use when scraping the endpoint.\n                      properties:\n                        ca:\n                          description: Certificate authority used when verifying server certificates.\n                          properties:\n                            configMap:\n                              description: ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        cert:\n                          description: Client certificate to present when doing client-authentication.\n                          properties:\n                            configMap:\n                              description: ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        insecureSkipVerify:\n                          description: Disable target certificate validation.\n                          type: boolean\n                        keySecret:\n                          description: Secret containing the client key file for the targets.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        serverName:\n                          description: Used to verify the hostname for the targets.\n                          type: string\n                      type: object\n                  type: object\n                type: array\n              podTargetLabels:\n                description: PodTargetLabels transfers labels on the Kubernetes Pod onto the target.\n                items:\n                  type: string\n                type: array\n              sampleLimit:\n                description: SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\n                format: int64\n                type: integer\n              selector:\n                description: Selector to select Pod objects.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              targetLimit:\n                description: TargetLimit defines a limit on the number of scraped targets that will be accepted.\n                format: int64\n                type: integer\n            required:\n            - podMetricsEndpoints\n            - selector\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/setup/0probeCustomResourceDefinition.yaml",
    "content": "apiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.11.1\n  creationTimestamp: null\n  name: probes.monitoring.coreos.com\nspec:\n  group: monitoring.coreos.com\n  names:\n    categories:\n    - prometheus-operator\n    kind: Probe\n    listKind: ProbeList\n    plural: probes\n    shortNames:\n    - prb\n    singular: probe\n  scope: Namespaced\n  versions:\n  - name: v1\n    schema:\n      openAPIV3Schema:\n        description: Probe defines monitoring for a set of static targets or ingresses.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: Specification of desired Ingress selection for target discovery by Prometheus.\n            properties:\n              authorization:\n                description: Authorization section for this endpoint\n                properties:\n                  credentials:\n                    description: Selects a key of a Secret in the namespace that contains the credentials for authentication.\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be a valid secret key.\n                        type: string\n                      name:\n                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                  type:\n                    description: \"Defines the authentication type. The value is case-insensitive. \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\"\n                    type: string\n                type: object\n              basicAuth:\n                description: 'BasicAuth allow an endpoint to authenticate over basic authentication. More info: https://prometheus.io/docs/operating/configuration/#endpoint'\n                properties:\n                  password:\n                    description: The secret in the service monitor namespace that contains the password for authentication.\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be a valid secret key.\n                        type: string\n                      name:\n                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                  username:\n                    description: The secret in the service monitor namespace that contains the username for authentication.\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be a valid secret key.\n                        type: string\n                      name:\n                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                type: object\n              bearerTokenSecret:\n                description: Secret to mount to read bearer token for scraping targets. The secret needs to be in the same namespace as the probe and accessible by the Prometheus Operator.\n                properties:\n                  key:\n                    description: The key of the secret to select from.  Must be a valid secret key.\n                    type: string\n                  name:\n                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                    type: string\n                  optional:\n                    description: Specify whether the Secret or its key must be defined\n                    type: boolean\n                required:\n                - key\n                type: object\n                x-kubernetes-map-type: atomic\n              interval:\n                description: Interval at which targets are probed using the configured prober. If not specified Prometheus' global scrape interval is used.\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              jobName:\n                description: The job name assigned to scraped metrics by default.\n                type: string\n              labelLimit:\n                description: Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n                format: int64\n                type: integer\n              labelNameLengthLimit:\n                description: Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n                format: int64\n                type: integer\n              labelValueLengthLimit:\n                description: Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n                format: int64\n                type: integer\n              metricRelabelings:\n                description: MetricRelabelConfigs to apply to samples before ingestion.\n                items:\n                  description: \"RelabelConfig allows dynamic rewriting of the label set for targets, alerts, scraped samples and remote write samples. \\n More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\"\n                  properties:\n                    action:\n                      default: replace\n                      description: \"Action to perform based on the regex matching. \\n `Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0. `DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0. \\n Default: \\\"Replace\\\"\"\n                      enum:\n                      - replace\n                      - Replace\n                      - keep\n                      - Keep\n                      - drop\n                      - Drop\n                      - hashmod\n                      - HashMod\n                      - labelmap\n                      - LabelMap\n                      - labeldrop\n                      - LabelDrop\n                      - labelkeep\n                      - LabelKeep\n                      - lowercase\n                      - Lowercase\n                      - uppercase\n                      - Uppercase\n                      - keepequal\n                      - KeepEqual\n                      - dropequal\n                      - DropEqual\n                      type: string\n                    modulus:\n                      description: \"Modulus to take of the hash of the source label values. \\n Only applicable when the action is `HashMod`.\"\n                      format: int64\n                      type: integer\n                    regex:\n                      description: Regular expression against which the extracted value is matched.\n                      type: string\n                    replacement:\n                      description: \"Replacement value against which a Replace action is performed if the regular expression matches. \\n Regex capture groups are available.\"\n                      type: string\n                    separator:\n                      description: Separator is the string between concatenated SourceLabels.\n                      type: string\n                    sourceLabels:\n                      description: The source labels select values from existing labels. Their content is concatenated using the configured Separator and matched against the configured regular expression.\n                      items:\n                        description: LabelName is a valid Prometheus label name which may only contain ASCII letters, numbers, as well as underscores.\n                        pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$\n                        type: string\n                      type: array\n                    targetLabel:\n                      description: \"Label to which the resulting string is written in a replacement. \\n It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`, `KeepEqual` and `DropEqual` actions. \\n Regex capture groups are available.\"\n                      type: string\n                  type: object\n                type: array\n              module:\n                description: 'The module to use for probing specifying how to probe the target. Example module configuring in the blackbox exporter: https://github.com/prometheus/blackbox_exporter/blob/master/example.yml'\n                type: string\n              oauth2:\n                description: OAuth2 for the URL. Only valid in Prometheus versions 2.27.0 and newer.\n                properties:\n                  clientId:\n                    description: The secret or configmap containing the OAuth2 client id\n                    properties:\n                      configMap:\n                        description: ConfigMap containing data to use for the targets.\n                        properties:\n                          key:\n                            description: The key to select.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the ConfigMap or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      secret:\n                        description: Secret containing data to use for the targets.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  clientSecret:\n                    description: The secret containing the OAuth2 client secret\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be a valid secret key.\n                        type: string\n                      name:\n                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                  endpointParams:\n                    additionalProperties:\n                      type: string\n                    description: Parameters to append to the token URL\n                    type: object\n                  scopes:\n                    description: OAuth2 scopes used for the token request\n                    items:\n                      type: string\n                    type: array\n                  tokenUrl:\n                    description: The URL to fetch the token from\n                    minLength: 1\n                    type: string\n                required:\n                - clientId\n                - clientSecret\n                - tokenUrl\n                type: object\n              prober:\n                description: Specification for the prober to use for probing targets. The prober.URL parameter is required. Targets cannot be probed if left empty.\n                properties:\n                  path:\n                    default: /probe\n                    description: Path to collect metrics from. Defaults to `/probe`.\n                    type: string\n                  proxyUrl:\n                    description: Optional ProxyURL.\n                    type: string\n                  scheme:\n                    description: HTTP scheme to use for scraping. `http` and `https` are the expected values unless you rewrite the `__scheme__` label via relabeling. If empty, Prometheus uses the default value `http`.\n                    enum:\n                    - http\n                    - https\n                    type: string\n                  url:\n                    description: Mandatory URL of the prober.\n                    type: string\n                required:\n                - url\n                type: object\n              sampleLimit:\n                description: SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\n                format: int64\n                type: integer\n              scrapeTimeout:\n                description: Timeout for scraping metrics from the Prometheus exporter. If not specified, the Prometheus global scrape timeout is used.\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              targetLimit:\n                description: TargetLimit defines a limit on the number of scraped targets that will be accepted.\n                format: int64\n                type: integer\n              targets:\n                description: Targets defines a set of static or dynamically discovered targets to probe.\n                properties:\n                  ingress:\n                    description: ingress defines the Ingress objects to probe and the relabeling configuration. If `staticConfig` is also defined, `staticConfig` takes precedence.\n                    properties:\n                      namespaceSelector:\n                        description: From which namespaces to select Ingress objects.\n                        properties:\n                          any:\n                            description: Boolean describing whether all namespaces are selected in contrast to a list restricting them.\n                            type: boolean\n                          matchNames:\n                            description: List of namespace names to select from.\n                            items:\n                              type: string\n                            type: array\n                        type: object\n                      relabelingConfigs:\n                        description: 'RelabelConfigs to apply to the label set of the target before it gets scraped. The original ingress address is available via the `__tmp_prometheus_ingress_address` label. It can be used to customize the probed URL. The original scrape job''s name is available via the `__tmp_prometheus_job_name` label. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config'\n                        items:\n                          description: \"RelabelConfig allows dynamic rewriting of the label set for targets, alerts, scraped samples and remote write samples. \\n More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\"\n                          properties:\n                            action:\n                              default: replace\n                              description: \"Action to perform based on the regex matching. \\n `Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0. `DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0. \\n Default: \\\"Replace\\\"\"\n                              enum:\n                              - replace\n                              - Replace\n                              - keep\n                              - Keep\n                              - drop\n                              - Drop\n                              - hashmod\n                              - HashMod\n                              - labelmap\n                              - LabelMap\n                              - labeldrop\n                              - LabelDrop\n                              - labelkeep\n                              - LabelKeep\n                              - lowercase\n                              - Lowercase\n                              - uppercase\n                              - Uppercase\n                              - keepequal\n                              - KeepEqual\n                              - dropequal\n                              - DropEqual\n                              type: string\n                            modulus:\n                              description: \"Modulus to take of the hash of the source label values. \\n Only applicable when the action is `HashMod`.\"\n                              format: int64\n                              type: integer\n                            regex:\n                              description: Regular expression against which the extracted value is matched.\n                              type: string\n                            replacement:\n                              description: \"Replacement value against which a Replace action is performed if the regular expression matches. \\n Regex capture groups are available.\"\n                              type: string\n                            separator:\n                              description: Separator is the string between concatenated SourceLabels.\n                              type: string\n                            sourceLabels:\n                              description: The source labels select values from existing labels. Their content is concatenated using the configured Separator and matched against the configured regular expression.\n                              items:\n                                description: LabelName is a valid Prometheus label name which may only contain ASCII letters, numbers, as well as underscores.\n                                pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$\n                                type: string\n                              type: array\n                            targetLabel:\n                              description: \"Label to which the resulting string is written in a replacement. \\n It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`, `KeepEqual` and `DropEqual` actions. \\n Regex capture groups are available.\"\n                              type: string\n                          type: object\n                        type: array\n                      selector:\n                        description: Selector to select the Ingress objects.\n                        properties:\n                          matchExpressions:\n                            description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                            items:\n                              description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                              properties:\n                                key:\n                                  description: key is the label key that the selector applies to.\n                                  type: string\n                                operator:\n                                  description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                  type: string\n                                values:\n                                  description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                  items:\n                                    type: string\n                                  type: array\n                              required:\n                              - key\n                              - operator\n                              type: object\n                            type: array\n                          matchLabels:\n                            additionalProperties:\n                              type: string\n                            description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                            type: object\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  staticConfig:\n                    description: 'staticConfig defines the static list of targets to probe and the relabeling configuration. If `ingress` is also defined, `staticConfig` takes precedence. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#static_config.'\n                    properties:\n                      labels:\n                        additionalProperties:\n                          type: string\n                        description: Labels assigned to all metrics scraped from the targets.\n                        type: object\n                      relabelingConfigs:\n                        description: 'RelabelConfigs to apply to the label set of the targets before it gets scraped. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config'\n                        items:\n                          description: \"RelabelConfig allows dynamic rewriting of the label set for targets, alerts, scraped samples and remote write samples. \\n More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\"\n                          properties:\n                            action:\n                              default: replace\n                              description: \"Action to perform based on the regex matching. \\n `Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0. `DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0. \\n Default: \\\"Replace\\\"\"\n                              enum:\n                              - replace\n                              - Replace\n                              - keep\n                              - Keep\n                              - drop\n                              - Drop\n                              - hashmod\n                              - HashMod\n                              - labelmap\n                              - LabelMap\n                              - labeldrop\n                              - LabelDrop\n                              - labelkeep\n                              - LabelKeep\n                              - lowercase\n                              - Lowercase\n                              - uppercase\n                              - Uppercase\n                              - keepequal\n                              - KeepEqual\n                              - dropequal\n                              - DropEqual\n                              type: string\n                            modulus:\n                              description: \"Modulus to take of the hash of the source label values. \\n Only applicable when the action is `HashMod`.\"\n                              format: int64\n                              type: integer\n                            regex:\n                              description: Regular expression against which the extracted value is matched.\n                              type: string\n                            replacement:\n                              description: \"Replacement value against which a Replace action is performed if the regular expression matches. \\n Regex capture groups are available.\"\n                              type: string\n                            separator:\n                              description: Separator is the string between concatenated SourceLabels.\n                              type: string\n                            sourceLabels:\n                              description: The source labels select values from existing labels. Their content is concatenated using the configured Separator and matched against the configured regular expression.\n                              items:\n                                description: LabelName is a valid Prometheus label name which may only contain ASCII letters, numbers, as well as underscores.\n                                pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$\n                                type: string\n                              type: array\n                            targetLabel:\n                              description: \"Label to which the resulting string is written in a replacement. \\n It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`, `KeepEqual` and `DropEqual` actions. \\n Regex capture groups are available.\"\n                              type: string\n                          type: object\n                        type: array\n                      static:\n                        description: The list of hosts to probe.\n                        items:\n                          type: string\n                        type: array\n                    type: object\n                type: object\n              tlsConfig:\n                description: TLS configuration to use when scraping the endpoint.\n                properties:\n                  ca:\n                    description: Certificate authority used when verifying server certificates.\n                    properties:\n                      configMap:\n                        description: ConfigMap containing data to use for the targets.\n                        properties:\n                          key:\n                            description: The key to select.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the ConfigMap or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      secret:\n                        description: Secret containing data to use for the targets.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  cert:\n                    description: Client certificate to present when doing client-authentication.\n                    properties:\n                      configMap:\n                        description: ConfigMap containing data to use for the targets.\n                        properties:\n                          key:\n                            description: The key to select.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the ConfigMap or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      secret:\n                        description: Secret containing data to use for the targets.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  insecureSkipVerify:\n                    description: Disable target certificate validation.\n                    type: boolean\n                  keySecret:\n                    description: Secret containing the client key file for the targets.\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be a valid secret key.\n                        type: string\n                      name:\n                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                  serverName:\n                    description: Used to verify the hostname for the targets.\n                    type: string\n                type: object\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/setup/0prometheusCustomResourceDefinition.yaml",
    "content": "apiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.11.1\n  creationTimestamp: null\n  name: prometheuses.monitoring.coreos.com\nspec:\n  group: monitoring.coreos.com\n  names:\n    categories:\n    - prometheus-operator\n    kind: Prometheus\n    listKind: PrometheusList\n    plural: prometheuses\n    shortNames:\n    - prom\n    singular: prometheus\n  scope: Namespaced\n  versions:\n  - additionalPrinterColumns:\n    - description: The version of Prometheus\n      jsonPath: .spec.version\n      name: Version\n      type: string\n    - description: The number of desired replicas\n      jsonPath: .spec.replicas\n      name: Desired\n      type: integer\n    - description: The number of ready replicas\n      jsonPath: .status.availableReplicas\n      name: Ready\n      type: integer\n    - jsonPath: .status.conditions[?(@.type == 'Reconciled')].status\n      name: Reconciled\n      type: string\n    - jsonPath: .status.conditions[?(@.type == 'Available')].status\n      name: Available\n      type: string\n    - jsonPath: .metadata.creationTimestamp\n      name: Age\n      type: date\n    - description: Whether the resource reconciliation is paused or not\n      jsonPath: .status.paused\n      name: Paused\n      priority: 1\n      type: boolean\n    name: v1\n    schema:\n      openAPIV3Schema:\n        description: Prometheus defines a Prometheus deployment.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: 'Specification of the desired behavior of the Prometheus cluster. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status'\n            properties:\n              additionalAlertManagerConfigs:\n                description: \"AdditionalAlertManagerConfigs specifies a key of a Secret containing additional Prometheus Alertmanager configurations. The Alertmanager configurations are appended to the configuration generated by the Prometheus Operator. They must be formatted according to the official Prometheus documentation: \\n https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alertmanager_config \\n The user is responsible for making sure that the configurations are valid \\n Note that using this feature may expose the possibility to break upgrades of Prometheus. It is advised to review Prometheus release notes to ensure that no incompatible AlertManager configs are going to break Prometheus after the upgrade.\"\n                properties:\n                  key:\n                    description: The key of the secret to select from.  Must be a valid secret key.\n                    type: string\n                  name:\n                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                    type: string\n                  optional:\n                    description: Specify whether the Secret or its key must be defined\n                    type: boolean\n                required:\n                - key\n                type: object\n                x-kubernetes-map-type: atomic\n              additionalAlertRelabelConfigs:\n                description: \"AdditionalAlertRelabelConfigs specifies a key of a Secret containing additional Prometheus alert relabel configurations. The alert relabel configurations are appended to the configuration generated by the Prometheus Operator. They must be formatted according to the official Prometheus documentation: \\n https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alert_relabel_configs \\n The user is responsible for making sure that the configurations are valid \\n Note that using this feature may expose the possibility to break upgrades of Prometheus. It is advised to review Prometheus release notes to ensure that no incompatible alert relabel configs are going to break Prometheus after the upgrade.\"\n                properties:\n                  key:\n                    description: The key of the secret to select from.  Must be a valid secret key.\n                    type: string\n                  name:\n                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                    type: string\n                  optional:\n                    description: Specify whether the Secret or its key must be defined\n                    type: boolean\n                required:\n                - key\n                type: object\n                x-kubernetes-map-type: atomic\n              additionalArgs:\n                description: \"AdditionalArgs allows setting additional arguments for the 'prometheus' container. \\n It is intended for e.g. activating hidden flags which are not supported by the dedicated configuration options yet. The arguments are passed as-is to the Prometheus container which may cause issues if they are invalid or not supported by the given Prometheus version. \\n In case of an argument conflict (e.g. an argument which is already set by the operator itself) or when providing an invalid argument, the reconciliation will fail and an error will be logged.\"\n                items:\n                  description: Argument as part of the AdditionalArgs list.\n                  properties:\n                    name:\n                      description: Name of the argument, e.g. \"scrape.discovery-reload-interval\".\n                      minLength: 1\n                      type: string\n                    value:\n                      description: Argument value, e.g. 30s. Can be empty for name-only arguments (e.g. --storage.tsdb.no-lockfile)\n                      type: string\n                  required:\n                  - name\n                  type: object\n                type: array\n              additionalScrapeConfigs:\n                description: 'AdditionalScrapeConfigs allows specifying a key of a Secret containing additional Prometheus scrape configurations. Scrape configurations specified are appended to the configurations generated by the Prometheus Operator. Job configurations specified must have the form as specified in the official Prometheus documentation: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config. As scrape configs are appended, the user is responsible to make sure it is valid. Note that using this feature may expose the possibility to break upgrades of Prometheus. It is advised to review Prometheus release notes to ensure that no incompatible scrape configs are going to break Prometheus after the upgrade.'\n                properties:\n                  key:\n                    description: The key of the secret to select from.  Must be a valid secret key.\n                    type: string\n                  name:\n                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                    type: string\n                  optional:\n                    description: Specify whether the Secret or its key must be defined\n                    type: boolean\n                required:\n                - key\n                type: object\n                x-kubernetes-map-type: atomic\n              affinity:\n                description: Defines the Pods' affinity scheduling rules if specified.\n                properties:\n                  nodeAffinity:\n                    description: Describes node affinity scheduling rules for the pod.\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n                        items:\n                          description: An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\n                          properties:\n                            preference:\n                              description: A node selector term, associated with the corresponding weight.\n                              properties:\n                                matchExpressions:\n                                  description: A list of node selector requirements by node's labels.\n                                  items:\n                                    description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchFields:\n                                  description: A list of node selector requirements by node's fields.\n                                  items:\n                                    description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            weight:\n                              description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - preference\n                          - weight\n                          type: object\n                        type: array\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.\n                        properties:\n                          nodeSelectorTerms:\n                            description: Required. A list of node selector terms. The terms are ORed.\n                            items:\n                              description: A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\n                              properties:\n                                matchExpressions:\n                                  description: A list of node selector requirements by node's labels.\n                                  items:\n                                    description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchFields:\n                                  description: A list of node selector requirements by node's fields.\n                                  items:\n                                    description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            type: array\n                        required:\n                        - nodeSelectorTerms\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  podAffinity:\n                    description: Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n                        items:\n                          description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\n                          properties:\n                            podAffinityTerm:\n                              description: Required. A pod affinity term, associated with the corresponding weight.\n                              properties:\n                                labelSelector:\n                                  description: A label query over a set of resources, in this case pods.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                      items:\n                                        description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaceSelector:\n                                  description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                      items:\n                                        description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaces:\n                                  description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                  items:\n                                    type: string\n                                  type: array\n                                topologyKey:\n                                  description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                                  type: string\n                              required:\n                              - topologyKey\n                              type: object\n                            weight:\n                              description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - podAffinityTerm\n                          - weight\n                          type: object\n                        type: array\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n                        items:\n                          description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running\n                          properties:\n                            labelSelector:\n                              description: A label query over a set of resources, in this case pods.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaceSelector:\n                              description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaces:\n                              description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                              items:\n                                type: string\n                              type: array\n                            topologyKey:\n                              description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                              type: string\n                          required:\n                          - topologyKey\n                          type: object\n                        type: array\n                    type: object\n                  podAntiAffinity:\n                    description: Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n                        items:\n                          description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\n                          properties:\n                            podAffinityTerm:\n                              description: Required. A pod affinity term, associated with the corresponding weight.\n                              properties:\n                                labelSelector:\n                                  description: A label query over a set of resources, in this case pods.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                      items:\n                                        description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaceSelector:\n                                  description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                      items:\n                                        description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaces:\n                                  description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                  items:\n                                    type: string\n                                  type: array\n                                topologyKey:\n                                  description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                                  type: string\n                              required:\n                              - topologyKey\n                              type: object\n                            weight:\n                              description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - podAffinityTerm\n                          - weight\n                          type: object\n                        type: array\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n                        items:\n                          description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running\n                          properties:\n                            labelSelector:\n                              description: A label query over a set of resources, in this case pods.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaceSelector:\n                              description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaces:\n                              description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                              items:\n                                type: string\n                              type: array\n                            topologyKey:\n                              description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                              type: string\n                          required:\n                          - topologyKey\n                          type: object\n                        type: array\n                    type: object\n                type: object\n              alerting:\n                description: Defines the settings related to Alertmanager.\n                properties:\n                  alertmanagers:\n                    description: AlertmanagerEndpoints Prometheus should fire alerts against.\n                    items:\n                      description: AlertmanagerEndpoints defines a selection of a single Endpoints object containing Alertmanager IPs to fire alerts against.\n                      properties:\n                        apiVersion:\n                          description: Version of the Alertmanager API that Prometheus uses to send alerts. It can be \"v1\" or \"v2\".\n                          type: string\n                        authorization:\n                          description: \"Authorization section for Alertmanager. \\n Cannot be set at the same time as `basicAuth`, or `bearerTokenFile`.\"\n                          properties:\n                            credentials:\n                              description: Selects a key of a Secret in the namespace that contains the credentials for authentication.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            type:\n                              description: \"Defines the authentication type. The value is case-insensitive. \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\"\n                              type: string\n                          type: object\n                        basicAuth:\n                          description: \"BasicAuth configuration for Alertmanager. \\n Cannot be set at the same time as `bearerTokenFile`, or `authorization`.\"\n                          properties:\n                            password:\n                              description: The secret in the service monitor namespace that contains the password for authentication.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            username:\n                              description: The secret in the service monitor namespace that contains the username for authentication.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        bearerTokenFile:\n                          description: \"File to read bearer token for Alertmanager. \\n Cannot be set at the same time as `basicAuth`, or `authorization`. \\n *Deprecated: this will be removed in a future release. Prefer using `authorization`.*\"\n                          type: string\n                        enableHttp2:\n                          description: Whether to enable HTTP2.\n                          type: boolean\n                        name:\n                          description: Name of the Endpoints object in the namespace.\n                          type: string\n                        namespace:\n                          description: Namespace of the Endpoints object.\n                          type: string\n                        pathPrefix:\n                          description: Prefix for the HTTP path alerts are pushed to.\n                          type: string\n                        port:\n                          anyOf:\n                          - type: integer\n                          - type: string\n                          description: Port on which the Alertmanager API is exposed.\n                          x-kubernetes-int-or-string: true\n                        scheme:\n                          description: Scheme to use when firing alerts.\n                          type: string\n                        timeout:\n                          description: Timeout is a per-target Alertmanager timeout when pushing alerts.\n                          pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                          type: string\n                        tlsConfig:\n                          description: TLS Config to use for Alertmanager.\n                          properties:\n                            ca:\n                              description: Certificate authority used when verifying server certificates.\n                              properties:\n                                configMap:\n                                  description: ConfigMap containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: Secret containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            caFile:\n                              description: Path to the CA cert in the Prometheus container to use for the targets.\n                              type: string\n                            cert:\n                              description: Client certificate to present when doing client-authentication.\n                              properties:\n                                configMap:\n                                  description: ConfigMap containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key to select.\n                                      type: string\n                                    name:\n                                      description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                      type: string\n                                    optional:\n                                      description: Specify whether the ConfigMap or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                secret:\n                                  description: Secret containing data to use for the targets.\n                                  properties:\n                                    key:\n                                      description: The key of the secret to select from.  Must be a valid secret key.\n                                      type: string\n                                    name:\n                                      description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                      type: string\n                                    optional:\n                                      description: Specify whether the Secret or its key must be defined\n                                      type: boolean\n                                  required:\n                                  - key\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                              type: object\n                            certFile:\n                              description: Path to the client cert file in the Prometheus container for the targets.\n                              type: string\n                            insecureSkipVerify:\n                              description: Disable target certificate validation.\n                              type: boolean\n                            keyFile:\n                              description: Path to the client key file in the Prometheus container for the targets.\n                              type: string\n                            keySecret:\n                              description: Secret containing the client key file for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            serverName:\n                              description: Used to verify the hostname for the targets.\n                              type: string\n                          type: object\n                      required:\n                      - name\n                      - namespace\n                      - port\n                      type: object\n                    type: array\n                required:\n                - alertmanagers\n                type: object\n              allowOverlappingBlocks:\n                description: \"AllowOverlappingBlocks enables vertical compaction and vertical query merge in Prometheus. \\n *Deprecated: this flag has no effect for Prometheus >= 2.39.0 where overlapping blocks are enabled by default.*\"\n                type: boolean\n              apiserverConfig:\n                description: 'APIServerConfig allows specifying a host and auth methods to access the Kuberntees API server. If null, Prometheus is assumed to run inside of the cluster: it will discover the API servers automatically and use the Pod''s CA certificate and bearer token file at /var/run/secrets/kubernetes.io/serviceaccount/.'\n                properties:\n                  authorization:\n                    description: \"Authorization section for the API server. \\n Cannot be set at the same time as `basicAuth`, `bearerToken`, or `bearerTokenFile`.\"\n                    properties:\n                      credentials:\n                        description: Selects a key of a Secret in the namespace that contains the credentials for authentication.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      credentialsFile:\n                        description: File to read a secret from, mutually exclusive with `credentials`.\n                        type: string\n                      type:\n                        description: \"Defines the authentication type. The value is case-insensitive. \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\"\n                        type: string\n                    type: object\n                  basicAuth:\n                    description: \"BasicAuth configuration for the API server. \\n Cannot be set at the same time as `authorization`, `bearerToken`, or `bearerTokenFile`.\"\n                    properties:\n                      password:\n                        description: The secret in the service monitor namespace that contains the password for authentication.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      username:\n                        description: The secret in the service monitor namespace that contains the username for authentication.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  bearerToken:\n                    description: \"*Warning: this field shouldn't be used because the token value appears in clear-text. Prefer using `authorization`.* \\n *Deprecated: this will be removed in a future release.*\"\n                    type: string\n                  bearerTokenFile:\n                    description: \"File to read bearer token for accessing apiserver. \\n Cannot be set at the same time as `basicAuth`, `authorization`, or `bearerToken`. \\n *Deprecated: this will be removed in a future release. Prefer using `authorization`.*\"\n                    type: string\n                  host:\n                    description: Kubernetes API address consisting of a hostname or IP address followed by an optional port number.\n                    type: string\n                  tlsConfig:\n                    description: TLS Config to use for the API server.\n                    properties:\n                      ca:\n                        description: Certificate authority used when verifying server certificates.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      caFile:\n                        description: Path to the CA cert in the Prometheus container to use for the targets.\n                        type: string\n                      cert:\n                        description: Client certificate to present when doing client-authentication.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      certFile:\n                        description: Path to the client cert file in the Prometheus container for the targets.\n                        type: string\n                      insecureSkipVerify:\n                        description: Disable target certificate validation.\n                        type: boolean\n                      keyFile:\n                        description: Path to the client key file in the Prometheus container for the targets.\n                        type: string\n                      keySecret:\n                        description: Secret containing the client key file for the targets.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      serverName:\n                        description: Used to verify the hostname for the targets.\n                        type: string\n                    type: object\n                required:\n                - host\n                type: object\n              arbitraryFSAccessThroughSMs:\n                description: When true, ServiceMonitor, PodMonitor and Probe object are forbidden to reference arbitrary files on the file system of the 'prometheus' container. When a ServiceMonitor's endpoint specifies a `bearerTokenFile` value (e.g.  '/var/run/secrets/kubernetes.io/serviceaccount/token'), a malicious target can get access to the Prometheus service account's token in the Prometheus' scrape request. Setting `spec.arbitraryFSAccessThroughSM` to 'true' would prevent the attack. Users should instead provide the credentials using the `spec.bearerTokenSecret` field.\n                properties:\n                  deny:\n                    type: boolean\n                type: object\n              baseImage:\n                description: '*Deprecated: use ''spec.image'' instead.*'\n                type: string\n              configMaps:\n                description: ConfigMaps is a list of ConfigMaps in the same namespace as the Prometheus object, which shall be mounted into the Prometheus Pods. Each ConfigMap is added to the StatefulSet definition as a volume named `configmap-<configmap-name>`. The ConfigMaps are mounted into /etc/prometheus/configmaps/<configmap-name> in the 'prometheus' container.\n                items:\n                  type: string\n                type: array\n              containers:\n                description: \"Containers allows injecting additional containers or modifying operator generated containers. This can be used to allow adding an authentication proxy to the Pods or to change the behavior of an operator generated container. Containers described here modify an operator generated container if they share the same name and modifications are done via a strategic merge patch. \\n The names of containers managed by the operator are: * `prometheus` * `config-reloader` * `thanos-sidecar` \\n Overriding containers is entirely outside the scope of what the maintainers will support and by doing so, you accept that this behaviour may break at any time without notice.\"\n                items:\n                  description: A single application container that you want to run within a pod.\n                  properties:\n                    args:\n                      description: 'Arguments to the entrypoint. The container image''s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    command:\n                      description: 'Entrypoint array. Not executed within a shell. The container image''s ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    env:\n                      description: List of environment variables to set in the container. Cannot be updated.\n                      items:\n                        description: EnvVar represents an environment variable present in a Container.\n                        properties:\n                          name:\n                            description: Name of the environment variable. Must be a C_IDENTIFIER.\n                            type: string\n                          value:\n                            description: 'Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to \"\".'\n                            type: string\n                          valueFrom:\n                            description: Source for the environment variable's value. Cannot be used if value is not empty.\n                            properties:\n                              configMapKeyRef:\n                                description: Selects a key of a ConfigMap.\n                                properties:\n                                  key:\n                                    description: The key to select.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the ConfigMap or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              fieldRef:\n                                description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels[''<KEY>'']`, `metadata.annotations[''<KEY>'']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.'\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              resourceFieldRef:\n                                description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.'\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes, optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              secretKeyRef:\n                                description: Selects a key of a secret in the pod's namespace\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            type: object\n                        required:\n                        - name\n                        type: object\n                      type: array\n                    envFrom:\n                      description: List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.\n                      items:\n                        description: EnvFromSource represents the source of a set of ConfigMaps\n                        properties:\n                          configMapRef:\n                            description: The ConfigMap to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          prefix:\n                            description: An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\n                            type: string\n                          secretRef:\n                            description: The Secret to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      type: array\n                    image:\n                      description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.'\n                      type: string\n                    imagePullPolicy:\n                      description: 'Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images'\n                      type: string\n                    lifecycle:\n                      description: Actions that the management system should take in response to container lifecycle events. Cannot be updated.\n                      properties:\n                        postStart:\n                          description: 'PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request. HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                        preStop:\n                          description: 'PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The Pod''s termination grace period countdown begins before the PreStop hook is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod''s termination grace period (unless delayed by finalizers). Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request. HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                      type: object\n                    livenessProbe:\n                      description: 'Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \\n If this is not specified, the default behavior is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host. Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    name:\n                      description: Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated.\n                      type: string\n                    ports:\n                      description: List of ports to expose from the container. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Modifying this array with strategic merge patch may corrupt the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255. Cannot be updated.\n                      items:\n                        description: ContainerPort represents a network port in a single container.\n                        properties:\n                          containerPort:\n                            description: Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536.\n                            format: int32\n                            type: integer\n                          hostIP:\n                            description: What host IP to bind the external port to.\n                            type: string\n                          hostPort:\n                            description: Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.\n                            format: int32\n                            type: integer\n                          name:\n                            description: If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.\n                            type: string\n                          protocol:\n                            default: TCP\n                            description: Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".\n                            type: string\n                        required:\n                        - containerPort\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - containerPort\n                      - protocol\n                      x-kubernetes-list-type: map\n                    readinessProbe:\n                      description: 'Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \\n If this is not specified, the default behavior is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host. Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    resizePolicy:\n                      description: Resources resize policy for the container.\n                      items:\n                        description: ContainerResizePolicy represents resource resize policy for the container.\n                        properties:\n                          resourceName:\n                            description: 'Name of the resource to which this resource resize policy applies. Supported values: cpu, memory.'\n                            type: string\n                          restartPolicy:\n                            description: Restart policy to apply when specified resource is resized. If not specified, it defaults to NotRequired.\n                            type: string\n                        required:\n                        - resourceName\n                        - restartPolicy\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    resources:\n                      description: 'Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                      properties:\n                        claims:\n                          description: \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\"\n                          items:\n                            description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                            properties:\n                              name:\n                                description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\n                                type: string\n                            required:\n                            - name\n                            type: object\n                          type: array\n                          x-kubernetes-list-map-keys:\n                          - name\n                          x-kubernetes-list-type: map\n                        limits:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                        requests:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                      type: object\n                    securityContext:\n                      description: 'SecurityContext defines the security options the container should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/'\n                      properties:\n                        allowPrivilegeEscalation:\n                          description: 'AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN Note that this field cannot be set when spec.os.name is windows.'\n                          type: boolean\n                        capabilities:\n                          description: The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            add:\n                              description: Added capabilities\n                              items:\n                                description: Capability represent POSIX capabilities type\n                                type: string\n                              type: array\n                            drop:\n                              description: Removed capabilities\n                              items:\n                                description: Capability represent POSIX capabilities type\n                                type: string\n                              type: array\n                          type: object\n                        privileged:\n                          description: Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. Note that this field cannot be set when spec.os.name is windows.\n                          type: boolean\n                        procMount:\n                          description: procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. Note that this field cannot be set when spec.os.name is windows.\n                          type: string\n                        readOnlyRootFilesystem:\n                          description: Whether this container has a read-only root filesystem. Default is false. Note that this field cannot be set when spec.os.name is windows.\n                          type: boolean\n                        runAsGroup:\n                          description: The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        runAsNonRoot:\n                          description: Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\n                          type: boolean\n                        runAsUser:\n                          description: The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        seLinuxOptions:\n                          description: The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container.  May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            level:\n                              description: Level is SELinux level label that applies to the container.\n                              type: string\n                            role:\n                              description: Role is a SELinux role label that applies to the container.\n                              type: string\n                            type:\n                              description: Type is a SELinux type label that applies to the container.\n                              type: string\n                            user:\n                              description: User is a SELinux user label that applies to the container.\n                              type: string\n                          type: object\n                        seccompProfile:\n                          description: The seccomp options to use by this container. If seccomp options are provided at both the pod & container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            localhostProfile:\n                              description: localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is \"Localhost\".\n                              type: string\n                            type:\n                              description: \"type indicates which kind of seccomp profile will be applied. Valid options are: \\n Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.\"\n                              type: string\n                          required:\n                          - type\n                          type: object\n                        windowsOptions:\n                          description: The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux.\n                          properties:\n                            gmsaCredentialSpec:\n                              description: GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.\n                              type: string\n                            gmsaCredentialSpecName:\n                              description: GMSACredentialSpecName is the name of the GMSA credential spec to use.\n                              type: string\n                            hostProcess:\n                              description: HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).  In addition, if HostProcess is true then HostNetwork must also be set to true.\n                              type: boolean\n                            runAsUserName:\n                              description: The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\n                              type: string\n                          type: object\n                      type: object\n                    startupProbe:\n                      description: 'StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod''s lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \\n If this is not specified, the default behavior is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host. Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    stdin:\n                      description: Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false.\n                      type: boolean\n                    stdinOnce:\n                      description: Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false\n                      type: boolean\n                    terminationMessagePath:\n                      description: 'Optional: Path at which the file to which the container''s termination message will be written is mounted into the container''s filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.'\n                      type: string\n                    terminationMessagePolicy:\n                      description: Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.\n                      type: string\n                    tty:\n                      description: Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.\n                      type: boolean\n                    volumeDevices:\n                      description: volumeDevices is the list of block devices to be used by the container.\n                      items:\n                        description: volumeDevice describes a mapping of a raw block device within a container.\n                        properties:\n                          devicePath:\n                            description: devicePath is the path inside of the container that the device will be mapped to.\n                            type: string\n                          name:\n                            description: name must match the name of a persistentVolumeClaim in the pod\n                            type: string\n                        required:\n                        - devicePath\n                        - name\n                        type: object\n                      type: array\n                    volumeMounts:\n                      description: Pod volumes to mount into the container's filesystem. Cannot be updated.\n                      items:\n                        description: VolumeMount describes a mounting of a Volume within a container.\n                        properties:\n                          mountPath:\n                            description: Path within the container at which the volume should be mounted.  Must not contain ':'.\n                            type: string\n                          mountPropagation:\n                            description: mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10.\n                            type: string\n                          name:\n                            description: This must match the Name of a Volume.\n                            type: string\n                          readOnly:\n                            description: Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.\n                            type: boolean\n                          subPath:\n                            description: Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root).\n                            type: string\n                          subPathExpr:\n                            description: Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to \"\" (volume's root). SubPathExpr and SubPath are mutually exclusive.\n                            type: string\n                        required:\n                        - mountPath\n                        - name\n                        type: object\n                      type: array\n                    workingDir:\n                      description: Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.\n                      type: string\n                  required:\n                  - name\n                  type: object\n                type: array\n              disableCompaction:\n                description: When true, the Prometheus compaction is disabled.\n                type: boolean\n              enableAdminAPI:\n                description: \"Enables access to the Prometheus web admin API. \\n WARNING: Enabling the admin APIs enables mutating endpoints, to delete data, shutdown Prometheus, and more. Enabling this should be done with care and the user is advised to add additional authentication authorization via a proxy to ensure only clients authorized to perform these actions can do so. \\n For more information: https://prometheus.io/docs/prometheus/latest/querying/api/#tsdb-admin-apis\"\n                type: boolean\n              enableFeatures:\n                description: \"Enable access to Prometheus feature flags. By default, no features are enabled. \\n Enabling features which are disabled by default is entirely outside the scope of what the maintainers will support and by doing so, you accept that this behaviour may break at any time without notice. \\n For more information see https://prometheus.io/docs/prometheus/latest/feature_flags/\"\n                items:\n                  type: string\n                type: array\n              enableRemoteWriteReceiver:\n                description: \"Enable Prometheus to be used as a receiver for the Prometheus remote write protocol. \\n WARNING: This is not considered an efficient way of ingesting samples. Use it with caution for specific low-volume use cases. It is not suitable for replacing the ingestion via scraping and turning Prometheus into a push-based metrics collection system. For more information see https://prometheus.io/docs/prometheus/latest/querying/api/#remote-write-receiver \\n It requires Prometheus >= v2.33.0.\"\n                type: boolean\n              enforcedBodySizeLimit:\n                description: \"When defined, enforcedBodySizeLimit specifies a global limit on the size of uncompressed response body that will be accepted by Prometheus. Targets responding with a body larger than this many bytes will cause the scrape to fail. \\n It requires Prometheus >= v2.28.0.\"\n                pattern: (^0|([0-9]*[.])?[0-9]+((K|M|G|T|E|P)i?)?B)$\n                type: string\n              enforcedLabelLimit:\n                description: \"When defined, enforcedLabelLimit specifies a global limit on the number of labels per sample. The value overrides any `spec.labelLimit` set by ServiceMonitor, PodMonitor, Probe objects unless `spec.labelLimit` is greater than zero and less than `spec.enforcedLabelLimit`. \\n It requires Prometheus >= v2.27.0.\"\n                format: int64\n                type: integer\n              enforcedLabelNameLengthLimit:\n                description: \"When defined, enforcedLabelNameLengthLimit specifies a global limit on the length of labels name per sample. The value overrides any `spec.labelNameLengthLimit` set by ServiceMonitor, PodMonitor, Probe objects unless `spec.labelNameLengthLimit` is greater than zero and less than `spec.enforcedLabelNameLengthLimit`. \\n It requires Prometheus >= v2.27.0.\"\n                format: int64\n                type: integer\n              enforcedLabelValueLengthLimit:\n                description: \"When not null, enforcedLabelValueLengthLimit defines a global limit on the length of labels value per sample. The value overrides any `spec.labelValueLengthLimit` set by ServiceMonitor, PodMonitor, Probe objects unless `spec.labelValueLengthLimit` is greater than zero and less than `spec.enforcedLabelValueLengthLimit`. \\n It requires Prometheus >= v2.27.0.\"\n                format: int64\n                type: integer\n              enforcedNamespaceLabel:\n                description: \"When not empty, a label will be added to \\n 1. All metrics scraped from `ServiceMonitor`, `PodMonitor`, `Probe` and `ScrapeConfig` objects. 2. All metrics generated from recording rules defined in `PrometheusRule` objects. 3. All alerts generated from alerting rules defined in `PrometheusRule` objects. 4. All vector selectors of PromQL expressions defined in `PrometheusRule` objects. \\n The label will not added for objects referenced in `spec.excludedFromEnforcement`. \\n The label's name is this field's value. The label's value is the namespace of the `ServiceMonitor`, `PodMonitor`, `Probe` or `PrometheusRule` object.\"\n                type: string\n              enforcedSampleLimit:\n                description: \"When defined, enforcedSampleLimit specifies a global limit on the number of scraped samples that will be accepted. This overrides any `spec.sampleLimit` set by ServiceMonitor, PodMonitor, Probe objects unless `spec.sampleLimit` is greater than zero and less than than `spec.enforcedSampleLimit`. \\n It is meant to be used by admins to keep the overall number of samples/series under a desired limit.\"\n                format: int64\n                type: integer\n              enforcedTargetLimit:\n                description: \"When defined, enforcedTargetLimit specifies a global limit on the number of scraped targets. The value overrides any `spec.targetLimit` set by ServiceMonitor, PodMonitor, Probe objects unless `spec.targetLimit` is greater than zero and less than `spec.enforcedTargetLimit`. \\n It is meant to be used by admins to to keep the overall number of targets under a desired limit.\"\n                format: int64\n                type: integer\n              evaluationInterval:\n                default: 30s\n                description: 'Interval between rule evaluations. Default: \"30s\"'\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              excludedFromEnforcement:\n                description: \"List of references to PodMonitor, ServiceMonitor, Probe and PrometheusRule objects to be excluded from enforcing a namespace label of origin. \\n It is only applicable if `spec.enforcedNamespaceLabel` set to true.\"\n                items:\n                  description: ObjectReference references a PodMonitor, ServiceMonitor, Probe or PrometheusRule object.\n                  properties:\n                    group:\n                      default: monitoring.coreos.com\n                      description: Group of the referent. When not specified, it defaults to `monitoring.coreos.com`\n                      enum:\n                      - monitoring.coreos.com\n                      type: string\n                    name:\n                      description: Name of the referent. When not set, all resources in the namespace are matched.\n                      type: string\n                    namespace:\n                      description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'\n                      minLength: 1\n                      type: string\n                    resource:\n                      description: Resource of the referent.\n                      enum:\n                      - prometheusrules\n                      - servicemonitors\n                      - podmonitors\n                      - probes\n                      type: string\n                  required:\n                  - namespace\n                  - resource\n                  type: object\n                type: array\n              exemplars:\n                description: Exemplars related settings that are runtime reloadable. It requires to enable the `exemplar-storage` feature flag to be effective.\n                properties:\n                  maxSize:\n                    description: \"Maximum number of exemplars stored in memory for all series. \\n exemplar-storage itself must be enabled using the `spec.enableFeature` option for exemplars to be scraped in the first place. \\n If not set, Prometheus uses its default value. A value of zero or less than zero disables the storage.\"\n                    format: int64\n                    type: integer\n                type: object\n              externalLabels:\n                additionalProperties:\n                  type: string\n                description: The labels to add to any time series or alerts when communicating with external systems (federation, remote storage, Alertmanager). Labels defined by `spec.replicaExternalLabelName` and `spec.prometheusExternalLabelName` take precedence over this list.\n                type: object\n              externalUrl:\n                description: The external URL under which the Prometheus service is externally available. This is necessary to generate correct URLs (for instance if Prometheus is accessible behind an Ingress resource).\n                type: string\n              hostAliases:\n                description: Optional list of hosts and IPs that will be injected into the Pod's hosts file if specified.\n                items:\n                  description: HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the pod's hosts file.\n                  properties:\n                    hostnames:\n                      description: Hostnames for the above IP address.\n                      items:\n                        type: string\n                      type: array\n                    ip:\n                      description: IP address of the host file entry.\n                      type: string\n                  required:\n                  - hostnames\n                  - ip\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - ip\n                x-kubernetes-list-type: map\n              hostNetwork:\n                description: \"Use the host's network namespace if true. \\n Make sure to understand the security implications if you want to enable it (https://kubernetes.io/docs/concepts/configuration/overview/). \\n When hostNetwork is enabled, this will set the DNS policy to `ClusterFirstWithHostNet` automatically.\"\n                type: boolean\n              ignoreNamespaceSelectors:\n                description: When true, `spec.namespaceSelector` from all PodMonitor, ServiceMonitor and Probe objects will be ignored. They will only discover targets within the namespace of the PodMonitor, ServiceMonitor and Probe objec.\n                type: boolean\n              image:\n                description: \"Container image name for Prometheus. If specified, it takes precedence over the `spec.baseImage`, `spec.tag` and `spec.sha` fields. \\n Specifying `spec.version` is still necessary to ensure the Prometheus Operator knows which version of Prometheus is being configured. \\n If neither `spec.image` nor `spec.baseImage` are defined, the operator will use the latest upstream version of Prometheus available at the time when the operator was released.\"\n                type: string\n              imagePullPolicy:\n                description: Image pull policy for the 'prometheus', 'init-config-reloader' and 'config-reloader' containers. See https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy for more details.\n                enum:\n                - \"\"\n                - Always\n                - Never\n                - IfNotPresent\n                type: string\n              imagePullSecrets:\n                description: An optional list of references to Secrets in the same namespace to use for pulling images from registries. See http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod\n                items:\n                  description: LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.\n                  properties:\n                    name:\n                      description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                      type: string\n                  type: object\n                  x-kubernetes-map-type: atomic\n                type: array\n              initContainers:\n                description: \"InitContainers allows injecting initContainers to the Pod definition. Those can be used to e.g.  fetch secrets for injection into the Prometheus configuration from external sources. Any errors during the execution of an initContainer will lead to a restart of the Pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ InitContainers described here modify an operator generated init containers if they share the same name and modifications are done via a strategic merge patch. \\n The names of init container name managed by the operator are: * `init-config-reloader`. \\n Overriding init containers is entirely outside the scope of what the maintainers will support and by doing so, you accept that this behaviour may break at any time without notice.\"\n                items:\n                  description: A single application container that you want to run within a pod.\n                  properties:\n                    args:\n                      description: 'Arguments to the entrypoint. The container image''s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    command:\n                      description: 'Entrypoint array. Not executed within a shell. The container image''s ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    env:\n                      description: List of environment variables to set in the container. Cannot be updated.\n                      items:\n                        description: EnvVar represents an environment variable present in a Container.\n                        properties:\n                          name:\n                            description: Name of the environment variable. Must be a C_IDENTIFIER.\n                            type: string\n                          value:\n                            description: 'Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to \"\".'\n                            type: string\n                          valueFrom:\n                            description: Source for the environment variable's value. Cannot be used if value is not empty.\n                            properties:\n                              configMapKeyRef:\n                                description: Selects a key of a ConfigMap.\n                                properties:\n                                  key:\n                                    description: The key to select.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the ConfigMap or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              fieldRef:\n                                description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels[''<KEY>'']`, `metadata.annotations[''<KEY>'']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.'\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              resourceFieldRef:\n                                description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.'\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes, optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              secretKeyRef:\n                                description: Selects a key of a secret in the pod's namespace\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            type: object\n                        required:\n                        - name\n                        type: object\n                      type: array\n                    envFrom:\n                      description: List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.\n                      items:\n                        description: EnvFromSource represents the source of a set of ConfigMaps\n                        properties:\n                          configMapRef:\n                            description: The ConfigMap to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          prefix:\n                            description: An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\n                            type: string\n                          secretRef:\n                            description: The Secret to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      type: array\n                    image:\n                      description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.'\n                      type: string\n                    imagePullPolicy:\n                      description: 'Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images'\n                      type: string\n                    lifecycle:\n                      description: Actions that the management system should take in response to container lifecycle events. Cannot be updated.\n                      properties:\n                        postStart:\n                          description: 'PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request. HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                        preStop:\n                          description: 'PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The Pod''s termination grace period countdown begins before the PreStop hook is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod''s termination grace period (unless delayed by finalizers). Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request. HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                      type: object\n                    livenessProbe:\n                      description: 'Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \\n If this is not specified, the default behavior is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host. Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    name:\n                      description: Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated.\n                      type: string\n                    ports:\n                      description: List of ports to expose from the container. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Modifying this array with strategic merge patch may corrupt the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255. Cannot be updated.\n                      items:\n                        description: ContainerPort represents a network port in a single container.\n                        properties:\n                          containerPort:\n                            description: Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536.\n                            format: int32\n                            type: integer\n                          hostIP:\n                            description: What host IP to bind the external port to.\n                            type: string\n                          hostPort:\n                            description: Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.\n                            format: int32\n                            type: integer\n                          name:\n                            description: If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.\n                            type: string\n                          protocol:\n                            default: TCP\n                            description: Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".\n                            type: string\n                        required:\n                        - containerPort\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - containerPort\n                      - protocol\n                      x-kubernetes-list-type: map\n                    readinessProbe:\n                      description: 'Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \\n If this is not specified, the default behavior is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host. Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    resizePolicy:\n                      description: Resources resize policy for the container.\n                      items:\n                        description: ContainerResizePolicy represents resource resize policy for the container.\n                        properties:\n                          resourceName:\n                            description: 'Name of the resource to which this resource resize policy applies. Supported values: cpu, memory.'\n                            type: string\n                          restartPolicy:\n                            description: Restart policy to apply when specified resource is resized. If not specified, it defaults to NotRequired.\n                            type: string\n                        required:\n                        - resourceName\n                        - restartPolicy\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    resources:\n                      description: 'Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                      properties:\n                        claims:\n                          description: \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\"\n                          items:\n                            description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                            properties:\n                              name:\n                                description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\n                                type: string\n                            required:\n                            - name\n                            type: object\n                          type: array\n                          x-kubernetes-list-map-keys:\n                          - name\n                          x-kubernetes-list-type: map\n                        limits:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                        requests:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                      type: object\n                    securityContext:\n                      description: 'SecurityContext defines the security options the container should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/'\n                      properties:\n                        allowPrivilegeEscalation:\n                          description: 'AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN Note that this field cannot be set when spec.os.name is windows.'\n                          type: boolean\n                        capabilities:\n                          description: The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            add:\n                              description: Added capabilities\n                              items:\n                                description: Capability represent POSIX capabilities type\n                                type: string\n                              type: array\n                            drop:\n                              description: Removed capabilities\n                              items:\n                                description: Capability represent POSIX capabilities type\n                                type: string\n                              type: array\n                          type: object\n                        privileged:\n                          description: Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. Note that this field cannot be set when spec.os.name is windows.\n                          type: boolean\n                        procMount:\n                          description: procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. Note that this field cannot be set when spec.os.name is windows.\n                          type: string\n                        readOnlyRootFilesystem:\n                          description: Whether this container has a read-only root filesystem. Default is false. Note that this field cannot be set when spec.os.name is windows.\n                          type: boolean\n                        runAsGroup:\n                          description: The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        runAsNonRoot:\n                          description: Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\n                          type: boolean\n                        runAsUser:\n                          description: The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        seLinuxOptions:\n                          description: The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container.  May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            level:\n                              description: Level is SELinux level label that applies to the container.\n                              type: string\n                            role:\n                              description: Role is a SELinux role label that applies to the container.\n                              type: string\n                            type:\n                              description: Type is a SELinux type label that applies to the container.\n                              type: string\n                            user:\n                              description: User is a SELinux user label that applies to the container.\n                              type: string\n                          type: object\n                        seccompProfile:\n                          description: The seccomp options to use by this container. If seccomp options are provided at both the pod & container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            localhostProfile:\n                              description: localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is \"Localhost\".\n                              type: string\n                            type:\n                              description: \"type indicates which kind of seccomp profile will be applied. Valid options are: \\n Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.\"\n                              type: string\n                          required:\n                          - type\n                          type: object\n                        windowsOptions:\n                          description: The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux.\n                          properties:\n                            gmsaCredentialSpec:\n                              description: GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.\n                              type: string\n                            gmsaCredentialSpecName:\n                              description: GMSACredentialSpecName is the name of the GMSA credential spec to use.\n                              type: string\n                            hostProcess:\n                              description: HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).  In addition, if HostProcess is true then HostNetwork must also be set to true.\n                              type: boolean\n                            runAsUserName:\n                              description: The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\n                              type: string\n                          type: object\n                      type: object\n                    startupProbe:\n                      description: 'StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod''s lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \\n If this is not specified, the default behavior is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host. Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    stdin:\n                      description: Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false.\n                      type: boolean\n                    stdinOnce:\n                      description: Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false\n                      type: boolean\n                    terminationMessagePath:\n                      description: 'Optional: Path at which the file to which the container''s termination message will be written is mounted into the container''s filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.'\n                      type: string\n                    terminationMessagePolicy:\n                      description: Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.\n                      type: string\n                    tty:\n                      description: Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.\n                      type: boolean\n                    volumeDevices:\n                      description: volumeDevices is the list of block devices to be used by the container.\n                      items:\n                        description: volumeDevice describes a mapping of a raw block device within a container.\n                        properties:\n                          devicePath:\n                            description: devicePath is the path inside of the container that the device will be mapped to.\n                            type: string\n                          name:\n                            description: name must match the name of a persistentVolumeClaim in the pod\n                            type: string\n                        required:\n                        - devicePath\n                        - name\n                        type: object\n                      type: array\n                    volumeMounts:\n                      description: Pod volumes to mount into the container's filesystem. Cannot be updated.\n                      items:\n                        description: VolumeMount describes a mounting of a Volume within a container.\n                        properties:\n                          mountPath:\n                            description: Path within the container at which the volume should be mounted.  Must not contain ':'.\n                            type: string\n                          mountPropagation:\n                            description: mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10.\n                            type: string\n                          name:\n                            description: This must match the Name of a Volume.\n                            type: string\n                          readOnly:\n                            description: Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.\n                            type: boolean\n                          subPath:\n                            description: Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root).\n                            type: string\n                          subPathExpr:\n                            description: Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to \"\" (volume's root). SubPathExpr and SubPath are mutually exclusive.\n                            type: string\n                        required:\n                        - mountPath\n                        - name\n                        type: object\n                      type: array\n                    workingDir:\n                      description: Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.\n                      type: string\n                  required:\n                  - name\n                  type: object\n                type: array\n              listenLocal:\n                description: When true, the Prometheus server listens on the loopback address instead of the Pod IP's address.\n                type: boolean\n              logFormat:\n                description: Log format for Log level for Prometheus and the config-reloader sidecar.\n                enum:\n                - \"\"\n                - logfmt\n                - json\n                type: string\n              logLevel:\n                description: Log level for Prometheus and the config-reloader sidecar.\n                enum:\n                - \"\"\n                - debug\n                - info\n                - warn\n                - error\n                type: string\n              minReadySeconds:\n                description: \"Minimum number of seconds for which a newly created Pod should be ready without any of its container crashing for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready) \\n This is an alpha field from kubernetes 1.22 until 1.24 which requires enabling the StatefulSetMinReadySeconds feature gate.\"\n                format: int32\n                type: integer\n              nodeSelector:\n                additionalProperties:\n                  type: string\n                description: Defines on which Nodes the Pods are scheduled.\n                type: object\n              overrideHonorLabels:\n                description: When true, Prometheus resolves label conflicts by renaming the labels in the scraped data to \"exported_<label value>\" for all targets created from service and pod monitors. Otherwise the HonorLabels field of the service or pod monitor applies.\n                type: boolean\n              overrideHonorTimestamps:\n                description: When true, Prometheus ignores the timestamps for all the targets created from service and pod monitors. Otherwise the HonorTimestamps field of the service or pod monitor applies.\n                type: boolean\n              paused:\n                description: When a Prometheus deployment is paused, no actions except for deletion will be performed on the underlying objects.\n                type: boolean\n              podMetadata:\n                description: PodMetadata configures labels and annotations which are propagated to the Prometheus pods.\n                properties:\n                  annotations:\n                    additionalProperties:\n                      type: string\n                    description: 'Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations'\n                    type: object\n                  labels:\n                    additionalProperties:\n                      type: string\n                    description: 'Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels'\n                    type: object\n                  name:\n                    description: 'Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names'\n                    type: string\n                type: object\n              podMonitorNamespaceSelector:\n                description: Namespaces to match for PodMonitors discovery. An empty label selector matches all namespaces. A null label selector matches the current namespace only.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              podMonitorSelector:\n                description: \"*Experimental* PodMonitors to be selected for target discovery. An empty label selector matches all objects. A null label selector matches no objects. \\n If `spec.serviceMonitorSelector`, `spec.podMonitorSelector`, `spec.probeSelector` and `spec.scrapeConfigSelector` are null, the Prometheus configuration is unmanaged. The Prometheus operator will ensure that the Prometheus configuration's Secret exists, but it is the responsibility of the user to provide the raw gzipped Prometheus configuration under the `prometheus.yaml.gz` key. This behavior is *deprecated* and will be removed in the next major version of the custom resource definition. It is recommended to use `spec.additionalScrapeConfigs` instead.\"\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              podTargetLabels:\n                description: PodTargetLabels are appended to the `spec.podTargetLabels` field of all PodMonitor and ServiceMonitor objects.\n                items:\n                  type: string\n                type: array\n              portName:\n                default: web\n                description: 'Port name used for the pods and governing service. Default: \"web\"'\n                type: string\n              priorityClassName:\n                description: Priority class assigned to the Pods.\n                type: string\n              probeNamespaceSelector:\n                description: '*Experimental* Namespaces to match for Probe discovery. An empty label selector matches all namespaces. A null label selector matches the current namespace only.'\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              probeSelector:\n                description: \"*Experimental* Probes to be selected for target discovery. An empty label selector matches all objects. A null label selector matches no objects. \\n If `spec.serviceMonitorSelector`, `spec.podMonitorSelector`, `spec.probeSelector` and `spec.scrapeConfigSelector` are null, the Prometheus configuration is unmanaged. The Prometheus operator will ensure that the Prometheus configuration's Secret exists, but it is the responsibility of the user to provide the raw gzipped Prometheus configuration under the `prometheus.yaml.gz` key. This behavior is *deprecated* and will be removed in the next major version of the custom resource definition. It is recommended to use `spec.additionalScrapeConfigs` instead.\"\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              prometheusExternalLabelName:\n                description: \"Name of Prometheus external label used to denote the Prometheus instance name. The external label will _not_ be added when the field is set to the empty string (`\\\"\\\"`). \\n Default: \\\"prometheus\\\"\"\n                type: string\n              prometheusRulesExcludedFromEnforce:\n                description: 'Defines the list of PrometheusRule objects to which the namespace label enforcement doesn''t apply. This is only relevant when `spec.enforcedNamespaceLabel` is set to true. *Deprecated: use `spec.excludedFromEnforcement` instead.*'\n                items:\n                  description: PrometheusRuleExcludeConfig enables users to configure excluded PrometheusRule names and their namespaces to be ignored while enforcing namespace label for alerts and metrics.\n                  properties:\n                    ruleName:\n                      description: Name of the excluded PrometheusRule object.\n                      type: string\n                    ruleNamespace:\n                      description: Namespace of the excluded PrometheusRule object.\n                      type: string\n                  required:\n                  - ruleName\n                  - ruleNamespace\n                  type: object\n                type: array\n              query:\n                description: QuerySpec defines the configuration of the Promethus query service.\n                properties:\n                  lookbackDelta:\n                    description: The delta difference allowed for retrieving metrics during expression evaluations.\n                    type: string\n                  maxConcurrency:\n                    description: Number of concurrent queries that can be run at once.\n                    format: int32\n                    minimum: 1\n                    type: integer\n                  maxSamples:\n                    description: Maximum number of samples a single query can load into memory. Note that queries will fail if they would load more samples than this into memory, so this also limits the number of samples a query can return.\n                    format: int32\n                    type: integer\n                  timeout:\n                    description: Maximum time a query may take before being aborted.\n                    pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                    type: string\n                type: object\n              queryLogFile:\n                description: \"queryLogFile specifies where the file to which PromQL queries are logged. \\n If the filename has an empty path, e.g. 'query.log', The Prometheus Pods will mount the file into an emptyDir volume at `/var/log/prometheus`. If a full path is provided, e.g. '/var/log/prometheus/query.log', you must mount a volume in the specified directory and it must be writable. This is because the prometheus container runs with a read-only root filesystem for security reasons. Alternatively, the location can be set to a standard I/O stream, e.g. `/dev/stdout`, to log query information to the default Prometheus log stream.\"\n                type: string\n              remoteRead:\n                description: Defines the list of remote read configurations.\n                items:\n                  description: RemoteReadSpec defines the configuration for Prometheus to read back samples from a remote endpoint.\n                  properties:\n                    authorization:\n                      description: \"Authorization section for the URL. \\n It requires Prometheus >= v2.26.0. \\n Cannot be set at the same time as `basicAuth`, or `oauth2`.\"\n                      properties:\n                        credentials:\n                          description: Selects a key of a Secret in the namespace that contains the credentials for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        credentialsFile:\n                          description: File to read a secret from, mutually exclusive with `credentials`.\n                          type: string\n                        type:\n                          description: \"Defines the authentication type. The value is case-insensitive. \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\"\n                          type: string\n                      type: object\n                    basicAuth:\n                      description: \"BasicAuth configuration for the URL. \\n Cannot be set at the same time as `authorization`, or `oauth2`.\"\n                      properties:\n                        password:\n                          description: The secret in the service monitor namespace that contains the password for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        username:\n                          description: The secret in the service monitor namespace that contains the username for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      type: object\n                    bearerToken:\n                      description: \"*Warning: this field shouldn't be used because the token value appears in clear-text. Prefer using `authorization`.* \\n *Deprecated: this will be removed in a future release.*\"\n                      type: string\n                    bearerTokenFile:\n                      description: \"File from which to read the bearer token for the URL. \\n *Deprecated: this will be removed in a future release. Prefer using `authorization`.*\"\n                      type: string\n                    filterExternalLabels:\n                      description: \"Whether to use the external labels as selectors for the remote read endpoint. \\n It requires Prometheus >= v2.34.0.\"\n                      type: boolean\n                    followRedirects:\n                      description: \"Configure whether HTTP requests follow HTTP 3xx redirects. \\n It requires Prometheus >= v2.26.0.\"\n                      type: boolean\n                    headers:\n                      additionalProperties:\n                        type: string\n                      description: Custom HTTP headers to be sent along with each remote read request. Be aware that headers that are set by Prometheus itself can't be overwritten. Only valid in Prometheus versions 2.26.0 and newer.\n                      type: object\n                    name:\n                      description: \"The name of the remote read queue, it must be unique if specified. The name is used in metrics and logging in order to differentiate read configurations. \\n It requires Prometheus >= v2.15.0.\"\n                      type: string\n                    oauth2:\n                      description: \"OAuth2 configuration for the URL. \\n It requires Prometheus >= v2.27.0. \\n Cannot be set at the same time as `authorization`, or `basicAuth`.\"\n                      properties:\n                        clientId:\n                          description: The secret or configmap containing the OAuth2 client id\n                          properties:\n                            configMap:\n                              description: ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        clientSecret:\n                          description: The secret containing the OAuth2 client secret\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        endpointParams:\n                          additionalProperties:\n                            type: string\n                          description: Parameters to append to the token URL\n                          type: object\n                        scopes:\n                          description: OAuth2 scopes used for the token request\n                          items:\n                            type: string\n                          type: array\n                        tokenUrl:\n                          description: The URL to fetch the token from\n                          minLength: 1\n                          type: string\n                      required:\n                      - clientId\n                      - clientSecret\n                      - tokenUrl\n                      type: object\n                    proxyUrl:\n                      description: Optional ProxyURL.\n                      type: string\n                    readRecent:\n                      description: Whether reads should be made for queries for time ranges that the local storage should have complete data for.\n                      type: boolean\n                    remoteTimeout:\n                      description: Timeout for requests to the remote read endpoint.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    requiredMatchers:\n                      additionalProperties:\n                        type: string\n                      description: An optional list of equality matchers which have to be present in a selector to query the remote read endpoint.\n                      type: object\n                    tlsConfig:\n                      description: TLS Config to use for the URL.\n                      properties:\n                        ca:\n                          description: Certificate authority used when verifying server certificates.\n                          properties:\n                            configMap:\n                              description: ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        caFile:\n                          description: Path to the CA cert in the Prometheus container to use for the targets.\n                          type: string\n                        cert:\n                          description: Client certificate to present when doing client-authentication.\n                          properties:\n                            configMap:\n                              description: ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        certFile:\n                          description: Path to the client cert file in the Prometheus container for the targets.\n                          type: string\n                        insecureSkipVerify:\n                          description: Disable target certificate validation.\n                          type: boolean\n                        keyFile:\n                          description: Path to the client key file in the Prometheus container for the targets.\n                          type: string\n                        keySecret:\n                          description: Secret containing the client key file for the targets.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        serverName:\n                          description: Used to verify the hostname for the targets.\n                          type: string\n                      type: object\n                    url:\n                      description: The URL of the endpoint to query from.\n                      type: string\n                  required:\n                  - url\n                  type: object\n                type: array\n              remoteWrite:\n                description: Defines the list of remote write configurations.\n                items:\n                  description: RemoteWriteSpec defines the configuration to write samples from Prometheus to a remote endpoint.\n                  properties:\n                    authorization:\n                      description: \"Authorization section for the URL. \\n It requires Prometheus >= v2.26.0. \\n Cannot be set at the same time as `sigv4`, `basicAuth`, or `oauth2`.\"\n                      properties:\n                        credentials:\n                          description: Selects a key of a Secret in the namespace that contains the credentials for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        credentialsFile:\n                          description: File to read a secret from, mutually exclusive with `credentials`.\n                          type: string\n                        type:\n                          description: \"Defines the authentication type. The value is case-insensitive. \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\"\n                          type: string\n                      type: object\n                    basicAuth:\n                      description: \"BasicAuth configuration for the URL. \\n Cannot be set at the same time as `sigv4`, `authorization`, or `oauth2`.\"\n                      properties:\n                        password:\n                          description: The secret in the service monitor namespace that contains the password for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        username:\n                          description: The secret in the service monitor namespace that contains the username for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      type: object\n                    bearerToken:\n                      description: \"*Warning: this field shouldn't be used because the token value appears in clear-text. Prefer using `authorization`.* \\n *Deprecated: this will be removed in a future release.*\"\n                      type: string\n                    bearerTokenFile:\n                      description: \"File from which to read bearer token for the URL. \\n *Deprecated: this will be removed in a future release. Prefer using `authorization`.*\"\n                      type: string\n                    headers:\n                      additionalProperties:\n                        type: string\n                      description: \"Custom HTTP headers to be sent along with each remote write request. Be aware that headers that are set by Prometheus itself can't be overwritten. \\n It requires Prometheus >= v2.25.0.\"\n                      type: object\n                    metadataConfig:\n                      description: MetadataConfig configures the sending of series metadata to the remote storage.\n                      properties:\n                        send:\n                          description: Defines whether metric metadata is sent to the remote storage or not.\n                          type: boolean\n                        sendInterval:\n                          description: Defines how frequently metric metadata is sent to the remote storage.\n                          pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                          type: string\n                      type: object\n                    name:\n                      description: \"The name of the remote write queue, it must be unique if specified. The name is used in metrics and logging in order to differentiate queues. \\n It requires Prometheus >= v2.15.0.\"\n                      type: string\n                    oauth2:\n                      description: \"OAuth2 configuration for the URL. \\n It requires Prometheus >= v2.27.0. \\n Cannot be set at the same time as `sigv4`, `authorization`, or `basicAuth`.\"\n                      properties:\n                        clientId:\n                          description: The secret or configmap containing the OAuth2 client id\n                          properties:\n                            configMap:\n                              description: ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        clientSecret:\n                          description: The secret containing the OAuth2 client secret\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        endpointParams:\n                          additionalProperties:\n                            type: string\n                          description: Parameters to append to the token URL\n                          type: object\n                        scopes:\n                          description: OAuth2 scopes used for the token request\n                          items:\n                            type: string\n                          type: array\n                        tokenUrl:\n                          description: The URL to fetch the token from\n                          minLength: 1\n                          type: string\n                      required:\n                      - clientId\n                      - clientSecret\n                      - tokenUrl\n                      type: object\n                    proxyUrl:\n                      description: Optional ProxyURL.\n                      type: string\n                    queueConfig:\n                      description: QueueConfig allows tuning of the remote write queue parameters.\n                      properties:\n                        batchSendDeadline:\n                          description: BatchSendDeadline is the maximum time a sample will wait in buffer.\n                          type: string\n                        capacity:\n                          description: Capacity is the number of samples to buffer per shard before we start dropping them.\n                          type: integer\n                        maxBackoff:\n                          description: MaxBackoff is the maximum retry delay.\n                          type: string\n                        maxRetries:\n                          description: MaxRetries is the maximum number of times to retry a batch on recoverable errors.\n                          type: integer\n                        maxSamplesPerSend:\n                          description: MaxSamplesPerSend is the maximum number of samples per send.\n                          type: integer\n                        maxShards:\n                          description: MaxShards is the maximum number of shards, i.e. amount of concurrency.\n                          type: integer\n                        minBackoff:\n                          description: MinBackoff is the initial retry delay. Gets doubled for every retry.\n                          type: string\n                        minShards:\n                          description: MinShards is the minimum number of shards, i.e. amount of concurrency.\n                          type: integer\n                        retryOnRateLimit:\n                          description: Retry upon receiving a 429 status code from the remote-write storage. This is experimental feature and might change in the future.\n                          type: boolean\n                      type: object\n                    remoteTimeout:\n                      description: Timeout for requests to the remote write endpoint.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    sendExemplars:\n                      description: \"Enables sending of exemplars over remote write. Note that exemplar-storage itself must be enabled using the `spec.enableFeature` option for exemplars to be scraped in the first place. \\n It requires Prometheus >= v2.27.0.\"\n                      type: boolean\n                    sendNativeHistograms:\n                      description: \"Enables sending of native histograms, also known as sparse histograms over remote write. \\n It requires Prometheus >= v2.40.0.\"\n                      type: boolean\n                    sigv4:\n                      description: \"Sigv4 allows to configures AWS's Signature Verification 4 for the URL. \\n It requires Prometheus >= v2.26.0. \\n Cannot be set at the same time as `authorization`, `basicAuth`, or `oauth2`.\"\n                      properties:\n                        accessKey:\n                          description: AccessKey is the AWS API key. If not specified, the environment variable `AWS_ACCESS_KEY_ID` is used.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        profile:\n                          description: Profile is the named AWS profile used to authenticate.\n                          type: string\n                        region:\n                          description: Region is the AWS region. If blank, the region from the default credentials chain used.\n                          type: string\n                        roleArn:\n                          description: RoleArn is the named AWS profile used to authenticate.\n                          type: string\n                        secretKey:\n                          description: SecretKey is the AWS API secret. If not specified, the environment variable `AWS_SECRET_ACCESS_KEY` is used.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      type: object\n                    tlsConfig:\n                      description: TLS Config to use for the URL.\n                      properties:\n                        ca:\n                          description: Certificate authority used when verifying server certificates.\n                          properties:\n                            configMap:\n                              description: ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        caFile:\n                          description: Path to the CA cert in the Prometheus container to use for the targets.\n                          type: string\n                        cert:\n                          description: Client certificate to present when doing client-authentication.\n                          properties:\n                            configMap:\n                              description: ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        certFile:\n                          description: Path to the client cert file in the Prometheus container for the targets.\n                          type: string\n                        insecureSkipVerify:\n                          description: Disable target certificate validation.\n                          type: boolean\n                        keyFile:\n                          description: Path to the client key file in the Prometheus container for the targets.\n                          type: string\n                        keySecret:\n                          description: Secret containing the client key file for the targets.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        serverName:\n                          description: Used to verify the hostname for the targets.\n                          type: string\n                      type: object\n                    url:\n                      description: The URL of the endpoint to send samples to.\n                      type: string\n                    writeRelabelConfigs:\n                      description: The list of remote write relabel configurations.\n                      items:\n                        description: \"RelabelConfig allows dynamic rewriting of the label set for targets, alerts, scraped samples and remote write samples. \\n More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\"\n                        properties:\n                          action:\n                            default: replace\n                            description: \"Action to perform based on the regex matching. \\n `Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0. `DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0. \\n Default: \\\"Replace\\\"\"\n                            enum:\n                            - replace\n                            - Replace\n                            - keep\n                            - Keep\n                            - drop\n                            - Drop\n                            - hashmod\n                            - HashMod\n                            - labelmap\n                            - LabelMap\n                            - labeldrop\n                            - LabelDrop\n                            - labelkeep\n                            - LabelKeep\n                            - lowercase\n                            - Lowercase\n                            - uppercase\n                            - Uppercase\n                            - keepequal\n                            - KeepEqual\n                            - dropequal\n                            - DropEqual\n                            type: string\n                          modulus:\n                            description: \"Modulus to take of the hash of the source label values. \\n Only applicable when the action is `HashMod`.\"\n                            format: int64\n                            type: integer\n                          regex:\n                            description: Regular expression against which the extracted value is matched.\n                            type: string\n                          replacement:\n                            description: \"Replacement value against which a Replace action is performed if the regular expression matches. \\n Regex capture groups are available.\"\n                            type: string\n                          separator:\n                            description: Separator is the string between concatenated SourceLabels.\n                            type: string\n                          sourceLabels:\n                            description: The source labels select values from existing labels. Their content is concatenated using the configured Separator and matched against the configured regular expression.\n                            items:\n                              description: LabelName is a valid Prometheus label name which may only contain ASCII letters, numbers, as well as underscores.\n                              pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$\n                              type: string\n                            type: array\n                          targetLabel:\n                            description: \"Label to which the resulting string is written in a replacement. \\n It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`, `KeepEqual` and `DropEqual` actions. \\n Regex capture groups are available.\"\n                            type: string\n                        type: object\n                      type: array\n                  required:\n                  - url\n                  type: object\n                type: array\n              replicaExternalLabelName:\n                description: \"Name of Prometheus external label used to denote the replica name. The external label will _not_ be added when the field is set to the empty string (`\\\"\\\"`). \\n Default: \\\"prometheus_replica\\\"\"\n                type: string\n              replicas:\n                description: \"Number of replicas of each shard to deploy for a Prometheus deployment. `spec.replicas` multiplied by `spec.shards` is the total number of Pods created. \\n Default: 1\"\n                format: int32\n                type: integer\n              resources:\n                description: Defines the resources requests and limits of the 'prometheus' container.\n                properties:\n                  claims:\n                    description: \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\"\n                    items:\n                      description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                      properties:\n                        name:\n                          description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\n                          type: string\n                      required:\n                      - name\n                      type: object\n                    type: array\n                    x-kubernetes-list-map-keys:\n                    - name\n                    x-kubernetes-list-type: map\n                  limits:\n                    additionalProperties:\n                      anyOf:\n                      - type: integer\n                      - type: string\n                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                      x-kubernetes-int-or-string: true\n                    description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                    type: object\n                  requests:\n                    additionalProperties:\n                      anyOf:\n                      - type: integer\n                      - type: string\n                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                      x-kubernetes-int-or-string: true\n                    description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                    type: object\n                type: object\n              retention:\n                description: \"How long to retain the Prometheus data. \\n Default: \\\"24h\\\" if `spec.retention` and `spec.retentionSize` are empty.\"\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              retentionSize:\n                description: Maximum number of bytes used by the Prometheus data.\n                pattern: (^0|([0-9]*[.])?[0-9]+((K|M|G|T|E|P)i?)?B)$\n                type: string\n              routePrefix:\n                description: \"The route prefix Prometheus registers HTTP handlers for. \\n This is useful when using `spec.externalURL`, and a proxy is rewriting HTTP routes of a request, and the actual ExternalURL is still true, but the server serves requests under a different route prefix. For example for use with `kubectl proxy`.\"\n                type: string\n              ruleNamespaceSelector:\n                description: Namespaces to match for PrometheusRule discovery. An empty label selector matches all namespaces. A null label selector matches the current namespace only.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              ruleSelector:\n                description: PrometheusRule objects to be selected for rule evaluation. An empty label selector matches all objects. A null label selector matches no objects.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              rules:\n                description: Defines the configuration of the Prometheus rules' engine.\n                properties:\n                  alert:\n                    description: \"Defines the parameters of the Prometheus rules' engine. \\n Any update to these parameters trigger a restart of the pods.\"\n                    properties:\n                      forGracePeriod:\n                        description: \"Minimum duration between alert and restored 'for' state. \\n This is maintained only for alerts with a configured 'for' time greater than the grace period.\"\n                        type: string\n                      forOutageTolerance:\n                        description: Max time to tolerate prometheus outage for restoring 'for' state of alert.\n                        type: string\n                      resendDelay:\n                        description: Minimum amount of time to wait before resending an alert to Alertmanager.\n                        type: string\n                    type: object\n                type: object\n              scrapeConfigNamespaceSelector:\n                description: Namespaces to match for ScrapeConfig discovery. An empty label selector matches all namespaces. A null label selector matches the current current namespace only.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              scrapeConfigSelector:\n                description: \"*Experimental* ScrapeConfigs to be selected for target discovery. An empty label selector matches all objects. A null label selector matches no objects. \\n If `spec.serviceMonitorSelector`, `spec.podMonitorSelector`, `spec.probeSelector` and `spec.scrapeConfigSelector` are null, the Prometheus configuration is unmanaged. The Prometheus operator will ensure that the Prometheus configuration's Secret exists, but it is the responsibility of the user to provide the raw gzipped Prometheus configuration under the `prometheus.yaml.gz` key. This behavior is *deprecated* and will be removed in the next major version of the custom resource definition. It is recommended to use `spec.additionalScrapeConfigs` instead.\"\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              scrapeInterval:\n                default: 30s\n                description: \"Interval between consecutive scrapes. \\n Default: \\\"30s\\\"\"\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              scrapeTimeout:\n                description: Number of seconds to wait until a scrape request times out.\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              secrets:\n                description: Secrets is a list of Secrets in the same namespace as the Prometheus object, which shall be mounted into the Prometheus Pods. Each Secret is added to the StatefulSet definition as a volume named `secret-<secret-name>`. The Secrets are mounted into /etc/prometheus/secrets/<secret-name> in the 'prometheus' container.\n                items:\n                  type: string\n                type: array\n              securityContext:\n                description: SecurityContext holds pod-level security attributes and common container settings. This defaults to the default PodSecurityContext.\n                properties:\n                  fsGroup:\n                    description: \"A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod: \\n 1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw---- \\n If unset, the Kubelet will not modify the ownership and permissions of any volume. Note that this field cannot be set when spec.os.name is windows.\"\n                    format: int64\n                    type: integer\n                  fsGroupChangePolicy:\n                    description: 'fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are \"OnRootMismatch\" and \"Always\". If not specified, \"Always\" is used. Note that this field cannot be set when spec.os.name is windows.'\n                    type: string\n                  runAsGroup:\n                    description: The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows.\n                    format: int64\n                    type: integer\n                  runAsNonRoot:\n                    description: Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\n                    type: boolean\n                  runAsUser:\n                    description: The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows.\n                    format: int64\n                    type: integer\n                  seLinuxOptions:\n                    description: The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container.  May also be set in SecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows.\n                    properties:\n                      level:\n                        description: Level is SELinux level label that applies to the container.\n                        type: string\n                      role:\n                        description: Role is a SELinux role label that applies to the container.\n                        type: string\n                      type:\n                        description: Type is a SELinux type label that applies to the container.\n                        type: string\n                      user:\n                        description: User is a SELinux user label that applies to the container.\n                        type: string\n                    type: object\n                  seccompProfile:\n                    description: The seccomp options to use by the containers in this pod. Note that this field cannot be set when spec.os.name is windows.\n                    properties:\n                      localhostProfile:\n                        description: localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is \"Localhost\".\n                        type: string\n                      type:\n                        description: \"type indicates which kind of seccomp profile will be applied. Valid options are: \\n Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.\"\n                        type: string\n                    required:\n                    - type\n                    type: object\n                  supplementalGroups:\n                    description: A list of groups applied to the first process run in each container, in addition to the container's primary GID, the fsGroup (if specified), and group memberships defined in the container image for the uid of the container process. If unspecified, no additional groups are added to any container. Note that group memberships defined in the container image for the uid of the container process are still effective, even if they are not included in this list. Note that this field cannot be set when spec.os.name is windows.\n                    items:\n                      format: int64\n                      type: integer\n                    type: array\n                  sysctls:\n                    description: Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch. Note that this field cannot be set when spec.os.name is windows.\n                    items:\n                      description: Sysctl defines a kernel parameter to be set\n                      properties:\n                        name:\n                          description: Name of a property to set\n                          type: string\n                        value:\n                          description: Value of a property to set\n                          type: string\n                      required:\n                      - name\n                      - value\n                      type: object\n                    type: array\n                  windowsOptions:\n                    description: The Windows specific settings applied to all containers. If unspecified, the options within a container's SecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux.\n                    properties:\n                      gmsaCredentialSpec:\n                        description: GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.\n                        type: string\n                      gmsaCredentialSpecName:\n                        description: GMSACredentialSpecName is the name of the GMSA credential spec to use.\n                        type: string\n                      hostProcess:\n                        description: HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).  In addition, if HostProcess is true then HostNetwork must also be set to true.\n                        type: boolean\n                      runAsUserName:\n                        description: The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\n                        type: string\n                    type: object\n                type: object\n              serviceAccountName:\n                description: ServiceAccountName is the name of the ServiceAccount to use to run the Prometheus Pods.\n                type: string\n              serviceMonitorNamespaceSelector:\n                description: Namespaces to match for ServicedMonitors discovery. An empty label selector matches all namespaces. A null label selector matches the current namespace only.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              serviceMonitorSelector:\n                description: \"ServiceMonitors to be selected for target discovery. An empty label selector matches all objects. A null label selector matches no objects. \\n If `spec.serviceMonitorSelector`, `spec.podMonitorSelector`, `spec.probeSelector` and `spec.scrapeConfigSelector` are null, the Prometheus configuration is unmanaged. The Prometheus operator will ensure that the Prometheus configuration's Secret exists, but it is the responsibility of the user to provide the raw gzipped Prometheus configuration under the `prometheus.yaml.gz` key. This behavior is *deprecated* and will be removed in the next major version of the custom resource definition. It is recommended to use `spec.additionalScrapeConfigs` instead.\"\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              sha:\n                description: '*Deprecated: use ''spec.image'' instead. The image''s digest can be specified as part of the image name.*'\n                type: string\n              shards:\n                description: \"EXPERIMENTAL: Number of shards to distribute targets onto. `spec.replicas` multiplied by `spec.shards` is the total number of Pods created. \\n Note that scaling down shards will not reshard data onto remaining instances, it must be manually moved. Increasing shards will not reshard data either but it will continue to be available from the same instances. To query globally, use Thanos sidecar and Thanos querier or remote write data to a central location. \\n Sharding is performed on the content of the `__address__` target meta-label for PodMonitors and ServiceMonitors and `__param_target__` for Probes. \\n Default: 1\"\n                format: int32\n                type: integer\n              storage:\n                description: Storage defines the storage used by Prometheus.\n                properties:\n                  disableMountSubPath:\n                    description: '*Deprecated: subPath usage will be removed in a future release.*'\n                    type: boolean\n                  emptyDir:\n                    description: 'EmptyDirVolumeSource to be used by the StatefulSet. If specified, it takes precedence over `ephemeral` and `volumeClaimTemplate`. More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir'\n                    properties:\n                      medium:\n                        description: 'medium represents what type of storage medium should back this directory. The default is \"\" which means to use the node''s default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                        type: string\n                      sizeLimit:\n                        anyOf:\n                        - type: integer\n                        - type: string\n                        description: 'sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                        x-kubernetes-int-or-string: true\n                    type: object\n                  ephemeral:\n                    description: 'EphemeralVolumeSource to be used by the StatefulSet. This is a beta field in k8s 1.21 and GA in 1.15. For lower versions, starting with k8s 1.19, it requires enabling the GenericEphemeralVolume feature gate. More info: https://kubernetes.io/docs/concepts/storage/ephemeral-volumes/#generic-ephemeral-volumes'\n                    properties:\n                      volumeClaimTemplate:\n                        description: \"Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod.  The name of the PVC will be `<pod name>-<volume name>` where `<volume name>` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long). \\n An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. \\n This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. \\n Required, must not be nil.\"\n                        properties:\n                          metadata:\n                            description: May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.\n                            type: object\n                          spec:\n                            description: The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.\n                            properties:\n                              accessModes:\n                                description: 'accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                                items:\n                                  type: string\n                                type: array\n                              dataSource:\n                                description: 'dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.'\n                                properties:\n                                  apiGroup:\n                                    description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.\n                                    type: string\n                                  kind:\n                                    description: Kind is the type of resource being referenced\n                                    type: string\n                                  name:\n                                    description: Name is the name of resource being referenced\n                                    type: string\n                                required:\n                                - kind\n                                - name\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              dataSourceRef:\n                                description: 'dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn''t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn''t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.'\n                                properties:\n                                  apiGroup:\n                                    description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.\n                                    type: string\n                                  kind:\n                                    description: Kind is the type of resource being referenced\n                                    type: string\n                                  name:\n                                    description: Name is the name of resource being referenced\n                                    type: string\n                                  namespace:\n                                    description: Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\n                                    type: string\n                                required:\n                                - kind\n                                - name\n                                type: object\n                              resources:\n                                description: 'resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'\n                                properties:\n                                  claims:\n                                    description: \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\"\n                                    items:\n                                      description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                                      properties:\n                                        name:\n                                          description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\n                                          type: string\n                                      required:\n                                      - name\n                                      type: object\n                                    type: array\n                                    x-kubernetes-list-map-keys:\n                                    - name\n                                    x-kubernetes-list-type: map\n                                  limits:\n                                    additionalProperties:\n                                      anyOf:\n                                      - type: integer\n                                      - type: string\n                                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                      x-kubernetes-int-or-string: true\n                                    description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                    type: object\n                                  requests:\n                                    additionalProperties:\n                                      anyOf:\n                                      - type: integer\n                                      - type: string\n                                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                      x-kubernetes-int-or-string: true\n                                    description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                    type: object\n                                type: object\n                              selector:\n                                description: selector is a label query over volumes to consider for binding.\n                                properties:\n                                  matchExpressions:\n                                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                    items:\n                                      description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                      properties:\n                                        key:\n                                          description: key is the label key that the selector applies to.\n                                          type: string\n                                        operator:\n                                          description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                          type: string\n                                        values:\n                                          description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                          items:\n                                            type: string\n                                          type: array\n                                      required:\n                                      - key\n                                      - operator\n                                      type: object\n                                    type: array\n                                  matchLabels:\n                                    additionalProperties:\n                                      type: string\n                                    description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                    type: object\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              storageClassName:\n                                description: 'storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'\n                                type: string\n                              volumeMode:\n                                description: volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.\n                                type: string\n                              volumeName:\n                                description: volumeName is the binding reference to the PersistentVolume backing this claim.\n                                type: string\n                            type: object\n                        required:\n                        - spec\n                        type: object\n                    type: object\n                  volumeClaimTemplate:\n                    description: Defines the PVC spec to be used by the Prometheus StatefulSets. The easiest way to use a volume that cannot be automatically provisioned is to use a label selector alongside manually created PersistentVolumes.\n                    properties:\n                      apiVersion:\n                        description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n                        type: string\n                      kind:\n                        description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n                        type: string\n                      metadata:\n                        description: EmbeddedMetadata contains metadata relevant to an EmbeddedResource.\n                        properties:\n                          annotations:\n                            additionalProperties:\n                              type: string\n                            description: 'Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations'\n                            type: object\n                          labels:\n                            additionalProperties:\n                              type: string\n                            description: 'Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels'\n                            type: object\n                          name:\n                            description: 'Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names'\n                            type: string\n                        type: object\n                      spec:\n                        description: 'Defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'\n                        properties:\n                          accessModes:\n                            description: 'accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                            items:\n                              type: string\n                            type: array\n                          dataSource:\n                            description: 'dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.'\n                            properties:\n                              apiGroup:\n                                description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.\n                                type: string\n                              kind:\n                                description: Kind is the type of resource being referenced\n                                type: string\n                              name:\n                                description: Name is the name of resource being referenced\n                                type: string\n                            required:\n                            - kind\n                            - name\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          dataSourceRef:\n                            description: 'dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn''t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn''t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.'\n                            properties:\n                              apiGroup:\n                                description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.\n                                type: string\n                              kind:\n                                description: Kind is the type of resource being referenced\n                                type: string\n                              name:\n                                description: Name is the name of resource being referenced\n                                type: string\n                              namespace:\n                                description: Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\n                                type: string\n                            required:\n                            - kind\n                            - name\n                            type: object\n                          resources:\n                            description: 'resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'\n                            properties:\n                              claims:\n                                description: \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\"\n                                items:\n                                  description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                                  properties:\n                                    name:\n                                      description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\n                                      type: string\n                                  required:\n                                  - name\n                                  type: object\n                                type: array\n                                x-kubernetes-list-map-keys:\n                                - name\n                                x-kubernetes-list-type: map\n                              limits:\n                                additionalProperties:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                  x-kubernetes-int-or-string: true\n                                description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                type: object\n                              requests:\n                                additionalProperties:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                  x-kubernetes-int-or-string: true\n                                description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                type: object\n                            type: object\n                          selector:\n                            description: selector is a label query over volumes to consider for binding.\n                            properties:\n                              matchExpressions:\n                                description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                items:\n                                  description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                  properties:\n                                    key:\n                                      description: key is the label key that the selector applies to.\n                                      type: string\n                                    operator:\n                                      description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                      type: string\n                                    values:\n                                      description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                      items:\n                                        type: string\n                                      type: array\n                                  required:\n                                  - key\n                                  - operator\n                                  type: object\n                                type: array\n                              matchLabels:\n                                additionalProperties:\n                                  type: string\n                                description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                type: object\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          storageClassName:\n                            description: 'storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'\n                            type: string\n                          volumeMode:\n                            description: volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.\n                            type: string\n                          volumeName:\n                            description: volumeName is the binding reference to the PersistentVolume backing this claim.\n                            type: string\n                        type: object\n                      status:\n                        description: '*Deprecated: this field is never set.*'\n                        properties:\n                          accessModes:\n                            description: 'accessModes contains the actual access modes the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                            items:\n                              type: string\n                            type: array\n                          allocatedResources:\n                            additionalProperties:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                              x-kubernetes-int-or-string: true\n                            description: allocatedResources is the storage resource within AllocatedResources tracks the capacity allocated to a PVC. It may be larger than the actual capacity when a volume expansion operation is requested. For storage quota, the larger value from allocatedResources and PVC.spec.resources is used. If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation. If a volume expansion capacity request is lowered, allocatedResources is only lowered if there are no expansion operations in progress and if the actual volume capacity is equal or lower than the requested capacity. This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.\n                            type: object\n                          capacity:\n                            additionalProperties:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                              x-kubernetes-int-or-string: true\n                            description: capacity represents the actual resources of the underlying volume.\n                            type: object\n                          conditions:\n                            description: conditions is the current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'.\n                            items:\n                              description: PersistentVolumeClaimCondition contains details about state of pvc\n                              properties:\n                                lastProbeTime:\n                                  description: lastProbeTime is the time we probed the condition.\n                                  format: date-time\n                                  type: string\n                                lastTransitionTime:\n                                  description: lastTransitionTime is the time the condition transitioned from one status to another.\n                                  format: date-time\n                                  type: string\n                                message:\n                                  description: message is the human-readable message indicating details about last transition.\n                                  type: string\n                                reason:\n                                  description: reason is a unique, this should be a short, machine understandable string that gives the reason for condition's last transition. If it reports \"ResizeStarted\" that means the underlying persistent volume is being resized.\n                                  type: string\n                                status:\n                                  type: string\n                                type:\n                                  description: PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type\n                                  type: string\n                              required:\n                              - status\n                              - type\n                              type: object\n                            type: array\n                          phase:\n                            description: phase represents the current phase of PersistentVolumeClaim.\n                            type: string\n                          resizeStatus:\n                            description: resizeStatus stores status of resize operation. ResizeStatus is not set by default but when expansion is complete resizeStatus is set to empty string by resize controller or kubelet. This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.\n                            type: string\n                        type: object\n                    type: object\n                type: object\n              tag:\n                description: '*Deprecated: use ''spec.image'' instead. The image''s tag can be specified as part of the image name.*'\n                type: string\n              thanos:\n                description: \"Defines the configuration of the optional Thanos sidecar. \\n This section is experimental, it may change significantly without deprecation notice in any release.\"\n                properties:\n                  additionalArgs:\n                    description: AdditionalArgs allows setting additional arguments for the Thanos container. The arguments are passed as-is to the Thanos container which may cause issues if they are invalid or not supported the given Thanos version. In case of an argument conflict (e.g. an argument which is already set by the operator itself) or when providing an invalid argument, the reconciliation will fail and an error will be logged.\n                    items:\n                      description: Argument as part of the AdditionalArgs list.\n                      properties:\n                        name:\n                          description: Name of the argument, e.g. \"scrape.discovery-reload-interval\".\n                          minLength: 1\n                          type: string\n                        value:\n                          description: Argument value, e.g. 30s. Can be empty for name-only arguments (e.g. --storage.tsdb.no-lockfile)\n                          type: string\n                      required:\n                      - name\n                      type: object\n                    type: array\n                  baseImage:\n                    description: '*Deprecated: use ''image'' instead.*'\n                    type: string\n                  blockSize:\n                    default: 2h\n                    description: \"BlockDuration controls the size of TSDB blocks produced by Prometheus. The default value is 2h to match the upstream Prometheus defaults. \\n WARNING: Changing the block duration can impact the performance and efficiency of the entire Prometheus/Thanos stack due to how it interacts with memory and Thanos compactors. It is recommended to keep this value set to a multiple of 120 times your longest scrape or rule interval. For example, 30s * 120 = 1h.\"\n                    pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                    type: string\n                  getConfigInterval:\n                    description: How often to retrieve the Prometheus configuration.\n                    pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                    type: string\n                  getConfigTimeout:\n                    description: Maximum time to wait when retrieving the Prometheus configuration.\n                    pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                    type: string\n                  grpcListenLocal:\n                    description: \"When true, the Thanos sidecar listens on the loopback interface instead of the Pod IP's address for the gRPC endpoints. \\n It has no effect if `listenLocal` is true.\"\n                    type: boolean\n                  grpcServerTlsConfig:\n                    description: \"Configures the TLS parameters for the gRPC server providing the StoreAPI. \\n Note: Currently only the `caFile`, `certFile`, and `keyFile` fields are supported.\"\n                    properties:\n                      ca:\n                        description: Certificate authority used when verifying server certificates.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      caFile:\n                        description: Path to the CA cert in the Prometheus container to use for the targets.\n                        type: string\n                      cert:\n                        description: Client certificate to present when doing client-authentication.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      certFile:\n                        description: Path to the client cert file in the Prometheus container for the targets.\n                        type: string\n                      insecureSkipVerify:\n                        description: Disable target certificate validation.\n                        type: boolean\n                      keyFile:\n                        description: Path to the client key file in the Prometheus container for the targets.\n                        type: string\n                      keySecret:\n                        description: Secret containing the client key file for the targets.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      serverName:\n                        description: Used to verify the hostname for the targets.\n                        type: string\n                    type: object\n                  httpListenLocal:\n                    description: \"When true, the Thanos sidecar listens on the loopback interface instead of the Pod IP's address for the HTTP endpoints. \\n It has no effect if `listenLocal` is true.\"\n                    type: boolean\n                  image:\n                    description: \"Container image name for Thanos. If specified, it takes precedence over the `spec.thanos.baseImage`, `spec.thanos.tag` and `spec.thanos.sha` fields. \\n Specifying `spec.thanos.version` is still necessary to ensure the Prometheus Operator knows which version of Thanos is being configured. \\n If neither `spec.thanos.image` nor `spec.thanos.baseImage` are defined, the operator will use the latest upstream version of Thanos available at the time when the operator was released.\"\n                    type: string\n                  listenLocal:\n                    description: '*Deprecated: use `grpcListenLocal` and `httpListenLocal` instead.*'\n                    type: boolean\n                  logFormat:\n                    description: Log format for the Thanos sidecar.\n                    enum:\n                    - \"\"\n                    - logfmt\n                    - json\n                    type: string\n                  logLevel:\n                    description: Log level for the Thanos sidecar.\n                    enum:\n                    - \"\"\n                    - debug\n                    - info\n                    - warn\n                    - error\n                    type: string\n                  minTime:\n                    description: Defines the start of time range limit served by the Thanos sidecar's StoreAPI. The field's value should be a constant time in RFC3339 format or a time duration relative to current time, such as -1d or 2h45m. Valid duration units are ms, s, m, h, d, w, y.\n                    type: string\n                  objectStorageConfig:\n                    description: \"Defines the Thanos sidecar's configuration to upload TSDB blocks to object storage. \\n More info: https://thanos.io/tip/thanos/storage.md/ \\n objectStorageConfigFile takes precedence over this field.\"\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be a valid secret key.\n                        type: string\n                      name:\n                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                  objectStorageConfigFile:\n                    description: \"Defines the Thanos sidecar's configuration file to upload TSDB blocks to object storage. \\n More info: https://thanos.io/tip/thanos/storage.md/ \\n This field takes precedence over objectStorageConfig.\"\n                    type: string\n                  readyTimeout:\n                    description: ReadyTimeout is the maximum time that the Thanos sidecar will wait for Prometheus to start.\n                    pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                    type: string\n                  resources:\n                    description: Defines the resources requests and limits of the Thanos sidecar.\n                    properties:\n                      claims:\n                        description: \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\"\n                        items:\n                          description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                          properties:\n                            name:\n                              description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\n                              type: string\n                          required:\n                          - name\n                          type: object\n                        type: array\n                        x-kubernetes-list-map-keys:\n                        - name\n                        x-kubernetes-list-type: map\n                      limits:\n                        additionalProperties:\n                          anyOf:\n                          - type: integer\n                          - type: string\n                          pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                          x-kubernetes-int-or-string: true\n                        description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                        type: object\n                      requests:\n                        additionalProperties:\n                          anyOf:\n                          - type: integer\n                          - type: string\n                          pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                          x-kubernetes-int-or-string: true\n                        description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                        type: object\n                    type: object\n                  sha:\n                    description: '*Deprecated: use ''image'' instead.  The image digest can be specified as part of the image name.*'\n                    type: string\n                  tag:\n                    description: '*Deprecated: use ''image'' instead. The image''s tag can be specified as part of the image name.*'\n                    type: string\n                  tracingConfig:\n                    description: \"Defines the tracing configuration for the Thanos sidecar. \\n More info: https://thanos.io/tip/thanos/tracing.md/ \\n This is an experimental feature, it may change in any upcoming release in a breaking way. \\n tracingConfigFile takes precedence over this field.\"\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be a valid secret key.\n                        type: string\n                      name:\n                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                  tracingConfigFile:\n                    description: \"Defines the tracing configuration file for the Thanos sidecar. \\n More info: https://thanos.io/tip/thanos/tracing.md/ \\n This is an experimental feature, it may change in any upcoming release in a breaking way. \\n This field takes precedence over tracingConfig.\"\n                    type: string\n                  version:\n                    description: \"Version of Thanos being deployed. The operator uses this information to generate the Prometheus StatefulSet + configuration files. \\n If not specified, the operator assumes the latest upstream release of Thanos available at the time when the version of the operator was released.\"\n                    type: string\n                  volumeMounts:\n                    description: VolumeMounts allows configuration of additional VolumeMounts for Thanos. VolumeMounts specified will be appended to other VolumeMounts in the 'thanos-sidecar' container.\n                    items:\n                      description: VolumeMount describes a mounting of a Volume within a container.\n                      properties:\n                        mountPath:\n                          description: Path within the container at which the volume should be mounted.  Must not contain ':'.\n                          type: string\n                        mountPropagation:\n                          description: mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10.\n                          type: string\n                        name:\n                          description: This must match the Name of a Volume.\n                          type: string\n                        readOnly:\n                          description: Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.\n                          type: boolean\n                        subPath:\n                          description: Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root).\n                          type: string\n                        subPathExpr:\n                          description: Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to \"\" (volume's root). SubPathExpr and SubPath are mutually exclusive.\n                          type: string\n                      required:\n                      - mountPath\n                      - name\n                      type: object\n                    type: array\n                type: object\n              tolerations:\n                description: Defines the Pods' tolerations if specified.\n                items:\n                  description: The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.\n                  properties:\n                    effect:\n                      description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\n                      type: string\n                    key:\n                      description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.\n                      type: string\n                    operator:\n                      description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.\n                      type: string\n                    tolerationSeconds:\n                      description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.\n                      format: int64\n                      type: integer\n                    value:\n                      description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.\n                      type: string\n                  type: object\n                type: array\n              topologySpreadConstraints:\n                description: Defines the pod's topology spread constraints if specified.\n                items:\n                  description: TopologySpreadConstraint specifies how to spread matching pods among the given topology.\n                  properties:\n                    labelSelector:\n                      description: LabelSelector is used to find matching pods. Pods that match this label selector are counted to determine the number of pods in their corresponding topology domain.\n                      properties:\n                        matchExpressions:\n                          description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                          items:\n                            description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                            properties:\n                              key:\n                                description: key is the label key that the selector applies to.\n                                type: string\n                              operator:\n                                description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                type: string\n                              values:\n                                description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                items:\n                                  type: string\n                                type: array\n                            required:\n                            - key\n                            - operator\n                            type: object\n                          type: array\n                        matchLabels:\n                          additionalProperties:\n                            type: string\n                          description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                          type: object\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    matchLabelKeys:\n                      description: \"MatchLabelKeys is a set of pod label keys to select the pods over which spreading will be calculated. The keys are used to lookup values from the incoming pod labels, those key-value labels are ANDed with labelSelector to select the group of existing pods over which spreading will be calculated for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. MatchLabelKeys cannot be set when LabelSelector isn't set. Keys that don't exist in the incoming pod labels will be ignored. A null or empty list means only match against labelSelector. \\n This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).\"\n                      items:\n                        type: string\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    maxSkew:\n                      description: 'MaxSkew describes the degree to which pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. The global minimum is the minimum number of matching pods in an eligible domain or zero if the number of eligible domains is less than MinDomains. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 2/2/1: In this case, the global minimum is 1. | zone1 | zone2 | zone3 | |  P P  |  P P  |   P   | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2; scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence to topologies that satisfy it. It''s a required field. Default value is 1 and 0 is not allowed.'\n                      format: int32\n                      type: integer\n                    minDomains:\n                      description: \"MinDomains indicates a minimum number of eligible domains. When the number of eligible domains with matching topology keys is less than minDomains, Pod Topology Spread treats \\\"global minimum\\\" as 0, and then the calculation of Skew is performed. And when the number of eligible domains with matching topology keys equals or greater than minDomains, this value has no effect on scheduling. As a result, when the number of eligible domains is less than minDomains, scheduler won't schedule more than maxSkew Pods to those domains. If value is nil, the constraint behaves as if MinDomains is equal to 1. Valid values are integers greater than 0. When value is not nil, WhenUnsatisfiable must be DoNotSchedule. \\n For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same labelSelector spread as 2/2/2: | zone1 | zone2 | zone3 | |  P P  |  P P  |  P P  | The number of domains is less than 5(MinDomains), so \\\"global minimum\\\" is treated as 0. In this situation, new pod with the same labelSelector cannot be scheduled, because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones, it will violate MaxSkew. \\n This is a beta field and requires the MinDomainsInPodTopologySpread feature gate to be enabled (enabled by default).\"\n                      format: int32\n                      type: integer\n                    nodeAffinityPolicy:\n                      description: \"NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector when calculating pod topology spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations. \\n If this value is nil, the behavior is equivalent to the Honor policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\"\n                      type: string\n                    nodeTaintsPolicy:\n                      description: \"NodeTaintsPolicy indicates how we will treat node taints when calculating pod topology spread skew. Options are: - Honor: nodes without taints, along with tainted nodes for which the incoming pod has a toleration, are included. - Ignore: node taints are ignored. All nodes are included. \\n If this value is nil, the behavior is equivalent to the Ignore policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\"\n                      type: string\n                    topologyKey:\n                      description: TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each <key, value> as a \"bucket\", and try to put balanced number of pods into each bucket. We define a domain as a particular instance of a topology. Also, we define an eligible domain as a domain whose nodes meet the requirements of nodeAffinityPolicy and nodeTaintsPolicy. e.g. If TopologyKey is \"kubernetes.io/hostname\", each Node is a domain of that topology. And, if TopologyKey is \"topology.kubernetes.io/zone\", each zone is a domain of that topology. It's a required field.\n                      type: string\n                    whenUnsatisfiable:\n                      description: 'WhenUnsatisfiable indicates how to deal with a pod if it doesn''t satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location, but giving higher precedence to topologies that would help reduce the skew. A constraint is considered \"Unsatisfiable\" for an incoming pod if and only if every possible node assignment for that pod would violate \"MaxSkew\" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P |   P   |   P   | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won''t make it *more* imbalanced. It''s a required field.'\n                      type: string\n                  required:\n                  - maxSkew\n                  - topologyKey\n                  - whenUnsatisfiable\n                  type: object\n                type: array\n              tracingConfig:\n                description: 'EXPERIMENTAL: TracingConfig configures tracing in Prometheus. This is an experimental feature, it may change in any upcoming release in a breaking way.'\n                properties:\n                  clientType:\n                    description: Client used to export the traces. Supported values are `http` or `grpc`.\n                    enum:\n                    - http\n                    - grpc\n                    type: string\n                  compression:\n                    description: Compression key for supported compression types. The only supported value is `gzip`.\n                    enum:\n                    - gzip\n                    type: string\n                  endpoint:\n                    description: Endpoint to send the traces to. Should be provided in format <host>:<port>.\n                    minLength: 1\n                    type: string\n                  headers:\n                    additionalProperties:\n                      type: string\n                    description: Key-value pairs to be used as headers associated with gRPC or HTTP requests.\n                    type: object\n                  insecure:\n                    description: If disabled, the client will use a secure connection.\n                    type: boolean\n                  samplingFraction:\n                    anyOf:\n                    - type: integer\n                    - type: string\n                    description: Sets the probability a given trace will be sampled. Must be a float from 0 through 1.\n                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                    x-kubernetes-int-or-string: true\n                  timeout:\n                    description: Maximum time the exporter will wait for each batch export.\n                    pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                    type: string\n                  tlsConfig:\n                    description: TLS Config to use when sending traces.\n                    properties:\n                      ca:\n                        description: Certificate authority used when verifying server certificates.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      caFile:\n                        description: Path to the CA cert in the Prometheus container to use for the targets.\n                        type: string\n                      cert:\n                        description: Client certificate to present when doing client-authentication.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      certFile:\n                        description: Path to the client cert file in the Prometheus container for the targets.\n                        type: string\n                      insecureSkipVerify:\n                        description: Disable target certificate validation.\n                        type: boolean\n                      keyFile:\n                        description: Path to the client key file in the Prometheus container for the targets.\n                        type: string\n                      keySecret:\n                        description: Secret containing the client key file for the targets.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      serverName:\n                        description: Used to verify the hostname for the targets.\n                        type: string\n                    type: object\n                required:\n                - endpoint\n                type: object\n              tsdb:\n                description: Defines the runtime reloadable configuration of the timeseries database (TSDB).\n                properties:\n                  outOfOrderTimeWindow:\n                    description: \"Configures how old an out-of-order/out-of-bounds sample can be with respect to the TSDB max time. \\n An out-of-order/out-of-bounds sample is ingested into the TSDB as long as the timestamp of the sample is >= (TSDB.MaxTime - outOfOrderTimeWindow). \\n Out of order ingestion is an experimental feature. \\n It requires Prometheus >= v2.39.0.\"\n                    pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                    type: string\n                type: object\n              version:\n                description: \"Version of Prometheus being deployed. The operator uses this information to generate the Prometheus StatefulSet + configuration files. \\n If not specified, the operator assumes the latest upstream version of Prometheus available at the time when the version of the operator was released.\"\n                type: string\n              volumeMounts:\n                description: \"VolumeMounts allows the configuration of additional VolumeMounts. \\n VolumeMounts will be appended to other VolumeMounts in the 'prometheus' container, that are generated as a result of StorageSpec objects.\"\n                items:\n                  description: VolumeMount describes a mounting of a Volume within a container.\n                  properties:\n                    mountPath:\n                      description: Path within the container at which the volume should be mounted.  Must not contain ':'.\n                      type: string\n                    mountPropagation:\n                      description: mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10.\n                      type: string\n                    name:\n                      description: This must match the Name of a Volume.\n                      type: string\n                    readOnly:\n                      description: Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.\n                      type: boolean\n                    subPath:\n                      description: Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root).\n                      type: string\n                    subPathExpr:\n                      description: Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to \"\" (volume's root). SubPathExpr and SubPath are mutually exclusive.\n                      type: string\n                  required:\n                  - mountPath\n                  - name\n                  type: object\n                type: array\n              volumes:\n                description: Volumes allows the configuration of additional volumes on the output StatefulSet definition. Volumes specified will be appended to other volumes that are generated as a result of StorageSpec objects.\n                items:\n                  description: Volume represents a named volume in a pod that may be accessed by any container in the pod.\n                  properties:\n                    awsElasticBlockStore:\n                      description: 'awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet''s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore TODO: how do we prevent errors in the filesystem from compromising the machine'\n                          type: string\n                        partition:\n                          description: 'partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as \"1\". Similarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty).'\n                          format: int32\n                          type: integer\n                        readOnly:\n                          description: 'readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'\n                          type: boolean\n                        volumeID:\n                          description: 'volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    azureDisk:\n                      description: azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\n                      properties:\n                        cachingMode:\n                          description: 'cachingMode is the Host Caching mode: None, Read Only, Read Write.'\n                          type: string\n                        diskName:\n                          description: diskName is the Name of the data disk in the blob storage\n                          type: string\n                        diskURI:\n                          description: diskURI is the URI of data disk in the blob storage\n                          type: string\n                        fsType:\n                          description: fsType is Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                          type: string\n                        kind:\n                          description: 'kind expected values are Shared: multiple blob disks per storage account  Dedicated: single blob disk per storage account  Managed: azure managed data disk (only in managed availability set). defaults to shared'\n                          type: string\n                        readOnly:\n                          description: readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                      required:\n                      - diskName\n                      - diskURI\n                      type: object\n                    azureFile:\n                      description: azureFile represents an Azure File Service mount on the host and bind mount to the pod.\n                      properties:\n                        readOnly:\n                          description: readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretName:\n                          description: secretName is the  name of secret that contains Azure Storage Account Name and Key\n                          type: string\n                        shareName:\n                          description: shareName is the azure share Name\n                          type: string\n                      required:\n                      - secretName\n                      - shareName\n                      type: object\n                    cephfs:\n                      description: cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\n                      properties:\n                        monitors:\n                          description: 'monitors is Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          items:\n                            type: string\n                          type: array\n                        path:\n                          description: 'path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /'\n                          type: string\n                        readOnly:\n                          description: 'readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          type: boolean\n                        secretFile:\n                          description: 'secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          type: string\n                        secretRef:\n                          description: 'secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        user:\n                          description: 'user is optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          type: string\n                      required:\n                      - monitors\n                      type: object\n                    cinder:\n                      description: 'cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                          type: string\n                        readOnly:\n                          description: 'readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                          type: boolean\n                        secretRef:\n                          description: 'secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        volumeID:\n                          description: 'volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    configMap:\n                      description: configMap represents a configMap that should populate this volume\n                      properties:\n                        defaultMode:\n                          description: 'defaultMode is optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'\n                          format: int32\n                          type: integer\n                        items:\n                          description: items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\n                          items:\n                            description: Maps a string key to a path within a volume.\n                            properties:\n                              key:\n                                description: key is the key to project.\n                                type: string\n                              mode:\n                                description: 'mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'\n                                format: int32\n                                type: integer\n                              path:\n                                description: path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.\n                                type: string\n                            required:\n                            - key\n                            - path\n                            type: object\n                          type: array\n                        name:\n                          description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                          type: string\n                        optional:\n                          description: optional specify whether the ConfigMap or its keys must be defined\n                          type: boolean\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    csi:\n                      description: csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\n                      properties:\n                        driver:\n                          description: driver is the name of the CSI driver that handles this volume. Consult with your admin for the correct name as registered in the cluster.\n                          type: string\n                        fsType:\n                          description: fsType to mount. Ex. \"ext4\", \"xfs\", \"ntfs\". If not provided, the empty value is passed to the associated CSI driver which will determine the default filesystem to apply.\n                          type: string\n                        nodePublishSecretRef:\n                          description: nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and  may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed.\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        readOnly:\n                          description: readOnly specifies a read-only configuration for the volume. Defaults to false (read/write).\n                          type: boolean\n                        volumeAttributes:\n                          additionalProperties:\n                            type: string\n                          description: volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values.\n                          type: object\n                      required:\n                      - driver\n                      type: object\n                    downwardAPI:\n                      description: downwardAPI represents downward API about the pod that should populate this volume\n                      properties:\n                        defaultMode:\n                          description: 'Optional: mode bits to use on created files by default. Must be a Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'\n                          format: int32\n                          type: integer\n                        items:\n                          description: Items is a list of downward API volume file\n                          items:\n                            description: DownwardAPIVolumeFile represents information to create the file containing the pod field\n                            properties:\n                              fieldRef:\n                                description: 'Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.'\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              mode:\n                                description: 'Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'\n                                format: int32\n                                type: integer\n                              path:\n                                description: 'Required: Path is  the relative path name of the file to be created. Must not be absolute or contain the ''..'' path. Must be utf-8 encoded. The first item of the relative path must not start with ''..'''\n                                type: string\n                              resourceFieldRef:\n                                description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.'\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes, optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            required:\n                            - path\n                            type: object\n                          type: array\n                      type: object\n                    emptyDir:\n                      description: 'emptyDir represents a temporary directory that shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                      properties:\n                        medium:\n                          description: 'medium represents what type of storage medium should back this directory. The default is \"\" which means to use the node''s default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                          type: string\n                        sizeLimit:\n                          anyOf:\n                          - type: integer\n                          - type: string\n                          description: 'sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                          pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                          x-kubernetes-int-or-string: true\n                      type: object\n                    ephemeral:\n                      description: \"ephemeral represents a volume that is handled by a cluster storage driver. The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed. \\n Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). \\n Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. \\n Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. \\n A pod can use both types of ephemeral volumes and persistent volumes at the same time.\"\n                      properties:\n                        volumeClaimTemplate:\n                          description: \"Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod.  The name of the PVC will be `<pod name>-<volume name>` where `<volume name>` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long). \\n An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. \\n This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. \\n Required, must not be nil.\"\n                          properties:\n                            metadata:\n                              description: May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.\n                              type: object\n                            spec:\n                              description: The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.\n                              properties:\n                                accessModes:\n                                  description: 'accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                                  items:\n                                    type: string\n                                  type: array\n                                dataSource:\n                                  description: 'dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.'\n                                  properties:\n                                    apiGroup:\n                                      description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.\n                                      type: string\n                                    kind:\n                                      description: Kind is the type of resource being referenced\n                                      type: string\n                                    name:\n                                      description: Name is the name of resource being referenced\n                                      type: string\n                                  required:\n                                  - kind\n                                  - name\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                dataSourceRef:\n                                  description: 'dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn''t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn''t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.'\n                                  properties:\n                                    apiGroup:\n                                      description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.\n                                      type: string\n                                    kind:\n                                      description: Kind is the type of resource being referenced\n                                      type: string\n                                    name:\n                                      description: Name is the name of resource being referenced\n                                      type: string\n                                    namespace:\n                                      description: Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\n                                      type: string\n                                  required:\n                                  - kind\n                                  - name\n                                  type: object\n                                resources:\n                                  description: 'resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'\n                                  properties:\n                                    claims:\n                                      description: \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\"\n                                      items:\n                                        description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                                        properties:\n                                          name:\n                                            description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\n                                            type: string\n                                        required:\n                                        - name\n                                        type: object\n                                      type: array\n                                      x-kubernetes-list-map-keys:\n                                      - name\n                                      x-kubernetes-list-type: map\n                                    limits:\n                                      additionalProperties:\n                                        anyOf:\n                                        - type: integer\n                                        - type: string\n                                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                        x-kubernetes-int-or-string: true\n                                      description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                      type: object\n                                    requests:\n                                      additionalProperties:\n                                        anyOf:\n                                        - type: integer\n                                        - type: string\n                                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                        x-kubernetes-int-or-string: true\n                                      description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                      type: object\n                                  type: object\n                                selector:\n                                  description: selector is a label query over volumes to consider for binding.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                      items:\n                                        description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                storageClassName:\n                                  description: 'storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'\n                                  type: string\n                                volumeMode:\n                                  description: volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.\n                                  type: string\n                                volumeName:\n                                  description: volumeName is the binding reference to the PersistentVolume backing this claim.\n                                  type: string\n                              type: object\n                          required:\n                          - spec\n                          type: object\n                      type: object\n                    fc:\n                      description: fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. TODO: how do we prevent errors in the filesystem from compromising the machine'\n                          type: string\n                        lun:\n                          description: 'lun is Optional: FC target lun number'\n                          format: int32\n                          type: integer\n                        readOnly:\n                          description: 'readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.'\n                          type: boolean\n                        targetWWNs:\n                          description: 'targetWWNs is Optional: FC target worldwide names (WWNs)'\n                          items:\n                            type: string\n                          type: array\n                        wwids:\n                          description: 'wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.'\n                          items:\n                            type: string\n                          type: array\n                      type: object\n                    flexVolume:\n                      description: flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.\n                      properties:\n                        driver:\n                          description: driver is the name of the driver to use for this volume.\n                          type: string\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". The default filesystem depends on FlexVolume script.\n                          type: string\n                        options:\n                          additionalProperties:\n                            type: string\n                          description: 'options is Optional: this field holds extra command options if any.'\n                          type: object\n                        readOnly:\n                          description: 'readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.'\n                          type: boolean\n                        secretRef:\n                          description: 'secretRef is Optional: secretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts.'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      required:\n                      - driver\n                      type: object\n                    flocker:\n                      description: flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\n                      properties:\n                        datasetName:\n                          description: datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated\n                          type: string\n                        datasetUUID:\n                          description: datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\n                          type: string\n                      type: object\n                    gcePersistentDisk:\n                      description: 'gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet''s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                      properties:\n                        fsType:\n                          description: 'fsType is filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk TODO: how do we prevent errors in the filesystem from compromising the machine'\n                          type: string\n                        partition:\n                          description: 'partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as \"1\". Similarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                          format: int32\n                          type: integer\n                        pdName:\n                          description: 'pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                          type: boolean\n                      required:\n                      - pdName\n                      type: object\n                    gitRepo:\n                      description: 'gitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod''s container.'\n                      properties:\n                        directory:\n                          description: directory is the target directory name. Must not contain or start with '..'.  If '.' is supplied, the volume directory will be the git repository.  Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name.\n                          type: string\n                        repository:\n                          description: repository is the URL\n                          type: string\n                        revision:\n                          description: revision is the commit hash for the specified revision.\n                          type: string\n                      required:\n                      - repository\n                      type: object\n                    glusterfs:\n                      description: 'glusterfs represents a Glusterfs mount on the host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md'\n                      properties:\n                        endpoints:\n                          description: 'endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'\n                          type: string\n                        path:\n                          description: 'path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'\n                          type: boolean\n                      required:\n                      - endpoints\n                      - path\n                      type: object\n                    hostPath:\n                      description: 'hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath --- TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write.'\n                      properties:\n                        path:\n                          description: 'path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'\n                          type: string\n                        type:\n                          description: 'type for HostPath Volume Defaults to \"\" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'\n                          type: string\n                      required:\n                      - path\n                      type: object\n                    iscsi:\n                      description: 'iscsi represents an ISCSI Disk resource that is attached to a kubelet''s host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md'\n                      properties:\n                        chapAuthDiscovery:\n                          description: chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\n                          type: boolean\n                        chapAuthSession:\n                          description: chapAuthSession defines whether support iSCSI Session CHAP authentication\n                          type: boolean\n                        fsType:\n                          description: 'fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi TODO: how do we prevent errors in the filesystem from compromising the machine'\n                          type: string\n                        initiatorName:\n                          description: initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface <target portal>:<volume name> will be created for the connection.\n                          type: string\n                        iqn:\n                          description: iqn is the target iSCSI Qualified Name.\n                          type: string\n                        iscsiInterface:\n                          description: iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).\n                          type: string\n                        lun:\n                          description: lun represents iSCSI Target Lun number.\n                          format: int32\n                          type: integer\n                        portals:\n                          description: portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).\n                          items:\n                            type: string\n                          type: array\n                        readOnly:\n                          description: readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.\n                          type: boolean\n                        secretRef:\n                          description: secretRef is the CHAP Secret for iSCSI target and initiator authentication\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        targetPortal:\n                          description: targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).\n                          type: string\n                      required:\n                      - iqn\n                      - lun\n                      - targetPortal\n                      type: object\n                    name:\n                      description: 'name of the volume. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                      type: string\n                    nfs:\n                      description: 'nfs represents an NFS mount on the host that shares a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                      properties:\n                        path:\n                          description: 'path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                          type: boolean\n                        server:\n                          description: 'server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                          type: string\n                      required:\n                      - path\n                      - server\n                      type: object\n                    persistentVolumeClaim:\n                      description: 'persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'\n                      properties:\n                        claimName:\n                          description: 'claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'\n                          type: string\n                        readOnly:\n                          description: readOnly Will force the ReadOnly setting in VolumeMounts. Default false.\n                          type: boolean\n                      required:\n                      - claimName\n                      type: object\n                    photonPersistentDisk:\n                      description: photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\n                      properties:\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                          type: string\n                        pdID:\n                          description: pdID is the ID that identifies Photon Controller persistent disk\n                          type: string\n                      required:\n                      - pdID\n                      type: object\n                    portworxVolume:\n                      description: portworxVolume represents a portworx volume attached and mounted on kubelets host machine\n                      properties:\n                        fsType:\n                          description: fSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                          type: string\n                        readOnly:\n                          description: readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        volumeID:\n                          description: volumeID uniquely identifies a Portworx volume\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    projected:\n                      description: projected items for all in one resources secrets, configmaps, and downward API\n                      properties:\n                        defaultMode:\n                          description: defaultMode are the mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.\n                          format: int32\n                          type: integer\n                        sources:\n                          description: sources is the list of volume projections\n                          items:\n                            description: Projection that may be projected along with other supported volume types\n                            properties:\n                              configMap:\n                                description: configMap information about the configMap data to project\n                                properties:\n                                  items:\n                                    description: items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\n                                    items:\n                                      description: Maps a string key to a path within a volume.\n                                      properties:\n                                        key:\n                                          description: key is the key to project.\n                                          type: string\n                                        mode:\n                                          description: 'mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.\n                                          type: string\n                                      required:\n                                      - key\n                                      - path\n                                      type: object\n                                    type: array\n                                  name:\n                                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                    type: string\n                                  optional:\n                                    description: optional specify whether the ConfigMap or its keys must be defined\n                                    type: boolean\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              downwardAPI:\n                                description: downwardAPI information about the downwardAPI data to project\n                                properties:\n                                  items:\n                                    description: Items is a list of DownwardAPIVolume file\n                                    items:\n                                      description: DownwardAPIVolumeFile represents information to create the file containing the pod field\n                                      properties:\n                                        fieldRef:\n                                          description: 'Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.'\n                                          properties:\n                                            apiVersion:\n                                              description: Version of the schema the FieldPath is written in terms of, defaults to \"v1\".\n                                              type: string\n                                            fieldPath:\n                                              description: Path of the field to select in the specified API version.\n                                              type: string\n                                          required:\n                                          - fieldPath\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                        mode:\n                                          description: 'Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: 'Required: Path is  the relative path name of the file to be created. Must not be absolute or contain the ''..'' path. Must be utf-8 encoded. The first item of the relative path must not start with ''..'''\n                                          type: string\n                                        resourceFieldRef:\n                                          description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.'\n                                          properties:\n                                            containerName:\n                                              description: 'Container name: required for volumes, optional for env vars'\n                                              type: string\n                                            divisor:\n                                              anyOf:\n                                              - type: integer\n                                              - type: string\n                                              description: Specifies the output format of the exposed resources, defaults to \"1\"\n                                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                              x-kubernetes-int-or-string: true\n                                            resource:\n                                              description: 'Required: resource to select'\n                                              type: string\n                                          required:\n                                          - resource\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                      required:\n                                      - path\n                                      type: object\n                                    type: array\n                                type: object\n                              secret:\n                                description: secret information about the secret data to project\n                                properties:\n                                  items:\n                                    description: items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\n                                    items:\n                                      description: Maps a string key to a path within a volume.\n                                      properties:\n                                        key:\n                                          description: key is the key to project.\n                                          type: string\n                                        mode:\n                                          description: 'mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.\n                                          type: string\n                                      required:\n                                      - key\n                                      - path\n                                      type: object\n                                    type: array\n                                  name:\n                                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                    type: string\n                                  optional:\n                                    description: optional field specify whether the Secret or its key must be defined\n                                    type: boolean\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              serviceAccountToken:\n                                description: serviceAccountToken is information about the serviceAccountToken data to project\n                                properties:\n                                  audience:\n                                    description: audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver.\n                                    type: string\n                                  expirationSeconds:\n                                    description: expirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes.\n                                    format: int64\n                                    type: integer\n                                  path:\n                                    description: path is the path relative to the mount point of the file to project the token into.\n                                    type: string\n                                required:\n                                - path\n                                type: object\n                            type: object\n                          type: array\n                      type: object\n                    quobyte:\n                      description: quobyte represents a Quobyte mount on the host that shares a pod's lifetime\n                      properties:\n                        group:\n                          description: group to map volume access to Default is no group\n                          type: string\n                        readOnly:\n                          description: readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.\n                          type: boolean\n                        registry:\n                          description: registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes\n                          type: string\n                        tenant:\n                          description: tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin\n                          type: string\n                        user:\n                          description: user to map volume access to Defaults to serivceaccount user\n                          type: string\n                        volume:\n                          description: volume is a string that references an already created Quobyte volume by name.\n                          type: string\n                      required:\n                      - registry\n                      - volume\n                      type: object\n                    rbd:\n                      description: 'rbd represents a Rados Block Device mount on the host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md'\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd TODO: how do we prevent errors in the filesystem from compromising the machine'\n                          type: string\n                        image:\n                          description: 'image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                        keyring:\n                          description: 'keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                        monitors:\n                          description: 'monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          items:\n                            type: string\n                          type: array\n                        pool:\n                          description: 'pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: boolean\n                        secretRef:\n                          description: 'secretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        user:\n                          description: 'user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                      required:\n                      - image\n                      - monitors\n                      type: object\n                    scaleIO:\n                      description: scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\n                      properties:\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Default is \"xfs\".\n                          type: string\n                        gateway:\n                          description: gateway is the host address of the ScaleIO API Gateway.\n                          type: string\n                        protectionDomain:\n                          description: protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\n                          type: string\n                        readOnly:\n                          description: readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretRef:\n                          description: secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        sslEnabled:\n                          description: sslEnabled Flag enable/disable SSL communication with Gateway, default false\n                          type: boolean\n                        storageMode:\n                          description: storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.\n                          type: string\n                        storagePool:\n                          description: storagePool is the ScaleIO Storage Pool associated with the protection domain.\n                          type: string\n                        system:\n                          description: system is the name of the storage system as configured in ScaleIO.\n                          type: string\n                        volumeName:\n                          description: volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source.\n                          type: string\n                      required:\n                      - gateway\n                      - secretRef\n                      - system\n                      type: object\n                    secret:\n                      description: 'secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'\n                      properties:\n                        defaultMode:\n                          description: 'defaultMode is Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'\n                          format: int32\n                          type: integer\n                        items:\n                          description: items If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\n                          items:\n                            description: Maps a string key to a path within a volume.\n                            properties:\n                              key:\n                                description: key is the key to project.\n                                type: string\n                              mode:\n                                description: 'mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'\n                                format: int32\n                                type: integer\n                              path:\n                                description: path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.\n                                type: string\n                            required:\n                            - key\n                            - path\n                            type: object\n                          type: array\n                        optional:\n                          description: optional field specify whether the Secret or its keys must be defined\n                          type: boolean\n                        secretName:\n                          description: 'secretName is the name of the secret in the pod''s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'\n                          type: string\n                      type: object\n                    storageos:\n                      description: storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\n                      properties:\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                          type: string\n                        readOnly:\n                          description: readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretRef:\n                          description: secretRef specifies the secret to use for obtaining the StorageOS API credentials.  If not specified, default values will be attempted.\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        volumeName:\n                          description: volumeName is the human-readable name of the StorageOS volume.  Volume names are only unique within a namespace.\n                          type: string\n                        volumeNamespace:\n                          description: volumeNamespace specifies the scope of the volume within StorageOS.  If no namespace is specified then the Pod's namespace will be used.  This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to \"default\" if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created.\n                          type: string\n                      type: object\n                    vsphereVolume:\n                      description: vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\n                      properties:\n                        fsType:\n                          description: fsType is filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                          type: string\n                        storagePolicyID:\n                          description: storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\n                          type: string\n                        storagePolicyName:\n                          description: storagePolicyName is the storage Policy Based Management (SPBM) profile name.\n                          type: string\n                        volumePath:\n                          description: volumePath is the path that identifies vSphere volume vmdk\n                          type: string\n                      required:\n                      - volumePath\n                      type: object\n                  required:\n                  - name\n                  type: object\n                type: array\n              walCompression:\n                description: \"Configures compression of the write-ahead log (WAL) using Snappy. \\n WAL compression is enabled by default for Prometheus >= 2.20.0 \\n Requires Prometheus v2.11.0 and above.\"\n                type: boolean\n              web:\n                description: Defines the configuration of the Prometheus web server.\n                properties:\n                  httpConfig:\n                    description: Defines HTTP parameters for web server.\n                    properties:\n                      headers:\n                        description: List of headers that can be added to HTTP responses.\n                        properties:\n                          contentSecurityPolicy:\n                            description: Set the Content-Security-Policy header to HTTP responses. Unset if blank.\n                            type: string\n                          strictTransportSecurity:\n                            description: Set the Strict-Transport-Security header to HTTP responses. Unset if blank. Please make sure that you use this with care as this header might force browsers to load Prometheus and the other applications hosted on the same domain and subdomains over HTTPS. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security\n                            type: string\n                          xContentTypeOptions:\n                            description: Set the X-Content-Type-Options header to HTTP responses. Unset if blank. Accepted value is nosniff. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options\n                            enum:\n                            - \"\"\n                            - NoSniff\n                            type: string\n                          xFrameOptions:\n                            description: Set the X-Frame-Options header to HTTP responses. Unset if blank. Accepted values are deny and sameorigin. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options\n                            enum:\n                            - \"\"\n                            - Deny\n                            - SameOrigin\n                            type: string\n                          xXSSProtection:\n                            description: Set the X-XSS-Protection header to all responses. Unset if blank. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection\n                            type: string\n                        type: object\n                      http2:\n                        description: Enable HTTP/2 support. Note that HTTP/2 is only supported with TLS. When TLSConfig is not configured, HTTP/2 will be disabled. Whenever the value of the field changes, a rolling update will be triggered.\n                        type: boolean\n                    type: object\n                  maxConnections:\n                    description: Defines the maximum number of simultaneous connections A zero value means that Prometheus doesn't accept any incoming connection.\n                    format: int32\n                    minimum: 0\n                    type: integer\n                  pageTitle:\n                    description: The prometheus web page title.\n                    type: string\n                  tlsConfig:\n                    description: Defines the TLS parameters for HTTPS.\n                    properties:\n                      cert:\n                        description: Contains the TLS certificate for the server.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      cipherSuites:\n                        description: 'List of supported cipher suites for TLS versions up to TLS 1.2. If empty, Go default cipher suites are used. Available cipher suites are documented in the go documentation: https://golang.org/pkg/crypto/tls/#pkg-constants'\n                        items:\n                          type: string\n                        type: array\n                      client_ca:\n                        description: Contains the CA certificate for client certificate authentication to the server.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      clientAuthType:\n                        description: 'Server policy for client authentication. Maps to ClientAuth Policies. For more detail on clientAuth options: https://golang.org/pkg/crypto/tls/#ClientAuthType'\n                        type: string\n                      curvePreferences:\n                        description: 'Elliptic curves that will be used in an ECDHE handshake, in preference order. Available curves are documented in the go documentation: https://golang.org/pkg/crypto/tls/#CurveID'\n                        items:\n                          type: string\n                        type: array\n                      keySecret:\n                        description: Secret containing the TLS key for the server.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      maxVersion:\n                        description: Maximum TLS version that is acceptable. Defaults to TLS13.\n                        type: string\n                      minVersion:\n                        description: Minimum TLS version that is acceptable. Defaults to TLS12.\n                        type: string\n                      preferServerCipherSuites:\n                        description: Controls whether the server selects the client's most preferred cipher suite, or the server's most preferred cipher suite. If true then the server's preference, as expressed in the order of elements in cipherSuites, is used.\n                        type: boolean\n                    required:\n                    - cert\n                    - keySecret\n                    type: object\n                type: object\n            type: object\n          status:\n            description: 'Most recent observed status of the Prometheus cluster. Read-only. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status'\n            properties:\n              availableReplicas:\n                description: Total number of available pods (ready for at least minReadySeconds) targeted by this Prometheus deployment.\n                format: int32\n                type: integer\n              conditions:\n                description: The current state of the Prometheus deployment.\n                items:\n                  description: Condition represents the state of the resources associated with the Prometheus, Alertmanager or ThanosRuler resource.\n                  properties:\n                    lastTransitionTime:\n                      description: lastTransitionTime is the time of the last update to the current status property.\n                      format: date-time\n                      type: string\n                    message:\n                      description: Human-readable message indicating details for the condition's last transition.\n                      type: string\n                    observedGeneration:\n                      description: ObservedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if `.metadata.generation` is currently 12, but the `.status.conditions[].observedGeneration` is 9, the condition is out of date with respect to the current state of the instance.\n                      format: int64\n                      type: integer\n                    reason:\n                      description: Reason for the condition's last transition.\n                      type: string\n                    status:\n                      description: Status of the condition.\n                      type: string\n                    type:\n                      description: Type of the condition being reported.\n                      type: string\n                  required:\n                  - lastTransitionTime\n                  - status\n                  - type\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - type\n                x-kubernetes-list-type: map\n              paused:\n                description: Represents whether any actions on the underlying managed objects are being performed. Only delete actions will be performed.\n                type: boolean\n              replicas:\n                description: Total number of non-terminated pods targeted by this Prometheus deployment (their labels match the selector).\n                format: int32\n                type: integer\n              shardStatuses:\n                description: The list has one entry per shard. Each entry provides a summary of the shard status.\n                items:\n                  properties:\n                    availableReplicas:\n                      description: Total number of available pods (ready for at least minReadySeconds) targeted by this shard.\n                      format: int32\n                      type: integer\n                    replicas:\n                      description: Total number of pods targeted by this shard.\n                      format: int32\n                      type: integer\n                    shardID:\n                      description: Identifier of the shard.\n                      type: string\n                    unavailableReplicas:\n                      description: Total number of unavailable pods targeted by this shard.\n                      format: int32\n                      type: integer\n                    updatedReplicas:\n                      description: Total number of non-terminated pods targeted by this shard that have the desired spec.\n                      format: int32\n                      type: integer\n                  required:\n                  - availableReplicas\n                  - replicas\n                  - shardID\n                  - unavailableReplicas\n                  - updatedReplicas\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - shardID\n                x-kubernetes-list-type: map\n              unavailableReplicas:\n                description: Total number of unavailable pods targeted by this Prometheus deployment.\n                format: int32\n                type: integer\n              updatedReplicas:\n                description: Total number of non-terminated pods targeted by this Prometheus deployment that have the desired version spec.\n                format: int32\n                type: integer\n            required:\n            - availableReplicas\n            - paused\n            - replicas\n            - unavailableReplicas\n            - updatedReplicas\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n    subresources:\n      status: {}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/setup/0prometheusagentCustomResourceDefinition.yaml",
    "content": "apiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.11.1\n  creationTimestamp: null\n  name: prometheusagents.monitoring.coreos.com\nspec:\n  group: monitoring.coreos.com\n  names:\n    categories:\n    - prometheus-operator\n    kind: PrometheusAgent\n    listKind: PrometheusAgentList\n    plural: prometheusagents\n    shortNames:\n    - promagent\n    singular: prometheusagent\n  scope: Namespaced\n  versions:\n  - additionalPrinterColumns:\n    - description: The version of Prometheus agent\n      jsonPath: .spec.version\n      name: Version\n      type: string\n    - description: The number of desired replicas\n      jsonPath: .spec.replicas\n      name: Desired\n      type: integer\n    - description: The number of ready replicas\n      jsonPath: .status.availableReplicas\n      name: Ready\n      type: integer\n    - jsonPath: .status.conditions[?(@.type == 'Reconciled')].status\n      name: Reconciled\n      type: string\n    - jsonPath: .status.conditions[?(@.type == 'Available')].status\n      name: Available\n      type: string\n    - jsonPath: .metadata.creationTimestamp\n      name: Age\n      type: date\n    - description: Whether the resource reconciliation is paused or not\n      jsonPath: .status.paused\n      name: Paused\n      priority: 1\n      type: boolean\n    name: v1alpha1\n    schema:\n      openAPIV3Schema:\n        description: PrometheusAgent defines a Prometheus agent deployment.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: 'Specification of the desired behavior of the Prometheus agent. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status'\n            properties:\n              additionalArgs:\n                description: \"AdditionalArgs allows setting additional arguments for the 'prometheus' container. \\n It is intended for e.g. activating hidden flags which are not supported by the dedicated configuration options yet. The arguments are passed as-is to the Prometheus container which may cause issues if they are invalid or not supported by the given Prometheus version. \\n In case of an argument conflict (e.g. an argument which is already set by the operator itself) or when providing an invalid argument, the reconciliation will fail and an error will be logged.\"\n                items:\n                  description: Argument as part of the AdditionalArgs list.\n                  properties:\n                    name:\n                      description: Name of the argument, e.g. \"scrape.discovery-reload-interval\".\n                      minLength: 1\n                      type: string\n                    value:\n                      description: Argument value, e.g. 30s. Can be empty for name-only arguments (e.g. --storage.tsdb.no-lockfile)\n                      type: string\n                  required:\n                  - name\n                  type: object\n                type: array\n              additionalScrapeConfigs:\n                description: 'AdditionalScrapeConfigs allows specifying a key of a Secret containing additional Prometheus scrape configurations. Scrape configurations specified are appended to the configurations generated by the Prometheus Operator. Job configurations specified must have the form as specified in the official Prometheus documentation: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config. As scrape configs are appended, the user is responsible to make sure it is valid. Note that using this feature may expose the possibility to break upgrades of Prometheus. It is advised to review Prometheus release notes to ensure that no incompatible scrape configs are going to break Prometheus after the upgrade.'\n                properties:\n                  key:\n                    description: The key of the secret to select from.  Must be a valid secret key.\n                    type: string\n                  name:\n                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                    type: string\n                  optional:\n                    description: Specify whether the Secret or its key must be defined\n                    type: boolean\n                required:\n                - key\n                type: object\n                x-kubernetes-map-type: atomic\n              affinity:\n                description: Defines the Pods' affinity scheduling rules if specified.\n                properties:\n                  nodeAffinity:\n                    description: Describes node affinity scheduling rules for the pod.\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n                        items:\n                          description: An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\n                          properties:\n                            preference:\n                              description: A node selector term, associated with the corresponding weight.\n                              properties:\n                                matchExpressions:\n                                  description: A list of node selector requirements by node's labels.\n                                  items:\n                                    description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchFields:\n                                  description: A list of node selector requirements by node's fields.\n                                  items:\n                                    description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            weight:\n                              description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - preference\n                          - weight\n                          type: object\n                        type: array\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.\n                        properties:\n                          nodeSelectorTerms:\n                            description: Required. A list of node selector terms. The terms are ORed.\n                            items:\n                              description: A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\n                              properties:\n                                matchExpressions:\n                                  description: A list of node selector requirements by node's labels.\n                                  items:\n                                    description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchFields:\n                                  description: A list of node selector requirements by node's fields.\n                                  items:\n                                    description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            type: array\n                        required:\n                        - nodeSelectorTerms\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  podAffinity:\n                    description: Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n                        items:\n                          description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\n                          properties:\n                            podAffinityTerm:\n                              description: Required. A pod affinity term, associated with the corresponding weight.\n                              properties:\n                                labelSelector:\n                                  description: A label query over a set of resources, in this case pods.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                      items:\n                                        description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaceSelector:\n                                  description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                      items:\n                                        description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaces:\n                                  description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                  items:\n                                    type: string\n                                  type: array\n                                topologyKey:\n                                  description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                                  type: string\n                              required:\n                              - topologyKey\n                              type: object\n                            weight:\n                              description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - podAffinityTerm\n                          - weight\n                          type: object\n                        type: array\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n                        items:\n                          description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running\n                          properties:\n                            labelSelector:\n                              description: A label query over a set of resources, in this case pods.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaceSelector:\n                              description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaces:\n                              description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                              items:\n                                type: string\n                              type: array\n                            topologyKey:\n                              description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                              type: string\n                          required:\n                          - topologyKey\n                          type: object\n                        type: array\n                    type: object\n                  podAntiAffinity:\n                    description: Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n                        items:\n                          description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\n                          properties:\n                            podAffinityTerm:\n                              description: Required. A pod affinity term, associated with the corresponding weight.\n                              properties:\n                                labelSelector:\n                                  description: A label query over a set of resources, in this case pods.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                      items:\n                                        description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaceSelector:\n                                  description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                      items:\n                                        description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaces:\n                                  description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                  items:\n                                    type: string\n                                  type: array\n                                topologyKey:\n                                  description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                                  type: string\n                              required:\n                              - topologyKey\n                              type: object\n                            weight:\n                              description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - podAffinityTerm\n                          - weight\n                          type: object\n                        type: array\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n                        items:\n                          description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running\n                          properties:\n                            labelSelector:\n                              description: A label query over a set of resources, in this case pods.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaceSelector:\n                              description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaces:\n                              description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                              items:\n                                type: string\n                              type: array\n                            topologyKey:\n                              description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                              type: string\n                          required:\n                          - topologyKey\n                          type: object\n                        type: array\n                    type: object\n                type: object\n              apiserverConfig:\n                description: 'APIServerConfig allows specifying a host and auth methods to access the Kuberntees API server. If null, Prometheus is assumed to run inside of the cluster: it will discover the API servers automatically and use the Pod''s CA certificate and bearer token file at /var/run/secrets/kubernetes.io/serviceaccount/.'\n                properties:\n                  authorization:\n                    description: \"Authorization section for the API server. \\n Cannot be set at the same time as `basicAuth`, `bearerToken`, or `bearerTokenFile`.\"\n                    properties:\n                      credentials:\n                        description: Selects a key of a Secret in the namespace that contains the credentials for authentication.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      credentialsFile:\n                        description: File to read a secret from, mutually exclusive with `credentials`.\n                        type: string\n                      type:\n                        description: \"Defines the authentication type. The value is case-insensitive. \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\"\n                        type: string\n                    type: object\n                  basicAuth:\n                    description: \"BasicAuth configuration for the API server. \\n Cannot be set at the same time as `authorization`, `bearerToken`, or `bearerTokenFile`.\"\n                    properties:\n                      password:\n                        description: The secret in the service monitor namespace that contains the password for authentication.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      username:\n                        description: The secret in the service monitor namespace that contains the username for authentication.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  bearerToken:\n                    description: \"*Warning: this field shouldn't be used because the token value appears in clear-text. Prefer using `authorization`.* \\n *Deprecated: this will be removed in a future release.*\"\n                    type: string\n                  bearerTokenFile:\n                    description: \"File to read bearer token for accessing apiserver. \\n Cannot be set at the same time as `basicAuth`, `authorization`, or `bearerToken`. \\n *Deprecated: this will be removed in a future release. Prefer using `authorization`.*\"\n                    type: string\n                  host:\n                    description: Kubernetes API address consisting of a hostname or IP address followed by an optional port number.\n                    type: string\n                  tlsConfig:\n                    description: TLS Config to use for the API server.\n                    properties:\n                      ca:\n                        description: Certificate authority used when verifying server certificates.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      caFile:\n                        description: Path to the CA cert in the Prometheus container to use for the targets.\n                        type: string\n                      cert:\n                        description: Client certificate to present when doing client-authentication.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      certFile:\n                        description: Path to the client cert file in the Prometheus container for the targets.\n                        type: string\n                      insecureSkipVerify:\n                        description: Disable target certificate validation.\n                        type: boolean\n                      keyFile:\n                        description: Path to the client key file in the Prometheus container for the targets.\n                        type: string\n                      keySecret:\n                        description: Secret containing the client key file for the targets.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      serverName:\n                        description: Used to verify the hostname for the targets.\n                        type: string\n                    type: object\n                required:\n                - host\n                type: object\n              arbitraryFSAccessThroughSMs:\n                description: When true, ServiceMonitor, PodMonitor and Probe object are forbidden to reference arbitrary files on the file system of the 'prometheus' container. When a ServiceMonitor's endpoint specifies a `bearerTokenFile` value (e.g.  '/var/run/secrets/kubernetes.io/serviceaccount/token'), a malicious target can get access to the Prometheus service account's token in the Prometheus' scrape request. Setting `spec.arbitraryFSAccessThroughSM` to 'true' would prevent the attack. Users should instead provide the credentials using the `spec.bearerTokenSecret` field.\n                properties:\n                  deny:\n                    type: boolean\n                type: object\n              configMaps:\n                description: ConfigMaps is a list of ConfigMaps in the same namespace as the Prometheus object, which shall be mounted into the Prometheus Pods. Each ConfigMap is added to the StatefulSet definition as a volume named `configmap-<configmap-name>`. The ConfigMaps are mounted into /etc/prometheus/configmaps/<configmap-name> in the 'prometheus' container.\n                items:\n                  type: string\n                type: array\n              containers:\n                description: \"Containers allows injecting additional containers or modifying operator generated containers. This can be used to allow adding an authentication proxy to the Pods or to change the behavior of an operator generated container. Containers described here modify an operator generated container if they share the same name and modifications are done via a strategic merge patch. \\n The names of containers managed by the operator are: * `prometheus` * `config-reloader` * `thanos-sidecar` \\n Overriding containers is entirely outside the scope of what the maintainers will support and by doing so, you accept that this behaviour may break at any time without notice.\"\n                items:\n                  description: A single application container that you want to run within a pod.\n                  properties:\n                    args:\n                      description: 'Arguments to the entrypoint. The container image''s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    command:\n                      description: 'Entrypoint array. Not executed within a shell. The container image''s ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    env:\n                      description: List of environment variables to set in the container. Cannot be updated.\n                      items:\n                        description: EnvVar represents an environment variable present in a Container.\n                        properties:\n                          name:\n                            description: Name of the environment variable. Must be a C_IDENTIFIER.\n                            type: string\n                          value:\n                            description: 'Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to \"\".'\n                            type: string\n                          valueFrom:\n                            description: Source for the environment variable's value. Cannot be used if value is not empty.\n                            properties:\n                              configMapKeyRef:\n                                description: Selects a key of a ConfigMap.\n                                properties:\n                                  key:\n                                    description: The key to select.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the ConfigMap or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              fieldRef:\n                                description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels[''<KEY>'']`, `metadata.annotations[''<KEY>'']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.'\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              resourceFieldRef:\n                                description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.'\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes, optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              secretKeyRef:\n                                description: Selects a key of a secret in the pod's namespace\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            type: object\n                        required:\n                        - name\n                        type: object\n                      type: array\n                    envFrom:\n                      description: List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.\n                      items:\n                        description: EnvFromSource represents the source of a set of ConfigMaps\n                        properties:\n                          configMapRef:\n                            description: The ConfigMap to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          prefix:\n                            description: An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\n                            type: string\n                          secretRef:\n                            description: The Secret to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      type: array\n                    image:\n                      description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.'\n                      type: string\n                    imagePullPolicy:\n                      description: 'Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images'\n                      type: string\n                    lifecycle:\n                      description: Actions that the management system should take in response to container lifecycle events. Cannot be updated.\n                      properties:\n                        postStart:\n                          description: 'PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request. HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                        preStop:\n                          description: 'PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The Pod''s termination grace period countdown begins before the PreStop hook is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod''s termination grace period (unless delayed by finalizers). Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request. HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                      type: object\n                    livenessProbe:\n                      description: 'Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \\n If this is not specified, the default behavior is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host. Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    name:\n                      description: Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated.\n                      type: string\n                    ports:\n                      description: List of ports to expose from the container. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Modifying this array with strategic merge patch may corrupt the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255. Cannot be updated.\n                      items:\n                        description: ContainerPort represents a network port in a single container.\n                        properties:\n                          containerPort:\n                            description: Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536.\n                            format: int32\n                            type: integer\n                          hostIP:\n                            description: What host IP to bind the external port to.\n                            type: string\n                          hostPort:\n                            description: Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.\n                            format: int32\n                            type: integer\n                          name:\n                            description: If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.\n                            type: string\n                          protocol:\n                            default: TCP\n                            description: Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".\n                            type: string\n                        required:\n                        - containerPort\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - containerPort\n                      - protocol\n                      x-kubernetes-list-type: map\n                    readinessProbe:\n                      description: 'Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \\n If this is not specified, the default behavior is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host. Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    resizePolicy:\n                      description: Resources resize policy for the container.\n                      items:\n                        description: ContainerResizePolicy represents resource resize policy for the container.\n                        properties:\n                          resourceName:\n                            description: 'Name of the resource to which this resource resize policy applies. Supported values: cpu, memory.'\n                            type: string\n                          restartPolicy:\n                            description: Restart policy to apply when specified resource is resized. If not specified, it defaults to NotRequired.\n                            type: string\n                        required:\n                        - resourceName\n                        - restartPolicy\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    resources:\n                      description: 'Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                      properties:\n                        claims:\n                          description: \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\"\n                          items:\n                            description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                            properties:\n                              name:\n                                description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\n                                type: string\n                            required:\n                            - name\n                            type: object\n                          type: array\n                          x-kubernetes-list-map-keys:\n                          - name\n                          x-kubernetes-list-type: map\n                        limits:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                        requests:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                      type: object\n                    securityContext:\n                      description: 'SecurityContext defines the security options the container should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/'\n                      properties:\n                        allowPrivilegeEscalation:\n                          description: 'AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN Note that this field cannot be set when spec.os.name is windows.'\n                          type: boolean\n                        capabilities:\n                          description: The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            add:\n                              description: Added capabilities\n                              items:\n                                description: Capability represent POSIX capabilities type\n                                type: string\n                              type: array\n                            drop:\n                              description: Removed capabilities\n                              items:\n                                description: Capability represent POSIX capabilities type\n                                type: string\n                              type: array\n                          type: object\n                        privileged:\n                          description: Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. Note that this field cannot be set when spec.os.name is windows.\n                          type: boolean\n                        procMount:\n                          description: procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. Note that this field cannot be set when spec.os.name is windows.\n                          type: string\n                        readOnlyRootFilesystem:\n                          description: Whether this container has a read-only root filesystem. Default is false. Note that this field cannot be set when spec.os.name is windows.\n                          type: boolean\n                        runAsGroup:\n                          description: The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        runAsNonRoot:\n                          description: Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\n                          type: boolean\n                        runAsUser:\n                          description: The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        seLinuxOptions:\n                          description: The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container.  May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            level:\n                              description: Level is SELinux level label that applies to the container.\n                              type: string\n                            role:\n                              description: Role is a SELinux role label that applies to the container.\n                              type: string\n                            type:\n                              description: Type is a SELinux type label that applies to the container.\n                              type: string\n                            user:\n                              description: User is a SELinux user label that applies to the container.\n                              type: string\n                          type: object\n                        seccompProfile:\n                          description: The seccomp options to use by this container. If seccomp options are provided at both the pod & container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            localhostProfile:\n                              description: localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is \"Localhost\".\n                              type: string\n                            type:\n                              description: \"type indicates which kind of seccomp profile will be applied. Valid options are: \\n Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.\"\n                              type: string\n                          required:\n                          - type\n                          type: object\n                        windowsOptions:\n                          description: The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux.\n                          properties:\n                            gmsaCredentialSpec:\n                              description: GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.\n                              type: string\n                            gmsaCredentialSpecName:\n                              description: GMSACredentialSpecName is the name of the GMSA credential spec to use.\n                              type: string\n                            hostProcess:\n                              description: HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).  In addition, if HostProcess is true then HostNetwork must also be set to true.\n                              type: boolean\n                            runAsUserName:\n                              description: The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\n                              type: string\n                          type: object\n                      type: object\n                    startupProbe:\n                      description: 'StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod''s lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \\n If this is not specified, the default behavior is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host. Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    stdin:\n                      description: Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false.\n                      type: boolean\n                    stdinOnce:\n                      description: Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false\n                      type: boolean\n                    terminationMessagePath:\n                      description: 'Optional: Path at which the file to which the container''s termination message will be written is mounted into the container''s filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.'\n                      type: string\n                    terminationMessagePolicy:\n                      description: Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.\n                      type: string\n                    tty:\n                      description: Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.\n                      type: boolean\n                    volumeDevices:\n                      description: volumeDevices is the list of block devices to be used by the container.\n                      items:\n                        description: volumeDevice describes a mapping of a raw block device within a container.\n                        properties:\n                          devicePath:\n                            description: devicePath is the path inside of the container that the device will be mapped to.\n                            type: string\n                          name:\n                            description: name must match the name of a persistentVolumeClaim in the pod\n                            type: string\n                        required:\n                        - devicePath\n                        - name\n                        type: object\n                      type: array\n                    volumeMounts:\n                      description: Pod volumes to mount into the container's filesystem. Cannot be updated.\n                      items:\n                        description: VolumeMount describes a mounting of a Volume within a container.\n                        properties:\n                          mountPath:\n                            description: Path within the container at which the volume should be mounted.  Must not contain ':'.\n                            type: string\n                          mountPropagation:\n                            description: mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10.\n                            type: string\n                          name:\n                            description: This must match the Name of a Volume.\n                            type: string\n                          readOnly:\n                            description: Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.\n                            type: boolean\n                          subPath:\n                            description: Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root).\n                            type: string\n                          subPathExpr:\n                            description: Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to \"\" (volume's root). SubPathExpr and SubPath are mutually exclusive.\n                            type: string\n                        required:\n                        - mountPath\n                        - name\n                        type: object\n                      type: array\n                    workingDir:\n                      description: Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.\n                      type: string\n                  required:\n                  - name\n                  type: object\n                type: array\n              enableFeatures:\n                description: \"Enable access to Prometheus feature flags. By default, no features are enabled. \\n Enabling features which are disabled by default is entirely outside the scope of what the maintainers will support and by doing so, you accept that this behaviour may break at any time without notice. \\n For more information see https://prometheus.io/docs/prometheus/latest/feature_flags/\"\n                items:\n                  type: string\n                type: array\n              enableRemoteWriteReceiver:\n                description: \"Enable Prometheus to be used as a receiver for the Prometheus remote write protocol. \\n WARNING: This is not considered an efficient way of ingesting samples. Use it with caution for specific low-volume use cases. It is not suitable for replacing the ingestion via scraping and turning Prometheus into a push-based metrics collection system. For more information see https://prometheus.io/docs/prometheus/latest/querying/api/#remote-write-receiver \\n It requires Prometheus >= v2.33.0.\"\n                type: boolean\n              enforcedBodySizeLimit:\n                description: \"When defined, enforcedBodySizeLimit specifies a global limit on the size of uncompressed response body that will be accepted by Prometheus. Targets responding with a body larger than this many bytes will cause the scrape to fail. \\n It requires Prometheus >= v2.28.0.\"\n                pattern: (^0|([0-9]*[.])?[0-9]+((K|M|G|T|E|P)i?)?B)$\n                type: string\n              enforcedLabelLimit:\n                description: \"When defined, enforcedLabelLimit specifies a global limit on the number of labels per sample. The value overrides any `spec.labelLimit` set by ServiceMonitor, PodMonitor, Probe objects unless `spec.labelLimit` is greater than zero and less than `spec.enforcedLabelLimit`. \\n It requires Prometheus >= v2.27.0.\"\n                format: int64\n                type: integer\n              enforcedLabelNameLengthLimit:\n                description: \"When defined, enforcedLabelNameLengthLimit specifies a global limit on the length of labels name per sample. The value overrides any `spec.labelNameLengthLimit` set by ServiceMonitor, PodMonitor, Probe objects unless `spec.labelNameLengthLimit` is greater than zero and less than `spec.enforcedLabelNameLengthLimit`. \\n It requires Prometheus >= v2.27.0.\"\n                format: int64\n                type: integer\n              enforcedLabelValueLengthLimit:\n                description: \"When not null, enforcedLabelValueLengthLimit defines a global limit on the length of labels value per sample. The value overrides any `spec.labelValueLengthLimit` set by ServiceMonitor, PodMonitor, Probe objects unless `spec.labelValueLengthLimit` is greater than zero and less than `spec.enforcedLabelValueLengthLimit`. \\n It requires Prometheus >= v2.27.0.\"\n                format: int64\n                type: integer\n              enforcedNamespaceLabel:\n                description: \"When not empty, a label will be added to \\n 1. All metrics scraped from `ServiceMonitor`, `PodMonitor`, `Probe` and `ScrapeConfig` objects. 2. All metrics generated from recording rules defined in `PrometheusRule` objects. 3. All alerts generated from alerting rules defined in `PrometheusRule` objects. 4. All vector selectors of PromQL expressions defined in `PrometheusRule` objects. \\n The label will not added for objects referenced in `spec.excludedFromEnforcement`. \\n The label's name is this field's value. The label's value is the namespace of the `ServiceMonitor`, `PodMonitor`, `Probe` or `PrometheusRule` object.\"\n                type: string\n              enforcedSampleLimit:\n                description: \"When defined, enforcedSampleLimit specifies a global limit on the number of scraped samples that will be accepted. This overrides any `spec.sampleLimit` set by ServiceMonitor, PodMonitor, Probe objects unless `spec.sampleLimit` is greater than zero and less than than `spec.enforcedSampleLimit`. \\n It is meant to be used by admins to keep the overall number of samples/series under a desired limit.\"\n                format: int64\n                type: integer\n              enforcedTargetLimit:\n                description: \"When defined, enforcedTargetLimit specifies a global limit on the number of scraped targets. The value overrides any `spec.targetLimit` set by ServiceMonitor, PodMonitor, Probe objects unless `spec.targetLimit` is greater than zero and less than `spec.enforcedTargetLimit`. \\n It is meant to be used by admins to to keep the overall number of targets under a desired limit.\"\n                format: int64\n                type: integer\n              excludedFromEnforcement:\n                description: \"List of references to PodMonitor, ServiceMonitor, Probe and PrometheusRule objects to be excluded from enforcing a namespace label of origin. \\n It is only applicable if `spec.enforcedNamespaceLabel` set to true.\"\n                items:\n                  description: ObjectReference references a PodMonitor, ServiceMonitor, Probe or PrometheusRule object.\n                  properties:\n                    group:\n                      default: monitoring.coreos.com\n                      description: Group of the referent. When not specified, it defaults to `monitoring.coreos.com`\n                      enum:\n                      - monitoring.coreos.com\n                      type: string\n                    name:\n                      description: Name of the referent. When not set, all resources in the namespace are matched.\n                      type: string\n                    namespace:\n                      description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'\n                      minLength: 1\n                      type: string\n                    resource:\n                      description: Resource of the referent.\n                      enum:\n                      - prometheusrules\n                      - servicemonitors\n                      - podmonitors\n                      - probes\n                      type: string\n                  required:\n                  - namespace\n                  - resource\n                  type: object\n                type: array\n              externalLabels:\n                additionalProperties:\n                  type: string\n                description: The labels to add to any time series or alerts when communicating with external systems (federation, remote storage, Alertmanager). Labels defined by `spec.replicaExternalLabelName` and `spec.prometheusExternalLabelName` take precedence over this list.\n                type: object\n              externalUrl:\n                description: The external URL under which the Prometheus service is externally available. This is necessary to generate correct URLs (for instance if Prometheus is accessible behind an Ingress resource).\n                type: string\n              hostAliases:\n                description: Optional list of hosts and IPs that will be injected into the Pod's hosts file if specified.\n                items:\n                  description: HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the pod's hosts file.\n                  properties:\n                    hostnames:\n                      description: Hostnames for the above IP address.\n                      items:\n                        type: string\n                      type: array\n                    ip:\n                      description: IP address of the host file entry.\n                      type: string\n                  required:\n                  - hostnames\n                  - ip\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - ip\n                x-kubernetes-list-type: map\n              hostNetwork:\n                description: \"Use the host's network namespace if true. \\n Make sure to understand the security implications if you want to enable it (https://kubernetes.io/docs/concepts/configuration/overview/). \\n When hostNetwork is enabled, this will set the DNS policy to `ClusterFirstWithHostNet` automatically.\"\n                type: boolean\n              ignoreNamespaceSelectors:\n                description: When true, `spec.namespaceSelector` from all PodMonitor, ServiceMonitor and Probe objects will be ignored. They will only discover targets within the namespace of the PodMonitor, ServiceMonitor and Probe objec.\n                type: boolean\n              image:\n                description: \"Container image name for Prometheus. If specified, it takes precedence over the `spec.baseImage`, `spec.tag` and `spec.sha` fields. \\n Specifying `spec.version` is still necessary to ensure the Prometheus Operator knows which version of Prometheus is being configured. \\n If neither `spec.image` nor `spec.baseImage` are defined, the operator will use the latest upstream version of Prometheus available at the time when the operator was released.\"\n                type: string\n              imagePullPolicy:\n                description: Image pull policy for the 'prometheus', 'init-config-reloader' and 'config-reloader' containers. See https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy for more details.\n                enum:\n                - \"\"\n                - Always\n                - Never\n                - IfNotPresent\n                type: string\n              imagePullSecrets:\n                description: An optional list of references to Secrets in the same namespace to use for pulling images from registries. See http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod\n                items:\n                  description: LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.\n                  properties:\n                    name:\n                      description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                      type: string\n                  type: object\n                  x-kubernetes-map-type: atomic\n                type: array\n              initContainers:\n                description: \"InitContainers allows injecting initContainers to the Pod definition. Those can be used to e.g.  fetch secrets for injection into the Prometheus configuration from external sources. Any errors during the execution of an initContainer will lead to a restart of the Pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ InitContainers described here modify an operator generated init containers if they share the same name and modifications are done via a strategic merge patch. \\n The names of init container name managed by the operator are: * `init-config-reloader`. \\n Overriding init containers is entirely outside the scope of what the maintainers will support and by doing so, you accept that this behaviour may break at any time without notice.\"\n                items:\n                  description: A single application container that you want to run within a pod.\n                  properties:\n                    args:\n                      description: 'Arguments to the entrypoint. The container image''s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    command:\n                      description: 'Entrypoint array. Not executed within a shell. The container image''s ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    env:\n                      description: List of environment variables to set in the container. Cannot be updated.\n                      items:\n                        description: EnvVar represents an environment variable present in a Container.\n                        properties:\n                          name:\n                            description: Name of the environment variable. Must be a C_IDENTIFIER.\n                            type: string\n                          value:\n                            description: 'Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to \"\".'\n                            type: string\n                          valueFrom:\n                            description: Source for the environment variable's value. Cannot be used if value is not empty.\n                            properties:\n                              configMapKeyRef:\n                                description: Selects a key of a ConfigMap.\n                                properties:\n                                  key:\n                                    description: The key to select.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the ConfigMap or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              fieldRef:\n                                description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels[''<KEY>'']`, `metadata.annotations[''<KEY>'']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.'\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              resourceFieldRef:\n                                description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.'\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes, optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              secretKeyRef:\n                                description: Selects a key of a secret in the pod's namespace\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            type: object\n                        required:\n                        - name\n                        type: object\n                      type: array\n                    envFrom:\n                      description: List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.\n                      items:\n                        description: EnvFromSource represents the source of a set of ConfigMaps\n                        properties:\n                          configMapRef:\n                            description: The ConfigMap to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          prefix:\n                            description: An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\n                            type: string\n                          secretRef:\n                            description: The Secret to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      type: array\n                    image:\n                      description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.'\n                      type: string\n                    imagePullPolicy:\n                      description: 'Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images'\n                      type: string\n                    lifecycle:\n                      description: Actions that the management system should take in response to container lifecycle events. Cannot be updated.\n                      properties:\n                        postStart:\n                          description: 'PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request. HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                        preStop:\n                          description: 'PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The Pod''s termination grace period countdown begins before the PreStop hook is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod''s termination grace period (unless delayed by finalizers). Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request. HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                      type: object\n                    livenessProbe:\n                      description: 'Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \\n If this is not specified, the default behavior is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host. Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    name:\n                      description: Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated.\n                      type: string\n                    ports:\n                      description: List of ports to expose from the container. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Modifying this array with strategic merge patch may corrupt the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255. Cannot be updated.\n                      items:\n                        description: ContainerPort represents a network port in a single container.\n                        properties:\n                          containerPort:\n                            description: Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536.\n                            format: int32\n                            type: integer\n                          hostIP:\n                            description: What host IP to bind the external port to.\n                            type: string\n                          hostPort:\n                            description: Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.\n                            format: int32\n                            type: integer\n                          name:\n                            description: If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.\n                            type: string\n                          protocol:\n                            default: TCP\n                            description: Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".\n                            type: string\n                        required:\n                        - containerPort\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - containerPort\n                      - protocol\n                      x-kubernetes-list-type: map\n                    readinessProbe:\n                      description: 'Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \\n If this is not specified, the default behavior is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host. Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    resizePolicy:\n                      description: Resources resize policy for the container.\n                      items:\n                        description: ContainerResizePolicy represents resource resize policy for the container.\n                        properties:\n                          resourceName:\n                            description: 'Name of the resource to which this resource resize policy applies. Supported values: cpu, memory.'\n                            type: string\n                          restartPolicy:\n                            description: Restart policy to apply when specified resource is resized. If not specified, it defaults to NotRequired.\n                            type: string\n                        required:\n                        - resourceName\n                        - restartPolicy\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    resources:\n                      description: 'Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                      properties:\n                        claims:\n                          description: \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\"\n                          items:\n                            description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                            properties:\n                              name:\n                                description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\n                                type: string\n                            required:\n                            - name\n                            type: object\n                          type: array\n                          x-kubernetes-list-map-keys:\n                          - name\n                          x-kubernetes-list-type: map\n                        limits:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                        requests:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                      type: object\n                    securityContext:\n                      description: 'SecurityContext defines the security options the container should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/'\n                      properties:\n                        allowPrivilegeEscalation:\n                          description: 'AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN Note that this field cannot be set when spec.os.name is windows.'\n                          type: boolean\n                        capabilities:\n                          description: The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            add:\n                              description: Added capabilities\n                              items:\n                                description: Capability represent POSIX capabilities type\n                                type: string\n                              type: array\n                            drop:\n                              description: Removed capabilities\n                              items:\n                                description: Capability represent POSIX capabilities type\n                                type: string\n                              type: array\n                          type: object\n                        privileged:\n                          description: Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. Note that this field cannot be set when spec.os.name is windows.\n                          type: boolean\n                        procMount:\n                          description: procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. Note that this field cannot be set when spec.os.name is windows.\n                          type: string\n                        readOnlyRootFilesystem:\n                          description: Whether this container has a read-only root filesystem. Default is false. Note that this field cannot be set when spec.os.name is windows.\n                          type: boolean\n                        runAsGroup:\n                          description: The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        runAsNonRoot:\n                          description: Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\n                          type: boolean\n                        runAsUser:\n                          description: The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        seLinuxOptions:\n                          description: The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container.  May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            level:\n                              description: Level is SELinux level label that applies to the container.\n                              type: string\n                            role:\n                              description: Role is a SELinux role label that applies to the container.\n                              type: string\n                            type:\n                              description: Type is a SELinux type label that applies to the container.\n                              type: string\n                            user:\n                              description: User is a SELinux user label that applies to the container.\n                              type: string\n                          type: object\n                        seccompProfile:\n                          description: The seccomp options to use by this container. If seccomp options are provided at both the pod & container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            localhostProfile:\n                              description: localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is \"Localhost\".\n                              type: string\n                            type:\n                              description: \"type indicates which kind of seccomp profile will be applied. Valid options are: \\n Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.\"\n                              type: string\n                          required:\n                          - type\n                          type: object\n                        windowsOptions:\n                          description: The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux.\n                          properties:\n                            gmsaCredentialSpec:\n                              description: GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.\n                              type: string\n                            gmsaCredentialSpecName:\n                              description: GMSACredentialSpecName is the name of the GMSA credential spec to use.\n                              type: string\n                            hostProcess:\n                              description: HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).  In addition, if HostProcess is true then HostNetwork must also be set to true.\n                              type: boolean\n                            runAsUserName:\n                              description: The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\n                              type: string\n                          type: object\n                      type: object\n                    startupProbe:\n                      description: 'StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod''s lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \\n If this is not specified, the default behavior is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host. Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    stdin:\n                      description: Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false.\n                      type: boolean\n                    stdinOnce:\n                      description: Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false\n                      type: boolean\n                    terminationMessagePath:\n                      description: 'Optional: Path at which the file to which the container''s termination message will be written is mounted into the container''s filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.'\n                      type: string\n                    terminationMessagePolicy:\n                      description: Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.\n                      type: string\n                    tty:\n                      description: Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.\n                      type: boolean\n                    volumeDevices:\n                      description: volumeDevices is the list of block devices to be used by the container.\n                      items:\n                        description: volumeDevice describes a mapping of a raw block device within a container.\n                        properties:\n                          devicePath:\n                            description: devicePath is the path inside of the container that the device will be mapped to.\n                            type: string\n                          name:\n                            description: name must match the name of a persistentVolumeClaim in the pod\n                            type: string\n                        required:\n                        - devicePath\n                        - name\n                        type: object\n                      type: array\n                    volumeMounts:\n                      description: Pod volumes to mount into the container's filesystem. Cannot be updated.\n                      items:\n                        description: VolumeMount describes a mounting of a Volume within a container.\n                        properties:\n                          mountPath:\n                            description: Path within the container at which the volume should be mounted.  Must not contain ':'.\n                            type: string\n                          mountPropagation:\n                            description: mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10.\n                            type: string\n                          name:\n                            description: This must match the Name of a Volume.\n                            type: string\n                          readOnly:\n                            description: Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.\n                            type: boolean\n                          subPath:\n                            description: Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root).\n                            type: string\n                          subPathExpr:\n                            description: Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to \"\" (volume's root). SubPathExpr and SubPath are mutually exclusive.\n                            type: string\n                        required:\n                        - mountPath\n                        - name\n                        type: object\n                      type: array\n                    workingDir:\n                      description: Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.\n                      type: string\n                  required:\n                  - name\n                  type: object\n                type: array\n              listenLocal:\n                description: When true, the Prometheus server listens on the loopback address instead of the Pod IP's address.\n                type: boolean\n              logFormat:\n                description: Log format for Log level for Prometheus and the config-reloader sidecar.\n                enum:\n                - \"\"\n                - logfmt\n                - json\n                type: string\n              logLevel:\n                description: Log level for Prometheus and the config-reloader sidecar.\n                enum:\n                - \"\"\n                - debug\n                - info\n                - warn\n                - error\n                type: string\n              minReadySeconds:\n                description: \"Minimum number of seconds for which a newly created Pod should be ready without any of its container crashing for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready) \\n This is an alpha field from kubernetes 1.22 until 1.24 which requires enabling the StatefulSetMinReadySeconds feature gate.\"\n                format: int32\n                type: integer\n              nodeSelector:\n                additionalProperties:\n                  type: string\n                description: Defines on which Nodes the Pods are scheduled.\n                type: object\n              overrideHonorLabels:\n                description: When true, Prometheus resolves label conflicts by renaming the labels in the scraped data to \"exported_<label value>\" for all targets created from service and pod monitors. Otherwise the HonorLabels field of the service or pod monitor applies.\n                type: boolean\n              overrideHonorTimestamps:\n                description: When true, Prometheus ignores the timestamps for all the targets created from service and pod monitors. Otherwise the HonorTimestamps field of the service or pod monitor applies.\n                type: boolean\n              paused:\n                description: When a Prometheus deployment is paused, no actions except for deletion will be performed on the underlying objects.\n                type: boolean\n              podMetadata:\n                description: PodMetadata configures labels and annotations which are propagated to the Prometheus pods.\n                properties:\n                  annotations:\n                    additionalProperties:\n                      type: string\n                    description: 'Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations'\n                    type: object\n                  labels:\n                    additionalProperties:\n                      type: string\n                    description: 'Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels'\n                    type: object\n                  name:\n                    description: 'Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names'\n                    type: string\n                type: object\n              podMonitorNamespaceSelector:\n                description: Namespaces to match for PodMonitors discovery. An empty label selector matches all namespaces. A null label selector matches the current namespace only.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              podMonitorSelector:\n                description: \"*Experimental* PodMonitors to be selected for target discovery. An empty label selector matches all objects. A null label selector matches no objects. \\n If `spec.serviceMonitorSelector`, `spec.podMonitorSelector`, `spec.probeSelector` and `spec.scrapeConfigSelector` are null, the Prometheus configuration is unmanaged. The Prometheus operator will ensure that the Prometheus configuration's Secret exists, but it is the responsibility of the user to provide the raw gzipped Prometheus configuration under the `prometheus.yaml.gz` key. This behavior is *deprecated* and will be removed in the next major version of the custom resource definition. It is recommended to use `spec.additionalScrapeConfigs` instead.\"\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              podTargetLabels:\n                description: PodTargetLabels are appended to the `spec.podTargetLabels` field of all PodMonitor and ServiceMonitor objects.\n                items:\n                  type: string\n                type: array\n              portName:\n                default: web\n                description: 'Port name used for the pods and governing service. Default: \"web\"'\n                type: string\n              priorityClassName:\n                description: Priority class assigned to the Pods.\n                type: string\n              probeNamespaceSelector:\n                description: '*Experimental* Namespaces to match for Probe discovery. An empty label selector matches all namespaces. A null label selector matches the current namespace only.'\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              probeSelector:\n                description: \"*Experimental* Probes to be selected for target discovery. An empty label selector matches all objects. A null label selector matches no objects. \\n If `spec.serviceMonitorSelector`, `spec.podMonitorSelector`, `spec.probeSelector` and `spec.scrapeConfigSelector` are null, the Prometheus configuration is unmanaged. The Prometheus operator will ensure that the Prometheus configuration's Secret exists, but it is the responsibility of the user to provide the raw gzipped Prometheus configuration under the `prometheus.yaml.gz` key. This behavior is *deprecated* and will be removed in the next major version of the custom resource definition. It is recommended to use `spec.additionalScrapeConfigs` instead.\"\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              prometheusExternalLabelName:\n                description: \"Name of Prometheus external label used to denote the Prometheus instance name. The external label will _not_ be added when the field is set to the empty string (`\\\"\\\"`). \\n Default: \\\"prometheus\\\"\"\n                type: string\n              remoteWrite:\n                description: Defines the list of remote write configurations.\n                items:\n                  description: RemoteWriteSpec defines the configuration to write samples from Prometheus to a remote endpoint.\n                  properties:\n                    authorization:\n                      description: \"Authorization section for the URL. \\n It requires Prometheus >= v2.26.0. \\n Cannot be set at the same time as `sigv4`, `basicAuth`, or `oauth2`.\"\n                      properties:\n                        credentials:\n                          description: Selects a key of a Secret in the namespace that contains the credentials for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        credentialsFile:\n                          description: File to read a secret from, mutually exclusive with `credentials`.\n                          type: string\n                        type:\n                          description: \"Defines the authentication type. The value is case-insensitive. \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\"\n                          type: string\n                      type: object\n                    basicAuth:\n                      description: \"BasicAuth configuration for the URL. \\n Cannot be set at the same time as `sigv4`, `authorization`, or `oauth2`.\"\n                      properties:\n                        password:\n                          description: The secret in the service monitor namespace that contains the password for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        username:\n                          description: The secret in the service monitor namespace that contains the username for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      type: object\n                    bearerToken:\n                      description: \"*Warning: this field shouldn't be used because the token value appears in clear-text. Prefer using `authorization`.* \\n *Deprecated: this will be removed in a future release.*\"\n                      type: string\n                    bearerTokenFile:\n                      description: \"File from which to read bearer token for the URL. \\n *Deprecated: this will be removed in a future release. Prefer using `authorization`.*\"\n                      type: string\n                    headers:\n                      additionalProperties:\n                        type: string\n                      description: \"Custom HTTP headers to be sent along with each remote write request. Be aware that headers that are set by Prometheus itself can't be overwritten. \\n It requires Prometheus >= v2.25.0.\"\n                      type: object\n                    metadataConfig:\n                      description: MetadataConfig configures the sending of series metadata to the remote storage.\n                      properties:\n                        send:\n                          description: Defines whether metric metadata is sent to the remote storage or not.\n                          type: boolean\n                        sendInterval:\n                          description: Defines how frequently metric metadata is sent to the remote storage.\n                          pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                          type: string\n                      type: object\n                    name:\n                      description: \"The name of the remote write queue, it must be unique if specified. The name is used in metrics and logging in order to differentiate queues. \\n It requires Prometheus >= v2.15.0.\"\n                      type: string\n                    oauth2:\n                      description: \"OAuth2 configuration for the URL. \\n It requires Prometheus >= v2.27.0. \\n Cannot be set at the same time as `sigv4`, `authorization`, or `basicAuth`.\"\n                      properties:\n                        clientId:\n                          description: The secret or configmap containing the OAuth2 client id\n                          properties:\n                            configMap:\n                              description: ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        clientSecret:\n                          description: The secret containing the OAuth2 client secret\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        endpointParams:\n                          additionalProperties:\n                            type: string\n                          description: Parameters to append to the token URL\n                          type: object\n                        scopes:\n                          description: OAuth2 scopes used for the token request\n                          items:\n                            type: string\n                          type: array\n                        tokenUrl:\n                          description: The URL to fetch the token from\n                          minLength: 1\n                          type: string\n                      required:\n                      - clientId\n                      - clientSecret\n                      - tokenUrl\n                      type: object\n                    proxyUrl:\n                      description: Optional ProxyURL.\n                      type: string\n                    queueConfig:\n                      description: QueueConfig allows tuning of the remote write queue parameters.\n                      properties:\n                        batchSendDeadline:\n                          description: BatchSendDeadline is the maximum time a sample will wait in buffer.\n                          type: string\n                        capacity:\n                          description: Capacity is the number of samples to buffer per shard before we start dropping them.\n                          type: integer\n                        maxBackoff:\n                          description: MaxBackoff is the maximum retry delay.\n                          type: string\n                        maxRetries:\n                          description: MaxRetries is the maximum number of times to retry a batch on recoverable errors.\n                          type: integer\n                        maxSamplesPerSend:\n                          description: MaxSamplesPerSend is the maximum number of samples per send.\n                          type: integer\n                        maxShards:\n                          description: MaxShards is the maximum number of shards, i.e. amount of concurrency.\n                          type: integer\n                        minBackoff:\n                          description: MinBackoff is the initial retry delay. Gets doubled for every retry.\n                          type: string\n                        minShards:\n                          description: MinShards is the minimum number of shards, i.e. amount of concurrency.\n                          type: integer\n                        retryOnRateLimit:\n                          description: Retry upon receiving a 429 status code from the remote-write storage. This is experimental feature and might change in the future.\n                          type: boolean\n                      type: object\n                    remoteTimeout:\n                      description: Timeout for requests to the remote write endpoint.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    sendExemplars:\n                      description: \"Enables sending of exemplars over remote write. Note that exemplar-storage itself must be enabled using the `spec.enableFeature` option for exemplars to be scraped in the first place. \\n It requires Prometheus >= v2.27.0.\"\n                      type: boolean\n                    sendNativeHistograms:\n                      description: \"Enables sending of native histograms, also known as sparse histograms over remote write. \\n It requires Prometheus >= v2.40.0.\"\n                      type: boolean\n                    sigv4:\n                      description: \"Sigv4 allows to configures AWS's Signature Verification 4 for the URL. \\n It requires Prometheus >= v2.26.0. \\n Cannot be set at the same time as `authorization`, `basicAuth`, or `oauth2`.\"\n                      properties:\n                        accessKey:\n                          description: AccessKey is the AWS API key. If not specified, the environment variable `AWS_ACCESS_KEY_ID` is used.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        profile:\n                          description: Profile is the named AWS profile used to authenticate.\n                          type: string\n                        region:\n                          description: Region is the AWS region. If blank, the region from the default credentials chain used.\n                          type: string\n                        roleArn:\n                          description: RoleArn is the named AWS profile used to authenticate.\n                          type: string\n                        secretKey:\n                          description: SecretKey is the AWS API secret. If not specified, the environment variable `AWS_SECRET_ACCESS_KEY` is used.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      type: object\n                    tlsConfig:\n                      description: TLS Config to use for the URL.\n                      properties:\n                        ca:\n                          description: Certificate authority used when verifying server certificates.\n                          properties:\n                            configMap:\n                              description: ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        caFile:\n                          description: Path to the CA cert in the Prometheus container to use for the targets.\n                          type: string\n                        cert:\n                          description: Client certificate to present when doing client-authentication.\n                          properties:\n                            configMap:\n                              description: ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        certFile:\n                          description: Path to the client cert file in the Prometheus container for the targets.\n                          type: string\n                        insecureSkipVerify:\n                          description: Disable target certificate validation.\n                          type: boolean\n                        keyFile:\n                          description: Path to the client key file in the Prometheus container for the targets.\n                          type: string\n                        keySecret:\n                          description: Secret containing the client key file for the targets.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        serverName:\n                          description: Used to verify the hostname for the targets.\n                          type: string\n                      type: object\n                    url:\n                      description: The URL of the endpoint to send samples to.\n                      type: string\n                    writeRelabelConfigs:\n                      description: The list of remote write relabel configurations.\n                      items:\n                        description: \"RelabelConfig allows dynamic rewriting of the label set for targets, alerts, scraped samples and remote write samples. \\n More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\"\n                        properties:\n                          action:\n                            default: replace\n                            description: \"Action to perform based on the regex matching. \\n `Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0. `DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0. \\n Default: \\\"Replace\\\"\"\n                            enum:\n                            - replace\n                            - Replace\n                            - keep\n                            - Keep\n                            - drop\n                            - Drop\n                            - hashmod\n                            - HashMod\n                            - labelmap\n                            - LabelMap\n                            - labeldrop\n                            - LabelDrop\n                            - labelkeep\n                            - LabelKeep\n                            - lowercase\n                            - Lowercase\n                            - uppercase\n                            - Uppercase\n                            - keepequal\n                            - KeepEqual\n                            - dropequal\n                            - DropEqual\n                            type: string\n                          modulus:\n                            description: \"Modulus to take of the hash of the source label values. \\n Only applicable when the action is `HashMod`.\"\n                            format: int64\n                            type: integer\n                          regex:\n                            description: Regular expression against which the extracted value is matched.\n                            type: string\n                          replacement:\n                            description: \"Replacement value against which a Replace action is performed if the regular expression matches. \\n Regex capture groups are available.\"\n                            type: string\n                          separator:\n                            description: Separator is the string between concatenated SourceLabels.\n                            type: string\n                          sourceLabels:\n                            description: The source labels select values from existing labels. Their content is concatenated using the configured Separator and matched against the configured regular expression.\n                            items:\n                              description: LabelName is a valid Prometheus label name which may only contain ASCII letters, numbers, as well as underscores.\n                              pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$\n                              type: string\n                            type: array\n                          targetLabel:\n                            description: \"Label to which the resulting string is written in a replacement. \\n It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`, `KeepEqual` and `DropEqual` actions. \\n Regex capture groups are available.\"\n                            type: string\n                        type: object\n                      type: array\n                  required:\n                  - url\n                  type: object\n                type: array\n              replicaExternalLabelName:\n                description: \"Name of Prometheus external label used to denote the replica name. The external label will _not_ be added when the field is set to the empty string (`\\\"\\\"`). \\n Default: \\\"prometheus_replica\\\"\"\n                type: string\n              replicas:\n                description: \"Number of replicas of each shard to deploy for a Prometheus deployment. `spec.replicas` multiplied by `spec.shards` is the total number of Pods created. \\n Default: 1\"\n                format: int32\n                type: integer\n              resources:\n                description: Defines the resources requests and limits of the 'prometheus' container.\n                properties:\n                  claims:\n                    description: \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\"\n                    items:\n                      description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                      properties:\n                        name:\n                          description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\n                          type: string\n                      required:\n                      - name\n                      type: object\n                    type: array\n                    x-kubernetes-list-map-keys:\n                    - name\n                    x-kubernetes-list-type: map\n                  limits:\n                    additionalProperties:\n                      anyOf:\n                      - type: integer\n                      - type: string\n                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                      x-kubernetes-int-or-string: true\n                    description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                    type: object\n                  requests:\n                    additionalProperties:\n                      anyOf:\n                      - type: integer\n                      - type: string\n                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                      x-kubernetes-int-or-string: true\n                    description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                    type: object\n                type: object\n              routePrefix:\n                description: \"The route prefix Prometheus registers HTTP handlers for. \\n This is useful when using `spec.externalURL`, and a proxy is rewriting HTTP routes of a request, and the actual ExternalURL is still true, but the server serves requests under a different route prefix. For example for use with `kubectl proxy`.\"\n                type: string\n              scrapeConfigNamespaceSelector:\n                description: Namespaces to match for ScrapeConfig discovery. An empty label selector matches all namespaces. A null label selector matches the current current namespace only.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              scrapeConfigSelector:\n                description: \"*Experimental* ScrapeConfigs to be selected for target discovery. An empty label selector matches all objects. A null label selector matches no objects. \\n If `spec.serviceMonitorSelector`, `spec.podMonitorSelector`, `spec.probeSelector` and `spec.scrapeConfigSelector` are null, the Prometheus configuration is unmanaged. The Prometheus operator will ensure that the Prometheus configuration's Secret exists, but it is the responsibility of the user to provide the raw gzipped Prometheus configuration under the `prometheus.yaml.gz` key. This behavior is *deprecated* and will be removed in the next major version of the custom resource definition. It is recommended to use `spec.additionalScrapeConfigs` instead.\"\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              scrapeInterval:\n                default: 30s\n                description: \"Interval between consecutive scrapes. \\n Default: \\\"30s\\\"\"\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              scrapeTimeout:\n                description: Number of seconds to wait until a scrape request times out.\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              secrets:\n                description: Secrets is a list of Secrets in the same namespace as the Prometheus object, which shall be mounted into the Prometheus Pods. Each Secret is added to the StatefulSet definition as a volume named `secret-<secret-name>`. The Secrets are mounted into /etc/prometheus/secrets/<secret-name> in the 'prometheus' container.\n                items:\n                  type: string\n                type: array\n              securityContext:\n                description: SecurityContext holds pod-level security attributes and common container settings. This defaults to the default PodSecurityContext.\n                properties:\n                  fsGroup:\n                    description: \"A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod: \\n 1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw---- \\n If unset, the Kubelet will not modify the ownership and permissions of any volume. Note that this field cannot be set when spec.os.name is windows.\"\n                    format: int64\n                    type: integer\n                  fsGroupChangePolicy:\n                    description: 'fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are \"OnRootMismatch\" and \"Always\". If not specified, \"Always\" is used. Note that this field cannot be set when spec.os.name is windows.'\n                    type: string\n                  runAsGroup:\n                    description: The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows.\n                    format: int64\n                    type: integer\n                  runAsNonRoot:\n                    description: Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\n                    type: boolean\n                  runAsUser:\n                    description: The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows.\n                    format: int64\n                    type: integer\n                  seLinuxOptions:\n                    description: The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container.  May also be set in SecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows.\n                    properties:\n                      level:\n                        description: Level is SELinux level label that applies to the container.\n                        type: string\n                      role:\n                        description: Role is a SELinux role label that applies to the container.\n                        type: string\n                      type:\n                        description: Type is a SELinux type label that applies to the container.\n                        type: string\n                      user:\n                        description: User is a SELinux user label that applies to the container.\n                        type: string\n                    type: object\n                  seccompProfile:\n                    description: The seccomp options to use by the containers in this pod. Note that this field cannot be set when spec.os.name is windows.\n                    properties:\n                      localhostProfile:\n                        description: localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is \"Localhost\".\n                        type: string\n                      type:\n                        description: \"type indicates which kind of seccomp profile will be applied. Valid options are: \\n Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.\"\n                        type: string\n                    required:\n                    - type\n                    type: object\n                  supplementalGroups:\n                    description: A list of groups applied to the first process run in each container, in addition to the container's primary GID, the fsGroup (if specified), and group memberships defined in the container image for the uid of the container process. If unspecified, no additional groups are added to any container. Note that group memberships defined in the container image for the uid of the container process are still effective, even if they are not included in this list. Note that this field cannot be set when spec.os.name is windows.\n                    items:\n                      format: int64\n                      type: integer\n                    type: array\n                  sysctls:\n                    description: Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch. Note that this field cannot be set when spec.os.name is windows.\n                    items:\n                      description: Sysctl defines a kernel parameter to be set\n                      properties:\n                        name:\n                          description: Name of a property to set\n                          type: string\n                        value:\n                          description: Value of a property to set\n                          type: string\n                      required:\n                      - name\n                      - value\n                      type: object\n                    type: array\n                  windowsOptions:\n                    description: The Windows specific settings applied to all containers. If unspecified, the options within a container's SecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux.\n                    properties:\n                      gmsaCredentialSpec:\n                        description: GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.\n                        type: string\n                      gmsaCredentialSpecName:\n                        description: GMSACredentialSpecName is the name of the GMSA credential spec to use.\n                        type: string\n                      hostProcess:\n                        description: HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).  In addition, if HostProcess is true then HostNetwork must also be set to true.\n                        type: boolean\n                      runAsUserName:\n                        description: The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\n                        type: string\n                    type: object\n                type: object\n              serviceAccountName:\n                description: ServiceAccountName is the name of the ServiceAccount to use to run the Prometheus Pods.\n                type: string\n              serviceMonitorNamespaceSelector:\n                description: Namespaces to match for ServicedMonitors discovery. An empty label selector matches all namespaces. A null label selector matches the current namespace only.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              serviceMonitorSelector:\n                description: \"ServiceMonitors to be selected for target discovery. An empty label selector matches all objects. A null label selector matches no objects. \\n If `spec.serviceMonitorSelector`, `spec.podMonitorSelector`, `spec.probeSelector` and `spec.scrapeConfigSelector` are null, the Prometheus configuration is unmanaged. The Prometheus operator will ensure that the Prometheus configuration's Secret exists, but it is the responsibility of the user to provide the raw gzipped Prometheus configuration under the `prometheus.yaml.gz` key. This behavior is *deprecated* and will be removed in the next major version of the custom resource definition. It is recommended to use `spec.additionalScrapeConfigs` instead.\"\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              shards:\n                description: \"EXPERIMENTAL: Number of shards to distribute targets onto. `spec.replicas` multiplied by `spec.shards` is the total number of Pods created. \\n Note that scaling down shards will not reshard data onto remaining instances, it must be manually moved. Increasing shards will not reshard data either but it will continue to be available from the same instances. To query globally, use Thanos sidecar and Thanos querier or remote write data to a central location. \\n Sharding is performed on the content of the `__address__` target meta-label for PodMonitors and ServiceMonitors and `__param_target__` for Probes. \\n Default: 1\"\n                format: int32\n                type: integer\n              storage:\n                description: Storage defines the storage used by Prometheus.\n                properties:\n                  disableMountSubPath:\n                    description: '*Deprecated: subPath usage will be removed in a future release.*'\n                    type: boolean\n                  emptyDir:\n                    description: 'EmptyDirVolumeSource to be used by the StatefulSet. If specified, it takes precedence over `ephemeral` and `volumeClaimTemplate`. More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir'\n                    properties:\n                      medium:\n                        description: 'medium represents what type of storage medium should back this directory. The default is \"\" which means to use the node''s default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                        type: string\n                      sizeLimit:\n                        anyOf:\n                        - type: integer\n                        - type: string\n                        description: 'sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                        x-kubernetes-int-or-string: true\n                    type: object\n                  ephemeral:\n                    description: 'EphemeralVolumeSource to be used by the StatefulSet. This is a beta field in k8s 1.21 and GA in 1.15. For lower versions, starting with k8s 1.19, it requires enabling the GenericEphemeralVolume feature gate. More info: https://kubernetes.io/docs/concepts/storage/ephemeral-volumes/#generic-ephemeral-volumes'\n                    properties:\n                      volumeClaimTemplate:\n                        description: \"Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod.  The name of the PVC will be `<pod name>-<volume name>` where `<volume name>` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long). \\n An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. \\n This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. \\n Required, must not be nil.\"\n                        properties:\n                          metadata:\n                            description: May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.\n                            type: object\n                          spec:\n                            description: The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.\n                            properties:\n                              accessModes:\n                                description: 'accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                                items:\n                                  type: string\n                                type: array\n                              dataSource:\n                                description: 'dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.'\n                                properties:\n                                  apiGroup:\n                                    description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.\n                                    type: string\n                                  kind:\n                                    description: Kind is the type of resource being referenced\n                                    type: string\n                                  name:\n                                    description: Name is the name of resource being referenced\n                                    type: string\n                                required:\n                                - kind\n                                - name\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              dataSourceRef:\n                                description: 'dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn''t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn''t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.'\n                                properties:\n                                  apiGroup:\n                                    description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.\n                                    type: string\n                                  kind:\n                                    description: Kind is the type of resource being referenced\n                                    type: string\n                                  name:\n                                    description: Name is the name of resource being referenced\n                                    type: string\n                                  namespace:\n                                    description: Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\n                                    type: string\n                                required:\n                                - kind\n                                - name\n                                type: object\n                              resources:\n                                description: 'resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'\n                                properties:\n                                  claims:\n                                    description: \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\"\n                                    items:\n                                      description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                                      properties:\n                                        name:\n                                          description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\n                                          type: string\n                                      required:\n                                      - name\n                                      type: object\n                                    type: array\n                                    x-kubernetes-list-map-keys:\n                                    - name\n                                    x-kubernetes-list-type: map\n                                  limits:\n                                    additionalProperties:\n                                      anyOf:\n                                      - type: integer\n                                      - type: string\n                                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                      x-kubernetes-int-or-string: true\n                                    description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                    type: object\n                                  requests:\n                                    additionalProperties:\n                                      anyOf:\n                                      - type: integer\n                                      - type: string\n                                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                      x-kubernetes-int-or-string: true\n                                    description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                    type: object\n                                type: object\n                              selector:\n                                description: selector is a label query over volumes to consider for binding.\n                                properties:\n                                  matchExpressions:\n                                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                    items:\n                                      description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                      properties:\n                                        key:\n                                          description: key is the label key that the selector applies to.\n                                          type: string\n                                        operator:\n                                          description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                          type: string\n                                        values:\n                                          description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                          items:\n                                            type: string\n                                          type: array\n                                      required:\n                                      - key\n                                      - operator\n                                      type: object\n                                    type: array\n                                  matchLabels:\n                                    additionalProperties:\n                                      type: string\n                                    description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                    type: object\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              storageClassName:\n                                description: 'storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'\n                                type: string\n                              volumeMode:\n                                description: volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.\n                                type: string\n                              volumeName:\n                                description: volumeName is the binding reference to the PersistentVolume backing this claim.\n                                type: string\n                            type: object\n                        required:\n                        - spec\n                        type: object\n                    type: object\n                  volumeClaimTemplate:\n                    description: Defines the PVC spec to be used by the Prometheus StatefulSets. The easiest way to use a volume that cannot be automatically provisioned is to use a label selector alongside manually created PersistentVolumes.\n                    properties:\n                      apiVersion:\n                        description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n                        type: string\n                      kind:\n                        description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n                        type: string\n                      metadata:\n                        description: EmbeddedMetadata contains metadata relevant to an EmbeddedResource.\n                        properties:\n                          annotations:\n                            additionalProperties:\n                              type: string\n                            description: 'Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations'\n                            type: object\n                          labels:\n                            additionalProperties:\n                              type: string\n                            description: 'Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels'\n                            type: object\n                          name:\n                            description: 'Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names'\n                            type: string\n                        type: object\n                      spec:\n                        description: 'Defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'\n                        properties:\n                          accessModes:\n                            description: 'accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                            items:\n                              type: string\n                            type: array\n                          dataSource:\n                            description: 'dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.'\n                            properties:\n                              apiGroup:\n                                description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.\n                                type: string\n                              kind:\n                                description: Kind is the type of resource being referenced\n                                type: string\n                              name:\n                                description: Name is the name of resource being referenced\n                                type: string\n                            required:\n                            - kind\n                            - name\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          dataSourceRef:\n                            description: 'dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn''t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn''t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.'\n                            properties:\n                              apiGroup:\n                                description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.\n                                type: string\n                              kind:\n                                description: Kind is the type of resource being referenced\n                                type: string\n                              name:\n                                description: Name is the name of resource being referenced\n                                type: string\n                              namespace:\n                                description: Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\n                                type: string\n                            required:\n                            - kind\n                            - name\n                            type: object\n                          resources:\n                            description: 'resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'\n                            properties:\n                              claims:\n                                description: \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\"\n                                items:\n                                  description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                                  properties:\n                                    name:\n                                      description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\n                                      type: string\n                                  required:\n                                  - name\n                                  type: object\n                                type: array\n                                x-kubernetes-list-map-keys:\n                                - name\n                                x-kubernetes-list-type: map\n                              limits:\n                                additionalProperties:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                  x-kubernetes-int-or-string: true\n                                description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                type: object\n                              requests:\n                                additionalProperties:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                  x-kubernetes-int-or-string: true\n                                description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                type: object\n                            type: object\n                          selector:\n                            description: selector is a label query over volumes to consider for binding.\n                            properties:\n                              matchExpressions:\n                                description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                items:\n                                  description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                  properties:\n                                    key:\n                                      description: key is the label key that the selector applies to.\n                                      type: string\n                                    operator:\n                                      description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                      type: string\n                                    values:\n                                      description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                      items:\n                                        type: string\n                                      type: array\n                                  required:\n                                  - key\n                                  - operator\n                                  type: object\n                                type: array\n                              matchLabels:\n                                additionalProperties:\n                                  type: string\n                                description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                type: object\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          storageClassName:\n                            description: 'storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'\n                            type: string\n                          volumeMode:\n                            description: volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.\n                            type: string\n                          volumeName:\n                            description: volumeName is the binding reference to the PersistentVolume backing this claim.\n                            type: string\n                        type: object\n                      status:\n                        description: '*Deprecated: this field is never set.*'\n                        properties:\n                          accessModes:\n                            description: 'accessModes contains the actual access modes the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                            items:\n                              type: string\n                            type: array\n                          allocatedResources:\n                            additionalProperties:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                              x-kubernetes-int-or-string: true\n                            description: allocatedResources is the storage resource within AllocatedResources tracks the capacity allocated to a PVC. It may be larger than the actual capacity when a volume expansion operation is requested. For storage quota, the larger value from allocatedResources and PVC.spec.resources is used. If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation. If a volume expansion capacity request is lowered, allocatedResources is only lowered if there are no expansion operations in progress and if the actual volume capacity is equal or lower than the requested capacity. This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.\n                            type: object\n                          capacity:\n                            additionalProperties:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                              x-kubernetes-int-or-string: true\n                            description: capacity represents the actual resources of the underlying volume.\n                            type: object\n                          conditions:\n                            description: conditions is the current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'.\n                            items:\n                              description: PersistentVolumeClaimCondition contains details about state of pvc\n                              properties:\n                                lastProbeTime:\n                                  description: lastProbeTime is the time we probed the condition.\n                                  format: date-time\n                                  type: string\n                                lastTransitionTime:\n                                  description: lastTransitionTime is the time the condition transitioned from one status to another.\n                                  format: date-time\n                                  type: string\n                                message:\n                                  description: message is the human-readable message indicating details about last transition.\n                                  type: string\n                                reason:\n                                  description: reason is a unique, this should be a short, machine understandable string that gives the reason for condition's last transition. If it reports \"ResizeStarted\" that means the underlying persistent volume is being resized.\n                                  type: string\n                                status:\n                                  type: string\n                                type:\n                                  description: PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type\n                                  type: string\n                              required:\n                              - status\n                              - type\n                              type: object\n                            type: array\n                          phase:\n                            description: phase represents the current phase of PersistentVolumeClaim.\n                            type: string\n                          resizeStatus:\n                            description: resizeStatus stores status of resize operation. ResizeStatus is not set by default but when expansion is complete resizeStatus is set to empty string by resize controller or kubelet. This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.\n                            type: string\n                        type: object\n                    type: object\n                type: object\n              tolerations:\n                description: Defines the Pods' tolerations if specified.\n                items:\n                  description: The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.\n                  properties:\n                    effect:\n                      description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\n                      type: string\n                    key:\n                      description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.\n                      type: string\n                    operator:\n                      description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.\n                      type: string\n                    tolerationSeconds:\n                      description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.\n                      format: int64\n                      type: integer\n                    value:\n                      description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.\n                      type: string\n                  type: object\n                type: array\n              topologySpreadConstraints:\n                description: Defines the pod's topology spread constraints if specified.\n                items:\n                  description: TopologySpreadConstraint specifies how to spread matching pods among the given topology.\n                  properties:\n                    labelSelector:\n                      description: LabelSelector is used to find matching pods. Pods that match this label selector are counted to determine the number of pods in their corresponding topology domain.\n                      properties:\n                        matchExpressions:\n                          description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                          items:\n                            description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                            properties:\n                              key:\n                                description: key is the label key that the selector applies to.\n                                type: string\n                              operator:\n                                description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                type: string\n                              values:\n                                description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                items:\n                                  type: string\n                                type: array\n                            required:\n                            - key\n                            - operator\n                            type: object\n                          type: array\n                        matchLabels:\n                          additionalProperties:\n                            type: string\n                          description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                          type: object\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    matchLabelKeys:\n                      description: \"MatchLabelKeys is a set of pod label keys to select the pods over which spreading will be calculated. The keys are used to lookup values from the incoming pod labels, those key-value labels are ANDed with labelSelector to select the group of existing pods over which spreading will be calculated for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. MatchLabelKeys cannot be set when LabelSelector isn't set. Keys that don't exist in the incoming pod labels will be ignored. A null or empty list means only match against labelSelector. \\n This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).\"\n                      items:\n                        type: string\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    maxSkew:\n                      description: 'MaxSkew describes the degree to which pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. The global minimum is the minimum number of matching pods in an eligible domain or zero if the number of eligible domains is less than MinDomains. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 2/2/1: In this case, the global minimum is 1. | zone1 | zone2 | zone3 | |  P P  |  P P  |   P   | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2; scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence to topologies that satisfy it. It''s a required field. Default value is 1 and 0 is not allowed.'\n                      format: int32\n                      type: integer\n                    minDomains:\n                      description: \"MinDomains indicates a minimum number of eligible domains. When the number of eligible domains with matching topology keys is less than minDomains, Pod Topology Spread treats \\\"global minimum\\\" as 0, and then the calculation of Skew is performed. And when the number of eligible domains with matching topology keys equals or greater than minDomains, this value has no effect on scheduling. As a result, when the number of eligible domains is less than minDomains, scheduler won't schedule more than maxSkew Pods to those domains. If value is nil, the constraint behaves as if MinDomains is equal to 1. Valid values are integers greater than 0. When value is not nil, WhenUnsatisfiable must be DoNotSchedule. \\n For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same labelSelector spread as 2/2/2: | zone1 | zone2 | zone3 | |  P P  |  P P  |  P P  | The number of domains is less than 5(MinDomains), so \\\"global minimum\\\" is treated as 0. In this situation, new pod with the same labelSelector cannot be scheduled, because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones, it will violate MaxSkew. \\n This is a beta field and requires the MinDomainsInPodTopologySpread feature gate to be enabled (enabled by default).\"\n                      format: int32\n                      type: integer\n                    nodeAffinityPolicy:\n                      description: \"NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector when calculating pod topology spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations. \\n If this value is nil, the behavior is equivalent to the Honor policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\"\n                      type: string\n                    nodeTaintsPolicy:\n                      description: \"NodeTaintsPolicy indicates how we will treat node taints when calculating pod topology spread skew. Options are: - Honor: nodes without taints, along with tainted nodes for which the incoming pod has a toleration, are included. - Ignore: node taints are ignored. All nodes are included. \\n If this value is nil, the behavior is equivalent to the Ignore policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\"\n                      type: string\n                    topologyKey:\n                      description: TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each <key, value> as a \"bucket\", and try to put balanced number of pods into each bucket. We define a domain as a particular instance of a topology. Also, we define an eligible domain as a domain whose nodes meet the requirements of nodeAffinityPolicy and nodeTaintsPolicy. e.g. If TopologyKey is \"kubernetes.io/hostname\", each Node is a domain of that topology. And, if TopologyKey is \"topology.kubernetes.io/zone\", each zone is a domain of that topology. It's a required field.\n                      type: string\n                    whenUnsatisfiable:\n                      description: 'WhenUnsatisfiable indicates how to deal with a pod if it doesn''t satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location, but giving higher precedence to topologies that would help reduce the skew. A constraint is considered \"Unsatisfiable\" for an incoming pod if and only if every possible node assignment for that pod would violate \"MaxSkew\" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P |   P   |   P   | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won''t make it *more* imbalanced. It''s a required field.'\n                      type: string\n                  required:\n                  - maxSkew\n                  - topologyKey\n                  - whenUnsatisfiable\n                  type: object\n                type: array\n              tracingConfig:\n                description: 'EXPERIMENTAL: TracingConfig configures tracing in Prometheus. This is an experimental feature, it may change in any upcoming release in a breaking way.'\n                properties:\n                  clientType:\n                    description: Client used to export the traces. Supported values are `http` or `grpc`.\n                    enum:\n                    - http\n                    - grpc\n                    type: string\n                  compression:\n                    description: Compression key for supported compression types. The only supported value is `gzip`.\n                    enum:\n                    - gzip\n                    type: string\n                  endpoint:\n                    description: Endpoint to send the traces to. Should be provided in format <host>:<port>.\n                    minLength: 1\n                    type: string\n                  headers:\n                    additionalProperties:\n                      type: string\n                    description: Key-value pairs to be used as headers associated with gRPC or HTTP requests.\n                    type: object\n                  insecure:\n                    description: If disabled, the client will use a secure connection.\n                    type: boolean\n                  samplingFraction:\n                    anyOf:\n                    - type: integer\n                    - type: string\n                    description: Sets the probability a given trace will be sampled. Must be a float from 0 through 1.\n                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                    x-kubernetes-int-or-string: true\n                  timeout:\n                    description: Maximum time the exporter will wait for each batch export.\n                    pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                    type: string\n                  tlsConfig:\n                    description: TLS Config to use when sending traces.\n                    properties:\n                      ca:\n                        description: Certificate authority used when verifying server certificates.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      caFile:\n                        description: Path to the CA cert in the Prometheus container to use for the targets.\n                        type: string\n                      cert:\n                        description: Client certificate to present when doing client-authentication.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      certFile:\n                        description: Path to the client cert file in the Prometheus container for the targets.\n                        type: string\n                      insecureSkipVerify:\n                        description: Disable target certificate validation.\n                        type: boolean\n                      keyFile:\n                        description: Path to the client key file in the Prometheus container for the targets.\n                        type: string\n                      keySecret:\n                        description: Secret containing the client key file for the targets.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      serverName:\n                        description: Used to verify the hostname for the targets.\n                        type: string\n                    type: object\n                required:\n                - endpoint\n                type: object\n              version:\n                description: \"Version of Prometheus being deployed. The operator uses this information to generate the Prometheus StatefulSet + configuration files. \\n If not specified, the operator assumes the latest upstream version of Prometheus available at the time when the version of the operator was released.\"\n                type: string\n              volumeMounts:\n                description: \"VolumeMounts allows the configuration of additional VolumeMounts. \\n VolumeMounts will be appended to other VolumeMounts in the 'prometheus' container, that are generated as a result of StorageSpec objects.\"\n                items:\n                  description: VolumeMount describes a mounting of a Volume within a container.\n                  properties:\n                    mountPath:\n                      description: Path within the container at which the volume should be mounted.  Must not contain ':'.\n                      type: string\n                    mountPropagation:\n                      description: mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10.\n                      type: string\n                    name:\n                      description: This must match the Name of a Volume.\n                      type: string\n                    readOnly:\n                      description: Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.\n                      type: boolean\n                    subPath:\n                      description: Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root).\n                      type: string\n                    subPathExpr:\n                      description: Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to \"\" (volume's root). SubPathExpr and SubPath are mutually exclusive.\n                      type: string\n                  required:\n                  - mountPath\n                  - name\n                  type: object\n                type: array\n              volumes:\n                description: Volumes allows the configuration of additional volumes on the output StatefulSet definition. Volumes specified will be appended to other volumes that are generated as a result of StorageSpec objects.\n                items:\n                  description: Volume represents a named volume in a pod that may be accessed by any container in the pod.\n                  properties:\n                    awsElasticBlockStore:\n                      description: 'awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet''s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore TODO: how do we prevent errors in the filesystem from compromising the machine'\n                          type: string\n                        partition:\n                          description: 'partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as \"1\". Similarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty).'\n                          format: int32\n                          type: integer\n                        readOnly:\n                          description: 'readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'\n                          type: boolean\n                        volumeID:\n                          description: 'volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    azureDisk:\n                      description: azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\n                      properties:\n                        cachingMode:\n                          description: 'cachingMode is the Host Caching mode: None, Read Only, Read Write.'\n                          type: string\n                        diskName:\n                          description: diskName is the Name of the data disk in the blob storage\n                          type: string\n                        diskURI:\n                          description: diskURI is the URI of data disk in the blob storage\n                          type: string\n                        fsType:\n                          description: fsType is Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                          type: string\n                        kind:\n                          description: 'kind expected values are Shared: multiple blob disks per storage account  Dedicated: single blob disk per storage account  Managed: azure managed data disk (only in managed availability set). defaults to shared'\n                          type: string\n                        readOnly:\n                          description: readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                      required:\n                      - diskName\n                      - diskURI\n                      type: object\n                    azureFile:\n                      description: azureFile represents an Azure File Service mount on the host and bind mount to the pod.\n                      properties:\n                        readOnly:\n                          description: readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretName:\n                          description: secretName is the  name of secret that contains Azure Storage Account Name and Key\n                          type: string\n                        shareName:\n                          description: shareName is the azure share Name\n                          type: string\n                      required:\n                      - secretName\n                      - shareName\n                      type: object\n                    cephfs:\n                      description: cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\n                      properties:\n                        monitors:\n                          description: 'monitors is Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          items:\n                            type: string\n                          type: array\n                        path:\n                          description: 'path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /'\n                          type: string\n                        readOnly:\n                          description: 'readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          type: boolean\n                        secretFile:\n                          description: 'secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          type: string\n                        secretRef:\n                          description: 'secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        user:\n                          description: 'user is optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          type: string\n                      required:\n                      - monitors\n                      type: object\n                    cinder:\n                      description: 'cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                          type: string\n                        readOnly:\n                          description: 'readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                          type: boolean\n                        secretRef:\n                          description: 'secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        volumeID:\n                          description: 'volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    configMap:\n                      description: configMap represents a configMap that should populate this volume\n                      properties:\n                        defaultMode:\n                          description: 'defaultMode is optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'\n                          format: int32\n                          type: integer\n                        items:\n                          description: items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\n                          items:\n                            description: Maps a string key to a path within a volume.\n                            properties:\n                              key:\n                                description: key is the key to project.\n                                type: string\n                              mode:\n                                description: 'mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'\n                                format: int32\n                                type: integer\n                              path:\n                                description: path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.\n                                type: string\n                            required:\n                            - key\n                            - path\n                            type: object\n                          type: array\n                        name:\n                          description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                          type: string\n                        optional:\n                          description: optional specify whether the ConfigMap or its keys must be defined\n                          type: boolean\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    csi:\n                      description: csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\n                      properties:\n                        driver:\n                          description: driver is the name of the CSI driver that handles this volume. Consult with your admin for the correct name as registered in the cluster.\n                          type: string\n                        fsType:\n                          description: fsType to mount. Ex. \"ext4\", \"xfs\", \"ntfs\". If not provided, the empty value is passed to the associated CSI driver which will determine the default filesystem to apply.\n                          type: string\n                        nodePublishSecretRef:\n                          description: nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and  may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed.\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        readOnly:\n                          description: readOnly specifies a read-only configuration for the volume. Defaults to false (read/write).\n                          type: boolean\n                        volumeAttributes:\n                          additionalProperties:\n                            type: string\n                          description: volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values.\n                          type: object\n                      required:\n                      - driver\n                      type: object\n                    downwardAPI:\n                      description: downwardAPI represents downward API about the pod that should populate this volume\n                      properties:\n                        defaultMode:\n                          description: 'Optional: mode bits to use on created files by default. Must be a Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'\n                          format: int32\n                          type: integer\n                        items:\n                          description: Items is a list of downward API volume file\n                          items:\n                            description: DownwardAPIVolumeFile represents information to create the file containing the pod field\n                            properties:\n                              fieldRef:\n                                description: 'Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.'\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              mode:\n                                description: 'Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'\n                                format: int32\n                                type: integer\n                              path:\n                                description: 'Required: Path is  the relative path name of the file to be created. Must not be absolute or contain the ''..'' path. Must be utf-8 encoded. The first item of the relative path must not start with ''..'''\n                                type: string\n                              resourceFieldRef:\n                                description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.'\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes, optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            required:\n                            - path\n                            type: object\n                          type: array\n                      type: object\n                    emptyDir:\n                      description: 'emptyDir represents a temporary directory that shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                      properties:\n                        medium:\n                          description: 'medium represents what type of storage medium should back this directory. The default is \"\" which means to use the node''s default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                          type: string\n                        sizeLimit:\n                          anyOf:\n                          - type: integer\n                          - type: string\n                          description: 'sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                          pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                          x-kubernetes-int-or-string: true\n                      type: object\n                    ephemeral:\n                      description: \"ephemeral represents a volume that is handled by a cluster storage driver. The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed. \\n Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). \\n Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. \\n Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. \\n A pod can use both types of ephemeral volumes and persistent volumes at the same time.\"\n                      properties:\n                        volumeClaimTemplate:\n                          description: \"Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod.  The name of the PVC will be `<pod name>-<volume name>` where `<volume name>` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long). \\n An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. \\n This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. \\n Required, must not be nil.\"\n                          properties:\n                            metadata:\n                              description: May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.\n                              type: object\n                            spec:\n                              description: The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.\n                              properties:\n                                accessModes:\n                                  description: 'accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                                  items:\n                                    type: string\n                                  type: array\n                                dataSource:\n                                  description: 'dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.'\n                                  properties:\n                                    apiGroup:\n                                      description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.\n                                      type: string\n                                    kind:\n                                      description: Kind is the type of resource being referenced\n                                      type: string\n                                    name:\n                                      description: Name is the name of resource being referenced\n                                      type: string\n                                  required:\n                                  - kind\n                                  - name\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                dataSourceRef:\n                                  description: 'dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn''t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn''t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.'\n                                  properties:\n                                    apiGroup:\n                                      description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.\n                                      type: string\n                                    kind:\n                                      description: Kind is the type of resource being referenced\n                                      type: string\n                                    name:\n                                      description: Name is the name of resource being referenced\n                                      type: string\n                                    namespace:\n                                      description: Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\n                                      type: string\n                                  required:\n                                  - kind\n                                  - name\n                                  type: object\n                                resources:\n                                  description: 'resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'\n                                  properties:\n                                    claims:\n                                      description: \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\"\n                                      items:\n                                        description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                                        properties:\n                                          name:\n                                            description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\n                                            type: string\n                                        required:\n                                        - name\n                                        type: object\n                                      type: array\n                                      x-kubernetes-list-map-keys:\n                                      - name\n                                      x-kubernetes-list-type: map\n                                    limits:\n                                      additionalProperties:\n                                        anyOf:\n                                        - type: integer\n                                        - type: string\n                                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                        x-kubernetes-int-or-string: true\n                                      description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                      type: object\n                                    requests:\n                                      additionalProperties:\n                                        anyOf:\n                                        - type: integer\n                                        - type: string\n                                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                        x-kubernetes-int-or-string: true\n                                      description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                      type: object\n                                  type: object\n                                selector:\n                                  description: selector is a label query over volumes to consider for binding.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                      items:\n                                        description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                storageClassName:\n                                  description: 'storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'\n                                  type: string\n                                volumeMode:\n                                  description: volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.\n                                  type: string\n                                volumeName:\n                                  description: volumeName is the binding reference to the PersistentVolume backing this claim.\n                                  type: string\n                              type: object\n                          required:\n                          - spec\n                          type: object\n                      type: object\n                    fc:\n                      description: fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. TODO: how do we prevent errors in the filesystem from compromising the machine'\n                          type: string\n                        lun:\n                          description: 'lun is Optional: FC target lun number'\n                          format: int32\n                          type: integer\n                        readOnly:\n                          description: 'readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.'\n                          type: boolean\n                        targetWWNs:\n                          description: 'targetWWNs is Optional: FC target worldwide names (WWNs)'\n                          items:\n                            type: string\n                          type: array\n                        wwids:\n                          description: 'wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.'\n                          items:\n                            type: string\n                          type: array\n                      type: object\n                    flexVolume:\n                      description: flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.\n                      properties:\n                        driver:\n                          description: driver is the name of the driver to use for this volume.\n                          type: string\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". The default filesystem depends on FlexVolume script.\n                          type: string\n                        options:\n                          additionalProperties:\n                            type: string\n                          description: 'options is Optional: this field holds extra command options if any.'\n                          type: object\n                        readOnly:\n                          description: 'readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.'\n                          type: boolean\n                        secretRef:\n                          description: 'secretRef is Optional: secretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts.'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      required:\n                      - driver\n                      type: object\n                    flocker:\n                      description: flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\n                      properties:\n                        datasetName:\n                          description: datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated\n                          type: string\n                        datasetUUID:\n                          description: datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\n                          type: string\n                      type: object\n                    gcePersistentDisk:\n                      description: 'gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet''s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                      properties:\n                        fsType:\n                          description: 'fsType is filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk TODO: how do we prevent errors in the filesystem from compromising the machine'\n                          type: string\n                        partition:\n                          description: 'partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as \"1\". Similarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                          format: int32\n                          type: integer\n                        pdName:\n                          description: 'pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                          type: boolean\n                      required:\n                      - pdName\n                      type: object\n                    gitRepo:\n                      description: 'gitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod''s container.'\n                      properties:\n                        directory:\n                          description: directory is the target directory name. Must not contain or start with '..'.  If '.' is supplied, the volume directory will be the git repository.  Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name.\n                          type: string\n                        repository:\n                          description: repository is the URL\n                          type: string\n                        revision:\n                          description: revision is the commit hash for the specified revision.\n                          type: string\n                      required:\n                      - repository\n                      type: object\n                    glusterfs:\n                      description: 'glusterfs represents a Glusterfs mount on the host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md'\n                      properties:\n                        endpoints:\n                          description: 'endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'\n                          type: string\n                        path:\n                          description: 'path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'\n                          type: boolean\n                      required:\n                      - endpoints\n                      - path\n                      type: object\n                    hostPath:\n                      description: 'hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath --- TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write.'\n                      properties:\n                        path:\n                          description: 'path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'\n                          type: string\n                        type:\n                          description: 'type for HostPath Volume Defaults to \"\" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'\n                          type: string\n                      required:\n                      - path\n                      type: object\n                    iscsi:\n                      description: 'iscsi represents an ISCSI Disk resource that is attached to a kubelet''s host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md'\n                      properties:\n                        chapAuthDiscovery:\n                          description: chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\n                          type: boolean\n                        chapAuthSession:\n                          description: chapAuthSession defines whether support iSCSI Session CHAP authentication\n                          type: boolean\n                        fsType:\n                          description: 'fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi TODO: how do we prevent errors in the filesystem from compromising the machine'\n                          type: string\n                        initiatorName:\n                          description: initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface <target portal>:<volume name> will be created for the connection.\n                          type: string\n                        iqn:\n                          description: iqn is the target iSCSI Qualified Name.\n                          type: string\n                        iscsiInterface:\n                          description: iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).\n                          type: string\n                        lun:\n                          description: lun represents iSCSI Target Lun number.\n                          format: int32\n                          type: integer\n                        portals:\n                          description: portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).\n                          items:\n                            type: string\n                          type: array\n                        readOnly:\n                          description: readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.\n                          type: boolean\n                        secretRef:\n                          description: secretRef is the CHAP Secret for iSCSI target and initiator authentication\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        targetPortal:\n                          description: targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).\n                          type: string\n                      required:\n                      - iqn\n                      - lun\n                      - targetPortal\n                      type: object\n                    name:\n                      description: 'name of the volume. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                      type: string\n                    nfs:\n                      description: 'nfs represents an NFS mount on the host that shares a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                      properties:\n                        path:\n                          description: 'path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                          type: boolean\n                        server:\n                          description: 'server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                          type: string\n                      required:\n                      - path\n                      - server\n                      type: object\n                    persistentVolumeClaim:\n                      description: 'persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'\n                      properties:\n                        claimName:\n                          description: 'claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'\n                          type: string\n                        readOnly:\n                          description: readOnly Will force the ReadOnly setting in VolumeMounts. Default false.\n                          type: boolean\n                      required:\n                      - claimName\n                      type: object\n                    photonPersistentDisk:\n                      description: photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\n                      properties:\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                          type: string\n                        pdID:\n                          description: pdID is the ID that identifies Photon Controller persistent disk\n                          type: string\n                      required:\n                      - pdID\n                      type: object\n                    portworxVolume:\n                      description: portworxVolume represents a portworx volume attached and mounted on kubelets host machine\n                      properties:\n                        fsType:\n                          description: fSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                          type: string\n                        readOnly:\n                          description: readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        volumeID:\n                          description: volumeID uniquely identifies a Portworx volume\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    projected:\n                      description: projected items for all in one resources secrets, configmaps, and downward API\n                      properties:\n                        defaultMode:\n                          description: defaultMode are the mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.\n                          format: int32\n                          type: integer\n                        sources:\n                          description: sources is the list of volume projections\n                          items:\n                            description: Projection that may be projected along with other supported volume types\n                            properties:\n                              configMap:\n                                description: configMap information about the configMap data to project\n                                properties:\n                                  items:\n                                    description: items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\n                                    items:\n                                      description: Maps a string key to a path within a volume.\n                                      properties:\n                                        key:\n                                          description: key is the key to project.\n                                          type: string\n                                        mode:\n                                          description: 'mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.\n                                          type: string\n                                      required:\n                                      - key\n                                      - path\n                                      type: object\n                                    type: array\n                                  name:\n                                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                    type: string\n                                  optional:\n                                    description: optional specify whether the ConfigMap or its keys must be defined\n                                    type: boolean\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              downwardAPI:\n                                description: downwardAPI information about the downwardAPI data to project\n                                properties:\n                                  items:\n                                    description: Items is a list of DownwardAPIVolume file\n                                    items:\n                                      description: DownwardAPIVolumeFile represents information to create the file containing the pod field\n                                      properties:\n                                        fieldRef:\n                                          description: 'Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.'\n                                          properties:\n                                            apiVersion:\n                                              description: Version of the schema the FieldPath is written in terms of, defaults to \"v1\".\n                                              type: string\n                                            fieldPath:\n                                              description: Path of the field to select in the specified API version.\n                                              type: string\n                                          required:\n                                          - fieldPath\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                        mode:\n                                          description: 'Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: 'Required: Path is  the relative path name of the file to be created. Must not be absolute or contain the ''..'' path. Must be utf-8 encoded. The first item of the relative path must not start with ''..'''\n                                          type: string\n                                        resourceFieldRef:\n                                          description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.'\n                                          properties:\n                                            containerName:\n                                              description: 'Container name: required for volumes, optional for env vars'\n                                              type: string\n                                            divisor:\n                                              anyOf:\n                                              - type: integer\n                                              - type: string\n                                              description: Specifies the output format of the exposed resources, defaults to \"1\"\n                                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                              x-kubernetes-int-or-string: true\n                                            resource:\n                                              description: 'Required: resource to select'\n                                              type: string\n                                          required:\n                                          - resource\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                      required:\n                                      - path\n                                      type: object\n                                    type: array\n                                type: object\n                              secret:\n                                description: secret information about the secret data to project\n                                properties:\n                                  items:\n                                    description: items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\n                                    items:\n                                      description: Maps a string key to a path within a volume.\n                                      properties:\n                                        key:\n                                          description: key is the key to project.\n                                          type: string\n                                        mode:\n                                          description: 'mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.\n                                          type: string\n                                      required:\n                                      - key\n                                      - path\n                                      type: object\n                                    type: array\n                                  name:\n                                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                    type: string\n                                  optional:\n                                    description: optional field specify whether the Secret or its key must be defined\n                                    type: boolean\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              serviceAccountToken:\n                                description: serviceAccountToken is information about the serviceAccountToken data to project\n                                properties:\n                                  audience:\n                                    description: audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver.\n                                    type: string\n                                  expirationSeconds:\n                                    description: expirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes.\n                                    format: int64\n                                    type: integer\n                                  path:\n                                    description: path is the path relative to the mount point of the file to project the token into.\n                                    type: string\n                                required:\n                                - path\n                                type: object\n                            type: object\n                          type: array\n                      type: object\n                    quobyte:\n                      description: quobyte represents a Quobyte mount on the host that shares a pod's lifetime\n                      properties:\n                        group:\n                          description: group to map volume access to Default is no group\n                          type: string\n                        readOnly:\n                          description: readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.\n                          type: boolean\n                        registry:\n                          description: registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes\n                          type: string\n                        tenant:\n                          description: tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin\n                          type: string\n                        user:\n                          description: user to map volume access to Defaults to serivceaccount user\n                          type: string\n                        volume:\n                          description: volume is a string that references an already created Quobyte volume by name.\n                          type: string\n                      required:\n                      - registry\n                      - volume\n                      type: object\n                    rbd:\n                      description: 'rbd represents a Rados Block Device mount on the host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md'\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd TODO: how do we prevent errors in the filesystem from compromising the machine'\n                          type: string\n                        image:\n                          description: 'image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                        keyring:\n                          description: 'keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                        monitors:\n                          description: 'monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          items:\n                            type: string\n                          type: array\n                        pool:\n                          description: 'pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: boolean\n                        secretRef:\n                          description: 'secretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        user:\n                          description: 'user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                      required:\n                      - image\n                      - monitors\n                      type: object\n                    scaleIO:\n                      description: scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\n                      properties:\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Default is \"xfs\".\n                          type: string\n                        gateway:\n                          description: gateway is the host address of the ScaleIO API Gateway.\n                          type: string\n                        protectionDomain:\n                          description: protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\n                          type: string\n                        readOnly:\n                          description: readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretRef:\n                          description: secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        sslEnabled:\n                          description: sslEnabled Flag enable/disable SSL communication with Gateway, default false\n                          type: boolean\n                        storageMode:\n                          description: storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.\n                          type: string\n                        storagePool:\n                          description: storagePool is the ScaleIO Storage Pool associated with the protection domain.\n                          type: string\n                        system:\n                          description: system is the name of the storage system as configured in ScaleIO.\n                          type: string\n                        volumeName:\n                          description: volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source.\n                          type: string\n                      required:\n                      - gateway\n                      - secretRef\n                      - system\n                      type: object\n                    secret:\n                      description: 'secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'\n                      properties:\n                        defaultMode:\n                          description: 'defaultMode is Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'\n                          format: int32\n                          type: integer\n                        items:\n                          description: items If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\n                          items:\n                            description: Maps a string key to a path within a volume.\n                            properties:\n                              key:\n                                description: key is the key to project.\n                                type: string\n                              mode:\n                                description: 'mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'\n                                format: int32\n                                type: integer\n                              path:\n                                description: path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.\n                                type: string\n                            required:\n                            - key\n                            - path\n                            type: object\n                          type: array\n                        optional:\n                          description: optional field specify whether the Secret or its keys must be defined\n                          type: boolean\n                        secretName:\n                          description: 'secretName is the name of the secret in the pod''s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'\n                          type: string\n                      type: object\n                    storageos:\n                      description: storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\n                      properties:\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                          type: string\n                        readOnly:\n                          description: readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretRef:\n                          description: secretRef specifies the secret to use for obtaining the StorageOS API credentials.  If not specified, default values will be attempted.\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        volumeName:\n                          description: volumeName is the human-readable name of the StorageOS volume.  Volume names are only unique within a namespace.\n                          type: string\n                        volumeNamespace:\n                          description: volumeNamespace specifies the scope of the volume within StorageOS.  If no namespace is specified then the Pod's namespace will be used.  This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to \"default\" if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created.\n                          type: string\n                      type: object\n                    vsphereVolume:\n                      description: vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\n                      properties:\n                        fsType:\n                          description: fsType is filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                          type: string\n                        storagePolicyID:\n                          description: storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\n                          type: string\n                        storagePolicyName:\n                          description: storagePolicyName is the storage Policy Based Management (SPBM) profile name.\n                          type: string\n                        volumePath:\n                          description: volumePath is the path that identifies vSphere volume vmdk\n                          type: string\n                      required:\n                      - volumePath\n                      type: object\n                  required:\n                  - name\n                  type: object\n                type: array\n              walCompression:\n                description: \"Configures compression of the write-ahead log (WAL) using Snappy. \\n WAL compression is enabled by default for Prometheus >= 2.20.0 \\n Requires Prometheus v2.11.0 and above.\"\n                type: boolean\n              web:\n                description: Defines the configuration of the Prometheus web server.\n                properties:\n                  httpConfig:\n                    description: Defines HTTP parameters for web server.\n                    properties:\n                      headers:\n                        description: List of headers that can be added to HTTP responses.\n                        properties:\n                          contentSecurityPolicy:\n                            description: Set the Content-Security-Policy header to HTTP responses. Unset if blank.\n                            type: string\n                          strictTransportSecurity:\n                            description: Set the Strict-Transport-Security header to HTTP responses. Unset if blank. Please make sure that you use this with care as this header might force browsers to load Prometheus and the other applications hosted on the same domain and subdomains over HTTPS. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security\n                            type: string\n                          xContentTypeOptions:\n                            description: Set the X-Content-Type-Options header to HTTP responses. Unset if blank. Accepted value is nosniff. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options\n                            enum:\n                            - \"\"\n                            - NoSniff\n                            type: string\n                          xFrameOptions:\n                            description: Set the X-Frame-Options header to HTTP responses. Unset if blank. Accepted values are deny and sameorigin. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options\n                            enum:\n                            - \"\"\n                            - Deny\n                            - SameOrigin\n                            type: string\n                          xXSSProtection:\n                            description: Set the X-XSS-Protection header to all responses. Unset if blank. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection\n                            type: string\n                        type: object\n                      http2:\n                        description: Enable HTTP/2 support. Note that HTTP/2 is only supported with TLS. When TLSConfig is not configured, HTTP/2 will be disabled. Whenever the value of the field changes, a rolling update will be triggered.\n                        type: boolean\n                    type: object\n                  maxConnections:\n                    description: Defines the maximum number of simultaneous connections A zero value means that Prometheus doesn't accept any incoming connection.\n                    format: int32\n                    minimum: 0\n                    type: integer\n                  pageTitle:\n                    description: The prometheus web page title.\n                    type: string\n                  tlsConfig:\n                    description: Defines the TLS parameters for HTTPS.\n                    properties:\n                      cert:\n                        description: Contains the TLS certificate for the server.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      cipherSuites:\n                        description: 'List of supported cipher suites for TLS versions up to TLS 1.2. If empty, Go default cipher suites are used. Available cipher suites are documented in the go documentation: https://golang.org/pkg/crypto/tls/#pkg-constants'\n                        items:\n                          type: string\n                        type: array\n                      client_ca:\n                        description: Contains the CA certificate for client certificate authentication to the server.\n                        properties:\n                          configMap:\n                            description: ConfigMap containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key to select.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          secret:\n                            description: Secret containing data to use for the targets.\n                            properties:\n                              key:\n                                description: The key of the secret to select from.  Must be a valid secret key.\n                                type: string\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret or its key must be defined\n                                type: boolean\n                            required:\n                            - key\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      clientAuthType:\n                        description: 'Server policy for client authentication. Maps to ClientAuth Policies. For more detail on clientAuth options: https://golang.org/pkg/crypto/tls/#ClientAuthType'\n                        type: string\n                      curvePreferences:\n                        description: 'Elliptic curves that will be used in an ECDHE handshake, in preference order. Available curves are documented in the go documentation: https://golang.org/pkg/crypto/tls/#CurveID'\n                        items:\n                          type: string\n                        type: array\n                      keySecret:\n                        description: Secret containing the TLS key for the server.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      maxVersion:\n                        description: Maximum TLS version that is acceptable. Defaults to TLS13.\n                        type: string\n                      minVersion:\n                        description: Minimum TLS version that is acceptable. Defaults to TLS12.\n                        type: string\n                      preferServerCipherSuites:\n                        description: Controls whether the server selects the client's most preferred cipher suite, or the server's most preferred cipher suite. If true then the server's preference, as expressed in the order of elements in cipherSuites, is used.\n                        type: boolean\n                    required:\n                    - cert\n                    - keySecret\n                    type: object\n                type: object\n            type: object\n          status:\n            description: 'Most recent observed status of the Prometheus cluster. Read-only. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status'\n            properties:\n              availableReplicas:\n                description: Total number of available pods (ready for at least minReadySeconds) targeted by this Prometheus deployment.\n                format: int32\n                type: integer\n              conditions:\n                description: The current state of the Prometheus deployment.\n                items:\n                  description: Condition represents the state of the resources associated with the Prometheus, Alertmanager or ThanosRuler resource.\n                  properties:\n                    lastTransitionTime:\n                      description: lastTransitionTime is the time of the last update to the current status property.\n                      format: date-time\n                      type: string\n                    message:\n                      description: Human-readable message indicating details for the condition's last transition.\n                      type: string\n                    observedGeneration:\n                      description: ObservedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if `.metadata.generation` is currently 12, but the `.status.conditions[].observedGeneration` is 9, the condition is out of date with respect to the current state of the instance.\n                      format: int64\n                      type: integer\n                    reason:\n                      description: Reason for the condition's last transition.\n                      type: string\n                    status:\n                      description: Status of the condition.\n                      type: string\n                    type:\n                      description: Type of the condition being reported.\n                      type: string\n                  required:\n                  - lastTransitionTime\n                  - status\n                  - type\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - type\n                x-kubernetes-list-type: map\n              paused:\n                description: Represents whether any actions on the underlying managed objects are being performed. Only delete actions will be performed.\n                type: boolean\n              replicas:\n                description: Total number of non-terminated pods targeted by this Prometheus deployment (their labels match the selector).\n                format: int32\n                type: integer\n              shardStatuses:\n                description: The list has one entry per shard. Each entry provides a summary of the shard status.\n                items:\n                  properties:\n                    availableReplicas:\n                      description: Total number of available pods (ready for at least minReadySeconds) targeted by this shard.\n                      format: int32\n                      type: integer\n                    replicas:\n                      description: Total number of pods targeted by this shard.\n                      format: int32\n                      type: integer\n                    shardID:\n                      description: Identifier of the shard.\n                      type: string\n                    unavailableReplicas:\n                      description: Total number of unavailable pods targeted by this shard.\n                      format: int32\n                      type: integer\n                    updatedReplicas:\n                      description: Total number of non-terminated pods targeted by this shard that have the desired spec.\n                      format: int32\n                      type: integer\n                  required:\n                  - availableReplicas\n                  - replicas\n                  - shardID\n                  - unavailableReplicas\n                  - updatedReplicas\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - shardID\n                x-kubernetes-list-type: map\n              unavailableReplicas:\n                description: Total number of unavailable pods targeted by this Prometheus deployment.\n                format: int32\n                type: integer\n              updatedReplicas:\n                description: Total number of non-terminated pods targeted by this Prometheus deployment that have the desired version spec.\n                format: int32\n                type: integer\n            required:\n            - availableReplicas\n            - paused\n            - replicas\n            - unavailableReplicas\n            - updatedReplicas\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n    subresources:\n      status: {}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/setup/0prometheusruleCustomResourceDefinition.yaml",
    "content": "apiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.11.1\n  creationTimestamp: null\n  name: prometheusrules.monitoring.coreos.com\nspec:\n  group: monitoring.coreos.com\n  names:\n    categories:\n    - prometheus-operator\n    kind: PrometheusRule\n    listKind: PrometheusRuleList\n    plural: prometheusrules\n    shortNames:\n    - promrule\n    singular: prometheusrule\n  scope: Namespaced\n  versions:\n  - name: v1\n    schema:\n      openAPIV3Schema:\n        description: PrometheusRule defines recording and alerting rules for a Prometheus instance\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: Specification of desired alerting rule definitions for Prometheus.\n            properties:\n              groups:\n                description: Content of Prometheus rule file\n                items:\n                  description: RuleGroup is a list of sequentially evaluated recording and alerting rules.\n                  properties:\n                    interval:\n                      description: Interval determines how often rules in the group are evaluated.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    limit:\n                      description: Limit the number of alerts an alerting rule and series a recording rule can produce. Limit is supported starting with Prometheus >= 2.31 and Thanos Ruler >= 0.24.\n                      type: integer\n                    name:\n                      description: Name of the rule group.\n                      minLength: 1\n                      type: string\n                    partial_response_strategy:\n                      description: 'PartialResponseStrategy is only used by ThanosRuler and will be ignored by Prometheus instances. More info: https://github.com/thanos-io/thanos/blob/main/docs/components/rule.md#partial-response'\n                      pattern: ^(?i)(abort|warn)?$\n                      type: string\n                    rules:\n                      description: List of alerting and recording rules.\n                      items:\n                        description: 'Rule describes an alerting or recording rule See Prometheus documentation: [alerting](https://www.prometheus.io/docs/prometheus/latest/configuration/alerting_rules/) or [recording](https://www.prometheus.io/docs/prometheus/latest/configuration/recording_rules/#recording-rules) rule'\n                        properties:\n                          alert:\n                            description: Name of the alert. Must be a valid label value. Only one of `record` and `alert` must be set.\n                            type: string\n                          annotations:\n                            additionalProperties:\n                              type: string\n                            description: Annotations to add to each alert. Only valid for alerting rules.\n                            type: object\n                          expr:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            description: PromQL expression to evaluate.\n                            x-kubernetes-int-or-string: true\n                          for:\n                            description: Alerts are considered firing once they have been returned for this long.\n                            pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                            type: string\n                          keep_firing_for:\n                            description: KeepFiringFor defines how long an alert will continue firing after the condition that triggered it has cleared.\n                            minLength: 1\n                            pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                            type: string\n                          labels:\n                            additionalProperties:\n                              type: string\n                            description: Labels to add or overwrite.\n                            type: object\n                          record:\n                            description: Name of the time series to output to. Must be a valid metric name. Only one of `record` and `alert` must be set.\n                            type: string\n                        required:\n                        - expr\n                        type: object\n                      type: array\n                  required:\n                  - name\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - name\n                x-kubernetes-list-type: map\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/setup/0scrapeconfigCustomResourceDefinition.yaml",
    "content": "apiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.11.1\n  creationTimestamp: null\n  name: scrapeconfigs.monitoring.coreos.com\nspec:\n  group: monitoring.coreos.com\n  names:\n    categories:\n    - prometheus-operator\n    kind: ScrapeConfig\n    listKind: ScrapeConfigList\n    plural: scrapeconfigs\n    shortNames:\n    - scfg\n    singular: scrapeconfig\n  scope: Namespaced\n  versions:\n  - name: v1alpha1\n    schema:\n      openAPIV3Schema:\n        description: ScrapeConfig defines a namespaced Prometheus scrape_config to be aggregated across multiple namespaces into the Prometheus configuration.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: ScrapeConfigSpec is a specification of the desired configuration for a scrape configuration.\n            properties:\n              authorization:\n                description: Authorization header to use on every scrape request.\n                properties:\n                  credentials:\n                    description: Selects a key of a Secret in the namespace that contains the credentials for authentication.\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be a valid secret key.\n                        type: string\n                      name:\n                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                  type:\n                    description: \"Defines the authentication type. The value is case-insensitive. \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\"\n                    type: string\n                type: object\n              basicAuth:\n                description: BasicAuth information to use on every scrape request.\n                properties:\n                  password:\n                    description: The secret in the service monitor namespace that contains the password for authentication.\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be a valid secret key.\n                        type: string\n                      name:\n                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                  username:\n                    description: The secret in the service monitor namespace that contains the username for authentication.\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be a valid secret key.\n                        type: string\n                      name:\n                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                type: object\n              fileSDConfigs:\n                description: FileSDConfigs defines a list of file service discovery configurations.\n                items:\n                  description: FileSDConfig defines a Prometheus file service discovery configuration See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#file_sd_config\n                  properties:\n                    files:\n                      description: 'List of files to be used for file discovery. Recommendation: use absolute paths. While relative paths work, the prometheus-operator project makes no guarantees about the working directory where the configuration file is stored. Files must be mounted using Prometheus.ConfigMaps or Prometheus.Secrets.'\n                      items:\n                        description: SDFile represents a file used for service discovery\n                        pattern: ^[^*]*(\\*[^/]*)?\\.(json|yml|yaml|JSON|YML|YAML)$\n                        type: string\n                      minItems: 1\n                      type: array\n                    refreshInterval:\n                      description: RefreshInterval configures the refresh interval at which Prometheus will reload the content of the files.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                  required:\n                  - files\n                  type: object\n                type: array\n              honorLabels:\n                description: HonorLabels chooses the metric's labels on collisions with target labels.\n                type: boolean\n              honorTimestamps:\n                description: HonorTimestamps controls whether Prometheus respects the timestamps present in scraped data.\n                type: boolean\n              httpSDConfigs:\n                description: HTTPSDConfigs defines a list of HTTP service discovery configurations.\n                items:\n                  description: HTTPSDConfig defines a prometheus HTTP service discovery configuration See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#http_sd_config\n                  properties:\n                    authorization:\n                      description: Authorization header configuration to authenticate against the target HTTP endpoint.\n                      properties:\n                        credentials:\n                          description: Selects a key of a Secret in the namespace that contains the credentials for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type:\n                          description: \"Defines the authentication type. The value is case-insensitive. \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\"\n                          type: string\n                      type: object\n                    basicAuth:\n                      description: 'BasicAuth information to authenticate against the target HTTP endpoint. More info: https://prometheus.io/docs/operating/configuration/#endpoints'\n                      properties:\n                        password:\n                          description: The secret in the service monitor namespace that contains the password for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        username:\n                          description: The secret in the service monitor namespace that contains the username for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      type: object\n                    refreshInterval:\n                      description: RefreshInterval configures the refresh interval at which Prometheus will re-query the endpoint to update the target list.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    url:\n                      description: URL from which the targets are fetched.\n                      minLength: 1\n                      pattern: ^http(s)?://.+$\n                      type: string\n                  required:\n                  - url\n                  type: object\n                type: array\n              metricsPath:\n                description: MetricsPath HTTP path to scrape for metrics. If empty, Prometheus uses the default value (e.g. /metrics).\n                type: string\n              relabelings:\n                description: 'RelabelConfigs defines how to rewrite the target''s labels before scraping. Prometheus Operator automatically adds relabelings for a few standard Kubernetes fields. The original scrape job''s name is available via the `__tmp_prometheus_job_name` label. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config'\n                items:\n                  description: \"RelabelConfig allows dynamic rewriting of the label set for targets, alerts, scraped samples and remote write samples. \\n More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\"\n                  properties:\n                    action:\n                      default: replace\n                      description: \"Action to perform based on the regex matching. \\n `Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0. `DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0. \\n Default: \\\"Replace\\\"\"\n                      enum:\n                      - replace\n                      - Replace\n                      - keep\n                      - Keep\n                      - drop\n                      - Drop\n                      - hashmod\n                      - HashMod\n                      - labelmap\n                      - LabelMap\n                      - labeldrop\n                      - LabelDrop\n                      - labelkeep\n                      - LabelKeep\n                      - lowercase\n                      - Lowercase\n                      - uppercase\n                      - Uppercase\n                      - keepequal\n                      - KeepEqual\n                      - dropequal\n                      - DropEqual\n                      type: string\n                    modulus:\n                      description: \"Modulus to take of the hash of the source label values. \\n Only applicable when the action is `HashMod`.\"\n                      format: int64\n                      type: integer\n                    regex:\n                      description: Regular expression against which the extracted value is matched.\n                      type: string\n                    replacement:\n                      description: \"Replacement value against which a Replace action is performed if the regular expression matches. \\n Regex capture groups are available.\"\n                      type: string\n                    separator:\n                      description: Separator is the string between concatenated SourceLabels.\n                      type: string\n                    sourceLabels:\n                      description: The source labels select values from existing labels. Their content is concatenated using the configured Separator and matched against the configured regular expression.\n                      items:\n                        description: LabelName is a valid Prometheus label name which may only contain ASCII letters, numbers, as well as underscores.\n                        pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$\n                        type: string\n                      type: array\n                    targetLabel:\n                      description: \"Label to which the resulting string is written in a replacement. \\n It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`, `KeepEqual` and `DropEqual` actions. \\n Regex capture groups are available.\"\n                      type: string\n                  type: object\n                type: array\n              scheme:\n                description: Configures the protocol scheme used for requests. If empty, Prometheus uses HTTP by default.\n                enum:\n                - HTTP\n                - HTTPS\n                type: string\n              staticConfigs:\n                description: StaticConfigs defines a list of static targets with a common label set.\n                items:\n                  description: StaticConfig defines a Prometheus static configuration. See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config\n                  properties:\n                    labels:\n                      additionalProperties:\n                        type: string\n                      description: Labels assigned to all metrics scraped from the targets.\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    targets:\n                      description: List of targets for this static configuration.\n                      items:\n                        description: Target represents a target for Prometheus to scrape\n                        type: string\n                      type: array\n                  type: object\n                type: array\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/setup/0servicemonitorCustomResourceDefinition.yaml",
    "content": "apiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.11.1\n  creationTimestamp: null\n  name: servicemonitors.monitoring.coreos.com\nspec:\n  group: monitoring.coreos.com\n  names:\n    categories:\n    - prometheus-operator\n    kind: ServiceMonitor\n    listKind: ServiceMonitorList\n    plural: servicemonitors\n    shortNames:\n    - smon\n    singular: servicemonitor\n  scope: Namespaced\n  versions:\n  - name: v1\n    schema:\n      openAPIV3Schema:\n        description: ServiceMonitor defines monitoring for a set of services.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: Specification of desired Service selection for target discovery by Prometheus.\n            properties:\n              attachMetadata:\n                description: Attaches node metadata to discovered targets. Requires Prometheus v2.37.0 and above.\n                properties:\n                  node:\n                    description: When set to true, Prometheus must have permissions to get Nodes.\n                    type: boolean\n                type: object\n              endpoints:\n                description: A list of endpoints allowed as part of this ServiceMonitor.\n                items:\n                  description: Endpoint defines a scrapeable endpoint serving Prometheus metrics.\n                  properties:\n                    authorization:\n                      description: Authorization section for this endpoint\n                      properties:\n                        credentials:\n                          description: Selects a key of a Secret in the namespace that contains the credentials for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        type:\n                          description: \"Defines the authentication type. The value is case-insensitive. \\n \\\"Basic\\\" is not a supported value. \\n Default: \\\"Bearer\\\"\"\n                          type: string\n                      type: object\n                    basicAuth:\n                      description: 'BasicAuth allow an endpoint to authenticate over basic authentication More info: https://prometheus.io/docs/operating/configuration/#endpoints'\n                      properties:\n                        password:\n                          description: The secret in the service monitor namespace that contains the password for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        username:\n                          description: The secret in the service monitor namespace that contains the username for authentication.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      type: object\n                    bearerTokenFile:\n                      description: File to read bearer token for scraping targets.\n                      type: string\n                    bearerTokenSecret:\n                      description: Secret to mount to read bearer token for scraping targets. The secret needs to be in the same namespace as the service monitor and accessible by the Prometheus Operator.\n                      properties:\n                        key:\n                          description: The key of the secret to select from.  Must be a valid secret key.\n                          type: string\n                        name:\n                          description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                          type: string\n                        optional:\n                          description: Specify whether the Secret or its key must be defined\n                          type: boolean\n                      required:\n                      - key\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    enableHttp2:\n                      description: Whether to enable HTTP2.\n                      type: boolean\n                    filterRunning:\n                      description: 'Drop pods that are not running. (Failed, Succeeded). Enabled by default. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase'\n                      type: boolean\n                    followRedirects:\n                      description: FollowRedirects configures whether scrape requests follow HTTP 3xx redirects.\n                      type: boolean\n                    honorLabels:\n                      description: HonorLabels chooses the metric's labels on collisions with target labels.\n                      type: boolean\n                    honorTimestamps:\n                      description: HonorTimestamps controls whether Prometheus respects the timestamps present in scraped data.\n                      type: boolean\n                    interval:\n                      description: Interval at which metrics should be scraped If not specified Prometheus' global scrape interval is used.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    metricRelabelings:\n                      description: MetricRelabelConfigs to apply to samples before ingestion.\n                      items:\n                        description: \"RelabelConfig allows dynamic rewriting of the label set for targets, alerts, scraped samples and remote write samples. \\n More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\"\n                        properties:\n                          action:\n                            default: replace\n                            description: \"Action to perform based on the regex matching. \\n `Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0. `DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0. \\n Default: \\\"Replace\\\"\"\n                            enum:\n                            - replace\n                            - Replace\n                            - keep\n                            - Keep\n                            - drop\n                            - Drop\n                            - hashmod\n                            - HashMod\n                            - labelmap\n                            - LabelMap\n                            - labeldrop\n                            - LabelDrop\n                            - labelkeep\n                            - LabelKeep\n                            - lowercase\n                            - Lowercase\n                            - uppercase\n                            - Uppercase\n                            - keepequal\n                            - KeepEqual\n                            - dropequal\n                            - DropEqual\n                            type: string\n                          modulus:\n                            description: \"Modulus to take of the hash of the source label values. \\n Only applicable when the action is `HashMod`.\"\n                            format: int64\n                            type: integer\n                          regex:\n                            description: Regular expression against which the extracted value is matched.\n                            type: string\n                          replacement:\n                            description: \"Replacement value against which a Replace action is performed if the regular expression matches. \\n Regex capture groups are available.\"\n                            type: string\n                          separator:\n                            description: Separator is the string between concatenated SourceLabels.\n                            type: string\n                          sourceLabels:\n                            description: The source labels select values from existing labels. Their content is concatenated using the configured Separator and matched against the configured regular expression.\n                            items:\n                              description: LabelName is a valid Prometheus label name which may only contain ASCII letters, numbers, as well as underscores.\n                              pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$\n                              type: string\n                            type: array\n                          targetLabel:\n                            description: \"Label to which the resulting string is written in a replacement. \\n It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`, `KeepEqual` and `DropEqual` actions. \\n Regex capture groups are available.\"\n                            type: string\n                        type: object\n                      type: array\n                    oauth2:\n                      description: OAuth2 for the URL. Only valid in Prometheus versions 2.27.0 and newer.\n                      properties:\n                        clientId:\n                          description: The secret or configmap containing the OAuth2 client id\n                          properties:\n                            configMap:\n                              description: ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        clientSecret:\n                          description: The secret containing the OAuth2 client secret\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        endpointParams:\n                          additionalProperties:\n                            type: string\n                          description: Parameters to append to the token URL\n                          type: object\n                        scopes:\n                          description: OAuth2 scopes used for the token request\n                          items:\n                            type: string\n                          type: array\n                        tokenUrl:\n                          description: The URL to fetch the token from\n                          minLength: 1\n                          type: string\n                      required:\n                      - clientId\n                      - clientSecret\n                      - tokenUrl\n                      type: object\n                    params:\n                      additionalProperties:\n                        items:\n                          type: string\n                        type: array\n                      description: Optional HTTP URL parameters\n                      type: object\n                    path:\n                      description: HTTP path to scrape for metrics. If empty, Prometheus uses the default value (e.g. `/metrics`).\n                      type: string\n                    port:\n                      description: Name of the service port this endpoint refers to. Mutually exclusive with targetPort.\n                      type: string\n                    proxyUrl:\n                      description: ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint.\n                      type: string\n                    relabelings:\n                      description: 'RelabelConfigs to apply to samples before scraping. Prometheus Operator automatically adds relabelings for a few standard Kubernetes fields. The original scrape job''s name is available via the `__tmp_prometheus_job_name` label. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config'\n                      items:\n                        description: \"RelabelConfig allows dynamic rewriting of the label set for targets, alerts, scraped samples and remote write samples. \\n More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config\"\n                        properties:\n                          action:\n                            default: replace\n                            description: \"Action to perform based on the regex matching. \\n `Uppercase` and `Lowercase` actions require Prometheus >= v2.36.0. `DropEqual` and `KeepEqual` actions require Prometheus >= v2.41.0. \\n Default: \\\"Replace\\\"\"\n                            enum:\n                            - replace\n                            - Replace\n                            - keep\n                            - Keep\n                            - drop\n                            - Drop\n                            - hashmod\n                            - HashMod\n                            - labelmap\n                            - LabelMap\n                            - labeldrop\n                            - LabelDrop\n                            - labelkeep\n                            - LabelKeep\n                            - lowercase\n                            - Lowercase\n                            - uppercase\n                            - Uppercase\n                            - keepequal\n                            - KeepEqual\n                            - dropequal\n                            - DropEqual\n                            type: string\n                          modulus:\n                            description: \"Modulus to take of the hash of the source label values. \\n Only applicable when the action is `HashMod`.\"\n                            format: int64\n                            type: integer\n                          regex:\n                            description: Regular expression against which the extracted value is matched.\n                            type: string\n                          replacement:\n                            description: \"Replacement value against which a Replace action is performed if the regular expression matches. \\n Regex capture groups are available.\"\n                            type: string\n                          separator:\n                            description: Separator is the string between concatenated SourceLabels.\n                            type: string\n                          sourceLabels:\n                            description: The source labels select values from existing labels. Their content is concatenated using the configured Separator and matched against the configured regular expression.\n                            items:\n                              description: LabelName is a valid Prometheus label name which may only contain ASCII letters, numbers, as well as underscores.\n                              pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$\n                              type: string\n                            type: array\n                          targetLabel:\n                            description: \"Label to which the resulting string is written in a replacement. \\n It is mandatory for `Replace`, `HashMod`, `Lowercase`, `Uppercase`, `KeepEqual` and `DropEqual` actions. \\n Regex capture groups are available.\"\n                            type: string\n                        type: object\n                      type: array\n                    scheme:\n                      description: HTTP scheme to use for scraping. `http` and `https` are the expected values unless you rewrite the `__scheme__` label via relabeling. If empty, Prometheus uses the default value `http`.\n                      enum:\n                      - http\n                      - https\n                      type: string\n                    scrapeTimeout:\n                      description: Timeout after which the scrape is ended If not specified, the Prometheus global scrape timeout is used unless it is less than `Interval` in which the latter is used.\n                      pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                      type: string\n                    targetPort:\n                      anyOf:\n                      - type: integer\n                      - type: string\n                      description: Name or number of the target port of the Pod behind the Service, the port must be specified with container port property. Mutually exclusive with port.\n                      x-kubernetes-int-or-string: true\n                    tlsConfig:\n                      description: TLS configuration to use when scraping the endpoint\n                      properties:\n                        ca:\n                          description: Certificate authority used when verifying server certificates.\n                          properties:\n                            configMap:\n                              description: ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        caFile:\n                          description: Path to the CA cert in the Prometheus container to use for the targets.\n                          type: string\n                        cert:\n                          description: Client certificate to present when doing client-authentication.\n                          properties:\n                            configMap:\n                              description: ConfigMap containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key to select.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the ConfigMap or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            secret:\n                              description: Secret containing data to use for the targets.\n                              properties:\n                                key:\n                                  description: The key of the secret to select from.  Must be a valid secret key.\n                                  type: string\n                                name:\n                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                  type: string\n                                optional:\n                                  description: Specify whether the Secret or its key must be defined\n                                  type: boolean\n                              required:\n                              - key\n                              type: object\n                              x-kubernetes-map-type: atomic\n                          type: object\n                        certFile:\n                          description: Path to the client cert file in the Prometheus container for the targets.\n                          type: string\n                        insecureSkipVerify:\n                          description: Disable target certificate validation.\n                          type: boolean\n                        keyFile:\n                          description: Path to the client key file in the Prometheus container for the targets.\n                          type: string\n                        keySecret:\n                          description: Secret containing the client key file for the targets.\n                          properties:\n                            key:\n                              description: The key of the secret to select from.  Must be a valid secret key.\n                              type: string\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                            optional:\n                              description: Specify whether the Secret or its key must be defined\n                              type: boolean\n                          required:\n                          - key\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        serverName:\n                          description: Used to verify the hostname for the targets.\n                          type: string\n                      type: object\n                  type: object\n                type: array\n              jobLabel:\n                description: \"JobLabel selects the label from the associated Kubernetes service which will be used as the `job` label for all metrics. \\n For example: If in `ServiceMonitor.spec.jobLabel: foo` and in `Service.metadata.labels.foo: bar`, then the `job=\\\"bar\\\"` label is added to all metrics. \\n If the value of this field is empty or if the label doesn't exist for the given Service, the `job` label of the metrics defaults to the name of the Kubernetes Service.\"\n                type: string\n              labelLimit:\n                description: Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n                format: int64\n                type: integer\n              labelNameLengthLimit:\n                description: Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n                format: int64\n                type: integer\n              labelValueLengthLimit:\n                description: Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer.\n                format: int64\n                type: integer\n              namespaceSelector:\n                description: Selector to select which namespaces the Kubernetes Endpoints objects are discovered from.\n                properties:\n                  any:\n                    description: Boolean describing whether all namespaces are selected in contrast to a list restricting them.\n                    type: boolean\n                  matchNames:\n                    description: List of namespace names to select from.\n                    items:\n                      type: string\n                    type: array\n                type: object\n              podTargetLabels:\n                description: PodTargetLabels transfers labels on the Kubernetes `Pod` onto the created metrics.\n                items:\n                  type: string\n                type: array\n              sampleLimit:\n                description: SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.\n                format: int64\n                type: integer\n              selector:\n                description: Selector to select Endpoints objects.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              targetLabels:\n                description: TargetLabels transfers labels from the Kubernetes `Service` onto the created metrics.\n                items:\n                  type: string\n                type: array\n              targetLimit:\n                description: TargetLimit defines a limit on the number of scraped targets that will be accepted.\n                format: int64\n                type: integer\n            required:\n            - endpoints\n            - selector\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/setup/0thanosrulerCustomResourceDefinition.yaml",
    "content": "apiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  annotations:\n    controller-gen.kubebuilder.io/version: v0.11.1\n  creationTimestamp: null\n  name: thanosrulers.monitoring.coreos.com\nspec:\n  group: monitoring.coreos.com\n  names:\n    categories:\n    - prometheus-operator\n    kind: ThanosRuler\n    listKind: ThanosRulerList\n    plural: thanosrulers\n    shortNames:\n    - ruler\n    singular: thanosruler\n  scope: Namespaced\n  versions:\n  - additionalPrinterColumns:\n    - description: The version of Thanos Ruler\n      jsonPath: .spec.version\n      name: Version\n      type: string\n    - description: The number of desired replicas\n      jsonPath: .spec.replicas\n      name: Replicas\n      type: integer\n    - description: The number of ready replicas\n      jsonPath: .status.availableReplicas\n      name: Ready\n      type: integer\n    - jsonPath: .status.conditions[?(@.type == 'Reconciled')].status\n      name: Reconciled\n      type: string\n    - jsonPath: .status.conditions[?(@.type == 'Available')].status\n      name: Available\n      type: string\n    - jsonPath: .metadata.creationTimestamp\n      name: Age\n      type: date\n    - description: Whether the resource reconciliation is paused or not\n      jsonPath: .status.paused\n      name: Paused\n      priority: 1\n      type: boolean\n    name: v1\n    schema:\n      openAPIV3Schema:\n        description: ThanosRuler defines a ThanosRuler deployment.\n        properties:\n          apiVersion:\n            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n            type: string\n          kind:\n            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n            type: string\n          metadata:\n            type: object\n          spec:\n            description: 'Specification of the desired behavior of the ThanosRuler cluster. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status'\n            properties:\n              additionalArgs:\n                description: AdditionalArgs allows setting additional arguments for the ThanosRuler container. It is intended for e.g. activating hidden flags which are not supported by the dedicated configuration options yet. The arguments are passed as-is to the ThanosRuler container which may cause issues if they are invalid or not supported by the given ThanosRuler version. In case of an argument conflict (e.g. an argument which is already set by the operator itself) or when providing an invalid argument the reconciliation will fail and an error will be logged.\n                items:\n                  description: Argument as part of the AdditionalArgs list.\n                  properties:\n                    name:\n                      description: Name of the argument, e.g. \"scrape.discovery-reload-interval\".\n                      minLength: 1\n                      type: string\n                    value:\n                      description: Argument value, e.g. 30s. Can be empty for name-only arguments (e.g. --storage.tsdb.no-lockfile)\n                      type: string\n                  required:\n                  - name\n                  type: object\n                type: array\n              affinity:\n                description: If specified, the pod's scheduling constraints.\n                properties:\n                  nodeAffinity:\n                    description: Describes node affinity scheduling rules for the pod.\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n                        items:\n                          description: An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\n                          properties:\n                            preference:\n                              description: A node selector term, associated with the corresponding weight.\n                              properties:\n                                matchExpressions:\n                                  description: A list of node selector requirements by node's labels.\n                                  items:\n                                    description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchFields:\n                                  description: A list of node selector requirements by node's fields.\n                                  items:\n                                    description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            weight:\n                              description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - preference\n                          - weight\n                          type: object\n                        type: array\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.\n                        properties:\n                          nodeSelectorTerms:\n                            description: Required. A list of node selector terms. The terms are ORed.\n                            items:\n                              description: A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\n                              properties:\n                                matchExpressions:\n                                  description: A list of node selector requirements by node's labels.\n                                  items:\n                                    description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchFields:\n                                  description: A list of node selector requirements by node's fields.\n                                  items:\n                                    description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: The label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n                                        type: string\n                                      values:\n                                        description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            type: array\n                        required:\n                        - nodeSelectorTerms\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  podAffinity:\n                    description: Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n                        items:\n                          description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\n                          properties:\n                            podAffinityTerm:\n                              description: Required. A pod affinity term, associated with the corresponding weight.\n                              properties:\n                                labelSelector:\n                                  description: A label query over a set of resources, in this case pods.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                      items:\n                                        description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaceSelector:\n                                  description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                      items:\n                                        description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaces:\n                                  description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                  items:\n                                    type: string\n                                  type: array\n                                topologyKey:\n                                  description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                                  type: string\n                              required:\n                              - topologyKey\n                              type: object\n                            weight:\n                              description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - podAffinityTerm\n                          - weight\n                          type: object\n                        type: array\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n                        items:\n                          description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running\n                          properties:\n                            labelSelector:\n                              description: A label query over a set of resources, in this case pods.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaceSelector:\n                              description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaces:\n                              description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                              items:\n                                type: string\n                              type: array\n                            topologyKey:\n                              description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                              type: string\n                          required:\n                          - topologyKey\n                          type: object\n                        type: array\n                    type: object\n                  podAntiAffinity:\n                    description: Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\n                    properties:\n                      preferredDuringSchedulingIgnoredDuringExecution:\n                        description: The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n                        items:\n                          description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\n                          properties:\n                            podAffinityTerm:\n                              description: Required. A pod affinity term, associated with the corresponding weight.\n                              properties:\n                                labelSelector:\n                                  description: A label query over a set of resources, in this case pods.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                      items:\n                                        description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaceSelector:\n                                  description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                      items:\n                                        description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                namespaces:\n                                  description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                                  items:\n                                    type: string\n                                  type: array\n                                topologyKey:\n                                  description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                                  type: string\n                              required:\n                              - topologyKey\n                              type: object\n                            weight:\n                              description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.\n                              format: int32\n                              type: integer\n                          required:\n                          - podAffinityTerm\n                          - weight\n                          type: object\n                        type: array\n                      requiredDuringSchedulingIgnoredDuringExecution:\n                        description: If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n                        items:\n                          description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running\n                          properties:\n                            labelSelector:\n                              description: A label query over a set of resources, in this case pods.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaceSelector:\n                              description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n                              properties:\n                                matchExpressions:\n                                  description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                  items:\n                                    description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                    properties:\n                                      key:\n                                        description: key is the label key that the selector applies to.\n                                        type: string\n                                      operator:\n                                        description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                        type: string\n                                      values:\n                                        description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                        items:\n                                          type: string\n                                        type: array\n                                    required:\n                                    - key\n                                    - operator\n                                    type: object\n                                  type: array\n                                matchLabels:\n                                  additionalProperties:\n                                    type: string\n                                  description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                  type: object\n                              type: object\n                              x-kubernetes-map-type: atomic\n                            namespaces:\n                              description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n                              items:\n                                type: string\n                              type: array\n                            topologyKey:\n                              description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n                              type: string\n                          required:\n                          - topologyKey\n                          type: object\n                        type: array\n                    type: object\n                type: object\n              alertDropLabels:\n                description: AlertDropLabels configure the label names which should be dropped in ThanosRuler alerts. The replica label `thanos_ruler_replica` will always be dropped in alerts.\n                items:\n                  type: string\n                type: array\n              alertQueryUrl:\n                description: The external Query URL the Thanos Ruler will set in the 'Source' field of all alerts. Maps to the '--alert.query-url' CLI arg.\n                type: string\n              alertRelabelConfigFile:\n                description: AlertRelabelConfigFile specifies the path of the alert relabeling configuration file. When used alongside with AlertRelabelConfigs, alertRelabelConfigFile takes precedence.\n                type: string\n              alertRelabelConfigs:\n                description: 'AlertRelabelConfigs configures alert relabeling in ThanosRuler. Alert relabel configurations must have the form as specified in the official Prometheus documentation: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alert_relabel_configs Alternative to AlertRelabelConfigFile, and lower order priority.'\n                properties:\n                  key:\n                    description: The key of the secret to select from.  Must be a valid secret key.\n                    type: string\n                  name:\n                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                    type: string\n                  optional:\n                    description: Specify whether the Secret or its key must be defined\n                    type: boolean\n                required:\n                - key\n                type: object\n                x-kubernetes-map-type: atomic\n              alertmanagersConfig:\n                description: Define configuration for connecting to alertmanager.  Only available with thanos v0.10.0 and higher.  Maps to the `alertmanagers.config` arg.\n                properties:\n                  key:\n                    description: The key of the secret to select from.  Must be a valid secret key.\n                    type: string\n                  name:\n                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                    type: string\n                  optional:\n                    description: Specify whether the Secret or its key must be defined\n                    type: boolean\n                required:\n                - key\n                type: object\n                x-kubernetes-map-type: atomic\n              alertmanagersUrl:\n                description: 'Define URLs to send alerts to Alertmanager.  For Thanos v0.10.0 and higher, AlertManagersConfig should be used instead.  Note: this field will be ignored if AlertManagersConfig is specified. Maps to the `alertmanagers.url` arg.'\n                items:\n                  type: string\n                type: array\n              containers:\n                description: 'Containers allows injecting additional containers or modifying operator generated containers. This can be used to allow adding an authentication proxy to a ThanosRuler pod or to change the behavior of an operator generated container. Containers described here modify an operator generated container if they share the same name and modifications are done via a strategic merge patch. The current container names are: `thanos-ruler` and `config-reloader`. Overriding containers is entirely outside the scope of what the maintainers will support and by doing so, you accept that this behaviour may break at any time without notice.'\n                items:\n                  description: A single application container that you want to run within a pod.\n                  properties:\n                    args:\n                      description: 'Arguments to the entrypoint. The container image''s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    command:\n                      description: 'Entrypoint array. Not executed within a shell. The container image''s ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    env:\n                      description: List of environment variables to set in the container. Cannot be updated.\n                      items:\n                        description: EnvVar represents an environment variable present in a Container.\n                        properties:\n                          name:\n                            description: Name of the environment variable. Must be a C_IDENTIFIER.\n                            type: string\n                          value:\n                            description: 'Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to \"\".'\n                            type: string\n                          valueFrom:\n                            description: Source for the environment variable's value. Cannot be used if value is not empty.\n                            properties:\n                              configMapKeyRef:\n                                description: Selects a key of a ConfigMap.\n                                properties:\n                                  key:\n                                    description: The key to select.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the ConfigMap or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              fieldRef:\n                                description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels[''<KEY>'']`, `metadata.annotations[''<KEY>'']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.'\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              resourceFieldRef:\n                                description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.'\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes, optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              secretKeyRef:\n                                description: Selects a key of a secret in the pod's namespace\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            type: object\n                        required:\n                        - name\n                        type: object\n                      type: array\n                    envFrom:\n                      description: List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.\n                      items:\n                        description: EnvFromSource represents the source of a set of ConfigMaps\n                        properties:\n                          configMapRef:\n                            description: The ConfigMap to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          prefix:\n                            description: An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\n                            type: string\n                          secretRef:\n                            description: The Secret to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      type: array\n                    image:\n                      description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.'\n                      type: string\n                    imagePullPolicy:\n                      description: 'Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images'\n                      type: string\n                    lifecycle:\n                      description: Actions that the management system should take in response to container lifecycle events. Cannot be updated.\n                      properties:\n                        postStart:\n                          description: 'PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request. HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                        preStop:\n                          description: 'PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The Pod''s termination grace period countdown begins before the PreStop hook is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod''s termination grace period (unless delayed by finalizers). Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request. HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                      type: object\n                    livenessProbe:\n                      description: 'Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \\n If this is not specified, the default behavior is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host. Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    name:\n                      description: Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated.\n                      type: string\n                    ports:\n                      description: List of ports to expose from the container. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Modifying this array with strategic merge patch may corrupt the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255. Cannot be updated.\n                      items:\n                        description: ContainerPort represents a network port in a single container.\n                        properties:\n                          containerPort:\n                            description: Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536.\n                            format: int32\n                            type: integer\n                          hostIP:\n                            description: What host IP to bind the external port to.\n                            type: string\n                          hostPort:\n                            description: Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.\n                            format: int32\n                            type: integer\n                          name:\n                            description: If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.\n                            type: string\n                          protocol:\n                            default: TCP\n                            description: Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".\n                            type: string\n                        required:\n                        - containerPort\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - containerPort\n                      - protocol\n                      x-kubernetes-list-type: map\n                    readinessProbe:\n                      description: 'Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \\n If this is not specified, the default behavior is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host. Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    resizePolicy:\n                      description: Resources resize policy for the container.\n                      items:\n                        description: ContainerResizePolicy represents resource resize policy for the container.\n                        properties:\n                          resourceName:\n                            description: 'Name of the resource to which this resource resize policy applies. Supported values: cpu, memory.'\n                            type: string\n                          restartPolicy:\n                            description: Restart policy to apply when specified resource is resized. If not specified, it defaults to NotRequired.\n                            type: string\n                        required:\n                        - resourceName\n                        - restartPolicy\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    resources:\n                      description: 'Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                      properties:\n                        claims:\n                          description: \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\"\n                          items:\n                            description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                            properties:\n                              name:\n                                description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\n                                type: string\n                            required:\n                            - name\n                            type: object\n                          type: array\n                          x-kubernetes-list-map-keys:\n                          - name\n                          x-kubernetes-list-type: map\n                        limits:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                        requests:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                      type: object\n                    securityContext:\n                      description: 'SecurityContext defines the security options the container should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/'\n                      properties:\n                        allowPrivilegeEscalation:\n                          description: 'AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN Note that this field cannot be set when spec.os.name is windows.'\n                          type: boolean\n                        capabilities:\n                          description: The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            add:\n                              description: Added capabilities\n                              items:\n                                description: Capability represent POSIX capabilities type\n                                type: string\n                              type: array\n                            drop:\n                              description: Removed capabilities\n                              items:\n                                description: Capability represent POSIX capabilities type\n                                type: string\n                              type: array\n                          type: object\n                        privileged:\n                          description: Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. Note that this field cannot be set when spec.os.name is windows.\n                          type: boolean\n                        procMount:\n                          description: procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. Note that this field cannot be set when spec.os.name is windows.\n                          type: string\n                        readOnlyRootFilesystem:\n                          description: Whether this container has a read-only root filesystem. Default is false. Note that this field cannot be set when spec.os.name is windows.\n                          type: boolean\n                        runAsGroup:\n                          description: The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        runAsNonRoot:\n                          description: Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\n                          type: boolean\n                        runAsUser:\n                          description: The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        seLinuxOptions:\n                          description: The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container.  May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            level:\n                              description: Level is SELinux level label that applies to the container.\n                              type: string\n                            role:\n                              description: Role is a SELinux role label that applies to the container.\n                              type: string\n                            type:\n                              description: Type is a SELinux type label that applies to the container.\n                              type: string\n                            user:\n                              description: User is a SELinux user label that applies to the container.\n                              type: string\n                          type: object\n                        seccompProfile:\n                          description: The seccomp options to use by this container. If seccomp options are provided at both the pod & container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            localhostProfile:\n                              description: localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is \"Localhost\".\n                              type: string\n                            type:\n                              description: \"type indicates which kind of seccomp profile will be applied. Valid options are: \\n Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.\"\n                              type: string\n                          required:\n                          - type\n                          type: object\n                        windowsOptions:\n                          description: The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux.\n                          properties:\n                            gmsaCredentialSpec:\n                              description: GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.\n                              type: string\n                            gmsaCredentialSpecName:\n                              description: GMSACredentialSpecName is the name of the GMSA credential spec to use.\n                              type: string\n                            hostProcess:\n                              description: HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).  In addition, if HostProcess is true then HostNetwork must also be set to true.\n                              type: boolean\n                            runAsUserName:\n                              description: The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\n                              type: string\n                          type: object\n                      type: object\n                    startupProbe:\n                      description: 'StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod''s lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \\n If this is not specified, the default behavior is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host. Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    stdin:\n                      description: Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false.\n                      type: boolean\n                    stdinOnce:\n                      description: Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false\n                      type: boolean\n                    terminationMessagePath:\n                      description: 'Optional: Path at which the file to which the container''s termination message will be written is mounted into the container''s filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.'\n                      type: string\n                    terminationMessagePolicy:\n                      description: Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.\n                      type: string\n                    tty:\n                      description: Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.\n                      type: boolean\n                    volumeDevices:\n                      description: volumeDevices is the list of block devices to be used by the container.\n                      items:\n                        description: volumeDevice describes a mapping of a raw block device within a container.\n                        properties:\n                          devicePath:\n                            description: devicePath is the path inside of the container that the device will be mapped to.\n                            type: string\n                          name:\n                            description: name must match the name of a persistentVolumeClaim in the pod\n                            type: string\n                        required:\n                        - devicePath\n                        - name\n                        type: object\n                      type: array\n                    volumeMounts:\n                      description: Pod volumes to mount into the container's filesystem. Cannot be updated.\n                      items:\n                        description: VolumeMount describes a mounting of a Volume within a container.\n                        properties:\n                          mountPath:\n                            description: Path within the container at which the volume should be mounted.  Must not contain ':'.\n                            type: string\n                          mountPropagation:\n                            description: mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10.\n                            type: string\n                          name:\n                            description: This must match the Name of a Volume.\n                            type: string\n                          readOnly:\n                            description: Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.\n                            type: boolean\n                          subPath:\n                            description: Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root).\n                            type: string\n                          subPathExpr:\n                            description: Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to \"\" (volume's root). SubPathExpr and SubPath are mutually exclusive.\n                            type: string\n                        required:\n                        - mountPath\n                        - name\n                        type: object\n                      type: array\n                    workingDir:\n                      description: Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.\n                      type: string\n                  required:\n                  - name\n                  type: object\n                type: array\n              enforcedNamespaceLabel:\n                description: EnforcedNamespaceLabel enforces adding a namespace label of origin for each alert and metric that is user created. The label value will always be the namespace of the object that is being created.\n                type: string\n              evaluationInterval:\n                default: 15s\n                description: Interval between consecutive evaluations.\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              excludedFromEnforcement:\n                description: List of references to PrometheusRule objects to be excluded from enforcing a namespace label of origin. Applies only if enforcedNamespaceLabel set to true.\n                items:\n                  description: ObjectReference references a PodMonitor, ServiceMonitor, Probe or PrometheusRule object.\n                  properties:\n                    group:\n                      default: monitoring.coreos.com\n                      description: Group of the referent. When not specified, it defaults to `monitoring.coreos.com`\n                      enum:\n                      - monitoring.coreos.com\n                      type: string\n                    name:\n                      description: Name of the referent. When not set, all resources in the namespace are matched.\n                      type: string\n                    namespace:\n                      description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'\n                      minLength: 1\n                      type: string\n                    resource:\n                      description: Resource of the referent.\n                      enum:\n                      - prometheusrules\n                      - servicemonitors\n                      - podmonitors\n                      - probes\n                      type: string\n                  required:\n                  - namespace\n                  - resource\n                  type: object\n                type: array\n              externalPrefix:\n                description: The external URL the Thanos Ruler instances will be available under. This is necessary to generate correct URLs. This is necessary if Thanos Ruler is not served from root of a DNS name.\n                type: string\n              grpcServerTlsConfig:\n                description: 'GRPCServerTLSConfig configures the gRPC server from which Thanos Querier reads recorded rule data. Note: Currently only the CAFile, CertFile, and KeyFile fields are supported. Maps to the ''--grpc-server-tls-*'' CLI args.'\n                properties:\n                  ca:\n                    description: Certificate authority used when verifying server certificates.\n                    properties:\n                      configMap:\n                        description: ConfigMap containing data to use for the targets.\n                        properties:\n                          key:\n                            description: The key to select.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the ConfigMap or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      secret:\n                        description: Secret containing data to use for the targets.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  caFile:\n                    description: Path to the CA cert in the Prometheus container to use for the targets.\n                    type: string\n                  cert:\n                    description: Client certificate to present when doing client-authentication.\n                    properties:\n                      configMap:\n                        description: ConfigMap containing data to use for the targets.\n                        properties:\n                          key:\n                            description: The key to select.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the ConfigMap or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                      secret:\n                        description: Secret containing data to use for the targets.\n                        properties:\n                          key:\n                            description: The key of the secret to select from.  Must be a valid secret key.\n                            type: string\n                          name:\n                            description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                            type: string\n                          optional:\n                            description: Specify whether the Secret or its key must be defined\n                            type: boolean\n                        required:\n                        - key\n                        type: object\n                        x-kubernetes-map-type: atomic\n                    type: object\n                  certFile:\n                    description: Path to the client cert file in the Prometheus container for the targets.\n                    type: string\n                  insecureSkipVerify:\n                    description: Disable target certificate validation.\n                    type: boolean\n                  keyFile:\n                    description: Path to the client key file in the Prometheus container for the targets.\n                    type: string\n                  keySecret:\n                    description: Secret containing the client key file for the targets.\n                    properties:\n                      key:\n                        description: The key of the secret to select from.  Must be a valid secret key.\n                        type: string\n                      name:\n                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                        type: string\n                      optional:\n                        description: Specify whether the Secret or its key must be defined\n                        type: boolean\n                    required:\n                    - key\n                    type: object\n                    x-kubernetes-map-type: atomic\n                  serverName:\n                    description: Used to verify the hostname for the targets.\n                    type: string\n                type: object\n              hostAliases:\n                description: Pods' hostAliases configuration\n                items:\n                  description: HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the pod's hosts file.\n                  properties:\n                    hostnames:\n                      description: Hostnames for the above IP address.\n                      items:\n                        type: string\n                      type: array\n                    ip:\n                      description: IP address of the host file entry.\n                      type: string\n                  required:\n                  - hostnames\n                  - ip\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - ip\n                x-kubernetes-list-type: map\n              image:\n                description: Thanos container image URL.\n                type: string\n              imagePullPolicy:\n                description: Image pull policy for the 'thanos', 'init-config-reloader' and 'config-reloader' containers. See https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy for more details.\n                enum:\n                - \"\"\n                - Always\n                - Never\n                - IfNotPresent\n                type: string\n              imagePullSecrets:\n                description: An optional list of references to secrets in the same namespace to use for pulling thanos images from registries see http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod\n                items:\n                  description: LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.\n                  properties:\n                    name:\n                      description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                      type: string\n                  type: object\n                  x-kubernetes-map-type: atomic\n                type: array\n              initContainers:\n                description: 'InitContainers allows adding initContainers to the pod definition. Those can be used to e.g. fetch secrets for injection into the ThanosRuler configuration from external sources. Any errors during the execution of an initContainer will lead to a restart of the Pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ Using initContainers for any use case other then secret fetching is entirely outside the scope of what the maintainers will support and by doing so, you accept that this behaviour may break at any time without notice.'\n                items:\n                  description: A single application container that you want to run within a pod.\n                  properties:\n                    args:\n                      description: 'Arguments to the entrypoint. The container image''s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    command:\n                      description: 'Entrypoint array. Not executed within a shell. The container image''s ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n                      items:\n                        type: string\n                      type: array\n                    env:\n                      description: List of environment variables to set in the container. Cannot be updated.\n                      items:\n                        description: EnvVar represents an environment variable present in a Container.\n                        properties:\n                          name:\n                            description: Name of the environment variable. Must be a C_IDENTIFIER.\n                            type: string\n                          value:\n                            description: 'Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to \"\".'\n                            type: string\n                          valueFrom:\n                            description: Source for the environment variable's value. Cannot be used if value is not empty.\n                            properties:\n                              configMapKeyRef:\n                                description: Selects a key of a ConfigMap.\n                                properties:\n                                  key:\n                                    description: The key to select.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the ConfigMap or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              fieldRef:\n                                description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels[''<KEY>'']`, `metadata.annotations[''<KEY>'']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.'\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              resourceFieldRef:\n                                description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.'\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes, optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              secretKeyRef:\n                                description: Selects a key of a secret in the pod's namespace\n                                properties:\n                                  key:\n                                    description: The key of the secret to select from.  Must be a valid secret key.\n                                    type: string\n                                  name:\n                                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                    type: string\n                                  optional:\n                                    description: Specify whether the Secret or its key must be defined\n                                    type: boolean\n                                required:\n                                - key\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            type: object\n                        required:\n                        - name\n                        type: object\n                      type: array\n                    envFrom:\n                      description: List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.\n                      items:\n                        description: EnvFromSource represents the source of a set of ConfigMaps\n                        properties:\n                          configMapRef:\n                            description: The ConfigMap to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the ConfigMap must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          prefix:\n                            description: An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\n                            type: string\n                          secretRef:\n                            description: The Secret to select from\n                            properties:\n                              name:\n                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                type: string\n                              optional:\n                                description: Specify whether the Secret must be defined\n                                type: boolean\n                            type: object\n                            x-kubernetes-map-type: atomic\n                        type: object\n                      type: array\n                    image:\n                      description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.'\n                      type: string\n                    imagePullPolicy:\n                      description: 'Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images'\n                      type: string\n                    lifecycle:\n                      description: Actions that the management system should take in response to container lifecycle events. Cannot be updated.\n                      properties:\n                        postStart:\n                          description: 'PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request. HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                        preStop:\n                          description: 'PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The Pod''s termination grace period countdown begins before the PreStop hook is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod''s termination grace period (unless delayed by finalizers). Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n                          properties:\n                            exec:\n                              description: Exec specifies the action to take.\n                              properties:\n                                command:\n                                  description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                                  items:\n                                    type: string\n                                  type: array\n                              type: object\n                            httpGet:\n                              description: HTTPGet specifies the http request to perform.\n                              properties:\n                                host:\n                                  description: Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.\n                                  type: string\n                                httpHeaders:\n                                  description: Custom headers to set in the request. HTTP allows repeated headers.\n                                  items:\n                                    description: HTTPHeader describes a custom header to be used in HTTP probes\n                                    properties:\n                                      name:\n                                        description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                        type: string\n                                      value:\n                                        description: The header field value\n                                        type: string\n                                    required:\n                                    - name\n                                    - value\n                                    type: object\n                                  type: array\n                                path:\n                                  description: Path to access on the HTTP server.\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                                scheme:\n                                  description: Scheme to use for connecting to the host. Defaults to HTTP.\n                                  type: string\n                              required:\n                              - port\n                              type: object\n                            tcpSocket:\n                              description: Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.\n                              properties:\n                                host:\n                                  description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                                  type: string\n                                port:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                                  x-kubernetes-int-or-string: true\n                              required:\n                              - port\n                              type: object\n                          type: object\n                      type: object\n                    livenessProbe:\n                      description: 'Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \\n If this is not specified, the default behavior is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host. Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    name:\n                      description: Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated.\n                      type: string\n                    ports:\n                      description: List of ports to expose from the container. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Modifying this array with strategic merge patch may corrupt the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255. Cannot be updated.\n                      items:\n                        description: ContainerPort represents a network port in a single container.\n                        properties:\n                          containerPort:\n                            description: Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536.\n                            format: int32\n                            type: integer\n                          hostIP:\n                            description: What host IP to bind the external port to.\n                            type: string\n                          hostPort:\n                            description: Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.\n                            format: int32\n                            type: integer\n                          name:\n                            description: If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.\n                            type: string\n                          protocol:\n                            default: TCP\n                            description: Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".\n                            type: string\n                        required:\n                        - containerPort\n                        type: object\n                      type: array\n                      x-kubernetes-list-map-keys:\n                      - containerPort\n                      - protocol\n                      x-kubernetes-list-type: map\n                    readinessProbe:\n                      description: 'Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \\n If this is not specified, the default behavior is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host. Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    resizePolicy:\n                      description: Resources resize policy for the container.\n                      items:\n                        description: ContainerResizePolicy represents resource resize policy for the container.\n                        properties:\n                          resourceName:\n                            description: 'Name of the resource to which this resource resize policy applies. Supported values: cpu, memory.'\n                            type: string\n                          restartPolicy:\n                            description: Restart policy to apply when specified resource is resized. If not specified, it defaults to NotRequired.\n                            type: string\n                        required:\n                        - resourceName\n                        - restartPolicy\n                        type: object\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    resources:\n                      description: 'Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                      properties:\n                        claims:\n                          description: \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\"\n                          items:\n                            description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                            properties:\n                              name:\n                                description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\n                                type: string\n                            required:\n                            - name\n                            type: object\n                          type: array\n                          x-kubernetes-list-map-keys:\n                          - name\n                          x-kubernetes-list-type: map\n                        limits:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                        requests:\n                          additionalProperties:\n                            anyOf:\n                            - type: integer\n                            - type: string\n                            pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                            x-kubernetes-int-or-string: true\n                          description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                          type: object\n                      type: object\n                    securityContext:\n                      description: 'SecurityContext defines the security options the container should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/'\n                      properties:\n                        allowPrivilegeEscalation:\n                          description: 'AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN Note that this field cannot be set when spec.os.name is windows.'\n                          type: boolean\n                        capabilities:\n                          description: The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            add:\n                              description: Added capabilities\n                              items:\n                                description: Capability represent POSIX capabilities type\n                                type: string\n                              type: array\n                            drop:\n                              description: Removed capabilities\n                              items:\n                                description: Capability represent POSIX capabilities type\n                                type: string\n                              type: array\n                          type: object\n                        privileged:\n                          description: Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. Note that this field cannot be set when spec.os.name is windows.\n                          type: boolean\n                        procMount:\n                          description: procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. Note that this field cannot be set when spec.os.name is windows.\n                          type: string\n                        readOnlyRootFilesystem:\n                          description: Whether this container has a read-only root filesystem. Default is false. Note that this field cannot be set when spec.os.name is windows.\n                          type: boolean\n                        runAsGroup:\n                          description: The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        runAsNonRoot:\n                          description: Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\n                          type: boolean\n                        runAsUser:\n                          description: The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\n                          format: int64\n                          type: integer\n                        seLinuxOptions:\n                          description: The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container.  May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            level:\n                              description: Level is SELinux level label that applies to the container.\n                              type: string\n                            role:\n                              description: Role is a SELinux role label that applies to the container.\n                              type: string\n                            type:\n                              description: Type is a SELinux type label that applies to the container.\n                              type: string\n                            user:\n                              description: User is a SELinux user label that applies to the container.\n                              type: string\n                          type: object\n                        seccompProfile:\n                          description: The seccomp options to use by this container. If seccomp options are provided at both the pod & container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows.\n                          properties:\n                            localhostProfile:\n                              description: localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is \"Localhost\".\n                              type: string\n                            type:\n                              description: \"type indicates which kind of seccomp profile will be applied. Valid options are: \\n Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.\"\n                              type: string\n                          required:\n                          - type\n                          type: object\n                        windowsOptions:\n                          description: The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux.\n                          properties:\n                            gmsaCredentialSpec:\n                              description: GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.\n                              type: string\n                            gmsaCredentialSpecName:\n                              description: GMSACredentialSpecName is the name of the GMSA credential spec to use.\n                              type: string\n                            hostProcess:\n                              description: HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).  In addition, if HostProcess is true then HostNetwork must also be set to true.\n                              type: boolean\n                            runAsUserName:\n                              description: The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\n                              type: string\n                          type: object\n                      type: object\n                    startupProbe:\n                      description: 'StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod''s lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                      properties:\n                        exec:\n                          description: Exec specifies the action to take.\n                          properties:\n                            command:\n                              description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n                              items:\n                                type: string\n                              type: array\n                          type: object\n                        failureThreshold:\n                          description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        grpc:\n                          description: GRPC specifies an action involving a GRPC port.\n                          properties:\n                            port:\n                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.\n                              format: int32\n                              type: integer\n                            service:\n                              description: \"Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \\n If this is not specified, the default behavior is defined by gRPC.\"\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        httpGet:\n                          description: HTTPGet specifies the http request to perform.\n                          properties:\n                            host:\n                              description: Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.\n                              type: string\n                            httpHeaders:\n                              description: Custom headers to set in the request. HTTP allows repeated headers.\n                              items:\n                                description: HTTPHeader describes a custom header to be used in HTTP probes\n                                properties:\n                                  name:\n                                    description: The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\n                                    type: string\n                                  value:\n                                    description: The header field value\n                                    type: string\n                                required:\n                                - name\n                                - value\n                                type: object\n                              type: array\n                            path:\n                              description: Path to access on the HTTP server.\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                            scheme:\n                              description: Scheme to use for connecting to the host. Defaults to HTTP.\n                              type: string\n                          required:\n                          - port\n                          type: object\n                        initialDelaySeconds:\n                          description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                        periodSeconds:\n                          description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        successThreshold:\n                          description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n                          format: int32\n                          type: integer\n                        tcpSocket:\n                          description: TCPSocket specifies an action involving a TCP port.\n                          properties:\n                            host:\n                              description: 'Optional: Host name to connect to, defaults to the pod IP.'\n                              type: string\n                            port:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n                              x-kubernetes-int-or-string: true\n                          required:\n                          - port\n                          type: object\n                        terminationGracePeriodSeconds:\n                          description: Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n                          format: int64\n                          type: integer\n                        timeoutSeconds:\n                          description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n                          format: int32\n                          type: integer\n                      type: object\n                    stdin:\n                      description: Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false.\n                      type: boolean\n                    stdinOnce:\n                      description: Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false\n                      type: boolean\n                    terminationMessagePath:\n                      description: 'Optional: Path at which the file to which the container''s termination message will be written is mounted into the container''s filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.'\n                      type: string\n                    terminationMessagePolicy:\n                      description: Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.\n                      type: string\n                    tty:\n                      description: Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.\n                      type: boolean\n                    volumeDevices:\n                      description: volumeDevices is the list of block devices to be used by the container.\n                      items:\n                        description: volumeDevice describes a mapping of a raw block device within a container.\n                        properties:\n                          devicePath:\n                            description: devicePath is the path inside of the container that the device will be mapped to.\n                            type: string\n                          name:\n                            description: name must match the name of a persistentVolumeClaim in the pod\n                            type: string\n                        required:\n                        - devicePath\n                        - name\n                        type: object\n                      type: array\n                    volumeMounts:\n                      description: Pod volumes to mount into the container's filesystem. Cannot be updated.\n                      items:\n                        description: VolumeMount describes a mounting of a Volume within a container.\n                        properties:\n                          mountPath:\n                            description: Path within the container at which the volume should be mounted.  Must not contain ':'.\n                            type: string\n                          mountPropagation:\n                            description: mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10.\n                            type: string\n                          name:\n                            description: This must match the Name of a Volume.\n                            type: string\n                          readOnly:\n                            description: Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.\n                            type: boolean\n                          subPath:\n                            description: Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root).\n                            type: string\n                          subPathExpr:\n                            description: Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to \"\" (volume's root). SubPathExpr and SubPath are mutually exclusive.\n                            type: string\n                        required:\n                        - mountPath\n                        - name\n                        type: object\n                      type: array\n                    workingDir:\n                      description: Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.\n                      type: string\n                  required:\n                  - name\n                  type: object\n                type: array\n              labels:\n                additionalProperties:\n                  type: string\n                description: Labels configure the external label pairs to ThanosRuler. A default replica label `thanos_ruler_replica` will be always added  as a label with the value of the pod's name and it will be dropped in the alerts.\n                type: object\n              listenLocal:\n                description: ListenLocal makes the Thanos ruler listen on loopback, so that it does not bind against the Pod IP.\n                type: boolean\n              logFormat:\n                description: Log format for ThanosRuler to be configured with.\n                enum:\n                - \"\"\n                - logfmt\n                - json\n                type: string\n              logLevel:\n                description: Log level for ThanosRuler to be configured with.\n                enum:\n                - \"\"\n                - debug\n                - info\n                - warn\n                - error\n                type: string\n              minReadySeconds:\n                description: Minimum number of seconds for which a newly created pod should be ready without any of its container crashing for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready) This is an alpha field from kubernetes 1.22 until 1.24 which requires enabling the StatefulSetMinReadySeconds feature gate.\n                format: int32\n                type: integer\n              nodeSelector:\n                additionalProperties:\n                  type: string\n                description: Define which Nodes the Pods are scheduled on.\n                type: object\n              objectStorageConfig:\n                description: ObjectStorageConfig configures object storage in Thanos. Alternative to ObjectStorageConfigFile, and lower order priority.\n                properties:\n                  key:\n                    description: The key of the secret to select from.  Must be a valid secret key.\n                    type: string\n                  name:\n                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                    type: string\n                  optional:\n                    description: Specify whether the Secret or its key must be defined\n                    type: boolean\n                required:\n                - key\n                type: object\n                x-kubernetes-map-type: atomic\n              objectStorageConfigFile:\n                description: ObjectStorageConfigFile specifies the path of the object storage configuration file. When used alongside with ObjectStorageConfig, ObjectStorageConfigFile takes precedence.\n                type: string\n              paused:\n                description: When a ThanosRuler deployment is paused, no actions except for deletion will be performed on the underlying objects.\n                type: boolean\n              podMetadata:\n                description: PodMetadata contains Labels and Annotations gets propagated to the thanos ruler pods.\n                properties:\n                  annotations:\n                    additionalProperties:\n                      type: string\n                    description: 'Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations'\n                    type: object\n                  labels:\n                    additionalProperties:\n                      type: string\n                    description: 'Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels'\n                    type: object\n                  name:\n                    description: 'Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names'\n                    type: string\n                type: object\n              portName:\n                default: web\n                description: Port name used for the pods and governing service. Defaults to `web`.\n                type: string\n              priorityClassName:\n                description: Priority class assigned to the Pods\n                type: string\n              prometheusRulesExcludedFromEnforce:\n                description: 'PrometheusRulesExcludedFromEnforce - list of Prometheus rules to be excluded from enforcing of adding namespace labels. Works only if enforcedNamespaceLabel set to true. Make sure both ruleNamespace and ruleName are set for each pair Deprecated: use excludedFromEnforcement instead.'\n                items:\n                  description: PrometheusRuleExcludeConfig enables users to configure excluded PrometheusRule names and their namespaces to be ignored while enforcing namespace label for alerts and metrics.\n                  properties:\n                    ruleName:\n                      description: Name of the excluded PrometheusRule object.\n                      type: string\n                    ruleNamespace:\n                      description: Namespace of the excluded PrometheusRule object.\n                      type: string\n                  required:\n                  - ruleName\n                  - ruleNamespace\n                  type: object\n                type: array\n              queryConfig:\n                description: Define configuration for connecting to thanos query instances. If this is defined, the QueryEndpoints field will be ignored. Maps to the `query.config` CLI argument. Only available with thanos v0.11.0 and higher.\n                properties:\n                  key:\n                    description: The key of the secret to select from.  Must be a valid secret key.\n                    type: string\n                  name:\n                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                    type: string\n                  optional:\n                    description: Specify whether the Secret or its key must be defined\n                    type: boolean\n                required:\n                - key\n                type: object\n                x-kubernetes-map-type: atomic\n              queryEndpoints:\n                description: QueryEndpoints defines Thanos querier endpoints from which to query metrics. Maps to the --query flag of thanos ruler.\n                items:\n                  type: string\n                type: array\n              replicas:\n                description: Number of thanos ruler instances to deploy.\n                format: int32\n                type: integer\n              resources:\n                description: Resources defines the resource requirements for single Pods. If not provided, no requests/limits will be set\n                properties:\n                  claims:\n                    description: \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\"\n                    items:\n                      description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                      properties:\n                        name:\n                          description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\n                          type: string\n                      required:\n                      - name\n                      type: object\n                    type: array\n                    x-kubernetes-list-map-keys:\n                    - name\n                    x-kubernetes-list-type: map\n                  limits:\n                    additionalProperties:\n                      anyOf:\n                      - type: integer\n                      - type: string\n                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                      x-kubernetes-int-or-string: true\n                    description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                    type: object\n                  requests:\n                    additionalProperties:\n                      anyOf:\n                      - type: integer\n                      - type: string\n                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                      x-kubernetes-int-or-string: true\n                    description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                    type: object\n                type: object\n              retention:\n                default: 24h\n                description: Time duration ThanosRuler shall retain data for. Default is '24h', and must match the regular expression `[0-9]+(ms|s|m|h|d|w|y)` (milliseconds seconds minutes hours days weeks years).\n                pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$\n                type: string\n              routePrefix:\n                description: The route prefix ThanosRuler registers HTTP handlers for. This allows thanos UI to be served on a sub-path.\n                type: string\n              ruleNamespaceSelector:\n                description: Namespaces to be selected for Rules discovery. If unspecified, only the same namespace as the ThanosRuler object is in is used.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              ruleSelector:\n                description: A label selector to select which PrometheusRules to mount for alerting and recording.\n                properties:\n                  matchExpressions:\n                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                    items:\n                      description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                      properties:\n                        key:\n                          description: key is the label key that the selector applies to.\n                          type: string\n                        operator:\n                          description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                          type: string\n                        values:\n                          description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                          items:\n                            type: string\n                          type: array\n                      required:\n                      - key\n                      - operator\n                      type: object\n                    type: array\n                  matchLabels:\n                    additionalProperties:\n                      type: string\n                    description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                    type: object\n                type: object\n                x-kubernetes-map-type: atomic\n              securityContext:\n                description: SecurityContext holds pod-level security attributes and common container settings. This defaults to the default PodSecurityContext.\n                properties:\n                  fsGroup:\n                    description: \"A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod: \\n 1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw---- \\n If unset, the Kubelet will not modify the ownership and permissions of any volume. Note that this field cannot be set when spec.os.name is windows.\"\n                    format: int64\n                    type: integer\n                  fsGroupChangePolicy:\n                    description: 'fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are \"OnRootMismatch\" and \"Always\". If not specified, \"Always\" is used. Note that this field cannot be set when spec.os.name is windows.'\n                    type: string\n                  runAsGroup:\n                    description: The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows.\n                    format: int64\n                    type: integer\n                  runAsNonRoot:\n                    description: Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\n                    type: boolean\n                  runAsUser:\n                    description: The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows.\n                    format: int64\n                    type: integer\n                  seLinuxOptions:\n                    description: The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container.  May also be set in SecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows.\n                    properties:\n                      level:\n                        description: Level is SELinux level label that applies to the container.\n                        type: string\n                      role:\n                        description: Role is a SELinux role label that applies to the container.\n                        type: string\n                      type:\n                        description: Type is a SELinux type label that applies to the container.\n                        type: string\n                      user:\n                        description: User is a SELinux user label that applies to the container.\n                        type: string\n                    type: object\n                  seccompProfile:\n                    description: The seccomp options to use by the containers in this pod. Note that this field cannot be set when spec.os.name is windows.\n                    properties:\n                      localhostProfile:\n                        description: localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is \"Localhost\".\n                        type: string\n                      type:\n                        description: \"type indicates which kind of seccomp profile will be applied. Valid options are: \\n Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.\"\n                        type: string\n                    required:\n                    - type\n                    type: object\n                  supplementalGroups:\n                    description: A list of groups applied to the first process run in each container, in addition to the container's primary GID, the fsGroup (if specified), and group memberships defined in the container image for the uid of the container process. If unspecified, no additional groups are added to any container. Note that group memberships defined in the container image for the uid of the container process are still effective, even if they are not included in this list. Note that this field cannot be set when spec.os.name is windows.\n                    items:\n                      format: int64\n                      type: integer\n                    type: array\n                  sysctls:\n                    description: Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch. Note that this field cannot be set when spec.os.name is windows.\n                    items:\n                      description: Sysctl defines a kernel parameter to be set\n                      properties:\n                        name:\n                          description: Name of a property to set\n                          type: string\n                        value:\n                          description: Value of a property to set\n                          type: string\n                      required:\n                      - name\n                      - value\n                      type: object\n                    type: array\n                  windowsOptions:\n                    description: The Windows specific settings applied to all containers. If unspecified, the options within a container's SecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux.\n                    properties:\n                      gmsaCredentialSpec:\n                        description: GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.\n                        type: string\n                      gmsaCredentialSpecName:\n                        description: GMSACredentialSpecName is the name of the GMSA credential spec to use.\n                        type: string\n                      hostProcess:\n                        description: HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).  In addition, if HostProcess is true then HostNetwork must also be set to true.\n                        type: boolean\n                      runAsUserName:\n                        description: The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\n                        type: string\n                    type: object\n                type: object\n              serviceAccountName:\n                description: ServiceAccountName is the name of the ServiceAccount to use to run the Thanos Ruler Pods.\n                type: string\n              storage:\n                description: Storage spec to specify how storage shall be used.\n                properties:\n                  disableMountSubPath:\n                    description: '*Deprecated: subPath usage will be removed in a future release.*'\n                    type: boolean\n                  emptyDir:\n                    description: 'EmptyDirVolumeSource to be used by the StatefulSet. If specified, it takes precedence over `ephemeral` and `volumeClaimTemplate`. More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir'\n                    properties:\n                      medium:\n                        description: 'medium represents what type of storage medium should back this directory. The default is \"\" which means to use the node''s default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                        type: string\n                      sizeLimit:\n                        anyOf:\n                        - type: integer\n                        - type: string\n                        description: 'sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                        x-kubernetes-int-or-string: true\n                    type: object\n                  ephemeral:\n                    description: 'EphemeralVolumeSource to be used by the StatefulSet. This is a beta field in k8s 1.21 and GA in 1.15. For lower versions, starting with k8s 1.19, it requires enabling the GenericEphemeralVolume feature gate. More info: https://kubernetes.io/docs/concepts/storage/ephemeral-volumes/#generic-ephemeral-volumes'\n                    properties:\n                      volumeClaimTemplate:\n                        description: \"Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod.  The name of the PVC will be `<pod name>-<volume name>` where `<volume name>` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long). \\n An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. \\n This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. \\n Required, must not be nil.\"\n                        properties:\n                          metadata:\n                            description: May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.\n                            type: object\n                          spec:\n                            description: The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.\n                            properties:\n                              accessModes:\n                                description: 'accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                                items:\n                                  type: string\n                                type: array\n                              dataSource:\n                                description: 'dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.'\n                                properties:\n                                  apiGroup:\n                                    description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.\n                                    type: string\n                                  kind:\n                                    description: Kind is the type of resource being referenced\n                                    type: string\n                                  name:\n                                    description: Name is the name of resource being referenced\n                                    type: string\n                                required:\n                                - kind\n                                - name\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              dataSourceRef:\n                                description: 'dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn''t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn''t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.'\n                                properties:\n                                  apiGroup:\n                                    description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.\n                                    type: string\n                                  kind:\n                                    description: Kind is the type of resource being referenced\n                                    type: string\n                                  name:\n                                    description: Name is the name of resource being referenced\n                                    type: string\n                                  namespace:\n                                    description: Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\n                                    type: string\n                                required:\n                                - kind\n                                - name\n                                type: object\n                              resources:\n                                description: 'resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'\n                                properties:\n                                  claims:\n                                    description: \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\"\n                                    items:\n                                      description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                                      properties:\n                                        name:\n                                          description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\n                                          type: string\n                                      required:\n                                      - name\n                                      type: object\n                                    type: array\n                                    x-kubernetes-list-map-keys:\n                                    - name\n                                    x-kubernetes-list-type: map\n                                  limits:\n                                    additionalProperties:\n                                      anyOf:\n                                      - type: integer\n                                      - type: string\n                                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                      x-kubernetes-int-or-string: true\n                                    description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                    type: object\n                                  requests:\n                                    additionalProperties:\n                                      anyOf:\n                                      - type: integer\n                                      - type: string\n                                      pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                      x-kubernetes-int-or-string: true\n                                    description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                    type: object\n                                type: object\n                              selector:\n                                description: selector is a label query over volumes to consider for binding.\n                                properties:\n                                  matchExpressions:\n                                    description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                    items:\n                                      description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                      properties:\n                                        key:\n                                          description: key is the label key that the selector applies to.\n                                          type: string\n                                        operator:\n                                          description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                          type: string\n                                        values:\n                                          description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                          items:\n                                            type: string\n                                          type: array\n                                      required:\n                                      - key\n                                      - operator\n                                      type: object\n                                    type: array\n                                  matchLabels:\n                                    additionalProperties:\n                                      type: string\n                                    description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                    type: object\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              storageClassName:\n                                description: 'storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'\n                                type: string\n                              volumeMode:\n                                description: volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.\n                                type: string\n                              volumeName:\n                                description: volumeName is the binding reference to the PersistentVolume backing this claim.\n                                type: string\n                            type: object\n                        required:\n                        - spec\n                        type: object\n                    type: object\n                  volumeClaimTemplate:\n                    description: Defines the PVC spec to be used by the Prometheus StatefulSets. The easiest way to use a volume that cannot be automatically provisioned is to use a label selector alongside manually created PersistentVolumes.\n                    properties:\n                      apiVersion:\n                        description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'\n                        type: string\n                      kind:\n                        description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'\n                        type: string\n                      metadata:\n                        description: EmbeddedMetadata contains metadata relevant to an EmbeddedResource.\n                        properties:\n                          annotations:\n                            additionalProperties:\n                              type: string\n                            description: 'Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations'\n                            type: object\n                          labels:\n                            additionalProperties:\n                              type: string\n                            description: 'Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels'\n                            type: object\n                          name:\n                            description: 'Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names'\n                            type: string\n                        type: object\n                      spec:\n                        description: 'Defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'\n                        properties:\n                          accessModes:\n                            description: 'accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                            items:\n                              type: string\n                            type: array\n                          dataSource:\n                            description: 'dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.'\n                            properties:\n                              apiGroup:\n                                description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.\n                                type: string\n                              kind:\n                                description: Kind is the type of resource being referenced\n                                type: string\n                              name:\n                                description: Name is the name of resource being referenced\n                                type: string\n                            required:\n                            - kind\n                            - name\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          dataSourceRef:\n                            description: 'dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn''t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn''t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.'\n                            properties:\n                              apiGroup:\n                                description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.\n                                type: string\n                              kind:\n                                description: Kind is the type of resource being referenced\n                                type: string\n                              name:\n                                description: Name is the name of resource being referenced\n                                type: string\n                              namespace:\n                                description: Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\n                                type: string\n                            required:\n                            - kind\n                            - name\n                            type: object\n                          resources:\n                            description: 'resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'\n                            properties:\n                              claims:\n                                description: \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\"\n                                items:\n                                  description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                                  properties:\n                                    name:\n                                      description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\n                                      type: string\n                                  required:\n                                  - name\n                                  type: object\n                                type: array\n                                x-kubernetes-list-map-keys:\n                                - name\n                                x-kubernetes-list-type: map\n                              limits:\n                                additionalProperties:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                  x-kubernetes-int-or-string: true\n                                description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                type: object\n                              requests:\n                                additionalProperties:\n                                  anyOf:\n                                  - type: integer\n                                  - type: string\n                                  pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                  x-kubernetes-int-or-string: true\n                                description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                type: object\n                            type: object\n                          selector:\n                            description: selector is a label query over volumes to consider for binding.\n                            properties:\n                              matchExpressions:\n                                description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                items:\n                                  description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                  properties:\n                                    key:\n                                      description: key is the label key that the selector applies to.\n                                      type: string\n                                    operator:\n                                      description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                      type: string\n                                    values:\n                                      description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                      items:\n                                        type: string\n                                      type: array\n                                  required:\n                                  - key\n                                  - operator\n                                  type: object\n                                type: array\n                              matchLabels:\n                                additionalProperties:\n                                  type: string\n                                description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                type: object\n                            type: object\n                            x-kubernetes-map-type: atomic\n                          storageClassName:\n                            description: 'storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'\n                            type: string\n                          volumeMode:\n                            description: volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.\n                            type: string\n                          volumeName:\n                            description: volumeName is the binding reference to the PersistentVolume backing this claim.\n                            type: string\n                        type: object\n                      status:\n                        description: '*Deprecated: this field is never set.*'\n                        properties:\n                          accessModes:\n                            description: 'accessModes contains the actual access modes the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                            items:\n                              type: string\n                            type: array\n                          allocatedResources:\n                            additionalProperties:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                              x-kubernetes-int-or-string: true\n                            description: allocatedResources is the storage resource within AllocatedResources tracks the capacity allocated to a PVC. It may be larger than the actual capacity when a volume expansion operation is requested. For storage quota, the larger value from allocatedResources and PVC.spec.resources is used. If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation. If a volume expansion capacity request is lowered, allocatedResources is only lowered if there are no expansion operations in progress and if the actual volume capacity is equal or lower than the requested capacity. This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.\n                            type: object\n                          capacity:\n                            additionalProperties:\n                              anyOf:\n                              - type: integer\n                              - type: string\n                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                              x-kubernetes-int-or-string: true\n                            description: capacity represents the actual resources of the underlying volume.\n                            type: object\n                          conditions:\n                            description: conditions is the current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'.\n                            items:\n                              description: PersistentVolumeClaimCondition contains details about state of pvc\n                              properties:\n                                lastProbeTime:\n                                  description: lastProbeTime is the time we probed the condition.\n                                  format: date-time\n                                  type: string\n                                lastTransitionTime:\n                                  description: lastTransitionTime is the time the condition transitioned from one status to another.\n                                  format: date-time\n                                  type: string\n                                message:\n                                  description: message is the human-readable message indicating details about last transition.\n                                  type: string\n                                reason:\n                                  description: reason is a unique, this should be a short, machine understandable string that gives the reason for condition's last transition. If it reports \"ResizeStarted\" that means the underlying persistent volume is being resized.\n                                  type: string\n                                status:\n                                  type: string\n                                type:\n                                  description: PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type\n                                  type: string\n                              required:\n                              - status\n                              - type\n                              type: object\n                            type: array\n                          phase:\n                            description: phase represents the current phase of PersistentVolumeClaim.\n                            type: string\n                          resizeStatus:\n                            description: resizeStatus stores status of resize operation. ResizeStatus is not set by default but when expansion is complete resizeStatus is set to empty string by resize controller or kubelet. This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.\n                            type: string\n                        type: object\n                    type: object\n                type: object\n              tolerations:\n                description: If specified, the pod's tolerations.\n                items:\n                  description: The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.\n                  properties:\n                    effect:\n                      description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\n                      type: string\n                    key:\n                      description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.\n                      type: string\n                    operator:\n                      description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.\n                      type: string\n                    tolerationSeconds:\n                      description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.\n                      format: int64\n                      type: integer\n                    value:\n                      description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.\n                      type: string\n                  type: object\n                type: array\n              topologySpreadConstraints:\n                description: If specified, the pod's topology spread constraints.\n                items:\n                  description: TopologySpreadConstraint specifies how to spread matching pods among the given topology.\n                  properties:\n                    labelSelector:\n                      description: LabelSelector is used to find matching pods. Pods that match this label selector are counted to determine the number of pods in their corresponding topology domain.\n                      properties:\n                        matchExpressions:\n                          description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                          items:\n                            description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                            properties:\n                              key:\n                                description: key is the label key that the selector applies to.\n                                type: string\n                              operator:\n                                description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                type: string\n                              values:\n                                description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                items:\n                                  type: string\n                                type: array\n                            required:\n                            - key\n                            - operator\n                            type: object\n                          type: array\n                        matchLabels:\n                          additionalProperties:\n                            type: string\n                          description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                          type: object\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    matchLabelKeys:\n                      description: \"MatchLabelKeys is a set of pod label keys to select the pods over which spreading will be calculated. The keys are used to lookup values from the incoming pod labels, those key-value labels are ANDed with labelSelector to select the group of existing pods over which spreading will be calculated for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. MatchLabelKeys cannot be set when LabelSelector isn't set. Keys that don't exist in the incoming pod labels will be ignored. A null or empty list means only match against labelSelector. \\n This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).\"\n                      items:\n                        type: string\n                      type: array\n                      x-kubernetes-list-type: atomic\n                    maxSkew:\n                      description: 'MaxSkew describes the degree to which pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. The global minimum is the minimum number of matching pods in an eligible domain or zero if the number of eligible domains is less than MinDomains. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 2/2/1: In this case, the global minimum is 1. | zone1 | zone2 | zone3 | |  P P  |  P P  |   P   | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2; scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence to topologies that satisfy it. It''s a required field. Default value is 1 and 0 is not allowed.'\n                      format: int32\n                      type: integer\n                    minDomains:\n                      description: \"MinDomains indicates a minimum number of eligible domains. When the number of eligible domains with matching topology keys is less than minDomains, Pod Topology Spread treats \\\"global minimum\\\" as 0, and then the calculation of Skew is performed. And when the number of eligible domains with matching topology keys equals or greater than minDomains, this value has no effect on scheduling. As a result, when the number of eligible domains is less than minDomains, scheduler won't schedule more than maxSkew Pods to those domains. If value is nil, the constraint behaves as if MinDomains is equal to 1. Valid values are integers greater than 0. When value is not nil, WhenUnsatisfiable must be DoNotSchedule. \\n For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same labelSelector spread as 2/2/2: | zone1 | zone2 | zone3 | |  P P  |  P P  |  P P  | The number of domains is less than 5(MinDomains), so \\\"global minimum\\\" is treated as 0. In this situation, new pod with the same labelSelector cannot be scheduled, because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones, it will violate MaxSkew. \\n This is a beta field and requires the MinDomainsInPodTopologySpread feature gate to be enabled (enabled by default).\"\n                      format: int32\n                      type: integer\n                    nodeAffinityPolicy:\n                      description: \"NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector when calculating pod topology spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations. \\n If this value is nil, the behavior is equivalent to the Honor policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\"\n                      type: string\n                    nodeTaintsPolicy:\n                      description: \"NodeTaintsPolicy indicates how we will treat node taints when calculating pod topology spread skew. Options are: - Honor: nodes without taints, along with tainted nodes for which the incoming pod has a toleration, are included. - Ignore: node taints are ignored. All nodes are included. \\n If this value is nil, the behavior is equivalent to the Ignore policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\"\n                      type: string\n                    topologyKey:\n                      description: TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each <key, value> as a \"bucket\", and try to put balanced number of pods into each bucket. We define a domain as a particular instance of a topology. Also, we define an eligible domain as a domain whose nodes meet the requirements of nodeAffinityPolicy and nodeTaintsPolicy. e.g. If TopologyKey is \"kubernetes.io/hostname\", each Node is a domain of that topology. And, if TopologyKey is \"topology.kubernetes.io/zone\", each zone is a domain of that topology. It's a required field.\n                      type: string\n                    whenUnsatisfiable:\n                      description: 'WhenUnsatisfiable indicates how to deal with a pod if it doesn''t satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location, but giving higher precedence to topologies that would help reduce the skew. A constraint is considered \"Unsatisfiable\" for an incoming pod if and only if every possible node assignment for that pod would violate \"MaxSkew\" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P |   P   |   P   | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won''t make it *more* imbalanced. It''s a required field.'\n                      type: string\n                  required:\n                  - maxSkew\n                  - topologyKey\n                  - whenUnsatisfiable\n                  type: object\n                type: array\n              tracingConfig:\n                description: TracingConfig configures tracing in Thanos. This is an experimental feature, it may change in any upcoming release in a breaking way.\n                properties:\n                  key:\n                    description: The key of the secret to select from.  Must be a valid secret key.\n                    type: string\n                  name:\n                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                    type: string\n                  optional:\n                    description: Specify whether the Secret or its key must be defined\n                    type: boolean\n                required:\n                - key\n                type: object\n                x-kubernetes-map-type: atomic\n              tracingConfigFile:\n                description: TracingConfig specifies the path of the tracing configuration file. When used alongside with TracingConfig, TracingConfigFile takes precedence.\n                type: string\n              version:\n                description: Version of Thanos to be deployed.\n                type: string\n              volumeMounts:\n                description: VolumeMounts allows configuration of additional VolumeMounts on the output StatefulSet definition. VolumeMounts specified will be appended to other VolumeMounts in the ruler container, that are generated as a result of StorageSpec objects.\n                items:\n                  description: VolumeMount describes a mounting of a Volume within a container.\n                  properties:\n                    mountPath:\n                      description: Path within the container at which the volume should be mounted.  Must not contain ':'.\n                      type: string\n                    mountPropagation:\n                      description: mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10.\n                      type: string\n                    name:\n                      description: This must match the Name of a Volume.\n                      type: string\n                    readOnly:\n                      description: Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.\n                      type: boolean\n                    subPath:\n                      description: Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root).\n                      type: string\n                    subPathExpr:\n                      description: Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to \"\" (volume's root). SubPathExpr and SubPath are mutually exclusive.\n                      type: string\n                  required:\n                  - mountPath\n                  - name\n                  type: object\n                type: array\n              volumes:\n                description: Volumes allows configuration of additional volumes on the output StatefulSet definition. Volumes specified will be appended to other volumes that are generated as a result of StorageSpec objects.\n                items:\n                  description: Volume represents a named volume in a pod that may be accessed by any container in the pod.\n                  properties:\n                    awsElasticBlockStore:\n                      description: 'awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet''s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore TODO: how do we prevent errors in the filesystem from compromising the machine'\n                          type: string\n                        partition:\n                          description: 'partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as \"1\". Similarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty).'\n                          format: int32\n                          type: integer\n                        readOnly:\n                          description: 'readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'\n                          type: boolean\n                        volumeID:\n                          description: 'volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    azureDisk:\n                      description: azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\n                      properties:\n                        cachingMode:\n                          description: 'cachingMode is the Host Caching mode: None, Read Only, Read Write.'\n                          type: string\n                        diskName:\n                          description: diskName is the Name of the data disk in the blob storage\n                          type: string\n                        diskURI:\n                          description: diskURI is the URI of data disk in the blob storage\n                          type: string\n                        fsType:\n                          description: fsType is Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                          type: string\n                        kind:\n                          description: 'kind expected values are Shared: multiple blob disks per storage account  Dedicated: single blob disk per storage account  Managed: azure managed data disk (only in managed availability set). defaults to shared'\n                          type: string\n                        readOnly:\n                          description: readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                      required:\n                      - diskName\n                      - diskURI\n                      type: object\n                    azureFile:\n                      description: azureFile represents an Azure File Service mount on the host and bind mount to the pod.\n                      properties:\n                        readOnly:\n                          description: readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretName:\n                          description: secretName is the  name of secret that contains Azure Storage Account Name and Key\n                          type: string\n                        shareName:\n                          description: shareName is the azure share Name\n                          type: string\n                      required:\n                      - secretName\n                      - shareName\n                      type: object\n                    cephfs:\n                      description: cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\n                      properties:\n                        monitors:\n                          description: 'monitors is Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          items:\n                            type: string\n                          type: array\n                        path:\n                          description: 'path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /'\n                          type: string\n                        readOnly:\n                          description: 'readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          type: boolean\n                        secretFile:\n                          description: 'secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          type: string\n                        secretRef:\n                          description: 'secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        user:\n                          description: 'user is optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'\n                          type: string\n                      required:\n                      - monitors\n                      type: object\n                    cinder:\n                      description: 'cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                          type: string\n                        readOnly:\n                          description: 'readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                          type: boolean\n                        secretRef:\n                          description: 'secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        volumeID:\n                          description: 'volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    configMap:\n                      description: configMap represents a configMap that should populate this volume\n                      properties:\n                        defaultMode:\n                          description: 'defaultMode is optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'\n                          format: int32\n                          type: integer\n                        items:\n                          description: items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\n                          items:\n                            description: Maps a string key to a path within a volume.\n                            properties:\n                              key:\n                                description: key is the key to project.\n                                type: string\n                              mode:\n                                description: 'mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'\n                                format: int32\n                                type: integer\n                              path:\n                                description: path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.\n                                type: string\n                            required:\n                            - key\n                            - path\n                            type: object\n                          type: array\n                        name:\n                          description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                          type: string\n                        optional:\n                          description: optional specify whether the ConfigMap or its keys must be defined\n                          type: boolean\n                      type: object\n                      x-kubernetes-map-type: atomic\n                    csi:\n                      description: csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\n                      properties:\n                        driver:\n                          description: driver is the name of the CSI driver that handles this volume. Consult with your admin for the correct name as registered in the cluster.\n                          type: string\n                        fsType:\n                          description: fsType to mount. Ex. \"ext4\", \"xfs\", \"ntfs\". If not provided, the empty value is passed to the associated CSI driver which will determine the default filesystem to apply.\n                          type: string\n                        nodePublishSecretRef:\n                          description: nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and  may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed.\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        readOnly:\n                          description: readOnly specifies a read-only configuration for the volume. Defaults to false (read/write).\n                          type: boolean\n                        volumeAttributes:\n                          additionalProperties:\n                            type: string\n                          description: volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values.\n                          type: object\n                      required:\n                      - driver\n                      type: object\n                    downwardAPI:\n                      description: downwardAPI represents downward API about the pod that should populate this volume\n                      properties:\n                        defaultMode:\n                          description: 'Optional: mode bits to use on created files by default. Must be a Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'\n                          format: int32\n                          type: integer\n                        items:\n                          description: Items is a list of downward API volume file\n                          items:\n                            description: DownwardAPIVolumeFile represents information to create the file containing the pod field\n                            properties:\n                              fieldRef:\n                                description: 'Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.'\n                                properties:\n                                  apiVersion:\n                                    description: Version of the schema the FieldPath is written in terms of, defaults to \"v1\".\n                                    type: string\n                                  fieldPath:\n                                    description: Path of the field to select in the specified API version.\n                                    type: string\n                                required:\n                                - fieldPath\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              mode:\n                                description: 'Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'\n                                format: int32\n                                type: integer\n                              path:\n                                description: 'Required: Path is  the relative path name of the file to be created. Must not be absolute or contain the ''..'' path. Must be utf-8 encoded. The first item of the relative path must not start with ''..'''\n                                type: string\n                              resourceFieldRef:\n                                description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.'\n                                properties:\n                                  containerName:\n                                    description: 'Container name: required for volumes, optional for env vars'\n                                    type: string\n                                  divisor:\n                                    anyOf:\n                                    - type: integer\n                                    - type: string\n                                    description: Specifies the output format of the exposed resources, defaults to \"1\"\n                                    pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                    x-kubernetes-int-or-string: true\n                                  resource:\n                                    description: 'Required: resource to select'\n                                    type: string\n                                required:\n                                - resource\n                                type: object\n                                x-kubernetes-map-type: atomic\n                            required:\n                            - path\n                            type: object\n                          type: array\n                      type: object\n                    emptyDir:\n                      description: 'emptyDir represents a temporary directory that shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                      properties:\n                        medium:\n                          description: 'medium represents what type of storage medium should back this directory. The default is \"\" which means to use the node''s default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                          type: string\n                        sizeLimit:\n                          anyOf:\n                          - type: integer\n                          - type: string\n                          description: 'sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n                          pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                          x-kubernetes-int-or-string: true\n                      type: object\n                    ephemeral:\n                      description: \"ephemeral represents a volume that is handled by a cluster storage driver. The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed. \\n Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). \\n Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. \\n Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. \\n A pod can use both types of ephemeral volumes and persistent volumes at the same time.\"\n                      properties:\n                        volumeClaimTemplate:\n                          description: \"Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod.  The name of the PVC will be `<pod name>-<volume name>` where `<volume name>` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long). \\n An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. \\n This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. \\n Required, must not be nil.\"\n                          properties:\n                            metadata:\n                              description: May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.\n                              type: object\n                            spec:\n                              description: The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.\n                              properties:\n                                accessModes:\n                                  description: 'accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n                                  items:\n                                    type: string\n                                  type: array\n                                dataSource:\n                                  description: 'dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.'\n                                  properties:\n                                    apiGroup:\n                                      description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.\n                                      type: string\n                                    kind:\n                                      description: Kind is the type of resource being referenced\n                                      type: string\n                                    name:\n                                      description: Name is the name of resource being referenced\n                                      type: string\n                                  required:\n                                  - kind\n                                  - name\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                dataSourceRef:\n                                  description: 'dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn''t specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn''t set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.'\n                                  properties:\n                                    apiGroup:\n                                      description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.\n                                      type: string\n                                    kind:\n                                      description: Kind is the type of resource being referenced\n                                      type: string\n                                    name:\n                                      description: Name is the name of resource being referenced\n                                      type: string\n                                    namespace:\n                                      description: Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\n                                      type: string\n                                  required:\n                                  - kind\n                                  - name\n                                  type: object\n                                resources:\n                                  description: 'resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'\n                                  properties:\n                                    claims:\n                                      description: \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \\n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \\n This field is immutable. It can only be set for containers.\"\n                                      items:\n                                        description: ResourceClaim references one entry in PodSpec.ResourceClaims.\n                                        properties:\n                                          name:\n                                            description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\n                                            type: string\n                                        required:\n                                        - name\n                                        type: object\n                                      type: array\n                                      x-kubernetes-list-map-keys:\n                                      - name\n                                      x-kubernetes-list-type: map\n                                    limits:\n                                      additionalProperties:\n                                        anyOf:\n                                        - type: integer\n                                        - type: string\n                                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                        x-kubernetes-int-or-string: true\n                                      description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                      type: object\n                                    requests:\n                                      additionalProperties:\n                                        anyOf:\n                                        - type: integer\n                                        - type: string\n                                        pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                        x-kubernetes-int-or-string: true\n                                      description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'\n                                      type: object\n                                  type: object\n                                selector:\n                                  description: selector is a label query over volumes to consider for binding.\n                                  properties:\n                                    matchExpressions:\n                                      description: matchExpressions is a list of label selector requirements. The requirements are ANDed.\n                                      items:\n                                        description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n                                        properties:\n                                          key:\n                                            description: key is the label key that the selector applies to.\n                                            type: string\n                                          operator:\n                                            description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n                                            type: string\n                                          values:\n                                            description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n                                            items:\n                                              type: string\n                                            type: array\n                                        required:\n                                        - key\n                                        - operator\n                                        type: object\n                                      type: array\n                                    matchLabels:\n                                      additionalProperties:\n                                        type: string\n                                      description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n                                      type: object\n                                  type: object\n                                  x-kubernetes-map-type: atomic\n                                storageClassName:\n                                  description: 'storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'\n                                  type: string\n                                volumeMode:\n                                  description: volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.\n                                  type: string\n                                volumeName:\n                                  description: volumeName is the binding reference to the PersistentVolume backing this claim.\n                                  type: string\n                              type: object\n                          required:\n                          - spec\n                          type: object\n                      type: object\n                    fc:\n                      description: fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. TODO: how do we prevent errors in the filesystem from compromising the machine'\n                          type: string\n                        lun:\n                          description: 'lun is Optional: FC target lun number'\n                          format: int32\n                          type: integer\n                        readOnly:\n                          description: 'readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.'\n                          type: boolean\n                        targetWWNs:\n                          description: 'targetWWNs is Optional: FC target worldwide names (WWNs)'\n                          items:\n                            type: string\n                          type: array\n                        wwids:\n                          description: 'wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.'\n                          items:\n                            type: string\n                          type: array\n                      type: object\n                    flexVolume:\n                      description: flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.\n                      properties:\n                        driver:\n                          description: driver is the name of the driver to use for this volume.\n                          type: string\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". The default filesystem depends on FlexVolume script.\n                          type: string\n                        options:\n                          additionalProperties:\n                            type: string\n                          description: 'options is Optional: this field holds extra command options if any.'\n                          type: object\n                        readOnly:\n                          description: 'readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.'\n                          type: boolean\n                        secretRef:\n                          description: 'secretRef is Optional: secretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts.'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                      required:\n                      - driver\n                      type: object\n                    flocker:\n                      description: flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\n                      properties:\n                        datasetName:\n                          description: datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated\n                          type: string\n                        datasetUUID:\n                          description: datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\n                          type: string\n                      type: object\n                    gcePersistentDisk:\n                      description: 'gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet''s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                      properties:\n                        fsType:\n                          description: 'fsType is filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk TODO: how do we prevent errors in the filesystem from compromising the machine'\n                          type: string\n                        partition:\n                          description: 'partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as \"1\". Similarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                          format: int32\n                          type: integer\n                        pdName:\n                          description: 'pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n                          type: boolean\n                      required:\n                      - pdName\n                      type: object\n                    gitRepo:\n                      description: 'gitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod''s container.'\n                      properties:\n                        directory:\n                          description: directory is the target directory name. Must not contain or start with '..'.  If '.' is supplied, the volume directory will be the git repository.  Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name.\n                          type: string\n                        repository:\n                          description: repository is the URL\n                          type: string\n                        revision:\n                          description: revision is the commit hash for the specified revision.\n                          type: string\n                      required:\n                      - repository\n                      type: object\n                    glusterfs:\n                      description: 'glusterfs represents a Glusterfs mount on the host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md'\n                      properties:\n                        endpoints:\n                          description: 'endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'\n                          type: string\n                        path:\n                          description: 'path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'\n                          type: boolean\n                      required:\n                      - endpoints\n                      - path\n                      type: object\n                    hostPath:\n                      description: 'hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath --- TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write.'\n                      properties:\n                        path:\n                          description: 'path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'\n                          type: string\n                        type:\n                          description: 'type for HostPath Volume Defaults to \"\" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'\n                          type: string\n                      required:\n                      - path\n                      type: object\n                    iscsi:\n                      description: 'iscsi represents an ISCSI Disk resource that is attached to a kubelet''s host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md'\n                      properties:\n                        chapAuthDiscovery:\n                          description: chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\n                          type: boolean\n                        chapAuthSession:\n                          description: chapAuthSession defines whether support iSCSI Session CHAP authentication\n                          type: boolean\n                        fsType:\n                          description: 'fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi TODO: how do we prevent errors in the filesystem from compromising the machine'\n                          type: string\n                        initiatorName:\n                          description: initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface <target portal>:<volume name> will be created for the connection.\n                          type: string\n                        iqn:\n                          description: iqn is the target iSCSI Qualified Name.\n                          type: string\n                        iscsiInterface:\n                          description: iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).\n                          type: string\n                        lun:\n                          description: lun represents iSCSI Target Lun number.\n                          format: int32\n                          type: integer\n                        portals:\n                          description: portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).\n                          items:\n                            type: string\n                          type: array\n                        readOnly:\n                          description: readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.\n                          type: boolean\n                        secretRef:\n                          description: secretRef is the CHAP Secret for iSCSI target and initiator authentication\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        targetPortal:\n                          description: targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).\n                          type: string\n                      required:\n                      - iqn\n                      - lun\n                      - targetPortal\n                      type: object\n                    name:\n                      description: 'name of the volume. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n                      type: string\n                    nfs:\n                      description: 'nfs represents an NFS mount on the host that shares a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                      properties:\n                        path:\n                          description: 'path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                          type: boolean\n                        server:\n                          description: 'server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n                          type: string\n                      required:\n                      - path\n                      - server\n                      type: object\n                    persistentVolumeClaim:\n                      description: 'persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'\n                      properties:\n                        claimName:\n                          description: 'claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'\n                          type: string\n                        readOnly:\n                          description: readOnly Will force the ReadOnly setting in VolumeMounts. Default false.\n                          type: boolean\n                      required:\n                      - claimName\n                      type: object\n                    photonPersistentDisk:\n                      description: photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\n                      properties:\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                          type: string\n                        pdID:\n                          description: pdID is the ID that identifies Photon Controller persistent disk\n                          type: string\n                      required:\n                      - pdID\n                      type: object\n                    portworxVolume:\n                      description: portworxVolume represents a portworx volume attached and mounted on kubelets host machine\n                      properties:\n                        fsType:\n                          description: fSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                          type: string\n                        readOnly:\n                          description: readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        volumeID:\n                          description: volumeID uniquely identifies a Portworx volume\n                          type: string\n                      required:\n                      - volumeID\n                      type: object\n                    projected:\n                      description: projected items for all in one resources secrets, configmaps, and downward API\n                      properties:\n                        defaultMode:\n                          description: defaultMode are the mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.\n                          format: int32\n                          type: integer\n                        sources:\n                          description: sources is the list of volume projections\n                          items:\n                            description: Projection that may be projected along with other supported volume types\n                            properties:\n                              configMap:\n                                description: configMap information about the configMap data to project\n                                properties:\n                                  items:\n                                    description: items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\n                                    items:\n                                      description: Maps a string key to a path within a volume.\n                                      properties:\n                                        key:\n                                          description: key is the key to project.\n                                          type: string\n                                        mode:\n                                          description: 'mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.\n                                          type: string\n                                      required:\n                                      - key\n                                      - path\n                                      type: object\n                                    type: array\n                                  name:\n                                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                    type: string\n                                  optional:\n                                    description: optional specify whether the ConfigMap or its keys must be defined\n                                    type: boolean\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              downwardAPI:\n                                description: downwardAPI information about the downwardAPI data to project\n                                properties:\n                                  items:\n                                    description: Items is a list of DownwardAPIVolume file\n                                    items:\n                                      description: DownwardAPIVolumeFile represents information to create the file containing the pod field\n                                      properties:\n                                        fieldRef:\n                                          description: 'Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.'\n                                          properties:\n                                            apiVersion:\n                                              description: Version of the schema the FieldPath is written in terms of, defaults to \"v1\".\n                                              type: string\n                                            fieldPath:\n                                              description: Path of the field to select in the specified API version.\n                                              type: string\n                                          required:\n                                          - fieldPath\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                        mode:\n                                          description: 'Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: 'Required: Path is  the relative path name of the file to be created. Must not be absolute or contain the ''..'' path. Must be utf-8 encoded. The first item of the relative path must not start with ''..'''\n                                          type: string\n                                        resourceFieldRef:\n                                          description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.'\n                                          properties:\n                                            containerName:\n                                              description: 'Container name: required for volumes, optional for env vars'\n                                              type: string\n                                            divisor:\n                                              anyOf:\n                                              - type: integer\n                                              - type: string\n                                              description: Specifies the output format of the exposed resources, defaults to \"1\"\n                                              pattern: ^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$\n                                              x-kubernetes-int-or-string: true\n                                            resource:\n                                              description: 'Required: resource to select'\n                                              type: string\n                                          required:\n                                          - resource\n                                          type: object\n                                          x-kubernetes-map-type: atomic\n                                      required:\n                                      - path\n                                      type: object\n                                    type: array\n                                type: object\n                              secret:\n                                description: secret information about the secret data to project\n                                properties:\n                                  items:\n                                    description: items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\n                                    items:\n                                      description: Maps a string key to a path within a volume.\n                                      properties:\n                                        key:\n                                          description: key is the key to project.\n                                          type: string\n                                        mode:\n                                          description: 'mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'\n                                          format: int32\n                                          type: integer\n                                        path:\n                                          description: path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.\n                                          type: string\n                                      required:\n                                      - key\n                                      - path\n                                      type: object\n                                    type: array\n                                  name:\n                                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                                    type: string\n                                  optional:\n                                    description: optional field specify whether the Secret or its key must be defined\n                                    type: boolean\n                                type: object\n                                x-kubernetes-map-type: atomic\n                              serviceAccountToken:\n                                description: serviceAccountToken is information about the serviceAccountToken data to project\n                                properties:\n                                  audience:\n                                    description: audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver.\n                                    type: string\n                                  expirationSeconds:\n                                    description: expirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes.\n                                    format: int64\n                                    type: integer\n                                  path:\n                                    description: path is the path relative to the mount point of the file to project the token into.\n                                    type: string\n                                required:\n                                - path\n                                type: object\n                            type: object\n                          type: array\n                      type: object\n                    quobyte:\n                      description: quobyte represents a Quobyte mount on the host that shares a pod's lifetime\n                      properties:\n                        group:\n                          description: group to map volume access to Default is no group\n                          type: string\n                        readOnly:\n                          description: readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.\n                          type: boolean\n                        registry:\n                          description: registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes\n                          type: string\n                        tenant:\n                          description: tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin\n                          type: string\n                        user:\n                          description: user to map volume access to Defaults to serivceaccount user\n                          type: string\n                        volume:\n                          description: volume is a string that references an already created Quobyte volume by name.\n                          type: string\n                      required:\n                      - registry\n                      - volume\n                      type: object\n                    rbd:\n                      description: 'rbd represents a Rados Block Device mount on the host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md'\n                      properties:\n                        fsType:\n                          description: 'fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd TODO: how do we prevent errors in the filesystem from compromising the machine'\n                          type: string\n                        image:\n                          description: 'image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                        keyring:\n                          description: 'keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                        monitors:\n                          description: 'monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          items:\n                            type: string\n                          type: array\n                        pool:\n                          description: 'pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                        readOnly:\n                          description: 'readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: boolean\n                        secretRef:\n                          description: 'secretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        user:\n                          description: 'user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'\n                          type: string\n                      required:\n                      - image\n                      - monitors\n                      type: object\n                    scaleIO:\n                      description: scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\n                      properties:\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Default is \"xfs\".\n                          type: string\n                        gateway:\n                          description: gateway is the host address of the ScaleIO API Gateway.\n                          type: string\n                        protectionDomain:\n                          description: protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\n                          type: string\n                        readOnly:\n                          description: readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretRef:\n                          description: secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        sslEnabled:\n                          description: sslEnabled Flag enable/disable SSL communication with Gateway, default false\n                          type: boolean\n                        storageMode:\n                          description: storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.\n                          type: string\n                        storagePool:\n                          description: storagePool is the ScaleIO Storage Pool associated with the protection domain.\n                          type: string\n                        system:\n                          description: system is the name of the storage system as configured in ScaleIO.\n                          type: string\n                        volumeName:\n                          description: volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source.\n                          type: string\n                      required:\n                      - gateway\n                      - secretRef\n                      - system\n                      type: object\n                    secret:\n                      description: 'secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'\n                      properties:\n                        defaultMode:\n                          description: 'defaultMode is Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'\n                          format: int32\n                          type: integer\n                        items:\n                          description: items If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\n                          items:\n                            description: Maps a string key to a path within a volume.\n                            properties:\n                              key:\n                                description: key is the key to project.\n                                type: string\n                              mode:\n                                description: 'mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'\n                                format: int32\n                                type: integer\n                              path:\n                                description: path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.\n                                type: string\n                            required:\n                            - key\n                            - path\n                            type: object\n                          type: array\n                        optional:\n                          description: optional field specify whether the Secret or its keys must be defined\n                          type: boolean\n                        secretName:\n                          description: 'secretName is the name of the secret in the pod''s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'\n                          type: string\n                      type: object\n                    storageos:\n                      description: storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\n                      properties:\n                        fsType:\n                          description: fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                          type: string\n                        readOnly:\n                          description: readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\n                          type: boolean\n                        secretRef:\n                          description: secretRef specifies the secret to use for obtaining the StorageOS API credentials.  If not specified, default values will be attempted.\n                          properties:\n                            name:\n                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'\n                              type: string\n                          type: object\n                          x-kubernetes-map-type: atomic\n                        volumeName:\n                          description: volumeName is the human-readable name of the StorageOS volume.  Volume names are only unique within a namespace.\n                          type: string\n                        volumeNamespace:\n                          description: volumeNamespace specifies the scope of the volume within StorageOS.  If no namespace is specified then the Pod's namespace will be used.  This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to \"default\" if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created.\n                          type: string\n                      type: object\n                    vsphereVolume:\n                      description: vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\n                      properties:\n                        fsType:\n                          description: fsType is filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n                          type: string\n                        storagePolicyID:\n                          description: storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\n                          type: string\n                        storagePolicyName:\n                          description: storagePolicyName is the storage Policy Based Management (SPBM) profile name.\n                          type: string\n                        volumePath:\n                          description: volumePath is the path that identifies vSphere volume vmdk\n                          type: string\n                      required:\n                      - volumePath\n                      type: object\n                  required:\n                  - name\n                  type: object\n                type: array\n            type: object\n          status:\n            description: 'Most recent observed status of the ThanosRuler cluster. Read-only. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status'\n            properties:\n              availableReplicas:\n                description: Total number of available pods (ready for at least minReadySeconds) targeted by this ThanosRuler deployment.\n                format: int32\n                type: integer\n              conditions:\n                description: The current state of the Alertmanager object.\n                items:\n                  description: Condition represents the state of the resources associated with the Prometheus, Alertmanager or ThanosRuler resource.\n                  properties:\n                    lastTransitionTime:\n                      description: lastTransitionTime is the time of the last update to the current status property.\n                      format: date-time\n                      type: string\n                    message:\n                      description: Human-readable message indicating details for the condition's last transition.\n                      type: string\n                    observedGeneration:\n                      description: ObservedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if `.metadata.generation` is currently 12, but the `.status.conditions[].observedGeneration` is 9, the condition is out of date with respect to the current state of the instance.\n                      format: int64\n                      type: integer\n                    reason:\n                      description: Reason for the condition's last transition.\n                      type: string\n                    status:\n                      description: Status of the condition.\n                      type: string\n                    type:\n                      description: Type of the condition being reported.\n                      type: string\n                  required:\n                  - lastTransitionTime\n                  - status\n                  - type\n                  type: object\n                type: array\n                x-kubernetes-list-map-keys:\n                - type\n                x-kubernetes-list-type: map\n              paused:\n                description: Represents whether any actions on the underlying managed objects are being performed. Only delete actions will be performed.\n                type: boolean\n              replicas:\n                description: Total number of non-terminated pods targeted by this ThanosRuler deployment (their labels match the selector).\n                format: int32\n                type: integer\n              unavailableReplicas:\n                description: Total number of unavailable pods targeted by this ThanosRuler deployment.\n                format: int32\n                type: integer\n              updatedReplicas:\n                description: Total number of non-terminated pods targeted by this ThanosRuler deployment that have the desired version spec.\n                format: int32\n                type: integer\n            required:\n            - availableReplicas\n            - paused\n            - replicas\n            - unavailableReplicas\n            - updatedReplicas\n            type: object\n        required:\n        - spec\n        type: object\n    served: true\n    storage: true\n    subresources:\n      status: {}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_044_gcp_k8s__prometheus_operator__kube_prometheus_grafana_alertmanager___using_41_42_43/vendor/kube_prometheus/manifests/setup/namespace.yaml",
    "content": "apiVersion: v1\nkind: Namespace\nmetadata:\n  name: monitoring\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_045__local__kind__extra_port_mappings/ReadMe.md",
    "content": "# Learning Kind Cluster\n\n## Extra Port Mapping\n\n[extra-port-mappings](https://kind.sigs.k8s.io/docs/user/configuration/#extra-port-mappings)\n\nExtra port mappings can be used to port forward to the kind nodes. This is a cross-platform option to get traffic into your kind cluster.\n\nIf you are running Docker without the Docker Desktop Application on Linux, you can simply send traffic to the node IPs from the host without extra port mappings. With the installation of the Docker Desktop Application, whether it is on macOs, Windows or Linux, you’ll want to use these.\n\n- config.yaml\n\n```yaml\nkind: Cluster\napiVersion: kind.x-k8s.io/v1alpha4\nnodes:\n- role: control-plane\n  # port forward 80 on the host to 80 on this node\n  extraPortMappings:\n  - containerPort: 8080\n    hostPort: 8080\n    # optional: set the bind address on the host\n    # 0.0.0.0 is the current default\n    listenAddress: \"127.0.0.1\"\n    # optional: set the protocol to one of TCP, UDP, SCTP.\n    # TCP is the default\n    protocol: TCP\n```\n\n- Create\n\n```bash\nkind create cluster --config  config.yaml\n```\n\n- pod.yaml\n\n```yaml\nkind: Pod\napiVersion: v1\nmetadata:\n  name: foo\nspec:\n  containers:\n  - name: foo\n    image: nginx:latest\n    ports:\n    - containerPort: 80\n      hostPort: 8080\n```\n\n- Apply\n\n[Empty reply from server](https://github.com/kubernetes-sigs/kind/issues/1618)\n\n```bash\nkubectl apply -f pod.yaml\npod/foo created\n\n# hit localhost:8080\ncurl --silent localhost:8080 | egrep \"Welcome\"\n<title>Welcome to nginx!</title>\n<h1>Welcome to nginx!</h1>\n```\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_045__local__kind__extra_port_mappings/kind_nodeport_config.yaml",
    "content": "kind: Cluster\napiVersion: kind.x-k8s.io/v1alpha4\nnodes:\n- role: control-plane\n  # port forward 80 on the host to 80 on this node\n  extraPortMappings:\n  - containerPort: 8080\n    hostPort: 8080\n    # optional: set the bind address on the host\n    # 0.0.0.0 is the current default\n    listenAddress: \"127.0.0.1\"\n    # optional: set the protocol to one of TCP, UDP, SCTP.\n    # TCP is the default\n    protocol: TCP"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_045__local__kind__extra_port_mappings/pod.yaml",
    "content": "kind: Pod\napiVersion: v1\nmetadata:\n  name: foo\nspec:\n  containers:\n  - name: foo\n    image: nginx:latest\n    ports:\n    - containerPort: 80\n      hostPort: 8080"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_046__local__kind__nodeport_with_port_mapping/ReadMe.md",
    "content": "# Learn Kind Cluster\n\n## [NodePort with Port Mappings](https://kind.sigs.k8s.io/docs/user/configuration/#nodeport-with-port-mappings)\n\nTo use port mappings with NodePort, the kind node containerPort and the service nodePort needs to be equal.\n\n- config.yaml\n\n```yaml\nkind: Cluster\napiVersion: kind.x-k8s.io/v1alpha4\nnodes:\n- role: control-plane\n  extraPortMappings:\n  - containerPort: 30951\n    hostPort: 8080\n```\n\n- pod.yaml\n\n```yaml\nkind: Pod\napiVersion: v1\nmetadata:\n  name: foo\n  labels:\n    app: foo\nspec:\n  containers:\n  - name: foo\n    image: nginx:latest\n    ports:\n    - containerPort: 80\n```\n\n- svc.yaml\n\n```yaml\napiVersion: v1\nkind: Service\nmetadata:\n  name: foo\nspec:\n  type: NodePort\n  ports:\n  - name: http\n    nodePort: 30951\n    port: 80\n  selector:\n    app: foo\n```\n\n- Apply\n\n```bash\n$ kubectl apply -f pod.yaml,svc.yaml\npod/foo created\nservice/foo created\n\n$ kubectl get pods\nNAME   READY   STATUS    RESTARTS   AGE\nfoo    1/1     Running   0          64m\n\n# hit localhost:8080 and check\ncurl --silent localhost:8080 | egrep -i welcome\n<title>Welcome to nginx!</title>\n<h1>Welcome to nginx!</h1>\n```\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_046__local__kind__nodeport_with_port_mapping/kind_config_node_port.yaml",
    "content": "kind: Cluster\napiVersion: kind.x-k8s.io/v1alpha4\nnodes:\n- role: control-plane\n  extraPortMappings:\n  - containerPort: 30951\n    hostPort: 8080"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_046__local__kind__nodeport_with_port_mapping/pod.yaml",
    "content": "kind: Pod\napiVersion: v1\nmetadata:\n  name: foo\n  labels:\n    app: foo\nspec:\n  containers:\n  - name: foo\n    image: nginx:latest\n    ports:\n    - containerPort: 80"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_046__local__kind__nodeport_with_port_mapping/svc.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: foo\nspec:\n  type: NodePort\n  ports:\n  - name: http\n    nodePort: 30951\n    port: 80\n  selector:\n    app: foo"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_047__local__kind__ingress_nginx/ReadMe.md",
    "content": "# Learn Kind Cluster\n\n## Using Ingress\n\n[ingress-nginx](https://kind.sigs.k8s.io/docs/user/ingress/#ingress-nginx)\n\n- config.yaml\n\n```yaml\nkind: Cluster\napiVersion: kind.x-k8s.io/v1alpha4\nnodes:\n- role: control-plane\n  kubeadmConfigPatches:\n  - |\n    kind: InitConfiguration\n    nodeRegistration:\n      kubeletExtraArgs:\n        node-labels: \"ingress-ready=true\"\n  extraPortMappings:\n  - containerPort: 80\n    hostPort: 80\n    protocol: TCP\n  - containerPort: 443\n    hostPort: 443\n    protocol: TCP\n```\n\n- create cluster\n\n```bash\n$ kind create cluster --config  config.yaml\n```\n\n- apply following\n\n```bash\nkubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/kind/deploy.yaml\n```\n\n- Are we ready ?\n\n```bash\n\n$ kubectl wait --namespace ingress-nginx \\\n  --for=condition=ready pod \\\n  --selector=app.kubernetes.io/component=controller \\\n  --timeout=90s\nerror: timed out waiting for the condition on pods/ingress-nginx-controller-6bccc5966-tzr87\n\n# try again\n$ kubectl wait --namespace ingress-nginx \\\n  --for=condition=ready pod \\\n  --selector=app.kubernetes.io/component=controller \\\n  --timeout=90s\npod/ingress-nginx-controller-6bccc5966-tzr87 condition met\n```\n\n- pod-foo-app.yaml\n\n\n```yaml\nkind: Pod\napiVersion: v1\nmetadata:\n  name: foo-app\n  labels:\n    app: foo\nspec:\n  containers:\n  - command:\n    - /agnhost\n    - netexec\n    - --http-port\n    - \"8080\"\n    image: registry.k8s.io/e2e-test-images/agnhost:2.39\n    name: foo-app\n\n```\n\n- svc-foo.yaml\n\n```yaml\nkind: Service\napiVersion: v1\nmetadata:\n  name: foo-service\nspec:\n  selector:\n    app: foo\n  ports:\n  # Default port used by the image\n  - port: 8080\n```\n\n- pod-bar-app.yaml\n\n```yaml\nkind: Pod\napiVersion: v1\nmetadata:\n  name: bar-app\n  labels:\n    app: bar\nspec:\n  containers:\n  - command:\n    - /agnhost\n    - netexec\n    - --http-port\n    - \"8080\"\n    image: registry.k8s.io/e2e-test-images/agnhost:2.39\n    name: bar-app\n```\n\n- svc-bar.yaml\n\n```yaml\nkind: Service\napiVersion: v1\nmetadata:\n  name: bar-service\nspec:\n  selector:\n    app: bar\n  ports:\n  # Default port used by the image\n  - port: 8080\n```\n\n- ingress.yaml\n\n```yaml\n\napiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  name: example-ingress\n  annotations:\n    nginx.ingress.kubernetes.io/rewrite-target: /$2\nspec:\n  rules:\n  - http:\n      paths:\n      - pathType: Prefix\n        path: /foo(/|$)(.*)\n        backend:\n          service:\n            name: foo-service\n            port:\n              number: 8080\n      - pathType: Prefix\n        path: /bar(/|$)(.*)\n        backend:\n          service:\n            name: bar-service\n            port:\n              number: 8080\n---\n```\n\n- Apply\n\n```yaml\nkubectl apply -f .                                          \ningress.networking.k8s.io/example-ingress created\npod/bar-app created\npod/foo-app created\nservice/bar-service created\nservice/foo-service created\n\nkubectl get pods       \nNAME      READY   STATUS    RESTARTS   AGE\nbar-app   1/1     Running   0          92s\nfoo-app   1/1     Running   0          92s\n```\n\n- Validate\n\n```bash\ncurl localhost/foo/hostname\nfoo-app\n\ncurl localhost/bar/hostname\nbar-app\n```\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_047__local__kind__ingress_nginx/ingress.yaml",
    "content": "apiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  name: example-ingress\n  annotations:\n    nginx.ingress.kubernetes.io/rewrite-target: /$2\nspec:\n  rules:\n  - http:\n      paths:\n      - pathType: Prefix\n        path: /foo(/|$)(.*)\n        backend:\n          service:\n            name: foo-service\n            port:\n              number: 8080\n      - pathType: Prefix\n        path: /bar(/|$)(.*)\n        backend:\n          service:\n            name: bar-service\n            port:\n              number: 8080"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_047__local__kind__ingress_nginx/kind_config_ingress_nginx.yaml",
    "content": "kind: Cluster\napiVersion: kind.x-k8s.io/v1alpha4\nnodes:\n- role: control-plane\n  kubeadmConfigPatches:\n  - |\n    kind: InitConfiguration\n    nodeRegistration:\n      kubeletExtraArgs:\n        node-labels: \"ingress-ready=true\"\n  extraPortMappings:\n  - containerPort: 80\n    hostPort: 80\n    protocol: TCP\n  - containerPort: 443\n    hostPort: 443\n    protocol: TCP"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_047__local__kind__ingress_nginx/pod_bar_app.yaml",
    "content": "kind: Pod\napiVersion: v1\nmetadata:\n  name: bar-app\n  labels:\n    app: bar\nspec:\n  containers:\n  - command:\n    - /agnhost\n    - netexec\n    - --http-port\n    - \"8080\"\n    image: registry.k8s.io/e2e-test-images/agnhost:2.39\n    name: bar-app"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_047__local__kind__ingress_nginx/pod_foo_app.yaml",
    "content": "kind: Pod\napiVersion: v1\nmetadata:\n  name: foo-app\n  labels:\n    app: foo\nspec:\n  containers:\n  - command:\n    - /agnhost\n    - netexec\n    - --http-port\n    - \"8080\"\n    image: registry.k8s.io/e2e-test-images/agnhost:2.39\n    name: foo-app"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_047__local__kind__ingress_nginx/svc_bar.yaml",
    "content": "kind: Service\napiVersion: v1\nmetadata:\n  name: bar-service\nspec:\n  selector:\n    app: bar\n  ports:\n  # Default port used by the image\n  - port: 8080"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_047__local__kind__ingress_nginx/svc_foo.yaml",
    "content": "kind: Service\napiVersion: v1\nmetadata:\n  name: foo-service\nspec:\n  selector:\n    app: foo\n  ports:\n  # Default port used by the image\n  - port: 8080"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_048__local__kind__cilium__hubble_ui__nginx_ingress/ReadMe.md",
    "content": "# Cilium\n\n- [Cilium : Installation with K8s distributions » Installation Using Kind](https://docs.cilium.io/en/stable/installation/kind/#gs-kind)\n- [Cilium : Github - cilium/cilium](https://github.com/cilium/cilium)\n- [Kind : Ingress](https://kind.sigs.k8s.io/docs/user/ingress/)\n- [Cilium : hubble-setup](https://docs.cilium.io/en/stable/gettingstarted/hubble_setup/#hubble-setup)\n\n## [What is Cilium](https://docs.cilium.io/en/stable/overview/intro/#what-is-cilium)?\n\nCilium is open source software for transparently securing the network connectivity between application services deployed using Linux container management platforms like Docker and Kubernetes.\n\nAt the foundation of Cilium is a new Linux kernel technology called eBPF, which enables the dynamic insertion of powerful security visibility and control logic within Linux itself. Because eBPF runs inside the Linux kernel, Cilium security policies can be applied and updated without any changes to the application code or container configuration.\n\n## [What is Hubble?](https://docs.cilium.io/en/stable/overview/intro/#what-is-hubble)\n\nHubble is a fully distributed networking and security observability platform. It is built on top of Cilium and eBPF to enable deep visibility into the communication and behavior of services as well as the networking infrastructure in a completely transparent manner.\n\n## [Cilium component overview](https://docs.cilium.io/en/stable/overview/component-overview/#cilium)\n\n- Create cluster\n\n```bash\n$ kind create cluster --config=kind-config.yaml\n.\n$ kubectl get nodes             \nNAME                 STATUS     ROLES           AGE   VERSION\nkind-control-plane   NotReady   control-plane   28s   v1.25.3\nkind-worker          NotReady   <none>          9s    v1.25.3\nkind-worker2         NotReady   <none>          9s    v1.25.3\nkind-worker3         NotReady   <none>          9s    v1.25.3\n```\n\n- Install Cilium\n\n```bash\n$ helm repo add cilium https://helm.cilium.io/\n.\n# To avoid errors like : Error: INSTALLATION FAILED: failed to download \"cilium/cilium\" at version \"1.14.0\", Run\n$ helm repo update\n$ docker pull quay.io/cilium/cilium:v1.14.0\n$ kind load docker-image quay.io/cilium/cilium:v1.14.0\n\n\n$ helm install cilium cilium/cilium --version 1.14.0 \\\n   --namespace kube-system \\\n   --set image.pullPolicy=IfNotPresent \\\n   --set ipam.mode=kubernetes \\\n   --set hubble.relay.enabled=true \\\n   --set hubble.ui.enabled=true\n\n$ docker exec kind-control-plane ls -al /proc/self/ns/cgroup\nlrwxrwxrwx 1 root root 0 Jul 26 18:24 /proc/self/ns/cgroup -> cgroup:[4026532854]\n$ docker exec kind-worker ls -al /proc/self/ns/cgroup\nlrwxrwxrwx 1 root root 0 Jul 26 18:24 /proc/self/ns/cgroup -> cgroup:[4026532741]\n```\n\n- Validate Installation\n\n```bash\n$ kubectl -n kube-system get pods --watch\nNAME                                         READY   STATUS    RESTARTS   AGE\ncilium-854gh                                 1/1     Running   0          4m44s\ncilium-jfkkl                                 1/1     Running   0          4m44s\ncilium-jrbvn                                 1/1     Running   0          4m44s\ncilium-operator-fdc5f8984-lfclj              1/1     Running   0          4m44s\ncilium-operator-fdc5f8984-nggwz              1/1     Running   0          4m44s\ncilium-z9x2s                                 1/1     Running   0          4m44s\ncoredns-565d847f94-hjs7x                     1/1     Running   0          6m5s\ncoredns-565d847f94-q4tzq                     1/1     Running   0          6m5s\netcd-kind-control-plane                      1/1     Running   0          6m18s\nhubble-relay-6d4fdf8848-94fhl                1/1     Running   0          4m44s\nhubble-ui-77f55d6655-fnql9                   2/2     Running   0          4m44s\nkube-apiserver-kind-control-plane            1/1     Running   0          6m18s\nkube-controller-manager-kind-control-plane   1/1     Running   0          6m18s\nkube-proxy-9s75j                             1/1     Running   0          6m2s\nkube-proxy-hwh7l                             1/1     Running   0          6m2s\nkube-proxy-jlfkn                             1/1     Running   0          6m2s\nkube-proxy-tf8k6                             1/1     Running   0          6m5s\nkube-scheduler-kind-control-plane            1/1     Running   0          6m18s\n\n$ kubectl create ns cilium-test\nnamespace/cilium-test created\n\n$ kubectl apply -n cilium-test -f https://raw.githubusercontent.com/cilium/cilium/1.14.0/examples/kubernetes/connectivity-check/connectivity-check.yaml\n\n$ kubectl get pods -n cilium-test\nNAME                                                     READY   STATUS    RESTARTS        AGE\necho-a-65c9d9654-dcnhb                                   1/1     Running   0               8m56s\necho-b-6868474864-7m6lw                                  1/1     Running   0               8m56s\necho-b-host-548c898ddb-pwdt8                             1/1     Running   0               8m56s\nhost-to-b-multi-node-clusterip-5db74f65cf-t5phl          1/1     Running   6 (2m24s ago)   8m55s\nhost-to-b-multi-node-headless-bb955b8c9-rdrcw            1/1     Running   6 (2m24s ago)   8m54s\npod-to-a-allowed-cnp-85776ff48c-7bslc                    1/1     Running   0               8m55s\npod-to-a-b7b7b554f-n9f9q                                 1/1     Running   0               8m56s\npod-to-a-denied-cnp-7c5c6bd5b9-p64cr                     1/1     Running   0               8m56s\npod-to-b-intra-node-nodeport-76dbd989b7-hlkth            1/1     Running   0               8m54s\npod-to-b-multi-node-clusterip-59448f789c-924gx           1/1     Running   0               8m55s\npod-to-b-multi-node-headless-6f9999647f-f7j2b            1/1     Running   0               8m55s\npod-to-b-multi-node-nodeport-6c465c7979-z5wsd            1/1     Running   0               8m54s\npod-to-external-1111-664d5cbd5f-s2r8p                    1/1     Running   0               8m56s\npod-to-external-fqdn-allow-google-cnp-5d6bd8986f-6l6mr   1/1     Running   0               8m55s\n\n$ kubectl delete ns cilium-test\n```\n\n- Access the UI\n\n```bash\n$ kubectl get pods -A | grep ui                                           \nkube-system          hubble-ui-77f55d6655-fnql9                   2/2     Running   0          19m\n$ kubectl port-forward -n kube-system hubble-ui-77f55d6655-fnql9 8080:8081\nForwarding from 127.0.0.1:8080 -> 8081\n\n# from svc\n$ kubectl get svc -A | grep ui\nkube-system     hubble-ui                            ClusterIP   10.96.121.42    <none>        80/TCP                       19m\n\n# Note that output says it's forwarding to container\n# 127.0.0.1:8081 -----> 80 ------> 8081\n$ kubectl port-forward -n kube-system svc/hubble-ui 8081:80\nForwarding from 127.0.0.1:8081 -> 8081\nForwarding from [::1]:8081 -> 8081\n```\n\n- Deploy nginx ingress\n  - [Github Issues: Empty reply from server\" when using Ingress](https://github.com/kubernetes-sigs/kind/issues/1618#issuecomment-1166358484)\n  - [Github Issues: ingress is not listening on port 80](https://github.com/kubernetes/ingress-nginx/issues/4799#issuecomment-560406420)\n  - [Github Issues: ingress is not listening on port 80](https://github.com/kubernetes/ingress-nginx/issues/4799#issuecomment-560132322)\n  \n> If that's empty I assume you are trying to use the ingress controller in bare-metal (or docker in docker)\n> In that case you cannot use a service type=LoadBalancer.\n> We are using docker in docker\n\n```bash\n$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/kind/deploy.yaml\n.\n\n$ kubectl get deployment -n ingress-nginx\nNAME                       READY   UP-TO-DATE   AVAILABLE   AGE\ningress-nginx-controller   1/1     1            1           8m6s\n\n# https://github.com/kubernetes/ingress-nginx/issues/4799#issuecomment-560406420\n$ kubectl patch deployment ingress-nginx-controller -p '{\"spec\":{\"template\":{\"spec\":{\"hostNetwork\":true}}}}' -n ingress-nginx\n\n$ kubectl wait --namespace ingress-nginx \\\n  --for=condition=ready pod \\\n  --selector=app.kubernetes.io/component=controller \\\n  --timeout=90s\n```\n\n- Deploy the ingress resource\n\n```bash\n$ kubectl apply -f ingress.yaml                                                                                           \ningress.networking.k8s.io/hubble-ui created\n```\n\n- Now we can visit [http://localhost](http://localhost)\n\n> Note: We are using nginx ingress and not cilium ingress, so we don't yet need the things mentioned here - [Service Mesh » Kubernetes Ingress Support\n](https://docs.cilium.io/en/stable/network/servicemesh/ingress/#gs-ingress)\n\n![img](.images/image-2023-07-30-16-30-16.png)\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_048__local__kind__cilium__hubble_ui__nginx_ingress/ingress.yaml",
    "content": "apiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  name: hubble-ui\n  namespace: kube-system\n  annotations:\n    kubernetes.io/ingress.class: nginx\nspec:\n  rules:\n  - host: localhost\n    http:\n      paths:\n      - backend:\n          service:\n            name: hubble-ui\n            port:\n              number: 80\n        path: /\n        pathType: Prefix\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_048__local__kind__cilium__hubble_ui__nginx_ingress/kind-config.yaml",
    "content": "kind: Cluster\napiVersion: kind.x-k8s.io/v1alpha4\nnodes:\n- role: control-plane\n  kubeadmConfigPatches:\n  - |\n    kind: InitConfiguration\n    nodeRegistration:\n      kubeletExtraArgs:\n        node-labels: \"ingress-ready=true\"\n  extraPortMappings:\n  - containerPort: 80\n    hostPort: 80\n    protocol: TCP\n  - containerPort: 443\n    hostPort: 443\n    protocol: TCP\n- role: worker\n- role: worker\n- role: worker\nnetworking:\n  disableDefaultCNI: true\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_049__openshift__deploy_sample_backend_app/ReadMe.md",
    "content": "# K8S using Openshift\n\n- [developers.redhat.co » OpenShift and the Developer Sandbox](https://developers.redhat.com/learning/learn:openshift:foundations-openshift/resource/resources:openshift-and-developer-sandbox)\n- [developers.redhat.co » Overview of the web console](https://developers.redhat.com/learning/learn:openshift:foundations-openshift/resource/resources:overview-web-console)\n- [developers.redhat.co » developer-sandbox » activities](https://developers.redhat.com/developer-sandbox/activities)\n- [console.redhat.com » Console URL](https://console.redhat.com/openshift)\n- [developers.redhat.com » Learn Kubernetes using the Developer Sandbox for Red Hat OpenShift](https://developers.redhat.com/developer-sandbox/activities/learn-kubernetes-using-red-hat-developer-sandbox-openshift)\n\n## Useful documentation\n\n- [docs.openshift.com »  OpenShift Container Platform 4.13 » Managing security context constraints\n](https://docs.openshift.com/container-platform/4.13/authentication/managing-security-context-constraints.html)\n- [cloud.redhat.com » blog » a-guide-to-openshift-and-uids](https://cloud.redhat.com/blog/a-guide-to-openshift-and-uids)\n- [developers.redhat.com » blog » adapting-docker-and-kubernetes-containers-to-run-on-red-hat-openshift-container-platform](https://developers.redhat.com/blog/2020/10/26/adapting-docker-and-kubernetes-containers-to-run-on-red-hat-openshift-container-platform)\n- [docs.openshift.com » images-create-guide-openshift_create-images](https://docs.openshift.com/container-platform/4.5/openshift_images/create-images.html#images-create-guide-openshift_create-images)\n\n## What is Openshift\n\nOpenShift is a layer of Red Hat components that sit on top of a Kubernetes cluster. Using OpenShift makes it easier to install, configure, network and manage applications composed of containers.\n\n- Clone Repos\n\n```bash\n$ git clone https://github.com/redhat-developer-demos/quotesweb.git\n.\n$ git clone https://github.com/redhat-developer-demos/quotemysql.git\n.\n$ git clone https://github.com/redhat-developer-demos/qotd-python.git\n.\n```\n\nOpenShift has its own built-in Ingress-like object, the Route. For this tutorial, we're going to cheat and use the Route object\n\n```bash\n$ cd qotd-python/k8s\n.\n$ kubectl create -f quotes-deployment.yaml\n.\n$ kubectl create -f service.yaml\n.\n$ kubectl create -f route.yaml\n.\n```\n\nAt this point, we have the back-end quotes application running in a pod. It's exposed within Kubernetes as a Service, and the Route allows anyone to access it over the internet\n\n```bash\n$ kubectl get routes\nNAME     HOST/PORT                                                           PATH   SERVICES   PORT        TERMINATION   WILDCARD\nquotes   quotes-codeaprendiz-dev.apps.sandbox-m2.ll9k.p1.openshiftapps.com          quotes     10000-tcp                 None\n\n# Note the protocl is http\n$ curl http://quotes-codeaprendiz-dev.apps.sandbox-m2.ll9k.p1.openshiftapps.com/quotes -I  \nHTTP/1.1 200 OK\nserver: gunicorn/20.0.4\ndate: Fri, 18 Aug 2023 18:41:42 GMT\ncontent-type: application/json\ncontent-length: 1061\naccess-control-allow-origin: *\nset-cookie: 4c9f10407721e2736469d359e77060a6=3555786c72fd7a85a15fa4c42233655d; path=/; HttpOnly\ncache-control: private\n\n$ curl http://quotes-codeaprendiz-dev.apps.sandbox-m2.ll9k.p1.openshiftapps.com/quotes/random\n{\n  \"author\": \"Don Schenck\", \n  \"hostname\": \"quotes-6f89fc4455-tbgr7\", \n  \"id\": 0, \n  \"quotation\": \"It is not only what you do, but also the attitude you bring to it, that makes you a success.\"\n}\n```"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_049__openshift__deploy_sample_backend_app/k8s-qotd-python/deploymentconfig.yaml",
    "content": "apiVersion: apps.openshift.io/v1\nkind: DeploymentConfig\nmetadata:\n  name: qotd\n  labels:\n    app: qotd\nspec:\n  selector:\n    app: qotd\n  replicas: 1\n  template:\n    metadata:\n      labels:\n        app: qotd\n    spec:\n      containers:\n        - name: qotd\n          image: image-registry.openshift-image-registry.svc:5000/pipelines-tutorial/qotd:latest\n          imagePullPolicy: Always\n          ports:\n            - containerPort: 10000\n              protocol: TCP\n  triggers:\n  - type: ConfigChange \n  - imageChangeParams:\n      automatic: true\n      containerNames:\n      - qotd\n      from:\n        kind: ImageStreamTag\n        name: qotd:latest\n    type: ImageChange"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_049__openshift__deploy_sample_backend_app/k8s-qotd-python/ingress.yaml",
    "content": "apiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  name: quotes-ingress\n  annotations:\n    nginx.ingress.kubernetes.io/rewrite-target: /\nspec:\n  rules:\n  - http:\n      paths:\n      - path: /quotespath\n        pathType: Prefix\n        backend:\n          service:\n            name: quotes\n            port:\n              number: 80\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_049__openshift__deploy_sample_backend_app/k8s-qotd-python/quotes-deployment.yaml",
    "content": "kind: Deployment\napiVersion: apps/v1\nmetadata:\n  name: quotes\n  labels:\n    app: quotes\n    sandbox: learn-kubernetes\n    learn-kubernetes: quotes\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: quotes\n  template:\n    metadata:\n      labels:\n        app: quotes\n    spec:\n      containers:\n        - name: quotes\n          image: quay.io/donschenck/quotes:v1\n          imagePullPolicy: Always\n          ports:\n            - containerPort: 10000\n              protocol: TCP\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_049__openshift__deploy_sample_backend_app/k8s-qotd-python/route.yaml",
    "content": "apiVersion: route.openshift.io/v1\nkind: Route\nmetadata:\n  labels:\n    app: quotes\n    sandbox: learn-kubernetes\n    learn-kubernetes: quotes\n  name: quotes\nspec:\n  port:\n    targetPort: 10000-tcp\n  to:\n    kind: Service\n    name: quotes\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_049__openshift__deploy_sample_backend_app/k8s-qotd-python/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app: quotes\n    sandbox: learn-kubernetes\n    learn-kubernetes: quotes\n  name: quotes\nspec:\n  ports:\n  - name: 10000-tcp\n    port: 10000\n    protocol: TCP\n    targetPort: 10000\n  - name: 8443-tcp\n    port: 8443\n    protocol: TCP\n    targetPort: 8443\n  - name: 8778-tcp\n    port: 8778\n    protocol: TCP\n    targetPort: 8778\n  selector:\n    app: quotes\n  sessionAffinity: None\n  type: ClusterIP"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_050__local__kind__headless_svc/ReadMe.md",
    "content": "# Headless SVC\n\n- [kubernetes.io » Service](https://kubernetes.io/docs/concepts/services-networking/service/#headless-services)\n\nIn Kubernetes, a headless service is a type of service that doesn't have a cluster IP and is used to directly access the pods. It's useful in scenarios where you don't need load-balancing and want to directly reach the individual pods, often used in stateful applications like databases.\n\n- Create cluster\n\n```bash\nkind create cluster\n```\n\n- Apply\n\n```bash\n kubectl apply -f .\n```\n\n- Get pods\n\n```bash\nkubectl get pods       \n```\n\n- Exec into `nginx-pod-1`\n\n```bash\nkubectl exec nginx-pod-1 -it -- bash\n```\n\n- Update\n\n```bash\napt update\n```\n\n- Install `dnsutils`\n\n```bash\napt-get install dnsutils\n```\n\n- Note the output\n\n```bash\nroot@nginx-pod-1:/# nslookup nginx-headless\nServer:         10.96.0.10\nAddress:        10.96.0.10#53\n\nName:   nginx-headless.default.svc.cluster.local\nAddress: 10.244.0.5\nName:   nginx-headless.default.svc.cluster.local\nAddress: 10.244.0.6\nName:   nginx-headless.default.svc.cluster.local\nAddress: 10.244.0.7\n```\n\n- You can also get the IPs o the pods which should be the same\n\n```bash\n$ kubectl get pods -o wide\n\nNAME          READY   STATUS    RESTARTS   AGE     IP           NODE                 NOMINATED NODE   READINESS GATES\nnginx-pod-1   1/1     Running   0          3m20s   10.244.0.5   kind-control-plane   <none>           <none>\nnginx-pod-2   1/1     Running   0          3m20s   10.244.0.7   kind-control-plane   <none>           <none>\nnginx-pod-3   1/1     Running   0          3m20s   10.244.0.6   kind-control-plane   <none>           <none>\n```\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_050__local__kind__headless_svc/headless-svc.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: nginx-headless\nspec:\n  selector:\n    app: nginx-app\n  ports:\n    - protocol: TCP\n      port: 80\n  clusterIP: None # This makes the service headless\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_050__local__kind__headless_svc/nginx-pods.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: nginx-pod-1\n  labels:\n    app: nginx-app\nspec:\n  containers:\n  - name: nginx\n    image: nginx\n\n---\napiVersion: v1\nkind: Pod\nmetadata:\n  name: nginx-pod-2\n  labels:\n    app: nginx-app\nspec:\n  containers:\n  - name: nginx\n    image: nginx\n\n---\napiVersion: v1\nkind: Pod\nmetadata:\n  name: nginx-pod-3\n  labels:\n    app: nginx-app\nspec:\n  containers:\n  - name: nginx\n    image: nginx\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_051__local__kind__linkerd/ReadMe.md",
    "content": "# Kind Linkerd\n\n## [linkerd.io » Getting Started](https://linkerd.io/2.14/getting-started/)\n\n### Create Cluster Create cluster\n\n```bash\nkind create cluster\n```\n\n### Install CLI\n\n```bash\ncurl --proto '=https' --tlsv1.2 -sSfL https://run.linkerd.io/install | sh\n```\n\n- validate that Linkerd can be installed\n\n```bash\nlinkerd check --pre                     # validate that Linkerd can be installed\n```\n\n### Install Linkerd\n\n- install linkerd-crds\n\n```bash\n# linkerd install --crds > linkerd-crds.yaml\nlinkerd install --crds | kubectl apply -f -\n```\n\n- install linkerd\n\n```bash\n# linkerd install > linkerd.yaml\nlinkerd install | kubectl apply -f -\n```\n\n- Validate\n\n```bash\nlinkerd check\n```\n\n### Install Demo App\n\n- Install the demo app\n\n```bash\n# curl --proto '=https' --tlsv1.2 -sSfL https://run.linkerd.io/emojivoto.yml > emojivoto.yaml\ncurl --proto '=https' --tlsv1.2 -sSfL https://run.linkerd.io/emojivoto.yml \\\n  | kubectl apply -f -\n```\n\n- Validate\n\n```bash\n$ kubectl get pods -n emojivoto                   \nNAME                        READY   STATUS    RESTARTS   AGE\nemoji-68cdd48fc7-kbclk      1/1     Running   0          9m48s\nvote-bot-85c88b944d-nm5qp   1/1     Running   0          9m48s\nvoting-5b7f854444-p55hb     1/1     Running   0          9m48s\nweb-679ccff67b-ncrdh        1/1     Running   0          9m48s\n\n$ curl -I localhost:8080                 \nHTTP/1.1 200 OK\nContent-Type: text/html\nDate: Sat, 13 Jan 2024 13:34:44 GMT\nContent-Length: 560\n```\n\n- With Emoji installed and running, we’re ready to mesh it\n\n```bash\nkubectl get -n emojivoto deploy -o yaml \\\n  | linkerd inject - \\\n  | kubectl apply -f -\n```\n\n- Validate everything is working as expected\n\n```bash\n$ kubectl get pods -n emojivoto\nNAME                       READY   STATUS    RESTARTS   AGE\nemoji-9f6758b4d-z5h6v      2/2     Running   0          2m45s\nvote-bot-db7d9c4d9-sspcl   2/2     Running   0          2m45s\nvoting-5d66f899b7-fvb8q    2/2     Running   0          2m45s\nweb-8559b97f7c-sbfw2       2/2     Running   0          2m45s\n\n# Validate everything is working as expected\n$ linkerd -n emojivoto check --proxy\n.\n.\nStatus check results are √\n```\n\n### Explore more\n\nLet’s install the viz extension, which will install an on-cluster metric stack and dashboard.\n\n```bash\n# linkerd viz install > linkerd-viz.yaml\nlinkerd viz install | kubectl apply -f - # install the on-cluster metrics stack\n```\n\n- Validate\n\n```bash\nlinkerd check\n```\n\n- Access dashboard\n\n```bash\nlinkerd viz dashboard &\n```\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_052__local__kind__linkerd_with_custom_certs/ReadMe.md",
    "content": "# Linkerd\n\n[Generating your own mTLS root certificates](https://linkerd.io/2.14/tasks/generate-certificates/)\n\n## Pre-Requisite\n\nIn Linkerd's architecture:\n\n- **Trust Anchor Certificate**: Serves as the root certificate, establishing the fundamental trust level for the entire service mesh. It's the base against which all other certificates are validated.\n\n- **Issuer Certificate**: Specific to each cluster, this certificate issues and manages the per-proxy TLS certificates. It plays a key role in automating certificate management and ensuring security within the mesh.\n\n## Create cluster\n\n```bash\nkind create cluster\n```\n\n## [Generating your own mTLS root certificates](https://linkerd.io/2.14/tasks/generate-certificates/)\n\n[Trust anchor certificate](https://linkerd.io/2.14/tasks/generate-certificates/#trust-anchor-certificate)\n\n```bash\n# --not-after 8760h \\ # if you need 10 years validity\nstep certificate create root.linkerd.cluster.local ca.crt ca.key \\\n--profile root-ca \\\n--no-password \\\n--insecure\n```\n\n## [Issuer certificate and key](https://linkerd.io/2.14/tasks/generate-certificates/#issuer-certificate-and-key)\n\n```bash\nstep certificate create identity.linkerd.cluster.local issuer.crt issuer.key \\\n--profile intermediate-ca \\\n--not-after 8760h \\\n--no-password \\\n--insecure \\\n--ca ca.crt \\\n--ca-key ca.key\n```\n\n## [Passing the certificates to Linkerd](https://linkerd.io/2.14/tasks/generate-certificates/#passing-the-certificates-to-linkerd)\n\nDeploy CRDs\n\n```bash\n# first, install the Linkerd CRDs\nlinkerd install --crds | kubectl apply -f -\n```\n\n[Helm install procedure for stable releases](https://linkerd.io/2.14/tasks/install-helm/)\n\n```bash\n# To add the repo for Linkerd stable releases:\nhelm repo add linkerd https://helm.linkerd.io/stable\n\n# To add the repo for Linkerd edge releases:\n# helm repo add linkerd-edge https://helm.linkerd.io/edge\n```\n\nCreate namespace for linkerd\n\n```bash\nkubectl create namespace linkerd\n```\n\nThen install the linkerd-control-plane chart:\n\n```bash\n# Run from .tmp directory where the certificates are stored\nhelm install linkerd-control-plane -n linkerd \\\n  --set-file identityTrustAnchorsPEM=ca.crt \\\n  --set-file identity.issuer.tls.crtPEM=issuer.crt \\\n  --set-file identity.issuer.tls.keyPEM=issuer.key \\\n  linkerd/linkerd-control-plane\n```\n\nValidation\n\n```bash\n$ kubectl get pods -n linkerd  \nNAME                                      READY   STATUS    RESTARTS   AGE\nlinkerd-destination-8c6d849c9-prlv8       4/4     Running   0          98s\nlinkerd-identity-7f66cb5b5c-sbg5p         2/2     Running   0          98s\nlinkerd-proxy-injector-5bdfcf77dd-9mhzg   2/2     Running   0          98s\n```\n\n```bash\n$ linkerd check\n.\n.\nStatus check results are √\n```\n\n## Install Demo App\n\nInstall the demo app\n\n```bash\n# curl --proto '=https' --tlsv1.2 -sSfL https://run.linkerd.io/emojivoto.yml > emojivoto.yaml\ncurl --proto '=https' --tlsv1.2 -sSfL https://run.linkerd.io/emojivoto.yml \\\n  | kubectl apply -f -\n```\n\nValidate\n\n```bash\n$ kubectl get pods -n emojivoto\nNAME                        READY   STATUS    RESTARTS   AGE\nemoji-68cdd48fc7-kvg6f      1/1     Running   0          54s\nvote-bot-85c88b944d-chzkz   1/1     Running   0          54s\nvoting-5b7f854444-v2vgh     1/1     Running   0          54s\nweb-679ccff67b-wdxs8        1/1     Running   0          54s\n\n# Port forward\n$ kubectl -n emojivoto port-forward svc/web-svc 8080:80\n\n$ curl -I localhost:8080                 \nHTTP/1.1 200 OK\nContent-Type: text/html\nDate: Sat, 13 Jan 2024 13:34:44 GMT\nContent-Length: 560\n```\n\nWith Emoji installed and running, we’re ready to mesh it\n\n```bash\nkubectl get -n emojivoto deploy -o yaml \\\n  | linkerd inject - \\\n  | kubectl apply -f -\n```\n\nValidate everything is working as expected. Note the two containers per pod.\n\n```bash\n$ kubectl get pods -n emojivoto\nNAME                       READY   STATUS    RESTARTS   AGE\nemoji-9f6758b4d-z5h6v      2/2     Running   0          2m45s\nvote-bot-db7d9c4d9-sspcl   2/2     Running   0          2m45s\nvoting-5d66f899b7-fvb8q    2/2     Running   0          2m45s\nweb-8559b97f7c-sbfw2       2/2     Running   0          2m45s\n\n# Validate everything is working as expected\n# After a day\n$ linkerd -n emojivoto check --proxy\n.\n.\nStatus check results are √\n```\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_052__local__kind__linkerd_with_custom_certs/ca.crt",
    "content": "-----BEGIN CERTIFICATE-----\n.\n.\n-----END CERTIFICATE-----\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_052__local__kind__linkerd_with_custom_certs/ca.key",
    "content": "-----BEGIN EC PRIVATE KEY-----\n.\n.\n-----END EC PRIVATE KEY-----\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_052__local__kind__linkerd_with_custom_certs/issuer.crt",
    "content": "-----BEGIN CERTIFICATE-----\n.\n.\n-----END CERTIFICATE-----\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_052__local__kind__linkerd_with_custom_certs/issuer.key",
    "content": "-----BEGIN EC PRIVATE KEY-----\n.\n.\n-----END EC PRIVATE KEY-----\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_053__local__kind__linkerd_auto_rotate_control_plane_TLS_credentials/ReadMe.md",
    "content": "\n# Automatically Rotating Control Plane TLS Credentials\n\n[linkerd.io » Automatically Rotating Control Plane TLS Credentials](https://linkerd.io/2.14/tasks/automatically-rotating-control-plane-tls-credentials)\n\n## Pre-Requisite\n\nIn Linkerd's architecture:\n\n- **Trust Anchor Certificate**: Serves as the root certificate, establishing the fundamental trust level for the entire service mesh. It's the base against which all other certificates are validated.\n\n- **Issuer Certificate**: Specific to each cluster, this certificate issues and manages the per-proxy TLS certificates. It plays a key role in automating certificate management and ensuring security within the mesh.\n\n- **Per-Proxy TLS Certificates**: Individual certificates for each proxy, essential for secure, authenticated mTLS communication between services within the mesh. They enable each service to verify the identity of others.\n\n## Create cluster using kind\n\n- Create cluster using kind\n\n```bash\nkind create cluster\n```\n\n## [Install cert-manager](https://cert-manager.io/docs/installation/)\n\n```bash\nkubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.13.3/cert-manager.yaml\n```\n\n## Create namespace for linkerd\n\n```bash\nkubectl create namespace linkerd\n```\n\n## [Save the signing key pair as a Secret](https://linkerd.io/2.14/tasks/automatically-rotating-control-plane-tls-credentials/#save-the-signing-key-pair-as-a-secret)\n\n```bash\nstep certificate create root.linkerd.cluster.local ca.crt ca.key \\\n--profile root-ca \\\n--not-after=87600h \\\n--no-password \\\n--insecure &&\n  kubectl create secret tls \\\n    linkerd-trust-anchor \\\n    --cert=ca.crt \\\n    --key=ca.key \\\n    --namespace=linkerd\n```\n\nValidate that secret is created\n\n```bash\nkubectl get secret -n linkerd                                                                                 \nNAME                   TYPE                DATA   AGE\nlinkerd-trust-anchor   kubernetes.io/tls   2      41s\n```\n\n## [Create an Issuer referencing the secret](https://linkerd.io/2.14/tasks/automatically-rotating-control-plane-tls-credentials/#create-an-issuer-referencing-the-secret)\n\n```bash\nkubectl apply -f issuer.yaml \n```\n\n## [Create a Certificate resource referencing the Issuer](https://linkerd.io/2.14/tasks/automatically-rotating-control-plane-tls-credentials/#create-a-certificate-resource-referencing-the-issuer)\n\n```bash\nkubectl apply -f certificate.yaml\n```\n\nValidate the secret created\n\n```bash\nkubectl get secret linkerd-identity-issuer -o yaml -n linkerd\n```\n\n## [Using these credentials with a Helm installation](https://linkerd.io/2.14/tasks/automatically-rotating-control-plane-tls-credentials/#using-these-credentials-with-a-helm-installation)\n\nInstall CRDs first\n\n```bash\nhelm install linkerd-crds linkerd/linkerd-crds \\\n-n linkerd \\\n--create-namespace\n```\n\n```bash\nhelm install linkerd-control-plane -n linkerd \\\n  --set-file identityTrustAnchorsPEM=ca.crt \\\n  --set identity.issuer.scheme=kubernetes.io/tls \\\n  linkerd/linkerd-control-plane\n```\n\n## [Observing the update process](https://linkerd.io/2.14/tasks/automatically-rotating-control-plane-tls-credentials/#observing-the-update-process)\n\n```bash\nkubectl get events --field-selector reason=IssuerUpdated -n linkerd\n```\n\n- After 4 hours and 12 mins\n\n```bash\n$ kubectl get events --field-selector reason=IssuerUpdated -n linkerd\nLAST SEEN   TYPE     REASON          OBJECT                        MESSAGE\n4h12m       Normal   IssuerUpdated   deployment/linkerd-identity   Updated identity issuer\n\n$ kubectl describe certificate linkerd-identity-issuer -n linkerd\nName:         linkerd-identity-issuer\nNamespace:    linkerd\nAPI Version:  cert-manager.io/v1\nKind:         Certificate\n.\nSpec:\n  Common Name:  identity.linkerd.cluster.local\n  Dns Names:\n    identity.linkerd.cluster.local\n  Duration:  1h0m0s\n  Is CA:     true\n  Issuer Ref:\n    Kind:  Issuer\n    Name:  linkerd-trust-anchor\n  Private Key:\n    Algorithm:   ECDSA\n  Renew Before:  5m0s\n  Secret Name:   linkerd-identity-issuer\n  Usages:\n    cert sign\n    crl sign\n    server auth\n    client auth\nStatus:\n  Conditions:\n    Last Transition Time:  2024-01-16T16:09:50Z\n    Message:               Certificate is up to date and has not expired\n    Observed Generation:   1\n    Reason:                Ready\n    Status:                True\n    Type:                  Ready\n  Not After:               2024-01-16T17:09:50Z\n  Not Before:              2024-01-16T16:09:50Z\n  Renewal Time:            2024-01-16T17:04:50Z\n  Revision:                3\n\n$ kubectl get certificate -n linkerd                                 \nNAME                      READY   SECRET                    AGE\nlinkerd-identity-issuer   True    linkerd-identity-issuer   6h1m\n\n\n$ kubectl describe certificate linkerd-identity-issuer -n linkerd\nName:         linkerd-identity-issuer\nNamespace:    linkerd\nAPI Version:  cert-manager.io/v1\nKind:         Certificate\n.\nSpec:\n  Common Name:  identity.linkerd.cluster.local\n  Dns Names:\n    identity.linkerd.cluster.local\n  Duration:  1h0m0s\n  Is CA:     true\n  Issuer Ref:\n    Kind:  Issuer\n    Name:  linkerd-trust-anchor\n  Private Key:\n    Algorithm:   ECDSA\n  Renew Before:  5m0s\n  Secret Name:   linkerd-identity-issuer\n  Usages:\n    cert sign\n    crl sign\n    server auth\n    client auth\nStatus:\n  Conditions:\n    Message:               Certificate is up to date and has not expired\n    Observed Generation:   1\n    Reason:                Ready\n    Status:                True\n    Type:                  Ready\n  Not After:               2024-01-16T18:04:50Z\n  Not Before:              2024-01-16T17:04:50Z\n  Renewal Time:            2024-01-16T17:59:50Z\n  Revision:                4\n.\nEvents:\n  Type    Reason     Age                    From                                       Message\n  ----    ------     ----                   ----                                       -------\n  Normal  Issuing    9m15s (x4 over 6h6m)   cert-manager-certificates-issuing          The certificate has been successfully issued\n  Normal  Reused     9m15s (x3 over 5h11m)  cert-manager-certificates-key-manager      Reusing private key stored in existing Secret resource \"linkerd-identity-issuer\"\n  Normal  Issuing    9m15s                  cert-manager-certificates-trigger          Renewing certificate as renewal was scheduled at 2024-01-16 17:04:50 +0000 UTC\n  Normal  Requested  9m15s                  cert-manager-certificates-request-manager  Created new CertificateRequest resource \"linkerd-identity-issuer-4\"\n```\n\n## Validate installation\n\n```bash\n$ linkerd check\n.\nStatus check results are √\n\n$ linkerd check | grep \"‼\"         \n‼ issuer cert is valid for at least 60 days\n```\n\n## Install Demo App\n\nInstall the demo app\n\n```bash\n# curl --proto '=https' --tlsv1.2 -sSfL https://run.linkerd.io/emojivoto.yml > emojivoto.yaml\ncurl --proto '=https' --tlsv1.2 -sSfL https://run.linkerd.io/emojivoto.yml \\\n  | kubectl apply -f -\n```\n\nValidate\n\n```bash\n$ kubectl get pods -n emojivoto\nNAME                        READY   STATUS    RESTARTS   AGE\nemoji-68cdd48fc7-kvg6f      1/1     Running   0          54s\nvote-bot-85c88b944d-chzkz   1/1     Running   0          54s\nvoting-5b7f854444-v2vgh     1/1     Running   0          54s\nweb-679ccff67b-wdxs8        1/1     Running   0          54s\n\n# Port forward\n$ kubectl -n emojivoto port-forward svc/web-svc 8080:80\n\n$ curl -I localhost:8080                 \nHTTP/1.1 200 OK\nContent-Type: text/html\nDate: Sat, 13 Jan 2024 13:34:44 GMT\nContent-Length: 560\n```\n\nWith Emoji installed and running, we’re ready to mesh it\n\n```bash\nkubectl get -n emojivoto deploy -o yaml \\\n  | linkerd inject - \\\n  | kubectl apply -f -\n```\n\nValidate everything is working as expected. Note the two containers per pod.\n\n```bash\n$ kubectl get pods -n emojivoto\nNAME                       READY   STATUS    RESTARTS   AGE\nemoji-9f6758b4d-z5h6v      2/2     Running   0          2m45s\nvote-bot-db7d9c4d9-sspcl   2/2     Running   0          2m45s\nvoting-5d66f899b7-fvb8q    2/2     Running   0          2m45s\nweb-8559b97f7c-sbfw2       2/2     Running   0          2m45s\n\n# Validate everything is working as expected\n# After a day\n$ linkerd -n emojivoto check --proxy\n.\n.\n× issuer cert is within its validity period\n    issuer certificate is not valid anymore. Expired on 2024-01-18T01:33:17Z\n    see https://linkerd.io/2.14/checks/#l5d-identity-issuer-cert-is-time-valid for hints\n\nStatus check results are ×\n```\n\n## Troubleshooting the error\n\nRecreate the issuer certificate\n\n```bash\nkubectl delete -f certificate.yaml\n```\n\n```bash\nkubectl apply -f certificate.yaml\n```\n\nStatus checks\n\n```bash\n$ linkerd -n emojivoto check --proxy\n.\n.\nStatus check results are √\n```\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_053__local__kind__linkerd_auto_rotate_control_plane_TLS_credentials/ca.crt",
    "content": "-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_053__local__kind__linkerd_auto_rotate_control_plane_TLS_credentials/ca.key",
    "content": "-----BEGIN EC PRIVATE KEY-----\n...\n-----END EC PRIVATE KEY-----\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_053__local__kind__linkerd_auto_rotate_control_plane_TLS_credentials/certificate.yaml",
    "content": "apiVersion: cert-manager.io/v1\nkind: Certificate\nmetadata:\n  name: linkerd-identity-issuer\n  namespace: linkerd\nspec:\n  secretName: linkerd-identity-issuer\n  # Error from server (NotAcceptable): error when creating \"certificate.yaml\": admission webhook \"webhook.cert-manager.io\" denied the request: [spec.duration: Invalid value: 3m0s: certificate duration must be greater than 1h0m0s, spec.renewBefore: Invalid value: 1m0s: certificate renewBefore must be greater than 5m0s]\n  duration: 1h\n  # duration: 48h\n  # renewBefore: 25h\n  renewBefore: 5m  \n  issuerRef:\n    name: linkerd-trust-anchor\n    kind: Issuer\n  commonName: identity.linkerd.cluster.local\n  dnsNames:\n  - identity.linkerd.cluster.local\n  isCA: true\n  privateKey:\n    algorithm: ECDSA\n  usages:\n  - cert sign\n  - crl sign\n  - server auth\n  - client auth"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_053__local__kind__linkerd_auto_rotate_control_plane_TLS_credentials/issuer.yaml",
    "content": "apiVersion: cert-manager.io/v1\nkind: Issuer\nmetadata:\n  name: linkerd-trust-anchor\n  namespace: linkerd\nspec:\n  ca:\n    secretName: linkerd-trust-anchor"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_054__local__kind__linkerd_auto_rotate_webhook_tls_credentials/ReadMe.md",
    "content": "# [Automatically Rotating Webhook TLS Credentials](https://linkerd.io/2.14/tasks/automatically-rotating-webhook-tls-credentials)\n\n## Create cluster using kind\n\n- Create cluster using kind\n\n```bash\nkind create cluster\n```\n\n## [Install cert-manager](https://cert-manager.io/docs/installation/)\n\n```bash\nkubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.13.3/cert-manager.yaml\n```\n\n## Create namespace for linkerd\n\n```bash\nkubectl create namespace linkerd\n```\n\n```bash\n# control plane core\nkubectl create namespace linkerd\nkubectl label namespace linkerd \\\n  linkerd.io/is-control-plane=true \\\n  config.linkerd.io/admission-webhooks=disabled \\\n  linkerd.io/control-plane-ns=linkerd\nkubectl annotate namespace linkerd linkerd.io/inject=disabled\n\n# viz (ignore if not using the viz extension)\nkubectl create namespace linkerd-viz\nkubectl label namespace linkerd-viz linkerd.io/extension=viz\n```\n\n## [Save the signing key pair as a Secret](https://linkerd.io/2.14/tasks/automatically-rotating-webhook-tls-credentials/index.html#save-the-signing-key-pair-as-a-secret)\n\n```bash\nstep certificate create webhook.linkerd.cluster.local ca.crt ca.key \\\n  --profile root-ca --no-password --insecure --san webhook.linkerd.cluster.local\n\nkubectl create secret tls webhook-issuer-tls --cert=ca.crt --key=ca.key --namespace=linkerd\n\n# ignore if not using the viz extension\nkubectl create secret tls webhook-issuer-tls --cert=ca.crt --key=ca.key --namespace=linkerd-viz\n```\n\n## [Create Issuers referencing the secrets](https://linkerd.io/2.14/tasks/automatically-rotating-webhook-tls-credentials/index.html#create-issuers-referencing-the-secrets)\n\n```bash\nkubectl apply -f webhook-issuer.yaml \nkubectl apply -f webhook-issuer-viz.yaml \n```\n\n## [Issuing certificates and writing them to secrets](https://linkerd.io/2.14/tasks/automatically-rotating-webhook-tls-credentials/index.html#issuing-certificates-and-writing-them-to-secrets)\n\n```bash\nkubectl apply -f certificate-linkerd-proxy-injector.yaml\nkubectl apply -f certificate-linkerd-sp-validator.yaml\nkubectl apply -f certificate-tap.yaml\nkubectl apply -f certificate-linkerd-proxy-validator.yaml\nkubectl apply -f certificate-linkerd-tap-injector.yaml\n```\n\n## [Using these credentials with CLI installation](https://linkerd.io/2.14/tasks/automatically-rotating-webhook-tls-credentials/index.html#using-these-credentials-with-cli-installation)\n\n```bash\n# first, install the Linkerd CRDs\nlinkerd install --crds | kubectl apply -f -\n\n# install the Linkerd control plane, using the credentials\n# from cert-manager\nlinkerd install \\\n  --set policyValidator.externalSecret=true \\\n  --set-file policyValidator.caBundle=ca.crt \\\n  --set proxyInjector.externalSecret=true \\\n  --set-file proxyInjector.caBundle=ca.crt \\\n  --set profileValidator.externalSecret=true \\\n  --set-file profileValidator.caBundle=ca.crt \\\n  | kubectl apply -f -\n\n# ignore if not using the viz extension\nlinkerd viz install \\\n  --set tap.externalSecret=true \\\n  --set-file tap.caBundle=ca.crt \\\n  --set tapInjector.externalSecret=true \\\n  --set-file tapInjector.caBundle=ca.crt \\\n  | kubectl apply -f -\n```\n\n## Validation\n\n```bash\n$ linkerd check\n.\n.\nStatus check results are √\n```\n\n## Install Demo App\n\nInstall the demo app\n\n```bash\n# curl --proto '=https' --tlsv1.2 -sSfL https://run.linkerd.io/emojivoto.yml > emojivoto.yaml\ncurl --proto '=https' --tlsv1.2 -sSfL https://run.linkerd.io/emojivoto.yml \\\n  | kubectl apply -f -\n```\n\nValidate\n\n```bash\n$ kubectl get pods -n emojivoto\nNAME                        READY   STATUS    RESTARTS   AGE\nemoji-68cdd48fc7-kvg6f      1/1     Running   0          54s\nvote-bot-85c88b944d-chzkz   1/1     Running   0          54s\nvoting-5b7f854444-v2vgh     1/1     Running   0          54s\nweb-679ccff67b-wdxs8        1/1     Running   0          54s\n\n# Port forward\n$ kubectl -n emojivoto port-forward svc/web-svc 8080:80\n\n$ curl -I localhost:8080                 \nHTTP/1.1 200 OK\nContent-Type: text/html\nDate: Sat, 13 Jan 2024 13:34:44 GMT\nContent-Length: 560\n```\n\nWith Emoji installed and running, we’re ready to mesh it\n\n```bash\nkubectl get -n emojivoto deploy -o yaml \\\n  | linkerd inject - \\\n  | kubectl apply -f -\n```\n\nValidate everything is working as expected. Note the two containers per pod.\n\n```bash\n$ kubectl get pods -n emojivoto\nNAME                       READY   STATUS    RESTARTS   AGE\nemoji-9f6758b4d-z5h6v      2/2     Running   0          2m45s\nvote-bot-db7d9c4d9-sspcl   2/2     Running   0          2m45s\nvoting-5d66f899b7-fvb8q    2/2     Running   0          2m45s\nweb-8559b97f7c-sbfw2       2/2     Running   0          2m45s\n\n# Validate everything is working as expected\n# After a day\n$ linkerd -n emojivoto check --proxy\n.\n.\nStatus check results are √\n```\n\nCheck the dashboard\n\n```bash\nlinkerd viz dashboard &\n```\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_054__local__kind__linkerd_auto_rotate_webhook_tls_credentials/ca.crt",
    "content": "-----BEGIN CERTIFICATE-----\n.\n.\n\n-----END CERTIFICATE-----\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_054__local__kind__linkerd_auto_rotate_webhook_tls_credentials/ca.key",
    "content": "-----BEGIN EC PRIVATE KEY-----\n.\n.\n.\n-----END EC PRIVATE KEY-----\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_054__local__kind__linkerd_auto_rotate_webhook_tls_credentials/certificate-linkerd-proxy-injector.yaml",
    "content": "apiVersion: cert-manager.io/v1\nkind: Certificate\nmetadata:\n  name: linkerd-proxy-injector\n  namespace: linkerd\nspec:\n  secretName: linkerd-proxy-injector-k8s-tls\n  duration: 24h\n  renewBefore: 1h\n  issuerRef:\n    name: webhook-issuer\n    kind: Issuer\n  commonName: linkerd-proxy-injector.linkerd.svc\n  dnsNames:\n  - linkerd-proxy-injector.linkerd.svc\n  isCA: false\n  privateKey:\n    algorithm: ECDSA\n  usages:\n  - server auth"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_054__local__kind__linkerd_auto_rotate_webhook_tls_credentials/certificate-linkerd-proxy-validator.yaml",
    "content": "apiVersion: cert-manager.io/v1\nkind: Certificate\nmetadata:\n  name: linkerd-policy-validator\n  namespace: linkerd\nspec:\n  secretName: linkerd-policy-validator-k8s-tls\n  duration: 24h\n  renewBefore: 1h\n  issuerRef:\n    name: webhook-issuer\n    kind: Issuer\n  commonName: linkerd-policy-validator.linkerd.svc\n  dnsNames:\n  - linkerd-policy-validator.linkerd.svc\n  isCA: false\n  privateKey:\n    algorithm: ECDSA\n    encoding: PKCS8\n  usages:\n  - server auth"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_054__local__kind__linkerd_auto_rotate_webhook_tls_credentials/certificate-linkerd-sp-validator.yaml",
    "content": "apiVersion: cert-manager.io/v1\nkind: Certificate\nmetadata:\n  name: linkerd-sp-validator\n  namespace: linkerd\nspec:\n  secretName: linkerd-sp-validator-k8s-tls\n  duration: 24h\n  renewBefore: 1h\n  issuerRef:\n    name: webhook-issuer\n    kind: Issuer\n  commonName: linkerd-sp-validator.linkerd.svc\n  dnsNames:\n  - linkerd-sp-validator.linkerd.svc\n  isCA: false\n  privateKey:\n    algorithm: ECDSA\n  usages:\n  - server auth\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_054__local__kind__linkerd_auto_rotate_webhook_tls_credentials/certificate-linkerd-tap-injector.yaml",
    "content": "# ignore if not using the viz extension\napiVersion: cert-manager.io/v1\nkind: Certificate\nmetadata:\n  name: linkerd-tap-injector\n  namespace: linkerd-viz\nspec:\n  secretName: tap-injector-k8s-tls\n  duration: 24h\n  renewBefore: 1h\n  issuerRef:\n    name: webhook-issuer\n    kind: Issuer\n  commonName: tap-injector.linkerd-viz.svc\n  dnsNames:\n  - tap-injector.linkerd-viz.svc\n  isCA: false\n  privateKey:\n    algorithm: ECDSA\n  usages:\n  - server auth"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_054__local__kind__linkerd_auto_rotate_webhook_tls_credentials/certificate-tap.yaml",
    "content": "# ignore if not using the viz extension\napiVersion: cert-manager.io/v1\nkind: Certificate\nmetadata:\n  name: tap\n  namespace: linkerd-viz\nspec:\n  secretName: tap-k8s-tls\n  duration: 24h\n  renewBefore: 1h\n  issuerRef:\n    name: webhook-issuer\n    kind: Issuer\n  commonName: tap.linkerd-viz.svc\n  dnsNames:\n  - tap.linkerd-viz.svc\n  isCA: false\n  privateKey:\n    algorithm: ECDSA\n  usages:\n  - server auth"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_054__local__kind__linkerd_auto_rotate_webhook_tls_credentials/webhook-issuer-viz.yaml",
    "content": "# ignore if not using the viz extension\napiVersion: cert-manager.io/v1\nkind: Issuer\nmetadata:\n  name: webhook-issuer\n  namespace: linkerd-viz\nspec:\n  ca:\n    secretName: webhook-issuer-tls"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_054__local__kind__linkerd_auto_rotate_webhook_tls_credentials/webhook-issuer.yaml",
    "content": "apiVersion: cert-manager.io/v1\nkind: Issuer\nmetadata:\n  name: webhook-issuer\n  namespace: linkerd\nspec:\n  ca:\n    secretName: webhook-issuer-tls"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_055__aws_eks__gcp_gke___istio_getting_started/ReadMe.md",
    "content": "# [Getting Started with Istio and Kubernetes Gateway API](https://istio.io/latest/docs/setup/additional-setup/getting-started/)\n\n## Objective\n\nFollow these steps to get started with Istio on AWS EKS cluster:\n\n- Download and install Istio\n- Deploy the sample application\n- Open the application to outside traffic\n- View the dashboard\n\n## PRE-REQUISITES\n\n```bash\nbrew install eksctl\n```\n\n## [Download](https://istio.io/latest/docs/setup/getting-started/#download)\n\n```bash\ncurl -L https://istio.io/downloadIstio | sh -\n```\n\n```bash\n$ ls istio-1.20.2                 \nLICENSE       README.md     bin           manifest.yaml manifests     samples       tools\n\n$ cat ~/.zshrc | grep istio         \n## For istioctl\nexport PATH=\"$PATH:$HOME/Downloads/istio-1.20.2/bin\"\n\n$ istioctl version  \nclient version: 1.20.2\ncontrol plane version: 1.20.2\ndata plane version: 1.20.2 (2 proxies)\n```\n\n## [Install istio](https://istio.io/latest/docs/setup/getting-started/#install)\n\n```bash\nistioctl install --set profile=demo -y\n\n```\n\nAdd a namespace label to instruct Istio to automatically inject Envoy sidecar proxies when you deploy your application later:\n\n```bash\nkubectl label namespace default istio-injection=enabled\n```\n\n## [Deploy sample application](https://istio.io/latest/docs/setup/getting-started/#bookinfo)\n\n```bash\nkubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.20/samples/bookinfo/platform/kube/bookinfo.yaml\n```\n\nThe application will start. As each pod becomes ready, the Istio sidecar will be deployed along with it.\n\n```bash\n$ kubectl get services\nNAME          TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE\ndetails       ClusterIP   10.96.32.194    <none>        9080/TCP   6m26s\nkubernetes    ClusterIP   10.96.0.1       <none>        443/TCP    15m\nproductpage   ClusterIP   10.96.224.100   <none>        9080/TCP   6m26s\nratings       ClusterIP   10.96.44.70     <none>        9080/TCP   6m26s\nreviews       ClusterIP   10.96.181.121   <none>        9080/TCP   6m26s\n```\n\n```bash\n$ kubectl get pods\nNAME                             READY   STATUS    RESTARTS   AGE\ndetails-v1-698d88b-fm857         2/2     Running   0          8m4s\nproductpage-v1-675fc69cf-vc7f7   2/2     Running   0          8m4s\nratings-v1-6484c4d9bb-sns9h      2/2     Running   0          8m4s\nreviews-v1-5b5d6494f4-4l6xv      2/2     Running   0          8m4s\nreviews-v2-5b667bcbf8-pnjf8      2/2     Running   0          8m4s\nreviews-v3-5b9bd44f4-k7rmx       2/2     Running   0          8m4s\n```\n\nVerify everything is working correctly up to this point. Run this command to see if the app is running inside the cluster and serving HTML pages by checking for the page title in the response:\n\n```bash\n$ kubectl exec \"$(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}')\" -c ratings -- curl -sS productpage:9080/productpage | grep -o \"<title>.*</title>\"\n<title>Simple Bookstore App</title>\n```\n\n## [Open the application to outside traffic](https://istio.io/latest/docs/setup/getting-started/#ip)\n\n```bash\nkubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.20/samples/bookinfo/networking/bookinfo-gateway.yaml\n```\n\n```bash\n$ istioctl analyze\n\n✔ No validation issues found when analyzing namespace: default.\n```\n\n## [Determining the ingress IP and ports](https://istio.io/latest/docs/setup/getting-started/#determining-the-ingress-ip-and-ports)\n\nFollow these instructions to set the INGRESS_HOST and INGRESS_PORT variables for accessing the gateway\n\n```bash\nkubectl get svc istio-ingressgateway -n istio-system\n```\n\nChoose the right command as per the provider\n\n```bash\n## For AWS LB\nexport INGRESS_HOST=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].hostname}')\n## For GCP\nexport INGRESS_HOST=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].ip}')\n```\n\nSet the ingress IP and ports:\n\n```bash\nexport INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name==\"http2\")].port}')\nexport SECURE_INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name==\"https\")].port}')\n```\n\nSet GATEWAY_URL:\n\n```bash\nexport GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT\necho \"$GATEWAY_URL\"\n```\n\n[Verify external access](https://istio.io/latest/docs/setup/getting-started/#confirm)\n\nRun the following command to retrieve the external address of the Bookinfo application.\n\n```bash\necho \"http://$GATEWAY_URL/productpage\"\n```\n\nValidation\n\n```bash\n$ curl -I \"http://$GATEWAY_URL/productpage\"\nHTTP/1.1 200 OK\nserver: istio-envoy\ndate: Tue, 06 Feb 2024 12:55:56 GMT\ncontent-type: text/html; charset=utf-8\ncontent-length: 5289\nx-envoy-upstream-service-time: 122\n```\n\n## [View the dashboard](https://istio.io/latest/docs/setup/getting-started/#dashboard)\n\n```bash\n# Check OPTIONAL part if yu get any error\n# https://stackoverflow.com/questions/75758115/persistentvolumeclaim-is-stuck-waiting-for-a-volume-to-be-created-either-by-ex\nkubectl apply -f $HOME/Downloads/istio-1.20.2/samples/addons\n```\n\n### (OPTIONAL) AWS Specific\n\n[stackoverflow.com » PersistentVolumeClaim is stuck 'waiting for a volume to be created, either by external provisioner \"ebs.csi.aws.com\"' on new AWS EKS cluster](https://stackoverflow.com/questions/75758115/persistentvolumeclaim-is-stuck-waiting-for-a-volume-to-be-created-either-by-ex)\n\n```bash\n eksctl utils associate-iam-oidc-provider --region=<region_code> --cluster=eks --approve \n\n2024-02-06 17:36:06 [ℹ]  will create IAM Open ID Connect provider for cluster \"eks\" in \"<region_code>\"\n2024-02-06 17:36:07 [✔]  created IAM Open ID Connect provider for cluster \"eks\" in \"<region_code>\"\n\n---\n\neksctl create iamserviceaccount \\\n  --region <region_code> \\\n  --name ebs-csi-controller-sa \\\n  --namespace kube-system \\\n  --cluster eks \\\n  --attach-policy-arn arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy \\\n  --approve \\\n  --role-only \\\n  --role-name AmazonEKS_EBS_CSI_DriverRole\n\n\neksctl create addon --name aws-ebs-csi-driver --cluster eks --service-account-role-arn arn:aws:iam::$(aws sts get-caller-identity --query Account --output text):role/AmazonEKS_EBS_CSI_DriverRole --force\n\n```\n\nAccess the Kiali dashboard.\n\n```bash\n# To see trace data, you must send requests to your service\nfor i in $(seq 1 100); do curl -s -o /dev/null \"http://$GATEWAY_URL/productpage\"; done\n\n```\n\n```bash\nistioctl dashboard kiali\n```\n\n## [Uninstall](https://istio.io/latest/docs/setup/additional-setup/getting-started/#uninstall)\n\n```bash\nkubectl delete -f $HOME/Downloads/istio-1.20.2/samples/addons\n# istioctl uninstall -y --purge # you might want to keep this for using in other tasks\n# For bookinfo cleanup refer - https://istio.io/latest/docs/examples/bookinfo/#cleanup\n```\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_055__aws_eks__gcp_gke___istio_getting_started/gateway.yaml",
    "content": "apiVersion: networking.istio.io/v1alpha3\nkind: Gateway\nmetadata:\n  name: bookinfo-gateway\nspec:\n  # The selector matches the ingress gateway pod labels.\n  # If you installed Istio using Helm following the standard documentation, this would be \"istio=ingress\"\n  selector:\n    istio: ingressgateway # use istio default controller\n  servers:\n  - port:\n      number: 8080\n      name: http\n      protocol: HTTP\n    hosts:\n    - \"*\"\n---\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_055__aws_eks__gcp_gke___istio_getting_started/virtualservice.yaml",
    "content": "apiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: bookinfo\nspec:\n  hosts:\n  - \"*\"\n  gateways:\n  - bookinfo-gateway\n  http:\n  - match:\n    - uri:\n        exact: /productpage\n    - uri:\n        prefix: /static\n    - uri:\n        exact: /login\n    - uri:\n        exact: /logout\n    - uri:\n        prefix: /api/v1/products\n    route:\n    - destination:\n        host: productpage\n        port:\n          number: 9080"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_056__aws_eks__gcp_gke__istio__request_routing/ReadMe.md",
    "content": "# [Request Routing](https://istio.io/latest/docs/tasks/traffic-management/request-routing/)\n\n## [Prequisite](https://istio.io/latest/docs/tasks/traffic-management/request-routing/#before-you-begin)\n\n[Deploying Bookinfo Application](https://istio.io/latest/docs/examples/bookinfo)\n\n```bash\nkubectl apply -f destination-rule-all.yaml \n```\n\nThis task shows you how to route requests dynamically to multiple versions of a microservice.\n\n[Route to version 1](https://istio.io/latest/docs/tasks/traffic-management/request-routing/#route-to-version-1)\n\n```bash\nkubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.20/samples/bookinfo/networking/virtual-service-all-v1.yaml\n```\n\nDisplay the defined routes with the following command:\n\n```bash\n# Make sure you have applied the destination rules before this\n$ kubectl get virtualservices -o yaml\n- apiVersion: networking.istio.io/v1beta1\n  kind: VirtualService\n  ...\n  spec:\n    hosts:\n    - details\n    http:\n    - route:\n      - destination:\n          host: details\n          subset: v1\n- apiVersion: networking.istio.io/v1beta1\n  kind: VirtualService\n  ...\n  spec:\n    hosts:\n    - productpage\n    http:\n    - route:\n      - destination:\n          host: productpage\n          subset: v1\n- apiVersion: networking.istio.io/v1beta1\n  kind: VirtualService\n  ...\n  spec:\n    hosts:\n    - ratings\n    http:\n    - route:\n      - destination:\n          host: ratings\n          subset: v1\n- apiVersion: networking.istio.io/v1beta1\n  kind: VirtualService\n  ...\n  spec:\n    hosts:\n    - reviews\n    http:\n    - route:\n      - destination:\n          host: reviews\n          subset: v1\n```\n\nYou have configured Istio to route to the v1 version of the Bookinfo microservices, most importantly the reviews service version 1.\n\nYou can easily test the new configuration by once again refreshing the /productpage of the Bookinfo app in your browser. Notice that the reviews part of the page displays with no rating stars, no matter how many times you refresh. This is because you configured Istio to route all traffic for the reviews service to the version reviews:v1 and this version of the service does not access the star ratings service.\n\n[Route based on user identity](https://istio.io/latest/docs/tasks/traffic-management/request-routing/#route-based-on-user-identity)\n\nNext, you will change the route configuration so that all traffic from a specific user is routed to a specific service version. In this case, all traffic from a user named Jason will be routed to the service reviews:v2.\n\n```bash\nkubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.20/samples/bookinfo/networking/virtual-service-reviews-test-v2.yaml\n```\n\n## Cleanup\n\n```bash\nkubectl delete -f virtual-service-all-v1.yaml\n```\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_056__aws_eks__gcp_gke__istio__request_routing/concepts.md",
    "content": "# [Traffic Management](https://istio.io/latest/docs/concepts/traffic-management/)\n\n## [Architecture](https://istio.io/latest/docs/ops/deployment/architecture/)\n\n## Virtual Service\n\nA virtual service lets you configure how requests are routed to a service within an Istio service mesh.\n\n[virtual-service-example](https://istio.io/latest/docs/concepts/traffic-management/#virtual-service-example)\n\nThe following virtual service routes requests to different versions of a service depending on whether the request comes from a particular user.\n\n```yaml\napiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: reviews\nspec:\n  hosts:\n  - reviews\n  http:\n  - match:\n    - headers:\n        end-user:\n          exact: jason\n    route:\n    - destination:\n        host: reviews\n        subset: v2\n  - route:\n    - destination:\n        host: reviews\n        subset: v3\n\n```\n\n## [Destination Rule](https://istio.io/latest/docs/concepts/traffic-management/#destination-rules)\n\nYou can think of virtual services as how you route your traffic to a given destination, and then you use destination rules to configure what happens to traffic for that destination. Destination rules are applied after virtual service routing rules are evaluated, so they apply to the traffic’s “real” destination.\n\nDestination rule example\n\nThe following example destination rule configures three different subsets for the my-svc destination service, with different load balancing policies:\n\n```yaml\napiVersion: networking.istio.io/v1alpha3\nkind: DestinationRule\nmetadata:\n  name: my-destination-rule\nspec:\n  host: my-svc\n  trafficPolicy:\n    loadBalancer:\n      simple: RANDOM\n  subsets:\n  - name: v1\n    labels:\n      version: v1\n  - name: v2\n    labels:\n      version: v2\n    trafficPolicy:\n      loadBalancer:\n        simple: ROUND_ROBIN\n  - name: v3\n    labels:\n      version: v3\n```\n\nEach subset is defined based on one or more labels, which in Kubernetes are key/value pairs that are attached to objects such as Pods. These labels are applied in the Kubernetes service’s deployment as metadata to identify different versions.\n\nAs well as defining subsets, this destination rule has both a default traffic policy for all subsets in this destination and a subset-specific policy that overrides it for just that subset. The default policy, defined above the subsets field, sets a simple random load balancer for the v1 and v3 subsets. In the v2 policy, a round-robin load balancer is specified in the corresponding subset’s field.\n\n## [Gateways](https://istio.io/latest/docs/concepts/traffic-management/#gateways)\n\nYou use a gateway to manage inbound and outbound traffic for your mesh, letting you specify which traffic you want to enter or leave the mesh. Gateway configurations are applied to standalone Envoy proxies that are running at the edge of the mesh, rather than sidecar Envoy proxies running alongside your service workloads.\n\n[Gateway Example](https://istio.io/latest/docs/concepts/traffic-management/#gateway-example)\n\nThe following example shows a possible gateway configuration for external HTTPS ingress traffic:\n\n```yaml\napiVersion: networking.istio.io/v1alpha3\nkind: Gateway\nmetadata:\n  name: ext-host-gwy\nspec:\n  selector:\n    app: my-gateway-controller\n  servers:\n  - port:\n      number: 443\n      name: https\n      protocol: HTTPS\n    hosts:\n    - ext-host.example.com\n    tls:\n      mode: SIMPLE\n      credentialName: ext-host-cert\n```\n\nThis gateway configuration lets HTTPS traffic from ext-host.example.com into the mesh on port 443, but doesn’t specify any routing for the traffic.\n\nTo specify routing and for the gateway to work as intended, you must also bind the gateway to a virtual service. You do this using the virtual service’s gateways field, as shown in the following example.\n\n```yaml\napiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: virtual-svc\nspec:\n  hosts:\n  - ext-host.example.com\n  gateways:\n  - ext-host-gwy\n```\n\n## [Service Entry](https://istio.io/latest/docs/concepts/traffic-management/#service-entries)\n\nYou use a service entry to add an entry to the service registry that Istio maintains internally. After you add the service entry, the Envoy proxies can send traffic to the service as if it was a service in your mesh.\n\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_056__aws_eks__gcp_gke__istio__request_routing/destination-rule-all.yaml",
    "content": "apiVersion: networking.istio.io/v1alpha3\nkind: DestinationRule\nmetadata:\n  name: productpage\nspec:\n  host: productpage\n  subsets:\n  - name: v1\n    labels:\n      version: v1\n---\napiVersion: networking.istio.io/v1alpha3\nkind: DestinationRule\nmetadata:\n  name: reviews\nspec:\n  host: reviews\n  subsets:\n  - name: v1\n    labels:\n      version: v1\n  - name: v2\n    labels:\n      version: v2\n  - name: v3\n    labels:\n      version: v3\n---\napiVersion: networking.istio.io/v1alpha3\nkind: DestinationRule\nmetadata:\n  name: ratings\nspec:\n  host: ratings\n  subsets:\n  - name: v1\n    labels:\n      version: v1\n  - name: v2\n    labels:\n      version: v2\n  - name: v2-mysql\n    labels:\n      version: v2-mysql\n  - name: v2-mysql-vm\n    labels:\n      version: v2-mysql-vm\n---\napiVersion: networking.istio.io/v1alpha3\nkind: DestinationRule\nmetadata:\n  name: details\nspec:\n  host: details\n  subsets:\n  - name: v1\n    labels:\n      version: v1\n  - name: v2\n    labels:\n      version: v2\n---\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_056__aws_eks__gcp_gke__istio__request_routing/virtual-service-all-v1.yaml",
    "content": "apiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: productpage\nspec:\n  hosts:\n  - productpage\n  http:\n  - route:\n    - destination:\n        host: productpage\n        subset: v1\n---\napiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: reviews\nspec:\n  hosts:\n  - reviews\n  http:\n  - route:\n    - destination:\n        host: reviews\n        subset: v1\n---\napiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: ratings\nspec:\n  hosts:\n  - ratings\n  http:\n  - route:\n    - destination:\n        host: ratings\n        subset: v1\n---\napiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: details\nspec:\n  hosts:\n  - details\n  http:\n  - route:\n    - destination:\n        host: details\n        subset: v1\n---\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_056__aws_eks__gcp_gke__istio__request_routing/virtual-service-reviews-test-v2.yaml",
    "content": "apiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: reviews\nspec:\n  hosts:\n    - reviews\n  http:\n  - match:\n    - headers:\n        end-user:\n          exact: jason\n    route:\n    - destination:\n        host: reviews\n        subset: v2\n  - route:\n    - destination:\n        host: reviews\n        subset: v1\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_057__aws_eks__gcp_gke__istio__fault_injection__http_delay__http_abort/ReadMe.md",
    "content": "# [Fault Injection](https://istio.io/latest/docs/tasks/traffic-management/fault-injection)\n\n## [Traffic Management](https://istio.io/latest/docs/concepts/traffic-management/)\n\n## [Pre-requisite](https://istio.io/latest/docs/tasks/traffic-management/fault-injection/#before-you-begin)\n\n```bash\nkubectl apply -f destination-rule-all.yaml\nkubectl apply -f  virtual-service-all-v1.yaml\nkubectl apply -f virtual-service-reviews-test-v2.yaml\n```\n\nWith the above configuration, this is how requests flow:\n\n- productpage → reviews:v2 → ratings (only for user jason)\n- productpage → reviews:v1 (for everyone else)\n\n## [Injecting an HTTP delay fault](https://istio.io/latest/docs/tasks/traffic-management/fault-injection/#injecting-an-http-delay-fault)\n\nTo test the Bookinfo application microservices for resiliency, inject a 7s delay between the reviews:v2 and ratings microservices for user jason. This test will uncover a bug that was intentionally introduced into the Bookinfo app.\n\nNote that the reviews:v2 service has a 10s hard-coded connection timeout for calls to the ratings service. Even with the 7s delay that you introduced, you still expect the end-to-end flow to continue without any errors\n\n```bash\nkubectl apply -f virtual-service-ratings-test-delay.yaml \n```\n\n## [Testing the delay configuration](https://istio.io/latest/docs/tasks/traffic-management/fault-injection/#testing-the-delay-configuration)\n\n## [Understanding what happened](https://istio.io/latest/docs/tasks/traffic-management/fault-injection/#understanding-what-happened)\n\n## [Injecting an HTTP abort fault](https://istio.io/latest/docs/tasks/traffic-management/fault-injection/#injecting-an-http-abort-fault)\n\n```bash\nkubectl apply -f virtual-service-ratings-test-abort.yaml \n```\n\n## [Testing the abort configuration](https://istio.io/latest/docs/tasks/traffic-management/fault-injection/#testing-the-abort-configuration)\n\n## [Cleanup](https://istio.io/latest/docs/tasks/traffic-management/fault-injection/#cleanup)\n\n```bash\nkubectl delete -f virtual-service-all-v1.yaml \n```\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_057__aws_eks__gcp_gke__istio__fault_injection__http_delay__http_abort/destination-rule-all.yaml",
    "content": "apiVersion: networking.istio.io/v1alpha3\nkind: DestinationRule\nmetadata:\n  name: productpage\nspec:\n  host: productpage\n  subsets:\n  - name: v1\n    labels:\n      version: v1\n---\napiVersion: networking.istio.io/v1alpha3\nkind: DestinationRule\nmetadata:\n  name: reviews\nspec:\n  host: reviews\n  subsets:\n  - name: v1\n    labels:\n      version: v1\n  - name: v2\n    labels:\n      version: v2\n  - name: v3\n    labels:\n      version: v3\n---\napiVersion: networking.istio.io/v1alpha3\nkind: DestinationRule\nmetadata:\n  name: ratings\nspec:\n  host: ratings\n  subsets:\n  - name: v1\n    labels:\n      version: v1\n  - name: v2\n    labels:\n      version: v2\n  - name: v2-mysql\n    labels:\n      version: v2-mysql\n  - name: v2-mysql-vm\n    labels:\n      version: v2-mysql-vm\n---\napiVersion: networking.istio.io/v1alpha3\nkind: DestinationRule\nmetadata:\n  name: details\nspec:\n  host: details\n  subsets:\n  - name: v1\n    labels:\n      version: v1\n  - name: v2\n    labels:\n      version: v2\n---\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_057__aws_eks__gcp_gke__istio__fault_injection__http_delay__http_abort/virtual-service-all-v1.yaml",
    "content": "apiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: productpage\nspec:\n  hosts:\n  - productpage\n  http:\n  - route:\n    - destination:\n        host: productpage\n        subset: v1\n---\napiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: reviews\nspec:\n  hosts:\n  - reviews\n  http:\n  - route:\n    - destination:\n        host: reviews\n        subset: v1\n---\napiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: ratings\nspec:\n  hosts:\n  - ratings\n  http:\n  - route:\n    - destination:\n        host: ratings\n        subset: v1\n---\napiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: details\nspec:\n  hosts:\n  - details\n  http:\n  - route:\n    - destination:\n        host: details\n        subset: v1\n---\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_057__aws_eks__gcp_gke__istio__fault_injection__http_delay__http_abort/virtual-service-ratings-test-abort.yaml",
    "content": "apiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: ratings\nspec:\n  hosts:\n  - ratings\n  http:\n  - match:\n    - headers:\n        end-user:\n          exact: jason\n    fault:\n      abort:\n        percentage:\n          value: 100.0\n        httpStatus: 500\n    route:\n    - destination:\n        host: ratings\n        subset: v1\n  - route:\n    - destination:\n        host: ratings\n        subset: v1\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_057__aws_eks__gcp_gke__istio__fault_injection__http_delay__http_abort/virtual-service-ratings-test-delay.yaml",
    "content": "apiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: ratings\nspec:\n  hosts:\n  - ratings\n  http:\n  - match:\n    - headers:\n        end-user:\n          exact: jason\n    fault:\n      delay:\n        percentage:\n          value: 100.0\n        fixedDelay: 7s\n    route:\n    - destination:\n        host: ratings\n        subset: v1\n  - route:\n    - destination:\n        host: ratings\n        subset: v1\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_057__aws_eks__gcp_gke__istio__fault_injection__http_delay__http_abort/virtual-service-reviews-test-v2.yaml",
    "content": "apiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: reviews\nspec:\n  hosts:\n    - reviews\n  http:\n  - match:\n    - headers:\n        end-user:\n          exact: jason\n    route:\n    - destination:\n        host: reviews\n        subset: v2\n  - route:\n    - destination:\n        host: reviews\n        subset: v1\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_058__aws_eks__gcp_gke__istio__traffic_shifting/ReadMe.md",
    "content": "# [Traffic Shifting](https://istio.io/latest/docs/tasks/traffic-management/traffic-shifting/)\n\nThis task shows you how to shift traffic from one version of a microservice to another.\n\nIn this task, you will use send 50% of traffic to reviews:v1 and 50% to reviews:v3. Then, you will complete the migration by sending 100% of traffic to reviews:v3.\n\n## [Apply weight-based routing](https://istio.io/latest/docs/tasks/traffic-management/traffic-shifting/#apply-weight-based-routing)\n\n```bash\nkubectl apply -f destination-rule-all.yaml\n# you configured Istio to route all traffic for the reviews service to the version reviews:v1 and this version of the service does not access the star ratings service.\nkubectl apply -f virtual-service-all-v1.yaml\n```\n\nTransfer 50% of the traffic from reviews:v1 to reviews:v3 with the following command:\n\n```bash\nkubectl apply -f virtual-service-reviews-50-v3.yaml\n```\n\nRefresh the /productpage in your browser and you now see red colored star ratings approximately 50% of the time\n\nAssuming you decide that the reviews:v3 microservice is stable, you can route 100% of the traffic to reviews:v3 by applying this virtual service:\n\n```bash\nkubectl apply -f virtual-service-reviews-v3.yaml\n```\n\nRefresh the /productpage several times. Now you will always see book reviews with red colored star ratings for each review.\n\n## Cleanup\n\n```bash\nkubectl delete -f virtual-service-all-v1.yaml \n```\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_058__aws_eks__gcp_gke__istio__traffic_shifting/destination-rule-all.yaml",
    "content": "apiVersion: networking.istio.io/v1alpha3\nkind: DestinationRule\nmetadata:\n  name: productpage\nspec:\n  host: productpage\n  subsets:\n  - name: v1\n    labels:\n      version: v1\n---\napiVersion: networking.istio.io/v1alpha3\nkind: DestinationRule\nmetadata:\n  name: reviews\nspec:\n  host: reviews\n  subsets:\n  - name: v1\n    labels:\n      version: v1\n  - name: v2\n    labels:\n      version: v2\n  - name: v3\n    labels:\n      version: v3\n---\napiVersion: networking.istio.io/v1alpha3\nkind: DestinationRule\nmetadata:\n  name: ratings\nspec:\n  host: ratings\n  subsets:\n  - name: v1\n    labels:\n      version: v1\n  - name: v2\n    labels:\n      version: v2\n  - name: v2-mysql\n    labels:\n      version: v2-mysql\n  - name: v2-mysql-vm\n    labels:\n      version: v2-mysql-vm\n---\napiVersion: networking.istio.io/v1alpha3\nkind: DestinationRule\nmetadata:\n  name: details\nspec:\n  host: details\n  subsets:\n  - name: v1\n    labels:\n      version: v1\n  - name: v2\n    labels:\n      version: v2\n---\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_058__aws_eks__gcp_gke__istio__traffic_shifting/virtual-service-all-v1.yaml",
    "content": "apiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: productpage\nspec:\n  hosts:\n  - productpage\n  http:\n  - route:\n    - destination:\n        host: productpage\n        subset: v1\n---\napiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: reviews\nspec:\n  hosts:\n  - reviews\n  http:\n  - route:\n    - destination:\n        host: reviews\n        subset: v1\n---\napiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: ratings\nspec:\n  hosts:\n  - ratings\n  http:\n  - route:\n    - destination:\n        host: ratings\n        subset: v1\n---\napiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: details\nspec:\n  hosts:\n  - details\n  http:\n  - route:\n    - destination:\n        host: details\n        subset: v1\n---\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_058__aws_eks__gcp_gke__istio__traffic_shifting/virtual-service-reviews-50-v3.yaml",
    "content": "apiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: reviews\nspec:\n  hosts:\n    - reviews\n  http:\n  - route:\n    - destination:\n        host: reviews\n        subset: v1\n      weight: 50\n    - destination:\n        host: reviews\n        subset: v3\n      weight: 50\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_058__aws_eks__gcp_gke__istio__traffic_shifting/virtual-service-reviews-v3.yaml",
    "content": "apiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: reviews\nspec:\n  hosts:\n    - reviews\n  http:\n  - route:\n    - destination:\n        host: reviews\n        subset: v3\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_059__aws_eks__gcp_gke__istio__request_timeouts/ReadMe.md",
    "content": "# [Request Timeouts](https://istio.io/latest/docs/tasks/traffic-management/request-timeouts/)\n\nThis task shows you how to set up request timeouts in Envoy using Istio.\n\n## [Pre-requisite](https://istio.io/latest/docs/tasks/traffic-management/request-timeouts/#before-you-begin)\n\nSetup Istio by following the instructions in the Installation guide.\n\nDeploy the Bookinfo sample application including the service versions.\n\n```bash\nkubectl apply -f destination-rule-all.yaml\n```\n\n## [Request Timeouts](https://istio.io/latest/docs/tasks/traffic-management/request-timeouts/#request-timeouts)\n\nRoute requests to v2 of the reviews service, i.e., a version that calls the ratings service:\n\n```bash\nkubectl apply -f - <<EOF\napiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: reviews\nspec:\n  hosts:\n    - reviews\n  http:\n  - route:\n    - destination:\n        host: reviews\n        subset: v2\nEOF\n```\n\nAdd a 2 second delay to calls to the ratings service:\n\n```bash\nkubectl apply -f - <<EOF\napiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: ratings\nspec:\n  hosts:\n  - ratings\n  http:\n  - fault:\n      delay:\n        percentage:\n          value: 100\n        fixedDelay: 2s\n    route:\n    - destination:\n        host: ratings\n        subset: v1\nEOF\n```\n\nYou should see the Bookinfo application working normally (with ratings stars displayed), but there is a 2 second delay whenever you refresh the page.\n\nNow add a half second request timeout for calls to the reviews service:\n\n```bash\nkubectl apply -f - <<EOF\napiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: reviews\nspec:\n  hosts:\n  - reviews\n  http:\n  - route:\n    - destination:\n        host: reviews\n        subset: v2\n    timeout: 0.5s\nEOF\n```\n\nYou should now see that it returns in about 1 second, instead of 2, and the reviews are unavailable.\n\n> The reason that the response takes 1 second, even though the timeout is configured at half a second, is because there is a hard-coded retry in the productpage service, so it calls the timing out reviews service twice before returning.\n\n## Cleanup\n\n```bash\nkubectl delete -f virtual-service-all-v1.yaml \n```"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_059__aws_eks__gcp_gke__istio__request_timeouts/destination-rule-all.yaml",
    "content": "apiVersion: networking.istio.io/v1alpha3\nkind: DestinationRule\nmetadata:\n  name: productpage\nspec:\n  host: productpage\n  subsets:\n  - name: v1\n    labels:\n      version: v1\n---\napiVersion: networking.istio.io/v1alpha3\nkind: DestinationRule\nmetadata:\n  name: reviews\nspec:\n  host: reviews\n  subsets:\n  - name: v1\n    labels:\n      version: v1\n  - name: v2\n    labels:\n      version: v2\n  - name: v3\n    labels:\n      version: v3\n---\napiVersion: networking.istio.io/v1alpha3\nkind: DestinationRule\nmetadata:\n  name: ratings\nspec:\n  host: ratings\n  subsets:\n  - name: v1\n    labels:\n      version: v1\n  - name: v2\n    labels:\n      version: v2\n  - name: v2-mysql\n    labels:\n      version: v2-mysql\n  - name: v2-mysql-vm\n    labels:\n      version: v2-mysql-vm\n---\napiVersion: networking.istio.io/v1alpha3\nkind: DestinationRule\nmetadata:\n  name: details\nspec:\n  host: details\n  subsets:\n  - name: v1\n    labels:\n      version: v1\n  - name: v2\n    labels:\n      version: v2\n---\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_059__aws_eks__gcp_gke__istio__request_timeouts/virtual-service-all-v1.yaml",
    "content": "apiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: productpage\nspec:\n  hosts:\n  - productpage\n  http:\n  - route:\n    - destination:\n        host: productpage\n        subset: v1\n---\napiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: reviews\nspec:\n  hosts:\n  - reviews\n  http:\n  - route:\n    - destination:\n        host: reviews\n        subset: v1\n---\napiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: ratings\nspec:\n  hosts:\n  - ratings\n  http:\n  - route:\n    - destination:\n        host: ratings\n        subset: v1\n---\napiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: details\nspec:\n  hosts:\n  - details\n  http:\n  - route:\n    - destination:\n        host: details\n        subset: v1\n---\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_060__gcp_gke__istio__tcp_traffic_shifting/ReadMe.md",
    "content": "# [TCP Traffic Shifting](https://istio.io/latest/docs/tasks/traffic-management/tcp-traffic-shifting)\n\nThis task shows you how to shift TCP traffic from one version of a microservice to another.\n\nIn this task, you will send 100% of the TCP traffic to tcp-echo:v1. Then, you will route 20% of the TCP traffic to tcp-echo:v2 using Istio’s weighted routing feature.\n\n## [Before you begin](https://istio.io/latest/docs/tasks/traffic-management/tcp-traffic-shifting/#before-you-begin)\n\n## [Set up the test environment](https://istio.io/latest/docs/tasks/traffic-management/tcp-traffic-shifting/#set-up-the-test-environment)\n\nTo get started, create a namespace for testing TCP traffic shifting.\n\n```bash\nkubectl create namespace istio-io-tcp-traffic-shifting\n```\n\nDeploy the sleep sample app to use as a test source for sending requests.\n\n```bash\nkubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.20/samples/sleep/sleep.yaml -n istio-io-tcp-traffic-shifting\n```\n\nDeploy the v1 and v2 versions of the tcp-echo microservice.\n\n```bash\nkubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.20/samples/tcp-echo/tcp-echo-services.yaml -n istio-io-tcp-traffic-shifting\n```\n\n## [Apply weight-based TCP routing](https://istio.io/latest/docs/tasks/traffic-management/tcp-traffic-shifting/#apply-weight-based-tcp-routing)\n\nRoute all TCP traffic to the v1 version of the tcp-echo microservice.\n\n```bash\nkubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.20/samples/tcp-echo/tcp-echo-all-v1.yaml -n istio-io-tcp-traffic-shifting\n```\n\nDetermine the ingress IP and port:\n\n```bash\nexport INGRESS_NAME=istio-ingressgateway\nexport INGRESS_NS=istio-system\nkubectl get svc \"$INGRESS_NAME\" -n \"$INGRESS_NS\"\nexport TCP_INGRESS_PORT=$(kubectl -n \"$INGRESS_NS\" get service \"$INGRESS_NAME\" -o jsonpath='{.spec.ports[?(@.name==\"tcp\")].port}')\n```\n\nConfirm that the tcp-echo service is up and running by sending some TCP traffic.\n\n```bash\nexport SLEEP=$(kubectl get pod -l app=sleep -n istio-io-tcp-traffic-shifting -o jsonpath={.items..metadata.name})\n# Loop\nfor i in {1..20}; do \\\nkubectl exec \"$SLEEP\" -c sleep -n istio-io-tcp-traffic-shifting -- sh -c \"(date; sleep 1) | nc $INGRESS_HOST $TCP_INGRESS_PORT\"; \\\ndone\n# Output\n# one Thu Feb  8 15:29:09 UTC 2024\n# one Thu Feb  8 15:29:15 UTC 2024\n# one Thu Feb  8 15:29:20 UTC 2024\n# .\n```\n\nYou should notice that all the timestamps have a prefix of one, which means that all traffic was routed to the v1 version of the tcp-echo service.\n\nTransfer 20% of the traffic from tcp-echo:v1 to tcp-echo:v2 with the following command:\n\n```bash\nkubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.20/samples/tcp-echo/tcp-echo-20-v2.yaml -n istio-io-tcp-traffic-shifting\n```\n\nSend some more TCP traffic to the tcp-echo microservice.\n\n```bash\nexport SLEEP=$(kubectl get pod -l app=sleep -n istio-io-tcp-traffic-shifting -o jsonpath={.items..metadata.name})\n# Loop\nfor i in {1..20}; do \\\nkubectl exec \"$SLEEP\" -c sleep -n istio-io-tcp-traffic-shifting -- sh -c \"(date; sleep 1) | nc $INGRESS_HOST $TCP_INGRESS_PORT\"; \\\ndone\n##  Output\n# one Thu Feb  8 15:41:20 UTC 2024\n# one Thu Feb  8 15:41:26 UTC 2024\n# one Thu Feb  8 15:41:31 UTC 2024\n# two Thu Feb  8 15:41:36 UTC 2024\n# two Thu Feb  8 15:41:42 UTC 2024\n# one Thu Feb  8 15:41:47 UTC 2024\n# one Thu Feb  8 15:41:52 UTC 2024\n# one Thu Feb  8 15:41:57 UTC 2024\n# one Thu Feb  8 15:42:04 UTC 2024\n# one Thu Feb  8 15:42:08 UTC 2024\n```\n\n## [Understanding what happened](https://istio.io/latest/docs/tasks/traffic-management/tcp-traffic-shifting/#understanding-what-happened)\n\n## [Cleanup](https://istio.io/latest/docs/tasks/traffic-management/tcp-traffic-shifting/#cleanup)\n\n```bash\n# Remove the routing rules:\nkubectl delete -f https://raw.githubusercontent.com/istio/istio/release-1.20/samples/tcp-echo/tcp-echo-all-v1.yaml -n istio-io-tcp-traffic-shifting\n# Remove the sleep sample, tcp-echo application and test namespace:\nkubectl delete -f https://raw.githubusercontent.com/istio/istio/release-1.20/samples/sleep/sleep.yaml -n istio-io-tcp-traffic-shifting\nkubectl delete -f https://raw.githubusercontent.com/istio/istio/release-1.20/samples/tcp-echo/tcp-echo-services.yaml -n istio-io-tcp-traffic-shifting\nkubectl delete namespace istio-io-tcp-traffic-shifting\n```\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_060__gcp_gke__istio__tcp_traffic_shifting/destination-rule-all.yaml",
    "content": "apiVersion: networking.istio.io/v1alpha3\nkind: DestinationRule\nmetadata:\n  name: productpage\nspec:\n  host: productpage\n  subsets:\n  - name: v1\n    labels:\n      version: v1\n---\napiVersion: networking.istio.io/v1alpha3\nkind: DestinationRule\nmetadata:\n  name: reviews\nspec:\n  host: reviews\n  subsets:\n  - name: v1\n    labels:\n      version: v1\n  - name: v2\n    labels:\n      version: v2\n  - name: v3\n    labels:\n      version: v3\n---\napiVersion: networking.istio.io/v1alpha3\nkind: DestinationRule\nmetadata:\n  name: ratings\nspec:\n  host: ratings\n  subsets:\n  - name: v1\n    labels:\n      version: v1\n  - name: v2\n    labels:\n      version: v2\n  - name: v2-mysql\n    labels:\n      version: v2-mysql\n  - name: v2-mysql-vm\n    labels:\n      version: v2-mysql-vm\n---\napiVersion: networking.istio.io/v1alpha3\nkind: DestinationRule\nmetadata:\n  name: details\nspec:\n  host: details\n  subsets:\n  - name: v1\n    labels:\n      version: v1\n  - name: v2\n    labels:\n      version: v2\n---\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_060__gcp_gke__istio__tcp_traffic_shifting/virtual-service-all-v1.yaml",
    "content": "apiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: productpage\nspec:\n  hosts:\n  - productpage\n  http:\n  - route:\n    - destination:\n        host: productpage\n        subset: v1\n---\napiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: reviews\nspec:\n  hosts:\n  - reviews\n  http:\n  - route:\n    - destination:\n        host: reviews\n        subset: v1\n---\napiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: ratings\nspec:\n  hosts:\n  - ratings\n  http:\n  - route:\n    - destination:\n        host: ratings\n        subset: v1\n---\napiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: details\nspec:\n  hosts:\n  - details\n  http:\n  - route:\n    - destination:\n        host: details\n        subset: v1\n---\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_061__gcp_gke__istio__circuit_breaking/ReadMe.md",
    "content": "# [Circuit Breaking](https://istio.io/latest/docs/tasks/traffic-management/circuit-breaking)\n\n## [Before you begin](https://istio.io/latest/docs/tasks/traffic-management/circuit-breaking/#before-you-begin)\n\n```bash\nkubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.20/samples/httpbin/httpbin.yaml           \n```\n\n## [Configuring the circuit breaker](https://istio.io/latest/docs/tasks/traffic-management/circuit-breaking/#configuring-the-circuit-breaker)\n\nCreate a destination rule to apply circuit breaking settings when calling the httpbin service:\n\n```bash\nkubectl apply -f - <<EOF\napiVersion: networking.istio.io/v1alpha3\nkind: DestinationRule\nmetadata:\n  name: httpbin\nspec:\n  host: httpbin\n  trafficPolicy:\n    connectionPool:\n      tcp:\n        maxConnections: 1\n      http:\n        http1MaxPendingRequests: 1\n        maxRequestsPerConnection: 1\n    outlierDetection:\n      consecutive5xxErrors: 1\n      interval: 1s\n      baseEjectionTime: 3m\n      maxEjectionPercent: 100\nEOF\n```\n\n## [Adding a client](https://istio.io/latest/docs/tasks/traffic-management/circuit-breaking/#adding-a-client)\n\nCreate a client to send traffic to the httpbin service. The client is a simple load-testing client called fortio. Fortio lets you control the number of connections, concurrency, and delays for outgoing HTTP calls. You will use this client to “trip” the circuit breaker policies you set in the DestinationRule. \n\nInject the client with the Istio sidecar proxy so network interactions are governed by Istio.\n\n```bash\nkubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.20/samples/httpbin/sample-client/fortio-deploy.yaml\n```\n\nLog in to the client pod and use the fortio tool to call httpbin. Pass in curl to indicate that you just want to make one call:\n\n```bash\nexport FORTIO_POD=$(kubectl get pods -l app=fortio -o 'jsonpath={.items[0].metadata.name}')\nkubectl exec \"$FORTIO_POD\" -c fortio -- /usr/bin/fortio curl -quiet http://httpbin:8000/get\n```\n\nYou can see the request succeeded! Now, it’s time to break something.\n\n## [Tripping the circuit breaker](https://istio.io/latest/docs/tasks/traffic-management/circuit-breaking/#tripping-the-circuit-breaker)\n\nIn the DestinationRule settings, you specified maxConnections: 1 and http1MaxPendingRequests: 1. These rules indicate that if you exceed more than one connection and request concurrently, you should see some failures when the istio-proxy opens the circuit for further requests and connections.\n\nCall the service with two concurrent connections (-c 2) and send 20 requests (-n 20):\n\n```bash\nkubectl exec \"$FORTIO_POD\" -c fortio -- /usr/bin/fortio load -c 2 -qps 0 -n 20 -loglevel Warning http://httpbin:8000/get\n\n# It’s interesting to see that almost all requests made it through! The istio-proxy does allow for some leeway.\n# Code 200 : 13 (65.0 %)\n# Code 503 : 7 (35.0 %)\n\n```\n\nBring the number of concurrent connections up to 3:\n\n```bash\nkubectl exec \"$FORTIO_POD\" -c fortio -- /usr/bin/fortio load -c 3 -qps 0 -n 30 -loglevel Warning http://httpbin:8000/get\n# Now you start to see the expected circuit breaking behavior. Only 36.7% of the requests succeeded and the rest were trapped by circuit breaking:\n# Code 200 : 12 (40.0 %)\n# Code 503 : 18 (60.0 %)\n```\n\nQuery the istio-proxy stats to see more:\n\n```bash\nkubectl exec \"$FORTIO_POD\" -c istio-proxy -- pilot-agent request GET stats | grep httpbin | grep pending\n# Output\n# cluster.outbound|8000||httpbin.default.svc.cluster.local.circuit_breakers.default.remaining_pending: 1\n# cluster.outbound|8000||httpbin.default.svc.cluster.local.circuit_breakers.default.rq_pending_open: 0\n# cluster.outbound|8000||httpbin.default.svc.cluster.local.circuit_breakers.high.rq_pending_open: 0\n# cluster.outbound|8000||httpbin.default.svc.cluster.local.upstream_rq_pending_active: 0\n# cluster.outbound|8000||httpbin.default.svc.cluster.local.upstream_rq_pending_failure_eject: 0\n# cluster.outbound|8000||httpbin.default.svc.cluster.local.upstream_rq_pending_overflow: 50\n# cluster.outbound|8000||httpbin.default.svc.cluster.local.upstream_rq_pending_total: 51\n## You can see 50 for the upstream_rq_pending_overflow value which means 50 calls so far have been flagged for circuit breaking.\n```\n\n## [Cleanup](https://istio.io/latest/docs/tasks/traffic-management/circuit-breaking/#cleaning-up)\n\n```bash\nkubectl delete destinationrule httpbin\nkubectl delete -f https://raw.githubusercontent.com/istio/istio/release-1.20/samples/httpbin/sample-client/fortio-deploy.yaml\nkubectl delete -f https://raw.githubusercontent.com/istio/istio/release-1.20/samples/httpbin/httpbin.yaml\n```\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_061__gcp_gke__istio__circuit_breaking/fortio-deploy.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: fortio\n  labels:\n    app: fortio\n    service: fortio\nspec:\n  ports:\n  - port: 8080\n    name: http\n  selector:\n    app: fortio\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: fortio-deploy\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: fortio\n  template:\n    metadata:\n      annotations:\n        # This annotation causes Envoy to serve cluster.outbound statistics via 15000/stats\n        # in addition to the stats normally served by Istio. The Circuit Breaking example task\n        # gives an example of inspecting Envoy stats via proxy config.\n        proxy.istio.io/config: |-\n          proxyStatsMatcher:\n            inclusionPrefixes:\n            - \"cluster.outbound\"\n            - \"cluster_manager\"\n            - \"listener_manager\"\n            - \"server\"\n            - \"cluster.xds-grpc\"\n      labels:\n        app: fortio\n    spec:\n      containers:\n      - name: fortio\n        image: fortio/fortio:latest_release\n        imagePullPolicy: Always\n        ports:\n        - containerPort: 8080\n          name: http-fortio\n        - containerPort: 8079\n          name: grpc-ping\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_062__gcp_gke__istio__mirroring/ReadMe.md",
    "content": "# [Mirroring](https://istio.io/latest/docs/tasks/traffic-management/mirroring/)\n\nTraffic mirroring, also called shadowing, is a powerful concept that allows feature teams to bring changes to production with as little risk as possible. Mirroring sends a copy of live traffic to a mirrored service. The mirrored traffic happens out of band of the critical request path for the primary service.\n\n## [Before you begin](https://istio.io/latest/docs/tasks/traffic-management/mirroring/#before-you-begin)\n\nStart by deploying two versions of the httpbin service that have access logging enabled:\n\nhttpbin-v1:\n\n```bash\ncat <<EOF | istioctl kube-inject -f - | kubectl create -f -\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: httpbin-v1\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: httpbin\n      version: v1\n  template:\n    metadata:\n      labels:\n        app: httpbin\n        version: v1\n    spec:\n      containers:\n      - image: docker.io/kennethreitz/httpbin\n        imagePullPolicy: IfNotPresent\n        name: httpbin\n        command: [\"gunicorn\", \"--access-logfile\", \"-\", \"-b\", \"0.0.0.0:80\", \"httpbin:app\"]\n        ports:\n        - containerPort: 80\nEOF\n```\n\nhttpbin-v2:\n\n```bash\ncat <<EOF | istioctl kube-inject -f - | kubectl create -f -\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: httpbin-v2\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: httpbin\n      version: v2\n  template:\n    metadata:\n      labels:\n        app: httpbin\n        version: v2\n    spec:\n      containers:\n      - image: docker.io/kennethreitz/httpbin\n        imagePullPolicy: IfNotPresent\n        name: httpbin\n        command: [\"gunicorn\", \"--access-logfile\", \"-\", \"-b\", \"0.0.0.0:80\", \"httpbin:app\"]\n        ports:\n        - containerPort: 80\nEOF\n```\n\nhttpbin Kubernetes service:\n\n```bash\nkubectl create -f - <<EOF\napiVersion: v1\nkind: Service\nmetadata:\n  name: httpbin\n  labels:\n    app: httpbin\nspec:\n  ports:\n  - name: http\n    port: 8000\n    targetPort: 80\n  selector:\n    app: httpbin\nEOF\n```\n\nStart the sleep service so you can use curl to provide load:\n\nsleep service:\n\n```bash\ncat <<EOF | istioctl kube-inject -f - | kubectl create -f -\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: sleep\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: sleep\n  template:\n    metadata:\n      labels:\n        app: sleep\n    spec:\n      containers:\n      - name: sleep\n        image: curlimages/curl\n        command: [\"/bin/sleep\",\"3650d\"]\n        imagePullPolicy: IfNotPresent\nEOF\n```\n\n## [Creating a default routing policy](https://istio.io/latest/docs/tasks/traffic-management/mirroring/#creating-a-default-routing-policy)\n\nBy default Kubernetes load balances across both versions of the httpbin service. In this step, you will change that behavior so that all traffic goes to v1.\n\nCreate a default route rule to route all traffic to v1 of the service:\n\n```bash\nkubectl apply -f - <<EOF\napiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: httpbin\nspec:\n  hosts:\n    - httpbin\n  http:\n  - route:\n    - destination:\n        host: httpbin\n        subset: v1\n      weight: 100\n---\napiVersion: networking.istio.io/v1alpha3\nkind: DestinationRule\nmetadata:\n  name: httpbin\nspec:\n  host: httpbin\n  subsets:\n  - name: v1\n    labels:\n      version: v1\n  - name: v2\n    labels:\n      version: v2\nEOF\n\n```\n\nNow, with all traffic directed to httpbin:v1, send a request to the service:\n\n```bash\nexport SLEEP_POD=$(kubectl get pod -l app=sleep -o jsonpath={.items..metadata.name})\nkubectl exec \"${SLEEP_POD}\" -c sleep -- curl -sS http://httpbin:8000/headers\n```\n\nCheck the logs for v1 and v2 of the httpbin pods. You should see access log entries for v1 and none for v2:\n\n```bash\nexport V1_POD=$(kubectl get pod -l app=httpbin,version=v1 -o jsonpath={.items..metadata.name})\nkubectl logs \"$V1_POD\" -c httpbin\n# [2024-02-09 11:13:52 +0000] [1] [INFO] Starting gunicorn 19.9.0\n# [2024-02-09 11:13:52 +0000] [1] [INFO] Listening at: http://0.0.0.0:80 (1)\n# [2024-02-09 11:13:52 +0000] [1] [INFO] Using worker: sync\n# [2024-02-09 11:13:52 +0000] [9] [INFO] Booting worker with pid: 9\n# 127.0.0.6 - - [09/Feb/2024:11:27:44 +0000] \"GET /headers HTTP/1.1\" 200 524 \"-\" \"curl/8.6.0\"\n```\n\n```bash\nexport V2_POD=$(kubectl get pod -l app=httpbin,version=v2 -o jsonpath={.items..metadata.name})\nkubectl logs \"$V2_POD\" -c httpbin\n# <none>\n```\n\n## [Mirroring traffic to v2](https://istio.io/latest/docs/tasks/traffic-management/mirroring/#mirroring-traffic-to-v2)\n\n```bash\nkubectl apply -f - <<EOF\napiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: httpbin\nspec:\n  hosts:\n    - httpbin\n  http:\n  - route:\n    - destination:\n        host: httpbin\n        subset: v1\n      weight: 100\n    mirror:\n      host: httpbin\n      subset: v2\n    mirrorPercentage:\n      value: 100.0\nEOF\n```\n\nThis route rule sends 100% of the traffic to v1. The last stanza specifies that you want to mirror (i.e., also send) 100% of the same traffic to the httpbin:v2 service. When traffic gets mirrored, the requests are sent to the mirrored service with their Host/Authority headers appended with -shadow. For example, cluster-1 becomes cluster-1-shadow.\n\nAlso, it is important to note that these requests are mirrored as “fire and forget”, which means that the responses are discarded.\n\nYou can use the value field under the mirrorPercentage field to mirror a fraction of the traffic, instead of mirroring all requests. If this field is absent, all traffic will be mirrored.\n\nSend in traffic:\n\n```bash\nkubectl exec \"${SLEEP_POD}\" -c sleep -- curl -sS http://httpbin:8000/headers\n```\n\nNow, you should see access logging for both v1 and v2. The access logs created in v2 are the mirrored requests that are actually going to v1.\n\n```bash\nkubectl logs \"$V1_POD\" -c httpbin\n# 127.0.0.6 - - [09/Feb/2024:11:27:44 +0000] \"GET /headers HTTP/1.1\" 200 524 \"-\" \"curl/8.6.0\"\n# 127.0.0.6 - - [09/Feb/2024:11:31:25 +0000] \"GET /headers HTTP/1.1\" 200 524 \"-\" \"curl/8.6.0\"\n```\n\n```bash\nkubectl logs \"$V2_POD\" -c httpbin\n# 127.0.0.6 - - [09/Feb/2024:11:31:25 +0000] \"GET /headers HTTP/1.1\" 200 564 \"-\" \"curl/8.6.0\"\n```\n\n## [Cleanup](https://istio.io/latest/docs/tasks/traffic-management/mirroring/#cleaning-up)\n\n```bash\nkubectl delete virtualservice httpbin\nkubectl delete destinationrule httpbin\n\nkubectl delete deploy httpbin-v1 httpbin-v2 sleep\nkubectl delete svc httpbin\n```\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_062__gcp_gke__istio__mirroring/fortio-deploy.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: fortio\n  labels:\n    app: fortio\n    service: fortio\nspec:\n  ports:\n  - port: 8080\n    name: http\n  selector:\n    app: fortio\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: fortio-deploy\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: fortio\n  template:\n    metadata:\n      annotations:\n        # This annotation causes Envoy to serve cluster.outbound statistics via 15000/stats\n        # in addition to the stats normally served by Istio. The Circuit Breaking example task\n        # gives an example of inspecting Envoy stats via proxy config.\n        proxy.istio.io/config: |-\n          proxyStatsMatcher:\n            inclusionPrefixes:\n            - \"cluster.outbound\"\n            - \"cluster_manager\"\n            - \"listener_manager\"\n            - \"server\"\n            - \"cluster.xds-grpc\"\n      labels:\n        app: fortio\n    spec:\n      containers:\n      - name: fortio\n        image: fortio/fortio:latest_release\n        imagePullPolicy: Always\n        ports:\n        - containerPort: 8080\n          name: http-fortio\n        - containerPort: 8079\n          name: grpc-ping\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_063__gcp_gke__istio__ingress__ingress_gateways/ReadMe.md",
    "content": "# [Ingress Gateways](https://istio.io/latest/docs/tasks/traffic-management/ingress/ingress-control)\n\n## [Before you begin](https://istio.io/latest/docs/tasks/traffic-management/ingress/ingress-control/#before-you-begin)\n\nStart the httpbin sample, which will serve as the target service for ingress traffic:\n\n```bash\nkubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.20/samples/httpbin/httpbin.yaml\n```\n\n## [Configuring ingress using a gateway](https://istio.io/latest/docs/tasks/traffic-management/ingress/ingress-control/#configuring-ingress-using-a-gateway)\n\nAn ingress Gateway describes a load balancer operating at the edge of the mesh that receives incoming HTTP/TCP connections. It configures exposed ports, protocols, etc. but, unlike Kubernetes Ingress Resources, does not include any traffic routing configuration. Traffic routing for ingress traffic is instead configured using routing rules, exactly in the same way as for internal service requests.\n\nLet’s see how you can configure a Gateway on port 80 for HTTP traffic.\n\n```bash\nkubectl apply -f - <<EOF\napiVersion: networking.istio.io/v1alpha3\nkind: Gateway\nmetadata:\n  name: httpbin-gateway\nspec:\n  # The selector matches the ingress gateway pod labels.\n  # If you installed Istio using Helm following the standard documentation, this would be \"istio=ingress\"\n  selector:\n    istio: ingressgateway\n  servers:\n  - port:\n      number: 80\n      name: http\n      protocol: HTTP\n    hosts:\n    - \"httpbin.example.com\"\nEOF\n\n```\n\nConfigure routes for traffic entering via the Gateway:\n\n```bash\nkubectl apply -f - <<EOF\napiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: httpbin\nspec:\n  hosts:\n  - \"httpbin.example.com\"\n  gateways:\n  - httpbin-gateway\n  http:\n  - match:\n    - uri:\n        prefix: /status\n    - uri:\n        prefix: /delay\n    route:\n    - destination:\n        port:\n          number: 8000\n        host: httpbin\nEOF\n\n```\n\nYou have now created a virtual service configuration for the httpbin service containing two route rules that allow traffic for paths /status and /delay.\n\nThe gateways list specifies that only requests through your httpbin-gateway are allowed. All other external requests will be rejected with a 404 response.\n\n## [Determining the ingress IP and ports](https://istio.io/latest/docs/tasks/traffic-management/ingress/ingress-control/#configuring-ingress-using-a-gateway)\n\nEvery Gateway is backed by a service of type LoadBalancer. The external load balancer IP and ports for this service are used to access the gateway\n\n```bash\nexport INGRESS_NAME=istio-ingressgateway\nexport INGRESS_NS=istio-system\n```\n\nRun the following command to determine if your Kubernetes cluster is in an environment that supports external load balancers:\n\n```bash\nkubectl get svc \"$INGRESS_NAME\" -n \"$INGRESS_NS\"\n```\n\n```bash\nexport INGRESS_HOST=$(kubectl -n \"$INGRESS_NS\" get service \"$INGRESS_NAME\" -o jsonpath='{.status.loadBalancer.ingress[0].ip}')\nexport INGRESS_PORT=$(kubectl -n \"$INGRESS_NS\" get service \"$INGRESS_NAME\" -o jsonpath='{.spec.ports[?(@.name==\"http2\")].port}')\nexport SECURE_INGRESS_PORT=$(kubectl -n \"$INGRESS_NS\" get service \"$INGRESS_NAME\" -o jsonpath='{.spec.ports[?(@.name==\"https\")].port}')\nexport TCP_INGRESS_PORT=$(kubectl -n \"$INGRESS_NS\" get service \"$INGRESS_NAME\" -o jsonpath='{.spec.ports[?(@.name==\"tcp\")].port}')\n\n```\n\n## [Accessing ingress services](https://istio.io/latest/docs/tasks/traffic-management/ingress/ingress-control/#accessing-ingress-services)\n\nAccess the httpbin service using curl:\n\n```bash\ncurl -s -I -HHost:httpbin.example.com \"http://$INGRESS_HOST:$INGRESS_PORT/status/200\"\n# Output\n# HTTP/1.1 200 OK\n# server: istio-envoy\n# date: Fri, 09 Feb 2024 16:46:13 GMT\n# content-type: text/html; charset=utf-8\n# access-control-allow-origin: *\n# access-control-allow-credentials: true\n# content-length: 0\n# x-envoy-upstream-service-time: 14\n```\n\nNote that you use the -H flag to set the Host HTTP header to “httpbin.example.com”. This is needed because your ingress Gateway is configured to handle “httpbin.example.com”, but in your test environment you have no DNS binding for that host and are simply sending your request to the ingress IP.\n\nAccess any other URL that has not been explicitly exposed. You should see an HTTP 404 error:\n\n```bash\ncurl -s -I -HHost:httpbin.example.com \"http://$INGRESS_HOST:$INGRESS_PORT/headers\"\n# Output\n# HTTP/1.1 404 Not Found\n# date: Fri, 09 Feb 2024 16:47:19 GMT\n# server: istio-envoy\n# transfer-encoding: chunked\n\n```\n\n## [Accessing ingress services using a browser](https://istio.io/latest/docs/tasks/traffic-management/ingress/ingress-control/#accessing-ingress-services-using-a-browser)\n\nUse a wildcard * value for the host in the Gateway and VirtualService configurations. For example, change your ingress configuration to the following:\n\n```bash\nkubectl apply -f - <<EOF\napiVersion: networking.istio.io/v1alpha3\nkind: Gateway\nmetadata:\n  name: httpbin-gateway\nspec:\n  # The selector matches the ingress gateway pod labels.\n  # If you installed Istio using Helm following the standard documentation, this would be \"istio=ingress\"\n  selector:\n    istio: ingressgateway\n  servers:\n  - port:\n      number: 80\n      name: http\n      protocol: HTTP\n    hosts:\n    - \"*\"\n---\napiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: httpbin\nspec:\n  hosts:\n  - \"*\"\n  gateways:\n  - httpbin-gateway\n  http:\n  - match:\n    - uri:\n        prefix: /headers\n    route:\n    - destination:\n        port:\n          number: 8000\n        host: httpbin\nEOF\n\n```\n\nYou can then use $INGRESS_HOST:$INGRESS_PORT in the browser URL. For example, http://$INGRESS_HOST:$INGRESS_PORT/headers will display all the headers that your browser sends.\n\n## Cleanup\n\nDelete the Gateway and VirtualService configuration, and shutdown the httpbin service:\n\n```bash\nkubectl delete gateway httpbin-gateway\nkubectl delete virtualservice httpbin\nkubectl delete --ignore-not-found=true -f https://raw.githubusercontent.com/istio/istio/release-1.20/samples/httpbin/httpbin.yaml\n\n```"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_064__gcp_gke__istio__ingres__secure_gateways__TLS__mTLS/ReadMe.md",
    "content": "# [Secure Gateways](https://istio.io/latest/docs/tasks/traffic-management/ingress/secure-ingress/)\n\nThis task shows how to expose a secure HTTPS service using either simple or mutual TLS.\n\n## [Before you begin](https://istio.io/latest/docs/tasks/traffic-management/ingress/secure-ingress/#before-you-begin)\n\n```bash\nkubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.20/samples/httpbin/httpbin.yaml\n```\n\nFor macOS users, verify that you use curl compiled with the LibreSSL library:\n\n```bash\n$ curl --version | grep LibreSSL\ncurl 7.54.0 (x86_64-apple-darwin17.0) libcurl/7.54.0 LibreSSL/2.0.20 zlib/1.2.11 nghttp2/1.24.0\n```\n\n## [Generate client and server certificates and keys](https://istio.io/latest/docs/tasks/traffic-management/ingress/secure-ingress/#generate-client-and-server-certificates-and-keys)\n\nCreate a root certificate and private key to sign the certificates for your services:\n\n| Option                                   | Description                                                                                                                         |\n|------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------|\n| `req`                                    | OpenSSL command to create and process certificate signing requests (CSR). In this context, it's used to generate a new certificate. |\n| `-x509`                                  | This option outputs a self-signed certificate instead of a certificate request. This is used for generating a root certificate.     |\n| `-sha256`                                | Specifies the hash algorithm to use for signing the certificate. SHA-256 is a secure, widely used algorithm.                        |\n| `-nodes`                                 | Skips the option to secure the private key with a passphrase. This makes automation easier but is less secure.                      |\n| `-days 365`                              | Sets the validity of the certificate to 365 days. Adjust as needed for your use case.                                               |\n| `-newkey rsa:2048`                       | Generates a new private key using RSA encryption with a 2048-bit key size. This is a good balance between security and performance. |\n| `-subj '/O=example Inc./CN=example.com'` | Sets the subject field of the certificate. Here, `O` stands for Organization, and `CN` stands for Common Name (the domain name).    |\n| `-keyout example_certs1/example.com.key` | Specifies the file to write the generated private key to.                                                                           |\n| `-out example_certs1/example.com.crt`    | Specifies the file to write the generated certificate to.                                                                           |\n\n```bash\nmkdir example_certs1\n# Generate Self-Signed Root Certificate\n# Creates a self-signed root certificate for example.com using RSA 2048-bit encryption, valid for 365 days. The certificate and its private key are stored without passphrase encryption.\nopenssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -subj '/O=example Inc./CN=example.com' -keyout example_certs1/example.com.key -out example_certs1/example.com.crt\n```\n\nOutput\n\n```bash\n$ ls\nexample.com.crt example.com.key\n```\n\n---\n\nGenerate a certificate and a private key for httpbin.example.com:\n\n| Option                                                   | Description                                                                                                                                                                                              |\n|----------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `req`                                                    | OpenSSL command to create and process certificate signing requests (CSR). It's used here to generate a new CSR.                                                                                          |\n| `-out`                                                   | Specifies the output file for the CSR. In this case, `example_certs1/httpbin.example.com.csr` is the file where the CSR will be saved.                                                                   |\n| `-newkey rsa:2048`                                       | Generates a new private key using RSA encryption with a 2048-bit key size. This key size is recommended for good security.                                                                               |\n| `-nodes`                                                 | Skips encrypting the private key with a passphrase. This makes automation and server use easier but reduces security because the key is not protected.                                                   |\n| `-keyout`                                                | Specifies the file to write the generated private key to. Here, it is `example_certs1/httpbin.example.com.key`.                                                                                          |\n| `-subj \"/CN=httpbin.example.com/O=httpbin organization\"` | Sets the subject field of the CSR. `CN` stands for Common Name, which is the fully qualified domain name (FQDN) of your site. `O` stands for Organization, which is the legal name of your organization. |\n\n```bash\n# Generate CSR and Private Key for httpbin.example.com\n# Generates an RSA 2048-bit private key and a Certificate Signing Request (CSR) for httpbin.example.com. The command specifies the domain's common name and organization, and stores the key without passphrase protection.\nopenssl req -out example_certs1/httpbin.example.com.csr -newkey rsa:2048 -nodes -keyout example_certs1/httpbin.example.com.key -subj \"/CN=httpbin.example.com/O=httpbin organization\"\n```\n\n```bash\n# Output\n$ ls example_certs1      \nexample.com.crt         example.com.key         httpbin.example.com.csr httpbin.example.com.key\n```\n\n---\n\n| Option          | Description                                                                                                                                                                                       |\n|-----------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `x509`          | OpenSSL command to create X.509 certificates, certificate signing requests (CSRs), and to manage the public key infrastructure. Used here for certificate generation.                             |\n| `-req`          | Indicates that the input is a CSR. This option specifies that the command should process a CSR and generate a certificate.                                                                        |\n| `-sha256`       | Specifies the SHA-256 hash algorithm for signing the certificate, ensuring a high level of security.                                                                                              |\n| `-days 365`     | Sets the validity period of the certificate to 365 days. Adjust according to how long you want the certificate to be valid.                                                                       |\n| `-CA`           | Specifies the CA certificate file. In this case, `example_certs1/example.com.crt` is used to sign the CSR, effectively making it a signed certificate.                                            |\n| `-CAkey`        | Specifies the private key file of the CA (`example_certs1/example.com.key`) used to sign the CSR.                                                                                                 |\n| `-set_serial 0` | Sets the serial number of the certificate. Serial numbers are used to uniquely identify certificates issued by a CA. It's set to 0 here, but should be unique per certificate in a real scenario. |\n| `-in`           | Specifies the input file. Here, it is the CSR file (`example_certs1/httpbin.example.com.csr`) that you want to turn into a certificate.                                                           |\n| `-out`          | Specifies the output file for the newly created certificate. In this example, `example_certs1/httpbin.example.com.crt` will store the signed certificate.                                         |\n\n\n```bash\n# Sign httpbin.example.com CSR with Root Certificate\n# Signs the CSR for httpbin.example.com with the root certificate, creating a signed certificate valid for 365 days. The -set_serial 0 option assigns a serial number to the certificate.\nopenssl x509 -req -sha256 -days 365 -CA example_certs1/example.com.crt -CAkey example_certs1/example.com.key -set_serial 0 -in example_certs1/httpbin.example.com.csr -out example_certs1/httpbin.example.com.crt\n# Output\n# Certificate request self-signature ok\n# subject=CN=httpbin.example.com, O=httpbin organization\n```\n\n```bash\n$ ls example_certs1\nexample.com.crt         example.com.key         httpbin.example.com.crt httpbin.example.com.csr httpbin.example.com.key\n```\n\n---\n\nCreate a second set of the same kind of certificates and keys:\n\n```bash\nmkdir example_certs2\n# Generate Self-Signed Root Certificate\n# Generates a self-signed X.509 certificate with RSA 2048-bit encryption for example.com, valid for 365 days. It creates a private key and certificate, stored without passphrase encryption.\nopenssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -subj '/O=example Inc./CN=example.com' -keyout example_certs2/example.com.key -out example_certs2/example.com.crt\n# Generate CSR and Private Key for httpbin.example.com\n# Generates an RSA 2048-bit private key and a Certificate Signing Request (CSR) for httpbin.example.com. The key and CSR are stored without passphrase protection.\nopenssl req -out example_certs2/httpbin.example.com.csr -newkey rsa:2048 -nodes -keyout example_certs2/httpbin.example.com.key -subj \"/CN=httpbin.example.com/O=httpbin organization\"\n# Sign httpbin.example.com CSR with Root Certificate\n# Signs the httpbin.example.com CSR using the previously generated root certificate and key, issuing a certificate valid for 365 days. The new certificate is stored with a serial number of 0.\nopenssl x509 -req -sha256 -days 365 -CA example_certs2/example.com.crt -CAkey example_certs2/example.com.key -set_serial 0 -in example_certs2/httpbin.example.com.csr -out example_certs2/httpbin.example.com.crt\n\n```\n\nGenerate a certificate and a private key for helloworld.example.com:\n\n```bash\n# Generate CSR and Private Key for helloworld.example.com\n# Creates an RSA 2048-bit private key and a Certificate Signing Request (CSR) for helloworld.example.com, specifying the common name and organization. The command ensures the key is stored without passphrase encryption.\nopenssl req -out example_certs1/helloworld.example.com.csr -newkey rsa:2048 -nodes -keyout example_certs1/helloworld.example.com.key -subj \"/CN=helloworld.example.com/O=helloworld organization\"\n# Sign helloworld.example.com CSR with Root Certificate\n# Uses the root certificate and private key to sign the CSR for helloworld.example.com, issuing a certificate valid for 365 days. It assigns a serial number of 1 to the new certificate, differentiating it from others.\nopenssl x509 -req -sha256 -days 365 -CA example_certs1/example.com.crt -CAkey example_certs1/example.com.key -set_serial 1 -in example_certs1/helloworld.example.com.csr -out example_certs1/helloworld.example.com.crt\n```\n\nGenerate a client certificate and private key:\n\n```bash\n# Generate CSR and Private Key for client.example.com\n# This command generates a Certificate Signing Request (CSR) and a new 2048-bit RSA private key for client.example.com, indicating the common name and organization. The -nodes option ensures the private key is stored without encryption for easier use.\nopenssl req -out example_certs1/client.example.com.csr -newkey rsa:2048 -nodes -keyout example_certs1/client.example.com.key -subj \"/CN=client.example.com/O=client organization\"\n# Sign client.example.com CSR with Root Certificate\n# This command signs the CSR for client.example.com with the root certificate, creating a client certificate valid for 365 days. The -set_serial 1 assigns a unique serial number to the certificate, ensuring its distinct identity within the CA's issued certificates.\nopenssl x509 -req -sha256 -days 365 -CA example_certs1/example.com.crt -CAkey example_certs1/example.com.key -set_serial 1 -in example_certs1/client.example.com.csr -out example_certs1/client.example.com.crt\n```\n\n## [Configure a TLS ingress gateway for a single host](https://istio.io/latest/docs/tasks/traffic-management/ingress/secure-ingress/#configure-a-tls-ingress-gateway-for-a-single-host)\n\nCreate a secret for the ingress gateway:\n\n```bash\n# This command uses kubectl to create a new TLS secret named httpbin-credential in the istio-system namespace. The secret includes the private key and certificate for httpbin.example.com, enabling secure HTTPS communication through the Istio ingress gateway. This step is essential for configuring TLS termination or mutual TLS (mTLS) with custom certificates in Istio-enabled Kubernetes clusters\nkubectl create -n istio-system secret tls httpbin-credential \\\n  --key=example_certs1/httpbin.example.com.key \\\n  --cert=example_certs1/httpbin.example.com.crt\n```\n\nConfigure the ingress gateway:\n\nFirst, define a gateway with a servers: section for port 443, and specify values for credentialName to be httpbin-credential. The values are the same as the secret’s name. The TLS mode should have the value of SIMPLE.\n\n```bash\n# This command defines an Istio Gateway resource named mygateway and applies it to the Kubernetes cluster. The gateway is configured to use Istio's default ingress gateway for traffic routing. It specifies a server on port 443 (HTTPS) with TLS mode set to SIMPLE, indicating it uses standard TLS rather than mutual TLS. The credentialName is set to httpbin-credential, which matches the name of the secret created earlier, linking the gateway to the TLS credentials. The hosts section limits the gateway to handle traffic for httpbin.example.com. This configuration allows secure HTTPS traffic to httpbin.example.com through Istio's ingress gateway.\ncat <<EOF | kubectl apply -f -\napiVersion: networking.istio.io/v1alpha3\nkind: Gateway\nmetadata:\n  name: mygateway\nspec:\n  selector:\n    istio: ingressgateway # use istio default ingress gateway\n  servers:\n  - port:\n      number: 443\n      name: https\n      protocol: HTTPS\n    tls:\n      mode: SIMPLE\n      credentialName: httpbin-credential # must be the same as secret\n    hosts:\n    - httpbin.example.com\nEOF\n```\n\nNext, configure the gateway’s ingress traffic routes by defining a corresponding virtual service:\n\n```bash\n# This command creates an Istio Virtual Service named httpbin, routing traffic for httpbin.example.com through the mygateway Gateway. It specifically directs traffic for URIs starting with /status and /delay to the httpbin service on port 8000. This configuration is crucial for defining how ingress traffic to httpbin.example.com is handled within the Istio service mesh, ensuring that requests to specified paths are correctly routed to the appropriate internal service.\ncat <<EOF | kubectl apply -f -\napiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: httpbin\nspec:\n  hosts:\n  - \"httpbin.example.com\"\n  gateways:\n  - mygateway\n  http:\n  - match:\n    - uri:\n        prefix: /status\n    - uri:\n        prefix: /delay\n    route:\n    - destination:\n        port:\n          number: 8000\n        host: httpbin\nEOF\n```\n\n```bash\nexport INGRESS_NAME=istio-ingressgateway\nexport INGRESS_NS=istio-system\nkubectl get svc \"$INGRESS_NAME\" -n \"$INGRESS_NS\"\nexport INGRESS_HOST=$(kubectl -n \"$INGRESS_NS\" get service \"$INGRESS_NAME\" -o jsonpath='{.status.loadBalancer.ingress[0].ip}')\nexport INGRESS_PORT=$(kubectl -n \"$INGRESS_NS\" get service \"$INGRESS_NAME\" -o jsonpath='{.spec.ports[?(@.name==\"http2\")].port}')\nexport SECURE_INGRESS_PORT=$(kubectl -n \"$INGRESS_NS\" get service \"$INGRESS_NAME\" -o jsonpath='{.spec.ports[?(@.name==\"https\")].port}')\nexport TCP_INGRESS_PORT=$(kubectl -n \"$INGRESS_NS\" get service \"$INGRESS_NAME\" -o jsonpath='{.spec.ports[?(@.name==\"tcp\")].port}')\n```\n\nSend an HTTPS request to access the httpbin service through HTTPS:\n\n```bash\n# This command uses curl to send a verbose HTTPS request to the httpbin service, specifically to the /status/418 endpoint. It manually sets the Host header to httpbin.example.com to mimic requests to this domain. The --resolve option forces curl to resolve httpbin.example.com to the specified $INGRESS_HOST IP address at the $SECURE_INGRESS_PORT, effectively directing the request to the Istio ingress gateway. The --cacert option specifies the root CA certificate (example.com.crt), allowing curl to trust the self-signed certificate used by the ingress gateway. This command is crucial for testing secure HTTPS access to services managed by Istio, ensuring the routing and SSL/TLS configuration works as expected.\n# The --cacert option is used to specify the CA certificate that curl should trust, enabling it to verify the self-signed certificate presented by the server during the SSL/TLS handshake.\ncurl -v -HHost:httpbin.example.com --resolve \"httpbin.example.com:$SECURE_INGRESS_PORT:$INGRESS_HOST\" \\\n  --cacert example_certs1/example.com.crt \"https://httpbin.example.com:$SECURE_INGRESS_PORT/status/418\"\n```\n\nOutput\n\n```bash\n.\n*   Trying a.b.c.d:443...\n* Connected to httpbin.example.com (a.b.c.d) port 443 (#0)\n. \n* (304) (OUT), TLS handshake, Client hello (1):\n*  CAfile: example_certs1/example.com.crt\n*  CApath: none\n* (304) (IN), TLS handshake, Server hello (2):\n* (304) (IN), TLS handshake, Unknown (8):\n* (304) (IN), TLS handshake, Certificate (11):\n* (304) (IN), TLS handshake, CERT verify (15):\n* (304) (IN), TLS handshake, Finished (20):\n* (304) (OUT), TLS handshake, Finished (20):\n.\n* Server certificate:\n*  subject: CN=httpbin.example.com; O=httpbin organization\n*  start date: Feb 10 07:17:01 2024 GMT\n*  expire date: Feb  9 07:17:01 2025 GMT\n*  common name: httpbin.example.com (matched)\n*  issuer: O=example Inc.; CN=example.com\n*  SSL certificate verify ok.\n* using HTTP/2\n* h2 [:method: GET]\n* h2 [:scheme: https]\n* h2 [:authority: httpbin.example.com]\n* h2 [:path: /status/418]\n* h2 [user-agent: curl/8.1.2]\n* h2 [accept: */*]\n.\n> GET /status/418 HTTP/2\n> Host:httpbin.example.com\n> User-Agent: curl/8.1.2\n> Accept: */*\n> \n< HTTP/2 418 \n< server: istio-envoy\n< date: Sat, 10 Feb 2024 07:29:02 GMT\n< x-more-info: http://tools.ietf.org/html/rfc2324\n< access-control-allow-origin: *\n< access-control-allow-credentials: true\n< content-length: 135\n< x-envoy-upstream-service-time: 20\n< \n\n    -=[ teapot ]=-\n\n       _...._\n     .'  _ _ `.\n    | .\"` ^ `\". _,\n    \\_;`\"---\"`|//\n      |       ;/\n      \\_     _/\n        `\"\"\"`\n* Connection #0 to host httpbin.example.com left intact\n```\n\n**Output Explaination**\n\nHere's the analysis of the `curl` command output, including the corresponding sections of the output enclosed in ```bash``` for clarity:\n\n```bash\n* Added httpbin.example.com:443:a.b.c.d to DNS cache\n* Hostname httpbin.example.com was found in DNS cache\n*   Trying a.b.c.d:443...\n* Connected to httpbin.example.com (a.b.c.d) port 443 (#0)\n```\n\n- **DNS Resolution Override**: Overrides DNS resolution to direct `httpbin.example.com` to the IP `a.b.c.d`, ensuring requests are sent to the specified ingress.\n\n```bash\n* ALPN: offers h2,http/1.1\n* (304) (OUT), TLS handshake, Client hello (1):\n*  CAfile: example_certs1/example.com.crt\n*  CApath: none\n* (304) (IN), TLS handshake, Server hello (2):\n* (304) (IN), TLS handshake, Unknown (8):\n* (304) (IN), TLS handshake, Certificate (11):\n* (304) (IN), TLS handshake, CERT verify (15):\n* (304) (IN), TLS handshake, Finished (20):\n* (304) (OUT), TLS handshake, Finished (20):\n* SSL connection using TLSv1.3 / AEAD-CHACHA20-POLY1305-SHA256\n* ALPN: server accepted h2\n```\n\n- **TLS Handshake**: Details the secure TLSv1.3 handshake process, using the provided CA certificate for verification, and establishes an HTTP/2 connection.\n\n```bash\n* Server certificate:\n*  subject: CN=httpbin.example.com; O=httpbin organization\n*  start date: Feb 10 07:17:01 2024 GMT\n*  expire date: Feb  9 07:17:01 2025 GMT\n*  common name: httpbin.example.com (matched)\n*  issuer: O=example Inc.; CN=example.com\n*  SSL certificate verify ok.\n```\n\n- **Certificate Details**: Validates the server's SSL certificate, issued by `example Inc.` for `httpbin.example.com`, showing its validity period.\n\n```bash\n* using HTTP/2\n* h2 [:method: GET]\n* h2 [:scheme: https]\n* h2 [:authority: httpbin.example.com]\n* h2 [:path: /status/418]\n* h2 [user-agent: curl/8.1.2]\n* h2 [accept: */*]\n* Using Stream ID: 1 (easy handle 0x15400bc00)\n> GET /status/418 HTTP/2\n> Host:httpbin.example.com\n> User-Agent: curl/8.1.2\n> Accept: */*\n```\n\n- **HTTP/2 Protocol**: Shows the request is made using HTTP/2, detailing the headers sent and the specific request for the `/status/418` endpoint.\n\n```bash\n< HTTP/2 418 \n< server: istio-envoy\n< date: Sat, 10 Feb 2024 09:57:07 GMT\n< x-more-info: http://tools.ietf.org/html/rfc2324\n< access-control-allow-origin: *\n< access-control-allow-credentials: true\n< content-length: 135\n< x-envoy-upstream-service-time: 35\n< \n    -=[ teapot ]=-\n\n       _...._\n     .'  _ _ `.\n    | .\"` ^ `\". _,\n    \\_;`\"---\"`|//\n      |       ;/\n      \\_     _/\n        `\"\"\"`\n```\n\n- **Request and Response**: Demonstrates the successful HTTPS request to `/status/418`, resulting in a `418 I'm a teapot` response, including ASCII art, served by Istio's Envoy proxy.\n\n```bash\n* Connection #0 to host httpbin.example.com left intact\n```\n\n- **Connection Closure**: Indicates the connection remains open for potential subsequent requests, highlighting the keep-alive functionality of HTTP/2.\n\n---\n\nChange the gateway’s credentials by deleting the gateway’s secret and then recreating it using different certificates and keys:\n\n```bash\nkubectl -n istio-system delete secret httpbin-credential\nkubectl create -n istio-system secret tls httpbin-credential \\\n  --key=example_certs2/httpbin.example.com.key \\\n  --cert=example_certs2/httpbin.example.com.crt\n\n```\n\nAccess the httpbin service with curl using the new certificate chain:\n\n```bash\ncurl -v -HHost:httpbin.example.com --resolve \"httpbin.example.com:$SECURE_INGRESS_PORT:$INGRESS_HOST\" \\\n  --cacert example_certs2/example.com.crt \"https://httpbin.example.com:$SECURE_INGRESS_PORT/status/418\"\n\n```\n\nOutput\n\n```bash\n...\nHTTP/2 418\n...\n    -=[ teapot ]=-\n\n       _...._\n     .'  _ _ `.\n    | .\"` ^ `\". _,\n    \\_;`\"---\"`|//\n      |       ;/\n      \\_     _/\n        `\"\"\"`\n```\n\nIf you try to access httpbin using the previous certificate chain, the attempt now fails:\n\n```bash\ncurl -v -HHost:httpbin.example.com --resolve \"httpbin.example.com:$SECURE_INGRESS_PORT:$INGRESS_HOST\" \\\n  --cacert example_certs1/example.com.crt \"https://httpbin.example.com:$SECURE_INGRESS_PORT/status/418\"\n```\n\nOutput\n\n```bash\n* Added httpbin.example.com:443:a.b.c.d to DNS cache\n* Hostname httpbin.example.com was found in DNS cache\n*   Trying a.b.c.d:443...\n* Connected to httpbin.example.com (a.b.c.d) port 443 (#0)\n* ALPN: offers h2,http/1.1\n* (304) (OUT), TLS handshake, Client hello (1):\n*  CAfile: example_certs1/example.com.crt\n*  CApath: none\n* (304) (IN), TLS handshake, Server hello (2):\n* (304) (IN), TLS handshake, Unknown (8):\n* (304) (IN), TLS handshake, Certificate (11):\n* SSL certificate problem: unable to get local issuer certificate\n* Closing connection 0\ncurl: (60) SSL certificate problem: unable to get local issuer certificate\nMore details here: https://curl.se/docs/sslcerts.html\n\ncurl failed to verify the legitimacy of the server and therefore could not\nestablish a secure connection to it. To learn more about this situation and\nhow to fix it, please visit the web page mentioned above.\n```\n\n## [Configure a TLS ingress gateway for multiple hosts](https://istio.io/latest/docs/tasks/traffic-management/ingress/secure-ingress/#configure-a-tls-ingress-gateway-for-multiple-hosts)\n\nYou can configure an ingress gateway for multiple hosts, httpbin.example.com and helloworld.example.com, for example. The ingress gateway is configured with unique credentials corresponding to each host.\n\nRestore the httpbin credentials from the previous example by deleting and recreating the secret with the original certificates and keys:\n\n```bash\nkubectl -n istio-system delete secret httpbin-credential\nkubectl create -n istio-system secret tls httpbin-credential \\\n  --key=example_certs1/httpbin.example.com.key \\\n  --cert=example_certs1/httpbin.example.com.crt\n\n```\n\nStart the helloworld-v1 sample:\n\n```bash\nkubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.20/samples/helloworld/helloworld.yaml -l service=helloworld\nkubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.20/samples/helloworld/helloworld.yaml  -l version=v1\n```\n\nCreate a helloworld-credential secret:\n\n```bash\nkubectl create -n istio-system secret tls helloworld-credential \\\n  --key=example_certs1/helloworld.example.com.key \\\n  --cert=example_certs1/helloworld.example.com.crt\n```\n\nConfigure the ingress gateway with hosts httpbin.example.com and helloworld.example.com:\n\nDefine a gateway with two server sections for port 443. Set the value of credentialName on each port to httpbin-credential and helloworld-credential respectively. Set TLS mode to SIMPLE.\n\n\n```bash\ncat <<EOF | kubectl apply -f -\napiVersion: networking.istio.io/v1alpha3\nkind: Gateway\nmetadata:\n  name: mygateway\nspec:\n  selector:\n    istio: ingressgateway # use istio default ingress gateway\n  servers:\n  - port:\n      number: 443\n      name: https-httpbin\n      protocol: HTTPS\n    tls:\n      mode: SIMPLE\n      credentialName: httpbin-credential\n    hosts:\n    - httpbin.example.com\n  - port:\n      number: 443\n      name: https-helloworld\n      protocol: HTTPS\n    tls:\n      mode: SIMPLE\n      credentialName: helloworld-credential\n    hosts:\n    - helloworld.example.com\nEOF\n```\n\nConfigure the gateway’s traffic routes by defining a corresponding virtual service.\n\n```bash\ncat <<EOF | kubectl apply -f -\napiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: helloworld\nspec:\n  hosts:\n  - helloworld.example.com\n  gateways:\n  - mygateway\n  http:\n  - match:\n    - uri:\n        exact: /hello\n    route:\n    - destination:\n        host: helloworld\n        port:\n          number: 5000\nEOF\n```\n\nSend an HTTPS request to helloworld.example.com:\n\n```bash\ncurl -v -HHost:helloworld.example.com --resolve \"helloworld.example.com:$SECURE_INGRESS_PORT:$INGRESS_HOST\" \\\n  --cacert example_certs1/example.com.crt \"https://helloworld.example.com:$SECURE_INGRESS_PORT/hello\"\n\n# Output\n# ...\n# HTTP/2 200\n# ...\n```\n\nSend an HTTPS request to httpbin.example.com and still get a teapot in return:\n\n```bash\ncurl -v -HHost:httpbin.example.com --resolve \"httpbin.example.com:$SECURE_INGRESS_PORT:$INGRESS_HOST\" \\\n  --cacert example_certs1/example.com.crt \"https://httpbin.example.com:$SECURE_INGRESS_PORT/status/418\"\n\n# Output\n# ...\n#     -=[ teapot ]=-\n\n#        _...._\n#      .'  _ _ `.\n#     | .\"` ^ `\". _,\n#     \\_;`\"---\"`|//\n#       |       ;/\n#       \\_     _/\n#         `\"\"\"`\n```\n\n## [Configure a mutual TLS ingress gateway](https://istio.io/latest/docs/tasks/traffic-management/ingress/secure-ingress/#configure-a-mutual-tls-ingress-gateway)\n\nYou can extend your gateway’s definition to support mutual TLS.\n\nChange the credentials of the ingress gateway by deleting its secret and creating a new one. The server uses the CA certificate to verify its clients, and we must use the key ca.crt to hold the CA certificate.\n\n```bash\nkubectl -n istio-system delete secret httpbin-credential\nkubectl create -n istio-system secret generic httpbin-credential \\\n  --from-file=tls.key=example_certs1/httpbin.example.com.key \\\n  --from-file=tls.crt=example_certs1/httpbin.example.com.crt \\\n  --from-file=ca.crt=example_certs1/example.com.crt\n\n```\n\nConfigure the ingress gateway:\n\n```bash\n# Change the gateway’s definition to set the TLS mode to MUTUAL.\ncat <<EOF | kubectl apply -f -\napiVersion: networking.istio.io/v1alpha3\nkind: Gateway\nmetadata:\n  name: mygateway\nspec:\n  selector:\n    istio: ingressgateway # use istio default ingress gateway\n  servers:\n  - port:\n      number: 443\n      name: https\n      protocol: HTTPS\n    tls:\n      mode: MUTUAL\n      credentialName: httpbin-credential # must be the same as secret\n    hosts:\n    - httpbin.example.com\nEOF\n\n```\n\nAttempt to send an HTTPS request using the prior approach and see how it fails:\n\n```bash\ncurl -v -HHost:httpbin.example.com --resolve \"httpbin.example.com:$SECURE_INGRESS_PORT:$INGRESS_HOST\" \\\n--cacert example_certs1/example.com.crt \"https://httpbin.example.com:$SECURE_INGRESS_PORT/status/418\"\n# curl: (56) LibreSSL SSL_read: LibreSSL/3.3.6: error:1404C45C:SSL routines:ST_OK:reason(1116), errno 0\n```\n\nPass a client certificate and private key to curl and resend the request. Pass your client’s certificate with the --cert flag and your private key with the --key flag to curl:\n\nThe `curl` command is configured to perform a secure HTTPS request to `httpbin.example.com`, using Mutual TLS (mTLS) for enhanced security through bidirectional authentication:\n\n- `-v`: Enables verbose output to show detailed request and response information, including the mTLS handshake process.\n- `-HHost:httpbin.example.com`: Sets the HTTP `Host` header to `httpbin.example.com`, explicitly defining the domain being requested.\n- `--resolve \"httpbin.example.com:$SECURE_INGRESS_PORT:$INGRESS_HOST\"`: Directs `curl` to resolve the domain `httpbin.example.com` to a specific IP address and port, effectively bypassing DNS lookup.\n- `--cacert example_certs1/example.com.crt`: Specifies the Certificate Authority (CA) certificate that `curl` uses to verify the server's SSL certificate, establishing trust.\n- `--cert example_certs1/client.example.com.crt` and `--key example_certs1/client.example.com.key`: Include the client's certificate and private key, respectively, required for the server to authenticate the client as part of mTLS.\n- `\"https://httpbin.example.com:$SECURE_INGRESS_PORT/status/418\"`: The URL being requested, using HTTPS to ensure encrypted communication, specifying the domain, port, and path.\n\nThis configuration demonstrates how to set up a `curl` request that utilizes mTLS, ensuring both the client and the server authenticate each other's certificates for a secure, encrypted communication channel.\n\n```bash\ncurl -v -HHost:httpbin.example.com --resolve \"httpbin.example.com:$SECURE_INGRESS_PORT:$INGRESS_HOST\" \\\n  --cacert example_certs1/example.com.crt --cert example_certs1/client.example.com.crt --key example_certs1/client.example.com.key \\\n  \"https://httpbin.example.com:$SECURE_INGRESS_PORT/status/418\"\n\n# ...\n#     -=[ teapot ]=-\n\n#        _...._\n#      .'  _ _ `.\n#     | .\"` ^ `\". _,\n#     \\_;`\"---\"`|//\n#       |       ;/\n#       \\_     _/\n#         `\"\"\"`\n```\n\n## Cleanup\n\n```bash\n# Delete the gateway configuration and routes:\nkubectl delete gateway mygateway\nkubectl delete virtualservice httpbin helloworld\n\n# Delete the secrets, certificates and keys:\nkubectl delete -n istio-system secret httpbin-credential helloworld-credential\nrm -rf ./example_certs1 ./example_certs2\n\n# Shutdown the httpbin and helloworld services:\nkubectl delete -f https://raw.githubusercontent.com/istio/istio/release-1.20/samples/httpbin/httpbin.yaml\nkubectl delete deployment helloworld-v1\nkubectl delete service helloworld\n```\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_064__gcp_gke__istio__ingres__secure_gateways__TLS__mTLS/helloworld.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: helloworld\n  labels:\n    app: helloworld\n    service: helloworld\nspec:\n  ports:\n  - port: 5000\n    name: http\n  selector:\n    app: helloworld\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: helloworld-v1\n  labels:\n    app: helloworld\n    version: v1\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: helloworld\n      version: v1\n  template:\n    metadata:\n      labels:\n        app: helloworld\n        version: v1\n    spec:\n      containers:\n      - name: helloworld\n        image: docker.io/istio/examples-helloworld-v1\n        resources:\n          requests:\n            cpu: \"100m\"\n        imagePullPolicy: IfNotPresent #Always\n        ports:\n        - containerPort: 5000\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: helloworld-v2\n  labels:\n    app: helloworld\n    version: v2\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: helloworld\n      version: v2\n  template:\n    metadata:\n      labels:\n        app: helloworld\n        version: v2\n    spec:\n      containers:\n      - name: helloworld\n        image: docker.io/istio/examples-helloworld-v2\n        resources:\n          requests:\n            cpu: \"100m\"\n        imagePullPolicy: IfNotPresent #Always\n        ports:\n        - containerPort: 5000\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_065__gcp_gke__ingress_gateway_without_TLS_Termination/ReadMe.md",
    "content": "# [Ingress Gateway without TLS Termination](https://istio.io/latest/docs/tasks/traffic-management/ingress/ingress-sni-passthrough/)\n\nThe Securing Gateways with HTTPS task describes how to configure HTTPS ingress access to an HTTP service. This example describes how to configure HTTPS ingress access to an HTTPS service, i.e., configure an ingress gateway to perform SNI passthrough, instead of TLS termination on incoming requests.\n\nThe example HTTPS service used for this task is a simple NGINX server. In the following steps you first deploy the NGINX service in your Kubernetes cluster. Then you configure a gateway to provide ingress access to the service via host nginx.example.com.\n\n## [Generate client and server certificates and keys](https://istio.io/latest/docs/tasks/traffic-management/ingress/ingress-sni-passthrough/#generate-client-and-server-certificates-and-keys)\n\nCreate a root certificate and private key to sign the certificate for your services:\n\n```bash\nmkdir example_certs\nopenssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -subj '/O=example Inc./CN=example.com' -keyout example_certs/example.com.key -out example_certs/example.com.crt\n```\n\nCreate a certificate and a private key for nginx.example.com:\n\n```bash\nopenssl req -out example_certs/nginx.example.com.csr -newkey rsa:2048 -nodes -keyout example_certs/nginx.example.com.key -subj \"/CN=nginx.example.com/O=some organization\"\nopenssl x509 -req -sha256 -days 365 -CA example_certs/example.com.crt -CAkey example_certs/example.com.key -set_serial 0 -in example_certs/nginx.example.com.csr -out example_certs/nginx.example.com.crt\n```\n\n## [Deploy nginx server](https://istio.io/latest/docs/tasks/traffic-management/ingress/ingress-sni-passthrough/#deploy-an-nginx-server)\n\nCreate a Kubernetes Secret to hold the server’s certificate.\n\n```bash\nkubectl create secret tls nginx-server-certs \\\n  --key example_certs/nginx.example.com.key \\\n  --cert example_certs/nginx.example.com.crt\n\n```\n\nCreate a configuration file for the NGINX server:\n\n```bash\ncat <<\\EOF > ./nginx.conf\nevents {\n}\n\nhttp {\n  log_format main '$remote_addr - $remote_user [$time_local]  $status '\n  '\"$request\" $body_bytes_sent \"$http_referer\" '\n  '\"$http_user_agent\" \"$http_x_forwarded_for\"';\n  access_log /var/log/nginx/access.log main;\n  error_log  /var/log/nginx/error.log;\n\n  server {\n    listen 443 ssl;\n\n    root /usr/share/nginx/html;\n    index index.html;\n\n    server_name nginx.example.com;\n    ssl_certificate /etc/nginx-server-certs/tls.crt;\n    ssl_certificate_key /etc/nginx-server-certs/tls.key;\n  }\n}\nEOF\n\n```\n\nCreate a Kubernetes ConfigMap to hold the configuration of the NGINX server:\n\n```bash\nkubectl create configmap nginx-configmap --from-file=nginx.conf=./nginx.conf\n\n```\n\nDeploy the NGINX server:\n\n```bash\ncat <<EOF | kubectl apply -f -\napiVersion: v1\nkind: Service\nmetadata:\n  name: my-nginx\n  labels:\n    run: my-nginx\nspec:\n  ports:\n  - port: 443\n    protocol: TCP\n  selector:\n    run: my-nginx\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: my-nginx\nspec:\n  selector:\n    matchLabels:\n      run: my-nginx\n  replicas: 1\n  template:\n    metadata:\n      labels:\n        run: my-nginx\n        sidecar.istio.io/inject: \"true\"\n    spec:\n      containers:\n      - name: my-nginx\n        image: nginx\n        ports:\n        - containerPort: 443\n        volumeMounts:\n        - name: nginx-config\n          mountPath: /etc/nginx\n          readOnly: true\n        - name: nginx-server-certs\n          mountPath: /etc/nginx-server-certs\n          readOnly: true\n      volumes:\n      - name: nginx-config\n        configMap:\n          name: nginx-configmap\n      - name: nginx-server-certs\n        secret:\n          secretName: nginx-server-certs\nEOF\n\n```\n\nTo test that the NGINX server was deployed successfully, send a request to the server from its sidecar proxy without checking the server’s certificate (use the -k option of curl). Ensure that the server’s certificate is printed correctly, i.e., common name (CN) is equal to nginx.example.com.\n\n```bash\nkubectl exec \"$(kubectl get pod  -l run=my-nginx -o jsonpath={.items..metadata.name})\" -c istio-proxy -- curl -sS -v -k --resolve nginx.example.com:443:127.0.0.1 https://nginx.example.com\n\n```\n\n## [Configure an ingress gateway](https://istio.io/latest/docs/tasks/traffic-management/ingress/ingress-sni-passthrough/#configure-an-ingress-gateway)\n\nDefine a Gateway exposing port 443 with passthrough TLS mode. This instructs the gateway to pass the ingress traffic “as is”, without terminating TLS:\n\n```bash\nkubectl apply -f - <<EOF\napiVersion: networking.istio.io/v1alpha3\nkind: Gateway\nmetadata:\n  name: mygateway\nspec:\n  selector:\n    istio: ingressgateway # use istio default ingress gateway\n  servers:\n  - port:\n      number: 443\n      name: https\n      protocol: HTTPS\n    tls:\n      mode: PASSTHROUGH\n    hosts:\n    - nginx.example.com\nEOF\n```\n\nConfigure routes for traffic entering via the Gateway:\n\n```bash\nkubectl apply -f - <<EOF\napiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: nginx\nspec:\n  hosts:\n  - nginx.example.com\n  gateways:\n  - mygateway\n  tls:\n  - match:\n    - port: 443\n      sniHosts:\n      - nginx.example.com\n    route:\n    - destination:\n        host: my-nginx\n        port:\n          number: 443\nEOF\n\n```\n\n```bash\nexport INGRESS_HOST=$(kubectl -n \"$INGRESS_NS\" get service \"$INGRESS_NAME\" -o jsonpath='{.status.loadBalancer.ingress[0].ip}')\nexport INGRESS_PORT=$(kubectl -n \"$INGRESS_NS\" get service \"$INGRESS_NAME\" -o jsonpath='{.spec.ports[?(@.name==\"http2\")].port}')\nexport SECURE_INGRESS_PORT=$(kubectl -n \"$INGRESS_NS\" get service \"$INGRESS_NAME\" -o jsonpath='{.spec.ports[?(@.name==\"https\")].port}')\nexport TCP_INGRESS_PORT=$(kubectl -n \"$INGRESS_NS\" get service \"$INGRESS_NAME\" -o jsonpath='{.spec.ports[?(@.name==\"tcp\")].port}')\n\n```\n\nAccess the NGINX service from outside the cluster. Note that the correct certificate is returned by the server and it is successfully verified (SSL certificate verify ok is printed).\n\n```bash\ncurl -v --resolve \"nginx.example.com:$SECURE_INGRESS_PORT:$INGRESS_HOST\" --cacert example_certs/example.com.crt \"https://nginx.example.com:$SECURE_INGRESS_PORT\"\n\n```\n\nOutput\n\n```bash\n* Server certificate:\n*  subject: CN=nginx.example.com; O=some organization\n*  start date: Feb 11 10:59:38 2024 GMT\n*  expire date: Feb 10 10:59:38 2025 GMT\n*  common name: nginx.example.com (matched)\n*  issuer: O=example Inc.; CN=example.com\n*  SSL certificate verify ok.\n...\n< HTTP/1.1 200 OK\n< Server: nginx/1.25.3\n...\n<html>\n<head>\n<title>Welcome to nginx!</title>\n```\n\n## Cleanup\n\n```bash\n# Delete the gateway configuration and route:\nkubectl delete gateway mygateway\nkubectl delete virtualservice nginx\n# Remove the NGINX resources and configuration file:\nkubectl delete secret nginx-server-certs\nkubectl delete configmap nginx-configmap\nkubectl delete service my-nginx\nkubectl delete deployment my-nginx\n# rm ./nginx.conf\n# Delete the certificates and keys:\nrm -rf ./example_certs\n\n```"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_065__gcp_gke__ingress_gateway_without_TLS_Termination/nginx.conf",
    "content": "events {\n}\n\nhttp {\n  log_format main '$remote_addr - $remote_user [$time_local]  $status '\n  '\"$request\" $body_bytes_sent \"$http_referer\" '\n  '\"$http_user_agent\" \"$http_x_forwarded_for\"';\n  access_log /var/log/nginx/access.log main;\n  error_log  /var/log/nginx/error.log;\n\n  server {\n    listen 443 ssl;\n\n    root /usr/share/nginx/html;\n    index index.html;\n\n    server_name nginx.example.com;\n    ssl_certificate /etc/nginx-server-certs/tls.crt;\n    ssl_certificate_key /etc/nginx-server-certs/tls.key;\n  }\n}\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_066__gcp_gke__ingress_kubernetes_ingress/ReadMe.md",
    "content": "# [Kubernetes Ingress](https://istio.io/latest/docs/tasks/traffic-management/ingress/kubernetes-ingress/)\n\nThis task describes how to configure Istio to expose a service outside of the service mesh cluster, using the Kubernetes Ingress Resource.\n\nStart the httpbin sample, which will serve as the target service for ingress traffic:\n\n```bash\nkubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.20/samples/httpbin/httpbin.yaml\n```\n\n```bash\nexport INGRESS_NAME=istio-ingressgateway                                                                                      \nexport INGRESS_NS=istio-system    \nkubectl get svc \"$INGRESS_NAME\" -n \"$INGRESS_NS\"\n```\n\n```bash\nexport INGRESS_HOST=$(kubectl -n \"$INGRESS_NS\" get service \"$INGRESS_NAME\" -o jsonpath='{.status.loadBalancer.ingress[0].ip}')\nexport INGRESS_PORT=$(kubectl -n \"$INGRESS_NS\" get service \"$INGRESS_NAME\" -o jsonpath='{.spec.ports[?(@.name==\"http2\")].port}')\nexport SECURE_INGRESS_PORT=$(kubectl -n \"$INGRESS_NS\" get service \"$INGRESS_NAME\" -o jsonpath='{.spec.ports[?(@.name==\"https\")].port}')\nexport TCP_INGRESS_PORT=$(kubectl -n \"$INGRESS_NS\" get service \"$INGRESS_NAME\" -o jsonpath='{.spec.ports[?(@.name==\"tcp\")].port}')\n```\n\n## [Configuring ingress using an Ingress resource](https://istio.io/latest/docs/tasks/traffic-management/ingress/kubernetes-ingress/#configuring-ingress-using-an-ingress-resource)\n\nCreate an Ingress resource:\n\nThe kubernetes.io/ingress.class annotation is required to tell the Istio gateway controller that it should handle this Ingress, otherwise it will be ignored.\n\n```bash\nkubectl apply -f - <<EOF\napiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  annotations:\n    kubernetes.io/ingress.class: istio\n  name: ingress\nspec:\n  rules:\n  - host: httpbin.example.com\n    http:\n      paths:\n      - path: /status\n        pathType: Prefix\n        backend:\n          service:\n            name: httpbin\n            port:\n              number: 8000\nEOF\n\n```\n\nAccess the httpbin service using curl:\n\n```bash\ncurl -s -I -HHost:httpbin.example.com \"http://$INGRESS_HOST:$INGRESS_PORT/status/200\"\n\n```\n\nOutput\n\n```bash\nHTTP/1.1 200 OK\nserver: istio-envoy\ndate: Wed, 14 Feb 2024 10:30:13 GMT\ncontent-type: text/html; charset=utf-8\naccess-control-allow-origin: *\naccess-control-allow-credentials: true\ncontent-length: 0\nx-envoy-upstream-service-time: 21\n```\n\nAccess any other URL that has not been explicitly exposed. You should see an HTTP 404 error:\n\n```bash\ncurl -s -I -HHost:httpbin.example.com \"http://$INGRESS_HOST:$INGRESS_PORT/headers\"\n```\n\nOutput\n\n```bash\nHTTP/1.1 404 Not Found\ndate: Wed, 14 Feb 2024 10:30:38 GMT\nserver: istio-envoy\ntransfer-encoding: chunked\n```\n\n## [Specifying Ingressclass](https://istio.io/latest/docs/tasks/traffic-management/ingress/kubernetes-ingress/#specifying-ingressclass)\n\n## Cleanup\n\n```bash\nkubectl delete ingress ingress\nkubectl delete -f https://raw.githubusercontent.com/istio/istio/release-1.20/samples/httpbin/httpbin.yaml\n```\n"
  },
  {
    "path": "home/containers/kubernetes/taskset_kubernetes_containers/task_067__gcp_gke__egress__accessing_external_service/ReadMe.md",
    "content": "# [Accessing External Services](https://istio.io/latest/docs/tasks/traffic-management/egress/egress-control/)\n\nThis task shows you how to access external services in three different ways:\n\n- Allow the Envoy proxy to pass requests through to services that are not configured inside the mesh.\n- Configure service entries to provide controlled access to external services.\n- Completely bypass the Envoy proxy for a specific range of IPs.\n\n## [Before you begin](https://istio.io/latest/docs/tasks/traffic-management/egress/egress-control/#before-you-begin)\n\nDeploy the sleep sample app to use as a test source for sending requests. If you have automatic sidecar injection enabled, run the following command to deploy the sample app:\n\n```bash\nkubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.20/samples/sleep/sleep.yaml\n```\n\nSet the SOURCE_POD environment variable to the name of your source pod:\n\n```bash\nexport SOURCE_POD=$(kubectl get pod -l app=sleep -o jsonpath='{.items..metadata.name}')\n\n```\n\n## [Envoy passthrough to external services](https://istio.io/latest/docs/tasks/traffic-management/egress/egress-control/#envoy-passthrough-to-external-services)\n\nTo see this approach in action you need to ensure that your Istio installation is configured with the meshConfig.outboundTrafficPolicy.mode option set to ALLOW_ANY. Unless you explicitly set it to REGISTRY_ONLY mode when you installed Istio, it is probably enabled by default.\n\n```bash\nkubectl get istiooperator installed-state -n istio-system -o jsonpath='{.spec.meshConfig.outboundTrafficPolicy.mode}'\n# You should either see ALLOW_ANY or no output (default ALLOW_ANY).\n```\n\nMake a couple of requests to external HTTPS services from the SOURCE_POD to confirm successful 200 responses:\n\n```bash\nkubectl exec \"$SOURCE_POD\" -c sleep -- curl -sSI https://www.google.com | grep  \"HTTP/\"; kubectl exec \"$SOURCE_POD\" -c sleep -- curl -sI https://edition.cnn.com | grep \"HTTP/\"\n# Output\n# HTTP/2 200 \n# HTTP/2 200\n```\n\n## [Controlled access to external services](https://istio.io/latest/docs/tasks/traffic-management/egress/egress-control/#controlled-access-to-external-services)\n\nTo demonstrate the controlled way of enabling access to external services, you need to change the meshConfig.outboundTrafficPolicy.mode option from the ALLOW_ANY mode to the REGISTRY_ONLY mode.\n\nChange the meshConfig.outboundTrafficPolicy.mode option to REGISTRY_ONLY.\n\n```bash\nistioctl install --set profile=demo --set meshConfig.outboundTrafficPolicy.mode=REGISTRY_ONLY -y\n```\n\n```bash\nkubectl get istiooperator installed-state -n istio-system -o jsonpath='{.spec.meshConfig.outboundTrafficPolicy.mode}'\n# REGISTRY_ONLY\n```\n\nMake a couple of requests to external HTTPS services from SOURCE_POD to verify that they are now blocked:\n\n```bash\nkubectl exec \"$SOURCE_POD\" -c sleep -- curl -sI https://www.google.com | grep  \"HTTP/\"; kubectl exec \"$SOURCE_POD\" -c sleep -- curl -sI https://edition.cnn.com | grep \"HTTP/\"\n# command terminated with exit code 35\n# command terminated with exit code 35\n```\n\nAccess an external HTTP service\n\nCreate a ServiceEntry to allow access to an external HTTP service.\n\n```bash\nkubectl apply -f - <<EOF\napiVersion: networking.istio.io/v1alpha3\nkind: ServiceEntry\nmetadata:\n  name: httpbin-ext\nspec:\n  hosts:\n  - httpbin.org\n  ports:\n  - number: 80\n    name: http\n    protocol: HTTP\n  resolution: DNS\n  location: MESH_EXTERNAL\nEOF\n\n```\n\nMake a request to the external HTTP service from SOURCE_POD:\n\n```bash\nkubectl exec \"$SOURCE_POD\" -c sleep -- curl -sS http://httpbin.org/headers\n\n```\n\nOutput\n\n```bash\n# Note the headers added by the Istio sidecar proxy: X-Envoy-Decorator-Operation.\n{\n  \"headers\": {\n    \"Accept\": \"*/*\",\n    \"Host\": \"httpbin.org\",\n    ...\n    \"X-Envoy-Decorator-Operation\": \"httpbin.org:80/*\",\n    ...\n  }\n}\n```\n\nAccess an external HTTPS service\n\nCreate a ServiceEntry to allow access to an external HTTPS service.\n\n```bash\nkubectl apply -f - <<EOF\napiVersion: networking.istio.io/v1alpha3\nkind: ServiceEntry\nmetadata:\n  name: google\nspec:\n  hosts:\n  - www.google.com\n  ports:\n  - number: 443\n    name: https\n    protocol: HTTPS\n  resolution: DNS\n  location: MESH_EXTERNAL\nEOF\n```\n\nMake a request to the external HTTPS service from SOURCE_POD:\n\n```bash\nkubectl exec \"$SOURCE_POD\" -c sleep -- curl -sSI https://www.google.com | grep  \"HTTP/\"\n```\n\nOutput\n\n```bash\nHTTP/2 200 \n```\n\nCheck the log of the sidecar proxy of SOURCE_POD:\n\n```bash\n## First one is Blocked request\n[2024-02-14T11:07:41.017Z] \"- - -\" 0 UH - - \"-\" 0 0 0 - \"-\" \"-\" \"-\" \"-\" \"-\" BlackHoleCluster - 209.85.200.99:443 10.8.1.35:54818 - -\n## This is after making the change\n[2024-02-14T11:07:59.286Z] \"- - -\" 0 - - - \"-\" 844 5214 95 - \"-\" \"-\" \"-\" \"-\" \"209.85.200.147:443\" outbound|443||www.google.com 10.8.1.35:38416 209.85.200.147:443 10.8.1.35:38412 www.google.com -\n```\n\nManage traffic to external services\n\nSimilar to inter-cluster requests, Istio routing rules can also be set for external services that are accessed using ServiceEntry configurations. In this example, you set a timeout rule on calls to the httpbin.org service.\n\nFrom inside the pod being used as the test source, make a curl request to the /delay endpoint of the httpbin.org external service:\n\n```bash\nkubectl exec \"$SOURCE_POD\" -c sleep -- time curl -o /dev/null -sS -w \"%{http_code}\\n\" http://httpbin.org/delay/5\n\n```\n\nOutput\n\n```bash\n200\nreal    0m 5.09s\nuser    0m 0.00s\nsys     0m 0.00s\n```\n\nUse kubectl to set a 3s timeout on calls to the httpbin.org external service:\n\n```bash\nkubectl apply -f - <<EOF\napiVersion: networking.istio.io/v1alpha3\nkind: VirtualService\nmetadata:\n  name: httpbin-ext\nspec:\n  hosts:\n    - httpbin.org\n  http:\n  - timeout: 3s\n    route:\n      - destination:\n          host: httpbin.org\n        weight: 100\nEOF\n\n```\n\nWait a few seconds, then make the curl request again:\n\n```bash\nkubectl exec \"$SOURCE_POD\" -c sleep -- time curl -o /dev/null -sS -w \"%{http_code}\\n\" http://httpbin.org/delay/5\n```\n\nOutput\n\n```bash\n504\nreal    0m 3.04s\nuser    0m 0.00s\nsys     0m 0.00s\n```\n\nCleanup the controlled access to external services\n\n```bash\nkubectl delete serviceentry httpbin-ext google\nkubectl delete virtualservice httpbin-ext --ignore-not-found=true\n\n```\n\nDirect access to external services\n\nIf you want to completely bypass Istio for a specific IP range, you can configure the Envoy sidecars to prevent them from intercepting external requests. To set up the bypass, change either the global.proxy.includeIPRanges or the global.proxy.excludeIPRanges configuration option and update the istio-sidecar-injector configuration map using the kubectl apply command. This can also be configured on a pod by setting corresponding annotations such as traffic.sidecar.istio.io/includeOutboundIPRanges. After updating the istio-sidecar-injector configuration, it affects all future application pod deployments.\n\nA simple way to exclude all external IPs from being redirected to the sidecar proxy is to set the global.proxy.includeIPRanges configuration option to the IP range or ranges used for internal cluster services. These IP range values depend on the platform where your cluster runs.\n\nDetermine the internal IP ranges for your platform\n\nSet the value of `values.global.proxy.includeIPRanges` according to your cluster provider.\n\nConfiguring the proxy bypass\n\n> Remove the service entry and virtual service previously deployed in this guide.\n\nUpdate your istio-sidecar-injector configuration map using the IP ranges specific to your platform. For example, if the range is 10.0.0.1/24, use the following command:\n\n```bash\nistioctl install --set profile=demo --set values.global.proxy.includeIPRanges=\"10.0.0.1/24\" \n```\n\n```bash\nkubectl exec \"$SOURCE_POD\" -c sleep -- curl -sS http://httpbin.org/headers\n```\n\nOutput before deleting the source pod\n\n```bash\n{\n  \"headers\": {\n    \"Accept\": \"*/*\", \n    \"Host\": \"httpbin.org\", \n    \"User-Agent\": \"curl/8.6.0\", \n    \"X-Amzn-Trace-Id\": \"Root=1-65cca619-xxxxxxxx\", \n    \"X-B3-Sampled\": \"1\", \n    \"X-B3-Spanid\": \"xxxxx\", \n    \"X-B3-Traceid\": \"xxxxx\", \n    \"X-Envoy-Attempt-Count\": \"1\", \n    \"X-Envoy-Peer-Metadata\": \"xxxxxxxx\", \n    \"X-Envoy-Peer-Metadata-Id\": \"sidecar~1xxxxxxx8c89.default~default.svc.cluster.local\"\n  }\n}\n```\n\nAfter deleting the pod\n\n```bash\n$ kubectl get pods                                                                                                     \nNAME                    READY   STATUS    RESTARTS   AGE\nsleep-9454cc476-l8c89   2/2     Running   0          43m\n\n$ kubectl delete pod sleep-9454cc476-l8c89             \npod \"sleep-9454cc476-l8c89\" deleted\n\n$ export SOURCE_POD=$(kubectl get pod -l app=sleep -o jsonpath='{.items..metadata.name}')\n\nkubectl exec \"$SOURCE_POD\" -c sleep -- curl -sS http://httpbin.org/headers\n\n{\n  \"headers\": {\n    \"Accept\": \"*/*\", \n    \"Host\": \"httpbin.org\", \n    \"User-Agent\": \"curl/8.6.0\", \n    \"X-Amzn-Trace-Id\": \"Root=1-65cca6c5-xxxxxxxxx\"\n  }\n}\n```\n\nUnlike accessing external services through HTTP or HTTPS, you don’t see any headers related to the Istio sidecar and the requests sent to external services do not appear in the log of the sidecar. Bypassing the Istio sidecars means you can no longer monitor the access to external services.\n\n## Cleanup the direct access to external services\n\n```bash\nistioctl install --set profile=demo -y \n```\n\n## Cleanup\n\n```bash\nkubectl delete -f https://raw.githubusercontent.com/istio/istio/release-1.20/samples/sleep/sleep.yaml\n```\n"
  },
  {
    "path": "home/databases/mongo/ReadMe-static.md",
    "content": "# Mongo\n\n## Tools\n\n- [mongodb compass](https://www.mongodb.com/try/download/compass)\n\n\n"
  },
  {
    "path": "home/databases/mongo/ReadMe.md",
    "content": "# taskset_mongo_databases\n\n> [Auto](https://github.com/codeaprendiz/learn_fullstack/blob/main/home/php/intermediate/taskset_intermediate_php/task_004_createGlobalMarkdownTable/generate-readme.php) generated ReadMe. Number of tasks: 4\n\n| Task     | Description                                                                                        |\n|----------|----------------------------------------------------------------------------------------------------|\n| task_001 | [task_001_connecting_to_db](taskset_mongo_databases/task_001_connecting_to_db)                     |\n| task_002 | [task_002_creating_db_inserting_data](taskset_mongo_databases/task_002_creating_db_inserting_data) |\n| task_003 | [task_003_mongodump](taskset_mongo_databases/task_003_mongodump)                                   |\n| task_004 | [task_004_mongorestore](taskset_mongo_databases/task_004_mongorestore)                             |\n"
  },
  {
    "path": "home/databases/mongo/taskset_mongo_databases/task_001_connecting_to_db/ReadMe.md",
    "content": "- Use the following command \n\n```bash\n$ mongo -u username -p password mongodb-host.company.com:27017/admin\n\n$ mongo \"mongodb+srv://<db_host>/<db_name>\" --username <username> --password <password>\n```"
  },
  {
    "path": "home/databases/mongo/taskset_mongo_databases/task_002_creating_db_inserting_data/ReadMe.md",
    "content": "### Creating new database\n\n\n```\n> show dbs\nadmin  0.000GB\nlocal  2.576GB\n> use newdb1\nswitched to db newdb1\n> db.user.insert({name: \"test\", age: 205})\nWriteResult({ \"nInserted\" : 1 })\n> show dbs\nadmin   0.000GB\nlocal   2.605GB\nnewdb1  0.000GB\n```\n"
  },
  {
    "path": "home/databases/mongo/taskset_mongo_databases/task_003_mongodump/ReadMe.md",
    "content": "- For taking the mongodump of single database \n\n```bash\n$ mongodump --host <hostname> --port 27017 --username <user> --password <password> --authenticationDatabase <usually-admin db> --db <name-of-database-whose-backup-needs-to-be-taken> --gzip --archive=filename.zip\n```\n\n- For taking complete all databases backup\n\n```bash\n$ mongodump --host <hostname> --port 27017 --username <username> --password <password> --gzip --archive=standalone-complete-host.gzip\n```"
  },
  {
    "path": "home/databases/mongo/taskset_mongo_databases/task_004_mongorestore/ReadMe.md",
    "content": "### mongorestore\n\n#### Restoring the mongodump back into mongodb database\n\n- `standalone-complete-host-1616062771.gzip` includes the complete backup including all the databases.\n\n- `--nsInclude` include only these databases.\n\n- `--drop` drop the existing collections if exist\n\n- Ensuring we are \n```bash\n$ uri_complete=mongodb://username:password@mongodbhost.company.com:27017/admin:27017/admin\n\n$ mongorestore --uri=$uri_complete -v --gzip --archive=standalone-complete-host-1616062771.gzip --nsInclude=\"module-*\" --nsInclude=\"cli*\" --numInsertionWorkersPerCollection=15 --bypassDocumentValidation --drop --preserveUUID --convertLegacyIndexes\n```\n\n\n#### Restoring dump of single database\n- Note the protocol here is `mongodb+srv`\n\n```bash\nmongorestore --uri=\"mongodb+srv://<username>:<password>@<hostname>/<database-to-be-restored>?retryWrites=true&w=majority\" --gzip --archive=filename.gzip --numInsertionWorkersPerCollection=15 --bypassDocumentValidation --drop --convertLegacyIndexes\n```"
  },
  {
    "path": "home/databases/mssql/ReadMe.md",
    "content": "# taskset_mssql_databases\n\n> [Auto](https://github.com/codeaprendiz/learn_fullstack/blob/main/home/php/intermediate/taskset_intermediate_php/task_004_createGlobalMarkdownTable/generate-readme.php) generated ReadMe. Number of tasks: 37\n# MS-SQL\n\n## [IDE](https://learn.microsoft.com/en-us/sql/azure-data-studio/download-azure-data-studio?view=sql-server-ver16&tabs=redhat-install%2Credhat-uninstall#download-azure-data-studio)\n\nPlugins\n\n- MySQL\n- PostgreSQL\n- SandDance for Azure Data Studio\n- SQL Database Projects\n- SQL Server Schema Compare\n- Visual Studio IntelliCode\n\n## [Backup](https://learn.microsoft.com/en-us/sql/t-sql/statements/backup-transact-sql?view=sql-server-ver16)\n\n- [COMPRESSION](https://learn.microsoft.com/en-us/sql/t-sql/statements/backup-transact-sql?view=sql-server-ver16#compression) : Explicitly enables backup compression.\n- [FORMAT](https://learn.microsoft.com/en-us/sql/t-sql/statements/backup-transact-sql?view=sql-server-ver16#-noformat--format-) Specifies that a new media set be created.\n- [MEDIANAME](https://learn.microsoft.com/en-us/sql/t-sql/statements/backup-transact-sql?view=sql-server-ver16#medianame---media_name--media_name_variable-) : Specifies the media name for the entire backup media set\n- [NORECOVERY](https://learn.microsoft.com/en-us/sql/t-sql/statements/backup-transact-sql?view=sql-server-ver16#-norecovery--standby--undo_file_name-) : Backs up the tail of the log and leaves the database in the RESTORING state\n- [STATS](https://learn.microsoft.com/en-us/sql/t-sql/statements/backup-transact-sql?view=sql-server-ver16#stats---percentage-) : Displays a message each time another percentage completes, and is used to gauge progress\n\n## [Restore](https://learn.microsoft.com/en-us/sql/t-sql/statements/restore-statements-arguments-transact-sql?view=sql-server-ver16)\n\n- [FILE](https://learn.microsoft.com/en-us/sql/t-sql/statements/restore-statements-arguments-transact-sql?view=sql-server-ver16#file---logical_file_name_in_backup-logical_file_name_in_backup_var) : Names a file to include in the database restore.\n- [NOUNLOAD](https://learn.microsoft.com/en-us/sql/t-sql/statements/restore-statements-arguments-transact-sql?view=sql-server-ver16#-unload--nounload-) : Specifies that after the RESTORE operation the tape remains loaded on the tape drive.\n- [STATS](https://learn.microsoft.com/en-us/sql/t-sql/statements/restore-statements-arguments-transact-sql?view=sql-server-ver16#stats---percentage-) : Displays a message each time another percentage completes, and is used to gauge progress\n\n## Blogs\n\n- [aws.amazon.com » Backup SQL Server databases to Amazon S3](https://aws.amazon.com/blogs/modernizing-with-aws/backup-sql-server-to-amazon-s3/)\n\n## Upgrade Considerations\n\n- [learn.microsoft.com » Restore a Database to a New Location (SQL Server)](https://learn.microsoft.com/en-us/sql/relational-databases/backup-restore/restore-a-database-to-a-new-location-sql-server?view=sql-server-ver16)\n\n> If you restore a SQL Server 2005 (9.x) or higher database to SQL Server, the database is automatically upgraded.\n\n- [learn.microsoft.com » Upgrade SQL Server](https://learn.microsoft.com/en-us/sql/database-engine/install-windows/upgrade-sql-server?view=sql-server-ver16)\n\n| Task     | Description                                                                                                                                                            |\n|----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| task_000 | [task_000_docs_and_vscode_setup](taskset_mssql_databases/task_000_docs_and_vscode_setup)                                                                               |\n| task_001 | [task_001_connecting_to_db](taskset_mssql_databases/task_001_connecting_to_db)                                                                                         |\n| task_002 | [task_002_show_databases](taskset_mssql_databases/task_002_show_databases)                                                                                             |\n| task_003 | [task_003_drop_database](taskset_mssql_databases/task_003_drop_database)                                                                                               |\n| task_004 | [task_004_get_current_database](taskset_mssql_databases/task_004_get_current_database)                                                                                 |\n| task_005 | [task_005_create_database](taskset_mssql_databases/task_005_create_database)                                                                                           |\n| task_006 | [task_006_check_version](taskset_mssql_databases/task_006_check_version)                                                                                               |\n| task_007 | [task_007_create_database__if_not_exists__vars_navchar](taskset_mssql_databases/task_007_create_database__if_not_exists__vars_navchar)                                 |\n| task_008 | [task_008_count_tables_in_database](taskset_mssql_databases/task_008_count_tables_in_database)                                                                         |\n| task_009 | [task_009_switch_to_particular_db](taskset_mssql_databases/task_009_switch_to_particular_db)                                                                           |\n| task_010 | [task_010_create_table__if_not_exists](taskset_mssql_databases/task_010_create_table__if_not_exists)                                                                   |\n| task_011 | [task_011_insert_records__if_not_exists](taskset_mssql_databases/task_011_insert_records__if_not_exists)                                                               |\n| task_012 | [task_012_select_all_from_table](taskset_mssql_databases/task_012_select_all_from_table)                                                                               |\n| task_013 | [task_013_create_credential_and_select_credential](taskset_mssql_databases/task_013_create_credential_and_select_credential)                                           |\n| task_014 | [task_014_full_backup_to_s3_compatible_object_storage__with_format](taskset_mssql_databases/task_014_full_backup_to_s3_compatible_object_storage__with_format)         |\n| task_015 | [task_015_get_connection_info__kill](taskset_mssql_databases/task_015_get_connection_info__kill)                                                                       |\n| task_016 | [task_016_full_backup_to_disk__with_format](taskset_mssql_databases/task_016_full_backup_to_disk__with_format)                                                         |\n| task_017 | [task_017_show_all_tables_in_specific_database](taskset_mssql_databases/task_017_show_all_tables_in_specific_database)                                                 |\n| task_018 | [task_018_inspect_backup_to_disk__with_init_and_differential](taskset_mssql_databases/task_018_inspect_backup_to_disk__with_init_and_differential)                     |\n| task_019 | [task_019_restore_full_backup__from_disk](taskset_mssql_databases/task_019_restore_full_backup__from_disk)                                                             |\n| task_020 | [task_020_full_backup_to_disk__with_init_and_differential](taskset_mssql_databases/task_020_full_backup_to_disk__with_init_and_differential)                           |\n| task_021 | [task_021_restore_from_full_backup_on_disk__with_init_and_differential](taskset_mssql_databases/task_021_restore_from_full_backup_on_disk__with_init_and_differential) |\n| task_022 | [task_022_full_base_and_differential_backup_to_s3](taskset_mssql_databases/task_022_full_base_and_differential_backup_to_s3)                                           |\n| task_023 | [task_023_restore_full_base_and_differential_backup_to_s3](taskset_mssql_databases/task_023_restore_full_base_and_differential_backup_to_s3)                           |\n| task_024 | [task_024_get_current_date_and_time](taskset_mssql_databases/task_024_get_current_date_and_time)                                                                       |\n| task_025 | [task_025_licence_and_version](taskset_mssql_databases/task_025_licence_and_version)                                                                                   |\n| task_026 | [task_026_check_default_schema](taskset_mssql_databases/task_026_check_default_schema)                                                                                 |\n| task_027 | [task_027_stored_procedures](taskset_mssql_databases/task_027_stored_procedures)                                                                                       |\n| task_028 | [task_028_create_and_validate_jobs](taskset_mssql_databases/task_028_create_and_validate_jobs)                                                                         |\n| task_029 | [task_029_add_jobstep_and_validate](taskset_mssql_databases/task_029_add_jobstep_and_validate)                                                                         |\n| task_030 | [task_030_add_job_schedule_and_validate](taskset_mssql_databases/task_030_add_job_schedule_and_validate)                                                               |\n| task_031 | [task_031_attach_schedule_to_job_and_validate](taskset_mssql_databases/task_031_attach_schedule_to_job_and_validate)                                                   |\n| task_032 | [task_032_add_job_to_server_and_validate](taskset_mssql_databases/task_032_add_job_to_server_and_validate)                                                             |\n| task_033 | [task_033_logical_backup](taskset_mssql_databases/task_033_logical_backup)                                                                                             |\n| task_034 | [task_034_check_when_tables_in_given_database_were_last_updated](taskset_mssql_databases/task_034_check_when_tables_in_given_database_were_last_updated)               |\n| task_035 | [task_035_slow_queries](taskset_mssql_databases/task_035_slow_queries)                                                                                                 |\n| task_036 | [task_036_monitoring_using_influxdb_telegraf_grafana](taskset_mssql_databases/task_036_monitoring_using_influxdb_telegraf_grafana)                                     |\n"
  },
  {
    "path": "home/databases/mssql/ReadMe_static.md",
    "content": "# MS-SQL\n\n## [IDE](https://learn.microsoft.com/en-us/sql/azure-data-studio/download-azure-data-studio?view=sql-server-ver16&tabs=redhat-install%2Credhat-uninstall#download-azure-data-studio)\n\nPlugins\n\n- MySQL\n- PostgreSQL\n- SandDance for Azure Data Studio\n- SQL Database Projects\n- SQL Server Schema Compare\n- Visual Studio IntelliCode\n\n## [Backup](https://learn.microsoft.com/en-us/sql/t-sql/statements/backup-transact-sql?view=sql-server-ver16)\n\n- [COMPRESSION](https://learn.microsoft.com/en-us/sql/t-sql/statements/backup-transact-sql?view=sql-server-ver16#compression) : Explicitly enables backup compression.\n- [FORMAT](https://learn.microsoft.com/en-us/sql/t-sql/statements/backup-transact-sql?view=sql-server-ver16#-noformat--format-) Specifies that a new media set be created.\n- [MEDIANAME](https://learn.microsoft.com/en-us/sql/t-sql/statements/backup-transact-sql?view=sql-server-ver16#medianame---media_name--media_name_variable-) : Specifies the media name for the entire backup media set\n- [NORECOVERY](https://learn.microsoft.com/en-us/sql/t-sql/statements/backup-transact-sql?view=sql-server-ver16#-norecovery--standby--undo_file_name-) : Backs up the tail of the log and leaves the database in the RESTORING state\n- [STATS](https://learn.microsoft.com/en-us/sql/t-sql/statements/backup-transact-sql?view=sql-server-ver16#stats---percentage-) : Displays a message each time another percentage completes, and is used to gauge progress\n\n## [Restore](https://learn.microsoft.com/en-us/sql/t-sql/statements/restore-statements-arguments-transact-sql?view=sql-server-ver16)\n\n- [FILE](https://learn.microsoft.com/en-us/sql/t-sql/statements/restore-statements-arguments-transact-sql?view=sql-server-ver16#file---logical_file_name_in_backup-logical_file_name_in_backup_var) : Names a file to include in the database restore.\n- [NOUNLOAD](https://learn.microsoft.com/en-us/sql/t-sql/statements/restore-statements-arguments-transact-sql?view=sql-server-ver16#-unload--nounload-) : Specifies that after the RESTORE operation the tape remains loaded on the tape drive.\n- [STATS](https://learn.microsoft.com/en-us/sql/t-sql/statements/restore-statements-arguments-transact-sql?view=sql-server-ver16#stats---percentage-) : Displays a message each time another percentage completes, and is used to gauge progress\n\n## Blogs\n\n- [aws.amazon.com » Backup SQL Server databases to Amazon S3](https://aws.amazon.com/blogs/modernizing-with-aws/backup-sql-server-to-amazon-s3/)\n\n## Upgrade Considerations\n\n- [learn.microsoft.com » Restore a Database to a New Location (SQL Server)](https://learn.microsoft.com/en-us/sql/relational-databases/backup-restore/restore-a-database-to-a-new-location-sql-server?view=sql-server-ver16)\n\n> If you restore a SQL Server 2005 (9.x) or higher database to SQL Server, the database is automatically upgraded.\n\n- [learn.microsoft.com » Upgrade SQL Server](https://learn.microsoft.com/en-us/sql/database-engine/install-windows/upgrade-sql-server?view=sql-server-ver16)\n"
  },
  {
    "path": "home/databases/mssql/taskset_mssql_databases/ReadMe-static.md",
    "content": "# ReadMe-static\n\n\n- [stackoveflow.com » running job once per day](https://stackoverflow.com/questions/5471080/how-can-i-schedule-a-job-to-run-a-sql-query-daily)"
  },
  {
    "path": "home/databases/mssql/taskset_mssql_databases/task_000_docs_and_vscode_setup/ReadMe.md",
    "content": "# Docs\n\n- [learn.microsoft.com » sqlcmd - use the utility](https://learn.microsoft.com/en-us/sql/tools/sqlcmd/sqlcmd-use-utility?view=sql-server-ver16)\n- [learn.microsoft.com » Monitor performance by using the Query Store](https://learn.microsoft.com/en-us/sql/relational-databases/performance/monitoring-performance-by-using-the-query-store?view=sql-server-ver16)\n- [learn.microsoft.com » Performance Dashboard](https://learn.microsoft.com/en-us/sql/relational-databases/performance/performance-dashboard?view=sql-server-ver16)\n- [grafana.com » SQL Server Monitoring with prometheus](https://grafana.com/grafana/dashboards/11517-sql-server-monitoring/?tab=reviews)\n\n## Monitoring\n\n- [techcommunity.microsoft.com » Near real-time monitoring of SQL Server Linux/containers using Telegraf-InfluxDB and Grafana](https://techcommunity.microsoft.com/t5/sql-server-blog/near-real-time-monitoring-of-sql-server-linux-containers-using/ba-p/2620050)\n\n\n## IDE Azuredatastudio Setup\n\n- [settings.json](./settings.json)"
  },
  {
    "path": "home/databases/mssql/taskset_mssql_databases/task_000_docs_and_vscode_setup/settings.json",
    "content": "{\n    \"workbench.editorAssociations\": {\n        \"*.{sqlplan}\": \"workbench.editor.executionplan\"\n    },\n    \"workbench.enablePreviewFeatures\": true,\n    \"workbench.colorTheme\": \"Visual Studio Dark\",\n\n    // Terminal Setting\n    \"terminal.integrated.fontFamily\": \"MesloLGS NF\",\n    \"terminal.integrated.scrollback\": 100000,\n    \"terminal.integrated.copyOnSelection\": true,\n    \"terminal.integrated.enableMultiLinePasteWarning\": false,\n\n    \"files.autoSave\": \"onFocusChange\"\n}"
  },
  {
    "path": "home/databases/mssql/taskset_mssql_databases/task_001_connecting_to_db/ReadMe.md",
    "content": "# Connecting to the database\n\n- [https://hub.docker.com/_/microsoft-mssql-tools](https://hub.docker.com/_/microsoft-mssql-tools)\n\n- You can start a mssql-tools container to connect to the database\n\n```bash\n$ docker run -it mcr.microsoft.com/mssql-tools bash  # You can use kubectl run as well in kubernetes environment : kubectl run mssql-client --image=mcr.microsoft.com/mssql-tools --restart=Always -it -- bash\nroot@1234567 $ sqlcmd -S <hostname> -U <username> -P <password> # sqlcmd -S 127.0.0.1 -U sa -P MyPassword100\n.\n```\n"
  },
  {
    "path": "home/databases/mssql/taskset_mssql_databases/task_002_show_databases/ReadMe.md",
    "content": "# Show Databases\n\n- [learn.microsoft.com » sql » databases » view-a-list-of-databases-on-an-instance-of-sql-server](https://learn.microsoft.com/en-us/sql/relational-databases/databases/view-a-list-of-databases-on-an-instance-of-sql-server?view=sql-server-ver16)\n\n```bash\nSELECT name, database_id, create_date FROM sys.databases;  \nGO\n```\n"
  },
  {
    "path": "home/databases/mssql/taskset_mssql_databases/task_003_drop_database/ReadMe.md",
    "content": "# Drop databases\n\n[learn.microsoft.com » statements » drop-database-transact-sql » a-dropping-a-single-database](https://learn.microsoft.com/en-us/sql/t-sql/statements/drop-database-transact-sql?view=sql-server-ver16#a-dropping-a-single-database)\n\n- The following example removes the `Sales` database.\n\n```sql\nDROP DATABASE Sales;\n```\n"
  },
  {
    "path": "home/databases/mssql/taskset_mssql_databases/task_004_get_current_database/ReadMe.md",
    "content": "# Get current database\n\n[learn.microsoft.com » sql » functions » db-name-transact-sql](https://learn.microsoft.com/en-us/sql/t-sql/functions/db-name-transact-sql?view=sql-server-ver16)\n\n- Returning the current database name. `[Current Database]` is not placeholder and actually works as it is.\n\n```sql\nSELECT DB_NAME() AS [Current Database];  \nGO\n```\n"
  },
  {
    "path": "home/databases/mssql/taskset_mssql_databases/task_005_create_database/ReadMe.md",
    "content": "# Create Database\n\n[learn.microsoft.com » sql » relational-databases » databases » create-a-database](https://learn.microsoft.com/en-us/sql/relational-databases/databases/create-a-database?view=sql-server-ver16)\n\n- Create a new database Sales\n\n```sql\nUSE master;\nGO\nCREATE DATABASE Sales\n```\n\n- Create database if NOT EXISTS [stackoverflow : Create database if db does not exist](https://stackoverflow.com/questions/59641684/create-database-if-db-does-not-exist)\n\n```sql\nUSE master\nGO\n\nIF NOT EXISTS (SELECT * FROM sys.databases WHERE name = 'MyTestDataBase')\nBEGIN\n  CREATE DATABASE MyTestDataBase;\nEND;\nGO\n```\n"
  },
  {
    "path": "home/databases/mssql/taskset_mssql_databases/task_006_check_version/ReadMe.md",
    "content": "# Check Version\n\n[learn.microsoft.com » sql » find-my-sql-version](https://learn.microsoft.com/en-us/troubleshoot/sql/releases/find-my-sql-version)\n\n- To check the mssql version.\n\n```sql\nSELECT @@VERSION;\n```\n\n- Output\n\n| # | (No column name)              |\n|---|-------------------------------|\n| 1 | Microsoft SQL Server 2022 ... |\n"
  },
  {
    "path": "home/databases/mssql/taskset_mssql_databases/task_007_create_database__if_not_exists__vars_navchar/ReadMe.md",
    "content": "# Create Database - IF NOT EXISTS - Vars NAVCHAR\n\n```sql\n-- Declare var for DBName\nDECLARE @DatabaseName NVARCHAR(255) = 'SQLTestDB';\n\n-- Create DB if not exists\nIF NOT EXISTS (SELECT * FROM sys.databases WHERE name = @DatabaseName)\nBEGIN\n    CREATE DATABASE [SQLTestDB];\n    PRINT 'Database' + @DatabaseName + 'Created';\nEND\nELSE\n    PRINT 'Database' + @DatabaseName +  'already exists';\nGO\n```\n\n- Message (when database exists)\n\n```bash\nDatabaseSQLTestDBalready exists\n```\n\n- Message (when database does not exist)\n\n```bash\nDatabaseSQLTestDBCreated\n```\n"
  },
  {
    "path": "home/databases/mssql/taskset_mssql_databases/task_008_count_tables_in_database/ReadMe.md",
    "content": "# Count Tables in Particular Database\n\n- [stackoverflow - Count the Number of Tables in a SQL Server Database](https://stackoverflow.com/questions/45464661/count-the-number-of-tables-in-a-sql-server-database)\n\n```sql\nUSE MyDatabase\nGO\n\nSELECT COUNT(*)\nFROM INFORMATION_SCHEMA.TABLES\nWHERE TABLE_TYPE = 'BASE TABLE'\nGO\n\n-- OR you can also use\nUSE MyDatabase;\nGO\n\nSELECT COUNT(*) as TableCount FROM sys.tables;\nGO\n```\n"
  },
  {
    "path": "home/databases/mssql/taskset_mssql_databases/task_009_switch_to_particular_db/ReadMe.md",
    "content": "# Switching to a particular database\n\n- [Download Azure Data Studio for apple silicon](https://learn.microsoft.com/en-us/sql/azure-data-studio/download-azure-data-studio?view=sql-server-ver16&tabs=redhat-install%2Credhat-uninstall)\n\n```sql\n-- Switch to master\nPRINT '...Switching to master';\nUSE [master];\nGO\n\nSELECT DB_NAME() AS [Current Database];  \nGO\n```\n\n- Messages\n\n```bash\n...Switching to master\n(1 row affected)\n```\n\n- Results\n\n|   | Current Database |\n|---|------------------|\n| 1 | master           |\n"
  },
  {
    "path": "home/databases/mssql/taskset_mssql_databases/task_010_create_table__if_not_exists/ReadMe.md",
    "content": "# Create Table IF NOT EXISTS\n\n```sql\n-- Switch to SQLTestDB, we need to create table in this database\nPRINT '...Switching to SQLTestDB';\nUSE [SQLTestDB];\nGO\n\n-- The IF NOT EXISTS clause checks the sys.tables view to see if a table named \"SQLTest\" of type 'U' (which stands for User Table) exists in the current database.\nIF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'SQLTest' AND type = 'U')\nBEGIN\n    CREATE TABLE SQLTest (\n        ID INT NOT NULL PRIMARY KEY,\n        c1 VARCHAR(100) NOT NULL,\n        dt1 DATETIME NOT NULL DEFAULT GETDATE()\n    );\n    PRINT 'Table successfully created';\nEND\nELSE\n    PRINT 'Table already exists';\nGO\n```\n\n- Message (When table does not exist)\n\n```bash\n...Switching to SQLTestDB\nTable successfully created\n```\n\n- Message (When table exists)\n\n```bash\n...Switching to SQLTestDB\nTable already exists\n```\n"
  },
  {
    "path": "home/databases/mssql/taskset_mssql_databases/task_011_insert_records__if_not_exists/ReadMe.md",
    "content": "# Insert Records IF NOT EXISTS\n\n```sql\n-- Switch to SQLTestDB, we want to insert records in this table, refer task_010 for table structure\nPRINT '...Switching to SQLTestDB';\nUSE [SQLTestDB];\nGO\n-- Insert record with ID=1 if it doesn't exist\nIF NOT EXISTS (SELECT 1 FROM SQLTest WHERE ID = 1)\n    INSERT INTO SQLTest (ID, c1) VALUES (1, 'test1');\n-- Insert record with ID=2 if it doesn't exist\nIF NOT EXISTS (SELECT 1 FROM SQLTest WHERE ID = 2)\n    INSERT INTO SQLTest (ID, c1) VALUES (2, 'test2');\n```\n\n- Message (When records do not exist)\n\n```bash\n...Switching to SQLTestDB\n(1 row affected)\n(1 row affected)\n```\n\n- Message (When records exists)\n\n```bash\n...Switching to SQLTestDB\nCommands completed successfully.\n```\n"
  },
  {
    "path": "home/databases/mssql/taskset_mssql_databases/task_012_select_all_from_table/ReadMe.md",
    "content": "# Select All From Table\n\n```sql\n-- Refer task_010 for create table, task_011 for inserting records\nSELECT * FROM SQLTest;\nGO\n```\n\n- Message\n\n```bash\n(2 rows affected)\n```\n\n- Result\n\n| ID | c1    | dt1                     |\n|----|-------|-------------------------|\n| 1  | test1 | 2023-09-24 11:25:17.667 |\n| 2  | test2 | 2023-09-24 11:25:17.667 |\n"
  },
  {
    "path": "home/databases/mssql/taskset_mssql_databases/task_013_create_credential_and_select_credential/ReadMe.md",
    "content": "# Create Credential\n\n- [Create Credential UseCase](https://learn.microsoft.com/en-us/sql/relational-databases/tutorial-sql-server-backup-and-restore-to-s3?view=sql-server-ver16&tabs=tsql#create-credential)\n\n## Create credential for OCI object storage\n\nIn SQL Server, a `CREDENTIAL` is a record that contains the authentication information (like username and password or access key and secret key) required to connect to a resource outside of SQL Server. This can be a remote data source, a web service, a file system, or, in this case, an S3-compatible storage service.\n\nThe `CREATE CREDENTIAL` statement is used to store these details securely within SQL Server so that they can be used by SQL Server to authenticate against external services without exposing sensitive information in scripts or queries.\n\n```sql\nCREATE CREDENTIAL   [s3://<endpoint>:<port>/<bucket>]\nWITH\n        IDENTITY    = 'S3 Access Key',\n        SECRET      = '<AccessKeyID>:<SecretKeyID>';\nGO\n```\n\nWhen we are using this in OCI object storage with name  `backup-bucket` location in `ap-mumbai-1` and namespace `abcdefghijklm`. You\nan find the namespace in bucket details page.\n\n```sql\n-- You do not need to include <> while giving access key and secret key values, they should be separated by :\nCREATE CREDENTIAL   [s3://abcdefghikjlm.compat.objectstorage.ap-mumbai-1.oraclecloud.com:443/backup-bucket]\nWITH\n        IDENTITY    = 'S3 Access Key',\n        SECRET      = '<AccessKeyID>:<SecretKeyID>';\nGO\n```\n\nIn the context of the provided script:\n\n- `s3://<endpoint>:<port>/<bucket>`: This is the name of the credential. It's a way to identify which external resource this credential pertains to.\n  \n- `IDENTITY`: This is typically the username or identifier for the external service. For S3-compatible storage, it's usually set to `'S3 Access Key'` as a standard identifier.\n  \n- `SECRET`: This is typically the password or key for the external service. For S3-compatible storage, it's a combination of the `AccessKeyID` and `SecretKeyID`, separated by a colon.\n\n---\n\n## Select Credential\n\n```sql\n-- Check the contents of sys.credentials table\nSELECT * FROM sys.credentials\n```\n\n---\n\n## If exists Drop credentials, otherwise create\n\n```sql\nIF EXISTS (SELECT * FROM sys.credentials WHERE name = 's3://abcdefghikjlm.compat.objectstorage.ap-mumbai-1.oraclecloud.com:443/backup-bucket')\n    BEGIN\n        DROP CREDENTIAL \"s3://abcdefghikjlm.compat.objectstorage.ap-mumbai-1.oraclecloud.com:443/backup-bucket\";\n        PRINT 'Credential ' + 's3://abcdefghikjlm.compat.objectstorage.ap-mumbai-1.oraclecloud.com:443/backup-bucket' + ' dropped successfully.';\n    END\nELSE\n    BEGIN\n        PRINT 'Credential ' + 's3://abcdefghikjlm.compat.objectstorage.ap-mumbai-1.oraclecloud.com:443/backup-bucket' + ' not found.';\n    END\n```\n"
  },
  {
    "path": "home/databases/mssql/taskset_mssql_databases/task_014_full_backup_to_s3_compatible_object_storage__with_format/ReadMe.md",
    "content": "# Backup To S3 Compatible Object Storage\n\n- [learn.microsoft.com » SQL Server backup to URL for S3-compatible object storage](https://learn.microsoft.com/en-us/sql/relational-databases/backup-restore/sql-server-backup-to-url-s3-compatible-object-storage?view=sql-server-ver16)\n- [learn.microsoft.com » Quickstart: SQL backup and restore to S3-Compatible Object Storage](https://learn.microsoft.com/en-us/sql/relational-databases/tutorial-sql-server-backup-and-restore-to-s3?view=sql-server-ver16&tabs=SSMS)\n\n---\n\n## Start the database locally\n\n```bash\n# Press cntr+c to stop, data would get deleted and container would get removed\ndocker run --rm -e \"ACCEPT_EULA=Y\" -e \"MSSQL_SA_PASSWORD=<your_password>\" \\\n   -p 1433:1433 --name sql1 --hostname sql1 \\\n   mcr.microsoft.com/mssql/server:2022-latest\n```\n\n---\n\n## Backup to OCI object storage\n\n- Create credential using task_013 first.\n- Backup script\n\n```sql\nUSE [master];\nGO\n\n-- Assuming\n    -- Credentials created\n    -- Namespace: abcdefghijklm\n    -- Bucket Name : backup-bucket,\n    -- Database to Backup : SQLTestDB\n\nBACKUP DATABASE [SQLTestDB]\nTO      URL = 's3://abcdefghikjlm.compat.objectstorage.ap-mumbai-1.oraclecloud.com:443/backup-bucket/SQLTestDB.bak'\nWITH    FORMAT /* overwrite any existing backup sets */\n,       STATS = 10\n,       COMPRESSION\n,       BACKUP_OPTIONS = '{\"s3\": {\"region\":\"ap-mumbai-1\"}}';\n```\n\n> Note: You have to add BACKUP_OPTIONS which is not given explicitly in the documentation example.\n\n---\n\n## Validate Backup on s3\n\n```bash\nAWS_ACCESS_KEY_ID=<your_key_id> AWS_SECRET_ACCESS_KEY=<your_secret_key> aws s3 ls  s3://backup-bucket --endpoint-url https://abcdefghikjlm.compat.objectstorage.ap-mumbai-1.oraclecloud.com --region ap-mumbai-1 \n```\n"
  },
  {
    "path": "home/databases/mssql/taskset_mssql_databases/task_015_get_connection_info__kill/ReadMe.md",
    "content": "# Get Connection Information\n\n## 1. The `SELECT` Statement\n\n```sql\nSELECT spid, [status], [loginame], hostname, blocked, db_name(dbid) as database_name\nFROM sys.sysprocesses\nWHERE dbid = DB_ID('SQLTestDB');\n```\n\n**Purpose**: This query retrieves information about all the processes (or sessions) that are currently connected to the `SQLTestDB` database.\n\n**Columns**:\n\n- `spid`: System process ID. It's a unique identifier for each active process in SQL Server.\n- `[status]`: The status of the process (e.g., \"running\", \"sleeping\", etc.).\n- `[loginame]`: The name of the user who initiated the process.\n- `hostname`: The name of the computer from which the user is connecting.\n- `blocked`: If this process is being blocked by another process, this column will show the `spid` of the blocking process. If it's not blocked, it will show `0`.\n- `db_name(dbid) as database_name`: This translates the database ID (`dbid`) into the actual database name. In this case, it will always show `SQLTestDB` because of the `WHERE` clause.\n\n## 2. The `KILL` Statements\n\n```sql\nKILL 58;\nKILL 69;\n```\n\n**Purpose**: These commands terminate the processes with the specified `spid` values. In this case, it's terminating the processes with `spid` values of `58` and `69`.\n\n### Explanation\n\nThe script is used to first identify all the processes connected to the `SQLTestDB` database. Once you have that list, you can decide which processes to terminate. The `KILL` commands are then used to forcefully terminate specific processes. This can be useful in scenarios where you need to perform maintenance on a database and want to ensure no active connections are using it, or if there are problematic or long-running queries that you need to stop.\n\n### Sample Table Output\n\nImagine the `SELECT` query returned the following table:\n\n| spid | status  | loginame | hostname      | blocked | database_name |\n|------|---------|----------|---------------|---------|---------------|\n| 58   | running | sa       | X-MacBook-Pro | 0       | SQLTestDB     |\n| 69   | running | user2    | PC2           | 58      | SQLTestDB     |\n\nFrom the table:\n\n- The process with `spid` `58` is running, initiated by `sa` from `X-MacBook-Pro`, and is not being blocked by any other process.\n- The process with `spid` `69` is running, initiated by `user2` from `PC2`, and is being blocked by the process with `spid` `58`.\n\nThe `KILL` commands then terminate these two processes.\n"
  },
  {
    "path": "home/databases/mssql/taskset_mssql_databases/task_016_full_backup_to_disk__with_format/ReadMe.md",
    "content": "# Full Backup To Disk\n\n- [learn.microsoft.com » Create a Full Database Backup](https://learn.microsoft.com/en-us/sql/relational-databases/backup-restore/create-a-full-database-backup-sql-server?source=recommendations&view=sql-server-ver16#a-back-up-to-a-disk-device)\n\n---\n\n## Start the database locally\n\n```bash\n# Press cntr+c to stop, data would get deleted and container would get removed\ndocker run --rm -e \"ACCEPT_EULA=Y\" -e \"MSSQL_SA_PASSWORD=<your_password>\" \\\n   -p 1433:1433 --name sql1 --hostname sql1 \\\n   mcr.microsoft.com/mssql/server:2022-latest\n```\n\n---\n\n## Take Backup\n\n```sql\nUSE SQLTestDB;\nGO\nBACKUP DATABASE SQLTestDB\nTO DISK = 'SQLTestDB.bak'\n   WITH FORMAT,\n      MEDIANAME = 'SQLServerBackups',\n      NAME = 'Full Backup of SQLTestDB';\nGO\n```\n\n- Message\n\n```bash\nCommands completed successfully.\nProcessed 392 pages for database 'SQLTestDB', file 'SQLTestDB' on file 1.\nProcessed 2 pages for database 'SQLTestDB', file 'SQLTestDB_log' on file 1.\nBACKUP DATABASE successfully processed 394 pages in 0.035 seconds (87.834 MB/sec).\n```\n\n- Exec into the container and validate\n\n```bash\n$ docker exec -it sql1 bash\nmssql@sql1:/$ cd /var/opt/mssql/data\nmssql@sql1:/var/opt/mssql/data$ du -sh SQLTestDB.bak         \n3.2M    SQLTestDB.bak\n```\n"
  },
  {
    "path": "home/databases/mssql/taskset_mssql_databases/task_017_show_all_tables_in_specific_database/ReadMe.md",
    "content": "# Show all tables in a particular database\n\n- To show all tables in a given database `Test` [stackoverflow](https://stackoverflow.com/questions/175415/how-do-i-get-list-of-all-tables-in-a-database-using-tsql)\n\n```sql\nUSE Test;\n\nSELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'\n```\n"
  },
  {
    "path": "home/databases/mssql/taskset_mssql_databases/task_018_inspect_backup_to_disk__with_init_and_differential/ReadMe.md",
    "content": "# Inspect the backup file\n\nLet's say we took 1 full backup (INIT) backup followed by 3 differential backups. All stored to the disk.\n\n- Full Backup with `INIT`, ran once\n\n```sql\n-- Switch to master\nPRINT '...Switching to master';\nUSE [master];\nGO\n\n-- Create a full database backup first.  \nBACKUP DATABASE [SQLTestDB]\nTO DISK = 'SQLTestDB.bak'\nWITH    INIT,\n        NAME = 'Full Backup of SQLTestDB',\n        DESCRIPTION = 'This is a full backup of the SQLTestDB database';\n```\n\n- Differential Backup, ran twice\n\n```sql\n-- Switch to master\nPRINT '...Switching to master';\nUSE [master];\nGO\n\n-- Create a full database backup first.  \nBACKUP DATABASE [SQLTestDB]\nTO DISK = 'SQLTestDB.bak'\nWITH    DIFFERENTIAL,\n        NAME = 'Differential Backup of SQLTestDB',\n        DESCRIPTION = 'This is a differential backup of the SQLTestDB database';\nGO\n```\n\n- Inspecting the backup\n\n```bash\n# If you ran mssql via docker, you can login to container and fine the backup\nmssql@sql1:/var/opt/mssql/data$ ls -ltrh SQLTestDB.bak \n-rw-r----- 1 mssql root 5.2M Sep 29 16:36 SQLTestDB.bak\n```\n\n- Using SQL\n\n```sql\nRESTORE HEADERONLY \nFROM DISK = 'SQLTestDB.bak';\n```\n\n- Output\n\n| Backup Name                      | Backup Description                                      | Username | Password | Database Name | Position |\n|----------------------------------|---------------------------------------------------------|----------|----------|---------------|----------|\n| Full Backup of SQLTestDB         | This is a full backup of the SQLTestDB database         | sa       | sql1     | SQLTestDB     | 1        |\n| Differential Backup of SQLTestDB | This is a differential backup of the SQLTestDB database | sa       | sql1     | SQLTestDB     | 2        |\n| Differential Backup of SQLTestDB | This is a differential backup of the SQLTestDB database | sa       | sql1     | SQLTestDB     | 3        |\n\n```sql\nRESTORE FILELISTONLY \nFROM DISK = 'SQLTestDB.bak';\n```\n\n- Output\n\n| Logical Name  | PhysicalName                          |\n|---------------|---------------------------------------|\n| SQLTestDB     | /var/opt/mssql/data/SQLTestDB.mdf     |\n| SQLTestDB_log | /var/opt/mssql/data/SQLTestDB_log.ldf |\n"
  },
  {
    "path": "home/databases/mssql/taskset_mssql_databases/task_019_restore_full_backup__from_disk/ReadMe.md",
    "content": "# Restore Full Backup From Disk\n\n- [learn.microsoft.com » Restore a Backup from a Device (SQL Server)\n](https://learn.microsoft.com/en-us/sql/relational-databases/backup-restore/restore-a-backup-from-a-device-sql-server?view=sql-server-ver16)\n\n- Assuming you have the backup file `SQLTestDB.bak`, you can move it to the required folder\n\n```bash\n# Assuming you started mssql using docker\n# Exec into container sql1\n$ docker exec -it sql1 bash\nmssql@sql1:/$ cd /var/opt/mssql/\nmssql@sql1:/var/opt/mssql$ mkdir backup\nmssql@sql1:/var/opt/mssql$ exit\n\n$ docker cp SQLTestDB.bak sql1:/var/opt/mssql/backup/SQLTestDB.bak\nSuccessfully copied 4.51MB to sql1:/var/opt/mssql/backup/SQLTestDB.bak\n```\n\n- Check databases before restore\n\n```sql\nSELECT NAME FROM SYS.DATABASES;\nGO\n```\n\n- Output\n\n| Name   |\n|--------|\n| master |\n| tempdb |\n| model  |\n| msdb   |\n\n```sql\nRESTORE DATABASE [SQLTestDB]\nFROM DISK = N'/var/opt/mssql/backup/SQLTestDB.bak' -- The backup is located at this location inside database\nWITH \n    FILE = 1,\n    NOUNLOAD,\n    STATS = 5;\nGO\n```\n\n- Messages\n\n```bash\n6 percent processed.\n...\n...\n100 percent processed.\nProcessed 536 pages for database 'SQLTestDB', file 'SQLTestDB' on file 1.\nProcessed 2 pages for database 'SQLTestDB', file 'SQLTestDB_log' on file 1.\nRESTORE DATABASE successfully processed 538 pages in 0.018 seconds (233.289 MB/sec).\n```\n\n- Check databases after restore\n\n```sql\nSELECT NAME FROM SYS.DATABASES;\nGO\n```\n\n- Output\n\n| Name      |\n|-----------|\n| master    |\n| tempdb    |\n| model     |\n| msdb      |\n| SQLTestDB |\n\n- Validate data\n\n```sql\nUSE SQLTestDB;\nGO\n\nSELECT * FROM SQLTestDB;\nGO\n```\n\n- Output\n\n| ID | C1    | DT1                     |\n|----|-------|-------------------------|\n| 1  | test1 | 2023-09-30 06:19:18.317 |\n| 2  | test2 | 2023-09-30 06:19:18.320 |\n| 3  | test3 | 2023-09-30 06:19:18.320 |\n| 4  | test4 | 2023-09-30 06:19:18.320 |\n| 5  | test5 | 2023-09-30 06:19:18.320 |\n| 6  | test6 | 2023-09-30 06:19:18.320 |\n"
  },
  {
    "path": "home/databases/mssql/taskset_mssql_databases/task_020_full_backup_to_disk__with_init_and_differential/ReadMe.md",
    "content": "# Full Backup to Disk with Init And Differential\n\n- [learn.microsoft.com » Differential backups (SQL Server)](https://learn.microsoft.com/en-us/sql/relational-databases/backup-restore/differential-backups-sql-server?view=sql-server-ver16)\n\n- Assuming that the database (SQLTestDB) and table (SQLTest) is already created.\n\n- Taking the first backup `WITH INIT` which acts as base for all the differential backups\n\n```sql\n-- Switch to master\nPRINT '...Switching to master';\nUSE [master];\nGO\n\n-- Create a full database backup first.  \nBACKUP DATABASE [SQLTestDB]\nTO DISK = 'SQLTestDB.bak'\nWITH    INIT,\n        NAME = 'Full Backup of SQLTestDB',\n        DESCRIPTION = 'This is a full backup of the SQLTestDB database';\n```\n\n- Let's check the status\n\n```sql\nRESTORE HEADERONLY \nFROM DISK = 'SQLTestDB.bak';\n```\n\n- Output\n\n| Backup Name              | Backup Description                              |\n|--------------------------|-------------------------------------------------|\n| Full Backup of SQLTestDB | This is a full backup of the SQLTestDB database |\n\n- Now let's add some data into the table\n\n```sql\nIF NOT EXISTS (SELECT 1 FROM SQLTest WHERE ID = 7)\n    INSERT INTO SQLTest (ID, c1) VALUES (7, 'test7');\n```\n\n- Let's take differential backup 1\n\n```sql\n-- Create a differential backup of database upon base.  \nBACKUP DATABASE [SQLTestDB]\nTO DISK = 'SQLTestDB.bak'\nWITH    DIFFERENTIAL,\n        NAME = 'Diff-1 of SQLTestDB',\n        DESCRIPTION = 'This diff-1 should include id 7 row';\nGO\n```\n\n- Check the status again\n\n```sql\nRESTORE HEADERONLY \nFROM DISK = 'SQLTestDB.bak';\n```\n\n- Output\n\n| Backup Name              | Backup Description                              |\n|--------------------------|-------------------------------------------------|\n| Full Backup of SQLTestDB | This is a full backup of the SQLTestDB database |\n| Diff-1 of SQLTestDB      | This diff-1 should include id 7 row             |\n\n- Now let's insert one more row\n\n```sql\nIF NOT EXISTS (SELECT 1 FROM SQLTest WHERE ID = 8)\n    INSERT INTO SQLTest (ID, c1) VALUES (8, 'test8');\n```\n\n- Let's take another diff-2 backup\n\n```sql\n-- Create a differential backup of database upon base.  \nBACKUP DATABASE [SQLTestDB]\nTO DISK = 'SQLTestDB.bak'\nWITH    DIFFERENTIAL,\n        NAME = 'Diff-2 of SQLTestDB',\n        DESCRIPTION = 'This diff-2 should include id 8 row';\nGO\n```\n\n- Check the status again\n\n```sql\nRESTORE HEADERONLY \nFROM DISK = 'SQLTestDB.bak';\n```\n\n- Output\n\n| Backup Name              | Backup Description                              |\n|--------------------------|-------------------------------------------------|\n| Full Backup of SQLTestDB | This is a full backup of the SQLTestDB database |\n| Diff-1 of SQLTestDB      | This diff-1 should include id 7 row             |\n| Diff-2 of SQLTestDB      | This diff-2 should include id 8 row             |\n\n- You can copy this backup to the required location."
  },
  {
    "path": "home/databases/mssql/taskset_mssql_databases/task_021_restore_from_full_backup_on_disk__with_init_and_differential/ReadMe.md",
    "content": "# Restore from Full Backup on Disk with Init and Differential\n\n- [learn.microsoft.com » Restore a differential database backup (SQL Server)](https://learn.microsoft.com/en-us/sql/relational-databases/backup-restore/restore-a-differential-database-backup-sql-server?view=sql-server-ver16)\n\n- Copy the backup file `SQLTestDB.bak` to required location inside SQL Server container\n\n```bash\n$ docker exec -it sql1 bash\nmssql@sql1:/$ cd /var/opt/mssql/\nmssql@sql1:/var/opt/mssql$ mkdir backup\nmssql@sql1:/var/opt/mssql$ exit \nexit\n\n$ docker cp SQLTestDB.bak sql1:/var/opt/mssql/backup/SQLTestDB.bak\nSuccessfully copied 5.52MB to sql1:/var/opt/mssql/backup/SQLTestDB.bak\n```\n\n- Switch to master and show databases\n\n```sql\n-- Switch to master\nPRINT '...Switching to master';\nUSE [master];\nGO\n\nSELECT NAME FROM SYS.DATABASES;\nGO\n```\n\n- Output\n\n| Database Name |\n|---------------|\n| master        |\n| tempdb        |\n| model         |\n| msdb          |\n\n- You can inspect the backup file as well\n\n```sql\nRESTORE HEADERONLY \nFROM DISK = '/var/opt/mssql/backup/SQLTestDB.bak';\n```\n\n- Output\n\n| Backup Name              | Backup Description                              |\n|--------------------------|-------------------------------------------------|\n| Full Backup of SQLTestDB | This is a full backup of the SQLTestDB database |\n| Diff-1 of SQLTestDB      | This diff-1 should include id 7 row             |\n| Diff-2 of SQLTestDB      | This diff-2 should include id 8 row             |\n\n- Let's first restore the first i.e. `Full Backup of SQLTestDB`\n\n```sql\n-- Assume the database is lost, and restore full database,   \n-- specifying the original full database backup and NORECOVERY,   \n-- which allows subsequent restore operations to proceed.\nRESTORE DATABASE [SQLTestDB]\nFROM DISK = N'/var/opt/mssql/backup/SQLTestDB.bak' -- The backup is located at this location inside database\nWITH \n    FILE = 1,\n    NORECOVERY;\nGO\n```\n\n- Let's check the databases\n\n```sql\n-- Switch to master\nPRINT '...Switching to master';\nUSE [master];\nGO\n\nSELECT NAME FROM SYS.DATABASES;\nGO\n```\n\n- Output\n\n| Database Name |\n|---------------|\n| master        |\n| tempdb        |\n| model         |\n| msdb          |\n| SQLTestDB     |\n\n- Lets restore the Diff-1 differential backup\n\n```sql\n-- Restore the first differential backup\nRESTORE DATABASE [SQLTestDB]\nFROM DISK = N'/var/opt/mssql/backup/SQLTestDB.bak' -- The backup is located at this location inside database\nWITH \n    FILE = 2,\n    NORECOVERY;\nGO\n```\n\n- Let's restore the Diff-2 differential backup, which is the last one\n\n```sql\n-- Restore the second differential backup\nRESTORE DATABASE [SQLTestDB]\nFROM DISK = N'/var/opt/mssql/backup/SQLTestDB.bak' -- The backup is located at this location inside database\nWITH \n    FILE = 3,\n    RECOVERY;\nGO\n```\n\n- Now let's check the data inside the database\n\n```sql\nUSE SQLTestDB;\nGO\n\nSELECT * FROM SQLTest;\nGO\n```\n\n| ID | C1    | DT1                     |\n|----|-------|-------------------------|\n| 1  | test1 | 2023-09-30 11:06:13.510 |\n| 2  | test2 | 2023-09-30 11:06:13.513 |\n| 3  | test3 | 2023-09-30 11:06:13.517 |\n| 4  | test4 | 2023-09-30 11:06:13.520 |\n| 5  | test5 | 2023-09-30 11:06:13.520 |\n| 6  | test6 | 2023-09-30 11:06:13.523 |\n| 7  | test7 | 2023-09-30 11:09:03.667 |\n| 8  | test8 | 2023-09-30 11:12:28.603 |"
  },
  {
    "path": "home/databases/mssql/taskset_mssql_databases/task_022_full_base_and_differential_backup_to_s3/ReadMe.md",
    "content": "# Full Base And Differential Backup to S3\n\n- [learn.microsoft.com » Differential backups (SQL Server)](https://learn.microsoft.com/en-us/sql/relational-databases/backup-restore/differential-backups-sql-server?view=sql-server-ver16)\n- [aws.amazon.com » Backup SQL Server databases to Amazon S3](https://aws.amazon.com/blogs/modernizing-with-aws/backup-sql-server-to-amazon-s3/)\n- [learn.microsoft.com » SQL Server backup to URL for S3-compatible object storage](https://learn.microsoft.com/en-us/sql/relational-databases/backup-restore/sql-server-backup-to-url-s3-compatible-object-storage?view=sql-server-ver16)\n\n> Note: Appending is not supported. To overwrite a backup, use WITH FORMAT. This means each differential backup would be a separate file on S3.\n\n- You will have to create credential as per task-013.\n- Assuming you have also created the Database (SQLTestDB) and Table (SQLTest) with initial data\n\n- Let's take the first full backup which will act as base for all the subsequent differential backups\n\n```sql\nUSE [master];\nGO\n\n-- Assuming\n    -- Credentials created\n    -- Namespace: abcdefghijklm\n    -- Bucket Name : backup-bucket,\n    -- Database to Backup : SQLTestDB\n-- Take the first full backup which would act as base for all the differentil backups\nBACKUP DATABASE [SQLTestDB]\nTO      URL = 's3://abcdefghikjlm.compat.objectstorage.ap-mumbai-1.oraclecloud.com:443/backup-bucket/SQLTestDB-Base.bak'\nWITH    INIT /* initiate a base for taking differential backups */\n,       BACKUP_OPTIONS = '{\"s3\": {\"region\":\"ap-mumbai-1\"}}';\n```\n\n- Let's add some data to our Table in DB\n\n```sql\nIF NOT EXISTS (SELECT 1 FROM SQLTest WHERE ID = 7)\n    INSERT INTO SQLTest (ID, c1) VALUES (7, 'test7');\n```\n\n- Let's take the first differential backup\n\n```sql\n-- Take the first differential backup\nBACKUP DATABASE [SQLTestDB]\nTO      URL = 's3://abcdefghikjlm.compat.objectstorage.ap-mumbai-1.oraclecloud.com:443/backup-bucket/SQLTestDB-Diff-1.bak'\nWITH    DIFFERENTIAL /* Take the first differential backup */\n,       BACKUP_OPTIONS = '{\"s3\": {\"region\":\"ap-mumbai-1\"}}';\n```\n\n- Let's add some more data to our Table in DB\n\n```sql\nIF NOT EXISTS (SELECT 1 FROM SQLTest WHERE ID = 8)\n    INSERT INTO SQLTest (ID, c1) VALUES (8, 'test8');\n```\n\n- Let's take the second differential backup\n\n```sql\n-- Take the second differential backup\nBACKUP DATABASE [SQLTestDB]\nTO      URL = 's3://abcdefghikjlm.compat.objectstorage.ap-mumbai-1.oraclecloud.com:443/backup-bucket/SQLTestDB-Diff-2.bak'\nWITH    DIFFERENTIAL /* Take the first differential backup */\n,       BACKUP_OPTIONS = '{\"s3\": {\"region\":\"ap-mumbai-1\"}}';\n```\n\n- You can check the backups on S3 now\n\n```bash\n$ AWS_ACCESS_KEY_ID=<your_key_id> AWS_SECRET_ACCESS_KEY=<your_secret_key> aws s3 ls  s3://backup-bucket --endpoint-url https://abcdefghikjlm.compat.objectstorage.ap-mumbai-1.oraclecloud.com --region ap-mumbai-1 \n2023-09-30 16:08:55   21757952 SQLTestDB-Base.bak\n2023-09-30 16:17:11   21757952 SQLTestDB-Diff-1.bak\n2023-09-30 16:20:59   21757952 SQLTestDB-Diff-2.bak\n```\n"
  },
  {
    "path": "home/databases/mssql/taskset_mssql_databases/task_023_restore_full_base_and_differential_backup_to_s3/ReadMe.md",
    "content": "# Restore Full Base And Differential Backup From S3\n\n- [learn.microsoft.com » Differential backups (SQL Server)](https://learn.microsoft.com/en-us/sql/relational-databases/backup-restore/differential-backups-sql-server?view=sql-server-ver16)\n- [aws.amazon.com » Backup SQL Server databases to Amazon S3](https://aws.amazon.com/blogs/modernizing-with-aws/backup-sql-server-to-amazon-s3/)\n- [learn.microsoft.com » SQL Server backup to URL for S3-compatible object storage](https://learn.microsoft.com/en-us/sql/relational-databases/backup-restore/sql-server-backup-to-url-s3-compatible-object-storage?view=sql-server-ver16)\n\n> Note: Appending is not supported. To overwrite a backup, use WITH FORMAT. This means each differential backup would be a separate file on S3.\n\n- You will have to create credential as per task-013.\n- Assuming you have also created the Database (SQLTestDB) and Table (SQLTest) with initial data\n\n- Switch to master and check available databases\n\n```sql\n-- Switch to master\nPRINT '...Switching to master';\nUSE [master];\nGO\n\nSELECT NAME FROM SYS.DATABASES;\nGO\n```\n\n- Output\n\n| Databases |\n|-----------|\n| master    |\n| tempdb    |\n| model     |\n| msdb      |\n\n- We have 3 backup files, `SQLTestDB-Base.bak`, `SQLTestDB-Diff-1.bak`, `SQLTestDB-Diff-2.bak`\n\n- Let's first restore the base backup i.e. `SQLTestDB-Base.bak`\n\n```sql\n-- Assuming\n    -- Credentials created\n    -- Namespace: abcdefghijklm\n    -- Bucket Name : backup-bucket,\n    -- Database to Backup : SQLTestDB\n\n-- Assume the database is lost, and restore full database,   \n-- specifying the original full database backup and NORECOVERY,   \n-- which allows subsequent restore operations to proceed.\nRESTORE DATABASE [SQLTestDB]\nFROM URL = 's3://abcdefghikjlm.compat.objectstorage.ap-mumbai-1.oraclecloud.com:443/backup-bucket/SQLTestDB-Base.bak'\nWITH \n    FILE = 1,\n    NORECOVERY,\n    BACKUP_OPTIONS = '{\"s3\": {\"region\":\"ap-mumbai-1\"}}';\nGO\n```\n\n- Let's restore the first differential backup `SQLTestDB-Diff-1.bak`\n\n```sql\nRESTORE DATABASE [SQLTestDB]\nFROM URL = 's3://abcdefghikjlm.compat.objectstorage.ap-mumbai-1.oraclecloud.com:443/backup-bucket/SQLTestDB-Diff-1.bak'\nWITH \n    NORECOVERY,\n    BACKUP_OPTIONS = '{\"s3\": {\"region\":\"ap-mumbai-1\"}}';\nGO\n```\n\n- Let's restore the second differential backup `SQLTestDB-Diff-2.bak`\n\n```sql\nRESTORE DATABASE [SQLTestDB]\nFROM URL = 's3://abcdefghikjlm.compat.objectstorage.ap-mumbai-1.oraclecloud.com:443/backup-bucket/SQLTestDB-Diff-2.bak'\nWITH \n    RECOVERY,\n    BACKUP_OPTIONS = '{\"s3\": {\"region\":\"ap-mumbai-1\"}}';\nGO\n```\n\n- Validate the restored data\n\n```sql\nUSE SQLTestDB;\nGO\n\nSELECT * FROM SQLTest;\nGO\n```\n\n- Output\n\n| ID | C1    | DT1                     |\n|----|-------|-------------------------|\n| 1  | test1 | 2023-09-30 11:06:13.510 |\n| 2  | test2 | 2023-09-30 11:06:13.513 |\n| 3  | test3 | 2023-09-30 11:06:13.517 |\n| 4  | test4 | 2023-09-30 11:06:13.520 |\n| 5  | test5 | 2023-09-30 11:06:13.520 |\n| 6  | test6 | 2023-09-30 11:06:13.523 |\n| 7  | test7 | 2023-09-30 11:09:03.667 |\n| 8  | test8 | 2023-09-30 11:12:28.603 |\n"
  },
  {
    "path": "home/databases/mssql/taskset_mssql_databases/task_024_get_current_date_and_time/ReadMe.md",
    "content": "# Get Current Date and Time\n\n```sql\nSELECT GETDATE() AS CurrentDateTime;\n```\n\n- Output\n\n| CurrentDateTime         |\n|-------------------------|\n| 2023-10-10 08:30:52.093 |\n"
  },
  {
    "path": "home/databases/mssql/taskset_mssql_databases/task_025_licence_and_version/ReadMe.md",
    "content": "# Licence And Version\n\n- [stackoverflow.com » How do I find out what License has been applied to my SQL Server installation?](https://stackoverflow.com/questions/4099453/how-do-i-find-out-what-license-has-been-applied-to-my-sql-server-installation)\n\n```sql\nSELECT\n SERVERPROPERTY('MachineName') AS ComputerName,\n SERVERPROPERTY('ServerName') AS InstanceName,\n SERVERPROPERTY('Edition') AS Edition,\n SERVERPROPERTY('ProductVersion') AS ProductVersion,\n SERVERPROPERTY('ProductLevel') AS ProductLevel;\nGO\n```\n\n\n| ComputerName  | InstanceName  | Edition                     | ProductVersion | ProductLevel |\n|---------------|---------------|-----------------------------|----------------|--------------|\n| sqlEnterprise | sqlEnterprise | Enterprise Edition (64-bit) | 16.0.4075.1    | RTM          |\n\n---\n\n# MSSQL\n\n- [Quickstart: Run SQL Server Linux container images with Docker](https://learn.microsoft.com/en-us/sql/linux/quickstart-install-connect-docker?view=sql-server-ver16&pivots=cs1-bash)\n- [SQL Server on Linux Frequently Asked Questions (FAQ)](https://learn.microsoft.com/en-us/sql/linux/sql-server-linux-faq?view=sql-server-ver16#licensing)\n- [Installation guidance for SQL Server on Linux](https://learn.microsoft.com/en-us/sql/linux/sql-server-linux-setup?view=sql-server-ver16)\n- [Configure SQL Server settings with environment variables on Linux](https://learn.microsoft.com/en-us/sql/linux/sql-server-linux-configure-environment-variables?view=sql-server-ver16)\n- [Deploy and connect to SQL Server Linux containers](https://learn.microsoft.com/en-us/sql/linux/sql-server-linux-docker-container-deployment?view=sql-server-ver16&pivots=cs1-bash)\n- [Sample: Unattended SQL Server installation script for SUSE Linux Enterprise Server](https://learn.microsoft.com/en-us/sql/linux/sample-unattended-install-suse?view=sql-server-ver16)\n- [microsoft.com » 2019 » product-licencing/sql-server » Go to the bottom resources section to download the pdf guide](https://www.microsoft.com/en-us/licensing/product-licensing/sql-server)\n- [serverfault.com » How can I check if SQL Server 2019 Standard is activated on Server Core?](https://serverfault.com/questions/1060095/how-can-i-check-if-sql-server-2019-standard-is-activated-on-server-core)\n- [serverfault.com » Can you help me with my software licensing issue?](https://serverfault.com/questions/215405/can-you-help-me-with-my-software-licensing-issue)\n- [reddit.com » Is there a way to verify the number of CALs on my SQL Server Standard 2019?](https://www.reddit.com/r/SQLServer/comments/tzvudl/is_there_a_way_to_verify_the_number_of_cals_on_my/)\n\n## Reddit Threads\n\n- [reddit.com » SQL Server Developer Edition Question](https://www.reddit.com/r/SQLServer/comments/f58ppw/sql_server_developer_edition_question/)\n- [www.brentozar.com » Microsoft SQL Server Licensing Simplified into 7 Rules](https://www.brentozar.com/archive/2015/04/microsoft-sql-server-licensing-simplified-into-7-rules/)\n- [reddit.com » Developer Edition using Prod domain/vlan](https://www.reddit.com/r/SQLServer/comments/vxhdg4/developer_edition_using_prod_domainvlan/)\n- [reddit.com » MS Sql Server - What is \"production\" data?](https://www.reddit.com/r/SQLServer/comments/15ncbns/ms_sql_server_what_is_production_data/)\n- [reddit.com » Developer Edition Time Limit?](https://www.reddit.com/r/SQLServer/comments/i9hcvo/developer_edition_time_limit/)\n\n## Other Threads\n\n- [learn.microsoft.com » How To Check SQL Server Activation With Valid Key](https://learn.microsoft.com/en-us/answers/questions/1151391/how-to-check-sql-server-activation-with-valid-key)\n- [quora.com » How do I check if the MS SQL server licenses are valid?](https://www.quora.com/How-do-I-check-if-the-MS-SQL-server-licenses-are-valid)\n\n\n## Docker Commands\n\nThe Docker run command for SQL Server involves specifying the edition you want to use through the `MSSQL_PID` environment variable. Below are the Docker run commands for various editions of SQL Server:\n\n## 1. Enterprise Edition\n\n```bash\ndocker run --rm \\\n-e \"ACCEPT_EULA=Y\" \\\n-e \"MSSQL_SA_PASSWORD=Password12345\" \\\n-e \"MSSQL_PID=Enterprise\" \\\n-e \"MSSQL_AGENT_ENABLED=1\" \\\n-p 1433:1433 --name sqlEnterprise --hostname sqlEnterprise \\\n-d mcr.microsoft.com/mssql/server:2022-latest\n```\n\n## 2. Standard Edition\n\n```bash\ndocker run --rm \\\n-e \"ACCEPT_EULA=Y\" \\\n-e \"MSSQL_SA_PASSWORD=Password12345\" \\\n-e \"MSSQL_PID=Standard\" \\\n-e \"MSSQL_AGENT_ENABLED=1\" \\\n-p 1433:1433 --name sqlStandard --hostname sqlStandard \\\n-d mcr.microsoft.com/mssql/server:2022-latest\n```\n\n## 3. Express Edition\n\n```bash\ndocker run --rm \\\n-e \"ACCEPT_EULA=Y\" \\\n-e \"MSSQL_SA_PASSWORD=Password12345\" \\\n-e \"MSSQL_PID=Express\" \\\n-e \"MSSQL_AGENT_ENABLED=1\" \\\n-p 1433:1433 --name sqlExpress --hostname sqlExpress \\\n-d mcr.microsoft.com/mssql/server:2022-latest\n```\n\n## 4. Developer Edition\n\n```bash\ndocker run --rm \\\n-e \"ACCEPT_EULA=Y\" \\\n-e \"MSSQL_SA_PASSWORD=Password12345\" \\\n-e \"MSSQL_PID=Developer\" \\\n-e \"MSSQL_AGENT_ENABLED=1\" \\\n-p 1433:1433 --name sqlDeveloper --hostname sqlDeveloper \\\n-d mcr.microsoft.com/mssql/server:2022-latest\n```\n\n### Notes\n\n- Ensure to replace `\"Password12345\"` with a strong password as per your security guidelines.\n- The `MSSQL_PID` environment variable is used to specify the edition of SQL Server to run.\n- Ensure that you comply with licensing terms for the edition you are using, especially for production use.\n- Always store sensitive data like passwords securely, consider using Docker secrets or environment variable files instead of hard-coding them into your commands or scripts.\n- Ensure that the port `1433` is not being used by another service on your host machine.\n- For production deployments, consider additional configuration for security, data persistence, and performance tuning.\n\nAlways refer to the [official Microsoft documentation](https://docs.microsoft.com/en-us/sql/linux/quickstart-install-connect-docker) for the most accurate and up-to-date information.\n"
  },
  {
    "path": "home/databases/mssql/taskset_mssql_databases/task_026_check_default_schema/ReadMe.md",
    "content": "# Check Default Schema MSSQL\n\n- [stackoverflow.com » Find out default SQL Server schema for session](https://stackoverflow.com/questions/5513053/find-out-default-sql-server-schema-for-session)\n- [learn.microsoft.com » Ownership and user-schema separation in SQL Server](https://learn.microsoft.com/en-us/sql/relational-databases/security/authentication-access/ownership-and-user-schema-separation?view=sql-server-ver16)\n\n```sql\n-- check default schema\nSELECT SCHEMA_NAME()\n```\n\n- Output\n\n|     |\n|-----|\n| dbo |\n"
  },
  {
    "path": "home/databases/mssql/taskset_mssql_databases/task_027_stored_procedures/ReadMe.md",
    "content": "# Stored Procedures\n\n- [learn.microsoft.com » Stored Procedures](https://learn.microsoft.com/en-us/sql/relational-databases/stored-procedures/stored-procedures-database-engine?view=sql-server-ver16)\n\nA **Stored Procedure** in SQL is a precompiled collection of one or more SQL statements that can be executed as a single unit of work. Stored procedures are stored in the database data dictionary and can be invoked by applications or users to encapsulate logic, perform an action, and optionally return a value.\n\n## Key Characteristics of Stored Procedures\n\n1. **Precompiled**: Once created, stored procedures are compiled and stored in the database, which can reduce the overhead of compiling the SQL code every time it is executed.\n\n2. **Parameterized**: Stored procedures can accept parameters, allowing them to be dynamic and adaptable to various scenarios and inputs.\n\n3. **Encapsulation**: They encapsulate a series of SQL statements, abstracting the complexity from the end-user or application and ensuring that the logic is executed consistently.\n\n4. **Reusable**: Stored procedures can be called multiple times with different parameters, promoting code reusability.\n\n5. **Security**: They can be used to provide an additional layer of security by restricting direct access to the underlying data tables. Users can be granted permission to execute a stored procedure without having direct access to the underlying tables.\n\n6. **Transactional**: Stored procedures can utilize transactions, ensuring data consistency by committing or rolling back changes in the event of errors.\n\n## Basic Syntax\n\nHere's a basic syntax example of a stored procedure in SQL Server:\n\n```sql\nCREATE PROCEDURE [SchemaName].[ProcedureName]\n    @Parameter1 DataType,\n    @Parameter2 DataType\nAS\nBEGIN\n    -- SQL statements to be executed\nEND;\n```\n\n### Example:\n\nHere's a simple example of a stored procedure that retrieves data based on a parameter:\n\n```sql\nCREATE PROCEDURE dbo.GetEmployeeDetails\n    @EmployeeID INT\nAS\nBEGIN\n    SELECT * FROM Employees WHERE EmployeeID = @EmployeeID;\nEND;\n```\n\nTo call this stored procedure and retrieve data for a specific employee, you would use the following SQL:\n\n```sql\nEXEC dbo.GetEmployeeDetails @EmployeeID = 123;\n```\n\n### Use Cases\n\n- **Data Validation**: Ensure data consistency and accuracy by using stored procedures to validate and process data before it is inserted or updated in the database.\n\n- **Business Logic**: Implement and centralize business logic in the database layer, ensuring consistency across all applications that access the data.\n\n- **Data Retrieval**: Create stored procedures to retrieve data in a specific format or based on particular criteria, abstracting query complexity from the application layer.\n\n- **Security**: Use stored procedures to provide controlled, secure access to data by limiting direct table access and exposing only necessary operations.\n\nStored procedures can be a powerful tool in database management, helping to streamline data operations, enhance security, and simplify application development by centralizing database logic.\n\n---\n\n## Example with Employees Table\n\nLet's create an example following best practices:\n\n### Step 1: Create a Database\n\nWe create a new database named `CompanyDB`.\n\n```sql\n-- check default schema\nSELECT SCHEMA_NAME()\n\n--- switch to master\nPRINT '...Switching to master';\nUSE [master];\nGO\n\n-- Create a new database named 'CompanyDB'\nCREATE DATABASE CompanyDB;\nGO  -- Execute the previous batch.\n```\n\n### Step 2: Use the Created Database\n\nWe switch to using the `CompanyDB` database for subsequent SQL statements.\n\n```sql\n-- Switch to using the 'CompanyDB' database\nUSE CompanyDB;\nGO  -- Execute the previous batch.\n```\n\n### Step 3: Create the `Employees` Table\n\nWe create a table named `Employees` in the `dbo` schema of the `CompanyDB` database.\n\n```sql\n-- Create a new table named 'Employees' in the 'dbo' schema\nCREATE TABLE dbo.Employees (\n    EmployeeID INT PRIMARY KEY,  -- Primary key column\n    FirstName NVARCHAR(50),\n    LastName NVARCHAR(50),\n    DateOfBirth DATE,\n    Position NVARCHAR(50)\n);\n```\n\n### Step 4: Insert Sample Data into the `Employees` Table\n\nWe insert some sample data into the `Employees` table to work with.\n\n```sql\n-- Insert sample data into the 'Employees' table\nINSERT INTO dbo.Employees (EmployeeID, FirstName, LastName, DateOfBirth, Position)\nVALUES \n    (1, N'John', N'Doe', '1990-01-01', N'Developer'),\n    (2, N'Jane', N'Doe', '1992-02-02', N'Analyst'),\n    (3, N'Jim', N'Beam', '1985-03-03', N'Manager');\n```\n\n### Step 5: Create the Stored Procedure\n\nWe create a stored procedure named `GetEmployeeDetails` in the `dbo` schema. This stored procedure retrieves data from the `Employees` table based on the `@EmployeeID` parameter.\n\n```sql\n-- Create a new stored procedure named 'GetEmployeeDetails' in the 'dbo' schema\nCREATE PROCEDURE dbo.GetEmployeeDetails\n    @EmployeeID INT\nAS\nBEGIN\n    -- Retrieve data from the 'Employees' table based on the input parameter\n    SELECT * FROM dbo.Employees WHERE EmployeeID = @EmployeeID;\nEND;\n```\n\n### Usage Example\n\nTo use the stored procedure to retrieve details for a specific employee, you would execute the stored procedure with the desired parameter:\n\n```sql\n-- Use the 'CompanyDB' database\nUSE CompanyDB;\nGO  -- Execute the previous batch.\n\n-- Execute the stored procedure with 'EmployeeID' set to 1\nEXEC dbo.GetEmployeeDetails @EmployeeID = 1;\n```\n\n### Note\n\nEnsure that you have the necessary permissions to create databases, tables, and stored procedures in your SQL Server environment. Always test scripts in a safe and recoverable environment before applying them to production databases.\n"
  },
  {
    "path": "home/databases/mssql/taskset_mssql_databases/task_028_create_and_validate_jobs/ReadMe.md",
    "content": "\n# Create a Job And Validate\n\n- [learn.microsoft.com » Create a Job](https://learn.microsoft.com/en-us/sql/ssms/agent/create-a-job?view=sql-server-ver16)\n- [learn.microsoft.com » sp_add_job](https://learn.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-add-job-transact-sql?view=sql-server-ver16)\n- [learn.microsoft.com » dbo.sysjobs](https://learn.microsoft.com/en-us/sql/relational-databases/system-tables/dbo-sysjobs-transact-sql?view=sql-server-ver16)\n\n## Background\n\n| Name          | Type             | Description                                                                                                                                                                                                                                                                                                                                                  |\n|---------------|------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `msdb`        | Database         | The `msdb` database is a system database that is used by SQL Server Agent for scheduling alerts and jobs, and recording operators. It stores data for SQL Server Agent configurations, job information, job steps, job schedules, etc. It plays a crucial role in SQL Server jobs and alerts management.                                                     |\n| `dbo.sysjobs` | Table            | The `dbo.sysjobs` table is located in the `msdb` database and is part of SQL Server Agent. It stores information about each job that is registered with SQL Server Agent, such as the job name, description, enabled status, date created, date modified, etc. It is often queried directly or joined with other tables to retrieve job-related information. |\n| `sp_add_job`  | Stored Procedure | `sp_add_job` is a system stored procedure that is used to create a job in SQL Server Agent. It allows you to specify various properties of the job, such as the job name, owner, description, etc. It is located in the `msdb` database and is commonly used in scripts and applications to automate and manage job creation in SQL Server.                  |\n\n## Creating a job\n\nThis script creates a new SQL Server Agent job named `'Daily SQLTestDB backup'` with a specified description and owner using the `sp_add_job` stored procedure.\n\n```sql\nUSE msdb ;  -- Use the 'msdb' database for subsequent statements. The 'msdb' database is a system database that stores SQL Server Agent job information, among other things.\nGO  -- Execute the previous batch of statements.\n\n-- Add a new job using a stored procedure\nEXEC dbo.sp_add_job  -- Execute the 'sp_add_job' stored procedure from the 'dbo' schema. 'sp_add_job' is a system stored procedure used to create a new SQL Server Agent job.\n    @job_name = N'Daily SQLTestDB backup',  --  This line sets the `@job_name` parameter to `'Daily SQLTestDB backup'`. `@job_name` specifies the name of the job being created. The `N` prefix denotes that the string is in Unicode.\n    @description = 'Job to backup SampleDB database',  --  This line sets the `@description` parameter, providing a textual description of the job being created.\n    @owner_login_name = 'sa';  -- This line sets the `@owner_login_name` parameter to `'sa'`. `@owner_login_name` specifies the name of the login that owns the job. Note that using 'sa' (system administrator) is often discouraged in production environments due to security considerations, so ensure to replace it with an appropriate login if needed.\nGO  -- Execute the batch of statements.\n```\n\n---\n\n## Validate the job\n\nThis script retrieves and displays information about a SQL Server Agent job named `'Daily SQLTestDB backup'` from the `sysjobs` table in the `msdb` database. If the job exists, information about it will be displayed; if not, no rows will be returned.\n\n```sql\nUSE msdb;  -- Switch to using the 'msdb' database.\nGO  -- Submit the previous statement batch for execution.\n\n-- Validate if Jobs was created\nSELECT  -- Begin a query to retrieve data.\n    job_id,  -- Select the 'job_id' column, which uniquely identifies each job.\n    name AS JobName,  -- Select and rename the 'name' column to 'JobName' for output.\n    description AS JobDescription,  -- Select and rename the 'description' column to 'JobDescription' for output.\n    enabled,  -- Select the 'enabled' column, indicating whether the job is enabled or not.\n    date_created AS DateCreated,  -- Select and rename the 'date_created' column to 'DateCreated' for output.\n    date_modified AS DateModified  -- Select and rename the 'date_modified' column to 'DateModified' for output.\nFROM  -- Specify the table from which to retrieve the data.\n    msdb.dbo.sysjobs  -- Specify the 'sysjobs' table in the 'dbo' schema of the 'msdb' database. `msdb.dbo.sysjobs` is a system table that stores information about SQL Server Agent jobs.\nWHERE  -- Introduce a filter to limit the rows returned.\n    name = N'Daily SQLTestDB backup';  -- This line filters the results to only return rows where the `name` column equals `'Daily SQLTestDB backup'`. The `N` before the string literal indicates that the string is in Unicode.\n```\n\n- Output\n\n| job_id                               | JobName                | JobDescription                  | enabled | DateCreated             | DateModified            |\n|--------------------------------------|------------------------|---------------------------------|---------|-------------------------|-------------------------|\n| 8995cf2c-18b2-4a7e-974a-d11e4ccf2305 | Daily SQLTestDB backup | Job to backup SampleDB database | 1       | 2023-10-10 13:41:46.223 | 2023-10-10 13:41:49.483 |\n"
  },
  {
    "path": "home/databases/mssql/taskset_mssql_databases/task_029_add_jobstep_and_validate/ReadMe.md",
    "content": "# Create And Validate Job Step\n\n- [learn.microsoft.com » dbo.sysjobs](https://learn.microsoft.com/en-us/sql/relational-databases/system-tables/dbo-sysjobs-transact-sql?view=sql-server-ver16)\n- [learn.microsoft.com » dbo.sysjobsteps](https://learn.microsoft.com/en-us/sql/relational-databases/system-tables/dbo-sysjobsteps-transact-sql?view=sql-server-ver16)\n- [learn.microsoft.com » sp_add_jobstep](https://learn.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-add-jobstep-transact-sql?view=sql-server-ver16)\n\n## Background\n\n| Object Name            | Type             | Description                                                                                                                                                                                                                                              |\n|------------------------|------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `msdb`                 | Database         | The `msdb` database is a system database that is used by SQL Server Agent for scheduling alerts and jobs, and by other features such as SQL Server Management Studio, Service Broker, and Database Mail.                                                 |\n| `msdb.dbo.sysjobs`     | Table            | The `sysjobs` table, located in the `msdb` database, stores information about each scheduled job to be executed by SQL Server Agent. This includes details like the job name, description, enabled status, and more.                                     |\n| `msdb.dbo.sysjobsteps` | Table            | The `sysjobsteps` table, also in the `msdb` database, contains details about each step in a SQL Server Agent job. This includes the command to be executed, the order of the step within its job, the database context, and more.                        |\n| `sp_add_jobstep`       | Stored Procedure | `sp_add_jobstep` is a system stored procedure that is used to create a step in a SQL Server Agent job. It allows you to specify various parameters like the step name, command, database context, and more to define the actions and flow of a job step. |\n\n\n## Constructing unique name for the backupfile\n\n```sql\nSELECT REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR, GETDATE(), 120), ':', ''), '-', ''), ' ', '') AS FormattedDateTime;\n```\n\nEach `REPLACE()` function is nested inside the next, meaning that the innermost `REPLACE()` function is evaluated first, then the next outer `REPLACE()` function is applied to its result, and so on. This allows you to perform multiple replacements in a single expression by nesting them.\n\nLet's break down the nested `REPLACE()` functions and construct the statement step by step:\n\n### Step 1: Convert Date and Time to String\n\n```sql\nSELECT CONVERT(NVARCHAR, GETDATE(), 120) AS FormattedDateTime;\n```\n\nThis converts the current date and time into a string format `YYYY-MM-DD HH:MI:SS`.\n\n### Step 2: Remove Colons from the Time\n\n```sql\nSELECT REPLACE(CONVERT(NVARCHAR, GETDATE(), 120), ':', '') AS FormattedDateTime;\n```\n\nThis removes the colons `:` from the time portion, resulting in a string like `YYYY-MM-DD HHMISS`.\n\n### Step 3: Remove Hyphens from the Date\n\n```sql\nSELECT REPLACE(REPLACE(CONVERT(NVARCHAR, GETDATE(), 120), ':', ''), '-', '') AS FormattedDateTime;\n```\n\nThis removes the hyphens `-` from the date portion, resulting in a string like `YYYYMMDD HHMISS`.\n\n### Step 4: Remove Space between Date and Time\n\n```sql\nSELECT REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR, GETDATE(), 120), ':', ''), '-', ''), ' ', '') AS FormattedDateTime;\n```\n\nThis removes the space ` ` between the date and time portions, resulting in a string like `YYYYMMDDHHMISS`.\n\n---\n\n## Add a new job step to existing job\n\n```sql\n-- Switch to the 'msdb' database, which is used by SQL Server Agent for configuring and managing scheduled jobs and other automated tasks.\nUSE msdb;  \nGO  -- Execute the previous batch of statements.\n\n-- Add a new step to an existing SQL Server Agent job using the 'sp_add_jobstep' stored procedure.\nEXEC sp_add_jobstep  \n    @job_name = N'Daily SQLTestDB backup',  -- Specify the name of the job to which the step will be added.\n    @step_name = N'Backup database',  -- Specify the name of the new step.\n    @subsystem = N'TSQL',  -- Specify the subsystem as 'TSQL', indicating that the step will execute Transact-SQL statements.\n    -- The following command parameter contains T-SQL code that will be executed when the job step runs.\n    --                      -- Declare a variable to hold the backup file name.\n    --                      -- Construct the backup file name by concatenating a base name, a formatted date/time string, and a file extension.\n    --                      -- Perform a backup of the 'SQLTestDB' database, specifying the dynamically constructed file name as the target.\n    --                      -- Specify additional backup options: 'FORMAT' initializes the backup media, 'MEDIANAME' assigns a name to the backup media, and 'NAME' assigns a name to the backup set.\n    @command = N'DECLARE @BackupFileName NVARCHAR(255);  \n                SET @BackupFileName = N''SQLTestDB_'' \n                + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR, GETDATE(), 120), '':'', ''''), ''-'', ''''), '' '', '''') \n                + ''.bak''; \n                BACKUP DATABASE SQLTestDB \n                TO DISK = @BackupFileName \n                WITH FORMAT, MEDIANAME = ''SQLServerBackups'', NAME = ''Full Backup of SQLTestDB'';',\n    @retry_attempts = 5,  -- Specify the number of retry attempts if the step fails.\n    @retry_interval = 5,  -- Specify the interval (in minutes) between retry attempts.\n    @database_name = 'SQLTestDB';  -- Specify the name of the database in which to execute the step.\nGO  -- Execute the batch of statements.\n\n```\n\n## Validate the job step created\n\n```sql\n-- Validate Job Steps\n-- Retrieve information about the steps of a specific SQL Server Agent job.\n\nSELECT \n    j.name AS JobName,  -- Select the name of the job.\n    js.step_id,  -- Select the ID of the step within the job.\n    js.step_name,  -- Select the name of the step.\n    js.command,  -- Select the command (T-SQL, PowerShell, etc.) that the step will execute.\n    js.subsystem  -- Select the subsystem (T-SQL, CmdExec, PowerShell, etc.) that the step uses.\nFROM \n    msdb.dbo.sysjobs j  -- From the sysjobs table in the msdb database (aliased as j).\nJOIN \n    msdb.dbo.sysjobsteps js ON j.job_id = js.job_id  -- Join to the sysjobsteps table (aliased as js) using the job_id column to match rows.\nWHERE \n    j.name = N'Daily SQLTestDB backup';  -- Filter the results to only show rows where the job name is 'Daily SQLTestDB backup'.\n```\n\n- Output\n\n| JobName                | step_id | step_name       | command        | subsystem |\n|------------------------|---------|-----------------|----------------|-----------|\n| Daily SQLTestDB backup | 1       | Backup database | `command here` | TSQL      |\n"
  },
  {
    "path": "home/databases/mssql/taskset_mssql_databases/task_030_add_job_schedule_and_validate/ReadMe.md",
    "content": "# Add Job Schedule And Validate\n\n- [learn.microsoft.com » sp_add_schedule](https://learn.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-add-schedule-transact-sql?view=sql-server-ver16)\n- [learn.microsoft.com » msdb.dbo.sysschedules](https://learn.microsoft.com/en-us/sql/relational-databases/system-tables/dbo-sysschedules-transact-sql?view=sql-server-ver16)\n\n## Background\n\n| Object Name             | Type             | Description                                                                                                                                                   |\n|-------------------------|------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `sp_add_schedule`       | Stored Procedure | A system stored procedure that allows users to create a new schedule for executing SQL Server Agent Jobs at specific times or in response to specific events. |\n| `msdb.dbo.sysschedules` | System Table     | A table in the MSDB database that stores details about schedules in SQL Server Agent, including their names, types, and when they are supposed to run.        |\n\n## Create a Job Schedule\n\n> This takes backup every minute and can create havoc in production. Change the schedule accordingly.\n\n```sql\n-- Add a new schedule to SQL Server Agent using the 'sp_add_schedule' stored procedure.\nEXEC dbo.sp_add_schedule  \n    @schedule_name = N'EveryMinuteBackupSchedule',  -- Specify the name of the new schedule.\n    @freq_type = 4,  -- Set the frequency type to 'Daily'. (4 indicates 'Daily')\n    @freq_interval = 1,  -- Set the frequency interval to 'Every 1 day'.\n    @freq_subday_type = 4,  -- Set the subday type to 'Minutes'. (4 indicates 'Minutes')\n    @freq_subday_interval = 1,  -- Set the subday interval to 'Every 1 minute'.\n    @active_start_time = 170800,  -- Set the active start time to 5:08:00 PM (time is in HHMMSS format).\n    @active_end_time = 235959;  -- Set the active end time to 11:59:59 PM (time is in HHMMSS format).\n```\n\n## Validate the created job schedule\n\n```sql\n-- Use the msdb database\nUSE msdb;\n-- GO is a batch terminator, it signals the end of a batch of statements to SQL Server.\nGO\n\n-- Select specific columns from the sysschedules table\nSELECT \n    name AS ScheduleName,  -- Select the name of the schedule and alias it as ScheduleName.\n    freq_type,  -- Select the type of frequency (e.g., once, daily, weekly, etc.).\n    freq_interval,  -- Select the interval of frequency (e.g., every 1 day, every 2 weeks, etc.).\n    freq_subday_type,  -- Select the type of subday frequency (e.g., hour, minute, etc.).\n    freq_subday_interval,  -- Select the interval of subday frequency (e.g., every 1 minute, every 2 hours, etc.).\n    active_start_time,  -- Select the time when the schedule becomes active (in HHMMSS format).\n    active_end_time  -- Select the time when the schedule becomes inactive (in HHMMSS format).\n    schedule_id  -- Select the unique identifier for the schedule, which is an integer that uniquely identifies each schedule in the sysschedules table.\n-- Specify the table to select the columns from\nFROM \n    msdb.dbo.sysschedules  -- From the sysschedules table in the msdb database.\n-- Filter the results to only include rows where the schedule name is 'EveryMinuteBackupSchedule'\nWHERE \n    name = N'EveryMinuteBackupSchedule';  -- Where the name of the schedule is 'EveryMinuteBackupSchedule'.\n\n```\n\n- Output\n\n| ScheduleName              | freq_type | freq_interval | freq_subday_type | freq_subday_interval | active_start_time | active_end_time | schedule_id |\n|---------------------------|-----------|---------------|------------------|----------------------|-------------------|-----------------|-------------|\n| EveryMinuteBackupSchedule | 4         | 1             | 4                | 1                    | 84200             | 235959          | 8           |\n"
  },
  {
    "path": "home/databases/mssql/taskset_mssql_databases/task_031_attach_schedule_to_job_and_validate/ReadMe.md",
    "content": "# Attach Schedule to Job and Validate\n\n- [learn.microsoft.com » sp_attach_schedule](https://learn.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-attach-schedule-transact-sql?view=sql-server-ver16)\n- [learn.microsoft.com » dbo.sysjobs](https://learn.microsoft.com/en-us/sql/relational-databases/system-tables/dbo-sysjobs-transact-sql?view=sql-server-ver16)\n- [learn.microsoft.com » dbo.sysjobschedules](https://learn.microsoft.com/en-us/sql/relational-databases/system-tables/dbo-sysjobschedules-transact-sql?view=sql-server-ver16)\n- [learn.microsoft.com » dbo.sysschedules](https://learn.microsoft.com/en-us/sql/relational-databases/system-tables/dbo-sysschedules-transact-sql?view=sql-server-ver16)\n\n## Background\n\n| Object Name              | Type             | Description                                                                                                                                           |\n|--------------------------|------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------|\n| msdb.dbo.sysjobs         | Table            | Stores information for each scheduled job in SQL Server. Includes details like job ID, name, enabled status, etc.                                     |\n| msdb.dbo.sysjobschedules | Table            | Contains information for each time a job is scheduled to run. Links jobs in `sysjobs` to their respective schedules in `sysschedules`.                |\n| msdb.dbo.sysschedules    | Table            | Contains information about the schedules for jobs, alerts, and operators, such as the schedule's type, frequency, active range, etc.                  |\n| sp_attach_schedule       | Stored Procedure | A system stored procedure that attaches an existing schedule to a job. It takes the job name and schedule name as parameters and links them together. |\n\n## Attach schedule to a job\n\nThis script is attaching a schedule named `EveryMinuteBackupSchedule` to a job named `Daily SQLTestDB backup` within the SQL Server Agent, using the `msdb` system database. This means that the job `Daily SQLTestDB backup` will be executed following the schedule defined as `EveryMinuteBackupSchedule`. If the schedule or job does not exist, or if there's an issue with permissions, the stored procedure will return an error.\n\n```sql\nUSE msdb;  -- Switch to using the 'msdb' database which is used by SQL Server Agent for scheduling alerts and jobs.\nGO  -- A batch terminator, it signals the end of a batch of Transact-SQL statements to the SQL Server utilities.\n\nEXEC sp_attach_schedule  -- Execute the stored procedure to attach a schedule to a job.\n   @job_name = N'Daily SQLTestDB backup',  -- Specify the name of the job to which the schedule will be attached.\n   @schedule_name = N'EveryMinuteBackupSchedule';  -- Specify the name of the schedule to be attached to the job.\nGO  -- Batch terminator.\n```\n\n## Validate\n\nThis following script selects the job name and schedule name from the msdb database, joining the sysjobs, sysjobschedules, and sysschedules tables together and filtering the results based on the specified job name and schedule name. If the script returns a row with the specified job name and schedule name, it indicates that the schedule is attached to the job. If it returns no rows, it indicates that the schedule is not attached to the job.\n\n```sql\nUSE msdb;  -- Use the msdb system database which stores SQL Server Agent data\nGO  -- Submit the previous statement batch for execution\n\nSELECT \n    j.name AS JobName,  -- Select and rename the 'name' column from sysjobs as JobName\n    s.name AS ScheduleName  -- Select and rename the 'name' column from sysschedules as ScheduleName\nFROM \n    msdb.dbo.sysjobs j  -- Specify the sysjobs table in msdb database with alias 'j'\nJOIN \n    msdb.dbo.sysjobschedules js ON j.job_id = js.job_id  -- Join sysjobschedules (alias 'js') using the job_id as the key\nJOIN \n    msdb.dbo.sysschedules s ON js.schedule_id = s.schedule_id  -- Join sysschedules (alias 's') using the schedule_id as the key\nWHERE \n    j.name = N'Daily SQLTestDB backup'  -- Filter the results to only include rows where the job name is 'Daily SQLTestDB backup'\n    AND s.name = N'EveryMinuteBackupSchedule';  -- AND where the schedule name is 'EveryMinuteBackupSchedule'\nGO  -- Submit the SELECT statement batch for execution\n```\n\n- Output\n\n| JobName                | ScheduleName              |\n|------------------------|---------------------------|\n| Daily SQLTestDB backup | EveryMinuteBackupSchedule |\n"
  },
  {
    "path": "home/databases/mssql/taskset_mssql_databases/task_032_add_job_to_server_and_validate/ReadMe.md",
    "content": "# Add job to the server and validate\n\n- [learn.microsoft.com » sp_add_jobserver](https://learn.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-add-jobserver-transact-sql?view=sql-server-ver16)\n- [learn.microsoft.com » dbo.sysjobs](https://learn.microsoft.com/en-us/sql/relational-databases/system-tables/dbo-sysjobs-transact-sql?view=sql-server-ver16)\n- [learn.microsoft.com » sys.servers](https://learn.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysservers-transact-sql?view=sql-server-ver16)\n- [learn.microsoft.com » dbo.sysjobservers](https://learn.microsoft.com/en-us/sql/relational-databases/system-tables/dbo-sysjobservers-transact-sql?view=sql-server-ver16)\n\n## Add job to the server\n\nThis script is ensuring that the SQL Server Agent job named `'Daily SQLTestDB backup'` is targeted to run on the local server (since no specific server is provided). This is a necessary step after creating a job and before it can be run, as SQL Server needs to know where the job should be executed. If you're in a multi-server environment and you want the job to run on a different server, you would specify that server in the `sp_add_jobserver` procedure.\n\n```sql\nUSE msdb;  -- Switch to using the 'msdb' database which is used by SQL Server Agent for scheduling alerts and jobs.\nGO  -- A batch terminator, it signals the end of a batch of Transact-SQL statements to the SQL Server utilities.\n\nEXEC dbo.sp_add_jobserver  -- Execute the stored procedure to target the job to run on a server.\n    @job_name = N'Daily SQLTestDB backup';  -- Specify the name of the job to be targeted to run on the server.\nGO  -- \n```\n\n## Validate\n\nIn this SQL query, we are retrieving the name of a job and the name of the server where the job is executed from the SQL Server Agent job tables. We use joins to link the `sysjobs`, `sysjobservers`, and `sysservers` tables together to get the desired information. The `WHERE` clause is used to filter the results to only include the job named 'Daily SQLTestDB backup'.\n\n```sql\nSELECT \n    j.name AS JobName,  -- Select the name of the job and alias it as JobName.\n    s.srvname AS ServerName  -- Select the name of the server and alias it as ServerName.\nFROM \n    msdb.dbo.sysjobs j  -- Specify the sysjobs table from the msdb database as the main table and alias it as j.\nJOIN \n    msdb.dbo.sysjobservers js ON j.job_id = js.job_id  -- Join with the sysjobservers table using the job_id field and alias the table as js.\nJOIN \n    master.dbo.sysservers s ON js.server_id = s.srvid  -- Join with the sysservers table from the master database using the server_id field and alias the table as s.\nWHERE \n    j.name = N'Daily SQLTestDB backup';  -- Filter the results to only include rows where the job name is 'Daily SQLTestDB backup'.\n```\n\n- Output\n\n| JobName                | ServerName    |\n|------------------------|---------------|\n| Daily SQLTestDB backup | sqlEnterprise |\n"
  },
  {
    "path": "home/databases/mssql/taskset_mssql_databases/task_033_logical_backup/ReadMe.md",
    "content": "# Taking a logical backup\n\n- [learn.microsoft.com » install sqlpackage](https://learn.microsoft.com/en-us/sql/tools/sqlpackage/sqlpackage?view=sql-server-ver16)\n\n```bash\nmkdir sqlpackage\nunzip ~/Downloads/sqlpackage-osx-<version string>.zip -d ~/sqlpackage\nchmod +x ~/sqlpackage/sqlpackage\necho 'export PATH=\"$PATH:~/sqlpackage\"' >> ~/.bash_profile\nsource ~/.bash_profile\nsqlpackage\n```\n\n- Before executing SQL package\n\n```bash\nsudo spctl --master-disable\n```\n\n- SQL Package command to take logical backup\n\n```bash\n~/sqlpackage/sqlpackage /Action:Export /SourceServername:localhost /SourceDatabaseName:<DBNAME_TO_EXPORT> /SourceUser:<user like `sa`> /SourcePassword:<Password_to_connect> /TargetFile:<DBNAME.bacpac> /SourceTrustServerCertificate:True\n```\n\n- SQL Package command to import the logical backup\n\n```bash\n~/sqlpackage/sqppackage /Action:Import /TargetServername: localhost /TargetDatabaseName:<DBNAME_TO_IMPORT> /TargetUser:<user like `sa`> /TargetPassword:<Password_to_connect> /SourceFile:<DBNAME.bacpac> /TargetTrustServerCertificate: True \n```\n\n- After execution\n\n```bash\nsudo spctl --master-enable\n```"
  },
  {
    "path": "home/databases/mssql/taskset_mssql_databases/task_034_check_when_tables_in_given_database_were_last_updated/ReadMe.md",
    "content": "# Check when tables in a given database were last modified\n\n- [stackoverflow.com » SQL Server database last updated date time](https://stackoverflow.com/questions/29535074/sql-server-database-last-updated-date-time)\n\n```sql\nSELECT * FROM SYS.OBJECTS\nORDER BY MODIFY_DATE DESC\n```\n\n```sql\n-- Replace DBNAME with required database\nSELECT \n    t.name AS TableName,\n    MAX(ius.last_user_update) AS LastUpdate\nFROM \n    sys.tables t\nLEFT JOIN \n    sys.dm_db_index_usage_stats ius ON t.object_id = ius.object_id\nWHERE \n    ius.database_id = DB_ID('<DBNAME>') OR ius.database_id IS NULL\nGROUP BY \n    t.name\nORDER BY \n    LastUpdate DESC;\n```\n"
  },
  {
    "path": "home/databases/mssql/taskset_mssql_databases/task_035_slow_queries/ReadMe.md",
    "content": "# Slow Queries\n\n- [learn.microsoft.com » Troubleshoot slow-running queries in SQL Server](https://learn.microsoft.com/en-us/troubleshoot/sql/database-engine/performance/troubleshoot-slow-running-queries)\n- [stackoverflow.com » How to find slowest queries](https://stackoverflow.com/questions/820219/how-to-find-slowest-queries)\n\n\n\n"
  },
  {
    "path": "home/databases/mssql/taskset_mssql_databases/task_036_monitoring_using_influxdb_telegraf_grafana/ReadMe.md",
    "content": "# Near real-time monitoring of SQL Server Linux/containers using Telegraf-InfluxDB and Grafana\n\n- [techcommunity.microsoft.com » Near real-time monitoring of SQL Server Linux/containers using Telegraf-InfluxDB and Grafana](https://techcommunity.microsoft.com/t5/sql-server-blog/near-real-time-monitoring-of-sql-server-linux-containers-using/ba-p/2620050)\n\n```bash\nsudo docker exec -it influxdb bash\n#then run beow commands inside the container\ninflux\ncreate database telegraf;\nuse telegraf; \nshow retention policies; \ncreate retention policy retain30days on telegraf duration 30d replication 1 default; \nquit\n```\n"
  },
  {
    "path": "home/databases/mssql/taskset_mssql_databases/task_036_monitoring_using_influxdb_telegraf_grafana/docker-compose.yaml",
    "content": "version: '3'\nservices:\n\n  sqlEnterprise:\n    image: mcr.microsoft.com/mssql/server:2022-latest\n    container_name: sqlEnterprise\n    environment:\n      - ACCEPT_EULA=Y\n      - MSSQL_SA_PASSWORD=Password12345\n      - MSSQL_PID=Enterprise\n      - MSSQL_AGENT_ENABLED=1\n    ports:\n      - \"1433:1433\"\n    networks:\n      - monitoring-net\n\n  telegraf:\n    image: telegraf:1.28.3 # https://hub.docker.com/_/telegraf/tags\n    container_name: telegraf\n    volumes:\n      - ./telegraph_conf/telegraf.conf:/etc/telegraf/telegraf.conf\n    networks:\n      - monitoring-net\n\n  influxdb:\n    image: influxdb:2.7.3   # https://hub.docker.com/_/influxdb/tags\n    container_name: influxdb\n    volumes:\n      - ./influx_data:/var/lib/influxdb2\n      # - ./config:/etc/influxdb2\n    environment:\n      - DOCKER_INFLUXDB_INIT_MODE=setup\n      - DOCKER_INFLUXDB_INIT_USERNAME=my-user\n      - DOCKER_INFLUXDB_INIT_PASSWORD=my-password\n      - DOCKER_INFLUXDB_INIT_ORG=my-org\n      - DOCKER_INFLUXDB_INIT_BUCKET=my-bucket\n      # Optional environment variables\n      - DOCKER_INFLUXDB_INIT_RETENTION=1w\n      - DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=my-super-secret-auth-token\n    networks:\n      - monitoring-net\n    ports:\n      - \"8086:8086\"\n\n  grafana:\n    image: grafana/grafana:10.2.0  # https://hub.docker.com/r/grafana/grafana/tags\n    container_name: grafana\n    environment:\n      - GF_INSTALL_PLUGINS=grafana-piechart-panel,savantly-heatmap-panel\n    volumes:\n      - ./grafana:/var/lib/grafana\n    networks:\n      - monitoring-net\n    ports:\n      - \"3001:3000\"\n\nnetworks:\n  monitoring-net:\n    driver: bridge\n"
  },
  {
    "path": "home/databases/mysql/ReadMe.md",
    "content": "# taskset_mysql_databases\n\n> [Auto](https://github.com/codeaprendiz/learn_fullstack/blob/main/home/php/intermediate/taskset_intermediate_php/task_004_createGlobalMarkdownTable/generate-readme.php) generated ReadMe. Number of tasks: 6\n\n- [ReadMe\\_static](#readme_static)\n  - [Mac](#mac)\n    - [Start the MySQL database in ephemeral mode](#start-the-mysql-database-in-ephemeral-mode)\n    - [Start the MySQL database in persistent mode](#start-the-mysql-database-in-persistent-mode)\n    - [Connect to the MySQL database](#connect-to-the-mysql-database)\n\n## Mac\n\n[hub.docker.com » starting mysql locally](https://hub.docker.com/_/mysql)\n\nStart the MySQL database locally with the following command:\n\n### Start the MySQL database in ephemeral mode\n\n```bash\n# Start the MySQL database locally, in ephemeral mode\ndocker run --rm -it --name mysql_lts -p 3306:3306 -e MYSQL_ROOT_PASSWORD=secret -d mysql:lts\n# Execute a bash shell in the container\ndocker exec -it mysql_lts bash\n```\n\n### Start the MySQL database in persistent mode\n\n```bash\n# Start the MySQL database locally in persistent mode\ndocker run --name mysql_lts -p 3306:3306 -e MYSQL_ROOT_PASSWORD=secret -v $(pwd)/mysql_data:/var/lib/mysql -d mysql:lts\n\n# Execute a bash shell in the container\ndocker exec -it mysql_lts bash\n```\n\n### Connect to the MySQL database\n\n```bash\n# Connect to the MySQL database in the container\nmysql -hlocalhost -uroot -psecret\n```\n\n\n\n| Task     | Description                                                                                                    |\n|----------|----------------------------------------------------------------------------------------------------------------|\n| task_001 | [task_001_connecting_to_db](taskset_mysql_databases/task_001_connecting_to_db)                                 |\n| task_002 | [task_002_mysqldump](taskset_mysql_databases/task_002_mysqldump)                                               |\n| task_003 | [task_003_managing_databases](taskset_mysql_databases/task_003_managing_databases)                             |\n| task_004 | [task_004_managing_user](taskset_mysql_databases/task_004_managing_user)                                       |\n| task_005 | [task_005_set_transaction_isolation_levels](taskset_mysql_databases/task_005_set_transaction_isolation_levels) |\n| task_006 | [task_006_managing_tables](taskset_mysql_databases/task_006_managing_tables)                                   |\n"
  },
  {
    "path": "home/databases/mysql/ReadMe_static.md",
    "content": "# ReadMe_static\n\n- [ReadMe\\_static](#readme_static)\n  - [Mac](#mac)\n    - [Start the MySQL database in ephemeral mode](#start-the-mysql-database-in-ephemeral-mode)\n    - [Start the MySQL database in persistent mode](#start-the-mysql-database-in-persistent-mode)\n    - [Connect to the MySQL database](#connect-to-the-mysql-database)\n\n## Mac\n\n[hub.docker.com » starting mysql locally](https://hub.docker.com/_/mysql)\n\nStart the MySQL database locally with the following command:\n\n### Start the MySQL database in ephemeral mode\n\n```bash\n# Start the MySQL database locally, in ephemeral mode\ndocker run --rm -it --name mysql_lts -p 3306:3306 -e MYSQL_ROOT_PASSWORD=secret -d mysql:lts\n# Execute a bash shell in the container\ndocker exec -it mysql_lts bash\n```\n\n### Start the MySQL database in persistent mode\n\n```bash\n# Start the MySQL database locally in persistent mode\ndocker run --name mysql_lts -p 3306:3306 -e MYSQL_ROOT_PASSWORD=secret -v $(pwd)/mysql_data:/var/lib/mysql -d mysql:lts\n\n# Execute a bash shell in the container\ndocker exec -it mysql_lts bash\n```\n\n### Connect to the MySQL database\n\n```bash\n# Connect to the MySQL database in the container\nmysql -hlocalhost -uroot -psecret\n```\n\n\n"
  },
  {
    "path": "home/databases/mysql/taskset_mysql_databases/task_001_connecting_to_db/ReadMe.md",
    "content": "# Connecting to mysql\n\nConnecting to mysql db\n\n```bash\n mysql -h<hostname> -u<username> -p<password> \n```\n"
  },
  {
    "path": "home/databases/mysql/taskset_mysql_databases/task_002_mysqldump/ReadMe.md",
    "content": "# mysqldump\n\nTaking the mysqldump\n\n```bash\nmysqldump --databases <database-name>  --master-data=2 --single-transaction --order-by-primary -r filename.sql -h <hostname> -u <username> -p\n```\n"
  },
  {
    "path": "home/databases/mysql/taskset_mysql_databases/task_003_managing_databases/ReadMe.md",
    "content": "# Manage Databases\n\n- [Manage Databases](#manage-databases)\n  - [Create Database- CREATE -- SHOW -- Databases](#create-database--create----show----databases)\n  - [Show Databases](#show-databases)\n  - [Drop Database](#drop-database)\n\n## Create Database- [CREATE -- SHOW -- Databases](#create----show----databases)\n\n```sql\nCREATE DATABASE student_db;\n```\n\nOutput\n\n```sql\nmysql> CREATE DATABASE student_db;\nQuery OK, 1 row affected (0.01 sec)\n```\n\n## Show Databases\n\n```sql\nshow databases;\n```\n\n```sql\nmysql> show databases;\n+--------------------+\n| Database           |\n+--------------------+\n| information_schema |\n| mysql              |\n| performance_schema |\n| student_db         |\n| sys                |\n+--------------------+\n5 rows in set (0.01 sec)\n```\n\n## Drop Database\n\n```sql\nDROP DATABASE student_db;\n```\n\nOutput\n\n```sql\nmysql> DROP DATABASE student_db;\nQuery OK, 0 rows affected (0.02 sec)\n```\n"
  },
  {
    "path": "home/databases/mysql/taskset_mysql_databases/task_004_managing_user/ReadMe.md",
    "content": "# Manage User\n\n- [Manage User](#manage-user)\n  - [Create User](#create-user)\n  - [Show the grants for user `app_user` at any host](#show-the-grants-for-user-app_user-at-any-host)\n  - [Show the grants of current user](#show-the-grants-of-current-user)\n  - [Get the list of users and corresponding hosts allowed to login](#get-the-list-of-users-and-corresponding-hosts-allowed-to-login)\n  - [Grant READONLY priviledge to login `app_user` from any host](#grant-readonly-priviledge-to-login-app_user-from-any-host)\n  - [Drop the user](#drop-the-user)\n  - [Alter user, change password](#alter-user-change-password)\n  - [Check when the password was last changed](#check-when-the-password-was-last-changed)\n\n## Create User\n\nCreate a user\n\n```sql\nCREATE USER 'app_user'@'%' IDENTIFIED BY 'somepassword';\n```\n\n```sql\n-- The `%` symbol in SQL user specifications acts as a wildcard, allowing connections from any host; other possible values include specific hostnames or IP addresses to restrict user access to particular sources.\nmysql> CREATE USER 'app_user'@'%' IDENTIFIED BY 'somepassword';\nQuery OK, 0 rows affected (0.07 sec)\n```\n\n## Show the grants for user `app_user` at any host\n\n```sql\nshow grants for 'app_user'@'%';\n```\n\n```sql\nmysql> show grants for 'app_user'@'%';\n+--------------------------------------------------------------------------------------------------+\n| Grants for app_user@%                                                                            |\n+--------------------------------------------------------------------------------------------------+\n| GRANT USAGE ON *.* TO `app_user`@`%`                                                             |\n| GRANT ALL PRIVILEGES ON `someusername_db_dev`.* TO `app_user`@`%` WITH GRANT OPTION              |\n+--------------------------------------------------------------------------------------------------+\n```\n\n## Show the grants of current user\n\n```sql\nmysql> show grants;\n+--------------------------------------------------------------------------------------------------+\n| Grants for app_user@% .                                                                          |\n+--------------------------------------------------------------------------------------------------+\n| GRANT USAGE ON *.* TO `app_user`@`%`                                                             |\n| GRANT ALL PRIVILEGES ON `someusername_db_dev`.* TO `app_user`@`%` WITH GRANT OPTION              |\n+--------------------------------------------------------------------------------------------------+\n2 rows in set (0.05 sec)\n```\n\n## Get the list of users and corresponding hosts allowed to login\n\n```sql\nselect user,host from mysql.user;\n```\n\n```sql\nmysql> select user,host from mysql.user;\n+-------------------+-----------+\n| user              | host      |\n+-------------------+-----------+\n| admin             | %         |\n| app_user          | %         |\n| mysql.infoschema  | localhost |\n| mysql.session     | localhost |\n| mysql.sys         | localhost |\n+-------------------+-----------+\n5 rows in set (0.06 sec)\n```\n\n## Grant READONLY priviledge to login `app_user` from any host\n\n```sql\nGRANT SELECT, SHOW VIEW ON *.* TO 'app_user'@'%';\n```\n\n```sql\nFLUSH PRIVILEGES\n```\n\n```sql\nmysql> GRANT SELECT, SHOW VIEW ON *.* TO 'app_user'@'%';\nQuery OK, 0 rows affected (0.09 sec)\nmysql> FLUSH PRIVILEGES;\n```\n\n## Drop the user\n\n```sql\nDROP USER 'app_user'@'%';\n```\n\n```sql\nmysql> DROP USER 'app_user'@'%';\nQuery OK, 0 rows affected (0.07 sec)\n```\n\n## Alter user, change password\n\nFirst check the users\n\n```sql\nmysql> select user,host from mysql.user;\n+-------------------+-----------+\n| user              | host      |\n+-------------------+-----------+\n| app_user          | %         |\n```\n\nAlter the user password\n\n```sql\nALTER USER 'app_user'@'%' IDENTIFIED BY 'newpassword'; \n```\n\n```sql\n-- https://dev.mysql.com/doc/refman/8.0/en/resetting-permissions.html\nmysql> ALTER USER 'app_user'@'%' IDENTIFIED BY 'newpassword'; \n```\n\n## Check when the password was last changed\n\n```sql\nSELECT user, host, password_last_changed \nFROM mysql.user \nWHERE user = 'app_user';\n```\n\n```sql\nmysql> SELECT user, host, password_last_changed FROM mysql.user WHERE user = 'app_user';\n+----------+------+-----------------------+\n| user     | host | password_last_changed |\n+----------+------+-----------------------+\n| app_user | %    | 2024-04-28 10:57:45   |\n+----------+------+-----------------------+\n1 row in set (0.01 sec)\n```\n"
  },
  {
    "path": "home/databases/mysql/taskset_mysql_databases/task_005_set_transaction_isolation_levels/ReadMe.md",
    "content": "# Transaction Isolation Levels\n\n- [Transaction Isolation Levels](#transaction-isolation-levels)\n  - [Check the current transaction isolation level](#check-the-current-transaction-isolation-level)\n  - [Check global transaction isolation levels](#check-global-transaction-isolation-levels)\n  - [Set the transaction isolation level for the current session](#set-the-transaction-isolation-level-for-the-current-session)\n\n## Check the current transaction isolation level\n\n```sql\nselect @@transaction_isolation;\n```\n\nOutput\n\n```sql\nmysql> select @@transaction_isolation;\n+-------------------------+\n| @@transaction_isolation |\n+-------------------------+\n| REPEATABLE-READ         |\n+-------------------------+\n1 row in set (0.00 sec)\n\nmysql> \n```\n\n## Check global transaction isolation levels\n\n```sql\nselect @@global.transaction_isolation;\n```\n\n```sql\nmysql> select @@global.transaction_isolation;\n+--------------------------------+\n| @@global.transaction_isolation |\n+--------------------------------+\n| REPEATABLE-READ                |\n+--------------------------------+\n1 row in set (0.00 sec)\n\nmysql>\n```\n\n## Set the transaction isolation level for the current session\n\n```sql\nset session transaction isolation level read uncommitted;\n```\n\nOutput\n\n```sql\nmysql> set session transaction isolation level read uncommitted;\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> select @@transaction_isolation;\n+-------------------------+\n| @@transaction_isolation |\n+-------------------------+\n| READ-UNCOMMITTED        |\n+-------------------------+\n1 row in set (0.00 sec)\n\nmysql> \n```\n"
  },
  {
    "path": "home/databases/mysql/taskset_mysql_databases/task_006_managing_tables/ReadMe.md",
    "content": "# Manage Tables\n\n- [Manage Tables](#manage-tables)\n  - [Create a table named `students` in the `student_db` database](#create-a-table-named-students-in-the-student_db-database)\n  - [Show tables](#show-tables)\n  - [Insert into table](#insert-into-table)\n  - [Drop Table (if exists)](#drop-table-if-exists)\n\n## Create a table named `students` in the `student_db` database\n\n```sql\nUSE student_db;\nCREATE TABLE students (\n  id BIGINT AUTO_INCREMENT PRIMARY KEY,\n  name VARCHAR(255) NOT NULL,\n  balance BIGINT NOT NULL,\n  currency VARCHAR(3) NOT NULL,\n  created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP\n);\n```\n\nOutput\n\n```sql\nQuery OK, 0 rows affected (0.03 sec)\n```\n\n## Show tables\n\n```sql\nshow tables;\n```\n\nOutput\n\n```sql\nmysql> show tables;\n+----------------------+\n| Tables_in_student_db |\n+----------------------+\n| students             |\n+----------------------+\n1 row in set (0.00 sec)\n\nmysql> \n```\n\n## Insert into table\n\nInsert into table `students` in `student_db` database.\n\n```sql\nUSE student_db;\nINSERT INTO students (name, balance, currency) VALUES ('Alice', 1000, 'USD'), ('Bob', 1500, 'USD'), ('Charlie', 1200, 'USD');\n```\n\nOutput\n\n```sql\nQuery OK, 3 rows affected (0.01 sec)\nmysql> select * from students;\n+----+---------+---------+----------+---------------------+\n| id | name    | balance | currency | created_at          |\n+----+---------+---------+----------+---------------------+\n|  1 | Alice   |    1000 | USD      | 2024-04-10 16:25:53 |\n|  2 | Bob     |    1500 | USD      | 2024-04-10 16:25:53 |\n|  3 | Charlie |    1200 | USD      | 2024-04-10 16:25:53 |\n+----+---------+---------+----------+---------------------+\n3 rows in set (0.00 sec)\n\nmysql>\n```\n\n## Drop Table (if exists)\n\n```sql\nDROP TABLE IF EXISTS students;\n```\n\nOutput\n\n```sql\nmysql> DROP TABLE IF EXISTS students;\nQuery OK, 0 rows affected (0.03 sec)\n```\n"
  },
  {
    "path": "home/databases/oracle19c/ReadMe.md",
    "content": "# taskset_oracle19c_databases\n\n> [Auto](https://github.com/codeaprendiz/learn_fullstack/blob/main/home/php/intermediate/taskset_intermediate_php/task_004_createGlobalMarkdownTable/generate-readme.php) generated ReadMe. Number of tasks: 1\n\n| Task     | Description                                                                  |\n|----------|------------------------------------------------------------------------------|\n| task_000 | [task_000_clients_setup](taskset_oracle19c_databases/task_000_clients_setup) |\n"
  },
  {
    "path": "home/databases/oracle19c/taskset_oracle19c_databases/task_000_clients_setup/ReadMe.md",
    "content": "# Clients\n\n## Docs Referred\n\n- [autonomous-database/doc/connect-dedicated-adb.html](https://docs.oracle.com/en-us/iaas/autonomous-database/doc/connect-dedicated-adb.html)\n\n\n## Prerequisite installation required\n\n```bash\n╰─ brew install java\n\n╰─ java -version\nopenjdk version \"19\" 2022-09-20\nOpenJDK Runtime Environment Homebrew (build 19)\nOpenJDK 64-Bit Server VM Homebrew (build 19, mixed mode, sharing)\n```\n\n\n### Using SQL Developer\n\n[autonomous-database/doc/connect-oracle-sql-developer.html](https://docs.oracle.com/en-us/iaas/autonomous-database/doc/connect-oracle-sql-developer.html)\n\n- Will work in both the cases when the mTLS is enabled or not\n- The database should be reachable by the client machine\n\n[sql-developer](https://www.oracle.com/database/sqldeveloper/technologies/download/)\n\n- Go to the database\n\n![img.png](.images/db.png)\n\n\n- Click on `DB connection`\n\n- Download the `instance` wallet\n\n- Remember the password you create while downloading the wallet `mypass`\n\n- Open SQL developer and click on create new connection\n\n- Set the following values and click on test connection\n  - Connection Type : Cloud Wallet\n  - Username and password \n  - Config zip file which you downloaded\n\n![img.png](.images/sql-developer-connect.png)\n\n### Using SQLPlus\n\n[autonomous-database/doc/connect-sqlplus.html](https://docs.oracle.com/en-us/iaas/autonomous-database/doc/connect-sqlplus.html)\n\n```bash\n╰─ brew tap InstantClientTap/instantclient\n╰─ brew update                     \n╰─ brew install instantclient-basic\n╰─ brew install instantclient-sqlplus\n\n\n╰─ sqlplus -v                                                                                                         \n\nSQL*Plus: Release 19.0.0.0.0 - Production\nVersion 19.8.0.0.0\n```\n\n- Go to the database\n\n![img.png](.images/db.png)\n\n\n- Click on `DB connection`\n\n- Download the `instance` wallet\n\n- Remember the password you create while downloading the wallet `mypass`\n\n```bash\n╰─ mkdir wallet-unzipped                                                                                            \n╰─ mv Wallet_deletemedb.zip wallet-unzipped \n╰─ unzip Wallet_deletemedb.zip\n╰─ ls\nREADME                cwallet.sso           ewallet.pem           ojdbc.properties      tnsnames.ora\nWallet_deletemedb.zip ewallet.p12           keystore.jks          sqlnet.ora            truststore.jks\n\n## Only ZSH users ## https://unix.stackexchange.com/questions/706227/how-can-i-use-the-sed-command-to-replace-home-user-with\n╰─ print -P '%~'\n~/workspace/codeaprendiz/devops-essentials/home/databases/oracle19c/task-000-clients-setup/wallet-unzipped\n\n## Make changes in sqlnet.ora, \n╰─ cat sqlnet.ora    \nWALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY=\"/Users/username/workspace/codeaprendiz/devops-essentials/home/databases/oracle19c/task-000-clients-setup/wallet-unzipped\")))\nSSL_SERVER_DN_MATCH=yes\n\n\n╰─ export TNS_ADMIN=/Users/username/workspace/codeaprendiz/devops-essentials/home/databases/oracle19c/task-000-clients-setup/wallet-unzipped\n\n\n╰─ cat tnsnames.ora | grep  deletemedb_high\ndeletemedb_high = (.........)\n\n╰─ sqlplus -l  admin/yourdbpassword@deletemedb_high\nConnected to:\nOracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production\nVersion 19.17.0.1.0\nSQL> \n```\n\n\n\n\n### SQLCL\n\n- [autonomous-database/doc/connect-oracle-sqlcl.html](https://docs.oracle.com/en-us/iaas/autonomous-database/doc/connect-oracle-sqlcl.html)\n- [homebrew sqlcl](https://formulae.brew.sh/cask/sqlcl)\n\n```bash\nbrew install --cask sqlcl\n```\n\n- Download the wallet in the same way as above\n\n- Change the `sqlnet.ora` file in unzipped wallet\n\n```bash\n╰─ cat sqlnet.ora                          \nWALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY=\"/Users/username/workspace/codeaprendiz/devops-essentials/home/databases/oracle19c/task-000-clients-setup/wallet-unzipped\")))\nSSL_SERVER_DN_MATCH=yes\n```\n- Set the `TNS_ADMIN`\n\n```bash\n╰─ export TNS_ADMIN=/Users/username/workspace/codeaprendiz/devops-essentials/home/databases/oracle19c/task-000-clients-setup/wallet-unzipped\n```\n\n- Connect\n\n```bash\n╰─ sql /nolog\nSQLcl: Release 22.2 Production on Fri Sep 30 07:41:27 2022\nCopyright (c) 1982, 2022, Oracle.  All rights reserved.\nSQL> set cloudconfig /Users/username/workspace/codeaprendiz/devops-essentials/home/databases/oracle19c/task-000-clients-setup/Wallet_deletemedb.zip\nSQL> connect admin/qWert1234567@deletemedb_high\nConnected.\n```\n\n\n### Dbeaver\n\n- [dbeaver.io/download](https://dbeaver.io/download)\n\n- New connection -> Oracle\n- Select `TNS` and give the \n> TNS Names path : /Users/username/workspace/codeaprendiz/devops-essentials/home/databases/oracle19c/task-000-clients-setup/wallet-unzipped\n\n- Give the username and password for the database\n- Now go to `Driver Properties`. It might download drivers needed to connect depending on whether they are already present\n  or not.\n- Set the values for the following\n  - javax.net.ssl.keyStore : /Users/username/workspace/codeaprendiz/devops-essentials/home/databases/oracle19c/task-000-clients-setup/wallet-unzipped/keystore.jks\n  - javax.net.ssl.keyStorePassword: <your_wallet_password_that_you_gave_while_downloading_wallet>\n  - javax.net.ssl.trustStore: /Users/username/workspace/codeaprendiz/devops-essentials/home/databases/oracle19c/task-000-clients-setup/wallet-unzipped/truststore.jks\n  - javax.net.ssl.trustStorePassword : <your_wallet_password_that_you_gave_while_downloading_wallet>\n\n![img.png](.images/dbeaver.png)"
  },
  {
    "path": "home/databases/oracle19c/taskset_oracle19c_databases/task_000_clients_setup/wallet-unzipped/cwallet.sso",
    "content": ""
  },
  {
    "path": "home/databases/oracle19c/taskset_oracle19c_databases/task_000_clients_setup/wallet-unzipped/ewallet.p12",
    "content": ""
  },
  {
    "path": "home/databases/oracle19c/taskset_oracle19c_databases/task_000_clients_setup/wallet-unzipped/keystore.jks",
    "content": ""
  },
  {
    "path": "home/databases/oracle19c/taskset_oracle19c_databases/task_000_clients_setup/wallet-unzipped/ojdbc.properties",
    "content": ""
  },
  {
    "path": "home/databases/oracle19c/taskset_oracle19c_databases/task_000_clients_setup/wallet-unzipped/sqlnet.ora",
    "content": ""
  },
  {
    "path": "home/databases/oracle19c/taskset_oracle19c_databases/task_000_clients_setup/wallet-unzipped/tnsnames.ora",
    "content": ""
  },
  {
    "path": "home/databases/oracle19c/taskset_oracle19c_databases/task_000_clients_setup/wallet-unzipped/truststore.jks",
    "content": ""
  },
  {
    "path": "home/databases/postgreSQL/ReadMe-static.md",
    "content": "# ReadMe-static\n\n- [ReadMe-static](#readme-static)\n  - [Install PostgreSQL client](#install-postgresql-client)\n    - [Ubuntu](#ubuntu)\n    - [MacOS](#macos)\n  - [Start PostgreSQL database locally using Docker](#start-postgresql-database-locally-using-docker)\n\n## Install PostgreSQL client\n\n### Ubuntu\n\n- [how-to-install-psql-without-postgres](https://askubuntu.com/questions/1040765/how-to-install-psql-without-postgres)\n\n```bash\n$ apt-get install -y postgresql-client\n.\n$ psql --version  \npsql (PostgreSQL) 14.8 (Ubuntu 14.8-0ubuntu0.22.04.1)\n```\n\n### MacOS\n\n[pgadmin](https://www.pgadmin.org/download)\n\npsql\n\n[stackoverflow.com » Correct way to install psql without full Postgres on macOS](https://stackoverflow.com/questions/44654216/correct-way-to-install-psql-without-full-postgres-on-macos)\n\n```bash\n# For psql, \nexport PATH=\"/opt/homebrew/opt/libpq/bin:$PATH\"\n```\n\n## Start PostgreSQL database locally using Docker\n\n[hub.docker.com » starting postgres locally](https://hub.docker.com/_/postgres)\n\nStart the PostgreSQL database locally with the following command:\n\n```bash\ndocker run --rm --name postgres16 -p 5432:5432 -e POSTGRES_USER=root -e POSTGRES_PASSWORD=secret -d postgres:16-alpine\n```\n"
  },
  {
    "path": "home/databases/postgreSQL/ReadMe.md",
    "content": "# taskset_postgreSQL_databases\n\n> [Auto](https://github.com/codeaprendiz/learn_fullstack/blob/main/home/php/intermediate/taskset_intermediate_php/task_004_createGlobalMarkdownTable/generate-readme.php) generated ReadMe. Number of tasks: 7\n\n| Task     | Description                                                                                                                       |\n|----------|-----------------------------------------------------------------------------------------------------------------------------------|\n| task_001 | [task_001_connecting_to_db](taskset_postgreSQL_databases/task_001_connecting_to_db)                                               |\n| task_002 | [task_002_managing_tables](taskset_postgreSQL_databases/task_002_managing_tables)                                                 |\n| task_003 | [task_003_managing_users](taskset_postgreSQL_databases/task_003_managing_users)                                                   |\n| task_004 | [task_004_managing_database](taskset_postgreSQL_databases/task_004_managing_database)                                             |\n| task_005 | [task_005_managing_schemas](taskset_postgreSQL_databases/task_005_managing_schemas)                                               |\n| task_006 | [task_006_checking_deadlock](taskset_postgreSQL_databases/task_006_checking_deadlock)                                             |\n| task_007 | [task_007_set__show__transaction_isolation_levels](taskset_postgreSQL_databases/task_007_set__show__transaction_isolation_levels) |\n"
  },
  {
    "path": "home/databases/postgreSQL/taskset_postgreSQL_databases/task_001_connecting_to_db/ReadMe.md",
    "content": "# Connecting to PostgreSQL Database\n\nUse the following command\n\n```bash\npsql -h <hostname> -p <port-usually-5432> --username=admin -d <database-name>\n```\n\nOutput\n\n```bash\n$ psql -h <hostname> -p <port-usually-5432> --username=admin -d <database-name>     \nPassword for user admin: \n\n```\n\nIf the database is newly created and does not contain any other databases, then you can use `postgres` as DB name. This is present by default.\n\n```bash\npsql -h <hostname> -p <port-usually-5432> --username=admin --db postgres\n```\n\nOutput\n\n```bash\n$ psql -h <hostname> -p <port-usually-5432> --username=admin --db postgres\nPassword for user admin: \n```\n"
  },
  {
    "path": "home/databases/postgreSQL/taskset_postgreSQL_databases/task_002_managing_tables/ReadMe.md",
    "content": "# Managing Tables\n\n- [Managing Tables](#managing-tables)\n  - [Create](#create)\n  - [Select all tables except ones in `pg_catalog` and `information_schema`](#select-all-tables-except-ones-in-pg_catalog-and-information_schema)\n  - [Check tables and corresponding schema](#check-tables-and-corresponding-schema)\n  - [Describe](#describe)\n  - [Insert into table](#insert-into-table)\n  - [Select all from table](#select-all-from-table)\n  - [Drop](#drop)\n\n## Create\n\nTo create a table\n\n```sql\nCREATE TABLE IF NOT EXISTS products\n(\n    id SERIAL,\n    name TEXT NOT NULL,\n    price NUMERIC(10,2) NOT NULL DEFAULT 0.00,\n    CONSTRAINT products_pkey PRIMARY KEY (id)\n);\n```\n\n## Select all tables except ones in `pg_catalog` and `information_schema`\n\n```sql\nSELECT table_schema || '.' || table_name \nFROM information_schema.tables \nWHERE table_type = 'BASE TABLE' AND table_schema NOT IN ('pg_catalog', 'information_schema');\n```\n\nOutput\n\n```bash\npostgres=# SELECT table_schema || '.' || table_name \npostgres-# FROM information_schema.tables \npostgres-# WHERE table_type = 'BASE TABLE' AND table_schema NOT IN ('pg_catalog', 'information_schema');\n    ?column?     \n-----------------\n public.products\n(1 row)\n```\n\nYou can also run the following to get list of relations/tables\n\n```bash\n\\d\n```\n\n```bash\npostgres=# \\d\n              List of relations\n Schema |      Name       |   Type   | Owner \n--------+-----------------+----------+-------\n public | products        | table    | root\n public | products_id_seq | sequence | root\n(2 rows)\n```\n\n## Check tables and corresponding schema\n\n```sql\nSELECT schemaname, tablename FROM pg_tables;\n```\n\nOutput\n\n```bash\nbank=# SELECT schemaname, tablename FROM pg_tables LIMIT 5;\n schemaname |     tablename     \n------------+-------------------\n public     | accounts\n public     | entries\n public     | transfers\n public     | schema_migrations\n pg_catalog | pg_statistic\n```\n\n## Describe\n\n[postgres-describe-table](https://www.postgresqltutorial.com/postgresql-describe-table/)\n\nRun the following\n\n```sql\nSELECT \n   table_name, \n   column_name, \n   data_type \nFROM \n   information_schema.columns\nWHERE \n  table_name = '<your_table_name>';\n```\n\nOutput\n\n```bash\npostgres=# SELECT \npostgres-#    table_name, \npostgres-#    column_name, \npostgres-#    data_type \npostgres-# FROM \npostgres-#    information_schema.columns\npostgres-# WHERE \npostgres-#   table_name = 'products';\n table_name | column_name | data_type \n------------+-------------+-----------\n products   | id          | integer\n products   | price       | numeric\n products   | name        | text\n(3 rows)\n```\n\nYou can also do it using the following command [stackoverflow » PostgreSQL \"DESCRIBE TABLE\"](https://stackoverflow.com/questions/109325/postgresql-describe-table)\n\n```bash\n\\d <tableName>\n```\n\n```bash\n## Switch to right database\npostgres=# \\c postgres\npsql (13.2, server 13.3 (Debian 13.3-1.pgdg100+1))\nYou are now connected to database \"postgres\" as user \"postgres\".\npostgres=# \\d products\n                               Table \"public.products\"\n Column |     Type      | Collation | Nullable |               Default                \n--------+---------------+-----------+----------+--------------------------------------\n id     | integer       |           | not null | nextval('products_id_seq'::regclass)\n name   | text          |           | not null | \n price  | numeric(10,2) |           | not null | 0.00\nIndexes:\n    \"products_pkey\" PRIMARY KEY, btree (id)\n```\n\n## Insert into table\n\n- To insert into a table you can use\n\n```sql\n-- \\d products to see the schema\npostgres-# \\d products\n                               Table \"public.products\"\n Column |     Type      | Collation | Nullable |               Default                \n--------+---------------+-----------+----------+--------------------------------------\n id     | integer       |           | not null | nextval('products_id_seq'::regclass)\n name   | text          |           | not null | \n price  | numeric(10,2) |           | not null | 0.00\nIndexes:\n    \"products_pkey\" PRIMARY KEY, btree (id)\n```\n\n```sql\nINSERT INTO products(name, price) VALUES('green ball', 24);\nINSERT 0 1\n```\n\n## Select all from table\n\nTo view the inserted data in `products` table\n\n```sql\nselect * from products;\n```\n\nOutput\n\n```bash\npostgres=# select * from products;\n id |    name    | price \n----+------------+-------\n  1 | green ball | 24.00\n(1 row)\n```\n\n## Drop\n\nUse the following to drop a table\n\n```bash\nDROP TABLE <schemaName>.<tableName>;\n```\n\nOutput\n\n```bash\npostgres=# drop table products;\nDROP TABLE\npostgres=# \\d\nDid not find any relations.\npostgres=#\n```\n"
  },
  {
    "path": "home/databases/postgreSQL/taskset_postgreSQL_databases/task_003_managing_users/ReadMe.md",
    "content": "# Managing Users\n\n- [Managing Users](#managing-users)\n  - [Create a User](#create-a-user)\n  - [Grant Priviledges to user `app_user_microservice` on Database `student`](#grant-priviledges-to-user-app_user_microservice-on-database-student)\n  - [Validate Priviledges for user `app_user_microservice` on Database](#validate-priviledges-for-user-app_user_microservice-on-database)\n    - [Database level priviledges](#database-level-priviledges)\n    - [Schema level priviledges](#schema-level-priviledges)\n  - [Grant Priviledges to user `app_user_microservice` on ALL Tables in `public` schema for `bank` database](#grant-priviledges-to-user-app_user_microservice-on-all-tables-in-public-schema-for-bank-database)\n    - [Validate Priviledges for user `app_user_microservice` on Tables](#validate-priviledges-for-user-app_user_microservice-on-tables)\n    - [Table level priviledges](#table-level-priviledges)\n  - [Show all Users](#show-all-users)\n  - [Reset Password for a User](#reset-password-for-a-user)\n\n## Create a User\n\nTo create a user you can run\n\n```sql\nCREATE USER app_user_microservice WITH PASSWORD 'somepassword';\n```\n\n```bash\n# CREATE USER <username> WITH PASSWORD '<password>'; \npostgres=> CREATE USER app_user_microservice WITH PASSWORD 'somepassword';\nCREATE ROLE\n\n```\n\n## Grant Priviledges to user `app_user_microservice` on Database `student`\n\nGranting priviledge to a database for that user\n\n```bash\nGRANT ALL PRIVILEGES ON DATABASE student to app_user_microservice;\n```\n\nOutput\n\n```bash\npostgres=> GRANT ALL PRIVILEGES ON DATABASE <dbname> to <username>;\nGRANT\n```\n\n## Validate Priviledges for user `app_user_microservice` on Database\n\n### Database level priviledges\n\n```sql\nSELECT datname, has_database_privilege('app_user_microservice', datname, 'CONNECT') \nFROM pg_database;\n```\n\n```bash\npostgres=# SELECT datname, has_database_privilege('app_user_microservice', datname, 'CONNECT') \npostgres-# FROM pg_database;\n   datname   | has_database_privilege \n-------------+------------------------\n postgres    | t\n root        | t\n template1   | t\n template0   | t\n bank | t\n(5 rows)\n```\n\n### Schema level priviledges\n\n```sql\nSELECT nspname, has_schema_privilege('app_user_microservice', nspname, 'USAGE') \nFROM pg_catalog.pg_namespace;\n```\n\n```bash\npostgres=# SELECT nspname, has_schema_privilege('app_user_microservice', nspname, 'USAGE') \npostgres-# FROM pg_catalog.pg_namespace;\n      nspname       | has_schema_privilege \n--------------------+----------------------\n pg_toast           | f\n pg_catalog         | t\n public             | t\n information_schema | t\n(4 rows)\n```\n\n## Grant Priviledges to user `app_user_microservice` on ALL Tables in `public` schema for `bank` database\n\nMake sure you are connected to the database `bank`\n\n```bash\n\\c bank\n```\n\n```sql\nGRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO app_user_microservice;\n```\n\n```bash\npostgres=# \\c bank\nYou are now connected to database \"bank\" as user \"root\".\npostgres=# GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO app_user_microservice;\nGRANT\n```\n\n### Validate Priviledges for user `app_user_microservice` on Tables\n\n### Table level priviledges\n\n```sql\nSELECT tablename, has_table_privilege('app_user_microservice', tablename, 'SELECT') \nFROM pg_tables\nWHERE schemaname = 'public';\n```\n\n```bash\nbank=# SELECT tablename, has_table_privilege('app_user_microservice', tablename, 'SELECT') \nbank-# FROM pg_tables\nbank-# WHERE schemaname = 'public';\n     tablename     | has_table_privilege \n-------------------+---------------------\n accounts          | t\n entries           | t\n transfers         | t\n schema_migrations | t\n(4 rows)\n```\n\n## Show all Users\n\nRun the following\n\n```bash\n\\du\n```\n\nOutput\n\n```bash\npostgres=# \\du\n                             List of roles\n Role name |                         Attributes                         \n-----------+------------------------------------------------------------\n root      | Superuser, Create role, Create DB, Replication, Bypass RLS\n```\n\n## Reset Password for a User\n\n[postgresql.org/docs » ALTER USER](https://www.postgresql.org/docs/8.0/sql-alteruser.html)\n\n```sql\nALTER USER app_user_microservice WITH PASSWORD 'secret';\n```\n\nOutput\n\n```bash\n## Username : app_user_microservice, new password : secret\npostgres=# ALTER USER app_user_microservice WITH PASSWORD 'secret';\n```\n"
  },
  {
    "path": "home/databases/postgreSQL/taskset_postgreSQL_databases/task_004_managing_database/ReadMe.md",
    "content": "# Managing Database\n\n- [Managing Database](#managing-database)\n  - [Create](#create)\n  - [Show all databases](#show-all-databases)\n  - [Connect to required database](#connect-to-required-database)\n  - [Drop a database](#drop-a-database)\n  - [Dump](#dump)\n  - [Restore](#restore)\n\n## Create\n\n[sql-createdatabase](https://www.postgresql.org/docs/9.0/sql-createdatabase.html)\n\nTo create a database with owner as `admin`\n\n```bash\nCREATE DATABASE sales OWNER admin\nCREATE DATABASE\n```\n\n## Show all databases\n\n[Doc](https://www.postgresqltutorial.com/postgresql-show-databases/)\n\nTo get the list of all databases\n\n```bash\npostgres=# \\l\n```\n\nYou can also use\n\n```bash\nSELECT datname FROM pg_database;\n```\n\n## Connect to required database\n\n- First see all databases\n\n```bash\npostgres=# \\l\n                                 List of databases\n   Name    |  Owner   | Encoding |  Collate   |   Ctype    |   Access privileges   \n-----------+----------+----------+------------+------------+-----------------------\n postgres  | postgres | UTF8     | en_US.utf8 | en_US.utf8 | \n template0 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +\n           |          |          |            |            | postgres=CTc/postgres\n template1 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +\n           |          |          |            |            | postgres=CTc/postgres\n```\n\n- To connect to right db\n\n```bash\npostgres=# \\c postgres\npsql (13.2, server 13.3 (Debian 13.3-1.pgdg100+1))\nYou are now connected to database \"postgres\" as user \"postgres\".\n```\n\n## Drop a database\n\n[Docs](https://www.postgresql.org/docs/8.2/sql-dropdatabase.html)\n\n- You can use the following command\n\n```bash\nDROP DATABASE <database_name>\n```\n\n## Dump\n\n[Docs](https://www.postgresql.org/docs/9.1/backup-dump.html)\n\nTo dump the database you can use\n\n```bash\npg_dump -h <hostname> -p 5432 --username=<username> --db <databasename> > outputfile.sql \n```\n\n## Restore\n\n[Docs](https://www.postgresql.org/docs/9.1/backup-dump.html)\n\n- To restore the database dump you can use\n\n```bash\npsql -h <hostname>  -p 5432 --username=<username> --db <databasename> -f  filename.sql\n```\n"
  },
  {
    "path": "home/databases/postgreSQL/taskset_postgreSQL_databases/task_005_managing_schemas/ReadMe.md",
    "content": "# Managing Schemas\n\n- [Managing Schemas](#managing-schemas)\n  - [List all Schemas](#list-all-schemas)\n\n## List all Schemas\n\nTo list all the schemas you can use\n\n```sql\nSELECT schema_name FROM information_schema.schemata;\n```\n\nOutput\n\n```bash\npostgres=# SELECT schema_name FROM information_schema.schemata;\n    schema_name     \n--------------------\n public\n information_schema\n pg_catalog\n pg_toast\n(4 rows)\n```\n\nYou can also use\n\n```sql\nSELECT nspname FROM pg_catalog.pg_namespace;\n```\n\nOutput\n\n```bash\npostgres=# SELECT nspname FROM pg_catalog.pg_namespace;\n      nspname       \n--------------------\n pg_toast\n pg_catalog\n public\n information_schema\n(4 rows)\n```\n\nYou can also use\n\n```sql\n\\dn\n```\n\n```sql\npostgres=> \\dn\n    List of schemas\n  Name  |     Owner\n--------+---------------\n public | adminuser\n(1 row)\n```\n"
  },
  {
    "path": "home/databases/postgreSQL/taskset_postgreSQL_databases/task_006_checking_deadlock/ReadMe.md",
    "content": "# Checking Deadlock\n\n[wiki.postgresql » Lock_monitoring](https://wiki.postgresql.org/wiki/Lock_Monitoring)\n\n```sql\n  SELECT blocked_locks.pid     AS blocked_pid,\n         blocked_activity.usename  AS blocked_user,\n         blocking_locks.pid     AS blocking_pid,\n         blocking_activity.usename AS blocking_user,\n         blocked_activity.query    AS blocked_statement,\n         blocking_activity.query   AS current_statement_in_blocking_process\n   FROM  pg_catalog.pg_locks         blocked_locks\n    JOIN pg_catalog.pg_stat_activity blocked_activity  ON blocked_activity.pid = blocked_locks.pid\n    JOIN pg_catalog.pg_locks         blocking_locks \n        ON blocking_locks.locktype = blocked_locks.locktype\n        AND blocking_locks.database IS NOT DISTINCT FROM blocked_locks.database\n        AND blocking_locks.relation IS NOT DISTINCT FROM blocked_locks.relation\n        AND blocking_locks.page IS NOT DISTINCT FROM blocked_locks.page\n        AND blocking_locks.tuple IS NOT DISTINCT FROM blocked_locks.tuple\n        AND blocking_locks.virtualxid IS NOT DISTINCT FROM blocked_locks.virtualxid\n        AND blocking_locks.transactionid IS NOT DISTINCT FROM blocked_locks.transactionid\n        AND blocking_locks.classid IS NOT DISTINCT FROM blocked_locks.classid\n        AND blocking_locks.objid IS NOT DISTINCT FROM blocked_locks.objid\n        AND blocking_locks.objsubid IS NOT DISTINCT FROM blocked_locks.objsubid\n        AND blocking_locks.pid != blocked_locks.pid\n\n    JOIN pg_catalog.pg_stat_activity blocking_activity ON blocking_activity.pid = blocking_locks.pid\n   WHERE NOT blocked_locks.granted;\n```\n"
  },
  {
    "path": "home/databases/postgreSQL/taskset_postgreSQL_databases/task_007_set__show__transaction_isolation_levels/ReadMe.md",
    "content": "# Show -- Transaction Isolation Level\n\n## Show\n\nTo show the current transaction isolation level you can run\n\n```sql\nshow transaction isolation level;\n```\n\nOutput\n\n```bash\npostgres=# show transaction isolation level;\n transaction_isolation \n-----------------------\n read committed\n(1 row)\n```\n\n## Set\n\nTo set the transaction isolation level you can run\n\n```sql\n-- You can set the transaction isolation level within a transaction block\nBEGIN;\nSET TRANSACTION ISOLATION LEVEL <isolation_level>;\n```\n\nOutput\n\n```bash\npostgres=# BEGIN;\nBEGIN\npostgres=# SET TRANSACTION ISOLATION LEVEL read uncommitted;\nSET\npostgres=*# show transaction isolation level;\n transaction_isolation \n-----------------------\n read uncommitted\n(1 row)\n```\n"
  },
  {
    "path": "home/devops_blogs/ReadMe.md",
    "content": "# Learning Resources\n\n## Learn SRE\n\n- [sre.google](https://sre.google/)\n\n- [system-monitoring-and-troubleshooting](https://www.rapid7.com/fundamentals/system-monitoring-and-troubleshooting/)\n\n- [Google Cloud infrastructure reliability guide](https://cloud.google.com/architecture/infra-reliability-guide)\n\n## AWS\n\n- [Configuring client IP address preservation with a Network Load Balancer in AWS Global Accelerator](https://aws.amazon.com/blogs/networking-and-content-delivery/configuring-client-ip-address-preservation-with-a-network-load-balancer-in-aws-global-accelerator/)\n\n## Free Ebooks\n\n[building_secure_and_reliable_systems](https://sre.google/books/building-secure-reliable-systems)\n\n[SRE Workbook](https://sre.google/workbook/table-of-contents/)\n\n[SRE Book](https://sre.google/sre-book/table-of-contents/)\n\n## Kubernetes\n\n- [Openshift » developers.redhat.com » developer-sandbox](https://developers.redhat.com/developer-sandbox)\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/README.md",
    "content": "# taskset_ansible_infrastructure_as_code\n\n> [Auto](https://github.com/codeaprendiz/learn_fullstack/blob/main/home/php/intermediate/taskset_intermediate_php/task_004_createGlobalMarkdownTable/generate-readme.php) generated ReadMe. Number of tasks: 10\n\n| Task     | Description                                                                                                             |\n|----------|-------------------------------------------------------------------------------------------------------------------------|\n| task_001 | [task_001_commons](taskset_ansible_infrastructure_as_code/task_001_commons)                                             |\n| task_002 | [task_002_datadog_agent](taskset_ansible_infrastructure_as_code/task_002_datadog_agent)                                 |\n| task_003 | [task_003_user](taskset_ansible_infrastructure_as_code/task_003_user)                                                   |\n| task_004 | [task_004_directory](taskset_ansible_infrastructure_as_code/task_004_directory)                                         |\n| task_005 | [task_005_docker](taskset_ansible_infrastructure_as_code/task_005_docker)                                               |\n| task_005 | [task_005_drone_ci](taskset_ansible_infrastructure_as_code/task_005_drone_ci)                                           |\n| task_006 | [task_006_elastic_search_cluster_docker](taskset_ansible_infrastructure_as_code/task_006_elastic_search_cluster_docker) |\n| task_007 | [task_007_jenkins_docker](taskset_ansible_infrastructure_as_code/task_007_jenkins_docker)                               |\n| task_008 | [task_008_kibana_docker](taskset_ansible_infrastructure_as_code/task_008_kibana_docker)                                 |\n| task_009 | [task_009_monit](taskset_ansible_infrastructure_as_code/task_009_monit)                                                 |\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/ReadMe-static.md",
    "content": "# ansible-kitchen\n\n- To install `ansible` on ubuntu you can run the following\n```bash\n./install-ansible.sh\n```\n\n- Links to Usage of ansible modules in playbooks and official docs\n  - [action]()\n  - [sysctl](playbooks/roles/elastic-search-cluster-docker/tasks/install-docker-elastic-search-cluster.yml#L03) \n\n\nLets bake some good Infra code here\n\nVersion at the time of making this ReadMe.md\n```bash\n$ ansible --version\nansible 2.9.4\n```\n\n# Installation\n\n- Ubuntu 18.04\n```bash\n$ sudo apt-add-repository ppa:ansible/ansible -y\n$ sudo apt update\n$ sudo apt -y install ansible\n```\n\n## list inventory\nReference Docs\nhttps://docs.ansible.com/ansible/latest/user_guide/intro_patterns.html\n\nTo convert from *.ini format for *.yml format you can use the following command\n```bash\nansible-inventory -i inventory.ini -y --list > inventory.yaml\n```\n\nDefault output without setting ansible.cfg\n```bash\n## will give output of /etc/ansible/hosts\n$ ansible --list-hosts all\n[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'\n  hosts (0):\n```\n\nusing custom file ansible.cfg\n```buildoutcfg\n[defaults]\ninventory=inventory.yml\n```\n\nThe following is the inventory.yml\n```yaml\nall:\n  hosts:\n    mail.example.com:\n  children:\n    local:\n      hosts:\n        127.0.0.1:\n          ansible_connection: local\n    webservers:\n      hosts:\n        foo.example.com:\n        bar.example.com:\n    dbservers:\n      hosts:\n        one.example.com:\n        two.example.com:\n        three.example.com:\n    east:\n      hosts:\n        foo.example.com:\n        one.example.com:\n        two.example.com:\n    west:\n      hosts:\n        bar.example.com:\n        three.example.com:\n    prod:\n      hosts:\n        foo.example.com:\n        one.example.com:\n        two.example.com:\n    test:\n      hosts:\n        bar.example.com:\n        three.example.com:\n```\n\n```bash\n$ ansible -i inventory.yml --list-host all\n  hosts (7):\n    mail.example.com\n    foo.example.com\n    two.example.com\n    one.example.com\n    bar.example.com\n    three.example.com\n    127.0.0.1\n```\n\nafter setting ansible.cfg file\n```bash\n$ ansible --list-host all\n  hosts (7):\n    mail.example.com\n    foo.example.com\n    two.example.com\n    one.example.com\n    bar.example.com\n    three.example.com\n    127.0.0.1\n```\n\nusing group names \"webservers\" is a group\n```bash\n$ ansible --list-host \"webservers\"\n  hosts (2):\n    bar.example.com\n    foo.example.com\n```\n\nusing wild cards\n```bash\n$ ansible --list-host \"*.com\"\n  hosts (6):\n    two.example.com\n    one.example.com\n    foo.example.com\n    bar.example.com\n    mail.example.com\n    three.example.com\n```\n\ngiving multiple groups\n```bash\n$ ansible --list-host \"prod:test\"\n  hosts (5):\n    foo.example.com\n    two.example.com\n    one.example.com\n    bar.example.com\n    three.example.com\n```\n\nusing as an array\n```bash\n$ ansible --list-host \"prod[0]\"\n  hosts (1):\n    foo.example.com\n```\n\nusing negation\n```bash\n$ ansible --list-host \"\\!prod\"\n  hosts (4):\n    mail.example.com\n    bar.example.com\n    three.example.com\n    127.0.0.1\n```\n\n## Modules\n\nReference Docs\nhttps://docs.ansible.com/ansible/latest/modules/modules_by_category.html\n\n### ping\n\nTo check the connectivity of all hosts\n```bash\n$ ansible -m ping localhost\n127.0.0.1 | SUCCESS => {\n    \"ansible_facts\": {\n        \"discovered_interpreter_python\": \"/usr/bin/python\"\n    },\n    \"changed\": false,\n    \"ping\": \"pong\"\n}\n```\n\n### command (the default module)\n```bash\n$ ansible -m command -a \"ls\" local\n127.0.0.1 | CHANGED | rc=0 >>\nREADME.md\nansible.cfg\ninventory.ini\ninventory.yaml\ninventory.yml\n\n# since it is default\n$ ansible -a \"ls\" local\n127.0.0.1 | CHANGED | rc=0 >>\nREADME.md\nansible.cfg\ninventory.ini\ninventory.yaml\ninventory.yml\n```\n\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/install-ansible.sh",
    "content": "#!/bin/sh\n\n\nsudo apt-add-repository ppa:ansible/ansible -y\nsudo apt update\nsudo apt -y install ansible"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_001_commons/playbooks/ansible.cfg",
    "content": "[defaults]\ninventory=inventory.yml\n\n\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_001_commons/playbooks/inventory.ini",
    "content": "[local]\n127.0.0.1\n\n[local:vars]\nansible_connection=local\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_001_commons/playbooks/inventory.yml",
    "content": "all:\n  hosts:\n    mail.example.com:\n  children:\n    local:\n      hosts:\n        127.0.0.1:\n          ansible_connection: local\n    gcp:\n      hosts:\n        35.226.68.74:\n    gcp2:\n      hosts:\n        35.238.67.36:\n    gcp1:\n      hosts:\n        droneio.gotdns.ch:\n    webservers:\n      hosts:\n        foo.example.com:\n        bar.example.com:\n    dbservers:\n      hosts:\n        one.example.com:\n        two.example.com:\n        three.example.com:\n    east:\n      hosts:\n        foo.example.com:\n        one.example.com:\n        two.example.com:\n    west:\n      hosts:\n        bar.example.com:\n        three.example.com:\n    prod:\n      hosts:\n        foo.example.com:\n        one.example.com:\n        two.example.com:\n    test:\n      hosts:\n        bar.example.com:\n        three.example.com:\n    jenkins:\n      hosts:\n        54.194.212.216"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_001_commons/playbooks/playbook-install-commons.yaml",
    "content": "- name: install commons\n  hosts: local\n  become: true\n  roles:\n    - { role: commons,                   tags: [ 'commons'       ] }"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_002_datadog_agent/playbooks/ansible.cfg",
    "content": "[defaults]\ninventory=inventory.yml\n\n\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_002_datadog_agent/playbooks/inventory.ini",
    "content": "[local]\n127.0.0.1\n\n[local:vars]\nansible_connection=local\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_002_datadog_agent/playbooks/inventory.yml",
    "content": "all:\n  hosts:\n    mail.example.com:\n  children:\n    local:\n      hosts:\n        127.0.0.1:\n          ansible_connection: local\n    gcp:\n      hosts:\n        35.226.68.74:\n    gcp2:\n      hosts:\n        35.238.67.36:\n    gcp1:\n      hosts:\n        droneio.gotdns.ch:\n    webservers:\n      hosts:\n        foo.example.com:\n        bar.example.com:\n    dbservers:\n      hosts:\n        one.example.com:\n        two.example.com:\n        three.example.com:\n    east:\n      hosts:\n        foo.example.com:\n        one.example.com:\n        two.example.com:\n    west:\n      hosts:\n        bar.example.com:\n        three.example.com:\n    prod:\n      hosts:\n        foo.example.com:\n        one.example.com:\n        two.example.com:\n    test:\n      hosts:\n        bar.example.com:\n        three.example.com:\n    jenkins:\n      hosts:\n        54.194.212.216"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_002_datadog_agent/playbooks/playbook-install-datadog.yaml",
    "content": "#Usage:\n#  $ ansible-playbook playbook-install-datadog.yaml -e \"RUNTIME_VAR_DATADOG_API_KEY=2dd894f5******0c73474d48f\" -e \"RUNTIME_VAR_HOSTS=localhost\"\n\n- name: Install Datadog Agent on servers in AWS\n  hosts: \"{{ RUNTIME_VAR_HOSTS }}\"\n  become: yes\n  roles:\n    - { role: datadog-agent, become: yes }\n  vars:\n    datadog_api_key: \"{{ RUNTIME_VAR_DATADOG_API_KEY }}\"\n    datadog_config:\n      tags:\n        - env:dev\n      logs_enabled: true\n      process_config:\n        enabled: \"true\""
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_002_datadog_agent/playbooks/roles/datadog-agent/ReadMe.md",
    "content": "## Role Usage Example\n\n- Check if playbook exists\n```bash\n$ cd ../../; ls playbook-install-datadog.yaml\nplaybook-install-datadog.yaml\n```\n\n- Run the playbook\n```bash\n$ ansible-playbook playbook-install-datadog.yaml -e \"RUNTIME_VAR_DATADOG_API_KEY=2dd894f5******0c73474d48f\" -e \"RUNTIME_VAR_HOSTS=localhost\"\n```"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_002_datadog_agent/playbooks/roles/datadog-agent/defaults/main.yml",
    "content": "---\nsystem_probe_config:\n  enabled: false\n\ndatadog_enabled: yes\n\n# default datadog.conf options\ndatadog_config: {}\n\n# default checks enabled\ndatadog_checks: {}\n\n# default user/group\ndatadog_user: dd-agent\ndatadog_group: dd-agent\n\n# agent integration variables\nintegration_command_user_linux: \"dd-agent\"\nintegration_command_user_windows: \"administrator\"\ndatadog_agent_binary_path_linux: /opt/datadog-agent/bin/agent/agent\ndatadog_agent_binary_path_windows: \"C:\\\\Program Files\\\\Datadog\\\\Datadog Agent\\\\bin\\\\agent.exe\"\n\n# list of additional groups for datadog_user\ndatadog_additional_groups: {}\n\n# Major version of the Agent that will be installed.\n# Possible values: 5, 6, 7\n# By default, version 7 will be installed.\n# If datadog_agent_version is defined, the major version will be deduced from it.\ndatadog_agent_major_version: \"\"\n\n# Pin agent to a version. Highly recommended.\n# Defaults to the latest version of the major version chosen in datadog_agent_major_version\n# If both datadog_agent_major_version and datadog_agent_version are set, they must be\n# compatible (ie. the major version in datadog_agent_version must be datadog_agent_major_version)\ndatadog_agent_version: \"\"\n\n# Default apt repo and keyserver\n\n# By default, the roll uses the official apt Datadog repository for the chosen major version\n# Use the datadog_apt_repo variable to override the repository used.\ndatadog_apt_repo: \"\"\n\n\ndatadog_apt_cache_valid_time: 3600\ndatadog_apt_key_retries: 5\nuse_apt_backup_keyserver: false\ndatadog_apt_keyserver: hkp://keyserver.ubuntu.com:80\ndatadog_apt_backup_keyserver: hkp://pool.sks-keyservers.net:80\n\n# Default yum repo and keys\n\n# By default, the roll uses the official yum Datadog repository for the chosen major version\n# Use the datadog_yum_repo variable to override the repository used.\ndatadog_yum_repo: \"\"\n\ndatadog_yum_gpgkey: \"https://yum.datadoghq.com/DATADOG_RPM_KEY.public\"\ndatadog_yum_gpgkey_e09422b3: \"https://yum.datadoghq.com/DATADOG_RPM_KEY_E09422B3.public\"\ndatadog_yum_gpgkey_e09422b3_sha256sum: \"694a2ffecff85326cc08e5f1a619937999a5913171e42f166e13ec802c812085\"\n\n# Default zypper repo and keys\n\n# By default, the roll uses the official zypper Datadog repository for the chosen major version\n# Use the datadog_zypper_repo variable to override the repository used.\ndatadog_zypper_repo: \"\"\n\ndatadog_zypper_gpgkey: \"https://yum.datadoghq.com/DATADOG_RPM_KEY.public\"\ndatadog_zypper_gpgkey_sha256sum: \"00d6505c33fd95b56e54e7d91ad9bfb22d2af17e5480db25cba8fee500c80c46\"\ndatadog_zypper_gpgkey_e09422b3: \"https://yum.datadoghq.com/DATADOG_RPM_KEY_E09422B3.public\"\ndatadog_zypper_gpgkey_e09422b3_sha256sum: \"694a2ffecff85326cc08e5f1a619937999a5913171e42f166e13ec802c812085\"\n\n# Avoid checking if the agent is running or not. This can be useful if you're\n# using sysvinit and providing your own init script.\ndatadog_skip_running_check: false\n\n# Set this to `yes` to allow agent downgrades on apt-based platforms.\n# Internally, this uses `apt-get`'s `--force-yes` option. Use with caution.\n# On centos this will only work with ansible 2.4 and up\ndatadog_agent_allow_downgrade: no\n\n# Default windows latest msi package URL\n\n# By default, will use the official latest msi package for the chosen major version.\n# Use the datadog_windows_download_url option to override the msi package used.\ndatadog_windows_download_url: \"\"\n\n# The default msi package for each major Agent version is specified in the following variables.\n# These variables are for internal use only, do not modify them.\ndatadog_windows_agent6_latest_url: \"https://s3.amazonaws.com/ddagent-windows-stable/datadog-agent-6-latest.amd64.msi\"\ndatadog_windows_agent7_latest_url: \"https://s3.amazonaws.com/ddagent-windows-stable/datadog-agent-7-latest.amd64.msi\"\n\n# If datadog_agent_version is set, the role will use the following url prefix instead, and append the version number to it\n# in order to get the full url to the msi package.\ndatadog_windows_versioned_url: \"https://s3.amazonaws.com/ddagent-windows-stable/ddagent-cli\"\n\n# url of the 6.14 fix script. See http://dtdg.co/win-614-fix for more details.\ndatadog_windows_614_fix_script_url: \"https://s3.amazonaws.com/ddagent-windows-stable/scripts/fix_6_14.ps1\"\n\n# Override to change the name of the windows user to create\ndatadog_windows_ddagentuser_name: \"\"\n# Override to change the password of the created windows user.\ndatadog_windows_ddagentuser_password: \"\"\n\n# do not modify.  Default empty value for constructing the list of optional\n# arguments to supply to the windows installer.\nwin_install_args: \" \"\n\n\n#\n# Internal variables\n# The following variables are for internal use only, do not modify them.\n#\n\n# The default apt repository for each major Agent version is specified in the following variables.\ndatadog_agent5_apt_repo: \"deb https://apt.datadoghq.com/ stable main\"\ndatadog_agent6_apt_repo: \"deb https://apt.datadoghq.com/ stable 6\"\ndatadog_agent7_apt_repo: \"deb https://apt.datadoghq.com/ stable 7\"\n\n# The default yum repository for each major Agent version is specified in the following variables.\ndatadog_agent5_yum_repo: \"https://yum.datadoghq.com/rpm/{{ ansible_userspace_architecture }}\"\ndatadog_agent6_yum_repo: \"https://yum.datadoghq.com/stable/6/{{ ansible_userspace_architecture }}\"\ndatadog_agent7_yum_repo: \"https://yum.datadoghq.com/stable/7/{{ ansible_userspace_architecture }}\"\n\n# The default zypper repository for each major Agent version is specified in the following variables.\ndatadog_agent5_zypper_repo: \"https://yum.datadoghq.com/suse/rpm/{{ ansible_userspace_architecture }}\"\ndatadog_agent6_zypper_repo: \"https://yum.datadoghq.com/suse/stable/6/{{ ansible_userspace_architecture }}\"\ndatadog_agent7_zypper_repo: \"https://yum.datadoghq.com/suse/stable/7/{{ ansible_userspace_architecture }}\"\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_002_datadog_agent/playbooks/roles/datadog-agent/handlers/main.yml",
    "content": "---\n\n- name: restart datadog-agent\n  service:\n    name: datadog-agent\n    state: restarted\n  when: datadog_enabled and not ansible_check_mode and not ansible_os_family == \"Windows\"\n\n- name: restart datadog-agent-win\n  win_service:\n    name: datadogagent\n    state: restarted\n    force_dependent_services: true\n  when: datadog_enabled and not ansible_check_mode and ansible_os_family == \"Windows\"\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_002_datadog_agent/playbooks/roles/datadog-agent/tasks/agent-linux.yml",
    "content": "---\n- name: populate service facts\n  service_facts:\n\n- name: add \"{{ datadog_user }}\" user to additional groups\n  user: name=\"{{ datadog_user }}\" groups=\"{{ datadog_additional_groups }}\" append=yes\n  when: datadog_additional_groups is defined and (datadog_additional_groups | length != 0)\n  notify: restart datadog-agent\n\n- name: Create Datadog agent config directory\n  file:\n    dest: /etc/datadog-agent\n    state: directory\n\n- name: Create main Datadog agent configuration file\n  template:\n    src: datadog.yaml.j2\n    dest: /etc/datadog-agent/datadog.yaml\n    owner: \"{{ datadog_user }}\"\n    group: \"{{ datadog_group }}\"\n  notify: restart datadog-agent\n\n- name: Ensure configuration directories are present for each Datadog check\n  file:\n    dest: \"/etc/datadog-agent/conf.d/{{ item }}.d\"\n    state: directory\n    owner: \"{{ datadog_user }}\"\n    group: \"{{ datadog_group }}\"\n  with_items: '{{ datadog_checks|list }}'\n\n- name: Create a configuration file for each Datadog check\n  template:\n    src: checks.yaml.j2\n    dest: \"/etc/datadog-agent/conf.d/{{ item }}.d/conf.yaml\"\n    owner: \"{{ datadog_user }}\"\n    group: \"{{ datadog_group }}\"\n  with_items: \"{{ datadog_checks|list }}\"\n  notify: restart datadog-agent\n\n- name: Remove old configuration file for each Datadog check\n  file:\n    dest: \"/etc/datadog-agent/conf.d/{{ item }}.yaml\"\n    state: absent\n  with_items: \"{{ datadog_checks|list }}\"\n  notify: restart datadog-agent\n\n- name: Create system-probe configuration file\n  template:\n    src: system-probe.yaml.j2\n    dest: /etc/datadog-agent/system-probe.yaml\n    mode: 0640\n    owner: \"root\"\n    group: \"{{ datadog_group }}\"\n\n- name: Ensure datadog-agent is running\n  service:\n    name: datadog-agent\n    state: started\n    enabled: yes\n  when: not datadog_skip_running_check and datadog_enabled and not ansible_check_mode\n\n- name: set system probe installed\n  set_fact:\n    datadog_sysprobe_installed: \"{{ ansible_facts.services['datadog-agent-sysprobe'] is defined\n      or ansible_facts.services['datadog-agent-sysprobe.service'] is defined }}\"\n  when: not datadog_skip_running_check\n\n- name: set system probe enabled\n  set_fact:\n    datadog_sysprobe_enabled: \"{{ system_probe_config is defined\n      and system_probe_config['enabled']\n      and datadog_sysprobe_installed }}\"\n  when: not datadog_skip_running_check\n\n- name: Ensure datadog-agent-sysprobe is running if enabled and installed\n  service:\n    name: datadog-agent-sysprobe\n    state: started\n    enabled: yes\n  when: not datadog_skip_running_check and datadog_enabled and not ansible_check_mode and datadog_sysprobe_enabled\n\n- name: Ensure datadog-agent-sysprobe is stopped if disabled or not installed\n  service:\n    name: datadog-agent-sysprobe\n    state: stopped\n    enabled: no\n  when: not datadog_skip_running_check and (not datadog_enabled or not datadog_sysprobe_enabled) and datadog_sysprobe_installed\n\n- name: Ensure datadog-agent, datadog-agent-process and datadog-agent-trace are not running\n  service:\n    name: \"{{ item }}\"\n    state: stopped\n    enabled: no\n  when: not datadog_skip_running_check and not datadog_enabled\n  with_list:\n    - datadog-agent\n    - datadog-agent-process\n    - datadog-agent-trace\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_002_datadog_agent/playbooks/roles/datadog-agent/tasks/agent-win.yml",
    "content": "---\n- name: Create main Datadog agent configuration file\n  win_template:\n    src: datadog.yaml.j2\n    dest: \"{{ ansible_facts.env['ProgramData'] }}\\\\Datadog\\\\datadog.yaml\"\n  notify: restart datadog-agent-win\n\n- name: Ensure configuration directories are present for each Datadog check\n  win_file:\n    path: \"{{ ansible_facts.env['ProgramData'] }}\\\\Datadog\\\\conf.d\\\\{{ item }}.d\"\n    state: directory\n  with_items: '{{ datadog_checks|list }}'\n\n- name: Create a configuration file for each Datadog check\n  win_template:\n    src: checks.yaml.j2\n    dest: \"{{ ansible_facts.env['ProgramData'] }}\\\\Datadog\\\\conf.d\\\\{{ item }}.d\\\\conf.yaml\"\n  with_items: \"{{ datadog_checks|list }}\"\n  notify: restart datadog-agent-win\n\n- name: Remove old configuration file for each Datadog check\n  win_file:\n    path: \"{{ ansible_facts.env['ProgramData'] }}\\\\Datadog\\\\conf.d\\\\{{ item }}.yaml\"\n    state: absent\n  with_items: \"{{ datadog_checks|list }}\"\n  notify: restart datadog-agent-win\n\n- name: Ensure datadog-agent is running\n  win_service:\n    name: datadogagent\n    state: started\n    start_mode: auto\n    enabled: yes\n  when: not datadog_skip_running_check and datadog_enabled and not ansible_check_mode\n\n- name: Ensure datadog-agent is not running\n  win_service:\n    name: \"{{ item }}\"\n    state: stopped\n    enabled: no\n  when: not datadog_skip_running_check and not datadog_enabled\n  with_list:\n    - datadogagent\n    - datadog-agent-process\n    - datadog-agent-trace\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_002_datadog_agent/playbooks/roles/datadog-agent/tasks/agent5-linux.yml",
    "content": "---\n- name: (agent5) Create Datadog agent config directory\n  file:\n    dest: /etc/dd-agent\n    state: directory\n\n- name: (agent5) Create main Datadog agent configuration file\n  template:\n    src: datadog.conf.j2\n    dest: /etc/dd-agent/datadog.conf\n    owner: \"{{ datadog_user }}\"\n    group: \"{{ datadog_group }}\"\n  notify: restart datadog-agent\n\n- name: (agent5) Ensure datadog-agent is running\n  service:\n    name: datadog-agent\n    state: started\n    enabled: yes\n  when: not datadog_skip_running_check and datadog_enabled and not ansible_check_mode\n\n- name: (agent5) Ensure datadog-agent is not running\n  service:\n    name: datadog-agent\n    state: stopped\n    enabled: no\n  when: not datadog_skip_running_check and not datadog_enabled\n\n- name: (agent5) Create a configuration file for each Datadog check\n  template:\n    src: checks.yaml.j2\n    dest: \"/etc/dd-agent/conf.d/{{ item }}.yaml\"\n    owner: \"{{ datadog_user }}\"\n    group: \"{{ datadog_group }}\"\n  with_items: \"{{ datadog_checks|list }}\"\n  notify: restart datadog-agent\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_002_datadog_agent/playbooks/roles/datadog-agent/tasks/integration.yml",
    "content": "---\n- name: set agent binary path (windows)\n  set_fact:\n    datadog_agent_binary_path: \"{{ datadog_agent_binary_path_windows }}\"\n  when: ansible_os_family == \"Windows\"\n\n- name: set agent binary path (unix)\n  set_fact:\n    datadog_agent_binary_path: \"{{ datadog_agent_binary_path_linux }}\"\n  when: ansible_os_family != \"Windows\"\n\n- name: set agent user for integration commmand (windows)\n  set_fact:\n    integration_command_user: \"{{ integration_command_user_windows }}\"\n  when: ansible_os_family == \"Windows\"\n\n- name: set agent agent binary path (unix)\n  set_fact:\n    integration_command_user: \"{{ integration_command_user_linux }}\"\n  when: ansible_os_family != \"Windows\"\n\n- name: Validate integrations actions\n  fail:\n    msg: \"Unkown action '{{ item.value.action }}' for integration command ({{ item.key }}). Valid actions are 'install' and 'remove'\"\n  when: item.value.action != \"install\" and item.value.action != \"remove\"\n  loop: \"{{ datadog_integration|dict2items }}\"\n\n# Remove Integrations\n\n- name: Removing integrations (Unix)\n  command:\n    argv:\n      - \"{{ datadog_agent_binary_path }}\"\n      - integration\n      - remove\n      - \"{{ item.key }}\"\n  become: yes\n  become_user: \"{{ integration_command_user }}\"\n  loop: \"{{ datadog_integration|dict2items }}\"\n  when: item.value.action == \"remove\" and ansible_os_family != \"Windows\"\n\n- name: Removing integrations (Windows)\n  win_command: \"\\\"{{ datadog_agent_binary_path }}\\\" integration remove {{ item.key }}\"\n  become: yes\n  become_user: \"{{ integration_command_user }}\"\n  loop: \"{{ datadog_integration|dict2items }}\"\n  when: item.value.action == \"remove\" and ansible_os_family == \"Windows\"\n\n# Install integrations\n\n- name: Install pinned version of integrations (Unix)\n  command:\n    argv:\n      - \"{{ datadog_agent_binary_path }}\"\n      - integration\n      - install\n      - \"{{ item.key }}=={{ item.value.version }}\"\n  become: yes\n  become_user: \"{{ integration_command_user }}\"\n  loop: \"{{ datadog_integration|dict2items }}\"\n  when: item.value.action == \"install\" and ansible_os_family != \"Windows\"\n\n- name: Install pinned version of integrations (Windows)\n  win_command: \"\\\"{{ datadog_agent_binary_path }}\\\" integration install {{ item.key }}=={{ item.value.version }}\"\n  become: yes\n  become_user: \"{{ integration_command_user }}\"\n  loop: \"{{ datadog_integration|dict2items }}\"\n  when: item.value.action == \"install\" and ansible_os_family == \"Windows\"\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_002_datadog_agent/playbooks/roles/datadog-agent/tasks/main.yml",
    "content": "---\n\n- name: Check if OS is supported\n  include_tasks: os-check.yml\n\n- name: Set Facts for Datadog Agent Major Version\n  include_tasks: set-parse-version.yml\n\n- name: Debian Install Tasks\n  include_tasks: pkg-debian.yml\n  when: ansible_os_family == \"Debian\"\n\n- name: RedHat Install Tasks\n  include_tasks: pkg-redhat.yml\n  when: ansible_os_family == \"RedHat\"\n\n- name: Suse Install Tasks\n  include_tasks: pkg-suse.yml\n  when: ansible_os_family == \"Suse\"\n\n- name: Windows Install Tasks\n  include_tasks: pkg-windows.yml\n  when: ansible_os_family == \"Windows\"\n\n- name: Linux Install Tasks (Agent 5)\n  include_tasks: agent5-linux.yml\n  when: datadog_agent_major_version|int == 5 and ansible_os_family != \"Windows\"\n\n- name: Linux Install Tasks\n  include_tasks: agent-linux.yml\n  when: datadog_agent_major_version|int > 5 and ansible_os_family != \"Windows\"\n\n- name: Agent6 Install Tasks (Windows)\n  include_tasks: agent-win.yml\n  when: datadog_agent_major_version|int > 5 and ansible_os_family == \"Windows\"\n\n- name: Integrations Tasks\n  include_tasks: integration.yml\n  when: datadog_integration is defined\n\n- name: Post Tasks\n  include_tasks: post_tasks/*.yml\n  when: post_tasks is defined\n\n- name: Pre Tasks\n  include_tasks: pre_tasks/*.yml\n  when: pre_tasks is defined\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_002_datadog_agent/playbooks/roles/datadog-agent/tasks/os-check.yml",
    "content": "---\n- name: Fail if OS is not supported\n  fail:\n    msg: \"The Datadog Ansible role does not support your OS yet. Please email support@datadoghq.com to open a feature request.\"\n  when: ansible_os_family not in [\"RedHat\", \"Debian\", \"Suse\", \"Windows\"]\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_002_datadog_agent/playbooks/roles/datadog-agent/tasks/parse-version.yml",
    "content": "---\n- name: Parse Agent version\n  set_fact:\n    agent_version: \"{{ datadog_agent_version | regex_search(regexp, '\\\\g<epoch>', '\\\\g<major>', '\\\\g<minor>', '\\\\g<bugfix>', '\\\\g<suffix>', '\\\\g<release>') }}\"\n  vars:\n    regexp: '(?:(?P<epoch>[0-9]+):)?(?P<major>[0-9]+)\\.(?P<minor>[0-9]+)\\.(?P<bugfix>[0-9]+)(?P<suffix>(?:~|-)[^0-9\\s-]+[^-\\s]*)?(?:-(?P<release>[0-9]+))?'\n\n- name: Set version vars\n  set_fact:\n    datadog_epoch: \"{{ agent_version.0 }}\"\n    datadog_major: \"{{ agent_version.1 }}\"\n    datadog_minor: \"{{ agent_version.2 }}\"\n    datadog_bugfix: \"{{ agent_version.3 }}\"\n    datadog_suffix: \"{{ agent_version.4 }}\"\n    datadog_release: \"{{ agent_version.5 }}\"\n\n- name: Fill empty version epoch with default\n  set_fact:\n    datadog_epoch: \"1\"\n  when: datadog_epoch | length == 0\n\n- name: Fill empty version release with default\n  set_fact:\n    datadog_release: \"1\"\n  when: datadog_release | length == 0\n\n- name: Stop play if datadog_agent_version and datadog_agent_major_version are not compatible\n  fail:\n    msg: \"The provided major version {{ datadog_agent_major_version }} is not compatible with the\n      version {{ datadog_major }} deduced from datadog_agent_version ({{ datadog_agent_version }}).\n      Aborting play.\"\n  when: datadog_agent_major_version | length > 0 and datadog_major != datadog_agent_major_version\n\n- name: Set datadog_agent_major_version to deduced value from datadog_agent_version\n  set_fact:\n    datadog_agent_major_version: \"{{ datadog_major }}\"\n\n- name: Set OS-specific versions\n  set_fact:\n    datadog_agent_debian_version: \"{{ datadog_epoch }}:{{ datadog_major }}.{{ datadog_minor }}.{{ datadog_bugfix }}{{ datadog_suffix }}-{{ datadog_release }}\"\n    datadog_agent_redhat_version: \"{{ datadog_major }}.{{ datadog_minor }}.{{ datadog_bugfix }}{{ datadog_suffix }}-{{ datadog_release }}\"\n    datadog_agent_suse_version: \"{{ datadog_epoch }}:{{ datadog_major }}.{{ datadog_minor }}.{{ datadog_bugfix }}{{ datadog_suffix }}-{{ datadog_release }}\"\n    datadog_agent_windows_version: \"{{ datadog_major }}.{{ datadog_minor }}.{{ datadog_bugfix }}{{ datadog_suffix }}\"\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_002_datadog_agent/playbooks/roles/datadog-agent/tasks/pkg-debian/install-latest.yml",
    "content": "---\n- name: Install latest datadog-agent package\n  apt:\n    name: datadog-agent\n    state: latest  # noqa 403\n    update_cache: yes\n    cache_valid_time: \"{{ datadog_apt_cache_valid_time }}\"\n  register: datadog_agent_install\n  when: not ansible_check_mode\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_002_datadog_agent/playbooks/roles/datadog-agent/tasks/pkg-debian/install-pinned.yml",
    "content": "---\n- name: Install pinned datadog-agent package\n  apt:\n    name: \"datadog-agent={{ datadog_agent_debian_version }}\"\n    state: present\n    force: \"{{ datadog_agent_allow_downgrade }}\"\n    update_cache: yes\n    cache_valid_time: \"{{ datadog_apt_cache_valid_time }}\"\n  register: datadog_agent_install\n  when: not ansible_check_mode\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_002_datadog_agent/playbooks/roles/datadog-agent/tasks/pkg-debian.yml",
    "content": "---\n- name: Install apt-transport-https\n  apt:\n    name: apt-transport-https\n    state: present\n  when: not ansible_check_mode\n\n- name: Install ubuntu apt-key server\n  apt_key:\n    id: A2923DFF56EDA6E76E55E492D3A80E30382E94DE\n    keyserver: \"{{ datadog_apt_backup_keyserver if use_apt_backup_keyserver else datadog_apt_keyserver }}\"\n    state: present\n    # keyserver.ubuntu.com is a pool of server, we should retry if one of them is down\n  register: result\n  until: not result.failed is defined or not result.failed\n  retries: \"{{ datadog_apt_key_retries }}\"\n  when: datadog_apt_key_url_new is not defined\n\n- name: Install Datadog apt-key\n  apt_key:\n    id: A2923DFF56EDA6E76E55E492D3A80E30382E94DE\n    url: \"{{ datadog_apt_key_url_new }}\"\n    state: present\n  when: datadog_apt_key_url_new is defined\n\n- name: Ensure Datadog non-https repositories are deprecated\n  apt_repository:\n    repo: \"{{ item }}\"\n    state: \"absent\"\n    update_cache: yes\n  with_items:\n    - \"deb http://apt.datadoghq.com/ stable main\"\n    - \"deb http://apt.datadoghq.com/ stable 6\"\n    - \"deb http://apt.datadoghq.com/ stable 7\"\n  when: not ansible_check_mode\n\n- name: Ensure Datadog repository is up-to-date\n  apt_repository:\n    filename: \"ansible_datadog_{{ item.key }}\"\n    repo: \"{{ item.value }}\"\n    state: \"{% if item.key == datadog_agent_major_version|int and datadog_apt_repo | length == 0 %}present{% else %}absent{% endif %}\"\n    update_cache: yes\n  when: (not ansible_check_mode)\n  with_dict:\n    5: '{{ datadog_agent5_apt_repo }}'\n    6: '{{ datadog_agent6_apt_repo }}'\n    7: '{{ datadog_agent7_apt_repo }}'\n\n- name: Initialize custom repo file deletion flag to False\n  set_fact:\n    datadog_remove_custom_repo_file: \"False\"\n\n- name: Check if custom repository file exists\n  stat:\n    path: /etc/apt/sources.list.d/ansible_datadog_custom.list\n  register: datadog_custom_repo_file\n\n- name: Flag custom repository file for deletion if different from current repository config\n  set_fact:\n    datadog_remove_custom_repo_file: \"{{ datadog_repo_file_contents != datadog_apt_repo }}\"\n  vars:\n    datadog_repo_file_contents: \"{{ lookup('file', '/etc/apt/sources.list.d/ansible_datadog_custom.list') }}\"\n  when: datadog_custom_repo_file.stat.exists\n\n- name: (Custom) Remove Datadog custom repository file when not set or updated\n  file:\n    path: /etc/apt/sources.list.d/ansible_datadog_custom.list\n    state: absent\n  when: (datadog_apt_repo | length == 0) or datadog_remove_custom_repo_file and (not ansible_check_mode)\n\n- name: (Custom) Ensure Datadog repository is up-to-date\n  apt_repository:\n    filename: ansible_datadog_custom\n    repo: \"{{ datadog_apt_repo }}\"\n    state: present\n    update_cache: yes\n  when: (datadog_apt_repo | length > 0) and (not ansible_check_mode)\n\n- include_tasks: pkg-debian/install-pinned.yml\n  when: datadog_agent_debian_version is defined\n\n- include_tasks: pkg-debian/install-latest.yml\n  when: datadog_agent_debian_version is not defined\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_002_datadog_agent/playbooks/roles/datadog-agent/tasks/pkg-redhat/install-latest.yml",
    "content": "---\n- name: Install latest datadog-agent package\n  yum:\n    name: datadog-agent\n    update_cache: yes\n    state: latest  # noqa 403\n  register: datadog_agent_install\n  when: not ansible_check_mode\n  notify: restart datadog-agent\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_002_datadog_agent/playbooks/roles/datadog-agent/tasks/pkg-redhat/install-pinned.yml",
    "content": "---\n- name: Install pinned datadog-agent package\n  yum:\n    name: \"datadog-agent-{{ datadog_agent_redhat_version }}\"\n    state: present\n    allow_downgrade: \"{{ datadog_agent_allow_downgrade }}\"\n  register: datadog_agent_install\n  when: not ansible_check_mode\n  notify: restart datadog-agent\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_002_datadog_agent/playbooks/roles/datadog-agent/tasks/pkg-redhat.yml",
    "content": "---\n- name: Download new RPM key\n  get_url:\n    url: \"{{ datadog_yum_gpgkey_e09422b3 }}\"\n    dest: /tmp/DATADOG_RPM_KEY_E09422B3.public\n    checksum: \"sha256:{{ datadog_yum_gpgkey_e09422b3_sha256sum }}\"\n\n- name: Import new RPM key\n  rpm_key:\n    key: /tmp/DATADOG_RPM_KEY_E09422B3.public\n    state: present\n  when: not ansible_check_mode\n\n- name: Install Datadog yum repo\n  yum_repository:\n    name: \"ansible_datadog_{{ item.key }}\"\n    description: Datadog, Inc.\n    baseurl: \"{{ item.value }}\"\n    enabled: yes\n    gpgcheck: yes\n    gpgkey: \"{% if datadog_agent_major_version|int == 7 %}{{ datadog_yum_gpgkey_e09422b3 }}{% else %}{{ datadog_yum_gpgkey }}{% endif %}\"\n    state: \"{% if item.key == datadog_agent_major_version|int and datadog_yum_repo | length == 0 %}present{% else %}absent{% endif %}\"\n  when: (not ansible_check_mode)\n  with_dict:\n    5: '{{ datadog_agent5_yum_repo }}'\n    6: '{{ datadog_agent6_yum_repo }}'\n    7: '{{ datadog_agent7_yum_repo }}'\n\n- name: (Custom) Install Datadog yum repo\n  yum_repository:\n    name: ansible_datadog_custom\n    description: Datadog, Inc.\n    baseurl: \"{{ datadog_yum_repo }}\"\n    enabled: yes\n    gpgcheck: yes\n    gpgkey: \"{{ datadog_yum_gpgkey }}\"\n    state: present\n  when: (datadog_yum_repo | length > 0) and (not ansible_check_mode)\n\n- include_tasks: pkg-redhat/install-pinned.yml\n  when: datadog_agent_redhat_version is defined\n\n- include_tasks: pkg-redhat/install-latest.yml\n  when: datadog_agent_redhat_version is not defined\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_002_datadog_agent/playbooks/roles/datadog-agent/tasks/pkg-suse/install-latest.yml",
    "content": "---\n- name: Ensure Datadog agent is installed\n  zypper:\n    name: datadog-agent\n    state: latest  # noqa 403\n  register: datadog_agent_install\n  when: not ansible_check_mode\n  notify: restart datadog-agent\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_002_datadog_agent/playbooks/roles/datadog-agent/tasks/pkg-suse/install-pinned.yml",
    "content": "---\n- name: Install pinned datadog-agent package\n  zypper:\n    name: \"datadog-agent={{ datadog_agent_suse_version }}\"\n    state: present\n    oldpackage: \"{{ datadog_agent_allow_downgrade }}\"\n  register: datadog_agent_install\n  when: not ansible_check_mode\n  notify: restart datadog-agent\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_002_datadog_agent/playbooks/roles/datadog-agent/tasks/pkg-suse.yml",
    "content": "---\n# Do not import old key if installing Agent 7, as all Agent 7 packages are signed with the new key\n- block:  # Work around due to SNI check for SLES11\n  - name: Stat if RPM key already exists\n    stat:\n      path: /tmp/DATADOG_RPM_KEY.public\n    register: ddkey\n  - name: Download RPM key (SLES11)\n    get_url:\n      url: \"{{ datadog_zypper_gpgkey }}\"\n      dest: /tmp/DATADOG_RPM_KEY.public\n    when: not ddkey.stat.exists\n  when: datadog_agent_major_version|int < 7 and ansible_distribution_version|int == 11\n\n# Do not import old key if installing Agent 7, as all Agent 7 packages are signed with the new key\n- name: Download RPM key\n  get_url:\n    url: \"{{ datadog_zypper_gpgkey }}\"\n    dest: /tmp/DATADOG_RPM_KEY.public\n    checksum: \"sha256:{{ datadog_zypper_gpgkey_sha256sum }}\"\n  when: datadog_agent_major_version|int < 7 and ansible_distribution_version|int >= 12\n\n- name: Import RPM key\n  rpm_key:\n    key: /tmp/DATADOG_RPM_KEY.public\n    state: present\n  when: datadog_agent_major_version|int < 7 and not ansible_check_mode\n\n- block:  # Work around due to SNI check for SLES11\n  - name: Stat if new RPM key already exists\n    stat:\n      path: /tmp/DATADOG_RPM_KEY_E09422B3.public\n    register: ddnewkey\n  - name: Download new RPM key (SLES11)\n    get_url:\n      url: \"{{ datadog_zypper_gpgkey_e09422b3 }}\"\n      dest: /tmp/DATADOG_RPM_KEY_E09422B3.public\n    when: not ddnewkey.stat.exists\n  when: ansible_distribution_version|int == 11\n\n- name: Download new RPM key\n  get_url:\n    url: \"{{ datadog_zypper_gpgkey_e09422b3 }}\"\n    dest: /tmp/DATADOG_RPM_KEY_E09422B3.public\n    checksum: \"sha256:{{ datadog_zypper_gpgkey_e09422b3_sha256sum }}\"\n  when: ansible_distribution_version|int >= 12\n\n- name: Import new RPM key\n  rpm_key:\n    key: /tmp/DATADOG_RPM_KEY_E09422B3.public\n    state: present\n  when: not ansible_check_mode\n\n# ansible don't allow repo_gpgcheck to be set, we have to create the repo file manually\n- name: Install DataDog zypper repo\n  template:\n    src: zypper.repo.j2\n    dest: /etc/zypp/repos.d/datadog.repo\n    owner: \"root\"\n    group: \"root\"\n  register: datadog_zypper_repo\n\n# refresh zypper repos only if the template changed\n- name: refresh Datadog zypper_repos  # noqa 503\n  command: zypper refresh datadog\n  when: datadog_zypper_repo.changed and not ansible_check_mode\n  args:\n    warn: false  # silence warning about using zypper directly\n\n- include_tasks: pkg-suse/install-pinned.yml\n  when: datadog_agent_suse_version is defined\n\n- include_tasks: pkg-suse/install-latest.yml\n  when: datadog_agent_suse_version is not defined\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_002_datadog_agent/playbooks/roles/datadog-agent/tasks/pkg-windows-opts.yml",
    "content": "- name: Set DD Username Arg\n  set_fact:\n    win_install_args: \"{{ win_install_args }} DDAGENTUSER_NAME={{ datadog_windows_ddagentuser_name }}\"\n  when: datadog_windows_ddagentuser_name | length > 0\n\n- name: Set DD Password Arg\n  set_fact:\n    win_install_args: \"{{ win_install_args }} DDAGENTUSER_PASSWORD={{ datadog_windows_ddagentuser_password }}\"\n  when: datadog_windows_ddagentuser_password | length > 0\n\n- name: Set Test\n  set_fact:\n    win_install_args: \"{{ win_install_args }}\""
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_002_datadog_agent/playbooks/roles/datadog-agent/tasks/pkg-windows.yml",
    "content": "---\n- name: Fail if Agent 5\n  fail:\n    msg: \"The Datadog ansible role does not currently support Agent 5\"\n  when: datadog_agent_major_version|int == 5\n\n- name: Download windows datadog agent 614 fix script\n  win_get_url:\n    url: \"{{ datadog_windows_614_fix_script_url }}\"\n    dest: '%TEMP%\\fix_6_14.ps1'\n\n- name: Run 6.14.0/1 PowerShell fix\n  win_shell: |\n    Set-ExecutionPolicy Bypass -Scope Process -Force\n    &$env:temp\\fix_6_14.ps1\n\n- include_tasks: win_agent_latest.yml\n  when: datadog_agent_windows_version is not defined\n\n- include_tasks: win_agent_version.yml\n  when: datadog_agent_windows_version is defined\n\n- name: show URL var\n  debug:\n    var: dd_download_url\n\n- include_tasks: pkg-windows-opts.yml\n\n- name: pre-Delete temporary msi\n  win_file:\n    path: '%TEMP%\\ddagent.msi'\n    state: absent\n\n- name: Download windows datadog agent\n  win_get_url:\n    url: \"{{ dd_download_url }}\"\n    dest: '%TEMP%\\ddagent.msi'\n  register: download_msi_result\n\n- name: Install downloaded agent\n  win_package:\n    path: \"{{ download_msi_result.dest }}\"\n    arguments: \"{{ win_install_args }}\"\n  register: datadog_agent_install\n  when: not ansible_check_mode\n\n- name: Delete temporary msi\n  win_file:\n    path: \"{{ download_msi_result.dest }}\"\n    state: absent\n  when: download_msi_result.status_code == 200\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_002_datadog_agent/playbooks/roles/datadog-agent/tasks/set-parse-version.yml",
    "content": "---\n- name: Convert datadog_agent_major_version to string\n  set_fact:\n    datadog_agent_major_version: \"{{ datadog_agent_major_version | string }}\"\n\n- include_tasks: parse-version.yml\n  when: datadog_agent_version | length > 0\n\n- name: Set Agent default major version\n  set_fact:\n    datadog_agent_major_version: \"7\"\n  when: datadog_agent_major_version | length == 0\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_002_datadog_agent/playbooks/roles/datadog-agent/tasks/win_agent_latest.yml",
    "content": "---\n\n- name: (Custom) Set agent download filename to latest\n  set_fact:\n    dd_download_url: \"{{ datadog_windows_download_url }}\"\n  when: datadog_windows_download_url | length > 0\n\n- name: Set agent download filename to latest\n  set_fact:\n    dd_download_url: \"{% if datadog_agent_major_version|int == 7 %}{{ datadog_windows_agent7_latest_url }}\n      {% else %}{{ datadog_windows_agent6_latest_url }}{% endif %}\"\n  when: datadog_windows_download_url | length == 0\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_002_datadog_agent/playbooks/roles/datadog-agent/tasks/win_agent_version.yml",
    "content": "---\n\n- name: Check agent pinned version on Windows\n  fail:\n    msg: \"The Agent versions you pinned (6.14.0 or 6.14.1) have been blacklisted, please use 6.14.2 instead. See http://dtdg.co/win-614-fix.\"\n  when: datadog_agent_version == \"6.14.0\" or datadog_agent_version == \"6.14.1\"\n\n- name: set agent download filename to a specific version\n  set_fact:\n    dd_download_url: \"{{ datadog_windows_versioned_url }}-{{ datadog_agent_windows_version }}.msi\"\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_002_datadog_agent/playbooks/roles/datadog-agent/templates/checks.yaml.j2",
    "content": "{{ datadog_checks[item] | to_nice_yaml }}\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_002_datadog_agent/playbooks/roles/datadog-agent/templates/datadog.conf.j2",
    "content": "# Managed by Ansible\n\n[Main]\n\n{% if datadog_config[\"dd_url\"] is not defined -%}\n  dd_url: {{ datadog_url | default('https://app.datadoghq.com') }}\n{% endif %}\n\n{% if datadog_config[\"api_key\"] is not defined -%}\n  api_key: {{ datadog_api_key | default('youshouldsetthis') }}\n{% endif %}\n\n{% if datadog_config[\"use_mount\"] is not defined -%}\n  use_mount: {{ datadog_use_mount | default('no') }}\n{% endif %}\n\n{# These variables are free-style, passed through a hash -#}\n{% if datadog_config -%}\n{% for key, value in datadog_config | dictsort -%}\n{{ key }}: {{ value }}\n{% endfor -%}\n{% endif %}\n\n{% if datadog_config_ex is defined -%}\n{% for section, keyvals in datadog_config_ex | dictsort %}\n[{{ section }}]\n{% for key, value in keyvals | dictsort -%}\n{{ key }}: {{ value }}\n{% endfor -%}\n{% endfor %}\n{% endif %}\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_002_datadog_agent/playbooks/roles/datadog-agent/templates/datadog.yaml.j2",
    "content": "# Managed by Ansible\n\n{% if datadog_site is defined\n   and datadog_config[\"site\"] is not defined -%}\nsite: {{ datadog_site }}\n{% endif %}\n\n{% if datadog_config[\"dd_url\"] is not defined\n   and datadog_url is defined -%}\ndd_url: {{ datadog_url }}\n{% endif %}\n\n{% if datadog_config[\"api_key\"] is not defined -%}\napi_key: {{ datadog_api_key | default('youshouldsetthis') }}\n{% endif %}\n\n{% if datadog_config is defined and datadog_config|length > 0 -%}\n{{ datadog_config | to_nice_yaml }}\n{% endif %}\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_002_datadog_agent/playbooks/roles/datadog-agent/templates/system-probe.yaml.j2",
    "content": "# Managed by Ansible\n\n{% if system_probe_config is defined and system_probe_config|length > 0 -%}\nsystem_probe_config:\n{# The \"first\" option is only supported by jinja 2.10+\n  which is not present on older systems (CentOS 7, Debian 8, etc.)\n  Using the equivalent option \"indentfirst\" will work with\n  all currently existing jinja 2 versions (as of this comment, up to 2.10).\n  TODO: when future versions of Jinja are released, check that\n  indentfirst is still supported.\n #}\n{% filter indent(width=2, indentfirst=True) %}\n{{ system_probe_config | to_nice_yaml }}\n{% endfilter %}\n{% endif %}\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_002_datadog_agent/playbooks/roles/datadog-agent/templates/zypper.repo.j2",
    "content": "{% if datadog_zypper_repo | length > 0 %}\n  {% set baseurl = datadog_zypper_repo %}\n{% elif datadog_agent_major_version|int == 5 %}\n  {% set baseurl = datadog_agent5_zypper_repo %}\n{% elif datadog_agent_major_version|int == 6 %}\n  {% set baseurl = datadog_agent6_zypper_repo %}\n{% elif datadog_agent_major_version|int == 7 %}\n  {% set baseurl = datadog_agent7_zypper_repo %}\n{% endif %}\n\n[datadog]\nname=Datadog, Inc.\nenabled=1\nautorefresh=1\nbaseurl={{ baseurl }}\n\ntype=rpm-md\ngpgcheck=1\nrepo_gpgcheck=0\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_003_user/playbooks/ansible.cfg",
    "content": "[defaults]\ninventory=inventory.yml\n\n\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_003_user/playbooks/inventory.ini",
    "content": "[local]\n127.0.0.1\n\n[local:vars]\nansible_connection=local\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_003_user/playbooks/inventory.yml",
    "content": "all:\n  hosts:\n    mail.example.com:\n  children:\n    local:\n      hosts:\n        127.0.0.1:\n          ansible_connection: local\n    gcp:\n      hosts:\n        35.226.68.74:\n    gcp2:\n      hosts:\n        35.238.67.36:\n    gcp1:\n      hosts:\n        droneio.gotdns.ch:\n    webservers:\n      hosts:\n        foo.example.com:\n        bar.example.com:\n    dbservers:\n      hosts:\n        one.example.com:\n        two.example.com:\n        three.example.com:\n    east:\n      hosts:\n        foo.example.com:\n        one.example.com:\n        two.example.com:\n    west:\n      hosts:\n        bar.example.com:\n        three.example.com:\n    prod:\n      hosts:\n        foo.example.com:\n        one.example.com:\n        two.example.com:\n    test:\n      hosts:\n        bar.example.com:\n        three.example.com:\n    jenkins:\n      hosts:\n        54.194.212.216"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_003_user/playbooks/playbook-create-user.yaml",
    "content": "- name: create user\n  hosts: local\n  become: true\n  vars:\n    user: \"test\"\n    group: \"test\"\n  roles:\n    - { role: user,                   tags: [ 'user'       ] }"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_003_user/playbooks/roles/user/ReadMe.md",
    "content": "## Role Usage Example\n\n- Check if playbook exists\n```bash\n$ cd ../../; ls playbook-create-user.yaml\nplaybook-create-user.yaml\n```\n\n- Run the playbook\n```bash\n$ ansible-playbook playbook-create-user.yaml\n```"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_003_user/playbooks/roles/user/defaults/main.yml",
    "content": "---\nuser: ubuntu\ngroup: ubuntu\n\n\n\n\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_003_user/playbooks/roles/user/tasks/main.yml",
    "content": "---\n- import_tasks: users.yml\n\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_003_user/playbooks/roles/user/tasks/users.yml",
    "content": "---\n- name: setup group\n  group:\n    name: \"{{ group }}\"\n    system: no\n  tags:\n    - set-group\n    - set-user\n\n- name: setup user\n  user:\n    name: \"{{ user }}\"\n    system: no\n    group: \"{{ group }}\"\n  tags:\n    - set-user\n    - set-group\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_004_directory/playbooks/ansible.cfg",
    "content": "[defaults]\ninventory=inventory.yml\n\n\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_004_directory/playbooks/inventory.ini",
    "content": "[local]\n127.0.0.1\n\n[local:vars]\nansible_connection=local\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_004_directory/playbooks/inventory.yml",
    "content": "all:\n  hosts:\n    mail.example.com:\n  children:\n    local:\n      hosts:\n        127.0.0.1:\n          ansible_connection: local\n    gcp:\n      hosts:\n        35.226.68.74:\n    gcp2:\n      hosts:\n        35.238.67.36:\n    gcp1:\n      hosts:\n        droneio.gotdns.ch:\n    webservers:\n      hosts:\n        foo.example.com:\n        bar.example.com:\n    dbservers:\n      hosts:\n        one.example.com:\n        two.example.com:\n        three.example.com:\n    east:\n      hosts:\n        foo.example.com:\n        one.example.com:\n        two.example.com:\n    west:\n      hosts:\n        bar.example.com:\n        three.example.com:\n    prod:\n      hosts:\n        foo.example.com:\n        one.example.com:\n        two.example.com:\n    test:\n      hosts:\n        bar.example.com:\n        three.example.com:\n    jenkins:\n      hosts:\n        54.194.212.216"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_004_directory/playbooks/playbook-create-directory.yaml",
    "content": "################ SAMPLE USAGE #################################################################################\n#         ansible-playbook playbook-create-directory.yaml --tags=\"set-user,create-dir\"\n###############################################################################################################\n\n- name: create directory\n  hosts: gcp\n  become: true\n  vars:\n### CREATE USERS\n    user: \"test\"\n    group: \"test\"\n### CREATE DIRECTORIES\n    var_context: \"test\"\n    mount_path: \"/data\"\n    context: \"{{ var_context }}\"\n    var_context_opt_dir: \"/opt/{{ context }}\"\n    var_context_config_dir: \"{{ var_context_opt_dir }}/config\"\n    var_context_log_dir: \"{{ mount_path }}/log/{{ context }}\"\n    var_context_data_dir: \"{{ mount_path }}/var/lib/{{ context }}\"\n    var_context_backup_dir: \"{{ mount_path }}/var/{{ context }}-backup\"\n    var_list_dirs:\n      - \"{{ var_context_opt_dir }}\"\n      - \"{{ var_context_config_dir }}\"\n      - \"{{ var_context_log_dir }}\"\n      - \"{{ var_context_data_dir }}\"\n      - \"{{ var_context_backup_dir }}\"\n  roles:\n    - { role: user,                        tags: [ 'user' ] }\n    - { role: directory,                   tags: [ 'directory'] }"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_004_directory/playbooks/roles/user/ReadMe.md",
    "content": "## Role Usage Example\n\n- Check if playbook exists\n```bash\n$ cd ../../; ls playbook-create-user.yaml\nplaybook-create-user.yaml\n```\n\n- Run the playbook\n```bash\n$ ansible-playbook playbook-create-user.yaml\n```"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_004_directory/playbooks/roles/user/defaults/main.yml",
    "content": "---\nuser: ubuntu\ngroup: ubuntu\n\n\n\n\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_004_directory/playbooks/roles/user/tasks/main.yml",
    "content": "---\n- import_tasks: users.yml\n\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_004_directory/playbooks/roles/user/tasks/users.yml",
    "content": "---\n- name: setup group\n  group:\n    name: \"{{ group }}\"\n    system: no\n  tags:\n    - set-group\n    - set-user\n\n- name: setup user\n  user:\n    name: \"{{ user }}\"\n    system: no\n    group: \"{{ group }}\"\n  tags:\n    - set-user\n    - set-group\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_005_docker/playbooks/ansible.cfg",
    "content": "[defaults]\ninventory=inventory.yml\n\n\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_005_docker/playbooks/docker-compose-install.yml",
    "content": "---\n- name: docker-install\n  hosts: local\n  become: true\n  roles:\n    - { role: commons,                   tags: [ 'commons'       ] }\n    - { role: docker,                   tags: [ 'docker'       ] }\n    - { role: docker-compose,                   tags: [ 'docker-compose'       ] }\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_005_docker/playbooks/docker-drone-ci-setup.yml",
    "content": "- name: drone-ci\n  hosts: gcp\n  remote_user: codeaprendiz\n  become: true\n  vars:\n    env: \"local\"\n  roles:\n    - { role: docker-drone-ci,                 tags: [ 'docker-drone-ci' ] }\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_005_docker/playbooks/drone-ci.yml",
    "content": "- name: drone-ci\n  hosts: local\n  #  remote_user: ubuntu\n  become: true\n  vars:\n    env: \"local\"\n\n  roles:\n    - { role: drone-ci,                 tags: [ 'drone-ci' ] }"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_005_docker/playbooks/drone-runner.yml",
    "content": "- name: drone-ci\n  hosts: local\n  #  remote_user: ubuntu\n  become: true\n  vars:\n    env: \"local\"\n\n  roles:\n    - { role: drone-ci,                 tags: [ 'drone-ci' ] }"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_005_docker/playbooks/inventory.ini",
    "content": "[local]\n127.0.0.1\n\n[local:vars]\nansible_connection=local\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_005_docker/playbooks/inventory.yml",
    "content": "all:\n  hosts:\n    mail.example.com:\n  children:\n    local:\n      hosts:\n        127.0.0.1:\n          ansible_connection: local\n    gcp:\n      hosts:\n        35.226.68.74:\n    gcp2:\n      hosts:\n        35.238.67.36:\n    gcp1:\n      hosts:\n        droneio.gotdns.ch:\n    webservers:\n      hosts:\n        foo.example.com:\n        bar.example.com:\n    dbservers:\n      hosts:\n        one.example.com:\n        two.example.com:\n        three.example.com:\n    east:\n      hosts:\n        foo.example.com:\n        one.example.com:\n        two.example.com:\n    west:\n      hosts:\n        bar.example.com:\n        three.example.com:\n    prod:\n      hosts:\n        foo.example.com:\n        one.example.com:\n        two.example.com:\n    test:\n      hosts:\n        bar.example.com:\n        three.example.com:\n    jenkins:\n      hosts:\n        54.194.212.216"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_005_docker/playbooks/monit-install.yml",
    "content": "---\n- name: docker-install\n  hosts: gcp\n  user: codeaprendiz\n  become: true\n  roles:\n    - { role: monit,                   tags: [ 'monit'       ] }\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_005_docker/playbooks/playbook-create-directory.yaml",
    "content": "################ SAMPLE USAGE #################################################################################\n#         ansible-playbook playbook-create-directory.yaml --tags=\"set-user,create-dir\"\n###############################################################################################################\n\n- name: create directory\n  hosts: gcp\n  become: true\n  vars:\n### CREATE USERS\n    user: \"test\"\n    group: \"test\"\n### CREATE DIRECTORIES\n    var_context: \"test\"\n    mount_path: \"/data\"\n    context: \"{{ var_context }}\"\n    var_context_opt_dir: \"/opt/{{ context }}\"\n    var_context_config_dir: \"{{ var_context_opt_dir }}/config\"\n    var_context_log_dir: \"{{ mount_path }}/log/{{ context }}\"\n    var_context_data_dir: \"{{ mount_path }}/var/lib/{{ context }}\"\n    var_context_backup_dir: \"{{ mount_path }}/var/{{ context }}-backup\"\n    var_list_dirs:\n      - \"{{ var_context_opt_dir }}\"\n      - \"{{ var_context_config_dir }}\"\n      - \"{{ var_context_log_dir }}\"\n      - \"{{ var_context_data_dir }}\"\n      - \"{{ var_context_backup_dir }}\"\n  roles:\n    - { role: user,                        tags: [ 'user' ] }\n    - { role: directory,                   tags: [ 'directory'] }"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_005_docker/playbooks/playbook-create-user.yaml",
    "content": "- name: create user\n  hosts: local\n  become: true\n  vars:\n    user: \"test\"\n    group: \"test\"\n  roles:\n    - { role: user,                   tags: [ 'user'       ] }"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_005_docker/playbooks/playbook-install-commons.yaml",
    "content": "- name: install commons\n  hosts: local\n  become: true\n  roles:\n    - { role: commons,                   tags: [ 'commons'       ] }"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_005_docker/playbooks/playbook-install-datadog.yaml",
    "content": "#Usage:\n#  $ ansible-playbook playbook-install-datadog.yaml -e \"RUNTIME_VAR_DATADOG_API_KEY=2dd894f5******0c73474d48f\" -e \"RUNTIME_VAR_HOSTS=localhost\"\n\n- name: Install Datadog Agent on servers in AWS\n  hosts: \"{{ RUNTIME_VAR_HOSTS }}\"\n  become: yes\n  roles:\n    - { role: datadog-agent, become: yes }\n  vars:\n    datadog_api_key: \"{{ RUNTIME_VAR_DATADOG_API_KEY }}\"\n    datadog_config:\n      tags:\n        - env:dev\n      logs_enabled: true\n      process_config:\n        enabled: \"true\""
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_005_docker/playbooks/playbook-install-docker_docker-compose.yaml",
    "content": "---\n- name: docker-install\n  hosts: gcp\n  become: true\n  roles:\n    - { role: docker,                   tags: [ 'docker'       ] }\n\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_005_docker/playbooks/playbook-install-elastic-search-cluster-docker.yaml",
    "content": "################ SAMPLE USAGE #################################################################################\n# ansible-playbook playbook-install-elastic-search-cluster-docker.yaml --tags=\"vm-required,docker,set-user,create-dir,elastic-search-cluster\"\n###############################################################################################################\n\n- name: install docker-elastic-search-cluster\n  hosts: gcp\n  remote_user: visionary\n  become: true\n  vars:\n##### CREATING REQUIRED USERS ##############\n    user: \"elasticsearchcluster\"\n    group: \"elasticsearchcluster\"\n####### CREATING REQUIRED DIRECTORIES #####\n    mount_path: \"/data\"\n    elastic_search_opt_dir: \"/opt/elasticsearch-server\"\n    elastic_search_config_dir: \"{{ elastic_search_opt_dir }}/config\"\n    elastic_search_log_dir: \"{{ mount_path }}/log/elasticsearch-server\"\n    elastic_search_data_dir_01: \"{{ mount_path }}/var/lib/elasticsearch-server_01\"\n    elastic_search_data_dir_02: \"{{ mount_path }}/var/lib/elasticsearch-server_02\"\n    elastic_search_data_dir_03: \"{{ mount_path }}/var/lib/elasticsearch-server_03\"\n    elastic_search_backup_dir: \"{{ mount_path }}/var/elasticsearch-server-backup\"\n    var_list_dirs:\n      - \"{{ mount_path }}\"\n      - \"{{ elastic_search_opt_dir }}\"\n      - \"{{ elastic_search_config_dir }}\"\n      - \"{{ elastic_search_log_dir }}\"\n      - \"{{ elastic_search_data_dir_01 }}\"\n      - \"{{ elastic_search_data_dir_02 }}\"\n      - \"{{ elastic_search_data_dir_03 }}\"\n      - \"{{ elastic_search_backup_dir }}\"\n####### ELASTIC SEARCH VARIABLES ##########\n    elastic_search_version: \"7.8.0\"\n    env: \"dev\"\n    elasticsearch_xmx: \"512\"\n    elasticsearch_cluster_name: \"es-docker-cluster\"\n    elasticsearch_port: \"9200\"\n\n  roles:\n    - { role: commons,                              tags: [ 'commons' ]}\n    - { role: docker,                              tags: [ 'docker' ]}\n    - { role: user,                                 tags: [ 'user'       ] }\n    - { role: directory,                            tags: [ 'directory'] }\n    - { role: elastic-search-cluster-docker,        tags: [ 'elastic-search-cluster-docker' ]}"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_005_docker/playbooks/playbook-install-jenkins-docker.yaml",
    "content": "################ SAMPLE USAGE #################################################################################\n# ansible-playbook playbook-install-jenkins-docker.yaml --tags=\"vm-required,docker,set-user,create-dir,jenkins\"\n###############################################################################################################\n\n- name: install docker jenkins\n  hosts: jenkins\n  remote_user: ubuntu\n  become: true\n\n  vars:\n    ansible_ssh_private_key_file: \"../../terraform/aws/task-029-ec2-jenkins-instance-and-slave-instance/jenkins.pem\"\n##### CREATING REQUIRED USERS ##############\n    user: \"jenkins\"\n    group: \"jenkins\"\n####### CREATING REQUIRED DIRECTORIES #####\n#    mount_path: \"/data\"\n    mount_path: \"/tmp\"\n    jenkins_tmp_dir: \"{{ mount_path }}/tmp/jenkins\"\n    jenkins_log_dir: \"{{ mount_path }}/var/log/jenkins\"\n    jenkins_opt_dir: \"{{ mount_path }}/opt/jenkins\"\n    jenkins_config_dir: \"{{ mount_path }}/opt/jenkins/config\"\n    jenkins_data_dir: \"{{ mount_path }}/lib/jenkins\"\n    var_list_dirs:\n      - \"{{ mount_path }}\"\n      - \"{{ jenkins_log_dir }}\"\n      - \"{{ jenkins_opt_dir }}\"\n      - \"{{ jenkins_config_dir }}\"\n      - \"{{ jenkins_tmp_dir }}\"\n      - \"{{ jenkins_data_dir }}\"\n\n####### jenkins VARIABLES ##########\n    env: \"dev\"\n\n\n\n  roles:\n    - { role: commons,                              tags: [ 'commons' ]}\n    - { role: docker,                              tags: [ 'docker' ]}\n    - { role: user,                                 tags: [ 'user'       ] }\n    - { role: directory,                            tags: [ 'directory'] }\n    - { role: jenkins-docker,                            tags: [ 'jenkins-docker'] }\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_005_docker/playbooks/playbook-install-kibana-docker.yaml",
    "content": "################ SAMPLE USAGE #################################################################################\n# ansible-playbook playbook-install-kibana-docker.yaml --tags=\"vm-required,docker,set-user,create-dir,kibana\"\n###############################################################################################################\n\n- name: install docker-elastic-search-cluster\n  hosts: gcp2\n  remote_user: codeaprendiz\n  become: true\n  vars:\n##### CREATING REQUIRED USERS ##############\n    user: \"kibana\"\n    group: \"kibana\"\n####### CREATING REQUIRED DIRECTORIES #####\n    mount_path: \"/data\"\n    kibana_log_dir: \"{{ mount_path }}/var/log/kibana\"\n    kibana_opt_dir: \"{{ mount_path }}/opt/kibana\"\n    kibana_config_dir: \"{{ mount_path }}/opt/kibana/config\"\n    var_list_dirs:\n      - \"{{ mount_path }}\"\n      - \"{{ kibana_log_dir }}\"\n      - \"{{ kibana_opt_dir }}\"\n      - \"{{ kibana_config_dir }}\"\n\n####### KIBANA VARIABLES ##########\n    env: \"dev\"\n    kibana_version: \"7.8.1\"\n    elastic_search_url: \"http://35.226.68.74:9200\"\n    kibana_port: \"5601\"\n\n\n\n  roles:\n    - { role: commons,                              tags: [ 'commons' ]}\n    - { role: docker,                              tags: [ 'docker' ]}\n    - { role: user,                                 tags: [ 'user'       ] }\n    - { role: directory,                            tags: [ 'directory'] }\n    - { role: kibana-docker,                            tags: [ 'kibana-docker'] }\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_005_docker/playbooks/playbook-install-monit.yaml",
    "content": "- name: install monit\n  hosts: local\n  become: true\n  vars:\n    VAR_MONIT_VERSION: \"5.26.0\"\n    VAR_INSTALL_SPECIFIC_VERSION: \"True\"\n    VAR_IS_REDHAT: \"False\"\n    VAR_IS_DEBIAN: \"False\"\n  roles:\n    - { role: monit,                   tags: [ 'monit'       ] }"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_005_docker/playbooks/roles/docker/README.md",
    "content": "# Ansible Role: Docker\n\n\nAn Ansible Role that installs [Docker](https://www.docker.com) on Linux.\n\n## Requirements\n\nNone.\n\n## Role Variables\n\nAvailable variables are listed below, along with default values (see `defaults/main.yml`):\n\n    # Edition can be one of: 'ce' (Community Edition) or 'ee' (Enterprise Edition).\n    docker_edition: 'ce'\n    docker_package: \"docker-{{ docker_edition }}\"\n    docker_package_state: present\n\nThe `docker_edition` should be either `ce` (Community Edition) or `ee` (Enterprise Edition). You can also specify a specific version of Docker to install using the distribution-specific format: Red Hat/CentOS: `docker-{{ docker_edition }}-<VERSION>`; Debian/Ubuntu: `docker-{{ docker_edition }}=<VERSION>`.\n\nYou can control whether the package is installed, uninstalled, or at the latest version by setting `docker_package_state` to `present`, `absent`, or `latest`, respectively. Note that the Docker daemon will be automatically restarted if the Docker package is updated. This is a side effect of flushing all handlers (running any of the handlers that have been notified by this and any other role up to this point in the play).\n\n    docker_service_state: started\n    docker_service_enabled: true\n    docker_restart_handler_state: restarted\n\nVariables to control the state of the `docker` service, and whether it should start on boot. If you're installing Docker inside a Docker container without systemd or sysvinit, you should set these to `stopped` and set the enabled variable to `no`.\n\n    docker_install_compose: true\n    docker_compose_version: \"1.25.4\"\n    docker_compose_path: /usr/local/bin/docker-compose\n\nDocker Compose installation options.\n\n    docker_apt_release_channel: stable\n    docker_apt_arch: amd64\n    docker_apt_repository: \"deb [arch={{ docker_apt_arch }}] https://download.docker.com/linux/{{ ansible_distribution | lower }} {{ ansible_distribution_release }} {{ docker_apt_release_channel }}\"\n    docker_apt_ignore_key_error: True\n    docker_apt_gpg_key: https://download.docker.com/linux/{{ ansible_distribution | lower }}/gpg\n\n(Used only for Debian/Ubuntu.) You can switch the channel to `edge` if you want to use the Edge release.\n\nYou can change `docker_apt_gpg_key` to a different url if you are behind a firewall or provide a trustworthy mirror.\nUsually in combination with changing `docker_apt_repository` as well.\n\n    docker_yum_repo_url: https://download.docker.com/linux/centos/docker-{{ docker_edition }}.repo\n    docker_yum_repo_enable_edge: '0'\n    docker_yum_repo_enable_test: '0'\n    docker_yum_gpg_key: https://download.docker.com/linux/centos/gpg\n\n(Used only for RedHat/CentOS.) You can enable the Edge or Test repo by setting the respective vars to `1`.\n\nYou can change `docker_yum_gpg_key` to a different url if you are behind a firewall or provide a trustworthy mirror.\nUsually in combination with changing `docker_yum_repository` as well.\n\n    docker_users:\n      - user1\n      - user2\n\nA list of system users to be added to the `docker` group (so they can use Docker on the server).\n\n\n\n## Dependencies\n\nNone.\n\n## Example Playbook\n\n```yaml\n- hosts: all\n  roles:\n    - docker\n```\n\n## Role Usage Example\n\n- Check if playbook exists\n```bash\n$ cd ../../; ls playbook-install-docker_docker-compose.yaml\nplaybook-install-docker_docker-compose.yaml\n```\n\n- Run the playbook\n```bash\n$ ansible-playbook playbook-install-docker_docker-compose.yaml\n```\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_005_docker/playbooks/roles/docker/defaults/main.yml",
    "content": "---\n# Edition can be one of: 'ce' (Community Edition) or 'ee' (Enterprise Edition).\ndocker_edition: 'ce'\ndocker_package: \"docker-{{ docker_edition }}\"\ndocker_package_state: present\n\n# Service options.\ndocker_service_state: started\ndocker_service_enabled: true\ndocker_restart_handler_state: restarted\n\n# Docker Compose options.\ndocker_install_compose: true\ndocker_compose_version: \"1.25.5\"\ndocker_compose_path: /usr/local/bin/docker-compose\n\n# Used only for Debian/Ubuntu. Switch 'stable' to 'edge' if needed.\ndocker_apt_release_channel: stable\ndocker_apt_arch: amd64\ndocker_apt_repository: \"deb [arch={{ docker_apt_arch }}] https://download.docker.com/linux/{{ ansible_distribution | lower }} {{ ansible_distribution_release }} {{ docker_apt_release_channel }}\"\ndocker_apt_ignore_key_error: true\ndocker_apt_gpg_key: https://download.docker.com/linux/{{ ansible_distribution | lower }}/gpg\n\n# Used only for RedHat/CentOS/Fedora.\ndocker_yum_repo_url: https://download.docker.com/linux/{{ (ansible_distribution == \"Fedora\") | ternary(\"fedora\",\"centos\") }}/docker-{{ docker_edition }}.repo\ndocker_yum_repo_enable_edge: '0'\ndocker_yum_repo_enable_test: '0'\ndocker_yum_gpg_key: https://download.docker.com/linux/centos/gpg\n\n# A list of users who will be added to the docker group.\ndocker_users: []\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_005_docker/playbooks/roles/docker/handlers/main.yml",
    "content": "---\n- name: restart docker\n  service: \"name=docker state={{ docker_restart_handler_state }}\"\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_005_docker/playbooks/roles/docker/tasks/docker-compose.yml",
    "content": "---\n- name: Check current docker-compose version.\n  command: docker-compose --version\n  register: docker_compose_current_version\n  changed_when: false\n  failed_when: false\n\n- name: Delete existing docker-compose version if it's different.\n  file:\n    path: \"{{ docker_compose_path }}\"\n    state: absent\n  when: >\n    docker_compose_current_version.stdout is defined\n    and docker_compose_version not in docker_compose_current_version.stdout\n\n- name: Install Docker Compose (if configured).\n  get_url:\n    url: https://github.com/docker/compose/releases/download/{{ docker_compose_version }}/docker-compose-Linux-x86_64\n    dest: \"{{ docker_compose_path }}\"\n    mode: 0755\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_005_docker/playbooks/roles/docker/tasks/docker-users.yml",
    "content": "---\n- name: Ensure docker users are added to the docker group.\n  user:\n    name: \"{{ item }}\"\n    groups: docker\n    append: true\n  with_items: \"{{ docker_users }}\"\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_005_docker/playbooks/roles/docker/tasks/main.yml",
    "content": "---\n- include_tasks: setup-RedHat.yml\n  when: ansible_os_family == 'RedHat'\n\n- include_tasks: setup-Debian.yml\n  when: ansible_os_family == 'Debian'\n\n- name: Install Docker.\n  package:\n    name: \"{{ docker_package }}\"\n    state: \"{{ docker_package_state }}\"\n  notify: restart docker\n\n- name: Ensure Docker is started and enabled at boot.\n  service:\n    name: docker\n    state: \"{{ docker_service_state }}\"\n    enabled: \"{{ docker_service_enabled }}\"\n\n- name: Ensure handlers are notified now to avoid firewall conflicts.\n  meta: flush_handlers\n\n- include_tasks: docker-compose.yml\n  when: docker_install_compose | bool\n\n- include_tasks: docker-users.yml\n  when: docker_users | length > 0\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_005_docker/playbooks/roles/docker/tasks/setup-Debian.yml",
    "content": "---\n- name: Ensure old versions of Docker are not installed.\n  package:\n    name:\n      - docker\n      - docker-engine\n    state: absent\n\n- name: Ensure dependencies are installed.\n  apt:\n    name:\n      - apt-transport-https\n      - ca-certificates\n      - gnupg2\n    state: present\n\n- name: Add Docker apt key.\n  apt_key:\n    url: \"{{ docker_apt_gpg_key }}\"\n    id: 9DC858229FC7DD38854AE2D88D81803C0EBFCD88\n    state: present\n  register: add_repository_key\n  ignore_errors: \"{{ docker_apt_ignore_key_error }}\"\n\n- name: Ensure curl is present (on older systems without SNI).\n  package: name=curl state=present\n  when: add_repository_key is failed\n\n- name: Add Docker apt key (alternative for older systems without SNI).\n  shell: >\n    curl -sSL {{ docker_apt_gpg_key }} | sudo apt-key add -\n  args:\n    warn: false\n  when: add_repository_key is failed\n\n- name: Add Docker repository.\n  apt_repository:\n    repo: \"{{ docker_apt_repository }}\"\n    state: present\n    update_cache: true\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_005_docker/playbooks/roles/docker/tasks/setup-RedHat.yml",
    "content": "---\n- name: Ensure old versions of Docker are not installed.\n  package:\n    name:\n      - docker\n      - docker-common\n      - docker-engine\n    state: absent\n\n- name: Add Docker GPG key.\n  rpm_key:\n    key: \"{{ docker_yum_gpg_key }}\"\n    state: present\n\n- name: Add Docker repository.\n  get_url:\n    url: \"{{ docker_yum_repo_url }}\"\n    dest: '/etc/yum.repos.d/docker-{{ docker_edition }}.repo'\n    owner: root\n    group: root\n    mode: 0644\n\n- name: Configure Docker Edge repo.\n  ini_file:\n    dest: '/etc/yum.repos.d/docker-{{ docker_edition }}.repo'\n    section: 'docker-{{ docker_edition }}-edge'\n    option: enabled\n    value: '{{ docker_yum_repo_enable_edge }}'\n\n- name: Configure Docker Test repo.\n  ini_file:\n    dest: '/etc/yum.repos.d/docker-{{ docker_edition }}.repo'\n    section: 'docker-{{ docker_edition }}-test'\n    option: enabled\n    value: '{{ docker_yum_repo_enable_test }}'\n\n- name: Install containerd separately (CentOS 8).\n  package:\n    name: https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm\n    state: present\n  when: ansible_distribution_major_version | int == 8\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_005_drone_ci/playbooks/ansible.cfg",
    "content": "[defaults]\ninventory=inventory.yml\n\n\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_005_drone_ci/playbooks/docker-drone-ci-setup.yml",
    "content": "- name: drone-ci\n  hosts: gcp\n  remote_user: codeaprendiz\n  become: true\n  vars:\n    env: \"local\"\n  roles:\n    - { role: docker-drone-ci,                 tags: [ 'docker-drone-ci' ] }\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_005_drone_ci/playbooks/drone-ci.yml",
    "content": "- name: drone-ci\n  hosts: local\n  #  remote_user: ubuntu\n  become: true\n  vars:\n    env: \"local\"\n\n  roles:\n    - { role: drone-ci,                 tags: [ 'drone-ci' ] }"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_005_drone_ci/playbooks/drone-runner.yml",
    "content": "- name: drone-ci\n  hosts: local\n  #  remote_user: ubuntu\n  become: true\n  vars:\n    env: \"local\"\n\n  roles:\n    - { role: drone-ci,                 tags: [ 'drone-ci' ] }"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_005_drone_ci/playbooks/inventory.ini",
    "content": "[local]\n127.0.0.1\n\n[local:vars]\nansible_connection=local\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_005_drone_ci/playbooks/inventory.yml",
    "content": "all:\n  hosts:\n    mail.example.com:\n  children:\n    local:\n      hosts:\n        127.0.0.1:\n          ansible_connection: local\n    gcp:\n      hosts:\n        35.226.68.74:\n    gcp2:\n      hosts:\n        35.238.67.36:\n    gcp1:\n      hosts:\n        droneio.gotdns.ch:\n    webservers:\n      hosts:\n        foo.example.com:\n        bar.example.com:\n    dbservers:\n      hosts:\n        one.example.com:\n        two.example.com:\n        three.example.com:\n    east:\n      hosts:\n        foo.example.com:\n        one.example.com:\n        two.example.com:\n    west:\n      hosts:\n        bar.example.com:\n        three.example.com:\n    prod:\n      hosts:\n        foo.example.com:\n        one.example.com:\n        two.example.com:\n    test:\n      hosts:\n        bar.example.com:\n        three.example.com:\n    jenkins:\n      hosts:\n        54.194.212.216"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_005_drone_ci/playbooks/roles/drone-ci/defaults/main.yml",
    "content": "---\nCONF_FILES_DIR: /etc/drone\nSYSTEMD_FILES_DIR: /etc/systemd/system\nTEMPLATE_FOLDER_CONF: conf\nTEMPLATE_FOLDER_SYSTEM: system"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_005_drone_ci/playbooks/roles/drone-ci/tasks/main.yml",
    "content": "---\n- name: enruse configuration files path existst\n  file:\n    path: \"{{ item }}\"\n    state: directory\n    recurse: true\n    force: true\n    mode: 0777\n    owner: \"{{ ansible_env.SUDO_USER | default(ansible_env.USER) }}\"\n  with_items:\n    - \"{{ CONF_FILES_DIR }}\"\n\n- name: transfer the configuration scripts\n  template:\n    src: \"{{ item }}\"\n    dest: \"{{ CONF_FILES_DIR }}/{{ item | basename }}\"\n    mode: 0777\n  with_fileglob:\n    - ../templates/{{ TEMPLATE_FOLDER_CONF }}/*.*\n\n\n- name: transfer the systemd scripts\n  template:\n    src: \"{{ item }}\"\n    dest: \"{{ SYSTEMD_FILES_DIR }}/{{ item | basename }}\"\n    mode: 0777\n  with_fileglob:\n    - ../templates/{{ TEMPLATE_FOLDER_SYSTEM }}/*.*\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_005_drone_ci/playbooks/roles/drone-ci/templates/conf/docker-compose.yml",
    "content": "version: '3'\n\nservices:\n  drone:\n    container_name: drone\n    image: drone/drone:1.0.0-rc.5\n    ports:\n      - 127.0.0.1:8000:80\n    volumes:\n      - /var/run/docker.sock:/var/run/docker.sock\n      - /var/lib/drone:/data\n    restart: always\n    env_file:\n      - /etc/drone/server.env"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_005_drone_ci/playbooks/roles/drone-ci/templates/conf/server.env",
    "content": "# Service settings\nDRONE_SERVER_HOST=ci.example.com\nDRONE_SERVER_PROTO=https\n\n# GitHub Settings\nDRONE_GITHUB_CLIENT_ID=4e8e6284eebb9a0a49a6\nDRONE_GITHUB_CLIENT_SECRET=XXXXXXXXXXXX\n\n# User setings\nDRONE_USER_CREATE=username:xxxxx,machine:false,admin:true\nDRONE_USER_FILTER=xxxxx"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_005_drone_ci/playbooks/roles/drone-ci/templates/system/drone.service",
    "content": "[Unit]\nDescription=Drone server\nAfter=docker.service nginx.service\n\n[Service]\nRestart=always\nExecStart=/usr/local/bin/docker-compose -f /etc/drone/docker-compose.yml up\nExecStop=/usr/local/bin/docker-compose -f /etc/drone/docker-compose.yml stop\n\n[Install]\nWantedBy=multi-user.target"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_006_elastic_search_cluster_docker/playbooks/ansible.cfg",
    "content": "[defaults]\ninventory=inventory.yml\n\n\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_006_elastic_search_cluster_docker/playbooks/inventory.ini",
    "content": "[local]\n127.0.0.1\n\n[local:vars]\nansible_connection=local\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_006_elastic_search_cluster_docker/playbooks/inventory.yml",
    "content": "all:\n  hosts:\n    mail.example.com:\n  children:\n    local:\n      hosts:\n        127.0.0.1:\n          ansible_connection: local\n    gcp:\n      hosts:\n        35.226.68.74:\n    gcp2:\n      hosts:\n        35.238.67.36:\n    gcp1:\n      hosts:\n        droneio.gotdns.ch:\n    webservers:\n      hosts:\n        foo.example.com:\n        bar.example.com:\n    dbservers:\n      hosts:\n        one.example.com:\n        two.example.com:\n        three.example.com:\n    east:\n      hosts:\n        foo.example.com:\n        one.example.com:\n        two.example.com:\n    west:\n      hosts:\n        bar.example.com:\n        three.example.com:\n    prod:\n      hosts:\n        foo.example.com:\n        one.example.com:\n        two.example.com:\n    test:\n      hosts:\n        bar.example.com:\n        three.example.com:\n    jenkins:\n      hosts:\n        54.194.212.216"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_006_elastic_search_cluster_docker/playbooks/playbook-install-elastic-search-cluster-docker.yaml",
    "content": "################ SAMPLE USAGE #################################################################################\n# ansible-playbook playbook-install-elastic-search-cluster-docker.yaml --tags=\"vm-required,docker,set-user,create-dir,elastic-search-cluster\"\n###############################################################################################################\n\n- name: install docker-elastic-search-cluster\n  hosts: gcp\n  remote_user: visionary\n  become: true\n  vars:\n##### CREATING REQUIRED USERS ##############\n    user: \"elasticsearchcluster\"\n    group: \"elasticsearchcluster\"\n####### CREATING REQUIRED DIRECTORIES #####\n    mount_path: \"/data\"\n    elastic_search_opt_dir: \"/opt/elasticsearch-server\"\n    elastic_search_config_dir: \"{{ elastic_search_opt_dir }}/config\"\n    elastic_search_log_dir: \"{{ mount_path }}/log/elasticsearch-server\"\n    elastic_search_data_dir_01: \"{{ mount_path }}/var/lib/elasticsearch-server_01\"\n    elastic_search_data_dir_02: \"{{ mount_path }}/var/lib/elasticsearch-server_02\"\n    elastic_search_data_dir_03: \"{{ mount_path }}/var/lib/elasticsearch-server_03\"\n    elastic_search_backup_dir: \"{{ mount_path }}/var/elasticsearch-server-backup\"\n    var_list_dirs:\n      - \"{{ mount_path }}\"\n      - \"{{ elastic_search_opt_dir }}\"\n      - \"{{ elastic_search_config_dir }}\"\n      - \"{{ elastic_search_log_dir }}\"\n      - \"{{ elastic_search_data_dir_01 }}\"\n      - \"{{ elastic_search_data_dir_02 }}\"\n      - \"{{ elastic_search_data_dir_03 }}\"\n      - \"{{ elastic_search_backup_dir }}\"\n####### ELASTIC SEARCH VARIABLES ##########\n    elastic_search_version: \"7.8.0\"\n    env: \"dev\"\n    elasticsearch_xmx: \"512\"\n    elasticsearch_cluster_name: \"es-docker-cluster\"\n    elasticsearch_port: \"9200\"\n\n  roles:\n    - { role: commons,                              tags: [ 'commons' ]}\n    - { role: docker,                              tags: [ 'docker' ]}\n    - { role: user,                                 tags: [ 'user'       ] }\n    - { role: directory,                            tags: [ 'directory'] }\n    - { role: elastic-search-cluster-docker,        tags: [ 'elastic-search-cluster-docker' ]}"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_007_jenkins_docker/playbooks/ansible.cfg",
    "content": ""
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_007_jenkins_docker/playbooks/inventory.ini",
    "content": ""
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_007_jenkins_docker/playbooks/inventory.yml",
    "content": ""
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_007_jenkins_docker/playbooks/playbook-install-jenkins-docker.yaml",
    "content": "################ SAMPLE USAGE #################################################################################\n# ansible-playbook playbook-install-jenkins-docker.yaml --tags=\"vm-required,docker,set-user,create-dir,jenkins\"\n###############################################################################################################\n\n- name: install docker jenkins\n  hosts: jenkins\n  remote_user: ubuntu\n  become: true\n\n  vars:\n    ansible_ssh_private_key_file: \"../../terraform/aws/task-029-ec2-jenkins-instance-and-slave-instance/jenkins.pem\"\n##### CREATING REQUIRED USERS ##############\n    user: \"jenkins\"\n    group: \"jenkins\"\n####### CREATING REQUIRED DIRECTORIES #####\n#    mount_path: \"/data\"\n    mount_path: \"/tmp\"\n    jenkins_tmp_dir: \"{{ mount_path }}/tmp/jenkins\"\n    jenkins_log_dir: \"{{ mount_path }}/var/log/jenkins\"\n    jenkins_opt_dir: \"{{ mount_path }}/opt/jenkins\"\n    jenkins_config_dir: \"{{ mount_path }}/opt/jenkins/config\"\n    jenkins_data_dir: \"{{ mount_path }}/lib/jenkins\"\n    var_list_dirs:\n      - \"{{ mount_path }}\"\n      - \"{{ jenkins_log_dir }}\"\n      - \"{{ jenkins_opt_dir }}\"\n      - \"{{ jenkins_config_dir }}\"\n      - \"{{ jenkins_tmp_dir }}\"\n      - \"{{ jenkins_data_dir }}\"\n\n####### jenkins VARIABLES ##########\n    env: \"dev\"\n\n\n\n  roles:\n    - { role: commons,                              tags: [ 'commons' ]}\n    - { role: docker,                              tags: [ 'docker' ]}\n    - { role: user,                                 tags: [ 'user'       ] }\n    - { role: directory,                            tags: [ 'directory'] }\n    - { role: jenkins-docker,                            tags: [ 'jenkins-docker'] }\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_007_jenkins_docker/playbooks/roles/commons/ReadMe.md",
    "content": "## Role Usage Example\n\n- Check if playbook exists\n```bash\n$ cd ../../; ls playbook-install-commons.yaml\nplaybook-install-commons.yaml\n```\n\n- Run the playbook\n```bash\n$ ansible-playbook playbook-install-commons.yaml\n```\n\n- To install all packages\n```bash\n$ sudo ansible-playbook  playbook-install-commons.yaml --tags=\"all\"\n```\n\n- To install only vm-related packages\n```bash\n$ sudo ansible-playbook  playbook-install-commons.yaml --tags=\"vm-required\"\n```\n\n- To install only atom packages\n```bash\n$ sudo ansible-playbook  playbook-install-commons.yaml --tags=\"install-atom\"\n```\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_007_jenkins_docker/playbooks/roles/commons/defaults/main.yml",
    "content": ""
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_007_jenkins_docker/playbooks/roles/commons/tasks/Debian/install-atom-ide.yml",
    "content": ""
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_007_jenkins_docker/playbooks/roles/commons/tasks/Debian/setup-Debian.yml",
    "content": ""
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_007_jenkins_docker/playbooks/roles/commons/tasks/Debian/setup-my-workstation.yml",
    "content": ""
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_007_jenkins_docker/playbooks/roles/commons/tasks/main.yml",
    "content": ""
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_007_jenkins_docker/playbooks/roles/directory/ReadMe.md",
    "content": "## Role Usage Example\n\n- Check if playbook exists\n```bash\n$ cd ../../; ls playbook-create-directory.yaml\nplaybook-create-directory.yaml\n```\n\n- Run the playbook\n```bash\n$ ansible-playbook playbook-create-directory.yaml\n```\n\n- Run the playbook with required tags\n```bash\n$ ansible-playbook playbook-create-directory.yaml --tags=\"set-user,create-dir\"\n```"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_007_jenkins_docker/playbooks/roles/directory/defaults/main.yml",
    "content": ""
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_007_jenkins_docker/playbooks/roles/directory/tasks/configure.yml",
    "content": ""
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_007_jenkins_docker/playbooks/roles/directory/tasks/main.yml",
    "content": ""
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_007_jenkins_docker/playbooks/roles/docker/README.md",
    "content": "# Ansible Role: Docker\n\n\nAn Ansible Role that installs [Docker](https://www.docker.com) on Linux.\n\n## Requirements\n\nNone.\n\n## Role Variables\n\nAvailable variables are listed below, along with default values (see `defaults/main.yml`):\n\n    # Edition can be one of: 'ce' (Community Edition) or 'ee' (Enterprise Edition).\n    docker_edition: 'ce'\n    docker_package: \"docker-{{ docker_edition }}\"\n    docker_package_state: present\n\nThe `docker_edition` should be either `ce` (Community Edition) or `ee` (Enterprise Edition). You can also specify a specific version of Docker to install using the distribution-specific format: Red Hat/CentOS: `docker-{{ docker_edition }}-<VERSION>`; Debian/Ubuntu: `docker-{{ docker_edition }}=<VERSION>`.\n\nYou can control whether the package is installed, uninstalled, or at the latest version by setting `docker_package_state` to `present`, `absent`, or `latest`, respectively. Note that the Docker daemon will be automatically restarted if the Docker package is updated. This is a side effect of flushing all handlers (running any of the handlers that have been notified by this and any other role up to this point in the play).\n\n    docker_service_state: started\n    docker_service_enabled: true\n    docker_restart_handler_state: restarted\n\nVariables to control the state of the `docker` service, and whether it should start on boot. If you're installing Docker inside a Docker container without systemd or sysvinit, you should set these to `stopped` and set the enabled variable to `no`.\n\n    docker_install_compose: true\n    docker_compose_version: \"1.25.4\"\n    docker_compose_path: /usr/local/bin/docker-compose\n\nDocker Compose installation options.\n\n    docker_apt_release_channel: stable\n    docker_apt_arch: amd64\n    docker_apt_repository: \"deb [arch={{ docker_apt_arch }}] https://download.docker.com/linux/{{ ansible_distribution | lower }} {{ ansible_distribution_release }} {{ docker_apt_release_channel }}\"\n    docker_apt_ignore_key_error: True\n    docker_apt_gpg_key: https://download.docker.com/linux/{{ ansible_distribution | lower }}/gpg\n\n(Used only for Debian/Ubuntu.) You can switch the channel to `edge` if you want to use the Edge release.\n\nYou can change `docker_apt_gpg_key` to a different url if you are behind a firewall or provide a trustworthy mirror.\nUsually in combination with changing `docker_apt_repository` as well.\n\n    docker_yum_repo_url: https://download.docker.com/linux/centos/docker-{{ docker_edition }}.repo\n    docker_yum_repo_enable_edge: '0'\n    docker_yum_repo_enable_test: '0'\n    docker_yum_gpg_key: https://download.docker.com/linux/centos/gpg\n\n(Used only for RedHat/CentOS.) You can enable the Edge or Test repo by setting the respective vars to `1`.\n\nYou can change `docker_yum_gpg_key` to a different url if you are behind a firewall or provide a trustworthy mirror.\nUsually in combination with changing `docker_yum_repository` as well.\n\n    docker_users:\n      - user1\n      - user2\n\nA list of system users to be added to the `docker` group (so they can use Docker on the server).\n\n\n\n## Dependencies\n\nNone.\n\n## Example Playbook\n\n```yaml\n- hosts: all\n  roles:\n    - docker\n```\n\n## Role Usage Example\n\n- Check if playbook exists\n```bash\n$ cd ../../; ls playbook-install-docker_docker-compose.yaml\nplaybook-install-docker_docker-compose.yaml\n```\n\n- Run the playbook\n```bash\n$ ansible-playbook playbook-install-docker_docker-compose.yaml\n```\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_007_jenkins_docker/playbooks/roles/docker/defaults/main.yml",
    "content": ""
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_007_jenkins_docker/playbooks/roles/docker/handlers/main.yml",
    "content": ""
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_007_jenkins_docker/playbooks/roles/docker/tasks/docker-compose.yml",
    "content": ""
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_007_jenkins_docker/playbooks/roles/docker/tasks/docker-users.yml",
    "content": ""
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_007_jenkins_docker/playbooks/roles/docker/tasks/main.yml",
    "content": ""
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_007_jenkins_docker/playbooks/roles/docker/tasks/setup-Debian.yml",
    "content": ""
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_007_jenkins_docker/playbooks/roles/docker/tasks/setup-RedHat.yml",
    "content": ""
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_007_jenkins_docker/playbooks/roles/jenkins-docker/defaults/main.yml",
    "content": ""
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_007_jenkins_docker/playbooks/roles/jenkins-docker/handlers/main.yaml",
    "content": ""
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_007_jenkins_docker/playbooks/roles/jenkins-docker/tasks/install-jenkins.yaml",
    "content": ""
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_007_jenkins_docker/playbooks/roles/jenkins-docker/tasks/main.yml",
    "content": ""
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_007_jenkins_docker/playbooks/roles/jenkins-docker/tasks/plugins.yml",
    "content": ""
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_007_jenkins_docker/playbooks/roles/jenkins-docker/templates/Caddyfile",
    "content": ""
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_007_jenkins_docker/playbooks/roles/jenkins-docker/templates/docker-compose.yml",
    "content": ""
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_007_jenkins_docker/playbooks/roles/jenkins-docker/templates/install-plugins.groovy",
    "content": ""
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_007_jenkins_docker/playbooks/roles/jenkins-docker/templates/plugins.txt",
    "content": ""
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_007_jenkins_docker/playbooks/roles/user/ReadMe.md",
    "content": "## Role Usage Example\n\n- Check if playbook exists\n```bash\n$ cd ../../; ls playbook-create-user.yaml\nplaybook-create-user.yaml\n```\n\n- Run the playbook\n```bash\n$ ansible-playbook playbook-create-user.yaml\n```"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_007_jenkins_docker/playbooks/roles/user/defaults/main.yml",
    "content": ""
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_007_jenkins_docker/playbooks/roles/user/tasks/main.yml",
    "content": ""
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_007_jenkins_docker/playbooks/roles/user/tasks/users.yml",
    "content": ""
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_008_kibana_docker/playbooks/ansible.cfg",
    "content": "[defaults]\ninventory=inventory.yml\n\n\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_008_kibana_docker/playbooks/inventory.ini",
    "content": "[local]\n127.0.0.1\n\n[local:vars]\nansible_connection=local\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_008_kibana_docker/playbooks/inventory.yml",
    "content": "all:\n  hosts:\n    mail.example.com:\n  children:\n    local:\n      hosts:\n        127.0.0.1:\n          ansible_connection: local\n    gcp:\n      hosts:\n        35.226.68.74:\n    gcp2:\n      hosts:\n        35.238.67.36:\n    gcp1:\n      hosts:\n        droneio.gotdns.ch:\n    webservers:\n      hosts:\n        foo.example.com:\n        bar.example.com:\n    dbservers:\n      hosts:\n        one.example.com:\n        two.example.com:\n        three.example.com:\n    east:\n      hosts:\n        foo.example.com:\n        one.example.com:\n        two.example.com:\n    west:\n      hosts:\n        bar.example.com:\n        three.example.com:\n    prod:\n      hosts:\n        foo.example.com:\n        one.example.com:\n        two.example.com:\n    test:\n      hosts:\n        bar.example.com:\n        three.example.com:\n    jenkins:\n      hosts:\n        54.194.212.216"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_008_kibana_docker/playbooks/playbook-install-kibana-docker.yaml",
    "content": "################ SAMPLE USAGE #################################################################################\n# ansible-playbook playbook-install-kibana-docker.yaml --tags=\"vm-required,docker,set-user,create-dir,kibana\"\n###############################################################################################################\n\n- name: install docker-elastic-search-cluster\n  hosts: gcp2\n  remote_user: codeaprendiz\n  become: true\n  vars:\n##### CREATING REQUIRED USERS ##############\n    user: \"kibana\"\n    group: \"kibana\"\n####### CREATING REQUIRED DIRECTORIES #####\n    mount_path: \"/data\"\n    kibana_log_dir: \"{{ mount_path }}/var/log/kibana\"\n    kibana_opt_dir: \"{{ mount_path }}/opt/kibana\"\n    kibana_config_dir: \"{{ mount_path }}/opt/kibana/config\"\n    var_list_dirs:\n      - \"{{ mount_path }}\"\n      - \"{{ kibana_log_dir }}\"\n      - \"{{ kibana_opt_dir }}\"\n      - \"{{ kibana_config_dir }}\"\n\n####### KIBANA VARIABLES ##########\n    env: \"dev\"\n    kibana_version: \"7.8.1\"\n    elastic_search_url: \"http://35.226.68.74:9200\"\n    kibana_port: \"5601\"\n\n\n\n  roles:\n    - { role: commons,                              tags: [ 'commons' ]}\n    - { role: docker,                              tags: [ 'docker' ]}\n    - { role: user,                                 tags: [ 'user'       ] }\n    - { role: directory,                            tags: [ 'directory'] }\n    - { role: kibana-docker,                            tags: [ 'kibana-docker'] }\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_008_kibana_docker/playbooks/roles/commons/ReadMe.md",
    "content": "## Role Usage Example\n\n- Check if playbook exists\n```bash\n$ cd ../../; ls playbook-install-commons.yaml\nplaybook-install-commons.yaml\n```\n\n- Run the playbook\n```bash\n$ ansible-playbook playbook-install-commons.yaml\n```\n\n- To install all packages\n```bash\n$ sudo ansible-playbook  playbook-install-commons.yaml --tags=\"all\"\n```\n\n- To install only vm-related packages\n```bash\n$ sudo ansible-playbook  playbook-install-commons.yaml --tags=\"vm-required\"\n```\n\n- To install only atom packages\n```bash\n$ sudo ansible-playbook  playbook-install-commons.yaml --tags=\"install-atom\"\n```\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_008_kibana_docker/playbooks/roles/commons/defaults/main.yml",
    "content": "## ATOM DEFAULT VARS\nVAR_PLATFORMIO_IDE_TERMINAL_VERSION: 2.9.0\nVAR_ATOM_REPOSITORY: ppa:webupd8team/atom\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_008_kibana_docker/playbooks/roles/commons/tasks/Debian/install-atom-ide.yml",
    "content": "- name: add required repositories\n  apt_repository:\n    repo: '{{ VAR_ATOM_REPOSITORY }}'\n    state: present\n  tags:\n    - all\n    - install-atom\n\n\n- name: Install required atom package\n  apt:\n    name={{ item }}\n    state=latest\n    update_cache=yes\n  loop:\n    - atom\n  tags:\n    - install-atom\n    - all\n\n- name: Install atom apm packages\n  shell: |\n    apm install \"{{ item }}\"\n  loop:\n#    - platformio-ide-terminal@{{ VAR_PLATFORMIO_IDE_TERMINAL_VERSION }}\n    - language-ansible\n    - language-terraform\n  tags:\n    - install-atom\n    - all\n\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_008_kibana_docker/playbooks/roles/commons/tasks/Debian/setup-Debian.yml",
    "content": "- name: Install required system packages\n  apt:\n    name={{ item }}\n    state=latest\n    update_cache=yes\n  loop:\n    - aptitude\n    - apt-transport-https\n    - jq\n    - ca-certificates\n    - curl\n    - software-properties-common\n    - python3-pip\n#    - python-pip\n    - virtualenv\n    - python3-setuptools\n    - vim\n  tags:\n    - all\n    - vm-required\n\n\n- name: install pip packages\n  pip: name=\"{{ item }}\" state=latest\n  loop:\n    - \"boto3\"\n    - \"docker\"\n    - \"docker-compose\"\n  environment:\n    ansible_python_interpreter: \"/usr/bin/python3\"\n  tags:\n    - all\n    - vm-required\n\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_008_kibana_docker/playbooks/roles/commons/tasks/Debian/setup-my-workstation.yml",
    "content": "#- name: add required repositories\n#  apt_repository:\n#    repo: 'ppa:snwh/pulp'\n#    state: present\n#  tags:\n#    - all\n#    - setup-my-workstation\n#\n#- name: Install required packages for workstation\n#  apt:\n#    name={{ item }}\n#    state=latest\n#    update_cache=yes\n#  loop:\n#    - gnome-tweak-tool\n##    - breeze-cursor-theme\n##    - paper-icon-theme\n##    - gnome-clocks\n##    - kazam\n##    - git\n##    - zsh\n##    - fonts-powerline\n#  tags:\n#    - all\n#    - setup-my-workstation\n\n- name: Making zsh changes\n  shell: |\n    sh -c \"$(wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)\"\n    chsh -s $(which zsh) root\n    cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc\n    source ~/.zshrc\n  tags:\n    - all\n    - setup-my-workstation\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_008_kibana_docker/playbooks/roles/commons/tasks/main.yml",
    "content": "\n- include_tasks: Debian/setup-Debian.yml\n  when: ansible_os_family == 'Debian'\n  tags:\n    - all\n    - vm-required\n\n\n- include_tasks: Debian/install-atom-ide.yml\n  tags:\n    - all\n    - install-atom\n\n- include_tasks: Debian/setup-my-workstation.yml\n  tags:\n    - all\n    - setup-my-workstation\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_008_kibana_docker/playbooks/roles/directory/ReadMe.md",
    "content": "## Role Usage Example\n\n- Check if playbook exists\n```bash\n$ cd ../../; ls playbook-create-directory.yaml\nplaybook-create-directory.yaml\n```\n\n- Run the playbook\n```bash\n$ ansible-playbook playbook-create-directory.yaml\n```\n\n- Run the playbook with required tags\n```bash\n$ ansible-playbook playbook-create-directory.yaml --tags=\"set-user,create-dir\"\n```"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_008_kibana_docker/playbooks/roles/directory/defaults/main.yml",
    "content": "---\nuser: ubuntu\ngroup: ubuntu\n\n\n\n\n\n\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_008_kibana_docker/playbooks/roles/directory/tasks/configure.yml",
    "content": "---\n\n- name: create dirs\n  file:\n    path: \"{{ item|safe|trim }}\"\n    state: directory\n    owner: \"{{ user }}\"\n    group: \"{{ group }}\"\n    mode: 0777\n    recurse: yes\n  with_items: \"{{ var_list_dirs }}\"\n  tags:\n    - create-dir\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_008_kibana_docker/playbooks/roles/directory/tasks/main.yml",
    "content": "---\n- import_tasks: configure.yml"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_008_kibana_docker/playbooks/roles/docker/README.md",
    "content": "# Ansible Role: Docker\n\n\nAn Ansible Role that installs [Docker](https://www.docker.com) on Linux.\n\n## Requirements\n\nNone.\n\n## Role Variables\n\nAvailable variables are listed below, along with default values (see `defaults/main.yml`):\n\n    # Edition can be one of: 'ce' (Community Edition) or 'ee' (Enterprise Edition).\n    docker_edition: 'ce'\n    docker_package: \"docker-{{ docker_edition }}\"\n    docker_package_state: present\n\nThe `docker_edition` should be either `ce` (Community Edition) or `ee` (Enterprise Edition). You can also specify a specific version of Docker to install using the distribution-specific format: Red Hat/CentOS: `docker-{{ docker_edition }}-<VERSION>`; Debian/Ubuntu: `docker-{{ docker_edition }}=<VERSION>`.\n\nYou can control whether the package is installed, uninstalled, or at the latest version by setting `docker_package_state` to `present`, `absent`, or `latest`, respectively. Note that the Docker daemon will be automatically restarted if the Docker package is updated. This is a side effect of flushing all handlers (running any of the handlers that have been notified by this and any other role up to this point in the play).\n\n    docker_service_state: started\n    docker_service_enabled: true\n    docker_restart_handler_state: restarted\n\nVariables to control the state of the `docker` service, and whether it should start on boot. If you're installing Docker inside a Docker container without systemd or sysvinit, you should set these to `stopped` and set the enabled variable to `no`.\n\n    docker_install_compose: true\n    docker_compose_version: \"1.25.4\"\n    docker_compose_path: /usr/local/bin/docker-compose\n\nDocker Compose installation options.\n\n    docker_apt_release_channel: stable\n    docker_apt_arch: amd64\n    docker_apt_repository: \"deb [arch={{ docker_apt_arch }}] https://download.docker.com/linux/{{ ansible_distribution | lower }} {{ ansible_distribution_release }} {{ docker_apt_release_channel }}\"\n    docker_apt_ignore_key_error: True\n    docker_apt_gpg_key: https://download.docker.com/linux/{{ ansible_distribution | lower }}/gpg\n\n(Used only for Debian/Ubuntu.) You can switch the channel to `edge` if you want to use the Edge release.\n\nYou can change `docker_apt_gpg_key` to a different url if you are behind a firewall or provide a trustworthy mirror.\nUsually in combination with changing `docker_apt_repository` as well.\n\n    docker_yum_repo_url: https://download.docker.com/linux/centos/docker-{{ docker_edition }}.repo\n    docker_yum_repo_enable_edge: '0'\n    docker_yum_repo_enable_test: '0'\n    docker_yum_gpg_key: https://download.docker.com/linux/centos/gpg\n\n(Used only for RedHat/CentOS.) You can enable the Edge or Test repo by setting the respective vars to `1`.\n\nYou can change `docker_yum_gpg_key` to a different url if you are behind a firewall or provide a trustworthy mirror.\nUsually in combination with changing `docker_yum_repository` as well.\n\n    docker_users:\n      - user1\n      - user2\n\nA list of system users to be added to the `docker` group (so they can use Docker on the server).\n\n\n\n## Dependencies\n\nNone.\n\n## Example Playbook\n\n```yaml\n- hosts: all\n  roles:\n    - docker\n```\n\n## Role Usage Example\n\n- Check if playbook exists\n```bash\n$ cd ../../; ls playbook-install-docker_docker-compose.yaml\nplaybook-install-docker_docker-compose.yaml\n```\n\n- Run the playbook\n```bash\n$ ansible-playbook playbook-install-docker_docker-compose.yaml\n```\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_008_kibana_docker/playbooks/roles/docker/defaults/main.yml",
    "content": "---\n# Edition can be one of: 'ce' (Community Edition) or 'ee' (Enterprise Edition).\ndocker_edition: 'ce'\ndocker_package: \"docker-{{ docker_edition }}\"\ndocker_package_state: present\n\n# Service options.\ndocker_service_state: started\ndocker_service_enabled: true\ndocker_restart_handler_state: restarted\n\n# Docker Compose options.\ndocker_install_compose: true\ndocker_compose_version: \"1.25.5\"\ndocker_compose_path: /usr/local/bin/docker-compose\n\n# Used only for Debian/Ubuntu. Switch 'stable' to 'edge' if needed.\ndocker_apt_release_channel: stable\ndocker_apt_arch: amd64\ndocker_apt_repository: \"deb [arch={{ docker_apt_arch }}] https://download.docker.com/linux/{{ ansible_distribution | lower }} {{ ansible_distribution_release }} {{ docker_apt_release_channel }}\"\ndocker_apt_ignore_key_error: true\ndocker_apt_gpg_key: https://download.docker.com/linux/{{ ansible_distribution | lower }}/gpg\n\n# Used only for RedHat/CentOS/Fedora.\ndocker_yum_repo_url: https://download.docker.com/linux/{{ (ansible_distribution == \"Fedora\") | ternary(\"fedora\",\"centos\") }}/docker-{{ docker_edition }}.repo\ndocker_yum_repo_enable_edge: '0'\ndocker_yum_repo_enable_test: '0'\ndocker_yum_gpg_key: https://download.docker.com/linux/centos/gpg\n\n# A list of users who will be added to the docker group.\ndocker_users: []\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_008_kibana_docker/playbooks/roles/docker/handlers/main.yml",
    "content": "---\n- name: restart docker\n  service: \"name=docker state={{ docker_restart_handler_state }}\"\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_008_kibana_docker/playbooks/roles/docker/tasks/docker-compose.yml",
    "content": "---\n- name: Check current docker-compose version.\n  command: docker-compose --version\n  register: docker_compose_current_version\n  changed_when: false\n  failed_when: false\n\n- name: Delete existing docker-compose version if it's different.\n  file:\n    path: \"{{ docker_compose_path }}\"\n    state: absent\n  when: >\n    docker_compose_current_version.stdout is defined\n    and docker_compose_version not in docker_compose_current_version.stdout\n\n- name: Install Docker Compose (if configured).\n  get_url:\n    url: https://github.com/docker/compose/releases/download/{{ docker_compose_version }}/docker-compose-Linux-x86_64\n    dest: \"{{ docker_compose_path }}\"\n    mode: 0755\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_008_kibana_docker/playbooks/roles/docker/tasks/docker-users.yml",
    "content": "---\n- name: Ensure docker users are added to the docker group.\n  user:\n    name: \"{{ item }}\"\n    groups: docker\n    append: true\n  with_items: \"{{ docker_users }}\"\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_008_kibana_docker/playbooks/roles/docker/tasks/main.yml",
    "content": "---\n- include_tasks: setup-RedHat.yml\n  when: ansible_os_family == 'RedHat'\n\n- include_tasks: setup-Debian.yml\n  when: ansible_os_family == 'Debian'\n\n- name: Install Docker.\n  package:\n    name: \"{{ docker_package }}\"\n    state: \"{{ docker_package_state }}\"\n  notify: restart docker\n\n- name: Ensure Docker is started and enabled at boot.\n  service:\n    name: docker\n    state: \"{{ docker_service_state }}\"\n    enabled: \"{{ docker_service_enabled }}\"\n\n- name: Ensure handlers are notified now to avoid firewall conflicts.\n  meta: flush_handlers\n\n- include_tasks: docker-compose.yml\n  when: docker_install_compose | bool\n\n- include_tasks: docker-users.yml\n  when: docker_users | length > 0\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_008_kibana_docker/playbooks/roles/docker/tasks/setup-Debian.yml",
    "content": "---\n- name: Ensure old versions of Docker are not installed.\n  package:\n    name:\n      - docker\n      - docker-engine\n    state: absent\n\n- name: Ensure dependencies are installed.\n  apt:\n    name:\n      - apt-transport-https\n      - ca-certificates\n      - gnupg2\n    state: present\n\n- name: Add Docker apt key.\n  apt_key:\n    url: \"{{ docker_apt_gpg_key }}\"\n    id: 9DC858229FC7DD38854AE2D88D81803C0EBFCD88\n    state: present\n  register: add_repository_key\n  ignore_errors: \"{{ docker_apt_ignore_key_error }}\"\n\n- name: Ensure curl is present (on older systems without SNI).\n  package: name=curl state=present\n  when: add_repository_key is failed\n\n- name: Add Docker apt key (alternative for older systems without SNI).\n  shell: >\n    curl -sSL {{ docker_apt_gpg_key }} | sudo apt-key add -\n  args:\n    warn: false\n  when: add_repository_key is failed\n\n- name: Add Docker repository.\n  apt_repository:\n    repo: \"{{ docker_apt_repository }}\"\n    state: present\n    update_cache: true\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_008_kibana_docker/playbooks/roles/docker/tasks/setup-RedHat.yml",
    "content": "---\n- name: Ensure old versions of Docker are not installed.\n  package:\n    name:\n      - docker\n      - docker-common\n      - docker-engine\n    state: absent\n\n- name: Add Docker GPG key.\n  rpm_key:\n    key: \"{{ docker_yum_gpg_key }}\"\n    state: present\n\n- name: Add Docker repository.\n  get_url:\n    url: \"{{ docker_yum_repo_url }}\"\n    dest: '/etc/yum.repos.d/docker-{{ docker_edition }}.repo'\n    owner: root\n    group: root\n    mode: 0644\n\n- name: Configure Docker Edge repo.\n  ini_file:\n    dest: '/etc/yum.repos.d/docker-{{ docker_edition }}.repo'\n    section: 'docker-{{ docker_edition }}-edge'\n    option: enabled\n    value: '{{ docker_yum_repo_enable_edge }}'\n\n- name: Configure Docker Test repo.\n  ini_file:\n    dest: '/etc/yum.repos.d/docker-{{ docker_edition }}.repo'\n    section: 'docker-{{ docker_edition }}-test'\n    option: enabled\n    value: '{{ docker_yum_repo_enable_test }}'\n\n- name: Install containerd separately (CentOS 8).\n  package:\n    name: https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm\n    state: present\n  when: ansible_distribution_major_version | int == 8\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_008_kibana_docker/playbooks/roles/kibana-docker/ReadMe.md",
    "content": "## To install docker-kibana\n\n[Docs](https://www.elastic.co/guide/en/elastic-stack-get-started/current/get-started-docker.html)\n\n[elastic-search](https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html)\n\n## To install docker-kibana using docker-compose on ubuntu 16.04 LTS\n\n- Ensure that elastic-search-cluster is installed already and accessible. You can use the [elastic-search-cluster](../elastic-search-cluster-docker)\n  for the same.\n\n- Check if playbook exists\n```bash\n$ cd ../../; ls playbook-install-kibana-docker.yaml\nplaybook-install-kibana-docker.yaml\n```\n\n- Run the playbook\n```bash\n$ ansible-playbook playbook-install-kibana-docker.yaml --tags=\"vm-required,docker,set-user,create-dir,kibana\" -v\n```\n\n\n- Open the port 5601 in GCP (or any other cloud) where the kibana is running\n\n- Now access the kibana dashboard on the console. In my case it was at [http://23.236.48.129:5601/app/kibana](http://23.236.48.129:5601/app/kibana) :)"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_008_kibana_docker/playbooks/roles/kibana-docker/defaults/main.yaml",
    "content": ""
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_008_kibana_docker/playbooks/roles/kibana-docker/handlers/main.yaml",
    "content": ""
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_008_kibana_docker/playbooks/roles/kibana-docker/tasks/install-kibana.yaml",
    "content": "---\n- name: create kibana configuration file\n  template:\n    dest=\"{{ kibana_config_dir }}/kibana.yml\"\n    owner=\"{{ user }}\"\n    group=\"{{ group }}\"\n    mode=0777\n    src=kibana.yml\n  tags:\n    - kibana\n\n- name: copy kibana docker-compose file\n  template:\n    dest=\"{{ kibana_opt_dir }}/docker-compose.yaml\"\n    owner=\"{{ user }}\"\n    group=\"{{ group }}\"\n    mode=0777\n    src=docker-compose.yaml\n  tags:\n    - kibana\n\n- name: start kibana docker-compose\n  become: true\n  docker_compose:\n    project_src: \"{{ kibana_opt_dir }}\"\n    state: present\n  tags:\n    - kibana\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_008_kibana_docker/playbooks/roles/kibana-docker/tasks/main.yaml",
    "content": "- name: install docker kibana\n  import_tasks: install-kibana.yaml\n  tags:\n    - kibana"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_008_kibana_docker/playbooks/roles/kibana-docker/templates/docker-compose.yaml",
    "content": "version: \"3.7\"\nservices:\n  kibana_service:\n    image: docker.elastic.co/kibana/kibana:{{ kibana_version }}\n    container_name: kibana_{{ env }}\n    environment:\n      ELASTICSEARCH_URL: {{elastic_search_url}}\n      ELASTICSEARCH_HOSTS: {{elastic_search_url}}\n    volumes:\n      - {{ kibana_log_dir }}:/var/log/kibana\n      - {{ kibana_config_dir }}/kibana.yml:/usr/share/kibana/config/kibana.yml\n      - {{ kibana_config_dir }}/opt-data:/opt-data\n#    ports:\n#      - {{ kibana_port }}:{{ kibana_port }}\n    network_mode: host\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_008_kibana_docker/playbooks/roles/kibana-docker/templates/kibana.yml",
    "content": "# https://www.elastic.co/guide/en/kibana/current/settings.html\nserver.port: 5601\nserver.host: \"0.0.0.0\"\nserver.name: \"kibana\"\n#logging.verbose: true\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_008_kibana_docker/playbooks/roles/user/ReadMe.md",
    "content": "## Role Usage Example\n\n- Check if playbook exists\n```bash\n$ cd ../../; ls playbook-create-user.yaml\nplaybook-create-user.yaml\n```\n\n- Run the playbook\n```bash\n$ ansible-playbook playbook-create-user.yaml\n```"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_008_kibana_docker/playbooks/roles/user/defaults/main.yml",
    "content": "---\nuser: ubuntu\ngroup: ubuntu\n\n\n\n\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_008_kibana_docker/playbooks/roles/user/tasks/main.yml",
    "content": "---\n- import_tasks: users.yml\n\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_008_kibana_docker/playbooks/roles/user/tasks/users.yml",
    "content": "---\n- name: setup group\n  group:\n    name: \"{{ group }}\"\n    system: no\n  tags:\n    - set-group\n    - set-user\n\n- name: setup user\n  user:\n    name: \"{{ user }}\"\n    system: no\n    group: \"{{ group }}\"\n  tags:\n    - set-user\n    - set-group\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_009_monit/playbooks/ansible.cfg",
    "content": "[defaults]\ninventory=inventory.yml\n\n\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_009_monit/playbooks/inventory.ini",
    "content": "[local]\n127.0.0.1\n\n[local:vars]\nansible_connection=local\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_009_monit/playbooks/inventory.yml",
    "content": "all:\n  hosts:\n    mail.example.com:\n  children:\n    local:\n      hosts:\n        127.0.0.1:\n          ansible_connection: local\n    gcp:\n      hosts:\n        35.226.68.74:\n    gcp2:\n      hosts:\n        35.238.67.36:\n    gcp1:\n      hosts:\n        droneio.gotdns.ch:\n    webservers:\n      hosts:\n        foo.example.com:\n        bar.example.com:\n    dbservers:\n      hosts:\n        one.example.com:\n        two.example.com:\n        three.example.com:\n    east:\n      hosts:\n        foo.example.com:\n        one.example.com:\n        two.example.com:\n    west:\n      hosts:\n        bar.example.com:\n        three.example.com:\n    prod:\n      hosts:\n        foo.example.com:\n        one.example.com:\n        two.example.com:\n    test:\n      hosts:\n        bar.example.com:\n        three.example.com:\n    jenkins:\n      hosts:\n        54.194.212.216"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_009_monit/playbooks/monit-install.yml",
    "content": "---\n- name: docker-install\n  hosts: gcp\n  user: codeaprendiz\n  become: true\n  roles:\n    - { role: monit,                   tags: [ 'monit'       ] }\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_009_monit/playbooks/roles/monit/ReadMe.md",
    "content": "## Role Usage Example\n\n- Check if playbook exists\n```bash\n$ cd ../../; ls playbook-install-monit.yaml\nplaybook-install-monit.yaml\n```\n\n- Run the playbook\n```bash\n$ ansible-playbook playbook-install-monit.yaml\n```"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_009_monit/playbooks/roles/monit/defaults/main.yml",
    "content": "---\nVAR_IS_REDHAT: \"False\"\nVAR_IS_DEBIAN: \"False\"\n\nVAR_REDHAT_CONFIG_DIR: \"/etc/monit/conf.d/\"\nVAR_REDHAT_LIB_DIR: \"/var/lib/monit/\"\n\n\nVAR_MONIT_VERSION: \"5.26.0\"\nVAR_INSTALL_SPECIFIC_VERSION: \"False\"\n\n\nVAR_DEBIAN_DIR_VAR_MONIT: \"/var/monit/\"\nVAR_DEBIAN_DIR_VAR_LIB_MONIT: \"/var/lib/monit/\"\nVAR_DEBIAN_DIR_ETC_MONIT: \"/etc/monit/\""
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_009_monit/playbooks/roles/monit/handlers/main.yml",
    "content": "---\n## monit Handlers\n\n- name: start monit\n  service: name=monit state=started enabled=yes\n\n- name: reload monit\n  service: name=monit state=reloaded enabled=yes\n\n- name: restart monit\n  service: name=monit state=restarted enabled=yes\n\n- name: stop monit\n  service: name=monit state=stopped enabled=yes\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_009_monit/playbooks/roles/monit/tasks/main.yml",
    "content": "---\n\n- name: Check if OS is supported\n  include_tasks: os-check.yml\n\n- name: Debian Install Tasks\n  include_tasks: pkg-debian/install-monit.yml\n  when: ansible_os_family == \"Debian\"\n  register: VAR_IS_DEBIAN\n\n- name: RedHat Install Tasks\n  include_tasks: pkg-redhat/install-monit.yml\n  when: ansible_os_family == \"RedHat\"\n  register: VAR_IS_REDHAT\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_009_monit/playbooks/roles/monit/tasks/os-check.yml",
    "content": "---\n- name: Fail if OS is not supported\n  fail:\n    msg: \"The Datadog Ansible role does not support your OS yet.\"\n  when: ansible_os_family not in [\"RedHat\", \"Debian\"]\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_009_monit/playbooks/roles/monit/tasks/pkg-debian/install-monit-specific.yml",
    "content": "---\n- name: get current monit version\n  shell: \"monit --version | grep version | awk '{print $5}' | cut -d'-' -f1\"\n  register: mv_rs_stdout\n  ignore_errors: True\n  tags:\n    - monit\n    - monit-version\n\n- name: set monit version\n  set_fact:\n    mv_rs: \"{{ mv_rs_stdout.stdout }}\"\n    cacheable: true\n  tags:\n    - monit\n    - monit-version\n\n- name: stop monit\n  service: name=monit state=stopped\n  ignore_errors: true\n  when: VAR_MONIT_VERSION != mv_rs\n\n- name: monit dirs\n  file: path={{ item }} state=directory\n  with_items:\n    - \"{{ VAR_DEBIAN_DIR_VAR_MONIT }}\"\n    - \"{{ VAR_DEBIAN_DIR_VAR_LIB_MONIT }}\"\n    - \"{{ VAR_DEBIAN_DIR_ETC_MONIT }}\"\n  tags:\n    - monit\n\n\n\n- name: download monit\n  get_url:\n    url: https://mmonit.com/monit/dist/binary/{{ VAR_MONIT_VERSION }}/monit-{{ VAR_MONIT_VERSION }}-linux-x64.tar.gz\n    dest: /var/monit\n    mode: 0755\n  when: VAR_MONIT_VERSION != mv_rs\n  tags:\n    - monit\n\n- name: unarchive the downloaded monit\n  unarchive:\n    src: /var/monit/monit-{{ VAR_MONIT_VERSION }}-linux-x64.tar.gz\n    dest: \"{{ VAR_DEBIAN_DIR_VAR_MONIT }}\"\n    copy: no\n  when: VAR_MONIT_VERSION != mv_rs\n  tags:\n    - monit\n\n- name: monit bin\n  command: cp -rfp {{ VAR_DEBIAN_DIR_VAR_MONIT }}/monit-{{ VAR_MONIT_VERSION }}/bin/monit /usr/bin/\n  when: VAR_MONIT_VERSION != mv_rs\n  tags:\n    - monit\n\n- name: transfer monit config /etc/monit/monitrc\n  template:\n    src: monit/monitrc.conf\n    dest: \"{{ VAR_DEBIAN_DIR_ETC_MONIT }}/monitrc\"\n    mode: 0700\n  tags:\n    - monit\n\n\n\n- name: transfer monit id /var/lib/monit/id\n  template:\n    src: monit/monit.id\n    dest: \"{{  VAR_DEBIAN_DIR_VAR_LIB_MONIT }}/id\"\n    mode: 0700\n  tags:\n    - monit\n\n- name: transfer monit-config configuration\n  template:\n    src: \"{{ item }}\"\n    dest: \"{{ VAR_DEBIAN_DIR_ETC_MONIT }}/conf.d/{{ item | basename }}\"\n    mode: 0777\n  with_fileglob:\n    - templates/monit/conf.d/*.*\n  tags:\n    - monit\n    - monit-config\n\n- name: ensure monit reloaded\n  shell: /bin/true\n  ignore_errors: true\n  notify:\n    - reload monit\n  tags:\n    - reload-service\n\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_009_monit/playbooks/roles/monit/tasks/pkg-debian/install-monit.yml",
    "content": "\n- name: ensure monit installed in debian\n  apt: name={{ packages }} state=present\n  vars:\n    packages:\n      - monit\n  environment:\n    RUNLEVEL: 1\n  tags:\n    - monit\n\n\n- name: install specific version of monit\n  include_tasks: pkg-debian/install-monit-specific.yml\n  when: VAR_INSTALL_SPECIFIC_VERSION == \"True\""
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_009_monit/playbooks/roles/monit/tasks/pkg-redhat/install-monit.yaml",
    "content": "\n- name: Download EPEL Repo for Redhat OS\n  yum_repository:\n    name: epel\n    description: EPEL YUM repo\n    baseurl: https://download.fedoraproject.org/pub/epel/$releasever/$basearch/\n  environment:\n    RUNLEVEL: 1\n  tags:\n    - monit\n\n- name: ensure monit installed for Radhat OS\n  yum: name={{ packages }} state=present\n  vars:\n    packages:\n      - monit\n      - curl\n  tags:\n    - monit\n\n- name: /var/lib/monit/ dir\n  file: path={{ item }} state=directory\n  when: is_redhat == True\n  with_items:\n    - \"{{ VAR_REDHAT_CONFIG_DIR }}\"\n    - \"{{ VAR_REDHAT_LIB_DIR }}\"\n  tags:\n    - monit"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_009_monit/playbooks/roles/monit/templates/monit/conf.d/sshd.conf",
    "content": "#{{ ansible_managed }}\n{% if VAR_IS_DEBIAN == True %}\ncheck process sshd with pidfile /var/run/sshd.pid\n    alert monitagnet+sshd@gmail.com only on {timeout}\n    group sshd-tcp # sshd-tcp group\n    start program = \"/etc/init.d/ssh start\"\n    stop program  = \"/etc/init.d/ssh stop\"\n    if cpu > 60% for 2 cycles then alert\n    if cpu > 80% for 5 cycles then restart\n    if memory usage > 75% then alert\n    if memory usage > 90% then restart\n    if failed port 22 protocol ssh for 6 within 15 cycles then restart\n    if 5 restarts within 5 cycles then timeout\n    depends on sshd-tcp_bin\n    depends on sshd-tcp_init\n\n\ncheck file sshd-tcp_bin with path /usr/sbin/sshd\n   alert monitagnet+sshd@gmail.com but not on { action, instance }\n   group sshd-tcp\n   #if failed checksum then unmonitor\n   if failed permission 755 then unmonitor\n   if failed uid root then unmonitor\n   if failed gid root then unmonitor\n\n## Test the init scripts.\ncheck file sshd-tcp_init with path /etc/init.d/ssh\n   alert monitagnet+sshd@gmail.com but not on { action, instance }\n   group sshd-tcp\n   #if failed checksum then unmonitor\n   #if failed permission 755 then unmonitor\n   if failed uid root then unmonitor\n   if failed gid root then unmonitor\n{% endif %}\n\n{% if VAR_IS_REDHAT == True %}\ncheck process sshd with pidfile /var/run/sshd.pid\n    alert monitagnet+sshd@gmail.com only on {timeout}\n    group sshd-tcp # sshd-tcp group\n    start program = \"/bin/systemctl restart sshd start\"\n    stop program  = \"/bin/systemctl restart sshd stop\"\n    if cpu > 60% for 2 cycles then alert\n    if cpu > 80% for 5 cycles then restart\n    if memory usage > 75% then alert\n    if memory usage > 90% then restart\n    if failed port 22 protocol ssh for 6 within 15 cycles then restart\n    if 5 restarts within 5 cycles then timeout\n    depends on sshd-tcp_bin\n    depends on sshd-tcp_init\n\n\ncheck file sshd-tcp_bin with path /usr/sbin/sshd\n   alert monitagnet+sshd@gmail.com but not on { action, instance }\n   group sshd-tcp\n   #if failed checksum then unmonitor\n   if failed permission 755 then unmonitor\n   if failed uid root then unmonitor\n   if failed gid root then unmonitor\n\n## Test the init scripts.\ncheck file sshd-tcp_init with path /usr/lib/systemd/system/sshd.service\n   alert monitagnet+sshd@gmail.com but not on { action, instance }\n   group sshd-tcp\n   #if failed checksum then unmonitor\n   #if failed permission 755 then unmonitor\n   if failed uid root then unmonitor\n   if failed gid root then unmonitor\n{% endif %}\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_009_monit/playbooks/roles/monit/templates/monit/conf.d/system.conf",
    "content": "#{{ ansible_managed }}\n\ncheck system\n  alert monitagnet+system@gmail.com but not on { action, instance }\n\n  if loadavg (5min) > 30 for 4 within 15 cycles then alert\n  if loadavg (15min) > 25 for 5 within 15 cycles then alert\n  if loadavg (15min) > 15 for 6 within 15 cycles then alert\n#\n  if memory usage > 80% for 4 within 15 cycles then alert\n  if memory usage > 70% for 5 within 15 cycles then alert\n  if memory usage > 60% for 6 within 15 cycles then alert\n#\n  if cpu usage (system) > 80% for 4 within 15 cycles then alert\n  if cpu usage (system) > 60% for 5 within 15 cycles then alert\n  if cpu usage (system) > 40% for 6 within 15 cycles then alert\n#\n  if cpu usage (user) > 80% for 4 within 15 cycles then alert\n  if cpu usage (user) > 60% for 5 within 15 cycles then alert\n  if cpu usage (user) > 40% for 6 within 15 cycles then alert\n#\n  if cpu usage (wait) > 80% for 4 within 15 cycles then alert\n  if cpu usage (wait) > 60% for 5 within 15 cycles then alert\n  if cpu usage (wait) > 40% for 6 within 15 cycles then alert\n\n# no usage\n  if memory usage < 3% for 30 cycles then alert\n  #if cpu < 0.2% for 30 cycles then alert\n\n  group os\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_009_monit/playbooks/roles/monit/templates/monit/monit.id",
    "content": "{{ ansible_default_ipv4.address | hash('md5') }}\n"
  },
  {
    "path": "home/infrastructure_as_code/ansible/taskset_ansible_infrastructure_as_code/task_009_monit/playbooks/roles/monit/templates/monit/monitrc.conf",
    "content": "###############################################################################\n## Monit control file\n###############################################################################\n# {{ ansible_managed }}\n##\n## Comments begin with a '#' and extend through the end of the line. Keywords\n## are case insensitive. All path's MUST BE FULLY QUALIFIED, starting with '/'.\n##\n## Below you will find examples of some frequently used statements. For\n## information about the control file, a complete list of statements and\n## options please have a look in the monit manual.\n##\n##\n###############################################################################\n## Global section\n###############################################################################\n##\n## Start monit in the background (run as a daemon):\n#\nset daemon  30           # check services at 2-minute intervals\n    with start delay 30  # optional: delay the first check by 4-minutes\n#                           # (by default check immediately after monit start)\n#\n#\n## Set syslog logging with the 'daemon' facility. If the FACILITY option is\n## omitted, monit will use 'user' facility by default. If you want to log to\n## a stand alone log file instead, specify the path to a log file\n#\nset logfile /var/log/monit.log\nset idfile /var/lib/monit/id\nset statefile /var/lib/monit/state\n\n#\n#\n### Set the location of monit id file which saves the unique id specific for\n### given monit. The id is generated and stored on first monit start.\n### By default the file is placed in $HOME/.monit.id.\n#\n# set idfile /var/.monit.id\n#\n### Set the location of monit state file which saves the monitoring state\n### on each cycle. By default the file is placed in $HOME/.monit.state. If\n### state file is stored on persistent filesystem, monit will recover the\n### monitoring state across reboots. If it is on temporary filesystem, the\n### state will be lost on reboot.\n#\n# set statefile /var/.monit.state\n#\n## Set the list of mail servers for alert delivery. Multiple servers may be\n## specified using comma separator. By default monit uses port 25 - this\n## is possible to override with the PORT option.\n#\n#set mailserver SMTP.MAILHOSTER.COM port 587         # primary mailserver\n#     username \"LoginUsername\" password \"LoginPassword\"\n#     using tlsv12\n#     with timeout 30 seconds\n#\n# set mailserver email-smtp.eu-west-1.amazonaws.com port 587\n#    username \"AKIAIVKHCRRONY2DNIPQ\" password \"Ar6iqnv4fU/5Sq7iJpAMj7sDHNPZAQH7Zmi/A1eRwZ+b\"\n#    using ssl\n\nset mailserver smtp.gmail.com port 587\n    username \"monitagent@gmail.com\"\n    password \"Monit.Agent.!@\"\n    using tlsv1 with timeout 30 seconds\n#\n## By default monit will drop alert events if no mail servers are available.\n## If you want to keep the alerts for a later delivery retry, you can use the\n## EVENTQUEUE statement. The base directory where undelivered alerts will be\n## stored is specified by the BASEDIR option. You can limit the maximal queue\n## size using the SLOTS option (if omitted, the queue is limited by space\n## available in the back end filesystem).\n#\n# set eventqueue\n#     basedir /var/monit  # set the base directory where events will be stored\n#     slots 100           # optionaly limit the queue size\n#\n#\n\nset eventqueue\n      basedir /var/lib/monit/events # set the base directory where events will be stored\n      slots 100                     # optionally limit the queue size\n## Send status and events to M/Monit (Monit central management: for more\n## informations about M/Monit see http://www.tildeslash.com/mmonit).\n#\n# set mmonit http://monit:monit@192.168.1.10:8080/collector\nset ssl {\n    verify: disable\n    selfsigned: allow\n}\n\n#\n#\n## Monit by default uses the following alert mail format:\n##\n## --8<--\n## From: monit@$HOST                         # sender\n## Subject: monit alert --  $EVENT $SERVICE  # subject\n##\n## $EVENT Service $SERVICE                   #\n##                                           #\n## \tDate:        $DATE                   #\n## \tAction:      $ACTION                 #\n## \tHost:        $HOST                   # body\n## \tDescription: $DESCRIPTION            #\n##                                           #\n## Your faithful employee,                   #\n## monit                                     #\n## --8<--\n##\n## You can override this message format or parts of it, such as subject\n## or sender using the MAIL-FORMAT statement. Macros such as $DATE, etc.\n## are expanded at runtime. For example, to override the sender:\n\nset mail-format {\nfrom: monitagent@gmail.com\nsubject: $HOST -- $SERVICE $EVENT\nmessage: $EVENT Service $SERVICE\nDate:        $DATE\nAction:      $ACTION\nHost:        $HOST\nDescription: $DESCRIPTION\n}\n\n#\n## You can set alert recipients here whom will receive alerts if/when a\n## service defined in this file has errors. Alerts may be restricted on\n## events by using a filter as in the second example below.\n#\n\n#set alert accelyaankit@gmail.com { nonexist, timeout, resource, icmp, connection } with reminder on 10 cycle\n#set alert accelyaankit@gmail.com on { checksum, permission, uid, gid } with reminder on 10 cycle\n#set alert accelyaankit@gmail.com with reminder on 10 cycle\nset alert accelyaankit@gmail.com but not on { action, instance }\n\n\n# set alert manager@foo.bar only on { timeout }  # receive just service-\n#                                                # timeout alert\n#\n#\n## Monit has an embedded web server which can be used to view status of\n## services monitored, the current configuration, actual services parameters\n## and manage services from a web interface.\n#\n#     allow @monit           # allow users of group 'monit' to connect (rw)\n#     allow @users readonly  # allow users of group 'users' to connect readonly\n#\n#\nset httpd port 2812 and\n   use address {{ ansible_default_ipv4.address }}  # only accept connection from localhost\n   allow 0.0.0.0/0.0.0.0                           # allow localhost to connect to the server and\n   allow monituser:moniDd_t1_3ASDasd               # require user 'admin' with password 'monit'\n\n###############################################################################\n## Includes\n###############################################################################\n##\n## It is possible to include additional configuration parts from other files or\n## directories.\n#\n#  include /etc/monit.d/*\ninclude /etc/monit/conf.d/*.conf\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/README.md",
    "content": "# taskset_aws_terraform_infrastructure_as_code\n\n> [Auto](https://github.com/codeaprendiz/learn_fullstack/blob/main/home/php/intermediate/taskset_intermediate_php/task_004_createGlobalMarkdownTable/generate-readme.php) generated ReadMe. Number of tasks: 31\n\n| Task     | Description                                                                                                                                                                             |\n|----------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| task_000 | [task_000_initialization_setup](taskset_aws_terraform_infrastructure_as_code/task_000_initialization_setup)                                                                             |\n| task_001 | [task_001_vars_provider_ec2_dataSources](taskset_aws_terraform_infrastructure_as_code/task_001_vars_provider_ec2_dataSources)                                                           |\n| task_002 | [task_002_defaultVPC_sbnt_sg_kp_ec2](taskset_aws_terraform_infrastructure_as_code/task_002_defaultVPC_sbnt_sg_kp_ec2)                                                                   |\n| task_003 | [task_003_defaultVPC_kp_sbnt_sg_ec2_script](taskset_aws_terraform_infrastructure_as_code/task_003_defaultVPC_kp_sbnt_sg_ec2_script)                                                     |\n| task_004 | [task_004_vars_provider_ec2_output](taskset_aws_terraform_infrastructure_as_code/task_004_vars_provider_ec2_output)                                                                     |\n| task_005 | [task_005_vars_provider_ec2_remoteStateInS3](taskset_aws_terraform_infrastructure_as_code/task_005_vars_provider_ec2_remoteStateInS3)                                                   |\n| task_006 | [task_006_defaultVPC_defaultSbnt_modules_kp](taskset_aws_terraform_infrastructure_as_code/task_006_defaultVPC_defaultSbnt_modules_kp)                                                   |\n| task_007 | [task_007_customVPC_igw_sbnt_rt_sg_kp_ec2](taskset_aws_terraform_infrastructure_as_code/task_007_customVPC_igw_sbnt_rt_sg_kp_ec2)                                                       |\n| task_008 | [task_008_customVPC_3PriSbnts_3PubSbnts_nat_igw_rt](taskset_aws_terraform_infrastructure_as_code/task_008_customVPC_3PriSbnts_3PubSbnts_nat_igw_rt)                                     |\n| task_009 | [task_009_customVPC_3PriSbnts_3PubSbnts_nat_igw_rt_ec2_ebs](taskset_aws_terraform_infrastructure_as_code/task_009_customVPC_3PriSbnts_3PubSbnts_nat_igw_rt_ec2_ebs)                     |\n| task_010 | [task_010_customVPC_3PriSbnts_3PubSbnts_nat_igw_rt_ec2_ebs_withMount](taskset_aws_terraform_infrastructure_as_code/task_010_customVPC_3PriSbnts_3PubSbnts_nat_igw_rt_ec2_ebs_withMount) |\n| task_011 | [task_011_route53](taskset_aws_terraform_infrastructure_as_code/task_011_route53)                                                                                                       |\n| task_012 | [task_012_rds_vpc_ec2](taskset_aws_terraform_infrastructure_as_code/task_012_rds_vpc_ec2)                                                                                               |\n| task_013 | [task_013_IAM](taskset_aws_terraform_infrastructure_as_code/task_013_IAM)                                                                                                               |\n| task_014 | [task_014_IAM_roles_s3_upload_to_s3](taskset_aws_terraform_infrastructure_as_code/task_014_IAM_roles_s3_upload_to_s3)                                                                   |\n| task_015 | [task_015_autoscaling_cloudwatchAlarm_ec2_launchConfiguration](taskset_aws_terraform_infrastructure_as_code/task_015_autoscaling_cloudwatchAlarm_ec2_launchConfiguration)               |\n| task_016 | [task_016_ELB_autoscaling](taskset_aws_terraform_infrastructure_as_code/task_016_ELB_autoscaling)                                                                                       |\n| task_017 | [task_017_Elastic_Beanstalk](taskset_aws_terraform_infrastructure_as_code/task_017_Elastic_Beanstalk)                                                                                   |\n| task_018 | [task_018_create_ECR_repo](taskset_aws_terraform_infrastructure_as_code/task_018_create_ECR_repo)                                                                                       |\n| task_019 | [task_019_ECS](taskset_aws_terraform_infrastructure_as_code/task_019_ECS)                                                                                                               |\n| task_020 | [task_020_s3_iam_using_modules](taskset_aws_terraform_infrastructure_as_code/task_020_s3_iam_using_modules)                                                                             |\n| task_021 | [task_021_k8s_cluster_typhoon](taskset_aws_terraform_infrastructure_as_code/task_021_k8s_cluster_typhoon)                                                                               |\n| task_022 | [task_022_route53_ec2](taskset_aws_terraform_infrastructure_as_code/task_022_route53_ec2)                                                                                               |\n| task_023 | [task_023_terragrunt_ec2](taskset_aws_terraform_infrastructure_as_code/task_023_terragrunt_ec2)                                                                                         |\n| task_024 | [task_024_certificate_manager](taskset_aws_terraform_infrastructure_as_code/task_024_certificate_manager)                                                                               |\n| task_025 | [task_025_terragrunt_iam_user](taskset_aws_terraform_infrastructure_as_code/task_025_terragrunt_iam_user)                                                                               |\n| task_026 | [task_026_terragrunt_s3_bucket](taskset_aws_terraform_infrastructure_as_code/task_026_terragrunt_s3_bucket)                                                                             |\n| task_027 | [task_027_terragrunt_cdn](taskset_aws_terraform_infrastructure_as_code/task_027_terragrunt_cdn)                                                                                         |\n| task_029 | [task_029_ec2_jenkins_instance_and_slave_instance](taskset_aws_terraform_infrastructure_as_code/task_029_ec2_jenkins_instance_and_slave_instance)                                       |\n| task_030 | [task_030_creating_eks](taskset_aws_terraform_infrastructure_as_code/task_030_creating_eks)                                                                                             |\n| task_031 | [task_031_creating_eks_spot](taskset_aws_terraform_infrastructure_as_code/task_031_creating_eks_spot)                                                                                   |\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/ReadMe-static.md",
    "content": "# terraform-kitchen\n\n### Frequently visited\n- [Amazon EC2 AMI Locator](http://cloud-images.ubuntu.com/locator/ec2/)\n\n### Tutorial Links\n\n[learn.hashicorp.com/terraform](https://learn.hashicorp.com/terraform)\n[tutorials/terraform/sensitive-variables](https://learn.hashicorp.com/tutorials/terraform/sensitive-variables)\n\n\n\n### Terraform Doc References\n\n- [data sources](https://www.terraform.io/docs/configuration/data-sources.html)\n    - [aws_ami](https://www.terraform.io/docs/providers/aws/d/ami.html)\n    - [template_cloudinit_config](https://www.terraform.io/docs/providers/template/d/cloudinit_config.html)\n    - [template_file](https://www.terraform.io/docs/providers/template/d/file.html)\n- [provider](https://www.terraform.io/docs/providers/index.html)\n    - [aws](https://www.terraform.io/docs/providers/aws/index.html)\n- [modules](https://www.terraform.io/docs/configuration/modules.html)\n- [resources](https://www.terraform.io/docs/configuration/resources.html)\n    - [aws_autoscaling_group](https://www.terraform.io/docs/providers/aws/r/autoscaling_group.html)\n    - [aws_autoscaling_policy](https://www.terraform.io/docs/providers/aws/r/autoscaling_policy.html)\n    - [aws_autoscaling_notification](https://www.terraform.io/docs/providers/aws/r/autoscaling_notification.html)\n    - [aws_cloudwatch_metric_alarm](https://www.terraform.io/docs/providers/aws/r/cloudwatch_metric_alarm.html)\n    - [aws_db_instance](https://www.terraform.io/docs/providers/aws/r/db_instance.html)\n    - [aws_db_parameter_group](https://www.terraform.io/docs/providers/aws/r/db_parameter_group.html)\n    - [aws_db_subnet_group](https://www.terraform.io/docs/providers/aws/r/db_subnet_group.html)\n    - [aws_default_subnet](https://www.terraform.io/docs/providers/aws/r/default_subnet.html)\n    - [aws_default_vpc](https://www.terraform.io/docs/providers/aws/r/default_vpc.html)\n    - [aws_ebs_volume](https://www.terraform.io/docs/providers/aws/r/ebs_volume.html)\n    - [aws_eip](https://www.terraform.io/docs/providers/aws/r/eip.html)\n    - [aws_iam_group](https://www.terraform.io/docs/providers/aws/r/iam_group.html)\n    - [aws_iam_group_membership](https://www.terraform.io/docs/providers/aws/r/iam_group_membership.html)\n    - [aws_iam_instance_profile](https://www.terraform.io/docs/providers/aws/r/iam_instance_profile.html)\n    - [aws_iam_policy_attachment](https://www.terraform.io/docs/providers/aws/r/iam_policy_attachment.html)\n    - [aws_iam_role](https://www.terraform.io/docs/providers/aws/r/iam_role.html)\n    - [aws_iam_role_policy](https://www.terraform.io/docs/providers/aws/r/iam_role_policy.html)\n    - [aws_iam_user](https://www.terraform.io/docs/providers/aws/r/iam_user.html)\n    - [aws_instance](https://www.terraform.io/docs/providers/aws/r/instance.html)\n    - [aws_internet_gateway](https://www.terraform.io/docs/providers/aws/r/internet_gateway.html)\n    - [aws_key_pair](https://www.terraform.io/docs/providers/aws/r/key_pair.html)\n    - [aws_launch_configuration](https://www.terraform.io/docs/providers/aws/r/launch_configuration.html)\n    - [aws_nat_gateway](https://www.terraform.io/docs/providers/aws/r/nat_gateway.html)\n    - [aws_route53_zone](https://www.terraform.io/docs/providers/aws/r/route53_zone.html)\n    - [aws_route53_record](https://www.terraform.io/docs/providers/aws/r/route53_record.html)\n    - [aws_route_table](https://www.terraform.io/docs/providers/aws/r/route_table.html)\n    - [aws_route_table_association](https://www.terraform.io/docs/providers/aws/r/route_table_association.html)\n    - [aws_security_group](https://www.terraform.io/docs/providers/aws/r/security_group.html)\n    - [aws_sns_topic](https://www.terraform.io/docs/providers/aws/r/sns_topic.html)\n    - [aws_subnet](https://www.terraform.io/docs/providers/aws/r/subnet.html)\n    - [aws_volume_attachment](https://www.terraform.io/docs/providers/aws/r/volume_attachment.html)\n    - [aws_vpc](https://www.terraform.io/docs/providers/aws/r/vpc.html)\n- variables\n    - [input variables](https://www.terraform.io/docs/configuration/variables.html)\n\n\n\n\n\n\n\n\n\n\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/credentials.txt.example",
    "content": "[personal]\naws_access_key_id = \"********************\"\naws_secret_access_key = \"******************\"\nregion = \"eu-west-1\""
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_000_initialization_setup/ReadMe.md",
    "content": "# Initialization Setup\n\n- Create a user `terraform` by navigating _Login to AWS_ ->  _IAM_ -> _Users_ -> _Add User_\n\n![](.images/Add_user_screen.png)\n\n- Create a group `terraform-administrators`\n\n![](.images/group_creation_screen.png)\n\n- Review screen\n\n![](.images/review_screen.png)\n\n- Download the `credentials.csv` containing `Access key ID` and `Secret access key`\n\n- These values can be used in the following ways\n\n    1) Export the values of `Access key ID` and `Secret access key` as showing below in your \n       current shell.\n        \n        ```bash\n        export AWS_ACCESS_KEY_ID=YOUR_ACCESS_KEY_ID\n        export AWS_SECRET_ACCESS_KEY=YOUR_SECRET_ACCESS_KEY\n        ```\n        \n        - Now you can run the `terrform` commands in the same shell session.\n        \n     2) Add these values to the file `terraform.tfvars` in project directory DEFINATELY ADD IT TO `.gitignore` \n        file. NEVER NEVER NEVER commit `terraform.tfvars` this file to git repository (as it contains you access\n        key id and secret access key)\n        \n        ```bash\n        $ cat terraform.tfvars           \n        AWS_ACCESS_KEY = \"YOUR_ACCESS_KEY_ID\"\n        AWS_SECRET_KEY = \"YOUR_SECRET_ACCESS_KEY\"      \n        ```\n        \n        - Now while running `terraform` commands you will have to pass this file as argument at the end like \n        shown below\n        ```bash\n        $ terraform apply -var-file=../../terraform.tfvars\n        ```\n        \n        \n# Configuring AWS CLI\n\n```bash\n$ aws configure                                \nAWS Access Key ID [None]: **********************\nAWS Secret Access Key [None]: ************************\nDefault region name [None]: us-east-1\nDefault output format [None]: \n```"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_001_vars_provider_ec2_dataSources/00-vars.tf",
    "content": "variable \"AWS_ACCESS_KEY\" {\n}\n\nvariable \"AWS_SECRET_KEY\" {\n}\n\nvariable \"AWS_REGION\" {\n  default = \"us-east-1\"\n}\n\nvariable \"instance_type\" {\n  description = \"type for aws EC2 instance\"\n  default = \"t2.micro\"\n}\n\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_001_vars_provider_ec2_dataSources/02-provider.tf",
    "content": "provider \"aws\" {\n  access_key = var.AWS_ACCESS_KEY\n  secret_key = var.AWS_SECRET_KEY\n  region     = var.AWS_REGION\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_001_vars_provider_ec2_dataSources/05-instance.tf",
    "content": "data \"aws_ami\" \"ubuntu\" {\n  most_recent = true\n\n  filter {\n    name   = \"name\"\n    values = [\"ubuntu/images/hvm-ssd/ubuntu-trusty-14.04-amd64-server-*\"]\n  }\n\n  filter {\n    name   = \"virtualization-type\"\n    values = [\"hvm\"]\n  }\n\n  owners = [\"099720109477\"] # Canonical\n}\n\nresource \"aws_instance\" \"web\" {\n  ami           = data.aws_ami.ubuntu.id\n  instance_type = \"t2.micro\"\n\n  tags = {\n    Name = \"HelloWorld\"\n  }\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_001_vars_provider_ec2_dataSources/ReadMe.md",
    "content": "## OBJECTIVE : \n- To create an EC2 instance using resource \n- To use the data source [aws_ami](https://www.terraform.io/docs/providers/aws/d/ami.html) to get the AMI ID\nof the instance we want to create\n\n\n\n## The following commands will be executed.\n\n- Initialization\n\n```bash\n$ terraform init -var-file=../../terraform.tfvars\n```\n\n- Planning\n\n```bash\n$ terraform plan -var-file=../../terraform.tfvars\n...\nPlan: 1 to add, 0 to change, 0 to destroy.\n...\n```\n\n- Apply\n```bash\n$ terraform apply -var-file=../../terraform.tfvars\n...\nEnter a value: yes\n...\nApply complete! Resources: 1 added, 0 changed, 0 destroyed.\n``` \n\n- Verifying the instance created by logging into the console\n\n![](.images/instance_details_screen.png)\n\n\n- Destroy\n```bash\n$ terraform destroy -var-file=../../terraform.tfvars\n...\n  Enter a value: yes\n...\nDestroy complete! Resources: 1 destroyed.\n```"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_001_vars_provider_ec2_dataSources/versions.tf",
    "content": "\nterraform {\n  required_version = \">= 0.12\"\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_002_defaultVPC_sbnt_sg_kp_ec2/00-var.tf",
    "content": "// from ENV\n\n\n\nvariable \"availability_zone\" {\n  description = \"availability zone to create subnet\"\n  default = \"us-east-2a\"\n}\nvariable \"public_key_path\" {\n  description = \"Public key path\"\n  default = \"~/.ssh/id_rsa.pub\"\n}\nvariable \"instance_ami\" {\n  description = \"AMI for aws EC2 instance\"\n  default = \"ami-0cf31d971a3ca20d6\"\n}\nvariable \"instance_type\" {\n  description = \"type for aws EC2 instance\"\n  default = \"t2.micro\"\n}\nvariable \"environment_tag\" {\n  description = \"Environment tag\"\n  default = \"Production\"\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_002_defaultVPC_sbnt_sg_kp_ec2/05-vpc.tf",
    "content": "\n\n//https://www.terraform.io/docs/providers/aws/r/default_vpc.html\n\nresource \"aws_default_vpc\" \"default\" {\n  tags = {\n    Name = \"Default VPC\"\n  }\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_002_defaultVPC_sbnt_sg_kp_ec2/15-subnet.tf",
    "content": "// https://www.terraform.io/docs/providers/aws/r/default_subnet.html\n\nresource \"aws_default_subnet\" \"default_az1\" {\n  availability_zone = var.availability_zone\n\n  tags = {\n    Name = \"Default subnet for us-east-2a\"\n  }\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_002_defaultVPC_sbnt_sg_kp_ec2/25-security-group.tf",
    "content": "// Once we have our networking setup ready, we need to create an EC2 instance in which we can SSH using port 22.\n// For this, we first need to create a security group which can be attached to our EC2 instance while creation.\n\nresource \"aws_security_group\" \"sg_22\" {\n  name = \"sg_22\"\n  vpc_id = aws_default_vpc.default.id\n  ingress {\n    from_port   = 22\n    to_port     = 22\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n  ingress {\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n  ingress {\n    from_port   = 80\n    to_port     = 80\n    protocol    = \"tcp\"\n\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n  egress {\n    from_port   = 0\n    to_port     = 0\n    protocol    = \"-1\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n  tags = {\n    Environment = var.environment_tag\n  }\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_002_defaultVPC_sbnt_sg_kp_ec2/30-keypair.tf",
    "content": "// Let’s create a key pair which we are going to use to SSH on our EC2\n\nresource \"aws_key_pair\" \"ec2key\" {\n  key_name   = \"publicKey\"\n  public_key = \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDLmviSRpF6tvGLpMExQZ94I9mqhVtINyjH1rEeDwSPB+1v00P608klF++uhRvREUyNID/i2w1cwjOi9H1isoZNoVaSKdiVIqEIp2HaIhTtKTo+NqVCdIeQXnwK2bS/OeIVScYn6YZjPAcWgMk0GH1q9zIn+sz1own3QxD4qysvoqN5bD9BxsDboLxKw803jJlcjRiSrdWbmEOoIXrEbv9t99ZxsYLIDIDZJskiAcvqKEywt+dRpvM/49c3pJ5JVluNNJypTObM2GI4piC1TcOL6xMgs+UsbDgEsHPYHXZnYENX/GGXYJcdDITCtMHap8O33EvOh5piIXHF6kQEgXDRCE61AEWnHQeGERJtTqlCiBAUUDNzAHt9UjZJVmioLJ+vLeW9M3KjUCh5MWxZ7hIJ7xvLxermNlRahzTlaGLhvkiyoaUyuh+qhpBIfCv7lioLaagv9jegc6AErMqDGFgPieJh479z+QqagPODwP0UB0jt07b7V/3csImEiy1aKY2wOQriXCkcAnSvKuAuiT2a2gOfPMJlzVd8hLrA2f5YuLWLm8p8rLXvkNSJ8YKNbQx1z5pII9R54YEOixjgp9bDNJL39ekrxlzLj72gpWg+AF+FFVNJ4gfZDjBSxUbkPhox7jhIV4DOCvc6W5uLkCXe62R9aNn1/Hkxcq99eoen1w== codeaprendiz@gmail.com\"\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_002_defaultVPC_sbnt_sg_kp_ec2/35-ec2-instance.tf",
    "content": "// Once everything is ready, let us start an EC2 instance within our public subnet with created key pair and security group.\n\ndata \"aws_ami\" \"ubuntu-bionic-latest\" {\n  most_recent = true\n\n  filter {\n    name = \"name\"\n    values = [\n      \"ubuntu/images/hvm-ssd/ubuntu-bionic-18.04-amd64-server-*\"\n    ]\n  }\n\n  filter {\n    name   = \"virtualization-type\"\n    values = [\"hvm\"]\n  }\n\n  owners = [\"099720109477\"] # Canonical\n}\n\n\n// Login with ubuntu@PUBLIC_IP\nresource \"aws_instance\" \"web\" {\n  ami           = data.aws_ami.ubuntu-bionic-latest.id\n  instance_type = var.instance_type\n  subnet_id = aws_default_subnet.default_az1.id\n  vpc_security_group_ids = [aws_security_group.sg_22.id]\n  key_name = aws_key_pair.ec2key.key_name\n\n  tags = {\n    Name = \"DroneCI\"\n  }\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_002_defaultVPC_sbnt_sg_kp_ec2/README.md",
    "content": "## OBJECTIVE : \n- To use the default VPC with attached internet gateway. \n- Use the default subnet.\n- Create security group (for ssh) and keypair (for ssh)\n- Start ubuntu instance and login into the instance.\n\n#### Before executing you should have created AWS_ACCESS_KEY_ID AND AWS_SECRET_ACCESS_KEY with administrative privileges.\n\n- Export the keys in your current shell by using following commands\n\n```bash\nexport AWS_ACCESS_KEY_ID=YOUR_ACCESS_KEY_ID\nexport AWS_SECRET_ACCESS_KEY=YOUR_SECRET_ACCESS_KEY\n```\n\n#### The following sequence of commands will be executed.\n> terraform init\n\n```bash\n$ terraform init\n```\n\n> terraform plan\n```bash\n$ terraform plan\nprovider.aws.region\n  The region where AWS operations will take place. Examples\n  are us-east-1, us-west-2, etc.\n\n  Enter a value: us-east-2\n.\n.\n.\nPlan: 5 to add, 0 to change, 0 to destroy.\n \n ------------------------------------------------------------------------\n```\n\n> terraform apply\n\n```bash\n$ terraform apply\n.\n.\n.\nApply complete! Resources: 5 added, 0 changed, 0 destroyed.\n```\n\n- Login into the instance\n```bash\n$ ssh ubuntu@3.12.166.210\n.\n.\n.\nubuntu@ip-172-31-7-16:~$ \n```"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_003_defaultVPC_kp_sbnt_sg_ec2_script/00-vars.tf",
    "content": "variable \"AWS_ACCESS_KEY\" {\n}\n\nvariable \"AWS_SECRET_KEY\" {\n}\n\nvariable \"AWS_REGION\" {\n  default = \"us-east-1\"\n}\n\nvariable \"availability_zone\" {\n  description = \"availability zone to create subnet\"\n  default     = \"us-east-1a\"\n}\n\nvariable \"instance_type\" {\n  description = \"type for aws EC2 instance\"\n  default     = \"t2.micro\"\n}\n\n\nvariable \"PATH_TO_PRIVATE_KEY\" {\n  description = \"Private key path\"\n  default     = \"~/.ssh/id_rsa\"\n}\n\nvariable \"PATH_TO_PUBLIC_KEY\" {\n  description = \"Public key path\"\n  default     = \"~/.ssh/id_rsa.pub\"\n}\n\n\nvariable \"INSTANCE_USERNAME\" {\n  default = \"ubuntu\"\n}\n\nvariable \"environment_tag\" {\n  description = \"Environment tag\"\n  default     = \"Development\"\n}\n\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_003_defaultVPC_kp_sbnt_sg_ec2_script/05-provider.tf",
    "content": "provider \"aws\" {\n  access_key = var.AWS_ACCESS_KEY\n  secret_key = var.AWS_SECRET_KEY\n  region     = var.AWS_REGION\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_003_defaultVPC_kp_sbnt_sg_ec2_script/07-vpc.tf",
    "content": "\n\n//https://www.terraform.io/docs/providers/aws/r/default_vpc.html\n\nresource \"aws_default_vpc\" \"default\" {\n  tags = {\n    Name = \"Default VPC\"\n  }\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_003_defaultVPC_kp_sbnt_sg_ec2_script/10-key-pair.tf",
    "content": "resource \"aws_key_pair\" \"mykey\" {\n  key_name   = \"mykey\"\n  public_key = file(var.PATH_TO_PUBLIC_KEY)\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_003_defaultVPC_kp_sbnt_sg_ec2_script/15-subnet.tf",
    "content": "// https://www.terraform.io/docs/providers/aws/r/default_subnet.html\n\nresource \"aws_default_subnet\" \"default_az1\" {\n  availability_zone = var.availability_zone\n\n  tags = {\n    Name = \"Default subnet for us-east-1a\"\n  }\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_003_defaultVPC_kp_sbnt_sg_ec2_script/20-security-group.tf",
    "content": "// Once we have our networking setup ready, we need to create an EC2 instance in which we can SSH using port 22.\n// For this, we first need to create a security group which can be attached to our EC2 instance while creation.\n\nresource \"aws_security_group\" \"sg_22\" {\n  name = \"sg_22\"\n  vpc_id = aws_default_vpc.default.id\n  ingress {\n    from_port   = 22\n    to_port     = 22\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n  ingress {\n    from_port   = 443\n    to_port     = 443\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n  ingress {\n    from_port   = 80\n    to_port     = 80\n    protocol    = \"tcp\"\n\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n  egress {\n    from_port   = 0\n    to_port     = 0\n    protocol    = \"-1\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n  tags = {\n    Environment = var.environment_tag\n  }\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_003_defaultVPC_kp_sbnt_sg_ec2_script/25-instance.tf",
    "content": "data \"aws_ami\" \"ubuntu\" {\n  most_recent = true\n\n  filter {\n    name   = \"name\"\n    values = [\"ubuntu/images/hvm-ssd/ubuntu-trusty-14.04-amd64-server-*\"]\n  }\n\n  filter {\n    name   = \"virtualization-type\"\n    values = [\"hvm\"]\n  }\n\n  owners = [\"099720109477\"] # Canonical\n}\n\nresource \"aws_instance\" \"web\" {\n  ami                    = data.aws_ami.ubuntu.id\n  instance_type          = \"t2.micro\"\n  key_name               = aws_key_pair.mykey.key_name\n  subnet_id              = aws_default_subnet.default_az1.id\n  vpc_security_group_ids = [aws_security_group.sg_22.id]\n  provisioner \"file\" {\n    source      = \"script.sh\"\n    destination = \"/tmp/script.sh\"\n  }\n\n  provisioner \"remote-exec\" {\n    inline = [\n      \"chmod +x /tmp/script.sh\",\n      \"sudo /tmp/script.sh\",\n    ]\n  }\n  connection {\n    host        = coalesce(self.public_ip, self.private_ip)\n    type        = \"ssh\"\n    user        = var.INSTANCE_USERNAME\n    private_key = file(var.PATH_TO_PRIVATE_KEY)\n  }\n  tags = {\n    Name = \"HelloWorld\"\n  }\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_003_defaultVPC_kp_sbnt_sg_ec2_script/ReadMe.md",
    "content": "## OBJECTIVE : \n- To use the default VPC with attached internet gateway. \n- Use the default subnet.\n- Create security group (for ssh, for http default port 80) and keypair (for ssh)\n- Start ubuntu instance and login into the instance.\n- Copy custom script `script.sh` to the instance and execute it\n- Install nginx via `script.sh` execution. Visit the public of instance and check if nginx is installed.\n\n\n### Initialization\n\n```bash\n$ terraform init                                    \n...\n```\n\n### Plan\n```bash\n$ terraform plan -var-file=../../terraform.tfvars\nRefreshing Terraform state in-memory prior to plan..\n...\nPlan: 5 to add, 0 to change, 0 to destroy.\n...\n```\n\n### Apply\n\n```bash\n$ terraform apply -var-file=../../terraform.tfvars\ndata.aws_ami.ubuntu: Refreshing state...\n...\n  Enter a value: yes\n...\naws_security_group.sg_22: Creation complete after 9s [id=sg-09aa504274998a975]\naws_instance.web: Creating...\n...\naws_instance.web: Still creating... [30s elapsed]\naws_instance.web: Provisioning with 'file'...\naws_instance.web: Still creating... [40s elapsed]\naws_instance.web: Provisioning with 'remote-exec'...\naws_instance.web (remote-exec): Connecting to remote host via SSH...\naws_instance.web (remote-exec):   Host: 3.82.139.227\naws_instance.web (remote-exec):   User: ubuntu\naws_instance.web (remote-exec):   Password: false\naws_instance.web (remote-exec):   Private key: true\naws_instance.web (remote-exec):   Certificate: false\naws_instance.web (remote-exec):   SSH Agent: true\naws_instance.web (remote-exec):   Checking Host Key: false\naws_instance.web (remote-exec): Connected!\naws_instance.web (remote-exec): 0% [Working]\n...\naws_instance.web (remote-exec): 100% [Connecting to security.ubuntu.com]\n...\naws_instance.web (remote-exec): The following extra packages will be installed:\naws_instance.web (remote-exec):   fontconfig-config fonts-dejavu-core libfontconfig1 libgd3 libjbig0\naws_instance.web (remote-exec):   libjpeg-turbo8 libjpeg8 libtiff5 libvpx1 libxpm4 libxslt1.1 nginx-common\naws_instance.web (remote-exec):   nginx-core\n...\nApply complete! Resources: 5 added, 0 changed, 0 destroyed.\n```\n\n### Login into console and Verifying\n\n- EC2 instance screen\n![](.ReadMe_images/ec2_details_screen.png)\n\n\n- Visiting the Public IP and check if nginx is running\n\n![](.ReadMe_images/nginx_on_browser.png)\n\n\n- Logging into the instance\n```bash\n$ ssh ubuntu@3.82.139.227  \n...\nubuntu@ip-172-31-82-175:~$\nubuntu@ip-172-31-82-175:~$ ps -ef | grep nginx\nroot      2143     1  0 21:24 ?        00:00:00 nginx: master process /usr/sbin/nginx\nwww-data  2144  2143  0 21:24 ?        00:00:00 nginx: worker process\nwww-data  2145  2143  0 21:24 ?        00:00:00 nginx: worker process\nwww-data  2146  2143  0 21:24 ?        00:00:00 nginx: worker process\nwww-data  2147  2143  0 21:24 ?        00:00:00 nginx: worker process\n```\n\n### Destroying resources\n```bash\n$ terraform destroy -var-file=../../terraform.tfvars\n...\nDestroy complete! Resources: 5 destroyed.\n```"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_003_defaultVPC_kp_sbnt_sg_ec2_script/script.sh",
    "content": "#!/bin/bash\n\n# sleep until instance is ready\nuntil [[ -f /var/lib/cloud/instance/boot-finished ]]; do\n  sleep 1\ndone\n\n# install nginx\napt-get update\napt-get -y install nginx\n\n# make sure nginx is started\nservice nginx start\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_003_defaultVPC_kp_sbnt_sg_ec2_script/versions.tf",
    "content": "\nterraform {\n  required_version = \">= 0.12\"\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_004_vars_provider_ec2_output/00-vars.tf",
    "content": "variable \"AWS_ACCESS_KEY\" {\n}\n\nvariable \"AWS_SECRET_KEY\" {\n}\n\nvariable \"AWS_REGION\" {\n  default = \"us-east-1\"\n}\n\nvariable \"instance_type\" {\n  description = \"type for aws EC2 instance\"\n  default = \"t2.micro\"\n}\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_004_vars_provider_ec2_output/05-provider.tf",
    "content": "provider \"aws\" {\n  access_key = var.AWS_ACCESS_KEY\n  secret_key = var.AWS_SECRET_KEY\n  region     = var.AWS_REGION\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_004_vars_provider_ec2_output/10-instance.tf",
    "content": "data \"aws_ami\" \"ubuntu\" {\n  most_recent = true\n\n  filter {\n    name   = \"name\"\n    values = [\"ubuntu/images/hvm-ssd/ubuntu-trusty-14.04-amd64-server-*\"]\n  }\n\n  filter {\n    name   = \"virtualization-type\"\n    values = [\"hvm\"]\n  }\n\n  owners = [\"099720109477\"] # Canonical\n}\n\nresource \"aws_instance\" \"web\" {\n  ami           = data.aws_ami.ubuntu.id\n  instance_type = \"t2.micro\"\n\n  provisioner \"local-exec\" {\n    command = \"echo ${aws_instance.web.private_ip} >> private_ips.txt\"\n  }\n  tags = {\n    Name = \"HelloWorld\"\n  }\n}\n\n\noutput \"ip\" {\n  value = aws_instance.web.public_ip\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_004_vars_provider_ec2_output/ReadMe.md",
    "content": "## OBJECTIVE : \n- To create an EC2 instance.\n- Saving the private IP of provisioned instance in local file `private_ips.txt`\n- 'Output' the public IP of the instance on the console\n\n\n\n## The following commands will be executed.\n\n- Initialization\n\n```bash\n$ terraform init -var-file=../../terraform.tfvars\n```\n\n- Planning\n\n```bash\n$ terraform plan -var-file=../../terraform.tfvars\n...\nPlan: 1 to add, 0 to change, 0 to destroy.\n...\n```\n\n- Apply\n```bash\n$ terraform apply -var-file=../../terraform.tfvars\n...\nEnter a value: yes\n...\naws_instance.web: Provisioning with 'local-exec'...\naws_instance.web (local-exec): Executing: [\"/bin/sh\" \"-c\" \"echo 172.31.84.47 >> private_ips.txt\"]\naws_instance.web: Creation complete after 32s [id=i-05cea08cdcea5a334]\n\n...\nApply complete! Resources: 1 added, 0 changed, 0 destroyed.\n\nOutputs:\n\nip = 54.242.130.22\n\n$ cat private_ips.txt  \n172.31.84.47\n``` \n\n\n\n- Destroy\n```bash\n$ terraform destroy -var-file=../../terraform.tfvars\n...\n  Enter a value: yes\n...\nDestroy complete! Resources: 1 destroyed.\n```"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_004_vars_provider_ec2_output/private_ips.txt",
    "content": "172.31.84.47\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_004_vars_provider_ec2_output/versions.tf",
    "content": "\nterraform {\n  required_version = \">= 0.12\"\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_005_vars_provider_ec2_remoteStateInS3/00-vars.tf",
    "content": "variable \"AWS_ACCESS_KEY\" {\n}\n\nvariable \"AWS_SECRET_KEY\" {\n}\n\nvariable \"AWS_REGION\" {\n  default = \"us-east-1\"\n}\n\nvariable \"instance_type\" {\n  description = \"type for aws EC2 instance\"\n  default = \"t2.micro\"\n}\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_005_vars_provider_ec2_remoteStateInS3/05-provider.tf",
    "content": "provider \"aws\" {\n  access_key = var.AWS_ACCESS_KEY\n  secret_key = var.AWS_SECRET_KEY\n  region     = var.AWS_REGION\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_005_vars_provider_ec2_remoteStateInS3/10-instance.tf",
    "content": "data \"aws_ami\" \"ubuntu\" {\n  most_recent = true\n\n  filter {\n    name   = \"name\"\n    values = [\"ubuntu/images/hvm-ssd/ubuntu-trusty-14.04-amd64-server-*\"]\n  }\n\n  filter {\n    name   = \"virtualization-type\"\n    values = [\"hvm\"]\n  }\n\n  owners = [\"099720109477\"] # Canonical\n}\n\nresource \"aws_instance\" \"web\" {\n  ami           = data.aws_ami.ubuntu.id\n  instance_type = \"t2.micro\"\n\n  tags = {\n    Name = \"HelloWorld\"\n  }\n}\n\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_005_vars_provider_ec2_remoteStateInS3/15-backend.tf",
    "content": "terraform {\n  backend \"s3\" {\n    bucket = \"terraform-kitchen-remote-state\"\n    key = \"terraform-remote-state-key\"\n  }\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_005_vars_provider_ec2_remoteStateInS3/ReadMe.md",
    "content": "## OBJECTIVE : \n- To create an EC2 instance.\n- Save the remote state in an S3 bucket created manually.\n\n## First manually create an S3 bucket by following steps\n\n- Step1)\n\n![](.ReadMe_images/s3-bucket-creation-screen.png)\n\n\n## The following commands will be executed.\n\n- Initialization\n\nBefore running `terraform init` you will have to run `aws configure`\n```bash\n$ aws configure\nAWS Access Key ID [None]: YOUR_ACCESS_KEY_ID\nAWS Secret Access Key [None]: YOUR_SECRET_ACCESS_KEY\nDefault region name [None]: us-east-1\nDefault output format [None]: \n```\n\n\n```bash\n$ terraform init\nInitializing the backend...\nregion\n  The region of the S3 bucket.\n\n  Enter a value: us-east-1\n\n\nSuccessfully configured the backend \"s3\"! Terraform will automatically\nuse this backend unless the backend configuration changes.\n...\n```\n\n- Planning\n\n```bash\n$ terraform plan -var-file=../../terraform.tfvars\n...\nPlan: 1 to add, 0 to change, 0 to destroy.\n...\n```\n\n- Apply\n```bash\n$ terraform apply -var-file=../../terraform.tfvars\n...\nEnter a value: yes\n...\nApply complete! Resources: 1 added, 0 changed, 0 destroyed.\n``` \n\n\n- Login and check if the remote state has been stored in the S3 bucket with the key `terraform-remote-state-key`\n\n![](.ReadMe_images/terraform-remote-state-on-s3.png)\n\n\n- Destroy\n```bash\n$ terraform destroy -var-file=../../terraform.tfvars\n...\n  Enter a value: yes\n...\nDestroy complete! Resources: 1 destroyed.\n```"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_005_vars_provider_ec2_remoteStateInS3/versions.tf",
    "content": "\nterraform {\n  required_version = \">= 0.12\"\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_006_defaultVPC_defaultSbnt_modules_kp/00-vars.tf",
    "content": "variable \"AWS_REGION\" {\n  default = \"us-east-1\"\n}\n\nvariable \"PATH_TO_PRIVATE_KEY\" {\n  description = \"Private key path\"\n  default = \"mykey\"\n}\n\nvariable \"PATH_TO_PUBLIC_KEY\" {\n  description = \"Public key path\"\n  default = \"mykey.pub\"\n}\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_006_defaultVPC_defaultSbnt_modules_kp/05-provider.tf",
    "content": "provider \"aws\" {\n  region  = var.AWS_REGION\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_006_defaultVPC_defaultSbnt_modules_kp/10-default_vpc.tf",
    "content": "# these resources are added to provide the vpc_id and subnets to the consul module\n# aws_default_* are resources that terraform doesn't creat, rather adopt\n\n# default VPC\nresource \"aws_default_vpc\" \"default\" {\n  tags = {\n    Name = \"Default VPC\"\n  }\n}\n\n# default subnets\nresource \"aws_default_subnet\" \"default_az1\" {\n  availability_zone = \"${var.AWS_REGION}a\"\n\n  tags = {\n    Name = \"Default subnet for ${var.AWS_REGION}a\"\n  }\n}\n\nresource \"aws_default_subnet\" \"default_az2\" {\n  availability_zone = \"${var.AWS_REGION}b\"\n\n  tags = {\n    Name = \"Default subnet for ${var.AWS_REGION}b\"\n  }\n}\n\nresource \"aws_default_subnet\" \"default_az3\" {\n  availability_zone = \"${var.AWS_REGION}c\"\n\n  tags = {\n    Name = \"Default subnet for ${var.AWS_REGION}c\"\n  }\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_006_defaultVPC_defaultSbnt_modules_kp/15-modules.tf",
    "content": "//After you run 'terraform get' the module will get downloaded in .terraform directory\n// Note that the module requires a set of input variables like key_name, key_path etc, does the task. You can output values as well.\n\n\n\nmodule \"consul\" {\n  source   = \"github.com/wardviaene/terraform-consul-module.git?ref=terraform-0.12\"\n  key_name = aws_key_pair.mykey.key_name\n  key_path = var.PATH_TO_PRIVATE_KEY\n  region   = var.AWS_REGION\n  vpc_id   = aws_default_vpc.default.id\n  subnets = {\n    \"0\" = aws_default_subnet.default_az1.id\n    \"1\" = aws_default_subnet.default_az2.id\n    \"2\" = aws_default_subnet.default_az3.id\n  }\n}\n\noutput \"consul-output\" {\n  value = module.consul.server_address\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_006_defaultVPC_defaultSbnt_modules_kp/20-key.tf",
    "content": "resource \"aws_key_pair\" \"mykey\" {\n  key_name   = \"mykey\"\n  public_key = file(var.PATH_TO_PUBLIC_KEY)\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_006_defaultVPC_defaultSbnt_modules_kp/ReadMe.md",
    "content": "## Objective\n- Default VPC and Default Availability Zones (a, b, c) created\n- Using a [module](https://www.terraform.io/docs/configuration/modules.html) in terraform. \nThe module will take some inputs and achieve some functionality. \n\n## Steps\n\n- Generate the keys (the ones commited are for sample only)\n```bash\n$ ssh-keygen -f mykey\n```\n\n- Run the following to download the module to your local\n```bash\n$ terraform get        \nDownloading github.com/wardviaene/terraform-consul-module.git?ref=terraform-0.12 for consul...\n- consul in .terraform/modules/consul\n```\n\n\n- Module that will get downloaded after this would be\n```bash\n$ cd .terraform\n$ tree                 \n.\n└── modules\n    ├── consul\n    │   ├── README.md\n    │   ├── consul.tf\n    │   ├── outputs.tf\n    │   ├── shared\n    │   │   └── scripts\n    │   │       ├── debian_consul.service\n    │   │       ├── debian_upstart.conf\n    │   │       ├── install.sh\n    │   │       ├── ip_tables.sh\n    │   │       ├── rhel_consul.service\n    │   │       ├── rhel_upstart.conf\n    │   │       └── service.sh\n    │   └── variables.tf\n    └── modules.json\n\n```\n\n\n- Plan\n```bash\nterraform plan -var-file=../../terraform.tfvars\n```\n\n- Apply\n```bash\nterraform apply -var-file=../../terraform.tfvars\n```\n\n- You can login into the instance using mykey\n```bash\n$ ssh -i mykey ubuntu@54.87.20.78                                                        \n.\n.\n.\nubuntu@ip-172-31-39-91:~$ \n```\n\n\n- Destroy\n```bash\nterraform destroy -var-file=../../terraform.tfvars\n```"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_006_defaultVPC_defaultSbnt_modules_kp/mykey",
    "content": "-----BEGIN OPENSSH PRIVATE KEY-----\nb3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn\n\n.\n.\n.\n.\n4L5w98yGDRxEN5MAAAAoYW5raXRzaW5naHJhdGhpQEFua2l0cy1NYWNCb29rLVByby5sb2\nNhbAECAw==\n-----END OPENSSH PRIVATE KEY-----\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_006_defaultVPC_defaultSbnt_modules_kp/mykey.pub",
    "content": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3Ip6NTP164LpnIQdvTI0m4guovOhDsyiam+MqpXbXbW3HGHzV608knoPtwJ3k40CDvD0+Wh5323iT69ZcXxSBgkK6dt3Wl/W1Za2VYM3Y7yZdixnwrjP4xcp+ZF3TAnyhNAE17XFArw4av2WjErLqMiS58qli+eaBL2OR5aMIHs6vzarYn/mErWkkGnfKm1TlRhtqOgF8R+k8o8hG3uh37dxgPpP8uUuNWNzs0uQF821rEKIcLjpHVxwQRgEj5nQT4oJUeGoo0AaaExfjhQ5JXb+BVxLckMFPVqEzlt1KWYBm0zTIGUsp74flbTglSvjh9Q2Nhs10XajfTBLOaPf9 ankitsinghrathi@Ankits-MacBook-Pro.local\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_006_defaultVPC_defaultSbnt_modules_kp/versions.tf",
    "content": "\nterraform {\n  required_version = \">= 0.12\"\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_007_customVPC_igw_sbnt_rt_sg_kp_ec2/00-var.tf",
    "content": "// from ENV\n\nvariable \"cidr_vpc\" {\n  description = \"CIDR block for the VPC\"\n  default = \"10.1.0.0/16\"\n}\nvariable \"cidr_subnet\" {\n  description = \"CIDR block for the subnet\"\n  default = \"10.1.0.0/24\"\n}\nvariable \"availability_zone\" {\n  description = \"availability zone to create subnet\"\n  default = \"us-east-2a\"\n}\nvariable \"public_key_path\" {\n  description = \"Public key path\"\n  default = \"~/.ssh/id_rsa.pub\"\n}\nvariable \"instance_ami\" {\n  description = \"AMI for aws EC2 instance\"\n  default = \"ami-0cf31d971a3ca20d6\"\n}\nvariable \"instance_type\" {\n  description = \"type for aws EC2 instance\"\n  default = \"t2.micro\"\n}\nvariable \"environment_tag\" {\n  description = \"Environment tag\"\n  default = \"Production\"\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_007_customVPC_igw_sbnt_rt_sg_kp_ec2/05-vpc.tf",
    "content": "//We are going to create VPC with defined CIDR block, enable DNS support and DNS hostnames so each instance can have a DNS name along with IP address.\n\n// https://www.terraform.io/docs/providers/aws/r/vpc.html\n\nresource \"aws_vpc\" \"vpc\" {\n  cidr_block = var.cidr_vpc\n  enable_dns_support   = true\n  enable_dns_hostnames = true\n  tags = {\n    Environment = var.environment_tag\n  }\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_007_customVPC_igw_sbnt_rt_sg_kp_ec2/10-igw.tf",
    "content": "//Internet gateway needs to be added inside VPC which can be used by subnet to access the internet from inside.\nresource \"aws_internet_gateway\" \"igw\" {\n  vpc_id = aws_vpc.vpc.id\n  tags = {\n    Environment = var.environment_tag\n  }\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_007_customVPC_igw_sbnt_rt_sg_kp_ec2/15-subnet.tf",
    "content": "// The subnet is added inside VPC with its own CIDR block which is a subset of VPC CIDR block inside given availability zone.\n\nresource \"aws_subnet\" \"subnet_public\" {\n  vpc_id = aws_vpc.vpc.id\n  cidr_block = var.cidr_subnet\n  map_public_ip_on_launch = \"true\"\n  availability_zone = var.availability_zone\n  tags = {\n    Environment = var.environment_tag\n  }\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_007_customVPC_igw_sbnt_rt_sg_kp_ec2/20-route-tables.tf",
    "content": "//  Route table needs to be added which uses internet gateway to access the internet.\n\nresource \"aws_route_table\" \"rtb_public\" {\n  vpc_id = aws_vpc.vpc.id\n  route {\n    cidr_block = \"0.0.0.0/0\"\n    gateway_id = aws_internet_gateway.igw.id\n  }\n  tags = {\n    Environment = var.environment_tag\n  }\n}\n\n// Once route table is created, we need to associate it with the subnet to make our subnet public.\n\nresource \"aws_route_table_association\" \"rta_subnet_public\" {\n  subnet_id      = aws_subnet.subnet_public.id\n  route_table_id = aws_route_table.rtb_public.id\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_007_customVPC_igw_sbnt_rt_sg_kp_ec2/25-security-group.tf",
    "content": "// Once we have our networking setup ready, we need to create an EC2 instance in which we can SSH using port 22.\n// For this, we first need to create a security group which can be attached to our EC2 instance while creation.\n\nresource \"aws_security_group\" \"sg_22\" {\n  name = \"sg_22\"\n  vpc_id = aws_vpc.vpc.id\n  ingress {\n    from_port   = 22\n    to_port     = 22\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n  egress {\n    from_port   = 0\n    to_port     = 0\n    protocol    = \"-1\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n  tags = {\n    Environment = var.environment_tag\n  }\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_007_customVPC_igw_sbnt_rt_sg_kp_ec2/30-keypair.tf",
    "content": "// Let’s create a key pair which we are going to use to SSH on our EC2\n\nresource \"aws_key_pair\" \"ec2key\" {\n  key_name   = \"publicKey\"\n  public_key = \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDLmviSRpF6tvGLpMExQZ94I9mqhVtINyjH1rEeDwSPB+1v00P608klF++uhRvREUyNID/i2w1cwjOi9H1isoZNoVaSKdiVIqEIp2HaIhTtKTo+NqVCdIeQXnwK2bS/OeIVScYn6YZjPAcWgMk0GH1q9zIn+sz1own3QxD4qysvoqN5bD9BxsDboLxKw803jJlcjRiSrdWbmEOoIXrEbv9t99ZxsYLIDIDZJskiAcvqKEywt+dRpvM/49c3pJ5JVluNNJypTObM2GI4piC1TcOL6xMgs+UsbDgEsHPYHXZnYENX/GGXYJcdDITCtMHap8O33EvOh5piIXHF6kQEgXDRCE61AEWnHQeGERJtTqlCiBAUUDNzAHt9UjZJVmioLJ+vLeW9M3KjUCh5MWxZ7hIJ7xvLxermNlRahzTlaGLhvkiyoaUyuh+qhpBIfCv7lioLaagv9jegc6AErMqDGFgPieJh479z+QqagPODwP0UB0jt07b7V/3csImEiy1aKY2wOQriXCkcAnSvKuAuiT2a2gOfPMJlzVd8hLrA2f5YuLWLm8p8rLXvkNSJ8YKNbQx1z5pII9R54YEOixjgp9bDNJL39ekrxlzLj72gpWg+AF+FFVNJ4gfZDjBSxUbkPhox7jhIV4DOCvc6W5uLkCXe62R9aNn1/Hkxcq99eoen1w== codeaprendiz@gmail.com\"\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_007_customVPC_igw_sbnt_rt_sg_kp_ec2/35-ec2-instance.tf",
    "content": "// Once everything is ready, let us start an EC2 instance within our public subnet with created key pair and security group.\n\n//Login with ec2_user@PUBLIC_IP\nresource \"aws_instance\" \"testInstance\" {\n  ami           = var.instance_ami\n  instance_type = var.instance_type\n  subnet_id = aws_subnet.subnet_public.id\n  vpc_security_group_ids = [aws_security_group.sg_22.id]\n  key_name = aws_key_pair.ec2key.key_name\n  tags = {\n    Environment = var.environment_tag\n  }\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_007_customVPC_igw_sbnt_rt_sg_kp_ec2/README.md",
    "content": "## OBJECTIVE : \n- To set up a custom VPC with given CIDR with attached internet gateway. \n- Associate a subnet (with subset CIDR) to the VPC.\n- Create route-tables to make the subnet public\n- Create security group (for ssh) and keypair (for ssh)\n- Start EC2 instance in public subnet and login into the instance.\n\n#### Before executing you should have created AWS_ACCESS_KEY_ID AND AWS_SECRET_ACCESS_KEY with administrative privileges.\n\n- Export the keys in your current shell by using following commands\n\n```bash\nexport AWS_ACCESS_KEY_ID=YOUR_ACCESS_KEY_ID\nexport AWS_SECRET_ACCESS_KEY=YOUR_SECRET_ACCESS_KEY\n```\n\n#### The following sequence of commands will be executed.\n> terraform init\n\n```bash\n$ terraform init\nInitializing the backend...\n.\n.\n.\ncommands will detect it and remind you to do so if necessary.\n```\n\n\n> terraform plan\n\n```bash\n$ terraform plan\nprovider.aws.region\n.\n.\n.\n\"terraform apply\" is subsequently run.\n```\n\n> terraform apply\n\n```bash\n$ terraform apply\nprovider.aws.region\n.\n.\n.\nPlan: 8 to add, 0 to change, 0 to destroy.\n\nDo you want to perform these actions?\n  Terraform will perform the actions described above.\n  Only 'yes' will be accepted to approve.\n\n  Enter a value: yes\n.\n.\n.\nApply complete! Resources: 8 added, 0 changed, 0 destroyed.\n```\n\n\n\n- Now login into the instance\n\n```bash\n$ ssh ec2-user@3.14.246.44                        \nThe authenticity of host '3.14.246.44 (3.14.246.44)' can't be established.\nECDSA key fingerprint is SHA256:B0bvqitocFpOItQbzZkFCXBrZV9xdb3b0VRwb/Ked0s.\nAre you sure you want to continue connecting (yes/no)? yes\nWarning: Permanently added '3.14.246.44' (ECDSA) to the list of known hosts.\n\n       __|  __|_  )\n       _|  (     /   Amazon Linux 2 AMI\n      ___|\\___|___|\n\nhttps://aws.amazon.com/amazon-linux-2/\n48 package(s) needed for security, out of 336 available\nRun \"sudo yum update\" to apply all updates.\n[ec2-user@ip-10-1-0-247 ~]$ \n```\n\n- To destroy the resources\n> terraform destroy\n\n```bash\n$ terraform destroy\n.\n.\n.\nDestroy complete! Resources: 8 destroyed.\n```\n\n\n#### Now let's login into the console and check\n\n- VPC screen\n\n![](.images/vpc_screen.png)\n\n- CIDR in VPC\n\n![](.images/CIDR_created_VPC.png)\n\n- Internet Gateways\n\n![](.images/internet_gateway_screen.png)\n\n- Subnet created\n\n![](.images/subnet_screen.png)\n\n- Route table association\n\n![](.images/route_table_association.png)\n\n- Network ACLs\n\n![](.images/network_acl_screen.png)\n\n- Route Tables\n\n![](.images/route_table_screen.png)\n\n- Login EC2 dashboard\n\n![](.images/login_ec2_dashboard.png)\n\n- EC2 instance screen\n\n![](.images/ec2_instance_screen.png)\n\n- Instance Tag\n\n![](.images/instance_tag_screen.png)\n\n- Security groups\n\n![](.images/security_groups_screen.png)\n\n- Volumes Screen\n\n![](.images/volumes_screen.png)\n\n\n- Finally Resources Screen\n\n![](.images/resources_screen.png)\n\n\n\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_007_customVPC_igw_sbnt_rt_sg_kp_ec2/versions.tf",
    "content": "\nterraform {\n  required_version = \">= 0.12\"\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_008_customVPC_3PriSbnts_3PubSbnts_nat_igw_rt/00-vars.tf",
    "content": "variable \"AWS_REGION\" {\n  default = \"us-east-1\"\n}\n\nvariable \"PATH_TO_PRIVATE_KEY\" {\n  default = \"~/.ssh/id_rsa\"\n}\n\nvariable \"PATH_TO_PUBLIC_KEY\" {\n  default = \"~/.ssh/id_rsa.pub\"\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_008_customVPC_3PriSbnts_3PubSbnts_nat_igw_rt/05-provider.tf",
    "content": "provider \"aws\" {\n  region = var.AWS_REGION\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_008_customVPC_3PriSbnts_3PubSbnts_nat_igw_rt/15-vpc.tf",
    "content": "# Internet VPC\nresource \"aws_vpc\" \"main\" {\n  cidr_block           = \"10.0.0.0/16\"\n  instance_tenancy     = \"default\"\n  enable_dns_support   = \"true\"\n  enable_dns_hostnames = \"true\"\n  enable_classiclink   = \"false\"\n  tags = {\n    Name = \"main\"\n  }\n}\n\n# Subnets\nresource \"aws_subnet\" \"main-public-1\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.1.0/24\"\n  map_public_ip_on_launch = \"true\"\n  availability_zone       = \"us-east-1a\"\n\n  tags = {\n    Name = \"main-public-1\"\n  }\n}\n\nresource \"aws_subnet\" \"main-public-2\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.2.0/24\"\n  map_public_ip_on_launch = \"true\"\n  availability_zone       = \"us-east-1b\"\n\n  tags = {\n    Name = \"main-public-2\"\n  }\n}\n\nresource \"aws_subnet\" \"main-public-3\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.3.0/24\"\n  map_public_ip_on_launch = \"true\"\n  availability_zone       = \"us-east-1c\"\n\n  tags = {\n    Name = \"main-public-3\"\n  }\n}\n\nresource \"aws_subnet\" \"main-private-1\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.4.0/24\"\n  map_public_ip_on_launch = \"false\"\n  availability_zone       = \"us-east-1a\"\n\n  tags = {\n    Name = \"main-private-1\"\n  }\n}\n\nresource \"aws_subnet\" \"main-private-2\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.5.0/24\"\n  map_public_ip_on_launch = \"false\"\n  availability_zone       = \"us-east-1b\"\n\n  tags = {\n    Name = \"main-private-2\"\n  }\n}\n\nresource \"aws_subnet\" \"main-private-3\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.6.0/24\"\n  map_public_ip_on_launch = \"false\"\n  availability_zone       = \"us-east-1c\"\n\n  tags = {\n    Name = \"main-private-3\"\n  }\n}\n\n# Internet GW\nresource \"aws_internet_gateway\" \"main-gw\" {\n  vpc_id = aws_vpc.main.id\n\n  tags = {\n    Name = \"main\"\n  }\n}\n\n# route tables\nresource \"aws_route_table\" \"main-public\" {\n  vpc_id = aws_vpc.main.id\n  route {\n    cidr_block = \"0.0.0.0/0\"\n    gateway_id = aws_internet_gateway.main-gw.id\n  }\n\n  tags = {\n    Name = \"main-public-1\"\n  }\n}\n\n# route associations public\nresource \"aws_route_table_association\" \"main-public-1-a\" {\n  subnet_id      = aws_subnet.main-public-1.id\n  route_table_id = aws_route_table.main-public.id\n}\n\nresource \"aws_route_table_association\" \"main-public-2-a\" {\n  subnet_id      = aws_subnet.main-public-2.id\n  route_table_id = aws_route_table.main-public.id\n}\n\nresource \"aws_route_table_association\" \"main-public-3-a\" {\n  subnet_id      = aws_subnet.main-public-3.id\n  route_table_id = aws_route_table.main-public.id\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_008_customVPC_3PriSbnts_3PubSbnts_nat_igw_rt/20-nat.tf",
    "content": "# nat gw\nresource \"aws_eip\" \"nat\" {\n  vpc = true\n}\n\nresource \"aws_nat_gateway\" \"nat-gw\" {\n  allocation_id = aws_eip.nat.id\n  subnet_id     = aws_subnet.main-public-1.id\n  depends_on    = [aws_internet_gateway.main-gw]\n}\n\n# VPC setup for NAT\nresource \"aws_route_table\" \"main-private\" {\n  vpc_id = aws_vpc.main.id\n  route {\n    cidr_block     = \"0.0.0.0/0\"\n    nat_gateway_id = aws_nat_gateway.nat-gw.id\n  }\n\n  tags = {\n    Name = \"main-private-1\"\n  }\n}\n\n# route associations private\nresource \"aws_route_table_association\" \"main-private-1-a\" {\n  subnet_id      = aws_subnet.main-private-1.id\n  route_table_id = aws_route_table.main-private.id\n}\n\nresource \"aws_route_table_association\" \"main-private-2-a\" {\n  subnet_id      = aws_subnet.main-private-2.id\n  route_table_id = aws_route_table.main-private.id\n}\n\nresource \"aws_route_table_association\" \"main-private-3-a\" {\n  subnet_id      = aws_subnet.main-private-3.id\n  route_table_id = aws_route_table.main-private.id\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_008_customVPC_3PriSbnts_3PubSbnts_nat_igw_rt/ReadMe.md",
    "content": "## Objective \n\n1) To create a custom VPC with CIDR block 10.0.0.0/16\n2) To create 3 public subnets (main-public-1, main-public-2, main-public-3). Accordingly choose their CIDR blocks.\n3) To create 3 private subnets (main-private-1, main-private-2, main-private-3). Accordingly choose their CIDR blocks.\n4) To create an internet gateway resource\n5) To create a main-public route table to have a route to internet (0.0.0.0/0) via the internet gateway and associate this route table to all the 3 public subnets.\n6) To create an elastic IP, NAT gateway and associate that elastic IP with NAT gateway\n7) To create a private route table to have a route to internet (0.0.0.0/0) via the NAT gateway. Associate this private route table to all the 3 private subnets.\n\n\n## Lets Begin\n\n\n\n- init\n```bash\nterraform init\n```\n\n- plan\n```bash\n$ terraform plan -var-file=../../terraform.tfvars\n.\n.\n.\nPlan: 18 to add, 0 to change, 0 to destroy.\n```\n\n\n- apply\n```bash\n$ terraform apply -var-file=../../terraform.tfvars\n.\n.\n.\nApply complete! Resources: 18 added, 0 changed, 0 destroyed.\n```\n\n- destroy\n```bash\n$ terraform destroy -var-file=../../terraform.tfvars\n\nDestroy complete! Resources: 18 destroyed.\n```"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_008_customVPC_3PriSbnts_3PubSbnts_nat_igw_rt/versions.tf",
    "content": "\nterraform {\n  required_version = \">= 0.12\"\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_009_customVPC_3PriSbnts_3PubSbnts_nat_igw_rt_ec2_ebs/00-vars.tf",
    "content": "variable \"AWS_REGION\" {\n  default = \"us-east-1\"\n}\n\nvariable \"PATH_TO_PRIVATE_KEY\" {\n  default = \"~/.ssh/id_rsa\"\n}\n\nvariable \"PATH_TO_PUBLIC_KEY\" {\n  default = \"~/.ssh/id_rsa.pub\"\n}\n\nvariable \"AMIS\" {\n  type = map(string)\n  default = {\n    us-east-1 = \"ami-13be557e\"\n    us-west-2 = \"ami-06b94666\"\n    eu-west-1 = \"ami-844e0bf7\"\n  }\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_009_customVPC_3PriSbnts_3PubSbnts_nat_igw_rt_ec2_ebs/05-provider.tf",
    "content": "provider \"aws\" {\n  region = var.AWS_REGION\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_009_customVPC_3PriSbnts_3PubSbnts_nat_igw_rt_ec2_ebs/15-vpc.tf",
    "content": "# Internet VPC\nresource \"aws_vpc\" \"main\" {\n  cidr_block           = \"10.0.0.0/16\"\n  instance_tenancy     = \"default\"\n  enable_dns_support   = \"true\"\n  enable_dns_hostnames = \"true\"\n  enable_classiclink   = \"false\"\n  tags = {\n    Name = \"main\"\n  }\n}\n\n# Subnets\nresource \"aws_subnet\" \"main-public-1\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.1.0/24\"\n  map_public_ip_on_launch = \"true\"\n  availability_zone       = \"us-east-1a\"\n\n  tags = {\n    Name = \"main-public-1\"\n  }\n}\n\nresource \"aws_subnet\" \"main-public-2\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.2.0/24\"\n  map_public_ip_on_launch = \"true\"\n  availability_zone       = \"us-east-1b\"\n\n  tags = {\n    Name = \"main-public-2\"\n  }\n}\n\nresource \"aws_subnet\" \"main-public-3\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.3.0/24\"\n  map_public_ip_on_launch = \"true\"\n  availability_zone       = \"us-east-1c\"\n\n  tags = {\n    Name = \"main-public-3\"\n  }\n}\n\nresource \"aws_subnet\" \"main-private-1\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.4.0/24\"\n  map_public_ip_on_launch = \"false\"\n  availability_zone       = \"us-east-1a\"\n\n  tags = {\n    Name = \"main-private-1\"\n  }\n}\n\nresource \"aws_subnet\" \"main-private-2\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.5.0/24\"\n  map_public_ip_on_launch = \"false\"\n  availability_zone       = \"us-east-1b\"\n\n  tags = {\n    Name = \"main-private-2\"\n  }\n}\n\nresource \"aws_subnet\" \"main-private-3\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.6.0/24\"\n  map_public_ip_on_launch = \"false\"\n  availability_zone       = \"us-east-1c\"\n\n  tags = {\n    Name = \"main-private-3\"\n  }\n}\n\n# Internet GW\nresource \"aws_internet_gateway\" \"main-gw\" {\n  vpc_id = aws_vpc.main.id\n\n  tags = {\n    Name = \"main\"\n  }\n}\n\n# route tables\nresource \"aws_route_table\" \"main-public\" {\n  vpc_id = aws_vpc.main.id\n  route {\n    cidr_block = \"0.0.0.0/0\"\n    gateway_id = aws_internet_gateway.main-gw.id\n  }\n\n  tags = {\n    Name = \"main-public-1\"\n  }\n}\n\n# route associations public\nresource \"aws_route_table_association\" \"main-public-1-a\" {\n  subnet_id      = aws_subnet.main-public-1.id\n  route_table_id = aws_route_table.main-public.id\n}\n\nresource \"aws_route_table_association\" \"main-public-2-a\" {\n  subnet_id      = aws_subnet.main-public-2.id\n  route_table_id = aws_route_table.main-public.id\n}\n\nresource \"aws_route_table_association\" \"main-public-3-a\" {\n  subnet_id      = aws_subnet.main-public-3.id\n  route_table_id = aws_route_table.main-public.id\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_009_customVPC_3PriSbnts_3PubSbnts_nat_igw_rt_ec2_ebs/16-securitygroup.tf",
    "content": "resource \"aws_security_group\" \"allow-ssh\" {\n  vpc_id      = aws_vpc.main.id\n  name        = \"allow-ssh\"\n  description = \"security group that allows ssh and all egress traffic\"\n  egress {\n    from_port   = 0\n    to_port     = 0\n    protocol    = \"-1\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n\n  ingress {\n    from_port   = 22\n    to_port     = 22\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n  tags = {\n    Name = \"allow-ssh\"\n  }\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_009_customVPC_3PriSbnts_3PubSbnts_nat_igw_rt_ec2_ebs/17-key.tf",
    "content": "resource \"aws_key_pair\" \"mykeypair\" {\n  key_name   = \"mykeypair\"\n  public_key = file(var.PATH_TO_PUBLIC_KEY)\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_009_customVPC_3PriSbnts_3PubSbnts_nat_igw_rt_ec2_ebs/20-nat.tf",
    "content": "# nat gw\nresource \"aws_eip\" \"nat\" {\n  vpc = true\n}\n\nresource \"aws_nat_gateway\" \"nat-gw\" {\n  allocation_id = aws_eip.nat.id\n  subnet_id     = aws_subnet.main-public-1.id\n  depends_on    = [aws_internet_gateway.main-gw]\n}\n\n# VPC setup for NAT\nresource \"aws_route_table\" \"main-private\" {\n  vpc_id = aws_vpc.main.id\n  route {\n    cidr_block     = \"0.0.0.0/0\"\n    nat_gateway_id = aws_nat_gateway.nat-gw.id\n  }\n\n  tags = {\n    Name = \"main-private-1\"\n  }\n}\n\n# route associations private\nresource \"aws_route_table_association\" \"main-private-1-a\" {\n  subnet_id      = aws_subnet.main-private-1.id\n  route_table_id = aws_route_table.main-private.id\n}\n\nresource \"aws_route_table_association\" \"main-private-2-a\" {\n  subnet_id      = aws_subnet.main-private-2.id\n  route_table_id = aws_route_table.main-private.id\n}\n\nresource \"aws_route_table_association\" \"main-private-3-a\" {\n  subnet_id      = aws_subnet.main-private-3.id\n  route_table_id = aws_route_table.main-private.id\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_009_customVPC_3PriSbnts_3PubSbnts_nat_igw_rt_ec2_ebs/25-instance.tf",
    "content": "resource \"aws_instance\" \"example\" {\n  ami           = var.AMIS[var.AWS_REGION]\n  instance_type = \"t2.micro\"\n\n  # the VPC subnet\n  subnet_id = aws_subnet.main-public-1.id\n\n  # the security group\n  vpc_security_group_ids = [aws_security_group.allow-ssh.id]\n\n  # the public SSH key\n  key_name = aws_key_pair.mykeypair.key_name\n}\n\nresource \"aws_ebs_volume\" \"ebs-volume-1\" {\n  availability_zone = \"us-east-1a\"\n  size = 10\n  type = \"gp2\"\n\n  tags = {\n    Name = \"custom ebs volume\"\n  }\n}\n\nresource \"aws_volume_attachment\" \"ebs-volume-1-attachment\" {\n  device_name = \"/dev/xvdh\"\n  volume_id = aws_ebs_volume.ebs-volume-1.id\n  instance_id = aws_instance.example.id\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_009_customVPC_3PriSbnts_3PubSbnts_nat_igw_rt_ec2_ebs/ReadMe.md",
    "content": "## Objective \n\n1) To create a custom VPC with CIDR block 10.0.0.0/16\n2) To create 3 public subnets (main-public-1, main-public-2, main-public-3). Accordingly choose their CIDR blocks.\n3) To create 3 private subnets (main-private-1, main-private-2, main-private-3). Accordingly choose their CIDR blocks.\n4) To create an internet gateway resource\n5) To create a main-public route table to have a route to internet (0.0.0.0/0) via the internet gateway and associate this route table to all the 3 public subnets.\n6) To create an elastic IP, NAT gateway and associate that elastic IP with NAT gateway\n7) To create a private route table to have a route to internet (0.0.0.0/0) via the NAT gateway. Associate this private route table to all the 3 private subnets.\n8) To launch an EC2 instance in the main-public-1 subnet. To login into this instance, check its private IP and routes.\n9) Attach an aws_ebs_volume to this instance. \n\n\n## Lets Begin\n\n\n\n- init\n```bash\nterraform init\n```\n\n- plan\n```bash\n$ terraform plan -var-file=../../terraform.tfvars\n.\n.\n.\nPlan: 21 to add, 0 to change, 0 to destroy.\n```\n\n\n- apply\n```bash\n$ terraform apply -var-file=../../terraform.tfvars\n.\n.\n.\nApply complete! Resources: 21 added, 0 changed, 0 destroyed.\n```\n\n\n- login into the instance so created. Note the private IP after login.\n```bash\n$ ssh -i ~/.ssh/id_rsa ubuntu@3.94.171.138                                                \n.\n.\n.\nubuntu@ip-10-0-1-132:~$\n```\n\n- private IP of logged in instance\n```bash\nubuntu@ip-10-0-1-132:~$ ifconfig | egrep inet\n          inet addr:10.0.1.132  Bcast:10.0.1.255  Mask:255.255.255.0\n```\n\n- routes inside the logged in instance\n```bash\nubuntu@ip-10-0-1-132:~$ route -n\nKernel IP routing table\nDestination     Gateway         Genmask         Flags Metric Ref    Use Iface\n0.0.0.0         10.0.1.1        0.0.0.0         UG    0      0        0 eth0\n10.0.1.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0\n```\n\n- check the volumes inside the logged in instance\n```bash\nubuntu@ip-10-0-1-157:~$ df -h\nFilesystem      Size  Used Avail Use% Mounted on\nudev            491M     0  491M   0% /dev\ntmpfs           100M  3.1M   97M   4% /run\n/dev/xvda1      7.8G  885M  6.5G  12% /\ntmpfs           496M     0  496M   0% /dev/shm\ntmpfs           5.0M     0  5.0M   0% /run/lock\ntmpfs           496M     0  496M   0% /sys/fs/cgroup\ntmpfs           100M     0  100M   0% /run/user/1000\n```\n\n- creating an ext4 file system on /dev/xvdh\n```bash\nubuntu@ip-10-0-1-157:~$ sudo su\n\nroot@ip-10-0-1-157:/home/ubuntu# mkfs.ext4 /dev/xvdh\nmke2fs 1.42.13 (17-May-2015)\nCreating filesystem with 2621440 4k blocks and 655360 inodes\nFilesystem UUID: 94cb34d3-469a-4fc0-9237-a39736ff14e9\nSuperblock backups stored on blocks: \n        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632\n\nAllocating group tables: done                            \nWriting inode tables: done                            \nCreating journal (32768 blocks): done\nWriting superblocks and filesystem accounting information: done \n\nroot@ip-10-0-1-157:/home/ubuntu# \n```\n\n- mounting the filesystem we created to /data\n```bash\nroot@ip-10-0-1-157:/home/ubuntu# mkdir -p /data\nroot@ip-10-0-1-157:/home/ubuntu# mount /dev/xvdh /data\n```\n\n- check the file system you added using `df -h` command\n```bash\nFilesystem      Size  Used Avail Use% Mounted on\nudev            491M     0  491M   0% /dev\ntmpfs           100M  3.1M   97M   4% /run\n/dev/xvda1      7.8G  884M  6.5G  12% /\ntmpfs           496M     0  496M   0% /dev/shm\ntmpfs           5.0M     0  5.0M   0% /run/lock\ntmpfs           496M     0  496M   0% /sys/fs/cgroup\ntmpfs           100K     0  100K   0% /run/lxcfs/controllers\ntmpfs           100M     0  100M   0% /run/user/1000\n/dev/xvdh       9.8G   23M  9.2G   1% /data\n```\n\n\n- This volume will go away when the machine is rebooted. So let's add it in `/etc/fstab`\n```bash\nroot@ip-10-0-1-157:/home/ubuntu# cat /etc/fstab \nLABEL=cloudimg-rootfs   /        ext4   defaults,discard        0 0\n/dev/xvdh /data ext4 defaults 0 0\n```\n\n- destroy\n```bash\n$ terraform destroy -var-file=../../terraform.tfvars\n\nDestroy complete! Resources: 21 destroyed.\n```"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_009_customVPC_3PriSbnts_3PubSbnts_nat_igw_rt_ec2_ebs/versions.tf",
    "content": "\nterraform {\n  required_version = \">= 0.12\"\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_010_customVPC_3PriSbnts_3PubSbnts_nat_igw_rt_ec2_ebs_withMount/00-vars.tf",
    "content": "variable \"AWS_REGION\" {\n  default = \"us-east-1\"\n}\n\nvariable \"PATH_TO_PRIVATE_KEY\" {\n  default = \"~/.ssh/id_rsa\"\n}\n\nvariable \"PATH_TO_PUBLIC_KEY\" {\n  default = \"~/.ssh/id_rsa.pub\"\n}\n\nvariable \"AMIS\" {\n  type = map(string)\n  default = {\n    us-east-1 = \"ami-13be557e\"\n    us-west-2 = \"ami-06b94666\"\n    eu-west-1 = \"ami-844e0bf7\"\n  }\n}\n\nvariable \"INSTANCE_DEVICE_NAME\" {\n  default = \"/dev/xvdh\"\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_010_customVPC_3PriSbnts_3PubSbnts_nat_igw_rt_ec2_ebs_withMount/05-provider.tf",
    "content": "provider \"aws\" {\n  region = var.AWS_REGION\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_010_customVPC_3PriSbnts_3PubSbnts_nat_igw_rt_ec2_ebs_withMount/15-vpc.tf",
    "content": "# Internet VPC\nresource \"aws_vpc\" \"main\" {\n  cidr_block           = \"10.0.0.0/16\"\n  instance_tenancy     = \"default\"\n  enable_dns_support   = \"true\"\n  enable_dns_hostnames = \"true\"\n  enable_classiclink   = \"false\"\n  tags = {\n    Name = \"main\"\n  }\n}\n\n# Subnets\nresource \"aws_subnet\" \"main-public-1\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.1.0/24\"\n  map_public_ip_on_launch = \"true\"\n  availability_zone       = \"us-east-1a\"\n\n  tags = {\n    Name = \"main-public-1\"\n  }\n}\n\nresource \"aws_subnet\" \"main-public-2\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.2.0/24\"\n  map_public_ip_on_launch = \"true\"\n  availability_zone       = \"us-east-1b\"\n\n  tags = {\n    Name = \"main-public-2\"\n  }\n}\n\nresource \"aws_subnet\" \"main-public-3\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.3.0/24\"\n  map_public_ip_on_launch = \"true\"\n  availability_zone       = \"us-east-1c\"\n\n  tags = {\n    Name = \"main-public-3\"\n  }\n}\n\nresource \"aws_subnet\" \"main-private-1\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.4.0/24\"\n  map_public_ip_on_launch = \"false\"\n  availability_zone       = \"us-east-1a\"\n\n  tags = {\n    Name = \"main-private-1\"\n  }\n}\n\nresource \"aws_subnet\" \"main-private-2\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.5.0/24\"\n  map_public_ip_on_launch = \"false\"\n  availability_zone       = \"us-east-1b\"\n\n  tags = {\n    Name = \"main-private-2\"\n  }\n}\n\nresource \"aws_subnet\" \"main-private-3\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.6.0/24\"\n  map_public_ip_on_launch = \"false\"\n  availability_zone       = \"us-east-1c\"\n\n  tags = {\n    Name = \"main-private-3\"\n  }\n}\n\n# Internet GW\nresource \"aws_internet_gateway\" \"main-gw\" {\n  vpc_id = aws_vpc.main.id\n\n  tags = {\n    Name = \"main\"\n  }\n}\n\n# route tables\nresource \"aws_route_table\" \"main-public\" {\n  vpc_id = aws_vpc.main.id\n  route {\n    cidr_block = \"0.0.0.0/0\"\n    gateway_id = aws_internet_gateway.main-gw.id\n  }\n\n  tags = {\n    Name = \"main-public-1\"\n  }\n}\n\n# route associations public\nresource \"aws_route_table_association\" \"main-public-1-a\" {\n  subnet_id      = aws_subnet.main-public-1.id\n  route_table_id = aws_route_table.main-public.id\n}\n\nresource \"aws_route_table_association\" \"main-public-2-a\" {\n  subnet_id      = aws_subnet.main-public-2.id\n  route_table_id = aws_route_table.main-public.id\n}\n\nresource \"aws_route_table_association\" \"main-public-3-a\" {\n  subnet_id      = aws_subnet.main-public-3.id\n  route_table_id = aws_route_table.main-public.id\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_010_customVPC_3PriSbnts_3PubSbnts_nat_igw_rt_ec2_ebs_withMount/16-securitygroup.tf",
    "content": "resource \"aws_security_group\" \"allow-ssh\" {\n  vpc_id      = aws_vpc.main.id\n  name        = \"allow-ssh\"\n  description = \"security group that allows ssh and all egress traffic\"\n  egress {\n    from_port   = 0\n    to_port     = 0\n    protocol    = \"-1\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n\n  ingress {\n    from_port   = 22\n    to_port     = 22\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n  tags = {\n    Name = \"allow-ssh\"\n  }\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_010_customVPC_3PriSbnts_3PubSbnts_nat_igw_rt_ec2_ebs_withMount/17-key.tf",
    "content": "resource \"aws_key_pair\" \"mykeypair\" {\n  key_name   = \"mykeypair\"\n  public_key = file(var.PATH_TO_PUBLIC_KEY)\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_010_customVPC_3PriSbnts_3PubSbnts_nat_igw_rt_ec2_ebs_withMount/20-nat.tf",
    "content": "# nat gw\nresource \"aws_eip\" \"nat\" {\n  vpc = true\n}\n\nresource \"aws_nat_gateway\" \"nat-gw\" {\n  allocation_id = aws_eip.nat.id\n  subnet_id     = aws_subnet.main-public-1.id\n  depends_on    = [aws_internet_gateway.main-gw]\n}\n\n# VPC setup for NAT\nresource \"aws_route_table\" \"main-private\" {\n  vpc_id = aws_vpc.main.id\n  route {\n    cidr_block     = \"0.0.0.0/0\"\n    nat_gateway_id = aws_nat_gateway.nat-gw.id\n  }\n\n  tags = {\n    Name = \"main-private-1\"\n  }\n}\n\n# route associations private\nresource \"aws_route_table_association\" \"main-private-1-a\" {\n  subnet_id      = aws_subnet.main-private-1.id\n  route_table_id = aws_route_table.main-private.id\n}\n\nresource \"aws_route_table_association\" \"main-private-2-a\" {\n  subnet_id      = aws_subnet.main-private-2.id\n  route_table_id = aws_route_table.main-private.id\n}\n\nresource \"aws_route_table_association\" \"main-private-3-a\" {\n  subnet_id      = aws_subnet.main-private-3.id\n  route_table_id = aws_route_table.main-private.id\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_010_customVPC_3PriSbnts_3PubSbnts_nat_igw_rt_ec2_ebs_withMount/22-cloudinit.tf",
    "content": "data \"template_file\" \"init-script\" {\n  template = file(\"scripts/init.cfg\")\n  vars = {\n    REGION = var.AWS_REGION\n  }\n}\n\ndata \"template_file\" \"shell-script\" {\n  template = file(\"scripts/volumes.sh\")\n  vars = {\n    DEVICE = var.INSTANCE_DEVICE_NAME\n  }\n}\n\n// https://www.terraform.io/docs/providers/template/d/cloudinit_config.html\n//Cloud-init is a commonly-used startup configuration utility for cloud compute instances.\n//It accepts configuration via provider-specific user data mechanisms, such as user_data for Amazon EC2\n\ndata \"template_cloudinit_config\" \"cloudinit-example\" {\n  gzip          = false\n  base64_encode = false\n\n  part {\n    filename     = \"init.cfg\"\n    content_type = \"text/cloud-config\"\n    content      = data.template_file.init-script.rendered\n  }\n\n  part {\n    content_type = \"text/x-shellscript\"\n    content      = data.template_file.shell-script.rendered\n  }\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_010_customVPC_3PriSbnts_3PubSbnts_nat_igw_rt_ec2_ebs_withMount/25-instance.tf",
    "content": "resource \"aws_instance\" \"example\" {\n  ami           = var.AMIS[var.AWS_REGION]\n  instance_type = \"t2.micro\"\n\n  # the VPC subnet\n  subnet_id = aws_subnet.main-public-1.id\n\n  # the security group\n  vpc_security_group_ids = [aws_security_group.allow-ssh.id]\n\n  # the public SSH key\n  key_name = aws_key_pair.mykeypair.key_name\n\n  # user data\n  user_data = data.template_cloudinit_config.cloudinit-example.rendered\n}\n\nresource \"aws_ebs_volume\" \"ebs-volume-1\" {\n  availability_zone = \"us-east-1a\"\n  size = 10\n  type = \"gp2\"\n\n  tags = {\n    Name = \"custom ebs volume\"\n  }\n}\n\nresource \"aws_volume_attachment\" \"ebs-volume-1-attachment\" {\n  device_name  = var.INSTANCE_DEVICE_NAME\n  volume_id    = aws_ebs_volume.ebs-volume-1.id\n  instance_id  = aws_instance.example.id\n  skip_destroy = true                            # skip destroy to avoid issues with terraform destroy\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_010_customVPC_3PriSbnts_3PubSbnts_nat_igw_rt_ec2_ebs_withMount/ReadMe.md",
    "content": "## Objective \n\n1) To create a custom VPC with CIDR block 10.0.0.0/16\n2) To create 3 public subnets (main-public-1, main-public-2, main-public-3). Accordingly choose their CIDR blocks.\n3) To create 3 private subnets (main-private-1, main-private-2, main-private-3). Accordingly choose their CIDR blocks.\n4) To create an internet gateway resource\n5) To create a main-public route table to have a route to internet (0.0.0.0/0) via the internet gateway and associate this route table to all the 3 public subnets.\n6) To create an elastic IP, NAT gateway and associate that elastic IP with NAT gateway\n7) To create a private route table to have a route to internet (0.0.0.0/0) via the NAT gateway. Associate this private route table to all the 3 private subnets.\n8) To launch an EC2 instance in the main-public-1 subnet. To login into this instance, check its private IP and routes.\n9) Attach an aws_ebs_volume to this instance. \n10) If there is no data on the ebs_volume you just mount it as an empty one. If there is data ont the ebs volume, you just mount it without formatting.\n\n\n## Lets Begin\n\n\n\n- init\n```bash\nterraform init\n```\n\n- plan\n```bash\n$ terraform plan -var-file=../../terraform.tfvars\n.\n.\n.\nPlan: 23 to add, 0 to change, 0 to destroy.\n```\n\n\n- apply\n```bash\n$ terraform apply -var-file=../../terraform.tfvars\n.\n.\n.\nApply complete! Resources: 23 added, 0 changed, 0 destroyed.\n```\n\n\n- login into the instance so created. Note the private IP after login.\n```bash\n$ ssh -i ~/.ssh/id_rsa ubuntu@54.224.116.49                                               \n.\n.\n.\nubuntu@ip-10-0-1-123:~$ \n```\n\n- private IP of logged in instance\n```bash\nubuntu@ip-10-0-1-123:~$ ifconfig | egrep inet\n          inet addr:10.0.1.123  Bcast:10.0.1.255  Mask:255.255.255.0\n          inet6 addr: fe80::107c:cfff:feec:aae7/64 Scope:Link\n          inet addr:127.0.0.1  Mask:255.0.0.0\n          inet6 addr: ::1/128 Scope:Host\n```\n\n- routes inside the logged in instance\n```bash\n$ route -n\nKernel IP routing table\nDestination     Gateway         Genmask         Flags Metric Ref    Use Iface\n0.0.0.0         10.0.1.1        0.0.0.0         UG    0      0        0 eth0\n10.0.1.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0\n```\n\n- check the volumes inside the logged in instance\n```bash\nubuntu@ip-10-0-1-123:~$ df -h\nFilesystem                Size  Used Avail Use% Mounted on\nudev                      491M     0  491M   0% /dev\ntmpfs                     100M  4.3M   95M   5% /run\n/dev/xvda1                7.8G  1.5G  6.0G  20% /\ntmpfs                     496M     0  496M   0% /dev/shm\ntmpfs                     5.0M     0  5.0M   0% /run/lock\ntmpfs                     496M     0  496M   0% /sys/fs/cgroup\n/dev/mapper/data-volume1  9.8G   23M  9.2G   1% /data\ntmpfs                     100M     0  100M   0% /run/user/1000\n```\n\n\n\n- Check the entry in `/etc/fstab`\n```bash\nubuntu@ip-10-0-1-123:~$ cat /etc/fstab\nLABEL=cloudimg-rootfs   /        ext4   defaults,discard        0 0\n/dev/data/volume1 /data ext4 defaults 0 0\n```\n\n- destroy\n```bash\n$ terraform destroy -var-file=../../terraform.tfvars\n\nDestroy complete! Resources: 23 destroyed.\n```"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_010_customVPC_3PriSbnts_3PubSbnts_nat_igw_rt_ec2_ebs_withMount/scripts/init.cfg",
    "content": "#cloud-config\n\n# we will upgrade the repo and also upgrade all\nrepo_update: true\nrepo_upgrade: all\n\n# we will install the following package in ubuntu\npackages:\n  - lvm2\n\noutput:\n  all: '| tee -a /var/log/cloud-init-output.log'\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_010_customVPC_3PriSbnts_3PubSbnts_nat_igw_rt_ec2_ebs_withMount/scripts/volumes.sh",
    "content": "#!/bin/bash\n\nset -ex\n\n# this will refresh the lvm state that we installed using init.cfg\nvgchange -ay\n\n\n# it will check wether we already have a file system or not. If not then we will create. If it has then it will not format it.\nDEVICE_FS=`blkid -o value -s TYPE ${DEVICE} || echo \"\"`\nif [ \"`echo -n $DEVICE_FS`\" == \"\" ] ; then\n  # wait for the device to be attached\n  DEVICENAME=`echo \"${DEVICE}\" | awk -F '/' '{print $3}'`\n  DEVICEEXISTS=''\n  while [[ -z $DEVICEEXISTS ]]; do\n    echo \"checking $DEVICENAME\"\n    DEVICEEXISTS=`lsblk |grep \"$DEVICENAME\" |wc -l`\n    if [[ $DEVICEEXISTS != \"1\" ]]; then\n      sleep 15\n    fi\n  done\n  pvcreate ${DEVICE}\n  vgcreate data ${DEVICE}\n  lvcreate --name volume1 -l 100%FREE data\n  mkfs.ext4 /dev/data/volume1\nfi\nmkdir -p /data\necho '/dev/data/volume1 /data ext4 defaults 0 0' >> /etc/fstab\nmount /data\n\n# install docker\ncurl https://get.docker.com | bash\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_010_customVPC_3PriSbnts_3PubSbnts_nat_igw_rt_ec2_ebs_withMount/versions.tf",
    "content": "\nterraform {\n  required_version = \">= 0.12\"\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_011_route53/00-vars.tf",
    "content": "variable \"AWS_REGION\" {\n  default = \"us-east-1\"\n}\n\nvariable \"domain_mydevops_link\" {\n  default = \"k118.tk\"\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_011_route53/05-provider.tf",
    "content": "provider \"aws\" {\n  region = var.AWS_REGION\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_011_route53/250-r53-devopslink_zone.tf",
    "content": "###_____   ___    _   _   _____\n##|__  /  / _ \\  | \\ | | | ____|\n####/ /  | | | | |  \\| | |  _|\n###/ /_  | |_| | | |\\  | | |___\n##/____|  \\___/  |_| \\_| |_____|\n\nresource \"aws_route53_zone\" \"devopslink-public-zone\" {\n  name = var.domain_mydevops_link\n  comment = \"${var.domain_mydevops_link} public zone\"\n  provider = aws\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_011_route53/30-output.tf",
    "content": "output \"devopslink-public-zone-id\" {\n  value = aws_route53_zone.devopslink-public-zone.zone_id\n}\n\noutput \"devopslink-name-servers\" {\n  value = aws_route53_zone.devopslink-public-zone.name_servers\n}\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_011_route53/ReadMe.md",
    "content": "## Objective \n\n\n\n1) To create a hosted zone and get the list of name servers\n\n\n\n\n- Init\n\n```bash\n$ terraform init   \n```\n\n- Plan\n\n```                                 \n$ terraform plan \n\nApply complete! Resources: 1 added, 0 changed, 0 destroyed.\n.\n.\n.\n```\n\n\n- Apply\n```bash\n$ terraform apply \n.\n.\n.\nApply complete! Resources: 1 added, 0 changed, 0 destroyed.\n\nOutputs:\n\ndevopslink-name-servers = [\n  \"ns-****.awsdns-11.org\",\n  \"ns-****.awsdns-55.co.uk\",\n  \"ns-*****.awsdns-42.com\",\n  \"ns-*****.awsdns-07.net\",\n]\ndevopslink-public-zone-id = Z030********************ZYUV\n\n```\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_011_route53/versions.tf",
    "content": "\nterraform {\n  required_version = \">= 0.12\"\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_012_rds_vpc_ec2/00-vars.tf",
    "content": "variable \"AWS_REGION\" {\n  default = \"us-east-1\"\n}\n\nvariable \"PATH_TO_PRIVATE_KEY\" {\n  default = \"~/.ssh/id_rsa\"\n}\n\nvariable \"PATH_TO_PUBLIC_KEY\" {\n  default = \"~/.ssh/id_rsa.pub\"\n}\n\n\nvariable \"AMIS\" {\n  type = map(string)\n  default = {\n    us-east-1 = \"ami-13be557e\"\n    us-west-2 = \"ami-06b94666\"\n    eu-west-1 = \"ami-844e0bf7\"\n  }\n}\n\nvariable \"RDS_PASSWORD\" {\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_012_rds_vpc_ec2/05-provider.tf",
    "content": "provider \"aws\" {\n  region = var.AWS_REGION\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_012_rds_vpc_ec2/15-vpc.tf",
    "content": "# Internet VPC\nresource \"aws_vpc\" \"main\" {\n  cidr_block           = \"10.0.0.0/16\"\n  instance_tenancy     = \"default\"\n  enable_dns_support   = \"true\"\n  enable_dns_hostnames = \"true\"\n  enable_classiclink   = \"false\"\n  tags = {\n    Name = \"main\"\n  }\n}\n\n# Subnets\nresource \"aws_subnet\" \"main-public-1\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.1.0/24\"\n  map_public_ip_on_launch = \"true\"\n  availability_zone       = \"us-east-1a\"\n\n  tags = {\n    Name = \"main-public-1\"\n  }\n}\n\nresource \"aws_subnet\" \"main-public-2\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.2.0/24\"\n  map_public_ip_on_launch = \"true\"\n  availability_zone       = \"us-east-1b\"\n\n  tags = {\n    Name = \"main-public-2\"\n  }\n}\n\nresource \"aws_subnet\" \"main-public-3\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.3.0/24\"\n  map_public_ip_on_launch = \"true\"\n  availability_zone       = \"us-east-1c\"\n\n  tags = {\n    Name = \"main-public-3\"\n  }\n}\n\nresource \"aws_subnet\" \"main-private-1\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.4.0/24\"\n  map_public_ip_on_launch = \"false\"\n  availability_zone       = \"us-east-1a\"\n\n  tags = {\n    Name = \"main-private-1\"\n  }\n}\n\nresource \"aws_subnet\" \"main-private-2\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.5.0/24\"\n  map_public_ip_on_launch = \"false\"\n  availability_zone       = \"us-east-1b\"\n\n  tags = {\n    Name = \"main-private-2\"\n  }\n}\n\nresource \"aws_subnet\" \"main-private-3\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.6.0/24\"\n  map_public_ip_on_launch = \"false\"\n  availability_zone       = \"us-east-1c\"\n\n  tags = {\n    Name = \"main-private-3\"\n  }\n}\n\n# Internet GW\nresource \"aws_internet_gateway\" \"main-gw\" {\n  vpc_id = aws_vpc.main.id\n\n  tags = {\n    Name = \"main\"\n  }\n}\n\n# route tables\nresource \"aws_route_table\" \"main-public\" {\n  vpc_id = aws_vpc.main.id\n  route {\n    cidr_block = \"0.0.0.0/0\"\n    gateway_id = aws_internet_gateway.main-gw.id\n  }\n\n  tags = {\n    Name = \"main-public-1\"\n  }\n}\n\n# route associations public\nresource \"aws_route_table_association\" \"main-public-1-a\" {\n  subnet_id      = aws_subnet.main-public-1.id\n  route_table_id = aws_route_table.main-public.id\n}\n\nresource \"aws_route_table_association\" \"main-public-2-a\" {\n  subnet_id      = aws_subnet.main-public-2.id\n  route_table_id = aws_route_table.main-public.id\n}\n\nresource \"aws_route_table_association\" \"main-public-3-a\" {\n  subnet_id      = aws_subnet.main-public-3.id\n  route_table_id = aws_route_table.main-public.id\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_012_rds_vpc_ec2/17-key.tf",
    "content": "resource \"aws_key_pair\" \"mykeypair\" {\n  key_name   = \"mykeypair\"\n  public_key = file(var.PATH_TO_PUBLIC_KEY)\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_012_rds_vpc_ec2/18-securitygroup.tf",
    "content": "resource \"aws_security_group\" \"example-instance\" {\n  vpc_id      = aws_vpc.main.id\n  name        = \"allow-ssh\"\n  description = \"security group that allows ssh and all egress traffic\"\n  egress {\n    from_port   = 0\n    to_port     = 0\n    protocol    = \"-1\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n\n  ingress {\n    from_port   = 22\n    to_port     = 22\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n  tags = {\n    Name = \"example-instance\"\n  }\n}\n\nresource \"aws_security_group\" \"allow-mariadb\" {\n  vpc_id      = aws_vpc.main.id\n  name        = \"allow-mariadb\"\n  description = \"allow-mariadb\"\n  ingress {\n    from_port       = 3306\n    to_port         = 3306\n    protocol        = \"tcp\"\n    // If the connection comes from an instance that has the following  securiy group attached , it will be allowed\n    security_groups = [aws_security_group.example-instance.id] # allowing access from our example instance\n  }\n  egress {\n    from_port   = 0\n    to_port     = 0\n    protocol    = \"-1\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n    self        = true\n  }\n  tags = {\n    Name = \"allow-mariadb\"\n  }\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_012_rds_vpc_ec2/20-instance.tf",
    "content": "resource \"aws_instance\" \"example\" {\n  ami           = var.AMIS[var.AWS_REGION]\n  instance_type = \"t2.micro\"\n\n  # the VPC subnet\n  subnet_id = aws_subnet.main-public-1.id\n\n  # the security group\n  vpc_security_group_ids = [aws_security_group.example-instance.id]\n\n  # the public SSH key\n  key_name = aws_key_pair.mykeypair.key_name\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_012_rds_vpc_ec2/25-rds.tf",
    "content": "resource \"aws_db_subnet_group\" \"mariadb-subnet\" {\n  name        = \"mariadb-subnet\"\n  description = \"RDS subnet group\"\n  // the instance will be set up in these two subnets\n  subnet_ids  = [aws_subnet.main-private-1.id, aws_subnet.main-private-2.id]\n}\n\nresource \"aws_db_parameter_group\" \"mariadb-parameters\" {\n  name        = \"mariadb-parameters\"\n  family      = \"mariadb10.1\"\n  description = \"MariaDB parameter group\"\n\n  parameter {\n    name  = \"max_allowed_packet\"\n    value = \"16777216\"\n  }\n}\n\nresource \"aws_db_instance\" \"mariadb\" {\n  allocated_storage       = 100 # 100 GB of storage, gives us more IOPS than a lower number\n  engine                  = \"mariadb\"\n  engine_version          = \"10.1.14\"\n  instance_class          = \"db.t2.small\" # use micro if you want to use the free tier\n  identifier              = \"mariadb\"\n  name                    = \"mariadb\"\n  username                = \"root\"           # username\n  password                = var.RDS_PASSWORD # password\n  db_subnet_group_name    = aws_db_subnet_group.mariadb-subnet.name\n  parameter_group_name    = aws_db_parameter_group.mariadb-parameters.name\n  multi_az                = \"false\" # set to true to have high availability: 2 instances synchronized with each other\n  vpc_security_group_ids  = [aws_security_group.allow-mariadb.id]\n  storage_type            = \"gp2\"\n  backup_retention_period = 30                                          # how long you’re going to keep your backups\n  availability_zone       = aws_subnet.main-private-1.availability_zone # prefered AZ\n  skip_final_snapshot     = true                                        # skip final snapshot when doing terraform destroy\n  tags = {\n    Name = \"mariadb-instance\"\n  }\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_012_rds_vpc_ec2/30-output.tf",
    "content": "output \"instance\" {\n  value = aws_instance.example.public_ip\n}\n\noutput \"rds\" {\n  value = aws_db_instance.mariadb.endpoint\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_012_rds_vpc_ec2/ReadMe.md",
    "content": "## Objective \n\n\n1) To spin up an RDS instance in private subnet in a VPC.\n2) To spin up an ec2 instance in public subnet in same VPC\n3) Access to the RDS is allowed only from the instance which is in public subnet.\n\n\n- Init\n\n```bash\n$ terraform init   \n```\n\n- Plan\n\n```                                 \n$ terraform plan -var-file=../../terraform.tfvars\n$ terraform plan -var-file=../../terraform.tfvars\nvar.RDS_PASSWORD\n  Enter a value: testpassword\n.\n.\n.\nPlan: 19 to add, 0 to change, 0 to destroy.\n.\n.\n.\n```\n\n\n- Apply\n```bash\n$ terraform apply -var-file=../../terraform.tfvars\nvar.RDS_PASSWORD\n  Enter a value: testpassword\n.\n.\n.\nApply complete! Resources: 19 added, 0 changed, 0 destroyed.\n\nOutputs:\n\ninstance = 3.84.29.14\nrds = mariadb.cqxustccju3j.us-east-1.rds.amazonaws.com:3306\n\n```\n\n\n- Login into the instance\n```bash\n$ ssh ubuntu@3.84.29.14\nubuntu@ip-10-0-1-52:~$\n```\n\n- Install mysql-client\n```bash\nubuntu@ip-10-0-1-52:~$ sudo apt update\nubuntu@ip-10-0-1-52:~$ sudo apt install mysql-client\n```\n\n- Login into the Database\n```bash\nubuntu@ip-10-0-1-18:~$ mysql -u root -h mariadb.cqxustccju3j.us-east-1.rds.amazonaws.com -p\nEnter password: \nWelcome to the MySQL monitor.  Commands end with ; or \\g.\nYour MySQL connection id is 9\nServer version: 5.5.5-10.1.14-MariaDB MariaDB Server\n\nCopyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.\n\nOracle is a registered trademark of Oracle Corporation and/or its\naffiliates. Other names may be trademarks of their respective\nowners.\n\nType 'help;' or '\\h' for help. Type '\\c' to clear the current input statement.\n\nmysql>\nmysql> show databases;\n+--------------------+\n| Database           |\n+--------------------+\n| information_schema |\n| innodb             |\n| mariadb            |\n| mysql              |\n| performance_schema |\n+--------------------+\n5 rows in set (0.00 sec)\n\nmysql> \n\n```\n\n\n- Note that the DB hostname resolves to internal IP address\n```bash\nubuntu@ip-10-0-1-18:~$ nslookup mariadb.cqxustccju3j.us-east-1.rds.amazonaws.com\nServer:         10.0.0.2\nAddress:        10.0.0.2#53\n\nNon-authoritative answer:\nName:   mariadb.cqxustccju3j.us-east-1.rds.amazonaws.com\nAddress: 10.0.4.48\n```\n\n\n- Finally Destroy\n```bash\n$ terraform destroy -var-file=../../terraform.tfvars\n.\n.\n.\n\nDestroy complete! Resources: 19 destroyed.\n\n```"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_012_rds_vpc_ec2/versions.tf",
    "content": "\nterraform {\n  required_version = \">= 0.12\"\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_013_IAM/00-vars.tf",
    "content": "variable \"AWS_REGION\" {\n  default = \"us-east-1\"\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_013_IAM/05-provider.tf",
    "content": "provider \"aws\" {\n  region = var.AWS_REGION\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_013_IAM/10-iam.tf",
    "content": "# group definition\nresource \"aws_iam_group\" \"administrators\" {\n  name = \"administrators\"\n}\n\nresource \"aws_iam_policy_attachment\" \"administrators-attach\" {\n  name       = \"administrators-attach\"\n  groups     = [aws_iam_group.administrators.name]\n  policy_arn = \"arn:aws:iam::aws:policy/AdministratorAccess\"\n}\n\n# user\nresource \"aws_iam_user\" \"admin1\" {\n  name = \"admin1\"\n}\n\nresource \"aws_iam_user\" \"admin2\" {\n  name = \"admin2\"\n}\n\nresource \"aws_iam_group_membership\" \"administrators-users\" {\n  name = \"administrators-users\"\n  users = [\n    aws_iam_user.admin1.name,\n    aws_iam_user.admin2.name,\n  ]\n  group = aws_iam_group.administrators.name\n}\n\noutput \"warning\" {\n  value = \"WARNING: make sure you're not using the AdministratorAccess policy for other users/groups/roles. If this is the case, don't run terraform destroy, but manually unlink the created resources\"\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_013_IAM/ReadMe.md",
    "content": "## Objective \n\n\n1) To create a group `administrators`\n2) To create two users `admin1` and `admin2` and add them to the group.\n3) To attach policy `AdministratorAccess` to the group.\n\n\n- Init\n\n```bash\n$ terraform init   \n```\n\n- Plan\n\n```                                 \n$ terraform plan \n.\n.\n.\nPlan: 5 to add, 0 to change, 0 to destroy.\n.\n.\n.\n```\n\n\n- Apply\n```bash\n$ terraform apply \n\n.\n.\n.\nApply complete! Resources: 5 added, 0 changed, 0 destroyed.\n\nOutputs:\n\nwarning = WARNING: make sure you're not using the AdministratorAccess policy for other users/groups/roles. If this is the case, don't run terraform destroy, but manually unlink the created resources\n```\n\n\n\n- Destroy\n```bash\n$ terraform destroy                                 \nDestroy complete! Resources: 5 destroyed.\n```"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_013_IAM/versions.tf",
    "content": "\nterraform {\n  required_version = \">= 0.12\"\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_014_IAM_roles_s3_upload_to_s3/00-vars.tf",
    "content": "variable \"AWS_REGION\" {\n  default = \"us-east-1\"\n}\n\nvariable \"PATH_TO_PRIVATE_KEY\" {\n  default = \"~/.ssh/id_rsa\"\n}\n\nvariable \"PATH_TO_PUBLIC_KEY\" {\n  default = \"~/.ssh/id_rsa.pub\"\n}\n\n\nvariable \"AMIS\" {\n  type = map(string)\n  default = {\n    us-east-1 = \"ami-13be557e\"\n    us-west-2 = \"ami-06b94666\"\n    eu-west-1 = \"ami-844e0bf7\"\n  }\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_014_IAM_roles_s3_upload_to_s3/05-provider.tf",
    "content": "provider \"aws\" {\n  region = var.AWS_REGION\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_014_IAM_roles_s3_upload_to_s3/10-iam.tf",
    "content": "// Provides an IAM role.\nresource \"aws_iam_role\" \"s3-mybucket-role\" {\n  name               = \"s3-mybucket-role\"\n  assume_role_policy = <<EOF\n{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [\n    {\n      \"Action\": \"sts:AssumeRole\",\n      \"Principal\": {\n        \"Service\": \"ec2.amazonaws.com\"\n      },\n      \"Effect\": \"Allow\",\n      \"Sid\": \"\"\n    }\n  ]\n}\nEOF\n\n}\n\n// Provides an IAM instance profile.\nresource \"aws_iam_instance_profile\" \"s3-mybucket-role-instanceprofile\" {\n  name = \"s3-mybucket-role\"\n  role = aws_iam_role.s3-mybucket-role.name\n}\n\n\n// Provides an IAM role inline policy.\nresource \"aws_iam_role_policy\" \"s3-mybucket-role-policy\" {\n  name = \"s3-mybucket-role-policy\"\n  role = aws_iam_role.s3-mybucket-role.id\n  policy = <<EOF\n{\n    \"Version\": \"2012-10-17\",\n    \"Statement\": [\n        {\n            \"Effect\": \"Allow\",\n            \"Action\": [\n              \"s3:*\"\n            ],\n            \"Resource\": [\n              \"arn:aws:s3:::mybucket-codeaprendiz-26071994\",\n              \"arn:aws:s3:::mybucket-codeaprendiz-26071994/*\"\n            ]\n        }\n    ]\n}\nEOF\n\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_014_IAM_roles_s3_upload_to_s3/15-vpc.tf",
    "content": "# Internet VPC\nresource \"aws_vpc\" \"main\" {\n  cidr_block           = \"10.0.0.0/16\"\n  instance_tenancy     = \"default\"\n  enable_dns_support   = \"true\"\n  enable_dns_hostnames = \"true\"\n  enable_classiclink   = \"false\"\n  tags = {\n    Name = \"main\"\n  }\n}\n\n# Subnets\nresource \"aws_subnet\" \"main-public-1\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.1.0/24\"\n  map_public_ip_on_launch = \"true\"\n  availability_zone       = \"us-east-1a\"\n\n  tags = {\n    Name = \"main-public-1\"\n  }\n}\n\nresource \"aws_subnet\" \"main-public-2\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.2.0/24\"\n  map_public_ip_on_launch = \"true\"\n  availability_zone       = \"us-east-1b\"\n\n  tags = {\n    Name = \"main-public-2\"\n  }\n}\n\nresource \"aws_subnet\" \"main-public-3\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.3.0/24\"\n  map_public_ip_on_launch = \"true\"\n  availability_zone       = \"us-east-1c\"\n\n  tags = {\n    Name = \"main-public-3\"\n  }\n}\n\nresource \"aws_subnet\" \"main-private-1\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.4.0/24\"\n  map_public_ip_on_launch = \"false\"\n  availability_zone       = \"us-east-1a\"\n\n  tags = {\n    Name = \"main-private-1\"\n  }\n}\n\nresource \"aws_subnet\" \"main-private-2\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.5.0/24\"\n  map_public_ip_on_launch = \"false\"\n  availability_zone       = \"us-east-1b\"\n\n  tags = {\n    Name = \"main-private-2\"\n  }\n}\n\nresource \"aws_subnet\" \"main-private-3\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.6.0/24\"\n  map_public_ip_on_launch = \"false\"\n  availability_zone       = \"us-east-1c\"\n\n  tags = {\n    Name = \"main-private-3\"\n  }\n}\n\n# Internet GW\nresource \"aws_internet_gateway\" \"main-gw\" {\n  vpc_id = aws_vpc.main.id\n\n  tags = {\n    Name = \"main\"\n  }\n}\n\n# route tables\nresource \"aws_route_table\" \"main-public\" {\n  vpc_id = aws_vpc.main.id\n  route {\n    cidr_block = \"0.0.0.0/0\"\n    gateway_id = aws_internet_gateway.main-gw.id\n  }\n\n  tags = {\n    Name = \"main-public-1\"\n  }\n}\n\n# route associations public\nresource \"aws_route_table_association\" \"main-public-1-a\" {\n  subnet_id      = aws_subnet.main-public-1.id\n  route_table_id = aws_route_table.main-public.id\n}\n\nresource \"aws_route_table_association\" \"main-public-2-a\" {\n  subnet_id      = aws_subnet.main-public-2.id\n  route_table_id = aws_route_table.main-public.id\n}\n\nresource \"aws_route_table_association\" \"main-public-3-a\" {\n  subnet_id      = aws_subnet.main-public-3.id\n  route_table_id = aws_route_table.main-public.id\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_014_IAM_roles_s3_upload_to_s3/17-key.tf",
    "content": "resource \"aws_key_pair\" \"mykeypair\" {\n  key_name   = \"mykeypair\"\n  public_key = file(var.PATH_TO_PUBLIC_KEY)\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_014_IAM_roles_s3_upload_to_s3/18-securitygroup.tf",
    "content": "resource \"aws_security_group\" \"example-instance\" {\n  vpc_id      = aws_vpc.main.id\n  name        = \"allow-ssh\"\n  description = \"security group that allows ssh and all egress traffic\"\n  egress {\n    from_port   = 0\n    to_port     = 0\n    protocol    = \"-1\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n\n  ingress {\n    from_port   = 22\n    to_port     = 22\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n  tags = {\n    Name = \"example-instance\"\n  }\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_014_IAM_roles_s3_upload_to_s3/20-instance.tf",
    "content": "resource \"aws_instance\" \"example\" {\n  ami           = var.AMIS[var.AWS_REGION]\n  instance_type = \"t2.micro\"\n\n  # the VPC subnet\n  subnet_id = aws_subnet.main-public-1.id\n\n  # the security group\n  vpc_security_group_ids = [aws_security_group.example-instance.id]\n\n  # the public SSH key\n  key_name = aws_key_pair.mykeypair.key_name\n\n  # role:\n  iam_instance_profile = aws_iam_instance_profile.s3-mybucket-role-instanceprofile.name\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_014_IAM_roles_s3_upload_to_s3/25-s3.tf",
    "content": "resource \"aws_s3_bucket\" \"b\" {\n  bucket = \"mybucket-codeaprendiz-26071994\"\n  acl    = \"private\"\n\n  tags = {\n    Name = \"mybucket-codeaprendiz-26071994\"\n  }\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_014_IAM_roles_s3_upload_to_s3/30-output.tf",
    "content": "output \"instance\" {\n  value = aws_instance.example.public_ip\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_014_IAM_roles_s3_upload_to_s3/ReadMe.md",
    "content": "## Objective\n\n1) To assign IAM role to an ec2 instance so that it can upload an object to s3 and download the same.\n2) The bucket is private (The object you uploaded should not be accessible publically)\n- init\n```bash\n$ terraform init\n\n```\n\n\n- plan\n```bash\n$ terraform plan\nPlan: 19 to add, 0 to change, 0 to destroy.\n```\n\n- apply\n```bash\n$ terraform apply\nApply complete! Resources: 19 added, 0 changed, 0 destroyed.\n\nOutputs:\n\ninstance = 34.230.47.36\n```\n\n\n- Login to the instance and install\n```bash\n$ ssh ubuntu@34.230.47.36                          \nubuntu@ip-10-0-1-59:~$ sudo su\nroot@ip-10-0-1-59:/home/ubuntu# apt update\nroot@ip-10-0-1-59:/home/ubuntu# apt-get install -y python-pip\nroot@ip-10-0-1-59:/home/ubuntu# apt-get install -y python-dev\nroot@ip-10-0-1-59:/home/ubuntu# pip install awscli\n```\n\n- Create sample text file and upload to S3\n```bash\nroot@ip-10-0-1-59:/home/ubuntu# echo \"this is sample text to be uploaded to S3\" > test.txt\n```\n\n\n- Finally, the moment we have been waiting for! Upload an object to S3.\n```bash\nroot@ip-10-0-1-59:/home/ubuntu# aws s3 cp test.txt s3://mybucket-codeaprendiz-26071994/test.txt\nupload: ./test.txt to s3://mybucket-codeaprendiz-26071994/test.txt\n```\n\n\n\n- How is it happening\n```bash\n\nroot@ip-10-0-1-59:/home/ubuntu# curl http://169.254.169.254/latest/meta-data/iam/security-credentials/s3-mybucket-role\n{\n  \"Code\" : \"Success\",\n  \"LastUpdated\" : \"2020-05-22T11:28:17Z\",\n  \"Type\" : \"AWS-HMAC\",\n  \"AccessKeyId\" : \"ASIATFSX4L6LIOMILB7H\",\n  \"SecretAccessKey\" : \"H5gVzrPzH3L1Cv8NBGEgdEOFqxAjOEYm0y5vrEia\",\n  \"Token\" : \"IQ8************VjEOz//////////wEaCXVzLWVhc3QtMSJIME4ieN40Ha************************==\",\n  \"Expiration\" : \"2020-05-22T17:49:20Z\"\n}\n```\n\n\n- Now download the file from s3 and see the contents\n```bash\nubuntu@ip-10-0-1-59:~$ aws s3 cp s3://mybucket-codeaprendiz-26071994/test.txt newfile.txt\ndownload: s3://mybucket-codeaprendiz-26071994/test.txt to ./newfile.txt\nubuntu@ip-10-0-1-59:~$ cat ./newfile.txt \nthis is sample text to be uploaded to S3\n```\n\n- Note, you have not be able to access this file via public internet because the bucket is private.\n\n\n- destroy. You will need to empty the bucket via console for terraform destroy to work on s3 as well. \n```bash\n$ terraform destroy\nDestroy complete! Resources: 19 destroyed.\n\n```\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_014_IAM_roles_s3_upload_to_s3/versions.tf",
    "content": "\nterraform {\n  required_version = \">= 0.12\"\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_015_autoscaling_cloudwatchAlarm_ec2_launchConfiguration/00-vars.tf",
    "content": "variable \"AWS_REGION\" {\n  default = \"us-east-1\"\n}\n\nvariable \"PATH_TO_PRIVATE_KEY\" {\n  default = \"~/.ssh/id_rsa\"\n}\n\nvariable \"PATH_TO_PUBLIC_KEY\" {\n  default = \"~/.ssh/id_rsa.pub\"\n}\n\nvariable \"AMIS\" {\n  type = map(string)\n  default = {\n    us-east-1 = \"ami-13be557e\"\n    us-west-2 = \"ami-06b94666\"\n    eu-west-1 = \"ami-844e0bf7\"\n  }\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_015_autoscaling_cloudwatchAlarm_ec2_launchConfiguration/05-provider.tf",
    "content": "provider \"aws\" {\n  region = var.AWS_REGION\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_015_autoscaling_cloudwatchAlarm_ec2_launchConfiguration/15-vpc.tf",
    "content": "# Internet VPC\nresource \"aws_vpc\" \"main\" {\n  cidr_block           = \"10.0.0.0/16\"\n  instance_tenancy     = \"default\"\n  enable_dns_support   = \"true\"\n  enable_dns_hostnames = \"true\"\n  enable_classiclink   = \"false\"\n  tags = {\n    Name = \"main\"\n  }\n}\n\n# Subnets\nresource \"aws_subnet\" \"main-public-1\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.1.0/24\"\n  map_public_ip_on_launch = \"true\"\n  availability_zone       = \"us-east-1a\"\n\n  tags = {\n    Name = \"main-public-1\"\n  }\n}\n\nresource \"aws_subnet\" \"main-public-2\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.2.0/24\"\n  map_public_ip_on_launch = \"true\"\n  availability_zone       = \"us-east-1b\"\n\n  tags = {\n    Name = \"main-public-2\"\n  }\n}\n\nresource \"aws_subnet\" \"main-public-3\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.3.0/24\"\n  map_public_ip_on_launch = \"true\"\n  availability_zone       = \"us-east-1c\"\n\n  tags = {\n    Name = \"main-public-3\"\n  }\n}\n\nresource \"aws_subnet\" \"main-private-1\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.4.0/24\"\n  map_public_ip_on_launch = \"false\"\n  availability_zone       = \"us-east-1a\"\n\n  tags = {\n    Name = \"main-private-1\"\n  }\n}\n\nresource \"aws_subnet\" \"main-private-2\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.5.0/24\"\n  map_public_ip_on_launch = \"false\"\n  availability_zone       = \"us-east-1b\"\n\n  tags = {\n    Name = \"main-private-2\"\n  }\n}\n\nresource \"aws_subnet\" \"main-private-3\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.6.0/24\"\n  map_public_ip_on_launch = \"false\"\n  availability_zone       = \"us-east-1c\"\n\n  tags = {\n    Name = \"main-private-3\"\n  }\n}\n\n# Internet GW\nresource \"aws_internet_gateway\" \"main-gw\" {\n  vpc_id = aws_vpc.main.id\n\n  tags = {\n    Name = \"main\"\n  }\n}\n\n# route tables\nresource \"aws_route_table\" \"main-public\" {\n  vpc_id = aws_vpc.main.id\n  route {\n    cidr_block = \"0.0.0.0/0\"\n    gateway_id = aws_internet_gateway.main-gw.id\n  }\n\n  tags = {\n    Name = \"main-public-1\"\n  }\n}\n\n# route associations public\nresource \"aws_route_table_association\" \"main-public-1-a\" {\n  subnet_id      = aws_subnet.main-public-1.id\n  route_table_id = aws_route_table.main-public.id\n}\n\nresource \"aws_route_table_association\" \"main-public-2-a\" {\n  subnet_id      = aws_subnet.main-public-2.id\n  route_table_id = aws_route_table.main-public.id\n}\n\nresource \"aws_route_table_association\" \"main-public-3-a\" {\n  subnet_id      = aws_subnet.main-public-3.id\n  route_table_id = aws_route_table.main-public.id\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_015_autoscaling_cloudwatchAlarm_ec2_launchConfiguration/17-key.tf",
    "content": "resource \"aws_key_pair\" \"mykeypair\" {\n  key_name   = \"mykeypair\"\n  public_key = file(var.PATH_TO_PUBLIC_KEY)\n  lifecycle {\n    ignore_changes = [public_key]\n  }\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_015_autoscaling_cloudwatchAlarm_ec2_launchConfiguration/18-securitygroup.tf",
    "content": "resource \"aws_security_group\" \"allow-ssh\" {\n  vpc_id      = aws_vpc.main.id\n  name        = \"allow-ssh\"\n  description = \"security group that allows ssh and all egress traffic\"\n  egress {\n    from_port   = 0\n    to_port     = 0\n    protocol    = \"-1\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n\n  ingress {\n    from_port   = 22\n    to_port     = 22\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n  tags = {\n    Name = \"allow-ssh\"\n  }\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_015_autoscaling_cloudwatchAlarm_ec2_launchConfiguration/20-autoscalingpolicy.tf",
    "content": "# scale up alarm\n\n// Provides an AutoScaling Scaling Policy resource.\n\nresource \"aws_autoscaling_policy\" \"example-cpu-policy\" {\n  name                   = \"example-cpu-policy\"\n  autoscaling_group_name = aws_autoscaling_group.example-autoscaling.name\n  adjustment_type        = \"ChangeInCapacity\"\n  scaling_adjustment     = \"1\"\n  cooldown               = \"300\"\n  policy_type            = \"SimpleScaling\"\n}\n\n// Provides a CloudWatch Metric Alarm resource.\n\nresource \"aws_cloudwatch_metric_alarm\" \"example-cpu-alarm\" {\n  alarm_name          = \"example-cpu-alarm\"\n  alarm_description   = \"example-cpu-alarm\"\n  comparison_operator = \"GreaterThanOrEqualToThreshold\"\n  evaluation_periods  = \"2\"\n  metric_name         = \"CPUUtilization\"\n  namespace           = \"AWS/EC2\"\n  period              = \"120\"\n  statistic           = \"Average\"\n  threshold           = \"30\"\n\n  dimensions = {\n    \"AutoScalingGroupName\" = aws_autoscaling_group.example-autoscaling.name\n  }\n\n  actions_enabled = true\n  alarm_actions   = [aws_autoscaling_policy.example-cpu-policy.arn]\n}\n\n# scale down alarm\nresource \"aws_autoscaling_policy\" \"example-cpu-policy-scaledown\" {\n  name                   = \"example-cpu-policy-scaledown\"\n  autoscaling_group_name = aws_autoscaling_group.example-autoscaling.name\n  adjustment_type        = \"ChangeInCapacity\"\n  scaling_adjustment     = \"-1\"\n  cooldown               = \"300\"\n  policy_type            = \"SimpleScaling\"\n}\n\nresource \"aws_cloudwatch_metric_alarm\" \"example-cpu-alarm-scaledown\" {\n  alarm_name          = \"example-cpu-alarm-scaledown\"\n  alarm_description   = \"example-cpu-alarm-scaledown\"\n  comparison_operator = \"LessThanOrEqualToThreshold\"\n  evaluation_periods  = \"2\"\n  metric_name         = \"CPUUtilization\"\n  namespace           = \"AWS/EC2\"\n  period              = \"120\"\n  statistic           = \"Average\"\n  threshold           = \"5\"\n\n  dimensions = {\n    \"AutoScalingGroupName\" = aws_autoscaling_group.example-autoscaling.name\n  }\n\n  actions_enabled = true\n  alarm_actions   = [aws_autoscaling_policy.example-cpu-policy-scaledown.arn]\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_015_autoscaling_cloudwatchAlarm_ec2_launchConfiguration/25-autoscaling.tf",
    "content": "// Provides a resource to create a new launch configuration, used for autoscaling groups.\nresource \"aws_launch_configuration\" \"example-launchconfig\" {\n  name_prefix     = \"example-launchconfig\"\n  image_id        = var.AMIS[var.AWS_REGION]\n  instance_type   = \"t2.micro\"\n  key_name        = aws_key_pair.mykeypair.key_name\n  security_groups = [aws_security_group.allow-ssh.id]\n}\n\n// Provides an AutoScaling Group resource.\nresource \"aws_autoscaling_group\" \"example-autoscaling\" {\n  name                      = \"example-autoscaling\"\n  vpc_zone_identifier       = [aws_subnet.main-public-1.id, aws_subnet.main-public-2.id]\n  launch_configuration      = aws_launch_configuration.example-launchconfig.name\n  min_size                  = 1\n  max_size                  = 2\n  health_check_grace_period = 300\n  health_check_type         = \"EC2\"\n  force_delete              = true\n\n  tag {\n    key                 = \"Name\"\n    value               = \"ec2 instance\"\n    propagate_at_launch = true\n  }\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_015_autoscaling_cloudwatchAlarm_ec2_launchConfiguration/30-sns.tf",
    "content": "// Provides an SNS topic resource\n\nresource \"aws_sns_topic\" \"example-sns\" {\n  name         = \"sg-sns\"\n  display_name = \"example ASG SNS topic\"\n}\n\n//Provides an AutoScaling Group with Notification support, via SNS Topics. Each of the notifications\n//map to a Notification Configuration inside Amazon Web Services, and are applied to each AutoScaling Group you supply.\nresource \"aws_autoscaling_notification\" \"example-notify\" {\n  group_names = [aws_autoscaling_group.example-autoscaling.name]\n  topic_arn     = aws_sns_topic.example-sns.arn\n  notifications  = [\n    \"autoscaling:EC2_INSTANCE_LAUNCH\",\n    \"autoscaling:EC2_INSTANCE_TERMINATE\",\n    \"autoscaling:EC2_INSTANCE_LAUNCH_ERROR\"\n  ]\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_015_autoscaling_cloudwatchAlarm_ec2_launchConfiguration/ReadMe.md",
    "content": "## Objective\n\n1) To make an autoscaling group with \n```hcl-terraform\n  min_size                  = 1     // min instance required\n  max_size                  = 2     // max instance required\n```\n2) To have an autoscaling policy `example-cpu-policy` of type `Simple scaling`. \n\n3) Choose an Amazon CloudWatch alarm `example-cpu-alarm` to associate with this policy. The alarm will \nautomatically execute the policy when its threshold is breached\n\n4) `example-cpu-alarm` breaches the alarm threshold: CPUUtilization >= 30 for 2 consecutive periods of 120 seconds\n   for the metric dimensions AutoScalingGroupName = example-autoscaling\n   - Take the action: Add 1 capacity units\t\n   - And then wait: 300 seconds before allowing another scaling activity\n\n5) Similarly have a scale down policy `example-cpu-policy-scaledown` of type `Simple scaling`.\n\n6) `example-cpu-alarm-scaledown` breaches the alarm threshold: CPUUtilization <= 5 for 2 consecutive periods of 120 seconds\n   for the metric dimensions AutoScalingGroupName = example-autoscaling\n   - Take the action: Remove 1 capacity units\t\n   - And then wait: 300 seconds before allowing another scaling activity\n   \n7) You can test all these scenarios by installing `stress` on the first instance.\n\n\n\n\n\n\n\n\n### Let's Start\n\n- init\n```bash\nterraform init\n```\n\n\n- plan\n```bash\nterraform plan\nPlan: 22 to add, 0 to change, 0 to destroy.\n```\n\n\n- apply\n```bash\n$ terraform apply\nApply complete! Resources: 22 added, 0 changed, 0 destroyed.\n```\n\n- Get the public IP from the console and login to the instance. Note that there will be only one instance for now.\n\n```bash\n$ ssh ubuntu@34.207.94.36           \n\nubuntu@ip-10-0-1-196:~$ \n```\n\n- Now install `stress` on this instance.\n```bash\nubuntu@ip-10-0-1-196:~$ sudo su\nroot@ip-10-0-1-196:/home/ubuntu# apt update\nroot@ip-10-0-1-196:/home/ubuntu# apt-get install stress\n```\n\n- Now let's timeout this instance and check if our auto scaling policy works good enough.\n\n```bash\nroot@ip-10-0-1-196:/home/ubuntu# stress --cpu 2 --timeout 300\nstress: info: [11505] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd\nstress: info: [11505] successful run completed in 300s\nroot@ip-10-0-1-196:/home/ubuntu# \n```\n\n- Now wait for 5 minutes and see if the new instance spins up. The `example-cpu-alarm` alarm will\ngo in state `In alarm` and a new instance would spin up according to our autoscaling policy.\n\n- Now wait for 5 more minutes and see that the `example-cpu-alarm-scaledown` alarm would go in \n`In alarm` state and one of the instances would be brought down by our scale-down policy.\n\n\n- Once you have witnessed this holy with your own eyes! You can destroy the resources.\n\n\n```bash\nterraform destroy\nDestroy complete! Resources: 22 destroyed.\n\n```"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_015_autoscaling_cloudwatchAlarm_ec2_launchConfiguration/versions.tf",
    "content": "\nterraform {\n  required_version = \">= 0.12\"\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_016_ELB_autoscaling/00-vars.tf",
    "content": "variable \"AWS_REGION\" {\n  default = \"us-east-1\"\n}\n\nvariable \"PATH_TO_PRIVATE_KEY\" {\n  default = \"~/.ssh/id_rsa\"\n}\n\nvariable \"PATH_TO_PUBLIC_KEY\" {\n  default = \"~/.ssh/id_rsa.pub\"\n}\n\nvariable \"AMIS\" {\n  type = map(string)\n  default = {\n    us-east-1 = \"ami-13be557e\"\n    us-west-2 = \"ami-06b94666\"\n    eu-west-1 = \"ami-844e0bf7\"\n  }\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_016_ELB_autoscaling/05-provider.tf",
    "content": "provider \"aws\" {\n  region = var.AWS_REGION\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_016_ELB_autoscaling/15-vpc.tf",
    "content": "# Internet VPC\nresource \"aws_vpc\" \"main\" {\n  cidr_block           = \"10.0.0.0/16\"\n  instance_tenancy     = \"default\"\n  enable_dns_support   = \"true\"\n  enable_dns_hostnames = \"true\"\n  enable_classiclink   = \"false\"\n  tags = {\n    Name = \"main\"\n  }\n}\n\n# Subnets\nresource \"aws_subnet\" \"main-public-1\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.1.0/24\"\n  map_public_ip_on_launch = \"true\"\n  availability_zone       = \"us-east-1a\"\n\n  tags = {\n    Name = \"main-public-1\"\n  }\n}\n\nresource \"aws_subnet\" \"main-public-2\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.2.0/24\"\n  map_public_ip_on_launch = \"true\"\n  availability_zone       = \"us-east-1b\"\n\n  tags = {\n    Name = \"main-public-2\"\n  }\n}\n\nresource \"aws_subnet\" \"main-public-3\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.3.0/24\"\n  map_public_ip_on_launch = \"true\"\n  availability_zone       = \"us-east-1c\"\n\n  tags = {\n    Name = \"main-public-3\"\n  }\n}\n\nresource \"aws_subnet\" \"main-private-1\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.4.0/24\"\n  map_public_ip_on_launch = \"false\"\n  availability_zone       = \"us-east-1a\"\n\n  tags = {\n    Name = \"main-private-1\"\n  }\n}\n\nresource \"aws_subnet\" \"main-private-2\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.5.0/24\"\n  map_public_ip_on_launch = \"false\"\n  availability_zone       = \"us-east-1b\"\n\n  tags = {\n    Name = \"main-private-2\"\n  }\n}\n\nresource \"aws_subnet\" \"main-private-3\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.6.0/24\"\n  map_public_ip_on_launch = \"false\"\n  availability_zone       = \"us-east-1c\"\n\n  tags = {\n    Name = \"main-private-3\"\n  }\n}\n\n# Internet GW\nresource \"aws_internet_gateway\" \"main-gw\" {\n  vpc_id = aws_vpc.main.id\n\n  tags = {\n    Name = \"main\"\n  }\n}\n\n# route tables\nresource \"aws_route_table\" \"main-public\" {\n  vpc_id = aws_vpc.main.id\n  route {\n    cidr_block = \"0.0.0.0/0\"\n    gateway_id = aws_internet_gateway.main-gw.id\n  }\n\n  tags = {\n    Name = \"main-public-1\"\n  }\n}\n\n# route associations public\nresource \"aws_route_table_association\" \"main-public-1-a\" {\n  subnet_id      = aws_subnet.main-public-1.id\n  route_table_id = aws_route_table.main-public.id\n}\n\nresource \"aws_route_table_association\" \"main-public-2-a\" {\n  subnet_id      = aws_subnet.main-public-2.id\n  route_table_id = aws_route_table.main-public.id\n}\n\nresource \"aws_route_table_association\" \"main-public-3-a\" {\n  subnet_id      = aws_subnet.main-public-3.id\n  route_table_id = aws_route_table.main-public.id\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_016_ELB_autoscaling/17-key.tf",
    "content": "resource \"aws_key_pair\" \"mykeypair\" {\n  key_name   = \"mykeypair\"\n  public_key = file(var.PATH_TO_PUBLIC_KEY)\n  lifecycle {\n    ignore_changes = [public_key]\n  }\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_016_ELB_autoscaling/18-securitygroup.tf",
    "content": "resource \"aws_security_group\" \"myinstance\" {\n  vpc_id      = aws_vpc.main.id\n  name        = \"myinstance\"\n  description = \"security group for my instance\"\n  egress {\n    from_port   = 0\n    to_port     = 0\n    protocol    = \"-1\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n\n  ingress {\n    from_port   = 22\n    to_port     = 22\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n\n  ingress {\n    from_port       = 80\n    to_port         = 80\n    protocol        = \"tcp\"\n    security_groups = [aws_security_group.elb-securitygroup.id]\n  }\n\n  tags = {\n    Name = \"myinstance\"\n  }\n}\n\nresource \"aws_security_group\" \"elb-securitygroup\" {\n  vpc_id      = aws_vpc.main.id\n  name        = \"elb\"\n  description = \"security group for load balancer\"\n  egress {\n    from_port   = 0\n    to_port     = 0\n    protocol    = \"-1\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n\n  ingress {\n    from_port   = 80\n    to_port     = 80\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n  tags = {\n    Name = \"elb\"\n  }\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_016_ELB_autoscaling/19-elb.tf",
    "content": "resource \"aws_elb\" \"my-elb\" {\n  name            = \"my-elb\"\n  subnets         = [aws_subnet.main-public-1.id, aws_subnet.main-public-2.id]\n  security_groups = [aws_security_group.elb-securitygroup.id]\n  listener {\n    instance_port     = 80\n    instance_protocol = \"http\"\n    lb_port           = 80\n    lb_protocol       = \"http\"\n  }\n  health_check {\n    healthy_threshold   = 2\n    unhealthy_threshold = 2\n    timeout             = 3\n    target              = \"HTTP:80/\"\n    interval            = 30\n  }\n\n  cross_zone_load_balancing   = true\n  connection_draining         = true\n  connection_draining_timeout = 400\n  tags = {\n    Name = \"my-elb\"\n  }\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_016_ELB_autoscaling/20-autoscaling.tf",
    "content": "resource \"aws_launch_configuration\" \"example-launchconfig\" {\n  name_prefix     = \"example-launchconfig\"\n  image_id        = var.AMIS[var.AWS_REGION]\n  instance_type   = \"t2.micro\"\n  key_name        = aws_key_pair.mykeypair.key_name\n  security_groups = [aws_security_group.myinstance.id]\n  user_data       = \"#!/bin/bash\\napt-get update\\napt-get -y install nginx\\nMYIP=`ifconfig | grep 'addr:10' | awk '{ print $2 }' | cut -d ':' -f2`\\necho 'this is: '$MYIP > /var/www/html/index.html\\nservice nginx start\"\n  lifecycle {\n    create_before_destroy = true\n  }\n}\n\nresource \"aws_autoscaling_group\" \"example-autoscaling\" {\n  name                      = \"example-autoscaling\"\n  vpc_zone_identifier       = [aws_subnet.main-public-1.id, aws_subnet.main-public-2.id]\n  launch_configuration      = aws_launch_configuration.example-launchconfig.name\n  min_size                  = 2\n  max_size                  = 2\n  health_check_grace_period = 300\n  health_check_type         = \"ELB\"\n  load_balancers            = [aws_elb.my-elb.name]\n  force_delete              = true\n\n  tag {\n    key                 = \"Name\"\n    value               = \"ec2 instance\"\n    propagate_at_launch = true\n  }\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_016_ELB_autoscaling/30-output.tf",
    "content": "output \"ELB\" {\n  value = aws_elb.my-elb.dns_name\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_016_ELB_autoscaling/ReadMe.md",
    "content": "## Objective\n\n- To create a load balancer  \n    - with Port Configuration - 80 (HTTP) forwarding to 80 (HTTP)\n    - Should be available in 2 availability zones (us-east-1a and us-east-1b)\n    - it can receive HTTP traffic over TCP protocol on port 80 from any source 0.0.0.0/0\n    - Ping Target : HTTP:80/\n    \n - To create an autoscaling group with\n    - Min : 2\n    - Max : 2\n    - Desired Capacity : 2\n    - health_check_grace_period : 300\n    - health_check_type         : \"ELB\"\n    - attach a launch configuration to it which spins up an EC2 t2.micro instance and runs nginx on port 80.\n    Run a script to show the IP of the instance when hit on port 80.\n    - It should only respond to traffic which it receives on port 80 from the load balancer.\n    \n    \n### Let's Begin\n\n\n- init\n```bash\n$ terraform init\n```\n\n- plan\n```bash\n$ terraform plan\nPlan: 18 to add, 0 to change, 0 to destroy.\n```\n\n- apply\n```bash\nterraform apply\nApply complete! Resources: 18 added, 0 changed, 0 destroyed.\n\nOutputs:\n\nELB = my-elb-2112550202.us-east-1.elb.amazonaws.com\n```\n\n\n- Now you can check the ELB external address by using the following command\n```bash\n$ host my-elb-2112550202.us-east-1.elb.amazonaws.com\nmy-elb-2112550202.us-east-1.elb.amazonaws.com has address 3.210.52.31\n```\n\n- To check if the load balancing is happening, use the following\n```bash\n$ curl my-elb-2112550202.us-east-1.elb.amazonaws.com\nthis is: 10.0.1.228\n\n\n$ curl my-elb-2112550202.us-east-1.elb.amazonaws.com\nthis is: 10.0.1.228\n```\n\n\n- Destroy\n```bash\n$ terraform destroy\nDestroy complete! Resources: 18 destroyed.\n```\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_016_ELB_autoscaling/versions.tf",
    "content": "\nterraform {\n  required_version = \">= 0.12\"\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_017_Elastic_Beanstalk/00-vars.tf",
    "content": "variable \"AWS_REGION\" {\n  default = \"us-east-1\"\n}\n\nvariable \"PATH_TO_PRIVATE_KEY\" {\n  default = \"~/.ssh/id_rsa\"\n}\n\nvariable \"PATH_TO_PUBLIC_KEY\" {\n  default = \"~/.ssh/id_rsa.pub\"\n}\n\nvariable \"RDS_PASSWORD\" {\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_017_Elastic_Beanstalk/05-provider.tf",
    "content": "provider \"aws\" {\n  region = var.AWS_REGION\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_017_Elastic_Beanstalk/10-iam.tf",
    "content": "# iam roles\nresource \"aws_iam_role\" \"app-ec2-role\" {\n  name               = \"app-ec2-role\"\n  assume_role_policy = <<EOF\n{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [\n    {\n      \"Action\": \"sts:AssumeRole\",\n      \"Principal\": {\n        \"Service\": \"ec2.amazonaws.com\"\n      },\n      \"Effect\": \"Allow\",\n      \"Sid\": \"\"\n    }\n  ]\n}\nEOF\n\n}\n\n// Provides an IAM instance profile.\n\nresource \"aws_iam_instance_profile\" \"app-ec2-role\" {\n  name = \"app-ec2-role\"\n  role = aws_iam_role.app-ec2-role.name\n}\n\n# service\nresource \"aws_iam_role\" \"elasticbeanstalk-service-role\" {\n  name = \"elasticbeanstalk-service-role\"\n  assume_role_policy = <<EOF\n{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [\n    {\n      \"Action\": \"sts:AssumeRole\",\n      \"Principal\": {\n        \"Service\": \"elasticbeanstalk.amazonaws.com\"\n      },\n      \"Effect\": \"Allow\",\n      \"Sid\": \"\"\n    }\n  ]\n}\nEOF\n\n}\n\n# policies\nresource \"aws_iam_policy_attachment\" \"app-attach1\" {\nname       = \"app-attach1\"\nroles      = [aws_iam_role.app-ec2-role.name]\npolicy_arn = \"arn:aws:iam::aws:policy/AWSElasticBeanstalkWebTier\"\n}\n\nresource \"aws_iam_policy_attachment\" \"app-attach2\" {\nname       = \"app-attach2\"\nroles      = [aws_iam_role.app-ec2-role.name]\npolicy_arn = \"arn:aws:iam::aws:policy/AWSElasticBeanstalkMulticontainerDocker\"\n}\n\nresource \"aws_iam_policy_attachment\" \"app-attach3\" {\nname       = \"app-attach3\"\nroles      = [aws_iam_role.app-ec2-role.name]\npolicy_arn = \"arn:aws:iam::aws:policy/AWSElasticBeanstalkWorkerTier\"\n}\n\nresource \"aws_iam_policy_attachment\" \"app-attach4\" {\nname       = \"app-attach4\"\nroles      = [aws_iam_role.elasticbeanstalk-service-role.name]\npolicy_arn = \"arn:aws:iam::aws:policy/service-role/AWSElasticBeanstalkEnhancedHealth\"\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_017_Elastic_Beanstalk/15-vpc.tf",
    "content": "# Internet VPC\nresource \"aws_vpc\" \"main\" {\n  cidr_block           = \"10.0.0.0/16\"\n  instance_tenancy     = \"default\"\n  enable_dns_support   = \"true\"\n  enable_dns_hostnames = \"true\"\n  enable_classiclink   = \"false\"\n  tags = {\n    Name = \"main\"\n  }\n}\n\n# Subnets\nresource \"aws_subnet\" \"main-public-1\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.1.0/24\"\n  map_public_ip_on_launch = \"true\"\n  availability_zone       = \"us-east-1a\"\n\n  tags = {\n    Name = \"main-public-1\"\n  }\n}\n\nresource \"aws_subnet\" \"main-public-2\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.2.0/24\"\n  map_public_ip_on_launch = \"true\"\n  availability_zone       = \"us-east-1b\"\n\n  tags = {\n    Name = \"main-public-2\"\n  }\n}\n\nresource \"aws_subnet\" \"main-public-3\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.3.0/24\"\n  map_public_ip_on_launch = \"true\"\n  availability_zone       = \"us-east-1c\"\n\n  tags = {\n    Name = \"main-public-3\"\n  }\n}\n\nresource \"aws_subnet\" \"main-private-1\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.4.0/24\"\n  map_public_ip_on_launch = \"false\"\n  availability_zone       = \"us-east-1a\"\n\n  tags = {\n    Name = \"main-private-1\"\n  }\n}\n\nresource \"aws_subnet\" \"main-private-2\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.5.0/24\"\n  map_public_ip_on_launch = \"false\"\n  availability_zone       = \"us-east-1b\"\n\n  tags = {\n    Name = \"main-private-2\"\n  }\n}\n\nresource \"aws_subnet\" \"main-private-3\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.6.0/24\"\n  map_public_ip_on_launch = \"false\"\n  availability_zone       = \"us-east-1c\"\n\n  tags = {\n    Name = \"main-private-3\"\n  }\n}\n\n# Internet GW\nresource \"aws_internet_gateway\" \"main-gw\" {\n  vpc_id = aws_vpc.main.id\n\n  tags = {\n    Name = \"main\"\n  }\n}\n\n# route tables\nresource \"aws_route_table\" \"main-public\" {\n  vpc_id = aws_vpc.main.id\n  route {\n    cidr_block = \"0.0.0.0/0\"\n    gateway_id = aws_internet_gateway.main-gw.id\n  }\n\n  tags = {\n    Name = \"main-public-1\"\n  }\n}\n\n# route associations public\nresource \"aws_route_table_association\" \"main-public-1-a\" {\n  subnet_id      = aws_subnet.main-public-1.id\n  route_table_id = aws_route_table.main-public.id\n}\n\nresource \"aws_route_table_association\" \"main-public-2-a\" {\n  subnet_id      = aws_subnet.main-public-2.id\n  route_table_id = aws_route_table.main-public.id\n}\n\nresource \"aws_route_table_association\" \"main-public-3-a\" {\n  subnet_id      = aws_subnet.main-public-3.id\n  route_table_id = aws_route_table.main-public.id\n}\n\nresource \"aws_route_table\" \"main-private\" {\n  vpc_id = aws_vpc.main.id\n  route {\n    cidr_block     = \"0.0.0.0/0\"\n    nat_gateway_id = aws_nat_gateway.nat-gw.id\n  }\n\n  tags = {\n    Name = \"main-private-1\"\n  }\n}\n\n# route associations private\nresource \"aws_route_table_association\" \"main-private-1-a\" {\n  subnet_id      = aws_subnet.main-private-1.id\n  route_table_id = aws_route_table.main-private.id\n}\n\nresource \"aws_route_table_association\" \"main-private-2-a\" {\n  subnet_id      = aws_subnet.main-private-2.id\n  route_table_id = aws_route_table.main-private.id\n}\n\nresource \"aws_route_table_association\" \"main-private-3-a\" {\n  subnet_id      = aws_subnet.main-private-3.id\n  route_table_id = aws_route_table.main-private.id\n}\n\n# nat gw\nresource \"aws_eip\" \"nat\" {\n  vpc = true\n}\n\nresource \"aws_nat_gateway\" \"nat-gw\" {\n  allocation_id = aws_eip.nat.id\n  subnet_id     = aws_subnet.main-public-1.id\n  depends_on    = [aws_internet_gateway.main-gw]\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_017_Elastic_Beanstalk/17-key.tf",
    "content": "resource \"aws_key_pair\" \"mykeypair\" {\n  key_name   = \"mykeypair\"\n  public_key = file(var.PATH_TO_PUBLIC_KEY)\n  lifecycle {\n    ignore_changes = [public_key]\n  }\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_017_Elastic_Beanstalk/18-securitygroup.tf",
    "content": "resource \"aws_security_group\" \"app-prod\" {\n  vpc_id      = aws_vpc.main.id\n  name        = \"application - production\"\n  description = \"security group for my app\"\n  egress {\n    from_port   = 0\n    to_port     = 0\n    protocol    = \"-1\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n\n  ingress {\n    from_port   = 22\n    to_port     = 22\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n\n  tags = {\n    Name = \"myinstance\"\n  }\n}\n\nresource \"aws_security_group\" \"allow-mariadb\" {\n  vpc_id      = aws_vpc.main.id\n  name        = \"allow-mariadb\"\n  description = \"allow-mariadb\"\n  ingress {\n    from_port       = 3306\n    to_port         = 3306\n    protocol        = \"tcp\"\n    security_groups = [aws_security_group.app-prod.id] # allowing access from our example instance\n  }\n  egress {\n    from_port   = 0\n    to_port     = 0\n    protocol    = \"-1\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n    self        = true\n  }\n  tags = {\n    Name = \"allow-mariadb\"\n  }\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_017_Elastic_Beanstalk/25-rds.tf",
    "content": "resource \"aws_db_subnet_group\" \"mariadb-subnet\" {\n  name        = \"mariadb-subnet\"\n  description = \"RDS subnet group\"\n  subnet_ids  = [aws_subnet.main-private-1.id, aws_subnet.main-private-2.id]\n}\n\nresource \"aws_db_parameter_group\" \"mariadb-parameters\" {\n  name        = \"mariadb-params\"\n  family      = \"mariadb10.1\"\n  description = \"MariaDB parameter group\"\n\n  parameter {\n    name  = \"max_allowed_packet\"\n    value = \"16777216\"\n  }\n}\n\nresource \"aws_db_instance\" \"mariadb\" {\n  allocated_storage         = 100 # 100 GB of storage, gives us more IOPS than a lower number\n  engine                    = \"mariadb\"\n  engine_version            = \"10.1.14\"\n  instance_class            = \"db.t2.small\" # use micro if you want to use the free tier\n  identifier                = \"mariadb\"\n  name                      = \"mydatabase\"     # database name\n  username                  = \"root\"           # username\n  password                  = var.RDS_PASSWORD # password\n  db_subnet_group_name      = aws_db_subnet_group.mariadb-subnet.name\n  parameter_group_name      = aws_db_parameter_group.mariadb-parameters.name\n  multi_az                  = \"false\" # set to true to have high availability: 2 instances synchronized with each other\n  vpc_security_group_ids    = [aws_security_group.allow-mariadb.id]\n  storage_type              = \"gp2\"\n  backup_retention_period   = 30                                          # how long you’re going to keep your backups\n  availability_zone         = aws_subnet.main-private-1.availability_zone # prefered AZ\n  final_snapshot_identifier = \"mariadb-final-snapshot\"                    # final snapshot when executing terraform destroy\n  tags = {\n    Name = \"mariadb-instance\"\n  }\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_017_Elastic_Beanstalk/28-elasticbeanstalk.tf",
    "content": "resource \"aws_elastic_beanstalk_application\" \"app\" {\n  name        = \"app\"\n  description = \"app\"\n}\n\n\n// https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html\n\nresource \"aws_elastic_beanstalk_environment\" \"app-prod\" {\n  name                = \"app-prod\"\n  application         = aws_elastic_beanstalk_application.app.name\n  solution_stack_name = \"64bit Amazon Linux 2 v3.0.1 running PHP 7.4\"\n  setting {\n    namespace = \"aws:ec2:vpc\"\n    name      = \"VPCId\"\n    value     = aws_vpc.main.id\n  }\n  setting {\n    namespace = \"aws:ec2:vpc\"\n    name      = \"Subnets\"\n    value     = \"${aws_subnet.main-private-1.id},${aws_subnet.main-private-2.id}\"\n  }\n  setting {\n    namespace = \"aws:ec2:vpc\"\n    name      = \"AssociatePublicIpAddress\"\n    value     = \"false\"\n  }\n  setting {\n    namespace = \"aws:autoscaling:launchconfiguration\"\n    name      = \"IamInstanceProfile\"\n    value     = aws_iam_instance_profile.app-ec2-role.name\n  }\n  setting {\n    namespace = \"aws:autoscaling:launchconfiguration\"\n    name      = \"SecurityGroups\"\n    value     = aws_security_group.app-prod.id\n  }\n  setting {\n    namespace = \"aws:autoscaling:launchconfiguration\"\n    name      = \"EC2KeyName\"\n    value     = aws_key_pair.mykeypair.id\n  }\n  setting {\n    namespace = \"aws:autoscaling:launchconfiguration\"\n    name      = \"InstanceType\"\n    value     = \"t2.micro\"\n  }\n  setting {\n    namespace = \"aws:elasticbeanstalk:environment\"\n    name      = \"ServiceRole\"\n    value     = aws_iam_role.elasticbeanstalk-service-role.name\n  }\n  setting {\n    namespace = \"aws:ec2:vpc\"\n    name      = \"ELBScheme\"\n    value     = \"public\"\n  }\n  setting {\n    namespace = \"aws:ec2:vpc\"\n    name      = \"ELBSubnets\"\n    value     = \"${aws_subnet.main-public-1.id},${aws_subnet.main-public-2.id}\"\n  }\n  setting {\n    namespace = \"aws:elb:loadbalancer\"\n    name      = \"CrossZone\"\n    value     = \"true\"\n  }\n  setting {\n    namespace = \"aws:elasticbeanstalk:command\"\n    name      = \"BatchSize\"\n    value     = \"30\"\n  }\n  setting {\n    namespace = \"aws:elasticbeanstalk:command\"\n    name      = \"BatchSizeType\"\n    value     = \"Percentage\"\n  }\n  setting {\n    namespace = \"aws:autoscaling:asg\"\n    name      = \"Availability Zones\"\n    value     = \"Any 2\"\n  }\n  setting {\n    namespace = \"aws:autoscaling:asg\"\n    name      = \"MinSize\"\n    value     = \"1\"\n  }\n  setting {\n    namespace = \"aws:autoscaling:updatepolicy:rollingupdate\"\n    name      = \"RollingUpdateType\"\n    value     = \"Health\"\n  }\n  setting {\n    namespace = \"aws:elasticbeanstalk:application:environment\"\n    name      = \"RDS_USERNAME\"\n    value     = aws_db_instance.mariadb.username\n  }\n  setting {\n    namespace = \"aws:elasticbeanstalk:application:environment\"\n    name      = \"RDS_PASSWORD\"\n    value     = aws_db_instance.mariadb.password\n  }\n  setting {\n    namespace = \"aws:elasticbeanstalk:application:environment\"\n    name      = \"RDS_DATABASE\"\n    value     = aws_db_instance.mariadb.name\n  }\n  setting {\n    namespace = \"aws:elasticbeanstalk:application:environment\"\n    name      = \"RDS_HOSTNAME\"\n    value     = aws_db_instance.mariadb.endpoint\n  }\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_017_Elastic_Beanstalk/30-output.tf",
    "content": "output \"eb\" {\n  value = aws_elastic_beanstalk_environment.app-prod.cname\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_017_Elastic_Beanstalk/ReadMe.md",
    "content": "## Objective\n\n1) Learn and get some familiarization with Elastic Bean Stack. \n\n\n### Let's Begin\n\n- init\n\n```bash\n$ terraform init\n```\n\n\n- plan\n\n```bash\n$ terraform plan\n```\n\n- apply\n```bash\n$ terraform apply\nApply complete! Resources: 33 added, 0 changed, 0 destroyed.\n\nOutputs:\n\neb = app-prod.eba-eqp6suud.us-east-1.elasticbeanstalk.com\n```\n\n- You can now visit this application in the browser and you will see a welcome page\n\n> http://app-prod.eba-eqp6suud.us-east-1.elasticbeanstalk.com/\n\n\n\n- destroy\n```bash\n$ terraform destroy\n```\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_017_Elastic_Beanstalk/versions.tf",
    "content": "\nterraform {\n  required_version = \">= 0.12\"\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_018_create_ECR_repo/00-vars.tf",
    "content": "variable \"AWS_REGION\" {\n  default = \"us-east-1\"\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_018_create_ECR_repo/05-provider.tf",
    "content": "provider \"aws\" {\n  region = var.AWS_REGION\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_018_create_ECR_repo/15-ecr.tf",
    "content": "resource \"aws_ecr_repository\" \"myapp\" {\n  name = \"myapp\"\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_018_create_ECR_repo/ReadMe.md",
    "content": "\n\n## Configuring AWS CLI\n\n```bash\n$ aws configure                                \nAWS Access Key ID [None]: **********************\nAWS Secret Access Key [None]: ************************\nDefault region name [None]: us-east-1\nDefault output format [None]: \n```\n\n\n\n## Login to ECR, create Repo and Push image\n\n[Link](https://docs.aws.amazon.com/AmazonECR/latest/userguide/getting-started-cli.html)\n\n```bash\n$ aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin ****************.dkr.ecr.us-east-1.amazonaws.com         \nLogin Succeeded\n```\n\n- Create a repository. After executing this command you can visit the console and check if the \nrepository was created.\n```bash\naws ecr create-repository \\\n    --repository-name node-application \\\n    --image-scanning-configuration scanOnPush=true \\\n    --region us-east-1\n```\n\n\n- Build a docker image with corresponding tag\n```bash\ndocker build -t *****************.dkr.ecr.us-east-1.amazonaws.com/node-application:latest .\n```\n\n- Push the image\n```bash\ndocker push ****************.dkr.ecr.us-east-1.amazonaws.com/node-application:latest\n```\n\n\n## Implementing the changes using terraform\n\n- init\n\n```bash\n$ terraform init\n```\n\n\n- plan\n```bash\n$ terraform plan\nPlan: 1 to add, 0 to change, 0 to destroy.\n\n```\n\n- apply\n```bash\n$ terraform apply\nApply complete! Resources: 1 added, 0 changed, 0 destroyed.\n\nOutputs:\n\nmyapp-repository-URL = *************.dkr.ecr.us-east-1.amazonaws.com/myapp\n\n```"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_018_create_ECR_repo/output.tf",
    "content": "output \"myapp-repository-URL\" {\n  value = aws_ecr_repository.myapp.repository_url\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_018_create_ECR_repo/versions.tf",
    "content": "\nterraform {\n  required_version = \">= 0.12\"\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_019_ECS/00-vars.tf",
    "content": "variable \"AWS_REGION\" {\n  default = \"us-east-1\"\n}\n\nvariable \"PATH_TO_PRIVATE_KEY\" {\n  default = \"~/.ssh/id_rsa\"\n}\n\nvariable \"PATH_TO_PUBLIC_KEY\" {\n  default = \"~/.ssh/id_rsa.pub\"\n}\n\nvariable \"ECS_INSTANCE_TYPE\" {\n  default = \"t2.micro\"\n}\n\nvariable \"ECS_AMIS\" {\n  type = map(string)\n  default = {\n    us-east-1 = \"ami-1924770e\"\n    us-west-2 = \"ami-56ed4936\"\n    eu-west-1 = \"ami-c8337dbb\"\n  }\n}\n\n# Full List: http://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_019_ECS/05-provider.tf",
    "content": "provider \"aws\" {\n  region = var.AWS_REGION\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_019_ECS/10-iam.tf",
    "content": "# ecs ec2 role\nresource \"aws_iam_role\" \"ecs-ec2-role\" {\n  name               = \"ecs-ec2-role\"\n  assume_role_policy = <<EOF\n{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [\n    {\n      \"Action\": \"sts:AssumeRole\",\n      \"Principal\": {\n        \"Service\": \"ec2.amazonaws.com\"\n      },\n      \"Effect\": \"Allow\",\n      \"Sid\": \"\"\n    }\n  ]\n}\nEOF\n\n}\n\nresource \"aws_iam_instance_profile\" \"ecs-ec2-role\" {\n  name = \"ecs-ec2-role\"\n  role = aws_iam_role.ecs-ec2-role.name\n}\n\nresource \"aws_iam_role\" \"ecs-consul-server-role\" {\n  name = \"ecs-consul-server-role\"\n  assume_role_policy = <<EOF\n{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [\n    {\n      \"Action\": \"sts:AssumeRole\",\n      \"Principal\": {\n        \"Service\": \"ec2.amazonaws.com\"\n      },\n      \"Effect\": \"Allow\",\n      \"Sid\": \"\"\n    }\n  ]\n}\nEOF\n\n}\n\nresource \"aws_iam_role_policy\" \"ecs-ec2-role-policy\" {\nname   = \"ecs-ec2-role-policy\"\nrole   = aws_iam_role.ecs-ec2-role.id\npolicy = <<EOF\n{\n    \"Version\": \"2012-10-17\",\n    \"Statement\": [\n        {\n            \"Effect\": \"Allow\",\n            \"Action\": [\n              \"ecs:CreateCluster\",\n              \"ecs:DeregisterContainerInstance\",\n              \"ecs:DiscoverPollEndpoint\",\n              \"ecs:Poll\",\n              \"ecs:RegisterContainerInstance\",\n              \"ecs:StartTelemetrySession\",\n              \"ecs:Submit*\",\n              \"ecs:StartTask\",\n              \"ecr:GetAuthorizationToken\",\n              \"ecr:BatchCheckLayerAvailability\",\n              \"ecr:GetDownloadUrlForLayer\",\n              \"ecr:BatchGetImage\",\n              \"logs:CreateLogStream\",\n              \"logs:PutLogEvents\"\n            ],\n            \"Resource\": \"*\"\n        },\n        {\n            \"Effect\": \"Allow\",\n            \"Action\": [\n                \"logs:CreateLogGroup\",\n                \"logs:CreateLogStream\",\n                \"logs:PutLogEvents\",\n                \"logs:DescribeLogStreams\"\n            ],\n            \"Resource\": [\n                \"arn:aws:logs:*:*:*\"\n            ]\n        }\n    ]\n}\nEOF\n\n}\n\n# ecs service role\nresource \"aws_iam_role\" \"ecs-service-role\" {\nname = \"ecs-service-role\"\nassume_role_policy = <<EOF\n{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [\n    {\n      \"Action\": \"sts:AssumeRole\",\n      \"Principal\": {\n        \"Service\": \"ecs.amazonaws.com\"\n      },\n      \"Effect\": \"Allow\",\n      \"Sid\": \"\"\n    }\n  ]\n}\nEOF\n\n}\n\nresource \"aws_iam_policy_attachment\" \"ecs-service-attach1\" {\n  name       = \"ecs-service-attach1\"\n  roles      = [aws_iam_role.ecs-service-role.name]\n  policy_arn = \"arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceRole\"\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_019_ECS/15-vpc.tf",
    "content": "# Internet VPC\nresource \"aws_vpc\" \"main\" {\n  cidr_block           = \"10.0.0.0/16\"\n  instance_tenancy     = \"default\"\n  enable_dns_support   = \"true\"\n  enable_dns_hostnames = \"true\"\n  enable_classiclink   = \"false\"\n  tags = {\n    Name = \"main\"\n  }\n}\n\n# Subnets\nresource \"aws_subnet\" \"main-public-1\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.1.0/24\"\n  map_public_ip_on_launch = \"true\"\n  availability_zone       = \"us-east-1a\"\n\n  tags = {\n    Name = \"main-public-1\"\n  }\n}\n\nresource \"aws_subnet\" \"main-public-2\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.2.0/24\"\n  map_public_ip_on_launch = \"true\"\n  availability_zone       = \"us-east-1b\"\n\n  tags = {\n    Name = \"main-public-2\"\n  }\n}\n\nresource \"aws_subnet\" \"main-public-3\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.3.0/24\"\n  map_public_ip_on_launch = \"true\"\n  availability_zone       = \"us-east-1c\"\n\n  tags = {\n    Name = \"main-public-3\"\n  }\n}\n\nresource \"aws_subnet\" \"main-private-1\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.4.0/24\"\n  map_public_ip_on_launch = \"false\"\n  availability_zone       = \"us-east-1a\"\n\n  tags = {\n    Name = \"main-private-1\"\n  }\n}\n\nresource \"aws_subnet\" \"main-private-2\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.5.0/24\"\n  map_public_ip_on_launch = \"false\"\n  availability_zone       = \"us-east-1b\"\n\n  tags = {\n    Name = \"main-private-2\"\n  }\n}\n\nresource \"aws_subnet\" \"main-private-3\" {\n  vpc_id                  = aws_vpc.main.id\n  cidr_block              = \"10.0.6.0/24\"\n  map_public_ip_on_launch = \"false\"\n  availability_zone       = \"us-east-1c\"\n\n  tags = {\n    Name = \"main-private-3\"\n  }\n}\n\n# Internet GW\nresource \"aws_internet_gateway\" \"main-gw\" {\n  vpc_id = aws_vpc.main.id\n\n  tags = {\n    Name = \"main\"\n  }\n}\n\n# route tables\nresource \"aws_route_table\" \"main-public\" {\n  vpc_id = aws_vpc.main.id\n  route {\n    cidr_block = \"0.0.0.0/0\"\n    gateway_id = aws_internet_gateway.main-gw.id\n  }\n\n  tags = {\n    Name = \"main-public-1\"\n  }\n}\n\n# route associations public\nresource \"aws_route_table_association\" \"main-public-1-a\" {\n  subnet_id      = aws_subnet.main-public-1.id\n  route_table_id = aws_route_table.main-public.id\n}\n\nresource \"aws_route_table_association\" \"main-public-2-a\" {\n  subnet_id      = aws_subnet.main-public-2.id\n  route_table_id = aws_route_table.main-public.id\n}\n\nresource \"aws_route_table_association\" \"main-public-3-a\" {\n  subnet_id      = aws_subnet.main-public-3.id\n  route_table_id = aws_route_table.main-public.id\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_019_ECS/17-key.tf",
    "content": "resource \"aws_key_pair\" \"mykeypair\" {\n  key_name   = \"mykeypair\"\n  public_key = file(var.PATH_TO_PUBLIC_KEY)\n  lifecycle {\n    ignore_changes = [public_key]\n  }\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_019_ECS/18-securitygroup.tf",
    "content": "resource \"aws_security_group\" \"ecs-securitygroup\" {\n  vpc_id      = aws_vpc.main.id\n  name        = \"ecs\"\n  description = \"security group for ecs\"\n  egress {\n    from_port   = 0\n    to_port     = 0\n    protocol    = \"-1\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n\n  ingress {\n    from_port       = 3000\n    to_port         = 3000\n    protocol        = \"tcp\"\n    security_groups = [aws_security_group.myapp-elb-securitygroup.id]\n  }\n  ingress {\n    from_port   = 22\n    to_port     = 22\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n  tags = {\n    Name = \"ecs\"\n  }\n}\n\nresource \"aws_security_group\" \"myapp-elb-securitygroup\" {\n  vpc_id      = aws_vpc.main.id\n  name        = \"myapp-elb\"\n  description = \"security group for ecs\"\n  egress {\n    from_port   = 0\n    to_port     = 0\n    protocol    = \"-1\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n\n  ingress {\n    from_port   = 80\n    to_port     = 80\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n  tags = {\n    Name = \"myapp-elb\"\n  }\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_019_ECS/20-ecr.tf",
    "content": "// The repository should already be present with image\n\n//resource \"aws_ecr_repository\" \"myapp\" {\n//  name = \"myapp\"\n//}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_019_ECS/25-ecs.tf",
    "content": "# cluster\nresource \"aws_ecs_cluster\" \"example-cluster\" {\n  name = \"example-cluster\"\n}\n\nresource \"aws_launch_configuration\" \"ecs-example-launchconfig\" {\n  name_prefix          = \"ecs-launchconfig\"\n  image_id             = var.ECS_AMIS[var.AWS_REGION]\n  instance_type        = var.ECS_INSTANCE_TYPE\n  key_name             = aws_key_pair.mykeypair.key_name\n  iam_instance_profile = aws_iam_instance_profile.ecs-ec2-role.id\n  security_groups      = [aws_security_group.ecs-securitygroup.id]\n  user_data            = \"#!/bin/bash\\necho 'ECS_CLUSTER=example-cluster' > /etc/ecs/ecs.config\\nstart ecs\"\n  lifecycle {\n    create_before_destroy = true\n  }\n}\n\nresource \"aws_autoscaling_group\" \"ecs-example-autoscaling\" {\n  name                 = \"ecs-example-autoscaling\"\n  vpc_zone_identifier  = [aws_subnet.main-public-1.id, aws_subnet.main-public-2.id]\n  launch_configuration = aws_launch_configuration.ecs-example-launchconfig.name\n  min_size             = 1\n  max_size             = 1\n  tag {\n    key                 = \"Name\"\n    value               = \"ecs-ec2-container\"\n    propagate_at_launch = true\n  }\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_019_ECS/28-myapp.tf",
    "content": "# app\n\ndata \"template_file\" \"myapp-task-definition-template\" {\n  template = file(\"templates/app.json.tpl\")\n  vars = {\n    REPOSITORY_URL = replace(aws_ecr_repository.myapp.repository_url, \"https://\", \"\")\n  }\n}\n\nresource \"aws_ecs_task_definition\" \"myapp-task-definition\" {\n  family                = \"myapp\"\n  container_definitions = data.template_file.myapp-task-definition-template.rendered\n}\n\nresource \"aws_elb\" \"myapp-elb\" {\n  name = \"myapp-elb\"\n\n  listener {\n    instance_port     = 3000\n    instance_protocol = \"http\"\n    lb_port           = 80\n    lb_protocol       = \"http\"\n  }\n\n  health_check {\n    healthy_threshold   = 3\n    unhealthy_threshold = 3\n    timeout             = 30\n    target              = \"HTTP:3000/\"\n    interval            = 60\n  }\n\n  cross_zone_load_balancing   = true\n  idle_timeout                = 400\n  connection_draining         = true\n  connection_draining_timeout = 400\n\n  subnets         = [aws_subnet.main-public-1.id, aws_subnet.main-public-2.id]\n  security_groups = [aws_security_group.myapp-elb-securitygroup.id]\n\n  tags = {\n    Name = \"myapp-elb\"\n  }\n}\n\nresource \"aws_ecs_service\" \"myapp-service\" {\n  name            = \"myapp\"\n  cluster         = aws_ecs_cluster.example-cluster.id\n  task_definition = aws_ecs_task_definition.myapp-task-definition.arn\n  desired_count   = 1\n  iam_role        = aws_iam_role.ecs-service-role.arn\n  depends_on      = [aws_iam_policy_attachment.ecs-service-attach1]\n\n  load_balancer {\n    elb_name       = aws_elb.myapp-elb.name\n    container_name = \"myapp\"\n    container_port = 3000\n  }\n  lifecycle {\n    ignore_changes = [task_definition]\n  }\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_019_ECS/30-output.tf",
    "content": "output \"elb\" {\n  value = aws_elb.myapp-elb.dns_name\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_019_ECS/templates/app.json.tpl",
    "content": "[\n  {\n    \"essential\": true,\n    \"memory\": 256,\n    \"name\": \"myapp\",\n    \"cpu\": 256,\n    \"image\": \"${REPOSITORY_URL}:1\",\n    \"workingDirectory\": \"/app\",\n    \"command\": [\"npm\", \"start\"],\n    \"portMappings\": [\n        {\n            \"containerPort\": 3000,\n            \"hostPort\": 3000\n        }\n    ]\n  }\n]\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_019_ECS/versions.tf",
    "content": "\nterraform {\n  required_version = \">= 0.12\"\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_020_s3_iam_using_modules/ReadMe.md",
    "content": "## Objective \n\n\n1) To create S3 bucket using an S3 git module `git::https://github.com/cloudposse/terraform-aws-s3-bucket.git?ref=master`\n2) Create one admin user using this module. The admin user should have all access priviledges to the S3 bucket.\n3) Get the `data` of the created bucket to create a `bucket` object\n4) Create one DEV IAM user with limited access priviledges to the S3 bucket. You can use the following\nmodule for the same `git::https://github.com/cloudposse/terraform-aws-iam-s3-user.git?ref=master`\n5) Print the access keys and the name of the bucket at the end.\n\n\n- s3-bucket.tf\n\n```hcl-terraform\nmodule \"s3_bucket_data\" {\n  source                   = \"git::https://github.com/cloudposse/terraform-aws-s3-bucket.git?ref=master\"\n  enabled                  = true\n  user_enabled             = true\n  versioning_enabled       = false\n  allowed_bucket_actions   = [\"s3:*\"]\n  name                     = \"backup-bucket\"\n  stage                    = \"dev\"\n  namespace                = \"data\"\n\n}\n\ndata \"aws_s3_bucket\" \"data-backup-bucket\" {\n  bucket = module.s3_bucket_data.bucket_id\n}\n\nmodule \"data-backup-bucket-user\" {\n  source    = \"git::https://github.com/cloudposse/terraform-aws-iam-s3-user.git?ref=master\"\n  namespace = \"data\"\n  stage     = \"dev\"\n  name      = \"backup-bucket-readonly-user\"\n  s3_actions = [\n    \"s3:GetObject\",\n    \"s3:ListBucket\",\n    \"s3:GetBucketLocation\"\n  ]\n  s3_resources = [\n    \"${data.aws_s3_bucket.data-backup-bucket.arn}/*\",\n    data.aws_s3_bucket.data-backup-bucket.arn\n  ]\n}\n\noutput \"aws-developer-data-access-key\" {\n  value = module.data-backup-bucket-user.access_key_id\n}\n\noutput \"aws-developer-data-secret-key\" {\n  value = module.data-backup-bucket-user.secret_access_key\n}\n\noutput \"aws-s3-data-bucket-url\" {\n  value = module.s3_bucket_data.bucket_domain_name\n}\n\noutput \"aws-admin-data-access-key\" {\n  value = module.s3_bucket_data.access_key_id\n}\n\noutput \"aws-admin-data-secret-key\" {\n  value = module.s3_bucket_data.secret_access_key\n}\n```\n\n\n- Init\n\n```bash\n$ terraform init \nInitializing modules...\nDownloading git::https://github.com/cloudposse/terraform-aws-iam-s3-user.git?ref=master for data-backup-bucket-user...\n- data-backup-bucket-user in .terraform/modules/data-backup-bucket-user\n.\n.\n.\n\n```\n\n- Plan\n\n```                                 \n$ terraform plan \nprovider.aws.region\n  The region where AWS operations will take place. Examples\n  are us-east-1, us-west-2, etc.\n\n  Enter a value: us-east-1\n.\n.\n.\nPlan: 8 to add, 0 to change, 0 to destroy.\n```\n\n\n- Apply\n```bash\n$ terraform apply \n.\n.\n.\nApply complete! Resources: 8 added, 0 changed, 0 destroyed.\n\nOutputs:\n\naws-admin-data-access-key = ****************\naws-admin-data-secret-key = *****************\naws-developer-data-access-key = ******************\naws-developer-data-secret-key = ****************\naws-s3-data-bucket-url = data-dev-backup-bucket.s3.amazonaws.com\n\n```\n\n\n\n- Destroy\n```bash\n$ terraform destroy                                 \nDestroy complete! Resources: 8 destroyed.\n```"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_020_s3_iam_using_modules/s3-bucket.tf",
    "content": "module \"s3_bucket_data\" {\n  source                   = \"git::https://github.com/cloudposse/terraform-aws-s3-bucket.git?ref=master\"\n  enabled                  = true\n  user_enabled             = true\n  versioning_enabled       = false\n  allowed_bucket_actions   = [\"s3:*\"]\n  name                     = \"backup-bucket\"\n  stage                    = \"dev\"\n  namespace                = \"data\"\n\n}\n\ndata \"aws_s3_bucket\" \"data-backup-bucket\" {\n  bucket = module.s3_bucket_data.bucket_id\n}\n\nmodule \"data-backup-bucket-user\" {\n  source    = \"git::https://github.com/cloudposse/terraform-aws-iam-s3-user.git?ref=master\"\n  namespace = \"data\"\n  stage     = \"dev\"\n  name      = \"backup-bucket-readonly-user\"\n  s3_actions = [\n    \"s3:GetObject\",\n    \"s3:ListBucket\",\n    \"s3:GetBucketLocation\"\n  ]\n  s3_resources = [\n    \"${data.aws_s3_bucket.data-backup-bucket.arn}/*\",\n    data.aws_s3_bucket.data-backup-bucket.arn\n  ]\n}\n\noutput \"aws-developer-data-access-key\" {\n  value = module.data-backup-bucket-user.access_key_id\n}\n\noutput \"aws-developer-data-secret-key\" {\n  value = module.data-backup-bucket-user.secret_access_key\n}\n\noutput \"aws-s3-data-bucket-url\" {\n  value = module.s3_bucket_data.bucket_domain_name\n}\n\noutput \"aws-admin-data-access-key\" {\n  value = module.s3_bucket_data.access_key_id\n}\n\noutput \"aws-admin-data-secret-key\" {\n  value = module.s3_bucket_data.secret_access_key\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_021_k8s_cluster_typhoon/00-vars.tf",
    "content": "variable \"AWS_REGION\" {\n  default = \"us-east-1\"\n}\n\n\nvariable \"dns_zone\" {\n  default = \"k118.tk\"\n}\n\nvariable \"PATH_TO_PRIVATE_KEY\" {\n  default = \"~/.ssh/id_rsa\"\n}\n\nvariable \"PATH_TO_PUBLIC_KEY\" {\n  default = \"~/.ssh/id_rsa.pub\"\n}\n\nvariable \"ECS_INSTANCE_TYPE\" {\n  default = \"t2.micro\"\n}\n\nvariable \"ECS_AMIS\" {\n  type = map(string)\n  default = {\n    us-east-1 = \"ami-1924770e\"\n    us-west-2 = \"ami-56ed4936\"\n    eu-west-1 = \"ami-c8337dbb\"\n  }\n}\n\nvariable \"zone_id\" {\n  default = \"Z099337627DO5QQDVQEVD\"\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_021_k8s_cluster_typhoon/05-provider.tf",
    "content": "provider \"aws\" {\n  region = var.AWS_REGION\n}\n\n\n/* ******************************************************************************************************************\n * You need to install the terraform-provider-ct plugin\n * You can use this link for installation instructions on the same - https://github.com/poseidon/terraform-provider-ct\n ******************************************************************************************************************** */\nprovider \"ct\" {\n  version = \"0.5.1\"\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_021_k8s_cluster_typhoon/25-cluster.tf",
    "content": "module \"tempest\" {\n  source = \"git::https://github.com/poseidon/typhoon//aws/container-linux/kubernetes?ref=v1.18.5\"\n\n  # AWS\n  cluster_name = \"k8s118\"\n  dns_zone     = var.dns_zone\n  dns_zone_id  = var.zone_id\n\n  # configuration\n  ssh_authorized_key = \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCaqppA0jzSJgZHXIgTnG/8eaeZNX78DBc1R9JnWe0LBf2BaYl73ttoVMMiEbeBWV+d9EHjF617yOW29f5ju5UADN1/khzLceWadczG03vqdRt78Y6kh6kDkVen4+BGtvsWxCYXPP5awGordU4SvRjXl4JfPUct2H8ixvCiret2qktC02MUkTVlVFaYVqqRXkZR6S4uD3UdWTHmL3zy5X0r714uFm45ycH52W4lppI9s7LpnEsUTNU/6Eim0XJ936+uQ+cZ/CULnEf/WAFLaVHxAyp+4VaLQc6WViB32FRbeRTl8V9wxT+1xBUn/0ptZkMO2R7wbcs7/QZwZ2a5UAzv visionary@rathi\"\n\n  # optional\n  worker_count = 1\n  worker_type  = \"t2.micro\"\n}\n\nresource \"local_file\" \"kubeconfig-tempest\" {\n  content  = module.tempest.kubeconfig-admin\n  filename = \"/home/visionary/workspace/terraform-kitchen/aws/task-021-k8s-cluster-typhoon/auth/kubeconfig\"\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_021_k8s_cluster_typhoon/30-output.tf",
    "content": ""
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_021_k8s_cluster_typhoon/ReadMe.md",
    "content": "## Objective: To create a kubernetes cluster using typhoon\n\n[Link Referred](https://typhoon.psdn.io/flatcar-linux/aws/)\n\n[Git Repo](https://github.com/poseidon/typhoon/)\n\n### Steps\n\n- Create a DNS zone using [task-011-route53](../task-011-route53) and get the zone name and zone_id. The zone I created was `k118.tk`. Also I created the domain `k118.tk`\n in [myfreenom.com](https://my.freenom.com/). \n```bash\nApply complete! Resources: 1 added, 0 changed, 0 destroyed.\n\nOutputs:\n\ndevopslink-name-servers = [\n  \"ns-1347.awsdns-40.org\",\n  \"ns-1667.awsdns-16.co.uk\",\n  \"ns-384.awsdns-48.com\",\n  \"ns-999.awsdns-60.net\",\n]\ndevopslink-public-zone-id = Z099337627DO5QQDVQEVD\n\n```\n\n- Assign those values in the variables file in this task. Also make sure that you assign these nameservers to the domain `k118.tk` you created earlier. Visit the website\n[https://my.freenom.com/](https://my.freenom.com/) and go to the setting for you domain. Check the setting for changing the nameservers from freenom's default\nto the ones you just created above. For more details about this you can check the [task-22-route53-ec2](../task-022-route53-ec2)\n\n- init\n```bash\n$ terraform init\n```\n\n- plan\n```bash\n$ TF_LOG=TRACE terraform plan\n.\n.\n.\nPlan: 91 to add, 0 to change, 0 to destroy.\n```\n\n- apply\n```bash\n$ TF_LOG=TRACE terraform apply\nApply complete! Resources: 91 added, 0 changed, 0 destroyed.\n```\n\n- You can access the nodes by using the following command\n```bash\n$ export KUBECONFIG=./auth/kubeconfig  \n$ kubectl get nodes\nNAME            STATUS   ROLES    AGE     VERSION\nip-10-0-0-102   Ready    <none>   2m21s   v1.18.5\nip-10-0-2-187   Ready    <none>   3m39s   v1.18.5\n```\n\n- Check the pods in kube-system namespace\n```bash\n✗ kubectl get pods -n kube-system\nNAME                                    READY   STATUS    RESTARTS   AGE\ncalico-node-7w5jp                       1/1     Running   0          8m23s\ncalico-node-s25vl                       1/1     Running   0          7m5s\ncoredns-857c875bc7-k52vl                1/1     Running   0          8m31s\ncoredns-857c875bc7-qgb6q                1/1     Running   0          8m31s\nkube-apiserver-ip-10-0-2-187            1/1     Running   0          7m1s\nkube-controller-manager-ip-10-0-2-187   1/1     Running   0          7m41s\nkube-proxy-476dh                        1/1     Running   1          8m23s\nkube-proxy-rvkwf                        1/1     Running   1          7m5s\nkube-scheduler-ip-10-0-2-187            1/1     Running   0          7m13s\n```\n\n- Route53 Records which got created in the hosted zone `k118.tk`\n![](.images/r53-records.png)\n\n\n- Instances created\n![](.images/instances-created.png)\n\n- Load Balancer Created\n![](.images/lb-created.png)\n\n\n- Target Groups\n![](.images/target-groups.png)\n\n![](.images/target-groups-health.png)\n\n\n- Launch Configuration\n![](.images/launch-configuration.png)\n\n- Autoscaling groups created\n![](.images/auto-scaling-groups.png)\n\n- VPC Created\n![](.images/vpc-created.png)\n\n- Subnets Created\n![](.images/subnets-created.png)\n\n- Route Tables\n![](.images/route-tables.png)\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_022_route53_ec2/00-vars.tf",
    "content": "variable \"AWS_REGION\" {\n  default = \"us-east-1\"\n}\n\nvariable \"domain_mydevops_link\" {\n  default = \"codeaprendiz.tk\"\n}\n\nvariable \"instance_type\" {\n  description = \"type for aws EC2 instance\"\n  default = \"t2.micro\"\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_022_route53_ec2/05-instance.tf",
    "content": "data \"aws_ami\" \"ubuntu\" {\n  most_recent = true\n\n  filter {\n    name   = \"name\"\n    values = [\"ubuntu/images/hvm-ssd/ubuntu-trusty-14.04-amd64-server-*\"]\n  }\n\n  filter {\n    name   = \"virtualization-type\"\n    values = [\"hvm\"]\n  }\n\n  owners = [\"099720109477\"] # Canonical\n}\n\nresource \"aws_instance\" \"web\" {\n  ami           = data.aws_ami.ubuntu.id\n  instance_type = \"t2.micro\"\n\n  tags = {\n    Name = \"HelloWorld\"\n  }\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_022_route53_ec2/05-provider.tf",
    "content": "provider \"aws\" {\n  region = var.AWS_REGION\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_022_route53_ec2/10-route53.tf",
    "content": "resource \"aws_route53_record\" \"server1-record\" {\n  zone_id = aws_route53_zone.devopslink-public-zone.zone_id\n  name    = \"server1.codeaprendiz.tk\"\n  type    = \"A\"\n  ttl     = \"300\"\n  records = [aws_instance.web.public_ip]\n}\n\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_022_route53_ec2/250-r53-devopslink_zone.tf",
    "content": "###_____   ___    _   _   _____\n##|__  /  / _ \\  | \\ | | | ____|\n####/ /  | | | | |  \\| | |  _|\n###/ /_  | |_| | | |\\  | | |___\n##/____|  \\___/  |_| \\_| |_____|\n\nresource \"aws_route53_zone\" \"devopslink-public-zone\" {\n  name = var.domain_mydevops_link\n  comment = \"${var.domain_mydevops_link} public zone\"\n  provider = aws\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_022_route53_ec2/30-output.tf",
    "content": "output \"devopslink-public-zone-id\" {\n  value = aws_route53_zone.devopslink-public-zone.zone_id\n}\n\noutput \"devopslink-name-servers\" {\n  value = aws_route53_zone.devopslink-public-zone.name_servers\n}\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_022_route53_ec2/ReadMe.md",
    "content": "## Objective \n\n1) To create a DNS \"A\" record which is pointing to the EC2 instance created in default VPC default subnet.\n2) When we do nslookup to the \"A\" record like `server1.codeaprendiz.tk`, it should resolve the public IP of the instance.\n\n### PRE-REQUISITE\n1) First we need to own a domain. So go to the link [https://my.freenom.com/](https://my.freenom.com/) and register a domain.\n   I registered `codeaprendiz.tk`\n   \n   \n- Init\n\n```bash\n$ terraform init   \n```\n\n- Plan\n\n```                                 \n$ terraform plan \n\nApply complete! Resources: 3 added, 0 changed, 0 destroyed.\n.\n.\n.\n```\n\n\n- Apply\n```bash\n$ terraform apply\n.\nApply complete! Resources: 3 added, 0 changed, 0 destroyed.\n\nOutputs:\n\ndevopslink-name-servers = [\n  \"ns-1512.awsdns-61.org\",\n  \"ns-163.awsdns-20.com\",\n  \"ns-2026.awsdns-61.co.uk\",\n  \"ns-904.awsdns-49.net\",\n]\ndevopslink-public-zone-id = Z10390782TEJ7ISXDVZ22\n```\n\n- Once applied. You will be able to see the hosted zone as follows\n\n![](.images/hosted-zone-window.png)\n\n- And the EC2 instance as well\n\n![](.images/ec2-instance.png)\n\n\n\n- Now you go the list of nameserver in the output. These nameservers know to what IP address our `A` record `server1.codeaprendiz.tk` resolves to.\n  So we will need to go back to [https://my.freenom.com/](https://my.freenom.com/) and manage the domain `codeaprendiz.tk` (specifically go to\n  Management Tools -> Nameservers) and give the list of these nameservers there so it know where to look. Once this is completed.\n\n![](.images/nameservers-config-window.png)\n  \n  \n```bash\n$ nslookup server1.codeaprendiz.tk\nServer:         127.0.0.53\nAddress:        127.0.0.53#53\n\nNon-authoritative answer:\nName:   server1.codeaprendiz.tk\nAddress: 54.91.128.126\n\n$ dig server1.codeaprendiz.tk\n\n; <<>> DiG 9.11.3-1ubuntu1.12-Ubuntu <<>> server1.codeaprendiz.tk\n;; global options: +cmd\n;; Got answer:\n;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12751\n;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1\n\n;; OPT PSEUDOSECTION:\n; EDNS: version: 0, flags:; udp: 65494\n;; QUESTION SECTION:\n;server1.codeaprendiz.tk.       IN      A\n\n;; ANSWER SECTION:\nserver1.codeaprendiz.tk. 300    IN      A       54.91.128.126\n\n;; Query time: 149 msec\n;; SERVER: 127.0.0.53#53(127.0.0.53)\n;; WHEN: Sat Aug 08 00:42:49 +04 2020\n;; MSG SIZE  rcvd: 68\n```\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_022_route53_ec2/versions.tf",
    "content": "\nterraform {\n  required_version = \">= 0.12\"\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_023_terragrunt_ec2/00-vars.tf",
    "content": "variable \"region\" {\n  default = \"eu-west-1\"\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_023_terragrunt_ec2/05-provider.tf",
    "content": "provider \"aws\" {\n  region     = var.region\n}\n\nlocals {\n  awsregion = var.region\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_023_terragrunt_ec2/10-ec2.tf",
    "content": "data \"aws_ami\" \"ubuntu\" {\n  most_recent = true\n\n  filter {\n    name   = \"name\"\n    values = [\"ubuntu/images/hvm-ssd/ubuntu-trusty-14.04-amd64-server-*\"]\n  }\n\n  filter {\n    name   = \"virtualization-type\"\n    values = [\"hvm\"]\n  }\n\n  owners = [\"099720109477\"] # Canonical\n}\n\nresource \"aws_instance\" \"web\" {\n  ami           = data.aws_ami.ubuntu.id\n  instance_type = \"t2.micro\"\n\n  tags = {\n    Name = \"HelloWorld\"\n  }\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_023_terragrunt_ec2/ReadMe.md",
    "content": "### Use Terragrunt to create an EC2 instance in default VPC\n\n- Versions\n```bash\n$ terraform --version\nTerraform v0.14.4\n\nYour version of Terraform is out of date! The latest version\nis 0.14.5. You can update by downloading from https://www.terraform.io/downloads.html\n\n$ terragrunt -version\nterragrunt version v0.27.1\n```\n\n\n- Run the following. Initialization\n```bash\n$ chmod 755 run.sh          \n$ ./run.sh init\n```\n\n- Plan\n```bash\n$ ./run.sh plan\n.\nPlan: 1 to add, 0 to change, 0 to destroy.\n```\n\n- Applying the changes\n```bash\n$ ./run.sh apply\n.\n  + create\n.\nApply complete! Resources: 1 added, 0 changed, 0 destroyed.\n```\n\n- Destroy the changes\n```bash\n$ ./run.sh destroy\n.\nDestroy complete! Resources: 1 destroyed.\n```"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_023_terragrunt_ec2/run.sh",
    "content": "#!/usr/bin/env bash\nmy_dir=\"$(dirname \"$0\")\"\ncredential_file=\"${my_dir}/../../credentials.txt\"\nprofile=\"personal\"\nAWS_SHARED_CREDENTIALS_FILE=\"${credential_file}\" AWS_PROFILE=\"${profile}\" terraform \"$@\"\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_024_certificate_manager/ReadMe.md",
    "content": "### Objective : Create a private certificate for your Domain using AWS Certificate Manager\n\n#### PRE-REQUISITE\n- You own a domain for example in following case I own - `ankitrathi.info`\n![](.images/route53_dashboard.png)\n\n![](.images/route53_dashboard_registered_domains.png)\n\n- You should also have a default hosted zone\n![](.images/route53_hosted_zones.png)\n\n\n#### Let's Begin\n- Go to AWS Certificate Manager\n\n- Choose the region as `us-east-1`\n```bash\n### WHY\nError: error creating CloudFront Distribution: InvalidViewerCertificate: The specified SSL certificate doesn't exist, isn't in us-east-1 region, isn't valid, or doesn't include a valid certificate chain.\n        status code: 400, request id: *****\n```\n\n- Click on `Get started`\n\n![](.images/cert_manager_provision_certificates.png)\n\n\n- Now choose `Request a public certificate` and click on `Request a certificate`\n\n![](.images/cert_manager_request_a_public_certificate.png)\n\n\n\n\n- Now add the following domain names (assuming that you own the first domain, for which you are creating the public certificate)\n  - ankitrathi.info\n  - *.ankitrathi.info\n\n![](.images/cert_manager_add_domain_names.png)  \n\n- Choose the validation method as `DNS Validation` and hit next\n\n![](.images/cert_manager_select_validation_method.png)\n\n- Give tags if required\n\n- Review and confirm\n\n![](.images/cert_manager_review.png)\n\n\n- Now click on the `Create record in Route 53` for creating the records for validation\n\n![](.images/cert_manager_validation.png)\n\n![](.images/cert_manager_create_record_in_route_53.png)\n  \nYou will see a success message. Finally click on continue.\n\n- Now you will see that the `Validation` is in pending state\n\n- Wait for sometime and you should see `Validation Complete`. Meanwhile you can go to Route 53 and check the two CNAMES you just added\n\n\n![](.images/cert_manager_validation_success.png)\n\n- Now you can use the certificate `ARN` visible on the above screen where-ever you need.\n  It will be of following type\n```bash\narn:aws:acm:us-east-1:***********:certificate/*****-****-****-****-********\n```\n\n\n\n \n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_025_terragrunt_iam_user/00-vars.tf",
    "content": "variable \"region\" {\n  default = \"eu-west-1\"\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_025_terragrunt_iam_user/05-provider.tf",
    "content": "provider \"aws\" {\n  region     = var.region\n}\n\nlocals {\n  awsregion = var.region\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_025_terragrunt_iam_user/10-iam-user.tf",
    "content": "data \"aws_s3_bucket\" \"test-backup-bucket\" {\n  bucket = \"test-dev-backup-bucket\"\n}\n\nmodule \"test-backup-bucket-user\" {\n  source    = \"git::https://github.com/cloudposse/terraform-aws-iam-s3-user.git?ref=master\"\n  namespace = \"test\"\n  stage     = \"dev\"\n  name      = \"backup-bucket-admin-user\"\n  s3_actions = [\n    \"s3:GetObject\",\n    \"s3:ListBucket\",\n    \"s3:GetBucketLocation\"\n  ]\n  s3_resources = [\n    \"${data.aws_s3_bucket.test-backup-bucket.arn}/*\",\n    data.aws_s3_bucket.test-backup-bucket.arn\n  ]\n}\n\noutput \"aws-developer-access-key\" {\n  sensitive   = true\n  value = module.test-backup-bucket-user.access_key_id\n}\n\noutput \"aws-developer-secret-key\" {\n  sensitive   = true\n  value = module.test-backup-bucket-user.secret_access_key\n}\n\n\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_025_terragrunt_iam_user/ReadMe.md",
    "content": "### Create an IAM user who will have certain defined access to the S3 bucket\n\n\n- Terraform and Terragrunt versions\n```bash\n$ terraform --version\nTerraform v0.14.4\n\nYour version of Terraform is out of date! The latest version\nis 0.14.5. You can update by downloading from https://www.terraform.io/downloads.html\n\n$ terragrunt -version\nterragrunt version v0.27.1\n```\n\n\n- Run the following. Initialization\n```bash\n$ chmod 755 run.sh          \n$ ./run.sh init\n```\n\n- Plan\n```bash\n$ ./run.sh plan\n```\n\n- Applying the changes\n```bash\n$ ./run.sh apply\n```\n\n- Destroy the changes\n```bash\n$ ./run.sh destroy\n```\n\n- List objects in bucket\n```bash\n$ AWS_ACCESS_KEY_ID=<access-key-id> AWS_SECRET_ACCESS_KEY=<secret-access-key> aws s3 ls s3://test-dev-backup-bucket\n2021-01-25 12:58:10          6 hello.txt\n```\n\n- Remove objects from bucket\n```bash\n$ AWS_ACCESS_KEY_ID=<access-key-id> AWS_SECRET_ACCESS_KEY=<secret-access-key> aws s3 rm s3://test-dev-backup-bucket/hello.txt\ndelete failed: s3://test-dev-backup-bucket/hello.txt An error occurred (AccessDenied) when calling the DeleteObject operation: Access Denied\n```\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_025_terragrunt_iam_user/run.sh",
    "content": "#!/usr/bin/env bash\nmy_dir=\"$(dirname \"$0\")\"\ncredential_file=\"${my_dir}/../../credentials.txt\"\nprofile=\"personal\"\nAWS_SHARED_CREDENTIALS_FILE=\"${credential_file}\" AWS_PROFILE=\"${profile}\" terraform \"$@\"\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_026_terragrunt_s3_bucket/00-vars.tf",
    "content": "variable \"region\" {\n  default = \"eu-west-1\"\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_026_terragrunt_s3_bucket/05-provider.tf",
    "content": "provider \"aws\" {\n  region     = var.region\n}\n\nlocals {\n  awsregion = var.region\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_026_terragrunt_s3_bucket/10-s3-bucket.tf",
    "content": "module \"s3_bucket\" {\n  source                   = \"git::https://github.com/cloudposse/terraform-aws-s3-bucket.git?ref=master\"\n  enabled                  = true\n  user_enabled             = true\n  versioning_enabled       = false\n  allowed_bucket_actions   = [\"s3:*\"]\n  name                     = \"backup-bucket\"\n  stage                    = \"dev\"\n  namespace                = \"test\"\n\n}\n\noutput \"aws-s3-bucket-url\" {\n  sensitive   = true\n  value = module.s3_bucket.bucket_domain_name\n}\n\noutput \"aws-admin-access-key\" {\n  sensitive   = true\n  value = module.s3_bucket.access_key_id\n}\n\noutput \"aws-admin-secret-key\" {\n  sensitive   = true\n  value = module.s3_bucket.secret_access_key\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_026_terragrunt_s3_bucket/ReadMe.md",
    "content": "#### We will create S3 bucket using cloudposse module. We will also have IAM user which will have admin priviledges on S3 bucket\n\n- Terraform and Terragrunt versions\n```bash\n$ terraform --version\nTerraform v0.14.4\n\nYour version of Terraform is out of date! The latest version\nis 0.14.5. You can update by downloading from https://www.terraform.io/downloads.html\n\n$ terragrunt -version\nterragrunt version v0.27.1\n```\n\n\n- Run the following. Initialization\n```bash\n$ chmod 755 run.sh          \n$ ./run.sh init\n```\n\n- Plan\n```bash\n$ ./run.sh plan\n```\n\n- Applying the changes\n```bash\n$ ./run.sh apply\n```\n\n- Destroy the changes\n```bash\n$ ./run.sh destroy\n```\n\n\n- Uploading object\n```bash\nAWS_ACCESS_KEY_ID=<access-key-id>  AWS_SECRET_ACCESS_KEY=<secret-access-key>  aws s3 cp hello.txt s3://test-dev-backup-bucket/hello.txt\nupload: ./hello.txt to s3://test-dev-backup-bucket/hello.txt    \n```\n\n- Get the object\n```bash\n$ AWS_ACCESS_KEY_ID=<access-key-id> AWS_SECRET_ACCESS_KEY=<secret-access-key> aws s3 cp  s3://test-dev-backup-bucket/hello.txt .\ndownload: s3://test-dev-backup-bucket/hello.txt to ./hello.txt \n```\n\n- list files\n```bash\n$ AWS_ACCESS_KEY_ID=<access-key-id> AWS_SECRET_ACCESS_KEY=<secret-access-key> aws s3 ls s3://test-dev-backup-bucket/hello.txt              \n2021-01-25 12:39:54         12 hello.txt\n```\n\n- Delete the object\n```bash\n$ AWS_ACCESS_KEY_ID=<access-key-id> AWS_SECRET_ACCESS_KEY=<secret-access-key> aws s3 rm s3://test-dev-backup-bucket/hello.txt\ndelete: s3://test-dev-backup-bucket/hello.txt\n```\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_026_terragrunt_s3_bucket/hello.txt",
    "content": "hello world\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_026_terragrunt_s3_bucket/run.sh",
    "content": "#!/usr/bin/env bash\nmy_dir=\"$(dirname \"$0\")\"\ncredential_file=\"${my_dir}/../../credentials.txt\"\nprofile=\"personal\"\nAWS_SHARED_CREDENTIALS_FILE=\"${credential_file}\" AWS_PROFILE=\"${profile}\" terraform \"$@\"\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_027_terragrunt_cdn/00-vars.tf",
    "content": "variable \"region\" {\n  default = \"eu-west-1\"\n}\n\n\nvariable \"public_hosted_zone_id\" {\n  description = \"ID of the Public Hosted Zone\"\n  type        = string\n  sensitive   = true\n}\n\n\nvariable \"private_certificate_arn\" {\n  description = \"ARN of the private certificate issued by AWS Certificate Manager\"\n  type        = string\n  sensitive   = true\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_027_terragrunt_cdn/05-provider.tf",
    "content": "provider \"aws\" {\n  region     = var.region\n}\n\nlocals {\n  awsregion = var.region\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_027_terragrunt_cdn/10-cdn.tf",
    "content": "module \"cf-s3-test\" {\n  source    = \"git::https://github.com/cloudposse/terraform-aws-cloudfront-s3-cdn.git?ref=0.41.0\"\n  namespace = \"backend\"\n  stage     = \"dev\"\n  name      = \"test\"\n\n## If you want to create alias name for accessing objects cached by cloud front. Note you will need to create the CNAME yourself.\n//  aliases = [\n//    \"test-test-dev.ankitrathi.info\"\n//  ]\n  wait_for_deployment = false\n  compress            = true\n  ipv6_enabled        = true\n\n  parent_zone_id           = var.public_hosted_zone_id\n  acm_certificate_arn      = var.private_certificate_arn\n  use_regional_s3_endpoint = true\n  origin_force_destroy     = true\n  cors_allowed_headers = [\n    \"*\"\n  ]\n  cors_allowed_methods = [\n    \"GET\",\n    \"HEAD\",\n    \"PUT\"\n  ]\n  logging_enabled = false\n\n\n  min_ttl     = 86400\n  default_ttl = 604800\n  max_ttl     = 31536000\n\n}\n\nresource \"aws_s3_bucket_object\" \"cf-s3-test\" {\n  bucket       = module.cf-s3-test.s3_bucket\n  key          = \"index.html\"\n  source       = \"${path.module}/index.html\"\n  content_type = \"text/html\"\n  etag         = md5(file(\"${path.module}/index.html\"))\n}\n\n\nmodule \"s3-user-test\" {\n  source    = \"git::https://github.com/cloudposse/terraform-aws-iam-s3-user.git?ref=0.14.1\"\n  namespace = \"backend\"\n  stage     = \"dev\"\n  name      = \"test\"\n  s3_actions = [\n    \"s3:GetBucketLocation\",\n    \"s3:ListAllMyBuckets\",\n    \"s3:ListBucket\",\n    \"s3:PutObject\",\n    \"s3:PutObjectAcl\",\n    \"s3:GetObjectAcl\",\n    \"s3:GetObjectVersion\",\n    \"s3:DeleteObject\",\n    \"s3:DeleteObjectVersion\"\n  ]\n  s3_resources = [\n    module.cf-s3-test.s3_bucket_arn,\n    \"${module.cf-s3-test.s3_bucket_arn}/*\",\n  ]\n\n  depends_on = [\n    module.cf-s3-test\n  ]\n}\n\noutput \"cf-s3-test-name\" {\n  value = module.cf-s3-test.s3_bucket\n}\n\noutput \"cf-s3-test-domain-name\" {\n  value = module.cf-s3-test.s3_bucket_domain_name\n}\n\noutput \"s3-user-test-username\" {\n  value = module.s3-user-test.user_name\n}\n\noutput \"s3-user-test-access-id\" {\n  sensitive = true\n  value = module.s3-user-test.access_key_id\n}\n\noutput \"s3-user-test-secret-key\" {\n  sensitive = true\n  value = module.s3-user-test.secret_access_key\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_027_terragrunt_cdn/ReadMe.md",
    "content": "### Objective : Create a CDN using cloudposse module and ensure that sensitive variables are hidden\n\n#### Pre-requisite\n\n- Update values of in `secret.tfvars` as per your configuration (take reference from secret.tfvars.example)\n- [Hosted Zone (default hosted zone would do)](../task-011-route53)\n- You should own a domain (like in this case I own `ankitrathi.info`)\n- [Create a private Certificate for your domain](../task-024-certificate-manager)\n\n\n#### Let's Begin\n\n- Terraform and Terragrunt versions\n\n```bash\n$ terraform --version\nTerraform v0.14.4\n\nYour version of Terraform is out of date! The latest version\nis 0.14.5. You can update by downloading from https://www.terraform.io/downloads.html\n\n$ terragrunt -version\nterragrunt version v0.27.1\n```\n\n- Initialize\n\n```bash\n$ ./run.sh init\n```\n\n- Plan\n\n```bash\n$ ./run.sh plan -var-file=\"secret.tfvars\" \n.\n\nPlan: 8 to add, 0 to change, 0 to destroy.\n\nChanges to Outputs:\n  + cf-s3-test-domain-name  = (known after apply)\n  + cf-s3-test-name         = (known after apply)\n  + s3-user-test-access-id  = (sensitive value)\n  + s3-user-test-secret-key = (sensitive value)\n  + s3-user-test-username   = \"backend-dev-test\"\n\n```\n\n- Apply the changes\n\n```bash\n$ ./run.sh apply -var-file=\"secret.tfvars\"\n.\nApply complete! Resources: 8 added, 0 changed, 0 destroyed.\n\nOutputs:\n\ncf-s3-test-domain-name = \"backend-dev-test-origin.s3.eu-west-1.amazonaws.com\"\ncf-s3-test-name = \"backend-dev-test-origin\"\ns3-user-test-access-id = <sensitive>\ns3-user-test-secret-key = <sensitive>\ns3-user-test-username = \"backend-dev-test\"\n```\n\n### Screenshots\n\n![](.images/cdn_home.png)\n\n![](.images/cdn_general_tab.png)\n\n![](.images/cdn_origin_and_origin_groups.png)\n\n![](.images/cdn_behaviour.png)\n\n![](.images/cdn_its_working.png)\n\n- You can also validate using the curl command\n\n```bash\n$ curl https://d3a656hcndx1gu.cloudfront.net/                                        \n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Working!</title>\n</head>\n<body>\n<h1>Congratulations! Your CDN is Working!</h1>\n</body>\n</html>\n```\n\n- Also checkout the nslookup output\n\n```bash\n$ nslookup d3a656hcndx1gu.cloudfront.net                              \nServer:         213.42.20.20\nAddress:        213.42.20.20#53\n\nNon-authoritative answer:\nName:   d3a656hcndx1gu.cloudfront.net\nAddress: 13.33.93.127\nName:   d3a656hcndx1gu.cloudfront.net\nAddress: 13.33.93.55\nName:   d3a656hcndx1gu.cloudfront.net\nAddress: 13.33.93.52\nName:   d3a656hcndx1gu.cloudfront.net\nAddress: 13.33.93.35\n```\n\n\n- Now to destroy the resources\n\n```bash\n$ ./run.sh destroy -var-file=\"secret.tfvars\"\n.\nDestroy complete! Resources: 8 destroyed.\n```"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_027_terragrunt_cdn/index.html-rename-me-to-html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Working!</title>\n</head>\n<body>\n<h1>Congratulations! Your CDN is Working!</h1>\n</body>\n</html>\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_027_terragrunt_cdn/run.sh",
    "content": "#!/usr/bin/env bash\nmy_dir=\"$(dirname \"$0\")\"\ncredential_file=\"${my_dir}/../../credentials.txt\"\nprofile=\"personal\"\nAWS_SHARED_CREDENTIALS_FILE=\"${credential_file}\" AWS_PROFILE=\"${profile}\" terraform \"$@\"\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_027_terragrunt_cdn/secret.tfvars.example",
    "content": "public_hosted_zone_id = \"\"\nprivate_certificate_arn = \"\""
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_029_ec2_jenkins_instance_and_slave_instance/00-vars.tf",
    "content": "variable \"region\" {\n  default = \"eu-west-1\"\n}\n\nvariable \"subnet\" {\n  description = \"The subnet where instance would be created\"\n  type        = string\n//  sensitive   = true\n}\n\nvariable \"vpc\" {\n  description = \"VPC\"\n  type        = string\n//  sensitive   = true\n}\n\n\nvariable \"hosted_zone_id\" {\n  description = \"Hosted Zone ID\"\n  type        = string\n  //  sensitive   = true\n}\n\n\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_029_ec2_jenkins_instance_and_slave_instance/05-provider.tf",
    "content": "provider \"aws\" {\n  region     = var.region\n}\n\nlocals {\n  awsregion = var.region\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_029_ec2_jenkins_instance_and_slave_instance/10-data.tf",
    "content": "data \"aws_ami\" \"ubuntu-bionic-latest\" {\n  most_recent = true\n\n  filter {\n    name = \"name\"\n    values = [\n      \"ubuntu/images/hvm-ssd/ubuntu-focal-20.04-amd64-server-20210223\"\n    ]\n  }\n\n  owners = [\n    \"099720109477\"\n  ]\n\n  provider = aws\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_029_ec2_jenkins_instance_and_slave_instance/101-ec2-jenkins.tf",
    "content": "variable \"jenkins-instance-count\" {\n  default = 1\n}\n\n//variable \"jenkins-private-ips\" {\n//  default = [\n//    \"172.31.2.201\"\n//  ]\n//}\n\nmodule \"tools-ec2-jenkins\" {\n  source         = \"terraform-aws-modules/ec2-instance/aws\"\n  version        = \"~> 2.15\"\n  name           = \"dev-jenkins\"\n  instance_count = var.jenkins-instance-count\n  use_num_suffix = true\n\n  ami           = data.aws_ami.ubuntu-bionic-latest.id\n  instance_type = \"t2.micro\"\n  key_name      = \"jenkins.pem.pub\"\n  monitoring    = true\n\n  vpc_security_group_ids = [\n    module.security-group-jenkins.this_security_group_id,\n  ]\n  subnet_id = var.subnet\n\n//  private_ips = var.jenkins-private-ips\n\n  associate_public_ip_address = true\n\n  root_block_device = [\n    {\n      volume_type = \"gp2\"\n      volume_size = 30\n    },\n  ]\n\n  tags = {\n    name        = \"dev-jenkins\"\n    terraform   = \"true\"\n    environment = \"dev\"\n    domain      = \"jenkins.ankitrathi.info\"\n    project     = \"dev jenkins\"\n    application = \"jenkins\"\n    team        = \"devops\"\n  }\n}\n\nresource \"aws_eip\" \"tools-ec2-jenkins-eip\" {\n  vpc      = true\n  instance = module.tools-ec2-jenkins.id[0]\n}\n\nresource \"aws_ebs_volume\" \"ec2-ebs-jenkins\" {\n  count = var.jenkins-instance-count\n\n  availability_zone = module.tools-ec2-jenkins.availability_zone[count.index]\n  size              = 30\n}\n\nresource \"aws_volume_attachment\" \"ec2-ebs-attachment-es-www\" {\n  count = var.jenkins-instance-count\n\n  device_name = \"/dev/sdh\"\n  volume_id   = aws_ebs_volume.ec2-ebs-jenkins[count.index].id\n  instance_id = module.tools-ec2-jenkins.id[count.index]\n}\n\nresource \"aws_route53_record\" \"tools-jenkins-a-record\" {\n  zone_id = var.hosted_zone_id\n  name    = \"jenkins.ankitrathi.info\"\n  type    = \"A\"\n  ttl     = \"3600\"\n\n  records = [\n    aws_eip.tools-ec2-jenkins-eip.public_ip\n  ]\n\n  depends_on = [\n    module.tools-ec2-jenkins\n  ]\n}\n\n//output \"tools-ec2-jenkins-public_ip\" {\n//  value = aws_eip.tools-ec2-jenkins-eip.public_ip\n//}\n\noutput \"tools-ec2-jenkins-public_dns\" {\n  value = module.tools-ec2-jenkins.public_dns\n}\n\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_029_ec2_jenkins_instance_and_slave_instance/102-ec2-jenkins-slave.tf",
    "content": "//variable \"jenkins-slave-instance-count\" {\n//  default = 1\n//}\n//\n////variable \"jenkins-slave-private-ips\" {\n////  default = [\n////    \"172.31.47.221\"\n////  ]\n////}\n//\n//module \"ec2-jenkins-slave\" {\n//  source  = \"terraform-aws-modules/ec2-instance/aws\"\n//  version = \"~> 2.15\"\n//\n//  name           = \"dev-jenkins-slave\"\n//  instance_count = var.jenkins-slave-instance-count\n//  use_num_suffix = true\n//\n//  ami           = data.aws_ami.ubuntu-bionic-latest.id\n//  instance_type = \"t2.micro\"\n//  key_name      = \"jenkins.pem.pub\"\n//  monitoring    = true\n//\n//  vpc_security_group_ids = [\n//    module.security-group-jenkins-slave.this_security_group_id\n//  ]\n//  subnet_id = var.subnet\n//\n////  private_ips = var.jenkins-slave-private-ips\n//\n//  associate_public_ip_address = true\n//\n//  root_block_device = [\n//    {\n//      volume_type = \"gp2\"\n//      volume_size = 30\n//    },\n//  ]\n//\n//  tags = {\n//    name        = \"dev-jenkins-slave\"\n//    terraform   = \"true\"\n//    environment = \"stage\"\n//    domain      = \"jenkins-slave.ankitrathi.info\"\n//    project     = \"stage jenkins-slave\"\n//    application = \"jenkins-slave\"\n//    team        = \"devops\"\n//  }\n//}\n//\n////resource \"aws_eip\" \"dev-jenkins-slave-eip\" {\n////  vpc      = true\n////  instance = module.ec2-jenkins-slave.id[0]\n////}\n//\n//resource \"aws_ebs_volume\" \"ec2-ebs-jenkins-slave\" {\n//  count = var.jenkins-slave-instance-count\n//\n//  availability_zone = module.ec2-jenkins-slave.availability_zone[count.index]\n//  size              = 50\n//}\n//\n//resource \"aws_volume_attachment\" \"ec2-ebs-attachment-jenkins-slave\" {\n//  count = var.jenkins-slave-instance-count\n//\n//  device_name = \"/dev/sdh\"\n//  volume_id   = aws_ebs_volume.ec2-ebs-jenkins-slave[count.index].id\n//  instance_id = module.ec2-jenkins-slave.id[count.index]\n//}\n//\n//\n//output \"ec2-jenkins-slave-public_dns\" {\n//  value = module.ec2-jenkins-slave.public_dns\n//}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_029_ec2_jenkins_instance_and_slave_instance/105-sg.tf",
    "content": "module \"security-group-jenkins\" {\n  source  = \"terraform-aws-modules/security-group/aws\"\n  version = \"~> 3.17\"\n\n  name        = \"security-group-jenkins\"\n  description = \"security-group-jenkins\"\n  vpc_id      = var.vpc\n\n  ingress_cidr_blocks = [\n    \"0.0.0.0/0\",\n  ]\n\n  ingress_with_cidr_blocks = [\n    {\n      from_port   = 22\n      to_port     = 22\n      protocol    = \"tcp\"\n      description = \"Jenkins-agent ports\"\n    },\n    {\n      from_port   = 80\n      to_port     = 80\n      protocol    = \"tcp\"\n      description = \"Jenkins-agent ports\"\n    },\n    {\n      from_port   = 443\n      to_port     = 443\n      protocol    = \"tcp\"\n      description = \"Jenkins-agent ports\"\n    },\n    {\n      from_port   = 50001\n      to_port     = 50001\n      protocol    = \"tcp\"\n      description = \"Jenkins-agent ports\"\n    }\n  ]\n\n  egress_rules = [\n    \"all-all\"\n  ]\n}\n\n\n\nmodule \"security-group-jenkins-slave\" {\n  source  = \"terraform-aws-modules/security-group/aws\"\n  version = \"~> 3.17\"\n\n  name        = \"security-group-jenkins-slave\"\n  description = \"security-group-jenkins-slave\"\n  vpc_id      = var.vpc\n\n  ingress_cidr_blocks = [\n    \"0.0.0.0/0\",\n  ]\n\n  ingress_with_cidr_blocks = [\n    {\n      from_port   = 22\n      to_port     = 22\n      protocol    = \"tcp\"\n      description = \"Jenkins-agent ports\"\n    },\n    {\n      from_port   = 50001\n      to_port     = 50001\n      protocol    = \"tcp\"\n      description = \"Jenkins-agent ports\"\n    }\n  ]\n\n  egress_rules = [\n    \"all-all\"\n  ]\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_029_ec2_jenkins_instance_and_slave_instance/15-key-pair.tf",
    "content": "resource \"aws_key_pair\" \"ec2key\" {\n  key_name   = \"jenkins.pem.pub\"\n  public_key = \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC1wsFPetVjr+JbhOrkrqXYaty2gohfg40Oi3H91qKka6fJvzX1mLZoCa0O6cKe67+Fz6XMkZgjDTu4oBjgCiacsKptCRs6bwcaiNanEpiFWGCjxtLJWc2QplQ4OXKl1SBCjR0LyOiwsAGLjpJzl1GJNWZPQGVfm1Tx5l2gHI4znc2rvVs7oVcPxndbsSGqT5Zd+P6rhUz19C6nfpYFrMMSj62HyESZEUVLiaPmSsrcSAu7qGRTq4ALfTH/Z4vTUDLkMYkwLJZUaYQZlCK+TJ6WWvGFE1fMUVfbNssLxOAuFp/dL7KVYNjfqpDAbjqwzgLVvZaEauLQX2NvV1tpEzcOTIOadSN4Nzn1/h1nvFp71/AUaBX1bNPu6x26G7iTS1rxx1MwiDZ9A32G7TzRiQI1InK3QMKDJW75Ioy3DPpDChQSD36jFlC4sfPsF+4c/LKUUtBqSm41NP2RuQWEJwemgJo/FgCHnvpBXCko76X9vloch5qIgQ2BAsy92ii3n0E=\"\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_029_ec2_jenkins_instance_and_slave_instance/ReadMe.md",
    "content": "### Use Terragrunt to create an EC2 instance in default VPC\n\n- Create keys\n\n```bash\n$ ssh-keygen\nGenerating public/private rsa key pair.\nEnter file in which to save the key (/Users/user/.ssh/id_rsa): jenkins.pem\nEnter passphrase (empty for no passphrase): \nEnter same passphrase again: \nYour identification has been saved in jenkins.pem.\nYour public key has been saved in jenkins.pem.pub.\n\n$ ls         \n00-vars.tf               05-provider.tf           101-ec2-jenkins.tf       102-ec2-jenkins-slave.tf ReadMe.md                jenkins.pem              jenkins.pem.pub          run.sh\n```\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_029_ec2_jenkins_instance_and_slave_instance/jenkins.pem.pub",
    "content": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC1wsFPetVjr+JbhOrkrqXYaty2gohfg40Oi3H91qKka6fJvzX1mLZoCa0O6cKe67+Fz6XMkZgjDTu4oBjgCiacsKptCRs6bwcaiNanEpiFWGCjxtLJWc2QplQ4OXKl1SBCjR0LyOiwsAGLjpJzl1GJNWZPQGVfm1Tx5l2gHI4znc2rvVs7oVcPxndbsSGqT5Zd+P6rhUz19C6nfpYFrMMSj62HyESZEUVLiaPmSsrcSAu7qGRTq4ALfTH/Z4vTUDLkMYkwLJZUaYQZlCK+TJ6WWvGFE1fMUVfbNssLxOAuFp/dL7KVYNjfqpDAbjqwzgLVvZaEauLQX2NvV1tpEzcOTIOadSN4Nzn1/h1nvFp71/AUaBX1bNPu6x26G7iTS1rxx1MwiDZ9A32G7TzRiQI1InK3QMKDJW75Ioy3DPpDChQSD36jFlC4sfPsF+4c/LKUUtBqSm41NP2RuQWEJwemgJo/FgCHnvpBXCko76X9vloch5qIgQ2BAsy92ii3n0E= ankitsinghrathi@Ankits-MacBook-Pro.local\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_029_ec2_jenkins_instance_and_slave_instance/run.sh",
    "content": "#!/usr/bin/env bash\nmy_dir=\"$(dirname \"$0\")\"\ncredential_file=\"${my_dir}/../../credentials.txt\"\nprofile=\"personal\"\nAWS_SHARED_CREDENTIALS_FILE=\"${credential_file}\" AWS_PROFILE=\"${profile}\" terraform \"$@\"\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_030_creating_eks/README.md",
    "content": "# Learn Terraform - Provision an EKS Cluster\n\n[learn creating eks](https://learn.hashicorp.com/tutorials/terraform/eks)\n[vpc](https://registry.terraform.io/modules/terraform-aws-modules/vpc/aws/latest)\n[eks](https://registry.terraform.io/modules/terraform-aws-modules/eks/aws/latest)\n[spot and on-demand blog](https://aws.amazon.com/blogs/compute/run-your-kubernetes-workloads-on-amazon-ec2-spot-instances-with-amazon-eks/)\n\n\n\n- Init\n\n```bash\n./run.sh init\n```\n\n- Apply \n\n```bash\n./run.sh apply\n.\n.\nApply complete! Resources: 51 added, 0 changed, 0 destroyed.\n.\n.\n\n```\n\n- Get the kubeconfig\n\n```bash\n$ aws eks --region $(terraform output -raw region) update-kubeconfig --name $(terraform output -raw cluster_name) --kubeconfig kubeconfig\n```\n\n- Get the nodes\n\n```bash\n$ kubectl get nodes --kubeconfig=./kubeconfig                       \nNAME                         STATUS   ROLES    AGE     VERSION\nip-10-0-1-140.ec2.internal   Ready    <none>   4m20s   v1.20.4-eks-6b7464\nip-10-0-2-35.ec2.internal    Ready    <none>   4m38s   v1.20.4-eks-6b7464\nip-10-0-3-91.ec2.internal    Ready    <none>   4m57s   v1.20.4-eks-6b7464\n\n$ kubectl get pods -n kube-system --kubeconfig=./kubeconfig\nNAME                       READY   STATUS    RESTARTS   AGE\naws-node-8dsqn             1/1     Running   0          7m42s\naws-node-j8vmm             1/1     Running   0          7m6s\naws-node-q45sf             1/1     Running   0          7m24s\ncoredns-65bfc5645f-2twrg   1/1     Running   0          11m\ncoredns-65bfc5645f-p7ngx   1/1     Running   0          11m\nkube-proxy-5jbzj           1/1     Running   0          7m42s\nkube-proxy-hq79m           1/1     Running   0          7m24s\nkube-proxy-r6rwq           1/1     Running   0          7m6s\n\n\n```\n\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_030_creating_eks/eks-cluster.tf",
    "content": "module \"eks\" {\n  source          = \"terraform-aws-modules/eks/aws\"\n  cluster_name    = local.cluster_name\n  cluster_version = \"1.20\"\n  subnets         = module.vpc.private_subnets\n\n  tags = {\n    Environment = \"training\"\n    GithubRepo  = \"terraform-aws-eks\"\n    GithubOrg   = \"terraform-aws-modules\"\n  }\n\n  vpc_id = module.vpc.vpc_id\n\n  workers_group_defaults = {\n    root_volume_type = \"gp2\"\n  }\n\n  worker_groups = [\n    {\n      name                          = \"worker-group-1\"\n      instance_type                 = \"t2.small\"\n      additional_userdata           = \"echo foo bar\"\n      asg_desired_capacity          = 2\n      additional_security_group_ids = [aws_security_group.worker_group_mgmt_one.id]\n    },\n    {\n      name                          = \"worker-group-2\"\n      instance_type                 = \"t2.medium\"\n      additional_userdata           = \"echo foo bar\"\n      additional_security_group_ids = [aws_security_group.worker_group_mgmt_two.id]\n      asg_desired_capacity          = 1\n    },\n  ]\n}\n\ndata \"aws_eks_cluster\" \"cluster\" {\n  name = module.eks.cluster_id\n}\n\ndata \"aws_eks_cluster_auth\" \"cluster\" {\n  name = module.eks.cluster_id\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_030_creating_eks/kubernetes-dashboard-admin.rbac.yaml",
    "content": "apiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: admin-user\n  namespace: kube-system\n---\n# Create ClusterRoleBinding\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: admin-user\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cluster-admin\nsubjects:\n- kind: ServiceAccount\n  name: admin-user\n  namespace: kube-system\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_030_creating_eks/kubernetes.tf",
    "content": "# Kubernetes provider\n# https://learn.hashicorp.com/terraform/kubernetes/provision-eks-cluster#optional-configure-terraform-kubernetes-provider\n# To learn how to schedule deployments and services using the provider, go here: https://learn.hashicorp.com/terraform/kubernetes/deploy-nginx-kubernetes\n\n# The Kubernetes provider is included in this file so the EKS module can complete successfully. Otherwise, it throws an error when creating `kubernetes_config_map.aws_auth`.\n# You should **not** schedule deployments and services in this workspace. This keeps workspaces modular (one for provision EKS, another for scheduling Kubernetes resources) as per best practices.\n\nprovider \"kubernetes\" {\n  host                   = data.aws_eks_cluster.cluster.endpoint\n  token                  = data.aws_eks_cluster_auth.cluster.token\n  cluster_ca_certificate = base64decode(data.aws_eks_cluster.cluster.certificate_authority.0.data)\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_030_creating_eks/outputs.tf",
    "content": "output \"cluster_id\" {\n  description = \"EKS cluster ID.\"\n  value       = module.eks.cluster_id\n}\n\noutput \"cluster_endpoint\" {\n  description = \"Endpoint for EKS control plane.\"\n  value       = module.eks.cluster_endpoint\n}\n\noutput \"cluster_security_group_id\" {\n  description = \"Security group ids attached to the cluster control plane.\"\n  value       = module.eks.cluster_security_group_id\n}\n\noutput \"kubectl_config\" {\n  description = \"kubectl config as generated by the module.\"\n  value       = module.eks.kubeconfig\n}\n\noutput \"config_map_aws_auth\" {\n  description = \"A kubernetes configuration to authenticate to this EKS cluster.\"\n  value       = module.eks.config_map_aws_auth\n}\n\noutput \"region\" {\n  description = \"AWS region\"\n  value       = var.region\n}\n\noutput \"cluster_name\" {\n  description = \"Kubernetes Cluster Name\"\n  value       = local.cluster_name\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_030_creating_eks/run.sh",
    "content": "#!/usr/bin/env bash\nmy_dir=\"$(dirname \"$0\")\"\ncredential_file=\"${my_dir}/../../credentials.txt\"\nprofile=\"personal\"\nAWS_SHARED_CREDENTIALS_FILE=\"${credential_file}\" AWS_PROFILE=\"${profile}\" terraform \"$@\"\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_030_creating_eks/security-groups.tf",
    "content": "\nresource \"aws_security_group\" \"worker_group_mgmt_one\" {\n  name_prefix = \"worker_group_mgmt_one\"\n  vpc_id      = module.vpc.vpc_id\n\n  ingress {\n    from_port = 22\n    to_port   = 22\n    protocol  = \"tcp\"\n\n    cidr_blocks = [\n      \"10.0.0.0/8\",\n    ]\n  }\n}\n\nresource \"aws_security_group\" \"worker_group_mgmt_two\" {\n  name_prefix = \"worker_group_mgmt_two\"\n  vpc_id      = module.vpc.vpc_id\n\n  ingress {\n    from_port = 22\n    to_port   = 22\n    protocol  = \"tcp\"\n\n    cidr_blocks = [\n      \"192.168.0.0/16\",\n    ]\n  }\n}\n\nresource \"aws_security_group\" \"all_worker_mgmt\" {\n  name_prefix = \"all_worker_management\"\n  vpc_id      = module.vpc.vpc_id\n\n  ingress {\n    from_port = 22\n    to_port   = 22\n    protocol  = \"tcp\"\n\n    cidr_blocks = [\n      \"10.0.0.0/8\",\n      \"172.16.0.0/12\",\n      \"192.168.0.0/16\",\n    ]\n  }\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_030_creating_eks/versions.tf",
    "content": "terraform {\n  required_providers {\n    aws = {\n      source  = \"hashicorp/aws\"\n      version = \">= 3.20.0\"\n    }\n\n    random = {\n      source  = \"hashicorp/random\"\n      version = \"3.1.0\"\n    }\n\n    local = {\n      source  = \"hashicorp/local\"\n      version = \"2.1.0\"\n    }\n\n    null = {\n      source  = \"hashicorp/null\"\n      version = \"3.1.0\"\n    }\n\n    kubernetes = {\n      source  = \"hashicorp/kubernetes\"\n      version = \">= 2.0.1\"\n    }\n  }\n\n  required_version = \"> 0.14\"\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_030_creating_eks/vpc.tf",
    "content": "variable \"region\" {\n  default     = \"us-east-1\"\n  description = \"AWS region\"\n}\n\nprovider \"aws\" {\n  region = var.region\n}\n\ndata \"aws_availability_zones\" \"available\" {}\n\nlocals {\n  cluster_name = \"education-eks-${random_string.suffix.result}\"\n}\n\nresource \"random_string\" \"suffix\" {\n  length  = 8\n  special = false\n}\n\nmodule \"vpc\" {\n  source  = \"terraform-aws-modules/vpc/aws\"\n  version = \"3.6.0\"\n\n  name                 = \"education-vpc\"\n  cidr                 = \"10.0.0.0/16\"\n  azs                  = data.aws_availability_zones.available.names\n  private_subnets      = [\"10.0.1.0/24\", \"10.0.2.0/24\", \"10.0.3.0/24\"]\n  public_subnets       = [\"10.0.4.0/24\", \"10.0.5.0/24\", \"10.0.6.0/24\"]\n  enable_nat_gateway   = true\n  single_nat_gateway   = true\n  enable_dns_hostnames = true\n\n  tags = {\n    \"kubernetes.io/cluster/${local.cluster_name}\" = \"shared\"\n  }\n\n  public_subnet_tags = {\n    \"kubernetes.io/cluster/${local.cluster_name}\" = \"shared\"\n    \"kubernetes.io/role/elb\"                      = \"1\"\n  }\n\n  private_subnet_tags = {\n    \"kubernetes.io/cluster/${local.cluster_name}\" = \"shared\"\n    \"kubernetes.io/role/internal-elb\"             = \"1\"\n  }\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_031_creating_eks_spot/README.md",
    "content": "# Learn Terraform - Provision an EKS Cluster\n\n[learn creating eks](https://learn.hashicorp.com/tutorials/terraform/eks)\n[vpc](https://registry.terraform.io/modules/terraform-aws-modules/vpc/aws/latest)\n[eks](https://registry.terraform.io/modules/terraform-aws-modules/eks/aws/latest)\n[spot and on-demand blog](https://aws.amazon.com/blogs/compute/run-your-kubernetes-workloads-on-amazon-ec2-spot-instances-with-amazon-eks/)\n\n\n\n- Init\n\n```bash\n./run.sh init\n```\n\n- Apply \n\n```bash\n./run.sh apply\n.\n.\nApply complete! Resources: 51 added, 0 changed, 0 destroyed.\n.\n.\n\n```\n\n- Get the kubeconfig\n\n```bash\n$ aws eks --region $(terraform output -raw region) update-kubeconfig --name $(terraform output -raw cluster_name) --kubeconfig kubeconfig\n```\n\n- Get the nodes\n\n```bash\n$ kubectl get nodes --kubeconfig=./kubeconfig\nNAME                         STATUS   ROLES    AGE     VERSION\nip-10-0-1-166.ec2.internal   Ready    <none>   5m2s    v1.20.4-eks-6b7464\nip-10-0-2-82.ec2.internal    Ready    <none>   4m39s   v1.20.4-eks-6b7464\n\n\n$ kubectl get pods -n kube-system --kubeconfig=./kubeconfig\nNAME                       READY   STATUS    RESTARTS   AGE\naws-node-k6btq             1/1     Running   0          4m52s\naws-node-r2rgs             1/1     Running   0          5m15s\ncoredns-65bfc5645f-lsghg   1/1     Running   0          20m\ncoredns-65bfc5645f-rw846   1/1     Running   0          20m\nkube-proxy-lwxtx           1/1     Running   0          4m52s\nkube-proxy-sf5dl           1/1     Running   0          5m15s\n```\n\n\n### Screenshots\n\n- Autoscaling groups\n\n![](.images/autoscaling-groups.png)\n\n- Launch configuration\n\n![](.images/launch-configuration.png)\n\n\n- Instances\n\n![](.images/instances.png)\n\n- Spot requests\n\n![](.images/spot-request.png)\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_031_creating_eks_spot/eks-cluster.tf",
    "content": "module \"eks\" {\n  source          = \"terraform-aws-modules/eks/aws\"\n  cluster_name    = local.cluster_name\n  cluster_version = \"1.20\"\n  subnets         = module.vpc.private_subnets\n\n  tags = {\n    Environment = \"training\"\n    GithubRepo  = \"terraform-aws-eks\"\n    GithubOrg   = \"terraform-aws-modules\"\n  }\n\n  vpc_id = module.vpc.vpc_id\n\n  workers_group_defaults = {\n    root_volume_type = \"gp2\"\n  }\n\n  worker_groups = [\n    {\n      name                          = \"worker-group-1-on-demand\"\n      instance_type                 = \"t2.small\"\n      additional_userdata           = \"echo foo bar\"\n      asg_max_size                  = 1\n      kubelet_extra_args            = \"--node-labels=node.kubernetes.io/lifecycle=normal\"\n      suspended_processes           = [\"AZRebalance\"]\n      additional_security_group_ids = [aws_security_group.worker_group_mgmt_one.id]\n    },\n    {\n      name                = \"worker-group-2-spot\"\n      spot_price          = \"0.199\"\n      instance_type       = \"t2.small\"\n      asg_max_size        = 2\n      kubelet_extra_args  = \"--node-labels=node.kubernetes.io/lifecycle=spot\"\n      suspended_processes = [\"AZRebalance\"]\n    },\n  ]\n}\n\ndata \"aws_eks_cluster\" \"cluster\" {\n  name = module.eks.cluster_id\n}\n\ndata \"aws_eks_cluster_auth\" \"cluster\" {\n  name = module.eks.cluster_id\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_031_creating_eks_spot/kubernetes-dashboard-admin.rbac.yaml",
    "content": "apiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: admin-user\n  namespace: kube-system\n---\n# Create ClusterRoleBinding\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: admin-user\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cluster-admin\nsubjects:\n- kind: ServiceAccount\n  name: admin-user\n  namespace: kube-system\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_031_creating_eks_spot/kubernetes.tf",
    "content": "# Kubernetes provider\n# https://learn.hashicorp.com/terraform/kubernetes/provision-eks-cluster#optional-configure-terraform-kubernetes-provider\n# To learn how to schedule deployments and services using the provider, go here: https://learn.hashicorp.com/terraform/kubernetes/deploy-nginx-kubernetes\n\n# The Kubernetes provider is included in this file so the EKS module can complete successfully. Otherwise, it throws an error when creating `kubernetes_config_map.aws_auth`.\n# You should **not** schedule deployments and services in this workspace. This keeps workspaces modular (one for provision EKS, another for scheduling Kubernetes resources) as per best practices.\n\nprovider \"kubernetes\" {\n  host                   = data.aws_eks_cluster.cluster.endpoint\n  token                  = data.aws_eks_cluster_auth.cluster.token\n  cluster_ca_certificate = base64decode(data.aws_eks_cluster.cluster.certificate_authority.0.data)\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_031_creating_eks_spot/outputs.tf",
    "content": "output \"cluster_id\" {\n  description = \"EKS cluster ID.\"\n  value       = module.eks.cluster_id\n}\n\noutput \"cluster_endpoint\" {\n  description = \"Endpoint for EKS control plane.\"\n  value       = module.eks.cluster_endpoint\n}\n\noutput \"cluster_security_group_id\" {\n  description = \"Security group ids attached to the cluster control plane.\"\n  value       = module.eks.cluster_security_group_id\n}\n\noutput \"kubectl_config\" {\n  description = \"kubectl config as generated by the module.\"\n  value       = module.eks.kubeconfig\n}\n\noutput \"config_map_aws_auth\" {\n  description = \"A kubernetes configuration to authenticate to this EKS cluster.\"\n  value       = module.eks.config_map_aws_auth\n}\n\noutput \"region\" {\n  description = \"AWS region\"\n  value       = var.region\n}\n\noutput \"cluster_name\" {\n  description = \"Kubernetes Cluster Name\"\n  value       = local.cluster_name\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_031_creating_eks_spot/run.sh",
    "content": "#!/usr/bin/env bash\nmy_dir=\"$(dirname \"$0\")\"\ncredential_file=\"${my_dir}/../../credentials.txt\"\nprofile=\"personal\"\nAWS_SHARED_CREDENTIALS_FILE=\"${credential_file}\" AWS_PROFILE=\"${profile}\" terraform \"$@\"\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_031_creating_eks_spot/security-groups.tf",
    "content": "\nresource \"aws_security_group\" \"worker_group_mgmt_one\" {\n  name_prefix = \"worker_group_mgmt_one\"\n  vpc_id      = module.vpc.vpc_id\n\n  ingress {\n    from_port = 22\n    to_port   = 22\n    protocol  = \"tcp\"\n\n    cidr_blocks = [\n      \"10.0.0.0/8\",\n    ]\n  }\n}\n\nresource \"aws_security_group\" \"worker_group_mgmt_two\" {\n  name_prefix = \"worker_group_mgmt_two\"\n  vpc_id      = module.vpc.vpc_id\n\n  ingress {\n    from_port = 22\n    to_port   = 22\n    protocol  = \"tcp\"\n\n    cidr_blocks = [\n      \"192.168.0.0/16\",\n    ]\n  }\n}\n\nresource \"aws_security_group\" \"all_worker_mgmt\" {\n  name_prefix = \"all_worker_management\"\n  vpc_id      = module.vpc.vpc_id\n\n  ingress {\n    from_port = 22\n    to_port   = 22\n    protocol  = \"tcp\"\n\n    cidr_blocks = [\n      \"10.0.0.0/8\",\n      \"172.16.0.0/12\",\n      \"192.168.0.0/16\",\n    ]\n  }\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_031_creating_eks_spot/versions.tf",
    "content": "terraform {\n  required_providers {\n    aws = {\n      source  = \"hashicorp/aws\"\n      version = \">= 3.20.0\"\n    }\n\n    random = {\n      source  = \"hashicorp/random\"\n      version = \"3.1.0\"\n    }\n\n    local = {\n      source  = \"hashicorp/local\"\n      version = \"2.1.0\"\n    }\n\n    null = {\n      source  = \"hashicorp/null\"\n      version = \"3.1.0\"\n    }\n\n    kubernetes = {\n      source  = \"hashicorp/kubernetes\"\n      version = \">= 2.0.1\"\n    }\n  }\n\n  required_version = \"> 0.14\"\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/aws/taskset_aws_terraform_infrastructure_as_code/task_031_creating_eks_spot/vpc.tf",
    "content": "variable \"region\" {\n  default     = \"us-east-1\"\n  description = \"AWS region\"\n}\n\nprovider \"aws\" {\n  region = var.region\n}\n\ndata \"aws_availability_zones\" \"available\" {}\n\nlocals {\n  cluster_name = \"education-eks-${random_string.suffix.result}\"\n}\n\nresource \"random_string\" \"suffix\" {\n  length  = 8\n  special = false\n}\n\nmodule \"vpc\" {\n  source  = \"terraform-aws-modules/vpc/aws\"\n  version = \"3.6.0\"\n\n  name                 = \"education-vpc\"\n  cidr                 = \"10.0.0.0/16\"\n  azs                  = data.aws_availability_zones.available.names\n  private_subnets      = [\"10.0.1.0/24\", \"10.0.2.0/24\", \"10.0.3.0/24\"]\n  public_subnets       = [\"10.0.4.0/24\", \"10.0.5.0/24\", \"10.0.6.0/24\"]\n  enable_nat_gateway   = true\n  single_nat_gateway   = true\n  enable_dns_hostnames = true\n\n  tags = {\n    \"kubernetes.io/cluster/${local.cluster_name}\" = \"shared\"\n  }\n\n  public_subnet_tags = {\n    \"kubernetes.io/cluster/${local.cluster_name}\" = \"shared\"\n    \"kubernetes.io/role/elb\"                      = \"1\"\n  }\n\n  private_subnet_tags = {\n    \"kubernetes.io/cluster/${local.cluster_name}\" = \"shared\"\n    \"kubernetes.io/role/internal-elb\"             = \"1\"\n  }\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/ReadMe-auto-v2.md",
    "content": "| Tasks                                                                 | Skills                                                                                             | High Level Objective                                                                                                                                        |\n|-----------------------------------------------------------------------|----------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| [001](taskset/task-001-vpc-2inst-cloudshell)                          | ` VPC`, ` Internet Gateway`, ` instances`, ` subnets using automode`, ` terraform`                 | <li>Create a VPC network<br> <li>Attached Internet Gateway<br> <li>Instances in 2 regions with subnets created using auto-mode                              |\n| [002](taskset/task-002-1inst-dflt-vpc)                                | ` terraform version`, ` Provider`, ` create,change,destroy`, ` terraform`                          | <li>Verify Terraform installation<br> <li>Define Google Cloud as the provider<br> <li>Create, change, and destroy Google Cloud resources by using Terraform |\n| [003](taskset/task-003-vars-and-resource-dependencies)                | ` variables`, ` output values`, ` explicit resource dependency`, ` dependency graph`, ` terraform` | <li>Use variables and output values<br> <li>Observe implicit dependency<br> <li>Create explicit resource dependency<br> <li>View Dependency Graph           |\n| [004](taskset/task-004-creating-remote-backend)                       | ` local backend`, ` cloud storage backend`, ` terraform state`, ` terraform`                       | <li>Create a local backend.<br> <li>Create a Cloud Storage backend.<br> <li>Refresh your Terraform state.                                                   |\n| [005](taskset/task-005-deploy-k8s-loadbalancer-service)               | ` Kubernetes cluster`, ` Service`, ` terraform`                                                    | <li>Deploy a Kubernetes cluster along with a service using Terraform                                                                                        |\n| [006](taskset/task-006-modular-load-balancing-regional-load-balancer) | ` here`                                                                                            | <li>here this is it                                                                                                                                         |"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/ReadMe.md",
    "content": "# taskset_gcp_terraform_infrastructure_as_code\n\n> [Auto](https://github.com/codeaprendiz/learn_fullstack/blob/main/home/php/intermediate/taskset_intermediate_php/task_004_createGlobalMarkdownTable/generate-readme.php) generated ReadMe. Number of tasks: 8\n\n| Task     | Description                                                                                                                                                   |\n|----------|---------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| task_001 | [task_001_vpc_2inst_cloudshell](taskset_gcp_terraform_infrastructure_as_code/task_001_vpc_2inst_cloudshell)                                                   |\n| task_002 | [task_002_1inst_dflt_vpc](taskset_gcp_terraform_infrastructure_as_code/task_002_1inst_dflt_vpc)                                                               |\n| task_003 | [task_003_vars_and_resource_dependencies](taskset_gcp_terraform_infrastructure_as_code/task_003_vars_and_resource_dependencies)                               |\n| task_004 | [task_004_creating_remote_backend](taskset_gcp_terraform_infrastructure_as_code/task_004_creating_remote_backend)                                             |\n| task_005 | [task_005_deploy_k8s_loadbalancer_service](taskset_gcp_terraform_infrastructure_as_code/task_005_deploy_k8s_loadbalancer_service)                             |\n| task_006 | [task_006_modular_load_balancing_regional_load_balancer](taskset_gcp_terraform_infrastructure_as_code/task_006_modular_load_balancing_regional_load_balancer) |\n| task_007 | [task_007_cloud_sql](taskset_gcp_terraform_infrastructure_as_code/task_007_cloud_sql)                                                                         |\n| task_008 | [task_008_building_a_vpn_between_gcp_and_aws](taskset_gcp_terraform_infrastructure_as_code/task_008_building_a_vpn_between_gcp_and_aws)                       |\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_001_vpc_2inst_cloudshell/ReadMe.md",
    "content": "# Using Terraform in GCP console\n\n**High Level Objectives**\n\n- Create a VPC network\n- Attached Internet Gateway \n- Instances in 2 regions with subnets created using auto-mode\n\n**Skills**\n- VPC\n- Internet Gateway\n- instances\n- subnets using auto-mode\n- terraform\n\n**Version Stack**\n\n| Stack     | Version |\n|-----------|---------|\n| Terraform | 1.3.4   |\n\n\n![infra-diagram.png](.images/infra-diagram.png)\n\n\n- Let's go through the code together\n\n- Begin\n\n```bash\nterraform --version\n```\n\n- Create the required files\n\n```bash\nterraform init\n\nterraform plan\n\nterraform apply\n```\n\n- View the resources created on the console\n\n- SSH into the instance\n\n```bash\nping google.com  # So we have internet access\n\n## SSH into one instance and\n\nping <OTHER_SERVER_EXTERNAL_IP\n```"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_001_vpc_2inst_cloudshell/instance/main.tf",
    "content": "resource \"google_compute_instance\" \"vm_instance\" {\n  name = var.instance_name\n  # RESOURCE properties go here\n  zone         = var.instance_zone\n  machine_type = var.instance_type\n  boot_disk {\n    initialize_params {\n      image = \"debian-cloud/debian-11\"\n      }\n  }\n    network_interface {\n    network = var.instance_network\n    access_config {\n      # Allocate a one-to-one NAT IP to the instance\n    }\n  }\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_001_vpc_2inst_cloudshell/instance/variables.tf",
    "content": "variable \"instance_name\" {}\nvariable \"instance_zone\" {}\nvariable \"instance_type\" {\n  default = \"e2-micro\"\n  }\nvariable \"instance_network\" {}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_001_vpc_2inst_cloudshell/mynetwork.tf",
    "content": "# Create the mynetwork network\nresource \"google_compute_network\" \"mynetwork\" {\n  name = \"mynetwork\"\n  # RESOURCE properties go here\n  auto_create_subnetworks = \"true\"\n}\n# Add a firewall rule to allow HTTP, SSH, RDP and ICMP traffic on mynetwork\nresource \"google_compute_firewall\" \"mynetwork-allow-http-ssh-rdp-icmp\" {\n  name = \"mynetwork-allow-http-ssh-rdp-icmp\"\n  # RESOURCE properties go here\n  network = google_compute_network.mynetwork.self_link\n  allow {\n    protocol = \"tcp\"\n    ports    = [\"22\", \"80\", \"3389\"]\n  }\n  allow {\n    protocol = \"icmp\"\n  }\n  source_ranges = [\"0.0.0.0/0\"]\n}\n# Create the mynet-us-vm instance\nmodule \"mynet-us-vm\" {\n  source           = \"./instance\"\n  instance_name    = \"mynet-us-vm\"\n  instance_zone    = \"us-central1-a\"\n  instance_network = google_compute_network.mynetwork.self_link\n}\n# Create the mynet-eu-vm\" instance\nmodule \"mynet-eu-vm\" {\n  source           = \"./instance\"\n  instance_name    = \"mynet-eu-vm\"\n  instance_zone    = \"europe-west1-d\"\n  instance_network = google_compute_network.mynetwork.self_link\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_001_vpc_2inst_cloudshell/provider.tf",
    "content": "provider \"google\" {}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_002_1inst_dflt_vpc/ReadMe.md",
    "content": "# Infrastructure as Code with Terraform\n\n[https://www.cloudskillsboost.google](https://www.cloudskillsboost.google)\n\n[Select - DevOps Engineer, SRE Learning Path](https://www.cloudskillsboost.google/paths)\n\n[Select - Getting Started with Terraform for Google Cloud](https://www.cloudskillsboost.google/paths)\n\n**High Level Objectives**\n\n- Verify Terraform installation\n- Define Google Cloud as the provider\n- Create, change, and destroy Google Cloud resources by using Terraform\n\n**Skills**\n- terraform version\n- Provider\n- create,change,destroy\n- terraform\n\n**Version Stack**\n\n| Stack     | Version |\n|-----------|---------|\n| Terraform | 1.3.6   |\n\n\n\n### Check Terraform Installation\n\n```bash\nterraform --version\n\ntouch main.tf\n```\n\n- main.tf\n\n```terraform\nterraform {\n  required_providers {\n    google = {\n      source = \"hashicorp/google\"\n    }\n  }\n}\nprovider \"google\" {\n  region  = \"us-central1\"\n  zone    = \"us-central1-c\"\n}\n```\n\n```bash\nterraform init\n```\n\n- Add the following to main.tf\n\n```terraform\nresource \"google_compute_instance\" \"terraform\" {\n  name         = \"terraform\"\n  machine_type = \"n1-standard-2\"\n  boot_disk {\n    initialize_params {\n      image = \"debian-cloud/debian-11\"\n    }\n  }\n}\n```\n\n```bash\nterraform plan\n## The configuration fails with the following error. This is because you cannot configure a compute engine without a network.\n```\n\n- Now add the network by including the following code segment to the google_compute_instance block.\n\n```terraform\nnetwork_interface {\n    network = \"default\"\n    access_config {\n    }\n}\n```\n\n```bash\nterraform plan\n\nterraform apply\n```\n\n- Validate on console\n\n### Change the infrastructure\n\n- Add a tags argument to the instance we just created so that it looks like this:\n\n```terraform\nresource \"google_compute_instance\" \"terraform\" {\n  name         = \"terraform\"\n  machine_type = \"n1-standard-2\"\n  tags         = [\"web\", \"dev\"]\n  # ...\n}\n```\n\n```bash\nterraform plan\n\nterraform apply\n```\n\n- Edit machine type\n\n```terraform\nresource \"google_compute_instance\" \"terraform\" {\n  name         = \"terraform\"\n  machine_type = \"n1-standard-1\"\n  tags         = [\"web\", \"dev\"]\n  boot_disk {\n    initialize_params {\n      image = \"debian-cloud/debian-11\"\n    }\n  }\n  network_interface {\n    network = \"default\"\n    access_config {\n    }\n  }\n  allow_stopping_for_update = true\n}\n```\n\n```bash\nterraform plan\n\nterraform apply\n```\n\n- Validate\n\n### Destroy the Infrastructure\n\n```bash\nterraform destroy\n```"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_002_1inst_dflt_vpc/main.tf",
    "content": "terraform {\n  required_providers {\n    google = {\n      source = \"hashicorp/google\"\n    }\n  }\n}\nprovider \"google\" {\n  region  = \"us-central1\"\n  zone    = \"us-central1-c\"\n}\nresource \"google_compute_instance\" \"terraform\" {\n  name         = \"terraform\"\n  machine_type = \"n1-standard-1\"\n  tags         = [\"web\", \"dev\"]\n  boot_disk {\n    initialize_params {\n      image = \"debian-cloud/debian-11\"\n    }\n  }\n  network_interface {\n    network = \"default\"\n    access_config {\n    }\n  }\n  allow_stopping_for_update = true\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_003_vars_and_resource_dependencies/ReadMe.md",
    "content": "# Creating Resource Dependencies with Terraform\n\n[https://www.cloudskillsboost.google](https://www.cloudskillsboost.google)\n\n[Select - DevOps Engineer, SRE Learning Path](https://www.cloudskillsboost.google/paths)\n\n**High Level Objectives**\n\n- Use variables and output values\n- Observe implicit dependency\n- Create explicit resource dependency\n- View Dependency Graph\n\n**Skills**\n\n- variables\n- output values\n- explicit resource dependency\n- dependency graph\n- terraform\n\n**Version Stack**\n\n| Stack     | Version |\n|-----------|---------|\n| Terraform | 1.3.6   |\n\n\n\n\n### Initialize Terraform\n\n```bash\nterraform -version\n\n# Create a directory for your Terraform configuration and navigate to it by running the following command:\nmkdir tfinfra && cd $_\n\ntouch provider.tf\n```\n\n- provider.tf\n\n```bash\n# Get project ID\ngcloud config list --format 'value(core.project)'\n```\n\n```terraform\n  provider \"google\" {\n  project = \"<your-project-id>\"\n  region  = \"us-east1\"\n  zone    = \"us-east1-b\"\n}\n```\n\n- Initialize\n\n```bash\nterraform init\n```\n\n### View Implicit Resource Dependency\n\n```bash\ntouch instance.tf\n```\n\n- instance.tf\n\n```bash\nresource google_compute_instance \"vm_instance\" {\nname         = \"${var.instance_name}\"\nzone         = \"${var.instance_zone}\"\nmachine_type = \"${var.instance_type}\"\nboot_disk {\n    initialize_params {\n      image = \"debian-cloud/debian-10\"\n      }\n  }\n network_interface {\n    network = \"default\"\n    access_config {\n      # Allocate a one-to-one NAT IP to the instance\n    }\n  }\n}\n```\n\n```bash\ntouch variables.tf\n```\n\n- variables.tf\n```terraform\nvariable \"instance_name\" {\n  type        = string\n  description = \"Name for the Google Compute instance\"\n}\nvariable \"instance_zone\" {\n  type        = string\n  description = \"Zone for the Google Compute instance\"\n}\nvariable \"instance_type\" {\n  type        = string\n  description = \"Disk type of the Google Compute instance\"\n  default     = \"n1-standard-1\"\n  }\n```\n\n```bash\ntouch outputs.tf\n```\n\n- outputs.tf\n\n```terraform\noutput \"network_IP\" {\n  value = google_compute_instance.vm_instance.instance_id\n  description = \"The internal ip address of the instance\"\n}\noutput \"instance_link\" {\n  value = google_compute_instance.vm_instance.self_link\n  description = \"The URI of the created resource.\"\n}\n```\n\n- Let's assign static IP to VM instance\n\n- Append to instance.tf\n```terraform\nresource \"google_compute_address\" \"vm_static_ip\" {\n  name = \"terraform-static-ip\"\n}\n```\n- Update the network_interface configuration for your instance like so:\n\n```terraform\n network_interface {\n    network = \"default\"\n    access_config {\n      # Allocate a one-to-one NAT IP to the instance\n      nat_ip = google_compute_address.vm_static_ip.address\n    }\n  }\n```\n\n- Init, Plan, Apply\n\n```bash\nterraform init\n\n# var.instance_name: myinstance\n# var.instance_zone: us-east1-b\nterraform plan\n\n# var.instance_name: myinstance\n# var.instance_zone: us-east1-b\nterraform apply\n```\n\n- Verify on Cloud Console\n\n### Create Explicit Dependency\n\n```bash\ntouch exp.tf\n```\n\n- exp.tf\n\n```terraform\nresource \"google_compute_instance\" \"another_instance\" {\n  name         = \"terraform-instance-2\"\n  machine_type = \"f1-micro\"\n  boot_disk {\n    initialize_params {\n      image = \"debian-cloud/debian-10\"\n    }\n  }\n  network_interface {\n    network = \"default\"\n    access_config {\n    }\n  }\n  # Tells Terraform that this VM instance must be created only after the\n  # storage bucket has been created.\n  depends_on = [google_storage_bucket.example_bucket]\n}\nresource \"google_storage_bucket\" \"example_bucket\" {\n  name     = \"<UNIQUE-BUCKET-NAME>\"\n  location = \"US\"\n  website {\n    main_page_suffix = \"index.html\"\n    not_found_page   = \"404.html\"\n  }\n}\n```\n\n\n- Init, Plan, Apply\n\n```bash\nterraform init\n\n# var.instance_name: myinstance\n# var.instance_zone: us-east1-b\nterraform plan\n\n# var.instance_name: myinstance\n# var.instance_zone: us-east1-b\nterraform apply\n```\n\n- Validate on console\n\n\n### View Dependency Graph\n\n```bash\nterraform graph | dot -Tsvg > graph.svg\n```\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_003_vars_and_resource_dependencies/exp.tf",
    "content": "resource \"google_compute_instance\" \"another_instance\" {\n  name         = \"terraform-instance-2\"\n  machine_type = \"f1-micro\"\n  boot_disk {\n    initialize_params {\n      image = \"debian-cloud/debian-10\"\n    }\n  }\n  network_interface {\n    network = \"default\"\n    access_config {\n    }\n  }\n  # Tells Terraform that this VM instance must be created only after the\n  # storage bucket has been created.\n  depends_on = [google_storage_bucket.example_bucket]\n}\nresource \"google_storage_bucket\" \"example_bucket\" {\n  name     = \"<UNIQUE-BUCKET-NAME>\"\n  location = \"US\"\n  website {\n    main_page_suffix = \"index.html\"\n    not_found_page   = \"404.html\"\n  }\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_003_vars_and_resource_dependencies/instance.tf",
    "content": "resource \"google_compute_address\" \"vm_static_ip\" {\n  name = \"terraform-static-ip\"\n}\nresource google_compute_instance \"vm_instance\" {\n  name         = \"${var.instance_name}\"\n  zone         = \"${var.instance_zone}\"\n  machine_type = \"${var.instance_type}\"\n  boot_disk {\n    initialize_params {\n      image = \"debian-cloud/debian-10\"\n    }\n  }\n  network_interface {\n    network = \"default\"\n    access_config {\n      # Allocate a one-to-one NAT IP to the instance\n      nat_ip = google_compute_address.vm_static_ip.address\n    }\n  }\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_003_vars_and_resource_dependencies/outputs.tf",
    "content": "output \"network_IP\" {\n  value = google_compute_instance.vm_instance.instance_id\n  description = \"The internal ip address of the instance\"\n}\noutput \"instance_link\" {\n  value = google_compute_instance.vm_instance.self_link\n  description = \"The URI of the created resource.\"\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_003_vars_and_resource_dependencies/provider.tf",
    "content": "provider \"google\" {\n  project = \"<my-project-id>\"\n  region  = \"us-east1\"\n  zone    = \"us-east1-b\"\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_003_vars_and_resource_dependencies/variables.tf",
    "content": "variable \"instance_name\" {\n  type        = string\n  description = \"Name for the Google Compute instance\"\n}\nvariable \"instance_zone\" {\n  type        = string\n  description = \"Zone for the Google Compute instance\"\n}\nvariable \"instance_type\" {\n  type        = string\n  description = \"Disk type of the Google Compute instance\"\n  default     = \"n1-standard-1\"\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_004_creating_remote_backend/ReadMe.md",
    "content": "# Creating a Remote Backend\n\n[https://www.cloudskillsboost.google](https://www.cloudskillsboost.google)\n\n[Select - DevOps Engineer, SRE Learning Path](https://www.cloudskillsboost.google/paths)\n\n**High Level Objectives**\n\n- Create a local backend.\n- Create a Cloud Storage backend.\n- Refresh your Terraform state.\n\n**Skills**\n\n- local backend\n- cloud storage backend\n- terraform state\n- terraform\n\n**Version Stack**\n\n| Stack     | Version |\n|-----------|---------|\n| Terraform | 1.3.6   |\n\n\n\n\n### Verify Terraform is installed\n\n```bash\nterraform --version\n```\n\n### Add a local backend\n\n```bash\ntouch main.tf\n\n## Get project ID\ngcloud config list --format 'value(core.project)'\n```\n\n- main.tf\n\n```terraform\nprovider \"google\" {\n  project     = \"Project ID\"\n  region      = \"us-central-1\"\n}\nresource \"google_storage_bucket\" \"test-bucket-for-state\" {\n  name        = \"Project ID\"\n  location    = \"US\"\n  uniform_bucket_level_access = true\n}\nterraform {\n  backend \"local\" {\n    path = \"terraform/state/terraform.tfstate\"\n  }\n}\n```\n\n- Init, Apply\n\n```bash\n\nterraform init\n\nterraform apply\n\n# The Cloud Shell Editor should now display the state file called terraform.tfstate in the terraform/state directory.\n\n# Examine your state file:\nterraform show\n```\n\n### Add a Cloud Storage backend\n\n- Add cloud storage backend, comment the previous one\n\n```terraform\nterraform {\n  backend \"gcs\" {\n    bucket  = \"Project ID\"\n    prefix  = \"terraform/state\"\n  }\n}\n```\n\n\n- Initialize your backend again. Type yes at the prompt to confirm.\n\n```bash\nterraform init -migrate-state\n```\n\n- Go the the bucket. Click on your bucket and navigate to the file terraform/state/default.tfstate.\n\n### Refresh the state\n\n- Add labels to the bucket\n\n```bash\nterraform refresh\n```\n\n### Clean up the workspace\n\n- Uncomment the following part\n\n```terraform\nterraform {\n  backend \"local\" {\n    path = \"terraform/state/terraform.tfstate\"\n  }\n}\n```\n\n```bash\nterraform init -migrate-state\n```\n\n- In the main.tf file, add the force_destroy = true argument to your google_storage_bucket resource. When you delete a bucket, this boolean option will delete all contained objects.\n  If you try to delete a bucket that contains objects, Terraform will fail that run.\n\n- Your bucket resource configuration should resemble the following:\n\n```terraform\nresource \"google_storage_bucket\" \"test-bucket-for-state\" {\n  name        = \"Project ID\"\n  location    = \"US\"\n  uniform_bucket_level_access = true\n  force_destroy = true\n}\n```\n\n\n- Apply, destroy\n\n```bash\nterraform apply\n\nterraform destroy\n```"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_004_creating_remote_backend/main.tf",
    "content": "provider \"google\" {\n  project     = \"Project ID\"\n  region      = \"us-central-1\"\n}\nresource \"google_storage_bucket\" \"test-bucket-for-state\" {\n  name        = \"Project ID\"\n  location    = \"US\"\n  uniform_bucket_level_access = true\n}\n//terraform {\n//  backend \"local\" {\n//    path = \"terraform/state/terraform.tfstate\"\n//  }\n//}\n\nterraform {\n  backend \"gcs\" {\n    bucket  = \"Project ID\"\n    prefix  = \"terraform/state\"\n  }\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_005_deploy_k8s_loadbalancer_service/ReadMe.md",
    "content": "# Deploy Kubernetes Load Balancer Service with Terraform\n\n\n[https://www.cloudskillsboost.google](https://www.cloudskillsboost.google)\n\n[Select - Quest -  Managing Cloud Infrastructure with Terraform](https://www.cloudskillsboost.google/paths)\n\n**High Level Objectives**\n\n- Deploy a Kubernetes cluster along with a service using Terraform\n\n**Skills**\n\n- Kubernetes cluster\n- Service\n- terraform\n\n**Version Stack**\n\n| Stack     | Version |\n|-----------|---------|\n| Terraform | 1.3.9   |\n\n## Clone the sample code\n\n```bash\ngsutil -m cp -r gs://spls/gsp233/* .\n\ncd tf-gke-k8s-service-lb\n```\n\n\n## Understand the code\n\n\n## Initialize and install dependencies\n\n```bash\nterraform init\n\n\nterraform apply -var=\"region=us-central1\" -var=\"location=us-central1-f\"\n```\n\n- Verify resources created by Terraform\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_005_deploy_k8s_loadbalancer_service/k8s.tf",
    "content": "/*\nWhy do I need to create a provider for kubernetes?\n\nIn Terraform, a provider is a plugin that is responsible for managing and interacting with a specific service\nor technology, such as Kubernetes. The provider allows Terraform to manage Kubernetes resources by using\nthe Kubernetes API server.\n\nBy creating a Kubernetes provider, Terraform can authenticate with the Kubernetes API server and\nperform operations on Kubernetes resources, such as creating, updating, or deleting Kubernetes objects.\nThe provider block in the Terraform configuration file contains the necessary authentication and connection\ninformation for Terraform to communicate with the Kubernetes API server.\n\nWithout a provider, Terraform cannot manage Kubernetes resources, as it does not have a way to authenticate\nwith the Kubernetes API server or understand the specific syntax required to interact with Kubernetes objects.\n*/\n\n\n# Configure Kubernetes provider with version and authentication information\nprovider \"kubernetes\" {\n  # Declare the Kubernetes provider and specify its version\n  version = \"~> 1.10.0\"\n\n  # Set the Kubernetes API server endpoint to be the endpoint of the default container cluster\n  host    = google_container_cluster.default.endpoint\n\n  # Set the authentication token to be the access token of the current Google Cloud Platform client configuration\n  token   = data.google_client_config.current.access_token\n\n  # Decode the client certificate, client key, and cluster CA certificate using the base64decode function\n  client_certificate = base64decode(\n  google_container_cluster.default.master_auth[0].client_certificate,\n  )\n  client_key = base64decode(google_container_cluster.default.master_auth[0].client_key)\n  cluster_ca_certificate = base64decode(\n  google_container_cluster.default.master_auth[0].cluster_ca_certificate,\n  )\n}\n\n# Create a Kubernetes namespace for staging environment\nresource \"kubernetes_namespace\" \"staging\" {\n  metadata {\n    name = \"staging\"\n  }\n}\n\n# Create a Google Compute Engine address to use as load balancer IP for the Kubernetes service\nresource \"google_compute_address\" \"default\" {\n  name   = var.network_name\n  region = var.region\n}\n\n# Create a Kubernetes service to expose the nginx pods in the staging namespace\nresource \"kubernetes_service\" \"nginx\" {\n  metadata {\n    namespace = kubernetes_namespace.staging.metadata[0].name\n    name      = \"nginx\"\n  }\n\n  spec {\n    selector = {\n      run = \"nginx\"\n    }\n\n    # Set session affinity to ClientIP\n    session_affinity = \"ClientIP\"\n\n    # Define port configuration for the service\n    port {\n      protocol    = \"TCP\"\n      port        = 80\n      target_port = 80\n    }\n\n    # Use LoadBalancer type and assign the previously created Compute Engine address as load balancer IP\n    type             = \"LoadBalancer\"\n    load_balancer_ip = google_compute_address.default.address\n  }\n}\n\n/*\nWhy do we need to create a replication controller ?\n\nIn Kubernetes, a replication controller is used to manage and ensure the availability of a specified number\nof replicas (identical copies) of a pod. Replication controllers help to maintain the desired state of the\ncluster by ensuring that the specified number of replicas is always running, and if a replica goes down,\na new one is created to replace it.\n\nIn the example provided, the replication controller is being used to manage the creation and availability\nof nginx pods in the staging namespace. This helps to ensure that a specified number of replicas of the nginx\npod are always available, and if any pod goes down, the replication controller will automatically\ncreate a new replica to replace it, thus ensuring high availability and fault tolerance for the nginx application\n\n*/\n# Create a Kubernetes replication controller to manage the nginx pods in the staging namespace\nresource \"kubernetes_replication_controller\" \"nginx\" {\n  metadata {\n    name      = \"nginx\"\n    namespace = kubernetes_namespace.staging.metadata[0].name\n\n    # Define labels to match with the selector in the Kubernetes service\n    labels = {\n      run = \"nginx\"\n    }\n  }\n\n  spec {\n    selector = {\n      run = \"nginx\"\n    }\n\n    # Define the pod template with container specification\n    template {\n      metadata {\n        name = \"nginx\"\n        labels = {\n          run = \"nginx\"\n        }\n      }\n\n      spec {\n        container {\n          image = \"nginx:latest\"\n          name  = \"nginx\"\n\n          # Define resource limits and requests for the nginx container\n          resources {\n            limits {\n              cpu    = \"0.5\"\n              memory = \"512Mi\"\n            }\n\n            requests {\n              cpu    = \"250m\"\n              memory = \"50Mi\"\n            }\n          }\n        }\n      }\n    }\n  }\n}\n\n# Output the load balancer IP address\noutput \"load-balancer-ip\" {\n  value = google_compute_address.default.address\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_005_deploy_k8s_loadbalancer_service/main.tf",
    "content": "# Variables are defined for region, zone, and network_name. These will be used to create the Kubernetes cluster\n\nvariable \"region\" {\n  type        = string\n  description = \"Region for the resource.\"\n}\n\nvariable \"location\" {\n  type        = string\n  description = \"Location represents region/zone for the resource.\"\n}\n\nvariable  \"network_name\" {\n  default = \"tf-gke-k8s\"\n}\n\n# The Google Cloud provider will let us create resources in the project.\nprovider \"google\" {\n  region = var.region\n}\n\n# creates a new network with the specified name.\nresource \"google_compute_network\" \"default\" {\n  name                    = var.network_name\n  #  is set to false, which means that we'll create subnets explicitly.\n  auto_create_subnetworks = false\n}\n\n# creates a subnet with the specified ip_cidr_range and associates it with the network created in the previous step.\nresource \"google_compute_subnetwork\" \"default\" {\n  name                     = var.network_name\n  ip_cidr_range            = \"10.127.0.0/20\"\n  network                  = google_compute_network.default.self_link\n  region                   = var.region\n  # private_ip_google_access is set to true, which means that VMs in the subnet can reach Google API endpoints using their private IP addresses.\n  private_ip_google_access = true\n}\n\n# retrieves the access token for the current Google Cloud user, which is used for authentication when creating the Kubernetes cluster.\ndata \"google_client_config\" \"current\" {\n}\n\n# retrieves the list of available Kubernetes versions for the specified location.\ndata \"google_container_engine_versions\" \"default\" {\n  location = var.location\n}\n\n# creates a new Kubernetes cluster with the specified name, location, and initial node count.\n# min_master_version is set to the latest available version of Kubernetes.\n# network and subnetwork are set to the name of the subnet created earlier.\n# enable_legacy_abac is set to true to use ABAC authorization.\n# Finally, the provisioner block waits for 90 seconds after deleting the cluster to give the\n# GCE LB controller time to clean up resources.\nresource \"google_container_cluster\" \"default\" {\n  name               = var.network_name\n  location           = var.location\n  initial_node_count = 3\n  min_master_version = data.google_container_engine_versions.default.latest_master_version\n  network            = google_compute_subnetwork.default.name\n  subnetwork         = google_compute_subnetwork.default.name\n\n  // Use legacy ABAC until these issues are resolved: \n  //   https://github.com/mcuadros/terraform-provider-helm/issues/56\n  //   https://github.com/terraform-providers/terraform-provider-kubernetes/pull/73\n  enable_legacy_abac = true\n\n  // Wait for the GCE LB controller to cleanup the resources.\n  // Wait for the GCE LB controller to cleanup the resources.\n  provisioner \"local-exec\" {\n    when    = destroy\n    command = \"sleep 90\"\n  }\n}\n\noutput \"network\" {\n  value = google_compute_subnetwork.default.network\n}\n\noutput \"subnetwork_name\" {\n  value = google_compute_subnetwork.default.name\n}\n\noutput \"cluster_name\" {\n  value = google_container_cluster.default.name\n}\n\noutput \"cluster_region\" {\n  value = var.region\n}\n\noutput \"cluster_location\" {\n  value = google_container_cluster.default.location\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_005_deploy_k8s_loadbalancer_service/test.sh",
    "content": "#!/usr/bin/env bash\n\nset -x \nset -e\n\nURL=\"http://$(terraform output load-balancer-ip)\"\nstatus=0\ncount=0\nwhile [[ $count -lt 120 && $status -ne 200 ]]; do\n  echo \"INFO: Waiting for load balancer...\"\n  status=$(curl -sf -m 5 -o /dev/null -w \"%{http_code}\" \"${URL}\" || true)\n  ((count=count+1))\n  sleep 5\ndone\nif [[ $count -lt 120 ]]; then\n  echo \"INFO: PASS\"\nelse\n  echo \"ERROR: Failed\"\nfi"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_005_deploy_k8s_loadbalancer_service/versions.tf",
    "content": "/*\n the required version is set to \">= 0.12\", which means that Terraform version 0.12 or above is\n required to apply this configuration. This is done to ensure that the configuration can be applied\n consistently and accurately across different environments and systems.\n*/\nterraform {\n  required_version = \">= 0.12\"\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_006_modular_load_balancing_regional_load_balancer/ReadMe.md",
    "content": "# Modular Load Balancing with Terraform - Regional Load Balancer\n\n[https://www.cloudskillsboost.google](https://www.cloudskillsboost.google)\n\n[Select - Quest -  Managing Cloud Infrastructure with Terraform](https://www.cloudskillsboost.google/paths)\n\n[community/tutorials/modular-load-balancing-with-terraform](https://cloud.google.com/community/tutorials/modular-load-balancing-with-terraform)\n\n**High Level Objectives**\n- Use load balancing modules for Terraform\n- Create a regional TCP load balancer (Network and Target Pool based)\n- Access the minimal php app on external IP\n- Go through the code\n\n\n**Skills**\n- VPC Networks\n- Subnetwork\n- Cloud Router\n- Load Balancer\n- Terraform\n- Cloud Nat\n- Managed Instance Group\n- Instance Templates\n- Firewall Rules\n- Health Checks\n- Forwarding Rules\n- Target Pools\n\n**Version Stack**\n\n| Stack     | Version |\n|-----------|---------|\n| Terraform | 1.3.9   |\n\n## Clone the examples repository\n\n```bash\ngit clone https://github.com/GoogleCloudPlatform/terraform-google-lb\ncd ~/terraform-google-lb/examples/basic\n```\n\n\n## TCP load balancer with regional forwarding rule\n\n```bash\nexport GOOGLE_PROJECT=$(gcloud config get-value project)\n\nterraform init\n\nterraform plan\n\nterraform apply\n\n\nEXTERNAL_IP=$(terraform output | grep load_balancer_default_ip | cut -d = -f2 | xargs echo -n)\n\n\necho \"http://${EXTERNAL_IP}\"\n```\n\n## Screenshots\n- Service Account\n  - A service account in GCP is a special type of Google account that is used to authenticate applications, services, and virtual machines \n    (VMs) running on GCP. \n  - Service accounts are designed to be used by applications and services instead of human users.\n  - When you create a service account, you can assign it specific roles and permissions that determine what resources it can access and what actions it can perform. Service accounts    can   be used to authorize API requests, access reso\n\n![img.png](.images/service-account.png)\n\n- VCP Networks\n\n![img.png](.images/vpc-networks.png)\n\n- Subnetworks\n\n![img.png](.images/vpc-subnetworks.png)\n\n- Cloud Router\n\n![img.png](.images/cloud-router.png)\n\n![img.png](.images/cloud-router-details.png)\n\n- Cloud Nat\n\n![img.png](.images/cloud-nat.png)\n\n![img.png](.images/cloud-nat-details.png)\n\n\n\n\n- Managed Instnace Group\n  - In Google Cloud Platform (GCP), a Managed Instance Group (MIG) is a scalable, flexible, and highly available service \n    for managing groups of virtual machine (VM) instances. MIGs provide the ability to automatically manage and distribute traffic \n    to a group of homogeneous instances based on the policies and parameters that you define. \n  - A MIG can automatically add or remove instances from a group based on the requirements you set, \n    such as the load on each instance. This ensures that the group can automatically scale up or down to handle changes \n    in traffic or demand. You can use MIGs to distribute traffic across multiple zones, regions, or even continents, \n    helping to improve the performance and reliability of your applications.\n\n![img.png](.images/mig.png)\n\n![img.png](.images/mig-details.png)\n\n![img.png](.images/vm-instances.png)\n\n- Instance Templates\n  - An instance template is a resource in Google Cloud Platform (GCP) that defines the configuration for creating instances in a Managed Instance Group (MIG). \n    It provides a convenient way to define the common properties of instances that belong to a group, such as machine type, disk images, network \n    settings, metadata, and startup scripts. \n  - By using instance templates, you can ensure that all instances in the MIG are created with the same configuration, \n    making it easier to manage and scale your infrastructure. You can also update the template to make changes to the group, and the changes \n    will be applied to all new instances that are created based on the updated template.\n\n![img.png](.images/instance-template.png)\n\n![img.png](.images/instance-template-details.png)\n\n\n- Load Balancers\n\n![img.png](.images/load-balancers.png)\n\n![img.png](.images/basic-load-balancer-default.png)\n\n![img.png](.images/app-with--basic-load-balancer-default.png)\n\n\n- Firewall Rules\n  - In Google Cloud Platform (GCP), firewall rules are used to control network traffic to and from virtual machine instances. \n  - They act as a barrier between your instances and the internet or other networks, allowing you to specify what kind of traffic is allowed or blocked.\n![img.png](.images/firewall-rules.png)\n\n![img.png](.images/basic-load-balancer-default-hc-firewall-rule.png)\n\n- Health checks\n  - Health checks in GCP are used to monitor the health and availability of instances or endpoints.\n    A health check sends requests to an instance or endpoint and analyzes the response to determine whether the instance or endpoint is healthy or not.\n  - In GCP, there are several types of health checks available, such as HTTP, HTTPS, TCP, and SSL health checks.\n    These health checks can be used to monitor instances running on Compute Engine, instances running on Kubernetes Engine, or endpoints\n    running on App Engine, Cloud Functions, or Cloud Run.\n  - By using health checks, you can configure load balancers to automatically remove unhealthy instances from a load-balancing pool\n    and redirect traffic to healthy instances. This helps to ensure that your applications are always available to users, even\n    if some instances or endpoints fail.\n\n![img.png](.images/health-checks.png)\n\n![img.png](.images/basic-load-balancer-custom-hc-hc.png)\n\n\n\n- Target Pools\n  - In Google Cloud Platform (GCP), a target pool is a group of virtual machine (VM) instances or internet protocol (IP) addresses that receive incoming\n    traffic from a Google Cloud load balancer. The target pool defines the set of virtual machines or IP addresses that should receive traffic, and the\n    load balancer routes traffic to the instances in the pool based on the load balancing algorithm configured for the load balancer.\n  - Target pools provide a way to distribute traffic across multiple instances of a service, which can help improve availability and scalability.\n    By grouping instances or IP addresses into a target pool, GCP can direct traffic to available instances, and take instances out of rotation as needed,\n    based on health checks or other configurable criteria.\n\n![img.png](.images/target-pools.png)\n\n\n- Forwarding rules\n  - In GCP, a forwarding rule is a configuration that specifies how traffic should be directed to a load balancer. \n    It is a key component of GCP's load balancing service, which distributes incoming traffic to a group of backend instances.\n  - A forwarding rule specifies the IP address, protocol, and ports that the load balancer should listen on. \n    It also defines the target pool, which is a group of backend instances that the load balancer will direct traffic to. \n  - There are different types of forwarding rules in GCP, including regional forwarding rules, global forwarding rules, \n    and target forwarding rules. Each type is used for different load balancing scenarios, and each has its own set of configuration options.\n\n![img.png](.images/forwarding-rules.png)\n\n\n\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_006_modular_load_balancing_regional_load_balancer/apply.log",
    "content": "Terraform will perform the following actions:\n\n  # google_compute_network.network will be created\n  + resource \"google_compute_network\" \"network\" {\n      + auto_create_subnetworks         = false\n      + delete_default_routes_on_create = false\n      + gateway_ipv4                    = (known after apply)\n      + id                              = (known after apply)\n      + internal_ipv6_range             = (known after apply)\n      + mtu                             = (known after apply)\n      + name                            = \"load-balancer-module-network\"\n      + project                         = (known after apply)\n      + routing_mode                    = (known after apply)\n      + self_link                       = (known after apply)\n    }\n\n  # google_compute_router.router will be created\n  + resource \"google_compute_router\" \"router\" {\n      + creation_timestamp = (known after apply)\n      + id                 = (known after apply)\n      + name               = \"load-balancer-module-router\"\n      + network            = (known after apply)\n      + project            = (known after apply)\n      + region             = \"us-central1\"\n      + self_link          = (known after apply)\n    }\n\n  # google_compute_subnetwork.subnetwork will be created\n  + resource \"google_compute_subnetwork\" \"subnetwork\" {\n      + creation_timestamp         = (known after apply)\n      + external_ipv6_prefix       = (known after apply)\n      + fingerprint                = (known after apply)\n      + gateway_address            = (known after apply)\n      + id                         = (known after apply)\n      + ip_cidr_range              = \"10.0.0.0/16\"\n      + ipv6_cidr_range            = (known after apply)\n      + name                       = \"load-balancer-module-subnetwork\"\n      + network                    = (known after apply)\n      + private_ip_google_access   = (known after apply)\n      + private_ipv6_google_access = (known after apply)\n      + project                    = (known after apply)\n      + purpose                    = (known after apply)\n      + region                     = \"us-central1\"\n      + secondary_ip_range         = (known after apply)\n      + self_link                  = (known after apply)\n      + stack_type                 = (known after apply)\n    }\n\n  # google_service_account.instance-group will be created\n  + resource \"google_service_account\" \"instance-group\" {\n      + account_id = \"instance-group\"\n      + disabled   = false\n      + email      = (known after apply)\n      + id         = (known after apply)\n      + member     = (known after apply)\n      + name       = (known after apply)\n      + project    = (known after apply)\n      + unique_id  = (known after apply)\n    }\n\n  # module.cloud_nat.google_compute_router_nat.main will be created\n  + resource \"google_compute_router_nat\" \"main\" {\n      + enable_dynamic_port_allocation      = (known after apply)\n      + enable_endpoint_independent_mapping = true\n      + icmp_idle_timeout_sec               = 30\n      + id                                  = (known after apply)\n      + min_ports_per_vm                    = 64\n      + name                                = \"load-balancer-module-nat\"\n      + nat_ip_allocate_option              = \"AUTO_ONLY\"\n      + project                             = \"qwiklabs-gcp-04-0058fbc31079\"\n      + region                              = \"us-central1\"\n      + router                              = \"load-balancer-module-router\"\n      + source_subnetwork_ip_ranges_to_nat  = \"ALL_SUBNETWORKS_ALL_IP_RANGES\"\n      + tcp_established_idle_timeout_sec    = 1200\n      + tcp_time_wait_timeout_sec           = 120\n      + tcp_transitory_idle_timeout_sec     = 30\n      + udp_idle_timeout_sec                = 30\n    }\n\n  # module.cloud_nat.random_string.name_suffix will be created\n  + resource \"random_string\" \"name_suffix\" {\n      + id          = (known after apply)\n      + length      = 6\n      + lower       = true\n      + min_lower   = 0\n      + min_numeric = 0\n      + min_special = 0\n      + min_upper   = 0\n      + number      = true\n      + numeric     = true\n      + result      = (known after apply)\n      + special     = false\n      + upper       = false\n    }\n\n  # module.instance_template.google_compute_instance_template.tpl will be created\n  + resource \"google_compute_instance_template\" \"tpl\" {\n      + can_ip_forward          = false\n      + id                      = (known after apply)\n      + machine_type            = \"n1-standard-1\"\n      + metadata_fingerprint    = (known after apply)\n      + metadata_startup_script = <<-EOT\n            #!/bin/bash -xe\n\n            apt-get update\n            apt-get install -y apache2 libapache2-mod-php\n\n            cat > /var/www/html/index.php <<'EOF'\n            <?php\n            function metadata_value($value) {\n                $opts = [\n                    \"http\" => [\n                        \"method\" => \"GET\",\n                        \"header\" => \"Metadata-Flavor: Google\"\n                    ]\n                ];\n                $context = stream_context_create($opts);\n                $content = file_get_contents(\"http://metadata/computeMetadata/v1/$value\", false, $context);\n                return $content;\n            }\n            ?>\n\n            <!doctype html>\n            <html>\n            <head>\n            <!-- Compiled and minified CSS -->\n            <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.0/css/materialize.min.css\">\n\n            <!-- Compiled and minified JavaScript -->\n            <script src=\"https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.0/js/materialize.min.js\"></script>\n            <title>Frontend Web Server</title>\n            </head>\n            <body>\n            <div class=\"container\">\n            <div class=\"row\">\n            <div class=\"col s2\">&nbsp;</div>\n            <div class=\"col s8\">\n\n\n            <div class=\"card blue\">\n            <div class=\"card-content white-text\">\n            <div class=\"card-title\">Backend that serviced this request</div>\n            </div>\n            <div class=\"card-content white\">\n            <table class=\"bordered\">\n              <tbody>\n                <tr>\n                  <td>Name</td>\n                  <td><?php printf(metadata_value(\"instance/name\")) ?></td>\n                </tr>\n                <tr>\n                  <td>ID</td>\n                  <td><?php printf(metadata_value(\"instance/id\")) ?></td>\n                </tr>\n                <tr>\n                  <td>Hostname</td>\n                  <td><?php printf(metadata_value(\"instance/hostname\")) ?></td>\n                </tr>\n                <tr>\n                  <td>Zone</td>\n                  <td><?php printf(metadata_value(\"instance/zone\")) ?></td>\n                </tr>\n                <tr>\n                  <td>Machine Type</td>\n                  <td><?php printf(metadata_value(\"instance/machine-type\")) ?></td>\n                </tr>\n                <tr>\n                  <td>Project</td>\n                  <td><?php printf(metadata_value(\"project/project-id\")) ?></td>\n                </tr>\n                <tr>\n                  <td>Internal IP</td>\n                  <td><?php printf(metadata_value(\"instance/network-interfaces/0/ip\")) ?></td>\n                </tr>\n                <tr>\n                  <td>External IP</td>\n                  <td><?php printf(metadata_value(\"instance/network-interfaces/0/access-configs/0/external-ip\")) ?></td>\n                </tr>\n              </tbody>\n            </table>\n            </div>\n            </div>\n\n            <div class=\"card blue\">\n            <div class=\"card-content white-text\">\n            <div class=\"card-title\">Proxy that handled this request</div>\n            </div>\n            <div class=\"card-content white\">\n            <table class=\"bordered\">\n              <tbody>\n                <tr>\n                  <td>Address</td>\n                  <td><?php printf($_SERVER[\"HTTP_HOST\"]); ?></td>\n                </tr>\n              </tbody>\n            </table>\n            </div>\n\n            </div>\n            </div>\n            <div class=\"col s2\">&nbsp;</div>\n            </div>\n            </div>\n            </html>\n            EOF\n            sudo mv /var/www/html/index.html /var/www/html/index.html.old\n\n            [[ -n \"\" ]] && mkdir -p /var/www/html/ && cp /var/www/html/index.php /var/www/html//index.php\n\n            systemctl enable apache2\n            systemctl restart apache2\n        EOT\n      + name                    = (known after apply)\n      + name_prefix             = \"default-instance-template-\"\n      + project                 = (known after apply)\n      + region                  = (known after apply)\n      + self_link               = (known after apply)\n      + tags_fingerprint        = (known after apply)\n\n      + advanced_machine_features {\n          + enable_nested_virtualization = false\n        }\n\n      + confidential_instance_config {\n          + enable_confidential_compute = false\n        }\n\n      + disk {\n          + auto_delete  = true\n          + boot         = true\n          + device_name  = (known after apply)\n          + disk_size_gb = 100\n          + disk_type    = \"pd-standard\"\n          + interface    = (known after apply)\n          + mode         = (known after apply)\n          + source_image = \"debian-cloud/debian-11\"\n          + type         = \"PERSISTENT\"\n        }\n\n      + network_interface {\n          + ipv6_access_type   = (known after apply)\n          + name               = (known after apply)\n          + stack_type         = \"IPV4_ONLY\"\n          + subnetwork         = (known after apply)\n          + subnetwork_project = (known after apply)\n        }\n\n      + scheduling {\n          + automatic_restart   = true\n          + on_host_maintenance = \"MIGRATE\"\n          + preemptible         = false\n          + provisioning_model  = (known after apply)\n        }\n\n      + service_account {\n          + email  = (known after apply)\n          + scopes = [\n              + \"https://www.googleapis.com/auth/cloud-platform\",\n            ]\n        }\n    }\n\n  # module.load_balancer_custom_hc.google_compute_firewall.default-hc-fw[0] will be created\n  + resource \"google_compute_firewall\" \"default-hc-fw\" {\n      + creation_timestamp      = (known after apply)\n      + destination_ranges      = (known after apply)\n      + direction               = (known after apply)\n      + enable_logging          = (known after apply)\n      + id                      = (known after apply)\n      + name                    = \"basic-load-balancer-custom-hc-hc\"\n      + network                 = \"load-balancer-module-network\"\n      + priority                = 1000\n      + project                 = (known after apply)\n      + self_link               = (known after apply)\n      + source_ranges           = [\n          + \"209.85.152.0/22\",\n          + \"209.85.204.0/22\",\n          + \"35.191.0.0/16\",\n        ]\n      + target_service_accounts = (known after apply)\n\n      + allow {\n          + ports    = [\n              + \"8080\",\n            ]\n          + protocol = \"tcp\"\n        }\n    }\n\n  # module.load_balancer_custom_hc.google_compute_firewall.default-lb-fw will be created\n  + resource \"google_compute_firewall\" \"default-lb-fw\" {\n      + creation_timestamp      = (known after apply)\n      + destination_ranges      = (known after apply)\n      + direction               = (known after apply)\n      + enable_logging          = (known after apply)\n      + id                      = (known after apply)\n      + name                    = \"basic-load-balancer-custom-hc-vm-service\"\n      + network                 = \"load-balancer-module-network\"\n      + priority                = 1000\n      + project                 = (known after apply)\n      + self_link               = (known after apply)\n      + source_ranges           = [\n          + \"0.0.0.0/0\",\n        ]\n      + target_service_accounts = (known after apply)\n\n      + allow {\n          + ports    = [\n              + \"8080\",\n            ]\n          + protocol = \"tcp\"\n        }\n    }\n\n  # module.load_balancer_custom_hc.google_compute_forwarding_rule.default will be created\n  + resource \"google_compute_forwarding_rule\" \"default\" {\n      + creation_timestamp    = (known after apply)\n      + id                    = (known after apply)\n      + ip_address            = (known after apply)\n      + ip_protocol           = \"TCP\"\n      + label_fingerprint     = (known after apply)\n      + load_balancing_scheme = \"EXTERNAL\"\n      + name                  = \"basic-load-balancer-custom-hc\"\n      + network               = (known after apply)\n      + network_tier          = (known after apply)\n      + port_range            = \"8080\"\n      + psc_connection_id     = (known after apply)\n      + psc_connection_status = (known after apply)\n      + region                = \"us-central1\"\n      + self_link             = (known after apply)\n      + service_name          = (known after apply)\n      + subnetwork            = (known after apply)\n      + target                = (known after apply)\n\n      + service_directory_registrations {\n          + namespace = (known after apply)\n          + service   = (known after apply)\n        }\n    }\n\n  # module.load_balancer_custom_hc.google_compute_http_health_check.default[0] will be created\n  + resource \"google_compute_http_health_check\" \"default\" {\n      + check_interval_sec  = 1\n      + creation_timestamp  = (known after apply)\n      + healthy_threshold   = 4\n      + host                = \"1.2.3.4\"\n      + id                  = (known after apply)\n      + name                = \"basic-load-balancer-custom-hc-hc\"\n      + port                = 8080\n      + project             = (known after apply)\n      + request_path        = \"/mypath\"\n      + self_link           = (known after apply)\n      + timeout_sec         = 1\n      + unhealthy_threshold = 5\n    }\n\n  # module.load_balancer_custom_hc.google_compute_target_pool.default will be created\n  + resource \"google_compute_target_pool\" \"default\" {\n      + health_checks    = (known after apply)\n      + id               = (known after apply)\n      + instances        = (known after apply)\n      + name             = \"basic-load-balancer-custom-hc\"\n      + project          = (known after apply)\n      + region           = \"us-central1\"\n      + self_link        = (known after apply)\n      + session_affinity = \"NONE\"\n    }\n\n  # module.load_balancer_default.google_compute_firewall.default-hc-fw[0] will be created\n  + resource \"google_compute_firewall\" \"default-hc-fw\" {\n      + creation_timestamp      = (known after apply)\n      + destination_ranges      = (known after apply)\n      + direction               = (known after apply)\n      + enable_logging          = (known after apply)\n      + id                      = (known after apply)\n      + name                    = \"basic-load-balancer-default-hc\"\n      + network                 = \"load-balancer-module-network\"\n      + priority                = 1000\n      + project                 = (known after apply)\n      + self_link               = (known after apply)\n      + source_ranges           = [\n          + \"209.85.152.0/22\",\n          + \"209.85.204.0/22\",\n          + \"35.191.0.0/16\",\n        ]\n      + target_service_accounts = (known after apply)\n\n      + allow {\n          + ports    = [\n              + \"80\",\n            ]\n          + protocol = \"tcp\"\n        }\n    }\n\n  # module.load_balancer_default.google_compute_firewall.default-lb-fw will be created\n  + resource \"google_compute_firewall\" \"default-lb-fw\" {\n      + creation_timestamp      = (known after apply)\n      + destination_ranges      = (known after apply)\n      + direction               = (known after apply)\n      + enable_logging          = (known after apply)\n      + id                      = (known after apply)\n      + name                    = \"basic-load-balancer-default-vm-service\"\n      + network                 = \"load-balancer-module-network\"\n      + priority                = 1000\n      + project                 = (known after apply)\n      + self_link               = (known after apply)\n      + source_ranges           = [\n          + \"0.0.0.0/0\",\n        ]\n      + target_service_accounts = (known after apply)\n\n      + allow {\n          + ports    = [\n              + \"80\",\n            ]\n          + protocol = \"tcp\"\n        }\n    }\n\n  # module.load_balancer_default.google_compute_forwarding_rule.default will be created\n  + resource \"google_compute_forwarding_rule\" \"default\" {\n      + creation_timestamp    = (known after apply)\n      + id                    = (known after apply)\n      + ip_address            = (known after apply)\n      + ip_protocol           = \"TCP\"\n      + label_fingerprint     = (known after apply)\n      + load_balancing_scheme = \"EXTERNAL\"\n      + name                  = \"basic-load-balancer-default\"\n      + network               = (known after apply)\n      + network_tier          = (known after apply)\n      + port_range            = \"80\"\n      + psc_connection_id     = (known after apply)\n      + psc_connection_status = (known after apply)\n      + region                = \"us-central1\"\n      + self_link             = (known after apply)\n      + service_name          = (known after apply)\n      + subnetwork            = (known after apply)\n      + target                = (known after apply)\n\n      + service_directory_registrations {\n          + namespace = (known after apply)\n          + service   = (known after apply)\n        }\n    }\n\n  # module.load_balancer_default.google_compute_http_health_check.default[0] will be created\n  + resource \"google_compute_http_health_check\" \"default\" {\n      + check_interval_sec  = 5\n      + creation_timestamp  = (known after apply)\n      + healthy_threshold   = 2\n      + id                  = (known after apply)\n      + name                = \"basic-load-balancer-default-hc\"\n      + port                = 80\n      + project             = (known after apply)\n      + request_path        = \"/\"\n      + self_link           = (known after apply)\n      + timeout_sec         = 5\n      + unhealthy_threshold = 2\n    }\n\n  # module.load_balancer_default.google_compute_target_pool.default will be created\n  + resource \"google_compute_target_pool\" \"default\" {\n      + health_checks    = (known after apply)\n      + id               = (known after apply)\n      + instances        = (known after apply)\n      + name             = \"basic-load-balancer-default\"\n      + project          = (known after apply)\n      + region           = \"us-central1\"\n      + self_link        = (known after apply)\n      + session_affinity = \"NONE\"\n    }\n\n  # module.load_balancer_no_hc.google_compute_firewall.default-lb-fw will be created\n  + resource \"google_compute_firewall\" \"default-lb-fw\" {\n      + creation_timestamp      = (known after apply)\n      + destination_ranges      = (known after apply)\n      + direction               = (known after apply)\n      + enable_logging          = (known after apply)\n      + id                      = (known after apply)\n      + name                    = \"basic-load-balancer-no-hc-vm-service\"\n      + network                 = \"load-balancer-module-network\"\n      + priority                = 1000\n      + project                 = (known after apply)\n      + self_link               = (known after apply)\n      + source_ranges           = [\n          + \"0.0.0.0/0\",\n        ]\n      + target_service_accounts = (known after apply)\n\n      + allow {\n          + ports    = [\n              + \"80\",\n            ]\n          + protocol = \"tcp\"\n        }\n    }\n\n  # module.load_balancer_no_hc.google_compute_forwarding_rule.default will be created\n  + resource \"google_compute_forwarding_rule\" \"default\" {\n      + creation_timestamp    = (known after apply)\n      + id                    = (known after apply)\n      + ip_address            = (known after apply)\n      + ip_protocol           = \"TCP\"\n      + label_fingerprint     = (known after apply)\n      + load_balancing_scheme = \"EXTERNAL\"\n      + name                  = \"basic-load-balancer-no-hc\"\n      + network               = (known after apply)\n      + network_tier          = (known after apply)\n      + port_range            = \"80\"\n      + psc_connection_id     = (known after apply)\n      + psc_connection_status = (known after apply)\n      + region                = \"us-central1\"\n      + self_link             = (known after apply)\n      + service_name          = (known after apply)\n      + subnetwork            = (known after apply)\n      + target                = (known after apply)\n\n      + service_directory_registrations {\n          + namespace = (known after apply)\n          + service   = (known after apply)\n        }\n    }\n\n  # module.load_balancer_no_hc.google_compute_target_pool.default will be created\n  + resource \"google_compute_target_pool\" \"default\" {\n      + health_checks    = []\n      + id               = (known after apply)\n      + instances        = (known after apply)\n      + name             = \"basic-load-balancer-no-hc\"\n      + project          = (known after apply)\n      + region           = \"us-central1\"\n      + self_link        = (known after apply)\n      + session_affinity = \"NONE\"\n    }\n\n  # module.managed_instance_group.google_compute_region_instance_group_manager.mig will be created\n  + resource \"google_compute_region_instance_group_manager\" \"mig\" {\n      + base_instance_name               = \"mig-simple\"\n      + distribution_policy_target_shape = (known after apply)\n      + distribution_policy_target_shape = (known after apply)\n      + distribution_policy_zones        = [\n          + \"us-central1-a\",\n          + \"us-central1-b\",\n          + \"us-central1-c\",\n          + \"us-central1-f\",\n        ]\n      + fingerprint                      = (known after apply)\n      + id                               = (known after apply)\n      + instance_group                   = (known after apply)\n      + list_managed_instances_results   = \"PAGELESS\"\n      + name                             = \"mig-simple-mig\"\n      + project                          = (known after apply)\n      + region                           = \"us-central1\"\n      + self_link                        = (known after apply)\n      + status                           = (known after apply)\n      + target_pools                     = (known after apply)\n      + target_size                      = 2\n      + wait_for_instances               = false\n      + wait_for_instances_status        = \"STABLE\"\n\n      + instance_lifecycle_policy {\n          + force_update_on_repair = (known after apply)\n        }\n\n      + named_port {\n          + name = \"http\"\n          + port = 80\n        }\n\n      + timeouts {\n          + create = \"5m\"\n          + delete = \"15m\"\n          + update = \"5m\"\n        }\n\n      + update_policy {\n          + instance_redistribution_type   = (known after apply)\n          + max_surge_fixed                = (known after apply)\n          + max_surge_percent              = (known after apply)\n          + max_unavailable_fixed          = (known after apply)\n          + max_unavailable_percent        = (known after apply)\n          + min_ready_sec                  = (known after apply)\n          + minimal_action                 = (known after apply)\n          + most_disruptive_allowed_action = (known after apply)\n          + replacement_method             = (known after apply)\n          + type                           = (known after apply)\n        }\n\n      + version {\n          + instance_template = (known after apply)\n          + name              = \"mig-simple-mig-version-0\"\n        }\n    }"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_006_modular_load_balancing_regional_load_balancer/main.tf",
    "content": "/*\nThe \"locals\" block defines a variable named \"health_check_port\" that is set to the value of \"var.health_check[\"port\"]\".\n*/\nlocals {\n  health_check_port = var.health_check[\"port\"]\n}\n\n/*\nIn GCP, a forwarding rule is a configuration that specifies how traffic should be directed to a load balancer.\nA forwarding rule specifies the IP address, protocol, and ports that the load balancer should listen on.\nIt also defines the target pool, which is a group of backend instances that the load balancer will direct traffic to.\n\nThe \"google_compute_forwarding_rule\" resource creates a forwarding rule to route traffic to the target pool. \nIt specifies the provider, project, name, target, load balancing scheme, port range, region, IP address, IP protocol, and labels.\n\nForwarding rule has an associated target pool\n\n\nCreated for \n- basic-load_balancer_default\n- basic-load_balancer_custom_hc\n- basic-load_balancer_no_hc\n*/\n\nresource \"google_compute_forwarding_rule\" \"default\" {\n  provider              = google-beta\n  project               = var.project\n  name                  = var.name\n  target                = google_compute_target_pool.default.self_link\n  load_balancing_scheme = \"EXTERNAL\"\n  port_range            = var.service_port\n  region                = var.region\n  ip_address            = var.ip_address\n  ip_protocol           = var.ip_protocol\n  labels                = var.labels\n}\n\n/*\nIn Google Cloud Platform (GCP), a target pool is a group of virtual machine (VM) instances or internet protocol \n(IP) addresses that \nreceive incoming traffic from a Google Cloud load balancer. The target pool defines the set of virtual machines or \nIP addresses \nthat should receive traffic, and the load balancer routes traffic to the instances in the pool based on the \nload balancing algorithm configured for the load balancer.\n\nThe \"google_compute_target_pool\" resource creates a target pool to distribute traffic across instances. \nIt specifies the project, name, region, and session affinity.\n\nThe \"health_checks\" attribute is set to an empty list if \"var.disable_health_check\" is true, otherwise \nit includes a reference to the HTTP health check resource\n\nCreated for\n- basic-load-balancer-default: creates healthcheck : basic-load-balancer-default-hc : Path /, port 80\n- basic-load-balancer-custom-hc : creates healthcheck : basic-load-balancer-custom-hc : Host 1.2.3.4 and path \n  is /mypath, port 8080\n- basic-load_balancer_no_hc : \"health_checks\" attribute is set to an empty list : So health check will be set to NONE\n\nTarget Pools are associated with healthchecks.\n\n*/\nresource \"google_compute_target_pool\" \"default\" {\n  project          = var.project\n  name             = var.name\n  region           = var.region\n  session_affinity = var.session_affinity\n\n  health_checks = var.disable_health_check ? [] : [google_compute_http_health_check.default[0].self_link]\n}\n\n/*\nThe \"google_compute_http_health_check\" resource creates an HTTP health check to verify the health of instances. \nIt specifies the project, name, check interval, healthy threshold, timeout, unhealthy threshold, port, request path, \nand host.\n\nThe count parameter is used to conditionally create the resource depending on the value of the disable_health_check \nvariable. \nIf disable_health_check is set to true, the health check resource will not be created.\n\nHealth check is used by a Target Pool\n\nCreated for \n- basic-load_balancer_default\n- basic-load_balancer_custom_hc\n\nNot created for\n- basic-load_balancer_no_hc\n*/\nresource \"google_compute_http_health_check\" \"default\" {\n  count   = var.disable_health_check ? 0 : 1\n  project = var.project\n  name    = \"${var.name}-hc\"\n\n  check_interval_sec  = var.health_check[\"check_interval_sec\"]\n  healthy_threshold   = var.health_check[\"healthy_threshold\"]\n  timeout_sec         = var.health_check[\"timeout_sec\"]\n  unhealthy_threshold = var.health_check[\"unhealthy_threshold\"]\n\n  port         = local.health_check_port == null ? var.service_port : local.health_check_port\n  request_path = var.health_check[\"request_path\"]\n  host         = var.health_check[\"host\"]\n}\n\n/*\nIn Google Cloud Platform (GCP), firewall rules are used to control network traffic to and from virtual machine instances. \nThey act as a barrier between your instances and the internet or other networks, allowing you \nto specify what kind of traffic is allowed or blocked.\n\nThe \"google_compute_firewall\" resources create firewall rules to control network traffic. \nThe first firewall (\"default-lb-fw\") allows traffic on the specified protocol and port, from the specified source ranges, \nto instances with the specified target tags and service accounts. \n\nCreated with names \n- basic-load-balancer-custom-hc-vm-service \n- basic-load-balancer-default-vm-service\n- basic-load-balancer-no-hc-vm-service\n\n*/\nresource \"google_compute_firewall\" \"default-lb-fw\" {\n  project = var.firewall_project == \"\" ? var.project : var.firewall_project\n  name    = \"${var.name}-vm-service\"\n  network = var.network\n\n  allow {\n    protocol = lower(var.ip_protocol)\n    ports    = [var.service_port]\n  }\n\n  source_ranges = var.allowed_ips\n\n  target_tags = var.target_tags\n\n  target_service_accounts = var.target_service_accounts\n}\n\n/*\nThe second firewall (\"default-hc-fw\") allows TCP traffic on the health check port, from specified source ranges, \nto instances with the specified target tags and service accounts. \nThe count attribute is used to conditionally create this resource based on whether health checks are disabled or not.\n\nCreated with name\n- basic-load-balancer-custom-hc-hc\n- basic-load-balancer-default-hc\n\nCreated for \n- basic-load-balancer-custom-hc\n- basic-load-balancer-default\n\nNot Created for\n- basic-load-balancer-no-hc\n*/\nresource \"google_compute_firewall\" \"default-hc-fw\" {\n  count   = var.disable_health_check ? 0 : 1\n  project = var.firewall_project == \"\" ? var.project : var.firewall_project\n  name    = \"${var.name}-hc\"\n  network = var.network\n\n  allow {\n    protocol = \"tcp\"\n    ports    = [local.health_check_port == null ? 80 : local.health_check_port]\n  }\n\n  source_ranges = [\"35.191.0.0/16\", \"209.85.152.0/22\", \"209.85.204.0/22\"]\n\n  target_tags = var.target_tags\n\n  target_service_accounts = var.target_service_accounts\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_006_modular_load_balancing_regional_load_balancer/outputs.tf",
    "content": "output \"target_pool\" {\n  description = \"The `self_link` to the target pool resource created.\"\n  value       = google_compute_target_pool.default.self_link\n}\n\noutput \"external_ip\" {\n  description = \"The external ip address of the forwarding rule.\"\n  value       = google_compute_forwarding_rule.default.ip_address\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_006_modular_load_balancing_regional_load_balancer/terraform-google-lb/examples/basic/locals.tf",
    "content": "/*\nThe code below is an example of using Terraform's \"locals\" block to define a variable with a nested object.\n\nThe object defined in the \"health_check\" variable represents a health check configuration for a load \nbalancer or other similar infrastructure component. Here's what each key-value pair means:\n\n    - check_interval_sec: The number of seconds between each health check.\n    - healthy_threshold: The number of consecutive successful health checks required to mark an instance as healthy.\n    - timeout_sec: The number of seconds to wait for a response before considering the health check to have failed.\n    - unhealthy_threshold: The number of consecutive failed health checks required to mark an instance as unhealthy.\n    - port: The port number to use for the health check request.\n    - request_path: The path to use for the health check request.\n    - host: The IP address or domain name of the instance to perform the health check on.\nBy defining this configuration in a \"locals\" block, the values can be easily reused throughout the Terraform codebase without having to repeat the configuration details every time.\n*/\n\nlocals {\n  health_check = {\n    check_interval_sec  = 1\n    healthy_threshold   = 4\n    timeout_sec         = 1\n    unhealthy_threshold = 5\n    port                = 8080\n    request_path        = \"/mypath\"\n    host                = \"1.2.3.4\"\n  }\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_006_modular_load_balancing_regional_load_balancer/terraform-google-lb/examples/basic/main.tf",
    "content": "/*\n  This block of code defines a Terraform data source of type \"template_file\" named \"instance_startup_script\".\n  The data source reads the contents of a file named \"gceme.sh.tpl\" located in the module directory using the file() \n  function.\n  It also defines a variable named \"PROXY_PATH\" with an empty string as its value to be used in the template.\n*/\ndata \"template_file\" \"instance_startup_script\" {\n  template = file(\"${path.module}/templates/gceme.sh.tpl\")\n\n  vars = {\n    PROXY_PATH = \"\"\n  }\n}\n\n\n/*\n  This block of code defines a Google Cloud Platform service account resource named\n  \"google_service_account.instance-group\".\n  The resource sets the account_id to \"instance-group\".\n*/\nresource \"google_service_account\" \"instance-group\" {\n  account_id = \"instance-group\"\n}\n\n/*\n\n  This block of code defines a Terraform module named \"instance_template\".\n  The module uses the \"terraform-google-modules/vm/google//modules/instance_template\" module source with a version\n  constraint of \"~> 8.0\".\n  It specifies the subnetwork to use, the source image family and project, and the rendered startup script.\n  The service_account block sets the email to the email address of the \"google_service_account.instance-group\"\n  resource and scopes to [\"cloud-platform\"].\n\n  what does the module do?\n  the module named \"instance_template\" is used to create a reusable template for a virtual machine instance in \n  Google Cloud Platform\n\n  why do we need a service account for the module?\n  The module \"instance_template\" creates a virtual machine instance template on Google Cloud Platform. To create this\n  template, the module requires permissions to access Google Cloud Platform APIs.\n  To avoid using the default service account or the user's personal credentials, which could be insecure and\n  difficult to manage, the module creates a dedicated service account with the necessary permissions to access the\n  Google Cloud Platform APIs.\n  The service account is specified in the \"service_account\" variable of the module, which includes the email\n  address of the service account and the scopes that it requires. These scopes are used to grant the service account \n  access to the specific APIs that are required for the module to function properly.\n  By using a dedicated service account, the module is more secure and easier to manage. The service account can\n  be managed separately from other accounts, and its permissions can be restricted to only the APIs that are \n  required for the module to function. Additionally, if the service account credentials are compromised, they \n  can be revoked without affecting other accounts or services.\n\n*/\n\n\nmodule \"instance_template\" {\n  source               = \"terraform-google-modules/vm/google//modules/instance_template\"\n  version              = \"~> 8.0\"\n  subnetwork           = google_compute_subnetwork.subnetwork.self_link\n  source_image_family  = var.image_family\n  source_image_project = var.image_project\n  startup_script       = data.template_file.instance_startup_script.rendered\n\n  service_account = {\n    email  = google_service_account.instance-group.email\n    scopes = [\"cloud-platform\"]\n  }\n}\n\n/*\nThis Terraform code defines a module named \"managed_instance_group\" that creates a managed instance group (MIG)\nin Google Cloud Platform.\nThe module uses the \"terraform-google-modules/vm/google//modules/mig\" module, version 8.0, as its source.\n\nThe module creates an MIG with a target size of 2, and a hostname of \"mig-simple\".\nIt also specifies the region where the MIG will be created using the \"region\" variable, which is passed\nin from the parent module.\nThe MIG uses the instance template created by the \"instance_template\" module, which is passed in\nas the \"instance_template\" parameter.\n\nThe MIG is associated with three target pools, specified using the \"target_pools\" parameter.\nThese target pools are created by other modules. The MIG is also configured with a named port \"http\"\non port 80, using the \"named_ports\" parameter.\n\nOverall, this code creates a managed instance group that can automatically scale up or down based on demand,\nand is associated with the specified target pools and named ports.\n*/\n\nmodule \"managed_instance_group\" {\n  source            = \"terraform-google-modules/vm/google//modules/mig\"\n  version           = \"~> 8.0\"\n  region            = var.region\n  target_size       = 2\n  hostname          = \"mig-simple\"\n  instance_template = module.instance_template.self_link\n\n  target_pools = [\n    module.load_balancer_default.target_pool,\n    module.load_balancer_no_hc.target_pool,\n    module.load_balancer_custom_hc.target_pool\n  ]\n\n  named_ports = [{\n    name = \"http\"\n    port = 80\n  }]\n}\n\n/*\nThis code defines a Terraform module named \"load_balancer_default\" which creates a Google Cloud Platform\n(GCP) load balancer.\nThe module takes several input variables such as the load balancer name, region, service port, network name,\nand target service account email.\n- The source parameter specifies that the module is defined locally in the same directory (\"../../\") as the \n  root module.\n  git clone https://github.com/GoogleCloudPlatform/terraform-google-lb ; cd ~/terraform-google-lb/examples/basic\n\nThe name parameter specifies the name of the load balancer that will be created in GCP.\n\nThe region parameter specifies the region where the load balancer will be created.\n\nThe service_port parameter specifies the port that the load balancer will listen on.\n\nThe network parameter specifies the name of the GCP network that the load balancer will be created in.\n\nThe target_service_accounts parameter is an array of email addresses for the service accounts that the \nload balancer will direct traffic to. In this code, it points to the email address of the service account defined \nin the google_service_account.instance-group resource.\n*/\n\nmodule \"load_balancer_default\" {\n  name         = \"basic-load-balancer-default\"\n  source       = \"../../\"\n  region       = var.region\n  service_port = 80\n  network      = google_compute_network.network.name\n\n  target_service_accounts = [google_service_account.instance-group.email]\n}\n\nmodule \"load_balancer_no_hc\" {\n  name                 = \"basic-load-balancer-no-hc\"\n  source               = \"../../\"\n  region               = var.region\n  service_port         = 80\n  network              = google_compute_network.network.name\n  disable_health_check = true\n\n  target_service_accounts = [google_service_account.instance-group.email]\n}\n\nmodule \"load_balancer_custom_hc\" {\n  name         = \"basic-load-balancer-custom-hc\"\n  source       = \"../../\"\n  region       = var.region\n  service_port = 8080\n  network      = google_compute_network.network.name\n  health_check = local.health_check\n\n  target_service_accounts = [google_service_account.instance-group.email]\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_006_modular_load_balancing_regional_load_balancer/terraform-google-lb/examples/basic/network.tf",
    "content": "\n\nresource \"google_compute_network\" \"network\" {\n  name                    = \"load-balancer-module-network\"\n  auto_create_subnetworks = \"false\"\n}\n\n\nresource \"google_compute_subnetwork\" \"subnetwork\" {\n  name          = \"load-balancer-module-subnetwork\"\n  region        = var.region\n  network       = google_compute_network.network.self_link\n  ip_cidr_range = \"10.0.0.0/16\"\n}\n\nresource \"google_compute_router\" \"router\" {\n  name    = \"load-balancer-module-router\"\n  region  = var.region\n  network = google_compute_network.network.self_link\n}\n\nmodule \"cloud_nat\" {\n  project_id = var.project_id\n  region     = var.region\n  name       = \"load-balancer-module-nat\"\n  source     = \"terraform-google-modules/cloud-nat/google\"\n  version    = \"~> 2.2\"\n  router     = google_compute_router.router.name\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_006_modular_load_balancing_regional_load_balancer/terraform-google-lb/examples/basic/outputs.tf",
    "content": "output \"load_balancer_default_ip\" {\n  description = \"The external ip address of the forwarding rule for default lb.\"\n  value       = module.load_balancer_default.external_ip\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_006_modular_load_balancing_regional_load_balancer/terraform-google-lb/examples/basic/provider.tf",
    "content": "/*\nBy using provider blocks, Terraform can manage resources across multiple cloud providers or services. \nIn this case, the provider blocks allow Terraform to interact with the Google Cloud Platform using both \nstable and beta versions of the API.\n*/\n\nprovider \"google\" {\n  project = var.project_id\n}\n\nprovider \"google-beta\" {\n  project = var.project_id\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_006_modular_load_balancing_regional_load_balancer/terraform-google-lb/examples/basic/templates/gceme.sh.tpl",
    "content": "# This is a bash script that installs Apache and PHP on a Debian-based Linux machine and sets up a web page that\n# displays the metadata of the\n# Google Cloud instance that the script is running on. The script starts by updating the package list with apt-get\n# update and installs Apache\n# and PHP with apt-get install -y apache2 libapache2-mod-php.\n#\n# The script then uses a here document to write a PHP script to /var/www/html/index.php that displays the metadata of the\n# instance using the Google Cloud metadata server. The PHP script defines a metadata_value function that makes an HTTP GET\n# request to the metadata server with a specific header indicating the use of the Google Cloud metadata server. The PHP script\n# then prints the metadata values in an HTML table.\n#\n# The script also checks if the PROXY_PATH environment variable is set and creates a directory at /var/www/html/${PROXY_PATH}\n# if it is. It then copies the index.php file to this directory to enable the script to be accessed through a proxy server.\n#\n# Finally, the script enables and restarts the Apache web server with systemctl enable apache2 and systemctl restart apache2.\n\n#!/bin/bash -xe\n\napt-get update\napt-get install -y apache2 libapache2-mod-php\n\ncat > /var/www/html/index.php <<'EOF'\n<?php\nfunction metadata_value($value) {\n    $opts = [\n        \"http\" => [\n            \"method\" => \"GET\",\n            \"header\" => \"Metadata-Flavor: Google\"\n        ]\n    ];\n    $context = stream_context_create($opts);\n    $content = file_get_contents(\"http://metadata/computeMetadata/v1/$value\", false, $context);\n    return $content;\n}\n?>\n\n<!doctype html>\n<html>\n<head>\n<!-- Compiled and minified CSS -->\n<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.0/css/materialize.min.css\">\n\n<!-- Compiled and minified JavaScript -->\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.0/js/materialize.min.js\"></script>\n<title>Frontend Web Server</title>\n</head>\n<body>\n<div class=\"container\">\n<div class=\"row\">\n<div class=\"col s2\">&nbsp;</div>\n<div class=\"col s8\">\n\n\n<div class=\"card blue\">\n<div class=\"card-content white-text\">\n<div class=\"card-title\">Backend that serviced this request</div>\n</div>\n<div class=\"card-content white\">\n<table class=\"bordered\">\n  <tbody>\n\t<tr>\n\t  <td>Name</td>\n\t  <td><?php printf(metadata_value(\"instance/name\")) ?></td>\n\t</tr>\n\t<tr>\n\t  <td>ID</td>\n\t  <td><?php printf(metadata_value(\"instance/id\")) ?></td>\n\t</tr>\n\t<tr>\n\t  <td>Hostname</td>\n\t  <td><?php printf(metadata_value(\"instance/hostname\")) ?></td>\n\t</tr>\n\t<tr>\n\t  <td>Zone</td>\n\t  <td><?php printf(metadata_value(\"instance/zone\")) ?></td>\n\t</tr>\n    <tr>\n\t  <td>Machine Type</td>\n\t  <td><?php printf(metadata_value(\"instance/machine-type\")) ?></td>\n\t</tr>\n\t<tr>\n\t  <td>Project</td>\n\t  <td><?php printf(metadata_value(\"project/project-id\")) ?></td>\n\t</tr>\n\t<tr>\n\t  <td>Internal IP</td>\n\t  <td><?php printf(metadata_value(\"instance/network-interfaces/0/ip\")) ?></td>\n\t</tr>\n\t<tr>\n\t  <td>External IP</td>\n\t  <td><?php printf(metadata_value(\"instance/network-interfaces/0/access-configs/0/external-ip\")) ?></td>\n\t</tr>\n  </tbody>\n</table>\n</div>\n</div>\n\n<div class=\"card blue\">\n<div class=\"card-content white-text\">\n<div class=\"card-title\">Proxy that handled this request</div>\n</div>\n<div class=\"card-content white\">\n<table class=\"bordered\">\n  <tbody>\n\t<tr>\n\t  <td>Address</td>\n\t  <td><?php printf($_SERVER[\"HTTP_HOST\"]); ?></td>\n\t</tr>\n  </tbody>\n</table>\n</div>\n\n</div>\n</div>\n<div class=\"col s2\">&nbsp;</div>\n</div>\n</div>\n</html>\nEOF\nsudo mv /var/www/html/index.html /var/www/html/index.html.old\n\n[[ -n \"${PROXY_PATH}\" ]] && mkdir -p /var/www/html/${PROXY_PATH} && cp /var/www/html/index.php /var/www/html/${PROXY_PATH}/index.php\n\nsystemctl enable apache2\nsystemctl restart apache2\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_006_modular_load_balancing_regional_load_balancer/terraform-google-lb/examples/basic/variables.tf",
    "content": "\n\nvariable \"region\" {\n  default = \"us-central1\"\n}\n\nvariable \"project_id\" {\n  description = \"GCP Project used to create resources.\"\n}\n\nvariable \"image_family\" {\n  description = \"Image used for compute VMs.\"\n  default     = \"debian-11\"\n}\n\nvariable \"image_project\" {\n  description = \"GCP Project where source image comes from.\"\n  default     = \"debian-cloud\"\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_006_modular_load_balancing_regional_load_balancer/terraform-google-lb/examples/basic/versions.tf",
    "content": "\n\nterraform {\n  required_version = \">= 0.13\"\n  required_providers {\n    google = {\n      source  = \"hashicorp/google\"\n      version = \">= 3.53, < 5.0\"\n    }\n    google-beta = {\n      source  = \"hashicorp/google-beta\"\n      version = \">= 3.53, < 5.0\"\n    }\n    template = {\n      source = \"hashicorp/template\"\n    }\n  }\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_006_modular_load_balancing_regional_load_balancer/variables.tf",
    "content": "\nvariable \"project\" {\n  type        = string\n  description = \"The project to deploy to, if not set the default provider project is used.\"\n  default     = \"\"\n}\n\nvariable \"region\" {\n  type        = string\n  description = \"Region used for GCP resources.\"\n}\n\nvariable \"network\" {\n  type        = string\n  description = \"Name of the network to create resources in.\"\n  default     = \"default\"\n}\n\nvariable \"firewall_project\" {\n  type        = string\n  description = \"Name of the project to create the firewall rule in. Useful for shared VPC. Default is var.project.\"\n  default     = \"\"\n}\n\nvariable \"name\" {\n  type        = string\n  description = \"Name for the forwarding rule and prefix for supporting resources.\"\n}\n\nvariable \"service_port\" {\n  type        = number\n  description = \"TCP port your service is listening on.\"\n}\n\nvariable \"target_tags\" {\n  description = \"List of target tags to allow traffic using firewall rule.\"\n  type        = list(string)\n  default     = null\n}\n\nvariable \"target_service_accounts\" {\n  description = \"List of target service accounts to allow traffic using firewall rule.\"\n  type        = list(string)\n  default     = null\n}\n\nvariable \"session_affinity\" {\n  type        = string\n  description = \"How to distribute load. Options are `NONE`, `CLIENT_IP` and `CLIENT_IP_PROTO`\"\n  default     = \"NONE\"\n}\n\nvariable \"disable_health_check\" {\n  type        = bool\n  description = \"Disables the health check on the target pool.\"\n  default     = false\n}\n\nvariable \"health_check\" {\n  description = \"Health check to determine whether instances are responsive and able to do work\"\n  type = object({\n    check_interval_sec  = number\n    healthy_threshold   = number\n    timeout_sec         = number\n    unhealthy_threshold = number\n    port                = number\n    request_path        = string\n    host                = string\n  })\n  default = {\n    check_interval_sec  = null\n    healthy_threshold   = null\n    timeout_sec         = null\n    unhealthy_threshold = null\n    port                = null\n    request_path        = null\n    host                = null\n  }\n}\n\nvariable \"ip_address\" {\n  description = \"IP address of the external load balancer, if empty one will be assigned.\"\n  type        = string\n  default     = null\n}\n\nvariable \"ip_protocol\" {\n  description = \"The IP protocol for the frontend forwarding rule and firewall rule. TCP, UDP, ESP, AH, SCTP or ICMP.\"\n  type        = string\n  default     = \"TCP\"\n}\n\nvariable \"allowed_ips\" {\n  description = \"The IP address ranges which can access the load balancer.\"\n  default     = [\"0.0.0.0/0\"]\n  type        = list(string)\n}\n\nvariable \"labels\" {\n  description = \"The labels to attach to resources created by this module.\"\n  default     = {}\n  type        = map(string)\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_006_modular_load_balancing_regional_load_balancer/versions.tf",
    "content": "terraform {\n  required_version = \">= 0.13\"\n  required_providers {\n    google = {\n      source  = \"hashicorp/google\"\n      version = \">= 3.53, < 5.0\"\n    }\n\n    google-beta = {\n      source  = \"hashicorp/google-beta\"\n      version = \">= 3.53, < 5.0\"\n    }\n  }\n\n  provider_meta \"google\" {\n    module_name = \"blueprints/terraform/terraform-google-lb/v4.0.1\"\n  }\n\n  provider_meta \"google-beta\" {\n    module_name = \"blueprints/terraform/terraform-google-lb/v4.0.1\"\n  }\n}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_007_cloud_sql/ReadMe.md",
    "content": "# Cloud SQL with Terraform\n\n\n[https://www.cloudskillsboost.google](https://www.cloudskillsboost.google)\n\n[Select - Quest -  Managing Cloud Infrastructure with Terraform](https://www.cloudskillsboost.google/paths)\n\n\n**High Level Objectives**\n- Understand the code\n- Run Terraform\n- Install Cloud SQL Proxy\n- Test connection to the database\n\n\n\n**Skills**\n- terraform\n- cloud sql\n- cloud sql proxy\n\n\n**Version Stack**\n\n| Stack     | Version |\n|-----------|---------|\n| Terraform | v1.4.1  |\n\n\n## Download necessary files\n\n\n```bash\nmkdir sql-with-terraform\ncd sql-with-terraform\ngsutil cp -r gs://spls/gsp234/gsp234.zip .\n\n# Unzip the downloaded content:\nunzip gsp234.zip\n```\n\n## Understand the code\n\n\n\n## Run Terraform\n\n```bash\nterraform init\n\n\nterraform plan -out=tfplan\n\n\nterraform apply tfplan\n```\n\n## Cloud SQL Proxy\n\n- The Cloud SQL Proxy provides secure access to your Cloud SQL Second Generation instances \n  without having to allowlist IP addresses or configure SSL.\n\n- The Cloud SQL Proxy works by having a local client, called the proxy, running in the local environment. \n  Your application communicates with the proxy with the standard protocol used by your database. \n  The proxy uses a secure tunnel to communicate with its companion process running on the server.\n\n\n![img.png](.images/cloud-sql-proxy-workings.png)\n\n\n## Installing the Cloud SQL Proxy\n\n\n```bash\nwget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy\n\nchmod +x cloud_sql_proxy\n\n\n```\n\n\n# Test connection to the database\n\n```bash\n# Start by running the Cloud SQL proxy for the Cloud SQL instance:\nexport GOOGLE_PROJECT=$(gcloud config get-value project)\n\nMYSQL_DB_NAME=$(terraform output -json | jq -r '.instance_name.value')\nMYSQL_CONN_NAME=\"${GOOGLE_PROJECT}:us-central1:${MYSQL_DB_NAME}\"\n\n# Run the following command:\n./cloud_sql_proxy -instances=${MYSQL_CONN_NAME}=tcp:3306\n\n# Now you'll start another Cloud Shell tab by clicking on plus (+) icon. You'll use this shell to connect to the Cloud SQL proxy.\n# Navigate to sql-with-terraform directory:\ncd ~/sql-with-terraform\n\n# Get the generated password for MYSQL:\necho MYSQL_PASSWORD=$(terraform output -json | jq -r '.generated_user_password.value')\n\n# Test the MySQL connection:\nmysql -udefault -p --host 127.0.0.1 default\n\n# When prompted, enter the value of MYSQL_PASSWORD, found in the output above, and press Enter.\n\n# You should successfully log into the MYSQL command line. Exit from MYSQL by typing Ctrl + D.\n\n\nmysql> show databases;\n+--------------------+\n| Database           |\n+--------------------+\n| information_schema |\n| default            |\n| mysql              |\n| performance_schema |\n+--------------------+\n4 rows in set (0.10 sec)\n```"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_007_cloud_sql/main.tf",
    "content": "/*\nThis block specifies the Google Cloud Platform provider for Terraform with a version constraint.\nThis provider allows Terraform to interact with GCP resources like compute instances, storage buckets, and networking components\n*/\nprovider \"google\" {\n  version = \"~> 2.13\"\n}\n\n/*\nThe google-beta provider allows Terraform to interact with GCP beta resources that\nare not yet available in the production version of the google provider.\n*/\nprovider \"google-beta\" {\n  version = \"~> 2.13\"\n}\n\n/*\nThis block specifies the Random provider with a version constraint of ~> 2.2\nThe random provider allows Terraform to generate random values during resource creation,\nwhich can be useful for testing and creating unique resource names.\n*/\nprovider \"random\" {\n  version = \"~> 2.2\"\n}\n\n/*\nThis block defines a Terraform resource of type random_id with the name name.\nThis resource is used to generate a random identifier value that can be used in other resources or modules.\n*/\nresource \"random_id\" \"name\" {\n  byte_length = 2\n}\n\n/*\nThe resource block declares a resource of type google_sql_database_instance with the name master.\n\nThe name, project, region, database_version, and master_instance_name arguments are set to the\nvalues provided in the variables var.project, var.region, var.database_version, and var.master_instance_name.\n*/\nresource \"google_sql_database_instance\" \"master\" {\n  name                 = \"example-mysql-${random_id.name.hex}\"\n  project              = var.project\n  region               = var.region\n  database_version     = var.database_version\n  master_instance_name = var.master_instance_name\n\n  /*\n  The settings block includes various configurations for the database instance,\n  such as tier, activation_policy, disk_autoresize, backup_configuration,\n  ip_configuration, location_preference, maintenance_window, disk_size, disk_type, pricing_plan,\n  replication_type, and availability_type. The values for these configurations are provided in the variables.\n  */\n  settings {\n    tier                        = var.tier\n    activation_policy           = var.activation_policy\n    disk_autoresize             = var.disk_autoresize\n\n\n    dynamic \"backup_configuration\" {\n      for_each = [var.backup_configuration]\n      content {\n\n        binary_log_enabled = lookup(backup_configuration.value, \"binary_log_enabled\", null)\n        enabled            = lookup(backup_configuration.value, \"enabled\", null)\n        start_time         = lookup(backup_configuration.value, \"start_time\", null)\n      }\n    }\n    dynamic \"ip_configuration\" {\n      for_each = [var.ip_configuration]\n      content {\n\n        ipv4_enabled    = lookup(ip_configuration.value, \"ipv4_enabled\", true)\n        private_network = lookup(ip_configuration.value, \"private_network\", null)\n        require_ssl     = lookup(ip_configuration.value, \"require_ssl\", null)\n\n        dynamic \"authorized_networks\" {\n          for_each = lookup(ip_configuration.value, \"authorized_networks\", [])\n          content {\n            expiration_time = lookup(authorized_networks.value, \"expiration_time\", null)\n            name            = lookup(authorized_networks.value, \"name\", null)\n            value           = lookup(authorized_networks.value, \"value\", null)\n          }\n        }\n      }\n    }\n    dynamic \"location_preference\" {\n      for_each = [var.location_preference]\n      content {\n\n        follow_gae_application = lookup(location_preference.value, \"follow_gae_application\", null)\n        zone                   = lookup(location_preference.value, \"zone\", null)\n      }\n    }\n    /*\n      The dynamic blocks inside the settings block are used to handle configurations that\n      can have multiple instances. For example, maintenance_window can have multiple instances\n      of different configurations, so it is specified as a dynamic block.\n    */\n    dynamic \"maintenance_window\" {\n      for_each = [var.maintenance_window]\n      content {\n\n        day          = lookup(maintenance_window.value, \"day\", null)\n        hour         = lookup(maintenance_window.value, \"hour\", null)\n        update_track = lookup(maintenance_window.value, \"update_track\", null)\n      }\n    }\n    disk_size        = var.disk_size\n    disk_type        = var.disk_type\n    pricing_plan     = var.pricing_plan\n    availability_type = var.availability_type\n  }\n\n  dynamic \"replica_configuration\" {\n    for_each = [var.replica_configuration]\n    content {\n\n      ca_certificate            = lookup(replica_configuration.value, \"ca_certificate\", null)\n      client_certificate        = lookup(replica_configuration.value, \"client_certificate\", null)\n      client_key                = lookup(replica_configuration.value, \"client_key\", null)\n      connect_retry_interval    = lookup(replica_configuration.value, \"connect_retry_interval\", null)\n      dump_file_path            = lookup(replica_configuration.value, \"dump_file_path\", null)\n      failover_target           = lookup(replica_configuration.value, \"failover_target\", null)\n      master_heartbeat_period   = lookup(replica_configuration.value, \"master_heartbeat_period\", null)\n      password                  = lookup(replica_configuration.value, \"password\", null)\n      ssl_cipher                = lookup(replica_configuration.value, \"ssl_cipher\", null)\n      username                  = lookup(replica_configuration.value, \"username\", null)\n      verify_server_certificate = lookup(replica_configuration.value, \"verify_server_certificate\", null)\n    }\n  }\n\n  /*\n  The timeouts block specifies the maximum amount of time allowed for creating and deleting the instance.\n  */\n  timeouts {\n    create = \"60m\"\n    delete = \"2h\"\n  }\n}\n\n/*\nThis is a Terraform resource block that creates a Google Cloud SQL database.\n\nThe count argument is used to conditionally create this resource.\nIf the var.master_instance_name variable is an empty string, then count is set to 1, which means this resource will be created.\nOtherwise, if var.master_instance_name is not empty, count is set to 0, which means this resource will not be created.\n\nThe name argument specifies the name of the database to be created.\n\nThe project argument specifies the Google Cloud project in which to create the database.\n\nThe instance argument specifies the name of the Google Cloud SQL instance on which to create the database.\nThis value is obtained from the google_sql_database_instance.master.name attribute,\nwhich refers to the name attribute of the google_sql_database_instance resource named master.\n\nThe charset and collation arguments are used to set the character set and collation for the database, respectively.\n*/\nresource \"google_sql_database\" \"default\" {\n  count     = var.master_instance_name == \"\" ? 1 : 0\n  name      = var.db_name\n  project   = var.project\n  instance  = google_sql_database_instance.master.name\n  charset   = var.db_charset\n  collation = var.db_collation\n}\n\n/*\nThis Terraform code declares a resource block of type random_id, which is used to generate a random identifier.\nThe identifier is then used to create a random password for a user, for example, in an authentication system.\n*/\nresource \"random_id\" \"user-password\" {\n  byte_length = 8\n}\n\n/*\nThis is a Terraform configuration code that creates a SQL user in a Google Cloud SQL instance.\n*/\nresource \"google_sql_user\" \"default\" {\n  // This line uses a conditional operator to set the count of the resource to 1 if the\n  // master_instance_name variable is empty, or 0 if it is not.\n  count    = var.master_instance_name == \"\" ? 1 : 0\n  // This sets the name of the SQL user to the value of the user_name variable.\n  name     = var.user_name\n  project  = var.project\n  //  This sets the name of the Google Cloud SQL instance where the user will be created.\n  instance = google_sql_database_instance.master.name\n  // This sets the host where the SQL user can connect from.\n  host     = var.user_host\n  // This sets the password for the SQL user. If the user_password variable is not set, a random password is generated using\n  // the random_id resource.\n  // Otherwise, the user_password variable value is used.\n  password = var.user_password == \"\" ? random_id.user-password.hex : var.user_password\n}\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_007_cloud_sql/outputs.tf",
    "content": "// This output value represents the name of the database instance created by the Terraform configuration.\noutput \"instance_name\" {\n  description = \"The name of the database instance\"\n  value       = google_sql_database_instance.master.name\n}\n\n// This output value represents the IPv4 address of the master database instance created by the Terraform configuration.\noutput \"instance_address\" {\n  description = \"The IPv4 address of the master database instnace\"\n  value       = google_sql_database_instance.master.ip_address.0.ip_address\n}\n\n// This output value represents the time when the IPv4 address of the master database instance created\n// by the Terraform configuration will be retired.\noutput \"instance_address_time_to_retire\" {\n  description = \"The time the master instance IP address will be retired. RFC 3339 format.\"\n  value       = google_sql_database_instance.master.ip_address.0.time_to_retire\n}\n\n/*\nThis Terraform output block is defining an output named \"self_link\".\nThe output provides the self link to the Google Cloud SQL master instance created\nusing the resource \"google_sql_database_instance\".\n\nThe \"self_link\" attribute in Google Cloud SQL is a unique identifier for a resource,\nand it is used to retrieve, update or delete the resource. The value of the \"self_link\"\noutput is set to the value of the \"self_link\" attribute of the \"google_sql_database_instance\"\nresource created in the Terraform code.\n\nOnce this Terraform code is executed, the \"self_link\" output value can be\nretrieved using the Terraform CLI command terraform output self_link.\n*/\noutput \"self_link\" {\n  description = \"Self link to the master instance\"\n  value       = google_sql_database_instance.master.self_link\n}\n\n// This output value represents the auto-generated default user password if no input password was provided.\n// This value is marked as sensitive to ensure that it is not accidentally exposed.\noutput \"generated_user_password\" {\n  description = \"The auto generated default user password if no input password was provided\"\n  value       = random_id.user-password.hex\n  sensitive   = true\n}\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_007_cloud_sql/variables.tf",
    "content": "variable \"project\" {\n  description = \"The project to deploy to, if not set the default provider project is used.\"\n  default     = \"\"\n}\n\nvariable \"region\" {\n  description = \"Region for cloud resources\"\n  default     = \"us-central1\"\n}\n\nvariable \"database_version\" {\n  description = \"The version of of the database. For example, `MYSQL_5_6` or `POSTGRES_9_6`.\"\n  default     = \"MYSQL_5_6\"\n}\n\nvariable \"master_instance_name\" {\n  description = \"The name of the master instance to replicate\"\n  default     = \"\"\n}\n\nvariable \"tier\" {\n  description = \"The machine tier (First Generation) or type (Second Generation). See this page for supported tiers and pricing: https://cloud.google.com/sql/pricing\"\n  default     = \"db-f1-micro\"\n}\n\nvariable \"db_name\" {\n  description = \"Name of the default database to create\"\n  default     = \"default\"\n}\n\nvariable \"db_charset\" {\n  description = \"The charset for the default database\"\n  default     = \"\"\n}\n\nvariable \"db_collation\" {\n  description = \"The collation for the default database. Example for MySQL databases: 'utf8_general_ci', and Postgres: 'en_US.UTF8'\"\n  default     = \"\"\n}\n\nvariable \"user_name\" {\n  description = \"The name of the default user\"\n  default     = \"default\"\n}\n\nvariable \"user_host\" {\n  description = \"The host for the default user\"\n  default     = \"%\"\n}\n\nvariable \"user_password\" {\n  description = \"The password for the default user. If not set, a random one will be generated and available in the generated_user_password output variable.\"\n  default     = \"\"\n}\n\nvariable \"activation_policy\" {\n  description = \"This specifies when the instance should be active. Can be either `ALWAYS`, `NEVER` or `ON_DEMAND`.\"\n  default     = \"ALWAYS\"\n}\n\nvariable \"authorized_gae_applications\" {\n  description = \"A list of Google App Engine (GAE) project names that are allowed to access this instance.\"\n  default     = []\n}\n\nvariable \"disk_autoresize\" {\n  description = \"Second Generation only. Configuration to increase storage size automatically.\"\n  default     = true\n}\n\nvariable \"disk_size\" {\n  description = \"Second generation only. The size of data disk, in GB. Size of a running instance cannot be reduced but can be increased.\"\n  default     = 10\n}\n\nvariable \"disk_type\" {\n  description = \"Second generation only. The type of data disk: `PD_SSD` or `PD_HDD`.\"\n  default     = \"PD_SSD\"\n}\n\nvariable \"pricing_plan\" {\n  description = \"First generation only. Pricing plan for this instance, can be one of `PER_USE` or `PACKAGE`.\"\n  default     = \"PER_USE\"\n}\n\nvariable \"replication_type\" {\n  description = \"Replication type for this instance, can be one of `ASYNCHRONOUS` or `SYNCHRONOUS`.\"\n  default     = \"SYNCHRONOUS\"\n}\n\nvariable \"database_flags\" {\n  description = \"List of Cloud SQL flags that are applied to the database server\"\n  default     = []\n}\n\nvariable \"backup_configuration\" {\n  description = \"The backup_configuration settings subblock for the database setings\"\n  default     = {}\n}\n\nvariable \"ip_configuration\" {\n  description = \"The ip_configuration settings subblock\"\n  default     = {}\n}\n\nvariable \"location_preference\" {\n  description = \"The location_preference settings subblock\"\n  default     = {}\n}\n\n/*\nIn this example, the maintenance_window variable is a list of two subblocks, each containing day, hour, and update_track settings\nfor the database instance's maintenance window. This allows you to specify multiple maintenance windows with different settings.\n\nvariable \"maintenance_window\" {\n  description = \"The maintenance_window settings subblock\"\n  default     = [\n    {\n      day          = \"SAT\"\n      hour         = 4\n      update_track = \"canary\"\n    },\n    {\n      day          = \"SUN\"\n      hour         = 2\n      update_track = \"stable\"\n    }\n  ]\n}\n\n*/\n\nvariable \"maintenance_window\" {\n  description = \"The maintenance_window settings subblock\"\n  default     = {}\n}\n\n\n\nvariable \"replica_configuration\" {\n  description = \"The optional replica_configuration block for the database instance\"\n  default     = {}\n}\n\nvariable \"availability_type\" {\n  description = \"This specifies whether a PostgreSQL instance should be set up for high availability (REGIONAL) or single zone (ZONAL).\"\n  default     = \"ZONAL\"\n}\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_008_building_a_vpn_between_gcp_and_aws/ReadMe.md",
    "content": "# Building a VPN Between Google Cloud and AWS with Terraform\n\n[https://www.cloudskillsboost.google](https://www.cloudskillsboost.google)\n\n[Select - Quest -  Managing Cloud Infrastructure with Terraform](https://www.cloudskillsboost.google/paths)\n\n**High Level Objectives**\n- Build custom VPC networks with user-specified CIDR blocks in Google Cloud and AWS\n- Deploy a VM instance in each VPC network\n- Create VPN gateways in each VPC network and related resources for two IPsec tunnels\n\n\n\n**Skills**\n- terraform\n- vpc\n- vpn gateways\n- aws\n- gcp\n\n\n\n**Version Stack**\n\n| Stack     | Version |\n|-----------|---------|\n| Terraform | v1.4.1  |\n\n\n\n\n\n## Deployment architecture\n\n\n\n## Intro\n\nWhile Google Cloud uses routes to support equal-cost multi-path (ECMP) routing, \nAWS supports VPN gateways with two tunnels, active and standby, for redundancy and availability.\n\nThe lab configuration uses Cloud Router to demonstrate dynamic routing. \nCloud Router exchanges your VPC network route updates with your environment in AWS using \nBorder Gateway Protocol (BGP). Dynamic routing by Cloud Router requires a separate Cloud \nRouter for each IPsec tunnel.\n\n\n\n## Preparing your Google Cloud working environment\n\n- Clone the tutorial code\n\n```bash\ngsutil cp gs://spls/gsp854/autonetdeploy-multicloudvpn2.tar .\ntar -xvf autonetdeploy-multicloudvpn2.tar\n\ncd autonetdeploy-multicloudvpn\n```\n\n- Verify the Google Cloud region and zone\n\n## Preparing for AWS use\n\n\n\n\n\n\n\n- aws compute\n![img.png](.images/aws-compute.png)\n\n- aws vpc\n\n![img.png](.images/aws-vpc.png)\n\n- aws subnets\n\n![img.png](.images/aws-subnets.png)\n\n- aws internet gateway\n\n![img.png](.images/aws-intenet-gatway.png)\n\n- aws vpn connections\n\n![img.png](.images/aws-vpn-connections.png)\n\n- aws customer gateways\n\n![img.png](.images/aws-customer-gatways.png)\n\n- aws virtual private gateways\n\n![img.png](.images/aws-virtual-private-gateway-gatway.png)\n\n\n\n\n\n\n- gcp compute\n\n![img.png](.images/gcp-compute.png)\n\n- gcp network\n\n![img.png](.images/gcp-network.png)\n\n- gcp peer vpn gateways\n\n![img.png](.images/gcp-peer-vpn-gatway.png)\n\n- gcp cloud vpn gateway\n\n![img.png](.images/gcp-cloud-vpn-gatways.png)\n\n- gcp cloud vpn tunnels\n\n![img.png](.images/gcp-cloud-vpn-tunnels.png)\n\n\n- gcp cloud router\n\n![img.png](.images/gcp-cloud-router.png)\n\n\n- gcp cloud router details\n\n![img.png](.images/gcp-cloud-router-details.png)\n\n\n- gcp cloud firewall\n\n![img.png](.images/gcp-cloud-firewall.png)\n\n- gcp cloud routes\n\n![img.png](.images/gcp-cloud-routes.png)\n\n- gcp cloud IP addresses\n\n![img.png](.images/gcp-cloud-ip-addresses.png)"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_008_building_a_vpn_between_gcp_and_aws/autonetdeploy-multicloudvpn/aws_set_credentials.sh",
    "content": "#!/bin/bash\n\n\n\n\n# Creates AWS credentials from an accessKeys.csv file.\n\n# May need to create the accessKeys.csv file from arguments.\n# arguments: key_id access_key key_file\nfunction createAccessKeys() {\n  echo 'Access key ID,Secret access key' > \"$3\"\n  echo \"$1,$2\" >> \"$3\"\n  echo \"Created $3.\"\n}\n\n\n# Check arguments for existing accessKeys.csv file.\n# arguments: named_key_csv_file\nfunction checkArgs () {\n  local FILE_ARG='<path to csv accessKeys file>'\n\n  if [ -z \"$1\" ]; then\n    echo 'Error: missing argument.'\n    echo \"$0 ${FILE_ARG}\"\n    exit 1\n  fi\n\n  if [ \"$1\" != \"exists\" ] && [ ! -e \"$1\" ]; then\n    echo 'Error: file not found.'\n    echo \"$0 ${FILE_ARG}\"\n    exit 1\n  fi\n}\n\n\n# Backup existing credentials and create new ones.\n# arguments: source_credentials_file target_file_path\nfunction backupCredentials() {\n  local BACKUP_FILE=\"$2.bak.$(date +%s)\"\n  if [ -e $1.bak ]; then\n    cp \"$2\" \"${BACKUP_FILE}\"\n    echo \"Created backup (${BACKUP_FILE}).\"\n  fi\n\n  cp \"$1\" \"$1.bak\"\n  echo \"Created backup ($1.bak).\"\n}\n\n\n# Start the new file with [default]\n# arguments: credentials_file\nfunction addDefault() {\n  echo '[default]' > $1\n}\n\n\n# Add AWS secrets.\n# arguments: source_keys_file credentials_file\nfunction addSecrets() {\n  local KEY_ID=$(tail -1 \"$1\" | cut -d\",\" -f1)\n  local SECRET_KEY=$(tail -1 \"$1\" | cut -d\",\" -f2)\n\n  echo \"aws_access_key_id=${KEY_ID}\" >> $2\n  echo \"aws_secret_access_key=${SECRET_KEY}\" >> $2\n\n  echo \"Created $2.\"\n}\n\n\n# Start a new terraform.tfvars file.\n# arguments: full_path_file_name.\nfunction createTFVars() {\n  if [ ! -e $1 ]; then\n    echo \"/*\" > $1\n    echo \" * Initialized Terraform variables.\" >> $1\n    echo \" */\" >> $1\n  fi\n}\n\n\n# If not already present, add a key-value to tfvars file.\n# arguments: tfvars_path_file_name key value\nfunction addTFVar() {\n  if [ -z \"$1\" ] || [ -z \"$2\" ] || [ -z \"$3\" ]; then\n    echo 'Error: missing argument for addTFVar().'\n    exit 1\n  fi\n\n  local VAR_NAME=\"$2\"\n  local KEY_EXISTS=\"$(cat $1 | grep $2)\"\n\n  if [ -z \"${KEY_EXISTS}\" ]; then\n    echo \"\" >> $1\n    echo \"$2 = \\\"$3\\\"\" >> $1\n    echo \"Updated $2 in $1.\"\n  fi\n}\n\n\n# Create fresh AWS credentials file.\n# arguments: named_key_csv_file\nfunction createCredentials () {\n  # ~ only expands when NOT quoted (below).\n  local CREDS_FILE_DIR=~/.aws\n  local CREDS_FILE_PATH=\"${CREDS_FILE_DIR}/credentials_autonetdeploy\"\n  local THIS_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" && pwd )\"\n  local TFVARS_DIR_PATH=\"${THIS_DIR}/terraform\"\n  local TFVARS_FILE_PATH=\"${TFVARS_DIR_PATH}/terraform.tfvars\"\n  local TFVAR_CREDS='aws_credentials_file_path'\n\n  if [ \"$1\" != \"exists\" ]; then\n    mkdir -p ${CREDS_FILE_DIR}\n    backupCredentials ${CREDS_FILE_PATH} ${CREDS_FILE_PATH}\n    addDefault ${CREDS_FILE_PATH}\n    addSecrets $1 ${CREDS_FILE_PATH}\n  fi\n\n  createTFVars \"${TFVARS_FILE_PATH}\"\n  addTFVar \"${TFVARS_FILE_PATH}\" \"${TFVAR_CREDS}\" \"${CREDS_FILE_PATH}\"\n}\n\nif [ \"$#\" -eq 0 ]; then\n  echo 'Error: missing argument.'\n  echo \"$0 ${FILE_ARG}\"\n  exit 1\nfi\n\nACCESS_KEYS_FILE=$1\n\nif [ \"$#\" -eq 2 ]; then\n  ACCESS_KEYS_FILE=./accessKeys.csv\n  createAccessKeys $1 $2 ${ACCESS_KEYS_FILE}\nfi\n\ncheckArgs ${ACCESS_KEYS_FILE}\n# Pass \"exists\" to skip credential file copying.\ncreateCredentials ${ACCESS_KEYS_FILE}\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_008_building_a_vpn_between_gcp_and_aws/autonetdeploy-multicloudvpn/create_instance.sh",
    "content": "#!/bin/bash\nDEPLOYMENT=\"main\"\ngcloud compute instances create velo-mgr \\\n  --project=${DEVSHELL_PROJECT_ID} \\\n  --image=velostrata-mgmt-4-5-1-27955-20129-os \\\n  --image-project=velossandbox \\\n  --zone=us-central1-a \\\n  --machine-type=n1-standard-4 \\\n  --boot-disk-size=60 \\\n  --metadata=apiPassword=velo1234,defaultServiceAccount=migration-cloud-extension@${DEVSHELL_PROJECT_ID}.iam.gserviceaccount.com,secretsEncKey=qwiklabs \\\n  --service-account=migration-manager@${DEVSHELL_PROJECT_ID}.iam.gserviceaccount.com \\\n  --tags=https-server \\\n  --scopes=\"https://www.googleapis.com/auth/cloud-platform\",\"rpc://phrixus.googleapis.com/auth/cloudrpc\" \\\n  --network='gcp-network' \\\n  --subnet='gcp-subnet1'"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_008_building_a_vpn_between_gcp_and_aws/autonetdeploy-multicloudvpn/gcp_set_credentials.sh",
    "content": "#!/bin/bash\n\n\n# Add GCP credentials path to configuration defaults file.\n\n# Check arguments for existing json key file.\n# arguments: <project-id>-<unique-id>.json\nfunction checkArgs () {\n  local FILE_ARG='<path to json service account key file>'\n\n  if [ -z \"$1\" ]; then\n    echo 'Error: missing argument.'\n    echo \"$0 ${FILE_ARG}\"\n    exit 1\n  fi\n\n  if [ \"$1\" != \"exists\" ] && [ ! -e \"$1\" ]; then\n    echo 'Error: file not found.'\n    echo \"$0 ${FILE_ARG}\"\n    exit 1\n  fi\n}\n\n\n# Backup existing credentials and create new ones.\n# arguments: source_credentials_file target_file_path\nfunction backupAndCopyCredentials() {\n  local BACKUP_FILE=\"$2.bak.$(date +%s)\"\n  if [ -e $2 ]; then\n    cp \"$2\" \"${BACKUP_FILE}\"\n    echo \"Created backup (${BACKUP_FILE}).\"\n  fi\n\n  cp \"$1\" \"$2\"\n  echo \"Created $2 from $1.\"\n}\n\n\n# Start a new terraform.tfvars file.\n# arguments: full_path_file_name.\nfunction createTFVars() {\n  if [ ! -e $1 ]; then\n    echo \"/*\" > $1\n    echo \" * Initialized Terraform variables.\" >> $1\n    echo \" */\" >> $1\n  fi\n}\n\n\n# If not already present, add a key-value to tfvars file.\n# arguments: tfvars_path_file_name key value\nfunction addTFVar() {\n  if [ -z \"$1\" ] || [ -z \"$2\" ] || [ -z \"$3\" ]; then\n    echo 'Error: missing argument for addTFVar().'\n    exit 1\n  fi\n\n  local VAR_NAME=\"$2\"\n  local KEY_EXISTS=\"$(cat $1 | grep $2)\"\n\n  if [ -z \"${KEY_EXISTS}\" ]; then\n    echo \"\" >> $1\n    echo \"$2 = \\\"$3\\\"\" >> $1\n    echo \"Updated $2 in $1.\"\n  fi\n}\n\n\n# Create fresh GCP credentials file and point Terraform at it.\n# arguments: <project-id>-<unique-id>.json\nfunction createCredentials () {\n  # ~ only expands when NOT quoted (below).\n  local CREDS_FILE_DIR=~/.config/gcloud\n  local CREDS_FILE_PATH=\"${CREDS_FILE_DIR}/credentials_autonetdeploy.json\"\n  local THIS_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" && pwd )\"\n  local TFVARS_DIR_PATH=\"${THIS_DIR}/terraform\"\n  local TFVARS_FILE_PATH=\"${TFVARS_DIR_PATH}/terraform.tfvars\"\n  local TFVAR_CREDS='gcp_credentials_file_path'\n\n  if [ \"$1\" != \"exists\" ]; then\n    mkdir -p ${CREDS_FILE_DIR}\n    backupAndCopyCredentials $1 ${CREDS_FILE_PATH}\n  fi\n\n  createTFVars \"${TFVARS_FILE_PATH}\"\n  addTFVar \"${TFVARS_FILE_PATH}\" \"${TFVAR_CREDS}\" \"${CREDS_FILE_PATH}\"\n}\n\n\n# Copy/create file under ~/.config/gcloud\ncheckArgs $1\n# Pass \"exists\" to skip credential file copying.\ncreateCredentials $1\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_008_building_a_vpn_between_gcp_and_aws/autonetdeploy-multicloudvpn/gcp_set_project.sh",
    "content": "#!/bin/bash\n\n\n\n\n# Add GCP project to configuration files.\n\n# Check function arguments for project.\n# arguments: project\nfunction checkArgs () {\n  if [ -z \"$1\" ]; then\n    echo \"Error: missing argument. $0 <GCP project_id>\"\n    exit 1\n  fi\n}\n\n\n# Update project_id in DM config file.\n# arguments: project_id dm_project_file\nfunction fixDMProject() {\n  local DM_PROJECT_FILE=\"${2}\"\n  local SED_EX=\"s/project_id: .*/project_id: $1/\"\n  sed -i -e \"${SED_EX}\" ${DM_PROJECT_FILE}\n  echo \"Updated project_id: ${1} in ${DM_PROJECT_FILE}.\"\n}\n\n\n# Start a new terraform.tfvars file.\n# arguments: full_path_file_name.\nfunction createTFVars() {\n  if [ ! -e $1 ]; then\n    echo \"/*\" > $1\n    echo \" * Initialized Terraform variables.\" >> $1\n    echo \" */\" >> $1\n  fi\n}\n\n\n# If not already present, add a key-value to tfvars file.\n# arguments: tfvars_path_file_name key value\nfunction addTFVar() {\n  if [ -z \"$1\" ] || [ -z \"$2\" ] || [ -z \"$3\" ]; then\n    echo 'Error: missing argument for addTFVar().'\n    exit 1\n  fi\n\n  local VAR_NAME=\"$2\"\n  local KEY_EXISTS=\"$(cat $1 | grep $2)\"\n\n  if [ -z \"${KEY_EXISTS}\" ]; then\n    echo \"\" >> $1\n    echo \"$2 = \\\"$3\\\"\" >> $1\n    echo \"Updated $2 in $1.\"\n  fi\n}\n\n\n# Add projects to configuration file(s) if existing.\n# arguments: project\nfunction addProject() {\n  local PROJECT_ID=\"$1\"\n  local THIS_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" && pwd )\"\n  local DM_PROJECT_FILE='autonetdeploy_config.yaml'\n  local DM_PROJECT_FILE_PATH=\"${THIS_DIR}/deploymentmanager/${DM_PROJECT_FILE}\"\n  local TFVARS_DIR_PATH=\"${THIS_DIR}/terraform\"\n  local TFVARS_FILE_PATH=\"${TFVARS_DIR_PATH}/terraform.tfvars\"\n  local TFVAR_PROJECT='gcp_project_id'\n\n  checkArgs ${PROJECT_ID}\n\n  if [ -e ${DM_PROJECT_FILE_PATH} ]; then\n    fixDMProject ${PROJECT_ID} ${DM_PROJECT_FILE_PATH}\n  fi\n\n  # Always create terraform.tfvars file even if dir does not exist already.\n  mkdir -p \"${TFVARS_DIR_PATH}\"\n  createTFVars \"${TFVARS_FILE_PATH}\"\n  addTFVar \"${TFVARS_FILE_PATH}\" \"${TFVAR_PROJECT}\" \"${PROJECT_ID}\"\n}\n\naddProject $(gcloud config get-value project 2> /dev/null)\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_008_building_a_vpn_between_gcp_and_aws/autonetdeploy-multicloudvpn/get_terraform.sh",
    "content": "#!/bin/bash\n\n\n\n\n# Download Terraform utility.\n\n# Download and extract Terraform utility in the terraform directory.\nfunction getTerraform() {\n  # Places terraform in ~/terraform dir.\n  local T_VERSION='0.12.4/terraform_0.12.4_linux_amd64'\n  local T_URL=\"https://releases.hashicorp.com/terraform/${T_VERSION}.zip\"\n  # ~ only expands when NOT quoted (below).\n  local T_DIR=~/terraform\n  local T_ZIP=\"${T_DIR}/terraform.zip\"\n  local T_EXE=\"${T_DIR}/terraform\"\n\n  if [ -e ${T_EXE} ]; then\n    echo \"${T_EXE} already exists. Exiting.\"\n    echo ''\n    echo \"To adjust your path: export PATH=${T_DIR}:\\${PATH}\"\n    exit 0\n  fi\n\n  mkdir -p ${T_DIR}\n  pushd ${T_DIR} > /dev/null\n  curl -o \"${T_ZIP}\" \"${T_URL}\"\n  unzip -q \"${T_ZIP}\"\n  rm \"${T_ZIP}\"\n  popd > /dev/null\n\n  if [ -e ${T_EXE} ]; then\n    echo \"Successfully retrieved ${T_EXE}.\"\n    echo ''\n    echo \"To adjust your path: export PATH=${T_DIR}:\\${PATH}\"\n  else\n    echo \"Could not retrieve ${T_EXE}.\"\n  fi\n}\n\ngetTerraform\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_008_building_a_vpn_between_gcp_and_aws/autonetdeploy-multicloudvpn/migrate_sa_roles.sh",
    "content": "# Create migration manager\ngcloud iam service-accounts create \"migration-manager\" --display-name \"migration-manager\"\n\n# Assign roles to migration manager\ngcloud projects add-iam-policy-binding $DEVSHELL_PROJECT_ID --member \\\n  serviceAccount:\"migration-manager@$DEVSHELL_PROJECT_ID.iam.gserviceaccount.com\" \\\n  --role \"roles/cloudmigration.inframanager\" \\\n  --no-user-output-enabled --quiet\n\ngcloud projects add-iam-policy-binding $DEVSHELL_PROJECT_ID --member \\\n  serviceAccount:\"migration-manager@$DEVSHELL_PROJECT_ID.iam.gserviceaccount.com\" \\\n  --role \"roles/cloudmigration.storageaccess\" \\\n  --no-user-output-enabled --quiet\n\ngcloud projects add-iam-policy-binding $DEVSHELL_PROJECT_ID --member \\\n  serviceAccount:\"migration-manager@$DEVSHELL_PROJECT_ID.iam.gserviceaccount.com\" \\\n  --role \"roles/iam.serviceAccountUser\" \\\n  --no-user-output-enabled --quiet\n\ngcloud projects add-iam-policy-binding $DEVSHELL_PROJECT_ID --member \\\n  serviceAccount:\"migration-manager@$DEVSHELL_PROJECT_ID.iam.gserviceaccount.com\" \\\n  --role \"roles/logging.logWriter\" \\\n  --no-user-output-enabled --quiet\n\ngcloud projects add-iam-policy-binding $DEVSHELL_PROJECT_ID --member \\\n  serviceAccount:\"migration-manager@$DEVSHELL_PROJECT_ID.iam.gserviceaccount.com\" \\\n  --role \"roles/monitoring.metricWriter\" \\\n  --no-user-output-enabled --quiet\n\ngcloud projects add-iam-policy-binding $DEVSHELL_PROJECT_ID --member \\\n  serviceAccount:\"migration-manager@$DEVSHELL_PROJECT_ID.iam.gserviceaccount.com\" \\\n  --role \"roles/monitoring.viewer\" \\\n  --no-user-output-enabled --quiet\n\ngcloud iam service-accounts add-iam-policy-binding \\\n  \"migration-manager@$DEVSHELL_PROJECT_ID.iam.gserviceaccount.com\" \\\n  --member=serviceAccount:\"migration-manager@$DEVSHELL_PROJECT_ID.iam.gserviceaccount.com\" \\\n  --role=roles/iam.serviceAccountTokenCreator --project $DEVSHELL_PROJECT_ID\n\n# Create cloud extension account\ngcloud iam service-accounts create \"migration-cloud-extension\" \\\n--display-name \"migration-cloud-extension\"\n\n# Assign roles to cloud extension account\ngcloud projects add-iam-policy-binding $DEVSHELL_PROJECT_ID \\\n  --member serviceAccount:\"migration-cloud-extension@$DEVSHELL_PROJECT_ID.iam.gserviceaccount.com\" \\\n  --role \"roles/cloudmigration.storageaccess\" \\\n  --no-user-output-enabled --quiet\n\ngcloud projects add-iam-policy-binding $DEVSHELL_PROJECT_ID \\\n  --member serviceAccount:\"migration-cloud-extension@$DEVSHELL_PROJECT_ID.iam.gserviceaccount.com\" \\\n  --role \"roles/logging.logWriter\" \\\n  --no-user-output-enabled --quiet\n\ngcloud projects add-iam-policy-binding $DEVSHELL_PROJECT_ID \\\n  --member serviceAccount:\"migration-cloud-extension@$DEVSHELL_PROJECT_ID.iam.gserviceaccount.com\" \\\n  --role \"roles/monitoring.metricWriter\" \\\n  --no-user-output-enabled --quiet"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_008_building_a_vpn_between_gcp_and_aws/autonetdeploy-multicloudvpn/terraform/aws_compute.tf",
    "content": "\n/*\n * Terraform compute resources for AWS.\n */\n\ndata \"aws_ami\" \"ubuntu\" {\n  most_recent = true\n\n  filter {\n    name   = \"name\"\n    values = [var.aws_disk_image]\n  }\n\n  filter {\n    name   = \"virtualization-type\"\n    values = [\"hvm\"]\n  }\n\n  owners = [\"099720109477\"] # Canonical\n}\n\nresource \"aws_eip\" \"aws-ip\" {\n  vpc = true\n\n  instance                  = aws_instance.aws-vm.id\n  associate_with_private_ip = var.aws_vm_address\n}\n\nresource \"aws_instance\" \"aws-vm\" {\n  ami           = data.aws_ami.ubuntu.id\n  instance_type = var.aws_instance_type\n  subnet_id     = aws_subnet.aws-subnet1.id\n  key_name      = \"vm-ssh-key\"\n\n  associate_public_ip_address = true\n  private_ip                  = var.aws_vm_address\n\n  vpc_security_group_ids = [\n    aws_security_group.aws-allow-icmp.id,\n    aws_security_group.aws-allow-ssh.id,\n    aws_security_group.aws-allow-vpn.id,\n    aws_security_group.aws-allow-internet.id,\n  ]\n\n  user_data = replace(\n    replace(\n      file(\"vm_userdata.sh\"),\n      \"<EXT_IP>\",\n      google_compute_address.gcp-ip.address,\n    ),\n    \"<INT_IP>\",\n    var.gcp_vm_address,\n  )\n\n  tags = {\n    Name = \"aws-vm-${var.aws_region}\"\n  }\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_008_building_a_vpn_between_gcp_and_aws/autonetdeploy-multicloudvpn/terraform/aws_networking.tf",
    "content": "\n\n/*\n * Terraform networking resources for AWS.\n */\n\nresource \"aws_vpc\" \"aws-vpc\" {\n  cidr_block           = var.aws_network_cidr\n  enable_dns_support   = true\n  enable_dns_hostnames = true\n  tags = {\n    \"Name\" = \"aws-vpc\"\n  }\n}\n\nresource \"aws_subnet\" \"aws-subnet1\" {\n  vpc_id     = aws_vpc.aws-vpc.id\n  cidr_block = var.aws_subnet1_cidr\n\n  tags = {\n    Name = \"aws-vpn-subnet\"\n  }\n}\n\nresource \"aws_internet_gateway\" \"aws-vpc-igw\" {\n  vpc_id = aws_vpc.aws-vpc.id\n\n  tags = {\n    Name = \"aws-vpc-igw\"\n  }\n}\n\n/*\n * ----------VPN Connection----------\n */\n\nresource \"aws_vpn_gateway\" \"aws-vpn-gw\" {\n  vpc_id = aws_vpc.aws-vpc.id\n}\n\nresource \"aws_customer_gateway\" \"aws-cgw-1\" {\n  bgp_asn    = 65000\n  ip_address = google_compute_ha_vpn_gateway.gcp-vpn-gw.vpn_interfaces[0].ip_address\n  type       = \"ipsec.1\"\n  tags = {\n    \"Name\" = \"aws-customer-gw\"\n  }\n}\nresource \"aws_customer_gateway\" \"aws-cgw-2\" {\n  bgp_asn    = 65000\n  ip_address = google_compute_ha_vpn_gateway.gcp-vpn-gw.vpn_interfaces[1].ip_address\n  type       = \"ipsec.1\"\n  tags = {\n    \"Name\" = \"aws-customer-gw\"\n  }\n}\n\nresource \"aws_default_route_table\" \"aws-vpc\" {\n  default_route_table_id = aws_vpc.aws-vpc.default_route_table_id\n  route {\n    cidr_block = \"0.0.0.0/0\"\n    gateway_id = aws_internet_gateway.aws-vpc-igw.id\n  }\n  propagating_vgws = [\n    aws_vpn_gateway.aws-vpn-gw.id,\n  ]\n}\n\nresource \"aws_vpn_connection\" \"aws-vpn-connection1\" {\n  vpn_gateway_id      = aws_vpn_gateway.aws-vpn-gw.id\n  customer_gateway_id = aws_customer_gateway.aws-cgw-1.id\n  type                = \"ipsec.1\"\n  static_routes_only  = false\n  tags = {\n    \"Name\" = \"aws-vpn-connection1\"\n  }\n}\n\nresource \"aws_vpn_connection\" \"aws-vpn-connection2\" {\n  vpn_gateway_id      = aws_vpn_gateway.aws-vpn-gw.id\n  customer_gateway_id = aws_customer_gateway.aws-cgw-2.id\n  type                = \"ipsec.1\"\n  static_routes_only  = false\n  tags = {\n    \"Name\" = \"aws-vpn-connection2\"\n  }\n}\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_008_building_a_vpn_between_gcp_and_aws/autonetdeploy-multicloudvpn/terraform/aws_outputs.tf",
    "content": "\n\n/*\n * Terraform output variables for AWS.\n */\n\noutput \"aws_instance_external_ip\" {\n  value = aws_eip.aws-ip.public_ip\n}\n\noutput \"aws_instance_internal_ip\" {\n  value = aws_instance.aws-vm.private_ip\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_008_building_a_vpn_between_gcp_and_aws/autonetdeploy-multicloudvpn/terraform/aws_security.tf",
    "content": "\n\n/*\n * Terraform security (firewall) resources for AWS.\n */\n\n# Allow PING testing.\nresource \"aws_security_group\" \"aws-allow-icmp\" {\n  name        = \"aws-allow-icmp\"\n  description = \"Allow icmp access from anywhere\"\n  vpc_id      = aws_vpc.aws-vpc.id\n\n  ingress {\n    from_port   = 8\n    to_port     = 0\n    protocol    = \"icmp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\n# Allow SSH for iperf testing.\nresource \"aws_security_group\" \"aws-allow-ssh\" {\n  name        = \"aws-allow-ssh\"\n  description = \"Allow ssh access from anywhere\"\n  vpc_id      = aws_vpc.aws-vpc.id\n\n  ingress {\n    from_port   = 22\n    to_port     = 22\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\n# Allow traffic from the VPN subnets.\nresource \"aws_security_group\" \"aws-allow-vpn\" {\n  name        = \"aws-allow-vpn\"\n  description = \"Allow all traffic from vpn resources\"\n  vpc_id      = aws_vpc.aws-vpc.id\n\n  ingress {\n    from_port   = 0\n    to_port     = 0\n    protocol    = \"-1\"\n    cidr_blocks = [var.gcp_subnet1_cidr]\n  }\n}\n\n# Allow TCP traffic from the Internet.\nresource \"aws_security_group\" \"aws-allow-internet\" {\n  name        = \"aws-allow-internet\"\n  description = \"Allow http traffic from the internet\"\n  vpc_id      = aws_vpc.aws-vpc.id\n\n  ingress {\n    from_port   = 80\n    to_port     = 80\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n\n  egress {\n    from_port   = 0\n    to_port     = 0\n    protocol    = \"-1\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\nresource \"aws_default_security_group\" \"default\" {\n  vpc_id = aws_vpc.aws-vpc.id\n\n  ingress {\n    protocol  = -1\n    self      = true\n    from_port = 0\n    to_port   = 0\n\tcidr_blocks = [\"0.0.0.0/0\"]\n  }\n\n  egress {\n    from_port   = 0\n    to_port     = 0\n    protocol    = \"-1\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_008_building_a_vpn_between_gcp_and_aws/autonetdeploy-multicloudvpn/terraform/aws_variables.tf",
    "content": "\n\n/*\n * Terraform variable declarations for AWS.\n */\n\nvariable \"aws_credentials_file_path\" {\n  description = \"Locate the AWS credentials file.\"\n  type        = string\n}\n\nvariable \"aws_region\" {\n  description = \"Default to Oregon region.\"\n  default     = \"us-east-1\"\n}\n\nvariable \"aws_instance_type\" {\n  description = \"Machine Type. Includes 'Enhanced Networking' via ENA.\"\n  default     = \"t2.micro\"\n}\n\nvariable \"aws_disk_image\" {\n  description = \"Boot disk for gcp_instance_type.\"\n  default     = \"ubuntu/images/hvm-ssd/ubuntu-xenial-16.04-amd64-server-*\"\n}\n\nvariable \"aws_network_cidr\" {\n  description = \"VPC network ip block.\"\n  default     = \"172.16.0.0/16\"\n}\n\nvariable \"aws_subnet1_cidr\" {\n  description = \"Subset block from VPC network ip block.\"\n  default     = \"172.16.0.0/24\"\n}\n\nvariable \"aws_vm_address\" {\n  description = \"Private IP address for AWS VM instance.\"\n  default     = \"172.16.0.100\"\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_008_building_a_vpn_between_gcp_and_aws/autonetdeploy-multicloudvpn/terraform/gcp_compute.tf",
    "content": "\n\n/*\n * Terraform compute resources for GCP.\n * Acquire all zones and choose one randomly.\n */\n\ndata \"google_compute_zones\" \"available\" {\n  region = var.gcp_region\n}\n\nresource \"google_compute_address\" \"gcp-ip\" {\n  name   = \"gcp-vm-ip-${var.gcp_region}\"\n  region = var.gcp_region\n}\n\nresource \"google_compute_instance\" \"gcp-vm\" {\n  name         = \"gcp-vm-${var.gcp_region}\"\n  machine_type = var.gcp_instance_type\n  zone         = data.google_compute_zones.available.names[0]\n\n  boot_disk {\n    initialize_params {\n      image = var.gcp_disk_image\n    }\n  }\n\n  network_interface {\n    subnetwork = google_compute_subnetwork.gcp-subnet1.name\n    network_ip = var.gcp_vm_address\n\n    access_config {\n      # Static IP\n      nat_ip = google_compute_address.gcp-ip.address\n    }\n  }\n\n  # Cannot pre-load both gcp and aws since that creates a circular dependency.\n  # Can pre-populate the AWS IPs to make it easier to run tests.\n  metadata_startup_script = replace(\n    replace(file(\"vm_userdata.sh\"), \"<EXT_IP>\", aws_eip.aws-ip.public_ip),\n    \"<INT_IP>\",\n    var.aws_vm_address,\n  )\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_008_building_a_vpn_between_gcp_and_aws/autonetdeploy-multicloudvpn/terraform/gcp_networking.tf",
    "content": "\n/*\n * Terraform networking resources for GCP.\n * Updated by Sureskills/Kogneos 21/04/2022\n */\n\nresource \"google_compute_network\" \"gcp-network\" {\n  name                    = \"gcp-network\"\n  auto_create_subnetworks = \"false\"\n}\n\nresource \"google_compute_subnetwork\" \"gcp-subnet1\" {\n  name          = \"gcp-subnet1\"\n  ip_cidr_range = var.gcp_subnet1_cidr\n  network       = google_compute_network.gcp-network.name\n  region        = var.gcp_region\n}\n\n/*\n * ----------VPN Connection----------\n */\n\nresource \"google_compute_ha_vpn_gateway\" \"gcp-vpn-gw\" {\n  name    = \"gcp-vpn-gw-${var.gcp_region}\"\n  network = google_compute_network.gcp-network.name\n  region  = var.gcp_region\n}\n\nresource \"google_compute_external_vpn_gateway\" \"external_gateway\" {\n  name            = \"aws-gateway\"\n  redundancy_type = \"FOUR_IPS_REDUNDANCY\"\n  description     = \"Dual AWS VPN gateways\"\n  interface {\n    id         = 0\n    ip_address = aws_vpn_connection.aws-vpn-connection1.tunnel1_address\n  }\n  interface {\n    id         = 1\n    ip_address = aws_vpn_connection.aws-vpn-connection1.tunnel2_address\n  }\n  interface {\n    id         = 2\n    ip_address = aws_vpn_connection.aws-vpn-connection2.tunnel1_address\n  }\n  interface {\n    id         = 3\n    ip_address = aws_vpn_connection.aws-vpn-connection2.tunnel2_address\n  }  \n}\n\n\n /* ----------VPN Tunnel1----------\n */\nresource \"google_compute_vpn_tunnel\" \"gcp-tunnel1\" {\n  name                            = \"gcp-tunnel1\"\n  peer_external_gateway           = google_compute_external_vpn_gateway.external_gateway.id\n  peer_external_gateway_interface = 0\n  shared_secret                   = aws_vpn_connection.aws-vpn-connection1.tunnel1_preshared_key\n  ike_version                     = 2\n  vpn_gateway                     = google_compute_ha_vpn_gateway.gcp-vpn-gw.self_link\n  router                          = google_compute_router.gcp-router1.name\n  vpn_gateway_interface           = 0\n}\n\nresource \"google_compute_router\" \"gcp-router1\" {\n  name    = \"gcp-router1\"\n  region  = var.gcp_region\n  network = google_compute_network.gcp-network.name\n  bgp {\n    asn = aws_customer_gateway.aws-cgw-1.bgp_asn\n    advertise_mode    = \"CUSTOM\"\n    advertised_groups = [\"ALL_SUBNETS\"]\n  }\n}\n\nresource \"google_compute_router_peer\" \"gcp-router1-peer\" {\n  name            = \"gcp-to-aws-bgp1\"\n  router          = google_compute_router.gcp-router1.name\n  region          = google_compute_router.gcp-router1.region\n  peer_ip_address = aws_vpn_connection.aws-vpn-connection1.tunnel1_vgw_inside_address\n  peer_asn        = var.GCP_TUN1_VPN_GW_ASN\n  interface       = google_compute_router_interface.router_interface1.name\n}\n\nresource \"google_compute_router_interface\" \"router_interface1\" {\n  name       = \"gcp-to-aws-interface1\"\n  router     = google_compute_router.gcp-router1.name\n  region     = google_compute_router.gcp-router1.region\n  ip_range   = \"${aws_vpn_connection.aws-vpn-connection1.tunnel1_cgw_inside_address}/${var.GCP_TUN1_CUSTOMER_GW_INSIDE_NETWORK_CIDR}\"\n  vpn_tunnel = google_compute_vpn_tunnel.gcp-tunnel1.name\n}\n\n /* ----------VPN Tunnel2----------\n */\nresource \"google_compute_vpn_tunnel\" \"gcp-tunnel2\" {\n  name                            = \"gcp-tunnel2\"\n  peer_external_gateway           = google_compute_external_vpn_gateway.external_gateway.id\n  peer_external_gateway_interface = 1\n  shared_secret                   = aws_vpn_connection.aws-vpn-connection1.tunnel2_preshared_key\n  ike_version                     = 2\n  vpn_gateway                     = google_compute_ha_vpn_gateway.gcp-vpn-gw.self_link\n  router                          = google_compute_router.gcp-router2.name\n  vpn_gateway_interface           = 0\n}\n\nresource \"google_compute_router\" \"gcp-router2\" {\n  name    = \"gcp-router2\"\n  region  = var.gcp_region\n  network = google_compute_network.gcp-network.name\n  bgp {\n    asn = aws_customer_gateway.aws-cgw-1.bgp_asn\n    advertise_mode    = \"CUSTOM\"\n    advertised_groups = [\"ALL_SUBNETS\"]\n  }\n}\n\nresource \"google_compute_router_peer\" \"gcp-router2-peer\" {\n  name            = \"gcp-to-aws-bgp2\"\n  router          = google_compute_router.gcp-router2.name\n  region          = google_compute_router.gcp-router2.region\n  peer_ip_address = aws_vpn_connection.aws-vpn-connection1.tunnel2_vgw_inside_address\n  peer_asn        = var.GCP_TUN2_VPN_GW_ASN\n  interface       = google_compute_router_interface.router_interface2.name\n}\n\nresource \"google_compute_router_interface\" \"router_interface2\" {\n  name       = \"gcp-to-aws-interface2\"\n  router     = google_compute_router.gcp-router2.name\n  region     = google_compute_router.gcp-router2.region\n  ip_range   = \"${aws_vpn_connection.aws-vpn-connection1.tunnel2_cgw_inside_address}/${var.GCP_TUN2_CUSTOMER_GW_INSIDE_NETWORK_CIDR}\"\n  vpn_tunnel = google_compute_vpn_tunnel.gcp-tunnel2.name\n}\n\n /* ----------VPN Tunnel3----------\n */\nresource \"google_compute_vpn_tunnel\" \"gcp-tunnel3\" {\n  name                            = \"gcp-tunnel3\"\n  peer_external_gateway           = google_compute_external_vpn_gateway.external_gateway.id\n  peer_external_gateway_interface = 2\n  shared_secret                   = aws_vpn_connection.aws-vpn-connection2.tunnel1_preshared_key\n  ike_version                     = 2\n  vpn_gateway                     = google_compute_ha_vpn_gateway.gcp-vpn-gw.self_link\n  router                          = google_compute_router.gcp-router3.name\n  vpn_gateway_interface           = 1\n}\n\nresource \"google_compute_router\" \"gcp-router3\" {\n  name    = \"gcp-router3\"\n  region  = var.gcp_region\n  network = google_compute_network.gcp-network.name\n  bgp {\n    asn = aws_customer_gateway.aws-cgw-2.bgp_asn\n    advertise_mode    = \"CUSTOM\"\n    advertised_groups = [\"ALL_SUBNETS\"]\n  }\n}\n\nresource \"google_compute_router_peer\" \"gcp-router3-peer\" {\n  name            = \"gcp-to-aws-bgp3\"\n  router          = google_compute_router.gcp-router3.name\n  region          = google_compute_router.gcp-router3.region\n  peer_ip_address = aws_vpn_connection.aws-vpn-connection2.tunnel1_vgw_inside_address\n  peer_asn        = var.GCP_TUN1_VPN_GW_ASN\n  interface       = google_compute_router_interface.router_interface3.name\n}\n\nresource \"google_compute_router_interface\" \"router_interface3\" {\n  name       = \"gcp-to-aws-interface3\"\n  router     = google_compute_router.gcp-router3.name\n  region     = google_compute_router.gcp-router3.region\n  ip_range   = \"${aws_vpn_connection.aws-vpn-connection2.tunnel1_cgw_inside_address}/${var.GCP_TUN1_CUSTOMER_GW_INSIDE_NETWORK_CIDR}\"\n  vpn_tunnel = google_compute_vpn_tunnel.gcp-tunnel3.name\n}\n\n/* ----------VPN Tunnel4----------\n */\nresource \"google_compute_vpn_tunnel\" \"gcp-tunnel4\" {\n  name                            = \"gcp-tunnel4\"\n  peer_external_gateway           = google_compute_external_vpn_gateway.external_gateway.id\n  peer_external_gateway_interface = 3\n  shared_secret                   = aws_vpn_connection.aws-vpn-connection2.tunnel2_preshared_key\n  ike_version                     = 2\n  vpn_gateway                     = google_compute_ha_vpn_gateway.gcp-vpn-gw.self_link\n  router                          = google_compute_router.gcp-router4.name\n  vpn_gateway_interface           = 1\n}\n\nresource \"google_compute_router\" \"gcp-router4\" {\n  name    = \"gcp-router4\"\n  region  = var.gcp_region\n  network = google_compute_network.gcp-network.name\n  bgp {\n    asn = aws_customer_gateway.aws-cgw-2.bgp_asn\n    advertise_mode    = \"CUSTOM\"\n    advertised_groups = [\"ALL_SUBNETS\"]\n  }\n}\n\nresource \"google_compute_router_peer\" \"gcp-router4-peer\" {\n  name            = \"gcp-to-aws-bgp4\"\n  router          = google_compute_router.gcp-router4.name\n  region          = google_compute_router.gcp-router4.region\n  peer_ip_address = aws_vpn_connection.aws-vpn-connection2.tunnel2_vgw_inside_address\n  peer_asn        = var.GCP_TUN2_VPN_GW_ASN\n  interface       = google_compute_router_interface.router_interface4.name\n}\n\nresource \"google_compute_router_interface\" \"router_interface4\" {\n  name       = \"gcp-to-aws-interface4\"\n  router     = google_compute_router.gcp-router4.name\n  region     = google_compute_router.gcp-router4.region\n  ip_range   = \"${aws_vpn_connection.aws-vpn-connection2.tunnel2_cgw_inside_address}/${var.GCP_TUN2_CUSTOMER_GW_INSIDE_NETWORK_CIDR}\"\n  vpn_tunnel = google_compute_vpn_tunnel.gcp-tunnel4.name\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_008_building_a_vpn_between_gcp_and_aws/autonetdeploy-multicloudvpn/terraform/gcp_outputs.tf",
    "content": "\n\n/*\n * Terraform output variables for GCP.\n */\n\noutput \"gcp_instance_external_ip\" {\n  value = <<-EOF\n  ${google_compute_instance.gcp-vm.network_interface[0].access_config[0].nat_ip}\nEOF\n\n}\n\noutput \"gcp_instance_internal_ip\" {\n  value = google_compute_instance.gcp-vm.network_interface[0].network_ip\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_008_building_a_vpn_between_gcp_and_aws/autonetdeploy-multicloudvpn/terraform/gcp_security.tf",
    "content": "\n\n/*\n * Terraform security (firewall) resources for GCP.\n */\n\n# Allow PING testing.\nresource \"google_compute_firewall\" \"gcp-allow-icmp\" {\n  name    = \"${google_compute_network.gcp-network.name}-gcp-allow-icmp\"\n  network = google_compute_network.gcp-network.name\n\n  allow {\n    protocol = \"icmp\"\n  }\n\n  source_ranges = [\n    \"0.0.0.0/0\",\n  ]\n}\n\n# Allow SSH for iperf testing.\nresource \"google_compute_firewall\" \"gcp-allow-ssh\" {\n  name    = \"${google_compute_network.gcp-network.name}-gcp-allow-ssh\"\n  network = google_compute_network.gcp-network.name\n\n  allow {\n    protocol = \"tcp\"\n    ports    = [\"22\"]\n  }\n\n  source_ranges = [\n    \"0.0.0.0/0\",\n  ]\n}\n\n# Allow traffic from the VPN subnets.\nresource \"google_compute_firewall\" \"gcp-allow-vpn\" {\n  name    = \"${google_compute_network.gcp-network.name}-gcp-allow-vpn\"\n  network = google_compute_network.gcp-network.name\n\n  allow {\n    protocol = \"tcp\"\n    ports    = [\"0-65535\"]\n  }\n\n  allow {\n    protocol = \"udp\"\n    ports    = [\"0-65535\"]\n  }\n\n  source_ranges = [\n    var.aws_subnet1_cidr,\n  ]\n}\n\n# Allow TCP traffic from the Internet.\nresource \"google_compute_firewall\" \"gcp-allow-internet\" {\n  name    = \"${google_compute_network.gcp-network.name}-gcp-allow-internet\"\n  network = google_compute_network.gcp-network.name\n\n  allow {\n    protocol = \"tcp\"\n    ports    = [\"80\"]\n  }\n\n  source_ranges = [\n    \"0.0.0.0/0\",\n  ]\n}\n\nresource \"google_compute_firewall\" \"https\" {\n  name    = \"gcp-network-https\"\n  network = google_compute_network.gcp-network.name\n  allow {\n    protocol = \"tcp\"\n    ports    = [\"443\"]\n  }\n  direction = \"INGRESS\"\n  source_ranges = [\"0.0.0.0/0\"]\n}\n\nresource \"google_compute_firewall\" \"gcp-allow-all\" {\n  name    = \"gcp-network-allow-all\"\n  network = google_compute_network.gcp-network.name\n  allow {\n    protocol = \"all\"\n  }\n  direction = \"INGRESS\"\n  source_ranges = [\"0.0.0.0/0\"]\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_008_building_a_vpn_between_gcp_and_aws/autonetdeploy-multicloudvpn/terraform/gcp_variables.tf",
    "content": "\n\n/*\n * Terraform variable declarations for GCP.\n */\n\nvariable \"gcp_credentials_file_path\" {\n  description = \"Locate the GCP credentials .json file.\"\n  type        = string\n}\n\nvariable \"gcp_project_id\" {\n  description = \"GCP Project ID.\"\n  type        = string\n}\n\nvariable \"gcp_region\" {\n  description = \"Default to Oregon region.\"\n  default     = \"us-central1\"\n}\n\nvariable \"gcp_instance_type\" {\n  description = \"Machine Type. Correlates to an network egress cap.\"\n  default     = \"n1-standard-1\"\n}\n\nvariable \"gcp_disk_image\" {\n  description = \"Boot disk for gcp_instance_type.\"\n  default     = \"projects/ubuntu-os-cloud/global/images/family/ubuntu-1804-lts\"\n}\n\nvariable \"gcp_network_cidr\" {\n  default = \"10.240.0.0/16\"\n}\n\nvariable \"gcp_subnet1_cidr\" {\n  default = \"10.240.0.0/24\"\n}\n\nvariable \"gcp_vm_address\" {\n  description = \"Private IP address for GCP VM instance.\"\n  default     = \"10.240.0.100\"\n}\n\nvariable \"GCP_TUN1_VPN_GW_ASN\" {\n  description = \"Tunnel 1 - Virtual Private Gateway ASN, from the AWS VPN Customer Gateway Configuration\"\n  default     = \"64512\"\n}\n\nvariable \"GCP_TUN1_CUSTOMER_GW_INSIDE_NETWORK_CIDR\" {\n  description = \"Tunnel 1 - Customer Gateway from Inside IP Address CIDR block, from AWS VPN Customer Gateway Configuration\"\n  default     = \"30\"\n}\n\nvariable \"GCP_TUN2_VPN_GW_ASN\" {\n  description = \"Tunnel 2 - Virtual Private Gateway ASN, from the AWS VPN Customer Gateway Configuration\"\n  default     = \"64512\"\n}\n\nvariable \"GCP_TUN2_CUSTOMER_GW_INSIDE_NETWORK_CIDR\" {\n  description = \"Tunnel 2 - Customer Gateway from Inside IP Address CIDR block, from AWS VPN Customer Gateway Configuration\"\n  default     = \"30\"\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_008_building_a_vpn_between_gcp_and_aws/autonetdeploy-multicloudvpn/terraform/main.tf",
    "content": "\n/*\n * Terraform main configuration file (with provider definitions).\n */\n\nprovider \"google\" {\n  version = \"4.18.0\"\n\n  credentials = file(var.gcp_credentials_file_path)\n\n  # Should be able to parse project from credentials file but cannot.\n  # Cannot convert string to map and cannot interpolate within variables.\n  project = var.gcp_project_id\n\n  region = var.gcp_region\n}\n\nprovider \"aws\" {\n  version = \"4.10.0\"\n\n  shared_credentials_file = pathexpand(var.aws_credentials_file_path)\n\n  region = var.aws_region\n}\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_008_building_a_vpn_between_gcp_and_aws/autonetdeploy-multicloudvpn/terraform/run_graph.sh",
    "content": "#!/bin/bash\n\n\n# Run Terraform graph command with some color-formatting and emit a png.\n# terraform graph -type plan | dot -Tpng > graph.png\n#\n# Useful graphviz links:\n# graphviz docs: http://www.graphviz.org/doc/info/attrs.html\n# graphviz colors: http://www.graphviz.org/doc/info/colors.html\n# webgraphviz viewer: http://www.webgraphviz.com\n\n\nfunction runGraph() {\n  local THIS_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" && pwd )\"\n  local T_CMD=\"terraform graph -type plan\"\n  local D_CMD='dot -Tpng'\n  local SED_EX1='s/\\[root\\] //g'\n  local SED_EX2='/.*aws.*shape = \"box\"/ s/shape = \"box\"/shape = \"box\", style = \"filled\", fillcolor = \"coral\"/'\n  local SED_EX3='/.*google.*shape = \"box\"/ s/shape = \"box\"/shape = \"box\", style = \"filled\", fillcolor = \"deepskyblue\"/'\n  local SED_EX4='s/shape = \"diamond\"/shape = \"diamond\", style = \"filled\", fillcolor = \"aquamarine\"/'\n  local OUT_FILE=\"${THIS_DIR}/gcpawsvpn_plan_graph.png\"\n\n  if [ -e ${OUT_FILE} ]; then\n    echo \"${OUT_FILE} already exists. Exiting.\"\n    exit 1\n  fi\n\n  ${T_CMD} | sed -e \"${SED_EX1}\" -e \"${SED_EX2}\" -e \"${SED_EX3}\" \\\n             -e \"${SED_EX4}\" | ${D_CMD} > ${OUT_FILE}\n  echo \"Wrote ${OUT_FILE}.\"\n}\n\nrunGraph\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/taskset_gcp_terraform_infrastructure_as_code/task_008_building_a_vpn_between_gcp_and_aws/autonetdeploy-multicloudvpn/terraform/vm_userdata.sh",
    "content": "#!/bin/bash -xe\n\n\n# Make it easy to run iperf3.\necho \"iperf3 -c <EXT_IP> -p 80 -i 1 -t 30 -P 8 -V\" > /tmp/run_iperf_to_ext.sh\nchmod 755 /tmp/run_iperf_to_ext.sh\necho \"iperf3 -c <INT_IP> -p 80 -i 1 -t 30 -P 8 -V\" > /tmp/run_iperf_to_int.sh\nchmod 755 /tmp/run_iperf_to_int.sh\n\n# Setup iperf3.\napt-get update\napt-get install -y iperf3\n\ncat > /etc/systemd/system/iperf3.service <<EOF\n[Unit]\nDescription=iPerf 3 Server\n[Service]\nRestart=always\nTimeoutStartSec=0\nRestartSec=3\nWorkingDirectory=/tmp\nExecStart=/usr/bin/iperf3 -s -p 80\n[Install]\nWantedBy=multi-user.target\nEOF\n\nsystemctl daemon-reload\nsystemctl enable iperf3\nsystemctl start iperf3\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/gcp/update-readme.php",
    "content": "<?php\n\n$header_row = \"| Tasks | Skills | High Level Objective |\\n|-------|--------|----------------------|\";\n$rows = array();\n\nforeach (glob(\"taskset/task-*\") as $task_folder) {\n    $file_contents = file_get_contents(\"$task_folder/ReadMe.md\");\n\n    $pattern_for_objectives = '/\\*\\*High Level Objectives\\*\\*(.*?)\\*\\*Skills\\*\\*/s';\n    if (preg_match($pattern_for_objectives, $file_contents, $matches_for_objectives)) {\n        $matched_lines_between_pattern_for_objectives = explode(\"\\n\", $matches_for_objectives[1]);\n        $objectives = '';\n        foreach ($matched_lines_between_pattern_for_objectives as $line) {\n            $line = trim($line);\n            $line = str_replace('- ', '<li>', $line);\n            if (!empty($line)) {\n//                 $line = '`'.$line.'`';\n//                 $objectives .= ($objectives ? ', ' : '') . $line;\n                $objectives .= ($objectives ? '<br> ' : '') . $line;\n            }\n        }\n    } else {\n        echo \"\\nNo matches found.\";\n    }\n\n    $patter_for_skills = '/\\*\\*Skills\\*\\*(.*?)\\*\\*Version Stack\\*\\*/s';\n    if (preg_match($patter_for_skills, $file_contents, $matches_for_keywords)) {\n        $matched_lines_between_pattern_for_keywords = explode(\"\\n\", $matches_for_keywords[1]);\n        $skills = '';\n        foreach ($matched_lines_between_pattern_for_keywords as $line) {\n            $line = trim($line);\n            $line = str_replace('-', '', $line);\n            if (!empty($line)) {\n                $line = '`'.$line.'`';\n                $skills .= ($skills ? ', ' : '') . $line;\n//                 $skills .= ($skills ? '<br> ' : '') . $line;\n            }\n        }\n    } else {\n        echo \"No matches found.\";\n    }\n\n    $task_name = basename($task_folder);\n    $task_name = substr($task_name, 5, 3);\n\n    $row = \"| [$task_name]($task_folder) | $skills | $objectives |\";\n    array_push($rows, $row);\n}\n\n$table = $header_row . \"\\n\" . implode(\"\\n\", $rows);\n\necho $table;\nfile_put_contents(\"ReadMe.md\", $table);\n\n# https://github.com/nvuillam/markdown-table-formatter\n# npm install markdown-table-formatter -g\nexec('markdown-table-formatter');\n\n?>\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/oci/ReadMe-static.md",
    "content": "\n## Imp URLs\n\n[https://registry.terraform.io/](https://registry.terraform.io)"
  },
  {
    "path": "home/infrastructure_as_code/terraform/oci/ReadMe.md",
    "content": "# taskset_oci_terraform_infrastructure_as_code\n\n> [Auto](https://github.com/codeaprendiz/learn_fullstack/blob/main/home/php/intermediate/taskset_intermediate_php/task_004_createGlobalMarkdownTable/generate-readme.php) generated ReadMe. Number of tasks: 4\n\n| Task     | Description                                                                                                 |\n|----------|-------------------------------------------------------------------------------------------------------------|\n| task_000 | [task_000_initialization_setup](taskset_oci_terraform_infrastructure_as_code/task_000_initialization_setup) |\n| task_001 | [task_001_create_a_compartment](taskset_oci_terraform_infrastructure_as_code/task_001_create_a_compartment) |\n| task_002 | [task_002_create_vcn](taskset_oci_terraform_infrastructure_as_code/task_002_create_vcn)                     |\n| task_003 | [task_003_create_instance](taskset_oci_terraform_infrastructure_as_code/task_003_create_instance)           |\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/oci/taskset_oci_terraform_infrastructure_as_code/task_000_initialization_setup/00-vars.tf",
    "content": "variable \"TF_VAR_TENANCY_OCID\" {\n}\n\nvariable \"TF_VAR_USER_OCID\" {\n\n}\n\nvariable \"TF_VAR_PRIVATE_KEY_PATH\" {\n  \n}\n\nvariable \"TF_VAR_FINGERPRINT\" {\n\n}\n\nvariable \"TF_VAR_REGION\" {\n    \n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/oci/taskset_oci_terraform_infrastructure_as_code/task_000_initialization_setup/ReadMe.md",
    "content": "# Initialization Setup\n\n[Initialization](https://docs.oracle.com/en-us/iaas/developer-tutorials/tutorials/tf-provider/01-summary.htm)\n\n\n- Version\n\n```bash\n╰─ terraform -version\nTerraform v1.1.9\non darwin_arm64\n```\n\n- Create tfvars file and note it's location\n\n```bash\n╰─ cat terraform.tfvars           \nTF_VAR_TENANCY_OCID=\"****************************\"\nTF_VAR_USER_OCID=\"*****************************\"\nTF_VAR_PRIVATE_KEY_PATH=\"*****************\"\nTF_VAR_FINGERPRINT=\"******************\"\nTF_VAR_REGION=\"***************\"\n```\n\n\n\n- Terraform init, plan, apply\n\n```bash\n╰─ terraform init\n\n\n╰─ terraform plan -var-file=$OCI_TFVARS_LOCATION/terraform.tfvars\n\nNo changes. Your infrastructure matches the configuration.\n\nTerraform has compared your real infrastructure against your\nconfiguration and found no differences, so no changes are needed\n\n\n╰─ terraform apply -var-file=$OCI_TFVARS_LOCATION/terraform.tfvars\n\nNo changes. Your infrastructure matches the configuration.\n\nTerraform has compared your real infrastructure against your\nconfiguration and found no differences, so no changes are needed.\n\nApply complete! Resources: 0 added, 0 changed, 0 destroyed.\n```"
  },
  {
    "path": "home/infrastructure_as_code/terraform/oci/taskset_oci_terraform_infrastructure_as_code/task_000_initialization_setup/availability-domains.tf",
    "content": "# Source from https://registry.terraform.io/providers/hashicorp/oci/latest/docs/data-sources/identity_availability_domains\n\n# <tenancy-ocid> is the compartment OCID for the root compartment.\n# Use <tenancy-ocid> for the compartment OCID.\n\ndata \"oci_identity_availability_domains\" \"ads\" {\n  compartment_id = var.TF_VAR_TENANCY_OCID\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/oci/taskset_oci_terraform_infrastructure_as_code/task_000_initialization_setup/output.tf",
    "content": "# Output the \"list\" of all availability domains.\noutput \"all-availability-domains-in-your-tenancy\" {\n  value = data.oci_identity_availability_domains.ads.availability_domains\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/oci/taskset_oci_terraform_infrastructure_as_code/task_000_initialization_setup/provider.tf",
    "content": "provider \"oci\" {\n  tenancy_ocid = var.TF_VAR_TENANCY_OCID \n  user_ocid = var.TF_VAR_USER_OCID\n  private_key_path = var.TF_VAR_PRIVATE_KEY_PATH\n  fingerprint = var.TF_VAR_FINGERPRINT\n  region = var.TF_VAR_REGION\n}\n\nterraform {\n    required_providers {\n        oci = {\n            source  = \"oracle/oci\"\n            version = \">= 4.0.0\"\n        }\n    }\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/oci/taskset_oci_terraform_infrastructure_as_code/task_001_create_a_compartment/00-vars.tf",
    "content": "variable \"TF_VAR_TENANCY_OCID\" {\n}\n\nvariable \"TF_VAR_USER_OCID\" {\n\n}\n\nvariable \"TF_VAR_PRIVATE_KEY_PATH\" {\n  \n}\n\nvariable \"TF_VAR_FINGERPRINT\" {\n\n}\n\nvariable \"TF_VAR_REGION\" {\n    \n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/oci/taskset_oci_terraform_infrastructure_as_code/task_001_create_a_compartment/01-provider.tf",
    "content": "provider \"oci\" {\n  tenancy_ocid = var.TF_VAR_TENANCY_OCID \n  user_ocid = var.TF_VAR_USER_OCID\n  private_key_path = var.TF_VAR_PRIVATE_KEY_PATH\n  fingerprint = var.TF_VAR_FINGERPRINT\n  region = var.TF_VAR_REGION\n}\n\nterraform {\n    required_providers {\n        oci = {\n            source  = \"oracle/oci\"\n            version = \">= 4.0.0\"\n        }\n    }\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/oci/taskset_oci_terraform_infrastructure_as_code/task_001_create_a_compartment/02-compartments.tf",
    "content": "\nresource \"oci_identity_compartment\" \"tf-compartment\" {\n    # Required\n    compartment_id = var.TF_VAR_TENANCY_OCID\n    description = \"Compartment for Terraform resources.\"\n    name = \"sandbox-tf-v1\"\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/oci/taskset_oci_terraform_infrastructure_as_code/task_001_create_a_compartment/03-outputs.tf",
    "content": "# Outputs for compartment\n\noutput \"compartment-name\" {\n  value = oci_identity_compartment.tf-compartment.name\n}\n\noutput \"compartment-OCID\" {\n  value = oci_identity_compartment.tf-compartment.id\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/oci/taskset_oci_terraform_infrastructure_as_code/task_001_create_a_compartment/ReadMe.md",
    "content": "# Create a compartment\n\n[Create compartment](https://docs.oracle.com/en-us/iaas/developer-tutorials/tutorials/tf-compartment/01-summary.htm)\n\n## Key tasks include how to:\n\nUse Oracle Cloud Infrastructure Terraform provider resources to:\n- Declare a compartment with your specifics.\n- Create the compartment in your tenancy.\n\n- Plan\n\n```bash\n╰─ terraform plan -var-file=$OCI_TFVARS_LOCATION/terraform.tfvars\n\n  + create\n\nPlan: 1 to add, 0 to change, 0 to destroy.\n```\n\n- Apply\n\n```bash\n╰─ terraform apply -var-file=$OCI_TFVARS_LOCATION/terraform.tfvars\n\n  + create\n  Apply complete! Resources: 1 added, 0 changed, 0 destroyed.\n```\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/oci/taskset_oci_terraform_infrastructure_as_code/task_002_create_vcn/00-vars.tf",
    "content": "variable \"TF_VAR_TENANCY_OCID\" {\n}\n\nvariable \"TF_VAR_USER_OCID\" {\n\n}\n\nvariable \"TF_VAR_PRIVATE_KEY_PATH\" {\n  \n}\n\nvariable \"TF_VAR_FINGERPRINT\" {\n\n}\n\nvariable \"TF_VAR_REGION\" {\n    \n}\n\nvariable \"TF_VAR_COMPARTMENT_SANDBOX_TF_V1_OCI_ID\" {\n  \n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/oci/taskset_oci_terraform_infrastructure_as_code/task_002_create_vcn/01-provider.tf",
    "content": "provider \"oci\" {\n  tenancy_ocid = var.TF_VAR_TENANCY_OCID \n  user_ocid = var.TF_VAR_USER_OCID\n  private_key_path = var.TF_VAR_PRIVATE_KEY_PATH\n  fingerprint = var.TF_VAR_FINGERPRINT\n  region = var.TF_VAR_REGION\n}\n\nterraform {\n    required_providers {\n        oci = {\n            source  = \"oracle/oci\"\n            version = \">= 4.0.0\"\n        }\n    }\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/oci/taskset_oci_terraform_infrastructure_as_code/task_002_create_vcn/02-vcn-module.tf",
    "content": "# Source from https://registry.terraform.io/modules/oracle-terraform-modules/vcn/oci/\nmodule \"vcn\"{\n  source  = \"oracle-terraform-modules/vcn/oci\"\n  version = \"3.5.1\"\n  # insert the 5 required variables here\n\n  # Required Inputs\n  compartment_id = var.TF_VAR_COMPARTMENT_SANDBOX_TF_V1_OCI_ID\n  region = var.TF_VAR_REGION\n\n  internet_gateway_route_rules = null\n  local_peering_gateways = null\n  nat_gateway_route_rules = null\n\n  # Optional Inputs\n  vcn_name = \"sandbox-tf-v1-vcn\"\n  vcn_dns_label = \"sandboxvcnlabel\"\n  vcn_cidrs = [\"10.0.0.0/16\"]\n  \n  create_internet_gateway = true\n  create_nat_gateway = false\n  create_service_gateway = false  \n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/oci/taskset_oci_terraform_infrastructure_as_code/task_002_create_vcn/05-private-security-list.tf",
    "content": "# Source from https://registry.terraform.io/providers/hashicorp/oci/latest/docs/resources/core_security_list\n\nresource \"oci_core_security_list\" \"private-security-list\"{\n\n# Required\n  compartment_id = var.TF_VAR_COMPARTMENT_SANDBOX_TF_V1_OCI_ID\n  vcn_id = module.vcn.vcn_id\n\n# Optional\n  display_name = \"security-list-for-private-subnet\"\n\n  egress_security_rules {\n    stateless = false\n    destination = \"0.0.0.0/0\"\n    destination_type = \"CIDR_BLOCK\"\n    protocol = \"all\" \n  }\n\n\n \n  ingress_security_rules { \n    stateless = false\n    source = \"10.0.0.0/16\"\n    source_type = \"CIDR_BLOCK\"\n    # Get protocol numbers from https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml TCP is 6\n    protocol = \"6\"\n    tcp_options { \n        min = 22\n        max = 22\n    }\n  }\n  ingress_security_rules { \n      stateless = false\n      source = \"0.0.0.0/0\"\n      source_type = \"CIDR_BLOCK\"\n      # Get protocol numbers from https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml ICMP is 1  \n      protocol = \"1\"\n\n      # For ICMP type and code see: https://www.iana.org/assignments/icmp-parameters/icmp-parameters.xhtml\n      icmp_options {\n        type = 3\n        code = 4\n      } \n  }   \n  \n  ingress_security_rules { \n      stateless = false\n      source = \"10.0.0.0/16\"\n      source_type = \"CIDR_BLOCK\"\n      # Get protocol numbers from https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml ICMP is 1  \n      protocol = \"1\"\n  \n      # For ICMP type and code see: https://www.iana.org/assignments/icmp-parameters/icmp-parameters.xhtml\n      icmp_options {\n        type = 3\n      } \n  }\n  \n}\n  \n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/oci/taskset_oci_terraform_infrastructure_as_code/task_002_create_vcn/06-public-security-list.tf",
    "content": "# Source from https://registry.terraform.io/providers/hashicorp/oci/latest/docs/resources/core_security_list\n\nresource \"oci_core_security_list\" \"public-security-list\"{\n\n# Required\n  compartment_id = var.TF_VAR_COMPARTMENT_SANDBOX_TF_V1_OCI_ID\n  vcn_id = module.vcn.vcn_id\n\n# Optional\n  display_name = \"security-list-for-public-subnet\"\n\n  \n  egress_security_rules {\n      stateless = false\n      destination = \"0.0.0.0/0\"\n      destination_type = \"CIDR_BLOCK\"\n      protocol = \"all\" \n  }\n\n\n \ningress_security_rules { \n      stateless = false\n      source = \"0.0.0.0/0\"\n      source_type = \"CIDR_BLOCK\"\n      # Get protocol numbers from https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml TCP is 6\n      protocol = \"6\"\n      tcp_options { \n          min = 22\n          max = 22\n      }\n    }\n  ingress_security_rules { \n      stateless = false\n      source = \"0.0.0.0/0\"\n      source_type = \"CIDR_BLOCK\"\n      # Get protocol numbers from https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml ICMP is 1  \n      protocol = \"1\"\n  \n      # For ICMP type and code see: https://www.iana.org/assignments/icmp-parameters/icmp-parameters.xhtml\n      icmp_options {\n        type = 3\n        code = 4\n      } \n    }   \n  \n  ingress_security_rules { \n      stateless = false\n      source = \"10.0.0.0/16\"\n      source_type = \"CIDR_BLOCK\"\n      # Get protocol numbers from https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml ICMP is 1  \n      protocol = \"1\"\n  \n      # For ICMP type and code see: https://www.iana.org/assignments/icmp-parameters/icmp-parameters.xhtml\n      icmp_options {\n        type = 3\n      } \n    }\n  \n}\n  \n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/oci/taskset_oci_terraform_infrastructure_as_code/task_002_create_vcn/08-private-subnet.tf",
    "content": "# Source from https://registry.terraform.io/providers/hashicorp/oci/latest/docs/resources/core_subnet\n\nresource \"oci_core_subnet\" \"vcn-private-subnet\"{\n\n  # Required\n  compartment_id = var.TF_VAR_COMPARTMENT_SANDBOX_TF_V1_OCI_ID\n  vcn_id = module.vcn.vcn_id\n  cidr_block = \"10.0.1.0/24\"\n \n  # Optional\n  # Caution: For the route table id, use module.vcn.nat_route_id.\n  # Do not use module.vcn.nat_gateway_id, because it is the OCID for the gateway and not the route table.\n  route_table_id = module.vcn.nat_route_id\n  security_list_ids = [oci_core_security_list.private-security-list.id]\n  display_name = \"private-subnet\"\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/oci/taskset_oci_terraform_infrastructure_as_code/task_002_create_vcn/09-public-subnet.tf",
    "content": "# Source from https://registry.terraform.io/providers/hashicorp/oci/latest/docs/resources/core_subnet\n\nresource \"oci_core_subnet\" \"vcn-public-subnet\"{\n\n  # Required\n  compartment_id = var.TF_VAR_COMPARTMENT_SANDBOX_TF_V1_OCI_ID\n  vcn_id = module.vcn.vcn_id\n  cidr_block = \"10.0.0.0/24\"\n \n  # Optional\n  route_table_id = module.vcn.ig_route_id\n  security_list_ids = [oci_core_security_list.public-security-list.id]\n  display_name = \"public-subnet\"\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/oci/taskset_oci_terraform_infrastructure_as_code/task_002_create_vcn/10-outputs.tf",
    "content": "# Outputs for the vcn module\n\noutput \"vcn_id\" {\n  description = \"OCID of the VCN that is created\"\n  value = module.vcn.vcn_id\n}\noutput \"id-for-route-table-that-includes-the-internet-gateway\" {\n  description = \"OCID of the internet-route table. This route table has an internet gateway to be used for public subnets\"\n  value = module.vcn.ig_route_id\n}\n# output \"nat-gateway-id\" {\n#   description = \"OCID for NAT gateway\"\n#   value = module.vcn.nat_gateway_id\n# }\n# output \"id-for-for-route-table-that-includes-the-nat-gateway\" {\n#   description = \"OCID of the nat-route table - This route table has a nat gateway to be used for private subnets. This route table also has a service gateway.\"\n#   value = module.vcn.nat_route_id\n# }\n\n\n\n# Outputs for private security list\n\noutput \"private-security-list-name\" {\n  value = oci_core_security_list.private-security-list.display_name\n}\noutput \"private-security-list-OCID\" {\n  value = oci_core_security_list.private-security-list.id\n}\n\n\n\n# Outputs for public security list\n\noutput \"public-security-list-name\" {\n  value = oci_core_security_list.public-security-list.display_name\n}\noutput \"public-security-list-OCID\" {\n  value = oci_core_security_list.public-security-list.id\n}\n\n\n\n# Outputs for private subnet\n\noutput \"private-subnet-name\" {\n  value = oci_core_subnet.vcn-private-subnet.display_name\n}\noutput \"private-subnet-OCID\" {\n  value = oci_core_subnet.vcn-private-subnet.id\n}\n\n\n\n# Outputs for public subnet\n\noutput \"public-subnet-name\" {\n  value = oci_core_subnet.vcn-public-subnet.display_name\n}\noutput \"public-subnet-OCID\" {\n  value = oci_core_subnet.vcn-public-subnet.id\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/oci/taskset_oci_terraform_infrastructure_as_code/task_002_create_vcn/ReadMe.md",
    "content": "# Terraform: Create a Virtual Cloud Network\n\n[Create a Virtual Cloud Network](https://docs.oracle.com/en-us/iaas/developer-tutorials/tutorials/tf-vcn/01-summary.htm)\n\n## Key tasks include how to:\n\n- Set up a basic virtual cloud network.\n- Define and add the following resources to the network:\n  - Security lists\n  - Private and public subnets\n\n\nBrowse module\n\n- [oracle-terraform-modules/vcn/oci/3.5.1](https://registry.terraform.io/modules/oracle-terraform-modules/vcn/oci/3.5.1)\n\n```bash\n╰─ terraform apply -var-file=$OCI_TFVARS_LOCATION/terraform.tfvars\n```"
  },
  {
    "path": "home/infrastructure_as_code/terraform/oci/taskset_oci_terraform_infrastructure_as_code/task_003_create_instance/00-vars.tf",
    "content": "variable \"TF_VAR_TENANCY_OCID\" {\n}\n\nvariable \"TF_VAR_USER_OCID\" {\n\n}\n\nvariable \"TF_VAR_PRIVATE_KEY_PATH\" {\n  \n}\n\nvariable \"TF_VAR_FINGERPRINT\" {\n\n}\n\nvariable \"TF_VAR_REGION\" {\n    \n}\n\nvariable \"VAR_UBUNTU_SHAPE\" {\n    default = \"VM.Standard2.1\"\n}\n\nvariable \"TF_VAR_UBUNTU_MUMBAI_SOURCE_OCI_ID\" {\n  \n}\n\nvariable \"TF_VAR_COMPARTMENT_SANDBOX_TF_V1_OCI_ID\" {\n  \n}\n\nvariable \"VAR_INSTANCE_DISPLAY_NAME\" {\n  default = \"sandbox-tf-v1-instance\"\n}\n\n\nvariable \"TF_VAR_COMPARTMENT_SANDBOX_TF_V1_PUBLIC_SUBNET_OCI_ID\" {\n  \n}\n\nvariable \"TF_VAR_SSH_PUBLIC_KEY_PATH\" {\n  \n}\n\nvariable \"TF_VAR_SSH_PRIVATE_KEY_PATH\" {\n  \n}\n\nvariable \"TF_VAR_COMPARTMENT_SANDBOX_TF_V1_NAME\" {\n  \n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/oci/taskset_oci_terraform_infrastructure_as_code/task_003_create_instance/01-provider.tf",
    "content": "provider \"oci\" {\n  tenancy_ocid = var.TF_VAR_TENANCY_OCID \n  user_ocid = var.TF_VAR_USER_OCID\n  private_key_path = var.TF_VAR_PRIVATE_KEY_PATH\n  fingerprint = var.TF_VAR_FINGERPRINT\n  region = var.TF_VAR_REGION\n}\n\nterraform {\n    required_providers {\n        oci = {\n            source  = \"oracle/oci\"\n            version = \">= 4.0.0\"\n        }\n    }\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/oci/taskset_oci_terraform_infrastructure_as_code/task_003_create_instance/02-compartments.tf",
    "content": "\nresource \"oci_identity_compartment\" \"tf-compartment\" {\n    # Required\n    compartment_id = var.TF_VAR_TENANCY_OCID\n    description = \"Compartment for Terraform resources.\"\n    name = \"sandbox-tf-v1\"\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/oci/taskset_oci_terraform_infrastructure_as_code/task_003_create_instance/03-outputs.tf",
    "content": "\n# The \"name\" of the availability domain to be used for the compute instance.\noutput \"name-of-first-availability-domain\" {\n  value = data.oci_identity_availability_domains.ads.availability_domains[0].name\n}\n\n# Outputs for compartment\n\noutput \"compartment-name\" {\n  value = oci_identity_compartment.tf-compartment.name\n}\n\noutput \"compartment-OCID\" {\n  value = oci_identity_compartment.tf-compartment.id\n}\n\n\n\n# Outputs for compute instance\n\noutput \"public-ip-for-compute-instance\" {\n  value = oci_core_instance.ubuntu_instance.public_ip\n}\n\n\noutput \"instance-name\" {\n  value = oci_core_instance.ubuntu_instance.display_name\n}\n\noutput \"instance-OCID\" {\n  value = oci_core_instance.ubuntu_instance.id\n}\n\noutput \"instance-region\" {\n  value = oci_core_instance.ubuntu_instance.region\n}\n\noutput \"instance-shape\" {\n  value = oci_core_instance.ubuntu_instance.shape\n}\n\noutput \"instance-state\" {\n  value = oci_core_instance.ubuntu_instance.state\n}\n\noutput \"instance-OCPUs\" {\n  value = oci_core_instance.ubuntu_instance.shape_config[0].ocpus\n}\n\noutput \"instance-memory-in-GBs\" {\n  value = oci_core_instance.ubuntu_instance.shape_config[0].memory_in_gbs\n}\n\noutput \"time-created\" {\n  value = oci_core_instance.ubuntu_instance.time_created\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/oci/taskset_oci_terraform_infrastructure_as_code/task_003_create_instance/04-compute.tf",
    "content": "\n\nresource \"oci_core_instance\" \"ubuntu_instance\" {\n    # Required\n    availability_domain = data.oci_identity_availability_domains.ads.availability_domains[0].name\n    compartment_id = var.TF_VAR_COMPARTMENT_SANDBOX_TF_V1_OCI_ID\n    shape = var.VAR_UBUNTU_SHAPE\n    source_details {\n        source_id = var.TF_VAR_UBUNTU_MUMBAI_SOURCE_OCI_ID\n        source_type = \"image\"\n    }\n\n    # Optional\n    display_name = var.VAR_INSTANCE_DISPLAY_NAME\n    create_vnic_details {\n        assign_public_ip = true\n        subnet_id = var.TF_VAR_COMPARTMENT_SANDBOX_TF_V1_PUBLIC_SUBNET_OCI_ID\n    }\n    metadata = {\n        ssh_authorized_keys = file(var.TF_VAR_SSH_PUBLIC_KEY_PATH)\n    } \n    preserve_boot_volume = false\n}"
  },
  {
    "path": "home/infrastructure_as_code/terraform/oci/taskset_oci_terraform_infrastructure_as_code/task_003_create_instance/ReadMe.md",
    "content": "# Initialization Setup\n\n# Terraform: Create a Compute Instance\n\n[developer-tutorials/tutorials/tf-compute](https://docs.oracle.com/en-us/iaas/developer-tutorials/tutorials/tf-compute/01-summary.htm)\n\n## Key tasks include how to:\n\n- Create SSH keys.\n- Create a virtual cloud network in your tenancy.\n- Use Oracle Cloud Infrastructure Terraform provider to create a compute instance in the network.\n- Connect to your instance.\n\n\n### Begin\n\n- Create SSH Key\n\n```bash\n╰─ ssh-keygen -t rsa -N \"\" -b 2048 -C oci-inst-pem -f oci-inst-pem.pem\n```\n\n- Terraform Apply\n\n```bash\n╰─ terraform apply -var-file=$OCI_TFVARS_LOCATION/terraform.tfvars\n.\n.\nApply complete! Resources: 1 added, 0 changed, 0 destroyed.\n\nOutputs:\n\ncompartment-OCID = \"**************************\"\ncompartment-name = \"sandbox-tf-v1\"\ninstance-OCID = \"******************\"\ninstance-OCPUs = 1\ninstance-memory-in-GBs = 15\ninstance-name = \"sandbox-tf-v1-instance\"\ninstance-region = \"****************\"\ninstance-shape = \"VM.Standard2.1\"\ninstance-state = \"RUNNING\"\nname-of-first-availability-domain = \"tRhx:*********-1-AD-1\"\npublic-ip-for-compute-instance = \"129.154.224.71\"\ntime-created = \"2022-09-13 16:36:08.169 +0000 UTC\"\n```\n\n\n- SSH into the instance\n\n```bash\n╰─ ssh -i oci-inst-pem.pem ubuntu@129.154.224.71                      \n.\n.\nubuntu@sandbox-tf-v1-instance:~$ \n```\n\n\n- Following are some of the screenshots\n\n- Instance\n\n![](.images/instance.png)\n\n\n- VCN\n  \n![](.images/vcn.png)\n\n\n- Network Visvualizer\n  \n![](.images/network-vis.png)\n\n\n- Subnets\n\n![](.images/subnets.png)\n\n\n- Security List of Public Subnet\n\n![](.images/sl-of-public-subnet.png)\n\n![](.images/ingress.png)\n\n![](.images/egress.png)\n\n- Security list of private subnet\n\n\n![](.images/sl-of-private-subnet.png)\n\n- Route Tables\n\n![](.images/route-tables.png)\n\n![](.images/internet.png)\n\n![](.images/default.png)\n\n\n\n"
  },
  {
    "path": "home/infrastructure_as_code/terraform/oci/taskset_oci_terraform_infrastructure_as_code/task_003_create_instance/availability-domains.tf",
    "content": "# Source from https://registry.terraform.io/providers/hashicorp/oci/latest/docs/data-sources/identity_availability_domains\n\n# <tenancy-ocid> is the compartment OCID for the root compartment.\n# Use <tenancy-ocid> for the compartment OCID.\n\ndata \"oci_identity_availability_domains\" \"ads\" {\n  compartment_id = var.TF_VAR_TENANCY_OCID\n}"
  },
  {
    "path": "home/interview/ReadMe-static.md",
    "content": "# Interview\n\n## Website Links\n\n- [interviewquestionsgpt.com](https://interviewquestionsgpt.com)"
  },
  {
    "path": "home/interview/ReadMe.md",
    "content": "### Coding Tasks\n\nS.No | Stack Used                                                          | Tasks Details\n-----|---------------------------------------------------------------------|-----------------------------------------------------------------\n1    | [Nodejs Docker](task-001-nodejs-docker-app)                         | Starting a Nodejs App using docker\n2    | [Nodejs and Docker-Mongo](task-002-nodejs-mongo-docker)             | To build Nodejs App which can connect to docker-mongo locally\n3    | [Nodejs Mongo Docker-Compose](task-003-nodejs-mongo-docker-compose) | To build NodeJs App with MongoDB and deploy using docker-compose\n4    | [Nodejs Mongo Kubernetes](task-004-nodejs-mongo-k8s)                | To build Nodejs App with MongoDB and deploy using Kubernetes\n5    | [Nodejs Mongo Kubernetes Helm Autoscale](task-005-nodejs-mongo-k8s-helm-scale) | To build Nodejs App with MongoDB and deploy using Kubernetes and Helm Charts | \n6    | [Nginx Kubernetes Docker](task-006-nginx-docker)                               | Create required docker image of nginx and test k8s pod locally               |\n7    | [Terraform AWS-EKS](task-007-eks-on-demand)                                    | Creating EKS cluster using on demand instances                               |\n8    | [Kubernetes Nginx](task-008-k8s-nginx)                                         | K8S Nginx                                                                    | \n9    | [Terraform AWS-EKS Spot And OneDemand](task-009-eks-spot-and-on-demand)        | Creating EKS cluster using on demand and spot instances                      | \n10   | [AWS-EKS Datadog Helm Kubernetes Nginx](task-010-logging-and-monitoring) | Logging And Monitoring                                                       |"
  },
  {
    "path": "home/interview/coding_assignments/ReadMe.md",
    "content": "# taskset_coding_assignments_interview\n\n> [Auto](https://github.com/codeaprendiz/learn_fullstack/blob/main/home/php/intermediate/taskset_intermediate_php/task_004_createGlobalMarkdownTable/generate-readme.php) generated ReadMe. Number of tasks: 10\n\n| Task     | Description                                                                                                       |\n|----------|-------------------------------------------------------------------------------------------------------------------|\n| task_001 | [task_001_nodejs_docker_app](taskset_coding_assignments_interview/task_001_nodejs_docker_app)                     |\n| task_002 | [task_002_nodejs_mongo_docker](taskset_coding_assignments_interview/task_002_nodejs_mongo_docker)                 |\n| task_003 | [task_003_nodejs_mongo_docker_compose](taskset_coding_assignments_interview/task_003_nodejs_mongo_docker_compose) |\n| task_004 | [task_004_nodejs_mongo_k8s](taskset_coding_assignments_interview/task_004_nodejs_mongo_k8s)                       |\n| task_005 | [task_005_nodejs_mongo_k8s_helm_scale](taskset_coding_assignments_interview/task_005_nodejs_mongo_k8s_helm_scale) |\n| task_006 | [task_006_nginx_docker](taskset_coding_assignments_interview/task_006_nginx_docker)                               |\n| task_007 | [task_007_eks_on_demand](taskset_coding_assignments_interview/task_007_eks_on_demand)                             |\n| task_008 | [task_008_k8s_nginx](taskset_coding_assignments_interview/task_008_k8s_nginx)                                     |\n| task_009 | [task_009_eks_spot_and_on_demand](taskset_coding_assignments_interview/task_009_eks_spot_and_on_demand)           |\n| task_010 | [task_010_logging_and_monitoring](taskset_coding_assignments_interview/task_010_logging_and_monitoring)           |\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/ReadMe.md",
    "content": "## taskset_coding_assignments_interview\n\n| Task     | Description                                                                  |\n|----------|------------------------------------------------------------------------------|\n| task_001 | [task_001_nodejs_docker_app](task_001_nodejs_docker_app)                     |\n| task_002 | [task_002_nodejs_mongo_docker](task_002_nodejs_mongo_docker)                 |\n| task_003 | [task_003_nodejs_mongo_docker_compose](task_003_nodejs_mongo_docker_compose) |\n| task_004 | [task_004_nodejs_mongo_k8s](task_004_nodejs_mongo_k8s)                       |\n| task_005 | [task_005_nodejs_mongo_k8s_helm_scale](task_005_nodejs_mongo_k8s_helm_scale) |\n| task_006 | [task_006_nginx_docker](task_006_nginx_docker)                               |\n| task_007 | [task_007_eks_on_demand](task_007_eks_on_demand)                             |\n| task_008 | [task_008_k8s_nginx](task_008_k8s_nginx)                                     |\n| task_009 | [task_009_eks_spot_and_on_demand](task_009_eks_spot_and_on_demand)           |\n| task_010 | [task_010_logging_and_monitoring](task_010_logging_and_monitoring)           |\n\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_001_nodejs_docker_app/ReadMe.md",
    "content": "\n### Build a Node.js Application with Docker\n\n[Docs](https://www.digitalocean.com/community/tutorials/how-to-build-a-node-js-application-with-docker)\n\n- Check the versions\n\n```bash\n$ npm --version\n7.5.0\n\n$ node --version\nv15.8.0\n```\n\n\n- Create required dirs\n\n```bash\n$ mkdir node_project\n$ cd node_project\n```\n\n- Install the dependencies\n\n```bash\n$ npm install                        \n\nadded 50 packages, and audited 51 packages in 4s\n\nfound 0 vulnerabilities\n```\n\n\n- Run the app using\n\n```bash\n$ node app.js\nExample app listening on port 8080!\n/GET\n/GET\n/GET\n/GET\n^C\n```\n\n\n- Create Docker file\n\n```bash\ntouch Dockerfile\ntouch .dockerignore\n```\n\n- Build the dockerfile\n\n```bash\n$ docker build -t codeaprendiz/nodejs-image-demo .\n$ docker build -t codeaprendiz/nodejs-image-demo .\nSending build context to Docker daemon  46.59kB\nStep 1/9 : FROM node:10-alpine\n ---> 3ac6f53a4041\nStep 2/9 : RUN mkdir -p /home/node/app/node_modules && chown -R node:node /home/node/app\n ---> Running in a5d9c5f2163e\nRemoving intermediate container a5d9c5f2163e\n ---> 619cfbdb3074\nStep 3/9 : WORKDIR /home/node/app\n ---> Running in de1346ff4728\nRemoving intermediate container de1346ff4728\n ---> 8844ddc9732d\nStep 4/9 : COPY package*.json ./\n ---> 23eec42f9175\nStep 5/9 : USER node\n ---> Running in f2ec865dc42f\nRemoving intermediate container f2ec865dc42f\n ---> 2c83bf0aca18\nStep 6/9 : RUN npm install\n ---> Running in 93a7b6e8cf88\nnpm WARN read-shrinkwrap This version of npm is compatible with lockfileVersion@1, but package-lock.json was generated for lockfileVersion@2. I'll try to do my best with it!\nnpm WARN nodejs-image-demo@1.0.0 No repository field.\n\nadded 50 packages from 37 contributors and audited 50 packages in 2.046s\nfound 0 vulnerabilities\n\nRemoving intermediate container 93a7b6e8cf88\n ---> 81316b37fd6a\nStep 7/9 : COPY --chown=node:node . .\n ---> a44fcf015b61\nStep 8/9 : EXPOSE 8080\n ---> Running in 03e07b6e3971\nRemoving intermediate container 03e07b6e3971\n ---> ee7122769051\nStep 9/9 : CMD [ \"node\", \"app.js\" ]\n ---> Running in fdea219aeebc\nRemoving intermediate container fdea219aeebc\n ---> f681017dfcdf\nSuccessfully built f681017dfcdf\nSuccessfully tagged codeaprendiz/nodejs-image-demo:latest\n```\n\n- check the image built\n\n```bash\n$ docker images | grep codeaprendiz\ncodeaprendiz/nodejs-image-demo                  latest                                                  f681017dfcdf   2 minutes ago   85.9MB\n```\n\n- create a container with the image\n\n```bash\n$ docker run --name nodejs-image-demo -p 8080:8080 -d codeaprendiz/nodejs-image-demo\na28285829e5d0c7f9d838af40ba06575ef3950846e7426b4ca2536157864e927\n\n$ docker ps | grep nodejs-image\na28285829e5d   codeaprendiz/nodejs-image-demo   \"docker-entrypoint.s…\"   31 seconds ago   Up 30 seconds   0.0.0.0:80->8080/tcp   nodejs-image-demo\n```\n\n- Check if the application is up\n\n```bash\n$ curl --write-out '%{http_code}' --silent --output /dev/null http://localhost:80                                                                                              \n200\n```\n\n- Login to you dockerhub\n\n```bash\n$ docker login -u codeaprendiz                                                    \nPassword: \nLogin Succeeded\n```\n\n- Push the image to dockerhub\n\n```bash\n$ docker push codeaprendiz/nodejs-image-demo                          \n```\n\n\n- Images\n\n  - Home page\n![](.images/home_page.png)\n\n  - Info page\n\n![](.images/info_page.png)\n\n\n\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_001_nodejs_docker_app/node_project/.dockerignore",
    "content": "node_modules\nnpm-debug.log\nDockerfile\n.dockerignore"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_001_nodejs_docker_app/node_project/Dockerfile",
    "content": "FROM node:10-alpine\n\nRUN mkdir -p /home/node/app/node_modules && chown -R node:node /home/node/app\n\nWORKDIR /home/node/app\n\nCOPY package*.json ./\n\nUSER node\n\nRUN npm install\n\nCOPY --chown=node:node . .\n\nEXPOSE 8080\n\nCMD [ \"node\", \"app.js\" ]"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_001_nodejs_docker_app/node_project/app.js",
    "content": "const express = require('express');\nconst app = express();\nconst router = express.Router();\n\nconst path = __dirname + '/views/';\nconst port = 8080;\n\nrouter.use(function (req,res,next) {\n    console.log('/' + req.method);\n    next();\n});\n\nrouter.get('/', function(req,res){\n    res.sendFile(path + 'index.html');\n});\n\nrouter.get('/sharks', function(req,res){\n    res.sendFile(path + 'sharks.html');\n});\n\napp.use(express.static(path));\napp.use('/', router);\n\napp.listen(port, function () {\n    console.log('Example app listening on port 8080!')\n})"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_001_nodejs_docker_app/node_project/package.json",
    "content": "{\n  \"name\": \"nodejs-image-demo\",\n  \"version\": \"1.0.0\",\n  \"description\": \"nodejs image demo\",\n  \"author\": \"Sammy the Shark <sammy@example.com>\",\n  \"license\": \"MIT\",\n  \"main\": \"app.js\",\n  \"keywords\": [\n    \"nodejs\",\n    \"bootstrap\",\n    \"express\"\n  ],\n  \"dependencies\": {\n    \"express\": \"^4.16.4\"\n  }\n}\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_001_nodejs_docker_app/node_project/views/css/styles.css",
    "content": ".navbar {\n    margin-bottom: 0;\n}\n\nbody {\n    background: #020A1B;\n    color: #ffffff;\n    font-family: 'Merriweather', sans-serif;\n}\n\nh1,\nh2 {\n    font-weight: bold;\n}\n\np {\n    font-size: 16px;\n    color: #ffffff;\n}\n\n.jumbotron {\n    background: #0048CD;\n    color: white;\n    text-align: center;\n}\n\n.jumbotron p {\n    color: white;\n    font-size: 26px;\n}\n\n.btn-primary {\n    color: #fff;\n    text-color: #000000;\n    border-color: white;\n    margin-bottom: 5px;\n}\n\nimg,\nvideo,\naudio {\n    margin-top: 20px;\n    max-width: 80%;\n}\n\ndiv.caption {\n    float: left;\n    clear: both;\n}"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_001_nodejs_docker_app/node_project/views/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <title>About Sharks</title>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n    <link rel=\"stylesheet\" href=\"https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css\" integrity=\"sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO\" crossorigin=\"anonymous\">\n    <link href=\"css/styles.css\" rel=\"stylesheet\">\n    <link href=\"https://fonts.googleapis.com/css?family=Merriweather:400,700\" rel=\"stylesheet\" type=\"text/css\">\n</head>\n\n<body>\n<nav class=\"navbar navbar-dark bg-dark navbar-static-top navbar-expand-md\">\n    <div class=\"container\">\n        <button type=\"button\" class=\"navbar-toggler collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\" aria-expanded=\"false\"> <span class=\"sr-only\">Toggle navigation</span>\n        </button> <a class=\"navbar-brand\" href=\"#\">Everything Sharks</a>\n        <div class=\"collapse navbar-collapse\" id=\"bs-example-navbar-collapse-1\">\n            <ul class=\"nav navbar-nav mr-auto\">\n                <li class=\"active nav-item\"><a href=\"/\" class=\"nav-link\">Home</a>\n                </li>\n                <li class=\"nav-item\"><a href=\"/sharks\" class=\"nav-link\">Sharks</a>\n                </li>\n            </ul>\n        </div>\n    </div>\n</nav>\n<div class=\"jumbotron\">\n    <div class=\"container\">\n        <h1>Want to Learn About Sharks?</h1>\n        <p>Are you ready to learn about sharks?</p>\n        <br>\n        <p><a class=\"btn btn-primary btn-lg\" href=\"/sharks\" role=\"button\">Get Shark Info</a>\n        </p>\n    </div>\n</div>\n<div class=\"container\">\n    <div class=\"row\">\n        <div class=\"col-lg-6\">\n            <h3>Not all sharks are alike</h3>\n            <p>Though some are dangerous, sharks generally do not attack humans. Out of the 500 species known to researchers, only 30 have been known to attack humans.\n            </p>\n        </div>\n        <div class=\"col-lg-6\">\n            <h3>Sharks are ancient</h3>\n            <p>There is evidence to suggest that sharks lived up to 400 million years ago.\n            </p>\n        </div>\n    </div>\n</div>\n</body>\n\n</html>"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_001_nodejs_docker_app/node_project/views/sharks.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <title>About Sharks</title>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n    <link rel=\"stylesheet\" href=\"https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css\" integrity=\"sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO\" crossorigin=\"anonymous\">\n    <link href=\"css/styles.css\" rel=\"stylesheet\">\n    <link href=\"https://fonts.googleapis.com/css?family=Merriweather:400,700\" rel=\"stylesheet\" type=\"text/css\">\n</head>\n<nav class=\"navbar navbar-dark bg-dark navbar-static-top navbar-expand-md\">\n    <div class=\"container\">\n        <button type=\"button\" class=\"navbar-toggler collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\" aria-expanded=\"false\"> <span class=\"sr-only\">Toggle navigation</span>\n        </button> <a class=\"navbar-brand\" href=\"/\">Everything Sharks</a>\n        <div class=\"collapse navbar-collapse\" id=\"bs-example-navbar-collapse-1\">\n            <ul class=\"nav navbar-nav mr-auto\">\n                <li class=\"nav-item\"><a href=\"/\" class=\"nav-link\">Home</a>\n                </li>\n                <li class=\"active nav-item\"><a href=\"/sharks\" class=\"nav-link\">Sharks</a>\n                </li>\n            </ul>\n        </div>\n    </div>\n</nav>\n<div class=\"jumbotron text-center\">\n    <h1>Shark Info</h1>\n</div>\n<div class=\"container\">\n    <div class=\"row\">\n        <div class=\"col-lg-6\">\n            <p>\n            <div class=\"caption\">Some sharks are known to be dangerous to humans, though many more are not. The sawshark, for example, is not considered a threat to humans.\n            </div>\n            <img src=\"https://assets.digitalocean.com/articles/docker_node_image/sawshark.jpg\" alt=\"Sawshark\">\n            </p>\n        </div>\n        <div class=\"col-lg-6\">\n            <p>\n            <div class=\"caption\">Other sharks are known to be friendly and welcoming!</div>\n            <img src=\"https://assets.digitalocean.com/articles/docker_node_image/sammy.png\" alt=\"Sammy the Shark\">\n            </p>\n        </div>\n    </div>\n</div>\n\n</html>"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_002_nodejs_mongo_docker/ReadMe.md",
    "content": "\n### To create a nodejs app which can connect to docker-mongo locally\n\n[docs](https://www.digitalocean.com/community/tutorials/how-to-integrate-mongodb-with-your-node-application)\n\n- Start docker-mongo on your local\n\n```bash\n$ docker run -d --name mongo-on-docker -p 27888:27017 -e MONGO_INITDB_ROOT_USERNAME=mongoadmin -e MONGO_INITDB_ROOT_PASSWORD=secret mongo\n19f594ceb71a6518c98e172f0ab38e45d5c330e99bc5b615b91f08e74587c196\n```\n\n- Check if its running\n\n```bash\n$ docker ps | egrep -v \"k8s\"                                                                                                             \nCONTAINER ID   IMAGE                            COMMAND                  CREATED              STATUS              PORTS                      NAMES\n19f594ceb71a   mongo                            \"docker-entrypoint.s…\"   About a minute ago   Up About a minute   0.0.0.0:27888->27017/tcp   mongo-on-docker\n```\n\n- Connect to mongo and run the following\n\n> NOTE: Use after creation is unable to update database. So we have used admin user itself in database connection. Feel free to raise PR if you figure out the issue.\n\n```bash\n$ mongo --username mongoadmin --password  secret --host localhost --port 27888\n> use admin\nswitched to db admin\n>\n> > db.createUser(\n  ...   {\n  ...     user: \"sammy\",\n  ...     pwd: \"your_password\",\n  ...     roles: [ { role: \"userAdminAnyDatabase\", db: \"admin\" } ]\n  ...   }\n  ... )\n  Successfully added user: {\n          \"user\" : \"sammy\",\n          \"roles\" : [\n                  {\n                          \"role\" : \"userAdminAnyDatabase\",\n                          \"db\" : \"admin\"\n                  }\n          ]\n  }\n> exit\nbye\n```\n\n- Let's add mongoose package\n\n```bash\n$ cd node_project                \n$ npm install mongoose\nadded 31 packages, and audited 82 packages in 5s\nfound 0 vulnerabilities\n```\n\n\n- Create models\n\n```bash\n$ mkdir models\n$ touch models/sharks.js    \n```\n\n- Create controllers\n\n```bash\n$ mkdir controllers\n$ controllers/sharks.js\n```\n\n- Using EJS and Express Middleware to Collect and Render Data\n\n- Install EJS module first\n\n```bash\n$ npm install ejs\n```\n\n- Create routes\n\n```bash\n$ mkdir routes\n```\n\n\n- Running the application\n\n```bash\n$ node app.js\n(node:48367) Warning: Accessing non-existent property 'count' of module exports inside circular dependency\n(Use `node --trace-warnings ...` to show where the warning was created)\n(node:48367) Warning: Accessing non-existent property 'findOne' of module exports inside circular dependency\n(node:48367) Warning: Accessing non-existent property 'remove' of module exports inside circular dependency\n(node:48367) Warning: Accessing non-existent property 'updateOne' of module exports inside circular dependency\nExample app listening on port 8080!\n{ name: 'Ankit', character: 'Light Yagami' }\n\n```\n\n- Add shark screen\n\n![](.images/add-shark-screen.png)\n\n- After adding shark\n\n![](.images/after-adding-shark.png)"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_002_nodejs_mongo_docker/node_project/.dockerignore",
    "content": "node_modules\nnpm-debug.log\nDockerfile\n.dockerignore\n.git\nREADME.md\n.gitignore\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_002_nodejs_mongo_docker/node_project/.gitignore",
    "content": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\n# Runtime data\npids\n*.pid\n*.seed\n*.pid.lock\n\n# Directory for instrumented libs generated by jscoverage/JSCover\nlib-cov\n\n# Coverage directory used by tools like istanbul\ncoverage\n\n# nyc test coverage\n.nyc_output\n\n# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)\n.grunt\n\n# Bower dependency directory (https://bower.io/)\nbower_components\n\n# node-waf configuration\n.lock-wscript\n\n# Compiled binary addons (https://nodejs.org/api/addons.html)\nbuild/Release\n\n# Dependency directories\nnode_modules/\njspm_packages/\n\n# TypeScript v1 declaration files\ntypings/\n\n# Optional npm cache directory\n.npm\n\n# Optional eslint cache\n.eslintcache\n\n# Optional REPL history\n.node_repl_history\n\n# Output of 'npm pack'\n*.tgz\n\n# Yarn Integrity file\n.yarn-integrity\n\n# dotenv environment variables file\n.env\n\n# parcel-bundler cache (https://parceljs.org/)\n.cache\n\n# next.js build output\n.next\n\n# nuxt.js build output\n.nuxt\n\n# vuepress build output\n.vuepress/dist\n\n# Serverless directories\n.serverless/\n\n# FuseBox cache\n.fusebox/\n\n#DynamoDB Local files \n.dynamodb/ \n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_002_nodejs_mongo_docker/node_project/Dockerfile",
    "content": "FROM node:10-alpine\n\nRUN mkdir -p /home/node/app/node_modules && chown -R node:node /home/node/app\n\nWORKDIR /home/node/app\n\nCOPY package*.json ./\n\nUSER node\n\nRUN npm install\n\nCOPY --chown=node:node . .\n\nEXPOSE 8080\n\nCMD [ \"node\", \"app.js\" ]\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_002_nodejs_mongo_docker/node_project/app.js",
    "content": "const express = require('express');\nconst app = express();\nconst router = express.Router();\nconst db = require('./db');\nconst sharks = require('./routes/sharks');\n\nconst path = __dirname + '/views/';\nconst port = 8080;\n\napp.engine('html', require('ejs').renderFile);\napp.set('view engine', 'html');\napp.use(express.urlencoded({ extended: true }));\napp.use(express.static(path));\napp.use('/sharks', sharks);\n\napp.listen(port, function () {\n  console.log('Example app listening on port 8080!')\n})\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_002_nodejs_mongo_docker/node_project/controllers/sharks.js",
    "content": "const path = require('path');\nconst Shark = require('../models/sharks');\n\nexports.index = function (req, res) {\n    res.sendFile(path.resolve('views/sharks.html'));\n};\n\nexports.create = function (req, res) {\n    var newShark = new Shark(req.body);\n    console.log(req.body);\n    newShark.save(function (err) {\n            if(err) {\n            res.status(400).send('Unable to save shark to database');\n        } else {\n            res.redirect('/sharks/getshark');\n        }\n  });\n               };\n\nexports.list = function (req, res) {\n        Shark.find({}).exec(function (err, sharks) {\n                if (err) {\n                        return res.send(500, err);\n                }\n                res.render('getshark', {\n                        sharks: sharks\n             });\n        });\n};\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_002_nodejs_mongo_docker/node_project/db.js",
    "content": "const mongoose = require('mongoose');\n\nconst MONGO_USERNAME = 'mongoadmin';\nconst MONGO_PASSWORD = 'secret';\nconst MONGO_HOSTNAME = '127.0.0.1';\nconst MONGO_PORT = '27888';\nconst MONGO_DB = 'sharkinfo';\n\nconst url = `mongodb://${MONGO_USERNAME}:${MONGO_PASSWORD}@${MONGO_HOSTNAME}:${MONGO_PORT}/${MONGO_DB}?authSource=admin`;\n\nmongoose.connect(url, {useNewUrlParser: true});\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_002_nodejs_mongo_docker/node_project/models/sharks.js",
    "content": "const mongoose = require('mongoose');\nconst Schema = mongoose.Schema;\n\nconst Shark = new Schema ({\n        name: { type: String, required: true },\n        character: { type: String, required: true },\n});\n\nmodule.exports = mongoose.model('Shark', Shark)\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_002_nodejs_mongo_docker/node_project/package.json",
    "content": "{\n  \"name\": \"nodejs-image-demo\",\n  \"version\": \"1.0.0\",\n  \"description\": \"nodejs image demo\",\n  \"author\": \"katjuell <kathleenjuell@gmail.com>\",\n  \"license\": \"MIT\",\n  \"main\": \"app.js\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/katjuell/nodejs-image-demo.git\"\n  },\n  \"keywords\": [\n    \"nodejs\",\n    \"bootstrap\",\n    \"express\"\n  ],\n  \"dependencies\": {\n    \"ejs\": \"^2.6.1\",\n    \"express\": \"^4.16.4\",\n    \"mongoose\": \"^5.4.10\"\n  }\n}\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_002_nodejs_mongo_docker/node_project/routes/index.js",
    "content": "const express = require('express');\nconst router = express.Router();\nconst path = require('path');\n\nrouter.use (function (req,res,next) {\n  console.log('/' + req.method);\n  next();\n});\n\nrouter.get('/',function(req,res){\n  res.sendFile(path.resolve('views/index.html'));\n});\n\nmodule.exports = router;\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_002_nodejs_mongo_docker/node_project/routes/sharks.js",
    "content": "const express = require('express');\nconst router = express.Router();\nconst shark = require('../controllers/sharks');\n\nrouter.get('/', function(req, res){\n    shark.index(req,res);\n});\n\nrouter.post('/addshark', function(req, res) {\n    shark.create(req,res);\n});\n\nrouter.get('/getshark', function(req, res) {\n    shark.list(req,res);\n});\n\nmodule.exports = router;\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_002_nodejs_mongo_docker/node_project/views/css/styles.css",
    "content": ".navbar {\n    margin-bottom: 0;\n    background: #000000;\n}\n\nbody {\n    background: #000000;\n    color: #ffffff;\n    font-family: 'Merriweather', sans-serif;\n}\n\nh1,\nh2 {\n    font-weight: bold;\n}\n\np {\n    font-size: 16px;\n    color: #ffffff;\n}\n\n.jumbotron {\n    background: #0048CD;\n    color: white;\n    text-align: center;\n}\n\n.jumbotron p {\n    color: white;\n    font-size: 26px;\n}\n\n.btn-primary {\n    color: #fff;\n    text-color: #000000;\n    border-color: white;\n    margin-bottom: 5px;\n}\n\nimg,\nvideo,\naudio {\n    margin-top: 20px;\n    max-width: 80%;\n}\n\ndiv.caption: {\n    float: left;\n    clear: both;\n}\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_002_nodejs_mongo_docker/node_project/views/getshark.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <title>About Sharks</title>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n    <link rel=\"stylesheet\" href=\"https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css\" integrity=\"sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO\" crossorigin=\"anonymous\">\n    <link href=\"/css/styles.css\" rel=\"stylesheet\">\n    <link href=\"https://fonts.googleapis.com/css?family=Merriweather:400,700\" rel=\"stylesheet\" type=\"text/css\">\n</head>\n<nav class=\"navbar navbar-dark navbar-static-top navbar-expand-md\">\n    <div class=\"container\">\n        <button type=\"button\" class=\"navbar-toggler collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\" aria-expanded=\"false\"> <span class=\"sr-only\">Toggle navigation</span>\n        </button> <a class=\"navbar-brand\" href=\"/\">Everything Sharks</a>\n        <div class=\"collapse navbar-collapse\" id=\"bs-example-navbar-collapse-1\">\n            <ul class=\"nav navbar-nav mr-auto\">\n                <li class=\"nav-item\"><a href=\"/\" class=\"nav-link\">Home</a>\n                </li>\n                <li class=\"active nav-item\"><a href=\"/sharks\" class=\"nav-link\">Sharks</a>\n                </li>\n            </ul>\n        </div>\n    </div>\n</nav>\n<div class=\"jumbotron text-center\">\n    <h1>Shark Info</h1>\n</div>\n<div class=\"container\">\n    <div class=\"row\">\n        <div class=\"col-lg-4\">\n            <p>\n                <div class=\"caption\">Some sharks are known to be dangerous to humans, though many more are not. The sawshark, for example, is not considered a threat to humans.\n                </div>\n                <img src=\"https://assets.digitalocean.com/articles/docker_node_image/sawshark.jpg\" alt=\"Sawshark\">\n            </p>\n        </div>\n        <div class=\"col-lg-4\">\n            <p>\n                <div class=\"caption\">Other sharks are known to be friendly and welcoming!</div>\n                <img src=\"https://assets.digitalocean.com/articles/docker_node_image/sammy.png\" alt=\"Sammy the Shark\">\n            </p>\n        </div>\n\t<div class=\"col-lg-4\">\n            <p>\n              <div class=\"caption\">Your Sharks</div>\n                  <ul>\n                     <% sharks.forEach(function(shark) { %>\n                        <p>Name: <%= shark.name %></p>\n                        <p>Character: <%= shark.character %></p>\n                     <% }); %>\n                  </ul>\n            </p>\n        </div>\n    </div>\n  </div>\n</html>\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_002_nodejs_mongo_docker/node_project/views/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <title>About Sharks</title>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n    <link rel=\"stylesheet\" href=\"https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css\" integrity=\"sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO\" crossorigin=\"anonymous\">\n    <link href=\"/css/styles.css\" rel=\"stylesheet\">\n    <link href=\"https://fonts.googleapis.com/css?family=Merriweather:400,700\" rel=\"stylesheet\" type=\"text/css\">\n</head>\n\n<body>\n    <nav class=\"navbar navbar-dark navbar-static-top navbar-expand-md\">\n        <div class=\"container\">\n            <button type=\"button\" class=\"navbar-toggler collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\" aria-expanded=\"false\"> <span class=\"sr-only\">Toggle navigation</span>\n            </button> <a class=\"navbar-brand\" href=\"#\">Everything Sharks</a>\n            <div class=\"collapse navbar-collapse\" id=\"bs-example-navbar-collapse-1\">\n                <ul class=\"nav navbar-nav mr-auto\">\n                    <li class=\"active nav-item\"><a href=\"/\" class=\"nav-link\">Home</a>\n                    </li>\n                    <li class=\"nav-item\"><a href=\"/sharks\" class=\"nav-link\">Sharks</a>\n                    </li>\n                </ul>\n            </div>\n        </div>\n    </nav>\n    <div class=\"jumbotron\">\n        <div class=\"container\">\n            <h1>Want to Learn About Sharks?</h1>\n            <p>Are you ready to learn about sharks?</p>\n            <br>\n            <p><a class=\"btn btn-primary btn-lg\" href=\"/sharks\" role=\"button\">Get Shark Info</a>\n            </p>\n        </div>\n    </div>\n    <div class=\"container\">\n        <div class=\"row\">\n            <div class=\"col-lg-6\">\n                <h3>Not all sharks are alike</h3>\n                <p>Though some are dangerous, sharks generally do not attack humans. Out of the 500 species known to researchers, only 30 have been known to attack humans.\n                </p>\n            </div>\n            <div class=\"col-lg-6\">\n                <h3>Sharks are ancient</h3>\n                <p>There is evidence to suggest that sharks lived up to 400 million years ago.\n                </p>\n            </div>\n        </div>\n    </div>\n  </body>\n</html>\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_002_nodejs_mongo_docker/node_project/views/sharks.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <title>About Sharks</title>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n    <link rel=\"stylesheet\" href=\"https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css\" integrity=\"sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO\" crossorigin=\"anonymous\">\n    <link href=\"/css/styles.css\" rel=\"stylesheet\">\n    <link href=\"https://fonts.googleapis.com/css?family=Merriweather:400,700\" rel=\"stylesheet\" type=\"text/css\">\n</head>\n<nav class=\"navbar navbar-dark navbar-static-top navbar-expand-md\">\n    <div class=\"container\">\n        <button type=\"button\" class=\"navbar-toggler collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\" aria-expanded=\"false\"> <span class=\"sr-only\">Toggle navigation</span>\n        </button> <a class=\"navbar-brand\" href=\"/\">Everything Sharks</a>\n        <div class=\"collapse navbar-collapse\" id=\"bs-example-navbar-collapse-1\">\n            <ul class=\"nav navbar-nav mr-auto\">\n                <li class=\"nav-item\"><a href=\"/\" class=\"nav-link\">Home</a>\n                </li>\n                <li class=\"active nav-item\"><a href=\"/sharks\" class=\"nav-link\">Sharks</a>\n                </li>\n            </ul>\n        </div>\n    </div>\n</nav>\n<div class=\"jumbotron text-center\">\n    <h1>Shark Info</h1>\n</div>\n<div class=\"container\">\n    <div class=\"row\">\n        <div class=\"col-lg-4\">\n            <p>\n                <div class=\"caption\">Some sharks are known to be dangerous to humans, though many more are not. The sawshark, for example, is not considered a threat to humans.\n                </div>\n                <img src=\"https://assets.digitalocean.com/articles/docker_node_image/sawshark.jpg\" alt=\"Sawshark\">\n            </p>\n        </div>\n        <div class=\"col-lg-4\">\n            <p>\n                <div class=\"caption\">Other sharks are known to be friendly and welcoming!</div>\n                <img src=\"https://assets.digitalocean.com/articles/docker_node_image/sammy.png\" alt=\"Sammy the Shark\">\n            </p>\n        </div>\n\t<div class=\"col-lg-4\">\n            <p>\n                <form action=\"/sharks/addshark\" method=\"post\">\n                    <div class=\"caption\">Enter Your Shark</div>\n                    <input type=\"text\" placeholder=\"Shark Name\" name=\"name\" <%=sharks[i].name; %>\n                    <input type=\"text\" placeholder=\"Shark Character\" name=\"character\" <%=sharks[i].character; %>\n                    <button type=\"submit\">Submit</button>\n                </form>\n            </p>\n        </div>\n    </div>\n  </div>\n</html>\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_003_nodejs_mongo_docker_compose/README.md",
    "content": "### Nodejs Application with Mongo DB in docker-compose\n\n[docs](https://www.digitalocean.com/community/tutorials/containerizing-a-node-js-application-for-development-with-docker-compose)\n\n- Start the application\n\n```bash\n$ docker-compose up     \nCreating network \"node_project_app-network\" with driver \"bridge\"\nBuilding nodejs\nStep 1/9 : FROM node:10-alpine\n10-alpine: Pulling from library/node\n0a6724ff3fcd: Pull complete\n21d01549d399: Pull complete\n35acd139872d: Pull complete\na0b37be8639d: Pull complete\nDigest: sha256:b3f5295bb1478401473cfa1a70ba5c0a0a258d3c8e9ebffdd16be4ae1a30e772\nStatus: Downloaded newer image for node:10-alpine\n ---> 188ff29d9659\nStep 2/9 : RUN mkdir -p /home/node/app/node_modules && chown -R node:node /home/node/app\n ---> Running in 12097d62878b\nRemoving intermediate container 12097d62878b\n ---> 07502bb16866\nStep 3/9 : WORKDIR /home/node/app\n ---> Running in 9b9e8e40eb17\nRemoving intermediate container 9b9e8e40eb17\n ---> 48afd4fe6bbb\nStep 4/9 : COPY package*.json ./\n ---> 32425971ecdd\nStep 5/9 : USER node\n ---> Running in f81e114c1900\nRemoving intermediate container f81e114c1900\n ---> 437741bfbc19\nStep 6/9 : RUN npm install\n ---> Running in 7f8e1f6a20e0\nnpm WARN deprecated chokidar@2.1.8: Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.\nnpm WARN deprecated fsevents@1.2.13: fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.\nnpm WARN deprecated resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated\nnpm WARN deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated\n\n> nodemon@1.19.4 postinstall /home/node/app/node_modules/nodemon\n> node bin/postinstall || exit 0\n\nLove nodemon? You can now support the project via the open collective:\n > https://opencollective.com/nodemon/donate\n\nnpm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.2.7 (node_modules/chokidar/node_modules/fsevents):\nnpm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {\"os\":\"darwin\",\"arch\":\"any\"} (current: {\"os\":\"linux\",\"arch\":\"x64\"})\n\nadded 287 packages from 179 contributors and audited 288 packages in 13.376s\nfound 2 vulnerabilities (1 low, 1 high)\n  run `npm audit fix` to fix them, or `npm audit` for details\nRemoving intermediate container 7f8e1f6a20e0\n ---> 852b4d956908\nStep 7/9 : COPY --chown=node:node . .\n ---> ea730c31e066\nStep 8/9 : EXPOSE 8080\n ---> Running in f9d9aae2ab97\nRemoving intermediate container f9d9aae2ab97\n ---> ac83696cbdd7\nStep 9/9 : CMD [ \"node\", \"app.js\" ]\n ---> Running in 959e92feeb3f\nRemoving intermediate container 959e92feeb3f\n ---> 7dadf531639a\n\nSuccessfully built 7dadf531639a\nSuccessfully tagged nodejs:latest\nWARNING: Image for service nodejs was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.\nPulling db (mongo:4.1.8-xenial)...\n4.1.8-xenial: Pulling from library/mongo\n34667c7e4631: Pull complete\nd18d76a881a4: Pull complete\n119c7358fbfc: Pull complete\n2aaf13f3eff0: Pull complete\nf7833eaffdda: Pull complete\n8287cb5b9daf: Pull complete\nea00040a145a: Pull complete\neeb70119a2ba: Pull complete\n0a445e1756be: Pull complete\n7a527014d843: Pull complete\n7a95456e941d: Pull complete\nd62f8c91d32b: Pull complete\n36393ea51932: Pull complete\nDigest: sha256:a7288360aad5e559e85bbc46ae48d6f27ca9f21b9fb6f4337d9ec93f718db94c\nStatus: Downloaded newer image for mongo:4.1.8-xenial\nCreating db     ... done\nCreating nodejs ... done\nAttaching to db, nodejs\ndb        | 2021-02-24T18:27:39.203+0000 I CONTROL  [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'\ndb        | 2021-02-24T18:27:39.205+0000 I CONTROL  [initandlisten] MongoDB starting : pid=1 port=27017 dbpath=/data/db 64-bit host=e1438b51bf11\ndb        | 2021-02-24T18:27:39.205+0000 I CONTROL  [initandlisten] db version v4.1.8\ndb        | 2021-02-24T18:27:39.205+0000 I CONTROL  [initandlisten] git version: 530a26bc5387de3dd131a18801a6c3253c4f3220\ndb        | 2021-02-24T18:27:39.205+0000 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.2g  1 Mar 2016\ndb        | 2021-02-24T18:27:39.205+0000 I CONTROL  [initandlisten] allocator: tcmalloc\ndb        | 2021-02-24T18:27:39.205+0000 I CONTROL  [initandlisten] modules: none\ndb        | 2021-02-24T18:27:39.205+0000 I CONTROL  [initandlisten] build environment:\ndb        | 2021-02-24T18:27:39.205+0000 I CONTROL  [initandlisten]     distmod: ubuntu1604\ndb        | 2021-02-24T18:27:39.205+0000 I CONTROL  [initandlisten]     distarch: x86_64\ndb        | 2021-02-24T18:27:39.205+0000 I CONTROL  [initandlisten]     target_arch: x86_64\ndb        | 2021-02-24T18:27:39.205+0000 I CONTROL  [initandlisten] options: { net: { bindIp: \"*\" }, security: { authorization: \"enabled\" } }\ndb        | 2021-02-24T18:27:39.206+0000 I STORAGE  [initandlisten] Detected data files in /data/db created by the 'wiredTiger' storage engine, so setting the active storage engine to 'wiredTiger'.\ndb        | 2021-02-24T18:27:39.206+0000 I STORAGE  [initandlisten] \ndb        | 2021-02-24T18:27:39.206+0000 I STORAGE  [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine\ndb        | 2021-02-24T18:27:39.206+0000 I STORAGE  [initandlisten] **          See http://dochub.mongodb.org/core/prodnotes-filesystem\ndb        | 2021-02-24T18:27:39.206+0000 I STORAGE  [initandlisten] wiredtiger_open config: create,cache_size=482M,session_max=20000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),statistics_log=(wait=0),verbose=(recovery_progress),\ndb        | 2021-02-24T18:27:39.823+0000 I STORAGE  [initandlisten] WiredTiger message [1614191259:823290][1:0x7f13f7659a80], txn-recover: Main recovery loop: starting at 3/5120 to 4/256\ndb        | 2021-02-24T18:27:39.950+0000 I STORAGE  [initandlisten] WiredTiger message [1614191259:950272][1:0x7f13f7659a80], txn-recover: Recovering log 3 through 4\ndb        | 2021-02-24T18:27:40.051+0000 I STORAGE  [initandlisten] WiredTiger message [1614191260:51850][1:0x7f13f7659a80], txn-recover: Recovering log 4 through 4\ndb        | 2021-02-24T18:27:40.113+0000 I STORAGE  [initandlisten] WiredTiger message [1614191260:113181][1:0x7f13f7659a80], txn-recover: Set global recovery timestamp: (0,0)\ndb        | 2021-02-24T18:27:40.128+0000 I RECOVERY [initandlisten] WiredTiger recoveryTimestamp. Ts: Timestamp(0, 0)\ndb        | 2021-02-24T18:27:40.138+0000 I STORAGE  [initandlisten] Timestamp monitor starting\ndb        | 2021-02-24T18:27:40.139+0000 I CONTROL  [initandlisten] \ndb        | 2021-02-24T18:27:40.139+0000 I CONTROL  [initandlisten] ** NOTE: This is a development version (4.1.8) of MongoDB.\ndb        | 2021-02-24T18:27:40.139+0000 I CONTROL  [initandlisten] **       Not recommended for production.\ndb        | 2021-02-24T18:27:40.139+0000 I CONTROL  [initandlisten] \ndb        | 2021-02-24T18:27:40.154+0000 I SHARDING [initandlisten] Marking collection local.system.replset as collection version: <unsharded>\ndb        | 2021-02-24T18:27:40.156+0000 I SHARDING [initandlisten] Marking collection admin.system.roles as collection version: <unsharded>\ndb        | 2021-02-24T18:27:40.156+0000 I SHARDING [initandlisten] Marking collection admin.system.version as collection version: <unsharded>\ndb        | 2021-02-24T18:27:40.157+0000 I SHARDING [initandlisten] Marking collection local.startup_log as collection version: <unsharded>\ndb        | 2021-02-24T18:27:40.158+0000 I FTDC     [initandlisten] Initializing full-time diagnostic data capture with directory '/data/db/diagnostic.data'\ndb        | 2021-02-24T18:27:40.160+0000 I NETWORK  [initandlisten] Listening on /tmp/mongodb-27017.sock\ndb        | 2021-02-24T18:27:40.160+0000 I NETWORK  [initandlisten] Listening on 0.0.0.0\ndb        | 2021-02-24T18:27:40.160+0000 I SHARDING [LogicalSessionCacheRefresh] Marking collection config.system.sessions as collection version: <unsharded>\ndb        | 2021-02-24T18:27:40.160+0000 I NETWORK  [initandlisten] waiting for connections on port 27017\ndb        | 2021-02-24T18:27:40.902+0000 I NETWORK  [listener] connection accepted from 192.168.96.3:40523 #1 (1 connection now open)\ndb        | 2021-02-24T18:27:40.902+0000 I NETWORK  [conn1] end connection 192.168.96.3:40523 (0 connections now open)\nnodejs    | [nodemon] 1.19.4\nnodejs    | [nodemon] to restart at any time, enter `rs`\nnodejs    | [nodemon] watching dir(s): *.*\nnodejs    | [nodemon] watching extensions: js,mjs,json\nnodejs    | [nodemon] starting `node app.js`\nnodejs    | Example app listening on 8080!\ndb        | 2021-02-24T18:27:41.652+0000 I NETWORK  [listener] connection accepted from 192.168.96.3:55470 #2 (1 connection now open)\ndb        | 2021-02-24T18:27:41.667+0000 I NETWORK  [conn2] received client metadata from 192.168.96.3:55470 conn2: { driver: { name: \"nodejs\", version: \"3.1.13\" }, os: { type: \"Linux\", name: \"linux\", architecture: \"x64\", version: \"4.19.121-linuxkit\" }, platform: \"Node.js v10.24.0, LE, mongodb-core: 3.1.11\" }\ndb        | 2021-02-24T18:27:41.667+0000 I SHARDING [conn2] Marking collection admin.system.users as collection version: <unsharded>\ndb        | 2021-02-24T18:27:41.697+0000 I ACCESS   [conn2] Successfully authenticated as principal sammy on admin\nnodejs    | MongoDB is connected\nnodejs    | { name: 'Ankit', character: 'Light Yagami' }\ndb        | 2021-02-24T18:28:54.199+0000 I SHARDING [conn2] Marking collection sharkinfo.sharks as collection version: <unsharded>\ndb        | 2021-02-24T18:28:54.199+0000 I STORAGE  [conn2] createCollection: sharkinfo.sharks with generated UUID: 44f02943-e62c-41cc-bfdd-571db68b40fb\ndb        | 2021-02-24T18:28:54.205+0000 I INDEX    [conn2] index build: done building index _id_ on ns sharkinfo.sharks\nnodejs    | { name: 'Uzumaki', character: 'Naruto' }\nnodejs    | { name: 'Uzumaki', character: 'Naruto' }\n\n```\n\n\n- Images\n\n  - Shark adding screen\n  \n![](.images/shark-adding-screen.png)\n\n  - After adding sharks to db\n  \n![](.images/after-adding-sharks.png)"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_003_nodejs_mongo_docker_compose/node_project/.dockerignore",
    "content": "node_modules\nnpm-debug.log\nDockerfile\n.dockerignore\n.git\nREADME.md\n.gitignore\n.env\n\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_003_nodejs_mongo_docker_compose/node_project/.gitignore",
    "content": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\n# Runtime data\npids\n*.pid\n*.seed\n*.pid.lock\n\n# Directory for instrumented libs generated by jscoverage/JSCover\nlib-cov\n\n# Coverage directory used by tools like istanbul\ncoverage\n\n# nyc test coverage\n.nyc_output\n\n# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)\n.grunt\n\n# Bower dependency directory (https://bower.io/)\nbower_components\n\n# node-waf configuration\n.lock-wscript\n\n# Compiled binary addons (https://nodejs.org/api/addons.html)\nbuild/Release\n\n# Dependency directories\nnode_modules/\njspm_packages/\n\n# TypeScript v1 declaration files\ntypings/\n\n# Optional npm cache directory\n.npm\n\n# Optional eslint cache\n.eslintcache\n\n# Optional REPL history\n.node_repl_history\n\n# Output of 'npm pack'\n*.tgz\n\n# Yarn Integrity file\n.yarn-integrity\n\n\n\n# parcel-bundler cache (https://parceljs.org/)\n.cache\n\n# next.js build output\n.next\n\n# nuxt.js build output\n.nuxt\n\n# vuepress build output\n.vuepress/dist\n\n# Serverless directories\n.serverless/\n\n# FuseBox cache\n.fusebox/\n\n#DynamoDB Local files\n.dynamodb/\n\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_003_nodejs_mongo_docker_compose/node_project/Dockerfile",
    "content": "FROM node:10-alpine\n\nRUN mkdir -p /home/node/app/node_modules && chown -R node:node /home/node/app\n\nWORKDIR /home/node/app\n\nCOPY package*.json ./\n\nUSER node\n\nRUN npm install\n\nCOPY --chown=node:node . .\n\nEXPOSE 8080\n\nCMD [ \"node\", \"app.js\" ]\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_003_nodejs_mongo_docker_compose/node_project/app.js",
    "content": "const express = require('express');\nconst app = express();\nconst router = express.Router();\nconst db = require('./db');\nconst sharks = require('./routes/sharks');\n\nconst path = __dirname + '/views/';\nconst port = process.env.PORT || 8080;\n\napp.engine('html', require('ejs').renderFile);\napp.set('view engine', 'html');\napp.use(express.urlencoded({ extended: true }));\napp.use(express.static(path));\napp.use('/sharks', sharks);\n\napp.listen(port, function () {\n  console.log(`Example app listening on ${port}!`)\n})\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_003_nodejs_mongo_docker_compose/node_project/controllers/sharks.js",
    "content": "const path = require('path');\nconst Shark = require('../models/sharks');\n\nexports.index = function (req, res) {\n    res.sendFile(path.resolve('views/sharks.html'));\n};\n\nexports.create = function (req, res) {\n    var newShark = new Shark(req.body);\n    console.log(req.body);\n    newShark.save(function (err) {\n            if(err) {\n            res.status(400).send('Unable to save shark to database');\n        } else {\n            res.redirect('/sharks/getshark');\n        }\n  });\n               };\n\nexports.list = function (req, res) {\n        Shark.find({}).exec(function (err, sharks) {\n                if (err) {\n                        return res.send(500, err);\n                }\n                res.render('getshark', {\n                        sharks: sharks\n             });\n        });\n};\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_003_nodejs_mongo_docker_compose/node_project/db.js",
    "content": "const mongoose = require('mongoose');\n\nconst {\n  MONGO_USERNAME,\n  MONGO_PASSWORD,\n  MONGO_HOSTNAME,\n  MONGO_PORT,\n  MONGO_DB\n} = process.env;\n\nconst options = {\n  useNewUrlParser: true,\n  reconnectTries: Number.MAX_VALUE,\n  reconnectInterval: 500,\n  connectTimeoutMS: 10000,\n};\n\nconst url = `mongodb://${MONGO_USERNAME}:${MONGO_PASSWORD}@${MONGO_HOSTNAME}:${MONGO_PORT}/${MONGO_DB}?authSource=admin`;\n\nmongoose.connect(url, options).then( function() {\n  console.log('MongoDB is connected');\n})\n  .catch( function(err) {\n  console.log(err);\n});\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_003_nodejs_mongo_docker_compose/node_project/docker-compose.yaml",
    "content": "version: '3'\n\nservices:\n  nodejs:\n    build:\n      context: .\n      dockerfile: Dockerfile\n    image: nodejs\n    container_name: nodejs\n    restart: unless-stopped\n    env_file: .env\n    environment:\n      - MONGO_USERNAME=$MONGO_USERNAME\n      - MONGO_PASSWORD=$MONGO_PASSWORD\n      - MONGO_HOSTNAME=db\n      - MONGO_PORT=$MONGO_PORT\n      - MONGO_DB=$MONGO_DB \n    ports:\n      - \"80:8080\"\n    volumes:\n      - .:/home/node/app\n      - node_modules:/home/node/app/node_modules\n    networks:\n      - app-network\n    command: ./wait-for.sh db:27017 -- /home/node/app/node_modules/.bin/nodemon app.js\n\n  db:\n    image: mongo:4.1.8-xenial\n    container_name: db\n    restart: unless-stopped\n    env_file: .env\n    environment:\n      - MONGO_INITDB_ROOT_USERNAME=$MONGO_USERNAME\n      - MONGO_INITDB_ROOT_PASSWORD=$MONGO_PASSWORD\n    volumes:  \n      - dbdata:/data/db   \n    networks:\n      - app-network  \n\nnetworks:\n  app-network:\n    driver: bridge\n\nvolumes:\n  dbdata:\n  node_modules:      \n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_003_nodejs_mongo_docker_compose/node_project/models/sharks.js",
    "content": "const mongoose = require('mongoose');\nconst Schema = mongoose.Schema;\n\nconst Shark = new Schema ({\n        name: { type: String, required: true },\n        character: { type: String, required: true },\n});\n\nmodule.exports = mongoose.model('Shark', Shark)\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_003_nodejs_mongo_docker_compose/node_project/package.json",
    "content": "{\n  \"name\": \"nodejs-image-demo\",\n  \"version\": \"1.0.0\",\n  \"description\": \"nodejs image demo\",\n  \"author\": \"katjuell <kathleenjuell@gmail.com>\",\n  \"license\": \"MIT\",\n  \"main\": \"app.js\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/katjuell/nodejs-image-demo.git\"\n  },\n  \"keywords\": [\n    \"nodejs\",\n    \"bootstrap\",\n    \"express\"\n  ],\n  \"dependencies\": {\n    \"ejs\": \"^2.6.1\",\n    \"express\": \"^4.16.4\",\n    \"mongoose\": \"^5.4.10\"\n  },\n  \"devDependencies\": {\n    \"nodemon\": \"^1.18.10\"\n  }\n}\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_003_nodejs_mongo_docker_compose/node_project/routes/index.js",
    "content": "const express = require('express');\nconst router = express.Router();\nconst path = require('path');\n\nrouter.use (function (req,res,next) {\n  console.log('/' + req.method);\n  next();\n});\n\nrouter.get('/',function(req,res){\n  res.sendFile(path.resolve('views/index.html'));\n});\n\nmodule.exports = router;\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_003_nodejs_mongo_docker_compose/node_project/routes/sharks.js",
    "content": "const express = require('express');\nconst router = express.Router();\nconst shark = require('../controllers/sharks');\n\nrouter.get('/', function(req, res){\n    shark.index(req,res);\n});\n\nrouter.post('/addshark', function(req, res) {\n    shark.create(req,res);\n});\n\nrouter.get('/getshark', function(req, res) {\n    shark.list(req,res);\n});\n\nmodule.exports = router;\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_003_nodejs_mongo_docker_compose/node_project/views/css/styles.css",
    "content": ".navbar {\n    margin-bottom: 0;\n    background: #000000;\n}\n\nbody {\n    background: #000000;\n    color: #ffffff;\n    font-family: 'Merriweather', sans-serif;\n}\n\nh1,\nh2 {\n    font-weight: bold;\n}\n\np {\n    font-size: 16px;\n    color: #ffffff;\n}\n\n.jumbotron {\n    background: #0048CD;\n    color: white;\n    text-align: center;\n}\n\n.jumbotron p {\n    color: white;\n    font-size: 26px;\n}\n\n.btn-primary {\n    color: #fff;\n    text-color: #000000;\n    border-color: white;\n    margin-bottom: 5px;\n}\n\nimg,\nvideo,\naudio {\n    margin-top: 20px;\n    max-width: 80%;\n}\n\ndiv.caption: {\n    float: left;\n    clear: both;\n}\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_003_nodejs_mongo_docker_compose/node_project/views/getshark.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <title>About Sharks</title>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n    <link rel=\"stylesheet\" href=\"https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css\" integrity=\"sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO\" crossorigin=\"anonymous\">\n    <link href=\"/css/styles.css\" rel=\"stylesheet\">\n    <link href=\"https://fonts.googleapis.com/css?family=Merriweather:400,700\" rel=\"stylesheet\" type=\"text/css\">\n</head>\n<nav class=\"navbar navbar-dark navbar-static-top navbar-expand-md\">\n    <div class=\"container\">\n        <button type=\"button\" class=\"navbar-toggler collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\" aria-expanded=\"false\"> <span class=\"sr-only\">Toggle navigation</span>\n        </button> <a class=\"navbar-brand\" href=\"/\">Everything Sharks</a>\n        <div class=\"collapse navbar-collapse\" id=\"bs-example-navbar-collapse-1\">\n            <ul class=\"nav navbar-nav mr-auto\">\n                <li class=\"nav-item\"><a href=\"/\" class=\"nav-link\">Home</a>\n                </li>\n                <li class=\"active nav-item\"><a href=\"/sharks\" class=\"nav-link\">Sharks</a>\n                </li>\n            </ul>\n        </div>\n    </div>\n</nav>\n<div class=\"jumbotron text-center\">\n    <h1>Shark Info</h1>\n</div>\n<div class=\"container\">\n    <div class=\"row\">\n        <div class=\"col-lg-4\">\n            <p>\n                <div class=\"caption\">Some sharks are known to be dangerous to humans, though many more are not. The sawshark, for example, is not considered a threat to humans.\n                </div>\n                <img src=\"https://assets.digitalocean.com/articles/docker_node_image/sawshark.jpg\" alt=\"Sawshark\">\n            </p>\n        </div>\n        <div class=\"col-lg-4\">\n            <p>\n                <div class=\"caption\">Other sharks are known to be friendly and welcoming!</div>\n                <img src=\"https://assets.digitalocean.com/articles/docker_node_image/sammy.png\" alt=\"Sammy the Shark\">\n            </p>\n        </div>\n\t<div class=\"col-lg-4\">\n            <p>\n              <div class=\"caption\">Your Sharks</div>\n                  <ul>\n                     <% sharks.forEach(function(shark) { %>\n                        <p>Name: <%= shark.name %></p>\n                        <p>Character: <%= shark.character %></p>\n                     <% }); %>\n                  </ul>\n            </p>\n        </div>\n    </div>\n  </div>\n</html>\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_003_nodejs_mongo_docker_compose/node_project/views/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <title>About Sharks</title>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n    <link rel=\"stylesheet\" href=\"https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css\" integrity=\"sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO\" crossorigin=\"anonymous\">\n    <link href=\"/css/styles.css\" rel=\"stylesheet\">\n    <link href=\"https://fonts.googleapis.com/css?family=Merriweather:400,700\" rel=\"stylesheet\" type=\"text/css\">\n</head>\n\n<body>\n    <nav class=\"navbar navbar-dark navbar-static-top navbar-expand-md\">\n        <div class=\"container\">\n            <button type=\"button\" class=\"navbar-toggler collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\" aria-expanded=\"false\"> <span class=\"sr-only\">Toggle navigation</span>\n            </button> <a class=\"navbar-brand\" href=\"#\">Everything Sharks</a>\n            <div class=\"collapse navbar-collapse\" id=\"bs-example-navbar-collapse-1\">\n                <ul class=\"nav navbar-nav mr-auto\">\n                    <li class=\"active nav-item\"><a href=\"/\" class=\"nav-link\">Home</a>\n                    </li>\n                    <li class=\"nav-item\"><a href=\"/sharks\" class=\"nav-link\">Sharks</a>\n                    </li>\n                </ul>\n            </div>\n        </div>\n    </nav>\n    <div class=\"jumbotron\">\n        <div class=\"container\">\n            <h1>Want to Learn About Sharks?</h1>\n            <p>Are you ready to learn about sharks?</p>\n            <br>\n            <p><a class=\"btn btn-primary btn-lg\" href=\"/sharks\" role=\"button\">Get Shark Info</a>\n            </p>\n        </div>\n    </div>\n    <div class=\"container\">\n        <div class=\"row\">\n            <div class=\"col-lg-6\">\n                <h3>Not all sharks are alike</h3>\n                <p>Though some are dangerous, sharks generally do not attack humans. Out of the 500 species known to researchers, only 30 have been known to attack humans.\n                </p>\n            </div>\n            <div class=\"col-lg-6\">\n                <h3>Sharks are ancient</h3>\n                <p>There is evidence to suggest that sharks lived up to 400 million years ago.\n                </p>\n            </div>\n        </div>\n    </div>\n  </body>\n</html>\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_003_nodejs_mongo_docker_compose/node_project/views/sharks.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <title>About Sharks</title>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n    <link rel=\"stylesheet\" href=\"https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css\" integrity=\"sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO\" crossorigin=\"anonymous\">\n    <link href=\"/css/styles.css\" rel=\"stylesheet\">\n    <link href=\"https://fonts.googleapis.com/css?family=Merriweather:400,700\" rel=\"stylesheet\" type=\"text/css\">\n</head>\n<nav class=\"navbar navbar-dark navbar-static-top navbar-expand-md\">\n    <div class=\"container\">\n        <button type=\"button\" class=\"navbar-toggler collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\" aria-expanded=\"false\"> <span class=\"sr-only\">Toggle navigation</span>\n        </button> <a class=\"navbar-brand\" href=\"/\">Everything Sharks</a>\n        <div class=\"collapse navbar-collapse\" id=\"bs-example-navbar-collapse-1\">\n            <ul class=\"nav navbar-nav mr-auto\">\n                <li class=\"nav-item\"><a href=\"/\" class=\"nav-link\">Home</a>\n                </li>\n                <li class=\"active nav-item\"><a href=\"/sharks\" class=\"nav-link\">Sharks</a>\n                </li>\n            </ul>\n        </div>\n    </div>\n</nav>\n<div class=\"jumbotron text-center\">\n    <h1>Shark Info</h1>\n</div>\n<div class=\"container\">\n    <div class=\"row\">\n        <div class=\"col-lg-4\">\n            <p>\n                <div class=\"caption\">Some sharks are known to be dangerous to humans, though many more are not. The sawshark, for example, is not considered a threat to humans.\n                </div>\n                <img src=\"https://assets.digitalocean.com/articles/docker_node_image/sawshark.jpg\" alt=\"Sawshark\">\n            </p>\n        </div>\n        <div class=\"col-lg-4\">\n            <p>\n                <div class=\"caption\">Other sharks are known to be friendly and welcoming!</div>\n                <img src=\"https://assets.digitalocean.com/articles/docker_node_image/sammy.png\" alt=\"Sammy the Shark\">\n            </p>\n        </div>\n\t<div class=\"col-lg-4\">\n            <p>\n                <form action=\"/sharks/addshark\" method=\"post\">\n                    <div class=\"caption\">Enter Your Shark</div>\n                    <input type=\"text\" placeholder=\"Shark Name\" name=\"name\" <%=sharks[i].name; %>\n                    <input type=\"text\" placeholder=\"Shark Character\" name=\"character\" <%=sharks[i].character; %>\n                    <button type=\"submit\">Submit</button>\n                </form>\n            </p>\n        </div>\n    </div>\n  </div>\n</html>\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_003_nodejs_mongo_docker_compose/node_project/wait-for.sh",
    "content": "#!/bin/sh\n\n# original script: https://github.com/eficode/wait-for/blob/master/wait-for\n\nTIMEOUT=15\nQUIET=0\n\nechoerr() {\n  if [ \"$QUIET\" -ne 1 ]; then printf \"%s\\n\" \"$*\" 1>&2; fi\n}\n\nusage() {\n  exitcode=\"$1\"\n  cat << USAGE >&2\nUsage:\n  $cmdname host:port [-t timeout] [-- command args]\n  -q | --quiet                        Do not output any status messages\n  -t TIMEOUT | --timeout=timeout      Timeout in seconds, zero for no timeout\n  -- COMMAND ARGS                     Execute command with args after the test finishes\nUSAGE\n  exit \"$exitcode\"\n}\n\nwait_for() {\n  for i in `seq $TIMEOUT` ; do\n    nc -z \"$HOST\" \"$PORT\" > /dev/null 2>&1\n\n    result=$?\n    if [ $result -eq 0 ] ; then\n      if [ $# -gt 0 ] ; then\n        exec \"$@\"\n      fi\n      exit 0\n    fi\n    sleep 1\n  done\n  echo \"Operation timed out\" >&2\n  exit 1\n}\n\nwhile [ $# -gt 0 ]\ndo\n  case \"$1\" in\n    *:* )\n    HOST=$(printf \"%s\\n\" \"$1\"| cut -d : -f 1)\n    PORT=$(printf \"%s\\n\" \"$1\"| cut -d : -f 2)\n    shift 1\n    ;;\n    -q | --quiet)\n    QUIET=1\n    shift 1\n    ;;\n    -t)\n    TIMEOUT=\"$2\"\n    if [ \"$TIMEOUT\" = \"\" ]; then break; fi\n    shift 2\n    ;;\n    --timeout=*)\n    TIMEOUT=\"${1#*=}\"\n    shift 1\n    ;;\n    --)\n    shift\n    break\n    ;;\n    --help)\n    usage 0\n    ;;\n    *)\n    echoerr \"Unknown argument: $1\"\n    usage 1\n    ;;\n  esac\ndone\n\nif [ \"$HOST\" = \"\" -o \"$PORT\" = \"\" ]; then\n  echoerr \"Error: you need to provide a host and port to test.\"\n  usage 2\nfi\n\nwait_for \"$@\"\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_004_nodejs_mongo_k8s/README.md",
    "content": "\n### Nodejs Mongo Application on kubernetes GCP\n\n[docs](https://www.digitalocean.com/community/tutorials/how-to-migrate-a-docker-compose-workflow-to-kubernetes)\n\n- Build Project\n\n```bash\n$ docker build -t codeaprendiz/node-kubernetes .  \n```\n\n- Docker Login\n\n```bash\n$ docker login -u codeaprendiz                  \nPassword: \nLogin Succeeded\n```\n\n- Push the image\n\n```bash\n$ docker push codeaprendiz/node-kubernetes                                    \n```\n\n\n- Create secrets\n\n\n```bash\n$ kubectl create secret generic mongo-secret --from-literal=MONGO_USERNAME=admin --from-literal=MONGO_PASSWORD=password --dry-run=client -o yaml\napiVersion: v1\ndata:\n  MONGO_PASSWORD: cGFzc3dvcmQ=\n  MONGO_USERNAME: YWRtaW4=\nkind: Secret\nmetadata:\n  creationTimestamp: null\n  name: mongo-secret\n```\n\n\n- Set up a k8s cluster on GCP\n\n```bash\n$ kubectl get storageclass\nNAME                 PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE\npremium-rwo          pd.csi.storage.gke.io   Delete          WaitForFirstConsumer   true                   3m6s\nstandard (default)   kubernetes.io/gce-pd    Delete          Immediate              true                   3m6s\nstandard-rwo         pd.csi.storage.gke.io   Delete          WaitForFirstConsumer   true                   3m6s\n```\n\n- Create resources\n\n```bash\n$ kubectl apply -f .\ndeployment.apps/db created\nservice/db created\npersistentvolumeclaim/dbdata created\ndeployment.apps/nodejs created\nconfigmap/nodejs-env created\nservice/nodejs created\nsecret/mongo-secret created\n\n$ kubectl get pods\nNAME                      READY   STATUS              RESTARTS   AGE\ndb-78d59f4dd6-5wcnn       0/1     ContainerCreating   0          15s\nnodejs-6b55db9445-jtqg4   0/1     Init:0/1            0          14s\n\n$ kubectl get svc\nNAME         TYPE           CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE\ndb           ClusterIP      10.8.4.245   <none>        27017/TCP      21s\nkubernetes   ClusterIP      10.8.0.1     <none>        443/TCP        36m\nnodejs       LoadBalancer   10.8.10.40   <pending>     80:30248/TCP   20s\n\n$ kubectl get pods\nNAME                      READY   STATUS    RESTARTS   AGE\ndb-78d59f4dd6-5wcnn       1/1     Running   0          49s\nnodejs-6b55db9445-jtqg4   1/1     Running   0          48s\n\n$ kubectl logs -f nodejs-6b55db9445-jtqg4\nExample app listening on 8080!\nMongoDB is connected\n\n$ kubectl get svc\nNAME         TYPE           CLUSTER-IP   EXTERNAL-IP     PORT(S)        AGE\ndb           ClusterIP      10.8.4.245   <none>          27017/TCP      5m49s\nkubernetes   ClusterIP      10.8.0.1     <none>          443/TCP        42m\nnodejs       LoadBalancer   10.8.10.40   35.239.116.72   80:30248/TCP   5m48s\n```\n\n- Accessing the application\n\n  - Home page\n\n![](.images/home-page.png)\n\n\n  - Get Shark Info Page\n  \n![](.images/get-shark-info-page.png)\n\n  - After adding sharks\n  \n![](.images/after-adding-sharks.png)\n\n\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_004_nodejs_mongo_k8s/db-deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  annotations:\n    kompose.cmd: kompose convert\n    kompose.version: 1.18.0 (06a2e56)\n  labels:\n    io.kompose.service: db\n  name: db\nspec:\n  replicas: 1\n  strategy:\n    type: Recreate\n  template:\n    metadata:\n      labels:\n        io.kompose.service: db\n    spec:\n      containers:\n      - env:\n        - name: MONGO_INITDB_ROOT_PASSWORD\n#          value: \"password\"\n          valueFrom:\n            secretKeyRef:\n              name: mongo-secret\n              key: MONGO_PASSWORD\n        - name: MONGO_INITDB_ROOT_USERNAME\n#          value: \"admin\"\n          valueFrom:\n            secretKeyRef:\n              name: mongo-secret\n              key: MONGO_USERNAME\n        image: mongo:4.1.8-xenial\n        name: db\n        resources: {}\n        volumeMounts:\n        - mountPath: /data/db\n          name: dbdata\n      restartPolicy: Always\n      volumes:\n      - name: dbdata\n        persistentVolumeClaim:\n          claimName: dbdata\n  selector:\n    matchLabels:\n      io.kompose.service: db\nstatus: {}\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_004_nodejs_mongo_k8s/db-service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  annotations:\n    kompose.cmd: kompose convert\n    kompose.version: 1.18.0 (06a2e56)\n  labels:\n    io.kompose.service: db\n  name: db\nspec:\n  ports:\n    - port: 27017\n      targetPort: 27017\n  selector:\n    io.kompose.service: db\nstatus:\n  loadBalancer: {}"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_004_nodejs_mongo_k8s/dbdata-persistentvolumeclaim.yaml",
    "content": "apiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n  labels:\n    io.kompose.service: dbdata\n  name: dbdata\nspec:\n  accessModes:\n  - ReadWriteOnce\n  resources:\n    requests:\n      storage: 1Gi\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_004_nodejs_mongo_k8s/node_project/.dockerignore",
    "content": "node_modules\nnpm-debug.log\nDockerfile\n.dockerignore\n.git\nREADME.md\n.gitignore\n.env\n\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_004_nodejs_mongo_k8s/node_project/.gitignore",
    "content": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\n# Runtime data\npids\n*.pid\n*.seed\n*.pid.lock\n\n# Directory for instrumented libs generated by jscoverage/JSCover\nlib-cov\n\n# Coverage directory used by tools like istanbul\ncoverage\n\n# nyc test coverage\n.nyc_output\n\n# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)\n.grunt\n\n# Bower dependency directory (https://bower.io/)\nbower_components\n\n# node-waf configuration\n.lock-wscript\n\n# Compiled binary addons (https://nodejs.org/api/addons.html)\nbuild/Release\n\n# Dependency directories\nnode_modules/\njspm_packages/\n\n# TypeScript v1 declaration files\ntypings/\n\n# Optional npm cache directory\n.npm\n\n# Optional eslint cache\n.eslintcache\n\n# Optional REPL history\n.node_repl_history\n\n# Output of 'npm pack'\n*.tgz\n\n# Yarn Integrity file\n.yarn-integrity\n\n\n\n# parcel-bundler cache (https://parceljs.org/)\n.cache\n\n# next.js build output\n.next\n\n# nuxt.js build output\n.nuxt\n\n# vuepress build output\n.vuepress/dist\n\n# Serverless directories\n.serverless/\n\n# FuseBox cache\n.fusebox/\n\n#DynamoDB Local files\n.dynamodb/\n\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_004_nodejs_mongo_k8s/node_project/Dockerfile",
    "content": "FROM node:10-alpine\n\nRUN mkdir -p /home/node/app/node_modules && chown -R node:node /home/node/app\n\nWORKDIR /home/node/app\n\nCOPY package*.json ./\n\nUSER node\n\nRUN npm install\n\nCOPY --chown=node:node . .\n\nEXPOSE 8080\n\nCMD [ \"node\", \"app.js\" ]\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_004_nodejs_mongo_k8s/node_project/app.js",
    "content": "const express = require('express');\nconst app = express();\nconst router = express.Router();\nconst db = require('./db');\nconst sharks = require('./routes/sharks');\n\nconst path = __dirname + '/views/';\nconst port = process.env.PORT || 8080;\n\napp.engine('html', require('ejs').renderFile);\napp.set('view engine', 'html');\napp.use(express.urlencoded({ extended: true }));\napp.use(express.static(path));\napp.use('/sharks', sharks);\n\napp.listen(port, function () {\n  console.log(`Example app listening on ${port}!`)\n})\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_004_nodejs_mongo_k8s/node_project/controllers/sharks.js",
    "content": "const path = require('path');\nconst Shark = require('../models/sharks');\n\nexports.index = function (req, res) {\n    res.sendFile(path.resolve('views/sharks.html'));\n};\n\nexports.create = function (req, res) {\n    var newShark = new Shark(req.body);\n    console.log(req.body);\n    newShark.save(function (err) {\n            if(err) {\n            res.status(400).send('Unable to save shark to database');\n        } else {\n            res.redirect('/sharks/getshark');\n        }\n  });\n               };\n\nexports.list = function (req, res) {\n        Shark.find({}).exec(function (err, sharks) {\n                if (err) {\n                        return res.send(500, err);\n                }\n                res.render('getshark', {\n                        sharks: sharks\n             });\n        });\n};\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_004_nodejs_mongo_k8s/node_project/db.js",
    "content": "const mongoose = require('mongoose');\n\nconst {\n  MONGO_USERNAME,\n  MONGO_PASSWORD,\n  MONGO_HOSTNAME,\n  MONGO_PORT,\n  MONGO_DB\n} = process.env;\n\nconst options = {\n  useNewUrlParser: true,\n  reconnectTries: Number.MAX_VALUE,\n  reconnectInterval: 500,\n  connectTimeoutMS: 10000,\n};\n\nconst url = `mongodb://${MONGO_USERNAME}:${MONGO_PASSWORD}@${MONGO_HOSTNAME}:${MONGO_PORT}/${MONGO_DB}?authSource=admin`;\n\nmongoose.connect(url, options).then( function() {\n  console.log('MongoDB is connected');\n})\n  .catch( function(err) {\n  console.log(err);\n});\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_004_nodejs_mongo_k8s/node_project/docker-compose.yaml",
    "content": "version: '3'\n\nservices:\n  nodejs:\n    image: codeaprendiz/node-kubernetes\n    container_name: nodejs\n    restart: always\n    env_file: .env\n    environment:\n      - MONGO_USERNAME=$MONGO_USERNAME\n      - MONGO_PASSWORD=$MONGO_PASSWORD\n      - MONGO_HOSTNAME=db\n      - MONGO_PORT=$MONGO_PORT\n      - MONGO_DB=$MONGO_DB\n    ports:\n      - \"80:8080\"\n    networks:\n      - app-network\n\n  db:\n    image: mongo:4.1.8-xenial\n    container_name: db\n    restart: always\n    environment:\n      - MONGO_INITDB_ROOT_USERNAME=$MONGO_USERNAME\n      - MONGO_INITDB_ROOT_PASSWORD=$MONGO_PASSWORD\n    volumes:\n      - dbdata:/data/db\n    networks:\n      - app-network\n\nnetworks:\n  app-network:\n    driver: bridge\n\nvolumes:\n  dbdata:\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_004_nodejs_mongo_k8s/node_project/models/sharks.js",
    "content": "const mongoose = require('mongoose');\nconst Schema = mongoose.Schema;\n\nconst Shark = new Schema ({\n        name: { type: String, required: true },\n        character: { type: String, required: true },\n});\n\nmodule.exports = mongoose.model('Shark', Shark)\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_004_nodejs_mongo_k8s/node_project/package.json",
    "content": "{\n  \"name\": \"nodejs-image-demo\",\n  \"version\": \"1.0.0\",\n  \"description\": \"nodejs image demo\",\n  \"author\": \"katjuell <kathleenjuell@gmail.com>\",\n  \"license\": \"MIT\",\n  \"main\": \"app.js\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/katjuell/nodejs-image-demo.git\"\n  },\n  \"keywords\": [\n    \"nodejs\",\n    \"bootstrap\",\n    \"express\"\n  ],\n  \"dependencies\": {\n    \"ejs\": \"^2.6.1\",\n    \"express\": \"^4.16.4\",\n    \"mongoose\": \"^5.4.10\"\n  },\n  \"devDependencies\": {\n    \"nodemon\": \"^1.18.10\"\n  }\n}\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_004_nodejs_mongo_k8s/node_project/routes/index.js",
    "content": "const express = require('express');\nconst router = express.Router();\nconst path = require('path');\n\nrouter.use (function (req,res,next) {\n  console.log('/' + req.method);\n  next();\n});\n\nrouter.get('/',function(req,res){\n  res.sendFile(path.resolve('views/index.html'));\n});\n\nmodule.exports = router;\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_004_nodejs_mongo_k8s/node_project/routes/sharks.js",
    "content": "const express = require('express');\nconst router = express.Router();\nconst shark = require('../controllers/sharks');\n\nrouter.get('/', function(req, res){\n    shark.index(req,res);\n});\n\nrouter.post('/addshark', function(req, res) {\n    shark.create(req,res);\n});\n\nrouter.get('/getshark', function(req, res) {\n    shark.list(req,res);\n});\n\nmodule.exports = router;\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_004_nodejs_mongo_k8s/node_project/views/css/styles.css",
    "content": ".navbar {\n    margin-bottom: 0;\n    background: #000000;\n}\n\nbody {\n    background: #000000;\n    color: #ffffff;\n    font-family: 'Merriweather', sans-serif;\n}\n\nh1,\nh2 {\n    font-weight: bold;\n}\n\np {\n    font-size: 16px;\n    color: #ffffff;\n}\n\n.jumbotron {\n    background: #0048CD;\n    color: white;\n    text-align: center;\n}\n\n.jumbotron p {\n    color: white;\n    font-size: 26px;\n}\n\n.btn-primary {\n    color: #fff;\n    text-color: #000000;\n    border-color: white;\n    margin-bottom: 5px;\n}\n\nimg,\nvideo,\naudio {\n    margin-top: 20px;\n    max-width: 80%;\n}\n\ndiv.caption: {\n    float: left;\n    clear: both;\n}\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_004_nodejs_mongo_k8s/node_project/views/getshark.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <title>About Sharks</title>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n    <link rel=\"stylesheet\" href=\"https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css\" integrity=\"sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO\" crossorigin=\"anonymous\">\n    <link href=\"/css/styles.css\" rel=\"stylesheet\">\n    <link href=\"https://fonts.googleapis.com/css?family=Merriweather:400,700\" rel=\"stylesheet\" type=\"text/css\">\n</head>\n<nav class=\"navbar navbar-dark navbar-static-top navbar-expand-md\">\n    <div class=\"container\">\n        <button type=\"button\" class=\"navbar-toggler collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\" aria-expanded=\"false\"> <span class=\"sr-only\">Toggle navigation</span>\n        </button> <a class=\"navbar-brand\" href=\"/\">Everything Sharks</a>\n        <div class=\"collapse navbar-collapse\" id=\"bs-example-navbar-collapse-1\">\n            <ul class=\"nav navbar-nav mr-auto\">\n                <li class=\"nav-item\"><a href=\"/\" class=\"nav-link\">Home</a>\n                </li>\n                <li class=\"active nav-item\"><a href=\"/sharks\" class=\"nav-link\">Sharks</a>\n                </li>\n            </ul>\n        </div>\n    </div>\n</nav>\n<div class=\"jumbotron text-center\">\n    <h1>Shark Info</h1>\n</div>\n<div class=\"container\">\n    <div class=\"row\">\n        <div class=\"col-lg-4\">\n            <p>\n                <div class=\"caption\">Some sharks are known to be dangerous to humans, though many more are not. The sawshark, for example, is not considered a threat to humans.\n                </div>\n                <img src=\"https://assets.digitalocean.com/articles/docker_node_image/sawshark.jpg\" alt=\"Sawshark\">\n            </p>\n        </div>\n        <div class=\"col-lg-4\">\n            <p>\n                <div class=\"caption\">Other sharks are known to be friendly and welcoming!</div>\n                <img src=\"https://assets.digitalocean.com/articles/docker_node_image/sammy.png\" alt=\"Sammy the Shark\">\n            </p>\n        </div>\n\t<div class=\"col-lg-4\">\n            <p>\n              <div class=\"caption\">Your Sharks</div>\n                  <ul>\n                     <% sharks.forEach(function(shark) { %>\n                        <p>Name: <%= shark.name %></p>\n                        <p>Character: <%= shark.character %></p>\n                     <% }); %>\n                  </ul>\n            </p>\n        </div>\n    </div>\n  </div>\n</html>\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_004_nodejs_mongo_k8s/node_project/views/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <title>About Sharks</title>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n    <link rel=\"stylesheet\" href=\"https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css\" integrity=\"sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO\" crossorigin=\"anonymous\">\n    <link href=\"/css/styles.css\" rel=\"stylesheet\">\n    <link href=\"https://fonts.googleapis.com/css?family=Merriweather:400,700\" rel=\"stylesheet\" type=\"text/css\">\n</head>\n\n<body>\n    <nav class=\"navbar navbar-dark navbar-static-top navbar-expand-md\">\n        <div class=\"container\">\n            <button type=\"button\" class=\"navbar-toggler collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\" aria-expanded=\"false\"> <span class=\"sr-only\">Toggle navigation</span>\n            </button> <a class=\"navbar-brand\" href=\"#\">Everything Sharks</a>\n            <div class=\"collapse navbar-collapse\" id=\"bs-example-navbar-collapse-1\">\n                <ul class=\"nav navbar-nav mr-auto\">\n                    <li class=\"active nav-item\"><a href=\"/\" class=\"nav-link\">Home</a>\n                    </li>\n                    <li class=\"nav-item\"><a href=\"/sharks\" class=\"nav-link\">Sharks</a>\n                    </li>\n                </ul>\n            </div>\n        </div>\n    </nav>\n    <div class=\"jumbotron\">\n        <div class=\"container\">\n            <h1>Want to Learn About Sharks?</h1>\n            <p>Are you ready to learn about sharks?</p>\n            <br>\n            <p><a class=\"btn btn-primary btn-lg\" href=\"/sharks\" role=\"button\">Get Shark Info</a>\n            </p>\n        </div>\n    </div>\n    <div class=\"container\">\n        <div class=\"row\">\n            <div class=\"col-lg-6\">\n                <h3>Not all sharks are alike</h3>\n                <p>Though some are dangerous, sharks generally do not attack humans. Out of the 500 species known to researchers, only 30 have been known to attack humans.\n                </p>\n            </div>\n            <div class=\"col-lg-6\">\n                <h3>Sharks are ancient</h3>\n                <p>There is evidence to suggest that sharks lived up to 400 million years ago.\n                </p>\n            </div>\n        </div>\n    </div>\n  </body>\n</html>\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_004_nodejs_mongo_k8s/node_project/views/sharks.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <title>About Sharks</title>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n    <link rel=\"stylesheet\" href=\"https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css\" integrity=\"sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO\" crossorigin=\"anonymous\">\n    <link href=\"/css/styles.css\" rel=\"stylesheet\">\n    <link href=\"https://fonts.googleapis.com/css?family=Merriweather:400,700\" rel=\"stylesheet\" type=\"text/css\">\n</head>\n<nav class=\"navbar navbar-dark navbar-static-top navbar-expand-md\">\n    <div class=\"container\">\n        <button type=\"button\" class=\"navbar-toggler collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\" aria-expanded=\"false\"> <span class=\"sr-only\">Toggle navigation</span>\n        </button> <a class=\"navbar-brand\" href=\"/\">Everything Sharks</a>\n        <div class=\"collapse navbar-collapse\" id=\"bs-example-navbar-collapse-1\">\n            <ul class=\"nav navbar-nav mr-auto\">\n                <li class=\"nav-item\"><a href=\"/\" class=\"nav-link\">Home</a>\n                </li>\n                <li class=\"active nav-item\"><a href=\"/sharks\" class=\"nav-link\">Sharks</a>\n                </li>\n            </ul>\n        </div>\n    </div>\n</nav>\n<div class=\"jumbotron text-center\">\n    <h1>Shark Info</h1>\n</div>\n<div class=\"container\">\n    <div class=\"row\">\n        <div class=\"col-lg-4\">\n            <p>\n                <div class=\"caption\">Some sharks are known to be dangerous to humans, though many more are not. The sawshark, for example, is not considered a threat to humans.\n                </div>\n                <img src=\"https://assets.digitalocean.com/articles/docker_node_image/sawshark.jpg\" alt=\"Sawshark\">\n            </p>\n        </div>\n        <div class=\"col-lg-4\">\n            <p>\n                <div class=\"caption\">Other sharks are known to be friendly and welcoming!</div>\n                <img src=\"https://assets.digitalocean.com/articles/docker_node_image/sammy.png\" alt=\"Sammy the Shark\">\n            </p>\n        </div>\n\t<div class=\"col-lg-4\">\n            <p>\n                <form action=\"/sharks/addshark\" method=\"post\">\n                    <div class=\"caption\">Enter Your Shark</div>\n                    <input type=\"text\" placeholder=\"Shark Name\" name=\"name\" <%=sharks[i].name; %>\n                    <input type=\"text\" placeholder=\"Shark Character\" name=\"character\" <%=sharks[i].character; %>\n                    <button type=\"submit\">Submit</button>\n                </form>\n            </p>\n        </div>\n    </div>\n  </div>\n</html>\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_004_nodejs_mongo_k8s/node_project/wait-for.sh",
    "content": "#!/bin/sh\n\n# original script: https://github.com/eficode/wait-for/blob/master/wait-for\n\nTIMEOUT=15\nQUIET=0\n\nechoerr() {\n  if [ \"$QUIET\" -ne 1 ]; then printf \"%s\\n\" \"$*\" 1>&2; fi\n}\n\nusage() {\n  exitcode=\"$1\"\n  cat << USAGE >&2\nUsage:\n  $cmdname host:port [-t timeout] [-- command args]\n  -q | --quiet                        Do not output any status messages\n  -t TIMEOUT | --timeout=timeout      Timeout in seconds, zero for no timeout\n  -- COMMAND ARGS                     Execute command with args after the test finishes\nUSAGE\n  exit \"$exitcode\"\n}\n\nwait_for() {\n  for i in `seq $TIMEOUT` ; do\n    nc -z \"$HOST\" \"$PORT\" > /dev/null 2>&1\n\n    result=$?\n    if [ $result -eq 0 ] ; then\n      if [ $# -gt 0 ] ; then\n        exec \"$@\"\n      fi\n      exit 0\n    fi\n    sleep 1\n  done\n  echo \"Operation timed out\" >&2\n  exit 1\n}\n\nwhile [ $# -gt 0 ]\ndo\n  case \"$1\" in\n    *:* )\n    HOST=$(printf \"%s\\n\" \"$1\"| cut -d : -f 1)\n    PORT=$(printf \"%s\\n\" \"$1\"| cut -d : -f 2)\n    shift 1\n    ;;\n    -q | --quiet)\n    QUIET=1\n    shift 1\n    ;;\n    -t)\n    TIMEOUT=\"$2\"\n    if [ \"$TIMEOUT\" = \"\" ]; then break; fi\n    shift 2\n    ;;\n    --timeout=*)\n    TIMEOUT=\"${1#*=}\"\n    shift 1\n    ;;\n    --)\n    shift\n    break\n    ;;\n    --help)\n    usage 0\n    ;;\n    *)\n    echoerr \"Unknown argument: $1\"\n    usage 1\n    ;;\n  esac\ndone\n\nif [ \"$HOST\" = \"\" -o \"$PORT\" = \"\" ]; then\n  echoerr \"Error: you need to provide a host and port to test.\"\n  usage 2\nfi\n\nwait_for \"$@\"\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_004_nodejs_mongo_k8s/nodejs-deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  annotations:\n    kompose.cmd: kompose convert\n    kompose.version: 1.18.0 (06a2e56)\n  labels:\n    io.kompose.service: nodejs\n  name: nodejs\nspec:\n  replicas: 1\n  strategy: {}\n  template:\n    metadata:\n      labels:\n        io.kompose.service: nodejs\n    spec:\n      containers:\n      - env:\n        - name: MONGO_DB\n          valueFrom:\n            configMapKeyRef:\n              key: MONGO_DB\n              name: nodejs-env\n        - name: MONGO_HOSTNAME\n          value: db\n        - name: MONGO_PASSWORD\n#          value: \"password\"\n          valueFrom:\n            secretKeyRef:\n              name: mongo-secret\n              key: MONGO_PASSWORD\n        - name: MONGO_PORT\n          valueFrom:\n            configMapKeyRef:\n              key: MONGO_PORT\n              name: nodejs-env\n        - name: MONGO_USERNAME\n#          value: \"admin\"\n          valueFrom:\n            secretKeyRef:\n              name: mongo-secret\n              key: MONGO_USERNAME\n        image: codeaprendiz/node-kubernetes\n        name: nodejs\n        ports:\n        - containerPort: 8080\n        resources: {}\n      initContainers:\n        - name: init-db\n          image: busybox\n          command: ['sh', '-c', 'until nc -z db:27017; do echo waiting for db; sleep 2; done;']\n      restartPolicy: Always\n  selector:\n    matchLabels:\n      io.kompose.service: nodejs\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_004_nodejs_mongo_k8s/nodejs-env-configmap.yaml",
    "content": "apiVersion: v1\ndata:\n  MONGO_DB: sharkinfo\n  MONGO_PORT: \"27017\"\nkind: ConfigMap\nmetadata:\n  labels:\n    io.kompose.service: nodejs-env\n  name: nodejs-env\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_004_nodejs_mongo_k8s/nodejs-service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  annotations:\n    kompose.cmd: kompose convert\n    kompose.version: 1.18.0 (06a2e56)\n  labels:\n    io.kompose.service: nodejs\n  name: nodejs\nspec:\n  type: LoadBalancer\n  ports:\n  - name: \"80\"\n    port: 80\n    targetPort: 8080\n  selector:\n    io.kompose.service: nodejs\nstatus:\n  loadBalancer: {}\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_004_nodejs_mongo_k8s/secret.yaml",
    "content": "apiVersion: v1\ndata:\n  MONGO_PASSWORD: cGFzc3dvcmQ=\n  MONGO_USERNAME: YWRtaW4=\nkind: Secret\nmetadata:\n  name: mongo-secret"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_005_nodejs_mongo_k8s_helm_scale/README.md",
    "content": "### Objectives\n\n[Referred - doc](https://www.digitalocean.com/community/tutorials/how-to-scale-a-node-js-application-with-mongodb-on-kubernetes-using-helm)\n\n\nTasks |   Exit Criteria | Status |\n---    | --- | --- | \nNodejs Mongo App | Create an application with Nodejs with Mongo as database | Done\nClean Dockerfile | Try to optimize the Dockerfile by removing all unnecessary cache/files to reduce the image size. | Done\nDocker Image Size | Remove caches | Done\ndocker-compose up  | docker-compose up runs the app locally | Done | \nkubernetes resources | You should have all k8s resources | Done | \nHealth checks on pods | Health check probes like /healthz or any other | Done\nAutomatic Scaling | No of pods should increase if load increases | Done\nUse Config Maps for environments vars | Use config maps for env vars | Done\nUse Secrets for passwords | Use secrets for passwords | Done\nHave declarative resource limits in pods | Define resource limits in pods | Done\nMongoDB replicaset | Ensure that you are using mongodb replicaset for high availability | Done\nPersistence Volume Claim | Ensure that you are using persistent volume claim in k8s for the mongodb database | Done\nUse Helm to create template | Use helm charts for node and mongo | Done\nUse Load Balancer as Ingress | Use load balancer as ingress | Done\nUse Nginx/traefik as Ingress if not Load Balancer |  | \nSecurity | Removing unnecessary binaries/permissions to improve container security is a huge plus. |  \n\n### Nodejs Mongo App\n\nWe are using node `v15.8.0` and mongodb to run the application\n\n### Clean Dockerfile and Docker Image Size\n\nWe are not mounting the folder `node_modules` to the container so the docker-image size is greatly reduced.\n\n\n### docker-compose up\n\n- Edit the db.js and change the connnection URI to use the non-replica set URL as we are running it locally\n- The following is the successful run of the app, adding one document to the DB\n```bash\n$ docker-compose up  \nCreating network \"node_project_app-network\" with driver \"bridge\"\nCreating db     ... done\nCreating nodejs ... done\nAttaching to db, nodejs\n.\n.\ndb        | 2021-02-25T18:32:06.552+0000 I ACCESS   [conn2] Successfully authenticated as principal sammy on admin\nnodejs    | MongoDB is connected\nnodejs    | { name: 'Ankit', character: 'Rathi' }\ndb        | 2021-02-25T18:32:35.950+0000 I SHARDING [conn2] Marking collection sharkinfo.sharks as collection version: <unsharded>\n```\n\n- change the connection URI to default again\n\n\n- build image using\n\n```bash\n$ docker build -t codeaprendiz/node-replicas .  \n```\n\n- login to dockerhub\n\n```bash\n$ docker login -u codeaprendiz                \nPassword: \nLogin Succeeded\n```\n\n- push the image\n\n```bash\n$ docker push codeaprendiz/node-replicas  \n```\n\n- create secret for mongo\n\n```bash\n$ kubectl create secret generic mongo-secret --from-literal=mongodb-root-password=password --from-literal=mongodb-replica-set-key=key123 --dry-run=client -o yaml\napiVersion: v1\ndata:\n  mongodb-replica-set-key: a2V5MTIz\n  mongodb-root-password: cGFzc3dvcmQ=\nkind: Secret\nmetadata:\n  creationTimestamp: null\n  name: mongo-secret\n```\n\n- Ensure that you have a storage class in your k8s cluster\n\n- Create the values file mongodb-values.yaml\n\n- Add stable version of the mongodb-replicaset chart \n\n  - [Referred stackoverflow](https://stackoverflow.com/questions/57970255/helm-v3-cannot-find-the-official-repo)\n  - [bitnami/mongodb](https://github.com/bitnami/charts/tree/master/bitnami/mongodb)\n  - [values.yam](https://github.com/bitnami/charts/blob/master/bitnami/mongodb/values.yaml)\n\n```bash\n$ helm version                  \nversion.BuildInfo{Version:\"v3.5.2\", GitCommit:\"167aac70832d3a384f65f9745335e9fb40169dc2\", GitTreeState:\"dirty\", GoVersion:\"go1.15.7\"}\n\n$ helm repo add stable https://charts.helm.sh/stable\n\"stable\" has been added to your repositories\n\n$ helm repo add bitnami https://charts.bitnami.com/bitnami\n\"bitnami\" has been added to your repositories\n\n$ helm repo update                                                                                   \nHang tight while we grab the latest from your chart repositories...\n...Successfully got an update from the \"bitnami\" chart repository\n...Successfully got an update from the \"stable\" chart repository\nUpdate Complete. ⎈Happy Helming!⎈\n\n\n\n## Lets create the templates\n$ helm template mongo1 -f mongodb-values.yaml bitnami/mongodb > resources-db.yaml\n```\n\n\n- Let's deploy mongodb on k8s cluster and check if its working as expected\n\n```bash\n$ kubectl create secret generic mongo-secret --from-literal=mongodb-root-password=password --from-literal=mongodb-replica-set-key=key123\nsecret/mongo-secret created\n$ kubectl apply -f resources-db.yaml\nserviceaccount/mongo-mongodb created\nconfigmap/mongo-mongodb-scripts created\nservice/mongo-mongodb-arbiter-headless created\nservice/mongo-mongodb-headless created\nstatefulset.apps/mongo-mongodb-arbiter created\nstatefulset.apps/mongo-mongodb created\n$ kubectl get pods\nNAME                      READY   STATUS              RESTARTS   AGE\nmongo-mongodb-0           0/1     ContainerCreating   0          4s\nmongo-mongodb-arbiter-0   0/1     Running             0          4s\n$ kubectl get pods\nNAME                      READY   STATUS    RESTARTS   AGE\nmongo-mongodb-0           1/1     Running   0          38s\nmongo-mongodb-1           0/1     Running   0          11s\nmongo-mongodb-arbiter-0   1/1     Running   0          38s\n$ kubectl exec -it mongo-mongodb-0 -- sh\n$ hostname\nmongo-mongodb-0\n$ mongo --host mongo-mongodb-0.mongo-mongodb-headless.default.svc.cluster.local --username=root --password=password\nMongoDB shell version v4.4.4\nconnecting to: mongodb://mongo-mongodb-0.mongo-mongodb-headless.default.svc.cluster.local:27017/?compressors=disabled&gssapiServiceName=mongodb\nImplicit session: session { \"id\" : UUID(\"4fff93b7-95e6-4150-a69d-a8078b03a870\") }\nMongoDB server version: 4.4.4\n---\nThe server generated these startup warnings when booting:\n        2021-02-25T19:16:56.215+00:00: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem\n---\n---\n        Enable MongoDB's free cloud-based monitoring service, which will then receive and display\n        metrics about your deployment (disk utilization, CPU, operation statistics, etc).\n\n        The monitoring data will be available on a MongoDB website with a unique URL accessible to you\n        and anyone you share the URL with. MongoDB may use this information to make product\n        improvements and to suggest MongoDB products and deployment options to you.\n\n        To enable free monitoring, run the following command: db.enableFreeMonitoring()\n        To permanently disable this reminder, run the following command: db.disableFreeMonitoring()\n---\ndb:PRIMARY>\n```\n\nSo our database is working! :)\n\n\n\n- Creating Custom Application Chart and Configuring parameters\n\n```bash\n$ helm create nodeapp\nCreating nodeapp\n```\n\n\n- Add the following data to the configmap\n\n\n```yaml\nMONGO_HOSTNAME: \"mongo-mongodb-0.mongo-mongodb-headless.default.svc.cluster.local,mongo-mongodb-1.mongo-mongodb-headless.default.svc.cluster.local,mongo-mongodb-2.mongo-mongodb-headless.default.svc.cluster.local\"\nMONGO_PORT: \"27017\"\nMONGO_DB: \"sharkinfo\"\nMONGO_REPLICASET: \"db\"\n```\n\n- Update our secret with more required values\n\n```bash\n$ kubectl create secret generic mongo-secret \\\n--from-literal=mongodb-root-password=password \\\n--from-literal=mongodb-replica-set-key=key123  \\\n--from-literal=MONGO_USERNAME=root \\\n--from-literal=MONGO_PASSWORD=password \\\n--dry-run=client -o yaml\napiVersion: v1\ndata:\n  MONGO_PASSWORD: cGFzc3dvcmQ=\n  MONGO_USERNAME: cm9vdA==\n  mongodb-replica-set-key: a2V5MTIz\n  mongodb-root-password: cGFzc3dvcmQ=\nkind: Secret\nmetadata:\n  creationTimestamp: null\n  name: mongo-secret\n```\n\n- Generate the yaml's for the application\n\n```bash\n$ helm template app ./nodeapp > resources-app.yaml\n```\n\n\n#### How to deploy the application\n\n- create secret\n\n```bash\n$ kubectl apply -f secret.yaml\nsecret/mongo-secret created\n```\n\n- Deploy the database resources first\n```bash\n$ kubectl apply -f resources-db.yaml\nserviceaccount/mongo-mongodb created\nconfigmap/mongo-mongodb-scripts created\nservice/mongo-mongodb-arbiter-headless created\nservice/mongo-mongodb-headless created\nstatefulset.apps/mongo-mongodb-arbiter created\nstatefulset.apps/mongo-mongodb created\n\n$ kubectl get pods\nNAME                      READY   STATUS    RESTARTS   AGE\nmongo-mongodb-0           1/1     Running   0          93s\nmongo-mongodb-1           1/1     Running   0          62s\nmongo-mongodb-2           1/1     Running   0          42s\nmongo-mongodb-arbiter-0   1/1     Running   0          93s\n```\n\n- Once db is up, deploy the app\n\n```bash\n$ kubectl apply -f resources-app.yaml\nserviceaccount/app-nodeapp created\nsecret/app-auth created\nconfigmap/app-config created\nservice/app-nodeapp created\ndeployment.apps/app-nodeapp created\nhorizontalpodautoscaler.autoscaling/app-nodeapp created\npod/app-nodeapp-test-connection created\n\n\n### Note that there is only one pod duo to auto-scaling enabled (HPA). Ignore the app-nodeapp-test-connection. Please.\n$ kubectl get pods\nNAME                           READY   STATUS    RESTARTS   AGE\napp-nodeapp-6dfc8c56b6-cblvn   1/1     Running   0          102s\napp-nodeapp-test-connection    0/1     Error     0          102s\nmongo-mongodb-0                1/1     Running   0          3m30s\nmongo-mongodb-1                1/1     Running   0          2m59s\nmongo-mongodb-2                1/1     Running   0          2m39s\nmongo-mongodb-arbiter-0        1/1     Running   0          3m30s\n\n$ kubectl logs -f app-nodeapp-6dfc8c56b6-cblvn\nExample app listening on 8080!\nMongoDB is connected\n\n$ kubectl get svc\nNAME                             TYPE           CLUSTER-IP   EXTERNAL-IP      PORT(S)        AGE\napp-nodeapp                      LoadBalancer   10.8.2.120   35.202.195.148   80:31304/TCP   3m54s\nkubernetes                       ClusterIP      10.8.0.1     <none>           443/TCP        10h\nmongo-mongodb-arbiter-headless   ClusterIP      None         <none>           27017/TCP      5m42s\nmongo-mongodb-headless           ClusterIP      None         <none>           27017/TCP      5m42s\n```\n\n\n#### Screenshots\n\n- Homepage\n\n![](.images/app-homepage.png)\n\n\n- Add shark\n\n![](.images/add-shark-page.png)\n\n- After adding shark\n\n![](.images/after-adding-shark.png)"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_005_nodejs_mongo_k8s_helm_scale/mongodb-values.yaml",
    "content": "# https://github.com/bitnami/charts/blob/master/bitnami/mongodb/values.yaml\nimage:\n  registry: docker.io\n  repository: bitnami/mongodb\n  tag: 4.4.4-debian-10-r0\n  pullPolicy: IfNotPresent\n  debug: false\n\nclusterDomain: cluster.local\n\narchitecture: replicaset\n\n## Use StatefulSet instead of Deployment when deploying standalone\n##\nuseStatefulSet: true\n\nauth:\n  enabled: true\n  ## MongoDB(R) root password\n  ## ref: https://github.com/bitnami/bitnami-docker-mongodb/blob/master/README.md#setting-the-root-password-on-first-run\n  ##\n#  rootPassword: \"password\"\n\n#  username: admin\n#  password: password\n#  database: sharkinfo\n\n  replicaSetKey: \"\"\n\n  ## Existing secret with MongoDB(R) credentials\n  ## NOTE: When it's set the previous parameters are ignored.\n  ##\n  existingSecret: mongo-secret\n\ntls:\n  enabled: false\n  image:\n    registry: docker.io\n    repository: bitnami/nginx\n    tag: 1.19.6-debian-10-r51\n    pullPolicy: IfNotPresent\n\nhostAliases: []\n\nreplicaSetName: db\n\nreplicaSetHostnames: true\n\nenableIPv6: false\n\ndirectoryPerDB: false\n\nsystemLogVerbosity: 0\ndisableSystemLog: false\n\n## MongoDB(R) configuration file for Primary and Secondary nodes. For documentation of all options, see:\n##   http://docs.mongodb.org/manual/reference/configuration-options/\n## Example:\n## configuration: |-\n##   # where and how to store data.\n##   storage:\n##     dbPath: /bitnami/mongodb/data/db\n##     journal:\n##       enabled: true\n##     directoryPerDB: false\n##   # where to write logging data\n##   systemLog:\n##     destination: file\n##     quiet: false\n##     logAppend: true\n##     logRotate: reopen\n##     path: /opt/bitnami/mongodb/logs/mongodb.log\n##     verbosity: 0\n##   # network interfaces\n##   net:\n##     port: 27017\n##     unixDomainSocket:\n##       enabled: true\n##       pathPrefix: /opt/bitnami/mongodb/tmp\n##     ipv6: false\n##     bindIpAll: true\n##   # replica set options\n##   #replication:\n##     #replSetName: replicaset\n##     #enableMajorityReadConcern: true\n##   # process management options\n##   processManagement:\n##      fork: false\n##      pidFilePath: /opt/bitnami/mongodb/tmp/mongodb.pid\n##   # set parameter options\n##   setParameter:\n##      enableLocalhostAuthBypass: true\n##   # security options\n##   security:\n##     authorization: disabled\n##     #keyFile: /opt/bitnami/mongodb/conf/keyfile\n##\nconfiguration: \"\"\n\n## ConfigMap with MongoDB(R) configuration for Primary and Secondary nodes\n## NOTE: When it's set the arbiter.configuration parameter is ignored\n##\n# existingConfigmap:\n\n## initdb scripts\n## Specify dictionary of scripts to be run at first boot\n## Example:\n## initdbScripts:\n##   my_init_script.sh: |\n##      #!/bin/bash\n##      echo \"Do something.\"\n##\ninitdbScripts: {}\n\n## Existing ConfigMap with custom init scripts\n##\n# initdbScriptsConfigMap:\n\n## Command and args for running the container (set to default if not set). Use array form\n##\n# command:\n# args:\n\n## Additional command line flags\n## Example:\n## extraFlags:\n##  - \"--wiredTigerCacheSizeGB=2\"\n##\nextraFlags: []\n\n## Additional environment variables to set\n## E.g:\n## extraEnvVars:\n##   - name: FOO\n##     value: BAR\n##\nextraEnvVars: []\n\n## ConfigMap with extra environment variables\n##\n# extraEnvVarsCM:\n\n## Secret with extra environment variables\n##\n# extraEnvVarsSecret:\n\n## Annotations to be added to the MongoDB(R) statefulset. Evaluated as a template.\n##\nannotations: {}\n\n## Additional labels to be added to the MongoDB(R) statefulset. Evaluated as a template.\n##\nlabels: {}\n\n## Number of MongoDB(R) replicas to deploy.\n## Ignored when mongodb.architecture=standalone\n##\nreplicaCount: 3\n\n## StrategyType for MongoDB(R) statefulset\n## It can be set to RollingUpdate or Recreate by default.\n##\nstrategyType: RollingUpdate\n\n## MongoDB(R) should be initialized one by one when building the replicaset for the first time.\n##\npodManagementPolicy: OrderedReady\n\n## Pod affinity preset\n## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity\n## Allowed values: soft, hard\n##\npodAffinityPreset: \"\"\n\n## Pod anti-affinity preset\n## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity\n## Allowed values: soft, hard\n##\npodAntiAffinityPreset: soft\n\n## Node affinity preset\n## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity\n## Allowed values: soft, hard\n##\nnodeAffinityPreset:\n  ## Node affinity type\n  ## Allowed values: soft, hard\n  ##\n  type: \"\"\n  ## Node label key to match\n  ## E.g.\n  ## key: \"kubernetes.io/e2e-az-name\"\n  ##\n  key: \"\"\n  ## Node label values to match\n  ## E.g.\n  ## values:\n  ##   - e2e-az1\n  ##   - e2e-az2\n  ##\n  values: []\n\n## Affinity for pod assignment. Evaluated as a template.\n## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity\n## Note: podAffinityPreset, podAntiAffinityPreset, and nodeAffinityPreset will be ignored when it's set\n##\naffinity: {}\n\n## Node labels for pod assignment. Evaluated as a template.\n## ref: https://kubernetes.io/docs/user-guide/node-selection/\n##\nnodeSelector: {}\n\n## Tolerations for pod assignment. Evaluated as a template.\n## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/\n##\ntolerations: []\n\n## Labels for MongoDB(R) pods. Evaluated as a template.\n## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/\n##\npodLabels: {}\n\n## Annotations for MongoDB(R) pods. Evaluated as a template.\n## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/\n##\npodAnnotations: {}\n\n## MongoDB(R) pods' priority.\n## ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/\n##\n# priorityClassName: \"\"\n\n## MongoDB(R) pods' Security Context.\n## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod\n##\npodSecurityContext:\n  enabled: true\n  fsGroup: 1001\n  ## sysctl settings\n  ## Example:\n  ## sysctls:\n  ## - name: net.core.somaxconn\n  ##   value: \"10000\"\n  ##\n  sysctls: []\n\n## MongoDB(R) containers' Security Context (main and metrics container).\n## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container\n##\ncontainerSecurityContext:\n  enabled: true\n  runAsUser: 1001\n  runAsNonRoot: true\n\n## MongoDB(R) containers' resource requests and limits.\n## ref: http://kubernetes.io/docs/user-guide/compute-resources/\n##\nresources:\n  # We usually recommend not to specify default resources and to leave this as a conscious\n  # choice for the user. This also increases chances charts run on environments with little\n  # resources, such as Minikube. If you do want to specify resources, uncomment the following\n  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n  limits: {}\n  #   cpu: 100m\n  #   memory: 128Mi\n  requests: {}\n  #   cpu: 100m\n  #   memory: 128Mi\n\n## MongoDB(R) pods' liveness and readiness probes. Evaluated as a template.\n## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes\n##\nlivenessProbe:\n  enabled: true\n  initialDelaySeconds: 30\n  periodSeconds: 10\n  timeoutSeconds: 5\n  failureThreshold: 6\n  successThreshold: 1\nreadinessProbe:\n  enabled: true\n  initialDelaySeconds: 5\n  periodSeconds: 10\n  timeoutSeconds: 5\n  failureThreshold: 6\n  successThreshold: 1\n\n## Custom Liveness probes for MongoDB(R) pods\n## Ignored when livenessProbe.enabled=true\n##\ncustomLivenessProbe: {}\n\n## Custom Rediness probes MongoDB(R) pods\n## Ignored when readinessProbe.enabled=true\n##\ncustomReadinessProbe: {}\n\n## Add init containers to the MongoDB(R) pods.\n## Example:\n## initContainers:\n##   - name: your-image-name\n##     image: your-image\n##     imagePullPolicy: Always\n##     ports:\n##       - name: portname\n##         containerPort: 1234\n##\ninitContainers: {}\n\n## Add sidecars to the MongoDB(R) pods.\n## Example:\n## sidecars:\n##   - name: your-image-name\n##     image: your-image\n##     imagePullPolicy: Always\n##     ports:\n##       - name: portname\n##         containerPort: 1234\n##\nsidecars: {}\n\n## extraVolumes and extraVolumeMounts allows you to mount other volumes on MongoDB(R) pods\n## Examples:\n## extraVolumeMounts:\n##   - name: extras\n##     mountPath: /usr/share/extras\n##     readOnly: true\n## extraVolumes:\n##   - name: extras\n##     emptyDir: {}\n##\nextraVolumeMounts: []\nextraVolumes: []\n\n## MongoDB(R) Pod Disruption Budget configuration\n## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/\n##\npdb:\n  create: false\n  ## Min number of pods that must still be available after the eviction\n  ##\n  minAvailable: 1\n  ## Max number of pods that can be unavailable after the eviction\n  ##\n  # maxUnavailable: 1\n\n## Enable persistence using Persistent Volume Claims\n## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/\n##\npersistence:\n  enabled: true\n  ## A manually managed Persistent Volume and Claim\n  ## Requires persistence.enabled: true\n  ## If defined, PVC must be created manually before volume will be bound\n  ## Ignored when mongodb.architecture=replicaset\n  ##\n  # existingClaim:\n  ## PV Storage Class\n  ## If defined, storageClassName: <storageClass>\n  ## If set to \"-\", storageClassName: \"\", which disables dynamic provisioning\n  ## If undefined (the default) or set to null, no storageClassName spec is\n  ## set, choosing the default provisioner.\n  ##\n  # storageClass: \"-\"\n  ## PV Access Mode\n  ##\n  accessModes:\n    - ReadWriteOnce\n  ## PVC size\n  ##\n  size: 8Gi\n  ## PVC annotations\n  ##\n  annotations: {}\n  ## The path the volume will be mounted at, useful when using different\n  ## MongoDB(R) images.\n  ##\n  mountPath: /bitnami/mongodb\n  ## The subdirectory of the volume to mount to, useful in dev environments\n  ## and one PV for multiple services.\n  ##\n  subPath: \"\"\n  ## Fine tuning for volumeClaimTemplates\n  ##\n  volumeClaimTemplates:\n    ## A label query over volumes to consider for binding (e.g. when using local volumes)\n    ## See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#labelselector-v1-meta for more details\n    ##\n    selector:\n\n## Service parameters\n##\nservice:\n  ## Service name\n  ##\n  nameOverride: \"\"\n  ## Service type\n  ##\n  type: ClusterIP\n  ## MongoDB(R) service port\n  ##\n  port: 27017\n  ## MongoDB(R) service port name\n  ##\n  portName: mongodb\n  ## Specify the nodePort value for the LoadBalancer and NodePort service types.\n  ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport\n  ##\n  nodePort: \"\"\n  ## MongoDB(R) service clusterIP IP\n  ##\n  # clusterIP: None\n  ## Specify the externalIP value ClusterIP service type.\n  ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#external-ips\n  ##\n  externalIPs: []\n  ## Specify the loadBalancerIP value for LoadBalancer service types.\n  ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer\n  ##\n  # loadBalancerIP:\n  ## Specify the loadBalancerSourceRanges value for LoadBalancer service types.\n  ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service\n  ##\n  loadBalancerSourceRanges: []\n  ## Provide any additional annotations which may be required. Evaluated as a template\n  ##\n  annotations: {}\n\n## External Access to MongoDB(R) nodes configuration\n##\nexternalAccess:\n  ## Enable Kubernetes external cluster access to MongoDB(R) nodes\n  ##\n  enabled: false\n  ## External IPs auto-discovery configuration\n  ## An init container is used to auto-detect LB IPs or node ports by querying the K8s API\n  ## Note: RBAC might be required\n  ##\n  autoDiscovery:\n    ## Enable external IP/ports auto-discovery\n    ##\n    enabled: false\n    ## Bitnami Kubectl image\n    ## ref: https://hub.docker.com/r/bitnami/kubectl/tags/\n    ##\n    image:\n      registry: docker.io\n      repository: bitnami/kubectl\n      tag: 1.18.15-debian-10-r24\n      ## Specify a imagePullPolicy\n      ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'\n      ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images\n      ##\n      pullPolicy: IfNotPresent\n      ## Optionally specify an array of imagePullSecrets (secrets must be manually created in the namespace)\n      ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\n      ## Example:\n      ## pullSecrets:\n      ##   - myRegistryKeySecretName\n      ##\n      pullSecrets: []\n    ## Init Container resource requests and limits\n    ## ref: http://kubernetes.io/docs/user-guide/compute-resources/\n    ##\n    resources:\n      # We usually recommend not to specify default resources and to leave this as a conscious\n      # choice for the user. This also increases chances charts run on environments with little\n      # resources, such as Minikube. If you do want to specify resources, uncomment the following\n      # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n      limits: {}\n      #   cpu: 100m\n      #   memory: 128Mi\n      requests: {}\n      #   cpu: 100m\n      #   memory: 128Mi\n  ## Parameters to configure K8s service(s) used to externally access MongoDB(R)\n  ## A new service per broker will be created\n  ##\n  service:\n    ## Service type. Allowed values: LoadBalancer or NodePort\n    ##\n    type: LoadBalancer\n    ## Port used when service type is LoadBalancer\n    ##\n    port: 27017\n    ## Array of load balancer IPs for each MongoDB(R) node. Length must be the same as replicaCount\n    ## Example:\n    ## loadBalancerIPs:\n    ##   - X.X.X.X\n    ##   - Y.Y.Y.Y\n    ##\n    loadBalancerIPs: []\n    ## Load Balancer sources\n    ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service\n    ## Example:\n    ## loadBalancerSourceRanges:\n    ## - 10.10.10.0/24\n    ##\n    loadBalancerSourceRanges: []\n    ## Array of node ports used for each MongoDB(R) nodes. Length must be the same as replicaCount\n    ## Example:\n    ## nodePorts:\n    ##   - 30001\n    ##   - 30002\n    ##\n    nodePorts: []\n    ## When service type is NodePort, you can specify the domain used for MongoDB(R) advertised hostnames.\n    ## If not specified, the container will try to get the kubernetes node external IP\n    ##\n    # domain: mydomain.com\n    ## Provide any additional annotations which may be required. Evaluated as a template\n    ##\n    annotations: {}\n\n##\n## MongoDB(R) Arbiter parameters.\n##\narbiter:\n  ## Enable deploying the MongoDB(R) Arbiter\n  ##   https://docs.mongodb.com/manual/tutorial/add-replica-set-arbiter/\n  ##\n  enabled: true\n\n  ## MongoDB(R) configuration file for the Arbiter. For documentation of all options, see:\n  ##   http://docs.mongodb.org/manual/reference/configuration-options/\n  ##\n  configuration: \"\"\n\n  ## Deployment pod host aliases\n  ## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/\n  ##\n  hostAliases: []\n\n  ## ConfigMap with MongoDB(R) configuration for the Arbiter\n  ## NOTE: When it's set the arbiter.configuration parameter is ignored\n  ##\n  # existingConfigmap:\n\n  ## Command and args for running the container (set to default if not set). Use array form\n  ##\n  # command:\n  # args:\n\n  ## Additional command line flags\n  ## Example:\n  ## extraFlags:\n  ##  - \"--wiredTigerCacheSizeGB=2\"\n  ##\n  extraFlags: []\n\n  ## Additional environment variables to set\n  ## E.g:\n  ## extraEnvVars:\n  ##   - name: FOO\n  ##     value: BAR\n  ##\n  extraEnvVars: []\n\n  ## ConfigMap with extra environment variables\n  ##\n  # extraEnvVarsCM:\n\n  ## Secret with extra environment variables\n  ##\n  # extraEnvVarsSecret:\n\n  ## Annotations to be added to the Arbiter statefulset. Evaluated as a template.\n  ##\n  annotations: {}\n\n  ## Additional to be added to the Arbiter statefulset. Evaluated as a template.\n  ##\n  labels: {}\n\n  ## Pod affinity preset\n  ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity\n  ## Allowed values: soft, hard\n  ##\n  podAffinityPreset: \"\"\n\n  ## Pod anti-affinity preset\n  ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity\n  ## Allowed values: soft, hard\n  ##\n  podAntiAffinityPreset: soft\n\n  ## Node affinity preset\n  ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity\n  ## Allowed values: soft, hard\n  ##\n  nodeAffinityPreset:\n    ## Node affinity type\n    ## Allowed values: soft, hard\n    ##\n    type: \"\"\n    ## Node label key to match\n    ## E.g.\n    ## key: \"kubernetes.io/e2e-az-name\"\n    ##\n    key: \"\"\n    ## Node label values to match\n    ## E.g.\n    ## values:\n    ##   - e2e-az1\n    ##   - e2e-az2\n    ##\n    values: []\n\n  ## Affinity for pod assignment\n  ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity\n  ## Note: arbiter.podAffinityPreset, arbiter.podAntiAffinityPreset, and arbiter.nodeAffinityPreset will be ignored when it's set\n  ##\n  affinity: {}\n\n  ## Node labels for pod assignment\n  ## ref: https://kubernetes.io/docs/user-guide/node-selection/\n  ##\n  nodeSelector: {}\n\n  ## Tolerations for pod assignment\n  ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/\n  ##\n  tolerations: []\n\n  ## Labels for MongoDB(R) Arbiter pods. Evaluated as a template.\n  ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/\n  ##\n  podLabels: {}\n\n  ## Annotations for MongoDB(R) Arbiter pods. Evaluated as a template.\n  ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/\n  ##\n  podAnnotations: {}\n\n  ## MongoDB(R) Arbiter pods' priority.\n  ## ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/\n  ##\n  # priorityClassName: \"\"\n\n  ## MongoDB(R) Arbiter pods' Security Context.\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod\n  ##\n  podSecurityContext:\n    enabled: true\n    fsGroup: 1001\n    ## sysctl settings\n    ## Example:\n    ## sysctls:\n    ## - name: net.core.somaxconn\n    ##   value: \"10000\"\n    ##\n    sysctls: []\n\n  ## MongoDB(R) Arbiter containers' Security Context (only main container).\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container\n  ##\n  containerSecurityContext:\n    enabled: true\n    runAsUser: 1001\n\n  ## MongoDB(R) Arbiter containers' resource requests and limits.\n  ## ref: http://kubernetes.io/docs/user-guide/compute-resources/\n  ##\n  resources:\n    # We usually recommend not to specify default resources and to leave this as a conscious\n    # choice for the user. This also increases chances charts run on environments with little\n    # resources, such as Minikube. If you do want to specify resources, uncomment the following\n    # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n    limits: {}\n    #   cpu: 100m\n    #   memory: 128Mi\n    requests: {}\n    #   cpu: 100m\n    #   memory: 128Mi\n\n  ## MongoDB(R) Arbiter pods' liveness and readiness probes. Evaluated as a template.\n  ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes\n  ##\n  livenessProbe:\n    enabled: true\n    initialDelaySeconds: 30\n    periodSeconds: 10\n    timeoutSeconds: 5\n    failureThreshold: 6\n    successThreshold: 1\n  readinessProbe:\n    enabled: true\n    initialDelaySeconds: 5\n    periodSeconds: 10\n    timeoutSeconds: 5\n    failureThreshold: 6\n    successThreshold: 1\n\n  ## Custom Liveness probes for MongoDB(R) Arbiter pods\n  ## Ignored when arbiter.livenessProbe.enabled=true\n  ##\n  customLivenessProbe: {}\n\n  ## Custom Rediness probes MongoDB(R) Arbiter pods\n  ## Ignored when arbiter.readinessProbe.enabled=true\n  ##\n  customReadinessProbe: {}\n\n  ## Add init containers to the MongoDB(R) Arbiter pods.\n  ## Example:\n  ## initContainers:\n  ##   - name: your-image-name\n  ##     image: your-image\n  ##     imagePullPolicy: Always\n  ##     ports:\n  ##       - name: portname\n  ##         containerPort: 1234\n  ##\n  initContainers: {}\n\n  ## Add sidecars to the MongoDB(R) Arbiter pods.\n  ## Example:\n  ## sidecars:\n  ##   - name: your-image-name\n  ##     image: your-image\n  ##     imagePullPolicy: Always\n  ##     ports:\n  ##       - name: portname\n  ##         containerPort: 1234\n  ##\n  sidecars: {}\n\n  ## extraVolumes and extraVolumeMounts allows you to mount other volumes on MongoDB(R) Arbiter pods\n  ## Examples:\n  ## extraVolumeMounts:\n  ##   - name: extras\n  ##     mountPath: /usr/share/extras\n  ##     readOnly: true\n  ## extraVolumes:\n  ##   - name: extras\n  ##     emptyDir: {}\n  ##\n  extraVolumeMounts: []\n  extraVolumes: []\n\n  ## MongoDB(R) Arbiter Pod Disruption Budget configuration\n  ## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/\n  ##\n  pdb:\n    create: false\n    ## Min number of pods that must still be available after the eviction\n    ##\n    minAvailable: 1\n    ## Max number of pods that can be unavailable after the eviction\n    ##\n    # maxUnavailable: 1\n\n  ## MongoDB(R) Arbiter service parameters\n  ##\n  service:\n    ## Service name\n    ##\n    nameOverride: \"\"\n\n## ServiceAccount\n## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/\n##\nserviceAccount:\n  ## Specifies whether a ServiceAccount should be created\n  ##\n  create: true\n  ## The name of the ServiceAccount to use.\n  ## If not set and create is true, a name is generated using the rabbitmq.fullname template\n  ##\n  # name:\n  ## Annotations for the Service Account\n  ##\n  annotations: {}\n\n## Role Based Access\n## ref: https://kubernetes.io/docs/admin/authorization/rbac/\n##\nrbac:\n  ## Specifies whether RBAC rules should be created\n  ## binding MongoDB(R) ServiceAccount to a role\n  ## that allows MongoDB(R) pods querying the K8s API\n  ##\n  create: false\n\n## PodSecurityPolicy configuration\n## Be sure to also set rbac.create to true, otherwise Role and RoleBinding\n## won't be created.\n## ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/\n##\npodSecurityPolicy:\n  ## Specifies whether a PodSecurityPolicy should be created\n  ##\n  create: false\n  ## You can either use predefined policy with some adjustments\n  ##\n  allowPrivilegeEscalation: false\n  privileged: false\n  ## Or you can specifiy the full spec to use for PSP\n  ## Defining a spec ignores the above values.\n  ##\n  spec: {}\n  ## Example:\n  ##    allowPrivilegeEscalation: false\n  ##    fsGroup:\n  ##      rule: 'MustRunAs'\n  ##      ranges:\n  ##        - min: 1001\n  ##          max: 1001\n  ##    hostIPC: false\n  ##    hostNetwork: false\n  ##    hostPID: false\n  ##    privileged: false\n  ##    readOnlyRootFilesystem: false\n  ##    requiredDropCapabilities:\n  ##      - ALL\n  ##    runAsUser:\n  ##      rule: 'MustRunAs'\n  ##      ranges:\n  ##        - min: 1001\n  ##          max: 1001\n  ##    seLinux:\n  ##      rule: 'RunAsAny'\n  ##    supplementalGroups:\n  ##      rule: 'MustRunAs'\n  ##      ranges:\n  ##        - min: 1001\n  ##          max: 1001\n  ##    volumes:\n  ##      - 'configMap'\n  ##      - 'secret'\n  ##      - 'emptyDir'\n  ##      - 'persistentVolumeClaim'\n  ##\n\n## Init Container parameters\n## Change the owner and group of the persistent volume(s) mountpoint(s) to 'runAsUser:fsGroup' on each component\n## values from the securityContext section of the component\n##\nvolumePermissions:\n  enabled: false\n  ## Bitnami Minideb image\n  ## ref: https://hub.docker.com/r/bitnami/minideb/tags/\n  ##\n  image:\n    registry: docker.io\n    repository: bitnami/minideb\n    tag: buster\n    ## Specify a imagePullPolicy\n    ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'\n    ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images\n    ##\n    pullPolicy: Always\n    ## Optionally specify an array of imagePullSecrets (secrets must be manually created in the namespace)\n    ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\n    ## Example:\n    ## pullSecrets:\n    ##   - myRegistryKeySecretName\n    ##\n    pullSecrets: []\n  ## Init Container resource requests and limits\n  ## ref: http://kubernetes.io/docs/user-guide/compute-resources/\n  ##\n  resources:\n    # We usually recommend not to specify default resources and to leave this as a conscious\n    # choice for the user. This also increases chances charts run on environments with little\n    # resources, such as Minikube. If you do want to specify resources, uncomment the following\n    # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n    limits: {}\n    #   cpu: 100m\n    #   memory: 128Mi\n    requests: {}\n    #   cpu: 100m\n    #   memory: 128Mi\n  ## Init container Security Context\n  ## Note: the chown of the data folder is done to containerSecurityContext.runAsUser\n  ## and not the below volumePermissions.securityContext.runAsUser\n  ## When runAsUser is set to special value \"auto\", init container will try to chwon the\n  ## data folder to autodetermined user&group, using commands: `id -u`:`id -G | cut -d\" \" -f2`\n  ## \"auto\" is especially useful for OpenShift which has scc with dynamic userids (and 0 is not allowed).\n  ## You may want to use this volumePermissions.securityContext.runAsUser=\"auto\" in combination with\n  ## podSecurityContext.enabled=false,containerSecurityContext.enabled=false and shmVolume.chmod.enabled=false\n  ##\n  securityContext:\n    runAsUser: 0\n\n## Prometheus Exporter / Metrics\n##\nmetrics:\n  enabled: false\n  ## Bitnami MongoDB(R) Promtheus Exporter image\n  ## ref: https://hub.docker.com/r/bitnami/mongodb-exporter/tags/\n  ##\n  image:\n    registry: docker.io\n    repository: bitnami/mongodb-exporter\n    tag: 0.11.2-debian-10-r79\n    pullPolicy: IfNotPresent\n    ## Optionally specify an array of imagePullSecrets.\n    ## Secrets must be manually created in the namespace.\n    ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/\n    ##\n    # pullSecrets:\n    #   - myRegistryKeySecretName\n\n  ## String with extra flags to the metrics exporter\n  ## ref: https://github.com/percona/mongodb_exporter/blob/master/mongodb_exporter.go\n  ##\n  extraFlags: \"\"\n\n  ## String with additional URI options to the metrics exporter\n  ## ref: https://docs.mongodb.com/manual/reference/connection-string\n  ##\n  extraUri: \"\"\n\n  ## Metrics exporter container resource requests and limits\n  ## ref: http://kubernetes.io/docs/user-guide/compute-resources/\n  ##\n  resources:\n    # We usually recommend not to specify default resources and to leave this as a conscious\n    # choice for the user. This also increases chances charts run on environments with little\n    # resources, such as Minikube. If you do want to specify resources, uncomment the following\n    # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n    limits: {}\n    #   cpu: 100m\n    #   memory: 128Mi\n    requests: {}\n    #   cpu: 100m\n    #   memory: 128Mi\n\n  ## Prometheus exporter container port\n  ##\n  containerPort: 9216\n\n  ## Prometheus Exporter service configuration\n  ##\n  service:\n    ## Annotations for Prometheus Exporter pods. Evaluated as a template.\n    ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/\n    ##\n    annotations:\n      prometheus.io/scrape: \"true\"\n      prometheus.io/port: \"{{ .Values.metrics.service.port }}\"\n      prometheus.io/path: \"/metrics\"\n    type: ClusterIP\n    port: 9216\n\n  ## Metrics exporter liveness and readiness probes\n  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes)\n  ##\n  livenessProbe:\n    enabled: true\n    initialDelaySeconds: 15\n    periodSeconds: 5\n    timeoutSeconds: 5\n    failureThreshold: 3\n    successThreshold: 1\n  readinessProbe:\n    enabled: true\n    initialDelaySeconds: 5\n    periodSeconds: 5\n    timeoutSeconds: 1\n    failureThreshold: 3\n    successThreshold: 1\n\n  ## Prometheus Service Monitor\n  ## ref: https://github.com/coreos/prometheus-operator\n  ##      https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md\n  ##\n  serviceMonitor:\n    ## If the operator is installed in your cluster, set to true to create a Service Monitor Entry\n    ##\n    enabled: false\n\n    ## Specify the namespace where Prometheus Operator is running\n    ##\n    # namespace: monitoring\n\n    ## Specify the interval at which metrics should be scraped\n    ##\n    interval: 30s\n    ## Specify the timeout after which the scrape is ended\n    ##\n    # scrapeTimeout: 30s\n    ## Used to pass Labels that are used by the Prometheus installed in your cluster to select Service Monitors to work with\n    ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#prometheusspec\n    ##\n    additionalLabels: {}\n\n  ## Custom PrometheusRule to be defined\n  ## ref: https://github.com/coreos/prometheus-operator#customresourcedefinitions\n  ##\n  prometheusRule:\n    enabled: false\n    additionalLabels: {}\n    ## Specify the namespace where Prometheus Operator is running\n    ##\n    # namespace: monitoring\n\n    ## Define individual alerting rules as required\n    ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#rulegroup\n    ##      https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/\n    ##\n    ## This is an example of a rule, you should add the below code block under the \"rules\" param, removing the brackets\n    ## - name: example\n    ##   rules:\n    ##   - alert: HighRequestLatency\n    ##     expr: job:request_latency_seconds:mean5m{job=\"myjob\"} > 0.5\n    ##     for: 10m\n    ##     labels:\n    ##       severity: page\n    ##     annotations:\n    ##       summary: High request latency\n    ##\n    rules: {}"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_005_nodejs_mongo_k8s_helm_scale/node_project/.dockerignore",
    "content": "node_modules\nnpm-debug.log\nDockerfile\n.dockerignore\n.git\nREADME.md\n.gitignore\n.env\n\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_005_nodejs_mongo_k8s_helm_scale/node_project/.gitignore",
    "content": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\n# Runtime data\npids\n*.pid\n*.seed\n*.pid.lock\n\n# Directory for instrumented libs generated by jscoverage/JSCover\nlib-cov\n\n# Coverage directory used by tools like istanbul\ncoverage\n\n# nyc test coverage\n.nyc_output\n\n# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)\n.grunt\n\n# Bower dependency directory (https://bower.io/)\nbower_components\n\n# node-waf configuration\n.lock-wscript\n\n# Compiled binary addons (https://nodejs.org/api/addons.html)\nbuild/Release\n\n# Dependency directories\nnode_modules/\njspm_packages/\n\n# TypeScript v1 declaration files\ntypings/\n\n# Optional npm cache directory\n.npm\n\n# Optional eslint cache\n.eslintcache\n\n# Optional REPL history\n.node_repl_history\n\n# Output of 'npm pack'\n*.tgz\n\n# Yarn Integrity file\n.yarn-integrity\n\n# parcel-bundler cache (https://parceljs.org/)\n.cache\n\n# next.js build output\n.next\n\n# nuxt.js build output\n.nuxt\n\n# vuepress build output\n.vuepress/dist\n\n# Serverless directories\n.serverless/\n\n# FuseBox cache\n.fusebox/\n\n#DynamoDB Local files\n.dynamodb/\n\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_005_nodejs_mongo_k8s_helm_scale/node_project/Dockerfile",
    "content": "FROM node:10-alpine\n\nRUN mkdir -p /home/node/app/node_modules && chown -R node:node /home/node/app\n\nWORKDIR /home/node/app\n\nCOPY package*.json ./\n\nUSER node\n\nRUN npm install\n\nCOPY --chown=node:node . .\n\nEXPOSE 8080\n\nCMD [ \"node\", \"app.js\" ]\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_005_nodejs_mongo_k8s_helm_scale/node_project/app.js",
    "content": "const express = require('express');\nconst app = express();\nconst router = express.Router();\nconst db = require('./db');\nconst sharks = require('./routes/sharks');\n\nconst path = __dirname + '/views/';\nconst port = process.env.PORT || 8080;\n\napp.engine('html', require('ejs').renderFile);\napp.set('view engine', 'html');\napp.use(express.urlencoded({ extended: true }));\napp.use(express.static(path));\napp.use('/sharks', sharks);\n\napp.listen(port, function () {\n  console.log(`Example app listening on ${port}!`)\n})\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_005_nodejs_mongo_k8s_helm_scale/node_project/controllers/sharks.js",
    "content": "const path = require('path');\nconst Shark = require('../models/sharks');\n\nexports.index = function (req, res) {\n    res.sendFile(path.resolve('views/sharks.html'));\n};\n\nexports.create = function (req, res) {\n    var newShark = new Shark(req.body);\n    console.log(req.body);\n    newShark.save(function (err) {\n            if(err) {\n            res.status(400).send('Unable to save shark to database');\n        } else {\n            res.redirect('/sharks/getshark');\n        }\n  });\n               };\n\nexports.list = function (req, res) {\n        Shark.find({}).exec(function (err, sharks) {\n                if (err) {\n                        return res.send(500, err);\n                }\n                res.render('getshark', {\n                        sharks: sharks\n             });\n        });\n};\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_005_nodejs_mongo_k8s_helm_scale/node_project/db.js",
    "content": "const mongoose = require('mongoose');\n\nconst {\n  MONGO_USERNAME,\n  MONGO_PASSWORD,\n  MONGO_HOSTNAME,\n  MONGO_PORT,\n  MONGO_DB,\n  MONGO_REPLICASET\n} = process.env;\n\nconst options = {\n  useNewUrlParser: true,\n  reconnectTries: Number.MAX_VALUE,\n  reconnectInterval: 500,\n  connectTimeoutMS: 10000,\n};\n\n// Use the following URL when testing the application locally in docker-compose\n// const url = `mongodb://${MONGO_USERNAME}:${MONGO_PASSWORD}@${MONGO_HOSTNAME}:${MONGO_PORT}/${MONGO_DB}?authSource=admin`;\n\n// default connection URI\nconst url = `mongodb://${MONGO_USERNAME}:${MONGO_PASSWORD}@${MONGO_HOSTNAME}:${MONGO_PORT}/${MONGO_DB}?replicaSet=${MONGO_REPLICASET}&authSource=admin`;\n\nmongoose.connect(url, options).then( function() {\n  console.log('MongoDB is connected');\n})\n  .catch( function(err) {\n  console.log(err);\n});\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_005_nodejs_mongo_k8s_helm_scale/node_project/docker-compose.yaml",
    "content": "version: '3'\n\nservices:\n  nodejs:\n    build:\n      context: .\n      dockerfile: Dockerfile\n    image: nodejs\n    container_name: nodejs\n    restart: unless-stopped\n    env_file: .env\n    environment:\n      - MONGO_USERNAME=$MONGO_USERNAME\n      - MONGO_PASSWORD=$MONGO_PASSWORD\n      - MONGO_HOSTNAME=db\n      - MONGO_PORT=$MONGO_PORT\n      - MONGO_DB=$MONGO_DB \n    ports:\n      - \"80:8080\"\n    volumes:\n      - .:/home/node/app\n      - node_modules:/home/node/app/node_modules\n    networks:\n      - app-network\n    command: ./wait-for.sh db:27017 -- /home/node/app/node_modules/.bin/nodemon app.js\n\n  db:\n    image: mongo:4.1.8-xenial\n    container_name: db\n    restart: unless-stopped\n    env_file: .env\n    environment:\n      - MONGO_INITDB_ROOT_USERNAME=$MONGO_USERNAME\n      - MONGO_INITDB_ROOT_PASSWORD=$MONGO_PASSWORD\n    volumes:  \n      - dbdata:/data/db   \n    networks:\n      - app-network  \n\nnetworks:\n  app-network:\n    driver: bridge\n\nvolumes:\n  dbdata:\n  node_modules:      \n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_005_nodejs_mongo_k8s_helm_scale/node_project/models/sharks.js",
    "content": "const mongoose = require('mongoose');\nconst Schema = mongoose.Schema;\n\nconst Shark = new Schema ({\n        name: { type: String, required: true },\n        character: { type: String, required: true },\n});\n\nmodule.exports = mongoose.model('Shark', Shark)\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_005_nodejs_mongo_k8s_helm_scale/node_project/package.json",
    "content": "{\n  \"name\": \"nodejs-image-demo\",\n  \"version\": \"1.0.0\",\n  \"description\": \"nodejs image demo\",\n  \"author\": \"katjuell <kathleenjuell@gmail.com>\",\n  \"license\": \"MIT\",\n  \"main\": \"app.js\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/katjuell/nodejs-image-demo.git\"\n  },\n  \"keywords\": [\n    \"nodejs\",\n    \"bootstrap\",\n    \"express\"\n  ],\n  \"dependencies\": {\n    \"ejs\": \"^2.6.1\",\n    \"express\": \"^4.16.4\",\n    \"mongoose\": \"^5.4.10\"\n  },\n  \"devDependencies\": {\n    \"nodemon\": \"^1.18.10\"\n  }\n}\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_005_nodejs_mongo_k8s_helm_scale/node_project/routes/index.js",
    "content": "const express = require('express');\nconst router = express.Router();\nconst path = require('path');\n\nrouter.use (function (req,res,next) {\n  console.log('/' + req.method);\n  next();\n});\n\nrouter.get('/',function(req,res){\n  res.sendFile(path.resolve('views/index.html'));\n});\n\nmodule.exports = router;\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_005_nodejs_mongo_k8s_helm_scale/node_project/routes/sharks.js",
    "content": "const express = require('express');\nconst router = express.Router();\nconst shark = require('../controllers/sharks');\n\nrouter.get('/', function(req, res){\n    shark.index(req,res);\n});\n\nrouter.post('/addshark', function(req, res) {\n    shark.create(req,res);\n});\n\nrouter.get('/getshark', function(req, res) {\n    shark.list(req,res);\n});\n\nmodule.exports = router;\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_005_nodejs_mongo_k8s_helm_scale/node_project/views/css/styles.css",
    "content": ".navbar {\n    margin-bottom: 0;\n    background: #000000;\n}\n\nbody {\n    background: #000000;\n    color: #ffffff;\n    font-family: 'Merriweather', sans-serif;\n}\n\nh1,\nh2 {\n    font-weight: bold;\n}\n\np {\n    font-size: 16px;\n    color: #ffffff;\n}\n\n.jumbotron {\n    background: #0048CD;\n    color: white;\n    text-align: center;\n}\n\n.jumbotron p {\n    color: white;\n    font-size: 26px;\n}\n\n.btn-primary {\n    color: #fff;\n    text-color: #000000;\n    border-color: white;\n    margin-bottom: 5px;\n}\n\nimg,\nvideo,\naudio {\n    margin-top: 20px;\n    max-width: 80%;\n}\n\ndiv.caption: {\n    float: left;\n    clear: both;\n}\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_005_nodejs_mongo_k8s_helm_scale/node_project/views/getshark.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <title>About Sharks</title>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n    <link rel=\"stylesheet\" href=\"https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css\" integrity=\"sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO\" crossorigin=\"anonymous\">\n    <link href=\"/css/styles.css\" rel=\"stylesheet\">\n    <link href=\"https://fonts.googleapis.com/css?family=Merriweather:400,700\" rel=\"stylesheet\" type=\"text/css\">\n</head>\n<nav class=\"navbar navbar-dark navbar-static-top navbar-expand-md\">\n    <div class=\"container\">\n        <button type=\"button\" class=\"navbar-toggler collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\" aria-expanded=\"false\"> <span class=\"sr-only\">Toggle navigation</span>\n        </button> <a class=\"navbar-brand\" href=\"/\">Everything Sharks</a>\n        <div class=\"collapse navbar-collapse\" id=\"bs-example-navbar-collapse-1\">\n            <ul class=\"nav navbar-nav mr-auto\">\n                <li class=\"nav-item\"><a href=\"/\" class=\"nav-link\">Home</a>\n                </li>\n                <li class=\"active nav-item\"><a href=\"/sharks\" class=\"nav-link\">Sharks</a>\n                </li>\n            </ul>\n        </div>\n    </div>\n</nav>\n<div class=\"jumbotron text-center\">\n    <h1>Shark Info</h1>\n</div>\n<div class=\"container\">\n    <div class=\"row\">\n        <div class=\"col-lg-4\">\n            <p>\n                <div class=\"caption\">Some sharks are known to be dangerous to humans, though many more are not. The sawshark, for example, is not considered a threat to humans.\n                </div>\n                <img src=\"https://assets.digitalocean.com/articles/docker_node_image/sawshark.jpg\" alt=\"Sawshark\">\n            </p>\n        </div>\n        <div class=\"col-lg-4\">\n            <p>\n                <div class=\"caption\">Other sharks are known to be friendly and welcoming!</div>\n                <img src=\"https://assets.digitalocean.com/articles/docker_node_image/sammy.png\" alt=\"Sammy the Shark\">\n            </p>\n        </div>\n\t<div class=\"col-lg-4\">\n            <p>\n              <div class=\"caption\">Your Sharks</div>\n                  <ul>\n                     <% sharks.forEach(function(shark) { %>\n                        <p>Name: <%= shark.name %></p>\n                        <p>Character: <%= shark.character %></p>\n                     <% }); %>\n                  </ul>\n            </p>\n        </div>\n    </div>\n  </div>\n</html>\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_005_nodejs_mongo_k8s_helm_scale/node_project/views/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <title>About Sharks</title>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n    <link rel=\"stylesheet\" href=\"https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css\" integrity=\"sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO\" crossorigin=\"anonymous\">\n    <link href=\"/css/styles.css\" rel=\"stylesheet\">\n    <link href=\"https://fonts.googleapis.com/css?family=Merriweather:400,700\" rel=\"stylesheet\" type=\"text/css\">\n</head>\n\n<body>\n    <nav class=\"navbar navbar-dark navbar-static-top navbar-expand-md\">\n        <div class=\"container\">\n            <button type=\"button\" class=\"navbar-toggler collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\" aria-expanded=\"false\"> <span class=\"sr-only\">Toggle navigation</span>\n            </button> <a class=\"navbar-brand\" href=\"#\">Everything Sharks</a>\n            <div class=\"collapse navbar-collapse\" id=\"bs-example-navbar-collapse-1\">\n                <ul class=\"nav navbar-nav mr-auto\">\n                    <li class=\"active nav-item\"><a href=\"/\" class=\"nav-link\">Home</a>\n                    </li>\n                    <li class=\"nav-item\"><a href=\"/sharks\" class=\"nav-link\">Sharks</a>\n                    </li>\n                </ul>\n            </div>\n        </div>\n    </nav>\n    <div class=\"jumbotron\">\n        <div class=\"container\">\n            <h1>Want to Learn About Sharks?</h1>\n            <p>Are you ready to learn about sharks?</p>\n            <br>\n            <p><a class=\"btn btn-primary btn-lg\" href=\"/sharks\" role=\"button\">Get Shark Info</a>\n            </p>\n        </div>\n    </div>\n    <div class=\"container\">\n        <div class=\"row\">\n            <div class=\"col-lg-6\">\n                <h3>Not all sharks are alike</h3>\n                <p>Though some are dangerous, sharks generally do not attack humans. Out of the 500 species known to researchers, only 30 have been known to attack humans.\n                </p>\n            </div>\n            <div class=\"col-lg-6\">\n                <h3>Sharks are ancient</h3>\n                <p>There is evidence to suggest that sharks lived up to 400 million years ago.\n                </p>\n            </div>\n        </div>\n    </div>\n  </body>\n</html>\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_005_nodejs_mongo_k8s_helm_scale/node_project/views/sharks.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <title>About Sharks</title>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n    <link rel=\"stylesheet\" href=\"https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css\" integrity=\"sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO\" crossorigin=\"anonymous\">\n    <link href=\"/css/styles.css\" rel=\"stylesheet\">\n    <link href=\"https://fonts.googleapis.com/css?family=Merriweather:400,700\" rel=\"stylesheet\" type=\"text/css\">\n</head>\n<nav class=\"navbar navbar-dark navbar-static-top navbar-expand-md\">\n    <div class=\"container\">\n        <button type=\"button\" class=\"navbar-toggler collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\" aria-expanded=\"false\"> <span class=\"sr-only\">Toggle navigation</span>\n        </button> <a class=\"navbar-brand\" href=\"/\">Everything Sharks</a>\n        <div class=\"collapse navbar-collapse\" id=\"bs-example-navbar-collapse-1\">\n            <ul class=\"nav navbar-nav mr-auto\">\n                <li class=\"nav-item\"><a href=\"/\" class=\"nav-link\">Home</a>\n                </li>\n                <li class=\"active nav-item\"><a href=\"/sharks\" class=\"nav-link\">Sharks</a>\n                </li>\n            </ul>\n        </div>\n    </div>\n</nav>\n<div class=\"jumbotron text-center\">\n    <h1>Shark Info</h1>\n</div>\n<div class=\"container\">\n    <div class=\"row\">\n        <div class=\"col-lg-4\">\n            <p>\n                <div class=\"caption\">Some sharks are known to be dangerous to humans, though many more are not. The sawshark, for example, is not considered a threat to humans.\n                </div>\n                <img src=\"https://assets.digitalocean.com/articles/docker_node_image/sawshark.jpg\" alt=\"Sawshark\">\n            </p>\n        </div>\n        <div class=\"col-lg-4\">\n            <p>\n                <div class=\"caption\">Other sharks are known to be friendly and welcoming!</div>\n                <img src=\"https://assets.digitalocean.com/articles/docker_node_image/sammy.png\" alt=\"Sammy the Shark\">\n            </p>\n        </div>\n\t<div class=\"col-lg-4\">\n            <p>\n                <form action=\"/sharks/addshark\" method=\"post\">\n                    <div class=\"caption\">Enter Your Shark</div>\n                    <input type=\"text\" placeholder=\"Shark Name\" name=\"name\" <%=sharks[i].name; %>\n                    <input type=\"text\" placeholder=\"Shark Character\" name=\"character\" <%=sharks[i].character; %>\n                    <button type=\"submit\">Submit</button>\n                </form>\n            </p>\n        </div>\n    </div>\n  </div>\n</html>\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_005_nodejs_mongo_k8s_helm_scale/node_project/wait-for.sh",
    "content": "#!/bin/sh\n\n# original script: https://github.com/eficode/wait-for/blob/master/wait-for\n\nTIMEOUT=15\nQUIET=0\n\nechoerr() {\n  if [ \"$QUIET\" -ne 1 ]; then printf \"%s\\n\" \"$*\" 1>&2; fi\n}\n\nusage() {\n  exitcode=\"$1\"\n  cat << USAGE >&2\nUsage:\n  $cmdname host:port [-t timeout] [-- command args]\n  -q | --quiet                        Do not output any status messages\n  -t TIMEOUT | --timeout=timeout      Timeout in seconds, zero for no timeout\n  -- COMMAND ARGS                     Execute command with args after the test finishes\nUSAGE\n  exit \"$exitcode\"\n}\n\nwait_for() {\n  for i in `seq $TIMEOUT` ; do\n    nc -z \"$HOST\" \"$PORT\" > /dev/null 2>&1\n\n    result=$?\n    if [ $result -eq 0 ] ; then\n      if [ $# -gt 0 ] ; then\n        exec \"$@\"\n      fi\n      exit 0\n    fi\n    sleep 1\n  done\n  echo \"Operation timed out\" >&2\n  exit 1\n}\n\nwhile [ $# -gt 0 ]\ndo\n  case \"$1\" in\n    *:* )\n    HOST=$(printf \"%s\\n\" \"$1\"| cut -d : -f 1)\n    PORT=$(printf \"%s\\n\" \"$1\"| cut -d : -f 2)\n    shift 1\n    ;;\n    -q | --quiet)\n    QUIET=1\n    shift 1\n    ;;\n    -t)\n    TIMEOUT=\"$2\"\n    if [ \"$TIMEOUT\" = \"\" ]; then break; fi\n    shift 2\n    ;;\n    --timeout=*)\n    TIMEOUT=\"${1#*=}\"\n    shift 1\n    ;;\n    --)\n    shift\n    break\n    ;;\n    --help)\n    usage 0\n    ;;\n    *)\n    echoerr \"Unknown argument: $1\"\n    usage 1\n    ;;\n  esac\ndone\n\nif [ \"$HOST\" = \"\" -o \"$PORT\" = \"\" ]; then\n  echoerr \"Error: you need to provide a host and port to test.\"\n  usage 2\nfi\n\nwait_for \"$@\"\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_005_nodejs_mongo_k8s_helm_scale/nodeapp/.helmignore",
    "content": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation (prefixed with !). Only one pattern per line.\n.DS_Store\n# Common VCS dirs\n.git/\n.gitignore\n.bzr/\n.bzrignore\n.hg/\n.hgignore\n.svn/\n# Common backup files\n*.swp\n*.bak\n*.tmp\n*.orig\n*~\n# Various IDEs\n.project\n.idea/\n*.tmproj\n.vscode/\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_005_nodejs_mongo_k8s_helm_scale/nodeapp/Chart.yaml",
    "content": "apiVersion: v2\nname: nodeapp\ndescription: A Helm chart for Kubernetes\n\n# A chart can be either an 'application' or a 'library' chart.\n#\n# Application charts are a collection of templates that can be packaged into versioned archives\n# to be deployed.\n#\n# Library charts provide useful utilities or functions for the chart developer. They're included as\n# a dependency of application charts to inject those utilities and functions into the rendering\n# pipeline. Library charts do not define any templates and therefore cannot be deployed.\ntype: application\n\n# This is the chart version. This version number should be incremented each time you make changes\n# to the chart and its templates, including the app version.\n# Versions are expected to follow Semantic Versioning (https://semver.org/)\nversion: 0.1.0\n\n# This is the version number of the application being deployed. This version number should be\n# incremented each time you make changes to the application. Versions are not expected to\n# follow Semantic Versioning. They should reflect the version the application is using.\n# It is recommended to use it with quotes.\nappVersion: \"1.16.0\"\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_005_nodejs_mongo_k8s_helm_scale/nodeapp/templates/NOTES.txt",
    "content": "1. Get the application URL by running these commands:\n{{- if .Values.ingress.enabled }}\n{{- range $host := .Values.ingress.hosts }}\n  {{- range .paths }}\n  http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }}\n  {{- end }}\n{{- end }}\n{{- else if contains \"NodePort\" .Values.service.type }}\n  export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath=\"{.spec.ports[0].nodePort}\" services {{ include \"nodeapp.fullname\" . }})\n  export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath=\"{.items[0].status.addresses[0].address}\")\n  echo http://$NODE_IP:$NODE_PORT\n{{- else if contains \"LoadBalancer\" .Values.service.type }}\n     NOTE: It may take a few minutes for the LoadBalancer IP to be available.\n           You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include \"nodeapp.fullname\" . }}'\n  export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include \"nodeapp.fullname\" . }} --template \"{{\"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}\"}}\")\n  echo http://$SERVICE_IP:{{ .Values.service.port }}\n{{- else if contains \"ClusterIP\" .Values.service.type }}\n  export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l \"app.kubernetes.io/name={{ include \"nodeapp.name\" . }},app.kubernetes.io/instance={{ .Release.Name }}\" -o jsonpath=\"{.items[0].metadata.name}\")\n  export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath=\"{.spec.containers[0].ports[0].containerPort}\")\n  echo \"Visit http://127.0.0.1:8080 to use your application\"\n  kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT\n{{- end }}\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_005_nodejs_mongo_k8s_helm_scale/nodeapp/templates/_helpers.tpl",
    "content": "{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"nodeapp.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCreate a default fully qualified app name.\nWe truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).\nIf release name contains chart name it will be used as a full name.\n*/}}\n{{- define \"nodeapp.fullname\" -}}\n{{- if .Values.fullnameOverride }}\n{{- .Values.fullnameOverride | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- $name := default .Chart.Name .Values.nameOverride }}\n{{- if contains $name .Release.Name }}\n{{- .Release.Name | trunc 63 | trimSuffix \"-\" }}\n{{- else }}\n{{- printf \"%s-%s\" .Release.Name $name | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n{{- end }}\n{{- end }}\n\n{{/*\nCreate chart name and version as used by the chart label.\n*/}}\n{{- define \"nodeapp.chart\" -}}\n{{- printf \"%s-%s\" .Chart.Name .Chart.Version | replace \"+\" \"_\" | trunc 63 | trimSuffix \"-\" }}\n{{- end }}\n\n{{/*\nCommon labels\n*/}}\n{{- define \"nodeapp.labels\" -}}\nhelm.sh/chart: {{ include \"nodeapp.chart\" . }}\n{{ include \"nodeapp.selectorLabels\" . }}\n{{- if .Chart.AppVersion }}\napp.kubernetes.io/version: {{ .Chart.AppVersion | quote }}\n{{- end }}\napp.kubernetes.io/managed-by: {{ .Release.Service }}\n{{- end }}\n\n{{/*\nSelector labels\n*/}}\n{{- define \"nodeapp.selectorLabels\" -}}\napp.kubernetes.io/name: {{ include \"nodeapp.name\" . }}\napp.kubernetes.io/instance: {{ .Release.Name }}\n{{- end }}\n\n{{/*\nCreate the name of the service account to use\n*/}}\n{{- define \"nodeapp.serviceAccountName\" -}}\n{{- if .Values.serviceAccount.create }}\n{{- default (include \"nodeapp.fullname\" .) .Values.serviceAccount.name }}\n{{- else }}\n{{- default \"default\" .Values.serviceAccount.name }}\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_005_nodejs_mongo_k8s_helm_scale/nodeapp/templates/configmap.yaml",
    "content": "apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ .Release.Name }}-config\ndata:\n  MONGO_HOSTNAME: \"mongo-mongodb-0.mongo-mongodb-headless.default.svc.cluster.local,mongo-mongodb-1.mongo-mongodb-headless.default.svc.cluster.local,mongo-mongodb-2.mongo-mongodb-headless.default.svc.cluster.local\"\n  MONGO_PORT: \"27017\"\n  MONGO_DB: \"sharkinfo\"\n  MONGO_REPLICASET: \"db\""
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_005_nodejs_mongo_k8s_helm_scale/nodeapp/templates/deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{ include \"nodeapp.fullname\" . }}\n  labels:\n    {{- include \"nodeapp.labels\" . | nindent 4 }}\nspec:\n  {{- if not .Values.autoscaling.enabled }}\n  replicas: {{ .Values.replicaCount }}\n  {{- end }}\n  selector:\n    matchLabels:\n      {{- include \"nodeapp.selectorLabels\" . | nindent 6 }}\n  template:\n    metadata:\n      {{- with .Values.podAnnotations }}\n      annotations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      labels:\n        {{- include \"nodeapp.selectorLabels\" . | nindent 8 }}\n    spec:\n      {{- with .Values.imagePullSecrets }}\n      imagePullSecrets:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      serviceAccountName: {{ include \"nodeapp.serviceAccountName\" . }}\n      securityContext:\n        {{- toYaml .Values.podSecurityContext | nindent 8 }}\n      containers:\n        - name: {{ .Chart.Name }}\n          securityContext:\n            {{- toYaml .Values.securityContext | nindent 12 }}\n          image: \"{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}\"\n          imagePullPolicy: {{ .Values.image.pullPolicy }}\n          env:\n          - name: MONGO_USERNAME\n            valueFrom:\n              secretKeyRef:\n                key: MONGO_USERNAME\n                name: {{ .Release.Name }}-auth\n          - name: MONGO_PASSWORD\n            valueFrom:\n              secretKeyRef:\n                key: MONGO_PASSWORD\n                name: {{ .Release.Name }}-auth\n          - name: MONGO_HOSTNAME\n            valueFrom:\n              configMapKeyRef:\n                key: MONGO_HOSTNAME\n                name: {{ .Release.Name }}-config\n          - name: MONGO_PORT\n            valueFrom:\n              configMapKeyRef:\n                key: MONGO_PORT\n                name: {{ .Release.Name }}-config\n          - name: MONGO_DB\n            valueFrom:\n              configMapKeyRef:\n                key: MONGO_DB\n                name: {{ .Release.Name }}-config\n          - name: MONGO_REPLICASET\n            valueFrom:\n              configMapKeyRef:\n                key: MONGO_REPLICASET\n                name: {{ .Release.Name }}-config\n          ports:\n            - name: http\n              containerPort: 8080\n              protocol: TCP\n          livenessProbe:\n            httpGet:\n              path: /sharks\n              port: http\n          readinessProbe:\n            httpGet:\n              path: /sharks\n              port: http\n          resources:\n            {{- toYaml .Values.resources | nindent 12 }}\n      {{- with .Values.nodeSelector }}\n      nodeSelector:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.affinity }}\n      affinity:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n      {{- with .Values.tolerations }}\n      tolerations:\n        {{- toYaml . | nindent 8 }}\n      {{- end }}\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_005_nodejs_mongo_k8s_helm_scale/nodeapp/templates/hpa.yaml",
    "content": "{{- if .Values.autoscaling.enabled }}\napiVersion: autoscaling/v2beta1\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: {{ include \"nodeapp.fullname\" . }}\n  labels:\n    {{- include \"nodeapp.labels\" . | nindent 4 }}\nspec:\n  scaleTargetRef:\n    apiVersion: apps/v1\n    kind: Deployment\n    name: {{ include \"nodeapp.fullname\" . }}\n  minReplicas: {{ .Values.autoscaling.minReplicas }}\n  maxReplicas: {{ .Values.autoscaling.maxReplicas }}\n  metrics:\n    {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: cpu\n        targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}\n    {{- end }}\n    {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    - type: Resource\n      resource:\n        name: memory\n        targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}\n    {{- end }}\n{{- end }}\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_005_nodejs_mongo_k8s_helm_scale/nodeapp/templates/ingress.yaml",
    "content": "{{- if .Values.ingress.enabled -}}\n{{- $fullName := include \"nodeapp.fullname\" . -}}\n{{- $svcPort := .Values.service.port -}}\n{{- if semverCompare \">=1.14-0\" .Capabilities.KubeVersion.GitVersion -}}\napiVersion: networking.k8s.io/v1beta1\n{{- else -}}\napiVersion: extensions/v1beta1\n{{- end }}\nkind: Ingress\nmetadata:\n  name: {{ $fullName }}\n  labels:\n    {{- include \"nodeapp.labels\" . | nindent 4 }}\n  {{- with .Values.ingress.annotations }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\nspec:\n  {{- if .Values.ingress.tls }}\n  tls:\n    {{- range .Values.ingress.tls }}\n    - hosts:\n        {{- range .hosts }}\n        - {{ . | quote }}\n        {{- end }}\n      secretName: {{ .secretName }}\n    {{- end }}\n  {{- end }}\n  rules:\n    {{- range .Values.ingress.hosts }}\n    - host: {{ .host | quote }}\n      http:\n        paths:\n          {{- range .paths }}\n          - path: {{ .path }}\n            backend:\n              serviceName: {{ $fullName }}\n              servicePort: {{ $svcPort }}\n          {{- end }}\n    {{- end }}\n  {{- end }}\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_005_nodejs_mongo_k8s_helm_scale/nodeapp/templates/secret.yaml",
    "content": "apiVersion: v1\nkind: Secret\nmetadata:\n  name: {{ .Release.Name }}-auth\ndata:\n  MONGO_PASSWORD: cGFzc3dvcmQ=\n  MONGO_USERNAME: cm9vdA==\n  mongodb-replica-set-key: a2V5MTIz\n  mongodb-root-password: cGFzc3dvcmQ="
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_005_nodejs_mongo_k8s_helm_scale/nodeapp/templates/service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"nodeapp.fullname\" . }}\n  labels:\n    {{- include \"nodeapp.labels\" . | nindent 4 }}\nspec:\n  type: {{ .Values.service.type }}\n  ports:\n    - port: {{ .Values.service.port }}\n      targetPort: http\n      protocol: TCP\n      name: http\n  selector:\n    {{- include \"nodeapp.selectorLabels\" . | nindent 4 }}\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_005_nodejs_mongo_k8s_helm_scale/nodeapp/templates/serviceaccount.yaml",
    "content": "{{- if .Values.serviceAccount.create -}}\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: {{ include \"nodeapp.serviceAccountName\" . }}\n  labels:\n    {{- include \"nodeapp.labels\" . | nindent 4 }}\n  {{- with .Values.serviceAccount.annotations }}\n  annotations:\n    {{- toYaml . | nindent 4 }}\n  {{- end }}\n{{- end }}\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_005_nodejs_mongo_k8s_helm_scale/nodeapp/templates/tests/test-connection.yaml",
    "content": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: \"{{ include \"nodeapp.fullname\" . }}-test-connection\"\n  labels:\n    {{- include \"nodeapp.labels\" . | nindent 4 }}\n  annotations:\n    \"helm.sh/hook\": test\nspec:\n  containers:\n    - name: wget\n      image: busybox\n      command: ['wget']\n      args: ['{{ include \"nodeapp.fullname\" . }}:{{ .Values.service.port }}']\n  restartPolicy: Never\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_005_nodejs_mongo_k8s_helm_scale/nodeapp/values.yaml",
    "content": "# Default values for nodeapp.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your templates.\n\nreplicaCount: 3\n\nimage:\n  repository: codeaprendiz/node-replicas\n  pullPolicy: IfNotPresent\n  # Overrides the image tag whose default is the chart appVersion.\n  tag: \"latest\"\n\nimagePullSecrets: []\nnameOverride: \"\"\nfullnameOverride: \"\"\n\nserviceAccount:\n  # Specifies whether a service account should be created\n  create: true\n  # Annotations to add to the service account\n  annotations: {}\n  # The name of the service account to use.\n  # If not set and create is true, a name is generated using the fullname template\n  name: \"\"\n\npodAnnotations: {}\n\npodSecurityContext: {}\n  # fsGroup: 2000\n\nsecurityContext: {}\n  # capabilities:\n  #   drop:\n  #   - ALL\n  # readOnlyRootFilesystem: true\n  # runAsNonRoot: true\n  # runAsUser: 1000\n\nservice:\n  type: LoadBalancer\n  port: 80\n  targetPort: 8080\n\ningress:\n  enabled: false\n  annotations: {}\n    # kubernetes.io/ingress.class: nginx\n    # kubernetes.io/tls-acme: \"true\"\n  hosts:\n    - host: chart-example.local\n      paths: []\n  tls: []\n  #  - secretName: chart-example-tls\n  #    hosts:\n  #      - chart-example.local\n\nresources:\n  # We usually recommend not to specify default resources and to leave this as a conscious\n  # choice for the user. This also increases chances charts run on environments with little\n  # resources, such as Minikube. If you do want to specify resources, uncomment the following\n  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\n   limits:\n     cpu: 100m\n     memory: 128Mi\n   requests:\n     cpu: 100m\n     memory: 128Mi\n\nautoscaling:\n  enabled: true\n  minReplicas: 1\n  maxReplicas: 100\n  targetCPUUtilizationPercentage: 80\n  # targetMemoryUtilizationPercentage: 80\n\nnodeSelector: {}\n\ntolerations: []\n\naffinity: {}\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_005_nodejs_mongo_k8s_helm_scale/resources-app.yaml",
    "content": "---\n# Source: nodeapp/templates/serviceaccount.yaml\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: app-nodeapp\n  labels:\n    helm.sh/chart: nodeapp-0.1.0\n    app.kubernetes.io/name: nodeapp\n    app.kubernetes.io/instance: app\n    app.kubernetes.io/version: \"1.16.0\"\n    app.kubernetes.io/managed-by: Helm\n---\n# Source: nodeapp/templates/secret.yaml\napiVersion: v1\nkind: Secret\nmetadata:\n  name: app-auth\ndata:\n  MONGO_PASSWORD: cGFzc3dvcmQ=\n  MONGO_USERNAME: cm9vdA==\n  mongodb-replica-set-key: a2V5MTIz\n  mongodb-root-password: cGFzc3dvcmQ=\n---\n# Source: nodeapp/templates/configmap.yaml\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: app-config\ndata:\n  MONGO_HOSTNAME: \"mongo-mongodb-0.mongo-mongodb-headless.default.svc.cluster.local,mongo-mongodb-1.mongo-mongodb-headless.default.svc.cluster.local,mongo-mongodb-2.mongo-mongodb-headless.default.svc.cluster.local\"\n  MONGO_PORT: \"27017\"\n  MONGO_DB: \"sharkinfo\"\n  MONGO_REPLICASET: \"db\"\n---\n# Source: nodeapp/templates/service.yaml\napiVersion: v1\nkind: Service\nmetadata:\n  name: app-nodeapp\n  labels:\n    helm.sh/chart: nodeapp-0.1.0\n    app.kubernetes.io/name: nodeapp\n    app.kubernetes.io/instance: app\n    app.kubernetes.io/version: \"1.16.0\"\n    app.kubernetes.io/managed-by: Helm\nspec:\n  type: LoadBalancer\n  ports:\n    - port: 80\n      targetPort: http\n      protocol: TCP\n      name: http\n  selector:\n    app.kubernetes.io/name: nodeapp\n    app.kubernetes.io/instance: app\n---\n# Source: nodeapp/templates/deployment.yaml\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: app-nodeapp\n  labels:\n    helm.sh/chart: nodeapp-0.1.0\n    app.kubernetes.io/name: nodeapp\n    app.kubernetes.io/instance: app\n    app.kubernetes.io/version: \"1.16.0\"\n    app.kubernetes.io/managed-by: Helm\nspec:\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: nodeapp\n      app.kubernetes.io/instance: app\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/name: nodeapp\n        app.kubernetes.io/instance: app\n    spec:\n      serviceAccountName: app-nodeapp\n      securityContext:\n        {}\n      containers:\n        - name: nodeapp\n          securityContext:\n            {}\n          image: \"codeaprendiz/node-replicas:latest\"\n          imagePullPolicy: IfNotPresent\n          env:\n          - name: MONGO_USERNAME\n            valueFrom:\n              secretKeyRef:\n                key: MONGO_USERNAME\n                name: app-auth\n          - name: MONGO_PASSWORD\n            valueFrom:\n              secretKeyRef:\n                key: MONGO_PASSWORD\n                name: app-auth\n          - name: MONGO_HOSTNAME\n            valueFrom:\n              configMapKeyRef:\n                key: MONGO_HOSTNAME\n                name: app-config\n          - name: MONGO_PORT\n            valueFrom:\n              configMapKeyRef:\n                key: MONGO_PORT\n                name: app-config\n          - name: MONGO_DB\n            valueFrom:\n              configMapKeyRef:\n                key: MONGO_DB\n                name: app-config\n          - name: MONGO_REPLICASET\n            valueFrom:\n              configMapKeyRef:\n                key: MONGO_REPLICASET\n                name: app-config\n          ports:\n            - name: http\n              containerPort: 8080\n              protocol: TCP\n          livenessProbe:\n            httpGet:\n              path: /sharks\n              port: http\n          readinessProbe:\n            httpGet:\n              path: /sharks\n              port: http\n          resources:\n            limits:\n              cpu: 100m\n              memory: 128Mi\n            requests:\n              cpu: 100m\n              memory: 128Mi\n---\n# Source: nodeapp/templates/hpa.yaml\napiVersion: autoscaling/v2beta1\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: app-nodeapp\n  labels:\n    helm.sh/chart: nodeapp-0.1.0\n    app.kubernetes.io/name: nodeapp\n    app.kubernetes.io/instance: app\n    app.kubernetes.io/version: \"1.16.0\"\n    app.kubernetes.io/managed-by: Helm\nspec:\n  scaleTargetRef:\n    apiVersion: apps/v1\n    kind: Deployment\n    name: app-nodeapp\n  minReplicas: 1\n  maxReplicas: 100\n  metrics:\n    - type: Resource\n      resource:\n        name: cpu\n        targetAverageUtilization: 80\n---\n# Source: nodeapp/templates/tests/test-connection.yaml\napiVersion: v1\nkind: Pod\nmetadata:\n  name: \"app-nodeapp-test-connection\"\n  labels:\n    helm.sh/chart: nodeapp-0.1.0\n    app.kubernetes.io/name: nodeapp\n    app.kubernetes.io/instance: app\n    app.kubernetes.io/version: \"1.16.0\"\n    app.kubernetes.io/managed-by: Helm\n  annotations:\n    \"helm.sh/hook\": test\nspec:\n  containers:\n    - name: wget\n      image: busybox\n      command: ['wget']\n      args: ['app-nodeapp:80']\n  restartPolicy: Never\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_005_nodejs_mongo_k8s_helm_scale/resources-db.yaml",
    "content": "---\n# Source: mongodb/templates/serviceaccount.yaml\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: mongo-mongodb\n  namespace: default\n  labels:\n    app.kubernetes.io/name: mongodb\n    helm.sh/chart: mongodb-10.7.1\n    app.kubernetes.io/instance: mongo\n    app.kubernetes.io/managed-by: Helm\nsecrets:\n  - name: mongo-mongodb\n---\n# Source: mongodb/templates/replicaset/scripts-configmap.yaml\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: mongo-mongodb-scripts\n  namespace: default\n  labels:\n    app.kubernetes.io/name: mongodb\n    helm.sh/chart: mongodb-10.7.1\n    app.kubernetes.io/instance: mongo\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: mongodb\ndata:\n  setup.sh: |-\n    #!/bin/bash\n\n    echo \"Advertised Hostname: $MONGODB_ADVERTISED_HOSTNAME\"\n\n    if [[ \"$MY_POD_NAME\" = \"mongo-mongodb-0\" ]]; then\n        echo \"Pod name matches initial primary pod name, configuring node as a primary\"\n        export MONGODB_REPLICA_SET_MODE=\"primary\"\n    else\n        echo \"Pod name doesn't match initial primary pod name, configuring node as a secondary\"\n        export MONGODB_REPLICA_SET_MODE=\"secondary\"\n        export MONGODB_INITIAL_PRIMARY_ROOT_PASSWORD=\"$MONGODB_ROOT_PASSWORD\"\n        export MONGODB_INITIAL_PRIMARY_PORT_NUMBER=\"$MONGODB_PORT_NUMBER\"\n        export MONGODB_ROOT_PASSWORD=\"\" MONGODB_USERNAME=\"\" MONGODB_DATABASE=\"\" MONGODB_PASSWORD=\"\"\n    fi\n\n    exec /opt/bitnami/scripts/mongodb/entrypoint.sh /opt/bitnami/scripts/mongodb/run.sh\n---\n# Source: mongodb/templates/arbiter/headless-svc.yaml\napiVersion: v1\nkind: Service\nmetadata:\n  name: mongo-mongodb-arbiter-headless\n  namespace: default\n  labels:\n    app.kubernetes.io/name: mongodb\n    helm.sh/chart: mongodb-10.7.1\n    app.kubernetes.io/instance: mongo\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: arbiter\nspec:\n  type: ClusterIP\n  clusterIP: None\n  ports:\n    - name: tcp-mongodb\n      port: 27017\n      targetPort: mongodb\n  selector:\n    app.kubernetes.io/name: mongodb\n    app.kubernetes.io/instance: mongo\n    app.kubernetes.io/component: arbiter\n---\n# Source: mongodb/templates/replicaset/headless-svc.yaml\napiVersion: v1\nkind: Service\nmetadata:\n  name: mongo-mongodb-headless\n  namespace: default\n  labels:\n    app.kubernetes.io/name: mongodb\n    helm.sh/chart: mongodb-10.7.1\n    app.kubernetes.io/instance: mongo\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: mongodb\nspec:\n  type: ClusterIP\n  clusterIP: None\n  publishNotReadyAddresses: true\n  ports:\n    - name: mongodb\n      port: 27017\n      targetPort: mongodb\n  selector:\n    app.kubernetes.io/name: mongodb\n    app.kubernetes.io/instance: mongo\n    app.kubernetes.io/component: mongodb\n---\n# Source: mongodb/templates/arbiter/statefulset.yaml\napiVersion: apps/v1\nkind: StatefulSet\nmetadata:\n  name: mongo-mongodb-arbiter\n  namespace: default\n  labels:\n    app.kubernetes.io/name: mongodb\n    helm.sh/chart: mongodb-10.7.1\n    app.kubernetes.io/instance: mongo\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: arbiter\nspec:\n  serviceName: mongo-mongodb-arbiter-headless\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: mongodb\n      app.kubernetes.io/instance: mongo\n      app.kubernetes.io/component: arbiter\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/name: mongodb\n        helm.sh/chart: mongodb-10.7.1\n        app.kubernetes.io/instance: mongo\n        app.kubernetes.io/managed-by: Helm\n        app.kubernetes.io/component: arbiter\n    spec:\n      \n      serviceAccountName: mongo-mongodb\n      affinity:\n        podAffinity:\n          \n        podAntiAffinity:\n          preferredDuringSchedulingIgnoredDuringExecution:\n            - podAffinityTerm:\n                labelSelector:\n                  matchLabels:\n                    app.kubernetes.io/name: mongodb\n                    app.kubernetes.io/instance: mongo\n                    app.kubernetes.io/component: arbiter\n                namespaces:\n                  - \"default\"\n                topologyKey: kubernetes.io/hostname\n              weight: 1\n        nodeAffinity:\n          \n      securityContext:\n        fsGroup: 1001\n        sysctls: []\n      initContainers:\n      containers:\n        - name: mongodb-arbiter\n          image: docker.io/bitnami/mongodb:4.4.4-debian-10-r0\n          imagePullPolicy: \"IfNotPresent\"\n          securityContext:\n            runAsUser: 1001\n          env:\n            - name: BITNAMI_DEBUG\n              value: \"false\"\n            - name: MY_POD_NAME\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.name\n            - name: MY_POD_NAMESPACE\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.namespace\n            - name: K8S_SERVICE_NAME\n              value: \"mongo-mongodb-arbiter-headless\"\n            - name: MONGODB_REPLICA_SET_MODE\n              value: \"arbiter\"\n            - name: MONGODB_INITIAL_PRIMARY_HOST\n              value: \"mongo-mongodb-0.mongo-mongodb-headless.$(MY_POD_NAMESPACE).svc.cluster.local\"\n            - name: MONGODB_REPLICA_SET_NAME\n              value: \"db\"\n            - name: MONGODB_ADVERTISED_HOSTNAME\n              value: \"$(MY_POD_NAME).$(K8S_SERVICE_NAME).$(MY_POD_NAMESPACE).svc.cluster.local\"\n            - name: MONGODB_INITIAL_PRIMARY_ROOT_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: mongo-secret\n                  key: mongodb-root-password\n            - name: MONGODB_REPLICA_SET_KEY\n              valueFrom:\n                secretKeyRef:\n                  name: mongo-secret\n                  key: mongodb-replica-set-key\n            - name: ALLOW_EMPTY_PASSWORD\n              value: \"no\"\n          ports:\n            - containerPort: 27017\n              name: mongodb\n          livenessProbe:\n            tcpSocket:\n              port: mongodb\n            initialDelaySeconds: 30\n            periodSeconds: 10\n            timeoutSeconds: 5\n            successThreshold: 1\n            failureThreshold: 6\n          readinessProbe:\n            tcpSocket:\n              port: mongodb\n            initialDelaySeconds: 5\n            periodSeconds: 10\n            timeoutSeconds: 5\n            successThreshold: 1\n            failureThreshold: 6\n          resources:\n            limits: {}\n            requests: {}\n---\n# Source: mongodb/templates/replicaset/statefulset.yaml\napiVersion: apps/v1\nkind: StatefulSet\nmetadata:\n  name: mongo-mongodb\n  namespace: default\n  labels:\n    app.kubernetes.io/name: mongodb\n    helm.sh/chart: mongodb-10.7.1\n    app.kubernetes.io/instance: mongo\n    app.kubernetes.io/managed-by: Helm\n    app.kubernetes.io/component: mongodb\nspec:\n  serviceName: mongo-mongodb-headless\n  podManagementPolicy: OrderedReady\n  replicas: 3\n  updateStrategy:\n    type: RollingUpdate\n  selector:\n    matchLabels:\n      app.kubernetes.io/name: mongodb\n      app.kubernetes.io/instance: mongo\n      app.kubernetes.io/component: mongodb\n  template:\n    metadata:\n      labels:\n        app.kubernetes.io/name: mongodb\n        helm.sh/chart: mongodb-10.7.1\n        app.kubernetes.io/instance: mongo\n        app.kubernetes.io/managed-by: Helm\n        app.kubernetes.io/component: mongodb\n    spec:\n      \n      serviceAccountName: mongo-mongodb\n      affinity:\n        podAffinity:\n          \n        podAntiAffinity:\n          preferredDuringSchedulingIgnoredDuringExecution:\n            - podAffinityTerm:\n                labelSelector:\n                  matchLabels:\n                    app.kubernetes.io/name: mongodb\n                    app.kubernetes.io/instance: mongo\n                    app.kubernetes.io/component: mongodb\n                namespaces:\n                  - \"default\"\n                topologyKey: kubernetes.io/hostname\n              weight: 1\n        nodeAffinity:\n          \n      securityContext:\n        fsGroup: 1001\n        sysctls: []\n      containers:\n        - name: mongodb\n          image: docker.io/bitnami/mongodb:4.4.4-debian-10-r0\n          imagePullPolicy: \"IfNotPresent\"\n          securityContext:\n            runAsNonRoot: true\n            runAsUser: 1001\n          command:\n            - /scripts/setup.sh\n          env:\n            - name: BITNAMI_DEBUG\n              value: \"false\"\n            - name: MY_POD_NAME\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.name\n            - name: MY_POD_NAMESPACE\n              valueFrom:\n                fieldRef:\n                  fieldPath: metadata.namespace\n            - name: K8S_SERVICE_NAME\n              value: \"mongo-mongodb-headless\"\n            - name: MONGODB_INITIAL_PRIMARY_HOST\n              value: \"mongo-mongodb-0.$(K8S_SERVICE_NAME).$(MY_POD_NAMESPACE).svc.cluster.local\"\n            - name: MONGODB_REPLICA_SET_NAME\n              value: \"db\"\n            - name: MONGODB_ADVERTISED_HOSTNAME\n              value: \"$(MY_POD_NAME).$(K8S_SERVICE_NAME).$(MY_POD_NAMESPACE).svc.cluster.local\"\n            - name: MONGODB_ROOT_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  name: mongo-secret\n                  key: mongodb-root-password\n            - name: MONGODB_REPLICA_SET_KEY\n              valueFrom:\n                secretKeyRef:\n                  name: mongo-secret\n                  key: mongodb-replica-set-key\n            - name: ALLOW_EMPTY_PASSWORD\n              value: \"no\"\n            - name: MONGODB_SYSTEM_LOG_VERBOSITY\n              value: \"0\"\n            - name: MONGODB_DISABLE_SYSTEM_LOG\n              value: \"no\"\n            - name: MONGODB_ENABLE_IPV6\n              value: \"no\"\n            - name: MONGODB_ENABLE_DIRECTORY_PER_DB\n              value: \"no\"\n          ports:\n            - containerPort: 27017\n              name: mongodb\n          livenessProbe:\n            exec:\n              command:\n                - mongo\n                - --disableImplicitSessions\n                - --eval\n                - \"db.adminCommand('ping')\"\n            initialDelaySeconds: 30\n            periodSeconds: 10\n            timeoutSeconds: 5\n            successThreshold: 1\n            failureThreshold: 6\n          readinessProbe:\n            exec:\n              command:\n                - bash\n                - -ec\n                - |\n                  mongo --disableImplicitSessions $TLS_OPTIONS --eval 'db.hello().isWritablePrimary || db.hello().secondary' | grep -q 'true'\n            initialDelaySeconds: 5\n            periodSeconds: 10\n            timeoutSeconds: 5\n            successThreshold: 1\n            failureThreshold: 6\n          resources:\n            limits: {}\n            requests: {}\n          volumeMounts:\n            - name: datadir\n              mountPath: /bitnami/mongodb\n              subPath: \n            - name: scripts\n              mountPath: /scripts/setup.sh\n              subPath: setup.sh\n      volumes:\n        - name: scripts\n          configMap:\n            name: mongo-mongodb-scripts\n            defaultMode: 0755\n  volumeClaimTemplates:\n    - metadata:\n        name: datadir\n      spec:\n        accessModes:\n          - \"ReadWriteOnce\"\n        resources:\n          requests:\n            storage: \"8Gi\"\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_005_nodejs_mongo_k8s_helm_scale/secret.yaml",
    "content": "apiVersion: v1\ndata:\n  MONGO_PASSWORD: cGFzc3dvcmQ=\n  MONGO_USERNAME: cm9vdA==\n  mongodb-replica-set-key: a2V5MTIz\n  mongodb-root-password: cGFzc3dvcmQ=\nkind: Secret\nmetadata:\n  creationTimestamp: null\n  name: mongo-secret\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_006_nginx_docker/Dockerfile",
    "content": "FROM nginx:alpine\n\nCOPY conf.d /etc/nginx/conf.d\nCOPY html /usr/share/nginx/html\n\n\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_006_nginx_docker/ReadMe.md",
    "content": "## Create required docker image of nginx and test k8s pod locally\n\n[nginx docker container](https://www.digitalocean.com/community/tutorials/how-to-run-nginx-in-a-docker-container-on-ubuntu-14-04)\n\n- Start the container\n\n```bash\n$ docker run --rm --name docker-nginx -p 8080:80 -d --volume $PWD/html:/usr/share/nginx/html --volume $PWD/conf.d:/etc/nginx/conf.d nginx\n```\n\n- Check 200\n\n```bash\n$ curl localhost:8080/check.txt -I\nHTTP/1.1 200 OK\nServer: nginx/1.21.0\nDate: Tue, 24 Aug 2021 19:29:12 GMT\nContent-Type: text/plain\nContent-Length: 13\nConnection: keep-alive\n\n$ curl localhost:8080/check.txt  \nIts working!!\n```\n\n- Check 403\n\n```bash\n$ curl localhost:8080/403      \nForbidden!\n\n$ curl localhost:8080/403 -I\nHTTP/1.1 403 Forbidden\nServer: nginx/1.21.0\nDate: Tue, 24 Aug 2021 19:29:55 GMT\nContent-Type: application/octet-stream\nContent-Length: 10\nConnection: keep-alive                                                                                                                                                                                                           \n```\n\n- Now if you create a docker image\n\n```bash\n$ docker build --file Dockerfile -t codeaprendiz/nginx .                                                                   \n```\n\n- And start the container using the same image\n\n```bash\n$ docker run --rm --name docker-nginx -p 8080:80 -d  codeaprendiz/nginx                                                                  \n$ curl localhost:8080/403 -I\nHTTP/1.1 403 Forbidden\nServer: nginx/1.21.1\nDate: Tue, 24 Aug 2021 19:38:22 GMT\nContent-Type: application/octet-stream\nContent-Length: 10\nConnection: keep-alive\n\n$ curl localhost:8080/403   \nForbidden!\n\n$ curl localhost:8080/500\nApplication Error!\n```\n\n- Push the docker image\n\n```bash\n$ docker push codeaprendiz/nginx\n```\n\n- Create nginx container in kubernetes\n\n```bash\n$ kubectl run nginx-pod --image=codeaprendiz/nginx:latest \n\n## PORT FORWARD and test yoour changes\n$ kubectl port-forward pod/nginx-pod 8080:80 \n\n\n## in another terminal\n$ curl localhost:8080/check.txt\nIts working!!\n$ curl localhost:8080/403/ \nForbidden!\n```"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_006_nginx_docker/conf.d/default.conf",
    "content": "server {\n    listen       80;\n    listen  [::]:80;\n    server_name  localhost;\n\n    #access_log  /var/log/nginx/host.access.log  main;\n\n    root   /usr/share/nginx/html;\n\n    location /403 {\n        return 403 'Forbidden!';\n    }\n\n    location /500 {\n        return 500 'Application Error!';\n    }\n\n    location /502 {\n        return 502 'Bad Gateway!';\n    }\n\n    location /404 {\n        return 404 'Not Found!';\n    }\n\n    location /check.txt {\n        return 200 'Its working!!';\n    }\n\n    location / {\n        index  index.html index.htm;\n    }\n\n\n\n\n\n\n    #error_page  404              /404.html;\n\n    # redirect server error pages to the static page /50x.html\n    #\n\n\n    # proxy the PHP scripts to Apache listening on 127.0.0.1:80\n    #\n    #location ~ \\.php$ {\n    #    proxy_pass   http://127.0.0.1;\n    #}\n\n    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000\n    #\n    #location ~ \\.php$ {\n    #    root           html;\n    #    fastcgi_pass   127.0.0.1:9000;\n    #    fastcgi_index  index.php;\n    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;\n    #    include        fastcgi_params;\n    #}\n\n    # deny access to .htaccess files, if Apache's document root\n    # concurs with nginx's one\n    #\n    #location ~ /\\.ht {\n    #    deny  all;\n    #}\n}\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_006_nginx_docker/html/index.html",
    "content": "<html>\n<head>\n    <link href=\"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css\" rel=\"stylesheet\" integrity=\"sha256-MfvZlkHCEqatNoGiOXveE8FIwMzZg4W85qfrfIFBfYc= sha512-dTfge/zgoMYpP7QbHy4gWMEGsbsdZeCXz7irItjcC3sPUFtf0kuFbDz/ixG7ArTxmDjLXDmezHubeNikyKGVyQ==\" crossorigin=\"anonymous\">\n    <title>Docker nginx Tutorial</title>\n</head>\n<body>\n<div class=\"container\">\n    <h1>Hello Digital Ocean</h1>\n    <p>This nginx page is brought to you by Docker and Digital Ocean</p>\n</div>\n</body>\n</html>"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_007_eks_on_demand/README.md",
    "content": "# Learn Terraform - Provision an EKS Cluster\n\n- [learn creating eks](https://learn.hashicorp.com/tutorials/terraform/eks)\n- [vpc](https://registry.terraform.io/modules/terraform-aws-modules/vpc/aws/latest)\n- [eks](https://registry.terraform.io/modules/terraform-aws-modules/eks/aws/latest)\n- [spot and on-demand blog](https://aws.amazon.com/blogs/compute/run-your-kubernetes-workloads-on-amazon-ec2-spot-instances-with-amazon-eks/)\n\n\n\n- Init\n\n```bash\n./run.sh init\n```\n\n- Apply \n\n```bash\n./run.sh apply\n.\n.\nApply complete! Resources: 51 added, 0 changed, 0 destroyed.\n.\n.\n\n```\n\n- Get the kubeconfig\n\n```bash\n$ aws eks --region $(terraform output -raw region) update-kubeconfig --name $(terraform output -raw cluster_name) --kubeconfig kubeconfig\n```\n\n- Get the nodes\n\n```bash\n$ kubectl get nodes --kubeconfig=./kubeconfig                       \nNAME                         STATUS   ROLES    AGE     VERSION\nip-10-0-1-140.ec2.internal   Ready    <none>   4m20s   v1.20.4-eks-6b7464\nip-10-0-2-35.ec2.internal    Ready    <none>   4m38s   v1.20.4-eks-6b7464\nip-10-0-3-91.ec2.internal    Ready    <none>   4m57s   v1.20.4-eks-6b7464\n\n$ kubectl get pods -n kube-system --kubeconfig=./kubeconfig\nNAME                       READY   STATUS    RESTARTS   AGE\naws-node-8dsqn             1/1     Running   0          7m42s\naws-node-j8vmm             1/1     Running   0          7m6s\naws-node-q45sf             1/1     Running   0          7m24s\ncoredns-65bfc5645f-2twrg   1/1     Running   0          11m\ncoredns-65bfc5645f-p7ngx   1/1     Running   0          11m\nkube-proxy-5jbzj           1/1     Running   0          7m42s\nkube-proxy-hq79m           1/1     Running   0          7m24s\nkube-proxy-r6rwq           1/1     Running   0          7m6s\n\n\n```\n\n\n\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_007_eks_on_demand/credentials.txt.example",
    "content": "[personal]\naws_access_key_id = \"********************\"\naws_secret_access_key = \"******************\"\nregion = \"eu-west-1\""
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_007_eks_on_demand/eks-cluster.tf",
    "content": "module \"eks\" {\n  source          = \"terraform-aws-modules/eks/aws\"\n  cluster_name    = local.cluster_name\n  cluster_version = \"1.20\"\n  subnets         = module.vpc.private_subnets\n\n  tags = {\n    Environment = \"training\"\n    GithubRepo  = \"terraform-aws-eks\"\n    GithubOrg   = \"terraform-aws-modules\"\n  }\n\n  vpc_id = module.vpc.vpc_id\n\n  workers_group_defaults = {\n    root_volume_type = \"gp2\"\n  }\n\n  worker_groups = [\n    {\n      name                          = \"worker-group-1\"\n      instance_type                 = \"t2.small\"\n      additional_userdata           = \"echo foo bar\"\n      asg_desired_capacity          = 2\n      additional_security_group_ids = [aws_security_group.worker_group_mgmt_one.id]\n    },\n    {\n      name                          = \"worker-group-2\"\n      instance_type                 = \"t2.medium\"\n      additional_userdata           = \"echo foo bar\"\n      additional_security_group_ids = [aws_security_group.worker_group_mgmt_two.id]\n      asg_desired_capacity          = 1\n    },\n  ]\n}\n\ndata \"aws_eks_cluster\" \"cluster\" {\n  name = module.eks.cluster_id\n}\n\ndata \"aws_eks_cluster_auth\" \"cluster\" {\n  name = module.eks.cluster_id\n}\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_007_eks_on_demand/kubernetes-dashboard-admin.rbac.yaml",
    "content": "apiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: admin-user\n  namespace: kube-system\n---\n# Create ClusterRoleBinding\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: admin-user\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cluster-admin\nsubjects:\n- kind: ServiceAccount\n  name: admin-user\n  namespace: kube-system\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_007_eks_on_demand/kubernetes.tf",
    "content": "# Kubernetes provider\n# https://learn.hashicorp.com/terraform/kubernetes/provision-eks-cluster#optional-configure-terraform-kubernetes-provider\n# To learn how to schedule deployments and services using the provider, go here: https://learn.hashicorp.com/terraform/kubernetes/deploy-nginx-kubernetes\n\n# The Kubernetes provider is included in this file so the EKS module can complete successfully. Otherwise, it throws an error when creating `kubernetes_config_map.aws_auth`.\n# You should **not** schedule deployments and services in this workspace. This keeps workspaces modular (one for provision EKS, another for scheduling Kubernetes resources) as per best practices.\n\nprovider \"kubernetes\" {\n  host                   = data.aws_eks_cluster.cluster.endpoint\n  token                  = data.aws_eks_cluster_auth.cluster.token\n  cluster_ca_certificate = base64decode(data.aws_eks_cluster.cluster.certificate_authority.0.data)\n}\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_007_eks_on_demand/outputs.tf",
    "content": "output \"cluster_id\" {\n  description = \"EKS cluster ID.\"\n  value       = module.eks.cluster_id\n}\n\noutput \"cluster_endpoint\" {\n  description = \"Endpoint for EKS control plane.\"\n  value       = module.eks.cluster_endpoint\n}\n\noutput \"cluster_security_group_id\" {\n  description = \"Security group ids attached to the cluster control plane.\"\n  value       = module.eks.cluster_security_group_id\n}\n\noutput \"kubectl_config\" {\n  description = \"kubectl config as generated by the module.\"\n  value       = module.eks.kubeconfig\n}\n\noutput \"config_map_aws_auth\" {\n  description = \"A kubernetes configuration to authenticate to this EKS cluster.\"\n  value       = module.eks.config_map_aws_auth\n}\n\noutput \"region\" {\n  description = \"AWS region\"\n  value       = var.region\n}\n\noutput \"cluster_name\" {\n  description = \"Kubernetes Cluster Name\"\n  value       = local.cluster_name\n}\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_007_eks_on_demand/run.sh",
    "content": "#!/usr/bin/env bash\nmy_dir=\"$(dirname \"$0\")\"\ncredential_file=\"${my_dir}/../../credentials.txt\"\nprofile=\"personal\"\nAWS_SHARED_CREDENTIALS_FILE=\"${credential_file}\" AWS_PROFILE=\"${profile}\" terraform \"$@\"\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_007_eks_on_demand/security-groups.tf",
    "content": "\nresource \"aws_security_group\" \"worker_group_mgmt_one\" {\n  name_prefix = \"worker_group_mgmt_one\"\n  vpc_id      = module.vpc.vpc_id\n\n  ingress {\n    from_port = 22\n    to_port   = 22\n    protocol  = \"tcp\"\n\n    cidr_blocks = [\n      \"10.0.0.0/8\",\n    ]\n  }\n}\n\nresource \"aws_security_group\" \"worker_group_mgmt_two\" {\n  name_prefix = \"worker_group_mgmt_two\"\n  vpc_id      = module.vpc.vpc_id\n\n  ingress {\n    from_port = 22\n    to_port   = 22\n    protocol  = \"tcp\"\n\n    cidr_blocks = [\n      \"192.168.0.0/16\",\n    ]\n  }\n}\n\nresource \"aws_security_group\" \"all_worker_mgmt\" {\n  name_prefix = \"all_worker_management\"\n  vpc_id      = module.vpc.vpc_id\n\n  ingress {\n    from_port = 22\n    to_port   = 22\n    protocol  = \"tcp\"\n\n    cidr_blocks = [\n      \"10.0.0.0/8\",\n      \"172.16.0.0/12\",\n      \"192.168.0.0/16\",\n    ]\n  }\n}\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_007_eks_on_demand/versions.tf",
    "content": "terraform {\n  required_providers {\n    aws = {\n      source  = \"hashicorp/aws\"\n      version = \">= 3.20.0\"\n    }\n\n    random = {\n      source  = \"hashicorp/random\"\n      version = \"3.1.0\"\n    }\n\n    local = {\n      source  = \"hashicorp/local\"\n      version = \"2.1.0\"\n    }\n\n    null = {\n      source  = \"hashicorp/null\"\n      version = \"3.1.0\"\n    }\n\n    kubernetes = {\n      source  = \"hashicorp/kubernetes\"\n      version = \">= 2.0.1\"\n    }\n  }\n\n  required_version = \"> 0.14\"\n}\n\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_007_eks_on_demand/vpc.tf",
    "content": "variable \"region\" {\n  default     = \"us-east-1\"\n  description = \"AWS region\"\n}\n\nprovider \"aws\" {\n  region = var.region\n}\n\ndata \"aws_availability_zones\" \"available\" {}\n\nlocals {\n  cluster_name = \"education-eks-${random_string.suffix.result}\"\n}\n\nresource \"random_string\" \"suffix\" {\n  length  = 8\n  special = false\n}\n\nmodule \"vpc\" {\n  source  = \"terraform-aws-modules/vpc/aws\"\n  version = \"3.6.0\"\n\n  name                 = \"education-vpc\"\n  cidr                 = \"10.0.0.0/16\"\n  azs                  = data.aws_availability_zones.available.names\n  private_subnets      = [\"10.0.1.0/24\", \"10.0.2.0/24\", \"10.0.3.0/24\"]\n  public_subnets       = [\"10.0.4.0/24\", \"10.0.5.0/24\", \"10.0.6.0/24\"]\n  enable_nat_gateway   = true\n  single_nat_gateway   = true\n  enable_dns_hostnames = true\n\n  tags = {\n    \"kubernetes.io/cluster/${local.cluster_name}\" = \"shared\"\n  }\n\n  public_subnet_tags = {\n    \"kubernetes.io/cluster/${local.cluster_name}\" = \"shared\"\n    \"kubernetes.io/role/elb\"                      = \"1\"\n  }\n\n  private_subnet_tags = {\n    \"kubernetes.io/cluster/${local.cluster_name}\" = \"shared\"\n    \"kubernetes.io/role/internal-elb\"             = \"1\"\n  }\n}\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_008_k8s_nginx/ReadMe.md",
    "content": "- To create the nginx resources\n\n```bash\n$ kubectl create deployment nginx-dep --image=dubizzledotcom/demo-nginx --replicas=1 --dry-run=client -o yaml > dep.yaml\n\n$ kubectl apply -f dep.yaml                                                                                             \ndeployment.apps/nginx-dep created\n```\n\n- Now we expose the deployment using the NodePort \n\n```bash\n$ kubectl expose deployment nginx-dep --name=nginx-dep-svc-nodeport --type=NodePort --port=8080 --target-port=80 --dry-run=client -o yaml > nginx-svc-nodeport.yaml\n\n$ kubectl expose deployment nginx-dep --name=nginx-dep-svc-nodeport --type=NodePort --port=8080 --target-port=80 \nservice/nginx-dep-svc-nodeport exposed\n\n$ kubectl get svc                                                                                               \nNAME                     TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE\nkubernetes               ClusterIP   10.96.0.1        <none>        443/TCP          84d\nnginx-dep-svc-nodeport   NodePort    10.107.192.248   <none>        8080:30609/TCP   19s\n\n```\n\n- Now let's access the service via NodePort\n\n```bash\n$ curl localhost:30609/403\n<html>\n<head><title>403 Forbidden</title></head>\n<body>\n<center><h1>403 Forbidden</h1></center>\n<hr><center>nginx/1.20.1</center>\n</body>\n</html>\n\n\n$ curl localhost:30609/check.txt\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<body>\n  <p>Its working!!!</p>\n</div>\n</body>\n</html>\n\n\n$ curl localhost:30609/500      \n<html>\n<head><title>500 Internal Server Error</title></head>\n<body>\n<center><h1>500 Internal Server Error</h1></center>\n<hr><center>nginx/1.20.1</center>\n</body>\n</html>\n\n\n$ curl localhost:30609/502\n<html>\n<head><title>502 Bad Gateway</title></head>\n<body>\n<center><h1>502 Bad Gateway</h1></center>\n<hr><center>nginx/1.20.1</center>\n</body>\n</html>\n```\n\n- Now Deploy horizontal pod autoscaler\n\n```bash\n$ kubectl autoscale deployment nginx-dep --cpu-percent=50 --min=1 --max=2 --dry-run=client -o yaml > hpa.yaml\n\n$ kubectl get hpa                                                                                            \nNAME        REFERENCE              TARGETS         MINPODS   MAXPODS   REPLICAS   AGE\nnginx-dep   Deployment/nginx-dep   <unknown>/50%   1         2         0          21s\n\n$ kubectl get pods                                    \nNAME                        READY   STATUS              RESTARTS   AGE\nnginx-dep-ff8db6854-4trzl   0/1     ContainerCreating   0          1s\nnginx-pod                   1/1     Running             0          29m\n\n```\n\n- Let's deploy [metric-server](https://github.com/kubernetes-sigs/metrics-server) so that pod autoscaler is able to fetch the metrics of pods\n\n```bash\n$ kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.5.0/components.yaml\nserviceaccount/metrics-server created\nclusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-reader created\nclusterrole.rbac.authorization.k8s.io/system:metrics-server created\nrolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader created\nclusterrolebinding.rbac.authorization.k8s.io/metrics-server:system:auth-delegator created\nclusterrolebinding.rbac.authorization.k8s.io/system:metrics-server created\nservice/metrics-server created\ndeployment.apps/metrics-server created\napiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io created\n\n```\n\n- Let's deploy ingress to access our service. First we need to deploy ingress controller [ingress controller](https://kubernetes.github.io/ingress-nginx/deploy/#docker-desktop)\n\n```bash\n$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.47.0/deploy/static/provider/cloud/deploy.yaml             \nnamespace/ingress-nginx unchanged\nserviceaccount/ingress-nginx unchanged\nconfigmap/ingress-nginx-controller configured\nclusterrole.rbac.authorization.k8s.io/ingress-nginx unchanged\nclusterrolebinding.rbac.authorization.k8s.io/ingress-nginx unchanged\nrole.rbac.authorization.k8s.io/ingress-nginx unchanged\nrolebinding.rbac.authorization.k8s.io/ingress-nginx unchanged\nservice/ingress-nginx-controller-admission unchanged\nservice/ingress-nginx-controller unchanged\ndeployment.apps/ingress-nginx-controller created\nvalidatingwebhookconfiguration.admissionregistration.k8s.io/ingress-nginx-admission configured\nserviceaccount/ingress-nginx-admission unchanged\nclusterrole.rbac.authorization.k8s.io/ingress-nginx-admission unchanged\nclusterrolebinding.rbac.authorization.k8s.io/ingress-nginx-admission unchanged\nrole.rbac.authorization.k8s.io/ingress-nginx-admission unchanged\nrolebinding.rbac.authorization.k8s.io/ingress-nginx-admission unchanged\njob.batch/ingress-nginx-admission-create unchanged\njob.batch/ingress-nginx-admission-patch unchanged\n\n```\n\n- Deploy the ingress\n\n```bash\n$ kubectl apply -f ingress.yaml                                                                                                          \ningress.networking.k8s.io/ingress-wildcard-host configured\n\n$ cat /etc/hosts | grep test\n127.0.0.1 testingress.com\n\n$ curl testingress.com/check.txt\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<body>\n  <p>Its working!!!</p>\n</div>\n</body>\n</html>\n\n$ curl testingress.com/403      \n<html>\n<head><title>404 Not Found</title></head>\n<body>\n<center><h1>404 Not Found</h1></center>\n<hr><center>nginx</center>\n</body>\n</html>\n\n## which is expected as the ingress does not know about this path.\n```"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_008_k8s_nginx/dep.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  creationTimestamp: null\n  labels:\n    app: nginx-dep\n  name: nginx-dep\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: nginx-dep\n  strategy: {}\n  template:\n    metadata:\n      creationTimestamp: null\n      labels:\n        app: nginx-dep\n    spec:\n      containers:\n      - image: dubizzledotcom/demo-nginx\n        name: demo-nginx\n        resources: {}\nstatus: {}\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_008_k8s_nginx/hpa.yaml",
    "content": "apiVersion: autoscaling/v1\nkind: HorizontalPodAutoscaler\nmetadata:\n  creationTimestamp: null\n  name: nginx-dep\nspec:\n  maxReplicas: 2\n  minReplicas: 1\n  scaleTargetRef:\n    apiVersion: apps/v1\n    kind: Deployment\n    name: nginx-dep\n  targetCPUUtilizationPercentage: 50\nstatus:\n  currentReplicas: 0\n  desiredReplicas: 0\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_008_k8s_nginx/ingress.yaml",
    "content": "apiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  name: ingress-wildcard-host\nspec:\n  rules:\n    - host: \"testingress.com\"\n      http:\n        paths:\n          - pathType: Prefix\n            path: \"/check.txt\"\n            backend:\n              service:\n                name: nginx-dep-svc-nodeport\n                port:\n                  number: 8080"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_008_k8s_nginx/nginx-svc-nodeport.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  creationTimestamp: null\n  labels:\n    app: nginx-dep\n  name: nginx-dep-svc-nodeport\nspec:\n  ports:\n  - port: 8080\n    protocol: TCP\n    targetPort: 80\n  selector:\n    app: nginx-dep\n  type: NodePort\nstatus:\n  loadBalancer: {}\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_009_eks_spot_and_on_demand/README.md",
    "content": "# Learn Terraform - Provision an EKS Cluster\n\n- [learn creating eks](https://learn.hashicorp.com/tutorials/terraform/eks)\n- [vpc](https://registry.terraform.io/modules/terraform-aws-modules/vpc/aws/latest)\n- [eks](https://registry.terraform.io/modules/terraform-aws-modules/eks/aws/latest)\n- [spot and on-demand blog](https://aws.amazon.com/blogs/compute/run-your-kubernetes-workloads-on-amazon-ec2-spot-instances-with-amazon-eks/)\n\n\n\n- Init\n\n```bash\n./run.sh init\n```\n\n- Apply \n\n```bash\n./run.sh apply\n.\n.\nApply complete! Resources: 51 added, 0 changed, 0 destroyed.\n.\n.\n\n```\n\n- Get the kubeconfig\n\n```bash\n$ aws eks --region $(terraform output -raw region) update-kubeconfig --name $(terraform output -raw cluster_name) --kubeconfig kubeconfig\n```\n\n- Get the nodes\n\n```bash\n$ kubectl get nodes --kubeconfig=./kubeconfig\nNAME                         STATUS   ROLES    AGE     VERSION\nip-10-0-1-166.ec2.internal   Ready    <none>   5m2s    v1.20.4-eks-6b7464\nip-10-0-2-82.ec2.internal    Ready    <none>   4m39s   v1.20.4-eks-6b7464\n\n\n$ kubectl get pods -n kube-system --kubeconfig=./kubeconfig\nNAME                       READY   STATUS    RESTARTS   AGE\naws-node-k6btq             1/1     Running   0          4m52s\naws-node-r2rgs             1/1     Running   0          5m15s\ncoredns-65bfc5645f-lsghg   1/1     Running   0          20m\ncoredns-65bfc5645f-rw846   1/1     Running   0          20m\nkube-proxy-lwxtx           1/1     Running   0          4m52s\nkube-proxy-sf5dl           1/1     Running   0          5m15s\n```\n\n\n### Screenshots\n\n- Autoscaling groups\n\n![](.images/autoscaling-groups.png)\n\n- Launch configuration\n\n![](.images/launch-configuration.png)\n\n\n- Instances\n\n![](.images/instances.png)\n\n- Spot requests\n\n![](.images/spot-request.png)\n\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_009_eks_spot_and_on_demand/credentials.txt.example",
    "content": "[personal]\naws_access_key_id = \"********************\"\naws_secret_access_key = \"******************\"\nregion = \"eu-west-1\""
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_009_eks_spot_and_on_demand/eks-cluster.tf",
    "content": "module \"eks\" {\n  source          = \"terraform-aws-modules/eks/aws\"\n  cluster_name    = local.cluster_name\n  cluster_version = \"1.20\"\n  subnets         = module.vpc.private_subnets\n\n  tags = {\n    Environment = \"training\"\n    GithubRepo  = \"terraform-aws-eks\"\n    GithubOrg   = \"terraform-aws-modules\"\n  }\n\n  vpc_id = module.vpc.vpc_id\n\n  workers_group_defaults = {\n    root_volume_type = \"gp2\"\n  }\n\n  worker_groups = [\n    {\n      name                          = \"worker-group-1-on-demand\"\n      instance_type                 = \"t2.small\"\n      additional_userdata           = \"echo foo bar\"\n      asg_max_size                  = 1\n      kubelet_extra_args            = \"--node-labels=node.kubernetes.io/lifecycle=normal\"\n      suspended_processes           = [\"AZRebalance\"]\n      additional_security_group_ids = [aws_security_group.worker_group_mgmt_one.id]\n    },\n    {\n      name                = \"worker-group-2-spot\"\n      spot_price          = \"0.199\"\n      instance_type       = \"t2.small\"\n      asg_max_size        = 2\n      kubelet_extra_args  = \"--node-labels=node.kubernetes.io/lifecycle=spot\"\n      suspended_processes = [\"AZRebalance\"]\n    },\n  ]\n}\n\ndata \"aws_eks_cluster\" \"cluster\" {\n  name = module.eks.cluster_id\n}\n\ndata \"aws_eks_cluster_auth\" \"cluster\" {\n  name = module.eks.cluster_id\n}\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_009_eks_spot_and_on_demand/kubernetes-dashboard-admin.rbac.yaml",
    "content": "apiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: admin-user\n  namespace: kube-system\n---\n# Create ClusterRoleBinding\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: admin-user\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: cluster-admin\nsubjects:\n- kind: ServiceAccount\n  name: admin-user\n  namespace: kube-system\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_009_eks_spot_and_on_demand/kubernetes.tf",
    "content": "# Kubernetes provider\n# https://learn.hashicorp.com/terraform/kubernetes/provision-eks-cluster#optional-configure-terraform-kubernetes-provider\n# To learn how to schedule deployments and services using the provider, go here: https://learn.hashicorp.com/terraform/kubernetes/deploy-nginx-kubernetes\n\n# The Kubernetes provider is included in this file so the EKS module can complete successfully. Otherwise, it throws an error when creating `kubernetes_config_map.aws_auth`.\n# You should **not** schedule deployments and services in this workspace. This keeps workspaces modular (one for provision EKS, another for scheduling Kubernetes resources) as per best practices.\n\nprovider \"kubernetes\" {\n  host                   = data.aws_eks_cluster.cluster.endpoint\n  token                  = data.aws_eks_cluster_auth.cluster.token\n  cluster_ca_certificate = base64decode(data.aws_eks_cluster.cluster.certificate_authority.0.data)\n}\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_009_eks_spot_and_on_demand/outputs.tf",
    "content": "output \"cluster_id\" {\n  description = \"EKS cluster ID.\"\n  value       = module.eks.cluster_id\n}\n\noutput \"cluster_endpoint\" {\n  description = \"Endpoint for EKS control plane.\"\n  value       = module.eks.cluster_endpoint\n}\n\noutput \"cluster_security_group_id\" {\n  description = \"Security group ids attached to the cluster control plane.\"\n  value       = module.eks.cluster_security_group_id\n}\n\noutput \"kubectl_config\" {\n  description = \"kubectl config as generated by the module.\"\n  value       = module.eks.kubeconfig\n}\n\noutput \"config_map_aws_auth\" {\n  description = \"A kubernetes configuration to authenticate to this EKS cluster.\"\n  value       = module.eks.config_map_aws_auth\n}\n\noutput \"region\" {\n  description = \"AWS region\"\n  value       = var.region\n}\n\noutput \"cluster_name\" {\n  description = \"Kubernetes Cluster Name\"\n  value       = local.cluster_name\n}\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_009_eks_spot_and_on_demand/run.sh",
    "content": "#!/usr/bin/env bash\nmy_dir=\"$(dirname \"$0\")\"\ncredential_file=\"${my_dir}/../../credentials.txt\"\nprofile=\"personal\"\nAWS_SHARED_CREDENTIALS_FILE=\"${credential_file}\" AWS_PROFILE=\"${profile}\" terraform \"$@\"\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_009_eks_spot_and_on_demand/security-groups.tf",
    "content": "\nresource \"aws_security_group\" \"worker_group_mgmt_one\" {\n  name_prefix = \"worker_group_mgmt_one\"\n  vpc_id      = module.vpc.vpc_id\n\n  ingress {\n    from_port = 22\n    to_port   = 22\n    protocol  = \"tcp\"\n\n    cidr_blocks = [\n      \"10.0.0.0/8\",\n    ]\n  }\n}\n\nresource \"aws_security_group\" \"worker_group_mgmt_two\" {\n  name_prefix = \"worker_group_mgmt_two\"\n  vpc_id      = module.vpc.vpc_id\n\n  ingress {\n    from_port = 22\n    to_port   = 22\n    protocol  = \"tcp\"\n\n    cidr_blocks = [\n      \"192.168.0.0/16\",\n    ]\n  }\n}\n\nresource \"aws_security_group\" \"all_worker_mgmt\" {\n  name_prefix = \"all_worker_management\"\n  vpc_id      = module.vpc.vpc_id\n\n  ingress {\n    from_port = 22\n    to_port   = 22\n    protocol  = \"tcp\"\n\n    cidr_blocks = [\n      \"10.0.0.0/8\",\n      \"172.16.0.0/12\",\n      \"192.168.0.0/16\",\n    ]\n  }\n}\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_009_eks_spot_and_on_demand/versions.tf",
    "content": "terraform {\n  required_providers {\n    aws = {\n      source  = \"hashicorp/aws\"\n      version = \">= 3.20.0\"\n    }\n\n    random = {\n      source  = \"hashicorp/random\"\n      version = \"3.1.0\"\n    }\n\n    local = {\n      source  = \"hashicorp/local\"\n      version = \"2.1.0\"\n    }\n\n    null = {\n      source  = \"hashicorp/null\"\n      version = \"3.1.0\"\n    }\n\n    kubernetes = {\n      source  = \"hashicorp/kubernetes\"\n      version = \">= 2.0.1\"\n    }\n  }\n\n  required_version = \"> 0.14\"\n}\n\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_009_eks_spot_and_on_demand/vpc.tf",
    "content": "variable \"region\" {\n  default     = \"us-east-1\"\n  description = \"AWS region\"\n}\n\nprovider \"aws\" {\n  region = var.region\n}\n\ndata \"aws_availability_zones\" \"available\" {}\n\nlocals {\n  cluster_name = \"education-eks-${random_string.suffix.result}\"\n}\n\nresource \"random_string\" \"suffix\" {\n  length  = 8\n  special = false\n}\n\nmodule \"vpc\" {\n  source  = \"terraform-aws-modules/vpc/aws\"\n  version = \"3.6.0\"\n\n  name                 = \"education-vpc\"\n  cidr                 = \"10.0.0.0/16\"\n  azs                  = data.aws_availability_zones.available.names\n  private_subnets      = [\"10.0.1.0/24\", \"10.0.2.0/24\", \"10.0.3.0/24\"]\n  public_subnets       = [\"10.0.4.0/24\", \"10.0.5.0/24\", \"10.0.6.0/24\"]\n  enable_nat_gateway   = true\n  single_nat_gateway   = true\n  enable_dns_hostnames = true\n\n  tags = {\n    \"kubernetes.io/cluster/${local.cluster_name}\" = \"shared\"\n  }\n\n  public_subnet_tags = {\n    \"kubernetes.io/cluster/${local.cluster_name}\" = \"shared\"\n    \"kubernetes.io/role/elb\"                      = \"1\"\n  }\n\n  private_subnet_tags = {\n    \"kubernetes.io/cluster/${local.cluster_name}\" = \"shared\"\n    \"kubernetes.io/role/internal-elb\"             = \"1\"\n  }\n}\n"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_010_logging_and_monitoring/ReadMe.md",
    "content": "### We will set up monitoring using datadog\n\n- Install the repo\n\n```bash\n$ helm repo add datadog https://helm.datadoghq.com \n\"datadog\" already exists with the same configuration, skipping\n```\n\n- Add stable repository\n\n```bash\n$ helm repo add stable https://charts.helm.sh/stable\n\"stable\" already exists with the same configuration, skipping\n\n```\n\n- Helm repo update\n\n```bash\n$ helm repo update\n```\n\n- Download [values.yaml](https://github.com/DataDog/helm-charts/blob/main/charts/datadog/values.yaml)\n\n- Install\n\n```bash\n$ helm install datadog-release -f values.yaml --set datadog.site='datadoghq.com' --set datadog.apiKey='43be5f5f323690b33cabe30f946d6a10' datadog/datadog\nWARNING: Kubernetes configuration file is group-readable. This is insecure. Location: /Users/ankitsinghrathi/Ankit/workspace/devops-essentials/terraform/aws/task-030-creating-eks/kubeconfig\nWARNING: Kubernetes configuration file is world-readable. This is insecure. Location: /Users/ankitsinghrathi/Ankit/workspace/devops-essentials/terraform/aws/task-030-creating-eks/kubeconfig\nNAME: datadog-release\nLAST DEPLOYED: Thu Aug 26 00:40:03 2021\nNAMESPACE: default\nSTATUS: deployed\nREVISION: 1\nTEST SUITE: None\nNOTES:\nDatadog agents are spinning up on each node in your cluster. After a few\nminutes, you should see your agents starting in your event stream:\n    https://app.datadoghq.com/event/stream\n\n\n\nNAME                                                  READY   STATUS    RESTARTS   AGE\ndatadog-release-2w2pp                                 2/2     Running   0          59s\ndatadog-release-cluster-agent-6bc5df7bff-p7csx        1/1     Running   0          58s\ndatadog-release-h7rm4                                 2/2     Running   0          59s\ndatadog-release-kube-state-metrics-5955d8b769-2qxw8   1/1     Running   0          58s\ndatadog-release-zbkhv                                 2/2     Running   0          59s\n\n\n\n$ kubectl exec -it datadog-release-m7fxb -- agent status | grep \"OK\"  \nDefaulted container \"agent\" out of: agent, process-agent, init-volume (init), init-config (init)\n      Instance ID: cpu [OK]\n      Instance ID: disk:e5dffb8bef24336f [OK]\n      Instance ID: docker [OK]\n      Instance ID: file_handle [OK]\n      Instance ID: io [OK]\n      Instance ID: load [OK]\n      Instance ID: memory [OK]\n      Instance ID: network:d884b5186b651429 [OK]\n      Instance ID: ntp:d884b5186b651429 [OK]\n      Instance ID: uptime [OK]\n\n\n```\n\n- Deploy the rest of the services in EKS\n\n```bash\n$ kubectl apply -f dep.yaml,ingress.yaml,hpa.yaml\ndeployment.apps/nginx-dep created\ningress.networking.k8s.io/ingress-wildcard-host created\nhorizontalpodautoscaler.autoscaling/nginx-dep create\n```\n\n- Generate logs\n\n```bash\n$ kubectl port-forward nginx-dep-ff8db6854-gw7x6 8080:80\nForwarding from 127.0.0.1:8080 -> 80\nForwarding from [::1]:8080 -> 80\n```\n\n\n- Logs shipped to datadog\n\n![](.images/logs-shipped.png)\n\n\n- Kubernetes Overview\n\n![](.images/kubernetes-overview.png)\n\n![](.images/k8s-overview.png)\n\n- Pods Overview\n\n![](.images/pods-overview.png)\n\n\n- Host map\n\n![](.images/hostmap.png)\n\n- Infrastructure list\n\n![](.images/infra-list.png)\n\n- Containers\n\n![](.images/containers.png)\n\n- CoreDNS Overview\n\n![](.images/coredns-overview.png)\n\n- Docker Overview\n\n![](.images/docker-overview.png)\n\n- Daemonset overview\n\n![](.images/daemonset-overview.png)\n\n- Deployments Overview\n\n![](.images/deployments-overview.png)\n\n![](.images/deployment-overview2.png)\n\n- Cronjob Overview\n\n![](.images/cronjob-overview.png)\n\n- Nodes Overview\n\n![](.images/nodes-overview.png)\n\n\n\n\n### Alert Montor\n\nThis can also be integrated with slack\n\n![](.images/alert.png)\n\nWe generate 500 logs manually\n\n![](.images/generate500.png)\n\nAnd Monitor gets triggered\n\n![](.images/monitortriggered.png)"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_010_logging_and_monitoring/nginx.yaml",
    "content": "apiVersion: apps/v1\nkind: ReplicaSet\nmetadata:\n  name: nginx\nspec:\n  selector:\n    matchLabels:\n      app: webapp\n  template:\n    metadata:\n      annotations:\n        ad.datadoghq.com/nginx.logs: '[{\"source\":\"nginx\",\"service\":\"webapp\"}]'\n      labels:\n        app: webapp\n      name: nginx\n    spec:\n      containers:\n        - name: nginx\n          image: nginx"
  },
  {
    "path": "home/interview/coding_assignments/taskset_coding_assignments_interview/task_010_logging_and_monitoring/values.yaml",
    "content": "## Default values for Datadog Agent\n## See Datadog helm documentation to learn more:\n## https://docs.datadoghq.com/agent/kubernetes/helm/\n\n# nameOverride -- Override name of app\nnameOverride:  # \"\"\n\n# fullnameOverride -- Override the full qualified app name\nfullnameOverride:  # \"\"\n\n# targetSystem -- Target OS for this deployment (possible values: linux, windows)\ntargetSystem: \"linux\"\n\n# registry -- Registry to use for all Agent images (default gcr.io)\n## Currently we offer Datadog Agent images on:\n## GCR - use gcr.io/datadoghq (default)\n## DockerHub - use docker.io/datadog\n## AWS - use public.ecr.aws/datadog\nregistry: gcr.io/datadoghq\n\ndatadog:\n  # datadog.apiKey -- Your Datadog API key\n  # ref: https://app.datadoghq.com/account/settings#agent/kubernetes\n  apiKey: <DATADOG_API_KEY>\n\n  # datadog.apiKeyExistingSecret -- Use existing Secret which stores API key instead of creating a new one\n  ## If set, this parameter takes precedence over \"apiKey\".\n  apiKeyExistingSecret:  # <DATADOG_API_KEY_SECRET>\n\n  # datadog.appKey -- Datadog APP key required to use metricsProvider\n  ## If you are using clusterAgent.metricsProvider.enabled = true, you must set\n  ## a Datadog application key for read access to your metrics.\n  appKey:  # <DATADOG_APP_KEY>\n\n  # datadog.appKeyExistingSecret -- Use existing Secret which stores APP key instead of creating a new one\n  ## If set, this parameter takes precedence over \"appKey\".\n  appKeyExistingSecret:  # <DATADOG_APP_KEY_SECRET>\n\n  # datadog.securityContext -- Allows you to overwrite the default PodSecurityContext on the Daemonset or Deployment\n  securityContext: {}\n  #  seLinuxOptions:\n  #    user: \"system_u\"\n  #    role: \"system_r\"\n  #    type: \"spc_t\"\n  #    level: \"s0\"\n\n  # datadog.hostVolumeMountPropagation -- Allow to specify the `mountPropagation` value on all volumeMounts using HostPath\n  ## ref: https://kubernetes.io/docs/concepts/storage/volumes/#mount-propagation\n  hostVolumeMountPropagation: None\n\n  # datadog.clusterName -- Set a unique cluster name to allow scoping hosts and Cluster Checks easily\n  ## The name must be unique and must be dot-separated tokens with the following restrictions:\n  ## * Lowercase letters, numbers, and hyphens only.\n  ## * Must start with a letter.\n  ## * Must end with a number or a letter.\n  ## * Overall length should not be higher than 80 characters.\n  ## Compared to the rules of GKE, dots are allowed whereas they are not allowed on GKE:\n  ## https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1beta1/projects.locations.clusters#Cluster.FIELDS.name\n  clusterName:  # <CLUSTER_NAME>\n\n  # datadog.site -- The site of the Datadog intake to send Agent data to\n  ## Set to 'datadoghq.eu' to send data to the EU site.\n  site:  # datadoghq.com\n\n  # datadog.dd_url -- The host of the Datadog intake server to send Agent data to, only set this option if you need the Agent to send data to a custom URL\n  ## Overrides the site setting defined in \"site\".\n  dd_url:  # https://app.datadoghq.com\n\n  # datadog.logLevel -- Set logging verbosity, valid log levels are: trace, debug, info, warn, error, critical, off\n  logLevel: INFO\n\n  # datadog.kubeStateMetricsEnabled -- If true, deploys the kube-state-metrics deployment\n  ## ref: https://github.com/kubernetes/kube-state-metrics/tree/kube-state-metrics-helm-chart-2.13.2/charts/kube-state-metrics\n  kubeStateMetricsEnabled: true\n\n  kubeStateMetricsNetworkPolicy:\n    # datadog.kubeStateMetricsNetworkPolicy.create -- If true, create a NetworkPolicy for kube state metrics\n    create: false\n\n  kubeStateMetricsCore:\n    # datadog.kubeStateMetricsCore.enabled -- Enable the kubernetes_state_core check in the Cluster Agent (Requires Cluster Agent 1.12.0+)\n    ## ref: https://docs.datadoghq.com/integrations/kubernetes_state_core\n    enabled: false\n\n    # datadog.kubeStateMetricsCore.ignoreLegacyKSMCheck -- Disable the auto-configuration of legacy kubernetes_state check (taken into account only when datadog.kubeStateMetricsCore.enabled is true)\n    ## Disabling this field is not recommended as it results in enabling both checks, it can be useful though during the migration phase.\n    ## Migration guide: https://docs.datadoghq.com/integrations/kubernetes_state_core/?tab=helm#migration-from-kubernetes_state-to-kubernetes_state_core\n    ignoreLegacyKSMCheck: true\n\n  ## Manage Cluster checks feature\n  ## ref: https://docs.datadoghq.com/agent/autodiscovery/clusterchecks/\n  ## Autodiscovery via Kube Service annotations is automatically enabled\n  clusterChecks:\n    # datadog.clusterChecks.enabled -- Enable the Cluster Checks feature on both the cluster-agents and the daemonset\n    enabled: true\n\n  # datadog.nodeLabelsAsTags -- Provide a mapping of Kubernetes Node Labels to Datadog Tags\n  nodeLabelsAsTags: {}\n  #   beta.kubernetes.io/instance-type: aws-instance-type\n  #   kubernetes.io/role: kube_role\n  #   <KUBERNETES_NODE_LABEL>: <DATADOG_TAG_KEY>\n\n  # datadog.podLabelsAsTags -- Provide a mapping of Kubernetes Labels to Datadog Tags\n  podLabelsAsTags: {}\n  #   app: kube_app\n  #   release: helm_release\n  #   <KUBERNETES_LABEL>: <DATADOG_TAG_KEY>\n\n  # datadog.podAnnotationsAsTags -- Provide a mapping of Kubernetes Annotations to Datadog Tags\n  podAnnotationsAsTags: {}\n  #   iam.amazonaws.com/role: kube_iamrole\n  #   <KUBERNETES_ANNOTATIONS>: <DATADOG_TAG_KEY>\n\n  # datadog.tags -- List of static tags to attach to every metric, event and service check collected by this Agent.\n  ## Learn more about tagging: https://docs.datadoghq.com/tagging/\n  tags: []\n  #   - \"<KEY_1>:<VALUE_1>\"\n  #   - \"<KEY_2>:<VALUE_2>\"\n\n  # datadog.checksCardinality -- Sets the tag cardinality for the checks run by the Agent.\n  ## https://docs.datadoghq.com/getting_started/tagging/assigning_tags/?tab=containerizedenvironments#environment-variables\n  checksCardinality:  # low, orchestrator or high (not set by default to avoid overriding existing DD_CHECKS_TAG_CARDINALITY configurations, the default value in the Agent is low)\n\n  # kubelet configuration\n  kubelet:\n    # datadog.kubelet.host -- Override kubelet IP\n    host:\n      valueFrom:\n        fieldRef:\n          fieldPath: status.hostIP\n    # datadog.kubelet.tlsVerify -- Toggle kubelet TLS verification\n    # @default -- true\n    tlsVerify:  # false\n    # datadog.kubelet.hostCAPath -- Path (on host) where the Kubelet CA certificate is stored\n    # @default -- None (no mount from host)\n    hostCAPath:\n    # datadog.kubelet.agentCAPath -- Path (inside Agent containers) where the Kubelet CA certificate is stored\n    # @default -- /var/run/host-kubelet-ca.crt if hostCAPath else /var/run/secrets/kubernetes.io/serviceaccount/ca.crt\n    agentCAPath:\n\n  ## dogstatsd configuration\n  ## ref: https://docs.datadoghq.com/agent/kubernetes/dogstatsd/\n  ## To emit custom metrics from your Kubernetes application, use DogStatsD.\n  dogstatsd:\n    # datadog.dogstatsd.port -- Override the Agent DogStatsD port\n    ## Note: Make sure your client is sending to the same UDP port.\n    port: 8125\n\n    # datadog.dogstatsd.originDetection -- Enable origin detection for container tagging\n    ## https://docs.datadoghq.com/developers/dogstatsd/unix_socket/#using-origin-detection-for-container-tagging\n    originDetection: false\n\n    # datadog.dogstatsd.tags -- List of static tags to attach to every custom metric, event and service check collected by Dogstatsd.\n    ## Learn more about tagging: https://docs.datadoghq.com/tagging/\n    tags: []\n    #   - \"<KEY_1>:<VALUE_1>\"\n    #   - \"<KEY_2>:<VALUE_2>\"\n\n    # datadog.dogstatsd.tagCardinality -- Sets the tag cardinality relative to the origin detection\n    ## https://docs.datadoghq.com/developers/dogstatsd/unix_socket/#using-origin-detection-for-container-tagging\n    tagCardinality: low\n\n    # datadog.dogstatsd.useSocketVolume -- Enable dogstatsd over Unix Domain Socket with an HostVolume\n    ## ref: https://docs.datadoghq.com/developers/dogstatsd/unix_socket/\n    useSocketVolume: false\n\n    # datadog.dogstatsd.socketPath -- Path to the DogStatsD socket\n    socketPath: /var/run/datadog/dsd.socket\n\n    # datadog.dogstatsd.hostSocketPath -- Host path to the DogStatsD socket\n    hostSocketPath: /var/run/datadog/\n\n    # datadog.dogstatsd.useHostPort -- Sets the hostPort to the same value of the container port\n    ## Needs to be used for sending custom metrics.\n    ## The ports need to be available on all hosts.\n    ##\n    ## WARNING: Make sure that hosts using this are properly firewalled otherwise\n    ## metrics and traces are accepted from any host able to connect to this host.\n    useHostPort: false\n\n    # datadog.dogstatsd.useHostPID -- Run the agent in the host's PID namespace\n    ## This is required for Dogstatsd origin detection to work.\n    ## See https://docs.datadoghq.com/developers/dogstatsd/unix_socket/\n    useHostPID: false\n\n    # datadog.dogstatsd.nonLocalTraffic -- Enable this to make each node accept non-local statsd traffic (from outside of the pod)\n    ## ref: https://github.com/DataDog/docker-dd-agent#environment-variables\n    nonLocalTraffic: true\n\n  # datadog.collectEvents -- Enables this to start event collection from the kubernetes API\n  ## ref: https://docs.datadoghq.com/agent/kubernetes/#event-collection\n  collectEvents: true\n\n  # datadog.leaderElection -- Enables leader election mechanism for event collection\n  leaderElection: true\n\n  # datadog.leaderLeaseDuration -- Set the lease time for leader election in second\n  leaderLeaseDuration:  # 60\n\n  ## Enable logs agent and provide custom configs\n  logs:\n    # datadog.logs.enabled -- Enables this to activate Datadog Agent log collection\n    ## ref: https://docs.datadoghq.com/agent/basic_agent_usage/kubernetes/#log-collection-setup\n    enabled: true\n\n    # datadog.logs.containerCollectAll -- Enable this to allow log collection for all containers\n    ## ref: https://docs.datadoghq.com/agent/basic_agent_usage/kubernetes/#log-collection-setup\n    containerCollectAll: true\n\n    # datadog.logs.containerCollectUsingFiles -- Collect logs from files in /var/log/pods instead of using container runtime API\n    ## It's usually the most efficient way of collecting logs.\n    ## ref: https://docs.datadoghq.com/agent/basic_agent_usage/kubernetes/#log-collection-setup\n    containerCollectUsingFiles: true\n\n  ## Enable apm agent and provide custom configs\n  apm:\n    # datadog.apm.enabled -- Enable this to enable APM and tracing, on port 8126\n    ## ref: https://github.com/DataDog/docker-dd-agent#tracing-from-the-host\n    enabled: false\n\n    # datadog.apm.port -- Override the trace Agent port\n    ## Note: Make sure your client is sending to the same UDP port.\n    port: 8126\n\n    # datadog.apm.useSocketVolume -- Enable APM over Unix Domain Socket\n    ## ref: https://docs.datadoghq.com/agent/kubernetes/apm/\n    useSocketVolume: false\n\n    # datadog.apm.socketPath -- Path to the trace-agent socket\n    socketPath: /var/run/datadog/apm.socket\n\n    # datadog.apm.hostSocketPath -- Host path to the trace-agent socket\n    hostSocketPath: /var/run/datadog/\n\n  # datadog.envFrom -- Set environment variables for all Agents directly from configMaps and/or secrets\n  ## envFrom to pass configmaps or secrets as environment\n  envFrom: []\n  #   - configMapRef:\n  #       name: <CONFIGMAP_NAME>\n  #   - secretRef:\n  #       name: <SECRET_NAME>\n\n  # datadog.env -- Set environment variables for all Agents\n  ## The Datadog Agent supports many environment variables.\n  ## ref: https://docs.datadoghq.com/agent/docker/?tab=standard#environment-variables\n  env: []\n  #   - name: <ENV_VAR_NAME>\n  #     value: <ENV_VAR_VALUE>\n\n  # datadog.confd -- Provide additional check configurations (static and Autodiscovery)\n  ## Each key becomes a file in /conf.d\n  ## ref: https://github.com/DataDog/datadog-agent/tree/main/Dockerfiles/agent#optional-volumes\n  ## ref: https://docs.datadoghq.com/agent/autodiscovery/\n  confd: {}\n  #   redisdb.yaml: |-\n  #     init_config:\n  #     instances:\n  #       - host: \"name\"\n  #         port: \"6379\"\n  #   kubernetes_state.yaml: |-\n  #     ad_identifiers:\n  #       - kube-state-metrics\n  #     init_config:\n  #     instances:\n  #       - kube_state_url: http://%%host%%:8080/metrics\n\n  # datadog.checksd -- Provide additional custom checks as python code\n  ## Each key becomes a file in /checks.d\n  ## ref: https://github.com/DataDog/datadog-agent/tree/main/Dockerfiles/agent#optional-volumes\n  checksd: {}\n  #   service.py: |-\n\n  # datadog.dockerSocketPath -- Path to the docker socket\n  dockerSocketPath:  # /var/run/docker.sock\n\n  # datadog.criSocketPath -- Path to the container runtime socket (if different from Docker)\n  criSocketPath:  # /var/run/containerd/containerd.sock\n\n  # datadog.serviceTopology -- Configure service topology to send custom metrics and traces without using host ports\n  # Important notes:\n  # - The Service Topology feature in Kubernetes is still in alpha and disabled by default, please make sure it's enabled in your cluster configuration\n  # - The environment variable DD_AGENT_HOST in your application pod template must be configured to reach the topology service\n  ## ref: https://kubernetes.io/docs/concepts/services-networking/service-topology/\n  serviceTopology:\n\n    # datadog.serviceTopology.enabled -- Enabling this will allow sending custom metrics and APM traces to the Datadog Agent on the same node without using a host port\n    # Important note: Enabling this option without enabling Service Topology in the cluster will result in wrong tagging for traces and custom metrics\n    enabled: false\n\n    # datadog.serviceTopology.serviceName -- Configure the name of the service responsible for routing the custom metrics and/or traces to the Datadog Agent\n    # Important note: DD_AGENT_HOST must be configured in your app to target this service.\n    # Example using DNS record: DD_AGENT_HOST=datadog-agent.<datadog-namespace>.svc.cluster.local\n    serviceName: datadog-agent\n\n  ## Enable process agent and provide custom configs\n  processAgent:\n    # datadog.processAgent.enabled -- Set this to true to enable live process monitoring agent\n    ## Note: /etc/passwd is automatically mounted to allow username resolution.\n    ## ref: https://docs.datadoghq.com/graphing/infrastructure/process/#kubernetes-daemonset\n    enabled: true\n\n    # datadog.processAgent.processCollection -- Set this to true to enable process collection in process monitoring agent\n    ## Requires processAgent.enabled to be set to true to have any effect\n    processCollection: false\n\n  ## Enable systemProbe agent and provide custom configs\n  systemProbe:\n\n    # datadog.systemProbe.debugPort -- Specify the port to expose pprof and expvar for system-probe agent\n    debugPort: 0\n\n    # datadog.systemProbe.enableConntrack -- Enable the system-probe agent to connect to the netlink/conntrack subsystem to add NAT information to connection data\n    ## Ref: http://conntrack-tools.netfilter.org/\n    enableConntrack: true\n\n    # datadog.systemProbe.seccomp -- Apply an ad-hoc seccomp profile to the system-probe agent to restrict its privileges\n    ## Note that this will break `kubectl exec … -c system-probe -- /bin/bash`\n    seccomp: localhost/system-probe\n\n    # datadog.systemProbe.seccompRoot -- Specify the seccomp profile root directory\n    seccompRoot: /var/lib/kubelet/seccomp\n\n    # datadog.systemProbe.bpfDebug -- Enable logging for kernel debug\n    bpfDebug: false\n\n    # datadog.systemProbe.apparmor -- Specify a apparmor profile for system-probe\n    apparmor: unconfined\n\n    # datadog.systemProbe.enableTCPQueueLength -- Enable the TCP queue length eBPF-based check\n    enableTCPQueueLength: false\n\n    # datadog.systemProbe.enableOOMKill -- Enable the OOM kill eBPF-based check\n    enableOOMKill: false\n\n    # datadog.systemProbe.collectDNSStats -- Enable DNS stat collection\n    collectDNSStats: true\n\n    # datadog.systemProbe.maxTrackedConnections -- the maximum number of tracked connections\n    maxTrackedConnections: 131072\n\n    # datadog.systemProbe.conntrackMaxStateSize -- the maximum size of the userspace conntrack cache\n    conntrackMaxStateSize: 131072  # 2 * maxTrackedConnections by default, per  https://github.com/DataDog/datadog-agent/blob/d1c5de31e1bba72dfac459aed5ff9562c3fdcc20/pkg/process/config/config.go#L229\n\n\n  orchestratorExplorer:\n    # datadog.orchestratorExplorer.enabled -- Set this to false to disable the orchestrator explorer\n    ## This requires processAgent.enabled and clusterAgent.enabled to be set to true\n    ## ref: TODO - add doc link\n    enabled: true\n\n    # datadog.orchestratorExplorer.container_scrubbing -- Enable the scrubbing of containers in the kubernetes resource YAML for sensitive information\n    ## The container scrubbing is taking significant resources during data collection.\n    ## If you notice that the cluster-agent uses too much CPU in larger clusters\n    ## turning this option off will improve the situation.\n    container_scrubbing:\n      enabled: true\n\n  networkMonitoring:\n    # datadog.networkMonitoring.enabled -- Enable network performance monitoring\n    enabled: false\n\n  ## Enable security agent and provide custom configs\n  securityAgent:\n    compliance:\n      # datadog.securityAgent.compliance.enabled -- Set this to true to enable compliance checks\n      enabled: false\n\n      # datadog.securityAgent.compliance.configMap -- Contains compliance benchmarks that will be used\n      configMap:\n\n      # datadog.securityAgent.compliance.checkInterval -- Compliance check run interval\n      checkInterval: 20m\n\n    runtime:\n      # datadog.securityAgent.runtime.enabled -- Set to true to enable the Security Runtime Module\n      enabled: false\n\n      policies:\n        # datadog.securityAgent.runtime.policies.configMap -- Contains policies that will be used\n        configMap:\n\n      syscallMonitor:\n        # datadog.securityAgent.runtime.syscallMonitor.enabled -- Set to true to enable the Syscall monitoring.\n        enabled: false\n\n  ## Manage NetworkPolicy\n  networkPolicy:\n    # datadog.networkPolicy.create -- If true, create NetworkPolicy for all the components\n    create: false\n\n    # datadog.networkPolicy.flavor -- Flavor of the network policy to use.\n    # Can be:\n    # * kubernetes for networking.k8s.io/v1/NetworkPolicy\n    # * cilium     for cilium.io/v2/CiliumNetworkPolicy\n    flavor: kubernetes\n\n    cilium:\n      # datadog.networkPolicy.cilium.dnsSelector -- Cilium selector of the DNS server entity\n      # @default -- kube-dns in namespace kube-system\n      dnsSelector:\n        toEndpoints:\n          - matchLabels:\n              \"k8s:io.kubernetes.pod.namespace\": kube-system\n              \"k8s:k8s-app\": kube-dns\n\n  ## Configure prometheus scraping autodiscovery\n  ## ref: https://docs.datadoghq.com/agent/kubernetes/prometheus/\n  prometheusScrape:\n    # datadog.prometheusScrape.enabled -- Enable autodiscovering pods and services exposing prometheus metrics.\n    enabled: false\n    # datadog.prometheusScrape.serviceEndpoints -- Enable generating dedicated checks for service endpoints.\n    serviceEndpoints: false\n    # datadog.prometheusScrape.additionalConfigs -- Allows adding advanced openmetrics check configurations with custom discovery rules. (Requires Agent version 7.27+)\n    additionalConfigs: []\n      # -\n      #   autodiscovery:\n      #     kubernetes_annotations:\n      #       include:\n      #         custom_include_label: 'true'\n      #       exclude:\n      #         custom_exclude_label: 'true'\n      #     kubernetes_container_names:\n      #     - my-app\n      #   configurations:\n      #   - send_distribution_buckets: true\n    #     timeout: 5\n\n  # datadog.ignoreAutoConfig -- List of integration to ignore auto_conf.yaml.\n  ## ref: https://docs.datadoghq.com/agent/faq/auto_conf/\n  ignoreAutoConfig: []\n  #  - redisdb\n  #  - kubernetes_state\n\n  # datadog.containerExclude -- Exclude containers from the Agent\n  # Autodiscovery, as a space-sepatered list\n  ## ref: https://docs.datadoghq.com/agent/guide/autodiscovery-management/?tab=containerizedagent#exclude-containers\n  containerExclude:  # \"image:datadog/agent\"\n\n  # datadog.containerInclude -- Include containers in the Agent Autodiscovery,\n  # as a space-separated list.  If a container matches an include rule, it’s\n  # always included in the Autodiscovery\n  ## ref: https://docs.datadoghq.com/agent/guide/autodiscovery-management/?tab=containerizedagent#include-containers\n  containerInclude:\n\n  # datadog.containerExcludeLogs -- Exclude logs from the Agent Autodiscovery,\n  # as a space-separated list\n  containerExcludeLogs:\n\n  # datadog.containerIncludeLogs -- Include logs in the Agent Autodiscovery, as\n  # a space-separated list\n  containerIncludeLogs:\n\n  # datadog.containerExcludeMetrics -- Exclude metrics from the Agent\n  # Autodiscovery, as a space-separated list\n  containerExcludeMetrics:\n\n  # datadog.containerIncludeMetrics -- Include metrics in the Agent\n  # Autodiscovery, as a space-separated list\n  containerIncludeMetrics:\n\n  # datadog.excludePauseContainer -- Exclude pause containers from the Agent\n  # Autodiscovery.\n  ## ref: https://docs.datadoghq.com/agent/guide/autodiscovery-management/?tab=containerizedagent#pause-containers\n  excludePauseContainer: true\n\n## This is the Datadog Cluster Agent implementation that handles cluster-wide\n## metrics more cleanly, separates concerns for better rbac, and implements\n## the external metrics API so you can autoscale HPAs based on datadog metrics\n## ref: https://docs.datadoghq.com/agent/kubernetes/cluster/\nclusterAgent:\n  # clusterAgent.enabled -- Set this to false to disable Datadog Cluster Agent\n  enabled: true\n\n  ## Define the Datadog Cluster-Agent image to work with\n  image:\n    # clusterAgent.image.name -- Cluster Agent image name to use (relative to `registry`)\n    name: cluster-agent\n\n    # clusterAgent.image.tag -- Cluster Agent image tag to use\n    tag: 1.14.0\n\n    # clusterAgent.image.repository -- Override default registry + image.name for Cluster Agent\n    repository:\n\n    # clusterAgent.image.pullPolicy -- Cluster Agent image pullPolicy\n    pullPolicy: IfNotPresent\n\n    # clusterAgent.image.pullSecrets -- Cluster Agent repository pullSecret (ex: specify docker registry credentials)\n    ## See https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod\n    pullSecrets: []\n    #   - name: \"<REG_SECRET>\"\n\n  # clusterAgent.securityContext -- Allows you to overwrite the default PodSecurityContext on the cluster-agent pods.\n  securityContext: {}\n\n  containers:\n    clusterAgent:\n      # clusterAgent.containers.clusterAgent.securityContext -- Specify securityContext on the cluster-agent container.\n      securityContext: {}\n\n  # clusterAgent.command -- Command to run in the Cluster Agent container as entrypoint\n  command: []\n\n  # clusterAgent.token -- Cluster Agent token is a preshared key between node agents and cluster agent (autogenerated if empty, needs to be at least 32 characters a-zA-z)\n  token: \"\"\n\n  # clusterAgent.tokenExistingSecret -- Existing secret name to use for Cluster Agent token\n  tokenExistingSecret: \"\"\n\n  # clusterAgent.replicas -- Specify the of cluster agent replicas, if > 1 it allow the cluster agent to work in HA mode.\n  replicas: 1\n\n  ## Provide Cluster Agent Deployment pod(s) RBAC configuration\n  rbac:\n    # clusterAgent.rbac.create -- If true, create & use RBAC resources\n    create: true\n\n    # clusterAgent.rbac.serviceAccountName -- Specify a preexisting ServiceAccount to use if clusterAgent.rbac.create is false\n    serviceAccountName: default\n\n    # clusterAgent.rbac.serviceAccountAnnotations -- Annotations to add to the ServiceAccount if clusterAgent.rbac.create is true\n    serviceAccountAnnotations: {}\n\n  ## Provide Cluster Agent pod security configuration\n  podSecurity:\n    podSecurityPolicy:\n      # clusterAgent.podSecurity.podSecurityPolicy.create -- If true, create a PodSecurityPolicy resource for Cluster Agent pods\n      create: false\n    securityContextConstraints:\n      # clusterAgent.podSecurity.securityContextConstraints.create -- If true, create a SCC resource for Cluster Agent pods\n      create: false\n\n  # Enable the metricsProvider to be able to scale based on metrics in Datadog\n  metricsProvider:\n    # clusterAgent.metricsProvider.enabled -- Set this to true to enable Metrics Provider\n    enabled: false\n\n    # clusterAgent.metricsProvider.wpaController -- Enable informer and controller of the watermark pod autoscaler\n    ## NOTE: You need to install the `WatermarkPodAutoscaler` CRD before\n    wpaController: false\n\n    # clusterAgent.metricsProvider.useDatadogMetrics -- Enable usage of DatadogMetric CRD to autoscale on arbitrary Datadog queries\n    ## NOTE: It will install DatadogMetrics CRD automatically (it may conflict with previous installations)\n    useDatadogMetrics: false\n\n    # clusterAgent.metricsProvider.createReaderRbac -- Create `external-metrics-reader` RBAC automatically (to allow HPA to read data from Cluster Agent)\n    createReaderRbac: true\n\n    # clusterAgent.metricsProvider.aggregator -- Define the aggregator the cluster agent will use to process the metrics. The options are (avg, min, max, sum)\n    aggregator: avg\n\n    ## Configuration for the service for the cluster-agent metrics server\n    service:\n      # clusterAgent.metricsProvider.service.type -- Set type of cluster-agent metrics server service\n      type: ClusterIP\n\n      # clusterAgent.metricsProvider.service.port -- Set port of cluster-agent metrics server service (Kubernetes >= 1.15)\n      port: 8443\n\n    # clusterAgent.metricsProvider.endpoint -- Override the external metrics provider endpoint. If not set, the cluster-agent defaults to `datadog.site`\n    endpoint:  # https://api.datadoghq.com\n\n  # clusterAgent.env -- Set environment variables specific to Cluster Agent\n  ## The Cluster-Agent supports many additional environment variables\n  ## ref: https://docs.datadoghq.com/agent/cluster_agent/commands/#cluster-agent-options\n  env: []\n\n  admissionController:\n    # clusterAgent.admissionController.enabled -- Enable the admissionController to be able to inject APM/Dogstatsd config and standard tags (env, service, version) automatically into your pods\n    enabled: false\n\n    # clusterAgent.admissionController.mutateUnlabelled -- Enable injecting config without having the pod label 'admission.datadoghq.com/enabled=\"true\"'\n    mutateUnlabelled: false\n\n  # clusterAgent.confd -- Provide additional cluster check configurations\n  ## Each key will become a file in /conf.d\n  ## ref: https://docs.datadoghq.com/agent/autodiscovery/\n  confd: {}\n  #   mysql.yaml: |-\n  #     cluster_check: true\n  #     instances:\n  #       - server: '<EXTERNAL_IP>'\n  #         port: 3306\n  #         user: datadog\n  #         pass: '<YOUR_CHOSEN_PASSWORD>'\n\n  # clusterAgent.resources -- Datadog cluster-agent resource requests and limits.\n  resources: {}\n  # requests:\n  #   cpu: 200m\n  #   memory: 256Mi\n  # limits:\n  #   cpu: 200m\n  #   memory: 256Mi\n\n  # clusterAgent.priorityClassName -- Name of the priorityClass to apply to the Cluster Agent\n  priorityClassName:  # system-cluster-critical\n\n  # clusterAgent.nodeSelector -- Allow the Cluster Agent Deployment to be scheduled on selected nodes\n  ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector\n  ## Ref: https://kubernetes.io/docs/user-guide/node-selection/\n  nodeSelector: {}\n\n  # clusterAgent.affinity -- Allow the Cluster Agent Deployment to schedule using affinity rules\n  ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity\n  affinity: {}\n\n  # clusterAgent.healthPort -- Port number to use in the Cluster Agent for the healthz endpoint\n  healthPort: 5556\n\n  # clusterAgent.livenessProbe -- Override default Cluster Agent liveness probe settings\n  # @default -- Every 15s / 6 KO / 1 OK\n  livenessProbe:\n    initialDelaySeconds: 15\n    periodSeconds: 15\n    timeoutSeconds: 5\n    successThreshold: 1\n    failureThreshold: 6\n\n  # clusterAgent.readinessProbe -- Override default Cluster Agent readiness probe settings\n  # @default -- Every 15s / 6 KO / 1 OK\n  readinessProbe:\n    initialDelaySeconds: 15\n    periodSeconds: 15\n    timeoutSeconds: 5\n    successThreshold: 1\n    failureThreshold: 6\n\n  # clusterAgent.strategy -- Allow the Cluster Agent deployment to perform a rolling update on helm update\n  ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy\n  strategy:\n    type: RollingUpdate\n    rollingUpdate:\n      maxSurge: 1\n      maxUnavailable: 0\n\n  # clusterAgent.podAnnotations -- Annotations to add to the cluster-agents's pod(s)\n  podAnnotations: {}\n  #   key: \"value\"\n\n  # clusterAgent.useHostNetwork -- Bind ports on the hostNetwork\n  ## Useful for CNI networking where hostPort might\n  ## not be supported. The ports need to be available on all hosts. It can be\n  ## used for custom metrics instead of a service endpoint.\n  ##\n  ## WARNING: Make sure that hosts using this are properly firewalled otherwise\n  ## metrics and traces are accepted from any host able to connect to this host.\n  #\n  useHostNetwork: false\n\n  # clusterAgent.dnsConfig -- Specify dns configuration options for datadog cluster agent containers e.g ndots\n  ## ref: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-dns-config\n  dnsConfig: {}\n  #  options:\n  #  - name: ndots\n  #    value: \"1\"\n\n  # clusterAgent.volumes -- Specify additional volumes to mount in the cluster-agent container\n  volumes: []\n  #   - hostPath:\n  #       path: <HOST_PATH>\n  #     name: <VOLUME_NAME>\n\n  # clusterAgent.volumeMounts -- Specify additional volumes to mount in the cluster-agent container\n  volumeMounts: []\n  #   - name: <VOLUME_NAME>\n  #     mountPath: <CONTAINER_PATH>\n  #     readOnly: true\n\n  # clusterAgent.datadog_cluster_yaml -- Specify custom contents for the datadog cluster agent config (datadog-cluster.yaml)\n  datadog_cluster_yaml: {}\n\n  # clusterAgent.createPodDisruptionBudget -- Create pod disruption budget for Cluster Agent deployments\n  createPodDisruptionBudget: false\n\n  networkPolicy:\n    # clusterAgent.networkPolicy.create -- If true, create a NetworkPolicy for the cluster agent.\n    # DEPRECATED. Use datadog.networkPolicy.create instead\n    create: false\n\n  # clusterAgent.additionalLabels -- Adds labels to the Cluster Agent deployment and pods\n  additionalLabels: {}\n  # key: \"value\"\n\n## This section lets you configure the agents deployed by this chart to connect to a Cluster Agent\n## deployed independently\nexistingClusterAgent:\n  # existingClusterAgent.join -- set this to true if you want the agents deployed by this chart to\n  # connect to a Cluster Agent deployed independently\n  join: false\n\n  # existingClusterAgent.tokenSecretName -- Existing secret name to use for external Cluster Agent token\n  tokenSecretName:  # <EXISTING_DCA_SECRET_NAME>\n\n  # existingClusterAgent.serviceName -- Existing service name to use for reaching the external Cluster Agent\n  serviceName:  # <EXISTING_DCA_SERVICE_NAME>\n\n  # existingClusterAgent.clusterchecksEnabled -- set this to false if you don’t want the agents to run the cluster checks of the joined external cluster agent\n  clusterchecksEnabled: true\n\nagents:\n  # agents.enabled -- You should keep Datadog DaemonSet enabled!\n  ## The exceptional case could be a situation when you need to run\n  ## single Datadog pod per every namespace, but you do not need to\n  ## re-create a DaemonSet for every non-default namespace install.\n  ## Note: StatsD and DogStatsD work over UDP, so you may not\n  ## get guaranteed delivery of the metrics in Datadog-per-namespace setup!\n  #\n  enabled: true\n\n  ## Define the Datadog image to work with\n  image:\n    # agents.image.name -- Datadog Agent image name to use (relative to `registry`)\n    ## use \"dogstatsd\" for Standalone Datadog Agent DogStatsD 7\n    name: agent\n\n    # agents.image.tag -- Define the Agent version to use\n    ## Use 7-jmx to enable jmx fetch collection\n    tag: 7.30.0\n\n    # agents.image.repository -- Override default registry + image.name for Agent\n    repository:\n\n    # agents.image.doNotCheckTag -- Skip the version<>chart compatibility check\n    ## By default, the version passed in agents.image.tag is checked\n    ## for compatibility with the version of the chart.\n    ## This boolean permits to completely skip this check.\n    ## This is useful, for example, for custom tags that are not\n    ## respecting semantic versioning\n    doNotCheckTag:  # false\n\n    # agents.image.pullPolicy -- Datadog Agent image pull policy\n    pullPolicy: IfNotPresent\n\n    # agents.image.pullSecrets -- Datadog Agent repository pullSecret (ex: specify docker registry credentials)\n    ## See https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod\n    pullSecrets: []\n    #   - name: \"<REG_SECRET>\"\n\n  ## Provide Daemonset RBAC configuration\n  rbac:\n    # agents.rbac.create -- If true, create & use RBAC resources\n    create: true\n\n    # agents.rbac.serviceAccountName -- Specify a preexisting ServiceAccount to use if agents.rbac.create is false\n    serviceAccountName: default\n\n    # agents.rbac.serviceAccountAnnotations -- Annotations to add to the ServiceAccount if agents.rbac.create is true\n    serviceAccountAnnotations: {}\n\n  ## Provide Daemonset PodSecurityPolicy configuration\n  podSecurity:\n    podSecurityPolicy:\n      # agents.podSecurity.podSecurityPolicy.create -- If true, create a PodSecurityPolicy resource for Agent pods\n      create: false\n\n    securityContextConstraints:\n      # agents.podSecurity.securityContextConstraints.create -- If true, create a SecurityContextConstraints resource for Agent pods\n      create: false\n\n    # agents.podSecurity.seLinuxContext -- Provide seLinuxContext configuration for PSP/SCC\n    # @default -- Must run as spc_t\n    seLinuxContext:\n      rule: MustRunAs\n      seLinuxOptions:\n        user: system_u\n        role: system_r\n        type: spc_t\n        level: s0\n\n    # agents.podSecurity.privileged -- If true, Allow to run privileged containers\n    privileged: false\n\n    # agents.podSecurity.capabilities -- Allowed capabilities\n    capabilities:\n      - SYS_ADMIN\n      - SYS_RESOURCE\n      - SYS_PTRACE\n      - NET_ADMIN\n      - NET_BROADCAST\n      - NET_RAW\n      - IPC_LOCK\n      - AUDIT_CONTROL\n      - AUDIT_READ\n\n    # agents.podSecurity.volumes -- Allowed volumes types\n    volumes:\n      - configMap\n      - downwardAPI\n      - emptyDir\n      - hostPath\n      - secret\n\n    # agents.podSecurity.seccompProfiles -- Allowed seccomp profiles\n    seccompProfiles:\n      - \"runtime/default\"\n      - \"localhost/system-probe\"\n\n    # agents.podSecurity.apparmorProfiles -- Allowed apparmor profiles\n    apparmorProfiles:\n      - \"runtime/default\"\n      - \"unconfined\"\n\n    apparmor:\n      # agents.podSecurity.apparmor.enabled -- If true, enable apparmor enforcement\n      ## see: https://kubernetes.io/docs/tutorials/clusters/apparmor/\n      enabled: true\n\n  containers:\n    agent:\n      # agents.containers.agent.env -- Additional environment variables for the agent container\n      env: []\n\n      # agents.containers.agent.logLevel -- Set logging verbosity, valid log levels are: trace, debug, info, warn, error, critical, and off\n      ## If not set, fall back to the value of datadog.logLevel.\n      logLevel:  # INFO\n\n      # agents.containers.agent.resources -- Resource requests and limits for the agent container.\n      resources: {}\n      #  requests:\n      #    cpu: 200m\n      #    memory: 256Mi\n      #  limits:\n      #    cpu: 200m\n      #    memory: 256Mi\n\n      # agents.containers.agent.healthPort -- Port number to use in the node agent for the healthz endpoint\n      healthPort: 5555\n\n      # agents.containers.agent.livenessProbe -- Override default agent liveness probe settings\n      # @default -- Every 15s / 6 KO / 1 OK\n      livenessProbe:\n        initialDelaySeconds: 15\n        periodSeconds: 15\n        timeoutSeconds: 5\n        successThreshold: 1\n        failureThreshold: 6\n\n      # agents.containers.agent.readinessProbe -- Override default agent readiness probe settings\n      # @default -- Every 15s / 6 KO / 1 OK\n      readinessProbe:\n        initialDelaySeconds: 15\n        periodSeconds: 15\n        timeoutSeconds: 5\n        successThreshold: 1\n        failureThreshold: 6\n\n      # agents.containers.agent.securityContext -- Allows you to overwrite the default container SecurityContext for the agent container.\n      securityContext: {}\n\n      # agents.containers.agent.ports -- Allows to specify extra ports (hostPorts for instance) for this container\n      ports: []\n\n    processAgent:\n      # agents.containers.processAgent.env -- Additional environment variables for the process-agent container\n      env: []\n\n      # agents.containers.processAgent.logLevel -- Set logging verbosity, valid log levels are: trace, debug, info, warn, error, critical, and off\n      ## If not set, fall back to the value of datadog.logLevel.\n      logLevel:  # INFO\n\n      # agents.containers.processAgent.resources -- Resource requests and limits for the process-agent container\n      resources: {}\n      #  requests:\n      #    cpu: 100m\n      #    memory: 200Mi\n      #  limits:\n      #    cpu: 100m\n      #    memory: 200Mi\n\n      # agents.containers.processAgent.securityContext -- Allows you to overwrite the default container SecurityContext for the process-agent container.\n      securityContext: {}\n\n      # agents.containers.processAgent.ports -- Allows to specify extra ports (hostPorts for instance) for this container\n      ports: []\n\n    traceAgent:\n      # agents.containers.traceAgent.env -- Additional environment variables for the trace-agent container\n      env:\n\n      # agents.containers.traceAgent.logLevel -- Set logging verbosity, valid log levels are: trace, debug, info, warn, error, critical, and off\n      logLevel:  # INFO\n\n      # agents.containers.traceAgent.resources -- Resource requests and limits for the trace-agent container\n      resources: {}\n      #  requests:\n      #    cpu: 100m\n      #    memory: 200Mi\n      #  limits:\n      #    cpu: 100m\n      #    memory: 200Mi\n\n      # agents.containers.traceAgent.livenessProbe -- Override default agent liveness probe settings\n      # @default -- Every 15s\n      livenessProbe:\n        initialDelaySeconds: 15\n        periodSeconds: 15\n        timeoutSeconds: 5\n\n      # agents.containers.traceAgent.securityContext -- Allows you to overwrite the default container SecurityContext for the trace-agent container.\n      securityContext: {}\n\n      # agents.containers.traceAgent.ports -- Allows to specify extra ports (hostPorts for instance) for this container\n      ports: []\n\n    systemProbe:\n      # agents.containers.systemProbe.env -- Additional environment variables for the system-probe container\n      env: []\n\n      # agents.containers.systemProbe.logLevel -- Set logging verbosity, valid log levels are: trace, debug, info, warn, error, critical, and off.\n      ## If not set, fall back to the value of datadog.logLevel.\n      logLevel:  # INFO\n\n      # agents.containers.systemProbe.resources -- Resource requests and limits for the system-probe container\n      resources: {}\n      #  requests:\n      #    cpu: 100m\n      #    memory: 200Mi\n      #  limits:\n      #    cpu: 100m\n      #    memory: 200Mi\n\n      # agents.containers.systemProbe.securityContext -- Allows you to overwrite the default container SecurityContext for the system-probe container.\n      securityContext:\n        privileged: false\n        capabilities:\n          add: [\"SYS_ADMIN\", \"SYS_RESOURCE\", \"SYS_PTRACE\", \"NET_ADMIN\", \"NET_BROADCAST\", \"NET_RAW\", \"IPC_LOCK\"]\n\n      # agents.containers.systemProbe.ports -- Allows to specify extra ports (hostPorts for instance) for this container\n      ports: []\n\n    securityAgent:\n      # agents.containers.securityAgent.env -- Additional environment variables for the security-agent container\n      env:\n\n      # agents.containers.securityAgent.logLevel -- Set logging verbosity, valid log levels are: trace, debug, info, warn, error, critical, and off\n      ## If not set, fall back to the value of datadog.logLevel.\n      logLevel:  # INFO\n\n      # agents.containers.securityAgent.resources -- Resource requests and limits for the security-agent container\n      resources: {}\n      #  requests:\n      #    cpu: 100m\n      #    memory: 200Mi\n      #  limits:\n      #    cpu: 100m\n      #    memory: 200Mi\n\n      # agents.containers.securityAgent.ports -- Allows to specify extra ports (hostPorts for instance) for this container\n      ports: []\n\n    initContainers:\n      # agents.containers.initContainers.resources -- Resource requests and limits for the init containers\n      resources: {}\n      #  requests:\n      #    cpu: 100m\n      #    memory: 200Mi\n      #  limits:\n      #    cpu: 100m\n      #    memory: 200Mi\n\n  # agents.volumes -- Specify additional volumes to mount in the dd-agent container\n  volumes: []\n  #   - hostPath:\n  #       path: <HOST_PATH>\n  #     name: <VOLUME_NAME>\n\n  # agents.volumeMounts -- Specify additional volumes to mount in all containers of the agent pod\n  volumeMounts: []\n  #   - name: <VOLUME_NAME>\n  #     mountPath: <CONTAINER_PATH>\n  #     readOnly: true\n\n  # agents.useHostNetwork -- Bind ports on the hostNetwork\n  ## Useful for CNI networking where hostPort might\n  ## not be supported. The ports need to be available on all hosts. It Can be\n  ## used for custom metrics instead of a service endpoint.\n  ##\n  ## WARNING: Make sure that hosts using this are properly firewalled otherwise\n  ## metrics and traces are accepted from any host able to connect to this host.\n  useHostNetwork: false\n\n  # agents.dnsConfig -- specify dns configuration options for datadog cluster agent containers e.g ndots\n  ## ref: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-dns-config\n  dnsConfig: {}\n  #  options:\n  #  - name: ndots\n  #    value: \"1\"\n\n  # agents.podAnnotations -- Annotations to add to the DaemonSet's Pods\n  podAnnotations: {}\n  #   <POD_ANNOTATION>: '[{\"key\": \"<KEY>\", \"value\": \"<VALUE>\"}]'\n\n  # agents.tolerations -- Allow the DaemonSet to schedule on tainted nodes (requires Kubernetes >= 1.6)\n  tolerations: []\n\n  # agents.nodeSelector -- Allow the DaemonSet to schedule on selected nodes\n  ## Ref: https://kubernetes.io/docs/user-guide/node-selection/\n  nodeSelector: {}\n\n  # agents.affinity -- Allow the DaemonSet to schedule using affinity rules\n  ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity\n  affinity: {}\n\n  # agents.updateStrategy -- Allow the DaemonSet to perform a rolling update on helm update\n  ## ref: https://kubernetes.io/docs/tasks/manage-daemon/update-daemon-set/\n  updateStrategy:\n    type: RollingUpdate\n    rollingUpdate:\n      maxUnavailable: \"10%\"\n\n  # agents.priorityClassName -- Sets PriorityClassName if defineds\n  priorityClassName:\n\n  # agents.podLabels -- Sets podLabels if defined\n  # Note: These labels are also used as label selectors so they are immutable.\n  podLabels: {}\n\n  # agents.additionalLabels -- Adds labels to the Agent daemonset and pods\n  additionalLabels: {}\n  # key: \"value\"\n\n  # agents.useConfigMap -- Configures a configmap to provide the agent configuration. Use this in combination with the `agents.customAgentConfig` parameter.\n  useConfigMap:  # false\n\n  # agents.customAgentConfig -- Specify custom contents for the datadog agent config (datadog.yaml)\n  ## ref: https://docs.datadoghq.com/agent/guide/agent-configuration-files/?tab=agentv6\n  ## ref: https://github.com/DataDog/datadog-agent/blob/main/pkg/config/config_template.yaml\n  ## Note the `agents.useConfigMap` needs to be set to `true` for this parameter to be taken into account.\n  customAgentConfig: {}\n  #   # Autodiscovery for Kubernetes\n  #   listeners:\n  #     - name: kubelet\n  #   config_providers:\n  #     - name: kubelet\n  #       polling: true\n  #     # needed to support legacy docker label config templates\n  #     - name: docker\n  #       polling: true\n  #\n  #   # Enable java cgroup handling. Only one of those options should be enabled,\n  #   # depending on the agent version you are using along that chart.\n  #\n  #   # agent version < 6.15\n  #   # jmx_use_cgroup_memory_limit: true\n  #\n  #   # agent version >= 6.15\n  #   # jmx_use_container_support: true\n\n  networkPolicy:\n    # agents.networkPolicy.create -- If true, create a NetworkPolicy for the agents.\n    # DEPRECATED. Use datadog.networkPolicy.create instead\n    create: false\n\nclusterChecksRunner:\n  # clusterChecksRunner.enabled -- If true, deploys agent dedicated for running the Cluster Checks instead of running in the Daemonset's agents.\n  ## ref: https://docs.datadoghq.com/agent/autodiscovery/clusterchecks/\n  enabled: false\n\n  ## Define the Datadog image to work with.\n  image:\n    # clusterChecksRunner.image.name -- Datadog Agent image name to use (relative to `registry`)\n    name: agent\n\n    # clusterChecksRunner.image.tag -- Define the Agent version to use\n    ## Use 7-jmx to enable jmx fetch collection\n    tag: 7.30.0\n\n    # clusterChecksRunner.image.repository -- Override default registry + image.name for Cluster Check Runners\n    repository:\n\n    # clusterChecksRunner.image.pullPolicy -- Datadog Agent image pull policy\n    pullPolicy: IfNotPresent\n\n    # clusterChecksRunner.image.pullSecrets -- Datadog Agent repository pullSecret (ex: specify docker registry credentials)\n    ## See https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod\n    pullSecrets: []\n    #   - name: \"<REG_SECRET>\"\n\n  # clusterChecksRunner.createPodDisruptionBudget -- Create the pod disruption budget to apply to the cluster checks agents\n  createPodDisruptionBudget: false\n\n  # Provide Cluster Checks Deployment pods RBAC configuration\n  rbac:\n    # clusterChecksRunner.rbac.create -- If true, create & use RBAC resources\n    create: true\n\n    # clusterChecksRunner.rbac.dedicated -- If true, use a dedicated RBAC resource for the cluster checks agent(s)\n    dedicated: false\n\n    # clusterChecksRunner.rbac.serviceAccountAnnotations -- Annotations to add to the ServiceAccount if clusterChecksRunner.rbac.dedicated is true\n    serviceAccountAnnotations: {}\n\n    # clusterChecksRunner.rbac.serviceAccountName -- Specify a preexisting ServiceAccount to use if clusterChecksRunner.rbac.create is false\n    serviceAccountName: default\n\n  # clusterChecksRunner.replicas -- Number of Cluster Checks Runner instances\n  ## If you want to deploy the clusterChecks agent in HA, keep at least clusterChecksRunner.replicas set to 2.\n  ## And increase the clusterChecksRunner.replicas according to the number of Cluster Checks.\n  replicas: 2\n\n  # clusterChecksRunner.resources -- Datadog clusterchecks-agent resource requests and limits.\n  resources: {}\n  # requests:\n  #   cpu: 200m\n  #   memory: 500Mi\n  # limits:\n  #   cpu: 200m\n  #   memory: 500Mi\n\n  # clusterChecksRunner.affinity -- Allow the ClusterChecks Deployment to schedule using affinity rules.\n  ## By default, ClusterChecks Deployment Pods are forced to run on different Nodes.\n  ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity\n  affinity: {}\n\n  # clusterChecksRunner.strategy -- Allow the ClusterChecks deployment to perform a rolling update on helm update\n  ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy\n  strategy:\n    type: RollingUpdate\n    rollingUpdate:\n      maxSurge: 1\n      maxUnavailable: 0\n\n  # clusterChecksRunner.dnsConfig -- specify dns configuration options for datadog cluster agent containers e.g ndots\n  ## ref: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-dns-config\n  dnsConfig: {}\n  #  options:\n  #  - name: ndots\n  #    value: \"1\"\n\n  # clusterChecksRunner.priorityClassName -- Name of the priorityClass to apply to the Cluster checks runners\n  priorityClassName:  # system-cluster-critical\n\n  # clusterChecksRunner.nodeSelector -- Allow the ClusterChecks Deployment to schedule on selected nodes\n  ## Ref: https://kubernetes.io/docs/user-guide/node-selection/\n  #\n  nodeSelector: {}\n\n  # clusterChecksRunner.tolerations -- Tolerations for pod assignment\n  ## Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/\n  #\n  tolerations: []\n\n  # clusterChecksRunner.healthPort -- Port number to use in the Cluster Checks Runner for the healthz endpoint\n  healthPort: 5557\n\n  # clusterChecksRunner.livenessProbe -- Override default agent liveness probe settings\n  # @default -- Every 15s / 6 KO / 1 OK\n  ## In case of issues with the probe, you can disable it with the\n  ## following values, to allow easier investigating:\n  #\n  # livenessProbe:\n  #   exec:\n  #     command: [\"/bin/true\"]\n  #\n  livenessProbe:\n    initialDelaySeconds: 15\n    periodSeconds: 15\n    timeoutSeconds: 5\n    successThreshold: 1\n    failureThreshold: 6\n\n  # clusterChecksRunner.readinessProbe -- Override default agent readiness probe settings\n  # @default -- Every 15s / 6 KO / 1 OK\n  ## In case of issues with the probe, you can disable it with the\n  ## following values, to allow easier investigating:\n  #\n  # readinessProbe:\n  #   exec:\n  #     command: [\"/bin/true\"]\n  #\n  readinessProbe:\n    initialDelaySeconds: 15\n    periodSeconds: 15\n    timeoutSeconds: 5\n    successThreshold: 1\n    failureThreshold: 6\n\n  # clusterChecksRunner.podAnnotations -- Annotations to add to the cluster-checks-runner's pod(s)\n  podAnnotations: {}\n  #   key: \"value\"\n\n  # clusterChecksRunner.env -- Environment variables specific to Cluster Checks Runner\n  ## ref: https://github.com/DataDog/datadog-agent/tree/main/Dockerfiles/agent#environment-variables\n  env: []\n  #   - name: <ENV_VAR_NAME>\n  #     value: <ENV_VAR_VALUE>\n\n  # clusterChecksRunner.volumes -- Specify additional volumes to mount in the cluster checks container\n  volumes: []\n  #   - hostPath:\n  #       path: <HOST_PATH>\n  #     name: <VOLUME_NAME>\n\n  # clusterChecksRunner.volumeMounts -- Specify additional volumes to mount in the cluster checks container\n  volumeMounts: []\n  #   - name: <VOLUME_NAME>\n  #     mountPath: <CONTAINER_PATH>\n  #     readOnly: true\n\n  networkPolicy:\n    # clusterChecksRunner.networkPolicy.create -- If true, create a NetworkPolicy for the cluster checks runners.\n    # DEPRECATED. Use datadog.networkPolicy.create instead\n    create: false\n\n  # clusterChecksRunner.additionalLabels -- Adds labels to the cluster checks runner deployment and pods\n  additionalLabels: {}\n  # key: \"value\"\n\n  # clusterChecksRunner.securityContext -- Allows you to overwrite the default PodSecurityContext on the clusterchecks pods.\n  securityContext: {}\n\n  # clusterChecksRunner.ports -- Allows to specify extra ports (hostPorts for instance) for this container\n  ports: []\n\ndatadog-crds:\n  crds:\n    # datadog-crds.crds.datadogMetrics -- Set to true to deploy the DatadogMetrics CRD\n    datadogMetrics: true\n\nkube-state-metrics:\n  rbac:\n    # kube-state-metrics.rbac.create -- If true, create & use RBAC resources\n    create: true\n\n  serviceAccount:\n    # kube-state-metrics.serviceAccount.create -- If true, create ServiceAccount, require rbac kube-state-metrics.rbac.create true\n    create: true\n\n    # kube-state-metrics.serviceAccount.name -- The name of the ServiceAccount to use.\n    ## If not set and create is true, a name is generated using the fullname template\n    name:\n\n  # kube-state-metrics.resources -- Resource requests and limits for the kube-state-metrics container.\n  resources: {}\n  #   requests:\n  #     cpu: 200m\n  #     memory: 256Mi\n  #   limits:\n  #     cpu: 200m\n  #     memory: 256Mi\n\n  # kube-state-metrics.nodeSelector -- Node selector for KSM. KSM only supports Linux.\n  nodeSelector:\n    kubernetes.io/os: linux\n\n  # # kube-state-metrics.image -- Override default image information for the kube-state-metrics container.\n  # image:\n  #  # kube-state-metrics.repository -- Override default image registry for the kube-state-metrics container.\n  #  repository: k8s.gcr.io/kube-state-metrics/kube-state-metrics\n  #  # kube-state-metrics.tag -- Override default image tag for the kube-state-metrics container.\n  #  tag: v1.9.8\n  #  # kube-state-metrics.pullPolicy -- Override default image pullPolicy for the kube-state-metrics container.\n  #  pullPolicy: IfNotPresent\n\nproviders:\n  gke:\n    # providers.gke.autopilot -- Enables Datadog Agent deployment on GKE Autopilot\n    autopilot: false"
  },
  {
    "path": "home/observability/ReadMe.md",
    "content": "## opentelemetry\n\n> Auto generated ReadMe\n\n| Task     | Description                                                                    |\n|----------|--------------------------------------------------------------------------------|\n| task_069 | [task_069_opentelemetry_go_dice](opentelemetry/task_069_opentelemetry_go_dice) |\n\n"
  },
  {
    "path": "home/observability/metrics/README.md",
    "content": "# taskset_metrics_observability\n\n> [Auto](https://github.com/codeaprendiz/learn_fullstack/blob/main/home/php/intermediate/taskset_intermediate_php/task_004_createGlobalMarkdownTable/generate-readme.php) generated ReadMe. Number of tasks: 3\n\n| Task     | Description                                                              |\n|----------|--------------------------------------------------------------------------|\n| task_001 | [task_001_host](taskset_metrics_observability/task_001_host)             |\n| task_002 | [task_002_system](taskset_metrics_observability/task_002_system)         |\n| task_003 | [task_003_kubernetes](taskset_metrics_observability/task_003_kubernetes) |\n"
  },
  {
    "path": "home/observability/metrics/taskset_metrics_observability/task_001_host/ReadMe.md",
    "content": "## Host Monitoring\n\n| Stats                                                             | Visualization                                   |\n|-------------------------------------------------------------------|-------------------------------------------------|\n| [CPU Usage Guage](#CPU-Usage-Gauge)                               | ![](.images/cpu-usage-guage.png)                |\n| [Memroy Usage Guage](#Memory-Usage-Gauge)                         | ![](.images/memory-usage-guage.png)             |\n| [Load Guage](#Load-Guage)                                         | ![](.images/load-guage.png)                     |\n| [Inbound Traffic](#Inbound-Traffic)                               | ![](.images/inbound-traffic.png)                |\n| [Outbound Traffic](#Outbound-Traffic)                             | ![](.images/outbound-traffic.png)               |\n| [Packetloss](#Packetloss)                                         | ![](.images/packetloss.png)                     |\n| [Swap Usage](#Swap-uage)                                          | ![](.images/swap-usage.png)                     |\n| [Memory usage vs total](#Memory-usage-vs-total)                   | ![](.images/memory-usage-vs-total.png)          |\n| [Number of processes](#Number-of-processes)                       | ![](.images/number-of-processes.png)            |\n| [Disk Used](#Disk-used)                                           | ![](.images/disk-used.png)                      |\n| [Disk Usage](#Disk-Usage)                                         | ![](.images/disk-usage.png)                     |\n| [CPU Usage](#CPU-Usage)                                           | ![](.images/cpu-usage.png)                      |\n| [System Load](#System-Load)                                       | ![](.images/system-load.png)                    |\n| [Memory Usage](#Memory-Usage)                                     | ![](.images/memory-usage.png)                   |\n| [Disk IO](#Disk-IO)                                               | ![](.images/disk-io.png)                        |\n| [Network Traffic Packets](Network-Traffic-Packets#)               | ![](.images/network-traffic-packets.png)        |\n| [Network Traffic Bytes](#Network-Traffic-Bytes)                   | ![](.images/network-traffic-bytes.png)          |\n| [Processes By Memory](#Processes-By-Memory)                       | ![](.images/processes-by-memory.png)            |\n| [Top Processes By CPU](#Top-Processes-By-CPU)                     | ![](.images/top-processes-by-cpu.png)           |\n| [Interfaces By Incoming Traffic](#Interfaces-By-Incoming-Traffic) | ![](.images/interfaces-by-incoming-traffic.png) |\n| [Interfaces By Outgoing Traffic](#Interfaces-By-Outgoing-Traffic) | ![](.images/interfaces-by-outgoing-traffic.png) |\n\n\n\n\n### CPU-Usage-Gauge\n\n- system.cpu.user.pct: \n  - The percentage of CPU time spent in user space. On multi-core systems, you can have percentages that are greater than 100%. For example, if 3 cores are at 60% use, then the system.cpu.user.pct will be 180%. \n  - type: scaled_float\n  - format: percent\n  \n- system.cpu.system.pct\n  - The percentage of CPU time spent in kernel space.\n  - type: scaled_float\n  - format: percent\n\n- system.cpu.cores\n  - The number of CPU cores present on the host. The non-normalized percentages will have a maximum value of 100% * cores. The normalized percentages already take this value into account and have a maximum value of 100%.\n  - type: long\n\n**Aggregations**\n\n- Timefield : @timestamp\n- Inverval : auto\n- Data timerange mode : last value\n\n```bash\n## Average ##\nuser = Avg(system.cpu.user.pct)\n\n## Average ##\nsystem = Avg(system.cpu.system.pct)\n\n## Average ##\nn = Avg(system.cpu.cores)\n\n## Bucket Script ##\nparams.n > 0 ? (params.user+params.system)/params.n : null\n\nGroupBy-Everything\n```\n\n\n| COLOR  | EXPRESSION                 | VALUE |\n|--------|----------------------------|-------|\n| GREEN  | : >= greater than or equal | 0     |\n| ORANGE | : >= greater than or equal | 0.7   |\n| RED    | : >= greater than or equal | 0.85  |\n\n### Memory-Usage-Gauge\n\n- system.memory.actual.used.pct\n    - The percentage of actual used memory. \n    - type: scaled_float\n    - format: percent\n    \n\n**Aggregation**\n\n- Timefield : @timestamp\n- Inverval : auto\n- Data timerange mode : last value\n\n```bash\n## Average ##\na = Avg(system.memory.actual.used.pct)\n\nGroupBy-Everything\n```\n\n| COLOR  | EXPRESSION                 | VALUE |\n|--------|----------------------------|-------|\n| GREEN  | : >= greater than or equal | 0     |\n| ORANGE | : >= greater than or equal | 0.7   |\n| RED    | : >= greater than or equal | 0.85  |\n\n\n### Load-Guage\n\n- system.load.5\n    - CPU Load average for the last 5 minutes.\n    - type: scaled_float\n\n**Aggregation**\n\n- Timefield : @timestamp\n- Inverval : auto\n- Data timerange mode : last value\n\n```bash\n## Average ##\na = Avg(system.load.5)\n\nGroupBy-Everything\n```\n    \n### Inbound-Traffic\n\n*network*  network contains network IO metrics for a single network interface.\n\n- system.network.in.bytes\n    - The number of bytes received.\n\n- system.network.name\n  - The network interface name.\n  - type: keyword\n  - example: eth0\n  \n**Aggregation**\n  \n- Timefield : @timestamp\n- Inverval : auto\n- Data timerange mode : last value\n  \n```bash\n## Max ##\na = Max(system.network.in.bytes)\n\n## Derivative ##\nb = Derivative(a)/1s\n\n## PositiveOnly ##\nc = PositiveOnly(b)\n\n## Series Agg ##\nFunction : Sum             # c1 + c2 + c3 ....\n\nGroupBy-Terms : system.network.name\nTop : 10\nOrderBy : Doc Count (default)\nDecending\n```\n\n\n\n  \n#### Total Transferred\n\n**Aggregation**\n  \n- Dataformatter : Bytes\n- Template : {{value}}         \n- Data timerange mode : last value\n\n```bash\n## Max ##\na = Max(system.network.in.bytes)\n\n## Derivative ##\nb = Derivative(a)/1s\n\n## PositiveOnly ##\nc = PositiveOnly(b)\n\n## Series Agg ##\nFunction : Overall Sum             # c1 + c2 + c3 ....\n\nGroupBy-Terms : system.network.name\nTop : 10\nOrderBy : Doc Count (default)\nDecending\n```\n\n\n\n### Outbound-Traffic\n\n\n- system.network.out.bytes\n    - The number of bytes sent.\n    - type: long\n    - format: bytes\n\n**Aggregation**\n  \n- Timefield : @timestamp\n- Inverval : auto\n- Data timerange mode : last value\n  \n```bash\n## Max ##\na = Max(system.network.out.bytes)\n\n## Derivative ##\nb = Derivative(a)/1s\n\n## PositiveOnly ##\nc = PositiveOnly(b)\n\n## Series Agg ##\nFunction : Sum             # c1 + c2 + c3 ....\n\nGroupBy-Terms : system.network.name\nTop : 10\nOrderBy : Doc Count (default)\nDecending\n```\n\n#### Total Transferred\n\n- system.network.name\n  - The network interface name.\n  - type: keyword\n  - example: eth0\n\n**Aggregation**\n  \n- Dataformatter : Bytes\n- Template : {{value}}         \n- Data timerange mode : last value\n\n```bash\n## Max ##\na = Max(system.network.out.bytes)\n\n## Derivative ##\nb = Derivative(a)/1s\n\n## PositiveOnly ##\nc = PositiveOnly(b)\n\n## Series Agg ##\nFunction : Overall Sum             # c1 + c2 + c3 ....\n\nGroupBy-Terms : system.network.name\nTop : 10\nOrderBy : Doc Count (default)\nDecending\n```\n\n\n### Packetloss\n\n\n\n#### In Packetloss\n\n- system.network.in.dropped\n  - The number of incoming packets that were dropped.\n  - type: long\n\n**Aggregation**\n  \n- Dataformatter : Number\n- Template : {{value}}/s        \n- Data timerange mode : last value\n\n```bash\n## Max ##\na = Max(system.network.in.dropped)\n\nGroupBy-Everything\n```\n\n\n#### Out Packetloss\n\n- system.network.out.dropped\n  - The number of outgoing packets that were dropped. This value is always 0 on Darwin and BSD because it is not reported by the operating system\n  - type: long\n \n**Aggregation**\n\n- Dataformatter : Number\n- Template : {{value}}/s        \n- Data timerange mode : last value\n\n```bash\n## Max ##\na = Max(system.network.out.dropped)\n\nGroupBy-Everything\n```\n\n### Swap-usage\n\n- system.memory.swap.used.pct\n  - The percentage of used swap memory.  \n  - type: scaled_float\n  - format: percent\n\n**Aggregation**\n\n- Timefield : @timestamp\n- Inverval : auto\n- Data timerange mode : last value\n\n```bash\n## Average ##\na = Avg(system.memory.swap.used.pct)\n\nGroupBy-Everything\n```\n\n\n| COLOR  | EXPRESSION                 | VALUE |\n|--------|----------------------------|-------|\n| GREEN  | : >= greater than or equal | 0     |\n| ORANGE | : >= greater than or equal | 0.7   |\n| RED    | : >= greater than or equal | 0.85  |\n\n\n### Memory-usage-vs-total\n\n\n\n- system.memory.actual.used.bytes\n  - Actual used memory in bytes. It represents the difference between the total and the available memory. The available memory depends on the OS. For more details, please check system.actual.free.\n  - type: long\n  - format: bytes\n  \n- system.memory.actual.free\n  - Actual free memory in bytes. It is calculated based on the OS. On Linux this value will be MemAvailable from /proc/meminfo, or calculated from free memory plus caches and buffers if /proc/meminfo is not available. On OSX it is a sum of free memory and the inactive memory. On Windows, it is equal to system.memory.free.\n  - type: long\n  - format: bytes\n  \n**Aggregation**\n\n- Dataformatter : Bytes\n- Data timerange mode : last value\n\n```bash\n## Average ##\na = Avg(system.memory.actual.used.bytes)\n\nGroupBy-Everything\n```\n  \n- system.memory.total\n  - Total memory.\n  - type: long\n  - format: bytes\n\n**Aggregation**\n\n- Dataformatter : Bytes\n- Data timerange mode : last value\n\n```bash\n## Average ##\na = Avg(system.memory.total)\n\nGroupBy-Everything\n```\n\n\n\n### Number-of-processes\n\n\n- system.process.pid\n  - type: alias\n  - alias to: process.pid\n  \nMetrics\n```bash\na = UniqueCount(process.pid)\n```\n\n\n### Disk-used\n\n- system.fsstat.total_size.used\n  - Total used space.\n  - type: long\n  - format: bytes\n  \n- system.fsstat.total_size.total\n  - Total space (used plus free).\n  - type: long\n  - format: bytes\n \n**Aggregation**\n\n- Dataformatter : Percent\n- Data timerange mode : last value\n\n```bash\n## TopHit ##\na = TopHit(system.fsstat.total_size.used)         # Size=1, Aggregate with Avg, Order By : @timastamp, Desc\n\n## TopHit ##\nb = TopHit(system.fsstat.total_size.total)        # Size=1, Aggregate with Avg, Order By : @timastamp, Desc\n\nExpression = a/b\n\nGroupBy-Everything\n```\n\n\n\n| COLOR  | EXPRESSION                 | VALUE |\n|--------|----------------------------|-------|\n| GREEN  | : >= greater than or equal | 0     |\n| ORANGE | : >= greater than or equal | 0.7   |\n| RED    | : >= greater than or equal | 0.85  |\n\n### Disk-Usage\n\n- system.filesystem.used.pct\n  - The percentage of used disk space.  \n  - type: scaled_float\n  - format: percent\n\n- system.filesystem.mount_point\n  - The mounting point. For example: /\n\n**Aggregation**\n\n- Data timerange mode : Entire Time Range\n- Timefield : @timestamp\n\n```bash\n## TopHit ##\na = TopHit(system.filesystem.used.pct)   # Size=1, Aggregate with Avg, Order By : @timastamp\n\n\nGroupBy-Term : system.filesystem.mount_point\nTop : 10\nOrderBy : Doc Count(default)\nDesc\n```\n\n\n\n\n### CPU-Usage\n\n- system.cpu.user.pct\n  - The percentage of CPU time spent in user space. On multi-core systems, you can have percentages that are greater than 100%. For example, if 3 cores are at 60% use, then the system.cpu.user.pct will be 180%.\n  - type: scaled_float\n  - format: percent\n  \n**Aggregation**\n\n- Timefield : @timestamp\n- Inverval : auto\n\n```bash\n## Average ##\na = Avg(system.cpu.user.pct)\n\nGroupBy-Everything\n```\n\n\n- system.cpu.system.pct\n  - The percentage of CPU time spent in kernel space.\n  - type: scaled_float \n  - format: percent\n\n**Aggregation**\n\n- Timefield : @timestamp\n- Inverval : auto\n\n```bash\n## Average ##\na = Avg(system.cpu.system.pct)\n\nGroupBy-Everything\n```\n\n\n\n- system.cpu.nice.pct\n  - The percentage of CPU time spent on low-priority processes.\n  - type: scaled_float\n  - format: percent\n  \n**Aggregation**\n\n- Timefield : @timestamp\n- Inverval : auto\n\n```bash\n## Average ##\na = Avg(system.cpu.nice.pct)\n\nGroupBy-Everything\n```\n\n\n- system.cpu.irq.pct\n  - The percentage of CPU time spent servicing and handling hardware interrupts.\n  - type: scaled_float\n  - format: percent\n**Aggregation**\n\n- Timefield : @timestamp\n- Inverval : auto\n\n```bash\n## Average ##\na = Avg(system.cpu.irq.pct)\n\nGroupBy-Everything\n```\n\n- system.cpu.softirq.pct\n  - The percentage of CPU time spent servicing and handling software interrupts. \n  - type: scaled_float \n  - format: percent\n  \n**Aggregation**\n\n- Timefield : @timestamp\n- Inverval : auto\n\n```bash\n## Average ##\na = Avg(system.cpu.softirq.pct)\n\nGroupBy-Everything\n```\n\n- system.cpu.iowait.pct\n  - The percentage of CPU time spent in wait (on disk).\n  - type: scaled_float \n  - format: percent\n**Aggregation**\n\n- Timefield : @timestamp\n- Inverval : auto\n\n```bash\n## Average ##\na = Avg(system.cpu.iowait.pct)\n\nGroupBy-Everything\n```\n\n\n### System-Load\n\n- system.load.1\n  - CPU Load average for the last minute.\n  - type: scaled_float\n  \n**Aggregation**\n\n- Timefield : @timestamp\n- Inverval : auto\n\n```bash\n## Average ##\na = Avg(system.load.1)\n\nGroupBy-Everything\n```\n\n- system.load.5\n  - CPU Load average for the last minute.\n  - type: scaled_float\n  \n**Aggregation**\n\n- Timefield : @timestamp\n- Inverval : auto\n\n```bash\n## Average ##\na = Avg(system.load.5)\n\nGroupBy-Everything\n```\n\n- system.load.15\n  - CPU Load average for the last minute.\n  - type: scaled_float\n  \n**Aggregation**\n\n- Timefield : @timestamp\n- Inverval : auto\n\n```bash\n## Average ##\na = Avg(system.load.15)\n\nGroupBy-Everything\n```\n\n\n### Memory-Usage\n\n- system.memory.actual.used.bytes\n  - Actual used memory in bytes. It represents the difference between the total and the available memory. The available memory depends on the OS. For more details, please check system.actual.free.\n  - type: long\n  - format: bytes\n\nUsed Memory\n\n**Aggregation**\n\n- Timefield : @timestamp\n- Inverval : auto\n\n```bash\n## Average ##\na = Avg(system.memory.actual.used.bytes)\n\nGroupBy-Everything\n```\n\n- system.memory.free\n  - Actual free memory in bytes. It is calculated based on the OS. On Linux this value will be MemAvailable from /proc/meminfo, or calculated from free memory plus caches and buffers if /proc/meminfo is not available. On OSX it is a sum of free memory and the inactive memory. On Windows, it is equal to system.memory.free. \n  - type: long \n  - format: bytes\n\nFree Momory\n\n**Aggregation**\n\n- Timefield : @timestamp\n- Inverval : auto\n\n```bash\n## Average ##\na = Avg(system.memory.free)\n\nGroupBy-Everything\n```\n\n- system.memory.used.bytes\n  - Used memory.\n  - type: long\n  - format: bytes\n\nCache \n\n**Aggregation**\n```bash\n## Bucket Script ##\nactual = Avg(system.memory.actual.used.bytes)\nused   = Avg(system.memory.used.bytes)\n\nparams.actual != null && params.used != null ? params.used - params.actual : null\n\nGroupBy(everything)\n```\n\n\n### Disk-IO\n\nReads\n- system.diskio.read.bytes\n  - The total number of bytes read successfully. On Linux this is the number of sectors read multiplied by an assumed sector size of 512.\n  - type: long\n  - format: bytes\n\n**Aggregation**\n\n- Dataformatter : Bytes\n- Template : {{value/s}}\n- Chart type: Line\n\n```bash\n## Max ##\na = Max(system.diskio.read.bytes)\n\n## Derivative ##\nb = Derivative(a)/1s   \n\n## PositiveOnly ##\nc = PositiveOnly(b)\n\nGroupBy-Everything\n```\n\n\nWrites\n\n- system.diskio.write.bytes\n  - The total number of bytes written successfully. On Linux this is the number of sectors written multiplied by an assumed sector size of 512.\n  - type: long\n  - format: bytes\n\n**Aggregation**\n\n- Dataformatter : Bytes\n- Template : {{value/s}}\n- Chart type: Line\n\n```bash\n## Max ##\na = Max(system.diskio.write.bytes)\n\n## Derivative ##\nrate = Derivative(a)/1s   \n\n## Bucket Script ##\nparams.rate > 0 ? params.rate * -1 : 0\n\nGroupBy-Everything\n```\n\n\nAggregation\n> rate = Derivative(a)/1s\n\nAggregation\n> Bucket Script\n> params.rate > 0 ? params.rate * -1 : 0\n\nGroupBy(Everything)\n\n### Network-Traffic-Packets\n\nInbound\n- system.network.in.packets\n  - The number or packets received.\n  - type: long\n\n- system.network.name\n  - The network interface name.\n  - type: keyword\n  - example: eth0\n\n**Aggregation**\n\n- Dataformatter : Custom\n- Format String : 0.[00]a\n- Template : {{value/s}}\n- Chart type: Line\n\n```bash\n## Max ##\na = Max(system.network.in.packets)\n\n## Derivative ##\nb = Derivative(a)/1s\n\n## PositiveOnly ##\nc = PositiveOnly(b)\n\n## Series Agg ##\nFunction : Sum         # c1 + c2 + ...\n\nGroupBy-Terms : system.network.name\nTop : 10\nOrderBy : Doc Count (default)\nDesc\n```\n\n\n\nOutbound\n\n- system.network.out.packets\n  - The number of packets sent.\n  - type: long\n\n**Aggregations**\n\n- Dataformatter : Custom\n- Format String : 0.[00]a\n- Template : {{value/s}}\n- Chart type: Line\n\n```bash\n## Max ## \na = Max(system.network.out.packets)\n\n## Derivative ##\nrate = Derivative(system.network.out.packets)/1s\n\n## Bucket Script ##\nparams.rate != null && params.rate > 0 ? params.rate * -1 : null\n\n## Serives Agg ##\nFunction : Sum            # params.rate1 + params.rate2 + ...\n\nGroupBy-Term  :  system.network.name\nTop : 10\nOrder By : Doc Count(default) \nDesc\n```\n\n### Network-Traffic-Bytes\n\nInbound\n\n- system.network.in.bytes\n  - The number of bytes received.\n  - type: long\n  - format: bytes\n\n- system.network.name\n  - The network interface name.\n  - type: keyword\n  - example: eth0\n  \n**Aggregations**\n\n- Time field: @timestamp\n- Interval : auto\n- Data Formatter: Bytes\n- Template : {{value}}/s\n\n```bash\n## Max ##\na = Max(system.network.in.bytes)\n\n## Derivative ##\nb = Derivative(a)/1s\n\n## PositiveOnly ##\nc = PositiveOnly(b)\n\n## Series Agg ##\nFunction : Sum                  #  c1 + c2 + c3 + c4\n\nGroupBy-Terms : system.network.name\nTop : 10\nOrderBy : DocCount(default)\nDesc\n```\n\nOutbound\n\n- system.network.out.bytes\n  - system.network.out.bytes\n    - The number of bytes sent.  \n    - type: long\n    - format: bytes\n\n**Aggregations**\n\n- Time field: @timestamp\n- Interval : auto\n- Data Formatter: Bytes\n- Template : {{value}}/s\n\n\n```bash\n## Max ##\na = Max(system.network.out.bytes)\n\n## Derivative ##\nrate = Derivative(a)/1s\n\n## Bucket Script ## \nparams.rate != null && params.rate > 0 ? params.rate * -1 : null\n\n## Series Agg ##\nFunction : Sum                  #  params.rate1 + params.rate2 ...\n\nGroupBy-Terms : system.network.name\nTop : 10\nOrderBy : DocCount(default)\nDesc\n```\n\n### Processes-By-Memory\n\n- system.process.memory.rss.pct\n  - The percentage of memory the process occupied in main memory (RAM).\n  - type: scaled_float\n  - format: percent\n\n**Aggregations**\n\n- Data timerange mode : Last value\n- Time field : @timestamp\n- Interval : auto\n\n```bash\n## Average ##\na = Avg(system.process.memory.rss.pct)\n\nGroupBy-Terms: process.name\nTop : 10\nOrderBy : a\nDesc\n```\n\n| COLOR  | EXPRESSION                 | VALUE |\n|--------|----------------------------|-------|\n| GREEN  | : >= greater than or equal | 0     |\n| ORANGE | : >= greater than or equal | 0.7   |\n| RED    | : >= greater than or equal | 0.85  |\n\n\n### Top-Processes-By-CPU\n\n\n- system.process.cpu.total.pct\n  - The percentage of CPU time spent by the process since the last update. Its value is similar to the %CPU value of the process displayed by the top command on Unix systems\n  - type: scaled_float\n  - format: percent\n  \n**Aggregations**\n\n- Data timerange mode : Last value\n- Time field : @timestamp\n- Interval : auto\n\n```bash\n## Avegage ##\na = Avg(system.process.cpu.total.pct)\n\nGroupBy-Terms: process.name\nTop : 10\nOrderBy : a\nDescending\n```\n\n### Interfaces-By-Incoming-Traffic\n\n- system.network.in.bytes\n  - The number of bytes received.\n  - type: long\n  - format: bytes\n\n- system.network.name\n  - The network interface name.\n  - type: keyword\n  - example: eth0\n  \n\n**Aggregation**\n\n- Data timerange mode : Last value\n- Time field : @timestamp\n- Interval : auto\n\n```bash\n## Average ##\na = Avg(system.network.in.bytes)\n\nGroupBy-Terms: system.network.name\nTop : 10\nOrderBy : a\nDescending\n```\n\n### Interfaces-By-Outgoing-Traffic\n\n- system.network.out.bytes\n    - The number of bytes sent.\n    - type: long\n    - format: bytes\n\nAggregation\n```bash\n## Average ##\na = Avg(system.network.out.bytes)\n\nGroupBy-Terms: system.network.name\nTop : 10\nOrderBy : a\nDescending\n```\n\n"
  },
  {
    "path": "home/observability/metrics/taskset_metrics_observability/task_002_system/ReadMe.md",
    "content": "# System - Monitoring\n\n\n\n\n| Stats                                                         | Visualization                                 |\n|---------------------------------------------------------------|-----------------------------------------------|\n| [Number of hosts](#Number-of-hosts)                           | ![](.images/number-of-hosts.png)              |\n| [CPU Usage Guage](#CPU-Usage-Gauge)                           | ![](.images/cpu-usage-guage.png)              |\n| [Memory Usage Gauge](#Memory-Usage-Gauge)                     | ![](.images/memory-usage-guage.png)           |\n| [Disk used](#Disk-used)                                       | ![](.images/disk-used.png)                    |\n| [Inbound Traffic](#Inbound-Traffic)                           | ![](.images/inbound-traffic.png)              |\n| [Outbound Traffic](#Outbound-Traffic)                         | ![](.images/outbound-traffic.png)             |\n| [Top Hosts By CPU Realtime](#Top-Hosts-By-CPU-Realtime)       | ![](.images/top-hosts-by-cpu-realtime.png)    |\n| [Top Hosts By Memory Realtime](#Top-Hosts-By-Memory-Realtime) | ![](.images/top-hosts-by-memory-realtime.png) |\n| [Host histogram by CPU usage](#Hosts-histogram-by-CPU-usage)  | ![](.images/host-histogram-by-cpu-usage.png)  |\n\n\n\n\n\n\n\n\n\n\n### Number-of-hosts\n\nMetrics\n\n```bash\n## UniqueCount ##\na = UniqueCount(host.name)\n```\n\n### CPU-Usage-Gauge\n\n- system.cpu.user.pct: \n  - The percentage of CPU time spent in user space. On multi-core systems, you can have percentages that are greater than 100%. For example, if 3 cores are at 60% use, then the system.cpu.user.pct will be 180%. \n  - type: scaled_float\n  - format: percent\n  \n- system.cpu.system.pct\n  - The percentage of CPU time spent in kernel space.\n  - type: scaled_float\n  - format: percent\n\n- system.cpu.cores\n  - The number of CPU cores present on the host. The non-normalized percentages will have a maximum value of 100% * cores. The normalized percentages already take this value into account and have a maximum value of 100%.\n  - type: long\n\n**Aggregations**\n\n- Timefield : @timestamp\n- Inverval : auto\n- Data timerange mode : last value\n\n```bash\n## Average ##\nuser = Avg(system.cpu.user.pct)\n\n## Average ##\nsystem = Avg(system.cpu.system.pct)\n\n## Average ##\nn = Avg(system.cpu.cores)\n\n## Bucket Script ##\nparams.n > 0 ? (params.user+params.system)/params.n : null\n\nGroupBy-Everything\n```\n\n\n| COLOR  | EXPRESSION                 | VALUE |\n|--------|----------------------------|-------|\n| GREEN  | : >= greater than or equal | 0     |\n| ORANGE | : >= greater than or equal | 0.7   |\n| RED    | : >= greater than or equal | 0.85  |\n\n### Memory-Usage-Gauge\n\n- system.memory.actual.used.pct\n    - The percentage of actual used memory. \n    - type: scaled_float\n    - format: percent\n    \n\n**Aggregation**\n\n- Timefield : @timestamp\n- Inverval : auto\n- Data timerange mode : last value\n\n```bash\n## Average ##\na = Avg(system.memory.actual.used.pct)\n\nGroupBy-Everything\n```\n\n| COLOR  | EXPRESSION                 | VALUE |\n|--------|----------------------------|-------|\n| GREEN  | : >= greater than or equal | 0     |\n| ORANGE | : >= greater than or equal | 0.7   |\n| RED    | : >= greater than or equal | 0.85  |\n\n\n### Disk-used\n\n- system.fsstat.total_size.used\n  - Total used space.\n  - type: long\n  - format: bytes\n  \n- system.fsstat.total_size.total\n  - Total space (used plus free).\n  - type: long\n  - format: bytes\n \n**Aggregation**\n\n- Dataformatter : Percent\n- Data timerange mode : last value\n\n```bash\n## TopHit ##\na = TopHit(system.fsstat.total_size.used)         # Size=1, Aggregate with Avg, Order By : @timastamp, Desc\n\n## TopHit ##\nb = TopHit(system.fsstat.total_size.total)        # Size=1, Aggregate with Avg, Order By : @timastamp, Desc\n\nExpression = a/b\n\nGroupBy-Everything\n```\n\n\n\n| COLOR  | EXPRESSION                 | VALUE |\n|--------|----------------------------|-------|\n| GREEN  | : >= greater than or equal | 0     |\n| ORANGE | : >= greater than or equal | 0.7   |\n| RED    | : >= greater than or equal | 0.85  |\n\n\n### Inbound-Traffic\n\n*network*  network contains network IO metrics for a single network interface.\n\n- system.network.in.bytes\n    - The number of bytes received.\n\n- system.network.name\n  - The network interface name.\n  - type: keyword\n  - example: eth0\n  \n**Aggregation**\n  \n- Timefield : @timestamp\n- Inverval : auto\n- Data timerange mode : last value\n  \n```bash\n## Max ##\na = Max(system.network.in.bytes)\n\n## Derivative ##\nb = Derivative(a)/1s\n\n## PositiveOnly ##\nc = PositiveOnly(b)\n\n## Series Agg ##\nFunction : Sum             # c1 + c2 + c3 ....\n\nGroupBy-Terms : system.network.name\nTop : 10\nOrderBy : Doc Count (default)\nDecending\n```\n\n\n\n  \n#### Total Transferred\n\n**Aggregation**\n  \n- Dataformatter : Bytes\n- Template : {{value}}         \n- Data timerange mode : last value\n\n```bash\n## Max ##\na = Max(system.network.in.bytes)\n\n## Derivative ##\nb = Derivative(a)/1s\n\n## PositiveOnly ##\nc = PositiveOnly(b)\n\n## Series Agg ##\nFunction : Overall Sum             # c1 + c2 + c3 ....\n\nGroupBy-Terms : system.network.name\nTop : 10\nOrderBy : Doc Count (default)\nDecending\n```\n\n### Outbound-Traffic\n\n\n- system.network.out.bytes\n    - The number of bytes sent.\n    - type: long\n    - format: bytes\n\n**Aggregation**\n  \n- Timefield : @timestamp\n- Inverval : auto\n- Data timerange mode : last value\n  \n```bash\n## Max ##\na = Max(system.network.out.bytes)\n\n## Derivative ##\nb = Derivative(a)/1s\n\n## PositiveOnly ##\nc = PositiveOnly(b)\n\n## Series Agg ##\nFunction : Sum             # c1 + c2 + c3 ....\n\nGroupBy-Terms : system.network.name\nTop : 10\nOrderBy : Doc Count (default)\nDecending\n```\n\n#### Total Transferred\n\n- system.network.name\n  - The network interface name.\n  - type: keyword\n  - example: eth0\n\n**Aggregation**\n  \n- Dataformatter : Bytes\n- Template : {{value}}         \n- Data timerange mode : last value\n\n```bash\n## Max ##\na = Max(system.network.out.bytes)\n\n## Derivative ##\nb = Derivative(a)/1s\n\n## PositiveOnly ##\nc = PositiveOnly(b)\n\n## Series Agg ##\nFunction : Overall Sum             # c1 + c2 + c3 ....\n\nGroupBy-Terms : system.network.name\nTop : 10\nOrderBy : Doc Count (default)\nDecending\n```\n\n### Top-Hosts-By-CPU-Realtime\n\n- system.cpu.user.pct\n  - The percentage of CPU time spent in user space. On multi-core systems, you can have percentages that are greater than 100%. For example, if 3 cores are at 60% use, then the system.cpu.user.pct will be 180%.\n  - type: scaled_float\n  - format: percent\n\n**Aggregation**\n\n- Timefield : @timestamp\n- Inverval : auto\n- Data timerange mode : last value\n\n```bash\n## Average ##\na = Avg(system.cpu.user.pct)\n\nGroupBy-Terms : host.name\nTop : 10\nOrder by : a\nDesc\n```\n\n| COLOR  | EXPRESSION                 | VALUE |\n|--------|----------------------------|-------|\n| GREEN  | : >= greater than or equal | 0     |\n| ORANGE | : >= greater than or equal | 0.6   |\n| RED    | : >= greater than or equal | 0.85  |\n\n\n\n### Top-Hosts-By-Memory-Realtime\n\n- system.memory.actual.used.pct\n    - The percentage of actual used memory. \n    - type: scaled_float\n    - format: percent\n\n**Aggregation**\n\n- Timefield : @timestamp\n- Inverval : auto\n- Data timerange mode : last value\n\n```bash\n## Average ##\na = Avg(system.memory.actual.used.pct)\n\nGroupBy-Terms : host.name\nTop : 10\nOrder by : a\nDesc\n```\n\n| COLOR  | EXPRESSION                 | VALUE |\n|--------|----------------------------|-------|\n| GREEN  | : >= greater than or equal | 0     |\n| ORANGE | : >= greater than or equal | 0.6   |\n| RED    | : >= greater than or equal | 0.85  |\n\n\n### Hosts-histogram-by-CPU-usage\n\n- system.cpu.user.pct\n  - The percentage of CPU time spent in user space. On multi-core systems, you can have percentages that are greater than 100%. For example, if 3 cores are at 60% use, then the system.cpu.user.pct will be 180%.\n  - type: scaled_float\n  - format: percent\n  \n**Metrics**\n```bash\nValue Average(system.cpu.user.pct)\n```\n\n**Buckets**\n```bash\n## X-axis ##\n@timestamp per 30 seconds\n\n## Y-axis ##\nhost.name: Descending\n```\n"
  },
  {
    "path": "home/observability/metrics/taskset_metrics_observability/task_003_kubernetes/ReadMe.md",
    "content": "## Kubernetes Monitoring\n\n\n| Stats                                                               | Visualization                                     |\n|---------------------------------------------------------------------|---------------------------------------------------|\n| [Nodes](#Nodes)                                                     | ![](.images/nodes.png)                            |\n| [Deployments](#Deployments)                                         | ![](.images/deployments.png)                      |\n| [Available Pods Per Deployment](#Available-pods-per-deployment)     | ![](.images/available-pods-per-deployment1.png)   |\n| [Desired-pods](#Desired-pods)                                       | ![](.images/desired-pods.png)                     |\n| [Available pods](#Available-pods)                                   | ![](.images/available-pods.png)                   |\n| [Unavailable pods](#Unavailable-pods)                               | ![](.images/unavailable-pods.png)                 |\n| [Unavailable pods per deployment](#Unavailable-pods-per-deployment) | ![](.images/unavailable-pods-per-deployment1.png) |\n| [CPU Usage by node](#CPU-usage-by-node)                             | ![](.images/cpu-usage-by-node.png)                |\n| [Memory usage by node](#Memory-usage-by-node)                       | ![](.images/memory-usage-by-node.png)             |\n| [Network out by node](#Network-out-by-node)                         | ![](.images/network-out-by-node.png)              |\n| [Network in by node](#Network-in-by-node)                           | ![](.images/network-in-by-node.png)               |\n| [Top CPU intensive pods](#Top-CPU-intensive-pods)                   | ![](.images/top-cpu-intensive-pods.png)           |\n| [Top memory intensive pods](#Top-memory-intensive-pods)             | ![](.images/top-memory-intensive-pods.png)        |\n\n\n\n### Nodes\n\n- kubernetes.node.name\n  - Kubernetes node name\n  - type: keyword\n\n**Aggregation**\n  \n```bash\n## Cardinality ##\na = Cardinality(kubernetes.node.name)\n\nGroupBy-Everything\n```\n\n### Deployments\n\n- kubernetes.deployment.name\n  - Kubernetes deployment name\n  - type: keyword\n  \n**Aggregation**\n  \n```bash\n## Cardinality ##\na = Cardinality(kubernetes.deployment.name)\n\nGroupBy-Everything\n``` \n\n### Available-pods-per-deployment\n\n- kubernetes.deployment.replicas.available\n  - Deployment available replicas\n  - type: integer\n\n- kubernetes.deployment.name\n  - Kubernetes deployment name\n  - type: keyword\n\n**Aggregation**\n\n- Time field : @timestamp\n- Interval : auto\n\n```bash\n## Average ##\na = Avg(kubernetes.deployment.replicas.available)\n\nGroupBy-Terms : kubernetes.deployment.name\nTop - 10000\nOrderBy - Doc Count(default)\nDesc\n```\n\n### Desired-pods\n\n- kubernetes.deployment.replicas.desired\n  - Deployment number of desired replicas (spec)  \n  - type: integer\n   \n**Aggregation**\n\n- Data timerange mode: Last value\n- Time field : @timestamp\n- Inverval : auto\n\n```bash\n## Sum ##\na = Sum(kubernetes.deployment.replicas.desired)\n\nGroupBy-Everything\n```\n \n### Available-pods\n\n- kubernetes.deployment.replicas.available\n  - Deployment available replicas  \n  - type: integer \n\n**Aggregation**\n\n- Data timerange mode: Last value\n- Time field : @timestamp\n- Inverval : auto\n\n```bash\n## Sum ##\na = Sum(kubernetes.deployment.replicas.available)\n\nGroupBy-Everything\n```\n\n### Unavailable-pods\n\n- kubernetes.deployment.replicas.unavailable\n  - Deployment unavailable replicas\n  - type: integer\n \n**Aggregation**\n\n- Data timerange mode: Last value\n- Time field : @timestamp\n- Inverval : auto\n\n```bash\n## Sum ##\na = Sum(kubernetes.deployment.replicas.unavailable)\n\nGroupBy-Everything\n``` \n \n### Unavailable-pods-per-deployment\n\n- kubernetes.deployment.replicas.unavailable\n  - Deployment unavailable replicas\n  - type: integer\n  \n**Aggregation**\n\n- Time field : @timestamp\n- Inverval : auto\n\n```bash\n## Average ##\na = Avg(kubernetes.deployment.replicas.unavailable)\n\nGroupBy-Terms : kubernetes.deployment.name\nTop : 10000\nOrderBy : Doc Count(default)\nDesc\n``` \n\n### CPU-usage-by-node\n\n\n- kubernetes.container.cpu.usage.nanocores\n  - CPU used nanocores  \n  - type: long\n\n**Aggregation**\n\n- Time field : @timestamp\n- Inverval : auto\n- Data Formatter : Custom          \n- Format string : 0.0a\n- Template : {{value}} nanocores\n- Chart type : Line\n\n```bash\n## Sum ##\na = Sum(kubernetes.container.cpu.usage.nanocores)\n\nGroupBy-Terms : kubernetes.node.name\nTop : 10000\nOrderBy : a\nDesc\n``` \n\n- kubernetes.node.cpu.capacity.cores\n  - Node CPU capacity cores\n  - Type: long\n  \n**Aggregation**\n\n- Time field : @timestamp\n- Inverval : auto\n- Data Formatter : Custom          \n- Format string : 0.0a\n- Template : {{value}} nanocores\n- Chart type : Line\n\n```bash\n## Average ##\ncores = Average(kubernetes.node.cpu.capacity.cores)\n\n## Bucket Script ##\nexpression = params.cores * 1000000000\n\nGroupBy-Terms : kubernetes.node.name\nTop : 10000\nOrderBy : cores\nDesc\n``` \n\n\n### Memory-usage-by-node\n\n- kubernetes.container.memory.usage.bytes\n  - Total memory usage\n  - type: long\n  - format: bytes\n  \n**Aggregation**\n\n- Time field : @timestamp\n- Inverval : auto\n- Data Formatter : Bytes          \n- Template : {{value}}\n- Chart type : Line\n\n\n```bash\n## Sum ##\na = Sum(kubernetes.container.memory.usage.bytes)\n\n## CumulativeSum ##\nb = CumulativeSum(a)\n\n## Derivative ##\nc = Derivative(b)/10s\n\n\nGroupBy-Terms : kubernetes.node.name\nTop : 10000\nOrderBy : a\nDesc\n``` \n\n**Node Capacity**\n\n- kubernetes.node.memory.capacity.bytes\n  - Node memory capacity in bytes\n  - type: long\n  - format: bytes\n\n**Aggregation**\n\n```bash\n## Sum ##\na = Sum(kubernetes.node.memory.capacity.bytes)\n\n## CumulativeSum ##\nb = CumulativeSum(a)\n\n## Derivative ##\nc = Derivative(b)/10s\n\n\nGroupBy-Terms : kubernetes.node.name\nTop : 10000\nOrderBy : a\nDesc\n```\n\n### Network-out-by-node\n\n- kubernetes.pod.network.tx.bytes\n  - Transmitted bytes\n  - type: long\n  - format: bytes\n\n- kubernetes.node.name\n  - Kubernetes node name\n  - type: keyword\n  \n**Aggregation**\n\n- Time field : @timestamp\n- Inverval : auto\n- Data Formatter : Bytes          \n- Template : {{value}}\n- Chart type : Line\n\n```bash\n## Max ##\na = Max(kubernetes.pod.network.tx.bytes)\n\n## Derivative ##\nb = Derivative(a)\n\n## Positive Only ##\nc = PositiveOnly(b)\n\nGroupBy-Terms - kubernetes.node.name\nTop - 10000\nOrderBy : a\nDesc\n```\n\n\n\n### Network-in-by-node\n\n - kubernetes.pod.network.rx.bytes\n   - Received bytes\n   - type: long   \n   - format: bytes\n\n**Aggregation**\n\n- Time field : @timestamp\n- Inverval : auto\n- Data Formatter : Bytes          \n- Template : {{value}}\n- Chart type : Line\n\n```bash\n## Max ##\na = Max(kubernetes.pod.network.rx.bytes)\n\n## Derivative ##\nb = Derivative(a)\n\n## Positive Only ##\nc = PositiveOnly(b)\n\nGroupBy-Terms - kubernetes.node.name\nTop - 100000\nOrderBy : a\nDesc\n```\n\n#Top-CPU-intensive-pods\n\n- kubernetes.container.cpu.usage.core.ns\n  - Container CPU Core usage nanoseconds\n  - type: long\n\n**Aggregation**\n\n- Data timerange mode : Last value\n- Time field : @timestamp\n- Inverval : auto\n- Data Formatter : Custom    \n- Format string : 0.0a      \n- Template : {{value}} ns\n\n```bash\n## Max ##\na = Max(kubernetes.container.cpu.usage.core.ns)\n\n## Derivative ##\nb = Derivative(a)/1s\n\n## Positive Only ##\nc = PositiveOnly(b)\n\nGroupBy-Terms - kubernetes.pod.name\nTop - 10\nOrderBy : a\nDesc\n```\n\n\n### Top-memory-intensive-pods\n\n- kubernetes.container.memory.usage.bytes\n  - Total memory usage  \n  - type: long  \n  - format: bytes\n\n\n**Aggregation**\n\n- Data timerange mode : Last value\n- Time field : @timestamp\n- Inverval : auto\n- Data Formatter : Bytes    \n\n```bash\n## Sum ##\na = Sum(kubernetes.container.memory.usage.bytes)\n\n## Cumulative Sum ##\nb = CumulativeSum(a)\n\n## Derivative ##\nc = Derivative(b)/10s\n\nGroupBy-Terms - kubernetes.pod.name\nTop - 10\nOrderBy : a\nDesc\n```\n\n"
  },
  {
    "path": "home/observability/opentelemetry/ReadMe.md",
    "content": "# taskset_opentelemetry_observability\n\n> [Auto](https://github.com/codeaprendiz/learn_fullstack/blob/main/home/php/intermediate/taskset_intermediate_php/task_004_createGlobalMarkdownTable/generate-readme.php) generated ReadMe. Number of tasks: 2\n\n| Task     | Description                                                                                                                            |\n|----------|----------------------------------------------------------------------------------------------------------------------------------------|\n| task_001 | [task_001_go_dice__traces_and_metrics_to_console](taskset_opentelemetry_observability/task_001_go_dice__traces_and_metrics_to_console) |\n| task_002 | [task_002_go__traces_gRPC_OTLP__jaeger](taskset_opentelemetry_observability/task_002_go__traces_gRPC_OTLP__jaeger)                     |\n"
  },
  {
    "path": "home/observability/opentelemetry/taskset_opentelemetry_observability/task_001_go_dice__traces_and_metrics_to_console/ReadMe.md",
    "content": "# [Opentelemetry Go Dice](https://opentelemetry.io/docs/languages/go/getting-started)\n\nThis is a simple example of how to use the OpenTelemetry Go SDK to instrument a simple Go application.\n\n## [Run](https://opentelemetry.io/docs/languages/go/getting-started/#run-the-application)\n\n```bash\n# Terminal 1\n$ export OTEL_RESOURCE_ATTRIBUTES=\"service.name=dice,service.version=0.1.0\"\n$ go run .\n.\n.\n\n# Terminal 2\n$ curl localhost:8080/rolldice\n3\n\n```\n"
  },
  {
    "path": "home/observability/opentelemetry/taskset_opentelemetry_observability/task_001_go_dice__traces_and_metrics_to_console/go.mod",
    "content": "module dice\n\ngo 1.21.6\n\nrequire (\n\tgo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0\n\tgo.opentelemetry.io/otel v1.24.0\n\tgo.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.24.0\n\tgo.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.24.0\n\tgo.opentelemetry.io/otel/metric v1.24.0\n\tgo.opentelemetry.io/otel/sdk v1.24.0\n\tgo.opentelemetry.io/otel/sdk/metric v1.24.0\n)\n\nrequire (\n\tgithub.com/felixge/httpsnoop v1.0.4 // indirect\n\tgithub.com/go-logr/logr v1.4.1 // indirect\n\tgithub.com/go-logr/stdr v1.2.2 // indirect\n\tgo.opentelemetry.io/otel/trace v1.24.0 // indirect\n\tgolang.org/x/sys v0.17.0 // indirect\n)\n"
  },
  {
    "path": "home/observability/opentelemetry/taskset_opentelemetry_observability/task_001_go_dice__traces_and_metrics_to_console/go.sum",
    "content": "github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=\ngithub.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=\ngithub.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=\ngithub.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=\ngithub.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ=\ngithub.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=\ngithub.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=\ngithub.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=\ngithub.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=\ngithub.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=\ngithub.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=\ngithub.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=\ngithub.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=\ngithub.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=\ngo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk=\ngo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw=\ngo.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo=\ngo.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo=\ngo.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.24.0 h1:JYE2HM7pZbOt5Jhk8ndWZTUWYOVift2cHjXVMkPdmdc=\ngo.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.24.0/go.mod h1:yMb/8c6hVsnma0RpsBMNo0fEiQKeclawtgaIaOp2MLY=\ngo.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.24.0 h1:s0PHtIkN+3xrbDOpt2M8OTG92cWqUESvzh2MxiR5xY8=\ngo.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.24.0/go.mod h1:hZlFbDbRt++MMPCCfSJfmhkGIWnX1h3XjkfxZUjLrIA=\ngo.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI=\ngo.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco=\ngo.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw=\ngo.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg=\ngo.opentelemetry.io/otel/sdk/metric v1.24.0 h1:yyMQrPzF+k88/DbH7o4FMAs80puqd+9osbiBrJrz/w8=\ngo.opentelemetry.io/otel/sdk/metric v1.24.0/go.mod h1:I6Y5FjH6rvEnTTAYQz3Mmv2kl6Ek5IIrmwTLqMrrOE0=\ngo.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI=\ngo.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU=\ngolang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y=\ngolang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=\ngopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=\ngopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\n"
  },
  {
    "path": "home/observability/opentelemetry/taskset_opentelemetry_observability/task_001_go_dice__traces_and_metrics_to_console/main.go",
    "content": "package main\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"log\"\n\t\"net\"\n\t\"net/http\"\n\t\"os\"\n\t\"os/signal\"\n\t\"time\"\n\n\t\"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp\"\n)\n\nfunc main() {\n\tif err := run(); err != nil {\n\t\tlog.Fatalln(err)\n\t}\n}\n\nfunc run() (err error) {\n\t// Handle SIGINT (CTRL+C) gracefully.\n\tctx, stop := signal.NotifyContext(context.Background(), os.Interrupt)\n\tdefer stop()\n\n\t// Set up OpenTelemetry.\n\totelShutdown, err := setupOTelSDK(ctx)\n\tif err != nil {\n\t\treturn\n\t}\n\t// Handle shutdown properly so nothing leaks.\n\tdefer func() {\n\t\terr = errors.Join(err, otelShutdown(context.Background()))\n\t}()\n\n\t// Start HTTP server.\n\tsrv := &http.Server{\n\t\tAddr:         \":8080\",\n\t\tBaseContext:  func(_ net.Listener) context.Context { return ctx },\n\t\tReadTimeout:  time.Second,\n\t\tWriteTimeout: 10 * time.Second,\n\t\tHandler:      newHTTPHandler(),\n\t}\n\tsrvErr := make(chan error, 1)\n\tgo func() {\n\t\tsrvErr <- srv.ListenAndServe()\n\t}()\n\n\t// Wait for interruption.\n\tselect {\n\tcase err = <-srvErr:\n\t\t// Error when starting HTTP server.\n\t\treturn\n\tcase <-ctx.Done():\n\t\t// Wait for first CTRL+C.\n\t\t// Stop receiving signal notifications as soon as possible.\n\t\tstop()\n\t}\n\n\t// When Shutdown is called, ListenAndServe immediately returns ErrServerClosed.\n\terr = srv.Shutdown(context.Background())\n\treturn\n}\n\nfunc newHTTPHandler() http.Handler {\n\tmux := http.NewServeMux()\n\n\t// handleFunc is a replacement for mux.HandleFunc\n\t// which enriches the handler's HTTP instrumentation with the pattern as the http.route.\n\thandleFunc := func(pattern string, handlerFunc func(http.ResponseWriter, *http.Request)) {\n\t\t// Configure the \"http.route\" for the HTTP instrumentation.\n\t\thandler := otelhttp.WithRouteTag(pattern, http.HandlerFunc(handlerFunc))\n\t\tmux.Handle(pattern, handler)\n\t}\n\n\t// Register handlers.\n\thandleFunc(\"/rolldice\", rolldice)\n\n\t// Add HTTP instrumentation for the whole server.\n\thandler := otelhttp.NewHandler(mux, \"/\")\n\treturn handler\n}\n"
  },
  {
    "path": "home/observability/opentelemetry/taskset_opentelemetry_observability/task_001_go_dice__traces_and_metrics_to_console/otel.go",
    "content": "package main\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"time\"\n\n\t\"go.opentelemetry.io/otel\"\n\t\"go.opentelemetry.io/otel/exporters/stdout/stdoutmetric\"\n\t\"go.opentelemetry.io/otel/exporters/stdout/stdouttrace\"\n\t\"go.opentelemetry.io/otel/propagation\"\n\t\"go.opentelemetry.io/otel/sdk/metric\"\n\t\"go.opentelemetry.io/otel/sdk/trace\"\n)\n\n// setupOTelSDK bootstraps the OpenTelemetry pipeline.\n// If it does not return an error, make sure to call shutdown for proper cleanup.\nfunc setupOTelSDK(ctx context.Context) (shutdown func(context.Context) error, err error) {\n\tvar shutdownFuncs []func(context.Context) error\n\n\t// shutdown calls cleanup functions registered via shutdownFuncs.\n\t// The errors from the calls are joined.\n\t// Each registered cleanup will be invoked once.\n\tshutdown = func(ctx context.Context) error {\n\t\tvar err error\n\t\tfor _, fn := range shutdownFuncs {\n\t\t\terr = errors.Join(err, fn(ctx))\n\t\t}\n\t\tshutdownFuncs = nil\n\t\treturn err\n\t}\n\n\t// handleErr calls shutdown for cleanup and makes sure that all errors are returned.\n\thandleErr := func(inErr error) {\n\t\terr = errors.Join(inErr, shutdown(ctx))\n\t}\n\n\t// Set up propagator.\n\tprop := newPropagator()\n\totel.SetTextMapPropagator(prop)\n\n\t// Set up trace provider.\n\ttracerProvider, err := newTraceProvider()\n\tif err != nil {\n\t\thandleErr(err)\n\t\treturn\n\t}\n\tshutdownFuncs = append(shutdownFuncs, tracerProvider.Shutdown)\n\totel.SetTracerProvider(tracerProvider)\n\n\t// Set up meter provider.\n\tmeterProvider, err := newMeterProvider()\n\tif err != nil {\n\t\thandleErr(err)\n\t\treturn\n\t}\n\tshutdownFuncs = append(shutdownFuncs, meterProvider.Shutdown)\n\totel.SetMeterProvider(meterProvider)\n\n\treturn\n}\n\nfunc newPropagator() propagation.TextMapPropagator {\n\treturn propagation.NewCompositeTextMapPropagator(\n\t\tpropagation.TraceContext{},\n\t\tpropagation.Baggage{},\n\t)\n}\n\nfunc newTraceProvider() (*trace.TracerProvider, error) {\n\ttraceExporter, err := stdouttrace.New(\n\t\tstdouttrace.WithPrettyPrint())\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\ttraceProvider := trace.NewTracerProvider(\n\t\ttrace.WithBatcher(traceExporter,\n\t\t\t// Default is 5s. Set to 1s for demonstrative purposes.\n\t\t\ttrace.WithBatchTimeout(time.Second)),\n\t)\n\treturn traceProvider, nil\n}\n\nfunc newMeterProvider() (*metric.MeterProvider, error) {\n\tmetricExporter, err := stdoutmetric.New()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tmeterProvider := metric.NewMeterProvider(\n\t\tmetric.WithReader(metric.NewPeriodicReader(metricExporter,\n\t\t\t// Default is 1m. Set to 3s for demonstrative purposes.\n\t\t\tmetric.WithInterval(3*time.Second))),\n\t)\n\treturn meterProvider, nil\n}\n"
  },
  {
    "path": "home/observability/opentelemetry/taskset_opentelemetry_observability/task_001_go_dice__traces_and_metrics_to_console/rolldice.go",
    "content": "package main\n\nimport (\n\t\"io\"\n\t\"log\"\n\t\"math/rand\"\n\t\"net/http\"\n\t\"strconv\"\n\n\t\"go.opentelemetry.io/otel\"\n\t\"go.opentelemetry.io/otel/attribute\"\n\t\"go.opentelemetry.io/otel/metric\"\n)\n\nvar (\n\ttracer  = otel.Tracer(\"rolldice\")\n\tmeter   = otel.Meter(\"rolldice\")\n\trollCnt metric.Int64Counter\n)\n\nfunc init() {\n\tvar err error\n\trollCnt, err = meter.Int64Counter(\"dice.rolls\",\n\t\tmetric.WithDescription(\"The number of rolls by roll value\"),\n\t\tmetric.WithUnit(\"{roll}\"))\n\tif err != nil {\n\t\tpanic(err)\n\t}\n}\n\nfunc rolldice(w http.ResponseWriter, r *http.Request) {\n\tctx, span := tracer.Start(r.Context(), \"roll\")\n\tdefer span.End()\n\n\troll := 1 + rand.Intn(6)\n\n\trollValueAttr := attribute.Int(\"roll.value\", roll)\n\tspan.SetAttributes(rollValueAttr)\n\trollCnt.Add(ctx, 1, metric.WithAttributes(rollValueAttr))\n\n\tresp := strconv.Itoa(roll) + \"\\n\"\n\tif _, err := io.WriteString(w, resp); err != nil {\n\t\tlog.Printf(\"Write failed: %v\\n\", err)\n\t}\n}\n"
  },
  {
    "path": "home/observability/opentelemetry/taskset_opentelemetry_observability/task_002_go__traces_gRPC_OTLP__jaeger/ReadMe.md",
    "content": "# Golang Example: Sending Traces to jaeger via grpc\n\n## [opentelemetry.io » jaeger reference](https://opentelemetry.io/docs/languages/go/exporters/#jaeger)\n\n- To try out the OTLP exporter, since v1.35.0 you can run Jaeger as an OTLP endpoint and for trace visualization in a Docker container:\n\n```bash\ndocker run -d --name jaeger \\\n  -e COLLECTOR_OTLP_ENABLED=true \\\n  -p 16686:16686 \\\n  -p 4317:4317 \\\n  -p 4318:4318 \\\n  jaegertracing/all-in-one:latest\n```\n\n## [opentelemetry.io » oltp](https://opentelemetry.io/docs/languages/go/exporters/#otlp)\n\n[otel-collector example](https://github.com/open-telemetry/opentelemetry-go/tree/main/example/otel-collector)\n\n## How to run this?\n\n```bash\n$ go mod init go_traces_grpc_jaeger\ngo: creating new go.mod: module go_traces_grpc_jaeger\ngo: to add module requirements and sums:\n        go mod tidy\n...\n\n$ go mod tidy\n...\n\n$ go run .\n2024/03/11 13:34:43 Waiting for connection...\n2024/03/11 13:34:43 Doing really hard work (1 / 10)\n2024/03/11 13:34:44 Doing really hard work (2 / 10)\n2024/03/11 13:34:45 Doing really hard work (3 / 10)\n2024/03/11 13:34:46 Doing really hard work (4 / 10)\n2024/03/11 13:34:47 Doing really hard work (5 / 10)\n2024/03/11 13:34:48 Doing really hard work (6 / 10)\n2024/03/11 13:34:49 Doing really hard work (7 / 10)\n2024/03/11 13:34:50 Doing really hard work (8 / 10)\n2024/03/11 13:34:51 Doing really hard work (9 / 10)\n2024/03/11 13:34:52 Doing really hard work (10 / 10)\n2024/03/11 13:34:53 Done!\n```\n\n## Access the jaeger dashboard [http://localhost:16686](http://localhost:16686)\n\n## Flow\n\n```bash\nApp + SDK ---> OpenTelemetry Collector  -----> Jaeger (trace)                                   \n```\n"
  },
  {
    "path": "home/observability/opentelemetry/taskset_opentelemetry_observability/task_002_go__traces_gRPC_OTLP__jaeger/go.mod",
    "content": "module go_traces_grpc_jaeger\n\ngo 1.21.6\n\nrequire (\n\tgo.opentelemetry.io/otel v1.24.0\n\tgo.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0\n\tgo.opentelemetry.io/otel/sdk v1.24.0\n\tgo.opentelemetry.io/otel/trace v1.24.0\n\tgoogle.golang.org/grpc v1.62.1\n)\n\nrequire (\n\tgithub.com/cenkalti/backoff/v4 v4.2.1 // indirect\n\tgithub.com/go-logr/logr v1.4.1 // indirect\n\tgithub.com/go-logr/stdr v1.2.2 // indirect\n\tgithub.com/golang/protobuf v1.5.3 // indirect\n\tgithub.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0 // indirect\n\tgo.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0 // indirect\n\tgo.opentelemetry.io/otel/metric v1.24.0 // indirect\n\tgo.opentelemetry.io/proto/otlp v1.1.0 // indirect\n\tgolang.org/x/net v0.20.0 // indirect\n\tgolang.org/x/sys v0.17.0 // indirect\n\tgolang.org/x/text v0.14.0 // indirect\n\tgoogle.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 // indirect\n\tgoogle.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 // indirect\n\tgoogle.golang.org/protobuf v1.32.0 // indirect\n)\n"
  },
  {
    "path": "home/observability/opentelemetry/taskset_opentelemetry_observability/task_002_go__traces_gRPC_OTLP__jaeger/go.sum",
    "content": "github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM=\ngithub.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=\ngithub.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=\ngithub.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=\ngithub.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ=\ngithub.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=\ngithub.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=\ngithub.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=\ngithub.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=\ngithub.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=\ngithub.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=\ngithub.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=\ngithub.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=\ngithub.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0 h1:Wqo399gCIufwto+VfwCSvsnfGpF/w5E9CNxSwbpD6No=\ngithub.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0/go.mod h1:qmOFXW2epJhM0qSnUUYpldc7gVz2KMQwJ/QYCDIa7XU=\ngithub.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=\ngithub.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=\ngithub.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=\ngithub.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=\ngo.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo=\ngo.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo=\ngo.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0 h1:t6wl9SPayj+c7lEIFgm4ooDBZVb01IhLB4InpomhRw8=\ngo.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0/go.mod h1:iSDOcsnSA5INXzZtwaBPrKp/lWu/V14Dd+llD0oI2EA=\ngo.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0 h1:Mw5xcxMwlqoJd97vwPxA8isEaIoxsta9/Q51+TTJLGE=\ngo.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0/go.mod h1:CQNu9bj7o7mC6U7+CA/schKEYakYXWr79ucDHTMGhCM=\ngo.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI=\ngo.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco=\ngo.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw=\ngo.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg=\ngo.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI=\ngo.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU=\ngo.opentelemetry.io/proto/otlp v1.1.0 h1:2Di21piLrCqJ3U3eXGCTPHE9R8Nh+0uglSnOyxikMeI=\ngo.opentelemetry.io/proto/otlp v1.1.0/go.mod h1:GpBHCBWiqvVLDqmHZsoMM3C5ySeKTC7ej/RNTae6MdY=\ngo.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=\ngo.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=\ngolang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo=\ngolang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY=\ngolang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y=\ngolang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=\ngolang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=\ngolang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=\ngolang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngoogle.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 h1:KAeGQVN3M9nD0/bQXnr/ClcEMJ968gUXJQ9pwfSynuQ=\ngoogle.golang.org/genproto v0.0.0-20240123012728-ef4313101c80/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro=\ngoogle.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 h1:Lj5rbfG876hIAYFjqiJnPHfhXbv+nzTWfm04Fg/XSVU=\ngoogle.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80/go.mod h1:4jWUdICTdgc3Ibxmr8nAJiiLHwQBY0UI0XZcEMaFKaA=\ngoogle.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 h1:AjyfHzEPEFp/NpvfN5g+KDla3EMojjhRVZc1i7cj+oM=\ngoogle.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s=\ngoogle.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk=\ngoogle.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE=\ngoogle.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=\ngoogle.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=\ngoogle.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I=\ngoogle.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=\ngopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=\ngopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\n"
  },
  {
    "path": "home/observability/opentelemetry/taskset_opentelemetry_observability/task_002_go__traces_gRPC_OTLP__jaeger/main.go",
    "content": "package main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\t\"os/signal\"\n\t\"time\"\n\n\t\"google.golang.org/grpc\"\n\t\"google.golang.org/grpc/credentials/insecure\"\n\n\t\"go.opentelemetry.io/otel\"\n\t\"go.opentelemetry.io/otel/attribute\"\n\t\"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc\"\n\t\"go.opentelemetry.io/otel/propagation\"\n\t\"go.opentelemetry.io/otel/sdk/resource\"\n\tsdktrace \"go.opentelemetry.io/otel/sdk/trace\"\n\tsemconv \"go.opentelemetry.io/otel/semconv/v1.24.0\"\n\t\"go.opentelemetry.io/otel/trace\"\n)\n\n// Initializes an OTLP exporter, and configures the corresponding trace and\n// metric providers.\nfunc initProvider() (func(context.Context) error, error) {\n\tctx := context.Background()\n\n\tres, err := resource.New(ctx,\n\t\tresource.WithAttributes(\n\t\t\t// the service name used to display traces in backends\n\t\t\tsemconv.ServiceName(\"test-service\"),\n\t\t),\n\t)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to create resource: %w\", err)\n\t}\n\n\t// If the OpenTelemetry Collector is running on a local cluster (minikube or\n\t// microk8s), it should be accessible through the NodePort service at the\n\t// `localhost:30080` endpoint. Otherwise, replace `localhost` with the\n\t// endpoint of your cluster. If you run the app inside k8s, then you can\n\t// probably connect directly to the service through dns.\n\tctx, cancel := context.WithTimeout(ctx, time.Second)\n\tdefer cancel()\n\tconn, err := grpc.DialContext(ctx, \"localhost:4317\",\n\t\t// Note the use of insecure transport here. TLS is recommended in production.\n\t\tgrpc.WithTransportCredentials(insecure.NewCredentials()),\n\t\tgrpc.WithBlock(),\n\t)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to create gRPC connection to collector: %w\", err)\n\t}\n\n\t// Set up a trace exporter\n\ttraceExporter, err := otlptracegrpc.New(ctx, otlptracegrpc.WithGRPCConn(conn))\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to create trace exporter: %w\", err)\n\t}\n\n\t// Register the trace exporter with a TracerProvider, using a batch\n\t// span processor to aggregate spans before export.\n\tbsp := sdktrace.NewBatchSpanProcessor(traceExporter)\n\ttracerProvider := sdktrace.NewTracerProvider(\n\t\tsdktrace.WithSampler(sdktrace.AlwaysSample()),\n\t\tsdktrace.WithResource(res),\n\t\tsdktrace.WithSpanProcessor(bsp),\n\t)\n\totel.SetTracerProvider(tracerProvider)\n\n\t// set global propagator to tracecontext (the default is no-op).\n\totel.SetTextMapPropagator(propagation.TraceContext{})\n\n\t// Shutdown will flush any remaining spans and shut down the exporter.\n\treturn tracerProvider.Shutdown, nil\n}\n\nfunc main() {\n\tlog.Printf(\"Waiting for connection...\")\n\n\tctx, cancel := signal.NotifyContext(context.Background(), os.Interrupt)\n\tdefer cancel()\n\n\tshutdown, err := initProvider()\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer func() {\n\t\tif err := shutdown(ctx); err != nil {\n\t\t\tlog.Fatal(\"failed to shutdown TracerProvider: %w\", err)\n\t\t}\n\t}()\n\n\ttracer := otel.Tracer(\"test-tracer\")\n\n\t// Attributes represent additional key-value descriptors that can be bound\n\t// to a metric observer or recorder.\n\tcommonAttrs := []attribute.KeyValue{\n\t\tattribute.String(\"attrA\", \"chocolate\"),\n\t\tattribute.String(\"attrB\", \"raspberry\"),\n\t\tattribute.String(\"attrC\", \"vanilla\"),\n\t}\n\n\t// work begins\n\tctx, span := tracer.Start(\n\t\tctx,\n\t\t\"CollectorExporter-Example\",\n\t\ttrace.WithAttributes(commonAttrs...))\n\tdefer span.End()\n\tfor i := 0; i < 10; i++ {\n\t\t_, iSpan := tracer.Start(ctx, fmt.Sprintf(\"Sample-%d\", i))\n\t\tlog.Printf(\"Doing really hard work (%d / 10)\\n\", i+1)\n\n\t\t<-time.After(time.Second)\n\t\tiSpan.End()\n\t}\n\n\tlog.Printf(\"Done!\")\n}\n"
  },
  {
    "path": "home/observability/prometheus/ReadMe.md",
    "content": "# taskset_prometheus_observability\n\n> [Auto](https://github.com/codeaprendiz/learn_fullstack/blob/main/home/php/intermediate/taskset_intermediate_php/task_004_createGlobalMarkdownTable/generate-readme.php) generated ReadMe. Number of tasks: 3\n\n| Task     | Description                                                                                                           |\n|----------|-----------------------------------------------------------------------------------------------------------------------|\n| task_001 | [task_001_getting_started_with_prometheus](taskset_prometheus_observability/task_001_getting_started_with_prometheus) |\n| task_002 | [task_002_understanding_metric_types](taskset_prometheus_observability/task_002_understanding_metric_types)           |\n| task_003 | [task_003_instrumenting_http_server_in_go](taskset_prometheus_observability/task_003_instrumenting_http_server_in_go) |\n"
  },
  {
    "path": "home/observability/prometheus/taskset_prometheus_observability/task_001_getting_started_with_prometheus/ReadMe.md",
    "content": "# [Getting started with prometheus](https://prometheus.io/docs/tutorials/getting_started)\n\n[prometheus.io » Getting started with prometheus](https://prometheus.io/docs/tutorials/getting_started)\n\n- [Getting started with prometheus](#getting-started-with-prometheus)\n  - [Running Using Docker](#running-using-docker)\n  - [Accessing metrics via curl](#accessing-metrics-via-curl)\n  - [Prometheus UI](#prometheus-ui)\n  - [Download node exporter for scraping machine metrics](#download-node-exporter-for-scraping-machine-metrics)\n  - [Scraping additional metrics](#scraping-additional-metrics)\n\n## Running Using Docker\n\n[prometheus.io » Using Docker](https://prometheus.io/docs/prometheus/latest/installation)\n\n```bash\ndocker run --rm \\\n    -p 9090:9090 \\\n    -v ./prometheus_1.yml:/etc/prometheus/prometheus.yml \\\n    prom/prometheus\n```\n\n## Accessing metrics via curl\n\n```bash\n$ curl --silent http://localhost:9090/metrics | head -n 6 | egrep -v \"#\"\ngo_gc_duration_seconds{quantile=\"0\"} 4.7708e-05\ngo_gc_duration_seconds{quantile=\"0.25\"} 6.4833e-05\ngo_gc_duration_seconds{quantile=\"0.5\"} 0.000225082\ngo_gc_duration_seconds{quantile=\"0.75\"} 0.000323459\n```\n\n## Prometheus UI\n\n[http://localhost:9090](http://localhost:9090)\n\n## Download node exporter for scraping machine metrics\n\n[prometheus.io » download » node_exporter](https://prometheus.io/download/#node_exporter)\n\n```bash\n./node_exporter\n```\n\n## Scraping additional metrics\n\n[stackoverflow.com » How to access host port from docker container](https://stackoverflow.com/questions/31324981/how-to-access-host-port-from-docker-container)\n\n```bash\ndocker run --rm \\\n    -p 9090:9090 \\\n    -v ./prometheus_2.yml:/etc/prometheus/prometheus.yml \\\n    prom/prometheus\n```\n\n- Check the status of targets\n\n```bash\n$ curl -s http://localhost:9090/api/v1/targets | jq '.data.activeTargets[] | {target: .labels.instance, status: .health}'\n\n{\n  \"target\": \"host.docker.internal:9100\",\n  \"status\": \"up\"\n}\n{\n  \"target\": \"localhost:9090\",\n  \"status\": \"up\"\n}\n```"
  },
  {
    "path": "home/observability/prometheus/taskset_prometheus_observability/task_001_getting_started_with_prometheus/prometheus_1.yml",
    "content": "global:\n  scrape_interval: 15s\n\nscrape_configs:\n  - job_name: prometheus\n    static_configs:\n      - targets: [\"localhost:9090\"]"
  },
  {
    "path": "home/observability/prometheus/taskset_prometheus_observability/task_001_getting_started_with_prometheus/prometheus_2.yml",
    "content": "global:\n  scrape_interval: 15s\n\nscrape_configs:\n  - job_name: prometheus\n    static_configs:\n      - targets: [\"localhost:9090\"]\n  - job_name: node_exporter\n    static_configs:\n      - targets: [\"host.docker.internal:9100\"]"
  },
  {
    "path": "home/observability/prometheus/taskset_prometheus_observability/task_002_understanding_metric_types/ReadMe.md",
    "content": "# [Understanding metric types](https://prometheus.io/docs/tutorials/understanding_metric_types/)\n\n[prometheus.io » Understanding metric types](https://prometheus.io/docs/tutorials/understanding_metric_types/)\n\n## Counter\n\nCounter is a metric value that can only increase or reset i.e. the value cannot reduce than the previous value. It can be used for metrics like the number of requests, no of errors, etc.\n\n```bash\ngo_gc_duration_seconds_count\n```\n\n```bash\ncurl -s -G 'http://localhost:9090/api/v1/query' --data-urlencode 'query=go_gc_duration_seconds_count' | \\\n  jq -r '.data.result[] | {instance: .metric.instance, value: .value[1]}'\n\n{\n  \"instance\": \"host.docker.internal:9100\",\n  \"value\": \"23\"\n}\n{\n  \"instance\": \"localhost:9090\",\n  \"value\": \"22\"\n}\n```\n\nThe rate() function in PromQL takes the history of metrics over a time frame and calculates how fast the value is increasing per second. Rate is applicable on counter values only.\n\n```bash\n$ curl -s -G 'http://localhost:9090/api/v1/query' --data-urlencode 'query=rate(go_gc_duration_seconds_count[5m])' | \\\n  jq -r '.data.result[] | {instance: .metric.instance, value: .value[1]}'\n\n{\n  \"instance\": \"host.docker.internal:9100\",\n  \"value\": \"0.021053000929840873\"\n}\n{\n  \"instance\": \"localhost:9090\",\n  \"value\": \"0.007017716224609026\"\n}\n```\n\n## Gauge\n\nGauge is a number which can either go up or down. It can be used for metrics like the number of pods in a cluster, the number of events in a queue, etc.\n\n```bash\ngo_memstats_heap_alloc_bytes\n```\n\n```bash\n$ curl -s -G 'http://localhost:9090/api/v1/query' --data-urlencode 'query=go_memstats_heap_alloc_bytes' | \\\n  jq -r '.data.result[] | {instance: .metric.instance, value: .value[1]}'\n\n{\n  \"instance\": \"host.docker.internal:9100\",\n  \"value\": \"2458736\"\n}\n{\n  \"instance\": \"localhost:9090\",\n  \"value\": \"22375256\"\n}\n```\n\nPromQL functions like max_over_time, min_over_time and avg_over_time can be used on gauge metrics\n\n```bash\n$ curl -s -G 'http://localhost:9090/api/v1/query' --data-urlencode 'query=max_over_time(go_memstats_heap_alloc_bytes[5m])' | jq -r '.data.result[] | {instance: .metric.instance, value: .value[1]}'\n\n{\n  \"instance\": \"host.docker.internal:9100\",\n  \"value\": \"2955736\"\n}\n{\n  \"instance\": \"localhost:9090\",\n  \"value\": \"31170800\"\n}\n```\n\n```bash\n$ curl -s -G 'http://localhost:9090/api/v1/query' --data-urlencode 'query=min_over_time(go_memstats_heap_alloc_bytes[5m])' | jq -r '.data.result[] | {instance: .metric.instance, value: .value[1]}'\n{\n  \"instance\": \"host.docker.internal:9100\",\n  \"value\": \"1704312\"\n}\n{\n  \"instance\": \"localhost:9090\",\n  \"value\": \"20550824\"\n}\n```\n\n```bash\n$ curl -s -G 'http://localhost:9090/api/v1/query' --data-urlencode 'query=avg_over_time(go_memstats_heap_alloc_bytes[5m])' | jq -r '.data.result[] | {instance: .metric.instance, value: .value[1]}'\n{\n  \"instance\": \"host.docker.internal:9100\",\n  \"value\": \"2244632.8\"\n}\n{\n  \"instance\": \"localhost:9090\",\n  \"value\": \"24582261.6\"\n}\n```\n\n## Histogram\n\nHistogram is a more complex metric type when compared to the previous two. Histogram can be used for any calculated value which is counted based on bucket values. Bucket boundaries can be configured by the developer. A common example would be the time it takes to reply to a request, called latency.\n\nExample: Let's assume we want to observe the time taken to process API requests. Instead of storing the request time for each request, histograms allow us to store them in buckets. We define buckets for time taken, for example lower or equal 0.3, le 0.5, le 0.7, le 1, and le 1.2. So these are our buckets and once the time taken for a request is calculated it is added to the count of all the buckets whose bucket boundaries are higher than the measured value.\n\n```bash\n$ curl -s -G 'http://localhost:9090/api/v1/query' --data-urlencode 'query=prometheus_http_request_duration_seconds_bucket{handler=\"/graph\"}' | jq\n\n{\n  \"status\": \"success\",\n  \"data\": {\n    \"resultType\": \"vector\",\n    \"result\": [\n      {\n        \"metric\": {\n          \"__name__\": \"prometheus_http_request_duration_seconds_bucket\",\n          \"handler\": \"/graph\",\n          \"instance\": \"localhost:9090\",\n          \"job\": \"prometheus\",\n          \"le\": \"+Inf\"                     # indicates that this bucket includes all request durations. There is no upper limit to the durations captured in this bucket.\n        },\n        \"value\": [\n          1702226077.077,\n          \"3\"\n        ]\n      },\n      {\n        \"metric\": {\n          \"__name__\": \"prometheus_http_request_duration_seconds_bucket\",\n          \"handler\": \"/graph\",\n          \"instance\": \"localhost:9090\",\n          \"job\": \"prometheus\",\n          \"le\": \"0.1\"                        # indicates that this bucket includes HTTP request durations that are less than or equal to 0.1 seconds.\n        },\n        \"value\": [\n          1702226077.077,\n          \"3\"\n        ]\n      },\n      {\n        \"metric\": {\n          \"__name__\": \"prometheus_http_request_duration_seconds_bucket\",\n          \"handler\": \"/graph\",\n          \"instance\": \"localhost:9090\",\n          \"job\": \"prometheus\",\n          \"le\": \"0.2\"                         # indicates that this bucket includes HTTP request durations that are less than or equal to 0.2 seconds.\n        },\n        \"value\": [\n          1702226077.077,\n          \"3\"                                  # The value 3 suggests that there have been 3 HTTP requests for the /graph handler that had a duration of 0.2 seconds or less, up to the timestamp 1702226077.077.\n        ]\n      },\n```\n\n> HTTP Request Durations for /graph Handler\n\n| Bucket (Request Duration Less than or equal to) | Number of Requests |\n|-------------------------------------------------|--------------------|\n| +Inf                                            | 3                  |\n| 0.1s                                            | 3                  |\n| 0.2s                                            | 3                  |\n\nThe following shows that the 90th percentile is 0.09\n\n```bash\n$ curl --silent -G 'http://localhost:9090/api/v1/query' --data-urlencode 'query=histogram_quantile(0.9, prometheus_http_request_duration_seconds_bucket{handler=\"/graph\"})' | jq\n\n{\n  \"status\": \"success\",       # This indicates that your query was successfully processed by the Prometheus server.\n  \"data\": {\n    \"resultType\": \"vector\",\n    \"result\": [\n      {\n        \"metric\": {\n          \"handler\": \"/graph\",       # This specifies the particular handler for which the data is relevant.\n          \"instance\": \"localhost:9090\", # This is the address of the Prometheus instance from which the metric is collected.\n          \"job\": \"prometheus\"  #  This specifies the job (in Prometheus terms) that generated the metric.\n        },\n        \"value\": [\n          1702226928.954,              # The first element is a timestamp (1702226928.954), represented in Unix time format.\n          \"0.09000000000000001\"        # The second element (\"0.09000000000000001\") represents the calculated value for the 90th percentile of the HTTP request durations for the /graph handler. In this case, it means that 90% of the HTTP requests to the /graph handler were completed in 0.09 seconds or less.\n        ]\n      }\n    ]\n  }\n}\n```\n\nThe query result tells you that for the `/graph` handler in your Prometheus-monitored system, 90% of the HTTP requests were processed within approximately 0.09 seconds as of the given timestamp.\n\nTo find the histogram_quantile over the last 5m you can use the rate() and time frame\nAfter running this command, you will receive a JSON response from Prometheus with the calculated 90th percentile rate of the request durations for the /graph handler over the last 5 minutes.\n\n```bash\n$ curl --silent -G 'http://localhost:9090/api/v1/query' --data-urlencode 'query=histogram_quantile(0.9, rate(prometheus_http_request_duration_seconds_bucket{handler=\"/graph\"}[5m]))' | jq\n{\n  \"status\": \"success\",\n  \"data\": {\n    \"resultType\": \"vector\",\n    \"result\": [\n      {\n        \"metric\": {\n          \"handler\": \"/graph\",\n          \"instance\": \"localhost:9090\",\n          \"job\": \"prometheus\"\n        },\n        \"value\": [\n          1702227411.639,\n          \"NaN\"           # The second element is NaN (Not a Number), indicating that the 90th percentile of the rate of request durations could not be calculated for the specified interval and conditions.\n        ]\n      }\n    ]\n  }\n}\n```\n"
  },
  {
    "path": "home/observability/prometheus/taskset_prometheus_observability/task_003_instrumenting_http_server_in_go/ReadMe.md",
    "content": "# [Instrumenting HTTP Server in GO](https://prometheus.io/docs/tutorials/instrumenting_http_server_in_go)\n\n[prometheus.io » Instrumenting HTTP Server in GO](https://prometheus.io/docs/tutorials/instrumenting_http_server_in_go)\n\n```bash\ngo mod init prom_example\ngo mod tidy\ngo run server.go\n```\n\n## Validation\n\n```bash\n$ curl localhost:8090/ping                   \npong\n\n$ curl localhost:8090/ping                   \npong\n\n$ curl --silent localhost:8090/metrics | egrep \"ping_request_count\"\n# HELP ping_request_count No of request handled by Ping handler\n# TYPE ping_request_count counter\nping_request_count 2\n```\n\n## Running Prometheus\n\n```bash\ndocker run --rm \\\n    -p 9090:9090 \\\n    -v ./prometheus.yml:/etc/prometheus/prometheus.yml \\\n    prom/prometheus\n```\n\n## Check the status of targets\n\n```bash\n$ curl -s http://localhost:9090/api/v1/targets | jq '.data.activeTargets[] | {target: .labels.instance, status: .health}'\n{\n  \"target\": \"localhost:9090\",\n  \"status\": \"up\"\n}\n{\n  \"target\": \"host.docker.internal:8090\",\n  \"status\": \"up\"\n}\n```\n\n## Check the value of our metric\n\n```bash\n$ curl -s -G 'http://localhost:9090/api/v1/query' --data-urlencode 'query=ping_request_count' | \\\n  jq -r '.data.result[] | {instance: .metric.instance, value: .value[1]}'\n{\n  \"instance\": \"host.docker.internal:8090\",\n  \"value\": \"2\"\n}\n```\n"
  },
  {
    "path": "home/observability/prometheus/taskset_prometheus_observability/task_003_instrumenting_http_server_in_go/go.mod",
    "content": "module prom_example\n\ngo 1.21.4\n\nrequire github.com/prometheus/client_golang v1.17.0\n\nrequire (\n\tgithub.com/beorn7/perks v1.0.1 // indirect\n\tgithub.com/cespare/xxhash/v2 v2.2.0 // indirect\n\tgithub.com/golang/protobuf v1.5.3 // indirect\n\tgithub.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect\n\tgithub.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16 // indirect\n\tgithub.com/prometheus/common v0.44.0 // indirect\n\tgithub.com/prometheus/procfs v0.11.1 // indirect\n\tgolang.org/x/sys v0.11.0 // indirect\n\tgoogle.golang.org/protobuf v1.31.0 // indirect\n)\n"
  },
  {
    "path": "home/observability/prometheus/taskset_prometheus_observability/task_003_instrumenting_http_server_in_go/go.sum",
    "content": "github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=\ngithub.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=\ngithub.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=\ngithub.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=\ngithub.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=\ngithub.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=\ngithub.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=\ngithub.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=\ngithub.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=\ngithub.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=\ngithub.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=\ngithub.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo=\ngithub.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=\ngithub.com/prometheus/client_golang v1.17.0 h1:rl2sfwZMtSthVU752MqfjQozy7blglC+1SOtjMAMh+Q=\ngithub.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY=\ngithub.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16 h1:v7DLqVdK4VrYkVD5diGdl4sxJurKJEMnODWRJlxV9oM=\ngithub.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU=\ngithub.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY=\ngithub.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY=\ngithub.com/prometheus/procfs v0.11.1 h1:xRC8Iq1yyca5ypa9n1EZnWZkt7dwcoRPQwX/5gwaUuI=\ngithub.com/prometheus/procfs v0.11.1/go.mod h1:eesXgaPo1q7lBpVMoMy0ZOFTth9hBn4W/y0/p/ScXhY=\ngolang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM=\ngolang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngoogle.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=\ngoogle.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=\ngoogle.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=\ngoogle.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=\n"
  },
  {
    "path": "home/observability/prometheus/taskset_prometheus_observability/task_003_instrumenting_http_server_in_go/prometheus.yml",
    "content": "global:\n  scrape_interval: 15s\n\nscrape_configs:\n  - job_name: prometheus\n    static_configs:\n      - targets: [\"localhost:9090\"]\n  - job_name: simple_server\n    static_configs:\n      - targets: [\"host.docker.internal:8090\"]"
  },
  {
    "path": "home/observability/prometheus/taskset_prometheus_observability/task_003_instrumenting_http_server_in_go/server.go",
    "content": "package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\n\t\"github.com/prometheus/client_golang/prometheus\"\n\t\"github.com/prometheus/client_golang/prometheus/promhttp\"\n)\n\n// Create a Prometheus counter\nvar pingCounter = prometheus.NewCounter(\n\tprometheus.CounterOpts{\n\t\tName: \"ping_request_count\",\n\t\tHelp: \"No of request handled by Ping handler\",\n\t},\n)\n\nfunc ping(w http.ResponseWriter, req *http.Request) {\n\tpingCounter.Inc() // Update the ping Handler to increase the count of the counter using pingCounter.Inc().\n\tfmt.Fprintf(w, \"pong\")\n}\n\nfunc main() {\n\tprometheus.MustRegister(pingCounter) // The prometheus.MustRegister function registers the pingCounter to the default Register. To expose the metrics the Go Prometheus client library provides the promhttp package.\n\n\thttp.HandleFunc(\"/ping\", ping)\n\thttp.Handle(\"/metrics\", promhttp.Handler()) // promhttp.Handler() provides a http.Handler which exposes the metrics registered in the Default Register.\n\thttp.ListenAndServe(\":8090\", nil)\n}\n"
  },
  {
    "path": "home/os_and_concepts/ReadMe.md",
    "content": "## taskset_concepts_os_and_concepts\n\n> Auto generated ReadMe\n\n| Task     | Description                                                                                                     |\n|----------|-----------------------------------------------------------------------------------------------------------------|\n| task_001 | [task_001_etc_os_release_file](taskset_concepts_os_and_concepts/task_001_etc_os_release_file)                   |\n| task_002 | [task_002_etc_passwd](taskset_concepts_os_and_concepts/task_002_etc_passwd)                                     |\n| task_002 | [task_002_referring_documentation](taskset_concepts_os_and_concepts/task_002_referring_documentation)           |\n| task_003 | [task_003_etc_group](taskset_concepts_os_and_concepts/task_003_etc_group)                                       |\n| task_003 | [task_003_etc_sudoers](taskset_concepts_os_and_concepts/task_003_etc_sudoers)                                   |\n| task_004 | [task_004_etc_hosts](taskset_concepts_os_and_concepts/task_004_etc_hosts)                                       |\n| task_005 | [task_005_etc_resolv.conf](taskset_concepts_os_and_concepts/task_005_etc_resolv.conf)                           |\n| task_006 | [task_006_proc_sys_net_ipv4_ip_forward](taskset_concepts_os_and_concepts/task_006_proc_sys_net_ipv4_ip_forward) |\n| task_007 | [task_007_etc_sysctl.conf](taskset_concepts_os_and_concepts/task_007_etc_sysctl.conf)                           |\n| task_008 | [task_008_special_variables](taskset_concepts_os_and_concepts/task_008_special_variables)                       |\n| task_009 | [task_009_etc_fstab](taskset_concepts_os_and_concepts/task_009_etc_fstab)                                       |\n| task_010 | [task_010_shebang_character](taskset_concepts_os_and_concepts/task_010_shebang_character)                       |\n| task_011 | [task_011_redirection](taskset_concepts_os_and_concepts/task_011_redirection)                                   |\n| task_012 | [task_012_eof_here_doc](taskset_concepts_os_and_concepts/task_012_eof_here_doc)                                 |\n\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/ReadMe.md",
    "content": "# taskset_commands_linux_os_and_concepts\n\n> [Auto](https://github.com/codeaprendiz/learn_fullstack/blob/main/home/php/intermediate/taskset_intermediate_php/task_004_createGlobalMarkdownTable/generate-readme.php) generated ReadMe. Number of tasks: 131\n\n| Task     | Description                                                                           |\n|----------|---------------------------------------------------------------------------------------|\n| task_001 | [task_001_arp](taskset_commands_linux_os_and_concepts/task_001_arp)                   |\n| task_002 | [task_002_awk](taskset_commands_linux_os_and_concepts/task_002_awk)                   |\n| task_003 | [task_003_chage](taskset_commands_linux_os_and_concepts/task_003_chage)               |\n| task_004 | [task_004_chmod](taskset_commands_linux_os_and_concepts/task_004_chmod)               |\n| task_005 | [task_005_chown](taskset_commands_linux_os_and_concepts/task_005_chown)               |\n| task_006 | [task_006_cksum](taskset_commands_linux_os_and_concepts/task_006_cksum)               |\n| task_007 | [task_007_clear](taskset_commands_linux_os_and_concepts/task_007_clear)               |\n| task_008 | [task_008_cp](taskset_commands_linux_os_and_concepts/task_008_cp)                     |\n| task_009 | [task_009_crontab](taskset_commands_linux_os_and_concepts/task_009_crontab)           |\n| task_010 | [task_010_curl](taskset_commands_linux_os_and_concepts/task_010_curl)                 |\n| task_011 | [task_011_cut](taskset_commands_linux_os_and_concepts/task_011_cut)                   |\n| task_012 | [task_012_df](taskset_commands_linux_os_and_concepts/task_012_df)                     |\n| task_013 | [task_013_diff](taskset_commands_linux_os_and_concepts/task_013_diff)                 |\n| task_014 | [task_014_dig](taskset_commands_linux_os_and_concepts/task_014_dig)                   |\n| task_015 | [task_015_dir](taskset_commands_linux_os_and_concepts/task_015_dir)                   |\n| task_016 | [task_016_dos2unix](taskset_commands_linux_os_and_concepts/task_016_dos2unix)         |\n| task_017 | [task_017_du](taskset_commands_linux_os_and_concepts/task_017_du)                     |\n| task_018 | [task_018_export](taskset_commands_linux_os_and_concepts/task_018_export)             |\n| task_019 | [task_019_fc](taskset_commands_linux_os_and_concepts/task_019_fc)                     |\n| task_020 | [task_020_find](taskset_commands_linux_os_and_concepts/task_020_find)                 |\n| task_021 | [task_021_firewall_cmd](taskset_commands_linux_os_and_concepts/task_021_firewall_cmd) |\n| task_022 | [task_022_free](taskset_commands_linux_os_and_concepts/task_022_free)                 |\n| task_023 | [task_023_ftp](taskset_commands_linux_os_and_concepts/task_023_ftp)                   |\n| task_024 | [task_024_git](taskset_commands_linux_os_and_concepts/task_024_git)                   |\n| task_025 | [task_025_gunzip_gzip](taskset_commands_linux_os_and_concepts/task_025_gunzip_gzip)   |\n| task_026 | [task_026_head](taskset_commands_linux_os_and_concepts/task_026_head)                 |\n| task_027 | [task_027_history](taskset_commands_linux_os_and_concepts/task_027_history)           |\n| task_028 | [task_028_host](taskset_commands_linux_os_and_concepts/task_028_host)                 |\n| task_029 | [task_029_hostname](taskset_commands_linux_os_and_concepts/task_029_hostname)         |\n| task_030 | [task_030_ifconfig](taskset_commands_linux_os_and_concepts/task_030_ifconfig)         |\n| task_031 | [task_031_ip](taskset_commands_linux_os_and_concepts/task_031_ip)                     |\n| task_032 | [task_032_jar](taskset_commands_linux_os_and_concepts/task_032_jar)                   |\n| task_033 | [task_033_jobs](taskset_commands_linux_os_and_concepts/task_033_jobs)                 |\n| task_034 | [task_034_jq](taskset_commands_linux_os_and_concepts/task_034_jq)                     |\n| task_035 | [task_035_jstack](taskset_commands_linux_os_and_concepts/task_035_jstack)             |\n| task_036 | [task_036_keytool](taskset_commands_linux_os_and_concepts/task_036_keytool)           |\n| task_037 | [task_037_ln](taskset_commands_linux_os_and_concepts/task_037_ln)                     |\n| task_038 | [task_038_lsof](taskset_commands_linux_os_and_concepts/task_038_lsof)                 |\n| task_039 | [task_039_mail](taskset_commands_linux_os_and_concepts/task_039_mail)                 |\n| task_040 | [task_040_mkdir](taskset_commands_linux_os_and_concepts/task_040_mkdir)               |\n| task_041 | [task_041_mount](taskset_commands_linux_os_and_concepts/task_041_mount)               |\n| task_042 | [task_042_nc](taskset_commands_linux_os_and_concepts/task_042_nc)                     |\n| task_043 | [task_043_netstat](taskset_commands_linux_os_and_concepts/task_043_netstat)           |\n| task_044 | [task_044_nmap](taskset_commands_linux_os_and_concepts/task_044_nmap)                 |\n| task_045 | [task_045_nohup](taskset_commands_linux_os_and_concepts/task_045_nohup)               |\n| task_046 | [task_046_nslookup](taskset_commands_linux_os_and_concepts/task_046_nslookup)         |\n| task_047 | [task_047_openssl](taskset_commands_linux_os_and_concepts/task_047_openssl)           |\n| task_048 | [task_048_passwd](taskset_commands_linux_os_and_concepts/task_048_passwd)             |\n| task_049 | [task_049_ping](taskset_commands_linux_os_and_concepts/task_049_ping)                 |\n| task_050 | [task_050_ps](taskset_commands_linux_os_and_concepts/task_050_ps)                     |\n| task_051 | [task_051_rm](taskset_commands_linux_os_and_concepts/task_051_rm)                     |\n| task_052 | [task_052_route](taskset_commands_linux_os_and_concepts/task_052_route)               |\n| task_053 | [task_053_rsync](taskset_commands_linux_os_and_concepts/task_053_rsync)               |\n| task_054 | [task_054_scp](taskset_commands_linux_os_and_concepts/task_054_scp)                   |\n| task_055 | [task_055_sed](taskset_commands_linux_os_and_concepts/task_055_sed)                   |\n| task_056 | [task_056_sh](taskset_commands_linux_os_and_concepts/task_056_sh)                     |\n| task_057 | [task_057_setenforce](taskset_commands_linux_os_and_concepts/task_057_setenforce)     |\n| task_058 | [task_058_sort](taskset_commands_linux_os_and_concepts/task_058_sort)                 |\n| task_059 | [task_059_ssh](taskset_commands_linux_os_and_concepts/task_059_ssh)                   |\n| task_060 | [task_060_sudo](taskset_commands_linux_os_and_concepts/task_060_sudo)                 |\n| task_061 | [task_061_sysctl](taskset_commands_linux_os_and_concepts/task_061_sysctl)             |\n| task_062 | [task_062_system](taskset_commands_linux_os_and_concepts/task_062_system)             |\n| task_063 | [task_063_systemctl](taskset_commands_linux_os_and_concepts/task_063_systemctl)       |\n| task_064 | [task_064_tail](taskset_commands_linux_os_and_concepts/task_064_tail)                 |\n| task_065 | [task_065_tar](taskset_commands_linux_os_and_concepts/task_065_tar)                   |\n| task_066 | [task_066_tee](taskset_commands_linux_os_and_concepts/task_066_tee)                   |\n| task_067 | [task_067_telnet](taskset_commands_linux_os_and_concepts/task_067_telnet)             |\n| task_068 | [task_068_gradle](taskset_commands_linux_os_and_concepts/task_068_gradle)             |\n| task_069 | [task_069_tr](taskset_commands_linux_os_and_concepts/task_069_tr)                     |\n| task_070 | [task_070_traceroute](taskset_commands_linux_os_and_concepts/task_070_traceroute)     |\n| task_071 | [task_071_top](taskset_commands_linux_os_and_concepts/task_071_top)                   |\n| task_072 | [task_072_tty](taskset_commands_linux_os_and_concepts/task_072_tty)                   |\n| task_073 | [task_073_ulimit](taskset_commands_linux_os_and_concepts/task_073_ulimit)             |\n| task_074 | [task_074_umask](taskset_commands_linux_os_and_concepts/task_074_umask)               |\n| task_075 | [task_075_uname](taskset_commands_linux_os_and_concepts/task_075_uname)               |\n| task_076 | [task_076_uniq](taskset_commands_linux_os_and_concepts/task_076_uniq)                 |\n| task_077 | [task_077_unzip](taskset_commands_linux_os_and_concepts/task_077_unzip)               |\n| task_078 | [task_078_uptime](taskset_commands_linux_os_and_concepts/task_078_uptime)             |\n| task_079 | [task_079_vi](taskset_commands_linux_os_and_concepts/task_079_vi)                     |\n| task_080 | [task_080_vmstat](taskset_commands_linux_os_and_concepts/task_080_vmstat)             |\n| task_081 | [task_081_wall](taskset_commands_linux_os_and_concepts/task_081_wall)                 |\n| task_082 | [task_082_wc](taskset_commands_linux_os_and_concepts/task_082_wc)                     |\n| task_083 | [task_083_wget](taskset_commands_linux_os_and_concepts/task_083_wget)                 |\n| task_084 | [task_084_whatis](taskset_commands_linux_os_and_concepts/task_084_whatis)             |\n| task_085 | [task_085_whereis](taskset_commands_linux_os_and_concepts/task_085_whereis)           |\n| task_086 | [task_086_which](taskset_commands_linux_os_and_concepts/task_086_which)               |\n| task_087 | [task_087_xargs](taskset_commands_linux_os_and_concepts/task_087_xargs)               |\n| task_088 | [task_088_zcat](taskset_commands_linux_os_and_concepts/task_088_zcat)                 |\n| task_089 | [task_089_zip](taskset_commands_linux_os_and_concepts/task_089_zip)                   |\n| task_090 | [task_090_ansible](taskset_commands_linux_os_and_concepts/task_090_ansible)           |\n| task_091 | [task_091_terraform](taskset_commands_linux_os_and_concepts/task_091_terraform)       |\n| task_092 | [task_092_kubectl](taskset_commands_linux_os_and_concepts/task_092_kubectl)           |\n| task_093 | [task_093_kustomize](taskset_commands_linux_os_and_concepts/task_093_kustomize)       |\n| task_094 | [task_094_helm](taskset_commands_linux_os_and_concepts/task_094_helm)                 |\n| task_095 | [task_095_7z](taskset_commands_linux_os_and_concepts/task_095_7z)                     |\n| task_096 | [task_096_grep](taskset_commands_linux_os_and_concepts/task_096_grep)                 |\n| task_097 | [task_097_egrep](taskset_commands_linux_os_and_concepts/task_097_egrep)               |\n| task_098 | [task_098_growpart](taskset_commands_linux_os_and_concepts/task_098_growpart)         |\n| task_099 | [task_099_resize2fs](taskset_commands_linux_os_and_concepts/task_099_resize2fs)       |\n| task_100 | [task_100_lsblk](taskset_commands_linux_os_and_concepts/task_100_lsblk)               |\n| task_101 | [task_101_kops](taskset_commands_linux_os_and_concepts/task_101_kops)                 |\n| task_102 | [task_102_mongo](taskset_commands_linux_os_and_concepts/task_102_mongo)               |\n| task_103 | [task_103_mongorestore](taskset_commands_linux_os_and_concepts/task_103_mongorestore) |\n| task_104 | [task_104_mysql](taskset_commands_linux_os_and_concepts/task_104_mysql)               |\n| task_105 | [task_105_mysqldump](taskset_commands_linux_os_and_concepts/task_105_mysqldump)       |\n| task_106 | [task_106_ssh_keygen](taskset_commands_linux_os_and_concepts/task_106_ssh_keygen)     |\n| task_107 | [task_107_iptables](taskset_commands_linux_os_and_concepts/task_107_iptables)         |\n| task_108 | [task_108_adduser](taskset_commands_linux_os_and_concepts/task_108_adduser)           |\n| task_109 | [task_109_chgrp](taskset_commands_linux_os_and_concepts/task_109_chgrp)               |\n| task_110 | [task_110_sqlcmd](taskset_commands_linux_os_and_concepts/task_110_sqlcmd)             |\n| task_111 | [task_111_tcpdump](taskset_commands_linux_os_and_concepts/task_111_tcpdump)           |\n| task_112 | [task_112_step](taskset_commands_linux_os_and_concepts/task_112_step)                 |\n| task_113 | [task_113_set](taskset_commands_linux_os_and_concepts/task_113_set)                   |\n| task_114 | [task_114_mvn](taskset_commands_linux_os_and_concepts/task_114_mvn)                   |\n| task_115 | [task_115_source](taskset_commands_linux_os_and_concepts/task_115_source)             |\n| task_116 | [task_116_whoami](taskset_commands_linux_os_and_concepts/task_116_whoami)             |\n| task_117 | [task_117_who](taskset_commands_linux_os_and_concepts/task_117_who)                   |\n| task_118 | [task_118_last](taskset_commands_linux_os_and_concepts/task_118_last)                 |\n| task_119 | [task_119_az](taskset_commands_linux_os_and_concepts/task_119_az)                     |\n| task_120 | [task_120_dpkg](taskset_commands_linux_os_and_concepts/task_120_dpkg)                 |\n| task_121 | [task_121_cat](taskset_commands_linux_os_and_concepts/task_121_cat)                   |\n| task_122 | [task_122_tar](taskset_commands_linux_os_and_concepts/task_122_tar)                   |\n| task_123 | [task_123_code](taskset_commands_linux_os_and_concepts/task_123_code)                 |\n| task_124 | [task_124_unset](taskset_commands_linux_os_and_concepts/task_124_unset)               |\n| task_125 | [task_125_ssh_keygen](taskset_commands_linux_os_and_concepts/task_125_ssh_keygen)     |\n| task_126 | [task_126_command](taskset_commands_linux_os_and_concepts/task_126_command)           |\n| task_127 | [task_127_shasum](taskset_commands_linux_os_and_concepts/task_127_shasum)             |\n| task_128 | [task_128_sh](taskset_commands_linux_os_and_concepts/task_128_sh)                     |\n| task_129 | [task_129_yq](taskset_commands_linux_os_and_concepts/task_129_yq)                     |\n| task_130 | [task_130_basename](taskset_commands_linux_os_and_concepts/task_130_basename)         |\n| task_131 | [task_131_readlink](taskset_commands_linux_os_and_concepts/task_131_readlink)         |\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_001_arp/ReadMe.md",
    "content": "# arp\n\n[arp](https://man7.org/linux/man-pages/man8/arp.8.html)\n\n## NAME\n\narp - manipulate the system ARP cache\n\n## DESCRIPTION\n\nArp manipulates or displays the kernel's IPv4 network neighbour\ncache. It can add entries to the table, delete one or display the\ncurrent content.\n\nARP stands for Address Resolution Protocol, which is used to find\nthe media access control address of a network neighbour for a\ngiven IPv4 Address.\n\n## MODES\n\n- arp\n  - arp with no mode specifier will print the current content of the\n    table. It is possible to limit the number of entries printed, by\n    specifying an hardware address type, interface name or host\n    address.\n\n## EXAMPLES\n\n```bash\n$ arp\nAddress                  HWtype  HWaddress           Flags Mask            Iface\n_gateway                 ether   42:01:0a:80:00:01   C                     ens4\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_002_awk/ReadMe.md",
    "content": "# awk\n\n[awk](https://man7.org/linux/man-pages/man1/awk.1p.html)\n\n- [awk](#awk)\n  - [NAME](#name)\n  - [EXAMPLES](#examples)\n    - [Print specific `columns`](#print-specific-columns)\n    - [Using `pattern`](#using-pattern)\n    - [`hello world`](#hello-world)\n    - [Until `EOF`](#until-eof)\n    - [`-F` | input field separators](#-f--input-field-separators)\n\n<br>\n\n## NAME\n\n<br>\n\nawk - pattern-directed scanning and processing language\n\n<br>\n\n## EXAMPLES\n\n<br>\n\n<br>\n\n### Print specific `columns`\n\n<br>\n\nPrint only columns one and three using stdin\n\n```bash\n$ awk ' {print $1,$3} '\nthis is one\nthis one\nthis is one two\nthis one\n^C\n$ \n```\n\nExtract first and last column of a text file\n\n```bash\nawk '{print $1, $NF}' filename\n```\n\n<br>\n\n### Using `pattern`\n\n<br>\n\nPrint only elements from column 2 that match pattern using stdin\n\n```bash\n$ awk ' /'pattern'/ {print $2} '\nthis is first line\nthis is line containing pattern\nis\npatter at first\npattern at first\nat\n^C\n$\n```\n\n<br>\n\n### `hello world`\n\n<br>\n\nClassic \"Hello, world\" in awk\n\n```bash\n$ awk \"BEGIN { print \\\"Hello, world\\\" }\"\nHello, world\n$\n```\n\n<br>\n\n### Until `EOF`\n\n<br>\n\nPrint what's entered on the command line until EOF\n\n```bash\n$ awk '{ print }'\nthis is\nthis is\nnew file\nnew file\nend now^D\nend now\n^C\n$\n```\n\n<br>\n\n### `-F` | input field separators\n\n<br>\n\nTo get unique URLs from a list.\n\n```bash\ncat <<EOF | awk -F/ '{print $3}' | sort | uniq\nhttps://aws.amazon.com/ec2\nhttps://example.org/page\nhttp://example.org/login\nhttps://sub.example.org/home\nEOF\n```\n\nOutput\n\n```bash\naws.amazon.com\nexample.org\nsub.example.org\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_003_chage/ReadMe.md",
    "content": "# chage\n\n## NAME\n\nchage - change user password expiry information\n\n## SYNOPSIS\n\n> chage [options] user\n\n## OPTIONS\n\n* -l, --list\n  * Show account aging information.\n  \n## EXAMPLE\n\n* To get the password expiry information of the current user using the system, you can use\n\n```bash\nchage -l $USER\n.\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_004_chmod/ReadMe.md",
    "content": "# chmod\n\n## NAME\n\nchmod -- change file modes or Access Control Lists\n\n## EXAMPLES\n\n```bash\nchmod 644 /home/looker/.ssh/id_rsa.pub\n.\n```\n\n### To recursively sets the group permissions of everything inside the `/test` directory (and the directory itself) to match the owner's permissions\n\n```bash\n$ chmod -R g=u /test\n.\n```\n\n- `-R`: This flag makes the command recursive. This means the command will be applied not only to `/test` itself but also to all its subdirectories, sub-subdirectories, and so on, as well as all files within those directories.\n\n- `g=u`: This is the key part of the command that specifies how permissions should be changed:\n  - `g`: Represents the group's permissions.\n  - `u`: Represents the user's (or owner's) permissions.\n  - `=`: Sets the group's permissions to be the same as the user's permissions.\n- So, `g=u` means \"set the group's permissions to be the same as the user's permissions for the given file or directory.\n- `/test`: This is the target directory on which the command is applied.\n\nIn a practical example, if there's a file inside `/test` with permissions `rwxr-----` (read, write, execute for the owner, and no permissions for the group and others), after executing the command, the file's permissions would change to `rwxrwx---` (giving read, write, execute permissions for both the owner and the group).\n\nThis operation is useful when you want to ensure that a group (often a special or system group) has the same access permissions as the owner of a file or directory.\n\n### To add read, write, and conditional execute permissions for the group on the `/some/directory`` and all its contents\n\n```bash\n$ chmod -R g+rwX /some/directory\n.\n```\n\n- `-R`: This option stands for \"recursive.\" When specified, the command will apply the given permissions to the target directory and all its contents (including subdirectories and files).\n\n- `g+rwX`: This is the key part where permissions are being modified:\n  - `g`: Stands for \"group.\" It indicates that the permission changes will apply to the group ownership of the file/directory.\n  - `+`: This denotes that we're adding the permissions that follow.\n  - `rw`: Stands for \"read\" and \"write.\" So, we're adding read and write permissions for the group.\n  - `X`: The capital \"X\" is a special permission in `chmod`. It stands for \"execute/search only if the file is a directory or already has execute permission for some user.\" This means, for files, the execute permission is set only if the file already had some form of execute permission. For directories (which use the execute bit to mean \"searchable\"), the execute/search permission is always set.\n\n- `/some/directory`: This is the target directory where the permissions will be applied.\n\nSo, the command `chmod -R g+rwX /some/directory` adds read, write, and conditional execute permissions for the group on the `/some/directory` and all its contents.\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_005_chown/ReadMe.md",
    "content": "# chown\n\n## NAME\n\nchown -- change file owner and group\n\n## DESCRIPTION\n\nThe chown utility changes the user ID and/or the group ID of the specified files.  Symbolic links named by arguments are silently left unchanged unless -h is used.\n\n## OPTIONS\n\nThe options are as follows:\n\n- `-R`\n  - Change the user ID and/or the group ID for the file hierarchies rooted in the files instead of just the files themselves.\n  \n## EXAMPLES\n\n### To change the ownership recursively\n\n```bash\nchown -R username:username /home/looker/.ssh/id_rsa.pub && chmod 644 /home/looker/.ssh/id_rsa.pub\n.\n```\n\n### To change the owner and group of files and directories\n\n```bash\n$ chown -R 1001:0 /some/directory\n.\n```\n\n- `-R`: This option makes the command recursive. This means the ownership changes will be applied not only to `/some/directory` itself but also to all of its subdirectories, sub-subdirectories, files within those directories, and so on.\n- `1001:0`: This specifies the new owner and group for the files/directories:\n  - `1001`: This is the user ID (UID) of the new owner. In this case, the user with UID `1001` will become the new owner.\n  - `0`: This is the group ID (GID) of the new group. The `0` GID typically corresponds to the `root` group.\n- `/some/directory`: This is the target directory where the ownership changes will be applied.\n\nIn essence, after executing this command, the user with UID `1001` will become the owner, and the `root` group (GID `0`) will become the group for the `/some/directory` and all its contents (due to the `-R` flag). This is a common operation in environments like OpenShift where containers might run with an arbitrary UID for security reasons but still need to have specific group permissions (often via the `root` group).\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_006_cksum/ReadMe.md",
    "content": "# cksum\n\n## NAME\n\ncksum, sum -- display file checksums and block counts\n\n## DESCRIPTION\n\nThe cksum utility writes to the standard output three whitespace separated fields for each input file.  These fields are a checksum CRC, the total number of octets in the file and the file name. If no file name is specified, the standard input is used and no file name is written.\n\nNOTE: Simple checksums, such as those produced by the cksum tool, are useful only for detecting accidental data corruption. It's not meant to protect against malicious alteration of a file. It's been proven that an attacker could carefully make changes to a file that would produce an identical cksum checksum. Therefore, if you need to be absolutely certain that a file is identical to the original, use a more powerful method. \n\n```bash\n$ cat testFile \nThis is test File.\n$ cksum testFile \n1130043953 19 testFile\n$ nano testFile \n$ cat testFile \nThis is test File.\n.\n$ cksum testFile \n3666249486 21 testFile\n$ \n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_007_clear/ReadMe.md",
    "content": "# clear\n\n[clear](https://man7.org/linux/man-pages/man1/clear.1.html)\n\n## NAME\n\nclear the terminal screen\n\n## SYNOPSIS\n\n> @CLEAR@ [-Ttype] [-V] [-x]\n\n## EXAMPLES\n\n- To clear the terminal screen\n\n```bash\n$ clear\n.\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_008_cp/ReadMe.md",
    "content": "# cp\n\n## NAME\n\ncp -- copy files\n\n## DESCRIPTION\n\n- In the first synopsis form, the cp utility copies the contents of the source_file to the target_file.  \n- In the second synopsis form, the contents of each named source_file is copied to the destination target_directory.  The names of the files themselves are not changed. \n\n## OPTIONS\n\nThe following options are available:\n\n- `-R`\n  - If source_file designates a directory, cp copies the directory and the entire subtree connected at that point.  \n  - If the source_file ends in a /, the contents of the directory are copied rather than the directory itself. \n  - This option also causes symbolic links to be copied.  \n  - Created directories have the same mode as the corresponding source directory, unmodified by the process' umask.\n  - In -R mode, cp will continue copying even if errors are detected.\n  - Note that cp copies hard-linked files as separate files.  If you need to preserve hard links, consider using tar(1), cpio(1), or pax(1) instead.\n- -p\n  - same as --preserve=mode,ownership,timestamps\n- --preserve[=ATTR_LIST]\n  - preserve the specified attributes (default: mode,ownership,timestamps), if possible additional attributes: context, links, xattr, all\n- -f, --force\n  - if an existing destination file cannot be opened, remove it and try again\n\n## EXAMPLES\n\n- Run the following command on the terminal\n\n> cp -R {source-path} {destination-path}\n\n```bash\ncp -R /Users/asr000p/workspace/*.jar $pwd\n.\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_009_crontab/ReadMe.md",
    "content": "# crontab\n\n## NAME\n\ncrontab -- maintain crontab files for individual users (V3)\n\nNOTE\n\nYou should have a empty line at the end of crontab to work on Red Hat linux boxes.\n\n## DESCRIPTION\n\nThe crontab utility is the program used to install, deinstall or list the tables used to drive the cron(8) daemon in Vixie Cron.  \nEach user can have their own crontab, and they are not intended to be edited directly.\n\nThe syntax of writing crons is:\n\n> 1 2 3 4 5 /path/to/command arg1 arg2\n\n> 1 2 3 4 5 /root/backup.sh\n\n```bash\nWhere,\n1: Minute (0-59)      ex 0 signifies 0th minute, 1 signifies 1st minute\n2: Hours (0-23)\n3: Day (0-31)\n4: Month (0-12 [12 == December])\n5: Day of the week(0-7 [7 or 0 == sunday])\n/path/to/command – Script or command name to schedule\n```\n\n## OPTIONS\n\n- -e\n  - This option is used to edit the current crontab using the editor specified by the VISUAL or EDITOR environment variables.  After you exit from the editor, the modified crontab will be installed automatically.\n\n- -l\n  - The current crontab will be displayed on standard output.\n\n## EXAMPLES\n\nTo edit or create your own crontab file, type the following command at the UNIX / Linux shell prompt:\n\n```bash\ncrontab -e\n```\n\nIf you wished to have a script named /root/backup.sh run every day at 3am, your crontab entry would look like as follows. \nAppend the following entry\n\n```bash\n0 3 * * * /root/backup.sh\n```\n\nSave and close the file.\n\nTo run /path/to/command five minutes after midnight, every day, enter\n\n```bash\n5 0 * * * /path/to/command\n```\n\nRun /root/scripts/perl/perlscript.pl at 23 minutes after midnight, 2am, 4am …, everyday, enter\n\n```bash\n23 0-23/2 * * * /root/scripts/perl/perlscript.pl\n```\n\nBy default the output of a command or a script (if any produced), will be email to your local email account. To stop receiving email output from crontab you need to append >/dev/null 2>&1. For example\n\n```bash\n0 3 * * * /root/backup.sh >/dev/null 2>&1\n```\n\nTo mail output to particular email account let us say vivek@nixcraft.inyou need to define MAILTO variable as follows\n\n```bash\nMAILTO=\"youremail@domain.com\"\n0 3 * * * /root/backup.sh >/dev/null 2>&1\n```\n\nTo set up a cronjob for periodic deletion of log files which have not been modified since last 25 days.\n\n```bash\n12 12 * * * find /app/endeca/PlatformServices/workspace/logs -mtime +25 -exec rm -rf {} \\; >>/app/clearLogs.log 2>&1\n```\n\nTo list all your cron jobs\n\n```bash\ncrontab -l\ncrontab -u username -l\n```\n\nTo remove or erase all crontab jobs, use the following command\n\n```bash\n# delete the current cron job #\ncrontab -r\n```\n\ndelete the job for specific user. Must be run as root user\n\n```bash\ncrontab -r -u username\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_010_curl/ReadMe.md",
    "content": "# curl\n\n- [curl](#curl)\n  - [NAME](#name)\n  - [EXAMPLES](#examples)\n    - [vkso | -H options | verbose | insecure | silent | output | headers](#vkso---h-options--verbose--insecure--silent--output--headers)\n    - [-u -T | user | upload](#-u--t--user--upload)\n    - [Get your public IP](#get-your-public-ip)\n    - [To test a request to a server as if it came from the browser with the same Host header | -H | -k](#to-test-a-request-to-a-server-as-if-it-came-from-the-browser-with-the-same-host-header---h---k)\n    - [--resolve | force resolve to IP | -H | --cacert | Root CA | --cert | --key](#--resolve--force-resolve-to-ip---h----cacert--root-ca----cert----key)\n    - [To get only the status code using curl | -s | silent | -o | output | -w | write out | http\\_code](#to-get-only-the-status-code-using-curl---s--silent---o--output---w--write-out--http_code)\n    - [-L | --location | follow redirect | -I | --head | Fetch headers only](#-l----location--follow-redirect---i----head--fetch-headers-only)\n    - [-o | output | download](#-o--output--download)\n    - [-f | --fail | fail silently](#-f----fail--fail-silently)\n\n## NAME\n\ncurl - transfer a URL\n\n## EXAMPLES\n\n### vkso | -H options | verbose | insecure | silent | output | headers\n\n```bash\n$ curl -vkso /dev/null 'https://121.170.212.70/healthcheck/healthcheck.htm' -H'X-test-Debug: 1' -H'Host: test.groceries.org.com'\n.\n```\n\n### -u -T | user | upload\n\nUsing curl to deploy the artifact in tomcat\n\n```bash\nexport DEPLOY_SOURCE_DIR=/apps/home/servers/Tomcat/deploy\nexport TOMCAT_USER=username\nexport TOMCAT_PASSWORD=userpassword\nexport TOMCAT_HOST=localhost\nexport TOMCAT_PORT=9090\n\ncurl -v -u $TOMCAT_USER:$TOMCAT_PASSWORD -T $DEPLOY_SOURCE_DIR/artifact.war http://$TOMCAT_HOST:$TOMCAT_PORT/manager/text/deploy?path=/offer\n```\n\n### Get your public IP\n\nAlso you can actually get your public IP by running following command\n\n```bash\n# Tested on mac\ncurl ifconfig.me\n```\n\n### To test a request to a server as if it came from the browser with the same Host header | -H | -k\n\nTo test a request to a server as if it came from the browser with the same Host header\n\n```bash\n# let's say you have port-forwarded a service to your local on port 8080 using kubectl port-forward\n# This is the actual service responsible for responding to the user's request from browser when user hits http://test.example.com/svc_path_1\n# -k is to allow insecure request\ncurl -H 'Host: test.example.com' http://localhost:svc_path_1 -kv\n```\n\n### --resolve | force resolve to IP | -H | --cacert | Root CA | --cert | --key\n\nSend an HTTPS request to access the httpbin service through HTTPS:\n\n```bash\n## https://istio.io/latest/docs/tasks/traffic-management/ingress/secure-ingress/#configure-a-tls-ingress-gateway-for-a-single-host\n\n# This command uses curl to send a verbose HTTPS request to the httpbin service, specifically to the /status/418 endpoint. It manually sets the Host header to httpbin.example.com to mimic requests to this domain. The --resolve option forces curl to resolve httpbin.example.com to the specified $INGRESS_HOST IP address at the $SECURE_INGRESS_PORT, effectively directing the request to the Istio ingress gateway. The --cacert option specifies the root CA certificate (example.com.crt), allowing curl to trust the self-signed certificate used by the ingress gateway. This command is crucial for testing secure HTTPS access to services managed by Istio, ensuring the routing and SSL/TLS configuration works as expected.\n\n# The --cacert option is used to specify the CA certificate that curl should trust, enabling it to verify the self-signed certificate presented by the server during the SSL/TLS handshake.\n\n# You have the CA certificate locally present\n\ncurl -v -HHost:httpbin.example.com --resolve \"httpbin.example.com:$SECURE_INGRESS_PORT:$INGRESS_HOST\" \\\n  --cacert example_certs1/example.com.crt \"https://httpbin.example.com:$SECURE_INGRESS_PORT/status/418\"\n```\n\nPass a client certificate and private key to curl. Pass your client’s certificate with the --cert flag and your private key with the --key flag to curl:\n\n```bash\n# https://istio.io/latest/docs/tasks/traffic-management/ingress/secure-ingress/\ncurl -v -HHost:httpbin.example.com --resolve \"httpbin.example.com:$SECURE_INGRESS_PORT:$INGRESS_HOST\" \\\n  --cacert example_certs1/example.com.crt --cert example_certs1/client.example.com.crt --key example_certs1/client.example.com.key \\\n  \"https://httpbin.example.com:$SECURE_INGRESS_PORT/status/418\"\n```\n\n### To get only the status code using curl | -s | silent | -o | output | -w | write out | http_code\n\n```bash\ncurl -s -o /dev/null -w \"%{http_code}\" http://google.com\n```\n\nOutput\n\n```bash\n301\n```\n\n### -L | --location | follow redirect | -I | --head | Fetch headers only\n\n```bash\ncurl http://google.com -L -I\n```\n\nOutput\n\n```bash\nHTTP/1.1 301 Moved Permanently\n..\n..\nHTTP/1.1 200 OK\n```\n\n### -o | output | download\n\n```bash\ncurl -Lo /usr/local/bin/kubectl https://dl.k8s.io/release/v1.25.0/bin/linux/amd64/kubectl\n```\n\n### -f | --fail | fail silently\n\n```bash\ncurl -f https://example.com/nonexistent-page\n```\n\nOutput\n\n```bash\ncurl: (22) The requested URL returned error: 404\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_011_cut/ReadMe.md",
    "content": "# cut\n\n- [cut](https://man7.org/linux/man-pages/man1/cut.1.html)\n\n## NAME\n\ncut - remove sections from each line of files\n\n## SYNOPSIS\n\n> cut [OPTION]... [FILE]...\n\n## DESCRIPTION\n\nPrint selected parts of lines from each FILE to standard output. \n\n## OPTIONS\n\n- -b, --bytes=LIST\n  - select only these bytes\n- -c, --characters=LIST\n  - select only these character\n- -d, --delimiter=DELIM\n  - use DELIM instead of TAB for field delimiter\n- -f, --fields=LIST\n  - select only these fields;  \n     also print any line that contains no delimiter character, unless the -s option is specified\n- -n\n  - with -b: donât split multibyte characters\n- --complement\n  - complement the set of selected bytes, characters or fields.\n- -s, --only-delimited\n  - do not print lines not containing delimiters\n- --output-delimiter=STRING\n  - use STRING as the output delimiter the default is to use the input delimiter\n- --help \n  - display this help and exit\n- --version\n  - output version information and exit\n\n## EXAMPLES\n\n```bash\n$ df -kh .|cut -d'%' -f 1|awk '{print $NF}'|tail -1\n.\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_012_df/ReadMe.md",
    "content": "# df\n\n## NAME\n\ndf -- display free disk space\n\n## SYNOPSIS\n\n> df [-b | -h | -H | -k | -m | -g | -P] [-ailn] [-t] [-T type] [file | filesystem ...]\n\nDESCRIPTION\n\nThe df utility displays statistics about the amount of free disk space on the specified filesystem or on the filesystem of which file is a part.  \nValues are displayed in 512-byte per block counts. \nIf neither a file or a filesystem operand is specified, statistics for all mounted filesystems are displayed (subject to the -t option below).\n\n## OPTIONS\n\nThe following options are available:\n\n* -a\n* -h\n  * \"Human-readable\" output.  \n      Use unit suffixes: Byte, Kilobyte, Megabyte, Gigabyte, Terabyte and Petabyte in order to reduce the number of digits to three or less using base  2 for sizes.\n* -T\n  * Only print out statistics for filesystems of the specified types.\n      More than one type may be specified in a comma separated list.\n* -k\n      Use 1024-byte (1-Kbyte) blocks, rather than the default.\n* -m\n      Use 1048576-byte (1-Mbyte) blocks rather than the default.\n\n## EXAMPLES\n\n* Check the file system disk usage of current file system of logged in user\n\n```bash\ndf -kh .\n```\n\n* Display information of all file system disk space usage\n\n```bash\ndf -a\n```\n\n* Show disk space usage in human readable format\n\n```bash\ndf -h\n```\n\n* Display information of /home file system\n\n```bash\ndf -hT /home\n```\n\n* Display information of file system in bytes\n\n```bash\ndf -k\n```\n\n* Display information of file system in mb\n\n```bash\ndf -m\n```\n\n* Display information of file system in gb\n\n```bash\ndf -h\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_013_diff/ReadMe.md",
    "content": "\n# diff\n\n[diff](https://man7.org/linux/man-pages/man1/diff.1.html)\n\n## NAME\n\ndiff - compare files line by line\n\n## SYNOPSIS\n\n> diff [OPTION]... FILES\n\n## DESCRIPTION\n\nCompare FILES line by line.\n\n## EXAMPLES\n\nWhen you want to check the difference in two files in linux system\n\n```bash\n$ diff /etc/kubernetes/manifests/kube-apiserver.yaml /var/answers/kube-apiserver.yaml\n22c22\n<     - --etcd-cafile=/etc/kubernetes/pki/ca.crt\n---\n>     - --etcd-cafile=/etc/kubernetes/pki/etcd/ca.crt\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_014_dig/ReadMe.md",
    "content": "# dig\n\n[dig](https://TBD/man/1/dig)\n\n## NAME\n\ndig - DNS lookup utility\n\n## DESCRIPTION\n\ndig (domain information groper) is a flexible tool for interrogating DNS name servers.\nIt performs DNS lookups and displays the answers that are returned from the name server(s) that were queried.\nUnless it is told to query a specific name server, dig will try each of the servers listed in /etc/resolv.conf.\nWhen no command line arguments or options are given, dig will perform an NS query for \".\" (the root).\nAs mentioned in synopsis\nserver\nIs the name or IP address of the name server to query.\nThis can be an IPv4 address in dotted-decimal notation or an IPv6 address in colon-delimited notation.\nWhen the supplied server argument is a hostname, dig resolves that name before querying that name server.\nIf no server argument is provided, dig consults /etc/resolv.conf and queries the name servers listed there.\nThe reply from the name server that responds is displayed.\nname\nIs the name of the resource record that is to be looked up.\ntype\nIndicates what type of query is required -- ANY, A, MX, SIG, etc.  \nType can be any valid query type.\nIf no type argument is supplied, dig will perform a lookup for an A record.\n\n## OPTIONS\n\n- +[no]trace\n  - Toggle tracing of the delegation path from the root name servers for the name being looked up.\n      Tracing is disabled by default.\n      When tracing is enabled, dig makes iterative queries to resolve the name being looked up.\n      It will follow referrals from the root servers, showing the answer from each server that was used to resolve the lookup.\n- -t\n\n  - The -t option sets the query type to type\n\nOUTPUT EXPLANATION\n\n```bash\n$ dig example.com\n\n; <<>> DiG 9.8.3-P1 <<>> example.com\n;; global options: +cmd\n;; Got answer:\n;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6033\n;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0\n\n;; QUESTION SECTION:\n;example.com. IN A\n\n;; ANSWER SECTION:\nexample.com. 19727 IN A 93.184.216.34\n\n;; Query time: 8 msec\n;; SERVER: 172.30.93.117#53(172.30.93.117)\n;; WHEN: Sat Jun  9 15:59:50 2018\n;; MSG SIZE  rcvd: 45\n```\n\n```bash\n; <<>> DiG 9.8.3-P1 <<>> example.com\n```\n\nThe first line of the DIG indicates what version of the utility is currently installed, and the query that was invoked.\n\n```bash\n;; global options: +cmd\n```\n\nDefault instance of DIG was set up to display the first line of the response.\n\n```bash\n;; Got answer:\n;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6033\n;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0\n```\n\nGot an answer, hooray! The first part of the answer is the header, which has been clearly marked up with all manner of operators.\n\nThe opcode is the action that DIG took, in this case a query.\n\nStatus is an important one to note; in this case, there was no error reported.\n\nThis field may show one of the following statuses when a query is invoked:\n\n- NOERROR - Everything's cool. The zone is being served from the requested authority without issues.\n- SERVFAIL - The name that was queried exists, but there's no data or invalid data for that name at the requested authority.\n- NXDOMAIN - The name in question does not exist, and therefore there is no authoritative DNS data to be served.\n- REFUSED - Not only does the zone not exist at the requested authority, but their infrastructure is not in the business of serving things that don't exist at all.\n\nNext line starts out with flags - these are options that can be set to determine which sections of the answer get printed, or determine the timeout and retry strategies.\n\nThe subsequent fields, Query, Answer, Authority and Additional provide the count of results for the DIG that was performed.\n\nHere note that AUTHORITY=0 as this is not an authoritative an\n\n```bash\n;; QUESTION SECTION:\n;example.com. IN A\n```\n\nThe question section reaffirms what you went looking for - in this case, DIG went looking for an IPv4 address (A Record) at example.com.\n\n```bash\n;; ANSWER SECTION:\nexample.com. 19727 IN A 93.184.216.34\n\n;; Query time: 8 msec\n;; SERVER: 172.30.93.117#53(172.30.93.117)\n;; WHEN: Sat Jun  9 15:59:50 2018\n;; MSG SIZE  rcvd: 45\n```\n\nWe see that example.com, with a TTL of 19727 seconds has an A record - 93.184.216.34.\n\nQuery time shows how long it took to get the DNS response back from the server, which is listed on the next line.\n\nYou can also see the exact moment in time that I requested this information, and how many bytes the response contained.\n\n## EXAMPLE\n\n- dig +trace\n\n```bash\n$ dig +trace www.example.com\n\n; <<>> DiG 9.8.3-P1 <<>> +trace www.example.com\n;; global options: +cmd\n. 85622 IN NS i.root-servers.net.\n. 85622 IN NS h.root-servers.net.\n. 85622 IN NS j.root-servers.net.\n. 85622 IN NS f.root-servers.net.\n. 85622 IN NS b.root-servers.net.\n. 85622 IN NS k.root-servers.net.\n. 85622 IN NS e.root-servers.net.\n. 85622 IN NS a.root-servers.net.\n. 85622 IN NS d.root-servers.net.\n. 85622 IN NS l.root-servers.net.\n. 85622 IN NS c.root-servers.net.\n. 85622 IN NS g.root-servers.net.\n. 85622 IN NS m.root-servers.net.\n;; Received 228 bytes from 172.30.93.117#53(172.30.93.117) in 2748 ms\n\ncom. 172800 IN NS l.gtld-servers.net.\ncom. 172800 IN NS k.gtld-servers.net.\ncom. 172800 IN NS e.gtld-servers.net.\ncom. 172800 IN NS a.gtld-servers.net.\ncom. 172800 IN NS h.gtld-servers.net.\ncom. 172800 IN NS c.gtld-servers.net.\ncom. 172800 IN NS f.gtld-servers.net.\ncom. 172800 IN NS b.gtld-servers.net.\ncom. 172800 IN NS m.gtld-servers.net.\ncom. 172800 IN NS i.gtld-servers.net.\ncom. 172800 IN NS d.gtld-servers.net.\ncom. 172800 IN NS j.gtld-servers.net.\ncom. 172800 IN NS g.gtld-servers.net.\n;; Received 493 bytes from 192.5.5.241#53(192.5.5.241) in 2976 ms\n\nexample.com. 172800 IN NS a.iana-servers.net.\nexample.com. 172800 IN NS b.iana-servers.net.\n;; Received 169 bytes from 192.42.93.30#53(192.42.93.30) in 871 ms\n\nwww.example.com. 86400 IN A 93.184.216.34\nexample.com. 86400 IN NS a.iana-servers.net.\nexample.com. 86400 IN NS b.iana-servers.net.\n;; Received 97 bytes from 199.43.135.53#53(199.43.135.53) in 221 ms\n```\n\n- Similar to above example we can get an authoritative answer if we pass the dns server also\n   Here in response note that the AUTHORITY=1 and we specifically have an AUTHORITY section.\n\n```bash\ndig example.com @dns1.p01.nsone.net                                                  \n\n\n; <<>> DiG 9.8.3-P1 <<>> example.com @dns1.p01.nsone.net\n;; global options: +cmd\n;; Got answer:\n;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39561\n;; flags: qr aa rd; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0\n;; WARNING: recursion requested but not available\n\n;; QUESTION SECTION:\n;example.com. IN A\n\n;; AUTHORITY SECTION:\nexample.com. 3600 IN SOA dns1.p08.nsone.net. hostmaster.nsone.net. 1528386225 43200 7200 1209600 3600\n\n;; Query time: 228 msec\n;; SERVER: 198.51.44.1#53(198.51.44.1)\n;; WHEN: Sat Jun  9 16:42:19 2018\n;; MSG SIZE  rcvd: 94\n```\n\n- To validate TXT DNS record type\n\n```bash\n$ dig -t txt company.com\n; <<>> DiG 9.10.6 <<>> -t txt company.com\n;; global options: +cmd\n;; Got answer:\n;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35904\n;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1\n;; OPT PSEUDOSECTION:\n; EDNS: version: 0, flags:; udp: 4000\n;; QUESTION SECTION:\n;company.com.                 IN      TXT\n;; ANSWER SECTION:\ncompany.com.          99      IN      TXT     \"sitebook-domain-verification=5tasdfawer23lksdfjasof2349238qs177h9h\"\ncompany.com.          99      IN      TXT     \"lopgle-site-verification=22nceW2432fdsf41GDnKzLhZasdf3410N1gGv9DC__VPaMocsdfdsf342344MuphZsrU\"\n;; Query time: 134 msec\n;; SERVER: 192.168.0.100#53(192.168.0.100)\n;; WHEN: Tue Feb 02 16:53:43 +04 2021\n;; MSG SIZE  rcvd: 268\n```\n\n- Dig the ns records for a given domain\n\n```bash\n$ dig ns devopsk8.com            \n\n; <<>> DiG 9.10.6 <<>> ns devopsk8.com\n;; global options: +cmd\n;; Got answer:\n;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55429\n;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1\n\n;; OPT PSEUDOSECTION:\n; EDNS: version: 0, flags:; udp: 4096\n;; QUESTION SECTION:\n;devopsk8.com.                  IN      NS\n\n;; ANSWER SECTION:\ndevopsk8.com.           172800  IN      NS      ns-1991.awsdns-56.co.uk.\ndevopsk8.com.           172800  IN      NS      ns-1442.awsdns-52.org.\ndevopsk8.com.           172800  IN      NS      ns-157.awsdns-19.com.\ndevopsk8.com.           172800  IN      NS      ns-945.awsdns-54.net.\n\n;; Query time: 222 msec\n;; SERVER: 195.229.241.222#53(195.229.241.222)\n;; WHEN: Sat Mar 20 13:57:38 +04 2021\n;; MSG SIZE  rcvd: 178\n```\n\n- Dig soa record type for given domain\n\n```bash\n$ dig soa devopsk8.com                              \n\n; <<>> DiG 9.10.6 <<>> soa devopsk8.com\n;; global options: +cmd\n;; Got answer:\n;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25736\n;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1\n\n;; OPT PSEUDOSECTION:\n; EDNS: version: 0, flags:; udp: 4096\n;; QUESTION SECTION:\n;devopsk8.com.                  IN      SOA\n\n;; ANSWER SECTION:\ndevopsk8.com.           857     IN      SOA     ns-157.awsdns-19.com. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 86400\n\n;; Query time: 4 msec\n;; SERVER: 213.42.20.20#53(213.42.20.20)\n;; WHEN: Sat Mar 20 14:03:31 +04 2021\n;; MSG SIZE  rcvd: 119\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_015_dir/ReadMe.md",
    "content": "# dir\n\n## NAME\n\nbasename, dirname -- return filename or directory portion of pathname\n\n## DESCRIPTION\n\nThe basename utility deletes any prefix ending with the last slash `/` character present in string (after first stripping trailing slashes), and a suffix, if given.  \n\nThe suffix is not stripped if it is identical to the remaining characters in string.\n\nThe resulting filename is written to the standard output.\n\nThe dirname utility deletes the filename portion, beginning with the last slash `/` character to the end of string (after first stripping trailing slashes), and writes the result to the standard output.\n\n## EXAMPLES\n\nThe following line sets the shell variable FOO to /usr/bin.\n\n```bash\nFOO=`dirname /usr/bin/trail`\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_016_dos2unix/ReadMe.md",
    "content": "# dos2unix\n\n## NAME\n\ndos2unix - DOS/MAC to UNIX text file format converter \n\n## OPTIONS\n\n> [-hkqV] [--help] [--keepdate] [--quiet] [--version]\n\n## DESCRIPTION\n\nthe program that converts plain text files in DOS/MAC format to UNIX format. \n\n## EXAMPLE\n\nTo convert all the *.sh files in the current directory to unix format (from windows format)\n\n```bash\ndos2unix *.sh\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_017_du/ReadMe.md",
    "content": "# du\n\n## NAME\n\ndu -- display disk usage statistics\n\n## SYNOPSIS\n\n> du [-H | -L | -P] [-a | -s | -d depth] [-c] [-h | -k | -m | -g] [-x] [-I mask] [file ...]\n\n## DESCRIPTION\n\nThe du utility displays the file system block usage for each file argument and for each directory in the file hierarchy rooted in each directory argument.  \n\nIf no file is specified, the block usage of the hierarchy rooted in the current directory is displayed.\n\n### OPTIONS\n\n* -g\n  * Display block counts in 1073741824-byte (1-Gbyte) blocks.\n* -k\n  * Display block counts in 1024-byte (1-Kbyte) blocks.\n* -m\n  * Display block counts in 1048576-byte (1-Mbyte) blocks.\n* -a\n  * Display an entry for each file in a file hierarchy.\n* -h, --human-readable\n  * print sizes in human readable format (e.g., 1K 234M 2G)\n\n## EXAMPLE\n\n* To get filesize of all contents of current dir\n\n```bash\n-bash-3.2$ ls | xargs du -sh\n```\n\n* Human readable\n\n```bash\n[username@hostname ~]$ du -h\n96K     admin-scripts\n4.0K    claims.dll.xml\n6.5G    domains\n4.0K    info.txt\n4.0K    JMSFilestore-Core\n2.1M    JMSFilestore-mis\n```\n\n* With -a option\n\n```bash\ndu -a Certificates/\n2224 Certificates//UC-5QGFP1U1.pdf\n2216 Certificates//UC-B72CYCVK.pdf\n2216 Certificates//UC-SNGUC41Q.pdf\n6656 Certificates/\n```\n\n## Examples usage with other commands\n\n* To get all the large files with size greater than 1000MB\n\n```bash\nfind . -xdev -type f -size +1000M -exec du -sh {} + \n```\n\n* To get large files with their time stamp\n\n```bash\nfind . -xdev -type f -size +100M -exec du -sh {} + | awk {'print $2'} | xargs ls -ltrh | grep *.out \n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_018_export/ReadMe.md",
    "content": "# export\n\n- [export](#export)\n  - [DESCRIPTION](#description)\n  - [EXAMPLES](#examples)\n    - [To export and add new executable in PATH](#to-export-and-add-new-executable-in-path)\n    - [Exporting to child process](#exporting-to-child-process)\n\n## DESCRIPTION\n\nShell builtin commands are commands that can be executed within the running shell's process.\n\nThe export command is one of the bash shell BUILTINS commands, which means it is part of your shell.\n\nIn general, the export command marks an environment variable to be exported with any newly forked child processes and thus it allows a child process to inherit all marked variables.\n\n## EXAMPLES\n\n### To export and add new executable in PATH\n\n```bash\nunzip /app/apache-maven-3.5.3.zip -d /app; chown -R app:app /app; export PATH=$PATH:/app/apache-maven-3.5.3/bin \n```\n\n### Exporting to child process\n\n```bash\n# new variable called \"a\" is created to contain 2\n$ a=2\n$ echo $a\n2\n# we create a new child bash shell\n$ bash\n$ echo $a\n# no output, variable \"a\" no longer have any values defined\n```\n\nUsing export\n\n```bash\n# we have now used the export command to make the variable \"a\" to be exported when a new child process is created.\n$ export a=2\n$ bash\n$ echo $a\n2\n```\n\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_019_fc/ReadMe.md",
    "content": "# fc\n\n[fc](https://www.unix.com/man-page/linux/1/fc)\n\nThe fc utility shall list, or shall edit and re-execute, commands previously entered to an interactive sh.\n\n## Examples\n\n- Sometimes it's useful to copy the last used command to clipboard\n\n```bash\n$ echo \"hello\"\nhello\n$ fc -ln -1 | pbcopy\n.\n# CMD + V in terminal \n$ echo \"hello\"\n.\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_020_find/ReadMe.md",
    "content": "# find\n\n<br>\n\n## NAME\n\n<br>\n\nfind -- walk a file hierarchy\n\n- [find](#find)\n  - [NAME](#name)\n  - [EXAMPLES](#examples)\n    - [All files in a directory that have not been updated since last 300 days | -mtime || tail](#all-files-in-a-directory-that-have-not-been-updated-since-last-300-days---mtime--tail)\n    - [files that were last modified in last 180 mins | -mmin | names match the pattern | -name || grep | wc](#files-that-were-last-modified-in-last-180-mins---mmin--names-match-the-pattern---name--grep--wc)\n    - [files greater than 100M size | -size](#files-greater-than-100m-size---size)\n    - [find all files greater than 100MB and print their sizes | -size | -exec | -type f | -xdev || du](#find-all-files-greater-than-100mb-and-print-their-sizes---size---exec---type-f---xdev--du)\n    - [find files older than 1 month | -mtime | -print | -maxdepth](#find-files-older-than-1-month---mtime---print---maxdepth)\n    - [Move the files older than 30 days to a particular directory | -t | -exec | -maxdepth | -type f || mv](#move-the-files-older-than-30-days-to-a-particular-directory---t---exec---maxdepth---type-f--mv)\n    - [To find specific pom files and zip them into a file | -o -name | logicl OR || xargs | zip](#to-find-specific-pom-files-and-zip-them-into-a-file---o--name--logicl-or--xargs--zip)\n    - [To find all files with specific extension greater than 100MB, not been modified since last 3 days from current path | -size | -mtime | -type f | -name | -o](#to-find-all-files-with-specific-extension-greater-than-100mb-not-been-modified-since-last-3-days-from-current-path---size---mtime---type-f---name---o)\n    - [To print all \\*.pom.xml files containing the keyword | -exec | -print | -name | -exec || egrep](#to-print-all-pomxml-files-containing-the-keyword---exec---print---name---exec--egrep)\n    - [To print all \\*.xml files containing keyword \"insert into gen\\_mst\\_rpt\" except the ones with \"insert into gen\\_mst\\_rpt\\_param\" || egrep](#to-print-all-xml-files-containing-keyword-insert-into-gen_mst_rpt-except-the-ones-with-insert-into-gen_mst_rpt_param--egrep)\n    - [-mtime | -type f | -name | -o || for | do](#-mtime---type-f---name---o--for--do)\n    - [Replace currentstring with newstring in all regular files in the current directory](#replace-currentstring-with-newstring-in-all-regular-files-in-the-current-directory)\n    - [To find all `*.png` files in the current directory and its subdirectories](#to-find-all-png-files-in-the-current-directory-and-its-subdirectories)\n    - [To find all files `*using_dashboard*` in their path in the current directory and its subdirectories](#to-find-all-files-using_dashboard-in-their-path-in-the-current-directory-and-its-subdirectories)\n    - [To find the absolute paths all folders that start with `task_*`](#to-find-the-absolute-paths-all-folders-that-start-with-task_)\n\n<br>\n\n## EXAMPLES\n\n<br>\n\nFollowing are some examples\n\n<br>\n\n### All files in a directory that have not been updated since last 300 days | -mtime || tail\n\n<br>\n\n`-mtime` in the `find` command is used to search for files based on the number of days since they were last modified; `-mtime +300` finds files modified more than 300 days ago.\n\n```bash\nfind home/os_and_concepts/commands/taskset_commands_os_and_concepts -mtime +300 -exec ls  {} \\; | tail -n 2\n```\n\nOutput\n\n```bash\nReadMe.md\nhome/os_and_concepts/commands/taskset_commands_os_and_concepts/task_016_dos2unix/ReadMe.md\n```\n\n<br>\n\n### files that were last modified in last 180 mins | -mmin | names match the pattern | -name || grep | wc\n\n<br>\n\nFor mmin\n\n```bash\nfind $HOME/.BUILD_SCRIPTS_AREA/  -mmin -180 -name \"*-bld.lock\" | grep \"$BLD_LOCK\" | wc -l\n```\n\n<br>\n\n### files greater than 100M size | -size\n\n<br>\n\nTo find all the files which are greater than 100M size in $HOME path\n\n```bash\nfind $HOME -size +100M | grep \"/logs/\" \n```\n\nOutput\n\n```bash\n/username/domains/test.prd.webDomain/servers/test/logs/test.out00006 \n```\n\n<br>\n\n### find all files greater than 100MB and print their sizes | -size | -exec | -type f | -xdev || du\n\n<br>\n\nTo find the size of all files present in current directory which are greater than 100MB\n\n- `-xdev`: Prevents `find` from traversing into directories that are on different file systems or devices.\n- `-type f`: Restricts the search to regular files (not directories or other types of files).\n- `-size +100M`: Searches for files larger than 100 megabytes.\n\n```bash\nfind . -xdev -type f -size +100M -exec du -sh {} +\n```\n\nOutput\n\n```bash\n374M    ./apache-tomcat-7.0.34/logs/catalina.out \n113M    ./sonar/sonarqube-5.5.zip \n107M    ./tmp-02082016/.jenkins/plugins.zip \n```\n\nTo find all files which are greater than 50KB size in the current directory and print their sizes\n\n```bash\nfind . -xdev -type f -size +50k -exec du -sh {} +\n```\n\n<br>\n\n### find files older than 1 month | -mtime | -print | -maxdepth\n\n<br>\n\nFind all the files in current directory which are older than 1 month\n\n- `-maxdepth 1`: Limits the search to the current directory and does not descend into subdirectories.\n- `-type f`: Restricts the search to regular files (not directories or other types of files).\n- `-mtime +30`: Searches for files that were last modified more than 30 days ago.\n- `-print`: Outputs the full path of each file found that matches the criteria.\n\n```bash\nfind ./ -maxdepth 1 -type f -mtime +30 -print \n```\n\n<br>\n\n### Move the files older than 30 days to a particular directory | -t | -exec | -maxdepth | -type f || mv\n\n<br>\n\nMove the files older than 30 days to a particular directory\n\n- `-t`: Specifies the target directory where the files should be moved.\n\n```bash\n$ mkdir tmp\n.\n$ find ./ -maxdepth 1 -type f -mtime +30 -exec mv -t ./tmp/ {} + \n.\n$ rm -rf tmp\n.\n```\n\n<br>\n\n### To find specific pom files and zip them into a file | -o -name | logicl OR || xargs | zip\n\n<br>\n\n- `-name Build-2019-03-09-23-38-pom-090319.xls -o -name Build-2019-03-12-23-05-pom-120319.xls -o -name Build-2019-03-13-07-46-pom-130319.xls`: Searches for files matching any of these specified names, with `-o` (logical OR) separating each name.\n- `| xargs zip -r 123.zip`: Uses `xargs` to pass the found files as arguments to the `zip` command, which recursively (-r) adds these files to a ZIP archive named `123.zip`.\n\n```bash\nfind . -name Build-2019-03-09-23-38-pom-090319.xls -o -name Build-2019-03-12-23-05-pom-120319.xls -o -name Build-2019-03-13-07-46-pom-130319.xls | xargs zip -r 123.zip\n```\n\n<br>\n\n### To find all files with specific extension greater than 100MB, not been modified since last 3 days from current path | -size | -mtime | -type f | -name | -o\n\n<br>\n\n- `-size +100M`: Searches for files larger than 100 megabytes.\n- `-mtime +3`: Searches for files that were last modified more than 3 days ago.\n- `-type f`: Restricts the search to regular files (not directories or other types of files).\n- `\\( -name \"*.log\" -o -name \"*.txt\" -o -name \"*.out\" \\)`: Groups the name conditions to search for files ending with `.log`, `.txt`, or `.out` using logical OR (`-o`).\n\n```bash\nfind . -size +100M -mtime +3 -type f \\( -name \"*.log\" -o -name \"*.txt\" -o -name \"*.out\" \\)\n```\n\n<br>\n\n### To print all *.pom.xml files containing the keyword | -exec | -print | -name | -exec || egrep\n\n<br>\n\n```bash\nfind . -name \"*pom.xml\" -exec egrep -n -A 2 \"<artifactId>ns-exports-interfaces</artifactId>\" '{}' \\; -print\n```\n\n<br>\n\n### To print all *.xml files containing keyword \"insert into gen_mst_rpt\" except the ones with \"insert into gen_mst_rpt_param\" || egrep\n\n<br>\n\n- `-name \"*xml\"`: Searches for files whose names end with `xml`.\n- `-exec egrep -n -A 2 \"*insert into gen_mst_rpt *\" -v \"*insert into gen_mst_rpt_param*\" '{}' \\;`: Executes the `egrep` command on each found file, searching for lines containing \"insert into gen_mst_rpt\" (displaying the line number and the two lines following it) but excluding lines containing \"insert into gen_mst_rpt_param\".\n- `-print`: Prints the full path of each file that matches the `-name` condition and is processed by the `egrep` command.\n\n```bash\nfind . -name \"*xml\" -exec egrep -n -A 2 \"*insert into gen_mst_rpt *\" -v \"*insert into gen_mst_rpt_param*\" '{}' \\; -print \n```\n\n<br>\n\n### -mtime | -type f | -name | -o || for | do\n\n<br>\n\n- `find /apps/ap_frm/servers/apache-tomcat-8.5.38_pfm/logs/ -mtime +3 -type f \\( -name \"*.log\" -o -name \"*.txt\" -o -name \"*.out\" \\)`: Finds files in the specified directory that are older than 3 days (`-mtime +3`), are regular files (`-type f`), and match any of the specified extensions (`*.log`, `*.txt`, `*.out`).\n- `for j in $( ... )`: Iterates over the list of files found by the `find` command.\n- `do echo $j`: Prints the filename.\n- `ls -ltrh $j`: Lists details of the file (`-l` for long format, `-t` for sorting by modification time, `-r` for reverse order, `-h` for human-readable file sizes).\n- `done`: Ends the loop.\n\nThis command prints the filenames and their details for each file found that matches the criteria.\n\n```bash\nfor j in $( find /apps/ap_frm/servers/apache-tomcat-8.5.38_pfm/logs/ -mtime +3 -type f \\( -name \"*.log\" -o -name \"*.txt\" -o -name \"*.out\" \\) );do echo $j; ls -ltrh $j; done;\n```\n\n<br>\n\n### Replace currentstring with newstring in all regular files in the current directory\n\n<br>\n\n```bash\nfind . -type f -exec sed -i '' 's/currentstring/newstring/g' {} +\n```\n\n<br>\n\n### To find all `*.png` files in the current directory and its subdirectories\n\n<br>\n\n```bash\nfind . -name \"*.png\"\n```\n\n<br>\n\n### To find all files `*using_dashboard*` in their path in the current directory and its subdirectories\n\n<br>\n\n```bash\nfind . -path \"*using_dashboard*\"\n```\n\n### To find the absolute paths all folders that start with `task_*`\n\n```bash\nfind . -name \"task_*\" -type d | xargs -I % readlink -f %\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_021_firewall_cmd/ReadMe.md",
    "content": "# firewall-cmd\n\n- [firewall-cmd](https://firewalld.org/documentation/man-pages/firewall-cmd.html)\n\nfirewall-cmd is the command line client of the firewalld daemon. It provides an interface to manage the runtime and permanent configurations.\n\n## Examples\n\n- To list all the configuration settings for the public zone in your firewall. This can be useful to see what rules are currently in place and to help troubleshoot any issues with your firewall configuration.\n\n```bash\n$ cat /etc/os-release \nNAME=\"Red Hat Enterprise Linux Server\"\nVERSION=\"7.9 (Maipo)\"\nID=\"rhel\"\nID_LIKE=\"fedora\"\nVERSION_ID=\"7.9\"\n\n$ firewall-cmd --zone=public --list-all\npublic\n  target: default\n  icmp-block-inversion: no\n  interfaces: \n  sources: \n  services: dhcpv6-client ssh\n  ports: \n  protocols: \n  masquerade: no\n  forward-ports: \n  source-ports: \n  icmp-blocks: \n  rich rules: \n```\n\n- To list the ports that are currently configured in the firewall settings of your system.\n  \n```bash\n$ firewall-cmd --list-ports\n80/tcp 4589/udp\n```\n\n- lists the ports that are open or allowed for incoming connections in the \"public\" zone of your firewall configuration.\n\n```bash\n$ firewall-cmd --zone=public --list-ports\n80/tcp 4589/udp\n```\n\n- To add a permanent firewall rule to the \"public\" zone, allowing incoming connections on port 3002 TCP and on 3003 UDP. The --permanent option ensures that the rule persists across firewall reloads or system reboots.\n\n```bash\n$ firewall-cmd --zone=public --list-all\npublic\n  target: default\n  icmp-block-inversion: no\n  interfaces: \n  sources: \n  services: dhcpv6-client ssh\n  ports: \n  protocols: \n  masquerade: no\n  forward-ports: \n  source-ports: \n  icmp-blocks: \n  rich rules: \n\n# To add a permanent firewall rule to the \"public\" zone, allowing incoming TCP (Transmission Control Protocol) connections on port 3002 and UDP (User Datagram Protocol) connections on port 3003. The --permanent option ensures that the rule persists across firewall reloads or system reboots.\n$ firewall-cmd --zone=public --permanent --add-port=3002/tcp --add-port=3003/udp;\nsuccess\n\n# This command reloads the firewall configuration, applying any recent changes made to the firewall rules. The new rule added in the previous step will take effect after the reload.\n$ sudo firewall-cmd --reload\nsuccess\n\n$ firewall-cmd --zone=public --list-all\npublic\n  target: default\n  icmp-block-inversion: no\n  interfaces: \n  sources: \n  services: dhcpv6-client ssh\n  ports: 3002/tcp 3003/udp\n  protocols: \n  masquerade: no\n  forward-ports: \n  source-ports: \n  icmp-blocks: \n  rich rules: \n```\n\n- To list the services that are currently allowed or open in the \"public\" zone of your firewall configuration\n\n```bash\n# Allowing the ssh service means that your system can accept incoming SSH connections, allowing users to connect remotely and securely access the system's command-line interface.\n$ firewall-cmd --zone=public --list-services\nssh\n```\n\n- `rule family=\"ipv4\" destination address=\"10.0.0.24/32\" accept:` This rule states that for traffic in the IPv4 family, if the destination address matches \"10.0.0.24\" (you'd replace this with an actual IP), the firewall should accept the traffic. The \"/32\" means it's a single IP address you're specifying (in CIDR notation, /32 represents a single IPv4 address).\n\n```bash\n$ firewall-cmd --zone=public --list-all\npublic\n  target: default\n  icmp-block-inversion: no\n  interfaces: \n  sources: \n  services: dhcpv6-client ssh\n  ports: \n  protocols: \n  masquerade: no\n  forward-ports: \n  source-ports: \n  icmp-blocks: \n  rich rules:\n\n$ firewall-cmd --permanent --zone=public --add-rich-rule='\n   rule family=\"ipv4\"\n   destination address=\"10.0.0.24/32\"\n   accept'\n$ firewall-cmd --reload\nsuccess\nsuccess\n\n$ firewall-cmd --zone=public --list-all\npublic\n  target: default\n  icmp-block-inversion: no\n  interfaces: \n  sources: \n  services: dhcpv6-client ssh\n  ports: \n  protocols: \n  masquerade: no\n  forward-ports: \n  source-ports: \n  icmp-blocks: \n  rich rules: \n        rule family=\"ipv4\" destination address=\"10.0.0.24/32\" accept\n```\n\n- To remove the above rule (`rule family=\"ipv4\" destination address=\"x.x.x.x/32\" accept:`) from the firewall configuration, use the following commands:\n  - `--add-rich-rule`: This option allows you to add a rich rule, which is a rule that allows you more granular control over firewall decisions.\n\n```bash\n$ firewall-cmd --permanent --zone=public --remove-rich-rule='\n   rule family=\"ipv4\"\n   destination address=\"x.x.x.x./32\"\n   accept'\n$ firewall-cmd --reload\n```\n\n- `rule family=\"ipv4\" source address=\"10.0.0.24/18\" accept`: This is the rich rule you're adding. This rule states that for IPv4 traffic, if the source address falls within the \"10.0.0.24/18\" IP range, the firewall should accept the traffic. In CIDR notation, /18 represents a subnet mask of 255.255.192.0 and allows for 16,382 potential IP addresses.\n  - `--add-rich-rule`: This option allows you to add a rich rule, which is a rule that allows you more granular control over firewall decisions.\n\n```bash\n$ firewall-cmd --zone=public --list-all\npublic\n  target: default\n  icmp-block-inversion: no\n  interfaces: \n  sources: \n  services: dhcpv6-client ssh\n  ports: \n  protocols: \n  masquerade: no\n  forward-ports: \n  source-ports: \n  icmp-blocks: \n  rich rules: \n$ firewall-cmd --permanent --zone=public --add-rich-rule='\n   rule family=\"ipv4\"\n   source address=\"10.0.0.24/18\"\n   accept'\n$ firewall-cmd --reload\n$ firewall-cmd --zone=public --list-all\npublic\n  target: default\n  icmp-block-inversion: no\n  interfaces: \n  sources: \n  services: dhcpv6-client ssh\n  ports: \n  protocols: \n  masquerade: no\n  forward-ports: \n  source-ports: \n  icmp-blocks: \n  rich rules: \n        rule family=\"ipv4\" source address=\"10.0.0.24/18\" accept\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_022_free/ReadMe.md",
    "content": "# free\n\n## NAME\n\nfree - Display amount of free and used memory in the system\n\n## SYNOPSIS\n\n> free [-b | -k | -m] [-o] [-s delay ] [-t] [-V]\n\n## DESCRIPTION\n\nfree displays the total amount of free and used physical and swap memory in the system, as well as the buffers used by the  kernel.\n\nThe shared memory column should be ignored; it is obsolete.\n\n## OPTIONS\n\n* -b\n  * switch  displays the  amount of memory in bytes; the -k switch (set by default) displays it in kilobytes; the  -m switch displays it in megabytes.\n* -t\n  * switch displays a line containing the totals.\n* -o\n  * switch disables the display of a \"buffer adjusted\" line\n* -s\n  * switch activates continuous polling delay seconds apart.\n  * You may actually specify any floating  point number for delay, usleep(3) is used for microsecond resolution delay times.\n  \n```bash\n[username@hostname~]$ free -m\n             total       used free     shared buffers   cached\nMem:         48314 45509       2805 0 992      20808\n-/+ buffers/cache:      23708 24606\nSwap:         3999 264       3735\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_023_ftp/ReadMe.md",
    "content": "# ftp\n\n## NAME\n\nftp -- Internet file transfer program\n\n## DESCRIPTION\n\nftp is the user interface to the Internet standard File Transfer Protocol.  \n\nThe program allows a user to transfer files to and from a remote network site.\n\nThe last five arguments will fetch a file using the FTP or HTTP protocols, or by direct copying, into the current directory.  This is ideal for scripts. \n\n## OPTIONS\n\n* ls [remote-path [local-file]]\n  * A synonym for dir.\n* cd remote-directory\n  * Change the working directory on the remote machine to remote-directory.\n* get remote-file [local-file]\n  * Retrieve the remote-file and store it on the local machine.  If the local file name is not specified, it is given the same name it has on the remote machine, subject to alteration by the current case, ntrans, and nmap settings.  The current settings for type, form, mode, and structure are used while transferring the file.\n* lcd [directory]\n  * Change the working directory on the local machine.  If no directory is specified, the user's home directory is used.\n* lpwd\n  * Print the working directory on the local machine.\n* pwd\n  * Print the name of the current working directory on the remote machine.\n* delete remote-file\n  * Delete the file remote-file on the remote machine.\n* put local-file [remote-file]\n  * Store a local file on the remote machine.  If remote-file is left unspecified, the local file name is used after processing according to any ntrans or nmap settings  in naming the remote file. File transfer uses the current settings for type, format, mode, and structure.\n* bye\n  * Terminate the FTP session with the remote server and exit ftp.  An end of file will also terminate the session and exit.\n\n## EXAMPLES\n\nLogging in\n\n```bash\n$ ftp username@hostname\nTrying 2.16.1336.33...\nConnected to some_domain_name.\n220 Akamai Content Storage FTP Server\n331 Password required for hostname.\nPassword: \n230 User username logged in.\nRemote system type is UNIX.\nUsing binary mode to transfer files.\n```\n\nTo see the dir contents and to move into a directory\n\n```bash\nftp> ls\nftp> cd dirName\n```\n\nTo download a file\n\n```bash\nftp> get resume.pdf\nlocal: resume.pdf remote: resume.pdf\n229 Entering Extended Passive Mode (|||55093|)\n150 Opening BINARY mode data connection for 'resume.pdf' (53077 bytes).\n100% |*********************************************************************| 53077       12.58 KiB/s 00:00 ETA\n226 Transfer complete.\n53077 bytes received in 00:04 (12.57 KiB/s)\n```\n\nTo change to a local directory and print its path\n\n```bash\nftp> lcd /tmp\nLocal directory now: /tmp\nftp> lpwd\n/tmp\n```\n\nTo print the current directory on remote ftp server\n\n```bash\nftp> pwd\nRemote directory: /pub/FreeBSD\n```\n\nTo delete a file in current remote directory\n\n```bash\nftp> delete fileName\n```\n\nTo copy one file at a time from the local systems to the remote ftp server, enter:\n\n```bash\nftp> put fileNameOnLocal\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_024_git/ReadMe.md",
    "content": "# git\n\n- [git](#git)\n  - [NAME](#name)\n  - [DESCRIPTION](#description)\n  - [Useful aliases](#useful-aliases)\n  - [EXAMPLES](#examples)\n    - [clone](#clone)\n    - [init](#init)\n    - [pull - To pull the latest changes from `master`](#pull---to-pull-the-latest-changes-from-master)\n    - [push -- To push all the changes to the `master` branch](#push----to-push-all-the-changes-to-the-master-branch)\n    - [config -- Configuring Git Examples -- GIT\\_PAGER](#config----configuring-git-examples----git_pager)\n    - [rebase -- To rebase the changes](#rebase----to-rebase-the-changes)\n    - [remote -- origin](#remote----origin)\n      - [Common Scenarios for Multiple Remotes](#common-scenarios-for-multiple-remotes)\n    - [add -- To add a file to the staging area](#add----to-add-a-file-to-the-staging-area)\n    - [commit -- To commit the changes to the repository](#commit----to-commit-the-changes-to-the-repository)\n    - [push -- To push the changes to the remote repository](#push----to-push-the-changes-to-the-remote-repository)\n    - [status -- To check the status of the repository](#status----to-check-the-status-of-the-repository)\n    - [checkout -- To checkout a branch](#checkout----to-checkout-a-branch)\n    - [branch](#branch)\n    - [merge](#merge)\n    - [diff](#diff)\n    - [log](#log)\n    - [fetch -- To fetch the latest changes from the remote repository](#fetch----to-fetch-the-latest-changes-from-the-remote-repository)\n    - [reset -- To reset the changes](#reset----to-reset-the-changes)\n    - [grep](#grep)\n    - [bundle](#bundle)\n    - [tag](#tag)\n    - [ls-remote](#ls-remote)\n    - [To do a commit on particual date](#to-do-a-commit-on-particual-date)\n    - [rm](#rm)\n    - [rev-list | To get the commit-id associated with a git tag](#rev-list--to-get-the-commit-id-associated-with-a-git-tag)\n\n## NAME\n\ngit - the content tracker\n\n## DESCRIPTION\n\nGit is a fast, scalable, distributed revision control system with an unusually rich command set that provides both high-level operations and full access to internals.\n\n## Useful aliases\n\n```bash\nalias lc=\"git --no-pager log | head -n 1 | cut -c 8-15\"\nalias jj='f(){ gaa; gcmsg \"${1:-chore: update}\"; ggpush; }; f'\nalias ht=\"git --no-pager tag --points-at HEAD\"\nalias devtags=\"git --no-pager ls-remote --tags | egrep \"refs/tags/dev\" | awk {'print $2'} | sort -V | tail -n 2\"\nalias dlocal=\"git --no-pager branch --merged  | egrep -v master | xargs git branch -d\"\n```\n\n## EXAMPLES\n\n### clone\n\nWhen you clone a repository, Git automatically sets up a default remote named `origin`. This is the standard remote where your repository’s changes are pushed and fetched from.\n\n```bash\ngit clone <repo-url>\n```\n\n### init\n\n```bash\n# initialize local repo\ngit init\n```\n\n### pull - To pull the latest changes from `master`\n\n```bash\n# git pull origin <branch-name>\n# --ff-only : This option stands for \"fast-forward only.\" When you use this option, git pull will only complete if the changes can be merged into your local branch using a fast-forward merge. A fast-forward merge happens when there are no divergent commits between the local and remote branches, meaning your local branch can just be \"fast-forwarded\" to match the remote branch\ngit pull origin master --ff-only\n```\n\n- Fetch and merge changes on the remote server to your working directory:\n\n```bash\ngit pull\n```\n\n### push -- To push all the changes to the `master` branch\n\n```bash\ngit remote show origin\ngit add .\ngit status\ngit commit -m \"Name-for-this-commit\"\ngit push -u origin master\n```\n\nForce push local changes to remote branch (USE WITH CAUTION)\n\n```bash\n# the --force option overwrites the remote branch with your local one. (USE WITH CAUTION)\ngit push --force\n```\n\n- Pushes all of our local tags to the remote repository\n\n```bash\n#  Pushes all of our local tags to the remote repository\ngit push origin --tags\n```\n\n- To push a specific tag to remote\n  \n```bash\n# Push the tag to the remote repository named origin.\ngit push origin v1.0.0\n```\n\n### config -- Configuring Git Examples -- GIT_PAGER\n\n- To list the current `git config`, like the `user.name` and `user.email` with `--no-pager`\n\n```bash\ngit --no-pager config --list\n```\n\n```bash\nGIT_PAGER= git config --list\n```\n\n- To check currently set global config\n\n```bash\ngit --no-pager config --global --list\n```\n\n- To check currently set local config\n\n```bash\ngit --no-pager config --local --list\n```\n\n- Tell Git who you are, use `--global` if you want to set it globally, use `--local` if you want to set it for a specific repository\n\n```bash\ngit config --global user.name \"Sam Smith\"\n```\n\n```bash\ngit config --global user.email sam@example.com\n```\n\n- To check currently set git config\n\n```bash\ngit config user.name\n```\n\n```bash\ngit config user.email\n```\n\n- Signing commits with gpg key\n  - [docs](https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits)\n\n- To set the gpg format, use `--global` if you want to set it globally, use `--local` if you want to set it for a specific repository\n\n```bash\ngit config --local gpg.format openpgp\n```\n\n- To set the gpg key, use `--global` if you want to set it globally, use `--local` if you want to set it for a specific repository\n\n```bash\ngit config --local user.signingkey <your_gpg_key>\n```\n\n- To sign all commits by default, use `--global` if you want to set it globally, use `--local` if you want to set it for a specific repository\n\n```bash\ngit config --local commit.gpgsign true\n```\n\n- If you mac crashes, you might get errors like `gpg: Note: database_open xxxx waiting for lock (held by xxxx) ...`, [superuser.com » GPG stops doing anything on Mac](https://superuser.com/questions/1811518/gpg-stops-doing-anything-on-mac)\n\n```bash\n$ ls ~/.gnupg/public-keys.d/*.lock\n.\n$ mv /Users/<username>/.gnupg/public-keys.d/pubring.db.lock /Users/<username>/.gnupg/public-keys.d/pubring.db.lock_bkp\n```\n\n[github.blog » easier-builds-and-deployments-using-git-over-https-and-oauth](https://github.blog/2012-09-21-easier-builds-and-deployments-using-git-over-https-and-oauth/)\n\n- To replace any instance of `https://github.com/` with `https://$PAT:x-oauth-basic@github.com/` whenever you interact with a repository.\n- This can be particularly useful if you want to use HTTPS authentication with a PAT.\n\n```bash\ngit config --global url.\"https://$PAT:x-oauth-basic@github.com/\".insteadOf \"https://github.com/\"\n```\n\n- To configures Git to replace any instance of the SSH URL `ssh://git@github.com/` with the HTTPS URL containing your PAT `(https://$PAT:x-oauth-basic@github.com/)` whenever you interact with a repository.\n\n```bash\ngit config --global url.\"https://$PAT:x-oauth-basic@github.com/\".insteadOf \"ssh://git@github.com/\"\n```\n\n- Switch between Secure Channel and OpenSSL for Git's HTTPS transport by setting the http.sslBackend config variable to \"openssl\" or \"schannel\". [How do I configure Git to trust certificates from the Windows Certificate Store?](https://stackoverflow.com/questions/16668508/how-do-i-configure-git-to-trust-certificates-from-the-windows-certificate-store)\n\n```bash\ngit config --global http.sslBackend schannel\n```\n\n- To unset a config\n\n```bash\ngit config --global --unset user.name\n```\n\n### rebase -- To rebase the changes\n\n- How to change author of all commits from a particular commit [stackoverflow.com](https://stackoverflow.com/questions/3042437/how-can-i-change-the-commit-author-for-a-single-commit)\n  - For example, if your commit history is A-B-C-D-E-F with F as HEAD, and you want to change the author of C and D, then you would...\n\n```bash\nEDITOR=vim git rebase -i B\n```\n\n- Change the lines for both C and D from pick to edit\n- Exit the editor (for vim, this would be pressing Esc and then typing :wq).\n- Once the rebase started, it would first pause at C\n- You would then run the following commands\n\n```bash\n# To know your current author, you can go to recent commits URL and add .patch at the end. You should be signed in to see the details. Also you can run git log.\nEDITOR=vim git commit --amend --author=\"Author Name <email@address.com> --no-edit\n```\n\n- Then you would run\n\n```bash\ngit rebase --continue\n```\n\n- It would pause again at D\n- Continue with the same steps as above until you reach HEAD i.e., F\n- Once you are done, you can run\n\n```bash\ngit push -f\n```\n\n### remote -- origin\n\n#### Common Scenarios for Multiple Remotes\n\n**Forking a Repository**: When you fork a repository on GitHub (or another Git hosting service), you create a copy under your account. You might want to keep track of updates from the original repository (often called `upstream`) while pushing changes to your fork (`origin`).\n\n- `origin`: Your forked repository (e.g., `https://github.com/yourusername/repo.git`)\n- `upstream`: The original repository (e.g., `https://github.com/originalowner/repo.git`)\n\n- Incase you want to change the origin url then you can use the command\n\n```bash\n# To Check the existing origin\ngit remote show origin\n```\n\n```bash\n# To set the origin to a new remote, let's say the new origin is git@github.com:codeaprendiz/devops_prv.git \ngit remote set-url origin git@github.com:codeaprendiz/devops_prv.git\n```\n\n- If you haven't connected your local repository to a remote server, add the server to be able to push to it:\n\n```bash\ngit remote add origin <server>\n```\n\n- Let's say you forked a repository to contribute to it. Your configuration might look like this:\n  - Your fork (origin):\n\n  ```bash\n  git remote add origin https://github.com/yourusername/repo.git\n  ```\n\n  - Original repository (upstream):\n\n  ```bash\n  git remote add upstream https://github.com/originalowner/repo.git\n  ```\n\nWhen you are working on your fork, you can fetch changes from the original repository using `git fetch upstream` and push changes to your fork using `git push origin`.\n\n- To see all the remotes configured for your repository, use:\n\n```bash\ngit remote -v\n```\n\n- To delete all stale branches from local that have been deleted from remote [stackoverflow.com » Git remote branch deleted, but still it appears in 'branch -a'](https://stackoverflow.com/questions/5094293/git-remote-branch-deleted-but-still-it-appears-in-branch-a)\n\n```bash\ngit remote prune origin\n```\n\n### add -- To add a file to the staging area\n\n- Add one or more files to staging (index):\n\n```bash\ngit add <filename>\ngit add *\ngit add .\n```\n\n### commit -- To commit the changes to the repository\n\n- Commit changes to head (but not yet to the remote repository)\n\n```bash\ngit commit -m \"Commit message\"\n```\n\n- To amend the author of the most recent commit \n\n```bash\ngit commit --amend --author=\"Author Name <email@address.com>\" --no-edit\n```\n\n```bash\ngit push -f\n```\n\n### push -- To push the changes to the remote repository\n\n- To push changes to a specific remote, use `git push <remote-name> <branch-name>`\n\n```bash\ngit push origin master\ngit push upstream feature-branch\n```\n\n- Send changes to the master branch of your remote repository:\n\n```bash\ngit push origin master\n```\n\n- Push the branch to your remote repository, so others can use it:\n\n```bash\ngit push origin <branchname>\n```\n\n### status -- To check the status of the repository\n\n- List the files you've changed and those you still need to add or commit:\n\n```bash\ngit status\n```\n\n- To check the status of a particular file say `file1.txt` using `--porcelain` option. This option is useful when you want to use the output in a script or another program.\n\n```bash\ngit status --porcelain file1.txt\n```\n\nOutput will be like\n\n```bash\n M file1.txt\n```\n\n### checkout -- To checkout a branch\n\n- Create a new branch and switch to it:\n\n```bash\n# git checkout -b <branchname>\ngit checkout -b feature/branch1\n```\n\n- To checkout a given branch\n\n```bash\n# git checkout <branchname>\n# To checkout master\ngit checkout master\n```\n\n```bash\n# To checkout feature/branch1\ngit checkout feature/branch1\n```\n\n### branch\n\n- List all the branches in your repo, and also tell you what branch you're currently in:\n\n```bash\ngit branch\n```\n\n```bash\ngit --no-pager branch\n```\n\n```bash\n# for ZSH\ngb\n```\n\n- Delete the feature branch:\n\n```bash\ngit branch -d <branchname>\n```\n\n- To delete all branches `locally` that have been merged [stackoverflow](https://stackoverflow.com/questions/6127328/how-do-i-delete-all-git-branches-which-have-been-merged)\n\n```bash\ngit --no-pager branch --merged  | egrep -v \"master\" | xargs git branch -d\n```\n\n- To list all remote branches and checkout\n\n```bash\n# list all remote branches\ngit branch -r\n```\n\n```bash\n# to checkout branch1\ngit checkout branch1\n```\n\n### merge\n\n- Merge local `master` branch to local `branch1`\n\n```bash\n# This command merges changes from local master into your current branch (e.g., branch1). If there are any conflicts, you will need to resolve them manually. A merge commit will be created to signify the merge.\ngit merge master\n```\n\n- To merge a different branch into your active branch:\n\n```bash\ngit merge <branchname>\n```\n\n- To merge master to your current branch without rebasing\n\n```bash\n## This will fetch the latest changes from master and merge them into your current branch. If there are conflicts, you will be prompted to resolve them, and you will be asked to provide a commit message for the merge commit\ngit config pull.rebase false\n```\n\n```bash\ngit pull origin master\n```\n\n```bash\n# you will be asked to give a commit for the changes in your default editor, save and close the file\n# Push your changes to origin/branch1\ngit push -u origin branch1 # zsh alias | ggpush\n```\n\n- To merge master to your current branch with rebasing\n\n```bash\n## This will fetch the latest changes from master and reapply your local commits on top of these changes. It helps to maintain a linear project history.\ngit config pull.rebase true\n```\n\n```bash\n$ git pull origin master\n```\n\n```bash\n# Push your changes to origin/branch1\n$ git push -u origin branch1 # zsh alias | ggpush\n```\n\n### diff\n\n- View all the merge conflicts:\n\n```bash\ngit diff\n```\n\n### log\n\n- To check previous commit history\n\n```bash\ngit log\n```\n\n- To check history of a particual file say `file1.txt`\n\n```bash\ngit log -p -- file1.txt\n```\n\n### fetch -- To fetch the latest changes from the remote repository\n\n- Downloads updates (commits, branches, tags) from the remote repository to your local repository.\n- Does not automatically merge those changes into your current branch.\n- It updates the tracking branches (e.g., origin/main, origin/master, origin/feature-1) but leaves your working branch untouched.\n- Allows you to inspect the changes before deciding to merge them.\n\n```bash\ngit fetch\n```\n\nTo fetch updates from a specific remote, use `git fetch <remote>`:\n\n```bash\ngit fetch origin\n```\n\n```bash\ngit fetch upstream\n```\n\n### reset -- To reset the changes\n\nTo drop all your local changes and commits\n\n```bash\ngit reset --hard origin/master\n```\n\n```bash\n# or if already updated with origin\ngit reset --hard\n```\n\n- To un-commit the changes you have recently committed to local. Note the \"\\\" is due to the shell.\n\n```bash\ngit reset --soft HEAD\\^\n```\n\n- To permanently remove few commits from remote branch (USE WITH CAUTION) [stackoverflow link](https://stackoverflow.com/questions/3293531/how-to-permanently-remove-few-commits-from-remote-branch)\n  - Let's say the remote commits are in this order (D <- C <- B <- A)\n    - `B` is the last working commit\n    - So we want the remote to be in state ( B <- A )\n\n```bash\n# git reset --hard <last_working_commit_id>\n# This will make the remote to.           B <- A\ngit reset --hard B\n```\n\n```bash\ngit push --force\n```\n\n### grep\n\n- Search the working directory for foo():\n\n```bash\ngit grep \"foo()\"\n```\n\n### bundle\n\n- To check the size of you git repo\n\n```bash\ngit bundle create tmp.bundle --all\n```\n\n```bash\n$ du -sh tmp.bundle\n 19M    tmp.bundle\n```\n\n- To find the size of github repository locally [stackoverflow](https://stackoverflow.com/questions/8185276/find-size-of-git-repository)\n\n```bash\ngit bundle create tmp.bundle --all\n```\n\n```bash\ndu -sh tmp.bundle\n```\n\n### tag\n\n- To create a new tag and push to remote. You should be able to see the `tags` in `Releases` section of repository\n\n```bash\n# Creates a new tag named v1.0.0 at our current commit, typically used to mark a release.\ngit tag v1.0.0\n```\n\n```bash\n# Pushes all of our local tags to the remote repository named origin.\ngit push origin --tags\n```\n\n- To create a tag on commit ID `abcdef` and push to remote\n\n```bash\n# Creates a new tag named v1.0.0 at the commit specified by the commit ID (abcdef).\ngit tag v1.0.0 abcdef\n```\n\n```bash\n# Push the tag to the remote repository named origin.\ngit push origin v1.0.0\n```\n\n- To get the tag that points at HEAD\n\n```bash\ngit --no-pager tag --points-at HEAD\n```\n\n- To delete a tag\n\n```bash\n# To delete a tag locally\ngit tag -d v1.0.0\n```\n\n```bash\n# To delete a tag from remote\n$ git push origin :refs/tags/v1.0.0\n```\n\n### ls-remote\n\n```bash\n# To list all the tags in the repository\ngit ls-remote --tags\n```\n\n### To do a commit on particual date\n\n- To do a git commit on a particular date say 11th Dec 2023\n\n```bash\nGIT_AUTHOR_DATE=\"2023-12-11 21:00:56\" GIT_COMMITTER_DATE=\"2023-12-11 21:00:56\" git commit -m \"Commit for December 11th\"\n```\n\n### rm\n\n- To ignore all occurance of a file say `mvnw` from git (assuming it was commited previously and version tracked)\n\n```bash\n# To untrack a specific file without deleting it\ngit rm --cached <file-path>\n```\n\n```bash\n# Example for 'mvnw' files\ngit rm --cached **/mvnw\n# Then add the following to .gitignore\n# **/mvnw\n```\n\n- To ingnore all occurance of a folder `.mvn` from git (assuming it was commited previously and version controlled)\n\n```bash\n# To untrack everything under '.mvn'\n# Note, the -r that is required for recursive operation\ngit rm --cached **/.mvn -r\n\n# Then add the following to .gitignore\n# **/.mvn\n```\n\n### rev-list | To get the commit-id associated with a git tag\n\n[stackoverflow.com » How to tell which commit a tag points to in Git](https://stackoverflow.com/questions/1862423/how-to-tell-which-commit-a-tag-points-to-in-git)\n\nIf you want to find the commit associated with `dev-1.1` tag, you can use the following command\n\n```bash\ngit rev-list  -n 1 dev-1.1\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_025_gunzip_gzip/ReadMe.md",
    "content": "# gunzip & gzip\n\n## NAME\n\ngzip -- compression/decompression tool using Lempel-Ziv coding (LZ77)\n\n## DESCRIPTION\n\nThe gzip program compresses and decompresses files using Lempel-Ziv coding (LZ77).  \n\nIf no files are specified, gzip will compress from standard input, or decompress to standard output.  \n\nWhen in compression mode, each file will be replaced with another file with the suffix, set by the -S suffix option, added, if possible.\n\nIn decompression mode, each file will be checked for existence, as will the file with the suffix added.  Each file argument must contain a separate complete archive; when multiple files are indicated, each is decompressed in turn.\n\n## OPTIONS\n\n* -l, --list\n  * This option displays information about the file's compressed and uncompressed size, ratio, uncompressed name.  With the -v option, it also displays the compres- sion method, CRC, date and time embedded in the file.\n\n## EXAMPLES\n\n```bash\n$ ls -ltr\ntotal 72\n-rw-r--r--  1 asr000p 74715970  5428 Dec 1 15:33 test.xml\n$ gzip test.xml\n$ ls -ltr\ntotal 64\n-rw-r--r--  1 asr000p 74715970  2030 Dec 1 15:33 test.xml.gz\n$ gzip -l test.xml.gz \n  compressed uncompressed  ratio uncompressed_name\n        2030         5428 62.6% test.xml\n$ gunzip test.xml.gz \n$  ls -ltr\ntotal 72\n-rw-r--r--  1 asr000p 74715970  5428 Dec 1 15:33 test.xml\n```\n\n```bash\n$ ls -ltr\ntotal 72\n-rw-r--r--  1 asr000p 74715970  5428 Dec 1 15:33 test.xml\n$ gzip test.xml\n$ ls -ltr\ntotal 64\n-rw-r--r--  1 asr000p 74715970  2030 Dec 1 15:33 test.xml.gz\n$ gzip -l test.xml.gz \n  compressed uncompressed  ratio uncompressed_name\n        2030         5428 62.6% test.xml\n$ gunzip test.xml.gz \n$  ls -ltr\ntotal 72\n-rw-r--r--  1 asr000p 74715970  5428 Dec 1 15:33 test.xml\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_026_head/ReadMe.md",
    "content": "# head\n\n\n## NAME\n\nhead -- display first lines of a file\n\n## SYNOPSIS\n\n> head [-n count | -c bytes] [file ...]\n\n## DESCRIPTION\n\nThis filter displays the first count lines or bytes of each of the specified files, or of the standard input if no files are specified.  If count is omitted it defaults to 10.\nIf more than a single file is specified, each file is preceded by a header consisting of the string `==> XXX <=='' where` XXX'' is the name of the file.\n\nEXIT STATUS\n\nThe head utility exits 0 on success, and >0 if an error occurs.\n\n## EXAMPLES\n\n```bash\n$ echo \"this is first line \\n this is second \\n this is third \" > file\n$ cat file\nthis is first line \n this is second \n this is third \n$ head -n 2 file\nthis is first line \n this is second \n$\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_027_history/ReadMe.md",
    "content": "# history\n\n## NAME\n\nTo check the history\n\n## DESCRIPTION\n\nWith no options, display the command history list with line numbers.\n\nLines listed with a * have been modified.\n\nAn argument of n lists only the last n lines.\n\nIf the shell variable HISTTIMEFORMAT is set and not null, it is used as a format string for strftime(3) to display the timestamp associated with each displayed history entry.\n\nIf  the HISTTIMEFORMAT variable is set, the time stamp information associated with each history entry is written to the history file, marked with the history comment character.  \n\nWhen the history file is read, lines beginning with the history comment character followed immediately by a digit are interpreted as timestamps for the previous history line.\n\nThe return value is 0 unless an invalid option is encountered, an error occurs while reading or writing the history file, an invalid offset is supplied as an argument to -d, or the history expansion supplied as an argument to -p fails.\n\nNo intervening blank is printed between the formatted timestamp and the history line.  If filename is supplied, it is used as the name of the history file; if not, the value of HISTFILE is used.  Options, if supplied, have the following meanings:\n\n## OPTIONS\n\n* -c\n  * Clear the history list by deleting all the entries\n\n* -d\n  * offset\n\n* -n\n  * Read the history lines not already read from the history file into the current history list.  These are lines appended to the history file since the begin ning of the current bash session.\n\n```bash\n$echo 'export HISTTIMEFORMAT=\"%d/%m/%y %T \"' >> ~/.bash_profile\n$ source ~/.bash_profile\n$ history 1\n1032  03/03/19 01:06:00 history 1\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_028_host/ReadMe.md",
    "content": "# host\n\n## NAME\n\nhost - DNS lookup utility\n\n## SYNOPSIS\n\n> host [-aCdlnrsTwv] [-c class] [-N ndots] [-R number] [-t type] [-W wait] [-m flag] [-4] [-6] [-v] [-V] {name} [server]\n\n## DESCRIPTION\n\nhost is a simple utility for performing DNS lookups. It is normally used to convert names to IP addresses and vice versa. When no arguments or options are given, host prints a short summary of its command line arguments and options.\n\nname\n\nis the domain name that is to be looked up. It can also be a dotted-decimal IPv4 address or a colon-delimited IPv6 address, in which case host will by default perform a reverse lookup for that address.  server is an optional argument which is either the name or IP address of the name server that host should query instead of the server or servers listed in /etc/resolv.conf.\n\n## OPTIONS\n\n* -4\n  * Use IPv4 only for query transport. See also the -6 option.\n* -6\n  * Use IPv6 only for query transport. See also the -4 option.\n* -a\n  * \"All\". The -a option is normally equivalent to -v -t ANY. It also affects the behaviour of the -l list zone option.\n* -c class\n  * Query class: This can be used to lookup HS (Hesiod) or CH (Chaosnet) class resource records. The default class is IN (Internet).\n* -C\n  * Check consistency: host will query the SOA records for zone name from all the listed authoritative name servers for that zone. The list of name servers is defined by the NS records that are found for the zone.\n* -d\n  * Print debugging traces. Equivalent to the -v verbose option.\n* -l\n  * List zone: The host command performs a zone transfer of zone name and prints out the NS, PTR and address records (A/AAAA). Together, the -l -a options print all records in the zone.\n  \n```bash\n$ host google.com\ngoogle.com has address 172.217.9.174\ngoogle.com has IPv6 address 2607:f8b0:4000:814::200e\ngoogle.com mail is handled by 10 aspmx.l.google.com.\ngoogle.com mail is handled by 30 alt2.aspmx.l.google.com.\ngoogle.com mail is handled by 20 alt1.aspmx.l.google.com.\ngoogle.com mail is handled by 40 alt3.aspmx.l.google.com.\ngoogle.com mail is handled by 50 alt4.aspmx.l.google.com.\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_029_hostname/ReadMe.md",
    "content": "# hostname\n\n## NAME\n\nhostname -- set or print name of current host system\n\n## SYNOPSIS\n\n> hostname [-fs] [name-of-host]\n\n## DESCRIPTION\n\nThe hostname utility prints the name of the current host.  The super-user can set the hostname by supplying an argument.  To keep the hostname between reboots, run `scutil --set HostName name-of-host'.\n\n## OPTIONS\n\n* -f\n  * Include domain information in the printed name.  This is the default behavior.\n* -i\n  * Include the IP of the host\n-s\n  * Trim off any domain information from the printed name.\n\n## EXAMPLE\n\n```bash\nhostname -f\nm-C02SN6PVG8WN\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_030_ifconfig/ReadMe.md",
    "content": "# ifconfig\n\n[ifconfig](https://www.man7.org/linux/man-pages/man8/ifconfig.8.html)\n\n## NAME\n\nifconfig - configure a network interface\n\n## OPTIONS\n\n- -a\n  - display all interfaces which are currently available, even\n    if down\n\n## EXAMPLES\n\n- To display all the interfaces present\n  - Consider ens4 here\n    - has internal IP 10.128.0.38\n    - has mac address 42:01:0a:80:00:26  (identified by ether)\n\n```bash\n# ifconfig -a\ndocker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500\n        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255\n        inet6 fe80::42:4eff:fed8:4d48  prefixlen 64  scopeid 0x20<link>\n        ether 02:42:4e:d8:4d:48  txqueuelen 0  (Ethernet)\n        RX packets 0  bytes 0 (0.0 B)\n        RX errors 0  dropped 0  overruns 0  frame 0\n        TX packets 5  bytes 526 (526.0 B)\n        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0\n\nens4: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1460\n        inet 10.128.0.38  netmask 255.255.255.255  broadcast 0.0.0.0\n        inet6 fe80::4001:aff:fe80:26  prefixlen 64  scopeid 0x20<link>\n        ether 42:01:0a:80:00:26  txqueuelen 1000  (Ethernet)\n        RX packets 80646  bytes 225065878 (225.0 MB)\n        RX errors 0  dropped 0  overruns 0  frame 0\n        TX packets 36695  bytes 4095570 (4.0 MB)\n        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_031_ip/ReadMe.md",
    "content": "# ip\n\n[ip](https://TBD/man/8/ip)\n\n## NAME\n\nip - show / manipulate routing, devices, policy routing and tunnels\n\n## OBJECT\n\n### address or addr\n\nprotocol (IP or IPv6) address on a device.\n\nprotocol (IP or IPv6) address on a device.\n  \n### address add\n\nadd new protocol address.\n\n### link\n\nnetwork device\n\n#### link add\n\n### netns\n\nnetwork namespace\n\n#### route\n\nManipulate route entries in the kernel routing tables keep information about paths to other networked nodes.\n\n## EXAMPLES\n\n- Two hosts A and B\n- host A has interface (eth0)\n- host B has interface (etho0)\n- We want to connect the two hosts A and B using the switch.\n- Let's assume it has the IP address 192.168.1.0\n\n- To see the interfaces on the host we use the following command\n\n```bash\n$ ip link\n  1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000\n      link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00\n  2: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc mq state UP mode DEFAULT group default qlen 1000\n      link/ether 42:01:0a:80:00:26 brd ff:ff:ff:ff:ff:ff\n```\n\n- To see the IP Address interfaces.\n\n```bash\n$ ip address\n1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000\n    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00\n    inet 127.0.0.1/8 scope host lo\n        valid_lft forever preferred_lft forever\n    inet6 ::1/128 scope host \n        valid_lft forever preferred_lft forever\n2: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc mq state UP group default qlen 1000\n    link/ether 42:01:0a:80:00:26 brd ff:ff:ff:ff:ff:ff\n    inet 10.128.0.38/32 scope global dynamic ens4\n        valid_lft 3020sec preferred_lft 3020sec\n    inet6 fe80::4001:aff:fe80:26/64 scope link \n        valid_lft forever preferred_lft forever\n```\n\n- We then assign the systems with IP addresses on the same network. \n  For this, we use the command ip addr.\n- On host A\n \n```bash\n$ ip addr add 192.168.1.10/24 dev eth0\n.\n```\n\n- On host B\n\n```bash\n$ ip addr add 192.168.1.10/24 dev eth0\n.\n```\n\nOnce the links are up, and the IP addresses are assigned,\nThe computers can now communicate with each other through the switch. \nThe switch can only enable communication within the network which means \nit can receive packets from a host on the network and deliver it to other\nsystems within the same network.\n\n- So now the ping command from host A should work\n\n```bash\nping 192.168.1.11\n.\n```\n\n- How does System B with the IP 192.168.1.11 reach system C with the IP 2.10 on the\n  other network. That’s where a Router comes in. A Router helps connect two networks together.\n  Since it connects to the two separate networks, it gets two IPs assigned. One on each network.\n  In the first network we assign it an IP address 192.168.1.1 and in the second we assign it an\n  IP 192.168.2.1. Now we have a router connected to the two networks that can enable communication\n  between them.\n  \n- Now, when system B tries to send a packet to system C, how does it know where the router is on the network\n  to send the packet through the router is just another device on the network.\n  there could be many other such devices. That’s where we configure the systems with a gateway or a route.\n  If the network was a room, the gateway is a door to the outside world to other networks or to the internet\n  The systems need to know where that door is to go through that to see the existing routing configuration\n  on a system run the `route` command. It displays the kernels routing table\n\n- To configure a gateway on system B to reach the systems on network 192.168.2.0, \n  run the ip route add command, and specify that you can reach the\n  192.168.2.0 network through the door or gateway at 192.168.1.11. Running the route\n  command again shows that we have a route added to reach the 192.168.2.0 series network through the\n  router.\n- So we run the folloiwng command on system B\n  \n```bash\n$ ip route add 192.168.2.0/24 via 192.168.1.1\n.\n```\n\n- So when we run the `route` command on system B again we get\n  \n```bash\n$ route\nKernel IP routing table\nDestination  Gateway      Genmask         Flags     Metric  Ref  Use   Iface\n192.168.2.0  192.168.1.1  255.255.255.0   UG        0       0    0     eth0   \n```\n\n- Similarly we can add a route to the internet as well.\n  \n```bash\n$ ip route add default via 192.168.1.1  \n## OR \n$ ip route add 0.0.0.0 via 192.168.1.1  \n```\n  \n- To view the routes in a host\n\n```bash\n$ ip route\ndefault via 10.128.0.1 dev ens4 proto dhcp src 10.128.0.38 metric 100 \n10.128.0.1 dev ens4 proto dhcp scope link src 10.128.0.38 metric 100 \n```\n\n- Create a network namespace\n\n```bash\n$ ip netns add red\n.\n\n$ ip netns add blue\n.\n```\n\n- List the network namespace\n\n```bash\n# ip netns\nred\nblue\n```\n\n- List the network interfaces on the host\n\n```bash\n$ ip link\n1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000\n    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00\n2: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc mq state UP mode DEFAULT group default qlen 1000\n    link/ether 42:01:0a:80:00:26 brd ff:ff:ff:ff:ff:ff\n```\n\n- Exec inside the network namespace. Note that you cannot see the `ens4` interface inside the network namepace.\n\n```bash\n$ ip netns exec red ip link\n1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN mode DEFAULT group default qlen 1000\n    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00\n\n### OR\n\n$ ip -n red  link\n1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN mode DEFAULT group default qlen 1000\n    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00\n```\n\n- Similarly you can run the arp command on the host and inside the network namespace\n\n```bash\n### On the host\n$ arp\nAddress                  HWtype  HWaddress           Flags Mask            Iface\n_gateway                 ether   42:01:0a:80:00:01   C                     ens4\n\n## inside the namespace\n$ ip netns exec red arp\n```\n\n- To create a virtual cable with two interfaces on either end\n\n```bash\n$ ip link add veth-red type veth peer name veth-blue\n.\n```\n\n- The next step is to attach each interface to the appropriate namespace\n\n```bash\n$ ip link set veth-red netns red\n.\n```\n\n- Similarly, attach the blue interface to the blue namespace.\n\n```bash\n$ ip link set veth-blue netns blue\n.\n```\n\n- We can then assign IP addresses to each of these names faces.\n  We will use the usual IP ADR command to assign the IP address,\n  \n```bash\n$ ip -n red addr add 192.168.15.1 dev veth-red\n.\n```\n\n- Similarly assign the IP address to the blue namespace\n\n```bash\n$ ip -n blue addr add 192.168.15.2 dev veth-blue\n.\n```\n\n- We then bring up the interface using the IP link, set up command for each device within the respective\n  namespace\n\n```bash\n$ ip -n red link set veth-red up\n.\n$ ip -n blue link set veth-blue up\n.\n```\n\n- Now try to ping blue namespace from red\n\n```bash\n$ ip netns exec red ping 192.168.15.2\n.\n```\n\n- You can check the ARP table of the red namespace\n\n```bash\n$ ip netns exec red arp\n.\n```\n\n- What do you do when you have more of them?\n  How do you enable all of them to communicate with each other?\n  Just like in the physical world, you create a virtual network inside your host, create a network,\n  you need a switch. So to create a virtual network.\n  You need a virtual switch.\n  So you create a virtual switch within our host and connect the namespace us to it.\n\n- interfaces on host before we create anything new\n  \n```bash\n$ ip link\n  1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000\n      link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00\n  2: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc mq state UP mode DEFAULT group default qlen 1000\n      link/ether 42:01:0a:80:00:26 brd ff:ff:ff:ff:ff:ff\n```\n  \n- we will use the Linux Bridge option to create an internal bridge network.\n    We add a new interface to the host using the IP link.\n\n```bash\n$ ip link add v-net-0 type bridge\n.\n```\n\n- Interfaces after we have created v-net-0\n  \n```bash\n$ ip link\n  1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000\n      link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00\n  2: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc mq state UP mode DEFAULT group default qlen 1000\n      link/ether 42:01:0a:80:00:26 brd ff:ff:ff:ff:ff:ff\n  5: v-net-0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000\n      link/ether ea:dd:c0:38:b0:fc brd ff:ff:ff:ff:ff:ff\n```\n  \n- It's currently down. So you need to turn it up\n  \n```bash\n$ ip link set dev v-net-0 up\n.\n```\n\n- Now for the namespace.  \n  This interface is like a switch that it can connect to.\n  So think of it as an interface for the host and a switch for the namespace.\n\n- Earlier we created the cable or `veth peer`  with the veth-red interface on one end and veth blue interface on\n  another because we wanted to connect the two namespaces directly.\n  Now we will be connecting all namespaces to the bridge network, so we need new cables for that purpose.\n  This cable doesn't make sense anymore, so we will get rid of it.  \n  When you delete one end (veth-red) the other end gets deleted automatically.\n\n```bash\n$ ip -n red link del veth-red\n.\n```\n\n- Let's crete a new cable with one end as veth-red and other end as veth-red-br as it connects to the\n    bridge network. Similarly create one for the blue namespace\n  \n```bash\n$ ip link add veth-red type veth peer name veth-red-br\n.\n$ ip link add veth-blue type veth peer name veth-blue-br\n.\n```\n\n- Now attach one end of the cable to the red namespace and other end to v-eth-0 where v-eth-0 is the master\n\n- Repeate the for the blue namespace\n\n```bash\n$ ip link set veth-red netns red\n.\n$ ip link set veth-red-br master v-eth-0\n.\n$ ip link set veth-blue netns blue\n.\n$ ip link set veth-blue-br master v-eth-0    \n.\n```\n\n- Let us assin the IP addresses for these links and turn them up\n\n```bash\n$ ip -n red addr add 192.168.15.1 dev veth-red\n.\n$ ip -n blue addr add 192.168.15.2 dev veth-blue\n.\n$ ip -n red link set veth-red up\n.\n$ ip -n blue link set veth-blue up\n.\n```\n\n- Now the host has the IP address 192.168.1.2, if it tries to ping on of these interfaces it would fail as they\n  are on different networks. The bridge switch is actually a network interface for the host and we can assign an\n  IP address to it. Once assigned, we can now ping the red namespace `ping 192.168.15.1` from the host\n\n```bash\n$ ip addr add 192.168.15.5/24 dev v-net-0\n.\n```\n\n- Say there is another host attached to our network with the address 190.168.1.3\n  How can I reach this host from within my name spaces?\n\n- So we need to add an entry into the routing table to provide a gateway or door to the outside world.\n  So how do we find that gateway?\n  A door or a gateway, as we discussed before, is a system on the local network that connects to the\n  other network.\n\n- What is a system that has one interface on the network local to the blue namespace, which is the 192.168.1.15\n  network and is also connected to the outside LAN network\n\n- Remember, our local host has an interface to attach to the private network so you can ping the namespaces.\n  So our localhost is the gateway that connects the two networks together. So we can add the following route entry\n  in the bluenamespace\n\n```bash\n$ ip netns exec blue ip route add 192.168.1.0/24 via 192.168.15.5\n.\n```\n\n- We need NAT enabled on our host acting as the gateway here so that it can send the messages to the LAN\n    in its own name with its own address.\n- You should do that using IP tables, add a new rule in the net IP table, in the post routing chain to\nmasquerade or replace the from address on all packets coming from the source network \n192.168.15.0 with its own IP address.\nThat way, anyone receiving these packets outside the network will think that they're coming from the\nhost and not from within. When we try to ping now `ping 192.168.1.3` we will see that we are able to receive a response\n\n```bash\n$ iptables -t nat -A POSTROUTING -s 192.168.15.0/24 -j MASQUERADE\n.\n```\n\n- Now how do we reaach the internet from the blue namespace\n  We can simply say that to reach any external network, talk to our host so we add a default gateway\n  specifying our host.\n  \n```bash\n$ ip netns exec blue ip route add default via 192.168.15.5\n.\n```\n\n- Now how does the host 192.168.1.3 reach the blue namespace. We can add a port-forwarding rule\n  on 192.168.1.2 saying that any traffic coming to port 80 on the localhost is to be forwared to the\n  port 80 on the IP assigned to the blue namespace.\n\n```bash\n$ iptables -t nat -A PREROUTING --dport 80 --to-destination 192.168.15.2:80 -j DNAT\n.\n```"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_032_jar/ReadMe.md",
    "content": "# jar\n\n## NAME\n\njar - Java archive tool\n\n## OPTIONS\n\n- C\n  - Temporarily changes directories (cd dir) during execution of the jar command while processing the following inputfiles argument. Its operation is intended to be similar to the -C option of the UNIX tar utility.\n\n- c\n  - Creates a new archive file named jarfile (if f is specified) or to standard output (if f and jarfile are omitted). Add to it the files and directories specified by  input files.\n\n- f\n  - Specifies the file jarfile to be created (c), updated (u), extracted (x), indexed (i), or viewed (t). The f option and filename jarfile are a pair -- if present, they must both appear.  Omitting f and jarfile accepts a \"jar file\" from standard input (for x and t) or sends the \"jar file\" to standard output (for c and u).\n- m\n  - Includes names and values of attributes from the file specified by the manifest operand in the manifest file of the jar command (located in the archive at META-INF/MANIFEST.MF). The jar command adds the attribute name and value to the JAR file unless an entry already exists with the same name, in which case the jar command updates the value of the attribute. The m option can be used when creating (c) or updating (u) the JAR file.\n- u\n  - Updates an existing file jarfile (when f is specified) by adding to it files and directories specified by inputfiles\n- v\n  - Generates verbose output to standard output\n- x\n  - Extracts  files and  directories from jarfile (if f is specified) or standard input (if f and jarfile are omitted). If inputfiles is specified, only those specified files and directories are extracted. Otherwise, all files and directories are extracted.\n\n## DESCRIPTION\n\nThe  jar tool  combines multiple files into a single JAR archive file.  \n\njar is a general-purpose archiving and compression tool, based on ZIP and the ZLIB compression format.\n\n## EXAMPLES\n\nTypical usage to combine files into a jar file is:\n\n```bash\n$ jar cf myFile.jar *.class\n.\n```\n\nIn this example, all the class files in the current directory are placed in the file named myjarfile.  A manifest file entry named META-INF/MANIFEST.MF is automatically generated by the jar tool and is always the first entry in the jar file.  The manifest file is the place where any meta-information about the archive is stored as name:value pairs. Refer to the Jar File specification for details about how meta-information is stored in the manifest file.\n\nIf you have a pre-existing manifest file whose name: value pairs you want the jar tool to include for the new jar archive, you can specify it using the m option:\n\n```bash\n$ jar cmf myManifestFile myJarFile *.class\n.\n```\n\nTo make jar archive of foo.class with the name as foo.jar\n\n```bash\n$ jar uf foo.jar foo.class\n.\n```\n\nThe following would add the file foo.class to the existing jar file foo.jar. The u option can also update the manifest entry, as given by following example which updates the foo.jar manifest with the name: value pairs in manifest.\n\n```bash\n$ jar umf manifest foo.jar\n.\n```\n\nTo see the contents of an ear file, you can similarly use\n\n```bash\n$ jar -tvf ns-server-ear-xx-3.2.24.0.ear | grep ns-xx-model-3.2.0.0.jar\n1390355 Thu Feb 07 11:53:32 +07 2019 lib/ns-xx-model-3.2.0.0.jar\n```\n\nTo update this with new jar file we can use following\n\nWill replace the jar file lib/ns-ghoperations-model-3.2.0.0.jar in the ear ns-server-ear-tg-3.2.24.0.ear assuming that it is in the directory lib/ in the ear\n\n```bash\n$ jar -uvf ns-server-ear-xx-3.2.24.0.ear lib/ns-xx-model-3.2.0.0.jar\nupdating: ns-xx-model-3.2.0.0.jar (in=1390356) (out=1351630) (deflated 2%)\nTotal:\n------\n(in = 62514279) (out = 57862898) (deflated 7%)\n\n$ jar -tvf ns-server-ear-tg-3.2.24.0.ear | grep ns-ghoperations-model-3.2.0.0.jar\n1390356 Thu Feb 28 01:25:04 +07 2019 lib/ns-ghoperations-model-3.2.0.0.jar\n```\n\nTo extract the files from a jar file, use x , as in:\n\n```bash\n$ jar xf myFile.jar\n.\n```\n\nFollowing would change to the classes directory and add the bar.class from that directory to foo.jar.\n\n```bash\n$ jar uf foo.jar -C classes bar.classes\n.\n```\n\nThe following command,\nwould  change to the classes directory and add to foo.jar all files within the classes directory\n(without creating a classes directory in the jar file), then change back to the original directory\nbefore changing to the bin directory to add xyz.class to foo.jar. If classes holds files bar1 and bar2,\nthen here's what the jar file would contain using jar tf foo.jar:\n\n- META-INF/\n- META-INF/MANIFEST.MF\n- bar1\n- bar2\n- Xyz.class\n\n```bash\n$ jar uf foo.jar -C classes . -C bin xyz.class\n.\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_033_jobs/ReadMe.md",
    "content": "# jobs\n\nJOB CONTROL\n\nJob control is nothing but the ability to stop/suspend the execution of processes (command) and continue/resume their execution as per your requirements. \nThis is done using your operating system and shell such as bash/ksh or POSIX shell.\nYour shell keeps a table of currently executing jobs and can be displayed with jobs command.\n\n## DESCRIPTION\n\nIt's a shell builtin\nShell builtin commands are commands that can be executed within the running shell's process.\n\n## PURPOSE\n\nDisplays status of jobs in the current shell session.\n\n## OPTIONS\n\n* -l\n  * Show process id’s in addition to the normal information.\n* -p\n  * Show process id’s only.\n* -n\n  * Show only processes that have changed status since the last notification are printed.\n* -r\n  * Restrict output to running jobs only.\n* -s\n  * Restrict output to stopped jobs only.\n* -x\n  * COMMAND is run after all job specifications that appear in ARGS have been replaced with the process ID of that job’s process group leader.\n\n## EXAMPLES\n\nBefore you start using jobs command, you need to start couple of jobs on your system. Type the following commands to start jobs:\n\n```bash\nxeyes &\ngnome-calculator &\ngedit fetch-stock-prices.py &\n```\n\nFinally, run ping command in foreground:\n\n```bash\nping www.cyberciti.biz\n```\n\nTo suspend ping command job hit the Ctrl-Z key sequence.\n\nTo display the status of jobs in the current shell, enter:\n\n```bash\n$ jobs\n[1]   7895 Running                 gpass &\n[2]   7906 Running                 gnome-calculator &\n[3]-  7910 Running                 gedit fetch-stock-prices.py &\n[4]+  7946 Stopped                 ping cyberciti.biz\n```\n\nTo display the process ID or jobs for the job whose name begins with “p,” enter:\n\n```bash\n$ jobs -p %p\n[4]-  Stopped                 ping cyberciti.biz\n```\n\nTo show process IDs in addition to the normal information\n\n* Pass the -l(lowercase L) option to jobs command for more information about each job listed, run:\n\n* Info in sequence is : JobID, ProcessId, Status, Job\n\n```bash\n$ jobs -l\n[1]  + 47274 suspended  ping google.com\n```\n\nTo list only processes that have changed status since the last notification\n\n* First, start a new job as follows:\n\n```bash\n$ sleep 100 &\n.\n```\n\n* Now, only show jobs that have stopped or exited since last notified, type:\n\n```bash\n$ jobs -n\n[5]-  Running                 sleep 100 &\n```\n\nDisplay lists process IDs (PIDs) only\n\n* Pass the -p option to jobs command to display PIDs only:\n\n```bash\n$ jobs -p\n7895\n7906\n7910\n7946\n7949\n```\n\nA note about /usr/bin/jobs and shell builtin\n\n* Type the following type command to find out whether jobs is part of shell, external command or both:\n\n```bash\n$ type -a jobs\njobs is a shell builtin\njobs is /usr/bin/jobs\n```\n\nIn almost all cases you need to use the jobs command that is implemented as a BASH/KSH/POSIX shell built-in.\nThe /usr/bin/jobs command can not be used in the current shell. The /usr/bin/jobs command operates in a different\nenvironment and does not share the parent bash/ksh’s shells understanding of jobs.\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_034_jq/ReadMe.md",
    "content": "# jq\n\njq - Command-line JSON processor\n\n- [jq](#jq)\n  - [Docs](#docs)\n  - [EXAMPLES](#examples)\n    - [getting started](#getting-started)\n    - [`.` -- pretty print](#----pretty-print)\n    - [`-c` -- compact output](#-c----compact-output)\n    - [`.key` -- get value of key](#key----get-value-of-key)\n    - [`sort_by(.[num])` -- sort by key](#sort_bynum----sort-by-key)\n    - [`split()`](#split)\n      - [with keys](#with-keys)\n      - [with specific array element](#with-specific-array-element)\n      - [with map on all array elements](#with-map-on-all-array-elements)\n    - [`split()` | `tonumber` | `first`](#split--tonumber--first)\n      - [Explaining jq Operations](#explaining-jq-operations)\n    - [`contains()` | `and` | Check if a string contains a substring](#contains--and--check-if-a-string-contains-a-substring)\n    - [`fromjson` | When value of a key is a JSON string](#fromjson--when-value-of-a-key-is-a-json-string)\n    - [`max_by()` | Get the maximum value of a key in an array of objects and array of arrays](#max_by--get-the-maximum-value-of-a-key-in-an-array-of-objects-and-array-of-arrays)\n\n## Docs\n\n- [jq](http://manpages.ubuntu.com/manpages/bionic/man1/jq.1.html)\n- [learn-jq](https://lzone.de/cheat-sheet/jq)\n\n## EXAMPLES\n\n### getting started\n\n```bash\ncat example1.json | jq\n```\n\nOutput\n\n```bash\n{\n  \"commit_id\": \"b8f2b8b\",\n  \"environment\": \"test\",\n  \"tags_at_commit\": \"sometags\",\n  \"project\": \"someproject\",\n  \"current_date\": \"09/10/2014\",\n  \"version\": \"someversion\"\n}\n```\n\n### `.` -- pretty print\n\n```bash\necho $json | jq '.'         \n```\n\nOutput\n\n```bash\n{\n  \"commit_id\": \"b8f2b8b\",\n  \"environment\": \"test\",\n  \"tags_at_commit\": \"sometags\",\n  \"project\": \"someproject\",\n  \"current_date\": \"09/10/2014\",\n  \"version\": \"someversion\"\n}\n```\n\n### `-c` -- compact output\n\n```bash\ncat example1.json | jq -c\n```\n\nOutput\n\n```bash\n{\"commit_id\":\"b8f2b8b\",\"environment\":\"test\",\"tags_at_commit\":\"sometags\",\"project\":\"someproject\",\"current_date\":\"09/10/2014\",\"version\":\"someversion\"}\n```\n\n### `.key` -- get value of key\n\n```bash\ncat example1.json | jq '.commit_id'\n```\n\nOutput\n\n```bash\n\"b8f2b8b\"\n```\n\n### `sort_by(.[num])` -- sort by key\n\n```bash\ncat example2.json| jq -c                \n```\n\nOutput\n\n```bash\n[[\"data4\",\"info4\",9],[\"data2\",\"info2\",4],[\"data1\",\"info1\",10],[\"data3\",\"info3\",5]]\n```\n\n```bash\ncat example2.json| jq -c 'sort_by(.[2])'\n```\n\nOutput\n\n```bash\n[[\"data2\",\"info2\",4],[\"data3\",\"info3\",5],[\"data4\",\"info4\",9],[\"data1\",\"info1\",10]]\n```\n\n### `split()`\n\n#### with keys\n\n```bash\necho '{\"data\": \"one-two-three-four-five\"}' | jq -c '.data | split(\"-\")'\n```\n\nOutput\n\n```bash\n[\"one\",\"two\",\"three\",\"four\",\"five\"]\n```\n\n#### with specific array element\n\n```bash\necho '{\"dataArray\": [\"one-two-three\", \"four-five-six\", \"seven-eight-nine\"]}' | jq -c '.dataArray[0] | split(\"-\")' \n```\n\nOutput\n\n```bash\n[\"one\",\"two\",\"three\"]\n```\n\n#### with map on all array elements\n\n```bash\n$ echo '{\"dataArray\": [\"one-two-three\", \"four-five-six\", \"seven-eight-nine\"]}' | jq -c '.dataArray | map(split(\"-\"))'\n[[\"one\",\"two\",\"three\"],[\"four\",\"five\",\"six\"],[\"seven\",\"eight\",\"nine\"]]\n```\n\n### `split()` | `tonumber` | `first`\n\n```bash\ncat example4.json| jq -c                                                      \n```\n\nOutput\n\n```bash\n[[\"item1\",\"partA-123-100\"],[\"item4\",\"partD-456-400\"],[\"item3\",\"partC-345-300\"],[\"item2\",\"partB-234-200\"]]\n```\n\n```bash\ncat example4.json | jq -c 'sort_by(.[1])'                                      \n```\n\nOutput\n\n```bash\n[[\"item1\",\"partA-123-100\"],[\"item2\",\"partB-234-200\"],[\"item3\",\"partC-345-300\"],[\"item4\",\"partD-456-400\"]]\n```\n\n```bash\ncat example4.json| jq -c 'sort_by(.[1] | split(\"-\") | .[2] | tonumber) | last' \n```\n\nOutput\n\n```bash\n[\"item4\",\"partD-456-400\"]\n```\n\n#### Explaining jq Operations\n\n1. **Sorting by the First Element in Each Sub-Array (`sort_by(.[1])`)**:\n   - `.[1]` accesses the second element of each sub-array (since jq indexing is zero-based). For example, for `[\"item1\", \"partA-123-100\"]`, it selects `\"partA-123-100\"`.\n   - `sort_by(.[1])` sorts the entire outer array based on these second elements as strings.\n\n2. **Using `split(\"-\")` in a Chain with `sort_by`**:\n   - `split(\"-\")` is used to break the string `\"partA-123-100\"` into parts, resulting in an array like `[\"partA\", \"123\", \"100\"]`.\n   - `.[2]` after the split selects the third part of the split array, for instance `\"100\"` from `[\"partA\", \"123\", \"100\"]`.\n   - `tonumber` then converts this string `\"100\"` into a number, making it suitable for numeric sorting.\n   - `sort_by(.[1] | split(\"-\") | .[2] | tonumber)` sorts the outer array by these numeric values.\n\n3. **Selecting the Last Element (`| last`)**:\n   - `| last` simply selects the last element from the sorted array, which is the one with the highest value from the sorted criterion.\n\n- The expression `. [1]` inside `sort_by` is not returning the \"first element of the array\" but rather the second element of each sub-array, which is then processed further.\n- `split(\"-\")` does not appear at the level of sorting the whole array by itself; it's applied to the string that `. [1]` retrieves from each sub-array, helping in extracting a specific part for numeric comparison.\n\n### `contains()` | `and` | Check if a string contains a substring\n\n```bash\necho '{\n  \"message\": \"This is a sample message containing keyword1 and keyword2.\",\n  \"description\": \"This is another field that contains keyword1 and keyword2.\",\n  \"details\": \"Here we have keyword1 but not the other keyword.\"\n}' | jq -r '(.message | contains(\"keyword1\") and contains(\"keyword2\")) and (.description | contains(\"keyword1\") and contains(\"keyword2\"))' \n```\n\nOutput\n\n```bash\ntrue\n```\n\n### `fromjson` | When value of a key is a JSON string\n\n```bash\necho '{\n  \"test\": \"{\\\"key\\\":\\\"value\\\",\\\"anotherKey\\\":\\\"anotherValue\\\"}\"\n}' | jq -e '.test | fromjson | .key'\n```\n\n### `max_by()` | Get the maximum value of a key in an array of objects and array of arrays\n\nArray of objects\n\n```bash\necho '[{\"name\":\"Alice\",\"age\":25},{\"name\":\"Bob\",\"age\":30},{\"name\":\"Charlie\",\"age\":20}] '| jq -c 'max_by(.age)'\n```\n\nOutput\n\n```bash\n{\"name\":\"Bob\",\"age\":30}\n```\n\nArray of arrays\n\n```bash\necho '[[1,2,3],[4,5,6],[7,8,9]]' | jq -c 'max_by(.[2])'\n```\n\nOutput\n\n```bash\n[7,8,9]\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_034_jq/example1.json",
    "content": "{\n    \"commit_id\": \"b8f2b8b\",\n    \"environment\": \"test\",\n    \"tags_at_commit\": \"sometags\",\n    \"project\": \"someproject\",\n    \"current_date\": \"09/10/2014\",\n    \"version\": \"someversion\"\n  }\n  "
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_034_jq/example2.json",
    "content": "[\n    [\n        \"data4\",\n        \"info4\",\n        9\n    ],\n    [\n        \"data2\",\n        \"info2\",\n        4\n    ],\n    [\n        \"data1\",\n        \"info1\",\n        10\n    ],\n    [\n        \"data3\",\n        \"info3\",\n        5\n    ]\n]"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_034_jq/example3.json",
    "content": "[\n    [\"data1\", \"info1\", \"part_10\"],\n    [\"data2\", \"info2\", \"part_5\"],\n    [\"data3\", \"info3\", \"part_15\"],\n    [\"data4\", \"info4\", \"part_2\"]\n  ]\n  "
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_034_jq/example4.json",
    "content": "[\n    [\"item1\", \"partA-123-100\"],\n    [\"item4\", \"partD-456-400\"],\n    [\"item3\", \"partC-345-300\"],\n    [\"item2\", \"partB-234-200\"]\n  ]\n  "
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_035_jstack/ReadMe.md",
    "content": "# jstack\n\n## NAME\n\njstack - stack trace\n\n### SYNOPSIS\n\n> jstack [ option ] pid\n\n> jstack [ option ] executable core\n\n> jstack [ option ] [server-id@]remote-hostname-or-IP\n\n## DESCRIPTION\n\njstack  prints Java  stack traces of Java threads for a given Java process or core file or a remote debug server. For each Java frame, the full class name, method name, 'bci' (byte code index) and line number, if available, are printed.\n\n## PARAMETERS\n\n* pid\n  * process id for which the stacktrace is to be printed.  The process must be a Java process. To get a list of Java processes running on a machine, jps may be used.\n\n* executable\n  * Java executable from which the core dump was produced.\n\n* core\n  * core file for which the stack trace is to be printed.\n\n* remote-hostname-or-IP\n  * remote debug server's hostname or IP address.\n\n* server-id\n  * optional unique id, if multiple debug servers are running on the same remote host.\n\n## OPTIONS\n\n* -m\n  * prints mixed mode (both Java and native C/C++ frames) stack trace.\n  \n```bash\n$ pid=1345\n.\n$ jstack $pid >jstack.PID.$pid.TIMESTAMP.$(date +%H%M%S.%N) \n.\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_036_keytool/ReadMe.md",
    "content": "# keytool \n\n## NAME\n\nkeytool - key and certificate management tool\n\n## SYNOPSIS\n\n> keytool [ commands ]\n\n## DESCRIPTION\n\nkeytool  is a key and certificate management utility.\n\nIt enables users to administer their own public/private key pairs and associated certificates for use in self-authentication (where the user authenticates himself/herself to other users/services) or data integrity and authentication services, using digital signatures.\n\nIt  also allows users to cache the public keys (in the form of certificates) of their communicating peers.\n\n- A  certificate is a digitally signed statement from one entity (person, company, and so forth), saying that the public key (and some other information) of some other entity has a particular value.\n\n- When data is digitally signed, the signature can be verified to check the data integrity and authenticity.\n\n- Integrity means that the data has not been modified or tampered with, and authenticity means the data indeed comes from whoever claims to have created and signed it.\n\nkeytool  stores the keys and certificates in a so-called **keystore**.  The keytool default keystore implementation implements the keystore as a file. It protects private keys with a password.\n\nKeystore Entries\n\nThere are two different types of entries in a keystore:\n\n- key entries\n  - --each holds very sensitive cryptographic key information, which is stored in a protected format to prevent unauthorized access.  \n  - Typically, a key stored in this type of entry is a secret key, or a private key accompanied by the certificate \"chain\" for the corresponding public key. The keytool and jarsigner(1) tools only handle the latter type of entry, that is, private keys and their associated certificate chains.\n- trusted certificate entries\n  - --each contains a single public key certificate belonging to another party. It is called a \"trusted  certificate\" because the keystore owner trusts that the public key in the certificate indeed belongs to the identity identified by the \"subject\" (owner) of the certificate. The issuer of the certificate vouches for this, by signing the certificate.\n  \nKeystore Aliases\n\nAll keystore entries (key and trusted certificate entries) are accessed via unique aliases.\n\nAliases are case-insensitive; the aliases Hugo and hugo would refer to the same keystore entry.\n\nAn  alias  is specified  when you add an entity to the keystore using the -genkey subcommand to generate a key pair (public and private key) or the -import subcommand to add a certificate or certificate chain to the list of trusted certificates.\n\nSubsequent keytool commands must use this same alias to refer to the entity. For example, suppose you use the alias duke to generate a new public/private key pair and wrap the public key into a self-signed certificate via the following command:\n\n> keytool -genkey -alias duke -keypass dukekeypasswd\n\n- This  specifies an inital password of dukekeypasswd required by subsequent commands to access the private key assocated with the alias duke.  If you later want to change duke's private key password, you use a command like the following:\n\n> keytool -keypasswd -alias duke -keypass dukekeypasswd -new newpass\n\nThis changes the password from \"dukekeypasswd\" to \"newpass\".\n\nKeystore Location\n\nEach keytool command has a -keystore option for specifying the name and location of the persistent keystore file for the keystore  managed by keytool. The keystore is by default stored in a file named .keystore in the user's home directory, as determined by the \"user.home\" system property.\n\nKeystore Creation\n\n- A keystore is created whenever you use a -genkey, -import, or -identitydb subcommand to add data to a keystore that doesn't yet exist.\n\n- More specifically, if you specify, in the -keystore option, a keystore that doesn't yet exist, that keystore will be created. If you don't specify a -keystore option, the default keystore is a file named .keystore in your home directory.  If that file does not yet exist, it will be created.\n\nKeystore Implementation\n\nThe KeyStore class provided in the java.security package supplies well-defined interfaces to access and modify the information in a keystore.  It is possible for there to be multiple different concrete implementations, where each implementation is that for a particular type of keystore.\n\nCurrently,  there are two command-line tools (keytool and jarsigner(1)) and also a GUI-based tool named policytool.  Since KeyStore is publicly available, JDK users can write additional security applications that use it.\n\nKeystore  implementations  are provider-based.   More specifically, the application interfaces supplied by KeyStore are implemented in terms of a \"Service Provider Interface\" (SPI).  That is, there is a corresponding abstract KeystoreSpi class, also in the java.security package, which defines the Service Provider Interface methods  that \"providers\" must implement. (The term \"provider\" refers to a package or a set of packages that supply a concrete implementation of a subset of services that can be accessed by the Java Security API.)  Thus, to provide a keystore implementation, clients must implement a \"provider\" and supply a KeystoreSpi subclass implementation, as described in How to Implement a Provider for the Java Cryptography Architecture.\n\nApplications  can choose different types of keystore implementations from different providers, using the \"getInstance\" factory method supplied in the KeyStore class. A keystore type defines the storage and data format of the keystore information, and the algorithms used to protect private keys in the keystore and the integrity of the keystore  itself.\n\nKeystore implementations of different types are not compatible.\n\nkeytool works on any file-based keystore implementation.  (It treats the keystore location that is passed to it at the command line as a filename and converts it to a FileInput-Stream, from which it loads the keystore information.) The jarsigner(1) and policytool tools, on the other hand, can read a keystore from any location  that can be specified using a URL.\n\nFor  keytool and jarsigner(1), you can specify a keystore type at the command line, via the -storetype option.  For Policy Tool, you can specify a keystore type via the \"Change Keystore\" command in the Edit menu.\n\nIf you don't explicitly specify a keystore type, the tools choose a keystore implementation based simply on the value of the keystore.type property specified  in the security properties file. The security properties file is called java.security, and it resides in the JDK security properties directory, java.home/lib/security, where java.home is the JDK installation directory. Each tool gets the keystore.type value and then examines all the currently-installed providers until it finds one that implements keystores of that type. It then uses the  key-store implementation from that provider.\n\nThe  KeyStore class defines a static method named getDefaultType that lets applications and applets retrieve the value of the keystore.type property. The following line of code creates an instance of the default keystore type (as specified in the keystore.type property):\n\nKeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());\n\nThe default keystore type is \"jks\" (the proprietary type of the keystore implementation provided by Sun). This is specified by the following line  in the security properties file:\n\nkeystore.type=jks\n\nTo have the tools utilize a keystore implementation other than the default, you can change that line to specify a different keystore type.\n\nFor example, if you have a provider package that supplies a keystore implementation for a keystore type called \"pkcs12\", change the line to\n\nkeystore.type=pkcs12\n\n## OPTIONS\n\n- -delete\n\n  - Syntax\n\n    > [-alias alias] {-storetype storetype} {-keystore keystore} [-storepass storepass] [-provider provider_class_name] {-v} {-Jjavaoption}\n\n  - Deletes from the keystore the entry identified by alias.  The user is prompted for the alias, if no alias is provided at the command line.\n\n- -import\n\n  - Syntax\n    > -import {-alias alias} {-file cert_file} [-keypass keypass]{-noprompt} {-trustcacerts} {-storetype storetype}{-keystore keystore} [-storepass storepass][-provider provider_class_name]{-v} {-Jjavaoption}\n\n  - Reads the certificate or certificate chain (where the latter is supplied in a PKCS#7 formatted reply) from the file cert_file, and stores it in the keystore entry  identified by alias given, the certificate or PKCS#7 reply is read from stdin.\n\n  - keytool  can import  X.509 v1, v2, and v3 certificates, and PKCS#7 formatted certificate chains consisting of certificates of that type. The data to be imported must be provided either in binary encoding format, or in printable encoding format (also known as Base64 encoding) as defined by the Internet RFC 1421 standard.  In the latter case, the encoding must be bounded at the beginning by a string that starts with \"-----BEGIN\", and bounded at the end by a string that starts with \"-----END\".\n\n  - You import a certification for two reasons:\n    - to add it to the list of trusted certificates, or\n\n    - to import a certificate reply received from a CA as the result of submitting a Certificate Signing Request (see the -certreq command) to that CA.\n\n- -list\n\n  - Syntax\n\n    > -list {-alias alias} {-storetype storetype} {-keystore keystore} [-storepass storepass] [-provider provider_class_name] {-v | -rfc} {-Jjavaoption}\n\n  - Prints (to stdout) the contents of the keystore entry identified by alias.  If no alias is specified, the contents of the entire keystore are printed.\n\n  - If the -v option is specified, the certificate is printed in human-readable format, with additional information  such as the owner, issuer, and serial number. If the -rfc option is specified, certificate contents are printed using the printable encoding format, as defined by the Internet RFC 1421 standard You cannot specify both -v and -rfc.\n\n  - The keystore password is normally ‘changeit’ without quotes.\n\n- -noprompt\n\n  - If the -noprompt option is given, there is no interaction with the user.\n\n- -printcert {-file cert_file} {-v} {-Jjavaoption}\n  \n  - Reads the certificate from the file cert_file, and prints its contents in a human-readable format. If no file is given, the certificate is read from stdin.\n  - The certificate may be either binary encoded or in printable encoding format, as defined by the Internet RFC 1421 standard.\n  - Note: This option can be used independently of a keystore.\n\n- -storepass storepass\n\n  - The password which is used to protect the integrity of the keystore.\n\n- -v\n\n  - The -v option can appear for all subcommands except -help.  If it appears, it signifies \"verbose\" mode; detailed certificate information will be output.\n  \n## EXAMPLES\n\n- -import\n\n  - To import a certificate a.cer with alias name iam_qa into keystore cacerts we use\n  \n```bash\n$ keytool -v -import -file /app/a.cer -alias iam_qa -keystore /usr/java/default/jre/lib/security/cacerts\n.\n```\n\n- Similarly to import the .cer into .jks keystore we use\n\n```bash\n$ keytool -v -import -file xi52-cert.cert.hosting.asda.com2018.cer -alias ukil -keystore keystore.jks\n.\n```\n\n- Similarly to import the .cer into .jks keystore we can also use\n\n```bash\n$ keytool -keystore kestore.jks -importcert -file xi52-cert.cert.hosting.asda.com2018.cer -alias ukil\n.\n```\n\n- -list\n\n  - to print (to stdout) the contents of the keystore entry identified by alias. \n\n```bash\n$ keytool -v -list -keystore sample.truststore -alias aliasNameGiven\nEnter keystore password\n.\n```\n\n- -noprompt, -storepass\n\n```bash\n$ echo | openssl s_client -connect qa.iam.platform.prod.company.com:443 2>&1 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /tmp/a.cer\n$ keytool -noprompt -import -file /tmp/a.cer -alias iam1233_qa -keystore /usr/java/default/jre/lib/security/cacerts -storepass changeit \nCertificate was added to keystore\n$\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_037_ln/ReadMe.md",
    "content": "# ln\n\n- [ln](https://man7.org/linux/man-pages/man1/ln.1.html)\n  \n## NAME\n\nlink, ln -- make links\n\n## DESCRIPTION\n\nThe ln utility creates a new directory entry (linked file) which has the same modes as the original file.  It is useful for maintaining multiple copies of a file in many places at once without using up storage for the ``copies''; instead, a link ``points'' to the original copy.  There are two types of links; hard links and symbolic links. How a link ``points'' to a file is one of the differences between a hard and symbolic link.\n\nIf you want to create a new symbolic link then you can use the following command. If you want to change the existing symbolic link then you can delete the existing symbolic link using rm command and then create a new one.\n\nYou can check where a symbolic link points to using the ls -l fileName command\n\n## OPTIONS\n\n- -s\n  - Create a symbolic link.\n\n## EXAMPLES\n\n```bash\n## let's say you created a new binary at /Users/username/aws-cli/bin/aws. So /Users/username/aws-cli/bin/aws --version works. \n## Now you want to add this to /usr/local/bin/ i.e. aws --version should work assuming /usr/local/bin is in $PATH\n# ln -s /path/to/existing/file /path/to/new/that/should/be/created\n$ ln -s /Users/username/aws-cli/bin/aws /usr/local/bin/aws \n.\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_038_lsof/ReadMe.md",
    "content": "# lsof\n\n## NAME\n\nlsof - list open files\n  \n## EXAMPLES on macOS\n\nTo check which process is using port 8080 use the following command\n\n[stackoverflow.com » Who is listening on a given TCP port on Mac OS X?](https://stackoverflow.com/questions/4421633/who-is-listening-on-a-given-tcp-port-on-mac-os-x)\n\n```bash\n# -i : selects the listing of files any of whose Internet address matches the address specified in i.  If no address is specified, this option selects the listing of all Internet and x.25 (HP-UX) network files.\n# -P : inhibits the conversion of port numbers to port names for network files.\n# -n : inhibits the conversion of network numbers to host names for network files.\nlsof -i -P -n | grep LISTEN | egrep :8080\n```\n\nOutput\n\n```bash\n$ lsof -i -P -n | grep LISTEN | egrep :8080\nmain      12615 <username>    8u  IPv6 0xxxxxxxxxxxxxx     0t0  TCP *:8080 (LISTEN)\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_039_mail/ReadMe.md",
    "content": "# mail\n\n## NAME\n\n- mail - send and receive mail\n\n## SYNOPSIS\n\n> mail [-iInv] [-s subject] [-c cc-addr] [-b bcc-addr] to-addr... [-- sendmail-options...]\n\n> mail [-iInNv] -f [name]\n\n> mail [-iInNv] [-u user]\n\n## Description\n\nMail is an intelligent mail processing system, which has a command syntax reminiscent of ed(1) with lines replaced by messages.\n\n## OPTIONS\n\n- -v\n  - Verbose mode.  The details of delivery are displayed on the user on terminal.\n- -i\n  - Ignore tty interrupt signals.  This is particularly useful when using mail on noisy phone lines.\n- -I\n  - Forces mail to run in interactive mode even when input isnât a terminal.  In particular, the â~â special character when sending mail is only active in interactive mode\n- -n\n  - Inhibits reading /etc/mail.rc upon startup.\n- -N    \n  - Inhibits the initial display of message headers when reading mail or editing a mail folder.\n- -s\n  - Specify subject on command line (only the first argument after the -s flag is used as a subject; be careful to quote subjects containing spaces.)\n- -c\n  - Send carbon copies to list of users.\n-b\n  - Send blind carbon copies to list.  List should be a comma-separated list of names.\n\n## EXAMPLE\n\n```bash\n-bash-3.2$ echo \"Mail Body\" | mail -v -s \"Subject\" \"ankit.rathi@accelya.com\"\n\n$ mail -s \"$WRKSPZ_BRNC_IN Build Stopped at `date` [Machine:`hostname`]: Build-Locks found\" \"${SCM_MAIL_G}\"<${BLD_LOCK}\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_040_mkdir/ReadMe.md",
    "content": "# mkdir\n\n## NAME\n\nmkdir -- make directories\n\n## SYNOPSIS\n\n> mkdir [-pv] [-m mode] directory_name …\n\n## DESCRIPTION\n\nThe mkdir utility creates the directories named as operands, in the order specified, using mode rwxrwxrwx (0777) as modified by the current umask(2).\n\n## OPTIONS\n\nThe options are as follows:\n\n* -m\n  * mode Set the file permission bits of the final created directory to the specified mode.  The mode argument can be in any of the formats specified to the chmod(1) command. If a symbolic mode is specified, the operation characters `+` and `-` are interpreted relative to an initial mode of `a=rwx`.\n\n* -p\n  * Create intermediate directories as required.  If this option is not specified, the full path prefix of each operand must already exist.  On the other hand, with this option specified, no error will be reported if a directory given as an operand already exists.  Intermediate directories are created with permission bits of rwxrwxrwx (0777) as modified by the current umask, plus write and search permission for the owner.\n\n* -v\n  * Be verbose when creating directories, listing them as they are created.\n\n* The user must have write permission in the parent directory.\n\n```bash\n$ mkdir -p /app/ankit/anything\n.\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_041_mount/ReadMe.md",
    "content": "# mount\n\n## NAME\n\nmount -- mount file systems\n\n## SYNOPSIS\n\n> mount [-adfruvw] [-t lfs | external_type]\n\n> mount [-dfruvw] special | mount_point\n\n> mount [-dfruvw] [-o options] [-t lfs | external_type] special mount_point\n\n## DESCRIPTION\n\nThe mount command calls the mount(2) system call to prepare and graft a special device or the remote node (rhost:path) on to the file system tree at the point mount_point, which must be a directory.  If either special or mount_point are not provided, the appropriate information is obtained via the getfsent(3) library routines.\n\nThe system maintains a list of currently mounted file systems.  If no arguments are given to mount, this list is printed.\n\n## OPTIONS\n\n* -o\n  * Options are specified with a -o flag followed by a comma separated string of options.  The following options are available:\n  * force\n    * The same as -f; forces the revocation of write access when trying to downgrade a filesystem mount status from read-write to read-only.\n\n  * -t lfs | external type\n    * The argument following the -t is used to indicate the file system type.  There is no default local file system for use with mount. A type must be specified in order to mount a non-NFS filesystem.  The -t option can be used to indicate that the actions should only be taken on filesystems of the specified type. More than one type may be specified in a comma separated list.  The list of filesystem types can be prefixed with ``no'' to specify the filesystem types for which action should not be taken. For example, the mount command:\n      > mount -a -t nonfs,hfs\n    * mounts all filesystems except those of type NFS and HFS.\n    * If the type is not one of the internally known types, mount will attempt to execute a program in /sbin/mount_XXX where XXX is replaced by the type name.  For example, nfs filesystems are mounted by the program /sbin/mount_nfs.\n\n* -t nfs\n  * This is used to mount nfs file system\n\n* -o\n  * -o vers=<num> to specify NFS protocol version.\n\n* vers=<num[.num]>[-<num[.num]>]\n  * NFS protocol version number - 2 for NFSv2, 3 for NFSv3 and 4 for NFSv4.  The default is to try version 3 first, and fall back to version 2 if the mount fails.\n\n* server:/path directory\n  * server is the fqdn of the server used for nfs shared\n  * path is the ‘dir path’ in the server which will be mounted\n  * directory is the ‘dir path’ in the local system which will be mounted to the remote path.\n\n## EXAMPLES\n\nIntroduction\n\n* A filesystem is a way that an operating system organizes files on a disk. These filesystems come in many different flavors depending on your specific needs. For Windows, you have the NTFS, FAT, FAT16, or FAT32 filesystems. For Macintosh, you have the HFS filesystem\n* In order to access a filesystem in Linux you first need to mount it. Mounting a filesystem simply means making the particular filesystem accessible at a certain point in the Linux directory tree. When mounting a filesystem it does not matter if the filesystem is a hard disk partition, CD-ROM, floppy, or USB storage device. You simply need to know the device name associated with the particular storage device and a directory you would like to mount it to.\n\nSeeing a list of mounted filesystems\n\n* In order to determine what filesystems are currently being used type the command:\n\n```bash\n$ mount\n.\n```\n\n* When you type this at a command prompt, this command will display all the mounted devices, the filesystem type it is mounted as, and the mount point. The mount point being local directory that is assigned to a filesystem during the process of mounting\n\nHow to mount filesystems\n\n* Before you can mount a filesystem to a directory, you should (NOT MUST)  be logged in as root (some filesystems can be mountable by a standard user) and the directory you want to mount the filesystem to must first exist.\n\nAnother example\n\n* As our first example, lets use a real world example of accessing your Windows files from a floppy in Linux.\n* In order to mount a device to a particular folder, that folder must exist. Many Linux distributions will contain a /mnt folder, or even a /mnt/floppy folder, that is used to mount various devices. If the folder that you would like to mount the device to exists, then you are all set. If not you need to create it like this:\n\n```bash\n$ mkdir /mnt/floppy\n.\n```\n\n* This command will have now created a directory called /mnt/floppy. The next step would be to mount the filesystem to that folder or mount point.\n\n```bash\n$ mount -t msdos /dev/fd0 /mnt/floppy\n.\n```\n\n* You have now mounted an msdos filesystem, which is indicated by the -t (type) option. The device is recognized by the /mnt/floppy point. Now you can access MS-DOS formatted disks as you would any other directory.\n\n  * -t lfs | external type\n    * The argument following the -t is used to indicate the file system type.  There is no default local file system for use with mount. A type must be specified in order to mount a non-NFS filesystem.  The -t option can be used to indicate that the actions should only be taken on filesystems of the specified type. More than one type may be specified in a comma separated list.  The list of filesystem types can be prefixed with ``no'' to specify the filesystem types for which action should not be taken. For example, the mount command:\n    * mount -a -t nonfs,hfs\n  * mounts all filesystems except those of type NFS and HFS.\n  \n**To mount a CD-ROM:**\n\n```bash\n$ mount -t iso9660 /dev/cdrom /mnt/cdrom\n.\n```\n\n* Again this is a similar method as above to mount the CD-ROM.\n\nHow to unmount a filesystem\n\n* When you are done using a particular filesystem, you should unmount. The command to unmount a filesystem is the umount command.\n  * When unmounting a filesystem you simply type umount followed by the mount point. For example:\n\n```bash\n$ umount /mnt/floppy\n.\n$ umount /mnt/cdrom\n.\n```\n\nTo mount nsf shared locations we have to execute\n\n```bash\n$ mkdir -p /home/looker/looker/models-share\n.\n$ chown -R looker:looker /home/looker/looker/models-share\n.\n$ chown looker:looker /home/looker/looker/models-share\n.\n$ mount -t nfs -o vers=3 dfw-nfs3-vs10.prod.com:/dfw_prd_asda_looker_01 /home/looker/looker/models-share\n.\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_042_nc/ReadMe.md",
    "content": "# nc\n\n## NAME\n\nnc -- arbitrary TCP and UDP connections and listens\n\n## SYNOPSIS\n\n> nc [-46AcDCdhklnrtUuvz] [-b boundif] [-i interval] [-p source_port] [-s source_ip_address] [-w timeout] [-X proxy_protocol] [-x proxy_address[:port]][--apple-delegate-pid pid] [--apple-delegate-uuid uuid] [--apple-ext-bk-idle] [--apple-nowakefromsleep] [--apple-ecn mode] [hostname] [port[s]]\n\n## DESCRIPTION\n\nThe nc (or netcat) utility is used for just about anything under the sun involving TCP or UDP.  It can open TCP connections, send UDP packets, listen on arbitrary TCP and UDP ports, do port scanning, and deal with both IPv4 and IPv6.  Unlike telnet(1), nc scripts nicely, and separates error messages onto standard error instead of sending them to standard output, as telnet(1) does with some.\n\nCommon uses include:\n\n* simple TCP proxies\n* shell-script based HTTP clients and servers\n* network daemon testing\n* a SOCKS or HTTP ProxyCommand for ssh(1)\n\n## OPTIONS\n\n* -v\n  * Have nc give more verbose output.\n\n* -u\n  * Use UDP instead of the default option of TCP\n\n* -s\n  * source_ip_address\n  * Specifies the IP of the interface which is used to send the packets.  It is an error to use this option in conjunction with the -l option.\n\n* -w timeout\n  * If a connection and stdin are idle for more than timeout seconds, then the connection is silently closed.  The -w flag has no effect on the -l option, i.e. nc will listen forever for a connection, with or without the -w flag.  The default is no timeout.\n\n## EXAMPLE\n\n* Open a TCP connection to port 42 of host.example.com, using port 31337 as the source port, with a\ntimeout of 5 seconds:\n\n```bash\n$ nc -p 31337 -w 5 host.example.com 42 -v\n.\n```\n\n* To validate whether a particual UDP port on a host is open or not [serverfault.com](https://serverfault.com/questions/416205/testing-udp-port-connectivity)\n\n```bash\n########### Tested on ORACLE LINUX SERVER 8.7 ###################\n# Server Machine, this is were we need to test whether a particual port is open or not, let's say 6111\nuser@server $  nc -ul 6111 -v\nNcat: Version 7.70 ( https://nmap.org/ncat )\nNcat: Listening on :::6111\nNcat: Listening on 0.0.0.0:6111\n\n# Client Machine, from where we want to test the connectivity to server machine via UDP protocol\nuser@client $ nc -u <server_ip_here> 6111 -v\nNcat: Version 7.70 ( https://nmap.org/ncat )\nNcat: Connected to <server_ip_here>:6111.\n\n# You type a message on the client machine and press enter, you should see the message on the server side\n# You might want to disable the OS firewall, see systemctl status firewalld, also you might want to ensure the the UDP protocol is allowed by any security groups or network security groups coming in between\n# Client Machine, from where we want to test the connectivity to server machine via UDP protocol\nuser@client $ nc -u <server_ip_here> 6111 -v\nNcat: Version 7.70 ( https://nmap.org/ncat )\nNcat: Connected to <server_ip_here>:6111.\nhi, from the client\n\n################################ When you don't see the message on the server side ######################################################\n# Server machine, in case you don't see the message then the port may or maynot be open, we cannot be sure until we rule out security groups / network security groups are checked\n# So the following scenario\nuser@server $  nc -ul 6111 -v\nNcat: Version 7.70 ( https://nmap.org/ncat )\nNcat: Listening on :::6111\nNcat: Listening on 0.0.0.0:6111\n\n\n################################ When you see the message on the server side ######################################################\n# Incase the port is open, you should see the same message on the server side, also a msg saying that there was a connection from <client_ip>\nuser@server $ nc -ul 6111 -v\nNcat: Version 7.70 ( https://nmap.org/ncat )\nNcat: Listening on :::6111\nNcat: Listening on 0.0.0.0:6111\nNcat: Connection from <client_ip_here>.\nhi, from the client\n\n\n#####################################  nc -uz <server_ip> <port> seems to give a FASLE positive, i.e. true even when the port is not open ######\n# The following is example of FALSE POSITIVE, i.e. when the PORT CONNECTIVITY ISN\"T ACTUALLY ALLOWED\n$ user@client $ nc -uz <server_ip_here> 6111 -v\nNcat: Version 7.70 ( https://nmap.org/ncat )\nNcat: Connected to <server_ip_here>:6111.\nNcat: UDP packet sent successfully\nNcat: 1 bytes sent, 0 bytes received in 2.01 seconds.\n```\n\n* Open a TCP connection to port 42 of host.example.com using 10.1.2.3 as the IP for the local end of the connection:\n\n```bash\n$ nc -s 10.1.2.3 host.example.com 42 \n.\n```\n\n* Open a TCP connection to port 1521 of 127.0.0.1 :\n\n```bash\n$ nc -w 3 127.0.0.1 1521 -v\n.\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_043_netstat/ReadMe.md",
    "content": "# netstat\n\n## NAME\n\nnetstat -- show network status\n\n## SYNOPSIS\n\n> netstat [-AaLlnW] [-f address_family | -p protocol]\n\n> netstat [-gilns] [-v] [-f address_family] [-I interface]\n\n> netstat -i | -I interface [-w wait] [-c queue] [-abdgqRtS]\n\n> netstat -s [-s] [-f address_family | -p protocol] [-w wait]\n\n> netstat -i | -I interface -s [-f address_family | -p protocol]\n\n> netstat -m [-m]\n\n> netstat -r [-Aaln] [-f address_family]\n\n> netstat -rs [-s]\n\n## DESCRIPTION\n\nThe netstat command symbolically displays the contents of various network-related data structures.  There are a number of output formats, depending on the options for the information presented.  \n\nThe first form of the command displays a list of active sockets for each protocol.  \n\nThe second form presents the contents of one of the other network data structures according to the option selected.\n\nUsing the third form, with a wait interval specified, netstat will continuously display the information regarding packet traffic on the configured network interfaces.  \n\nThe fourth form displays statistics for the specified protocol or address family. If a wait interval is specified, the protocol information over the last interval seconds will be displayed.\n\nThe fifth form displays per-interface statistics for the specified protocol or address family.  \n\nThe sixth form displays mbuf(9) statistics.  \n\nThe seventh form displays routing table for the specified address family.  \n\nThe eighth form displays routing statistics.\n\n* A brief description of each state -\n  * ESTABLISHED\n    * The socket has an established connection.\n  * SYN_SENT\n    * The socket is actively attempting to establish a connection.\n  * SYN_RECV\n    * A connection request has been received from the network.\n  * FIN_WAIT1\n    * The socket is closed, and the connection is shutting down.\n  * FIN_WAIT2\n    * Connection is closed, and the socket is waiting for  a shutdown from the remote end.\n  * TIME_WAIT\n    * The socket is waiting after close to handle packets still in the network.\n  * CLOSE  \n    * The socket is not being used.\n  * CLOSE_WAIT\n    * The remote end has shut down, waiting for the socket to close.\n  * LAST_ACK\n    * The remote end has shut down, and the socket is closed.  Waiting for acknowledgement.\n  * LISTEN \n    * The  socket is listening for incoming connections.  Such sockets are not included in the output  unless you specify the --listening (-l) or --all (-a) option.\n  * CLOSING\n    * Both  sockets are shut down but we still don't have all our data sent.\n  * UNKNOWN\n    * The state of the socket is unknown.\n\nConsider two programs attempting a socket connection (call them a and b). Both set up sockets and transition to the LISTEN state. Then one program (say a) tries to connect to the other (b). a sends a request and enters the SYN_SENT state, and b receives the request and enters the SYN_RECV state. When b acknowledges the request, they enter the ESTABLISHED state, and do their business. Now a couple of things can happen:\n\n* a wishes to close the connection, and enters FIN_WAIT1. b receives the FIN request, sends an ACK (then a enters FIN_WAIT2), enters CLOSE_WAIT, tells a it is closing down and the enters LAST_ACK. Once a acknowledges this (and enters TIME_WAIT), b enters CLOSE. a waits a bit to see if anythings is left, then enters CLOSE.\n* a and b have finished their business and decide to close the connection (simultaneous closing). When a is in FIN_WAIT, and instead of receiving an ACK from b, it receives a FIN (as b wishes to close it as well), a enters CLOSING. But there are still some messages to send (the ACK that a is supposed to get for its original FIN), and once this ACK arrives, a enters TIME_WAIT as usual.\n\n## OPTIONS\n\n* -a\n  * With the default display, show the state of all sockets; normally sockets used by server processes are not shown. With the routing table display (option -r, as described below), show protocol-cloned routes (routes generated by a RTF_PRCLONING parent route); normally these routes are not shown.\n* -l\n  * Print full IPv6 address.\n* -n\n  * Show network addresses as numbers (normally netstat interprets addresses and attempts to display them symbolically).  This option may be used with any of the display formats.\n* -f address_family\n  * Limit statistics or address control block reports to those of the specified address family.  The following address families are recognized: inet, for AF_INET, inet6, for AF_INET6 and unix, for AF_UNIX.\n* -p protocol\n  * Show statistics about protocol, which is either a well-known name for a protocol or an alias for it.  Some protocol names and aliases are listed in the file /etc/protocols. The special protocol name ``bdg'' is used to show bridging statistics.  A null response typically means that there are no interesting numbers to report. The program will complain if protocol is unknown or if there is no statistics routine for it.\n  \n## EXAMPLES\n\nLinux netstat syntax\n\n```bash\n$ netstat -tulpn | grep LISTEN\n.\n```\n\nFreeBSD/MacOS X netstat syntax\n\n```bash\n$ netstat -anp tcp | grep LISTEN\ntcp46      0 0 *.3283                 *.* LISTEN     \ntcp4       0 0 127.0.0.1.29754        *.* LISTEN\n```\n\nOpenBSD netstat syntax\n\n```bash\n$ netstat -na -f inet | grep LISTEN\n.\n$ netstat -nat | grep LISTEN\n.\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_044_nmap/ReadMe.md",
    "content": "# nmap\n\n## NAME\n\nnmap - Network exploration tool and security / port scanner\n\n## SYNOPSIS\n\n> nmap [Scan Type...] [Options] {target specification}\n\n## DESCRIPTION\n\nNmap (\"Network Mapper\") is an open source tool for network exploration and security auditing. It was designed to rapidly scan large networks, although it works fine against single hosts.\n\nNmap uses raw IP packets in novel ways to determine\n\n- what hosts are available on the network, what services (application name and version) those hosts are offering,\n- what operating systems (and OS versions) they are running,\n- what type of packet filters/firewalls are in use, and\n- dozens of other characteristics.\n\nWhile Nmap is commonly used for security audits, many systems and network administrators find it useful for routine tasks such as network inventory, managing service upgrade schedules, and monitoring host or service uptime.\n\nThe output from Nmap is a list of scanned targets, with supplemental information on each depending on the options used.\n\nKey among that information is the \"interesting ports table\".  That table lists the port number and protocol, service name, and state. The state is either open, filtered, closed, or unfiltered.  \n\n- Open means that an application on the target machine is listening for connections/packets on that port.  \n- Filtered means that a firewall, filter, or other network obstacle is blocking the port so that Nmap cannot tell whether it is open or closed.  \n- Closed ports have no application listening on them, though they could open up at any time. \n- Ports are classified as unfiltered when they are responsive to Nmap's probes, but Nmap cannot determine whether they are open or closed.\n- Nmap reports the state combinations open|filtered and closed|filtered when it cannot determine which of the two states describe a port.\n\nThe port table may also include software version details when version detection has been requested. When an IP protocol scan is requested (-sO), Nmap provides information on supported IP protocols rather than listening ports.\n\nNmap can provide further information on targets, including reverse DNS names, operating system guesses, device types, and MAC addresses.\n\n### OPTIONS\n\n- -sU (UDP scans)\n  - While most popular services on the Internet run over the TCP protocol, UDP[6] services are widely deployed. DNS, SNMP, and DHCP (registered ports 53, 161/162, and 67/68) are three of the most common. Because UDP scanning is generally slower and more difficult than TCP, some security auditors ignore these ports. This is a mistake, as exploitable UDP services are quite common and attackers certainly don't ignore the whole protocol. Fortunately, Nmap can help inventory UDP ports.\n  - UDP scan is activated with the -sU option. It can be combined with a TCP scan type such as SYN scan (-sS) to check both protocols during the same run.\n  - UDP scan works by sending a UDP packet to every targeted port. For some common ports such as 53 and 161, a protocol-specific payload is sent to increase response rate, but for most ports the packet is empty unless the --data, --data-string, or --data-length options are specified. If an ICMP port unreachable error (type 3, code 3) is returned, the port is closed. Other ICMP unreachable errors (type 3, codes 0, 1, 2, 9, 10, or 13) mark the port as filtered. Occasionally, a service will respond with a UDP packet, proving that it is open. If no response is received after retransmissions, the port is classified as open|filtered. This means that the port could be open, or perhaps packet filters are blocking the communication. Version detection (-sV) can be used to help differentiate the truly open ports from the filtered ones.\n\n- -O (Enable OS detection)\n  - Enables OS detection, as discussed above. Alternatively, you can use -A to enable OS detection along with other things.\n- -sT (TCP connect scan)\n  - TCP connect scan is the default TCP scan type when SYN scan is not an option. This is the case when a user does not have raw packet privileges. Instead of writing raw packets as most other scan types do, Nmap asks the underlying operating system to establish a connection with the target machine and port by issuing the connect system call. This is the same high-level system call that web browsers, P2P clients, and most other network-enabled applications use to establish a connection. It is part of a programming interface known as the Berkeley Sockets API. Rather than read raw packet responses off the wire, Nmap uses this API to obtain status information on each connection attempt.\n  - When SYN scan is available, it is usually a better choice. Nmap has less control over the high level connect call than with raw packets, making it less efficient. The system call completes connections to open target ports rather than performing the half-open reset that SYN scan does. Not only does this take longer and require more packets to obtain the same information, but target machines are more likely to log the connection. A decent IDS will catch either, but most machines have no such alarm system. Many services on your average Unix system will add a note to syslog, and sometimes a cryptic error message, when Nmap connects and then closes the connection without sending data. Truly pathetic services crash when this happens, though that is uncommon. An administrator who sees a bunch of connection attempts in her logs from a single system should know that she has been connect scanned.\n  \n## EXAMPLES\n\nThe syntax is\n\n```bash\nsudo nmap -sT -O localhost\n.\n```\n\nlist open UDP ports\n\n```bash\nsudo nmap -sU -O 192.168.2.13\n.\n```\n\nlist open TCP ports\n\n```bash\nsudo nmap -sT -O 192.168.2.13\n.\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_045_nohup/ReadMe.md",
    "content": "# nohup\n\n## NAME\n\nnohup -- invoke a utility immune to hangups\n\nMost of the time you login into remote server via ssh. If you start a shell script or command and you exit (abort remote connection), the process / command will get killed. Sometime job or command takes a long time. If you are not sure when the job will finish, then it is better to leave job running in background. But, if you log out of the system, the job will be stopped and terminated by your shell. What do you do to keep job running in the background when process gets SIGHUP? Say hello to nohup command\n\n## SYNOPSIS\n\n> nohup [--] utility [arguments]\n\n## DESCRIPTION\n\nThe nohup utility invokes utility with its arguments and at this time sets the signal SIGHUP to be ignored.  If the standard output is a terminal, the standard output is appended to the file nohup.out in the current directory.  If standard error is a terminal, it is directed to the same place as the standard output.\n\nSome shells may provide a builtin nohup command which is similar or identical to this utility.  Consult the builtin(1) manual page.\n\n## ENVIRONMENT\n\nThe following variables are utilized by nohup:\n\n* HOME  If the output file nohup.out cannot be created in the current directory, the nohup utility uses the directory named by HOME to create the file.\n* PATH  Used to locate the requested utility if the name contains no `/' characters.\n\n## EXIT STATUS\n\nThe nohup utility exits with one of the following values:\n\n* 126     The utility was found, but could not be invoked.\n* 127     The utility could not be found or an error occurred in nohup.\n* Otherwise, the exit status of nohup will be that of utility.\n\n## EXAMPLES\n\nSyntax Wise\n\n```bash\nnohup command-name &\nnohup /path/to/command-name arg1 arg2 &\n```\n\nWhere\n\n* command-name : is name of shell script or command name. You can pass argument to command or a shell script.\n* & : nohup does not automatically put the command it runs in the background; you must do that explicitly, by ending the command line with an & symbol.\n\nRunning sqlplus in background in unix\n\n```bash\n$ nohup sqlplus USERNAME/password@DBNAME @test.sql &\n.\n$ nohup sqlplus USERNAME/password@SCHEMA_NAME @test.sql &\n.\n$ nohup sqlplus CAVERSION/password@ATGQA2 @/tmp/myscript.sql &\n.\n$ nohup sqlplus MTEPWSTAG/auwbkjdbfij8633@ADSADWH @/export/home/release/DB_Build/WMT_ADSA_DB/Slot_RPT/MTEPWSTAG/Scripts_BEFORE/R18_3_UKGRA-709_mtepwstag_183020.sql &\n.\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_046_nslookup/ReadMe.md",
    "content": "# nslookup\n\n## NAME\n\nnslookup - query Internet name servers interactively\n\n## SYNOPSIS\n\n> nslookup [-option] [name | -] [server]\n\n## DESCRIPTION\n\nNslookup is a program to query Internet domain name servers.  Nslookup has two modes: interactive and non-interactive. Interactive mode allows the user to query name servers for information about various hosts and domains or to print a list of hosts in a domain. Non-interactive mode is used to print just the name and requested information for a host or domain.\n\n## ARGUMENTS\n\nInteractive mode is entered in the following cases:\n\n* when no arguments are given (the default name server will be used)\n* when the first argument is a hyphen (-) and the second argument is the host name or Internet address of a name server.\n\nNon-interactive mode is used when the name or Internet address of the host to be looked up is given as the first argument. The optional second argument specifies the host name or address of a name server.\n\n## EXAMPLES\n\nWhen nslookup starts, it prints the name and IP address of your local DNS server. Commands\n\n```bash\nnslookup\n> set type=a\n> google.com.\nServer: 172.30.93.117\nAddress: 172.30.93.117#53\n\nNon-authoritative answer:\nName: google.com\nAddress: 172.217.164.110\n> \n```\n\nNote that Non-authoritative answer clause means that you are looking up google.com not the first time, which means that the the name server uses its cache to generate the answer, resulting in the \"Non-authoritative\" answer.\n\nUsing trailing dot at the end of the fully qualified domain name is equivalent to set nosearch (see below.) This is important when debugging DNS servers. The dot is preferred.\n\n```bash\nnslookup\n> set type=mx\n> google.com\nServer: 172.30.93.117\nAddress: 172.30.93.117#53\n\nNon-authoritative answer:\ngoogle.com mail exchanger = 20 alt1.aspmx.l.google.com.\ngoogle.com mail exchanger = 10 aspmx.l.google.com.\ngoogle.com mail exchanger = 50 alt4.aspmx.l.google.com.\ngoogle.com mail exchanger = 30 alt2.aspmx.l.google.com.\ngoogle.com mail exchanger = 40 alt3.aspmx.l.google.com.\n\nAuthoritative answers can be found from:\n> \n```\n\nThe first four lines show that the domain google.com has four MX records. Mail addressed to that domain is sent to the machine with the lowest preference (cost). If that machine is down or not accepting mail, the message is sent to the machine with the next higher cost, and so on. The last four lines show the IP addresses (A records) for those machines.\n\nNslookup is a program to query Internet domain name servers.\n\nDomain Name Servers (DNS) are the Internet's equivalent of a phone book. They maintain a directory of domain names and translate them to Internet Protocol (IP) addresses.\n\n```bash\nnslookup microsoft.com\nServer:     8.8.8.8\nAddress:    8.8.8.8#53\n\nNon-authoritative answer:\nName:    microsoft.com\nAddress: 134.170.185.46\nName:    microsoft.com\nAddress: 134.170.188.221\n```\n\n* Here, 8.8.8.8 is the address of our system's Domain Name Server. This is the server our system is configured to use to translate domain names into IP addresses. \"#53\" indicates that we are communicating with it on port 53, which is the standard port number domain name servers use to accept queries.\n\n* Below this, we have our lookup information for microsoft.com. Our name server returned two entries, 134.170.185.46 and 134.170.188.221. This indicates that microsoft.com uses a round robin setup to distribute server load. When you access micrsoft.com, you may be directed to either of these servers and your packets will be routed to the correct destination.\n\n* You can see that we have received a \"Non-authoritative answer\" to our query. An answer is \"authoritative\" only if our DNS has the complete zone (When referring to a computer network, a zone is a location subset of a local-area network (LAN).) file information for the domain in question. More often, our DNS will have a cache of information representing the last authoritative answer it received when it made a similar query; this information is passed on to you, but the server qualifies it as \"non-authoritative\": the information was recently received from an authoritative source, but the DNS server is not itself that authority.\n\n## Other Examples\n\n* To run the sql queries in background\n\n```bash\nnohup sqlplus USERNAME/PASSWORD@DBNAME @/apps/home/dbfile.sql &\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_047_openssl/ReadMe.md",
    "content": "# [openssl](https://www.openssl.org/docs/manpages.html)\n\n- [openssl](#openssl)\n  - [NAME](#name)\n    - [DESCRIPTION](#description)\n    - [COMMANDS](#commands)\n      - [enc](#enc)\n        - [EXAMPLES for enc](#examples-for-enc)\n      - [pkcs12](#pkcs12)\n        - [Examples for pkcs12](#examples-for-pkcs12)\n      - [rsa](#rsa)\n        - [EXAMPLES for rsa](#examples-for-rsa)\n      - [s\\_client](#s_client)\n        - [EXAMPLES for s\\_client](#examples-for-s_client)\n      - [x509](#x509)\n        - [EXAMPLES for x509](#examples-for-x509)\n      - [req](#req)\n        - [EXAMPLES for req](#examples-for-req)\n\n## NAME\n\nopenssl - OpenSSL command line tool\n\n### DESCRIPTION\n\nOpenSSL is a cryptography toolkit implementing the Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS v1) network protocols and related cryptography standards required by them.\n\nThe openssl program is a command line tool for using the various cryptography functions of OpenSSL's crypto library from the shell.  It can be used for\n\n- Creation of RSA, DH and DSA key parameters\n- Creation of X.509 certificates, CSRs and CRLs\n- Calculation of Message Digests\n- Encryption and Decryption with Ciphers\n- SSL/TLS Client and Server Tests\n- Handling of S/MIME signed or encrypted mail\n\n### COMMANDS\n\n#### enc\n\nNAME\n\nopenssl-enc, enc - symmetric cipher routines\n\nDESCRIPTION\n\nThe symmetric cipher commands allow data to be encrypted or decrypted using various block and stream ciphers using keys based on passwords or explicitly provided. Base64 encoding or decoding can also be performed either by itself or in addition to the encryption or decryption.\n  \n##### EXAMPLES for enc\n\nJust base64 encode a binary file:\n\n```bash\n#   -in filename : The input filename, standard input by default.\n#   -out filename : The output filename, standard output by default.\n$ openssl base64 -in file.bin -out file.b64\n.\n```\n\nDecode the same file\n\n```bash\n# -d : Decrypt the input data.\n$ openssl base64 -d -in file.b64 -out file.bin\n.\n```\n\n#### pkcs12\n\nNAME\n\npkcs12 - PKCS#12 file utility\n\nDESCRIPTION\n\nThe pkcs12 command allows PKCS#12 files (sometimes referred to as PFX files) to be created and parsed. PKCS#12 files are used by several programs including Netscape, MSIE and MS Outlook.\n\n##### Examples for pkcs12\n\n```bash\n# -in filename : This specifies filename of the PKCS#12 file to be parsed. Standard input is used by default.\n# -out filename : The filename to write certificates and private keys to, standard output by default.  They are all written in PEM format.\n$ openssl pkcs12 -in asda-gr-int.company.com.pfx -out asda-gr-text.int.company.com.pem\n.\n```\n\n#### rsa\n\nNAME\n\nopenssl-rsa, rsa - RSA key processing tool\n\nDESCRIPTION\n\nThe rsa command processes RSA keys. They can be converted between various forms and their components printed out. Note this command uses the traditional SSLeay compatible format for private key encryption: newer applications should use the more secure PKCS#8 format using the pkcs8 utility.\n  \n##### EXAMPLES for rsa\n\nConsider a certificate “certificate.pem” containing encrypted private key. You can decrypt it using the following command\n\n```bash\n# -in filename : This specifies the input filename to read a key from or standard input if this option is not specified. If the key is encrypted a pass phrase will be prompted for.\n# -out filename : This specifies the output filename to write a key to or standard output if this option is not specified. If any encryption options are set then a pass phrase will be prompted for. The output filename should not be the same as the input filename.\n$ openssl rsa -in certificate.pem -out decryptedKeyFile.crt\n.\n```\n\n#### s_client\n\nNAME\n\ns_client - SSL/TLS client program\n\nDESCRIPTION\n\nThe s_client command implements a generic SSL/TLS client which connects to a remote host using SSL/TLS. It is a very useful diagnostic tool for SSL servers.\n\n##### EXAMPLES for s_client\n\nTo download the certificate directly we use the following command\n\n```bash\n$ echo | openssl s_client -connect qa.iam.platform.prod.company.com:443 2>&1 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /tmp/iam_cert.pem;\n.\n```\n\nTo download the self-signed certificate of nginx server with server name configured as  `repo.maven.apache.org`\n\n- 10.0.1.4 is your nginx IP\n\n```nginx\n...\n  listen 443 ssl;\n\n  server_name \n    repo.maven.apache.org\n...\n```\n\n```bash\n# You run this from a client, say 10.0.1.5 which is ubuntu machine and has openssl installed. You want to do this so your https connection from client (ubuntu) using curl to nginx via curl does not complain that it does not trust the nginx's servers self signed certs.\nopenssl s_client -showcerts -connect 10.0.1.4:443 < /dev/null | sed -ne \"/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p\" > /usr/local/share/ca-certificates/server.crt\n```\n\nThis might be followed by following\n\n```bash\n# Install ca-certificates if not installed: Make sure ca-certificates is installed on ubuntu\napt-get update && apt-get install -y ca-certificates\n\n# Update the CA Certificates: Update the certificate authority (CA) store to include your new self-signed certificate:\nupdate-ca-certificates\n# look for following line inoutput\n# 1 added, 0 removed; done.\n\n# Now you can run the following from your client to test the https connection\ncurl -v -H \"Host: repo.maven.apache.org\" --resolve \"repo.maven.apache.org:443:10.0.1.4\" https://repo.maven.apache.org:443\n# Look for in output\n# *  SSL certificate verify ok.\n\n# Alternatively, if you don't want to udpate the OS CA certificates, you can also specify the file as an arguemnt to the client curl using the --cacert option\n# When you don't want to run          $ update-ca-certificates\ncurl -v -H \"Host: repo.maven.apache.org\" --cacert /usr/local/share/ca-certificates/server.crt --resolve \"repo.maven.apache.org:443:10.0.1.4\" https://repo.maven.apache.org:443\n```\n\n#### x509\n\nNAME\n\n> x509 - Certificate display and signing utility\n\nDESCRIPTION\n\nThe x509 command is a multi purpose certificate utility. It can be used to display certificate information, convert certificates to various forms, sign certificate requests like a \"mini CA\" or edit certificate trust settings.\n  \n##### EXAMPLES for x509\n\nTo get the certificate expiry dates\n\n```bash\n# -noout : this option prevents output of the encoded version of the request.\n# -dates : prints out the start and expiry dates of a certificate.\n# -in filename : This specifies the input filename to read a certificate from or standard input if this option is not specified.\n$ openssl s_client -connect 10.57.148.133:443 2>/dev/null | openssl x509 -noout -dates\nnotBefore=Nov  8 23:47:37 2017 GMT\nnotAfter=Nov  9 23:47:37 2019 GMT\n```\n\nTo get detailed information.\n\n> Note: This will also validate if the certificate is tampered with or not.\n\n```bash\n# -text : prints out the certificate in text form. Full details are output including the public key, signature algorithms, issuer and subject names, serial number any extensions present and any trust settings. \nopenssl x509 -in georgebackend.oms.prod.company.com.pem -text -noout                                                                                     . \n```\n\nUseful output\n\n- To check if the certificate is CA cert `CA: TRUE`\n- To check for domains for which the certificate is valid\n- To check Issuer and Validity\n\n```bash\n...\n        Issuer: C = AE, ST = India, L = India, O = NA, OU = IT, CN = nginx, emailAddress = it@sre.net\n        Validity\n            Not Before: Sep 18 07:44:56 2022 GMT\n            Not After : Sep 16 07:44:56 2032 GMT\n...\n...\n                CA:TRUE\n            X509v3 Subject Alternative Name: \n                DNS:nginx, DNS:nexus, DNS:repo.maven.apache.org, DNS:repo1.maven.org, DNS:plugins.gradle.org\n```\n\n#### req\n\nRSA Key Management\n\n##### EXAMPLES for req\n\nTo create RootCA, server certificate and client certificate\n\n- To create RootCA\n\n```bash\nopenssl \\\n    req \\\n    -new \\\n    -newkey rsa:4096 \\\n    -days 1024 \\\n    -nodes \\\n    -x509 \\\n    -subj \"/C=US/ST=CA/O=MyOrg/CN=myOrgCA\" \\\n    -keyout confs/rootCA.key \\\n    -out confs/rootCA.crt\n```\n\n| Option  | Value                                    | Description                                                            |\n|---------|------------------------------------------|------------------------------------------------------------------------|\n| req     |                                          | X.509 Certificate Signing Request (CSR) management command.            |\n| -new    |                                          | Specifies that a new CSR is being requested.                           |\n| -newkey | rsa:4096                                 | Creates a new RSA private key of 4096 bits.                            |\n| -days   | 1024                                     | The certificate will be valid for 1024 days.                           |\n| -nodes  |                                          | No DES; Specifies that the private key should not be encrypted.        |\n| -x509   |                                          | Produces a self-signed certificate instead of a CSR.                   |\n| -subj   | \"/C=US/ST=CA<br>/O=MyOrg/<br>CN=myOrgCA\" | Sets the subject field for the certificate using the specified format. |\n| -keyout | confs/rootCA.key                         | The file to write the newly created private key to.                    |\n| -out    | confs/rootCA.crt                         | The file to write the newly created certificate to.                    |\n\n- To create server certificate\n\n```bash\nopenssl \\\n    req \\\n    -new \\\n    -newkey rsa:2048 \\\n    -days 372 \\\n    -nodes \\\n    -x509 \\\n    -subj \"/C=US/ST=CA/O=MyOrg/CN=myOrgCA\" \\\n    -addext \"subjectAltName=DNS:example.com,DNS:example.net,DNS:otel_collector,DNS:localhost\" \\\n    -CA confs/rootCA.crt \\\n    -CAkey confs/rootCA.key  \\\n    -keyout confs/server.key \\\n    -out confs/server.crt\n```\n\n| Option  | Value                                                                                             | Description                                                              |\n|---------|---------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------|\n| req     |                                                                                                   | X.509 Certificate Signing Request (CSR) management command.              |\n| -new    |                                                                                                   | Specifies that a new CSR is being requested.                             |\n| -newkey | rsa:2048                                                                                          | Creates a new RSA private key of 2048 bits.                              |\n| -days   | 372                                                                                               | The certificate will be valid for 372 days.                              |\n| -nodes  |                                                                                                   | No DES; Specifies that the private key should not be encrypted.          |\n| -x509   |                                                                                                   | Produces a self-signed certificate instead of a CSR.                     |\n| -subj   | \"/C=US/ST<br>=CA/O=MyOrg<br>/CN=myOrgCA\"                                                          | Sets the subject field for the certificate using the specified format.   |\n| -addext | \"subjectAltName<br>=DNS:example.com,<br>DNS:example.net,DNS<br>:otel_collector,<br>DNS:localhost\" | Specifies additional extensions to be added to the certificate.          |\n| -CA     | confs/rootCA.crt                                                                                  | Specifies the CA certificate to be used for signing the new certificate. |\n| -CAkey  | confs/rootCA.key                                                                                  | Specifies the private key of the CA used for signing.                    |\n| -keyout | confs/server.key                                                                                  | The file to write the newly created private key to.                      |\n| -out    | confs/server.crt                                                                                  | The file to write the newly created certificate to.                      |\n\n- To create client certs\n\n```bash\nopenssl \\\n    req \\\n    -new \\\n    -newkey rsa:2048 \\\n    -days 372 \\\n    -nodes \\\n    -x509 \\\n    -subj \"/C=US/ST=CA/O=MyOrg/CN=myOrgCA\" \\\n    -addext \"subjectAltName=DNS:example.com,DNS:example.net,DNS:otel_collector,DNS:localhost\" \\\n    -CA confs/rootCA.crt \\\n    -CAkey confs/rootCA.key  \\\n    -keyout confs/client.key \\\n    -out confs/client.crt\n```\n\n| Option  | Value                                                                                         | Description                                                              |\n|---------|-----------------------------------------------------------------------------------------------|--------------------------------------------------------------------------|\n| req     |                                                                                               | X.509 Certificate Signing Request (CSR) management command.              |\n| -new    |                                                                                               | Specifies that a new CSR is being requested.                             |\n| -newkey | rsa:2048                                                                                      | Creates a new RSA private key of 2048 bits.                              |\n| -days   | 372                                                                                           | The certificate will be valid for 372 days.                              |\n| -nodes  |                                                                                               | Specifies that the private key should not be encrypted.                  |\n| -x509   |                                                                                               | Produces a self-signed certificate instead of a CSR.                     |\n| -subj   | \"/C=US/ST=CA<br>/O=MyOrg/CN=<br>myOrgCA\"                                                      | Sets the subject field for the certificate using the specified format.   |\n| -addext | \"subjectAltName=DNS<br>:example.com,DNS:<br>example.net,DNS:otel_collector,<br>DNS:localhost\" | Specifies additional extensions to be added to the certificate.          |\n| -CA     | confs/rootCA.crt                                                                              | Specifies the CA certificate to be used for signing the new certificate. |\n| -CAkey  | confs/rootCA.key                                                                              | Specifies the private key of the CA used for signing.                    |\n| -keyout | confs/server.key                                                                              | The file to write the newly created private key to.                      |\n| -out    | confs/server.crt                                                                              | The file to write the newly created certificate to.                      |\n\nTo create self-signed certificates for nginx\n\n```bash\nopenssl req -new -newkey rsa:4096 -days 3650 -nodes -x509 -extensions v3_ca \\\n    -subj '/C=AE/ST=India/L=India/O=NA/OU=IT/CN=nginx/emailAddress=it@sre.net' \\\n    -addext 'subjectAltName=DNS:nginx,DNS:nexus,DNS:repo.maven.apache.org,DNS:repo1.maven.org,DNS:plugins.gradle.org,DNS:registry.npmjs.org,DNS:docker.io,DNS:registry-1.docker.io,DNS:gcr.io,DNS:ghcr.io,DNS:quay.io,DNS:registry.k8s.io' \\\n    -keyout /etc/ssl/certs/nginx.key -out /etc/ssl/certs/nginx.crt\n```\n\n| **Command/Option**                                                           | **Description**                                                                                                                                                                                                                          |\n|------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `openssl req`                                                                | Starts the process of generating a new self-signed certificate using `openssl`.                                                                                                                                                          |\n| `-new`                                                                       | Generates a **new certificate**. When used with the `-x509` option, it creates a self-signed certificate rather than generating a CSR.                                                                                                   |\n| `-newkey rsa:4096`                                                           | Generates a **new private key** and a **new certificate** at the same time, using RSA with a key size of 4096 bits.                                                                                                                      |\n| `-days 3650`                                                                 | Sets the certificate's validity to 3650 days (10 years).                                                                                                                                                                                 |\n| `-nodes`                                                                     | Indicates that the private key should not be encrypted, allowing it to be used without needing a password.                                                                                                                               |\n| `-x509`                                                                      | Specifies that this is a **self-signed certificate** instead of generating a certificate signing request (CSR).                                                                                                                          |\n| `-extensions v3_ca`                                                          | Adds the `v3_ca` extension, enabling the certificate to function as a certificate authority (CA).                                                                                                                                        |\n| `-subj '/C=AE/ST=India/L=India/O=NA/OU=IT/CN=nginx/emailAddress=it@sre.net'` | Defines the subject (certificate details) with fields like country (`C=AE`), state (`ST=India`), locality (`L=India`), organization (`O=NA`), organizational unit (`OU=IT`), common name (`CN=nginx`), and email address (`it@sre.net`). |\n| `-addext 'subjectAltName=DNS:nginx,...'`                                     | Adds the Subject Alternative Name (SAN) extension, allowing the certificate to be valid for multiple domain names like `nginx`, `nexus`, `repo.maven.apache.org`, `docker.io`, etc.                                                      |\n| `-keyout /etc/ssl/certs/nginx.key`                                           | Specifies the location where the private key will be saved (`/etc/ssl/certs/nginx.key`).                                                                                                                                                 |\n| `-out /etc/ssl/certs/nginx.crt`                                              | Specifies the location where the self-signed certificate will be saved (`/etc/ssl/certs/nginx.crt`).                                                                                                                                     |"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_048_passwd/ReadMe.md",
    "content": "# passwd\n\n## NAME\n\npasswd - update userâs authentication tokens\n\n## SYNOPSIS\n\n> passwd  [-k] [-l]  [-u [-f]] [-d] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]\n\n## DESCRIPTION\n\nThe passwd utility is used to update userâs authentication token(s).\n\nThis task is achieved through calls to the Linux-PAM and Libuser API.   Essentially, it initializes itself as a \"passwd\" service with Linux-PAM and utilizes configured password modules to authenticate and  then update a userâs password.\n\n## EXAMPLES\n\nTo change the password for current user\n\n```bash\n$ passwd\n.\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_049_ping/ReadMe.md",
    "content": "# ping\n\n## NAME\n\nping -- send ICMP ECHO_REQUEST packets to network hosts\n\n## SYNOPSIS\n\n> ping [-AaCDdfnoQqRrv] [-b boundif] [-c count] [-G sweepmaxsize] [-g sweepminsize] [-h sweepincrsize] [-i wait] [-k trafficclass] [-K netservicetype] [-l preload] [-M mask | time] [-m ttl] [-P policy] [-p pattern] [-S src_addr][-s packetsize] [-t timeout] [-W waittime] [-z tos] [--apple-connect] [--apple-print] host\n\n> ping [-AaDdfLnoQqRrv] [-b boundif] [-c count] [-I iface] [-i wait] [-k trafficclass] [-K netservicetype] [-l preload] [-M mask | time] [-m ttl] [-P policy] [-p pattern] [-S src_addr] [-s packetsize] [-T ttl] [-t timeout] [-W waittime] [-z tos] [--apple-connect] [--apple-print] mcast-group\n\n## DESCRIPTION\n\nThe ping utility uses the ICMP protocol's mandatory ECHO_REQUEST datagram to elicit an ICMP ECHO_RESPONSE from a host or gateway.  ECHO_REQUEST datagrams (`pings`) have an IP and ICMP header, followed by a `struct timeval` and then an arbitrary number of `pad` bytes used to fill out the packet.\n\nAlternative Definitions\n\nping is a computer network administration software utility used to test the reachability of a host on an Internet Protocol (IP) network. It measures the round-trip time for messages sent from the originating host to a destination computer that are echoed back to the source.\n\nPing stands for \"Packet INternet Groper.\" An Internet utility used to determine whether a particular IP address is reachable online by sending out a packet and waiting for a response. Ping is used to test and debug a network as well as see if a user or server is online.\n\nPing sends ICMP ECHO_REQUEST packets to any network addressable host (i.e. a server, a gateway router, etc.). The piece of equipment must be IP (Internet Protocol) addressable in order for ping to work\n\n### OPTIONS\n\n* -q\n  * Quiet output.  Nothing is displayed except the summary lines at startup time and when finished.\n* -c count\n  * Stop after sending (and receiving) count ECHO_RESPONSE packets.  If this option is not specified, ping will operate until interrupted.  If this option is specified in conjunction with ping sweeps, each sweep will consist of count packets.\n  \n```bash\nping google.com\n.\n```\n\nResolving Problems\n\nIf you can ping an IP host on a different network, it suggests that both hosts have TCP/IP correctly initialized and configured, and that routing between the networks is also configured correctly.\n\nIn cases where you cannot ping a remote host, don't jump to the conclusion that the remote host is unavailable or misconfigured, though it might be, the problem may also be a configuration issue with the source host, or potentially some routing-related (or physical connectivity) issue between the two. As a general rule, use the following steps to determine the source of connectivity issues between your PC and a remote system:\n\nAssuming that your IP address, subnet mask, and default gateway are correct, attempt to ping a host on a different subnet. If this fails, one possibility is that routing is not configured correctly.\n\nIf pinging a remote host fails, attempt to ping your default gateway. If this fails, it may indicate that TCP/IP is not configured correctly on your local router interface, on your host PC, or that the router interface has not been enabled with the no shutdown command.\n\nIf pinging your default gateway fails, try pinging your host's configured IP address. If this fails, it can may mean that you have configured your host PC's IP address incorrectly, or that TCP/IP is not properly installed or initialized on the host system.\n\nIf pinging the host's IP address fails, try pinging the loopback address 127.0.0.1. If this fails, it generally indicates that TCP/IP is not properly installed or initialized on your host system.\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_050_ps/ReadMe.md",
    "content": "# ps\n\n## NAME\n\nps -- process status\n\n## SYNOPSIS\n\n> ps [-AaCcEefhjlMmrSTvwXx] [-O fmt | -o fmt] [-G gid[,gid...]] [-g grp[,grp...]] [-u uid[,uid...]] [-p pid[,pid...]] [-t tty[,tty...]] [-U user[,user...]]\n\n> ps [-L]\n\n## DESCRIPTION\n\nThe ps utility displays a header line, followed by lines containing information about all of your processes that have controlling terminals.\n\nA different set of processes can be selected for display by using any combination of the -a, -G, -g, -p, -T, -t, -U, and -u options.  If more than one of these options are given, then ps will select all processes which are matched by at least one of the given options.\n\nFor the processes which have been selected for display, ps will usually display one line per process.  The -M option may result in multiple output lines (one line per thread) for some processes. By default all of these output lines are sorted first by controlling terminal, then by process ID.  The -m, -r, and -v options will change the sort order. If more than one sorting option was given, then the selected processes will be sorted by the last sorting option which was specified.\n\nFor the processes which have been selected for display, the information to display is selected based on a set of keywords (see the -L, -O, and -o options).  The default output format includes, for each process, the process' ID, controlling terminal, CPU time (including both user and system time), state, and associated command.\n\n## OPTIONS\n\n* -A\n  * Display information about other users' processes, including those without controlling terminals.\n\n* -e\n  * Identical to -A\n\n* -f\n  * Display the uid, pid, parent pid, recent CPU usage, process start time, controlling tty, elapsed CPU usage, and the associated command.  If the -u option is also used, display the user name rather then the numeric uid. When -o or -O is used to add to the display following -f, the command field is not truncated as severely as it is in other formats.\n\n* -o format\n  * user-defined format.\n  * format is a single argument in the form of a blank-separated or comma-separated list, which offers a way to specify individual output columns. The recognized keywords are described in the STANDARD FORMAT SPECIFIERS section below. Headers may be renamed (ps -o pid,ruser=RealUser -o comm=Command) as desired. If all column headers are empty (ps -o pid= -o comm=) then the header line will not be output. Column width will increase as needed for wide headers; this may be used to widen up columns such as \n    WCHAN (ps -o pid,wchan=WIDE-WCHAN-COLUMN -o comm). Explicit width control (ps opid,wchan:42,cmd) is offered too. The behavior of ps -o pid=X,comm=Y varies with personality; output may be one column named \"X,comm=Y\" or two columns named \"X\" and \"Y\". Use multiple -o options when in doubt. Use the PS_FORMAT environment variable to specify a default as desired; DefSysV and DefBSD are macros that may be used to choose the default UNIX or BSD columns.\n  \n* -p pidlist      Select by PID.\n  * This selects the processes whose process ID numbers appear in pidlist. Identical to p and --pid.\n\n## EXAMPLES\n\nIt is used to get the process status.\n\nset of options for viewing all the processes running on a system is\n\n* Display information about other users' processes, including those without controlling terminals.\n* Display the uid, pid, parent pid, recent CPU usage, process start time, controlling tty, elapsed CPU usage, and the associated command.\n* less is a terminal program on Unix, Windows, and Unix-like systems used to view (but not change) the contents of a text file one screen at a time\n\n```bash\nps -ef | less\n```\n\nThe processes shown by ps can be limited to those belonging to any given user by piping the output through grep, a filter that is used for searching text. For example, processes belonging to a user with a username adam can be displayed with the following:\n\n```bash\nps -ef | grep adam\n```\n\n-p, -o\n\n```bash\n$ ps -p 14491 -o %cpu,%mem,cmd\n%CPU %MEM CMD\n 0.0  0.4 /apps/resources/java/jdk1.7.0_15/bin/java -Xms512m -Xmx1024m -XX:MaxPermSize=1024m -jar slave.jar\n```\n\n-p selecting by pid\n\n```bash\n$ ps -p 14491 -o %cpu,%mem,cmd\n%CPU %MEM CMD\n 0.0  0.4 /apps/resources/java/jdk1.7.0_15/bin/java -Xms512m -Xmx1024m -XX:MaxPermSize=1024m -jar slave.jar\n```\n\n## Other Examples\n\nTo check which all Oracle Databases are running in the DB server\n\n```bash\n[username@hostname ~]$ ps -ef | grep pmon | grep oracle\noracle   23274     1  0 Aug19 ?        00:11:08 ora_pmon_db1\noracle   23689     1  0 Aug19 ?        00:12:12 ora_pmon_db2\n```\n\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_051_rm/ReadMe.md",
    "content": "# rm\n\n## NAME\n\nrm, unlink -- remove directory entries\n\n## SYNOPSIS\n\n> rm [-dfiPRrvW] file …\n\n> unlink file\n\n## DESCRIPTION\n\nThe rm utility attempts to remove the non-directory type files specified on the command line.  If the permissions of the file do not permit writing, and the standard input device is a terminal, the user is prompted (on the standard error output) for confirmation.\n\n## OPTIONS\n\nThe options are as follows:\n\n* -d\n  * Attempt to remove directories as well as other types of files\n* -f\n  * Attempt to remove the files without prompting for confirmation, regardless of the file's permissions.  If the file does not exist, do not display a diagnostic message or modify the exit status to reflect an error.  The -f option overrides any previous -i options.\n* -R\n  * Attempt to remove the file hierarchy rooted in each file argument.  The -R option implies the -d option. If the -i option is specified, the user is prompted for confirmation before each directory's contents are processed (as well as before the attempt is made to remove the directory).  If the user does not respond affirmatively, the file hierarchy rooted in that directory is skipped.\n* -r \n  * Equivalent to -R.\n  \n```bash\nrm -rf directory_name\n.\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_052_route/ReadMe.md",
    "content": "# route\n\n[route](https://TBD/man/8/route)\n\n## NAME\n\nroute - show / manipulate the IP routing table\n\n## SYNOPSIS\n\n> route [-CFvnee]\n\n## OPTIONS\n\n- n\n\n  - show numerical addresses instead of trying to determine symbolic host names. This is useful if you are trying to determine why the route to your nameserver has vanished.\n  \n```bash\n$ route -n      \nKernel IP routing table\nDestination     Gateway         Genmask         Flags Metric Ref    Use Iface\n0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 ens5\n172.20.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0\n172.28.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-54008b2d3118\n172.29.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-62ebaead3613\n192.169.1.0     0.0.0.0         255.255.255.0   U     0      0        0 ens5\n192.170.1.1     0.0.0.0         255.255.255.255 UH    100    0        0 ens5\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_053_rsync/ReadMe.md",
    "content": "# rsync\n\n- [rsync](#rsync)\n  - [NAME](#name)\n  - [EXAMPLES](#examples)\n    - [`-z` | compress | `-v` | verbose | `-h` | human-readable](#-z--compress---v--verbose---h--human-readable)\n    - [`-a` | archive | remote server](#-a--archive--remote-server)\n    - [`-e` | specify protocol | ssh | remote server](#-e--specify-protocol--ssh--remote-server)\n    - [`--progress` | show progress | remote server](#--progress--show-progress--remote-server)\n    - [`--remove-source-files` | delete source files](#--remove-source-files--delete-source-files)\n    - [`--include` | `--exclude` | `--filter`](#--include----exclude----filter)\n\n## NAME\n\nrsync - faster, flexible replacement for rcp\n\n## EXAMPLES\n\n### `-z` | compress | `-v` | verbose | `-h` | human-readable\n\nThis following command will sync a single file on a local machine from one location to another location. Here in this example, a file name backup.tar needs to be copied or synced to /tmp/backups/ folder.\n\n- `-z`: Enables compression for the data during the transfer.\n- `-h`: Displays file sizes in a human-readable format (e.g., K, M, G).\n\n```bash\nrsync -zvh backup.tar /tmp/backups/\n```\n\nOutput\n\n```bash\ncreated directory /tmp/backups\nbackup.tar\nsent 14.71M bytes  received 31 bytes 3.27M bytes/sec\ntotal size is 16.18M  speedup is 1.10\n```\n\n### `-a` | archive | remote server\n\nThis command will sync a directory from a local machine to a remote machine. For example: There is a folder in your local computer “rpmpkgs” which contains some RPM packages and you want that local directory’s content send to a remote server, you can use following command.\n\n- `-a`: Archive mode; preserves filesystem attributes, performs recursive copying.\n\n```bash\nrsync -avz rpmpkgs/ root@192.168.0.101:/home/\n```\n\nOutput\n\n```bash\nroot@192.168.0.101's password:\nsending incremental file list\n./\nhttpd-2.2.3-82.el5.centos.i386.rpm\nmod_ssl-2.2.3-82.el5.centos.i386.rpm\nnagios-3.5.0.tar.gz\nnagios-plugins-1.4.16.tar.gz\nsent 4993369 bytes  received 91 bytes 399476.80 bytes/sec\ntotal size is 4991313  speedup is 1.00\n```\n\n### `-e` | specify protocol | ssh | remote server\n\nTo specify a protocol with rsync you need to give “-e” option with protocol name you want to use. Here in this example, We will be using “ssh” with “-e” option and perform data transfer.\n\n```bash\nrsync -avzhe ssh root@192.168.0.100:/root/install.log /tmp/\n```\n\nOutput\n\n```bash\nroot@192.168.0.100's password:\nreceiving incremental file list\ninstall.log\nsent 30 bytes  received 8.12K bytes  1.48K bytes/sec\ntotal size is 30.74K  speedup is 3.77\n```\n\n### `--progress` | show progress | remote server\n\nTo show the progress while transferring the data from one machine to a different machine, we can use ‘–progress’ option for it. It displays the files and the time remaining to complete the transfer.\n\n```bash\nrsync -avzhe ssh --progress /home/rpmpkgs root@192.168.0.100:/root/rpmpkgs\n```\n\n### `--remove-source-files` | delete source files\n\nAutomatically delete source files after complete successfull transfer.\n\n```bash\nrsync --remove-source-files -zvh backup.tar /tmp/backups/\n```\n\n### `--include` | `--exclude` | `--filter`\n\n[stackoverflow.com](https://stackoverflow.com/questions/13713101/rsync-exclude-according-to-gitignore-hgignore-svnignore-like-filter-c)\n\n- `--include`=`**.gitignore`: Includes files named .gitignore in the transfer, even if other rules might exclude them.\n- `--exclude`=`/.git`: Excludes the .git directory located at the root of the source directory.\n- `--delete-after`: Deletes files in the destination directory that are not in the source after the transfer.\n\n```bash\nrsync -arvh \"${SYNC_FROM_DIR_THAT_MUST_NOT_CHANGE}/\" \"${SYNC_TO_DIR_THAT_WILL_CHANGE}/\" --include='**.gitignore' --exclude='/.git' --filter=':- .gitignore' --delete-after\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_054_scp/ReadMe.md",
    "content": "# scp\n\n## NAME\n\nscp -- secure copy (remote file copy program)\n\n## OPTIONS\n\n* -r\n  * Recursively copy entire directories.  Note that scp follows symbolic links encountered in the tree traversal.\n  \n```bash\nscp -r app@10.117.157.66:/app/jboss-eap-6.4.0/jboss-as/standalone/configuration/fileName .\nscp -r fileName app@10.117.140.110:/app/jboss-eap-6.4.0/jboss-as/standalone/configuration/\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_055_sed/ReadMe.md",
    "content": "# sed\n\n- [sed](#sed)\n  - [NAME](#name)\n  - [EXAMPLE on Linux](#example-on-linux)\n  - [EXAMPLE on macOS](#example-on-macos)\n\n## NAME\n\nsed - stream editor for filtering and transforming text\n\n## EXAMPLE on Linux\n\n```bash\n$ [root@sso-service-324448229-1-348775404 app]# echo | openssl s_client -connect qa.iam.platform.prod.company.com:443 2>&1 | sed -n  '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'\n-----BEGIN CERTIFICATE-----\n....\n-----END CERTIFICATE-----\n[root@sso-service-324448229-1-348775404 app]#\n```\n\nTo replace ‘branches’ with ‘    ’ with 4 spaces\n\n```bash\n-bash-3.2$ xargs svn info <$HOME/.BUILD_SCRIPTS_AREA/modules.full |grep \"^URL\" | awk '{print $NF}'\nhttp://dxbmiap19pv:81/svn/xxxxxx/branches/DEV/YY-5.4.0.0\n-bash-3.2$ xargs svn info <$HOME/.BUILD_SCRIPTS_AREA/modules.full |grep \"^URL\"|awk '{print $NF}'|sed 's/branches/  /g'\nhttp://dxbmiap19pv:81/svn/xxxxxx/  /DEV/YY-5.4.0.0\n```\n\n## EXAMPLE on macOS\n\nTo recursively searches for all files in the current directory and its subdirectories, then uses `sed` to replace occurrences of `oldstring` with `newstring` in-place within each file.\n\n```bash\nfind . -type f -exec sed -i '' 's/oldstring/newstring/g' {} +\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_056_sh/ReadMe.md",
    "content": "# sh\n\n## NAME\n\nbash - GNU Bourne-Again SHell\n\n## SYNOPSIS\n\n> bash [options] [file]\n\n## DESCRIPTION\n\nBash  is an sh-compatible command language interpreter that executes commands read from the standard input or from a file.  Bash also incorporates useful features from the Korn and C shells (ksh and csh).\n\nBash is intended to be a conformant implementation of the Shell and Utilities portion of the IEEE POSIX specification (IEEE Standard 1003.1).  Bash can be configured to be POSIX-conformant by default.\n\n## OPTIONS\n\n* -x file\n  * True if file exists and is executable.\n  \n```bash\n$ sh -x /app/nfs_mount1.sh > /app/nfs_mount1.out 2>&1\n.\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_057_setenforce/ReadMe.md",
    "content": "# setenforce\n\n[setenforce](https://man7.org/linux/man-pages/man8/setenforce.8.html)\n\n## NAME\n\nsetenforce - modify the mode SELinux is running in\n\n## SYNOPSIS\n\n> setenforce [Enforcing|Permissive|1|0]\n\n## DESCRIPTION\n\nUse Enforcing or 1 to put SELinux in enforcing mode.\nUse Permissive or 0 to put SELinux in permissive mode.\n\nIf SELinux is disabled and you want to enable it, or SELinux is\nenabled and you want to disable it, please see selinux(8).\n\n## EXAMPLES\n\n- Tested on Fedora CoreOS\n\n```bash\n[root@ip-172-16-6-197 core]# cat /etc/os-release  | egrep \"PRETTY_NAME\" \nPRETTY_NAME=\"Fedora CoreOS 33.20210104.3.1\"\n```\n\n- 0 to put SELinux in permissive mode.\n\n```bash\nsetenforce 0\n.\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_058_sort/ReadMe.md",
    "content": "# sort\n\n## NAME\n\nsort - sort lines of text file\n\n## DESCRIPTION\n\nWrite sorted concatenation of all FILE(s) to standard output.\n\n## OPTIONS\n\n* -b, --ignore-leading-blanks\n  * ignore leading blanks\n* -d, --dictionary-order\n  * consider only blanks and alphanumeric characters\n* -f, --ignore-case\n  * fold lower case to upper case characters\n* -g, --general-numeric-sort\n  * compare according to general numerical value\n* -i, --ignore-nonprinting\n  * consider only printable characters\n* -M, --month-sort\n  * compare (unknown) < `JAN' < ... < DEC`\n* -n, --numeric-sort\n  * compare according to string numerical value\n* -r, --reverse\n  * reverse the result of comparisons\n* -V --version-sort\n  * natural sort of (version) numbers within text\n  \n## EXAMPLES\n\n```bash\n$ ls sort* | sort -V\nsort-1.022.tgz\nsort-1.23.tgz\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_059_ssh/ReadMe.md",
    "content": "# ssh\n\n- [ssh](https://www.unix.com/man-page/redhat/1/ssh/)\n\n## NAME\n\nssh -- OpenSSH SSH client (remote login program)\n\n## SYNOPSIS\n\n> ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec] [-D [bind_address:]port] [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11] [-i identity_file] [-J [user@]host[:port]] [-L address] [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port] [-Q query_option] [-R address] [-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]] [user@]hostname [command][-w local_tun[:remote_tun]] [user@]hostname [command]\n\n## DESCRIPTION\n\nssh (SSH client) is a program for logging into a remote machine and for executing commands on a remote machine.  It is intended to provide secure encrypted communications between two untrusted hosts over an insecure network.\n\nssh connects and logs into the specified hostname (with optional user name).  The user must prove his/her identity to the remote machine using one of several methods (see below).\n\nThe options are as follows:\n\n- -i identity_file\n  - Selects a file from which the identity (private key) for public key authentication is read.  The default is ~/.ssh/identity for protocol version 1, and ~/.ssh/id_dsa, ~/.ssh/id_ecdsa, ~/.ssh/id_ed25519 and ~/.ssh/id_rsa for protocol version 2.  Identity files may also be specified on a per-host basis in the configuration file. It is possible to have multiple -i options (and multiple identities specified in configuration files).  If no certificates have been explicitly specified by the CertificateFile directive, ssh will also try to load certificate information from the filename obtained by appending -cert.pub to identity filenames.\n\n- -o option\n  - Can be used to give options in the format used in the configuration file.  This is useful for specifying options for which there is no separate command-line flag.  For full details of the options listed below, and their possible values, see ssh_config(5).\n  - option\n    - StrictHostKeyChecking:\n      - (info from ‘man ssh_config’) If this flag is set to yes, ssh(1) will never automatically add host keys to the ~/.ssh/known_hosts file, and refuses to connect to hosts whose host key has changed. This provides maximum protection against trojan horse attacks, though it can be annoying when the /etc/ssh/ssh_known_hosts file is poorly maintained or when connections to new hosts are frequently made.  This option forces the user to manually add all new hosts. If this flag is set to no, ssh will automatically add new host keys to the user known hosts files. If this flag is set to ask (the default), new host keys will be added to the user known host files only after the user has confirmed that is what they really want to do, and ssh will refuse to connect to hosts whose host key has changed. The host keys of known hosts will be verified automatically in all cases.\n        \"StrictHostKeyChecking\" is a setting at the ssh client side.\n      - If set to \"No\" new host keys will be automatically added to the known_hosts file, and changed host keys will be silently replaced.\n      - Setting it to \"yes\" is meant to give some protection against trojan horse attacks, but every new or changed host key must be added or replaced manually.\n      - I'd recommend setting it to \"ask\". With this setting at least new host keys will be added automatically after user confirmation, and changed host keys will never be replaced, so security is maintained yet life becomes a bit easier in an environment where many new hosts need to be accessed.\n\n- -o Port\n  - For giving port\n- -X\n  - Enables X11 forwarding.  This can also be specified on a per-host basis in a configuration file.\n\n## EXAMPLES\n\n### Basic Login commands\n\n- SSH login command\n\n```bash\n$ssh app@10.111.123.23\n.\n```\n\n- If you want to use a different key file then\n\n```bash\n$ ssh -i keyFileName app@10.111.123.23\n.\n```\n\n- Using `-o` to set options\n\n```bash\n$ ssh -o StrictHostKeyChecking=no app@$newHostname\n.\n```\n\n- `Port` - Specifies the port number to connect on the remote host.  The default is 22.\n\n```bash\n$ ssh -v -o Port=2222 oracle@127.0.0.1\n.\n```\n\n### X11 forwarding\n\n- To login into remote host with X11 forwarding enabled use the following command. For more details see xclock\n\n```bash\nlocalUser@DESKTOP:~$ ssh remoteUser@35.238.65.79 -X\n```\n\n### Setting up ssh login between local and remote vm\n\n- Local\n\n```bash\nlocalUser@DESKTOP:~$ uname -a\nLinux DESKTOP 4.4.0-18362-Microsoft #1-Microsoft Mon Mar 18 12:02:00 PST 2019 x86_64 x86_64 x86_64 GNU/Linux\nlocalUser@DESKTOP~$ ssh-keygen\n```\n\n- Remote\n\n```bash\nremoteUser@test-instance:~$ uname -a\nLinux test-instance 4.9.0-11-amd64 #1 SMP Debian 4.9.189-3 (2019-09-02) x86_64 GNU/Linux\nremoteUser@test-instance:~$ ssh-keygen\n```\n\n- Copy the ~/.ssh/id_rsa.pub of localUser to ~/.ssh/authorized_keys of remoteUser with permission 600\n\n- Remote\n\n```bash\nremoteUser@test-instance:~/.ssh$ vi authorized_keys\nremoteUser@test-instance:~/.ssh$ chmod 600 ~/.ssh/authorized_keys\n```\n\n- Try logging in to the remote machine using ssh from the local machine\n\n- Local\n\n```bash\nlocalUser@DESKTOP:~$ ssh remoteUser@35.238.65.79\nremoteUser@test-instance:~$\n```\n\n### Logging via bastion server\n\n- To login using the bastion server\n\n```bash\n$ ssh -o ProxyCommand=\"ssh -i private_key_to_login.pem -W %h:%p ubuntu@bastion.host.link\" -i private_key_to_login.pem ubuntu@172.126.146.224 -vvvvv\n.\n```\n\n### Running commands on remote server\n\n- To run a command on another machine (like node01) from local (say controlplane)\n\n```bash\ncontrolplane $ ssh node01 ifconfig ens3\nWarning: Permanently added 'node01,172.17.0.25' (ECDSA) to the list of known hosts.\nens3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500\n        inet 172.17.0.25  netmask 255.255.0.0  broadcast 172.17.255.255\n        inet6 fe80::42:acff:fe11:19  prefixlen 64  scopeid 0x20<link>\n        ether 02:42:ac:11:00:19  txqueuelen 1000  (Ethernet)\n        RX packets 136298  bytes 155301021 (155.3 MB)\n        RX errors 0  dropped 0  overruns 0  frame 0\n        TX packets 50435  bytes 5498608 (5.4 MB)\n        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0\n```\n\n### Port Forwarding\n\nconnections to localhost:8081 --------------->------------are--forwared-to-the-remote-host------------------------>---- PUBLIC-IP:8081\n\nLet's say you want to access a service running on remote server at port 8081 on your localhost at port 8081\n\n```bash\n## Assuming you have SSH access to the machine\n$ ssh -L 8081:localhost:8081 opc@PUBLIC-IP\n.\n```\n\n- Port forwarding via a Jump Server    connections to localhost:8081 -----are-forwarded-to--->-- PUBLIC-IP --> are-forwarded-to->---remote-private-host----->-------- PRIVATE-IP:8081\n\n  - `ssh`: This command starts the SSH client program that allows secure connection to the SSH server on a remote machine.\n\n  - `-L 8081:localhost:8081`: This is a specification of local port forwarding. It means that connections to the local (client) host on port 8081 are to be forwarded to the remote side (the server you're connecting to) via `localhost` at port 8081.\n\n  - `-J <jump_server_username>@<jump_server_public_ip>`: This specifies the jump host (also known as a bastion host or gateway server). This is the intermediary server that you first SSH into before SSHing into the final destination server. This is used when the final destination server cannot be accessed directly from your starting point, but can be accessed from the jump server.\n\n  - `<dest_host_username>@<destination_host_private_ip>`: This is the final destination server that you're connecting to via SSH. The `dest_host_username` is the username on the destination host, and the `destination_host_private_ip` is the IP address of the destination host.\n\n  - `-N`: This tells SSH that no command will be sent once the tunnel has been set up. This is useful for just forwarding ports (protocol level tunneling).\n\n  - `-f`: This option instructs SSH to go to the background just before command execution, allowing the SSH process to be run in the background.\n\n  - `-q`: This option is used to make the operation quiet. It suppresses all warning and diagnostic messages, making them invisible to the user.\n\n  Essentially, the command is saying to establish an SSH connection to `<destination_host_private_ip>` via the jump server at `<jump_server_public_ip>`, and any connections made to `localhost` on port 8081 on your local machine should be forwarded through the SSH connection, and then from the destination server to `localhost` at port 8081. All of this is done in the background and in quiet mode (no output is displayed).\n\n```bash\n$ ssh -L 8081:localhost:8081 -J <jump_server_username>@<jump_server_public_ip> <dest_host_username>@<destination_host_private_ip> -N -f -q \n.\n# If you have separate keys for both\n$ ssh -i /Users/<username>/workspace/_ssh/id_rsa_dest -L 6443:localhost:6443 -o ProxyCommand=\"ssh -i /Users/<username>/workspace/_ssh/id_rsa_jump  -W %h:%p <jump_login_user>@<jump_public_ip>\" <dest_login_user>@<dest_private_ip> -N -f -q          # -v\n.\n```\n\n### Reverse ssh tunnel\n\nlocalhost:8081  <--------------------------------------reverse-ssh-tunnel------------------------------------ public_ip:8080          ( forward any incoming traffic on port 8080 from the remote server (34.135.214.178) back to the local machine's port 8081)\n\n- [how-to-forward-local-port-80-to-another-machine](https://askubuntu.com/questions/361426/how-to-forward-local-port-80-to-another-machine)\n- [How to make SSH remote port forward that listens 0.0.0.0](https://stackoverflow.com/questions/23781488/how-to-make-ssh-remote-port-forward-that-listens-0-0-0-0)\n- [Reverse port tunnelling](https://askubuntu.com/questions/50064/reverse-port-tunnelling/50075#50075)\n- [usecase for website](https://www.reddit.com/r/selfhosted/comments/ftqbar/how_reliable_are_ssh_tunnels_for_web_hosting)\n\n- Let's say we are running nginx service on port 8081 locally. We want this nginx service to be accessible on remote host with public IP 34.135.214.178 on port 8080.\n\n> Note: Only root can bind ports numbered under 1024.\n\n```bash\n$ docker run -it --rm -d -p 8081:80 --name web nginx\na637bfd7fc075b751ad5245c034b27a6afbf3509d47e73383b1af4e50688800f\n$ curl -s  localhost:8081 | grep title  \n<title>Welcome to nginx!</title>\n\n# Now we want this nginx to be accessible via the public ip on port 8080\n$ ssh -R 8080:localhost:8081 34.135.214.178 -v\n.\nusername@public-instance-1:~$ $ curl -s ifconfig.me\n34.135.214.178\n\n# edit /etc/ssh/sshd_config and set GatewayPorts to yes \nusername@public-instance-1:~$ cat /etc/ssh/sshd_config\nGatewayPorts yes\n\n# Restart sshd for changes to take effect\nusername@public-instance-1:~$ sudo systemctl reload sshd\n\n## Accessing this IP from internet\n$ curl -s 34.135.214.178:8080 | grep title\n<title>Welcome to nginx!</title>\n```\n\n1. `-R 8080:localhost:8081`: This is an option for the SSH command that specifies a remote port forwarding. It tells SSH to forward any incoming traffic on port 8080 from the remote server (34.135.214.178) back to the local machine's port 8081. The syntax is `-R [remote_port]:[destination]:[local_port]`.\n\n2. `34.135.214.178`: This is the IP address (or hostname) of the remote server to which you want to connect using SSH.\n\n3. `-v`: This is an optional flag that stands for \"verbose\" mode. When this flag is used, the SSH client will produce more detailed output during the connection process, which can be helpful for debugging and understanding what's happening behind the scenes.\n\nOverall, this command is setting up a reverse SSH tunnel from the remote server at IP address 34.135.214.178 to the local machine, forwarding any incoming traffic on port 8080 of the remote server back to port 8081 on the local machine. The `-v` flag provides verbose output to show what's happening during the connection process. This can be useful for troubleshooting and monitoring the connection.\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_060_sudo/ReadMe.md",
    "content": "# sudo\n\n## NAME\n\nsudo, sudoedit - execute a command as another user\n\n## SYNOPSIS\n\n> sudo -h | -K | -k | -V\n\n> sudo -v [-AknS] [-g group] [-h host] [-p prompt] [-u user]\n\n> sudo -l [-AknS] [-g group] [-h host] [-p prompt] [-U user] [-u user] [command]\n\n> sudo [-AbEHnPS] [-C num] [-g group] [-h host] [-p prompt] [-u user] [VAR=value] [-i | -s] [command]\n\n> sudoedit [-AknS] [-C num] [-g group] [-h host] [-p prompt] [-u user] file ...\n\n## DESCRIPTION\n\nsudo allows a permitted user to execute a command as the superuser or another user, as specified by the security policy.  The invoking user's real (not effective) user ID is used to determine the user name with which to query the security policy.\n\n## EXAMPLE\n\nTo switch to a user “looker”\n\n```bash\nsudo su - looker\n```\n\nTo execute a shell script using a particular user\n\n```bash\nsudo su - looker -c \"sh /home/looker/looker/start.sh\n```\n\nContent of start.sh\n\n```bash\nsh /home/looker/looker/looker start;\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_061_sysctl/ReadMe.md",
    "content": "# sysctl\n\n[sysctl](https://man7.org/linux/man-pages/man8/sysctl.8.html)\n\n## NAME\n\nsysctl - configure kernel parameters at runtime\n\n## SYNOPSIS\n\n> sysctl [options] [variable[=value]] [...]\n\n> sysctl -p [file or regexp] [...]\n\n## DESCRIPTION\n\nsysctl is used to modify kernel parameters at runtime.  The\nparameters available are those listed under /proc/sys/.  Procfs\nis required for sysctl support in Linux.  You can use sysctl to\nboth read and write sysctl data.\n\n## OPTIONS\n\n- -n\n  - Use this option to disable printing of the key name when\n    printing values.\n- --system\n\n  - Load settings from all system configuration files. Files\n    are read from directories in the following list in given\n    order from top to bottom\n\n## EXAMPLES\n\n- To view the sysctl variables.\n\n```bash\n$ sysctl -a | egrep -i ip_forward \nnet.ipv4.ip_forward = 1\nnet.ipv4.ip_forward_update_priority = 1\nnet.ipv4.ip_forward_use_pmtu = 0\n```\n\n- To reload the sysctl configuration.\n\n```bash\n$ sysctl --system\n.\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_062_system/ReadMe.md",
    "content": "# system\n\n## NAME\n\nsystem - execute a shell command\n\n## SYNOPSIS\n\n> \\#include <stdlib.h> int system(const char *command);\n\n## DESCRIPTION\n\nsystem() executes a command specified in command by calling /bin/sh -c command, and returns after the command has been completed. During execution of the command, SIGCHLD will be blocked, and SIGINT and SIGQUIT will be ignored.\n\nRETURN VALUE\n\nThe value returned is -1 on error (e.g. fork() failed), and the return status of the command otherwise. This latter return status is in the format specified in wait(2). Thus, the exit code of the command will be WEXITSTATUS(status). In case /bin/sh could not be executed, the exit status will be that of a command that does exit(127). If the value of command is NULL, system() returns non-zero if the shell is available, and zero if not. system() does not affect the wait status of any other children.\n\n## EXAMPLES\n\nIn the following example for all the block files and all the pom.xml files, the ones which have svn status as \"!\" (as the svn status output will start with this symbol for some files) will be removed using the command 'svn rm $2'. And the ones which have svn status as '?' (as the svn status output will start with this symbol for some files) will be added using the command 'svn add $2'.\n\n```bash\n$ svn status |egrep \"block$|pom.xml$\"| awk '/^[!]/ { system(\"svn rm \" $2) } /^[?]/ { system(\"svn add \" $2) }'\n.\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_063_systemctl/ReadMe.md",
    "content": "# systemctl\n\n- [systemctl](https://man7.org/linux/man-pages/man1/systemctl.1.html)\n\n## Examples\n\n```bash\n# Tested on Ubuntu 22.04.4 LTS\ncat /etc/os-release  | grep \"PRETTY_NAME\"\nPRETTY_NAME=\"Ubuntu 22.04.4 LTS\"\n```\n\nCheck if `docker` service is running\n\n```bash\nsystemctl status docker\n```\n\nDisplays the current status of IP forwarding for IPv4.\n\n```bash\nsysctl net.ipv4.ip_forward\n# Enables IP forwarding for IPv4. This change is temporary and will be lost after a reboot.\nsudo sysctl -w net.ipv4.ip_forward=1\n```\n\nDisplays the current value of the lowest unprivileged port number that can be used by non-root users.\n\n```bash\nsudo sysctl net.ipv4.ip_unprivileged_port_start\n# Sets the lowest unprivileged port number to 443, allowing non-root users to bind to ports 443 and above. This requires superuser privileges and the change is temporary, lost after a reboot.\nsudo sysctl -w net.ipv4.ip_unprivileged_port_start=443\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_064_tail/ReadMe.md",
    "content": "# tail\n\n## NAME\n\ntail -- display the last part of a file\n\n## SYNOPSIS\n\n> tail [-F | -f | -r] [-q] [-b number | -c number | -n number] [file ...]\n\n## DESCRIPTION\n\nThe tail utility displays the contents of file or, by default, its standard input, to the standard output.\n\nThe display begins at a byte, line or 512-byte block location in the input.  Numbers having a leading plus (`+') sign are relative to the beginning of the input, for example, ``-c +2'' starts the display at the second byte of the input.  Numbers having a leading minus (`-') sign or no explicit sign are relative to the end of the input, for example, ``-n 2'' displays the last two lines of the input.  The default starting location is``-n 10'', or the last 10 lines of the input.\n\n### OPTIONS\n\n* -f\n  * The -f option causes tail to not stop when end of file is reached, but rather to wait for additional data to be appended to the input.  The -f option is ignored if the standard input is a pipe, but not if it is a FIFO. \n  * Now to start with the last 100 lines of server.log we use the following command.\n  \n```bash\ntail -100f server.log\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_065_tar/ReadMe.md",
    "content": "# tar\n\n## NAME\n\ntar -- manipulate tape archives\n\n## SYNOPSIS\n\n> tar [bundled-flags <args>] [<file> | <pattern> ...]\n\n> tar {-c} [options] [files | directories]\n\n> tar {-r | -u} -f archive-file [options] [files | directories]\n\n> tar {-t | -x} [options] [patterns]\n\n### DESCRIPTION\n\ntar creates and manipulates streaming archive files.  This implementation can extract from tar, pax, cpio, zip, jar, ar, and ISO 9660 cdrom images and can create tar, pax, cpio, ar, and shar archives.\n\nThe first synopsis form shows a ``bundled'' option word.  This usage is provided for compatibility with historical implementations.\n\nThe other synopsis forms show the preferred usage.  The first option to tar is a mode indicator from the following list:\n\n* -c\n  * Create a new archive containing the specified items.\n* -r\n  * Like -c, but new entries are appended to the archive.  Note that this only works on uncompressed archives stored in regular files.  The -f option is required.\n* -t\n  * List archive contents to stdout.\n* -u\n  * Like -r, but new entries are added only if they have a modification date newer than the corresponding entry in the archive.  Note that this only works on uncompressed archives stored in regular files. The -f option is required.\n* -x\n  * Extract to disk from the archive.  If a file with the same name appears more than once in the archive, each copy will be extracted, with later copies overwriting (replacing) earlier copies.\n\nIn -c, -r, or -u mode, each specified file or directory is added to the archive in the order specified on the command line.  By default, the contents of each directory are also archived.\n\nIn extract or list mode, the entire command line is read and parsed before the archive is opened.  The pathnames or patterns on the command line indicate which items in the archive should be processed.\n\n## OPTIONS\n\n* -v\n  * Produce verbose output.  In create and extract modes, tar will list each file name as it is read from or written to the archive.  In list mode, tar will produce output similar to that of ls(1). Additional -v options will provide additional detail.\n* -f file\n  * Read the archive from or write the archive to the specified file.  The filename can be - for standard input or standard output.\n* -x\n  * Extract to disk from the archive.  If a file with the same name appears more than once in the archive, each copy will be extracted, with later copies overwriting (replacing) earlier copies.\n\n## EXAMPLES\n\nConsider the following example\n\n```bash\n$ tar -cvf file.tar file1 file2 file3\n.\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_066_tee/ReadMe.md",
    "content": "# tee\n\n## NAME\n\ntee - read from standard input and write to standard output and files\n\n## SYNOPSIS\n\n> tee [OPTION]... [FILE]..\n\n## DESCRIPTION\n\nCopy standard input to each FILE, and also to standard output.\n\n* -a, --append\n  * append to the given FILEs, do not overwrite\n* -i, --ignore-interrupts\n  * ignore interrupt signals\n* --help display this help and exit\n* --version\n  * output version information and exit\n  \n```bash\nansible-playbook job-jenkins.yml -e \"app_name\"=\"test-app\" -e \"base64_encoded_adhoc_cmd\"=\"justtesting==\" -v | tee -a output-test-app.log\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_067_telnet/ReadMe.md",
    "content": "# telnet\n\n## NAME\n\ntelnet -- user interface to the TELNET protocol\n\n## SYNOPSIS\n\n> telnet [-468EFKLNacdfruxy] [-S tos] [-X authtype] [-e escapechar] [-k realm] [-l user] [-n tracefile] [-s src_addr] [host [port]]\n\n## DESCRIPTION\n\nThe telnet command is used to communicate with another host using the TELNET protocol.  If telnet is invoked without the host argument, it enters command mode, indicated by its prompt (``telnet>'').  In this mode, it accepts and executes the commands listed below. If it is invoked with arguments, it performs an open command with those arguments.\n\n## OPTIONS\n\n## EXAMPLES\n\nThe telnet commands allow you to communicate with a remote computer that is using the Telnet protocol. You can run telnet without parameters in order to enter the telnet context, indicated by the Telnet prompt (telnet>).\n\n```bash\n$ nslookup google.com\nServer: 192.168.1.1\nAddress: 192.168.1.1#53\n\nNon-authoritative answer:\nName: google.com\nAddress: 216.58.196.174\n```\n\nNow get the Non Authoritative Answer IP address.\n\n```bash\ntelnet 216.58.196.174 80\nTrying 216.58.196.174...\nConnected to maa03s31-in-f14.1e100.net.\nEscape character is '^]'.\n```\n\nHere 80 is the port number.\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_068_gradle/ReadMe.md",
    "content": "# gradle\n\n## Examples\n\n### build | build the application\n\n```bash\n# Install the dependencies if not already installed\n./gradlew build\n```\n\nDebug mode\n\n```bash\n./gradlew build --debug\n```\n\n### unitTest | run the unit tests\n\n```bash\n# Run the tests\n./gradlew test\n# In a typical development workflow with Gradle, if the source code or tests have not been modified since the last build, Gradle will consider the tasks up-to-date and will not rerun them\n# To force Gradle to rerun the tests, you can use the --rerun-tasks option\n./gradlew test --rerun-tasks\n```\n\n### bootRun | run the application\n\n```bash\n./gradlew bootRun\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_069_tr/ReadMe.md",
    "content": "# tr\n\n[tr](https://man7.org/linux/man-pages/man1/tr.1.html)\n\n## NAME\n\ntr - translate or delete characters\n\n## SYNOPSIS\n\n> tr [OPTION]... SET1 [SET2]\n\n## DESCRIPTION\n\nTranslate, squeeze, and/or delete characters from standard input,\nwriting to standard output.\n\n## OPTIONS\n\n- -d, --delete\n  - delete characters\n\n## EXAMPLES\n\n- Delete all the newlines from john.csr file\n\n```bash\ncat john.csr | base64 | tr -d \"\\n\"\n.\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_070_traceroute/ReadMe.md",
    "content": "# traceroute\n\n## NAME\n\ntraceroute -- print the route packets take to network host\n\nSYNOPSIS\n\n> traceroute [-adeFISdNnrvx] [-A as_server] [-f first_ttl] [-g gateway] [-i iface] [-M first_ttl] [-m max_ttl] [-P proto] [-p port] [-q nqueries] [-s src_addr] [-t tos][-w waittime] [-z pausemsecs] host [packetsize]\n\n## DESCRIPTION\n\nThe Internet is a large and complex aggregation of network hardware, connected together by gateways.  Tracking the route one's packets follow (or finding the miscreant gateway that's discarding your packets) can be difficult.  traceroute utilizes the IP protocol `time to live' field and attempts to elicit an ICMP TIME_EXCEEDED response from each gateway along the path to some host.\n\nThe only mandatory parameter is the destination host name or IP number.  The default probe datagram length is 40 bytes, but this may be increased by specifying a packet size (in bytes) after the destination host name.\n\nTraceroute transmits packets with small TTL (Time To Live) values. The TTL is an IP header field that is used to prevent packets from running into endless loops. When a router that handles the packet subtracts one from the packet's TTL. The packet expires and it's discarded when the TTL reaches zero.\n\nTraceroute sends ICMP Time Exceeded messages, (RFC 792), back to the sender when this occurs. By using small TTL values, the packets will quickly expire, so traceroute causes all routers along a packet's path to generate the ICMP messages that identify the router.\n\nFor example, TTL = 1 should produce the message from the first router, TTL = 2 generates a message from the second router in the path, and so on…\n\nThe Internet is a large and complex aggregation of network hardware, connected together by gateways.  Tracking the route one's packets follow (or finding the miscreant gateway that's discarding your packets) can be difficult.  traceroute utilizes the IP protocol `time to live' field and attempts to elicit an ICMP TIME_EXCEEDED response from each gateway along the path to some host.\n\n```bash\n$ traceroute google.com\n.\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_071_top/ReadMe.md",
    "content": "# top\n\n## NAME\n\ntop - display and update sorted information about processes\n\n## SYNOPSIS\n\n> top    [-a | -d | -e | -c <mode>]\n\n> top    [-F | -f]\n\n> top   [-h]\n\n> top   [-i <interval>]\n\n> top   [-l <samples>]\n\n> top   [-ncols <columns>]\n\n> top   [-o <key>] [-O <skey>]\n\n> top   [-R | -r]\n\n> top   [-S]\n\n> top   [-s <delay>]\n\n> top   [-n <nprocs>]\n\n> top  [-stats <keys>]\n\n> top   [-pid <processid>]\n\n> top   [-user <username>]\n\n> top   [-U <username>]\n\n> top   [-u]\n\n## DESCRIPTION\n\nThe top program periodically displays a sorted list of system processes.  The default sorting key is pid, but other keys can be used instead. Various output options are available.\n\n### OUTPUT INTERPRETATION\n\n```bash\ntop - 16:35:05 up 962 days, 19:47,  1 user, load average: 0.87, 0.97, 0.93\n```\n\n* current time (16:35:05)\n\n* uptime of the machine (up 962  day, 19:47)\n\n* users sessions logged in (1 users)\n\n* average load on the system (load average: 0.87, 0.97, 0.93) the 3 values refer to the last minute, five minutes and 15 minutes.\n\n```bash\nTasks: 372 total,   1 running, 370 sleeping,   0 stopped, 1 zombie\n```\n\n* Processes running in totals (372 total)\n\n* Processes running (1 running)\n\n* Processes sleeping (370 sleeping)\n\n* Processes stopped (0 stopped)\n\n* Processes waiting to be stopped from the parent process (1 zombie)\n\n```bash\nCpu(s):  2.8%us, 0.3%sy,  0.0%ni, 96.9%id, 0.0%wa,  0.0%hi, 0.1%si, 0.0%st\n```\n\n* Percentage of the CPU for user processes (2.8%us)\n\n* Percentage of the CPU for system processes (0.3%sy)\n\n* Percentage of the CPU processes with priority upgrade nice (0.0%ni)\n\n* Percentage of the CPU not used (96.9%id)\n\n* Percentage of the CPU processes waiting for I/O operations(0.0%wa)\n\n* Percentage of the CPU serving hardware interrupts (0.0% hi — Hardware IRQ\n\n* Percentage of the CPU serving software interrupts (0.1% si — Software Interrupts\n\n* The amount of CPU ‘stolen’ from this virtual machine by the hypervisor for other tasks (such as running another virtual machine) this will be 0 on desktop and server without Virtual machine. (0.0%st — Steal Time)\n\n```bash\nMem:  49474136k total, 45312428k used,  4161708k free, 1024932k buffers\nSwap:  4095992k total,   270564k used, 3825428k free, 20027500k cached\n```\n\n* The fourth and fifth rows respectively indicate the use of physical memory (RAM) and swap. In this order: Total memory in use, free, buffers cached.\n\n```bash\nPID USER      PR NI VIRT RES  SHR S %CPU %MEM TIME+  COMMAND\n16909 gie_tx    19 0 1957m 369m 3316 S 11.3  0.8 3:47.36 java\n```\n\n* PID – l’ID of the process(16909 )\n\n* USER – The user that is the owner of the process (gie_tx)\n\n* PR – priority of the process (19)\n\n* NI – The “NICE” value of the process (0)\n\n* VIRT – virtual memory used by the process (1957m )\n\n* RES – physical memory used from the process (369m )\n\n* SHR – shared memory of the process (3316 )\n\n* S – indicates the status of the process: S=sleep R=running Z=zombie (S)\n\n* %CPU – This is the percentage of CPU used by this process (11.3)\n\n* %MEM – This is the percentage of RAM used by the process (0.8)\n\n* TIME+ –This is the total time of activity of this process (3:47.36)\n\n* COMMAND – And this is the name of the process (javal)\n\n### OPTIONS\n\nCommand line option specifications are processed from left to right.  Options can be specified more than once. If conflicting options are specified, later specifications override  earlier ones. This makes it viable to create a shell alias for top with preferred defaults specified, then override those preferred defaults as desired on the command line.\n\n* -o <key> \n  * Order the process display by sorting on <key> in descending order.  A + or - can be prefixed to the key name to specify ascending or descending order, respectively.  The supported keys are\n  * pid    Process ID (default).\n  * cpu    CPU usage.\n* -p \n  * To get results for a single process\n* -M : Detect memory units\n  * Show memory units (k/M/G) and display floating point values in the memory summary.\n  \n### EXAMPLES\n\n```bash\n$ top  -o cpu\n.\n```\n\n* -p\n  * To get results for a single process\n  \n```bash\n$ top  -p 20171\ntop - 16:58:27 up 1033 days, 21:07,  2 users, load average: 0.11, 0.07, 0.01\nTasks:   1 total,   0 running,   1 sleeping, 0 stopped,   0 zombie\nCpu(s):  6.6%us, 0.0%sy,  0.0%ni, 93.1%id, 0.0%wa,  0.2%hi, 0.2%si, 0.0%st\nMem:  14105244k total,  9159980k used, 4945264k free,   820460k buffers\nSwap:  4095992k total,       96k used, 4095896k free,  2137540k cached\n\n  PID USER      PR NI VIRT RES  SHR S %CPU %MEM TIME+  COMMAND\n20171 pie_t    15 0 3078m 1.6g 4540 S  0.0 11.6 996:25.61 java\n```\n\n* -M : Detect memory units\n  * Show memory units (k/M/G) and display floating point values in the memory summary.\n  \n```bash\n$ top  -M\ntop - 18:30:13 up 961 days, 21:42,  1 user, load average: 1.26, 0.90, 0.91\nTasks: 376 total,   2 running, 373 sleeping,   0 stopped, 1 zombie\nCpu(s): 26.2%us,  2.6%sy, 0.0%ni, 71.0%id,  0.0%wa, 0.0%hi, 0.2%si, 0.0%st\nMem:    47.182G total,   42.604G used, 4688.285M free,  993.586M buffers\nSwap: 3999.992M total,  264.223M used, 3735.770M free,   18.359G cached\n\n  PID USER      PR NI VIRT RES  SHR S %CPU %MEM TIME+  COMMAND\n26996 pie_t    21 0 2494m 604m 7364 S 12.9  1.3 1:23.19 java\n```"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_072_tty/ReadMe.md",
    "content": "# tty\n\n## NAME\n\ntty - print the file name of the terminal connected to standard input\n\n### SYNOPSIS\n\n> tty [OPTION]...\n\n## DESCRIPTION\n\nPrint the file name of the terminal connected to standard input.\n\n## OPTIONS\n\n* -s, --silent, --quiet\n\n  * print nothing, only return an exit status\n\n* --help display this help and exit\n\n* --version\n  * output version information and exit\n\n```bash\n[admin@hostname ~]$ tty\n/dev/pts/0\n```\n\n```bash\n[ngcs_tg@dolnxprdxnvm33 ~]$ tty\n/dev/pts/0\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_073_ulimit/ReadMe.md",
    "content": "# ulimit\n\n## SYNOPSIS\n\n> ulimit [-HSTabcdefilmnpqrstuvx [limit]]\n\n## DESCRIPTION\n\nProvides control over the resources available to the shell and to processes started by it, on systems that allow such control.  \n\n## OPTIONS\n\n* -a\n  * All current limits are reported\n* -b\n  * The maximum socket buffer size\n* -c\n  * The maximum size of core files created\n* -d\n  * The maximum size of a process's data segment\n* -e\n    *The maximum scheduling priority (\"nice\")\n* -f\n  * The maximum size of files written by the shell and its children\n* -i\n  * The maximum number of pending signals\n* -l\n  * The maximum size that may be locked into memory\n* -m\n  * The maximum resident set size (many systems do not honor this limit) -n     The maximum number of open file descriptors (most systems do not allow this value to be set) -p     The pipe size in 512-byte blocks (this may not be set)\n* -q\n  * The maximum number of bytes in POSIX message queues\n* -r\n  * The maximum real-time scheduling priority\n* -s\n  * The maximum stack size\n* -t\n  * The maximum amount of cpu time in seconds\n* -u\n  * The maximum number of processes available to a single user\n* -v\n  * The maximum amount of virtual memory available to the shell and, on some systems, to its children -x     The maximum number of file locks\n* -T\n  * The maximum number of threads\n\n```bash\n[username@hostname~]$ ulimit -a\ncore file size          (blocks, -c) unlimited\ndata seg size           (kbytes, -d) unlimited\nscheduling priority             (-e) 0\nfile size               (blocks, -f) unlimited\npending signals                 (-i) 111795\nmax locked memory       (kbytes, -l) 64\nmax memory size         (kbytes, -m) unlimited\nopen files                      (-n) 65536\npipe size            (512 bytes, -p) 8\nPOSIX message queues     (bytes, -q) 819200\nreal-time priority              (-r) 0\nstack size              (kbytes, -s) 8192\ncpu time               (seconds, -t) unlimited\nmax user processes              (-u) 16384\nvirtual memory          (kbytes, -v) unlimited\nfile locks                      (-x) unlimited\n[username@hostname ~]$\n```\n\n### /proc/sys/fs/file-max vs ulimit\n\nfile-max is the maximum File Descriptors (FD) enforced on a kernel level, which cannot be surpassed by all processes without increasing.\n\nThe ulimit is enforced on a process level, which can be less than the file-max. If some user has launched 4 processes and the ulimit configuration for FDs is 1024, each process may open 1024 FDs. The user is not going to be limited to 1024 FDs but the processes which are launched by that user.\n\n```bash\nme@superme:~$ ulimit -n \n1024 \nme@superme:~$ lsof | grep $USER | wc -l \n8145\n```\n\nHow do I know if I’m getting close to hitting this limit on my server? Run the command: cat /proc/sys/fs/file-nr. This will return three values, denote the number of allocated file handles, the number of allocated but unused file handles, and the maximum number of file handles. Note that file-nr IS NOT a tunable parameter. It is informational only. On my server, this returns: 3488 0 793759. This means that currently, my server has only allocated 3488 of the 793,759 allocation limit and is in no danger of hitting this limit at this time.\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_074_umask/ReadMe.md",
    "content": "# umask\n\n## DESCRIPTION\n\nIts a shell built-in\n\nShell builtin command\n\nReturn, or set, the value of the system's file mode creation mask.\n\nOn Linux and other Unix-like operating systems, new files are created with a default set of permissions. Specifically, a new file's permissions may be restricted in a specific way by applying a permissions \"mask\" called the umask. The umask command is used to set this mask, or to show you its current value.\n\nIn octal representations of file permissions, there are actually four digits.The first digit is a special file permission indicator, and for the purposes of this discussion can be considered always to be zero. So from here on out, when we discuss file permission 777, it may also be referred to as 0777.\n\nThe umask masks permissions by restricting them by a certain value.Essentially, each digit of the umask is \"subtracted\" from the OS's default value to arrive at the default value that you define. It's not really subtraction; technically, the mask is negated (its bitwise compliment is taken) and this value is then applied to the default permissions using a logical AND operation. The result is that the umask tells the operating system which permission bits to \"turn off\" when it creates a file. So it's not really subtraction, but it's a similar concept, and thinking of it as subtraction can help to understand it.\n\nIn Linux, the default permissions value is 666 for a regular file, and 777 for a directory. When creating a new file or directory, the kernel takes this default value, \"subtracts\" the umask value, and gives the new files the resulting permissions.\n\nSo if our umask value is 022, then any new files will, by default, have the permissions 644 (666 - 022). Likewise, any new directories will, by default, be created with the permissions 755 (777 - 022).\n\n## EXAMPLES\n\nFollowing  will return your system's umask as a four-digit octal number, for example:\n\n```bash\nm-C02SN6PVG8WN:~ asr000p$ umask\n0022\nm-C02SN6PVG8WN:~ asr000p$ \n```\n\nNow let's change the umask. To set a umask of 022, use the command:\n\n```bash\numask 022\n```\n\nThis is the same as running umask 0022; if you specify only three digits, the first digit will be assumed to be zero. Let's verify that the change took place:\n\nAnd now let's create a new file:\n\n```bash\n$ touch testfile\nls -l testfile\n-rw-r--r-- 1 myusername myusername 0 Jan  7 14:39 testfile\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_075_uname/ReadMe.md",
    "content": "# uname\n\n## NAME\n\nuname - print system information\n\n## SYNOPSIS\n\n> uname [OPTION]...\n\n## DESCRIPTION\n\nPrint certain system information.  With no OPTION, same as -s.\n\n- -a, --all\n  - print all information, in the following order, except omit -p and -i if unknown:\n- -s, --kernel-name\n  - This option stands for \"system name\" and returns the name of the operating system kernel. This option is commonly used to determine which operating system is currently running on the machine. For example, on a Linux machine, the uname -s command will return \"Linux\".\n- -n, --nodename\n  - print the network node hostname\n- -r, --kernel-release\n  - print the kernel release\n- -v, --kernel-version\n  - print the kernel version\n- -m, --machine\n  - This option stands for \"machine architecture\" and returns the machine hardware name. This option is commonly used to determine the CPU architecture of the machine. For example, on an x86-based machine, the uname -m command will return \"x86_64\".\n- -p, --processor\n  - print the processor type or \"unknown\"\n- -i, --hardware-platform\n  - print the hardware platform or \"unknown\"\n- -o, --operating-system\n  - print the operating system\n- --help display this help and exit\n  - --version\n- output version information and exit\n\n## Examples\n\n```bash\n$ uname -a\nLinux test.hq.test.com 2.6.18-419.el5 #1 SMP Wed Feb 22 22:40:57 EST 2017 x86_64 x86_64 x86_64 GNU/Linux\n\n$ uname -s\nLinux\n\n# x86_64: If you see this, your computer has a 64-bit Intel or AMD processor, which is not ARM-based.\n# arm64, aarch64: These indicate that your processor is 64-bit ARM architecture. The M1 Macs, released by Apple in 2020, use Apple's own M1 chips, which are based on ARM architecture.\n$ uname -m   # linux machine\nx86_64\n\n$ uname -m    # m1 mac \narm64\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_076_uniq/ReadMe.md",
    "content": "# uniq\n\n## NAME\n\nuniq -- report or filter out repeated lines in a file\n\n## SYNOPSIS\n\n> uniq [-c | -d | -u] [-i] [-f num] [-s chars] [input_file [output_file]]\n\n## DESCRIPTION\n\nThe uniq utility reads the specified input_file comparing adjacent lines, and writes a copy of each unique input line to the output_file.  If input_file is a single dash (`-') or absent, the standard input is read. If output_file is absent, standard output is used for output. The second and succeeding copies of identical adjacent input lines are not written.  Repeated lines in the input will not be detected if they are not adjacent, so it may be necessary to sort the files first.\n\n## OPTIONS\n\nThe following options are available:\n\n* -c\n  * Precede each output line with the count of the number of times the line occurred in the input, followed by a single space.\n* -d\n  * Only output lines that are repeated in the input.\n* -f num  \n  * Ignore the first num fields in each input line when doing comparisons.  A field is a string of non-blank characters separated from adjacent fields by blanks.  Field numbers are one based, i.e., the first field is field one.\n* -s chars\n  * Ignore the first chars characters in each input line when doing comparisons.  If specified in conjunction with the -f option, the first chars characters after the first num fields will be ignored.  Character numbers are one based, i.e., the first character is character one.\n* -u\n  * Only output lines that are not repeated in the input.\n* -i\n  * Case insensitive comparison of lines.\n\n```bash\n$ cat testFile \nOne Two\nOne Two\nOne Two Three Four\nOne Two Three Four\nOne Two Three Four\nOne\nOne 1\nm-C02SN6PVG8WN:~ asr000p$ uniq testFile \nOne Two\nOne Two Three Four\nOne\nOne 1\n$ \n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_077_unzip/ReadMe.md",
    "content": "# unzip\n\n## NAME\n\nunzip - list, test and extract compressed files in a ZIP archive\n\n## SYNOPSIS\n\n> unzip [-Z] [-cflptTuvz[abjnoqsCDKLMUVWX$/:^]] file[.zip] [file(s) ...]  [-x xfile(s) ...] [-d exdir]\n\n## DESCRIPTION\n\nunzip  will list, test, or extract files from a ZIP archive, commonly found on MS-DOS systems.  The default behavior (with no options) is to extract into the current directory (and subdirectories below it) all files from the specified ZIP archive.\n\n## OPTIONS\n\n* [-d exdir]\n  * An  optional directory to which to extract files.  By default, all files and subdirectories are recreated in the current directory; the -d option allows extraction in an arbitrary directory (always assuming one has permission to write to the directory).\n\n## EXAMPLES\n\nTo unzip to a particular directory\n\n```bash\n$ unzip /tmp/phantomjs.zip -d /tmp;\n.\n```\n\nTo use unzip to extract all members of the archive letters.zip into the current directory and subdirectories below it, creating any subdirectories as necessary:\n\n```bash\n$ unzip letters\n.\n```\n\n To extract all members of letters.zip into the current directory only:\n\n```bash\nunzip -j letters\n.\n```\n\nHere -j option signifies junk paths. The archive's directory structure is not recreated; all files are deposited in the extraction directory (by default, the current one).\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_078_uptime/ReadMe.md",
    "content": "# uptime\n\n## NAME\n\nuptime -- show how long system has been running\n\n## SYNOPSIS\n\n> uptime\n\n## DESCRIPTION\n\nThe uptime utility displays the current time, the length of time the system has been up, the number of users, and the load average of the system over the last 1, 5, and 15 minutes.\n\n## EXAMPLES\n\n```bash\n$ uptime\n0:59  up 45 days,  4:36, 9 users, load averages: 1.93 2.17 2.25\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_079_vi/ReadMe.md",
    "content": "# vi\n\n## NAME\n\nvim - Vi IMproved, a programmers text editor\n\n## DESCRIPTION\n\nVim is a text editor that is upwards compatible to Vi.  It can be used to edit all kinds of plain text.  It is especially useful for editing programs.\n\n## COMMANDS\n\n## Examples\n\nTo search and replace globally in a file\n\n```bash\n:%s/search/replace/g\n```\n\nHow to paste yaml in vi\n\n- When you try to paste yaml directly\n\n```yaml\n- name: install packages\n  pip:\n    name: openshift==0.11.2\n  tags:\n    - docker-image\n    - full-deploy\n    - code-deploy\n```\n\n- After pasting it in vi.  0_0\n\n```bash\n- name: install packages\n    pip:\n                name: openshift==0.11.2\n                  tags:\n                              - docker-image\n                                    - full-deploy\n                                          - code-deploy\n```\n\n- Turn off the auto-ident when you paste code in `exec` mode [reference link](https://stackoverflow.com/questions/2514445/turning-off-auto-indent-when-pasting-text-into-vim)\n\n```bash\n:set paste                                                                                                                                                                                                  \n```\n\n- Now go to insert mode and paste the yaml ( you should see `-- INSERT (paste) --` at the bottom)\n\n```yaml\n- name: install packages\n  pip:\n    name: openshift==0.11.2\n  tags:\n    - docker-image\n    - full-deploy\n    - code-deploy\n```\n\n- You can turn it back on\n\n---\n\n- Copy single character on which cursor rests [vi.stackexchange.com](https://vi.stackexchange.com/questions/5806/how-can-i-yank-copy-the-single-character-on-which-the-cursor-rests)\n\n```bash\n# yiw = yank in current word\n# yaw = yank all word (includes a trailing space)\n# yy = yank the current line\n# 3yy = yank three lines starting at the current one\n# yap = yank all paragraph (includes trailing newline)\n\n# To copy two characters from where the cursor is residing\n2yl\n# let's say it copies *a\n# To paste at the begining of the line press\n(capital)P\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_080_vmstat/ReadMe.md",
    "content": "# vmstat\n\n## NAME\n\nvmstat - Report virtual memory statistics\n\n## SYNOPSIS\n\n> vmstat [-a] [-n] [-S unit] [delay [ count]]\n\n> vmstat [-s] [-n] [-S unit]\n\n> vmstat [-m] [-n] [delay [ count]]\n\n> vmstat [-d] [-n] [delay [ count]]\n\n> vmstat [-p disk partition] [-n] [delay [ count]]\n\n> vmstat [-f]\n\n> vmstat [-V]\n\n## DESCRIPTION\n\nvmstat reports information about processes, memory, paging, block IO, traps, and cpu activity. The  first report produced gives averages since the last reboot. Additional reports give information on a sampling period of length delay.  The process and memory reports are instantaneous in either case.\n\n```bash\n[ngcs_tg@dolnxprdxnvm33 ~]$ vmstat\nprocs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------\n r  b swpd   free buff  cache si so    bi bo in cs us sy id wa st\n 0  0 270564 4729352 1017836 19267912    0 0 4 45 0 0 6 1 93  0 0\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_081_wall/ReadMe.md",
    "content": "# wall\n\n## NAME\n\nwall -- send a message to everybodyâs terminal.\n\n## SYNOPSIS\n\n> wall [-n] [ message ]\n\n## DESCRIPTION\n\nWall  sends a  message to everybody logged in with their mesg(1) permission set to yes.  The message can be given as an argument to wall, or it can be sent to wallâs standard input.  When using the standard input from a terminal, the message should be terminated with the EOF key (usually Control-D). The length of the message is limited to 22 lines.  For every invocation of wall a notification will be written to syslog, with facility LOG_USER and level LOG_INFO.\n\n## OPTIONS\n\n* -n\n  * Suppresses the normal banner printed by wall, changing it to \"Remote broadcast message\".  This option is only available for root if wall is installed set-group-id, and is used by rpc.walld(8).\n  \n```bash\n$ wall \"mesage for ankit : netstat -anp|grep \"10.3.10\"\"\n.\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_082_wc/ReadMe.md",
    "content": "# wc\n\n## NAME\n\nwc -- word, line, character, and byte count\n\n## SYNOPSIS\n\n> wc [-clmw] [file ...]\n\n## DESCRIPTION\n\nThe wc utility displays the number of lines, words, and bytes contained in each input file, or standard input (if no file is specified) to the standard output.  A line is defined as a string of characters delimited by a <newline> character. Characters beyond the final <newline> character will not be included in the line count.\n\nA word is defined as a string of characters delimited by white space characters.  White space characters are the set of characters for which the iswspace(3) function returns true.  If more than one input file is specified, a line of cumulative counts for all the files is displayed on a separate line after the output for the last file.\n\n## OPTIONS\n\nThe following options are available:\n\n* -c\n  * The number of bytes in each input file is written to the standard output.  This will cancel out any prior usage of the -m option.\n* -l\n  * The number of lines in each input file is written to the standard output.\n* -m\n  * The number of characters in each input file is written to the standard output.  If the current locale does not support multibyte characters, this is equivalent to the -c option.  This will cancel out any prior usage of the -c option.\n* -w\n  * The number of words in each input file is written to the standard output. \n* When an option is specified, wc only reports the information requested by that option.  The order of output always takes the form of line, word, byte, and file name. The default action is equivalent to specifying the -c, -l and -w options. \n  * If no files are specified, the standard input is used and no file name is displayed.  The prompt will accept input until receiving EOF, or [^D] in most environments.\n  \n\n```bash\n$ userExists=`cat /etc/passwd | grep looker | wc -l`\n.\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_083_wget/ReadMe.md",
    "content": "# wget\n\n## NAME\n\nWget - The non-interactive network downloader.\n\n## DESCRIPTION\n\nGNU Wget is a free utility for non-interactive download of files from the Web.  It supports HTTP, HTTPS, and FTP protocols, as well as retrieval through HTTP proxies.\n\nWget is non-interactive, meaning that it can work in the background, while the user is not logged on.  This allows you to start a retrieval and disconnect from the system, letting Wget finish the work. By contrast, most of the Web browsers require constant user's presence, which can be a great hindrance when transferring a lot of data.\n\n## SYNOPSIS\n\n> wget [option]... [URL]...\n\n```bash\nwget http://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-linux-x64.tar.gz\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_084_whatis/ReadMe.md",
    "content": "# whatis\n\n## NAME\n\nwhatis - search the whatis database for complete words.\n\n## SYNOPSIS\n\n> whatis keyword ...\n\n## DESCRIPTION\n\nwhatis  searches  a set of  database files  containing short descriptions of system commands for keywords and displays the result on the standard output.  Only complete word matches are displayed.\n\nThe whatis database is created using the command /usr/libexec/makewhatis.\n\nwhatis - whatis searches a set of database files containing short descriptions of system commands for keywords and displays the result on the standard output\n\n```bash\nwhatis ls\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_085_whereis/ReadMe.md",
    "content": "# whereis\n\n## NAME\n\nwhereis -- locate programs\n\n## SYNOPSIS\n\n> whereis [program ...]\n\n## DESCRIPTION\n\nThe whereis utility checks the standard binary directories for the specified programs, printing out the paths of any it finds.\n\nThe path searched is the string returned by the sysctl(8) utility for the ``user.cs_path'' string.\n\nwhereis -  locate the binary, source, and manual page files for a command\n\n```bash\nwhereis java\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_086_which/ReadMe.md",
    "content": "# which\n\n## NAME\n\nwhich -- locate a program file in the user's path\n\n## SYNOPSIS\n\n> which [-as] program ...\n\n## DESCRIPTION\n\nThe which utility takes a list of command names and searches the path for each executable file that would be run had these commands actually been invoked.\n\nSome shells may provide a builtin which command which is similar or identical to this utility.\n\n## OPTIONS\n\n* -a\n  * List all instances of executables found (instead of just the first one of each).\n* -s\n  * No output, just return 0 if any of the executables are found, or 1 if none are found.\n\n## EXAMPLES\n\nwhich - shows the full path of (shell) commands\n\n```bash\nwhich java\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_087_xargs/ReadMe.md",
    "content": "# xargs\n\n## NAME\n\nxargs -- construct argument list(s) and execute utility\n\n## EXAMPLES\n\n### -I | Replace string\n\nTo echo the arguments passed to xargs\n\n```bash\ncat <<EOF                                                           \n1\n2\n3\nEOF\n```\n\nOutput\n\n```bash\n1\n2\n3\n```\n\n```bash\ncat <<EOF | xargs -I % echo \" -- % -- % -- '%' \"\n1\n2\n3\nEOF\n```\n\nOutput\n\n```bash\n -- 1 -- 1 -- '1' \n -- 2 -- 2 -- '2' \n -- 3 -- 3 -- '3'\n```\n\nTo download poms to /tmp directory\n\n```bash\ncat <<EOF | xargs -I % bash -c 'curl -L -o /tmp/$(basename %) %'\nhttps://repo1.maven.org/maven2/org/tomlj/tomlj/1.0.0/tomlj-1.0.0.pom\nEOF\n```\n\n```bash\n$ ls /tmp/*.pom\n/tmp/commons-lang3-3.12.0.pom /tmp/tomlj-1.0.0.pom\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_088_zcat/ReadMe.md",
    "content": "# zcat\n\n## DESCRIPTION\n\nzcat – Expands a compressed file to standard output\n\nzcat uncompresses either a list of files on the command line or its standard input and writes the uncompressed data on standard output. zcat will uncompress files whether they have a .gz suffix or not.  \n\n## SYNOPSIS\n\n> zcat [ -f ] [ File … ]\n\n## EXAMPLES\n\nTo view the contents of zipped file\n\n```bash\n$ cat file1.txt\nabc\ndef\nghi\n$ gzip file1.txt\n$ zcat file1.txt.gz \nabc\ndef\nghi\n```\n\nDisplay the file content without worrying about whether it is compressed or not. When you are not sure whether a file is compressed or not, you can still view the file without worrying about it’s compression status as shown below.\n\n```bash\nzcat -f input-file\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_089_zip/ReadMe.md",
    "content": "# zip\n\n## NAME\n\nzip - package and compress (archive) files\n\n## SYNOPSIS\n\n> zip [-aABcdDeEfFghjklLmoqrRSTuvVwXyz!@$] [--longoption ...]  [-b path] [-n suffixes] [-t date] [-tt date] [zipfile [file ...]]  [-xi list]\n\n## DESCRIPTION\n\nzip is a compression and file packaging utility for Unix, VMS, MSDOS, OS/2, Windows 9x/NT/XP, Minix, Atari, Macintosh, Amiga, and Acorn RISC OS.  It is analogous to a combination of the Unix commands tar(1) and compress(1) and is compatible with PKZIP (Phil Katz's ZIP for MSDOS systems).\n\n## EXAMPLES\n\nCommand format.  The basic command format is\n\n> zip options archive inpath inpath ...\n\n* where  archive is a new or existing zip archive and inpath is a directory or file path optionally including wildcards.  When given the name of an existing zip archive, zip will replace identically named entries in the zip archive (matching the relative names as stored in the archive) or add entries for new names.  For example, if foo.zip exists and contains foo/file1 and foo/file2, and the directory foo contains the files foo/file1 and foo/file3, then:\n\n```bash\nzip -r foo.zip foo\nor \n zip -r foo foo\n```\n\n* will replace foo/file1 in foo.zip and add foo/file3 to foo.zip.  After this, foo.zip contains foo/file1, foo/file2, and foo/file3, with foo/file2 unchanged from before.\n\n* Here -r is for recurse paths\n\n* In this case, all the files and directories in foo are saved in a zip archive named foo.zip, including files with names starting with \".\", since the recursion  does not use the shell's file-name substitution mechanism.\n\n* To add a jar to an existing war you can use the following command\n\n```bash\nzip -d xx-xx-xx.war WEB-INF/lib/xx-xx-xx-5.4.2.0.jar\n```\n\n* Zip with encryption\n\n```bash\n$ tree -L 2\n.\n└── zipfolder\n    ├── java_error_in_idea_63910.log\n    └── jbr_err_pid63910.log\n$ zip -e -r -P somepassword file.zip zipfolder\n  adding: zipfolder/ (stored 0%)\n  adding: zipfolder/java_error_in_idea_63910.log (deflated 87%)\n  adding: zipfolder/jbr_err_pid63910.log (deflated 72%)\n$ tree -L 2\n.\n├── file.zip\n└── zipfolder\n    ├── java_error_in_idea_63910.log\n    └── jbr_err_pid63910.log\n$ rm -rf zipfolder\n$ unzip -P somepassword file.zip\nArchive:  file.zip\n   creating: zipfolder/\n  inflating: zipfolder/java_error_in_idea_63910.log\n  inflating: zipfolder/jbr_err_pid63910.log\n$ tree -L 2\n.\n├── file.zip\n└── zipfolder\n    ├── java_error_in_idea_63910.log\n    └── jbr_err_pid63910.log\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_090_ansible/ReadMe.md",
    "content": "# Ansible\n\n## list inventory\nReference Docs\nhttps://docs.ansible.com/ansible/latest/user_guide/intro_patterns.html\n\nTo convert from *.ini format for *.yml format you can use the following command\n```bash\nansible-inventory -i inventory.ini -y --list > inventory.yaml\n```\n\nDefault output without setting ansible.cfg\n```bash\n## will give output of /etc/ansible/hosts\n$ ansible --list-hosts all\n[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'\n  hosts (0):\n```\n\nusing custom file ansible.cfg\n```buildoutcfg\n[defaults]\ninventory=inventory.yml\n```\n\nThe following is the inventory.yml\n```yaml\nall:\n  hosts:\n    mail.example.com:\n  children:\n    local:\n      hosts:\n        127.0.0.1:\n          ansible_connection: local\n    webservers:\n      hosts:\n        foo.example.com:\n        bar.example.com:\n    dbservers:\n      hosts:\n        one.example.com:\n        two.example.com:\n        three.example.com:\n    east:\n      hosts:\n        foo.example.com:\n        one.example.com:\n        two.example.com:\n    west:\n      hosts:\n        bar.example.com:\n        three.example.com:\n    prod:\n      hosts:\n        foo.example.com:\n        one.example.com:\n        two.example.com:\n    test:\n      hosts:\n        bar.example.com:\n        three.example.com:\n```\n\n```bash\n$ ansible -i inventory.yml --list-host all\n  hosts (7):\n    mail.example.com\n    foo.example.com\n    two.example.com\n    one.example.com\n    bar.example.com\n    three.example.com\n    127.0.0.1\n```\n\nafter setting ansible.cfg file\n```bash\n$ ansible --list-host all\n  hosts (7):\n    mail.example.com\n    foo.example.com\n    two.example.com\n    one.example.com\n    bar.example.com\n    three.example.com\n    127.0.0.1\n```\n\nusing group names \"webservers\" is a group\n```bash\n$ ansible --list-host \"webservers\"\n  hosts (2):\n    bar.example.com\n    foo.example.com\n```\n\nusing wild cards\n```bash\n$ ansible --list-host \"*.com\"\n  hosts (6):\n    two.example.com\n    one.example.com\n    foo.example.com\n    bar.example.com\n    mail.example.com\n    three.example.com\n```\n\ngiving multiple groups\n```bash\n$ ansible --list-host \"prod:test\"\n  hosts (5):\n    foo.example.com\n    two.example.com\n    one.example.com\n    bar.example.com\n    three.example.com\n```\n\nusing as an array\n```bash\n$ ansible --list-host \"prod[0]\"\n  hosts (1):\n    foo.example.com\n```\n\nusing negation\n```bash\n$ ansible --list-host \"\\!prod\"\n  hosts (4):\n    mail.example.com\n    bar.example.com\n    three.example.com\n    127.0.0.1\n```\n\n## Modules\n\nReference Docs\nhttps://docs.ansible.com/ansible/latest/modules/modules_by_category.html\n\n### ping\n\nTo check the connectivity of all hosts\n```bash\n$ ansible -m ping localhost\n127.0.0.1 | SUCCESS => {\n    \"ansible_facts\": {\n        \"discovered_interpreter_python\": \"/usr/bin/python\"\n    },\n    \"changed\": false,\n    \"ping\": \"pong\"\n}\n```\n\n### command (the default module)\n```bash\n$ ansible -m command -a \"ls\" local\n127.0.0.1 | CHANGED | rc=0 >>\nREADME.md\nansible.cfg\ninventory.ini\ninventory.yaml\ninventory.yml\n\n# since it is default\n$ ansible -a \"ls\" local\n127.0.0.1 | CHANGED | rc=0 >>\nREADME.md\nansible.cfg\ninventory.ini\ninventory.yaml\ninventory.yml\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_091_terraform/ReadMe.md",
    "content": "#  Terraform commands \n\n- [apply](#apply)\n- [console](#console)\n- [destroy](#destroy)\n- [fmt](#fmt)\n- [graph](#graph)\n- [import](#import)\n- [init](#init)\n- [plan](#plan)\n    - [-out](#-out)\n- [refresh](#refresh)\n- [show](#show)\n- [taint & untaint](#taint)\n\n\n  \n\n## apply\n[apply](https://www.terraform.io/docs/commands/apply.html)\n\n- To apply the changes required to reach the desired state of the configuration, \nor the pre-determined set of actions generated by a terraform plan execution plan\n```bash\n$ terraform apply\n```\n\n- To apply the changes and pass variables via file 'terraform.tfvars'\n```bash\n$ terraform apply -var-file=../../terraform.tfvars\n```\n\n- To only apply the changes saved in outfile\n\n```bash\n$ terraform apply out.terraform\n```\n\n## console\n[console](https://www.terraform.io/docs/commands/console.html)\n\n- The terraform console command provides an interactive console for evaluating expressions.\n  \n```bash\n$ terraform console\n```\n\n## destroy\n[destroy](https://www.terraform.io/docs/commands/destroy.html)\n\n- To destroy the Terraform-managed infrastructure.\n```bash\n$ terraform destroy\n```\n\n## fmt\n[fmt](https://www.terraform.io/docs/commands/fmt.html)\n\n- The terraform fmt command is used to rewrite Terraform configuration files to a canonical format and style\n\n```bash\n$ terraform fmt 25-instance.tf \n25-instance.tf\n```\n\n\n## graph\n[graph](https://www.terraform.io/docs/commands/graph.html)\n- To generate a visual representation of either a configuration or execution plan\n- `->` will symbolise a relationship\n```bash\n$ terraform graph                     \ndigraph {\n        compound = \"true\"\n        newrank = \"true\"\n        subgraph \"root\" {\n                \"[root] aws_default_subnet.default_az1\" [label = \"aws_default_subnet.default_az1\", shape = \"box\"]\n                \"[root] aws_default_vpc.default\" [label = \"aws_default_vpc.default\", shape = \"box\"]\n.\n.\n.\n                \"[root] root\" -> \"[root] provisioner.file (close)\"\n                \"[root] root\" -> \"[root] provisioner.remote-exec (close)\"\n        }\n}\n\n```\n\n## import\n[import](https://www.terraform.io/docs/commands/import.html)\n\n- The terraform import command is used to import existing resources into Terraform.\n- Support you local terraform state differs from remote state. In the remote state you have on VM added externally.\nYou want to import that into the existing state.\n- This will sync the local terraform.tfstate file with that of remote. However, you will need to create the corresponding resource files (*.tf) by yourself.\n> terraform import aws_instance.<name> <id-of-instance-from-console-aws>\n```bash\nterraform import aws_instance.example i-1246434554345\n```\n\n## init\n[init](https://www.terraform.io/docs/commands/init.html)\n\n- To initialize a working directory containing Terraform configuration files.\n```bash\n$ terraform init\n```\n\n## plan\n[plan](https://www.terraform.io/docs/commands/plan.html)\n\n- To create an execution plan\n```bash\n$ terraform plan\n```\n### -out\n- The path to save the generated execution plan\n```bash\nterraform plan -out out.terraform\n```\n\n## refresh\n[refresh](https://www.terraform.io/docs/commands/refresh.html)\n\n- The terraform refresh command is used to reconcile the state Terraform knows about \n(via its state file) with the real-world infrastructure. This can be used to detect any drift from the last-known state, and to update the state file.\n\n```bash\n$ terraform refresh -var-file=../../terraform.tfvars\naws_key_pair.mykey: Refreshing state... [id=mykey]\naws_default_vpc.default: Refreshing state... [id=vpc-62320e18]\naws_default_subnet.default_az1: Refreshing state... [id=subnet-3857b819]\ndata.aws_ami.ubuntu: Refreshing state...\naws_security_group.sg_22: Refreshing state... [id=sg-0f148e80e2263d39d]\naws_instance.web: \n```\n\n\n## show\n[show](https://www.terraform.io/docs/commands/show.html)\n\n- To show the current terraform state. (Usually executed after `terraform init` and `terraform apply`)\n```bash\n$ terraform show\n# aws_default_subnet.default_az1:\nresource \"aws_default_subnet\" \"default_az1\" {\n    arn                             = \"arn:aws:ec2:us-east-1:****************:subnet/subnet-3857b819\"\n    assign_ipv6_address_on_creation = false\n.\n.\n.\n        values = [\n            \"hvm\",\n        ]\n    }\n}\n```\n\n## taint\n[taint](https://www.terraform.io/docs/commands/taint.html)\n\n- Suppose you have got resources after executing `terraform init` and `terraform plan`. Now you want to REPLACE \none of the RESOURCES like key-pair which is made like this\n```hcl-terraform\nresource \"aws_key_pair\" \"mykey\" {\n  key_name   = \"mykey\"\n  public_key = file(var.PATH_TO_PUBLIC_KEY)\n}\n```\n\n```bash\n$ terraform taint aws_key_pair.mykey\nResource instance aws_key_pair.mykey has been marked as tainted.\n``` \n\n```bash\nterraform plan -var-file=../../terraform.tfvars\n.\n.\n.\nTerraform will perform the following actions:\n\n  # aws_key_pair.mykey is tainted, so must be replaced\n-/+ resource \"aws_key_pair\" \"mykey\" {\n      ~ fingerprint = \"24:f6:e5:e0:4e:e9:db:3e:93:f4:a0:ed:1c:0b:52:31\" -> (known after apply)\n      ~ id          = \"mykey\" -> (known after apply)\n        key_name    = \"mykey\"\n      ~ key_pair_id = \"key-013a2ee21d0df0283\" -> (known after apply)\n        public_key  = \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDLmviSRpF6tvGLpMExQZ94I9mqhVtINyjH1rEeDwSPB+1v00P608klF++uhRvREUyNID/i2w1cwjOi9H1isoZNoVaSKdiVIqEIp2HaIhTtKTo+NqVCdIeQXnwK2bS/OeIVScYn6YZjPAcWgMk0GH1q9zIn+sz1own3QxD4qysvoqN5bD9BxsDboLxKw803jJlcjRiSrdWbmEOoIXrEbv9t99ZxsYLIDIDZJskiAcvqKEywt+dRpvM/49c3pJ5JVluNNJypTObM2GI4piC1TcOL6xMgs+UsbDgEsHPYHXZnYENX/GGXYJcdDITCtMHap8O33EvOh5piIXHF6kQEgXDRCE61AEWnHQeGERJtTqlCiBAUUDNzAHt9UjZJVmioLJ+vLeW9M3KjUCh5MWxZ7hIJ7xvLxermNlRahzTlaGLhvkiyoaUyuh+qhpBIfCv7lioLaagv9jegc6AErMqDGFgPieJh479z+QqagPODwP0UB0jt07b7V/3csImEiy1aKY2wOQriXCkcAnSvKuAuiT2a2gOfPMJlzVd8hLrA2f5YuLWLm8p8rLXvkNSJ8YKNbQx1z5pII9R54YEOixjgp9bDNJL39ekrxlzLj72gpWg+AF+FFVNJ4gfZDjBSxUbkPhox7jhIV4DOCvc6W5uLkCXe62R9aNn1/Hkxcq99eoen1w== codeaprendiz@gmail.com\"\n      - tags        = {} -> null\n    }\n\nPlan: 1 to add, 0 to change, 1 to destroy.\n```\n\n```bash\n$ terraform untaint aws_key_pair.mykey           \nResource instance aws_key_pair.mykey has been successfully untainted.\n```\n\n\n\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_092_kubectl/ReadMe-static.md",
    "content": "\n# Documentation Map\n\n[Home](https://kubernetes.io/docs/home/)\n\n- [what-is-kubernetes](https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/)\n- [components](https://kubernetes.io/docs/concepts/overview/components)\n    - Control Plane Components\n        - [kube-apiserver](https://kubernetes.io/docs/concepts/overview/components/#kube-apiserver)\n        - [etcd](https://kubernetes.io/docs/concepts/overview/components/#etcd)\n        - [kube-scheduler](https://kubernetes.io/docs/concepts/overview/components/#kube-scheduler)\n        - [kube-controller-manager](https://kubernetes.io/docs/concepts/overview/components/#kube-controller-manager)\n        - [cloud-controller-manager](https://kubernetes.io/docs/concepts/overview/components/#cloud-controller-manager)\n    - Node Components\n        - [kubelet](https://kubernetes.io/docs/concepts/overview/components/#kubelet)\n        - [kube-proxy](https://kubernetes.io/docs/concepts/overview/components/#kube-proxy)\n        - [Container runtime](https://kubernetes.io/docs/concepts/overview/components/#container-runtime)\n\n- [kubernetes-api](https://kubernetes.io/docs/concepts/overview/kubernetes-api/)\n  [Command Line Tools Reference](https://kubernetes.io/docs/reference/command-line-tools-reference/)\n    - [kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/)\n    - [kube-apiserver](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/)\n    - [kube-controller-manager](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-controller-manager/)\n    - [kube-proxy](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-proxy/)\n    - [kube-scheduler](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-scheduler/)\n    - [kubelet-authentication-authorization](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet-authentication-authorization/)\n    - [TLS bootstrapping](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet-tls-bootstrapping/)\n\n## Useful Docs\n\n- [docs.openshift.com »  OpenShift Container Platform 4.13 » Managing security context constraints\n  ](https://docs.openshift.com/container-platform/4.13/authentication/managing-security-context-constraints.html)\n- [cloud.redhat.com » blog » a-guide-to-openshift-and-uids](https://cloud.redhat.com/blog/a-guide-to-openshift-and-uids)\n- [developers.redhat.com » blog » adapting-docker-and-kubernetes-containers-to-run-on-red-hat-openshift-container-platform](https://developers.redhat.com/blog/2020/10/26/adapting-docker-and-kubernetes-containers-to-run-on-red-hat-openshift-container-platform)\n- [docs.openshift.com » images-create-guide-openshift_create-images](https://docs.openshift.com/container-platform/4.5/openshift_images/create-images.html#images-create-guide-openshift_create-images)\n- [developers.redhat.co » OpenShift and the Developer Sandbox](https://developers.redhat.com/learning/learn:openshift:foundations-openshift/resource/resources:openshift-and-developer-sandbox)\n- [developers.redhat.co » Overview of the web console](https://developers.redhat.com/learning/learn:openshift:foundations-openshift/resource/resources:overview-web-console)\n- [developers.redhat.co » developer-sandbox » activities](https://developers.redhat.com/developer-sandbox/activities)\n- [console.redhat.com » Console URL](https://console.redhat.com/openshift)\n- [developers.redhat.com » Learn Kubernetes using the Developer Sandbox for Red Hat OpenShift](https://developers.redhat.com/developer-sandbox/activities/learn-kubernetes-using-red-hat-developer-sandbox-openshift)\n\nNOTES:\n\n- Editing a replicaset, don't forget to delete the pods so that the new ones get crated with the new changes.\n\n## Frequently used links\n\n- [https://kubectl.docs.kubernetes.io » kubectl](https://kubectl.docs.kubernetes.io/references/kubectl)\n- [kubectl.docs.kubernetes.io » Kustomize](https://kubectl.docs.kubernetes.io/references/kustomize)\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_092_kubectl/ReadMe-table.md",
    "content": "# kubectl\n\nHere's the properly formatted table:\n\n| Command / Options                                                                            | Use Case                                                                                                                                                                                                                                                                                                                                  | Example                                                                                                                                                                |\n|----------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| [apply](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#apply)       |                                                                                                                                                                                                                                                                                                                                           |                                                                                                                                                                        |\n| -f                                                                                           | Apply resources.yaml                                                                                                                                                                                                                                                                                                                      | kubectl apply -f resources.yaml                                                                                                                                        |\n| [config](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#config)     |                                                                                                                                                                                                                                                                                                                                           |                                                                                                                                                                        |\n|                                                                                              | Display the current context                                                                                                                                                                                                                                                                                                               | kubectl config current-context                                                                                                                                         |\n| --raw <br> -o json                                                                           | Display merged kubeconfig settings                                                                                                                                                                                                                                                                                                        | kubectl config view --raw -o json                                                                                                                                      |\n| --client-key=$PWD/dave.key <br> --embed-certs=true                                           | To set a user 'dave' entry in kubeconfig                                                                                                                                                                                                                                                                                                  | kubectl config set-credentials dave --client-key=$PWD/dave.key --embed-certs=true                                                                                      |\n| [cordon](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#cordon)     |                                                                                                                                                                                                                                                                                                                                           |                                                                                                                                                                        |\n|                                                                                              | Mark node as unschedulable                                                                                                                                                                                                                                                                                                                | kubectl cordon node-01                                                                                                                                                 |\n| [create](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#create)     |                                                                                                                                                                                                                                                                                                                                           |                                                                                                                                                                        |\n|                                                                                              | Create a namespace dev-ns                                                                                                                                                                                                                                                                                                                 | kubectl create namespace dev-ns                                                                                                                                        |\n| --dry-run=client <br> --replicas=4                                                           | Crete Deployment YAML file (-o yaml). <br> Don't create it (--dry-run) <br> Ensure 4 Replicas (--replicas=4)                                                                                                                                                                                                                              | kubectl create deployment --image=nginx nginx --dry-run=client --replicas=4 -o yaml > nginx-deployment.yaml                                                            |\n| -f                                                                                           | Create a pod using the data in pod.json.                                                                                                                                                                                                                                                                                                  | kubectl create -f ./pod.json                                                                                                                                           |\n| --from-file=app_config.properties                                                            | Create a configmap based on a file                                                                                                                                                                                                                                                                                                        | kubectl create configmap app-config --from-file=app_config.properties                                                                                                  |\n| --from-literal=APP_NAME=test-app                                                             | Create a configmap based on a specified literal value                                                                                                                                                                                                                                                                                     | kubectl create configmap app-config --from-literal=APP_NAME=test-app --from-literal=APP_ENV=dev                                                                        |\n| --image=nginx                                                                                | Create a deployment using nginx image                                                                                                                                                                                                                                                                                                     | kubectl create deployment --image=nginx nginx                                                                                                                          |\n| --tcp=5678:8080                                                                              | Create a new ClusterIP service named my-cs                                                                                                                                                                                                                                                                                                | kubectl create service clusterip my-cs --tcp=5678:8080                                                                                                                 |\n| --tcp=80:80 <br> --node-port=30080                                                           | Create a Service named nginx of type NodePort to expose pod nginx's port 80 on port 30080 on the nodes <br> This will automatically use the pod's labels as selectors, but you cannot specify the node port <br> You have to generate a definition file and then add the node port in manually before creating the service with the pod   | kubectl create service nodeport nginx --tcp=80:80 --node-port=30080 --dry-run=client -o yaml                                                                           |\n| -o yaml <br> --dry-run                                                                       | Generate Deployment YAML file (-o yaml). <br> Don't create it (--dry-run)                                                                                                                                                                                                                                                                 | kubectl create deployment --image=nginx nginx --dry-run=client -o yaml                                                                                                 |\n| [delete](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#delete)     |                                                                                                                                                                                                                                                                                                                                           |                                                                                                                                                                        |\n|                                                                                              | Delete deployment with name 'www' from default namespace                                                                                                                                                                                                                                                                                  | kubectl delete deployment www                                                                                                                                          |\n| -f                                                                                           | Delete a pod using the type and name specified in pod.json                                                                                                                                                                                                                                                                                | kubectl delete -f ./pod.json                                                                                                                                           |\n| --force <br> --grace-period=0                                                                | To immediately remove resources from API and bypass graceful deletion.                                                                                                                                                                                                                                                                    |                                                                                                                                                                        |\n| kubectl delete pod <PODNAME> --grace-period=0 --force --namespace <NAMESPACE>                |                                                                                                                                                                                                                                                                                                                                           |                                                                                                                                                                        |\n| --namespace                                                                                  | Delete pod web-pack in namespace frontend                                                                                                                                                                                                                                                                                                 | kubectl delete pod web-pack --namespace frontend                                                                                                                       |\n| [describe](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#describe) |                                                                                                                                                                                                                                                                                                                                           |                                                                                                                                                                        |\n| -n ingress                                                                                   | Describe a pod with name 'traefik-nb8p2' in ingress namespace                                                                                                                                                                                                                                                                             | kubectl describe pod traefik-nb8p2 -n ingress                                                                                                                          |\n|                                                                                              | To get the Taints on master node                                                                                                                                                                                                                                                                                                          | kubectl describe nodes master &#124; grep -i taints                                                                                                                    |\n| [drain](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#drain)       |                                                                                                                                                                                                                                                                                                                                           |                                                                                                                                                                        |\n|                                                                                              | Drain node in preparation for maintenance                                                                                                                                                                                                                                                                                                 | kubectl drain node-01                                                                                                                                                  |\n| [edit](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#edit)         |                                                                                                                                                                                                                                                                                                                                           |                                                                                                                                                                        |\n|                                                                                              | To change the image of nginx deployment to 1.9.0                                                                                                                                                                                                                                                                                          | kubectl create deployment my-dep --image=nginx <br> kubectl edit deployment my-dep <br> kubectl describe deployment my-dep &#124; grep -i image                        |\n| [exec](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#exec)         |                                                                                                                                                                                                                                                                                                                                           |                                                                                                                                                                        |\n| --prefix <br> -keys-only                                                                     | To list all the keys stored by kubernetes                                                                                                                                                                                                                                                                                                 | kubectl exec etcd-master -n kube-system etcdctl get --prefix -keys-only                                                                                                |\n| [explain](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#explain)   |                                                                                                                                                                                                                                                                                                                                           |                                                                                                                                                                        |\n| --recursive                                                                                  | Print the fields of fields                                                                                                                                                                                                                                                                                                                | kubectl explain pod --recursive &#124; less                                                                                                                            |\n| [expose](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#expose)     |                                                                                                                                                                                                                                                                                                                                           |                                                                                                                                                                        |\n| --port=6379 <br> --name redis-service <br> --dry-run=client <br> -o yaml                     | Create a Service named redis-service of type ClusterIP to expose pod redis on port 6379 using dry-run mode                                                                                                                                                                                                                                | kubectl expose pod redis --port=6379 --name redis-service --dry-run=client -o yaml                                                                                     |\n| --port=80 <br> --target-port=8000                                                            | Create a service for an nginx deployment, which serves on port 80 and connects to the containers on port 8000.                                                                                                                                                                                                                            | kubectl expose deployment nginx --port=80 --target-port=8000                                                                                                           |\n| --port=80 <br> --name nginx-service <br> --type=NodePort <br> --dry-run=client <br> -o yaml  | Create a Service named nginx of type NodePort to expose pod nginx's port 80 on port 30080 on the nodes. <br> This will automatically use the pod's labels as selectors, but you cannot specify the node port. <br> You have to generate a definition file and then add the node port in manually before creating the service with the pod | kubectl expose pod nginx --port=80 --name nginx-service --type=NodePort --dry-run=client -o yaml                                                                       |\n| [get](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#get)           |                                                                                                                                                                                                                                                                                                                                           |                                                                                                                                                                        |\n| events                                                                                       | Events such as the ones you saw at the end of kubectl describe pod are persisted in etcd <br> To list all events you can use                                                                                                                                                                                                              | kubectl get events                                                                                                                                                     |\n| --help                                                                                       | To get help!                                                                                                                                                                                                                                                                                                                              | kubectl get --help                                                                                                                                                     |\n|                                                                                              | To find option which we need for all namespaces                                                                                                                                                                                                                                                                                           | kubectl get --help &#124; grep namespaces                                                                                                                              |\n|                                                                                              | To find what is the argument                                                                                                                                                                                                                                                                                                              |                                                                                                                                                                        |\n| for no-headers in kubernetes commands                                                        | kubectl get --help &#124; grep -i header                                                                                                                                                                                                                                                                                                  |                                                                                                                                                                        |\n| namespaces                                                                                   | To get all the namespace resources                                                                                                                                                                                                                                                                                                        | kubectl get namespace                                                                                                                                                  |\n| --no-headers                                                                                 | To get all the pods in given namespace and do not give header columns                                                                                                                                                                                                                                                                     | kubectl get pods -n kube-system --no-headers                                                                                                                           |\n| nodes                                                                                        | To get all the nodes in the kubernetes cluster                                                                                                                                                                                                                                                                                            | kubectl get nodes                                                                                                                                                      |\n| --show-labels                                                                                | To show the labels present on the nodes                                                                                                                                                                                                                                                                                                   | kubectl get nodes --show-labels                                                                                                                                        |\n| -n ingress                                                                                   | To get all the pod resources in namespace ingress                                                                                                                                                                                                                                                                                         | kubectl get pod -n ingress                                                                                                                                             |\n| -n ingress <br> -o yaml                                                                      | To output all the pods in namespace ingress in yaml format                                                                                                                                                                                                                                                                                | kubectl get pod -n ingress -o yaml                                                                                                                                     |\n|                                                                                              | To output single pod with name 'traefik-nb8p2' in namespace ingress in yaml format                                                                                                                                                                                                                                                        | kubectl get pod traefik-nb8p2 -n ingress -o yaml                                                                                                                       |\n| --all-namespaces                                                                             | To view all the pods from all namespaces                                                                                                                                                                                                                                                                                                  | kubectl get pods --all-namespaces                                                                                                                                      |\n| -n kube-system                                                                               | To view the pods in kube-system namespace                                                                                                                                                                                                                                                                                                 | kubectl get pods -n kube-system                                                                                                                                        |\n| -o wide                                                                                      | To check which pod is present in which particular node                                                                                                                                                                                                                                                                                    | kubectl get pods -o wide                                                                                                                                               |\n| --selector <br> -l                                                                           | Prints a table of the most important information about the specified resources. <br> You can filter the list using a label selector and the --selector flag                                                                                                                                                                               | kubectl get pods --selector app=App1 <br> OR <br> kubectl get pod -l env=prod,bu=finance,tier=frontend                                                                 |\n| --show-labels                                                                                | To list the existing pods and also show the labels in default namespace                                                                                                                                                                                                                                                                   | kubectl get pods --show-labels                                                                                                                                         |\n| [label](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#label)       |                                                                                                                                                                                                                                                                                                                                           |                                                                                                                                                                        |\n|                                                                                              | Update the label on node node-1 with key 'size' and value 'Large'                                                                                                                                                                                                                                                                         | kubectl label nodes node-1 size=Large                                                                                                                                  |\n| [logs](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#logs)         |                                                                                                                                                                                                                                                                                                                                           |                                                                                                                                                                        |\n| since                                                                                        | To get the output of logs of a given resource like 'pod' since last one hour                                                                                                                                                                                                                                                              | KUBECONFIG=$HOME/kubernetes/kubeconfig kubectl logs --since=1h module-5c8986fb69-8jvwx -n backend                                                                      |\n| -f                                                                                           | Begin streaming the logs of the ruby container in pod web-1                                                                                                                                                                                                                                                                               | kubectl logs -f -c ruby web-1                                                                                                                                          |\n| --all-containers=true                                                                        | Begin streaming the logs from all containers in pods defined by label app=nginx                                                                                                                                                                                                                                                           | kubectl logs -f -l app=nginx --all-containers=true                                                                                                                     |\n|                                                                                              | Begin stream logs of simple-webapp container in pod webapp-2 having multiple containers                                                                                                                                                                                                                                                   | kubectl logs -f webapp-2 simple-webapp                                                                                                                                 |\n| [replace](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#replace)   |                                                                                                                                                                                                                                                                                                                                           |                                                                                                                                                                        |\n|                                                                                              | Replace a pod using the data in pod.json.                                                                                                                                                                                                                                                                                                 | kubectl replace -f ./pod.json                                                                                                                                          |\n| [rollout](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#rollout)   |                                                                                                                                                                                                                                                                                                                                           |                                                                                                                                                                        |\n| history                                                                                      | View previous rollout revisions and configurations.<br> In following case we are checking the rollout history of deployment.                                                                                                                                                                                                              | kubectl rollout history deployment/myapp-deployment                                                                                                                    |\n| status                                                                                       | Show the status of the rollout.                                                                                                                                                                                                                                                                                                           | kubectl rollout status deployment/myapp-deployment                                                                                                                     |\n| undo                                                                                         | Rollback to a previous rollout. In the following                                                                                                                                                                                                                                                                                          |                                                                                                                                                                        |\n| case roll back to previous deployment                                                        | kubectl rollout undo deployment/myapp-deployment                                                                                                                                                                                                                                                                                          |                                                                                                                                                                        |\n| [run](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#run)           |                                                                                                                                                                                                                                                                                                                                           |                                                                                                                                                                        |\n| --dry-run                                                                                    | To NOT create nginx pod, only generate yaml                                                                                                                                                                                                                                                                                               | kubectl run nginx --image=nginx --dry-run=client -o yaml                                                                                                               |\n| --image                                                                                      | To create NGINX pod                                                                                                                                                                                                                                                                                                                       | kubectl run nginx --image=nginx                                                                                                                                        |\n|                                                                                              | To create a pod with image redis and name redis in namespace kube-system                                                                                                                                                                                                                                                                  | kubectl run redis --image=redis --dry-run=client -n kube-system -o yaml > pod.yaml ; kubectl apply -f . <br> OR <br> kubectl run redis --image=redis -n kube-system    |\n| -o yaml                                                                                      | To create nginx pod and generate the yaml                                                                                                                                                                                                                                                                                                 | kubectl run nginx --image=nginx -o yaml                                                                                                                                |\n| -p                                                                                           | Create a new pod called custom-nginx using the nginx image and expose it on container port 8080                                                                                                                                                                                                                                           | kubectl run custom-nginx --image=nginx --port=5701                                                                                                                     |\n| --tty                                                                                        | To start and login into a busybox container in pod spun up on the fly                                                                                                                                                                                                                                                                     | kubectl run -i --tty busybox --image=busybox --restart=Never -- sh                                                                                                     |\n| [scale](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#scale)       |                                                                                                                                                                                                                                                                                                                                           |                                                                                                                                                                        |\n| --replicas=3                                                                                 | To scale a deployment named httpd-frontend to 3 replicas                                                                                                                                                                                                                                                                                  | kubectl scale deployment httpd-frontend --replicas=3                                                                                                                   |\n| [set](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#set)           |                                                                                                                                                                                                                                                                                                                                           |                                                                                                                                                                        |\n|                                                                                              | Set a deployment's nginx container image to nginx:1.9.1                                                                                                                                                                                                                                                                                   | kubectl create deployment my-dep --image=nginx <br> kubectl set image deployment my-dep nginx=nginx:1.9.1 <br> kubectl describe deployment my-dep &#124; grep -i image |\n| [taint](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#taint)       |                                                                                                                                                                                                                                                                                                                                           |                                                                                                                                                                        |\n|                                                                                              | Update node 'node1' with a taint with key 'app' and value 'blue' and effect 'NoSchedule'.                                                                                                                                                                                                                                                 | kubectl taint nodes node1 app=blue:NoSchedule                                                                                                                          |\n|                                                                                              | Remove from node 'foo' the taint with key 'dedicated' and effect 'NoSchedule' if one exists. <br> Put a - at the end of Taint (which you can get using  kubectl describe node master &#124; grep -i taint                                                                                                                                 | kubectl taint nodes foo dedicated:NoSchedule-                                                                                                                          |\n| [uncordon](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#uncordon) |                                                                                                                                                                                                                                                                                                                                           |                                                                                                                                                                        |\n|                                                                                              | Mark node as schedulable.                                                                                                                                                                                                                                                                                                                 | kubectl uncordon node-01                                                                                                                                               |\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_092_kubectl/ReadMe.md",
    "content": "# kubectl\n\n## Examples\n\n- To get all resource types from all namespaces\n\n```bash\nkubectl get all --all-namespaces\nkubectl  get ep\n```\n\n- The `cluster-info` outputs a lot of JSON formatted cluster information. The grep -m 1 cluster-cidr part of the command filters the \n  output and returns the first line that contains the string cluster-cidr. This should be the network range used for the IP addresses \n  within the Kubernetes cluster\n\n```bash\n$ kubectl cluster-info dump | grep -m 1 cluster-cidr\n                                    \"kube-proxy --cluster-cidr=10.108.0.0/14 ......\"\n$ kubectl cluster-info dump | grep -m 1 \"podCIDR\"            \n                \"podCIDR\": \"10.108.1.0/24\",\n\n# You can also get podCIDR using\n$ kubectl get nodes -o jsonpath='{.items[*].spec.podCIDR}'   # Will give podCIDR for every node\n.\n# Get service-cluster-ip-range\n$ kubectl cluster-info dump | grep -m 1 service-cluster-ip-range\n.\n```\n\n- This command is used to test DNS resolution within a Kubernetes cluster. \n  This command runs a pod in Kubernetes using the busybox image, and executes the nslookup command for kubernetes.default in that pod. \n  nslookup is a tool for querying the Domain Name System (DNS) to obtain domain name or IP address mapping or other DNS records.\n\n```bash\n$ kubectl run busybox --rm --image=busybox:1.28 --restart=Never -it -- nslookup kubernetes.default\nServer:    10.112.0.10\nAddress 1: 10.112.0.10 kube-dns.kube-system.svc.cluster.local\n\nName:      kubernetes.default\nAddress 1: 10.112.0.1 kubernetes.default.svc.cluster.local\npod \"busybox\" deleted\n```\n\n- Start ubuntu container from custom nexus proxy which does not need password to pull image\n\n```bash\n$ kubectl run ubuntu --image=<IP_OF_NEXUS>:<EXPOSED_PORT>/ubuntu:latest --restart=Always -it -- bash\n.\n```\n\n- To get all the available contexts\n\n```bash\n$ kubectl config get-contexts\n.\n```\n\n- To rename the current set context\n\n```bash\n$ kubectl config rename-context <current-context-name> <new-name-of-the-context>\n.\n```\n\n- To create kubernetes secret from env_file\n\n```bash\nkubectl create secret generic <name_of_secret> \\\n--from-env-file=secret.properties \\\n--dry-run=client -o yaml -n <namespace>\n\n## Secret.properties file\nENV1=valueone\nENV2=data source=something, user=something; options=something\n```\n\n- To copy file from pod to local [stackoverflow](https://stackoverflow.com/questions/67624630/unable-to-copy-data-from-pod-to-local-using-kubectl-cp-command)\n\n```bash\n# kubectl cp <namespace>/<pod-name>:<path-in-pod> <local-path>\n$ kubectl cp --retries=-1 mynamespace/mypod:/etc/config/config.txt ~/mylocaldir/\n```\n\n\n## json path\n\n[kubectl/jsonpath/](https://kubernetes.io/docs/reference/kubectl/jsonpath/)\n\n- Suppose we deploy sample nginx pod\n\n```bash\n$ kubectl get pods        \nNAME    READY   STATUS    RESTARTS   AGE\nnginx   1/1     Running   0          11m\n```\n\n- Get the full json object\n\n```bash\n$ kubectl get pods -o json\n.\n```\n\n- Get the type of object\n\n```bash\n$ kubectl get pods -o=jsonpath='{$.kind}'\nList\n```\n\n- Get the name of the pod\n\n```bash\n$ kubectl get pods -o=jsonpath='{.items[0].metadata.name}'\nnginx\n```\n\n- Get the nodeName\n\n```bash\n$ kubectl get pods -o=jsonpath='{.items[0].spec.nodeName}'\ndocker-desktop\n```\n\n- Get the container details \n\n```bash\n$ kubectl get pods -o=jsonpath='{.items[0].spec.containers}'\n[{\"image\":\"nginx\",\"imagePullPolicy\":\"Always\",\"name\":\"nginx\",\"resources\":{},\"terminationMessagePath\":\"/dev/termination-log\",\"terminationMessagePolicy\":\"File\",\"volumeMounts\":[{\"mountPath\":\"/var/run/secrets/kubernetes.io/serviceaccount\",\"name\":\"default-token-qg6zs\",\"readOnly\":true}]}]\n```\n\n- Get the deployed image name\n\n```bash\n$ kubectl get pods -o=jsonpath='{.items[0].spec.containers[0].image}'\nnginx\n```\n\n- Get the pod IPs in pretty format\n\n```bash\n$ kubectl get pods -o=jsonpath='{.items[0].status.podIPs}' | jq\n[\n  {\n    \"ip\": \"10.1.5.59\"\n  }\n]\n```\n\n- Get the phase of the pod\n\n```bash\n$ kubectl get pods -o=jsonpath='{.items[0].status.phase}'\nRunning\n```\n\n- Get the restart count of the first container\n\n```bash\n$ kubectl get pods -o=jsonpath='{.items[0].status.containerStatuses}' | jq\n\n[\n  {\n    \"containerID\": \"docker://55704ca318bc577589652a8851deac7fafa0b99b1d10a4527777bf816d5c5041\",\n    \"image\": \"nginx:latest\",\n    \"imageID\": \"docker-pullable://nginx@sha256:f3693fe50d5b1df1ecd315d54813a77afd56b0245a404055a946574deb6b34fc\",\n    \"lastState\": {},\n    \"name\": \"nginx\",\n    \"ready\": true,\n    \"restartCount\": 0,\n    \"started\": true,\n    \"state\": {\n      \"running\": {\n        \"startedAt\": \"2021-03-03T12:44:39Z\"\n      }\n    }\n  }\n]\n\n$ kubectl get pods -o=jsonpath='{.items[0].status.containerStatuses[0].restartCount}' | jq\n0\n```\n\n- To get the list of pv's sorted by capacity storage\n\n```bash\ncontrolplane $ kubectl get pv --sort-by='{.spec.capacity.storage}'\nNAME       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE\npv-log-4   40Mi       RWX            Retain           Available                                   5m39s\npv-log-1   100Mi      RWX            Retain           Available                                   5m39s\npv-log-2   200Mi      RWX            Retain           Available                                   5m39s\npv-log-3   300Mi      RWX            Retain           Available                                   5m39s\n```"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_093_kustomize/ReadMe.md",
    "content": "# kustomize\n\n- [docs](https://kustomize.io/)\n\n## Examples\n\n```bash\n$ kustomize build base/ingress-nginx -o build/ingress_nginx_ext_all.yaml\n.\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_094_helm/ReadMe.md",
    "content": "# helm\n\n- [helm](https://helm.sh/docs/helm/)\n\n## Examples\n\n- To add a new Helm chart repository to your Helm installation. A Helm chart repository is a location where packaged charts can be stored and shared\n\n```bash\n$ helm repo add bitnami https://charts.bitnami.com/bitnami\n.\n```\n\n- To update your local Helm chart repository cache after you add a new Helm chart repository to your Helm installation\n\n```bash\n$ helm repo update\n.\n```\n\n- The `helm pull` command is used to download a Helm chart from a repository to your local machine.\n\n```bash\n$ helm pull bitnami/postgresql                    \n$ ls\npostgresql-12.6.0.tgz\n$ tar -xvf postgresql-12.6.0.tgz\n$ ls\npostgresql            postgresql-12.6.0.tgz\n$ rm -rf postgresql-12.6.0.tgz\n```\n\n- The `helm template` command is used to render the template files locally to a file or stdout. It is useful for testing the template rendering and syntax.\n\n```bash\n# After helm pull bitnami/postgresql as done above\n# - Download this file [keycloak-db-values.yaml](https://github.com/codecentric/helm-charts/blob/master/charts/keycloakx/examples/postgresql/keycloak-db-values.yaml) to keycloak-db-values.yaml file\n\n$ cat keycloak-db-values.yaml\n# See https://github.com/bitnami/charts/tree/master/bitnami/postgresql\n# See https://github.com/codecentric/helm-charts/blob/master/charts/keycloakx/examples/postgresql/keycloak-db-values.yaml\nglobal:\n  postgresql:\n    auth:\n      username: dbusername\n      password: dbpassword\n      database: keycloak\n\n# # https://github.com/codecentric/helm-charts/tree/master/charts/keycloakx/examples/postgresql\n$ tree -L 3                     \n.\n├── keycloak-db-values.yaml\n└── postgresql\n    ├── Chart.lock\n    ├── Chart.yaml\n    ├── README.md\n    ├── charts\n    │   └── common\n    ├── templates\n    │   ├── NOTES.txt\n    │   ├── _helpers.tpl\n    │   ├── extra-list.yaml\n    │   ├── networkpolicy-egress.yaml\n    │   ├── primary\n    │   ├── prometheusrule.yaml\n    │   ├── psp.yaml\n    │   ├── read\n    │   ├── role.yaml\n    │   ├── rolebinding.yaml\n    │   ├── secrets.yaml\n    │   ├── serviceaccount.yaml\n    │   └── tls-secrets.yaml\n    ├── values.schema.json\n    └── values.yaml\n\n$ helm template keycloak-db postgresql \\\n--namespace keycloak \\\n--create-namespace \\\n--values ./keycloak-db-values.yaml \\\n> keycloak-db-manifest-vendor.yaml\n```\n\n- To list all the Helm releases\n\n```bash\n$ helm list --all-namespaces\nNAME            NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                   APP VERSION\nkeycloak-db     keycloak        1               2023-06-30 19:03:37.623113 +0530 IST    deployed        postgresql-12.6.0       15.3.0\n```\n\n- To uninstall a Helm release\n\n```bash\n$ helm uninstall keycloak-db --namespace keycloak\n.\n```\n\n- To list all releases from all namespaces regardless of their status [stackoverflow](https://stackoverflow.com/questions/71599858/upgrade-failed-another-operation-install-upgrade-rollback-is-in-progress)\n\n```bash\n$ helm ls -aA\nNAME            NAMESPACE       REVISION        UPDATED                                 STATUS          CHART           APP VERSION\nkeycloak        keycloak        1               2023-07-01 21:23:21.136805 +0530 IST    pending-install keycloakx-2.2.1 20.0.3   \n```\n\n- The following command searches for Helm charts with the keyword \"cilium\" in Helm repositories and displays the results in a detailed list format.\n\n```bash\n$ helm search repo -l cilium\nNAME            CHART VERSION   APP VERSION     DESCRIPTION                                       \ncilium/cilium   1.14.0          1.14.0          eBPF-based Networking, Security, and Observability\ncilium/cilium   1.13.5          1.13.5          eBPF-based Networking, Security, and Observability\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_095_7z/ReadMe.md",
    "content": "# 7z\n\n- [7z](https://manpages.ubuntu.com/manpages/focal/en/man1/7z.1.html)\n\n## NAME\n\n7z - A file archiver with high compression ratio format\n\n## EXAMPLES\n\n- To create an encrypted archive with 7z, use the following command:\n\n```bash\n$ 7za a -t7z -mhe=on -p'yourpasswordforencryption' encryptedArchive.7z  directoryToArchiveAndEncrypt\n.\n```\n\n- To uncompress an encrypted archive with 7z, use the following command:\n\n```bash\n$ 7za e encryptedArchive.7z  \n.\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_096_grep/ReadMe.md",
    "content": "# grep\n\n- [grep](#grep)\n  - [NAME](#name)\n  - [EXAMPLES](#examples)\n    - [To search for a pattern in a file](#to-search-for-a-pattern-in-a-file)\n    - [To get user home directory | -i](#to-get-user-home-directory---i)\n\n## NAME\n\ngrep - print lines that match patterns\n\n## EXAMPLES\n\n### To search for a pattern in a file\n\n- The following command is used to search for lines in the firewalld.conf file that start with \"LogDenied\"\n\n```bash\ngrep '^LogDenied' /etc/firewalld/firewalld.conf\n```\n\nOutput\n\n```bash\nLogDenied=off\n```\n\n### To get user home directory | -i\n\n```bash\ngrep -i ubuntu /etc/passwd\n```\n\nOutput\n\n```bash\nubuntu:x:1000:1000:Ubuntu:/home/ubuntu:/bin/bash\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_097_egrep/ReadMe.md",
    "content": "# egrep\n\n- [egrep](https://man.freebsd.org/cgi/man.cgi)\n\n## NAME\n\nfile pattern searcher\n\n## Examples\n\nTo change all occurrences of 'AdminServer' with 'prdAdminServer'\n\n```bash\n$ egrep -rl \"AdminServer\" *| xargs sed -i 's/AdminServer/prdAdminServer/g' \n  \n$ egrep -r \"AdminServer\" * \nbin/setDomainEnv.sh:    SERVER_NAME=\"AdminServer\"  \n \n$ egrep -rl \"AdminServer\" bin/setDomainEnv.sh | xargs sed -i 's/AdminServer/prdAdminServer/g' \n \n$ egrep -r \"AdminServer\" bin/setDomainEnv.sh \n        SERVER_NAME=\"prdAdminServer\" \n```\n\nTo print all files containing keyword 'ns-exports-interfaces' except .svn, starting with Binary or Starting with ./out1.txt\"\n\n```bash\n$ egrep \"ns-exports-interfaces*\" `find . -type f -print` | egrep -v \".svn|^Binary file|^./out1.txt\"\n.\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_098_growpart/ReadMe.md",
    "content": "# growpart\n\n- [growpart](https://manpages.ubuntu.com/manpages/xenial/en/man1/growpart.1.html)\n\n## Name\n\ngrowpart -- grow a partition\n\n## Examples\n\n```bash\n# Display all block devices in a tree-like format.\nroot@host:/# lsblk\n# Output: The disk is 20G, but the partition is only 8G.\nNAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT\nnvme0n1     259:0    0   20G  0 disk\n└─nvme0n1p1 259:1    0    8G  0 part /\n\n# Run the 'growpart' command to extend the partition. '/dev/nvme0n1' is the disk, '1' is the partition number.\nroot@host:/# sudo growpart /dev/nvme0n1 1 \n# Output: This shows that the partition has been resized.\nCHANGED: partition=1 start=2048 old: size=16775135 end=16777183 new: size=41940959 end=41943007\n\n# Display disk usage. The '-h' flag makes the output human-readable, and '.' represents the current directory.\nroot@host:/# df -kh .\n# Output: Despite the partition having been resized, the filesystem still shows as 7.7G.\nFilesystem      Size  Used Avail Use% Mounted on\n/dev/root       7.7G  7.7G   44M 100% /\n\n# The 'resize2fs' command is used to resize the ext2, ext3, or ext4 file system.\nroot@host:/# resize2fs /dev/root\n# Output: The filesystem has been resized successfully.\nresize2fs 1.45.5 (07-Jan-2020)\nFilesystem at /dev/root is mounted on /; on-line resizing required\nold_desc_blocks = 1, new_desc_blocks = 3\nThe filesystem on /dev/root is now 5242619 (4k) blocks long.\n\n# Check the disk space again. Now, it should reflect the changes we made above.\nroot@host:/# df -kh .\n# Output: The filesystem now shows as 20G, reflecting the additional disk space.\nFilesystem      Size  Used Avail Use% Mounted on\n/dev/root        20G  7.7G   12G  40% /\n```\n\n> why resize2fs was required when we used grwopart already?\n\nThe `growpart` and `resize2fs` commands have different functions, both of which are necessary when you want to increase the size of a disk that's already in use:\n\n- `growpart`: This command expands the partition on a disk. A partition is a way of organizing a disk into separate areas, each of which can be managed separately. When you run `growpart`, you're telling your system that it's okay to use more of the physical disk space for a specific partition. However, this doesn't automatically change the size of the filesystem that resides on that partition.\n\n- `resize2fs`: This command resizes the filesystem. A filesystem is a way of organizing files on a disk partition. It creates a structure for files and directories and manages how data is stored and retrieved. After you've expanded the partition with `growpart`, you need to use `resize2fs` to tell your system that it can use the extra space for storing files. In other words, while `growpart` increases the size of the 'container', `resize2fs` increases the size of the 'contents' that fits inside the 'container'.\n\nSo in order to fully utilize the extra disk space, you need to first expand the partition (with `growpart`), and then expand the filesystem (with `resize2fs`).\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_099_resize2fs/ReadMe.md",
    "content": "# resize2fs\n\n- [resize2fs](https://TBD/man/8/resize2fs)\n\n## NAME\n\nresize2fs - ext2/ext3/ext4 file system resizer\n\n## EXAMPLES\n\n```bash\n# Display all block devices in a tree-like format.\nroot@host:/# lsblk\n# Output: The disk is 20G, but the partition is only 8G.\nNAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT\nnvme0n1     259:0    0   20G  0 disk\n└─nvme0n1p1 259:1    0    8G  0 part /\n\n# Run the 'growpart' command to extend the partition. '/dev/nvme0n1' is the disk, '1' is the partition number.\nroot@host:/# sudo growpart /dev/nvme0n1 1 \n# Output: This shows that the partition has been resized.\nCHANGED: partition=1 start=2048 old: size=16775135 end=16777183 new: size=41940959 end=41943007\n\n# Display disk usage. The '-h' flag makes the output human-readable, and '.' represents the current directory.\nroot@host:/# df -kh .\n# Output: Despite the partition having been resized, the filesystem still shows as 7.7G.\nFilesystem      Size  Used Avail Use% Mounted on\n/dev/root       7.7G  7.7G   44M 100% /\n\n# The 'resize2fs' command is used to resize the ext2, ext3, or ext4 file system.\nroot@host:/# resize2fs /dev/root\n# Output: The filesystem has been resized successfully.\nresize2fs 1.45.5 (07-Jan-2020)\nFilesystem at /dev/root is mounted on /; on-line resizing required\nold_desc_blocks = 1, new_desc_blocks = 3\nThe filesystem on /dev/root is now 5242619 (4k) blocks long.\n\n# Check the disk space again. Now, it should reflect the changes we made above.\nroot@host:/# df -kh .\n# Output: The filesystem now shows as 20G, reflecting the additional disk space.\nFilesystem      Size  Used Avail Use% Mounted on\n/dev/root        20G  7.7G   12G  40% /\n\n```"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_100_lsblk/ReadMe.md",
    "content": "# lsblk\n\n- [lsblk](https://man7.org/linux/man-pages/man8/lsblk.8.html)\n\n## NAME\n\nlsblk - list block devices\n\n## EXAMPLES\n\nTo get the disknames and mountpoints\n\n```bash\nroot@ip-172-23-45-36:/# lsblk\nNAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT\nnvme0n1     259:0    0   20G  0 disk\n└─nvme0n1p1 259:1    0    8G  0 part /\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_101_kops/ReadMe.md",
    "content": "# kops\n\n- [kops](https://kops.sigs.k8s.io/getting_started/commands)\n\n## EXAMPLES\n\n```bash\n# validating cluster without setting environment variables\nexport KUBECONFIG=~/workspace/kops/_kube/dev/kubeconfig\nAWS_ACCESS_KEY_ID=<aws_access_key> AWS_SECRET_ACCESS_KEY=<aws_secret_key> kops validate cluster --wait 10m --state=\"s3://my-kops-bucket-v1\" --name=k8.mydomain.com\n\n\n# creating cluster\nbucket_name=devops-test-company\nexport AWS_SECRET_KEY=<aws_secret_key>\nexport AWS_ACCESS_KEY=<aws_access_key>\naws s3api create-bucket --bucket ${bucket_name} --region us-east-1\naws s3api put-bucket-versioning --bucket ${bucket_name} --versioning-configuration Status=Enabled\nexport KOPS_CLUSTER_NAME=k8.mydomain.com\nexport KOPS_STATE_STORE=s3://${bucket_name}\nkops create cluster --node-count=1 --node-size=t3.medium --master-count=1 --master-size=t3.medium --zones=us-east-1a --name=${KOPS_CLUSTER_NAME} --yes\nkops validate cluster --wait 10m\n\n# updating instance size\nkops get instancegroups\n\n# edit the size of instance group and save the file\nkops edit ig nodes-us-east-1a\nkops get instancegroups\nkops update cluster --name=${KOPS_CLUSTER_NAME}\nkops update cluster --name=${KOPS_CLUSTER_NAME} --yes\nkops rolling-update cluster --name=${KOPS_CLUSTER_NAME}\nkops rolling-update cluster --name=${KOPS_CLUSTER_NAME} --yes\nkops get instancegroups\n\n# updating the number of instances\nkops edit ig nodes-us-east-1a\n\n# edit the minSize and maxSize\nkops get instancegroups      \nkops update cluster --name=${KOPS_CLUSTER_NAME}\nkops update cluster --name=${KOPS_CLUSTER_NAME} --yes\n```"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_102_mongo/ReadMe.md",
    "content": "# mongo\n\n- [mongo](https://www.mongodb.com/docs/v4.4/mongo)\n\n## EXAMPLES\n\n```bash\n$ mongo -u username -p password mongodb-host.company.com:27017/admin\n.\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_103_mongorestore/ReadMe.md",
    "content": "# mongorestore\n\n- [mongorestore](https://www.mongodb.com/docs/database-tools/mongorestore/)\n\n## EXAMPLES\n\nRestoring the mongodump back into mongodb database\n\n- `standalone-complete-host-1616062771.gzip` includes the complete backup including all the databases.\n\n- `--nsInclude` include only these databases.\n\n- `--drop` drop the existing collections if exist\n\n- Ensuring we are \n```bash\n$ uri_complete=mongodb://username:password@mongodbhost.company.com:27017/admin:27017/admin\n\n$ mongorestore --uri=$uri_complete -v --gzip --archive=standalone-complete-host-1616062771.gzip --nsInclude=\"module-*\" --nsInclude=\"cli*\" --numInsertionWorkersPerCollection=15 --bypassDocumentValidation --drop --preserveUUID --convertLegacyIndexes\n```"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_104_mysql/ReadMe.md",
    "content": "# mysql\n\n- [mysql](https://dev.mysql.com/doc/refman/8.0/en/mysql.html)\n\n## EXAMPLES\n\nConnecting to mysql db\n\n```bash\n$ mysql -h<hostname> -u<username> -p<password> \n.\n```"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_105_mysqldump/ReadMe.md",
    "content": "# mysqldump\n\n- [mysqldump](https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html)\n\n## EXAMPLES\n\nTaking the mysqldump\n\n```bash\nmysqldump --databases <database-name>  --master-data=2 --single-transaction --order-by-primary -r filename.sql -h <hostname> -u <username> -p\n```"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_106_ssh_keygen/ReadMe.md",
    "content": "# ssh-keygen\n\n- [ssh-keygen](https://www.man7.org/linux/man-pages/man1/ssh-keygen.1.html)\n\n## Examples\n\nThese following commands are related to creating an SSH key pair, which consists of a private key and a corresponding public key. Here is what each part of the command does:\n\n- `ssh-keygen`: This is the basic command to create SSH keys. SSH keys are used for secure communication between machines. They are a pair of keys (one public, one private) that are used to authenticate users to each other and encrypt the communication between them.\n\n- `-q`: This flag stands for \"quiet mode\". When used, it suppresses the output of the command, making the command run silently without showing any messages.\n\n- `-t rsa`: This option specifies the type of key to be created. RSA is one of the algorithms used to create SSH keys. It's widely used and considered secure.\n\n- `-f key.pem`: This specifies the filename of the key. In this case, the private key will be saved in a file named `key.pem`.\n\n- `-C key`: This is a comment that will be added to the public key file. It's useful for identifying the key. In this case, \"key\" will be added as a comment.\n\n- `-N ''`: This specifies the passphrase for the key. In this case, an empty string is used, which means no passphrase will be used.\n\nAfter the key is created, the `ls` command is used to list the files in the current directory. The output shows the private key file (`key.pem`) and the public key file (`key.pem.pub`).\n\nRemember: The private key should always be kept secure and confidential, while the public key can be freely shared.\n\n```bash\n$ ssh-keygen -q -t rsa -f key.pem -C key -N ''\n$ ls\nkey.pem     key.pem.pub\n```"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_107_iptables/ReadMe.md",
    "content": "# iptables\n\n- [iptables](https://man7.org/linux/man-pages/man8/iptables.8.html)\n\n## Name\n\n- iptables - administration tool for IPv4 packet filtering and NAT\n\n## Examples\n\n```bash\n[root@instance]# cat /etc/os-release \nNAME=\"Red Hat Enterprise Linux Server\"\nVERSION=\"7.9 (Maipo)\"\nID=\"rhel\"\nID_LIKE=\"fedora\"\nVERSION_ID=\"7.9\"\nPRETTY_NAME=\"Red Hat Enterprise Linux Server 7.9 (Maipo)\"\n\n[root@instance]# iptables -L -n -v\nChain INPUT (policy ACCEPT 0 packets, 0 bytes)\n pkts bytes target     prot opt in     out     source               destination         \n37421  634M ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED\n    0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           \n  543 31939 INPUT_direct  all  --  *      *       0.0.0.0/0            0.0.0.0/0           \n  543 31939 INPUT_ZONES_SOURCE  all  --  *      *       0.0.0.0/0            0.0.0.0/0           \n  543 31939 INPUT_ZONES  all  --  *      *       0.0.0.0/0            0.0.0.0/0           \n    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate INVALID\n    0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited\n\nChain FORWARD (policy ACCEPT 0 packets, 0 bytes)\n pkts bytes target     prot opt in     out     source               destination         \n    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED\n    0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           \n    0     0 FORWARD_direct  all  --  *      *       0.0.0.0/0            0.0.0.0/0           \n    0     0 FORWARD_IN_ZONES_SOURCE  all  --  *      *       0.0.0.0/0            0.0.0.0/0           \n    0     0 FORWARD_IN_ZONES  all  --  *      *       0.0.0.0/0            0.0.0.0/0           \n    0     0 FORWARD_OUT_ZONES_SOURCE  all  --  *      *       0.0.0.0/0            0.0.0.0/0           \n    0     0 FORWARD_OUT_ZONES  all  --  *      *       0.0.0.0/0            0.0.0.0/0           \n    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate INVALID\n    0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited\n\nChain OUTPUT (policy ACCEPT 31151 packets, 3512K bytes)\n pkts bytes target     prot opt in     out     source               destination         \n    0     0 ACCEPT     all  --  *      lo      0.0.0.0/0            0.0.0.0/0           \n31151 3512K OUTPUT_direct  all  --  *      *       0.0.0.0/0            0.0.0.0/0           \n\nChain FORWARD_IN_ZONES (1 references)\n pkts bytes target     prot opt in     out     source               destination         \n    0     0 FWDI_trusted  all  --  eth0   *       0.0.0.0/0            0.0.0.0/0           [goto] \n    0     0 FWDI_trusted  all  --  +      *       0.0.0.0/0            0.0.0.0/0           [goto] \n...\nChain INPUT_direct (1 references)\n pkts bytes target     prot opt in     out     source               destination \n...\n...\n```\n\nThis is the output of the `iptables -L -n -v` command, which is used to list all the firewall rules in the system in verbose mode.\n\nHere's an explanation of the significant points in the output:\n\n1. **INPUT (policy ACCEPT)**: This is the chain for all packets coming into the machine (incoming traffic). The default policy is to ACCEPT, meaning if a packet doesn't match any rule, it is accepted.\n\n2. **FORWARD (policy ACCEPT)**: This is the chain for packets that are not for this machine and are not originated from this machine. Essentially, if your machine is a router, this chain is used. The default policy here is also ACCEPT.\n\n3. **OUTPUT (policy ACCEPT)**: This is the chain for packets originating from the machine (outgoing traffic). Again, the default policy is ACCEPT.\n\nThe other chains like INPUT_direct, OUTPUT_direct, etc., are custom chains created for specific rules. Firewalld uses these to make the management of firewall rules easier.\n\nIn each chain, you will see lines like:\n\n```bash\n37421  634M ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED\n```\n\nHere is the breakdown for this line:\n\n- **37421**: Number of packets that matched this rule.\n- **634M**: The total amount of data that has matched this rule.\n- **ACCEPT**: The target of this rule. If a packet matches this rule, it will be accepted.\n- **all**: The protocol of this rule. 'All' means it applies to all protocols.\n- **\\* *:** In and Out network interfaces to which this rule applies. An asterisk means 'any'.\n- **0.0.0.0/0 0.0.0.0/0**: The source and destination IP addresses to which this rule applies. '0.0.0.0/0' represents all IP addresses.\n- **ctstate RELATED,ESTABLISHED**: A stateful packet inspection (SPI) condition that must be met. It means that this rule only applies to packets that are part of or related to an already established connection.\n\nThe rest of the lines are similar rules with different parameters. For example, some lines use the REJECT target instead of ACCEPT, which means that if a packet matches that rule, it will be dropped and the source will be notified of this action.\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_108_adduser/ReadMe.md",
    "content": "# adduser\n\n- [adduser](https://TBD/man/8/adduser)\n\nuseradd - create a new user or update default new user information\n\n## Examples\n\n- To create a new user named `username` with user ID 1030 and assigns it to the `root`` group, without setting a password or creating a home directory.\n\n1. `-u 1030`: This flag specifies the user ID (UID) for the new user. In this case, the UID is set to `1030`.\n\n2. `-G root`: This flag assigns the user to an existing group. In this case, the user is being assigned to the `root` group, which has a group ID (GID) of `0`.\n\n3. `username`: This is the name of the new user being created.\n\n4. `-D`: When invoked with only the -D option, useradd will display the current default values. When invoked with -D plus other options, useradd will update the default values for the specified options.\n\nThe `cat /etc/passwd | grep username` command then checks the `/etc/passwd` file for the new user's entry. The output confirms the successful creation of the user with the specified UID, and it being a member of the `root` group.\n\n```bash\n$ docker run -it --rm alpine:latest sh\n/ $ adduser -D -u 1030 -G root username\n/ $ cat /etc/passwd | grep username\nusername:x:1030:0:Linux User,,,:/home/username:/bin/ash\n/ $ cat /etc/os-release\nNAME=\"Alpine Linux\"\nVERSION_ID=3.18.3\n```\n\n- To create a new user named `username` with a user ID of `1050`, assigns the user to the group with group ID `0`, and sets their home directory to `/app/username`.\n\n1. `--uid 1050`: This option specifies the user ID (UID) for the new user. Every user on a Linux system has a unique UID. Here, you're assigning the UID `1050` to the new user.\n\n2. `--gid 0`: This option sets the group ID (GID) for the new user. In Linux, each user is associated with at least one group. The GID `0` typically corresponds to the `root` group. By using this option, you're making the new user a member of the `root` group.\n\n3. `username`: This is the name of the new user you're creating. In this case, the new user will be named `username`.\n\n4. `--home /app/username`: This option sets the home directory for the new user. The home directory is the default directory the user is placed into upon logging in. Here, you're setting the home directory of the new user to `/app/username`.\n\n```bash\n$ docker run -it --rm debian sh\n$ adduser --uid 1050 --gid 0 username --home /app/username\n.\n. ## Fill the values on prmpt\n\n$ cat /etc/passwd | grep username\nusername:x:1050:0:username,x,x,x,x:/app/username:/bin/bash\n\n$ cat /etc/os-release\nPRETTY_NAME=\"Debian GNU/Linux 12 (bookworm)\"\nVERSION_ID=\"12\"\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_109_chgrp/ReadMe.md",
    "content": "# chgrp\n\n- [chgrp](https://man7.org/linux/man-pages/man1/chgrp.1.html)\n\n## Examples\n\n### To change the group ownership of `/some/directory` and everything inside it to the root group\n\n```bash\n$ chgrp -R 0 /some/directory\n.\n```\n\n- `chgrp`: This command changes the group ownership of files or directories.\n- `-R`: This flag makes the command recursive, so it will apply to the directory and all its subdirectories and files.\n- `0`: This is the group ID for the root group.\n- `/some/directory`: This is the target directory on which the command is executed.\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_110_sqlcmd/ReadMe.md",
    "content": "# sqlcmd\n\n- [https://hub.docker.com/_/microsoft-mssql-tools](https://hub.docker.com/_/microsoft-mssql-tools)\n\n- You can start a mssql-tools container to connect to the database\n\n```bash\n$ docker run -it mcr.microsoft.com/mssql-tools bash  # You can use kubectl run as well in kubernetes environment : kubectl run mssql-client --image=mcr.microsoft.com/mssql-tools --restart=Always -it -- bash\nroot@1234567 $ sqlcmd -S <hostname> -U <username> -P <password> # sqlcmd -S 127.0.0.1 -U sa -P MyPassword100\n.\n```\n\n- To execute a script via commandline when input is .sql file\n\n```bash\n@ToDo\n```\n\n- To execute a script via commandline using -Q option\n\n```bash\n@ToDo\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_111_tcpdump/ReadMe.md",
    "content": "# tcpdump\n\n## Learning TCP Dump\n\n### To capture and display network packets transmitted from the source IP address `192.168.1.130` to the destination IP address `142.250.181.78` on any network interface, without resolving hostnames.\n\n> Note: 192.168.1.130 is the internal IP of the machine where the command is run. Basically we want to capture all the network packets going from local mac machine to destination IP 142.250.181.78\n\n```bash\n# Terminal 1\n$ nslookup google.com\nServer:         192.168.1.1\nAddress:        192.168.1.1#53\n\nNon-authoritative answer:\nName:   google.com\nAddress: 142.250.181.78\n\n$ sudo tcpdump -i any -n 'src 192.168.1.130 and dst 142.250.181.78'    \ntcpdump: data link type PKTAP\ntcpdump: verbose output suppressed, use -v[v]... for full protocol decode\nlistening on any, link-type PKTAP (Apple DLT_PKTAP), snapshot length 524288 bytes\n\n# Terminal 2\n$ curl google.com                           \n<HTML><HEAD><meta http-equiv=\"content-type\" content=\"text/html;charset=utf-8\">\n<TITLE>301 Moved</TITLE></HEAD><BODY>\n<H1>301 Moved</H1>\nThe document has moved\n<A HREF=\"http://www.google.com/\">here</A>.\n</BODY></HTML>\n\n# Terminal 1\n$ sudo tcpdump -i any -n 'src 192.168.1.130 and dst 142.250.181.78'    \ntcpdump: data link type PKTAP\ntcpdump: verbose output suppressed, use -v[v]... for full protocol decode\nlistening on any, link-type PKTAP (Apple DLT_PKTAP), snapshot length 524288 bytes\n\n15:11:32.657768 IP 192.168.1.130.60025 > 142.250.181.78.80: Flags [S], seq 469828970, win 65535, options [mss 1460,nop,wscale 6,nop,nop,TS val 82779814 ecr 0,sackOK,eol], length 0\n15:11:32.670766 IP 192.168.1.130.60025 > 142.250.181.78.80: Flags [.], ack 4133612689, win 2056, options [nop,nop,TS val 82779827 ecr 2499919998], length 0\n15:11:32.670803 IP 192.168.1.130.60025 > 142.250.181.78.80: Flags [P.], seq 0:73, ack 1, win 2056, options [nop,nop,TS val 82779827 ecr 2499919998], length 73: HTTP: GET / HTTP/1.1\n15:11:32.882832 IP 192.168.1.130.60025 > 142.250.181.78.80: Flags [.], ack 774, win 2044, options [nop,nop,TS val 82780039 ecr 2499920212], length 0\n15:11:32.883292 IP 192.168.1.130.60025 > 142.250.181.78.80: Flags [F.], seq 73, ack 774, win 2048, options [nop,nop,TS val 82780039 ecr 2499920212], length 0\n15:11:32.896260 IP 192.168.1.130.60025 > 142.250.181.78.80: Flags [.], ack 775, win 2048, options [nop,nop,TS val 82780053 ecr 2499920225], length 0\n\n```\n\n**Description**\n\nThe table below outlines the output from a `tcpdump` command capturing packets sent from the local machine (IP address `192.168.1.130`) to a Google server (IP address `142.250.181.78`). This data illustrates the TCP/IP communication during an HTTP request to the server.\n\n**Output Table**\n\n| Time                                             | Source IP:Port                                                   | Destination IP:Port                                                 | TCP Flags                                                                      | Sequence & Acknowledgment Numbers                                                           | Window Size                                                | TCP Options                                                                                                                                                              | Payload Size                                 | Description                                                                   |\n|--------------------------------------------------|------------------------------------------------------------------|---------------------------------------------------------------------|--------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------|------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------|-------------------------------------------------------------------------------|\n| 15:11:32.657768 <br><br> Time of packet capture. | 192.168.1.130:60025 <br><br> Source IP and port (local machine). | 142.250.181.78:80 <br><br> Destination IP and port (Google server). | [S] <br><br> SYN flag set, initiating a TCP connection.                        | seq 469828970 <br><br> Initial sequence number for the connection.                          | win 65535 <br><br> Window size (flow control information). | mss 1460, wscale 6, TS, sackOK <br><br> TCP options including Maximum Segment Size (MSS), window scaling (wscale), Timestamp (TS), and Selective Acknowledgement (SACK). | 0 <br><br> No payload data.                  | Initiating a TCP connection with a SYN packet.                                |\n| 15:11:32.670766 <br><br> Time of packet capture. | 192.168.1.130:60025 <br><br> Source IP and port (local machine). | 142.250.181.78:80 <br><br> Destination IP and port (Google server). | [.] <br><br> ACK flag set, acknowledging receipt of data.                      | ack 4133612689 <br><br> Acknowledgment number for the received packet.                      | win 2056 <br><br> Window size (flow control information).  | nop, nop, TS <br><br> TCP options including no-operations (nop) and Timestamp (TS).                                                                                      | 0 <br><br> No payload data.                  | Acknowledging receipt of the server's SYN-ACK packet.                         |\n| 15:11:32.670803 <br><br> Time of packet capture. | 192.168.1.130:60025 <br><br> Source IP and port (local machine). | 142.250.181.78:80 <br><br> Destination IP and port (Google server). | [P.] <br><br> PSH and ACK flags set, indicating pushed data.                   | seq 0:73, ack 1 <br><br> Sequence number for the data being sent and acknowledgment number. | win 2056 <br><br> Window size (flow control information).  | nop, nop, TS <br><br> TCP options including no-operations (nop) and Timestamp (TS).                                                                                      | 73 <br><br> Length of the HTTP request data. | Sending an HTTP GET request.                                                  |\n| 15:11:32.882832 <br><br> Time of packet capture. | 192.168.1.130:60025 <br><br> Source IP and port (local machine). | 142.250.181.78:80 <br><br> Destination IP and port (Google server). | [.] <br><br> ACK flag set, acknowledging receipt of data.                      | ack 774 <br><br> Acknowledgment number for the received packet.                             | win 2044 <br><br> Window size (flow control information).  | nop, nop, TS <br><br> TCP options including no-operations (nop) and Timestamp (TS).                                                                                      | 0 <br><br> No payload data.                  | Acknowledging receipt of the HTTP response from the server.                   |\n| 15:11:32.883292 <br><br> Time of packet capture. | 192.168.1.130:60025 <br><br> Source IP and port (local machine). | 142.250.181.78:80 <br><br> Destination IP and port (Google server). | [F.] <br><br> FIN and ACK flags set, indicating the closing of the connection. | seq 73, ack 774 <br><br> Sequence number for the data being sent and acknowledgment number. | win 2048 <br><br> Window size (flow control information).  | nop, nop, TS <br><br> TCP options including no-operations (nop) and Timestamp (TS).                                                                                      | 0 <br><br> No payload data.                  | Initiating closure of the TCP connection.                                     |\n| 15:11:32.896260 <br><br> Time of packet capture. | 192.168.1.130:60025 <br><br> Source IP and port (local machine). | 142.250.181.78:80 <br><br> Destination IP and port (Google server). | [.] <br><br> ACK flag set, acknowledging receipt of data.                      | ack 775 <br><br> Acknowledgment number for the received packet.                             | win 2048 <br><br> Window size (flow control information).  | nop, nop, TS <br><br> TCP options including no-operations (nop) and Timestamp (TS).                                                                                      | 0 <br><br> No payload data.                  | Acknowledging the server's FIN packet, completing the connection termination. |\n\n**Explanation of Fields**\n\n- **Time**: The timestamp when the packet was captured.\n- **Source IP:Port**: The IP address and port number of the packet's source.\n- **Destination IP:Port**: The IP address and port number of the packet's destination.\n- **TCP Flags**: Indicate the type of TCP packet (SYN, ACK, FIN, PSH, etc.).\n- **Sequence & Acknowledgment Numbers**: Used for tracking data transmission in TCP.\n- **Window Size**: The size of the receiver's available buffer (flow control).\n- **TCP Options**: Various options set in the TCP header (MSS, SACK, Timestamps, Window Scale).\n- **Payload Size**: Size of the data in the packet.\n- **Description**: Brief explanation of what each packet represents in the communication.\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_112_step/ReadMe.md",
    "content": "# Step\n\n[smallstep.com](https://smallstep.com/cli)\n\n[github.com » smallstep/cli](https://github.com/smallstep/cli)\n\n## Examples\n\nGenerating a [trust anchor certificate](https://linkerd.io/2.14/tasks/generate-certificates/#trust-anchor-certificate) in linkerd\n\n| Command/Option               | Description                                            |\n|------------------------------|--------------------------------------------------------|\n| `step certificate create`    | Command to create a certificate and private key.       |\n| `root.linkerd.cluster.local` | Specifies the name of the certificate being created.   |\n| `ca.crt`                     | The output filename for the root certificate.          |\n| `ca.key`                     | The output filename for the certificate's private key. |\n| `--profile root-ca`          | Sets the certificate profile to root CA.               |\n| `--no-password`              | Generates the key without a passphrase for simplicity. |\n| `--insecure`                 | Skips encryption of the key for easier automation.     |\n\n```bash\nstep certificate create root.linkerd.cluster.local ca.crt ca.key \\\n--profile root-ca --no-password --insecure\n```\n\nGenerating [Issuer certificate and key](https://linkerd.io/2.14/tasks/generate-certificates/#issuer-certificate-and-key)\n\n| Command/Option                   | Description                                                         |\n|----------------------------------|---------------------------------------------------------------------|\n| `step certificate create`        | Command to create a certificate and private key.                    |\n| `identity.linkerd.cluster.local` | Specifies the name for the intermediate certificate.                |\n| `issuer.crt`                     | The output filename for the intermediate certificate.               |\n| `issuer.key`                     | The output filename for the intermediate certificate's private key. |\n| `--profile intermediate-ca`      | Sets the certificate profile to intermediate CA.                    |\n| `--not-after 8760h`              | Sets the certificate's validity period to 8760 hours (1 year).      |\n| `--no-password`                  | Generates the key without a passphrase for simplicity.              |\n| `--insecure`                     | Skips encryption of the key for easier automation.                  |\n| `--ca ca.crt`                    | Specifies the root certificate to use.                              |\n| `--ca-key ca.key`                | Specifies the root certificate's private key to use.                |\n\n```bash\nstep certificate create identity.linkerd.cluster.local issuer.crt issuer.key \\\n--profile intermediate-ca --not-after 8760h --no-password --insecure \\\n--ca ca.crt --ca-key ca.key\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_113_set/ReadMe.md",
    "content": "# [set](https://man7.org/linux/man-pages/man1/set.1p.html)\n\n- [set](#set)\n  - [Examples](#examples)\n    - [-x | Debugging](#-x--debugging)\n    - [-e | Exit immediately || source](#-e--exit-immediately--source)\n    - [set -o pipefail](#set--o-pipefail)\n      - [Example Without `set -o pipefail`](#example-without-set--o-pipefail)\n      - [Example With `set -o pipefail`](#example-with-set--o-pipefail)\n      - [Combining with Other Options | -e | -u | -o pipefail](#combining-with-other-options---e---u---o-pipefail)\n\n## Examples\n\n### -x | Debugging\n\n```bash\n# Enable printing of each command to stdout before execution, for debugging\nset -x\n```\n\n### -e | Exit immediately || source\n\n```bash\n# Make bash script exit immediately if any command returns a non-zero exit status\nset -e\n```\n\nWith multiple scripts\n\n```bash\n# Note: caller_script.sh calls called_script.sh. The called script fails with a non-zero exit status. The caller script has set -e, so it exits immediately after the called script fails.\n$ bash caller_script.sh     \nCaller script: before calling the called script\nCalled script: inside the called script. Before failing\n```\n\n### set -o pipefail\n\nBy default, in a pipeline (a series of commands connected by `|`), the exit status of the pipeline is the exit status of the last command. This can mask errors in earlier commands in the pipeline.\n\nWhen you enable `set -o pipefail`, the pipeline's return status is the exit status of the last command that had a non-zero exit status. If all commands in the pipeline succeed (return a zero exit status), the pipeline's exit status is zero.\n\n#### Example Without `set -o pipefail`\n\n```bash\n$ bash without_pipefail.sh \nhello\nThis will still be printed\n```\n\nIn this example, the `test` (non existent command) and `false` command fails, but because the exit status of the pipeline is determined `true` command the script does not exit immediately.\n\n#### Example With `set -o pipefail`\n\n```bash\nbash with_pipefail.sh   \nhello\n```\n\nIn this example, with `set -o pipefail`, the script exits immediately because the `test` (non existent) and `false` command failed, even though the `true` command's exit status would be the last command in the pipeline.\n\n#### Combining with Other Options | -e | -u | -o pipefail\n\n[stackoverflow.com » What is the meaning of a question mark in bash variable parameter expansion as in ${var?}?](https://stackoverflow.com/questions/8889302/what-is-the-meaning-of-a-question-mark-in-bash-variable-parameter-expansion-as-i)\n\n[www.gnu.org » Shell-Parameter-Expansion.html](https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html)\n\nWhen used with `set -e` and `set -u`, `set -o pipefail` helps to create a robust script that:\n\n- Exits on errors (`set -e`)\n- Treats unset variables as errors (`set -u`)\n- Properly handles pipeline errors (`set -o pipefail`)\n\nHere’s how you might typically see them used together in a script:\n\n```bash\n$ bash using_set_eu_with_pipefail.sh \nusing_set_eu_with_pipefail.sh: line 10: json_object: unbound variable\nusing_set_eu_with_pipefail.sh: line 10: SOMEVAR: Variable SOMEVAR is empty\n\n$ echo $?\n1\n\n$ json_object='{\"somekey\": \"example_value\"}' bash using_set_eu_with_pipefail.sh\nVariable SOMEVAR is assigned with: example_value\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_113_set/called_script.sh",
    "content": "#!/bin/bash\n\necho \"Called script: inside the called script. Before failing\"\n\nfalse\n\necho \"Called script: inside the called script. After failing\"\n\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_113_set/caller_script.sh",
    "content": "#!/bin/bash\n\nset -e\n\necho \"Caller script: before calling the called script\"\n# This script will call the called_script.sh script\nsource called_script.sh\n\necho \"Caller script: after calling the called script\"\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_113_set/using_set_eu_with_pipefail.sh",
    "content": "#!/bin/bash\nset -e\nset -u\nset -o pipefail\n\n# Sample JSON object\njson_object='{\"somekey\": \"example_value\"}'\n\n# Example pipeline\nexport SOMEVAR=$(echo $json_object | jq -r -e \".somekey1\") && : \"${SOMEVAR:?Variable SOMEVAR is empty}\"\n\necho \"Variable SOMEVAR is assigned with: $SOMEVAR\"\n\n# Rest of your script\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_113_set/with_pipefail.sh",
    "content": "#!/bin/bash\nset -e\nset -o pipefail\n\necho \"hello\"\ntest | false | true\necho \"This will not be printed\"\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_113_set/without_pipefail.sh",
    "content": "#!/bin/bash\nset -e\n\necho \"hello\"\ntest | false | true\necho \"This will still be printed\"\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_114_mvn/ReadMe.md",
    "content": "# [mvn](https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html)\n\n[digitalocean.com » docs](https://www.digitalocean.com/community/tutorials/maven-commands-options-cheat-sheet)\n\n## Examples\n\n### archetype:generate | Create a project\n\n[Create a project](https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html#creating-a-project)\n\n```bash\nmvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false\n```\n\n### package | Build the project\n\n[Build the project](https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html#build-the-project)\n\nThe following creates a `jar/war` depending on the `<packaging>` in `pom.xml` in the `target` directory\n\n```bash\nmvn package\n```\n\nTo run `mvn package` in debug mode\n\n```bash\nmvn -X package\n```\n\nTo package the project skipping the unit tests\n\n```bash\nmvn -Dmaven.test.skip=true package\n```\n\n### clean | Clean the project\n\nCleans the maven project by deleting the target directory (files generated by previous build)\n\n```bash\nmvn clean\n```\n\n[To prevent Maven from downloading artifacts every time?](https://stackoverflow.com/questions/21990854/how-do-i-prevent-maven-from-downloading-artifacts-every-time)\n\n```bash\n# To remove target folder and install all the dependencies, ensure that the project is build using .m2 folder cache i.e. offline\nmvn clean install -o\n```\n\n### install | Install the project\n\nBuilds the project and installs resulting artifacts (JAR, WAR, etc) into your local Maven repository\n\n```bash\nmvn install\n```\n\n### deploy | Deploy the project\n\nThis command deploys the artifact to the remote repository\n\n```bash\nmvn deploy\n```\n\n[Publish third party artifacts](https://docs.aws.amazon.com/codeartifact/latest/ug/maven-mvn.html)\n\n[stackoverflow.com » why-cant-i-deploy-from-my-local-repository-to-a-remote-maven-repositor](https://stackoverflow.com/questions/14223221/why-cant-i-deploy-from-my-local-repository-to-a-remote-maven-repository)\n\nLet's say we want to upload junit dependency with following structure\n\n```bash\n$ tree ~/.m2/repository/junit/junit/4.12 \n~/.m2/repository/junit/junit/4.12\n├── _remote.repositories\n├── junit-4.12.jar\n├── junit-4.12.jar.sha1\n├── junit-4.12.pom\n└── junit-4.12.pom.sha1\n```\n\n```bash\n# The remote repository is AWS codeartifact\n# Get the <repository_id> and Durl from AWS codeartifact\n# https://docs.aws.amazon.com/codeartifact/latest/ug/maven-mvn.html\n# https://stackoverflow.com/questions/14223221/why-cant-i-deploy-from-my-local-repository-to-a-remote-maven-repository, jar and pom should be present in another folder say tmp\n mvn deploy:deploy-file \\\n-DgroupId=junit \\\n-DartifactId=junit \\\n-Dversion=4.12 \\\n-Dpackaging=jar \\\n-Dfile=./tmp/junit-4.12.jar \\\n-DpomFile=./tmp/junit-4.12.pom \\\n-DrepositoryId=<repository_id> \\\n-Durl=<https://my_domain-111122223333.d.codeartifact.region.amazonaws.com/maven/repo-name/>\n```\n\n### compile | Compile the project\n\nExecutes Maven build phase called 'Compile' in quiet (no output except errors) and offline mode (using local repo cache).\n\n```bash\nmvn -q -o compile\n```\n\nCompiles all the java source classes of your maven project\n\n```bash\nmvn compile\n```\n\n### test | Run unit tests\n\nRuns unit tests against compiled source code using a suitable unit testing framework if available \n\n```bash\nmvn test\n```\n\n### validate | Validate the project\n\nValidates if the project structure is correct. Also makes sure all dependencies have been downloaded and are available in the local repository\n\n```bash\nmvn validate\n```\n\n### site | Generate reports\n\nTo get basic information about your project is execute the following command\n\n```bash\nmvn site\n```\n\n### surefire-report:report\n\nTo generate reports\n\n```bash\nmvn surefire-report:report\n```\n\n### dependency:tree | Create a dependency tree\n\n[mvnrepository.com](https://mvnrepository.com/artifact/org.tomlj/tomlj/1.0.0)\n\nCreate a dependency tree\n\n```bash\nwget https://repo1.maven.org/maven2/org/tomlj/tomlj/1.0.0/tomlj-1.0.0.pom\n```\n\n```bash\nmvn dependency:tree -DoutputType=text -DoutputFile=dependencies.txt -DremoteRepositories=https://repo1.maven.org/maven2 -f tomlj-1.0.0.pom\n```\n\n```bash\n$ cat dependencies.txt                                         \norg.tomlj:tomlj:pom:1.0.0\n+- org.antlr:antlr4-runtime:jar:4.7.2:compile\n\\- com.google.code.findbugs:jsr305:jar:3.0.2:compile\n```\n\n### dependency:copy-dependencies | Download all dependencies\n\nDownload all dependencies using a pom file to a directory `./dependencies`\n\n```bash\nmvn dependency:copy-dependencies -DoutputDirectory=./dependencies -f tomlj-1.0.0.pom\n```\n\n### dependency:copy | Copy a specific artifact\n\nTo copy a specific artifact to current directory\n\n```bash\nmvn dependency:copy -Dartifact=org.tomlj:tomlj:1.0.0 -DoutputDirectory=./\n```\n\n### dependency:get | Download a specific artifact\n\nTo download a specific artifact to local repository\n\n```bash\nmvn dependency:get -Dartifact=org.tomlj:tomlj:1.0.0\nmvn dependency:get -Dartifact=com.google.code.findbugs:jsr305:3.0.2\n```\n\n\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_115_source/1.sh",
    "content": "#!/bin/bash\n\necho \"begin 1.sh.........\"\n\n# bash 2.sh\nsource 2.sh\n\necho \"VAR_FROM_2 : $VAR_FROM_2\"\n\necho \"end 1.sh............\"\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_115_source/2.sh",
    "content": "#!/bin/bash\n\necho \"begin 2.sh......\"\nVAR_FROM_2=test\necho \"end 2.sh......\""
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_115_source/ReadMe.md",
    "content": "# source\n\n## Description\n\nExecute commands from a file in the current shell.\n\n## EXAMPLES\n\n### Source a file\n\n```bash\n# The variable VAR_FROM_2 is set in 2.sh and is used in 1.sh\n$ bash 1.sh\nbegin 1.sh.........\nbegin 2.sh......\nend 2.sh......\nVAR_FROM_2 : test\nend 1.sh............\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_116_whoami/ReadMe.md",
    "content": "# whoami\n\n## Example\n\n### To get the current user name\n\n```bash\nwhoami\n```\n\nOutput\n\n```bash\nroot\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_117_who/ReadMe.md",
    "content": "# who\n\n## Examples\n\n### To check all users currently logged in\n\n```bash\n$ who\nubuntu   pts/0        2022-10-26 12:05 (5.194.32.235)\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_118_last/ReadMe.md",
    "content": "# last\n\n## Examples\n\n### To get record of all logged in users and the date and time of last reboot\n\n```bash\n$ last\nubuntu   pts/0        5.194.32.235     Wed Oct 26 12:05   still logged in\nreboot   system boot  5.15.0-1019-aws  Wed Oct 26 11:59   still running\n\nwtmp begins Wed Oct 26 11:59:53 2022\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_119_az/ReadMe.md",
    "content": "# az | azure cli\n\n[learn.microsoft.com/ » az](https://learn.microsoft.com/en-us/cli/azure/reference-index?view=azure-cli-latest)\n\n- [az | azure cli](#az--azure-cli)\n  - [Install](#install)\n  - [deallocate | Deallocate a VM](#deallocate--deallocate-a-vm)\n  - [group list | List resouce group names](#group-list--list-resouce-group-names)\n  - [vm create | To create an image | To create a VM](#vm-create--to-create-an-image--to-create-a-vm)\n  - [vm extension | To configure nginx on VM](#vm-extension--to-configure-nginx-on-vm)\n  - [resources list | To list all resources in `<resource_group_name>` resourcegroup](#resources-list--to-list-all-resources-in-resource_group_name-resourcegroup)\n  - [network | List vnet | List subnets | List rules | create rules](#network--list-vnet--list-subnets--list-rules--create-rules)\n  - [vm list | To list virtual machines in a resource group](#vm-list--to-list-virtual-machines-in-a-resource-group)\n  - [ad | To list AD users | servicePrincipals](#ad--to-list-ad-users--serviceprincipals)\n  - [login](#login)\n  - [account](#account)\n  - [aks](#aks)\n  - [storage](#storage)\n\n## Install\n\n[learn.microsoft.com » Install Azure CLI on macOS](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli-macos)\n\n## deallocate | Deallocate a VM\n\n[what's the difference between deallocated and stopped ?](https://learn.microsoft.com/en-us/answers/questions/574969/whats-the-difference-between-deallocated-and-stopp)\n\n```bash\naz vm deallocate \\\n    --resource-group <resource group> \\\n    --name <virtual machine name>\n```\n\n## group list | List resouce group names\n\n```bash\naz group list -o table\n```\n\n## vm create | To create an image | To create a VM\n\nTo create an image from a generalised VM\n\n```bash\naz vm create \\\n    --resource-group <resource group> \\\n    --name <new virtual machine name> \\\n    --image <image name> \\\n    --location <location of image>\n```\n\n- run the following az vm create command to create a Linux VM:\n\n```bash\naz vm create --resource-group \"<resource_group>\" --name my-vm --public-ip-sku Standard --image Ubuntu2204 --admin-username azureuser --generate-ssh-keys\n```\n\n## vm extension | To configure nginx on VM\n\nRun the following az vm extension set command to configure Nginx on your VM:\n\n```bash\naz vm extension set --resource-group \"<resource_group>\" --vm-name my-vm --name customScript --publisher Microsoft.Azure.Extensions --version 2.1 --settings '{\"fileUris\":[\"https://raw.githubusercontent.com/MicrosoftDocs/mslearn-welcome-to-azure/master/configure-nginx.sh\"]}' --protected-settings '{\"commandToExecute\": \"./configure-nginx.sh\"}'\n```\n\n## resources list | To list all resources in `<resource_group_name>` resourcegroup\n\n```bash\naz resource list --resource-group <resource_group_name> -o table\n```\n\n## network | List vnet | List subnets | List rules | create rules\n\n```bash\naz network vnet list -o table\n```\n\nList subnets in vnet\n\n```bash\n# az network vnet subnet list --vnet-name <VNET_NAME> --resource-group <RESOURCE_GROUP_NAME> -o table\naz network vnet subnet list --vnet-name test-dev-network --resource-group test-dev-rg -o table\n```\n\nTo list Routetables in specific resource group\n\n```bash\n# az network route-table list --resource-group <RESOURCE_GROUP_NAME> -o table\naz network route-table list --resource-group test-dev-rg -o table\n```\n\nTo list network interfaces in a resource group:\n\n```bash\n# az network nic list --resource-group <RESOURCE_GROUP_NAME> -o table\naz network nic list --resource-group test-dev-rg -o table\n```\n\nTo list network security groups in a resource group:\n\n```bash\n# az network nsg list --resource-group <RESOURCE_GROUP_NAME> -o table\naz network nsg list --resource-group test-dev-rg -o table\n```\n\nTo list public IP addresses in a resource group:\n\n```bash\n# az network public-ip list --resource-group <RESOURCE_GROUP_NAME> -o table\naz network public-ip list --resource-group test-dev-rg -o table\n```\n\nRun the following az network nsg rule list command to list the rules associated with the NSG named my-vmNSG:\n\n```bash\naz network nsg rule list --resource-group \"<resource_group>\" --nsg-name my-vmNSG\n```\n\nTo only query required values for `my-vmNSG`\n\n```bash\naz network nsg rule list --resource-group \"<resource_group>\" --nsg-name my-vmNSG --query '[].{Name:name, Priority:priority, Port:destinationPortRange, Access:access}' --output table\n```\n\nRun the following az network nsg rule create command to create a rule called allow-http that allows inbound access on port 80:\n\n```bash\naz network nsg rule create --resource-group \"<resource_group>\" --nsg-name my-vmNSG --name allow-http --protocol tcp --priority 100 --destination-port-range 80 --access Allow\n```\n\n## vm list | To list virtual machines in a resource group\n\n```bash\n# az vm list --resource-group <RESOURCE_GROUP_NAME> -o table\naz vm list --resource-group test-dev-rg -o table\n```\n\n## ad | To list AD users | servicePrincipals\n\nTo list AD users\n\n```bash\naz ad user list\n```\n\nTo list the `servicePrincipals` created by you\n\n```bash\naz ad sp list --query \"[?contains(displayName, 'azure-cli-2023-12-23-09-47-11')]\" --output table\n```\n\nTo creat a servicePrincipal\n\n```bash\naz ad sp create-for-rbac --role=\"Contributor\" --scopes=\"/subscriptions/<subscription_id>\"\n```\n\n## login\n\nTo Login\n\n```bash\naz login\n```\n\n## account\n\nTo get information about the logged in account.\n\n```bash\n# The following should show your root account email that you used to login.\naz account show\n```\n\nTo get the subscription for the account\n\n```bash\naz account set --subscription \"<subscription_id>\"\n```\n\nTo login using this servicePrincipal\n\n```bash\naz login --service-principal -u <CLIENT_ID> -p <CLIENT_SECRET> --tenant <TENANT_ID>\n```\n\n## aks\n\nTo configure `kubectl` to use the credentials for the Azure Kubernetes Service (AKS) cluster named `test-dev-aks` in the `test-dev-rg` resource group, enabling you to run `kubectl` commands against that cluster.\n\n```bash\naz aks get-credentials --resource-group test-dev-rg --name test-dev-aks\n```\n\nTo run the `kubectl get pods -A` command directly on the AKS cluster named `test-dev-aks` in the `test-dev-rg` resource group, listing all pods in all namespaces within that cluster.\n\n```bash\naz aks command invoke -n test-dev-aks -g test-dev-rg -c \"kubectl get pods -A\"\n```\n\n## storage\n\nTo get the first key associated with storage account\n\n```bash\naz storage account keys list --resource-group <rg> --account-name <storage-account-name> --query '[0].value' -o tsv\n```\n\nTo list containers in storage account\n\n```bash\naz storage container list --account-name <storage-account-name> --account-key $ARM_ACCESS_KEY --output table\n```\n\nTo list the files (blobs) in a container\n\n```bash\naz storage blob list --container-name test-devrg --account-name <storage-account-name> --account-key $ARM_ACCESS_KEY --output table\n```\n\nTo check VNet peering, you can use\n\n```bash\n# az network vnet peering list --resource-group <RESOURCE_GROUP_NAME> --vnet-name <VNET_NAME> --output table\naz network vnet peering list --resource-group test-dev-rg --vnet-name test-dev-vnet1-network --output table\n```\n\nTo check InstanceName, PrivateIp, PublicIP in resource group\n\n```bash\n# az vm list -g <RESOURCE_GROUP_NAME> -d --query \"[].{Name:name,PrivateIP:privateIps,PublicIP:publicIps}\" -o table\naz vm list -g test-dev-rg -d --query \"[].{Name:name,PrivateIP:privateIps,PublicIP:publicIps}\" -o table\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_120_dpkg/ReadMe.md",
    "content": "# dpkg\n\n[dpkg](https://man7.org/linux/man-pages/man1/dpkg-architecture.1.html)\n\n## Examples\n\n```bash\n$ cat /etc/os-release  | grep PRETTY_NAME\nPRETTY_NAME=\"Ubuntu 22.04.4 LTS\"\n```\n\n```bash\ndpkg --print-architecture\n```\n\nOutput\n\n```bash\narm64\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_121_cat/ReadMe.md",
    "content": "# cat\n\n- [cat](#cat)\n  - [Examples](#examples)\n    - [create a new file using cat and heredoc | EOF](#create-a-new-file-using-cat-and-heredoc--eof)\n    - [Print the contents of a file](#print-the-contents-of-a-file)\n\n## Examples\n\n### create a new file using cat and heredoc | EOF\n\n```bash\ncat <<EOF > run.sh\n#!/bin/bash\n\necho \"File is run.sh\"\nEOF\n```\n\n### Print the contents of a file\n\n```bash\ncat run.sh\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_122_tar/ReadMe.md",
    "content": "# tar\n\n## Examples\n\n### -x | --extract | -f | --file | -v | --verbose | -C | --directory\n\n```bash\ntar -x -f archive.tar.gz -v -C /tmp\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_123_code/ReadMe.md",
    "content": "# code\n\nVisual Studio Code -- cli\n\n## Examples\n\n### Install Extensions\n\n```bash\ncode --install-extension github.github-vscode-theme --profile personal\n```\n\nInstall from one PC to another. You can take the output on first PC and run it on the second PC.\n\n```bash\ncode --list-extensions | xargs -L 1 echo code --install-extension\n```\n\n### List Installed Extensions\n\nPersonal Profile\n\n```bash\ncode --list-extensions --profile personal\n```\n\nDefault Profile\n\n```bash\ncode --list-extensions --show-versions\n```\n\n### Open project with specific profile\n\n```bash\ncode ~/workspace/codeaprendiz/learn_devops --profile Default\n```\n\n### Uninstall Extensions\n\n```bash\ncode --uninstall-extension github.github-vscode-theme --profile personal\n```"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_124_unset/ReadMe.md",
    "content": "# unset\n\n## Examples\n\nTo unset a variable, use the `unset` command followed by the variable name.\n\n```bash\nunset GIT_SSH_COMMAND\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_125_ssh_keygen/ReadMe.md",
    "content": "# ssh-keygen\n\n## Examples\n\nGenerate a new SSH key pair for personal account\n\n```bash\nssh-keygen -C \"your_personal_email@example.com\" -f ~/.ssh/id_rsa_personal\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_126_command/ReadMe.md",
    "content": "# command\n\n[stackoverflow.com](https://askubuntu.com/questions/512770/what-is-the-bash-command-command) command is useful, for example, if you want to check for the existence of a particular command. which includes aliases into the lookup so it is not suitable for this purpose because you don't want a random alias to be considered as the command in question.\n\n## Examples\n\nCheck if a command exists\n\n```bash\ncommand -v ls\n```\n\n```bash\ncommand -v trivy\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_127_shasum/ReadMe.md",
    "content": "# shasum\n\n## Examples\n\nTo calculate the sha1sum of a file:\n\n```bash\nshasum /tmp/yq\n```\n\nTypically used to verify the integrity of a file.\n\n```bash\ncurl -Lo /tmp/yq https://github.com/reponame/yq/releases/download/v4.44.3/yq_linux_amd64\nEXPECTED_CHECKSUM=\"a3d28b3x5xxxxxxxxxxxxx0d07\" # You can calculate the checksum using shasum /tmp/yq and then copy the output here for subsequent runs\necho \"$EXPECTED_CHECKSUM  /tmp/yq\" | sha256sum -c || exit 1\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_128_sh/ReadMe.md",
    "content": "# sh\n\n## Examples\n\n### -s  | read from stdin\n\nHere's a brief explanation of the command:\n\n1. `| sh -s -- -b /usr/local/bin v0.18.3`: Pipes the script's content to `sh` for execution.\n   - `-s`: Tells `sh` to read the script from stdin.\n   - `--`: Indicates the end of options for `sh` and starts arguments for the script.\n   - `-b /usr/local/bin`: Argument for the script specifying where to install the binaries.\n   - `v0.18.3`: Specifies the version to install.\n\n```bash\n# https://aquasecurity.github.io/trivy/v0.18.3/installation/\ncurl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh -s -- -b /usr/local/bin v0.18.3\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_129_yq/ReadMe.md",
    "content": "# yq\n\n## Examples\n\n### e - Edit\n\n```bash\ncat <<EOF | yq e '.app.environment = \"development\"' -\nversion: 1\napp:\n  name: MyApp\n  environment: qa \nEOF\n```\n\nOutput\n\n```bash\nversion: 1\napp:\n  name: MyApp\n  environment: development\n```\n\n### -i - Inplace\n\n```bash\n$ cat file.yaml\nversion: 1\napp:\n  name: MyApp\n  environment: qa\n```\n\n```bash\nyq -i e '.app.environment = \"development\"' file.yaml\n```\n\n```bash\n$ cat file.yaml\nversion: 1\napp:\n  name: MyApp\n  environment: development\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_130_basename/ReadMe.md",
    "content": "# basename\n\n## NAME\n\nbasename, dirname – return filename or directory portion of pathname\n\n## Examples\n\n```bash\nbasename /home/user/file.txt\n```\n\nOutput\n\n```bash\nfile.txt\n```\n\nFor URLs\n\n```bash\ncurl -L -o /tmp/$(basename https://repo1.maven.org/maven2/org/tomlj/tomlj/1.0.0/tomlj-1.0.0.pom) https://repo1.maven.org/maven2/org/tomlj/tomlj/1.0.0/tomlj-1.0.0.pom\n```\n\n```bash\n$ ls /tmp/*.pom\n/tmp/tomlj-1.0.0.pom\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_linux/taskset_commands_linux_os_and_concepts/task_131_readlink/ReadMe.md",
    "content": "# readlink\n\n<br>\n\n## Examples\n\n<br>\n\nTo find the absolute paths all folders that start with `task_*`\n\n```bash\nfind . -name \"task_*\" -type d | xargs -I % readlink -f %\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_windows/ReadMe-static.md",
    "content": "# ReadMe_static.md\n\n- [ReadMe\\_static.md](#readme_staticmd)\n  - [Installing Nodejs](#installing-nodejs)\n  - [Installing WSL](#installing-wsl)\n\n## Installing Nodejs\n\n[Prebuild Binaries](https://nodejs.org/en/download/prebuilt-binaries)\n\nRun the following in cmd `Download` folder\n\n```batch\ndir | findstr \".zip\n```\n\n```batch\nC:\\Users\\adminuser\\Downloads>dir | findstr \".zip\"\n07/07/2024  02:24 PM        29,463,958 node-v20.15.0-win-x64.zip\n```\n\nUnzip the file\n\n```batch\ntar -xf node-v20.15.0-win-x64.zip\n```\n\n```batch\nsetx /M PATH \"%PATH%;C:\\Users\\adminuser\\Downloads\\node-v20.15.0-win-x64\"\n```\n\nClose and reopen cmd and run the following to verify the installation\n\n```batch\nnode -v\n```\n\n```batch\nnpm -v\n```\n\n## Installing WSL\n\n[How to install Linux on Windows with WSL](https://learn.microsoft.com/en-us/windows/wsl/install)\n\n```batch\nwsl --install\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_windows/ReadMe.md",
    "content": "# taskset_commands_windows_os_and_concepts\n\n> [Auto](https://github.com/codeaprendiz/learn_fullstack/blob/main/home/php/intermediate/taskset_intermediate_php/task_004_createGlobalMarkdownTable/generate-readme.php) generated ReadMe. Number of tasks: 7\n\n| Task     | Description                                                                         |\n|----------|-------------------------------------------------------------------------------------|\n| task_001 | [task_001_systeminfo](taskset_commands_windows_os_and_concepts/task_001_systeminfo) |\n| task_002 | [task_002_dir](taskset_commands_windows_os_and_concepts/task_002_dir)               |\n| task_003 | [task_003_findstr](taskset_commands_windows_os_and_concepts/task_003_findstr)       |\n| task_004 | [task_004_del](taskset_commands_windows_os_and_concepts/task_004_del)               |\n| task_005 | [task_005_rmdir](taskset_commands_windows_os_and_concepts/task_005_rmdir)           |\n| task_006 | [task_006_echo](taskset_commands_windows_os_and_concepts/task_006_echo)             |\n| task_007 | [task_007_setx](taskset_commands_windows_os_and_concepts/task_007_setx)             |\n"
  },
  {
    "path": "home/os_and_concepts/commands_windows/taskset_commands_windows_os_and_concepts/task_001_systeminfo/ReadMe.md",
    "content": "# [systeminfo](https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/systeminfo)\n\n## Examples\n\n[Using Command Prompt or PowerShell](https://learn.microsoft.com/en-us/windows/client-management/client-tools/windows-version-search)\n\n```batch\nsysteminfo | findstr /B /C:\"OS Name\" /B /C:\"OS Version\"\n```\n\n```batch\nC:\\Users\\adminuser>systeminfo | findstr /B /C:\"OS Name\" /B /C:\"OS Version\"\nOS Name:                   Microsoft Windows Server 2022 Datacenter Azure Edition\nOS Version:                10.0.20348 N/A Build 20348\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_windows/taskset_commands_windows_os_and_concepts/task_002_dir/ReadMe.md",
    "content": "# [dir](https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/dir)\n\n## Examples\n\n```batch\ndir\n```\n\n```batch\nC:\\Users\\adminuser\\Downloads>dir\n...\n07/07/2024  03:02 PM    <DIR>          .\n07/07/2024  02:14 PM    <DIR>          ..\n07/07/2024  02:52 PM    <DIR>          node\n07/07/2024  02:24 PM        29,463,958 node-v20.15.0-win-x64.zip\n...\nC:\\Users\\adminuser\\Downloads>\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_windows/taskset_commands_windows_os_and_concepts/task_003_findstr/ReadMe.md",
    "content": "# [findstr](https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/findstr)\n\n## Examples\n\nRun the following in cmd `Download` folder to find a file with `.zip` extension\n\n```batch\ndir | findstr \".zip\n```\n\nOutput\n\n```batch\nC:\\Users\\adminuser\\Downloads>dir | findstr \".zip\"\n07/07/2024  02:24 PM        29,463,958 node-v20.15.0-win-x64.zip\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_windows/taskset_commands_windows_os_and_concepts/task_004_del/ReadMe.md",
    "content": "# [del](https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/del)\n\n## Examples\n\nRun the following in cmd `Download` folder to delete a file `node-v20.15.0-win-x64.zip`\n\n```batch\ndel node-v20.15.0-win-x64.zip\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_windows/taskset_commands_windows_os_and_concepts/task_005_rmdir/ReadMe.md",
    "content": "# [rmdir](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/rmdir)\n\n## Examples\n\nRun the following in cmd `Download` folder to delete a folder `node`\n\n- `/s` - Removes all directories and files in the specified directory in addition to the directory itself. Used to remove a directory tree.\n- `/q` - Quiet mode, do not ask if you want to remove a directory tree with /s.\n\n```batch\nrmdir /s /q C:\\Users\\adminuser\\Downloads\\node\n```\n"
  },
  {
    "path": "home/os_and_concepts/commands_windows/taskset_commands_windows_os_and_concepts/task_006_echo/ReadMe.md",
    "content": "# [echo](https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/echo)\n\n- [echo](#echo)\n  - [Examples](#examples)\n    - [echo string](#echo-string)\n    - [echo PATH environment variable](#echo-path-environment-variable)\n\n## Examples\n\n### echo string\n\nRun the following in cmd to print a message\n\n```batch\necho Hello World\n```\n\nOutput\n\n```batch\nHello World\n```\n\n### echo PATH environment variable\n\nRun the following to print the PATH environment variable\n\n```batch\necho %PATH%\n```\n\n"
  },
  {
    "path": "home/os_and_concepts/commands_windows/taskset_commands_windows_os_and_concepts/task_007_setx/ReadMe.md",
    "content": "# [setx](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/setx)\n\n- [setx](#setx)\n  - [Examples](#examples)\n    - [Append a directory to the PATH environment variable](#append-a-directory-to-the-path-environment-variable)\n\n## Examples\n\n### Append a directory to the PATH environment variable \n\nRun the following in cmd to set the PATH environment variable to include `C:\\Users\\adminuser\\Downloads\\node-v20.15.0-win-x64`\n\n- `/M` - Set the variable in the system environment.\n\n```batch\nsetx /M PATH \"%PATH%;C:\\Users\\adminuser\\Downloads\\node-v20.15.0-win-x64\"\n```\n"
  },
  {
    "path": "home/os_and_concepts/concepts_linux/ReadMe.md",
    "content": "# taskset_concepts_linux_os_and_concepts\n\n> [Auto](https://github.com/codeaprendiz/learn_fullstack/blob/main/home/php/intermediate/taskset_intermediate_php/task_004_createGlobalMarkdownTable/generate-readme.php) generated ReadMe. Number of tasks: 14\n\n| Task     | Description                                                                                                           |\n|----------|-----------------------------------------------------------------------------------------------------------------------|\n| task_001 | [task_001_etc_os_release_file](taskset_concepts_linux_os_and_concepts/task_001_etc_os_release_file)                   |\n| task_002 | [task_002_etc_passwd](taskset_concepts_linux_os_and_concepts/task_002_etc_passwd)                                     |\n| task_003 | [task_003_etc_group](taskset_concepts_linux_os_and_concepts/task_003_etc_group)                                       |\n| task_003 | [task_003_etc_sudoers](taskset_concepts_linux_os_and_concepts/task_003_etc_sudoers)                                   |\n| task_004 | [task_004_etc_hosts](taskset_concepts_linux_os_and_concepts/task_004_etc_hosts)                                       |\n| task_005 | [task_005_etc_resolv.conf](taskset_concepts_linux_os_and_concepts/task_005_etc_resolv.conf)                           |\n| task_006 | [task_006_proc_sys_net_ipv4_ip_forward](taskset_concepts_linux_os_and_concepts/task_006_proc_sys_net_ipv4_ip_forward) |\n| task_007 | [task_007_etc_sysctl.conf](taskset_concepts_linux_os_and_concepts/task_007_etc_sysctl.conf)                           |\n| task_008 | [task_008_special_variables](taskset_concepts_linux_os_and_concepts/task_008_special_variables)                       |\n| task_009 | [task_009_etc_fstab](taskset_concepts_linux_os_and_concepts/task_009_etc_fstab)                                       |\n| task_010 | [task_010_shebang_character](taskset_concepts_linux_os_and_concepts/task_010_shebang_character)                       |\n| task_011 | [task_011_redirection](taskset_concepts_linux_os_and_concepts/task_011_redirection)                                   |\n| task_012 | [task_012_eof_here_doc](taskset_concepts_linux_os_and_concepts/task_012_eof_here_doc)                                 |\n| task_013 | [task_013_referring_documentation](taskset_concepts_linux_os_and_concepts/task_013_referring_documentation)           |\n"
  },
  {
    "path": "home/os_and_concepts/concepts_linux/taskset_concepts_linux_os_and_concepts/task_001_etc_os_release_file/ReadMe.md",
    "content": "# /etc/os-release\n\nTo get the os-information of the system, we can use the `/etc/os-release` file.\n\n```bash\n$ cat /etc/os-release\nPRETTY_NAME=\"Ubuntu 22.04.1 LTS\"\nNAME=\"Ubuntu\"\nVERSION_ID=\"22.04\"\nVERSION=\"22.04.1 LTS (Jammy Jellyfish)\"\n```\n"
  },
  {
    "path": "home/os_and_concepts/concepts_linux/taskset_concepts_linux_os_and_concepts/task_002_etc_passwd/ReadMe.md",
    "content": "# /etc/passwd\n\n## Information about the user-id\n\n```bash\n# cat /etc/passwd\n$ cat /etc/passwd\nroot:x:0:0:root:/root:/bin/bash\ndaemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin\nbin:x:2:2:bin:/bin:/usr/sbin/nologin\n..\nubuntu:x:1000:1000:Ubuntu:/home/ubuntu:/bin/bash\nlxd:x:999:100::/var/snap/lxd/common/lxd:/bin/false\n```\n"
  },
  {
    "path": "home/os_and_concepts/concepts_linux/taskset_concepts_linux_os_and_concepts/task_003_etc_group/ReadMe.md",
    "content": "# /etc/group\n\n## Group information\n\n```bash\n$ cat /etc/group\nroot:x:0:\ndaemon:x:1:\n.\n.\nubuntu:x:1000:\n#\n```\n"
  },
  {
    "path": "home/os_and_concepts/concepts_linux/taskset_concepts_linux_os_and_concepts/task_003_etc_sudoers/ReadMe.md",
    "content": "# /etc/sudoers\n\n## Get the default configuration for sudo\n\n> %admin ALL=(ALL) ALL\n\n- Groups beging with `%` symbol\n- First ALL signifies the host where the user can do priviledge excalation\n- Second `(ALL)` indicates that all users can be used to run the command\n- Third All indicates the command that can be run. All Indicates any command without restrictions.\n\n```bash\n$ sudo cat /etc/sudoers | grep -v \"#\"\nDefaults\tenv_reset\nDefaults\tmail_badpass\nDefaults\tsecure_path=\"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin\"\nDefaults\tuse_pty\nroot\tALL=(ALL:ALL) ALL\n%admin ALL=(ALL) ALL\n%sudo\tALL=(ALL:ALL) ALL\n@includedir /etc/sudoers.d\n```\n"
  },
  {
    "path": "home/os_and_concepts/concepts_linux/taskset_concepts_linux_os_and_concepts/task_004_etc_hosts/ReadMe.md",
    "content": "# /etc/hosts\n\n## /etc/hosts file\n\nThe computer file hosts is an operating system file that maps hostnames to IP addresses. It is a plain text file. Originally a file named HOSTS.TXT was manually maintained and made available via file sharing by Stanford Research Institute for the ARPANET membership, containing the hostnames and address of hosts as contributed for inclusion by member organizations. The Domain Name System, first described in 1983 and implemented in 1984, automated the publication process and provided instantaneous and dynamic hostname resolution in the rapidly growing network. In modern operating systems, the hosts file remains an alternative name resolution mechanism, configurable often as part of facilities such as the Name Service Switch as either the primary method or as a fallback method.\n\nPURPOSE\n\nThe hosts file is one of several system facilities that assists in addressing network nodes in a computer network. It is a common part of an operating system's Internet Protocol (IP) implementation, and serves the function of translating human-friendly hostnames into numeric protocol addresses, called IP addresses, that identify and locate a host in an IP network.\n\nIn some operating systems, the contents of the hosts file is used preferentially to other name resolution methods, such as the Domain Name System (DNS), but many systems implement name service switches, e.g., nsswitch.conf for Linux and Unix, to provide customization. Unlike remote DNS resolvers, the hosts file is under the direct control of the local computer's administrator.\n\nFILE CONTENT\n\nThe hosts file contains lines of text consisting of an IP address in the first text field followed by one or more host names. Each field is separated by white space – tabs are often preferred for historical reasons, but spaces are also used. Comment lines may be included; they are indicated by an octothorpe (#) in the first position of such lines. Entirely blank lines in the file are ignored. For example, a typical hosts file may contain the following:\n\n```bash\n127.0.0.1  localhost loopback\n::1        localhost\n```\n\nThis example only contains entries for the loopback addresses of the system and their host names, a typical default content of the hosts file. The example illustrates that an IP address may have multiple host names (localhost and loopback), and that a host name may be mapped to both IPv4 and IPv6 IP addresses, as shown on the first and second lines respectively.\nYour browser you go to this 172.16.104.21  IP address first to get the response.\n\n```bash\n##\n# Host Database\n#\n# localhost is used to configure the loopback interface\n# when the system is booting.  Do not change this entry.\n##\n127.0.0.1 localhost\n255.255.255.255 broadcasthost\n::1             localhost\n172.16.104.21   test.oms.qa.domain.com\n```\n"
  },
  {
    "path": "home/os_and_concepts/concepts_linux/taskset_concepts_linux_os_and_concepts/task_005_etc_resolv.conf/ReadMe.md",
    "content": "# /etc/resolv.conf\n\n## /etc/resolv.conf file\n\nPath on mac : /etc/resolv.conf\n\nEach entry can be called as additional search domain.\n\nresolv.conf is the name of a computer file used in various operating systems to configure the system's Domain Name System (DNS) resolver. The file is a plain-text file usually created by the network administrator or by applications that manage the configuration tasks of the system. The resolvconf program is one such program on FreeBSD or other Unix machines which manages the resolv.conf file.\n\nPURPOSE\n\nIn most Unix-like operating systems and others that implement the BIND Domain Name System (DNS) resolver library, the resolv.conf configuration file contains information that determines the operational parameters of the DNS resolver. The DNS resolver allows applications running in the operating system to translate human-friendly domain names into the numeric IP addresses that are required for access to resources on the local area network or the Internet. The process of determining IP addresses from domain names is called resolving.\n\nCONTENTS AND LOCATION\n\nThe file resolv.conf typically contains directives that specify the default search domains; used for completing a given query name to a fully qualified domain name when no domain suffix is supplied. It also contains a list of IP addresses of nameservers available for resolution. An example file is:\n\n```bash\nsearch example.com local.lan\nnameserver 127.0.0.1\nnameserver 172.16.1.254\nnameserver 172.16.2.254\n```\n\nHere `search` says if I try to run the following command\n\n```bash\nping web\n```\n\n- Then it would try to looks for `web.example.com` first and then `web.local.lan` and so forth\n\nresolv.conf is usually located in the /etc directory of the file system. The file is either maintained manually, or when DHCP is used, it is usually updated with the utility resolvconf."
  },
  {
    "path": "home/os_and_concepts/concepts_linux/taskset_concepts_linux_os_and_concepts/task_006_proc_sys_net_ipv4_ip_forward/ReadMe.md",
    "content": "# ip_forward\n\n## /proc/sys/net/ipv4/ip_forward\n\n- if IP forwarding is enabled on a host\n  - 1 indicates Yes\n  - 0 indicates No\n\n```bash\n$ cat /proc/sys/net/ipv4/ip_forward\n0\n\n$ echo 1 > /proc/sys/net/ipv4/ip_forward\n```\n"
  },
  {
    "path": "home/os_and_concepts/concepts_linux/taskset_concepts_linux_os_and_concepts/task_007_etc_sysctl.conf/ReadMe.md",
    "content": "# sysctl.conf\n\n## /etc/sysctl.conf\n\n[sysctl.conf](https://man7.org/linux/man-pages/man5/sysctl.conf.5.html)\n\nEnable packet forwarding for IPv4.\n\n```bash\n$ cat /etc/sysctl.conf\n\n# Uncomment the line\nnet.ipv4.ip_forward=1\n```"
  },
  {
    "path": "home/os_and_concepts/concepts_linux/taskset_concepts_linux_os_and_concepts/task_008_special_variables/ReadMe.md",
    "content": "# Special Variables in Shell Scripts\n\n## Special Variables\n\nThe following table shows a number of special variables that you can use in your shell scripts:\n\n| Variable | Description                                                                                                                                                                                                                                 |\n|----------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `$0`     | The filename of the current script                                                                                                                                                                                                          |\n| `$n`     | These variables correspond to the arguments with which a script was invoked. Here n is a positive decimal number corresponding to the position of an argument (the first argument is $1, the second argument is $2, and so on).             |\n| `$#`     | The number of arguments supplied to a script                                                                                                                                                                                                |\n| `$*`     | All the arguments are double quoted. If a script receives two arguments, `$*` is equivalent to `$1 $2`                                                                                                                                      |\n| `$@`     | All the arguments are individually double quoted. If a script receives two arguments, `$@` is equivalent to `$1 $2`                                                                                                                         |\n| `$?`     | The exit status of the last command executed. Exit status is a numerical value returned by every command upon its completion. As a rule, most commands return an exit status of 0 if they were successful, and 1 if they were unsuccessful. |\n| `$$`     | The process number of the current shell. For shell scripts, this is the process ID under which they are executing.                                                                                                                          |\n| `$!`     | The process ID of the last background command executed.                                                                                                                                                                                     |\n| `$1`     | The first argument to the shell script                                                                                                                                                                                                      |\n| `$2`     | The second argument to the shell script                                                                                                                                                                                                     |\n\n### Command line Arguments\n\nThe command-line arguments $1, $2, $3, ...$9 are positional parameters, with $0 pointing to the actual command, program, shell script, or function and $1, $2, $3, ...$9 as the arguments to the command.\n\nFollowing script uses various special variables related to the command line −\n\n```bash\n#!/bin/sh\necho \"File Name: $0\"\necho \"First Parameter : $1\"\necho \"Second Parameter : $2\"\necho \"Quoted Values: $@\"\necho \"Quoted Values: $*\"\necho \"Total Number of Parameters : $#\"\n```\n\nHere is the output of the following script\n\n```bash\n$./test.sh Zara Ali\nFile Name : ./test.sh\nFirst Parameter : Zara\nSecond Parameter : Ali\nQuoted Values: Zara Ali\nQuoted Values: Zara Ali\nTotal Number of Parameters : 2\n```\n"
  },
  {
    "path": "home/os_and_concepts/concepts_linux/taskset_concepts_linux_os_and_concepts/task_009_etc_fstab/ReadMe.md",
    "content": "# /etc/fstab\n\n## /etc/fstab file\n\n[http://www.linfo.org/etc_fstab.html](http://www.linfo.org/etc_fstab.html)\n\nfstab is a system configuration file on Linux and other Unix-like operating systems that contains information about major filesystems on the system. It takes its name from file systems table, and it is located in the /etc directory.\n\n/etc/fstab can be safely viewed by using the cat command (which is used to read text files) as follows:\n\n```bash\n#\n# /etc/fstab\n# Created by anaconda on Mon Aug 14 20:57:26 2017\n#\n# Accessible filesystems, by reference, are maintained under '/dev/disk'\n# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info\n#\nUUID=784a2acb-e8a7-4485-a6f6-6c2333d013b1 /                       xfs defaults 0 0\n/dev/vdb /mnt auto defaults,nofail,comment=cloudconfig 0 2\ndfw-nfs3-vs10.prod.ankit.com:/stg_ankit_geo_01 /geo_camel_nfsshared/  nfs defaults 0 0\n```\n"
  },
  {
    "path": "home/os_and_concepts/concepts_linux/taskset_concepts_linux_os_and_concepts/task_010_shebang_character/ReadMe.md",
    "content": "# Shebang character\n\n## #! /Shebang character\n\nIn computing, a shebang is the character sequence consisting of the characters number sign and exclamation mark (#!) at the beginning of a script.\n\nIn Unix-like operating systems, when a text file with a shebang is used as if it is an executable, the program loader parses the rest of the file's initial line as an interpreter directive; the specified interpreter program is executed, passing to it as an argument the path that was initially used when attempting to run the script,[8] so that the program may use the file as input data. For example, if a script is named with the path path/to/script, and it starts with the following line, #!/bin/sh, then the program loader is instructed to run the program /bin/sh, passing path/to/script as the first argument\n\nSYNTAX\n\nThe form of a shebang interpreter directive is as follows:\n\n> \\#!interpreter [optional-arg]\n\n- in which interpreter is an absolute path to an executable program. The optional argument is a string representing a single argument. White space after #! is optional. In Linux, the file specified by interpreter can be executed if it has the execute right and contains code which the kernel can execute directly, if it has a wrapper defined for it via sysctl (such as for executing Microsoft EXE binaries using wine), or if it contains a shebang.\n- Some other example shebangs are:\n\n```bash\n#!/bin/sh — Execute the file using sh, the Bourne shell, or a compatible shell \n#!/bin/csh — Execute the file using csh, the C shell, or a compatible shell \n#!/usr/bin/perl -T — Execute using Perl with the option for taint checks \n#!/usr/bin/php — Execute the file using the PHP command line interpreter \n#!/usr/bin/python -O — Execute using Python with optimizations to code \n#!/usr/bin/ruby — Execute using Ruby \n```"
  },
  {
    "path": "home/os_and_concepts/concepts_linux/taskset_concepts_linux_os_and_concepts/task_011_redirection/ReadMe.md",
    "content": "# **Redirection**\n\n- [**Redirection**](#redirection)\n  - [**output-redirection**](#output-redirection)\n  - [**input-redirection**](#input-redirection)\n  - [**dev-null-and-others-usually-used-in-redirection**](#dev-null-and-others-usually-used-in-redirection)\n    - [**\\>/dev/null 2\\>\\&1 meaning**](#devnull-21-meaning)\n    - [**\\>, 1\\>, 2\\> meaning**](#-1-2-meaning)\n    - [**3\\>\\&1 1\\>\\&2 2\\>\\&3 meaning**](#31-12-23-meaning)\n    - [**Difference between \\< and \\<\\< in shell command**](#difference-between--and--in-shell-command)\n    - [**Difference between single and double quotes in Bash ( \"\" and '')**](#difference-between-single-and-double-quotes-in-bash---and-)\n\n## **output-redirection**\n\nThe output from a command normally intended for standard output can be easily diverted to a file instead. This capability is known as output redirection.\n\nIf the notation > file is appended to any command that normally writes its output to standard output, the output of that command will be written to file instead of your terminal.\n\nCheck the following who command which redirects the complete output of the command in the users file.\n\n```bash\n$ who > users\n$ cat users\noko         tty01 Sep 12 07:30\nai          tty15 Sep 12 13:32\nruth        tty21 Sep 12 10:10\npat         tty24 Sep 12 13:07\nsteve       tty25 Sep 12 13:03\n$\n```\n\nIf a command has its output redirected to a file and the file already contains some data, that data will be lost.\n\nYou can use >> operator to append the output in an existing file\n\n## **input-redirection**\n\nThe commands that normally take their input from the standard input can have their input redirected from a file in this manner. For example, to count the number of lines in the file users generated above, you can execute the command as follows −\n\n```bash\n$ wc -l users\n2 users\n$\n```\n\nUpon execution, you will receive the following output. You can count the number of lines in the file by redirecting the standard input of the wc command from the file users −\n\n```bash\n$ wc -l < users\n2\n$\n```\n\nIn the first case, wc knows that it is reading its input from the file users. In the second case, it only knows that it is reading its input from standard input so it does not display file name.\n\n## **dev-null-and-others-usually-used-in-redirection**\n\n### **>/dev/null 2>&1 meaning**\n\n```bash\nx * * * * /path/to/my/script > /dev/null 2>&1\n```\n\n- \\> is for redirect\n- /dev/null is a black hole where any data sent, will be discarded\n- 2 is the file descriptor for Standard Error\n- \\> is for redirect\n- & is the symbol for file descriptor (without it, the following 1 would be considered a filename)\n- 1 is the file descriptor for Standard Out\n- Therefore >/dev/null 2>&1 is redirect the output of your program to /dev/null. Include both the Standard Error and Standard Out.\n\n### **>, 1>, 2> meaning**\n\nThe > operator redirects the output usually to a file but it can be to a device. You can also use >> to append.\n\nIf you don't specify a number then the standard output stream is assumed but you can also redirect errors\n\n- \\> file redirects stdout to file\n- 1> file redirects stdout to file\n- 2> file redirects stderr to file\n- &> file redirects stdout and stderr to file\n\n/dev/null is the null device it takes any input you want and throws it away. It can be used to suppress any output.\n\n### **3>&1 1>&2 2>&3 meaning**\n\n\\>name means redirect output to file name.\n\n\\>&number means redirect output to file descriptor number.\n\nThe numbers are file descriptors and only the first three (starting with zero) have a standardized meaning:\n\n- 0 - stdin\n- 1 - stdout\n- 2 - stderr\n\nSo each of these numbers in your command refer to a file descriptor. You can either redirect a file descriptor to a file with > or redirect it to another file descriptor with >&\n\nThe 3>&1 in your command line will create a new file descriptor and redirect it to 1 which is STDOUT. Now 1>&2 will redirect the file descriptor 1 to STDERR and 2>&3 will redirect file descriptor 2 to 3 which is STDOUT.\n\nSo basically you switched STDOUT and STDERR, these are the steps:\n\n- Create a new fd 3 and point it to the fd 1\n- Redirect file descriptor 1 to file descriptor 2. If we wouldn't have saved the file descriptor in 3 we would lose the target.\n- Redirect file descriptor 2 to file descriptor 3. Now file descriptors one and two are switched.\n\nNow if the program prints something to the file descriptor 1, it will be printed to the file descriptor 2 and vice versa.\n\n### **Difference between < and << in shell command**\n\n\\> is used to write to a file and >> is used to append to a file.\n\nThus, when you use ps aux > file, the output of ps aux will be written to file and if a file named file was already present, its contents will be overwritten.\n\nAnd if you use ps aux >> file, the output of ps aux will be written to file and if the file named file was already present, the file will now contain its previous contents and also the contents of ps aux, written after its older contents of file.\n\n### **Difference between single and double quotes in Bash ( \"\" and '')**\n\nSingle quotes won't interpolate anything, but double quotes will. For example: variables, backticks, certain \\ escapes, etc\n\nThe Bash manual has this to say:\n\nSINGLE QUOTES\n\n- Enclosing characters in single quotes (') preserves the literal value of each character within the quotes. A single quote may not occur between single quotes, even when preceded by a backslash.\n\nDOUBLE QUOTES\n\n- Enclosing characters in double quotes (\") preserves the literal value of all characters within the quotes, with the exception of $, `, \\, and, when history expansion is enabled, !. The characters $ and ` retain their special meaning within double quotes (see Shell Expansions). The backslash retains its special meaning only when followed by one of the following characters: $, `, \", \\, or newline. Within double quotes, backslashes that are followed by one of these characters are removed. Backslashes preceding characters without a special meaning are left unmodified. A double quote may be quoted within double quotes by preceding it with a backslash. If enabled, history expansion will be performed unless an ! appearing in double quotes is escaped using a backslash. The backslash preceding the ! is not removed. The special parameters * and @ have special meaning when in double quotes\n"
  },
  {
    "path": "home/os_and_concepts/concepts_linux/taskset_concepts_linux_os_and_concepts/task_012_eof_here_doc/ReadMe.md",
    "content": "\n# eof-here-doc\n\n## eof-here-document\n\nA here document is used to redirect input into an interactive shell script or program.\n\nWe can run an interactive program within a shell script without user action by supplying the required input for the interactive program, or interactive shell script.\n\nThe general form for a here document is −\n\n```bash\ncommand << delimiter\ndocument\ndelimiter\n```\n\nHere the shell interprets the << operator as an instruction to read input until it finds a line containing the specified delimiter. All the input lines up to the line containing the delimiter are then fed into the standard input of the command.\n\nThe delimiter tells the shell that the here document has completed. Without it, the shell continues to read the input forever. The delimiter must be a single word that does not contain spaces or tabs.\n\nFollowing is the input to the command wc -l to count the total number of lines −\n\n```bash\n$wc -l << EOF\n   This is a simple lookup program \nfor good (and bad) restaurants\nin Cape Town.\nEOF\n3\n$\n```\n\n## multi-line-here-document\n\n[Multiline syntax for piping a heredoc](https://stackoverflow.com/questions/7046381/multiline-syntax-for-piping-a-heredoc-is-this-portable)\n\n```bash\ncat << EOF | grep \"apple\"\nbanana\napple\norange\nEOF\n```\n\nOutput\n\n```bash\napple\n```\n"
  },
  {
    "path": "home/os_and_concepts/concepts_linux/taskset_concepts_linux_os_and_concepts/task_013_referring_documentation/ReadMe.md",
    "content": "# How to use the documentation\n\n## Use the --help flag\n\n```$ ls --help\nUsage: ls [OPTION]... [FILE]...\nList information about the FILEs (the current directory by default).\n.\n.\n```\n\n## Refer the man page\n\n```bash\n$ man ls --no-pager\n```\n\n\n## apropos\n\n\n- To find commands related to `directory`\n\n```bash\n# https://superuser.com/questions/346703/linux-apropos-command-always-returns-nothing-appropriate\n\n$ sudo mandb\n\n$ apropos directory\nbasename (1)         - strip directory and suffix from filenames\nbindtextdomain (3)   - set directory containing message catalogs\nchroot (8)           - run command or interactive shell with special root directory\ndbus-cleanup-sockets (1) - clean up leftover sockets in a directory\ndepmod.d (5)         - Configuration directory for depmod\ndir (1)              - list directory contents\nfinalrd (1)          - final runtime directory generator for shutdown\nfind (1)             - search for files in a directory hierarchy\ngit-clone (1)        - Clone a repository into a new directory\ngit-mv (1)           - Move or rename a file, a directory, or a symlink\ngit-stash (1)        - Stash the changes in a dirty working directory away\ngrub-macbless (8)    - bless a mac file/directory\ngrub-mknetdir (1)    - prepare a GRUB netboot directory.\nhelpztags (1)        - generate the help tags file for directory\nls (1)               - list directory contents\nmklost+found (8)     - create a lost+found directory on a mounted Linux second extended file system\nmktemp (1)           - create a temporary file or directory\nmodprobe.d (5)       - Configuration directory for modprobe\nmountpoint (1)       - see if a directory or file is a mountpoint\nntfsls (8)           - list directory contents on an NTFS filesystem\npam_mkhomedir (8)    - PAM module to create users home directory\npwd (1)              - print name of current/working directory\npwdx (1)             - report current working directory of a process\nreaddir (3am)        - directory input parser for gawk\nrun-parts (8)        - run scripts or programs in a directory\nupdate-info-dir (8)  - update or create index file from all installed info files in directory\nvdir (1)             - list directory contents\n```\n\n- To find `config` file for `sudo-ldap`\n\n```bash\n$ apropos \"sudo-ldap\"\nsudo-ldap.conf (5)   - sudo LDAP configuration\n```"
  },
  {
    "path": "home/productivity_tools/ReadMe-static.md",
    "content": "# Productivity Tools\n\n## Developer Experience\n\n- [Setting up you mac terminal](task-000-setting-up-terminal)\n- [Setting up IDE Microsoft Visual Studio for Python](task-004-setting-up-visual-studio-python)\n- [mac book pro productivity](https://medium.com/adventures-in-consumer-technology/3-keyboard-shortcuts-i-wish-i-learned-long-ago-385d7f73e822)\n- [Creating email signatures](https://webapp.wisestamp.com/editor)\n\n### Tools that you should have knowledge about\n\n- [Apache Kafka](https://kafka.apache.org/documentation/)\n\n\n## Infra Architecture Diagrams\n\n[https://online.visual-paradigm.com/](https://online.visual-paradigm.com/)\n[https://www.edrawmax.com/](https://www.edrawmax.com/)\n[https://sketchboard.me/](https://sketchboard.me/)\n\n## Blogs\n\n- [kafka-lag-monitoring-and-metrics-at-appsflyer](https://www.confluent.io/blog/kafka-lag-monitoring-and-metrics-at-appsflyer)\n- [kubernetes-networking-guide-beginners.html](https://matthewpalmer.net/kubernetes-app-developer/articles/kubernetes-networking-guide-beginners.html)\n- [10-best-practices-to-containerize-nodejs-web-applications-with-docker](https://snyk.io/blog/10-best-practices-to-containerize-nodejs-web-applications-with-docker/)\n- [enterprise-ci-cd-best-practices-part-1](https://codefresh.io/devops/enterprise-ci-cd-best-practices-part-1/)\n- [Progressive Delivery](https://harness.io/blog/progressive-delivery)\n"
  },
  {
    "path": "home/productivity_tools/ReadMe.md",
    "content": "# taskset_productivity_tools\n\n> [Auto](https://github.com/codeaprendiz/learn_fullstack/blob/main/home/php/intermediate/taskset_intermediate_php/task_004_createGlobalMarkdownTable/generate-readme.php) generated ReadMe. Number of tasks: 6\n\n| Task     | Description                                                                                                     |\n|----------|-----------------------------------------------------------------------------------------------------------------|\n| task_000 | [task_000_setting_up_terminal](taskset_productivity_tools/task_000_setting_up_terminal)                         |\n| task_001 | [task_001_visualizing_subnets_in_vpc](taskset_productivity_tools/task_001_visualizing_subnets_in_vpc)           |\n| task_002 | [task_002_visualizing_k8s_using_dashboard](taskset_productivity_tools/task_002_visualizing_k8s_using_dashboard) |\n| task_003 | [task_003_if_IP_belongs_to_CIDR](taskset_productivity_tools/task_003_if_IP_belongs_to_CIDR)                     |\n| task_004 | [task_004_virtual_box](taskset_productivity_tools/task_004_virtual_box)                                         |\n| task_005 | [task_005_productivity_shortcuts](taskset_productivity_tools/task_005_productivity_shortcuts)                   |\n"
  },
  {
    "path": "home/productivity_tools/taskset_productivity_tools/task_000_setting_up_terminal/ReadMe.md",
    "content": "# Setting up your mac terminal\n\n- Install [iterm2](https://iterm2.com)\n\n- [Install ZSH](https://github.com/ohmyzsh/ohmyzsh)\n- Run\n\n```bash\n$ sh -c \"$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)\"\n.\n$ echo $ZSH_CUSTOM\n/Users/<yourusername>/.oh-my-zsh/custom\n$ ls /Users/<yourusername>/.oh-my-zsh/custom\nexample.zsh plugins     themes\n```\n\n- [Install Powerline fonts](https://github.com/powerline/fonts)\n- Run\n\n```bash\ngit clone https://github.com/romkatv/powerlevel10k.git $ZSH_CUSTOM/themes/powerlevel10k\n```\n\n- [Set Theme to powerline10k](https://github.com/romkatv/powerlevel10k#manual)\n- Once you do this you will have to restart `iTerm2` by pressing `CMD+Q`\n\n```bash\n╰─ cat ~/.zshrc | grep -i ZSH_THEME=\n# ZSH_THEME=\"gnzh\"\nZSH_THEME=\"powerlevel10k/powerlevel10k\"\n# Now restart your terminal\n```\n\n- Once you restart you should get prompt to customization of your powerline fonts to reach following state\n\n![img.png](.images/powerline10k-zsh.png)\n\n- Now install some plugins\n\n```bash\n# download syntax highlighting extension\n$ git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting\n.\n\n# install autocompletions extension\ngit clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions\n.\n# once you have downloaded all the plugins, you can activate them in .zshrc by updating plugins like follows\n$ cat ~/.zshrc | grep \"plugins=\"\n# Example format: plugins=(rails git textmate ruby lighthouse)\nplugins=(git zsh-syntax-highlighting zsh-autosuggestions)\n```\n\n## NPM packages\n\n```bash\n# For pdf generation of ReadMe.md\nnpm install -g markdown-pdf\n```\n\n```bash\n# For table formatting in ReadMe.md\nnpm install -g markdown-table-formatter\n```\n"
  },
  {
    "path": "home/productivity_tools/taskset_productivity_tools/task_001_visualizing_subnets_in_vpc/ReadMe.md",
    "content": "### Visualizing Subnets in VPC\n\n[subnet-builder](https://tidalmigrations.com/subnet-builder/)\n\nIf the VPC CIDR is 10.0.0.0/24\n\n> Note: The blank white space signifies where new subnets can still be created.\n\n![img](./.images/subnet-builder.png)\n\n\n\n### You can also use the following subnet creator \n\n[IPv4SubnetCreator](https://network00.com/NetworkTools/IPv4SubnetCreator/)\n\n"
  },
  {
    "path": "home/productivity_tools/taskset_productivity_tools/task_002_visualizing_k8s_using_dashboard/ReadMe.md",
    "content": "\n- You can use [lens](https://k8slens.dev/)\n\n![img](./.images/lens-dashboard-secreenshot.png)\n\n- You can also use [octant](https://github.com/vmware-tanzu/octant)\n\n```bash\n# mac os\nbrew install octant\n```\n![img](./.images/octant-k8s-dashboard.png)\n"
  },
  {
    "path": "home/productivity_tools/taskset_productivity_tools/task_003_if_IP_belongs_to_CIDR/ReadMe.md",
    "content": "To check if the IP address belongs to given CIDR range\n\n[Link](https://tehnoblog.org/ip-tools/ip-address-in-cidr-range/)\n\n![img](./.images/if_ip_in_CIDR.png)\n\n\n\nYou can check in [Python](https://stackoverflow.com/questions/39358869/check-if-an-ip-is-within-a-range-of-cidr-in-python) as well\n\n```bash\n>>> from ipaddress import ip_network, ip_address\n>>> net = ip_network(\"1.1.0.0/16\")\n>>> print(ip_address(\"1.1.2.2\") in net) \nTrue\n```"
  },
  {
    "path": "home/productivity_tools/taskset_productivity_tools/task_004_virtual_box/ReadMe.md",
    "content": "\n# Virtualization Tools\n\n## Virtual Box\n\n- [Download Virtual Box](https://www.virtualbox.org/wiki/Downloads)\n\n```bash\n$ VBoxManage --version\n6.1.18r142142\n```\n\n- You might use `vagrant` along with this\n\n```bash\n$ vagrant --version \nVagrant 2.2.14\n\n```\n\n## Running only ubuntu server locally\n\n- [multipass](https://github.com/canonical/multipass)\n"
  },
  {
    "path": "home/productivity_tools/taskset_productivity_tools/task_005_productivity_shortcuts/ReadMe-bkp.md",
    "content": "# Keyboard shortcuts frequently used\n\n## MAC Shortcuts\n\n- Make the bottom icons on Desktop toggle\n\n```bash\n## Ensure that you have clicked on the empty are on desktop\n CMD+OPTIONS+D\n```\n\n- Switch between different apps in one desktop\n\n```bash\n## You can arrow keys left and right for faster navigation\nCMD+TAB \n```\n\n- Switch between different windows of the same app (say two window of chrome) in one desktop\n\n```bash\n## Tilde is the key on left side of 1 with ~ printed on top ` below\nCMD+TILDE\n```\n\n- Open Home in Finder\n\n```bash\nCMD+SHIFT+H\n```\n\n- Toggle Finder hidden files and folder\n\n```bash\nCMD+SHIFT+.\n```\n\n- To print character `»`\n\n```bash\nOPTION + SHIFT + \\\n```\n\n- New folder via right click\n\n```bash\nFUNCTION + SHIFT + F10\n```\n\n## Chrome Shortcuts\n\n[support.google.com/chrome/answer/157179](https://support.google.com/chrome/answer/157179)\n\n- New Tab\n\n```bash\nCMD+T\n```\n\n- Navigate between tabs\n\n```bash\nCMD + OPTION + LEFT/RIGHT\n# OR\nCMD + SHIFT + [\n```\n\n- Go to the address bar\n\n```bash\nCMD+L\n```\n\n- Open the last closed tab\n\n```bash\nCMD+SHIFT+T\n```\n\n- Go to search bar using `/`\n\n- Go to previous page using\n\n```bash\nCMD + \n```\n\n## VS Code (Mac)\n\n- Open terminal\n\n```bash\nCNTR + ~\n```\n\n- Open new terminal\n\n```bash\nCNTR + SHIFT + ~\n```\n\n- Command Pellete\n\n```bash\nCMD + SHIFT + P\n```\n\n- Open recently used files\n\n```bash\nCMD + P\n```\n\n- Navigate between terminals (once you are in one terminal)\n\n```bash\nCMD + SHIFT + [\n```\n\n- Open first opened file in editor\n\n```bash\nCMD + 1\n```\n\n- Navigate between files (once you are in any one file)\n\n```bash\nCMD + SHIFT + [\n```\n\n- Hide the sidebar containing the directories (you should be in terminal)\n\n```bash\n# While editing a file the following combination actually producess ****\nCMD + B\n\n## If you want to do it while editing a file, open command pellete and type Toggle Primary Sidebar Visibility\n```\n\n- To close only the current VS code window\n\n```bash\nCMD + SHIFT + W\n```\n\n- To toggle VS code between full screen and previous screen configuration\n\n```bash\nCNTR + CMD + F\n```\n\n- To open the ReadMe mode file in VS code\n\n```bash\nCMD + SHIFT + V\n```\n\n- To close a file\n\n```bash\nCMD + W\n```\n\n- If you want to select all occurrences of the same word or character across the entire file in the editor, you can use the following shortcut\n\n```bash\nCMD + SHIFT + L\n```\n\n- If you wish to add the next occurrence of a word or character to your selection\n\n```bash\nCMD + D\n```\n\n### Side Panel Shortcuts\n\n- To open the sidebar `Explorer`, you should be in terminal\n\n```bash\nCMD + SHIFT + E\n## OR\nCMD + 0\n```\n\n- To open `Source Control`\n\n```bash\nCNTR + SHIFT + G\n```\n\n#### Navigate Folders (When in Explorer)\n\n- Folder navigation using `j` and `k`\n- Toggle open folder using `o`\n- Open file in currently open file using `o` and new file using `l`\n- Open all selected files at once in the editor\n\n```bash\n# Select all files\nSHIFT + DOWN_ARROR\n## Press\nSPACEBAR\n```\n\n- To open `Finder`\n\n```bash\nCMD + SHIFT + F\n```\n\n- To open `Search and Replace`\n\n```bash\nCMD + SHIFT + H\n```\n\n### Others\n\n- To toggle `Zen Mode` (You should be editing a file)\n\n```bash\nCMD+K (together) + Z\n```\n\n## Miro\n\n- To move the icon under\n\n```bash\nFunction + Down_arrow\n```\n\n- To select all icons you might want to move\n\n```bash\nSHIFT + hover mouse in the area\n```\n\n- To zoom in\n\n```bash\nCMD + +(Plus)\n```\n\n- To zoom out\n\n```bash\nCMD + -(minus)\n```\n\n- To enter edit more in text\n\n```bash\n# Ensure that the section (like table cell) is selected\nENTER\n```\n"
  },
  {
    "path": "home/productivity_tools/taskset_productivity_tools/task_005_productivity_shortcuts/ReadMe.md",
    "content": "# Keyboard shortcuts frequently used\n\n- [Keyboard shortcuts frequently used](#keyboard-shortcuts-frequently-used)\n  - [MAC Shortcuts](#mac-shortcuts)\n  - [Chrome Shortcuts](#chrome-shortcuts)\n  - [VS Code (Mac) Shortcuts](#vs-code-mac-shortcuts)\n    - [Side Panel Shortcuts](#side-panel-shortcuts)\n      - [Navigate Folders (When in Explorer)](#navigate-folders-when-in-explorer)\n    - [Other Shortcuts](#other-shortcuts)\n  - [Miro](#miro)\n\n## MAC Shortcuts\n\n| Action                                       | Shortcut                 | Notes                                                         |\n|----------------------------------------------|--------------------------|---------------------------------------------------------------|\n| Make the bottom icons on Desktop toggle      | `CMD+OPTIONS+D`          | Ensure that you have clicked on the empty area on the desktop |\n| Switch between different apps in one desktop | `CMD+TAB`                | You can use arrow keys left and right for faster navigation   |\n| Switch between windows of the same app       | `CMD+TILDE`              | Tilde key : `~`                                               |\n| Open Home in Finder                          | `CMD+SHIFT+H`            | -                                                             |\n| Toggle Finder hidden files and folder        | `CMD+SHIFT+.`            | -                                                             |\n| Print character `»`                          | `OPTION + SHIFT + \\`     | -                                                             |\n| New folder via right click                   | `FUNCTION + SHIFT + F10` | -                                                             |\n| Take a screenshot and copy to clipboard      | `CMD + CTRL + SHIFT + 4` | -                                                             |\n\n## Chrome Shortcuts\n\n[Chrome Keyboard Shortcuts Official Documentation](https://support.google.com/chrome/answer/157179)\n\n| Action                   | Shortcut                    | Notes                                   |\n|--------------------------|-----------------------------|-----------------------------------------|\n| New Tab                  | `CMD+T`                     | -                                       |\n| Navigate between tabs    | `CMD + OPTION + LEFT/RIGHT` | Alternate: `CMD + SHIFT + [`            |\n| Go to the address bar    | `CMD+L`                     | -                                       |\n| Open the last closed tab | `CMD+SHIFT+T`               | -                                       |\n| Go to search bar         | `/`                         | -                                       |\n| Go to previous page      | `CMD + ←`                   | Use the left arrow key with the command |\n\n## VS Code (Mac) Shortcuts\n\n| Action                                                                                | Shortcut           | Notes                                                                                       |\n|---------------------------------------------------------------------------------------|--------------------|---------------------------------------------------------------------------------------------|\n| Open terminal                                                                         | `CNTR + ~`         | -                                                                                           |\n| Open new terminal                                                                     | `CNTR + SHIFT + ~` | -                                                                                           |\n| Command Palette                                                                       | `CMD + SHIFT + P`  | -                                                                                           |\n| Open recently used files                                                              | `CMD + P`          | -                                                                                           |\n| Navigate between terminals                                                            | `CMD + SHIFT + [`  | Ensure you're in a terminal                                                                 |\n| Open first opened file in editor                                                      | `CMD + 1`          | -                                                                                           |\n| Navigate between files                                                                | `CMD + SHIFT + [`  | Ensure you're in a file                                                                     |\n| Hide the sidebar containing the directories                                           | `CMD + B`          | Note: Opens command palette to type \"Toggle Primary Sidebar Visibility\" when editing a file |\n| Close the current VS code window                                                      | `CMD + SHIFT + W`  | -                                                                                           |\n| Toggle VS code between full screen and previous configuration                         | `CNTR + CMD + F`   | -                                                                                           |\n| Open the ReadMe mode file in VS code                                                  | `CMD + SHIFT + V`  | -                                                                                           |\n| Close a file                                                                          | `CMD + W`          | -                                                                                           |\n| Select all occurrences of the same word or character across the entire file in editor | `CMD + SHIFT + L`  | -                                                                                           |\n| Add the next occurrence of a word or character to your selection                      | `CMD + D`          | -                                                                                           |\n| Toggle line wrap on any open file or integrated terminal                              | `OPTION + Z`       | -                                                                                           |\n| To open files with full name / partial name                                           | `CMD + P`          | -                                                                                           |\n\n### Side Panel Shortcuts\n\n| Action                                                | Shortcut           | Notes                |\n|-------------------------------------------------------|--------------------|----------------------|\n| Open the sidebar `Explorer`                           | `CMD + SHIFT + E`  | Alternate: `CMD + 0` |\n| Open `Source Control`                                 | `CNTR + SHIFT + G` | -                    |\n| Navigate with `j` and `k` and `l` to enter commit box | `j`, `k`, `l`      |                      |\n\n#### Navigate Folders (When in Explorer)\n\n| Action                                        | Shortcut             | Notes                           |\n|-----------------------------------------------|----------------------|---------------------------------|\n| Folder navigation                             | `j` and `k`          | -                               |\n| Toggle open folder                            | `o`                  | -                               |\n| Open file in currently open file or new file  | `o` and `l`          | -                               |\n| Open all selected files at once in the editor | `SHIFT + DOWN_ARROW` | Followed by pressing `SPACEBAR` |\n| Open `Finder`                                 | `CMD + SHIFT + F`    | -                               |\n| Open `Search and Replace`                     | `CMD + SHIFT + H`    | -                               |\n\n### Other Shortcuts\n\n| Action                                           | Shortcut         | Notes               |\n|--------------------------------------------------|------------------|---------------------|\n| Toggle `Zen Mode` (Ensure you're editing a file) | `CMD+K` then `Z` | Press keys together |\n\n## Miro\n\n| Action                        | Shortcut                          |\n|-------------------------------|-----------------------------------|\n| Move the icon down            | `Function + Down_arrow`           |\n| Select all icons for movement | `SHIFT + hover mouse in the area` |\n| Zoom in                       | `CMD + +`                         |\n| Zoom out                      | `CMD + -`                         |\n| Enter edit mode in text       | `ENTER (with section selected)`   |\n\n"
  },
  {
    "path": "home/security/trivy/ReadMe.md",
    "content": "# taskset_trivy_security\n\n> [Auto](https://github.com/codeaprendiz/learn_fullstack/blob/main/home/php/intermediate/taskset_intermediate_php/task_004_createGlobalMarkdownTable/generate-readme.php) generated ReadMe. Number of tasks: 1\n\n| Task     | Description                                             |\n|----------|---------------------------------------------------------|\n| task_001 | [task_001_scans](taskset_trivy_security/task_001_scans) |\n"
  },
  {
    "path": "home/security/trivy/taskset_trivy_security/task_001_scans/ReadMe.md",
    "content": "# Scans\n\n- [Scans](#scans)\n  - [Image Scan](#image-scan)\n  - [Filesystem scan](#filesystem-scan)\n  - [Rootfs scan](#rootfs-scan)\n\n## Image Scan\n\n[Language-specific Packages](https://aquasecurity.github.io/trivy/v0.41/docs/scanner/vulnerability/language/)\n\n[Use container image](https://aquasecurity.github.io/trivy/v0.55/getting-started/installation/)\n\n```bash\ndocker run --rm \\\n  -v /var/run/docker.sock:/var/run/docker.sock \\\n  -v /tmp/trivycache:/root/.cache/ \\\n  aquasec/trivy image alpine:latest --timeout 10m\n```\n\n## Filesystem scan\n\nScan the jar files in using gradle.lockfile\n\n```bash\ndocker run --rm \\\n  -v /tmp/trivycache:/root/.cache/ \\\n  -v $(pwd)/gradle.lockfile:/root/gradle.lockfile \\\n  aquasec/trivy fs /root/gradle.lockfile\n```\n\n## Rootfs scan\n\nScan the maven cache for vulnerabilities\n\n```bash\ndocker run --rm \\\n  -v /var/run/docker.sock:/var/run/docker.sock \\\n  -v /tmp/trivycache:/root/.cache/ \\\n  -v $HOME/.m2:/root/.m2/ \\\n  aquasec/trivy rootfs /root/.m2/\n```\n\n```bash\ndocker run --rm \\\n  -v /var/run/docker.sock:/var/run/docker.sock \\\n  -v /tmp/trivycache:/root/.cache/ \\\n  -v $HOME/.m2:/root/.m2/ \\\n  aquasec/trivy rootfs /root/.m2/repository/org/iq80/snappy/snappy/0.4/snappy-0.4.jar\n```\n"
  },
  {
    "path": "home/web_servers/nginx/ReadMe.md",
    "content": "# taskset_nginx_web_servers\n\n> [Auto](https://github.com/codeaprendiz/learn_fullstack/blob/main/home/php/intermediate/taskset_intermediate_php/task_004_createGlobalMarkdownTable/generate-readme.php) generated ReadMe. Number of tasks: 4\n\n| Task     | Description                                                                                                      |\n|----------|------------------------------------------------------------------------------------------------------------------|\n| task_001 | [task_001_running_nginx](taskset_nginx_web_servers/task_001_running_nginx)                                       |\n| task_002 | [task_002_nginx_docker_compose_hello_world](taskset_nginx_web_servers/task_002_nginx_docker_compose_hello_world) |\n| task_003 | [task_003_nginx_conf](taskset_nginx_web_servers/task_003_nginx_conf)                                             |\n| task_004 | [task_004_return_different_http_codes](taskset_nginx_web_servers/task_004_return_different_http_codes)           |\n"
  },
  {
    "path": "home/web_servers/nginx/taskset_nginx_web_servers/task_001_running_nginx/running-nginx.md",
    "content": "### Running nginx using docker and access on port 80 of host\n\n```bash\n$ docker run -it --rm -d -p 8080:80 --name web nginx\n```\n\nAccessing on [http://localhost:8080](http://localhost:8080)\n\n```bash\n$ curl localhost:8080 -I\nHTTP/1.1 200 OK\nServer: nginx/1.25.1\nDate: Mon, 26 Jun 2023 07:08:43 GMT\nContent-Type: text/html\nContent-Length: 615\nLast-Modified: Tue, 13 Jun 2023 15:08:10 GMT\nConnection: keep-alive\nETag: \"6488865a-267\"\nAccept-Ranges: bytes\n\n```"
  },
  {
    "path": "home/web_servers/nginx/taskset_nginx_web_servers/task_002_nginx_docker_compose_hello_world/docker-compose.yaml",
    "content": "version: \"3\"\n\nservices:\n  client:\n    image: nginx\n    ports:\n      - 8000:80\n    volumes:\n      - ./src:/usr/share/nginx/html"
  },
  {
    "path": "home/web_servers/nginx/taskset_nginx_web_servers/task_002_nginx_docker_compose_hello_world/nginx-docker-compose-hello-world.md",
    "content": "### Ngnix docker-compose hello world\n\n\n\n#### Directory structure\n\n```bash\nnginx/task-002-nginx-docker-compose-hello-world\n├── docker-compose.yaml\n├── nginx-docker-compose-hello-world.md\n└── src\n    └── index.html\n```\n\n- docker-compose.yml\n\n```yaml\nversion: \"3\"\n\nservices:\n  client:\n    image: nginx\n    ports:\n      - 8000:80\n    volumes:\n      - ./src:/usr/share/nginx/html\n```\n\n- src/index.html\n\n```html\nhello from src/index.html\n```\n\n- Start the server using\n```bash\n$ docker-compose up\n```\n\n\n- Now hit the localhost using curl\n```bash\n$ curl http://localhost:8000                 \nhello from src/index.html\n```\n\n- You will get the same response from browser as well"
  },
  {
    "path": "home/web_servers/nginx/taskset_nginx_web_servers/task_002_nginx_docker_compose_hello_world/src/index.html",
    "content": "hello from src/index.html\n"
  },
  {
    "path": "home/web_servers/nginx/taskset_nginx_web_servers/task_003_nginx_conf/ReadMe.md",
    "content": "\n[nginx docker container](https://www.digitalocean.com/community/tutorials/how-to-run-nginx-in-a-docker-container-on-ubuntu-14-04)\n\n- Start the container\n\n```bash\ndocker run --rm                            \\\n--name docker-nginx                   \\\n-p 8080:80                              \\\n-d                                    \\\n--volume $PWD/html:/usr/share/nginx/html    \\\n--volume $PWD/conf.d:/etc/nginx/conf.d      \\\nnginx\n```\n\n- Check\n\n```bash\n$ docker ps -a | egrep -v \"k8s\"                                                                                                           \nCONTAINER ID   IMAGE                                  COMMAND                  CREATED         STATUS         PORTS                                   NAMES\n33680e0cb240   nginx                                  \"/docker-entrypoint.…\"   5 seconds ago   Up 3 seconds   0.0.0.0:8080->80/tcp, :::8080->80/tcp   docker-nginx\n```\n\n- Test the endpoint\n\n```bash\n$ curl localhost:8080\n<html>\n<head>\n    <link href=\"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css\" rel=\"stylesheet\" integrity=\"sha256-MfvZlkHCEqatNoGiOXveE8FIwMzZg4W85qfrfIFBfYc= sha512-dTfge/zgoMYpP7QbHy4gWMEGsbsdZeCXz7irItjcC3sPUFtf0kuFbDz/ixG7ArTxmDjLXDmezHubeNikyKGVyQ==\" crossorigin=\"anonymous\">\n    <title>Docker nginx Tutorial</title>\n</head>\n<body>\n<div class=\"container\">\n    <h1>Hello Digital Ocean</h1>\n    <p>This nginx page is brought to you by Docker and Digital Ocean</p>\n</div>\n</body>\n</html>\n```\n\n- Check if your file is mounted\n\n```bash\n$ docker exec -it docker-nginx sh\n# ls /usr/share/nginx/html\nindex.html\n# cat /usr/share/nginx/html/index.html\n<html>\n<head>\n    <link href=\"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css\" rel=\"stylesheet\" integrity=\"sha256-MfvZlkHCEqatNoGiOXveE8FIwMzZg4W85qfrfIFBfYc= sha512-dTfge/zgoMYpP7QbHy4gWMEGsbsdZeCXz7irItjcC3sPUFtf0kuFbDz/ixG7ArTxmDjLXDmezHubeNikyKGVyQ==\" crossorigin=\"anonymous\">\n    <title>Docker nginx Tutorial</title>\n</head>\n<body>\n<div class=\"container\">\n    <h1>Hello Digital Ocean</h1>\n    <p>This nginx page is brought to you by Docker and Digital Ocean</p>\n</div>\n</body>\n</html># \n\n\n# ls /etc/nginx/conf.d\ndefault.conf\n```\n\n- Test wrong endpoint\n\n```bash\n$ curl localhost:8080/give404\n<html>\n<head><title>404 Not Found</title></head>\n<body>\n<center><h1>404 Not Found</h1></center>\n<hr><center>nginx/1.21.0</center>\n</body>\n</html>\n```"
  },
  {
    "path": "home/web_servers/nginx/taskset_nginx_web_servers/task_003_nginx_conf/conf.d/default.conf",
    "content": "server {\n    listen       80;\n    listen  [::]:80;\n    server_name  localhost;\n\n    #access_log  /var/log/nginx/host.access.log  main;\n\n    location / {\n        root   /usr/share/nginx/html;\n        index  index.html index.htm;\n    }\n\n    #error_page  404              /404.html;\n\n    # redirect server error pages to the static page /50x.html\n    #\n    error_page   500 502 503 504  /50x.html;\n    location = /50x.html {\n        root   /usr/share/nginx/html;\n    }\n\n    # proxy the PHP scripts to Apache listening on 127.0.0.1:80\n    #\n    #location ~ \\.php$ {\n    #    proxy_pass   http://127.0.0.1;\n    #}\n\n    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000\n    #\n    #location ~ \\.php$ {\n    #    root           html;\n    #    fastcgi_pass   127.0.0.1:9000;\n    #    fastcgi_index  index.php;\n    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;\n    #    include        fastcgi_params;\n    #}\n\n    # deny access to .htaccess files, if Apache's document root\n    # concurs with nginx's one\n    #\n    #location ~ /\\.ht {\n    #    deny  all;\n    #}\n}\n"
  },
  {
    "path": "home/web_servers/nginx/taskset_nginx_web_servers/task_003_nginx_conf/html/index.html",
    "content": "<html>\n<head>\n    <link href=\"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css\" rel=\"stylesheet\" integrity=\"sha256-MfvZlkHCEqatNoGiOXveE8FIwMzZg4W85qfrfIFBfYc= sha512-dTfge/zgoMYpP7QbHy4gWMEGsbsdZeCXz7irItjcC3sPUFtf0kuFbDz/ixG7ArTxmDjLXDmezHubeNikyKGVyQ==\" crossorigin=\"anonymous\">\n    <title>Docker nginx Tutorial</title>\n</head>\n<body>\n<div class=\"container\">\n    <h1>Hello Digital Ocean</h1>\n    <p>This nginx page is brought to you by Docker and Digital Ocean</p>\n</div>\n</body>\n</html>"
  },
  {
    "path": "home/web_servers/nginx/taskset_nginx_web_servers/task_004_return_different_http_codes/Dockerfile",
    "content": "FROM nginx:alpine\n\nCOPY conf.d /etc/nginx/conf.d\nCOPY html /usr/share/nginx/html\n\n\n"
  },
  {
    "path": "home/web_servers/nginx/taskset_nginx_web_servers/task_004_return_different_http_codes/ReadMe.md",
    "content": "\n[nginx docker container](https://www.digitalocean.com/community/tutorials/how-to-run-nginx-in-a-docker-container-on-ubuntu-14-04)\n\n- Start the container\n\n```bash\n$ docker run --rm --name docker-nginx -p 8080:80 -d --volume $PWD/html:/usr/share/nginx/html --volume $PWD/conf.d:/etc/nginx/conf.d nginx\n```\n\n- Check 200\n\n```bash\n$ curl localhost:8080/check.txt -I\nHTTP/1.1 200 OK\nServer: nginx/1.21.0\nDate: Tue, 24 Aug 2021 19:29:12 GMT\nContent-Type: text/plain\nContent-Length: 13\nConnection: keep-alive\n\n$ curl localhost:8080/check.txt  \nIts working!!\n```\n\n- Check 403\n\n```bash\n$ curl localhost:8080/403      \nForbidden!\n\n$ curl localhost:8080/403 -I\nHTTP/1.1 403 Forbidden\nServer: nginx/1.21.0\nDate: Tue, 24 Aug 2021 19:29:55 GMT\nContent-Type: application/octet-stream\nContent-Length: 10\nConnection: keep-alive                                                                                                                                                                                                           \n```\n\n- Now if you create a docker image\n\n```bash\n$ docker build --file Dockerfile -t codeaprendiz/nginx .                                                                   \n```\n\n- And start the container using the same image\n\n```bash\n$ docker run --rm --name docker-nginx -p 8080:80 -d  codeaprendiz/nginx                                                                  \n$ curl localhost:8080/403 -I\nHTTP/1.1 403 Forbidden\nServer: nginx/1.21.1\nDate: Tue, 24 Aug 2021 19:38:22 GMT\nContent-Type: application/octet-stream\nContent-Length: 10\nConnection: keep-alive\n\n$ curl localhost:8080/403   \nForbidden!\n\n$ curl localhost:8080/500\nApplication Error!\n```\n\n"
  },
  {
    "path": "home/web_servers/nginx/taskset_nginx_web_servers/task_004_return_different_http_codes/conf.d/default.conf",
    "content": "server {\n    listen       80;\n    listen  [::]:80;\n    server_name  localhost;\n\n    #access_log  /var/log/nginx/host.access.log  main;\n\n    root   /usr/share/nginx/html;\n\n    location /403 {\n        return 403 'Forbidden!';\n    }\n\n    location /500 {\n        return 500 'Application Error!';\n    }\n\n    location /502 {\n        return 502 'Bad Gateway!';\n    }\n\n    location /404 {\n        return 404 'Not Found!';\n    }\n\n    location /check.txt {\n        return 200 'Its working!!';\n    }\n\n    location / {\n        index  index.html index.htm;\n    }\n\n\n\n\n\n\n    #error_page  404              /404.html;\n\n    # redirect server error pages to the static page /50x.html\n    #\n\n\n    # proxy the PHP scripts to Apache listening on 127.0.0.1:80\n    #\n    #location ~ \\.php$ {\n    #    proxy_pass   http://127.0.0.1;\n    #}\n\n    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000\n    #\n    #location ~ \\.php$ {\n    #    root           html;\n    #    fastcgi_pass   127.0.0.1:9000;\n    #    fastcgi_index  index.php;\n    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;\n    #    include        fastcgi_params;\n    #}\n\n    # deny access to .htaccess files, if Apache's document root\n    # concurs with nginx's one\n    #\n    #location ~ /\\.ht {\n    #    deny  all;\n    #}\n}\n"
  },
  {
    "path": "home/web_servers/nginx/taskset_nginx_web_servers/task_004_return_different_http_codes/html/index.html",
    "content": "<html>\n<head>\n    <link href=\"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css\" rel=\"stylesheet\" integrity=\"sha256-MfvZlkHCEqatNoGiOXveE8FIwMzZg4W85qfrfIFBfYc= sha512-dTfge/zgoMYpP7QbHy4gWMEGsbsdZeCXz7irItjcC3sPUFtf0kuFbDz/ixG7ArTxmDjLXDmezHubeNikyKGVyQ==\" crossorigin=\"anonymous\">\n    <title>Docker nginx Tutorial</title>\n</head>\n<body>\n<div class=\"container\">\n    <h1>Hello Digital Ocean</h1>\n    <p>This nginx page is brought to you by Docker and Digital Ocean</p>\n</div>\n</body>\n</html>"
  }
]